From 3e15e7b606f431b821dc734a42655475a46b3fd0 Mon Sep 17 00:00:00 2001 From: Jamie-BitFlight Date: Fri, 12 Aug 2022 12:38:28 +0000 Subject: [PATCH] build(release): v --- .cspell.json | 112 - .github/dependabot.yml | 30 - .github/ghadocs/examples/1_dotghdocsjson.md | 21 - .github/workflows/codeql-analysis.yml | 68 - ...pull_request_cleanup_tags_and_releases.yml | 27 - .github/workflows/push_code_linting.yml | 30 - .github/workflows/release_action.yml | 121 - .husky/.gitignore | 1 - .husky/commit-msg | 5 - .husky/pre-commit | 5 - .husky/pre-push | 5 - .lintstagedrc | 5 - .markdownlint.json | 97 - .markdownlintignore | 3 - .trunk/.gitignore | 3 - .trunk/trunk.yaml | 23 - .vscode/launch.json | 28 - .vscode/settings.json | 24 - README.example.md | 14 - __tests__/index.test.ts | 25 - dist/index.cjs | 238210 +++++++++++++++ dist/index.d.ts | 171 + src/Action.ts | 62 - src/config.ts | 34 - src/generate-docs.ts | 18 - src/helpers.ts | 111 - src/index.ts | 5 - src/inputs.ts | 195 - src/logtask/index.ts | 162 - src/markdowner/index.ts | 104 - src/readme-writer.ts | 56 - src/save.ts | 19 - src/sections/index.ts | 40 - src/sections/update-description.ts | 20 - src/sections/update-inputs.ts | 34 - src/sections/update-outputs.ts | 35 - src/sections/update-title.ts | 23 - src/sections/update-usage.ts | 76 - src/testInputs.ts | 9 - src/working-directory.ts | 4 - 40 files changed, 238381 insertions(+), 1654 deletions(-) delete mode 100644 .cspell.json delete mode 100644 .github/dependabot.yml delete mode 100644 .github/ghadocs/examples/1_dotghdocsjson.md delete mode 100644 .github/workflows/codeql-analysis.yml delete mode 100644 .github/workflows/pull_request_cleanup_tags_and_releases.yml delete mode 100644 .github/workflows/push_code_linting.yml delete mode 100644 .github/workflows/release_action.yml delete mode 100644 .husky/.gitignore delete mode 100755 .husky/commit-msg delete mode 100755 .husky/pre-commit delete mode 100755 .husky/pre-push delete mode 100644 .lintstagedrc delete mode 100644 .markdownlint.json delete mode 100644 .markdownlintignore delete mode 100644 .trunk/.gitignore delete mode 100644 .trunk/trunk.yaml delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json delete mode 100644 README.example.md delete mode 100644 __tests__/index.test.ts create mode 100755 dist/index.cjs create mode 100644 dist/index.d.ts delete mode 100644 src/Action.ts delete mode 100644 src/config.ts delete mode 100644 src/generate-docs.ts delete mode 100644 src/helpers.ts delete mode 100644 src/index.ts delete mode 100644 src/inputs.ts delete mode 100644 src/logtask/index.ts delete mode 100644 src/markdowner/index.ts delete mode 100644 src/readme-writer.ts delete mode 100644 src/save.ts delete mode 100644 src/sections/index.ts delete mode 100644 src/sections/update-description.ts delete mode 100644 src/sections/update-inputs.ts delete mode 100644 src/sections/update-outputs.ts delete mode 100644 src/sections/update-title.ts delete mode 100644 src/sections/update-usage.ts delete mode 100644 src/testInputs.ts delete mode 100644 src/working-directory.ts diff --git a/.cspell.json b/.cspell.json deleted file mode 100644 index cb526529..00000000 --- a/.cspell.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "version": "0.2", - "language": "en", - "ignorePaths": [ - "**/coverage/**", - "**/node_modules/**", - "**/dist/**", - "**/fixtures/**", - "**/**/CHANGELOG.md", - "**/**/CONTRIBUTORS.md", - "**/**/ROADMAP.md", - "**/*.{json,snap}", - ".cspell.json", - "yarn.lock", - ".github/workflows/**", - ".vscode/*.json" - ], - "dictionaries": ["typescript", "softwareTerms", "node", "en_US", "npm", "misc", "filetypes"], - "ignoreRegExpList": [ - "/```[\\w\\W]*?```/", - "/~~~[\\w\\W]*?~~~/", - "/``[\\w\\W]*?``/", - "/`[^`]*`/", - "/\\.\\/docs\\/rules\\/[^.]*.md/", - "/@typescript-eslint\\/[a-z-]+/", - "/\\.all-contributorsrc/", - "/TS[^\\s]+/", - "\\(#.+?\\)" - ], - "words": [ - "Airbnb", - "Airbnb's", - "ambiently", - "ASTs", - "autofix", - "autofixers", - "autofixes", - "backticks", - "bigint", - "bivariant", - "blockless", - "btob", - "camelcase", - "codebases", - "Codecov", - "contravariant", - "Crockford", - "declarators", - "destructure", - "destructured", - "errored", - "erroring", - "ESLint", - "ESLint's", - "espree", - "esrecurse", - "estree", - "exnext", - "hardlinks", - "IDE's", - "IIFE", - "IIFEs", - "linebreaks", - "necroing", - "nocheck", - "nullish", - "oclif", - "OOM", - "OOMs", - "parameterised", - "performant", - "pluggable", - "plusplus", - "postprocess", - "postprocessor", - "preact", - "Premade", - "prettier's", - "recurse", - "redeclaration", - "redeclarations", - "redeclared", - "reimplement", - "resync", - "ROADMAP", - "ruleset", - "rulesets", - "serializers", - "superset", - "thenables", - "transpiled", - "transpiles", - "transpiling", - "tsconfigs", - "tsutils", - "typedef", - "typedefs", - "unfixable", - "unprefixed", - "Zacher" - ], - "overrides": [ - { - "filename": "**/*.{ts,js}", - "ignoreRegExpList": ["/@[a-z]+/", "/#(end)?region/"], - "includeRegExpList": [ - "/\\/\\*[\\s\\S]*?\\*\\/|([^\\\\:]|^)\\/\\/.*$/", - "/(\\/\\/[^\\n\\r]*[\\n\\r]+)/" - ] - } - ] -} diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 01c74f65..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: 2 -updates: - # Maintain dependencies for GitHub Actions - - package-ecosystem: 'github-actions' - directory: '/' - schedule: - interval: 'weekly' - assignees: - - jamie-wearsafe - labels: - - 'github-actions' - - 'dependencies' - - package-ecosystem: 'docker' - directory: '/' - schedule: - interval: 'weekly' - assignees: - - jamie-wearsafe - labels: - - 'docker' - - 'dependencies' - - package-ecosystem: 'npm' - directory: '/' - schedule: - interval: 'weekly' - assignees: - - jamie-wearsafe - labels: - - 'npm' - - 'dependencies' diff --git a/.github/ghadocs/examples/1_dotghdocsjson.md b/.github/ghadocs/examples/1_dotghdocsjson.md deleted file mode 100644 index 36209e4a..00000000 --- a/.github/ghadocs/examples/1_dotghdocsjson.md +++ /dev/null @@ -1,21 +0,0 @@ -### Example `.ghadocs.json` with all possible values - -```json -{ - "paths": { - "action": "action.yml", - "readme": "README.md" - }, - "show_logo": true, - "versioning": { - "enabled": true, - "override": "", - "prefix": "v", - "branch": "main" - }, - "owner": "bitflight-devops", - "repo": "github-action-readme-generator", - "title_prefix": "GitHub Action: ", - "pretty": true -} -``` diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 3de56be6..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,68 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: 'CodeQL' - -on: - push: - branches: ['main'] - schedule: - - cron: '33 22 * * 4' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: ['javascript'] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # โ„น๏ธ Command-line programs to run using the OS shell. - # ๐Ÿ“š See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/pull_request_cleanup_tags_and_releases.yml b/.github/workflows/pull_request_cleanup_tags_and_releases.yml deleted file mode 100644 index 98d1ad5e..00000000 --- a/.github/workflows/pull_request_cleanup_tags_and_releases.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: ๐Ÿงผ Pull Request - Cleanup Tags and Releases - -on: - delete: - pull_request: - types: [closed] - workflow_dispatch: - inputs: - regex: - description: 'Regex to search by' - required: false - pr_number: - description: 'PR Number to search by' - required: false - -jobs: - test: - name: Cleanup Tags and Releases - runs-on: ubuntu-latest - steps: - - name: Remove unused releases and tags - uses: Broadshield/github-action-cleanup-releases-and-tags@main - env: - GITHUB_TOKEN: ${{ github.token }} - with: - regex: ${{ github.event.inputs.regex }} - pr_number: ${{ github.event.inputs.pr_number }} diff --git a/.github/workflows/push_code_linting.yml b/.github/workflows/push_code_linting.yml deleted file mode 100644 index 355827b5..00000000 --- a/.github/workflows/push_code_linting.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Code Linting -on: [pull_request] -jobs: - eslint: - name: runner / eslint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: 'yarn' - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn config get cacheFolder)" - - uses: actions/cache@v3 - id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Build - run: | - yarn install - - name: eslint - uses: reviewdog/action-eslint@v1.17.0 - with: - reporter: github-pr-review # Change reporter. - eslint_flags: src --ext .ts diff --git a/.github/workflows/release_action.yml b/.github/workflows/release_action.yml deleted file mode 100644 index 145a44ce..00000000 --- a/.github/workflows/release_action.yml +++ /dev/null @@ -1,121 +0,0 @@ -name: Tag and Release Updated GitHub Action - -on: - push: - branches: - - 'main' - -jobs: - release: - if: (!contains(github.event.head_commit.message, 'build(release)')) - name: Release GitHub Actions - runs-on: ubuntu-latest - permissions: - actions: write - contents: write - env: - NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} - steps: - - uses: actions/checkout@v3 - with: - token: ${{ secrets.RELEASE_TOKEN }} - fetch-depth: '0' - ref: ${{ github.ref }} - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - registry-url: 'https://registry.npmjs.org' - always-auth: true - cache: npm - - run: git config --global init.defaultBranch main - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn config get cacheFolder)" - - uses: actions/cache@v3 - id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Bump version and push tag - id: next_version - uses: mathieudutour/github-tag-action@v6.0 - with: - dry_run: true - github_token: ${{ secrets.GITHUB_TOKEN }} - - name: Build - run: | - yarn install - npm install --no-package-lock --prefer-offline --no-audit --no-progress --no-bin-links --ignore-scripts --ignore-engines --ignore-platform - yarn build - - name: Run tests - run: | - yarn test - yarn "lint:markdown:fix" - yarn "lint:fix" - - name: Configure Git - run: | - git config --global user.email "${{github.event.pusher.email}}" - git config --global user.name "${{github.event.pusher.name}}" - - - name: Bump Package Version - id: bump-yarn - env: - newtag: '${{ steps.next_version.outputs.new_version }}' - run: | - yarntag="$(jq -r '.version' package.json)" - if [[ ${yarntag#v} != "${newtag#v}" ]]; then - yarn version -i "${newtag#v}" || true - yarn generate-docs - yarn "lint:markdown:fix" || true - git add . - git commit -m "build(release): v${newtag#v}" --no-verify - git push origin main - fi - echo ::set-output name=sha::$(git rev-parse HEAD) - - name: Create Release Branch - id: release-branch - env: - newtag: '${{ steps.next_version.outputs.version }}' - run: | - git switch -C gh-action --no-guess ${{ steps.bump-yarn.outputs.sha }} - rm -rf __tests__ src node_modules .github - rm -rf .husky .trunk .vscode .cspell.json - rm -rf ./eslint* ./prettier* ./.lint* ./.markdown* - rm -rf junit.xml README.example.md ./.tsconfig.json - git add . - git add -f dist - git commit -m "build(release): v${newtag#v}" - git push origin gh-action -u --force - echo ::set-output name=sha::$(git rev-parse HEAD) - - name: Bump version and push tag - id: tag_version - uses: mathieudutour/github-tag-action@v6.0 - with: - commit_sha: ${{ steps.release-branch.outputs.sha }} - custom_tag: '${{ steps.next_version.outputs.new_version }}' - github_token: ${{ secrets.RELEASE_TOKEN }} - - name: Create a GitHub release - uses: ncipollo/release-action@v1 - with: - tag: ${{ steps.tag_version.outputs.new_tag }} - name: Release ${{ steps.tag_version.outputs.new_tag }} - body: ${{ steps.tag_version.outputs.changelog }} - artifacts: dist/index.cjs - generateReleaseNotes: true - token: ${{ secrets.RELEASE_TOKEN }} - - name: Publish to NPM - run: | - npm publish --access public --tag ${{ steps.tag_version.outputs.new_tag }} - - name: Update Label Tags - env: - newtag: ${{ steps.tag_version.outputs.new_version }} - run: | - git fetch --tags - stub_major="${newtag%%\.*}" - stub_major_minor="${newtag%\.*}" - git tag -f v${stub_major} - git push -f origin v${stub_major} - git tag v${stub_major_minor} - git push -f origin v${stub_major_minor} diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec1..00000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/.husky/commit-msg b/.husky/commit-msg deleted file mode 100755 index 54f10205..00000000 --- a/.husky/commit-msg +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# shellcheck source=./_/husky.sh -. "$(dirname "$0")/_/husky.sh" - -npx --no-install commitlint --edit "$1" diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index f2b87643..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# shellcheck source=./_/husky.sh -. "$(dirname "$0")/_/husky.sh" - -npm run pre-commit diff --git a/.husky/pre-push b/.husky/pre-push deleted file mode 100755 index 0148fa9e..00000000 --- a/.husky/pre-push +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# shellcheck source=./_/husky.sh -. "$(dirname "$0")/_/husky.sh" - -# npm run pre-push diff --git a/.lintstagedrc b/.lintstagedrc deleted file mode 100644 index e4d508f6..00000000 --- a/.lintstagedrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "*.{ts,js,json,md}": [ - "prettier --write" - ] -} diff --git a/.markdownlint.json b/.markdownlint.json deleted file mode 100644 index 8fd4129c..00000000 --- a/.markdownlint.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "default": false, - - // MD001/heading-increment/header-increment - Heading levels should only increment by one level at a time - "MD001": true, - // MD002/first-heading-h1/first-header-h1 - First heading should be a top level heading - "MD002": false, - // MD003/heading-style/header-style - Heading style - "MD003": false, - // MD004/ul-style - Unordered list style - "MD004": false, - // MD005/list-indent - Inconsistent indentation for list items at the same level - "MD005": false, - // MD006/ul-start-left - Consider starting bulleted lists at the beginning of the line - "MD006": false, - // MD007/ul-indent - Unordered list indentation - "MD007": false, - // MD009/no-trailing-spaces - Trailing spaces - "MD009": false, - // MD010/no-hard-tabs - Hard tabs - "MD010": false, - // MD011/no-reversed-links - Reversed link syntax - "MD011": true, - // MD012/no-multiple-blanks - Multiple consecutive blank lines - "MD012": false, - // MD013/line-length - Line length - "MD013": { "line_length": 99999 }, // no line length - // MD014/commands-show-output - Dollar signs used before commands without showing output - "MD014": false, - // MD018/no-missing-space-atx - No space after hash on atx style heading - "MD018": true, - // MD019/no-multiple-space-atx - Multiple spaces after hash on atx style heading - "MD019": false, - // MD020/no-missing-space-closed-atx - No space inside hashes on closed atx style heading - "MD020": false, - // MD021/no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading - "MD021": false, - // MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines - "MD022": true, - // MD023/heading-start-left/header-start-left - Headings must start at the beginning of the line - "MD023": false, - // MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content - "MD024": false, - // MD025/single-title/single-h1 - Multiple top level headings in the same document - "MD025": true, - // MD026/no-trailing-punctuation - Trailing punctuation in heading - "MD026": { "punctuation": ".,;:!ใ€‚๏ผŒ๏ผ›๏ผš๏ผ๏ผŸ" }, // specifically allow "?" - // MD027/no-multiple-space-blockquote - Multiple spaces after blockquote symbol - "MD027": false, - // MD028/no-blanks-blockquote - Blank line inside blockquote - "MD028": true, - // MD029/ol-prefix - Ordered list item prefix - "MD029": false, - // MD030/list-marker-space - Spaces after list markers - "MD030": true, - // MD031/blanks-around-fences - Fenced code blocks should be surrounded by blank lines - "MD031": false, - // MD032/blanks-around-lists - Lists should be surrounded by blank lines - "MD032": false, - // MD033/no-inline-html - Inline HTML - "MD033": { - "allowed_elements": ["a", "img", "br", "sup", "h1", "p", "details", "summary", "code"] - }, - // MD034/no-bare-urls - Bare URL used - "MD034": false, - // MD035/hr-style - Horizontal rule style - "MD035": false, - // MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading - "MD036": true, - // MD037/no-space-in-emphasis - Spaces inside emphasis markers - "MD037": true, - // MD038/no-space-in-code - Spaces inside code span elements - "MD038": true, - // MD039/no-space-in-links - Spaces inside link text - "MD039": true, - // MD040/fenced-code-language - Fenced code blocks should have a language specified - "MD040": true, - // MD041/first-line-heading/first-line-h1 - First line in file should be a top level heading - "MD041": false, // would love to do this, but our README files use `

` as their heading - // MD042/no-empty-links - No empty links - "MD042": true, - // MD043/required-headings/required-headers - Required heading structure - "MD043": false, - // MD044/proper-names - Proper names should have the correct capitalization - "MD044": { - "names": ["JavaScript", "TypeScript", "TSLint", "ESLint"], - "code_blocks": false - }, - // MD045/no-alt-text - Images should have alternate text (alt text) - "MD045": true, - // MD046/code-block-style - Code block style - "MD046": { "style": "fenced" }, - // MD047/single-trailing-newline - Files should end with a single newline character - "MD047": false, - // MD048/code-fence-style - Code fence style - "MD048": { "style": "backtick" } -} diff --git a/.markdownlintignore b/.markdownlintignore deleted file mode 100644 index a5442e43..00000000 --- a/.markdownlintignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -CHANGELOG.md -tests/integration/fixtures/markdown diff --git a/.trunk/.gitignore b/.trunk/.gitignore deleted file mode 100644 index 507283d6..00000000 --- a/.trunk/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*out -*logs -external diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml deleted file mode 100644 index e8be75d3..00000000 --- a/.trunk/trunk.yaml +++ /dev/null @@ -1,23 +0,0 @@ -version: 0.1 -cli: - version: 0.16.0-beta -lint: - enabled: - - actionlint@1.6.15 - - eslint@8.21.0 - - git-diff-check@SYSTEM - - gitleaks@8.9.0 - - markdownlint@0.31.1 - - prettier@2.6.2 - - shellcheck@0.8.0 - - shfmt@3.5.0 - ignore: - - linters: [ALL] - paths: - - .yarnrc.yml - - .yarn/** - - .husky/** - - lib/** - - '**/node_modules/**' - - output/** - - '*.lock' diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 9844724f..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Launch Program", - "env": { "TS_NODE_PROJECT": "${workspaceFolder}/tsconfig.json" }, - "runtimeArgs": [ - "-r", - "ts-node/register" - ], - "args": [ - "${workspaceFolder}/src/index.ts" - ], - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/bin/run.js", - "outFiles": [ - "${workspaceFolder}/**/*.js" - ] - } - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d245f1c5..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,24 +0,0 @@ - { - "git.ignoreLimitWarning": true, - "eslint.validate": [ - "javascript", - "typescript", - "javascriptreact", - "typescriptreact", - "html" - ], - "eslint.options": { - "extensions": [ - ".js", - ".ts", - "html" - ] - }, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true, - }, - "github.copilot.advanced": { - - }, - "eslint.debug": true, - } diff --git a/README.example.md b/README.example.md deleted file mode 100644 index f989b5df..00000000 --- a/README.example.md +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/__tests__/index.test.ts b/__tests__/index.test.ts deleted file mode 100644 index 20764a3b..00000000 --- a/__tests__/index.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -describe('test required environment variables', () => { - beforeAll(() => { - // GitHub workspace - // GitHub workspace - // GitHub workspace - // GitHub workspace - process.env['GHADOCS_OWNER'] = 'bitflight-devops'; - process.env['GHADOCS_REPOSITORY'] = 'github-action-readme-generator'; - }); - beforeEach(() => { - // Reset inputs - }); - afterAll(() => { - // Restore GitHub workspace - delete process.env['GHADOCS_REPOSITORY']; - delete process.env['GHADOCS_OWNER']; - // Restore - jest.restoreAllMocks(); - }); - - it('Check Env Vars', () => { - expect(process.env['GHADOCS_OWNER']).toEqual('bitflight-devops'); - expect(process.env['GHADOCS_REPOSITORY']).toEqual('github-action-readme-generator'); - }); -}); diff --git a/dist/index.cjs b/dist/index.cjs new file mode 100755 index 00000000..102e976d --- /dev/null +++ b/dist/index.cjs @@ -0,0 +1,238210 @@ +#!/usr/bin/env node +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + +// node_modules/async/dist/async.js +var require_async = __commonJS({ + "node_modules/async/dist/async.js"(exports, module2) { + (function(global2, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : factory(global2.async = {}); + })(exports, function(exports2) { + "use strict"; + function apply(fn, ...args) { + return (...callArgs) => fn(...args, ...callArgs); + } + function initialParams(fn) { + return function(...args) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; + } + var hasQueueMicrotask = typeof queueMicrotask === "function" && queueMicrotask; + var hasSetImmediate = typeof setImmediate === "function" && setImmediate; + var hasNextTick = typeof process === "object" && typeof process.nextTick === "function"; + function fallback(fn) { + setTimeout(fn, 0); + } + function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); + } + var _defer; + if (hasQueueMicrotask) { + _defer = queueMicrotask; + } else if (hasSetImmediate) { + _defer = setImmediate; + } else if (hasNextTick) { + _defer = process.nextTick; + } else { + _defer = fallback; + } + var setImmediate$1 = wrap(_defer); + function asyncify(func) { + if (isAsync(func)) { + return function(...args) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback); + }; + } + return initialParams(function(args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + if (result && typeof result.then === "function") { + return handlePromise(result, callback); + } else { + callback(null, result); + } + }); + } + function handlePromise(promise, callback) { + return promise.then((value) => { + invokeCallback(callback, null, value); + }, (err) => { + invokeCallback(callback, err && err.message ? err : new Error(err)); + }); + } + function invokeCallback(callback, error2, value) { + try { + callback(error2, value); + } catch (err) { + setImmediate$1((e) => { + throw e; + }, err); + } + } + function isAsync(fn) { + return fn[Symbol.toStringTag] === "AsyncFunction"; + } + function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === "AsyncGenerator"; + } + function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === "function"; + } + function wrapAsync(asyncFn) { + if (typeof asyncFn !== "function") + throw new Error("expected a function"); + return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; + } + function awaitify(asyncFn, arity = asyncFn.length) { + if (!arity) + throw new Error("arity is undefined"); + function awaitable(...args) { + if (typeof args[arity - 1] === "function") { + return asyncFn.apply(this, args); + } + return new Promise((resolve, reject2) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) + return reject2(err); + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }); + } + return awaitable; + } + function applyEach(eachfn) { + return function applyEach2(fns, ...callArgs) { + const go = awaitify(function(callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + wrapAsync(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; + } + function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = wrapAsync(iteratee); + return eachfn(arr, (value, _, iterCb) => { + var index2 = counter++; + _iteratee(value, (err, v) => { + results[index2] = v; + iterCb(err); + }); + }, (err) => { + callback(err, results); + }); + } + function isArrayLike(value) { + return value && typeof value.length === "number" && value.length >= 0 && value.length % 1 === 0; + } + const breakLoop = {}; + function once(fn) { + function wrapper(...args) { + if (fn === null) + return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper; + } + function getIterator(coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); + } + function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? { value: coll[i], key: i } : null; + }; + } + function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) + return null; + i++; + return { value: item.value, key: i }; + }; + } + function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === "__proto__") { + return next(); + } + return i < len ? { value: obj[key], key } : null; + }; + } + function createIterator(coll) { + if (isArrayLike(coll)) { + return createArrayIterator(coll); + } + var iterator = getIterator(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); + } + function onlyOnce(fn) { + return function(...args) { + if (fn === null) + throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; + } + function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + function replenish() { + if (running >= limit || awaiting || done) + return; + awaiting = true; + generator.next().then(({ value, done: iterDone }) => { + if (canceled || done) + return; + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + function iterateeCallback(err, result) { + running -= 1; + if (canceled) + return; + if (err) + return handleError(err); + if (err === false) { + done = true; + canceled = true; + return; + } + if (result === breakLoop || done && running <= 0) { + done = true; + return callback(null); + } + replenish(); + } + function handleError(err) { + if (canceled) + return; + awaiting = false; + done = true; + callback(err); + } + replenish(); + } + var eachOfLimit = (limit) => { + return (obj, iteratee, callback) => { + callback = once(callback); + if (limit <= 0) { + throw new RangeError("concurrency limit cannot be less than 1"); + } + if (!obj) { + return callback(null); + } + if (isAsyncGenerator(obj)) { + return asyncEachOfLimit(obj, limit, iteratee, callback); + } + if (isAsyncIterable(obj)) { + return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback); + } + var nextElem = createIterator(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + function iterateeCallback(err, value) { + if (canceled) + return; + running -= 1; + if (err) { + done = true; + callback(err); + } else if (err === false) { + done = true; + canceled = true; + } else if (value === breakLoop || done && running <= 0) { + done = true; + return callback(null); + } else if (!looping) { + replenish(); + } + } + function replenish() { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); + } + looping = false; + } + replenish(); + }; + }; + function eachOfLimit$1(coll, limit, iteratee, callback) { + return eachOfLimit(limit)(coll, wrapAsync(iteratee), callback); + } + var eachOfLimit$2 = awaitify(eachOfLimit$1, 4); + function eachOfArrayLike(coll, iteratee, callback) { + callback = once(callback); + var index2 = 0, completed = 0, { length } = coll, canceled = false; + if (length === 0) { + callback(null); + } + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) + return; + if (err) { + callback(err); + } else if (++completed === length || value === breakLoop) { + callback(null); + } + } + for (; index2 < length; index2++) { + iteratee(coll[index2], index2, onlyOnce(iteratorCallback)); + } + } + function eachOfGeneric(coll, iteratee, callback) { + return eachOfLimit$2(coll, Infinity, iteratee, callback); + } + function eachOf(coll, iteratee, callback) { + var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, wrapAsync(iteratee), callback); + } + var eachOf$1 = awaitify(eachOf, 3); + function map2(coll, iteratee, callback) { + return _asyncMap(eachOf$1, coll, iteratee, callback); + } + var map$1 = awaitify(map2, 3); + var applyEach$1 = applyEach(map$1); + function eachOfSeries(coll, iteratee, callback) { + return eachOfLimit$2(coll, 1, iteratee, callback); + } + var eachOfSeries$1 = awaitify(eachOfSeries, 3); + function mapSeries(coll, iteratee, callback) { + return _asyncMap(eachOfSeries$1, coll, iteratee, callback); + } + var mapSeries$1 = awaitify(mapSeries, 3); + var applyEachSeries = applyEach(mapSeries$1); + const PROMISE_SYMBOL = Symbol("promiseCallback"); + function promiseCallback() { + let resolve, reject2; + function callback(err, ...args) { + if (err) + return reject2(err); + resolve(args.length > 1 ? args : args[0]); + } + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, reject2 = rej; + }); + return callback; + } + function auto(tasks, concurrency, callback) { + if (typeof concurrency !== "number") { + callback = concurrency; + concurrency = null; + } + callback = once(callback || promiseCallback()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + var listeners = /* @__PURE__ */ Object.create(null); + var readyTasks = []; + var readyToCheck = []; + var uncheckedDependencies = {}; + Object.keys(tasks).forEach((key) => { + var task = tasks[key]; + if (!Array.isArray(task)) { + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + dependencies.forEach((dependencyName) => { + if (!tasks[dependencyName]) { + throw new Error("async.auto task `" + key + "` has a non-existent dependency `" + dependencyName + "` in " + dependencies.join(", ")); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + checkForDeadlocks(); + processQueue(); + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + function processQueue() { + if (canceled) + return; + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while (readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + } + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + taskListeners.push(fn); + } + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach((fn) => fn()); + processQueue(); + } + function runTask(key, task) { + if (hasError) + return; + var taskCallback = onlyOnce((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return; + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach((rkey) => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = /* @__PURE__ */ Object.create(null); + if (canceled) + return; + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + runningTasks++; + var taskFn = wrapAsync(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + function checkForDeadlocks() { + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach((dependent) => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + if (counter !== numTasks) { + throw new Error( + "async.auto cannot execute tasks due to a recursive dependency" + ); + } + } + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach((key) => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + return callback[PROMISE_SYMBOL]; + } + var FN_ARGS = /^(?:async\s+)?(?:function)?\s*\w*\s*\(\s*([^)]+)\s*\)(?:\s*{)/; + var ARROW_FN_ARGS = /^(?:async\s+)?\(?\s*([^)=]+)\s*\)?(?:\s*=>)/; + var FN_ARG_SPLIT = /,/; + var FN_ARG = /(=.+)?(\s*)$/; + function stripComments(string) { + let stripped = ""; + let index2 = 0; + let endBlockComment = string.indexOf("*/"); + while (index2 < string.length) { + if (string[index2] === "/" && string[index2 + 1] === "/") { + let endIndex = string.indexOf("\n", index2); + index2 = endIndex === -1 ? string.length : endIndex; + } else if (endBlockComment !== -1 && string[index2] === "/" && string[index2 + 1] === "*") { + let endIndex = string.indexOf("*/", index2); + if (endIndex !== -1) { + index2 = endIndex + 2; + endBlockComment = string.indexOf("*/", index2); + } else { + stripped += string[index2]; + index2++; + } + } else { + stripped += string[index2]; + index2++; + } + } + return stripped; + } + function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) + throw new Error("could not parse args in autoInject\nSource:\n" + src); + let [, args] = match; + return args.replace(/\s/g, "").split(FN_ARG_SPLIT).map((arg) => arg.replace(FN_ARG, "").trim()); + } + function autoInject(tasks, callback) { + var newTasks = {}; + Object.keys(tasks).forEach((key) => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = isAsync(taskFn); + var hasNoDeps = !fnIsAsync && taskFn.length === 1 || fnIsAsync && taskFn.length === 0; + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if (taskFn.length === 0 && !fnIsAsync && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + if (!fnIsAsync) + params.pop(); + newTasks[key] = params.concat(newTask); + } + function newTask(results, taskCb) { + var newArgs = params.map((name) => results[name]); + newArgs.push(taskCb); + wrapAsync(taskFn)(...newArgs); + } + }); + return auto(newTasks, callback); + } + class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + removeLink(node) { + if (node.prev) + node.prev.next = node.next; + else + this.head = node.next; + if (node.next) + node.next.prev = node.prev; + else + this.tail = node.prev; + node.prev = node.next = null; + this.length -= 1; + return node; + } + empty() { + while (this.head) + this.shift(); + return this; + } + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) + node.next.prev = newNode; + else + this.tail = newNode; + node.next = newNode; + this.length += 1; + } + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) + node.prev.next = newNode; + else + this.head = newNode; + node.prev = newNode; + this.length += 1; + } + unshift(node) { + if (this.head) + this.insertBefore(this.head, node); + else + setInitial(this, node); + } + push(node) { + if (this.tail) + this.insertAfter(this.tail, node); + else + setInitial(this, node); + } + shift() { + return this.head && this.removeLink(this.head); + } + pop() { + return this.tail && this.removeLink(this.tail); + } + toArray() { + return [...this]; + } + *[Symbol.iterator]() { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + remove(testFn) { + var curr = this.head; + while (curr) { + var { next } = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } + } + function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; + } + function queue(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } else if (concurrency === 0) { + throw new RangeError("Concurrency must not be zero"); + } + var _worker = wrapAsync(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + function on(event, handler) { + events[event].push(handler); + } + function once2(event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + function off(event, handler) { + if (!event) + return Object.keys(events).forEach((ev) => events[ev] = []); + if (!handler) + return events[event] = []; + events[event] = events[event].filter((ev) => ev !== handler); + } + function trigger(event, ...args) { + events[event].forEach((handler) => handler(...args)); + } + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== "function") { + throw new Error("task callback must be a function"); + } + q.started = true; + var res, rej; + function promiseCallback2(err, ...args) { + if (err) + return rejectOnError ? rej(err) : res(); + if (args.length <= 1) + return res(args[0]); + res(args); + } + var item = q._createTaskItem( + data, + rejectOnError ? promiseCallback2 : callback || promiseCallback2 + ); + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + if (!processingScheduled) { + processingScheduled = true; + setImmediate$1(() => { + processingScheduled = false; + q.process(); + }); + } + if (rejectOnError || !callback) { + return new Promise((resolve, reject2) => { + res = resolve; + rej = reject2; + }); + } + } + function _createCB(tasks) { + return function(err, ...args) { + numRunning -= 1; + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + var index2 = workersList.indexOf(task); + if (index2 === 0) { + workersList.shift(); + } else if (index2 > 0) { + workersList.splice(index2, 1); + } + task.callback(err, ...args); + if (err != null) { + trigger("error", err, task.data); + } + } + if (numRunning <= q.concurrency - q.buffer) { + trigger("unsaturated"); + } + if (q.idle()) { + trigger("drain"); + } + q.process(); + }; + } + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + setImmediate$1(() => trigger("drain")); + return true; + } + return false; + } + const eventMethod = (name) => (handler) => { + if (!handler) { + return new Promise((resolve, reject2) => { + once2(name, (err, data) => { + if (err) + return reject2(err); + resolve(data); + }); + }); + } + off(name); + on(name, handler); + }; + var isProcessing = false; + var q = { + _tasks: new DLL(), + _createTaskItem(data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator]() { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) + return; + return data.map((datum) => _insert(datum, false, false, callback)); + } + return _insert(data, false, false, callback); + }, + pushAsync(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) + return; + return data.map((datum) => _insert(datum, false, true, callback)); + } + return _insert(data, false, true, callback); + }, + kill() { + off(); + q._tasks.empty(); + }, + unshift(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) + return; + return data.map((datum) => _insert(datum, true, false, callback)); + } + return _insert(data, true, false, callback); + }, + unshiftAsync(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) + return; + return data.map((datum) => _insert(datum, true, true, callback)); + } + return _insert(data, true, true, callback); + }, + remove(testFn) { + q._tasks.remove(testFn); + }, + process() { + if (isProcessing) { + return; + } + isProcessing = true; + while (!q.paused && numRunning < q.concurrency && q._tasks.length) { + var tasks = [], data = []; + var l = q._tasks.length; + if (q.payload) + l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + numRunning += 1; + if (q._tasks.length === 0) { + trigger("empty"); + } + if (numRunning === q.concurrency) { + trigger("saturated"); + } + var cb = onlyOnce(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length() { + return q._tasks.length; + }, + running() { + return numRunning; + }, + workersList() { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause() { + q.paused = true; + }, + resume() { + if (q.paused === false) { + return; + } + q.paused = false; + setImmediate$1(q.process); + } + }; + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod("saturated") + }, + unsaturated: { + writable: false, + value: eventMethod("unsaturated") + }, + empty: { + writable: false, + value: eventMethod("empty") + }, + drain: { + writable: false, + value: eventMethod("drain") + }, + error: { + writable: false, + value: eventMethod("error") + } + }); + return q; + } + function cargo(worker, payload) { + return queue(worker, 1, payload); + } + function cargo$1(worker, concurrency, payload) { + return queue(worker, concurrency, payload); + } + function reduce(coll, memo, iteratee, callback) { + callback = once(callback); + var _iteratee = wrapAsync(iteratee); + return eachOfSeries$1(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, (err) => callback(err, memo)); + } + var reduce$1 = awaitify(reduce, 4); + function seq2(...functions) { + var _functions = functions.map(wrapAsync); + return function(...args) { + var that = this; + var cb = args[args.length - 1]; + if (typeof cb == "function") { + args.pop(); + } else { + cb = promiseCallback(); + } + reduce$1( + _functions, + args, + (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, + (err, results) => cb(err, ...results) + ); + return cb[PROMISE_SYMBOL]; + }; + } + function compose(...args) { + return seq2(...args.reverse()); + } + function mapLimit(coll, limit, iteratee, callback) { + return _asyncMap(eachOfLimit(limit), coll, iteratee, callback); + } + var mapLimit$1 = awaitify(mapLimit, 4); + function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) + return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + return callback(err, result); + }); + } + var concatLimit$1 = awaitify(concatLimit, 4); + function concat(coll, iteratee, callback) { + return concatLimit$1(coll, Infinity, iteratee, callback); + } + var concat$1 = awaitify(concat, 3); + function concatSeries(coll, iteratee, callback) { + return concatLimit$1(coll, 1, iteratee, callback); + } + var concatSeries$1 = awaitify(concatSeries, 3); + function constant(...args) { + return function(...ignoredArgs) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; + } + function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = wrapAsync(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) + return callback(err); + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, breakLoop); + } + callback(); + }); + }, (err) => { + if (err) + return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; + } + function detect(coll, iteratee, callback) { + return _createTester((bool2) => bool2, (res, item) => item)(eachOf$1, coll, iteratee, callback); + } + var detect$1 = awaitify(detect, 3); + function detectLimit(coll, limit, iteratee, callback) { + return _createTester((bool2) => bool2, (res, item) => item)(eachOfLimit(limit), coll, iteratee, callback); + } + var detectLimit$1 = awaitify(detectLimit, 4); + function detectSeries(coll, iteratee, callback) { + return _createTester((bool2) => bool2, (res, item) => item)(eachOfLimit(1), coll, iteratee, callback); + } + var detectSeries$1 = awaitify(detectSeries, 3); + function consoleFunc(name) { + return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => { + if (typeof console === "object") { + if (err) { + if (console.error) { + console.error(err); + } + } else if (console[name]) { + resultArgs.forEach((x) => console[name](x)); + } + } + }); + } + var dir = consoleFunc("dir"); + function doWhilst(iteratee, test, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results; + function next(err, ...args) { + if (err) + return callback(err); + if (err === false) + return; + results = args; + _test(...args, check); + } + function check(err, truth) { + if (err) + return callback(err); + if (err === false) + return; + if (!truth) + return callback(null, ...results); + _fn(next); + } + return check(null, true); + } + var doWhilst$1 = awaitify(doWhilst, 3); + function doUntil(iteratee, test, callback) { + const _test = wrapAsync(test); + return doWhilst$1(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb(err, !truth)); + }, callback); + } + function _withoutIndex(iteratee) { + return (value, index2, callback) => iteratee(value, callback); + } + function eachLimit(coll, iteratee, callback) { + return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback); + } + var each = awaitify(eachLimit, 3); + function eachLimit$1(coll, limit, iteratee, callback) { + return eachOfLimit(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); + } + var eachLimit$2 = awaitify(eachLimit$1, 4); + function eachSeries(coll, iteratee, callback) { + return eachLimit$2(coll, 1, iteratee, callback); + } + var eachSeries$1 = awaitify(eachSeries, 3); + function ensureAsync(fn) { + if (isAsync(fn)) + return fn; + return function(...args) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + setImmediate$1(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; + } + function every(coll, iteratee, callback) { + return _createTester((bool2) => !bool2, (res) => !res)(eachOf$1, coll, iteratee, callback); + } + var every$1 = awaitify(every, 3); + function everyLimit(coll, limit, iteratee, callback) { + return _createTester((bool2) => !bool2, (res) => !res)(eachOfLimit(limit), coll, iteratee, callback); + } + var everyLimit$1 = awaitify(everyLimit, 4); + function everySeries(coll, iteratee, callback) { + return _createTester((bool2) => !bool2, (res) => !res)(eachOfSeries$1, coll, iteratee, callback); + } + var everySeries$1 = awaitify(everySeries, 3); + function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index2, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index2] = !!v; + iterCb(err); + }); + }, (err) => { + if (err) + return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) + results.push(arr[i]); + } + callback(null, results); + }); + } + function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index2, iterCb) => { + iteratee(x, (err, v) => { + if (err) + return iterCb(err); + if (v) { + results.push({ index: index2, value: x }); + } + iterCb(err); + }); + }, (err) => { + if (err) + return callback(err); + callback(null, results.sort((a, b) => a.index - b.index).map((v) => v.value)); + }); + } + function _filter(eachfn, coll, iteratee, callback) { + var filter2 = isArrayLike(coll) ? filterArray : filterGeneric; + return filter2(eachfn, coll, wrapAsync(iteratee), callback); + } + function filter(coll, iteratee, callback) { + return _filter(eachOf$1, coll, iteratee, callback); + } + var filter$1 = awaitify(filter, 3); + function filterLimit(coll, limit, iteratee, callback) { + return _filter(eachOfLimit(limit), coll, iteratee, callback); + } + var filterLimit$1 = awaitify(filterLimit, 4); + function filterSeries(coll, iteratee, callback) { + return _filter(eachOfSeries$1, coll, iteratee, callback); + } + var filterSeries$1 = awaitify(filterSeries, 3); + function forever(fn, errback) { + var done = onlyOnce(errback); + var task = wrapAsync(ensureAsync(fn)); + function next(err) { + if (err) + return done(err); + if (err === false) + return; + task(next); + } + return next(); + } + var forever$1 = awaitify(forever, 2); + function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) + return iterCb(err); + return iterCb(err, { key, val }); + }); + }, (err, mapResults) => { + var result = {}; + var { hasOwnProperty } = Object.prototype; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var { key } = mapResults[i]; + var { val } = mapResults[i]; + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + return callback(err, result); + }); + } + var groupByLimit$1 = awaitify(groupByLimit, 4); + function groupBy(coll, iteratee, callback) { + return groupByLimit$1(coll, Infinity, iteratee, callback); + } + function groupBySeries(coll, iteratee, callback) { + return groupByLimit$1(coll, 1, iteratee, callback); + } + var log2 = consoleFunc("log"); + function mapValuesLimit(obj, limit, iteratee, callback) { + callback = once(callback); + var newObj = {}; + var _iteratee = wrapAsync(iteratee); + return eachOfLimit(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) + return next(err); + newObj[key] = result; + next(err); + }); + }, (err) => callback(err, newObj)); + } + var mapValuesLimit$1 = awaitify(mapValuesLimit, 4); + function mapValues(obj, iteratee, callback) { + return mapValuesLimit$1(obj, Infinity, iteratee, callback); + } + function mapValuesSeries(obj, iteratee, callback) { + return mapValuesLimit$1(obj, 1, iteratee, callback); + } + function memoize(fn, hasher = (v) => v) { + var memo = /* @__PURE__ */ Object.create(null); + var queues = /* @__PURE__ */ Object.create(null); + var _fn = wrapAsync(fn); + var memoized = initialParams((args, callback) => { + var key = hasher(...args); + if (key in memo) { + setImmediate$1(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; + } + var _defer$1; + if (hasNextTick) { + _defer$1 = process.nextTick; + } else if (hasSetImmediate) { + _defer$1 = setImmediate; + } else { + _defer$1 = fallback; + } + var nextTick = wrap(_defer$1); + var parallel = awaitify((eachfn, tasks, callback) => { + var results = isArrayLike(tasks) ? [] : {}; + eachfn(tasks, (task, key, taskCb) => { + wrapAsync(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, (err) => callback(err, results)); + }, 3); + function parallel$1(tasks, callback) { + return parallel(eachOf$1, tasks, callback); + } + function parallelLimit(tasks, limit, callback) { + return parallel(eachOfLimit(limit), tasks, callback); + } + function queue$1(worker, concurrency) { + var _worker = wrapAsync(worker); + return queue((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); + } + class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + get length() { + return this.heap.length; + } + empty() { + this.heap = []; + return this; + } + percUp(index2) { + let p; + while (index2 > 0 && smaller(this.heap[index2], this.heap[p = parent(index2)])) { + let t = this.heap[index2]; + this.heap[index2] = this.heap[p]; + this.heap[p] = t; + index2 = p; + } + } + percDown(index2) { + let l; + while ((l = leftChi(index2)) < this.heap.length) { + if (l + 1 < this.heap.length && smaller(this.heap[l + 1], this.heap[l])) { + l = l + 1; + } + if (smaller(this.heap[index2], this.heap[l])) { + break; + } + let t = this.heap[index2]; + this.heap[index2] = this.heap[l]; + this.heap[l] = t; + index2 = l; + } + } + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length - 1); + } + unshift(node) { + return this.heap.push(node); + } + shift() { + let [top] = this.heap; + this.heap[0] = this.heap[this.heap.length - 1]; + this.heap.pop(); + this.percDown(0); + return top; + } + toArray() { + return [...this]; + } + *[Symbol.iterator]() { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + remove(testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + this.heap.splice(j); + for (let i = parent(this.heap.length - 1); i >= 0; i--) { + this.percDown(i); + } + return this; + } + } + function leftChi(i) { + return (i << 1) + 1; + } + function parent(i) { + return (i + 1 >> 1) - 1; + } + function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } else { + return x.pushCount < y.pushCount; + } + } + function priorityQueue(worker, concurrency) { + var q = queue$1(worker, concurrency); + var { + push, + pushAsync + } = q; + q._tasks = new Heap(); + q._createTaskItem = ({ data, priority }, callback) => { + return { + data, + priority, + callback + }; + }; + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return { data: tasks, priority }; + } + return tasks.map((data) => { + return { data, priority }; + }); + } + q.push = function(data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + q.pushAsync = function(data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + delete q.unshift; + delete q.unshiftAsync; + return q; + } + function race(tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) + return callback(new TypeError("First argument to race must be an array of functions")); + if (!tasks.length) + return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + wrapAsync(tasks[i])(callback); + } + } + var race$1 = awaitify(race, 2); + function reduceRight(array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return reduce$1(reversed, memo, iteratee, callback); + } + function reflect(fn) { + var _fn = wrapAsync(fn); + return initialParams(function reflectOn(args, reflectCallback) { + args.push((error2, ...cbArgs) => { + let retVal = {}; + if (error2) { + retVal.error = error2; + } + if (cbArgs.length > 0) { + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + return _fn.apply(this, args); + }); + } + function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(reflect); + } else { + results = {}; + Object.keys(tasks).forEach((key) => { + results[key] = reflect.call(this, tasks[key]); + }); + } + return results; + } + function reject(eachfn, arr, _iteratee, callback) { + const iteratee = wrapAsync(_iteratee); + return _filter(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); + } + function reject$1(coll, iteratee, callback) { + return reject(eachOf$1, coll, iteratee, callback); + } + var reject$2 = awaitify(reject$1, 3); + function rejectLimit(coll, limit, iteratee, callback) { + return reject(eachOfLimit(limit), coll, iteratee, callback); + } + var rejectLimit$1 = awaitify(rejectLimit, 4); + function rejectSeries(coll, iteratee, callback) { + return reject(eachOfSeries$1, coll, iteratee, callback); + } + var rejectSeries$1 = awaitify(rejectSeries, 3); + function constant$1(value) { + return function() { + return value; + }; + } + const DEFAULT_TIMES = 5; + const DEFAULT_INTERVAL = 0; + function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant$1(DEFAULT_INTERVAL) + }; + if (arguments.length < 3 && typeof opts === "function") { + callback = task || promiseCallback(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || promiseCallback(); + } + if (typeof task !== "function") { + throw new Error("Invalid arguments for async.retry"); + } + var _task = wrapAsync(task); + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) + return; + if (err && attempt++ < options.times && (typeof options.errorFilter != "function" || options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + retryAttempt(); + return callback[PROMISE_SYMBOL]; + } + function parseTimes(acc, t) { + if (typeof t === "object") { + acc.times = +t.times || DEFAULT_TIMES; + acc.intervalFunc = typeof t.interval === "function" ? t.interval : constant$1(+t.interval || DEFAULT_INTERVAL); + acc.errorFilter = t.errorFilter; + } else if (typeof t === "number" || typeof t === "string") { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } + } + function retryable(opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = opts && opts.arity || task.length; + if (isAsync(task)) { + arity += 1; + } + var _task = wrapAsync(task); + return initialParams((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = promiseCallback(); + } + function taskFn(cb) { + _task(...args, cb); + } + if (opts) + retry(opts, taskFn, callback); + else + retry(taskFn, callback); + return callback[PROMISE_SYMBOL]; + }); + } + function series(tasks, callback) { + return parallel(eachOfSeries$1, tasks, callback); + } + function some(coll, iteratee, callback) { + return _createTester(Boolean, (res) => res)(eachOf$1, coll, iteratee, callback); + } + var some$1 = awaitify(some, 3); + function someLimit(coll, limit, iteratee, callback) { + return _createTester(Boolean, (res) => res)(eachOfLimit(limit), coll, iteratee, callback); + } + var someLimit$1 = awaitify(someLimit, 4); + function someSeries(coll, iteratee, callback) { + return _createTester(Boolean, (res) => res)(eachOfSeries$1, coll, iteratee, callback); + } + var someSeries$1 = awaitify(someSeries, 3); + function sortBy(coll, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return map$1(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) + return iterCb(err); + iterCb(err, { value: x, criteria }); + }); + }, (err, results) => { + if (err) + return callback(err); + callback(null, results.sort(comparator).map((v) => v.value)); + }); + function comparator(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } + } + var sortBy$1 = awaitify(sortBy, 3); + function timeout(asyncFn, milliseconds, info2) { + var fn = wrapAsync(asyncFn); + return initialParams((args, callback) => { + var timedOut = false; + var timer; + function timeoutCallback() { + var name = asyncFn.name || "anonymous"; + var error2 = new Error('Callback function "' + name + '" timed out.'); + error2.code = "ETIMEDOUT"; + if (info2) { + error2.info = info2; + } + timedOut = true; + callback(error2); + } + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); + } + function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; + } + function timesLimit(count, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(range(count), limit, _iteratee, callback); + } + function times(n, iteratee, callback) { + return timesLimit(n, Infinity, iteratee, callback); + } + function timesSeries(n, iteratee, callback) { + return timesLimit(n, 1, iteratee, callback); + } + function transform(coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === "function") { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = once(callback || promiseCallback()); + var _iteratee = wrapAsync(iteratee); + eachOf$1(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, (err) => callback(err, accumulator)); + return callback[PROMISE_SYMBOL]; + } + function tryEach(tasks, callback) { + var error2 = null; + var result; + return eachSeries$1(tasks, (task, taskCb) => { + wrapAsync(task)((err, ...args) => { + if (err === false) + return taskCb(err); + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error2 = err; + taskCb(err ? null : {}); + }); + }, () => callback(error2, result)); + } + var tryEach$1 = awaitify(tryEach); + function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; + } + function whilst(test, iteratee, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results = []; + function next(err, ...rest) { + if (err) + return callback(err); + results = rest; + if (err === false) + return; + _test(check); + } + function check(err, truth) { + if (err) + return callback(err); + if (err === false) + return; + if (!truth) + return callback(null, ...results); + _fn(next); + } + return _test(check); + } + var whilst$1 = awaitify(whilst, 3); + function until(test, iteratee, callback) { + const _test = wrapAsync(test); + return whilst$1((cb) => _test((err, truth) => cb(err, !truth)), iteratee, callback); + } + function waterfall(tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) + return callback(new Error("First argument to waterfall must be an array of functions")); + if (!tasks.length) + return callback(); + var taskIndex = 0; + function nextTask(args) { + var task = wrapAsync(tasks[taskIndex++]); + task(...args, onlyOnce(next)); + } + function next(err, ...args) { + if (err === false) + return; + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + nextTask([]); + } + var waterfall$1 = awaitify(waterfall); + var index = { + apply, + applyEach: applyEach$1, + applyEachSeries, + asyncify, + auto, + autoInject, + cargo, + cargoQueue: cargo$1, + compose, + concat: concat$1, + concatLimit: concatLimit$1, + concatSeries: concatSeries$1, + constant, + detect: detect$1, + detectLimit: detectLimit$1, + detectSeries: detectSeries$1, + dir, + doUntil, + doWhilst: doWhilst$1, + each, + eachLimit: eachLimit$2, + eachOf: eachOf$1, + eachOfLimit: eachOfLimit$2, + eachOfSeries: eachOfSeries$1, + eachSeries: eachSeries$1, + ensureAsync, + every: every$1, + everyLimit: everyLimit$1, + everySeries: everySeries$1, + filter: filter$1, + filterLimit: filterLimit$1, + filterSeries: filterSeries$1, + forever: forever$1, + groupBy, + groupByLimit: groupByLimit$1, + groupBySeries, + log: log2, + map: map$1, + mapLimit: mapLimit$1, + mapSeries: mapSeries$1, + mapValues, + mapValuesLimit: mapValuesLimit$1, + mapValuesSeries, + memoize, + nextTick, + parallel: parallel$1, + parallelLimit, + priorityQueue, + queue: queue$1, + race: race$1, + reduce: reduce$1, + reduceRight, + reflect, + reflectAll, + reject: reject$2, + rejectLimit: rejectLimit$1, + rejectSeries: rejectSeries$1, + retry, + retryable, + seq: seq2, + series, + setImmediate: setImmediate$1, + some: some$1, + someLimit: someLimit$1, + someSeries: someSeries$1, + sortBy: sortBy$1, + timeout, + times, + timesLimit, + timesSeries, + transform, + tryEach: tryEach$1, + unmemoize, + until, + waterfall: waterfall$1, + whilst: whilst$1, + all: every$1, + allLimit: everyLimit$1, + allSeries: everySeries$1, + any: some$1, + anyLimit: someLimit$1, + anySeries: someSeries$1, + find: detect$1, + findLimit: detectLimit$1, + findSeries: detectSeries$1, + flatMap: concat$1, + flatMapLimit: concatLimit$1, + flatMapSeries: concatSeries$1, + forEach: each, + forEachSeries: eachSeries$1, + forEachLimit: eachLimit$2, + forEachOf: eachOf$1, + forEachOfSeries: eachOfSeries$1, + forEachOfLimit: eachOfLimit$2, + inject: reduce$1, + foldl: reduce$1, + foldr: reduceRight, + select: filter$1, + selectLimit: filterLimit$1, + selectSeries: filterSeries$1, + wrapSync: asyncify, + during: whilst$1, + doDuring: doWhilst$1 + }; + exports2.default = index; + exports2.apply = apply; + exports2.applyEach = applyEach$1; + exports2.applyEachSeries = applyEachSeries; + exports2.asyncify = asyncify; + exports2.auto = auto; + exports2.autoInject = autoInject; + exports2.cargo = cargo; + exports2.cargoQueue = cargo$1; + exports2.compose = compose; + exports2.concat = concat$1; + exports2.concatLimit = concatLimit$1; + exports2.concatSeries = concatSeries$1; + exports2.constant = constant; + exports2.detect = detect$1; + exports2.detectLimit = detectLimit$1; + exports2.detectSeries = detectSeries$1; + exports2.dir = dir; + exports2.doUntil = doUntil; + exports2.doWhilst = doWhilst$1; + exports2.each = each; + exports2.eachLimit = eachLimit$2; + exports2.eachOf = eachOf$1; + exports2.eachOfLimit = eachOfLimit$2; + exports2.eachOfSeries = eachOfSeries$1; + exports2.eachSeries = eachSeries$1; + exports2.ensureAsync = ensureAsync; + exports2.every = every$1; + exports2.everyLimit = everyLimit$1; + exports2.everySeries = everySeries$1; + exports2.filter = filter$1; + exports2.filterLimit = filterLimit$1; + exports2.filterSeries = filterSeries$1; + exports2.forever = forever$1; + exports2.groupBy = groupBy; + exports2.groupByLimit = groupByLimit$1; + exports2.groupBySeries = groupBySeries; + exports2.log = log2; + exports2.map = map$1; + exports2.mapLimit = mapLimit$1; + exports2.mapSeries = mapSeries$1; + exports2.mapValues = mapValues; + exports2.mapValuesLimit = mapValuesLimit$1; + exports2.mapValuesSeries = mapValuesSeries; + exports2.memoize = memoize; + exports2.nextTick = nextTick; + exports2.parallel = parallel$1; + exports2.parallelLimit = parallelLimit; + exports2.priorityQueue = priorityQueue; + exports2.queue = queue$1; + exports2.race = race$1; + exports2.reduce = reduce$1; + exports2.reduceRight = reduceRight; + exports2.reflect = reflect; + exports2.reflectAll = reflectAll; + exports2.reject = reject$2; + exports2.rejectLimit = rejectLimit$1; + exports2.rejectSeries = rejectSeries$1; + exports2.retry = retry; + exports2.retryable = retryable; + exports2.seq = seq2; + exports2.series = series; + exports2.setImmediate = setImmediate$1; + exports2.some = some$1; + exports2.someLimit = someLimit$1; + exports2.someSeries = someSeries$1; + exports2.sortBy = sortBy$1; + exports2.timeout = timeout; + exports2.times = times; + exports2.timesLimit = timesLimit; + exports2.timesSeries = timesSeries; + exports2.transform = transform; + exports2.tryEach = tryEach$1; + exports2.unmemoize = unmemoize; + exports2.until = until; + exports2.waterfall = waterfall$1; + exports2.whilst = whilst$1; + exports2.all = every$1; + exports2.allLimit = everyLimit$1; + exports2.allSeries = everySeries$1; + exports2.any = some$1; + exports2.anyLimit = someLimit$1; + exports2.anySeries = someSeries$1; + exports2.find = detect$1; + exports2.findLimit = detectLimit$1; + exports2.findSeries = detectSeries$1; + exports2.flatMap = concat$1; + exports2.flatMapLimit = concatLimit$1; + exports2.flatMapSeries = concatSeries$1; + exports2.forEach = each; + exports2.forEachSeries = eachSeries$1; + exports2.forEachLimit = eachLimit$2; + exports2.forEachOf = eachOf$1; + exports2.forEachOfSeries = eachOfSeries$1; + exports2.forEachOfLimit = eachOfLimit$2; + exports2.inject = reduce$1; + exports2.foldl = reduce$1; + exports2.foldr = reduceRight; + exports2.select = filter$1; + exports2.selectLimit = filterLimit$1; + exports2.selectSeries = filterSeries$1; + exports2.wrapSync = asyncify; + exports2.during = whilst$1; + exports2.doDuring = doWhilst$1; + Object.defineProperty(exports2, "__esModule", { value: true }); + }); + } +}); + +// node_modules/nconf/node_modules/ini/ini.js +var require_ini = __commonJS({ + "node_modules/nconf/node_modules/ini/ini.js"(exports, module2) { + var { hasOwnProperty } = Object.prototype; + var eol = typeof process !== "undefined" && process.platform === "win32" ? "\r\n" : "\n"; + var encode = (obj, opt) => { + const children = []; + let out = ""; + if (typeof opt === "string") { + opt = { + section: opt, + whitespace: false + }; + } else { + opt = opt || /* @__PURE__ */ Object.create(null); + opt.whitespace = opt.whitespace === true; + } + const separator = opt.whitespace ? " = " : "="; + for (const k of Object.keys(obj)) { + const val = obj[k]; + if (val && Array.isArray(val)) { + for (const item of val) + out += safe(k + "[]") + separator + safe(item) + "\n"; + } else if (val && typeof val === "object") + children.push(k); + else + out += safe(k) + separator + safe(val) + eol; + } + if (opt.section && out.length) + out = "[" + safe(opt.section) + "]" + eol + out; + for (const k of children) { + const nk = dotSplit(k).join("\\."); + const section = (opt.section ? opt.section + "." : "") + nk; + const { whitespace } = opt; + const child = encode(obj[k], { + section, + whitespace + }); + if (out.length && child.length) + out += eol; + out += child; + } + return out; + }; + var dotSplit = (str2) => str2.replace(/\1/g, "LITERAL\\1LITERAL").replace(/\\\./g, "").split(/\./).map((part) => part.replace(/\1/g, "\\.").replace(/\2LITERAL\\1LITERAL\2/g, "")); + var decode = (str2) => { + const out = /* @__PURE__ */ Object.create(null); + let p = out; + let section = null; + const re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i; + const lines = str2.split(/[\r\n]+/g); + for (const line of lines) { + if (!line || line.match(/^\s*[;#]/)) + continue; + const match = line.match(re); + if (!match) + continue; + if (match[1] !== void 0) { + section = unsafe(match[1]); + if (section === "__proto__") { + p = /* @__PURE__ */ Object.create(null); + continue; + } + p = out[section] = out[section] || /* @__PURE__ */ Object.create(null); + continue; + } + const keyRaw = unsafe(match[2]); + const isArray = keyRaw.length > 2 && keyRaw.slice(-2) === "[]"; + const key = isArray ? keyRaw.slice(0, -2) : keyRaw; + if (key === "__proto__") + continue; + const valueRaw = match[3] ? unsafe(match[4]) : true; + const value = valueRaw === "true" || valueRaw === "false" || valueRaw === "null" ? JSON.parse(valueRaw) : valueRaw; + if (isArray) { + if (!hasOwnProperty.call(p, key)) + p[key] = []; + else if (!Array.isArray(p[key])) + p[key] = [p[key]]; + } + if (Array.isArray(p[key])) + p[key].push(value); + else + p[key] = value; + } + const remove = []; + for (const k of Object.keys(out)) { + if (!hasOwnProperty.call(out, k) || typeof out[k] !== "object" || Array.isArray(out[k])) + continue; + const parts = dotSplit(k); + let p2 = out; + const l = parts.pop(); + const nl = l.replace(/\\\./g, "."); + for (const part of parts) { + if (part === "__proto__") + continue; + if (!hasOwnProperty.call(p2, part) || typeof p2[part] !== "object") + p2[part] = /* @__PURE__ */ Object.create(null); + p2 = p2[part]; + } + if (p2 === out && nl === l) + continue; + p2[nl] = out[k]; + remove.push(k); + } + for (const del of remove) + delete out[del]; + return out; + }; + var isQuoted = (val) => val.charAt(0) === '"' && val.slice(-1) === '"' || val.charAt(0) === "'" && val.slice(-1) === "'"; + var safe = (val) => typeof val !== "string" || val.match(/[=\r\n]/) || val.match(/^\[/) || val.length > 1 && isQuoted(val) || val !== val.trim() ? JSON.stringify(val) : val.replace(/;/g, "\\;").replace(/#/g, "\\#"); + var unsafe = (val, doUnesc) => { + val = (val || "").trim(); + if (isQuoted(val)) { + if (val.charAt(0) === "'") + val = val.substr(1, val.length - 2); + try { + val = JSON.parse(val); + } catch (_) { + } + } else { + let esc = false; + let unesc = ""; + for (let i = 0, l = val.length; i < l; i++) { + const c = val.charAt(i); + if (esc) { + if ("\\;#".indexOf(c) !== -1) + unesc += c; + else + unesc += "\\" + c; + esc = false; + } else if (";#".indexOf(c) !== -1) + break; + else if (c === "\\") + esc = true; + else + unesc += c; + } + if (esc) + unesc += "\\"; + return unesc.trim(); + } + return val; + }; + module2.exports = { + parse: decode, + decode, + stringify: encode, + encode, + safe, + unsafe + }; + } +}); + +// node_modules/nconf/lib/nconf/formats.js +var require_formats = __commonJS({ + "node_modules/nconf/lib/nconf/formats.js"(exports) { + var ini = require_ini(); + var formats = exports; + formats.json = { + stringify: function(obj, replacer, spacing) { + return JSON.stringify(obj, replacer || null, spacing || 2); + }, + parse: JSON.parse + }; + formats.ini = ini; + } +}); + +// node_modules/nconf/lib/nconf/stores/memory.js +var require_memory = __commonJS({ + "node_modules/nconf/lib/nconf/stores/memory.js"(exports) { + var common2 = require_common(); + var DEFAULT_ACCESS_SEPARATOR = ":"; + var DEFAULT_INPUT_SEPARATOR = "__"; + function escapeRegExp(string) { + return typeof string === "string" && string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + var Memory = exports.Memory = function(options) { + options = options || {}; + this.type = "memory"; + this.store = {}; + this.mtimes = {}; + this.readOnly = false; + this.loadFrom = options.loadFrom || null; + this.accessSeparator = options.accessSeparator || DEFAULT_ACCESS_SEPARATOR; + this.inputSeparator = options.inputSeparator || DEFAULT_INPUT_SEPARATOR; + this.parseValues = options.parseValues || false; + this.disableDefaultAccessSeparator = options.disableDefaultAccessSeparator || false; + if (typeof options === "string" || options instanceof RegExp) { + this.inputSeparator = options; + } + if (this.loadFrom) { + this.store = common2.loadFilesSync(this.loadFrom); + } + }; + Memory.prototype._normalizeKey = function(key) { + let inputSeparator = this.inputSeparator; + if (inputSeparator instanceof RegExp) { + inputSeparator = inputSeparator.source; + } else { + inputSeparator = escapeRegExp(inputSeparator); + } + let separatorRegexStr = `${escapeRegExp(this.accessSeparator)}|${inputSeparator}`; + if (!this.disableDefaultAccessSeparator) { + separatorRegexStr += `|${DEFAULT_ACCESS_SEPARATOR}`; + } + const separatorRegEx = new RegExp(separatorRegexStr, "g"); + return key && key.replace(separatorRegEx, this.accessSeparator); + }; + Memory.prototype.get = function(key) { + var target = this.store, path2 = common2.path(this._normalizeKey(key), this.accessSeparator); + while (path2.length > 0) { + key = path2.shift(); + if (target && typeof target !== "string" && Object.hasOwnProperty.call(target, key)) { + target = target[key]; + continue; + } + return void 0; + } + return target; + }; + Memory.prototype.set = function(key, value) { + if (this.readOnly) { + return false; + } + var target = this.store, path2 = common2.path(this._normalizeKey(key), this.accessSeparator); + if (path2.length === 0) { + if (!value || typeof value !== "object") { + return false; + } else { + this.reset(); + this.store = value; + return true; + } + } + this.mtimes[key] = Date.now(); + while (path2.length > 1) { + key = path2.shift(); + if (!target[key] || typeof target[key] !== "object") { + target[key] = {}; + } + target = target[key]; + } + key = path2.shift(); + if (this.parseValues) { + value = common2.parseValues.call(common2, value); + } + target[key] = value; + return true; + }; + Memory.prototype.clear = function(key) { + if (this.readOnly) { + return false; + } + var target = this.store, value = target, path2 = common2.path(key, this.accessSeparator); + delete this.mtimes[key]; + for (var i = 0; i < path2.length - 1; i++) { + key = path2[i]; + value = target[key]; + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + target = value; + } + key = path2[i]; + delete target[key]; + return true; + }; + Memory.prototype.merge = function(key, value) { + if (this.readOnly) { + return false; + } + if (typeof value !== "object" || Array.isArray(value) || value === null) { + return this.set(key, value); + } + var self2 = this, target = this.store, path2 = common2.path(key, this.accessSeparator), fullKey = key; + this.mtimes[key] = Date.now(); + while (path2.length > 1) { + key = path2.shift(); + if (!target[key]) { + target[key] = {}; + } + target = target[key]; + } + key = path2.shift(); + if (typeof target[key] !== "object" || Array.isArray(target[key])) { + target[key] = value; + return true; + } + return Object.keys(value).every(function(nested) { + return self2.merge(common2.keyed(self2.accessSeparator, fullKey, nested), value[nested]); + }); + }; + Memory.prototype.reset = function() { + if (this.readOnly) { + return false; + } + this.mtimes = {}; + this.store = {}; + return true; + }; + Memory.prototype.loadSync = function() { + return this.store || {}; + }; + } +}); + +// node_modules/nconf/lib/nconf/common.js +var require_common = __commonJS({ + "node_modules/nconf/lib/nconf/common.js"(exports) { + var fs5 = require("fs"); + var async = require_async(); + var formats = require_formats(); + var Memory = require_memory().Memory; + var common2 = exports; + common2.path = function(key, separator) { + separator = separator || ":"; + return key == null ? [] : key.split(separator); + }; + common2.key = function() { + return Array.prototype.slice.call(arguments).join(":"); + }; + common2.keyed = function() { + return Array.prototype.slice.call(arguments, 1).join(arguments[0]); + }; + common2.loadFiles = function(files, callback) { + if (!files) { + return callback(null, {}); + } + var options = Array.isArray(files) ? { files } : files; + options.format = options.format || formats.json; + function parseFile(file, next) { + fs5.readFile(file, function(err, data) { + return !err ? next(null, options.format.parse(data.toString())) : next(err); + }); + } + async.map(options.files, parseFile, function(err, objs) { + return err ? callback(err) : callback(null, common2.merge(objs)); + }); + }; + common2.loadFilesSync = function(files) { + if (!files) { + return; + } + var options = Array.isArray(files) ? { files } : files; + options.format = options.format || formats.json; + return common2.merge(options.files.map(function(file) { + return options.format.parse(fs5.readFileSync(file, "utf8")); + })); + }; + common2.merge = function(objs) { + var store = new Memory(); + objs.forEach(function(obj) { + Object.keys(obj).forEach(function(key) { + store.merge(key, obj[key]); + }); + }); + return store.store; + }; + common2.capitalize = function(str2) { + return str2 && str2[0].toUpperCase() + str2.slice(1); + }; + common2.parseValues = function(value) { + var val = value; + try { + val = JSON.parse(value); + } catch (ignore) { + if (value === "undefined") { + val = void 0; + } + } + return val; + }; + common2.transform = function(map2, fn) { + var pairs2 = Object.keys(map2).map(function(key) { + var obj = { key, value: map2[key] }; + var result = fn.call(null, obj); + if (!result) { + return null; + } else if (result.key) { + return result; + } + var error2 = new Error("Transform function passed to store returned an invalid format: " + JSON.stringify(result)); + error2.name = "RuntimeError"; + throw error2; + }); + return pairs2.filter(function(pair) { + return pair !== null; + }).reduce(function(accumulator, pair) { + accumulator[pair.key] = pair.value; + return accumulator; + }, {}); + }; + } +}); + +// node_modules/nconf/lib/nconf/provider.js +var require_provider = __commonJS({ + "node_modules/nconf/lib/nconf/provider.js"(exports) { + var async = require_async(); + var common2 = require_common(); + var Provider2 = exports.Provider = function(options) { + options = options || {}; + this.stores = {}; + this.sources = []; + this.init(options); + }; + ["argv", "env"].forEach(function(type2) { + Provider2.prototype[type2] = function() { + var args = [type2].concat(Array.prototype.slice.call(arguments)); + return this.add.apply(this, args); + }; + }); + Provider2.prototype.file = function(key, options) { + if (arguments.length == 1) { + options = typeof key === "string" ? { file: key } : key; + key = "file"; + } else { + options = typeof options === "string" ? { file: options } : options; + } + options.type = "file"; + return this.add(key, options); + }; + ["defaults", "overrides"].forEach(function(type2) { + Provider2.prototype[type2] = function(options) { + options = options || {}; + if (!options.type) { + options.type = "literal"; + } + return this.add(type2, options); + }; + }); + Provider2.prototype.use = function(name, options) { + options = options || {}; + function sameOptions(store2) { + return Object.keys(options).every(function(key) { + return options[key] === store2[key]; + }); + } + var store = this.stores[name], update = store && !sameOptions(store); + if (!store || update) { + if (update) { + this.remove(name); + } + this.add(name, options); + } + return this; + }; + Provider2.prototype.add = function(name, options, usage) { + options = options || {}; + var type2 = options.type || name; + if (!require_nconf()[common2.capitalize(type2)]) { + throw new Error("Cannot add store with unknown type: " + type2); + } + this.stores[name] = this.create(type2, options, usage); + if (this.stores[name].loadSync) { + this.stores[name].loadSync(); + } + return this; + }; + Provider2.prototype.remove = function(name) { + delete this.stores[name]; + return this; + }; + Provider2.prototype.create = function(type2, options, usage) { + return new (require_nconf())[common2.capitalize(type2.toLowerCase())](options, usage); + }; + Provider2.prototype.init = function(options) { + var self2 = this; + if (options.type) { + this.add(options.type, options); + } else if (options.store) { + this.add(options.store.name || options.store.type, options.store); + } else if (options.stores) { + Object.keys(options.stores).forEach(function(name) { + var store = options.stores[name]; + self2.add(store.name || name || store.type, store); + }); + } + if (options.source) { + this.sources.push(this.create(options.source.type || options.source.name, options.source)); + } else if (options.sources) { + Object.keys(options.sources).forEach(function(name) { + var source = options.sources[name]; + self2.sources.push(self2.create(source.type || source.name || name, source)); + }); + } + }; + Provider2.prototype.get = function(key, callback) { + if (typeof key === "function") { + callback = key; + key = null; + } + if (!callback) { + return this._execute("get", 1, key, callback); + } + var current = 0, names = Object.keys(this.stores), self2 = this, response, mergeObjs = []; + async.whilst(function(cb) { + cb(null, typeof response === "undefined" && current < names.length); + }, function(next) { + var store = self2.stores[names[current]]; + current++; + if (store.get.length >= 2) { + return store.get(key, function(err, value) { + if (err) { + return next(err); + } + response = value; + if (response && typeof response === "object" && !Array.isArray(response)) { + mergeObjs.push(response); + response = void 0; + } + next(); + }); + } + response = store.get(key); + if (response && typeof response === "object" && !Array.isArray(response)) { + mergeObjs.push(response); + response = void 0; + } + next(); + }, function(err) { + if (!err && mergeObjs.length) { + response = common2.merge(mergeObjs.reverse()); + } + return err ? callback(err) : callback(null, response); + }); + }; + Provider2.prototype.any = function(keys, callback) { + if (!Array.isArray(keys)) { + keys = Array.prototype.slice.call(arguments); + if (keys.length > 0 && typeof keys[keys.length - 1] === "function") { + callback = keys.pop(); + } else { + callback = null; + } + } + if (!callback) { + var val; + for (var i = 0; i < keys.length; ++i) { + val = this._execute("get", 1, keys[i], callback); + if (val) { + return val; + } + } + return null; + } + var keyIndex = 0, result, self2 = this; + async.whilst(function(cb) { + cb(null, !result && keyIndex < keys.length); + }, function(next) { + var key = keys[keyIndex]; + keyIndex++; + self2.get(key, function(err, v) { + if (err) { + next(err); + } else { + result = v; + next(); + } + }); + }, function(err) { + return err ? callback(err) : callback(null, result); + }); + }; + Provider2.prototype.set = function(key, value, callback) { + return this._execute("set", 2, key, value, callback); + }; + Provider2.prototype.required = function(keys) { + if (!Array.isArray(keys)) { + throw new Error("Incorrect parameter, array expected"); + } + var missing = []; + keys.forEach(function(key) { + if (typeof this.get(key) === "undefined") { + missing.push(key); + } + }, this); + if (missing.length) { + throw new Error("Missing required keys: " + missing.join(", ")); + } else { + return this; + } + }; + Provider2.prototype.reset = function(callback) { + return this._execute("reset", 0, callback); + }; + Provider2.prototype.clear = function(key, callback) { + return this._execute("clear", 1, key, callback); + }; + Provider2.prototype.merge = function() { + var self2 = this, args = Array.prototype.slice.call(arguments), callback = typeof args[args.length - 1] === "function" && args.pop(), value = args.pop(), key = args.pop(); + function mergeProperty(prop, next) { + return self2._execute("merge", 2, prop, value[prop], next); + } + if (!key) { + if (Array.isArray(value) || typeof value !== "object") { + return onError(new Error("Cannot merge non-Object into top-level."), callback); + } + return async.forEach(Object.keys(value), mergeProperty, callback || function() { + }); + } + return this._execute("merge", 2, key, value, callback); + }; + Provider2.prototype.load = function(callback) { + var self2 = this; + function getStores() { + var stores = Object.keys(self2.stores); + stores.reverse(); + return stores.map(function(name) { + return self2.stores[name]; + }); + } + function loadStoreSync(store) { + if (!store.loadSync) { + throw new Error("nconf store " + store.type + " has no loadSync() method"); + } + return store.loadSync(); + } + function loadStore(store, next) { + if (!store.load && !store.loadSync) { + return next(new Error("nconf store " + store.type + " has no load() method")); + } + return store.loadSync ? next(null, store.loadSync()) : store.load(next); + } + function loadBatch(targets, done) { + if (!done) { + return common2.merge(targets.map(loadStoreSync)); + } + async.map(targets, loadStore, function(err, objs) { + return err ? done(err) : done(null, common2.merge(objs)); + }); + } + function mergeSources(data) { + if (data && typeof data === "object") { + self2.use("sources", { + type: "literal", + store: data + }); + } + } + function loadSources() { + var sourceHierarchy = self2.sources.splice(0); + sourceHierarchy.reverse(); + if (!callback) { + mergeSources(loadBatch(sourceHierarchy)); + return loadBatch(getStores()); + } + loadBatch(sourceHierarchy, function(err, data) { + if (err) { + return callback(err); + } + mergeSources(data); + return loadBatch(getStores(), callback); + }); + } + return self2.sources.length ? loadSources() : loadBatch(getStores(), callback); + }; + Provider2.prototype.save = function(value, callback) { + if (!callback && typeof value === "function") { + callback = value; + value = null; + } + var self2 = this, names = Object.keys(this.stores); + function saveStoreSync(memo, name) { + var store = self2.stores[name]; + if (store.saveSync) { + var ret = store.saveSync(); + if (typeof ret == "object" && ret !== null) { + memo.push(ret); + } + } + return memo; + } + function saveStore(memo, name, next) { + var store = self2.stores[name]; + if (store.save) { + return store.save(value, function(err, data) { + if (err) { + return next(err); + } + if (typeof data == "object" && data !== null) { + memo.push(data); + } + next(null, memo); + }); + } else if (store.saveSync) { + memo.push(store.saveSync()); + } + next(null, memo); + } + if (!callback) { + return common2.merge(names.reduce(saveStoreSync, [])); + } + async.reduce(names, [], saveStore, function(err, objs) { + return err ? callback(err) : callback(null, common2.merge(objs)); + }); + }; + Provider2.prototype._execute = function(action, syncLength) { + var args = Array.prototype.slice.call(arguments, 2), callback = typeof args[args.length - 1] === "function" && args.pop(), destructive = ["set", "clear", "merge", "reset"].indexOf(action) !== -1, self2 = this, response, mergeObjs = [], keys = Object.keys(this.stores); + function runAction(name, next) { + var store = self2.stores[name]; + if (destructive && store.readOnly) { + return next(); + } + return store[action].length > syncLength ? store[action].apply(store, args.concat(next)) : next(null, store[action].apply(store, args)); + } + if (callback) { + return async.forEach(keys, runAction, function(err) { + return err ? callback(err) : callback(); + }); + } + keys.forEach(function(name) { + if (typeof response === "undefined") { + var store = self2.stores[name]; + if (destructive && store.readOnly) { + return; + } + response = store[action].apply(store, args); + if (response && action === "get" && typeof response === "object" && !Array.isArray(response)) { + mergeObjs.push(response); + response = void 0; + } + } + }); + if (mergeObjs.length) { + response = common2.merge(mergeObjs.reverse()); + } + return response; + }; + function onError(err, callback) { + if (callback) { + return callback(err); + } + throw err; + } + } +}); + +// node_modules/nconf/package.json +var require_package = __commonJS({ + "node_modules/nconf/package.json"(exports, module2) { + module2.exports = { + name: "nconf", + description: "Hierarchical node.js configuration with files, environment variables, command-line arguments, and atomic object merging.", + version: "1.0.0-beta.0", + author: "Charlie Robbins ", + contributors: [ + "Matt Hamann ", + "Maciej Ma\u0142ecki ", + "Jarrett Cruger ", + "Adrien Becchis" + ], + repository: { + type: "git", + url: "http://github.com/flatiron/nconf.git" + }, + keywords: [ + "configuration", + "key value store", + "plugabble" + ], + dependencies: { + ini: "^2.0.0", + yargs: "^17.0.0" + }, + devDependencies: { + async: "^3.0.0", + coveralls: "^3.0.2", + eslint: "^8.0.0", + istanbul: "^0.4.1", + jest: "^27.0.0", + "nconf-yaml": "^1.0.2" + }, + main: "./lib/nconf", + scripts: { + test: "jest --verbose", + cover: "jest --coverage", + coveralls: "cat coverage/lcov.info | coveralls", + lint: "eslint ." + }, + files: [ + "lib" + ], + engines: { + node: ">= 0.4.0" + }, + license: "MIT" + }; + } +}); + +// node_modules/y18n/build/index.cjs +var require_build = __commonJS({ + "node_modules/y18n/build/index.cjs"(exports, module2) { + "use strict"; + var fs5 = require("fs"); + var util = require("util"); + var path2 = require("path"); + var shim; + var Y18N = class { + constructor(opts) { + opts = opts || {}; + this.directory = opts.directory || "./locales"; + this.updateFiles = typeof opts.updateFiles === "boolean" ? opts.updateFiles : true; + this.locale = opts.locale || "en"; + this.fallbackToLanguage = typeof opts.fallbackToLanguage === "boolean" ? opts.fallbackToLanguage : true; + this.cache = /* @__PURE__ */ Object.create(null); + this.writeQueue = []; + } + __(...args) { + if (typeof arguments[0] !== "string") { + return this._taggedLiteral(arguments[0], ...arguments); + } + const str2 = args.shift(); + let cb = function() { + }; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + cb = cb || function() { + }; + if (!this.cache[this.locale]) + this._readLocaleFile(); + if (!this.cache[this.locale][str2] && this.updateFiles) { + this.cache[this.locale][str2] = str2; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + return shim.format.apply(shim.format, [this.cache[this.locale][str2] || str2].concat(args)); + } + __n() { + const args = Array.prototype.slice.call(arguments); + const singular = args.shift(); + const plural = args.shift(); + const quantity = args.shift(); + let cb = function() { + }; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + if (!this.cache[this.locale]) + this._readLocaleFile(); + let str2 = quantity === 1 ? singular : plural; + if (this.cache[this.locale][singular]) { + const entry = this.cache[this.locale][singular]; + str2 = entry[quantity === 1 ? "one" : "other"]; + } + if (!this.cache[this.locale][singular] && this.updateFiles) { + this.cache[this.locale][singular] = { + one: singular, + other: plural + }; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + const values = [str2]; + if (~str2.indexOf("%d")) + values.push(quantity); + return shim.format.apply(shim.format, values.concat(args)); + } + setLocale(locale) { + this.locale = locale; + } + getLocale() { + return this.locale; + } + updateLocale(obj) { + if (!this.cache[this.locale]) + this._readLocaleFile(); + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + this.cache[this.locale][key] = obj[key]; + } + } + } + _taggedLiteral(parts, ...args) { + let str2 = ""; + parts.forEach(function(part, i) { + const arg = args[i + 1]; + str2 += part; + if (typeof arg !== "undefined") { + str2 += "%s"; + } + }); + return this.__.apply(this, [str2].concat([].slice.call(args, 1))); + } + _enqueueWrite(work) { + this.writeQueue.push(work); + if (this.writeQueue.length === 1) + this._processWriteQueue(); + } + _processWriteQueue() { + const _this = this; + const work = this.writeQueue[0]; + const directory = work.directory; + const locale = work.locale; + const cb = work.cb; + const languageFile = this._resolveLocaleFile(directory, locale); + const serializedLocale = JSON.stringify(this.cache[locale], null, 2); + shim.fs.writeFile(languageFile, serializedLocale, "utf-8", function(err) { + _this.writeQueue.shift(); + if (_this.writeQueue.length > 0) + _this._processWriteQueue(); + cb(err); + }); + } + _readLocaleFile() { + let localeLookup = {}; + const languageFile = this._resolveLocaleFile(this.directory, this.locale); + try { + if (shim.fs.readFileSync) { + localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, "utf-8")); + } + } catch (err) { + if (err instanceof SyntaxError) { + err.message = "syntax error in " + languageFile; + } + if (err.code === "ENOENT") + localeLookup = {}; + else + throw err; + } + this.cache[this.locale] = localeLookup; + } + _resolveLocaleFile(directory, locale) { + let file = shim.resolve(directory, "./", locale + ".json"); + if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf("_")) { + const languageFile = shim.resolve(directory, "./", locale.split("_")[0] + ".json"); + if (this._fileExistsSync(languageFile)) + file = languageFile; + } + return file; + } + _fileExistsSync(file) { + return shim.exists(file); + } + }; + function y18n$1(opts, _shim) { + shim = _shim; + const y18n2 = new Y18N(opts); + return { + __: y18n2.__.bind(y18n2), + __n: y18n2.__n.bind(y18n2), + setLocale: y18n2.setLocale.bind(y18n2), + getLocale: y18n2.getLocale.bind(y18n2), + updateLocale: y18n2.updateLocale.bind(y18n2), + locale: y18n2.locale + }; + } + var nodePlatformShim = { + fs: { + readFileSync: fs5.readFileSync, + writeFile: fs5.writeFile + }, + format: util.format, + resolve: path2.resolve, + exists: (file) => { + try { + return fs5.statSync(file).isFile(); + } catch (err) { + return false; + } + } + }; + var y18n = (opts) => { + return y18n$1(opts, nodePlatformShim); + }; + module2.exports = y18n; + } +}); + +// node_modules/yargs/node_modules/yargs-parser/build/index.cjs +var require_build2 = __commonJS({ + "node_modules/yargs/node_modules/yargs-parser/build/index.cjs"(exports, module2) { + "use strict"; + var util = require("util"); + var path2 = require("path"); + var fs5 = require("fs"); + function camelCase(str2) { + const isCamelCase = str2 !== str2.toLowerCase() && str2 !== str2.toUpperCase(); + if (!isCamelCase) { + str2 = str2.toLowerCase(); + } + if (str2.indexOf("-") === -1 && str2.indexOf("_") === -1) { + return str2; + } else { + let camelcase = ""; + let nextChrUpper = false; + const leadingHyphens = str2.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str2.length; i++) { + let chr = str2.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === "-" || chr === "_")) { + nextChrUpper = true; + } else if (chr !== "-" && chr !== "_") { + camelcase += chr; + } + } + return camelcase; + } + } + function decamelize(str2, joinString) { + const lowercase = str2.toLowerCase(); + joinString = joinString || "-"; + let notCamelcase = ""; + for (let i = 0; i < str2.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str2.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } else { + notCamelcase += chrString; + } + } + return notCamelcase; + } + function looksLikeNumber(x) { + if (x === null || x === void 0) + return false; + if (typeof x === "number") + return true; + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); + } + function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map((e) => typeof e !== "string" ? e + "" : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + if (c === " " && !opening) { + if (!(prevC === " ")) { + i++; + } + continue; + } + if (c === opening) { + opening = null; + } else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ""; + args[i] += c; + } + return args; + } + var DefaultValuesForTypeKey; + (function(DefaultValuesForTypeKey2) { + DefaultValuesForTypeKey2["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey2["STRING"] = "string"; + DefaultValuesForTypeKey2["NUMBER"] = "number"; + DefaultValuesForTypeKey2["ARRAY"] = "array"; + })(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); + var mixin; + var YargsParser = class { + constructor(_mixin) { + mixin = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: void 0, + array: void 0, + boolean: void 0, + config: void 0, + configObjects: void 0, + configuration: void 0, + coerce: void 0, + count: void 0, + default: void 0, + envPrefix: void 0, + narg: void 0, + normalize: void 0, + string: void 0, + number: void 0, + __: void 0, + key: void 0 + }, options); + const args = tokenizeArgString(argsInput); + const inputIsString = typeof argsInput === "string"; + const aliases = combineAliases(Object.assign(/* @__PURE__ */ Object.create(null), opts.alias)); + const configuration = Object.assign({ + "boolean-negation": true, + "camel-case-expansion": true, + "combine-arrays": false, + "dot-notation": true, + "duplicate-arguments-array": true, + "flatten-duplicate-arrays": true, + "greedy-arrays": true, + "halt-at-non-option": false, + "nargs-eats-options": false, + "negation-prefix": "no-", + "parse-numbers": true, + "parse-positional-numbers": true, + "populate--": false, + "set-placeholder-key": false, + "short-option-groups": true, + "strip-aliased": false, + "strip-dashed": false, + "unknown-options-as-args": false + }, opts.configuration); + const defaults = Object.assign(/* @__PURE__ */ Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration["populate--"]; + const notFlagsArgv = notFlagsOption ? "--" : "_"; + const newAliases = /* @__PURE__ */ Object.create(null); + const defaulted = /* @__PURE__ */ Object.create(null); + const __ = opts.__ || mixin.format; + const flags = { + aliases: /* @__PURE__ */ Object.create(null), + arrays: /* @__PURE__ */ Object.create(null), + bools: /* @__PURE__ */ Object.create(null), + strings: /* @__PURE__ */ Object.create(null), + numbers: /* @__PURE__ */ Object.create(null), + counts: /* @__PURE__ */ Object.create(null), + normalize: /* @__PURE__ */ Object.create(null), + configs: /* @__PURE__ */ Object.create(null), + nargs: /* @__PURE__ */ Object.create(null), + coercions: /* @__PURE__ */ Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp("^--" + configuration["negation-prefix"] + "(.+)"); + [].concat(opts.array || []).filter(Boolean).forEach(function(opt) { + const key = typeof opt === "object" ? opt.key : opt; + const assignment = Object.keys(opt).map(function(key2) { + const arrayFlagKeys = { + boolean: "bools", + string: "strings", + number: "numbers" + }; + return arrayFlagKeys[key2]; + }).filter(Boolean).pop(); + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function(key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function(key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function(key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function(key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function(key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === "object") { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === "number") { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === "object") { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === "function") { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== "undefined") { + if (Array.isArray(opts.config) || typeof opts.config === "string") { + [].concat(opts.config).filter(Boolean).forEach(function(key) { + flags.configs[key] = true; + }); + } else if (typeof opts.config === "object") { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === "boolean" || typeof value === "function") { + flags.configs[key] = value; + } + }); + } + } + extendAliases(opts.key, aliases, opts.default, flags.arrays); + Object.keys(defaults).forEach(function(key) { + (flags.aliases[key] || []).forEach(function(alias) { + defaults[alias] = defaults[key]; + }); + }); + let error2 = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }); + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, "---"); + let broken; + let key; + let letters; + let m; + let next; + let value; + if (arg !== "--" && /^-/.test(arg) && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + } else if (truncatedArg.match(/^---+(=|$)/)) { + pushPositional(arg); + continue; + } else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) { + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } else if (checkAllAliases(m[1], flags.nargs) !== false) { + i = eatNargs(i, m[1], args, m[2]); + } else { + setArg(m[1], m[2], true); + } + } + } else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + } else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== void 0 && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + } else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== void 0 && !next.match(/^-/) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(""); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === "=") { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args, value); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args, value); + } else { + setArg(key, value); + } + broken = true; + break; + } + if (next === "-") { + setArg(letters[j], next); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== "-") { + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== void 0 && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) { + key = arg.slice(1); + setArg(key, defaultValue(key)); + } else if (arg === "--") { + notFlags = args.slice(i + 1); + break; + } else if (configuration["halt-at-non-option"]) { + notFlags = args.slice(i); + break; + } else { + pushPositional(arg); + } + } + applyEnvVars(argv, true); + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults, true); + applyCoercions(argv); + if (configuration["set-placeholder-key"]) + setPlaceholderKeys(argv); + Object.keys(flags.counts).forEach(function(key) { + if (!hasKey(argv, key.split("."))) + setArg(key, 0); + }); + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function(key) { + argv[notFlagsArgv].push(key); + }); + if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) { + Object.keys(argv).filter((key) => key !== "--" && key.includes("-")).forEach((key) => { + delete argv[key]; + }); + } + if (configuration["strip-aliased"]) { + [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => { + if (configuration["camel-case-expansion"] && alias.includes("-")) { + delete argv[alias.split(".").map((prop) => camelCase(prop)).join(".")]; + } + delete argv[alias]; + }); + } + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber("_", arg); + if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") { + argv._.push(maybeCoercedNumber); + } + } + function eatNargs(i, key, args2, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error2 = Error(__("Argument unexpected for: %s", key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration["nargs-eats-options"]) { + if (args2.length - (i + 1) + available < toEat) { + error2 = Error(__("Not enough arguments following: %s", key)); + } + available = toEat; + } else { + for (ii = i + 1; ii < args2.length; ii++) { + if (!args2[ii].match(/^-[^0-9]/) || args2[ii].match(negative) || isUnknownOptionAsArg(args2[ii])) + available++; + else + break; + } + if (available < toEat) + error2 = Error(__("Not enough arguments following: %s", key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < consumed + i + 1; ii++) { + setArg(key, args2[ii]); + } + return i + consumed; + } + function eatArray(i, key, args2, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args2[i + 1]; + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !/^(true|false)$/.test(next)) { + argsToSet.push(true); + } else if (isUndefined(next) || isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) { + if (defaults[key] !== void 0) { + const defVal = defaults[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } else { + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign, true)); + } + for (let ii = i + 1; ii < args2.length; ii++) { + if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount) + break; + next = args2[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next, inputIsString)); + } + } + if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) { + error2 = Error(__("Not enough arguments following: %s", key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val, shouldStripQuotes = inputIsString) { + if (/-/.test(key) && configuration["camel-case-expansion"]) { + const alias = key.split(".").map(function(prop) { + return camelCase(prop); + }).join("."); + addNewAlias(key, alias); + } + const value = processValue(key, val, shouldStripQuotes); + const splitKey = key.split("."); + setKey(argv, splitKey, value); + if (flags.aliases[key]) { + flags.aliases[key].forEach(function(x) { + const keyProperties = x.split("."); + setKey(argv, keyProperties, value); + }); + } + if (splitKey.length > 1 && configuration["dot-notation"]) { + (flags.aliases[splitKey[0]] || []).forEach(function(x) { + let keyProperties = x.split("."); + const a = [].concat(splitKey); + a.shift(); + keyProperties = keyProperties.concat(a); + if (!(flags.aliases[key] || []).includes(keyProperties.join("."))) { + setKey(argv, keyProperties, value); + } + }); + } + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function(key2) { + Object.defineProperty(argvReturn, key2, { + enumerable: true, + get() { + return val; + }, + set(value2) { + val = typeof value2 === "string" ? mixin.normalize(value2) : value2; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val, shouldStripQuotes) { + if (shouldStripQuotes) { + val = stripQuotes(val); + } + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === "string") + val = val === "true"; + } + let value = Array.isArray(val) ? val.map(function(v) { + return maybeCoerceNumber(key, v); + }) : maybeCoerceNumber(key, val); + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === "boolean")) { + value = increment(); + } + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val2) => { + return mixin.normalize(val2); + }); + else + value = mixin.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration["parse-positional-numbers"] && key === "_") + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`))); + if (shouldCoerceNumber || !isUndefined(value) && checkAllAliases(key, flags.numbers)) { + value = Number(value); + } + } + return value; + } + function setConfig(argv2) { + const configLookup = /* @__PURE__ */ Object.create(null); + applyDefaultsAndAliases(configLookup, flags.aliases, defaults); + Object.keys(flags.configs).forEach(function(configKey) { + const configPath = argv2[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === "function") { + try { + config = resolveConfig(resolvedConfigPath); + } catch (e) { + config = e; + } + if (config instanceof Error) { + error2 = config; + return; + } + } else { + config = mixin.require(resolvedConfigPath); + } + setConfigObject(config); + } catch (ex) { + if (ex.name === "PermissionDenied") + error2 = ex; + else if (argv2[configKey]) + error2 = Error(__("Invalid JSON config file: %s", configPath)); + } + } + }); + } + function setConfigObject(config, prev) { + Object.keys(config).forEach(function(key) { + const value = config[key]; + const fullKey = prev ? prev + "." + key : key; + if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) { + setConfigObject(value, fullKey); + } else { + if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) { + setArg(fullKey, value); + } + } + }); + } + function setConfigObjects() { + if (typeof configObjects !== "undefined") { + configObjects.forEach(function(configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv2, configOnly) { + if (typeof envPrefix === "undefined") + return; + const prefix = typeof envPrefix === "string" ? envPrefix : ""; + const env2 = mixin.env(); + Object.keys(env2).forEach(function(envVar) { + if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) { + const keys = envVar.split("__").map(function(key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if ((configOnly && flags.configs[keys.join(".")] || !configOnly) && !hasKey(argv2, keys)) { + setArg(keys.join("."), env2[envVar]); + } + } + }); + } + function applyCoercions(argv2) { + let coerce; + const applied = /* @__PURE__ */ new Set(); + Object.keys(argv2).forEach(function(key) { + if (!applied.has(key)) { + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === "function") { + try { + const value = maybeCoerceNumber(key, coerce(argv2[key])); + [].concat(flags.aliases[key] || [], key).forEach((ali) => { + applied.add(ali); + argv2[ali] = value; + }); + } catch (err) { + error2 = err; + } + } + } + }); + } + function setPlaceholderKeys(argv2) { + flags.keys.forEach((key) => { + if (~key.indexOf(".")) + return; + if (typeof argv2[key] === "undefined") + argv2[key] = void 0; + }); + return argv2; + } + function applyDefaultsAndAliases(obj, aliases2, defaults2, canLog = false) { + Object.keys(defaults2).forEach(function(key) { + if (!hasKey(obj, key.split("."))) { + setKey(obj, key.split("."), defaults2[key]); + if (canLog) + defaulted[key] = true; + (aliases2[key] || []).forEach(function(x) { + if (hasKey(obj, x.split("."))) + return; + setKey(obj, x.split("."), defaults2[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + o = o[key2] || {}; + }); + const key = keys[keys.length - 1]; + if (typeof o !== "object") + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + key2 = sanitizeKey(key2); + if (typeof o === "object" && o[key2] === void 0) { + o[key2] = {}; + } + if (typeof o[key2] !== "object" || Array.isArray(o[key2])) { + if (Array.isArray(o[key2])) { + o[key2].push({}); + } else { + o[key2] = [o[key2], {}]; + } + o = o[key2][o[key2].length - 1]; + } else { + o = o[key2]; + } + }); + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join("."), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration["duplicate-arguments-array"]; + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if (!isUndefined(o[key]) && flags.nargs[key] === 1 || Array.isArray(o[key]) && o[key].length === flags.nargs[key]) { + o[key] = void 0; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration["flatten-duplicate-arrays"] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } else { + o[key] = o[key].concat([value]); + } + } else if (o[key] === void 0 && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } else if (duplicate && !(o[key] === void 0 || checkAllAliases(key, flags.counts) || checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } else { + o[key] = value; + } + } + function extendAliases(...args2) { + args2.forEach(function(obj) { + Object.keys(obj || {}).forEach(function(key) { + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + flags.aliases[key].concat(key).forEach(function(x) { + if (/-/.test(x) && configuration["camel-case-expansion"]) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].concat(key).forEach(function(x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) { + const c = decamelize(x, "-"); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function(x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function(y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find((key2) => keys.includes(key2)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map((k) => flags[k])); + return toCheck.some(function(flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function(pattern) { + const match = arg.match(pattern); + return match && hasAnyFlag(match[1]); + }); + } + function hasAllShortFlags(arg) { + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(""); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration["unknown-options-as-args"] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, "--"); + if (arg.match(negative)) { + return false; + } + if (hasAllShortFlags(arg)) { + return false; + } + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + const normalFlag = /^-+([^=]+?)$/; + const flagEndingInHyphen = /^-+([^=]+?)-$/; + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts) && `${key}` in defaults) { + return defaults[key]; + } else { + return defaultForType(guessType(key)); + } + } + function defaultForType(type2) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: "", + [DefaultValuesForTypeKey.NUMBER]: void 0, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type2]; + } + function guessType(key) { + let type2 = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type2 = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type2 = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type2 = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type2 = DefaultValuesForTypeKey.ARRAY; + return type2; + } + function isUndefined(num) { + return num === void 0; + } + function checkConfiguration() { + Object.keys(flags.counts).find((key) => { + if (checkAllAliases(key, flags.arrays)) { + error2 = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key)); + return true; + } else if (checkAllAliases(key, flags.nargs)) { + error2 = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration, + defaulted: Object.assign({}, defaulted), + error: error2, + newAliases: Object.assign({}, newAliases) + }; + } + }; + function combineAliases(aliases) { + const aliasArrays = []; + const combined = /* @__PURE__ */ Object.create(null); + let change = true; + Object.keys(aliases).forEach(function(key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function(v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + aliasArrays.forEach(function(aliasArray) { + aliasArray = aliasArray.filter(function(v, i, self2) { + return self2.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== void 0 && typeof lastAlias === "string") { + combined[lastAlias] = aliasArray; + } + }); + return combined; + } + function increment(orig) { + return orig !== void 0 ? orig + 1 : 1; + } + function sanitizeKey(key) { + if (key === "__proto__") + return "___proto___"; + return key; + } + function stripQuotes(val) { + return typeof val === "string" && (val[0] === "'" || val[0] === '"') && val[val.length - 1] === val[0] ? val.substring(1, val.length - 1) : val; + } + var _a; + var _b; + var _c; + var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12; + var nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1); + if (nodeVersion) { + const major = Number(nodeVersion.match(/^([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } + } + var env = process ? process.env : {}; + var parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env; + }, + format: util.format, + normalize: path2.normalize, + resolve: path2.resolve, + require: (path3) => { + if (typeof require !== "undefined") { + return require(path3); + } else if (path3.match(/\.json$/)) { + return JSON.parse(fs5.readFileSync(path3, "utf8")); + } else { + throw Error("only .json config files are supported in ESM"); + } + } + }); + var yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; + }; + yargsParser.detailed = function(args, opts) { + return parser.parse(args.slice(), opts); + }; + yargsParser.camelCase = camelCase; + yargsParser.decamelize = decamelize; + yargsParser.looksLikeNumber = looksLikeNumber; + module2.exports = yargsParser; + } +}); + +// node_modules/ansi-regex/index.js +var require_ansi_regex = __commonJS({ + "node_modules/ansi-regex/index.js"(exports, module2) { + "use strict"; + module2.exports = ({ onlyFirst = false } = {}) => { + const pattern = [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))" + ].join("|"); + return new RegExp(pattern, onlyFirst ? void 0 : "g"); + }; + } +}); + +// node_modules/strip-ansi/index.js +var require_strip_ansi = __commonJS({ + "node_modules/strip-ansi/index.js"(exports, module2) { + "use strict"; + var ansiRegex = require_ansi_regex(); + module2.exports = (string) => typeof string === "string" ? string.replace(ansiRegex(), "") : string; + } +}); + +// node_modules/is-fullwidth-code-point/index.js +var require_is_fullwidth_code_point = __commonJS({ + "node_modules/is-fullwidth-code-point/index.js"(exports, module2) { + "use strict"; + var isFullwidthCodePoint = (codePoint) => { + if (Number.isNaN(codePoint)) { + return false; + } + if (codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141)) { + return true; + } + return false; + }; + module2.exports = isFullwidthCodePoint; + module2.exports.default = isFullwidthCodePoint; + } +}); + +// node_modules/string-width/node_modules/emoji-regex/index.js +var require_emoji_regex = __commonJS({ + "node_modules/string-width/node_modules/emoji-regex/index.js"(exports, module2) { + "use strict"; + module2.exports = function() { + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; + }; + } +}); + +// node_modules/string-width/index.js +var require_string_width = __commonJS({ + "node_modules/string-width/index.js"(exports, module2) { + "use strict"; + var stripAnsi = require_strip_ansi(); + var isFullwidthCodePoint = require_is_fullwidth_code_point(); + var emojiRegex = require_emoji_regex(); + var stringWidth = (string) => { + if (typeof string !== "string" || string.length === 0) { + return 0; + } + string = stripAnsi(string); + if (string.length === 0) { + return 0; + } + string = string.replace(emojiRegex(), " "); + let width = 0; + for (let i = 0; i < string.length; i++) { + const code = string.codePointAt(i); + if (code <= 31 || code >= 127 && code <= 159) { + continue; + } + if (code >= 768 && code <= 879) { + continue; + } + if (code > 65535) { + i++; + } + width += isFullwidthCodePoint(code) ? 2 : 1; + } + return width; + }; + module2.exports = stringWidth; + module2.exports.default = stringWidth; + } +}); + +// node_modules/ansi-styles/node_modules/color-name/index.js +var require_color_name = __commonJS({ + "node_modules/ansi-styles/node_modules/color-name/index.js"(exports, module2) { + "use strict"; + module2.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] + }; + } +}); + +// node_modules/ansi-styles/node_modules/color-convert/conversions.js +var require_conversions = __commonJS({ + "node_modules/ansi-styles/node_modules/color-convert/conversions.js"(exports, module2) { + var cssKeywords = require_color_name(); + var reverseKeywords = {}; + for (const key of Object.keys(cssKeywords)) { + reverseKeywords[cssKeywords[key]] = key; + } + var convert = { + rgb: { channels: 3, labels: "rgb" }, + hsl: { channels: 3, labels: "hsl" }, + hsv: { channels: 3, labels: "hsv" }, + hwb: { channels: 3, labels: "hwb" }, + cmyk: { channels: 4, labels: "cmyk" }, + xyz: { channels: 3, labels: "xyz" }, + lab: { channels: 3, labels: "lab" }, + lch: { channels: 3, labels: "lch" }, + hex: { channels: 1, labels: ["hex"] }, + keyword: { channels: 1, labels: ["keyword"] }, + ansi16: { channels: 1, labels: ["ansi16"] }, + ansi256: { channels: 1, labels: ["ansi256"] }, + hcg: { channels: 3, labels: ["h", "c", "g"] }, + apple: { channels: 3, labels: ["r16", "g16", "b16"] }, + gray: { channels: 1, labels: ["gray"] } + }; + module2.exports = convert; + for (const model of Object.keys(convert)) { + if (!("channels" in convert[model])) { + throw new Error("missing channels property: " + model); + } + if (!("labels" in convert[model])) { + throw new Error("missing channel labels property: " + model); + } + if (convert[model].labels.length !== convert[model].channels) { + throw new Error("channel and label counts mismatch: " + model); + } + const { channels, labels } = convert[model]; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], "channels", { value: channels }); + Object.defineProperty(convert[model], "labels", { value: labels }); + } + convert.rgb.hsl = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const min = Math.min(r, g, b); + const max = Math.max(r, g, b); + const delta = max - min; + let h; + let s; + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + h = Math.min(h * 60, 360); + if (h < 0) { + h += 360; + } + const l = (min + max) / 2; + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + return [h, s * 100, l * 100]; + }; + convert.rgb.hsv = function(rgb) { + let rdif; + let gdif; + let bdif; + let h; + let s; + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const v = Math.max(r, g, b); + const diff = v - Math.min(r, g, b); + const diffc = function(c) { + return (v - c) / 6 / diff + 1 / 2; + }; + if (diff === 0) { + h = 0; + s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + if (r === v) { + h = bdif - gdif; + } else if (g === v) { + h = 1 / 3 + rdif - bdif; + } else if (b === v) { + h = 2 / 3 + gdif - rdif; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + return [ + h * 360, + s * 100, + v * 100 + ]; + }; + convert.rgb.hwb = function(rgb) { + const r = rgb[0]; + const g = rgb[1]; + let b = rgb[2]; + const h = convert.rgb.hsl(rgb)[0]; + const w = 1 / 255 * Math.min(r, Math.min(g, b)); + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + return [h, w * 100, b * 100]; + }; + convert.rgb.cmyk = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const k = Math.min(1 - r, 1 - g, 1 - b); + const c = (1 - r - k) / (1 - k) || 0; + const m = (1 - g - k) / (1 - k) || 0; + const y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; + }; + function comparativeDistance(x, y) { + return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2; + } + convert.rgb.keyword = function(rgb) { + const reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + let currentClosestDistance = Infinity; + let currentClosestKeyword; + for (const keyword of Object.keys(cssKeywords)) { + const value = cssKeywords[keyword]; + const distance = comparativeDistance(rgb, value); + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + return currentClosestKeyword; + }; + convert.keyword.rgb = function(keyword) { + return cssKeywords[keyword]; + }; + convert.rgb.xyz = function(rgb) { + let r = rgb[0] / 255; + let g = rgb[1] / 255; + let b = rgb[2] / 255; + r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92; + g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92; + b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92; + const x = r * 0.4124 + g * 0.3576 + b * 0.1805; + const y = r * 0.2126 + g * 0.7152 + b * 0.0722; + const z = r * 0.0193 + g * 0.1192 + b * 0.9505; + return [x * 100, y * 100, z * 100]; + }; + convert.rgb.lab = function(rgb) { + const xyz = convert.rgb.xyz(rgb); + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; + }; + convert.hsl.rgb = function(hsl) { + const h = hsl[0] / 360; + const s = hsl[1] / 100; + const l = hsl[2] / 100; + let t2; + let t3; + let val; + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + const t1 = 2 * l - t2; + const rgb = [0, 0, 0]; + for (let i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + rgb[i] = val * 255; + } + return rgb; + }; + convert.hsl.hsv = function(hsl) { + const h = hsl[0]; + let s = hsl[1] / 100; + let l = hsl[2] / 100; + let smin = s; + const lmin = Math.max(l, 0.01); + l *= 2; + s *= l <= 1 ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + const v = (l + s) / 2; + const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); + return [h, sv * 100, v * 100]; + }; + convert.hsv.rgb = function(hsv) { + const h = hsv[0] / 60; + const s = hsv[1] / 100; + let v = hsv[2] / 100; + const hi = Math.floor(h) % 6; + const f = h - Math.floor(h); + const p = 255 * v * (1 - s); + const q = 255 * v * (1 - s * f); + const t = 255 * v * (1 - s * (1 - f)); + v *= 255; + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } + }; + convert.hsv.hsl = function(hsv) { + const h = hsv[0]; + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const vmin = Math.max(v, 0.01); + let sl; + let l; + l = (2 - s) * v; + const lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= lmin <= 1 ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; + }; + convert.hwb.rgb = function(hwb) { + const h = hwb[0] / 360; + let wh = hwb[1] / 100; + let bl = hwb[2] / 100; + const ratio = wh + bl; + let f; + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + const i = Math.floor(6 * h); + const v = 1 - bl; + f = 6 * h - i; + if ((i & 1) !== 0) { + f = 1 - f; + } + const n = wh + f * (v - wh); + let r; + let g; + let b; + switch (i) { + default: + case 6: + case 0: + r = v; + g = n; + b = wh; + break; + case 1: + r = n; + g = v; + b = wh; + break; + case 2: + r = wh; + g = v; + b = n; + break; + case 3: + r = wh; + g = n; + b = v; + break; + case 4: + r = n; + g = wh; + b = v; + break; + case 5: + r = v; + g = wh; + b = n; + break; + } + return [r * 255, g * 255, b * 255]; + }; + convert.cmyk.rgb = function(cmyk) { + const c = cmyk[0] / 100; + const m = cmyk[1] / 100; + const y = cmyk[2] / 100; + const k = cmyk[3] / 100; + const r = 1 - Math.min(1, c * (1 - k) + k); + const g = 1 - Math.min(1, m * (1 - k) + k); + const b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.rgb = function(xyz) { + const x = xyz[0] / 100; + const y = xyz[1] / 100; + const z = xyz[2] / 100; + let r; + let g; + let b; + r = x * 3.2406 + y * -1.5372 + z * -0.4986; + g = x * -0.9689 + y * 1.8758 + z * 0.0415; + b = x * 0.0557 + y * -0.204 + z * 1.057; + r = r > 31308e-7 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92; + g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92; + b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92; + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.lab = function(xyz) { + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; + }; + convert.lab.xyz = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let x; + let y; + let z; + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + const y2 = y ** 3; + const x2 = x ** 3; + const z2 = z ** 3; + y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787; + x *= 95.047; + y *= 100; + z *= 108.883; + return [x, y, z]; + }; + convert.lab.lch = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let h; + const hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + const c = Math.sqrt(a * a + b * b); + return [l, c, h]; + }; + convert.lch.lab = function(lch) { + const l = lch[0]; + const c = lch[1]; + const h = lch[2]; + const hr = h / 360 * 2 * Math.PI; + const a = c * Math.cos(hr); + const b = c * Math.sin(hr); + return [l, a, b]; + }; + convert.rgb.ansi16 = function(args, saturation = null) { + const [r, g, b] = args; + let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; + value = Math.round(value / 50); + if (value === 0) { + return 30; + } + let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); + if (value === 2) { + ansi += 60; + } + return ansi; + }; + convert.hsv.ansi16 = function(args) { + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); + }; + convert.rgb.ansi256 = function(args) { + const r = args[0]; + const g = args[1]; + const b = args[2]; + if (r === g && g === b) { + if (r < 8) { + return 16; + } + if (r > 248) { + return 231; + } + return Math.round((r - 8) / 247 * 24) + 232; + } + const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); + return ansi; + }; + convert.ansi16.rgb = function(args) { + let color = args % 10; + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + color = color / 10.5 * 255; + return [color, color, color]; + } + const mult = (~~(args > 50) + 1) * 0.5; + const r = (color & 1) * mult * 255; + const g = (color >> 1 & 1) * mult * 255; + const b = (color >> 2 & 1) * mult * 255; + return [r, g, b]; + }; + convert.ansi256.rgb = function(args) { + if (args >= 232) { + const c = (args - 232) * 10 + 8; + return [c, c, c]; + } + args -= 16; + let rem; + const r = Math.floor(args / 36) / 5 * 255; + const g = Math.floor((rem = args % 36) / 6) / 5 * 255; + const b = rem % 6 / 5 * 255; + return [r, g, b]; + }; + convert.rgb.hex = function(args) { + const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255); + const string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.hex.rgb = function(args) { + const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + let colorString = match[0]; + if (match[0].length === 3) { + colorString = colorString.split("").map((char) => { + return char + char; + }).join(""); + } + const integer = parseInt(colorString, 16); + const r = integer >> 16 & 255; + const g = integer >> 8 & 255; + const b = integer & 255; + return [r, g, b]; + }; + convert.rgb.hcg = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const max = Math.max(Math.max(r, g), b); + const min = Math.min(Math.min(r, g), b); + const chroma = max - min; + let grayscale; + let hue; + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + if (chroma <= 0) { + hue = 0; + } else if (max === r) { + hue = (g - b) / chroma % 6; + } else if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma; + } + hue /= 6; + hue %= 1; + return [hue * 360, chroma * 100, grayscale * 100]; + }; + convert.hsl.hcg = function(hsl) { + const s = hsl[1] / 100; + const l = hsl[2] / 100; + const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l); + let f = 0; + if (c < 1) { + f = (l - 0.5 * c) / (1 - c); + } + return [hsl[0], c * 100, f * 100]; + }; + convert.hsv.hcg = function(hsv) { + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const c = s * v; + let f = 0; + if (c < 1) { + f = (v - c) / (1 - c); + } + return [hsv[0], c * 100, f * 100]; + }; + convert.hcg.rgb = function(hcg) { + const h = hcg[0] / 360; + const c = hcg[1] / 100; + const g = hcg[2] / 100; + if (c === 0) { + return [g * 255, g * 255, g * 255]; + } + const pure = [0, 0, 0]; + const hi = h % 1 * 6; + const v = hi % 1; + const w = 1 - v; + let mg = 0; + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; + pure[1] = v; + pure[2] = 0; + break; + case 1: + pure[0] = w; + pure[1] = 1; + pure[2] = 0; + break; + case 2: + pure[0] = 0; + pure[1] = 1; + pure[2] = v; + break; + case 3: + pure[0] = 0; + pure[1] = w; + pure[2] = 1; + break; + case 4: + pure[0] = v; + pure[1] = 0; + pure[2] = 1; + break; + default: + pure[0] = 1; + pure[1] = 0; + pure[2] = w; + } + mg = (1 - c) * g; + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; + }; + convert.hcg.hsv = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + let f = 0; + if (v > 0) { + f = c / v; + } + return [hcg[0], f * 100, v * 100]; + }; + convert.hcg.hsl = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const l = g * (1 - c) + 0.5 * c; + let s = 0; + if (l > 0 && l < 0.5) { + s = c / (2 * l); + } else if (l >= 0.5 && l < 1) { + s = c / (2 * (1 - l)); + } + return [hcg[0], s * 100, l * 100]; + }; + convert.hcg.hwb = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; + }; + convert.hwb.hcg = function(hwb) { + const w = hwb[1] / 100; + const b = hwb[2] / 100; + const v = 1 - b; + const c = v - w; + let g = 0; + if (c < 1) { + g = (v - c) / (1 - c); + } + return [hwb[0], c * 100, g * 100]; + }; + convert.apple.rgb = function(apple) { + return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; + }; + convert.rgb.apple = function(rgb) { + return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; + }; + convert.gray.rgb = function(args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; + }; + convert.gray.hsl = function(args) { + return [0, 0, args[0]]; + }; + convert.gray.hsv = convert.gray.hsl; + convert.gray.hwb = function(gray) { + return [0, 100, gray[0]]; + }; + convert.gray.cmyk = function(gray) { + return [0, 0, 0, gray[0]]; + }; + convert.gray.lab = function(gray) { + return [gray[0], 0, 0]; + }; + convert.gray.hex = function(gray) { + const val = Math.round(gray[0] / 100 * 255) & 255; + const integer = (val << 16) + (val << 8) + val; + const string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.rgb.gray = function(rgb) { + const val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; + }; + } +}); + +// node_modules/ansi-styles/node_modules/color-convert/route.js +var require_route = __commonJS({ + "node_modules/ansi-styles/node_modules/color-convert/route.js"(exports, module2) { + var conversions = require_conversions(); + function buildGraph() { + const graph = {}; + const models = Object.keys(conversions); + for (let len = models.length, i = 0; i < len; i++) { + graph[models[i]] = { + distance: -1, + parent: null + }; + } + return graph; + } + function deriveBFS(fromModel) { + const graph = buildGraph(); + const queue = [fromModel]; + graph[fromModel].distance = 0; + while (queue.length) { + const current = queue.pop(); + const adjacents = Object.keys(conversions[current]); + for (let len = adjacents.length, i = 0; i < len; i++) { + const adjacent = adjacents[i]; + const node = graph[adjacent]; + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + return graph; + } + function link(from, to) { + return function(args) { + return to(from(args)); + }; + } + function wrapConversion(toModel, graph) { + const path2 = [graph[toModel].parent, toModel]; + let fn = conversions[graph[toModel].parent][toModel]; + let cur = graph[toModel].parent; + while (graph[cur].parent) { + path2.unshift(graph[cur].parent); + fn = link(conversions[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + fn.conversion = path2; + return fn; + } + module2.exports = function(fromModel) { + const graph = deriveBFS(fromModel); + const conversion = {}; + const models = Object.keys(graph); + for (let len = models.length, i = 0; i < len; i++) { + const toModel = models[i]; + const node = graph[toModel]; + if (node.parent === null) { + continue; + } + conversion[toModel] = wrapConversion(toModel, graph); + } + return conversion; + }; + } +}); + +// node_modules/ansi-styles/node_modules/color-convert/index.js +var require_color_convert = __commonJS({ + "node_modules/ansi-styles/node_modules/color-convert/index.js"(exports, module2) { + var conversions = require_conversions(); + var route = require_route(); + var convert = {}; + var models = Object.keys(conversions); + function wrapRaw(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + return fn(args); + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + function wrapRounded(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + const result = fn(args); + if (typeof result === "object") { + for (let len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + return result; + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + models.forEach((fromModel) => { + convert[fromModel] = {}; + Object.defineProperty(convert[fromModel], "channels", { value: conversions[fromModel].channels }); + Object.defineProperty(convert[fromModel], "labels", { value: conversions[fromModel].labels }); + const routes = route(fromModel); + const routeModels = Object.keys(routes); + routeModels.forEach((toModel) => { + const fn = routes[toModel]; + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); + }); + module2.exports = convert; + } +}); + +// node_modules/ansi-styles/index.js +var require_ansi_styles = __commonJS({ + "node_modules/ansi-styles/index.js"(exports, module2) { + "use strict"; + var wrapAnsi16 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\x1B[${code + offset}m`; + }; + var wrapAnsi256 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\x1B[${38 + offset};5;${code}m`; + }; + var wrapAnsi16m = (fn, offset) => (...args) => { + const rgb = fn(...args); + return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; + }; + var ansi2ansi = (n) => n; + var rgb2rgb = (r, g, b) => [r, g, b]; + var setLazyProperty = (object, property, get2) => { + Object.defineProperty(object, property, { + get: () => { + const value = get2(); + Object.defineProperty(object, property, { + value, + enumerable: true, + configurable: true + }); + return value; + }, + enumerable: true, + configurable: true + }); + }; + var colorConvert; + var makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { + if (colorConvert === void 0) { + colorConvert = require_color_convert(); + } + const offset = isBackground ? 10 : 0; + const styles = {}; + for (const [sourceSpace, suite] of Object.entries(colorConvert)) { + const name = sourceSpace === "ansi16" ? "ansi" : sourceSpace; + if (sourceSpace === targetSpace) { + styles[name] = wrap(identity, offset); + } else if (typeof suite === "object") { + styles[name] = wrap(suite[targetSpace], offset); + } + } + return styles; + }; + function assembleStyles() { + const codes = /* @__PURE__ */ new Map(); + const styles = { + modifier: { + reset: [0, 0], + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + blackBright: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + styles.color.gray = styles.color.blackBright; + styles.bgColor.bgGray = styles.bgColor.bgBlackBright; + styles.color.grey = styles.color.blackBright; + styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\x1B[${style[0]}m`, + close: `\x1B[${style[1]}m` + }; + group[styleName] = styles[styleName]; + codes.set(style[0], style[1]); + } + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + Object.defineProperty(styles, "codes", { + value: codes, + enumerable: false + }); + styles.color.close = "\x1B[39m"; + styles.bgColor.close = "\x1B[49m"; + setLazyProperty(styles.color, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, false)); + setLazyProperty(styles.color, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, false)); + setLazyProperty(styles.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, false)); + setLazyProperty(styles.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, true)); + setLazyProperty(styles.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, true)); + setLazyProperty(styles.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, true)); + return styles; + } + Object.defineProperty(module2, "exports", { + enumerable: true, + get: assembleStyles + }); + } +}); + +// node_modules/wrap-ansi/index.js +var require_wrap_ansi = __commonJS({ + "node_modules/wrap-ansi/index.js"(exports, module2) { + "use strict"; + var stringWidth = require_string_width(); + var stripAnsi = require_strip_ansi(); + var ansiStyles = require_ansi_styles(); + var ESCAPES = /* @__PURE__ */ new Set([ + "\x1B", + "\x9B" + ]); + var END_CODE = 39; + var ANSI_ESCAPE_BELL = "\x07"; + var ANSI_CSI = "["; + var ANSI_OSC = "]"; + var ANSI_SGR_TERMINATOR = "m"; + var ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`; + var wrapAnsi = (code) => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`; + var wrapAnsiHyperlink = (uri) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`; + var wordLengths = (string) => string.split(" ").map((character) => stringWidth(character)); + var wrapWord = (rows, word, columns) => { + const characters = [...word]; + let isInsideEscape = false; + let isInsideLinkEscape = false; + let visible = stringWidth(stripAnsi(rows[rows.length - 1])); + for (const [index, character] of characters.entries()) { + const characterLength = stringWidth(character); + if (visible + characterLength <= columns) { + rows[rows.length - 1] += character; + } else { + rows.push(character); + visible = 0; + } + if (ESCAPES.has(character)) { + isInsideEscape = true; + isInsideLinkEscape = characters.slice(index + 1).join("").startsWith(ANSI_ESCAPE_LINK); + } + if (isInsideEscape) { + if (isInsideLinkEscape) { + if (character === ANSI_ESCAPE_BELL) { + isInsideEscape = false; + isInsideLinkEscape = false; + } + } else if (character === ANSI_SGR_TERMINATOR) { + isInsideEscape = false; + } + continue; + } + visible += characterLength; + if (visible === columns && index < characters.length - 1) { + rows.push(""); + visible = 0; + } + } + if (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) { + rows[rows.length - 2] += rows.pop(); + } + }; + var stringVisibleTrimSpacesRight = (string) => { + const words = string.split(" "); + let last = words.length; + while (last > 0) { + if (stringWidth(words[last - 1]) > 0) { + break; + } + last--; + } + if (last === words.length) { + return string; + } + return words.slice(0, last).join(" ") + words.slice(last).join(""); + }; + var exec = (string, columns, options = {}) => { + if (options.trim !== false && string.trim() === "") { + return ""; + } + let returnValue = ""; + let escapeCode; + let escapeUrl; + const lengths = wordLengths(string); + let rows = [""]; + for (const [index, word] of string.split(" ").entries()) { + if (options.trim !== false) { + rows[rows.length - 1] = rows[rows.length - 1].trimStart(); + } + let rowLength = stringWidth(rows[rows.length - 1]); + if (index !== 0) { + if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) { + rows.push(""); + rowLength = 0; + } + if (rowLength > 0 || options.trim === false) { + rows[rows.length - 1] += " "; + rowLength++; + } + } + if (options.hard && lengths[index] > columns) { + const remainingColumns = columns - rowLength; + const breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns); + const breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns); + if (breaksStartingNextLine < breaksStartingThisLine) { + rows.push(""); + } + wrapWord(rows, word, columns); + continue; + } + if (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) { + if (options.wordWrap === false && rowLength < columns) { + wrapWord(rows, word, columns); + continue; + } + rows.push(""); + } + if (rowLength + lengths[index] > columns && options.wordWrap === false) { + wrapWord(rows, word, columns); + continue; + } + rows[rows.length - 1] += word; + } + if (options.trim !== false) { + rows = rows.map(stringVisibleTrimSpacesRight); + } + const pre = [...rows.join("\n")]; + for (const [index, character] of pre.entries()) { + returnValue += character; + if (ESCAPES.has(character)) { + const { groups } = new RegExp(`(?:\\${ANSI_CSI}(?\\d+)m|\\${ANSI_ESCAPE_LINK}(?.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join("")) || { groups: {} }; + if (groups.code !== void 0) { + const code2 = Number.parseFloat(groups.code); + escapeCode = code2 === END_CODE ? void 0 : code2; + } else if (groups.uri !== void 0) { + escapeUrl = groups.uri.length === 0 ? void 0 : groups.uri; + } + } + const code = ansiStyles.codes.get(Number(escapeCode)); + if (pre[index + 1] === "\n") { + if (escapeUrl) { + returnValue += wrapAnsiHyperlink(""); + } + if (escapeCode && code) { + returnValue += wrapAnsi(code); + } + } else if (character === "\n") { + if (escapeCode && code) { + returnValue += wrapAnsi(escapeCode); + } + if (escapeUrl) { + returnValue += wrapAnsiHyperlink(escapeUrl); + } + } + } + return returnValue; + }; + module2.exports = (string, columns, options) => { + return String(string).normalize().replace(/\r\n/g, "\n").split("\n").map((line) => exec(line, columns, options)).join("\n"); + }; + } +}); + +// node_modules/cliui/build/index.cjs +var require_build3 = __commonJS({ + "node_modules/cliui/build/index.cjs"(exports, module2) { + "use strict"; + var align = { + right: alignRight, + center: alignCenter + }; + var top = 0; + var right = 1; + var bottom = 2; + var left = 3; + var UI = class { + constructor(opts) { + var _a; + this.width = opts.width; + this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true; + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(""); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === "string") { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map((arg) => { + if (typeof arg === "string") { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === "string" && /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str2) { + const rows = str2.split("\n").map((row) => row.split(" ")); + let leftColumnWidth = 0; + rows.forEach((columns) => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + rows.forEach((columns) => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: i === 0 && columns.length > 1 ? leftColumnWidth : void 0 + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str2) { + const noAnsi = mixin.stripAnsi(str2); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach((row) => { + this.rowToString(row, lines); + }); + return lines.filter((line) => !line.hidden).map((line) => line.text).join("\n"); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str2 = ""; + rrow.forEach((col, c) => { + const { width } = row[c]; + const wrapWidth = this.negatePadding(row[c]); + let ts = col; + if (wrapWidth > mixin.stringWidth(col)) { + ts += " ".repeat(wrapWidth - mixin.stringWidth(col)); + } + if (row[c].align && row[c].align !== "left" && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + ts += " ".repeat((width || 0) - mixin.stringWidth(ts) - 1); + } + } + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str2 += " ".repeat(padding[left]); + } + str2 += addBorder(row[c], ts, "| "); + str2 += ts; + str2 += addBorder(row[c], ts, " |"); + if (padding[right]) { + str2 += " ".repeat(padding[right]); + } + if (r === 0 && lines.length > 0) { + str2 = this.renderInline(str2, lines[lines.length - 1]); + } + }); + lines.push({ + text: str2.replace(/ +$/, ""), + span: row.span + }); + }); + return lines; + } + renderInline(source, previousLine) { + const match = source.match(/^ */); + const leadingWhitespace = match ? match[0].length : 0; + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimRight()); + if (!previousLine.span) { + return source; + } + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimRight() + " ".repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + row.forEach((col, c) => { + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split("\n"); + } else { + wrapped = col.text.split("\n"); + } + if (col.border) { + wrapped.unshift("." + "-".repeat(this.negatePadding(col) + 2) + "."); + wrapped.push("'" + "-".repeat(this.negatePadding(col) + 2) + "'"); + } + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill("")); + wrapped.push(...new Array(col.padding[bottom] || 0).fill("")); + } + wrapped.forEach((str2, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0; i < c; i++) { + if (rrow[i] === void 0) { + rrow.push(""); + } + } + rrow.push(str2); + }); + }); + return rrows; + } + negatePadding(col) { + let wrapWidth = col.width || 0; + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map((col) => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + const widths = row.map((col) => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return void 0; + }); + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + return widths.map((w, i) => { + if (w === void 0) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } + }; + function addBorder(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ""; + } + if (ts.trim().length !== 0) { + return style; + } + return " "; + } + return ""; + } + function _minWidth(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; + } + function getWindowWidth() { + if (typeof process === "object" && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; + } + function alignRight(str2, width) { + str2 = str2.trim(); + const strWidth = mixin.stringWidth(str2); + if (strWidth < width) { + return " ".repeat(width - strWidth) + str2; + } + return str2; + } + function alignCenter(str2, width) { + str2 = str2.trim(); + const strWidth = mixin.stringWidth(str2); + if (strWidth >= width) { + return str2; + } + return " ".repeat(width - strWidth >> 1) + str2; + } + var mixin; + function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), + wrap: opts === null || opts === void 0 ? void 0 : opts.wrap + }); + } + var stringWidth = require_string_width(); + var stripAnsi = require_strip_ansi(); + var wrap = require_wrap_ansi(); + function ui(opts) { + return cliui(opts, { + stringWidth, + stripAnsi, + wrap + }); + } + module2.exports = ui; + } +}); + +// node_modules/escalade/sync/index.js +var require_sync = __commonJS({ + "node_modules/escalade/sync/index.js"(exports, module2) { + var { dirname, resolve } = require("path"); + var { readdirSync, statSync } = require("fs"); + module2.exports = function(start, callback) { + let dir = resolve(".", start); + let tmp, stats = statSync(dir); + if (!stats.isDirectory()) { + dir = dirname(dir); + } + while (true) { + tmp = callback(dir, readdirSync(dir)); + if (tmp) + return resolve(dir, tmp); + dir = dirname(tmp = dir); + if (tmp === dir) + break; + } + }; + } +}); + +// node_modules/get-caller-file/index.js +var require_get_caller_file = __commonJS({ + "node_modules/get-caller-file/index.js"(exports, module2) { + "use strict"; + module2.exports = function getCallerFile(position) { + if (position === void 0) { + position = 2; + } + if (position >= Error.stackTraceLimit) { + throw new TypeError("getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `" + position + "` and Error.stackTraceLimit was: `" + Error.stackTraceLimit + "`"); + } + var oldPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function(_, stack2) { + return stack2; + }; + var stack = new Error().stack; + Error.prepareStackTrace = oldPrepareStackTrace; + if (stack !== null && typeof stack === "object") { + return stack[position] ? stack[position].getFileName() : void 0; + } + }; + } +}); + +// node_modules/require-directory/index.js +var require_require_directory = __commonJS({ + "node_modules/require-directory/index.js"(exports, module2) { + "use strict"; + var fs5 = require("fs"); + var join = require("path").join; + var resolve = require("path").resolve; + var dirname = require("path").dirname; + var defaultOptions = { + extensions: ["js", "json", "coffee"], + recurse: true, + rename: function(name) { + return name; + }, + visit: function(obj) { + return obj; + } + }; + function checkFileInclusion(path2, filename, options) { + return new RegExp("\\.(" + options.extensions.join("|") + ")$", "i").test(filename) && !(options.include && options.include instanceof RegExp && !options.include.test(path2)) && !(options.include && typeof options.include === "function" && !options.include(path2, filename)) && !(options.exclude && options.exclude instanceof RegExp && options.exclude.test(path2)) && !(options.exclude && typeof options.exclude === "function" && options.exclude(path2, filename)); + } + function requireDirectory(m, path2, options) { + var retval = {}; + if (path2 && !options && typeof path2 !== "string") { + options = path2; + path2 = null; + } + options = options || {}; + for (var prop in defaultOptions) { + if (typeof options[prop] === "undefined") { + options[prop] = defaultOptions[prop]; + } + } + path2 = !path2 ? dirname(m.filename) : resolve(dirname(m.filename), path2); + fs5.readdirSync(path2).forEach(function(filename) { + var joined = join(path2, filename), files, key, obj; + if (fs5.statSync(joined).isDirectory() && options.recurse) { + files = requireDirectory(m, joined, options); + if (Object.keys(files).length) { + retval[options.rename(filename, joined, filename)] = files; + } + } else { + if (joined !== m.filename && checkFileInclusion(joined, filename, options)) { + key = filename.substring(0, filename.lastIndexOf(".")); + obj = m.require(joined); + retval[options.rename(key, joined, filename)] = options.visit(obj, joined, filename) || obj; + } + } + }); + return retval; + } + module2.exports = requireDirectory; + module2.exports.defaults = defaultOptions; + } +}); + +// node_modules/yargs/build/index.cjs +var require_build4 = __commonJS({ + "node_modules/yargs/build/index.cjs"(exports, module2) { + "use strict"; + var t = require("assert"); + var e = class extends Error { + constructor(t2) { + super(t2 || "yargs error"), this.name = "YError", Error.captureStackTrace && Error.captureStackTrace(this, e); + } + }; + var s; + var i = []; + function n(t2, o2, a2, h2) { + s = h2; + let l2 = {}; + if (Object.prototype.hasOwnProperty.call(t2, "extends")) { + if ("string" != typeof t2.extends) + return l2; + const r2 = /\.json|\..*rc$/.test(t2.extends); + let h3 = null; + if (r2) + h3 = function(t3, e2) { + return s.path.resolve(t3, e2); + }(o2, t2.extends); + else + try { + h3 = require.resolve(t2.extends); + } catch (e2) { + return t2; + } + !function(t3) { + if (i.indexOf(t3) > -1) + throw new e(`Circular extended configurations: '${t3}'.`); + }(h3), i.push(h3), l2 = r2 ? JSON.parse(s.readFileSync(h3, "utf8")) : require(t2.extends), delete t2.extends, l2 = n(l2, s.path.dirname(h3), a2, s); + } + return i = [], a2 ? r(l2, t2) : Object.assign({}, l2, t2); + } + function r(t2, e2) { + const s2 = {}; + function i2(t3) { + return t3 && "object" == typeof t3 && !Array.isArray(t3); + } + Object.assign(s2, t2); + for (const n2 of Object.keys(e2)) + i2(e2[n2]) && i2(s2[n2]) ? s2[n2] = r(t2[n2], e2[n2]) : s2[n2] = e2[n2]; + return s2; + } + function o(t2) { + const e2 = t2.replace(/\s{2,}/g, " ").split(/\s+(?![^[]*]|[^<]*>)/), s2 = /\.*[\][<>]/g, i2 = e2.shift(); + if (!i2) + throw new Error(`No command found in: ${t2}`); + const n2 = { cmd: i2.replace(s2, ""), demanded: [], optional: [] }; + return e2.forEach((t3, i3) => { + let r2 = false; + t3 = t3.replace(/\s/g, ""), /\.+[\]>]/.test(t3) && i3 === e2.length - 1 && (r2 = true), /^\[/.test(t3) ? n2.optional.push({ cmd: t3.replace(s2, "").split("|"), variadic: r2 }) : n2.demanded.push({ cmd: t3.replace(s2, "").split("|"), variadic: r2 }); + }), n2; + } + var a = ["first", "second", "third", "fourth", "fifth", "sixth"]; + function h(t2, s2, i2) { + try { + let n2 = 0; + const [r2, a2, h2] = "object" == typeof t2 ? [{ demanded: [], optional: [] }, t2, s2] : [o(`cmd ${t2}`), s2, i2], f2 = [].slice.call(a2); + for (; f2.length && void 0 === f2[f2.length - 1]; ) + f2.pop(); + const d2 = h2 || f2.length; + if (d2 < r2.demanded.length) + throw new e(`Not enough arguments provided. Expected ${r2.demanded.length} but received ${f2.length}.`); + const u2 = r2.demanded.length + r2.optional.length; + if (d2 > u2) + throw new e(`Too many arguments provided. Expected max ${u2} but received ${d2}.`); + r2.demanded.forEach((t3) => { + const e2 = l(f2.shift()); + 0 === t3.cmd.filter((t4) => t4 === e2 || "*" === t4).length && c(e2, t3.cmd, n2), n2 += 1; + }), r2.optional.forEach((t3) => { + if (0 === f2.length) + return; + const e2 = l(f2.shift()); + 0 === t3.cmd.filter((t4) => t4 === e2 || "*" === t4).length && c(e2, t3.cmd, n2), n2 += 1; + }); + } catch (t3) { + console.warn(t3.stack); + } + } + function l(t2) { + return Array.isArray(t2) ? "array" : null === t2 ? "null" : typeof t2; + } + function c(t2, s2, i2) { + throw new e(`Invalid ${a[i2] || "manyith"} argument. Expected ${s2.join(" or ")} but received ${t2}.`); + } + function f(t2) { + return !!t2 && !!t2.then && "function" == typeof t2.then; + } + function d(t2, e2, s2, i2) { + s2.assert.notStrictEqual(t2, e2, i2); + } + function u(t2, e2) { + e2.assert.strictEqual(typeof t2, "string"); + } + function p(t2) { + return Object.keys(t2); + } + function g(t2 = {}, e2 = () => true) { + const s2 = {}; + return p(t2).forEach((i2) => { + e2(i2, t2[i2]) && (s2[i2] = t2[i2]); + }), s2; + } + function m() { + return process.versions.electron && !process.defaultApp ? 0 : 1; + } + function y() { + return process.argv[m()]; + } + var b = Object.freeze({ __proto__: null, hideBin: function(t2) { + return t2.slice(m() + 1); + }, getProcessArgvBin: y }); + function v(t2, e2, s2, i2) { + if ("a" === s2 && !i2) + throw new TypeError("Private accessor was defined without a getter"); + if ("function" == typeof e2 ? t2 !== e2 || !i2 : !e2.has(t2)) + throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return "m" === s2 ? i2 : "a" === s2 ? i2.call(t2) : i2 ? i2.value : e2.get(t2); + } + function O(t2, e2, s2, i2, n2) { + if ("m" === i2) + throw new TypeError("Private method is not writable"); + if ("a" === i2 && !n2) + throw new TypeError("Private accessor was defined without a setter"); + if ("function" == typeof e2 ? t2 !== e2 || !n2 : !e2.has(t2)) + throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return "a" === i2 ? n2.call(t2, s2) : n2 ? n2.value = s2 : e2.set(t2, s2), s2; + } + var w = class { + constructor(t2) { + this.globalMiddleware = [], this.frozens = [], this.yargs = t2; + } + addMiddleware(t2, e2, s2 = true, i2 = false) { + if (h(" [boolean] [boolean] [boolean]", [t2, e2, s2], arguments.length), Array.isArray(t2)) { + for (let i3 = 0; i3 < t2.length; i3++) { + if ("function" != typeof t2[i3]) + throw Error("middleware must be a function"); + const n2 = t2[i3]; + n2.applyBeforeValidation = e2, n2.global = s2; + } + Array.prototype.push.apply(this.globalMiddleware, t2); + } else if ("function" == typeof t2) { + const n2 = t2; + n2.applyBeforeValidation = e2, n2.global = s2, n2.mutates = i2, this.globalMiddleware.push(t2); + } + return this.yargs; + } + addCoerceMiddleware(t2, e2) { + const s2 = this.yargs.getAliases(); + return this.globalMiddleware = this.globalMiddleware.filter((t3) => { + const i2 = [...s2[e2] || [], e2]; + return !t3.option || !i2.includes(t3.option); + }), t2.option = e2, this.addMiddleware(t2, true, true, true); + } + getMiddleware() { + return this.globalMiddleware; + } + freeze() { + this.frozens.push([...this.globalMiddleware]); + } + unfreeze() { + const t2 = this.frozens.pop(); + void 0 !== t2 && (this.globalMiddleware = t2); + } + reset() { + this.globalMiddleware = this.globalMiddleware.filter((t2) => t2.global); + } + }; + function C(t2, e2, s2, i2) { + return s2.reduce((t3, s3) => { + if (s3.applyBeforeValidation !== i2) + return t3; + if (s3.mutates) { + if (s3.applied) + return t3; + s3.applied = true; + } + if (f(t3)) + return t3.then((t4) => Promise.all([t4, s3(t4, e2)])).then(([t4, e3]) => Object.assign(t4, e3)); + { + const i3 = s3(t3, e2); + return f(i3) ? i3.then((e3) => Object.assign(t3, e3)) : Object.assign(t3, i3); + } + }, t2); + } + function j(t2, e2, s2 = (t3) => { + throw t3; + }) { + try { + const s3 = "function" == typeof t2 ? t2() : t2; + return f(s3) ? s3.then((t3) => e2(t3)) : e2(s3); + } catch (t3) { + return s2(t3); + } + } + var _ = /(^\*)|(^\$0)/; + var M = class { + constructor(t2, e2, s2, i2) { + this.requireCache = /* @__PURE__ */ new Set(), this.handlers = {}, this.aliasMap = {}, this.frozens = [], this.shim = i2, this.usage = t2, this.globalMiddleware = s2, this.validation = e2; + } + addDirectory(t2, e2, s2, i2) { + "boolean" != typeof (i2 = i2 || {}).recurse && (i2.recurse = false), Array.isArray(i2.extensions) || (i2.extensions = ["js"]); + const n2 = "function" == typeof i2.visit ? i2.visit : (t3) => t3; + i2.visit = (t3, e3, s3) => { + const i3 = n2(t3, e3, s3); + if (i3) { + if (this.requireCache.has(e3)) + return i3; + this.requireCache.add(e3), this.addHandler(i3); + } + return i3; + }, this.shim.requireDirectory({ require: e2, filename: s2 }, t2, i2); + } + addHandler(t2, e2, s2, i2, n2, r2) { + let a2 = []; + const h2 = function(t3) { + return t3 ? t3.map((t4) => (t4.applyBeforeValidation = false, t4)) : []; + }(n2); + if (i2 = i2 || (() => { + }), Array.isArray(t2)) + if (function(t3) { + return t3.every((t4) => "string" == typeof t4); + }(t2)) + [t2, ...a2] = t2; + else + for (const e3 of t2) + this.addHandler(e3); + else { + if (function(t3) { + return "object" == typeof t3 && !Array.isArray(t3); + }(t2)) { + let e3 = Array.isArray(t2.command) || "string" == typeof t2.command ? t2.command : this.moduleName(t2); + return t2.aliases && (e3 = [].concat(e3).concat(t2.aliases)), void this.addHandler(e3, this.extractDesc(t2), t2.builder, t2.handler, t2.middlewares, t2.deprecated); + } + if (k(s2)) + return void this.addHandler([t2].concat(a2), e2, s2.builder, s2.handler, s2.middlewares, s2.deprecated); + } + if ("string" == typeof t2) { + const n3 = o(t2); + a2 = a2.map((t3) => o(t3).cmd); + let l2 = false; + const c2 = [n3.cmd].concat(a2).filter((t3) => !_.test(t3) || (l2 = true, false)); + 0 === c2.length && l2 && c2.push("$0"), l2 && (n3.cmd = c2[0], a2 = c2.slice(1), t2 = t2.replace(_, n3.cmd)), a2.forEach((t3) => { + this.aliasMap[t3] = n3.cmd; + }), false !== e2 && this.usage.command(t2, e2, l2, a2, r2), this.handlers[n3.cmd] = { original: t2, description: e2, handler: i2, builder: s2 || {}, middlewares: h2, deprecated: r2, demanded: n3.demanded, optional: n3.optional }, l2 && (this.defaultCommand = this.handlers[n3.cmd]); + } + } + getCommandHandlers() { + return this.handlers; + } + getCommands() { + return Object.keys(this.handlers).concat(Object.keys(this.aliasMap)); + } + hasDefaultCommand() { + return !!this.defaultCommand; + } + runCommand(t2, e2, s2, i2, n2, r2) { + const o2 = this.handlers[t2] || this.handlers[this.aliasMap[t2]] || this.defaultCommand, a2 = e2.getInternalMethods().getContext(), h2 = a2.commands.slice(), l2 = !t2; + t2 && (a2.commands.push(t2), a2.fullCommands.push(o2.original)); + const c2 = this.applyBuilderUpdateUsageAndParse(l2, o2, e2, s2.aliases, h2, i2, n2, r2); + return f(c2) ? c2.then((t3) => this.applyMiddlewareAndGetResult(l2, o2, t3.innerArgv, a2, n2, t3.aliases, e2)) : this.applyMiddlewareAndGetResult(l2, o2, c2.innerArgv, a2, n2, c2.aliases, e2); + } + applyBuilderUpdateUsageAndParse(t2, e2, s2, i2, n2, r2, o2, a2) { + const h2 = e2.builder; + let l2 = s2; + if (x(h2)) { + const c2 = h2(s2.getInternalMethods().reset(i2), a2); + if (f(c2)) + return c2.then((i3) => { + var a3; + return l2 = (a3 = i3) && "function" == typeof a3.getInternalMethods ? i3 : s2, this.parseAndUpdateUsage(t2, e2, l2, n2, r2, o2); + }); + } else + (function(t3) { + return "object" == typeof t3; + })(h2) && (l2 = s2.getInternalMethods().reset(i2), Object.keys(e2.builder).forEach((t3) => { + l2.option(t3, h2[t3]); + })); + return this.parseAndUpdateUsage(t2, e2, l2, n2, r2, o2); + } + parseAndUpdateUsage(t2, e2, s2, i2, n2, r2) { + t2 && s2.getInternalMethods().getUsageInstance().unfreeze(true), this.shouldUpdateUsage(s2) && s2.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(i2, e2), e2.description); + const o2 = s2.getInternalMethods().runYargsParserAndExecuteCommands(null, void 0, true, n2, r2); + return f(o2) ? o2.then((t3) => ({ aliases: s2.parsed.aliases, innerArgv: t3 })) : { aliases: s2.parsed.aliases, innerArgv: o2 }; + } + shouldUpdateUsage(t2) { + return !t2.getInternalMethods().getUsageInstance().getUsageDisabled() && 0 === t2.getInternalMethods().getUsageInstance().getUsage().length; + } + usageFromParentCommandsCommandHandler(t2, e2) { + const s2 = _.test(e2.original) ? e2.original.replace(_, "").trim() : e2.original, i2 = t2.filter((t3) => !_.test(t3)); + return i2.push(s2), `$0 ${i2.join(" ")}`; + } + handleValidationAndGetResult(t2, e2, s2, i2, n2, r2, o2, a2) { + if (!r2.getInternalMethods().getHasOutput()) { + const e3 = r2.getInternalMethods().runValidation(n2, a2, r2.parsed.error, t2); + s2 = j(s2, (t3) => (e3(t3), t3)); + } + if (e2.handler && !r2.getInternalMethods().getHasOutput()) { + r2.getInternalMethods().setHasOutput(); + const i3 = !!r2.getOptions().configuration["populate--"]; + r2.getInternalMethods().postProcess(s2, i3, false, false), s2 = j(s2 = C(s2, r2, o2, false), (t3) => { + const s3 = e2.handler(t3); + return f(s3) ? s3.then(() => t3) : t3; + }), t2 || r2.getInternalMethods().getUsageInstance().cacheHelpMessage(), f(s2) && !r2.getInternalMethods().hasParseCallback() && s2.catch((t3) => { + try { + r2.getInternalMethods().getUsageInstance().fail(null, t3); + } catch (t4) { + } + }); + } + return t2 || (i2.commands.pop(), i2.fullCommands.pop()), s2; + } + applyMiddlewareAndGetResult(t2, e2, s2, i2, n2, r2, o2) { + let a2 = {}; + if (n2) + return s2; + o2.getInternalMethods().getHasOutput() || (a2 = this.populatePositionals(e2, s2, i2, o2)); + const h2 = this.globalMiddleware.getMiddleware().slice(0).concat(e2.middlewares), l2 = C(s2, o2, h2, true); + return f(l2) ? l2.then((s3) => this.handleValidationAndGetResult(t2, e2, s3, i2, r2, o2, h2, a2)) : this.handleValidationAndGetResult(t2, e2, l2, i2, r2, o2, h2, a2); + } + populatePositionals(t2, e2, s2, i2) { + e2._ = e2._.slice(s2.commands.length); + const n2 = t2.demanded.slice(0), r2 = t2.optional.slice(0), o2 = {}; + for (this.validation.positionalCount(n2.length, e2._.length); n2.length; ) { + const t3 = n2.shift(); + this.populatePositional(t3, e2, o2); + } + for (; r2.length; ) { + const t3 = r2.shift(); + this.populatePositional(t3, e2, o2); + } + return e2._ = s2.commands.concat(e2._.map((t3) => "" + t3)), this.postProcessPositionals(e2, o2, this.cmdToParseOptions(t2.original), i2), o2; + } + populatePositional(t2, e2, s2) { + const i2 = t2.cmd[0]; + t2.variadic ? s2[i2] = e2._.splice(0).map(String) : e2._.length && (s2[i2] = [String(e2._.shift())]); + } + cmdToParseOptions(t2) { + const e2 = { array: [], default: {}, alias: {}, demand: {} }, s2 = o(t2); + return s2.demanded.forEach((t3) => { + const [s3, ...i2] = t3.cmd; + t3.variadic && (e2.array.push(s3), e2.default[s3] = []), e2.alias[s3] = i2, e2.demand[s3] = true; + }), s2.optional.forEach((t3) => { + const [s3, ...i2] = t3.cmd; + t3.variadic && (e2.array.push(s3), e2.default[s3] = []), e2.alias[s3] = i2; + }), e2; + } + postProcessPositionals(t2, e2, s2, i2) { + const n2 = Object.assign({}, i2.getOptions()); + n2.default = Object.assign(s2.default, n2.default); + for (const t3 of Object.keys(s2.alias)) + n2.alias[t3] = (n2.alias[t3] || []).concat(s2.alias[t3]); + n2.array = n2.array.concat(s2.array), n2.config = {}; + const r2 = []; + if (Object.keys(e2).forEach((t3) => { + e2[t3].map((e3) => { + n2.configuration["unknown-options-as-args"] && (n2.key[t3] = true), r2.push(`--${t3}`), r2.push(e3); + }); + }), !r2.length) + return; + const o2 = Object.assign({}, n2.configuration, { "populate--": false }), a2 = this.shim.Parser.detailed(r2, Object.assign({}, n2, { configuration: o2 })); + if (a2.error) + i2.getInternalMethods().getUsageInstance().fail(a2.error.message, a2.error); + else { + const s3 = Object.keys(e2); + Object.keys(e2).forEach((t3) => { + s3.push(...a2.aliases[t3]); + }), Object.keys(a2.argv).forEach((n3) => { + s3.includes(n3) && (e2[n3] || (e2[n3] = a2.argv[n3]), !this.isInConfigs(i2, n3) && !this.isDefaulted(i2, n3) && Object.prototype.hasOwnProperty.call(t2, n3) && Object.prototype.hasOwnProperty.call(a2.argv, n3) && (Array.isArray(t2[n3]) || Array.isArray(a2.argv[n3])) ? t2[n3] = [].concat(t2[n3], a2.argv[n3]) : t2[n3] = a2.argv[n3]); + }); + } + } + isDefaulted(t2, e2) { + const { default: s2 } = t2.getOptions(); + return Object.prototype.hasOwnProperty.call(s2, e2) || Object.prototype.hasOwnProperty.call(s2, this.shim.Parser.camelCase(e2)); + } + isInConfigs(t2, e2) { + const { configObjects: s2 } = t2.getOptions(); + return s2.some((t3) => Object.prototype.hasOwnProperty.call(t3, e2)) || s2.some((t3) => Object.prototype.hasOwnProperty.call(t3, this.shim.Parser.camelCase(e2))); + } + runDefaultBuilderOn(t2) { + if (!this.defaultCommand) + return; + if (this.shouldUpdateUsage(t2)) { + const e3 = _.test(this.defaultCommand.original) ? this.defaultCommand.original : this.defaultCommand.original.replace(/^[^[\]<>]*/, "$0 "); + t2.getInternalMethods().getUsageInstance().usage(e3, this.defaultCommand.description); + } + const e2 = this.defaultCommand.builder; + if (x(e2)) + return e2(t2, true); + k(e2) || Object.keys(e2).forEach((s2) => { + t2.option(s2, e2[s2]); + }); + } + moduleName(t2) { + const e2 = function(t3) { + if ("undefined" == typeof require) + return null; + for (let e3, s2 = 0, i2 = Object.keys(require.cache); s2 < i2.length; s2++) + if (e3 = require.cache[i2[s2]], e3.exports === t3) + return e3; + return null; + }(t2); + if (!e2) + throw new Error(`No command name given for module: ${this.shim.inspect(t2)}`); + return this.commandFromFilename(e2.filename); + } + commandFromFilename(t2) { + return this.shim.path.basename(t2, this.shim.path.extname(t2)); + } + extractDesc({ describe: t2, description: e2, desc: s2 }) { + for (const i2 of [t2, e2, s2]) { + if ("string" == typeof i2 || false === i2) + return i2; + d(i2, true, this.shim); + } + return false; + } + freeze() { + this.frozens.push({ handlers: this.handlers, aliasMap: this.aliasMap, defaultCommand: this.defaultCommand }); + } + unfreeze() { + const t2 = this.frozens.pop(); + d(t2, void 0, this.shim), { handlers: this.handlers, aliasMap: this.aliasMap, defaultCommand: this.defaultCommand } = t2; + } + reset() { + return this.handlers = {}, this.aliasMap = {}, this.defaultCommand = void 0, this.requireCache = /* @__PURE__ */ new Set(), this; + } + }; + function k(t2) { + return "object" == typeof t2 && !!t2.builder && "function" == typeof t2.handler; + } + function x(t2) { + return "function" == typeof t2; + } + function E(t2) { + "undefined" != typeof process && [process.stdout, process.stderr].forEach((e2) => { + const s2 = e2; + s2._handle && s2.isTTY && "function" == typeof s2._handle.setBlocking && s2._handle.setBlocking(t2); + }); + } + function A(t2) { + return "boolean" == typeof t2; + } + function P(t2, s2) { + const i2 = s2.y18n.__, n2 = {}, r2 = []; + n2.failFn = function(t3) { + r2.push(t3); + }; + let o2 = null, a2 = null, h2 = true; + n2.showHelpOnFail = function(e2 = true, s3) { + const [i3, r3] = "string" == typeof e2 ? [true, e2] : [e2, s3]; + return t2.getInternalMethods().isGlobalContext() && (a2 = r3), o2 = r3, h2 = i3, n2; + }; + let l2 = false; + n2.fail = function(s3, i3) { + const c3 = t2.getInternalMethods().getLoggerInstance(); + if (!r2.length) { + if (t2.getExitProcess() && E(true), !l2) { + l2 = true, h2 && (t2.showHelp("error"), c3.error()), (s3 || i3) && c3.error(s3 || i3); + const e2 = o2 || a2; + e2 && ((s3 || i3) && c3.error(""), c3.error(e2)); + } + if (i3 = i3 || new e(s3), t2.getExitProcess()) + return t2.exit(1); + if (t2.getInternalMethods().hasParseCallback()) + return t2.exit(1, i3); + throw i3; + } + for (let t3 = r2.length - 1; t3 >= 0; --t3) { + const e2 = r2[t3]; + if (A(e2)) { + if (i3) + throw i3; + if (s3) + throw Error(s3); + } else + e2(s3, i3, n2); + } + }; + let c2 = [], f2 = false; + n2.usage = (t3, e2) => null === t3 ? (f2 = true, c2 = [], n2) : (f2 = false, c2.push([t3, e2 || ""]), n2), n2.getUsage = () => c2, n2.getUsageDisabled = () => f2, n2.getPositionalGroupName = () => i2("Positionals:"); + let d2 = []; + n2.example = (t3, e2) => { + d2.push([t3, e2 || ""]); + }; + let u2 = []; + n2.command = function(t3, e2, s3, i3, n3 = false) { + s3 && (u2 = u2.map((t4) => (t4[2] = false, t4))), u2.push([t3, e2 || "", s3, i3, n3]); + }, n2.getCommands = () => u2; + let p2 = {}; + n2.describe = function(t3, e2) { + Array.isArray(t3) ? t3.forEach((t4) => { + n2.describe(t4, e2); + }) : "object" == typeof t3 ? Object.keys(t3).forEach((e3) => { + n2.describe(e3, t3[e3]); + }) : p2[t3] = e2; + }, n2.getDescriptions = () => p2; + let m2 = []; + n2.epilog = (t3) => { + m2.push(t3); + }; + let y2, b2 = false; + function v2() { + return b2 || (y2 = function() { + const t3 = 80; + return s2.process.stdColumns ? Math.min(t3, s2.process.stdColumns) : t3; + }(), b2 = true), y2; + } + n2.wrap = (t3) => { + b2 = true, y2 = t3; + }; + const O2 = "__yargsString__:"; + function w2(t3, e2, i3) { + let n3 = 0; + return Array.isArray(t3) || (t3 = Object.values(t3).map((t4) => [t4])), t3.forEach((t4) => { + n3 = Math.max(s2.stringWidth(i3 ? `${i3} ${I(t4[0])}` : I(t4[0])) + $(t4[0]), n3); + }), e2 && (n3 = Math.min(n3, parseInt((0.5 * e2).toString(), 10))), n3; + } + let C2; + function j2(e2) { + return t2.getOptions().hiddenOptions.indexOf(e2) < 0 || t2.parsed.argv[t2.getOptions().showHiddenOpt]; + } + function _2(t3, e2) { + let s3 = `[${i2("default:")} `; + if (void 0 === t3 && !e2) + return null; + if (e2) + s3 += e2; + else + switch (typeof t3) { + case "string": + s3 += `"${t3}"`; + break; + case "object": + s3 += JSON.stringify(t3); + break; + default: + s3 += t3; + } + return `${s3}]`; + } + n2.deferY18nLookup = (t3) => O2 + t3, n2.help = function() { + if (C2) + return C2; + !function() { + const e3 = t2.getDemandedOptions(), s3 = t2.getOptions(); + (Object.keys(s3.alias) || []).forEach((i3) => { + s3.alias[i3].forEach((r4) => { + p2[r4] && n2.describe(i3, p2[r4]), r4 in e3 && t2.demandOption(i3, e3[r4]), s3.boolean.includes(r4) && t2.boolean(i3), s3.count.includes(r4) && t2.count(i3), s3.string.includes(r4) && t2.string(i3), s3.normalize.includes(r4) && t2.normalize(i3), s3.array.includes(r4) && t2.array(i3), s3.number.includes(r4) && t2.number(i3); + }); + }); + }(); + const e2 = t2.customScriptName ? t2.$0 : s2.path.basename(t2.$0), r3 = t2.getDemandedOptions(), o3 = t2.getDemandedCommands(), a3 = t2.getDeprecatedOptions(), h3 = t2.getGroups(), l3 = t2.getOptions(); + let g2 = []; + g2 = g2.concat(Object.keys(p2)), g2 = g2.concat(Object.keys(r3)), g2 = g2.concat(Object.keys(o3)), g2 = g2.concat(Object.keys(l3.default)), g2 = g2.filter(j2), g2 = Object.keys(g2.reduce((t3, e3) => ("_" !== e3 && (t3[e3] = true), t3), {})); + const y3 = v2(), b3 = s2.cliui({ width: y3, wrap: !!y3 }); + if (!f2) { + if (c2.length) + c2.forEach((t3) => { + b3.div({ text: `${t3[0].replace(/\$0/g, e2)}` }), t3[1] && b3.div({ text: `${t3[1]}`, padding: [1, 0, 0, 0] }); + }), b3.div(); + else if (u2.length) { + let t3 = null; + t3 = o3._ ? `${e2} <${i2("command")}> +` : `${e2} [${i2("command")}] +`, b3.div(`${t3}`); + } + } + if (u2.length > 1 || 1 === u2.length && !u2[0][2]) { + b3.div(i2("Commands:")); + const s3 = t2.getInternalMethods().getContext(), n3 = s3.commands.length ? `${s3.commands.join(" ")} ` : ""; + true === t2.getInternalMethods().getParserConfiguration()["sort-commands"] && (u2 = u2.sort((t3, e3) => t3[0].localeCompare(e3[0]))); + const r4 = e2 ? `${e2} ` : ""; + u2.forEach((t3) => { + const s4 = `${r4}${n3}${t3[0].replace(/^\$0 ?/, "")}`; + b3.span({ text: s4, padding: [0, 2, 0, 2], width: w2(u2, y3, `${e2}${n3}`) + 4 }, { text: t3[1] }); + const o4 = []; + t3[2] && o4.push(`[${i2("default")}]`), t3[3] && t3[3].length && o4.push(`[${i2("aliases:")} ${t3[3].join(", ")}]`), t3[4] && ("string" == typeof t3[4] ? o4.push(`[${i2("deprecated: %s", t3[4])}]`) : o4.push(`[${i2("deprecated")}]`)), o4.length ? b3.div({ text: o4.join(" "), padding: [0, 0, 0, 2], align: "right" }) : b3.div(); + }), b3.div(); + } + const M3 = (Object.keys(l3.alias) || []).concat(Object.keys(t2.parsed.newAliases) || []); + g2 = g2.filter((e3) => !t2.parsed.newAliases[e3] && M3.every((t3) => -1 === (l3.alias[t3] || []).indexOf(e3))); + const k3 = i2("Options:"); + h3[k3] || (h3[k3] = []), function(t3, e3, s3, i3) { + let n3 = [], r4 = null; + Object.keys(s3).forEach((t4) => { + n3 = n3.concat(s3[t4]); + }), t3.forEach((t4) => { + r4 = [t4].concat(e3[t4]), r4.some((t5) => -1 !== n3.indexOf(t5)) || s3[i3].push(t4); + }); + }(g2, l3.alias, h3, k3); + const x2 = (t3) => /^--/.test(I(t3)), E2 = Object.keys(h3).filter((t3) => h3[t3].length > 0).map((t3) => ({ groupName: t3, normalizedKeys: h3[t3].filter(j2).map((t4) => { + if (M3.includes(t4)) + return t4; + for (let e3, s3 = 0; void 0 !== (e3 = M3[s3]); s3++) + if ((l3.alias[e3] || []).includes(t4)) + return e3; + return t4; + }) })).filter(({ normalizedKeys: t3 }) => t3.length > 0).map(({ groupName: t3, normalizedKeys: e3 }) => { + const s3 = e3.reduce((e4, s4) => (e4[s4] = [s4].concat(l3.alias[s4] || []).map((e5) => t3 === n2.getPositionalGroupName() ? e5 : (/^[0-9]$/.test(e5) ? l3.boolean.includes(s4) ? "-" : "--" : e5.length > 1 ? "--" : "-") + e5).sort((t4, e5) => x2(t4) === x2(e5) ? 0 : x2(t4) ? 1 : -1).join(", "), e4), {}); + return { groupName: t3, normalizedKeys: e3, switches: s3 }; + }); + if (E2.filter(({ groupName: t3 }) => t3 !== n2.getPositionalGroupName()).some(({ normalizedKeys: t3, switches: e3 }) => !t3.every((t4) => x2(e3[t4]))) && E2.filter(({ groupName: t3 }) => t3 !== n2.getPositionalGroupName()).forEach(({ normalizedKeys: t3, switches: e3 }) => { + t3.forEach((t4) => { + var s3, i3; + x2(e3[t4]) && (e3[t4] = (s3 = e3[t4], i3 = "-x, ".length, S(s3) ? { text: s3.text, indentation: s3.indentation + i3 } : { text: s3, indentation: i3 })); + }); + }), E2.forEach(({ groupName: t3, normalizedKeys: e3, switches: s3 }) => { + b3.div(t3), e3.forEach((t4) => { + const e4 = s3[t4]; + let o4 = p2[t4] || "", h4 = null; + o4.includes(O2) && (o4 = i2(o4.substring(O2.length))), l3.boolean.includes(t4) && (h4 = `[${i2("boolean")}]`), l3.count.includes(t4) && (h4 = `[${i2("count")}]`), l3.string.includes(t4) && (h4 = `[${i2("string")}]`), l3.normalize.includes(t4) && (h4 = `[${i2("string")}]`), l3.array.includes(t4) && (h4 = `[${i2("array")}]`), l3.number.includes(t4) && (h4 = `[${i2("number")}]`); + const c3 = [t4 in a3 ? (f3 = a3[t4], "string" == typeof f3 ? `[${i2("deprecated: %s", f3)}]` : `[${i2("deprecated")}]`) : null, h4, t4 in r3 ? `[${i2("required")}]` : null, l3.choices && l3.choices[t4] ? `[${i2("choices:")} ${n2.stringifiedValues(l3.choices[t4])}]` : null, _2(l3.default[t4], l3.defaultDescription[t4])].filter(Boolean).join(" "); + var f3; + b3.span({ text: I(e4), padding: [0, 2, 0, 2 + $(e4)], width: w2(s3, y3) + 4 }, o4), c3 ? b3.div({ text: c3, padding: [0, 0, 0, 2], align: "right" }) : b3.div(); + }), b3.div(); + }), d2.length && (b3.div(i2("Examples:")), d2.forEach((t3) => { + t3[0] = t3[0].replace(/\$0/g, e2); + }), d2.forEach((t3) => { + "" === t3[1] ? b3.div({ text: t3[0], padding: [0, 2, 0, 2] }) : b3.div({ text: t3[0], padding: [0, 2, 0, 2], width: w2(d2, y3) + 4 }, { text: t3[1] }); + }), b3.div()), m2.length > 0) { + const t3 = m2.map((t4) => t4.replace(/\$0/g, e2)).join("\n"); + b3.div(`${t3} +`); + } + return b3.toString().replace(/\s*$/, ""); + }, n2.cacheHelpMessage = function() { + C2 = this.help(); + }, n2.clearCachedHelpMessage = function() { + C2 = void 0; + }, n2.hasCachedHelpMessage = function() { + return !!C2; + }, n2.showHelp = (e2) => { + const s3 = t2.getInternalMethods().getLoggerInstance(); + e2 || (e2 = "error"); + ("function" == typeof e2 ? e2 : s3[e2])(n2.help()); + }, n2.functionDescription = (t3) => ["(", t3.name ? s2.Parser.decamelize(t3.name, "-") : i2("generated-value"), ")"].join(""), n2.stringifiedValues = function(t3, e2) { + let s3 = ""; + const i3 = e2 || ", ", n3 = [].concat(t3); + return t3 && n3.length ? (n3.forEach((t4) => { + s3.length && (s3 += i3), s3 += JSON.stringify(t4); + }), s3) : s3; + }; + let M2 = null; + n2.version = (t3) => { + M2 = t3; + }, n2.showVersion = (e2) => { + const s3 = t2.getInternalMethods().getLoggerInstance(); + e2 || (e2 = "error"); + ("function" == typeof e2 ? e2 : s3[e2])(M2); + }, n2.reset = function(t3) { + return o2 = null, l2 = false, c2 = [], f2 = false, m2 = [], d2 = [], u2 = [], p2 = g(p2, (e2) => !t3[e2]), n2; + }; + const k2 = []; + return n2.freeze = function() { + k2.push({ failMessage: o2, failureOutput: l2, usages: c2, usageDisabled: f2, epilogs: m2, examples: d2, commands: u2, descriptions: p2 }); + }, n2.unfreeze = function(t3 = false) { + const e2 = k2.pop(); + e2 && (t3 ? (p2 = { ...e2.descriptions, ...p2 }, u2 = [...e2.commands, ...u2], c2 = [...e2.usages, ...c2], d2 = [...e2.examples, ...d2], m2 = [...e2.epilogs, ...m2]) : { failMessage: o2, failureOutput: l2, usages: c2, usageDisabled: f2, epilogs: m2, examples: d2, commands: u2, descriptions: p2 } = e2); + }, n2; + } + function S(t2) { + return "object" == typeof t2; + } + function $(t2) { + return S(t2) ? t2.indentation : 0; + } + function I(t2) { + return S(t2) ? t2.text : t2; + } + var D = class { + constructor(t2, e2, s2, i2) { + var n2, r2, o2; + this.yargs = t2, this.usage = e2, this.command = s2, this.shim = i2, this.completionKey = "get-yargs-completions", this.aliases = null, this.customCompletionFunction = null, this.indexAfterLastReset = 0, this.zshShell = null !== (o2 = (null === (n2 = this.shim.getEnv("SHELL")) || void 0 === n2 ? void 0 : n2.includes("zsh")) || (null === (r2 = this.shim.getEnv("ZSH_NAME")) || void 0 === r2 ? void 0 : r2.includes("zsh"))) && void 0 !== o2 && o2; + } + defaultCompletion(t2, e2, s2, i2) { + const n2 = this.command.getCommandHandlers(); + for (let e3 = 0, s3 = t2.length; e3 < s3; ++e3) + if (n2[t2[e3]] && n2[t2[e3]].builder) { + const s4 = n2[t2[e3]].builder; + if (x(s4)) { + this.indexAfterLastReset = e3 + 1; + const t3 = this.yargs.getInternalMethods().reset(); + return s4(t3, true), t3.argv; + } + } + const r2 = []; + this.commandCompletions(r2, t2, s2), this.optionCompletions(r2, t2, e2, s2), this.choicesFromOptionsCompletions(r2, t2, e2, s2), this.choicesFromPositionalsCompletions(r2, t2, e2, s2), i2(null, r2); + } + commandCompletions(t2, e2, s2) { + const i2 = this.yargs.getInternalMethods().getContext().commands; + s2.match(/^-/) || i2[i2.length - 1] === s2 || this.previousArgHasChoices(e2) || this.usage.getCommands().forEach((s3) => { + const i3 = o(s3[0]).cmd; + if (-1 === e2.indexOf(i3)) + if (this.zshShell) { + const e3 = s3[1] || ""; + t2.push(i3.replace(/:/g, "\\:") + ":" + e3); + } else + t2.push(i3); + }); + } + optionCompletions(t2, e2, s2, i2) { + if ((i2.match(/^-/) || "" === i2 && 0 === t2.length) && !this.previousArgHasChoices(e2)) { + const s3 = this.yargs.getOptions(), n2 = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; + Object.keys(s3.key).forEach((r2) => { + const o2 = !!s3.configuration["boolean-negation"] && s3.boolean.includes(r2); + n2.includes(r2) || s3.hiddenOptions.includes(r2) || this.argsContainKey(e2, r2, o2) || (this.completeOptionKey(r2, t2, i2), o2 && s3.default[r2] && this.completeOptionKey(`no-${r2}`, t2, i2)); + }); + } + } + choicesFromOptionsCompletions(t2, e2, s2, i2) { + if (this.previousArgHasChoices(e2)) { + const s3 = this.getPreviousArgChoices(e2); + s3 && s3.length > 0 && t2.push(...s3.map((t3) => t3.replace(/:/g, "\\:"))); + } + } + choicesFromPositionalsCompletions(t2, e2, s2, i2) { + if ("" === i2 && t2.length > 0 && this.previousArgHasChoices(e2)) + return; + const n2 = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || [], r2 = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length + 1), o2 = n2[s2._.length - r2 - 1]; + if (!o2) + return; + const a2 = this.yargs.getOptions().choices[o2] || []; + for (const e3 of a2) + e3.startsWith(i2) && t2.push(e3.replace(/:/g, "\\:")); + } + getPreviousArgChoices(t2) { + if (t2.length < 1) + return; + let e2 = t2[t2.length - 1], s2 = ""; + if (!e2.startsWith("-") && t2.length > 1 && (s2 = e2, e2 = t2[t2.length - 2]), !e2.startsWith("-")) + return; + const i2 = e2.replace(/^-+/, ""), n2 = this.yargs.getOptions(), r2 = [i2, ...this.yargs.getAliases()[i2] || []]; + let o2; + for (const t3 of r2) + if (Object.prototype.hasOwnProperty.call(n2.key, t3) && Array.isArray(n2.choices[t3])) { + o2 = n2.choices[t3]; + break; + } + return o2 ? o2.filter((t3) => !s2 || t3.startsWith(s2)) : void 0; + } + previousArgHasChoices(t2) { + const e2 = this.getPreviousArgChoices(t2); + return void 0 !== e2 && e2.length > 0; + } + argsContainKey(t2, e2, s2) { + const i2 = (e3) => -1 !== t2.indexOf((/^[^0-9]$/.test(e3) ? "-" : "--") + e3); + if (i2(e2)) + return true; + if (s2 && i2(`no-${e2}`)) + return true; + if (this.aliases) { + for (const t3 of this.aliases[e2]) + if (i2(t3)) + return true; + } + return false; + } + completeOptionKey(t2, e2, s2) { + const i2 = this.usage.getDescriptions(), n2 = !/^--/.test(s2) && ((t3) => /^[^0-9]$/.test(t3))(t2) ? "-" : "--"; + if (this.zshShell) { + const s3 = i2[t2] || ""; + e2.push(n2 + `${t2.replace(/:/g, "\\:")}:${s3.replace("__yargsString__:", "")}`); + } else + e2.push(n2 + t2); + } + customCompletion(t2, e2, s2, i2) { + if (d(this.customCompletionFunction, null, this.shim), this.customCompletionFunction.length < 3) { + const t3 = this.customCompletionFunction(s2, e2); + return f(t3) ? t3.then((t4) => { + this.shim.process.nextTick(() => { + i2(null, t4); + }); + }).catch((t4) => { + this.shim.process.nextTick(() => { + i2(t4, void 0); + }); + }) : i2(null, t3); + } + return function(t3) { + return t3.length > 3; + }(this.customCompletionFunction) ? this.customCompletionFunction(s2, e2, (n2 = i2) => this.defaultCompletion(t2, e2, s2, n2), (t3) => { + i2(null, t3); + }) : this.customCompletionFunction(s2, e2, (t3) => { + i2(null, t3); + }); + } + getCompletion(t2, e2) { + const s2 = t2.length ? t2[t2.length - 1] : "", i2 = this.yargs.parse(t2, true), n2 = this.customCompletionFunction ? (i3) => this.customCompletion(t2, i3, s2, e2) : (i3) => this.defaultCompletion(t2, i3, s2, e2); + return f(i2) ? i2.then(n2) : n2(i2); + } + generateCompletionScript(t2, e2) { + let s2 = this.zshShell ? `#compdef {{app_name}} +###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local reply + local si=$IFS + IFS=$' +' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) + IFS=$si + _describe 'values' reply +} +compdef _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +` : '###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc\n# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n local cur_word args type_list\n\n cur_word="${COMP_WORDS[COMP_CWORD]}"\n args=("${COMP_WORDS[@]}")\n\n # ask yargs to generate completions.\n type_list=$({{app_path}} --get-yargs-completions "${args[@]}")\n\n COMPREPLY=( $(compgen -W "${type_list}" -- ${cur_word}) )\n\n # if no match was found, fall back to filename completion\n if [ ${#COMPREPLY[@]} -eq 0 ]; then\n COMPREPLY=()\n fi\n\n return 0\n}\ncomplete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n'; + const i2 = this.shim.path.basename(t2); + return t2.match(/\.js$/) && (t2 = `./${t2}`), s2 = s2.replace(/{{app_name}}/g, i2), s2 = s2.replace(/{{completion_command}}/g, e2), s2.replace(/{{app_path}}/g, t2); + } + registerFunction(t2) { + this.customCompletionFunction = t2; + } + setParsed(t2) { + this.aliases = t2.aliases; + } + }; + function N(t2, e2) { + if (0 === t2.length) + return e2.length; + if (0 === e2.length) + return t2.length; + const s2 = []; + let i2, n2; + for (i2 = 0; i2 <= e2.length; i2++) + s2[i2] = [i2]; + for (n2 = 0; n2 <= t2.length; n2++) + s2[0][n2] = n2; + for (i2 = 1; i2 <= e2.length; i2++) + for (n2 = 1; n2 <= t2.length; n2++) + e2.charAt(i2 - 1) === t2.charAt(n2 - 1) ? s2[i2][n2] = s2[i2 - 1][n2 - 1] : i2 > 1 && n2 > 1 && e2.charAt(i2 - 2) === t2.charAt(n2 - 1) && e2.charAt(i2 - 1) === t2.charAt(n2 - 2) ? s2[i2][n2] = s2[i2 - 2][n2 - 2] + 1 : s2[i2][n2] = Math.min(s2[i2 - 1][n2 - 1] + 1, Math.min(s2[i2][n2 - 1] + 1, s2[i2 - 1][n2] + 1)); + return s2[e2.length][t2.length]; + } + var H = ["$0", "--", "_"]; + var z; + var q; + var W; + var F; + var U; + var L; + var V; + var G; + var R; + var T; + var K; + var B; + var Y; + var J; + var Z; + var X; + var Q; + var tt; + var et; + var st; + var it; + var nt; + var rt; + var ot; + var at; + var ht; + var lt; + var ct; + var ft; + var dt; + var ut; + var pt; + var gt; + var mt; + var yt = Symbol("copyDoubleDash"); + var bt = Symbol("copyDoubleDash"); + var vt = Symbol("deleteFromParserHintObject"); + var Ot = Symbol("emitWarning"); + var wt = Symbol("freeze"); + var Ct = Symbol("getDollarZero"); + var jt = Symbol("getParserConfiguration"); + var _t = Symbol("guessLocale"); + var Mt = Symbol("guessVersion"); + var kt = Symbol("parsePositionalNumbers"); + var xt = Symbol("pkgUp"); + var Et = Symbol("populateParserHintArray"); + var At = Symbol("populateParserHintSingleValueDictionary"); + var Pt = Symbol("populateParserHintArrayDictionary"); + var St = Symbol("populateParserHintDictionary"); + var $t = Symbol("sanitizeKey"); + var It = Symbol("setKey"); + var Dt = Symbol("unfreeze"); + var Nt = Symbol("validateAsync"); + var Ht = Symbol("getCommandInstance"); + var zt = Symbol("getContext"); + var qt = Symbol("getHasOutput"); + var Wt = Symbol("getLoggerInstance"); + var Ft = Symbol("getParseContext"); + var Ut = Symbol("getUsageInstance"); + var Lt = Symbol("getValidationInstance"); + var Vt = Symbol("hasParseCallback"); + var Gt = Symbol("isGlobalContext"); + var Rt = Symbol("postProcess"); + var Tt = Symbol("rebase"); + var Kt = Symbol("reset"); + var Bt = Symbol("runYargsParserAndExecuteCommands"); + var Yt = Symbol("runValidation"); + var Jt = Symbol("setHasOutput"); + var Zt = Symbol("kTrackManuallySetKeys"); + var Xt = class { + constructor(t2 = [], e2, s2, i2) { + this.customScriptName = false, this.parsed = false, z.set(this, void 0), q.set(this, void 0), W.set(this, { commands: [], fullCommands: [] }), F.set(this, null), U.set(this, null), L.set(this, "show-hidden"), V.set(this, null), G.set(this, true), R.set(this, {}), T.set(this, true), K.set(this, []), B.set(this, void 0), Y.set(this, {}), J.set(this, false), Z.set(this, null), X.set(this, true), Q.set(this, void 0), tt.set(this, ""), et.set(this, void 0), st.set(this, void 0), it.set(this, {}), nt.set(this, null), rt.set(this, null), ot.set(this, {}), at.set(this, {}), ht.set(this, void 0), lt.set(this, false), ct.set(this, void 0), ft.set(this, false), dt.set(this, false), ut.set(this, false), pt.set(this, void 0), gt.set(this, null), mt.set(this, void 0), O(this, ct, i2, "f"), O(this, ht, t2, "f"), O(this, q, e2, "f"), O(this, st, s2, "f"), O(this, B, new w(this), "f"), this.$0 = this[Ct](), this[Kt](), O(this, z, v(this, z, "f"), "f"), O(this, pt, v(this, pt, "f"), "f"), O(this, mt, v(this, mt, "f"), "f"), O(this, et, v(this, et, "f"), "f"), v(this, et, "f").showHiddenOpt = v(this, L, "f"), O(this, Q, this[bt](), "f"); + } + addHelpOpt(t2, e2) { + return h("[string|boolean] [string]", [t2, e2], arguments.length), v(this, Z, "f") && (this[vt](v(this, Z, "f")), O(this, Z, null, "f")), false === t2 && void 0 === e2 || (O(this, Z, "string" == typeof t2 ? t2 : "help", "f"), this.boolean(v(this, Z, "f")), this.describe(v(this, Z, "f"), e2 || v(this, pt, "f").deferY18nLookup("Show help"))), this; + } + help(t2, e2) { + return this.addHelpOpt(t2, e2); + } + addShowHiddenOpt(t2, e2) { + if (h("[string|boolean] [string]", [t2, e2], arguments.length), false === t2 && void 0 === e2) + return this; + const s2 = "string" == typeof t2 ? t2 : v(this, L, "f"); + return this.boolean(s2), this.describe(s2, e2 || v(this, pt, "f").deferY18nLookup("Show hidden options")), v(this, et, "f").showHiddenOpt = s2, this; + } + showHidden(t2, e2) { + return this.addShowHiddenOpt(t2, e2); + } + alias(t2, e2) { + return h(" [string|array]", [t2, e2], arguments.length), this[Pt](this.alias.bind(this), "alias", t2, e2), this; + } + array(t2) { + return h("", [t2], arguments.length), this[Et]("array", t2), this[Zt](t2), this; + } + boolean(t2) { + return h("", [t2], arguments.length), this[Et]("boolean", t2), this[Zt](t2), this; + } + check(t2, e2) { + return h(" [boolean]", [t2, e2], arguments.length), this.middleware((e3, s2) => j(() => t2(e3, s2.getOptions()), (s3) => (s3 ? ("string" == typeof s3 || s3 instanceof Error) && v(this, pt, "f").fail(s3.toString(), s3) : v(this, pt, "f").fail(v(this, ct, "f").y18n.__("Argument check failed: %s", t2.toString())), e3), (t3) => (v(this, pt, "f").fail(t3.message ? t3.message : t3.toString(), t3), e3)), false, e2), this; + } + choices(t2, e2) { + return h(" [string|array]", [t2, e2], arguments.length), this[Pt](this.choices.bind(this), "choices", t2, e2), this; + } + coerce(t2, s2) { + if (h(" [function]", [t2, s2], arguments.length), Array.isArray(t2)) { + if (!s2) + throw new e("coerce callback must be provided"); + for (const e2 of t2) + this.coerce(e2, s2); + return this; + } + if ("object" == typeof t2) { + for (const e2 of Object.keys(t2)) + this.coerce(e2, t2[e2]); + return this; + } + if (!s2) + throw new e("coerce callback must be provided"); + return v(this, et, "f").key[t2] = true, v(this, B, "f").addCoerceMiddleware((i2, n2) => { + let r2; + return Object.prototype.hasOwnProperty.call(i2, t2) ? j(() => (r2 = n2.getAliases(), s2(i2[t2])), (e2) => { + i2[t2] = e2; + const s3 = n2.getInternalMethods().getParserConfiguration()["strip-aliased"]; + if (r2[t2] && true !== s3) + for (const s4 of r2[t2]) + i2[s4] = e2; + return i2; + }, (t3) => { + throw new e(t3.message); + }) : i2; + }, t2), this; + } + conflicts(t2, e2) { + return h(" [string|array]", [t2, e2], arguments.length), v(this, mt, "f").conflicts(t2, e2), this; + } + config(t2 = "config", e2, s2) { + return h("[object|string] [string|function] [function]", [t2, e2, s2], arguments.length), "object" != typeof t2 || Array.isArray(t2) ? ("function" == typeof e2 && (s2 = e2, e2 = void 0), this.describe(t2, e2 || v(this, pt, "f").deferY18nLookup("Path to JSON config file")), (Array.isArray(t2) ? t2 : [t2]).forEach((t3) => { + v(this, et, "f").config[t3] = s2 || true; + }), this) : (t2 = n(t2, v(this, q, "f"), this[jt]()["deep-merge-config"] || false, v(this, ct, "f")), v(this, et, "f").configObjects = (v(this, et, "f").configObjects || []).concat(t2), this); + } + completion(t2, e2, s2) { + return h("[string] [string|boolean|function] [function]", [t2, e2, s2], arguments.length), "function" == typeof e2 && (s2 = e2, e2 = void 0), O(this, U, t2 || v(this, U, "f") || "completion", "f"), e2 || false === e2 || (e2 = "generate completion script"), this.command(v(this, U, "f"), e2), s2 && v(this, F, "f").registerFunction(s2), this; + } + command(t2, e2, s2, i2, n2, r2) { + return h(" [string|boolean] [function|object] [function] [array] [boolean|string]", [t2, e2, s2, i2, n2, r2], arguments.length), v(this, z, "f").addHandler(t2, e2, s2, i2, n2, r2), this; + } + commands(t2, e2, s2, i2, n2, r2) { + return this.command(t2, e2, s2, i2, n2, r2); + } + commandDir(t2, e2) { + h(" [object]", [t2, e2], arguments.length); + const s2 = v(this, st, "f") || v(this, ct, "f").require; + return v(this, z, "f").addDirectory(t2, s2, v(this, ct, "f").getCallerFile(), e2), this; + } + count(t2) { + return h("", [t2], arguments.length), this[Et]("count", t2), this[Zt](t2), this; + } + default(t2, e2, s2) { + return h(" [*] [string]", [t2, e2, s2], arguments.length), s2 && (u(t2, v(this, ct, "f")), v(this, et, "f").defaultDescription[t2] = s2), "function" == typeof e2 && (u(t2, v(this, ct, "f")), v(this, et, "f").defaultDescription[t2] || (v(this, et, "f").defaultDescription[t2] = v(this, pt, "f").functionDescription(e2)), e2 = e2.call()), this[At](this.default.bind(this), "default", t2, e2), this; + } + defaults(t2, e2, s2) { + return this.default(t2, e2, s2); + } + demandCommand(t2 = 1, e2, s2, i2) { + return h("[number] [number|string] [string|null|undefined] [string|null|undefined]", [t2, e2, s2, i2], arguments.length), "number" != typeof e2 && (s2 = e2, e2 = 1 / 0), this.global("_", false), v(this, et, "f").demandedCommands._ = { min: t2, max: e2, minMsg: s2, maxMsg: i2 }, this; + } + demand(t2, e2, s2) { + return Array.isArray(e2) ? (e2.forEach((t3) => { + d(s2, true, v(this, ct, "f")), this.demandOption(t3, s2); + }), e2 = 1 / 0) : "number" != typeof e2 && (s2 = e2, e2 = 1 / 0), "number" == typeof t2 ? (d(s2, true, v(this, ct, "f")), this.demandCommand(t2, e2, s2, s2)) : Array.isArray(t2) ? t2.forEach((t3) => { + d(s2, true, v(this, ct, "f")), this.demandOption(t3, s2); + }) : "string" == typeof s2 ? this.demandOption(t2, s2) : true !== s2 && void 0 !== s2 || this.demandOption(t2), this; + } + demandOption(t2, e2) { + return h(" [string]", [t2, e2], arguments.length), this[At](this.demandOption.bind(this), "demandedOptions", t2, e2), this; + } + deprecateOption(t2, e2) { + return h(" [string|boolean]", [t2, e2], arguments.length), v(this, et, "f").deprecatedOptions[t2] = e2, this; + } + describe(t2, e2) { + return h(" [string]", [t2, e2], arguments.length), this[It](t2, true), v(this, pt, "f").describe(t2, e2), this; + } + detectLocale(t2) { + return h("", [t2], arguments.length), O(this, G, t2, "f"), this; + } + env(t2) { + return h("[string|boolean]", [t2], arguments.length), false === t2 ? delete v(this, et, "f").envPrefix : v(this, et, "f").envPrefix = t2 || "", this; + } + epilogue(t2) { + return h("", [t2], arguments.length), v(this, pt, "f").epilog(t2), this; + } + epilog(t2) { + return this.epilogue(t2); + } + example(t2, e2) { + return h(" [string]", [t2, e2], arguments.length), Array.isArray(t2) ? t2.forEach((t3) => this.example(...t3)) : v(this, pt, "f").example(t2, e2), this; + } + exit(t2, e2) { + O(this, J, true, "f"), O(this, V, e2, "f"), v(this, T, "f") && v(this, ct, "f").process.exit(t2); + } + exitProcess(t2 = true) { + return h("[boolean]", [t2], arguments.length), O(this, T, t2, "f"), this; + } + fail(t2) { + if (h("", [t2], arguments.length), "boolean" == typeof t2 && false !== t2) + throw new e("Invalid first argument. Expected function or boolean 'false'"); + return v(this, pt, "f").failFn(t2), this; + } + getAliases() { + return this.parsed ? this.parsed.aliases : {}; + } + async getCompletion(t2, e2) { + return h(" [function]", [t2, e2], arguments.length), e2 ? v(this, F, "f").getCompletion(t2, e2) : new Promise((e3, s2) => { + v(this, F, "f").getCompletion(t2, (t3, i2) => { + t3 ? s2(t3) : e3(i2); + }); + }); + } + getDemandedOptions() { + return h([], 0), v(this, et, "f").demandedOptions; + } + getDemandedCommands() { + return h([], 0), v(this, et, "f").demandedCommands; + } + getDeprecatedOptions() { + return h([], 0), v(this, et, "f").deprecatedOptions; + } + getDetectLocale() { + return v(this, G, "f"); + } + getExitProcess() { + return v(this, T, "f"); + } + getGroups() { + return Object.assign({}, v(this, Y, "f"), v(this, at, "f")); + } + getHelp() { + if (O(this, J, true, "f"), !v(this, pt, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const t3 = this[Bt](v(this, ht, "f"), void 0, void 0, 0, true); + if (f(t3)) + return t3.then(() => v(this, pt, "f").help()); + } + const t2 = v(this, z, "f").runDefaultBuilderOn(this); + if (f(t2)) + return t2.then(() => v(this, pt, "f").help()); + } + return Promise.resolve(v(this, pt, "f").help()); + } + getOptions() { + return v(this, et, "f"); + } + getStrict() { + return v(this, ft, "f"); + } + getStrictCommands() { + return v(this, dt, "f"); + } + getStrictOptions() { + return v(this, ut, "f"); + } + global(t2, e2) { + return h(" [boolean]", [t2, e2], arguments.length), t2 = [].concat(t2), false !== e2 ? v(this, et, "f").local = v(this, et, "f").local.filter((e3) => -1 === t2.indexOf(e3)) : t2.forEach((t3) => { + v(this, et, "f").local.includes(t3) || v(this, et, "f").local.push(t3); + }), this; + } + group(t2, e2) { + h(" ", [t2, e2], arguments.length); + const s2 = v(this, at, "f")[e2] || v(this, Y, "f")[e2]; + v(this, at, "f")[e2] && delete v(this, at, "f")[e2]; + const i2 = {}; + return v(this, Y, "f")[e2] = (s2 || []).concat(t2).filter((t3) => !i2[t3] && (i2[t3] = true)), this; + } + hide(t2) { + return h("", [t2], arguments.length), v(this, et, "f").hiddenOptions.push(t2), this; + } + implies(t2, e2) { + return h(" [number|string|array]", [t2, e2], arguments.length), v(this, mt, "f").implies(t2, e2), this; + } + locale(t2) { + return h("[string]", [t2], arguments.length), void 0 === t2 ? (this[_t](), v(this, ct, "f").y18n.getLocale()) : (O(this, G, false, "f"), v(this, ct, "f").y18n.setLocale(t2), this); + } + middleware(t2, e2, s2) { + return v(this, B, "f").addMiddleware(t2, !!e2, s2); + } + nargs(t2, e2) { + return h(" [number]", [t2, e2], arguments.length), this[At](this.nargs.bind(this), "narg", t2, e2), this; + } + normalize(t2) { + return h("", [t2], arguments.length), this[Et]("normalize", t2), this; + } + number(t2) { + return h("", [t2], arguments.length), this[Et]("number", t2), this[Zt](t2), this; + } + option(t2, e2) { + if (h(" [object]", [t2, e2], arguments.length), "object" == typeof t2) + Object.keys(t2).forEach((e3) => { + this.options(e3, t2[e3]); + }); + else { + "object" != typeof e2 && (e2 = {}), this[Zt](t2), !v(this, gt, "f") || "version" !== t2 && "version" !== (null == e2 ? void 0 : e2.alias) || this[Ot](['"version" is a reserved word.', "Please do one of the following:", '- Disable version with `yargs.version(false)` if using "version" as an option', "- Use the built-in `yargs.version` method instead (if applicable)", "- Use a different option key", "https://yargs.js.org/docs/#api-reference-version"].join("\n"), void 0, "versionWarning"), v(this, et, "f").key[t2] = true, e2.alias && this.alias(t2, e2.alias); + const s2 = e2.deprecate || e2.deprecated; + s2 && this.deprecateOption(t2, s2); + const i2 = e2.demand || e2.required || e2.require; + i2 && this.demand(t2, i2), e2.demandOption && this.demandOption(t2, "string" == typeof e2.demandOption ? e2.demandOption : void 0), e2.conflicts && this.conflicts(t2, e2.conflicts), "default" in e2 && this.default(t2, e2.default), void 0 !== e2.implies && this.implies(t2, e2.implies), void 0 !== e2.nargs && this.nargs(t2, e2.nargs), e2.config && this.config(t2, e2.configParser), e2.normalize && this.normalize(t2), e2.choices && this.choices(t2, e2.choices), e2.coerce && this.coerce(t2, e2.coerce), e2.group && this.group(t2, e2.group), (e2.boolean || "boolean" === e2.type) && (this.boolean(t2), e2.alias && this.boolean(e2.alias)), (e2.array || "array" === e2.type) && (this.array(t2), e2.alias && this.array(e2.alias)), (e2.number || "number" === e2.type) && (this.number(t2), e2.alias && this.number(e2.alias)), (e2.string || "string" === e2.type) && (this.string(t2), e2.alias && this.string(e2.alias)), (e2.count || "count" === e2.type) && this.count(t2), "boolean" == typeof e2.global && this.global(t2, e2.global), e2.defaultDescription && (v(this, et, "f").defaultDescription[t2] = e2.defaultDescription), e2.skipValidation && this.skipValidation(t2); + const n2 = e2.describe || e2.description || e2.desc; + this.describe(t2, n2), e2.hidden && this.hide(t2), e2.requiresArg && this.requiresArg(t2); + } + return this; + } + options(t2, e2) { + return this.option(t2, e2); + } + parse(t2, e2, s2) { + h("[string|array] [function|boolean|object] [function]", [t2, e2, s2], arguments.length), this[wt](), void 0 === t2 && (t2 = v(this, ht, "f")), "object" == typeof e2 && (O(this, rt, e2, "f"), e2 = s2), "function" == typeof e2 && (O(this, nt, e2, "f"), e2 = false), e2 || O(this, ht, t2, "f"), v(this, nt, "f") && O(this, T, false, "f"); + const i2 = this[Bt](t2, !!e2), n2 = this.parsed; + return v(this, F, "f").setParsed(this.parsed), f(i2) ? i2.then((t3) => (v(this, nt, "f") && v(this, nt, "f").call(this, v(this, V, "f"), t3, v(this, tt, "f")), t3)).catch((t3) => { + throw v(this, nt, "f") && v(this, nt, "f")(t3, this.parsed.argv, v(this, tt, "f")), t3; + }).finally(() => { + this[Dt](), this.parsed = n2; + }) : (v(this, nt, "f") && v(this, nt, "f").call(this, v(this, V, "f"), i2, v(this, tt, "f")), this[Dt](), this.parsed = n2, i2); + } + parseAsync(t2, e2, s2) { + const i2 = this.parse(t2, e2, s2); + return f(i2) ? i2 : Promise.resolve(i2); + } + parseSync(t2, s2, i2) { + const n2 = this.parse(t2, s2, i2); + if (f(n2)) + throw new e(".parseSync() must not be used with asynchronous builders, handlers, or middleware"); + return n2; + } + parserConfiguration(t2) { + return h("", [t2], arguments.length), O(this, it, t2, "f"), this; + } + pkgConf(t2, e2) { + h(" [string]", [t2, e2], arguments.length); + let s2 = null; + const i2 = this[xt](e2 || v(this, q, "f")); + return i2[t2] && "object" == typeof i2[t2] && (s2 = n(i2[t2], e2 || v(this, q, "f"), this[jt]()["deep-merge-config"] || false, v(this, ct, "f")), v(this, et, "f").configObjects = (v(this, et, "f").configObjects || []).concat(s2)), this; + } + positional(t2, e2) { + h(" ", [t2, e2], arguments.length); + const s2 = ["default", "defaultDescription", "implies", "normalize", "choices", "conflicts", "coerce", "type", "describe", "desc", "description", "alias"]; + e2 = g(e2, (t3, e3) => !("type" === t3 && !["string", "number", "boolean"].includes(e3)) && s2.includes(t3)); + const i2 = v(this, W, "f").fullCommands[v(this, W, "f").fullCommands.length - 1], n2 = i2 ? v(this, z, "f").cmdToParseOptions(i2) : { array: [], alias: {}, default: {}, demand: {} }; + return p(n2).forEach((s3) => { + const i3 = n2[s3]; + Array.isArray(i3) ? -1 !== i3.indexOf(t2) && (e2[s3] = true) : i3[t2] && !(s3 in e2) && (e2[s3] = i3[t2]); + }), this.group(t2, v(this, pt, "f").getPositionalGroupName()), this.option(t2, e2); + } + recommendCommands(t2 = true) { + return h("[boolean]", [t2], arguments.length), O(this, lt, t2, "f"), this; + } + required(t2, e2, s2) { + return this.demand(t2, e2, s2); + } + require(t2, e2, s2) { + return this.demand(t2, e2, s2); + } + requiresArg(t2) { + return h(" [number]", [t2], arguments.length), "string" == typeof t2 && v(this, et, "f").narg[t2] || this[At](this.requiresArg.bind(this), "narg", t2, NaN), this; + } + showCompletionScript(t2, e2) { + return h("[string] [string]", [t2, e2], arguments.length), t2 = t2 || this.$0, v(this, Q, "f").log(v(this, F, "f").generateCompletionScript(t2, e2 || v(this, U, "f") || "completion")), this; + } + showHelp(t2) { + if (h("[string|function]", [t2], arguments.length), O(this, J, true, "f"), !v(this, pt, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const e3 = this[Bt](v(this, ht, "f"), void 0, void 0, 0, true); + if (f(e3)) + return e3.then(() => { + v(this, pt, "f").showHelp(t2); + }), this; + } + const e2 = v(this, z, "f").runDefaultBuilderOn(this); + if (f(e2)) + return e2.then(() => { + v(this, pt, "f").showHelp(t2); + }), this; + } + return v(this, pt, "f").showHelp(t2), this; + } + scriptName(t2) { + return this.customScriptName = true, this.$0 = t2, this; + } + showHelpOnFail(t2, e2) { + return h("[boolean|string] [string]", [t2, e2], arguments.length), v(this, pt, "f").showHelpOnFail(t2, e2), this; + } + showVersion(t2) { + return h("[string|function]", [t2], arguments.length), v(this, pt, "f").showVersion(t2), this; + } + skipValidation(t2) { + return h("", [t2], arguments.length), this[Et]("skipValidation", t2), this; + } + strict(t2) { + return h("[boolean]", [t2], arguments.length), O(this, ft, false !== t2, "f"), this; + } + strictCommands(t2) { + return h("[boolean]", [t2], arguments.length), O(this, dt, false !== t2, "f"), this; + } + strictOptions(t2) { + return h("[boolean]", [t2], arguments.length), O(this, ut, false !== t2, "f"), this; + } + string(t2) { + return h("", [t2], arguments.length), this[Et]("string", t2), this[Zt](t2), this; + } + terminalWidth() { + return h([], 0), v(this, ct, "f").process.stdColumns; + } + updateLocale(t2) { + return this.updateStrings(t2); + } + updateStrings(t2) { + return h("", [t2], arguments.length), O(this, G, false, "f"), v(this, ct, "f").y18n.updateLocale(t2), this; + } + usage(t2, s2, i2, n2) { + if (h(" [string|boolean] [function|object] [function]", [t2, s2, i2, n2], arguments.length), void 0 !== s2) { + if (d(t2, null, v(this, ct, "f")), (t2 || "").match(/^\$0( |$)/)) + return this.command(t2, s2, i2, n2); + throw new e(".usage() description must start with $0 if being used as alias for .command()"); + } + return v(this, pt, "f").usage(t2), this; + } + version(t2, e2, s2) { + const i2 = "version"; + if (h("[boolean|string] [string] [string]", [t2, e2, s2], arguments.length), v(this, gt, "f") && (this[vt](v(this, gt, "f")), v(this, pt, "f").version(void 0), O(this, gt, null, "f")), 0 === arguments.length) + s2 = this[Mt](), t2 = i2; + else if (1 === arguments.length) { + if (false === t2) + return this; + s2 = t2, t2 = i2; + } else + 2 === arguments.length && (s2 = e2, e2 = void 0); + return O(this, gt, "string" == typeof t2 ? t2 : i2, "f"), e2 = e2 || v(this, pt, "f").deferY18nLookup("Show version number"), v(this, pt, "f").version(s2 || void 0), this.boolean(v(this, gt, "f")), this.describe(v(this, gt, "f"), e2), this; + } + wrap(t2) { + return h("", [t2], arguments.length), v(this, pt, "f").wrap(t2), this; + } + [(z = /* @__PURE__ */ new WeakMap(), q = /* @__PURE__ */ new WeakMap(), W = /* @__PURE__ */ new WeakMap(), F = /* @__PURE__ */ new WeakMap(), U = /* @__PURE__ */ new WeakMap(), L = /* @__PURE__ */ new WeakMap(), V = /* @__PURE__ */ new WeakMap(), G = /* @__PURE__ */ new WeakMap(), R = /* @__PURE__ */ new WeakMap(), T = /* @__PURE__ */ new WeakMap(), K = /* @__PURE__ */ new WeakMap(), B = /* @__PURE__ */ new WeakMap(), Y = /* @__PURE__ */ new WeakMap(), J = /* @__PURE__ */ new WeakMap(), Z = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakMap(), Q = /* @__PURE__ */ new WeakMap(), tt = /* @__PURE__ */ new WeakMap(), et = /* @__PURE__ */ new WeakMap(), st = /* @__PURE__ */ new WeakMap(), it = /* @__PURE__ */ new WeakMap(), nt = /* @__PURE__ */ new WeakMap(), rt = /* @__PURE__ */ new WeakMap(), ot = /* @__PURE__ */ new WeakMap(), at = /* @__PURE__ */ new WeakMap(), ht = /* @__PURE__ */ new WeakMap(), lt = /* @__PURE__ */ new WeakMap(), ct = /* @__PURE__ */ new WeakMap(), ft = /* @__PURE__ */ new WeakMap(), dt = /* @__PURE__ */ new WeakMap(), ut = /* @__PURE__ */ new WeakMap(), pt = /* @__PURE__ */ new WeakMap(), gt = /* @__PURE__ */ new WeakMap(), mt = /* @__PURE__ */ new WeakMap(), yt)](t2) { + if (!t2._ || !t2["--"]) + return t2; + t2._.push.apply(t2._, t2["--"]); + try { + delete t2["--"]; + } catch (t3) { + } + return t2; + } + [bt]() { + return { log: (...t2) => { + this[Vt]() || console.log(...t2), O(this, J, true, "f"), v(this, tt, "f").length && O(this, tt, v(this, tt, "f") + "\n", "f"), O(this, tt, v(this, tt, "f") + t2.join(" "), "f"); + }, error: (...t2) => { + this[Vt]() || console.error(...t2), O(this, J, true, "f"), v(this, tt, "f").length && O(this, tt, v(this, tt, "f") + "\n", "f"), O(this, tt, v(this, tt, "f") + t2.join(" "), "f"); + } }; + } + [vt](t2) { + p(v(this, et, "f")).forEach((e2) => { + if ("configObjects" === e2) + return; + const s2 = v(this, et, "f")[e2]; + Array.isArray(s2) ? s2.includes(t2) && s2.splice(s2.indexOf(t2), 1) : "object" == typeof s2 && delete s2[t2]; + }), delete v(this, pt, "f").getDescriptions()[t2]; + } + [Ot](t2, e2, s2) { + v(this, R, "f")[s2] || (v(this, ct, "f").process.emitWarning(t2, e2), v(this, R, "f")[s2] = true); + } + [wt]() { + v(this, K, "f").push({ options: v(this, et, "f"), configObjects: v(this, et, "f").configObjects.slice(0), exitProcess: v(this, T, "f"), groups: v(this, Y, "f"), strict: v(this, ft, "f"), strictCommands: v(this, dt, "f"), strictOptions: v(this, ut, "f"), completionCommand: v(this, U, "f"), output: v(this, tt, "f"), exitError: v(this, V, "f"), hasOutput: v(this, J, "f"), parsed: this.parsed, parseFn: v(this, nt, "f"), parseContext: v(this, rt, "f") }), v(this, pt, "f").freeze(), v(this, mt, "f").freeze(), v(this, z, "f").freeze(), v(this, B, "f").freeze(); + } + [Ct]() { + let t2, e2 = ""; + return t2 = /\b(node|iojs|electron)(\.exe)?$/.test(v(this, ct, "f").process.argv()[0]) ? v(this, ct, "f").process.argv().slice(1, 2) : v(this, ct, "f").process.argv().slice(0, 1), e2 = t2.map((t3) => { + const e3 = this[Tt](v(this, q, "f"), t3); + return t3.match(/^(\/|([a-zA-Z]:)?\\)/) && e3.length < t3.length ? e3 : t3; + }).join(" ").trim(), v(this, ct, "f").getEnv("_") && v(this, ct, "f").getProcessArgvBin() === v(this, ct, "f").getEnv("_") && (e2 = v(this, ct, "f").getEnv("_").replace(`${v(this, ct, "f").path.dirname(v(this, ct, "f").process.execPath())}/`, "")), e2; + } + [jt]() { + return v(this, it, "f"); + } + [_t]() { + if (!v(this, G, "f")) + return; + const t2 = v(this, ct, "f").getEnv("LC_ALL") || v(this, ct, "f").getEnv("LC_MESSAGES") || v(this, ct, "f").getEnv("LANG") || v(this, ct, "f").getEnv("LANGUAGE") || "en_US"; + this.locale(t2.replace(/[.:].*/, "")); + } + [Mt]() { + return this[xt]().version || "unknown"; + } + [kt](t2) { + const e2 = t2["--"] ? t2["--"] : t2._; + for (let t3, s2 = 0; void 0 !== (t3 = e2[s2]); s2++) + v(this, ct, "f").Parser.looksLikeNumber(t3) && Number.isSafeInteger(Math.floor(parseFloat(`${t3}`))) && (e2[s2] = Number(t3)); + return t2; + } + [xt](t2) { + const e2 = t2 || "*"; + if (v(this, ot, "f")[e2]) + return v(this, ot, "f")[e2]; + let s2 = {}; + try { + let e3 = t2 || v(this, ct, "f").mainFilename; + !t2 && v(this, ct, "f").path.extname(e3) && (e3 = v(this, ct, "f").path.dirname(e3)); + const i2 = v(this, ct, "f").findUp(e3, (t3, e4) => e4.includes("package.json") ? "package.json" : void 0); + d(i2, void 0, v(this, ct, "f")), s2 = JSON.parse(v(this, ct, "f").readFileSync(i2, "utf8")); + } catch (t3) { + } + return v(this, ot, "f")[e2] = s2 || {}, v(this, ot, "f")[e2]; + } + [Et](t2, e2) { + (e2 = [].concat(e2)).forEach((e3) => { + e3 = this[$t](e3), v(this, et, "f")[t2].push(e3); + }); + } + [At](t2, e2, s2, i2) { + this[St](t2, e2, s2, i2, (t3, e3, s3) => { + v(this, et, "f")[t3][e3] = s3; + }); + } + [Pt](t2, e2, s2, i2) { + this[St](t2, e2, s2, i2, (t3, e3, s3) => { + v(this, et, "f")[t3][e3] = (v(this, et, "f")[t3][e3] || []).concat(s3); + }); + } + [St](t2, e2, s2, i2, n2) { + if (Array.isArray(s2)) + s2.forEach((e3) => { + t2(e3, i2); + }); + else if (((t3) => "object" == typeof t3)(s2)) + for (const e3 of p(s2)) + t2(e3, s2[e3]); + else + n2(e2, this[$t](s2), i2); + } + [$t](t2) { + return "__proto__" === t2 ? "___proto___" : t2; + } + [It](t2, e2) { + return this[At](this[It].bind(this), "key", t2, e2), this; + } + [Dt]() { + var t2, e2, s2, i2, n2, r2, o2, a2, h2, l2, c2, f2; + const u2 = v(this, K, "f").pop(); + let p2; + d(u2, void 0, v(this, ct, "f")), t2 = this, e2 = this, s2 = this, i2 = this, n2 = this, r2 = this, o2 = this, a2 = this, h2 = this, l2 = this, c2 = this, f2 = this, { options: { set value(e3) { + O(t2, et, e3, "f"); + } }.value, configObjects: p2, exitProcess: { set value(t3) { + O(e2, T, t3, "f"); + } }.value, groups: { set value(t3) { + O(s2, Y, t3, "f"); + } }.value, output: { set value(t3) { + O(i2, tt, t3, "f"); + } }.value, exitError: { set value(t3) { + O(n2, V, t3, "f"); + } }.value, hasOutput: { set value(t3) { + O(r2, J, t3, "f"); + } }.value, parsed: this.parsed, strict: { set value(t3) { + O(o2, ft, t3, "f"); + } }.value, strictCommands: { set value(t3) { + O(a2, dt, t3, "f"); + } }.value, strictOptions: { set value(t3) { + O(h2, ut, t3, "f"); + } }.value, completionCommand: { set value(t3) { + O(l2, U, t3, "f"); + } }.value, parseFn: { set value(t3) { + O(c2, nt, t3, "f"); + } }.value, parseContext: { set value(t3) { + O(f2, rt, t3, "f"); + } }.value } = u2, v(this, et, "f").configObjects = p2, v(this, pt, "f").unfreeze(), v(this, mt, "f").unfreeze(), v(this, z, "f").unfreeze(), v(this, B, "f").unfreeze(); + } + [Nt](t2, e2) { + return j(e2, (e3) => (t2(e3), e3)); + } + getInternalMethods() { + return { getCommandInstance: this[Ht].bind(this), getContext: this[zt].bind(this), getHasOutput: this[qt].bind(this), getLoggerInstance: this[Wt].bind(this), getParseContext: this[Ft].bind(this), getParserConfiguration: this[jt].bind(this), getUsageInstance: this[Ut].bind(this), getValidationInstance: this[Lt].bind(this), hasParseCallback: this[Vt].bind(this), isGlobalContext: this[Gt].bind(this), postProcess: this[Rt].bind(this), reset: this[Kt].bind(this), runValidation: this[Yt].bind(this), runYargsParserAndExecuteCommands: this[Bt].bind(this), setHasOutput: this[Jt].bind(this) }; + } + [Ht]() { + return v(this, z, "f"); + } + [zt]() { + return v(this, W, "f"); + } + [qt]() { + return v(this, J, "f"); + } + [Wt]() { + return v(this, Q, "f"); + } + [Ft]() { + return v(this, rt, "f") || {}; + } + [Ut]() { + return v(this, pt, "f"); + } + [Lt]() { + return v(this, mt, "f"); + } + [Vt]() { + return !!v(this, nt, "f"); + } + [Gt]() { + return v(this, X, "f"); + } + [Rt](t2, e2, s2, i2) { + if (s2) + return t2; + if (f(t2)) + return t2; + e2 || (t2 = this[yt](t2)); + return (this[jt]()["parse-positional-numbers"] || void 0 === this[jt]()["parse-positional-numbers"]) && (t2 = this[kt](t2)), i2 && (t2 = C(t2, this, v(this, B, "f").getMiddleware(), false)), t2; + } + [Kt](t2 = {}) { + O(this, et, v(this, et, "f") || {}, "f"); + const e2 = {}; + e2.local = v(this, et, "f").local || [], e2.configObjects = v(this, et, "f").configObjects || []; + const s2 = {}; + e2.local.forEach((e3) => { + s2[e3] = true, (t2[e3] || []).forEach((t3) => { + s2[t3] = true; + }); + }), Object.assign(v(this, at, "f"), Object.keys(v(this, Y, "f")).reduce((t3, e3) => { + const i2 = v(this, Y, "f")[e3].filter((t4) => !(t4 in s2)); + return i2.length > 0 && (t3[e3] = i2), t3; + }, {})), O(this, Y, {}, "f"); + return ["array", "boolean", "string", "skipValidation", "count", "normalize", "number", "hiddenOptions"].forEach((t3) => { + e2[t3] = (v(this, et, "f")[t3] || []).filter((t4) => !s2[t4]); + }), ["narg", "key", "alias", "default", "defaultDescription", "config", "choices", "demandedOptions", "demandedCommands", "deprecatedOptions"].forEach((t3) => { + e2[t3] = g(v(this, et, "f")[t3], (t4) => !s2[t4]); + }), e2.envPrefix = v(this, et, "f").envPrefix, O(this, et, e2, "f"), O(this, pt, v(this, pt, "f") ? v(this, pt, "f").reset(s2) : P(this, v(this, ct, "f")), "f"), O(this, mt, v(this, mt, "f") ? v(this, mt, "f").reset(s2) : function(t3, e3, s3) { + const i2 = s3.y18n.__, n2 = s3.y18n.__n, r2 = { nonOptionCount: function(s4) { + const i3 = t3.getDemandedCommands(), r3 = s4._.length + (s4["--"] ? s4["--"].length : 0) - t3.getInternalMethods().getContext().commands.length; + i3._ && (r3 < i3._.min || r3 > i3._.max) && (r3 < i3._.min ? void 0 !== i3._.minMsg ? e3.fail(i3._.minMsg ? i3._.minMsg.replace(/\$0/g, r3.toString()).replace(/\$1/, i3._.min.toString()) : null) : e3.fail(n2("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", r3, r3.toString(), i3._.min.toString())) : r3 > i3._.max && (void 0 !== i3._.maxMsg ? e3.fail(i3._.maxMsg ? i3._.maxMsg.replace(/\$0/g, r3.toString()).replace(/\$1/, i3._.max.toString()) : null) : e3.fail(n2("Too many non-option arguments: got %s, maximum of %s", "Too many non-option arguments: got %s, maximum of %s", r3, r3.toString(), i3._.max.toString())))); + }, positionalCount: function(t4, s4) { + s4 < t4 && e3.fail(n2("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", s4, s4 + "", t4 + "")); + }, requiredArguments: function(t4, s4) { + let i3 = null; + for (const e4 of Object.keys(s4)) + Object.prototype.hasOwnProperty.call(t4, e4) && void 0 !== t4[e4] || (i3 = i3 || {}, i3[e4] = s4[e4]); + if (i3) { + const t5 = []; + for (const e4 of Object.keys(i3)) { + const s6 = i3[e4]; + s6 && t5.indexOf(s6) < 0 && t5.push(s6); + } + const s5 = t5.length ? ` +${t5.join("\n")}` : ""; + e3.fail(n2("Missing required argument: %s", "Missing required arguments: %s", Object.keys(i3).length, Object.keys(i3).join(", ") + s5)); + } + }, unknownArguments: function(s4, i3, o3, a3, h2 = true) { + var l3; + const c3 = t3.getInternalMethods().getCommandInstance().getCommands(), f2 = [], d2 = t3.getInternalMethods().getContext(); + if (Object.keys(s4).forEach((e4) => { + H.includes(e4) || Object.prototype.hasOwnProperty.call(o3, e4) || Object.prototype.hasOwnProperty.call(t3.getInternalMethods().getParseContext(), e4) || r2.isValidAndSomeAliasIsNotNew(e4, i3) || f2.push(e4); + }), h2 && (d2.commands.length > 0 || c3.length > 0 || a3) && s4._.slice(d2.commands.length).forEach((t4) => { + c3.includes("" + t4) || f2.push("" + t4); + }), h2) { + const e4 = (null === (l3 = t3.getDemandedCommands()._) || void 0 === l3 ? void 0 : l3.max) || 0, i4 = d2.commands.length + e4; + i4 < s4._.length && s4._.slice(i4).forEach((t4) => { + t4 = String(t4), d2.commands.includes(t4) || f2.includes(t4) || f2.push(t4); + }); + } + f2.length && e3.fail(n2("Unknown argument: %s", "Unknown arguments: %s", f2.length, f2.map((t4) => t4.trim() ? t4 : `"${t4}"`).join(", "))); + }, unknownCommands: function(s4) { + const i3 = t3.getInternalMethods().getCommandInstance().getCommands(), r3 = [], o3 = t3.getInternalMethods().getContext(); + return (o3.commands.length > 0 || i3.length > 0) && s4._.slice(o3.commands.length).forEach((t4) => { + i3.includes("" + t4) || r3.push("" + t4); + }), r3.length > 0 && (e3.fail(n2("Unknown command: %s", "Unknown commands: %s", r3.length, r3.join(", "))), true); + }, isValidAndSomeAliasIsNotNew: function(e4, s4) { + if (!Object.prototype.hasOwnProperty.call(s4, e4)) + return false; + const i3 = t3.parsed.newAliases; + return [e4, ...s4[e4]].some((t4) => !Object.prototype.hasOwnProperty.call(i3, t4) || !i3[e4]); + }, limitedChoices: function(s4) { + const n3 = t3.getOptions(), r3 = {}; + if (!Object.keys(n3.choices).length) + return; + Object.keys(s4).forEach((t4) => { + -1 === H.indexOf(t4) && Object.prototype.hasOwnProperty.call(n3.choices, t4) && [].concat(s4[t4]).forEach((e4) => { + -1 === n3.choices[t4].indexOf(e4) && void 0 !== e4 && (r3[t4] = (r3[t4] || []).concat(e4)); + }); + }); + const o3 = Object.keys(r3); + if (!o3.length) + return; + let a3 = i2("Invalid values:"); + o3.forEach((t4) => { + a3 += ` + ${i2("Argument: %s, Given: %s, Choices: %s", t4, e3.stringifiedValues(r3[t4]), e3.stringifiedValues(n3.choices[t4]))}`; + }), e3.fail(a3); + } }; + let o2 = {}; + function a2(t4, e4) { + const s4 = Number(e4); + return "number" == typeof (e4 = isNaN(s4) ? e4 : s4) ? e4 = t4._.length >= e4 : e4.match(/^--no-.+/) ? (e4 = e4.match(/^--no-(.+)/)[1], e4 = !Object.prototype.hasOwnProperty.call(t4, e4)) : e4 = Object.prototype.hasOwnProperty.call(t4, e4), e4; + } + r2.implies = function(e4, i3) { + h(" [array|number|string]", [e4, i3], arguments.length), "object" == typeof e4 ? Object.keys(e4).forEach((t4) => { + r2.implies(t4, e4[t4]); + }) : (t3.global(e4), o2[e4] || (o2[e4] = []), Array.isArray(i3) ? i3.forEach((t4) => r2.implies(e4, t4)) : (d(i3, void 0, s3), o2[e4].push(i3))); + }, r2.getImplied = function() { + return o2; + }, r2.implications = function(t4) { + const s4 = []; + if (Object.keys(o2).forEach((e4) => { + const i3 = e4; + (o2[e4] || []).forEach((e5) => { + let n3 = i3; + const r3 = e5; + n3 = a2(t4, n3), e5 = a2(t4, e5), n3 && !e5 && s4.push(` ${i3} -> ${r3}`); + }); + }), s4.length) { + let t5 = `${i2("Implications failed:")} +`; + s4.forEach((e4) => { + t5 += e4; + }), e3.fail(t5); + } + }; + let l2 = {}; + r2.conflicts = function(e4, s4) { + h(" [array|string]", [e4, s4], arguments.length), "object" == typeof e4 ? Object.keys(e4).forEach((t4) => { + r2.conflicts(t4, e4[t4]); + }) : (t3.global(e4), l2[e4] || (l2[e4] = []), Array.isArray(s4) ? s4.forEach((t4) => r2.conflicts(e4, t4)) : l2[e4].push(s4)); + }, r2.getConflicting = () => l2, r2.conflicting = function(n3) { + Object.keys(n3).forEach((t4) => { + l2[t4] && l2[t4].forEach((s4) => { + s4 && void 0 !== n3[t4] && void 0 !== n3[s4] && e3.fail(i2("Arguments %s and %s are mutually exclusive", t4, s4)); + }); + }), t3.getInternalMethods().getParserConfiguration()["strip-dashed"] && Object.keys(l2).forEach((t4) => { + l2[t4].forEach((r3) => { + r3 && void 0 !== n3[s3.Parser.camelCase(t4)] && void 0 !== n3[s3.Parser.camelCase(r3)] && e3.fail(i2("Arguments %s and %s are mutually exclusive", t4, r3)); + }); + }); + }, r2.recommendCommands = function(t4, s4) { + s4 = s4.sort((t5, e4) => e4.length - t5.length); + let n3 = null, r3 = 1 / 0; + for (let e4, i3 = 0; void 0 !== (e4 = s4[i3]); i3++) { + const s5 = N(t4, e4); + s5 <= 3 && s5 < r3 && (r3 = s5, n3 = e4); + } + n3 && e3.fail(i2("Did you mean %s?", n3)); + }, r2.reset = function(t4) { + return o2 = g(o2, (e4) => !t4[e4]), l2 = g(l2, (e4) => !t4[e4]), r2; + }; + const c2 = []; + return r2.freeze = function() { + c2.push({ implied: o2, conflicting: l2 }); + }, r2.unfreeze = function() { + const t4 = c2.pop(); + d(t4, void 0, s3), { implied: o2, conflicting: l2 } = t4; + }, r2; + }(this, v(this, pt, "f"), v(this, ct, "f")), "f"), O(this, z, v(this, z, "f") ? v(this, z, "f").reset() : function(t3, e3, s3, i2) { + return new M(t3, e3, s3, i2); + }(v(this, pt, "f"), v(this, mt, "f"), v(this, B, "f"), v(this, ct, "f")), "f"), v(this, F, "f") || O(this, F, function(t3, e3, s3, i2) { + return new D(t3, e3, s3, i2); + }(this, v(this, pt, "f"), v(this, z, "f"), v(this, ct, "f")), "f"), v(this, B, "f").reset(), O(this, U, null, "f"), O(this, tt, "", "f"), O(this, V, null, "f"), O(this, J, false, "f"), this.parsed = false, this; + } + [Tt](t2, e2) { + return v(this, ct, "f").path.relative(t2, e2); + } + [Bt](t2, s2, i2, n2 = 0, r2 = false) { + let o2 = !!i2 || r2; + t2 = t2 || v(this, ht, "f"), v(this, et, "f").__ = v(this, ct, "f").y18n.__, v(this, et, "f").configuration = this[jt](); + const a2 = !!v(this, et, "f").configuration["populate--"], h2 = Object.assign({}, v(this, et, "f").configuration, { "populate--": true }), l2 = v(this, ct, "f").Parser.detailed(t2, Object.assign({}, v(this, et, "f"), { configuration: { "parse-positional-numbers": false, ...h2 } })), c2 = Object.assign(l2.argv, v(this, rt, "f")); + let d2; + const u2 = l2.aliases; + let p2 = false, g2 = false; + Object.keys(c2).forEach((t3) => { + t3 === v(this, Z, "f") && c2[t3] ? p2 = true : t3 === v(this, gt, "f") && c2[t3] && (g2 = true); + }), c2.$0 = this.$0, this.parsed = l2, 0 === n2 && v(this, pt, "f").clearCachedHelpMessage(); + try { + if (this[_t](), s2) + return this[Rt](c2, a2, !!i2, false); + if (v(this, Z, "f")) { + [v(this, Z, "f")].concat(u2[v(this, Z, "f")] || []).filter((t3) => t3.length > 1).includes("" + c2._[c2._.length - 1]) && (c2._.pop(), p2 = true); + } + O(this, X, false, "f"); + const h3 = v(this, z, "f").getCommands(), m2 = v(this, F, "f").completionKey in c2, y2 = p2 || m2 || r2; + if (c2._.length) { + if (h3.length) { + let t3; + for (let e2, s3 = n2 || 0; void 0 !== c2._[s3]; s3++) { + if (e2 = String(c2._[s3]), h3.includes(e2) && e2 !== v(this, U, "f")) { + const t4 = v(this, z, "f").runCommand(e2, this, l2, s3 + 1, r2, p2 || g2 || r2); + return this[Rt](t4, a2, !!i2, false); + } + if (!t3 && e2 !== v(this, U, "f")) { + t3 = e2; + break; + } + } + !v(this, z, "f").hasDefaultCommand() && v(this, lt, "f") && t3 && !y2 && v(this, mt, "f").recommendCommands(t3, h3); + } + v(this, U, "f") && c2._.includes(v(this, U, "f")) && !m2 && (v(this, T, "f") && E(true), this.showCompletionScript(), this.exit(0)); + } + if (v(this, z, "f").hasDefaultCommand() && !y2) { + const t3 = v(this, z, "f").runCommand(null, this, l2, 0, r2, p2 || g2 || r2); + return this[Rt](t3, a2, !!i2, false); + } + if (m2) { + v(this, T, "f") && E(true); + const s3 = (t2 = [].concat(t2)).slice(t2.indexOf(`--${v(this, F, "f").completionKey}`) + 1); + return v(this, F, "f").getCompletion(s3, (t3, s4) => { + if (t3) + throw new e(t3.message); + (s4 || []).forEach((t4) => { + v(this, Q, "f").log(t4); + }), this.exit(0); + }), this[Rt](c2, !a2, !!i2, false); + } + if (v(this, J, "f") || (p2 ? (v(this, T, "f") && E(true), o2 = true, this.showHelp("log"), this.exit(0)) : g2 && (v(this, T, "f") && E(true), o2 = true, v(this, pt, "f").showVersion("log"), this.exit(0))), !o2 && v(this, et, "f").skipValidation.length > 0 && (o2 = Object.keys(c2).some((t3) => v(this, et, "f").skipValidation.indexOf(t3) >= 0 && true === c2[t3])), !o2) { + if (l2.error) + throw new e(l2.error.message); + if (!m2) { + const t3 = this[Yt](u2, {}, l2.error); + i2 || (d2 = C(c2, this, v(this, B, "f").getMiddleware(), true)), d2 = this[Nt](t3, null != d2 ? d2 : c2), f(d2) && !i2 && (d2 = d2.then(() => C(c2, this, v(this, B, "f").getMiddleware(), false))); + } + } + } catch (t3) { + if (!(t3 instanceof e)) + throw t3; + v(this, pt, "f").fail(t3.message, t3); + } + return this[Rt](null != d2 ? d2 : c2, a2, !!i2, true); + } + [Yt](t2, s2, i2, n2) { + const r2 = { ...this.getDemandedOptions() }; + return (o2) => { + if (i2) + throw new e(i2.message); + v(this, mt, "f").nonOptionCount(o2), v(this, mt, "f").requiredArguments(o2, r2); + let a2 = false; + v(this, dt, "f") && (a2 = v(this, mt, "f").unknownCommands(o2)), v(this, ft, "f") && !a2 ? v(this, mt, "f").unknownArguments(o2, t2, s2, !!n2) : v(this, ut, "f") && v(this, mt, "f").unknownArguments(o2, t2, {}, false, false), v(this, mt, "f").limitedChoices(o2), v(this, mt, "f").implications(o2), v(this, mt, "f").conflicting(o2); + }; + } + [Jt]() { + O(this, J, true, "f"); + } + [Zt](t2) { + if ("string" == typeof t2) + v(this, et, "f").key[t2] = true; + else + for (const e2 of t2) + v(this, et, "f").key[e2] = true; + } + }; + var Qt; + var te; + var { readFileSync: ee } = require("fs"); + var { inspect: se } = require("util"); + var { resolve: ie } = require("path"); + var ne = require_build(); + var re = require_build2(); + var oe; + var ae = { assert: { notStrictEqual: t.notStrictEqual, strictEqual: t.strictEqual }, cliui: require_build3(), findUp: require_sync(), getEnv: (t2) => process.env[t2], getCallerFile: require_get_caller_file(), getProcessArgvBin: y, inspect: se, mainFilename: null !== (te = null === (Qt = null === require || void 0 === require ? void 0 : require.main) || void 0 === Qt ? void 0 : Qt.filename) && void 0 !== te ? te : process.cwd(), Parser: re, path: require("path"), process: { argv: () => process.argv, cwd: process.cwd, emitWarning: (t2, e2) => process.emitWarning(t2, e2), execPath: () => process.execPath, exit: (t2) => { + process.exit(t2); + }, nextTick: process.nextTick, stdColumns: void 0 !== process.stdout.columns ? process.stdout.columns : null }, readFileSync: ee, require, requireDirectory: require_require_directory(), stringWidth: require_string_width(), y18n: ne({ directory: ie(__dirname, "../locales"), updateFiles: false }) }; + var he = (null === (oe = null === process || void 0 === process ? void 0 : process.env) || void 0 === oe ? void 0 : oe.YARGS_MIN_NODE_VERSION) ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12; + if (process && process.version) { + if (Number(process.version.match(/v([^.]+)/)[1]) < he) + throw Error(`yargs supports a minimum Node.js version of ${he}. Read our version support policy: https://github.com/yargs/yargs#supported-nodejs-versions`); + } + var le = require_build2(); + var ce; + var fe = { applyExtends: n, cjsPlatformShim: ae, Yargs: (ce = ae, (t2 = [], e2 = ce.process.cwd(), s2) => { + const i2 = new Xt(t2, e2, s2, ce); + return Object.defineProperty(i2, "argv", { get: () => i2.parse(), enumerable: true }), i2.help(), i2.version(), i2; + }), argsert: h, isPromise: f, objFilter: g, parseCommand: o, Parser: le, processArgv: b, YError: e }; + module2.exports = fe; + } +}); + +// node_modules/yargs/index.cjs +var require_yargs = __commonJS({ + "node_modules/yargs/index.cjs"(exports, module2) { + "use strict"; + var { Yargs, processArgv } = require_build4(); + Argv(processArgv.hideBin(process.argv)); + module2.exports = Argv; + function Argv(processArgs, cwd) { + const argv = Yargs(processArgs, cwd, require); + singletonify(argv); + return argv; + } + function defineGetter(obj, key, getter) { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: true, + get: getter + }); + } + function lookupGetter(obj, key) { + const desc = Object.getOwnPropertyDescriptor(obj, key); + if (typeof desc !== "undefined") { + return desc.get; + } + } + function singletonify(inst) { + [ + ...Object.keys(inst), + ...Object.getOwnPropertyNames(inst.constructor.prototype) + ].forEach((key) => { + if (key === "argv") { + defineGetter(Argv, key, lookupGetter(inst, key)); + } else if (typeof inst[key] === "function") { + Argv[key] = inst[key].bind(inst); + } else { + defineGetter(Argv, "$0", () => inst.$0); + defineGetter(Argv, "parsed", () => inst.parsed); + } + }); + } + } +}); + +// node_modules/nconf/lib/nconf/stores/argv.js +var require_argv = __commonJS({ + "node_modules/nconf/lib/nconf/stores/argv.js"(exports) { + var util = require("util"); + var common2 = require_common(); + var Memory = require_memory().Memory; + var Argv = exports.Argv = function(options, usage) { + Memory.call(this, options); + options = options || {}; + this.type = "argv"; + this.readOnly = options.readOnly !== void 0 ? options.readOnly : true; + this.options = options; + this.usage = usage; + if (typeof options.readOnly === "boolean") { + this.readOnly = options.readOnly; + delete options.readOnly; + } else { + this.readOnly = true; + } + if (typeof options.transform === "function") { + this.transform = options.transform; + delete options.transform; + } else { + this.transform = false; + } + }; + util.inherits(Argv, Memory); + Argv.prototype.loadSync = function() { + this.loadArgv(); + return this.store; + }; + Argv.prototype.loadArgv = function() { + var self2 = this, yargs, argv; + yargs = isYargs(this.options) ? this.options : typeof this.options === "object" ? require_yargs()(process.argv.slice(2)).options(this.options) : require_yargs()(process.argv.slice(2)); + if (typeof this.usage === "string") { + yargs.usage(this.usage); + } + argv = yargs.argv; + if (!argv) { + return; + } + if (this.transform) { + argv = common2.transform(argv, this.transform); + } + var tempWrite = false; + if (this.readOnly) { + this.readOnly = false; + tempWrite = true; + } + Object.keys(argv).forEach(function(key) { + var val = argv[key]; + if (typeof val !== "undefined") { + if (self2.parseValues) { + val = common2.parseValues(val); + } + self2.set(key, val); + } + }); + this.showHelp = yargs.showHelp; + this.help = yargs.help; + if (tempWrite) { + this.readOnly = true; + } + return this.store; + }; + function isYargs(obj) { + return (typeof obj === "function" || typeof obj === "object") && "argv" in obj; + } + } +}); + +// node_modules/nconf/lib/nconf/stores/env.js +var require_env = __commonJS({ + "node_modules/nconf/lib/nconf/stores/env.js"(exports) { + var util = require("util"); + var common2 = require_common(); + var Memory = require_memory().Memory; + var Env = exports.Env = function(options) { + Memory.call(this, options); + options = options || {}; + this.type = "env"; + this.readOnly = options.readOnly !== void 0 ? options.readOnly : true; + this.whitelist = options.whitelist || []; + this.lowerCase = options.lowerCase || false; + this.parseValues = options.parseValues || false; + this.transform = options.transform || false; + if ({}.toString.call(options.match) === "[object RegExp]" && typeof options !== "string") { + this.match = options.match; + } + if (options instanceof Array) { + this.whitelist = options; + } + }; + util.inherits(Env, Memory); + Env.prototype.loadSync = function() { + this.loadEnv(); + return this.store; + }; + Env.prototype.loadEnv = function() { + var self2 = this; + var env = process.env; + if (this.lowerCase) { + env = {}; + Object.keys(process.env).forEach(function(key) { + env[key.toLowerCase()] = process.env[key]; + }); + } + if (this.transform) { + env = common2.transform(env, this.transform); + } + var tempWrite = false; + if (this.readOnly) { + this.readOnly = false; + tempWrite = true; + } + Object.keys(env).filter(function(key) { + if (self2.match && self2.whitelist.length) { + return key.match(self2.match) || self2.whitelist.indexOf(key) !== -1; + } else if (self2.match) { + return key.match(self2.match); + } else { + return !self2.whitelist.length || self2.whitelist.indexOf(key) !== -1; + } + }).forEach(function(key) { + var val = env[key]; + if (self2.parseValues) { + val = common2.parseValues(val); + } + self2.set(key, val); + }); + if (tempWrite) { + this.readOnly = true; + } + return this.store; + }; + } +}); + +// node_modules/nconf/lib/nconf/stores/file.js +var require_file = __commonJS({ + "node_modules/nconf/lib/nconf/stores/file.js"(exports) { + var os = require("os"); + var fs5 = require("fs"); + var path2 = require("path"); + var util = require("util"); + var crypto = require("crypto"); + var formats = require_formats(); + var Memory = require_memory().Memory; + var exists = fs5.exists || path2.exists; + var existsSync = fs5.existsSync || path2.existsSync; + var File = exports.File = function(options) { + if (!options || !options.file) { + throw new Error("Missing required option `file`"); + } + Memory.call(this, options); + this.type = "file"; + this.file = options.file; + this.dir = options.dir || process.cwd(); + this.format = options.format || formats.json; + this.secure = options.secure; + this.spacing = options.json_spacing || options.spacing || 2; + this.eol = !(options.eol === false); + if (this.secure) { + this.secure = Buffer.isBuffer(this.secure) || typeof this.secure === "string" ? { secret: this.secure.toString() } : this.secure; + this.secure.alg = this.secure.alg || "aes-256-ctr"; + if (this.secure.secretPath) { + this.secure.secret = fs5.readFileSync(this.secure.secretPath, "utf8"); + } + if (!this.secure.secret) { + throw new Error("secure.secret option is required"); + } + } + if (options.search) { + this.search(this.dir); + } + }; + util.inherits(File, Memory); + File.prototype.save = function(value, callback) { + this.saveToFile(this.file, value, callback); + }; + File.prototype.saveToFile = function(path3, format2, callback) { + if (!callback) { + callback = format2; + format2 = this.format; + } + fs5.writeFile(path3, this.stringify(format2), callback); + }; + File.prototype.saveSync = function() { + fs5.writeFileSync(this.file, this.stringify()); + return this.store; + }; + File.prototype.load = function(callback) { + var self2 = this; + exists(self2.file, function(exists2) { + if (!exists2) { + return callback(null, {}); + } + fs5.readFile(self2.file, function(err, data) { + if (err) { + return callback(err); + } + try { + var stringData = data.toString(); + if (stringData.charAt(0) === "\uFEFF") { + stringData = stringData.substr(1); + } + self2.store = self2.parse(stringData); + } catch (ex) { + return callback(new Error("Error parsing your configuration file: [" + self2.file + "]: " + ex.message)); + } + callback(null, self2.store); + }); + }); + }; + File.prototype.loadSync = function() { + if (!existsSync(this.file)) { + this.store = {}; + return this.store; + } + try { + var fileData = fs5.readFileSync(this.file, "utf8"); + if (fileData.charAt(0) === "\uFEFF") { + fileData = fileData.substr(1); + } + this.store = this.parse(fileData); + } catch (ex) { + throw new Error("Error parsing your configuration file: [" + this.file + "]: " + ex.message); + } + return this.store; + }; + File.prototype.stringify = function(format2) { + var data = this.store; + if (!format2) { + format2 = this.format; + } + if (this.secure) { + var self2 = this; + data = Object.keys(data).reduce(function(acc, key) { + var value = format2.stringify(data[key]); + var iv = crypto.randomBytes(16); + var cipher = crypto.createCipheriv(self2.secure.alg, self2.secure.secret, iv); + var ciphertext = cipher.update(value, "utf8", "hex"); + ciphertext += cipher.final("hex"); + acc[key] = { alg: self2.secure.alg, value: ciphertext, iv: iv.toString("hex") }; + return acc; + }, {}); + } + var stringified = format2.stringify(data, null, this.spacing); + var needsEOL = this.eol && stringified.slice(-1) !== os.EOL; + return stringified + (needsEOL ? os.EOL : ""); + }; + File.prototype.parse = function(contents) { + var parsed = this.format.parse(contents); + if (this.secure) { + var self2 = this; + parsed = Object.keys(parsed).reduce(function(acc, key) { + var value = parsed[key]; + if (!value.iv) { + throw new Error("Your encrypted file is outdated (encrypted without iv). Please re-encrypt your file using a pre-v1 release of nconf, v0.10 or above."); + } + let decipher = crypto.createDecipheriv(value.alg, self2.secure.secret, Buffer.from(value.iv, "hex")); + var plaintext = decipher.update(value.value, "hex", "utf8"); + plaintext += decipher.final("utf8"); + acc[key] = self2.format.parse(plaintext); + return acc; + }, {}); + } + return parsed; + }; + File.prototype.search = function(base) { + var looking = true, fullpath, previous, stats; + base = base || process.cwd(); + if (this.file[0] === "/") { + try { + stats = fs5.statSync(fs5.realpathSync(this.file)); + if (stats.isFile()) { + fullpath = this.file; + looking = false; + } + } catch (ex) { + } + } + if (looking && base) { + try { + var stat = fs5.statSync(fs5.realpathSync(base)); + looking = stat.isDirectory(); + } catch (ex) { + return false; + } + } + while (looking) { + try { + stats = fs5.statSync(fs5.realpathSync(fullpath = path2.join(base, this.file))); + looking = stats.isDirectory(); + } catch (ex) { + previous = base; + base = path2.dirname(base); + if (previous === base) { + try { + stats = fs5.statSync(fs5.realpathSync(fullpath = path2.join(this.dir, this.file))); + if (stats.isDirectory()) { + fullpath = void 0; + } + } catch (ex2) { + } + looking = false; + } + } + } + this.file = fullpath || this.file; + return fullpath; + }; + } +}); + +// node_modules/nconf/lib/nconf/stores/literal.js +var require_literal = __commonJS({ + "node_modules/nconf/lib/nconf/stores/literal.js"(exports) { + var util = require("util"); + var Memory = require_memory().Memory; + var Literal = exports.Literal = function Literal2(options) { + Memory.call(this, options); + options = options || {}; + this.type = "literal"; + this.readOnly = true; + this.store = options.store || options; + }; + util.inherits(Literal, Memory); + Literal.prototype.loadSync = function() { + return this.store; + }; + } +}); + +// node_modules/nconf/lib/nconf.js +var require_nconf = __commonJS({ + "node_modules/nconf/lib/nconf.js"(exports, module2) { + var common2 = require_common(); + var Provider2 = require_provider().Provider; + var nconf2 = module2.exports = new Provider2(); + nconf2.version = require_package().version; + nconf2.__defineGetter__("Argv", function() { + return require_argv().Argv; + }); + nconf2.__defineGetter__("Env", function() { + return require_env().Env; + }); + nconf2.__defineGetter__("File", function() { + return require_file().File; + }); + nconf2.__defineGetter__("Literal", function() { + return require_literal().Literal; + }); + nconf2.__defineGetter__("Memory", function() { + return require_memory().Memory; + }); + nconf2.key = common2.key; + nconf2.path = common2.path; + nconf2.loadFiles = common2.loadFiles; + nconf2.loadFilesSync = common2.loadFilesSync; + nconf2.formats = require_formats(); + nconf2.Provider = Provider2; + } +}); + +// node_modules/@actions/core/lib/utils.js +var require_utils = __commonJS({ + "node_modules/@actions/core/lib/utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toCommandProperties = exports.toCommandValue = void 0; + function toCommandValue(input) { + if (input === null || input === void 0) { + return ""; + } else if (typeof input === "string" || input instanceof String) { + return input; + } + return JSON.stringify(input); + } + exports.toCommandValue = toCommandValue; + function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; + } + exports.toCommandProperties = toCommandProperties; + } +}); + +// node_modules/@actions/core/lib/command.js +var require_command = __commonJS({ + "node_modules/@actions/core/lib/command.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.issue = exports.issueCommand = void 0; + var os = __importStar(require("os")); + var utils_1 = require_utils(); + function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); + } + exports.issueCommand = issueCommand; + function issue(name, message = "") { + issueCommand(name, {}, message); + } + exports.issue = issue; + var CMD_STRING = "::"; + var Command = class { + constructor(command, properties, message) { + if (!command) { + command = "missing.command"; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += " "; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } else { + cmdStr += ","; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } + }; + function escapeData(s) { + return utils_1.toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); + } + function escapeProperty(s) { + return utils_1.toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C"); + } + } +}); + +// node_modules/@actions/core/lib/file-command.js +var require_file_command = __commonJS({ + "node_modules/@actions/core/lib/file-command.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.issueCommand = void 0; + var fs5 = __importStar(require("fs")); + var os = __importStar(require("os")); + var utils_1 = require_utils(); + function issueCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs5.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs5.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + encoding: "utf8" + }); + } + exports.issueCommand = issueCommand; + } +}); + +// node_modules/uuid/dist/rng.js +var require_rng = __commonJS({ + "node_modules/uuid/dist/rng.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = rng; + var _crypto = _interopRequireDefault(require("crypto")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var rnds8Pool = new Uint8Array(256); + var poolPtr = rnds8Pool.length; + function rng() { + if (poolPtr > rnds8Pool.length - 16) { + _crypto.default.randomFillSync(rnds8Pool); + poolPtr = 0; + } + return rnds8Pool.slice(poolPtr, poolPtr += 16); + } + } +}); + +// node_modules/uuid/dist/regex.js +var require_regex = __commonJS({ + "node_modules/uuid/dist/regex.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _default2 = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/validate.js +var require_validate = __commonJS({ + "node_modules/uuid/dist/validate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _regex = _interopRequireDefault(require_regex()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function validate(uuid) { + return typeof uuid === "string" && _regex.default.test(uuid); + } + var _default2 = validate; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/stringify.js +var require_stringify = __commonJS({ + "node_modules/uuid/dist/stringify.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _validate = _interopRequireDefault(require_validate()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var byteToHex = []; + for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).substr(1)); + } + function stringify(arr, offset = 0) { + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); + if (!(0, _validate.default)(uuid)) { + throw TypeError("Stringified UUID is invalid"); + } + return uuid; + } + var _default2 = stringify; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/v1.js +var require_v1 = __commonJS({ + "node_modules/uuid/dist/v1.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _rng = _interopRequireDefault(require_rng()); + var _stringify = _interopRequireDefault(require_stringify()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var _nodeId; + var _clockseq; + var _lastMSecs = 0; + var _lastNSecs = 0; + function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); + if (node == null) { + node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + if (clockseq == null) { + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 16383; + } + } + let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); + let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; + if (dt < 0 && options.clockseq === void 0) { + clockseq = clockseq + 1 & 16383; + } + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { + nsecs = 0; + } + if (nsecs >= 1e4) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + msecs += 122192928e5; + const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; + b[i++] = tl >>> 24 & 255; + b[i++] = tl >>> 16 & 255; + b[i++] = tl >>> 8 & 255; + b[i++] = tl & 255; + const tmh = msecs / 4294967296 * 1e4 & 268435455; + b[i++] = tmh >>> 8 & 255; + b[i++] = tmh & 255; + b[i++] = tmh >>> 24 & 15 | 16; + b[i++] = tmh >>> 16 & 255; + b[i++] = clockseq >>> 8 | 128; + b[i++] = clockseq & 255; + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + return buf || (0, _stringify.default)(b); + } + var _default2 = v1; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/parse.js +var require_parse = __commonJS({ + "node_modules/uuid/dist/parse.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _validate = _interopRequireDefault(require_validate()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function parse(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError("Invalid UUID"); + } + let v; + const arr = new Uint8Array(16); + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 255; + arr[2] = v >>> 8 & 255; + arr[3] = v & 255; + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 255; + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 255; + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 255; + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255; + arr[11] = v / 4294967296 & 255; + arr[12] = v >>> 24 & 255; + arr[13] = v >>> 16 & 255; + arr[14] = v >>> 8 & 255; + arr[15] = v & 255; + return arr; + } + var _default2 = parse; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/v35.js +var require_v35 = __commonJS({ + "node_modules/uuid/dist/v35.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = _default2; + exports.URL = exports.DNS = void 0; + var _stringify = _interopRequireDefault(require_stringify()); + var _parse = _interopRequireDefault(require_parse()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function stringToBytes(str2) { + str2 = unescape(encodeURIComponent(str2)); + const bytes = []; + for (let i = 0; i < str2.length; ++i) { + bytes.push(str2.charCodeAt(i)); + } + return bytes; + } + var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; + exports.DNS = DNS; + var URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; + exports.URL = URL2; + function _default2(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === "string") { + value = stringToBytes(value); + } + if (typeof namespace === "string") { + namespace = (0, _parse.default)(namespace); + } + if (namespace.length !== 16) { + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + } + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 15 | version; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + return buf; + } + return (0, _stringify.default)(bytes); + } + try { + generateUUID.name = name; + } catch (err) { + } + generateUUID.DNS = DNS; + generateUUID.URL = URL2; + return generateUUID; + } + } +}); + +// node_modules/uuid/dist/md5.js +var require_md5 = __commonJS({ + "node_modules/uuid/dist/md5.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _crypto = _interopRequireDefault(require("crypto")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === "string") { + bytes = Buffer.from(bytes, "utf8"); + } + return _crypto.default.createHash("md5").update(bytes).digest(); + } + var _default2 = md5; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/v3.js +var require_v3 = __commonJS({ + "node_modules/uuid/dist/v3.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _v = _interopRequireDefault(require_v35()); + var _md = _interopRequireDefault(require_md5()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var v3 = (0, _v.default)("v3", 48, _md.default); + var _default2 = v3; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/v4.js +var require_v4 = __commonJS({ + "node_modules/uuid/dist/v4.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _rng = _interopRequireDefault(require_rng()); + var _stringify = _interopRequireDefault(require_stringify()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || _rng.default)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return (0, _stringify.default)(rnds); + } + var _default2 = v4; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/sha1.js +var require_sha1 = __commonJS({ + "node_modules/uuid/dist/sha1.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _crypto = _interopRequireDefault(require("crypto")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === "string") { + bytes = Buffer.from(bytes, "utf8"); + } + return _crypto.default.createHash("sha1").update(bytes).digest(); + } + var _default2 = sha1; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/v5.js +var require_v5 = __commonJS({ + "node_modules/uuid/dist/v5.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _v = _interopRequireDefault(require_v35()); + var _sha = _interopRequireDefault(require_sha1()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var v5 = (0, _v.default)("v5", 80, _sha.default); + var _default2 = v5; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/nil.js +var require_nil = __commonJS({ + "node_modules/uuid/dist/nil.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _default2 = "00000000-0000-0000-0000-000000000000"; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/version.js +var require_version = __commonJS({ + "node_modules/uuid/dist/version.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _validate = _interopRequireDefault(require_validate()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError("Invalid UUID"); + } + return parseInt(uuid.substr(14, 1), 16); + } + var _default2 = version; + exports.default = _default2; + } +}); + +// node_modules/uuid/dist/index.js +var require_dist = __commonJS({ + "node_modules/uuid/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "v1", { + enumerable: true, + get: function() { + return _v.default; + } + }); + Object.defineProperty(exports, "v3", { + enumerable: true, + get: function() { + return _v2.default; + } + }); + Object.defineProperty(exports, "v4", { + enumerable: true, + get: function() { + return _v3.default; + } + }); + Object.defineProperty(exports, "v5", { + enumerable: true, + get: function() { + return _v4.default; + } + }); + Object.defineProperty(exports, "NIL", { + enumerable: true, + get: function() { + return _nil.default; + } + }); + Object.defineProperty(exports, "version", { + enumerable: true, + get: function() { + return _version.default; + } + }); + Object.defineProperty(exports, "validate", { + enumerable: true, + get: function() { + return _validate.default; + } + }); + Object.defineProperty(exports, "stringify", { + enumerable: true, + get: function() { + return _stringify.default; + } + }); + Object.defineProperty(exports, "parse", { + enumerable: true, + get: function() { + return _parse.default; + } + }); + var _v = _interopRequireDefault(require_v1()); + var _v2 = _interopRequireDefault(require_v3()); + var _v3 = _interopRequireDefault(require_v4()); + var _v4 = _interopRequireDefault(require_v5()); + var _nil = _interopRequireDefault(require_nil()); + var _version = _interopRequireDefault(require_version()); + var _validate = _interopRequireDefault(require_validate()); + var _stringify = _interopRequireDefault(require_stringify()); + var _parse = _interopRequireDefault(require_parse()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + } +}); + +// node_modules/@actions/http-client/lib/proxy.js +var require_proxy = __commonJS({ + "node_modules/@actions/http-client/lib/proxy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.checkBypass = exports.getProxyUrl = void 0; + function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === "https:"; + if (checkBypass(reqUrl)) { + return void 0; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env["https_proxy"] || process.env["HTTPS_PROXY"]; + } else { + return process.env["http_proxy"] || process.env["HTTP_PROXY"]; + } + })(); + if (proxyVar) { + return new URL(proxyVar); + } else { + return void 0; + } + } + exports.getProxyUrl = getProxyUrl; + function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ""; + if (!noProxy) { + return false; + } + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } else if (reqUrl.protocol === "http:") { + reqPort = 80; + } else if (reqUrl.protocol === "https:") { + reqPort = 443; + } + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === "number") { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + for (const upperNoProxyItem of noProxy.split(",").map((x) => x.trim().toUpperCase()).filter((x) => x)) { + if (upperReqHosts.some((x) => x === upperNoProxyItem)) { + return true; + } + } + return false; + } + exports.checkBypass = checkBypass; + } +}); + +// node_modules/tunnel/lib/tunnel.js +var require_tunnel = __commonJS({ + "node_modules/tunnel/lib/tunnel.js"(exports) { + "use strict"; + var net = require("net"); + var tls = require("tls"); + var http = require("http"); + var https = require("https"); + var events = require("events"); + var assert = require("assert"); + var util = require("util"); + exports.httpOverHttp = httpOverHttp; + exports.httpsOverHttp = httpsOverHttp; + exports.httpOverHttps = httpOverHttps; + exports.httpsOverHttps = httpsOverHttps; + function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; + } + function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; + } + function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; + } + function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; + } + function TunnelingAgent(options) { + var self2 = this; + self2.options = options || {}; + self2.proxyOptions = self2.options.proxy || {}; + self2.maxSockets = self2.options.maxSockets || http.Agent.defaultMaxSockets; + self2.requests = []; + self2.sockets = []; + self2.on("free", function onFree(socket, host, port, localAddress) { + var options2 = toOptions(host, port, localAddress); + for (var i = 0, len = self2.requests.length; i < len; ++i) { + var pending = self2.requests[i]; + if (pending.host === options2.host && pending.port === options2.port) { + self2.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self2.removeSocket(socket); + }); + } + util.inherits(TunnelingAgent, events.EventEmitter); + TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self2 = this; + var options = mergeOptions({ request: req }, self2.options, toOptions(host, port, localAddress)); + if (self2.sockets.length >= this.maxSockets) { + self2.requests.push(options); + return; + } + self2.createSocket(options, function(socket) { + socket.on("free", onFree); + socket.on("close", onCloseOrRemove); + socket.on("agentRemove", onCloseOrRemove); + req.onSocket(socket); + function onFree() { + self2.emit("free", socket, options); + } + function onCloseOrRemove(err) { + self2.removeSocket(socket); + socket.removeListener("free", onFree); + socket.removeListener("close", onCloseOrRemove); + socket.removeListener("agentRemove", onCloseOrRemove); + } + }); + }; + TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self2 = this; + var placeholder = {}; + self2.sockets.push(placeholder); + var connectOptions = mergeOptions({}, self2.proxyOptions, { + method: "CONNECT", + path: options.host + ":" + options.port, + agent: false, + headers: { + host: options.host + ":" + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); + } + debug2("making CONNECT request"); + var connectReq = self2.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; + connectReq.once("response", onResponse); + connectReq.once("upgrade", onUpgrade); + connectReq.once("connect", onConnect); + connectReq.once("error", onError); + connectReq.end(); + function onResponse(res) { + res.upgrade = true; + } + function onUpgrade(res, socket, head) { + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + if (res.statusCode !== 200) { + debug2( + "tunneling socket could not be established, statusCode=%d", + res.statusCode + ); + socket.destroy(); + var error2 = new Error("tunneling socket could not be established, statusCode=" + res.statusCode); + error2.code = "ECONNRESET"; + options.request.emit("error", error2); + self2.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug2("got illegal response body from proxy"); + socket.destroy(); + var error2 = new Error("got illegal response body from proxy"); + error2.code = "ECONNRESET"; + options.request.emit("error", error2); + self2.removeSocket(placeholder); + return; + } + debug2("tunneling connection has established"); + self2.sockets[self2.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + function onError(cause) { + connectReq.removeAllListeners(); + debug2( + "tunneling socket could not be established, cause=%s\n", + cause.message, + cause.stack + ); + var error2 = new Error("tunneling socket could not be established, cause=" + cause.message); + error2.code = "ECONNRESET"; + options.request.emit("error", error2); + self2.removeSocket(placeholder); + } + }; + TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket); + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + var pending = this.requests.shift(); + if (pending) { + this.createSocket(pending, function(socket2) { + pending.request.onSocket(socket2); + }); + } + }; + function createSecureSocket(options, cb) { + var self2 = this; + TunnelingAgent.prototype.createSocket.call(self2, options, function(socket) { + var hostHeader = options.request.getHeader("host"); + var tlsOptions = mergeOptions({}, self2.options, { + socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, "") : options.host + }); + var secureSocket = tls.connect(0, tlsOptions); + self2.sockets[self2.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); + } + function toOptions(host, port, localAddress) { + if (typeof host === "string") { + return { + host, + port, + localAddress + }; + } + return host; + } + function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === "object") { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== void 0) { + target[k] = overrides[k]; + } + } + } + } + return target; + } + var debug2; + if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug2 = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === "string") { + args[0] = "TUNNEL: " + args[0]; + } else { + args.unshift("TUNNEL:"); + } + console.error.apply(console, args); + }; + } else { + debug2 = function() { + }; + } + exports.debug = debug2; + } +}); + +// node_modules/tunnel/index.js +var require_tunnel2 = __commonJS({ + "node_modules/tunnel/index.js"(exports, module2) { + module2.exports = require_tunnel(); + } +}); + +// node_modules/@actions/http-client/lib/index.js +var require_lib = __commonJS({ + "node_modules/@actions/http-client/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; + var http = __importStar(require("http")); + var https = __importStar(require("https")); + var pm = __importStar(require_proxy()); + var tunnel = __importStar(require_tunnel2()); + var HttpCodes; + (function(HttpCodes2) { + HttpCodes2[HttpCodes2["OK"] = 200] = "OK"; + HttpCodes2[HttpCodes2["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes2[HttpCodes2["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes2[HttpCodes2["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes2[HttpCodes2["SeeOther"] = 303] = "SeeOther"; + HttpCodes2[HttpCodes2["NotModified"] = 304] = "NotModified"; + HttpCodes2[HttpCodes2["UseProxy"] = 305] = "UseProxy"; + HttpCodes2[HttpCodes2["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes2[HttpCodes2["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes2[HttpCodes2["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes2[HttpCodes2["BadRequest"] = 400] = "BadRequest"; + HttpCodes2[HttpCodes2["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes2[HttpCodes2["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes2[HttpCodes2["Forbidden"] = 403] = "Forbidden"; + HttpCodes2[HttpCodes2["NotFound"] = 404] = "NotFound"; + HttpCodes2[HttpCodes2["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes2[HttpCodes2["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes2[HttpCodes2["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes2[HttpCodes2["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes2[HttpCodes2["Conflict"] = 409] = "Conflict"; + HttpCodes2[HttpCodes2["Gone"] = 410] = "Gone"; + HttpCodes2[HttpCodes2["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes2[HttpCodes2["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes2[HttpCodes2["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes2[HttpCodes2["BadGateway"] = 502] = "BadGateway"; + HttpCodes2[HttpCodes2["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes2[HttpCodes2["GatewayTimeout"] = 504] = "GatewayTimeout"; + })(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); + var Headers; + (function(Headers2) { + Headers2["Accept"] = "accept"; + Headers2["ContentType"] = "content-type"; + })(Headers = exports.Headers || (exports.Headers = {})); + var MediaTypes; + (function(MediaTypes2) { + MediaTypes2["ApplicationJson"] = "application/json"; + })(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); + function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ""; + } + exports.getProxyUrl = getProxyUrl; + var HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect + ]; + var HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout + ]; + var RetryableHttpVerbs = ["OPTIONS", "GET", "DELETE", "HEAD"]; + var ExponentialBackoffCeiling = 10; + var ExponentialBackoffTimeSlice = 5; + var HttpClientError = class extends Error { + constructor(message, statusCode) { + super(message); + this.name = "HttpClientError"; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } + }; + exports.HttpClientError = HttpClientError; + var HttpClientResponse = class { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on("data", (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on("end", () => { + resolve(output.toString()); + }); + })); + }); + } + }; + exports.HttpClientResponse = HttpClientResponse; + function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === "https:"; + } + exports.isHttps = isHttps; + var HttpClient = class { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("OPTIONS", requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("GET", requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("DELETE", requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("POST", requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("PATCH", requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("PUT", requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("HEAD", requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error("Client has already been disposed."); + } + const parsedUrl = new URL(requestUrl); + let info2 = this._prepareRequest(verb, parsedUrl, headers); + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info2, data); + if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info2, data); + } else { + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && HttpRedirectCodes.includes(response.message.statusCode) && this._allowRedirects && redirectsRemaining > 0) { + const redirectUrl = response.message.headers["location"]; + if (!redirectUrl) { + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === "https:" && parsedUrl.protocol !== parsedRedirectUrl.protocol && !this._allowRedirectDowngrade) { + throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true."); + } + yield response.readBody(); + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + if (header.toLowerCase() === "authorization") { + delete headers[header]; + } + } + } + info2 = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info2, data); + redirectsRemaining--; + } + if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + requestRaw(info2, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } else if (!res) { + reject(new Error("Unknown error")); + } else { + resolve(res); + } + } + this.requestRawWithCallback(info2, data, callbackForResult); + }); + }); + } + requestRawWithCallback(info2, data, onResult) { + if (typeof data === "string") { + if (!info2.options.headers) { + info2.options.headers = {}; + } + info2.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8"); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info2.httpModule.request(info2.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(void 0, res); + }); + let socket; + req.on("socket", (sock) => { + socket = sock; + }); + req.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info2.options.path}`)); + }); + req.on("error", function(err) { + handleResult(err); + }); + if (data && typeof data === "string") { + req.write(data, "utf8"); + } + if (data && typeof data !== "string") { + data.on("close", function() { + req.end(); + }); + data.pipe(req); + } else { + req.end(); + } + } + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info2 = {}; + info2.parsedUrl = requestUrl; + const usingSsl = info2.parsedUrl.protocol === "https:"; + info2.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info2.options = {}; + info2.options.host = info2.parsedUrl.hostname; + info2.options.port = info2.parsedUrl.port ? parseInt(info2.parsedUrl.port) : defaultPort; + info2.options.path = (info2.parsedUrl.pathname || "") + (info2.parsedUrl.search || ""); + info2.options.method = method; + info2.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info2.options.headers["user-agent"] = this.userAgent; + } + info2.options.agent = this._getAgent(info2.parsedUrl); + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info2.options); + } + } + return info2; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default2) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default2; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === "https:"; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, (proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + }), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === "https:"; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise((resolve) => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + function dateTimeDeserializer(key, value) { + if (typeof value === "string") { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } catch (err) { + } + if (statusCode > 299) { + let msg; + if (obj && obj.message) { + msg = obj.message; + } else if (contents && contents.length > 0) { + msg = contents; + } else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } else { + resolve(response); + } + })); + }); + } + }; + exports.HttpClient = HttpClient; + var lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); + } +}); + +// node_modules/@actions/http-client/lib/auth.js +var require_auth = __commonJS({ + "node_modules/@actions/http-client/lib/auth.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; + var BasicCredentialHandler = class { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error("The request has no headers"); + } + options.headers["Authorization"] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`; + } + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error("not implemented"); + }); + } + }; + exports.BasicCredentialHandler = BasicCredentialHandler; + var BearerCredentialHandler = class { + constructor(token) { + this.token = token; + } + prepareRequest(options) { + if (!options.headers) { + throw Error("The request has no headers"); + } + options.headers["Authorization"] = `Bearer ${this.token}`; + } + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error("not implemented"); + }); + } + }; + exports.BearerCredentialHandler = BearerCredentialHandler; + var PersonalAccessTokenCredentialHandler = class { + constructor(token) { + this.token = token; + } + prepareRequest(options) { + if (!options.headers) { + throw Error("The request has no headers"); + } + options.headers["Authorization"] = `Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`; + } + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error("not implemented"); + }); + } + }; + exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; + } +}); + +// node_modules/@actions/core/lib/oidc-utils.js +var require_oidc_utils = __commonJS({ + "node_modules/@actions/core/lib/oidc-utils.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.OidcClient = void 0; + var http_client_1 = require_lib(); + var auth_1 = require_auth(); + var core_1 = require_core(); + var OidcClient = class { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient("actions/oidc-client", [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]; + if (!token) { + throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable"); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env["ACTIONS_ID_TOKEN_REQUEST_URL"]; + if (!runtimeUrl) { + throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable"); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = OidcClient.createHttpClient(); + const res = yield httpclient.getJson(id_token_url).catch((error2) => { + throw new Error(`Failed to get ID Token. + + Error Code : ${error2.statusCode} + + Error Message: ${error2.result.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error("Response json body do not have ID Token field"); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + core_1.debug(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + core_1.setSecret(id_token); + return id_token; + } catch (error2) { + throw new Error(`Error message: ${error2.message}`); + } + }); + } + }; + exports.OidcClient = OidcClient; + } +}); + +// node_modules/@actions/core/lib/summary.js +var require_summary = __commonJS({ + "node_modules/@actions/core/lib/summary.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; + var os_1 = require("os"); + var fs_1 = require("fs"); + var { access, appendFile, writeFile } = fs_1.promises; + exports.SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; + exports.SUMMARY_DOCS_URL = "https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary"; + var Summary = class { + constructor() { + this._buffer = ""; + } + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs).map(([key, value]) => ` ${key}="${value}"`).join(""); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}`; + } + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: "utf8" }); + return this.emptyBuffer(); + }); + } + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + stringify() { + return this._buffer; + } + isEmptyBuffer() { + return this._buffer.length === 0; + } + emptyBuffer() { + this._buffer = ""; + return this; + } + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + addEOL() { + return this.addRaw(os_1.EOL); + } + addCodeBlock(code, lang) { + const attrs = Object.assign({}, lang && { lang }); + const element = this.wrap("pre", this.wrap("code", code), attrs); + return this.addRaw(element).addEOL(); + } + addList(items, ordered = false) { + const tag = ordered ? "ol" : "ul"; + const listItems = items.map((item) => this.wrap("li", item)).join(""); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + addTable(rows) { + const tableBody = rows.map((row) => { + const cells = row.map((cell) => { + if (typeof cell === "string") { + return this.wrap("td", cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? "th" : "td"; + const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan }); + return this.wrap(tag, data, attrs); + }).join(""); + return this.wrap("tr", cells); + }).join(""); + const element = this.wrap("table", tableBody); + return this.addRaw(element).addEOL(); + } + addDetails(label, content) { + const element = this.wrap("details", this.wrap("summary", label) + content); + return this.addRaw(element).addEOL(); + } + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); + const element = this.wrap("img", null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ["h1", "h2", "h3", "h4", "h5", "h6"].includes(tag) ? tag : "h1"; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + addSeparator() { + const element = this.wrap("hr", null); + return this.addRaw(element).addEOL(); + } + addBreak() { + const element = this.wrap("br", null); + return this.addRaw(element).addEOL(); + } + addQuote(text, cite) { + const attrs = Object.assign({}, cite && { cite }); + const element = this.wrap("blockquote", text, attrs); + return this.addRaw(element).addEOL(); + } + addLink(text, href) { + const element = this.wrap("a", text, { href }); + return this.addRaw(element).addEOL(); + } + }; + var _summary = new Summary(); + exports.markdownSummary = _summary; + exports.summary = _summary; + } +}); + +// node_modules/@actions/core/lib/path-utils.js +var require_path_utils = __commonJS({ + "node_modules/@actions/core/lib/path-utils.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; + var path2 = __importStar(require("path")); + function toPosixPath(pth) { + return pth.replace(/[\\]/g, "/"); + } + exports.toPosixPath = toPosixPath; + function toWin32Path(pth) { + return pth.replace(/[/]/g, "\\"); + } + exports.toWin32Path = toWin32Path; + function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path2.sep); + } + exports.toPlatformPath = toPlatformPath; + } +}); + +// node_modules/@actions/core/lib/core.js +var require_core = __commonJS({ + "node_modules/@actions/core/lib/core.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { + return m[k]; + } }); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; + var command_1 = require_command(); + var file_command_1 = require_file_command(); + var utils_1 = require_utils(); + var os = __importStar(require("os")); + var path2 = __importStar(require("path")); + var uuid_1 = require_dist(); + var oidc_utils_1 = require_oidc_utils(); + var ExitCode; + (function(ExitCode2) { + ExitCode2[ExitCode2["Success"] = 0] = "Success"; + ExitCode2[ExitCode2["Failure"] = 1] = "Failure"; + })(ExitCode = exports.ExitCode || (exports.ExitCode = {})); + function exportVariable(name, val) { + const convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env["GITHUB_ENV"] || ""; + if (filePath) { + const delimiter = `ghadelimiter_${uuid_1.v4()}`; + if (name.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedVal.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; + file_command_1.issueCommand("ENV", commandValue); + } else { + command_1.issueCommand("set-env", { name }, convertedVal); + } + } + exports.exportVariable = exportVariable; + function setSecret(secret) { + command_1.issueCommand("add-mask", {}, secret); + } + exports.setSecret = setSecret; + function addPath(inputPath) { + const filePath = process.env["GITHUB_PATH"] || ""; + if (filePath) { + file_command_1.issueCommand("PATH", inputPath); + } else { + command_1.issueCommand("add-path", {}, inputPath); + } + process.env["PATH"] = `${inputPath}${path2.delimiter}${process.env["PATH"]}`; + } + exports.addPath = addPath; + function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); + } + exports.getInput = getInput; + function getMultilineInput(name, options) { + const inputs2 = getInput(name, options).split("\n").filter((x) => x !== ""); + return inputs2; + } + exports.getMultilineInput = getMultilineInput; + function getBooleanInput(name, options) { + const trueValue = ["true", "True", "TRUE"]; + const falseValue = ["false", "False", "FALSE"]; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); + } + exports.getBooleanInput = getBooleanInput; + function setOutput(name, value) { + process.stdout.write(os.EOL); + command_1.issueCommand("set-output", { name }, value); + } + exports.setOutput = setOutput; + function setCommandEcho(enabled) { + command_1.issue("echo", enabled ? "on" : "off"); + } + exports.setCommandEcho = setCommandEcho; + function setFailed2(message) { + process.exitCode = ExitCode.Failure; + error2(message); + } + exports.setFailed = setFailed2; + function isDebug() { + return process.env["RUNNER_DEBUG"] === "1"; + } + exports.isDebug = isDebug; + function debug2(message) { + command_1.issueCommand("debug", {}, message); + } + exports.debug = debug2; + function error2(message, properties = {}) { + command_1.issueCommand("error", utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + } + exports.error = error2; + function warning(message, properties = {}) { + command_1.issueCommand("warning", utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + } + exports.warning = warning; + function notice(message, properties = {}) { + command_1.issueCommand("notice", utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + } + exports.notice = notice; + function info2(message) { + process.stdout.write(message + os.EOL); + } + exports.info = info2; + function startGroup2(name) { + command_1.issue("group", name); + } + exports.startGroup = startGroup2; + function endGroup2() { + command_1.issue("endgroup"); + } + exports.endGroup = endGroup2; + function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup2(name); + let result; + try { + result = yield fn(); + } finally { + endGroup2(); + } + return result; + }); + } + exports.group = group; + function saveState(name, value) { + command_1.issueCommand("save-state", { name }, value); + } + exports.saveState = saveState; + function getState(name) { + return process.env[`STATE_${name}`] || ""; + } + exports.getState = getState; + function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); + } + exports.getIDToken = getIDToken; + var summary_1 = require_summary(); + Object.defineProperty(exports, "summary", { enumerable: true, get: function() { + return summary_1.summary; + } }); + var summary_2 = require_summary(); + Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function() { + return summary_2.markdownSummary; + } }); + var path_utils_1 = require_path_utils(); + Object.defineProperty(exports, "toPosixPath", { enumerable: true, get: function() { + return path_utils_1.toPosixPath; + } }); + Object.defineProperty(exports, "toWin32Path", { enumerable: true, get: function() { + return path_utils_1.toWin32Path; + } }); + Object.defineProperty(exports, "toPlatformPath", { enumerable: true, get: function() { + return path_utils_1.toPlatformPath; + } }); + } +}); + +// node_modules/has-flag/index.js +var require_has_flag = __commonJS({ + "node_modules/has-flag/index.js"(exports, module2) { + "use strict"; + module2.exports = (flag, argv = process.argv) => { + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf("--"); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); + }; + } +}); + +// node_modules/chalk/node_modules/supports-color/index.js +var require_supports_color = __commonJS({ + "node_modules/chalk/node_modules/supports-color/index.js"(exports, module2) { + "use strict"; + var os = require("os"); + var tty = require("tty"); + var hasFlag = require_has_flag(); + var { env } = process; + var forceColor; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { + forceColor = 0; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = 1; + } + if ("FORCE_COLOR" in env) { + if (env.FORCE_COLOR === "true") { + forceColor = 1; + } else if (env.FORCE_COLOR === "false") { + forceColor = 0; + } else { + forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + } + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(haveStream, streamIsTTY) { + if (forceColor === 0) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (haveStream && !streamIsTTY && forceColor === void 0) { + return 0; + } + const min = forceColor || 0; + if (env.TERM === "dumb") { + return min; + } + if (process.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + return min; + } + function getSupportLevel(stream) { + const level = supportsColor(stream, stream && stream.isTTY); + return translateLevel(level); + } + module2.exports = { + supportsColor: getSupportLevel, + stdout: translateLevel(supportsColor(true, tty.isatty(1))), + stderr: translateLevel(supportsColor(true, tty.isatty(2))) + }; + } +}); + +// node_modules/chalk/source/util.js +var require_util = __commonJS({ + "node_modules/chalk/source/util.js"(exports, module2) { + "use strict"; + var stringReplaceAll = (string, substring, replacer) => { + let index = string.indexOf(substring); + if (index === -1) { + return string; + } + const substringLength = substring.length; + let endIndex = 0; + let returnValue = ""; + do { + returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; + endIndex = index + substringLength; + index = string.indexOf(substring, endIndex); + } while (index !== -1); + returnValue += string.substr(endIndex); + return returnValue; + }; + var stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { + let endIndex = 0; + let returnValue = ""; + do { + const gotCR = string[index - 1] === "\r"; + returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? "\r\n" : "\n") + postfix; + endIndex = index + 1; + index = string.indexOf("\n", endIndex); + } while (index !== -1); + returnValue += string.substr(endIndex); + return returnValue; + }; + module2.exports = { + stringReplaceAll, + stringEncaseCRLFWithFirstIndex + }; + } +}); + +// node_modules/chalk/source/templates.js +var require_templates = __commonJS({ + "node_modules/chalk/source/templates.js"(exports, module2) { + "use strict"; + var TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; + var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; + var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; + var ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi; + var ESCAPES = /* @__PURE__ */ new Map([ + ["n", "\n"], + ["r", "\r"], + ["t", " "], + ["b", "\b"], + ["f", "\f"], + ["v", "\v"], + ["0", "\0"], + ["\\", "\\"], + ["e", "\x1B"], + ["a", "\x07"] + ]); + function unescape2(c) { + const u = c[0] === "u"; + const bracket = c[1] === "{"; + if (u && !bracket && c.length === 5 || c[0] === "x" && c.length === 3) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + if (u && bracket) { + return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); + } + return ESCAPES.get(c) || c; + } + function parseArguments(name, arguments_) { + const results = []; + const chunks = arguments_.trim().split(/\s*,\s*/g); + let matches; + for (const chunk of chunks) { + const number = Number(chunk); + if (!Number.isNaN(number)) { + results.push(number); + } else if (matches = chunk.match(STRING_REGEX)) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape2(escape) : character)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } + return results; + } + function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; + const results = []; + let matches; + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } + return results; + } + function buildStyle(chalk2, styles) { + const enabled = {}; + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } + let current = chalk2; + for (const [styleName, styles2] of Object.entries(enabled)) { + if (!Array.isArray(styles2)) { + continue; + } + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } + current = styles2.length > 0 ? current[styleName](...styles2) : current[styleName]; + } + return current; + } + module2.exports = (chalk2, temporary) => { + const styles = []; + const chunks = []; + let chunk = []; + temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => { + if (escapeCharacter) { + chunk.push(unescape2(escapeCharacter)); + } else if (style) { + const string = chunk.join(""); + chunk = []; + chunks.push(styles.length === 0 ? string : buildStyle(chalk2, styles)(string)); + styles.push({ inverse, styles: parseStyle(style) }); + } else if (close) { + if (styles.length === 0) { + throw new Error("Found extraneous } in Chalk template literal"); + } + chunks.push(buildStyle(chalk2, styles)(chunk.join(""))); + chunk = []; + styles.pop(); + } else { + chunk.push(character); + } + }); + chunks.push(chunk.join("")); + if (styles.length > 0) { + const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; + throw new Error(errMessage); + } + return chunks.join(""); + }; + } +}); + +// node_modules/chalk/source/index.js +var require_source = __commonJS({ + "node_modules/chalk/source/index.js"(exports, module2) { + "use strict"; + var ansiStyles = require_ansi_styles(); + var { stdout: stdoutColor, stderr: stderrColor } = require_supports_color(); + var { + stringReplaceAll, + stringEncaseCRLFWithFirstIndex + } = require_util(); + var { isArray } = Array; + var levelMapping = [ + "ansi", + "ansi", + "ansi256", + "ansi16m" + ]; + var styles = /* @__PURE__ */ Object.create(null); + var applyOptions = (object, options = {}) => { + if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) { + throw new Error("The `level` option should be an integer from 0 to 3"); + } + const colorLevel = stdoutColor ? stdoutColor.level : 0; + object.level = options.level === void 0 ? colorLevel : options.level; + }; + var ChalkClass = class { + constructor(options) { + return chalkFactory(options); + } + }; + var chalkFactory = (options) => { + const chalk3 = {}; + applyOptions(chalk3, options); + chalk3.template = (...arguments_) => chalkTag(chalk3.template, ...arguments_); + Object.setPrototypeOf(chalk3, Chalk2.prototype); + Object.setPrototypeOf(chalk3.template, chalk3); + chalk3.template.constructor = () => { + throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead."); + }; + chalk3.template.Instance = ChalkClass; + return chalk3.template; + }; + function Chalk2(options) { + return chalkFactory(options); + } + for (const [styleName, style] of Object.entries(ansiStyles)) { + styles[styleName] = { + get() { + const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty); + Object.defineProperty(this, styleName, { value: builder }); + return builder; + } + }; + } + styles.visible = { + get() { + const builder = createBuilder(this, this._styler, true); + Object.defineProperty(this, "visible", { value: builder }); + return builder; + } + }; + var usedModels = ["rgb", "hex", "keyword", "hsl", "hsv", "hwb", "ansi", "ansi256"]; + for (const model of usedModels) { + styles[model] = { + get() { + const { level } = this; + return function(...arguments_) { + const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler); + return createBuilder(this, styler, this._isEmpty); + }; + } + }; + } + for (const model of usedModels) { + const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const { level } = this; + return function(...arguments_) { + const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler); + return createBuilder(this, styler, this._isEmpty); + }; + } + }; + } + var proto = Object.defineProperties(() => { + }, { + ...styles, + level: { + enumerable: true, + get() { + return this._generator.level; + }, + set(level) { + this._generator.level = level; + } + } + }); + var createStyler = (open, close, parent) => { + let openAll; + let closeAll; + if (parent === void 0) { + openAll = open; + closeAll = close; + } else { + openAll = parent.openAll + open; + closeAll = close + parent.closeAll; + } + return { + open, + close, + openAll, + closeAll, + parent + }; + }; + var createBuilder = (self2, _styler, _isEmpty) => { + const builder = (...arguments_) => { + if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) { + return applyStyle(builder, chalkTag(builder, ...arguments_)); + } + return applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" ")); + }; + Object.setPrototypeOf(builder, proto); + builder._generator = self2; + builder._styler = _styler; + builder._isEmpty = _isEmpty; + return builder; + }; + var applyStyle = (self2, string) => { + if (self2.level <= 0 || !string) { + return self2._isEmpty ? "" : string; + } + let styler = self2._styler; + if (styler === void 0) { + return string; + } + const { openAll, closeAll } = styler; + if (string.indexOf("\x1B") !== -1) { + while (styler !== void 0) { + string = stringReplaceAll(string, styler.close, styler.open); + styler = styler.parent; + } + } + const lfIndex = string.indexOf("\n"); + if (lfIndex !== -1) { + string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex); + } + return openAll + string + closeAll; + }; + var template; + var chalkTag = (chalk3, ...strings) => { + const [firstString] = strings; + if (!isArray(firstString) || !isArray(firstString.raw)) { + return strings.join(" "); + } + const arguments_ = strings.slice(1); + const parts = [firstString.raw[0]]; + for (let i = 1; i < firstString.length; i++) { + parts.push( + String(arguments_[i - 1]).replace(/[{}\\]/g, "\\$&"), + String(firstString.raw[i]) + ); + } + if (template === void 0) { + template = require_templates(); + } + return template(chalk3, parts.join("")); + }; + Object.defineProperties(Chalk2.prototype, styles); + var chalk2 = Chalk2(); + chalk2.supportsColor = stdoutColor; + chalk2.stderr = Chalk2({ level: stderrColor ? stderrColor.level : 0 }); + chalk2.stderr.supportsColor = stderrColor; + module2.exports = chalk2; + } +}); + +// node_modules/lodash/_freeGlobal.js +var require_freeGlobal = __commonJS({ + "node_modules/lodash/_freeGlobal.js"(exports, module2) { + var freeGlobal = typeof global == "object" && global && global.Object === Object && global; + module2.exports = freeGlobal; + } +}); + +// node_modules/lodash/_root.js +var require_root = __commonJS({ + "node_modules/lodash/_root.js"(exports, module2) { + var freeGlobal = require_freeGlobal(); + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function("return this")(); + module2.exports = root; + } +}); + +// node_modules/lodash/_Symbol.js +var require_Symbol = __commonJS({ + "node_modules/lodash/_Symbol.js"(exports, module2) { + var root = require_root(); + var Symbol2 = root.Symbol; + module2.exports = Symbol2; + } +}); + +// node_modules/lodash/_copyArray.js +var require_copyArray = __commonJS({ + "node_modules/lodash/_copyArray.js"(exports, module2) { + function copyArray(source, array) { + var index = -1, length = source.length; + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + module2.exports = copyArray; + } +}); + +// node_modules/lodash/_getRawTag.js +var require_getRawTag = __commonJS({ + "node_modules/lodash/_getRawTag.js"(exports, module2) { + var Symbol2 = require_Symbol(); + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var nativeObjectToString = objectProto.toString; + var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0; + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; + try { + value[symToStringTag] = void 0; + var unmasked = true; + } catch (e) { + } + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + module2.exports = getRawTag; + } +}); + +// node_modules/lodash/_objectToString.js +var require_objectToString = __commonJS({ + "node_modules/lodash/_objectToString.js"(exports, module2) { + var objectProto = Object.prototype; + var nativeObjectToString = objectProto.toString; + function objectToString(value) { + return nativeObjectToString.call(value); + } + module2.exports = objectToString; + } +}); + +// node_modules/lodash/_baseGetTag.js +var require_baseGetTag = __commonJS({ + "node_modules/lodash/_baseGetTag.js"(exports, module2) { + var Symbol2 = require_Symbol(); + var getRawTag = require_getRawTag(); + var objectToString = require_objectToString(); + var nullTag = "[object Null]"; + var undefinedTag = "[object Undefined]"; + var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0; + function baseGetTag(value) { + if (value == null) { + return value === void 0 ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); + } + module2.exports = baseGetTag; + } +}); + +// node_modules/lodash/isObject.js +var require_isObject = __commonJS({ + "node_modules/lodash/isObject.js"(exports, module2) { + function isObject2(value) { + var type2 = typeof value; + return value != null && (type2 == "object" || type2 == "function"); + } + module2.exports = isObject2; + } +}); + +// node_modules/lodash/isFunction.js +var require_isFunction = __commonJS({ + "node_modules/lodash/isFunction.js"(exports, module2) { + var baseGetTag = require_baseGetTag(); + var isObject2 = require_isObject(); + var asyncTag = "[object AsyncFunction]"; + var funcTag = "[object Function]"; + var genTag = "[object GeneratorFunction]"; + var proxyTag = "[object Proxy]"; + function isFunction(value) { + if (!isObject2(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + module2.exports = isFunction; + } +}); + +// node_modules/lodash/_coreJsData.js +var require_coreJsData = __commonJS({ + "node_modules/lodash/_coreJsData.js"(exports, module2) { + var root = require_root(); + var coreJsData = root["__core-js_shared__"]; + module2.exports = coreJsData; + } +}); + +// node_modules/lodash/_isMasked.js +var require_isMasked = __commonJS({ + "node_modules/lodash/_isMasked.js"(exports, module2) { + var coreJsData = require_coreJsData(); + var maskSrcKey = function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + }(); + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + module2.exports = isMasked; + } +}); + +// node_modules/lodash/_toSource.js +var require_toSource = __commonJS({ + "node_modules/lodash/_toSource.js"(exports, module2) { + var funcProto = Function.prototype; + var funcToString = funcProto.toString; + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) { + } + try { + return func + ""; + } catch (e) { + } + } + return ""; + } + module2.exports = toSource; + } +}); + +// node_modules/lodash/_baseIsNative.js +var require_baseIsNative = __commonJS({ + "node_modules/lodash/_baseIsNative.js"(exports, module2) { + var isFunction = require_isFunction(); + var isMasked = require_isMasked(); + var isObject2 = require_isObject(); + var toSource = require_toSource(); + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var funcProto = Function.prototype; + var objectProto = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var reIsNative = RegExp( + "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + function baseIsNative(value) { + if (!isObject2(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + module2.exports = baseIsNative; + } +}); + +// node_modules/lodash/_getValue.js +var require_getValue = __commonJS({ + "node_modules/lodash/_getValue.js"(exports, module2) { + function getValue(object, key) { + return object == null ? void 0 : object[key]; + } + module2.exports = getValue; + } +}); + +// node_modules/lodash/_getNative.js +var require_getNative = __commonJS({ + "node_modules/lodash/_getNative.js"(exports, module2) { + var baseIsNative = require_baseIsNative(); + var getValue = require_getValue(); + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : void 0; + } + module2.exports = getNative; + } +}); + +// node_modules/lodash/_DataView.js +var require_DataView = __commonJS({ + "node_modules/lodash/_DataView.js"(exports, module2) { + var getNative = require_getNative(); + var root = require_root(); + var DataView = getNative(root, "DataView"); + module2.exports = DataView; + } +}); + +// node_modules/lodash/_Map.js +var require_Map = __commonJS({ + "node_modules/lodash/_Map.js"(exports, module2) { + var getNative = require_getNative(); + var root = require_root(); + var Map2 = getNative(root, "Map"); + module2.exports = Map2; + } +}); + +// node_modules/lodash/_Promise.js +var require_Promise = __commonJS({ + "node_modules/lodash/_Promise.js"(exports, module2) { + var getNative = require_getNative(); + var root = require_root(); + var Promise2 = getNative(root, "Promise"); + module2.exports = Promise2; + } +}); + +// node_modules/lodash/_Set.js +var require_Set = __commonJS({ + "node_modules/lodash/_Set.js"(exports, module2) { + var getNative = require_getNative(); + var root = require_root(); + var Set2 = getNative(root, "Set"); + module2.exports = Set2; + } +}); + +// node_modules/lodash/_WeakMap.js +var require_WeakMap = __commonJS({ + "node_modules/lodash/_WeakMap.js"(exports, module2) { + var getNative = require_getNative(); + var root = require_root(); + var WeakMap2 = getNative(root, "WeakMap"); + module2.exports = WeakMap2; + } +}); + +// node_modules/lodash/_getTag.js +var require_getTag = __commonJS({ + "node_modules/lodash/_getTag.js"(exports, module2) { + var DataView = require_DataView(); + var Map2 = require_Map(); + var Promise2 = require_Promise(); + var Set2 = require_Set(); + var WeakMap2 = require_WeakMap(); + var baseGetTag = require_baseGetTag(); + var toSource = require_toSource(); + var mapTag = "[object Map]"; + var objectTag = "[object Object]"; + var promiseTag = "[object Promise]"; + var setTag = "[object Set]"; + var weakMapTag = "[object WeakMap]"; + var dataViewTag = "[object DataView]"; + var dataViewCtorString = toSource(DataView); + var mapCtorString = toSource(Map2); + var promiseCtorString = toSource(Promise2); + var setCtorString = toSource(Set2); + var weakMapCtorString = toSource(WeakMap2); + var getTag = baseGetTag; + if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) { + getTag = function(value) { + var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : ""; + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag; + case mapCtorString: + return mapTag; + case promiseCtorString: + return promiseTag; + case setCtorString: + return setTag; + case weakMapCtorString: + return weakMapTag; + } + } + return result; + }; + } + module2.exports = getTag; + } +}); + +// node_modules/lodash/isLength.js +var require_isLength = __commonJS({ + "node_modules/lodash/isLength.js"(exports, module2) { + var MAX_SAFE_INTEGER = 9007199254740991; + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + module2.exports = isLength; + } +}); + +// node_modules/lodash/isArrayLike.js +var require_isArrayLike = __commonJS({ + "node_modules/lodash/isArrayLike.js"(exports, module2) { + var isFunction = require_isFunction(); + var isLength = require_isLength(); + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + module2.exports = isArrayLike; + } +}); + +// node_modules/lodash/isArray.js +var require_isArray = __commonJS({ + "node_modules/lodash/isArray.js"(exports, module2) { + var isArray = Array.isArray; + module2.exports = isArray; + } +}); + +// node_modules/lodash/isObjectLike.js +var require_isObjectLike = __commonJS({ + "node_modules/lodash/isObjectLike.js"(exports, module2) { + function isObjectLike(value) { + return value != null && typeof value == "object"; + } + module2.exports = isObjectLike; + } +}); + +// node_modules/lodash/isString.js +var require_isString = __commonJS({ + "node_modules/lodash/isString.js"(exports, module2) { + var baseGetTag = require_baseGetTag(); + var isArray = require_isArray(); + var isObjectLike = require_isObjectLike(); + var stringTag = "[object String]"; + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag; + } + module2.exports = isString; + } +}); + +// node_modules/lodash/_iteratorToArray.js +var require_iteratorToArray = __commonJS({ + "node_modules/lodash/_iteratorToArray.js"(exports, module2) { + function iteratorToArray(iterator) { + var data, result = []; + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + module2.exports = iteratorToArray; + } +}); + +// node_modules/lodash/_mapToArray.js +var require_mapToArray = __commonJS({ + "node_modules/lodash/_mapToArray.js"(exports, module2) { + function mapToArray(map2) { + var index = -1, result = Array(map2.size); + map2.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + module2.exports = mapToArray; + } +}); + +// node_modules/lodash/_setToArray.js +var require_setToArray = __commonJS({ + "node_modules/lodash/_setToArray.js"(exports, module2) { + function setToArray(set2) { + var index = -1, result = Array(set2.size); + set2.forEach(function(value) { + result[++index] = value; + }); + return result; + } + module2.exports = setToArray; + } +}); + +// node_modules/lodash/_asciiToArray.js +var require_asciiToArray = __commonJS({ + "node_modules/lodash/_asciiToArray.js"(exports, module2) { + function asciiToArray(string) { + return string.split(""); + } + module2.exports = asciiToArray; + } +}); + +// node_modules/lodash/_hasUnicode.js +var require_hasUnicode = __commonJS({ + "node_modules/lodash/_hasUnicode.js"(exports, module2) { + var rsAstralRange = "\\ud800-\\udfff"; + var rsComboMarksRange = "\\u0300-\\u036f"; + var reComboHalfMarksRange = "\\ufe20-\\ufe2f"; + var rsComboSymbolsRange = "\\u20d0-\\u20ff"; + var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; + var rsVarRange = "\\ufe0e\\ufe0f"; + var rsZWJ = "\\u200d"; + var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); + function hasUnicode(string) { + return reHasUnicode.test(string); + } + module2.exports = hasUnicode; + } +}); + +// node_modules/lodash/_unicodeToArray.js +var require_unicodeToArray = __commonJS({ + "node_modules/lodash/_unicodeToArray.js"(exports, module2) { + var rsAstralRange = "\\ud800-\\udfff"; + var rsComboMarksRange = "\\u0300-\\u036f"; + var reComboHalfMarksRange = "\\ufe20-\\ufe2f"; + var rsComboSymbolsRange = "\\u20d0-\\u20ff"; + var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; + var rsVarRange = "\\ufe0e\\ufe0f"; + var rsAstral = "[" + rsAstralRange + "]"; + var rsCombo = "[" + rsComboRange + "]"; + var rsFitz = "\\ud83c[\\udffb-\\udfff]"; + var rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")"; + var rsNonAstral = "[^" + rsAstralRange + "]"; + var rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}"; + var rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]"; + var rsZWJ = "\\u200d"; + var reOptMod = rsModifier + "?"; + var rsOptVar = "[" + rsVarRange + "]?"; + var rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*"; + var rsSeq = rsOptVar + reOptMod + rsOptJoin; + var rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; + var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + module2.exports = unicodeToArray; + } +}); + +// node_modules/lodash/_stringToArray.js +var require_stringToArray = __commonJS({ + "node_modules/lodash/_stringToArray.js"(exports, module2) { + var asciiToArray = require_asciiToArray(); + var hasUnicode = require_hasUnicode(); + var unicodeToArray = require_unicodeToArray(); + function stringToArray(string) { + return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); + } + module2.exports = stringToArray; + } +}); + +// node_modules/lodash/_arrayMap.js +var require_arrayMap = __commonJS({ + "node_modules/lodash/_arrayMap.js"(exports, module2) { + function arrayMap(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length, result = Array(length); + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + module2.exports = arrayMap; + } +}); + +// node_modules/lodash/_baseValues.js +var require_baseValues = __commonJS({ + "node_modules/lodash/_baseValues.js"(exports, module2) { + var arrayMap = require_arrayMap(); + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + module2.exports = baseValues; + } +}); + +// node_modules/lodash/_baseTimes.js +var require_baseTimes = __commonJS({ + "node_modules/lodash/_baseTimes.js"(exports, module2) { + function baseTimes(n, iteratee) { + var index = -1, result = Array(n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + module2.exports = baseTimes; + } +}); + +// node_modules/lodash/_baseIsArguments.js +var require_baseIsArguments = __commonJS({ + "node_modules/lodash/_baseIsArguments.js"(exports, module2) { + var baseGetTag = require_baseGetTag(); + var isObjectLike = require_isObjectLike(); + var argsTag = "[object Arguments]"; + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + module2.exports = baseIsArguments; + } +}); + +// node_modules/lodash/isArguments.js +var require_isArguments = __commonJS({ + "node_modules/lodash/isArguments.js"(exports, module2) { + var baseIsArguments = require_baseIsArguments(); + var isObjectLike = require_isObjectLike(); + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var isArguments = baseIsArguments(function() { + return arguments; + }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); + }; + module2.exports = isArguments; + } +}); + +// node_modules/lodash/stubFalse.js +var require_stubFalse = __commonJS({ + "node_modules/lodash/stubFalse.js"(exports, module2) { + function stubFalse() { + return false; + } + module2.exports = stubFalse; + } +}); + +// node_modules/lodash/isBuffer.js +var require_isBuffer = __commonJS({ + "node_modules/lodash/isBuffer.js"(exports, module2) { + var root = require_root(); + var stubFalse = require_stubFalse(); + var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2; + var moduleExports = freeModule && freeModule.exports === freeExports; + var Buffer2 = moduleExports ? root.Buffer : void 0; + var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0; + var isBuffer = nativeIsBuffer || stubFalse; + module2.exports = isBuffer; + } +}); + +// node_modules/lodash/_isIndex.js +var require_isIndex = __commonJS({ + "node_modules/lodash/_isIndex.js"(exports, module2) { + var MAX_SAFE_INTEGER = 9007199254740991; + var reIsUint = /^(?:0|[1-9]\d*)$/; + function isIndex(value, length) { + var type2 = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (type2 == "number" || type2 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); + } + module2.exports = isIndex; + } +}); + +// node_modules/lodash/_baseIsTypedArray.js +var require_baseIsTypedArray = __commonJS({ + "node_modules/lodash/_baseIsTypedArray.js"(exports, module2) { + var baseGetTag = require_baseGetTag(); + var isLength = require_isLength(); + var isObjectLike = require_isObjectLike(); + var argsTag = "[object Arguments]"; + var arrayTag = "[object Array]"; + var boolTag = "[object Boolean]"; + var dateTag = "[object Date]"; + var errorTag = "[object Error]"; + var funcTag = "[object Function]"; + var mapTag = "[object Map]"; + var numberTag = "[object Number]"; + var objectTag = "[object Object]"; + var regexpTag = "[object RegExp]"; + var setTag = "[object Set]"; + var stringTag = "[object String]"; + var weakMapTag = "[object WeakMap]"; + var arrayBufferTag = "[object ArrayBuffer]"; + var dataViewTag = "[object DataView]"; + var float32Tag = "[object Float32Array]"; + var float64Tag = "[object Float64Array]"; + var int8Tag = "[object Int8Array]"; + var int16Tag = "[object Int16Array]"; + var int32Tag = "[object Int32Array]"; + var uint8Tag = "[object Uint8Array]"; + var uint8ClampedTag = "[object Uint8ClampedArray]"; + var uint16Tag = "[object Uint16Array]"; + var uint32Tag = "[object Uint32Array]"; + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + module2.exports = baseIsTypedArray; + } +}); + +// node_modules/lodash/_baseUnary.js +var require_baseUnary = __commonJS({ + "node_modules/lodash/_baseUnary.js"(exports, module2) { + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + module2.exports = baseUnary; + } +}); + +// node_modules/lodash/_nodeUtil.js +var require_nodeUtil = __commonJS({ + "node_modules/lodash/_nodeUtil.js"(exports, module2) { + var freeGlobal = require_freeGlobal(); + var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2; + var moduleExports = freeModule && freeModule.exports === freeExports; + var freeProcess = moduleExports && freeGlobal.process; + var nodeUtil = function() { + try { + var types = freeModule && freeModule.require && freeModule.require("util").types; + if (types) { + return types; + } + return freeProcess && freeProcess.binding && freeProcess.binding("util"); + } catch (e) { + } + }(); + module2.exports = nodeUtil; + } +}); + +// node_modules/lodash/isTypedArray.js +var require_isTypedArray = __commonJS({ + "node_modules/lodash/isTypedArray.js"(exports, module2) { + var baseIsTypedArray = require_baseIsTypedArray(); + var baseUnary = require_baseUnary(); + var nodeUtil = require_nodeUtil(); + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + module2.exports = isTypedArray; + } +}); + +// node_modules/lodash/_arrayLikeKeys.js +var require_arrayLikeKeys = __commonJS({ + "node_modules/lodash/_arrayLikeKeys.js"(exports, module2) { + var baseTimes = require_baseTimes(); + var isArguments = require_isArguments(); + var isArray = require_isArray(); + var isBuffer = require_isBuffer(); + var isIndex = require_isIndex(); + var isTypedArray = require_isTypedArray(); + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + module2.exports = arrayLikeKeys; + } +}); + +// node_modules/lodash/_isPrototype.js +var require_isPrototype = __commonJS({ + "node_modules/lodash/_isPrototype.js"(exports, module2) { + var objectProto = Object.prototype; + function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; + return value === proto; + } + module2.exports = isPrototype; + } +}); + +// node_modules/lodash/_overArg.js +var require_overArg = __commonJS({ + "node_modules/lodash/_overArg.js"(exports, module2) { + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + module2.exports = overArg; + } +}); + +// node_modules/lodash/_nativeKeys.js +var require_nativeKeys = __commonJS({ + "node_modules/lodash/_nativeKeys.js"(exports, module2) { + var overArg = require_overArg(); + var nativeKeys = overArg(Object.keys, Object); + module2.exports = nativeKeys; + } +}); + +// node_modules/lodash/_baseKeys.js +var require_baseKeys = __commonJS({ + "node_modules/lodash/_baseKeys.js"(exports, module2) { + var isPrototype = require_isPrototype(); + var nativeKeys = require_nativeKeys(); + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != "constructor") { + result.push(key); + } + } + return result; + } + module2.exports = baseKeys; + } +}); + +// node_modules/lodash/keys.js +var require_keys = __commonJS({ + "node_modules/lodash/keys.js"(exports, module2) { + var arrayLikeKeys = require_arrayLikeKeys(); + var baseKeys = require_baseKeys(); + var isArrayLike = require_isArrayLike(); + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + module2.exports = keys; + } +}); + +// node_modules/lodash/values.js +var require_values = __commonJS({ + "node_modules/lodash/values.js"(exports, module2) { + var baseValues = require_baseValues(); + var keys = require_keys(); + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + module2.exports = values; + } +}); + +// node_modules/lodash/toArray.js +var require_toArray = __commonJS({ + "node_modules/lodash/toArray.js"(exports, module2) { + var Symbol2 = require_Symbol(); + var copyArray = require_copyArray(); + var getTag = require_getTag(); + var isArrayLike = require_isArrayLike(); + var isString = require_isString(); + var iteratorToArray = require_iteratorToArray(); + var mapToArray = require_mapToArray(); + var setToArray = require_setToArray(); + var stringToArray = require_stringToArray(); + var values = require_values(); + var mapTag = "[object Map]"; + var setTag = "[object Set]"; + var symIterator = Symbol2 ? Symbol2.iterator : void 0; + function toArray2(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values; + return func(value); + } + module2.exports = toArray2; + } +}); + +// node_modules/node-emoji/lib/emoji.json +var require_emoji = __commonJS({ + "node_modules/node-emoji/lib/emoji.json"(exports, module2) { + module2.exports = { "100": "\u{1F4AF}", "1234": "\u{1F522}", umbrella_with_rain_drops: "\u2614", coffee: "\u2615", aries: "\u2648", taurus: "\u2649", sagittarius: "\u2650", capricorn: "\u2651", aquarius: "\u2652", pisces: "\u2653", anchor: "\u2693", white_check_mark: "\u2705", sparkles: "\u2728", question: "\u2753", grey_question: "\u2754", grey_exclamation: "\u2755", exclamation: "\u2757", heavy_exclamation_mark: "\u2757", heavy_plus_sign: "\u2795", heavy_minus_sign: "\u2796", heavy_division_sign: "\u2797", hash: "#\uFE0F\u20E3", keycap_star: "*\uFE0F\u20E3", zero: "0\uFE0F\u20E3", one: "1\uFE0F\u20E3", two: "2\uFE0F\u20E3", three: "3\uFE0F\u20E3", four: "4\uFE0F\u20E3", five: "5\uFE0F\u20E3", six: "6\uFE0F\u20E3", seven: "7\uFE0F\u20E3", eight: "8\uFE0F\u20E3", nine: "9\uFE0F\u20E3", copyright: "\xA9\uFE0F", registered: "\xAE\uFE0F", mahjong: "\u{1F004}", black_joker: "\u{1F0CF}", a: "\u{1F170}\uFE0F", b: "\u{1F171}\uFE0F", o2: "\u{1F17E}\uFE0F", parking: "\u{1F17F}\uFE0F", ab: "\u{1F18E}", cl: "\u{1F191}", cool: "\u{1F192}", free: "\u{1F193}", id: "\u{1F194}", new: "\u{1F195}", ng: "\u{1F196}", ok: "\u{1F197}", sos: "\u{1F198}", up: "\u{1F199}", vs: "\u{1F19A}", "flag-ac": "\u{1F1E6}\u{1F1E8}", "flag-ad": "\u{1F1E6}\u{1F1E9}", "flag-ae": "\u{1F1E6}\u{1F1EA}", "flag-af": "\u{1F1E6}\u{1F1EB}", "flag-ag": "\u{1F1E6}\u{1F1EC}", "flag-ai": "\u{1F1E6}\u{1F1EE}", "flag-al": "\u{1F1E6}\u{1F1F1}", "flag-am": "\u{1F1E6}\u{1F1F2}", "flag-ao": "\u{1F1E6}\u{1F1F4}", "flag-aq": "\u{1F1E6}\u{1F1F6}", "flag-ar": "\u{1F1E6}\u{1F1F7}", "flag-as": "\u{1F1E6}\u{1F1F8}", "flag-at": "\u{1F1E6}\u{1F1F9}", "flag-au": "\u{1F1E6}\u{1F1FA}", "flag-aw": "\u{1F1E6}\u{1F1FC}", "flag-ax": "\u{1F1E6}\u{1F1FD}", "flag-az": "\u{1F1E6}\u{1F1FF}", "flag-ba": "\u{1F1E7}\u{1F1E6}", "flag-bb": "\u{1F1E7}\u{1F1E7}", "flag-bd": "\u{1F1E7}\u{1F1E9}", "flag-be": "\u{1F1E7}\u{1F1EA}", "flag-bf": "\u{1F1E7}\u{1F1EB}", "flag-bg": "\u{1F1E7}\u{1F1EC}", "flag-bh": "\u{1F1E7}\u{1F1ED}", "flag-bi": "\u{1F1E7}\u{1F1EE}", "flag-bj": "\u{1F1E7}\u{1F1EF}", "flag-bl": "\u{1F1E7}\u{1F1F1}", "flag-bm": "\u{1F1E7}\u{1F1F2}", "flag-bn": "\u{1F1E7}\u{1F1F3}", "flag-bo": "\u{1F1E7}\u{1F1F4}", "flag-bq": "\u{1F1E7}\u{1F1F6}", "flag-br": "\u{1F1E7}\u{1F1F7}", "flag-bs": "\u{1F1E7}\u{1F1F8}", "flag-bt": "\u{1F1E7}\u{1F1F9}", "flag-bv": "\u{1F1E7}\u{1F1FB}", "flag-bw": "\u{1F1E7}\u{1F1FC}", "flag-by": "\u{1F1E7}\u{1F1FE}", "flag-bz": "\u{1F1E7}\u{1F1FF}", "flag-ca": "\u{1F1E8}\u{1F1E6}", "flag-cc": "\u{1F1E8}\u{1F1E8}", "flag-cd": "\u{1F1E8}\u{1F1E9}", "flag-cf": "\u{1F1E8}\u{1F1EB}", "flag-cg": "\u{1F1E8}\u{1F1EC}", "flag-ch": "\u{1F1E8}\u{1F1ED}", "flag-ci": "\u{1F1E8}\u{1F1EE}", "flag-ck": "\u{1F1E8}\u{1F1F0}", "flag-cl": "\u{1F1E8}\u{1F1F1}", "flag-cm": "\u{1F1E8}\u{1F1F2}", cn: "\u{1F1E8}\u{1F1F3}", "flag-cn": "\u{1F1E8}\u{1F1F3}", "flag-co": "\u{1F1E8}\u{1F1F4}", "flag-cp": "\u{1F1E8}\u{1F1F5}", "flag-cr": "\u{1F1E8}\u{1F1F7}", "flag-cu": "\u{1F1E8}\u{1F1FA}", "flag-cv": "\u{1F1E8}\u{1F1FB}", "flag-cw": "\u{1F1E8}\u{1F1FC}", "flag-cx": "\u{1F1E8}\u{1F1FD}", "flag-cy": "\u{1F1E8}\u{1F1FE}", "flag-cz": "\u{1F1E8}\u{1F1FF}", de: "\u{1F1E9}\u{1F1EA}", "flag-de": "\u{1F1E9}\u{1F1EA}", "flag-dg": "\u{1F1E9}\u{1F1EC}", "flag-dj": "\u{1F1E9}\u{1F1EF}", "flag-dk": "\u{1F1E9}\u{1F1F0}", "flag-dm": "\u{1F1E9}\u{1F1F2}", "flag-do": "\u{1F1E9}\u{1F1F4}", "flag-dz": "\u{1F1E9}\u{1F1FF}", "flag-ea": "\u{1F1EA}\u{1F1E6}", "flag-ec": "\u{1F1EA}\u{1F1E8}", "flag-ee": "\u{1F1EA}\u{1F1EA}", "flag-eg": "\u{1F1EA}\u{1F1EC}", "flag-eh": "\u{1F1EA}\u{1F1ED}", "flag-er": "\u{1F1EA}\u{1F1F7}", es: "\u{1F1EA}\u{1F1F8}", "flag-es": "\u{1F1EA}\u{1F1F8}", "flag-et": "\u{1F1EA}\u{1F1F9}", "flag-eu": "\u{1F1EA}\u{1F1FA}", "flag-fi": "\u{1F1EB}\u{1F1EE}", "flag-fj": "\u{1F1EB}\u{1F1EF}", "flag-fk": "\u{1F1EB}\u{1F1F0}", "flag-fm": "\u{1F1EB}\u{1F1F2}", "flag-fo": "\u{1F1EB}\u{1F1F4}", fr: "\u{1F1EB}\u{1F1F7}", "flag-fr": "\u{1F1EB}\u{1F1F7}", "flag-ga": "\u{1F1EC}\u{1F1E6}", gb: "\u{1F1EC}\u{1F1E7}", uk: "\u{1F1EC}\u{1F1E7}", "flag-gb": "\u{1F1EC}\u{1F1E7}", "flag-gd": "\u{1F1EC}\u{1F1E9}", "flag-ge": "\u{1F1EC}\u{1F1EA}", "flag-gf": "\u{1F1EC}\u{1F1EB}", "flag-gg": "\u{1F1EC}\u{1F1EC}", "flag-gh": "\u{1F1EC}\u{1F1ED}", "flag-gi": "\u{1F1EC}\u{1F1EE}", "flag-gl": "\u{1F1EC}\u{1F1F1}", "flag-gm": "\u{1F1EC}\u{1F1F2}", "flag-gn": "\u{1F1EC}\u{1F1F3}", "flag-gp": "\u{1F1EC}\u{1F1F5}", "flag-gq": "\u{1F1EC}\u{1F1F6}", "flag-gr": "\u{1F1EC}\u{1F1F7}", "flag-gs": "\u{1F1EC}\u{1F1F8}", "flag-gt": "\u{1F1EC}\u{1F1F9}", "flag-gu": "\u{1F1EC}\u{1F1FA}", "flag-gw": "\u{1F1EC}\u{1F1FC}", "flag-gy": "\u{1F1EC}\u{1F1FE}", "flag-hk": "\u{1F1ED}\u{1F1F0}", "flag-hm": "\u{1F1ED}\u{1F1F2}", "flag-hn": "\u{1F1ED}\u{1F1F3}", "flag-hr": "\u{1F1ED}\u{1F1F7}", "flag-ht": "\u{1F1ED}\u{1F1F9}", "flag-hu": "\u{1F1ED}\u{1F1FA}", "flag-ic": "\u{1F1EE}\u{1F1E8}", "flag-id": "\u{1F1EE}\u{1F1E9}", "flag-ie": "\u{1F1EE}\u{1F1EA}", "flag-il": "\u{1F1EE}\u{1F1F1}", "flag-im": "\u{1F1EE}\u{1F1F2}", "flag-in": "\u{1F1EE}\u{1F1F3}", "flag-io": "\u{1F1EE}\u{1F1F4}", "flag-iq": "\u{1F1EE}\u{1F1F6}", "flag-ir": "\u{1F1EE}\u{1F1F7}", "flag-is": "\u{1F1EE}\u{1F1F8}", it: "\u{1F1EE}\u{1F1F9}", "flag-it": "\u{1F1EE}\u{1F1F9}", "flag-je": "\u{1F1EF}\u{1F1EA}", "flag-jm": "\u{1F1EF}\u{1F1F2}", "flag-jo": "\u{1F1EF}\u{1F1F4}", jp: "\u{1F1EF}\u{1F1F5}", "flag-jp": "\u{1F1EF}\u{1F1F5}", "flag-ke": "\u{1F1F0}\u{1F1EA}", "flag-kg": "\u{1F1F0}\u{1F1EC}", "flag-kh": "\u{1F1F0}\u{1F1ED}", "flag-ki": "\u{1F1F0}\u{1F1EE}", "flag-km": "\u{1F1F0}\u{1F1F2}", "flag-kn": "\u{1F1F0}\u{1F1F3}", "flag-kp": "\u{1F1F0}\u{1F1F5}", kr: "\u{1F1F0}\u{1F1F7}", "flag-kr": "\u{1F1F0}\u{1F1F7}", "flag-kw": "\u{1F1F0}\u{1F1FC}", "flag-ky": "\u{1F1F0}\u{1F1FE}", "flag-kz": "\u{1F1F0}\u{1F1FF}", "flag-la": "\u{1F1F1}\u{1F1E6}", "flag-lb": "\u{1F1F1}\u{1F1E7}", "flag-lc": "\u{1F1F1}\u{1F1E8}", "flag-li": "\u{1F1F1}\u{1F1EE}", "flag-lk": "\u{1F1F1}\u{1F1F0}", "flag-lr": "\u{1F1F1}\u{1F1F7}", "flag-ls": "\u{1F1F1}\u{1F1F8}", "flag-lt": "\u{1F1F1}\u{1F1F9}", "flag-lu": "\u{1F1F1}\u{1F1FA}", "flag-lv": "\u{1F1F1}\u{1F1FB}", "flag-ly": "\u{1F1F1}\u{1F1FE}", "flag-ma": "\u{1F1F2}\u{1F1E6}", "flag-mc": "\u{1F1F2}\u{1F1E8}", "flag-md": "\u{1F1F2}\u{1F1E9}", "flag-me": "\u{1F1F2}\u{1F1EA}", "flag-mf": "\u{1F1F2}\u{1F1EB}", "flag-mg": "\u{1F1F2}\u{1F1EC}", "flag-mh": "\u{1F1F2}\u{1F1ED}", "flag-mk": "\u{1F1F2}\u{1F1F0}", "flag-ml": "\u{1F1F2}\u{1F1F1}", "flag-mm": "\u{1F1F2}\u{1F1F2}", "flag-mn": "\u{1F1F2}\u{1F1F3}", "flag-mo": "\u{1F1F2}\u{1F1F4}", "flag-mp": "\u{1F1F2}\u{1F1F5}", "flag-mq": "\u{1F1F2}\u{1F1F6}", "flag-mr": "\u{1F1F2}\u{1F1F7}", "flag-ms": "\u{1F1F2}\u{1F1F8}", "flag-mt": "\u{1F1F2}\u{1F1F9}", "flag-mu": "\u{1F1F2}\u{1F1FA}", "flag-mv": "\u{1F1F2}\u{1F1FB}", "flag-mw": "\u{1F1F2}\u{1F1FC}", "flag-mx": "\u{1F1F2}\u{1F1FD}", "flag-my": "\u{1F1F2}\u{1F1FE}", "flag-mz": "\u{1F1F2}\u{1F1FF}", "flag-na": "\u{1F1F3}\u{1F1E6}", "flag-nc": "\u{1F1F3}\u{1F1E8}", "flag-ne": "\u{1F1F3}\u{1F1EA}", "flag-nf": "\u{1F1F3}\u{1F1EB}", "flag-ng": "\u{1F1F3}\u{1F1EC}", "flag-ni": "\u{1F1F3}\u{1F1EE}", "flag-nl": "\u{1F1F3}\u{1F1F1}", "flag-no": "\u{1F1F3}\u{1F1F4}", "flag-np": "\u{1F1F3}\u{1F1F5}", "flag-nr": "\u{1F1F3}\u{1F1F7}", "flag-nu": "\u{1F1F3}\u{1F1FA}", "flag-nz": "\u{1F1F3}\u{1F1FF}", "flag-om": "\u{1F1F4}\u{1F1F2}", "flag-pa": "\u{1F1F5}\u{1F1E6}", "flag-pe": "\u{1F1F5}\u{1F1EA}", "flag-pf": "\u{1F1F5}\u{1F1EB}", "flag-pg": "\u{1F1F5}\u{1F1EC}", "flag-ph": "\u{1F1F5}\u{1F1ED}", "flag-pk": "\u{1F1F5}\u{1F1F0}", "flag-pl": "\u{1F1F5}\u{1F1F1}", "flag-pm": "\u{1F1F5}\u{1F1F2}", "flag-pn": "\u{1F1F5}\u{1F1F3}", "flag-pr": "\u{1F1F5}\u{1F1F7}", "flag-ps": "\u{1F1F5}\u{1F1F8}", "flag-pt": "\u{1F1F5}\u{1F1F9}", "flag-pw": "\u{1F1F5}\u{1F1FC}", "flag-py": "\u{1F1F5}\u{1F1FE}", "flag-qa": "\u{1F1F6}\u{1F1E6}", "flag-re": "\u{1F1F7}\u{1F1EA}", "flag-ro": "\u{1F1F7}\u{1F1F4}", "flag-rs": "\u{1F1F7}\u{1F1F8}", ru: "\u{1F1F7}\u{1F1FA}", "flag-ru": "\u{1F1F7}\u{1F1FA}", "flag-rw": "\u{1F1F7}\u{1F1FC}", "flag-sa": "\u{1F1F8}\u{1F1E6}", "flag-sb": "\u{1F1F8}\u{1F1E7}", "flag-sc": "\u{1F1F8}\u{1F1E8}", "flag-sd": "\u{1F1F8}\u{1F1E9}", "flag-se": "\u{1F1F8}\u{1F1EA}", "flag-sg": "\u{1F1F8}\u{1F1EC}", "flag-sh": "\u{1F1F8}\u{1F1ED}", "flag-si": "\u{1F1F8}\u{1F1EE}", "flag-sj": "\u{1F1F8}\u{1F1EF}", "flag-sk": "\u{1F1F8}\u{1F1F0}", "flag-sl": "\u{1F1F8}\u{1F1F1}", "flag-sm": "\u{1F1F8}\u{1F1F2}", "flag-sn": "\u{1F1F8}\u{1F1F3}", "flag-so": "\u{1F1F8}\u{1F1F4}", "flag-sr": "\u{1F1F8}\u{1F1F7}", "flag-ss": "\u{1F1F8}\u{1F1F8}", "flag-st": "\u{1F1F8}\u{1F1F9}", "flag-sv": "\u{1F1F8}\u{1F1FB}", "flag-sx": "\u{1F1F8}\u{1F1FD}", "flag-sy": "\u{1F1F8}\u{1F1FE}", "flag-sz": "\u{1F1F8}\u{1F1FF}", "flag-ta": "\u{1F1F9}\u{1F1E6}", "flag-tc": "\u{1F1F9}\u{1F1E8}", "flag-td": "\u{1F1F9}\u{1F1E9}", "flag-tf": "\u{1F1F9}\u{1F1EB}", "flag-tg": "\u{1F1F9}\u{1F1EC}", "flag-th": "\u{1F1F9}\u{1F1ED}", "flag-tj": "\u{1F1F9}\u{1F1EF}", "flag-tk": "\u{1F1F9}\u{1F1F0}", "flag-tl": "\u{1F1F9}\u{1F1F1}", "flag-tm": "\u{1F1F9}\u{1F1F2}", "flag-tn": "\u{1F1F9}\u{1F1F3}", "flag-to": "\u{1F1F9}\u{1F1F4}", "flag-tr": "\u{1F1F9}\u{1F1F7}", "flag-tt": "\u{1F1F9}\u{1F1F9}", "flag-tv": "\u{1F1F9}\u{1F1FB}", "flag-tw": "\u{1F1F9}\u{1F1FC}", "flag-tz": "\u{1F1F9}\u{1F1FF}", "flag-ua": "\u{1F1FA}\u{1F1E6}", "flag-ug": "\u{1F1FA}\u{1F1EC}", "flag-um": "\u{1F1FA}\u{1F1F2}", "flag-un": "\u{1F1FA}\u{1F1F3}", us: "\u{1F1FA}\u{1F1F8}", "flag-us": "\u{1F1FA}\u{1F1F8}", "flag-uy": "\u{1F1FA}\u{1F1FE}", "flag-uz": "\u{1F1FA}\u{1F1FF}", "flag-va": "\u{1F1FB}\u{1F1E6}", "flag-vc": "\u{1F1FB}\u{1F1E8}", "flag-ve": "\u{1F1FB}\u{1F1EA}", "flag-vg": "\u{1F1FB}\u{1F1EC}", "flag-vi": "\u{1F1FB}\u{1F1EE}", "flag-vn": "\u{1F1FB}\u{1F1F3}", "flag-vu": "\u{1F1FB}\u{1F1FA}", "flag-wf": "\u{1F1FC}\u{1F1EB}", "flag-ws": "\u{1F1FC}\u{1F1F8}", "flag-xk": "\u{1F1FD}\u{1F1F0}", "flag-ye": "\u{1F1FE}\u{1F1EA}", "flag-yt": "\u{1F1FE}\u{1F1F9}", "flag-za": "\u{1F1FF}\u{1F1E6}", "flag-zm": "\u{1F1FF}\u{1F1F2}", "flag-zw": "\u{1F1FF}\u{1F1FC}", koko: "\u{1F201}", sa: "\u{1F202}\uFE0F", u7121: "\u{1F21A}", u6307: "\u{1F22F}", u7981: "\u{1F232}", u7a7a: "\u{1F233}", u5408: "\u{1F234}", u6e80: "\u{1F235}", u6709: "\u{1F236}", u6708: "\u{1F237}\uFE0F", u7533: "\u{1F238}", u5272: "\u{1F239}", u55b6: "\u{1F23A}", ideograph_advantage: "\u{1F250}", accept: "\u{1F251}", cyclone: "\u{1F300}", foggy: "\u{1F301}", closed_umbrella: "\u{1F302}", night_with_stars: "\u{1F303}", sunrise_over_mountains: "\u{1F304}", sunrise: "\u{1F305}", city_sunset: "\u{1F306}", city_sunrise: "\u{1F307}", rainbow: "\u{1F308}", bridge_at_night: "\u{1F309}", ocean: "\u{1F30A}", volcano: "\u{1F30B}", milky_way: "\u{1F30C}", earth_africa: "\u{1F30D}", earth_americas: "\u{1F30E}", earth_asia: "\u{1F30F}", globe_with_meridians: "\u{1F310}", new_moon: "\u{1F311}", waxing_crescent_moon: "\u{1F312}", first_quarter_moon: "\u{1F313}", moon: "\u{1F314}", waxing_gibbous_moon: "\u{1F314}", full_moon: "\u{1F315}", waning_gibbous_moon: "\u{1F316}", last_quarter_moon: "\u{1F317}", waning_crescent_moon: "\u{1F318}", crescent_moon: "\u{1F319}", new_moon_with_face: "\u{1F31A}", first_quarter_moon_with_face: "\u{1F31B}", last_quarter_moon_with_face: "\u{1F31C}", full_moon_with_face: "\u{1F31D}", sun_with_face: "\u{1F31E}", star2: "\u{1F31F}", stars: "\u{1F320}", thermometer: "\u{1F321}\uFE0F", mostly_sunny: "\u{1F324}\uFE0F", sun_small_cloud: "\u{1F324}\uFE0F", barely_sunny: "\u{1F325}\uFE0F", sun_behind_cloud: "\u{1F325}\uFE0F", partly_sunny_rain: "\u{1F326}\uFE0F", sun_behind_rain_cloud: "\u{1F326}\uFE0F", rain_cloud: "\u{1F327}\uFE0F", snow_cloud: "\u{1F328}\uFE0F", lightning: "\u{1F329}\uFE0F", lightning_cloud: "\u{1F329}\uFE0F", tornado: "\u{1F32A}\uFE0F", tornado_cloud: "\u{1F32A}\uFE0F", fog: "\u{1F32B}\uFE0F", wind_blowing_face: "\u{1F32C}\uFE0F", hotdog: "\u{1F32D}", taco: "\u{1F32E}", burrito: "\u{1F32F}", chestnut: "\u{1F330}", seedling: "\u{1F331}", evergreen_tree: "\u{1F332}", deciduous_tree: "\u{1F333}", palm_tree: "\u{1F334}", cactus: "\u{1F335}", hot_pepper: "\u{1F336}\uFE0F", tulip: "\u{1F337}", cherry_blossom: "\u{1F338}", rose: "\u{1F339}", hibiscus: "\u{1F33A}", sunflower: "\u{1F33B}", blossom: "\u{1F33C}", corn: "\u{1F33D}", ear_of_rice: "\u{1F33E}", herb: "\u{1F33F}", four_leaf_clover: "\u{1F340}", maple_leaf: "\u{1F341}", fallen_leaf: "\u{1F342}", leaves: "\u{1F343}", mushroom: "\u{1F344}", tomato: "\u{1F345}", eggplant: "\u{1F346}", grapes: "\u{1F347}", melon: "\u{1F348}", watermelon: "\u{1F349}", tangerine: "\u{1F34A}", lemon: "\u{1F34B}", banana: "\u{1F34C}", pineapple: "\u{1F34D}", apple: "\u{1F34E}", green_apple: "\u{1F34F}", pear: "\u{1F350}", peach: "\u{1F351}", cherries: "\u{1F352}", strawberry: "\u{1F353}", hamburger: "\u{1F354}", pizza: "\u{1F355}", meat_on_bone: "\u{1F356}", poultry_leg: "\u{1F357}", rice_cracker: "\u{1F358}", rice_ball: "\u{1F359}", rice: "\u{1F35A}", curry: "\u{1F35B}", ramen: "\u{1F35C}", spaghetti: "\u{1F35D}", bread: "\u{1F35E}", fries: "\u{1F35F}", sweet_potato: "\u{1F360}", dango: "\u{1F361}", oden: "\u{1F362}", sushi: "\u{1F363}", fried_shrimp: "\u{1F364}", fish_cake: "\u{1F365}", icecream: "\u{1F366}", shaved_ice: "\u{1F367}", ice_cream: "\u{1F368}", doughnut: "\u{1F369}", cookie: "\u{1F36A}", chocolate_bar: "\u{1F36B}", candy: "\u{1F36C}", lollipop: "\u{1F36D}", custard: "\u{1F36E}", honey_pot: "\u{1F36F}", cake: "\u{1F370}", bento: "\u{1F371}", stew: "\u{1F372}", fried_egg: "\u{1F373}", cooking: "\u{1F373}", fork_and_knife: "\u{1F374}", tea: "\u{1F375}", sake: "\u{1F376}", wine_glass: "\u{1F377}", cocktail: "\u{1F378}", tropical_drink: "\u{1F379}", beer: "\u{1F37A}", beers: "\u{1F37B}", baby_bottle: "\u{1F37C}", knife_fork_plate: "\u{1F37D}\uFE0F", champagne: "\u{1F37E}", popcorn: "\u{1F37F}", ribbon: "\u{1F380}", gift: "\u{1F381}", birthday: "\u{1F382}", jack_o_lantern: "\u{1F383}", christmas_tree: "\u{1F384}", santa: "\u{1F385}", fireworks: "\u{1F386}", sparkler: "\u{1F387}", balloon: "\u{1F388}", tada: "\u{1F389}", confetti_ball: "\u{1F38A}", tanabata_tree: "\u{1F38B}", crossed_flags: "\u{1F38C}", bamboo: "\u{1F38D}", dolls: "\u{1F38E}", flags: "\u{1F38F}", wind_chime: "\u{1F390}", rice_scene: "\u{1F391}", school_satchel: "\u{1F392}", mortar_board: "\u{1F393}", medal: "\u{1F396}\uFE0F", reminder_ribbon: "\u{1F397}\uFE0F", studio_microphone: "\u{1F399}\uFE0F", level_slider: "\u{1F39A}\uFE0F", control_knobs: "\u{1F39B}\uFE0F", film_frames: "\u{1F39E}\uFE0F", admission_tickets: "\u{1F39F}\uFE0F", carousel_horse: "\u{1F3A0}", ferris_wheel: "\u{1F3A1}", roller_coaster: "\u{1F3A2}", fishing_pole_and_fish: "\u{1F3A3}", microphone: "\u{1F3A4}", movie_camera: "\u{1F3A5}", cinema: "\u{1F3A6}", headphones: "\u{1F3A7}", art: "\u{1F3A8}", tophat: "\u{1F3A9}", circus_tent: "\u{1F3AA}", ticket: "\u{1F3AB}", clapper: "\u{1F3AC}", performing_arts: "\u{1F3AD}", video_game: "\u{1F3AE}", dart: "\u{1F3AF}", slot_machine: "\u{1F3B0}", "8ball": "\u{1F3B1}", game_die: "\u{1F3B2}", bowling: "\u{1F3B3}", flower_playing_cards: "\u{1F3B4}", musical_note: "\u{1F3B5}", notes: "\u{1F3B6}", saxophone: "\u{1F3B7}", guitar: "\u{1F3B8}", musical_keyboard: "\u{1F3B9}", trumpet: "\u{1F3BA}", violin: "\u{1F3BB}", musical_score: "\u{1F3BC}", running_shirt_with_sash: "\u{1F3BD}", tennis: "\u{1F3BE}", ski: "\u{1F3BF}", basketball: "\u{1F3C0}", checkered_flag: "\u{1F3C1}", snowboarder: "\u{1F3C2}", "woman-running": "\u{1F3C3}\u200D\u2640\uFE0F", "man-running": "\u{1F3C3}\u200D\u2642\uFE0F", runner: "\u{1F3C3}\u200D\u2642\uFE0F", running: "\u{1F3C3}\u200D\u2642\uFE0F", "woman-surfing": "\u{1F3C4}\u200D\u2640\uFE0F", "man-surfing": "\u{1F3C4}\u200D\u2642\uFE0F", surfer: "\u{1F3C4}\u200D\u2642\uFE0F", sports_medal: "\u{1F3C5}", trophy: "\u{1F3C6}", horse_racing: "\u{1F3C7}", football: "\u{1F3C8}", rugby_football: "\u{1F3C9}", "woman-swimming": "\u{1F3CA}\u200D\u2640\uFE0F", "man-swimming": "\u{1F3CA}\u200D\u2642\uFE0F", swimmer: "\u{1F3CA}\u200D\u2642\uFE0F", "woman-lifting-weights": "\u{1F3CB}\uFE0F\u200D\u2640\uFE0F", "man-lifting-weights": "\u{1F3CB}\uFE0F\u200D\u2642\uFE0F", weight_lifter: "\u{1F3CB}\uFE0F\u200D\u2642\uFE0F", "woman-golfing": "\u{1F3CC}\uFE0F\u200D\u2640\uFE0F", "man-golfing": "\u{1F3CC}\uFE0F\u200D\u2642\uFE0F", golfer: "\u{1F3CC}\uFE0F\u200D\u2642\uFE0F", racing_motorcycle: "\u{1F3CD}\uFE0F", racing_car: "\u{1F3CE}\uFE0F", cricket_bat_and_ball: "\u{1F3CF}", volleyball: "\u{1F3D0}", field_hockey_stick_and_ball: "\u{1F3D1}", ice_hockey_stick_and_puck: "\u{1F3D2}", table_tennis_paddle_and_ball: "\u{1F3D3}", snow_capped_mountain: "\u{1F3D4}\uFE0F", camping: "\u{1F3D5}\uFE0F", beach_with_umbrella: "\u{1F3D6}\uFE0F", building_construction: "\u{1F3D7}\uFE0F", house_buildings: "\u{1F3D8}\uFE0F", cityscape: "\u{1F3D9}\uFE0F", derelict_house_building: "\u{1F3DA}\uFE0F", classical_building: "\u{1F3DB}\uFE0F", desert: "\u{1F3DC}\uFE0F", desert_island: "\u{1F3DD}\uFE0F", national_park: "\u{1F3DE}\uFE0F", stadium: "\u{1F3DF}\uFE0F", house: "\u{1F3E0}", house_with_garden: "\u{1F3E1}", office: "\u{1F3E2}", post_office: "\u{1F3E3}", european_post_office: "\u{1F3E4}", hospital: "\u{1F3E5}", bank: "\u{1F3E6}", atm: "\u{1F3E7}", hotel: "\u{1F3E8}", love_hotel: "\u{1F3E9}", convenience_store: "\u{1F3EA}", school: "\u{1F3EB}", department_store: "\u{1F3EC}", factory: "\u{1F3ED}", izakaya_lantern: "\u{1F3EE}", lantern: "\u{1F3EE}", japanese_castle: "\u{1F3EF}", european_castle: "\u{1F3F0}", "rainbow-flag": "\u{1F3F3}\uFE0F\u200D\u{1F308}", transgender_flag: "\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F", waving_white_flag: "\u{1F3F3}\uFE0F", pirate_flag: "\u{1F3F4}\u200D\u2620\uFE0F", "flag-england": "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}", "flag-scotland": "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}", "flag-wales": "\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}", waving_black_flag: "\u{1F3F4}", rosette: "\u{1F3F5}\uFE0F", label: "\u{1F3F7}\uFE0F", badminton_racquet_and_shuttlecock: "\u{1F3F8}", bow_and_arrow: "\u{1F3F9}", amphora: "\u{1F3FA}", "skin-tone-2": "\u{1F3FB}", "skin-tone-3": "\u{1F3FC}", "skin-tone-4": "\u{1F3FD}", "skin-tone-5": "\u{1F3FE}", "skin-tone-6": "\u{1F3FF}", rat: "\u{1F400}", mouse2: "\u{1F401}", ox: "\u{1F402}", water_buffalo: "\u{1F403}", cow2: "\u{1F404}", tiger2: "\u{1F405}", leopard: "\u{1F406}", rabbit2: "\u{1F407}", black_cat: "\u{1F408}\u200D\u2B1B", cat2: "\u{1F408}", dragon: "\u{1F409}", crocodile: "\u{1F40A}", whale2: "\u{1F40B}", snail: "\u{1F40C}", snake: "\u{1F40D}", racehorse: "\u{1F40E}", ram: "\u{1F40F}", goat: "\u{1F410}", sheep: "\u{1F411}", monkey: "\u{1F412}", rooster: "\u{1F413}", chicken: "\u{1F414}", service_dog: "\u{1F415}\u200D\u{1F9BA}", dog2: "\u{1F415}", pig2: "\u{1F416}", boar: "\u{1F417}", elephant: "\u{1F418}", octopus: "\u{1F419}", shell: "\u{1F41A}", bug: "\u{1F41B}", ant: "\u{1F41C}", bee: "\u{1F41D}", honeybee: "\u{1F41D}", ladybug: "\u{1F41E}", lady_beetle: "\u{1F41E}", fish: "\u{1F41F}", tropical_fish: "\u{1F420}", blowfish: "\u{1F421}", turtle: "\u{1F422}", hatching_chick: "\u{1F423}", baby_chick: "\u{1F424}", hatched_chick: "\u{1F425}", bird: "\u{1F426}", penguin: "\u{1F427}", koala: "\u{1F428}", poodle: "\u{1F429}", dromedary_camel: "\u{1F42A}", camel: "\u{1F42B}", dolphin: "\u{1F42C}", flipper: "\u{1F42C}", mouse: "\u{1F42D}", cow: "\u{1F42E}", tiger: "\u{1F42F}", rabbit: "\u{1F430}", cat: "\u{1F431}", dragon_face: "\u{1F432}", whale: "\u{1F433}", horse: "\u{1F434}", monkey_face: "\u{1F435}", dog: "\u{1F436}", pig: "\u{1F437}", frog: "\u{1F438}", hamster: "\u{1F439}", wolf: "\u{1F43A}", polar_bear: "\u{1F43B}\u200D\u2744\uFE0F", bear: "\u{1F43B}", panda_face: "\u{1F43C}", pig_nose: "\u{1F43D}", feet: "\u{1F43E}", paw_prints: "\u{1F43E}", chipmunk: "\u{1F43F}\uFE0F", eyes: "\u{1F440}", "eye-in-speech-bubble": "\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F", eye: "\u{1F441}\uFE0F", ear: "\u{1F442}", nose: "\u{1F443}", lips: "\u{1F444}", tongue: "\u{1F445}", point_up_2: "\u{1F446}", point_down: "\u{1F447}", point_left: "\u{1F448}", point_right: "\u{1F449}", facepunch: "\u{1F44A}", punch: "\u{1F44A}", wave: "\u{1F44B}", ok_hand: "\u{1F44C}", "+1": "\u{1F44D}", thumbsup: "\u{1F44D}", "-1": "\u{1F44E}", thumbsdown: "\u{1F44E}", clap: "\u{1F44F}", open_hands: "\u{1F450}", crown: "\u{1F451}", womans_hat: "\u{1F452}", eyeglasses: "\u{1F453}", necktie: "\u{1F454}", shirt: "\u{1F455}", tshirt: "\u{1F455}", jeans: "\u{1F456}", dress: "\u{1F457}", kimono: "\u{1F458}", bikini: "\u{1F459}", womans_clothes: "\u{1F45A}", purse: "\u{1F45B}", handbag: "\u{1F45C}", pouch: "\u{1F45D}", mans_shoe: "\u{1F45E}", shoe: "\u{1F45E}", athletic_shoe: "\u{1F45F}", high_heel: "\u{1F460}", sandal: "\u{1F461}", boot: "\u{1F462}", footprints: "\u{1F463}", bust_in_silhouette: "\u{1F464}", busts_in_silhouette: "\u{1F465}", boy: "\u{1F466}", girl: "\u{1F467}", "male-farmer": "\u{1F468}\u200D\u{1F33E}", "male-cook": "\u{1F468}\u200D\u{1F373}", man_feeding_baby: "\u{1F468}\u200D\u{1F37C}", "male-student": "\u{1F468}\u200D\u{1F393}", "male-singer": "\u{1F468}\u200D\u{1F3A4}", "male-artist": "\u{1F468}\u200D\u{1F3A8}", "male-teacher": "\u{1F468}\u200D\u{1F3EB}", "male-factory-worker": "\u{1F468}\u200D\u{1F3ED}", "man-boy-boy": "\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", "man-boy": "\u{1F468}\u200D\u{1F466}", "man-girl-boy": "\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", "man-girl-girl": "\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", "man-girl": "\u{1F468}\u200D\u{1F467}", "man-man-boy": "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}", "man-man-boy-boy": "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", "man-man-girl": "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}", "man-man-girl-boy": "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", "man-man-girl-girl": "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", "man-woman-boy": "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}", family: "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}", "man-woman-boy-boy": "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", "man-woman-girl": "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}", "man-woman-girl-boy": "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", "man-woman-girl-girl": "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", "male-technologist": "\u{1F468}\u200D\u{1F4BB}", "male-office-worker": "\u{1F468}\u200D\u{1F4BC}", "male-mechanic": "\u{1F468}\u200D\u{1F527}", "male-scientist": "\u{1F468}\u200D\u{1F52C}", "male-astronaut": "\u{1F468}\u200D\u{1F680}", "male-firefighter": "\u{1F468}\u200D\u{1F692}", man_with_probing_cane: "\u{1F468}\u200D\u{1F9AF}", red_haired_man: "\u{1F468}\u200D\u{1F9B0}", curly_haired_man: "\u{1F468}\u200D\u{1F9B1}", bald_man: "\u{1F468}\u200D\u{1F9B2}", white_haired_man: "\u{1F468}\u200D\u{1F9B3}", man_in_motorized_wheelchair: "\u{1F468}\u200D\u{1F9BC}", man_in_manual_wheelchair: "\u{1F468}\u200D\u{1F9BD}", "male-doctor": "\u{1F468}\u200D\u2695\uFE0F", "male-judge": "\u{1F468}\u200D\u2696\uFE0F", "male-pilot": "\u{1F468}\u200D\u2708\uFE0F", "man-heart-man": "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}", "man-kiss-man": "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", man: "\u{1F468}", "female-farmer": "\u{1F469}\u200D\u{1F33E}", "female-cook": "\u{1F469}\u200D\u{1F373}", woman_feeding_baby: "\u{1F469}\u200D\u{1F37C}", "female-student": "\u{1F469}\u200D\u{1F393}", "female-singer": "\u{1F469}\u200D\u{1F3A4}", "female-artist": "\u{1F469}\u200D\u{1F3A8}", "female-teacher": "\u{1F469}\u200D\u{1F3EB}", "female-factory-worker": "\u{1F469}\u200D\u{1F3ED}", "woman-boy-boy": "\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", "woman-boy": "\u{1F469}\u200D\u{1F466}", "woman-girl-boy": "\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", "woman-girl-girl": "\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", "woman-girl": "\u{1F469}\u200D\u{1F467}", "woman-woman-boy": "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}", "woman-woman-boy-boy": "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", "woman-woman-girl": "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}", "woman-woman-girl-boy": "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", "woman-woman-girl-girl": "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", "female-technologist": "\u{1F469}\u200D\u{1F4BB}", "female-office-worker": "\u{1F469}\u200D\u{1F4BC}", "female-mechanic": "\u{1F469}\u200D\u{1F527}", "female-scientist": "\u{1F469}\u200D\u{1F52C}", "female-astronaut": "\u{1F469}\u200D\u{1F680}", "female-firefighter": "\u{1F469}\u200D\u{1F692}", woman_with_probing_cane: "\u{1F469}\u200D\u{1F9AF}", red_haired_woman: "\u{1F469}\u200D\u{1F9B0}", curly_haired_woman: "\u{1F469}\u200D\u{1F9B1}", bald_woman: "\u{1F469}\u200D\u{1F9B2}", white_haired_woman: "\u{1F469}\u200D\u{1F9B3}", woman_in_motorized_wheelchair: "\u{1F469}\u200D\u{1F9BC}", woman_in_manual_wheelchair: "\u{1F469}\u200D\u{1F9BD}", "female-doctor": "\u{1F469}\u200D\u2695\uFE0F", "female-judge": "\u{1F469}\u200D\u2696\uFE0F", "female-pilot": "\u{1F469}\u200D\u2708\uFE0F", "woman-heart-man": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}", "woman-heart-woman": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}", "woman-kiss-man": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", "woman-kiss-woman": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}", woman: "\u{1F469}", man_and_woman_holding_hands: "\u{1F46B}", woman_and_man_holding_hands: "\u{1F46B}", couple: "\u{1F46B}", two_men_holding_hands: "\u{1F46C}", men_holding_hands: "\u{1F46C}", two_women_holding_hands: "\u{1F46D}", women_holding_hands: "\u{1F46D}", "female-police-officer": "\u{1F46E}\u200D\u2640\uFE0F", "male-police-officer": "\u{1F46E}\u200D\u2642\uFE0F", cop: "\u{1F46E}\u200D\u2642\uFE0F", "women-with-bunny-ears-partying": "\u{1F46F}\u200D\u2640\uFE0F", "woman-with-bunny-ears-partying": "\u{1F46F}\u200D\u2640\uFE0F", dancers: "\u{1F46F}\u200D\u2640\uFE0F", "men-with-bunny-ears-partying": "\u{1F46F}\u200D\u2642\uFE0F", "man-with-bunny-ears-partying": "\u{1F46F}\u200D\u2642\uFE0F", woman_with_veil: "\u{1F470}\u200D\u2640\uFE0F", man_with_veil: "\u{1F470}\u200D\u2642\uFE0F", bride_with_veil: "\u{1F470}", "blond-haired-woman": "\u{1F471}\u200D\u2640\uFE0F", "blond-haired-man": "\u{1F471}\u200D\u2642\uFE0F", person_with_blond_hair: "\u{1F471}\u200D\u2642\uFE0F", man_with_gua_pi_mao: "\u{1F472}", "woman-wearing-turban": "\u{1F473}\u200D\u2640\uFE0F", "man-wearing-turban": "\u{1F473}\u200D\u2642\uFE0F", man_with_turban: "\u{1F473}\u200D\u2642\uFE0F", older_man: "\u{1F474}", older_woman: "\u{1F475}", baby: "\u{1F476}", "female-construction-worker": "\u{1F477}\u200D\u2640\uFE0F", "male-construction-worker": "\u{1F477}\u200D\u2642\uFE0F", construction_worker: "\u{1F477}\u200D\u2642\uFE0F", princess: "\u{1F478}", japanese_ogre: "\u{1F479}", japanese_goblin: "\u{1F47A}", ghost: "\u{1F47B}", angel: "\u{1F47C}", alien: "\u{1F47D}", space_invader: "\u{1F47E}", imp: "\u{1F47F}", skull: "\u{1F480}", "woman-tipping-hand": "\u{1F481}\u200D\u2640\uFE0F", information_desk_person: "\u{1F481}\u200D\u2640\uFE0F", "man-tipping-hand": "\u{1F481}\u200D\u2642\uFE0F", "female-guard": "\u{1F482}\u200D\u2640\uFE0F", "male-guard": "\u{1F482}\u200D\u2642\uFE0F", guardsman: "\u{1F482}\u200D\u2642\uFE0F", dancer: "\u{1F483}", lipstick: "\u{1F484}", nail_care: "\u{1F485}", "woman-getting-massage": "\u{1F486}\u200D\u2640\uFE0F", massage: "\u{1F486}\u200D\u2640\uFE0F", "man-getting-massage": "\u{1F486}\u200D\u2642\uFE0F", "woman-getting-haircut": "\u{1F487}\u200D\u2640\uFE0F", haircut: "\u{1F487}\u200D\u2640\uFE0F", "man-getting-haircut": "\u{1F487}\u200D\u2642\uFE0F", barber: "\u{1F488}", syringe: "\u{1F489}", pill: "\u{1F48A}", kiss: "\u{1F48B}", love_letter: "\u{1F48C}", ring: "\u{1F48D}", gem: "\u{1F48E}", couplekiss: "\u{1F48F}", bouquet: "\u{1F490}", couple_with_heart: "\u{1F491}", wedding: "\u{1F492}", heartbeat: "\u{1F493}", broken_heart: "\u{1F494}", two_hearts: "\u{1F495}", sparkling_heart: "\u{1F496}", heartpulse: "\u{1F497}", cupid: "\u{1F498}", blue_heart: "\u{1F499}", green_heart: "\u{1F49A}", yellow_heart: "\u{1F49B}", purple_heart: "\u{1F49C}", gift_heart: "\u{1F49D}", revolving_hearts: "\u{1F49E}", heart_decoration: "\u{1F49F}", diamond_shape_with_a_dot_inside: "\u{1F4A0}", bulb: "\u{1F4A1}", anger: "\u{1F4A2}", bomb: "\u{1F4A3}", zzz: "\u{1F4A4}", boom: "\u{1F4A5}", collision: "\u{1F4A5}", sweat_drops: "\u{1F4A6}", droplet: "\u{1F4A7}", dash: "\u{1F4A8}", hankey: "\u{1F4A9}", poop: "\u{1F4A9}", shit: "\u{1F4A9}", muscle: "\u{1F4AA}", dizzy: "\u{1F4AB}", speech_balloon: "\u{1F4AC}", thought_balloon: "\u{1F4AD}", white_flower: "\u{1F4AE}", moneybag: "\u{1F4B0}", currency_exchange: "\u{1F4B1}", heavy_dollar_sign: "\u{1F4B2}", credit_card: "\u{1F4B3}", yen: "\u{1F4B4}", dollar: "\u{1F4B5}", euro: "\u{1F4B6}", pound: "\u{1F4B7}", money_with_wings: "\u{1F4B8}", chart: "\u{1F4B9}", seat: "\u{1F4BA}", computer: "\u{1F4BB}", briefcase: "\u{1F4BC}", minidisc: "\u{1F4BD}", floppy_disk: "\u{1F4BE}", cd: "\u{1F4BF}", dvd: "\u{1F4C0}", file_folder: "\u{1F4C1}", open_file_folder: "\u{1F4C2}", page_with_curl: "\u{1F4C3}", page_facing_up: "\u{1F4C4}", date: "\u{1F4C5}", calendar: "\u{1F4C6}", card_index: "\u{1F4C7}", chart_with_upwards_trend: "\u{1F4C8}", chart_with_downwards_trend: "\u{1F4C9}", bar_chart: "\u{1F4CA}", clipboard: "\u{1F4CB}", pushpin: "\u{1F4CC}", round_pushpin: "\u{1F4CD}", paperclip: "\u{1F4CE}", straight_ruler: "\u{1F4CF}", triangular_ruler: "\u{1F4D0}", bookmark_tabs: "\u{1F4D1}", ledger: "\u{1F4D2}", notebook: "\u{1F4D3}", notebook_with_decorative_cover: "\u{1F4D4}", closed_book: "\u{1F4D5}", book: "\u{1F4D6}", open_book: "\u{1F4D6}", green_book: "\u{1F4D7}", blue_book: "\u{1F4D8}", orange_book: "\u{1F4D9}", books: "\u{1F4DA}", name_badge: "\u{1F4DB}", scroll: "\u{1F4DC}", memo: "\u{1F4DD}", pencil: "\u{1F4DD}", telephone_receiver: "\u{1F4DE}", pager: "\u{1F4DF}", fax: "\u{1F4E0}", satellite_antenna: "\u{1F4E1}", loudspeaker: "\u{1F4E2}", mega: "\u{1F4E3}", outbox_tray: "\u{1F4E4}", inbox_tray: "\u{1F4E5}", package: "\u{1F4E6}", "e-mail": "\u{1F4E7}", incoming_envelope: "\u{1F4E8}", envelope_with_arrow: "\u{1F4E9}", mailbox_closed: "\u{1F4EA}", mailbox: "\u{1F4EB}", mailbox_with_mail: "\u{1F4EC}", mailbox_with_no_mail: "\u{1F4ED}", postbox: "\u{1F4EE}", postal_horn: "\u{1F4EF}", newspaper: "\u{1F4F0}", iphone: "\u{1F4F1}", calling: "\u{1F4F2}", vibration_mode: "\u{1F4F3}", mobile_phone_off: "\u{1F4F4}", no_mobile_phones: "\u{1F4F5}", signal_strength: "\u{1F4F6}", camera: "\u{1F4F7}", camera_with_flash: "\u{1F4F8}", video_camera: "\u{1F4F9}", tv: "\u{1F4FA}", radio: "\u{1F4FB}", vhs: "\u{1F4FC}", film_projector: "\u{1F4FD}\uFE0F", prayer_beads: "\u{1F4FF}", twisted_rightwards_arrows: "\u{1F500}", repeat: "\u{1F501}", repeat_one: "\u{1F502}", arrows_clockwise: "\u{1F503}", arrows_counterclockwise: "\u{1F504}", low_brightness: "\u{1F505}", high_brightness: "\u{1F506}", mute: "\u{1F507}", speaker: "\u{1F508}", sound: "\u{1F509}", loud_sound: "\u{1F50A}", battery: "\u{1F50B}", electric_plug: "\u{1F50C}", mag: "\u{1F50D}", mag_right: "\u{1F50E}", lock_with_ink_pen: "\u{1F50F}", closed_lock_with_key: "\u{1F510}", key: "\u{1F511}", lock: "\u{1F512}", unlock: "\u{1F513}", bell: "\u{1F514}", no_bell: "\u{1F515}", bookmark: "\u{1F516}", link: "\u{1F517}", radio_button: "\u{1F518}", back: "\u{1F519}", end: "\u{1F51A}", on: "\u{1F51B}", soon: "\u{1F51C}", top: "\u{1F51D}", underage: "\u{1F51E}", keycap_ten: "\u{1F51F}", capital_abcd: "\u{1F520}", abcd: "\u{1F521}", symbols: "\u{1F523}", abc: "\u{1F524}", fire: "\u{1F525}", flashlight: "\u{1F526}", wrench: "\u{1F527}", hammer: "\u{1F528}", nut_and_bolt: "\u{1F529}", hocho: "\u{1F52A}", knife: "\u{1F52A}", gun: "\u{1F52B}", microscope: "\u{1F52C}", telescope: "\u{1F52D}", crystal_ball: "\u{1F52E}", six_pointed_star: "\u{1F52F}", beginner: "\u{1F530}", trident: "\u{1F531}", black_square_button: "\u{1F532}", white_square_button: "\u{1F533}", red_circle: "\u{1F534}", large_blue_circle: "\u{1F535}", large_orange_diamond: "\u{1F536}", large_blue_diamond: "\u{1F537}", small_orange_diamond: "\u{1F538}", small_blue_diamond: "\u{1F539}", small_red_triangle: "\u{1F53A}", small_red_triangle_down: "\u{1F53B}", arrow_up_small: "\u{1F53C}", arrow_down_small: "\u{1F53D}", om_symbol: "\u{1F549}\uFE0F", dove_of_peace: "\u{1F54A}\uFE0F", kaaba: "\u{1F54B}", mosque: "\u{1F54C}", synagogue: "\u{1F54D}", menorah_with_nine_branches: "\u{1F54E}", clock1: "\u{1F550}", clock2: "\u{1F551}", clock3: "\u{1F552}", clock4: "\u{1F553}", clock5: "\u{1F554}", clock6: "\u{1F555}", clock7: "\u{1F556}", clock8: "\u{1F557}", clock9: "\u{1F558}", clock10: "\u{1F559}", clock11: "\u{1F55A}", clock12: "\u{1F55B}", clock130: "\u{1F55C}", clock230: "\u{1F55D}", clock330: "\u{1F55E}", clock430: "\u{1F55F}", clock530: "\u{1F560}", clock630: "\u{1F561}", clock730: "\u{1F562}", clock830: "\u{1F563}", clock930: "\u{1F564}", clock1030: "\u{1F565}", clock1130: "\u{1F566}", clock1230: "\u{1F567}", candle: "\u{1F56F}\uFE0F", mantelpiece_clock: "\u{1F570}\uFE0F", hole: "\u{1F573}\uFE0F", man_in_business_suit_levitating: "\u{1F574}\uFE0F", "female-detective": "\u{1F575}\uFE0F\u200D\u2640\uFE0F", "male-detective": "\u{1F575}\uFE0F\u200D\u2642\uFE0F", sleuth_or_spy: "\u{1F575}\uFE0F\u200D\u2642\uFE0F", dark_sunglasses: "\u{1F576}\uFE0F", spider: "\u{1F577}\uFE0F", spider_web: "\u{1F578}\uFE0F", joystick: "\u{1F579}\uFE0F", man_dancing: "\u{1F57A}", linked_paperclips: "\u{1F587}\uFE0F", lower_left_ballpoint_pen: "\u{1F58A}\uFE0F", lower_left_fountain_pen: "\u{1F58B}\uFE0F", lower_left_paintbrush: "\u{1F58C}\uFE0F", lower_left_crayon: "\u{1F58D}\uFE0F", raised_hand_with_fingers_splayed: "\u{1F590}\uFE0F", middle_finger: "\u{1F595}", reversed_hand_with_middle_finger_extended: "\u{1F595}", "spock-hand": "\u{1F596}", black_heart: "\u{1F5A4}", desktop_computer: "\u{1F5A5}\uFE0F", printer: "\u{1F5A8}\uFE0F", three_button_mouse: "\u{1F5B1}\uFE0F", trackball: "\u{1F5B2}\uFE0F", frame_with_picture: "\u{1F5BC}\uFE0F", card_index_dividers: "\u{1F5C2}\uFE0F", card_file_box: "\u{1F5C3}\uFE0F", file_cabinet: "\u{1F5C4}\uFE0F", wastebasket: "\u{1F5D1}\uFE0F", spiral_note_pad: "\u{1F5D2}\uFE0F", spiral_calendar_pad: "\u{1F5D3}\uFE0F", compression: "\u{1F5DC}\uFE0F", old_key: "\u{1F5DD}\uFE0F", rolled_up_newspaper: "\u{1F5DE}\uFE0F", dagger_knife: "\u{1F5E1}\uFE0F", speaking_head_in_silhouette: "\u{1F5E3}\uFE0F", left_speech_bubble: "\u{1F5E8}\uFE0F", right_anger_bubble: "\u{1F5EF}\uFE0F", ballot_box_with_ballot: "\u{1F5F3}\uFE0F", world_map: "\u{1F5FA}\uFE0F", mount_fuji: "\u{1F5FB}", tokyo_tower: "\u{1F5FC}", statue_of_liberty: "\u{1F5FD}", japan: "\u{1F5FE}", moyai: "\u{1F5FF}", grinning: "\u{1F600}", grin: "\u{1F601}", joy: "\u{1F602}", smiley: "\u{1F603}", smile: "\u{1F604}", sweat_smile: "\u{1F605}", laughing: "\u{1F606}", satisfied: "\u{1F606}", innocent: "\u{1F607}", smiling_imp: "\u{1F608}", wink: "\u{1F609}", blush: "\u{1F60A}", yum: "\u{1F60B}", relieved: "\u{1F60C}", heart_eyes: "\u{1F60D}", sunglasses: "\u{1F60E}", smirk: "\u{1F60F}", neutral_face: "\u{1F610}", expressionless: "\u{1F611}", unamused: "\u{1F612}", sweat: "\u{1F613}", pensive: "\u{1F614}", confused: "\u{1F615}", confounded: "\u{1F616}", kissing: "\u{1F617}", kissing_heart: "\u{1F618}", kissing_smiling_eyes: "\u{1F619}", kissing_closed_eyes: "\u{1F61A}", stuck_out_tongue: "\u{1F61B}", stuck_out_tongue_winking_eye: "\u{1F61C}", stuck_out_tongue_closed_eyes: "\u{1F61D}", disappointed: "\u{1F61E}", worried: "\u{1F61F}", angry: "\u{1F620}", rage: "\u{1F621}", cry: "\u{1F622}", persevere: "\u{1F623}", triumph: "\u{1F624}", disappointed_relieved: "\u{1F625}", frowning: "\u{1F626}", anguished: "\u{1F627}", fearful: "\u{1F628}", weary: "\u{1F629}", sleepy: "\u{1F62A}", tired_face: "\u{1F62B}", grimacing: "\u{1F62C}", sob: "\u{1F62D}", face_exhaling: "\u{1F62E}\u200D\u{1F4A8}", open_mouth: "\u{1F62E}", hushed: "\u{1F62F}", cold_sweat: "\u{1F630}", scream: "\u{1F631}", astonished: "\u{1F632}", flushed: "\u{1F633}", sleeping: "\u{1F634}", face_with_spiral_eyes: "\u{1F635}\u200D\u{1F4AB}", dizzy_face: "\u{1F635}", face_in_clouds: "\u{1F636}\u200D\u{1F32B}\uFE0F", no_mouth: "\u{1F636}", mask: "\u{1F637}", smile_cat: "\u{1F638}", joy_cat: "\u{1F639}", smiley_cat: "\u{1F63A}", heart_eyes_cat: "\u{1F63B}", smirk_cat: "\u{1F63C}", kissing_cat: "\u{1F63D}", pouting_cat: "\u{1F63E}", crying_cat_face: "\u{1F63F}", scream_cat: "\u{1F640}", slightly_frowning_face: "\u{1F641}", slightly_smiling_face: "\u{1F642}", upside_down_face: "\u{1F643}", face_with_rolling_eyes: "\u{1F644}", "woman-gesturing-no": "\u{1F645}\u200D\u2640\uFE0F", no_good: "\u{1F645}\u200D\u2640\uFE0F", "man-gesturing-no": "\u{1F645}\u200D\u2642\uFE0F", "woman-gesturing-ok": "\u{1F646}\u200D\u2640\uFE0F", ok_woman: "\u{1F646}\u200D\u2640\uFE0F", "man-gesturing-ok": "\u{1F646}\u200D\u2642\uFE0F", "woman-bowing": "\u{1F647}\u200D\u2640\uFE0F", "man-bowing": "\u{1F647}\u200D\u2642\uFE0F", bow: "\u{1F647}\u200D\u2642\uFE0F", see_no_evil: "\u{1F648}", hear_no_evil: "\u{1F649}", speak_no_evil: "\u{1F64A}", "woman-raising-hand": "\u{1F64B}\u200D\u2640\uFE0F", raising_hand: "\u{1F64B}\u200D\u2640\uFE0F", "man-raising-hand": "\u{1F64B}\u200D\u2642\uFE0F", raised_hands: "\u{1F64C}", "woman-frowning": "\u{1F64D}\u200D\u2640\uFE0F", person_frowning: "\u{1F64D}\u200D\u2640\uFE0F", "man-frowning": "\u{1F64D}\u200D\u2642\uFE0F", "woman-pouting": "\u{1F64E}\u200D\u2640\uFE0F", person_with_pouting_face: "\u{1F64E}\u200D\u2640\uFE0F", "man-pouting": "\u{1F64E}\u200D\u2642\uFE0F", pray: "\u{1F64F}", rocket: "\u{1F680}", helicopter: "\u{1F681}", steam_locomotive: "\u{1F682}", railway_car: "\u{1F683}", bullettrain_side: "\u{1F684}", bullettrain_front: "\u{1F685}", train2: "\u{1F686}", metro: "\u{1F687}", light_rail: "\u{1F688}", station: "\u{1F689}", tram: "\u{1F68A}", train: "\u{1F68B}", bus: "\u{1F68C}", oncoming_bus: "\u{1F68D}", trolleybus: "\u{1F68E}", busstop: "\u{1F68F}", minibus: "\u{1F690}", ambulance: "\u{1F691}", fire_engine: "\u{1F692}", police_car: "\u{1F693}", oncoming_police_car: "\u{1F694}", taxi: "\u{1F695}", oncoming_taxi: "\u{1F696}", car: "\u{1F697}", red_car: "\u{1F697}", oncoming_automobile: "\u{1F698}", blue_car: "\u{1F699}", truck: "\u{1F69A}", articulated_lorry: "\u{1F69B}", tractor: "\u{1F69C}", monorail: "\u{1F69D}", mountain_railway: "\u{1F69E}", suspension_railway: "\u{1F69F}", mountain_cableway: "\u{1F6A0}", aerial_tramway: "\u{1F6A1}", ship: "\u{1F6A2}", "woman-rowing-boat": "\u{1F6A3}\u200D\u2640\uFE0F", "man-rowing-boat": "\u{1F6A3}\u200D\u2642\uFE0F", rowboat: "\u{1F6A3}\u200D\u2642\uFE0F", speedboat: "\u{1F6A4}", traffic_light: "\u{1F6A5}", vertical_traffic_light: "\u{1F6A6}", construction: "\u{1F6A7}", rotating_light: "\u{1F6A8}", triangular_flag_on_post: "\u{1F6A9}", door: "\u{1F6AA}", no_entry_sign: "\u{1F6AB}", smoking: "\u{1F6AC}", no_smoking: "\u{1F6AD}", put_litter_in_its_place: "\u{1F6AE}", do_not_litter: "\u{1F6AF}", potable_water: "\u{1F6B0}", "non-potable_water": "\u{1F6B1}", bike: "\u{1F6B2}", no_bicycles: "\u{1F6B3}", "woman-biking": "\u{1F6B4}\u200D\u2640\uFE0F", "man-biking": "\u{1F6B4}\u200D\u2642\uFE0F", bicyclist: "\u{1F6B4}\u200D\u2642\uFE0F", "woman-mountain-biking": "\u{1F6B5}\u200D\u2640\uFE0F", "man-mountain-biking": "\u{1F6B5}\u200D\u2642\uFE0F", mountain_bicyclist: "\u{1F6B5}\u200D\u2642\uFE0F", "woman-walking": "\u{1F6B6}\u200D\u2640\uFE0F", "man-walking": "\u{1F6B6}\u200D\u2642\uFE0F", walking: "\u{1F6B6}\u200D\u2642\uFE0F", no_pedestrians: "\u{1F6B7}", children_crossing: "\u{1F6B8}", mens: "\u{1F6B9}", womens: "\u{1F6BA}", restroom: "\u{1F6BB}", baby_symbol: "\u{1F6BC}", toilet: "\u{1F6BD}", wc: "\u{1F6BE}", shower: "\u{1F6BF}", bath: "\u{1F6C0}", bathtub: "\u{1F6C1}", passport_control: "\u{1F6C2}", customs: "\u{1F6C3}", baggage_claim: "\u{1F6C4}", left_luggage: "\u{1F6C5}", couch_and_lamp: "\u{1F6CB}\uFE0F", sleeping_accommodation: "\u{1F6CC}", shopping_bags: "\u{1F6CD}\uFE0F", bellhop_bell: "\u{1F6CE}\uFE0F", bed: "\u{1F6CF}\uFE0F", place_of_worship: "\u{1F6D0}", octagonal_sign: "\u{1F6D1}", shopping_trolley: "\u{1F6D2}", hindu_temple: "\u{1F6D5}", hut: "\u{1F6D6}", elevator: "\u{1F6D7}", hammer_and_wrench: "\u{1F6E0}\uFE0F", shield: "\u{1F6E1}\uFE0F", oil_drum: "\u{1F6E2}\uFE0F", motorway: "\u{1F6E3}\uFE0F", railway_track: "\u{1F6E4}\uFE0F", motor_boat: "\u{1F6E5}\uFE0F", small_airplane: "\u{1F6E9}\uFE0F", airplane_departure: "\u{1F6EB}", airplane_arriving: "\u{1F6EC}", satellite: "\u{1F6F0}\uFE0F", passenger_ship: "\u{1F6F3}\uFE0F", scooter: "\u{1F6F4}", motor_scooter: "\u{1F6F5}", canoe: "\u{1F6F6}", sled: "\u{1F6F7}", flying_saucer: "\u{1F6F8}", skateboard: "\u{1F6F9}", auto_rickshaw: "\u{1F6FA}", pickup_truck: "\u{1F6FB}", roller_skate: "\u{1F6FC}", large_orange_circle: "\u{1F7E0}", large_yellow_circle: "\u{1F7E1}", large_green_circle: "\u{1F7E2}", large_purple_circle: "\u{1F7E3}", large_brown_circle: "\u{1F7E4}", large_red_square: "\u{1F7E5}", large_blue_square: "\u{1F7E6}", large_orange_square: "\u{1F7E7}", large_yellow_square: "\u{1F7E8}", large_green_square: "\u{1F7E9}", large_purple_square: "\u{1F7EA}", large_brown_square: "\u{1F7EB}", pinched_fingers: "\u{1F90C}", white_heart: "\u{1F90D}", brown_heart: "\u{1F90E}", pinching_hand: "\u{1F90F}", zipper_mouth_face: "\u{1F910}", money_mouth_face: "\u{1F911}", face_with_thermometer: "\u{1F912}", nerd_face: "\u{1F913}", thinking_face: "\u{1F914}", face_with_head_bandage: "\u{1F915}", robot_face: "\u{1F916}", hugging_face: "\u{1F917}", the_horns: "\u{1F918}", sign_of_the_horns: "\u{1F918}", call_me_hand: "\u{1F919}", raised_back_of_hand: "\u{1F91A}", "left-facing_fist": "\u{1F91B}", "right-facing_fist": "\u{1F91C}", handshake: "\u{1F91D}", crossed_fingers: "\u{1F91E}", hand_with_index_and_middle_fingers_crossed: "\u{1F91E}", i_love_you_hand_sign: "\u{1F91F}", face_with_cowboy_hat: "\u{1F920}", clown_face: "\u{1F921}", nauseated_face: "\u{1F922}", rolling_on_the_floor_laughing: "\u{1F923}", drooling_face: "\u{1F924}", lying_face: "\u{1F925}", "woman-facepalming": "\u{1F926}\u200D\u2640\uFE0F", "man-facepalming": "\u{1F926}\u200D\u2642\uFE0F", face_palm: "\u{1F926}", sneezing_face: "\u{1F927}", face_with_raised_eyebrow: "\u{1F928}", face_with_one_eyebrow_raised: "\u{1F928}", "star-struck": "\u{1F929}", grinning_face_with_star_eyes: "\u{1F929}", zany_face: "\u{1F92A}", grinning_face_with_one_large_and_one_small_eye: "\u{1F92A}", shushing_face: "\u{1F92B}", face_with_finger_covering_closed_lips: "\u{1F92B}", face_with_symbols_on_mouth: "\u{1F92C}", serious_face_with_symbols_covering_mouth: "\u{1F92C}", face_with_hand_over_mouth: "\u{1F92D}", smiling_face_with_smiling_eyes_and_hand_covering_mouth: "\u{1F92D}", face_vomiting: "\u{1F92E}", face_with_open_mouth_vomiting: "\u{1F92E}", exploding_head: "\u{1F92F}", shocked_face_with_exploding_head: "\u{1F92F}", pregnant_woman: "\u{1F930}", "breast-feeding": "\u{1F931}", palms_up_together: "\u{1F932}", selfie: "\u{1F933}", prince: "\u{1F934}", woman_in_tuxedo: "\u{1F935}\u200D\u2640\uFE0F", man_in_tuxedo: "\u{1F935}\u200D\u2642\uFE0F", person_in_tuxedo: "\u{1F935}", mrs_claus: "\u{1F936}", mother_christmas: "\u{1F936}", "woman-shrugging": "\u{1F937}\u200D\u2640\uFE0F", "man-shrugging": "\u{1F937}\u200D\u2642\uFE0F", shrug: "\u{1F937}", "woman-cartwheeling": "\u{1F938}\u200D\u2640\uFE0F", "man-cartwheeling": "\u{1F938}\u200D\u2642\uFE0F", person_doing_cartwheel: "\u{1F938}", "woman-juggling": "\u{1F939}\u200D\u2640\uFE0F", "man-juggling": "\u{1F939}\u200D\u2642\uFE0F", juggling: "\u{1F939}", fencer: "\u{1F93A}", "woman-wrestling": "\u{1F93C}\u200D\u2640\uFE0F", "man-wrestling": "\u{1F93C}\u200D\u2642\uFE0F", wrestlers: "\u{1F93C}", "woman-playing-water-polo": "\u{1F93D}\u200D\u2640\uFE0F", "man-playing-water-polo": "\u{1F93D}\u200D\u2642\uFE0F", water_polo: "\u{1F93D}", "woman-playing-handball": "\u{1F93E}\u200D\u2640\uFE0F", "man-playing-handball": "\u{1F93E}\u200D\u2642\uFE0F", handball: "\u{1F93E}", diving_mask: "\u{1F93F}", wilted_flower: "\u{1F940}", drum_with_drumsticks: "\u{1F941}", clinking_glasses: "\u{1F942}", tumbler_glass: "\u{1F943}", spoon: "\u{1F944}", goal_net: "\u{1F945}", first_place_medal: "\u{1F947}", second_place_medal: "\u{1F948}", third_place_medal: "\u{1F949}", boxing_glove: "\u{1F94A}", martial_arts_uniform: "\u{1F94B}", curling_stone: "\u{1F94C}", lacrosse: "\u{1F94D}", softball: "\u{1F94E}", flying_disc: "\u{1F94F}", croissant: "\u{1F950}", avocado: "\u{1F951}", cucumber: "\u{1F952}", bacon: "\u{1F953}", potato: "\u{1F954}", carrot: "\u{1F955}", baguette_bread: "\u{1F956}", green_salad: "\u{1F957}", shallow_pan_of_food: "\u{1F958}", stuffed_flatbread: "\u{1F959}", egg: "\u{1F95A}", glass_of_milk: "\u{1F95B}", peanuts: "\u{1F95C}", kiwifruit: "\u{1F95D}", pancakes: "\u{1F95E}", dumpling: "\u{1F95F}", fortune_cookie: "\u{1F960}", takeout_box: "\u{1F961}", chopsticks: "\u{1F962}", bowl_with_spoon: "\u{1F963}", cup_with_straw: "\u{1F964}", coconut: "\u{1F965}", broccoli: "\u{1F966}", pie: "\u{1F967}", pretzel: "\u{1F968}", cut_of_meat: "\u{1F969}", sandwich: "\u{1F96A}", canned_food: "\u{1F96B}", leafy_green: "\u{1F96C}", mango: "\u{1F96D}", moon_cake: "\u{1F96E}", bagel: "\u{1F96F}", smiling_face_with_3_hearts: "\u{1F970}", yawning_face: "\u{1F971}", smiling_face_with_tear: "\u{1F972}", partying_face: "\u{1F973}", woozy_face: "\u{1F974}", hot_face: "\u{1F975}", cold_face: "\u{1F976}", ninja: "\u{1F977}", disguised_face: "\u{1F978}", pleading_face: "\u{1F97A}", sari: "\u{1F97B}", lab_coat: "\u{1F97C}", goggles: "\u{1F97D}", hiking_boot: "\u{1F97E}", womans_flat_shoe: "\u{1F97F}", crab: "\u{1F980}", lion_face: "\u{1F981}", scorpion: "\u{1F982}", turkey: "\u{1F983}", unicorn_face: "\u{1F984}", eagle: "\u{1F985}", duck: "\u{1F986}", bat: "\u{1F987}", shark: "\u{1F988}", owl: "\u{1F989}", fox_face: "\u{1F98A}", butterfly: "\u{1F98B}", deer: "\u{1F98C}", gorilla: "\u{1F98D}", lizard: "\u{1F98E}", rhinoceros: "\u{1F98F}", shrimp: "\u{1F990}", squid: "\u{1F991}", giraffe_face: "\u{1F992}", zebra_face: "\u{1F993}", hedgehog: "\u{1F994}", sauropod: "\u{1F995}", "t-rex": "\u{1F996}", cricket: "\u{1F997}", kangaroo: "\u{1F998}", llama: "\u{1F999}", peacock: "\u{1F99A}", hippopotamus: "\u{1F99B}", parrot: "\u{1F99C}", raccoon: "\u{1F99D}", lobster: "\u{1F99E}", mosquito: "\u{1F99F}", microbe: "\u{1F9A0}", badger: "\u{1F9A1}", swan: "\u{1F9A2}", mammoth: "\u{1F9A3}", dodo: "\u{1F9A4}", sloth: "\u{1F9A5}", otter: "\u{1F9A6}", orangutan: "\u{1F9A7}", skunk: "\u{1F9A8}", flamingo: "\u{1F9A9}", oyster: "\u{1F9AA}", beaver: "\u{1F9AB}", bison: "\u{1F9AC}", seal: "\u{1F9AD}", guide_dog: "\u{1F9AE}", probing_cane: "\u{1F9AF}", bone: "\u{1F9B4}", leg: "\u{1F9B5}", foot: "\u{1F9B6}", tooth: "\u{1F9B7}", female_superhero: "\u{1F9B8}\u200D\u2640\uFE0F", male_superhero: "\u{1F9B8}\u200D\u2642\uFE0F", superhero: "\u{1F9B8}", female_supervillain: "\u{1F9B9}\u200D\u2640\uFE0F", male_supervillain: "\u{1F9B9}\u200D\u2642\uFE0F", supervillain: "\u{1F9B9}", safety_vest: "\u{1F9BA}", ear_with_hearing_aid: "\u{1F9BB}", motorized_wheelchair: "\u{1F9BC}", manual_wheelchair: "\u{1F9BD}", mechanical_arm: "\u{1F9BE}", mechanical_leg: "\u{1F9BF}", cheese_wedge: "\u{1F9C0}", cupcake: "\u{1F9C1}", salt: "\u{1F9C2}", beverage_box: "\u{1F9C3}", garlic: "\u{1F9C4}", onion: "\u{1F9C5}", falafel: "\u{1F9C6}", waffle: "\u{1F9C7}", butter: "\u{1F9C8}", mate_drink: "\u{1F9C9}", ice_cube: "\u{1F9CA}", bubble_tea: "\u{1F9CB}", woman_standing: "\u{1F9CD}\u200D\u2640\uFE0F", man_standing: "\u{1F9CD}\u200D\u2642\uFE0F", standing_person: "\u{1F9CD}", woman_kneeling: "\u{1F9CE}\u200D\u2640\uFE0F", man_kneeling: "\u{1F9CE}\u200D\u2642\uFE0F", kneeling_person: "\u{1F9CE}", deaf_woman: "\u{1F9CF}\u200D\u2640\uFE0F", deaf_man: "\u{1F9CF}\u200D\u2642\uFE0F", deaf_person: "\u{1F9CF}", face_with_monocle: "\u{1F9D0}", farmer: "\u{1F9D1}\u200D\u{1F33E}", cook: "\u{1F9D1}\u200D\u{1F373}", person_feeding_baby: "\u{1F9D1}\u200D\u{1F37C}", mx_claus: "\u{1F9D1}\u200D\u{1F384}", student: "\u{1F9D1}\u200D\u{1F393}", singer: "\u{1F9D1}\u200D\u{1F3A4}", artist: "\u{1F9D1}\u200D\u{1F3A8}", teacher: "\u{1F9D1}\u200D\u{1F3EB}", factory_worker: "\u{1F9D1}\u200D\u{1F3ED}", technologist: "\u{1F9D1}\u200D\u{1F4BB}", office_worker: "\u{1F9D1}\u200D\u{1F4BC}", mechanic: "\u{1F9D1}\u200D\u{1F527}", scientist: "\u{1F9D1}\u200D\u{1F52C}", astronaut: "\u{1F9D1}\u200D\u{1F680}", firefighter: "\u{1F9D1}\u200D\u{1F692}", people_holding_hands: "\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}", person_with_probing_cane: "\u{1F9D1}\u200D\u{1F9AF}", red_haired_person: "\u{1F9D1}\u200D\u{1F9B0}", curly_haired_person: "\u{1F9D1}\u200D\u{1F9B1}", bald_person: "\u{1F9D1}\u200D\u{1F9B2}", white_haired_person: "\u{1F9D1}\u200D\u{1F9B3}", person_in_motorized_wheelchair: "\u{1F9D1}\u200D\u{1F9BC}", person_in_manual_wheelchair: "\u{1F9D1}\u200D\u{1F9BD}", health_worker: "\u{1F9D1}\u200D\u2695\uFE0F", judge: "\u{1F9D1}\u200D\u2696\uFE0F", pilot: "\u{1F9D1}\u200D\u2708\uFE0F", adult: "\u{1F9D1}", child: "\u{1F9D2}", older_adult: "\u{1F9D3}", woman_with_beard: "\u{1F9D4}\u200D\u2640\uFE0F", man_with_beard: "\u{1F9D4}\u200D\u2642\uFE0F", bearded_person: "\u{1F9D4}", person_with_headscarf: "\u{1F9D5}", woman_in_steamy_room: "\u{1F9D6}\u200D\u2640\uFE0F", man_in_steamy_room: "\u{1F9D6}\u200D\u2642\uFE0F", person_in_steamy_room: "\u{1F9D6}\u200D\u2642\uFE0F", woman_climbing: "\u{1F9D7}\u200D\u2640\uFE0F", person_climbing: "\u{1F9D7}\u200D\u2640\uFE0F", man_climbing: "\u{1F9D7}\u200D\u2642\uFE0F", woman_in_lotus_position: "\u{1F9D8}\u200D\u2640\uFE0F", person_in_lotus_position: "\u{1F9D8}\u200D\u2640\uFE0F", man_in_lotus_position: "\u{1F9D8}\u200D\u2642\uFE0F", female_mage: "\u{1F9D9}\u200D\u2640\uFE0F", mage: "\u{1F9D9}\u200D\u2640\uFE0F", male_mage: "\u{1F9D9}\u200D\u2642\uFE0F", female_fairy: "\u{1F9DA}\u200D\u2640\uFE0F", fairy: "\u{1F9DA}\u200D\u2640\uFE0F", male_fairy: "\u{1F9DA}\u200D\u2642\uFE0F", female_vampire: "\u{1F9DB}\u200D\u2640\uFE0F", vampire: "\u{1F9DB}\u200D\u2640\uFE0F", male_vampire: "\u{1F9DB}\u200D\u2642\uFE0F", mermaid: "\u{1F9DC}\u200D\u2640\uFE0F", merman: "\u{1F9DC}\u200D\u2642\uFE0F", merperson: "\u{1F9DC}\u200D\u2642\uFE0F", female_elf: "\u{1F9DD}\u200D\u2640\uFE0F", male_elf: "\u{1F9DD}\u200D\u2642\uFE0F", elf: "\u{1F9DD}\u200D\u2642\uFE0F", female_genie: "\u{1F9DE}\u200D\u2640\uFE0F", male_genie: "\u{1F9DE}\u200D\u2642\uFE0F", genie: "\u{1F9DE}\u200D\u2642\uFE0F", female_zombie: "\u{1F9DF}\u200D\u2640\uFE0F", male_zombie: "\u{1F9DF}\u200D\u2642\uFE0F", zombie: "\u{1F9DF}\u200D\u2642\uFE0F", brain: "\u{1F9E0}", orange_heart: "\u{1F9E1}", billed_cap: "\u{1F9E2}", scarf: "\u{1F9E3}", gloves: "\u{1F9E4}", coat: "\u{1F9E5}", socks: "\u{1F9E6}", red_envelope: "\u{1F9E7}", firecracker: "\u{1F9E8}", jigsaw: "\u{1F9E9}", test_tube: "\u{1F9EA}", petri_dish: "\u{1F9EB}", dna: "\u{1F9EC}", compass: "\u{1F9ED}", abacus: "\u{1F9EE}", fire_extinguisher: "\u{1F9EF}", toolbox: "\u{1F9F0}", bricks: "\u{1F9F1}", magnet: "\u{1F9F2}", luggage: "\u{1F9F3}", lotion_bottle: "\u{1F9F4}", thread: "\u{1F9F5}", yarn: "\u{1F9F6}", safety_pin: "\u{1F9F7}", teddy_bear: "\u{1F9F8}", broom: "\u{1F9F9}", basket: "\u{1F9FA}", roll_of_paper: "\u{1F9FB}", soap: "\u{1F9FC}", sponge: "\u{1F9FD}", receipt: "\u{1F9FE}", nazar_amulet: "\u{1F9FF}", ballet_shoes: "\u{1FA70}", "one-piece_swimsuit": "\u{1FA71}", briefs: "\u{1FA72}", shorts: "\u{1FA73}", thong_sandal: "\u{1FA74}", drop_of_blood: "\u{1FA78}", adhesive_bandage: "\u{1FA79}", stethoscope: "\u{1FA7A}", "yo-yo": "\u{1FA80}", kite: "\u{1FA81}", parachute: "\u{1FA82}", boomerang: "\u{1FA83}", magic_wand: "\u{1FA84}", pinata: "\u{1FA85}", nesting_dolls: "\u{1FA86}", ringed_planet: "\u{1FA90}", chair: "\u{1FA91}", razor: "\u{1FA92}", axe: "\u{1FA93}", diya_lamp: "\u{1FA94}", banjo: "\u{1FA95}", military_helmet: "\u{1FA96}", accordion: "\u{1FA97}", long_drum: "\u{1FA98}", coin: "\u{1FA99}", carpentry_saw: "\u{1FA9A}", screwdriver: "\u{1FA9B}", ladder: "\u{1FA9C}", hook: "\u{1FA9D}", mirror: "\u{1FA9E}", window: "\u{1FA9F}", plunger: "\u{1FAA0}", sewing_needle: "\u{1FAA1}", knot: "\u{1FAA2}", bucket: "\u{1FAA3}", mouse_trap: "\u{1FAA4}", toothbrush: "\u{1FAA5}", headstone: "\u{1FAA6}", placard: "\u{1FAA7}", rock: "\u{1FAA8}", fly: "\u{1FAB0}", worm: "\u{1FAB1}", beetle: "\u{1FAB2}", cockroach: "\u{1FAB3}", potted_plant: "\u{1FAB4}", wood: "\u{1FAB5}", feather: "\u{1FAB6}", anatomical_heart: "\u{1FAC0}", lungs: "\u{1FAC1}", people_hugging: "\u{1FAC2}", blueberries: "\u{1FAD0}", bell_pepper: "\u{1FAD1}", olive: "\u{1FAD2}", flatbread: "\u{1FAD3}", tamale: "\u{1FAD4}", fondue: "\u{1FAD5}", teapot: "\u{1FAD6}", bangbang: "\u203C\uFE0F", interrobang: "\u2049\uFE0F", tm: "\u2122\uFE0F", information_source: "\u2139\uFE0F", left_right_arrow: "\u2194\uFE0F", arrow_up_down: "\u2195\uFE0F", arrow_upper_left: "\u2196\uFE0F", arrow_upper_right: "\u2197\uFE0F", arrow_lower_right: "\u2198\uFE0F", arrow_lower_left: "\u2199\uFE0F", leftwards_arrow_with_hook: "\u21A9\uFE0F", arrow_right_hook: "\u21AA\uFE0F", watch: "\u231A", hourglass: "\u231B", keyboard: "\u2328\uFE0F", eject: "\u23CF\uFE0F", fast_forward: "\u23E9", rewind: "\u23EA", arrow_double_up: "\u23EB", arrow_double_down: "\u23EC", black_right_pointing_double_triangle_with_vertical_bar: "\u23ED\uFE0F", black_left_pointing_double_triangle_with_vertical_bar: "\u23EE\uFE0F", black_right_pointing_triangle_with_double_vertical_bar: "\u23EF\uFE0F", alarm_clock: "\u23F0", stopwatch: "\u23F1\uFE0F", timer_clock: "\u23F2\uFE0F", hourglass_flowing_sand: "\u23F3", double_vertical_bar: "\u23F8\uFE0F", black_square_for_stop: "\u23F9\uFE0F", black_circle_for_record: "\u23FA\uFE0F", m: "\u24C2\uFE0F", black_small_square: "\u25AA\uFE0F", white_small_square: "\u25AB\uFE0F", arrow_forward: "\u25B6\uFE0F", arrow_backward: "\u25C0\uFE0F", white_medium_square: "\u25FB\uFE0F", black_medium_square: "\u25FC\uFE0F", white_medium_small_square: "\u25FD", black_medium_small_square: "\u25FE", sunny: "\u2600\uFE0F", cloud: "\u2601\uFE0F", umbrella: "\u2602\uFE0F", snowman: "\u2603\uFE0F", comet: "\u2604\uFE0F", phone: "\u260E\uFE0F", telephone: "\u260E\uFE0F", ballot_box_with_check: "\u2611\uFE0F", shamrock: "\u2618\uFE0F", point_up: "\u261D\uFE0F", skull_and_crossbones: "\u2620\uFE0F", radioactive_sign: "\u2622\uFE0F", biohazard_sign: "\u2623\uFE0F", orthodox_cross: "\u2626\uFE0F", star_and_crescent: "\u262A\uFE0F", peace_symbol: "\u262E\uFE0F", yin_yang: "\u262F\uFE0F", wheel_of_dharma: "\u2638\uFE0F", white_frowning_face: "\u2639\uFE0F", relaxed: "\u263A\uFE0F", female_sign: "\u2640\uFE0F", male_sign: "\u2642\uFE0F", gemini: "\u264A", cancer: "\u264B", leo: "\u264C", virgo: "\u264D", libra: "\u264E", scorpius: "\u264F", chess_pawn: "\u265F\uFE0F", spades: "\u2660\uFE0F", clubs: "\u2663\uFE0F", hearts: "\u2665\uFE0F", diamonds: "\u2666\uFE0F", hotsprings: "\u2668\uFE0F", recycle: "\u267B\uFE0F", infinity: "\u267E\uFE0F", wheelchair: "\u267F", hammer_and_pick: "\u2692\uFE0F", crossed_swords: "\u2694\uFE0F", medical_symbol: "\u2695\uFE0F", staff_of_aesculapius: "\u2695\uFE0F", scales: "\u2696\uFE0F", alembic: "\u2697\uFE0F", gear: "\u2699\uFE0F", atom_symbol: "\u269B\uFE0F", fleur_de_lis: "\u269C\uFE0F", warning: "\u26A0\uFE0F", zap: "\u26A1", transgender_symbol: "\u26A7\uFE0F", white_circle: "\u26AA", black_circle: "\u26AB", coffin: "\u26B0\uFE0F", funeral_urn: "\u26B1\uFE0F", soccer: "\u26BD", baseball: "\u26BE", snowman_without_snow: "\u26C4", partly_sunny: "\u26C5", thunder_cloud_and_rain: "\u26C8\uFE0F", ophiuchus: "\u26CE", pick: "\u26CF\uFE0F", helmet_with_white_cross: "\u26D1\uFE0F", chains: "\u26D3\uFE0F", no_entry: "\u26D4", shinto_shrine: "\u26E9\uFE0F", church: "\u26EA", mountain: "\u26F0\uFE0F", umbrella_on_ground: "\u26F1\uFE0F", fountain: "\u26F2", golf: "\u26F3", ferry: "\u26F4\uFE0F", boat: "\u26F5", sailboat: "\u26F5", skier: "\u26F7\uFE0F", ice_skate: "\u26F8\uFE0F", "woman-bouncing-ball": "\u26F9\uFE0F\u200D\u2640\uFE0F", "man-bouncing-ball": "\u26F9\uFE0F\u200D\u2642\uFE0F", person_with_ball: "\u26F9\uFE0F\u200D\u2642\uFE0F", tent: "\u26FA", fuelpump: "\u26FD", scissors: "\u2702\uFE0F", airplane: "\u2708\uFE0F", email: "\u2709\uFE0F", envelope: "\u2709\uFE0F", fist: "\u270A", hand: "\u270B", raised_hand: "\u270B", v: "\u270C\uFE0F", writing_hand: "\u270D\uFE0F", pencil2: "\u270F\uFE0F", black_nib: "\u2712\uFE0F", heavy_check_mark: "\u2714\uFE0F", heavy_multiplication_x: "\u2716\uFE0F", latin_cross: "\u271D\uFE0F", star_of_david: "\u2721\uFE0F", eight_spoked_asterisk: "\u2733\uFE0F", eight_pointed_black_star: "\u2734\uFE0F", snowflake: "\u2744\uFE0F", sparkle: "\u2747\uFE0F", x: "\u274C", negative_squared_cross_mark: "\u274E", heavy_heart_exclamation_mark_ornament: "\u2763\uFE0F", heart_on_fire: "\u2764\uFE0F\u200D\u{1F525}", mending_heart: "\u2764\uFE0F\u200D\u{1FA79}", heart: "\u2764\uFE0F", arrow_right: "\u27A1\uFE0F", curly_loop: "\u27B0", loop: "\u27BF", arrow_heading_up: "\u2934\uFE0F", arrow_heading_down: "\u2935\uFE0F", arrow_left: "\u2B05\uFE0F", arrow_up: "\u2B06\uFE0F", arrow_down: "\u2B07\uFE0F", black_large_square: "\u2B1B", white_large_square: "\u2B1C", star: "\u2B50", o: "\u2B55", wavy_dash: "\u3030\uFE0F", part_alternation_mark: "\u303D\uFE0F", congratulations: "\u3297\uFE0F", secret: "\u3299\uFE0F" }; + } +}); + +// node_modules/node-emoji/lib/emoji.js +var require_emoji2 = __commonJS({ + "node_modules/node-emoji/lib/emoji.js"(exports, module2) { + var toArray2 = require_toArray(); + var emojiByName = require_emoji(); + var emojiNameRegex = /:([a-zA-Z0-9_\-\+]+):/g; + var trimSpaceRegex = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + function stripColons(str2) { + var colonIndex = str2.indexOf(":"); + if (colonIndex > -1) { + if (colonIndex === str2.length - 1) { + str2 = str2.substring(0, colonIndex); + return stripColons(str2); + } else { + str2 = str2.substr(colonIndex + 1); + return stripColons(str2); + } + } + return str2; + } + function wrapColons(str2) { + return typeof str2 === "string" && str2.length > 0 ? ":" + str2 + ":" : str2; + } + function ensureColons(str2) { + return typeof str2 === "string" && str2[0] !== ":" ? wrapColons(str2) : str2; + } + var NON_SPACING_MARK = String.fromCharCode(65039); + var nonSpacingRegex = new RegExp(NON_SPACING_MARK, "g"); + function stripNSB(code) { + return code.replace(nonSpacingRegex, ""); + } + var emojiByCode = Object.keys(emojiByName).reduce(function(h, k) { + h[stripNSB(emojiByName[k])] = k; + return h; + }, {}); + var Emoji = { + emoji: emojiByName + }; + Emoji._get = function _get(emoji2) { + if (emojiByCode[stripNSB(emoji2)]) { + return emoji2; + } else if (emojiByName.hasOwnProperty(emoji2)) { + return emojiByName[emoji2]; + } + return ensureColons(emoji2); + }; + Emoji.get = function get2(emoji2) { + emoji2 = stripColons(emoji2); + return Emoji._get(emoji2); + }; + Emoji.find = function find(nameOrCode) { + return Emoji.findByName(nameOrCode) || Emoji.findByCode(nameOrCode); + }; + Emoji.findByName = function findByName(name) { + var stripped = stripColons(name); + var emoji2 = emojiByName[stripped]; + return emoji2 ? { emoji: emoji2, key: stripped } : void 0; + }; + Emoji.findByCode = function findByCode(code) { + var stripped = stripNSB(code); + var name = emojiByCode[stripped]; + return name ? { emoji: emojiByName[name], key: name } : void 0; + }; + Emoji.hasEmoji = function hasEmoji(nameOrCode) { + return Emoji.hasEmojiByName(nameOrCode) || Emoji.hasEmojiByCode(nameOrCode); + }; + Emoji.hasEmojiByName = function hasEmojiByName(name) { + var result = Emoji.findByName(name); + return !!result && result.key === stripColons(name); + }; + Emoji.hasEmojiByCode = function hasEmojiByCode(code) { + var result = Emoji.findByCode(code); + return !!result && stripNSB(result.emoji) === stripNSB(code); + }; + Emoji.which = function which(emoji_code, includeColons) { + var code = stripNSB(emoji_code); + var word = emojiByCode[code]; + return includeColons ? wrapColons(word) : word; + }; + Emoji.emojify = function emojify(str2, on_missing, format2) { + if (!str2) + return ""; + return str2.split(emojiNameRegex).map(function parseEmoji(s, i) { + if (i % 2 === 0) + return s; + var emoji2 = Emoji._get(s); + var isMissing = emoji2.indexOf(":") > -1; + if (isMissing && typeof on_missing === "function") { + return on_missing(s); + } + if (!isMissing && typeof format2 === "function") { + return format2(emoji2, s); + } + return emoji2; + }).join(""); + }; + Emoji.random = function random() { + var emojiKeys = Object.keys(emojiByName); + var randomIndex = Math.floor(Math.random() * emojiKeys.length); + var key = emojiKeys[randomIndex]; + var emoji2 = Emoji._get(key); + return { key, emoji: emoji2 }; + }; + Emoji.search = function search(str2) { + var emojiKeys = Object.keys(emojiByName); + var matcher = stripColons(str2); + var matchingKeys = emojiKeys.filter(function(key) { + return key.toString().indexOf(matcher) === 0; + }); + return matchingKeys.map(function(key) { + return { + key, + emoji: Emoji._get(key) + }; + }); + }; + Emoji.unemojify = function unemojify(str2) { + if (!str2) + return ""; + var words = toArray2(str2); + return words.map(function(word) { + return Emoji.which(word, true) || word; + }).join(""); + }; + Emoji.replace = function replace(str2, replacement, cleanSpaces) { + if (!str2) + return ""; + var replace2 = typeof replacement === "function" ? replacement : function() { + return replacement; + }; + var words = toArray2(str2); + var replaced = words.map(function(word, idx) { + var emoji2 = Emoji.findByCode(word); + if (emoji2 && cleanSpaces && words[idx + 1] === " ") { + words[idx + 1] = ""; + } + return emoji2 ? replace2(emoji2) : word; + }).join(""); + return cleanSpaces ? replaced.replace(trimSpaceRegex, "") : replaced; + }; + Emoji.strip = function strip(str2) { + return Emoji.replace(str2, "", true); + }; + module2.exports = Emoji; + } +}); + +// node_modules/node-emoji/index.js +var require_node_emoji = __commonJS({ + "node_modules/node-emoji/index.js"(exports, module2) { + module2.exports = require_emoji2(); + } +}); + +// node_modules/prettier/package.json +var require_package2 = __commonJS({ + "node_modules/prettier/package.json"(exports, module2) { + module2.exports = { + name: "prettier", + version: "2.7.1", + description: "Prettier is an opinionated code formatter", + bin: "./bin-prettier.js", + repository: "prettier/prettier", + funding: "https://github.com/prettier/prettier?sponsor=1", + homepage: "https://prettier.io", + author: "James Long", + license: "MIT", + main: "./index.js", + browser: "./standalone.js", + unpkg: "./standalone.js", + engines: { + node: ">=10.13.0" + }, + files: [ + "*.js", + "esm/*.mjs" + ] + }; + } +}); + +// node_modules/prettier/doc.js +var require_doc = __commonJS({ + "node_modules/prettier/doc.js"(exports, module2) { + (function(factory) { + if (typeof exports === "object" && typeof module2 === "object") { + module2.exports = factory(); + } else if (typeof define === "function" && define.amd) { + define(factory); + } else { + var root = typeof globalThis !== "undefined" ? globalThis : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : this || {}; + root.doc = factory(); + } + })(function() { + "use strict"; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __commonJS2 = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var require_doc_js_umd = __commonJS2({ + "dist/_doc.js.umd.js"(exports2, module3) { + var __create2 = Object.create; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames22 = Object.getOwnPropertyNames; + var __getProtoOf2 = Object.getPrototypeOf; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames22(fn)[0]])(fn = 0)), res; + }; + var __commonJS22 = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames22(cb)[0]])((mod = { + exports: {} + }).exports, mod), mod.exports; + }; + var __export = (target, all) => { + for (var name in all) + __defProp2(target, name, { + get: all[name], + enumerable: true + }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames22(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { + get: () => from[key], + enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable + }); + } + return to; + }; + var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { + value: mod, + enumerable: true + }) : target, mod)); + var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { + value: true + }), mod); + var init_define_process = __esm({ + ""() { + } + }); + var require_doc_builders = __commonJS22({ + "src/document/doc-builders.js"(exports22, module22) { + "use strict"; + init_define_process(); + function concat(parts) { + if (false) { + for (const part of parts) { + assertDoc(part); + } + } + return { + type: "concat", + parts + }; + } + function indent(contents) { + if (false) { + assertDoc(contents); + } + return { + type: "indent", + contents + }; + } + function align(widthOrString, contents) { + if (false) { + assertDoc(contents); + } + return { + type: "align", + contents, + n: widthOrString + }; + } + function group(contents) { + let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (false) { + assertDoc(contents); + } + return { + type: "group", + id: opts.id, + contents, + break: Boolean(opts.shouldBreak), + expandedStates: opts.expandedStates + }; + } + function dedentToRoot(contents) { + return align(Number.NEGATIVE_INFINITY, contents); + } + function markAsRoot(contents) { + return align({ + type: "root" + }, contents); + } + function dedent(contents) { + return align(-1, contents); + } + function conditionalGroup(states, opts) { + return group(states[0], Object.assign(Object.assign({}, opts), {}, { + expandedStates: states + })); + } + function fill(parts) { + if (false) { + for (const part of parts) { + assertDoc(part); + } + } + return { + type: "fill", + parts + }; + } + function ifBreak(breakContents, flatContents) { + let opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (false) { + if (breakContents) { + assertDoc(breakContents); + } + if (flatContents) { + assertDoc(flatContents); + } + } + return { + type: "if-break", + breakContents, + flatContents, + groupId: opts.groupId + }; + } + function indentIfBreak(contents, opts) { + return { + type: "indent-if-break", + contents, + groupId: opts.groupId, + negate: opts.negate + }; + } + function lineSuffix(contents) { + if (false) { + assertDoc(contents); + } + return { + type: "line-suffix", + contents + }; + } + var lineSuffixBoundary = { + type: "line-suffix-boundary" + }; + var breakParent = { + type: "break-parent" + }; + var trim = { + type: "trim" + }; + var hardlineWithoutBreakParent = { + type: "line", + hard: true + }; + var literallineWithoutBreakParent = { + type: "line", + hard: true, + literal: true + }; + var line = { + type: "line" + }; + var softline = { + type: "line", + soft: true + }; + var hardline = concat([hardlineWithoutBreakParent, breakParent]); + var literalline = concat([literallineWithoutBreakParent, breakParent]); + var cursor = { + type: "cursor", + placeholder: Symbol("cursor") + }; + function join(sep, arr) { + const res = []; + for (let i = 0; i < arr.length; i++) { + if (i !== 0) { + res.push(sep); + } + res.push(arr[i]); + } + return concat(res); + } + function addAlignmentToDoc(doc, size, tabWidth) { + let aligned = doc; + if (size > 0) { + for (let i = 0; i < Math.floor(size / tabWidth); ++i) { + aligned = indent(aligned); + } + aligned = align(size % tabWidth, aligned); + aligned = align(Number.NEGATIVE_INFINITY, aligned); + } + return aligned; + } + function label(label2, contents) { + return { + type: "label", + label: label2, + contents + }; + } + module22.exports = { + concat, + join, + line, + softline, + hardline, + literalline, + group, + conditionalGroup, + fill, + lineSuffix, + lineSuffixBoundary, + cursor, + breakParent, + ifBreak, + trim, + indent, + indentIfBreak, + align, + addAlignmentToDoc, + markAsRoot, + dedentToRoot, + dedent, + hardlineWithoutBreakParent, + literallineWithoutBreakParent, + label + }; + } + }); + var require_end_of_line = __commonJS22({ + "src/common/end-of-line.js"(exports22, module22) { + "use strict"; + init_define_process(); + function guessEndOfLine(text) { + const index = text.indexOf("\r"); + if (index >= 0) { + return text.charAt(index + 1) === "\n" ? "crlf" : "cr"; + } + return "lf"; + } + function convertEndOfLineToChars(value) { + switch (value) { + case "cr": + return "\r"; + case "crlf": + return "\r\n"; + default: + return "\n"; + } + } + function countEndOfLineChars(text, eol) { + let regex; + switch (eol) { + case "\n": + regex = /\n/g; + break; + case "\r": + regex = /\r/g; + break; + case "\r\n": + regex = /\r\n/g; + break; + default: + throw new Error('Unexpected "eol" '.concat(JSON.stringify(eol), ".")); + } + const endOfLines = text.match(regex); + return endOfLines ? endOfLines.length : 0; + } + function normalizeEndOfLine(text) { + return text.replace(/\r\n?/g, "\n"); + } + module22.exports = { + guessEndOfLine, + convertEndOfLineToChars, + countEndOfLineChars, + normalizeEndOfLine + }; + } + }); + var require_get_last = __commonJS22({ + "src/utils/get-last.js"(exports22, module22) { + "use strict"; + init_define_process(); + var getLast = (arr) => arr[arr.length - 1]; + module22.exports = getLast; + } + }); + function ansiRegex() { + let { + onlyFirst = false + } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + const pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|"); + return new RegExp(pattern, onlyFirst ? void 0 : "g"); + } + var init_ansi_regex = __esm({ + "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() { + init_define_process(); + } + }); + function stripAnsi(string) { + if (typeof string !== "string") { + throw new TypeError("Expected a `string`, got `".concat(typeof string, "`")); + } + return string.replace(ansiRegex(), ""); + } + var init_strip_ansi = __esm({ + "node_modules/strip-ansi/index.js"() { + init_define_process(); + init_ansi_regex(); + } + }); + function isFullwidthCodePoint(codePoint) { + if (!Number.isInteger(codePoint)) { + return false; + } + return codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141); + } + var init_is_fullwidth_code_point = __esm({ + "node_modules/is-fullwidth-code-point/index.js"() { + init_define_process(); + } + }); + var require_emoji_regex2 = __commonJS22({ + "node_modules/emoji-regex/index.js"(exports22, module22) { + "use strict"; + init_define_process(); + module22.exports = function() { + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; + }; + } + }); + var string_width_exports = {}; + __export(string_width_exports, { + default: () => stringWidth + }); + function stringWidth(string) { + if (typeof string !== "string" || string.length === 0) { + return 0; + } + string = stripAnsi(string); + if (string.length === 0) { + return 0; + } + string = string.replace((0, import_emoji_regex.default)(), " "); + let width = 0; + for (let index = 0; index < string.length; index++) { + const codePoint = string.codePointAt(index); + if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) { + continue; + } + if (codePoint >= 768 && codePoint <= 879) { + continue; + } + if (codePoint > 65535) { + index++; + } + width += isFullwidthCodePoint(codePoint) ? 2 : 1; + } + return width; + } + var import_emoji_regex; + var init_string_width = __esm({ + "node_modules/string-width/index.js"() { + init_define_process(); + init_strip_ansi(); + init_is_fullwidth_code_point(); + import_emoji_regex = __toESM2(require_emoji_regex2()); + } + }); + var require_get_string_width = __commonJS22({ + "src/utils/get-string-width.js"(exports22, module22) { + "use strict"; + init_define_process(); + var stringWidth2 = (init_string_width(), __toCommonJS(string_width_exports)).default; + var notAsciiRegex = /[^\x20-\x7F]/; + function getStringWidth(text) { + if (!text) { + return 0; + } + if (!notAsciiRegex.test(text)) { + return text.length; + } + return stringWidth2(text); + } + module22.exports = getStringWidth; + } + }); + var require_doc_utils = __commonJS22({ + "src/document/doc-utils.js"(exports22, module22) { + "use strict"; + init_define_process(); + var getLast = require_get_last(); + var { + literalline, + join + } = require_doc_builders(); + var isConcat = (doc) => Array.isArray(doc) || doc && doc.type === "concat"; + var getDocParts = (doc) => { + if (Array.isArray(doc)) { + return doc; + } + if (doc.type !== "concat" && doc.type !== "fill") { + throw new Error("Expect doc type to be `concat` or `fill`."); + } + return doc.parts; + }; + var traverseDocOnExitStackMarker = {}; + function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) { + const docsStack = [doc]; + while (docsStack.length > 0) { + const doc2 = docsStack.pop(); + if (doc2 === traverseDocOnExitStackMarker) { + onExit(docsStack.pop()); + continue; + } + if (onExit) { + docsStack.push(doc2, traverseDocOnExitStackMarker); + } + if (!onEnter || onEnter(doc2) !== false) { + if (isConcat(doc2) || doc2.type === "fill") { + const parts = getDocParts(doc2); + for (let ic = parts.length, i = ic - 1; i >= 0; --i) { + docsStack.push(parts[i]); + } + } else if (doc2.type === "if-break") { + if (doc2.flatContents) { + docsStack.push(doc2.flatContents); + } + if (doc2.breakContents) { + docsStack.push(doc2.breakContents); + } + } else if (doc2.type === "group" && doc2.expandedStates) { + if (shouldTraverseConditionalGroups) { + for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i) { + docsStack.push(doc2.expandedStates[i]); + } + } else { + docsStack.push(doc2.contents); + } + } else if (doc2.contents) { + docsStack.push(doc2.contents); + } + } + } + } + function mapDoc(doc, cb) { + const mapped = /* @__PURE__ */ new Map(); + return rec(doc); + function rec(doc2) { + if (mapped.has(doc2)) { + return mapped.get(doc2); + } + const result = process2(doc2); + mapped.set(doc2, result); + return result; + } + function process2(doc2) { + if (Array.isArray(doc2)) { + return cb(doc2.map(rec)); + } + if (doc2.type === "concat" || doc2.type === "fill") { + const parts = doc2.parts.map(rec); + return cb(Object.assign(Object.assign({}, doc2), {}, { + parts + })); + } + if (doc2.type === "if-break") { + const breakContents = doc2.breakContents && rec(doc2.breakContents); + const flatContents = doc2.flatContents && rec(doc2.flatContents); + return cb(Object.assign(Object.assign({}, doc2), {}, { + breakContents, + flatContents + })); + } + if (doc2.type === "group" && doc2.expandedStates) { + const expandedStates = doc2.expandedStates.map(rec); + const contents = expandedStates[0]; + return cb(Object.assign(Object.assign({}, doc2), {}, { + contents, + expandedStates + })); + } + if (doc2.contents) { + const contents = rec(doc2.contents); + return cb(Object.assign(Object.assign({}, doc2), {}, { + contents + })); + } + return cb(doc2); + } + } + function findInDoc(doc, fn, defaultValue) { + let result = defaultValue; + let hasStopped = false; + function findInDocOnEnterFn(doc2) { + const maybeResult = fn(doc2); + if (maybeResult !== void 0) { + hasStopped = true; + result = maybeResult; + } + if (hasStopped) { + return false; + } + } + traverseDoc(doc, findInDocOnEnterFn); + return result; + } + function willBreakFn(doc) { + if (doc.type === "group" && doc.break) { + return true; + } + if (doc.type === "line" && doc.hard) { + return true; + } + if (doc.type === "break-parent") { + return true; + } + } + function willBreak(doc) { + return findInDoc(doc, willBreakFn, false); + } + function breakParentGroup(groupStack) { + if (groupStack.length > 0) { + const parentGroup = getLast(groupStack); + if (!parentGroup.expandedStates && !parentGroup.break) { + parentGroup.break = "propagated"; + } + } + return null; + } + function propagateBreaks(doc) { + const alreadyVisitedSet = /* @__PURE__ */ new Set(); + const groupStack = []; + function propagateBreaksOnEnterFn(doc2) { + if (doc2.type === "break-parent") { + breakParentGroup(groupStack); + } + if (doc2.type === "group") { + groupStack.push(doc2); + if (alreadyVisitedSet.has(doc2)) { + return false; + } + alreadyVisitedSet.add(doc2); + } + } + function propagateBreaksOnExitFn(doc2) { + if (doc2.type === "group") { + const group = groupStack.pop(); + if (group.break) { + breakParentGroup(groupStack); + } + } + } + traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn, true); + } + function removeLinesFn(doc) { + if (doc.type === "line" && !doc.hard) { + return doc.soft ? "" : " "; + } + if (doc.type === "if-break") { + return doc.flatContents || ""; + } + return doc; + } + function removeLines(doc) { + return mapDoc(doc, removeLinesFn); + } + var isHardline = (doc, nextDoc) => doc && doc.type === "line" && doc.hard && nextDoc && nextDoc.type === "break-parent"; + function stripDocTrailingHardlineFromDoc(doc) { + if (!doc) { + return doc; + } + if (isConcat(doc) || doc.type === "fill") { + const parts = getDocParts(doc); + while (parts.length > 1 && isHardline(...parts.slice(-2))) { + parts.length -= 2; + } + if (parts.length > 0) { + const lastPart = stripDocTrailingHardlineFromDoc(getLast(parts)); + parts[parts.length - 1] = lastPart; + } + return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, { + parts + }); + } + switch (doc.type) { + case "align": + case "indent": + case "indent-if-break": + case "group": + case "line-suffix": + case "label": { + const contents = stripDocTrailingHardlineFromDoc(doc.contents); + return Object.assign(Object.assign({}, doc), {}, { + contents + }); + } + case "if-break": { + const breakContents = stripDocTrailingHardlineFromDoc(doc.breakContents); + const flatContents = stripDocTrailingHardlineFromDoc(doc.flatContents); + return Object.assign(Object.assign({}, doc), {}, { + breakContents, + flatContents + }); + } + } + return doc; + } + function stripTrailingHardline(doc) { + return stripDocTrailingHardlineFromDoc(cleanDoc(doc)); + } + function cleanDocFn(doc) { + switch (doc.type) { + case "fill": + if (doc.parts.every((part) => part === "")) { + return ""; + } + break; + case "group": + if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) { + return ""; + } + if (doc.contents.type === "group" && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) { + return doc.contents; + } + break; + case "align": + case "indent": + case "indent-if-break": + case "line-suffix": + if (!doc.contents) { + return ""; + } + break; + case "if-break": + if (!doc.flatContents && !doc.breakContents) { + return ""; + } + break; + } + if (!isConcat(doc)) { + return doc; + } + const parts = []; + for (const part of getDocParts(doc)) { + if (!part) { + continue; + } + const [currentPart, ...restParts] = isConcat(part) ? getDocParts(part) : [part]; + if (typeof currentPart === "string" && typeof getLast(parts) === "string") { + parts[parts.length - 1] += currentPart; + } else { + parts.push(currentPart); + } + parts.push(...restParts); + } + if (parts.length === 0) { + return ""; + } + if (parts.length === 1) { + return parts[0]; + } + return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, { + parts + }); + } + function cleanDoc(doc) { + return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc)); + } + function normalizeParts(parts) { + const newParts = []; + const restParts = parts.filter(Boolean); + while (restParts.length > 0) { + const part = restParts.shift(); + if (!part) { + continue; + } + if (isConcat(part)) { + restParts.unshift(...getDocParts(part)); + continue; + } + if (newParts.length > 0 && typeof getLast(newParts) === "string" && typeof part === "string") { + newParts[newParts.length - 1] += part; + continue; + } + newParts.push(part); + } + return newParts; + } + function normalizeDoc(doc) { + return mapDoc(doc, (currentDoc) => { + if (Array.isArray(currentDoc)) { + return normalizeParts(currentDoc); + } + if (!currentDoc.parts) { + return currentDoc; + } + return Object.assign(Object.assign({}, currentDoc), {}, { + parts: normalizeParts(currentDoc.parts) + }); + }); + } + function replaceEndOfLine(doc) { + return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" && currentDoc.includes("\n") ? replaceTextEndOfLine(currentDoc) : currentDoc); + } + function replaceTextEndOfLine(text) { + let replacement = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : literalline; + return join(replacement, text.split("\n")).parts; + } + function canBreakFn(doc) { + if (doc.type === "line") { + return true; + } + } + function canBreak(doc) { + return findInDoc(doc, canBreakFn, false); + } + module22.exports = { + isConcat, + getDocParts, + willBreak, + traverseDoc, + findInDoc, + mapDoc, + propagateBreaks, + removeLines, + stripTrailingHardline, + normalizeParts, + normalizeDoc, + cleanDoc, + replaceTextEndOfLine, + replaceEndOfLine, + canBreak + }; + } + }); + var require_doc_printer = __commonJS22({ + "src/document/doc-printer.js"(exports22, module22) { + "use strict"; + init_define_process(); + var { + convertEndOfLineToChars + } = require_end_of_line(); + var getLast = require_get_last(); + var getStringWidth = require_get_string_width(); + var { + fill, + cursor, + indent + } = require_doc_builders(); + var { + isConcat, + getDocParts + } = require_doc_utils(); + var groupModeMap; + var MODE_BREAK = 1; + var MODE_FLAT = 2; + function rootIndent() { + return { + value: "", + length: 0, + queue: [] + }; + } + function makeIndent(ind, options) { + return generateInd(ind, { + type: "indent" + }, options); + } + function makeAlign(indent2, widthOrDoc, options) { + if (widthOrDoc === Number.NEGATIVE_INFINITY) { + return indent2.root || rootIndent(); + } + if (widthOrDoc < 0) { + return generateInd(indent2, { + type: "dedent" + }, options); + } + if (!widthOrDoc) { + return indent2; + } + if (widthOrDoc.type === "root") { + return Object.assign(Object.assign({}, indent2), {}, { + root: indent2 + }); + } + const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign"; + return generateInd(indent2, { + type: alignType, + n: widthOrDoc + }, options); + } + function generateInd(ind, newPart, options) { + const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart]; + let value = ""; + let length = 0; + let lastTabs = 0; + let lastSpaces = 0; + for (const part of queue) { + switch (part.type) { + case "indent": + flush(); + if (options.useTabs) { + addTabs(1); + } else { + addSpaces(options.tabWidth); + } + break; + case "stringAlign": + flush(); + value += part.n; + length += part.n.length; + break; + case "numberAlign": + lastTabs += 1; + lastSpaces += part.n; + break; + default: + throw new Error("Unexpected type '".concat(part.type, "'")); + } + } + flushSpaces(); + return Object.assign(Object.assign({}, ind), {}, { + value, + length, + queue + }); + function addTabs(count) { + value += " ".repeat(count); + length += options.tabWidth * count; + } + function addSpaces(count) { + value += " ".repeat(count); + length += count; + } + function flush() { + if (options.useTabs) { + flushTabs(); + } else { + flushSpaces(); + } + } + function flushTabs() { + if (lastTabs > 0) { + addTabs(lastTabs); + } + resetLast(); + } + function flushSpaces() { + if (lastSpaces > 0) { + addSpaces(lastSpaces); + } + resetLast(); + } + function resetLast() { + lastTabs = 0; + lastSpaces = 0; + } + } + function trim(out) { + if (out.length === 0) { + return 0; + } + let trimCount = 0; + while (out.length > 0 && typeof getLast(out) === "string" && /^[\t ]*$/.test(getLast(out))) { + trimCount += out.pop().length; + } + if (out.length > 0 && typeof getLast(out) === "string") { + const trimmed = getLast(out).replace(/[\t ]*$/, ""); + trimCount += getLast(out).length - trimmed.length; + out[out.length - 1] = trimmed; + } + return trimCount; + } + function fits(next, restCommands, width, options, hasLineSuffix, mustBeFlat) { + let restIdx = restCommands.length; + const cmds = [next]; + const out = []; + while (width >= 0) { + if (cmds.length === 0) { + if (restIdx === 0) { + return true; + } + cmds.push(restCommands[restIdx - 1]); + restIdx--; + continue; + } + const [ind, mode, doc] = cmds.pop(); + if (typeof doc === "string") { + out.push(doc); + width -= getStringWidth(doc); + } else if (isConcat(doc)) { + const parts = getDocParts(doc); + for (let i = parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, parts[i]]); + } + } else { + switch (doc.type) { + case "indent": + cmds.push([makeIndent(ind, options), mode, doc.contents]); + break; + case "align": + cmds.push([makeAlign(ind, doc.n, options), mode, doc.contents]); + break; + case "trim": + width += trim(out); + break; + case "group": { + if (mustBeFlat && doc.break) { + return false; + } + const groupMode = doc.break ? MODE_BREAK : mode; + cmds.push([ind, groupMode, doc.expandedStates && groupMode === MODE_BREAK ? getLast(doc.expandedStates) : doc.contents]); + if (doc.id) { + groupModeMap[doc.id] = groupMode; + } + break; + } + case "fill": + for (let i = doc.parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, doc.parts[i]]); + } + break; + case "if-break": + case "indent-if-break": { + const groupMode = doc.groupId ? groupModeMap[doc.groupId] : mode; + if (groupMode === MODE_BREAK) { + const breakContents = doc.type === "if-break" ? doc.breakContents : doc.negate ? doc.contents : indent(doc.contents); + if (breakContents) { + cmds.push([ind, mode, breakContents]); + } + } + if (groupMode === MODE_FLAT) { + const flatContents = doc.type === "if-break" ? doc.flatContents : doc.negate ? indent(doc.contents) : doc.contents; + if (flatContents) { + cmds.push([ind, mode, flatContents]); + } + } + break; + } + case "line": + switch (mode) { + case MODE_FLAT: + if (!doc.hard) { + if (!doc.soft) { + out.push(" "); + width -= 1; + } + break; + } + return true; + case MODE_BREAK: + return true; + } + break; + case "line-suffix": + hasLineSuffix = true; + break; + case "line-suffix-boundary": + if (hasLineSuffix) { + return false; + } + break; + case "label": + cmds.push([ind, mode, doc.contents]); + break; + } + } + } + return false; + } + function printDocToString(doc, options) { + groupModeMap = {}; + const width = options.printWidth; + const newLine = convertEndOfLineToChars(options.endOfLine); + let pos = 0; + const cmds = [[rootIndent(), MODE_BREAK, doc]]; + const out = []; + let shouldRemeasure = false; + let lineSuffix = []; + while (cmds.length > 0) { + const [ind, mode, doc2] = cmds.pop(); + if (typeof doc2 === "string") { + const formatted = newLine !== "\n" ? doc2.replace(/\n/g, newLine) : doc2; + out.push(formatted); + pos += getStringWidth(formatted); + } else if (isConcat(doc2)) { + const parts = getDocParts(doc2); + for (let i = parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, parts[i]]); + } + } else { + switch (doc2.type) { + case "cursor": + out.push(cursor.placeholder); + break; + case "indent": + cmds.push([makeIndent(ind, options), mode, doc2.contents]); + break; + case "align": + cmds.push([makeAlign(ind, doc2.n, options), mode, doc2.contents]); + break; + case "trim": + pos -= trim(out); + break; + case "group": + switch (mode) { + case MODE_FLAT: + if (!shouldRemeasure) { + cmds.push([ind, doc2.break ? MODE_BREAK : MODE_FLAT, doc2.contents]); + break; + } + case MODE_BREAK: { + shouldRemeasure = false; + const next = [ind, MODE_FLAT, doc2.contents]; + const rem = width - pos; + const hasLineSuffix = lineSuffix.length > 0; + if (!doc2.break && fits(next, cmds, rem, options, hasLineSuffix)) { + cmds.push(next); + } else { + if (doc2.expandedStates) { + const mostExpanded = getLast(doc2.expandedStates); + if (doc2.break) { + cmds.push([ind, MODE_BREAK, mostExpanded]); + break; + } else { + for (let i = 1; i < doc2.expandedStates.length + 1; i++) { + if (i >= doc2.expandedStates.length) { + cmds.push([ind, MODE_BREAK, mostExpanded]); + break; + } else { + const state = doc2.expandedStates[i]; + const cmd = [ind, MODE_FLAT, state]; + if (fits(cmd, cmds, rem, options, hasLineSuffix)) { + cmds.push(cmd); + break; + } + } + } + } + } else { + cmds.push([ind, MODE_BREAK, doc2.contents]); + } + } + break; + } + } + if (doc2.id) { + groupModeMap[doc2.id] = getLast(cmds)[1]; + } + break; + case "fill": { + const rem = width - pos; + const { + parts + } = doc2; + if (parts.length === 0) { + break; + } + const [content, whitespace] = parts; + const contentFlatCmd = [ind, MODE_FLAT, content]; + const contentBreakCmd = [ind, MODE_BREAK, content]; + const contentFits = fits(contentFlatCmd, [], rem, options, lineSuffix.length > 0, true); + if (parts.length === 1) { + if (contentFits) { + cmds.push(contentFlatCmd); + } else { + cmds.push(contentBreakCmd); + } + break; + } + const whitespaceFlatCmd = [ind, MODE_FLAT, whitespace]; + const whitespaceBreakCmd = [ind, MODE_BREAK, whitespace]; + if (parts.length === 2) { + if (contentFits) { + cmds.push(whitespaceFlatCmd, contentFlatCmd); + } else { + cmds.push(whitespaceBreakCmd, contentBreakCmd); + } + break; + } + parts.splice(0, 2); + const remainingCmd = [ind, mode, fill(parts)]; + const secondContent = parts[0]; + const firstAndSecondContentFlatCmd = [ind, MODE_FLAT, [content, whitespace, secondContent]]; + const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, options, lineSuffix.length > 0, true); + if (firstAndSecondContentFits) { + cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd); + } else if (contentFits) { + cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd); + } else { + cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd); + } + break; + } + case "if-break": + case "indent-if-break": { + const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode; + if (groupMode === MODE_BREAK) { + const breakContents = doc2.type === "if-break" ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents); + if (breakContents) { + cmds.push([ind, mode, breakContents]); + } + } + if (groupMode === MODE_FLAT) { + const flatContents = doc2.type === "if-break" ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents; + if (flatContents) { + cmds.push([ind, mode, flatContents]); + } + } + break; + } + case "line-suffix": + lineSuffix.push([ind, mode, doc2.contents]); + break; + case "line-suffix-boundary": + if (lineSuffix.length > 0) { + cmds.push([ind, mode, { + type: "line", + hard: true + }]); + } + break; + case "line": + switch (mode) { + case MODE_FLAT: + if (!doc2.hard) { + if (!doc2.soft) { + out.push(" "); + pos += 1; + } + break; + } else { + shouldRemeasure = true; + } + case MODE_BREAK: + if (lineSuffix.length > 0) { + cmds.push([ind, mode, doc2], ...lineSuffix.reverse()); + lineSuffix = []; + break; + } + if (doc2.literal) { + if (ind.root) { + out.push(newLine, ind.root.value); + pos = ind.root.length; + } else { + out.push(newLine); + pos = 0; + } + } else { + pos -= trim(out); + out.push(newLine + ind.value); + pos = ind.length; + } + break; + } + break; + case "label": + cmds.push([ind, mode, doc2.contents]); + break; + default: + } + } + if (cmds.length === 0 && lineSuffix.length > 0) { + cmds.push(...lineSuffix.reverse()); + lineSuffix = []; + } + } + const cursorPlaceholderIndex = out.indexOf(cursor.placeholder); + if (cursorPlaceholderIndex !== -1) { + const otherCursorPlaceholderIndex = out.indexOf(cursor.placeholder, cursorPlaceholderIndex + 1); + const beforeCursor = out.slice(0, cursorPlaceholderIndex).join(""); + const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join(""); + const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join(""); + return { + formatted: beforeCursor + aroundCursor + afterCursor, + cursorNodeStart: beforeCursor.length, + cursorNodeText: aroundCursor + }; + } + return { + formatted: out.join("") + }; + } + module22.exports = { + printDocToString + }; + } + }); + var require_doc_debug = __commonJS22({ + "src/document/doc-debug.js"(exports22, module22) { + "use strict"; + init_define_process(); + var { + isConcat, + getDocParts + } = require_doc_utils(); + function flattenDoc(doc) { + if (!doc) { + return ""; + } + if (isConcat(doc)) { + const res = []; + for (const part of getDocParts(doc)) { + if (isConcat(part)) { + res.push(...flattenDoc(part).parts); + } else { + const flattened = flattenDoc(part); + if (flattened !== "") { + res.push(flattened); + } + } + } + return { + type: "concat", + parts: res + }; + } + if (doc.type === "if-break") { + return Object.assign(Object.assign({}, doc), {}, { + breakContents: flattenDoc(doc.breakContents), + flatContents: flattenDoc(doc.flatContents) + }); + } + if (doc.type === "group") { + return Object.assign(Object.assign({}, doc), {}, { + contents: flattenDoc(doc.contents), + expandedStates: doc.expandedStates && doc.expandedStates.map(flattenDoc) + }); + } + if (doc.type === "fill") { + return { + type: "fill", + parts: doc.parts.map(flattenDoc) + }; + } + if (doc.contents) { + return Object.assign(Object.assign({}, doc), {}, { + contents: flattenDoc(doc.contents) + }); + } + return doc; + } + function printDocToDebug(doc) { + const printedSymbols = /* @__PURE__ */ Object.create(null); + const usedKeysForSymbols = /* @__PURE__ */ new Set(); + return printDoc(flattenDoc(doc)); + function printDoc(doc2, index, parentParts) { + if (typeof doc2 === "string") { + return JSON.stringify(doc2); + } + if (isConcat(doc2)) { + const printed = getDocParts(doc2).map(printDoc).filter(Boolean); + return printed.length === 1 ? printed[0] : "[".concat(printed.join(", "), "]"); + } + if (doc2.type === "line") { + const withBreakParent = Array.isArray(parentParts) && parentParts[index + 1] && parentParts[index + 1].type === "break-parent"; + if (doc2.literal) { + return withBreakParent ? "literalline" : "literallineWithoutBreakParent"; + } + if (doc2.hard) { + return withBreakParent ? "hardline" : "hardlineWithoutBreakParent"; + } + if (doc2.soft) { + return "softline"; + } + return "line"; + } + if (doc2.type === "break-parent") { + const afterHardline = Array.isArray(parentParts) && parentParts[index - 1] && parentParts[index - 1].type === "line" && parentParts[index - 1].hard; + return afterHardline ? void 0 : "breakParent"; + } + if (doc2.type === "trim") { + return "trim"; + } + if (doc2.type === "indent") { + return "indent(" + printDoc(doc2.contents) + ")"; + } + if (doc2.type === "align") { + return doc2.n === Number.NEGATIVE_INFINITY ? "dedentToRoot(" + printDoc(doc2.contents) + ")" : doc2.n < 0 ? "dedent(" + printDoc(doc2.contents) + ")" : doc2.n.type === "root" ? "markAsRoot(" + printDoc(doc2.contents) + ")" : "align(" + JSON.stringify(doc2.n) + ", " + printDoc(doc2.contents) + ")"; + } + if (doc2.type === "if-break") { + return "ifBreak(" + printDoc(doc2.breakContents) + (doc2.flatContents ? ", " + printDoc(doc2.flatContents) : "") + (doc2.groupId ? (!doc2.flatContents ? ', ""' : "") + ", { groupId: ".concat(printGroupId(doc2.groupId), " }") : "") + ")"; + } + if (doc2.type === "indent-if-break") { + const optionsParts = []; + if (doc2.negate) { + optionsParts.push("negate: true"); + } + if (doc2.groupId) { + optionsParts.push("groupId: ".concat(printGroupId(doc2.groupId))); + } + const options = optionsParts.length > 0 ? ", { ".concat(optionsParts.join(", "), " }") : ""; + return "indentIfBreak(".concat(printDoc(doc2.contents)).concat(options, ")"); + } + if (doc2.type === "group") { + const optionsParts = []; + if (doc2.break && doc2.break !== "propagated") { + optionsParts.push("shouldBreak: true"); + } + if (doc2.id) { + optionsParts.push("id: ".concat(printGroupId(doc2.id))); + } + const options = optionsParts.length > 0 ? ", { ".concat(optionsParts.join(", "), " }") : ""; + if (doc2.expandedStates) { + return "conditionalGroup([".concat(doc2.expandedStates.map((part) => printDoc(part)).join(","), "]").concat(options, ")"); + } + return "group(".concat(printDoc(doc2.contents)).concat(options, ")"); + } + if (doc2.type === "fill") { + return "fill([".concat(doc2.parts.map((part) => printDoc(part)).join(", "), "])"); + } + if (doc2.type === "line-suffix") { + return "lineSuffix(" + printDoc(doc2.contents) + ")"; + } + if (doc2.type === "line-suffix-boundary") { + return "lineSuffixBoundary"; + } + if (doc2.type === "label") { + return "label(".concat(JSON.stringify(doc2.label), ", ").concat(printDoc(doc2.contents), ")"); + } + throw new Error("Unknown doc type " + doc2.type); + } + function printGroupId(id) { + if (typeof id !== "symbol") { + return JSON.stringify(String(id)); + } + if (id in printedSymbols) { + return printedSymbols[id]; + } + const prefix = String(id).slice(7, -1) || "symbol"; + for (let counter = 0; ; counter++) { + const key = prefix + (counter > 0 ? " #".concat(counter) : ""); + if (!usedKeysForSymbols.has(key)) { + usedKeysForSymbols.add(key); + return printedSymbols[id] = "Symbol.for(".concat(JSON.stringify(key), ")"); + } + } + } + } + module22.exports = { + printDocToDebug + }; + } + }); + init_define_process(); + module3.exports = { + builders: require_doc_builders(), + printer: require_doc_printer(), + utils: require_doc_utils(), + debug: require_doc_debug() + }; + } + }); + return require_doc_js_umd(); + }); + } +}); + +// node_modules/prettier/third-party.js +var require_third_party = __commonJS({ + "node_modules/prettier/third-party.js"(exports, module2) { + "use strict"; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __commonJS2 = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { + exports: {} + }).exports, mod), mod.exports; + }; + var require_resolve_from = __commonJS2({ + "node_modules/import-fresh/node_modules/resolve-from/index.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var Module = require("module"); + var fs5 = require("fs"); + var resolveFrom = (fromDir, moduleId, silent) => { + if (typeof fromDir !== "string") { + throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof fromDir}\``); + } + if (typeof moduleId !== "string") { + throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof moduleId}\``); + } + try { + fromDir = fs5.realpathSync(fromDir); + } catch (err) { + if (err.code === "ENOENT") { + fromDir = path2.resolve(fromDir); + } else if (silent) { + return null; + } else { + throw err; + } + } + const fromFile = path2.join(fromDir, "noop.js"); + const resolveFileName = () => Module._resolveFilename(moduleId, { + id: fromFile, + filename: fromFile, + paths: Module._nodeModulePaths(fromDir) + }); + if (silent) { + try { + return resolveFileName(); + } catch (err) { + return null; + } + } + return resolveFileName(); + }; + module22.exports = (fromDir, moduleId) => resolveFrom(fromDir, moduleId); + module22.exports.silent = (fromDir, moduleId) => resolveFrom(fromDir, moduleId, true); + } + }); + var require_parent_module = __commonJS2({ + "scripts/build/shims/parent-module.cjs"(exports2, module22) { + "use strict"; + module22.exports = (file) => file; + } + }); + var require_import_fresh = __commonJS2({ + "node_modules/import-fresh/index.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var resolveFrom = require_resolve_from(); + var parentModule = require_parent_module(); + module22.exports = (moduleId) => { + if (typeof moduleId !== "string") { + throw new TypeError("Expected a string"); + } + const parentPath = parentModule(__filename); + const cwd = parentPath ? path2.dirname(parentPath) : __dirname; + const filePath = resolveFrom(cwd, moduleId); + const oldModule = require.cache[filePath]; + if (oldModule && oldModule.parent) { + let i = oldModule.parent.children.length; + while (i--) { + if (oldModule.parent.children[i].id === filePath) { + oldModule.parent.children.splice(i, 1); + } + } + } + delete require.cache[filePath]; + const parent = require.cache[parentPath]; + return parent === void 0 ? require(filePath) : parent.require(filePath); + }; + } + }); + var require_is_arrayish = __commonJS2({ + "node_modules/is-arrayish/index.js"(exports2, module22) { + "use strict"; + module22.exports = function isArrayish(obj) { + if (!obj) { + return false; + } + return obj instanceof Array || Array.isArray(obj) || obj.length >= 0 && obj.splice instanceof Function; + }; + } + }); + var require_error_ex = __commonJS2({ + "node_modules/error-ex/index.js"(exports2, module22) { + "use strict"; + var util = require("util"); + var isArrayish = require_is_arrayish(); + var errorEx = function errorEx2(name, properties) { + if (!name || name.constructor !== String) { + properties = name || {}; + name = Error.name; + } + var errorExError = function ErrorEXError(message) { + if (!this) { + return new ErrorEXError(message); + } + message = message instanceof Error ? message.message : message || this.message; + Error.call(this, message); + Error.captureStackTrace(this, errorExError); + this.name = name; + Object.defineProperty(this, "message", { + configurable: true, + enumerable: false, + get: function() { + var newMessage = message.split(/\r?\n/g); + for (var key in properties) { + if (!properties.hasOwnProperty(key)) { + continue; + } + var modifier = properties[key]; + if ("message" in modifier) { + newMessage = modifier.message(this[key], newMessage) || newMessage; + if (!isArrayish(newMessage)) { + newMessage = [newMessage]; + } + } + } + return newMessage.join("\n"); + }, + set: function(v) { + message = v; + } + }); + var overwrittenStack = null; + var stackDescriptor = Object.getOwnPropertyDescriptor(this, "stack"); + var stackGetter = stackDescriptor.get; + var stackValue = stackDescriptor.value; + delete stackDescriptor.value; + delete stackDescriptor.writable; + stackDescriptor.set = function(newstack) { + overwrittenStack = newstack; + }; + stackDescriptor.get = function() { + var stack = (overwrittenStack || (stackGetter ? stackGetter.call(this) : stackValue)).split(/\r?\n+/g); + if (!overwrittenStack) { + stack[0] = this.name + ": " + this.message; + } + var lineCount = 1; + for (var key in properties) { + if (!properties.hasOwnProperty(key)) { + continue; + } + var modifier = properties[key]; + if ("line" in modifier) { + var line = modifier.line(this[key]); + if (line) { + stack.splice(lineCount++, 0, " " + line); + } + } + if ("stack" in modifier) { + modifier.stack(this[key], stack); + } + } + return stack.join("\n"); + }; + Object.defineProperty(this, "stack", stackDescriptor); + }; + if (Object.setPrototypeOf) { + Object.setPrototypeOf(errorExError.prototype, Error.prototype); + Object.setPrototypeOf(errorExError, Error); + } else { + util.inherits(errorExError, Error); + } + return errorExError; + }; + errorEx.append = function(str2, def) { + return { + message: function(v, message) { + v = v || def; + if (v) { + message[0] += " " + str2.replace("%s", v.toString()); + } + return message; + } + }; + }; + errorEx.line = function(str2, def) { + return { + line: function(v) { + v = v || def; + if (v) { + return str2.replace("%s", v.toString()); + } + return null; + } + }; + }; + module22.exports = errorEx; + } + }); + var require_json_parse_even_better_errors = __commonJS2({ + "node_modules/json-parse-even-better-errors/index.js"(exports2, module22) { + "use strict"; + var hexify = (char) => { + const h = char.charCodeAt(0).toString(16).toUpperCase(); + return "0x" + (h.length % 2 ? "0" : "") + h; + }; + var parseError = (e, txt, context) => { + if (!txt) { + return { + message: e.message + " while parsing empty string", + position: 0 + }; + } + const badToken = e.message.match(/^Unexpected token (.) .*position\s+(\d+)/i); + const errIdx = badToken ? +badToken[2] : e.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1 : null; + const msg = badToken ? e.message.replace(/^Unexpected token ./, `Unexpected token ${JSON.stringify(badToken[1])} (${hexify(badToken[1])})`) : e.message; + if (errIdx !== null && errIdx !== void 0) { + const start = errIdx <= context ? 0 : errIdx - context; + const end = errIdx + context >= txt.length ? txt.length : errIdx + context; + const slice = (start === 0 ? "" : "...") + txt.slice(start, end) + (end === txt.length ? "" : "..."); + const near = txt === slice ? "" : "near "; + return { + message: msg + ` while parsing ${near}${JSON.stringify(slice)}`, + position: errIdx + }; + } else { + return { + message: msg + ` while parsing '${txt.slice(0, context * 2)}'`, + position: 0 + }; + } + }; + var JSONParseError = class extends SyntaxError { + constructor(er, txt, context, caller) { + context = context || 20; + const metadata = parseError(er, txt, context); + super(metadata.message); + Object.assign(this, metadata); + this.code = "EJSONPARSE"; + this.systemError = er; + Error.captureStackTrace(this, caller || this.constructor); + } + get name() { + return this.constructor.name; + } + set name(n) { + } + get [Symbol.toStringTag]() { + return this.constructor.name; + } + }; + var kIndent = Symbol.for("indent"); + var kNewline = Symbol.for("newline"); + var formatRE = /^\s*[{\[]((?:\r?\n)+)([\s\t]*)/; + var emptyRE = /^(?:\{\}|\[\])((?:\r?\n)+)?$/; + var parseJson = (txt, reviver, context) => { + const parseText = stripBOM(txt); + context = context || 20; + try { + const [, newline = "\n", indent = " "] = parseText.match(emptyRE) || parseText.match(formatRE) || [, "", ""]; + const result = JSON.parse(parseText, reviver); + if (result && typeof result === "object") { + result[kNewline] = newline; + result[kIndent] = indent; + } + return result; + } catch (e) { + if (typeof txt !== "string" && !Buffer.isBuffer(txt)) { + const isEmptyArray = Array.isArray(txt) && txt.length === 0; + throw Object.assign(new TypeError(`Cannot parse ${isEmptyArray ? "an empty array" : String(txt)}`), { + code: "EJSONPARSE", + systemError: e + }); + } + throw new JSONParseError(e, parseText, context, parseJson); + } + }; + var stripBOM = (txt) => String(txt).replace(/^\uFEFF/, ""); + module22.exports = parseJson; + parseJson.JSONParseError = JSONParseError; + parseJson.noExceptions = (txt, reviver) => { + try { + return JSON.parse(stripBOM(txt), reviver); + } catch (e) { + } + }; + } + }); + var require_build5 = __commonJS2({ + "node_modules/parse-json/node_modules/lines-and-columns/build/index.js"(exports2) { + "use strict"; + exports2.__esModule = true; + exports2.LinesAndColumns = void 0; + var LF = "\n"; + var CR = "\r"; + var LinesAndColumns = function() { + function LinesAndColumns2(string) { + this.string = string; + var offsets = [0]; + for (var offset = 0; offset < string.length; ) { + switch (string[offset]) { + case LF: + offset += LF.length; + offsets.push(offset); + break; + case CR: + offset += CR.length; + if (string[offset] === LF) { + offset += LF.length; + } + offsets.push(offset); + break; + default: + offset++; + break; + } + } + this.offsets = offsets; + } + LinesAndColumns2.prototype.locationForIndex = function(index) { + if (index < 0 || index > this.string.length) { + return null; + } + var line = 0; + var offsets = this.offsets; + while (offsets[line + 1] <= index) { + line++; + } + var column = index - offsets[line]; + return { + line, + column + }; + }; + LinesAndColumns2.prototype.indexForLocation = function(location) { + var line = location.line, column = location.column; + if (line < 0 || line >= this.offsets.length) { + return null; + } + if (column < 0 || column > this.lengthOfLine(line)) { + return null; + } + return this.offsets[line] + column; + }; + LinesAndColumns2.prototype.lengthOfLine = function(line) { + var offset = this.offsets[line]; + var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1]; + return nextOffset - offset; + }; + return LinesAndColumns2; + }(); + exports2.LinesAndColumns = LinesAndColumns; + exports2["default"] = LinesAndColumns; + } + }); + var require_js_tokens = __commonJS2({ + "node_modules/js-tokens/index.js"(exports2) { + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; + exports2.matchToToken = function(match) { + var token = { + type: "invalid", + value: match[0], + closed: void 0 + }; + if (match[1]) + token.type = "string", token.closed = !!(match[3] || match[4]); + else if (match[5]) + token.type = "comment"; + else if (match[6]) + token.type = "comment", token.closed = !!match[7]; + else if (match[8]) + token.type = "regex"; + else if (match[9]) + token.type = "number"; + else if (match[10]) + token.type = "name"; + else if (match[11]) + token.type = "punctuator"; + else if (match[12]) + token.type = "whitespace"; + return token; + }; + } + }); + var require_identifier = __commonJS2({ + "node_modules/@babel/helper-validator-identifier/lib/identifier.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isIdentifierChar = isIdentifierChar; + exports2.isIdentifierName = isIdentifierName; + exports2.isIdentifierStart = isIdentifierStart; + var nonASCIIidentifierStartChars = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC"; + var nonASCIIidentifierChars = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F"; + var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); + var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; + var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; + var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + function isInAstralSet(code, set2) { + let pos = 65536; + for (let i = 0, length = set2.length; i < length; i += 2) { + pos += set2[i]; + if (pos > code) + return false; + pos += set2[i + 1]; + if (pos >= code) + return true; + } + return false; + } + function isIdentifierStart(code) { + if (code < 65) + return code === 36; + if (code <= 90) + return true; + if (code < 97) + return code === 95; + if (code <= 122) + return true; + if (code <= 65535) { + return code >= 170 && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); + } + function isIdentifierChar(code) { + if (code < 48) + return code === 36; + if (code < 58) + return true; + if (code < 65) + return false; + if (code <= 90) + return true; + if (code < 97) + return code === 95; + if (code <= 122) + return true; + if (code <= 65535) { + return code >= 170 && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); + } + function isIdentifierName(name) { + let isFirst = true; + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + if ((cp & 64512) === 55296 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + if ((trail & 64512) === 56320) { + cp = 65536 + ((cp & 1023) << 10) + (trail & 1023); + } + } + if (isFirst) { + isFirst = false; + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + return !isFirst; + } + } + }); + var require_keyword = __commonJS2({ + "node_modules/@babel/helper-validator-identifier/lib/keyword.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isKeyword = isKeyword; + exports2.isReservedWord = isReservedWord; + exports2.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; + exports2.isStrictBindReservedWord = isStrictBindReservedWord; + exports2.isStrictReservedWord = isStrictReservedWord; + var reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] + }; + var keywords = new Set(reservedWords.keyword); + var reservedWordsStrictSet = new Set(reservedWords.strict); + var reservedWordsStrictBindSet = new Set(reservedWords.strictBind); + function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; + } + function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); + } + function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); + } + function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); + } + function isKeyword(word) { + return keywords.has(word); + } + } + }); + var require_lib2 = __commonJS2({ + "node_modules/@babel/helper-validator-identifier/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + Object.defineProperty(exports2, "isIdentifierChar", { + enumerable: true, + get: function() { + return _identifier.isIdentifierChar; + } + }); + Object.defineProperty(exports2, "isIdentifierName", { + enumerable: true, + get: function() { + return _identifier.isIdentifierName; + } + }); + Object.defineProperty(exports2, "isIdentifierStart", { + enumerable: true, + get: function() { + return _identifier.isIdentifierStart; + } + }); + Object.defineProperty(exports2, "isKeyword", { + enumerable: true, + get: function() { + return _keyword.isKeyword; + } + }); + Object.defineProperty(exports2, "isReservedWord", { + enumerable: true, + get: function() { + return _keyword.isReservedWord; + } + }); + Object.defineProperty(exports2, "isStrictBindOnlyReservedWord", { + enumerable: true, + get: function() { + return _keyword.isStrictBindOnlyReservedWord; + } + }); + Object.defineProperty(exports2, "isStrictBindReservedWord", { + enumerable: true, + get: function() { + return _keyword.isStrictBindReservedWord; + } + }); + Object.defineProperty(exports2, "isStrictReservedWord", { + enumerable: true, + get: function() { + return _keyword.isStrictReservedWord; + } + }); + var _identifier = require_identifier(); + var _keyword = require_keyword(); + } + }); + var require_escape_string_regexp = __commonJS2({ + "node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js"(exports2, module22) { + "use strict"; + var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + module22.exports = function(str2) { + if (typeof str2 !== "string") { + throw new TypeError("Expected a string"); + } + return str2.replace(matchOperatorsRe, "\\$&"); + }; + } + }); + var require_color_name2 = __commonJS2({ + "node_modules/color-name/index.js"(exports2, module22) { + "use strict"; + module22.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] + }; + } + }); + var require_conversions2 = __commonJS2({ + "node_modules/color-convert/conversions.js"(exports2, module22) { + var cssKeywords = require_color_name2(); + var reverseKeywords = {}; + for (key in cssKeywords) { + if (cssKeywords.hasOwnProperty(key)) { + reverseKeywords[cssKeywords[key]] = key; + } + } + var key; + var convert = module22.exports = { + rgb: { + channels: 3, + labels: "rgb" + }, + hsl: { + channels: 3, + labels: "hsl" + }, + hsv: { + channels: 3, + labels: "hsv" + }, + hwb: { + channels: 3, + labels: "hwb" + }, + cmyk: { + channels: 4, + labels: "cmyk" + }, + xyz: { + channels: 3, + labels: "xyz" + }, + lab: { + channels: 3, + labels: "lab" + }, + lch: { + channels: 3, + labels: "lch" + }, + hex: { + channels: 1, + labels: ["hex"] + }, + keyword: { + channels: 1, + labels: ["keyword"] + }, + ansi16: { + channels: 1, + labels: ["ansi16"] + }, + ansi256: { + channels: 1, + labels: ["ansi256"] + }, + hcg: { + channels: 3, + labels: ["h", "c", "g"] + }, + apple: { + channels: 3, + labels: ["r16", "g16", "b16"] + }, + gray: { + channels: 1, + labels: ["gray"] + } + }; + for (model in convert) { + if (convert.hasOwnProperty(model)) { + if (!("channels" in convert[model])) { + throw new Error("missing channels property: " + model); + } + if (!("labels" in convert[model])) { + throw new Error("missing channel labels property: " + model); + } + if (convert[model].labels.length !== convert[model].channels) { + throw new Error("channel and label counts mismatch: " + model); + } + channels = convert[model].channels; + labels = convert[model].labels; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], "channels", { + value: channels + }); + Object.defineProperty(convert[model], "labels", { + value: labels + }); + } + } + var channels; + var labels; + var model; + convert.rgb.hsl = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var l; + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + h = Math.min(h * 60, 360); + if (h < 0) { + h += 360; + } + l = (min + max) / 2; + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + return [h, s * 100, l * 100]; + }; + convert.rgb.hsv = function(rgb) { + var rdif; + var gdif; + var bdif; + var h; + var s; + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var v = Math.max(r, g, b); + var diff = v - Math.min(r, g, b); + var diffc = function(c) { + return (v - c) / 6 / diff + 1 / 2; + }; + if (diff === 0) { + h = s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + if (r === v) { + h = bdif - gdif; + } else if (g === v) { + h = 1 / 3 + rdif - bdif; + } else if (b === v) { + h = 2 / 3 + gdif - rdif; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + return [h * 360, s * 100, v * 100]; + }; + convert.rgb.hwb = function(rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var h = convert.rgb.hsl(rgb)[0]; + var w = 1 / 255 * Math.min(r, Math.min(g, b)); + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + return [h, w * 100, b * 100]; + }; + convert.rgb.cmyk = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var c; + var m; + var y; + var k; + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; + }; + function comparativeDistance(x, y) { + return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2); + } + convert.rgb.keyword = function(rgb) { + var reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + var currentClosestDistance = Infinity; + var currentClosestKeyword; + for (var keyword in cssKeywords) { + if (cssKeywords.hasOwnProperty(keyword)) { + var value = cssKeywords[keyword]; + var distance = comparativeDistance(rgb, value); + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + } + return currentClosestKeyword; + }; + convert.keyword.rgb = function(keyword) { + return cssKeywords[keyword]; + }; + convert.rgb.xyz = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92; + g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92; + b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92; + var x = r * 0.4124 + g * 0.3576 + b * 0.1805; + var y = r * 0.2126 + g * 0.7152 + b * 0.0722; + var z = r * 0.0193 + g * 0.1192 + b * 0.9505; + return [x * 100, y * 100, z * 100]; + }; + convert.rgb.lab = function(rgb) { + var xyz = convert.rgb.xyz(rgb); + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; + l = 116 * y - 16; + a = 500 * (x - y); + b = 200 * (y - z); + return [l, a, b]; + }; + convert.hsl.rgb = function(hsl) { + var h = hsl[0] / 360; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var t1; + var t2; + var t3; + var rgb; + var val; + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + t1 = 2 * l - t2; + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + rgb[i] = val * 255; + } + return rgb; + }; + convert.hsl.hsv = function(hsl) { + var h = hsl[0]; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var smin = s; + var lmin = Math.max(l, 0.01); + var sv; + var v; + l *= 2; + s *= l <= 1 ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + v = (l + s) / 2; + sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); + return [h, sv * 100, v * 100]; + }; + convert.hsv.rgb = function(hsv) { + var h = hsv[0] / 60; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var hi = Math.floor(h) % 6; + var f = h - Math.floor(h); + var p = 255 * v * (1 - s); + var q = 255 * v * (1 - s * f); + var t = 255 * v * (1 - s * (1 - f)); + v *= 255; + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } + }; + convert.hsv.hsl = function(hsv) { + var h = hsv[0]; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var vmin = Math.max(v, 0.01); + var lmin; + var sl; + var l; + l = (2 - s) * v; + lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= lmin <= 1 ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; + }; + convert.hwb.rgb = function(hwb) { + var h = hwb[0] / 360; + var wh = hwb[1] / 100; + var bl = hwb[2] / 100; + var ratio = wh + bl; + var i; + var v; + var f; + var n; + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + if ((i & 1) !== 0) { + f = 1 - f; + } + n = wh + f * (v - wh); + var r; + var g; + var b; + switch (i) { + default: + case 6: + case 0: + r = v; + g = n; + b = wh; + break; + case 1: + r = n; + g = v; + b = wh; + break; + case 2: + r = wh; + g = v; + b = n; + break; + case 3: + r = wh; + g = n; + b = v; + break; + case 4: + r = n; + g = wh; + b = v; + break; + case 5: + r = v; + g = wh; + b = n; + break; + } + return [r * 255, g * 255, b * 255]; + }; + convert.cmyk.rgb = function(cmyk) { + var c = cmyk[0] / 100; + var m = cmyk[1] / 100; + var y = cmyk[2] / 100; + var k = cmyk[3] / 100; + var r; + var g; + var b; + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.rgb = function(xyz) { + var x = xyz[0] / 100; + var y = xyz[1] / 100; + var z = xyz[2] / 100; + var r; + var g; + var b; + r = x * 3.2406 + y * -1.5372 + z * -0.4986; + g = x * -0.9689 + y * 1.8758 + z * 0.0415; + b = x * 0.0557 + y * -0.204 + z * 1.057; + r = r > 31308e-7 ? 1.055 * Math.pow(r, 1 / 2.4) - 0.055 : r * 12.92; + g = g > 31308e-7 ? 1.055 * Math.pow(g, 1 / 2.4) - 0.055 : g * 12.92; + b = b > 31308e-7 ? 1.055 * Math.pow(b, 1 / 2.4) - 0.055 : b * 12.92; + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.lab = function(xyz) { + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; + l = 116 * y - 16; + a = 500 * (x - y); + b = 200 * (y - z); + return [l, a, b]; + }; + convert.lab.xyz = function(lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var x; + var y; + var z; + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + var y2 = Math.pow(y, 3); + var x2 = Math.pow(x, 3); + var z2 = Math.pow(z, 3); + y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787; + x *= 95.047; + y *= 100; + z *= 108.883; + return [x, y, z]; + }; + convert.lab.lch = function(lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var hr; + var h; + var c; + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + c = Math.sqrt(a * a + b * b); + return [l, c, h]; + }; + convert.lch.lab = function(lch) { + var l = lch[0]; + var c = lch[1]; + var h = lch[2]; + var a; + var b; + var hr; + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + return [l, a, b]; + }; + convert.rgb.ansi16 = function(args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; + value = Math.round(value / 50); + if (value === 0) { + return 30; + } + var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); + if (value === 2) { + ansi += 60; + } + return ansi; + }; + convert.hsv.ansi16 = function(args) { + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); + }; + convert.rgb.ansi256 = function(args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + if (r === g && g === b) { + if (r < 8) { + return 16; + } + if (r > 248) { + return 231; + } + return Math.round((r - 8) / 247 * 24) + 232; + } + var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); + return ansi; + }; + convert.ansi16.rgb = function(args) { + var color = args % 10; + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + color = color / 10.5 * 255; + return [color, color, color]; + } + var mult = (~~(args > 50) + 1) * 0.5; + var r = (color & 1) * mult * 255; + var g = (color >> 1 & 1) * mult * 255; + var b = (color >> 2 & 1) * mult * 255; + return [r, g, b]; + }; + convert.ansi256.rgb = function(args) { + if (args >= 232) { + var c = (args - 232) * 10 + 8; + return [c, c, c]; + } + args -= 16; + var rem; + var r = Math.floor(args / 36) / 5 * 255; + var g = Math.floor((rem = args % 36) / 6) / 5 * 255; + var b = rem % 6 / 5 * 255; + return [r, g, b]; + }; + convert.rgb.hex = function(args) { + var integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255); + var string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.hex.rgb = function(args) { + var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + var colorString = match[0]; + if (match[0].length === 3) { + colorString = colorString.split("").map(function(char) { + return char + char; + }).join(""); + } + var integer = parseInt(colorString, 16); + var r = integer >> 16 & 255; + var g = integer >> 8 & 255; + var b = integer & 255; + return [r, g, b]; + }; + convert.rgb.hcg = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var max = Math.max(Math.max(r, g), b); + var min = Math.min(Math.min(r, g), b); + var chroma = max - min; + var grayscale; + var hue; + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + if (chroma <= 0) { + hue = 0; + } else if (max === r) { + hue = (g - b) / chroma % 6; + } else if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma + 4; + } + hue /= 6; + hue %= 1; + return [hue * 360, chroma * 100, grayscale * 100]; + }; + convert.hsl.hcg = function(hsl) { + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var c = 1; + var f = 0; + if (l < 0.5) { + c = 2 * s * l; + } else { + c = 2 * s * (1 - l); + } + if (c < 1) { + f = (l - 0.5 * c) / (1 - c); + } + return [hsl[0], c * 100, f * 100]; + }; + convert.hsv.hcg = function(hsv) { + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var c = s * v; + var f = 0; + if (c < 1) { + f = (v - c) / (1 - c); + } + return [hsv[0], c * 100, f * 100]; + }; + convert.hcg.rgb = function(hcg) { + var h = hcg[0] / 360; + var c = hcg[1] / 100; + var g = hcg[2] / 100; + if (c === 0) { + return [g * 255, g * 255, g * 255]; + } + var pure = [0, 0, 0]; + var hi = h % 1 * 6; + var v = hi % 1; + var w = 1 - v; + var mg = 0; + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; + pure[1] = v; + pure[2] = 0; + break; + case 1: + pure[0] = w; + pure[1] = 1; + pure[2] = 0; + break; + case 2: + pure[0] = 0; + pure[1] = 1; + pure[2] = v; + break; + case 3: + pure[0] = 0; + pure[1] = w; + pure[2] = 1; + break; + case 4: + pure[0] = v; + pure[1] = 0; + pure[2] = 1; + break; + default: + pure[0] = 1; + pure[1] = 0; + pure[2] = w; + } + mg = (1 - c) * g; + return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255]; + }; + convert.hcg.hsv = function(hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1 - c); + var f = 0; + if (v > 0) { + f = c / v; + } + return [hcg[0], f * 100, v * 100]; + }; + convert.hcg.hsl = function(hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var l = g * (1 - c) + 0.5 * c; + var s = 0; + if (l > 0 && l < 0.5) { + s = c / (2 * l); + } else if (l >= 0.5 && l < 1) { + s = c / (2 * (1 - l)); + } + return [hcg[0], s * 100, l * 100]; + }; + convert.hcg.hwb = function(hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; + }; + convert.hwb.hcg = function(hwb) { + var w = hwb[1] / 100; + var b = hwb[2] / 100; + var v = 1 - b; + var c = v - w; + var g = 0; + if (c < 1) { + g = (v - c) / (1 - c); + } + return [hwb[0], c * 100, g * 100]; + }; + convert.apple.rgb = function(apple) { + return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; + }; + convert.rgb.apple = function(rgb) { + return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; + }; + convert.gray.rgb = function(args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; + }; + convert.gray.hsl = convert.gray.hsv = function(args) { + return [0, 0, args[0]]; + }; + convert.gray.hwb = function(gray) { + return [0, 100, gray[0]]; + }; + convert.gray.cmyk = function(gray) { + return [0, 0, 0, gray[0]]; + }; + convert.gray.lab = function(gray) { + return [gray[0], 0, 0]; + }; + convert.gray.hex = function(gray) { + var val = Math.round(gray[0] / 100 * 255) & 255; + var integer = (val << 16) + (val << 8) + val; + var string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.rgb.gray = function(rgb) { + var val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; + }; + } + }); + var require_route2 = __commonJS2({ + "node_modules/color-convert/route.js"(exports2, module22) { + var conversions = require_conversions2(); + function buildGraph() { + var graph = {}; + var models = Object.keys(conversions); + for (var len = models.length, i = 0; i < len; i++) { + graph[models[i]] = { + distance: -1, + parent: null + }; + } + return graph; + } + function deriveBFS(fromModel) { + var graph = buildGraph(); + var queue = [fromModel]; + graph[fromModel].distance = 0; + while (queue.length) { + var current = queue.pop(); + var adjacents = Object.keys(conversions[current]); + for (var len = adjacents.length, i = 0; i < len; i++) { + var adjacent = adjacents[i]; + var node = graph[adjacent]; + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + return graph; + } + function link(from, to) { + return function(args) { + return to(from(args)); + }; + } + function wrapConversion(toModel, graph) { + var path2 = [graph[toModel].parent, toModel]; + var fn = conversions[graph[toModel].parent][toModel]; + var cur = graph[toModel].parent; + while (graph[cur].parent) { + path2.unshift(graph[cur].parent); + fn = link(conversions[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + fn.conversion = path2; + return fn; + } + module22.exports = function(fromModel) { + var graph = deriveBFS(fromModel); + var conversion = {}; + var models = Object.keys(graph); + for (var len = models.length, i = 0; i < len; i++) { + var toModel = models[i]; + var node = graph[toModel]; + if (node.parent === null) { + continue; + } + conversion[toModel] = wrapConversion(toModel, graph); + } + return conversion; + }; + } + }); + var require_color_convert2 = __commonJS2({ + "node_modules/color-convert/index.js"(exports2, module22) { + var conversions = require_conversions2(); + var route = require_route2(); + var convert = {}; + var models = Object.keys(conversions); + function wrapRaw(fn) { + var wrappedFn = function(args) { + if (args === void 0 || args === null) { + return args; + } + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + return fn(args); + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + function wrapRounded(fn) { + var wrappedFn = function(args) { + if (args === void 0 || args === null) { + return args; + } + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + var result = fn(args); + if (typeof result === "object") { + for (var len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + return result; + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + models.forEach(function(fromModel) { + convert[fromModel] = {}; + Object.defineProperty(convert[fromModel], "channels", { + value: conversions[fromModel].channels + }); + Object.defineProperty(convert[fromModel], "labels", { + value: conversions[fromModel].labels + }); + var routes = route(fromModel); + var routeModels = Object.keys(routes); + routeModels.forEach(function(toModel) { + var fn = routes[toModel]; + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); + }); + module22.exports = convert; + } + }); + var require_ansi_styles2 = __commonJS2({ + "node_modules/ansi-styles/index.js"(exports2, module22) { + "use strict"; + var colorConvert = require_color_convert2(); + var wrapAnsi16 = (fn, offset) => function() { + const code = fn.apply(colorConvert, arguments); + return `\x1B[${code + offset}m`; + }; + var wrapAnsi256 = (fn, offset) => function() { + const code = fn.apply(colorConvert, arguments); + return `\x1B[${38 + offset};5;${code}m`; + }; + var wrapAnsi16m = (fn, offset) => function() { + const rgb = fn.apply(colorConvert, arguments); + return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; + }; + function assembleStyles() { + const codes = /* @__PURE__ */ new Map(); + const styles = { + modifier: { + reset: [0, 0], + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + styles.color.grey = styles.color.gray; + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + styles[styleName] = { + open: `\x1B[${style[0]}m`, + close: `\x1B[${style[1]}m` + }; + group[styleName] = styles[styleName]; + codes.set(style[0], style[1]); + } + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + Object.defineProperty(styles, "codes", { + value: codes, + enumerable: false + }); + } + const ansi2ansi = (n) => n; + const rgb2rgb = (r, g, b) => [r, g, b]; + styles.color.close = "\x1B[39m"; + styles.bgColor.close = "\x1B[49m"; + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== "object") { + continue; + } + const suite = colorConvert[key]; + if (key === "ansi16") { + key = "ansi"; + } + if ("ansi16" in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + if ("ansi256" in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + if ("rgb" in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + return styles; + } + Object.defineProperty(module22, "exports", { + enumerable: true, + get: assembleStyles + }); + } + }); + var require_has_flag2 = __commonJS2({ + "node_modules/@babel/highlight/node_modules/has-flag/index.js"(exports2, module22) { + "use strict"; + module22.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf("--"); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); + }; + } + }); + var require_supports_color2 = __commonJS2({ + "node_modules/@babel/highlight/node_modules/supports-color/index.js"(exports2, module22) { + "use strict"; + var os = require("os"); + var hasFlag = require_has_flag2(); + var env = process.env; + var forceColor; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) { + forceColor = false; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = true; + } + if ("FORCE_COLOR" in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + const min = forceColor ? 1 : 0; + if (process.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + if (env.TERM === "dumb") { + return min; + } + return min; + } + function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); + } + module22.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) + }; + } + }); + var require_templates2 = __commonJS2({ + "node_modules/@babel/highlight/node_modules/chalk/templates.js"(exports2, module22) { + "use strict"; + var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; + var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; + var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; + var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; + var ESCAPES = /* @__PURE__ */ new Map([["n", "\n"], ["r", "\r"], ["t", " "], ["b", "\b"], ["f", "\f"], ["v", "\v"], ["0", "\0"], ["\\", "\\"], ["e", "\x1B"], ["a", "\x07"]]); + function unescape2(c) { + if (c[0] === "u" && c.length === 5 || c[0] === "x" && c.length === 3) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + return ESCAPES.get(c) || c; + } + function parseArguments(name, args) { + const results = []; + const chunks = args.trim().split(/\s*,\s*/g); + let matches; + for (const chunk of chunks) { + if (!isNaN(chunk)) { + results.push(Number(chunk)); + } else if (matches = chunk.match(STRING_REGEX)) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape2(escape) : chr)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } + return results; + } + function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; + const results = []; + let matches; + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } + return results; + } + function buildStyle(chalk2, styles) { + const enabled = {}; + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } + let current = chalk2; + for (const styleName of Object.keys(enabled)) { + if (Array.isArray(enabled[styleName])) { + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } + if (enabled[styleName].length > 0) { + current = current[styleName].apply(current, enabled[styleName]); + } else { + current = current[styleName]; + } + } + } + return current; + } + module22.exports = (chalk2, tmp) => { + const styles = []; + const chunks = []; + let chunk = []; + tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => { + if (escapeChar) { + chunk.push(unescape2(escapeChar)); + } else if (style) { + const str2 = chunk.join(""); + chunk = []; + chunks.push(styles.length === 0 ? str2 : buildStyle(chalk2, styles)(str2)); + styles.push({ + inverse, + styles: parseStyle(style) + }); + } else if (close) { + if (styles.length === 0) { + throw new Error("Found extraneous } in Chalk template literal"); + } + chunks.push(buildStyle(chalk2, styles)(chunk.join(""))); + chunk = []; + styles.pop(); + } else { + chunk.push(chr); + } + }); + chunks.push(chunk.join("")); + if (styles.length > 0) { + const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; + throw new Error(errMsg); + } + return chunks.join(""); + }; + } + }); + var require_chalk = __commonJS2({ + "node_modules/@babel/highlight/node_modules/chalk/index.js"(exports2, module22) { + "use strict"; + var escapeStringRegexp = require_escape_string_regexp(); + var ansiStyles = require_ansi_styles2(); + var stdoutColor = require_supports_color2().stdout; + var template = require_templates2(); + var isSimpleWindowsTerm = process.platform === "win32" && !(process.env.TERM || "").toLowerCase().startsWith("xterm"); + var levelMapping = ["ansi", "ansi", "ansi256", "ansi16m"]; + var skipModels = /* @__PURE__ */ new Set(["gray"]); + var styles = /* @__PURE__ */ Object.create(null); + function applyOptions(obj, options) { + options = options || {}; + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === void 0 ? scLevel : options.level; + obj.enabled = "enabled" in options ? options.enabled : obj.level > 0; + } + function Chalk2(options) { + if (!this || !(this instanceof Chalk2) || this.template) { + const chalk2 = {}; + applyOptions(chalk2, options); + chalk2.template = function() { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk2.template].concat(args)); + }; + Object.setPrototypeOf(chalk2, Chalk2.prototype); + Object.setPrototypeOf(chalk2.template, chalk2); + chalk2.template.constructor = Chalk2; + return chalk2.template; + } + applyOptions(this, options); + } + if (isSimpleWindowsTerm) { + ansiStyles.blue.open = "\x1B[94m"; + } + for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), "g"); + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; + } + styles.visible = { + get() { + return build.call(this, this._styles || [], true, "visible"); + } + }; + ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), "g"); + for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } + styles[model] = { + get() { + const level = this.level; + return function() { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; + } + ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), "g"); + for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function() { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; + } + var proto = Object.defineProperties(() => { + }, styles); + function build(_styles, _empty, key) { + const builder = function() { + return applyStyle.apply(builder, arguments); + }; + builder._styles = _styles; + builder._empty = _empty; + const self2 = this; + Object.defineProperty(builder, "level", { + enumerable: true, + get() { + return self2.level; + }, + set(level) { + self2.level = level; + } + }); + Object.defineProperty(builder, "enabled", { + enumerable: true, + get() { + return self2.enabled; + }, + set(enabled) { + self2.enabled = enabled; + } + }); + builder.hasGrey = this.hasGrey || key === "gray" || key === "grey"; + builder.__proto__ = proto; + return builder; + } + function applyStyle() { + const args = arguments; + const argsLen = args.length; + let str2 = String(arguments[0]); + if (argsLen === 0) { + return ""; + } + if (argsLen > 1) { + for (let a = 1; a < argsLen; a++) { + str2 += " " + args[a]; + } + } + if (!this.enabled || this.level <= 0 || !str2) { + return this._empty ? "" : str2; + } + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ""; + } + for (const code of this._styles.slice().reverse()) { + str2 = code.open + str2.replace(code.closeRe, code.open) + code.close; + str2 = str2.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + ansiStyles.dim.open = originalDim; + return str2; + } + function chalkTag(chalk2, strings) { + if (!Array.isArray(strings)) { + return [].slice.call(arguments, 1).join(" "); + } + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, "\\$&")); + parts.push(String(strings.raw[i])); + } + return template(chalk2, parts.join("")); + } + Object.defineProperties(Chalk2.prototype, styles); + module22.exports = Chalk2(); + module22.exports.supportsColor = stdoutColor; + module22.exports.default = module22.exports; + } + }); + var require_lib22 = __commonJS2({ + "node_modules/@babel/highlight/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = highlight; + exports2.getChalk = getChalk; + exports2.shouldHighlight = shouldHighlight; + var _jsTokens = require_js_tokens(); + var _helperValidatorIdentifier = require_lib2(); + var _chalk = require_chalk(); + var sometimesKeywords = /* @__PURE__ */ new Set(["as", "async", "from", "get", "of", "set"]); + function getDefs(chalk2) { + return { + keyword: chalk2.cyan, + capitalized: chalk2.yellow, + jsxIdentifier: chalk2.yellow, + punctuator: chalk2.yellow, + number: chalk2.magenta, + string: chalk2.green, + regex: chalk2.magenta, + comment: chalk2.grey, + invalid: chalk2.white.bgRed.bold + }; + } + var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + var BRACKET = /^[()[\]{}]$/; + var tokenize; + { + const JSX_TAG = /^[a-z][\w-]*$/i; + const getTokenType = function(token, offset, text) { + if (token.type === "name") { + if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) { + return "keyword"; + } + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == " colorize(str2)).join("\n"); + } else { + highlighted += value; + } + } + return highlighted; + } + function shouldHighlight(options) { + return !!_chalk.supportsColor || options.forceColor; + } + function getChalk(options) { + return options.forceColor ? new _chalk.constructor({ + enabled: true, + level: 1 + }) : _chalk; + } + function highlight(code, options = {}) { + if (code !== "" && shouldHighlight(options)) { + const chalk2 = getChalk(options); + const defs = getDefs(chalk2); + return highlightTokens(defs, code); + } else { + return code; + } + } + } + }); + var require_lib3 = __commonJS2({ + "node_modules/@babel/code-frame/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.codeFrameColumns = codeFrameColumns; + exports2.default = _default2; + var _highlight = require_lib22(); + var deprecationWarningShown = false; + function getDefs(chalk2) { + return { + gutter: chalk2.grey, + marker: chalk2.red.bold, + message: chalk2.red.bold + }; + } + var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + function getMarkerLines(loc, source, opts) { + const startLoc = Object.assign({ + column: 0, + line: -1 + }, loc.start); + const endLoc = Object.assign({}, startLoc, loc.end); + const { + linesAbove = 2, + linesBelow = 3 + } = opts || {}; + const startLine = startLoc.line; + const startColumn = startLoc.column; + const endLine = endLoc.line; + const endColumn = endLoc.column; + let start = Math.max(startLine - (linesAbove + 1), 0); + let end = Math.min(source.length, endLine + linesBelow); + if (startLine === -1) { + start = 0; + } + if (endLine === -1) { + end = source.length; + } + const lineDiff = endLine - startLine; + const markerLines = {}; + if (lineDiff) { + for (let i = 0; i <= lineDiff; i++) { + const lineNumber = i + startLine; + if (!startColumn) { + markerLines[lineNumber] = true; + } else if (i === 0) { + const sourceLength = source[lineNumber - 1].length; + markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; + } else if (i === lineDiff) { + markerLines[lineNumber] = [0, endColumn]; + } else { + const sourceLength = source[lineNumber - i].length; + markerLines[lineNumber] = [0, sourceLength]; + } + } + } else { + if (startColumn === endColumn) { + if (startColumn) { + markerLines[startLine] = [startColumn, 0]; + } else { + markerLines[startLine] = true; + } + } else { + markerLines[startLine] = [startColumn, endColumn - startColumn]; + } + } + return { + start, + end, + markerLines + }; + } + function codeFrameColumns(rawLines, loc, opts = {}) { + const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts); + const chalk2 = (0, _highlight.getChalk)(opts); + const defs = getDefs(chalk2); + const maybeHighlight = (chalkFn, string) => { + return highlighted ? chalkFn(string) : string; + }; + const lines = rawLines.split(NEWLINE); + const { + start, + end, + markerLines + } = getMarkerLines(loc, lines, opts); + const hasColumns = loc.start && typeof loc.start.column === "number"; + const numberMaxWidth = String(end).length; + const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines; + let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { + const number = start + 1 + index; + const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const gutter = ` ${paddedNumber} |`; + const hasMarker = markerLines[number]; + const lastMarkerLine = !markerLines[number + 1]; + if (hasMarker) { + let markerLine = ""; + if (Array.isArray(hasMarker)) { + const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); + const numberOfMarkers = hasMarker[1] || 1; + markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join(""); + if (lastMarkerLine && opts.message) { + markerLine += " " + maybeHighlight(defs.message, opts.message); + } + } + return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); + } else { + return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`; + } + }).join("\n"); + if (opts.message && !hasColumns) { + frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message} +${frame}`; + } + if (highlighted) { + return chalk2.reset(frame); + } else { + return frame; + } + } + function _default2(rawLines, lineNumber, colNumber, opts = {}) { + if (!deprecationWarningShown) { + deprecationWarningShown = true; + const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; + if (process.emitWarning) { + process.emitWarning(message, "DeprecationWarning"); + } else { + const deprecationError = new Error(message); + deprecationError.name = "DeprecationWarning"; + console.warn(new Error(message)); + } + } + colNumber = Math.max(colNumber, 0); + const location = { + start: { + column: colNumber, + line: lineNumber + } + }; + return codeFrameColumns(rawLines, location, opts); + } + } + }); + var require_parse_json = __commonJS2({ + "node_modules/parse-json/index.js"(exports2, module22) { + "use strict"; + var errorEx = require_error_ex(); + var fallback = require_json_parse_even_better_errors(); + var { + default: LinesAndColumns + } = require_build5(); + var { + codeFrameColumns + } = require_lib3(); + var JSONError = errorEx("JSONError", { + fileName: errorEx.append("in %s"), + codeFrame: errorEx.append("\n\n%s\n") + }); + var parseJson = (string, reviver, filename) => { + if (typeof reviver === "string") { + filename = reviver; + reviver = null; + } + try { + try { + return JSON.parse(string, reviver); + } catch (error2) { + fallback(string, reviver); + throw error2; + } + } catch (error2) { + error2.message = error2.message.replace(/\n/g, ""); + const indexMatch = error2.message.match(/in JSON at position (\d+) while parsing/); + const jsonError = new JSONError(error2); + if (filename) { + jsonError.fileName = filename; + } + if (indexMatch && indexMatch.length > 0) { + const lines = new LinesAndColumns(string); + const index = Number(indexMatch[1]); + const location = lines.locationForIndex(index); + const codeFrame = codeFrameColumns(string, { + start: { + line: location.line + 1, + column: location.column + 1 + } + }, { + highlightCode: true + }); + jsonError.codeFrame = codeFrame; + } + throw jsonError; + } + }; + parseJson.JSONError = JSONError; + module22.exports = parseJson; + } + }); + var require_PlainValue_ec8e588e = __commonJS2({ + "node_modules/yaml/dist/PlainValue-ec8e588e.js"(exports2) { + "use strict"; + var Char = { + ANCHOR: "&", + COMMENT: "#", + TAG: "!", + DIRECTIVES_END: "-", + DOCUMENT_END: "." + }; + var Type = { + ALIAS: "ALIAS", + BLANK_LINE: "BLANK_LINE", + BLOCK_FOLDED: "BLOCK_FOLDED", + BLOCK_LITERAL: "BLOCK_LITERAL", + COMMENT: "COMMENT", + DIRECTIVE: "DIRECTIVE", + DOCUMENT: "DOCUMENT", + FLOW_MAP: "FLOW_MAP", + FLOW_SEQ: "FLOW_SEQ", + MAP: "MAP", + MAP_KEY: "MAP_KEY", + MAP_VALUE: "MAP_VALUE", + PLAIN: "PLAIN", + QUOTE_DOUBLE: "QUOTE_DOUBLE", + QUOTE_SINGLE: "QUOTE_SINGLE", + SEQ: "SEQ", + SEQ_ITEM: "SEQ_ITEM" + }; + var defaultTagPrefix = "tag:yaml.org,2002:"; + var defaultTags = { + MAP: "tag:yaml.org,2002:map", + SEQ: "tag:yaml.org,2002:seq", + STR: "tag:yaml.org,2002:str" + }; + function findLineStarts(src) { + const ls = [0]; + let offset = src.indexOf("\n"); + while (offset !== -1) { + offset += 1; + ls.push(offset); + offset = src.indexOf("\n", offset); + } + return ls; + } + function getSrcInfo(cst) { + let lineStarts, src; + if (typeof cst === "string") { + lineStarts = findLineStarts(cst); + src = cst; + } else { + if (Array.isArray(cst)) + cst = cst[0]; + if (cst && cst.context) { + if (!cst.lineStarts) + cst.lineStarts = findLineStarts(cst.context.src); + lineStarts = cst.lineStarts; + src = cst.context.src; + } + } + return { + lineStarts, + src + }; + } + function getLinePos(offset, cst) { + if (typeof offset !== "number" || offset < 0) + return null; + const { + lineStarts, + src + } = getSrcInfo(cst); + if (!lineStarts || !src || offset > src.length) + return null; + for (let i = 0; i < lineStarts.length; ++i) { + const start = lineStarts[i]; + if (offset < start) { + return { + line: i, + col: offset - lineStarts[i - 1] + 1 + }; + } + if (offset === start) + return { + line: i + 1, + col: 1 + }; + } + const line = lineStarts.length; + return { + line, + col: offset - lineStarts[line - 1] + 1 + }; + } + function getLine2(line, cst) { + const { + lineStarts, + src + } = getSrcInfo(cst); + if (!lineStarts || !(line >= 1) || line > lineStarts.length) + return null; + const start = lineStarts[line - 1]; + let end = lineStarts[line]; + while (end && end > start && src[end - 1] === "\n") + --end; + return src.slice(start, end); + } + function getPrettyContext({ + start, + end + }, cst, maxWidth = 80) { + let src = getLine2(start.line, cst); + if (!src) + return null; + let { + col + } = start; + if (src.length > maxWidth) { + if (col <= maxWidth - 10) { + src = src.substr(0, maxWidth - 1) + "\u2026"; + } else { + const halfWidth = Math.round(maxWidth / 2); + if (src.length > col + halfWidth) + src = src.substr(0, col + halfWidth - 1) + "\u2026"; + col -= src.length - maxWidth; + src = "\u2026" + src.substr(1 - maxWidth); + } + } + let errLen = 1; + let errEnd = ""; + if (end) { + if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) { + errLen = end.col - start.col; + } else { + errLen = Math.min(src.length + 1, maxWidth) - col; + errEnd = "\u2026"; + } + } + const offset = col > 1 ? " ".repeat(col - 1) : ""; + const err = "^".repeat(errLen); + return `${src} +${offset}${err}${errEnd}`; + } + var Range = class { + static copy(orig) { + return new Range(orig.start, orig.end); + } + constructor(start, end) { + this.start = start; + this.end = end || start; + } + isEmpty() { + return typeof this.start !== "number" || !this.end || this.end <= this.start; + } + setOrigRange(cr, offset) { + const { + start, + end + } = this; + if (cr.length === 0 || end <= cr[0]) { + this.origStart = start; + this.origEnd = end; + return offset; + } + let i = offset; + while (i < cr.length) { + if (cr[i] > start) + break; + else + ++i; + } + this.origStart = start + i; + const nextOffset = i; + while (i < cr.length) { + if (cr[i] >= end) + break; + else + ++i; + } + this.origEnd = end + i; + return nextOffset; + } + }; + var Node = class { + static addStringTerminator(src, offset, str2) { + if (str2[str2.length - 1] === "\n") + return str2; + const next = Node.endOfWhiteSpace(src, offset); + return next >= src.length || src[next] === "\n" ? str2 + "\n" : str2; + } + static atDocumentBoundary(src, offset, sep) { + const ch0 = src[offset]; + if (!ch0) + return true; + const prev = src[offset - 1]; + if (prev && prev !== "\n") + return false; + if (sep) { + if (ch0 !== sep) + return false; + } else { + if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) + return false; + } + const ch1 = src[offset + 1]; + const ch2 = src[offset + 2]; + if (ch1 !== ch0 || ch2 !== ch0) + return false; + const ch3 = src[offset + 3]; + return !ch3 || ch3 === "\n" || ch3 === " " || ch3 === " "; + } + static endOfIdentifier(src, offset) { + let ch = src[offset]; + const isVerbatim = ch === "<"; + const notOk = isVerbatim ? ["\n", " ", " ", ">"] : ["\n", " ", " ", "[", "]", "{", "}", ","]; + while (ch && notOk.indexOf(ch) === -1) + ch = src[offset += 1]; + if (isVerbatim && ch === ">") + offset += 1; + return offset; + } + static endOfIndent(src, offset) { + let ch = src[offset]; + while (ch === " ") + ch = src[offset += 1]; + return offset; + } + static endOfLine(src, offset) { + let ch = src[offset]; + while (ch && ch !== "\n") + ch = src[offset += 1]; + return offset; + } + static endOfWhiteSpace(src, offset) { + let ch = src[offset]; + while (ch === " " || ch === " ") + ch = src[offset += 1]; + return offset; + } + static startOfLine(src, offset) { + let ch = src[offset - 1]; + if (ch === "\n") + return offset; + while (ch && ch !== "\n") + ch = src[offset -= 1]; + return offset + 1; + } + static endOfBlockIndent(src, indent, lineStart) { + const inEnd = Node.endOfIndent(src, lineStart); + if (inEnd > lineStart + indent) { + return inEnd; + } else { + const wsEnd = Node.endOfWhiteSpace(src, inEnd); + const ch = src[wsEnd]; + if (!ch || ch === "\n") + return wsEnd; + } + return null; + } + static atBlank(src, offset, endAsBlank) { + const ch = src[offset]; + return ch === "\n" || ch === " " || ch === " " || endAsBlank && !ch; + } + static nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) { + if (!ch || indentDiff < 0) + return false; + if (indentDiff > 0) + return true; + return indicatorAsIndent && ch === "-"; + } + static normalizeOffset(src, offset) { + const ch = src[offset]; + return !ch ? offset : ch !== "\n" && src[offset - 1] === "\n" ? offset - 1 : Node.endOfWhiteSpace(src, offset); + } + static foldNewline(src, offset, indent) { + let inCount = 0; + let error2 = false; + let fold = ""; + let ch = src[offset + 1]; + while (ch === " " || ch === " " || ch === "\n") { + switch (ch) { + case "\n": + inCount = 0; + offset += 1; + fold += "\n"; + break; + case " ": + if (inCount <= indent) + error2 = true; + offset = Node.endOfWhiteSpace(src, offset + 2) - 1; + break; + case " ": + inCount += 1; + offset += 1; + break; + } + ch = src[offset + 1]; + } + if (!fold) + fold = " "; + if (ch && inCount <= indent) + error2 = true; + return { + fold, + offset, + error: error2 + }; + } + constructor(type2, props, context) { + Object.defineProperty(this, "context", { + value: context || null, + writable: true + }); + this.error = null; + this.range = null; + this.valueRange = null; + this.props = props || []; + this.type = type2; + this.value = null; + } + getPropValue(idx, key, skipKey) { + if (!this.context) + return null; + const { + src + } = this.context; + const prop = this.props[idx]; + return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null; + } + get anchor() { + for (let i = 0; i < this.props.length; ++i) { + const anchor = this.getPropValue(i, Char.ANCHOR, true); + if (anchor != null) + return anchor; + } + return null; + } + get comment() { + const comments = []; + for (let i = 0; i < this.props.length; ++i) { + const comment = this.getPropValue(i, Char.COMMENT, true); + if (comment != null) + comments.push(comment); + } + return comments.length > 0 ? comments.join("\n") : null; + } + commentHasRequiredWhitespace(start) { + const { + src + } = this.context; + if (this.header && start === this.header.end) + return false; + if (!this.valueRange) + return false; + const { + end + } = this.valueRange; + return start !== end || Node.atBlank(src, end - 1); + } + get hasComment() { + if (this.context) { + const { + src + } = this.context; + for (let i = 0; i < this.props.length; ++i) { + if (src[this.props[i].start] === Char.COMMENT) + return true; + } + } + return false; + } + get hasProps() { + if (this.context) { + const { + src + } = this.context; + for (let i = 0; i < this.props.length; ++i) { + if (src[this.props[i].start] !== Char.COMMENT) + return true; + } + } + return false; + } + get includesTrailingLines() { + return false; + } + get jsonLike() { + const jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE]; + return jsonLikeTypes.indexOf(this.type) !== -1; + } + get rangeAsLinePos() { + if (!this.range || !this.context) + return void 0; + const start = getLinePos(this.range.start, this.context.root); + if (!start) + return void 0; + const end = getLinePos(this.range.end, this.context.root); + return { + start, + end + }; + } + get rawValue() { + if (!this.valueRange || !this.context) + return null; + const { + start, + end + } = this.valueRange; + return this.context.src.slice(start, end); + } + get tag() { + for (let i = 0; i < this.props.length; ++i) { + const tag = this.getPropValue(i, Char.TAG, false); + if (tag != null) { + if (tag[1] === "<") { + return { + verbatim: tag.slice(2, -1) + }; + } else { + const [_, handle, suffix] = tag.match(/^(.*!)([^!]*)$/); + return { + handle, + suffix + }; + } + } + } + return null; + } + get valueRangeContainsNewline() { + if (!this.valueRange || !this.context) + return false; + const { + start, + end + } = this.valueRange; + const { + src + } = this.context; + for (let i = start; i < end; ++i) { + if (src[i] === "\n") + return true; + } + return false; + } + parseComment(start) { + const { + src + } = this.context; + if (src[start] === Char.COMMENT) { + const end = Node.endOfLine(src, start + 1); + const commentRange = new Range(start, end); + this.props.push(commentRange); + return end; + } + return start; + } + setOrigRanges(cr, offset) { + if (this.range) + offset = this.range.setOrigRange(cr, offset); + if (this.valueRange) + this.valueRange.setOrigRange(cr, offset); + this.props.forEach((prop) => prop.setOrigRange(cr, offset)); + return offset; + } + toString() { + const { + context: { + src + }, + range, + value + } = this; + if (value != null) + return value; + const str2 = src.slice(range.start, range.end); + return Node.addStringTerminator(src, range.end, str2); + } + }; + var YAMLError = class extends Error { + constructor(name, source, message) { + if (!message || !(source instanceof Node)) + throw new Error(`Invalid arguments for new ${name}`); + super(); + this.name = name; + this.message = message; + this.source = source; + } + makePretty() { + if (!this.source) + return; + this.nodeType = this.source.type; + const cst = this.source.context && this.source.context.root; + if (typeof this.offset === "number") { + this.range = new Range(this.offset, this.offset + 1); + const start = cst && getLinePos(this.offset, cst); + if (start) { + const end = { + line: start.line, + col: start.col + 1 + }; + this.linePos = { + start, + end + }; + } + delete this.offset; + } else { + this.range = this.source.range; + this.linePos = this.source.rangeAsLinePos; + } + if (this.linePos) { + const { + line, + col + } = this.linePos.start; + this.message += ` at line ${line}, column ${col}`; + const ctx = cst && getPrettyContext(this.linePos, cst); + if (ctx) + this.message += `: + +${ctx} +`; + } + delete this.source; + } + }; + var YAMLReferenceError = class extends YAMLError { + constructor(source, message) { + super("YAMLReferenceError", source, message); + } + }; + var YAMLSemanticError = class extends YAMLError { + constructor(source, message) { + super("YAMLSemanticError", source, message); + } + }; + var YAMLSyntaxError = class extends YAMLError { + constructor(source, message) { + super("YAMLSyntaxError", source, message); + } + }; + var YAMLWarning = class extends YAMLError { + constructor(source, message) { + super("YAMLWarning", source, message); + } + }; + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + } + var PlainValue = class extends Node { + static endOfLine(src, start, inFlow) { + let ch = src[start]; + let offset = start; + while (ch && ch !== "\n") { + if (inFlow && (ch === "[" || ch === "]" || ch === "{" || ch === "}" || ch === ",")) + break; + const next = src[offset + 1]; + if (ch === ":" && (!next || next === "\n" || next === " " || next === " " || inFlow && next === ",")) + break; + if ((ch === " " || ch === " ") && next === "#") + break; + offset += 1; + ch = next; + } + return offset; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let { + start, + end + } = this.valueRange; + const { + src + } = this.context; + let ch = src[end - 1]; + while (start < end && (ch === "\n" || ch === " " || ch === " ")) + ch = src[--end - 1]; + let str2 = ""; + for (let i = start; i < end; ++i) { + const ch2 = src[i]; + if (ch2 === "\n") { + const { + fold, + offset + } = Node.foldNewline(src, i, -1); + str2 += fold; + i = offset; + } else if (ch2 === " " || ch2 === " ") { + const wsStart = i; + let next = src[i + 1]; + while (i < end && (next === " " || next === " ")) { + i += 1; + next = src[i + 1]; + } + if (next !== "\n") + str2 += i > wsStart ? src.slice(wsStart, i + 1) : ch2; + } else { + str2 += ch2; + } + } + const ch0 = src[start]; + switch (ch0) { + case " ": { + const msg = "Plain value cannot start with a tab character"; + const errors = [new YAMLSemanticError(this, msg)]; + return { + errors, + str: str2 + }; + } + case "@": + case "`": { + const msg = `Plain value cannot start with reserved character ${ch0}`; + const errors = [new YAMLSemanticError(this, msg)]; + return { + errors, + str: str2 + }; + } + default: + return str2; + } + } + parseBlockValue(start) { + const { + indent, + inFlow, + src + } = this.context; + let offset = start; + let valueEnd = start; + for (let ch = src[offset]; ch === "\n"; ch = src[offset]) { + if (Node.atDocumentBoundary(src, offset + 1)) + break; + const end = Node.endOfBlockIndent(src, indent, offset + 1); + if (end === null || src[end] === "#") + break; + if (src[end] === "\n") { + offset = end; + } else { + valueEnd = PlainValue.endOfLine(src, end, inFlow); + offset = valueEnd; + } + } + if (this.valueRange.isEmpty()) + this.valueRange.start = start; + this.valueRange.end = valueEnd; + return valueEnd; + } + parse(context, start) { + this.context = context; + const { + inFlow, + src + } = context; + let offset = start; + const ch = src[offset]; + if (ch && ch !== "#" && ch !== "\n") { + offset = PlainValue.endOfLine(src, start, inFlow); + } + this.valueRange = new Range(start, offset); + offset = Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + if (!this.hasComment || this.valueRange.isEmpty()) { + offset = this.parseBlockValue(offset); + } + return offset; + } + }; + exports2.Char = Char; + exports2.Node = Node; + exports2.PlainValue = PlainValue; + exports2.Range = Range; + exports2.Type = Type; + exports2.YAMLError = YAMLError; + exports2.YAMLReferenceError = YAMLReferenceError; + exports2.YAMLSemanticError = YAMLSemanticError; + exports2.YAMLSyntaxError = YAMLSyntaxError; + exports2.YAMLWarning = YAMLWarning; + exports2._defineProperty = _defineProperty; + exports2.defaultTagPrefix = defaultTagPrefix; + exports2.defaultTags = defaultTags; + } + }); + var require_parse_cst = __commonJS2({ + "node_modules/yaml/dist/parse-cst.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var BlankLine = class extends PlainValue.Node { + constructor() { + super(PlainValue.Type.BLANK_LINE); + } + get includesTrailingLines() { + return true; + } + parse(context, start) { + this.context = context; + this.range = new PlainValue.Range(start, start + 1); + return start + 1; + } + }; + var CollectionItem = class extends PlainValue.Node { + constructor(type2, props) { + super(type2, props); + this.node = null; + } + get includesTrailingLines() { + return !!this.node && this.node.includesTrailingLines; + } + parse(context, start) { + this.context = context; + const { + parseNode, + src + } = context; + let { + atLineStart, + lineStart + } = context; + if (!atLineStart && this.type === PlainValue.Type.SEQ_ITEM) + this.error = new PlainValue.YAMLSemanticError(this, "Sequence items must not have preceding content on the same line"); + const indent = atLineStart ? start - lineStart : context.indent; + let offset = PlainValue.Node.endOfWhiteSpace(src, start + 1); + let ch = src[offset]; + const inlineComment = ch === "#"; + const comments = []; + let blankLine = null; + while (ch === "\n" || ch === "#") { + if (ch === "#") { + const end2 = PlainValue.Node.endOfLine(src, offset + 1); + comments.push(new PlainValue.Range(offset, end2)); + offset = end2; + } else { + atLineStart = true; + lineStart = offset + 1; + const wsEnd = PlainValue.Node.endOfWhiteSpace(src, lineStart); + if (src[wsEnd] === "\n" && comments.length === 0) { + blankLine = new BlankLine(); + lineStart = blankLine.parse({ + src + }, lineStart); + } + offset = PlainValue.Node.endOfIndent(src, lineStart); + } + ch = src[offset]; + } + if (PlainValue.Node.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== PlainValue.Type.SEQ_ITEM)) { + this.node = parseNode({ + atLineStart, + inCollection: false, + indent, + lineStart, + parent: this + }, offset); + } else if (ch && lineStart > start + 1) { + offset = lineStart - 1; + } + if (this.node) { + if (blankLine) { + const items = context.parent.items || context.parent.contents; + if (items) + items.push(blankLine); + } + if (comments.length) + Array.prototype.push.apply(this.props, comments); + offset = this.node.range.end; + } else { + if (inlineComment) { + const c = comments[0]; + this.props.push(c); + offset = c.end; + } else { + offset = PlainValue.Node.endOfLine(src, start + 1); + } + } + const end = this.node ? this.node.valueRange.end : offset; + this.valueRange = new PlainValue.Range(start, end); + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + return this.node ? this.node.setOrigRanges(cr, offset) : offset; + } + toString() { + const { + context: { + src + }, + node, + range, + value + } = this; + if (value != null) + return value; + const str2 = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end); + return PlainValue.Node.addStringTerminator(src, range.end, str2); + } + }; + var Comment = class extends PlainValue.Node { + constructor() { + super(PlainValue.Type.COMMENT); + } + parse(context, start) { + this.context = context; + const offset = this.parseComment(start); + this.range = new PlainValue.Range(start, offset); + return offset; + } + }; + function grabCollectionEndComments(node) { + let cnode = node; + while (cnode instanceof CollectionItem) + cnode = cnode.node; + if (!(cnode instanceof Collection)) + return null; + const len = cnode.items.length; + let ci = -1; + for (let i = len - 1; i >= 0; --i) { + const n = cnode.items[i]; + if (n.type === PlainValue.Type.COMMENT) { + const { + indent, + lineStart + } = n.context; + if (indent > 0 && n.range.start >= lineStart + indent) + break; + ci = i; + } else if (n.type === PlainValue.Type.BLANK_LINE) + ci = i; + else + break; + } + if (ci === -1) + return null; + const ca = cnode.items.splice(ci, len - ci); + const prevEnd = ca[0].range.start; + while (true) { + cnode.range.end = prevEnd; + if (cnode.valueRange && cnode.valueRange.end > prevEnd) + cnode.valueRange.end = prevEnd; + if (cnode === node) + break; + cnode = cnode.context.parent; + } + return ca; + } + var Collection = class extends PlainValue.Node { + static nextContentHasIndent(src, offset, indent) { + const lineStart = PlainValue.Node.endOfLine(src, offset) + 1; + offset = PlainValue.Node.endOfWhiteSpace(src, lineStart); + const ch = src[offset]; + if (!ch) + return false; + if (offset >= lineStart + indent) + return true; + if (ch !== "#" && ch !== "\n") + return false; + return Collection.nextContentHasIndent(src, offset, indent); + } + constructor(firstItem) { + super(firstItem.type === PlainValue.Type.SEQ_ITEM ? PlainValue.Type.SEQ : PlainValue.Type.MAP); + for (let i = firstItem.props.length - 1; i >= 0; --i) { + if (firstItem.props[i].start < firstItem.context.lineStart) { + this.props = firstItem.props.slice(0, i + 1); + firstItem.props = firstItem.props.slice(i + 1); + const itemRange = firstItem.props[0] || firstItem.valueRange; + firstItem.range.start = itemRange.start; + break; + } + } + this.items = [firstItem]; + const ec = grabCollectionEndComments(firstItem); + if (ec) + Array.prototype.push.apply(this.items, ec); + } + get includesTrailingLines() { + return this.items.length > 0; + } + parse(context, start) { + this.context = context; + const { + parseNode, + src + } = context; + let lineStart = PlainValue.Node.startOfLine(src, start); + const firstItem = this.items[0]; + firstItem.context.parent = this; + this.valueRange = PlainValue.Range.copy(firstItem.valueRange); + const indent = firstItem.range.start - firstItem.context.lineStart; + let offset = start; + offset = PlainValue.Node.normalizeOffset(src, offset); + let ch = src[offset]; + let atLineStart = PlainValue.Node.endOfWhiteSpace(src, lineStart) === offset; + let prevIncludesTrailingLines = false; + while (ch) { + while (ch === "\n" || ch === "#") { + if (atLineStart && ch === "\n" && !prevIncludesTrailingLines) { + const blankLine = new BlankLine(); + offset = blankLine.parse({ + src + }, offset); + this.valueRange.end = offset; + if (offset >= src.length) { + ch = null; + break; + } + this.items.push(blankLine); + offset -= 1; + } else if (ch === "#") { + if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) { + return offset; + } + const comment = new Comment(); + offset = comment.parse({ + indent, + lineStart, + src + }, offset); + this.items.push(comment); + this.valueRange.end = offset; + if (offset >= src.length) { + ch = null; + break; + } + } + lineStart = offset + 1; + offset = PlainValue.Node.endOfIndent(src, lineStart); + if (PlainValue.Node.atBlank(src, offset)) { + const wsEnd = PlainValue.Node.endOfWhiteSpace(src, offset); + const next = src[wsEnd]; + if (!next || next === "\n" || next === "#") { + offset = wsEnd; + } + } + ch = src[offset]; + atLineStart = true; + } + if (!ch) { + break; + } + if (offset !== lineStart + indent && (atLineStart || ch !== ":")) { + if (offset < lineStart + indent) { + if (lineStart > start) + offset = lineStart; + break; + } else if (!this.error) { + const msg = "All collection items must start at the same column"; + this.error = new PlainValue.YAMLSyntaxError(this, msg); + } + } + if (firstItem.type === PlainValue.Type.SEQ_ITEM) { + if (ch !== "-") { + if (lineStart > start) + offset = lineStart; + break; + } + } else if (ch === "-" && !this.error) { + const next = src[offset + 1]; + if (!next || next === "\n" || next === " " || next === " ") { + const msg = "A collection cannot be both a mapping and a sequence"; + this.error = new PlainValue.YAMLSyntaxError(this, msg); + } + } + const node = parseNode({ + atLineStart, + inCollection: true, + indent, + lineStart, + parent: this + }, offset); + if (!node) + return offset; + this.items.push(node); + this.valueRange.end = node.valueRange.end; + offset = PlainValue.Node.normalizeOffset(src, node.range.end); + ch = src[offset]; + atLineStart = false; + prevIncludesTrailingLines = node.includesTrailingLines; + if (ch) { + let ls = offset - 1; + let prev = src[ls]; + while (prev === " " || prev === " ") + prev = src[--ls]; + if (prev === "\n") { + lineStart = ls + 1; + atLineStart = true; + } + } + const ec = grabCollectionEndComments(node); + if (ec) + Array.prototype.push.apply(this.items, ec); + } + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + this.items.forEach((node) => { + offset = node.setOrigRanges(cr, offset); + }); + return offset; + } + toString() { + const { + context: { + src + }, + items, + range, + value + } = this; + if (value != null) + return value; + let str2 = src.slice(range.start, items[0].range.start) + String(items[0]); + for (let i = 1; i < items.length; ++i) { + const item = items[i]; + const { + atLineStart, + indent + } = item.context; + if (atLineStart) + for (let i2 = 0; i2 < indent; ++i2) + str2 += " "; + str2 += String(item); + } + return PlainValue.Node.addStringTerminator(src, range.end, str2); + } + }; + var Directive = class extends PlainValue.Node { + constructor() { + super(PlainValue.Type.DIRECTIVE); + this.name = null; + } + get parameters() { + const raw = this.rawValue; + return raw ? raw.trim().split(/[ \t]+/) : []; + } + parseName(start) { + const { + src + } = this.context; + let offset = start; + let ch = src[offset]; + while (ch && ch !== "\n" && ch !== " " && ch !== " ") + ch = src[offset += 1]; + this.name = src.slice(start, offset); + return offset; + } + parseParameters(start) { + const { + src + } = this.context; + let offset = start; + let ch = src[offset]; + while (ch && ch !== "\n" && ch !== "#") + ch = src[offset += 1]; + this.valueRange = new PlainValue.Range(start, offset); + return offset; + } + parse(context, start) { + this.context = context; + let offset = this.parseName(start + 1); + offset = this.parseParameters(offset); + offset = this.parseComment(offset); + this.range = new PlainValue.Range(start, offset); + return offset; + } + }; + var Document = class extends PlainValue.Node { + static startCommentOrEndBlankLine(src, start) { + const offset = PlainValue.Node.endOfWhiteSpace(src, start); + const ch = src[offset]; + return ch === "#" || ch === "\n" ? offset : start; + } + constructor() { + super(PlainValue.Type.DOCUMENT); + this.directives = null; + this.contents = null; + this.directivesEndMarker = null; + this.documentEndMarker = null; + } + parseDirectives(start) { + const { + src + } = this.context; + this.directives = []; + let atLineStart = true; + let hasDirectives = false; + let offset = start; + while (!PlainValue.Node.atDocumentBoundary(src, offset, PlainValue.Char.DIRECTIVES_END)) { + offset = Document.startCommentOrEndBlankLine(src, offset); + switch (src[offset]) { + case "\n": + if (atLineStart) { + const blankLine = new BlankLine(); + offset = blankLine.parse({ + src + }, offset); + if (offset < src.length) { + this.directives.push(blankLine); + } + } else { + offset += 1; + atLineStart = true; + } + break; + case "#": + { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.directives.push(comment); + atLineStart = false; + } + break; + case "%": + { + const directive = new Directive(); + offset = directive.parse({ + parent: this, + src + }, offset); + this.directives.push(directive); + hasDirectives = true; + atLineStart = false; + } + break; + default: + if (hasDirectives) { + this.error = new PlainValue.YAMLSemanticError(this, "Missing directives-end indicator line"); + } else if (this.directives.length > 0) { + this.contents = this.directives; + this.directives = []; + } + return offset; + } + } + if (src[offset]) { + this.directivesEndMarker = new PlainValue.Range(offset, offset + 3); + return offset + 3; + } + if (hasDirectives) { + this.error = new PlainValue.YAMLSemanticError(this, "Missing directives-end indicator line"); + } else if (this.directives.length > 0) { + this.contents = this.directives; + this.directives = []; + } + return offset; + } + parseContents(start) { + const { + parseNode, + src + } = this.context; + if (!this.contents) + this.contents = []; + let lineStart = start; + while (src[lineStart - 1] === "-") + lineStart -= 1; + let offset = PlainValue.Node.endOfWhiteSpace(src, start); + let atLineStart = lineStart === start; + this.valueRange = new PlainValue.Range(offset); + while (!PlainValue.Node.atDocumentBoundary(src, offset, PlainValue.Char.DOCUMENT_END)) { + switch (src[offset]) { + case "\n": + if (atLineStart) { + const blankLine = new BlankLine(); + offset = blankLine.parse({ + src + }, offset); + if (offset < src.length) { + this.contents.push(blankLine); + } + } else { + offset += 1; + atLineStart = true; + } + lineStart = offset; + break; + case "#": + { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.contents.push(comment); + atLineStart = false; + } + break; + default: { + const iEnd = PlainValue.Node.endOfIndent(src, offset); + const context = { + atLineStart, + indent: -1, + inFlow: false, + inCollection: false, + lineStart, + parent: this + }; + const node = parseNode(context, iEnd); + if (!node) + return this.valueRange.end = iEnd; + this.contents.push(node); + offset = node.range.end; + atLineStart = false; + const ec = grabCollectionEndComments(node); + if (ec) + Array.prototype.push.apply(this.contents, ec); + } + } + offset = Document.startCommentOrEndBlankLine(src, offset); + } + this.valueRange.end = offset; + if (src[offset]) { + this.documentEndMarker = new PlainValue.Range(offset, offset + 3); + offset += 3; + if (src[offset]) { + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + if (src[offset] === "#") { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.contents.push(comment); + } + switch (src[offset]) { + case "\n": + offset += 1; + break; + case void 0: + break; + default: + this.error = new PlainValue.YAMLSyntaxError(this, "Document end marker line cannot have a non-comment suffix"); + } + } + } + return offset; + } + parse(context, start) { + context.root = this; + this.context = context; + const { + src + } = context; + let offset = src.charCodeAt(start) === 65279 ? start + 1 : start; + offset = this.parseDirectives(offset); + offset = this.parseContents(offset); + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + this.directives.forEach((node) => { + offset = node.setOrigRanges(cr, offset); + }); + if (this.directivesEndMarker) + offset = this.directivesEndMarker.setOrigRange(cr, offset); + this.contents.forEach((node) => { + offset = node.setOrigRanges(cr, offset); + }); + if (this.documentEndMarker) + offset = this.documentEndMarker.setOrigRange(cr, offset); + return offset; + } + toString() { + const { + contents, + directives, + value + } = this; + if (value != null) + return value; + let str2 = directives.join(""); + if (contents.length > 0) { + if (directives.length > 0 || contents[0].type === PlainValue.Type.COMMENT) + str2 += "---\n"; + str2 += contents.join(""); + } + if (str2[str2.length - 1] !== "\n") + str2 += "\n"; + return str2; + } + }; + var Alias = class extends PlainValue.Node { + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = PlainValue.Node.endOfIdentifier(src, start + 1); + this.valueRange = new PlainValue.Range(start + 1, offset); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }; + var Chomp = { + CLIP: "CLIP", + KEEP: "KEEP", + STRIP: "STRIP" + }; + var BlockValue = class extends PlainValue.Node { + constructor(type2, props) { + super(type2, props); + this.blockIndent = null; + this.chomping = Chomp.CLIP; + this.header = null; + } + get includesTrailingLines() { + return this.chomping === Chomp.KEEP; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let { + start, + end + } = this.valueRange; + const { + indent, + src + } = this.context; + if (this.valueRange.isEmpty()) + return ""; + let lastNewLine = null; + let ch = src[end - 1]; + while (ch === "\n" || ch === " " || ch === " ") { + end -= 1; + if (end <= start) { + if (this.chomping === Chomp.KEEP) + break; + else + return ""; + } + if (ch === "\n") + lastNewLine = end; + ch = src[end - 1]; + } + let keepStart = end + 1; + if (lastNewLine) { + if (this.chomping === Chomp.KEEP) { + keepStart = lastNewLine; + end = this.valueRange.end; + } else { + end = lastNewLine; + } + } + const bi = indent + this.blockIndent; + const folded = this.type === PlainValue.Type.BLOCK_FOLDED; + let atStart = true; + let str2 = ""; + let sep = ""; + let prevMoreIndented = false; + for (let i = start; i < end; ++i) { + for (let j = 0; j < bi; ++j) { + if (src[i] !== " ") + break; + i += 1; + } + const ch2 = src[i]; + if (ch2 === "\n") { + if (sep === "\n") + str2 += "\n"; + else + sep = "\n"; + } else { + const lineEnd = PlainValue.Node.endOfLine(src, i); + const line = src.slice(i, lineEnd); + i = lineEnd; + if (folded && (ch2 === " " || ch2 === " ") && i < keepStart) { + if (sep === " ") + sep = "\n"; + else if (!prevMoreIndented && !atStart && sep === "\n") + sep = "\n\n"; + str2 += sep + line; + sep = lineEnd < end && src[lineEnd] || ""; + prevMoreIndented = true; + } else { + str2 += sep + line; + sep = folded && i < keepStart ? " " : "\n"; + prevMoreIndented = false; + } + if (atStart && line !== "") + atStart = false; + } + } + return this.chomping === Chomp.STRIP ? str2 : str2 + "\n"; + } + parseBlockHeader(start) { + const { + src + } = this.context; + let offset = start + 1; + let bi = ""; + while (true) { + const ch = src[offset]; + switch (ch) { + case "-": + this.chomping = Chomp.STRIP; + break; + case "+": + this.chomping = Chomp.KEEP; + break; + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + bi += ch; + break; + default: + this.blockIndent = Number(bi) || null; + this.header = new PlainValue.Range(start, offset); + return offset; + } + offset += 1; + } + } + parseBlockValue(start) { + const { + indent, + src + } = this.context; + const explicit = !!this.blockIndent; + let offset = start; + let valueEnd = start; + let minBlockIndent = 1; + for (let ch = src[offset]; ch === "\n"; ch = src[offset]) { + offset += 1; + if (PlainValue.Node.atDocumentBoundary(src, offset)) + break; + const end = PlainValue.Node.endOfBlockIndent(src, indent, offset); + if (end === null) + break; + const ch2 = src[end]; + const lineIndent = end - (offset + indent); + if (!this.blockIndent) { + if (src[end] !== "\n") { + if (lineIndent < minBlockIndent) { + const msg = "Block scalars with more-indented leading empty lines must use an explicit indentation indicator"; + this.error = new PlainValue.YAMLSemanticError(this, msg); + } + this.blockIndent = lineIndent; + } else if (lineIndent > minBlockIndent) { + minBlockIndent = lineIndent; + } + } else if (ch2 && ch2 !== "\n" && lineIndent < this.blockIndent) { + if (src[end] === "#") + break; + if (!this.error) { + const src2 = explicit ? "explicit indentation indicator" : "first line"; + const msg = `Block scalars must not be less indented than their ${src2}`; + this.error = new PlainValue.YAMLSemanticError(this, msg); + } + } + if (src[end] === "\n") { + offset = end; + } else { + offset = valueEnd = PlainValue.Node.endOfLine(src, end); + } + } + if (this.chomping !== Chomp.KEEP) { + offset = src[valueEnd] ? valueEnd + 1 : valueEnd; + } + this.valueRange = new PlainValue.Range(start + 1, offset); + return offset; + } + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = this.parseBlockHeader(start); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + offset = this.parseBlockValue(offset); + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + return this.header ? this.header.setOrigRange(cr, offset) : offset; + } + }; + var FlowCollection = class extends PlainValue.Node { + constructor(type2, props) { + super(type2, props); + this.items = null; + } + prevNodeIsJsonLike(idx = this.items.length) { + const node = this.items[idx - 1]; + return !!node && (node.jsonLike || node.type === PlainValue.Type.COMMENT && this.prevNodeIsJsonLike(idx - 1)); + } + parse(context, start) { + this.context = context; + const { + parseNode, + src + } = context; + let { + indent, + lineStart + } = context; + let char = src[start]; + this.items = [{ + char, + offset: start + }]; + let offset = PlainValue.Node.endOfWhiteSpace(src, start + 1); + char = src[offset]; + while (char && char !== "]" && char !== "}") { + switch (char) { + case "\n": + { + lineStart = offset + 1; + const wsEnd = PlainValue.Node.endOfWhiteSpace(src, lineStart); + if (src[wsEnd] === "\n") { + const blankLine = new BlankLine(); + lineStart = blankLine.parse({ + src + }, lineStart); + this.items.push(blankLine); + } + offset = PlainValue.Node.endOfIndent(src, lineStart); + if (offset <= lineStart + indent) { + char = src[offset]; + if (offset < lineStart + indent || char !== "]" && char !== "}") { + const msg = "Insufficient indentation in flow collection"; + this.error = new PlainValue.YAMLSemanticError(this, msg); + } + } + } + break; + case ",": + { + this.items.push({ + char, + offset + }); + offset += 1; + } + break; + case "#": + { + const comment = new Comment(); + offset = comment.parse({ + src + }, offset); + this.items.push(comment); + } + break; + case "?": + case ":": { + const next = src[offset + 1]; + if (next === "\n" || next === " " || next === " " || next === "," || char === ":" && this.prevNodeIsJsonLike()) { + this.items.push({ + char, + offset + }); + offset += 1; + break; + } + } + default: { + const node = parseNode({ + atLineStart: false, + inCollection: false, + inFlow: true, + indent: -1, + lineStart, + parent: this + }, offset); + if (!node) { + this.valueRange = new PlainValue.Range(start, offset); + return offset; + } + this.items.push(node); + offset = PlainValue.Node.normalizeOffset(src, node.range.end); + } + } + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + char = src[offset]; + } + this.valueRange = new PlainValue.Range(start, offset + 1); + if (char) { + this.items.push({ + char, + offset + }); + offset = PlainValue.Node.endOfWhiteSpace(src, offset + 1); + offset = this.parseComment(offset); + } + return offset; + } + setOrigRanges(cr, offset) { + offset = super.setOrigRanges(cr, offset); + this.items.forEach((node) => { + if (node instanceof PlainValue.Node) { + offset = node.setOrigRanges(cr, offset); + } else if (cr.length === 0) { + node.origOffset = node.offset; + } else { + let i = offset; + while (i < cr.length) { + if (cr[i] > node.offset) + break; + else + ++i; + } + node.origOffset = node.offset + i; + offset = i; + } + }); + return offset; + } + toString() { + const { + context: { + src + }, + items, + range, + value + } = this; + if (value != null) + return value; + const nodes = items.filter((item) => item instanceof PlainValue.Node); + let str2 = ""; + let prevEnd = range.start; + nodes.forEach((node) => { + const prefix = src.slice(prevEnd, node.range.start); + prevEnd = node.range.end; + str2 += prefix + String(node); + if (str2[str2.length - 1] === "\n" && src[prevEnd - 1] !== "\n" && src[prevEnd] === "\n") { + prevEnd += 1; + } + }); + str2 += src.slice(prevEnd, range.end); + return PlainValue.Node.addStringTerminator(src, range.end, str2); + } + }; + var QuoteDouble = class extends PlainValue.Node { + static endOfQuote(src, offset) { + let ch = src[offset]; + while (ch && ch !== '"') { + offset += ch === "\\" ? 2 : 1; + ch = src[offset]; + } + return offset + 1; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + const errors = []; + const { + start, + end + } = this.valueRange; + const { + indent, + src + } = this.context; + if (src[end - 1] !== '"') + errors.push(new PlainValue.YAMLSyntaxError(this, 'Missing closing "quote')); + let str2 = ""; + for (let i = start + 1; i < end - 1; ++i) { + const ch = src[i]; + if (ch === "\n") { + if (PlainValue.Node.atDocumentBoundary(src, i + 1)) + errors.push(new PlainValue.YAMLSemanticError(this, "Document boundary indicators are not allowed within string values")); + const { + fold, + offset, + error: error2 + } = PlainValue.Node.foldNewline(src, i, indent); + str2 += fold; + i = offset; + if (error2) + errors.push(new PlainValue.YAMLSemanticError(this, "Multi-line double-quoted string needs to be sufficiently indented")); + } else if (ch === "\\") { + i += 1; + switch (src[i]) { + case "0": + str2 += "\0"; + break; + case "a": + str2 += "\x07"; + break; + case "b": + str2 += "\b"; + break; + case "e": + str2 += "\x1B"; + break; + case "f": + str2 += "\f"; + break; + case "n": + str2 += "\n"; + break; + case "r": + str2 += "\r"; + break; + case "t": + str2 += " "; + break; + case "v": + str2 += "\v"; + break; + case "N": + str2 += "\x85"; + break; + case "_": + str2 += "\xA0"; + break; + case "L": + str2 += "\u2028"; + break; + case "P": + str2 += "\u2029"; + break; + case " ": + str2 += " "; + break; + case '"': + str2 += '"'; + break; + case "/": + str2 += "/"; + break; + case "\\": + str2 += "\\"; + break; + case " ": + str2 += " "; + break; + case "x": + str2 += this.parseCharCode(i + 1, 2, errors); + i += 2; + break; + case "u": + str2 += this.parseCharCode(i + 1, 4, errors); + i += 4; + break; + case "U": + str2 += this.parseCharCode(i + 1, 8, errors); + i += 8; + break; + case "\n": + while (src[i + 1] === " " || src[i + 1] === " ") + i += 1; + break; + default: + errors.push(new PlainValue.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(i - 1, 2)}`)); + str2 += "\\" + src[i]; + } + } else if (ch === " " || ch === " ") { + const wsStart = i; + let next = src[i + 1]; + while (next === " " || next === " ") { + i += 1; + next = src[i + 1]; + } + if (next !== "\n") + str2 += i > wsStart ? src.slice(wsStart, i + 1) : ch; + } else { + str2 += ch; + } + } + return errors.length > 0 ? { + errors, + str: str2 + } : str2; + } + parseCharCode(offset, length, errors) { + const { + src + } = this.context; + const cc = src.substr(offset, length); + const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc); + const code = ok ? parseInt(cc, 16) : NaN; + if (isNaN(code)) { + errors.push(new PlainValue.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(offset - 2, length + 2)}`)); + return src.substr(offset - 2, length + 2); + } + return String.fromCodePoint(code); + } + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = QuoteDouble.endOfQuote(src, start + 1); + this.valueRange = new PlainValue.Range(start, offset); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }; + var QuoteSingle = class extends PlainValue.Node { + static endOfQuote(src, offset) { + let ch = src[offset]; + while (ch) { + if (ch === "'") { + if (src[offset + 1] !== "'") + break; + ch = src[offset += 2]; + } else { + ch = src[offset += 1]; + } + } + return offset + 1; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + const errors = []; + const { + start, + end + } = this.valueRange; + const { + indent, + src + } = this.context; + if (src[end - 1] !== "'") + errors.push(new PlainValue.YAMLSyntaxError(this, "Missing closing 'quote")); + let str2 = ""; + for (let i = start + 1; i < end - 1; ++i) { + const ch = src[i]; + if (ch === "\n") { + if (PlainValue.Node.atDocumentBoundary(src, i + 1)) + errors.push(new PlainValue.YAMLSemanticError(this, "Document boundary indicators are not allowed within string values")); + const { + fold, + offset, + error: error2 + } = PlainValue.Node.foldNewline(src, i, indent); + str2 += fold; + i = offset; + if (error2) + errors.push(new PlainValue.YAMLSemanticError(this, "Multi-line single-quoted string needs to be sufficiently indented")); + } else if (ch === "'") { + str2 += ch; + i += 1; + if (src[i] !== "'") + errors.push(new PlainValue.YAMLSyntaxError(this, "Unescaped single quote? This should not happen.")); + } else if (ch === " " || ch === " ") { + const wsStart = i; + let next = src[i + 1]; + while (next === " " || next === " ") { + i += 1; + next = src[i + 1]; + } + if (next !== "\n") + str2 += i > wsStart ? src.slice(wsStart, i + 1) : ch; + } else { + str2 += ch; + } + } + return errors.length > 0 ? { + errors, + str: str2 + } : str2; + } + parse(context, start) { + this.context = context; + const { + src + } = context; + let offset = QuoteSingle.endOfQuote(src, start + 1); + this.valueRange = new PlainValue.Range(start, offset); + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + offset = this.parseComment(offset); + return offset; + } + }; + function createNewNode(type2, props) { + switch (type2) { + case PlainValue.Type.ALIAS: + return new Alias(type2, props); + case PlainValue.Type.BLOCK_FOLDED: + case PlainValue.Type.BLOCK_LITERAL: + return new BlockValue(type2, props); + case PlainValue.Type.FLOW_MAP: + case PlainValue.Type.FLOW_SEQ: + return new FlowCollection(type2, props); + case PlainValue.Type.MAP_KEY: + case PlainValue.Type.MAP_VALUE: + case PlainValue.Type.SEQ_ITEM: + return new CollectionItem(type2, props); + case PlainValue.Type.COMMENT: + case PlainValue.Type.PLAIN: + return new PlainValue.PlainValue(type2, props); + case PlainValue.Type.QUOTE_DOUBLE: + return new QuoteDouble(type2, props); + case PlainValue.Type.QUOTE_SINGLE: + return new QuoteSingle(type2, props); + default: + return null; + } + } + var ParseContext = class { + static parseType(src, offset, inFlow) { + switch (src[offset]) { + case "*": + return PlainValue.Type.ALIAS; + case ">": + return PlainValue.Type.BLOCK_FOLDED; + case "|": + return PlainValue.Type.BLOCK_LITERAL; + case "{": + return PlainValue.Type.FLOW_MAP; + case "[": + return PlainValue.Type.FLOW_SEQ; + case "?": + return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.MAP_KEY : PlainValue.Type.PLAIN; + case ":": + return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.MAP_VALUE : PlainValue.Type.PLAIN; + case "-": + return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.SEQ_ITEM : PlainValue.Type.PLAIN; + case '"': + return PlainValue.Type.QUOTE_DOUBLE; + case "'": + return PlainValue.Type.QUOTE_SINGLE; + default: + return PlainValue.Type.PLAIN; + } + } + constructor(orig = {}, { + atLineStart, + inCollection, + inFlow, + indent, + lineStart, + parent + } = {}) { + PlainValue._defineProperty(this, "parseNode", (overlay, start) => { + if (PlainValue.Node.atDocumentBoundary(this.src, start)) + return null; + const context = new ParseContext(this, overlay); + const { + props, + type: type2, + valueStart + } = context.parseProps(start); + const node = createNewNode(type2, props); + let offset = node.parse(context, valueStart); + node.range = new PlainValue.Range(start, offset); + if (offset <= start) { + node.error = new Error(`Node#parse consumed no characters`); + node.error.parseEnd = offset; + node.error.source = node; + node.range.end = start + 1; + } + if (context.nodeStartsCollection(node)) { + if (!node.error && !context.atLineStart && context.parent.type === PlainValue.Type.DOCUMENT) { + node.error = new PlainValue.YAMLSyntaxError(node, "Block collection must not have preceding content here (e.g. directives-end indicator)"); + } + const collection = new Collection(node); + offset = collection.parse(new ParseContext(context), offset); + collection.range = new PlainValue.Range(start, offset); + return collection; + } + return node; + }); + this.atLineStart = atLineStart != null ? atLineStart : orig.atLineStart || false; + this.inCollection = inCollection != null ? inCollection : orig.inCollection || false; + this.inFlow = inFlow != null ? inFlow : orig.inFlow || false; + this.indent = indent != null ? indent : orig.indent; + this.lineStart = lineStart != null ? lineStart : orig.lineStart; + this.parent = parent != null ? parent : orig.parent || {}; + this.root = orig.root; + this.src = orig.src; + } + nodeStartsCollection(node) { + const { + inCollection, + inFlow, + src + } = this; + if (inCollection || inFlow) + return false; + if (node instanceof CollectionItem) + return true; + let offset = node.range.end; + if (src[offset] === "\n" || src[offset - 1] === "\n") + return false; + offset = PlainValue.Node.endOfWhiteSpace(src, offset); + return src[offset] === ":"; + } + parseProps(offset) { + const { + inFlow, + parent, + src + } = this; + const props = []; + let lineHasProps = false; + offset = this.atLineStart ? PlainValue.Node.endOfIndent(src, offset) : PlainValue.Node.endOfWhiteSpace(src, offset); + let ch = src[offset]; + while (ch === PlainValue.Char.ANCHOR || ch === PlainValue.Char.COMMENT || ch === PlainValue.Char.TAG || ch === "\n") { + if (ch === "\n") { + let inEnd = offset; + let lineStart; + do { + lineStart = inEnd + 1; + inEnd = PlainValue.Node.endOfIndent(src, lineStart); + } while (src[inEnd] === "\n"); + const indentDiff = inEnd - (lineStart + this.indent); + const noIndicatorAsIndent = parent.type === PlainValue.Type.SEQ_ITEM && parent.context.atLineStart; + if (src[inEnd] !== "#" && !PlainValue.Node.nextNodeIsIndented(src[inEnd], indentDiff, !noIndicatorAsIndent)) + break; + this.atLineStart = true; + this.lineStart = lineStart; + lineHasProps = false; + offset = inEnd; + } else if (ch === PlainValue.Char.COMMENT) { + const end = PlainValue.Node.endOfLine(src, offset + 1); + props.push(new PlainValue.Range(offset, end)); + offset = end; + } else { + let end = PlainValue.Node.endOfIdentifier(src, offset + 1); + if (ch === PlainValue.Char.TAG && src[end] === "," && /^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(src.slice(offset + 1, end + 13))) { + end = PlainValue.Node.endOfIdentifier(src, end + 5); + } + props.push(new PlainValue.Range(offset, end)); + lineHasProps = true; + offset = PlainValue.Node.endOfWhiteSpace(src, end); + } + ch = src[offset]; + } + if (lineHasProps && ch === ":" && PlainValue.Node.atBlank(src, offset + 1, true)) + offset -= 1; + const type2 = ParseContext.parseType(src, offset, inFlow); + return { + props, + type: type2, + valueStart: offset + }; + } + }; + function parse(src) { + const cr = []; + if (src.indexOf("\r") !== -1) { + src = src.replace(/\r\n?/g, (match, offset2) => { + if (match.length > 1) + cr.push(offset2); + return "\n"; + }); + } + const documents = []; + let offset = 0; + do { + const doc = new Document(); + const context = new ParseContext({ + src + }); + offset = doc.parse(context, offset); + documents.push(doc); + } while (offset < src.length); + documents.setOrigRanges = () => { + if (cr.length === 0) + return false; + for (let i = 1; i < cr.length; ++i) + cr[i] -= i; + let crOffset = 0; + for (let i = 0; i < documents.length; ++i) { + crOffset = documents[i].setOrigRanges(cr, crOffset); + } + cr.splice(0, cr.length); + return true; + }; + documents.toString = () => documents.join("...\n"); + return documents; + } + exports2.parse = parse; + } + }); + var require_resolveSeq_d03cb037 = __commonJS2({ + "node_modules/yaml/dist/resolveSeq-d03cb037.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + function addCommentBefore(str2, indent, comment) { + if (!comment) + return str2; + const cc = comment.replace(/[\s\S]^/gm, `$&${indent}#`); + return `#${cc} +${indent}${str2}`; + } + function addComment(str2, indent, comment) { + return !comment ? str2 : comment.indexOf("\n") === -1 ? `${str2} #${comment}` : `${str2} +` + comment.replace(/^/gm, `${indent || ""}#`); + } + var Node = class { + }; + function toJSON(value, arg, ctx) { + if (Array.isArray(value)) + return value.map((v, i) => toJSON(v, String(i), ctx)); + if (value && typeof value.toJSON === "function") { + const anchor = ctx && ctx.anchors && ctx.anchors.get(value); + if (anchor) + ctx.onCreate = (res2) => { + anchor.res = res2; + delete ctx.onCreate; + }; + const res = value.toJSON(arg, ctx); + if (anchor && ctx.onCreate) + ctx.onCreate(res); + return res; + } + if ((!ctx || !ctx.keep) && typeof value === "bigint") + return Number(value); + return value; + } + var Scalar = class extends Node { + constructor(value) { + super(); + this.value = value; + } + toJSON(arg, ctx) { + return ctx && ctx.keep ? this.value : toJSON(this.value, arg, ctx); + } + toString() { + return String(this.value); + } + }; + function collectionFromPath(schema2, path2, value) { + let v = value; + for (let i = path2.length - 1; i >= 0; --i) { + const k = path2[i]; + if (Number.isInteger(k) && k >= 0) { + const a = []; + a[k] = v; + v = a; + } else { + const o = {}; + Object.defineProperty(o, k, { + value: v, + writable: true, + enumerable: true, + configurable: true + }); + v = o; + } + } + return schema2.createNode(v, false); + } + var isEmptyPath = (path2) => path2 == null || typeof path2 === "object" && path2[Symbol.iterator]().next().done; + var Collection = class extends Node { + constructor(schema2) { + super(); + PlainValue._defineProperty(this, "items", []); + this.schema = schema2; + } + addIn(path2, value) { + if (isEmptyPath(path2)) + this.add(value); + else { + const [key, ...rest] = path2; + const node = this.get(key, true); + if (node instanceof Collection) + node.addIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + deleteIn([key, ...rest]) { + if (rest.length === 0) + return this.delete(key); + const node = this.get(key, true); + if (node instanceof Collection) + return node.deleteIn(rest); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + getIn([key, ...rest], keepScalar) { + const node = this.get(key, true); + if (rest.length === 0) + return !keepScalar && node instanceof Scalar ? node.value : node; + else + return node instanceof Collection ? node.getIn(rest, keepScalar) : void 0; + } + hasAllNullValues() { + return this.items.every((node) => { + if (!node || node.type !== "PAIR") + return false; + const n = node.value; + return n == null || n instanceof Scalar && n.value == null && !n.commentBefore && !n.comment && !n.tag; + }); + } + hasIn([key, ...rest]) { + if (rest.length === 0) + return this.has(key); + const node = this.get(key, true); + return node instanceof Collection ? node.hasIn(rest) : false; + } + setIn([key, ...rest], value) { + if (rest.length === 0) { + this.set(key, value); + } else { + const node = this.get(key, true); + if (node instanceof Collection) + node.setIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + toJSON() { + return null; + } + toString(ctx, { + blockItem, + flowChars, + isMap, + itemIndent + }, onComment, onChompKeep) { + const { + indent, + indentStep, + stringify + } = ctx; + const inFlow = this.type === PlainValue.Type.FLOW_MAP || this.type === PlainValue.Type.FLOW_SEQ || ctx.inFlow; + if (inFlow) + itemIndent += indentStep; + const allNullValues = isMap && this.hasAllNullValues(); + ctx = Object.assign({}, ctx, { + allNullValues, + indent: itemIndent, + inFlow, + type: null + }); + let chompKeep = false; + let hasItemWithNewLine = false; + const nodes = this.items.reduce((nodes2, item, i) => { + let comment; + if (item) { + if (!chompKeep && item.spaceBefore) + nodes2.push({ + type: "comment", + str: "" + }); + if (item.commentBefore) + item.commentBefore.match(/^.*$/gm).forEach((line) => { + nodes2.push({ + type: "comment", + str: `#${line}` + }); + }); + if (item.comment) + comment = item.comment; + if (inFlow && (!chompKeep && item.spaceBefore || item.commentBefore || item.comment || item.key && (item.key.commentBefore || item.key.comment) || item.value && (item.value.commentBefore || item.value.comment))) + hasItemWithNewLine = true; + } + chompKeep = false; + let str22 = stringify(item, ctx, () => comment = null, () => chompKeep = true); + if (inFlow && !hasItemWithNewLine && str22.includes("\n")) + hasItemWithNewLine = true; + if (inFlow && i < this.items.length - 1) + str22 += ","; + str22 = addComment(str22, itemIndent, comment); + if (chompKeep && (comment || inFlow)) + chompKeep = false; + nodes2.push({ + type: "item", + str: str22 + }); + return nodes2; + }, []); + let str2; + if (nodes.length === 0) { + str2 = flowChars.start + flowChars.end; + } else if (inFlow) { + const { + start, + end + } = flowChars; + const strings = nodes.map((n) => n.str); + if (hasItemWithNewLine || strings.reduce((sum, str22) => sum + str22.length + 2, 2) > Collection.maxFlowStringSingleLineLength) { + str2 = start; + for (const s of strings) { + str2 += s ? ` +${indentStep}${indent}${s}` : "\n"; + } + str2 += ` +${indent}${end}`; + } else { + str2 = `${start} ${strings.join(" ")} ${end}`; + } + } else { + const strings = nodes.map(blockItem); + str2 = strings.shift(); + for (const s of strings) + str2 += s ? ` +${indent}${s}` : "\n"; + } + if (this.comment) { + str2 += "\n" + this.comment.replace(/^/gm, `${indent}#`); + if (onComment) + onComment(); + } else if (chompKeep && onChompKeep) + onChompKeep(); + return str2; + } + }; + PlainValue._defineProperty(Collection, "maxFlowStringSingleLineLength", 60); + function asItemIndex(key) { + let idx = key instanceof Scalar ? key.value : key; + if (idx && typeof idx === "string") + idx = Number(idx); + return Number.isInteger(idx) && idx >= 0 ? idx : null; + } + var YAMLSeq = class extends Collection { + add(value) { + this.items.push(value); + } + delete(key) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return false; + const del = this.items.splice(idx, 1); + return del.length > 0; + } + get(key, keepScalar) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return void 0; + const it = this.items[idx]; + return !keepScalar && it instanceof Scalar ? it.value : it; + } + has(key) { + const idx = asItemIndex(key); + return typeof idx === "number" && idx < this.items.length; + } + set(key, value) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + throw new Error(`Expected a valid index, not ${key}.`); + this.items[idx] = value; + } + toJSON(_, ctx) { + const seq2 = []; + if (ctx && ctx.onCreate) + ctx.onCreate(seq2); + let i = 0; + for (const item of this.items) + seq2.push(toJSON(item, String(i++), ctx)); + return seq2; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + return super.toString(ctx, { + blockItem: (n) => n.type === "comment" ? n.str : `- ${n.str}`, + flowChars: { + start: "[", + end: "]" + }, + isMap: false, + itemIndent: (ctx.indent || "") + " " + }, onComment, onChompKeep); + } + }; + var stringifyKey = (key, jsKey, ctx) => { + if (jsKey === null) + return ""; + if (typeof jsKey !== "object") + return String(jsKey); + if (key instanceof Node && ctx && ctx.doc) + return key.toString({ + anchors: /* @__PURE__ */ Object.create(null), + doc: ctx.doc, + indent: "", + indentStep: ctx.indentStep, + inFlow: true, + inStringifyKey: true, + stringify: ctx.stringify + }); + return JSON.stringify(jsKey); + }; + var Pair = class extends Node { + constructor(key, value = null) { + super(); + this.key = key; + this.value = value; + this.type = Pair.Type.PAIR; + } + get commentBefore() { + return this.key instanceof Node ? this.key.commentBefore : void 0; + } + set commentBefore(cb) { + if (this.key == null) + this.key = new Scalar(null); + if (this.key instanceof Node) + this.key.commentBefore = cb; + else { + const msg = "Pair.commentBefore is an alias for Pair.key.commentBefore. To set it, the key must be a Node."; + throw new Error(msg); + } + } + addToJSMap(ctx, map2) { + const key = toJSON(this.key, "", ctx); + if (map2 instanceof Map) { + const value = toJSON(this.value, key, ctx); + map2.set(key, value); + } else if (map2 instanceof Set) { + map2.add(key); + } else { + const stringKey = stringifyKey(this.key, key, ctx); + const value = toJSON(this.value, stringKey, ctx); + if (stringKey in map2) + Object.defineProperty(map2, stringKey, { + value, + writable: true, + enumerable: true, + configurable: true + }); + else + map2[stringKey] = value; + } + return map2; + } + toJSON(_, ctx) { + const pair = ctx && ctx.mapAsMap ? /* @__PURE__ */ new Map() : {}; + return this.addToJSMap(ctx, pair); + } + toString(ctx, onComment, onChompKeep) { + if (!ctx || !ctx.doc) + return JSON.stringify(this); + const { + indent: indentSize, + indentSeq, + simpleKeys + } = ctx.doc.options; + let { + key, + value + } = this; + let keyComment = key instanceof Node && key.comment; + if (simpleKeys) { + if (keyComment) { + throw new Error("With simple keys, key nodes cannot have comments"); + } + if (key instanceof Collection) { + const msg = "With simple keys, collection cannot be used as a key value"; + throw new Error(msg); + } + } + let explicitKey = !simpleKeys && (!key || keyComment || (key instanceof Node ? key instanceof Collection || key.type === PlainValue.Type.BLOCK_FOLDED || key.type === PlainValue.Type.BLOCK_LITERAL : typeof key === "object")); + const { + doc, + indent, + indentStep, + stringify + } = ctx; + ctx = Object.assign({}, ctx, { + implicitKey: !explicitKey, + indent: indent + indentStep + }); + let chompKeep = false; + let str2 = stringify(key, ctx, () => keyComment = null, () => chompKeep = true); + str2 = addComment(str2, ctx.indent, keyComment); + if (!explicitKey && str2.length > 1024) { + if (simpleKeys) + throw new Error("With simple keys, single line scalar must not span more than 1024 characters"); + explicitKey = true; + } + if (ctx.allNullValues && !simpleKeys) { + if (this.comment) { + str2 = addComment(str2, ctx.indent, this.comment); + if (onComment) + onComment(); + } else if (chompKeep && !keyComment && onChompKeep) + onChompKeep(); + return ctx.inFlow && !explicitKey ? str2 : `? ${str2}`; + } + str2 = explicitKey ? `? ${str2} +${indent}:` : `${str2}:`; + if (this.comment) { + str2 = addComment(str2, ctx.indent, this.comment); + if (onComment) + onComment(); + } + let vcb = ""; + let valueComment = null; + if (value instanceof Node) { + if (value.spaceBefore) + vcb = "\n"; + if (value.commentBefore) { + const cs = value.commentBefore.replace(/^/gm, `${ctx.indent}#`); + vcb += ` +${cs}`; + } + valueComment = value.comment; + } else if (value && typeof value === "object") { + value = doc.schema.createNode(value, true); + } + ctx.implicitKey = false; + if (!explicitKey && !this.comment && value instanceof Scalar) + ctx.indentAtStart = str2.length + 1; + chompKeep = false; + if (!indentSeq && indentSize >= 2 && !ctx.inFlow && !explicitKey && value instanceof YAMLSeq && value.type !== PlainValue.Type.FLOW_SEQ && !value.tag && !doc.anchors.getName(value)) { + ctx.indent = ctx.indent.substr(2); + } + const valueStr = stringify(value, ctx, () => valueComment = null, () => chompKeep = true); + let ws = " "; + if (vcb || this.comment) { + ws = `${vcb} +${ctx.indent}`; + } else if (!explicitKey && value instanceof Collection) { + const flow = valueStr[0] === "[" || valueStr[0] === "{"; + if (!flow || valueStr.includes("\n")) + ws = ` +${ctx.indent}`; + } else if (valueStr[0] === "\n") + ws = ""; + if (chompKeep && !valueComment && onChompKeep) + onChompKeep(); + return addComment(str2 + ws + valueStr, ctx.indent, valueComment); + } + }; + PlainValue._defineProperty(Pair, "Type", { + PAIR: "PAIR", + MERGE_PAIR: "MERGE_PAIR" + }); + var getAliasCount = (node, anchors) => { + if (node instanceof Alias) { + const anchor = anchors.get(node.source); + return anchor.count * anchor.aliasCount; + } else if (node instanceof Collection) { + let count = 0; + for (const item of node.items) { + const c = getAliasCount(item, anchors); + if (c > count) + count = c; + } + return count; + } else if (node instanceof Pair) { + const kc = getAliasCount(node.key, anchors); + const vc = getAliasCount(node.value, anchors); + return Math.max(kc, vc); + } + return 1; + }; + var Alias = class extends Node { + static stringify({ + range, + source + }, { + anchors, + doc, + implicitKey, + inStringifyKey + }) { + let anchor = Object.keys(anchors).find((a) => anchors[a] === source); + if (!anchor && inStringifyKey) + anchor = doc.anchors.getName(source) || doc.anchors.newName(); + if (anchor) + return `*${anchor}${implicitKey ? " " : ""}`; + const msg = doc.anchors.getName(source) ? "Alias node must be after source node" : "Source node not found for alias node"; + throw new Error(`${msg} [${range}]`); + } + constructor(source) { + super(); + this.source = source; + this.type = PlainValue.Type.ALIAS; + } + set tag(t) { + throw new Error("Alias nodes cannot have tags"); + } + toJSON(arg, ctx) { + if (!ctx) + return toJSON(this.source, arg, ctx); + const { + anchors, + maxAliasCount + } = ctx; + const anchor = anchors.get(this.source); + if (!anchor || anchor.res === void 0) { + const msg = "This should not happen: Alias anchor was not resolved?"; + if (this.cstNode) + throw new PlainValue.YAMLReferenceError(this.cstNode, msg); + else + throw new ReferenceError(msg); + } + if (maxAliasCount >= 0) { + anchor.count += 1; + if (anchor.aliasCount === 0) + anchor.aliasCount = getAliasCount(this.source, anchors); + if (anchor.count * anchor.aliasCount > maxAliasCount) { + const msg = "Excessive alias count indicates a resource exhaustion attack"; + if (this.cstNode) + throw new PlainValue.YAMLReferenceError(this.cstNode, msg); + else + throw new ReferenceError(msg); + } + } + return anchor.res; + } + toString(ctx) { + return Alias.stringify(this, ctx); + } + }; + PlainValue._defineProperty(Alias, "default", true); + function findPair(items, key) { + const k = key instanceof Scalar ? key.value : key; + for (const it of items) { + if (it instanceof Pair) { + if (it.key === key || it.key === k) + return it; + if (it.key && it.key.value === k) + return it; + } + } + return void 0; + } + var YAMLMap = class extends Collection { + add(pair, overwrite) { + if (!pair) + pair = new Pair(pair); + else if (!(pair instanceof Pair)) + pair = new Pair(pair.key || pair, pair.value); + const prev = findPair(this.items, pair.key); + const sortEntries = this.schema && this.schema.sortMapEntries; + if (prev) { + if (overwrite) + prev.value = pair.value; + else + throw new Error(`Key ${pair.key} already set`); + } else if (sortEntries) { + const i = this.items.findIndex((item) => sortEntries(pair, item) < 0); + if (i === -1) + this.items.push(pair); + else + this.items.splice(i, 0, pair); + } else { + this.items.push(pair); + } + } + delete(key) { + const it = findPair(this.items, key); + if (!it) + return false; + const del = this.items.splice(this.items.indexOf(it), 1); + return del.length > 0; + } + get(key, keepScalar) { + const it = findPair(this.items, key); + const node = it && it.value; + return !keepScalar && node instanceof Scalar ? node.value : node; + } + has(key) { + return !!findPair(this.items, key); + } + set(key, value) { + this.add(new Pair(key, value), true); + } + toJSON(_, ctx, Type) { + const map2 = Type ? new Type() : ctx && ctx.mapAsMap ? /* @__PURE__ */ new Map() : {}; + if (ctx && ctx.onCreate) + ctx.onCreate(map2); + for (const item of this.items) + item.addToJSMap(ctx, map2); + return map2; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + for (const item of this.items) { + if (!(item instanceof Pair)) + throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`); + } + return super.toString(ctx, { + blockItem: (n) => n.str, + flowChars: { + start: "{", + end: "}" + }, + isMap: true, + itemIndent: ctx.indent || "" + }, onComment, onChompKeep); + } + }; + var MERGE_KEY = "<<"; + var Merge = class extends Pair { + constructor(pair) { + if (pair instanceof Pair) { + let seq2 = pair.value; + if (!(seq2 instanceof YAMLSeq)) { + seq2 = new YAMLSeq(); + seq2.items.push(pair.value); + seq2.range = pair.value.range; + } + super(pair.key, seq2); + this.range = pair.range; + } else { + super(new Scalar(MERGE_KEY), new YAMLSeq()); + } + this.type = Pair.Type.MERGE_PAIR; + } + addToJSMap(ctx, map2) { + for (const { + source + } of this.value.items) { + if (!(source instanceof YAMLMap)) + throw new Error("Merge sources must be maps"); + const srcMap = source.toJSON(null, ctx, Map); + for (const [key, value] of srcMap) { + if (map2 instanceof Map) { + if (!map2.has(key)) + map2.set(key, value); + } else if (map2 instanceof Set) { + map2.add(key); + } else if (!Object.prototype.hasOwnProperty.call(map2, key)) { + Object.defineProperty(map2, key, { + value, + writable: true, + enumerable: true, + configurable: true + }); + } + } + } + return map2; + } + toString(ctx, onComment) { + const seq2 = this.value; + if (seq2.items.length > 1) + return super.toString(ctx, onComment); + this.value = seq2.items[0]; + const str2 = super.toString(ctx, onComment); + this.value = seq2; + return str2; + } + }; + var binaryOptions = { + defaultType: PlainValue.Type.BLOCK_LITERAL, + lineWidth: 76 + }; + var boolOptions = { + trueStr: "true", + falseStr: "false" + }; + var intOptions = { + asBigInt: false + }; + var nullOptions = { + nullStr: "null" + }; + var strOptions = { + defaultType: PlainValue.Type.PLAIN, + doubleQuoted: { + jsonEncoding: false, + minMultiLineLength: 40 + }, + fold: { + lineWidth: 80, + minContentWidth: 20 + } + }; + function resolveScalar(str2, tags, scalarFallback) { + for (const { + format: format2, + test, + resolve + } of tags) { + if (test) { + const match = str2.match(test); + if (match) { + let res = resolve.apply(null, match); + if (!(res instanceof Scalar)) + res = new Scalar(res); + if (format2) + res.format = format2; + return res; + } + } + } + if (scalarFallback) + str2 = scalarFallback(str2); + return new Scalar(str2); + } + var FOLD_FLOW = "flow"; + var FOLD_BLOCK = "block"; + var FOLD_QUOTED = "quoted"; + var consumeMoreIndentedLines = (text, i) => { + let ch = text[i + 1]; + while (ch === " " || ch === " ") { + do { + ch = text[i += 1]; + } while (ch && ch !== "\n"); + ch = text[i + 1]; + } + return i; + }; + function foldFlowLines(text, indent, mode, { + indentAtStart, + lineWidth = 80, + minContentWidth = 20, + onFold, + onOverflow + }) { + if (!lineWidth || lineWidth < 0) + return text; + const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length); + if (text.length <= endStep) + return text; + const folds = []; + const escapedFolds = {}; + let end = lineWidth - indent.length; + if (typeof indentAtStart === "number") { + if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) + folds.push(0); + else + end = lineWidth - indentAtStart; + } + let split = void 0; + let prev = void 0; + let overflow = false; + let i = -1; + let escStart = -1; + let escEnd = -1; + if (mode === FOLD_BLOCK) { + i = consumeMoreIndentedLines(text, i); + if (i !== -1) + end = i + endStep; + } + for (let ch; ch = text[i += 1]; ) { + if (mode === FOLD_QUOTED && ch === "\\") { + escStart = i; + switch (text[i + 1]) { + case "x": + i += 3; + break; + case "u": + i += 5; + break; + case "U": + i += 9; + break; + default: + i += 1; + } + escEnd = i; + } + if (ch === "\n") { + if (mode === FOLD_BLOCK) + i = consumeMoreIndentedLines(text, i); + end = i + endStep; + split = void 0; + } else { + if (ch === " " && prev && prev !== " " && prev !== "\n" && prev !== " ") { + const next = text[i + 1]; + if (next && next !== " " && next !== "\n" && next !== " ") + split = i; + } + if (i >= end) { + if (split) { + folds.push(split); + end = split + endStep; + split = void 0; + } else if (mode === FOLD_QUOTED) { + while (prev === " " || prev === " ") { + prev = ch; + ch = text[i += 1]; + overflow = true; + } + const j = i > escEnd + 1 ? i - 2 : escStart - 1; + if (escapedFolds[j]) + return text; + folds.push(j); + escapedFolds[j] = true; + end = j + endStep; + split = void 0; + } else { + overflow = true; + } + } + } + prev = ch; + } + if (overflow && onOverflow) + onOverflow(); + if (folds.length === 0) + return text; + if (onFold) + onFold(); + let res = text.slice(0, folds[0]); + for (let i2 = 0; i2 < folds.length; ++i2) { + const fold = folds[i2]; + const end2 = folds[i2 + 1] || text.length; + if (fold === 0) + res = ` +${indent}${text.slice(0, end2)}`; + else { + if (mode === FOLD_QUOTED && escapedFolds[fold]) + res += `${text[fold]}\\`; + res += ` +${indent}${text.slice(fold + 1, end2)}`; + } + } + return res; + } + var getFoldOptions = ({ + indentAtStart + }) => indentAtStart ? Object.assign({ + indentAtStart + }, strOptions.fold) : strOptions.fold; + var containsDocumentMarker = (str2) => /^(%|---|\.\.\.)/m.test(str2); + function lineLengthOverLimit(str2, lineWidth, indentLength) { + if (!lineWidth || lineWidth < 0) + return false; + const limit = lineWidth - indentLength; + const strLen = str2.length; + if (strLen <= limit) + return false; + for (let i = 0, start = 0; i < strLen; ++i) { + if (str2[i] === "\n") { + if (i - start > limit) + return true; + start = i + 1; + if (strLen - start <= limit) + return false; + } + } + return true; + } + function doubleQuotedString(value, ctx) { + const { + implicitKey + } = ctx; + const { + jsonEncoding, + minMultiLineLength + } = strOptions.doubleQuoted; + const json2 = JSON.stringify(value); + if (jsonEncoding) + return json2; + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + let str2 = ""; + let start = 0; + for (let i = 0, ch = json2[i]; ch; ch = json2[++i]) { + if (ch === " " && json2[i + 1] === "\\" && json2[i + 2] === "n") { + str2 += json2.slice(start, i) + "\\ "; + i += 1; + start = i; + ch = "\\"; + } + if (ch === "\\") + switch (json2[i + 1]) { + case "u": + { + str2 += json2.slice(start, i); + const code = json2.substr(i + 2, 4); + switch (code) { + case "0000": + str2 += "\\0"; + break; + case "0007": + str2 += "\\a"; + break; + case "000b": + str2 += "\\v"; + break; + case "001b": + str2 += "\\e"; + break; + case "0085": + str2 += "\\N"; + break; + case "00a0": + str2 += "\\_"; + break; + case "2028": + str2 += "\\L"; + break; + case "2029": + str2 += "\\P"; + break; + default: + if (code.substr(0, 2) === "00") + str2 += "\\x" + code.substr(2); + else + str2 += json2.substr(i, 6); + } + i += 5; + start = i + 1; + } + break; + case "n": + if (implicitKey || json2[i + 2] === '"' || json2.length < minMultiLineLength) { + i += 1; + } else { + str2 += json2.slice(start, i) + "\n\n"; + while (json2[i + 2] === "\\" && json2[i + 3] === "n" && json2[i + 4] !== '"') { + str2 += "\n"; + i += 2; + } + str2 += indent; + if (json2[i + 2] === " ") + str2 += "\\"; + i += 1; + start = i + 1; + } + break; + default: + i += 1; + } + } + str2 = start ? str2 + json2.slice(start) : json2; + return implicitKey ? str2 : foldFlowLines(str2, indent, FOLD_QUOTED, getFoldOptions(ctx)); + } + function singleQuotedString(value, ctx) { + if (ctx.implicitKey) { + if (/\n/.test(value)) + return doubleQuotedString(value, ctx); + } else { + if (/[ \t]\n|\n[ \t]/.test(value)) + return doubleQuotedString(value, ctx); + } + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$& +${indent}`) + "'"; + return ctx.implicitKey ? res : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx)); + } + function blockString({ + comment, + type: type2, + value + }, ctx, onComment, onChompKeep) { + if (/\n[\t ]+$/.test(value) || /^\s*$/.test(value)) { + return doubleQuotedString(value, ctx); + } + const indent = ctx.indent || (ctx.forceBlockIndent || containsDocumentMarker(value) ? " " : ""); + const indentSize = indent ? "2" : "1"; + const literal = type2 === PlainValue.Type.BLOCK_FOLDED ? false : type2 === PlainValue.Type.BLOCK_LITERAL ? true : !lineLengthOverLimit(value, strOptions.fold.lineWidth, indent.length); + let header = literal ? "|" : ">"; + if (!value) + return header + "\n"; + let wsStart = ""; + let wsEnd = ""; + value = value.replace(/[\n\t ]*$/, (ws) => { + const n = ws.indexOf("\n"); + if (n === -1) { + header += "-"; + } else if (value === ws || n !== ws.length - 1) { + header += "+"; + if (onChompKeep) + onChompKeep(); + } + wsEnd = ws.replace(/\n$/, ""); + return ""; + }).replace(/^[\n ]*/, (ws) => { + if (ws.indexOf(" ") !== -1) + header += indentSize; + const m = ws.match(/ +$/); + if (m) { + wsStart = ws.slice(0, -m[0].length); + return m[0]; + } else { + wsStart = ws; + return ""; + } + }); + if (wsEnd) + wsEnd = wsEnd.replace(/\n+(?!\n|$)/g, `$&${indent}`); + if (wsStart) + wsStart = wsStart.replace(/\n+/g, `$&${indent}`); + if (comment) { + header += " #" + comment.replace(/ ?[\r\n]+/g, " "); + if (onComment) + onComment(); + } + if (!value) + return `${header}${indentSize} +${indent}${wsEnd}`; + if (literal) { + value = value.replace(/\n+/g, `$&${indent}`); + return `${header} +${indent}${wsStart}${value}${wsEnd}`; + } + value = value.replace(/\n+/g, "\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, "$1$2").replace(/\n+/g, `$&${indent}`); + const body = foldFlowLines(`${wsStart}${value}${wsEnd}`, indent, FOLD_BLOCK, strOptions.fold); + return `${header} +${indent}${body}`; + } + function plainString(item, ctx, onComment, onChompKeep) { + const { + comment, + type: type2, + value + } = item; + const { + actualString, + implicitKey, + indent, + inFlow + } = ctx; + if (implicitKey && /[\n[\]{},]/.test(value) || inFlow && /[[\]{},]/.test(value)) { + return doubleQuotedString(value, ctx); + } + if (!value || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) { + return implicitKey || inFlow || value.indexOf("\n") === -1 ? value.indexOf('"') !== -1 && value.indexOf("'") === -1 ? singleQuotedString(value, ctx) : doubleQuotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep); + } + if (!implicitKey && !inFlow && type2 !== PlainValue.Type.PLAIN && value.indexOf("\n") !== -1) { + return blockString(item, ctx, onComment, onChompKeep); + } + if (indent === "" && containsDocumentMarker(value)) { + ctx.forceBlockIndent = true; + return blockString(item, ctx, onComment, onChompKeep); + } + const str2 = value.replace(/\n+/g, `$& +${indent}`); + if (actualString) { + const { + tags + } = ctx.doc.schema; + const resolved = resolveScalar(str2, tags, tags.scalarFallback).value; + if (typeof resolved !== "string") + return doubleQuotedString(value, ctx); + } + const body = implicitKey ? str2 : foldFlowLines(str2, indent, FOLD_FLOW, getFoldOptions(ctx)); + if (comment && !inFlow && (body.indexOf("\n") !== -1 || comment.indexOf("\n") !== -1)) { + if (onComment) + onComment(); + return addCommentBefore(body, indent, comment); + } + return body; + } + function stringifyString(item, ctx, onComment, onChompKeep) { + const { + defaultType + } = strOptions; + const { + implicitKey, + inFlow + } = ctx; + let { + type: type2, + value + } = item; + if (typeof value !== "string") { + value = String(value); + item = Object.assign({}, item, { + value + }); + } + const _stringify = (_type) => { + switch (_type) { + case PlainValue.Type.BLOCK_FOLDED: + case PlainValue.Type.BLOCK_LITERAL: + return blockString(item, ctx, onComment, onChompKeep); + case PlainValue.Type.QUOTE_DOUBLE: + return doubleQuotedString(value, ctx); + case PlainValue.Type.QUOTE_SINGLE: + return singleQuotedString(value, ctx); + case PlainValue.Type.PLAIN: + return plainString(item, ctx, onComment, onChompKeep); + default: + return null; + } + }; + if (type2 !== PlainValue.Type.QUOTE_DOUBLE && /[\x00-\x08\x0b-\x1f\x7f-\x9f]/.test(value)) { + type2 = PlainValue.Type.QUOTE_DOUBLE; + } else if ((implicitKey || inFlow) && (type2 === PlainValue.Type.BLOCK_FOLDED || type2 === PlainValue.Type.BLOCK_LITERAL)) { + type2 = PlainValue.Type.QUOTE_DOUBLE; + } + let res = _stringify(type2); + if (res === null) { + res = _stringify(defaultType); + if (res === null) + throw new Error(`Unsupported default string type ${defaultType}`); + } + return res; + } + function stringifyNumber({ + format: format2, + minFractionDigits, + tag, + value + }) { + if (typeof value === "bigint") + return String(value); + if (!isFinite(value)) + return isNaN(value) ? ".nan" : value < 0 ? "-.inf" : ".inf"; + let n = JSON.stringify(value); + if (!format2 && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) { + let i = n.indexOf("."); + if (i < 0) { + i = n.length; + n += "."; + } + let d = minFractionDigits - (n.length - i - 1); + while (d-- > 0) + n += "0"; + } + return n; + } + function checkFlowCollectionEnd(errors, cst) { + let char, name; + switch (cst.type) { + case PlainValue.Type.FLOW_MAP: + char = "}"; + name = "flow map"; + break; + case PlainValue.Type.FLOW_SEQ: + char = "]"; + name = "flow sequence"; + break; + default: + errors.push(new PlainValue.YAMLSemanticError(cst, "Not a flow collection!?")); + return; + } + let lastItem; + for (let i = cst.items.length - 1; i >= 0; --i) { + const item = cst.items[i]; + if (!item || item.type !== PlainValue.Type.COMMENT) { + lastItem = item; + break; + } + } + if (lastItem && lastItem.char !== char) { + const msg = `Expected ${name} to end with ${char}`; + let err; + if (typeof lastItem.offset === "number") { + err = new PlainValue.YAMLSemanticError(cst, msg); + err.offset = lastItem.offset + 1; + } else { + err = new PlainValue.YAMLSemanticError(lastItem, msg); + if (lastItem.range && lastItem.range.end) + err.offset = lastItem.range.end - lastItem.range.start; + } + errors.push(err); + } + } + function checkFlowCommentSpace(errors, comment) { + const prev = comment.context.src[comment.range.start - 1]; + if (prev !== "\n" && prev !== " " && prev !== " ") { + const msg = "Comments must be separated from other tokens by white space characters"; + errors.push(new PlainValue.YAMLSemanticError(comment, msg)); + } + } + function getLongKeyError(source, key) { + const sk = String(key); + const k = sk.substr(0, 8) + "..." + sk.substr(-8); + return new PlainValue.YAMLSemanticError(source, `The "${k}" key is too long`); + } + function resolveComments(collection, comments) { + for (const { + afterKey, + before, + comment + } of comments) { + let item = collection.items[before]; + if (!item) { + if (comment !== void 0) { + if (collection.comment) + collection.comment += "\n" + comment; + else + collection.comment = comment; + } + } else { + if (afterKey && item.value) + item = item.value; + if (comment === void 0) { + if (afterKey || !item.commentBefore) + item.spaceBefore = true; + } else { + if (item.commentBefore) + item.commentBefore += "\n" + comment; + else + item.commentBefore = comment; + } + } + } + } + function resolveString(doc, node) { + const res = node.strValue; + if (!res) + return ""; + if (typeof res === "string") + return res; + res.errors.forEach((error2) => { + if (!error2.source) + error2.source = node; + doc.errors.push(error2); + }); + return res.str; + } + function resolveTagHandle(doc, node) { + const { + handle, + suffix + } = node.tag; + let prefix = doc.tagPrefixes.find((p) => p.handle === handle); + if (!prefix) { + const dtp = doc.getDefaults().tagPrefixes; + if (dtp) + prefix = dtp.find((p) => p.handle === handle); + if (!prefix) + throw new PlainValue.YAMLSemanticError(node, `The ${handle} tag handle is non-default and was not declared.`); + } + if (!suffix) + throw new PlainValue.YAMLSemanticError(node, `The ${handle} tag has no suffix.`); + if (handle === "!" && (doc.version || doc.options.version) === "1.0") { + if (suffix[0] === "^") { + doc.warnings.push(new PlainValue.YAMLWarning(node, "YAML 1.0 ^ tag expansion is not supported")); + return suffix; + } + if (/[:/]/.test(suffix)) { + const vocab = suffix.match(/^([a-z0-9-]+)\/(.*)/i); + return vocab ? `tag:${vocab[1]}.yaml.org,2002:${vocab[2]}` : `tag:${suffix}`; + } + } + return prefix.prefix + decodeURIComponent(suffix); + } + function resolveTagName(doc, node) { + const { + tag, + type: type2 + } = node; + let nonSpecific = false; + if (tag) { + const { + handle, + suffix, + verbatim + } = tag; + if (verbatim) { + if (verbatim !== "!" && verbatim !== "!!") + return verbatim; + const msg = `Verbatim tags aren't resolved, so ${verbatim} is invalid.`; + doc.errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } else if (handle === "!" && !suffix) { + nonSpecific = true; + } else { + try { + return resolveTagHandle(doc, node); + } catch (error2) { + doc.errors.push(error2); + } + } + } + switch (type2) { + case PlainValue.Type.BLOCK_FOLDED: + case PlainValue.Type.BLOCK_LITERAL: + case PlainValue.Type.QUOTE_DOUBLE: + case PlainValue.Type.QUOTE_SINGLE: + return PlainValue.defaultTags.STR; + case PlainValue.Type.FLOW_MAP: + case PlainValue.Type.MAP: + return PlainValue.defaultTags.MAP; + case PlainValue.Type.FLOW_SEQ: + case PlainValue.Type.SEQ: + return PlainValue.defaultTags.SEQ; + case PlainValue.Type.PLAIN: + return nonSpecific ? PlainValue.defaultTags.STR : null; + default: + return null; + } + } + function resolveByTagName(doc, node, tagName) { + const { + tags + } = doc.schema; + const matchWithTest = []; + for (const tag of tags) { + if (tag.tag === tagName) { + if (tag.test) + matchWithTest.push(tag); + else { + const res = tag.resolve(doc, node); + return res instanceof Collection ? res : new Scalar(res); + } + } + } + const str2 = resolveString(doc, node); + if (typeof str2 === "string" && matchWithTest.length > 0) + return resolveScalar(str2, matchWithTest, tags.scalarFallback); + return null; + } + function getFallbackTagName({ + type: type2 + }) { + switch (type2) { + case PlainValue.Type.FLOW_MAP: + case PlainValue.Type.MAP: + return PlainValue.defaultTags.MAP; + case PlainValue.Type.FLOW_SEQ: + case PlainValue.Type.SEQ: + return PlainValue.defaultTags.SEQ; + default: + return PlainValue.defaultTags.STR; + } + } + function resolveTag(doc, node, tagName) { + try { + const res = resolveByTagName(doc, node, tagName); + if (res) { + if (tagName && node.tag) + res.tag = tagName; + return res; + } + } catch (error2) { + if (!error2.source) + error2.source = node; + doc.errors.push(error2); + return null; + } + try { + const fallback = getFallbackTagName(node); + if (!fallback) + throw new Error(`The tag ${tagName} is unavailable`); + const msg = `The tag ${tagName} is unavailable, falling back to ${fallback}`; + doc.warnings.push(new PlainValue.YAMLWarning(node, msg)); + const res = resolveByTagName(doc, node, fallback); + res.tag = tagName; + return res; + } catch (error2) { + const refError = new PlainValue.YAMLReferenceError(node, error2.message); + refError.stack = error2.stack; + doc.errors.push(refError); + return null; + } + } + var isCollectionItem = (node) => { + if (!node) + return false; + const { + type: type2 + } = node; + return type2 === PlainValue.Type.MAP_KEY || type2 === PlainValue.Type.MAP_VALUE || type2 === PlainValue.Type.SEQ_ITEM; + }; + function resolveNodeProps(errors, node) { + const comments = { + before: [], + after: [] + }; + let hasAnchor = false; + let hasTag = false; + const props = isCollectionItem(node.context.parent) ? node.context.parent.props.concat(node.props) : node.props; + for (const { + start, + end + } of props) { + switch (node.context.src[start]) { + case PlainValue.Char.COMMENT: { + if (!node.commentHasRequiredWhitespace(start)) { + const msg = "Comments must be separated from other tokens by white space characters"; + errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + const { + header, + valueRange + } = node; + const cc = valueRange && (start > valueRange.start || header && start > header.start) ? comments.after : comments.before; + cc.push(node.context.src.slice(start + 1, end)); + break; + } + case PlainValue.Char.ANCHOR: + if (hasAnchor) { + const msg = "A node can have at most one anchor"; + errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + hasAnchor = true; + break; + case PlainValue.Char.TAG: + if (hasTag) { + const msg = "A node can have at most one tag"; + errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + hasTag = true; + break; + } + } + return { + comments, + hasAnchor, + hasTag + }; + } + function resolveNodeValue(doc, node) { + const { + anchors, + errors, + schema: schema2 + } = doc; + if (node.type === PlainValue.Type.ALIAS) { + const name = node.rawValue; + const src = anchors.getNode(name); + if (!src) { + const msg = `Aliased anchor not found: ${name}`; + errors.push(new PlainValue.YAMLReferenceError(node, msg)); + return null; + } + const res = new Alias(src); + anchors._cstAliases.push(res); + return res; + } + const tagName = resolveTagName(doc, node); + if (tagName) + return resolveTag(doc, node, tagName); + if (node.type !== PlainValue.Type.PLAIN) { + const msg = `Failed to resolve ${node.type} node here`; + errors.push(new PlainValue.YAMLSyntaxError(node, msg)); + return null; + } + try { + const str2 = resolveString(doc, node); + return resolveScalar(str2, schema2.tags, schema2.tags.scalarFallback); + } catch (error2) { + if (!error2.source) + error2.source = node; + errors.push(error2); + return null; + } + } + function resolveNode(doc, node) { + if (!node) + return null; + if (node.error) + doc.errors.push(node.error); + const { + comments, + hasAnchor, + hasTag + } = resolveNodeProps(doc.errors, node); + if (hasAnchor) { + const { + anchors + } = doc; + const name = node.anchor; + const prev = anchors.getNode(name); + if (prev) + anchors.map[anchors.newName(name)] = prev; + anchors.map[name] = node; + } + if (node.type === PlainValue.Type.ALIAS && (hasAnchor || hasTag)) { + const msg = "An alias node must not specify any properties"; + doc.errors.push(new PlainValue.YAMLSemanticError(node, msg)); + } + const res = resolveNodeValue(doc, node); + if (res) { + res.range = [node.range.start, node.range.end]; + if (doc.options.keepCstNodes) + res.cstNode = node; + if (doc.options.keepNodeTypes) + res.type = node.type; + const cb = comments.before.join("\n"); + if (cb) { + res.commentBefore = res.commentBefore ? `${res.commentBefore} +${cb}` : cb; + } + const ca = comments.after.join("\n"); + if (ca) + res.comment = res.comment ? `${res.comment} +${ca}` : ca; + } + return node.resolved = res; + } + function resolveMap(doc, cst) { + if (cst.type !== PlainValue.Type.MAP && cst.type !== PlainValue.Type.FLOW_MAP) { + const msg = `A ${cst.type} node cannot be resolved as a mapping`; + doc.errors.push(new PlainValue.YAMLSyntaxError(cst, msg)); + return null; + } + const { + comments, + items + } = cst.type === PlainValue.Type.FLOW_MAP ? resolveFlowMapItems(doc, cst) : resolveBlockMapItems(doc, cst); + const map2 = new YAMLMap(); + map2.items = items; + resolveComments(map2, comments); + let hasCollectionKey = false; + for (let i = 0; i < items.length; ++i) { + const { + key: iKey + } = items[i]; + if (iKey instanceof Collection) + hasCollectionKey = true; + if (doc.schema.merge && iKey && iKey.value === MERGE_KEY) { + items[i] = new Merge(items[i]); + const sources = items[i].value.items; + let error2 = null; + sources.some((node) => { + if (node instanceof Alias) { + const { + type: type2 + } = node.source; + if (type2 === PlainValue.Type.MAP || type2 === PlainValue.Type.FLOW_MAP) + return false; + return error2 = "Merge nodes aliases can only point to maps"; + } + return error2 = "Merge nodes can only have Alias nodes as values"; + }); + if (error2) + doc.errors.push(new PlainValue.YAMLSemanticError(cst, error2)); + } else { + for (let j = i + 1; j < items.length; ++j) { + const { + key: jKey + } = items[j]; + if (iKey === jKey || iKey && jKey && Object.prototype.hasOwnProperty.call(iKey, "value") && iKey.value === jKey.value) { + const msg = `Map keys must be unique; "${iKey}" is repeated`; + doc.errors.push(new PlainValue.YAMLSemanticError(cst, msg)); + break; + } + } + } + } + if (hasCollectionKey && !doc.options.mapAsMap) { + const warn = "Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."; + doc.warnings.push(new PlainValue.YAMLWarning(cst, warn)); + } + cst.resolved = map2; + return map2; + } + var valueHasPairComment = ({ + context: { + lineStart, + node, + src + }, + props + }) => { + if (props.length === 0) + return false; + const { + start + } = props[0]; + if (node && start > node.valueRange.start) + return false; + if (src[start] !== PlainValue.Char.COMMENT) + return false; + for (let i = lineStart; i < start; ++i) + if (src[i] === "\n") + return false; + return true; + }; + function resolvePairComment(item, pair) { + if (!valueHasPairComment(item)) + return; + const comment = item.getPropValue(0, PlainValue.Char.COMMENT, true); + let found = false; + const cb = pair.value.commentBefore; + if (cb && cb.startsWith(comment)) { + pair.value.commentBefore = cb.substr(comment.length + 1); + found = true; + } else { + const cc = pair.value.comment; + if (!item.node && cc && cc.startsWith(comment)) { + pair.value.comment = cc.substr(comment.length + 1); + found = true; + } + } + if (found) + pair.comment = comment; + } + function resolveBlockMapItems(doc, cst) { + const comments = []; + const items = []; + let key = void 0; + let keyStart = null; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + switch (item.type) { + case PlainValue.Type.BLANK_LINE: + comments.push({ + afterKey: !!key, + before: items.length + }); + break; + case PlainValue.Type.COMMENT: + comments.push({ + afterKey: !!key, + before: items.length, + comment: item.comment + }); + break; + case PlainValue.Type.MAP_KEY: + if (key !== void 0) + items.push(new Pair(key)); + if (item.error) + doc.errors.push(item.error); + key = resolveNode(doc, item.node); + keyStart = null; + break; + case PlainValue.Type.MAP_VALUE: + { + if (key === void 0) + key = null; + if (item.error) + doc.errors.push(item.error); + if (!item.context.atLineStart && item.node && item.node.type === PlainValue.Type.MAP && !item.node.context.atLineStart) { + const msg = "Nested mappings are not allowed in compact mappings"; + doc.errors.push(new PlainValue.YAMLSemanticError(item.node, msg)); + } + let valueNode = item.node; + if (!valueNode && item.props.length > 0) { + valueNode = new PlainValue.PlainValue(PlainValue.Type.PLAIN, []); + valueNode.context = { + parent: item, + src: item.context.src + }; + const pos = item.range.start + 1; + valueNode.range = { + start: pos, + end: pos + }; + valueNode.valueRange = { + start: pos, + end: pos + }; + if (typeof item.range.origStart === "number") { + const origPos = item.range.origStart + 1; + valueNode.range.origStart = valueNode.range.origEnd = origPos; + valueNode.valueRange.origStart = valueNode.valueRange.origEnd = origPos; + } + } + const pair = new Pair(key, resolveNode(doc, valueNode)); + resolvePairComment(item, pair); + items.push(pair); + if (key && typeof keyStart === "number") { + if (item.range.start > keyStart + 1024) + doc.errors.push(getLongKeyError(cst, key)); + } + key = void 0; + keyStart = null; + } + break; + default: + if (key !== void 0) + items.push(new Pair(key)); + key = resolveNode(doc, item); + keyStart = item.range.start; + if (item.error) + doc.errors.push(item.error); + next: + for (let j = i + 1; ; ++j) { + const nextItem = cst.items[j]; + switch (nextItem && nextItem.type) { + case PlainValue.Type.BLANK_LINE: + case PlainValue.Type.COMMENT: + continue next; + case PlainValue.Type.MAP_VALUE: + break next; + default: { + const msg = "Implicit map keys need to be followed by map values"; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + break next; + } + } + } + if (item.valueRangeContainsNewline) { + const msg = "Implicit map keys need to be on a single line"; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + } + } + } + if (key !== void 0) + items.push(new Pair(key)); + return { + comments, + items + }; + } + function resolveFlowMapItems(doc, cst) { + const comments = []; + const items = []; + let key = void 0; + let explicitKey = false; + let next = "{"; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + if (typeof item.char === "string") { + const { + char, + offset + } = item; + if (char === "?" && key === void 0 && !explicitKey) { + explicitKey = true; + next = ":"; + continue; + } + if (char === ":") { + if (key === void 0) + key = null; + if (next === ":") { + next = ","; + continue; + } + } else { + if (explicitKey) { + if (key === void 0 && char !== ",") + key = null; + explicitKey = false; + } + if (key !== void 0) { + items.push(new Pair(key)); + key = void 0; + if (char === ",") { + next = ":"; + continue; + } + } + } + if (char === "}") { + if (i === cst.items.length - 1) + continue; + } else if (char === next) { + next = ":"; + continue; + } + const msg = `Flow map contains an unexpected ${char}`; + const err = new PlainValue.YAMLSyntaxError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } else if (item.type === PlainValue.Type.BLANK_LINE) { + comments.push({ + afterKey: !!key, + before: items.length + }); + } else if (item.type === PlainValue.Type.COMMENT) { + checkFlowCommentSpace(doc.errors, item); + comments.push({ + afterKey: !!key, + before: items.length, + comment: item.comment + }); + } else if (key === void 0) { + if (next === ",") + doc.errors.push(new PlainValue.YAMLSemanticError(item, "Separator , missing in flow map")); + key = resolveNode(doc, item); + } else { + if (next !== ",") + doc.errors.push(new PlainValue.YAMLSemanticError(item, "Indicator : missing in flow map entry")); + items.push(new Pair(key, resolveNode(doc, item))); + key = void 0; + explicitKey = false; + } + } + checkFlowCollectionEnd(doc.errors, cst); + if (key !== void 0) + items.push(new Pair(key)); + return { + comments, + items + }; + } + function resolveSeq(doc, cst) { + if (cst.type !== PlainValue.Type.SEQ && cst.type !== PlainValue.Type.FLOW_SEQ) { + const msg = `A ${cst.type} node cannot be resolved as a sequence`; + doc.errors.push(new PlainValue.YAMLSyntaxError(cst, msg)); + return null; + } + const { + comments, + items + } = cst.type === PlainValue.Type.FLOW_SEQ ? resolveFlowSeqItems(doc, cst) : resolveBlockSeqItems(doc, cst); + const seq2 = new YAMLSeq(); + seq2.items = items; + resolveComments(seq2, comments); + if (!doc.options.mapAsMap && items.some((it) => it instanceof Pair && it.key instanceof Collection)) { + const warn = "Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."; + doc.warnings.push(new PlainValue.YAMLWarning(cst, warn)); + } + cst.resolved = seq2; + return seq2; + } + function resolveBlockSeqItems(doc, cst) { + const comments = []; + const items = []; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + switch (item.type) { + case PlainValue.Type.BLANK_LINE: + comments.push({ + before: items.length + }); + break; + case PlainValue.Type.COMMENT: + comments.push({ + comment: item.comment, + before: items.length + }); + break; + case PlainValue.Type.SEQ_ITEM: + if (item.error) + doc.errors.push(item.error); + items.push(resolveNode(doc, item.node)); + if (item.hasProps) { + const msg = "Sequence items cannot have tags or anchors before the - indicator"; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + } + break; + default: + if (item.error) + doc.errors.push(item.error); + doc.errors.push(new PlainValue.YAMLSyntaxError(item, `Unexpected ${item.type} node in sequence`)); + } + } + return { + comments, + items + }; + } + function resolveFlowSeqItems(doc, cst) { + const comments = []; + const items = []; + let explicitKey = false; + let key = void 0; + let keyStart = null; + let next = "["; + let prevItem = null; + for (let i = 0; i < cst.items.length; ++i) { + const item = cst.items[i]; + if (typeof item.char === "string") { + const { + char, + offset + } = item; + if (char !== ":" && (explicitKey || key !== void 0)) { + if (explicitKey && key === void 0) + key = next ? items.pop() : null; + items.push(new Pair(key)); + explicitKey = false; + key = void 0; + keyStart = null; + } + if (char === next) { + next = null; + } else if (!next && char === "?") { + explicitKey = true; + } else if (next !== "[" && char === ":" && key === void 0) { + if (next === ",") { + key = items.pop(); + if (key instanceof Pair) { + const msg = "Chaining flow sequence pairs is invalid"; + const err = new PlainValue.YAMLSemanticError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } + if (!explicitKey && typeof keyStart === "number") { + const keyEnd = item.range ? item.range.start : item.offset; + if (keyEnd > keyStart + 1024) + doc.errors.push(getLongKeyError(cst, key)); + const { + src + } = prevItem.context; + for (let i2 = keyStart; i2 < keyEnd; ++i2) + if (src[i2] === "\n") { + const msg = "Implicit keys of flow sequence pairs need to be on a single line"; + doc.errors.push(new PlainValue.YAMLSemanticError(prevItem, msg)); + break; + } + } + } else { + key = null; + } + keyStart = null; + explicitKey = false; + next = null; + } else if (next === "[" || char !== "]" || i < cst.items.length - 1) { + const msg = `Flow sequence contains an unexpected ${char}`; + const err = new PlainValue.YAMLSyntaxError(cst, msg); + err.offset = offset; + doc.errors.push(err); + } + } else if (item.type === PlainValue.Type.BLANK_LINE) { + comments.push({ + before: items.length + }); + } else if (item.type === PlainValue.Type.COMMENT) { + checkFlowCommentSpace(doc.errors, item); + comments.push({ + comment: item.comment, + before: items.length + }); + } else { + if (next) { + const msg = `Expected a ${next} in flow sequence`; + doc.errors.push(new PlainValue.YAMLSemanticError(item, msg)); + } + const value = resolveNode(doc, item); + if (key === void 0) { + items.push(value); + prevItem = item; + } else { + items.push(new Pair(key, value)); + key = void 0; + } + keyStart = item.range.start; + next = ","; + } + } + checkFlowCollectionEnd(doc.errors, cst); + if (key !== void 0) + items.push(new Pair(key)); + return { + comments, + items + }; + } + exports2.Alias = Alias; + exports2.Collection = Collection; + exports2.Merge = Merge; + exports2.Node = Node; + exports2.Pair = Pair; + exports2.Scalar = Scalar; + exports2.YAMLMap = YAMLMap; + exports2.YAMLSeq = YAMLSeq; + exports2.addComment = addComment; + exports2.binaryOptions = binaryOptions; + exports2.boolOptions = boolOptions; + exports2.findPair = findPair; + exports2.intOptions = intOptions; + exports2.isEmptyPath = isEmptyPath; + exports2.nullOptions = nullOptions; + exports2.resolveMap = resolveMap; + exports2.resolveNode = resolveNode; + exports2.resolveSeq = resolveSeq; + exports2.resolveString = resolveString; + exports2.strOptions = strOptions; + exports2.stringifyNumber = stringifyNumber; + exports2.stringifyString = stringifyString; + exports2.toJSON = toJSON; + } + }); + var require_warnings_1000a372 = __commonJS2({ + "node_modules/yaml/dist/warnings-1000a372.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var resolveSeq = require_resolveSeq_d03cb037(); + var binary2 = { + identify: (value) => value instanceof Uint8Array, + default: false, + tag: "tag:yaml.org,2002:binary", + resolve: (doc, node) => { + const src = resolveSeq.resolveString(doc, node); + if (typeof Buffer === "function") { + return Buffer.from(src, "base64"); + } else if (typeof atob === "function") { + const str2 = atob(src.replace(/[\n\r]/g, "")); + const buffer = new Uint8Array(str2.length); + for (let i = 0; i < str2.length; ++i) + buffer[i] = str2.charCodeAt(i); + return buffer; + } else { + const msg = "This environment does not support reading binary tags; either Buffer or atob is required"; + doc.errors.push(new PlainValue.YAMLReferenceError(node, msg)); + return null; + } + }, + options: resolveSeq.binaryOptions, + stringify: ({ + comment, + type: type2, + value + }, ctx, onComment, onChompKeep) => { + let src; + if (typeof Buffer === "function") { + src = value instanceof Buffer ? value.toString("base64") : Buffer.from(value.buffer).toString("base64"); + } else if (typeof btoa === "function") { + let s = ""; + for (let i = 0; i < value.length; ++i) + s += String.fromCharCode(value[i]); + src = btoa(s); + } else { + throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required"); + } + if (!type2) + type2 = resolveSeq.binaryOptions.defaultType; + if (type2 === PlainValue.Type.QUOTE_DOUBLE) { + value = src; + } else { + const { + lineWidth + } = resolveSeq.binaryOptions; + const n = Math.ceil(src.length / lineWidth); + const lines = new Array(n); + for (let i = 0, o = 0; i < n; ++i, o += lineWidth) { + lines[i] = src.substr(o, lineWidth); + } + value = lines.join(type2 === PlainValue.Type.BLOCK_LITERAL ? "\n" : " "); + } + return resolveSeq.stringifyString({ + comment, + type: type2, + value + }, ctx, onComment, onChompKeep); + } + }; + function parsePairs(doc, cst) { + const seq2 = resolveSeq.resolveSeq(doc, cst); + for (let i = 0; i < seq2.items.length; ++i) { + let item = seq2.items[i]; + if (item instanceof resolveSeq.Pair) + continue; + else if (item instanceof resolveSeq.YAMLMap) { + if (item.items.length > 1) { + const msg = "Each pair must have its own sequence indicator"; + throw new PlainValue.YAMLSemanticError(cst, msg); + } + const pair = item.items[0] || new resolveSeq.Pair(); + if (item.commentBefore) + pair.commentBefore = pair.commentBefore ? `${item.commentBefore} +${pair.commentBefore}` : item.commentBefore; + if (item.comment) + pair.comment = pair.comment ? `${item.comment} +${pair.comment}` : item.comment; + item = pair; + } + seq2.items[i] = item instanceof resolveSeq.Pair ? item : new resolveSeq.Pair(item); + } + return seq2; + } + function createPairs(schema2, iterable, ctx) { + const pairs22 = new resolveSeq.YAMLSeq(schema2); + pairs22.tag = "tag:yaml.org,2002:pairs"; + for (const it of iterable) { + let key, value; + if (Array.isArray(it)) { + if (it.length === 2) { + key = it[0]; + value = it[1]; + } else + throw new TypeError(`Expected [key, value] tuple: ${it}`); + } else if (it && it instanceof Object) { + const keys = Object.keys(it); + if (keys.length === 1) { + key = keys[0]; + value = it[key]; + } else + throw new TypeError(`Expected { key: value } tuple: ${it}`); + } else { + key = it; + } + const pair = schema2.createPair(key, value, ctx); + pairs22.items.push(pair); + } + return pairs22; + } + var pairs2 = { + default: false, + tag: "tag:yaml.org,2002:pairs", + resolve: parsePairs, + createNode: createPairs + }; + var YAMLOMap = class extends resolveSeq.YAMLSeq { + constructor() { + super(); + PlainValue._defineProperty(this, "add", resolveSeq.YAMLMap.prototype.add.bind(this)); + PlainValue._defineProperty(this, "delete", resolveSeq.YAMLMap.prototype.delete.bind(this)); + PlainValue._defineProperty(this, "get", resolveSeq.YAMLMap.prototype.get.bind(this)); + PlainValue._defineProperty(this, "has", resolveSeq.YAMLMap.prototype.has.bind(this)); + PlainValue._defineProperty(this, "set", resolveSeq.YAMLMap.prototype.set.bind(this)); + this.tag = YAMLOMap.tag; + } + toJSON(_, ctx) { + const map2 = /* @__PURE__ */ new Map(); + if (ctx && ctx.onCreate) + ctx.onCreate(map2); + for (const pair of this.items) { + let key, value; + if (pair instanceof resolveSeq.Pair) { + key = resolveSeq.toJSON(pair.key, "", ctx); + value = resolveSeq.toJSON(pair.value, key, ctx); + } else { + key = resolveSeq.toJSON(pair, "", ctx); + } + if (map2.has(key)) + throw new Error("Ordered maps must not include duplicate keys"); + map2.set(key, value); + } + return map2; + } + }; + PlainValue._defineProperty(YAMLOMap, "tag", "tag:yaml.org,2002:omap"); + function parseOMap(doc, cst) { + const pairs22 = parsePairs(doc, cst); + const seenKeys = []; + for (const { + key + } of pairs22.items) { + if (key instanceof resolveSeq.Scalar) { + if (seenKeys.includes(key.value)) { + const msg = "Ordered maps must not include duplicate keys"; + throw new PlainValue.YAMLSemanticError(cst, msg); + } else { + seenKeys.push(key.value); + } + } + } + return Object.assign(new YAMLOMap(), pairs22); + } + function createOMap(schema2, iterable, ctx) { + const pairs22 = createPairs(schema2, iterable, ctx); + const omap22 = new YAMLOMap(); + omap22.items = pairs22.items; + return omap22; + } + var omap2 = { + identify: (value) => value instanceof Map, + nodeClass: YAMLOMap, + default: false, + tag: "tag:yaml.org,2002:omap", + resolve: parseOMap, + createNode: createOMap + }; + var YAMLSet = class extends resolveSeq.YAMLMap { + constructor() { + super(); + this.tag = YAMLSet.tag; + } + add(key) { + const pair = key instanceof resolveSeq.Pair ? key : new resolveSeq.Pair(key); + const prev = resolveSeq.findPair(this.items, pair.key); + if (!prev) + this.items.push(pair); + } + get(key, keepPair) { + const pair = resolveSeq.findPair(this.items, key); + return !keepPair && pair instanceof resolveSeq.Pair ? pair.key instanceof resolveSeq.Scalar ? pair.key.value : pair.key : pair; + } + set(key, value) { + if (typeof value !== "boolean") + throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`); + const prev = resolveSeq.findPair(this.items, key); + if (prev && !value) { + this.items.splice(this.items.indexOf(prev), 1); + } else if (!prev && value) { + this.items.push(new resolveSeq.Pair(key)); + } + } + toJSON(_, ctx) { + return super.toJSON(_, ctx, Set); + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + if (this.hasAllNullValues()) + return super.toString(ctx, onComment, onChompKeep); + else + throw new Error("Set items must all have null values"); + } + }; + PlainValue._defineProperty(YAMLSet, "tag", "tag:yaml.org,2002:set"); + function parseSet(doc, cst) { + const map2 = resolveSeq.resolveMap(doc, cst); + if (!map2.hasAllNullValues()) + throw new PlainValue.YAMLSemanticError(cst, "Set items must all have null values"); + return Object.assign(new YAMLSet(), map2); + } + function createSet(schema2, iterable, ctx) { + const set22 = new YAMLSet(); + for (const value of iterable) + set22.items.push(schema2.createPair(value, null, ctx)); + return set22; + } + var set2 = { + identify: (value) => value instanceof Set, + nodeClass: YAMLSet, + default: false, + tag: "tag:yaml.org,2002:set", + resolve: parseSet, + createNode: createSet + }; + var parseSexagesimal = (sign, parts) => { + const n = parts.split(":").reduce((n2, p) => n2 * 60 + Number(p), 0); + return sign === "-" ? -n : n; + }; + var stringifySexagesimal = ({ + value + }) => { + if (isNaN(value) || !isFinite(value)) + return resolveSeq.stringifyNumber(value); + let sign = ""; + if (value < 0) { + sign = "-"; + value = Math.abs(value); + } + const parts = [value % 60]; + if (value < 60) { + parts.unshift(0); + } else { + value = Math.round((value - parts[0]) / 60); + parts.unshift(value % 60); + if (value >= 60) { + value = Math.round((value - parts[0]) / 60); + parts.unshift(value); + } + } + return sign + parts.map((n) => n < 10 ? "0" + String(n) : String(n)).join(":").replace(/000000\d*$/, ""); + }; + var intTime = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:int", + format: "TIME", + test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/, + resolve: (str2, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, "")), + stringify: stringifySexagesimal + }; + var floatTime = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "TIME", + test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/, + resolve: (str2, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, "")), + stringify: stringifySexagesimal + }; + var timestamp2 = { + identify: (value) => value instanceof Date, + default: true, + tag: "tag:yaml.org,2002:timestamp", + test: RegExp("^(?:([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?)$"), + resolve: (str2, year, month, day, hour, minute, second, millisec, tz) => { + if (millisec) + millisec = (millisec + "00").substr(1, 3); + let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec || 0); + if (tz && tz !== "Z") { + let d = parseSexagesimal(tz[0], tz.slice(1)); + if (Math.abs(d) < 30) + d *= 60; + date -= 6e4 * d; + } + return new Date(date); + }, + stringify: ({ + value + }) => value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, "") + }; + function shouldWarn(deprecation) { + const env = typeof process !== "undefined" && process.env || {}; + if (deprecation) { + if (typeof YAML_SILENCE_DEPRECATION_WARNINGS !== "undefined") + return !YAML_SILENCE_DEPRECATION_WARNINGS; + return !env.YAML_SILENCE_DEPRECATION_WARNINGS; + } + if (typeof YAML_SILENCE_WARNINGS !== "undefined") + return !YAML_SILENCE_WARNINGS; + return !env.YAML_SILENCE_WARNINGS; + } + function warn(warning, type2) { + if (shouldWarn(false)) { + const emit = typeof process !== "undefined" && process.emitWarning; + if (emit) + emit(warning, type2); + else { + console.warn(type2 ? `${type2}: ${warning}` : warning); + } + } + } + function warnFileDeprecation(filename) { + if (shouldWarn(true)) { + const path2 = filename.replace(/.*yaml[/\\]/i, "").replace(/\.js$/, "").replace(/\\/g, "/"); + warn(`The endpoint 'yaml/${path2}' will be removed in a future release.`, "DeprecationWarning"); + } + } + var warned = {}; + function warnOptionDeprecation(name, alternative) { + if (!warned[name] && shouldWarn(true)) { + warned[name] = true; + let msg = `The option '${name}' will be removed in a future release`; + msg += alternative ? `, use '${alternative}' instead.` : "."; + warn(msg, "DeprecationWarning"); + } + } + exports2.binary = binary2; + exports2.floatTime = floatTime; + exports2.intTime = intTime; + exports2.omap = omap2; + exports2.pairs = pairs2; + exports2.set = set2; + exports2.timestamp = timestamp2; + exports2.warn = warn; + exports2.warnFileDeprecation = warnFileDeprecation; + exports2.warnOptionDeprecation = warnOptionDeprecation; + } + }); + var require_Schema_88e323a7 = __commonJS2({ + "node_modules/yaml/dist/Schema-88e323a7.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var resolveSeq = require_resolveSeq_d03cb037(); + var warnings = require_warnings_1000a372(); + function createMap(schema2, obj, ctx) { + const map22 = new resolveSeq.YAMLMap(schema2); + if (obj instanceof Map) { + for (const [key, value] of obj) + map22.items.push(schema2.createPair(key, value, ctx)); + } else if (obj && typeof obj === "object") { + for (const key of Object.keys(obj)) + map22.items.push(schema2.createPair(key, obj[key], ctx)); + } + if (typeof schema2.sortMapEntries === "function") { + map22.items.sort(schema2.sortMapEntries); + } + return map22; + } + var map2 = { + createNode: createMap, + default: true, + nodeClass: resolveSeq.YAMLMap, + tag: "tag:yaml.org,2002:map", + resolve: resolveSeq.resolveMap + }; + function createSeq(schema2, obj, ctx) { + const seq22 = new resolveSeq.YAMLSeq(schema2); + if (obj && obj[Symbol.iterator]) { + for (const it of obj) { + const v = schema2.createNode(it, ctx.wrapScalars, null, ctx); + seq22.items.push(v); + } + } + return seq22; + } + var seq2 = { + createNode: createSeq, + default: true, + nodeClass: resolveSeq.YAMLSeq, + tag: "tag:yaml.org,2002:seq", + resolve: resolveSeq.resolveSeq + }; + var string = { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: resolveSeq.resolveString, + stringify(item, ctx, onComment, onChompKeep) { + ctx = Object.assign({ + actualString: true + }, ctx); + return resolveSeq.stringifyString(item, ctx, onComment, onChompKeep); + }, + options: resolveSeq.strOptions + }; + var failsafe2 = [map2, seq2, string]; + var intIdentify$2 = (value) => typeof value === "bigint" || Number.isInteger(value); + var intResolve$1 = (src, part, radix) => resolveSeq.intOptions.asBigInt ? BigInt(src) : parseInt(part, radix); + function intStringify$1(node, radix, prefix) { + const { + value + } = node; + if (intIdentify$2(value) && value >= 0) + return prefix + value.toString(radix); + return resolveSeq.stringifyNumber(node); + } + var nullObj = { + identify: (value) => value == null, + createNode: (schema2, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null, + default: true, + tag: "tag:yaml.org,2002:null", + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: () => null, + options: resolveSeq.nullOptions, + stringify: () => resolveSeq.nullOptions.nullStr + }; + var boolObj = { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, + resolve: (str2) => str2[0] === "t" || str2[0] === "T", + options: resolveSeq.boolOptions, + stringify: ({ + value + }) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr + }; + var octObj = { + identify: (value) => intIdentify$2(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^0o([0-7]+)$/, + resolve: (str2, oct) => intResolve$1(str2, oct, 8), + options: resolveSeq.intOptions, + stringify: (node) => intStringify$1(node, 8, "0o") + }; + var intObj = { + identify: intIdentify$2, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^[-+]?[0-9]+$/, + resolve: (str2) => intResolve$1(str2, str2, 10), + options: resolveSeq.intOptions, + stringify: resolveSeq.stringifyNumber + }; + var hexObj = { + identify: (value) => intIdentify$2(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^0x([0-9a-fA-F]+)$/, + resolve: (str2, hex) => intResolve$1(str2, hex, 16), + options: resolveSeq.intOptions, + stringify: (node) => intStringify$1(node, 16, "0x") + }; + var nanObj = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.inf|(\.nan))$/i, + resolve: (str2, nan) => nan ? NaN : str2[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: resolveSeq.stringifyNumber + }; + var expObj = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, + resolve: (str2) => parseFloat(str2), + stringify: ({ + value + }) => Number(value).toExponential() + }; + var floatObj = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:\.([0-9]+)|[0-9]+\.([0-9]*))$/, + resolve(str2, frac1, frac2) { + const frac = frac1 || frac2; + const node = new resolveSeq.Scalar(parseFloat(str2)); + if (frac && frac[frac.length - 1] === "0") + node.minFractionDigits = frac.length; + return node; + }, + stringify: resolveSeq.stringifyNumber + }; + var core3 = failsafe2.concat([nullObj, boolObj, octObj, intObj, hexObj, nanObj, expObj, floatObj]); + var intIdentify$1 = (value) => typeof value === "bigint" || Number.isInteger(value); + var stringifyJSON = ({ + value + }) => JSON.stringify(value); + var json2 = [map2, seq2, { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: resolveSeq.resolveString, + stringify: stringifyJSON + }, { + identify: (value) => value == null, + createNode: (schema2, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null, + default: true, + tag: "tag:yaml.org,2002:null", + test: /^null$/, + resolve: () => null, + stringify: stringifyJSON + }, { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^true|false$/, + resolve: (str2) => str2 === "true", + stringify: stringifyJSON + }, { + identify: intIdentify$1, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^-?(?:0|[1-9][0-9]*)$/, + resolve: (str2) => resolveSeq.intOptions.asBigInt ? BigInt(str2) : parseInt(str2, 10), + stringify: ({ + value + }) => intIdentify$1(value) ? value.toString() : JSON.stringify(value) + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, + resolve: (str2) => parseFloat(str2), + stringify: stringifyJSON + }]; + json2.scalarFallback = (str2) => { + throw new SyntaxError(`Unresolved plain scalar ${JSON.stringify(str2)}`); + }; + var boolStringify = ({ + value + }) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr; + var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); + function intResolve(sign, src, radix) { + let str2 = src.replace(/_/g, ""); + if (resolveSeq.intOptions.asBigInt) { + switch (radix) { + case 2: + str2 = `0b${str2}`; + break; + case 8: + str2 = `0o${str2}`; + break; + case 16: + str2 = `0x${str2}`; + break; + } + const n2 = BigInt(str2); + return sign === "-" ? BigInt(-1) * n2 : n2; + } + const n = parseInt(str2, radix); + return sign === "-" ? -1 * n : n; + } + function intStringify(node, radix, prefix) { + const { + value + } = node; + if (intIdentify(value)) { + const str2 = value.toString(radix); + return value < 0 ? "-" + prefix + str2.substr(1) : prefix + str2; + } + return resolveSeq.stringifyNumber(node); + } + var yaml11 = failsafe2.concat([{ + identify: (value) => value == null, + createNode: (schema2, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null, + default: true, + tag: "tag:yaml.org,2002:null", + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: () => null, + options: resolveSeq.nullOptions, + stringify: () => resolveSeq.nullOptions.nullStr + }, { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, + resolve: () => true, + options: resolveSeq.boolOptions, + stringify: boolStringify + }, { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i, + resolve: () => false, + options: resolveSeq.boolOptions, + stringify: boolStringify + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "BIN", + test: /^([-+]?)0b([0-1_]+)$/, + resolve: (str2, sign, bin) => intResolve(sign, bin, 2), + stringify: (node) => intStringify(node, 2, "0b") + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^([-+]?)0([0-7_]+)$/, + resolve: (str2, sign, oct) => intResolve(sign, oct, 8), + stringify: (node) => intStringify(node, 8, "0") + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^([-+]?)([0-9][0-9_]*)$/, + resolve: (str2, sign, abs) => intResolve(sign, abs, 10), + stringify: resolveSeq.stringifyNumber + }, { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^([-+]?)0x([0-9a-fA-F_]+)$/, + resolve: (str2, sign, hex) => intResolve(sign, hex, 16), + stringify: (node) => intStringify(node, 16, "0x") + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.inf|(\.nan))$/i, + resolve: (str2, nan) => nan ? NaN : str2[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: resolveSeq.stringifyNumber + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/, + resolve: (str2) => parseFloat(str2.replace(/_/g, "")), + stringify: ({ + value + }) => Number(value).toExponential() + }, { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/, + resolve(str2, frac) { + const node = new resolveSeq.Scalar(parseFloat(str2.replace(/_/g, ""))); + if (frac) { + const f = frac.replace(/_/g, ""); + if (f[f.length - 1] === "0") + node.minFractionDigits = f.length; + } + return node; + }, + stringify: resolveSeq.stringifyNumber + }], warnings.binary, warnings.omap, warnings.pairs, warnings.set, warnings.intTime, warnings.floatTime, warnings.timestamp); + var schemas = { + core: core3, + failsafe: failsafe2, + json: json2, + yaml11 + }; + var tags = { + binary: warnings.binary, + bool: boolObj, + float: floatObj, + floatExp: expObj, + floatNaN: nanObj, + floatTime: warnings.floatTime, + int: intObj, + intHex: hexObj, + intOct: octObj, + intTime: warnings.intTime, + map: map2, + null: nullObj, + omap: warnings.omap, + pairs: warnings.pairs, + seq: seq2, + set: warnings.set, + timestamp: warnings.timestamp + }; + function findTagObject(value, tagName, tags2) { + if (tagName) { + const match = tags2.filter((t) => t.tag === tagName); + const tagObj = match.find((t) => !t.format) || match[0]; + if (!tagObj) + throw new Error(`Tag ${tagName} not found`); + return tagObj; + } + return tags2.find((t) => (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format); + } + function createNode(value, tagName, ctx) { + if (value instanceof resolveSeq.Node) + return value; + const { + defaultPrefix, + onTagObj, + prevObjects, + schema: schema2, + wrapScalars + } = ctx; + if (tagName && tagName.startsWith("!!")) + tagName = defaultPrefix + tagName.slice(2); + let tagObj = findTagObject(value, tagName, schema2.tags); + if (!tagObj) { + if (typeof value.toJSON === "function") + value = value.toJSON(); + if (!value || typeof value !== "object") + return wrapScalars ? new resolveSeq.Scalar(value) : value; + tagObj = value instanceof Map ? map2 : value[Symbol.iterator] ? seq2 : map2; + } + if (onTagObj) { + onTagObj(tagObj); + delete ctx.onTagObj; + } + const obj = { + value: void 0, + node: void 0 + }; + if (value && typeof value === "object" && prevObjects) { + const prev = prevObjects.get(value); + if (prev) { + const alias = new resolveSeq.Alias(prev); + ctx.aliasNodes.push(alias); + return alias; + } + obj.value = value; + prevObjects.set(value, obj); + } + obj.node = tagObj.createNode ? tagObj.createNode(ctx.schema, value, ctx) : wrapScalars ? new resolveSeq.Scalar(value) : value; + if (tagName && obj.node instanceof resolveSeq.Node) + obj.node.tag = tagName; + return obj.node; + } + function getSchemaTags(schemas2, knownTags, customTags, schemaId) { + let tags2 = schemas2[schemaId.replace(/\W/g, "")]; + if (!tags2) { + const keys = Object.keys(schemas2).map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown schema "${schemaId}"; use one of ${keys}`); + } + if (Array.isArray(customTags)) { + for (const tag of customTags) + tags2 = tags2.concat(tag); + } else if (typeof customTags === "function") { + tags2 = customTags(tags2.slice()); + } + for (let i = 0; i < tags2.length; ++i) { + const tag = tags2[i]; + if (typeof tag === "string") { + const tagObj = knownTags[tag]; + if (!tagObj) { + const keys = Object.keys(knownTags).map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown custom tag "${tag}"; use one of ${keys}`); + } + tags2[i] = tagObj; + } + } + return tags2; + } + var sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0; + var Schema = class { + constructor({ + customTags, + merge: merge2, + schema: schema2, + sortMapEntries, + tags: deprecatedCustomTags + }) { + this.merge = !!merge2; + this.name = schema2; + this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null; + if (!customTags && deprecatedCustomTags) + warnings.warnOptionDeprecation("tags", "customTags"); + this.tags = getSchemaTags(schemas, tags, customTags || deprecatedCustomTags, schema2); + } + createNode(value, wrapScalars, tagName, ctx) { + const baseCtx = { + defaultPrefix: Schema.defaultPrefix, + schema: this, + wrapScalars + }; + const createCtx = ctx ? Object.assign(ctx, baseCtx) : baseCtx; + return createNode(value, tagName, createCtx); + } + createPair(key, value, ctx) { + if (!ctx) + ctx = { + wrapScalars: true + }; + const k = this.createNode(key, ctx.wrapScalars, null, ctx); + const v = this.createNode(value, ctx.wrapScalars, null, ctx); + return new resolveSeq.Pair(k, v); + } + }; + PlainValue._defineProperty(Schema, "defaultPrefix", PlainValue.defaultTagPrefix); + PlainValue._defineProperty(Schema, "defaultTags", PlainValue.defaultTags); + exports2.Schema = Schema; + } + }); + var require_Document_9b4560a1 = __commonJS2({ + "node_modules/yaml/dist/Document-9b4560a1.js"(exports2) { + "use strict"; + var PlainValue = require_PlainValue_ec8e588e(); + var resolveSeq = require_resolveSeq_d03cb037(); + var Schema = require_Schema_88e323a7(); + var defaultOptions = { + anchorPrefix: "a", + customTags: null, + indent: 2, + indentSeq: true, + keepCstNodes: false, + keepNodeTypes: true, + keepBlobsInJSON: true, + mapAsMap: false, + maxAliasCount: 100, + prettyErrors: false, + simpleKeys: false, + version: "1.2" + }; + var scalarOptions = { + get binary() { + return resolveSeq.binaryOptions; + }, + set binary(opt) { + Object.assign(resolveSeq.binaryOptions, opt); + }, + get bool() { + return resolveSeq.boolOptions; + }, + set bool(opt) { + Object.assign(resolveSeq.boolOptions, opt); + }, + get int() { + return resolveSeq.intOptions; + }, + set int(opt) { + Object.assign(resolveSeq.intOptions, opt); + }, + get null() { + return resolveSeq.nullOptions; + }, + set null(opt) { + Object.assign(resolveSeq.nullOptions, opt); + }, + get str() { + return resolveSeq.strOptions; + }, + set str(opt) { + Object.assign(resolveSeq.strOptions, opt); + } + }; + var documentOptions = { + "1.0": { + schema: "yaml-1.1", + merge: true, + tagPrefixes: [{ + handle: "!", + prefix: PlainValue.defaultTagPrefix + }, { + handle: "!!", + prefix: "tag:private.yaml.org,2002:" + }] + }, + 1.1: { + schema: "yaml-1.1", + merge: true, + tagPrefixes: [{ + handle: "!", + prefix: "!" + }, { + handle: "!!", + prefix: PlainValue.defaultTagPrefix + }] + }, + 1.2: { + schema: "core", + merge: false, + tagPrefixes: [{ + handle: "!", + prefix: "!" + }, { + handle: "!!", + prefix: PlainValue.defaultTagPrefix + }] + } + }; + function stringifyTag(doc, tag) { + if ((doc.version || doc.options.version) === "1.0") { + const priv = tag.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/); + if (priv) + return "!" + priv[1]; + const vocab = tag.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/); + return vocab ? `!${vocab[1]}/${vocab[2]}` : `!${tag.replace(/^tag:/, "")}`; + } + let p = doc.tagPrefixes.find((p2) => tag.indexOf(p2.prefix) === 0); + if (!p) { + const dtp = doc.getDefaults().tagPrefixes; + p = dtp && dtp.find((p2) => tag.indexOf(p2.prefix) === 0); + } + if (!p) + return tag[0] === "!" ? tag : `!<${tag}>`; + const suffix = tag.substr(p.prefix.length).replace(/[!,[\]{}]/g, (ch) => ({ + "!": "%21", + ",": "%2C", + "[": "%5B", + "]": "%5D", + "{": "%7B", + "}": "%7D" + })[ch]); + return p.handle + suffix; + } + function getTagObject(tags, item) { + if (item instanceof resolveSeq.Alias) + return resolveSeq.Alias; + if (item.tag) { + const match = tags.filter((t) => t.tag === item.tag); + if (match.length > 0) + return match.find((t) => t.format === item.format) || match[0]; + } + let tagObj, obj; + if (item instanceof resolveSeq.Scalar) { + obj = item.value; + const match = tags.filter((t) => t.identify && t.identify(obj) || t.class && obj instanceof t.class); + tagObj = match.find((t) => t.format === item.format) || match.find((t) => !t.format); + } else { + obj = item; + tagObj = tags.find((t) => t.nodeClass && obj instanceof t.nodeClass); + } + if (!tagObj) { + const name = obj && obj.constructor ? obj.constructor.name : typeof obj; + throw new Error(`Tag not resolved for ${name} value`); + } + return tagObj; + } + function stringifyProps(node, tagObj, { + anchors, + doc + }) { + const props = []; + const anchor = doc.anchors.getName(node); + if (anchor) { + anchors[anchor] = node; + props.push(`&${anchor}`); + } + if (node.tag) { + props.push(stringifyTag(doc, node.tag)); + } else if (!tagObj.default) { + props.push(stringifyTag(doc, tagObj.tag)); + } + return props.join(" "); + } + function stringify(item, ctx, onComment, onChompKeep) { + const { + anchors, + schema: schema2 + } = ctx.doc; + let tagObj; + if (!(item instanceof resolveSeq.Node)) { + const createCtx = { + aliasNodes: [], + onTagObj: (o) => tagObj = o, + prevObjects: /* @__PURE__ */ new Map() + }; + item = schema2.createNode(item, true, null, createCtx); + for (const alias of createCtx.aliasNodes) { + alias.source = alias.source.node; + let name = anchors.getName(alias.source); + if (!name) { + name = anchors.newName(); + anchors.map[name] = alias.source; + } + } + } + if (item instanceof resolveSeq.Pair) + return item.toString(ctx, onComment, onChompKeep); + if (!tagObj) + tagObj = getTagObject(schema2.tags, item); + const props = stringifyProps(item, tagObj, ctx); + if (props.length > 0) + ctx.indentAtStart = (ctx.indentAtStart || 0) + props.length + 1; + const str2 = typeof tagObj.stringify === "function" ? tagObj.stringify(item, ctx, onComment, onChompKeep) : item instanceof resolveSeq.Scalar ? resolveSeq.stringifyString(item, ctx, onComment, onChompKeep) : item.toString(ctx, onComment, onChompKeep); + if (!props) + return str2; + return item instanceof resolveSeq.Scalar || str2[0] === "{" || str2[0] === "[" ? `${props} ${str2}` : `${props} +${ctx.indent}${str2}`; + } + var Anchors = class { + static validAnchorNode(node) { + return node instanceof resolveSeq.Scalar || node instanceof resolveSeq.YAMLSeq || node instanceof resolveSeq.YAMLMap; + } + constructor(prefix) { + PlainValue._defineProperty(this, "map", /* @__PURE__ */ Object.create(null)); + this.prefix = prefix; + } + createAlias(node, name) { + this.setAnchor(node, name); + return new resolveSeq.Alias(node); + } + createMergePair(...sources) { + const merge2 = new resolveSeq.Merge(); + merge2.value.items = sources.map((s) => { + if (s instanceof resolveSeq.Alias) { + if (s.source instanceof resolveSeq.YAMLMap) + return s; + } else if (s instanceof resolveSeq.YAMLMap) { + return this.createAlias(s); + } + throw new Error("Merge sources must be Map nodes or their Aliases"); + }); + return merge2; + } + getName(node) { + const { + map: map2 + } = this; + return Object.keys(map2).find((a) => map2[a] === node); + } + getNames() { + return Object.keys(this.map); + } + getNode(name) { + return this.map[name]; + } + newName(prefix) { + if (!prefix) + prefix = this.prefix; + const names = Object.keys(this.map); + for (let i = 1; true; ++i) { + const name = `${prefix}${i}`; + if (!names.includes(name)) + return name; + } + } + resolveNodes() { + const { + map: map2, + _cstAliases + } = this; + Object.keys(map2).forEach((a) => { + map2[a] = map2[a].resolved; + }); + _cstAliases.forEach((a) => { + a.source = a.source.resolved; + }); + delete this._cstAliases; + } + setAnchor(node, name) { + if (node != null && !Anchors.validAnchorNode(node)) { + throw new Error("Anchors may only be set for Scalar, Seq and Map nodes"); + } + if (name && /[\x00-\x19\s,[\]{}]/.test(name)) { + throw new Error("Anchor names must not contain whitespace or control characters"); + } + const { + map: map2 + } = this; + const prev = node && Object.keys(map2).find((a) => map2[a] === node); + if (prev) { + if (!name) { + return prev; + } else if (prev !== name) { + delete map2[prev]; + map2[name] = node; + } + } else { + if (!name) { + if (!node) + return null; + name = this.newName(); + } + map2[name] = node; + } + return name; + } + }; + var visit = (node, tags) => { + if (node && typeof node === "object") { + const { + tag + } = node; + if (node instanceof resolveSeq.Collection) { + if (tag) + tags[tag] = true; + node.items.forEach((n) => visit(n, tags)); + } else if (node instanceof resolveSeq.Pair) { + visit(node.key, tags); + visit(node.value, tags); + } else if (node instanceof resolveSeq.Scalar) { + if (tag) + tags[tag] = true; + } + } + return tags; + }; + var listTagNames = (node) => Object.keys(visit(node, {})); + function parseContents(doc, contents) { + const comments = { + before: [], + after: [] + }; + let body = void 0; + let spaceBefore = false; + for (const node of contents) { + if (node.valueRange) { + if (body !== void 0) { + const msg = "Document contains trailing content not separated by a ... or --- line"; + doc.errors.push(new PlainValue.YAMLSyntaxError(node, msg)); + break; + } + const res = resolveSeq.resolveNode(doc, node); + if (spaceBefore) { + res.spaceBefore = true; + spaceBefore = false; + } + body = res; + } else if (node.comment !== null) { + const cc = body === void 0 ? comments.before : comments.after; + cc.push(node.comment); + } else if (node.type === PlainValue.Type.BLANK_LINE) { + spaceBefore = true; + if (body === void 0 && comments.before.length > 0 && !doc.commentBefore) { + doc.commentBefore = comments.before.join("\n"); + comments.before = []; + } + } + } + doc.contents = body || null; + if (!body) { + doc.comment = comments.before.concat(comments.after).join("\n") || null; + } else { + const cb = comments.before.join("\n"); + if (cb) { + const cbNode = body instanceof resolveSeq.Collection && body.items[0] ? body.items[0] : body; + cbNode.commentBefore = cbNode.commentBefore ? `${cb} +${cbNode.commentBefore}` : cb; + } + doc.comment = comments.after.join("\n") || null; + } + } + function resolveTagDirective({ + tagPrefixes + }, directive) { + const [handle, prefix] = directive.parameters; + if (!handle || !prefix) { + const msg = "Insufficient parameters given for %TAG directive"; + throw new PlainValue.YAMLSemanticError(directive, msg); + } + if (tagPrefixes.some((p) => p.handle === handle)) { + const msg = "The %TAG directive must only be given at most once per handle in the same document."; + throw new PlainValue.YAMLSemanticError(directive, msg); + } + return { + handle, + prefix + }; + } + function resolveYamlDirective(doc, directive) { + let [version] = directive.parameters; + if (directive.name === "YAML:1.0") + version = "1.0"; + if (!version) { + const msg = "Insufficient parameters given for %YAML directive"; + throw new PlainValue.YAMLSemanticError(directive, msg); + } + if (!documentOptions[version]) { + const v0 = doc.version || doc.options.version; + const msg = `Document will be parsed as YAML ${v0} rather than YAML ${version}`; + doc.warnings.push(new PlainValue.YAMLWarning(directive, msg)); + } + return version; + } + function parseDirectives(doc, directives, prevDoc) { + const directiveComments = []; + let hasDirectives = false; + for (const directive of directives) { + const { + comment, + name + } = directive; + switch (name) { + case "TAG": + try { + doc.tagPrefixes.push(resolveTagDirective(doc, directive)); + } catch (error2) { + doc.errors.push(error2); + } + hasDirectives = true; + break; + case "YAML": + case "YAML:1.0": + if (doc.version) { + const msg = "The %YAML directive must only be given at most once per document."; + doc.errors.push(new PlainValue.YAMLSemanticError(directive, msg)); + } + try { + doc.version = resolveYamlDirective(doc, directive); + } catch (error2) { + doc.errors.push(error2); + } + hasDirectives = true; + break; + default: + if (name) { + const msg = `YAML only supports %TAG and %YAML directives, and not %${name}`; + doc.warnings.push(new PlainValue.YAMLWarning(directive, msg)); + } + } + if (comment) + directiveComments.push(comment); + } + if (prevDoc && !hasDirectives && (doc.version || prevDoc.version || doc.options.version) === "1.1") { + const copyTagPrefix = ({ + handle, + prefix + }) => ({ + handle, + prefix + }); + doc.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix); + doc.version = prevDoc.version; + } + doc.commentBefore = directiveComments.join("\n") || null; + } + function assertCollection(contents) { + if (contents instanceof resolveSeq.Collection) + return true; + throw new Error("Expected a YAML collection as document contents"); + } + var Document = class { + constructor(options) { + this.anchors = new Anchors(options.anchorPrefix); + this.commentBefore = null; + this.comment = null; + this.contents = null; + this.directivesEndMarker = null; + this.errors = []; + this.options = options; + this.schema = null; + this.tagPrefixes = []; + this.version = null; + this.warnings = []; + } + add(value) { + assertCollection(this.contents); + return this.contents.add(value); + } + addIn(path2, value) { + assertCollection(this.contents); + this.contents.addIn(path2, value); + } + delete(key) { + assertCollection(this.contents); + return this.contents.delete(key); + } + deleteIn(path2) { + if (resolveSeq.isEmptyPath(path2)) { + if (this.contents == null) + return false; + this.contents = null; + return true; + } + assertCollection(this.contents); + return this.contents.deleteIn(path2); + } + getDefaults() { + return Document.defaults[this.version] || Document.defaults[this.options.version] || {}; + } + get(key, keepScalar) { + return this.contents instanceof resolveSeq.Collection ? this.contents.get(key, keepScalar) : void 0; + } + getIn(path2, keepScalar) { + if (resolveSeq.isEmptyPath(path2)) + return !keepScalar && this.contents instanceof resolveSeq.Scalar ? this.contents.value : this.contents; + return this.contents instanceof resolveSeq.Collection ? this.contents.getIn(path2, keepScalar) : void 0; + } + has(key) { + return this.contents instanceof resolveSeq.Collection ? this.contents.has(key) : false; + } + hasIn(path2) { + if (resolveSeq.isEmptyPath(path2)) + return this.contents !== void 0; + return this.contents instanceof resolveSeq.Collection ? this.contents.hasIn(path2) : false; + } + set(key, value) { + assertCollection(this.contents); + this.contents.set(key, value); + } + setIn(path2, value) { + if (resolveSeq.isEmptyPath(path2)) + this.contents = value; + else { + assertCollection(this.contents); + this.contents.setIn(path2, value); + } + } + setSchema(id, customTags) { + if (!id && !customTags && this.schema) + return; + if (typeof id === "number") + id = id.toFixed(1); + if (id === "1.0" || id === "1.1" || id === "1.2") { + if (this.version) + this.version = id; + else + this.options.version = id; + delete this.options.schema; + } else if (id && typeof id === "string") { + this.options.schema = id; + } + if (Array.isArray(customTags)) + this.options.customTags = customTags; + const opt = Object.assign({}, this.getDefaults(), this.options); + this.schema = new Schema.Schema(opt); + } + parse(node, prevDoc) { + if (this.options.keepCstNodes) + this.cstNode = node; + if (this.options.keepNodeTypes) + this.type = "DOCUMENT"; + const { + directives = [], + contents = [], + directivesEndMarker, + error: error2, + valueRange + } = node; + if (error2) { + if (!error2.source) + error2.source = this; + this.errors.push(error2); + } + parseDirectives(this, directives, prevDoc); + if (directivesEndMarker) + this.directivesEndMarker = true; + this.range = valueRange ? [valueRange.start, valueRange.end] : null; + this.setSchema(); + this.anchors._cstAliases = []; + parseContents(this, contents); + this.anchors.resolveNodes(); + if (this.options.prettyErrors) { + for (const error22 of this.errors) + if (error22 instanceof PlainValue.YAMLError) + error22.makePretty(); + for (const warn of this.warnings) + if (warn instanceof PlainValue.YAMLError) + warn.makePretty(); + } + return this; + } + listNonDefaultTags() { + return listTagNames(this.contents).filter((t) => t.indexOf(Schema.Schema.defaultPrefix) !== 0); + } + setTagPrefix(handle, prefix) { + if (handle[0] !== "!" || handle[handle.length - 1] !== "!") + throw new Error("Handle must start and end with !"); + if (prefix) { + const prev = this.tagPrefixes.find((p) => p.handle === handle); + if (prev) + prev.prefix = prefix; + else + this.tagPrefixes.push({ + handle, + prefix + }); + } else { + this.tagPrefixes = this.tagPrefixes.filter((p) => p.handle !== handle); + } + } + toJSON(arg, onAnchor) { + const { + keepBlobsInJSON, + mapAsMap, + maxAliasCount + } = this.options; + const keep = keepBlobsInJSON && (typeof arg !== "string" || !(this.contents instanceof resolveSeq.Scalar)); + const ctx = { + doc: this, + indentStep: " ", + keep, + mapAsMap: keep && !!mapAsMap, + maxAliasCount, + stringify + }; + const anchorNames = Object.keys(this.anchors.map); + if (anchorNames.length > 0) + ctx.anchors = new Map(anchorNames.map((name) => [this.anchors.map[name], { + alias: [], + aliasCount: 0, + count: 1 + }])); + const res = resolveSeq.toJSON(this.contents, arg, ctx); + if (typeof onAnchor === "function" && ctx.anchors) + for (const { + count, + res: res2 + } of ctx.anchors.values()) + onAnchor(res2, count); + return res; + } + toString() { + if (this.errors.length > 0) + throw new Error("Document with errors cannot be stringified"); + const indentSize = this.options.indent; + if (!Number.isInteger(indentSize) || indentSize <= 0) { + const s = JSON.stringify(indentSize); + throw new Error(`"indent" option must be a positive integer, not ${s}`); + } + this.setSchema(); + const lines = []; + let hasDirectives = false; + if (this.version) { + let vd = "%YAML 1.2"; + if (this.schema.name === "yaml-1.1") { + if (this.version === "1.0") + vd = "%YAML:1.0"; + else if (this.version === "1.1") + vd = "%YAML 1.1"; + } + lines.push(vd); + hasDirectives = true; + } + const tagNames = this.listNonDefaultTags(); + this.tagPrefixes.forEach(({ + handle, + prefix + }) => { + if (tagNames.some((t) => t.indexOf(prefix) === 0)) { + lines.push(`%TAG ${handle} ${prefix}`); + hasDirectives = true; + } + }); + if (hasDirectives || this.directivesEndMarker) + lines.push("---"); + if (this.commentBefore) { + if (hasDirectives || !this.directivesEndMarker) + lines.unshift(""); + lines.unshift(this.commentBefore.replace(/^/gm, "#")); + } + const ctx = { + anchors: /* @__PURE__ */ Object.create(null), + doc: this, + indent: "", + indentStep: " ".repeat(indentSize), + stringify + }; + let chompKeep = false; + let contentComment = null; + if (this.contents) { + if (this.contents instanceof resolveSeq.Node) { + if (this.contents.spaceBefore && (hasDirectives || this.directivesEndMarker)) + lines.push(""); + if (this.contents.commentBefore) + lines.push(this.contents.commentBefore.replace(/^/gm, "#")); + ctx.forceBlockIndent = !!this.comment; + contentComment = this.contents.comment; + } + const onChompKeep = contentComment ? null : () => chompKeep = true; + const body = stringify(this.contents, ctx, () => contentComment = null, onChompKeep); + lines.push(resolveSeq.addComment(body, "", contentComment)); + } else if (this.contents !== void 0) { + lines.push(stringify(this.contents, ctx)); + } + if (this.comment) { + if ((!chompKeep || contentComment) && lines[lines.length - 1] !== "") + lines.push(""); + lines.push(this.comment.replace(/^/gm, "#")); + } + return lines.join("\n") + "\n"; + } + }; + PlainValue._defineProperty(Document, "defaults", documentOptions); + exports2.Document = Document; + exports2.defaultOptions = defaultOptions; + exports2.scalarOptions = scalarOptions; + } + }); + var require_dist2 = __commonJS2({ + "node_modules/yaml/dist/index.js"(exports2) { + "use strict"; + var parseCst = require_parse_cst(); + var Document$1 = require_Document_9b4560a1(); + var Schema = require_Schema_88e323a7(); + var PlainValue = require_PlainValue_ec8e588e(); + var warnings = require_warnings_1000a372(); + require_resolveSeq_d03cb037(); + function createNode(value, wrapScalars = true, tag) { + if (tag === void 0 && typeof wrapScalars === "string") { + tag = wrapScalars; + wrapScalars = true; + } + const options = Object.assign({}, Document$1.Document.defaults[Document$1.defaultOptions.version], Document$1.defaultOptions); + const schema2 = new Schema.Schema(options); + return schema2.createNode(value, wrapScalars, tag); + } + var Document = class extends Document$1.Document { + constructor(options) { + super(Object.assign({}, Document$1.defaultOptions, options)); + } + }; + function parseAllDocuments(src, options) { + const stream = []; + let prev; + for (const cstDoc of parseCst.parse(src)) { + const doc = new Document(options); + doc.parse(cstDoc, prev); + stream.push(doc); + prev = doc; + } + return stream; + } + function parseDocument(src, options) { + const cst = parseCst.parse(src); + const doc = new Document(options).parse(cst[0]); + if (cst.length > 1) { + const errMsg = "Source contains multiple documents; please use YAML.parseAllDocuments()"; + doc.errors.unshift(new PlainValue.YAMLSemanticError(cst[1], errMsg)); + } + return doc; + } + function parse(src, options) { + const doc = parseDocument(src, options); + doc.warnings.forEach((warning) => warnings.warn(warning)); + if (doc.errors.length > 0) + throw doc.errors[0]; + return doc.toJSON(); + } + function stringify(value, options) { + const doc = new Document(options); + doc.contents = value; + return String(doc); + } + var YAML = { + createNode, + defaultOptions: Document$1.defaultOptions, + Document, + parse, + parseAllDocuments, + parseCST: parseCst.parse, + parseDocument, + scalarOptions: Document$1.scalarOptions, + stringify + }; + exports2.YAML = YAML; + } + }); + var require_yaml = __commonJS2({ + "node_modules/yaml/index.js"(exports2, module22) { + module22.exports = require_dist2().YAML; + } + }); + var require_loaders = __commonJS2({ + "node_modules/cosmiconfig/dist/loaders.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.loaders = void 0; + var importFresh; + var loadJs = function loadJs2(filepath) { + if (importFresh === void 0) { + importFresh = require_import_fresh(); + } + const result = importFresh(filepath); + return result; + }; + var parseJson; + var loadJson = function loadJson2(filepath, content) { + if (parseJson === void 0) { + parseJson = require_parse_json(); + } + try { + const result = parseJson(content); + return result; + } catch (error2) { + error2.message = `JSON Error in ${filepath}: +${error2.message}`; + throw error2; + } + }; + var yaml; + var loadYaml = function loadYaml2(filepath, content) { + if (yaml === void 0) { + yaml = require_yaml(); + } + try { + const result = yaml.parse(content, { + prettyErrors: true + }); + return result; + } catch (error2) { + error2.message = `YAML Error in ${filepath}: +${error2.message}`; + throw error2; + } + }; + var loaders = { + loadJs, + loadJson, + loadYaml + }; + exports2.loaders = loaders; + } + }); + var require_getPropertyByPath = __commonJS2({ + "node_modules/cosmiconfig/dist/getPropertyByPath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getPropertyByPath = getPropertyByPath; + function getPropertyByPath(source, path2) { + if (typeof path2 === "string" && Object.prototype.hasOwnProperty.call(source, path2)) { + return source[path2]; + } + const parsedPath = typeof path2 === "string" ? path2.split(".") : path2; + return parsedPath.reduce((previous, key) => { + if (previous === void 0) { + return previous; + } + return previous[key]; + }, source); + } + } + }); + var require_ExplorerBase = __commonJS2({ + "node_modules/cosmiconfig/dist/ExplorerBase.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getExtensionDescription = getExtensionDescription; + exports2.ExplorerBase = void 0; + var _path = _interopRequireDefault(require("path")); + var _loaders = require_loaders(); + var _getPropertyByPath = require_getPropertyByPath(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var ExplorerBase = class { + constructor(options) { + if (options.cache === true) { + this.loadCache = /* @__PURE__ */ new Map(); + this.searchCache = /* @__PURE__ */ new Map(); + } + this.config = options; + this.validateConfig(); + } + clearLoadCache() { + if (this.loadCache) { + this.loadCache.clear(); + } + } + clearSearchCache() { + if (this.searchCache) { + this.searchCache.clear(); + } + } + clearCaches() { + this.clearLoadCache(); + this.clearSearchCache(); + } + validateConfig() { + const config = this.config; + config.searchPlaces.forEach((place) => { + const loaderKey = _path.default.extname(place) || "noExt"; + const loader2 = config.loaders[loaderKey]; + if (!loader2) { + throw new Error(`No loader specified for ${getExtensionDescription(place)}, so searchPlaces item "${place}" is invalid`); + } + if (typeof loader2 !== "function") { + throw new Error(`loader for ${getExtensionDescription(place)} is not a function (type provided: "${typeof loader2}"), so searchPlaces item "${place}" is invalid`); + } + }); + } + shouldSearchStopWithResult(result) { + if (result === null) + return false; + if (result.isEmpty && this.config.ignoreEmptySearchPlaces) + return false; + return true; + } + nextDirectoryToSearch(currentDir, currentResult) { + if (this.shouldSearchStopWithResult(currentResult)) { + return null; + } + const nextDir = nextDirUp(currentDir); + if (nextDir === currentDir || currentDir === this.config.stopDir) { + return null; + } + return nextDir; + } + loadPackageProp(filepath, content) { + const parsedContent = _loaders.loaders.loadJson(filepath, content); + const packagePropValue = (0, _getPropertyByPath.getPropertyByPath)(parsedContent, this.config.packageProp); + return packagePropValue || null; + } + getLoaderEntryForFile(filepath) { + if (_path.default.basename(filepath) === "package.json") { + const loader22 = this.loadPackageProp.bind(this); + return loader22; + } + const loaderKey = _path.default.extname(filepath) || "noExt"; + const loader2 = this.config.loaders[loaderKey]; + if (!loader2) { + throw new Error(`No loader specified for ${getExtensionDescription(filepath)}`); + } + return loader2; + } + loadedContentToCosmiconfigResult(filepath, loadedContent) { + if (loadedContent === null) { + return null; + } + if (loadedContent === void 0) { + return { + filepath, + config: void 0, + isEmpty: true + }; + } + return { + config: loadedContent, + filepath + }; + } + validateFilePath(filepath) { + if (!filepath) { + throw new Error("load must pass a non-empty string"); + } + } + }; + exports2.ExplorerBase = ExplorerBase; + function nextDirUp(dir) { + return _path.default.dirname(dir); + } + function getExtensionDescription(filepath) { + const ext = _path.default.extname(filepath); + return ext ? `extension "${ext}"` : "files without extensions"; + } + } + }); + var require_readFile = __commonJS2({ + "node_modules/cosmiconfig/dist/readFile.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.readFile = readFile; + exports2.readFileSync = readFileSync5; + var _fs = _interopRequireDefault(require("fs")); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + async function fsReadFileAsync(pathname, encoding) { + return new Promise((resolve, reject) => { + _fs.default.readFile(pathname, encoding, (error2, contents) => { + if (error2) { + reject(error2); + return; + } + resolve(contents); + }); + }); + } + async function readFile(filepath, options = {}) { + const throwNotFound = options.throwNotFound === true; + try { + const content = await fsReadFileAsync(filepath, "utf8"); + return content; + } catch (error2) { + if (throwNotFound === false && (error2.code === "ENOENT" || error2.code === "EISDIR")) { + return null; + } + throw error2; + } + } + function readFileSync5(filepath, options = {}) { + const throwNotFound = options.throwNotFound === true; + try { + const content = _fs.default.readFileSync(filepath, "utf8"); + return content; + } catch (error2) { + if (throwNotFound === false && (error2.code === "ENOENT" || error2.code === "EISDIR")) { + return null; + } + throw error2; + } + } + } + }); + var require_cacheWrapper = __commonJS2({ + "node_modules/cosmiconfig/dist/cacheWrapper.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.cacheWrapper = cacheWrapper; + exports2.cacheWrapperSync = cacheWrapperSync; + async function cacheWrapper(cache, key, fn) { + const cached = cache.get(key); + if (cached !== void 0) { + return cached; + } + const result = await fn(); + cache.set(key, result); + return result; + } + function cacheWrapperSync(cache, key, fn) { + const cached = cache.get(key); + if (cached !== void 0) { + return cached; + } + const result = fn(); + cache.set(key, result); + return result; + } + } + }); + var require_path_type = __commonJS2({ + "node_modules/path-type/index.js"(exports2) { + "use strict"; + var { + promisify + } = require("util"); + var fs5 = require("fs"); + async function isType(fsStatType, statsMethodName, filePath) { + if (typeof filePath !== "string") { + throw new TypeError(`Expected a string, got ${typeof filePath}`); + } + try { + const stats = await promisify(fs5[fsStatType])(filePath); + return stats[statsMethodName](); + } catch (error2) { + if (error2.code === "ENOENT") { + return false; + } + throw error2; + } + } + function isTypeSync(fsStatType, statsMethodName, filePath) { + if (typeof filePath !== "string") { + throw new TypeError(`Expected a string, got ${typeof filePath}`); + } + try { + return fs5[fsStatType](filePath)[statsMethodName](); + } catch (error2) { + if (error2.code === "ENOENT") { + return false; + } + throw error2; + } + } + exports2.isFile = isType.bind(null, "stat", "isFile"); + exports2.isDirectory = isType.bind(null, "stat", "isDirectory"); + exports2.isSymlink = isType.bind(null, "lstat", "isSymbolicLink"); + exports2.isFileSync = isTypeSync.bind(null, "statSync", "isFile"); + exports2.isDirectorySync = isTypeSync.bind(null, "statSync", "isDirectory"); + exports2.isSymlinkSync = isTypeSync.bind(null, "lstatSync", "isSymbolicLink"); + } + }); + var require_getDirectory = __commonJS2({ + "node_modules/cosmiconfig/dist/getDirectory.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getDirectory = getDirectory; + exports2.getDirectorySync = getDirectorySync; + var _path = _interopRequireDefault(require("path")); + var _pathType = require_path_type(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + async function getDirectory(filepath) { + const filePathIsDirectory = await (0, _pathType.isDirectory)(filepath); + if (filePathIsDirectory === true) { + return filepath; + } + const directory = _path.default.dirname(filepath); + return directory; + } + function getDirectorySync(filepath) { + const filePathIsDirectory = (0, _pathType.isDirectorySync)(filepath); + if (filePathIsDirectory === true) { + return filepath; + } + const directory = _path.default.dirname(filepath); + return directory; + } + } + }); + var require_Explorer = __commonJS2({ + "node_modules/cosmiconfig/dist/Explorer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Explorer = void 0; + var _path = _interopRequireDefault(require("path")); + var _ExplorerBase = require_ExplorerBase(); + var _readFile = require_readFile(); + var _cacheWrapper = require_cacheWrapper(); + var _getDirectory = require_getDirectory(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var Explorer = class extends _ExplorerBase.ExplorerBase { + constructor(options) { + super(options); + } + async search(searchFrom = process.cwd()) { + const startDirectory = await (0, _getDirectory.getDirectory)(searchFrom); + const result = await this.searchFromDirectory(startDirectory); + return result; + } + async searchFromDirectory(dir) { + const absoluteDir = _path.default.resolve(process.cwd(), dir); + const run = async () => { + const result = await this.searchDirectory(absoluteDir); + const nextDir = this.nextDirectoryToSearch(absoluteDir, result); + if (nextDir) { + return this.searchFromDirectory(nextDir); + } + const transformResult = await this.config.transform(result); + return transformResult; + }; + if (this.searchCache) { + return (0, _cacheWrapper.cacheWrapper)(this.searchCache, absoluteDir, run); + } + return run(); + } + async searchDirectory(dir) { + for await (const place of this.config.searchPlaces) { + const placeResult = await this.loadSearchPlace(dir, place); + if (this.shouldSearchStopWithResult(placeResult) === true) { + return placeResult; + } + } + return null; + } + async loadSearchPlace(dir, place) { + const filepath = _path.default.join(dir, place); + const fileContents = await (0, _readFile.readFile)(filepath); + const result = await this.createCosmiconfigResult(filepath, fileContents); + return result; + } + async loadFileContent(filepath, content) { + if (content === null) { + return null; + } + if (content.trim() === "") { + return void 0; + } + const loader2 = this.getLoaderEntryForFile(filepath); + const loaderResult = await loader2(filepath, content); + return loaderResult; + } + async createCosmiconfigResult(filepath, content) { + const fileContent = await this.loadFileContent(filepath, content); + const result = this.loadedContentToCosmiconfigResult(filepath, fileContent); + return result; + } + async load(filepath) { + this.validateFilePath(filepath); + const absoluteFilePath = _path.default.resolve(process.cwd(), filepath); + const runLoad = async () => { + const fileContents = await (0, _readFile.readFile)(absoluteFilePath, { + throwNotFound: true + }); + const result = await this.createCosmiconfigResult(absoluteFilePath, fileContents); + const transformResult = await this.config.transform(result); + return transformResult; + }; + if (this.loadCache) { + return (0, _cacheWrapper.cacheWrapper)(this.loadCache, absoluteFilePath, runLoad); + } + return runLoad(); + } + }; + exports2.Explorer = Explorer; + } + }); + var require_ExplorerSync = __commonJS2({ + "node_modules/cosmiconfig/dist/ExplorerSync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ExplorerSync = void 0; + var _path = _interopRequireDefault(require("path")); + var _ExplorerBase = require_ExplorerBase(); + var _readFile = require_readFile(); + var _cacheWrapper = require_cacheWrapper(); + var _getDirectory = require_getDirectory(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var ExplorerSync = class extends _ExplorerBase.ExplorerBase { + constructor(options) { + super(options); + } + searchSync(searchFrom = process.cwd()) { + const startDirectory = (0, _getDirectory.getDirectorySync)(searchFrom); + const result = this.searchFromDirectorySync(startDirectory); + return result; + } + searchFromDirectorySync(dir) { + const absoluteDir = _path.default.resolve(process.cwd(), dir); + const run = () => { + const result = this.searchDirectorySync(absoluteDir); + const nextDir = this.nextDirectoryToSearch(absoluteDir, result); + if (nextDir) { + return this.searchFromDirectorySync(nextDir); + } + const transformResult = this.config.transform(result); + return transformResult; + }; + if (this.searchCache) { + return (0, _cacheWrapper.cacheWrapperSync)(this.searchCache, absoluteDir, run); + } + return run(); + } + searchDirectorySync(dir) { + for (const place of this.config.searchPlaces) { + const placeResult = this.loadSearchPlaceSync(dir, place); + if (this.shouldSearchStopWithResult(placeResult) === true) { + return placeResult; + } + } + return null; + } + loadSearchPlaceSync(dir, place) { + const filepath = _path.default.join(dir, place); + const content = (0, _readFile.readFileSync)(filepath); + const result = this.createCosmiconfigResultSync(filepath, content); + return result; + } + loadFileContentSync(filepath, content) { + if (content === null) { + return null; + } + if (content.trim() === "") { + return void 0; + } + const loader2 = this.getLoaderEntryForFile(filepath); + const loaderResult = loader2(filepath, content); + return loaderResult; + } + createCosmiconfigResultSync(filepath, content) { + const fileContent = this.loadFileContentSync(filepath, content); + const result = this.loadedContentToCosmiconfigResult(filepath, fileContent); + return result; + } + loadSync(filepath) { + this.validateFilePath(filepath); + const absoluteFilePath = _path.default.resolve(process.cwd(), filepath); + const runLoadSync = () => { + const content = (0, _readFile.readFileSync)(absoluteFilePath, { + throwNotFound: true + }); + const cosmiconfigResult = this.createCosmiconfigResultSync(absoluteFilePath, content); + const transformResult = this.config.transform(cosmiconfigResult); + return transformResult; + }; + if (this.loadCache) { + return (0, _cacheWrapper.cacheWrapperSync)(this.loadCache, absoluteFilePath, runLoadSync); + } + return runLoadSync(); + } + }; + exports2.ExplorerSync = ExplorerSync; + } + }); + var require_types = __commonJS2({ + "node_modules/cosmiconfig/dist/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } + }); + var require_dist22 = __commonJS2({ + "node_modules/cosmiconfig/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.cosmiconfig = cosmiconfig; + exports2.cosmiconfigSync = cosmiconfigSync; + exports2.defaultLoaders = void 0; + var _os = _interopRequireDefault(require("os")); + var _Explorer = require_Explorer(); + var _ExplorerSync = require_ExplorerSync(); + var _loaders = require_loaders(); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + function cosmiconfig(moduleName, options = {}) { + const normalizedOptions = normalizeOptions(moduleName, options); + const explorer = new _Explorer.Explorer(normalizedOptions); + return { + search: explorer.search.bind(explorer), + load: explorer.load.bind(explorer), + clearLoadCache: explorer.clearLoadCache.bind(explorer), + clearSearchCache: explorer.clearSearchCache.bind(explorer), + clearCaches: explorer.clearCaches.bind(explorer) + }; + } + function cosmiconfigSync(moduleName, options = {}) { + const normalizedOptions = normalizeOptions(moduleName, options); + const explorerSync = new _ExplorerSync.ExplorerSync(normalizedOptions); + return { + search: explorerSync.searchSync.bind(explorerSync), + load: explorerSync.loadSync.bind(explorerSync), + clearLoadCache: explorerSync.clearLoadCache.bind(explorerSync), + clearSearchCache: explorerSync.clearSearchCache.bind(explorerSync), + clearCaches: explorerSync.clearCaches.bind(explorerSync) + }; + } + var defaultLoaders = Object.freeze({ + ".cjs": _loaders.loaders.loadJs, + ".js": _loaders.loaders.loadJs, + ".json": _loaders.loaders.loadJson, + ".yaml": _loaders.loaders.loadYaml, + ".yml": _loaders.loaders.loadYaml, + noExt: _loaders.loaders.loadYaml + }); + exports2.defaultLoaders = defaultLoaders; + var identity = function identity2(x) { + return x; + }; + function normalizeOptions(moduleName, options) { + const defaults = { + packageProp: moduleName, + searchPlaces: ["package.json", `.${moduleName}rc`, `.${moduleName}rc.json`, `.${moduleName}rc.yaml`, `.${moduleName}rc.yml`, `.${moduleName}rc.js`, `.${moduleName}rc.cjs`, `${moduleName}.config.js`, `${moduleName}.config.cjs`], + ignoreEmptySearchPlaces: true, + stopDir: _os.default.homedir(), + cache: true, + transform: identity, + loaders: defaultLoaders + }; + const normalizedOptions = Object.assign(Object.assign(Object.assign({}, defaults), options), {}, { + loaders: Object.assign(Object.assign({}, defaults.loaders), options.loaders) + }); + return normalizedOptions; + } + } + }); + var require_find_parent_dir = __commonJS2({ + "node_modules/find-parent-dir/index.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var fs5 = require("fs"); + var exists = fs5.exists || path2.exists; + var existsSync = fs5.existsSync || path2.existsSync; + function splitPath(path22) { + var parts = path22.split(/(\/|\\)/); + if (!parts.length) + return parts; + return !parts[0].length ? parts.slice(1) : parts; + } + exports2 = module22.exports = function(currentFullPath, clue, cb) { + function testDir(parts) { + if (parts.length === 0) + return cb(null, null); + var p = parts.join(""); + exists(path2.join(p, clue), function(itdoes) { + if (itdoes) + return cb(null, p); + testDir(parts.slice(0, -1)); + }); + } + testDir(splitPath(currentFullPath)); + }; + exports2.sync = function(currentFullPath, clue) { + function testDir(parts) { + if (parts.length === 0) + return null; + var p = parts.join(""); + var itdoes = existsSync(path2.join(p, clue)); + return itdoes ? p : testDir(parts.slice(0, -1)); + } + return testDir(splitPath(currentFullPath)); + }; + } + }); + var require_get_stdin = __commonJS2({ + "node_modules/get-stdin/index.js"(exports2, module22) { + "use strict"; + var { + stdin + } = process; + module22.exports = async () => { + let result = ""; + if (stdin.isTTY) { + return result; + } + stdin.setEncoding("utf8"); + for await (const chunk of stdin) { + result += chunk; + } + return result; + }; + module22.exports.buffer = async () => { + const result = []; + let length = 0; + if (stdin.isTTY) { + return Buffer.concat([]); + } + for await (const chunk of stdin) { + result.push(chunk); + length += chunk.length; + } + return Buffer.concat(result, length); + }; + } + }); + var require_vendors = __commonJS2({ + "node_modules/ci-info/vendors.json"(exports2, module22) { + module22.exports = [{ + name: "AppVeyor", + constant: "APPVEYOR", + env: "APPVEYOR", + pr: "APPVEYOR_PULL_REQUEST_NUMBER" + }, { + name: "Azure Pipelines", + constant: "AZURE_PIPELINES", + env: "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI", + pr: "SYSTEM_PULLREQUEST_PULLREQUESTID" + }, { + name: "Appcircle", + constant: "APPCIRCLE", + env: "AC_APPCIRCLE" + }, { + name: "Bamboo", + constant: "BAMBOO", + env: "bamboo_planKey" + }, { + name: "Bitbucket Pipelines", + constant: "BITBUCKET", + env: "BITBUCKET_COMMIT", + pr: "BITBUCKET_PR_ID" + }, { + name: "Bitrise", + constant: "BITRISE", + env: "BITRISE_IO", + pr: "BITRISE_PULL_REQUEST" + }, { + name: "Buddy", + constant: "BUDDY", + env: "BUDDY_WORKSPACE_ID", + pr: "BUDDY_EXECUTION_PULL_REQUEST_ID" + }, { + name: "Buildkite", + constant: "BUILDKITE", + env: "BUILDKITE", + pr: { + env: "BUILDKITE_PULL_REQUEST", + ne: "false" + } + }, { + name: "CircleCI", + constant: "CIRCLE", + env: "CIRCLECI", + pr: "CIRCLE_PULL_REQUEST" + }, { + name: "Cirrus CI", + constant: "CIRRUS", + env: "CIRRUS_CI", + pr: "CIRRUS_PR" + }, { + name: "AWS CodeBuild", + constant: "CODEBUILD", + env: "CODEBUILD_BUILD_ARN" + }, { + name: "Codefresh", + constant: "CODEFRESH", + env: "CF_BUILD_ID", + pr: { + any: ["CF_PULL_REQUEST_NUMBER", "CF_PULL_REQUEST_ID"] + } + }, { + name: "Codeship", + constant: "CODESHIP", + env: { + CI_NAME: "codeship" + } + }, { + name: "Drone", + constant: "DRONE", + env: "DRONE", + pr: { + DRONE_BUILD_EVENT: "pull_request" + } + }, { + name: "dsari", + constant: "DSARI", + env: "DSARI" + }, { + name: "Expo Application Services", + constant: "EAS", + env: "EAS_BUILD" + }, { + name: "GitHub Actions", + constant: "GITHUB_ACTIONS", + env: "GITHUB_ACTIONS", + pr: { + GITHUB_EVENT_NAME: "pull_request" + } + }, { + name: "GitLab CI", + constant: "GITLAB", + env: "GITLAB_CI", + pr: "CI_MERGE_REQUEST_ID" + }, { + name: "GoCD", + constant: "GOCD", + env: "GO_PIPELINE_LABEL" + }, { + name: "LayerCI", + constant: "LAYERCI", + env: "LAYERCI", + pr: "LAYERCI_PULL_REQUEST" + }, { + name: "Hudson", + constant: "HUDSON", + env: "HUDSON_URL" + }, { + name: "Jenkins", + constant: "JENKINS", + env: ["JENKINS_URL", "BUILD_ID"], + pr: { + any: ["ghprbPullId", "CHANGE_ID"] + } + }, { + name: "Magnum CI", + constant: "MAGNUM", + env: "MAGNUM" + }, { + name: "Netlify CI", + constant: "NETLIFY", + env: "NETLIFY", + pr: { + env: "PULL_REQUEST", + ne: "false" + } + }, { + name: "Nevercode", + constant: "NEVERCODE", + env: "NEVERCODE", + pr: { + env: "NEVERCODE_PULL_REQUEST", + ne: "false" + } + }, { + name: "Render", + constant: "RENDER", + env: "RENDER", + pr: { + IS_PULL_REQUEST: "true" + } + }, { + name: "Sail CI", + constant: "SAIL", + env: "SAILCI", + pr: "SAIL_PULL_REQUEST_NUMBER" + }, { + name: "Semaphore", + constant: "SEMAPHORE", + env: "SEMAPHORE", + pr: "PULL_REQUEST_NUMBER" + }, { + name: "Screwdriver", + constant: "SCREWDRIVER", + env: "SCREWDRIVER", + pr: { + env: "SD_PULL_REQUEST", + ne: "false" + } + }, { + name: "Shippable", + constant: "SHIPPABLE", + env: "SHIPPABLE", + pr: { + IS_PULL_REQUEST: "true" + } + }, { + name: "Solano CI", + constant: "SOLANO", + env: "TDDIUM", + pr: "TDDIUM_PR_ID" + }, { + name: "Strider CD", + constant: "STRIDER", + env: "STRIDER" + }, { + name: "TaskCluster", + constant: "TASKCLUSTER", + env: ["TASK_ID", "RUN_ID"] + }, { + name: "TeamCity", + constant: "TEAMCITY", + env: "TEAMCITY_VERSION" + }, { + name: "Travis CI", + constant: "TRAVIS", + env: "TRAVIS", + pr: { + env: "TRAVIS_PULL_REQUEST", + ne: "false" + } + }, { + name: "Vercel", + constant: "VERCEL", + env: "NOW_BUILDER" + }, { + name: "Visual Studio App Center", + constant: "APPCENTER", + env: "APPCENTER_BUILD_ID" + }]; + } + }); + var require_ci_info = __commonJS2({ + "node_modules/ci-info/index.js"(exports2) { + "use strict"; + var vendors = require_vendors(); + var env = process.env; + Object.defineProperty(exports2, "_vendors", { + value: vendors.map(function(v) { + return v.constant; + }) + }); + exports2.name = null; + exports2.isPR = null; + vendors.forEach(function(vendor) { + const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env]; + const isCI = envs.every(function(obj) { + return checkEnv(obj); + }); + exports2[vendor.constant] = isCI; + if (isCI) { + exports2.name = vendor.name; + switch (typeof vendor.pr) { + case "string": + exports2.isPR = !!env[vendor.pr]; + break; + case "object": + if ("env" in vendor.pr) { + exports2.isPR = vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne; + } else if ("any" in vendor.pr) { + exports2.isPR = vendor.pr.any.some(function(key) { + return !!env[key]; + }); + } else { + exports2.isPR = checkEnv(vendor.pr); + } + break; + default: + exports2.isPR = null; + } + } + }); + exports2.isCI = !!(env.CI || env.CONTINUOUS_INTEGRATION || env.BUILD_NUMBER || env.RUN_ID || exports2.name || false); + function checkEnv(obj) { + if (typeof obj === "string") + return !!env[obj]; + return Object.keys(obj).every(function(k) { + return env[k] === obj[k]; + }); + } + } + }); + module2.exports = { + cosmiconfig: require_dist22().cosmiconfig, + cosmiconfigSync: require_dist22().cosmiconfigSync, + findParentDir: require_find_parent_dir().sync, + getStdin: require_get_stdin(), + isCI: () => require_ci_info().isCI + }; + } +}); + +// node_modules/prettier/parser-babel.js +var require_parser_babel = __commonJS({ + "node_modules/prettier/parser-babel.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.babel = e(); + } + })(function() { + "use strict"; + var b = (h, l) => () => (l || h((l = { exports: {} }).exports, l), l.exports); + var G = b((zf, Jr) => { + var Tt = function(h) { + return h && h.Math == Math && h; + }; + Jr.exports = Tt(typeof globalThis == "object" && globalThis) || Tt(typeof window == "object" && window) || Tt(typeof self == "object" && self) || Tt(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var Ae = b((Kf, Yr) => { + Yr.exports = function(h) { + try { + return !!h(); + } catch { + return true; + } + }; + }); + var ke = b((Vf, $r) => { + var hl = Ae(); + $r.exports = !hl(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var Et = b((Hf, Qr) => { + var ll = Ae(); + Qr.exports = !ll(function() { + var h = function() { + }.bind(); + return typeof h != "function" || h.hasOwnProperty("prototype"); + }); + }); + var bt = b((Wf, Zr) => { + var ul = Et(), Ct = Function.prototype.call; + Zr.exports = ul ? Ct.bind(Ct) : function() { + return Ct.apply(Ct, arguments); + }; + }); + var ri = b((si) => { + "use strict"; + var ei = {}.propertyIsEnumerable, ti = Object.getOwnPropertyDescriptor, cl = ti && !ei.call({ 1: 2 }, 1); + si.f = cl ? function(l) { + var p = ti(this, l); + return !!p && p.enumerable; + } : ei; + }); + var ms = b((Xf, ii) => { + ii.exports = function(h, l) { + return { enumerable: !(h & 1), configurable: !(h & 2), writable: !(h & 4), value: l }; + }; + }); + var ie = b((Jf, oi) => { + var ai = Et(), ni = Function.prototype, pl = ni.bind, ys = ni.call, fl = ai && pl.bind(ys, ys); + oi.exports = ai ? function(h) { + return h && fl(h); + } : function(h) { + return h && function() { + return ys.apply(h, arguments); + }; + }; + }); + var vt = b((Yf, li) => { + var hi = ie(), dl = hi({}.toString), ml = hi("".slice); + li.exports = function(h) { + return ml(dl(h), 8, -1); + }; + }); + var ci = b(($f, ui) => { + var yl = G(), xl = ie(), gl = Ae(), Al = vt(), xs = yl.Object, Pl = xl("".split); + ui.exports = gl(function() { + return !xs("z").propertyIsEnumerable(0); + }) ? function(h) { + return Al(h) == "String" ? Pl(h, "") : xs(h); + } : xs; + }); + var gs = b((Qf, pi) => { + var Tl = G(), El = Tl.TypeError; + pi.exports = function(h) { + if (h == null) + throw El("Can't call method on " + h); + return h; + }; + }); + var St = b((Zf, fi) => { + var Cl = ci(), bl = gs(); + fi.exports = function(h) { + return Cl(bl(h)); + }; + }); + var ae = b((ed, di) => { + di.exports = function(h) { + return typeof h == "function"; + }; + }); + var De = b((td, mi) => { + var vl = ae(); + mi.exports = function(h) { + return typeof h == "object" ? h !== null : vl(h); + }; + }); + var Qe = b((sd, yi) => { + var As = G(), Sl = ae(), wl = function(h) { + return Sl(h) ? h : void 0; + }; + yi.exports = function(h, l) { + return arguments.length < 2 ? wl(As[h]) : As[h] && As[h][l]; + }; + }); + var gi = b((rd, xi) => { + var Nl = ie(); + xi.exports = Nl({}.isPrototypeOf); + }); + var Pi = b((id, Ai) => { + var Il = Qe(); + Ai.exports = Il("navigator", "userAgent") || ""; + }); + var wi = b((ad, Si) => { + var vi = G(), Ps = Pi(), Ti = vi.process, Ei = vi.Deno, Ci = Ti && Ti.versions || Ei && Ei.version, bi = Ci && Ci.v8, oe, wt; + bi && (oe = bi.split("."), wt = oe[0] > 0 && oe[0] < 4 ? 1 : +(oe[0] + oe[1])); + !wt && Ps && (oe = Ps.match(/Edge\/(\d+)/), (!oe || oe[1] >= 74) && (oe = Ps.match(/Chrome\/(\d+)/), oe && (wt = +oe[1]))); + Si.exports = wt; + }); + var Ts = b((nd, Ii) => { + var Ni = wi(), kl = Ae(); + Ii.exports = !!Object.getOwnPropertySymbols && !kl(function() { + var h = Symbol(); + return !String(h) || !(Object(h) instanceof Symbol) || !Symbol.sham && Ni && Ni < 41; + }); + }); + var Es = b((od, ki) => { + var Dl = Ts(); + ki.exports = Dl && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var Cs = b((hd, Di) => { + var Fl = G(), Ll = Qe(), Ol = ae(), Bl = gi(), Ml = Es(), Rl = Fl.Object; + Di.exports = Ml ? function(h) { + return typeof h == "symbol"; + } : function(h) { + var l = Ll("Symbol"); + return Ol(l) && Bl(l.prototype, Rl(h)); + }; + }); + var Li = b((ld, Fi) => { + var jl = G(), ql = jl.String; + Fi.exports = function(h) { + try { + return ql(h); + } catch { + return "Object"; + } + }; + }); + var Nt = b((ud, Oi) => { + var Ul = G(), _l = ae(), zl = Li(), Kl = Ul.TypeError; + Oi.exports = function(h) { + if (_l(h)) + return h; + throw Kl(zl(h) + " is not a function"); + }; + }); + var Mi = b((cd, Bi) => { + var Vl = Nt(); + Bi.exports = function(h, l) { + var p = h[l]; + return p == null ? void 0 : Vl(p); + }; + }); + var ji = b((pd, Ri) => { + var Hl = G(), bs = bt(), vs = ae(), Ss = De(), Wl = Hl.TypeError; + Ri.exports = function(h, l) { + var p, d; + if (l === "string" && vs(p = h.toString) && !Ss(d = bs(p, h)) || vs(p = h.valueOf) && !Ss(d = bs(p, h)) || l !== "string" && vs(p = h.toString) && !Ss(d = bs(p, h))) + return d; + throw Wl("Can't convert object to primitive value"); + }; + }); + var Ui = b((fd, qi) => { + qi.exports = false; + }); + var It = b((dd, zi) => { + var _i = G(), Gl = Object.defineProperty; + zi.exports = function(h, l) { + try { + Gl(_i, h, { value: l, configurable: true, writable: true }); + } catch { + _i[h] = l; + } + return l; + }; + }); + var kt = b((md, Vi) => { + var Xl = G(), Jl = It(), Ki = "__core-js_shared__", Yl = Xl[Ki] || Jl(Ki, {}); + Vi.exports = Yl; + }); + var ws = b((yd, Wi) => { + var $l = Ui(), Hi = kt(); + (Wi.exports = function(h, l) { + return Hi[h] || (Hi[h] = l !== void 0 ? l : {}); + })("versions", []).push({ version: "3.22.2", mode: $l ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var Ns = b((xd, Gi) => { + var Ql = G(), Zl = gs(), eu = Ql.Object; + Gi.exports = function(h) { + return eu(Zl(h)); + }; + }); + var be = b((gd, Xi) => { + var tu = ie(), su = Ns(), ru = tu({}.hasOwnProperty); + Xi.exports = Object.hasOwn || function(l, p) { + return ru(su(l), p); + }; + }); + var Is = b((Ad, Ji) => { + var iu = ie(), au = 0, nu = Math.random(), ou = iu(1 .toString); + Ji.exports = function(h) { + return "Symbol(" + (h === void 0 ? "" : h) + ")_" + ou(++au + nu, 36); + }; + }); + var Ze = b((Pd, ea) => { + var hu = G(), lu = ws(), Yi = be(), uu = Is(), $i = Ts(), Zi = Es(), _e = lu("wks"), Fe = hu.Symbol, Qi = Fe && Fe.for, cu = Zi ? Fe : Fe && Fe.withoutSetter || uu; + ea.exports = function(h) { + if (!Yi(_e, h) || !($i || typeof _e[h] == "string")) { + var l = "Symbol." + h; + $i && Yi(Fe, h) ? _e[h] = Fe[h] : Zi && Qi ? _e[h] = Qi(l) : _e[h] = cu(l); + } + return _e[h]; + }; + }); + var ia = b((Td, ra) => { + var pu = G(), fu = bt(), ta = De(), sa = Cs(), du = Mi(), mu = ji(), yu = Ze(), xu = pu.TypeError, gu = yu("toPrimitive"); + ra.exports = function(h, l) { + if (!ta(h) || sa(h)) + return h; + var p = du(h, gu), d; + if (p) { + if (l === void 0 && (l = "default"), d = fu(p, h, l), !ta(d) || sa(d)) + return d; + throw xu("Can't convert object to primitive value"); + } + return l === void 0 && (l = "number"), mu(h, l); + }; + }); + var ks = b((Ed, aa) => { + var Au = ia(), Pu = Cs(); + aa.exports = function(h) { + var l = Au(h, "string"); + return Pu(l) ? l : l + ""; + }; + }); + var ha = b((Cd, oa) => { + var Tu = G(), na = De(), Ds = Tu.document, Eu = na(Ds) && na(Ds.createElement); + oa.exports = function(h) { + return Eu ? Ds.createElement(h) : {}; + }; + }); + var Fs = b((bd, la) => { + var Cu = ke(), bu = Ae(), vu = ha(); + la.exports = !Cu && !bu(function() { + return Object.defineProperty(vu("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var Ls = b((ca) => { + var Su = ke(), wu = bt(), Nu = ri(), Iu = ms(), ku = St(), Du = ks(), Fu = be(), Lu = Fs(), ua = Object.getOwnPropertyDescriptor; + ca.f = Su ? ua : function(l, p) { + if (l = ku(l), p = Du(p), Lu) + try { + return ua(l, p); + } catch { + } + if (Fu(l, p)) + return Iu(!wu(Nu.f, l, p), l[p]); + }; + }); + var fa = b((Sd, pa) => { + var Ou = ke(), Bu = Ae(); + pa.exports = Ou && Bu(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var Os = b((wd, ma) => { + var da = G(), Mu = De(), Ru = da.String, ju = da.TypeError; + ma.exports = function(h) { + if (Mu(h)) + return h; + throw ju(Ru(h) + " is not an object"); + }; + }); + var qs = b((xa) => { + var qu = G(), Uu = ke(), _u = Fs(), zu = fa(), Dt = Os(), ya = ks(), Ku = qu.TypeError, Bs = Object.defineProperty, Vu = Object.getOwnPropertyDescriptor, Ms = "enumerable", Rs = "configurable", js = "writable"; + xa.f = Uu ? zu ? function(l, p, d) { + if (Dt(l), p = ya(p), Dt(d), typeof l == "function" && p === "prototype" && "value" in d && js in d && !d[js]) { + var m = Vu(l, p); + m && m[js] && (l[p] = d.value, d = { configurable: Rs in d ? d[Rs] : m[Rs], enumerable: Ms in d ? d[Ms] : m[Ms], writable: false }); + } + return Bs(l, p, d); + } : Bs : function(l, p, d) { + if (Dt(l), p = ya(p), Dt(d), _u) + try { + return Bs(l, p, d); + } catch { + } + if ("get" in d || "set" in d) + throw Ku("Accessors not supported"); + return "value" in d && (l[p] = d.value), l; + }; + }); + var Ft = b((Id, ga) => { + var Hu = ke(), Wu = qs(), Gu = ms(); + ga.exports = Hu ? function(h, l, p) { + return Wu.f(h, l, Gu(1, p)); + } : function(h, l, p) { + return h[l] = p, h; + }; + }); + var Lt = b((kd, Aa) => { + var Xu = ie(), Ju = ae(), Us = kt(), Yu = Xu(Function.toString); + Ju(Us.inspectSource) || (Us.inspectSource = function(h) { + return Yu(h); + }); + Aa.exports = Us.inspectSource; + }); + var Ea = b((Dd, Ta) => { + var $u = G(), Qu = ae(), Zu = Lt(), Pa = $u.WeakMap; + Ta.exports = Qu(Pa) && /native code/.test(Zu(Pa)); + }); + var va = b((Fd, ba) => { + var ec = ws(), tc = Is(), Ca = ec("keys"); + ba.exports = function(h) { + return Ca[h] || (Ca[h] = tc(h)); + }; + }); + var _s = b((Ld, Sa) => { + Sa.exports = {}; + }); + var Fa = b((Od, Da) => { + var sc = Ea(), ka = G(), zs = ie(), rc = De(), ic = Ft(), Ks = be(), Vs = kt(), ac = va(), nc = _s(), wa = "Object already initialized", Ws = ka.TypeError, oc = ka.WeakMap, Ot, et, Bt, hc = function(h) { + return Bt(h) ? et(h) : Ot(h, {}); + }, lc = function(h) { + return function(l) { + var p; + if (!rc(l) || (p = et(l)).type !== h) + throw Ws("Incompatible receiver, " + h + " required"); + return p; + }; + }; + sc || Vs.state ? (ve = Vs.state || (Vs.state = new oc()), Na = zs(ve.get), Hs = zs(ve.has), Ia = zs(ve.set), Ot = function(h, l) { + if (Hs(ve, h)) + throw new Ws(wa); + return l.facade = h, Ia(ve, h, l), l; + }, et = function(h) { + return Na(ve, h) || {}; + }, Bt = function(h) { + return Hs(ve, h); + }) : (Le = ac("state"), nc[Le] = true, Ot = function(h, l) { + if (Ks(h, Le)) + throw new Ws(wa); + return l.facade = h, ic(h, Le, l), l; + }, et = function(h) { + return Ks(h, Le) ? h[Le] : {}; + }, Bt = function(h) { + return Ks(h, Le); + }); + var ve, Na, Hs, Ia, Le; + Da.exports = { set: Ot, get: et, has: Bt, enforce: hc, getterFor: lc }; + }); + var Ba = b((Bd, Oa) => { + var Gs = ke(), uc = be(), La = Function.prototype, cc = Gs && Object.getOwnPropertyDescriptor, Xs = uc(La, "name"), pc = Xs && function() { + }.name === "something", fc = Xs && (!Gs || Gs && cc(La, "name").configurable); + Oa.exports = { EXISTS: Xs, PROPER: pc, CONFIGURABLE: fc }; + }); + var Ua = b((Md, qa) => { + var dc = G(), Ma = ae(), mc = be(), Ra = Ft(), yc = It(), xc = Lt(), ja = Fa(), gc = Ba().CONFIGURABLE, Ac = ja.get, Pc = ja.enforce, Tc = String(String).split("String"); + (qa.exports = function(h, l, p, d) { + var m = d ? !!d.unsafe : false, A = d ? !!d.enumerable : false, g = d ? !!d.noTargetGet : false, x = d && d.name !== void 0 ? d.name : l, T; + if (Ma(p) && (String(x).slice(0, 7) === "Symbol(" && (x = "[" + String(x).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!mc(p, "name") || gc && p.name !== x) && Ra(p, "name", x), T = Pc(p), T.source || (T.source = Tc.join(typeof x == "string" ? x : ""))), h === dc) { + A ? h[l] = p : yc(l, p); + return; + } else + m ? !g && h[l] && (A = true) : delete h[l]; + A ? h[l] = p : Ra(h, l, p); + })(Function.prototype, "toString", function() { + return Ma(this) && Ac(this).source || xc(this); + }); + }); + var Js = b((Rd, _a) => { + var Ec = Math.ceil, Cc = Math.floor; + _a.exports = function(h) { + var l = +h; + return l !== l || l === 0 ? 0 : (l > 0 ? Cc : Ec)(l); + }; + }); + var Ka = b((jd, za) => { + var bc = Js(), vc = Math.max, Sc = Math.min; + za.exports = function(h, l) { + var p = bc(h); + return p < 0 ? vc(p + l, 0) : Sc(p, l); + }; + }); + var Ha = b((qd, Va) => { + var wc = Js(), Nc = Math.min; + Va.exports = function(h) { + return h > 0 ? Nc(wc(h), 9007199254740991) : 0; + }; + }); + var Mt = b((Ud, Wa) => { + var Ic = Ha(); + Wa.exports = function(h) { + return Ic(h.length); + }; + }); + var Ja = b((_d, Xa) => { + var kc = St(), Dc = Ka(), Fc = Mt(), Ga = function(h) { + return function(l, p, d) { + var m = kc(l), A = Fc(m), g = Dc(d, A), x; + if (h && p != p) { + for (; A > g; ) + if (x = m[g++], x != x) + return true; + } else + for (; A > g; g++) + if ((h || g in m) && m[g] === p) + return h || g || 0; + return !h && -1; + }; + }; + Xa.exports = { includes: Ga(true), indexOf: Ga(false) }; + }); + var Qa = b((zd, $a) => { + var Lc = ie(), Ys = be(), Oc = St(), Bc = Ja().indexOf, Mc = _s(), Ya = Lc([].push); + $a.exports = function(h, l) { + var p = Oc(h), d = 0, m = [], A; + for (A in p) + !Ys(Mc, A) && Ys(p, A) && Ya(m, A); + for (; l.length > d; ) + Ys(p, A = l[d++]) && (~Bc(m, A) || Ya(m, A)); + return m; + }; + }); + var en = b((Kd, Za) => { + Za.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var sn = b((tn) => { + var Rc = Qa(), jc = en(), qc = jc.concat("length", "prototype"); + tn.f = Object.getOwnPropertyNames || function(l) { + return Rc(l, qc); + }; + }); + var an = b((rn) => { + rn.f = Object.getOwnPropertySymbols; + }); + var on = b((Wd, nn) => { + var Uc = Qe(), _c = ie(), zc = sn(), Kc = an(), Vc = Os(), Hc = _c([].concat); + nn.exports = Uc("Reflect", "ownKeys") || function(l) { + var p = zc.f(Vc(l)), d = Kc.f; + return d ? Hc(p, d(l)) : p; + }; + }); + var un = b((Gd, ln) => { + var hn = be(), Wc = on(), Gc = Ls(), Xc = qs(); + ln.exports = function(h, l, p) { + for (var d = Wc(l), m = Xc.f, A = Gc.f, g = 0; g < d.length; g++) { + var x = d[g]; + !hn(h, x) && !(p && hn(p, x)) && m(h, x, A(l, x)); + } + }; + }); + var pn = b((Xd, cn) => { + var Jc = Ae(), Yc = ae(), $c = /#|\.prototype\./, tt = function(h, l) { + var p = Zc[Qc(h)]; + return p == tp ? true : p == ep ? false : Yc(l) ? Jc(l) : !!l; + }, Qc = tt.normalize = function(h) { + return String(h).replace($c, ".").toLowerCase(); + }, Zc = tt.data = {}, ep = tt.NATIVE = "N", tp = tt.POLYFILL = "P"; + cn.exports = tt; + }); + var Qs = b((Jd, fn) => { + var $s = G(), sp = Ls().f, rp = Ft(), ip = Ua(), ap = It(), np = un(), op = pn(); + fn.exports = function(h, l) { + var p = h.target, d = h.global, m = h.stat, A, g, x, T, k, D; + if (d ? g = $s : m ? g = $s[p] || ap(p, {}) : g = ($s[p] || {}).prototype, g) + for (x in l) { + if (k = l[x], h.noTargetGet ? (D = sp(g, x), T = D && D.value) : T = g[x], A = op(d ? x : p + (m ? "." : "#") + x, h.forced), !A && T !== void 0) { + if (typeof k == typeof T) + continue; + np(k, T); + } + (h.sham || T && T.sham) && rp(k, "sham", true), ip(g, x, k, h); + } + }; + }); + var dn = b(() => { + var hp = Qs(), lp = G(); + hp({ global: true }, { globalThis: lp }); + }); + var mn = b(() => { + dn(); + }); + var Zs = b((em, yn) => { + var up = vt(); + yn.exports = Array.isArray || function(l) { + return up(l) == "Array"; + }; + }); + var An = b((tm, gn) => { + var xn = ie(), cp = Nt(), pp = Et(), fp = xn(xn.bind); + gn.exports = function(h, l) { + return cp(h), l === void 0 ? h : pp ? fp(h, l) : function() { + return h.apply(l, arguments); + }; + }; + }); + var En = b((sm, Tn) => { + "use strict"; + var dp = G(), mp = Zs(), yp = Mt(), xp = An(), gp = dp.TypeError, Pn = function(h, l, p, d, m, A, g, x) { + for (var T = m, k = 0, D = g ? xp(g, x) : false, E, L; k < d; ) { + if (k in p) { + if (E = D ? D(p[k], k, l) : p[k], A > 0 && mp(E)) + L = yp(E), T = Pn(h, l, E, L, T, A - 1) - 1; + else { + if (T >= 9007199254740991) + throw gp("Exceed the acceptable array length"); + h[T] = E; + } + T++; + } + k++; + } + return T; + }; + Tn.exports = Pn; + }); + var vn = b((rm, bn) => { + var Ap = Ze(), Pp = Ap("toStringTag"), Cn = {}; + Cn[Pp] = "z"; + bn.exports = String(Cn) === "[object z]"; + }); + var wn = b((im, Sn) => { + var Tp = G(), Ep = vn(), Cp = ae(), Rt = vt(), bp = Ze(), vp = bp("toStringTag"), Sp = Tp.Object, wp = Rt(function() { + return arguments; + }()) == "Arguments", Np = function(h, l) { + try { + return h[l]; + } catch { + } + }; + Sn.exports = Ep ? Rt : function(h) { + var l, p, d; + return h === void 0 ? "Undefined" : h === null ? "Null" : typeof (p = Np(l = Sp(h), vp)) == "string" ? p : wp ? Rt(l) : (d = Rt(l)) == "Object" && Cp(l.callee) ? "Arguments" : d; + }; + }); + var Ln = b((am, Fn) => { + var Ip = ie(), kp = Ae(), Nn = ae(), Dp = wn(), Fp = Qe(), Lp = Lt(), In = function() { + }, Op = [], kn = Fp("Reflect", "construct"), er = /^\s*(?:class|function)\b/, Bp = Ip(er.exec), Mp = !er.exec(In), st = function(l) { + if (!Nn(l)) + return false; + try { + return kn(In, Op, l), true; + } catch { + return false; + } + }, Dn = function(l) { + if (!Nn(l)) + return false; + switch (Dp(l)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return false; + } + try { + return Mp || !!Bp(er, Lp(l)); + } catch { + return true; + } + }; + Dn.sham = true; + Fn.exports = !kn || kp(function() { + var h; + return st(st.call) || !st(Object) || !st(function() { + h = true; + }) || h; + }) ? Dn : st; + }); + var Rn = b((nm, Mn) => { + var Rp = G(), On = Zs(), jp = Ln(), qp = De(), Up = Ze(), _p = Up("species"), Bn = Rp.Array; + Mn.exports = function(h) { + var l; + return On(h) && (l = h.constructor, jp(l) && (l === Bn || On(l.prototype)) ? l = void 0 : qp(l) && (l = l[_p], l === null && (l = void 0))), l === void 0 ? Bn : l; + }; + }); + var qn = b((om, jn) => { + var zp = Rn(); + jn.exports = function(h, l) { + return new (zp(h))(l === 0 ? 0 : l); + }; + }); + var Un = b(() => { + "use strict"; + var Kp = Qs(), Vp = En(), Hp = Nt(), Wp = Ns(), Gp = Mt(), Xp = qn(); + Kp({ target: "Array", proto: true }, { flatMap: function(l) { + var p = Wp(this), d = Gp(p), m; + return Hp(l), m = Xp(p, 0), m.length = Vp(m, p, p, d, 0, 1, l, arguments.length > 1 ? arguments[1] : void 0), m; + } }); + }); + var qf = b((um, Eo) => { + var _n, zn, Kn, Vn, Hn; + function rt(h, l) { + return l || (l = h.slice(0)), Object.freeze(Object.defineProperties(h, { raw: { value: Object.freeze(l) } })); + } + mn(); + Un(); + var ir = Object.defineProperty, Jp = Object.getOwnPropertyDescriptor, ar = Object.getOwnPropertyNames, Yp = Object.prototype.hasOwnProperty, $n = (h, l) => function() { + return h && (l = (0, h[ar(h)[0]])(h = 0)), l; + }, H = (h, l) => function() { + return l || (0, h[ar(h)[0]])((l = { exports: {} }).exports, l), l.exports; + }, $p = (h, l) => { + for (var p in l) + ir(h, p, { get: l[p], enumerable: true }); + }, Qp = (h, l, p, d) => { + if (l && typeof l == "object" || typeof l == "function") + for (let m of ar(l)) + !Yp.call(h, m) && m !== p && ir(h, m, { get: () => l[m], enumerable: !(d = Jp(l, m)) || d.enumerable }); + return h; + }, Zp = (h) => Qp(ir({}, "__esModule", { value: true }), h), V = $n({ ""() { + } }), ef = H({ "src/utils/try-combinations.js"(h, l) { + "use strict"; + V(); + function p() { + let d; + for (var m = arguments.length, A = new Array(m), g = 0; g < m; g++) + A[g] = arguments[g]; + for (let [x, T] of A.entries()) + try { + return { result: T() }; + } catch (k) { + x === 0 && (d = k); + } + return { error: d }; + } + l.exports = p; + } }), Qn = H({ "src/language-js/utils/get-shebang.js"(h, l) { + "use strict"; + V(); + function p(d) { + if (!d.startsWith("#!")) + return ""; + let m = d.indexOf(` +`); + return m === -1 ? d : d.slice(0, m); + } + l.exports = p; + } }), tf = H({ "src/utils/text/skip-inline-comment.js"(h, l) { + "use strict"; + V(); + function p(d, m) { + if (m === false) + return false; + if (d.charAt(m) === "/" && d.charAt(m + 1) === "*") { + for (let A = m + 2; A < d.length; ++A) + if (d.charAt(A) === "*" && d.charAt(A + 1) === "/") + return A + 2; + } + return m; + } + l.exports = p; + } }), sf = H({ "src/utils/text/skip-newline.js"(h, l) { + "use strict"; + V(); + function p(d, m, A) { + let g = A && A.backwards; + if (m === false) + return false; + let x = d.charAt(m); + if (g) { + if (d.charAt(m - 1) === "\r" && x === ` +`) + return m - 2; + if (x === ` +` || x === "\r" || x === "\u2028" || x === "\u2029") + return m - 1; + } else { + if (x === "\r" && d.charAt(m + 1) === ` +`) + return m + 2; + if (x === ` +` || x === "\r" || x === "\u2028" || x === "\u2029") + return m + 1; + } + return m; + } + l.exports = p; + } }), Zn = H({ "src/utils/text/skip.js"(h, l) { + "use strict"; + V(); + function p(x) { + return (T, k, D) => { + let E = D && D.backwards; + if (k === false) + return false; + let { length: L } = T, R = k; + for (; R >= 0 && R < L; ) { + let F = T.charAt(R); + if (x instanceof RegExp) { + if (!x.test(F)) + return R; + } else if (!x.includes(F)) + return R; + E ? R-- : R++; + } + return R === -1 || R === L ? R : false; + }; + } + var d = p(/\s/), m = p(" "), A = p(",; "), g = p(/[^\n\r]/); + l.exports = { skipWhitespace: d, skipSpaces: m, skipToLineEnd: A, skipEverythingButNewLine: g }; + } }), rf = H({ "src/utils/text/skip-trailing-comment.js"(h, l) { + "use strict"; + V(); + var { skipEverythingButNewLine: p } = Zn(); + function d(m, A) { + return A === false ? false : m.charAt(A) === "/" && m.charAt(A + 1) === "/" ? p(m, A) : A; + } + l.exports = d; + } }), af = H({ "src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js"(h, l) { + "use strict"; + V(); + var p = tf(), d = sf(), m = rf(), { skipSpaces: A } = Zn(); + function g(x, T) { + let k = null, D = T; + for (; D !== k; ) + k = D, D = A(x, D), D = p(x, D), D = m(x, D), D = d(x, D); + return D; + } + l.exports = g; + } }), eo = {}; + $p(eo, { EOL: () => rr, arch: () => nf, cpus: () => oo, default: () => po, endianness: () => to, freemem: () => ao, getNetworkInterfaces: () => co, hostname: () => so, loadavg: () => ro, networkInterfaces: () => uo, platform: () => of, release: () => lo, tmpDir: () => tr, tmpdir: () => sr, totalmem: () => no, type: () => ho, uptime: () => io }); + function to() { + if (typeof jt > "u") { + var h = new ArrayBuffer(2), l = new Uint8Array(h), p = new Uint16Array(h); + if (l[0] = 1, l[1] = 2, p[0] === 258) + jt = "BE"; + else if (p[0] === 513) + jt = "LE"; + else + throw new Error("unable to figure out endianess"); + } + return jt; + } + function so() { + return typeof globalThis.location < "u" ? globalThis.location.hostname : ""; + } + function ro() { + return []; + } + function io() { + return 0; + } + function ao() { + return Number.MAX_VALUE; + } + function no() { + return Number.MAX_VALUE; + } + function oo() { + return []; + } + function ho() { + return "Browser"; + } + function lo() { + return typeof globalThis.navigator < "u" ? globalThis.navigator.appVersion : ""; + } + function uo() { + } + function co() { + } + function nf() { + return "javascript"; + } + function of() { + return "browser"; + } + function tr() { + return "/tmp"; + } + var jt, sr, rr, po, hf = $n({ "node-modules-polyfills:os"() { + V(), sr = tr, rr = ` +`, po = { EOL: rr, tmpdir: sr, tmpDir: tr, networkInterfaces: uo, getNetworkInterfaces: co, release: lo, type: ho, cpus: oo, totalmem: no, freemem: ao, uptime: io, loadavg: ro, hostname: so, endianness: to }; + } }), lf = H({ "node-modules-polyfills-commonjs:os"(h, l) { + V(); + var p = (hf(), Zp(eo)); + if (p && p.default) { + l.exports = p.default; + for (let d in p) + l.exports[d] = p[d]; + } else + p && (l.exports = p); + } }), uf = H({ "node_modules/detect-newline/index.js"(h, l) { + "use strict"; + V(); + var p = (d) => { + if (typeof d != "string") + throw new TypeError("Expected a string"); + let m = d.match(/(?:\r?\n)/g) || []; + if (m.length === 0) + return; + let A = m.filter((x) => x === `\r +`).length, g = m.length - A; + return A > g ? `\r +` : ` +`; + }; + l.exports = p, l.exports.graceful = (d) => typeof d == "string" && p(d) || ` +`; + } }), cf = H({ "node_modules/jest-docblock/build/index.js"(h) { + "use strict"; + V(), Object.defineProperty(h, "__esModule", { value: true }), h.extract = R, h.parse = W, h.parseWithComments = Y, h.print = M, h.strip = F; + function l() { + let u = lf(); + return l = function() { + return u; + }, u; + } + function p() { + let u = d(uf()); + return p = function() { + return u; + }, u; + } + function d(u) { + return u && u.__esModule ? u : { default: u }; + } + var m = /\*\/$/, A = /^\/\*\*/, g = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, x = /(^|\s+)\/\/([^\r\n]*)/g, T = /^(\r?\n)+/, k = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g, D = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g, E = /(\r?\n|^) *\* ?/g, L = []; + function R(u) { + let X = u.match(g); + return X ? X[0].trimLeft() : ""; + } + function F(u) { + let X = u.match(g); + return X && X[0] ? u.substring(X[0].length) : u; + } + function W(u) { + return Y(u).pragmas; + } + function Y(u) { + let X = (0, p().default)(u) || l().EOL; + u = u.replace(A, "").replace(m, "").replace(E, "$1"); + let se = ""; + for (; se !== u; ) + se = u, u = u.replace(k, "".concat(X, "$1 $2").concat(X)); + u = u.replace(T, "").trimRight(); + let J = /* @__PURE__ */ Object.create(null), Oe = u.replace(D, "").replace(T, "").trimRight(), $; + for (; $ = D.exec(u); ) { + let z = $[2].replace(x, ""); + typeof J[$[1]] == "string" || Array.isArray(J[$[1]]) ? J[$[1]] = L.concat(J[$[1]], z) : J[$[1]] = z; + } + return { comments: Oe, pragmas: J }; + } + function M(u) { + let { comments: X = "", pragmas: se = {} } = u, J = (0, p().default)(X) || l().EOL, Oe = "/**", $ = " *", z = " */", O = Object.keys(se), C = O.map((Z) => j(Z, se[Z])).reduce((Z, he) => Z.concat(he), []).map((Z) => $ + " " + Z + J).join(""); + if (!X) { + if (O.length === 0) + return ""; + if (O.length === 1 && !Array.isArray(se[O[0]])) { + let Z = se[O[0]]; + return "".concat(Oe, " ").concat(j(O[0], Z)[0]).concat(z); + } + } + let Ve = X.split(J).map((Z) => "".concat($, " ").concat(Z)).join(J) + J; + return Oe + J + (X ? Ve : "") + (X && O.length ? $ + J : "") + C + z; + } + function j(u, X) { + return L.concat(X).map((se) => "@".concat(u, " ").concat(se).trim()); + } + } }), pf = H({ "src/common/end-of-line.js"(h, l) { + "use strict"; + V(); + function p(g) { + let x = g.indexOf("\r"); + return x >= 0 ? g.charAt(x + 1) === ` +` ? "crlf" : "cr" : "lf"; + } + function d(g) { + switch (g) { + case "cr": + return "\r"; + case "crlf": + return `\r +`; + default: + return ` +`; + } + } + function m(g, x) { + let T; + switch (x) { + case ` +`: + T = /\n/g; + break; + case "\r": + T = /\r/g; + break; + case `\r +`: + T = /\r\n/g; + break; + default: + throw new Error('Unexpected "eol" '.concat(JSON.stringify(x), ".")); + } + let k = g.match(T); + return k ? k.length : 0; + } + function A(g) { + return g.replace(/\r\n?/g, ` +`); + } + l.exports = { guessEndOfLine: p, convertEndOfLineToChars: d, countEndOfLineChars: m, normalizeEndOfLine: A }; + } }), ff = H({ "src/language-js/pragma.js"(h, l) { + "use strict"; + V(); + var { parseWithComments: p, strip: d, extract: m, print: A } = cf(), { normalizeEndOfLine: g } = pf(), x = Qn(); + function T(E) { + let L = x(E); + L && (E = E.slice(L.length + 1)); + let R = m(E), { pragmas: F, comments: W } = p(R); + return { shebang: L, text: E, pragmas: F, comments: W }; + } + function k(E) { + let L = Object.keys(T(E).pragmas); + return L.includes("prettier") || L.includes("format"); + } + function D(E) { + let { shebang: L, text: R, pragmas: F, comments: W } = T(E), Y = d(R), M = A({ pragmas: Object.assign({ format: "" }, F), comments: W.trimStart() }); + return (L ? "".concat(L, ` +`) : "") + g(M) + (Y.startsWith(` +`) ? ` +` : ` + +`) + Y; + } + l.exports = { hasPragma: k, insertPragma: D }; + } }), fo = H({ "src/utils/is-non-empty-array.js"(h, l) { + "use strict"; + V(); + function p(d) { + return Array.isArray(d) && d.length > 0; + } + l.exports = p; + } }), mo = H({ "src/language-js/loc.js"(h, l) { + "use strict"; + V(); + var p = fo(); + function d(T, k) { + let { ignoreDecorators: D } = k || {}; + if (!D) { + let E = T.declaration && T.declaration.decorators || T.decorators; + if (p(E)) + return d(E[0]); + } + return T.range ? T.range[0] : T.start; + } + function m(T) { + return T.range ? T.range[1] : T.end; + } + function A(T, k) { + let D = d(T); + return Number.isInteger(D) && D === d(k); + } + function g(T, k) { + let D = m(T); + return Number.isInteger(D) && D === m(k); + } + function x(T, k) { + return A(T, k) && g(T, k); + } + l.exports = { locStart: d, locEnd: m, hasSameLocStart: A, hasSameLoc: x }; + } }), yo = H({ "src/language-js/parse/utils/create-parser.js"(h, l) { + "use strict"; + V(); + var { hasPragma: p } = ff(), { locStart: d, locEnd: m } = mo(); + function A(g) { + return g = typeof g == "function" ? { parse: g } : g, Object.assign({ astFormat: "estree", hasPragma: p, locStart: d, locEnd: m }, g); + } + l.exports = A; + } }), nr = H({ "src/common/parser-create-error.js"(h, l) { + "use strict"; + V(); + function p(d, m) { + let A = new SyntaxError(d + " (" + m.start.line + ":" + m.start.column + ")"); + return A.loc = m, A; + } + l.exports = p; + } }), xo = H({ "src/language-js/parse/utils/create-babel-parse-error.js"(h, l) { + "use strict"; + V(); + var p = nr(); + function d(m) { + let { message: A, loc: g } = m; + return p(A.replace(/ \(.*\)/, ""), { start: { line: g ? g.line : 0, column: g ? g.column + 1 : 0 } }); + } + l.exports = d; + } }), df = H({ "src/language-js/utils/is-ts-keyword-type.js"(h, l) { + "use strict"; + V(); + function p(d) { + let { type: m } = d; + return m.startsWith("TS") && m.endsWith("Keyword"); + } + l.exports = p; + } }), mf = H({ "src/language-js/utils/is-block-comment.js"(h, l) { + "use strict"; + V(); + var p = /* @__PURE__ */ new Set(["Block", "CommentBlock", "MultiLine"]), d = (m) => p.has(m == null ? void 0 : m.type); + l.exports = d; + } }), yf = H({ "src/language-js/utils/is-type-cast-comment.js"(h, l) { + "use strict"; + V(); + var p = mf(); + function d(m) { + return p(m) && m.value[0] === "*" && /@type\b/.test(m.value); + } + l.exports = d; + } }), xf = H({ "src/utils/get-last.js"(h, l) { + "use strict"; + V(); + var p = (d) => d[d.length - 1]; + l.exports = p; + } }), go = H({ "src/language-js/parse/postprocess/visit-node.js"(h, l) { + "use strict"; + V(); + function p(d, m) { + if (Array.isArray(d)) { + for (let A = 0; A < d.length; A++) + d[A] = p(d[A], m); + return d; + } + if (d && typeof d == "object" && typeof d.type == "string") { + let A = Object.keys(d); + for (let g = 0; g < A.length; g++) + d[A[g]] = p(d[A[g]], m); + return m(d) || d; + } + return d; + } + l.exports = p; + } }), Ao = H({ "src/language-js/parse/postprocess/throw-syntax-error.js"(h, l) { + "use strict"; + V(); + var p = nr(); + function d(m, A) { + let { start: g, end: x } = m.loc; + throw p(A, { start: { line: g.line, column: g.column + 1 }, end: { line: x.line, column: x.column + 1 } }); + } + l.exports = d; + } }), gf = H({ "src/language-js/parse/postprocess/typescript.js"(h, l) { + "use strict"; + V(); + var p = go(), d = Ao(); + function m(x, T, k) { + let D = x.decorators; + if (!Array.isArray(D)) + return; + let E = T.decorators; + (!Array.isArray(E) || E.length !== D.length || D.some((L) => { + let R = k.get(L); + return !R || !E.includes(R); + })) && d(T, "Leading decorators must be attached to a class declaration"); + } + function A(x, T) { + x.kind !== 167 || x.modifiers && !x.modifiers.some((E) => E.kind === 126) || x.initializer && T.value === null && d(T, "Abstract property cannot have an initializer"); + } + function g(x, T) { + let { esTreeNodeToTSNodeMap: k, tsNodeToESTreeNodeMap: D } = T.tsParseResult; + p(x, (E) => { + let L = k.get(E); + if (!L) + return; + let R = D.get(L); + R === E && (m(L, R, D), A(L, R)); + }); + } + l.exports = { throwErrorForInvalidNodes: g }; + } }), Af = H({ "src/language-js/parse/postprocess/index.js"(h, l) { + "use strict"; + V(); + var { locStart: p, locEnd: d } = mo(), m = df(), A = yf(), g = xf(), x = go(), { throwErrorForInvalidNodes: T } = gf(), k = Ao(); + function D(F, W) { + if (W.parser === "typescript" && /@|abstract/.test(W.originalText) && T(F, W), W.parser !== "typescript" && W.parser !== "flow" && W.parser !== "acorn" && W.parser !== "espree" && W.parser !== "meriyah") { + let M = /* @__PURE__ */ new Set(); + F = x(F, (j) => { + j.leadingComments && j.leadingComments.some(A) && M.add(p(j)); + }), F = x(F, (j) => { + if (j.type === "ParenthesizedExpression") { + let { expression: u } = j; + if (u.type === "TypeCastExpression") + return u.range = j.range, u; + let X = p(j); + if (!M.has(X)) + return u.extra = Object.assign(Object.assign({}, u.extra), {}, { parenthesized: true }), u; + } + }); + } + return F = x(F, (M) => { + switch (M.type) { + case "ChainExpression": + return E(M.expression); + case "LogicalExpression": { + if (L(M)) + return R(M); + break; + } + case "VariableDeclaration": { + let j = g(M.declarations); + j && j.init && Y(M, j); + break; + } + case "TSParenthesizedType": + return m(M.typeAnnotation) || M.typeAnnotation.type === "TSThisType" || (M.typeAnnotation.range = [p(M), d(M)]), M.typeAnnotation; + case "TSTypeParameter": + if (typeof M.name == "string") { + let j = p(M); + M.name = { type: "Identifier", name: M.name, range: [j, j + M.name.length] }; + } + break; + case "ObjectExpression": + if (W.parser === "typescript") { + let j = M.properties.find((u) => u.type === "Property" && u.value.type === "TSEmptyBodyFunctionExpression"); + j && k(j.value, "Unexpected token."); + } + break; + case "SequenceExpression": { + let j = g(M.expressions); + M.range = [p(M), Math.min(d(j), d(M))]; + break; + } + case "TopicReference": + W.__isUsingHackPipeline = true; + break; + case "ExportAllDeclaration": { + let { exported: j } = M; + if (W.parser === "meriyah" && j && j.type === "Identifier") { + let u = W.originalText.slice(p(j), d(j)); + (u.startsWith('"') || u.startsWith("'")) && (M.exported = Object.assign(Object.assign({}, M.exported), {}, { type: "Literal", value: M.exported.name, raw: u })); + } + break; + } + } + }), F; + function Y(M, j) { + W.originalText[d(j)] !== ";" && (M.range = [p(M), d(j)]); + } + } + function E(F) { + switch (F.type) { + case "CallExpression": + F.type = "OptionalCallExpression", F.callee = E(F.callee); + break; + case "MemberExpression": + F.type = "OptionalMemberExpression", F.object = E(F.object); + break; + case "TSNonNullExpression": + F.expression = E(F.expression); + break; + } + return F; + } + function L(F) { + return F.type === "LogicalExpression" && F.right.type === "LogicalExpression" && F.operator === F.right.operator; + } + function R(F) { + return L(F) ? R({ type: "LogicalExpression", operator: F.operator, left: R({ type: "LogicalExpression", operator: F.operator, left: F.left, right: F.right.left, range: [p(F.left), d(F.right.left)] }), right: F.right.right, range: [p(F), d(F)] }) : F; + } + l.exports = D; + } }), Po = H({ "node_modules/@babel/parser/lib/index.js"(h) { + "use strict"; + V(), Object.defineProperty(h, "__esModule", { value: true }); + function l(t, e) { + if (t == null) + return {}; + var s = {}, r = Object.keys(t), i, a; + for (a = 0; a < r.length; a++) + i = r[a], !(e.indexOf(i) >= 0) && (s[i] = t[i]); + return s; + } + var p = class { + constructor(t, e, s) { + this.line = void 0, this.column = void 0, this.index = void 0, this.line = t, this.column = e, this.index = s; + } + }, d = class { + constructor(t, e) { + this.start = void 0, this.end = void 0, this.filename = void 0, this.identifierName = void 0, this.start = t, this.end = e; + } + }; + function m(t, e) { + let { line: s, column: r, index: i } = t; + return new p(s, r + e, i + e); + } + var A = Object.freeze({ SyntaxError: "BABEL_PARSER_SYNTAX_ERROR", SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" }), g = function(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : t.length - 1; + return { get() { + return t.reduce((s, r) => s[r], this); + }, set(s) { + t.reduce((r, i, a) => a === e ? r[i] = s : r[i], this); + } }; + }, x = (t, e, s) => Object.keys(s).map((r) => [r, s[r]]).filter((r) => { + let [, i] = r; + return !!i; + }).map((r) => { + let [i, a] = r; + return [i, typeof a == "function" ? { value: a, enumerable: false } : typeof a.reflect == "string" ? Object.assign({}, a, g(a.reflect.split("."))) : a]; + }).reduce((r, i) => { + let [a, n] = i; + return Object.defineProperty(r, a, Object.assign({ configurable: true }, n)); + }, Object.assign(new t(), e)), T = (t) => ({ ImportMetaOutsideModule: t(`import.meta may appear only with 'sourceType: "module"'`, { code: A.SourceTypeModuleError }), ImportOutsideModule: t(`'import' and 'export' may appear only with 'sourceType: "module"'`, { code: A.SourceTypeModuleError }) }), k = { ArrayPattern: "array destructuring pattern", AssignmentExpression: "assignment expression", AssignmentPattern: "assignment expression", ArrowFunctionExpression: "arrow function expression", ConditionalExpression: "conditional expression", ForOfStatement: "for-of statement", ForInStatement: "for-in statement", ForStatement: "for-loop", FormalParameters: "function parameter list", Identifier: "identifier", ObjectPattern: "object destructuring pattern", ParenthesizedExpression: "parenthesized expression", RestElement: "rest element", UpdateExpression: { true: "prefix operation", false: "postfix operation" }, VariableDeclarator: "variable declaration", YieldExpression: "yield expression" }, D = (t) => { + let { type: e, prefix: s } = t; + return e === "UpdateExpression" ? k.UpdateExpression[String(s)] : k[e]; + }, E = (t) => ({ AccessorIsGenerator: t((e) => { + let { kind: s } = e; + return "A ".concat(s, "ter cannot be a generator."); + }), ArgumentsInClass: t("'arguments' is only allowed in functions and class methods."), AsyncFunctionInSingleStatementContext: t("Async functions can only be declared at the top level or inside a block."), AwaitBindingIdentifier: t("Can not use 'await' as identifier inside an async function."), AwaitBindingIdentifierInStaticBlock: t("Can not use 'await' as identifier inside a static block."), AwaitExpressionFormalParameter: t("'await' is not allowed in async function parameters."), AwaitNotInAsyncContext: t("'await' is only allowed within async functions and at the top levels of modules."), AwaitNotInAsyncFunction: t("'await' is only allowed within async functions."), BadGetterArity: t("A 'get' accesor must not have any formal parameters."), BadSetterArity: t("A 'set' accesor must have exactly one formal parameter."), BadSetterRestParameter: t("A 'set' accesor function argument must not be a rest parameter."), ConstructorClassField: t("Classes may not have a field named 'constructor'."), ConstructorClassPrivateField: t("Classes may not have a private field named '#constructor'."), ConstructorIsAccessor: t("Class constructor may not be an accessor."), ConstructorIsAsync: t("Constructor can't be an async function."), ConstructorIsGenerator: t("Constructor can't be a generator."), DeclarationMissingInitializer: t((e) => { + let { kind: s } = e; + return "Missing initializer in ".concat(s, " declaration."); + }), DecoratorBeforeExport: t("Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax."), DecoratorConstructor: t("Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?"), DecoratorExportClass: t("Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead."), DecoratorSemicolon: t("Decorators must not be followed by a semicolon."), DecoratorStaticBlock: t("Decorators can't be used with a static block."), DeletePrivateField: t("Deleting a private field is not allowed."), DestructureNamedImport: t("ES2015 named imports do not destructure. Use another statement for destructuring after the import."), DuplicateConstructor: t("Duplicate constructor in the same class."), DuplicateDefaultExport: t("Only one default export allowed per module."), DuplicateExport: t((e) => { + let { exportName: s } = e; + return "`".concat(s, "` has already been exported. Exported identifiers must be unique."); + }), DuplicateProto: t("Redefinition of __proto__ property."), DuplicateRegExpFlags: t("Duplicate regular expression flag."), ElementAfterRest: t("Rest element must be last element."), EscapedCharNotAnIdentifier: t("Invalid Unicode escape."), ExportBindingIsString: t((e) => { + let { localName: s, exportName: r } = e; + return "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '".concat(s, "' as '").concat(r, "' } from 'some-module'`?"); + }), ExportDefaultFromAsIdentifier: t("'from' is not allowed as an identifier after 'export default'."), ForInOfLoopInitializer: t((e) => { + let { type: s } = e; + return "'".concat(s === "ForInStatement" ? "for-in" : "for-of", "' loop variable declaration may not have an initializer."); + }), ForOfAsync: t("The left-hand side of a for-of loop may not be 'async'."), ForOfLet: t("The left-hand side of a for-of loop may not start with 'let'."), GeneratorInSingleStatementContext: t("Generators can only be declared at the top level or inside a block."), IllegalBreakContinue: t((e) => { + let { type: s } = e; + return "Unsyntactic ".concat(s === "BreakStatement" ? "break" : "continue", "."); + }), IllegalLanguageModeDirective: t("Illegal 'use strict' directive in function with non-simple parameter list."), IllegalReturn: t("'return' outside of function."), ImportBindingIsString: t((e) => { + let { importName: s } = e; + return 'A string literal cannot be used as an imported binding.\n- Did you mean `import { "'.concat(s, '" as foo }`?'); + }), ImportCallArgumentTrailingComma: t("Trailing comma is disallowed inside import(...) arguments."), ImportCallArity: t((e) => { + let { maxArgumentCount: s } = e; + return "`import()` requires exactly ".concat(s === 1 ? "one argument" : "one or two arguments", "."); + }), ImportCallNotNewExpression: t("Cannot use new with import(...)."), ImportCallSpreadArgument: t("`...` is not allowed in `import()`."), IncompatibleRegExpUVFlags: t("The 'u' and 'v' regular expression flags cannot be enabled at the same time."), InvalidBigIntLiteral: t("Invalid BigIntLiteral."), InvalidCodePoint: t("Code point out of bounds."), InvalidCoverInitializedName: t("Invalid shorthand property initializer."), InvalidDecimal: t("Invalid decimal."), InvalidDigit: t((e) => { + let { radix: s } = e; + return "Expected number in radix ".concat(s, "."); + }), InvalidEscapeSequence: t("Bad character escape sequence."), InvalidEscapeSequenceTemplate: t("Invalid escape sequence in template."), InvalidEscapedReservedWord: t((e) => { + let { reservedWord: s } = e; + return "Escape sequence in keyword ".concat(s, "."); + }), InvalidIdentifier: t((e) => { + let { identifierName: s } = e; + return "Invalid identifier ".concat(s, "."); + }), InvalidLhs: t((e) => { + let { ancestor: s } = e; + return "Invalid left-hand side in ".concat(D(s), "."); + }), InvalidLhsBinding: t((e) => { + let { ancestor: s } = e; + return "Binding invalid left-hand side in ".concat(D(s), "."); + }), InvalidNumber: t("Invalid number."), InvalidOrMissingExponent: t("Floating-point numbers require a valid exponent after the 'e'."), InvalidOrUnexpectedToken: t((e) => { + let { unexpected: s } = e; + return "Unexpected character '".concat(s, "'."); + }), InvalidParenthesizedAssignment: t("Invalid parenthesized assignment pattern."), InvalidPrivateFieldResolution: t((e) => { + let { identifierName: s } = e; + return "Private name #".concat(s, " is not defined."); + }), InvalidPropertyBindingPattern: t("Binding member expression."), InvalidRecordProperty: t("Only properties and spread elements are allowed in record definitions."), InvalidRestAssignmentPattern: t("Invalid rest operator's argument."), LabelRedeclaration: t((e) => { + let { labelName: s } = e; + return "Label '".concat(s, "' is already declared."); + }), LetInLexicalBinding: t("'let' is not allowed to be used as a name in 'let' or 'const' declarations."), LineTerminatorBeforeArrow: t("No line break is allowed before '=>'."), MalformedRegExpFlags: t("Invalid regular expression flag."), MissingClassName: t("A class name is required."), MissingEqInAssignment: t("Only '=' operator can be used for specifying default value."), MissingSemicolon: t("Missing semicolon."), MissingPlugin: t((e) => { + let { missingPlugin: s } = e; + return "This experimental syntax requires enabling the parser plugin: ".concat(s.map((r) => JSON.stringify(r)).join(", "), "."); + }), MissingOneOfPlugins: t((e) => { + let { missingPlugin: s } = e; + return "This experimental syntax requires enabling one of the following parser plugin(s): ".concat(s.map((r) => JSON.stringify(r)).join(", "), "."); + }), MissingUnicodeEscape: t("Expecting Unicode escape sequence \\uXXXX."), MixingCoalesceWithLogical: t("Nullish coalescing operator(??) requires parens when mixing with logical operators."), ModuleAttributeDifferentFromType: t("The only accepted module attribute is `type`."), ModuleAttributeInvalidValue: t("Only string literals are allowed as module attribute values."), ModuleAttributesWithDuplicateKeys: t((e) => { + let { key: s } = e; + return 'Duplicate key "'.concat(s, '" is not allowed in module attributes.'); + }), ModuleExportNameHasLoneSurrogate: t((e) => { + let { surrogateCharCode: s } = e; + return "An export name cannot include a lone surrogate, found '\\u".concat(s.toString(16), "'."); + }), ModuleExportUndefined: t((e) => { + let { localName: s } = e; + return "Export '".concat(s, "' is not defined."); + }), MultipleDefaultsInSwitch: t("Multiple default clauses."), NewlineAfterThrow: t("Illegal newline after throw."), NoCatchOrFinally: t("Missing catch or finally clause."), NumberIdentifier: t("Identifier directly after number."), NumericSeparatorInEscapeSequence: t("Numeric separators are not allowed inside unicode escape sequences or hex escape sequences."), ObsoleteAwaitStar: t("'await*' has been removed from the async functions proposal. Use Promise.all() instead."), OptionalChainingNoNew: t("Constructors in/after an Optional Chain are not allowed."), OptionalChainingNoTemplate: t("Tagged Template Literals are not allowed in optionalChain."), OverrideOnConstructor: t("'override' modifier cannot appear on a constructor declaration."), ParamDupe: t("Argument name clash."), PatternHasAccessor: t("Object pattern can't contain getter or setter."), PatternHasMethod: t("Object pattern can't contain methods."), PrivateInExpectedIn: t((e) => { + let { identifierName: s } = e; + return "Private names are only allowed in property accesses (`obj.#".concat(s, "`) or in `in` expressions (`#").concat(s, " in obj`)."); + }), PrivateNameRedeclaration: t((e) => { + let { identifierName: s } = e; + return "Duplicate private name #".concat(s, "."); + }), RecordExpressionBarIncorrectEndSyntaxType: t("Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), RecordExpressionBarIncorrectStartSyntaxType: t("Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), RecordExpressionHashIncorrectStartSyntaxType: t("Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'."), RecordNoProto: t("'__proto__' is not allowed in Record expressions."), RestTrailingComma: t("Unexpected trailing comma after rest element."), SloppyFunction: t("In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement."), StaticPrototype: t("Classes may not have static property named prototype."), SuperNotAllowed: t("`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?"), SuperPrivateField: t("Private fields can't be accessed on super."), TrailingDecorator: t("Decorators must be attached to a class element."), TupleExpressionBarIncorrectEndSyntaxType: t("Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), TupleExpressionBarIncorrectStartSyntaxType: t("Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), TupleExpressionHashIncorrectStartSyntaxType: t("Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'."), UnexpectedArgumentPlaceholder: t("Unexpected argument placeholder."), UnexpectedAwaitAfterPipelineBody: t('Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.'), UnexpectedDigitAfterHash: t("Unexpected digit after hash token."), UnexpectedImportExport: t("'import' and 'export' may only appear at the top level."), UnexpectedKeyword: t((e) => { + let { keyword: s } = e; + return "Unexpected keyword '".concat(s, "'."); + }), UnexpectedLeadingDecorator: t("Leading decorators must be attached to a class declaration."), UnexpectedLexicalDeclaration: t("Lexical declaration cannot appear in a single-statement context."), UnexpectedNewTarget: t("`new.target` can only be used in functions or class properties."), UnexpectedNumericSeparator: t("A numeric separator is only allowed between two digits."), UnexpectedPrivateField: t("Unexpected private name."), UnexpectedReservedWord: t((e) => { + let { reservedWord: s } = e; + return "Unexpected reserved word '".concat(s, "'."); + }), UnexpectedSuper: t("'super' is only allowed in object methods and classes."), UnexpectedToken: t((e) => { + let { expected: s, unexpected: r } = e; + return "Unexpected token".concat(r ? " '".concat(r, "'.") : "").concat(s ? ', expected "'.concat(s, '"') : ""); + }), UnexpectedTokenUnaryExponentiation: t("Illegal expression. Wrap left hand side or entire exponentiation in parentheses."), UnsupportedBind: t("Binding should be performed on object property."), UnsupportedDecoratorExport: t("A decorated export must export a class declaration."), UnsupportedDefaultExport: t("Only expressions, functions or classes are allowed as the `default` export."), UnsupportedImport: t("`import` can only be used in `import()` or `import.meta`."), UnsupportedMetaProperty: t((e) => { + let { target: s, onlyValidPropertyName: r } = e; + return "The only valid meta property for ".concat(s, " is ").concat(s, ".").concat(r, "."); + }), UnsupportedParameterDecorator: t("Decorators cannot be used to decorate parameters."), UnsupportedPropertyDecorator: t("Decorators cannot be used to decorate object literal properties."), UnsupportedSuper: t("'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop])."), UnterminatedComment: t("Unterminated comment."), UnterminatedRegExp: t("Unterminated regular expression."), UnterminatedString: t("Unterminated string constant."), UnterminatedTemplate: t("Unterminated template."), VarRedeclaration: t((e) => { + let { identifierName: s } = e; + return "Identifier '".concat(s, "' has already been declared."); + }), YieldBindingIdentifier: t("Can not use 'yield' as identifier inside a generator."), YieldInParameter: t("Yield expression is not allowed in formal parameters."), ZeroDigitNumericSeparator: t("Numeric separator can not be used after leading 0.") }), L = (t) => ({ StrictDelete: t("Deleting local variable in strict mode."), StrictEvalArguments: t((e) => { + let { referenceName: s } = e; + return "Assigning to '".concat(s, "' in strict mode."); + }), StrictEvalArgumentsBinding: t((e) => { + let { bindingName: s } = e; + return "Binding '".concat(s, "' in strict mode."); + }), StrictFunction: t("In strict mode code, functions can only be declared at top level or inside a block."), StrictNumericEscape: t("The only valid numeric escape in strict mode is '\\0'."), StrictOctalLiteral: t("Legacy octal literals are not allowed in strict mode."), StrictWith: t("'with' in strict mode.") }), R = /* @__PURE__ */ new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]), F = (t) => ({ PipeBodyIsTighter: t("Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence."), PipeTopicRequiresHackPipes: t('Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'), PipeTopicUnbound: t("Topic reference is unbound; it must be inside a pipe body."), PipeTopicUnconfiguredToken: t((e) => { + let { token: s } = e; + return "Invalid topic token ".concat(s, ". In order to use ").concat(s, ' as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "').concat(s, '" }.'); + }), PipeTopicUnused: t("Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once."), PipeUnparenthesizedBody: t((e) => { + let { type: s } = e; + return "Hack-style pipe body cannot be an unparenthesized ".concat(D({ type: s }), "; please wrap it in parentheses."); + }), PipelineBodyNoArrow: t('Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.'), PipelineBodySequenceExpression: t("Pipeline body may not be a comma-separated sequence expression."), PipelineHeadSequenceExpression: t("Pipeline head should not be a comma-separated sequence expression."), PipelineTopicUnused: t("Pipeline is in topic style but does not use topic reference."), PrimaryTopicNotAllowed: t("Topic reference was used in a lexical context without topic binding."), PrimaryTopicRequiresSmartPipeline: t('Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.') }), W = ["toMessage"]; + function Y(t) { + let { toMessage: e } = t, s = l(t, W); + return function r(i) { + let { loc: a, details: n } = i; + return x(SyntaxError, Object.assign({}, s, { loc: a }), { clone() { + let o = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = o.loc || {}; + return r({ loc: new p("line" in c ? c.line : this.loc.line, "column" in c ? c.column : this.loc.column, "index" in c ? c.index : this.loc.index), details: Object.assign({}, this.details, o.details) }); + }, details: { value: n, enumerable: false }, message: { get() { + return "".concat(e(this.details), " (").concat(this.loc.line, ":").concat(this.loc.column, ")"); + }, set(o) { + Object.defineProperty(this, "message", { value: o }); + } }, pos: { reflect: "loc.index", enumerable: true }, missingPlugin: "missingPlugin" in n && { reflect: "details.missingPlugin", enumerable: true } }); + }; + } + function M(t, e) { + return Object.assign({ toMessage: typeof t == "string" ? () => t : t }, e); + } + function j(t, e) { + if (Array.isArray(t)) + return (i) => j(i, t[0]); + let s = t(M), r = {}; + for (let i of Object.keys(s)) + r[i] = Y(Object.assign({ code: A.SyntaxError, reasonCode: i }, e ? { syntaxPlugin: e } : {}, s[i])); + return r; + } + var u = Object.assign({}, j(T), j(E), j(L), j(_n || (_n = rt(["pipelineOperator"])))(F)), { defineProperty: X } = Object, se = (t, e) => X(t, e, { enumerable: false, value: t[e] }); + function J(t) { + return se(t.loc.start, "index"), se(t.loc.end, "index"), t; + } + var Oe = (t) => class extends t { + parse() { + let e = J(super.parse()); + return this.options.tokens && (e.tokens = e.tokens.map(J)), e; + } + parseRegExpLiteral(e) { + let { pattern: s, flags: r } = e, i = null; + try { + i = new RegExp(s, r); + } catch { + } + let a = this.estreeParseLiteral(i); + return a.regex = { pattern: s, flags: r }, a; + } + parseBigIntLiteral(e) { + let s; + try { + s = BigInt(e); + } catch { + s = null; + } + let r = this.estreeParseLiteral(s); + return r.bigint = String(r.value || e), r; + } + parseDecimalLiteral(e) { + let r = this.estreeParseLiteral(null); + return r.decimal = String(r.value || e), r; + } + estreeParseLiteral(e) { + return this.parseLiteral(e, "Literal"); + } + parseStringLiteral(e) { + return this.estreeParseLiteral(e); + } + parseNumericLiteral(e) { + return this.estreeParseLiteral(e); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(e) { + return this.estreeParseLiteral(e); + } + directiveToStmt(e) { + let s = e.value, r = this.startNodeAt(e.start, e.loc.start), i = this.startNodeAt(s.start, s.loc.start); + return i.value = s.extra.expressionValue, i.raw = s.extra.raw, r.expression = this.finishNodeAt(i, "Literal", s.loc.end), r.directive = s.extra.raw.slice(1, -1), this.finishNodeAt(r, "ExpressionStatement", e.loc.end); + } + initFunction(e, s) { + super.initFunction(e, s), e.expression = false; + } + checkDeclaration(e) { + e != null && this.isObjectProperty(e) ? this.checkDeclaration(e.value) : super.checkDeclaration(e); + } + getObjectOrClassMethodParams(e) { + return e.value.params; + } + isValidDirective(e) { + var s; + return e.type === "ExpressionStatement" && e.expression.type === "Literal" && typeof e.expression.value == "string" && !((s = e.expression.extra) != null && s.parenthesized); + } + parseBlockBody(e) { + for (var s = arguments.length, r = new Array(s > 1 ? s - 1 : 0), i = 1; i < s; i++) + r[i - 1] = arguments[i]; + super.parseBlockBody(e, ...r); + let a = e.directives.map((n) => this.directiveToStmt(n)); + e.body = a.concat(e.body), delete e.directives; + } + pushClassMethod(e, s, r, i, a, n) { + this.parseMethod(s, r, i, a, n, "ClassMethod", true), s.typeParameters && (s.value.typeParameters = s.typeParameters, delete s.typeParameters), e.body.push(s); + } + parsePrivateName() { + let e = super.parsePrivateName(); + return this.getPluginOption("estree", "classFeatures") ? this.convertPrivateNameToPrivateIdentifier(e) : e; + } + convertPrivateNameToPrivateIdentifier(e) { + let s = super.getPrivateNameSV(e); + return e = e, delete e.id, e.name = s, e.type = "PrivateIdentifier", e; + } + isPrivateName(e) { + return this.getPluginOption("estree", "classFeatures") ? e.type === "PrivateIdentifier" : super.isPrivateName(e); + } + getPrivateNameSV(e) { + return this.getPluginOption("estree", "classFeatures") ? e.name : super.getPrivateNameSV(e); + } + parseLiteral(e, s) { + let r = super.parseLiteral(e, s); + return r.raw = r.extra.raw, delete r.extra, r; + } + parseFunctionBody(e, s) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + super.parseFunctionBody(e, s, r), e.expression = e.body.type !== "BlockStatement"; + } + parseMethod(e, s, r, i, a, n) { + let o = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : false, c = this.startNode(); + return c.kind = e.kind, c = super.parseMethod(c, s, r, i, a, n, o), c.type = "FunctionExpression", delete c.kind, e.value = c, n === "ClassPrivateMethod" && (e.computed = false), n = "MethodDefinition", this.finishNode(e, n); + } + parseClassProperty() { + let e = super.parseClassProperty(...arguments); + return this.getPluginOption("estree", "classFeatures") && (e.type = "PropertyDefinition"), e; + } + parseClassPrivateProperty() { + let e = super.parseClassPrivateProperty(...arguments); + return this.getPluginOption("estree", "classFeatures") && (e.type = "PropertyDefinition", e.computed = false), e; + } + parseObjectMethod(e, s, r, i, a) { + let n = super.parseObjectMethod(e, s, r, i, a); + return n && (n.type = "Property", n.kind === "method" && (n.kind = "init"), n.shorthand = false), n; + } + parseObjectProperty(e, s, r, i, a) { + let n = super.parseObjectProperty(e, s, r, i, a); + return n && (n.kind = "init", n.type = "Property"), n; + } + isValidLVal(e) { + for (var s = arguments.length, r = new Array(s > 1 ? s - 1 : 0), i = 1; i < s; i++) + r[i - 1] = arguments[i]; + return e === "Property" ? "value" : super.isValidLVal(e, ...r); + } + isAssignable(e, s) { + return e != null && this.isObjectProperty(e) ? this.isAssignable(e.value, s) : super.isAssignable(e, s); + } + toAssignable(e) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + if (e != null && this.isObjectProperty(e)) { + let { key: r, value: i } = e; + this.isPrivateName(r) && this.classScope.usePrivateName(this.getPrivateNameSV(r), r.loc.start), this.toAssignable(i, s); + } else + super.toAssignable(e, s); + } + toAssignableObjectExpressionProp(e) { + e.kind === "get" || e.kind === "set" ? this.raise(u.PatternHasAccessor, { at: e.key }) : e.method ? this.raise(u.PatternHasMethod, { at: e.key }) : super.toAssignableObjectExpressionProp(...arguments); + } + finishCallExpression(e, s) { + if (super.finishCallExpression(e, s), e.callee.type === "Import") { + if (e.type = "ImportExpression", e.source = e.arguments[0], this.hasPlugin("importAssertions")) { + var r; + e.attributes = (r = e.arguments[1]) != null ? r : null; + } + delete e.arguments, delete e.callee; + } + return e; + } + toReferencedArguments(e) { + e.type !== "ImportExpression" && super.toReferencedArguments(e); + } + parseExport(e) { + switch (super.parseExport(e), e.type) { + case "ExportAllDeclaration": + e.exported = null; + break; + case "ExportNamedDeclaration": + e.specifiers.length === 1 && e.specifiers[0].type === "ExportNamespaceSpecifier" && (e.type = "ExportAllDeclaration", e.exported = e.specifiers[0].exported, delete e.specifiers); + break; + } + return e; + } + parseSubscript(e, s, r, i, a) { + let n = super.parseSubscript(e, s, r, i, a); + if (a.optionalChainMember) { + if ((n.type === "OptionalMemberExpression" || n.type === "OptionalCallExpression") && (n.type = n.type.substring(8)), a.stop) { + let o = this.startNodeAtNode(n); + return o.expression = n, this.finishNode(o, "ChainExpression"); + } + } else + (n.type === "MemberExpression" || n.type === "CallExpression") && (n.optional = false); + return n; + } + hasPropertyAsPrivateName(e) { + return e.type === "ChainExpression" && (e = e.expression), super.hasPropertyAsPrivateName(e); + } + isOptionalChain(e) { + return e.type === "ChainExpression"; + } + isObjectProperty(e) { + return e.type === "Property" && e.kind === "init" && !e.method; + } + isObjectMethod(e) { + return e.method || e.kind === "get" || e.kind === "set"; + } + finishNodeAt(e, s, r) { + return J(super.finishNodeAt(e, s, r)); + } + resetEndLocation(e) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.state.lastTokEndLoc; + super.resetEndLocation(e, s), J(e); + } + }, $ = class { + constructor(t, e) { + this.token = void 0, this.preserveSpace = void 0, this.token = t, this.preserveSpace = !!e; + } + }, z = { brace: new $("{"), j_oTag: new $("...", true) }; + z.template = new $("`", true); + var O = true, C = true, Ve = true, Z = true, he = true, Co = true, or = class { + constructor(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + this.label = void 0, this.keyword = void 0, this.beforeExpr = void 0, this.startsExpr = void 0, this.rightAssociative = void 0, this.isLoop = void 0, this.isAssign = void 0, this.prefix = void 0, this.postfix = void 0, this.binop = void 0, this.label = t, this.keyword = e.keyword, this.beforeExpr = !!e.beforeExpr, this.startsExpr = !!e.startsExpr, this.rightAssociative = !!e.rightAssociative, this.isLoop = !!e.isLoop, this.isAssign = !!e.isAssign, this.prefix = !!e.prefix, this.postfix = !!e.postfix, this.binop = e.binop != null ? e.binop : null, this.updateContext = null; + } + }, qt = /* @__PURE__ */ new Map(); + function q(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + e.keyword = t; + let s = w(t, e); + return qt.set(t, s), s; + } + function te(t, e) { + return w(t, { beforeExpr: O, binop: e }); + } + var He = -1, ce = [], Ut = [], it = [], _t = [], zt = [], Kt = []; + function w(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var s, r, i, a; + return ++He, Ut.push(t), it.push((s = e.binop) != null ? s : -1), _t.push((r = e.beforeExpr) != null ? r : false), zt.push((i = e.startsExpr) != null ? i : false), Kt.push((a = e.prefix) != null ? a : false), ce.push(new or(t, e)), He; + } + function U(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var s, r, i, a; + return ++He, qt.set(t, He), Ut.push(t), it.push((s = e.binop) != null ? s : -1), _t.push((r = e.beforeExpr) != null ? r : false), zt.push((i = e.startsExpr) != null ? i : false), Kt.push((a = e.prefix) != null ? a : false), ce.push(new or("name", e)), He; + } + var bo = { bracketL: w("[", { beforeExpr: O, startsExpr: C }), bracketHashL: w("#[", { beforeExpr: O, startsExpr: C }), bracketBarL: w("[|", { beforeExpr: O, startsExpr: C }), bracketR: w("]"), bracketBarR: w("|]"), braceL: w("{", { beforeExpr: O, startsExpr: C }), braceBarL: w("{|", { beforeExpr: O, startsExpr: C }), braceHashL: w("#{", { beforeExpr: O, startsExpr: C }), braceR: w("}"), braceBarR: w("|}"), parenL: w("(", { beforeExpr: O, startsExpr: C }), parenR: w(")"), comma: w(",", { beforeExpr: O }), semi: w(";", { beforeExpr: O }), colon: w(":", { beforeExpr: O }), doubleColon: w("::", { beforeExpr: O }), dot: w("."), question: w("?", { beforeExpr: O }), questionDot: w("?."), arrow: w("=>", { beforeExpr: O }), template: w("template"), ellipsis: w("...", { beforeExpr: O }), backQuote: w("`", { startsExpr: C }), dollarBraceL: w("${", { beforeExpr: O, startsExpr: C }), templateTail: w("...`", { startsExpr: C }), templateNonTail: w("...${", { beforeExpr: O, startsExpr: C }), at: w("@"), hash: w("#", { startsExpr: C }), interpreterDirective: w("#!..."), eq: w("=", { beforeExpr: O, isAssign: Z }), assign: w("_=", { beforeExpr: O, isAssign: Z }), slashAssign: w("_=", { beforeExpr: O, isAssign: Z }), xorAssign: w("_=", { beforeExpr: O, isAssign: Z }), moduloAssign: w("_=", { beforeExpr: O, isAssign: Z }), incDec: w("++/--", { prefix: he, postfix: Co, startsExpr: C }), bang: w("!", { beforeExpr: O, prefix: he, startsExpr: C }), tilde: w("~", { beforeExpr: O, prefix: he, startsExpr: C }), doubleCaret: w("^^", { startsExpr: C }), doubleAt: w("@@", { startsExpr: C }), pipeline: te("|>", 0), nullishCoalescing: te("??", 1), logicalOR: te("||", 1), logicalAND: te("&&", 2), bitwiseOR: te("|", 3), bitwiseXOR: te("^", 4), bitwiseAND: te("&", 5), equality: te("==/!=/===/!==", 6), lt: te("/<=/>=", 7), gt: te("/<=/>=", 7), relational: te("/<=/>=", 7), bitShift: te("<>/>>>", 8), bitShiftL: te("<>/>>>", 8), bitShiftR: te("<>/>>>", 8), plusMin: w("+/-", { beforeExpr: O, binop: 9, prefix: he, startsExpr: C }), modulo: w("%", { binop: 10, startsExpr: C }), star: w("*", { binop: 10 }), slash: te("/", 10), exponent: w("**", { beforeExpr: O, binop: 11, rightAssociative: true }), _in: q("in", { beforeExpr: O, binop: 7 }), _instanceof: q("instanceof", { beforeExpr: O, binop: 7 }), _break: q("break"), _case: q("case", { beforeExpr: O }), _catch: q("catch"), _continue: q("continue"), _debugger: q("debugger"), _default: q("default", { beforeExpr: O }), _else: q("else", { beforeExpr: O }), _finally: q("finally"), _function: q("function", { startsExpr: C }), _if: q("if"), _return: q("return", { beforeExpr: O }), _switch: q("switch"), _throw: q("throw", { beforeExpr: O, prefix: he, startsExpr: C }), _try: q("try"), _var: q("var"), _const: q("const"), _with: q("with"), _new: q("new", { beforeExpr: O, startsExpr: C }), _this: q("this", { startsExpr: C }), _super: q("super", { startsExpr: C }), _class: q("class", { startsExpr: C }), _extends: q("extends", { beforeExpr: O }), _export: q("export"), _import: q("import", { startsExpr: C }), _null: q("null", { startsExpr: C }), _true: q("true", { startsExpr: C }), _false: q("false", { startsExpr: C }), _typeof: q("typeof", { beforeExpr: O, prefix: he, startsExpr: C }), _void: q("void", { beforeExpr: O, prefix: he, startsExpr: C }), _delete: q("delete", { beforeExpr: O, prefix: he, startsExpr: C }), _do: q("do", { isLoop: Ve, beforeExpr: O }), _for: q("for", { isLoop: Ve }), _while: q("while", { isLoop: Ve }), _as: U("as", { startsExpr: C }), _assert: U("assert", { startsExpr: C }), _async: U("async", { startsExpr: C }), _await: U("await", { startsExpr: C }), _from: U("from", { startsExpr: C }), _get: U("get", { startsExpr: C }), _let: U("let", { startsExpr: C }), _meta: U("meta", { startsExpr: C }), _of: U("of", { startsExpr: C }), _sent: U("sent", { startsExpr: C }), _set: U("set", { startsExpr: C }), _static: U("static", { startsExpr: C }), _yield: U("yield", { startsExpr: C }), _asserts: U("asserts", { startsExpr: C }), _checks: U("checks", { startsExpr: C }), _exports: U("exports", { startsExpr: C }), _global: U("global", { startsExpr: C }), _implements: U("implements", { startsExpr: C }), _intrinsic: U("intrinsic", { startsExpr: C }), _infer: U("infer", { startsExpr: C }), _is: U("is", { startsExpr: C }), _mixins: U("mixins", { startsExpr: C }), _proto: U("proto", { startsExpr: C }), _require: U("require", { startsExpr: C }), _keyof: U("keyof", { startsExpr: C }), _readonly: U("readonly", { startsExpr: C }), _unique: U("unique", { startsExpr: C }), _abstract: U("abstract", { startsExpr: C }), _declare: U("declare", { startsExpr: C }), _enum: U("enum", { startsExpr: C }), _module: U("module", { startsExpr: C }), _namespace: U("namespace", { startsExpr: C }), _interface: U("interface", { startsExpr: C }), _type: U("type", { startsExpr: C }), _opaque: U("opaque", { startsExpr: C }), name: w("name", { startsExpr: C }), string: w("string", { startsExpr: C }), num: w("num", { startsExpr: C }), bigint: w("bigint", { startsExpr: C }), decimal: w("decimal", { startsExpr: C }), regexp: w("regexp", { startsExpr: C }), privateName: w("#name", { startsExpr: C }), eof: w("eof"), jsxName: w("jsxName"), jsxText: w("jsxText", { beforeExpr: true }), jsxTagStart: w("jsxTagStart", { startsExpr: true }), jsxTagEnd: w("jsxTagEnd"), placeholder: w("%%", { startsExpr: true }) }; + function K(t) { + return t >= 93 && t <= 128; + } + function vo(t) { + return t <= 92; + } + function pe(t) { + return t >= 58 && t <= 128; + } + function hr(t) { + return t >= 58 && t <= 132; + } + function So(t) { + return _t[t]; + } + function Vt(t) { + return zt[t]; + } + function wo(t) { + return t >= 29 && t <= 33; + } + function lr(t) { + return t >= 125 && t <= 127; + } + function No(t) { + return t >= 90 && t <= 92; + } + function Ht(t) { + return t >= 58 && t <= 92; + } + function Io(t) { + return t >= 39 && t <= 59; + } + function ko(t) { + return t === 34; + } + function Do(t) { + return Kt[t]; + } + function Fo(t) { + return t >= 117 && t <= 119; + } + function Lo(t) { + return t >= 120 && t <= 126; + } + function Pe(t) { + return Ut[t]; + } + function at(t) { + return it[t]; + } + function Oo(t) { + return it[t] !== -1; + } + function Bo(t) { + return t === 57; + } + function nt(t) { + return t >= 24 && t <= 25; + } + function fe(t) { + return ce[t]; + } + ce[8].updateContext = (t) => { + t.pop(); + }, ce[5].updateContext = ce[7].updateContext = ce[23].updateContext = (t) => { + t.push(z.brace); + }, ce[22].updateContext = (t) => { + t[t.length - 1] === z.template ? t.pop() : t.push(z.template); + }, ce[138].updateContext = (t) => { + t.push(z.j_expr, z.j_oTag); + }; + var Wt = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC", ur = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F", Mo = new RegExp("[" + Wt + "]"), Ro = new RegExp("[" + Wt + ur + "]"); + Wt = ur = null; + var cr = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938], jo = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + function Gt(t, e) { + let s = 65536; + for (let r = 0, i = e.length; r < i; r += 2) { + if (s += e[r], s > t) + return false; + if (s += e[r + 1], s >= t) + return true; + } + return false; + } + function de(t) { + return t < 65 ? t === 36 : t <= 90 ? true : t < 97 ? t === 95 : t <= 122 ? true : t <= 65535 ? t >= 170 && Mo.test(String.fromCharCode(t)) : Gt(t, cr); + } + function Be(t) { + return t < 48 ? t === 36 : t < 58 ? true : t < 65 ? false : t <= 90 ? true : t < 97 ? t === 95 : t <= 122 ? true : t <= 65535 ? t >= 170 && Ro.test(String.fromCharCode(t)) : Gt(t, cr) || Gt(t, jo); + } + var Xt = { keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], strictBind: ["eval", "arguments"] }, qo = new Set(Xt.keyword), Uo = new Set(Xt.strict), _o = new Set(Xt.strictBind); + function pr(t, e) { + return e && t === "await" || t === "enum"; + } + function fr(t, e) { + return pr(t, e) || Uo.has(t); + } + function dr(t) { + return _o.has(t); + } + function mr(t, e) { + return fr(t, e) || dr(t); + } + function zo(t) { + return qo.has(t); + } + function Ko(t, e, s) { + return t === 64 && e === 64 && de(s); + } + var Vo = /* @__PURE__ */ new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); + function Ho(t) { + return Vo.has(t); + } + var Me = 0, We = 1, me = 2, Jt = 4, yr = 8, ot = 16, xr = 32, Se = 64, Yt = 128, ht = 256, lt = We | me | ht, ye = 1, Re = 2, gr = 4, Te = 8, ut = 16, Ar = 64, ct = 128, $t = 256, Qt = 512, Zt = 1024, es = 2048, Pr = ye | Re | Te | ct, xe = ye | 0 | Te | 0, pt = ye | 0 | gr | 0, Tr = ye | 0 | ut | 0, Wo = 0 | Re | 0 | ct, Go = 0 | Re | 0 | 0, Er = ye | Re | Te | $t, Cr = 0 | Zt, we = 0 | Ar, Xo = ye | 0 | 0 | Ar, Jo = Er | Qt, Yo = 0 | Zt, $o = es, ft = 4, ts = 2, ss = 1, rs = ts | ss, Qo = ts | ft, Zo = ss | ft, eh = ts, th = ss, is = 0, sh = class { + constructor() { + this.sawUnambiguousESM = false, this.ambiguousScriptDifferentAst = false; + } + hasPlugin(t) { + if (typeof t == "string") + return this.plugins.has(t); + { + let [e, s] = t; + if (!this.hasPlugin(e)) + return false; + let r = this.plugins.get(e); + for (let i of Object.keys(s)) + if ((r == null ? void 0 : r[i]) !== s[i]) + return false; + return true; + } + } + getPluginOption(t, e) { + var s; + return (s = this.plugins.get(t)) == null ? void 0 : s[e]; + } + }; + function br(t, e) { + t.trailingComments === void 0 ? t.trailingComments = e : t.trailingComments.unshift(...e); + } + function rh(t, e) { + t.leadingComments === void 0 ? t.leadingComments = e : t.leadingComments.unshift(...e); + } + function Ge(t, e) { + t.innerComments === void 0 ? t.innerComments = e : t.innerComments.unshift(...e); + } + function Xe(t, e, s) { + let r = null, i = e.length; + for (; r === null && i > 0; ) + r = e[--i]; + r === null || r.start > s.start ? Ge(t, s.comments) : br(r, s.comments); + } + var ih = class extends sh { + addComment(t) { + this.filename && (t.loc.filename = this.filename), this.state.comments.push(t); + } + processComment(t) { + let { commentStack: e } = this.state, s = e.length; + if (s === 0) + return; + let r = s - 1, i = e[r]; + i.start === t.end && (i.leadingNode = t, r--); + let { start: a } = t; + for (; r >= 0; r--) { + let n = e[r], o = n.end; + if (o > a) + n.containingNode = t, this.finalizeComment(n), e.splice(r, 1); + else { + o === a && (n.trailingNode = t); + break; + } + } + } + finalizeComment(t) { + let { comments: e } = t; + if (t.leadingNode !== null || t.trailingNode !== null) + t.leadingNode !== null && br(t.leadingNode, e), t.trailingNode !== null && rh(t.trailingNode, e); + else { + let { containingNode: s, start: r } = t; + if (this.input.charCodeAt(r - 1) === 44) + switch (s.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + Xe(s, s.properties, t); + break; + case "CallExpression": + case "OptionalCallExpression": + Xe(s, s.arguments, t); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + Xe(s, s.params, t); + break; + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + Xe(s, s.elements, t); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + Xe(s, s.specifiers, t); + break; + default: + Ge(s, e); + } + else + Ge(s, e); + } + } + finalizeRemainingComments() { + let { commentStack: t } = this.state; + for (let e = t.length - 1; e >= 0; e--) + this.finalizeComment(t[e]); + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(t) { + let { commentStack: e } = this.state, { length: s } = e; + if (s === 0) + return; + let r = e[s - 1]; + r.leadingNode === t && (r.leadingNode = null); + } + takeSurroundingComments(t, e, s) { + let { commentStack: r } = this.state, i = r.length; + if (i === 0) + return; + let a = i - 1; + for (; a >= 0; a--) { + let n = r[a], o = n.end; + if (n.start === s) + n.leadingNode = t; + else if (o === e) + n.trailingNode = t; + else if (o < e) + break; + } + } + }, as = /\r\n?|[\n\u2028\u2029]/, dt = new RegExp(as.source, "g"); + function Ne(t) { + switch (t) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } + } + var ns = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g, ah = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/y, vr = new RegExp("(?=(" + ah.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y"); + function nh(t) { + switch (t) { + case 9: + case 11: + case 12: + case 32: + case 160: + case 5760: + case 8192: + case 8193: + case 8194: + case 8195: + case 8196: + case 8197: + case 8198: + case 8199: + case 8200: + case 8201: + case 8202: + case 8239: + case 8287: + case 12288: + case 65279: + return true; + default: + return false; + } + } + var Sr = class { + constructor() { + this.strict = void 0, this.curLine = void 0, this.lineStart = void 0, this.startLoc = void 0, this.endLoc = void 0, this.errors = [], this.potentialArrowAt = -1, this.noArrowAt = [], this.noArrowParamsConversionAt = [], this.maybeInArrowParameters = false, this.inType = false, this.noAnonFunctionType = false, this.hasFlowComment = false, this.isAmbientContext = false, this.inAbstractClass = false, this.inDisallowConditionalTypesContext = false, this.topicContext = { maxNumOfResolvableTopics: 0, maxTopicIndex: null }, this.soloAwait = false, this.inFSharpPipelineDirectBody = false, this.labels = [], this.decoratorStack = [[]], this.comments = [], this.commentStack = [], this.pos = 0, this.type = 135, this.value = null, this.start = 0, this.end = 0, this.lastTokEndLoc = null, this.lastTokStartLoc = null, this.lastTokStart = 0, this.context = [z.brace], this.canStartJSXElement = true, this.containsEsc = false, this.strictErrors = /* @__PURE__ */ new Map(), this.tokensLength = 0; + } + init(t) { + let { strictMode: e, sourceType: s, startLine: r, startColumn: i } = t; + this.strict = e === false ? false : e === true ? true : s === "module", this.curLine = r, this.lineStart = -i, this.startLoc = this.endLoc = new p(r, i, 0); + } + curPosition() { + return new p(this.curLine, this.pos - this.lineStart, this.pos); + } + clone(t) { + let e = new Sr(), s = Object.keys(this); + for (let r = 0, i = s.length; r < i; r++) { + let a = s[r], n = this[a]; + !t && Array.isArray(n) && (n = n.slice()), e[a] = n; + } + return e; + } + }, oh = ["at"], hh = ["at"], lh = function(e) { + return e >= 48 && e <= 57; + }, uh = /* @__PURE__ */ new Set([103, 109, 115, 105, 121, 117, 100, 118]), wr = { decBinOct: /* @__PURE__ */ new Set([46, 66, 69, 79, 95, 98, 101, 111]), hex: /* @__PURE__ */ new Set([46, 88, 95, 120]) }, mt = { bin: (t) => t === 48 || t === 49, oct: (t) => t >= 48 && t <= 55, dec: (t) => t >= 48 && t <= 57, hex: (t) => t >= 48 && t <= 57 || t >= 65 && t <= 70 || t >= 97 && t <= 102 }, Ee = class { + constructor(t) { + this.type = t.type, this.value = t.value, this.start = t.start, this.end = t.end, this.loc = new d(t.startLoc, t.endLoc); + } + }, ch = class extends ih { + constructor(t, e) { + super(), this.isLookahead = void 0, this.tokens = [], this.state = new Sr(), this.state.init(t), this.input = e, this.length = e.length, this.isLookahead = false; + } + pushToken(t) { + this.tokens.length = this.state.tokensLength, this.tokens.push(t), ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(), this.options.tokens && this.pushToken(new Ee(this.state)), this.state.lastTokStart = this.state.start, this.state.lastTokEndLoc = this.state.endLoc, this.state.lastTokStartLoc = this.state.startLoc, this.nextToken(); + } + eat(t) { + return this.match(t) ? (this.next(), true) : false; + } + match(t) { + return this.state.type === t; + } + createLookaheadState(t) { + return { pos: t.pos, value: null, type: t.type, start: t.start, end: t.end, context: [this.curContext()], inType: t.inType, startLoc: t.startLoc, lastTokEndLoc: t.lastTokEndLoc, curLine: t.curLine, lineStart: t.lineStart, curPosition: t.curPosition }; + } + lookahead() { + let t = this.state; + this.state = this.createLookaheadState(t), this.isLookahead = true, this.nextToken(), this.isLookahead = false; + let e = this.state; + return this.state = t, e; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(t) { + return ns.lastIndex = t, ns.test(this.input) ? ns.lastIndex : t; + } + lookaheadCharCode() { + return this.input.charCodeAt(this.nextTokenStart()); + } + codePointAtPos(t) { + let e = this.input.charCodeAt(t); + if ((e & 64512) === 55296 && ++t < this.input.length) { + let s = this.input.charCodeAt(t); + (s & 64512) === 56320 && (e = 65536 + ((e & 1023) << 10) + (s & 1023)); + } + return e; + } + setStrict(t) { + this.state.strict = t, t && (this.state.strictErrors.forEach((e) => { + let [s, r] = e; + return this.raise(s, { at: r }); + }), this.state.strictErrors.clear()); + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + if (this.skipSpace(), this.state.start = this.state.pos, this.isLookahead || (this.state.startLoc = this.state.curPosition()), this.state.pos >= this.length) { + this.finishToken(135); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment() { + let t; + this.isLookahead || (t = this.state.curPosition()); + let e = this.state.pos, s = this.input.indexOf("*/", e + 2); + if (s === -1) + throw this.raise(u.UnterminatedComment, { at: this.state.curPosition() }); + for (this.state.pos = s + 2, dt.lastIndex = e + 2; dt.test(this.input) && dt.lastIndex <= s; ) + ++this.state.curLine, this.state.lineStart = dt.lastIndex; + if (this.isLookahead) + return; + let r = { type: "CommentBlock", value: this.input.slice(e + 2, s), start: e, end: s + 2, loc: new d(t, this.state.curPosition()) }; + return this.options.tokens && this.pushToken(r), r; + } + skipLineComment(t) { + let e = this.state.pos, s; + this.isLookahead || (s = this.state.curPosition()); + let r = this.input.charCodeAt(this.state.pos += t); + if (this.state.pos < this.length) + for (; !Ne(r) && ++this.state.pos < this.length; ) + r = this.input.charCodeAt(this.state.pos); + if (this.isLookahead) + return; + let i = this.state.pos, a = this.input.slice(e + t, i), n = { type: "CommentLine", value: a, start: e, end: i, loc: new d(s, this.state.curPosition()) }; + return this.options.tokens && this.pushToken(n), n; + } + skipSpace() { + let t = this.state.pos, e = []; + e: + for (; this.state.pos < this.length; ) { + let s = this.input.charCodeAt(this.state.pos); + switch (s) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + this.input.charCodeAt(this.state.pos + 1) === 10 && ++this.state.pos; + case 10: + case 8232: + case 8233: + ++this.state.pos, ++this.state.curLine, this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: { + let r = this.skipBlockComment(); + r !== void 0 && (this.addComment(r), this.options.attachComment && e.push(r)); + break; + } + case 47: { + let r = this.skipLineComment(2); + r !== void 0 && (this.addComment(r), this.options.attachComment && e.push(r)); + break; + } + default: + break e; + } + break; + default: + if (nh(s)) + ++this.state.pos; + else if (s === 45 && !this.inModule) { + let r = this.state.pos; + if (this.input.charCodeAt(r + 1) === 45 && this.input.charCodeAt(r + 2) === 62 && (t === 0 || this.state.lineStart > t)) { + let i = this.skipLineComment(3); + i !== void 0 && (this.addComment(i), this.options.attachComment && e.push(i)); + } else + break e; + } else if (s === 60 && !this.inModule) { + let r = this.state.pos; + if (this.input.charCodeAt(r + 1) === 33 && this.input.charCodeAt(r + 2) === 45 && this.input.charCodeAt(r + 3) === 45) { + let i = this.skipLineComment(4); + i !== void 0 && (this.addComment(i), this.options.attachComment && e.push(i)); + } else + break e; + } else + break e; + } + } + if (e.length > 0) { + let s = this.state.pos, r = { start: t, end: s, comments: e, leadingNode: null, trailingNode: null, containingNode: null }; + this.state.commentStack.push(r); + } + } + finishToken(t, e) { + this.state.end = this.state.pos, this.state.endLoc = this.state.curPosition(); + let s = this.state.type; + this.state.type = t, this.state.value = e, this.isLookahead || this.updateContext(s); + } + replaceToken(t) { + this.state.type = t, this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) + return; + let t = this.state.pos + 1, e = this.codePointAtPos(t); + if (e >= 48 && e <= 57) + throw this.raise(u.UnexpectedDigitAfterHash, { at: this.state.curPosition() }); + if (e === 123 || e === 91 && this.hasPlugin("recordAndTuple")) { + if (this.expectPlugin("recordAndTuple"), this.getPluginOption("recordAndTuple", "syntaxType") !== "hash") + throw this.raise(e === 123 ? u.RecordExpressionHashIncorrectStartSyntaxType : u.TupleExpressionHashIncorrectStartSyntaxType, { at: this.state.curPosition() }); + this.state.pos += 2, e === 123 ? this.finishToken(7) : this.finishToken(1); + } else + de(e) ? (++this.state.pos, this.finishToken(134, this.readWord1(e))) : e === 92 ? (++this.state.pos, this.finishToken(134, this.readWord1())) : this.finishOp(27, 1); + } + readToken_dot() { + let t = this.input.charCodeAt(this.state.pos + 1); + if (t >= 48 && t <= 57) { + this.readNumber(true); + return; + } + t === 46 && this.input.charCodeAt(this.state.pos + 2) === 46 ? (this.state.pos += 3, this.finishToken(21)) : (++this.state.pos, this.finishToken(16)); + } + readToken_slash() { + this.input.charCodeAt(this.state.pos + 1) === 61 ? this.finishOp(31, 2) : this.finishOp(56, 1); + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) + return false; + let t = this.input.charCodeAt(this.state.pos + 1); + if (t !== 33) + return false; + let e = this.state.pos; + for (this.state.pos += 1; !Ne(t) && ++this.state.pos < this.length; ) + t = this.input.charCodeAt(this.state.pos); + let s = this.input.slice(e + 2, this.state.pos); + return this.finishToken(28, s), true; + } + readToken_mult_modulo(t) { + let e = t === 42 ? 55 : 54, s = 1, r = this.input.charCodeAt(this.state.pos + 1); + t === 42 && r === 42 && (s++, r = this.input.charCodeAt(this.state.pos + 2), e = 57), r === 61 && !this.state.inType && (s++, e = t === 37 ? 33 : 30), this.finishOp(e, s); + } + readToken_pipe_amp(t) { + let e = this.input.charCodeAt(this.state.pos + 1); + if (e === t) { + this.input.charCodeAt(this.state.pos + 2) === 61 ? this.finishOp(30, 3) : this.finishOp(t === 124 ? 41 : 42, 2); + return; + } + if (t === 124) { + if (e === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && e === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") + throw this.raise(u.RecordExpressionBarIncorrectEndSyntaxType, { at: this.state.curPosition() }); + this.state.pos += 2, this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && e === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") + throw this.raise(u.TupleExpressionBarIncorrectEndSyntaxType, { at: this.state.curPosition() }); + this.state.pos += 2, this.finishToken(4); + return; + } + } + if (e === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(t === 124 ? 43 : 45, 1); + } + readToken_caret() { + let t = this.input.charCodeAt(this.state.pos + 1); + if (t === 61 && !this.state.inType) + this.finishOp(32, 2); + else if (t === 94 && this.hasPlugin(["pipelineOperator", { proposal: "hack", topicToken: "^^" }])) { + if (this.finishOp(37, 2), this.input.codePointAt(this.state.pos) === 94) + throw this.unexpected(); + } else + this.finishOp(44, 1); + } + readToken_atSign() { + this.input.charCodeAt(this.state.pos + 1) === 64 && this.hasPlugin(["pipelineOperator", { proposal: "hack", topicToken: "@@" }]) ? this.finishOp(38, 2) : this.finishOp(26, 1); + } + readToken_plus_min(t) { + let e = this.input.charCodeAt(this.state.pos + 1); + if (e === t) { + this.finishOp(34, 2); + return; + } + e === 61 ? this.finishOp(30, 2) : this.finishOp(53, 1); + } + readToken_lt() { + let { pos: t } = this.state, e = this.input.charCodeAt(t + 1); + if (e === 60) { + if (this.input.charCodeAt(t + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (e === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + let { pos: t } = this.state, e = this.input.charCodeAt(t + 1); + if (e === 62) { + let s = this.input.charCodeAt(t + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(t + s) === 61) { + this.finishOp(30, s + 1); + return; + } + this.finishOp(52, s); + return; + } + if (e === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(t) { + let e = this.input.charCodeAt(this.state.pos + 1); + if (e === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (t === 61 && e === 62) { + this.state.pos += 2, this.finishToken(19); + return; + } + this.finishOp(t === 61 ? 29 : 35, 1); + } + readToken_question() { + let t = this.input.charCodeAt(this.state.pos + 1), e = this.input.charCodeAt(this.state.pos + 2); + t === 63 ? e === 61 ? this.finishOp(30, 3) : this.finishOp(40, 2) : t === 46 && !(e >= 48 && e <= 57) ? (this.state.pos += 2, this.finishToken(18)) : (++this.state.pos, this.finishToken(17)); + } + getTokenFromCode(t) { + switch (t) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos, this.finishToken(10); + return; + case 41: + ++this.state.pos, this.finishToken(11); + return; + case 59: + ++this.state.pos, this.finishToken(13); + return; + case 44: + ++this.state.pos, this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") + throw this.raise(u.TupleExpressionBarIncorrectStartSyntaxType, { at: this.state.curPosition() }); + this.state.pos += 2, this.finishToken(2); + } else + ++this.state.pos, this.finishToken(0); + return; + case 93: + ++this.state.pos, this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") + throw this.raise(u.RecordExpressionBarIncorrectStartSyntaxType, { at: this.state.curPosition() }); + this.state.pos += 2, this.finishToken(6); + } else + ++this.state.pos, this.finishToken(5); + return; + case 125: + ++this.state.pos, this.finishToken(8); + return; + case 58: + this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58 ? this.finishOp(15, 2) : (++this.state.pos, this.finishToken(14)); + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: { + let e = this.input.charCodeAt(this.state.pos + 1); + if (e === 120 || e === 88) { + this.readRadixNumber(16); + return; + } + if (e === 111 || e === 79) { + this.readRadixNumber(8); + return; + } + if (e === 98 || e === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(t); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(t); + return; + case 124: + case 38: + this.readToken_pipe_amp(t); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(t); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(t); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (de(t)) { + this.readWord(t); + return; + } + } + throw this.raise(u.InvalidOrUnexpectedToken, { at: this.state.curPosition(), unexpected: String.fromCodePoint(t) }); + } + finishOp(t, e) { + let s = this.input.slice(this.state.pos, this.state.pos + e); + this.state.pos += e, this.finishToken(t, s); + } + readRegexp() { + let t = this.state.startLoc, e = this.state.start + 1, s, r, { pos: i } = this.state; + for (; ; ++i) { + if (i >= this.length) + throw this.raise(u.UnterminatedRegExp, { at: m(t, 1) }); + let c = this.input.charCodeAt(i); + if (Ne(c)) + throw this.raise(u.UnterminatedRegExp, { at: m(t, 1) }); + if (s) + s = false; + else { + if (c === 91) + r = true; + else if (c === 93 && r) + r = false; + else if (c === 47 && !r) + break; + s = c === 92; + } + } + let a = this.input.slice(e, i); + ++i; + let n = "", o = () => m(t, i + 2 - e); + for (; i < this.length; ) { + let c = this.codePointAtPos(i), f = String.fromCharCode(c); + if (uh.has(c)) + c === 118 ? (this.expectPlugin("regexpUnicodeSets", o()), n.includes("u") && this.raise(u.IncompatibleRegExpUVFlags, { at: o() })) : c === 117 && n.includes("v") && this.raise(u.IncompatibleRegExpUVFlags, { at: o() }), n.includes(f) && this.raise(u.DuplicateRegExpFlags, { at: o() }); + else if (Be(c) || c === 92) + this.raise(u.MalformedRegExpFlags, { at: o() }); + else + break; + ++i, n += f; + } + this.state.pos = i, this.finishToken(133, { pattern: a, flags: n }); + } + readInt(t, e, s) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true, i = this.state.pos, a = t === 16 ? wr.hex : wr.decBinOct, n = t === 16 ? mt.hex : t === 10 ? mt.dec : t === 8 ? mt.oct : mt.bin, o = false, c = 0; + for (let f = 0, y = e == null ? 1 / 0 : e; f < y; ++f) { + let P = this.input.charCodeAt(this.state.pos), v; + if (P === 95 && r !== "bail") { + let N = this.input.charCodeAt(this.state.pos - 1), B = this.input.charCodeAt(this.state.pos + 1); + r ? (Number.isNaN(B) || !n(B) || a.has(N) || a.has(B)) && this.raise(u.UnexpectedNumericSeparator, { at: this.state.curPosition() }) : this.raise(u.NumericSeparatorInEscapeSequence, { at: this.state.curPosition() }), ++this.state.pos; + continue; + } + if (P >= 97 ? v = P - 97 + 10 : P >= 65 ? v = P - 65 + 10 : lh(P) ? v = P - 48 : v = 1 / 0, v >= t) + if (this.options.errorRecovery && v <= 9) + v = 0, this.raise(u.InvalidDigit, { at: this.state.curPosition(), radix: t }); + else if (s) + v = 0, o = true; + else + break; + ++this.state.pos, c = c * t + v; + } + return this.state.pos === i || e != null && this.state.pos - i !== e || o ? null : c; + } + readRadixNumber(t) { + let e = this.state.curPosition(), s = false; + this.state.pos += 2; + let r = this.readInt(t); + r == null && this.raise(u.InvalidDigit, { at: m(e, 2), radix: t }); + let i = this.input.charCodeAt(this.state.pos); + if (i === 110) + ++this.state.pos, s = true; + else if (i === 109) + throw this.raise(u.InvalidDecimal, { at: e }); + if (de(this.codePointAtPos(this.state.pos))) + throw this.raise(u.NumberIdentifier, { at: this.state.curPosition() }); + if (s) { + let a = this.input.slice(e.index, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(131, a); + return; + } + this.finishToken(130, r); + } + readNumber(t) { + let e = this.state.pos, s = this.state.curPosition(), r = false, i = false, a = false, n = false, o = false; + !t && this.readInt(10) === null && this.raise(u.InvalidNumber, { at: this.state.curPosition() }); + let c = this.state.pos - e >= 2 && this.input.charCodeAt(e) === 48; + if (c) { + let v = this.input.slice(e, this.state.pos); + if (this.recordStrictModeErrors(u.StrictOctalLiteral, { at: s }), !this.state.strict) { + let N = v.indexOf("_"); + N > 0 && this.raise(u.ZeroDigitNumericSeparator, { at: m(s, N) }); + } + o = c && !/[89]/.test(v); + } + let f = this.input.charCodeAt(this.state.pos); + if (f === 46 && !o && (++this.state.pos, this.readInt(10), r = true, f = this.input.charCodeAt(this.state.pos)), (f === 69 || f === 101) && !o && (f = this.input.charCodeAt(++this.state.pos), (f === 43 || f === 45) && ++this.state.pos, this.readInt(10) === null && this.raise(u.InvalidOrMissingExponent, { at: s }), r = true, n = true, f = this.input.charCodeAt(this.state.pos)), f === 110 && ((r || c) && this.raise(u.InvalidBigIntLiteral, { at: s }), ++this.state.pos, i = true), f === 109 && (this.expectPlugin("decimal", this.state.curPosition()), (n || c) && this.raise(u.InvalidDecimal, { at: s }), ++this.state.pos, a = true), de(this.codePointAtPos(this.state.pos))) + throw this.raise(u.NumberIdentifier, { at: this.state.curPosition() }); + let y = this.input.slice(e, this.state.pos).replace(/[_mn]/g, ""); + if (i) { + this.finishToken(131, y); + return; + } + if (a) { + this.finishToken(132, y); + return; + } + let P = o ? parseInt(y, 8) : parseFloat(y); + this.finishToken(130, P); + } + readCodePoint(t) { + let e = this.input.charCodeAt(this.state.pos), s; + if (e === 123) { + if (++this.state.pos, s = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, true, t), ++this.state.pos, s !== null && s > 1114111) + if (t) + this.raise(u.InvalidCodePoint, { at: this.state.curPosition() }); + else + return null; + } else + s = this.readHexChar(4, false, t); + return s; + } + readString(t) { + let e = "", s = ++this.state.pos; + for (; ; ) { + if (this.state.pos >= this.length) + throw this.raise(u.UnterminatedString, { at: this.state.startLoc }); + let r = this.input.charCodeAt(this.state.pos); + if (r === t) + break; + if (r === 92) + e += this.input.slice(s, this.state.pos), e += this.readEscapedChar(false), s = this.state.pos; + else if (r === 8232 || r === 8233) + ++this.state.pos, ++this.state.curLine, this.state.lineStart = this.state.pos; + else { + if (Ne(r)) + throw this.raise(u.UnterminatedString, { at: this.state.startLoc }); + ++this.state.pos; + } + } + e += this.input.slice(s, this.state.pos++), this.finishToken(129, e); + } + readTemplateContinuation() { + this.match(8) || this.unexpected(null, 8), this.state.pos--, this.readTemplateToken(); + } + readTemplateToken() { + let t = "", e = this.state.pos, s = false; + for (++this.state.pos; ; ) { + if (this.state.pos >= this.length) + throw this.raise(u.UnterminatedTemplate, { at: m(this.state.startLoc, 1) }); + let r = this.input.charCodeAt(this.state.pos); + if (r === 96) { + ++this.state.pos, t += this.input.slice(e, this.state.pos), this.finishToken(24, s ? null : t); + return; + } + if (r === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) { + this.state.pos += 2, t += this.input.slice(e, this.state.pos), this.finishToken(25, s ? null : t); + return; + } + if (r === 92) { + t += this.input.slice(e, this.state.pos); + let i = this.readEscapedChar(true); + i === null ? s = true : t += i, e = this.state.pos; + } else if (Ne(r)) { + switch (t += this.input.slice(e, this.state.pos), ++this.state.pos, r) { + case 13: + this.input.charCodeAt(this.state.pos) === 10 && ++this.state.pos; + case 10: + t += ` +`; + break; + default: + t += String.fromCharCode(r); + break; + } + ++this.state.curLine, this.state.lineStart = this.state.pos, e = this.state.pos; + } else + ++this.state.pos; + } + } + recordStrictModeErrors(t, e) { + let { at: s } = e, r = s.index; + this.state.strict && !this.state.strictErrors.has(r) ? this.raise(t, { at: s }) : this.state.strictErrors.set(r, [t, s]); + } + readEscapedChar(t) { + let e = !t, s = this.input.charCodeAt(++this.state.pos); + switch (++this.state.pos, s) { + case 110: + return ` +`; + case 114: + return "\r"; + case 120: { + let r = this.readHexChar(2, false, e); + return r === null ? null : String.fromCharCode(r); + } + case 117: { + let r = this.readCodePoint(e); + return r === null ? null : String.fromCodePoint(r); + } + case 116: + return " "; + case 98: + return "\b"; + case 118: + return "\v"; + case 102: + return "\f"; + case 13: + this.input.charCodeAt(this.state.pos) === 10 && ++this.state.pos; + case 10: + this.state.lineStart = this.state.pos, ++this.state.curLine; + case 8232: + case 8233: + return ""; + case 56: + case 57: + if (t) + return null; + this.recordStrictModeErrors(u.StrictNumericEscape, { at: m(this.state.curPosition(), -1) }); + default: + if (s >= 48 && s <= 55) { + let r = m(this.state.curPosition(), -1), a = this.input.slice(this.state.pos - 1, this.state.pos + 2).match(/^[0-7]+/)[0], n = parseInt(a, 8); + n > 255 && (a = a.slice(0, -1), n = parseInt(a, 8)), this.state.pos += a.length - 1; + let o = this.input.charCodeAt(this.state.pos); + if (a !== "0" || o === 56 || o === 57) { + if (t) + return null; + this.recordStrictModeErrors(u.StrictNumericEscape, { at: r }); + } + return String.fromCharCode(n); + } + return String.fromCharCode(s); + } + } + readHexChar(t, e, s) { + let r = this.state.curPosition(), i = this.readInt(16, t, e, false); + return i === null && (s ? this.raise(u.InvalidEscapeSequence, { at: r }) : this.state.pos = r.index - 1), i; + } + readWord1(t) { + this.state.containsEsc = false; + let e = "", s = this.state.pos, r = this.state.pos; + for (t !== void 0 && (this.state.pos += t <= 65535 ? 1 : 2); this.state.pos < this.length; ) { + let i = this.codePointAtPos(this.state.pos); + if (Be(i)) + this.state.pos += i <= 65535 ? 1 : 2; + else if (i === 92) { + this.state.containsEsc = true, e += this.input.slice(r, this.state.pos); + let a = this.state.curPosition(), n = this.state.pos === s ? de : Be; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(u.MissingUnicodeEscape, { at: this.state.curPosition() }), r = this.state.pos - 1; + continue; + } + ++this.state.pos; + let o = this.readCodePoint(true); + o !== null && (n(o) || this.raise(u.EscapedCharNotAnIdentifier, { at: a }), e += String.fromCodePoint(o)), r = this.state.pos; + } else + break; + } + return e + this.input.slice(r, this.state.pos); + } + readWord(t) { + let e = this.readWord1(t), s = qt.get(e); + s !== void 0 ? this.finishToken(s, Pe(s)) : this.finishToken(128, e); + } + checkKeywordEscapes() { + let { type: t } = this.state; + Ht(t) && this.state.containsEsc && this.raise(u.InvalidEscapedReservedWord, { at: this.state.startLoc, reservedWord: Pe(t) }); + } + raise(t, e) { + let { at: s } = e, r = l(e, oh), i = s instanceof p ? s : s.loc.start, a = t({ loc: i, details: r }); + if (!this.options.errorRecovery) + throw a; + return this.isLookahead || this.state.errors.push(a), a; + } + raiseOverwrite(t, e) { + let { at: s } = e, r = l(e, hh), i = s instanceof p ? s : s.loc.start, a = i.index, n = this.state.errors; + for (let o = n.length - 1; o >= 0; o--) { + let c = n[o]; + if (c.loc.index === a) + return n[o] = t({ loc: i, details: r }); + if (c.loc.index < a) + break; + } + return this.raise(t, e); + } + updateContext(t) { + } + unexpected(t, e) { + throw this.raise(u.UnexpectedToken, { expected: e ? Pe(e) : null, at: t != null ? t : this.state.startLoc }); + } + expectPlugin(t, e) { + if (this.hasPlugin(t)) + return true; + throw this.raise(u.MissingPlugin, { at: e != null ? e : this.state.startLoc, missingPlugin: [t] }); + } + expectOnePlugin(t) { + if (!t.some((e) => this.hasPlugin(e))) + throw this.raise(u.MissingOneOfPlugins, { at: this.state.startLoc, missingPlugin: t }); + } + }, os = class { + constructor(t) { + this.var = /* @__PURE__ */ new Set(), this.lexical = /* @__PURE__ */ new Set(), this.functions = /* @__PURE__ */ new Set(), this.flags = t; + } + }, hs = class { + constructor(t, e) { + this.parser = void 0, this.scopeStack = [], this.inModule = void 0, this.undefinedExports = /* @__PURE__ */ new Map(), this.parser = t, this.inModule = e; + } + get inFunction() { + return (this.currentVarScopeFlags() & me) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & ot) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & xr) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & Se) > 0; + } + get inClassAndNotInNonArrowFunction() { + let t = this.currentThisScopeFlags(); + return (t & Se) > 0 && (t & me) === 0; + } + get inStaticBlock() { + for (let t = this.scopeStack.length - 1; ; t--) { + let { flags: e } = this.scopeStack[t]; + if (e & Yt) + return true; + if (e & (lt | Se)) + return false; + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & me) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(t) { + return new os(t); + } + enter(t) { + this.scopeStack.push(this.createScope(t)); + } + exit() { + this.scopeStack.pop(); + } + treatFunctionsAsVarInScope(t) { + return !!(t.flags & (me | Yt) || !this.parser.inModule && t.flags & We); + } + declareName(t, e, s) { + let r = this.currentScope(); + if (e & Te || e & ut) + this.checkRedeclarationInScope(r, t, e, s), e & ut ? r.functions.add(t) : r.lexical.add(t), e & Te && this.maybeExportDefined(r, t); + else if (e & gr) + for (let i = this.scopeStack.length - 1; i >= 0 && (r = this.scopeStack[i], this.checkRedeclarationInScope(r, t, e, s), r.var.add(t), this.maybeExportDefined(r, t), !(r.flags & lt)); --i) + ; + this.parser.inModule && r.flags & We && this.undefinedExports.delete(t); + } + maybeExportDefined(t, e) { + this.parser.inModule && t.flags & We && this.undefinedExports.delete(e); + } + checkRedeclarationInScope(t, e, s, r) { + this.isRedeclaredInScope(t, e, s) && this.parser.raise(u.VarRedeclaration, { at: r, identifierName: e }); + } + isRedeclaredInScope(t, e, s) { + return s & ye ? s & Te ? t.lexical.has(e) || t.functions.has(e) || t.var.has(e) : s & ut ? t.lexical.has(e) || !this.treatFunctionsAsVarInScope(t) && t.var.has(e) : t.lexical.has(e) && !(t.flags & yr && t.lexical.values().next().value === e) || !this.treatFunctionsAsVarInScope(t) && t.functions.has(e) : false; + } + checkLocalExport(t) { + let { name: e } = t, s = this.scopeStack[0]; + !s.lexical.has(e) && !s.var.has(e) && !s.functions.has(e) && this.undefinedExports.set(e, t.loc.start); + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let t = this.scopeStack.length - 1; ; t--) { + let { flags: e } = this.scopeStack[t]; + if (e & lt) + return e; + } + } + currentThisScopeFlags() { + for (let t = this.scopeStack.length - 1; ; t--) { + let { flags: e } = this.scopeStack[t]; + if (e & (lt | Se) && !(e & Jt)) + return e; + } + } + }, ph = class extends os { + constructor() { + super(...arguments), this.declareFunctions = /* @__PURE__ */ new Set(); + } + }, fh = class extends hs { + createScope(t) { + return new ph(t); + } + declareName(t, e, s) { + let r = this.currentScope(); + if (e & es) { + this.checkRedeclarationInScope(r, t, e, s), this.maybeExportDefined(r, t), r.declareFunctions.add(t); + return; + } + super.declareName(...arguments); + } + isRedeclaredInScope(t, e, s) { + return super.isRedeclaredInScope(...arguments) ? true : s & es ? !t.declareFunctions.has(e) && (t.lexical.has(e) || t.functions.has(e)) : false; + } + checkLocalExport(t) { + this.scopeStack[0].declareFunctions.has(t.name) || super.checkLocalExport(t); + } + }, dh = class { + constructor() { + this.privateNames = /* @__PURE__ */ new Set(), this.loneAccessors = /* @__PURE__ */ new Map(), this.undefinedPrivateNames = /* @__PURE__ */ new Map(); + } + }, mh = class { + constructor(t) { + this.parser = void 0, this.stack = [], this.undefinedPrivateNames = /* @__PURE__ */ new Map(), this.parser = t; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new dh()); + } + exit() { + let t = this.stack.pop(), e = this.current(); + for (let [s, r] of Array.from(t.undefinedPrivateNames)) + e ? e.undefinedPrivateNames.has(s) || e.undefinedPrivateNames.set(s, r) : this.parser.raise(u.InvalidPrivateFieldResolution, { at: r, identifierName: s }); + } + declarePrivateName(t, e, s) { + let { privateNames: r, loneAccessors: i, undefinedPrivateNames: a } = this.current(), n = r.has(t); + if (e & rs) { + let o = n && i.get(t); + if (o) { + let c = o & ft, f = e & ft, y = o & rs, P = e & rs; + n = y === P || c !== f, n || i.delete(t); + } else + n || i.set(t, e); + } + n && this.parser.raise(u.PrivateNameRedeclaration, { at: s, identifierName: t }), r.add(t), a.delete(t); + } + usePrivateName(t, e) { + let s; + for (s of this.stack) + if (s.privateNames.has(t)) + return; + s ? s.undefinedPrivateNames.set(t, e) : this.parser.raise(u.InvalidPrivateFieldResolution, { at: e, identifierName: t }); + } + }, yh = 0, Nr = 1, ls = 2, Ir = 3, yt = class { + constructor() { + let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : yh; + this.type = void 0, this.type = t; + } + canBeArrowParameterDeclaration() { + return this.type === ls || this.type === Nr; + } + isCertainlyParameterDeclaration() { + return this.type === Ir; + } + }, kr = class extends yt { + constructor(t) { + super(t), this.declarationErrors = /* @__PURE__ */ new Map(); + } + recordDeclarationError(t, e) { + let { at: s } = e, r = s.index; + this.declarationErrors.set(r, [t, s]); + } + clearDeclarationError(t) { + this.declarationErrors.delete(t); + } + iterateErrors(t) { + this.declarationErrors.forEach(t); + } + }, xh = class { + constructor(t) { + this.parser = void 0, this.stack = [new yt()], this.parser = t; + } + enter(t) { + this.stack.push(t); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(t, e) { + let { at: s } = e, r = { at: s.loc.start }, { stack: i } = this, a = i.length - 1, n = i[a]; + for (; !n.isCertainlyParameterDeclaration(); ) { + if (n.canBeArrowParameterDeclaration()) + n.recordDeclarationError(t, r); + else + return; + n = i[--a]; + } + this.parser.raise(t, r); + } + recordArrowParemeterBindingError(t, e) { + let { at: s } = e, { stack: r } = this, i = r[r.length - 1], a = { at: s.loc.start }; + if (i.isCertainlyParameterDeclaration()) + this.parser.raise(t, a); + else if (i.canBeArrowParameterDeclaration()) + i.recordDeclarationError(t, a); + else + return; + } + recordAsyncArrowParametersError(t) { + let { at: e } = t, { stack: s } = this, r = s.length - 1, i = s[r]; + for (; i.canBeArrowParameterDeclaration(); ) + i.type === ls && i.recordDeclarationError(u.AwaitBindingIdentifier, { at: e }), i = s[--r]; + } + validateAsPattern() { + let { stack: t } = this, e = t[t.length - 1]; + !e.canBeArrowParameterDeclaration() || e.iterateErrors((s) => { + let [r, i] = s; + this.parser.raise(r, { at: i }); + let a = t.length - 2, n = t[a]; + for (; n.canBeArrowParameterDeclaration(); ) + n.clearDeclarationError(i.index), n = t[--a]; + }); + } + }; + function gh() { + return new yt(Ir); + } + function Ah() { + return new kr(Nr); + } + function Ph() { + return new kr(ls); + } + function Dr() { + return new yt(); + } + var je = 0, Fr = 1, xt = 2, Lr = 4, qe = 8, Th = class { + constructor() { + this.stacks = []; + } + enter(t) { + this.stacks.push(t); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & xt) > 0; + } + get hasYield() { + return (this.currentFlags() & Fr) > 0; + } + get hasReturn() { + return (this.currentFlags() & Lr) > 0; + } + get hasIn() { + return (this.currentFlags() & qe) > 0; + } + }; + function gt(t, e) { + return (t ? xt : 0) | (e ? Fr : 0); + } + var Eh = class extends ch { + addExtra(t, e, s) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; + if (!t) + return; + let i = t.extra = t.extra || {}; + r ? i[e] = s : Object.defineProperty(i, e, { enumerable: r, value: s }); + } + isContextual(t) { + return this.state.type === t && !this.state.containsEsc; + } + isUnparsedContextual(t, e) { + let s = t + e.length; + if (this.input.slice(t, s) === e) { + let r = this.input.charCodeAt(s); + return !(Be(r) || (r & 64512) === 55296); + } + return false; + } + isLookaheadContextual(t) { + let e = this.nextTokenStart(); + return this.isUnparsedContextual(e, t); + } + eatContextual(t) { + return this.isContextual(t) ? (this.next(), true) : false; + } + expectContextual(t, e) { + if (!this.eatContextual(t)) + throw e != null ? this.raise(e, { at: this.state.startLoc }) : this.unexpected(null, t); + } + canInsertSemicolon() { + return this.match(135) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return as.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start)); + } + hasFollowingLineBreak() { + return vr.lastIndex = this.state.end, vr.test(this.input); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon() { + ((arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true) ? this.isLineTerminator() : this.eat(13)) || this.raise(u.MissingSemicolon, { at: this.state.lastTokEndLoc }); + } + expect(t, e) { + this.eat(t) || this.unexpected(e, t); + } + tryParse(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.state.clone(), s = { node: null }; + try { + let r = t(function() { + let i = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; + throw s.node = i, s; + }); + if (this.state.errors.length > e.errors.length) { + let i = this.state; + return this.state = e, this.state.tokensLength = i.tokensLength, { node: r, error: i.errors[e.errors.length], thrown: false, aborted: false, failState: i }; + } + return { node: r, error: null, thrown: false, aborted: false, failState: null }; + } catch (r) { + let i = this.state; + if (this.state = e, r instanceof SyntaxError) + return { node: null, error: r, thrown: true, aborted: false, failState: i }; + if (r === s) + return { node: s.node, error: null, thrown: false, aborted: true, failState: i }; + throw r; + } + } + checkExpressionErrors(t, e) { + if (!t) + return false; + let { shorthandAssignLoc: s, doubleProtoLoc: r, privateKeyLoc: i, optionalParametersLoc: a } = t, n = !!s || !!r || !!a || !!i; + if (!e) + return n; + s != null && this.raise(u.InvalidCoverInitializedName, { at: s }), r != null && this.raise(u.DuplicateProto, { at: r }), i != null && this.raise(u.UnexpectedPrivateField, { at: i }), a != null && this.unexpected(a); + } + isLiteralPropertyName() { + return hr(this.state.type); + } + isPrivateName(t) { + return t.type === "PrivateName"; + } + getPrivateNameSV(t) { + return t.id.name; + } + hasPropertyAsPrivateName(t) { + return (t.type === "MemberExpression" || t.type === "OptionalMemberExpression") && this.isPrivateName(t.property); + } + isOptionalChain(t) { + return t.type === "OptionalMemberExpression" || t.type === "OptionalCallExpression"; + } + isObjectProperty(t) { + return t.type === "ObjectProperty"; + } + isObjectMethod(t) { + return t.type === "ObjectMethod"; + } + initializeScopes() { + let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.sourceType === "module", e = this.state.labels; + this.state.labels = []; + let s = this.exportedIdentifiers; + this.exportedIdentifiers = /* @__PURE__ */ new Set(); + let r = this.inModule; + this.inModule = t; + let i = this.scope, a = this.getScopeHandler(); + this.scope = new a(this, t); + let n = this.prodParam; + this.prodParam = new Th(); + let o = this.classScope; + this.classScope = new mh(this); + let c = this.expressionScope; + return this.expressionScope = new xh(this), () => { + this.state.labels = e, this.exportedIdentifiers = s, this.inModule = r, this.scope = i, this.prodParam = n, this.classScope = o, this.expressionScope = c; + }; + } + enterInitialScopes() { + let t = je; + this.inModule && (t |= xt), this.scope.enter(We), this.prodParam.enter(t); + } + checkDestructuringPrivate(t) { + let { privateKeyLoc: e } = t; + e !== null && this.expectPlugin("destructuringPrivate", e); + } + }, At = class { + constructor() { + this.shorthandAssignLoc = null, this.doubleProtoLoc = null, this.privateKeyLoc = null, this.optionalParametersLoc = null; + } + }, Pt = class { + constructor(t, e, s) { + this.type = "", this.start = e, this.end = 0, this.loc = new d(s), t != null && t.options.ranges && (this.range = [e, 0]), t != null && t.filename && (this.loc.filename = t.filename); + } + }, us = Pt.prototype; + us.__clone = function() { + let t = new Pt(), e = Object.keys(this); + for (let s = 0, r = e.length; s < r; s++) { + let i = e[s]; + i !== "leadingComments" && i !== "trailingComments" && i !== "innerComments" && (t[i] = this[i]); + } + return t; + }; + function Ch(t) { + return ge(t); + } + function ge(t) { + let { type: e, start: s, end: r, loc: i, range: a, extra: n, name: o } = t, c = Object.create(us); + return c.type = e, c.start = s, c.end = r, c.loc = i, c.range = a, c.extra = n, c.name = o, e === "Placeholder" && (c.expectedNode = t.expectedNode), c; + } + function bh(t) { + let { type: e, start: s, end: r, loc: i, range: a, extra: n } = t; + if (e === "Placeholder") + return Ch(t); + let o = Object.create(us); + return o.type = e, o.start = s, o.end = r, o.loc = i, o.range = a, t.raw !== void 0 ? o.raw = t.raw : o.extra = n, o.value = t.value, o; + } + var vh = class extends Eh { + startNode() { + return new Pt(this, this.state.start, this.state.startLoc); + } + startNodeAt(t, e) { + return new Pt(this, t, e); + } + startNodeAtNode(t) { + return this.startNodeAt(t.start, t.loc.start); + } + finishNode(t, e) { + return this.finishNodeAt(t, e, this.state.lastTokEndLoc); + } + finishNodeAt(t, e, s) { + return t.type = e, t.end = s.index, t.loc.end = s, this.options.ranges && (t.range[1] = s.index), this.options.attachComment && this.processComment(t), t; + } + resetStartLocation(t, e, s) { + t.start = e, t.loc.start = s, this.options.ranges && (t.range[0] = e); + } + resetEndLocation(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.state.lastTokEndLoc; + t.end = e.index, t.loc.end = e, this.options.ranges && (t.range[1] = e.index); + } + resetStartLocationFromNode(t, e) { + this.resetStartLocation(t, e.start, e.loc.start); + } + }, Sh = /* @__PURE__ */ new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]), I = j(zn || (zn = rt(["flow"])))((t) => ({ AmbiguousConditionalArrow: t("Ambiguous expression: wrap the arrow functions in parentheses to disambiguate."), AmbiguousDeclareModuleKind: t("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module."), AssignReservedType: t((e) => { + let { reservedType: s } = e; + return "Cannot overwrite reserved type ".concat(s, "."); + }), DeclareClassElement: t("The `declare` modifier can only appear on class fields."), DeclareClassFieldInitializer: t("Initializers are not allowed in fields with the `declare` modifier."), DuplicateDeclareModuleExports: t("Duplicate `declare module.exports` statement."), EnumBooleanMemberNotInitialized: t((e) => { + let { memberName: s, enumName: r } = e; + return "Boolean enum members need to be initialized. Use either `".concat(s, " = true,` or `").concat(s, " = false,` in enum `").concat(r, "`."); + }), EnumDuplicateMemberName: t((e) => { + let { memberName: s, enumName: r } = e; + return "Enum member names need to be unique, but the name `".concat(s, "` has already been used before in enum `").concat(r, "`."); + }), EnumInconsistentMemberValues: t((e) => { + let { enumName: s } = e; + return "Enum `".concat(s, "` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers."); + }), EnumInvalidExplicitType: t((e) => { + let { invalidEnumType: s, enumName: r } = e; + return "Enum type `".concat(s, "` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `").concat(r, "`."); + }), EnumInvalidExplicitTypeUnknownSupplied: t((e) => { + let { enumName: s } = e; + return "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `".concat(s, "`."); + }), EnumInvalidMemberInitializerPrimaryType: t((e) => { + let { enumName: s, memberName: r, explicitType: i } = e; + return "Enum `".concat(s, "` has type `").concat(i, "`, so the initializer of `").concat(r, "` needs to be a ").concat(i, " literal."); + }), EnumInvalidMemberInitializerSymbolType: t((e) => { + let { enumName: s, memberName: r } = e; + return "Symbol enum members cannot be initialized. Use `".concat(r, ",` in enum `").concat(s, "`."); + }), EnumInvalidMemberInitializerUnknownType: t((e) => { + let { enumName: s, memberName: r } = e; + return "The enum member initializer for `".concat(r, "` needs to be a literal (either a boolean, number, or string) in enum `").concat(s, "`."); + }), EnumInvalidMemberName: t((e) => { + let { enumName: s, memberName: r, suggestion: i } = e; + return "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `".concat(r, "`, consider using `").concat(i, "`, in enum `").concat(s, "`."); + }), EnumNumberMemberNotInitialized: t((e) => { + let { enumName: s, memberName: r } = e; + return "Number enum members need to be initialized, e.g. `".concat(r, " = 1` in enum `").concat(s, "`."); + }), EnumStringMemberInconsistentlyInitailized: t((e) => { + let { enumName: s } = e; + return "String enum members need to consistently either all use initializers, or use no initializers, in enum `".concat(s, "`."); + }), GetterMayNotHaveThisParam: t("A getter cannot have a `this` parameter."), ImportTypeShorthandOnlyInPureImport: t("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements."), InexactInsideExact: t("Explicit inexact syntax cannot appear inside an explicit exact object type."), InexactInsideNonObject: t("Explicit inexact syntax cannot appear in class or interface definitions."), InexactVariance: t("Explicit inexact syntax cannot have variance."), InvalidNonTypeImportInDeclareModule: t("Imports within a `declare module` body must always be `import type` or `import typeof`."), MissingTypeParamDefault: t("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."), NestedDeclareModule: t("`declare module` cannot be used inside another `declare module`."), NestedFlowComment: t("Cannot have a flow comment inside another flow comment."), PatternIsOptional: t("A binding pattern parameter cannot be optional in an implementation signature.", { reasonCode: "OptionalBindingPattern" }), SetterMayNotHaveThisParam: t("A setter cannot have a `this` parameter."), SpreadVariance: t("Spread properties cannot have variance."), ThisParamAnnotationRequired: t("A type annotation is required for the `this` parameter."), ThisParamBannedInConstructor: t("Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions."), ThisParamMayNotBeOptional: t("The `this` parameter cannot be optional."), ThisParamMustBeFirst: t("The `this` parameter must be the first function parameter."), ThisParamNoDefault: t("The `this` parameter may not have a default value."), TypeBeforeInitializer: t("Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`."), TypeCastInPattern: t("The type cast expression is expected to be wrapped with parenthesis."), UnexpectedExplicitInexactInObject: t("Explicit inexact syntax must appear at the end of an inexact object."), UnexpectedReservedType: t((e) => { + let { reservedType: s } = e; + return "Unexpected reserved type ".concat(s, "."); + }), UnexpectedReservedUnderscore: t("`_` is only allowed as a type argument to call or new."), UnexpectedSpaceBetweenModuloChecks: t("Spaces between `%` and `checks` are not allowed here."), UnexpectedSpreadType: t("Spread operator cannot appear in class or interface definitions."), UnexpectedSubtractionOperand: t('Unexpected token, expected "number" or "bigint".'), UnexpectedTokenAfterTypeParameter: t("Expected an arrow function after this type parameter declaration."), UnexpectedTypeParameterBeforeAsyncArrowFunction: t("Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`."), UnsupportedDeclareExportKind: t((e) => { + let { unsupportedExportKind: s, suggestion: r } = e; + return "`declare export ".concat(s, "` is not supported. Use `").concat(r, "` instead."); + }), UnsupportedStatementInDeclareModule: t("Only declares and type imports are allowed inside declare module."), UnterminatedFlowComment: t("Unterminated flow-comment.") })); + function wh(t) { + return t.type === "DeclareExportAllDeclaration" || t.type === "DeclareExportDeclaration" && (!t.declaration || t.declaration.type !== "TypeAlias" && t.declaration.type !== "InterfaceDeclaration"); + } + function cs(t) { + return t.importKind === "type" || t.importKind === "typeof"; + } + function Or(t) { + return pe(t) && t !== 97; + } + var Nh = { const: "declare export var", let: "declare export var", type: "export type", interface: "export interface" }; + function Ih(t, e) { + let s = [], r = []; + for (let i = 0; i < t.length; i++) + (e(t[i], i, t) ? s : r).push(t[i]); + return [s, r]; + } + var kh = /\*?\s*@((?:no)?flow)\b/, Dh = (t) => class extends t { + constructor() { + super(...arguments), this.flowPragma = void 0; + } + getScopeHandler() { + return fh; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + shouldParseEnums() { + return !!this.getPluginOption("flow", "enums"); + } + finishToken(e, s) { + return e !== 129 && e !== 13 && e !== 28 && this.flowPragma === void 0 && (this.flowPragma = null), super.finishToken(e, s); + } + addComment(e) { + if (this.flowPragma === void 0) { + let s = kh.exec(e.value); + if (s) + if (s[1] === "flow") + this.flowPragma = "flow"; + else if (s[1] === "noflow") + this.flowPragma = "noflow"; + else + throw new Error("Unexpected flow pragma"); + } + return super.addComment(e); + } + flowParseTypeInitialiser(e) { + let s = this.state.inType; + this.state.inType = true, this.expect(e || 14); + let r = this.flowParseType(); + return this.state.inType = s, r; + } + flowParsePredicate() { + let e = this.startNode(), s = this.state.startLoc; + return this.next(), this.expectContextual(107), this.state.lastTokStart > s.index + 1 && this.raise(I.UnexpectedSpaceBetweenModuloChecks, { at: s }), this.eat(10) ? (e.value = this.parseExpression(), this.expect(11), this.finishNode(e, "DeclaredPredicate")) : this.finishNode(e, "InferredPredicate"); + } + flowParseTypeAndPredicateInitialiser() { + let e = this.state.inType; + this.state.inType = true, this.expect(14); + let s = null, r = null; + return this.match(54) ? (this.state.inType = e, r = this.flowParsePredicate()) : (s = this.flowParseType(), this.state.inType = e, this.match(54) && (r = this.flowParsePredicate())), [s, r]; + } + flowParseDeclareClass(e) { + return this.next(), this.flowParseInterfaceish(e, true), this.finishNode(e, "DeclareClass"); + } + flowParseDeclareFunction(e) { + this.next(); + let s = e.id = this.parseIdentifier(), r = this.startNode(), i = this.startNode(); + this.match(47) ? r.typeParameters = this.flowParseTypeParameterDeclaration() : r.typeParameters = null, this.expect(10); + let a = this.flowParseFunctionTypeParams(); + return r.params = a.params, r.rest = a.rest, r.this = a._this, this.expect(11), [r.returnType, e.predicate] = this.flowParseTypeAndPredicateInitialiser(), i.typeAnnotation = this.finishNode(r, "FunctionTypeAnnotation"), s.typeAnnotation = this.finishNode(i, "TypeAnnotation"), this.resetEndLocation(s), this.semicolon(), this.scope.declareName(e.id.name, $o, e.id.loc.start), this.finishNode(e, "DeclareFunction"); + } + flowParseDeclare(e, s) { + if (this.match(80)) + return this.flowParseDeclareClass(e); + if (this.match(68)) + return this.flowParseDeclareFunction(e); + if (this.match(74)) + return this.flowParseDeclareVariable(e); + if (this.eatContextual(123)) + return this.match(16) ? this.flowParseDeclareModuleExports(e) : (s && this.raise(I.NestedDeclareModule, { at: this.state.lastTokStartLoc }), this.flowParseDeclareModule(e)); + if (this.isContextual(126)) + return this.flowParseDeclareTypeAlias(e); + if (this.isContextual(127)) + return this.flowParseDeclareOpaqueType(e); + if (this.isContextual(125)) + return this.flowParseDeclareInterface(e); + if (this.match(82)) + return this.flowParseDeclareExportDeclaration(e, s); + throw this.unexpected(); + } + flowParseDeclareVariable(e) { + return this.next(), e.id = this.flowParseTypeAnnotatableIdentifier(true), this.scope.declareName(e.id.name, pt, e.id.loc.start), this.semicolon(), this.finishNode(e, "DeclareVariable"); + } + flowParseDeclareModule(e) { + this.scope.enter(Me), this.match(129) ? e.id = this.parseExprAtom() : e.id = this.parseIdentifier(); + let s = e.body = this.startNode(), r = s.body = []; + for (this.expect(5); !this.match(8); ) { + let n = this.startNode(); + this.match(83) ? (this.next(), !this.isContextual(126) && !this.match(87) && this.raise(I.InvalidNonTypeImportInDeclareModule, { at: this.state.lastTokStartLoc }), this.parseImport(n)) : (this.expectContextual(121, I.UnsupportedStatementInDeclareModule), n = this.flowParseDeclare(n, true)), r.push(n); + } + this.scope.exit(), this.expect(8), this.finishNode(s, "BlockStatement"); + let i = null, a = false; + return r.forEach((n) => { + wh(n) ? (i === "CommonJS" && this.raise(I.AmbiguousDeclareModuleKind, { at: n }), i = "ES") : n.type === "DeclareModuleExports" && (a && this.raise(I.DuplicateDeclareModuleExports, { at: n }), i === "ES" && this.raise(I.AmbiguousDeclareModuleKind, { at: n }), i = "CommonJS", a = true); + }), e.kind = i || "CommonJS", this.finishNode(e, "DeclareModule"); + } + flowParseDeclareExportDeclaration(e, s) { + if (this.expect(82), this.eat(65)) + return this.match(68) || this.match(80) ? e.declaration = this.flowParseDeclare(this.startNode()) : (e.declaration = this.flowParseType(), this.semicolon()), e.default = true, this.finishNode(e, "DeclareExportDeclaration"); + if (this.match(75) || this.isLet() || (this.isContextual(126) || this.isContextual(125)) && !s) { + let r = this.state.value; + throw this.raise(I.UnsupportedDeclareExportKind, { at: this.state.startLoc, unsupportedExportKind: r, suggestion: Nh[r] }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(127)) + return e.declaration = this.flowParseDeclare(this.startNode()), e.default = false, this.finishNode(e, "DeclareExportDeclaration"); + if (this.match(55) || this.match(5) || this.isContextual(125) || this.isContextual(126) || this.isContextual(127)) + return e = this.parseExport(e), e.type === "ExportNamedDeclaration" && (e.type = "ExportDeclaration", e.default = false, delete e.exportKind), e.type = "Declare" + e.type, e; + throw this.unexpected(); + } + flowParseDeclareModuleExports(e) { + return this.next(), this.expectContextual(108), e.typeAnnotation = this.flowParseTypeAnnotation(), this.semicolon(), this.finishNode(e, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(e) { + return this.next(), this.flowParseTypeAlias(e), e.type = "DeclareTypeAlias", e; + } + flowParseDeclareOpaqueType(e) { + return this.next(), this.flowParseOpaqueType(e, true), e.type = "DeclareOpaqueType", e; + } + flowParseDeclareInterface(e) { + return this.next(), this.flowParseInterfaceish(e), this.finishNode(e, "DeclareInterface"); + } + flowParseInterfaceish(e) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + if (e.id = this.flowParseRestrictedIdentifier(!s, true), this.scope.declareName(e.id.name, s ? Tr : xe, e.id.loc.start), this.match(47) ? e.typeParameters = this.flowParseTypeParameterDeclaration() : e.typeParameters = null, e.extends = [], e.implements = [], e.mixins = [], this.eat(81)) + do + e.extends.push(this.flowParseInterfaceExtends()); + while (!s && this.eat(12)); + if (this.isContextual(114)) { + this.next(); + do + e.mixins.push(this.flowParseInterfaceExtends()); + while (this.eat(12)); + } + if (this.isContextual(110)) { + this.next(); + do + e.implements.push(this.flowParseInterfaceExtends()); + while (this.eat(12)); + } + e.body = this.flowParseObjectType({ allowStatic: s, allowExact: false, allowSpread: false, allowProto: s, allowInexact: false }); + } + flowParseInterfaceExtends() { + let e = this.startNode(); + return e.id = this.flowParseQualifiedTypeIdentifier(), this.match(47) ? e.typeParameters = this.flowParseTypeParameterInstantiation() : e.typeParameters = null, this.finishNode(e, "InterfaceExtends"); + } + flowParseInterface(e) { + return this.flowParseInterfaceish(e), this.finishNode(e, "InterfaceDeclaration"); + } + checkNotUnderscore(e) { + e === "_" && this.raise(I.UnexpectedReservedUnderscore, { at: this.state.startLoc }); + } + checkReservedType(e, s, r) { + !Sh.has(e) || this.raise(r ? I.AssignReservedType : I.UnexpectedReservedType, { at: s, reservedType: e }); + } + flowParseRestrictedIdentifier(e, s) { + return this.checkReservedType(this.state.value, this.state.startLoc, s), this.parseIdentifier(e); + } + flowParseTypeAlias(e) { + return e.id = this.flowParseRestrictedIdentifier(false, true), this.scope.declareName(e.id.name, xe, e.id.loc.start), this.match(47) ? e.typeParameters = this.flowParseTypeParameterDeclaration() : e.typeParameters = null, e.right = this.flowParseTypeInitialiser(29), this.semicolon(), this.finishNode(e, "TypeAlias"); + } + flowParseOpaqueType(e, s) { + return this.expectContextual(126), e.id = this.flowParseRestrictedIdentifier(true, true), this.scope.declareName(e.id.name, xe, e.id.loc.start), this.match(47) ? e.typeParameters = this.flowParseTypeParameterDeclaration() : e.typeParameters = null, e.supertype = null, this.match(14) && (e.supertype = this.flowParseTypeInitialiser(14)), e.impltype = null, s || (e.impltype = this.flowParseTypeInitialiser(29)), this.semicolon(), this.finishNode(e, "OpaqueType"); + } + flowParseTypeParameter() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false, s = this.state.startLoc, r = this.startNode(), i = this.flowParseVariance(), a = this.flowParseTypeAnnotatableIdentifier(); + return r.name = a.name, r.variance = i, r.bound = a.typeAnnotation, this.match(29) ? (this.eat(29), r.default = this.flowParseType()) : e && this.raise(I.MissingTypeParamDefault, { at: s }), this.finishNode(r, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + let e = this.state.inType, s = this.startNode(); + s.params = [], this.state.inType = true, this.match(47) || this.match(138) ? this.next() : this.unexpected(); + let r = false; + do { + let i = this.flowParseTypeParameter(r); + s.params.push(i), i.default && (r = true), this.match(48) || this.expect(12); + } while (!this.match(48)); + return this.expect(48), this.state.inType = e, this.finishNode(s, "TypeParameterDeclaration"); + } + flowParseTypeParameterInstantiation() { + let e = this.startNode(), s = this.state.inType; + e.params = [], this.state.inType = true, this.expect(47); + let r = this.state.noAnonFunctionType; + for (this.state.noAnonFunctionType = false; !this.match(48); ) + e.params.push(this.flowParseType()), this.match(48) || this.expect(12); + return this.state.noAnonFunctionType = r, this.expect(48), this.state.inType = s, this.finishNode(e, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + let e = this.startNode(), s = this.state.inType; + for (e.params = [], this.state.inType = true, this.expect(47); !this.match(48); ) + e.params.push(this.flowParseTypeOrImplicitInstantiation()), this.match(48) || this.expect(12); + return this.expect(48), this.state.inType = s, this.finishNode(e, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + let e = this.startNode(); + if (this.expectContextual(125), e.extends = [], this.eat(81)) + do + e.extends.push(this.flowParseInterfaceExtends()); + while (this.eat(12)); + return e.body = this.flowParseObjectType({ allowStatic: false, allowExact: false, allowSpread: false, allowProto: false, allowInexact: false }), this.finishNode(e, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(130) || this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(e, s, r) { + return e.static = s, this.lookahead().type === 14 ? (e.id = this.flowParseObjectPropertyKey(), e.key = this.flowParseTypeInitialiser()) : (e.id = null, e.key = this.flowParseType()), this.expect(3), e.value = this.flowParseTypeInitialiser(), e.variance = r, this.finishNode(e, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(e, s) { + return e.static = s, e.id = this.flowParseObjectPropertyKey(), this.expect(3), this.expect(3), this.match(47) || this.match(10) ? (e.method = true, e.optional = false, e.value = this.flowParseObjectTypeMethodish(this.startNodeAt(e.start, e.loc.start))) : (e.method = false, this.eat(17) && (e.optional = true), e.value = this.flowParseTypeInitialiser()), this.finishNode(e, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(e) { + for (e.params = [], e.rest = null, e.typeParameters = null, e.this = null, this.match(47) && (e.typeParameters = this.flowParseTypeParameterDeclaration()), this.expect(10), this.match(78) && (e.this = this.flowParseFunctionTypeParam(true), e.this.name = null, this.match(11) || this.expect(12)); !this.match(11) && !this.match(21); ) + e.params.push(this.flowParseFunctionTypeParam(false)), this.match(11) || this.expect(12); + return this.eat(21) && (e.rest = this.flowParseFunctionTypeParam(false)), this.expect(11), e.returnType = this.flowParseTypeInitialiser(), this.finishNode(e, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(e, s) { + let r = this.startNode(); + return e.static = s, e.value = this.flowParseObjectTypeMethodish(r), this.finishNode(e, "ObjectTypeCallProperty"); + } + flowParseObjectType(e) { + let { allowStatic: s, allowExact: r, allowSpread: i, allowProto: a, allowInexact: n } = e, o = this.state.inType; + this.state.inType = true; + let c = this.startNode(); + c.callProperties = [], c.properties = [], c.indexers = [], c.internalSlots = []; + let f, y, P = false; + for (r && this.match(6) ? (this.expect(6), f = 9, y = true) : (this.expect(5), f = 8, y = false), c.exact = y; !this.match(f); ) { + let N = false, B = null, _ = null, Q = this.startNode(); + if (a && this.isContextual(115)) { + let ne = this.lookahead(); + ne.type !== 14 && ne.type !== 17 && (this.next(), B = this.state.startLoc, s = false); + } + if (s && this.isContextual(104)) { + let ne = this.lookahead(); + ne.type !== 14 && ne.type !== 17 && (this.next(), N = true); + } + let re = this.flowParseVariance(); + if (this.eat(0)) + B != null && this.unexpected(B), this.eat(0) ? (re && this.unexpected(re.loc.start), c.internalSlots.push(this.flowParseObjectTypeInternalSlot(Q, N))) : c.indexers.push(this.flowParseObjectTypeIndexer(Q, N, re)); + else if (this.match(10) || this.match(47)) + B != null && this.unexpected(B), re && this.unexpected(re.loc.start), c.callProperties.push(this.flowParseObjectTypeCallProperty(Q, N)); + else { + let ne = "init"; + if (this.isContextual(98) || this.isContextual(103)) { + let le = this.lookahead(); + hr(le.type) && (ne = this.state.value, this.next()); + } + let $e = this.flowParseObjectTypeProperty(Q, N, B, re, ne, i, n != null ? n : !y); + $e === null ? (P = true, _ = this.state.lastTokStartLoc) : c.properties.push($e); + } + this.flowObjectTypeSemicolon(), _ && !this.match(8) && !this.match(9) && this.raise(I.UnexpectedExplicitInexactInObject, { at: _ }); + } + this.expect(f), i && (c.inexact = P); + let v = this.finishNode(c, "ObjectTypeAnnotation"); + return this.state.inType = o, v; + } + flowParseObjectTypeProperty(e, s, r, i, a, n, o) { + if (this.eat(21)) + return this.match(12) || this.match(13) || this.match(8) || this.match(9) ? (n ? o || this.raise(I.InexactInsideExact, { at: this.state.lastTokStartLoc }) : this.raise(I.InexactInsideNonObject, { at: this.state.lastTokStartLoc }), i && this.raise(I.InexactVariance, { at: i }), null) : (n || this.raise(I.UnexpectedSpreadType, { at: this.state.lastTokStartLoc }), r != null && this.unexpected(r), i && this.raise(I.SpreadVariance, { at: i }), e.argument = this.flowParseType(), this.finishNode(e, "ObjectTypeSpreadProperty")); + { + e.key = this.flowParseObjectPropertyKey(), e.static = s, e.proto = r != null, e.kind = a; + let c = false; + return this.match(47) || this.match(10) ? (e.method = true, r != null && this.unexpected(r), i && this.unexpected(i.loc.start), e.value = this.flowParseObjectTypeMethodish(this.startNodeAt(e.start, e.loc.start)), (a === "get" || a === "set") && this.flowCheckGetterSetterParams(e), !n && e.key.name === "constructor" && e.value.this && this.raise(I.ThisParamBannedInConstructor, { at: e.value.this })) : (a !== "init" && this.unexpected(), e.method = false, this.eat(17) && (c = true), e.value = this.flowParseTypeInitialiser(), e.variance = i), e.optional = c, this.finishNode(e, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(e) { + let s = e.kind === "get" ? 0 : 1, r = e.value.params.length + (e.value.rest ? 1 : 0); + e.value.this && this.raise(e.kind === "get" ? I.GetterMayNotHaveThisParam : I.SetterMayNotHaveThisParam, { at: e.value.this }), r !== s && this.raise(e.kind === "get" ? u.BadGetterArity : u.BadSetterArity, { at: e }), e.kind === "set" && e.value.rest && this.raise(u.BadSetterRestParameter, { at: e }); + } + flowObjectTypeSemicolon() { + !this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9) && this.unexpected(); + } + flowParseQualifiedTypeIdentifier(e, s, r) { + e = e || this.state.start, s = s || this.state.startLoc; + let i = r || this.flowParseRestrictedIdentifier(true); + for (; this.eat(16); ) { + let a = this.startNodeAt(e, s); + a.qualification = i, a.id = this.flowParseRestrictedIdentifier(true), i = this.finishNode(a, "QualifiedTypeIdentifier"); + } + return i; + } + flowParseGenericType(e, s, r) { + let i = this.startNodeAt(e, s); + return i.typeParameters = null, i.id = this.flowParseQualifiedTypeIdentifier(e, s, r), this.match(47) && (i.typeParameters = this.flowParseTypeParameterInstantiation()), this.finishNode(i, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + let e = this.startNode(); + return this.expect(87), e.argument = this.flowParsePrimaryType(), this.finishNode(e, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + let e = this.startNode(); + for (e.types = [], this.expect(0); this.state.pos < this.length && !this.match(3) && (e.types.push(this.flowParseType()), !this.match(3)); ) + this.expect(12); + return this.expect(3), this.finishNode(e, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(e) { + let s = null, r = false, i = null, a = this.startNode(), n = this.lookahead(), o = this.state.type === 78; + return n.type === 14 || n.type === 17 ? (o && !e && this.raise(I.ThisParamMustBeFirst, { at: a }), s = this.parseIdentifier(o), this.eat(17) && (r = true, o && this.raise(I.ThisParamMayNotBeOptional, { at: a })), i = this.flowParseTypeInitialiser()) : i = this.flowParseType(), a.name = s, a.optional = r, a.typeAnnotation = i, this.finishNode(a, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(e) { + let s = this.startNodeAt(e.start, e.loc.start); + return s.name = null, s.optional = false, s.typeAnnotation = e, this.finishNode(s, "FunctionTypeParam"); + } + flowParseFunctionTypeParams() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], s = null, r = null; + for (this.match(78) && (r = this.flowParseFunctionTypeParam(true), r.name = null, this.match(11) || this.expect(12)); !this.match(11) && !this.match(21); ) + e.push(this.flowParseFunctionTypeParam(false)), this.match(11) || this.expect(12); + return this.eat(21) && (s = this.flowParseFunctionTypeParam(false)), { params: e, rest: s, _this: r }; + } + flowIdentToTypeAnnotation(e, s, r, i) { + switch (i.name) { + case "any": + return this.finishNode(r, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(r, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(r, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(r, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(r, "NumberTypeAnnotation"); + case "string": + return this.finishNode(r, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(r, "SymbolTypeAnnotation"); + default: + return this.checkNotUnderscore(i.name), this.flowParseGenericType(e, s, i); + } + } + flowParsePrimaryType() { + let e = this.state.start, s = this.state.startLoc, r = this.startNode(), i, a, n = false, o = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ allowStatic: false, allowExact: false, allowSpread: true, allowProto: false, allowInexact: true }); + case 6: + return this.flowParseObjectType({ allowStatic: false, allowExact: true, allowSpread: true, allowProto: false, allowInexact: false }); + case 0: + return this.state.noAnonFunctionType = false, a = this.flowParseTupleType(), this.state.noAnonFunctionType = o, a; + case 47: + return r.typeParameters = this.flowParseTypeParameterDeclaration(), this.expect(10), i = this.flowParseFunctionTypeParams(), r.params = i.params, r.rest = i.rest, r.this = i._this, this.expect(11), this.expect(19), r.returnType = this.flowParseType(), this.finishNode(r, "FunctionTypeAnnotation"); + case 10: + if (this.next(), !this.match(11) && !this.match(21)) + if (K(this.state.type) || this.match(78)) { + let c = this.lookahead().type; + n = c !== 17 && c !== 14; + } else + n = true; + if (n) { + if (this.state.noAnonFunctionType = false, a = this.flowParseType(), this.state.noAnonFunctionType = o, this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) + return this.expect(11), a; + this.eat(12); + } + return a ? i = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(a)]) : i = this.flowParseFunctionTypeParams(), r.params = i.params, r.rest = i.rest, r.this = i._this, this.expect(11), this.expect(19), r.returnType = this.flowParseType(), r.typeParameters = null, this.finishNode(r, "FunctionTypeAnnotation"); + case 129: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + return r.value = this.match(85), this.next(), this.finishNode(r, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + if (this.next(), this.match(130)) + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", r); + if (this.match(131)) + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", r); + throw this.raise(I.UnexpectedSubtractionOperand, { at: this.state.startLoc }); + } + throw this.unexpected(); + case 130: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 131: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + return this.next(), this.finishNode(r, "VoidTypeAnnotation"); + case 84: + return this.next(), this.finishNode(r, "NullLiteralTypeAnnotation"); + case 78: + return this.next(), this.finishNode(r, "ThisTypeAnnotation"); + case 55: + return this.next(), this.finishNode(r, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (Ht(this.state.type)) { + let c = Pe(this.state.type); + return this.next(), super.createIdentifier(r, c); + } else if (K(this.state.type)) + return this.isContextual(125) ? this.flowParseInterfaceType() : this.flowIdentToTypeAnnotation(e, s, r, this.parseIdentifier()); + } + throw this.unexpected(); + } + flowParsePostfixType() { + let e = this.state.start, s = this.state.startLoc, r = this.flowParsePrimaryType(), i = false; + for (; (this.match(0) || this.match(18)) && !this.canInsertSemicolon(); ) { + let a = this.startNodeAt(e, s), n = this.eat(18); + i = i || n, this.expect(0), !n && this.match(3) ? (a.elementType = r, this.next(), r = this.finishNode(a, "ArrayTypeAnnotation")) : (a.objectType = r, a.indexType = this.flowParseType(), this.expect(3), i ? (a.optional = n, r = this.finishNode(a, "OptionalIndexedAccessType")) : r = this.finishNode(a, "IndexedAccessType")); + } + return r; + } + flowParsePrefixType() { + let e = this.startNode(); + return this.eat(17) ? (e.typeAnnotation = this.flowParsePrefixType(), this.finishNode(e, "NullableTypeAnnotation")) : this.flowParsePostfixType(); + } + flowParseAnonFunctionWithoutParens() { + let e = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + let s = this.startNodeAt(e.start, e.loc.start); + return s.params = [this.reinterpretTypeAsFunctionTypeParam(e)], s.rest = null, s.this = null, s.returnType = this.flowParseType(), s.typeParameters = null, this.finishNode(s, "FunctionTypeAnnotation"); + } + return e; + } + flowParseIntersectionType() { + let e = this.startNode(); + this.eat(45); + let s = this.flowParseAnonFunctionWithoutParens(); + for (e.types = [s]; this.eat(45); ) + e.types.push(this.flowParseAnonFunctionWithoutParens()); + return e.types.length === 1 ? s : this.finishNode(e, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + let e = this.startNode(); + this.eat(43); + let s = this.flowParseIntersectionType(); + for (e.types = [s]; this.eat(43); ) + e.types.push(this.flowParseIntersectionType()); + return e.types.length === 1 ? s : this.finishNode(e, "UnionTypeAnnotation"); + } + flowParseType() { + let e = this.state.inType; + this.state.inType = true; + let s = this.flowParseUnionType(); + return this.state.inType = e, s; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 128 && this.state.value === "_") { + let e = this.state.start, s = this.state.startLoc, r = this.parseIdentifier(); + return this.flowParseGenericType(e, s, r); + } else + return this.flowParseType(); + } + flowParseTypeAnnotation() { + let e = this.startNode(); + return e.typeAnnotation = this.flowParseTypeInitialiser(), this.finishNode(e, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier(e) { + let s = e ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + return this.match(14) && (s.typeAnnotation = this.flowParseTypeAnnotation(), this.resetEndLocation(s)), s; + } + typeCastToParameter(e) { + return e.expression.typeAnnotation = e.typeAnnotation, this.resetEndLocation(e.expression, e.typeAnnotation.loc.end), e.expression; + } + flowParseVariance() { + let e = null; + return this.match(53) && (e = this.startNode(), this.state.value === "+" ? e.kind = "plus" : e.kind = "minus", this.next(), this.finishNode(e, "Variance")), e; + } + parseFunctionBody(e, s) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + return s ? this.forwardNoArrowParamsConversionAt(e, () => super.parseFunctionBody(e, true, r)) : super.parseFunctionBody(e, false, r); + } + parseFunctionBodyAndFinish(e, s) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + if (this.match(14)) { + let i = this.startNode(); + [i.typeAnnotation, e.predicate] = this.flowParseTypeAndPredicateInitialiser(), e.returnType = i.typeAnnotation ? this.finishNode(i, "TypeAnnotation") : null; + } + super.parseFunctionBodyAndFinish(e, s, r); + } + parseStatement(e, s) { + if (this.state.strict && this.isContextual(125)) { + let i = this.lookahead(); + if (pe(i.type)) { + let a = this.startNode(); + return this.next(), this.flowParseInterface(a); + } + } else if (this.shouldParseEnums() && this.isContextual(122)) { + let i = this.startNode(); + return this.next(), this.flowParseEnumDeclaration(i); + } + let r = super.parseStatement(e, s); + return this.flowPragma === void 0 && !this.isValidDirective(r) && (this.flowPragma = null), r; + } + parseExpressionStatement(e, s) { + if (s.type === "Identifier") { + if (s.name === "declare") { + if (this.match(80) || K(this.state.type) || this.match(68) || this.match(74) || this.match(82)) + return this.flowParseDeclare(e); + } else if (K(this.state.type)) { + if (s.name === "interface") + return this.flowParseInterface(e); + if (s.name === "type") + return this.flowParseTypeAlias(e); + if (s.name === "opaque") + return this.flowParseOpaqueType(e, false); + } + } + return super.parseExpressionStatement(e, s); + } + shouldParseExportDeclaration() { + let { type: e } = this.state; + return lr(e) || this.shouldParseEnums() && e === 122 ? !this.state.containsEsc : super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + let { type: e } = this.state; + return lr(e) || this.shouldParseEnums() && e === 122 ? this.state.containsEsc : super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.shouldParseEnums() && this.isContextual(122)) { + let e = this.startNode(); + return this.next(), this.flowParseEnumDeclaration(e); + } + return super.parseExportDefaultExpression(); + } + parseConditional(e, s, r, i) { + if (!this.match(17)) + return e; + if (this.state.maybeInArrowParameters) { + let v = this.lookaheadCharCode(); + if (v === 44 || v === 61 || v === 58 || v === 41) + return this.setOptionalParametersError(i), e; + } + this.expect(17); + let a = this.state.clone(), n = this.state.noArrowAt, o = this.startNodeAt(s, r), { consequent: c, failed: f } = this.tryParseConditionalConsequent(), [y, P] = this.getArrowLikeExpressions(c); + if (f || P.length > 0) { + let v = [...n]; + if (P.length > 0) { + this.state = a, this.state.noArrowAt = v; + for (let N = 0; N < P.length; N++) + v.push(P[N].start); + ({ consequent: c, failed: f } = this.tryParseConditionalConsequent()), [y, P] = this.getArrowLikeExpressions(c); + } + f && y.length > 1 && this.raise(I.AmbiguousConditionalArrow, { at: a.startLoc }), f && y.length === 1 && (this.state = a, v.push(y[0].start), this.state.noArrowAt = v, { consequent: c, failed: f } = this.tryParseConditionalConsequent()); + } + return this.getArrowLikeExpressions(c, true), this.state.noArrowAt = n, this.expect(14), o.test = e, o.consequent = c, o.alternate = this.forwardNoArrowParamsConversionAt(o, () => this.parseMaybeAssign(void 0, void 0)), this.finishNode(o, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + let e = this.parseMaybeAssignAllowIn(), s = !this.match(14); + return this.state.noArrowParamsConversionAt.pop(), { consequent: e, failed: s }; + } + getArrowLikeExpressions(e, s) { + let r = [e], i = []; + for (; r.length !== 0; ) { + let a = r.pop(); + a.type === "ArrowFunctionExpression" ? (a.typeParameters || !a.returnType ? this.finishArrowValidation(a) : i.push(a), r.push(a.body)) : a.type === "ConditionalExpression" && (r.push(a.consequent), r.push(a.alternate)); + } + return s ? (i.forEach((a) => this.finishArrowValidation(a)), [i, []]) : Ih(i, (a) => a.params.every((n) => this.isAssignable(n, true))); + } + finishArrowValidation(e) { + var s; + this.toAssignableList(e.params, (s = e.extra) == null ? void 0 : s.trailingCommaLoc, false), this.scope.enter(me | Jt), super.checkParams(e, false, true), this.scope.exit(); + } + forwardNoArrowParamsConversionAt(e, s) { + let r; + return this.state.noArrowParamsConversionAt.indexOf(e.start) !== -1 ? (this.state.noArrowParamsConversionAt.push(this.state.start), r = s(), this.state.noArrowParamsConversionAt.pop()) : r = s(), r; + } + parseParenItem(e, s, r) { + if (e = super.parseParenItem(e, s, r), this.eat(17) && (e.optional = true, this.resetEndLocation(e)), this.match(14)) { + let i = this.startNodeAt(s, r); + return i.expression = e, i.typeAnnotation = this.flowParseTypeAnnotation(), this.finishNode(i, "TypeCastExpression"); + } + return e; + } + assertModuleNodeAllowed(e) { + e.type === "ImportDeclaration" && (e.importKind === "type" || e.importKind === "typeof") || e.type === "ExportNamedDeclaration" && e.exportKind === "type" || e.type === "ExportAllDeclaration" && e.exportKind === "type" || super.assertModuleNodeAllowed(e); + } + parseExport(e) { + let s = super.parseExport(e); + return (s.type === "ExportNamedDeclaration" || s.type === "ExportAllDeclaration") && (s.exportKind = s.exportKind || "value"), s; + } + parseExportDeclaration(e) { + if (this.isContextual(126)) { + e.exportKind = "type"; + let s = this.startNode(); + return this.next(), this.match(5) ? (e.specifiers = this.parseExportSpecifiers(true), this.parseExportFrom(e), null) : this.flowParseTypeAlias(s); + } else if (this.isContextual(127)) { + e.exportKind = "type"; + let s = this.startNode(); + return this.next(), this.flowParseOpaqueType(s, false); + } else if (this.isContextual(125)) { + e.exportKind = "type"; + let s = this.startNode(); + return this.next(), this.flowParseInterface(s); + } else if (this.shouldParseEnums() && this.isContextual(122)) { + e.exportKind = "value"; + let s = this.startNode(); + return this.next(), this.flowParseEnumDeclaration(s); + } else + return super.parseExportDeclaration(e); + } + eatExportStar(e) { + return super.eatExportStar(...arguments) ? true : this.isContextual(126) && this.lookahead().type === 55 ? (e.exportKind = "type", this.next(), this.next(), true) : false; + } + maybeParseExportNamespaceSpecifier(e) { + let { startLoc: s } = this.state, r = super.maybeParseExportNamespaceSpecifier(e); + return r && e.exportKind === "type" && this.unexpected(s), r; + } + parseClassId(e, s, r) { + super.parseClassId(e, s, r), this.match(47) && (e.typeParameters = this.flowParseTypeParameterDeclaration()); + } + parseClassMember(e, s, r) { + let { startLoc: i } = this.state; + if (this.isContextual(121)) { + if (this.parseClassMemberFromModifier(e, s)) + return; + s.declare = true; + } + super.parseClassMember(e, s, r), s.declare && (s.type !== "ClassProperty" && s.type !== "ClassPrivateProperty" && s.type !== "PropertyDefinition" ? this.raise(I.DeclareClassElement, { at: i }) : s.value && this.raise(I.DeclareClassFieldInitializer, { at: s.value })); + } + isIterator(e) { + return e === "iterator" || e === "asyncIterator"; + } + readIterator() { + let e = super.readWord1(), s = "@@" + e; + (!this.isIterator(e) || !this.state.inType) && this.raise(u.InvalidIdentifier, { at: this.state.curPosition(), identifierName: s }), this.finishToken(128, s); + } + getTokenFromCode(e) { + let s = this.input.charCodeAt(this.state.pos + 1); + return e === 123 && s === 124 ? this.finishOp(6, 2) : this.state.inType && (e === 62 || e === 60) ? this.finishOp(e === 62 ? 48 : 47, 1) : this.state.inType && e === 63 ? s === 46 ? this.finishOp(18, 2) : this.finishOp(17, 1) : Ko(e, s, this.input.charCodeAt(this.state.pos + 2)) ? (this.state.pos += 2, this.readIterator()) : super.getTokenFromCode(e); + } + isAssignable(e, s) { + return e.type === "TypeCastExpression" ? this.isAssignable(e.expression, s) : super.isAssignable(e, s); + } + toAssignable(e) { + !(arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false) && e.type === "AssignmentExpression" && e.left.type === "TypeCastExpression" && (e.left = this.typeCastToParameter(e.left)), super.toAssignable(...arguments); + } + toAssignableList(e, s, r) { + for (let i = 0; i < e.length; i++) { + let a = e[i]; + (a == null ? void 0 : a.type) === "TypeCastExpression" && (e[i] = this.typeCastToParameter(a)); + } + super.toAssignableList(e, s, r); + } + toReferencedList(e, s) { + for (let i = 0; i < e.length; i++) { + var r; + let a = e[i]; + a && a.type === "TypeCastExpression" && !((r = a.extra) != null && r.parenthesized) && (e.length > 1 || !s) && this.raise(I.TypeCastInPattern, { at: a.typeAnnotation }); + } + return e; + } + parseArrayLike(e, s, r, i) { + let a = super.parseArrayLike(e, s, r, i); + return s && !this.state.maybeInArrowParameters && this.toReferencedList(a.elements), a; + } + isValidLVal(e) { + for (var s = arguments.length, r = new Array(s > 1 ? s - 1 : 0), i = 1; i < s; i++) + r[i - 1] = arguments[i]; + return e === "TypeCastExpression" || super.isValidLVal(e, ...r); + } + parseClassProperty(e) { + return this.match(14) && (e.typeAnnotation = this.flowParseTypeAnnotation()), super.parseClassProperty(e); + } + parseClassPrivateProperty(e) { + return this.match(14) && (e.typeAnnotation = this.flowParseTypeAnnotation()), super.parseClassPrivateProperty(e); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(e) { + return !this.match(14) && super.isNonstaticConstructor(e); + } + pushClassMethod(e, s, r, i, a, n) { + if (s.variance && this.unexpected(s.variance.loc.start), delete s.variance, this.match(47) && (s.typeParameters = this.flowParseTypeParameterDeclaration()), super.pushClassMethod(e, s, r, i, a, n), s.params && a) { + let o = s.params; + o.length > 0 && this.isThisParam(o[0]) && this.raise(I.ThisParamBannedInConstructor, { at: s }); + } else if (s.type === "MethodDefinition" && a && s.value.params) { + let o = s.value.params; + o.length > 0 && this.isThisParam(o[0]) && this.raise(I.ThisParamBannedInConstructor, { at: s }); + } + } + pushClassPrivateMethod(e, s, r, i) { + s.variance && this.unexpected(s.variance.loc.start), delete s.variance, this.match(47) && (s.typeParameters = this.flowParseTypeParameterDeclaration()), super.pushClassPrivateMethod(e, s, r, i); + } + parseClassSuper(e) { + if (super.parseClassSuper(e), e.superClass && this.match(47) && (e.superTypeParameters = this.flowParseTypeParameterInstantiation()), this.isContextual(110)) { + this.next(); + let s = e.implements = []; + do { + let r = this.startNode(); + r.id = this.flowParseRestrictedIdentifier(true), this.match(47) ? r.typeParameters = this.flowParseTypeParameterInstantiation() : r.typeParameters = null, s.push(this.finishNode(r, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(e) { + super.checkGetterSetterParams(e); + let s = this.getObjectOrClassMethodParams(e); + if (s.length > 0) { + let r = s[0]; + this.isThisParam(r) && e.kind === "get" ? this.raise(I.GetterMayNotHaveThisParam, { at: r }) : this.isThisParam(r) && this.raise(I.SetterMayNotHaveThisParam, { at: r }); + } + } + parsePropertyNamePrefixOperator(e) { + e.variance = this.flowParseVariance(); + } + parseObjPropValue(e, s, r, i, a, n, o, c) { + e.variance && this.unexpected(e.variance.loc.start), delete e.variance; + let f; + this.match(47) && !o && (f = this.flowParseTypeParameterDeclaration(), this.match(10) || this.unexpected()), super.parseObjPropValue(e, s, r, i, a, n, o, c), f && ((e.value || e).typeParameters = f); + } + parseAssignableListItemTypes(e) { + return this.eat(17) && (e.type !== "Identifier" && this.raise(I.PatternIsOptional, { at: e }), this.isThisParam(e) && this.raise(I.ThisParamMayNotBeOptional, { at: e }), e.optional = true), this.match(14) ? e.typeAnnotation = this.flowParseTypeAnnotation() : this.isThisParam(e) && this.raise(I.ThisParamAnnotationRequired, { at: e }), this.match(29) && this.isThisParam(e) && this.raise(I.ThisParamNoDefault, { at: e }), this.resetEndLocation(e), e; + } + parseMaybeDefault(e, s, r) { + let i = super.parseMaybeDefault(e, s, r); + return i.type === "AssignmentPattern" && i.typeAnnotation && i.right.start < i.typeAnnotation.start && this.raise(I.TypeBeforeInitializer, { at: i.typeAnnotation }), i; + } + shouldParseDefaultImport(e) { + return cs(e) ? Or(this.state.type) : super.shouldParseDefaultImport(e); + } + parseImportSpecifierLocal(e, s, r) { + s.local = cs(e) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(), e.specifiers.push(this.finishImportSpecifier(s, r)); + } + maybeParseDefaultImportSpecifier(e) { + e.importKind = "value"; + let s = null; + if (this.match(87) ? s = "typeof" : this.isContextual(126) && (s = "type"), s) { + let r = this.lookahead(), { type: i } = r; + s === "type" && i === 55 && this.unexpected(null, r.type), (Or(i) || i === 5 || i === 55) && (this.next(), e.importKind = s); + } + return super.maybeParseDefaultImportSpecifier(e); + } + parseImportSpecifier(e, s, r, i) { + let a = e.imported, n = null; + a.type === "Identifier" && (a.name === "type" ? n = "type" : a.name === "typeof" && (n = "typeof")); + let o = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + let f = this.parseIdentifier(true); + n !== null && !pe(this.state.type) ? (e.imported = f, e.importKind = n, e.local = ge(f)) : (e.imported = a, e.importKind = null, e.local = this.parseIdentifier()); + } else { + if (n !== null && pe(this.state.type)) + e.imported = this.parseIdentifier(true), e.importKind = n; + else { + if (s) + throw this.raise(u.ImportBindingIsString, { at: e, importName: a.value }); + e.imported = a, e.importKind = null; + } + this.eatContextual(93) ? e.local = this.parseIdentifier() : (o = true, e.local = ge(e.imported)); + } + let c = cs(e); + return r && c && this.raise(I.ImportTypeShorthandOnlyInPureImport, { at: e }), (r || c) && this.checkReservedType(e.local.name, e.local.loc.start, true), o && !r && !c && this.checkReservedWord(e.local.name, e.loc.start, true, true), this.finishImportSpecifier(e, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(e, s) { + let r = e.kind; + r !== "get" && r !== "set" && this.match(47) && (e.typeParameters = this.flowParseTypeParameterDeclaration()), super.parseFunctionParams(e, s); + } + parseVarId(e, s) { + super.parseVarId(e, s), this.match(14) && (e.id.typeAnnotation = this.flowParseTypeAnnotation(), this.resetEndLocation(e.id)); + } + parseAsyncArrowFromCallExpression(e, s) { + if (this.match(14)) { + let r = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true, e.returnType = this.flowParseTypeAnnotation(), this.state.noAnonFunctionType = r; + } + return super.parseAsyncArrowFromCallExpression(e, s); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(e, s) { + var r; + let i = null, a; + if (this.hasPlugin("jsx") && (this.match(138) || this.match(47))) { + if (i = this.state.clone(), a = this.tryParse(() => super.parseMaybeAssign(e, s), i), !a.error) + return a.node; + let { context: c } = this.state, f = c[c.length - 1]; + (f === z.j_oTag || f === z.j_expr) && c.pop(); + } + if ((r = a) != null && r.error || this.match(47)) { + var n, o; + i = i || this.state.clone(); + let c, f = this.tryParse((P) => { + var v; + c = this.flowParseTypeParameterDeclaration(); + let N = this.forwardNoArrowParamsConversionAt(c, () => { + let _ = super.parseMaybeAssign(e, s); + return this.resetStartLocationFromNode(_, c), _; + }); + (v = N.extra) != null && v.parenthesized && P(); + let B = this.maybeUnwrapTypeCastExpression(N); + return B.type !== "ArrowFunctionExpression" && P(), B.typeParameters = c, this.resetStartLocationFromNode(B, c), N; + }, i), y = null; + if (f.node && this.maybeUnwrapTypeCastExpression(f.node).type === "ArrowFunctionExpression") { + if (!f.error && !f.aborted) + return f.node.async && this.raise(I.UnexpectedTypeParameterBeforeAsyncArrowFunction, { at: c }), f.node; + y = f.node; + } + if ((n = a) != null && n.node) + return this.state = a.failState, a.node; + if (y) + return this.state = f.failState, y; + throw (o = a) != null && o.thrown ? a.error : f.thrown ? f.error : this.raise(I.UnexpectedTokenAfterTypeParameter, { at: c }); + } + return super.parseMaybeAssign(e, s); + } + parseArrow(e) { + if (this.match(14)) { + let s = this.tryParse(() => { + let r = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + let i = this.startNode(); + return [i.typeAnnotation, e.predicate] = this.flowParseTypeAndPredicateInitialiser(), this.state.noAnonFunctionType = r, this.canInsertSemicolon() && this.unexpected(), this.match(19) || this.unexpected(), i; + }); + if (s.thrown) + return null; + s.error && (this.state = s.failState), e.returnType = s.node.typeAnnotation ? this.finishNode(s.node, "TypeAnnotation") : null; + } + return super.parseArrow(e); + } + shouldParseArrow(e) { + return this.match(14) || super.shouldParseArrow(e); + } + setArrowFunctionParameters(e, s) { + this.state.noArrowParamsConversionAt.indexOf(e.start) !== -1 ? e.params = s : super.setArrowFunctionParameters(e, s); + } + checkParams(e, s, r) { + if (!(r && this.state.noArrowParamsConversionAt.indexOf(e.start) !== -1)) { + for (let i = 0; i < e.params.length; i++) + this.isThisParam(e.params[i]) && i > 0 && this.raise(I.ThisParamMustBeFirst, { at: e.params[i] }); + return super.checkParams(...arguments); + } + } + parseParenAndDistinguishExpression(e) { + return super.parseParenAndDistinguishExpression(e && this.state.noArrowAt.indexOf(this.state.start) === -1); + } + parseSubscripts(e, s, r, i) { + if (e.type === "Identifier" && e.name === "async" && this.state.noArrowAt.indexOf(s) !== -1) { + this.next(); + let a = this.startNodeAt(s, r); + a.callee = e, a.arguments = this.parseCallExpressionArguments(11, false), e = this.finishNode(a, "CallExpression"); + } else if (e.type === "Identifier" && e.name === "async" && this.match(47)) { + let a = this.state.clone(), n = this.tryParse((c) => this.parseAsyncArrowWithTypeParameters(s, r) || c(), a); + if (!n.error && !n.aborted) + return n.node; + let o = this.tryParse(() => super.parseSubscripts(e, s, r, i), a); + if (o.node && !o.error) + return o.node; + if (n.node) + return this.state = n.failState, n.node; + if (o.node) + return this.state = o.failState, o.node; + throw n.error || o.error; + } + return super.parseSubscripts(e, s, r, i); + } + parseSubscript(e, s, r, i, a) { + if (this.match(18) && this.isLookaheadToken_lt()) { + if (a.optionalChainMember = true, i) + return a.stop = true, e; + this.next(); + let n = this.startNodeAt(s, r); + return n.callee = e, n.typeArguments = this.flowParseTypeParameterInstantiation(), this.expect(10), n.arguments = this.parseCallExpressionArguments(11, false), n.optional = true, this.finishCallExpression(n, true); + } else if (!i && this.shouldParseTypes() && this.match(47)) { + let n = this.startNodeAt(s, r); + n.callee = e; + let o = this.tryParse(() => (n.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(), this.expect(10), n.arguments = this.parseCallExpressionArguments(11, false), a.optionalChainMember && (n.optional = false), this.finishCallExpression(n, a.optionalChainMember))); + if (o.node) + return o.error && (this.state = o.failState), o.node; + } + return super.parseSubscript(e, s, r, i, a); + } + parseNewCallee(e) { + super.parseNewCallee(e); + let s = null; + this.shouldParseTypes() && this.match(47) && (s = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node), e.typeArguments = s; + } + parseAsyncArrowWithTypeParameters(e, s) { + let r = this.startNodeAt(e, s); + if (this.parseFunctionParams(r), !!this.parseArrow(r)) + return this.parseArrowExpression(r, void 0, true); + } + readToken_mult_modulo(e) { + let s = this.input.charCodeAt(this.state.pos + 1); + if (e === 42 && s === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false, this.state.pos += 2, this.nextToken(); + return; + } + super.readToken_mult_modulo(e); + } + readToken_pipe_amp(e) { + let s = this.input.charCodeAt(this.state.pos + 1); + if (e === 124 && s === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(e); + } + parseTopLevel(e, s) { + let r = super.parseTopLevel(e, s); + return this.state.hasFlowComment && this.raise(I.UnterminatedFlowComment, { at: this.state.curPosition() }), r; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) + throw this.raise(I.NestedFlowComment, { at: this.state.startLoc }); + this.hasFlowCommentCompletion(), this.state.pos += this.skipFlowComment(), this.state.hasFlowComment = true; + return; + } + if (this.state.hasFlowComment) { + let e = this.input.indexOf("*-/", this.state.pos + 2); + if (e === -1) + throw this.raise(u.UnterminatedComment, { at: this.state.curPosition() }); + this.state.pos = e + 2 + 3; + return; + } + return super.skipBlockComment(); + } + skipFlowComment() { + let { pos: e } = this.state, s = 2; + for (; [32, 9].includes(this.input.charCodeAt(e + s)); ) + s++; + let r = this.input.charCodeAt(s + e), i = this.input.charCodeAt(s + e + 1); + return r === 58 && i === 58 ? s + 2 : this.input.slice(s + e, s + e + 12) === "flow-include" ? s + 12 : r === 58 && i !== 58 ? s : false; + } + hasFlowCommentCompletion() { + if (this.input.indexOf("*/", this.state.pos) === -1) + throw this.raise(u.UnterminatedComment, { at: this.state.curPosition() }); + } + flowEnumErrorBooleanMemberNotInitialized(e, s) { + let { enumName: r, memberName: i } = s; + this.raise(I.EnumBooleanMemberNotInitialized, { at: e, memberName: i, enumName: r }); + } + flowEnumErrorInvalidMemberInitializer(e, s) { + return this.raise(s.explicitType ? s.explicitType === "symbol" ? I.EnumInvalidMemberInitializerSymbolType : I.EnumInvalidMemberInitializerPrimaryType : I.EnumInvalidMemberInitializerUnknownType, Object.assign({ at: e }, s)); + } + flowEnumErrorNumberMemberNotInitialized(e, s) { + let { enumName: r, memberName: i } = s; + this.raise(I.EnumNumberMemberNotInitialized, { at: e, enumName: r, memberName: i }); + } + flowEnumErrorStringMemberInconsistentlyInitailized(e, s) { + let { enumName: r } = s; + this.raise(I.EnumStringMemberInconsistentlyInitailized, { at: e, enumName: r }); + } + flowEnumMemberInit() { + let e = this.state.startLoc, s = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 130: { + let r = this.parseNumericLiteral(this.state.value); + return s() ? { type: "number", loc: r.loc.start, value: r } : { type: "invalid", loc: e }; + } + case 129: { + let r = this.parseStringLiteral(this.state.value); + return s() ? { type: "string", loc: r.loc.start, value: r } : { type: "invalid", loc: e }; + } + case 85: + case 86: { + let r = this.parseBooleanLiteral(this.match(85)); + return s() ? { type: "boolean", loc: r.loc.start, value: r } : { type: "invalid", loc: e }; + } + default: + return { type: "invalid", loc: e }; + } + } + flowEnumMemberRaw() { + let e = this.state.startLoc, s = this.parseIdentifier(true), r = this.eat(29) ? this.flowEnumMemberInit() : { type: "none", loc: e }; + return { id: s, init: r }; + } + flowEnumCheckExplicitTypeMismatch(e, s, r) { + let { explicitType: i } = s; + i !== null && i !== r && this.flowEnumErrorInvalidMemberInitializer(e, s); + } + flowEnumMembers(e) { + let { enumName: s, explicitType: r } = e, i = /* @__PURE__ */ new Set(), a = { booleanMembers: [], numberMembers: [], stringMembers: [], defaultedMembers: [] }, n = false; + for (; !this.match(8); ) { + if (this.eat(21)) { + n = true; + break; + } + let o = this.startNode(), { id: c, init: f } = this.flowEnumMemberRaw(), y = c.name; + if (y === "") + continue; + /^[a-z]/.test(y) && this.raise(I.EnumInvalidMemberName, { at: c, memberName: y, suggestion: y[0].toUpperCase() + y.slice(1), enumName: s }), i.has(y) && this.raise(I.EnumDuplicateMemberName, { at: c, memberName: y, enumName: s }), i.add(y); + let P = { enumName: s, explicitType: r, memberName: y }; + switch (o.id = c, f.type) { + case "boolean": { + this.flowEnumCheckExplicitTypeMismatch(f.loc, P, "boolean"), o.init = f.value, a.booleanMembers.push(this.finishNode(o, "EnumBooleanMember")); + break; + } + case "number": { + this.flowEnumCheckExplicitTypeMismatch(f.loc, P, "number"), o.init = f.value, a.numberMembers.push(this.finishNode(o, "EnumNumberMember")); + break; + } + case "string": { + this.flowEnumCheckExplicitTypeMismatch(f.loc, P, "string"), o.init = f.value, a.stringMembers.push(this.finishNode(o, "EnumStringMember")); + break; + } + case "invalid": + throw this.flowEnumErrorInvalidMemberInitializer(f.loc, P); + case "none": + switch (r) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(f.loc, P); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(f.loc, P); + break; + default: + a.defaultedMembers.push(this.finishNode(o, "EnumDefaultedMember")); + } + } + this.match(8) || this.expect(12); + } + return { members: a, hasUnknownMembers: n }; + } + flowEnumStringMembers(e, s, r) { + let { enumName: i } = r; + if (e.length === 0) + return s; + if (s.length === 0) + return e; + if (s.length > e.length) { + for (let a of e) + this.flowEnumErrorStringMemberInconsistentlyInitailized(a, { enumName: i }); + return s; + } else { + for (let a of s) + this.flowEnumErrorStringMemberInconsistentlyInitailized(a, { enumName: i }); + return e; + } + } + flowEnumParseExplicitType(e) { + let { enumName: s } = e; + if (!this.eatContextual(101)) + return null; + if (!K(this.state.type)) + throw this.raise(I.EnumInvalidExplicitTypeUnknownSupplied, { at: this.state.startLoc, enumName: s }); + let { value: r } = this.state; + return this.next(), r !== "boolean" && r !== "number" && r !== "string" && r !== "symbol" && this.raise(I.EnumInvalidExplicitType, { at: this.state.startLoc, enumName: s, invalidEnumType: r }), r; + } + flowEnumBody(e, s) { + let r = s.name, i = s.loc.start, a = this.flowEnumParseExplicitType({ enumName: r }); + this.expect(5); + let { members: n, hasUnknownMembers: o } = this.flowEnumMembers({ enumName: r, explicitType: a }); + switch (e.hasUnknownMembers = o, a) { + case "boolean": + return e.explicitType = true, e.members = n.booleanMembers, this.expect(8), this.finishNode(e, "EnumBooleanBody"); + case "number": + return e.explicitType = true, e.members = n.numberMembers, this.expect(8), this.finishNode(e, "EnumNumberBody"); + case "string": + return e.explicitType = true, e.members = this.flowEnumStringMembers(n.stringMembers, n.defaultedMembers, { enumName: r }), this.expect(8), this.finishNode(e, "EnumStringBody"); + case "symbol": + return e.members = n.defaultedMembers, this.expect(8), this.finishNode(e, "EnumSymbolBody"); + default: { + let c = () => (e.members = [], this.expect(8), this.finishNode(e, "EnumStringBody")); + e.explicitType = false; + let f = n.booleanMembers.length, y = n.numberMembers.length, P = n.stringMembers.length, v = n.defaultedMembers.length; + if (!f && !y && !P && !v) + return c(); + if (!f && !y) + return e.members = this.flowEnumStringMembers(n.stringMembers, n.defaultedMembers, { enumName: r }), this.expect(8), this.finishNode(e, "EnumStringBody"); + if (!y && !P && f >= v) { + for (let N of n.defaultedMembers) + this.flowEnumErrorBooleanMemberNotInitialized(N.loc.start, { enumName: r, memberName: N.id.name }); + return e.members = n.booleanMembers, this.expect(8), this.finishNode(e, "EnumBooleanBody"); + } else if (!f && !P && y >= v) { + for (let N of n.defaultedMembers) + this.flowEnumErrorNumberMemberNotInitialized(N.loc.start, { enumName: r, memberName: N.id.name }); + return e.members = n.numberMembers, this.expect(8), this.finishNode(e, "EnumNumberBody"); + } else + return this.raise(I.EnumInconsistentMemberValues, { at: i, enumName: r }), c(); + } + } + } + flowParseEnumDeclaration(e) { + let s = this.parseIdentifier(); + return e.id = s, e.body = this.flowEnumBody(this.startNode(), s), this.finishNode(e, "EnumDeclaration"); + } + isLookaheadToken_lt() { + let e = this.nextTokenStart(); + if (this.input.charCodeAt(e) === 60) { + let s = this.input.charCodeAt(e + 1); + return s !== 60 && s !== 61; + } + return false; + } + maybeUnwrapTypeCastExpression(e) { + return e.type === "TypeCastExpression" ? e.expression : e; + } + }, Fh = { __proto__: null, quot: '"', amp: "&", apos: "'", lt: "<", gt: ">", nbsp: "\xA0", iexcl: "\xA1", cent: "\xA2", pound: "\xA3", curren: "\xA4", yen: "\xA5", brvbar: "\xA6", sect: "\xA7", uml: "\xA8", copy: "\xA9", ordf: "\xAA", laquo: "\xAB", not: "\xAC", shy: "\xAD", reg: "\xAE", macr: "\xAF", deg: "\xB0", plusmn: "\xB1", sup2: "\xB2", sup3: "\xB3", acute: "\xB4", micro: "\xB5", para: "\xB6", middot: "\xB7", cedil: "\xB8", sup1: "\xB9", ordm: "\xBA", raquo: "\xBB", frac14: "\xBC", frac12: "\xBD", frac34: "\xBE", iquest: "\xBF", Agrave: "\xC0", Aacute: "\xC1", Acirc: "\xC2", Atilde: "\xC3", Auml: "\xC4", Aring: "\xC5", AElig: "\xC6", Ccedil: "\xC7", Egrave: "\xC8", Eacute: "\xC9", Ecirc: "\xCA", Euml: "\xCB", Igrave: "\xCC", Iacute: "\xCD", Icirc: "\xCE", Iuml: "\xCF", ETH: "\xD0", Ntilde: "\xD1", Ograve: "\xD2", Oacute: "\xD3", Ocirc: "\xD4", Otilde: "\xD5", Ouml: "\xD6", times: "\xD7", Oslash: "\xD8", Ugrave: "\xD9", Uacute: "\xDA", Ucirc: "\xDB", Uuml: "\xDC", Yacute: "\xDD", THORN: "\xDE", szlig: "\xDF", agrave: "\xE0", aacute: "\xE1", acirc: "\xE2", atilde: "\xE3", auml: "\xE4", aring: "\xE5", aelig: "\xE6", ccedil: "\xE7", egrave: "\xE8", eacute: "\xE9", ecirc: "\xEA", euml: "\xEB", igrave: "\xEC", iacute: "\xED", icirc: "\xEE", iuml: "\xEF", eth: "\xF0", ntilde: "\xF1", ograve: "\xF2", oacute: "\xF3", ocirc: "\xF4", otilde: "\xF5", ouml: "\xF6", divide: "\xF7", oslash: "\xF8", ugrave: "\xF9", uacute: "\xFA", ucirc: "\xFB", uuml: "\xFC", yacute: "\xFD", thorn: "\xFE", yuml: "\xFF", OElig: "\u0152", oelig: "\u0153", Scaron: "\u0160", scaron: "\u0161", Yuml: "\u0178", fnof: "\u0192", circ: "\u02C6", tilde: "\u02DC", Alpha: "\u0391", Beta: "\u0392", Gamma: "\u0393", Delta: "\u0394", Epsilon: "\u0395", Zeta: "\u0396", Eta: "\u0397", Theta: "\u0398", Iota: "\u0399", Kappa: "\u039A", Lambda: "\u039B", Mu: "\u039C", Nu: "\u039D", Xi: "\u039E", Omicron: "\u039F", Pi: "\u03A0", Rho: "\u03A1", Sigma: "\u03A3", Tau: "\u03A4", Upsilon: "\u03A5", Phi: "\u03A6", Chi: "\u03A7", Psi: "\u03A8", Omega: "\u03A9", alpha: "\u03B1", beta: "\u03B2", gamma: "\u03B3", delta: "\u03B4", epsilon: "\u03B5", zeta: "\u03B6", eta: "\u03B7", theta: "\u03B8", iota: "\u03B9", kappa: "\u03BA", lambda: "\u03BB", mu: "\u03BC", nu: "\u03BD", xi: "\u03BE", omicron: "\u03BF", pi: "\u03C0", rho: "\u03C1", sigmaf: "\u03C2", sigma: "\u03C3", tau: "\u03C4", upsilon: "\u03C5", phi: "\u03C6", chi: "\u03C7", psi: "\u03C8", omega: "\u03C9", thetasym: "\u03D1", upsih: "\u03D2", piv: "\u03D6", ensp: "\u2002", emsp: "\u2003", thinsp: "\u2009", zwnj: "\u200C", zwj: "\u200D", lrm: "\u200E", rlm: "\u200F", ndash: "\u2013", mdash: "\u2014", lsquo: "\u2018", rsquo: "\u2019", sbquo: "\u201A", ldquo: "\u201C", rdquo: "\u201D", bdquo: "\u201E", dagger: "\u2020", Dagger: "\u2021", bull: "\u2022", hellip: "\u2026", permil: "\u2030", prime: "\u2032", Prime: "\u2033", lsaquo: "\u2039", rsaquo: "\u203A", oline: "\u203E", frasl: "\u2044", euro: "\u20AC", image: "\u2111", weierp: "\u2118", real: "\u211C", trade: "\u2122", alefsym: "\u2135", larr: "\u2190", uarr: "\u2191", rarr: "\u2192", darr: "\u2193", harr: "\u2194", crarr: "\u21B5", lArr: "\u21D0", uArr: "\u21D1", rArr: "\u21D2", dArr: "\u21D3", hArr: "\u21D4", forall: "\u2200", part: "\u2202", exist: "\u2203", empty: "\u2205", nabla: "\u2207", isin: "\u2208", notin: "\u2209", ni: "\u220B", prod: "\u220F", sum: "\u2211", minus: "\u2212", lowast: "\u2217", radic: "\u221A", prop: "\u221D", infin: "\u221E", ang: "\u2220", and: "\u2227", or: "\u2228", cap: "\u2229", cup: "\u222A", int: "\u222B", there4: "\u2234", sim: "\u223C", cong: "\u2245", asymp: "\u2248", ne: "\u2260", equiv: "\u2261", le: "\u2264", ge: "\u2265", sub: "\u2282", sup: "\u2283", nsub: "\u2284", sube: "\u2286", supe: "\u2287", oplus: "\u2295", otimes: "\u2297", perp: "\u22A5", sdot: "\u22C5", lceil: "\u2308", rceil: "\u2309", lfloor: "\u230A", rfloor: "\u230B", lang: "\u2329", rang: "\u232A", loz: "\u25CA", spades: "\u2660", clubs: "\u2663", hearts: "\u2665", diams: "\u2666" }, Ie = j(Kn || (Kn = rt(["jsx"])))((t) => ({ AttributeIsEmpty: t("JSX attributes must only be assigned a non-empty expression."), MissingClosingTagElement: t((e) => { + let { openingTagName: s } = e; + return "Expected corresponding JSX closing tag for <".concat(s, ">."); + }), MissingClosingTagFragment: t("Expected corresponding JSX closing tag for <>."), UnexpectedSequenceExpression: t("Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?"), UnexpectedToken: t((e) => { + let { unexpected: s, HTMLEntity: r } = e; + return "Unexpected token `".concat(s, "`. Did you mean `").concat(r, "` or `{'").concat(s, "'}`?"); + }), UnsupportedJsxValue: t("JSX value should be either an expression or a quoted JSX text."), UnterminatedJsxContent: t("Unterminated JSX contents."), UnwrappedAdjacentJSXElements: t("Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?") })); + function Ce(t) { + return t ? t.type === "JSXOpeningFragment" || t.type === "JSXClosingFragment" : false; + } + function Ue(t) { + if (t.type === "JSXIdentifier") + return t.name; + if (t.type === "JSXNamespacedName") + return t.namespace.name + ":" + t.name.name; + if (t.type === "JSXMemberExpression") + return Ue(t.object) + "." + Ue(t.property); + throw new Error("Node had unexpected type: " + t.type); + } + var Lh = (t) => class extends t { + jsxReadToken() { + let e = "", s = this.state.pos; + for (; ; ) { + if (this.state.pos >= this.length) + throw this.raise(Ie.UnterminatedJsxContent, { at: this.state.startLoc }); + let r = this.input.charCodeAt(this.state.pos); + switch (r) { + case 60: + case 123: + return this.state.pos === this.state.start ? r === 60 && this.state.canStartJSXElement ? (++this.state.pos, this.finishToken(138)) : super.getTokenFromCode(r) : (e += this.input.slice(s, this.state.pos), this.finishToken(137, e)); + case 38: + e += this.input.slice(s, this.state.pos), e += this.jsxReadEntity(), s = this.state.pos; + break; + case 62: + case 125: + default: + Ne(r) ? (e += this.input.slice(s, this.state.pos), e += this.jsxReadNewLine(true), s = this.state.pos) : ++this.state.pos; + } + } + } + jsxReadNewLine(e) { + let s = this.input.charCodeAt(this.state.pos), r; + return ++this.state.pos, s === 13 && this.input.charCodeAt(this.state.pos) === 10 ? (++this.state.pos, r = e ? ` +` : `\r +`) : r = String.fromCharCode(s), ++this.state.curLine, this.state.lineStart = this.state.pos, r; + } + jsxReadString(e) { + let s = "", r = ++this.state.pos; + for (; ; ) { + if (this.state.pos >= this.length) + throw this.raise(u.UnterminatedString, { at: this.state.startLoc }); + let i = this.input.charCodeAt(this.state.pos); + if (i === e) + break; + i === 38 ? (s += this.input.slice(r, this.state.pos), s += this.jsxReadEntity(), r = this.state.pos) : Ne(i) ? (s += this.input.slice(r, this.state.pos), s += this.jsxReadNewLine(false), r = this.state.pos) : ++this.state.pos; + } + return s += this.input.slice(r, this.state.pos++), this.finishToken(129, s); + } + jsxReadEntity() { + let e = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let s = 10; + this.codePointAtPos(this.state.pos) === 120 && (s = 16, ++this.state.pos); + let r = this.readInt(s, void 0, false, "bail"); + if (r !== null && this.codePointAtPos(this.state.pos) === 59) + return ++this.state.pos, String.fromCodePoint(r); + } else { + let s = 0, r = false; + for (; s++ < 10 && this.state.pos < this.length && !(r = this.codePointAtPos(this.state.pos) == 59); ) + ++this.state.pos; + if (r) { + let i = this.input.slice(e, this.state.pos), a = Fh[i]; + if (++this.state.pos, a) + return a; + } + } + return this.state.pos = e, "&"; + } + jsxReadWord() { + let e, s = this.state.pos; + do + e = this.input.charCodeAt(++this.state.pos); + while (Be(e) || e === 45); + return this.finishToken(136, this.input.slice(s, this.state.pos)); + } + jsxParseIdentifier() { + let e = this.startNode(); + return this.match(136) ? e.name = this.state.value : Ht(this.state.type) ? e.name = Pe(this.state.type) : this.unexpected(), this.next(), this.finishNode(e, "JSXIdentifier"); + } + jsxParseNamespacedName() { + let e = this.state.start, s = this.state.startLoc, r = this.jsxParseIdentifier(); + if (!this.eat(14)) + return r; + let i = this.startNodeAt(e, s); + return i.namespace = r, i.name = this.jsxParseIdentifier(), this.finishNode(i, "JSXNamespacedName"); + } + jsxParseElementName() { + let e = this.state.start, s = this.state.startLoc, r = this.jsxParseNamespacedName(); + if (r.type === "JSXNamespacedName") + return r; + for (; this.eat(16); ) { + let i = this.startNodeAt(e, s); + i.object = r, i.property = this.jsxParseIdentifier(), r = this.finishNode(i, "JSXMemberExpression"); + } + return r; + } + jsxParseAttributeValue() { + let e; + switch (this.state.type) { + case 5: + return e = this.startNode(), this.setContext(z.brace), this.next(), e = this.jsxParseExpressionContainer(e, z.j_oTag), e.expression.type === "JSXEmptyExpression" && this.raise(Ie.AttributeIsEmpty, { at: e }), e; + case 138: + case 129: + return this.parseExprAtom(); + default: + throw this.raise(Ie.UnsupportedJsxValue, { at: this.state.startLoc }); + } + } + jsxParseEmptyExpression() { + let e = this.startNodeAt(this.state.lastTokEndLoc.index, this.state.lastTokEndLoc); + return this.finishNodeAt(e, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(e) { + return this.next(), e.expression = this.parseExpression(), this.setContext(z.j_oTag), this.state.canStartJSXElement = true, this.expect(8), this.finishNode(e, "JSXSpreadChild"); + } + jsxParseExpressionContainer(e, s) { + if (this.match(8)) + e.expression = this.jsxParseEmptyExpression(); + else { + let r = this.parseExpression(); + e.expression = r; + } + return this.setContext(s), this.state.canStartJSXElement = true, this.expect(8), this.finishNode(e, "JSXExpressionContainer"); + } + jsxParseAttribute() { + let e = this.startNode(); + return this.match(5) ? (this.setContext(z.brace), this.next(), this.expect(21), e.argument = this.parseMaybeAssignAllowIn(), this.setContext(z.j_oTag), this.state.canStartJSXElement = true, this.expect(8), this.finishNode(e, "JSXSpreadAttribute")) : (e.name = this.jsxParseNamespacedName(), e.value = this.eat(29) ? this.jsxParseAttributeValue() : null, this.finishNode(e, "JSXAttribute")); + } + jsxParseOpeningElementAt(e, s) { + let r = this.startNodeAt(e, s); + return this.eat(139) ? this.finishNode(r, "JSXOpeningFragment") : (r.name = this.jsxParseElementName(), this.jsxParseOpeningElementAfterName(r)); + } + jsxParseOpeningElementAfterName(e) { + let s = []; + for (; !this.match(56) && !this.match(139); ) + s.push(this.jsxParseAttribute()); + return e.attributes = s, e.selfClosing = this.eat(56), this.expect(139), this.finishNode(e, "JSXOpeningElement"); + } + jsxParseClosingElementAt(e, s) { + let r = this.startNodeAt(e, s); + return this.eat(139) ? this.finishNode(r, "JSXClosingFragment") : (r.name = this.jsxParseElementName(), this.expect(139), this.finishNode(r, "JSXClosingElement")); + } + jsxParseElementAt(e, s) { + let r = this.startNodeAt(e, s), i = [], a = this.jsxParseOpeningElementAt(e, s), n = null; + if (!a.selfClosing) { + e: + for (; ; ) + switch (this.state.type) { + case 138: + if (e = this.state.start, s = this.state.startLoc, this.next(), this.eat(56)) { + n = this.jsxParseClosingElementAt(e, s); + break e; + } + i.push(this.jsxParseElementAt(e, s)); + break; + case 137: + i.push(this.parseExprAtom()); + break; + case 5: { + let o = this.startNode(); + this.setContext(z.brace), this.next(), this.match(21) ? i.push(this.jsxParseSpreadChild(o)) : i.push(this.jsxParseExpressionContainer(o, z.j_expr)); + break; + } + default: + throw this.unexpected(); + } + Ce(a) && !Ce(n) && n !== null ? this.raise(Ie.MissingClosingTagFragment, { at: n }) : !Ce(a) && Ce(n) ? this.raise(Ie.MissingClosingTagElement, { at: n, openingTagName: Ue(a.name) }) : !Ce(a) && !Ce(n) && Ue(n.name) !== Ue(a.name) && this.raise(Ie.MissingClosingTagElement, { at: n, openingTagName: Ue(a.name) }); + } + if (Ce(a) ? (r.openingFragment = a, r.closingFragment = n) : (r.openingElement = a, r.closingElement = n), r.children = i, this.match(47)) + throw this.raise(Ie.UnwrappedAdjacentJSXElements, { at: this.state.startLoc }); + return Ce(a) ? this.finishNode(r, "JSXFragment") : this.finishNode(r, "JSXElement"); + } + jsxParseElement() { + let e = this.state.start, s = this.state.startLoc; + return this.next(), this.jsxParseElementAt(e, s); + } + setContext(e) { + let { context: s } = this.state; + s[s.length - 1] = e; + } + parseExprAtom(e) { + return this.match(137) ? this.parseLiteral(this.state.value, "JSXText") : this.match(138) ? this.jsxParseElement() : this.match(47) && this.input.charCodeAt(this.state.pos) !== 33 ? (this.replaceToken(138), this.jsxParseElement()) : super.parseExprAtom(e); + } + skipSpace() { + this.curContext().preserveSpace || super.skipSpace(); + } + getTokenFromCode(e) { + let s = this.curContext(); + if (s === z.j_expr) + return this.jsxReadToken(); + if (s === z.j_oTag || s === z.j_cTag) { + if (de(e)) + return this.jsxReadWord(); + if (e === 62) + return ++this.state.pos, this.finishToken(139); + if ((e === 34 || e === 39) && s === z.j_oTag) + return this.jsxReadString(e); + } + return e === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33 ? (++this.state.pos, this.finishToken(138)) : super.getTokenFromCode(e); + } + updateContext(e) { + let { context: s, type: r } = this.state; + if (r === 56 && e === 138) + s.splice(-2, 2, z.j_cTag), this.state.canStartJSXElement = false; + else if (r === 138) + s.push(z.j_oTag); + else if (r === 139) { + let i = s[s.length - 1]; + i === z.j_oTag && e === 56 || i === z.j_cTag ? (s.pop(), this.state.canStartJSXElement = s[s.length - 1] === z.j_expr) : (this.setContext(z.j_expr), this.state.canStartJSXElement = true); + } else + this.state.canStartJSXElement = So(r); + } + }, Oh = class extends os { + constructor() { + super(...arguments), this.types = /* @__PURE__ */ new Set(), this.enums = /* @__PURE__ */ new Set(), this.constEnums = /* @__PURE__ */ new Set(), this.classes = /* @__PURE__ */ new Set(), this.exportOnlyBindings = /* @__PURE__ */ new Set(); + } + }, Bh = class extends hs { + createScope(t) { + return new Oh(t); + } + declareName(t, e, s) { + let r = this.currentScope(); + if (e & Zt) { + this.maybeExportDefined(r, t), r.exportOnlyBindings.add(t); + return; + } + super.declareName(...arguments), e & Re && (e & ye || (this.checkRedeclarationInScope(r, t, e, s), this.maybeExportDefined(r, t)), r.types.add(t)), e & $t && r.enums.add(t), e & Qt && r.constEnums.add(t), e & ct && r.classes.add(t); + } + isRedeclaredInScope(t, e, s) { + if (t.enums.has(e)) { + if (s & $t) { + let r = !!(s & Qt), i = t.constEnums.has(e); + return r !== i; + } + return true; + } + return s & ct && t.classes.has(e) ? t.lexical.has(e) ? !!(s & ye) : false : s & Re && t.types.has(e) ? true : super.isRedeclaredInScope(...arguments); + } + checkLocalExport(t) { + let e = this.scopeStack[0], { name: s } = t; + !e.types.has(s) && !e.exportOnlyBindings.has(s) && super.checkLocalExport(t); + } + }, Mh = (t, e) => Object.hasOwnProperty.call(t, e) && t[e]; + function Rh(t) { + if (t == null) + throw new Error("Unexpected ".concat(t, " value.")); + return t; + } + function Br(t) { + if (!t) + throw new Error("Assert fail"); + } + function jh(t) { + return Vt(t) || Oo(t); + } + var S = j(Vn || (Vn = rt(["typescript"])))((t) => ({ AbstractMethodHasImplementation: t((e) => { + let { methodName: s } = e; + return "Method '".concat(s, "' cannot have an implementation because it is marked abstract."); + }), AbstractPropertyHasInitializer: t((e) => { + let { propertyName: s } = e; + return "Property '".concat(s, "' cannot have an initializer because it is marked abstract."); + }), AccesorCannotDeclareThisParameter: t("'get' and 'set' accessors cannot declare 'this' parameters."), AccesorCannotHaveTypeParameters: t("An accessor cannot have type parameters."), CannotFindName: t((e) => { + let { name: s } = e; + return "Cannot find name '".concat(s, "'."); + }), ClassMethodHasDeclare: t("Class methods cannot have the 'declare' modifier."), ClassMethodHasReadonly: t("Class methods cannot have the 'readonly' modifier."), ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: t("A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference."), ConstructorHasTypeParameters: t("Type parameters cannot appear on a constructor declaration."), DeclareAccessor: t((e) => { + let { kind: s } = e; + return "'declare' is not allowed in ".concat(s, "ters."); + }), DeclareClassFieldHasInitializer: t("Initializers are not allowed in ambient contexts."), DeclareFunctionHasImplementation: t("An implementation cannot be declared in ambient contexts."), DuplicateAccessibilityModifier: t((e) => { + let { modifier: s } = e; + return "Accessibility modifier already seen."; + }), DuplicateModifier: t((e) => { + let { modifier: s } = e; + return "Duplicate modifier: '".concat(s, "'."); + }), EmptyHeritageClauseType: t((e) => { + let { token: s } = e; + return "'".concat(s, "' list cannot be empty."); + }), EmptyTypeArguments: t("Type argument list cannot be empty."), EmptyTypeParameters: t("Type parameter list cannot be empty."), ExpectedAmbientAfterExportDeclare: t("'export declare' must be followed by an ambient declaration."), ImportAliasHasImportType: t("An import alias can not use 'import type'."), IncompatibleModifiers: t((e) => { + let { modifiers: s } = e; + return "'".concat(s[0], "' modifier cannot be used with '").concat(s[1], "' modifier."); + }), IndexSignatureHasAbstract: t("Index signatures cannot have the 'abstract' modifier."), IndexSignatureHasAccessibility: t((e) => { + let { modifier: s } = e; + return "Index signatures cannot have an accessibility modifier ('".concat(s, "')."); + }), IndexSignatureHasDeclare: t("Index signatures cannot have the 'declare' modifier."), IndexSignatureHasOverride: t("'override' modifier cannot appear on an index signature."), IndexSignatureHasStatic: t("Index signatures cannot have the 'static' modifier."), InitializerNotAllowedInAmbientContext: t("Initializers are not allowed in ambient contexts."), InvalidModifierOnTypeMember: t((e) => { + let { modifier: s } = e; + return "'".concat(s, "' modifier cannot appear on a type member."); + }), InvalidModifierOnTypeParameter: t((e) => { + let { modifier: s } = e; + return "'".concat(s, "' modifier cannot appear on a type parameter."); + }), InvalidModifierOnTypeParameterPositions: t((e) => { + let { modifier: s } = e; + return "'".concat(s, "' modifier can only appear on a type parameter of a class, interface or type alias."); + }), InvalidModifiersOrder: t((e) => { + let { orderedModifiers: s } = e; + return "'".concat(s[0], "' modifier must precede '").concat(s[1], "' modifier."); + }), InvalidTupleMemberLabel: t("Tuple members must be labeled with a simple identifier."), MissingInterfaceName: t("'interface' declarations must be followed by an identifier."), MixedLabeledAndUnlabeledElements: t("Tuple members must all have names or all not have names."), NonAbstractClassHasAbstractMethod: t("Abstract methods can only appear within an abstract class."), NonClassMethodPropertyHasAbstractModifer: t("'abstract' modifier can only appear on a class, method, or property declaration."), OptionalTypeBeforeRequired: t("A required element cannot follow an optional element."), OverrideNotInSubClass: t("This member cannot have an 'override' modifier because its containing class does not extend another class."), PatternIsOptional: t("A binding pattern parameter cannot be optional in an implementation signature."), PrivateElementHasAbstract: t("Private elements cannot have the 'abstract' modifier."), PrivateElementHasAccessibility: t((e) => { + let { modifier: s } = e; + return "Private elements cannot have an accessibility modifier ('".concat(s, "')."); + }), ReadonlyForMethodSignature: t("'readonly' modifier can only appear on a property declaration or index signature."), ReservedArrowTypeParam: t("This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`."), ReservedTypeAssertion: t("This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead."), SetAccesorCannotHaveOptionalParameter: t("A 'set' accessor cannot have an optional parameter."), SetAccesorCannotHaveRestParameter: t("A 'set' accessor cannot have rest parameter."), SetAccesorCannotHaveReturnType: t("A 'set' accessor cannot have a return type annotation."), SingleTypeParameterWithoutTrailingComma: t((e) => { + let { typeParameterName: s } = e; + return "Single type parameter ".concat(s, " should have a trailing comma. Example usage: <").concat(s, ",>."); + }), StaticBlockCannotHaveModifier: t("Static class blocks cannot have any modifier."), TypeAnnotationAfterAssign: t("Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`."), TypeImportCannotSpecifyDefaultAndNamed: t("A type-only import can specify a default import or named bindings, but not both."), TypeModifierIsUsedInTypeExports: t("The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement."), TypeModifierIsUsedInTypeImports: t("The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement."), UnexpectedParameterModifier: t("A parameter property is only allowed in a constructor implementation."), UnexpectedReadonly: t("'readonly' type modifier is only permitted on array and tuple literal types."), UnexpectedTypeAnnotation: t("Did not expect a type annotation here."), UnexpectedTypeCastInParameter: t("Unexpected type cast in parameter position."), UnsupportedImportTypeArgument: t("Argument in a type import must be a string literal."), UnsupportedParameterPropertyKind: t("A parameter property may not be declared using a binding pattern."), UnsupportedSignatureParameterKind: t((e) => { + let { type: s } = e; + return "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ".concat(s, "."); + }) })); + function qh(t) { + switch (t) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return; + } + } + function Mr(t) { + return t === "private" || t === "public" || t === "protected"; + } + function Uh(t) { + return t === "in" || t === "out"; + } + var _h = (t) => class extends t { + getScopeHandler() { + return Bh; + } + tsIsIdentifier() { + return K(this.state.type); + } + tsTokenCanFollowModifier() { + return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(134) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak(); + } + tsNextTokenCanFollowModifier() { + return this.next(), this.tsTokenCanFollowModifier(); + } + tsParseModifier(e, s) { + if (!K(this.state.type) && this.state.type !== 58) + return; + let r = this.state.value; + if (e.indexOf(r) !== -1) { + if (s && this.tsIsStartOfStaticBlocks()) + return; + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) + return r; + } + } + tsParseModifiers(e) { + let { modified: s, allowedModifiers: r, disallowedModifiers: i, stopOnStartOfClassStaticBlock: a, errorTemplate: n = S.InvalidModifierOnTypeMember } = e, o = (f, y, P, v) => { + y === P && s[v] && this.raise(S.InvalidModifiersOrder, { at: f, orderedModifiers: [P, v] }); + }, c = (f, y, P, v) => { + (s[P] && y === v || s[v] && y === P) && this.raise(S.IncompatibleModifiers, { at: f, modifiers: [P, v] }); + }; + for (; ; ) { + let { startLoc: f } = this.state, y = this.tsParseModifier(r.concat(i != null ? i : []), a); + if (!y) + break; + Mr(y) ? s.accessibility ? this.raise(S.DuplicateAccessibilityModifier, { at: f, modifier: y }) : (o(f, y, y, "override"), o(f, y, y, "static"), o(f, y, y, "readonly"), s.accessibility = y) : Uh(y) ? (s[y] && this.raise(S.DuplicateModifier, { at: f, modifier: y }), s[y] = true, o(f, y, "in", "out")) : (Object.hasOwnProperty.call(s, y) ? this.raise(S.DuplicateModifier, { at: f, modifier: y }) : (o(f, y, "static", "readonly"), o(f, y, "static", "override"), o(f, y, "override", "readonly"), o(f, y, "abstract", "override"), c(f, y, "declare", "override"), c(f, y, "static", "abstract")), s[y] = true), i != null && i.includes(y) && this.raise(n, { at: f, modifier: y }); + } + } + tsIsListTerminator(e) { + switch (e) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + throw new Error("Unreachable"); + } + tsParseList(e, s) { + let r = []; + for (; !this.tsIsListTerminator(e); ) + r.push(s()); + return r; + } + tsParseDelimitedList(e, s, r) { + return Rh(this.tsParseDelimitedListWorker(e, s, true, r)); + } + tsParseDelimitedListWorker(e, s, r, i) { + let a = [], n = -1; + for (; !this.tsIsListTerminator(e); ) { + n = -1; + let o = s(); + if (o == null) + return; + if (a.push(o), this.eat(12)) { + n = this.state.lastTokStart; + continue; + } + if (this.tsIsListTerminator(e)) + break; + r && this.expect(12); + return; + } + return i && (i.value = n), a; + } + tsParseBracketedList(e, s, r, i, a) { + i || (r ? this.expect(0) : this.expect(47)); + let n = this.tsParseDelimitedList(e, s, a); + return r ? this.expect(3) : this.expect(48), n; + } + tsParseImportType() { + let e = this.startNode(); + return this.expect(83), this.expect(10), this.match(129) || this.raise(S.UnsupportedImportTypeArgument, { at: this.state.startLoc }), e.argument = this.parseExprAtom(), this.expect(11), this.eat(16) && (e.qualifier = this.tsParseEntityName()), this.match(47) && (e.typeParameters = this.tsParseTypeArguments()), this.finishNode(e, "TSImportType"); + } + tsParseEntityName() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true, s = this.parseIdentifier(e); + for (; this.eat(16); ) { + let r = this.startNodeAtNode(s); + r.left = s, r.right = this.parseIdentifier(e), s = this.finishNode(r, "TSQualifiedName"); + } + return s; + } + tsParseTypeReference() { + let e = this.startNode(); + return e.typeName = this.tsParseEntityName(), !this.hasPrecedingLineBreak() && this.match(47) && (e.typeParameters = this.tsParseTypeArguments()), this.finishNode(e, "TSTypeReference"); + } + tsParseThisTypePredicate(e) { + this.next(); + let s = this.startNodeAtNode(e); + return s.parameterName = e, s.typeAnnotation = this.tsParseTypeAnnotation(false), s.asserts = false, this.finishNode(s, "TSTypePredicate"); + } + tsParseThisTypeNode() { + let e = this.startNode(); + return this.next(), this.finishNode(e, "TSThisType"); + } + tsParseTypeQuery() { + let e = this.startNode(); + return this.expect(87), this.match(83) ? e.exprName = this.tsParseImportType() : e.exprName = this.tsParseEntityName(), !this.hasPrecedingLineBreak() && this.match(47) && (e.typeParameters = this.tsParseTypeArguments()), this.finishNode(e, "TSTypeQuery"); + } + tsParseInOutModifiers(e) { + this.tsParseModifiers({ modified: e, allowedModifiers: ["in", "out"], disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], errorTemplate: S.InvalidModifierOnTypeParameter }); + } + tsParseNoneModifiers(e) { + this.tsParseModifiers({ modified: e, allowedModifiers: [], disallowedModifiers: ["in", "out"], errorTemplate: S.InvalidModifierOnTypeParameterPositions }); + } + tsParseTypeParameter() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.tsParseNoneModifiers.bind(this), s = this.startNode(); + return e(s), s.name = this.tsParseTypeParameterName(), s.constraint = this.tsEatThenParseType(81), s.default = this.tsEatThenParseType(29), this.finishNode(s, "TSTypeParameter"); + } + tsTryParseTypeParameters(e) { + if (this.match(47)) + return this.tsParseTypeParameters(e); + } + tsParseTypeParameters(e) { + let s = this.startNode(); + this.match(47) || this.match(138) ? this.next() : this.unexpected(); + let r = { value: -1 }; + return s.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, e), false, true, r), s.params.length === 0 && this.raise(S.EmptyTypeParameters, { at: s }), r.value !== -1 && this.addExtra(s, "trailingComma", r.value), this.finishNode(s, "TSTypeParameterDeclaration"); + } + tsTryNextParseConstantContext() { + if (this.lookahead().type !== 75) + return null; + this.next(); + let e = this.tsParseTypeReference(); + return e.typeParameters && this.raise(S.CannotFindName, { at: e.typeName, name: "const" }), e; + } + tsFillSignature(e, s) { + let r = e === 19, i = "parameters", a = "typeAnnotation"; + s.typeParameters = this.tsTryParseTypeParameters(), this.expect(10), s[i] = this.tsParseBindingListForSignature(), r ? s[a] = this.tsParseTypeOrTypePredicateAnnotation(e) : this.match(e) && (s[a] = this.tsParseTypeOrTypePredicateAnnotation(e)); + } + tsParseBindingListForSignature() { + return this.parseBindingList(11, 41).map((e) => (e.type !== "Identifier" && e.type !== "RestElement" && e.type !== "ObjectPattern" && e.type !== "ArrayPattern" && this.raise(S.UnsupportedSignatureParameterKind, { at: e, type: e.type }), e)); + } + tsParseTypeMemberSemicolon() { + !this.eat(12) && !this.isLineTerminator() && this.expect(13); + } + tsParseSignatureMember(e, s) { + return this.tsFillSignature(14, s), this.tsParseTypeMemberSemicolon(), this.finishNode(s, e); + } + tsIsUnambiguouslyIndexSignature() { + return this.next(), K(this.state.type) ? (this.next(), this.match(14)) : false; + } + tsTryParseIndexSignature(e) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) + return; + this.expect(0); + let s = this.parseIdentifier(); + s.typeAnnotation = this.tsParseTypeAnnotation(), this.resetEndLocation(s), this.expect(3), e.parameters = [s]; + let r = this.tsTryParseTypeAnnotation(); + return r && (e.typeAnnotation = r), this.tsParseTypeMemberSemicolon(), this.finishNode(e, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(e, s) { + this.eat(17) && (e.optional = true); + let r = e; + if (this.match(10) || this.match(47)) { + s && this.raise(S.ReadonlyForMethodSignature, { at: e }); + let i = r; + i.kind && this.match(47) && this.raise(S.AccesorCannotHaveTypeParameters, { at: this.state.curPosition() }), this.tsFillSignature(14, i), this.tsParseTypeMemberSemicolon(); + let a = "parameters", n = "typeAnnotation"; + if (i.kind === "get") + i[a].length > 0 && (this.raise(u.BadGetterArity, { at: this.state.curPosition() }), this.isThisParam(i[a][0]) && this.raise(S.AccesorCannotDeclareThisParameter, { at: this.state.curPosition() })); + else if (i.kind === "set") { + if (i[a].length !== 1) + this.raise(u.BadSetterArity, { at: this.state.curPosition() }); + else { + let o = i[a][0]; + this.isThisParam(o) && this.raise(S.AccesorCannotDeclareThisParameter, { at: this.state.curPosition() }), o.type === "Identifier" && o.optional && this.raise(S.SetAccesorCannotHaveOptionalParameter, { at: this.state.curPosition() }), o.type === "RestElement" && this.raise(S.SetAccesorCannotHaveRestParameter, { at: this.state.curPosition() }); + } + i[n] && this.raise(S.SetAccesorCannotHaveReturnType, { at: i[n] }); + } else + i.kind = "method"; + return this.finishNode(i, "TSMethodSignature"); + } else { + let i = r; + s && (i.readonly = true); + let a = this.tsTryParseTypeAnnotation(); + return a && (i.typeAnnotation = a), this.tsParseTypeMemberSemicolon(), this.finishNode(i, "TSPropertySignature"); + } + } + tsParseTypeMember() { + let e = this.startNode(); + if (this.match(10) || this.match(47)) + return this.tsParseSignatureMember("TSCallSignatureDeclaration", e); + if (this.match(77)) { + let r = this.startNode(); + return this.next(), this.match(10) || this.match(47) ? this.tsParseSignatureMember("TSConstructSignatureDeclaration", e) : (e.key = this.createIdentifier(r, "new"), this.tsParsePropertyOrMethodSignature(e, false)); + } + this.tsParseModifiers({ modified: e, allowedModifiers: ["readonly"], disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] }); + let s = this.tsTryParseIndexSignature(e); + return s || (this.parsePropertyName(e), !e.computed && e.key.type === "Identifier" && (e.key.name === "get" || e.key.name === "set") && this.tsTokenCanFollowModifier() && (e.kind = e.key.name, this.parsePropertyName(e)), this.tsParsePropertyOrMethodSignature(e, !!e.readonly)); + } + tsParseTypeLiteral() { + let e = this.startNode(); + return e.members = this.tsParseObjectTypeMembers(), this.finishNode(e, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + let e = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + return this.expect(8), e; + } + tsIsStartOfMappedType() { + return this.next(), this.eat(53) ? this.isContextual(118) : (this.isContextual(118) && this.next(), !this.match(0) || (this.next(), !this.tsIsIdentifier()) ? false : (this.next(), this.match(58))); + } + tsParseMappedTypeParameter() { + let e = this.startNode(); + return e.name = this.tsParseTypeParameterName(), e.constraint = this.tsExpectThenParseType(58), this.finishNode(e, "TSTypeParameter"); + } + tsParseMappedType() { + let e = this.startNode(); + return this.expect(5), this.match(53) ? (e.readonly = this.state.value, this.next(), this.expectContextual(118)) : this.eatContextual(118) && (e.readonly = true), this.expect(0), e.typeParameter = this.tsParseMappedTypeParameter(), e.nameType = this.eatContextual(93) ? this.tsParseType() : null, this.expect(3), this.match(53) ? (e.optional = this.state.value, this.next(), this.expect(17)) : this.eat(17) && (e.optional = true), e.typeAnnotation = this.tsTryParseType(), this.semicolon(), this.expect(8), this.finishNode(e, "TSMappedType"); + } + tsParseTupleType() { + let e = this.startNode(); + e.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let s = false, r = null; + return e.elementTypes.forEach((i) => { + var a; + let { type: n } = i; + s && n !== "TSRestType" && n !== "TSOptionalType" && !(n === "TSNamedTupleMember" && i.optional) && this.raise(S.OptionalTypeBeforeRequired, { at: i }), s = s || n === "TSNamedTupleMember" && i.optional || n === "TSOptionalType", n === "TSRestType" && (i = i.typeAnnotation, n = i.type); + let o = n === "TSNamedTupleMember"; + r = (a = r) != null ? a : o, r !== o && this.raise(S.MixedLabeledAndUnlabeledElements, { at: i }); + }), this.finishNode(e, "TSTupleType"); + } + tsParseTupleElementType() { + let { start: e, startLoc: s } = this.state, r = this.eat(21), i = this.tsParseType(), a = this.eat(17); + if (this.eat(14)) { + let o = this.startNodeAtNode(i); + o.optional = a, i.type === "TSTypeReference" && !i.typeParameters && i.typeName.type === "Identifier" ? o.label = i.typeName : (this.raise(S.InvalidTupleMemberLabel, { at: i }), o.label = i), o.elementType = this.tsParseType(), i = this.finishNode(o, "TSNamedTupleMember"); + } else if (a) { + let o = this.startNodeAtNode(i); + o.typeAnnotation = i, i = this.finishNode(o, "TSOptionalType"); + } + if (r) { + let o = this.startNodeAt(e, s); + o.typeAnnotation = i, i = this.finishNode(o, "TSRestType"); + } + return i; + } + tsParseParenthesizedType() { + let e = this.startNode(); + return this.expect(10), e.typeAnnotation = this.tsParseType(), this.expect(11), this.finishNode(e, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(e, s) { + let r = this.startNode(); + return e === "TSConstructorType" && (r.abstract = !!s, s && this.next(), this.next()), this.tsFillSignature(19, r), this.finishNode(r, e); + } + tsParseLiteralTypeNode() { + let e = this.startNode(); + return e.literal = (() => { + switch (this.state.type) { + case 130: + case 131: + case 129: + case 85: + case 86: + return this.parseExprAtom(); + default: + throw this.unexpected(); + } + })(), this.finishNode(e, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + let e = this.startNode(); + return e.literal = this.parseTemplate(false), this.finishNode(e, "TSLiteralType"); + } + parseTemplateSubstitution() { + return this.state.inType ? this.tsParseType() : super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + let e = this.tsParseThisTypeNode(); + return this.isContextual(113) && !this.hasPrecedingLineBreak() ? this.tsParseThisTypePredicate(e) : e; + } + tsParseNonArrayType() { + switch (this.state.type) { + case 129: + case 130: + case 131: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + let e = this.startNode(), s = this.lookahead(); + if (s.type !== 130 && s.type !== 131) + throw this.unexpected(); + return e.literal = this.parseMaybeUnary(), this.finishNode(e, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: { + let { type: e } = this.state; + if (K(e) || e === 88 || e === 84) { + let s = e === 88 ? "TSVoidKeyword" : e === 84 ? "TSNullKeyword" : qh(this.state.value); + if (s !== void 0 && this.lookaheadCharCode() !== 46) { + let r = this.startNode(); + return this.next(), this.finishNode(r, s); + } + return this.tsParseTypeReference(); + } + } + } + throw this.unexpected(); + } + tsParseArrayTypeOrHigher() { + let e = this.tsParseNonArrayType(); + for (; !this.hasPrecedingLineBreak() && this.eat(0); ) + if (this.match(3)) { + let s = this.startNodeAtNode(e); + s.elementType = e, this.expect(3), e = this.finishNode(s, "TSArrayType"); + } else { + let s = this.startNodeAtNode(e); + s.objectType = e, s.indexType = this.tsParseType(), this.expect(3), e = this.finishNode(s, "TSIndexedAccessType"); + } + return e; + } + tsParseTypeOperator() { + let e = this.startNode(), s = this.state.value; + return this.next(), e.operator = s, e.typeAnnotation = this.tsParseTypeOperatorOrHigher(), s === "readonly" && this.tsCheckTypeAnnotationForReadOnly(e), this.finishNode(e, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(e) { + switch (e.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(S.UnexpectedReadonly, { at: e }); + } + } + tsParseInferType() { + let e = this.startNode(); + this.expectContextual(112); + let s = this.startNode(); + return s.name = this.tsParseTypeParameterName(), s.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()), e.typeParameter = this.finishNode(s, "TSTypeParameter"), this.finishNode(e, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + let e = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) + return e; + } + } + tsParseTypeOperatorOrHigher() { + return Fo(this.state.type) && !this.state.containsEsc ? this.tsParseTypeOperator() : this.isContextual(112) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(e, s, r) { + let i = this.startNode(), a = this.eat(r), n = []; + do + n.push(s()); + while (this.eat(r)); + return n.length === 1 && !a ? n[0] : (i.types = n, this.finishNode(i, e)); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + return this.match(47) ? true : this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (K(this.state.type) || this.match(78)) + return this.next(), true; + if (this.match(5)) { + let { errors: e } = this.state, s = e.length; + try { + return this.parseObjectLike(8, true), e.length === s; + } catch { + return false; + } + } + if (this.match(0)) { + this.next(); + let { errors: e } = this.state, s = e.length; + try { + return this.parseBindingList(3, 93, true), e.length === s; + } catch { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + return this.next(), !!(this.match(11) || this.match(21) || this.tsSkipParameterStart() && (this.match(14) || this.match(12) || this.match(17) || this.match(29) || this.match(11) && (this.next(), this.match(19)))); + } + tsParseTypeOrTypePredicateAnnotation(e) { + return this.tsInType(() => { + let s = this.startNode(); + this.expect(e); + let r = this.startNode(), i = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (i && this.match(78)) { + let o = this.tsParseThisTypeOrThisTypePredicate(); + return o.type === "TSThisType" ? (r.parameterName = o, r.asserts = true, r.typeAnnotation = null, o = this.finishNode(r, "TSTypePredicate")) : (this.resetStartLocationFromNode(o, r), o.asserts = true), s.typeAnnotation = o, this.finishNode(s, "TSTypeAnnotation"); + } + let a = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!a) + return i ? (r.parameterName = this.parseIdentifier(), r.asserts = i, r.typeAnnotation = null, s.typeAnnotation = this.finishNode(r, "TSTypePredicate"), this.finishNode(s, "TSTypeAnnotation")) : this.tsParseTypeAnnotation(false, s); + let n = this.tsParseTypeAnnotation(false); + return r.parameterName = a, r.typeAnnotation = n, r.asserts = i, s.typeAnnotation = this.finishNode(r, "TSTypePredicate"), this.finishNode(s, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + return this.match(14) ? this.tsParseTypeOrTypePredicateAnnotation(14) : void 0; + } + tsTryParseTypeAnnotation() { + return this.match(14) ? this.tsParseTypeAnnotation() : void 0; + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + let e = this.parseIdentifier(); + if (this.isContextual(113) && !this.hasPrecedingLineBreak()) + return this.next(), e; + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 106) + return false; + let e = this.state.containsEsc; + return this.next(), !K(this.state.type) && !this.match(78) ? false : (e && this.raise(u.InvalidEscapedReservedWord, { at: this.state.lastTokStartLoc, reservedWord: "asserts" }), true); + } + tsParseTypeAnnotation() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true, s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.startNode(); + return this.tsInType(() => { + e && this.expect(14), s.typeAnnotation = this.tsParseType(); + }), this.finishNode(s, "TSTypeAnnotation"); + } + tsParseType() { + Br(this.state.inType); + let e = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) + return e; + let s = this.startNodeAtNode(e); + return s.checkType = e, s.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()), this.expect(17), s.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()), this.expect(14), s.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()), this.finishNode(s, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(120) && this.lookahead().type === 77; + } + tsParseNonConditionalType() { + return this.tsIsStartOfFunctionType() ? this.tsParseFunctionOrConstructorType("TSFunctionType") : this.match(77) ? this.tsParseFunctionOrConstructorType("TSConstructorType") : this.isAbstractConstructorSignature() ? this.tsParseFunctionOrConstructorType("TSConstructorType", true) : this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + this.getPluginOption("typescript", "disallowAmbiguousJSXLike") && this.raise(S.ReservedTypeAssertion, { at: this.state.startLoc }); + let e = this.startNode(), s = this.tsTryNextParseConstantContext(); + return e.typeAnnotation = s || this.tsNextThenParseType(), this.expect(48), e.expression = this.parseMaybeUnary(), this.finishNode(e, "TSTypeAssertion"); + } + tsParseHeritageClause(e) { + let s = this.state.startLoc, r = this.tsParseDelimitedList("HeritageClauseElement", () => { + let i = this.startNode(); + return i.expression = this.tsParseEntityName(), this.match(47) && (i.typeParameters = this.tsParseTypeArguments()), this.finishNode(i, "TSExpressionWithTypeArguments"); + }); + return r.length || this.raise(S.EmptyHeritageClauseType, { at: s, token: e }), r; + } + tsParseInterfaceDeclaration(e) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (this.hasFollowingLineBreak()) + return null; + this.expectContextual(125), s.declare && (e.declare = true), K(this.state.type) ? (e.id = this.parseIdentifier(), this.checkIdentifier(e.id, Wo)) : (e.id = null, this.raise(S.MissingInterfaceName, { at: this.state.startLoc })), e.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)), this.eat(81) && (e.extends = this.tsParseHeritageClause("extends")); + let r = this.startNode(); + return r.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)), e.body = this.finishNode(r, "TSInterfaceBody"), this.finishNode(e, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(e) { + return e.id = this.parseIdentifier(), this.checkIdentifier(e.id, Go), e.typeAnnotation = this.tsInType(() => { + if (e.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)), this.expect(29), this.isContextual(111) && this.lookahead().type !== 16) { + let s = this.startNode(); + return this.next(), this.finishNode(s, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }), this.semicolon(), this.finishNode(e, "TSTypeAliasDeclaration"); + } + tsInNoContext(e) { + let s = this.state.context; + this.state.context = [s[0]]; + try { + return e(); + } finally { + this.state.context = s; + } + } + tsInType(e) { + let s = this.state.inType; + this.state.inType = true; + try { + return e(); + } finally { + this.state.inType = s; + } + } + tsInDisallowConditionalTypesContext(e) { + let s = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return e(); + } finally { + this.state.inDisallowConditionalTypesContext = s; + } + } + tsInAllowConditionalTypesContext(e) { + let s = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return e(); + } finally { + this.state.inDisallowConditionalTypesContext = s; + } + } + tsEatThenParseType(e) { + return this.match(e) ? this.tsNextThenParseType() : void 0; + } + tsExpectThenParseType(e) { + return this.tsDoThenParseType(() => this.expect(e)); + } + tsNextThenParseType() { + return this.tsDoThenParseType(() => this.next()); + } + tsDoThenParseType(e) { + return this.tsInType(() => (e(), this.tsParseType())); + } + tsParseEnumMember() { + let e = this.startNode(); + return e.id = this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true), this.eat(29) && (e.initializer = this.parseMaybeAssignAllowIn()), this.finishNode(e, "TSEnumMember"); + } + tsParseEnumDeclaration(e) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + return s.const && (e.const = true), s.declare && (e.declare = true), this.expectContextual(122), e.id = this.parseIdentifier(), this.checkIdentifier(e.id, e.const ? Jo : Er), this.expect(5), e.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)), this.expect(8), this.finishNode(e, "TSEnumDeclaration"); + } + tsParseModuleBlock() { + let e = this.startNode(); + return this.scope.enter(Me), this.expect(5), this.parseBlockOrModuleBlockBody(e.body = [], void 0, true, 8), this.scope.exit(), this.finishNode(e, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(e) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + if (e.id = this.parseIdentifier(), s || this.checkIdentifier(e.id, Yo), this.eat(16)) { + let r = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(r, true), e.body = r; + } else + this.scope.enter(ht), this.prodParam.enter(je), e.body = this.tsParseModuleBlock(), this.prodParam.exit(), this.scope.exit(); + return this.finishNode(e, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(e) { + return this.isContextual(109) ? (e.global = true, e.id = this.parseIdentifier()) : this.match(129) ? e.id = this.parseExprAtom() : this.unexpected(), this.match(5) ? (this.scope.enter(ht), this.prodParam.enter(je), e.body = this.tsParseModuleBlock(), this.prodParam.exit(), this.scope.exit()) : this.semicolon(), this.finishNode(e, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(e, s) { + e.isExport = s || false, e.id = this.parseIdentifier(), this.checkIdentifier(e.id, xe), this.expect(29); + let r = this.tsParseModuleReference(); + return e.importKind === "type" && r.type !== "TSExternalModuleReference" && this.raise(S.ImportAliasHasImportType, { at: r }), e.moduleReference = r, this.semicolon(), this.finishNode(e, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(116) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); + } + tsParseExternalModuleReference() { + let e = this.startNode(); + if (this.expectContextual(116), this.expect(10), !this.match(129)) + throw this.unexpected(); + return e.expression = this.parseExprAtom(), this.expect(11), this.finishNode(e, "TSExternalModuleReference"); + } + tsLookAhead(e) { + let s = this.state.clone(), r = e(); + return this.state = s, r; + } + tsTryParseAndCatch(e) { + let s = this.tryParse((r) => e() || r()); + if (!(s.aborted || !s.node)) + return s.error && (this.state = s.failState), s.node; + } + tsTryParse(e) { + let s = this.state.clone(), r = e(); + if (r !== void 0 && r !== false) + return r; + this.state = s; + } + tsTryParseDeclare(e) { + if (this.isLineTerminator()) + return; + let s = this.state.type, r; + return this.isContextual(99) && (s = 74, r = "let"), this.tsInAmbientContext(() => { + if (s === 68) + return e.declare = true, this.parseFunctionStatement(e, false, true); + if (s === 80) + return e.declare = true, this.parseClass(e, true, false); + if (s === 122) + return this.tsParseEnumDeclaration(e, { declare: true }); + if (s === 109) + return this.tsParseAmbientExternalModuleDeclaration(e); + if (s === 75 || s === 74) + return !this.match(75) || !this.isLookaheadContextual("enum") ? (e.declare = true, this.parseVarStatement(e, r || this.state.value, true)) : (this.expect(75), this.tsParseEnumDeclaration(e, { const: true, declare: true })); + if (s === 125) { + let i = this.tsParseInterfaceDeclaration(e, { declare: true }); + if (i) + return i; + } + if (K(s)) + return this.tsParseDeclaration(e, this.state.value, true); + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true); + } + tsParseExpressionStatement(e, s) { + switch (s.name) { + case "declare": { + let r = this.tsTryParseDeclare(e); + if (r) + return r.declare = true, r; + break; + } + case "global": + if (this.match(5)) { + this.scope.enter(ht), this.prodParam.enter(je); + let r = e; + return r.global = true, r.id = s, r.body = this.tsParseModuleBlock(), this.scope.exit(), this.prodParam.exit(), this.finishNode(r, "TSModuleDeclaration"); + } + break; + default: + return this.tsParseDeclaration(e, s.name, false); + } + } + tsParseDeclaration(e, s, r) { + switch (s) { + case "abstract": + if (this.tsCheckLineTerminator(r) && (this.match(80) || K(this.state.type))) + return this.tsParseAbstractDeclaration(e); + break; + case "module": + if (this.tsCheckLineTerminator(r)) { + if (this.match(129)) + return this.tsParseAmbientExternalModuleDeclaration(e); + if (K(this.state.type)) + return this.tsParseModuleOrNamespaceDeclaration(e); + } + break; + case "namespace": + if (this.tsCheckLineTerminator(r) && K(this.state.type)) + return this.tsParseModuleOrNamespaceDeclaration(e); + break; + case "type": + if (this.tsCheckLineTerminator(r) && K(this.state.type)) + return this.tsParseTypeAliasDeclaration(e); + break; + } + } + tsCheckLineTerminator(e) { + return e ? this.hasFollowingLineBreak() ? false : (this.next(), true) : !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(e, s) { + if (!this.match(47)) + return; + let r = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + let i = this.tsTryParseAndCatch(() => { + let a = this.startNodeAt(e, s); + return a.typeParameters = this.tsParseTypeParameters(), super.parseFunctionParams(a), a.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(), this.expect(19), a; + }); + if (this.state.maybeInArrowParameters = r, !!i) + return this.parseArrowExpression(i, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() === 47) + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + let e = this.startNode(); + return e.params = this.tsInType(() => this.tsInNoContext(() => (this.expect(47), this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this))))), e.params.length === 0 && this.raise(S.EmptyTypeArguments, { at: e }), this.expect(48), this.finishNode(e, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return Lo(this.state.type); + } + isExportDefaultSpecifier() { + return this.tsIsDeclarationStart() ? false : super.isExportDefaultSpecifier(); + } + parseAssignableListItem(e, s) { + let r = this.state.start, i = this.state.startLoc, a, n = false, o = false; + if (e !== void 0) { + let y = {}; + this.tsParseModifiers({ modified: y, allowedModifiers: ["public", "private", "protected", "override", "readonly"] }), a = y.accessibility, o = y.override, n = y.readonly, e === false && (a || n || o) && this.raise(S.UnexpectedParameterModifier, { at: i }); + } + let c = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(c); + let f = this.parseMaybeDefault(c.start, c.loc.start, c); + if (a || n || o) { + let y = this.startNodeAt(r, i); + return s.length && (y.decorators = s), a && (y.accessibility = a), n && (y.readonly = n), o && (y.override = o), f.type !== "Identifier" && f.type !== "AssignmentPattern" && this.raise(S.UnsupportedParameterPropertyKind, { at: y }), y.parameter = f, this.finishNode(y, "TSParameterProperty"); + } + return s.length && (c.decorators = s), f; + } + isSimpleParameter(e) { + return e.type === "TSParameterProperty" && super.isSimpleParameter(e.parameter) || super.isSimpleParameter(e); + } + parseFunctionBodyAndFinish(e, s) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + this.match(14) && (e.returnType = this.tsParseTypeOrTypePredicateAnnotation(14)); + let i = s === "FunctionDeclaration" ? "TSDeclareFunction" : s === "ClassMethod" || s === "ClassPrivateMethod" ? "TSDeclareMethod" : void 0; + if (i && !this.match(5) && this.isLineTerminator()) { + this.finishNode(e, i); + return; + } + if (i === "TSDeclareFunction" && this.state.isAmbientContext && (this.raise(S.DeclareFunctionHasImplementation, { at: e }), e.declare)) { + super.parseFunctionBodyAndFinish(e, i, r); + return; + } + super.parseFunctionBodyAndFinish(e, s, r); + } + registerFunctionStatementId(e) { + !e.body && e.id ? this.checkIdentifier(e.id, Cr) : super.registerFunctionStatementId(...arguments); + } + tsCheckForInvalidTypeCasts(e) { + e.forEach((s) => { + (s == null ? void 0 : s.type) === "TSTypeCastExpression" && this.raise(S.UnexpectedTypeAnnotation, { at: s.typeAnnotation }); + }); + } + toReferencedList(e, s) { + return this.tsCheckForInvalidTypeCasts(e), e; + } + parseArrayLike() { + let e = super.parseArrayLike(...arguments); + return e.type === "ArrayExpression" && this.tsCheckForInvalidTypeCasts(e.elements), e; + } + parseSubscript(e, s, r, i, a) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false, this.next(); + let o = this.startNodeAt(s, r); + return o.expression = e, this.finishNode(o, "TSNonNullExpression"); + } + let n = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (i) + return a.stop = true, e; + a.optionalChainMember = n = true, this.next(); + } + if (this.match(47) || this.match(51)) { + let o, c = this.tsTryParseAndCatch(() => { + if (!i && this.atPossibleAsyncArrow(e)) { + let P = this.tsTryParseGenericAsyncArrowFunction(s, r); + if (P) + return P; + } + let f = this.tsParseTypeArgumentsInExpression(); + if (!f) + throw this.unexpected(); + if (n && !this.match(10)) + throw o = this.state.curPosition(), this.unexpected(); + if (nt(this.state.type)) { + let P = this.parseTaggedTemplateExpression(e, s, r, a); + return P.typeParameters = f, P; + } + if (!i && this.eat(10)) { + let P = this.startNodeAt(s, r); + return P.callee = e, P.arguments = this.parseCallExpressionArguments(11, false), this.tsCheckForInvalidTypeCasts(P.arguments), P.typeParameters = f, a.optionalChainMember && (P.optional = n), this.finishCallExpression(P, a.optionalChainMember); + } + if (jh(this.state.type) && this.state.type !== 10) + throw this.unexpected(); + let y = this.startNodeAt(s, r); + return y.expression = e, y.typeParameters = f, this.finishNode(y, "TSInstantiationExpression"); + }); + if (o && this.unexpected(o, 10), c) + return c; + } + return super.parseSubscript(e, s, r, i, a); + } + parseNewCallee(e) { + var s; + super.parseNewCallee(e); + let { callee: r } = e; + r.type === "TSInstantiationExpression" && !((s = r.extra) != null && s.parenthesized) && (e.typeParameters = r.typeParameters, e.callee = r.expression); + } + parseExprOp(e, s, r, i) { + if (at(58) > i && !this.hasPrecedingLineBreak() && this.isContextual(93)) { + let a = this.startNodeAt(s, r); + a.expression = e; + let n = this.tsTryNextParseConstantContext(); + return n ? a.typeAnnotation = n : a.typeAnnotation = this.tsNextThenParseType(), this.finishNode(a, "TSAsExpression"), this.reScan_lt_gt(), this.parseExprOp(a, s, r, i); + } + return super.parseExprOp(e, s, r, i); + } + checkReservedWord(e, s, r, i) { + this.state.isAmbientContext || super.checkReservedWord(e, s, r, i); + } + checkDuplicateExports() { + } + parseImport(e) { + if (e.importKind = "value", K(this.state.type) || this.match(55) || this.match(5)) { + let r = this.lookahead(); + if (this.isContextual(126) && r.type !== 12 && r.type !== 97 && r.type !== 29 && (e.importKind = "type", this.next(), r = this.lookahead()), K(this.state.type) && r.type === 29) + return this.tsParseImportEqualsDeclaration(e); + } + let s = super.parseImport(e); + return s.importKind === "type" && s.specifiers.length > 1 && s.specifiers[0].type === "ImportDefaultSpecifier" && this.raise(S.TypeImportCannotSpecifyDefaultAndNamed, { at: s }), s; + } + parseExport(e) { + if (this.match(83)) + return this.next(), this.isContextual(126) && this.lookaheadCharCode() !== 61 ? (e.importKind = "type", this.next()) : e.importKind = "value", this.tsParseImportEqualsDeclaration(e, true); + if (this.eat(29)) { + let s = e; + return s.expression = this.parseExpression(), this.semicolon(), this.finishNode(s, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + let s = e; + return this.expectContextual(124), s.id = this.parseIdentifier(), this.semicolon(), this.finishNode(s, "TSNamespaceExportDeclaration"); + } else + return this.isContextual(126) && this.lookahead().type === 5 ? (this.next(), e.exportKind = "type") : e.exportKind = "value", super.parseExport(e); + } + isAbstractClass() { + return this.isContextual(120) && this.lookahead().type === 80; + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + let e = this.startNode(); + return this.next(), e.abstract = true, this.parseClass(e, true, true), e; + } + if (this.match(125)) { + let e = this.tsParseInterfaceDeclaration(this.startNode()); + if (e) + return e; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(e, s) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, { isAmbientContext: i } = this.state, a = super.parseVarStatement(e, s, r || i); + if (!i) + return a; + for (let { id: n, init: o } of a.declarations) + !o || (s !== "const" || !!n.typeAnnotation ? this.raise(S.InitializerNotAllowedInAmbientContext, { at: o }) : o.type !== "StringLiteral" && o.type !== "BooleanLiteral" && o.type !== "NumericLiteral" && o.type !== "BigIntLiteral" && (o.type !== "TemplateLiteral" || o.expressions.length > 0) && !zh(o) && this.raise(S.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, { at: o })); + return a; + } + parseStatementContent(e, s) { + if (this.match(75) && this.isLookaheadContextual("enum")) { + let r = this.startNode(); + return this.expect(75), this.tsParseEnumDeclaration(r, { const: true }); + } + if (this.isContextual(122)) + return this.tsParseEnumDeclaration(this.startNode()); + if (this.isContextual(125)) { + let r = this.tsParseInterfaceDeclaration(this.startNode()); + if (r) + return r; + } + return super.parseStatementContent(e, s); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(e, s) { + return s.some((r) => Mr(r) ? e.accessibility === r : !!e[r]); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(104) && this.lookaheadCharCode() === 123; + } + parseClassMember(e, s, r) { + let i = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ modified: s, allowedModifiers: i, disallowedModifiers: ["in", "out"], stopOnStartOfClassStaticBlock: true, errorTemplate: S.InvalidModifierOnTypeParameterPositions }); + let a = () => { + this.tsIsStartOfStaticBlocks() ? (this.next(), this.next(), this.tsHasSomeModifiers(s, i) && this.raise(S.StaticBlockCannotHaveModifier, { at: this.state.curPosition() }), this.parseClassStaticBlock(e, s)) : this.parseClassMemberWithIsStatic(e, s, r, !!s.static); + }; + s.declare ? this.tsInAmbientContext(a) : a(); + } + parseClassMemberWithIsStatic(e, s, r, i) { + let a = this.tsTryParseIndexSignature(s); + if (a) { + e.body.push(a), s.abstract && this.raise(S.IndexSignatureHasAbstract, { at: s }), s.accessibility && this.raise(S.IndexSignatureHasAccessibility, { at: s, modifier: s.accessibility }), s.declare && this.raise(S.IndexSignatureHasDeclare, { at: s }), s.override && this.raise(S.IndexSignatureHasOverride, { at: s }); + return; + } + !this.state.inAbstractClass && s.abstract && this.raise(S.NonAbstractClassHasAbstractMethod, { at: s }), s.override && (r.hadSuperClass || this.raise(S.OverrideNotInSubClass, { at: s })), super.parseClassMemberWithIsStatic(e, s, r, i); + } + parsePostMemberNameModifiers(e) { + this.eat(17) && (e.optional = true), e.readonly && this.match(10) && this.raise(S.ClassMethodHasReadonly, { at: e }), e.declare && this.match(10) && this.raise(S.ClassMethodHasDeclare, { at: e }); + } + parseExpressionStatement(e, s) { + return (s.type === "Identifier" ? this.tsParseExpressionStatement(e, s) : void 0) || super.parseExpressionStatement(e, s); + } + shouldParseExportDeclaration() { + return this.tsIsDeclarationStart() ? true : super.shouldParseExportDeclaration(); + } + parseConditional(e, s, r, i) { + if (!this.state.maybeInArrowParameters || !this.match(17)) + return super.parseConditional(e, s, r, i); + let a = this.tryParse(() => super.parseConditional(e, s, r)); + return a.node ? (a.error && (this.state = a.failState), a.node) : (a.error && super.setOptionalParametersError(i, a.error), e); + } + parseParenItem(e, s, r) { + if (e = super.parseParenItem(e, s, r), this.eat(17) && (e.optional = true, this.resetEndLocation(e)), this.match(14)) { + let i = this.startNodeAt(s, r); + return i.expression = e, i.typeAnnotation = this.tsParseTypeAnnotation(), this.finishNode(i, "TSTypeCastExpression"); + } + return e; + } + parseExportDeclaration(e) { + if (!this.state.isAmbientContext && this.isContextual(121)) + return this.tsInAmbientContext(() => this.parseExportDeclaration(e)); + let s = this.state.start, r = this.state.startLoc, i = this.eatContextual(121); + if (i && (this.isContextual(121) || !this.shouldParseExportDeclaration())) + throw this.raise(S.ExpectedAmbientAfterExportDeclare, { at: this.state.startLoc }); + let n = K(this.state.type) && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(e); + return n ? ((n.type === "TSInterfaceDeclaration" || n.type === "TSTypeAliasDeclaration" || i) && (e.exportKind = "type"), i && (this.resetStartLocation(n, s, r), n.declare = true), n) : null; + } + parseClassId(e, s, r) { + if ((!s || r) && this.isContextual(110)) + return; + super.parseClassId(e, s, r, e.declare ? Cr : Pr); + let i = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)); + i && (e.typeParameters = i); + } + parseClassPropertyAnnotation(e) { + !e.optional && this.eat(35) && (e.definite = true); + let s = this.tsTryParseTypeAnnotation(); + s && (e.typeAnnotation = s); + } + parseClassProperty(e) { + if (this.parseClassPropertyAnnotation(e), this.state.isAmbientContext && this.match(29) && this.raise(S.DeclareClassFieldHasInitializer, { at: this.state.startLoc }), e.abstract && this.match(29)) { + let { key: s } = e; + this.raise(S.AbstractPropertyHasInitializer, { at: this.state.startLoc, propertyName: s.type === "Identifier" && !e.computed ? s.name : "[".concat(this.input.slice(s.start, s.end), "]") }); + } + return super.parseClassProperty(e); + } + parseClassPrivateProperty(e) { + return e.abstract && this.raise(S.PrivateElementHasAbstract, { at: e }), e.accessibility && this.raise(S.PrivateElementHasAccessibility, { at: e, modifier: e.accessibility }), this.parseClassPropertyAnnotation(e), super.parseClassPrivateProperty(e); + } + pushClassMethod(e, s, r, i, a, n) { + let o = this.tsTryParseTypeParameters(); + o && a && this.raise(S.ConstructorHasTypeParameters, { at: o }); + let { declare: c = false, kind: f } = s; + c && (f === "get" || f === "set") && this.raise(S.DeclareAccessor, { at: s, kind: f }), o && (s.typeParameters = o), super.pushClassMethod(e, s, r, i, a, n); + } + pushClassPrivateMethod(e, s, r, i) { + let a = this.tsTryParseTypeParameters(); + a && (s.typeParameters = a), super.pushClassPrivateMethod(e, s, r, i); + } + declareClassPrivateMethodInScope(e, s) { + e.type !== "TSDeclareMethod" && (e.type === "MethodDefinition" && !e.value.body || super.declareClassPrivateMethodInScope(e, s)); + } + parseClassSuper(e) { + super.parseClassSuper(e), e.superClass && (this.match(47) || this.match(51)) && (e.superTypeParameters = this.tsParseTypeArgumentsInExpression()), this.eatContextual(110) && (e.implements = this.tsParseHeritageClause("implements")); + } + parseObjPropValue(e) { + let s = this.tsTryParseTypeParameters(); + s && (e.typeParameters = s); + for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), a = 1; a < r; a++) + i[a - 1] = arguments[a]; + super.parseObjPropValue(e, ...i); + } + parseFunctionParams(e, s) { + let r = this.tsTryParseTypeParameters(); + r && (e.typeParameters = r), super.parseFunctionParams(e, s); + } + parseVarId(e, s) { + super.parseVarId(e, s), e.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35) && (e.definite = true); + let r = this.tsTryParseTypeAnnotation(); + r && (e.id.typeAnnotation = r, this.resetEndLocation(e.id)); + } + parseAsyncArrowFromCallExpression(e, s) { + return this.match(14) && (e.returnType = this.tsParseTypeAnnotation()), super.parseAsyncArrowFromCallExpression(e, s); + } + parseMaybeAssign() { + for (var e = arguments.length, s = new Array(e), r = 0; r < e; r++) + s[r] = arguments[r]; + var i, a, n, o, c, f, y; + let P, v, N; + if (this.hasPlugin("jsx") && (this.match(138) || this.match(47))) { + if (P = this.state.clone(), v = this.tryParse(() => super.parseMaybeAssign(...s), P), !v.error) + return v.node; + let { context: Q } = this.state, re = Q[Q.length - 1]; + (re === z.j_oTag || re === z.j_expr) && Q.pop(); + } + if (!((i = v) != null && i.error) && !this.match(47)) + return super.parseMaybeAssign(...s); + let B; + P = P || this.state.clone(); + let _ = this.tryParse((Q) => { + var re, ne, $e; + B = this.tsParseTypeParameters(); + let le = super.parseMaybeAssign(...s); + return (le.type !== "ArrowFunctionExpression" || (re = le.extra) != null && re.parenthesized) && Q(), ((ne = B) == null ? void 0 : ne.params.length) !== 0 && this.resetStartLocationFromNode(le, B), le.typeParameters = B, this.hasPlugin("jsx") && le.typeParameters.params.length === 1 && !(($e = le.typeParameters.extra) != null && $e.trailingComma) && le.typeParameters.params[0].constraint, le; + }, P); + if (!_.error && !_.aborted) + return B && this.reportReservedArrowTypeParam(B), _.node; + if (!v && (Br(!this.hasPlugin("jsx")), N = this.tryParse(() => super.parseMaybeAssign(...s), P), !N.error)) + return N.node; + if ((a = v) != null && a.node) + return this.state = v.failState, v.node; + if (_.node) + return this.state = _.failState, B && this.reportReservedArrowTypeParam(B), _.node; + if ((n = N) != null && n.node) + return this.state = N.failState, N.node; + throw (o = v) != null && o.thrown ? v.error : _.thrown ? _.error : (c = N) != null && c.thrown ? N.error : ((f = v) == null ? void 0 : f.error) || _.error || ((y = N) == null ? void 0 : y.error); + } + reportReservedArrowTypeParam(e) { + var s; + e.params.length === 1 && !((s = e.extra) != null && s.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike") && this.raise(S.ReservedArrowTypeParam, { at: e }); + } + parseMaybeUnary(e) { + return !this.hasPlugin("jsx") && this.match(47) ? this.tsParseTypeAssertion() : super.parseMaybeUnary(e); + } + parseArrow(e) { + if (this.match(14)) { + let s = this.tryParse((r) => { + let i = this.tsParseTypeOrTypePredicateAnnotation(14); + return (this.canInsertSemicolon() || !this.match(19)) && r(), i; + }); + if (s.aborted) + return; + s.thrown || (s.error && (this.state = s.failState), e.returnType = s.node); + } + return super.parseArrow(e); + } + parseAssignableListItemTypes(e) { + this.eat(17) && (e.type !== "Identifier" && !this.state.isAmbientContext && !this.state.inType && this.raise(S.PatternIsOptional, { at: e }), e.optional = true); + let s = this.tsTryParseTypeAnnotation(); + return s && (e.typeAnnotation = s), this.resetEndLocation(e), e; + } + isAssignable(e, s) { + switch (e.type) { + case "TSTypeCastExpression": + return this.isAssignable(e.expression, s); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(e, s); + } + } + toAssignable(e) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + switch (e.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(e, s); + break; + case "TSAsExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + s ? this.expressionScope.recordArrowParemeterBindingError(S.UnexpectedTypeCastInParameter, { at: e }) : this.raise(S.UnexpectedTypeCastInParameter, { at: e }), this.toAssignable(e.expression, s); + break; + case "AssignmentExpression": + !s && e.left.type === "TSTypeCastExpression" && (e.left = this.typeCastToParameter(e.left)); + default: + super.toAssignable(e, s); + } + } + toAssignableParenthesizedExpression(e, s) { + switch (e.expression.type) { + case "TSAsExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(e.expression, s); + break; + default: + super.toAssignable(e, s); + } + } + checkToRestConversion(e, s) { + switch (e.type) { + case "TSAsExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(e.expression, false); + break; + default: + super.checkToRestConversion(e, s); + } + } + isValidLVal(e, s, r) { + return Mh({ TSTypeCastExpression: true, TSParameterProperty: "parameter", TSNonNullExpression: "expression", TSAsExpression: (r !== we || !s) && ["expression", true], TSTypeAssertion: (r !== we || !s) && ["expression", true] }, e) || super.isValidLVal(e, s, r); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseMaybeDecoratorArguments(e) { + if (this.match(47) || this.match(51)) { + let s = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + let r = super.parseMaybeDecoratorArguments(e); + return r.typeParameters = s, r; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(e); + } + checkCommaAfterRest(e) { + return this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === e ? (this.next(), false) : super.checkCommaAfterRest(e); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault() { + let e = super.parseMaybeDefault(...arguments); + return e.type === "AssignmentPattern" && e.typeAnnotation && e.right.start < e.typeAnnotation.start && this.raise(S.TypeAnnotationAfterAssign, { at: e.typeAnnotation }), e; + } + getTokenFromCode(e) { + if (this.state.inType) { + if (e === 62) + return this.finishOp(48, 1); + if (e === 60) + return this.finishOp(47, 1); + } + return super.getTokenFromCode(e); + } + reScan_lt_gt() { + let { type: e } = this.state; + e === 47 ? (this.state.pos -= 1, this.readToken_lt()) : e === 48 && (this.state.pos -= 1, this.readToken_gt()); + } + reScan_lt() { + let { type: e } = this.state; + return e === 51 ? (this.state.pos -= 2, this.finishOp(47, 1), 47) : e; + } + toAssignableList(e) { + for (let s = 0; s < e.length; s++) { + let r = e[s]; + (r == null ? void 0 : r.type) === "TSTypeCastExpression" && (e[s] = this.typeCastToParameter(r)); + } + super.toAssignableList(...arguments); + } + typeCastToParameter(e) { + return e.expression.typeAnnotation = e.typeAnnotation, this.resetEndLocation(e.expression, e.typeAnnotation.loc.end), e.expression; + } + shouldParseArrow(e) { + return this.match(14) ? e.every((s) => this.isAssignable(s, true)) : super.shouldParseArrow(e); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(e) { + if (this.match(47) || this.match(51)) { + let s = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + s && (e.typeParameters = s); + } + return super.jsxParseOpeningElementAfterName(e); + } + getGetterSetterExpectedParamCount(e) { + let s = super.getGetterSetterExpectedParamCount(e), i = this.getObjectOrClassMethodParams(e)[0]; + return i && this.isThisParam(i) ? s + 1 : s; + } + parseCatchClauseParam() { + let e = super.parseCatchClauseParam(), s = this.tsTryParseTypeAnnotation(); + return s && (e.typeAnnotation = s, this.resetEndLocation(e)), e; + } + tsInAmbientContext(e) { + let s = this.state.isAmbientContext; + this.state.isAmbientContext = true; + try { + return e(); + } finally { + this.state.isAmbientContext = s; + } + } + parseClass(e) { + let s = this.state.inAbstractClass; + this.state.inAbstractClass = !!e.abstract; + try { + for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), a = 1; a < r; a++) + i[a - 1] = arguments[a]; + return super.parseClass(e, ...i); + } finally { + this.state.inAbstractClass = s; + } + } + tsParseAbstractDeclaration(e) { + if (this.match(80)) + return e.abstract = true, this.parseClass(e, true, false); + if (this.isContextual(125)) { + if (!this.hasFollowingLineBreak()) + return e.abstract = true, this.raise(S.NonClassMethodPropertyHasAbstractModifer, { at: e }), this.tsParseInterfaceDeclaration(e); + } else + this.unexpected(null, 80); + } + parseMethod() { + let e = super.parseMethod(...arguments); + if (e.abstract && (this.hasPlugin("estree") ? !!e.value.body : !!e.body)) { + let { key: r } = e; + this.raise(S.AbstractMethodHasImplementation, { at: e, methodName: r.type === "Identifier" && !e.computed ? r.name : "[".concat(this.input.slice(r.start, r.end), "]") }); + } + return e; + } + tsParseTypeParameterName() { + return this.parseIdentifier().name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + return this.shouldParseAsAmbientContext() && (this.state.isAmbientContext = true), super.parse(); + } + getExpression() { + return this.shouldParseAsAmbientContext() && (this.state.isAmbientContext = true), super.getExpression(); + } + parseExportSpecifier(e, s, r, i) { + return !s && i ? (this.parseTypeOnlyImportExportSpecifier(e, false, r), this.finishNode(e, "ExportSpecifier")) : (e.exportKind = "value", super.parseExportSpecifier(e, s, r, i)); + } + parseImportSpecifier(e, s, r, i) { + return !s && i ? (this.parseTypeOnlyImportExportSpecifier(e, true, r), this.finishNode(e, "ImportSpecifier")) : (e.importKind = "value", super.parseImportSpecifier(e, s, r, i)); + } + parseTypeOnlyImportExportSpecifier(e, s, r) { + let i = s ? "imported" : "local", a = s ? "local" : "exported", n = e[i], o, c = false, f = true, y = n.loc.start; + if (this.isContextual(93)) { + let v = this.parseIdentifier(); + if (this.isContextual(93)) { + let N = this.parseIdentifier(); + pe(this.state.type) ? (c = true, n = v, o = s ? this.parseIdentifier() : this.parseModuleExportName(), f = false) : (o = N, f = false); + } else + pe(this.state.type) ? (f = false, o = s ? this.parseIdentifier() : this.parseModuleExportName()) : (c = true, n = v); + } else + pe(this.state.type) && (c = true, s ? (n = this.parseIdentifier(true), this.isContextual(93) || this.checkReservedWord(n.name, n.loc.start, true, true)) : n = this.parseModuleExportName()); + c && r && this.raise(s ? S.TypeModifierIsUsedInTypeImports : S.TypeModifierIsUsedInTypeExports, { at: y }), e[i] = n, e[a] = o; + let P = s ? "importKind" : "exportKind"; + e[P] = c ? "type" : "value", f && this.eatContextual(93) && (e[a] = s ? this.parseIdentifier() : this.parseModuleExportName()), e[a] || (e[a] = ge(e[i])), s && this.checkIdentifier(e[a], xe); + } + }; + function zh(t) { + if (t.type !== "MemberExpression") + return false; + let { computed: e, property: s } = t; + return e && s.type !== "StringLiteral" && (s.type !== "TemplateLiteral" || s.expressions.length > 0) ? false : Rr(t.object); + } + function Rr(t) { + return t.type === "Identifier" ? true : t.type !== "MemberExpression" || t.computed ? false : Rr(t.object); + } + var jr = j(Hn || (Hn = rt(["placeholders"])))((t) => ({ ClassNameIsRequired: t("A class name is required."), UnexpectedSpace: t("Unexpected space in placeholder.") })), Kh = (t) => class extends t { + parsePlaceholder(e) { + if (this.match(140)) { + let s = this.startNode(); + return this.next(), this.assertNoSpace(), s.name = super.parseIdentifier(true), this.assertNoSpace(), this.expect(140), this.finishPlaceholder(s, e); + } + } + finishPlaceholder(e, s) { + let r = !!(e.expectedNode && e.type === "Placeholder"); + return e.expectedNode = s, r ? e : this.finishNode(e, "Placeholder"); + } + getTokenFromCode(e) { + return e === 37 && this.input.charCodeAt(this.state.pos + 1) === 37 ? this.finishOp(140, 2) : super.getTokenFromCode(...arguments); + } + parseExprAtom() { + return this.parsePlaceholder("Expression") || super.parseExprAtom(...arguments); + } + parseIdentifier() { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(...arguments); + } + checkReservedWord(e) { + e !== void 0 && super.checkReservedWord(...arguments); + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments); + } + isValidLVal(e) { + for (var s = arguments.length, r = new Array(s > 1 ? s - 1 : 0), i = 1; i < s; i++) + r[i - 1] = arguments[i]; + return e === "Placeholder" || super.isValidLVal(e, ...r); + } + toAssignable(e) { + e && e.type === "Placeholder" && e.expectedNode === "Expression" ? e.expectedNode = "Pattern" : super.toAssignable(...arguments); + } + isLet(e) { + return super.isLet(e) ? true : !this.isContextual(99) || e ? false : this.lookahead().type === 140; + } + verifyBreakContinue(e) { + e.label && e.label.type === "Placeholder" || super.verifyBreakContinue(...arguments); + } + parseExpressionStatement(e, s) { + if (s.type !== "Placeholder" || s.extra && s.extra.parenthesized) + return super.parseExpressionStatement(...arguments); + if (this.match(14)) { + let r = e; + return r.label = this.finishPlaceholder(s, "Identifier"), this.next(), r.body = this.parseStatement("label"), this.finishNode(r, "LabeledStatement"); + } + return this.semicolon(), e.name = s.name, this.finishPlaceholder(e, "Statement"); + } + parseBlock() { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(...arguments); + } + parseFunctionId() { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(...arguments); + } + parseClass(e, s, r) { + let i = s ? "ClassDeclaration" : "ClassExpression"; + this.next(), this.takeDecorators(e); + let a = this.state.strict, n = this.parsePlaceholder("Identifier"); + if (n) + if (this.match(81) || this.match(140) || this.match(5)) + e.id = n; + else { + if (r || !s) + return e.id = null, e.body = this.finishPlaceholder(n, "ClassBody"), this.finishNode(e, i); + throw this.raise(jr.ClassNameIsRequired, { at: this.state.startLoc }); + } + else + this.parseClassId(e, s, r); + return this.parseClassSuper(e), e.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!e.superClass, a), this.finishNode(e, i); + } + parseExport(e) { + let s = this.parsePlaceholder("Identifier"); + if (!s) + return super.parseExport(...arguments); + if (!this.isContextual(97) && !this.match(12)) + return e.specifiers = [], e.source = null, e.declaration = this.finishPlaceholder(s, "Declaration"), this.finishNode(e, "ExportNamedDeclaration"); + this.expectPlugin("exportDefaultFrom"); + let r = this.startNode(); + return r.exported = s, e.specifiers = [this.finishNode(r, "ExportDefaultSpecifier")], super.parseExport(e); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + let e = this.nextTokenStart(); + if (this.isUnparsedContextual(e, "from") && this.input.startsWith(Pe(140), this.nextTokenStartSince(e + 4))) + return true; + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(e) { + return e.specifiers && e.specifiers.length > 0 ? true : super.maybeParseExportDefaultSpecifier(...arguments); + } + checkExport(e) { + let { specifiers: s } = e; + s != null && s.length && (e.specifiers = s.filter((r) => r.exported.type === "Placeholder")), super.checkExport(e), e.specifiers = s; + } + parseImport(e) { + let s = this.parsePlaceholder("Identifier"); + if (!s) + return super.parseImport(...arguments); + if (e.specifiers = [], !this.isContextual(97) && !this.match(12)) + return e.source = this.finishPlaceholder(s, "StringLiteral"), this.semicolon(), this.finishNode(e, "ImportDeclaration"); + let r = this.startNodeAtNode(s); + return r.local = s, this.finishNode(r, "ImportDefaultSpecifier"), e.specifiers.push(r), this.eat(12) && (this.maybeParseStarImportSpecifier(e) || this.parseNamedImportSpecifiers(e)), this.expectContextual(97), e.source = this.parseImportSource(), this.semicolon(), this.finishNode(e, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments); + } + assertNoSpace() { + this.state.start > this.state.lastTokEndLoc.index && this.raise(jr.UnexpectedSpace, { at: this.state.lastTokEndLoc }); + } + }, Vh = (t) => class extends t { + parseV8Intrinsic() { + if (this.match(54)) { + let e = this.state.startLoc, s = this.startNode(); + if (this.next(), K(this.state.type)) { + let r = this.parseIdentifierName(this.state.start), i = this.createIdentifier(s, r); + if (i.type = "V8IntrinsicIdentifier", this.match(10)) + return i; + } + this.unexpected(e); + } + } + parseExprAtom() { + return this.parseV8Intrinsic() || super.parseExprAtom(...arguments); + } + }; + function ee(t, e) { + let [s, r] = typeof e == "string" ? [e, {}] : e, i = Object.keys(r), a = i.length === 0; + return t.some((n) => { + if (typeof n == "string") + return a && n === s; + { + let [o, c] = n; + if (o !== s) + return false; + for (let f of i) + if (c[f] !== r[f]) + return false; + return true; + } + }); + } + function Je(t, e, s) { + let r = t.find((i) => Array.isArray(i) ? i[0] === e : i === e); + return r && Array.isArray(r) ? r[1][s] : null; + } + var qr = ["minimal", "fsharp", "hack", "smart"], Ur = ["^^", "@@", "^", "%", "#"], _r = ["hash", "bar"]; + function Hh(t) { + if (ee(t, "decorators")) { + if (ee(t, "decorators-legacy")) + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + let e = Je(t, "decorators", "decoratorsBeforeExport"); + if (e == null) + throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option, whose value must be a boolean. If you are migrating from Babylon/Babel 6 or want to use the old decorators proposal, you should use the 'decorators-legacy' plugin instead of 'decorators'."); + if (typeof e != "boolean") + throw new Error("'decoratorsBeforeExport' must be a boolean."); + } + if (ee(t, "flow") && ee(t, "typescript")) + throw new Error("Cannot combine flow and typescript plugins."); + if (ee(t, "placeholders") && ee(t, "v8intrinsic")) + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + if (ee(t, "pipelineOperator")) { + let e = Je(t, "pipelineOperator", "proposal"); + if (!qr.includes(e)) { + let r = qr.map((i) => '"'.concat(i, '"')).join(", "); + throw new Error('"pipelineOperator" requires "proposal" option whose value must be one of: '.concat(r, ".")); + } + let s = ee(t, ["recordAndTuple", { syntaxType: "hash" }]); + if (e === "hack") { + if (ee(t, "placeholders")) + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + if (ee(t, "v8intrinsic")) + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + let r = Je(t, "pipelineOperator", "topicToken"); + if (!Ur.includes(r)) { + let i = Ur.map((a) => '"'.concat(a, '"')).join(", "); + throw new Error('"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: '.concat(i, ".")); + } + if (r === "#" && s) + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } else if (e === "smart" && s) + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } + if (ee(t, "moduleAttributes")) { + if (ee(t, "importAssertions")) + throw new Error("Cannot combine importAssertions and moduleAttributes plugins."); + if (Je(t, "moduleAttributes", "version") !== "may-2020") + throw new Error("The 'moduleAttributes' plugin requires a 'version' option, representing the last proposal update. Currently, the only supported value is 'may-2020'."); + } + if (ee(t, "recordAndTuple") && !_r.includes(Je(t, "recordAndTuple", "syntaxType"))) + throw new Error("'recordAndTuple' requires 'syntaxType' option whose value should be one of: " + _r.map((e) => "'".concat(e, "'")).join(", ")); + if (ee(t, "asyncDoExpressions") && !ee(t, "doExpressions")) { + let e = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + throw e.missingPlugins = "doExpressions", e; + } + } + var zr = { estree: Oe, jsx: Lh, flow: Dh, typescript: _h, v8intrinsic: Vh, placeholders: Kh }, Wh = Object.keys(zr), Kr = { sourceType: "script", sourceFilename: void 0, startColumn: 0, startLine: 1, allowAwaitOutsideFunction: false, allowReturnOutsideFunction: false, allowImportExportEverywhere: false, allowSuperOutsideMethod: false, allowUndeclaredExports: false, plugins: [], strictMode: null, ranges: false, tokens: false, createParenthesizedExpressions: false, errorRecovery: false, attachComment: true }; + function Gh(t) { + let e = {}; + for (let s of Object.keys(Kr)) + e[s] = t && t[s] != null ? t[s] : Kr[s]; + return e; + } + var Xh = (t, e) => Object.hasOwnProperty.call(t, e) && t[e], Vr = (t) => t.type === "ParenthesizedExpression" ? Vr(t.expression) : t, Jh = class extends vh { + toAssignable(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + var s, r; + let i; + switch ((t.type === "ParenthesizedExpression" || (s = t.extra) != null && s.parenthesized) && (i = Vr(t), e ? i.type === "Identifier" ? this.expressionScope.recordArrowParemeterBindingError(u.InvalidParenthesizedAssignment, { at: t }) : i.type !== "MemberExpression" && this.raise(u.InvalidParenthesizedAssignment, { at: t }) : this.raise(u.InvalidParenthesizedAssignment, { at: t })), t.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break; + case "ObjectExpression": + t.type = "ObjectPattern"; + for (let n = 0, o = t.properties.length, c = o - 1; n < o; n++) { + var a; + let f = t.properties[n], y = n === c; + this.toAssignableObjectExpressionProp(f, y, e), y && f.type === "RestElement" && (a = t.extra) != null && a.trailingCommaLoc && this.raise(u.RestTrailingComma, { at: t.extra.trailingCommaLoc }); + } + break; + case "ObjectProperty": { + let { key: n, value: o } = t; + this.isPrivateName(n) && this.classScope.usePrivateName(this.getPrivateNameSV(n), n.loc.start), this.toAssignable(o, e); + break; + } + case "SpreadElement": + throw new Error("Internal @babel/parser error (this is a bug, please report it). SpreadElement should be converted by .toAssignable's caller."); + case "ArrayExpression": + t.type = "ArrayPattern", this.toAssignableList(t.elements, (r = t.extra) == null ? void 0 : r.trailingCommaLoc, e); + break; + case "AssignmentExpression": + t.operator !== "=" && this.raise(u.MissingEqInAssignment, { at: t.left.loc.end }), t.type = "AssignmentPattern", delete t.operator, this.toAssignable(t.left, e); + break; + case "ParenthesizedExpression": + this.toAssignable(i, e); + break; + } + } + toAssignableObjectExpressionProp(t, e, s) { + if (t.type === "ObjectMethod") + this.raise(t.kind === "get" || t.kind === "set" ? u.PatternHasAccessor : u.PatternHasMethod, { at: t.key }); + else if (t.type === "SpreadElement") { + t.type = "RestElement"; + let r = t.argument; + this.checkToRestConversion(r, false), this.toAssignable(r, s), e || this.raise(u.RestTrailingComma, { at: t }); + } else + this.toAssignable(t, s); + } + toAssignableList(t, e, s) { + let r = t.length - 1; + for (let i = 0; i <= r; i++) { + let a = t[i]; + if (!!a) { + if (a.type === "SpreadElement") { + a.type = "RestElement"; + let n = a.argument; + this.checkToRestConversion(n, true), this.toAssignable(n, s); + } else + this.toAssignable(a, s); + a.type === "RestElement" && (i < r ? this.raise(u.RestTrailingComma, { at: a }) : e && this.raise(u.RestTrailingComma, { at: e })); + } + } + } + isAssignable(t, e) { + switch (t.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + return true; + case "ObjectExpression": { + let s = t.properties.length - 1; + return t.properties.every((r, i) => r.type !== "ObjectMethod" && (i === s || r.type !== "SpreadElement") && this.isAssignable(r)); + } + case "ObjectProperty": + return this.isAssignable(t.value); + case "SpreadElement": + return this.isAssignable(t.argument); + case "ArrayExpression": + return t.elements.every((s) => s === null || this.isAssignable(s)); + case "AssignmentExpression": + return t.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(t.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !e; + default: + return false; + } + } + toReferencedList(t, e) { + return t; + } + toReferencedListDeep(t, e) { + this.toReferencedList(t, e); + for (let s of t) + (s == null ? void 0 : s.type) === "ArrayExpression" && this.toReferencedListDeep(s.elements); + } + parseSpread(t, e) { + let s = this.startNode(); + return this.next(), s.argument = this.parseMaybeAssignAllowIn(t, void 0, e), this.finishNode(s, "SpreadElement"); + } + parseRestBinding() { + let t = this.startNode(); + return this.next(), t.argument = this.parseBindingAtom(), this.finishNode(t, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: { + let t = this.startNode(); + return this.next(), t.elements = this.parseBindingList(3, 93, true), this.finishNode(t, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + } + return this.parseIdentifier(); + } + parseBindingList(t, e, s, r) { + let i = [], a = true; + for (; !this.eat(t); ) + if (a ? a = false : this.expect(12), s && this.match(12)) + i.push(null); + else { + if (this.eat(t)) + break; + if (this.match(21)) { + if (i.push(this.parseAssignableListItemTypes(this.parseRestBinding())), !this.checkCommaAfterRest(e)) { + this.expect(t); + break; + } + } else { + let n = []; + for (this.match(26) && this.hasPlugin("decorators") && this.raise(u.UnsupportedParameterDecorator, { at: this.state.startLoc }); this.match(26); ) + n.push(this.parseDecorator()); + i.push(this.parseAssignableListItem(r, n)); + } + } + return i; + } + parseBindingRestProperty(t) { + return this.next(), t.argument = this.parseIdentifier(), this.checkCommaAfterRest(125), this.finishNode(t, "RestElement"); + } + parseBindingProperty() { + let t = this.startNode(), { type: e, start: s, startLoc: r } = this.state; + return e === 21 ? this.parseBindingRestProperty(t) : (e === 134 ? (this.expectPlugin("destructuringPrivate", r), this.classScope.usePrivateName(this.state.value, r), t.key = this.parsePrivateName()) : this.parsePropertyName(t), t.method = false, this.parseObjPropValue(t, s, r, false, false, true, false), t); + } + parseAssignableListItem(t, e) { + let s = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(s); + let r = this.parseMaybeDefault(s.start, s.loc.start, s); + return e.length && (s.decorators = e), r; + } + parseAssignableListItemTypes(t) { + return t; + } + parseMaybeDefault(t, e, s) { + var r, i, a; + if (e = (r = e) != null ? r : this.state.startLoc, t = (i = t) != null ? i : this.state.start, s = (a = s) != null ? a : this.parseBindingAtom(), !this.eat(29)) + return s; + let n = this.startNodeAt(t, e); + return n.left = s, n.right = this.parseMaybeAssignAllowIn(), this.finishNode(n, "AssignmentPattern"); + } + isValidLVal(t, e, s) { + return Xh({ AssignmentPattern: "left", RestElement: "argument", ObjectProperty: "value", ParenthesizedExpression: "expression", ArrayPattern: "elements", ObjectPattern: "properties" }, t); + } + checkLVal(t, e) { + let { in: s, binding: r = we, checkClashes: i = false, strictModeChanged: a = false, allowingSloppyLetBinding: n = !(r & Te), hasParenthesizedAncestor: o = false } = e; + var c; + let f = t.type; + if (this.isObjectMethod(t)) + return; + if (f === "MemberExpression") { + r !== we && this.raise(u.InvalidPropertyBindingPattern, { at: t }); + return; + } + if (t.type === "Identifier") { + this.checkIdentifier(t, r, a, n); + let { name: B } = t; + i && (i.has(B) ? this.raise(u.ParamDupe, { at: t }) : i.add(B)); + return; + } + let y = this.isValidLVal(t.type, !(o || (c = t.extra) != null && c.parenthesized) && s.type === "AssignmentExpression", r); + if (y === true) + return; + if (y === false) { + let B = r === we ? u.InvalidLhs : u.InvalidLhsBinding; + this.raise(B, { at: t, ancestor: s.type === "UpdateExpression" ? { type: "UpdateExpression", prefix: s.prefix } : { type: s.type } }); + return; + } + let [P, v] = Array.isArray(y) ? y : [y, f === "ParenthesizedExpression"], N = t.type === "ArrayPattern" || t.type === "ObjectPattern" || t.type === "ParenthesizedExpression" ? t : s; + for (let B of [].concat(t[P])) + B && this.checkLVal(B, { in: N, binding: r, checkClashes: i, allowingSloppyLetBinding: n, strictModeChanged: a, hasParenthesizedAncestor: v }); + } + checkIdentifier(t, e) { + let s = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !(e & Te); + this.state.strict && (s ? mr(t.name, this.inModule) : dr(t.name)) && (e === we ? this.raise(u.StrictEvalArguments, { at: t, referenceName: t.name }) : this.raise(u.StrictEvalArgumentsBinding, { at: t, bindingName: t.name })), !r && t.name === "let" && this.raise(u.LetInLexicalBinding, { at: t }), e & we || this.declareNameFromIdentifier(t, e); + } + declareNameFromIdentifier(t, e) { + this.scope.declareName(t.name, e, t.loc.start); + } + checkToRestConversion(t, e) { + switch (t.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(t.expression, e); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (e) + break; + default: + this.raise(u.InvalidRestAssignmentPattern, { at: t }); + } + } + checkCommaAfterRest(t) { + return this.match(12) ? (this.raise(this.lookaheadCharCode() === t ? u.RestTrailingComma : u.ElementAfterRest, { at: this.state.startLoc }), true) : false; + } + }, Yh = class extends Jh { + checkProto(t, e, s, r) { + if (t.type === "SpreadElement" || this.isObjectMethod(t) || t.computed || t.shorthand) + return; + let i = t.key; + if ((i.type === "Identifier" ? i.name : i.value) === "__proto__") { + if (e) { + this.raise(u.RecordNoProto, { at: i }); + return; + } + s.used && (r ? r.doubleProtoLoc === null && (r.doubleProtoLoc = i.loc.start) : this.raise(u.DuplicateProto, { at: i })), s.used = true; + } + } + shouldExitDescending(t, e) { + return t.type === "ArrowFunctionExpression" && t.start === e; + } + getExpression() { + this.enterInitialScopes(), this.nextToken(); + let t = this.parseExpression(); + return this.match(135) || this.unexpected(), this.finalizeRemainingComments(), t.comments = this.state.comments, t.errors = this.state.errors, this.options.tokens && (t.tokens = this.tokens), t; + } + parseExpression(t, e) { + return t ? this.disallowInAnd(() => this.parseExpressionBase(e)) : this.allowInAnd(() => this.parseExpressionBase(e)); + } + parseExpressionBase(t) { + let e = this.state.start, s = this.state.startLoc, r = this.parseMaybeAssign(t); + if (this.match(12)) { + let i = this.startNodeAt(e, s); + for (i.expressions = [r]; this.eat(12); ) + i.expressions.push(this.parseMaybeAssign(t)); + return this.toReferencedList(i.expressions), this.finishNode(i, "SequenceExpression"); + } + return r; + } + parseMaybeAssignDisallowIn(t, e) { + return this.disallowInAnd(() => this.parseMaybeAssign(t, e)); + } + parseMaybeAssignAllowIn(t, e) { + return this.allowInAnd(() => this.parseMaybeAssign(t, e)); + } + setOptionalParametersError(t, e) { + var s; + t.optionalParametersLoc = (s = e == null ? void 0 : e.loc) != null ? s : this.state.startLoc; + } + parseMaybeAssign(t, e) { + let s = this.state.start, r = this.state.startLoc; + if (this.isContextual(105) && this.prodParam.hasYield) { + let o = this.parseYield(); + return e && (o = e.call(this, o, s, r)), o; + } + let i; + t ? i = false : (t = new At(), i = true); + let { type: a } = this.state; + (a === 10 || K(a)) && (this.state.potentialArrowAt = this.state.start); + let n = this.parseMaybeConditional(t); + if (e && (n = e.call(this, n, s, r)), wo(this.state.type)) { + let o = this.startNodeAt(s, r), c = this.state.value; + return o.operator = c, this.match(29) ? (this.toAssignable(n, true), o.left = n, t.doubleProtoLoc != null && t.doubleProtoLoc.index >= s && (t.doubleProtoLoc = null), t.shorthandAssignLoc != null && t.shorthandAssignLoc.index >= s && (t.shorthandAssignLoc = null), t.privateKeyLoc != null && t.privateKeyLoc.index >= s && (this.checkDestructuringPrivate(t), t.privateKeyLoc = null)) : o.left = n, this.next(), o.right = this.parseMaybeAssign(), this.checkLVal(n, { in: this.finishNode(o, "AssignmentExpression") }), o; + } else + i && this.checkExpressionErrors(t, true); + return n; + } + parseMaybeConditional(t) { + let e = this.state.start, s = this.state.startLoc, r = this.state.potentialArrowAt, i = this.parseExprOps(t); + return this.shouldExitDescending(i, r) ? i : this.parseConditional(i, e, s, t); + } + parseConditional(t, e, s, r) { + if (this.eat(17)) { + let i = this.startNodeAt(e, s); + return i.test = t, i.consequent = this.parseMaybeAssignAllowIn(), this.expect(14), i.alternate = this.parseMaybeAssign(), this.finishNode(i, "ConditionalExpression"); + } + return t; + } + parseMaybeUnaryOrPrivate(t) { + return this.match(134) ? this.parsePrivateName() : this.parseMaybeUnary(t); + } + parseExprOps(t) { + let e = this.state.start, s = this.state.startLoc, r = this.state.potentialArrowAt, i = this.parseMaybeUnaryOrPrivate(t); + return this.shouldExitDescending(i, r) ? i : this.parseExprOp(i, e, s, -1); + } + parseExprOp(t, e, s, r) { + if (this.isPrivateName(t)) { + let a = this.getPrivateNameSV(t); + (r >= at(58) || !this.prodParam.hasIn || !this.match(58)) && this.raise(u.PrivateInExpectedIn, { at: t, identifierName: a }), this.classScope.usePrivateName(a, t.loc.start); + } + let i = this.state.type; + if (Io(i) && (this.prodParam.hasIn || !this.match(58))) { + let a = at(i); + if (a > r) { + if (i === 39) { + if (this.expectPlugin("pipelineOperator"), this.state.inFSharpPipelineDirectBody) + return t; + this.checkPipelineAtInfixOperator(t, s); + } + let n = this.startNodeAt(e, s); + n.left = t, n.operator = this.state.value; + let o = i === 41 || i === 42, c = i === 40; + if (c && (a = at(42)), this.next(), i === 39 && this.hasPlugin(["pipelineOperator", { proposal: "minimal" }]) && this.state.type === 96 && this.prodParam.hasAwait) + throw this.raise(u.UnexpectedAwaitAfterPipelineBody, { at: this.state.startLoc }); + n.right = this.parseExprOpRightExpr(i, a), this.finishNode(n, o || c ? "LogicalExpression" : "BinaryExpression"); + let f = this.state.type; + if (c && (f === 41 || f === 42) || o && f === 40) + throw this.raise(u.MixingCoalesceWithLogical, { at: this.state.startLoc }); + return this.parseExprOp(n, e, s, r); + } + } + return t; + } + parseExprOpRightExpr(t, e) { + let s = this.state.start, r = this.state.startLoc; + switch (t) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => this.parseHackPipeBody()); + case "smart": + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(105)) + throw this.raise(u.PipeBodyIsTighter, { at: this.state.startLoc }); + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(t, e), s, r); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => this.parseFSharpPipelineBody(e)); + } + default: + return this.parseExprOpBaseRightExpr(t, e); + } + } + parseExprOpBaseRightExpr(t, e) { + let s = this.state.start, r = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), s, r, Bo(t) ? e - 1 : e); + } + parseHackPipeBody() { + var t; + let { startLoc: e } = this.state, s = this.parseMaybeAssign(); + return R.has(s.type) && !((t = s.extra) != null && t.parenthesized) && this.raise(u.PipeUnparenthesizedBody, { at: e, type: s.type }), this.topicReferenceWasUsedInCurrentContext() || this.raise(u.PipeTopicUnused, { at: e }), s; + } + checkExponentialAfterUnary(t) { + this.match(57) && this.raise(u.UnexpectedTokenUnaryExponentiation, { at: t.argument }); + } + parseMaybeUnary(t, e) { + let s = this.state.start, r = this.state.startLoc, i = this.isContextual(96); + if (i && this.isAwaitAllowed()) { + this.next(); + let c = this.parseAwait(s, r); + return e || this.checkExponentialAfterUnary(c), c; + } + let a = this.match(34), n = this.startNode(); + if (Do(this.state.type)) { + n.operator = this.state.value, n.prefix = true, this.match(72) && this.expectPlugin("throwExpressions"); + let c = this.match(89); + if (this.next(), n.argument = this.parseMaybeUnary(null, true), this.checkExpressionErrors(t, true), this.state.strict && c) { + let f = n.argument; + f.type === "Identifier" ? this.raise(u.StrictDelete, { at: n }) : this.hasPropertyAsPrivateName(f) && this.raise(u.DeletePrivateField, { at: n }); + } + if (!a) + return e || this.checkExponentialAfterUnary(n), this.finishNode(n, "UnaryExpression"); + } + let o = this.parseUpdate(n, a, t); + if (i) { + let { type: c } = this.state; + if ((this.hasPlugin("v8intrinsic") ? Vt(c) : Vt(c) && !this.match(54)) && !this.isAmbiguousAwait()) + return this.raiseOverwrite(u.AwaitNotInAsyncContext, { at: r }), this.parseAwait(s, r); + } + return o; + } + parseUpdate(t, e, s) { + if (e) + return this.checkLVal(t.argument, { in: this.finishNode(t, "UpdateExpression") }), t; + let r = this.state.start, i = this.state.startLoc, a = this.parseExprSubscripts(s); + if (this.checkExpressionErrors(s, false)) + return a; + for (; ko(this.state.type) && !this.canInsertSemicolon(); ) { + let n = this.startNodeAt(r, i); + n.operator = this.state.value, n.prefix = false, n.argument = a, this.next(), this.checkLVal(a, { in: a = this.finishNode(n, "UpdateExpression") }); + } + return a; + } + parseExprSubscripts(t) { + let e = this.state.start, s = this.state.startLoc, r = this.state.potentialArrowAt, i = this.parseExprAtom(t); + return this.shouldExitDescending(i, r) ? i : this.parseSubscripts(i, e, s); + } + parseSubscripts(t, e, s, r) { + let i = { optionalChainMember: false, maybeAsyncArrow: this.atPossibleAsyncArrow(t), stop: false }; + do + t = this.parseSubscript(t, e, s, r, i), i.maybeAsyncArrow = false; + while (!i.stop); + return t; + } + parseSubscript(t, e, s, r, i) { + let { type: a } = this.state; + if (!r && a === 15) + return this.parseBind(t, e, s, r, i); + if (nt(a)) + return this.parseTaggedTemplateExpression(t, e, s, i); + let n = false; + if (a === 18) { + if (r && this.lookaheadCharCode() === 40) + return i.stop = true, t; + i.optionalChainMember = n = true, this.next(); + } + if (!r && this.match(10)) + return this.parseCoverCallAndAsyncArrowHead(t, e, s, i, n); + { + let o = this.eat(0); + return o || n || this.eat(16) ? this.parseMember(t, e, s, i, o, n) : (i.stop = true, t); + } + } + parseMember(t, e, s, r, i, a) { + let n = this.startNodeAt(e, s); + return n.object = t, n.computed = i, i ? (n.property = this.parseExpression(), this.expect(3)) : this.match(134) ? (t.type === "Super" && this.raise(u.SuperPrivateField, { at: s }), this.classScope.usePrivateName(this.state.value, this.state.startLoc), n.property = this.parsePrivateName()) : n.property = this.parseIdentifier(true), r.optionalChainMember ? (n.optional = a, this.finishNode(n, "OptionalMemberExpression")) : this.finishNode(n, "MemberExpression"); + } + parseBind(t, e, s, r, i) { + let a = this.startNodeAt(e, s); + return a.object = t, this.next(), a.callee = this.parseNoCallExpr(), i.stop = true, this.parseSubscripts(this.finishNode(a, "BindExpression"), e, s, r); + } + parseCoverCallAndAsyncArrowHead(t, e, s, r, i) { + let a = this.state.maybeInArrowParameters, n = null; + this.state.maybeInArrowParameters = true, this.next(); + let o = this.startNodeAt(e, s); + o.callee = t; + let { maybeAsyncArrow: c, optionalChainMember: f } = r; + return c && (this.expressionScope.enter(Ph()), n = new At()), f && (o.optional = i), i ? o.arguments = this.parseCallExpressionArguments(11) : o.arguments = this.parseCallExpressionArguments(11, t.type === "Import", t.type !== "Super", o, n), this.finishCallExpression(o, f), c && this.shouldParseAsyncArrow() && !i ? (r.stop = true, this.checkDestructuringPrivate(n), this.expressionScope.validateAsPattern(), this.expressionScope.exit(), o = this.parseAsyncArrowFromCallExpression(this.startNodeAt(e, s), o)) : (c && (this.checkExpressionErrors(n, true), this.expressionScope.exit()), this.toReferencedArguments(o)), this.state.maybeInArrowParameters = a, o; + } + toReferencedArguments(t, e) { + this.toReferencedListDeep(t.arguments, e); + } + parseTaggedTemplateExpression(t, e, s, r) { + let i = this.startNodeAt(e, s); + return i.tag = t, i.quasi = this.parseTemplate(true), r.optionalChainMember && this.raise(u.OptionalChainingNoTemplate, { at: s }), this.finishNode(i, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(t) { + return t.type === "Identifier" && t.name === "async" && this.state.lastTokEndLoc.index === t.end && !this.canInsertSemicolon() && t.end - t.start === 5 && t.start === this.state.potentialArrowAt; + } + finishCallExpression(t, e) { + if (t.callee.type === "Import") + if (t.arguments.length === 2 && (this.hasPlugin("moduleAttributes") || this.expectPlugin("importAssertions")), t.arguments.length === 0 || t.arguments.length > 2) + this.raise(u.ImportCallArity, { at: t, maxArgumentCount: this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1 }); + else + for (let s of t.arguments) + s.type === "SpreadElement" && this.raise(u.ImportCallSpreadArgument, { at: s }); + return this.finishNode(t, e ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(t, e, s, r, i) { + let a = [], n = true, o = this.state.inFSharpPipelineDirectBody; + for (this.state.inFSharpPipelineDirectBody = false; !this.eat(t); ) { + if (n) + n = false; + else if (this.expect(12), this.match(t)) { + e && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes") && this.raise(u.ImportCallArgumentTrailingComma, { at: this.state.lastTokStartLoc }), r && this.addTrailingCommaExtraToNode(r), this.next(); + break; + } + a.push(this.parseExprListItem(false, i, s)); + } + return this.state.inFSharpPipelineDirectBody = o, a; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(t, e) { + var s; + return this.resetPreviousNodeTrailingComments(e), this.expect(19), this.parseArrowExpression(t, e.arguments, true, (s = e.extra) == null ? void 0 : s.trailingCommaLoc), e.innerComments && Ge(t, e.innerComments), e.callee.trailingComments && Ge(t, e.callee.trailingComments), t; + } + parseNoCallExpr() { + let t = this.state.start, e = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), t, e, true); + } + parseExprAtom(t) { + let e, { type: s } = this.state; + switch (s) { + case 79: + return this.parseSuper(); + case 83: + return e = this.startNode(), this.next(), this.match(16) ? this.parseImportMetaProperty(e) : (this.match(10) || this.raise(u.UnsupportedImport, { at: this.state.lastTokStartLoc }), this.finishNode(e, "Import")); + case 78: + return e = this.startNode(), this.next(), this.finishNode(e, "ThisExpression"); + case 90: + return this.parseDo(this.startNode(), false); + case 56: + case 31: + return this.readRegexp(), this.parseRegExpLiteral(this.state.value); + case 130: + return this.parseNumericLiteral(this.state.value); + case 131: + return this.parseBigIntLiteral(this.state.value); + case 132: + return this.parseDecimalLiteral(this.state.value); + case 129: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: { + let r = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(r); + } + case 2: + case 1: + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true); + case 0: + return this.parseArrayLike(3, true, false, t); + case 6: + case 7: + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + case 5: + return this.parseObjectLike(8, false, false, t); + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + this.parseDecorators(); + case 80: + return e = this.startNode(), this.takeDecorators(e), this.parseClass(e, false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: { + e = this.startNode(), this.next(), e.object = null; + let r = e.callee = this.parseNoCallExpr(); + if (r.type === "MemberExpression") + return this.finishNode(e, "BindExpression"); + throw this.raise(u.UnsupportedBind, { at: r }); + } + case 134: + return this.raise(u.PrivateInExpectedIn, { at: this.state.startLoc, identifierName: this.state.value }), this.parsePrivateName(); + case 33: + return this.parseTopicReferenceThenEqualsSign(54, "%"); + case 32: + return this.parseTopicReferenceThenEqualsSign(44, "^"); + case 37: + case 38: + return this.parseTopicReference("hack"); + case 44: + case 54: + case 27: { + let r = this.getPluginOption("pipelineOperator", "proposal"); + if (r) + return this.parseTopicReference(r); + throw this.unexpected(); + } + case 47: { + let r = this.input.codePointAt(this.nextTokenStart()); + if (de(r) || r === 62) { + this.expectOnePlugin(["jsx", "flow", "typescript"]); + break; + } else + throw this.unexpected(); + } + default: + if (K(s)) { + if (this.isContextual(123) && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) + return this.parseModuleExpression(); + let r = this.state.potentialArrowAt === this.state.start, i = this.state.containsEsc, a = this.parseIdentifier(); + if (!i && a.name === "async" && !this.canInsertSemicolon()) { + let { type: n } = this.state; + if (n === 68) + return this.resetPreviousNodeTrailingComments(a), this.next(), this.parseFunction(this.startNodeAtNode(a), void 0, true); + if (K(n)) + return this.lookaheadCharCode() === 61 ? this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(a)) : a; + if (n === 90) + return this.resetPreviousNodeTrailingComments(a), this.parseDo(this.startNodeAtNode(a), true); + } + return r && this.match(19) && !this.canInsertSemicolon() ? (this.next(), this.parseArrowExpression(this.startNodeAtNode(a), [a], false)) : a; + } else + throw this.unexpected(); + } + } + parseTopicReferenceThenEqualsSign(t, e) { + let s = this.getPluginOption("pipelineOperator", "proposal"); + if (s) + return this.state.type = t, this.state.value = e, this.state.pos--, this.state.end--, this.state.endLoc = m(this.state.endLoc, -1), this.parseTopicReference(s); + throw this.unexpected(); + } + parseTopicReference(t) { + let e = this.startNode(), s = this.state.startLoc, r = this.state.type; + return this.next(), this.finishTopicReference(e, s, t, r); + } + finishTopicReference(t, e, s, r) { + if (this.testTopicReferenceConfiguration(s, e, r)) { + let i = s === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference"; + return this.topicReferenceIsAllowedInCurrentContext() || this.raise(s === "smart" ? u.PrimaryTopicNotAllowed : u.PipeTopicUnbound, { at: e }), this.registerTopicReference(), this.finishNode(t, i); + } else + throw this.raise(u.PipeTopicUnconfiguredToken, { at: e, token: Pe(r) }); + } + testTopicReferenceConfiguration(t, e, s) { + switch (t) { + case "hack": + return this.hasPlugin(["pipelineOperator", { topicToken: Pe(s) }]); + case "smart": + return s === 27; + default: + throw this.raise(u.PipeTopicRequiresHackPipes, { at: e }); + } + } + parseAsyncArrowUnaryFunction(t) { + this.prodParam.enter(gt(true, this.prodParam.hasYield)); + let e = [this.parseIdentifier()]; + return this.prodParam.exit(), this.hasPrecedingLineBreak() && this.raise(u.LineTerminatorBeforeArrow, { at: this.state.curPosition() }), this.expect(19), this.parseArrowExpression(t, e, true), t; + } + parseDo(t, e) { + this.expectPlugin("doExpressions"), e && this.expectPlugin("asyncDoExpressions"), t.async = e, this.next(); + let s = this.state.labels; + return this.state.labels = [], e ? (this.prodParam.enter(xt), t.body = this.parseBlock(), this.prodParam.exit()) : t.body = this.parseBlock(), this.state.labels = s, this.finishNode(t, "DoExpression"); + } + parseSuper() { + let t = this.startNode(); + return this.next(), this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod ? this.raise(u.SuperNotAllowed, { at: t }) : !this.scope.allowSuper && !this.options.allowSuperOutsideMethod && this.raise(u.UnexpectedSuper, { at: t }), !this.match(10) && !this.match(0) && !this.match(16) && this.raise(u.UnsupportedSuper, { at: t }), this.finishNode(t, "Super"); + } + parsePrivateName() { + let t = this.startNode(), e = this.startNodeAt(this.state.start + 1, new p(this.state.curLine, this.state.start + 1 - this.state.lineStart, this.state.start + 1)), s = this.state.value; + return this.next(), t.id = this.createIdentifier(e, s), this.finishNode(t, "PrivateName"); + } + parseFunctionOrFunctionSent() { + let t = this.startNode(); + if (this.next(), this.prodParam.hasYield && this.match(16)) { + let e = this.createIdentifier(this.startNodeAtNode(t), "function"); + return this.next(), this.match(102) ? this.expectPlugin("functionSent") : this.hasPlugin("functionSent") || this.unexpected(), this.parseMetaProperty(t, e, "sent"); + } + return this.parseFunction(t); + } + parseMetaProperty(t, e, s) { + t.meta = e; + let r = this.state.containsEsc; + return t.property = this.parseIdentifier(true), (t.property.name !== s || r) && this.raise(u.UnsupportedMetaProperty, { at: t.property, target: e.name, onlyValidPropertyName: s }), this.finishNode(t, "MetaProperty"); + } + parseImportMetaProperty(t) { + let e = this.createIdentifier(this.startNodeAtNode(t), "import"); + return this.next(), this.isContextual(100) && (this.inModule || this.raise(u.ImportMetaOutsideModule, { at: e }), this.sawUnambiguousESM = true), this.parseMetaProperty(t, e, "meta"); + } + parseLiteralAtNode(t, e, s) { + return this.addExtra(s, "rawValue", t), this.addExtra(s, "raw", this.input.slice(s.start, this.state.end)), s.value = t, this.next(), this.finishNode(s, e); + } + parseLiteral(t, e) { + let s = this.startNode(); + return this.parseLiteralAtNode(t, e, s); + } + parseStringLiteral(t) { + return this.parseLiteral(t, "StringLiteral"); + } + parseNumericLiteral(t) { + return this.parseLiteral(t, "NumericLiteral"); + } + parseBigIntLiteral(t) { + return this.parseLiteral(t, "BigIntLiteral"); + } + parseDecimalLiteral(t) { + return this.parseLiteral(t, "DecimalLiteral"); + } + parseRegExpLiteral(t) { + let e = this.parseLiteral(t.value, "RegExpLiteral"); + return e.pattern = t.pattern, e.flags = t.flags, e; + } + parseBooleanLiteral(t) { + let e = this.startNode(); + return e.value = t, this.next(), this.finishNode(e, "BooleanLiteral"); + } + parseNullLiteral() { + let t = this.startNode(); + return this.next(), this.finishNode(t, "NullLiteral"); + } + parseParenAndDistinguishExpression(t) { + let e = this.state.start, s = this.state.startLoc, r; + this.next(), this.expressionScope.enter(Ah()); + let i = this.state.maybeInArrowParameters, a = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true, this.state.inFSharpPipelineDirectBody = false; + let n = this.state.start, o = this.state.startLoc, c = [], f = new At(), y = true, P, v; + for (; !this.match(11); ) { + if (y) + y = false; + else if (this.expect(12, f.optionalParametersLoc === null ? null : f.optionalParametersLoc), this.match(11)) { + v = this.state.startLoc; + break; + } + if (this.match(21)) { + let _ = this.state.start, Q = this.state.startLoc; + if (P = this.state.startLoc, c.push(this.parseParenItem(this.parseRestBinding(), _, Q)), !this.checkCommaAfterRest(41)) + break; + } else + c.push(this.parseMaybeAssignAllowIn(f, this.parseParenItem)); + } + let N = this.state.lastTokEndLoc; + this.expect(11), this.state.maybeInArrowParameters = i, this.state.inFSharpPipelineDirectBody = a; + let B = this.startNodeAt(e, s); + return t && this.shouldParseArrow(c) && (B = this.parseArrow(B)) ? (this.checkDestructuringPrivate(f), this.expressionScope.validateAsPattern(), this.expressionScope.exit(), this.parseArrowExpression(B, c, false), B) : (this.expressionScope.exit(), c.length || this.unexpected(this.state.lastTokStartLoc), v && this.unexpected(v), P && this.unexpected(P), this.checkExpressionErrors(f, true), this.toReferencedListDeep(c, true), c.length > 1 ? (r = this.startNodeAt(n, o), r.expressions = c, this.finishNode(r, "SequenceExpression"), this.resetEndLocation(r, N)) : r = c[0], this.wrapParenthesis(e, s, r)); + } + wrapParenthesis(t, e, s) { + if (!this.options.createParenthesizedExpressions) + return this.addExtra(s, "parenthesized", true), this.addExtra(s, "parenStart", t), this.takeSurroundingComments(s, t, this.state.lastTokEndLoc.index), s; + let r = this.startNodeAt(t, e); + return r.expression = s, this.finishNode(r, "ParenthesizedExpression"), r; + } + shouldParseArrow(t) { + return !this.canInsertSemicolon(); + } + parseArrow(t) { + if (this.eat(19)) + return t; + } + parseParenItem(t, e, s) { + return t; + } + parseNewOrNewTarget() { + let t = this.startNode(); + if (this.next(), this.match(16)) { + let e = this.createIdentifier(this.startNodeAtNode(t), "new"); + this.next(); + let s = this.parseMetaProperty(t, e, "target"); + return !this.scope.inNonArrowFunction && !this.scope.inClass && this.raise(u.UnexpectedNewTarget, { at: s }), s; + } + return this.parseNew(t); + } + parseNew(t) { + if (this.parseNewCallee(t), this.eat(10)) { + let e = this.parseExprList(11); + this.toReferencedList(e), t.arguments = e; + } else + t.arguments = []; + return this.finishNode(t, "NewExpression"); + } + parseNewCallee(t) { + t.callee = this.parseNoCallExpr(), t.callee.type === "Import" ? this.raise(u.ImportCallNotNewExpression, { at: t.callee }) : this.isOptionalChain(t.callee) ? this.raise(u.OptionalChainingNoNew, { at: this.state.lastTokEndLoc }) : this.eat(18) && this.raise(u.OptionalChainingNoNew, { at: this.state.startLoc }); + } + parseTemplateElement(t) { + let { start: e, startLoc: s, end: r, value: i } = this.state, a = e + 1, n = this.startNodeAt(a, m(s, 1)); + i === null && (t || this.raise(u.InvalidEscapeSequenceTemplate, { at: m(s, 2) })); + let o = this.match(24), c = o ? -1 : -2, f = r + c; + return n.value = { raw: this.input.slice(a, f).replace(/\r\n?/g, ` +`), cooked: i === null ? null : i.slice(1, c) }, n.tail = o, this.next(), this.finishNode(n, "TemplateElement"), this.resetEndLocation(n, m(this.state.lastTokEndLoc, c)), n; + } + parseTemplate(t) { + let e = this.startNode(); + e.expressions = []; + let s = this.parseTemplateElement(t); + for (e.quasis = [s]; !s.tail; ) + e.expressions.push(this.parseTemplateSubstitution()), this.readTemplateContinuation(), e.quasis.push(s = this.parseTemplateElement(t)); + return this.finishNode(e, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(t, e, s, r) { + s && this.expectPlugin("recordAndTuple"); + let i = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + let a = /* @__PURE__ */ Object.create(null), n = true, o = this.startNode(); + for (o.properties = [], this.next(); !this.match(t); ) { + if (n) + n = false; + else if (this.expect(12), this.match(t)) { + this.addTrailingCommaExtraToNode(o); + break; + } + let f; + e ? f = this.parseBindingProperty() : (f = this.parsePropertyDefinition(r), this.checkProto(f, s, a, r)), s && !this.isObjectProperty(f) && f.type !== "SpreadElement" && this.raise(u.InvalidRecordProperty, { at: f }), f.shorthand && this.addExtra(f, "shorthand", true), o.properties.push(f); + } + this.next(), this.state.inFSharpPipelineDirectBody = i; + let c = "ObjectExpression"; + return e ? c = "ObjectPattern" : s && (c = "RecordExpression"), this.finishNode(o, c); + } + addTrailingCommaExtraToNode(t) { + this.addExtra(t, "trailingComma", this.state.lastTokStart), this.addExtra(t, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(t) { + return !t.computed && t.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(t) { + let e = []; + if (this.match(26)) + for (this.hasPlugin("decorators") && this.raise(u.UnsupportedPropertyDecorator, { at: this.state.startLoc }); this.match(26); ) + e.push(this.parseDecorator()); + let s = this.startNode(), r = false, i = false, a, n; + if (this.match(21)) + return e.length && this.unexpected(), this.parseSpread(); + e.length && (s.decorators = e, e = []), s.method = false, t && (a = this.state.start, n = this.state.startLoc); + let o = this.eat(55); + this.parsePropertyNamePrefixOperator(s); + let c = this.state.containsEsc, f = this.parsePropertyName(s, t); + if (!o && !c && this.maybeAsyncOrAccessorProp(s)) { + let y = f.name; + y === "async" && !this.hasPrecedingLineBreak() && (r = true, this.resetPreviousNodeTrailingComments(f), o = this.eat(55), this.parsePropertyName(s)), (y === "get" || y === "set") && (i = true, this.resetPreviousNodeTrailingComments(f), s.kind = y, this.match(55) && (o = true, this.raise(u.AccessorIsGenerator, { at: this.state.curPosition(), kind: y }), this.next()), this.parsePropertyName(s)); + } + return this.parseObjPropValue(s, a, n, o, r, false, i, t), s; + } + getGetterSetterExpectedParamCount(t) { + return t.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(t) { + return t.params; + } + checkGetterSetterParams(t) { + var e; + let s = this.getGetterSetterExpectedParamCount(t), r = this.getObjectOrClassMethodParams(t); + r.length !== s && this.raise(t.kind === "get" ? u.BadGetterArity : u.BadSetterArity, { at: t }), t.kind === "set" && ((e = r[r.length - 1]) == null ? void 0 : e.type) === "RestElement" && this.raise(u.BadSetterRestParameter, { at: t }); + } + parseObjectMethod(t, e, s, r, i) { + if (i) + return this.parseMethod(t, e, false, false, false, "ObjectMethod"), this.checkGetterSetterParams(t), t; + if (s || e || this.match(10)) + return r && this.unexpected(), t.kind = "method", t.method = true, this.parseMethod(t, e, s, false, false, "ObjectMethod"); + } + parseObjectProperty(t, e, s, r, i) { + if (t.shorthand = false, this.eat(14)) + return t.value = r ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(i), this.finishNode(t, "ObjectProperty"); + if (!t.computed && t.key.type === "Identifier") { + if (this.checkReservedWord(t.key.name, t.key.loc.start, true, false), r) + t.value = this.parseMaybeDefault(e, s, ge(t.key)); + else if (this.match(29)) { + let a = this.state.startLoc; + i != null ? i.shorthandAssignLoc === null && (i.shorthandAssignLoc = a) : this.raise(u.InvalidCoverInitializedName, { at: a }), t.value = this.parseMaybeDefault(e, s, ge(t.key)); + } else + t.value = ge(t.key); + return t.shorthand = true, this.finishNode(t, "ObjectProperty"); + } + } + parseObjPropValue(t, e, s, r, i, a, n, o) { + let c = this.parseObjectMethod(t, r, i, a, n) || this.parseObjectProperty(t, e, s, a, o); + return c || this.unexpected(), c; + } + parsePropertyName(t, e) { + if (this.eat(0)) + t.computed = true, t.key = this.parseMaybeAssignAllowIn(), this.expect(3); + else { + let { type: s, value: r } = this.state, i; + if (pe(s)) + i = this.parseIdentifier(true); + else + switch (s) { + case 130: + i = this.parseNumericLiteral(r); + break; + case 129: + i = this.parseStringLiteral(r); + break; + case 131: + i = this.parseBigIntLiteral(r); + break; + case 132: + i = this.parseDecimalLiteral(r); + break; + case 134: { + let a = this.state.startLoc; + e != null ? e.privateKeyLoc === null && (e.privateKeyLoc = a) : this.raise(u.UnexpectedPrivateField, { at: a }), i = this.parsePrivateName(); + break; + } + default: + throw this.unexpected(); + } + t.key = i, s !== 134 && (t.computed = false); + } + return t.key; + } + initFunction(t, e) { + t.id = null, t.generator = false, t.async = !!e; + } + parseMethod(t, e, s, r, i, a) { + let n = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : false; + this.initFunction(t, s), t.generator = !!e; + let o = r; + return this.scope.enter(me | ot | (n ? Se : 0) | (i ? xr : 0)), this.prodParam.enter(gt(s, t.generator)), this.parseFunctionParams(t, o), this.parseFunctionBodyAndFinish(t, a, true), this.prodParam.exit(), this.scope.exit(), t; + } + parseArrayLike(t, e, s, r) { + s && this.expectPlugin("recordAndTuple"); + let i = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + let a = this.startNode(); + return this.next(), a.elements = this.parseExprList(t, !s, r, a), this.state.inFSharpPipelineDirectBody = i, this.finishNode(a, s ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(t, e, s, r) { + this.scope.enter(me | Jt); + let i = gt(s, false); + !this.match(5) && this.prodParam.hasIn && (i |= qe), this.prodParam.enter(i), this.initFunction(t, s); + let a = this.state.maybeInArrowParameters; + return e && (this.state.maybeInArrowParameters = true, this.setArrowFunctionParameters(t, e, r)), this.state.maybeInArrowParameters = false, this.parseFunctionBody(t, true), this.prodParam.exit(), this.scope.exit(), this.state.maybeInArrowParameters = a, this.finishNode(t, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(t, e, s) { + this.toAssignableList(e, s, false), t.params = e; + } + parseFunctionBodyAndFinish(t, e) { + let s = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + this.parseFunctionBody(t, false, s), this.finishNode(t, e); + } + parseFunctionBody(t, e) { + let s = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, r = e && !this.match(5); + if (this.expressionScope.enter(Dr()), r) + t.body = this.parseMaybeAssign(), this.checkParams(t, false, e, false); + else { + let i = this.state.strict, a = this.state.labels; + this.state.labels = [], this.prodParam.enter(this.prodParam.currentFlags() | Lr), t.body = this.parseBlock(true, false, (n) => { + let o = !this.isSimpleParamList(t.params); + n && o && this.raise(u.IllegalLanguageModeDirective, { at: (t.kind === "method" || t.kind === "constructor") && !!t.key ? t.key.loc.end : t }); + let c = !i && this.state.strict; + this.checkParams(t, !this.state.strict && !e && !s && !o, e, c), this.state.strict && t.id && this.checkIdentifier(t.id, Xo, c); + }), this.prodParam.exit(), this.state.labels = a; + } + this.expressionScope.exit(); + } + isSimpleParameter(t) { + return t.type === "Identifier"; + } + isSimpleParamList(t) { + for (let e = 0, s = t.length; e < s; e++) + if (!this.isSimpleParameter(t[e])) + return false; + return true; + } + checkParams(t, e, s) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true, i = !e && /* @__PURE__ */ new Set(), a = { type: "FormalParameters" }; + for (let n of t.params) + this.checkLVal(n, { in: a, binding: pt, checkClashes: i, strictModeChanged: r }); + } + parseExprList(t, e, s, r) { + let i = [], a = true; + for (; !this.eat(t); ) { + if (a) + a = false; + else if (this.expect(12), this.match(t)) { + r && this.addTrailingCommaExtraToNode(r), this.next(); + break; + } + i.push(this.parseExprListItem(e, s)); + } + return i; + } + parseExprListItem(t, e, s) { + let r; + if (this.match(12)) + t || this.raise(u.UnexpectedToken, { at: this.state.curPosition(), unexpected: "," }), r = null; + else if (this.match(21)) { + let i = this.state.start, a = this.state.startLoc; + r = this.parseParenItem(this.parseSpread(e), i, a); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"), s || this.raise(u.UnexpectedArgumentPlaceholder, { at: this.state.startLoc }); + let i = this.startNode(); + this.next(), r = this.finishNode(i, "ArgumentPlaceholder"); + } else + r = this.parseMaybeAssignAllowIn(e, this.parseParenItem); + return r; + } + parseIdentifier(t) { + let e = this.startNode(), s = this.parseIdentifierName(e.start, t); + return this.createIdentifier(e, s); + } + createIdentifier(t, e) { + return t.name = e, t.loc.identifierName = e, this.finishNode(t, "Identifier"); + } + parseIdentifierName(t, e) { + let s, { startLoc: r, type: i } = this.state; + if (pe(i)) + s = this.state.value; + else + throw this.unexpected(); + let a = vo(i); + return e ? a && this.replaceToken(128) : this.checkReservedWord(s, r, a, false), this.next(), s; + } + checkReservedWord(t, e, s, r) { + if (t.length > 10 || !Ho(t)) + return; + if (t === "yield") { + if (this.prodParam.hasYield) { + this.raise(u.YieldBindingIdentifier, { at: e }); + return; + } + } else if (t === "await") { + if (this.prodParam.hasAwait) { + this.raise(u.AwaitBindingIdentifier, { at: e }); + return; + } + if (this.scope.inStaticBlock) { + this.raise(u.AwaitBindingIdentifierInStaticBlock, { at: e }); + return; + } + this.expressionScope.recordAsyncArrowParametersError({ at: e }); + } else if (t === "arguments" && this.scope.inClassAndNotInNonArrowFunction) { + this.raise(u.ArgumentsInClass, { at: e }); + return; + } + if (s && zo(t)) { + this.raise(u.UnexpectedKeyword, { at: e, keyword: t }); + return; + } + (this.state.strict ? r ? mr : fr : pr)(t, this.inModule) && this.raise(u.UnexpectedReservedWord, { at: e, reservedWord: t }); + } + isAwaitAllowed() { + return !!(this.prodParam.hasAwait || this.options.allowAwaitOutsideFunction && !this.scope.inFunction); + } + parseAwait(t, e) { + let s = this.startNodeAt(t, e); + return this.expressionScope.recordParameterInitializerError(u.AwaitExpressionFormalParameter, { at: s }), this.eat(55) && this.raise(u.ObsoleteAwaitStar, { at: s }), !this.scope.inFunction && !this.options.allowAwaitOutsideFunction && (this.isAmbiguousAwait() ? this.ambiguousScriptDifferentAst = true : this.sawUnambiguousESM = true), this.state.soloAwait || (s.argument = this.parseMaybeUnary(null, true)), this.finishNode(s, "AwaitExpression"); + } + isAmbiguousAwait() { + if (this.hasPrecedingLineBreak()) + return true; + let { type: t } = this.state; + return t === 53 || t === 10 || t === 0 || nt(t) || t === 133 || t === 56 || this.hasPlugin("v8intrinsic") && t === 54; + } + parseYield() { + let t = this.startNode(); + this.expressionScope.recordParameterInitializerError(u.YieldInParameter, { at: t }), this.next(); + let e = false, s = null; + if (!this.hasPrecedingLineBreak()) + switch (e = this.eat(55), this.state.type) { + case 13: + case 135: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!e) + break; + default: + s = this.parseMaybeAssign(); + } + return t.delegate = e, t.argument = s, this.finishNode(t, "YieldExpression"); + } + checkPipelineAtInfixOperator(t, e) { + this.hasPlugin(["pipelineOperator", { proposal: "smart" }]) && t.type === "SequenceExpression" && this.raise(u.PipelineHeadSequenceExpression, { at: e }); + } + parseSmartPipelineBodyInStyle(t, e, s) { + let r = this.startNodeAt(e, s); + return this.isSimpleReference(t) ? (r.callee = t, this.finishNode(r, "PipelineBareFunction")) : (this.checkSmartPipeTopicBodyEarlyErrors(s), r.expression = t, this.finishNode(r, "PipelineTopicExpression")); + } + isSimpleReference(t) { + switch (t.type) { + case "MemberExpression": + return !t.computed && this.isSimpleReference(t.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(t) { + if (this.match(19)) + throw this.raise(u.PipelineBodyNoArrow, { at: this.state.startLoc }); + this.topicReferenceWasUsedInCurrentContext() || this.raise(u.PipelineTopicUnused, { at: t }); + } + withTopicBindingContext(t) { + let e = this.state.topicContext; + this.state.topicContext = { maxNumOfResolvableTopics: 1, maxTopicIndex: null }; + try { + return t(); + } finally { + this.state.topicContext = e; + } + } + withSmartMixTopicForbiddingContext(t) { + if (this.hasPlugin(["pipelineOperator", { proposal: "smart" }])) { + let e = this.state.topicContext; + this.state.topicContext = { maxNumOfResolvableTopics: 0, maxTopicIndex: null }; + try { + return t(); + } finally { + this.state.topicContext = e; + } + } else + return t(); + } + withSoloAwaitPermittingContext(t) { + let e = this.state.soloAwait; + this.state.soloAwait = true; + try { + return t(); + } finally { + this.state.soloAwait = e; + } + } + allowInAnd(t) { + let e = this.prodParam.currentFlags(); + if (qe & ~e) { + this.prodParam.enter(e | qe); + try { + return t(); + } finally { + this.prodParam.exit(); + } + } + return t(); + } + disallowInAnd(t) { + let e = this.prodParam.currentFlags(); + if (qe & e) { + this.prodParam.enter(e & ~qe); + try { + return t(); + } finally { + this.prodParam.exit(); + } + } + return t(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(t) { + let e = this.state.start, s = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + let r = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + let i = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), e, s, t); + return this.state.inFSharpPipelineDirectBody = r, i; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + let t = this.startNode(); + this.next(), this.eat(5); + let e = this.initializeScopes(true); + this.enterInitialScopes(); + let s = this.startNode(); + try { + t.body = this.parseProgram(s, 8, "module"); + } finally { + e(); + } + return this.eat(8), this.finishNode(t, "ModuleExpression"); + } + parsePropertyNamePrefixOperator(t) { + } + }, ps = { kind: "loop" }, $h = { kind: "switch" }, Qh = 0, fs5 = 1, Hr = 2, Wr = 4, Zh = /[\uD800-\uDFFF]/u, ds = /in(?:stanceof)?/y; + function el(t, e) { + for (let s = 0; s < t.length; s++) { + let r = t[s], { type: i } = r; + if (typeof i == "number") { + { + if (i === 134) { + let { loc: a, start: n, value: o, end: c } = r, f = n + 1, y = m(a.start, 1); + t.splice(s, 1, new Ee({ type: fe(27), value: "#", start: n, end: f, startLoc: a.start, endLoc: y }), new Ee({ type: fe(128), value: o, start: f, end: c, startLoc: y, endLoc: a.end })), s++; + continue; + } + if (nt(i)) { + let { loc: a, start: n, value: o, end: c } = r, f = n + 1, y = m(a.start, 1), P; + e.charCodeAt(n) === 96 ? P = new Ee({ type: fe(22), value: "`", start: n, end: f, startLoc: a.start, endLoc: y }) : P = new Ee({ type: fe(8), value: "}", start: n, end: f, startLoc: a.start, endLoc: y }); + let v, N, B, _; + i === 24 ? (N = c - 1, B = m(a.end, -1), v = o === null ? null : o.slice(1, -1), _ = new Ee({ type: fe(22), value: "`", start: N, end: c, startLoc: B, endLoc: a.end })) : (N = c - 2, B = m(a.end, -2), v = o === null ? null : o.slice(1, -2), _ = new Ee({ type: fe(23), value: "${", start: N, end: c, startLoc: B, endLoc: a.end })), t.splice(s, 1, P, new Ee({ type: fe(20), value: v, start: f, end: N, startLoc: y, endLoc: B }), _), s += 2; + continue; + } + } + r.type = fe(i); + } + } + return t; + } + var tl = class extends Yh { + parseTopLevel(t, e) { + return t.program = this.parseProgram(e), t.comments = this.state.comments, this.options.tokens && (t.tokens = el(this.tokens, this.input)), this.finishNode(t, "File"); + } + parseProgram(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 135, s = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.options.sourceType; + if (t.sourceType = s, t.interpreter = this.parseInterpreterDirective(), this.parseBlockBody(t, true, true, e), this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) + for (let [r, i] of Array.from(this.scope.undefinedExports)) + this.raise(u.ModuleExportUndefined, { at: i, localName: r }); + return this.finishNode(t, "Program"); + } + stmtToDirective(t) { + let e = t; + e.type = "Directive", e.value = e.expression, delete e.expression; + let s = e.value, r = s.value, i = this.input.slice(s.start, s.end), a = s.value = i.slice(1, -1); + return this.addExtra(s, "raw", i), this.addExtra(s, "rawValue", a), this.addExtra(s, "expressionValue", r), s.type = "DirectiveLiteral", e; + } + parseInterpreterDirective() { + if (!this.match(28)) + return null; + let t = this.startNode(); + return t.value = this.state.value, this.next(), this.finishNode(t, "InterpreterDirective"); + } + isLet(t) { + return this.isContextual(99) ? this.isLetKeyword(t) : false; + } + isLetKeyword(t) { + let e = this.nextTokenStart(), s = this.codePointAtPos(e); + if (s === 92 || s === 91) + return true; + if (t) + return false; + if (s === 123) + return true; + if (de(s)) { + if (ds.lastIndex = e, ds.test(this.input)) { + let r = this.codePointAtPos(ds.lastIndex); + if (!Be(r) && r !== 92) + return false; + } + return true; + } + return false; + } + parseStatement(t, e) { + return this.match(26) && this.parseDecorators(true), this.parseStatementContent(t, e); + } + parseStatementContent(t, e) { + let s = this.state.type, r = this.startNode(), i; + switch (this.isLet(t) && (s = 74, i = "let"), s) { + case 60: + return this.parseBreakContinueStatement(r, true); + case 63: + return this.parseBreakContinueStatement(r, false); + case 64: + return this.parseDebuggerStatement(r); + case 90: + return this.parseDoStatement(r); + case 91: + return this.parseForStatement(r); + case 68: + if (this.lookaheadCharCode() === 46) + break; + return t && (this.state.strict ? this.raise(u.StrictFunction, { at: this.state.startLoc }) : t !== "if" && t !== "label" && this.raise(u.SloppyFunction, { at: this.state.startLoc })), this.parseFunctionStatement(r, false, !t); + case 80: + return t && this.unexpected(), this.parseClass(r, true); + case 69: + return this.parseIfStatement(r); + case 70: + return this.parseReturnStatement(r); + case 71: + return this.parseSwitchStatement(r); + case 72: + return this.parseThrowStatement(r); + case 73: + return this.parseTryStatement(r); + case 75: + case 74: + return i = i || this.state.value, t && i !== "var" && this.raise(u.UnexpectedLexicalDeclaration, { at: this.state.startLoc }), this.parseVarStatement(r, i); + case 92: + return this.parseWhileStatement(r); + case 76: + return this.parseWithStatement(r); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(r); + case 83: { + let o = this.lookaheadCharCode(); + if (o === 40 || o === 46) + break; + } + case 82: { + !this.options.allowImportExportEverywhere && !e && this.raise(u.UnexpectedImportExport, { at: this.state.startLoc }), this.next(); + let o; + return s === 83 ? (o = this.parseImport(r), o.type === "ImportDeclaration" && (!o.importKind || o.importKind === "value") && (this.sawUnambiguousESM = true)) : (o = this.parseExport(r), (o.type === "ExportNamedDeclaration" && (!o.exportKind || o.exportKind === "value") || o.type === "ExportAllDeclaration" && (!o.exportKind || o.exportKind === "value") || o.type === "ExportDefaultDeclaration") && (this.sawUnambiguousESM = true)), this.assertModuleNodeAllowed(r), o; + } + default: + if (this.isAsyncFunction()) + return t && this.raise(u.AsyncFunctionInSingleStatementContext, { at: this.state.startLoc }), this.next(), this.parseFunctionStatement(r, true, !t); + } + let a = this.state.value, n = this.parseExpression(); + return K(s) && n.type === "Identifier" && this.eat(14) ? this.parseLabeledStatement(r, a, n, t) : this.parseExpressionStatement(r, n); + } + assertModuleNodeAllowed(t) { + !this.options.allowImportExportEverywhere && !this.inModule && this.raise(u.ImportOutsideModule, { at: t }); + } + takeDecorators(t) { + let e = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + e.length && (t.decorators = e, this.resetStartLocationFromNode(t, e[0]), this.state.decoratorStack[this.state.decoratorStack.length - 1] = []); + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(t) { + let e = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + for (; this.match(26); ) { + let s = this.parseDecorator(); + e.push(s); + } + if (this.match(82)) + t || this.unexpected(), this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport") && this.raise(u.DecoratorExportClass, { at: this.state.startLoc }); + else if (!this.canHaveLeadingDecorator()) + throw this.raise(u.UnexpectedLeadingDecorator, { at: this.state.startLoc }); + } + parseDecorator() { + this.expectOnePlugin(["decorators-legacy", "decorators"]); + let t = this.startNode(); + if (this.next(), this.hasPlugin("decorators")) { + this.state.decoratorStack.push([]); + let e = this.state.start, s = this.state.startLoc, r; + if (this.match(10)) { + let i = this.state.start, a = this.state.startLoc; + this.next(), r = this.parseExpression(), this.expect(11), r = this.wrapParenthesis(i, a, r); + } else + for (r = this.parseIdentifier(false); this.eat(16); ) { + let i = this.startNodeAt(e, s); + i.object = r, i.property = this.parseIdentifier(true), i.computed = false, r = this.finishNode(i, "MemberExpression"); + } + t.expression = this.parseMaybeDecoratorArguments(r), this.state.decoratorStack.pop(); + } else + t.expression = this.parseExprSubscripts(); + return this.finishNode(t, "Decorator"); + } + parseMaybeDecoratorArguments(t) { + if (this.eat(10)) { + let e = this.startNodeAtNode(t); + return e.callee = t, e.arguments = this.parseCallExpressionArguments(11, false), this.toReferencedList(e.arguments), this.finishNode(e, "CallExpression"); + } + return t; + } + parseBreakContinueStatement(t, e) { + return this.next(), this.isLineTerminator() ? t.label = null : (t.label = this.parseIdentifier(), this.semicolon()), this.verifyBreakContinue(t, e), this.finishNode(t, e ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(t, e) { + let s; + for (s = 0; s < this.state.labels.length; ++s) { + let r = this.state.labels[s]; + if ((t.label == null || r.name === t.label.name) && (r.kind != null && (e || r.kind === "loop") || t.label && e)) + break; + } + if (s === this.state.labels.length) { + let r = e ? "BreakStatement" : "ContinueStatement"; + this.raise(u.IllegalBreakContinue, { at: t, type: r }); + } + } + parseDebuggerStatement(t) { + return this.next(), this.semicolon(), this.finishNode(t, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + let t = this.parseExpression(); + return this.expect(11), t; + } + parseDoStatement(t) { + return this.next(), this.state.labels.push(ps), t.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("do")), this.state.labels.pop(), this.expect(92), t.test = this.parseHeaderExpression(), this.eat(13), this.finishNode(t, "DoWhileStatement"); + } + parseForStatement(t) { + this.next(), this.state.labels.push(ps); + let e = null; + if (this.isAwaitAllowed() && this.eatContextual(96) && (e = this.state.lastTokStartLoc), this.scope.enter(Me), this.expect(10), this.match(13)) + return e !== null && this.unexpected(e), this.parseFor(t, null); + let s = this.isContextual(99), r = s && this.isLetKeyword(); + if (this.match(74) || this.match(75) || r) { + let c = this.startNode(), f = r ? "let" : this.state.value; + return this.next(), this.parseVar(c, true, f), this.finishNode(c, "VariableDeclaration"), (this.match(58) || this.isContextual(101)) && c.declarations.length === 1 ? this.parseForIn(t, c, e) : (e !== null && this.unexpected(e), this.parseFor(t, c)); + } + let i = this.isContextual(95), a = new At(), n = this.parseExpression(true, a), o = this.isContextual(101); + if (o && (s && this.raise(u.ForOfLet, { at: n }), e === null && i && n.type === "Identifier" && this.raise(u.ForOfAsync, { at: n })), o || this.match(58)) { + this.checkDestructuringPrivate(a), this.toAssignable(n, true); + let c = o ? "ForOfStatement" : "ForInStatement"; + return this.checkLVal(n, { in: { type: c } }), this.parseForIn(t, n, e); + } else + this.checkExpressionErrors(a, true); + return e !== null && this.unexpected(e), this.parseFor(t, n); + } + parseFunctionStatement(t, e, s) { + return this.next(), this.parseFunction(t, fs5 | (s ? 0 : Hr), e); + } + parseIfStatement(t) { + return this.next(), t.test = this.parseHeaderExpression(), t.consequent = this.parseStatement("if"), t.alternate = this.eat(66) ? this.parseStatement("if") : null, this.finishNode(t, "IfStatement"); + } + parseReturnStatement(t) { + return !this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction && this.raise(u.IllegalReturn, { at: this.state.startLoc }), this.next(), this.isLineTerminator() ? t.argument = null : (t.argument = this.parseExpression(), this.semicolon()), this.finishNode(t, "ReturnStatement"); + } + parseSwitchStatement(t) { + this.next(), t.discriminant = this.parseHeaderExpression(); + let e = t.cases = []; + this.expect(5), this.state.labels.push($h), this.scope.enter(Me); + let s; + for (let r; !this.match(8); ) + if (this.match(61) || this.match(65)) { + let i = this.match(61); + s && this.finishNode(s, "SwitchCase"), e.push(s = this.startNode()), s.consequent = [], this.next(), i ? s.test = this.parseExpression() : (r && this.raise(u.MultipleDefaultsInSwitch, { at: this.state.lastTokStartLoc }), r = true, s.test = null), this.expect(14); + } else + s ? s.consequent.push(this.parseStatement(null)) : this.unexpected(); + return this.scope.exit(), s && this.finishNode(s, "SwitchCase"), this.next(), this.state.labels.pop(), this.finishNode(t, "SwitchStatement"); + } + parseThrowStatement(t) { + return this.next(), this.hasPrecedingLineBreak() && this.raise(u.NewlineAfterThrow, { at: this.state.lastTokEndLoc }), t.argument = this.parseExpression(), this.semicolon(), this.finishNode(t, "ThrowStatement"); + } + parseCatchClauseParam() { + let t = this.parseBindingAtom(), e = t.type === "Identifier"; + return this.scope.enter(e ? yr : 0), this.checkLVal(t, { in: { type: "CatchClause" }, binding: xe, allowingSloppyLetBinding: true }), t; + } + parseTryStatement(t) { + if (this.next(), t.block = this.parseBlock(), t.handler = null, this.match(62)) { + let e = this.startNode(); + this.next(), this.match(10) ? (this.expect(10), e.param = this.parseCatchClauseParam(), this.expect(11)) : (e.param = null, this.scope.enter(Me)), e.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)), this.scope.exit(), t.handler = this.finishNode(e, "CatchClause"); + } + return t.finalizer = this.eat(67) ? this.parseBlock() : null, !t.handler && !t.finalizer && this.raise(u.NoCatchOrFinally, { at: t }), this.finishNode(t, "TryStatement"); + } + parseVarStatement(t, e) { + let s = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + return this.next(), this.parseVar(t, false, e, s), this.semicolon(), this.finishNode(t, "VariableDeclaration"); + } + parseWhileStatement(t) { + return this.next(), t.test = this.parseHeaderExpression(), this.state.labels.push(ps), t.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("while")), this.state.labels.pop(), this.finishNode(t, "WhileStatement"); + } + parseWithStatement(t) { + return this.state.strict && this.raise(u.StrictWith, { at: this.state.startLoc }), this.next(), t.object = this.parseHeaderExpression(), t.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("with")), this.finishNode(t, "WithStatement"); + } + parseEmptyStatement(t) { + return this.next(), this.finishNode(t, "EmptyStatement"); + } + parseLabeledStatement(t, e, s, r) { + for (let a of this.state.labels) + a.name === e && this.raise(u.LabelRedeclaration, { at: s, labelName: e }); + let i = No(this.state.type) ? "loop" : this.match(71) ? "switch" : null; + for (let a = this.state.labels.length - 1; a >= 0; a--) { + let n = this.state.labels[a]; + if (n.statementStart === t.start) + n.statementStart = this.state.start, n.kind = i; + else + break; + } + return this.state.labels.push({ name: e, kind: i, statementStart: this.state.start }), t.body = this.parseStatement(r ? r.indexOf("label") === -1 ? r + "label" : r : "label"), this.state.labels.pop(), t.label = s, this.finishNode(t, "LabeledStatement"); + } + parseExpressionStatement(t, e) { + return t.expression = e, this.semicolon(), this.finishNode(t, "ExpressionStatement"); + } + parseBlock() { + let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false, e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true, s = arguments.length > 2 ? arguments[2] : void 0, r = this.startNode(); + return t && this.state.strictErrors.clear(), this.expect(5), e && this.scope.enter(Me), this.parseBlockBody(r, t, false, 8, s), e && this.scope.exit(), this.finishNode(r, "BlockStatement"); + } + isValidDirective(t) { + return t.type === "ExpressionStatement" && t.expression.type === "StringLiteral" && !t.expression.extra.parenthesized; + } + parseBlockBody(t, e, s, r, i) { + let a = t.body = [], n = t.directives = []; + this.parseBlockOrModuleBlockBody(a, e ? n : void 0, s, r, i); + } + parseBlockOrModuleBlockBody(t, e, s, r, i) { + let a = this.state.strict, n = false, o = false; + for (; !this.match(r); ) { + let c = this.parseStatement(null, s); + if (e && !o) { + if (this.isValidDirective(c)) { + let f = this.stmtToDirective(c); + e.push(f), !n && f.value.value === "use strict" && (n = true, this.setStrict(true)); + continue; + } + o = true, this.state.strictErrors.clear(); + } + t.push(c); + } + i && i.call(this, n), a || this.setStrict(false), this.next(); + } + parseFor(t, e) { + return t.init = e, this.semicolon(false), t.test = this.match(13) ? null : this.parseExpression(), this.semicolon(false), t.update = this.match(11) ? null : this.parseExpression(), this.expect(11), t.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for")), this.scope.exit(), this.state.labels.pop(), this.finishNode(t, "ForStatement"); + } + parseForIn(t, e, s) { + let r = this.match(58); + return this.next(), r ? s !== null && this.unexpected(s) : t.await = s !== null, e.type === "VariableDeclaration" && e.declarations[0].init != null && (!r || this.state.strict || e.kind !== "var" || e.declarations[0].id.type !== "Identifier") && this.raise(u.ForInOfLoopInitializer, { at: e, type: r ? "ForInStatement" : "ForOfStatement" }), e.type === "AssignmentPattern" && this.raise(u.InvalidLhs, { at: e, ancestor: { type: "ForStatement" } }), t.left = e, t.right = r ? this.parseExpression() : this.parseMaybeAssignAllowIn(), this.expect(11), t.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for")), this.scope.exit(), this.state.labels.pop(), this.finishNode(t, r ? "ForInStatement" : "ForOfStatement"); + } + parseVar(t, e, s) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false, i = t.declarations = []; + for (t.kind = s; ; ) { + let a = this.startNode(); + if (this.parseVarId(a, s), a.init = this.eat(29) ? e ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn() : null, a.init === null && !r && (a.id.type !== "Identifier" && !(e && (this.match(58) || this.isContextual(101))) ? this.raise(u.DeclarationMissingInitializer, { at: this.state.lastTokEndLoc, kind: "destructuring" }) : s === "const" && !(this.match(58) || this.isContextual(101)) && this.raise(u.DeclarationMissingInitializer, { at: this.state.lastTokEndLoc, kind: "const" })), i.push(this.finishNode(a, "VariableDeclarator")), !this.eat(12)) + break; + } + return t; + } + parseVarId(t, e) { + t.id = this.parseBindingAtom(), this.checkLVal(t.id, { in: { type: "VariableDeclarator" }, binding: e === "var" ? pt : xe }); + } + parseFunction(t) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Qh, s = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, r = e & fs5, i = e & Hr, a = !!r && !(e & Wr); + this.initFunction(t, s), this.match(55) && i && this.raise(u.GeneratorInSingleStatementContext, { at: this.state.startLoc }), t.generator = this.eat(55), r && (t.id = this.parseFunctionId(a)); + let n = this.state.maybeInArrowParameters; + return this.state.maybeInArrowParameters = false, this.scope.enter(me), this.prodParam.enter(gt(s, t.generator)), r || (t.id = this.parseFunctionId()), this.parseFunctionParams(t, false), this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(t, r ? "FunctionDeclaration" : "FunctionExpression"); + }), this.prodParam.exit(), this.scope.exit(), r && !i && this.registerFunctionStatementId(t), this.state.maybeInArrowParameters = n, t; + } + parseFunctionId(t) { + return t || K(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(t, e) { + this.expect(10), this.expressionScope.enter(gh()), t.params = this.parseBindingList(11, 41, false, e), this.expressionScope.exit(); + } + registerFunctionStatementId(t) { + !t.id || this.scope.declareName(t.id.name, this.state.strict || t.generator || t.async ? this.scope.treatFunctionsAsVar ? pt : xe : Tr, t.id.loc.start); + } + parseClass(t, e, s) { + this.next(), this.takeDecorators(t); + let r = this.state.strict; + return this.state.strict = true, this.parseClassId(t, e, s), this.parseClassSuper(t), t.body = this.parseClassBody(!!t.superClass, r), this.finishNode(t, e ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + isNonstaticConstructor(t) { + return !t.computed && !t.static && (t.key.name === "constructor" || t.key.value === "constructor"); + } + parseClassBody(t, e) { + this.classScope.enter(); + let s = { hadConstructor: false, hadSuperClass: t }, r = [], i = this.startNode(); + if (i.body = [], this.expect(5), this.withSmartMixTopicForbiddingContext(() => { + for (; !this.match(8); ) { + if (this.eat(13)) { + if (r.length > 0) + throw this.raise(u.DecoratorSemicolon, { at: this.state.lastTokEndLoc }); + continue; + } + if (this.match(26)) { + r.push(this.parseDecorator()); + continue; + } + let a = this.startNode(); + r.length && (a.decorators = r, this.resetStartLocationFromNode(a, r[0]), r = []), this.parseClassMember(i, a, s), a.kind === "constructor" && a.decorators && a.decorators.length > 0 && this.raise(u.DecoratorConstructor, { at: a }); + } + }), this.state.strict = e, this.next(), r.length) + throw this.raise(u.TrailingDecorator, { at: this.state.startLoc }); + return this.classScope.exit(), this.finishNode(i, "ClassBody"); + } + parseClassMemberFromModifier(t, e) { + let s = this.parseIdentifier(true); + if (this.isClassMethod()) { + let r = e; + return r.kind = "method", r.computed = false, r.key = s, r.static = false, this.pushClassMethod(t, r, false, false, false, false), true; + } else if (this.isClassProperty()) { + let r = e; + return r.computed = false, r.key = s, r.static = false, t.body.push(this.parseClassProperty(r)), true; + } + return this.resetPreviousNodeTrailingComments(s), false; + } + parseClassMember(t, e, s) { + let r = this.isContextual(104); + if (r) { + if (this.parseClassMemberFromModifier(t, e)) + return; + if (this.eat(5)) { + this.parseClassStaticBlock(t, e); + return; + } + } + this.parseClassMemberWithIsStatic(t, e, s, r); + } + parseClassMemberWithIsStatic(t, e, s, r) { + let i = e, a = e, n = e, o = e, c = e, f = i, y = i; + if (e.static = r, this.parsePropertyNamePrefixOperator(e), this.eat(55)) { + f.kind = "method"; + let _ = this.match(134); + if (this.parseClassElementName(f), _) { + this.pushClassPrivateMethod(t, a, true, false); + return; + } + this.isNonstaticConstructor(i) && this.raise(u.ConstructorIsGenerator, { at: i.key }), this.pushClassMethod(t, i, true, false, false, false); + return; + } + let P = K(this.state.type) && !this.state.containsEsc, v = this.match(134), N = this.parseClassElementName(e), B = this.state.startLoc; + if (this.parsePostMemberNameModifiers(y), this.isClassMethod()) { + if (f.kind = "method", v) { + this.pushClassPrivateMethod(t, a, false, false); + return; + } + let _ = this.isNonstaticConstructor(i), Q = false; + _ && (i.kind = "constructor", s.hadConstructor && !this.hasPlugin("typescript") && this.raise(u.DuplicateConstructor, { at: N }), _ && this.hasPlugin("typescript") && e.override && this.raise(u.OverrideOnConstructor, { at: N }), s.hadConstructor = true, Q = s.hadSuperClass), this.pushClassMethod(t, i, false, false, _, Q); + } else if (this.isClassProperty()) + v ? this.pushClassPrivateProperty(t, o) : this.pushClassProperty(t, n); + else if (P && N.name === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(N); + let _ = this.eat(55); + y.optional && this.unexpected(B), f.kind = "method"; + let Q = this.match(134); + this.parseClassElementName(f), this.parsePostMemberNameModifiers(y), Q ? this.pushClassPrivateMethod(t, a, _, true) : (this.isNonstaticConstructor(i) && this.raise(u.ConstructorIsAsync, { at: i.key }), this.pushClassMethod(t, i, _, true, false, false)); + } else if (P && (N.name === "get" || N.name === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(N), f.kind = N.name; + let _ = this.match(134); + this.parseClassElementName(i), _ ? this.pushClassPrivateMethod(t, a, false, false) : (this.isNonstaticConstructor(i) && this.raise(u.ConstructorIsAccessor, { at: i.key }), this.pushClassMethod(t, i, false, false, false, false)), this.checkGetterSetterParams(i); + } else if (P && N.name === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"), this.resetPreviousNodeTrailingComments(N); + let _ = this.match(134); + this.parseClassElementName(n), this.pushClassAccessorProperty(t, c, _); + } else + this.isLineTerminator() ? v ? this.pushClassPrivateProperty(t, o) : this.pushClassProperty(t, n) : this.unexpected(); + } + parseClassElementName(t) { + let { type: e, value: s } = this.state; + if ((e === 128 || e === 129) && t.static && s === "prototype" && this.raise(u.StaticPrototype, { at: this.state.startLoc }), e === 134) { + s === "constructor" && this.raise(u.ConstructorClassPrivateField, { at: this.state.startLoc }); + let r = this.parsePrivateName(); + return t.key = r, r; + } + return this.parsePropertyName(t); + } + parseClassStaticBlock(t, e) { + var s; + this.scope.enter(Se | Yt | ot); + let r = this.state.labels; + this.state.labels = [], this.prodParam.enter(je); + let i = e.body = []; + this.parseBlockOrModuleBlockBody(i, void 0, false, 8), this.prodParam.exit(), this.scope.exit(), this.state.labels = r, t.body.push(this.finishNode(e, "StaticBlock")), (s = e.decorators) != null && s.length && this.raise(u.DecoratorStaticBlock, { at: e }); + } + pushClassProperty(t, e) { + !e.computed && (e.key.name === "constructor" || e.key.value === "constructor") && this.raise(u.ConstructorClassField, { at: e.key }), t.body.push(this.parseClassProperty(e)); + } + pushClassPrivateProperty(t, e) { + let s = this.parseClassPrivateProperty(e); + t.body.push(s), this.classScope.declarePrivateName(this.getPrivateNameSV(s.key), is, s.key.loc.start); + } + pushClassAccessorProperty(t, e, s) { + if (!s && !e.computed) { + let i = e.key; + (i.name === "constructor" || i.value === "constructor") && this.raise(u.ConstructorClassField, { at: i }); + } + let r = this.parseClassAccessorProperty(e); + t.body.push(r), s && this.classScope.declarePrivateName(this.getPrivateNameSV(r.key), is, r.key.loc.start); + } + pushClassMethod(t, e, s, r, i, a) { + t.body.push(this.parseMethod(e, s, r, i, a, "ClassMethod", true)); + } + pushClassPrivateMethod(t, e, s, r) { + let i = this.parseMethod(e, s, r, false, false, "ClassPrivateMethod", true); + t.body.push(i); + let a = i.kind === "get" ? i.static ? Qo : eh : i.kind === "set" ? i.static ? Zo : th : is; + this.declareClassPrivateMethodInScope(i, a); + } + declareClassPrivateMethodInScope(t, e) { + this.classScope.declarePrivateName(this.getPrivateNameSV(t.key), e, t.key.loc.start); + } + parsePostMemberNameModifiers(t) { + } + parseClassPrivateProperty(t) { + return this.parseInitializer(t), this.semicolon(), this.finishNode(t, "ClassPrivateProperty"); + } + parseClassProperty(t) { + return this.parseInitializer(t), this.semicolon(), this.finishNode(t, "ClassProperty"); + } + parseClassAccessorProperty(t) { + return this.parseInitializer(t), this.semicolon(), this.finishNode(t, "ClassAccessorProperty"); + } + parseInitializer(t) { + this.scope.enter(Se | ot), this.expressionScope.enter(Dr()), this.prodParam.enter(je), t.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null, this.expressionScope.exit(), this.prodParam.exit(), this.scope.exit(); + } + parseClassId(t, e, s) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : Pr; + if (K(this.state.type)) + t.id = this.parseIdentifier(), e && this.declareNameFromIdentifier(t.id, r); + else if (s || !e) + t.id = null; + else + throw this.raise(u.MissingClassName, { at: this.state.startLoc }); + } + parseClassSuper(t) { + t.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(t) { + let e = this.maybeParseExportDefaultSpecifier(t), s = !e || this.eat(12), r = s && this.eatExportStar(t), i = r && this.maybeParseExportNamespaceSpecifier(t), a = s && (!i || this.eat(12)), n = e || r; + if (r && !i) + return e && this.unexpected(), this.parseExportFrom(t, true), this.finishNode(t, "ExportAllDeclaration"); + let o = this.maybeParseExportNamedSpecifiers(t); + if (e && s && !r && !o || i && a && !o) + throw this.unexpected(null, 5); + let c; + if (n || o ? (c = false, this.parseExportFrom(t, n)) : c = this.maybeParseExportDeclaration(t), n || o || c) + return this.checkExport(t, true, false, !!t.source), this.finishNode(t, "ExportNamedDeclaration"); + if (this.eat(65)) + return t.declaration = this.parseExportDefaultExpression(), this.checkExport(t, true, true), this.finishNode(t, "ExportDefaultDeclaration"); + throw this.unexpected(null, 5); + } + eatExportStar(t) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(t) { + if (this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom"); + let e = this.startNode(); + return e.exported = this.parseIdentifier(true), t.specifiers = [this.finishNode(e, "ExportDefaultSpecifier")], true; + } + return false; + } + maybeParseExportNamespaceSpecifier(t) { + if (this.isContextual(93)) { + t.specifiers || (t.specifiers = []); + let e = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc); + return this.next(), e.exported = this.parseModuleExportName(), t.specifiers.push(this.finishNode(e, "ExportNamespaceSpecifier")), true; + } + return false; + } + maybeParseExportNamedSpecifiers(t) { + if (this.match(5)) { + t.specifiers || (t.specifiers = []); + let e = t.exportKind === "type"; + return t.specifiers.push(...this.parseExportSpecifiers(e)), t.source = null, t.declaration = null, this.hasPlugin("importAssertions") && (t.assertions = []), true; + } + return false; + } + maybeParseExportDeclaration(t) { + return this.shouldParseExportDeclaration() ? (t.specifiers = [], t.source = null, this.hasPlugin("importAssertions") && (t.assertions = []), t.declaration = this.parseExportDeclaration(t), true) : false; + } + isAsyncFunction() { + if (!this.isContextual(95)) + return false; + let t = this.nextTokenStart(); + return !as.test(this.input.slice(this.state.pos, t)) && this.isUnparsedContextual(t, "function"); + } + parseExportDefaultExpression() { + let t = this.startNode(), e = this.isAsyncFunction(); + if (this.match(68) || e) + return this.next(), e && this.next(), this.parseFunction(t, fs5 | Wr, e); + if (this.match(80)) + return this.parseClass(t, true, true); + if (this.match(26)) + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") && this.raise(u.DecoratorBeforeExport, { at: this.state.startLoc }), this.parseDecorators(false), this.parseClass(t, true, true); + if (this.match(75) || this.match(74) || this.isLet()) + throw this.raise(u.UnsupportedDefaultExport, { at: this.state.startLoc }); + let s = this.parseMaybeAssignAllowIn(); + return this.semicolon(), s; + } + parseExportDeclaration(t) { + return this.parseStatement(null); + } + isExportDefaultSpecifier() { + let { type: t } = this.state; + if (K(t)) { + if (t === 95 && !this.state.containsEsc || t === 99) + return false; + if ((t === 126 || t === 125) && !this.state.containsEsc) { + let { type: r } = this.lookahead(); + if (K(r) && r !== 97 || r === 5) + return this.expectOnePlugin(["flow", "typescript"]), false; + } + } else if (!this.match(65)) + return false; + let e = this.nextTokenStart(), s = this.isUnparsedContextual(e, "from"); + if (this.input.charCodeAt(e) === 44 || K(this.state.type) && s) + return true; + if (this.match(65) && s) { + let r = this.input.charCodeAt(this.nextTokenStartSince(e + 4)); + return r === 34 || r === 39; + } + return false; + } + parseExportFrom(t, e) { + if (this.eatContextual(97)) { + t.source = this.parseImportSource(), this.checkExport(t); + let s = this.maybeParseImportAssertions(); + s && (t.assertions = s); + } else + e && this.unexpected(); + this.semicolon(); + } + shouldParseExportDeclaration() { + let { type: t } = this.state; + if (t === 26 && (this.expectOnePlugin(["decorators", "decorators-legacy"]), this.hasPlugin("decorators"))) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport")) + throw this.raise(u.DecoratorBeforeExport, { at: this.state.startLoc }); + return true; + } + return t === 74 || t === 75 || t === 68 || t === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(t, e, s, r) { + if (e) { + if (s) { + if (this.checkDuplicateExports(t, "default"), this.hasPlugin("exportDefaultFrom")) { + var i; + let n = t.declaration; + n.type === "Identifier" && n.name === "from" && n.end - n.start === 4 && !((i = n.extra) != null && i.parenthesized) && this.raise(u.ExportDefaultFromAsIdentifier, { at: n }); + } + } else if (t.specifiers && t.specifiers.length) + for (let n of t.specifiers) { + let { exported: o } = n, c = o.type === "Identifier" ? o.name : o.value; + if (this.checkDuplicateExports(n, c), !r && n.local) { + let { local: f } = n; + f.type !== "Identifier" ? this.raise(u.ExportBindingIsString, { at: n, localName: f.value, exportName: c }) : (this.checkReservedWord(f.name, f.loc.start, true, false), this.scope.checkLocalExport(f)); + } + } + else if (t.declaration) { + if (t.declaration.type === "FunctionDeclaration" || t.declaration.type === "ClassDeclaration") { + let n = t.declaration.id; + if (!n) + throw new Error("Assertion failure"); + this.checkDuplicateExports(t, n.name); + } else if (t.declaration.type === "VariableDeclaration") + for (let n of t.declaration.declarations) + this.checkDeclaration(n.id); + } + } + if (this.state.decoratorStack[this.state.decoratorStack.length - 1].length) + throw this.raise(u.UnsupportedDecoratorExport, { at: t }); + } + checkDeclaration(t) { + if (t.type === "Identifier") + this.checkDuplicateExports(t, t.name); + else if (t.type === "ObjectPattern") + for (let e of t.properties) + this.checkDeclaration(e); + else if (t.type === "ArrayPattern") + for (let e of t.elements) + e && this.checkDeclaration(e); + else + t.type === "ObjectProperty" ? this.checkDeclaration(t.value) : t.type === "RestElement" ? this.checkDeclaration(t.argument) : t.type === "AssignmentPattern" && this.checkDeclaration(t.left); + } + checkDuplicateExports(t, e) { + this.exportedIdentifiers.has(e) && (e === "default" ? this.raise(u.DuplicateDefaultExport, { at: t }) : this.raise(u.DuplicateExport, { at: t, exportName: e })), this.exportedIdentifiers.add(e); + } + parseExportSpecifiers(t) { + let e = [], s = true; + for (this.expect(5); !this.eat(8); ) { + if (s) + s = false; + else if (this.expect(12), this.eat(8)) + break; + let r = this.isContextual(126), i = this.match(129), a = this.startNode(); + a.local = this.parseModuleExportName(), e.push(this.parseExportSpecifier(a, i, t, r)); + } + return e; + } + parseExportSpecifier(t, e, s, r) { + return this.eatContextual(93) ? t.exported = this.parseModuleExportName() : e ? t.exported = bh(t.local) : t.exported || (t.exported = ge(t.local)), this.finishNode(t, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(129)) { + let t = this.parseStringLiteral(this.state.value), e = t.value.match(Zh); + return e && this.raise(u.ModuleExportNameHasLoneSurrogate, { at: t, surrogateCharCode: e[0].charCodeAt(0) }), t; + } + return this.parseIdentifier(true); + } + parseImport(t) { + if (t.specifiers = [], !this.match(129)) { + let r = !this.maybeParseDefaultImportSpecifier(t) || this.eat(12), i = r && this.maybeParseStarImportSpecifier(t); + r && !i && this.parseNamedImportSpecifiers(t), this.expectContextual(97); + } + t.source = this.parseImportSource(); + let e = this.maybeParseImportAssertions(); + if (e) + t.assertions = e; + else { + let s = this.maybeParseModuleAttributes(); + s && (t.attributes = s); + } + return this.semicolon(), this.finishNode(t, "ImportDeclaration"); + } + parseImportSource() { + return this.match(129) || this.unexpected(), this.parseExprAtom(); + } + shouldParseDefaultImport(t) { + return K(this.state.type); + } + parseImportSpecifierLocal(t, e, s) { + e.local = this.parseIdentifier(), t.specifiers.push(this.finishImportSpecifier(e, s)); + } + finishImportSpecifier(t, e) { + return this.checkLVal(t.local, { in: t, binding: xe }), this.finishNode(t, e); + } + parseAssertEntries() { + let t = [], e = /* @__PURE__ */ new Set(); + do { + if (this.match(8)) + break; + let s = this.startNode(), r = this.state.value; + if (e.has(r) && this.raise(u.ModuleAttributesWithDuplicateKeys, { at: this.state.startLoc, key: r }), e.add(r), this.match(129) ? s.key = this.parseStringLiteral(r) : s.key = this.parseIdentifier(true), this.expect(14), !this.match(129)) + throw this.raise(u.ModuleAttributeInvalidValue, { at: this.state.startLoc }); + s.value = this.parseStringLiteral(this.state.value), this.finishNode(s, "ImportAttribute"), t.push(s); + } while (this.eat(12)); + return t; + } + maybeParseModuleAttributes() { + if (this.match(76) && !this.hasPrecedingLineBreak()) + this.expectPlugin("moduleAttributes"), this.next(); + else + return this.hasPlugin("moduleAttributes") ? [] : null; + let t = [], e = /* @__PURE__ */ new Set(); + do { + let s = this.startNode(); + if (s.key = this.parseIdentifier(true), s.key.name !== "type" && this.raise(u.ModuleAttributeDifferentFromType, { at: s.key }), e.has(s.key.name) && this.raise(u.ModuleAttributesWithDuplicateKeys, { at: s.key, key: s.key.name }), e.add(s.key.name), this.expect(14), !this.match(129)) + throw this.raise(u.ModuleAttributeInvalidValue, { at: this.state.startLoc }); + s.value = this.parseStringLiteral(this.state.value), this.finishNode(s, "ImportAttribute"), t.push(s); + } while (this.eat(12)); + return t; + } + maybeParseImportAssertions() { + if (this.isContextual(94) && !this.hasPrecedingLineBreak()) + this.expectPlugin("importAssertions"), this.next(); + else + return this.hasPlugin("importAssertions") ? [] : null; + this.eat(5); + let t = this.parseAssertEntries(); + return this.eat(8), t; + } + maybeParseDefaultImportSpecifier(t) { + return this.shouldParseDefaultImport(t) ? (this.parseImportSpecifierLocal(t, this.startNode(), "ImportDefaultSpecifier"), true) : false; + } + maybeParseStarImportSpecifier(t) { + if (this.match(55)) { + let e = this.startNode(); + return this.next(), this.expectContextual(93), this.parseImportSpecifierLocal(t, e, "ImportNamespaceSpecifier"), true; + } + return false; + } + parseNamedImportSpecifiers(t) { + let e = true; + for (this.expect(5); !this.eat(8); ) { + if (e) + e = false; + else { + if (this.eat(14)) + throw this.raise(u.DestructureNamedImport, { at: this.state.startLoc }); + if (this.expect(12), this.eat(8)) + break; + } + let s = this.startNode(), r = this.match(129), i = this.isContextual(126); + s.imported = this.parseModuleExportName(); + let a = this.parseImportSpecifier(s, r, t.importKind === "type" || t.importKind === "typeof", i); + t.specifiers.push(a); + } + } + parseImportSpecifier(t, e, s, r) { + if (this.eatContextual(93)) + t.local = this.parseIdentifier(); + else { + let { imported: i } = t; + if (e) + throw this.raise(u.ImportBindingIsString, { at: t, importName: i.value }); + this.checkReservedWord(i.name, t.loc.start, true, true), t.local || (t.local = ge(i)); + } + return this.finishImportSpecifier(t, "ImportSpecifier"); + } + isThisParam(t) { + return t.type === "Identifier" && t.name === "this"; + } + }, Gr = class extends tl { + constructor(t, e) { + t = Gh(t), super(t, e), this.options = t, this.initializeScopes(), this.plugins = sl(this.options.plugins), this.filename = t.sourceFilename; + } + getScopeHandler() { + return hs; + } + parse() { + this.enterInitialScopes(); + let t = this.startNode(), e = this.startNode(); + return this.nextToken(), t.errors = null, this.parseTopLevel(t, e), t.errors = this.state.errors, t; + } + }; + function sl(t) { + let e = /* @__PURE__ */ new Map(); + for (let s of t) { + let [r, i] = Array.isArray(s) ? s : [s, {}]; + e.has(r) || e.set(r, i || {}); + } + return e; + } + function rl(t, e) { + var s; + if (((s = e) == null ? void 0 : s.sourceType) === "unambiguous") { + e = Object.assign({}, e); + try { + e.sourceType = "module"; + let r = Ye(e, t), i = r.parse(); + if (r.sawUnambiguousESM) + return i; + if (r.ambiguousScriptDifferentAst) + try { + return e.sourceType = "script", Ye(e, t).parse(); + } catch { + } + else + i.program.sourceType = "script"; + return i; + } catch (r) { + try { + return e.sourceType = "script", Ye(e, t).parse(); + } catch { + } + throw r; + } + } else + return Ye(e, t).parse(); + } + function il(t, e) { + let s = Ye(e, t); + return s.options.strictMode && (s.state.strict = true), s.getExpression(); + } + function al(t) { + let e = {}; + for (let s of Object.keys(t)) + e[s] = fe(t[s]); + return e; + } + var nl = al(bo); + function Ye(t, e) { + let s = Gr; + return t != null && t.plugins && (Hh(t.plugins), s = ol(t.plugins)), new s(t, e); + } + var Xr = {}; + function ol(t) { + let e = Wh.filter((i) => ee(t, i)), s = e.join("/"), r = Xr[s]; + if (!r) { + r = Gr; + for (let i of e) + r = zr[i](r); + Xr[s] = r; + } + return r; + } + h.parse = rl, h.parseExpression = il, h.tokTypes = nl; + } }), Pf = H({ "src/language-js/parse/json.js"(h, l) { + "use strict"; + V(); + var p = fo(), d = nr(), m = yo(), A = xo(); + function g() { + let E = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, { allowComments: L = true } = E; + return function(F) { + let { parseExpression: W } = Po(), Y; + try { + Y = W(F, { tokens: true, ranges: true }); + } catch (M) { + throw A(M); + } + if (!L && p(Y.comments)) + throw x(Y.comments[0], "Comment"); + return T(Y), Y; + }; + } + function x(E, L) { + let [R, F] = [E.loc.start, E.loc.end].map((W) => { + let { line: Y, column: M } = W; + return { line: Y, column: M + 1 }; + }); + return d("".concat(L, " is not allowed in JSON."), { start: R, end: F }); + } + function T(E) { + switch (E.type) { + case "ArrayExpression": + for (let L of E.elements) + L !== null && T(L); + return; + case "ObjectExpression": + for (let L of E.properties) + T(L); + return; + case "ObjectProperty": + if (E.computed) + throw x(E.key, "Computed key"); + if (E.shorthand) + throw x(E.key, "Shorthand property"); + E.key.type !== "Identifier" && T(E.key), T(E.value); + return; + case "UnaryExpression": { + let { operator: L, argument: R } = E; + if (L !== "+" && L !== "-") + throw x(E, "Operator '".concat(E.operator, "'")); + if (R.type === "NumericLiteral" || R.type === "Identifier" && (R.name === "Infinity" || R.name === "NaN")) + return; + throw x(R, "Operator '".concat(L, "' before '").concat(R.type, "'")); + } + case "Identifier": + if (E.name !== "Infinity" && E.name !== "NaN" && E.name !== "undefined") + throw x(E, "Identifier '".concat(E.name, "'")); + return; + case "TemplateLiteral": + if (p(E.expressions)) + throw x(E.expressions[0], "'TemplateLiteral' with expression"); + for (let L of E.quasis) + T(L); + return; + case "NullLiteral": + case "BooleanLiteral": + case "NumericLiteral": + case "StringLiteral": + case "TemplateElement": + return; + default: + throw x(E, "'".concat(E.type, "'")); + } + } + var k = g(), D = { json: m({ parse: k, hasPragma() { + return true; + } }), json5: m(k), "json-stringify": m({ parse: g({ allowComments: false }), astFormat: "estree-json" }) }; + l.exports = D; + } }); + V(); + var Tf = ef(), Ef = Qn(), Cf = af(), ze = yo(), bf = xo(), vf = Af(), Sf = Pf(), wf = { sourceType: "module", allowImportExportEverywhere: true, allowReturnOutsideFunction: true, allowSuperOutsideMethod: true, allowUndeclaredExports: true, errorRecovery: true, createParenthesizedExpressions: true, plugins: ["doExpressions", "exportDefaultFrom", "functionBind", "functionSent", "throwExpressions", "partialApplication", ["decorators", { decoratorsBeforeExport: false }], "importAssertions", "decimal", "moduleBlocks", "asyncDoExpressions", "regexpUnicodeSets", "destructuringPrivate", "decoratorAutoAccessors"], tokens: true, ranges: true }, Nf = ["recordAndTuple", { syntaxType: "hash" }], Wn = "v8intrinsic", Gn = [["pipelineOperator", { proposal: "hack", topicToken: "%" }], ["pipelineOperator", { proposal: "minimal" }], ["pipelineOperator", { proposal: "fsharp" }]], ue = function(h) { + let l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : wf; + return Object.assign(Object.assign({}, l), {}, { plugins: [...l.plugins, ...h] }); + }, If = /@(?:no)?flow\b/; + function kf(h, l) { + if (l.filepath && l.filepath.endsWith(".js.flow")) + return true; + let p = Ef(h); + p && (h = h.slice(p.length)); + let d = Cf(h, 0); + return d !== false && (h = h.slice(0, d)), If.test(h); + } + function Df(h, l, p) { + let m = Po()[h](l, p), A = m.errors.find((g) => !Rf.has(g.reasonCode)); + if (A) + throw A; + return m; + } + function Ke(h) { + for (var l = arguments.length, p = new Array(l > 1 ? l - 1 : 0), d = 1; d < l; d++) + p[d - 1] = arguments[d]; + return function(m, A) { + let g = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if ((g.parser === "babel" || g.parser === "__babel_estree") && kf(m, g)) + return g.parser = "babel-flow", To(m, A, g); + let x = p; + g.__babelSourceType === "script" && (x = x.map((E) => Object.assign(Object.assign({}, E), {}, { sourceType: "script" }))), /#[[{]/.test(m) && (x = x.map((E) => ue([Nf], E))); + let T = /%[A-Z]/.test(m); + m.includes("|>") ? x = (T ? [...Gn, Wn] : Gn).flatMap((L) => x.map((R) => ue([L], R))) : T && (x = x.map((E) => ue([Wn], E))); + let { result: k, error: D } = Tf(...x.map((E) => () => Df(h, m, E))); + if (!k) + throw bf(D); + return g.originalText = m, vf(k, g); + }; + } + var Ff = Ke("parse", ue(["jsx", "flow"])), To = Ke("parse", ue(["jsx", ["flow", { all: true, enums: true }]])), Lf = Ke("parse", ue(["jsx", "typescript"]), ue(["typescript"])), Of = Ke("parse", ue(["jsx", "flow", "estree"])), Bf = Ke("parseExpression", ue(["jsx"])), Mf = Ke("parseExpression", ue(["typescript"])), Rf = /* @__PURE__ */ new Set(["StrictNumericEscape", "StrictWith", "StrictOctalLiteral", "StrictDelete", "StrictEvalArguments", "StrictEvalArgumentsBinding", "StrictFunction", "EmptyTypeArguments", "EmptyTypeParameters", "ConstructorHasTypeParameters", "UnsupportedParameterPropertyKind", "UnexpectedParameterModifier", "MixedLabeledAndUnlabeledElements", "InvalidTupleMemberLabel", "NonClassMethodPropertyHasAbstractModifer", "ReadonlyForMethodSignature", "ClassMethodHasDeclare", "ClassMethodHasReadonly", "InvalidModifierOnTypeMember", "DuplicateAccessibilityModifier", "IndexSignatureHasDeclare", "DecoratorExportClass", "ParamDupe", "InvalidDecimal", "RestTrailingComma", "UnsupportedParameterDecorator", "UnterminatedJsxContent", "UnexpectedReservedWord", "ModuleAttributesWithDuplicateKeys", "LineTerminatorBeforeArrow", "InvalidEscapeSequenceTemplate", "NonAbstractClassHasAbstractMethod", "UnsupportedPropertyDecorator", "OptionalTypeBeforeRequired", "PatternIsOptional", "OptionalBindingPattern", "DeclareClassFieldHasInitializer", "TypeImportCannotSpecifyDefaultAndNamed", "DeclareFunctionHasImplementation", "ConstructorClassField", "VarRedeclaration", "InvalidPrivateFieldResolution", "DuplicateExport"]), Xn = ze(Ff), Jn = ze(Lf), Yn = ze(Bf), jf = ze(Mf); + Eo.exports = { parsers: Object.assign(Object.assign({ babel: Xn, "babel-flow": ze(To), "babel-ts": Jn }, Sf), {}, { __js_expression: Yn, __vue_expression: Yn, __vue_ts_expression: jf, __vue_event_binding: Xn, __vue_ts_event_binding: Jn, __babel_estree: ze(Of) }) }; + }); + return qf(); + }); + } +}); + +// node_modules/prettier/parser-flow.js +var require_parser_flow = __commonJS({ + "node_modules/prettier/parser-flow.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.flow = e(); + } + })(function() { + "use strict"; + var Be = (H0, z0) => () => (z0 || H0((z0 = { exports: {} }).exports, z0), z0.exports); + var ru = Be((_oe, rn0) => { + var h_ = function(H0) { + return H0 && H0.Math == Math && H0; + }; + rn0.exports = h_(typeof globalThis == "object" && globalThis) || h_(typeof window == "object" && window) || h_(typeof self == "object" && self) || h_(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var Qs = Be((yoe, en0) => { + en0.exports = function(H0) { + try { + return !!H0(); + } catch { + return true; + } + }; + }); + var fv = Be((hoe, nn0) => { + var N7e = Qs(); + nn0.exports = !N7e(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var jR = Be((doe, tn0) => { + var C7e = Qs(); + tn0.exports = !C7e(function() { + var H0 = function() { + }.bind(); + return typeof H0 != "function" || H0.hasOwnProperty("prototype"); + }); + }); + var k_ = Be((koe, un0) => { + var P7e = jR(), d_ = Function.prototype.call; + un0.exports = P7e ? d_.bind(d_) : function() { + return d_.apply(d_, arguments); + }; + }); + var on0 = Be((xn0) => { + "use strict"; + var in0 = {}.propertyIsEnumerable, fn0 = Object.getOwnPropertyDescriptor, D7e = fn0 && !in0.call({ 1: 2 }, 1); + xn0.f = D7e ? function(z0) { + var xr = fn0(this, z0); + return !!xr && xr.enumerable; + } : in0; + }); + var GR = Be((Eoe, an0) => { + an0.exports = function(H0, z0) { + return { enumerable: !(H0 & 1), configurable: !(H0 & 2), writable: !(H0 & 4), value: z0 }; + }; + }); + var zc = Be((Soe, vn0) => { + var cn0 = jR(), sn0 = Function.prototype, L7e = sn0.bind, MR = sn0.call, R7e = cn0 && L7e.bind(MR, MR); + vn0.exports = cn0 ? function(H0) { + return H0 && R7e(H0); + } : function(H0) { + return H0 && function() { + return MR.apply(H0, arguments); + }; + }; + }); + var pn0 = Be((goe, bn0) => { + var ln0 = zc(), j7e = ln0({}.toString), G7e = ln0("".slice); + bn0.exports = function(H0) { + return G7e(j7e(H0), 8, -1); + }; + }); + var _n0 = Be((Foe, mn0) => { + var M7e = ru(), B7e = zc(), q7e = Qs(), U7e = pn0(), BR = M7e.Object, H7e = B7e("".split); + mn0.exports = q7e(function() { + return !BR("z").propertyIsEnumerable(0); + }) ? function(H0) { + return U7e(H0) == "String" ? H7e(H0, "") : BR(H0); + } : BR; + }); + var qR = Be((Toe, yn0) => { + var X7e = ru(), Y7e = X7e.TypeError; + yn0.exports = function(H0) { + if (H0 == null) + throw Y7e("Can't call method on " + H0); + return H0; + }; + }); + var w_ = Be((Ooe, hn0) => { + var V7e = _n0(), z7e = qR(); + hn0.exports = function(H0) { + return V7e(z7e(H0)); + }; + }); + var Kc = Be((Ioe, dn0) => { + dn0.exports = function(H0) { + return typeof H0 == "function"; + }; + }); + var S2 = Be((Aoe, kn0) => { + var K7e = Kc(); + kn0.exports = function(H0) { + return typeof H0 == "object" ? H0 !== null : K7e(H0); + }; + }); + var E_ = Be((Noe, wn0) => { + var UR = ru(), W7e = Kc(), J7e = function(H0) { + return W7e(H0) ? H0 : void 0; + }; + wn0.exports = function(H0, z0) { + return arguments.length < 2 ? J7e(UR[H0]) : UR[H0] && UR[H0][z0]; + }; + }); + var Sn0 = Be((Coe, En0) => { + var $7e = zc(); + En0.exports = $7e({}.isPrototypeOf); + }); + var Fn0 = Be((Poe, gn0) => { + var Z7e = E_(); + gn0.exports = Z7e("navigator", "userAgent") || ""; + }); + var Pn0 = Be((Doe, Cn0) => { + var Nn0 = ru(), HR = Fn0(), Tn0 = Nn0.process, On0 = Nn0.Deno, In0 = Tn0 && Tn0.versions || On0 && On0.version, An0 = In0 && In0.v8, $i, S_; + An0 && ($i = An0.split("."), S_ = $i[0] > 0 && $i[0] < 4 ? 1 : +($i[0] + $i[1])); + !S_ && HR && ($i = HR.match(/Edge\/(\d+)/), (!$i || $i[1] >= 74) && ($i = HR.match(/Chrome\/(\d+)/), $i && (S_ = +$i[1]))); + Cn0.exports = S_; + }); + var XR = Be((Loe, Ln0) => { + var Dn0 = Pn0(), Q7e = Qs(); + Ln0.exports = !!Object.getOwnPropertySymbols && !Q7e(function() { + var H0 = Symbol(); + return !String(H0) || !(Object(H0) instanceof Symbol) || !Symbol.sham && Dn0 && Dn0 < 41; + }); + }); + var YR = Be((Roe, Rn0) => { + var rie = XR(); + Rn0.exports = rie && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var VR = Be((joe, jn0) => { + var eie = ru(), nie = E_(), tie = Kc(), uie = Sn0(), iie = YR(), fie = eie.Object; + jn0.exports = iie ? function(H0) { + return typeof H0 == "symbol"; + } : function(H0) { + var z0 = nie("Symbol"); + return tie(z0) && uie(z0.prototype, fie(H0)); + }; + }); + var Mn0 = Be((Goe, Gn0) => { + var xie = ru(), oie = xie.String; + Gn0.exports = function(H0) { + try { + return oie(H0); + } catch { + return "Object"; + } + }; + }); + var qn0 = Be((Moe, Bn0) => { + var aie = ru(), cie = Kc(), sie = Mn0(), vie = aie.TypeError; + Bn0.exports = function(H0) { + if (cie(H0)) + return H0; + throw vie(sie(H0) + " is not a function"); + }; + }); + var Hn0 = Be((Boe, Un0) => { + var lie = qn0(); + Un0.exports = function(H0, z0) { + var xr = H0[z0]; + return xr == null ? void 0 : lie(xr); + }; + }); + var Yn0 = Be((qoe, Xn0) => { + var bie = ru(), zR = k_(), KR = Kc(), WR = S2(), pie = bie.TypeError; + Xn0.exports = function(H0, z0) { + var xr, gr; + if (z0 === "string" && KR(xr = H0.toString) && !WR(gr = zR(xr, H0)) || KR(xr = H0.valueOf) && !WR(gr = zR(xr, H0)) || z0 !== "string" && KR(xr = H0.toString) && !WR(gr = zR(xr, H0))) + return gr; + throw pie("Can't convert object to primitive value"); + }; + }); + var zn0 = Be((Uoe, Vn0) => { + Vn0.exports = false; + }); + var g_ = Be((Hoe, Wn0) => { + var Kn0 = ru(), mie = Object.defineProperty; + Wn0.exports = function(H0, z0) { + try { + mie(Kn0, H0, { value: z0, configurable: true, writable: true }); + } catch { + Kn0[H0] = z0; + } + return z0; + }; + }); + var F_ = Be((Xoe, $n0) => { + var _ie = ru(), yie = g_(), Jn0 = "__core-js_shared__", hie = _ie[Jn0] || yie(Jn0, {}); + $n0.exports = hie; + }); + var JR = Be((Yoe, Qn0) => { + var die = zn0(), Zn0 = F_(); + (Qn0.exports = function(H0, z0) { + return Zn0[H0] || (Zn0[H0] = z0 !== void 0 ? z0 : {}); + })("versions", []).push({ version: "3.22.2", mode: die ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var et0 = Be((Voe, rt0) => { + var kie = ru(), wie = qR(), Eie = kie.Object; + rt0.exports = function(H0) { + return Eie(wie(H0)); + }; + }); + var r1 = Be((zoe, nt0) => { + var Sie = zc(), gie = et0(), Fie = Sie({}.hasOwnProperty); + nt0.exports = Object.hasOwn || function(z0, xr) { + return Fie(gie(z0), xr); + }; + }); + var $R = Be((Koe, tt0) => { + var Tie = zc(), Oie = 0, Iie = Math.random(), Aie = Tie(1 .toString); + tt0.exports = function(H0) { + return "Symbol(" + (H0 === void 0 ? "" : H0) + ")_" + Aie(++Oie + Iie, 36); + }; + }); + var at0 = Be((Woe, ot0) => { + var Nie = ru(), Cie = JR(), ut0 = r1(), Pie = $R(), it0 = XR(), xt0 = YR(), g2 = Cie("wks"), xv = Nie.Symbol, ft0 = xv && xv.for, Die = xt0 ? xv : xv && xv.withoutSetter || Pie; + ot0.exports = function(H0) { + if (!ut0(g2, H0) || !(it0 || typeof g2[H0] == "string")) { + var z0 = "Symbol." + H0; + it0 && ut0(xv, H0) ? g2[H0] = xv[H0] : xt0 && ft0 ? g2[H0] = ft0(z0) : g2[H0] = Die(z0); + } + return g2[H0]; + }; + }); + var lt0 = Be((Joe, vt0) => { + var Lie = ru(), Rie = k_(), ct0 = S2(), st0 = VR(), jie = Hn0(), Gie = Yn0(), Mie = at0(), Bie = Lie.TypeError, qie = Mie("toPrimitive"); + vt0.exports = function(H0, z0) { + if (!ct0(H0) || st0(H0)) + return H0; + var xr = jie(H0, qie), gr; + if (xr) { + if (z0 === void 0 && (z0 = "default"), gr = Rie(xr, H0, z0), !ct0(gr) || st0(gr)) + return gr; + throw Bie("Can't convert object to primitive value"); + } + return z0 === void 0 && (z0 = "number"), Gie(H0, z0); + }; + }); + var ZR = Be(($oe, bt0) => { + var Uie = lt0(), Hie = VR(); + bt0.exports = function(H0) { + var z0 = Uie(H0, "string"); + return Hie(z0) ? z0 : z0 + ""; + }; + }); + var _t0 = Be((Zoe, mt0) => { + var Xie = ru(), pt0 = S2(), QR = Xie.document, Yie = pt0(QR) && pt0(QR.createElement); + mt0.exports = function(H0) { + return Yie ? QR.createElement(H0) : {}; + }; + }); + var rj = Be((Qoe, yt0) => { + var Vie = fv(), zie = Qs(), Kie = _t0(); + yt0.exports = !Vie && !zie(function() { + return Object.defineProperty(Kie("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var ej = Be((dt0) => { + var Wie = fv(), Jie = k_(), $ie = on0(), Zie = GR(), Qie = w_(), rfe = ZR(), efe = r1(), nfe = rj(), ht0 = Object.getOwnPropertyDescriptor; + dt0.f = Wie ? ht0 : function(z0, xr) { + if (z0 = Qie(z0), xr = rfe(xr), nfe) + try { + return ht0(z0, xr); + } catch { + } + if (efe(z0, xr)) + return Zie(!Jie($ie.f, z0, xr), z0[xr]); + }; + }); + var wt0 = Be((eae, kt0) => { + var tfe = fv(), ufe = Qs(); + kt0.exports = tfe && ufe(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var nj = Be((nae, St0) => { + var Et0 = ru(), ife = S2(), ffe = Et0.String, xfe = Et0.TypeError; + St0.exports = function(H0) { + if (ife(H0)) + return H0; + throw xfe(ffe(H0) + " is not an object"); + }; + }); + var xj = Be((Ft0) => { + var ofe = ru(), afe = fv(), cfe = rj(), sfe = wt0(), T_ = nj(), gt0 = ZR(), vfe = ofe.TypeError, tj = Object.defineProperty, lfe = Object.getOwnPropertyDescriptor, uj = "enumerable", ij = "configurable", fj = "writable"; + Ft0.f = afe ? sfe ? function(z0, xr, gr) { + if (T_(z0), xr = gt0(xr), T_(gr), typeof z0 == "function" && xr === "prototype" && "value" in gr && fj in gr && !gr[fj]) { + var de = lfe(z0, xr); + de && de[fj] && (z0[xr] = gr.value, gr = { configurable: ij in gr ? gr[ij] : de[ij], enumerable: uj in gr ? gr[uj] : de[uj], writable: false }); + } + return tj(z0, xr, gr); + } : tj : function(z0, xr, gr) { + if (T_(z0), xr = gt0(xr), T_(gr), cfe) + try { + return tj(z0, xr, gr); + } catch { + } + if ("get" in gr || "set" in gr) + throw vfe("Accessors not supported"); + return "value" in gr && (z0[xr] = gr.value), z0; + }; + }); + var O_ = Be((uae, Tt0) => { + var bfe = fv(), pfe = xj(), mfe = GR(); + Tt0.exports = bfe ? function(H0, z0, xr) { + return pfe.f(H0, z0, mfe(1, xr)); + } : function(H0, z0, xr) { + return H0[z0] = xr, H0; + }; + }); + var aj = Be((iae, Ot0) => { + var _fe = zc(), yfe = Kc(), oj = F_(), hfe = _fe(Function.toString); + yfe(oj.inspectSource) || (oj.inspectSource = function(H0) { + return hfe(H0); + }); + Ot0.exports = oj.inspectSource; + }); + var Nt0 = Be((fae, At0) => { + var dfe = ru(), kfe = Kc(), wfe = aj(), It0 = dfe.WeakMap; + At0.exports = kfe(It0) && /native code/.test(wfe(It0)); + }); + var Dt0 = Be((xae, Pt0) => { + var Efe = JR(), Sfe = $R(), Ct0 = Efe("keys"); + Pt0.exports = function(H0) { + return Ct0[H0] || (Ct0[H0] = Sfe(H0)); + }; + }); + var cj = Be((oae, Lt0) => { + Lt0.exports = {}; + }); + var qt0 = Be((aae, Bt0) => { + var gfe = Nt0(), Mt0 = ru(), sj = zc(), Ffe = S2(), Tfe = O_(), vj = r1(), lj = F_(), Ofe = Dt0(), Ife = cj(), Rt0 = "Object already initialized", pj = Mt0.TypeError, Afe = Mt0.WeakMap, I_, a4, A_, Nfe = function(H0) { + return A_(H0) ? a4(H0) : I_(H0, {}); + }, Cfe = function(H0) { + return function(z0) { + var xr; + if (!Ffe(z0) || (xr = a4(z0)).type !== H0) + throw pj("Incompatible receiver, " + H0 + " required"); + return xr; + }; + }; + gfe || lj.state ? (e1 = lj.state || (lj.state = new Afe()), jt0 = sj(e1.get), bj = sj(e1.has), Gt0 = sj(e1.set), I_ = function(H0, z0) { + if (bj(e1, H0)) + throw new pj(Rt0); + return z0.facade = H0, Gt0(e1, H0, z0), z0; + }, a4 = function(H0) { + return jt0(e1, H0) || {}; + }, A_ = function(H0) { + return bj(e1, H0); + }) : (ov = Ofe("state"), Ife[ov] = true, I_ = function(H0, z0) { + if (vj(H0, ov)) + throw new pj(Rt0); + return z0.facade = H0, Tfe(H0, ov, z0), z0; + }, a4 = function(H0) { + return vj(H0, ov) ? H0[ov] : {}; + }, A_ = function(H0) { + return vj(H0, ov); + }); + var e1, jt0, bj, Gt0, ov; + Bt0.exports = { set: I_, get: a4, has: A_, enforce: Nfe, getterFor: Cfe }; + }); + var Xt0 = Be((cae, Ht0) => { + var mj = fv(), Pfe = r1(), Ut0 = Function.prototype, Dfe = mj && Object.getOwnPropertyDescriptor, _j = Pfe(Ut0, "name"), Lfe = _j && function() { + }.name === "something", Rfe = _j && (!mj || mj && Dfe(Ut0, "name").configurable); + Ht0.exports = { EXISTS: _j, PROPER: Lfe, CONFIGURABLE: Rfe }; + }); + var Wt0 = Be((sae, Kt0) => { + var jfe = ru(), Yt0 = Kc(), Gfe = r1(), Vt0 = O_(), Mfe = g_(), Bfe = aj(), zt0 = qt0(), qfe = Xt0().CONFIGURABLE, Ufe = zt0.get, Hfe = zt0.enforce, Xfe = String(String).split("String"); + (Kt0.exports = function(H0, z0, xr, gr) { + var de = gr ? !!gr.unsafe : false, Ve = gr ? !!gr.enumerable : false, De = gr ? !!gr.noTargetGet : false, Ke = gr && gr.name !== void 0 ? gr.name : z0, tn; + if (Yt0(xr) && (String(Ke).slice(0, 7) === "Symbol(" && (Ke = "[" + String(Ke).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!Gfe(xr, "name") || qfe && xr.name !== Ke) && Vt0(xr, "name", Ke), tn = Hfe(xr), tn.source || (tn.source = Xfe.join(typeof Ke == "string" ? Ke : ""))), H0 === jfe) { + Ve ? H0[z0] = xr : Mfe(z0, xr); + return; + } else + de ? !De && H0[z0] && (Ve = true) : delete H0[z0]; + Ve ? H0[z0] = xr : Vt0(H0, z0, xr); + })(Function.prototype, "toString", function() { + return Yt0(this) && Ufe(this).source || Bfe(this); + }); + }); + var yj = Be((vae, Jt0) => { + var Yfe = Math.ceil, Vfe = Math.floor; + Jt0.exports = function(H0) { + var z0 = +H0; + return z0 !== z0 || z0 === 0 ? 0 : (z0 > 0 ? Vfe : Yfe)(z0); + }; + }); + var Zt0 = Be((lae, $t0) => { + var zfe = yj(), Kfe = Math.max, Wfe = Math.min; + $t0.exports = function(H0, z0) { + var xr = zfe(H0); + return xr < 0 ? Kfe(xr + z0, 0) : Wfe(xr, z0); + }; + }); + var ru0 = Be((bae, Qt0) => { + var Jfe = yj(), $fe = Math.min; + Qt0.exports = function(H0) { + return H0 > 0 ? $fe(Jfe(H0), 9007199254740991) : 0; + }; + }); + var nu0 = Be((pae, eu0) => { + var Zfe = ru0(); + eu0.exports = function(H0) { + return Zfe(H0.length); + }; + }); + var iu0 = Be((mae, uu0) => { + var Qfe = w_(), rxe = Zt0(), exe = nu0(), tu0 = function(H0) { + return function(z0, xr, gr) { + var de = Qfe(z0), Ve = exe(de), De = rxe(gr, Ve), Ke; + if (H0 && xr != xr) { + for (; Ve > De; ) + if (Ke = de[De++], Ke != Ke) + return true; + } else + for (; Ve > De; De++) + if ((H0 || De in de) && de[De] === xr) + return H0 || De || 0; + return !H0 && -1; + }; + }; + uu0.exports = { includes: tu0(true), indexOf: tu0(false) }; + }); + var ou0 = Be((_ae, xu0) => { + var nxe = zc(), hj = r1(), txe = w_(), uxe = iu0().indexOf, ixe = cj(), fu0 = nxe([].push); + xu0.exports = function(H0, z0) { + var xr = txe(H0), gr = 0, de = [], Ve; + for (Ve in xr) + !hj(ixe, Ve) && hj(xr, Ve) && fu0(de, Ve); + for (; z0.length > gr; ) + hj(xr, Ve = z0[gr++]) && (~uxe(de, Ve) || fu0(de, Ve)); + return de; + }; + }); + var cu0 = Be((yae, au0) => { + au0.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var vu0 = Be((su0) => { + var fxe = ou0(), xxe = cu0(), oxe = xxe.concat("length", "prototype"); + su0.f = Object.getOwnPropertyNames || function(z0) { + return fxe(z0, oxe); + }; + }); + var bu0 = Be((lu0) => { + lu0.f = Object.getOwnPropertySymbols; + }); + var mu0 = Be((kae, pu0) => { + var axe = E_(), cxe = zc(), sxe = vu0(), vxe = bu0(), lxe = nj(), bxe = cxe([].concat); + pu0.exports = axe("Reflect", "ownKeys") || function(z0) { + var xr = sxe.f(lxe(z0)), gr = vxe.f; + return gr ? bxe(xr, gr(z0)) : xr; + }; + }); + var hu0 = Be((wae, yu0) => { + var _u0 = r1(), pxe = mu0(), mxe = ej(), _xe = xj(); + yu0.exports = function(H0, z0, xr) { + for (var gr = pxe(z0), de = _xe.f, Ve = mxe.f, De = 0; De < gr.length; De++) { + var Ke = gr[De]; + !_u0(H0, Ke) && !(xr && _u0(xr, Ke)) && de(H0, Ke, Ve(z0, Ke)); + } + }; + }); + var ku0 = Be((Eae, du0) => { + var yxe = Qs(), hxe = Kc(), dxe = /#|\.prototype\./, c4 = function(H0, z0) { + var xr = wxe[kxe(H0)]; + return xr == Sxe ? true : xr == Exe ? false : hxe(z0) ? yxe(z0) : !!z0; + }, kxe = c4.normalize = function(H0) { + return String(H0).replace(dxe, ".").toLowerCase(); + }, wxe = c4.data = {}, Exe = c4.NATIVE = "N", Sxe = c4.POLYFILL = "P"; + du0.exports = c4; + }); + var Eu0 = Be((Sae, wu0) => { + var dj = ru(), gxe = ej().f, Fxe = O_(), Txe = Wt0(), Oxe = g_(), Ixe = hu0(), Axe = ku0(); + wu0.exports = function(H0, z0) { + var xr = H0.target, gr = H0.global, de = H0.stat, Ve, De, Ke, tn, Qn, rt; + if (gr ? De = dj : de ? De = dj[xr] || Oxe(xr, {}) : De = (dj[xr] || {}).prototype, De) + for (Ke in z0) { + if (Qn = z0[Ke], H0.noTargetGet ? (rt = gxe(De, Ke), tn = rt && rt.value) : tn = De[Ke], Ve = Axe(gr ? Ke : xr + (de ? "." : "#") + Ke, H0.forced), !Ve && tn !== void 0) { + if (typeof Qn == typeof tn) + continue; + Ixe(Qn, tn); + } + (H0.sham || tn && tn.sham) && Fxe(Qn, "sham", true), Txe(De, Ke, Qn, H0); + } + }; + }); + var Su0 = Be(() => { + var Nxe = Eu0(), Cxe = ru(); + Nxe({ global: true }, { globalThis: Cxe }); + }); + var gu0 = Be(() => { + Su0(); + }); + var soe = Be((Iae, zu0) => { + gu0(); + var Zq = Object.defineProperty, Pxe = Object.getOwnPropertyDescriptor, Qq = Object.getOwnPropertyNames, Dxe = Object.prototype.hasOwnProperty, C_ = (H0, z0) => function() { + return H0 && (z0 = (0, H0[Qq(H0)[0]])(H0 = 0)), z0; + }, eu = (H0, z0) => function() { + return z0 || (0, H0[Qq(H0)[0]])((z0 = { exports: {} }).exports, z0), z0.exports; + }, rU = (H0, z0) => { + for (var xr in z0) + Zq(H0, xr, { get: z0[xr], enumerable: true }); + }, Lxe = (H0, z0, xr, gr) => { + if (z0 && typeof z0 == "object" || typeof z0 == "function") + for (let de of Qq(z0)) + !Dxe.call(H0, de) && de !== xr && Zq(H0, de, { get: () => z0[de], enumerable: !(gr = Pxe(z0, de)) || gr.enumerable }); + return H0; + }, eU = (H0) => Lxe(Zq({}, "__esModule", { value: true }), H0), Pt = C_({ ""() { + } }), Fu0 = eu({ "src/common/parser-create-error.js"(H0, z0) { + "use strict"; + Pt(); + function xr(gr, de) { + let Ve = new SyntaxError(gr + " (" + de.start.line + ":" + de.start.column + ")"); + return Ve.loc = de, Ve; + } + z0.exports = xr; + } }), Tu0 = {}; + rU(Tu0, { EOL: () => Sj, arch: () => Rxe, cpus: () => Du0, default: () => Mu0, endianness: () => Ou0, freemem: () => Cu0, getNetworkInterfaces: () => Gu0, hostname: () => Iu0, loadavg: () => Au0, networkInterfaces: () => ju0, platform: () => jxe, release: () => Ru0, tmpDir: () => wj, tmpdir: () => Ej, totalmem: () => Pu0, type: () => Lu0, uptime: () => Nu0 }); + function Ou0() { + if (typeof N_ > "u") { + var H0 = new ArrayBuffer(2), z0 = new Uint8Array(H0), xr = new Uint16Array(H0); + if (z0[0] = 1, z0[1] = 2, xr[0] === 258) + N_ = "BE"; + else if (xr[0] === 513) + N_ = "LE"; + else + throw new Error("unable to figure out endianess"); + } + return N_; + } + function Iu0() { + return typeof globalThis.location < "u" ? globalThis.location.hostname : ""; + } + function Au0() { + return []; + } + function Nu0() { + return 0; + } + function Cu0() { + return Number.MAX_VALUE; + } + function Pu0() { + return Number.MAX_VALUE; + } + function Du0() { + return []; + } + function Lu0() { + return "Browser"; + } + function Ru0() { + return typeof globalThis.navigator < "u" ? globalThis.navigator.appVersion : ""; + } + function ju0() { + } + function Gu0() { + } + function Rxe() { + return "javascript"; + } + function jxe() { + return "browser"; + } + function wj() { + return "/tmp"; + } + var N_, Ej, Sj, Mu0, Gxe = C_({ "node-modules-polyfills:os"() { + Pt(), Ej = wj, Sj = ` +`, Mu0 = { EOL: Sj, tmpdir: Ej, tmpDir: wj, networkInterfaces: ju0, getNetworkInterfaces: Gu0, release: Ru0, type: Lu0, cpus: Du0, totalmem: Pu0, freemem: Cu0, uptime: Nu0, loadavg: Au0, hostname: Iu0, endianness: Ou0 }; + } }), Mxe = eu({ "node-modules-polyfills-commonjs:os"(H0, z0) { + Pt(); + var xr = (Gxe(), eU(Tu0)); + if (xr && xr.default) { + z0.exports = xr.default; + for (let gr in xr) + z0.exports[gr] = xr[gr]; + } else + xr && (z0.exports = xr); + } }), Bxe = eu({ "node_modules/detect-newline/index.js"(H0, z0) { + "use strict"; + Pt(); + var xr = (gr) => { + if (typeof gr != "string") + throw new TypeError("Expected a string"); + let de = gr.match(/(?:\r?\n)/g) || []; + if (de.length === 0) + return; + let Ve = de.filter((Ke) => Ke === `\r +`).length, De = de.length - Ve; + return Ve > De ? `\r +` : ` +`; + }; + z0.exports = xr, z0.exports.graceful = (gr) => typeof gr == "string" && xr(gr) || ` +`; + } }), qxe = eu({ "node_modules/jest-docblock/build/index.js"(H0) { + "use strict"; + Pt(), Object.defineProperty(H0, "__esModule", { value: true }), H0.extract = au, H0.parse = Kt, H0.parseWithComments = Zi, H0.print = Ln, H0.strip = En; + function z0() { + let fn = Mxe(); + return z0 = function() { + return fn; + }, fn; + } + function xr() { + let fn = gr(Bxe()); + return xr = function() { + return fn; + }, fn; + } + function gr(fn) { + return fn && fn.__esModule ? fn : { default: fn }; + } + var de = /\*\/$/, Ve = /^\/\*\*/, De = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, Ke = /(^|\s+)\/\/([^\r\n]*)/g, tn = /^(\r?\n)+/, Qn = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g, rt = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g, tt = /(\r?\n|^) *\* ?/g, Ot = []; + function au(fn) { + let Ht = fn.match(De); + return Ht ? Ht[0].trimLeft() : ""; + } + function En(fn) { + let Ht = fn.match(De); + return Ht && Ht[0] ? fn.substring(Ht[0].length) : fn; + } + function Kt(fn) { + return Zi(fn).pragmas; + } + function Zi(fn) { + let Ht = (0, xr().default)(fn) || z0().EOL; + fn = fn.replace(Ve, "").replace(de, "").replace(tt, "$1"); + let S7 = ""; + for (; S7 !== fn; ) + S7 = fn, fn = fn.replace(Qn, "".concat(Ht, "$1 $2").concat(Ht)); + fn = fn.replace(tn, "").trimRight(); + let Dt = /* @__PURE__ */ Object.create(null), ks = fn.replace(rt, "").replace(tn, "").trimRight(), In; + for (; In = rt.exec(fn); ) { + let Wc = In[2].replace(Ke, ""); + typeof Dt[In[1]] == "string" || Array.isArray(Dt[In[1]]) ? Dt[In[1]] = Ot.concat(Dt[In[1]], Wc) : Dt[In[1]] = Wc; + } + return { comments: ks, pragmas: Dt }; + } + function Ln(fn) { + let { comments: Ht = "", pragmas: S7 = {} } = fn, Dt = (0, xr().default)(Ht) || z0().EOL, ks = "/**", In = " *", Wc = " */", Ai = Object.keys(S7), li = Ai.map((g7) => Tn(g7, S7[g7])).reduce((g7, av) => g7.concat(av), []).map((g7) => In + " " + g7 + Dt).join(""); + if (!Ht) { + if (Ai.length === 0) + return ""; + if (Ai.length === 1 && !Array.isArray(S7[Ai[0]])) { + let g7 = S7[Ai[0]]; + return "".concat(ks, " ").concat(Tn(Ai[0], g7)[0]).concat(Wc); + } + } + let jt = Ht.split(Dt).map((g7) => "".concat(In, " ").concat(g7)).join(Dt) + Dt; + return ks + Dt + (Ht ? jt : "") + (Ht && Ai.length ? In + Dt : "") + li + Wc; + } + function Tn(fn, Ht) { + return Ot.concat(Ht).map((S7) => "@".concat(fn, " ").concat(S7).trim()); + } + } }), Uxe = eu({ "src/common/end-of-line.js"(H0, z0) { + "use strict"; + Pt(); + function xr(De) { + let Ke = De.indexOf("\r"); + return Ke >= 0 ? De.charAt(Ke + 1) === ` +` ? "crlf" : "cr" : "lf"; + } + function gr(De) { + switch (De) { + case "cr": + return "\r"; + case "crlf": + return `\r +`; + default: + return ` +`; + } + } + function de(De, Ke) { + let tn; + switch (Ke) { + case ` +`: + tn = /\n/g; + break; + case "\r": + tn = /\r/g; + break; + case `\r +`: + tn = /\r\n/g; + break; + default: + throw new Error('Unexpected "eol" '.concat(JSON.stringify(Ke), ".")); + } + let Qn = De.match(tn); + return Qn ? Qn.length : 0; + } + function Ve(De) { + return De.replace(/\r\n?/g, ` +`); + } + z0.exports = { guessEndOfLine: xr, convertEndOfLineToChars: gr, countEndOfLineChars: de, normalizeEndOfLine: Ve }; + } }), Hxe = eu({ "src/language-js/utils/get-shebang.js"(H0, z0) { + "use strict"; + Pt(); + function xr(gr) { + if (!gr.startsWith("#!")) + return ""; + let de = gr.indexOf(` +`); + return de === -1 ? gr : gr.slice(0, de); + } + z0.exports = xr; + } }), Xxe = eu({ "src/language-js/pragma.js"(H0, z0) { + "use strict"; + Pt(); + var { parseWithComments: xr, strip: gr, extract: de, print: Ve } = qxe(), { normalizeEndOfLine: De } = Uxe(), Ke = Hxe(); + function tn(tt) { + let Ot = Ke(tt); + Ot && (tt = tt.slice(Ot.length + 1)); + let au = de(tt), { pragmas: En, comments: Kt } = xr(au); + return { shebang: Ot, text: tt, pragmas: En, comments: Kt }; + } + function Qn(tt) { + let Ot = Object.keys(tn(tt).pragmas); + return Ot.includes("prettier") || Ot.includes("format"); + } + function rt(tt) { + let { shebang: Ot, text: au, pragmas: En, comments: Kt } = tn(tt), Zi = gr(au), Ln = Ve({ pragmas: Object.assign({ format: "" }, En), comments: Kt.trimStart() }); + return (Ot ? "".concat(Ot, ` +`) : "") + De(Ln) + (Zi.startsWith(` +`) ? ` +` : ` + +`) + Zi; + } + z0.exports = { hasPragma: Qn, insertPragma: rt }; + } }), Yxe = eu({ "src/utils/is-non-empty-array.js"(H0, z0) { + "use strict"; + Pt(); + function xr(gr) { + return Array.isArray(gr) && gr.length > 0; + } + z0.exports = xr; + } }), Bu0 = eu({ "src/language-js/loc.js"(H0, z0) { + "use strict"; + Pt(); + var xr = Yxe(); + function gr(tn, Qn) { + let { ignoreDecorators: rt } = Qn || {}; + if (!rt) { + let tt = tn.declaration && tn.declaration.decorators || tn.decorators; + if (xr(tt)) + return gr(tt[0]); + } + return tn.range ? tn.range[0] : tn.start; + } + function de(tn) { + return tn.range ? tn.range[1] : tn.end; + } + function Ve(tn, Qn) { + let rt = gr(tn); + return Number.isInteger(rt) && rt === gr(Qn); + } + function De(tn, Qn) { + let rt = de(tn); + return Number.isInteger(rt) && rt === de(Qn); + } + function Ke(tn, Qn) { + return Ve(tn, Qn) && De(tn, Qn); + } + z0.exports = { locStart: gr, locEnd: de, hasSameLocStart: Ve, hasSameLoc: Ke }; + } }), Vxe = eu({ "src/language-js/parse/utils/create-parser.js"(H0, z0) { + "use strict"; + Pt(); + var { hasPragma: xr } = Xxe(), { locStart: gr, locEnd: de } = Bu0(); + function Ve(De) { + return De = typeof De == "function" ? { parse: De } : De, Object.assign({ astFormat: "estree", hasPragma: xr, locStart: gr, locEnd: de }, De); + } + z0.exports = Ve; + } }), zxe = eu({ "src/language-js/parse/utils/replace-hashbang.js"(H0, z0) { + "use strict"; + Pt(); + function xr(gr) { + return gr.charAt(0) === "#" && gr.charAt(1) === "!" ? "//" + gr.slice(2) : gr; + } + z0.exports = xr; + } }), Kxe = eu({ "src/language-js/utils/is-ts-keyword-type.js"(H0, z0) { + "use strict"; + Pt(); + function xr(gr) { + let { type: de } = gr; + return de.startsWith("TS") && de.endsWith("Keyword"); + } + z0.exports = xr; + } }), Wxe = eu({ "src/language-js/utils/is-block-comment.js"(H0, z0) { + "use strict"; + Pt(); + var xr = /* @__PURE__ */ new Set(["Block", "CommentBlock", "MultiLine"]), gr = (de) => xr.has(de == null ? void 0 : de.type); + z0.exports = gr; + } }), Jxe = eu({ "src/language-js/utils/is-type-cast-comment.js"(H0, z0) { + "use strict"; + Pt(); + var xr = Wxe(); + function gr(de) { + return xr(de) && de.value[0] === "*" && /@type\b/.test(de.value); + } + z0.exports = gr; + } }), $xe = eu({ "src/utils/get-last.js"(H0, z0) { + "use strict"; + Pt(); + var xr = (gr) => gr[gr.length - 1]; + z0.exports = xr; + } }), qu0 = eu({ "src/language-js/parse/postprocess/visit-node.js"(H0, z0) { + "use strict"; + Pt(); + function xr(gr, de) { + if (Array.isArray(gr)) { + for (let Ve = 0; Ve < gr.length; Ve++) + gr[Ve] = xr(gr[Ve], de); + return gr; + } + if (gr && typeof gr == "object" && typeof gr.type == "string") { + let Ve = Object.keys(gr); + for (let De = 0; De < Ve.length; De++) + gr[Ve[De]] = xr(gr[Ve[De]], de); + return de(gr) || gr; + } + return gr; + } + z0.exports = xr; + } }), Uu0 = eu({ "src/language-js/parse/postprocess/throw-syntax-error.js"(H0, z0) { + "use strict"; + Pt(); + var xr = Fu0(); + function gr(de, Ve) { + let { start: De, end: Ke } = de.loc; + throw xr(Ve, { start: { line: De.line, column: De.column + 1 }, end: { line: Ke.line, column: Ke.column + 1 } }); + } + z0.exports = gr; + } }), Zxe = eu({ "src/language-js/parse/postprocess/typescript.js"(H0, z0) { + "use strict"; + Pt(); + var xr = qu0(), gr = Uu0(); + function de(Ke, tn, Qn) { + let rt = Ke.decorators; + if (!Array.isArray(rt)) + return; + let tt = tn.decorators; + (!Array.isArray(tt) || tt.length !== rt.length || rt.some((Ot) => { + let au = Qn.get(Ot); + return !au || !tt.includes(au); + })) && gr(tn, "Leading decorators must be attached to a class declaration"); + } + function Ve(Ke, tn) { + Ke.kind !== 167 || Ke.modifiers && !Ke.modifiers.some((tt) => tt.kind === 126) || Ke.initializer && tn.value === null && gr(tn, "Abstract property cannot have an initializer"); + } + function De(Ke, tn) { + let { esTreeNodeToTSNodeMap: Qn, tsNodeToESTreeNodeMap: rt } = tn.tsParseResult; + xr(Ke, (tt) => { + let Ot = Qn.get(tt); + if (!Ot) + return; + let au = rt.get(Ot); + au === tt && (de(Ot, au, rt), Ve(Ot, au)); + }); + } + z0.exports = { throwErrorForInvalidNodes: De }; + } }), Qxe = eu({ "src/language-js/parse/postprocess/index.js"(H0, z0) { + "use strict"; + Pt(); + var { locStart: xr, locEnd: gr } = Bu0(), de = Kxe(), Ve = Jxe(), De = $xe(), Ke = qu0(), { throwErrorForInvalidNodes: tn } = Zxe(), Qn = Uu0(); + function rt(En, Kt) { + if (Kt.parser === "typescript" && /@|abstract/.test(Kt.originalText) && tn(En, Kt), Kt.parser !== "typescript" && Kt.parser !== "flow" && Kt.parser !== "acorn" && Kt.parser !== "espree" && Kt.parser !== "meriyah") { + let Ln = /* @__PURE__ */ new Set(); + En = Ke(En, (Tn) => { + Tn.leadingComments && Tn.leadingComments.some(Ve) && Ln.add(xr(Tn)); + }), En = Ke(En, (Tn) => { + if (Tn.type === "ParenthesizedExpression") { + let { expression: fn } = Tn; + if (fn.type === "TypeCastExpression") + return fn.range = Tn.range, fn; + let Ht = xr(Tn); + if (!Ln.has(Ht)) + return fn.extra = Object.assign(Object.assign({}, fn.extra), {}, { parenthesized: true }), fn; + } + }); + } + return En = Ke(En, (Ln) => { + switch (Ln.type) { + case "ChainExpression": + return tt(Ln.expression); + case "LogicalExpression": { + if (Ot(Ln)) + return au(Ln); + break; + } + case "VariableDeclaration": { + let Tn = De(Ln.declarations); + Tn && Tn.init && Zi(Ln, Tn); + break; + } + case "TSParenthesizedType": + return de(Ln.typeAnnotation) || Ln.typeAnnotation.type === "TSThisType" || (Ln.typeAnnotation.range = [xr(Ln), gr(Ln)]), Ln.typeAnnotation; + case "TSTypeParameter": + if (typeof Ln.name == "string") { + let Tn = xr(Ln); + Ln.name = { type: "Identifier", name: Ln.name, range: [Tn, Tn + Ln.name.length] }; + } + break; + case "ObjectExpression": + if (Kt.parser === "typescript") { + let Tn = Ln.properties.find((fn) => fn.type === "Property" && fn.value.type === "TSEmptyBodyFunctionExpression"); + Tn && Qn(Tn.value, "Unexpected token."); + } + break; + case "SequenceExpression": { + let Tn = De(Ln.expressions); + Ln.range = [xr(Ln), Math.min(gr(Tn), gr(Ln))]; + break; + } + case "TopicReference": + Kt.__isUsingHackPipeline = true; + break; + case "ExportAllDeclaration": { + let { exported: Tn } = Ln; + if (Kt.parser === "meriyah" && Tn && Tn.type === "Identifier") { + let fn = Kt.originalText.slice(xr(Tn), gr(Tn)); + (fn.startsWith('"') || fn.startsWith("'")) && (Ln.exported = Object.assign(Object.assign({}, Ln.exported), {}, { type: "Literal", value: Ln.exported.name, raw: fn })); + } + break; + } + } + }), En; + function Zi(Ln, Tn) { + Kt.originalText[gr(Tn)] !== ";" && (Ln.range = [xr(Ln), gr(Tn)]); + } + } + function tt(En) { + switch (En.type) { + case "CallExpression": + En.type = "OptionalCallExpression", En.callee = tt(En.callee); + break; + case "MemberExpression": + En.type = "OptionalMemberExpression", En.object = tt(En.object); + break; + case "TSNonNullExpression": + En.expression = tt(En.expression); + break; + } + return En; + } + function Ot(En) { + return En.type === "LogicalExpression" && En.right.type === "LogicalExpression" && En.operator === En.right.operator; + } + function au(En) { + return Ot(En) ? au({ type: "LogicalExpression", operator: En.operator, left: au({ type: "LogicalExpression", operator: En.operator, left: En.left, right: En.right.left, range: [xr(En.left), gr(En.right.left)] }), right: En.right.right, range: [xr(En), gr(En)] }) : En; + } + z0.exports = rt; + } }), Hu0 = {}; + rU(Hu0, { default: () => Xu0 }); + var Xu0, roe = C_({ "node-modules-polyfills:fs"() { + Pt(), Xu0 = {}; + } }), kj = eu({ "node-modules-polyfills-commonjs:fs"(H0, z0) { + Pt(); + var xr = (roe(), eU(Hu0)); + if (xr && xr.default) { + z0.exports = xr.default; + for (let gr in xr) + z0.exports[gr] = xr[gr]; + } else + xr && (z0.exports = xr); + } }), Yu0 = {}; + rU(Yu0, { ALPN_ENABLED: () => Pq, COPYFILE_EXCL: () => CB, COPYFILE_FICLONE: () => DB, COPYFILE_FICLONE_FORCE: () => RB, DH_CHECK_P_NOT_PRIME: () => Aq, DH_CHECK_P_NOT_SAFE_PRIME: () => Iq, DH_NOT_SUITABLE_GENERATOR: () => Cq, DH_UNABLE_TO_CHECK_GENERATOR: () => Nq, E2BIG: () => Ij, EACCES: () => Aj, EADDRINUSE: () => Nj, EADDRNOTAVAIL: () => Cj, EAFNOSUPPORT: () => Pj, EAGAIN: () => Dj, EALREADY: () => Lj, EBADF: () => Rj, EBADMSG: () => jj, EBUSY: () => Gj, ECANCELED: () => Mj, ECHILD: () => Bj, ECONNABORTED: () => qj, ECONNREFUSED: () => Uj, ECONNRESET: () => Hj, EDEADLK: () => Xj, EDESTADDRREQ: () => Yj, EDOM: () => Vj, EDQUOT: () => zj, EEXIST: () => Kj, EFAULT: () => Wj, EFBIG: () => Jj, EHOSTUNREACH: () => $j, EIDRM: () => Zj, EILSEQ: () => Qj, EINPROGRESS: () => rG, EINTR: () => eG, EINVAL: () => nG, EIO: () => tG, EISCONN: () => uG, EISDIR: () => iG, ELOOP: () => fG, EMFILE: () => xG, EMLINK: () => oG, EMSGSIZE: () => aG, EMULTIHOP: () => cG, ENAMETOOLONG: () => sG, ENETDOWN: () => vG, ENETRESET: () => lG, ENETUNREACH: () => bG, ENFILE: () => pG, ENGINE_METHOD_ALL: () => Tq, ENGINE_METHOD_CIPHERS: () => Eq, ENGINE_METHOD_DH: () => dq, ENGINE_METHOD_DIGESTS: () => Sq, ENGINE_METHOD_DSA: () => hq, ENGINE_METHOD_EC: () => wq, ENGINE_METHOD_NONE: () => Oq, ENGINE_METHOD_PKEY_ASN1_METHS: () => Fq, ENGINE_METHOD_PKEY_METHS: () => gq, ENGINE_METHOD_RAND: () => kq, ENGINE_METHOD_RSA: () => yq, ENOBUFS: () => mG, ENODATA: () => _G, ENODEV: () => yG, ENOENT: () => hG, ENOEXEC: () => dG, ENOLCK: () => kG, ENOLINK: () => wG, ENOMEM: () => EG, ENOMSG: () => SG, ENOPROTOOPT: () => gG, ENOSPC: () => FG, ENOSR: () => TG, ENOSTR: () => OG, ENOSYS: () => IG, ENOTCONN: () => AG, ENOTDIR: () => NG, ENOTEMPTY: () => CG, ENOTSOCK: () => PG, ENOTSUP: () => DG, ENOTTY: () => LG, ENXIO: () => RG, EOPNOTSUPP: () => jG, EOVERFLOW: () => GG, EPERM: () => MG, EPIPE: () => BG, EPROTO: () => qG, EPROTONOSUPPORT: () => UG, EPROTOTYPE: () => HG, ERANGE: () => XG, EROFS: () => YG, ESPIPE: () => VG, ESRCH: () => zG, ESTALE: () => KG, ETIME: () => WG, ETIMEDOUT: () => JG, ETXTBSY: () => $G, EWOULDBLOCK: () => ZG, EXDEV: () => QG, F_OK: () => TB, OPENSSL_VERSION_NUMBER: () => jB, O_APPEND: () => oB, O_CREAT: () => uB, O_DIRECTORY: () => aB, O_DSYNC: () => vB, O_EXCL: () => iB, O_NOCTTY: () => fB, O_NOFOLLOW: () => cB, O_NONBLOCK: () => bB, O_RDONLY: () => MM, O_RDWR: () => qM, O_SYMLINK: () => lB, O_SYNC: () => sB, O_TRUNC: () => xB, O_WRONLY: () => BM, POINT_CONVERSION_COMPRESSED: () => Kq, POINT_CONVERSION_HYBRID: () => Jq, POINT_CONVERSION_UNCOMPRESSED: () => Wq, PRIORITY_ABOVE_NORMAL: () => tM, PRIORITY_BELOW_NORMAL: () => eM, PRIORITY_HIGH: () => uM, PRIORITY_HIGHEST: () => iM, PRIORITY_LOW: () => rM, PRIORITY_NORMAL: () => nM, RSA_NO_PADDING: () => Rq, RSA_PKCS1_OAEP_PADDING: () => jq, RSA_PKCS1_PADDING: () => Dq, RSA_PKCS1_PSS_PADDING: () => Mq, RSA_PSS_SALTLEN_AUTO: () => Uq, RSA_PSS_SALTLEN_DIGEST: () => Bq, RSA_PSS_SALTLEN_MAX_SIGN: () => qq, RSA_SSLV23_PADDING: () => Lq, RSA_X931_PADDING: () => Gq, RTLD_GLOBAL: () => Tj, RTLD_LAZY: () => gj, RTLD_LOCAL: () => Oj, RTLD_NOW: () => Fj, R_OK: () => OB, SIGABRT: () => sM, SIGALRM: () => dM, SIGBUS: () => lM, SIGCHLD: () => wM, SIGCONT: () => EM, SIGFPE: () => bM, SIGHUP: () => fM, SIGILL: () => aM, SIGINFO: () => LM, SIGINT: () => xM, SIGIO: () => DM, SIGIOT: () => vM, SIGKILL: () => pM, SIGPIPE: () => hM, SIGPROF: () => CM, SIGQUIT: () => oM, SIGSEGV: () => _M, SIGSTOP: () => SM, SIGSYS: () => RM, SIGTERM: () => kM, SIGTRAP: () => cM, SIGTSTP: () => gM, SIGTTIN: () => FM, SIGTTOU: () => TM, SIGURG: () => OM, SIGUSR1: () => mM, SIGUSR2: () => yM, SIGVTALRM: () => NM, SIGWINCH: () => PM, SIGXCPU: () => IM, SIGXFSZ: () => AM, SSL_OP_ALL: () => GB, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: () => MB, SSL_OP_CIPHER_SERVER_PREFERENCE: () => BB, SSL_OP_CISCO_ANYCONNECT: () => qB, SSL_OP_COOKIE_EXCHANGE: () => UB, SSL_OP_CRYPTOPRO_TLSEXT_BUG: () => HB, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: () => XB, SSL_OP_EPHEMERAL_RSA: () => YB, SSL_OP_LEGACY_SERVER_CONNECT: () => VB, SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: () => zB, SSL_OP_MICROSOFT_SESS_ID_BUG: () => KB, SSL_OP_MSIE_SSLV2_RSA_PADDING: () => WB, SSL_OP_NETSCAPE_CA_DN_BUG: () => JB, SSL_OP_NETSCAPE_CHALLENGE_BUG: () => $B, SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: () => ZB, SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: () => QB, SSL_OP_NO_COMPRESSION: () => rq, SSL_OP_NO_QUERY_MTU: () => eq, SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: () => nq, SSL_OP_NO_SSLv2: () => tq, SSL_OP_NO_SSLv3: () => uq, SSL_OP_NO_TICKET: () => iq, SSL_OP_NO_TLSv1: () => fq, SSL_OP_NO_TLSv1_1: () => xq, SSL_OP_NO_TLSv1_2: () => oq, SSL_OP_PKCS1_CHECK_1: () => aq, SSL_OP_PKCS1_CHECK_2: () => cq, SSL_OP_SINGLE_DH_USE: () => sq, SSL_OP_SINGLE_ECDH_USE: () => vq, SSL_OP_SSLEAY_080_CLIENT_DH_BUG: () => lq, SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: () => bq, SSL_OP_TLS_BLOCK_PADDING_BUG: () => pq, SSL_OP_TLS_D5_BUG: () => mq, SSL_OP_TLS_ROLLBACK_BUG: () => _q, S_IFBLK: () => rB, S_IFCHR: () => QM, S_IFDIR: () => ZM, S_IFIFO: () => eB, S_IFLNK: () => nB, S_IFMT: () => JM, S_IFREG: () => $M, S_IFSOCK: () => tB, S_IRGRP: () => dB, S_IROTH: () => SB, S_IRUSR: () => mB, S_IRWXG: () => hB, S_IRWXO: () => EB, S_IRWXU: () => pB, S_IWGRP: () => kB, S_IWOTH: () => gB, S_IWUSR: () => _B, S_IXGRP: () => wB, S_IXOTH: () => FB, S_IXUSR: () => yB, TLS1_1_VERSION: () => Yq, TLS1_2_VERSION: () => Vq, TLS1_3_VERSION: () => zq, TLS1_VERSION: () => Xq, UV_DIRENT_BLOCK: () => WM, UV_DIRENT_CHAR: () => KM, UV_DIRENT_DIR: () => XM, UV_DIRENT_FIFO: () => VM, UV_DIRENT_FILE: () => HM, UV_DIRENT_LINK: () => YM, UV_DIRENT_SOCKET: () => zM, UV_DIRENT_UNKNOWN: () => UM, UV_FS_COPYFILE_EXCL: () => NB, UV_FS_COPYFILE_FICLONE: () => PB, UV_FS_COPYFILE_FICLONE_FORCE: () => LB, UV_FS_SYMLINK_DIR: () => jM, UV_FS_SYMLINK_JUNCTION: () => GM, W_OK: () => IB, X_OK: () => AB, default: () => Vu0, defaultCipherList: () => $q, defaultCoreCipherList: () => Hq }); + var gj, Fj, Tj, Oj, Ij, Aj, Nj, Cj, Pj, Dj, Lj, Rj, jj, Gj, Mj, Bj, qj, Uj, Hj, Xj, Yj, Vj, zj, Kj, Wj, Jj, $j, Zj, Qj, rG, eG, nG, tG, uG, iG, fG, xG, oG, aG, cG, sG, vG, lG, bG, pG, mG, _G, yG, hG, dG, kG, wG, EG, SG, gG, FG, TG, OG, IG, AG, NG, CG, PG, DG, LG, RG, jG, GG, MG, BG, qG, UG, HG, XG, YG, VG, zG, KG, WG, JG, $G, ZG, QG, rM, eM, nM, tM, uM, iM, fM, xM, oM, aM, cM, sM, vM, lM, bM, pM, mM, _M, yM, hM, dM, kM, wM, EM, SM, gM, FM, TM, OM, IM, AM, NM, CM, PM, DM, LM, RM, jM, GM, MM, BM, qM, UM, HM, XM, YM, VM, zM, KM, WM, JM, $M, ZM, QM, rB, eB, nB, tB, uB, iB, fB, xB, oB, aB, cB, sB, vB, lB, bB, pB, mB, _B, yB, hB, dB, kB, wB, EB, SB, gB, FB, TB, OB, IB, AB, NB, CB, PB, DB, LB, RB, jB, GB, MB, BB, qB, UB, HB, XB, YB, VB, zB, KB, WB, JB, $B, ZB, QB, rq, eq, nq, tq, uq, iq, fq, xq, oq, aq, cq, sq, vq, lq, bq, pq, mq, _q, yq, hq, dq, kq, wq, Eq, Sq, gq, Fq, Tq, Oq, Iq, Aq, Nq, Cq, Pq, Dq, Lq, Rq, jq, Gq, Mq, Bq, qq, Uq, Hq, Xq, Yq, Vq, zq, Kq, Wq, Jq, $q, Vu0, eoe = C_({ "node-modules-polyfills:constants"() { + Pt(), gj = 1, Fj = 2, Tj = 8, Oj = 4, Ij = 7, Aj = 13, Nj = 48, Cj = 49, Pj = 47, Dj = 35, Lj = 37, Rj = 9, jj = 94, Gj = 16, Mj = 89, Bj = 10, qj = 53, Uj = 61, Hj = 54, Xj = 11, Yj = 39, Vj = 33, zj = 69, Kj = 17, Wj = 14, Jj = 27, $j = 65, Zj = 90, Qj = 92, rG = 36, eG = 4, nG = 22, tG = 5, uG = 56, iG = 21, fG = 62, xG = 24, oG = 31, aG = 40, cG = 95, sG = 63, vG = 50, lG = 52, bG = 51, pG = 23, mG = 55, _G = 96, yG = 19, hG = 2, dG = 8, kG = 77, wG = 97, EG = 12, SG = 91, gG = 42, FG = 28, TG = 98, OG = 99, IG = 78, AG = 57, NG = 20, CG = 66, PG = 38, DG = 45, LG = 25, RG = 6, jG = 102, GG = 84, MG = 1, BG = 32, qG = 100, UG = 43, HG = 41, XG = 34, YG = 30, VG = 29, zG = 3, KG = 70, WG = 101, JG = 60, $G = 26, ZG = 35, QG = 18, rM = 19, eM = 10, nM = 0, tM = -7, uM = -14, iM = -20, fM = 1, xM = 2, oM = 3, aM = 4, cM = 5, sM = 6, vM = 6, lM = 10, bM = 8, pM = 9, mM = 30, _M = 11, yM = 31, hM = 13, dM = 14, kM = 15, wM = 20, EM = 19, SM = 17, gM = 18, FM = 21, TM = 22, OM = 16, IM = 24, AM = 25, NM = 26, CM = 27, PM = 28, DM = 23, LM = 29, RM = 12, jM = 1, GM = 2, MM = 0, BM = 1, qM = 2, UM = 0, HM = 1, XM = 2, YM = 3, VM = 4, zM = 5, KM = 6, WM = 7, JM = 61440, $M = 32768, ZM = 16384, QM = 8192, rB = 24576, eB = 4096, nB = 40960, tB = 49152, uB = 512, iB = 2048, fB = 131072, xB = 1024, oB = 8, aB = 1048576, cB = 256, sB = 128, vB = 4194304, lB = 2097152, bB = 4, pB = 448, mB = 256, _B = 128, yB = 64, hB = 56, dB = 32, kB = 16, wB = 8, EB = 7, SB = 4, gB = 2, FB = 1, TB = 0, OB = 4, IB = 2, AB = 1, NB = 1, CB = 1, PB = 2, DB = 2, LB = 4, RB = 4, jB = 269488175, GB = 2147485780, MB = 262144, BB = 4194304, qB = 32768, UB = 8192, HB = 2147483648, XB = 2048, YB = 0, VB = 4, zB = 0, KB = 0, WB = 0, JB = 0, $B = 0, ZB = 0, QB = 0, rq = 131072, eq = 4096, nq = 65536, tq = 0, uq = 33554432, iq = 16384, fq = 67108864, xq = 268435456, oq = 134217728, aq = 0, cq = 0, sq = 0, vq = 0, lq = 0, bq = 0, pq = 0, mq = 0, _q = 8388608, yq = 1, hq = 2, dq = 4, kq = 8, wq = 2048, Eq = 64, Sq = 128, gq = 512, Fq = 1024, Tq = 65535, Oq = 0, Iq = 2, Aq = 1, Nq = 4, Cq = 8, Pq = 1, Dq = 1, Lq = 2, Rq = 3, jq = 4, Gq = 5, Mq = 6, Bq = -1, qq = -2, Uq = -2, Hq = "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA", Xq = 769, Yq = 770, Vq = 771, zq = 772, Kq = 2, Wq = 4, Jq = 6, $q = "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA", Vu0 = { RTLD_LAZY: gj, RTLD_NOW: Fj, RTLD_GLOBAL: Tj, RTLD_LOCAL: Oj, E2BIG: Ij, EACCES: Aj, EADDRINUSE: Nj, EADDRNOTAVAIL: Cj, EAFNOSUPPORT: Pj, EAGAIN: Dj, EALREADY: Lj, EBADF: Rj, EBADMSG: jj, EBUSY: Gj, ECANCELED: Mj, ECHILD: Bj, ECONNABORTED: qj, ECONNREFUSED: Uj, ECONNRESET: Hj, EDEADLK: Xj, EDESTADDRREQ: Yj, EDOM: Vj, EDQUOT: zj, EEXIST: Kj, EFAULT: Wj, EFBIG: Jj, EHOSTUNREACH: $j, EIDRM: Zj, EILSEQ: Qj, EINPROGRESS: rG, EINTR: eG, EINVAL: nG, EIO: tG, EISCONN: uG, EISDIR: iG, ELOOP: fG, EMFILE: xG, EMLINK: oG, EMSGSIZE: aG, EMULTIHOP: cG, ENAMETOOLONG: sG, ENETDOWN: vG, ENETRESET: lG, ENETUNREACH: bG, ENFILE: pG, ENOBUFS: mG, ENODATA: _G, ENODEV: yG, ENOENT: hG, ENOEXEC: dG, ENOLCK: kG, ENOLINK: wG, ENOMEM: EG, ENOMSG: SG, ENOPROTOOPT: gG, ENOSPC: FG, ENOSR: TG, ENOSTR: OG, ENOSYS: IG, ENOTCONN: AG, ENOTDIR: NG, ENOTEMPTY: CG, ENOTSOCK: PG, ENOTSUP: DG, ENOTTY: LG, ENXIO: RG, EOPNOTSUPP: jG, EOVERFLOW: GG, EPERM: MG, EPIPE: BG, EPROTO: qG, EPROTONOSUPPORT: UG, EPROTOTYPE: HG, ERANGE: XG, EROFS: YG, ESPIPE: VG, ESRCH: zG, ESTALE: KG, ETIME: WG, ETIMEDOUT: JG, ETXTBSY: $G, EWOULDBLOCK: ZG, EXDEV: QG, PRIORITY_LOW: rM, PRIORITY_BELOW_NORMAL: eM, PRIORITY_NORMAL: nM, PRIORITY_ABOVE_NORMAL: tM, PRIORITY_HIGH: uM, PRIORITY_HIGHEST: iM, SIGHUP: fM, SIGINT: xM, SIGQUIT: oM, SIGILL: aM, SIGTRAP: cM, SIGABRT: sM, SIGIOT: vM, SIGBUS: lM, SIGFPE: bM, SIGKILL: pM, SIGUSR1: mM, SIGSEGV: _M, SIGUSR2: yM, SIGPIPE: hM, SIGALRM: dM, SIGTERM: kM, SIGCHLD: wM, SIGCONT: EM, SIGSTOP: SM, SIGTSTP: gM, SIGTTIN: FM, SIGTTOU: TM, SIGURG: OM, SIGXCPU: IM, SIGXFSZ: AM, SIGVTALRM: NM, SIGPROF: CM, SIGWINCH: PM, SIGIO: DM, SIGINFO: LM, SIGSYS: RM, UV_FS_SYMLINK_DIR: jM, UV_FS_SYMLINK_JUNCTION: GM, O_RDONLY: MM, O_WRONLY: BM, O_RDWR: qM, UV_DIRENT_UNKNOWN: UM, UV_DIRENT_FILE: HM, UV_DIRENT_DIR: XM, UV_DIRENT_LINK: YM, UV_DIRENT_FIFO: VM, UV_DIRENT_SOCKET: zM, UV_DIRENT_CHAR: KM, UV_DIRENT_BLOCK: WM, S_IFMT: JM, S_IFREG: $M, S_IFDIR: ZM, S_IFCHR: QM, S_IFBLK: rB, S_IFIFO: eB, S_IFLNK: nB, S_IFSOCK: tB, O_CREAT: uB, O_EXCL: iB, O_NOCTTY: fB, O_TRUNC: xB, O_APPEND: oB, O_DIRECTORY: aB, O_NOFOLLOW: cB, O_SYNC: sB, O_DSYNC: vB, O_SYMLINK: lB, O_NONBLOCK: bB, S_IRWXU: pB, S_IRUSR: mB, S_IWUSR: _B, S_IXUSR: yB, S_IRWXG: hB, S_IRGRP: dB, S_IWGRP: kB, S_IXGRP: wB, S_IRWXO: EB, S_IROTH: SB, S_IWOTH: gB, S_IXOTH: FB, F_OK: TB, R_OK: OB, W_OK: IB, X_OK: AB, UV_FS_COPYFILE_EXCL: NB, COPYFILE_EXCL: CB, UV_FS_COPYFILE_FICLONE: PB, COPYFILE_FICLONE: DB, UV_FS_COPYFILE_FICLONE_FORCE: LB, COPYFILE_FICLONE_FORCE: RB, OPENSSL_VERSION_NUMBER: jB, SSL_OP_ALL: GB, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: MB, SSL_OP_CIPHER_SERVER_PREFERENCE: BB, SSL_OP_CISCO_ANYCONNECT: qB, SSL_OP_COOKIE_EXCHANGE: UB, SSL_OP_CRYPTOPRO_TLSEXT_BUG: HB, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: XB, SSL_OP_EPHEMERAL_RSA: YB, SSL_OP_LEGACY_SERVER_CONNECT: VB, SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: zB, SSL_OP_MICROSOFT_SESS_ID_BUG: KB, SSL_OP_MSIE_SSLV2_RSA_PADDING: WB, SSL_OP_NETSCAPE_CA_DN_BUG: JB, SSL_OP_NETSCAPE_CHALLENGE_BUG: $B, SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: ZB, SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: QB, SSL_OP_NO_COMPRESSION: rq, SSL_OP_NO_QUERY_MTU: eq, SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: nq, SSL_OP_NO_SSLv2: tq, SSL_OP_NO_SSLv3: uq, SSL_OP_NO_TICKET: iq, SSL_OP_NO_TLSv1: fq, SSL_OP_NO_TLSv1_1: xq, SSL_OP_NO_TLSv1_2: oq, SSL_OP_PKCS1_CHECK_1: aq, SSL_OP_PKCS1_CHECK_2: cq, SSL_OP_SINGLE_DH_USE: sq, SSL_OP_SINGLE_ECDH_USE: vq, SSL_OP_SSLEAY_080_CLIENT_DH_BUG: lq, SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: bq, SSL_OP_TLS_BLOCK_PADDING_BUG: pq, SSL_OP_TLS_D5_BUG: mq, SSL_OP_TLS_ROLLBACK_BUG: _q, ENGINE_METHOD_RSA: yq, ENGINE_METHOD_DSA: hq, ENGINE_METHOD_DH: dq, ENGINE_METHOD_RAND: kq, ENGINE_METHOD_EC: wq, ENGINE_METHOD_CIPHERS: Eq, ENGINE_METHOD_DIGESTS: Sq, ENGINE_METHOD_PKEY_METHS: gq, ENGINE_METHOD_PKEY_ASN1_METHS: Fq, ENGINE_METHOD_ALL: Tq, ENGINE_METHOD_NONE: Oq, DH_CHECK_P_NOT_SAFE_PRIME: Iq, DH_CHECK_P_NOT_PRIME: Aq, DH_UNABLE_TO_CHECK_GENERATOR: Nq, DH_NOT_SUITABLE_GENERATOR: Cq, ALPN_ENABLED: Pq, RSA_PKCS1_PADDING: Dq, RSA_SSLV23_PADDING: Lq, RSA_NO_PADDING: Rq, RSA_PKCS1_OAEP_PADDING: jq, RSA_X931_PADDING: Gq, RSA_PKCS1_PSS_PADDING: Mq, RSA_PSS_SALTLEN_DIGEST: Bq, RSA_PSS_SALTLEN_MAX_SIGN: qq, RSA_PSS_SALTLEN_AUTO: Uq, defaultCoreCipherList: Hq, TLS1_VERSION: Xq, TLS1_1_VERSION: Yq, TLS1_2_VERSION: Vq, TLS1_3_VERSION: zq, POINT_CONVERSION_COMPRESSED: Kq, POINT_CONVERSION_UNCOMPRESSED: Wq, POINT_CONVERSION_HYBRID: Jq, defaultCipherList: $q }; + } }), noe = eu({ "node-modules-polyfills-commonjs:constants"(H0, z0) { + Pt(); + var xr = (eoe(), eU(Yu0)); + if (xr && xr.default) { + z0.exports = xr.default; + for (let gr in xr) + z0.exports[gr] = xr[gr]; + } else + xr && (z0.exports = xr); + } }), toe = eu({ "node_modules/flow-parser/flow_parser.js"(H0) { + Pt(), function(z0) { + "use strict"; + var xr = "member_property_expression", gr = 8483, de = 12538, Ve = "children", De = "predicate_expression", Ke = "??", tn = "Identifier", Qn = 64311, rt = 192, tt = 11710, Ot = 122654, au = 110947, En = 67591, Kt = "!", Zi = "directive", Ln = 163, Tn = "block", fn = 126553, Ht = 12735, S7 = 68096, Dt = "params", ks = 93071, In = 122, Wc = 72767, Ai = 181, li = "for_statement", jt = 128, g7 = "start", av = 43867, nU = "_method", P_ = 70414, cv = ">", Qi = "catch_body", D_ = 120121, tU = "the end of an expression statement (`;`)", L_ = 124907, uU = 1027, s4 = 126558, rf = "jsx_fragment", R_ = 42527, j_ = "decorators", G_ = 82943, M_ = 71039, B_ = 110882, q_ = 67514, iU = 8472, fU = "update", U_ = 12783, H_ = 12438, X_ = 12352, Y_ = 8511, V_ = 42961, F2 = "method", v4 = 120713, ef = 8191, nf = "function_param", z_ = 67871, F7 = "throw", K_ = 11507, tf = "class_extends", W_ = 43470, uf = "object_key_literal", J_ = 71903, $_ = 65437, ff = "jsx_child", Z_ = 43311, l4 = 119995, Q_ = 67637, b4 = 68116, ry = 66204, ey = 65470, xU = "<<=", ny = "e", ty = 67391, p4 = 11631, m4 = 69956, sv = "tparams", uy = 66735, iy = 64217, fy = 43697, oU = "Invalid binary/octal ", xy = -43, oy = 43255, _4 = "do", ay = 43301, xf = "binding_pattern", cy = 120487, of = "jsx_attribute_value_literal", y4 = "package", af = "interface_declaration", sy = 72750, vy = 119892, aU = "tail", cU = -53, cf = 111, sU = 180, ly = 119807, by = 71959, vU = 8206, py = 65613, Jc = "type", my = 55215, _y = -42, sf = "export_default_declaration_decl", h4 = 72970, lU = "filtered_out", yy = 70416, bU = 229, vf = "function_this_param", pU = "module", d4 = "try", hy = 70143, dy = 125183, ky = 70412, d0 = "@])", lf = "binary", mU = "infinity", k4 = "private", wy = 65500, w4 = "has_unknown_members", bf = "pattern_array_rest_element", _U = "Property", ws = "implements", Ey = 12548, yU = 211, pf = "if_alternate_statement", Sy = 124903, gy = 43395, vv = "src/parser/type_parser.ml", Fy = 66915, E4 = 126552, Ty = 120712, S4 = 126555, Oy = 120596, c7 = "raw", T7 = 112, mf = "class_declaration", _f = "statement", Iy = 126624, Ay = 71235, yf = "meta_property", Ny = 44002, Cy = 8467, hf = "class_property_value", Py = 8318, df = "optional_call", Dy = 43761, $c = "kind", kf = "class_identifier", Ly = 69955, Ry = 66378, jy = 120512, Gy = 68220, Xt = 110, My = 123583, T2 = "declare", wf = "typeof_member_identifier", Ef = "catch_clause", By = 11742, qy = 70831, g4 = 8468, Sf = "for_in_assignment_pattern", hU = -32, gf = "object_", Uy = 43262, Hy = "mixins", Ff = "type_param", dU = "visit_trailing_comment", Xy = 71839, O2 = "boolean", Tf = "call", kU = "expected *", Yy = 43010, Vy = 241, Nu = "expression", I2 = "column", zy = 43595, Ky = 43258, Wy = 191456, Of = "member_type_identifier", A2 = 117, Jy = 43754, F4 = 126544, wU = "Assert_failure", $y = 66517, Zy = 42964, If = "enum_number_member", EU = "a string", Qy = 65855, rh = 119993, eh = "opaque", SU = 870530776, nh = 67711, th = 66994, Af = "enum_symbol_body", gU = 185, FU = 219, T4 = "filter", uh = 43615, O4 = 126560, ih = 19903, n1 = "get", fh = 64316, TU = `Fatal error: exception %s +`, I4 = "exported", OU = ">=", Ju = "return", A4 = "members", N4 = 256, xh = 66962, oh = 64279, ah = 67829, IU = "Enum `", AU = "&&=", Nf = "object_property", ch = 67589, Cf = "pattern_object_property", Pf = "template_literal_element", sh = 69551, Ni = 127343600, C4 = 70452, Df = "class_element", vh = "ENOENT", lh = 71131, NU = 200, bh = 120137, ph = 94098, P4 = 72349, CU = 1328, Lf = "function_identifier", mh = 126543, Rf = "jsx_attribute_name", _h = 43487, dr = "@[<2>{ ", PU = "ENOTEMPTY", yh = 65908, hh = 72191, D4 = 120513, dh = 92909, DU = "bound", kh = 162, LU = 172, L4 = 120070, jf = "enum_number_body", Gf = "update_expression", Mf = "spread_element", Bf = "for_in_left_declaration", R4 = 64319, N2 = "%d", wh = 12703, j4 = 11687, RU = "@,))@]", Eh = 42239, qf = "type_cast", Sh = 42508, Uf = "class_implements_interface", gh = 67640, Fh = 605857695, jU = "Cygwin", GU = "buffer.ml", Th = 124908, MU = "handler", Oh = 66207, Ih = 66963, G4 = 11558, BU = "-=", Pn = 113, Ah = 113775, qU = "collect_comments", M4 = 126540, lv = "set", Hf = "assignment_pattern", Cu = "right", Xf = "object_key_identifier", B4 = 120133, Nh = "Invalid number ", Ch = 42963, q4 = 12539, Ph = 68023, Dh = 43798, ti = 100, Yf = "pattern_literal", Vf = "generic_type", UU = "*", Lh = 42783, Rh = 42890, jh = 230, U4 = "else", Gh = 70851, Mh = 69289, HU = "the start of a statement", H4 = "properties", Bh = 43696, qh = 110959, zf = "declare_function", X4 = 120597, Kf = "object_indexer_property_type", Uh = 70492, Hh = 2048, C2 = "arguments", Xr = "comments", Xh = 43042, Zc = 107, Yh = 110575, XU = 161, Vh = 67431, Y4 = "line", P2 = "declaration", nu = "static", Wf = "pattern_identifier", zh = 69958, YU = "the", Kh = "Unix.Unix_error", Wh = 43814, Qc = "annot", Jh = 65786, $h = 66303, Zh = 64967, Qh = 64255, rd = 8584, V4 = 120655, VU = "Stack_overflow", ed = 43700, Jf = "syntax_opt", zU = "/static/", $f = "comprehension", nd = 253, KU = "Not_found", WU = "+=", JU = 235, td = 68680, ud = 66954, id = 64324, fd = 72966, $U = 174, ZU = -1053382366, xd = "rest", Zf = "pattern_array_element", Qf = "jsx_attribute_value_expression", z4 = 65595, rx = "pattern_array_e", QU = 243, od = 43711, ad = "rmdir", K4 = "symbol", cd = 69926, W4 = "*dummy method*", sd = 43741, O7 = "typeParameters", D2 = "const", rH = 1026, eH = 149, vd = 12341, ld = 72847, bd = 66993, nH = 202, Ci = "false", Yt = 106, pd = 120076, md = 186, Pi = 128, _d = 125124, yd = "Fatal error: exception ", J4 = 67593, hd = 69297, dd = 44031, tH = 234, kd = 92927, wd = 68095, $u = 8231, ex = "object_key_computed", nx = "labeled_statement", tx = "function_param_pattern", $4 = 126590, Ed = 65481, Sd = 43442, uH = "collect_comments_opt", ux = "variable_declarator", bv = "_", gd = "compare: functional value", Fd = 67967, pv = "computed", ix = "object_property_type", mt = "id", Td = 126562, t1 = 114, iH = "comment_bounds", Od = 70853, Id = 69247, fx = "class_private_field", Ad = 42237, Nd = 72329, fH = "Invalid_argument", Cd = 113770, Z4 = 94031, Pd = 120092, xx = "declare_class", Dd = 67839, Ld = 72250, xH = "%ni", Rd = 92879, oH = "prototype", Es = "`.", ox = 8287, Q4 = 65344, jd = "&", I7 = "debugger", ax = "type_identifier_reference", aH = "Internal Error: Found private field in object props", cx = "sequence", sx = "call_type_args", cH = 238, Gd = 12348, sH = "++", Md = 68863, Bd = 72001, qd = 70084, Ud = "label", mv = -45, vx = "jsx_opening_attribute", Hd = 43583, r8 = "%F", Xd = 43784, Yd = 113791, lx = "call_arguments", e8 = 126503, Vd = 43743, Zu = "0", zd = 119967, n8 = 126538, bx = "new_", _v = 449540197, Kd = 64109, Wd = 68466, Jd = 177983, wt = 248, px = "program", Xe = "@,]@]", $d = 68031, mx = "function_type", _x = "type_", t8 = 8484, Zd = 67382, Qd = 42537, rk = 226, ek = 66559, nk = 42993, tk = 64274, u8 = 71236, uk = 120069, ik = 72105, fk = 126570, xk = "object", ok = 42959, A7 = "break", yx = "for_of_statement", ak = 43695, i8 = 126551, ck = 66955, f8 = 126520, sk = 66499, L2 = 1024, vk = 67455, lk = 43018, vH = 198, x8 = 126522, hx = "function_declaration", bk = 73064, dx = "await", pk = 92728, mk = 70418, _k = 68119, kx = "function_rest_param", yk = 42653, o8 = 11703, bi = "left", a8 = 70449, hk = 184, wx = "declare_type_alias", Ex = 16777215, c8 = 70302, lH = "/=", bH = "|=", dk = 55242, kk = 126583, wk = 124927, Ek = 124895, Sk = 72959, gk = 65497, pH = "Invalid legacy octal ", rs = "typeof", Fk = "explicit_type", Sx = "statement_list", Tk = 65495, gx = "class_method", s8 = 8526, v8 = 244, Ok = 67861, l8 = 119994, b8 = "enum", mH = 2147483647, Ik = 69762, _H = 208, R2 = "in", Ak = 11702, p8 = 67638, yH = ", characters ", Nk = 70753, yv = "super", Ck = 92783, Pk = 8304, m8 = 126504, Fx = "import_specifier", Dk = 68324, Lk = 101589, Rk = 67646, Tx = "expression_or_spread", jk = 74879, Gk = 43792, _8 = 43260, Mk = 93052, hH = "{", Bk = 65574, qk = 125258, hv = 224, Ox = "jsx_element_name_member_expression", j2 = "instanceof", Uk = 69599, Hk = 43560, Ix = "function_expression", y8 = 223, Xk = 72242, Yk = 11498, Vk = 126467, zk = 73112, dH = 140, h8 = 70107, Kk = 13311, Ax = "jsx_children", d8 = 126548, Wk = 63743, k8 = 43471, Nx = "jsx_expression", Jk = 69864, $k = 71998, Zk = 72e3, w8 = 126591, E8 = 12592, Cx = "type_params", Qk = 126578, S8 = 126537, kr = "{ ", rw = 123627, Px = "jsx_spread_attribute", Ce = "@,", ew = 70161, nw = 187, g8 = 126500, Dx = "label_identifier", tw = 42606, Lx = "number_literal_type", F8 = 42999, uw = 64310, kH = -594953737, iw = 122623, T8 = "hasUnknownMembers", Rx = "array", wH = "^=", jx = "enum_string_member", fw = 65536, xw = 65615, es = "void", ow = 65135, Z0 = ")", EH = 138, aw = 70002, G2 = "let", cw = 70271, sw = "nan", W = "@[%s =@ ", vw = 194559, lw = 110579, Gx = "binding_type_identifier", bw = 42735, SH = 57343, Qu = "/", Mx = "for_in_statement_lhs", pw = 43503, mw = 8516, _w = 66938, yw = "ENOTDIR", gH = "TypeParameterInstantiation", hw = 69749, dw = 65381, kw = 83526, dv = "number", ww = 12447, FH = 154, O8 = 70286, Ew = 72160, Sw = 43493, TH = 206, Bx = "enum_member_identifier", I8 = 70280, M2 = "function", A8 = 70162, gw = 255, Fw = 67702, Tw = 66771, Ow = 70312, OH = "|", Iw = 93759, IH = "End_of_file", Aw = 43709, u1 = "new", AH = "Failure", B2 = "local", Nw = 101631, N8 = 8489, C8 = "with", qx = "enum_declaration", Cw = 218, Pw = 70457, P8 = 8488, Ux = "member", D8 = 64325, Dw = 247, Lw = 70448, Rw = 69967, L8 = 126535, jw = 71934, Hx = "import_named_specifier", Gw = 65312, Mw = 126619, Xx = "type_annotation", NH = 56320, Bw = 131071, qw = 120770, Uw = 67002, Yx = "with_", Vx = "statement_fork_point", CH = "finalizer", Hw = 12320, PH = "elements", zx = "literal", Xw = 68607, Yw = 8507, R8 = "each", DH = "Sys_error", Vw = 123535, zw = 130, Kx = "bigint_literal_type", Kw = 64829, j8 = 11727, Ww = 120538, Wx = "member_private_name", Jx = "type_alias", LH = "Printexc.handle_uncaught_exception", G8 = 126556, $x = "tagged_template", Zx = "pattern_object_property_literal_key", Jw = 43881, M8 = 72192, $w = 67826, Zw = 124910, Qw = 66511, ns = "int_of_string", rE = 43249, nr = "None", RH = "FunctionTypeParam", ui = "name", eE = 70285, s7 = 103, nE = 120744, Qx = 12288, ro = "intersection_type", tE = 11679, B8 = 11559, jH = "callee", uE = 71295, iE = 70018, fE = 11567, xE = 42954, GH = "*-/", r7 = "predicate", eo = "expression_statement", MH = "regexp", oE = 65479, BH = 132, aE = 11389, qu = "optional", qH = -602162310, z = "@]", cE = 120003, sE = 72249, UH = "Unexpected ", vE = 73008, q8 = "finally", no = "toplevel_statement_list", HH = "end", lE = 178207, XH = "&=", bE = 70301, YH = "%Li", pE = 72161, mE = 69746, _E = 70460, yE = 12799, U8 = 65535, hE = "loc", dE = 69375, kE = 43518, VH = 205, wE = 65487, to = "while_", EE = 183983, uo = "typeof_expression", SE = -673950933, gE = 42559, zH = "||", FE = 124926, TE = 55291, io = "jsx_element_name_identifier", fo = 8239, H8 = "mixed", KH = 136, OE = -253313196, IE = 11734, X8 = 67827, AE = 68287, NE = 119976, WH = "**", J = " =", Y8 = 888960333, CE = 124902, xo = "tuple_type", JH = 227, PE = 70726, DE = 73111, V8 = 126602, LE = 126529, oo = "object_property_value_type", N0 = "%a", $H = ", ", ZH = "<=", RE = 69423, QH = 199, z8 = 11695, jE = 12294, K8 = 11711, GE = 67583, rX = 710, W8 = 126584, ME = 68295, BE = 72703, qE = "prefix", eX = -80, J8 = 69415, UE = 11492, q2 = "class", $8 = 65575, N7 = "continue", HE = 65663, nX = 2047, Z8 = 68120, XE = 71086, YE = 19967, Di = 782176664, VE = 120779, Q8 = 8486, pi = " ", tX = "||=", uX = "Undefined_recursive_module", zE = 66863, iX = "RestElement", r3 = 126634, KE = 66377, WE = 74751, ao = "jsx_element_name_namespaced", JE = 43334, $E = 66815, C7 = "typeAnnotation", ZE = 120126, co = "array_element", e3 = 64285, fX = 189, xX = "**=", Yr = "()", QE = 8543, so = "declare_module", vo = "export_batch_specifier", oX = "%i", aX = ">>>=", rS = 68029, cX = "importKind", P7 = "extends", eS = 64296, n3 = 43259, nS = 71679, tS = 64913, uS = 119969, iS = 94175, fS = 72440, t3 = 65141, lo = "function_", xS = 43071, oS = 42888, aS = 69807, cu = "variance", ts = 123, bo = "import_default_specifier", sX = ">>>", cS = 43764, mi = "pattern", sS = 71947, vS = 70655, kv = "consequent", vX = 4096, lS = 183, bS = 68447, pS = 65473, us = 255, mS = 73648, po = "call_type_arg", mo = 8238, _S = 68899, yS = 93026, Ye = "@[<2>[", hS = 110588, _o = "comment", lX = 191, yo = "switch_case", bX = 175, dS = 71942, ho = "do_while", wv = "constructor", kS = 43587, wS = 43586, Eu = "yield", ES = 67462, pX = "fd ", SS = -61, gS = "target", u3 = 72272, U2 = "var", mX = "impltype", i3 = 70108, H2 = "0o", FS = 119972, TS = 92991, f3 = 70441, x3 = 8450, OS = 120074, IS = 66717, ko = "interface_type", o3 = 43880, An = "%B", AS = 111355, Ev = 5760, NS = 11630, a3 = 126499, CS = "of", _X = ">>", yX = "Popping lex mode from empty stack", c3 = 120629, is = 108, PS = 43002, hX = "%=", s3 = 126539, DS = 126502, wo = "template_literal", LS = "src/parser/statement_parser.ml", RS = ": Not a directory", dX = "b", jS = 67461, GS = 11519, kX = "src/parser/flow_lexer.ml", wX = "Out_of_memory", MS = 120570, Eo = 12287, BS = 126534, qS = "index out of bounds", US = 73029, v3 = "_bigarr02", l3 = 126571, EX = "))", So = "for_statement_init", SX = "supertype", go = "class_property", b3 = "}", i1 = "this", Fo = "declare_module_exports", gX = "@", To = "union_type", Li = 65535, Oo = "variance_opt", HS = 94032, FX = 222, XS = 42124, Io = "this_expression", Ao = "jsx_element", TX = "typeArguments", YS = 65019, VS = 125251, zS = 64111, KS = 8471, No = "typeof_qualified_identifier", WS = 70497, OX = "EnumDefaultedMember", Co = 8202, JS = 66927, D7 = "switch", $S = 69634, Po = "unary_expression", ZS = 71215, IX = 126, QS = 67679, rg = 65597, AX = 207, eg = 120686, p3 = 72163, ng = 67001, tg = 42962, ug = 64262, X2 = 124, Do = 65279, ig = 126495, NX = 169, fg = 71944, CX = -10, m3 = "alternate", xg = 92975, og = 65489, Y2 = 252, ag = 67807, cg = 43187, sg = 68850, _3 = "export", vg = 66383, PX = "===", Lo = ".", Ro = "type_args", DX = 147, lg = 92159, LX = 240, jo = "jsx_element_name", bg = 72283, pg = 171, f1 = 116, mg = 110587, y3 = 70279, _g = 75075, yg = 65338, Go = "function_params", hg = 126627, RX = 213, h3 = 73065, dg = 71352, d3 = 119970, kg = 70005, wg = 12295, k3 = 120771, Eg = 71494, Sg = 11557, gg = 42191, jX = "flags", Fg = 68437, Tg = 70730, Mo = "optional_indexed_access", Bo = "pattern_object_p", Og = 42785, qo = "nullable_type", Bn = "value", Ig = 12343, Ag = 68415, Ng = 11694, GX = 221, Cg = 11726, Uo = "syntax", Pg = 119964, MX = "&&", Dg = 68497, Lg = 73097, fs5 = "null", w3 = 126523, Rg = 120084, jg = 126601, Gg = 8454, Mg = "expressions", Bg = 72144, V2 = '"', Zr = "(@[", BX = 1022, qX = 231, qg = 170, E3 = 12448, Ug = 68786, S3 = "<", UX = 931, HX = "(", XX = 196, YX = 2048, g3 = "an identifier", F3 = 69959, Hg = 68799, VX = "leadingComments", Xg = 72969, Yg = 182, Vg = 100351, Ho = "enum_defaulted_member", zg = 69839, Kg = 94026, Wg = 209, zX = ">>=", Jg = 131, T3 = 12336, v7 = "empty", KX = 331416730, WX = 204, $g = 70479, Zg = 69487, Qg = 101640, rF = 43123, JX = "([^/]+)", O3 = 8319, $X = 165, Xo = "object_type_property_setter", ZX = 909, eF = 15, nF = 12591, br = 125, tF = 92735, QX = "cases", uF = 183969, x1 = "bigint", rY = "Division_by_zero", iF = 67071, fF = 12329, I3 = 120004, xF = 69414, A3 = "if", oF = 126519, aF = "immediately within another function.", cF = 55238, sF = 126498, eY = "qualification", vF = 66256, wr = "@ }@]", z2 = 118, N3 = 11565, C3 = 120122, Yo = "pattern_object_rest_property", lF = 74862, P3 = "'", bF = -26065557, pF = 124911, Sv = 119, L7 = 104, Vo = "assignment", mF = 8457, K2 = "from", _F = 64321, yF = 113817, hF = 65629, dF = 42655, Ri = 102, kF = 43137, wF = 11502, a0 = ";@ ", R7 = 101, zo = "pattern_array_element_pattern", Wn = "body", Ko = "jsx_member_expression", EF = 65547, Wo = "jsx_attribute_value", Jo = "jsx_namespaced_name", D3 = 72967, SF = 126550, gv = 254, gF = 43807, FF = 43738, L3 = 126589, R3 = 8455, j3 = 126628, TF = 11670, nY = "*=", G3 = 120134, $o = "conditional", tY = " : flags Open_text and Open_binary are not compatible", M3 = 119965, OF = 69890, IF = 72817, AF = 164, NF = 43822, B3 = 69744, uY = "\\\\", CF = 43638, PF = 93047, DF = "AssignmentPattern", q3 = 64322, LF = 123190, iY = 188, Zo = "object_spread_property_type", RF = 70783, jF = 113663, fY = 160, U3 = 42622, H3 = 43823, ji = "init", Fv = 109, GF = 66503, X3 = "proto", MF = 74649, Qo = "optional_member", BF = 40981, qF = 120654, v = "@ ", ra = "enum_boolean_body", ea = "export_named_specifier", na = "declare_interface", UF = 70451, ta = "pattern_object_property_computed_key", Y3 = -97, V3 = 120539, z3 = 64317, HF = 12543, ua = "export_named_declaration_specifier", XF = 43359, K3 = 126530, W3 = 72713, YF = 113800, xY = 195, VF = 72367, zF = 72103, KF = 70278, ia = "if_consequent_statement", W2 = -85, J3 = 126496, fa = "try_catch", xa = "computed_key", oa = "class_", WF = 173823, aa = "pattern_object_property_identifier_key", oY = "f", ca = "arrow_function", $3 = 8485, JF = 126546, sa = "enum_boolean_member", $F = 94177, J2 = "delete", ZF = 232, aY = "blocks", va = "pattern_array_rest_element_pattern", QF = 78894, Z3 = 66512, rT = 94111, Tv = "string", Ss = "test", eT = 69572, nT = 66463, tT = 66335, uT = 72348, iT = 73061, o1 = ":", la = "enum_body", fT = 110590, ba = "function_this_param_type", xT = 215, oT = 77823, cY = "minus", sY = 201, aT = 119980, pa = "private_name", ma = "object_key", _a = "function_param_type", vY = "<<", cT = 11718, a1 = "as", lY = "delegate", Gi = "true", sT = 67413, Q3 = 70854, vT = 73439, lT = 43776, bT = 71723, pT = 11505, mT = 214, _T = 120628, yT = 43513, ya = "jsx_attribute_name_namespaced", r6 = 120127, e6 = "Map.bal", n6 = "any", bY = "@[", pY = "camlinternalMod.ml", t6 = 126559, Uu = "import", u6 = 70404, ha = "jsx_spread_child", hT = 233, dT = 67897, kT = 119974, Hu = 8233, wT = 68405, i6 = 239, mY = "attributes", _Y = 173, da = "object_internal_slot_property_type", ET = 71351, ST = 242, gT = 67643, f6 = "shorthand", ka = "for_in_statement", FT = 126463, TT = 71338, OT = 69445, IT = 65370, AT = 73055, NT = 167, CT = 64911, wa = "pattern_object_property_pattern", yY = 212, hY = 197, x6 = 126579, PT = 64286, DT = "explicitType", LT = 67669, RT = 43866, dY = "Sys_blocked_io", o6 = "catch", jT = 123197, GT = 64466, MT = 65140, BT = 73030, qT = 69404, a6 = "protected", kY = 8204, UT = 67504, HT = 193, $2 = 246, XT = 43713, c6 = 120571, Ea = "array_type", wY = "%u", Sa = "export_default_declaration", ga = "class_expression", EY = "quasi", Vt = "%S", YT = 8525, s6 = 126515, VT = 120485, v6 = 43519, l6 = 120745, b6 = 94178, zT = 126588, zn = 127, KT = 66855, SY = "@{", gY = "visit_leading_comment", WT = 67742, FY = " : flags Open_rdonly and Open_wronly are not compatible", JT = 120144, p6 = "returnType", c1 = -744106340, s1 = 240, Fa = "-", m6 = 8469, gs = "async", _6 = 126521, $T = 72095, y6 = 216, TY = " : file already exists", ZT = 178205, QT = 8449, h6 = 94179, rO = 42774, d6 = "case", eO = 66965, nO = 66431, OY = 190, Ta = "declare_export_declaration", Z2 = "targs", Oa = "type_identifier", tO = 64284, uO = 43013, k6 = 43815, Ia = "function_body_any", iO = 66966, w6 = 120687, fO = 66939, xO = 66978, IY = 168, E6 = "public", oO = 68115, aO = 43712, S6 = 65598, g6 = 126547, cO = 110591, Aa = "indexed_access", AY = 12520, e7 = "interface", NY = `(Program not linked with -g, cannot print stack backtrace) +`, v1 = -46, Na = "string_literal_type", Ca = "import_namespace_specifier", sO = 120132, F6 = 11735, vO = 67505, T6 = 119893, O6 = "bool", Q2 = 1e3, _i = "default", lO = 236, C = "", bO = "exportKind", CY = "trailingComments", I6 = "^", pO = 71983, mO = 8348, _O = 66977, yO = 65594, Pa = "logical", Da = "jsx_member_expression_identifier", A6 = 210, PY = "cooked", La = "for_of_left_declaration", Ov = 63, hO = 72202, l7 = "argument", dO = 12442, kO = 43645, N6 = 120085, wO = 42539, C6 = 126468, DY = 166, LY = "Match_failure", EO = 68191, Su = "src/parser/flow_ast.ml", P6 = 11647, Ra = "declare_variable", xs = "+", SO = 71127, D6 = 120145, ja = "declare_export_declaration_decl", L6 = 64318, RY = 179, Ga = "class_implements", jY = "!=", GY = "inexact", MY = "%li", BY = 237, rl = "a", R6 = 73062, gO = 178, Ma = 65278, Ba = "function_rest_param_type", FO = 77711, TO = 70066, OO = 43714, qY = -696510241, j6 = 70480, IO = 69748, AO = 113788, NO = 94207, UY = `\r +`, qa = "class_body", CO = 126651, PO = 68735, DO = 43273, G6 = 119996, M6 = 67644, HY = 224, Ua = "catch_clause_pattern", Ha = "boolean_literal_type", B6 = 126554, q6 = 126557, LO = 113807, U6 = 126536, XY = "%", Iv = "property", RO = 71956, YY = "#", jO = 123213, el = "meta", Xa = "for_of_assignment_pattern", Ya = "if_statement", GO = 66421, MO = 8505, BO = 225, nl = 250, qO = 100343, H6 = "Literal", UO = 42887, Av = 115, VY = ";", HO = 1255, XO = "=", YO = 126566, VO = 93823, Va = "opaque_type", zY = "!==", za = "jsx_attribute", Ka = "type_annotation_hint", Mi = 32768, zO = 73727, KY = "range", WY = 245, KO = "jsError", X6 = 70006, WO = 43492, Y6 = "@]}", tr = "(Some ", JO = 8477, JY = 129, $O = 71487, V6 = 126564, $Y = ` +`, ZO = 126514, QO = 70080, Wa = "generic_identifier_type", rI = 66811, Ja = "typeof_identifier", ZY = "~", eI = 65007, $a = "pattern_object_rest_property_pattern", nI = 194, QY = 1039100673, tI = 66461, uI = 70319, z6 = 11719, iI = 72271, Wt = -48, Za = "enum_string_body", fI = 70461, Qa = "export_named_declaration", xI = 110930, oI = 92862, rV = "??=", aI = 70440, K6 = "while", su = "camlinternalFormat.ml", cI = 43782, eV = 203, sI = 173791, vI = 11263, lI = 1114111, bI = 42969, W6 = 70750, rc = "jsx_identifier", pI = 70105, mI = 43014, _I = 11564, ec = "typeof_type", nV = "EEXIST", yI = 64847, hI = 71167, dI = 42511, kI = 72712, wI = 92995, EI = 43704, tl = 121, nc = "object_call_property_type", SI = 64433, ul = "operator", J6 = 68296, tc = "class_decorator", uc = 120, ic = "for_of_statement_lhs", gI = 11623, FI = 67004, TI = 71999, OI = 70708, II = 512, AI = 110927, NI = 71423, tV = 32752, CI = 93951, PI = 12292, fc = "object_type", $6 = "types", DI = 110580, uV = 177, LI = 126633, RI = 12686, xc = 8286, iV = 144, jI = 73647, fV = 228, Z6 = 70855, l1 = "0x", GI = 70366, MI = ` +`, oc = "variable_declaration", BI = 65276, Q6 = 119981, qI = 71945, UI = 43887, j7 = 105, HI = 8335, XI = 123565, YI = 69505, VI = 70187, ac = "jsx_attribute_name_identifier", cc = "source", sc = "pattern_object_property_key", rp = 65548, zI = 66175, KI = 92766, vc = "pattern_assignment_pattern", lc = "object_type_property_getter", ep = 8305, G7 = "generator", np = "for", xV = "PropertyDefinition", oV = "--", vu = -36, WI = "mkdir", JI = 68223, bc = "generic_qualified_identifier_type", $I = 11686, pc = "jsx_closing_element", ZI = 43790, tp = ": No such file or directory", QI = 69687, rA = 66348, up = 72162, eA = 43388, nA = 72768, tA = 68351, h = "<2>", ip = 64297, uA = 125259, iA = 220, zr = ",@ ", aV = "win32", fp = 70281, mc = "member_property_identifier", fA = 68149, xA = 68111, oA = 71450, aA = 43009, _c = "member_property", cA = 73458, yi = "identifier", sA = 67423, vA = 66775, lA = 110951, cV = "Internal Error: Found object private prop", yc = "super_expression", hc = "jsx_opening_element", bA = 177976, dc = "variable_declarator_pattern", kc = "pattern_expression", wc = "jsx_member_expression_object", pA = 68252, mA = 77808, Nv = -835925911, Ec = "import_declaration", _A = 55203, sV = "Pervasives.do_at_exit", vV = "utf8", ii = "key", yA = 43702, Sc = "spread_property", xp = 126563, hA = 863850040, dA = 70106, op = 67592, gc = "function_expression_or_method", kA = 71958, Fc = "for_init_declaration", wA = 71955, ap = 123214, EA = 68479, lV = "==", SA = 43019, gA = 123180, cp = 217, Cv = "specifiers", Tc = "function_body", FA = 69622, sp = 8487, TA = 43641, bV = "Unexpected token `", pV = "v", OA = 123135, IA = 69295, vp = 120093, AA = 8521, lp = 43642, mV = 176; + function Ku0(t, n, e, i, x) { + if (i <= n) + for (var c = 1; c <= x; c++) + e[i + c] = t[n + c]; + else + for (var c = x; c >= 1; c--) + e[i + c] = t[n + c]; + return 0; + } + function Wu0(t) { + for (var n = [0]; t !== 0; ) { + for (var e = t[1], i = 1; i < e.length; i++) + n.push(e[i]); + t = t[2]; + } + return n; + } + function Ju0(t, n, e) { + var i = new Array(e + 1); + i[0] = 0; + for (var x = 1, c = n + 1; x <= e; x++, c++) + i[x] = t[c]; + return i; + } + function NA(t, n, e) { + var i = String.fromCharCode; + if (n == 0 && e <= vX && e == t.length) + return i.apply(null, t); + for (var x = C; 0 < e; n += L2, e -= L2) + x += i.apply(null, t.slice(n, n + Math.min(e, L2))); + return x; + } + function bp(t) { + if (z0.Uint8Array) + var n = new z0.Uint8Array(t.l); + else + var n = new Array(t.l); + for (var e = t.c, i = e.length, x = 0; x < i; x++) + n[x] = e.charCodeAt(x); + for (i = t.l; x < i; x++) + n[x] = 0; + return t.c = n, t.t = 4, n; + } + function Fs(t, n, e, i, x) { + if (x == 0) + return 0; + if (i == 0 && (x >= e.l || e.t == 2 && x >= e.c.length)) + e.c = t.t == 4 ? NA(t.c, n, x) : n == 0 && t.c.length == x ? t.c : t.c.substr(n, x), e.t = e.c.length == e.l ? 0 : 2; + else if (e.t == 2 && i == e.c.length) + e.c += t.t == 4 ? NA(t.c, n, x) : n == 0 && t.c.length == x ? t.c : t.c.substr(n, x), e.t = e.c.length == e.l ? 0 : 2; + else { + e.t != 4 && bp(e); + var c = t.c, s = e.c; + if (t.t == 4) + if (i <= n) + for (var p = 0; p < x; p++) + s[i + p] = c[n + p]; + else + for (var p = x - 1; p >= 0; p--) + s[i + p] = c[n + p]; + else { + for (var y = Math.min(x, c.length - n), p = 0; p < y; p++) + s[i + p] = c.charCodeAt(n + p); + for (; p < x; p++) + s[i + p] = 0; + } + } + return 0; + } + function voe(t) { + return t; + } + function Ts(t, n, e, i, x) { + return Fs(t, n, e, i, x), 0; + } + function $u0(t, n) { + throw [0, t, n]; + } + function Pv(t, n) { + if (t == 0) + return C; + if (n.repeat) + return n.repeat(t); + for (var e = C, i = 0; ; ) { + if (t & 1 && (e += n), t >>= 1, t == 0) + return e; + n += n, i++, i == 9 && n.slice(0, 1); + } + } + function Dv(t) { + t.t == 2 ? t.c += Pv(t.l - t.c.length, "\0") : t.c = NA(t.c, 0, t.c.length), t.t = 0; + } + function _V(t) { + if (t.length < 24) { + for (var n = 0; n < t.length; n++) + if (t.charCodeAt(n) > zn) + return false; + return true; + } else + return !/[^\x00-\x7f]/.test(t); + } + function CA(t) { + for (var n = C, e = C, i, x, c, s, p = 0, y = t.length; p < y; p++) { + if (x = t.charCodeAt(p), x < Pi) { + for (var T = p + 1; T < y && (x = t.charCodeAt(T)) < Pi; T++) + ; + if (T - p > II ? (e.substr(0, 1), n += e, e = C, n += t.slice(p, T)) : e += t.slice(p, T), T == y) + break; + p = T; + } + s = 1, ++p < y && ((c = t.charCodeAt(p)) & -64) == jt && (i = c + (x << 6), x < HY ? (s = i - 12416, s < Pi && (s = 1)) : (s = 2, ++p < y && ((c = t.charCodeAt(p)) & -64) == jt && (i = c + (i << 6), x < LX ? (s = i - 925824, (s < YX || s >= 55295 && s < 57344) && (s = 2)) : (s = 3, ++p < y && ((c = t.charCodeAt(p)) & -64) == jt && x < 245 && (s = c - 63447168 + (i << 6), (s < 65536 || s > 1114111) && (s = 3)))))), s < 4 ? (p -= s, e += "\uFFFD") : s > Li ? e += String.fromCharCode(55232 + (s >> 10), NH + (s & 1023)) : e += String.fromCharCode(s), e.length > L2 && (e.substr(0, 1), n += e, e = C); + } + return n + e; + } + function Oc(t, n, e) { + this.t = t, this.c = n, this.l = e; + } + Oc.prototype.toString = function() { + switch (this.t) { + case 9: + return this.c; + default: + Dv(this); + case 0: + if (_V(this.c)) + return this.t = 9, this.c; + this.t = 8; + case 8: + return this.c; + } + }, Oc.prototype.toUtf16 = function() { + var t = this.toString(); + return this.t == 9 ? t : CA(t); + }, Oc.prototype.slice = function() { + var t = this.t == 4 ? this.c.slice() : this.c; + return new Oc(this.t, t, this.l); + }; + function yV(t) { + return new Oc(0, t, t.length); + } + function r(t) { + return yV(t); + } + function PA(t, n) { + $u0(t, r(n)); + } + var zt = [0]; + function lu(t) { + PA(zt.Invalid_argument, t); + } + function hV() { + lu(qS); + } + function Jn(t, n, e) { + if (e &= us, t.t != 4) { + if (n == t.c.length) + return t.c += String.fromCharCode(e), n + 1 == t.l && (t.t = 0), 0; + bp(t); + } + return t.c[n] = e, 0; + } + function b1(t, n, e) { + return n >>> 0 >= t.l && hV(), Jn(t, n, e); + } + function Xu(t, n) { + switch (t.t & 6) { + default: + if (n >= t.c.length) + return 0; + case 0: + return t.c.charCodeAt(n); + case 4: + return t.c[n]; + } + } + function os(t, n) { + if (t.fun) + return os(t.fun, n); + if (typeof t != "function") + return t; + var e = t.length | 0; + if (e === 0) + return t.apply(null, n); + var i = n.length | 0, x = e - i | 0; + return x == 0 ? t.apply(null, n) : x < 0 ? os(t.apply(null, n.slice(0, e)), n.slice(e)) : function() { + for (var c = arguments.length == 0 ? 1 : arguments.length, s = new Array(n.length + c), p = 0; p < n.length; p++) + s[p] = n[p]; + for (var p = 0; p < arguments.length; p++) + s[n.length + p] = arguments[p]; + return os(t, s); + }; + } + function il() { + lu(qS); + } + function tu(t, n) { + return n >>> 0 >= t.length - 1 && il(), t; + } + function Zu0(t) { + return isFinite(t) ? Math.abs(t) >= 22250738585072014e-324 ? 0 : t != 0 ? 1 : 2 : isNaN(t) ? 4 : 3; + } + function Ic(t) { + return (t.t & 6) != 0 && Dv(t), t.c; + } + var Qu0 = Math.log2 && Math.log2(11235582092889474e291) == 1020; + function r70(t) { + if (Qu0) + return Math.floor(Math.log2(t)); + var n = 0; + if (t == 0) + return -1 / 0; + if (t >= 1) + for (; t >= 2; ) + t /= 2, n++; + else + for (; t < 1; ) + t *= 2, n--; + return n; + } + function DA(t) { + var n = new z0.Float32Array(1); + n[0] = t; + var e = new z0.Int32Array(n.buffer); + return e[0] | 0; + } + var dV = Math.pow(2, -24); + function kV(t) { + throw t; + } + function wV() { + kV(zt.Division_by_zero); + } + function sn(t, n, e) { + this.lo = t & Ex, this.mi = n & Ex, this.hi = e & Li; + } + sn.prototype.caml_custom = "_j", sn.prototype.copy = function() { + return new sn(this.lo, this.mi, this.hi); + }, sn.prototype.ucompare = function(t) { + return this.hi > t.hi ? 1 : this.hi < t.hi ? -1 : this.mi > t.mi ? 1 : this.mi < t.mi ? -1 : this.lo > t.lo ? 1 : this.lo < t.lo ? -1 : 0; + }, sn.prototype.compare = function(t) { + var n = this.hi << 16, e = t.hi << 16; + return n > e ? 1 : n < e ? -1 : this.mi > t.mi ? 1 : this.mi < t.mi ? -1 : this.lo > t.lo ? 1 : this.lo < t.lo ? -1 : 0; + }, sn.prototype.neg = function() { + var t = -this.lo, n = -this.mi + (t >> 24), e = -this.hi + (n >> 24); + return new sn(t, n, e); + }, sn.prototype.add = function(t) { + var n = this.lo + t.lo, e = this.mi + t.mi + (n >> 24), i = this.hi + t.hi + (e >> 24); + return new sn(n, e, i); + }, sn.prototype.sub = function(t) { + var n = this.lo - t.lo, e = this.mi - t.mi + (n >> 24), i = this.hi - t.hi + (e >> 24); + return new sn(n, e, i); + }, sn.prototype.mul = function(t) { + var n = this.lo * t.lo, e = (n * dV | 0) + this.mi * t.lo + this.lo * t.mi, i = (e * dV | 0) + this.hi * t.lo + this.mi * t.mi + this.lo * t.hi; + return new sn(n, e, i); + }, sn.prototype.isZero = function() { + return (this.lo | this.mi | this.hi) == 0; + }, sn.prototype.isNeg = function() { + return this.hi << 16 < 0; + }, sn.prototype.and = function(t) { + return new sn(this.lo & t.lo, this.mi & t.mi, this.hi & t.hi); + }, sn.prototype.or = function(t) { + return new sn(this.lo | t.lo, this.mi | t.mi, this.hi | t.hi); + }, sn.prototype.xor = function(t) { + return new sn(this.lo ^ t.lo, this.mi ^ t.mi, this.hi ^ t.hi); + }, sn.prototype.shift_left = function(t) { + return t = t & 63, t == 0 ? this : t < 24 ? new sn(this.lo << t, this.mi << t | this.lo >> 24 - t, this.hi << t | this.mi >> 24 - t) : t < 48 ? new sn(0, this.lo << t - 24, this.mi << t - 24 | this.lo >> 48 - t) : new sn(0, 0, this.lo << t - 48); + }, sn.prototype.shift_right_unsigned = function(t) { + return t = t & 63, t == 0 ? this : t < 24 ? new sn(this.lo >> t | this.mi << 24 - t, this.mi >> t | this.hi << 24 - t, this.hi >> t) : t < 48 ? new sn(this.mi >> t - 24 | this.hi << 48 - t, this.hi >> t - 24, 0) : new sn(this.hi >> t - 48, 0, 0); + }, sn.prototype.shift_right = function(t) { + if (t = t & 63, t == 0) + return this; + var n = this.hi << 16 >> 16; + if (t < 24) + return new sn(this.lo >> t | this.mi << 24 - t, this.mi >> t | n << 24 - t, this.hi << 16 >> t >>> 16); + var e = this.hi << 16 >> 31; + return t < 48 ? new sn(this.mi >> t - 24 | this.hi << 48 - t, this.hi << 16 >> t - 24 >> 16, e & Li) : new sn(this.hi << 16 >> t - 32, e, e); + }, sn.prototype.lsl1 = function() { + this.hi = this.hi << 1 | this.mi >> 23, this.mi = (this.mi << 1 | this.lo >> 23) & Ex, this.lo = this.lo << 1 & Ex; + }, sn.prototype.lsr1 = function() { + this.lo = (this.lo >>> 1 | this.mi << 23) & Ex, this.mi = (this.mi >>> 1 | this.hi << 23) & Ex, this.hi = this.hi >>> 1; + }, sn.prototype.udivmod = function(t) { + for (var n = 0, e = this.copy(), i = t.copy(), x = new sn(0, 0, 0); e.ucompare(i) > 0; ) + n++, i.lsl1(); + for (; n >= 0; ) + n--, x.lsl1(), e.ucompare(i) >= 0 && (x.lo++, e = e.sub(i)), i.lsr1(); + return { quotient: x, modulus: e }; + }, sn.prototype.div = function(t) { + var n = this; + t.isZero() && wV(); + var e = n.hi ^ t.hi; + n.hi & Mi && (n = n.neg()), t.hi & Mi && (t = t.neg()); + var i = n.udivmod(t).quotient; + return e & Mi && (i = i.neg()), i; + }, sn.prototype.mod = function(t) { + var n = this; + t.isZero() && wV(); + var e = n.hi; + n.hi & Mi && (n = n.neg()), t.hi & Mi && (t = t.neg()); + var i = n.udivmod(t).modulus; + return e & Mi && (i = i.neg()), i; + }, sn.prototype.toInt = function() { + return this.lo | this.mi << 24; + }, sn.prototype.toFloat = function() { + return (this.hi << 16) * Math.pow(2, 32) + this.mi * Math.pow(2, 24) + this.lo; + }, sn.prototype.toArray = function() { + return [this.hi >> 8, this.hi & us, this.mi >> 16, this.mi >> 8 & us, this.mi & us, this.lo >> 16, this.lo >> 8 & us, this.lo & us]; + }, sn.prototype.lo32 = function() { + return this.lo | (this.mi & us) << 24; + }, sn.prototype.hi32 = function() { + return this.mi >>> 8 & Li | this.hi << 16; + }; + function pp(t, n, e) { + return new sn(t, n, e); + } + function mp(t) { + if (!isFinite(t)) + return isNaN(t) ? pp(1, 0, tV) : t > 0 ? pp(0, 0, tV) : pp(0, 0, 65520); + var n = t == 0 && 1 / t == -1 / 0 ? Mi : t >= 0 ? 0 : Mi; + n && (t = -t); + var e = r70(t) + 1023; + e <= 0 ? (e = 0, t /= Math.pow(2, -rH)) : (t /= Math.pow(2, e - uU), t < 16 && (t *= 2, e -= 1), e == 0 && (t /= 2)); + var i = Math.pow(2, 24), x = t | 0; + t = (t - x) * i; + var c = t | 0; + t = (t - c) * i; + var s = t | 0; + return x = x & eF | n | e << 4, pp(s, c, x); + } + function fl(t) { + return t.toArray(); + } + function EV(t, n, e) { + if (t.write(32, n.dims.length), t.write(32, n.kind | n.layout << 8), n.caml_custom == v3) + for (var i = 0; i < n.dims.length; i++) + n.dims[i] < Li ? t.write(16, n.dims[i]) : (t.write(16, Li), t.write(32, 0), t.write(32, n.dims[i])); + else + for (var i = 0; i < n.dims.length; i++) + t.write(32, n.dims[i]); + switch (n.kind) { + case 2: + case 3: + case 12: + for (var i = 0; i < n.data.length; i++) + t.write(8, n.data[i]); + break; + case 4: + case 5: + for (var i = 0; i < n.data.length; i++) + t.write(16, n.data[i]); + break; + case 6: + for (var i = 0; i < n.data.length; i++) + t.write(32, n.data[i]); + break; + case 8: + case 9: + t.write(8, 0); + for (var i = 0; i < n.data.length; i++) + t.write(32, n.data[i]); + break; + case 7: + for (var i = 0; i < n.data.length / 2; i++) + for (var x = fl(n.get(i)), c = 0; c < 8; c++) + t.write(8, x[c]); + break; + case 1: + for (var i = 0; i < n.data.length; i++) + for (var x = fl(mp(n.get(i))), c = 0; c < 8; c++) + t.write(8, x[c]); + break; + case 0: + for (var i = 0; i < n.data.length; i++) { + var x = DA(n.get(i)); + t.write(32, x); + } + break; + case 10: + for (var i = 0; i < n.data.length / 2; i++) { + var c = n.get(i); + t.write(32, DA(c[1])), t.write(32, DA(c[2])); + } + break; + case 11: + for (var i = 0; i < n.data.length / 2; i++) { + for (var s = n.get(i), x = fl(mp(s[1])), c = 0; c < 8; c++) + t.write(8, x[c]); + for (var x = fl(mp(s[2])), c = 0; c < 8; c++) + t.write(8, x[c]); + } + break; + } + e[0] = (4 + n.dims.length) * 4, e[1] = (4 + n.dims.length) * 8; + } + function SV(t) { + switch (t) { + case 7: + case 10: + case 11: + return 2; + default: + return 1; + } + } + function e70(t, n) { + var e = z0, i; + switch (t) { + case 0: + i = e.Float32Array; + break; + case 1: + i = e.Float64Array; + break; + case 2: + i = e.Int8Array; + break; + case 3: + i = e.Uint8Array; + break; + case 4: + i = e.Int16Array; + break; + case 5: + i = e.Uint16Array; + break; + case 6: + i = e.Int32Array; + break; + case 7: + i = e.Int32Array; + break; + case 8: + i = e.Int32Array; + break; + case 9: + i = e.Int32Array; + break; + case 10: + i = e.Float32Array; + break; + case 11: + i = e.Float64Array; + break; + case 12: + i = e.Uint8Array; + break; + } + i || lu("Bigarray.create: unsupported kind"); + var x = new i(n * SV(t)); + return x; + } + function LA(t) { + var n = new z0.Int32Array(1); + n[0] = t; + var e = new z0.Float32Array(n.buffer); + return e[0]; + } + function xl(t) { + return new sn(t[7] << 0 | t[6] << 8 | t[5] << 16, t[4] << 0 | t[3] << 8 | t[2] << 16, t[1] << 0 | t[0] << 8); + } + function RA(t) { + var n = t.lo, e = t.mi, i = t.hi, x = (i & 32767) >> 4; + if (x == nX) + return (n | e | i & eF) == 0 ? i & Mi ? -1 / 0 : 1 / 0 : NaN; + var c = Math.pow(2, -24), s = (n * c + e) * c + (i & eF); + return x > 0 ? (s += 16, s *= Math.pow(2, x - uU)) : s *= Math.pow(2, -rH), i & Mi && (s = -s), s; + } + function jA(t) { + for (var n = t.length, e = 1, i = 0; i < n; i++) + t[i] < 0 && lu("Bigarray.create: negative dimension"), e = e * t[i]; + return e; + } + function n70(t, n) { + return new sn(t & Ex, t >>> 24 & us | (n & Li) << 8, n >>> 16 & Li); + } + function GA(t) { + return t.hi32(); + } + function MA(t) { + return t.lo32(); + } + var t70 = v3; + function Os(t, n, e, i) { + this.kind = t, this.layout = n, this.dims = e, this.data = i; + } + Os.prototype.caml_custom = t70, Os.prototype.offset = function(t) { + var n = 0; + if (typeof t == "number" && (t = [t]), t instanceof Array || lu("bigarray.js: invalid offset"), this.dims.length != t.length && lu("Bigarray.get/set: bad number of dimensions"), this.layout == 0) + for (var e = 0; e < this.dims.length; e++) + (t[e] < 0 || t[e] >= this.dims[e]) && il(), n = n * this.dims[e] + t[e]; + else + for (var e = this.dims.length - 1; e >= 0; e--) + (t[e] < 1 || t[e] > this.dims[e]) && il(), n = n * this.dims[e] + (t[e] - 1); + return n; + }, Os.prototype.get = function(t) { + switch (this.kind) { + case 7: + var n = this.data[t * 2 + 0], e = this.data[t * 2 + 1]; + return n70(n, e); + case 10: + case 11: + var i = this.data[t * 2 + 0], x = this.data[t * 2 + 1]; + return [gv, i, x]; + default: + return this.data[t]; + } + }, Os.prototype.set = function(t, n) { + switch (this.kind) { + case 7: + this.data[t * 2 + 0] = MA(n), this.data[t * 2 + 1] = GA(n); + break; + case 10: + case 11: + this.data[t * 2 + 0] = n[1], this.data[t * 2 + 1] = n[2]; + break; + default: + this.data[t] = n; + break; + } + return 0; + }, Os.prototype.fill = function(t) { + switch (this.kind) { + case 7: + var n = MA(t), e = GA(t); + if (n == e) + this.data.fill(n); + else + for (var i = 0; i < this.data.length; i++) + this.data[i] = i % 2 == 0 ? n : e; + break; + case 10: + case 11: + var x = t[1], c = t[2]; + if (x == c) + this.data.fill(x); + else + for (var i = 0; i < this.data.length; i++) + this.data[i] = i % 2 == 0 ? x : c; + break; + default: + this.data.fill(t); + break; + } + }, Os.prototype.compare = function(t, n) { + if (this.layout != t.layout || this.kind != t.kind) { + var e = this.kind | this.layout << 8, i = t.kind | t.layout << 8; + return i - e; + } + if (this.dims.length != t.dims.length) + return t.dims.length - this.dims.length; + for (var x = 0; x < this.dims.length; x++) + if (this.dims[x] != t.dims[x]) + return this.dims[x] < t.dims[x] ? -1 : 1; + switch (this.kind) { + case 0: + case 1: + case 10: + case 11: + for (var c, s, x = 0; x < this.data.length; x++) { + if (c = this.data[x], s = t.data[x], c < s) + return -1; + if (c > s) + return 1; + if (c != s) { + if (!n) + return NaN; + if (c == c) + return 1; + if (s == s) + return -1; + } + } + break; + case 7: + for (var x = 0; x < this.data.length; x += 2) { + if (this.data[x + 1] < t.data[x + 1]) + return -1; + if (this.data[x + 1] > t.data[x + 1]) + return 1; + if (this.data[x] >>> 0 < t.data[x] >>> 0) + return -1; + if (this.data[x] >>> 0 > t.data[x] >>> 0) + return 1; + } + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 8: + case 9: + case 12: + for (var x = 0; x < this.data.length; x++) { + if (this.data[x] < t.data[x]) + return -1; + if (this.data[x] > t.data[x]) + return 1; + } + break; + } + return 0; + }; + function Lv(t, n, e, i) { + this.kind = t, this.layout = n, this.dims = e, this.data = i; + } + Lv.prototype = new Os(), Lv.prototype.offset = function(t) { + return typeof t != "number" && (t instanceof Array && t.length == 1 ? t = t[0] : lu("Ml_Bigarray_c_1_1.offset")), (t < 0 || t >= this.dims[0]) && il(), t; + }, Lv.prototype.get = function(t) { + return this.data[t]; + }, Lv.prototype.set = function(t, n) { + return this.data[t] = n, 0; + }, Lv.prototype.fill = function(t) { + return this.data.fill(t), 0; + }; + function gV(t, n, e, i) { + var x = SV(t); + return jA(e) * x != i.length && lu("length doesn't match dims"), n == 0 && e.length == 1 && x == 1 ? new Lv(t, n, e, i) : new Os(t, n, e, i); + } + function n7(t) { + PA(zt.Failure, t); + } + function FV(t, n, e) { + var i = t.read32s(); + (i < 0 || i > 16) && n7("input_value: wrong number of bigarray dimensions"); + var x = t.read32s(), c = x & us, s = x >> 8 & 1, p = []; + if (e == v3) + for (var y = 0; y < i; y++) { + var T = t.read16u(); + if (T == Li) { + var E = t.read32u(), d = t.read32u(); + E != 0 && n7("input_value: bigarray dimension overflow in 32bit"), T = d; + } + p.push(T); + } + else + for (var y = 0; y < i; y++) + p.push(t.read32u()); + var w = jA(p), G = e70(c, w), A = gV(c, s, p, G); + switch (c) { + case 2: + for (var y = 0; y < w; y++) + G[y] = t.read8s(); + break; + case 3: + case 12: + for (var y = 0; y < w; y++) + G[y] = t.read8u(); + break; + case 4: + for (var y = 0; y < w; y++) + G[y] = t.read16s(); + break; + case 5: + for (var y = 0; y < w; y++) + G[y] = t.read16u(); + break; + case 6: + for (var y = 0; y < w; y++) + G[y] = t.read32s(); + break; + case 8: + case 9: + var S = t.read8u(); + S && n7("input_value: cannot read bigarray with 64-bit OCaml ints"); + for (var y = 0; y < w; y++) + G[y] = t.read32s(); + break; + case 7: + for (var k0 = new Array(8), y = 0; y < w; y++) { + for (var M = 0; M < 8; M++) + k0[M] = t.read8u(); + var K = xl(k0); + A.set(y, K); + } + break; + case 1: + for (var k0 = new Array(8), y = 0; y < w; y++) { + for (var M = 0; M < 8; M++) + k0[M] = t.read8u(); + var V = RA(xl(k0)); + A.set(y, V); + } + break; + case 0: + for (var y = 0; y < w; y++) { + var V = LA(t.read32s()); + A.set(y, V); + } + break; + case 10: + for (var y = 0; y < w; y++) { + var f0 = LA(t.read32s()), m0 = LA(t.read32s()); + A.set(y, [gv, f0, m0]); + } + break; + case 11: + for (var k0 = new Array(8), y = 0; y < w; y++) { + for (var M = 0; M < 8; M++) + k0[M] = t.read8u(); + for (var f0 = RA(xl(k0)), M = 0; M < 8; M++) + k0[M] = t.read8u(); + var m0 = RA(xl(k0)); + A.set(y, [gv, f0, m0]); + } + break; + } + return n[0] = (4 + i) * 4, gV(c, s, p, G); + } + function TV(t, n, e) { + return t.compare(n, e); + } + function OV(t, n) { + return Math.imul(t, n); + } + function as(t, n) { + return n = OV(n, -862048943), n = n << 15 | n >>> 32 - 15, n = OV(n, 461845907), t ^= n, t = t << 13 | t >>> 32 - 13, (t + (t << 2) | 0) + -430675100 | 0; + } + function u70(t, n) { + return t = as(t, MA(n)), t = as(t, GA(n)), t; + } + function IV(t, n) { + return u70(t, mp(n)); + } + function AV(t) { + var n = jA(t.dims), e = 0; + switch (t.kind) { + case 2: + case 3: + case 12: + n > N4 && (n = N4); + var i = 0, x = 0; + for (x = 0; x + 4 <= t.data.length; x += 4) + i = t.data[x + 0] | t.data[x + 1] << 8 | t.data[x + 2] << 16 | t.data[x + 3] << 24, e = as(e, i); + switch (i = 0, n & 3) { + case 3: + i = t.data[x + 2] << 16; + case 2: + i |= t.data[x + 1] << 8; + case 1: + i |= t.data[x + 0], e = as(e, i); + } + break; + case 4: + case 5: + n > jt && (n = jt); + var i = 0, x = 0; + for (x = 0; x + 2 <= t.data.length; x += 2) + i = t.data[x + 0] | t.data[x + 1] << 16, e = as(e, i); + (n & 1) != 0 && (e = as(e, t.data[x])); + break; + case 6: + n > 64 && (n = 64); + for (var x = 0; x < n; x++) + e = as(e, t.data[x]); + break; + case 8: + case 9: + n > 64 && (n = 64); + for (var x = 0; x < n; x++) + e = as(e, t.data[x]); + break; + case 7: + n > 32 && (n = 32), n *= 2; + for (var x = 0; x < n; x++) + e = as(e, t.data[x]); + break; + case 10: + n *= 2; + case 0: + n > 64 && (n = 64); + for (var x = 0; x < n; x++) + e = IV(e, t.data[x]); + break; + case 11: + n *= 2; + case 1: + n > 32 && (n = 32); + for (var x = 0; x < n; x++) + e = IV(e, t.data[x]); + break; + } + return e; + } + function i70(t, n) { + return n[0] = 4, t.read32s(); + } + function f70(t, n) { + switch (t.read8u()) { + case 1: + return n[0] = 4, t.read32s(); + case 2: + n7("input_value: native integer value too large"); + default: + n7("input_value: ill-formed native integer"); + } + } + function x70(t, n) { + for (var e = new Array(8), i = 0; i < 8; i++) + e[i] = t.read8u(); + return n[0] = 8, xl(e); + } + function o70(t, n, e) { + for (var i = fl(n), x = 0; x < 8; x++) + t.write(8, i[x]); + e[0] = 8, e[1] = 8; + } + function a70(t, n, e) { + return t.compare(n); + } + function c70(t) { + return t.lo32() ^ t.hi32(); + } + var NV = { _j: { deserialize: x70, serialize: o70, fixed_length: 8, compare: a70, hash: c70 }, _i: { deserialize: i70, fixed_length: 4 }, _n: { deserialize: f70, fixed_length: 4 }, _bigarray: { deserialize: function(t, n) { + return FV(t, n, "_bigarray"); + }, serialize: EV, compare: TV, hash: AV }, _bigarr02: { deserialize: function(t, n) { + return FV(t, n, v3); + }, serialize: EV, compare: TV, hash: AV } }; + function BA(t) { + return NV[t.caml_custom] && NV[t.caml_custom].compare; + } + function CV(t, n, e, i) { + var x = BA(n); + if (x) { + var c = e > 0 ? x(n, t, i) : x(t, n, i); + if (i && c != c) + return e; + if (+c != +c) + return +c; + if ((c | 0) != 0) + return c | 0; + } + return e; + } + function _p(t) { + return t instanceof Oc; + } + function qA(t) { + return _p(t); + } + function PV(t) { + if (typeof t == "number") + return Q2; + if (_p(t)) + return Y2; + if (qA(t)) + return 1252; + if (t instanceof Array && t[0] === t[0] >>> 0 && t[0] <= gw) { + var n = t[0] | 0; + return n == gv ? 0 : n; + } else { + if (t instanceof String) + return AY; + if (typeof t == "string") + return AY; + if (t instanceof Number) + return Q2; + if (t && t.caml_custom) + return HO; + if (t && t.compare) + return 1256; + if (typeof t == "function") + return 1247; + if (typeof t == "symbol") + return 1251; + } + return 1001; + } + function Ac(t, n) { + return t < n ? -1 : t == n ? 0 : 1; + } + function DV(t, n) { + return t.t & 6 && Dv(t), n.t & 6 && Dv(n), t.c < n.c ? -1 : t.c > n.c ? 1 : 0; + } + function Ee(t, n) { + return DV(t, n); + } + function yp(t, n, e) { + for (var i = []; ; ) { + if (!(e && t === n)) { + var x = PV(t); + if (x == nl) { + t = t[1]; + continue; + } + var c = PV(n); + if (c == nl) { + n = n[1]; + continue; + } + if (x !== c) + return x == Q2 ? c == HO ? CV(t, n, -1, e) : -1 : c == Q2 ? x == HO ? CV(n, t, 1, e) : 1 : x < c ? -1 : 1; + switch (x) { + case 247: + lu(gd); + break; + case 248: + var p = Ac(t[2], n[2]); + if (p != 0) + return p | 0; + break; + case 249: + lu(gd); + break; + case 250: + lu("equal: got Forward_tag, should not happen"); + break; + case 251: + lu("equal: abstract value"); + break; + case 252: + if (t !== n) { + var p = DV(t, n); + if (p != 0) + return p | 0; + } + break; + case 253: + lu("equal: got Double_tag, should not happen"); + break; + case 254: + lu("equal: got Double_array_tag, should not happen"); + break; + case 255: + lu("equal: got Custom_tag, should not happen"); + break; + case 1247: + lu(gd); + break; + case 1255: + var s = BA(t); + if (s != BA(n)) + return t.caml_custom < n.caml_custom ? -1 : 1; + s || lu("compare: abstract value"); + var p = s(t, n, e); + if (p != p) + return e ? -1 : p; + if (p !== (p | 0)) + return -1; + if (p != 0) + return p | 0; + break; + case 1256: + var p = t.compare(n, e); + if (p != p) + return e ? -1 : p; + if (p !== (p | 0)) + return -1; + if (p != 0) + return p | 0; + break; + case 1e3: + if (t = +t, n = +n, t < n) + return -1; + if (t > n) + return 1; + if (t != n) { + if (!e) + return NaN; + if (t == t) + return 1; + if (n == n) + return -1; + } + break; + case 1001: + if (t < n) + return -1; + if (t > n) + return 1; + if (t != n) { + if (!e) + return NaN; + if (t == t) + return 1; + if (n == n) + return -1; + } + break; + case 1251: + if (t !== n) + return e ? 1 : NaN; + break; + case 1252: + var t = Ic(t), n = Ic(n); + if (t !== n) { + if (t < n) + return -1; + if (t > n) + return 1; + } + break; + case 12520: + var t = t.toString(), n = n.toString(); + if (t !== n) { + if (t < n) + return -1; + if (t > n) + return 1; + } + break; + case 246: + case 254: + default: + if (t.length != n.length) + return t.length < n.length ? -1 : 1; + t.length > 1 && i.push(t, n, 1); + break; + } + } + if (i.length == 0) + return 0; + var y = i.pop(); + n = i.pop(), t = i.pop(), y + 1 < t.length && i.push(t, n, y + 1), t = t[y], n = n[y]; + } + } + function LV(t, n) { + return yp(t, n, true); + } + function s70() { + return [0]; + } + function Lt(t) { + return t < 0 && lu("Bytes.create"), new Oc(t ? 2 : 9, C, t); + } + function RV(t, n) { + return +(yp(t, n, false) == 0); + } + function v70(t, n, e, i) { + if (e > 0) + if (n == 0 && (e >= t.l || t.t == 2 && e >= t.c.length)) + i == 0 ? (t.c = C, t.t = 2) : (t.c = Pv(e, String.fromCharCode(i)), t.t = e == t.l ? 0 : 2); + else + for (t.t != 4 && bp(t), e += n; n < e; n++) + t.c[n] = i; + return 0; + } + function ol(t) { + var n; + if (t = Ic(t), n = +t, t.length > 0 && n === n || (t = t.replace(/_/g, C), n = +t, t.length > 0 && n === n || /^[+-]?nan$/i.test(t))) + return n; + var e = /^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)p([+-]?[0-9]+)/i.exec(t); + if (e) { + var i = e[3].replace(/0+$/, C), x = parseInt(e[1] + e[2] + i, 16), c = (e[4] | 0) - 4 * i.length; + return n = x * Math.pow(2, c), n; + } + if (/^\+?inf(inity)?$/i.test(t)) + return 1 / 0; + if (/^-inf(inity)?$/i.test(t)) + return -1 / 0; + n7("float_of_string"); + } + function UA(t) { + t = Ic(t); + var n = t.length; + n > 31 && lu("format_int: format too long"); + for (var e = { justify: xs, signstyle: Fa, filler: pi, alternate: false, base: 0, signedconv: false, width: 0, uppercase: false, sign: 1, prec: -1, conv: oY }, i = 0; i < n; i++) { + var x = t.charAt(i); + switch (x) { + case "-": + e.justify = Fa; + break; + case "+": + case " ": + e.signstyle = x; + break; + case "0": + e.filler = Zu; + break; + case "#": + e.alternate = true; + break; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + for (e.width = 0; x = t.charCodeAt(i) - 48, x >= 0 && x <= 9; ) + e.width = e.width * 10 + x, i++; + i--; + break; + case ".": + for (e.prec = 0, i++; x = t.charCodeAt(i) - 48, x >= 0 && x <= 9; ) + e.prec = e.prec * 10 + x, i++; + i--; + case "d": + case "i": + e.signedconv = true; + case "u": + e.base = 10; + break; + case "x": + e.base = 16; + break; + case "X": + e.base = 16, e.uppercase = true; + break; + case "o": + e.base = 8; + break; + case "e": + case "f": + case "g": + e.signedconv = true, e.conv = x; + break; + case "E": + case "F": + case "G": + e.signedconv = true, e.uppercase = true, e.conv = x.toLowerCase(); + break; + } + } + return e; + } + function HA(t, n) { + t.uppercase && (n = n.toUpperCase()); + var e = n.length; + t.signedconv && (t.sign < 0 || t.signstyle != Fa) && e++, t.alternate && (t.base == 8 && (e += 1), t.base == 16 && (e += 2)); + var i = C; + if (t.justify == xs && t.filler == pi) + for (var x = e; x < t.width; x++) + i += pi; + if (t.signedconv && (t.sign < 0 ? i += Fa : t.signstyle != Fa && (i += t.signstyle)), t.alternate && t.base == 8 && (i += Zu), t.alternate && t.base == 16 && (i += l1), t.justify == xs && t.filler == Zu) + for (var x = e; x < t.width; x++) + i += Zu; + if (i += n, t.justify == Fa) + for (var x = e; x < t.width; x++) + i += pi; + return r(i); + } + function XA(t, n) { + function e(E, d) { + if (Math.abs(E) < 1) + return E.toFixed(d); + var w = parseInt(E.toString().split(xs)[1]); + return w > 20 ? (w -= 20, E /= Math.pow(10, w), E += new Array(w + 1).join(Zu), d > 0 && (E = E + Lo + new Array(d + 1).join(Zu)), E) : E.toFixed(d); + } + var i, x = UA(t), c = x.prec < 0 ? 6 : x.prec; + if ((n < 0 || n == 0 && 1 / n == -1 / 0) && (x.sign = -1, n = -n), isNaN(n)) + i = sw, x.filler = pi; + else if (!isFinite(n)) + i = "inf", x.filler = pi; + else + switch (x.conv) { + case "e": + var i = n.toExponential(c), s = i.length; + i.charAt(s - 3) == ny && (i = i.slice(0, s - 1) + Zu + i.slice(s - 1)); + break; + case "f": + i = e(n, c); + break; + case "g": + c = c || 1, i = n.toExponential(c - 1); + var p = i.indexOf(ny), y = +i.slice(p + 1); + if (y < -4 || n >= 1e21 || n.toFixed(0).length > c) { + for (var s = p - 1; i.charAt(s) == Zu; ) + s--; + i.charAt(s) == Lo && s--, i = i.slice(0, s + 1) + i.slice(p), s = i.length, i.charAt(s - 3) == ny && (i = i.slice(0, s - 1) + Zu + i.slice(s - 1)); + break; + } else { + var T = c; + if (y < 0) + T -= y + 1, i = n.toFixed(T); + else + for (; i = n.toFixed(T), i.length > c + 1; ) + T--; + if (T) { + for (var s = i.length - 1; i.charAt(s) == Zu; ) + s--; + i.charAt(s) == Lo && s--, i = i.slice(0, s + 1); + } + } + break; + } + return HA(x, i); + } + function hp(t, n) { + if (Ic(t) == N2) + return r(C + n); + var e = UA(t); + n < 0 && (e.signedconv ? (e.sign = -1, n = -n) : n >>>= 0); + var i = n.toString(e.base); + if (e.prec >= 0) { + e.filler = pi; + var x = e.prec - i.length; + x > 0 && (i = Pv(x, Zu) + i); + } + return HA(e, i); + } + var jV = 0; + function M7() { + return jV++; + } + function l70() { + return 0; + } + function GV() { + return [0]; + } + var dp = []; + function Qe(t, n, e) { + var i = t[1], x = dp[e]; + if (x === void 0) + for (var c = dp.length; c < e; c++) + dp[c] = 0; + else if (i[x] === n) + return i[x - 1]; + for (var s = 3, p = i[1] * 2 + 1, y; s < p; ) + y = s + p >> 1 | 1, n < i[y + 1] ? p = y - 2 : s = y; + return dp[e] = s + 1, n == i[s + 1] ? i[s] : 0; + } + function b70(t) { + for (var n = C, e = n, i, x, c = 0, s = t.length; c < s; c++) { + if (i = t.charCodeAt(c), i < Pi) { + for (var p = c + 1; p < s && (i = t.charCodeAt(p)) < Pi; p++) + ; + if (p - c > II ? (e.substr(0, 1), n += e, e = C, n += t.slice(c, p)) : e += t.slice(c, p), p == s) + break; + c = p; + } + i < YX ? (e += String.fromCharCode(192 | i >> 6), e += String.fromCharCode(Pi | i & Ov)) : i < 55296 || i >= SH ? e += String.fromCharCode(HY | i >> 12, Pi | i >> 6 & Ov, Pi | i & Ov) : i >= 56319 || c + 1 == s || (x = t.charCodeAt(c + 1)) < NH || x > SH ? e += "\xEF\xBF\xBD" : (c++, i = (i << 10) + x - 56613888, e += String.fromCharCode(LX | i >> 18, Pi | i >> 12 & Ov, Pi | i >> 6 & Ov, Pi | i & Ov)), e.length > L2 && (e.substr(0, 1), n += e, e = C); + } + return n + e; + } + function p70(t) { + var n = 9; + return _V(t) || (n = 8, t = b70(t)), new Oc(n, t, t.length); + } + function B7(t) { + return p70(t); + } + function m70(t, n, e) { + if (!isFinite(t)) + return isNaN(t) ? B7(sw) : B7(t > 0 ? mU : "-infinity"); + var i = t == 0 && 1 / t == -1 / 0 ? 1 : t >= 0 ? 0 : 1; + i && (t = -t); + var x = 0; + if (t != 0) + if (t < 1) + for (; t < 1 && x > -BX; ) + t *= 2, x--; + else + for (; t >= 2; ) + t /= 2, x++; + var c = x < 0 ? C : xs, s = C; + if (i) + s = Fa; + else + switch (e) { + case 43: + s = xs; + break; + case 32: + s = pi; + break; + default: + break; + } + if (n >= 0 && n < 13) { + var p = Math.pow(2, n * 4); + t = Math.round(t * p) / p; + } + var y = t.toString(16); + if (n >= 0) { + var T = y.indexOf(Lo); + if (T < 0) + y += Lo + Pv(n, Zu); + else { + var E = T + 1 + n; + y.length < E ? y += Pv(E - y.length, Zu) : y = y.substr(0, E); + } + } + return B7(s + l1 + y + "p" + c + x.toString(10)); + } + function _70(t) { + return +t.isZero(); + } + function kp(t) { + return new sn(t & Ex, t >> 24 & Ex, t >> 31 & Li); + } + function y70(t) { + return t.toInt(); + } + function h70(t) { + return +t.isNeg(); + } + function MV(t) { + return t.neg(); + } + function d70(t, n) { + var e = UA(t); + e.signedconv && h70(n) && (e.sign = -1, n = MV(n)); + var i = C, x = kp(e.base), c = "0123456789abcdef"; + do { + var s = n.udivmod(x); + n = s.quotient, i = c.charAt(y70(s.modulus)) + i; + } while (!_70(n)); + if (e.prec >= 0) { + e.filler = pi; + var p = e.prec - i.length; + p > 0 && (i = Pv(p, Zu) + i); + } + return HA(e, i); + } + function b7(t) { + return t.l; + } + function un(t) { + return b7(t); + } + function Vr(t, n) { + return Xu(t, n); + } + function k70(t, n) { + return t.add(n); + } + function w70(t, n) { + return t.mul(n); + } + function YA(t, n) { + return t.ucompare(n) < 0; + } + function BV(t) { + var n = 0, e = un(t), i = 10, x = 1; + if (e > 0) + switch (Vr(t, n)) { + case 45: + n++, x = -1; + break; + case 43: + n++, x = 1; + break; + } + if (n + 1 < e && Vr(t, n) == 48) + switch (Vr(t, n + 1)) { + case 120: + case 88: + i = 16, n += 2; + break; + case 111: + case 79: + i = 8, n += 2; + break; + case 98: + case 66: + i = 2, n += 2; + break; + case 117: + case 85: + n += 2; + break; + } + return [n, x, i]; + } + function wp(t) { + return t >= 48 && t <= 57 ? t - 48 : t >= 65 && t <= 90 ? t - 55 : t >= 97 && t <= In ? t - 87 : -1; + } + function Rv(t) { + var n = BV(t), e = n[0], i = n[1], x = n[2], c = kp(x), s = new sn(Ex, 268435455, Li).udivmod(c).quotient, p = Vr(t, e), y = wp(p); + (y < 0 || y >= x) && n7(ns); + for (var T = kp(y); ; ) + if (e++, p = Vr(t, e), p != 95) { + if (y = wp(p), y < 0 || y >= x) + break; + YA(s, T) && n7(ns), y = kp(y), T = k70(w70(c, T), y), YA(T, y) && n7(ns); + } + return e != un(t) && n7(ns), x == 10 && YA(new sn(0, 0, Mi), T) && n7(ns), i < 0 && (T = MV(T)), T; + } + function jv(t) { + return t.toFloat(); + } + function Bi(t) { + var n = BV(t), e = n[0], i = n[1], x = n[2], c = un(t), s = -1 >>> 0, p = e < c ? Vr(t, e) : 0, y = wp(p); + (y < 0 || y >= x) && n7(ns); + var T = y; + for (e++; e < c; e++) + if (p = Vr(t, e), p != 95) { + if (y = wp(p), y < 0 || y >= x) + break; + T = x * T + y, T > s && n7(ns); + } + return e != c && n7(ns), T = i * T, x == 10 && (T | 0) != T && n7(ns), T | 0; + } + function E70(t) { + return t.slice(1); + } + function S70(t) { + return !!t; + } + function bn(t) { + return t.toUtf16(); + } + function g70(t) { + for (var n = {}, e = 1; e < t.length; e++) { + var i = t[e]; + n[bn(i[1])] = i[2]; + } + return n; + } + function F70(t, n) { + return +(yp(t, n, false) < 0); + } + function Gv(e, n) { + e < 0 && il(); + var e = e + 1 | 0, i = new Array(e); + i[0] = 0; + for (var x = 1; x < e; x++) + i[x] = n; + return i; + } + function T70() { + return 0; + } + function at(t) { + PA(zt.Sys_error, t); + } + var Nc = new Array(); + function p1(t) { + var n = Nc[t]; + if (n.opened || at("Cannot flush a closed channel"), !n.buffer || n.buffer == C) + return 0; + if (n.fd && zt.fds[n.fd] && zt.fds[n.fd].output) { + var e = zt.fds[n.fd].output; + switch (e.length) { + case 2: + e(t, n.buffer); + break; + default: + e(n.buffer); + } + } + return n.buffer = C, 0; + } + function qV() { + return typeof z0.process < "u" && typeof z0.process.versions < "u" && typeof z0.process.versions.node < "u" && z0.process.platform !== "browser"; + } + function O70() { + function t(e) { + if (e.charAt(0) === Qu) + return [C, e.substring(1)]; + } + function n(e) { + var i = /^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/, x = i.exec(e), c = x[1] || C, s = Boolean(c && c.charAt(1) !== o1); + if (Boolean(x[2] || s)) { + var p = x[1] || C, y = x[2] || C; + return [p, e.substring(p.length + y.length)]; + } + } + return z0.process && z0.process.platform && z0.process.platform === aV ? n : t; + } + var VA = O70(); + function UV(t) { + return t.slice(-1) !== Qu ? t + Qu : t; + } + if (z0.process && z0.process.cwd) + var al = z0.process.cwd().replace(/\\/g, Qu); + else + var al = "/static"; + al = UV(al); + function I70(t) { + t = bn(t), VA(t) || (t = al + t); + for (var n = VA(t), e = n[1].split(Qu), i = [], x = 0; x < e.length; x++) + switch (e[x]) { + case "..": + i.length > 1 && i.pop(); + break; + case ".": + break; + default: + i.push(e[x]); + break; + } + return i.unshift(n[0]), i.orig = t, i; + } + var A70 = ["E2BIG", "EACCES", "EAGAIN", "EBADF", "EBUSY", "ECHILD", "EDEADLK", "EDOM", nV, "EFAULT", "EFBIG", "EINTR", "EINVAL", "EIO", "EISDIR", "EMFILE", "EMLINK", "ENAMETOOLONG", "ENFILE", "ENODEV", vh, "ENOEXEC", "ENOLCK", "ENOMEM", "ENOSPC", "ENOSYS", yw, PU, "ENOTTY", "ENXIO", "EPERM", "EPIPE", "ERANGE", "EROFS", "ESPIPE", "ESRCH", "EXDEV", "EWOULDBLOCK", "EINPROGRESS", "EALREADY", "ENOTSOCK", "EDESTADDRREQ", "EMSGSIZE", "EPROTOTYPE", "ENOPROTOOPT", "EPROTONOSUPPORT", "ESOCKTNOSUPPORT", "EOPNOTSUPP", "EPFNOSUPPORT", "EAFNOSUPPORT", "EADDRINUSE", "EADDRNOTAVAIL", "ENETDOWN", "ENETUNREACH", "ENETRESET", "ECONNABORTED", "ECONNRESET", "ENOBUFS", "EISCONN", "ENOTCONN", "ESHUTDOWN", "ETOOMANYREFS", "ETIMEDOUT", "ECONNREFUSED", "EHOSTDOWN", "EHOSTUNREACH", "ELOOP", "EOVERFLOW"]; + function m1(t, n, e, i) { + var x = A70.indexOf(t); + x < 0 && (i == null && (i = -9999), x = [0, i]); + var c = [x, B7(n || C), B7(e || C)]; + return c; + } + var HV = {}; + function _1(t) { + return HV[t]; + } + function y1(t, n) { + throw [0, t].concat(n); + } + function N70(t) { + return new Oc(4, t, t.length); + } + function C70(t) { + t = Ic(t), at(t + tp); + } + function P70(t, n) { + return n >>> 0 >= t.l && hV(), Xu(t, n); + } + function XV() { + } + function gu(t) { + this.data = t; + } + gu.prototype = new XV(), gu.prototype.truncate = function(t) { + var n = this.data; + this.data = Lt(t | 0), Fs(n, 0, this.data, 0, t); + }, gu.prototype.length = function() { + return b7(this.data); + }, gu.prototype.write = function(t, n, e, i) { + var x = this.length(); + if (t + i >= x) { + var c = Lt(t + i), s = this.data; + this.data = c, Fs(s, 0, this.data, 0, x); + } + return Ts(n, e, this.data, t, i), 0; + }, gu.prototype.read = function(t, n, e, i) { + var x = this.length(); + return Fs(this.data, t, n, e, i), 0; + }, gu.prototype.read_one = function(t) { + return P70(this.data, t); + }, gu.prototype.close = function() { + }, gu.prototype.constructor = gu; + function t7(t, n) { + this.content = {}, this.root = t, this.lookupFun = n; + } + t7.prototype.nm = function(t) { + return this.root + t; + }, t7.prototype.create_dir_if_needed = function(t) { + for (var n = t.split(Qu), e = C, i = 0; i < n.length - 1; i++) + e += n[i] + Qu, !this.content[e] && (this.content[e] = Symbol("directory")); + }, t7.prototype.slash = function(t) { + return /\/$/.test(t) ? t : t + Qu; + }, t7.prototype.lookup = function(t) { + if (!this.content[t] && this.lookupFun) { + var n = this.lookupFun(r(this.root), r(t)); + n !== 0 && (this.create_dir_if_needed(t), this.content[t] = new gu(n[1])); + } + }, t7.prototype.exists = function(t) { + if (t == C) + return 1; + var n = this.slash(t); + return this.content[n] ? 1 : (this.lookup(t), this.content[t] ? 1 : 0); + }, t7.prototype.mkdir = function(t, n, e) { + var i = e && _1(Kh); + this.exists(t) && (i ? y1(i, m1(nV, WI, this.nm(t))) : at(t + ": File exists")); + var x = /^(.*)\/[^/]+/.exec(t); + x = x && x[1] || C, this.exists(x) || (i ? y1(i, m1(vh, WI, this.nm(x))) : at(x + tp)), this.is_dir(x) || (i ? y1(i, m1(yw, WI, this.nm(x))) : at(x + RS)), this.create_dir_if_needed(this.slash(t)); + }, t7.prototype.rmdir = function(t, n) { + var e = n && _1(Kh), i = t == C ? C : this.slash(t), x = new RegExp(I6 + i + JX); + this.exists(t) || (e ? y1(e, m1(vh, ad, this.nm(t))) : at(t + tp)), this.is_dir(t) || (e ? y1(e, m1(yw, ad, this.nm(t))) : at(t + RS)); + for (var c in this.content) + c.match(x) && (e ? y1(e, m1(PU, ad, this.nm(t))) : at(this.nm(t) + ": Directory not empty")); + delete this.content[i]; + }, t7.prototype.readdir = function(t) { + var n = t == C ? C : this.slash(t); + this.exists(t) || at(t + tp), this.is_dir(t) || at(t + RS); + var e = new RegExp(I6 + n + JX), i = {}, x = []; + for (var c in this.content) { + var s = c.match(e); + s && !i[s[1]] && (i[s[1]] = true, x.push(s[1])); + } + return x; + }, t7.prototype.is_dir = function(t) { + if (t == C) + return true; + var n = this.slash(t); + return this.content[n] ? 1 : 0; + }, t7.prototype.unlink = function(t) { + var n = !!this.content[t]; + return delete this.content[t], n; + }, t7.prototype.open = function(t, n) { + if (n.rdonly && n.wronly && at(this.nm(t) + FY), n.text && n.binary && at(this.nm(t) + tY), this.lookup(t), this.content[t]) { + this.is_dir(t) && at(this.nm(t) + " : is a directory"), n.create && n.excl && at(this.nm(t) + TY); + var e = this.content[t]; + return n.truncate && e.truncate(), e; + } else { + if (n.create) + return this.create_dir_if_needed(t), this.content[t] = new gu(Lt(0)), this.content[t]; + C70(this.nm(t)); + } + }, t7.prototype.register = function(t, n) { + var e; + if (this.content[t] && at(this.nm(t) + TY), _p(n) && (e = new gu(n)), qA(n)) + e = new gu(n); + else if (n instanceof Array) + e = new gu(N70(n)); + else if (typeof n == "string") + e = new gu(yV(n)); + else if (n.toString) { + var i = B7(n.toString()); + e = new gu(i); + } + e ? (this.create_dir_if_needed(t), this.content[t] = e) : at(this.nm(t) + " : registering file with invalid content type"); + }, t7.prototype.constructor = t7; + function D70(t) { + for (var n = un(t), e = new Array(n), i = 0; i < n; i++) + e[i] = Vr(t, i); + return e; + } + function L70(t) { + return t.t != 4 && bp(t), t.c; + } + function Cc(t) { + this.fs = kj(), this.fd = t; + } + Cc.prototype = new XV(), Cc.prototype.truncate = function(t) { + try { + this.fs.ftruncateSync(this.fd, t | 0); + } catch (n) { + at(n.toString()); + } + }, Cc.prototype.length = function() { + try { + return this.fs.fstatSync(this.fd).size; + } catch (t) { + at(t.toString()); + } + }, Cc.prototype.write = function(t, n, e, i) { + var x = D70(n); + x instanceof z0.Uint8Array || (x = new z0.Uint8Array(x)); + var c = z0.Buffer.from(x); + try { + this.fs.writeSync(this.fd, c, e, i, t); + } catch (s) { + at(s.toString()); + } + return 0; + }, Cc.prototype.read = function(t, n, e, i) { + var x = L70(n); + x instanceof z0.Uint8Array || (x = new z0.Uint8Array(x)); + var c = z0.Buffer.from(x); + try { + this.fs.readSync(this.fd, c, e, i, t); + } catch (p) { + at(p.toString()); + } + for (var s = 0; s < i; s++) + b1(n, e + s, c[e + s]); + return 0; + }, Cc.prototype.read_one = function(t) { + var n = new z0.Uint8Array(1), e = z0.Buffer.from(n); + try { + this.fs.readSync(this.fd, e, 0, 1, t); + } catch (i) { + at(i.toString()); + } + return e[0]; + }, Cc.prototype.close = function() { + try { + this.fs.closeSync(this.fd); + } catch (t) { + at(t.toString()); + } + }, Cc.prototype.constructor = Cc; + function Fu(t) { + this.fs = kj(), this.root = t; + } + Fu.prototype.nm = function(t) { + return this.root + t; + }, Fu.prototype.exists = function(t) { + try { + return this.fs.existsSync(this.nm(t)) ? 1 : 0; + } catch { + return 0; + } + }, Fu.prototype.mkdir = function(t, n, e) { + try { + return this.fs.mkdirSync(this.nm(t), { mode: n }), 0; + } catch (i) { + this.raise_nodejs_error(i, e); + } + }, Fu.prototype.rmdir = function(t, n) { + try { + return this.fs.rmdirSync(this.nm(t)), 0; + } catch (e) { + this.raise_nodejs_error(e, n); + } + }, Fu.prototype.readdir = function(t, n) { + try { + return this.fs.readdirSync(this.nm(t)); + } catch (e) { + this.raise_nodejs_error(e, n); + } + }, Fu.prototype.is_dir = function(t) { + try { + return this.fs.statSync(this.nm(t)).isDirectory() ? 1 : 0; + } catch (n) { + at(n.toString()); + } + }, Fu.prototype.unlink = function(t, n) { + try { + var e = this.fs.existsSync(this.nm(t)) ? 1 : 0; + return this.fs.unlinkSync(this.nm(t)), e; + } catch (i) { + this.raise_nodejs_error(i, n); + } + }, Fu.prototype.open = function(t, n, e) { + var i = noe(), x = 0; + for (var c in n) + switch (c) { + case "rdonly": + x |= i.O_RDONLY; + break; + case "wronly": + x |= i.O_WRONLY; + break; + case "append": + x |= i.O_WRONLY | i.O_APPEND; + break; + case "create": + x |= i.O_CREAT; + break; + case "truncate": + x |= i.O_TRUNC; + break; + case "excl": + x |= i.O_EXCL; + break; + case "binary": + x |= i.O_BINARY; + break; + case "text": + x |= i.O_TEXT; + break; + case "nonblock": + x |= i.O_NONBLOCK; + break; + } + try { + var s = this.fs.openSync(this.nm(t), x); + return new Cc(s); + } catch (p) { + this.raise_nodejs_error(p, e); + } + }, Fu.prototype.rename = function(t, n, e) { + try { + this.fs.renameSync(this.nm(t), this.nm(n)); + } catch (i) { + this.raise_nodejs_error(i, e); + } + }, Fu.prototype.stat = function(t, n) { + try { + var e = this.fs.statSync(this.nm(t)); + return this.stats_from_js(e); + } catch (i) { + this.raise_nodejs_error(i, n); + } + }, Fu.prototype.lstat = function(t, n) { + try { + var e = this.fs.lstatSync(this.nm(t)); + return this.stats_from_js(e); + } catch (i) { + this.raise_nodejs_error(i, n); + } + }, Fu.prototype.symlink = function(t, n, e, i) { + try { + return this.fs.symlinkSync(this.nm(n), this.nm(e), t ? "dir" : "file"), 0; + } catch (x) { + this.raise_nodejs_error(x, i); + } + }, Fu.prototype.readlink = function(t, n) { + try { + var e = this.fs.readlinkSync(this.nm(t), vV); + return B7(e); + } catch (i) { + this.raise_nodejs_error(i, n); + } + }, Fu.prototype.raise_nodejs_error = function(t, n) { + var e = _1(Kh); + if (n && e) { + var i = m1(t.code, t.syscall, t.path, t.errno); + y1(e, i); + } else + at(t.toString()); + }, Fu.prototype.stats_from_js = function(t) { + var n; + return t.isFile() ? n = 0 : t.isDirectory() ? n = 1 : t.isCharacterDevice() ? n = 2 : t.isBlockDevice() ? n = 3 : t.isSymbolicLink() ? n = 4 : t.isFIFO() ? n = 5 : t.isSocket() && (n = 6), [0, t.dev, t.ino, n, t.mode, t.nlink, t.uid, t.gid, t.rdev, t.size, t.atimeMs, t.mtimeMs, t.ctimeMs]; + }, Fu.prototype.constructor = Fu; + function YV(t) { + var n = VA(t); + if (!!n) + return n[0] + Qu; + } + var Ep = YV(al) || n7("unable to compute caml_root"), Mv = []; + qV() ? Mv.push({ path: Ep, device: new Fu(Ep) }) : Mv.push({ path: Ep, device: new t7(Ep) }), Mv.push({ path: zU, device: new t7(zU) }); + function R70(e) { + for (var n = I70(e), e = n.join(Qu), i = UV(e), x, c = 0; c < Mv.length; c++) { + var s = Mv[c]; + i.search(s.path) == 0 && (!x || x.path.length < s.path.length) && (x = { path: s.path, device: s.device, rest: e.substring(s.path.length, e.length) }); + } + if (!x) { + var p = YV(e); + if (p && p.match(/^[a-zA-Z]:\/$/)) { + var s = { path: p, device: new Fu(p) }; + Mv.push(s), x = { path: s.path, device: s.device, rest: e.substring(s.path.length, e.length) }; + } + } + if (x) + return x; + at("no device found for " + i); + } + function VV(t, n) { + var e = Nc[t], i = r(n), x = un(i); + return e.file.write(e.offset, i, 0, x), e.offset += x, 0; + } + function j70(n) { + var n = CA(n), e = z0; + if (e.process && e.process.stdout && e.process.stdout.write) + e.process.stderr.write(n); + else { + n.charCodeAt(n.length - 1) == 10 && (n = n.substr(0, n.length - 1)); + var i = e.console; + i && i.error && i.error(n); + } + } + function G70(n) { + var n = CA(n), e = z0; + if (e.process && e.process.stdout && e.process.stdout.write) + e.process.stdout.write(n); + else { + n.charCodeAt(n.length - 1) == 10 && (n = n.substr(0, n.length - 1)); + var i = e.console; + i && i.log && i.log(n); + } + } + function Sp(t, n, e, i) { + zt.fds === void 0 && (zt.fds = new Array()), i = i || {}; + var x = {}; + return x.file = e, x.offset = i.append ? e.length() : 0, x.flags = i, x.output = n, zt.fds[t] = x, (!zt.fd_last_idx || t > zt.fd_last_idx) && (zt.fd_last_idx = t), t; + } + function loe(t, n, e) { + for (var i = {}; n; ) { + switch (n[1]) { + case 0: + i.rdonly = 1; + break; + case 1: + i.wronly = 1; + break; + case 2: + i.append = 1; + break; + case 3: + i.create = 1; + break; + case 4: + i.truncate = 1; + break; + case 5: + i.excl = 1; + break; + case 6: + i.binary = 1; + break; + case 7: + i.text = 1; + break; + case 8: + i.nonblock = 1; + break; + } + n = n[2]; + } + i.rdonly && i.wronly && at(Ic(t) + FY), i.text && i.binary && at(Ic(t) + tY); + var x = R70(t), c = x.device.open(x.rest, i), s = zt.fd_last_idx ? zt.fd_last_idx : 0; + return Sp(s + 1, VV, c, i); + } + Sp(0, VV, new gu(Lt(0))), Sp(1, G70, new gu(Lt(0))), Sp(2, j70, new gu(Lt(0))); + function M70(t) { + var n = zt.fds[t]; + n.flags.wronly && at(pX + t + " is writeonly"); + var e = null; + if (t == 0 && qV()) { + var i = kj(); + e = function() { + return B7(i.readFileSync(0, vV)); + }; + } + var x = { file: n.file, offset: n.offset, fd: t, opened: true, out: false, refill: e }; + return Nc[x.fd] = x, x.fd; + } + function zV(t) { + var n = zt.fds[t]; + n.flags.rdonly && at(pX + t + " is readonly"); + var e = { file: n.file, offset: n.offset, fd: t, opened: true, out: true, buffer: C }; + return Nc[e.fd] = e, e.fd; + } + function B70() { + for (var t = 0, n = 0; n < Nc.length; n++) + Nc[n] && Nc[n].opened && Nc[n].out && (t = [0, Nc[n].fd, t]); + return t; + } + function boe(t) { + return t; + } + function q70(t, n, e, i) { + var x = Nc[t]; + x.opened || at("Cannot output to a closed channel"); + var c; + e == 0 && b7(n) == i ? c = n : (c = Lt(i), Fs(n, e, c, 0, i)); + var s = c, p = Ic(s), y = p.lastIndexOf($Y); + return y < 0 ? x.buffer += p : (x.buffer += p.substr(0, y + 1), p1(t), x.buffer += p.substr(y + 1)), 0; + } + function zA(t, n, e, i) { + return q70(t, n, e, i); + } + function KV(t, n) { + var e = r(String.fromCharCode(n)); + return zA(t, e, 0, 1), 0; + } + function cl(t, n) { + return +(yp(t, n, false) != 0); + } + function KA(t, n) { + var e = new Array(n + 1); + e[0] = t; + for (var i = 1; i <= n; i++) + e[i] = 0; + return e; + } + function U70(t, n) { + return t[0] = nl, t[1] = n, 0; + } + function h1(t) { + return t instanceof Array && t[0] == t[0] >>> 0 ? t[0] : _p(t) || qA(t) ? Y2 : t instanceof Function || typeof t == "function" ? Dw : t && t.caml_custom ? gw : Q2; + } + function hi(t, n, e) { + e && z0.toplevelReloc && (t = z0.toplevelReloc(e)), zt[t + 1] = n, e && (zt[e] = n); + } + function WA(t, n) { + return HV[Ic(t)] = n, 0; + } + function H70(t) { + return t[2] = jV++, t; + } + function X70(t, n) { + return t === n ? 1 : (t.t & 6 && Dv(t), n.t & 6 && Dv(n), t.c == n.c ? 1 : 0); + } + function qn(t, n) { + return X70(t, n); + } + function Y70() { + lu(qS); + } + function It(t, n) { + return n >>> 0 >= un(t) && Y70(), Vr(t, n); + } + function n0(t, n) { + return 1 - qn(t, n); + } + function V70() { + return [0, r("js_of_ocaml")]; + } + function z70() { + return 2147483647 / 4 | 0; + } + function K70(t) { + return 0; + } + var W70 = z0.process && z0.process.platform && z0.process.platform == aV ? jU : "Unix"; + function J70() { + return [0, r(W70), 32, 0]; + } + function $70() { + kV(zt.Not_found); + } + function WV(t) { + var n = z0, e = bn(t); + if (n.process && n.process.env && n.process.env[e] != null) + return B7(n.process.env[e]); + if (z0.jsoo_static_env && z0.jsoo_static_env[e]) + return B7(z0.jsoo_static_env[e]); + $70(); + } + function JA(t) { + for (var n = 1; t && t.joo_tramp; ) + t = t.joo_tramp.apply(null, t.joo_args), n++; + return t; + } + function Tu(t, n) { + return { joo_tramp: t, joo_args: n }; + } + function N(t, n) { + if (typeof n == "function") + return t.fun = n, 0; + if (n.fun) + return t.fun = n.fun, 0; + for (var e = n.length; e--; ) + t[e] = n[e]; + return 0; + } + function poe(t) { + return t; + } + function Et(t) { + return t instanceof Array ? t : z0.RangeError && t instanceof z0.RangeError && t.message && t.message.match(/maximum call stack/i) || z0.InternalError && t instanceof z0.InternalError && t.message && t.message.match(/too much recursion/i) ? zt.Stack_overflow : t instanceof z0.Error && _1(KO) ? [0, _1(KO), t] : [0, zt.Failure, B7(String(t))]; + } + function Z70(t) { + switch (t[2]) { + case -8: + case -11: + case -12: + return 1; + default: + return 0; + } + } + function Q70(t) { + var n = C; + if (t[0] == 0) { + if (n += t[1][1], t.length == 3 && t[2][0] == 0 && Z70(t[1])) + var i = t[2], e = 1; + else + var e = 2, i = t; + n += HX; + for (var x = e; x < i.length; x++) { + x > e && (n += $H); + var c = i[x]; + typeof c == "number" ? n += c.toString() : c instanceof Oc || typeof c == "string" ? n += V2 + c.toString() + V2 : n += bv; + } + n += Z0; + } else + t[0] == wt && (n += t[1]); + return n; + } + function JV(t) { + if (t instanceof Array && (t[0] == 0 || t[0] == wt)) { + var n = _1(LH); + if (n) + n(t, false); + else { + var e = Q70(t), i = _1(sV); + i && i(0), z0.console.error(yd + e + $Y); + } + } else + throw t; + } + function ri0() { + var t = z0; + t.process && t.process.on ? t.process.on("uncaughtException", function(n, e) { + JV(n), t.process.exit(2); + }) : t.addEventListener && t.addEventListener("error", function(n) { + n.error && JV(n.error); + }); + } + ri0(); + function u(t, n) { + return t.length == 1 ? t(n) : os(t, [n]); + } + function o(t, n, e) { + return t.length == 2 ? t(n, e) : os(t, [n, e]); + } + function ur(t, n, e, i) { + return t.length == 3 ? t(n, e, i) : os(t, [n, e, i]); + } + function R(t, n, e, i, x) { + return t.length == 4 ? t(n, e, i, x) : os(t, [n, e, i, x]); + } + function p7(t, n, e, i, x, c) { + return t.length == 5 ? t(n, e, i, x, c) : os(t, [n, e, i, x, c]); + } + function ei0(t, n, e, i, x, c, s, p) { + return t.length == 7 ? t(n, e, i, x, c, s, p) : os(t, [n, e, i, x, c, s, p]); + } + var $A = [wt, r(wX), -1], $V = [wt, r(DH), -2], q7 = [wt, r(AH), -3], ZA = [wt, r(fH), -4], Jt = [wt, r(KU), -7], ZV = [wt, r(LY), -8], QV = [wt, r(VU), -9], Sn = [wt, r(wU), -11], sl = [wt, r(uX), -12], rz = [0, s7], ni0 = [4, 0, 0, 0, [12, 45, [4, 0, 0, 0, 0]]], QA = [0, [11, r('File "'), [2, 0, [11, r('", line '), [4, 0, 0, 0, [11, r(yH), [4, 0, 0, 0, [12, 45, [4, 0, 0, 0, [11, r(": "), [2, 0, 0]]]]]]]]]], r('File "%s", line %d, characters %d-%d: %s')], ez = [0, 0, [0, 0, 0], [0, 0, 0]], rN = r(""), eN = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), Bv = [0, 0, 0, 0, 1, 0], nz = [0, r(Rx), r(co), r(Ea), r(ca), r(Vo), r(Hf), r(Kx), r(lf), r(xf), r(Gx), r(Tn), r(Ha), r(A7), r(Tf), r(lx), r(po), r(sx), r(Qi), r(Ef), r(Ua), r(oa), r(qa), r(mf), r(tc), r(Df), r(ga), r(tf), r(kf), r(Ga), r(Uf), r(gx), r(fx), r(go), r(hf), r(_o), r($f), r(xa), r($o), r(N7), r(I7), r(xx), r(Ta), r(ja), r(zf), r(na), r(so), r(Fo), r(wx), r(Ra), r(ho), r(v7), r(la), r(ra), r(sa), r(qx), r(Ho), r(Bx), r(jf), r(If), r(Za), r(jx), r(Af), r(vo), r(Sa), r(sf), r(Qa), r(ua), r(ea), r(Nu), r(Tx), r(eo), r(Sf), r(Bf), r(ka), r(Mx), r(Fc), r(Xa), r(La), r(yx), r(ic), r(li), r(So), r(lo), r(Tc), r(Ia), r(hx), r(Ix), r(gc), r(Lf), r(nf), r(tx), r(_a), r(Go), r(kx), r(Ba), r(vf), r(ba), r(mx), r(G7), r(Wa), r(bc), r(Vf), r(yi), r(pf), r(ia), r(Ya), r(Uu), r(Ec), r(bo), r(Hx), r(Ca), r(Fx), r(Aa), r(e7), r(af), r(ko), r(ro), r(za), r(Rf), r(ac), r(ya), r(Wo), r(Qf), r(of), r(ff), r(Ax), r(pc), r(Ao), r(jo), r(io), r(Ox), r(ao), r(Nx), r(rf), r(rc), r(Ko), r(Da), r(wc), r(Jo), r(vx), r(hc), r(Px), r(ha), r(Dx), r(nx), r(zx), r(Pa), r(Ux), r(Wx), r(_c), r(xr), r(mc), r(Of), r(yf), r(bx), r(qo), r(Lx), r(gf), r(nc), r(Kf), r(da), r(ma), r(ex), r(Xf), r(uf), r(Nf), r(ix), r(oo), r(Zo), r(fc), r(lc), r(Xo), r(Va), r(df), r(Mo), r(Qo), r(mi), r(rx), r(Zf), r(zo), r(bf), r(va), r(vc), r(kc), r(Wf), r(Yf), r(Bo), r(Cf), r(ta), r(aa), r(sc), r(Zx), r(wa), r(Yo), r($a), r(r7), r(De), r(pa), r(px), r(Ju), r(cx), r(Mf), r(Sc), r(_f), r(Vx), r(Sx), r(Na), r(yc), r(D7), r(yo), r(Uo), r(Jf), r($x), r(wo), r(Pf), r(Io), r(F7), r(no), r(fa), r(xo), r(_x), r(Jx), r(Xx), r(Ka), r(Ro), r(qf), r(Oa), r(ax), r(Ff), r(Cx), r(uo), r(Ja), r(wf), r(No), r(ec), r(Po), r(To), r(Gf), r(oc), r(ux), r(dc), r(cu), r(Oo), r(to), r(Yx), r(Eu)], tz = [0, r("first_leading"), r("last_trailing")], uz = [0, 0]; + hi(11, sl, uX), hi(10, Sn, wU), hi(9, [wt, r(dY), CX], dY), hi(8, QV, VU), hi(7, ZV, LY), hi(6, Jt, KU), hi(5, [wt, r(rY), -6], rY), hi(4, [wt, r(IH), -5], IH), hi(3, ZA, fH), hi(2, q7, AH), hi(1, $V, DH), hi(0, $A, wX); + var ti0 = r("output_substring"), ui0 = r("%.12g"), ii0 = r(Lo), fi0 = r(Gi), xi0 = r(Ci), oi0 = r(uY), ai0 = r("\\'"), ci0 = r("\\b"), si0 = r("\\t"), vi0 = r("\\n"), li0 = r("\\r"), bi0 = r("List.iter2"), pi0 = r("tl"), mi0 = r("hd"), _i0 = r("String.blit / Bytes.blit_string"), yi0 = r("Bytes.blit"), hi0 = r("String.sub / Bytes.sub"), di0 = r("Array.blit"), ki0 = r("Array.sub"), wi0 = r("Map.remove_min_elt"), Ei0 = [0, 0, 0, 0], Si0 = [0, r("map.ml"), 400, 10], gi0 = [0, 0, 0], Fi0 = r(e6), Ti0 = r(e6), Oi0 = r(e6), Ii0 = r(e6), Ai0 = r("Stdlib.Queue.Empty"), Ni0 = r("CamlinternalLazy.Undefined"), Ci0 = r("Buffer.add_substring/add_subbytes"), Pi0 = r("Buffer.add: cannot grow buffer"), Di0 = [0, r(GU), 93, 2], Li0 = [0, r(GU), 94, 2], Ri0 = r("Buffer.sub"), ji0 = r("%c"), Gi0 = r("%s"), Mi0 = r(oX), Bi0 = r(MY), qi0 = r(xH), Ui0 = r(YH), Hi0 = r("%f"), Xi0 = r(An), Yi0 = r("%{"), Vi0 = r("%}"), zi0 = r("%("), Ki0 = r("%)"), Wi0 = r(N0), Ji0 = r("%t"), $i0 = r("%?"), Zi0 = r("%r"), Qi0 = r("%_r"), rf0 = [0, r(su), 850, 23], ef0 = [0, r(su), 814, 21], nf0 = [0, r(su), 815, 21], tf0 = [0, r(su), 818, 21], uf0 = [0, r(su), 819, 21], if0 = [0, r(su), 822, 19], ff0 = [0, r(su), 823, 19], xf0 = [0, r(su), 826, 22], of0 = [0, r(su), 827, 22], af0 = [0, r(su), 831, 30], cf0 = [0, r(su), 832, 30], sf0 = [0, r(su), 836, 26], vf0 = [0, r(su), 837, 26], lf0 = [0, r(su), 846, 28], bf0 = [0, r(su), 847, 28], pf0 = [0, r(su), 851, 23], mf0 = r(wY), _f0 = [0, r(su), 1558, 4], yf0 = r("Printf: bad conversion %["), hf0 = [0, r(su), 1626, 39], df0 = [0, r(su), 1649, 31], kf0 = [0, r(su), 1650, 31], wf0 = r("Printf: bad conversion %_"), Ef0 = r(SY), Sf0 = r(bY), gf0 = r(SY), Ff0 = r(bY), Tf0 = [0, [11, r("invalid box description "), [3, 0, 0]], r("invalid box description %S")], Of0 = r(C), If0 = [0, 0, 4], Af0 = r(C), Nf0 = r(dX), Cf0 = r("h"), Pf0 = r("hov"), Df0 = r("hv"), Lf0 = r(pV), Rf0 = r(sw), jf0 = r("neg_infinity"), Gf0 = r(mU), Mf0 = r(Lo), Bf0 = r("%+nd"), qf0 = r("% nd"), Uf0 = r("%+ni"), Hf0 = r("% ni"), Xf0 = r("%nx"), Yf0 = r("%#nx"), Vf0 = r("%nX"), zf0 = r("%#nX"), Kf0 = r("%no"), Wf0 = r("%#no"), Jf0 = r("%nd"), $f0 = r(xH), Zf0 = r("%nu"), Qf0 = r("%+ld"), rx0 = r("% ld"), ex0 = r("%+li"), nx0 = r("% li"), tx0 = r("%lx"), ux0 = r("%#lx"), ix0 = r("%lX"), fx0 = r("%#lX"), xx0 = r("%lo"), ox0 = r("%#lo"), ax0 = r("%ld"), cx0 = r(MY), sx0 = r("%lu"), vx0 = r("%+Ld"), lx0 = r("% Ld"), bx0 = r("%+Li"), px0 = r("% Li"), mx0 = r("%Lx"), _x0 = r("%#Lx"), yx0 = r("%LX"), hx0 = r("%#LX"), dx0 = r("%Lo"), kx0 = r("%#Lo"), wx0 = r("%Ld"), Ex0 = r(YH), Sx0 = r("%Lu"), gx0 = r("%+d"), Fx0 = r("% d"), Tx0 = r("%+i"), Ox0 = r("% i"), Ix0 = r("%x"), Ax0 = r("%#x"), Nx0 = r("%X"), Cx0 = r("%#X"), Px0 = r("%o"), Dx0 = r("%#o"), Lx0 = r(N2), Rx0 = r(oX), jx0 = r(wY), Gx0 = r(z), Mx0 = r("@}"), Bx0 = r("@?"), qx0 = r(`@ +`), Ux0 = r("@."), Hx0 = r("@@"), Xx0 = r("@%"), Yx0 = r(gX), Vx0 = r("CamlinternalFormat.Type_mismatch"), zx0 = r(C), Kx0 = [0, [11, r($H), [2, 0, [2, 0, 0]]], r(", %s%s")], Wx0 = [0, [11, r(yd), [2, 0, [12, 10, 0]]], r(TU)], Jx0 = [0, [11, r("Fatal error in uncaught exception handler: exception "), [2, 0, [12, 10, 0]]], r(`Fatal error in uncaught exception handler: exception %s +`)], $x0 = r("Fatal error: out of memory in uncaught exception handler"), Zx0 = [0, [11, r(yd), [2, 0, [12, 10, 0]]], r(TU)], Qx0 = [0, [2, 0, [12, 10, 0]], r(`%s +`)], ro0 = [0, [11, r(NY), 0], r(NY)], eo0 = r("Raised at"), no0 = r("Re-raised at"), to0 = r("Raised by primitive operation at"), uo0 = r("Called from"), io0 = r(" (inlined)"), fo0 = r(C), xo0 = [0, [2, 0, [12, 32, [2, 0, [11, r(' in file "'), [2, 0, [12, 34, [2, 0, [11, r(", line "), [4, 0, 0, 0, [11, r(yH), ni0]]]]]]]]]], r('%s %s in file "%s"%s, line %d, characters %d-%d')], oo0 = [0, [2, 0, [11, r(" unknown location"), 0]], r("%s unknown location")], ao0 = r("Out of memory"), co0 = r("Stack overflow"), so0 = r("Pattern matching failed"), vo0 = r("Assertion failed"), lo0 = r("Undefined recursive module"), bo0 = [0, [12, 40, [2, 0, [2, 0, [12, 41, 0]]]], r("(%s%s)")], po0 = r(C), mo0 = r(C), _o0 = [0, [12, 40, [2, 0, [12, 41, 0]]], r("(%s)")], yo0 = [0, [4, 0, 0, 0, 0], r(N2)], ho0 = [0, [3, 0, 0], r(Vt)], do0 = r(bv), ko0 = [0, r(C), r(`(Cannot print locations: + bytecode executable program file not found)`), r(`(Cannot print locations: + bytecode executable program file appears to be corrupt)`), r(`(Cannot print locations: + bytecode executable program file has wrong magic number)`), r(`(Cannot print locations: + bytecode executable program file cannot be opened; + -- too many open files. Try running with OCAMLRUNPARAM=b=2)`)], wo0 = [3, 0, 3], Eo0 = r(Lo), So0 = r(cv), go0 = r("Flow_ast.Function.BodyBlock@ ")], Ca0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Pa0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Da0 = [0, [17, 0, [12, 41, 0]], r(d0)], La0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ra0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Function.BodyExpression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Function.BodyExpression@ ")], ja0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ga0 = [0, [15, 0], r(N0)], Ma0 = r(Yr), Ba0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], qa0 = r("Flow_ast.Function.id"), Ua0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ha0 = r(tr), Xa0 = r(Z0), Ya0 = r(nr), Va0 = [0, [17, 0, 0], r(z)], za0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ka0 = r(Dt), Wa0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ja0 = [0, [17, 0, 0], r(z)], $a0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Za0 = r(Wn), Qa0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rc0 = [0, [17, 0, 0], r(z)], ec0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], nc0 = r(gs), tc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uc0 = [0, [9, 0, 0], r(An)], ic0 = [0, [17, 0, 0], r(z)], fc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], xc0 = r(G7), oc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ac0 = [0, [9, 0, 0], r(An)], cc0 = [0, [17, 0, 0], r(z)], sc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], vc0 = r(r7), lc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bc0 = r(tr), pc0 = r(Z0), mc0 = r(nr), _c0 = [0, [17, 0, 0], r(z)], yc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], hc0 = r(Ju), dc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kc0 = [0, [17, 0, 0], r(z)], wc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ec0 = r(sv), Sc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gc0 = r(tr), Fc0 = r(Z0), Tc0 = r(nr), Oc0 = [0, [17, 0, 0], r(z)], Ic0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ac0 = r(Xr), Nc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Cc0 = r(tr), Pc0 = r(Z0), Dc0 = r(nr), Lc0 = [0, [17, 0, 0], r(z)], Rc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], jc0 = r("sig_loc"), Gc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Mc0 = [0, [17, 0, 0], r(z)], Bc0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], qc0 = [0, [15, 0], r(N0)], Uc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Hc0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Xc0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Yc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Vc0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], zc0 = r("Flow_ast.Function.Params.this_"), Kc0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Wc0 = r(tr), Jc0 = r(Z0), $c0 = r(nr), Zc0 = [0, [17, 0, 0], r(z)], Qc0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], rs0 = r(Dt), es0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ns0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], ts0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], us0 = [0, [17, 0, 0], r(z)], is0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], fs0 = r(xd), xs0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], os0 = r(tr), as0 = r(Z0), cs0 = r(nr), ss0 = [0, [17, 0, 0], r(z)], vs0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ls0 = r(Xr), bs0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ps0 = r(tr), ms0 = r(Z0), _s0 = r(nr), ys0 = [0, [17, 0, 0], r(z)], hs0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], ds0 = [0, [15, 0], r(N0)], ks0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], ws0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Es0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ss0 = [0, [15, 0], r(N0)], gs0 = r(Yr), Fs0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Ts0 = r("Flow_ast.Function.ThisParam.annot"), Os0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Is0 = [0, [17, 0, 0], r(z)], As0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ns0 = r(Xr), Cs0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ps0 = r(tr), Ds0 = r(Z0), Ls0 = r(nr), Rs0 = [0, [17, 0, 0], r(z)], js0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Gs0 = [0, [15, 0], r(N0)], Ms0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Bs0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], qs0 = [0, [17, 0, [12, 41, 0]], r(d0)], Us0 = [0, [15, 0], r(N0)], Hs0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Xs0 = r("Flow_ast.Function.Param.argument"), Ys0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Vs0 = [0, [17, 0, 0], r(z)], zs0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ks0 = r(_i), Ws0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Js0 = r(tr), $s0 = r(Z0), Zs0 = r(nr), Qs0 = [0, [17, 0, 0], r(z)], r10 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], e10 = [0, [15, 0], r(N0)], n10 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], t10 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], u10 = [0, [17, 0, [12, 41, 0]], r(d0)], i10 = [0, [15, 0], r(N0)], f10 = r(Yr), x10 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], o10 = r("Flow_ast.Function.RestParam.argument"), a10 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], c10 = [0, [17, 0, 0], r(z)], s10 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], v10 = r(Xr), l10 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], b10 = r(tr), p10 = r(Z0), m10 = r(nr), _10 = [0, [17, 0, 0], r(z)], y10 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], h10 = [0, [15, 0], r(N0)], d10 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], k10 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], w10 = [0, [17, 0, [12, 41, 0]], r(d0)], E10 = [0, [15, 0], r(N0)], S10 = r(Yr), g10 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], F10 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], T10 = r("Flow_ast.Class.id"), O10 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], I10 = r(tr), A10 = r(Z0), N10 = r(nr), C10 = [0, [17, 0, 0], r(z)], P10 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], D10 = r(Wn), L10 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], R10 = [0, [17, 0, 0], r(z)], j10 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], G10 = r(sv), M10 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], B10 = r(tr), q10 = r(Z0), U10 = r(nr), H10 = [0, [17, 0, 0], r(z)], X10 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Y10 = r(P7), V10 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], z10 = r(tr), K10 = r(Z0), W10 = r(nr), J10 = [0, [17, 0, 0], r(z)], $10 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Z10 = r(ws), Q10 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rv0 = r(tr), ev0 = r(Z0), nv0 = r(nr), tv0 = [0, [17, 0, 0], r(z)], uv0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], iv0 = r("class_decorators"), fv0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xv0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], ov0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], av0 = [0, [17, 0, 0], r(z)], cv0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], sv0 = r(Xr), vv0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lv0 = r(tr), bv0 = r(Z0), pv0 = r(nr), mv0 = [0, [17, 0, 0], r(z)], _v0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], yv0 = [0, [15, 0], r(N0)], hv0 = r(Yr), dv0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], kv0 = r("Flow_ast.Class.Decorator.expression"), wv0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ev0 = [0, [17, 0, 0], r(z)], Sv0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], gv0 = r(Xr), Fv0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Tv0 = r(tr), Ov0 = r(Z0), Iv0 = r(nr), Av0 = [0, [17, 0, 0], r(z)], Nv0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Cv0 = [0, [15, 0], r(N0)], Pv0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Dv0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Lv0 = [0, [17, 0, [12, 41, 0]], r(d0)], Rv0 = [0, [15, 0], r(N0)], jv0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Class.Body.Method"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Class.Body.Method@ ")], Gv0 = [0, [17, 0, [12, 41, 0]], r(d0)], Mv0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Class.Body.Property"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Class.Body.Property@ ")], Bv0 = [0, [17, 0, [12, 41, 0]], r(d0)], qv0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Class.Body.PrivateField"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Class.Body.PrivateField@ ")], Uv0 = [0, [17, 0, [12, 41, 0]], r(d0)], Hv0 = [0, [15, 0], r(N0)], Xv0 = r(Yr), Yv0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Vv0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], zv0 = r("Flow_ast.Class.Body.body"), Kv0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Wv0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Jv0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], $v0 = [0, [17, 0, 0], r(z)], Zv0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Qv0 = r(Xr), r20 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], e20 = r(tr), n20 = r(Z0), t20 = r(nr), u20 = [0, [17, 0, 0], r(z)], i20 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], f20 = [0, [15, 0], r(N0)], x20 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], o20 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], a20 = [0, [17, 0, [12, 41, 0]], r(d0)], c20 = [0, [15, 0], r(N0)], s20 = r(Yr), v20 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], l20 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], b20 = r("Flow_ast.Class.Implements.interfaces"), p20 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], m20 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], _20 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], y20 = [0, [17, 0, 0], r(z)], h20 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], d20 = r(Xr), k20 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], w20 = r(tr), E20 = r(Z0), S20 = r(nr), g20 = [0, [17, 0, 0], r(z)], F20 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], T20 = [0, [15, 0], r(N0)], O20 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], I20 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], A20 = [0, [17, 0, [12, 41, 0]], r(d0)], N20 = [0, [15, 0], r(N0)], C20 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], P20 = r("Flow_ast.Class.Implements.Interface.id"), D20 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], L20 = [0, [17, 0, 0], r(z)], R20 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], j20 = r(Z2), G20 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], M20 = r(tr), B20 = r(Z0), q20 = r(nr), U20 = [0, [17, 0, 0], r(z)], H20 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], X20 = [0, [15, 0], r(N0)], Y20 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], V20 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], z20 = [0, [17, 0, [12, 41, 0]], r(d0)], K20 = [0, [15, 0], r(N0)], W20 = r(Yr), J20 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], $20 = r("Flow_ast.Class.Extends.expr"), Z20 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Q20 = [0, [17, 0, 0], r(z)], rl0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], el0 = r(Z2), nl0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], tl0 = r(tr), ul0 = r(Z0), il0 = r(nr), fl0 = [0, [17, 0, 0], r(z)], xl0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ol0 = r(Xr), al0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], cl0 = r(tr), sl0 = r(Z0), vl0 = r(nr), ll0 = [0, [17, 0, 0], r(z)], bl0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], pl0 = [0, [15, 0], r(N0)], ml0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], _l0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], yl0 = [0, [17, 0, [12, 41, 0]], r(d0)], hl0 = [0, [15, 0], r(N0)], dl0 = r(Yr), kl0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], wl0 = r("Flow_ast.Class.PrivateField.key"), El0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Sl0 = [0, [17, 0, 0], r(z)], gl0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Fl0 = r(Bn), Tl0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ol0 = [0, [17, 0, 0], r(z)], Il0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Al0 = r(Qc), Nl0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Cl0 = [0, [17, 0, 0], r(z)], Pl0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Dl0 = r(nu), Ll0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Rl0 = [0, [9, 0, 0], r(An)], jl0 = [0, [17, 0, 0], r(z)], Gl0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ml0 = r(cu), Bl0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ql0 = r(tr), Ul0 = r(Z0), Hl0 = r(nr), Xl0 = [0, [17, 0, 0], r(z)], Yl0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Vl0 = r(Xr), zl0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Kl0 = r(tr), Wl0 = r(Z0), Jl0 = r(nr), $l0 = [0, [17, 0, 0], r(z)], Zl0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Ql0 = [0, [15, 0], r(N0)], rb0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], eb0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], nb0 = [0, [17, 0, [12, 41, 0]], r(d0)], tb0 = [0, [15, 0], r(N0)], ub0 = r("Flow_ast.Class.Property.Uninitialized"), ib0 = r("Flow_ast.Class.Property.Declared"), fb0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Class.Property.Initialized"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Class.Property.Initialized@ ")], xb0 = [0, [17, 0, [12, 41, 0]], r(d0)], ob0 = [0, [15, 0], r(N0)], ab0 = r(Yr), cb0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], sb0 = r("Flow_ast.Class.Property.key"), vb0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lb0 = [0, [17, 0, 0], r(z)], bb0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], pb0 = r(Bn), mb0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _b0 = [0, [17, 0, 0], r(z)], yb0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], hb0 = r(Qc), db0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kb0 = [0, [17, 0, 0], r(z)], wb0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Eb0 = r(nu), Sb0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gb0 = [0, [9, 0, 0], r(An)], Fb0 = [0, [17, 0, 0], r(z)], Tb0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ob0 = r(cu), Ib0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ab0 = r(tr), Nb0 = r(Z0), Cb0 = r(nr), Pb0 = [0, [17, 0, 0], r(z)], Db0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Lb0 = r(Xr), Rb0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jb0 = r(tr), Gb0 = r(Z0), Mb0 = r(nr), Bb0 = [0, [17, 0, 0], r(z)], qb0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Ub0 = [0, [15, 0], r(N0)], Hb0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Xb0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Yb0 = [0, [17, 0, [12, 41, 0]], r(d0)], Vb0 = [0, [15, 0], r(N0)], zb0 = r(Yr), Kb0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Wb0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Jb0 = r("Flow_ast.Class.Method.kind"), $b0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Zb0 = [0, [17, 0, 0], r(z)], Qb0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], r40 = r(ii), e40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], n40 = [0, [17, 0, 0], r(z)], t40 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], u40 = r(Bn), i40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], f40 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], x40 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], o40 = [0, [17, 0, [12, 41, 0]], r(d0)], a40 = [0, [17, 0, 0], r(z)], c40 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], s40 = r(nu), v40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], l40 = [0, [9, 0, 0], r(An)], b40 = [0, [17, 0, 0], r(z)], p40 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], m40 = r(j_), _40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], y40 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], h40 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], d40 = [0, [17, 0, 0], r(z)], k40 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], w40 = r(Xr), E40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], S40 = r(tr), g40 = r(Z0), F40 = r(nr), T40 = [0, [17, 0, 0], r(z)], O40 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], I40 = [0, [15, 0], r(N0)], A40 = r("Flow_ast.Class.Method.Constructor"), N40 = r("Flow_ast.Class.Method.Method"), C40 = r("Flow_ast.Class.Method.Get"), P40 = r("Flow_ast.Class.Method.Set"), D40 = [0, [15, 0], r(N0)], L40 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], R40 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], j40 = [0, [17, 0, [12, 41, 0]], r(d0)], G40 = [0, [15, 0], r(N0)], M40 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], B40 = r("Flow_ast.Comment.kind"), q40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], U40 = [0, [17, 0, 0], r(z)], H40 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], X40 = r("text"), Y40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], V40 = [0, [3, 0, 0], r(Vt)], z40 = [0, [17, 0, 0], r(z)], K40 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], W40 = r("on_newline"), J40 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $40 = [0, [9, 0, 0], r(An)], Z40 = [0, [17, 0, 0], r(z)], Q40 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], r80 = [0, [15, 0], r(N0)], e80 = r("Flow_ast.Comment.Line"), n80 = r("Flow_ast.Comment.Block"), t80 = [0, [15, 0], r(N0)], u80 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], i80 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], f80 = [0, [17, 0, [12, 41, 0]], r(d0)], x80 = [0, [15, 0], r(N0)], o80 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Object"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Object@ ")], a80 = [0, [17, 0, [12, 41, 0]], r(d0)], c80 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Array"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Array@ ")], s80 = [0, [17, 0, [12, 41, 0]], r(d0)], v80 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Identifier@ ")], l80 = [0, [17, 0, [12, 41, 0]], r(d0)], b80 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Expression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Expression@ ")], p80 = [0, [17, 0, [12, 41, 0]], r(d0)], m80 = [0, [15, 0], r(N0)], _80 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], y80 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], h80 = [0, [17, 0, [12, 41, 0]], r(d0)], d80 = [0, [15, 0], r(N0)], k80 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], w80 = r("Flow_ast.Pattern.Identifier.name"), E80 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], S80 = [0, [17, 0, 0], r(z)], g80 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], F80 = r(Qc), T80 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], O80 = [0, [17, 0, 0], r(z)], I80 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], A80 = r(qu), N80 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], C80 = [0, [9, 0, 0], r(An)], P80 = [0, [17, 0, 0], r(z)], D80 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], L80 = [0, [15, 0], r(N0)], R80 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], j80 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], G80 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], M80 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], B80 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], q80 = r("Flow_ast.Pattern.Array.elements"), U80 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], H80 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], X80 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Y80 = [0, [17, 0, 0], r(z)], V80 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], z80 = r(Qc), K80 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], W80 = [0, [17, 0, 0], r(z)], J80 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], $80 = r(Xr), Z80 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Q80 = r(tr), r30 = r(Z0), e30 = r(nr), n30 = [0, [17, 0, 0], r(z)], t30 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], u30 = [0, [15, 0], r(N0)], i30 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Array.Element"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Array.Element@ ")], f30 = [0, [17, 0, [12, 41, 0]], r(d0)], x30 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Array.RestElement"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Array.RestElement@ ")], o30 = [0, [17, 0, [12, 41, 0]], r(d0)], a30 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Array.Hole"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Array.Hole@ ")], c30 = [0, [17, 0, [12, 41, 0]], r(d0)], s30 = [0, [15, 0], r(N0)], v30 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], l30 = r("Flow_ast.Pattern.Array.Element.argument"), b30 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], p30 = [0, [17, 0, 0], r(z)], m30 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], _30 = r(_i), y30 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], h30 = r(tr), d30 = r(Z0), k30 = r(nr), w30 = [0, [17, 0, 0], r(z)], E30 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], S30 = [0, [15, 0], r(N0)], g30 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], F30 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], T30 = [0, [17, 0, [12, 41, 0]], r(d0)], O30 = [0, [15, 0], r(N0)], I30 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], A30 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], N30 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], C30 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], P30 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], D30 = r("Flow_ast.Pattern.Object.properties"), L30 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], R30 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], j30 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], G30 = [0, [17, 0, 0], r(z)], M30 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], B30 = r(Qc), q30 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], U30 = [0, [17, 0, 0], r(z)], H30 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], X30 = r(Xr), Y30 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], V30 = r(tr), z30 = r(Z0), K30 = r(nr), W30 = [0, [17, 0, 0], r(z)], J30 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], $30 = [0, [15, 0], r(N0)], Z30 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Object.Property"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Object.Property@ ")], Q30 = [0, [17, 0, [12, 41, 0]], r(d0)], r60 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Object.RestElement"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Object.RestElement@ ")], e60 = [0, [17, 0, [12, 41, 0]], r(d0)], n60 = [0, [15, 0], r(N0)], t60 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], u60 = r("Flow_ast.Pattern.Object.Property.key"), i60 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], f60 = [0, [17, 0, 0], r(z)], x60 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], o60 = r(mi), a60 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], c60 = [0, [17, 0, 0], r(z)], s60 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], v60 = r(_i), l60 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], b60 = r(tr), p60 = r(Z0), m60 = r(nr), _60 = [0, [17, 0, 0], r(z)], y60 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], h60 = r(f6), d60 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], k60 = [0, [9, 0, 0], r(An)], w60 = [0, [17, 0, 0], r(z)], E60 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], S60 = [0, [15, 0], r(N0)], g60 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], F60 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], T60 = [0, [17, 0, [12, 41, 0]], r(d0)], O60 = [0, [15, 0], r(N0)], I60 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Object.Property.Literal"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Object.Property.Literal@ ")], A60 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], N60 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], C60 = [0, [17, 0, [12, 41, 0]], r(d0)], P60 = [0, [17, 0, [12, 41, 0]], r(d0)], D60 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Object.Property.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Object.Property.Identifier@ ")], L60 = [0, [17, 0, [12, 41, 0]], r(d0)], R60 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Pattern.Object.Property.Computed"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Pattern.Object.Property.Computed@ ")], j60 = [0, [17, 0, [12, 41, 0]], r(d0)], G60 = [0, [15, 0], r(N0)], M60 = r(Yr), B60 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], q60 = r("Flow_ast.Pattern.RestElement.argument"), U60 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], H60 = [0, [17, 0, 0], r(z)], X60 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Y60 = r(Xr), V60 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], z60 = r(tr), K60 = r(Z0), W60 = r(nr), J60 = [0, [17, 0, 0], r(z)], $60 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Z60 = [0, [15, 0], r(N0)], Q60 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], rp0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], ep0 = [0, [17, 0, [12, 41, 0]], r(d0)], np0 = [0, [15, 0], r(N0)], tp0 = r(Yr), up0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ip0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], fp0 = r("Flow_ast.JSX.frag_opening_element"), xp0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], op0 = [0, [17, 0, 0], r(z)], ap0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], cp0 = r("frag_closing_element"), sp0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], vp0 = [0, [17, 0, 0], r(z)], lp0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], bp0 = r("frag_children"), pp0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mp0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], _p0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], yp0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], hp0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], dp0 = [0, [17, 0, [12, 41, 0]], r(d0)], kp0 = [0, [17, 0, 0], r(z)], wp0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ep0 = r("frag_comments"), Sp0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gp0 = r(tr), Fp0 = r(Z0), Tp0 = r(nr), Op0 = [0, [17, 0, 0], r(z)], Ip0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Ap0 = [0, [15, 0], r(N0)], Np0 = r(Yr), Cp0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Pp0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Dp0 = r("Flow_ast.JSX.opening_element"), Lp0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Rp0 = [0, [17, 0, 0], r(z)], jp0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Gp0 = r("closing_element"), Mp0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Bp0 = r(tr), qp0 = r(Z0), Up0 = r(nr), Hp0 = [0, [17, 0, 0], r(z)], Xp0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Yp0 = r(Ve), Vp0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zp0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Kp0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Wp0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Jp0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], $p0 = [0, [17, 0, [12, 41, 0]], r(d0)], Zp0 = [0, [17, 0, 0], r(z)], Qp0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], r50 = r(Xr), e50 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], n50 = r(tr), t50 = r(Z0), u50 = r(nr), i50 = [0, [17, 0, 0], r(z)], f50 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], x50 = [0, [15, 0], r(N0)], o50 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Element"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Element@ ")], a50 = [0, [17, 0, [12, 41, 0]], r(d0)], c50 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Fragment"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Fragment@ ")], s50 = [0, [17, 0, [12, 41, 0]], r(d0)], v50 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.ExpressionContainer"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.ExpressionContainer@ ")], l50 = [0, [17, 0, [12, 41, 0]], r(d0)], b50 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.SpreadChild"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.SpreadChild@ ")], p50 = [0, [17, 0, [12, 41, 0]], r(d0)], m50 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Text"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Text@ ")], _50 = [0, [17, 0, [12, 41, 0]], r(d0)], y50 = [0, [15, 0], r(N0)], h50 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], d50 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], k50 = [0, [17, 0, [12, 41, 0]], r(d0)], w50 = [0, [15, 0], r(N0)], E50 = r(Yr), S50 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], g50 = r("Flow_ast.JSX.SpreadChild.expression"), F50 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], T50 = [0, [17, 0, 0], r(z)], O50 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], I50 = r(Xr), A50 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], N50 = r(tr), C50 = r(Z0), P50 = r(nr), D50 = [0, [17, 0, 0], r(z)], L50 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], R50 = [0, [15, 0], r(N0)], j50 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], G50 = r("Flow_ast.JSX.Closing.name"), M50 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], B50 = [0, [17, 0, 0], r(z)], q50 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], U50 = [0, [15, 0], r(N0)], H50 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], X50 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Y50 = [0, [17, 0, [12, 41, 0]], r(d0)], V50 = [0, [15, 0], r(N0)], z50 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], K50 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], W50 = r("Flow_ast.JSX.Opening.name"), J50 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $50 = [0, [17, 0, 0], r(z)], Z50 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Q50 = r("self_closing"), rm0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], em0 = [0, [9, 0, 0], r(An)], nm0 = [0, [17, 0, 0], r(z)], tm0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], um0 = r(mY), im0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], fm0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], xm0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], om0 = [0, [17, 0, 0], r(z)], am0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], cm0 = [0, [15, 0], r(N0)], sm0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Opening.Attribute"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Opening.Attribute@ ")], vm0 = [0, [17, 0, [12, 41, 0]], r(d0)], lm0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Opening.SpreadAttribute"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Opening.SpreadAttribute@ ")], bm0 = [0, [17, 0, [12, 41, 0]], r(d0)], pm0 = [0, [15, 0], r(N0)], mm0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], _m0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], ym0 = [0, [17, 0, [12, 41, 0]], r(d0)], hm0 = [0, [15, 0], r(N0)], dm0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Identifier@ ")], km0 = [0, [17, 0, [12, 41, 0]], r(d0)], wm0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.NamespacedName"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.NamespacedName@ ")], Em0 = [0, [17, 0, [12, 41, 0]], r(d0)], Sm0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.MemberExpression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.MemberExpression@ ")], gm0 = [0, [17, 0, [12, 41, 0]], r(d0)], Fm0 = [0, [15, 0], r(N0)], Tm0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Om0 = r("Flow_ast.JSX.MemberExpression._object"), Im0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Am0 = [0, [17, 0, 0], r(z)], Nm0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Cm0 = r(Iv), Pm0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Dm0 = [0, [17, 0, 0], r(z)], Lm0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Rm0 = [0, [15, 0], r(N0)], jm0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.MemberExpression.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.MemberExpression.Identifier@ ")], Gm0 = [0, [17, 0, [12, 41, 0]], r(d0)], Mm0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.MemberExpression.MemberExpression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.MemberExpression.MemberExpression@ ")], Bm0 = [0, [17, 0, [12, 41, 0]], r(d0)], qm0 = [0, [15, 0], r(N0)], Um0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Hm0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Xm0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ym0 = [0, [15, 0], r(N0)], Vm0 = r(Yr), zm0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Km0 = r("Flow_ast.JSX.SpreadAttribute.argument"), Wm0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Jm0 = [0, [17, 0, 0], r(z)], $m0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Zm0 = r(Xr), Qm0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], r90 = r(tr), e90 = r(Z0), n90 = r(nr), t90 = [0, [17, 0, 0], r(z)], u90 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], i90 = [0, [15, 0], r(N0)], f90 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], x90 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], o90 = [0, [17, 0, [12, 41, 0]], r(d0)], a90 = [0, [15, 0], r(N0)], c90 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], s90 = r("Flow_ast.JSX.Attribute.name"), v90 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], l90 = [0, [17, 0, 0], r(z)], b90 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], p90 = r(Bn), m90 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _90 = r(tr), y90 = r(Z0), h90 = r(nr), d90 = [0, [17, 0, 0], r(z)], k90 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], w90 = [0, [15, 0], r(N0)], E90 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Attribute.Literal ("), [17, [0, r(Ce), 0, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Attribute.Literal (@,")], S90 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], g90 = [0, [17, [0, r(Ce), 0, 0], [11, r(EX), [17, 0, 0]]], r(RU)], F90 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Attribute.ExpressionContainer ("), [17, [0, r(Ce), 0, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Attribute.ExpressionContainer (@,")], T90 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], O90 = [0, [17, [0, r(Ce), 0, 0], [11, r(EX), [17, 0, 0]]], r(RU)], I90 = [0, [15, 0], r(N0)], A90 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Attribute.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Attribute.Identifier@ ")], N90 = [0, [17, 0, [12, 41, 0]], r(d0)], C90 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.Attribute.NamespacedName"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.Attribute.NamespacedName@ ")], P90 = [0, [17, 0, [12, 41, 0]], r(d0)], D90 = [0, [15, 0], r(N0)], L90 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], R90 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], j90 = [0, [17, 0, [12, 41, 0]], r(d0)], G90 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], M90 = r("Flow_ast.JSX.Text.value"), B90 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], q90 = [0, [3, 0, 0], r(Vt)], U90 = [0, [17, 0, 0], r(z)], H90 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], X90 = r(c7), Y90 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], V90 = [0, [3, 0, 0], r(Vt)], z90 = [0, [17, 0, 0], r(z)], K90 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], W90 = [0, [15, 0], r(N0)], J90 = [0, [15, 0], r(N0)], $90 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.JSX.ExpressionContainer.Expression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.JSX.ExpressionContainer.Expression@ ")], Z90 = [0, [17, 0, [12, 41, 0]], r(d0)], Q90 = r("Flow_ast.JSX.ExpressionContainer.EmptyExpression"), r_0 = [0, [15, 0], r(N0)], e_0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], n_0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], t_0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], u_0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], i_0 = r("Flow_ast.JSX.ExpressionContainer.expression"), f_0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], x_0 = [0, [17, 0, 0], r(z)], o_0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], a_0 = r(Xr), c_0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], s_0 = r(tr), v_0 = r(Z0), l_0 = r(nr), b_0 = [0, [17, 0, 0], r(z)], p_0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], m_0 = [0, [15, 0], r(N0)], __0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], y_0 = r("Flow_ast.JSX.NamespacedName.namespace"), h_0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], d_0 = [0, [17, 0, 0], r(z)], k_0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], w_0 = r(ui), E_0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], S_0 = [0, [17, 0, 0], r(z)], g_0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], F_0 = [0, [15, 0], r(N0)], T_0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], O_0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], I_0 = [0, [17, 0, [12, 41, 0]], r(d0)], A_0 = [0, [15, 0], r(N0)], N_0 = r(Yr), C_0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], P_0 = r("Flow_ast.JSX.Identifier.name"), D_0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], L_0 = [0, [3, 0, 0], r(Vt)], R_0 = [0, [17, 0, 0], r(z)], j_0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], G_0 = r(Xr), M_0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], B_0 = r(tr), q_0 = r(Z0), U_0 = r(nr), H_0 = [0, [17, 0, 0], r(z)], X_0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Y_0 = [0, [15, 0], r(N0)], V_0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], z_0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], K_0 = [0, [17, 0, [12, 41, 0]], r(d0)], W_0 = [0, [15, 0], r(N0)], J_0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Array"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Array@ ")], $_0 = [0, [17, 0, [12, 41, 0]], r(d0)], Z_0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.ArrowFunction"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.ArrowFunction@ ")], Q_0 = [0, [17, 0, [12, 41, 0]], r(d0)], ry0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Assignment"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Assignment@ ")], ey0 = [0, [17, 0, [12, 41, 0]], r(d0)], ny0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Binary"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Binary@ ")], ty0 = [0, [17, 0, [12, 41, 0]], r(d0)], uy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Call"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Call@ ")], iy0 = [0, [17, 0, [12, 41, 0]], r(d0)], fy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Class"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Class@ ")], xy0 = [0, [17, 0, [12, 41, 0]], r(d0)], oy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Comprehension"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Comprehension@ ")], ay0 = [0, [17, 0, [12, 41, 0]], r(d0)], cy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Conditional"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Conditional@ ")], sy0 = [0, [17, 0, [12, 41, 0]], r(d0)], vy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Function"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Function@ ")], ly0 = [0, [17, 0, [12, 41, 0]], r(d0)], by0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Generator"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Generator@ ")], py0 = [0, [17, 0, [12, 41, 0]], r(d0)], my0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Identifier@ ")], _y0 = [0, [17, 0, [12, 41, 0]], r(d0)], yy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Import"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Import@ ")], hy0 = [0, [17, 0, [12, 41, 0]], r(d0)], dy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.JSXElement"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.JSXElement@ ")], ky0 = [0, [17, 0, [12, 41, 0]], r(d0)], wy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.JSXFragment"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.JSXFragment@ ")], Ey0 = [0, [17, 0, [12, 41, 0]], r(d0)], Sy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Literal"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Literal@ ")], gy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Fy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Logical"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Logical@ ")], Ty0 = [0, [17, 0, [12, 41, 0]], r(d0)], Oy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Member"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Member@ ")], Iy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ay0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.MetaProperty"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.MetaProperty@ ")], Ny0 = [0, [17, 0, [12, 41, 0]], r(d0)], Cy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.New"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.New@ ")], Py0 = [0, [17, 0, [12, 41, 0]], r(d0)], Dy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Object@ ")], Ly0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ry0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.OptionalCall"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.OptionalCall@ ")], jy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Gy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.OptionalMember"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.OptionalMember@ ")], My0 = [0, [17, 0, [12, 41, 0]], r(d0)], By0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Sequence"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Sequence@ ")], qy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Uy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Super"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Super@ ")], Hy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Xy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.TaggedTemplate"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.TaggedTemplate@ ")], Yy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Vy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.TemplateLiteral"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.TemplateLiteral@ ")], zy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ky0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.This"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.This@ ")], Wy0 = [0, [17, 0, [12, 41, 0]], r(d0)], Jy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.TypeCast"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.TypeCast@ ")], $y0 = [0, [17, 0, [12, 41, 0]], r(d0)], Zy0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Unary"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Unary@ ")], Qy0 = [0, [17, 0, [12, 41, 0]], r(d0)], rh0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Update"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Update@ ")], eh0 = [0, [17, 0, [12, 41, 0]], r(d0)], nh0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Yield"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Yield@ ")], th0 = [0, [17, 0, [12, 41, 0]], r(d0)], uh0 = [0, [15, 0], r(N0)], ih0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], fh0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], xh0 = [0, [17, 0, [12, 41, 0]], r(d0)], oh0 = [0, [15, 0], r(N0)], ah0 = r(Yr), ch0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], sh0 = r("Flow_ast.Expression.Import.argument"), vh0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lh0 = [0, [17, 0, 0], r(z)], bh0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ph0 = r(Xr), mh0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _h0 = r(tr), yh0 = r(Z0), hh0 = r(nr), dh0 = [0, [17, 0, 0], r(z)], kh0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], wh0 = [0, [15, 0], r(N0)], Eh0 = r(Yr), Sh0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], gh0 = r("Flow_ast.Expression.Super.comments"), Fh0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Th0 = r(tr), Oh0 = r(Z0), Ih0 = r(nr), Ah0 = [0, [17, 0, 0], r(z)], Nh0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Ch0 = [0, [15, 0], r(N0)], Ph0 = r(Yr), Dh0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Lh0 = r("Flow_ast.Expression.This.comments"), Rh0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jh0 = r(tr), Gh0 = r(Z0), Mh0 = r(nr), Bh0 = [0, [17, 0, 0], r(z)], qh0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Uh0 = [0, [15, 0], r(N0)], Hh0 = r(Yr), Xh0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Yh0 = r("Flow_ast.Expression.MetaProperty.meta"), Vh0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zh0 = [0, [17, 0, 0], r(z)], Kh0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Wh0 = r(Iv), Jh0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $h0 = [0, [17, 0, 0], r(z)], Zh0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Qh0 = r(Xr), rd0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ed0 = r(tr), nd0 = r(Z0), td0 = r(nr), ud0 = [0, [17, 0, 0], r(z)], id0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], fd0 = [0, [15, 0], r(N0)], xd0 = r(Yr), od0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], ad0 = r("Flow_ast.Expression.TypeCast.expression"), cd0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], sd0 = [0, [17, 0, 0], r(z)], vd0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ld0 = r(Qc), bd0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], pd0 = [0, [17, 0, 0], r(z)], md0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], _d0 = r(Xr), yd0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], hd0 = r(tr), dd0 = r(Z0), kd0 = r(nr), wd0 = [0, [17, 0, 0], r(z)], Ed0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Sd0 = [0, [15, 0], r(N0)], gd0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Fd0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Td0 = r("Flow_ast.Expression.Generator.blocks"), Od0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Id0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Ad0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Nd0 = [0, [17, 0, 0], r(z)], Cd0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Pd0 = r(T4), Dd0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ld0 = r(tr), Rd0 = r(Z0), jd0 = r(nr), Gd0 = [0, [17, 0, 0], r(z)], Md0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Bd0 = [0, [15, 0], r(N0)], qd0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ud0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Hd0 = r("Flow_ast.Expression.Comprehension.blocks"), Xd0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Yd0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Vd0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], zd0 = [0, [17, 0, 0], r(z)], Kd0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Wd0 = r(T4), Jd0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $d0 = r(tr), Zd0 = r(Z0), Qd0 = r(nr), rk0 = [0, [17, 0, 0], r(z)], ek0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], nk0 = [0, [15, 0], r(N0)], tk0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], uk0 = r("Flow_ast.Expression.Comprehension.Block.left"), ik0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], fk0 = [0, [17, 0, 0], r(z)], xk0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ok0 = r(Cu), ak0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ck0 = [0, [17, 0, 0], r(z)], sk0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], vk0 = r(R8), lk0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bk0 = [0, [9, 0, 0], r(An)], pk0 = [0, [17, 0, 0], r(z)], mk0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], _k0 = [0, [15, 0], r(N0)], yk0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], hk0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], dk0 = [0, [17, 0, [12, 41, 0]], r(d0)], kk0 = [0, [15, 0], r(N0)], wk0 = r(Yr), Ek0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Sk0 = r("Flow_ast.Expression.Yield.argument"), gk0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Fk0 = r(tr), Tk0 = r(Z0), Ok0 = r(nr), Ik0 = [0, [17, 0, 0], r(z)], Ak0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Nk0 = r(Xr), Ck0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Pk0 = r(tr), Dk0 = r(Z0), Lk0 = r(nr), Rk0 = [0, [17, 0, 0], r(z)], jk0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Gk0 = r(lY), Mk0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Bk0 = [0, [9, 0, 0], r(An)], qk0 = [0, [17, 0, 0], r(z)], Uk0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Hk0 = r("result_out"), Xk0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Yk0 = [0, [17, 0, 0], r(z)], Vk0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], zk0 = [0, [15, 0], r(N0)], Kk0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Wk0 = r("Flow_ast.Expression.OptionalMember.member"), Jk0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $k0 = [0, [17, 0, 0], r(z)], Zk0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Qk0 = r(lU), rw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ew0 = [0, [17, 0, 0], r(z)], nw0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], tw0 = r(qu), uw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], iw0 = [0, [9, 0, 0], r(An)], fw0 = [0, [17, 0, 0], r(z)], xw0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], ow0 = [0, [15, 0], r(N0)], aw0 = r(Yr), cw0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], sw0 = r("Flow_ast.Expression.Member._object"), vw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lw0 = [0, [17, 0, 0], r(z)], bw0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], pw0 = r(Iv), mw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _w0 = [0, [17, 0, 0], r(z)], yw0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], hw0 = r(Xr), dw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kw0 = r(tr), ww0 = r(Z0), Ew0 = r(nr), Sw0 = [0, [17, 0, 0], r(z)], gw0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Fw0 = [0, [15, 0], r(N0)], Tw0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Member.PropertyIdentifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Member.PropertyIdentifier@ ")], Ow0 = [0, [17, 0, [12, 41, 0]], r(d0)], Iw0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Member.PropertyPrivateName"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Member.PropertyPrivateName@ ")], Aw0 = [0, [17, 0, [12, 41, 0]], r(d0)], Nw0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Member.PropertyExpression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Member.PropertyExpression@ ")], Cw0 = [0, [17, 0, [12, 41, 0]], r(d0)], Pw0 = [0, [15, 0], r(N0)], Dw0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Lw0 = r("Flow_ast.Expression.OptionalCall.call"), Rw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jw0 = [0, [17, 0, 0], r(z)], Gw0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Mw0 = r(lU), Bw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], qw0 = [0, [17, 0, 0], r(z)], Uw0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Hw0 = r(qu), Xw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Yw0 = [0, [9, 0, 0], r(An)], Vw0 = [0, [17, 0, 0], r(z)], zw0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Kw0 = [0, [15, 0], r(N0)], Ww0 = r(Yr), Jw0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], $w0 = r("Flow_ast.Expression.Call.callee"), Zw0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Qw0 = [0, [17, 0, 0], r(z)], rE0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], eE0 = r(Z2), nE0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], tE0 = r(tr), uE0 = r(Z0), iE0 = r(nr), fE0 = [0, [17, 0, 0], r(z)], xE0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], oE0 = r(C2), aE0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], cE0 = [0, [17, 0, 0], r(z)], sE0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], vE0 = r(Xr), lE0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bE0 = r(tr), pE0 = r(Z0), mE0 = r(nr), _E0 = [0, [17, 0, 0], r(z)], yE0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], hE0 = [0, [15, 0], r(N0)], dE0 = r(Yr), kE0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], wE0 = r("Flow_ast.Expression.New.callee"), EE0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], SE0 = [0, [17, 0, 0], r(z)], gE0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], FE0 = r(Z2), TE0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], OE0 = r(tr), IE0 = r(Z0), AE0 = r(nr), NE0 = [0, [17, 0, 0], r(z)], CE0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], PE0 = r(C2), DE0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], LE0 = r(tr), RE0 = r(Z0), jE0 = r(nr), GE0 = [0, [17, 0, 0], r(z)], ME0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], BE0 = r(Xr), qE0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], UE0 = r(tr), HE0 = r(Z0), XE0 = r(nr), YE0 = [0, [17, 0, 0], r(z)], VE0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], zE0 = [0, [15, 0], r(N0)], KE0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], WE0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], JE0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], $E0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ZE0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], QE0 = r("Flow_ast.Expression.ArgList.arguments"), rS0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], eS0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], nS0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], tS0 = [0, [17, 0, 0], r(z)], uS0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], iS0 = r(Xr), fS0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xS0 = r(tr), oS0 = r(Z0), aS0 = r(nr), cS0 = [0, [17, 0, 0], r(z)], sS0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], vS0 = [0, [15, 0], r(N0)], lS0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], bS0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], pS0 = [0, [17, 0, [12, 41, 0]], r(d0)], mS0 = [0, [15, 0], r(N0)], _S0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Expression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Expression@ ")], yS0 = [0, [17, 0, [12, 41, 0]], r(d0)], hS0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Spread"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Spread@ ")], dS0 = [0, [17, 0, [12, 41, 0]], r(d0)], kS0 = [0, [15, 0], r(N0)], wS0 = r(Yr), ES0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], SS0 = r("Flow_ast.Expression.Conditional.test"), gS0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], FS0 = [0, [17, 0, 0], r(z)], TS0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], OS0 = r(kv), IS0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], AS0 = [0, [17, 0, 0], r(z)], NS0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], CS0 = r(m3), PS0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], DS0 = [0, [17, 0, 0], r(z)], LS0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], RS0 = r(Xr), jS0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], GS0 = r(tr), MS0 = r(Z0), BS0 = r(nr), qS0 = [0, [17, 0, 0], r(z)], US0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], HS0 = [0, [15, 0], r(N0)], XS0 = r(Yr), YS0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], VS0 = r("Flow_ast.Expression.Logical.operator"), zS0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], KS0 = [0, [17, 0, 0], r(z)], WS0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], JS0 = r(bi), $S0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ZS0 = [0, [17, 0, 0], r(z)], QS0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], rg0 = r(Cu), eg0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ng0 = [0, [17, 0, 0], r(z)], tg0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ug0 = r(Xr), ig0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], fg0 = r(tr), xg0 = r(Z0), og0 = r(nr), ag0 = [0, [17, 0, 0], r(z)], cg0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], sg0 = [0, [15, 0], r(N0)], vg0 = r("Flow_ast.Expression.Logical.Or"), lg0 = r("Flow_ast.Expression.Logical.And"), bg0 = r("Flow_ast.Expression.Logical.NullishCoalesce"), pg0 = [0, [15, 0], r(N0)], mg0 = r(Yr), _g0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], yg0 = r("Flow_ast.Expression.Update.operator"), hg0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dg0 = [0, [17, 0, 0], r(z)], kg0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], wg0 = r(l7), Eg0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Sg0 = [0, [17, 0, 0], r(z)], gg0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Fg0 = r(qE), Tg0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Og0 = [0, [9, 0, 0], r(An)], Ig0 = [0, [17, 0, 0], r(z)], Ag0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ng0 = r(Xr), Cg0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Pg0 = r(tr), Dg0 = r(Z0), Lg0 = r(nr), Rg0 = [0, [17, 0, 0], r(z)], jg0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Gg0 = [0, [15, 0], r(N0)], Mg0 = r("Flow_ast.Expression.Update.Decrement"), Bg0 = r("Flow_ast.Expression.Update.Increment"), qg0 = [0, [15, 0], r(N0)], Ug0 = r(Yr), Hg0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Xg0 = r("Flow_ast.Expression.Assignment.operator"), Yg0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Vg0 = r(tr), zg0 = r(Z0), Kg0 = r(nr), Wg0 = [0, [17, 0, 0], r(z)], Jg0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], $g0 = r(bi), Zg0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Qg0 = [0, [17, 0, 0], r(z)], rF0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], eF0 = r(Cu), nF0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], tF0 = [0, [17, 0, 0], r(z)], uF0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], iF0 = r(Xr), fF0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xF0 = r(tr), oF0 = r(Z0), aF0 = r(nr), cF0 = [0, [17, 0, 0], r(z)], sF0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], vF0 = [0, [15, 0], r(N0)], lF0 = r("Flow_ast.Expression.Assignment.PlusAssign"), bF0 = r("Flow_ast.Expression.Assignment.MinusAssign"), pF0 = r("Flow_ast.Expression.Assignment.MultAssign"), mF0 = r("Flow_ast.Expression.Assignment.ExpAssign"), _F0 = r("Flow_ast.Expression.Assignment.DivAssign"), yF0 = r("Flow_ast.Expression.Assignment.ModAssign"), hF0 = r("Flow_ast.Expression.Assignment.LShiftAssign"), dF0 = r("Flow_ast.Expression.Assignment.RShiftAssign"), kF0 = r("Flow_ast.Expression.Assignment.RShift3Assign"), wF0 = r("Flow_ast.Expression.Assignment.BitOrAssign"), EF0 = r("Flow_ast.Expression.Assignment.BitXorAssign"), SF0 = r("Flow_ast.Expression.Assignment.BitAndAssign"), gF0 = r("Flow_ast.Expression.Assignment.NullishAssign"), FF0 = r("Flow_ast.Expression.Assignment.AndAssign"), TF0 = r("Flow_ast.Expression.Assignment.OrAssign"), OF0 = [0, [15, 0], r(N0)], IF0 = r(Yr), AF0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], NF0 = r("Flow_ast.Expression.Binary.operator"), CF0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], PF0 = [0, [17, 0, 0], r(z)], DF0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], LF0 = r(bi), RF0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jF0 = [0, [17, 0, 0], r(z)], GF0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], MF0 = r(Cu), BF0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], qF0 = [0, [17, 0, 0], r(z)], UF0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], HF0 = r(Xr), XF0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], YF0 = r(tr), VF0 = r(Z0), zF0 = r(nr), KF0 = [0, [17, 0, 0], r(z)], WF0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], JF0 = [0, [15, 0], r(N0)], $F0 = r("Flow_ast.Expression.Binary.Equal"), ZF0 = r("Flow_ast.Expression.Binary.NotEqual"), QF0 = r("Flow_ast.Expression.Binary.StrictEqual"), rT0 = r("Flow_ast.Expression.Binary.StrictNotEqual"), eT0 = r("Flow_ast.Expression.Binary.LessThan"), nT0 = r("Flow_ast.Expression.Binary.LessThanEqual"), tT0 = r("Flow_ast.Expression.Binary.GreaterThan"), uT0 = r("Flow_ast.Expression.Binary.GreaterThanEqual"), iT0 = r("Flow_ast.Expression.Binary.LShift"), fT0 = r("Flow_ast.Expression.Binary.RShift"), xT0 = r("Flow_ast.Expression.Binary.RShift3"), oT0 = r("Flow_ast.Expression.Binary.Plus"), aT0 = r("Flow_ast.Expression.Binary.Minus"), cT0 = r("Flow_ast.Expression.Binary.Mult"), sT0 = r("Flow_ast.Expression.Binary.Exp"), vT0 = r("Flow_ast.Expression.Binary.Div"), lT0 = r("Flow_ast.Expression.Binary.Mod"), bT0 = r("Flow_ast.Expression.Binary.BitOr"), pT0 = r("Flow_ast.Expression.Binary.Xor"), mT0 = r("Flow_ast.Expression.Binary.BitAnd"), _T0 = r("Flow_ast.Expression.Binary.In"), yT0 = r("Flow_ast.Expression.Binary.Instanceof"), hT0 = [0, [15, 0], r(N0)], dT0 = r(Yr), kT0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], wT0 = r("Flow_ast.Expression.Unary.operator"), ET0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ST0 = [0, [17, 0, 0], r(z)], gT0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], FT0 = r(l7), TT0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], OT0 = [0, [17, 0, 0], r(z)], IT0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], AT0 = r(Xr), NT0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], CT0 = r(tr), PT0 = r(Z0), DT0 = r(nr), LT0 = [0, [17, 0, 0], r(z)], RT0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], jT0 = [0, [15, 0], r(N0)], GT0 = r("Flow_ast.Expression.Unary.Minus"), MT0 = r("Flow_ast.Expression.Unary.Plus"), BT0 = r("Flow_ast.Expression.Unary.Not"), qT0 = r("Flow_ast.Expression.Unary.BitNot"), UT0 = r("Flow_ast.Expression.Unary.Typeof"), HT0 = r("Flow_ast.Expression.Unary.Void"), XT0 = r("Flow_ast.Expression.Unary.Delete"), YT0 = r("Flow_ast.Expression.Unary.Await"), VT0 = [0, [15, 0], r(N0)], zT0 = r(Yr), KT0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], WT0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], JT0 = r("Flow_ast.Expression.Sequence.expressions"), $T0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ZT0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], QT0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], rO0 = [0, [17, 0, 0], r(z)], eO0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], nO0 = r(Xr), tO0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uO0 = r(tr), iO0 = r(Z0), fO0 = r(nr), xO0 = [0, [17, 0, 0], r(z)], oO0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], aO0 = [0, [15, 0], r(N0)], cO0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], sO0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], vO0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], lO0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], bO0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], pO0 = r("Flow_ast.Expression.Object.properties"), mO0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _O0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], yO0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], hO0 = [0, [17, 0, 0], r(z)], dO0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], kO0 = r(Xr), wO0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], EO0 = r(tr), SO0 = r(Z0), gO0 = r(nr), FO0 = [0, [17, 0, 0], r(z)], TO0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], OO0 = [0, [15, 0], r(N0)], IO0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Object.Property@ ")], AO0 = [0, [17, 0, [12, 41, 0]], r(d0)], NO0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.SpreadProperty"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Object.SpreadProperty@ ")], CO0 = [0, [17, 0, [12, 41, 0]], r(d0)], PO0 = [0, [15, 0], r(N0)], DO0 = r(Yr), LO0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], RO0 = r("Flow_ast.Expression.Object.SpreadProperty.argument"), jO0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], GO0 = [0, [17, 0, 0], r(z)], MO0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], BO0 = r(Xr), qO0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], UO0 = r(tr), HO0 = r(Z0), XO0 = r(nr), YO0 = [0, [17, 0, 0], r(z)], VO0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], zO0 = [0, [15, 0], r(N0)], KO0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], WO0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], JO0 = [0, [17, 0, [12, 41, 0]], r(d0)], $O0 = [0, [15, 0], r(N0)], ZO0 = r(Yr), QO0 = r(Yr), rI0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.Init {"), [17, [0, r(Ce), 0, 0], 0]]], r("@[<2>Flow_ast.Expression.Object.Property.Init {@,")], eI0 = r(ii), nI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], tI0 = [0, [17, 0, 0], r(z)], uI0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], iI0 = r(Bn), fI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xI0 = [0, [17, 0, 0], r(z)], oI0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], aI0 = r(f6), cI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], sI0 = [0, [9, 0, 0], r(An)], vI0 = [0, [17, 0, 0], r(z)], lI0 = [0, [17, 0, [12, br, 0]], r(Y6)], bI0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.Method {"), [17, [0, r(Ce), 0, 0], 0]]], r("@[<2>Flow_ast.Expression.Object.Property.Method {@,")], pI0 = r(ii), mI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _I0 = [0, [17, 0, 0], r(z)], yI0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], hI0 = r(Bn), dI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kI0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], wI0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], EI0 = [0, [17, 0, [12, 41, 0]], r(d0)], SI0 = [0, [17, 0, 0], r(z)], gI0 = [0, [17, 0, [12, br, 0]], r(Y6)], FI0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.Get {"), [17, [0, r(Ce), 0, 0], 0]]], r("@[<2>Flow_ast.Expression.Object.Property.Get {@,")], TI0 = r(ii), OI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], II0 = [0, [17, 0, 0], r(z)], AI0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], NI0 = r(Bn), CI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], PI0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], DI0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], LI0 = [0, [17, 0, [12, 41, 0]], r(d0)], RI0 = [0, [17, 0, 0], r(z)], jI0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], GI0 = r(Xr), MI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], BI0 = r(tr), qI0 = r(Z0), UI0 = r(nr), HI0 = [0, [17, 0, 0], r(z)], XI0 = [0, [17, 0, [12, br, 0]], r(Y6)], YI0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.Set {"), [17, [0, r(Ce), 0, 0], 0]]], r("@[<2>Flow_ast.Expression.Object.Property.Set {@,")], VI0 = r(ii), zI0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], KI0 = [0, [17, 0, 0], r(z)], WI0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], JI0 = r(Bn), $I0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ZI0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], QI0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], rA0 = [0, [17, 0, [12, 41, 0]], r(d0)], eA0 = [0, [17, 0, 0], r(z)], nA0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], tA0 = r(Xr), uA0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], iA0 = r(tr), fA0 = r(Z0), xA0 = r(nr), oA0 = [0, [17, 0, 0], r(z)], aA0 = [0, [17, 0, [12, br, 0]], r(Y6)], cA0 = [0, [15, 0], r(N0)], sA0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], vA0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], lA0 = [0, [17, 0, [12, 41, 0]], r(d0)], bA0 = [0, [15, 0], r(N0)], pA0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.Literal"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Object.Property.Literal@ ")], mA0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], _A0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], yA0 = [0, [17, 0, [12, 41, 0]], r(d0)], hA0 = [0, [17, 0, [12, 41, 0]], r(d0)], dA0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Object.Property.Identifier@ ")], kA0 = [0, [17, 0, [12, 41, 0]], r(d0)], wA0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.PrivateName"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Object.Property.PrivateName@ ")], EA0 = [0, [17, 0, [12, 41, 0]], r(d0)], SA0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Object.Property.Computed"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Object.Property.Computed@ ")], gA0 = [0, [17, 0, [12, 41, 0]], r(d0)], FA0 = [0, [15, 0], r(N0)], TA0 = r(Yr), OA0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], IA0 = r("Flow_ast.Expression.TaggedTemplate.tag"), AA0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], NA0 = [0, [17, 0, 0], r(z)], CA0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], PA0 = r(EY), DA0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], LA0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], RA0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], jA0 = [0, [17, 0, [12, 41, 0]], r(d0)], GA0 = [0, [17, 0, 0], r(z)], MA0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], BA0 = r(Xr), qA0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], UA0 = r(tr), HA0 = r(Z0), XA0 = r(nr), YA0 = [0, [17, 0, 0], r(z)], VA0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], zA0 = [0, [15, 0], r(N0)], KA0 = r(Yr), WA0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], JA0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], $A0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], ZA0 = r("Flow_ast.Expression.TemplateLiteral.quasis"), QA0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rN0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], eN0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], nN0 = [0, [17, 0, 0], r(z)], tN0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], uN0 = r(Mg), iN0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], fN0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], xN0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], oN0 = [0, [17, 0, 0], r(z)], aN0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], cN0 = r(Xr), sN0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], vN0 = r(tr), lN0 = r(Z0), bN0 = r(nr), pN0 = [0, [17, 0, 0], r(z)], mN0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], _N0 = [0, [15, 0], r(N0)], yN0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], hN0 = r("Flow_ast.Expression.TemplateLiteral.Element.value"), dN0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kN0 = [0, [17, 0, 0], r(z)], wN0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], EN0 = r(aU), SN0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gN0 = [0, [9, 0, 0], r(An)], FN0 = [0, [17, 0, 0], r(z)], TN0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], ON0 = [0, [15, 0], r(N0)], IN0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], AN0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], NN0 = [0, [17, 0, [12, 41, 0]], r(d0)], CN0 = [0, [15, 0], r(N0)], PN0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], DN0 = r("Flow_ast.Expression.TemplateLiteral.Element.raw"), LN0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], RN0 = [0, [3, 0, 0], r(Vt)], jN0 = [0, [17, 0, 0], r(z)], GN0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], MN0 = r(PY), BN0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], qN0 = [0, [3, 0, 0], r(Vt)], UN0 = [0, [17, 0, 0], r(z)], HN0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], XN0 = [0, [15, 0], r(N0)], YN0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], VN0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], zN0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], KN0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], WN0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], JN0 = r("Flow_ast.Expression.Array.elements"), $N0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ZN0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], QN0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], rC0 = [0, [17, 0, 0], r(z)], eC0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], nC0 = r(Xr), tC0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uC0 = r(tr), iC0 = r(Z0), fC0 = r(nr), xC0 = [0, [17, 0, 0], r(z)], oC0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], aC0 = [0, [15, 0], r(N0)], cC0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Array.Expression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Array.Expression@ ")], sC0 = [0, [17, 0, [12, 41, 0]], r(d0)], vC0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Array.Spread"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Array.Spread@ ")], lC0 = [0, [17, 0, [12, 41, 0]], r(d0)], bC0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.Array.Hole"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.Array.Hole@ ")], pC0 = [0, [17, 0, [12, 41, 0]], r(d0)], mC0 = [0, [15, 0], r(N0)], _C0 = r(Yr), yC0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], hC0 = r("Flow_ast.Expression.SpreadElement.argument"), dC0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kC0 = [0, [17, 0, 0], r(z)], wC0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], EC0 = r(Xr), SC0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gC0 = r(tr), FC0 = r(Z0), TC0 = r(nr), OC0 = [0, [17, 0, 0], r(z)], IC0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], AC0 = [0, [15, 0], r(N0)], NC0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], CC0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], PC0 = [0, [17, 0, [12, 41, 0]], r(d0)], DC0 = [0, [15, 0], r(N0)], LC0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], RC0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], jC0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], GC0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], MC0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], BC0 = r("Flow_ast.Expression.CallTypeArgs.arguments"), qC0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], UC0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], HC0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], XC0 = [0, [17, 0, 0], r(z)], YC0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], VC0 = r(Xr), zC0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], KC0 = r(tr), WC0 = r(Z0), JC0 = r(nr), $C0 = [0, [17, 0, 0], r(z)], ZC0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], QC0 = [0, [15, 0], r(N0)], rP0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], eP0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], nP0 = [0, [17, 0, [12, 41, 0]], r(d0)], tP0 = [0, [15, 0], r(N0)], uP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.CallTypeArg.Explicit"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.CallTypeArg.Explicit@ ")], iP0 = [0, [17, 0, [12, 41, 0]], r(d0)], fP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Expression.CallTypeArg.Implicit"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Expression.CallTypeArg.Implicit@ ")], xP0 = [0, [17, 0, [12, 41, 0]], r(d0)], oP0 = [0, [15, 0], r(N0)], aP0 = r(Yr), cP0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], sP0 = r("Flow_ast.Expression.CallTypeArg.Implicit.comments"), vP0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lP0 = r(tr), bP0 = r(Z0), pP0 = r(nr), mP0 = [0, [17, 0, 0], r(z)], _P0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], yP0 = [0, [15, 0], r(N0)], hP0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], dP0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], kP0 = [0, [17, 0, [12, 41, 0]], r(d0)], wP0 = [0, [15, 0], r(N0)], EP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Block"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Block@ ")], SP0 = [0, [17, 0, [12, 41, 0]], r(d0)], gP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Break"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Break@ ")], FP0 = [0, [17, 0, [12, 41, 0]], r(d0)], TP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ClassDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ClassDeclaration@ ")], OP0 = [0, [17, 0, [12, 41, 0]], r(d0)], IP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Continue"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Continue@ ")], AP0 = [0, [17, 0, [12, 41, 0]], r(d0)], NP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Debugger"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Debugger@ ")], CP0 = [0, [17, 0, [12, 41, 0]], r(d0)], PP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareClass"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareClass@ ")], DP0 = [0, [17, 0, [12, 41, 0]], r(d0)], LP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration@ ")], RP0 = [0, [17, 0, [12, 41, 0]], r(d0)], jP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareFunction"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareFunction@ ")], GP0 = [0, [17, 0, [12, 41, 0]], r(d0)], MP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareInterface"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareInterface@ ")], BP0 = [0, [17, 0, [12, 41, 0]], r(d0)], qP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareModule"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareModule@ ")], UP0 = [0, [17, 0, [12, 41, 0]], r(d0)], HP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareModuleExports"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareModuleExports@ ")], XP0 = [0, [17, 0, [12, 41, 0]], r(d0)], YP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareTypeAlias"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareTypeAlias@ ")], VP0 = [0, [17, 0, [12, 41, 0]], r(d0)], zP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareOpaqueType"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareOpaqueType@ ")], KP0 = [0, [17, 0, [12, 41, 0]], r(d0)], WP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareVariable"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareVariable@ ")], JP0 = [0, [17, 0, [12, 41, 0]], r(d0)], $P0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DoWhile"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DoWhile@ ")], ZP0 = [0, [17, 0, [12, 41, 0]], r(d0)], QP0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Empty"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Empty@ ")], rD0 = [0, [17, 0, [12, 41, 0]], r(d0)], eD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.EnumDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.EnumDeclaration@ ")], nD0 = [0, [17, 0, [12, 41, 0]], r(d0)], tD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ExportDefaultDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ExportDefaultDeclaration@ ")], uD0 = [0, [17, 0, [12, 41, 0]], r(d0)], iD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ExportNamedDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ExportNamedDeclaration@ ")], fD0 = [0, [17, 0, [12, 41, 0]], r(d0)], xD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Expression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Expression@ ")], oD0 = [0, [17, 0, [12, 41, 0]], r(d0)], aD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.For"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.For@ ")], cD0 = [0, [17, 0, [12, 41, 0]], r(d0)], sD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ForIn"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ForIn@ ")], vD0 = [0, [17, 0, [12, 41, 0]], r(d0)], lD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ForOf"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ForOf@ ")], bD0 = [0, [17, 0, [12, 41, 0]], r(d0)], pD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.FunctionDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.FunctionDeclaration@ ")], mD0 = [0, [17, 0, [12, 41, 0]], r(d0)], _D0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.If"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.If@ ")], yD0 = [0, [17, 0, [12, 41, 0]], r(d0)], hD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ImportDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ImportDeclaration@ ")], dD0 = [0, [17, 0, [12, 41, 0]], r(d0)], kD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.InterfaceDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.InterfaceDeclaration@ ")], wD0 = [0, [17, 0, [12, 41, 0]], r(d0)], ED0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Labeled"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Labeled@ ")], SD0 = [0, [17, 0, [12, 41, 0]], r(d0)], gD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Return"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Return@ ")], FD0 = [0, [17, 0, [12, 41, 0]], r(d0)], TD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Switch"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Switch@ ")], OD0 = [0, [17, 0, [12, 41, 0]], r(d0)], ID0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Throw"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Throw@ ")], AD0 = [0, [17, 0, [12, 41, 0]], r(d0)], ND0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.Try"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.Try@ ")], CD0 = [0, [17, 0, [12, 41, 0]], r(d0)], PD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.TypeAlias"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.TypeAlias@ ")], DD0 = [0, [17, 0, [12, 41, 0]], r(d0)], LD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.OpaqueType"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.OpaqueType@ ")], RD0 = [0, [17, 0, [12, 41, 0]], r(d0)], jD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.VariableDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.VariableDeclaration@ ")], GD0 = [0, [17, 0, [12, 41, 0]], r(d0)], MD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.While"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.While@ ")], BD0 = [0, [17, 0, [12, 41, 0]], r(d0)], qD0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.With"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.With@ ")], UD0 = [0, [17, 0, [12, 41, 0]], r(d0)], HD0 = [0, [15, 0], r(N0)], XD0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], YD0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], VD0 = [0, [17, 0, [12, 41, 0]], r(d0)], zD0 = [0, [15, 0], r(N0)], KD0 = r("Flow_ast.Statement.ExportValue"), WD0 = r("Flow_ast.Statement.ExportType"), JD0 = [0, [15, 0], r(N0)], $D0 = r(Yr), ZD0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], QD0 = r("Flow_ast.Statement.Empty.comments"), rL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], eL0 = r(tr), nL0 = r(Z0), tL0 = r(nr), uL0 = [0, [17, 0, 0], r(z)], iL0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], fL0 = [0, [15, 0], r(N0)], xL0 = r(Yr), oL0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], aL0 = r("Flow_ast.Statement.Expression.expression"), cL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], sL0 = [0, [17, 0, 0], r(z)], vL0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], lL0 = r(Zi), bL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], pL0 = r(tr), mL0 = [0, [3, 0, 0], r(Vt)], _L0 = r(Z0), yL0 = r(nr), hL0 = [0, [17, 0, 0], r(z)], dL0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], kL0 = r(Xr), wL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], EL0 = r(tr), SL0 = r(Z0), gL0 = r(nr), FL0 = [0, [17, 0, 0], r(z)], TL0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], OL0 = [0, [15, 0], r(N0)], IL0 = r(Yr), AL0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], NL0 = r("Flow_ast.Statement.ImportDeclaration.import_kind"), CL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], PL0 = [0, [17, 0, 0], r(z)], DL0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], LL0 = r(cc), RL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jL0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], GL0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], ML0 = [0, [17, 0, [12, 41, 0]], r(d0)], BL0 = [0, [17, 0, 0], r(z)], qL0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], UL0 = r(_i), HL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], XL0 = r(tr), YL0 = r(Z0), VL0 = r(nr), zL0 = [0, [17, 0, 0], r(z)], KL0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], WL0 = r(Cv), JL0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $L0 = r(tr), ZL0 = r(Z0), QL0 = r(nr), rR0 = [0, [17, 0, 0], r(z)], eR0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], nR0 = r(Xr), tR0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uR0 = r(tr), iR0 = r(Z0), fR0 = r(nr), xR0 = [0, [17, 0, 0], r(z)], oR0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], aR0 = [0, [15, 0], r(N0)], cR0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], sR0 = r("Flow_ast.Statement.ImportDeclaration.kind"), vR0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lR0 = r(tr), bR0 = r(Z0), pR0 = r(nr), mR0 = [0, [17, 0, 0], r(z)], _R0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], yR0 = r(B2), hR0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dR0 = r(tr), kR0 = r(Z0), wR0 = r(nr), ER0 = [0, [17, 0, 0], r(z)], SR0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], gR0 = r("remote"), FR0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], TR0 = [0, [17, 0, 0], r(z)], OR0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], IR0 = [0, [15, 0], r(N0)], AR0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], NR0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ImportDeclaration.ImportNamedSpecifiers"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ImportDeclaration.ImportNamedSpecifiers@ ")], CR0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], PR0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], DR0 = [0, [17, 0, [12, 41, 0]], r(d0)], LR0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ImportDeclaration.ImportNamespaceSpecifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ImportDeclaration.ImportNamespaceSpecifier@ ")], RR0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], jR0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], GR0 = [0, [17, 0, [12, 41, 0]], r(d0)], MR0 = [0, [17, 0, [12, 41, 0]], r(d0)], BR0 = [0, [15, 0], r(N0)], qR0 = r("Flow_ast.Statement.ImportDeclaration.ImportType"), UR0 = r("Flow_ast.Statement.ImportDeclaration.ImportTypeof"), HR0 = r("Flow_ast.Statement.ImportDeclaration.ImportValue"), XR0 = [0, [15, 0], r(N0)], YR0 = r(Yr), VR0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], zR0 = r("Flow_ast.Statement.DeclareExportDeclaration.default"), KR0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], WR0 = r(tr), JR0 = r(Z0), $R0 = r(nr), ZR0 = [0, [17, 0, 0], r(z)], QR0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], rj0 = r(P2), ej0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], nj0 = r(tr), tj0 = r(Z0), uj0 = r(nr), ij0 = [0, [17, 0, 0], r(z)], fj0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], xj0 = r(Cv), oj0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], aj0 = r(tr), cj0 = r(Z0), sj0 = r(nr), vj0 = [0, [17, 0, 0], r(z)], lj0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], bj0 = r(cc), pj0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mj0 = r(tr), _j0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], yj0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], hj0 = [0, [17, 0, [12, 41, 0]], r(d0)], dj0 = r(Z0), kj0 = r(nr), wj0 = [0, [17, 0, 0], r(z)], Ej0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Sj0 = r(Xr), gj0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Fj0 = r(tr), Tj0 = r(Z0), Oj0 = r(nr), Ij0 = [0, [17, 0, 0], r(z)], Aj0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Nj0 = [0, [15, 0], r(N0)], Cj0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration.Variable"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Variable@ ")], Pj0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Dj0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Lj0 = [0, [17, 0, [12, 41, 0]], r(d0)], Rj0 = [0, [17, 0, [12, 41, 0]], r(d0)], jj0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration.Function"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Function@ ")], Gj0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Mj0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Bj0 = [0, [17, 0, [12, 41, 0]], r(d0)], qj0 = [0, [17, 0, [12, 41, 0]], r(d0)], Uj0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration.Class"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Class@ ")], Hj0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Xj0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Yj0 = [0, [17, 0, [12, 41, 0]], r(d0)], Vj0 = [0, [17, 0, [12, 41, 0]], r(d0)], zj0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration.DefaultType"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.DefaultType@ ")], Kj0 = [0, [17, 0, [12, 41, 0]], r(d0)], Wj0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration.NamedType"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.NamedType@ ")], Jj0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], $j0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Zj0 = [0, [17, 0, [12, 41, 0]], r(d0)], Qj0 = [0, [17, 0, [12, 41, 0]], r(d0)], rG0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration.NamedOpaqueType"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.NamedOpaqueType@ ")], eG0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], nG0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], tG0 = [0, [17, 0, [12, 41, 0]], r(d0)], uG0 = [0, [17, 0, [12, 41, 0]], r(d0)], iG0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareExportDeclaration.Interface"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Interface@ ")], fG0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], xG0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], oG0 = [0, [17, 0, [12, 41, 0]], r(d0)], aG0 = [0, [17, 0, [12, 41, 0]], r(d0)], cG0 = [0, [15, 0], r(N0)], sG0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ExportDefaultDeclaration.Declaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ExportDefaultDeclaration.Declaration@ ")], vG0 = [0, [17, 0, [12, 41, 0]], r(d0)], lG0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ExportDefaultDeclaration.Expression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ExportDefaultDeclaration.Expression@ ")], bG0 = [0, [17, 0, [12, 41, 0]], r(d0)], pG0 = [0, [15, 0], r(N0)], mG0 = r(Yr), _G0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], yG0 = r("Flow_ast.Statement.ExportDefaultDeclaration.default"), hG0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dG0 = [0, [17, 0, 0], r(z)], kG0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], wG0 = r(P2), EG0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], SG0 = [0, [17, 0, 0], r(z)], gG0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], FG0 = r(Xr), TG0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], OG0 = r(tr), IG0 = r(Z0), AG0 = r(nr), NG0 = [0, [17, 0, 0], r(z)], CG0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], PG0 = [0, [15, 0], r(N0)], DG0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], LG0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ExportNamedDeclaration.ExportSpecifiers"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ExportNamedDeclaration.ExportSpecifiers@ ")], RG0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], jG0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], GG0 = [0, [17, 0, [12, 41, 0]], r(d0)], MG0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ExportNamedDeclaration.ExportBatchSpecifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ExportNamedDeclaration.ExportBatchSpecifier@ ")], BG0 = [0, [17, 0, [12, 41, 0]], r(d0)], qG0 = [0, [15, 0], r(N0)], UG0 = r(Yr), HG0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], XG0 = r("Flow_ast.Statement.ExportNamedDeclaration.declaration"), YG0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], VG0 = r(tr), zG0 = r(Z0), KG0 = r(nr), WG0 = [0, [17, 0, 0], r(z)], JG0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], $G0 = r(Cv), ZG0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], QG0 = r(tr), rM0 = r(Z0), eM0 = r(nr), nM0 = [0, [17, 0, 0], r(z)], tM0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], uM0 = r(cc), iM0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], fM0 = r(tr), xM0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], oM0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], aM0 = [0, [17, 0, [12, 41, 0]], r(d0)], cM0 = r(Z0), sM0 = r(nr), vM0 = [0, [17, 0, 0], r(z)], lM0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], bM0 = r("export_kind"), pM0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mM0 = [0, [17, 0, 0], r(z)], _M0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], yM0 = r(Xr), hM0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dM0 = r(tr), kM0 = r(Z0), wM0 = r(nr), EM0 = [0, [17, 0, 0], r(z)], SM0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], gM0 = [0, [15, 0], r(N0)], FM0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], TM0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], OM0 = r(tr), IM0 = r(Z0), AM0 = r(nr), NM0 = [0, [17, 0, [12, 41, 0]], r(d0)], CM0 = [0, [15, 0], r(N0)], PM0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], DM0 = r("Flow_ast.Statement.ExportNamedDeclaration.ExportSpecifier.local"), LM0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], RM0 = [0, [17, 0, 0], r(z)], jM0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], GM0 = r(I4), MM0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], BM0 = r(tr), qM0 = r(Z0), UM0 = r(nr), HM0 = [0, [17, 0, 0], r(z)], XM0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], YM0 = [0, [15, 0], r(N0)], VM0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], zM0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], KM0 = [0, [17, 0, [12, 41, 0]], r(d0)], WM0 = [0, [15, 0], r(N0)], JM0 = r(Yr), $M0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], ZM0 = r("Flow_ast.Statement.DeclareModuleExports.annot"), QM0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rB0 = [0, [17, 0, 0], r(z)], eB0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], nB0 = r(Xr), tB0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uB0 = r(tr), iB0 = r(Z0), fB0 = r(nr), xB0 = [0, [17, 0, 0], r(z)], oB0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], aB0 = [0, [15, 0], r(N0)], cB0 = r(Yr), sB0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], vB0 = r("Flow_ast.Statement.DeclareModule.id"), lB0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bB0 = [0, [17, 0, 0], r(z)], pB0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], mB0 = r(Wn), _B0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], yB0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], hB0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], dB0 = [0, [17, 0, [12, 41, 0]], r(d0)], kB0 = [0, [17, 0, 0], r(z)], wB0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], EB0 = r($c), SB0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gB0 = [0, [17, 0, 0], r(z)], FB0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], TB0 = r(Xr), OB0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], IB0 = r(tr), AB0 = r(Z0), NB0 = r(nr), CB0 = [0, [17, 0, 0], r(z)], PB0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], DB0 = [0, [15, 0], r(N0)], LB0 = r("Flow_ast.Statement.DeclareModule.ES"), RB0 = r("Flow_ast.Statement.DeclareModule.CommonJS"), jB0 = [0, [15, 0], r(N0)], GB0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareModule.Identifier"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareModule.Identifier@ ")], MB0 = [0, [17, 0, [12, 41, 0]], r(d0)], BB0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.DeclareModule.Literal"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.DeclareModule.Literal@ ")], qB0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], UB0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], HB0 = [0, [17, 0, [12, 41, 0]], r(d0)], XB0 = [0, [17, 0, [12, 41, 0]], r(d0)], YB0 = [0, [15, 0], r(N0)], VB0 = r(Yr), zB0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], KB0 = r("Flow_ast.Statement.DeclareFunction.id"), WB0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], JB0 = [0, [17, 0, 0], r(z)], $B0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ZB0 = r(Qc), QB0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rq0 = [0, [17, 0, 0], r(z)], eq0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], nq0 = r(r7), tq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uq0 = r(tr), iq0 = r(Z0), fq0 = r(nr), xq0 = [0, [17, 0, 0], r(z)], oq0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], aq0 = r(Xr), cq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], sq0 = r(tr), vq0 = r(Z0), lq0 = r(nr), bq0 = [0, [17, 0, 0], r(z)], pq0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], mq0 = [0, [15, 0], r(N0)], _q0 = r(Yr), yq0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], hq0 = r("Flow_ast.Statement.DeclareVariable.id"), dq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kq0 = [0, [17, 0, 0], r(z)], wq0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Eq0 = r(Qc), Sq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gq0 = [0, [17, 0, 0], r(z)], Fq0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Tq0 = r(Xr), Oq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Iq0 = r(tr), Aq0 = r(Z0), Nq0 = r(nr), Cq0 = [0, [17, 0, 0], r(z)], Pq0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Dq0 = [0, [15, 0], r(N0)], Lq0 = r(Yr), Rq0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], jq0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Gq0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Mq0 = [0, [17, 0, [12, 41, 0]], r(d0)], Bq0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], qq0 = r("Flow_ast.Statement.DeclareClass.id"), Uq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Hq0 = [0, [17, 0, 0], r(z)], Xq0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Yq0 = r(sv), Vq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zq0 = r(tr), Kq0 = r(Z0), Wq0 = r(nr), Jq0 = [0, [17, 0, 0], r(z)], $q0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Zq0 = r(Wn), Qq0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rU0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], eU0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], nU0 = [0, [17, 0, [12, 41, 0]], r(d0)], tU0 = [0, [17, 0, 0], r(z)], uU0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], iU0 = r(P7), fU0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xU0 = r(tr), oU0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], aU0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], cU0 = [0, [17, 0, [12, 41, 0]], r(d0)], sU0 = r(Z0), vU0 = r(nr), lU0 = [0, [17, 0, 0], r(z)], bU0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], pU0 = r(Hy), mU0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _U0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], yU0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], hU0 = [0, [17, 0, 0], r(z)], dU0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], kU0 = r(ws), wU0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], EU0 = r(tr), SU0 = r(Z0), gU0 = r(nr), FU0 = [0, [17, 0, 0], r(z)], TU0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], OU0 = r(Xr), IU0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], AU0 = r(tr), NU0 = r(Z0), CU0 = r(nr), PU0 = [0, [17, 0, 0], r(z)], DU0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], LU0 = [0, [15, 0], r(N0)], RU0 = r(Yr), jU0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], GU0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], MU0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], BU0 = [0, [17, 0, [12, 41, 0]], r(d0)], qU0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], UU0 = r("Flow_ast.Statement.Interface.id"), HU0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], XU0 = [0, [17, 0, 0], r(z)], YU0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], VU0 = r(sv), zU0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], KU0 = r(tr), WU0 = r(Z0), JU0 = r(nr), $U0 = [0, [17, 0, 0], r(z)], ZU0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], QU0 = r(P7), rH0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], eH0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], nH0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], tH0 = [0, [17, 0, 0], r(z)], uH0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], iH0 = r(Wn), fH0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xH0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], oH0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], aH0 = [0, [17, 0, [12, 41, 0]], r(d0)], cH0 = [0, [17, 0, 0], r(z)], sH0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], vH0 = r(Xr), lH0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bH0 = r(tr), pH0 = r(Z0), mH0 = r(nr), _H0 = [0, [17, 0, 0], r(z)], yH0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], hH0 = [0, [15, 0], r(N0)], dH0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.EnumDeclaration.BooleanBody"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.EnumDeclaration.BooleanBody@ ")], kH0 = [0, [17, 0, [12, 41, 0]], r(d0)], wH0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.EnumDeclaration.NumberBody"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.EnumDeclaration.NumberBody@ ")], EH0 = [0, [17, 0, [12, 41, 0]], r(d0)], SH0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.EnumDeclaration.StringBody"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.EnumDeclaration.StringBody@ ")], gH0 = [0, [17, 0, [12, 41, 0]], r(d0)], FH0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.EnumDeclaration.SymbolBody"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.EnumDeclaration.SymbolBody@ ")], TH0 = [0, [17, 0, [12, 41, 0]], r(d0)], OH0 = [0, [15, 0], r(N0)], IH0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], AH0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], NH0 = [0, [17, 0, [12, 41, 0]], r(d0)], CH0 = [0, [15, 0], r(N0)], PH0 = r(Yr), DH0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], LH0 = r("Flow_ast.Statement.EnumDeclaration.id"), RH0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jH0 = [0, [17, 0, 0], r(z)], GH0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], MH0 = r(Wn), BH0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], qH0 = [0, [17, 0, 0], r(z)], UH0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], HH0 = r(Xr), XH0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], YH0 = r(tr), VH0 = r(Z0), zH0 = r(nr), KH0 = [0, [17, 0, 0], r(z)], WH0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], JH0 = [0, [15, 0], r(N0)], $H0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ZH0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], QH0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], rX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], eX0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], nX0 = r("Flow_ast.Statement.EnumDeclaration.SymbolBody.members"), tX0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uX0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], iX0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], fX0 = [0, [17, 0, 0], r(z)], xX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], oX0 = r(w4), aX0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], cX0 = [0, [9, 0, 0], r(An)], sX0 = [0, [17, 0, 0], r(z)], vX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], lX0 = r(Xr), bX0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], pX0 = r(tr), mX0 = r(Z0), _X0 = r(nr), yX0 = [0, [17, 0, 0], r(z)], hX0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], dX0 = [0, [15, 0], r(N0)], kX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], wX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], EX0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.EnumDeclaration.StringBody.Defaulted"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.EnumDeclaration.StringBody.Defaulted@ ")], SX0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], gX0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], FX0 = [0, [17, 0, [12, 41, 0]], r(d0)], TX0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.EnumDeclaration.StringBody.Initialized"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.EnumDeclaration.StringBody.Initialized@ ")], OX0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], IX0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], AX0 = [0, [17, 0, [12, 41, 0]], r(d0)], NX0 = [0, [15, 0], r(N0)], CX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], PX0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], DX0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], LX0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], RX0 = r("Flow_ast.Statement.EnumDeclaration.StringBody.members"), jX0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], GX0 = [0, [17, 0, 0], r(z)], MX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], BX0 = r(Fk), qX0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], UX0 = [0, [9, 0, 0], r(An)], HX0 = [0, [17, 0, 0], r(z)], XX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], YX0 = r(w4), VX0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zX0 = [0, [9, 0, 0], r(An)], KX0 = [0, [17, 0, 0], r(z)], WX0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], JX0 = r(Xr), $X0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ZX0 = r(tr), QX0 = r(Z0), rY0 = r(nr), eY0 = [0, [17, 0, 0], r(z)], nY0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], tY0 = [0, [15, 0], r(N0)], uY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], iY0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], fY0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], xY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], oY0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], aY0 = r("Flow_ast.Statement.EnumDeclaration.NumberBody.members"), cY0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], sY0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], vY0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], lY0 = [0, [17, 0, 0], r(z)], bY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], pY0 = r(Fk), mY0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], _Y0 = [0, [9, 0, 0], r(An)], yY0 = [0, [17, 0, 0], r(z)], hY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], dY0 = r(w4), kY0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], wY0 = [0, [9, 0, 0], r(An)], EY0 = [0, [17, 0, 0], r(z)], SY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], gY0 = r(Xr), FY0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], TY0 = r(tr), OY0 = r(Z0), IY0 = r(nr), AY0 = [0, [17, 0, 0], r(z)], NY0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], CY0 = [0, [15, 0], r(N0)], PY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], DY0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], LY0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], RY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], jY0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], GY0 = r("Flow_ast.Statement.EnumDeclaration.BooleanBody.members"), MY0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], BY0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], qY0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], UY0 = [0, [17, 0, 0], r(z)], HY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], XY0 = r(Fk), YY0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], VY0 = [0, [9, 0, 0], r(An)], zY0 = [0, [17, 0, 0], r(z)], KY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], WY0 = r(w4), JY0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $Y0 = [0, [9, 0, 0], r(An)], ZY0 = [0, [17, 0, 0], r(z)], QY0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], rV0 = r(Xr), eV0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], nV0 = r(tr), tV0 = r(Z0), uV0 = r(nr), iV0 = [0, [17, 0, 0], r(z)], fV0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], xV0 = [0, [15, 0], r(N0)], oV0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], aV0 = r("Flow_ast.Statement.EnumDeclaration.InitializedMember.id"), cV0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], sV0 = [0, [17, 0, 0], r(z)], vV0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], lV0 = r(ji), bV0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], pV0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], mV0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], _V0 = [0, [17, 0, [12, 41, 0]], r(d0)], yV0 = [0, [17, 0, 0], r(z)], hV0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], dV0 = [0, [15, 0], r(N0)], kV0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], wV0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], EV0 = [0, [17, 0, [12, 41, 0]], r(d0)], SV0 = [0, [15, 0], r(N0)], gV0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], FV0 = r("Flow_ast.Statement.EnumDeclaration.DefaultedMember.id"), TV0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], OV0 = [0, [17, 0, 0], r(z)], IV0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], AV0 = [0, [15, 0], r(N0)], NV0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], CV0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], PV0 = [0, [17, 0, [12, 41, 0]], r(d0)], DV0 = [0, [15, 0], r(N0)], LV0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ForOf.LeftDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ForOf.LeftDeclaration@ ")], RV0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], jV0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], GV0 = [0, [17, 0, [12, 41, 0]], r(d0)], MV0 = [0, [17, 0, [12, 41, 0]], r(d0)], BV0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ForOf.LeftPattern"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ForOf.LeftPattern@ ")], qV0 = [0, [17, 0, [12, 41, 0]], r(d0)], UV0 = [0, [15, 0], r(N0)], HV0 = r(Yr), XV0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], YV0 = r("Flow_ast.Statement.ForOf.left"), VV0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zV0 = [0, [17, 0, 0], r(z)], KV0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], WV0 = r(Cu), JV0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $V0 = [0, [17, 0, 0], r(z)], ZV0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], QV0 = r(Wn), rz0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ez0 = [0, [17, 0, 0], r(z)], nz0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], tz0 = r(dx), uz0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], iz0 = [0, [9, 0, 0], r(An)], fz0 = [0, [17, 0, 0], r(z)], xz0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], oz0 = r(Xr), az0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], cz0 = r(tr), sz0 = r(Z0), vz0 = r(nr), lz0 = [0, [17, 0, 0], r(z)], bz0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], pz0 = [0, [15, 0], r(N0)], mz0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ForIn.LeftDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ForIn.LeftDeclaration@ ")], _z0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], yz0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], hz0 = [0, [17, 0, [12, 41, 0]], r(d0)], dz0 = [0, [17, 0, [12, 41, 0]], r(d0)], kz0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.ForIn.LeftPattern"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.ForIn.LeftPattern@ ")], wz0 = [0, [17, 0, [12, 41, 0]], r(d0)], Ez0 = [0, [15, 0], r(N0)], Sz0 = r(Yr), gz0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Fz0 = r("Flow_ast.Statement.ForIn.left"), Tz0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Oz0 = [0, [17, 0, 0], r(z)], Iz0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Az0 = r(Cu), Nz0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Cz0 = [0, [17, 0, 0], r(z)], Pz0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Dz0 = r(Wn), Lz0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Rz0 = [0, [17, 0, 0], r(z)], jz0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Gz0 = r(R8), Mz0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Bz0 = [0, [9, 0, 0], r(An)], qz0 = [0, [17, 0, 0], r(z)], Uz0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Hz0 = r(Xr), Xz0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Yz0 = r(tr), Vz0 = r(Z0), zz0 = r(nr), Kz0 = [0, [17, 0, 0], r(z)], Wz0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Jz0 = [0, [15, 0], r(N0)], $z0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.For.InitDeclaration"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.For.InitDeclaration@ ")], Zz0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Qz0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], rK0 = [0, [17, 0, [12, 41, 0]], r(d0)], eK0 = [0, [17, 0, [12, 41, 0]], r(d0)], nK0 = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Statement.For.InitExpression"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Statement.For.InitExpression@ ")], tK0 = [0, [17, 0, [12, 41, 0]], r(d0)], uK0 = [0, [15, 0], r(N0)], iK0 = r(Yr), fK0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], xK0 = r("Flow_ast.Statement.For.init"), oK0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], aK0 = r(tr), cK0 = r(Z0), sK0 = r(nr), vK0 = [0, [17, 0, 0], r(z)], lK0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], bK0 = r(Ss), pK0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mK0 = r(tr), _K0 = r(Z0), yK0 = r(nr), hK0 = [0, [17, 0, 0], r(z)], dK0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], kK0 = r(fU), wK0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], EK0 = r(tr), SK0 = r(Z0), gK0 = r(nr), FK0 = [0, [17, 0, 0], r(z)], TK0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], OK0 = r(Wn), IK0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], AK0 = [0, [17, 0, 0], r(z)], NK0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], CK0 = r(Xr), PK0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], DK0 = r(tr), LK0 = r(Z0), RK0 = r(nr), jK0 = [0, [17, 0, 0], r(z)], GK0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], MK0 = [0, [15, 0], r(N0)], BK0 = r(Yr), qK0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], UK0 = r("Flow_ast.Statement.DoWhile.body"), HK0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], XK0 = [0, [17, 0, 0], r(z)], YK0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], VK0 = r(Ss), zK0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], KK0 = [0, [17, 0, 0], r(z)], WK0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], JK0 = r(Xr), $K0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ZK0 = r(tr), QK0 = r(Z0), rW0 = r(nr), eW0 = [0, [17, 0, 0], r(z)], nW0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], tW0 = [0, [15, 0], r(N0)], uW0 = r(Yr), iW0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], fW0 = r("Flow_ast.Statement.While.test"), xW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], oW0 = [0, [17, 0, 0], r(z)], aW0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], cW0 = r(Wn), sW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], vW0 = [0, [17, 0, 0], r(z)], lW0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], bW0 = r(Xr), pW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mW0 = r(tr), _W0 = r(Z0), yW0 = r(nr), hW0 = [0, [17, 0, 0], r(z)], dW0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], kW0 = [0, [15, 0], r(N0)], wW0 = r("Flow_ast.Statement.VariableDeclaration.Var"), EW0 = r("Flow_ast.Statement.VariableDeclaration.Let"), SW0 = r("Flow_ast.Statement.VariableDeclaration.Const"), gW0 = [0, [15, 0], r(N0)], FW0 = r(Yr), TW0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], OW0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], IW0 = r("Flow_ast.Statement.VariableDeclaration.declarations"), AW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], NW0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], CW0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], PW0 = [0, [17, 0, 0], r(z)], DW0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], LW0 = r($c), RW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jW0 = [0, [17, 0, 0], r(z)], GW0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], MW0 = r(Xr), BW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], qW0 = r(tr), UW0 = r(Z0), HW0 = r(nr), XW0 = [0, [17, 0, 0], r(z)], YW0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], VW0 = [0, [15, 0], r(N0)], zW0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], KW0 = r("Flow_ast.Statement.VariableDeclaration.Declarator.id"), WW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], JW0 = [0, [17, 0, 0], r(z)], $W0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ZW0 = r(ji), QW0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rJ0 = r(tr), eJ0 = r(Z0), nJ0 = r(nr), tJ0 = [0, [17, 0, 0], r(z)], uJ0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], iJ0 = [0, [15, 0], r(N0)], fJ0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], xJ0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], oJ0 = [0, [17, 0, [12, 41, 0]], r(d0)], aJ0 = [0, [15, 0], r(N0)], cJ0 = r(Yr), sJ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], vJ0 = r("Flow_ast.Statement.Try.block"), lJ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bJ0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], pJ0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], mJ0 = [0, [17, 0, [12, 41, 0]], r(d0)], _J0 = [0, [17, 0, 0], r(z)], yJ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], hJ0 = r(MU), dJ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kJ0 = r(tr), wJ0 = r(Z0), EJ0 = r(nr), SJ0 = [0, [17, 0, 0], r(z)], gJ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], FJ0 = r(CH), TJ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], OJ0 = r(tr), IJ0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], AJ0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], NJ0 = [0, [17, 0, [12, 41, 0]], r(d0)], CJ0 = r(Z0), PJ0 = r(nr), DJ0 = [0, [17, 0, 0], r(z)], LJ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], RJ0 = r(Xr), jJ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], GJ0 = r(tr), MJ0 = r(Z0), BJ0 = r(nr), qJ0 = [0, [17, 0, 0], r(z)], UJ0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], HJ0 = [0, [15, 0], r(N0)], XJ0 = r(Yr), YJ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], VJ0 = r("Flow_ast.Statement.Try.CatchClause.param"), zJ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], KJ0 = r(tr), WJ0 = r(Z0), JJ0 = r(nr), $J0 = [0, [17, 0, 0], r(z)], ZJ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], QJ0 = r(Wn), r$0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], e$0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], n$0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], t$0 = [0, [17, 0, [12, 41, 0]], r(d0)], u$0 = [0, [17, 0, 0], r(z)], i$0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], f$0 = r(Xr), x$0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], o$0 = r(tr), a$0 = r(Z0), c$0 = r(nr), s$0 = [0, [17, 0, 0], r(z)], v$0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], l$0 = [0, [15, 0], r(N0)], b$0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], p$0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], m$0 = [0, [17, 0, [12, 41, 0]], r(d0)], _$0 = [0, [15, 0], r(N0)], y$0 = r(Yr), h$0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], d$0 = r("Flow_ast.Statement.Throw.argument"), k$0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], w$0 = [0, [17, 0, 0], r(z)], E$0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], S$0 = r(Xr), g$0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], F$0 = r(tr), T$0 = r(Z0), O$0 = r(nr), I$0 = [0, [17, 0, 0], r(z)], A$0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], N$0 = [0, [15, 0], r(N0)], C$0 = r(Yr), P$0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], D$0 = r("Flow_ast.Statement.Return.argument"), L$0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], R$0 = r(tr), j$0 = r(Z0), G$0 = r(nr), M$0 = [0, [17, 0, 0], r(z)], B$0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], q$0 = r(Xr), U$0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], H$0 = r(tr), X$0 = r(Z0), Y$0 = r(nr), V$0 = [0, [17, 0, 0], r(z)], z$0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], K$0 = r("return_out"), W$0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], J$0 = [0, [17, 0, 0], r(z)], $$0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Z$0 = [0, [15, 0], r(N0)], Q$0 = r(Yr), rZ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], eZ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], nZ0 = r("Flow_ast.Statement.Switch.discriminant"), tZ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], uZ0 = [0, [17, 0, 0], r(z)], iZ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], fZ0 = r(QX), xZ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], oZ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], aZ0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], cZ0 = [0, [17, 0, 0], r(z)], sZ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], vZ0 = r(Xr), lZ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bZ0 = r(tr), pZ0 = r(Z0), mZ0 = r(nr), _Z0 = [0, [17, 0, 0], r(z)], yZ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], hZ0 = r("exhaustive_out"), dZ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], kZ0 = [0, [17, 0, 0], r(z)], wZ0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], EZ0 = [0, [15, 0], r(N0)], SZ0 = r(Yr), gZ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], FZ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], TZ0 = r("Flow_ast.Statement.Switch.Case.test"), OZ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], IZ0 = r(tr), AZ0 = r(Z0), NZ0 = r(nr), CZ0 = [0, [17, 0, 0], r(z)], PZ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], DZ0 = r(kv), LZ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], RZ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], jZ0 = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], GZ0 = [0, [17, 0, 0], r(z)], MZ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], BZ0 = r(Xr), qZ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], UZ0 = r(tr), HZ0 = r(Z0), XZ0 = r(nr), YZ0 = [0, [17, 0, 0], r(z)], VZ0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], zZ0 = [0, [15, 0], r(N0)], KZ0 = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], WZ0 = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], JZ0 = [0, [17, 0, [12, 41, 0]], r(d0)], $Z0 = [0, [15, 0], r(N0)], ZZ0 = r(Yr), QZ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], rQ0 = r("Flow_ast.Statement.OpaqueType.id"), eQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], nQ0 = [0, [17, 0, 0], r(z)], tQ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], uQ0 = r(sv), iQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], fQ0 = r(tr), xQ0 = r(Z0), oQ0 = r(nr), aQ0 = [0, [17, 0, 0], r(z)], cQ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], sQ0 = r(mX), vQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lQ0 = r(tr), bQ0 = r(Z0), pQ0 = r(nr), mQ0 = [0, [17, 0, 0], r(z)], _Q0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], yQ0 = r(SX), hQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dQ0 = r(tr), kQ0 = r(Z0), wQ0 = r(nr), EQ0 = [0, [17, 0, 0], r(z)], SQ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], gQ0 = r(Xr), FQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], TQ0 = r(tr), OQ0 = r(Z0), IQ0 = r(nr), AQ0 = [0, [17, 0, 0], r(z)], NQ0 = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], CQ0 = [0, [15, 0], r(N0)], PQ0 = r(Yr), DQ0 = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], LQ0 = r("Flow_ast.Statement.TypeAlias.id"), RQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jQ0 = [0, [17, 0, 0], r(z)], GQ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], MQ0 = r(sv), BQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], qQ0 = r(tr), UQ0 = r(Z0), HQ0 = r(nr), XQ0 = [0, [17, 0, 0], r(z)], YQ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], VQ0 = r(Cu), zQ0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], KQ0 = [0, [17, 0, 0], r(z)], WQ0 = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], JQ0 = r(Xr), $Q0 = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ZQ0 = r(tr), QQ0 = r(Z0), r0r = r(nr), e0r = [0, [17, 0, 0], r(z)], n0r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], t0r = [0, [15, 0], r(N0)], u0r = r(Yr), i0r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], f0r = r("Flow_ast.Statement.With._object"), x0r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], o0r = [0, [17, 0, 0], r(z)], a0r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], c0r = r(Wn), s0r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], v0r = [0, [17, 0, 0], r(z)], l0r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], b0r = r(Xr), p0r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], m0r = r(tr), _0r = r(Z0), y0r = r(nr), h0r = [0, [17, 0, 0], r(z)], d0r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], k0r = [0, [15, 0], r(N0)], w0r = r(Yr), E0r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], S0r = r("Flow_ast.Statement.Debugger.comments"), g0r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], F0r = r(tr), T0r = r(Z0), O0r = r(nr), I0r = [0, [17, 0, 0], r(z)], A0r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], N0r = [0, [15, 0], r(N0)], C0r = r(Yr), P0r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], D0r = r("Flow_ast.Statement.Continue.label"), L0r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], R0r = r(tr), j0r = r(Z0), G0r = r(nr), M0r = [0, [17, 0, 0], r(z)], B0r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], q0r = r(Xr), U0r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], H0r = r(tr), X0r = r(Z0), Y0r = r(nr), V0r = [0, [17, 0, 0], r(z)], z0r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], K0r = [0, [15, 0], r(N0)], W0r = r(Yr), J0r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], $0r = r("Flow_ast.Statement.Break.label"), Z0r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Q0r = r(tr), rrr = r(Z0), err = r(nr), nrr = [0, [17, 0, 0], r(z)], trr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], urr = r(Xr), irr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], frr = r(tr), xrr = r(Z0), orr = r(nr), arr = [0, [17, 0, 0], r(z)], crr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], srr = [0, [15, 0], r(N0)], vrr = r(Yr), lrr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], brr = r("Flow_ast.Statement.Labeled.label"), prr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mrr = [0, [17, 0, 0], r(z)], _rr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], yrr = r(Wn), hrr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], drr = [0, [17, 0, 0], r(z)], krr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], wrr = r(Xr), Err = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Srr = r(tr), grr = r(Z0), Frr = r(nr), Trr = [0, [17, 0, 0], r(z)], Orr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Irr = [0, [15, 0], r(N0)], Arr = r(Yr), Nrr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Crr = r("Flow_ast.Statement.If.test"), Prr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Drr = [0, [17, 0, 0], r(z)], Lrr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Rrr = r(kv), jrr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Grr = [0, [17, 0, 0], r(z)], Mrr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Brr = r(m3), qrr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Urr = r(tr), Hrr = r(Z0), Xrr = r(nr), Yrr = [0, [17, 0, 0], r(z)], Vrr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], zrr = r(Xr), Krr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Wrr = r(tr), Jrr = r(Z0), $rr = r(nr), Zrr = [0, [17, 0, 0], r(z)], Qrr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], rer = [0, [15, 0], r(N0)], eer = r(Yr), ner = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], ter = r("Flow_ast.Statement.If.Alternate.body"), uer = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ier = [0, [17, 0, 0], r(z)], fer = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], xer = r(Xr), oer = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], aer = r(tr), cer = r(Z0), ser = r(nr), ver = [0, [17, 0, 0], r(z)], ler = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], ber = [0, [15, 0], r(N0)], per = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], mer = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], _er = [0, [17, 0, [12, 41, 0]], r(d0)], yer = [0, [15, 0], r(N0)], her = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], der = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], ker = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], wer = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Eer = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Ser = r("Flow_ast.Statement.Block.body"), ger = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Fer = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Ter = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Oer = [0, [17, 0, 0], r(z)], Ier = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Aer = r(Xr), Ner = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Cer = r(tr), Per = r(Z0), Der = r(nr), Ler = [0, [17, 0, 0], r(z)], Rer = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], jer = [0, [15, 0], r(N0)], Ger = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Predicate.Declared"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Predicate.Declared@ ")], Mer = [0, [17, 0, [12, 41, 0]], r(d0)], Ber = r("Flow_ast.Type.Predicate.Inferred"), qer = [0, [15, 0], r(N0)], Uer = r(Yr), Her = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Xer = r("Flow_ast.Type.Predicate.kind"), Yer = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ver = [0, [17, 0, 0], r(z)], zer = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ker = r(Xr), Wer = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Jer = r(tr), $er = r(Z0), Zer = r(nr), Qer = [0, [17, 0, 0], r(z)], rnr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], enr = [0, [15, 0], r(N0)], nnr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], tnr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], unr = [0, [17, 0, [12, 41, 0]], r(d0)], inr = [0, [15, 0], r(N0)], fnr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], xnr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], onr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], anr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], cnr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], snr = r("Flow_ast.Type.TypeArgs.arguments"), vnr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], lnr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], bnr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], pnr = [0, [17, 0, 0], r(z)], mnr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], _nr = r(Xr), ynr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], hnr = r(tr), dnr = r(Z0), knr = r(nr), wnr = [0, [17, 0, 0], r(z)], Enr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Snr = [0, [15, 0], r(N0)], gnr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Fnr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Tnr = [0, [17, 0, [12, 41, 0]], r(d0)], Onr = [0, [15, 0], r(N0)], Inr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Anr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Nnr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Cnr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Pnr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Dnr = r("Flow_ast.Type.TypeParams.params"), Lnr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Rnr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], jnr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Gnr = [0, [17, 0, 0], r(z)], Mnr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Bnr = r(Xr), qnr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Unr = r(tr), Hnr = r(Z0), Xnr = r(nr), Ynr = [0, [17, 0, 0], r(z)], Vnr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], znr = [0, [15, 0], r(N0)], Knr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Wnr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Jnr = [0, [17, 0, [12, 41, 0]], r(d0)], $nr = [0, [15, 0], r(N0)], Znr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Qnr = r("Flow_ast.Type.TypeParam.name"), rtr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], etr = [0, [17, 0, 0], r(z)], ntr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ttr = r(DU), utr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], itr = [0, [17, 0, 0], r(z)], ftr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], xtr = r(cu), otr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], atr = r(tr), ctr = r(Z0), str2 = r(nr), vtr = [0, [17, 0, 0], r(z)], ltr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], btr = r(_i), ptr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mtr = r(tr), _tr = r(Z0), ytr = r(nr), htr = [0, [17, 0, 0], r(z)], dtr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], ktr = [0, [15, 0], r(N0)], wtr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Etr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Str = [0, [17, 0, [12, 41, 0]], r(d0)], gtr = [0, [15, 0], r(N0)], Ftr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Missing"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Missing@ ")], Ttr = [0, [17, 0, [12, 41, 0]], r(d0)], Otr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Available"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Available@ ")], Itr = [0, [17, 0, [12, 41, 0]], r(d0)], Atr = [0, [15, 0], r(N0)], Ntr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Ctr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Ptr = [0, [17, 0, [12, 41, 0]], r(d0)], Dtr = [0, [15, 0], r(N0)], Ltr = r(Yr), Rtr = r(Yr), jtr = r(Yr), Gtr = r(Yr), Mtr = r(Yr), Btr = r(Yr), qtr = r(Yr), Utr = r(Yr), Htr = r(Yr), Xtr = r(Yr), Ytr = r(Yr), Vtr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Any"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Any@ ")], ztr = r(tr), Ktr = r(Z0), Wtr = r(nr), Jtr = [0, [17, 0, [12, 41, 0]], r(d0)], $tr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Mixed"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Mixed@ ")], Ztr = r(tr), Qtr = r(Z0), rur = r(nr), eur = [0, [17, 0, [12, 41, 0]], r(d0)], nur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Empty"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Empty@ ")], tur = r(tr), uur = r(Z0), iur = r(nr), fur = [0, [17, 0, [12, 41, 0]], r(d0)], xur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Void"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Void@ ")], our = r(tr), aur = r(Z0), cur = r(nr), sur = [0, [17, 0, [12, 41, 0]], r(d0)], vur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Null"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Null@ ")], lur = r(tr), bur = r(Z0), pur = r(nr), mur = [0, [17, 0, [12, 41, 0]], r(d0)], _ur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Number"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Number@ ")], yur = r(tr), hur = r(Z0), dur = r(nr), kur = [0, [17, 0, [12, 41, 0]], r(d0)], wur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.BigInt"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.BigInt@ ")], Eur = r(tr), Sur = r(Z0), gur = r(nr), Fur = [0, [17, 0, [12, 41, 0]], r(d0)], Tur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.String"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.String@ ")], Our = r(tr), Iur = r(Z0), Aur = r(nr), Nur = [0, [17, 0, [12, 41, 0]], r(d0)], Cur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Boolean"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Boolean@ ")], Pur = r(tr), Dur = r(Z0), Lur = r(nr), Rur = [0, [17, 0, [12, 41, 0]], r(d0)], jur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Symbol"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Symbol@ ")], Gur = r(tr), Mur = r(Z0), Bur = r(nr), qur = [0, [17, 0, [12, 41, 0]], r(d0)], Uur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Exists"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Exists@ ")], Hur = r(tr), Xur = r(Z0), Yur = r(nr), Vur = [0, [17, 0, [12, 41, 0]], r(d0)], zur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Nullable"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Nullable@ ")], Kur = [0, [17, 0, [12, 41, 0]], r(d0)], Wur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Function"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Function@ ")], Jur = [0, [17, 0, [12, 41, 0]], r(d0)], $ur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object@ ")], Zur = [0, [17, 0, [12, 41, 0]], r(d0)], Qur = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Interface"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Interface@ ")], r7r = [0, [17, 0, [12, 41, 0]], r(d0)], e7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Array"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Array@ ")], n7r = [0, [17, 0, [12, 41, 0]], r(d0)], t7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Generic"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Generic@ ")], u7r = [0, [17, 0, [12, 41, 0]], r(d0)], i7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.IndexedAccess"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.IndexedAccess@ ")], f7r = [0, [17, 0, [12, 41, 0]], r(d0)], x7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.OptionalIndexedAccess"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.OptionalIndexedAccess@ ")], o7r = [0, [17, 0, [12, 41, 0]], r(d0)], a7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Union"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Union@ ")], c7r = [0, [17, 0, [12, 41, 0]], r(d0)], s7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Intersection"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Intersection@ ")], v7r = [0, [17, 0, [12, 41, 0]], r(d0)], l7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Typeof"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Typeof@ ")], b7r = [0, [17, 0, [12, 41, 0]], r(d0)], p7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Tuple"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Tuple@ ")], m7r = [0, [17, 0, [12, 41, 0]], r(d0)], _7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.StringLiteral"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.StringLiteral@ ")], y7r = [0, [17, 0, [12, 41, 0]], r(d0)], h7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.NumberLiteral"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.NumberLiteral@ ")], d7r = [0, [17, 0, [12, 41, 0]], r(d0)], k7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.BigIntLiteral"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.BigIntLiteral@ ")], w7r = [0, [17, 0, [12, 41, 0]], r(d0)], E7r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.BooleanLiteral"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.BooleanLiteral@ ")], S7r = [0, [17, 0, [12, 41, 0]], r(d0)], g7r = [0, [15, 0], r(N0)], F7r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], T7r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], O7r = [0, [17, 0, [12, 41, 0]], r(d0)], I7r = [0, [15, 0], r(N0)], A7r = r(Yr), N7r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], C7r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], P7r = r("Flow_ast.Type.Intersection.types"), D7r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], L7r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], R7r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], j7r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], G7r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], M7r = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], B7r = [0, [17, 0, [12, 41, 0]], r(d0)], q7r = [0, [17, 0, 0], r(z)], U7r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], H7r = r(Xr), X7r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Y7r = r(tr), V7r = r(Z0), z7r = r(nr), K7r = [0, [17, 0, 0], r(z)], W7r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], J7r = [0, [15, 0], r(N0)], $7r = r(Yr), Z7r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Q7r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], rir = r("Flow_ast.Type.Union.types"), eir = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], nir = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], tir = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], uir = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], iir = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], fir = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], xir = [0, [17, 0, [12, 41, 0]], r(d0)], oir = [0, [17, 0, 0], r(z)], air = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], cir = r(Xr), sir = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], vir = r(tr), lir = r(Z0), bir = r(nr), pir = [0, [17, 0, 0], r(z)], mir = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], _ir = [0, [15, 0], r(N0)], yir = r(Yr), hir = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], dir = r("Flow_ast.Type.Array.argument"), kir = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], wir = [0, [17, 0, 0], r(z)], Eir = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Sir = r(Xr), gir = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Fir = r(tr), Tir = r(Z0), Oir = r(nr), Iir = [0, [17, 0, 0], r(z)], Air = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Nir = [0, [15, 0], r(N0)], Cir = r(Yr), Pir = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Dir = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Lir = r("Flow_ast.Type.Tuple.types"), Rir = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], jir = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Gir = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Mir = [0, [17, 0, 0], r(z)], Bir = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], qir = r(Xr), Uir = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Hir = r(tr), Xir = r(Z0), Yir = r(nr), Vir = [0, [17, 0, 0], r(z)], zir = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Kir = [0, [15, 0], r(N0)], Wir = r(Yr), Jir = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], $ir = r("Flow_ast.Type.Typeof.argument"), Zir = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Qir = [0, [17, 0, 0], r(z)], rfr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], efr = r(Xr), nfr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], tfr = r(tr), ufr = r(Z0), ifr = r(nr), ffr = [0, [17, 0, 0], r(z)], xfr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], ofr = [0, [15, 0], r(N0)], afr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], cfr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], sfr = [0, [17, 0, [12, 41, 0]], r(d0)], vfr = [0, [15, 0], r(N0)], lfr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], bfr = r("Flow_ast.Type.Typeof.Target.qualification"), pfr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], mfr = [0, [17, 0, 0], r(z)], _fr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], yfr = r(mt), hfr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dfr = [0, [17, 0, 0], r(z)], kfr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], wfr = [0, [15, 0], r(N0)], Efr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Typeof.Target.Unqualified"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Typeof.Target.Unqualified@ ")], Sfr = [0, [17, 0, [12, 41, 0]], r(d0)], gfr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Typeof.Target.Qualified"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Typeof.Target.Qualified@ ")], Ffr = [0, [17, 0, [12, 41, 0]], r(d0)], Tfr = [0, [15, 0], r(N0)], Ofr = r(Yr), Ifr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Afr = r("Flow_ast.Type.Nullable.argument"), Nfr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Cfr = [0, [17, 0, 0], r(z)], Pfr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Dfr = r(Xr), Lfr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Rfr = r(tr), jfr = r(Z0), Gfr = r(nr), Mfr = [0, [17, 0, 0], r(z)], Bfr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], qfr = [0, [15, 0], r(N0)], Ufr = r(Yr), Hfr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Xfr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Yfr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Vfr = [0, [17, 0, [12, 41, 0]], r(d0)], zfr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Kfr = r("Flow_ast.Type.Interface.body"), Wfr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Jfr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], $fr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Zfr = [0, [17, 0, [12, 41, 0]], r(d0)], Qfr = [0, [17, 0, 0], r(z)], rxr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], exr = r(P7), nxr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], txr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], uxr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], ixr = [0, [17, 0, 0], r(z)], fxr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], xxr = r(Xr), oxr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], axr = r(tr), cxr = r(Z0), sxr = r(nr), vxr = [0, [17, 0, 0], r(z)], lxr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], bxr = [0, [15, 0], r(N0)], pxr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.Property"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.Property@ ")], mxr = [0, [17, 0, [12, 41, 0]], r(d0)], _xr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.SpreadProperty"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.SpreadProperty@ ")], yxr = [0, [17, 0, [12, 41, 0]], r(d0)], hxr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.Indexer"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.Indexer@ ")], dxr = [0, [17, 0, [12, 41, 0]], r(d0)], kxr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.CallProperty"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.CallProperty@ ")], wxr = [0, [17, 0, [12, 41, 0]], r(d0)], Exr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.InternalSlot"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.InternalSlot@ ")], Sxr = [0, [17, 0, [12, 41, 0]], r(d0)], gxr = [0, [15, 0], r(N0)], Fxr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Txr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Oxr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Ixr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Axr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Nxr = r("Flow_ast.Type.Object.exact"), Cxr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Pxr = [0, [9, 0, 0], r(An)], Dxr = [0, [17, 0, 0], r(z)], Lxr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Rxr = r(GY), jxr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Gxr = [0, [9, 0, 0], r(An)], Mxr = [0, [17, 0, 0], r(z)], Bxr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], qxr = r(H4), Uxr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Hxr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Xxr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Yxr = [0, [17, 0, 0], r(z)], Vxr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], zxr = r(Xr), Kxr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Wxr = r(tr), Jxr = r(Z0), $xr = r(nr), Zxr = [0, [17, 0, 0], r(z)], Qxr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], ror = [0, [15, 0], r(N0)], eor = r(Yr), nor = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], tor = r("Flow_ast.Type.Object.InternalSlot.id"), uor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ior = [0, [17, 0, 0], r(z)], xor = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], oor = r(Bn), aor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], cor = [0, [17, 0, 0], r(z)], sor = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], vor = r(qu), lor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], bor = [0, [9, 0, 0], r(An)], por = [0, [17, 0, 0], r(z)], mor = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], _or = r(nu), yor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], hor = [0, [9, 0, 0], r(An)], dor = [0, [17, 0, 0], r(z)], kor = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], wor = r(nU), Eor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Sor = [0, [9, 0, 0], r(An)], gor = [0, [17, 0, 0], r(z)], For = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Tor = r(Xr), Oor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ior = r(tr), Aor = r(Z0), Nor = r(nr), Cor = [0, [17, 0, 0], r(z)], Por = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Dor = [0, [15, 0], r(N0)], Lor = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Ror = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], jor = [0, [17, 0, [12, 41, 0]], r(d0)], Gor = [0, [15, 0], r(N0)], Mor = r(Yr), Bor = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], qor = r("Flow_ast.Type.Object.CallProperty.value"), Uor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Hor = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Xor = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Yor = [0, [17, 0, [12, 41, 0]], r(d0)], Vor = [0, [17, 0, 0], r(z)], zor = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Kor = r(nu), Wor = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Jor = [0, [9, 0, 0], r(An)], $or = [0, [17, 0, 0], r(z)], Zor = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Qor = r(Xr), rar = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ear = r(tr), nar = r(Z0), tar = r(nr), uar = [0, [17, 0, 0], r(z)], iar = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], far = [0, [15, 0], r(N0)], xar = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], oar = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], aar = [0, [17, 0, [12, 41, 0]], r(d0)], car = [0, [15, 0], r(N0)], sar = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], lar = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], bar = [0, [17, 0, [12, 41, 0]], r(d0)], par = [0, [15, 0], r(N0)], mar = r(Yr), _ar = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], yar = r("Flow_ast.Type.Object.Indexer.id"), har = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dar = r(tr), kar = r(Z0), war = r(nr), Ear = [0, [17, 0, 0], r(z)], Sar = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], gar = r(ii), Far = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Tar = [0, [17, 0, 0], r(z)], Oar = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Iar = r(Bn), Aar = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Nar = [0, [17, 0, 0], r(z)], Car = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Par = r(nu), Dar = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Lar = [0, [9, 0, 0], r(An)], Rar = [0, [17, 0, 0], r(z)], jar = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Gar = r(cu), Mar = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Bar = r(tr), qar = r(Z0), Uar = r(nr), Har = [0, [17, 0, 0], r(z)], Xar = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Yar = r(Xr), Var = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zar = r(tr), Kar = r(Z0), War = r(nr), Jar = [0, [17, 0, 0], r(z)], $ar = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Zar = [0, [15, 0], r(N0)], Qar = r(Yr), rcr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], ecr = r("Flow_ast.Type.Object.SpreadProperty.argument"), ncr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], tcr = [0, [17, 0, 0], r(z)], ucr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], icr = r(Xr), fcr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xcr = r(tr), ocr = r(Z0), acr = r(nr), ccr = [0, [17, 0, 0], r(z)], scr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], vcr = [0, [15, 0], r(N0)], lcr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], bcr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], pcr = [0, [17, 0, [12, 41, 0]], r(d0)], mcr = [0, [15, 0], r(N0)], _cr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.Property.Init"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.Property.Init@ ")], ycr = [0, [17, 0, [12, 41, 0]], r(d0)], hcr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.Property.Get"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.Property.Get@ ")], dcr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], kcr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], wcr = [0, [17, 0, [12, 41, 0]], r(d0)], Ecr = [0, [17, 0, [12, 41, 0]], r(d0)], Scr = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Object.Property.Set"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Object.Property.Set@ ")], gcr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Fcr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Tcr = [0, [17, 0, [12, 41, 0]], r(d0)], Ocr = [0, [17, 0, [12, 41, 0]], r(d0)], Icr = [0, [15, 0], r(N0)], Acr = r(Yr), Ncr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Ccr = r("Flow_ast.Type.Object.Property.key"), Pcr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Dcr = [0, [17, 0, 0], r(z)], Lcr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Rcr = r(Bn), jcr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Gcr = [0, [17, 0, 0], r(z)], Mcr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Bcr = r(qu), qcr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ucr = [0, [9, 0, 0], r(An)], Hcr = [0, [17, 0, 0], r(z)], Xcr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ycr = r(nu), Vcr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zcr = [0, [9, 0, 0], r(An)], Kcr = [0, [17, 0, 0], r(z)], Wcr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Jcr = r(X3), $cr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Zcr = [0, [9, 0, 0], r(An)], Qcr = [0, [17, 0, 0], r(z)], rsr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], esr = r(nU), nsr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], tsr = [0, [9, 0, 0], r(An)], usr = [0, [17, 0, 0], r(z)], isr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], fsr = r(cu), xsr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], osr = r(tr), asr = r(Z0), csr = r(nr), ssr = [0, [17, 0, 0], r(z)], vsr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], lsr = r(Xr), bsr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], psr = r(tr), msr = r(Z0), _sr = r(nr), ysr = [0, [17, 0, 0], r(z)], hsr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], dsr = [0, [15, 0], r(N0)], ksr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], wsr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Esr = [0, [17, 0, [12, 41, 0]], r(d0)], Ssr = [0, [15, 0], r(N0)], gsr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Fsr = r("Flow_ast.Type.OptionalIndexedAccess.indexed_access"), Tsr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Osr = [0, [17, 0, 0], r(z)], Isr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Asr = r(qu), Nsr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Csr = [0, [9, 0, 0], r(An)], Psr = [0, [17, 0, 0], r(z)], Dsr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Lsr = [0, [15, 0], r(N0)], Rsr = r(Yr), jsr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Gsr = r("Flow_ast.Type.IndexedAccess._object"), Msr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Bsr = [0, [17, 0, 0], r(z)], qsr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Usr = r("index"), Hsr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Xsr = [0, [17, 0, 0], r(z)], Ysr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Vsr = r(Xr), zsr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ksr = r(tr), Wsr = r(Z0), Jsr = r(nr), $sr = [0, [17, 0, 0], r(z)], Zsr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Qsr = [0, [15, 0], r(N0)], r1r = r(Yr), e1r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], n1r = r("Flow_ast.Type.Generic.id"), t1r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], u1r = [0, [17, 0, 0], r(z)], i1r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], f1r = r(Z2), x1r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], o1r = r(tr), a1r = r(Z0), c1r = r(nr), s1r = [0, [17, 0, 0], r(z)], v1r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], l1r = r(Xr), b1r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], p1r = r(tr), m1r = r(Z0), _1r = r(nr), y1r = [0, [17, 0, 0], r(z)], h1r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], d1r = [0, [15, 0], r(N0)], k1r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], w1r = r("Flow_ast.Type.Generic.Identifier.qualification"), E1r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], S1r = [0, [17, 0, 0], r(z)], g1r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], F1r = r(mt), T1r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], O1r = [0, [17, 0, 0], r(z)], I1r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], A1r = [0, [15, 0], r(N0)], N1r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], C1r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], P1r = [0, [17, 0, [12, 41, 0]], r(d0)], D1r = [0, [15, 0], r(N0)], L1r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Generic.Identifier.Unqualified"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Generic.Identifier.Unqualified@ ")], R1r = [0, [17, 0, [12, 41, 0]], r(d0)], j1r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Type.Generic.Identifier.Qualified"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Type.Generic.Identifier.Qualified@ ")], G1r = [0, [17, 0, [12, 41, 0]], r(d0)], M1r = [0, [15, 0], r(N0)], B1r = r(Yr), q1r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], U1r = r("Flow_ast.Type.Function.tparams"), H1r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], X1r = r(tr), Y1r = r(Z0), V1r = r(nr), z1r = [0, [17, 0, 0], r(z)], K1r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], W1r = r(Dt), J1r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], $1r = [0, [17, 0, 0], r(z)], Z1r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Q1r = r(Ju), rvr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], evr = [0, [17, 0, 0], r(z)], nvr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], tvr = r(Xr), uvr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], ivr = r(tr), fvr = r(Z0), xvr = r(nr), ovr = [0, [17, 0, 0], r(z)], avr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], cvr = [0, [15, 0], r(N0)], svr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], vvr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], lvr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], bvr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], pvr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], mvr = r("Flow_ast.Type.Function.Params.this_"), _vr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], yvr = r(tr), hvr = r(Z0), dvr = r(nr), kvr = [0, [17, 0, 0], r(z)], wvr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Evr = r(Dt), Svr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], gvr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], Fvr = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], Tvr = [0, [17, 0, 0], r(z)], Ovr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ivr = r(xd), Avr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Nvr = r(tr), Cvr = r(Z0), Pvr = r(nr), Dvr = [0, [17, 0, 0], r(z)], Lvr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Rvr = r(Xr), jvr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Gvr = r(tr), Mvr = r(Z0), Bvr = r(nr), qvr = [0, [17, 0, 0], r(z)], Uvr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Hvr = [0, [15, 0], r(N0)], Xvr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Yvr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Vvr = [0, [17, 0, [12, 41, 0]], r(d0)], zvr = [0, [15, 0], r(N0)], Kvr = r(Yr), Wvr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Jvr = r("Flow_ast.Type.Function.ThisParam.annot"), $vr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Zvr = [0, [17, 0, 0], r(z)], Qvr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], r2r = r(Xr), e2r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], n2r = r(tr), t2r = r(Z0), u2r = r(nr), i2r = [0, [17, 0, 0], r(z)], f2r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], x2r = [0, [15, 0], r(N0)], o2r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], a2r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], c2r = [0, [17, 0, [12, 41, 0]], r(d0)], s2r = [0, [15, 0], r(N0)], v2r = r(Yr), l2r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], b2r = r("Flow_ast.Type.Function.RestParam.argument"), p2r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], m2r = [0, [17, 0, 0], r(z)], _2r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], y2r = r(Xr), h2r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], d2r = r(tr), k2r = r(Z0), w2r = r(nr), E2r = [0, [17, 0, 0], r(z)], S2r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], g2r = [0, [15, 0], r(N0)], F2r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], T2r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], O2r = [0, [17, 0, [12, 41, 0]], r(d0)], I2r = [0, [15, 0], r(N0)], A2r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], N2r = r("Flow_ast.Type.Function.Param.name"), C2r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], P2r = r(tr), D2r = r(Z0), L2r = r(nr), R2r = [0, [17, 0, 0], r(z)], j2r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], G2r = r(Qc), M2r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], B2r = [0, [17, 0, 0], r(z)], q2r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], U2r = r(qu), H2r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], X2r = [0, [9, 0, 0], r(An)], Y2r = [0, [17, 0, 0], r(z)], V2r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], z2r = [0, [15, 0], r(N0)], K2r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], W2r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], J2r = [0, [17, 0, [12, 41, 0]], r(d0)], $2r = [0, [15, 0], r(N0)], Z2r = r(Yr), Q2r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], rlr = r("Flow_ast.ComputedKey.expression"), elr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], nlr = [0, [17, 0, 0], r(z)], tlr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ulr = r(Xr), ilr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], flr = r(tr), xlr = r(Z0), olr = r(nr), alr = [0, [17, 0, 0], r(z)], clr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], slr = [0, [15, 0], r(N0)], vlr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], llr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], blr = [0, [17, 0, [12, 41, 0]], r(d0)], plr = [0, [15, 0], r(N0)], mlr = r(Yr), _lr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], ylr = r("Flow_ast.Variance.kind"), hlr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], dlr = [0, [17, 0, 0], r(z)], klr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], wlr = r(Xr), Elr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Slr = r(tr), glr = r(Z0), Flr = r(nr), Tlr = [0, [17, 0, 0], r(z)], Olr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], Ilr = [0, [15, 0], r(N0)], Alr = r("Flow_ast.Variance.Minus"), Nlr = r("Flow_ast.Variance.Plus"), Clr = [0, [15, 0], r(N0)], Plr = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], Dlr = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], Llr = [0, [17, 0, [12, 41, 0]], r(d0)], Rlr = [0, [15, 0], r(N0)], jlr = r(Yr), Glr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Mlr = r("Flow_ast.BooleanLiteral.value"), Blr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], qlr = [0, [9, 0, 0], r(An)], Ulr = [0, [17, 0, 0], r(z)], Hlr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Xlr = r(Xr), Ylr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Vlr = r(tr), zlr = r(Z0), Klr = r(nr), Wlr = [0, [17, 0, 0], r(z)], Jlr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], $lr = [0, [15, 0], r(N0)], Zlr = r(Yr), Qlr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], rbr = r("Flow_ast.BigIntLiteral.approx_value"), ebr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], nbr = [0, [8, [0, 0, 5], 0, 0, 0], r(r8)], tbr = [0, [17, 0, 0], r(z)], ubr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], ibr = r(x1), fbr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], xbr = [0, [3, 0, 0], r(Vt)], obr = [0, [17, 0, 0], r(z)], abr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], cbr = r(Xr), sbr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], vbr = r(tr), lbr = r(Z0), bbr = r(nr), pbr = [0, [17, 0, 0], r(z)], mbr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], _br = [0, [15, 0], r(N0)], ybr = r(Yr), hbr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], dbr = r("Flow_ast.NumberLiteral.value"), kbr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], wbr = [0, [8, [0, 0, 5], 0, 0, 0], r(r8)], Ebr = [0, [17, 0, 0], r(z)], Sbr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], gbr = r(c7), Fbr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Tbr = [0, [3, 0, 0], r(Vt)], Obr = [0, [17, 0, 0], r(z)], Ibr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Abr = r(Xr), Nbr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Cbr = r(tr), Pbr = r(Z0), Dbr = r(nr), Lbr = [0, [17, 0, 0], r(z)], Rbr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], jbr = [0, [15, 0], r(N0)], Gbr = r(Yr), Mbr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Bbr = r("Flow_ast.StringLiteral.value"), qbr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Ubr = [0, [3, 0, 0], r(Vt)], Hbr = [0, [17, 0, 0], r(z)], Xbr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Ybr = r(c7), Vbr = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], zbr = [0, [3, 0, 0], r(Vt)], Kbr = [0, [17, 0, 0], r(z)], Wbr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Jbr = r(Xr), $br = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Zbr = r(tr), Qbr = r(Z0), r4r = r(nr), e4r = [0, [17, 0, 0], r(z)], n4r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], t4r = [0, [15, 0], r(N0)], u4r = r("Flow_ast.Literal.Null"), i4r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Literal.String"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Literal.String@ ")], f4r = [0, [3, 0, 0], r(Vt)], x4r = [0, [17, 0, [12, 41, 0]], r(d0)], o4r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Literal.Boolean"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Literal.Boolean@ ")], a4r = [0, [9, 0, 0], r(An)], c4r = [0, [17, 0, [12, 41, 0]], r(d0)], s4r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Literal.Number"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Literal.Number@ ")], v4r = [0, [8, [0, 0, 5], 0, 0, 0], r(r8)], l4r = [0, [17, 0, [12, 41, 0]], r(d0)], b4r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Literal.BigInt"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Literal.BigInt@ ")], p4r = [0, [8, [0, 0, 5], 0, 0, 0], r(r8)], m4r = [0, [17, 0, [12, 41, 0]], r(d0)], _4r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("Flow_ast.Literal.RegExp"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>Flow_ast.Literal.RegExp@ ")], y4r = [0, [17, 0, [12, 41, 0]], r(d0)], h4r = [0, [15, 0], r(N0)], d4r = r(Yr), k4r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], w4r = r("Flow_ast.Literal.value"), E4r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], S4r = [0, [17, 0, 0], r(z)], g4r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], F4r = r(c7), T4r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], O4r = [0, [3, 0, 0], r(Vt)], I4r = [0, [17, 0, 0], r(z)], A4r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], N4r = r(Xr), C4r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], P4r = r(tr), D4r = r(Z0), L4r = r(nr), R4r = [0, [17, 0, 0], r(z)], j4r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], G4r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], M4r = r("Flow_ast.Literal.RegExp.pattern"), B4r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], q4r = [0, [3, 0, 0], r(Vt)], U4r = [0, [17, 0, 0], r(z)], H4r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], X4r = r(jX), Y4r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], V4r = [0, [3, 0, 0], r(Vt)], z4r = [0, [17, 0, 0], r(z)], K4r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], W4r = [0, [15, 0], r(N0)], J4r = [0, [15, 0], r(N0)], $4r = r(Yr), Z4r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], Q4r = r("Flow_ast.PrivateName.name"), r8r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], e8r = [0, [3, 0, 0], r(Vt)], n8r = [0, [17, 0, 0], r(z)], t8r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], u8r = r(Xr), i8r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], f8r = r(tr), x8r = r(Z0), o8r = r(nr), a8r = [0, [17, 0, 0], r(z)], c8r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], s8r = [0, [15, 0], r(N0)], v8r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], l8r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], b8r = [0, [17, 0, [12, 41, 0]], r(d0)], p8r = [0, [15, 0], r(N0)], m8r = r(Yr), _8r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], y8r = r("Flow_ast.Identifier.name"), h8r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], d8r = [0, [3, 0, 0], r(Vt)], k8r = [0, [17, 0, 0], r(z)], w8r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], E8r = r(Xr), S8r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], g8r = r(tr), F8r = r(Z0), T8r = r(nr), O8r = [0, [17, 0, 0], r(z)], I8r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], A8r = [0, [15, 0], r(N0)], N8r = [0, [12, 40, [18, [1, [0, 0, r(C)]], 0]], r(Zr)], C8r = [0, [12, 44, [17, [0, r(v), 1, 0], 0]], r(zr)], P8r = [0, [17, 0, [12, 41, 0]], r(d0)], D8r = [0, [15, 0], r(N0)], L8r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], R8r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], j8r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], G8r = r("Flow_ast.Syntax.leading"), M8r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], B8r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], q8r = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], U8r = [0, [17, 0, 0], r(z)], H8r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], X8r = r("trailing"), Y8r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], V8r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, 91, 0]], r(Ye)], z8r = [0, [17, [0, r(Ce), 0, 0], [12, 93, [17, 0, 0]]], r(Xe)], K8r = [0, [17, 0, 0], r(z)], W8r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], J8r = r("internal"), $8r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], Z8r = [0, [17, 0, 0], r(z)], Q8r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], r3r = [0, [0, 0, 0]], e3r = [0, r(Su), 21, 2], n3r = [0, [0, 0, 0, 0, 0]], t3r = [0, r(Su), 32, 2], u3r = [0, [0, 0, 0, 0, 0]], i3r = [0, r(Su), 43, 2], f3r = [0, [0, [0, [0, 0, 0]], 0, 0, 0, 0]], x3r = [0, r(Su), 70, 2], o3r = [0, [0, 0, 0]], a3r = [0, r(Su), 80, 2], c3r = [0, [0, 0, 0]], s3r = [0, r(Su), 90, 2], v3r = [0, [0, 0, 0]], l3r = [0, r(Su), R7, 2], b3r = [0, [0, 0, 0]], p3r = [0, r(Su), Xt, 2], m3r = [0, [0, 0, 0, 0, 0, 0, 0]], _3r = [0, r(Su), br, 2], y3r = [0, [0, 0, 0, 0, 0]], h3r = [0, r(Su), KH, 2], d3r = [0, [0, [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0, 0, 0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]]]], k3r = [0, r(Su), 485, 2], w3r = [0, [0, [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0]], E3r = [0, r(Su), BX, 2], S3r = [0, [0, [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0]], g3r = [0, r(Su), 1460, 2], F3r = [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0, 0, 0]], T3r = [0, r(Su), 1604, 2], O3r = [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0]], I3r = [0, r(Su), 1689, 2], A3r = [0, [0, 0, 0, 0, 0, 0, 0]], N3r = [0, r(Su), 1705, 2], C3r = [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0]], P3r = [0, r(Su), 1828, 2], D3r = [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], L3r = [0, r(Su), 1895, 2], R3r = [0, [0, 0, 0, 0, 0]], j3r = [0, r(Su), 1907, 2], G3r = [0, [0, 0, 0]], M3r = [0, [0, 0, 0, 0, 0]], B3r = [0, [0, 0, 0, 0, 0]], q3r = [0, [0, [0, [0, 0, 0]], 0, 0, 0, 0]], U3r = [0, [0, 0, 0]], H3r = [0, [0, 0, 0]], X3r = [0, [0, 0, 0]], Y3r = [0, [0, 0, 0]], V3r = [0, [0, 0, 0, 0, 0, 0, 0]], z3r = [0, [0, 0, 0, 0, 0]], K3r = [0, [0, [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0, 0, 0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]]]], W3r = [0, [0, [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0]], J3r = [0, [0, [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0]], $3r = [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0, 0, 0, 0, 0]], Z3r = [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0]], 0, 0, 0, 0]], Q3r = [0, [0, 0, 0, 0, 0, 0, 0]], r6r = [0, [0, [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0]], e6r = [0, [0, [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], [0, [0, 0, 0, 0, 0]], 0, 0, 0, 0]], n6r = [0, [0, 0, 0, 0, 0]], t6r = [0, 1], u6r = [0, 0], i6r = [0, 2], f6r = [0, 0], x6r = [0, 1], o6r = [0, 1], a6r = [0, 1], c6r = [0, 1], s6r = [0, 1], v6r = [0, 0, 0], l6r = [0, 0, 0], b6r = [0, r(Eu), r(Yx), r(to), r(Oo), r(cu), r(dc), r(ux), r(oc), r(Gf), r(To), r(Po), r(ec), r(No), r(wf), r(Ja), r(uo), r(Cx), r(Ff), r(ax), r(Oa), r(qf), r(Ro), r(Ka), r(Xx), r(Jx), r(_x), r(xo), r(fa), r(no), r(F7), r(Io), r(Pf), r(wo), r($x), r(Jf), r(Uo), r(yo), r(D7), r(yc), r(Na), r(Sx), r(Vx), r(_f), r(Sc), r(Mf), r(cx), r(Ju), r(px), r(pa), r(De), r(r7), r($a), r(Yo), r(wa), r(Zx), r(sc), r(aa), r(ta), r(Cf), r(Bo), r(Yf), r(Wf), r(kc), r(vc), r(va), r(bf), r(zo), r(Zf), r(rx), r(mi), r(Qo), r(Mo), r(df), r(Va), r(Xo), r(lc), r(fc), r(Zo), r(oo), r(ix), r(Nf), r(uf), r(Xf), r(ex), r(ma), r(da), r(Kf), r(nc), r(gf), r(Lx), r(qo), r(bx), r(yf), r(Of), r(mc), r(xr), r(_c), r(Wx), r(Ux), r(Pa), r(zx), r(nx), r(Dx), r(ha), r(Px), r(hc), r(vx), r(Jo), r(wc), r(Da), r(Ko), r(rc), r(rf), r(Nx), r(ao), r(Ox), r(io), r(jo), r(Ao), r(pc), r(Ax), r(ff), r(of), r(Qf), r(Wo), r(ya), r(ac), r(Rf), r(za), r(ro), r(ko), r(af), r(e7), r(Aa), r(Fx), r(Ca), r(Hx), r(bo), r(Ec), r(Uu), r(Ya), r(ia), r(pf), r(yi), r(Vf), r(bc), r(Wa), r(G7), r(mx), r(ba), r(vf), r(Ba), r(kx), r(Go), r(_a), r(tx), r(nf), r(Lf), r(gc), r(Ix), r(hx), r(Ia), r(Tc), r(lo), r(So), r(li), r(ic), r(yx), r(La), r(Xa), r(Fc), r(Mx), r(ka), r(Bf), r(Sf), r(eo), r(Tx), r(Nu), r(ea), r(ua), r(Qa), r(sf), r(Sa), r(vo), r(Af), r(jx), r(Za), r(If), r(jf), r(Bx), r(Ho), r(qx), r(sa), r(ra), r(la), r(v7), r(ho), r(Ra), r(wx), r(Fo), r(so), r(na), r(zf), r(ja), r(Ta), r(xx), r(I7), r(N7), r($o), r(xa), r($f), r(_o), r(hf), r(go), r(fx), r(gx), r(Uf), r(Ga), r(kf), r(tf), r(ga), r(Df), r(tc), r(mf), r(qa), r(oa), r(Ua), r(Ef), r(Qi), r(sx), r(po), r(lx), r(Tf), r(A7), r(Ha), r(Tn), r(Gx), r(xf), r(lf), r(Kx), r(Hf), r(Vo), r(ca), r(Ea), r(co), r(Rx), r(W4)], p6r = [0, r(_f), r(Qf), r(_a), r(Vf), r(Tf), r(Yf), r(qo), r(ex), r(Nx), r(ko), r(Ka), r(D7), r(Xo), r(ea), r(tc), r(pc), r(bx), r(ff), r(ra), r(Bx), r(Yx), r(li), r(hc), r(Lx), r(Wa), r(sa), r(Of), r(yi), r(Oo), r(Mx), r(ta), r(zf), r(sx), r(tx), r(Qi), r(jo), r(Af), r(ba), r(vc), r(ic), r(yo), r(Kx), r(ma), r(ia), r(Sx), r(la), r(Px), r(yf), r(tf), r(go), r(Qo), r(wa), r(Xf), r(Yo), r(Ko), r(Uf), r(fc), r(r7), r(Nf), r(Ba), r(mc), r(ao), r(Ao), r(bc), r(nx), r($o), r(Jx), r(If), r(uf), r(rc), r($f), r(Dx), r(Go), r(aa), r(Ea), r(so), r(Sa), r(Wx), r(rx), r(co), r(po), r(cx), r(cu), r($a), r(uo), r(Ya), r(lf), r(So), r(no), r(ac), r(Df), r(nc), r(Uo), r(v7), r(Xa), r(Xx), r(Eu), r(fa), r(Ta), r(ec), r(zo), r(px), r(Po), r(hf), r(ja), r(oc), r(Ax), r(Zx), r(ro), r(Ho), r(Sf), r(lc), r(ua), r(ha), r(bf), r(ka), r(Ff), r(xo), r(dc), r(Sc), r(Cx), r(To), r(Ga), r(yx), r(fx), r(Pa), r(kx), r(Gf), r(_o), r(gf), r(Jo), r(Hf), r(Ux), r(oa), r(ga), r(Aa), r(va), r(Mo), r(wc), r(_c), r(Uu), r(Ju), r(Ha), r(Ja), r(ax), r(yc), r(kc), r(F7), r(I7), r(pf), r(Va), r(Tx), r(of), r(mi), r(Ix), r(qx), r(Fx), r(gx), r(nf), r(zx), r(Wo), r(G7), r(vf), r(wf), r(jf), r(De), r(Tc), r(bo), r(Za), r(sf), r(Kf), r(Mf), r(Ca), r(oo), r(Cf), r(_x), r(ix), r(Oa), r(lx), r(Fo), r(Ua), r(na), r(Gx), r(Rf), r(Jf), r(mx), r(pa), r(Ec), r(qa), r(da), r(io), r(kf), r(af), r(ho), r(Ro), r(Rx), r(ux), r(Ef), r(qf), r(Ra), r(Ox), r(ya), r(xa), r(vx), r(Bo), r(za), r(Bf), r(Da), r(wo), r(Vo), r(Wf), r(xf), r(Nu), r(Zf), r(eo), r(hx), r(Ia), r(Vx), r(N7), r(Lf), r(sc), r(vo), r(wx), r(Pf), r($x), r(Na), r(lo), r(Qa), r(No), r(La), r(df), r(Tn), r(Hx), r(mf), r(rf), r(Zo), r(gc), r(xx), r(jx), r(A7), r(ca), r(e7), r(to), r(Fc), r(Io), r(xr)], m6r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("File_key.LibFile"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>File_key.LibFile@ ")], _6r = [0, [3, 0, 0], r(Vt)], y6r = [0, [17, 0, [12, 41, 0]], r(d0)], h6r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("File_key.SourceFile"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>File_key.SourceFile@ ")], d6r = [0, [3, 0, 0], r(Vt)], k6r = [0, [17, 0, [12, 41, 0]], r(d0)], w6r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("File_key.JsonFile"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>File_key.JsonFile@ ")], E6r = [0, [3, 0, 0], r(Vt)], S6r = [0, [17, 0, [12, 41, 0]], r(d0)], g6r = [0, [12, 40, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r("File_key.ResourceFile"), [17, [0, r(v), 1, 0], 0]]]], r("(@[<2>File_key.ResourceFile@ ")], F6r = [0, [3, 0, 0], r(Vt)], T6r = [0, [17, 0, [12, 41, 0]], r(d0)], O6r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], I6r = r("Loc.line"), A6r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], N6r = [0, [4, 0, 0, 0, 0], r(N2)], C6r = [0, [17, 0, 0], r(z)], P6r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], D6r = r(I2), L6r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], R6r = [0, [4, 0, 0, 0, 0], r(N2)], j6r = [0, [17, 0, 0], r(z)], G6r = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], M6r = [0, [15, 0], r(N0)], B6r = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [11, r(kr), 0]], r(dr)], q6r = r("Loc.source"), U6r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], H6r = r(tr), X6r = r(Z0), Y6r = r(nr), V6r = [0, [17, 0, 0], r(z)], z6r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], K6r = r(g7), W6r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], J6r = [0, [17, 0, 0], r(z)], $6r = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Z6r = r("_end"), Q6r = [0, [18, [1, [0, 0, r(C)]], [2, 0, [11, r(J), [17, [0, r(v), 1, 0], 0]]]], r(W)], rpr = [0, [17, 0, 0], r(z)], epr = [0, [17, [0, r(v), 1, 0], [12, br, [17, 0, 0]]], r(wr)], npr = [0, r(Rx), r(co), r(Ea), r(ca), r(Vo), r(Hf), r(Kx), r(lf), r(xf), r(Gx), r(Tn), r(Ha), r(A7), r(Tf), r(lx), r(po), r(sx), r(Qi), r(Ef), r(Ua), r(oa), r(qa), r(mf), r(tc), r(Df), r(ga), r(tf), r(kf), r(Ga), r(Uf), r(gx), r(fx), r(go), r(hf), r(_o), r($f), r(xa), r($o), r(N7), r(I7), r(xx), r(Ta), r(ja), r(zf), r(na), r(so), r(Fo), r(wx), r(Ra), r(ho), r(v7), r(la), r(ra), r(sa), r(qx), r(Ho), r(Bx), r(jf), r(If), r(Za), r(jx), r(Af), r(vo), r(Sa), r(sf), r(Qa), r(ua), r(ea), r(Nu), r(Tx), r(eo), r(Sf), r(Bf), r(ka), r(Mx), r(Fc), r(Xa), r(La), r(yx), r(ic), r(li), r(So), r(lo), r(Tc), r(Ia), r(hx), r(Ix), r(gc), r(Lf), r(nf), r(tx), r(_a), r(Go), r(kx), r(Ba), r(vf), r(ba), r(mx), r(G7), r(Wa), r(bc), r(Vf), r(yi), r(pf), r(ia), r(Ya), r(Uu), r(Ec), r(bo), r(Hx), r(Ca), r(Fx), r(Aa), r(e7), r(af), r(ko), r(ro), r(za), r(Rf), r(ac), r(ya), r(Wo), r(Qf), r(of), r(ff), r(Ax), r(pc), r(Ao), r(jo), r(io), r(Ox), r(ao), r(Nx), r(rf), r(rc), r(Ko), r(Da), r(wc), r(Jo), r(vx), r(hc), r(Px), r(ha), r(Dx), r(nx), r(zx), r(Pa), r(Ux), r(Wx), r(_c), r(xr), r(mc), r(Of), r(yf), r(bx), r(qo), r(Lx), r(gf), r(nc), r(Kf), r(da), r(ma), r(ex), r(Xf), r(uf), r(Nf), r(ix), r(oo), r(Zo), r(fc), r(lc), r(Xo), r(Va), r(df), r(Mo), r(Qo), r(mi), r(rx), r(Zf), r(zo), r(bf), r(va), r(vc), r(kc), r(Wf), r(Yf), r(Bo), r(Cf), r(ta), r(aa), r(sc), r(Zx), r(wa), r(Yo), r($a), r(r7), r(De), r(pa), r(px), r(Ju), r(cx), r(Mf), r(Sc), r(_f), r(Vx), r(Sx), r(Na), r(yc), r(D7), r(yo), r(Uo), r(Jf), r($x), r(wo), r(Pf), r(Io), r(F7), r(no), r(fa), r(xo), r(_x), r(Jx), r(Xx), r(Ka), r(Ro), r(qf), r(Oa), r(ax), r(Ff), r(Cx), r(uo), r(Ja), r(wf), r(No), r(ec), r(Po), r(To), r(Gf), r(oc), r(ux), r(dc), r(cu), r(Oo), r(to), r(Yx), r(Eu)], tpr = [0, r(Eu), r(Yx), r(to), r(Oo), r(cu), r(dc), r(ux), r(oc), r(Gf), r(To), r(Po), r(ec), r(No), r(wf), r(Ja), r(uo), r(Cx), r(Ff), r(ax), r(Oa), r(qf), r(Ro), r(Ka), r(Xx), r(Jx), r(_x), r(xo), r(fa), r(no), r(F7), r(Io), r(Pf), r(wo), r($x), r(Jf), r(Uo), r(yo), r(D7), r(yc), r(Na), r(Sx), r(Vx), r(_f), r(Sc), r(Mf), r(cx), r(Ju), r(px), r(pa), r(De), r(r7), r($a), r(Yo), r(wa), r(Zx), r(sc), r(aa), r(ta), r(Cf), r(Bo), r(Yf), r(Wf), r(kc), r(vc), r(va), r(bf), r(zo), r(Zf), r(rx), r(mi), r(Qo), r(Mo), r(df), r(Va), r(Xo), r(lc), r(fc), r(Zo), r(oo), r(ix), r(Nf), r(uf), r(Xf), r(ex), r(ma), r(da), r(Kf), r(nc), r(gf), r(Lx), r(qo), r(bx), r(yf), r(Of), r(mc), r(xr), r(_c), r(Wx), r(Ux), r(Pa), r(zx), r(nx), r(Dx), r(ha), r(Px), r(hc), r(vx), r(Jo), r(wc), r(Da), r(Ko), r(rc), r(rf), r(Nx), r(ao), r(Ox), r(io), r(jo), r(Ao), r(pc), r(Ax), r(ff), r(of), r(Qf), r(Wo), r(ya), r(ac), r(Rf), r(za), r(ro), r(ko), r(af), r(e7), r(Aa), r(Fx), r(Ca), r(Hx), r(bo), r(Ec), r(Uu), r(Ya), r(ia), r(pf), r(yi), r(Vf), r(bc), r(Wa), r(G7), r(mx), r(ba), r(vf), r(Ba), r(kx), r(Go), r(_a), r(tx), r(nf), r(Lf), r(gc), r(Ix), r(hx), r(Ia), r(Tc), r(lo), r(So), r(li), r(ic), r(yx), r(La), r(Xa), r(Fc), r(Mx), r(ka), r(Bf), r(Sf), r(eo), r(Tx), r(Nu), r(ea), r(ua), r(Qa), r(sf), r(Sa), r(vo), r(Af), r(jx), r(Za), r(If), r(jf), r(Bx), r(Ho), r(qx), r(sa), r(ra), r(la), r(v7), r(ho), r(Ra), r(wx), r(Fo), r(so), r(na), r(zf), r(ja), r(Ta), r(xx), r(I7), r(N7), r($o), r(xa), r($f), r(_o), r(hf), r(go), r(fx), r(gx), r(Uf), r(Ga), r(kf), r(tf), r(ga), r(Df), r(tc), r(mf), r(qa), r(oa), r(Ua), r(Ef), r(Qi), r(sx), r(po), r(lx), r(Tf), r(A7), r(Ha), r(Tn), r(Gx), r(xf), r(lf), r(Kx), r(Hf), r(Vo), r(ca), r(Ea), r(co), r(Rx), r(W4)], upr = [0, r(_f), r(Qf), r(_a), r(Vf), r(Tf), r(Yf), r(qo), r(ex), r(Nx), r(ko), r(Ka), r(D7), r(Xo), r(ea), r(tc), r(pc), r(bx), r(ff), r(ra), r(Bx), r(Yx), r(li), r(hc), r(Lx), r(Wa), r(sa), r(Of), r(yi), r(Oo), r(Mx), r(ta), r(zf), r(sx), r(tx), r(Qi), r(jo), r(Af), r(ba), r(vc), r(ic), r(yo), r(Kx), r(ma), r(ia), r(Sx), r(la), r(Px), r(yf), r(tf), r(go), r(Qo), r(wa), r(Xf), r(Yo), r(Ko), r(Uf), r(fc), r(r7), r(Nf), r(Ba), r(mc), r(ao), r(Ao), r(bc), r(nx), r($o), r(Jx), r(If), r(uf), r(rc), r($f), r(Dx), r(Go), r(aa), r(Ea), r(so), r(Sa), r(Wx), r(rx), r(co), r(po), r(cx), r(cu), r($a), r(uo), r(Ya), r(lf), r(So), r(no), r(ac), r(Df), r(nc), r(Uo), r(v7), r(Xa), r(Xx), r(Eu), r(fa), r(Ta), r(ec), r(zo), r(px), r(Po), r(hf), r(ja), r(oc), r(Ax), r(Zx), r(ro), r(Ho), r(Sf), r(lc), r(ua), r(ha), r(bf), r(ka), r(Ff), r(xo), r(dc), r(Sc), r(Cx), r(To), r(Ga), r(yx), r(fx), r(Pa), r(kx), r(Gf), r(_o), r(gf), r(Jo), r(Hf), r(Ux), r(oa), r(ga), r(Aa), r(va), r(Mo), r(wc), r(_c), r(Uu), r(Ju), r(Ha), r(Ja), r(ax), r(yc), r(kc), r(F7), r(I7), r(pf), r(Va), r(Tx), r(of), r(mi), r(Ix), r(qx), r(Fx), r(gx), r(nf), r(zx), r(Wo), r(G7), r(vf), r(wf), r(jf), r(De), r(Tc), r(bo), r(Za), r(sf), r(Kf), r(Mf), r(Ca), r(oo), r(Cf), r(_x), r(ix), r(Oa), r(lx), r(Fo), r(Ua), r(na), r(Gx), r(Rf), r(Jf), r(mx), r(pa), r(Ec), r(qa), r(da), r(io), r(kf), r(af), r(ho), r(Ro), r(Rx), r(ux), r(Ef), r(qf), r(Ra), r(Ox), r(ya), r(xa), r(vx), r(Bo), r(za), r(Bf), r(Da), r(wo), r(Vo), r(Wf), r(xf), r(Nu), r(Zf), r(eo), r(hx), r(Ia), r(Vx), r(N7), r(Lf), r(sc), r(vo), r(wx), r(Pf), r($x), r(Na), r(lo), r(Qa), r(No), r(La), r(df), r(Tn), r(Hx), r(mf), r(rf), r(Zo), r(gc), r(xx), r(jx), r(A7), r(ca), r(e7), r(to), r(Fc), r(Io), r(xr)], ipr = r(lV), fpr = r(jY), xpr = r(PX), opr = r(zY), apr = r(S3), cpr = r(ZH), spr = r(cv), vpr = r(OU), lpr = r(vY), bpr = r(_X), ppr = r(sX), mpr = r(xs), _pr = r(Fa), ypr = r(UU), hpr = r(WH), dpr = r(Qu), kpr = r(XY), wpr = r(OH), Epr = r(I6), Spr = r(jd), gpr = r(R2), Fpr = r(j2), Tpr = r(WU), Opr = r(BU), Ipr = r(nY), Apr = r(xX), Npr = r(lH), Cpr = r(hX), Ppr = r(xU), Dpr = r(zX), Lpr = r(aX), Rpr = r(bH), jpr = r(wH), Gpr = r(XH), Mpr = r(rV), Bpr = r(AU), qpr = r(tX), Upr = r("Set.remove_min_elt"), Hpr = [0, [12, 59, [17, [0, r(v), 1, 0], 0]], r(a0)], Xpr = [0, [18, [1, [0, [11, r(h), 0], r(h)]], [12, ts, 0]], r("@[<2>{")], Ypr = [0, [12, 32, 0], r(pi)], Vpr = [0, [12, 32, 0], r(pi)], zpr = [0, [17, [0, r(Ce), 0, 0], [12, br, [17, 0, 0]]], r("@,}@]")], Kpr = [0, r("src/hack_forked/utils/collections/flow_set.ml"), 363, 14], Wpr = [0, [0, 36, 37], [0, 48, 58], [0, 65, 91], [0, 95, 96], [0, 97, ts], [0, qg, pg], [0, Ai, Yg], [0, lS, hk], [0, md, nw], [0, rt, xT], [0, y6, Dw], [0, wt, 706], [0, rX, 722], [0, 736, 741], [0, 748, 749], [0, 750, 751], [0, 768, 885], [0, 886, 888], [0, 890, 894], [0, 895, 896], [0, 902, 907], [0, 908, ZX], [0, 910, 930], [0, UX, 1014], [0, 1015, 1154], [0, 1155, 1160], [0, 1162, CU], [0, 1329, 1367], [0, 1369, 1370], [0, 1376, 1417], [0, 1425, 1470], [0, 1471, 1472], [0, 1473, 1475], [0, 1476, 1478], [0, 1479, 1480], [0, 1488, 1515], [0, 1519, 1523], [0, 1552, 1563], [0, 1568, 1642], [0, 1646, 1748], [0, 1749, 1757], [0, 1759, 1769], [0, 1770, 1789], [0, 1791, 1792], [0, 1808, 1867], [0, 1869, 1970], [0, 1984, 2038], [0, 2042, 2043], [0, 2045, 2046], [0, Hh, 2094], [0, 2112, 2140], [0, 2144, 2155], [0, 2208, 2229], [0, 2230, 2238], [0, 2259, 2274], [0, 2275, 2404], [0, 2406, 2416], [0, 2417, 2436], [0, 2437, 2445], [0, 2447, 2449], [0, 2451, 2473], [0, 2474, 2481], [0, 2482, 2483], [0, 2486, 2490], [0, 2492, 2501], [0, 2503, 2505], [0, 2507, 2511], [0, 2519, 2520], [0, 2524, 2526], [0, 2527, 2532], [0, 2534, 2546], [0, 2556, 2557], [0, 2558, 2559], [0, 2561, 2564], [0, 2565, 2571], [0, 2575, 2577], [0, 2579, 2601], [0, 2602, 2609], [0, 2610, 2612], [0, 2613, 2615], [0, 2616, 2618], [0, 2620, 2621], [0, 2622, 2627], [0, 2631, 2633], [0, 2635, 2638], [0, 2641, 2642], [0, 2649, 2653], [0, 2654, 2655], [0, 2662, 2678], [0, 2689, 2692], [0, 2693, 2702], [0, 2703, 2706], [0, 2707, 2729], [0, 2730, 2737], [0, 2738, 2740], [0, 2741, 2746], [0, 2748, 2758], [0, 2759, 2762], [0, 2763, 2766], [0, 2768, 2769], [0, 2784, 2788], [0, 2790, 2800], [0, 2809, 2816], [0, 2817, 2820], [0, 2821, 2829], [0, 2831, 2833], [0, 2835, 2857], [0, 2858, 2865], [0, 2866, 2868], [0, 2869, 2874], [0, 2876, 2885], [0, 2887, 2889], [0, 2891, 2894], [0, 2902, 2904], [0, 2908, 2910], [0, 2911, 2916], [0, 2918, 2928], [0, 2929, 2930], [0, 2946, 2948], [0, 2949, 2955], [0, 2958, 2961], [0, 2962, 2966], [0, 2969, 2971], [0, 2972, 2973], [0, 2974, 2976], [0, 2979, 2981], [0, 2984, 2987], [0, 2990, 3002], [0, 3006, 3011], [0, 3014, 3017], [0, 3018, 3022], [0, 3024, 3025], [0, 3031, 3032], [0, 3046, 3056], [0, 3072, 3085], [0, 3086, 3089], [0, 3090, 3113], [0, 3114, 3130], [0, 3133, 3141], [0, 3142, 3145], [0, 3146, 3150], [0, 3157, 3159], [0, 3160, 3163], [0, 3168, 3172], [0, 3174, 3184], [0, 3200, 3204], [0, 3205, 3213], [0, 3214, 3217], [0, 3218, 3241], [0, 3242, 3252], [0, 3253, 3258], [0, 3260, 3269], [0, 3270, 3273], [0, 3274, 3278], [0, 3285, 3287], [0, 3294, 3295], [0, 3296, 3300], [0, 3302, 3312], [0, 3313, 3315], [0, 3328, 3332], [0, 3333, 3341], [0, 3342, 3345], [0, 3346, 3397], [0, 3398, 3401], [0, 3402, 3407], [0, 3412, 3416], [0, 3423, 3428], [0, 3430, 3440], [0, 3450, 3456], [0, 3458, 3460], [0, 3461, 3479], [0, 3482, 3506], [0, 3507, 3516], [0, 3517, 3518], [0, 3520, 3527], [0, 3530, 3531], [0, 3535, 3541], [0, 3542, 3543], [0, 3544, 3552], [0, 3558, 3568], [0, 3570, 3572], [0, 3585, 3643], [0, 3648, 3663], [0, 3664, 3674], [0, 3713, 3715], [0, 3716, 3717], [0, 3718, 3723], [0, 3724, 3748], [0, 3749, 3750], [0, 3751, 3774], [0, 3776, 3781], [0, 3782, 3783], [0, 3784, 3790], [0, 3792, 3802], [0, 3804, 3808], [0, 3840, 3841], [0, 3864, 3866], [0, 3872, 3882], [0, 3893, 3894], [0, 3895, 3896], [0, 3897, 3898], [0, 3902, 3912], [0, 3913, 3949], [0, 3953, 3973], [0, 3974, 3992], [0, 3993, 4029], [0, 4038, 4039], [0, vX, 4170], [0, 4176, 4254], [0, 4256, 4294], [0, 4295, 4296], [0, 4301, 4302], [0, 4304, 4347], [0, 4348, 4681], [0, 4682, 4686], [0, 4688, 4695], [0, 4696, 4697], [0, 4698, 4702], [0, 4704, 4745], [0, 4746, 4750], [0, 4752, 4785], [0, 4786, 4790], [0, 4792, 4799], [0, 4800, 4801], [0, 4802, 4806], [0, 4808, 4823], [0, 4824, 4881], [0, 4882, 4886], [0, 4888, 4955], [0, 4957, 4960], [0, 4969, 4978], [0, 4992, 5008], [0, 5024, 5110], [0, 5112, 5118], [0, 5121, 5741], [0, 5743, Ev], [0, 5761, 5787], [0, 5792, 5867], [0, 5870, 5881], [0, 5888, 5901], [0, 5902, 5909], [0, 5920, 5941], [0, 5952, 5972], [0, 5984, 5997], [0, 5998, 6001], [0, 6002, 6004], [0, 6016, 6100], [0, 6103, 6104], [0, 6108, 6110], [0, 6112, 6122], [0, 6155, 6158], [0, 6160, 6170], [0, 6176, 6265], [0, 6272, 6315], [0, 6320, 6390], [0, 6400, 6431], [0, 6432, 6444], [0, 6448, 6460], [0, 6470, 6510], [0, 6512, 6517], [0, 6528, 6572], [0, 6576, 6602], [0, 6608, 6619], [0, 6656, 6684], [0, 6688, 6751], [0, 6752, 6781], [0, 6783, 6794], [0, 6800, 6810], [0, 6823, 6824], [0, 6832, 6846], [0, 6912, 6988], [0, 6992, 7002], [0, 7019, 7028], [0, 7040, 7156], [0, 7168, 7224], [0, 7232, 7242], [0, 7245, 7294], [0, 7296, 7305], [0, 7312, 7355], [0, 7357, 7360], [0, 7376, 7379], [0, 7380, 7419], [0, 7424, 7674], [0, 7675, 7958], [0, 7960, 7966], [0, 7968, 8006], [0, 8008, 8014], [0, 8016, 8024], [0, 8025, 8026], [0, 8027, 8028], [0, 8029, 8030], [0, 8031, 8062], [0, 8064, 8117], [0, 8118, 8125], [0, 8126, 8127], [0, 8130, 8133], [0, 8134, 8141], [0, 8144, 8148], [0, 8150, 8156], [0, 8160, 8173], [0, 8178, 8181], [0, 8182, 8189], [0, kY, vU], [0, 8255, 8257], [0, 8276, 8277], [0, ep, 8306], [0, O3, 8320], [0, 8336, 8349], [0, 8400, 8413], [0, 8417, 8418], [0, 8421, 8433], [0, x3, 8451], [0, R3, 8456], [0, 8458, g4], [0, m6, 8470], [0, iU, 8478], [0, t8, $3], [0, Q8, sp], [0, P8, N8], [0, 8490, 8506], [0, 8508, 8512], [0, 8517, 8522], [0, s8, 8527], [0, 8544, 8585], [0, 11264, 11311], [0, 11312, 11359], [0, 11360, 11493], [0, 11499, 11508], [0, 11520, G4], [0, B8, 11560], [0, N3, 11566], [0, 11568, 11624], [0, p4, 11632], [0, P6, 11671], [0, 11680, j4], [0, 11688, z8], [0, 11696, o8], [0, 11704, K8], [0, 11712, z6], [0, 11720, j8], [0, 11728, F6], [0, 11736, 11743], [0, 11744, 11776], [0, 12293, 12296], [0, 12321, T3], [0, 12337, 12342], [0, 12344, 12349], [0, 12353, 12439], [0, 12441, E3], [0, 12449, q4], [0, 12540, 12544], [0, 12549, E8], [0, 12593, 12687], [0, 12704, 12731], [0, 12784, 12800], [0, 13312, 19894], [0, 19968, 40944], [0, 40960, 42125], [0, 42192, 42238], [0, 42240, 42509], [0, 42512, 42540], [0, 42560, 42608], [0, 42612, U3], [0, 42623, 42738], [0, 42775, 42784], [0, 42786, 42889], [0, 42891, 42944], [0, 42946, 42951], [0, F8, 43048], [0, 43072, 43124], [0, 43136, 43206], [0, 43216, 43226], [0, 43232, 43256], [0, n3, _8], [0, 43261, 43310], [0, 43312, 43348], [0, 43360, 43389], [0, 43392, 43457], [0, k8, 43482], [0, 43488, v6], [0, 43520, 43575], [0, 43584, 43598], [0, 43600, 43610], [0, 43616, 43639], [0, lp, 43715], [0, 43739, 43742], [0, 43744, 43760], [0, 43762, 43767], [0, 43777, 43783], [0, 43785, 43791], [0, 43793, 43799], [0, 43808, k6], [0, 43816, H3], [0, 43824, av], [0, 43868, o3], [0, 43888, 44011], [0, 44012, 44014], [0, 44016, 44026], [0, 44032, 55204], [0, 55216, 55239], [0, 55243, 55292], [0, 63744, 64110], [0, 64112, 64218], [0, 64256, 64263], [0, 64275, 64280], [0, e3, ip], [0, 64298, Qn], [0, 64312, z3], [0, L6, R4], [0, 64320, q3], [0, 64323, D8], [0, 64326, 64434], [0, 64467, 64830], [0, 64848, 64912], [0, 64914, 64968], [0, 65008, 65020], [0, 65024, 65040], [0, 65056, 65072], [0, 65075, 65077], [0, 65101, 65104], [0, 65136, t3], [0, 65142, 65277], [0, 65296, 65306], [0, 65313, 65339], [0, 65343, Q4], [0, 65345, 65371], [0, 65382, 65471], [0, 65474, 65480], [0, 65482, 65488], [0, 65490, 65496], [0, 65498, 65501], [0, fw, rp], [0, 65549, $8], [0, 65576, z4], [0, 65596, S6], [0, 65599, 65614], [0, 65616, 65630], [0, 65664, 65787], [0, 65856, 65909], [0, 66045, 66046], [0, 66176, 66205], [0, 66208, 66257], [0, 66272, 66273], [0, 66304, 66336], [0, 66349, 66379], [0, 66384, 66427], [0, 66432, 66462], [0, 66464, 66500], [0, 66504, Z3], [0, 66513, 66518], [0, 66560, 66718], [0, 66720, 66730], [0, 66736, 66772], [0, 66776, 66812], [0, 66816, 66856], [0, 66864, 66916], [0, 67072, 67383], [0, 67392, 67414], [0, 67424, 67432], [0, 67584, 67590], [0, op, J4], [0, 67594, p8], [0, 67639, 67641], [0, M6, 67645], [0, 67647, 67670], [0, 67680, 67703], [0, 67712, 67743], [0, 67808, X8], [0, 67828, 67830], [0, 67840, 67862], [0, 67872, 67898], [0, 67968, 68024], [0, 68030, 68032], [0, S7, 68100], [0, 68101, 68103], [0, 68108, b4], [0, 68117, Z8], [0, 68121, 68150], [0, 68152, 68155], [0, 68159, 68160], [0, 68192, 68221], [0, 68224, 68253], [0, 68288, J6], [0, 68297, 68327], [0, 68352, 68406], [0, 68416, 68438], [0, 68448, 68467], [0, 68480, 68498], [0, 68608, 68681], [0, 68736, 68787], [0, 68800, 68851], [0, 68864, 68904], [0, 68912, 68922], [0, 69376, 69405], [0, J8, 69416], [0, 69424, 69457], [0, 69600, 69623], [0, 69632, 69703], [0, 69734, B3], [0, 69759, 69819], [0, 69840, 69865], [0, 69872, 69882], [0, 69888, 69941], [0, 69942, 69952], [0, m4, F3], [0, 69968, 70004], [0, X6, 70007], [0, 70016, 70085], [0, 70089, 70093], [0, 70096, h8], [0, i3, 70109], [0, 70144, A8], [0, 70163, 70200], [0, 70206, 70207], [0, 70272, y3], [0, I8, fp], [0, 70282, O8], [0, 70287, c8], [0, 70303, 70313], [0, 70320, 70379], [0, 70384, 70394], [0, 70400, u6], [0, 70405, 70413], [0, 70415, 70417], [0, 70419, f3], [0, 70442, a8], [0, 70450, C4], [0, 70453, 70458], [0, 70459, 70469], [0, 70471, 70473], [0, 70475, 70478], [0, j6, 70481], [0, 70487, 70488], [0, 70493, 70500], [0, 70502, 70509], [0, 70512, 70517], [0, 70656, 70731], [0, 70736, 70746], [0, W6, 70752], [0, 70784, Q3], [0, Z6, 70856], [0, 70864, 70874], [0, 71040, 71094], [0, 71096, 71105], [0, 71128, 71134], [0, 71168, 71233], [0, u8, 71237], [0, 71248, 71258], [0, 71296, 71353], [0, 71360, 71370], [0, 71424, 71451], [0, 71453, 71468], [0, 71472, 71482], [0, 71680, 71739], [0, 71840, 71914], [0, 71935, 71936], [0, 72096, 72104], [0, 72106, 72152], [0, 72154, up], [0, p3, 72165], [0, M8, 72255], [0, 72263, 72264], [0, u3, 72346], [0, P4, 72350], [0, 72384, 72441], [0, 72704, W3], [0, 72714, 72759], [0, 72760, 72769], [0, 72784, 72794], [0, 72818, 72848], [0, 72850, 72872], [0, 72873, 72887], [0, 72960, D3], [0, 72968, h4], [0, 72971, 73015], [0, 73018, 73019], [0, 73020, 73022], [0, 73023, 73032], [0, 73040, 73050], [0, 73056, R6], [0, 73063, h3], [0, 73066, 73103], [0, 73104, 73106], [0, 73107, 73113], [0, 73120, 73130], [0, 73440, 73463], [0, 73728, 74650], [0, 74752, 74863], [0, 74880, 75076], [0, 77824, 78895], [0, 82944, 83527], [0, 92160, 92729], [0, 92736, 92767], [0, 92768, 92778], [0, 92880, 92910], [0, 92912, 92917], [0, 92928, 92983], [0, 92992, 92996], [0, 93008, 93018], [0, 93027, 93048], [0, 93053, 93072], [0, 93760, 93824], [0, 93952, 94027], [0, Z4, 94088], [0, 94095, 94112], [0, 94176, b6], [0, h6, 94180], [0, 94208, 100344], [0, 100352, 101107], [0, 110592, 110879], [0, 110928, 110931], [0, 110948, 110952], [0, 110960, 111356], [0, 113664, 113771], [0, 113776, 113789], [0, 113792, 113801], [0, 113808, 113818], [0, 113821, 113823], [0, 119141, 119146], [0, 119149, 119155], [0, 119163, 119171], [0, 119173, 119180], [0, 119210, 119214], [0, 119362, 119365], [0, 119808, T6], [0, 119894, M3], [0, 119966, 119968], [0, d3, 119971], [0, 119973, 119975], [0, 119977, Q6], [0, 119982, l8], [0, l4, G6], [0, 119997, I3], [0, 120005, L4], [0, 120071, 120075], [0, 120077, N6], [0, 120086, vp], [0, 120094, C3], [0, 120123, r6], [0, 120128, B4], [0, G3, 120135], [0, 120138, D6], [0, 120146, 120486], [0, 120488, D4], [0, 120514, V3], [0, 120540, c6], [0, 120572, X4], [0, 120598, c3], [0, 120630, V4], [0, 120656, w6], [0, 120688, v4], [0, 120714, l6], [0, 120746, k3], [0, 120772, 120780], [0, 120782, 120832], [0, 121344, 121399], [0, 121403, 121453], [0, 121461, 121462], [0, 121476, 121477], [0, 121499, 121504], [0, 121505, 121520], [0, 122880, 122887], [0, 122888, 122905], [0, 122907, 122914], [0, 122915, 122917], [0, 122918, 122923], [0, 123136, 123181], [0, 123184, 123198], [0, 123200, 123210], [0, ap, 123215], [0, 123584, 123642], [0, 124928, 125125], [0, 125136, 125143], [0, 125184, 125260], [0, 125264, 125274], [0, 126464, C6], [0, 126469, J3], [0, 126497, a3], [0, g8, 126501], [0, e8, m8], [0, 126505, s6], [0, 126516, f8], [0, _6, x8], [0, w3, 126524], [0, K3, 126531], [0, L8, U6], [0, S8, n8], [0, s3, M4], [0, 126541, F4], [0, 126545, g6], [0, d8, 126549], [0, i8, E4], [0, fn, B6], [0, S4, G8], [0, q6, s4], [0, t6, O4], [0, 126561, xp], [0, V6, 126565], [0, 126567, l3], [0, 126572, x6], [0, 126580, W8], [0, 126585, L3], [0, $4, w8], [0, 126592, V8], [0, 126603, 126620], [0, 126625, j3], [0, 126629, r3], [0, 126635, 126652], [0, 131072, 173783], [0, 173824, 177973], [0, 177984, 178206], [0, 178208, 183970], [0, 183984, 191457], [0, 194560, 195102], [0, 917760, 918e3]], Jpr = r(O2), $pr = r(dv), Zpr = r(Tv), Qpr = r(K4), r5r = r("Cannot export an enum with `export type`, try `export enum E {}` or `module.exports = E;` instead."), e5r = r("Enum members are separated with `,`. Replace `;` with `,`."), n5r = r("Unexpected reserved word"), t5r = r("Unexpected reserved type"), u5r = r("Unexpected `super` outside of a class method"), i5r = r("`super()` is only valid in a class constructor"), f5r = r("Unexpected end of input"), x5r = r("Unexpected variance sigil"), o5r = r("Unexpected static modifier"), a5r = r("Unexpected proto modifier"), c5r = r("Type aliases are not allowed in untyped mode"), s5r = r("Opaque type aliases are not allowed in untyped mode"), v5r = r("Type annotations are not allowed in untyped mode"), l5r = r("Type declarations are not allowed in untyped mode"), b5r = r("Type imports are not allowed in untyped mode"), p5r = r("Type exports are not allowed in untyped mode"), m5r = r("Interfaces are not allowed in untyped mode"), _5r = r("Spreading a type is only allowed inside an object type"), y5r = r("Explicit inexact syntax must come at the end of an object type"), h5r = r("Explicit inexact syntax cannot appear inside an explicit exact object type"), d5r = r("Explicit inexact syntax can only appear inside an object type"), k5r = r("Illegal newline after throw"), w5r = r("A bigint literal must be an integer"), E5r = r("A bigint literal cannot use exponential notation"), S5r = r("Invalid regular expression"), g5r = r("Invalid regular expression: missing /"), F5r = r("Invalid left-hand side in assignment"), T5r = r("Invalid left-hand side in exponentiation expression"), O5r = r("Invalid left-hand side in for-in"), I5r = r("Invalid left-hand side in for-of"), A5r = r("Invalid optional indexed access. Indexed access uses bracket notation. Use the format `T?.[K]`."), N5r = r("found an expression instead"), C5r = r("Expected an object pattern, array pattern, or an identifier but "), P5r = r("More than one default clause in switch statement"), D5r = r("Missing catch or finally after try"), L5r = r("Illegal continue statement"), R5r = r("Illegal break statement"), j5r = r("Illegal return statement"), G5r = r("Illegal Unicode escape"), M5r = r("Strict mode code may not include a with statement"), B5r = r("Catch variable may not be eval or arguments in strict mode"), q5r = r("Variable name may not be eval or arguments in strict mode"), U5r = r("Parameter name eval or arguments is not allowed in strict mode"), H5r = r("Strict mode function may not have duplicate parameter names"), X5r = r('Illegal "use strict" directive in function with non-simple parameter list'), Y5r = r("Function name may not be eval or arguments in strict mode"), V5r = r("Octal literals are not allowed in strict mode."), z5r = r("Number literals with leading zeros are not allowed in strict mode."), K5r = r("Delete of an unqualified identifier in strict mode."), W5r = r("Duplicate data property in object literal not allowed in strict mode"), J5r = r("Object literal may not have data and accessor property with the same name"), $5r = r("Object literal may not have multiple get/set accessors with the same name"), Z5r = r("`typeof` can only be used to get the type of variables."), Q5r = r("Assignment to eval or arguments is not allowed in strict mode"), rmr = r("Postfix increment/decrement may not have eval or arguments operand in strict mode"), emr = r("Prefix increment/decrement may not have eval or arguments operand in strict mode"), nmr = r("Use of future reserved word in strict mode"), tmr = r("JSX attributes must only be assigned a non-empty expression"), umr = r("JSX value should be either an expression or a quoted JSX text"), imr = r("Const must be initialized"), fmr = r("Destructuring assignment must be initialized"), xmr = r("Illegal newline before arrow"), omr = r(aF), amr = r("Async functions can only be declared at top level or "), cmr = r(aF), smr = r("Generators can only be declared at top level or "), vmr = r("elements must be wrapped in an enclosing parent tag"), lmr = r("Unexpected token <. Remember, adjacent JSX "), bmr = r("Rest parameter must be final parameter of an argument list"), pmr = r("Rest element must be final element of an array pattern"), mmr = r("Rest property must be final property of an object pattern"), _mr = r("async is an implementation detail and isn't necessary for your declare function statement. It is sufficient for your declare function to just have a Promise return type."), ymr = r("`declare` modifier can only appear on class fields."), hmr = r("Unexpected token `=`. Initializers are not allowed in a `declare`."), dmr = r("Unexpected token `=`. Initializers are not allowed in a `declare opaque type`."), kmr = r("`declare export let` is not supported. Use `declare export var` instead."), wmr = r("`declare export const` is not supported. Use `declare export var` instead."), Emr = r("`declare export type` is not supported. Use `export type` instead."), Smr = r("`declare export interface` is not supported. Use `export interface` instead."), gmr = r("`export * as` is an early-stage proposal and is not enabled by default. To enable support in the parser, use the `esproposal_export_star_as` option"), Fmr = r("Found a decorator in an unsupported position."), Tmr = r("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."), Omr = r("Duplicate `declare module.exports` statement!"), Imr = r("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module xor they are a CommonJS module."), Amr = r("Getter should have zero parameters"), Nmr = r("Setter should have exactly one parameter"), Cmr = r("`import type` or `import typeof`!"), Pmr = r("Imports within a `declare module` body must always be "), Dmr = r("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements"), Lmr = r("Missing comma between import specifiers"), Rmr = r("Missing comma between export specifiers"), jmr = r("Malformed unicode"), Gmr = r("Classes may only have one constructor"), Mmr = r("Private fields may not be deleted."), Bmr = r("Private fields can only be referenced from within a class."), qmr = r("You may not access a private field through the `super` keyword."), Umr = r("Yield expression not allowed in formal parameter"), Hmr = r("`await` is an invalid identifier in async functions"), Xmr = r("`yield` is an invalid identifier in generators"), Ymr = r("either a `let` binding pattern, or a member expression."), Vmr = r("`let [` is ambiguous in this position because it is "), zmr = r("Literals cannot be used as shorthand properties."), Kmr = r("Computed properties must have a value."), Wmr = r("Object pattern can't contain methods"), Jmr = r("A trailing comma is not permitted after the rest element"), $mr = r("An optional chain may not be used in a `new` expression."), Zmr = r("Template literals may not be used in an optional chain."), Qmr = r("Unexpected whitespace between `#` and identifier"), r9r = r("A type annotation is required for the `this` parameter."), e9r = r("The `this` parameter must be the first function parameter."), n9r = r("The `this` parameter cannot be optional."), t9r = r("A getter cannot have a `this` parameter."), u9r = r("A setter cannot have a `this` parameter."), i9r = r("Arrow functions cannot have a `this` parameter; arrow functions automatically bind `this` when declared."), f9r = r("Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions."), x9r = [0, [11, r("Boolean enum members need to be initialized. Use either `"), [2, 0, [11, r(" = true,` or `"), [2, 0, [11, r(" = false,` in enum `"), [2, 0, [11, r(Es), 0]]]]]]], r("Boolean enum members need to be initialized. Use either `%s = true,` or `%s = false,` in enum `%s`.")], o9r = [0, [11, r("Enum member names need to be unique, but the name `"), [2, 0, [11, r("` has already been used before in enum `"), [2, 0, [11, r(Es), 0]]]]], r("Enum member names need to be unique, but the name `%s` has already been used before in enum `%s`.")], a9r = [0, [11, r(IU), [2, 0, [11, r("` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers."), 0]]], r("Enum `%s` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.")], c9r = [0, [11, r("Use one of `boolean`, `number`, `string`, or `symbol` in enum `"), [2, 0, [11, r(Es), 0]]], r("Use one of `boolean`, `number`, `string`, or `symbol` in enum `%s`.")], s9r = [0, [11, r("Enum type `"), [2, 0, [11, r("` is not valid. "), [2, 0, 0]]]], r("Enum type `%s` is not valid. %s")], v9r = [0, [11, r("Supplied enum type is not valid. "), [2, 0, 0]], r("Supplied enum type is not valid. %s")], l9r = [0, [11, r("Enum member names and initializers are separated with `=`. Replace `"), [2, 0, [11, r(":` with `"), [2, 0, [11, r(" =`."), 0]]]]], r("Enum member names and initializers are separated with `=`. Replace `%s:` with `%s =`.")], b9r = [0, [11, r("Symbol enum members cannot be initialized. Use `"), [2, 0, [11, r(",` in enum `"), [2, 0, [11, r(Es), 0]]]]], r("Symbol enum members cannot be initialized. Use `%s,` in enum `%s`.")], p9r = [0, [11, r(IU), [2, 0, [11, r("` has type `"), [2, 0, [11, r("`, so the initializer of `"), [2, 0, [11, r("` needs to be a "), [2, 0, [11, r(" literal."), 0]]]]]]]]], r("Enum `%s` has type `%s`, so the initializer of `%s` needs to be a %s literal.")], m9r = [0, [11, r("The enum member initializer for `"), [2, 0, [11, r("` needs to be a literal (either a boolean, number, or string) in enum `"), [2, 0, [11, r(Es), 0]]]]], r("The enum member initializer for `%s` needs to be a literal (either a boolean, number, or string) in enum `%s`.")], _9r = [0, [11, r("Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `"), [2, 0, [11, r("`, consider using `"), [2, 0, [11, r("`, in enum `"), [2, 0, [11, r(Es), 0]]]]]]], r("Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%s`, consider using `%s`, in enum `%s`.")], y9r = r("The `...` must come at the end of the enum body. Remove the trailing comma."), h9r = r("The `...` must come after all enum members. Move it to the end of the enum body."), d9r = [0, [11, r("Number enum members need to be initialized, e.g. `"), [2, 0, [11, r(" = 1,` in enum `"), [2, 0, [11, r(Es), 0]]]]], r("Number enum members need to be initialized, e.g. `%s = 1,` in enum `%s`.")], k9r = [0, [11, r("String enum members need to consistently either all use initializers, or use no initializers, in enum "), [2, 0, [12, 46, 0]]], r("String enum members need to consistently either all use initializers, or use no initializers, in enum %s.")], w9r = [0, [11, r(UH), [2, 0, 0]], r("Unexpected %s")], E9r = [0, [11, r(UH), [2, 0, [11, r(", expected "), [2, 0, 0]]]], r("Unexpected %s, expected %s")], S9r = [0, [11, r(bV), [2, 0, [11, r("`. Did you mean `"), [2, 0, [11, r("`?"), 0]]]]], r("Unexpected token `%s`. Did you mean `%s`?")], g9r = r(P3), F9r = r("Invalid flags supplied to RegExp constructor '"), T9r = r("Remove the period."), O9r = r("Indexed access uses bracket notation."), I9r = [0, [11, r("Invalid indexed access. "), [2, 0, [11, r(" Use the format `T[K]`."), 0]]], r("Invalid indexed access. %s Use the format `T[K]`.")], A9r = r(P3), N9r = r("Undefined label '"), C9r = r("' has already been declared"), P9r = r(" '"), D9r = r("Expected corresponding JSX closing tag for "), L9r = r(aF), R9r = r("In strict mode code, functions can only be declared at top level or "), j9r = r("inside a block, or as the body of an if statement."), G9r = r("In non-strict mode code, functions can only be declared at top level, "), M9r = [0, [11, r("Duplicate export for `"), [2, 0, [12, 96, 0]]], r("Duplicate export for `%s`")], B9r = r("` is declared more than once."), q9r = r("Private fields may only be declared once. `#"), U9r = r("static "), H9r = r(C), X9r = r(YY), Y9r = r("methods"), V9r = r("fields"), z9r = r(Es), K9r = r(" named `"), W9r = r("Classes may not have "), J9r = r("` has not been declared."), $9r = r("Private fields must be declared before they can be referenced. `#"), Z9r = [0, [11, r(bV), [2, 0, [11, r("`. Parentheses are required to combine `??` with `&&` or `||` expressions."), 0]]], r("Unexpected token `%s`. Parentheses are required to combine `??` with `&&` or `||` expressions.")], Q9r = r("Parse_error.Error"), r_r = [0, r("src/third-party/sedlex/flow_sedlexing.ml"), s1, 4], e_r = r("Flow_sedlexing.MalFormed"), n_r = [0, 1, 0], t_r = [0, 0, [0, 1, 0], [0, 1, 0]], u_r = r(YU), i_r = r("end of input"), f_r = r(rl), x_r = r("template literal part"), o_r = r(rl), a_r = r(MH), c_r = r(YU), s_r = r(rl), v_r = r(dv), l_r = r(rl), b_r = r(x1), p_r = r(rl), m_r = r(Tv), __r = r("an"), y_r = r(yi), h_r = r(pi), d_r = [0, [11, r("token `"), [2, 0, [12, 96, 0]]], r("token `%s`")], k_r = r(hH), w_r = r(b3), E_r = r("{|"), S_r = r("|}"), g_r = r(HX), F_r = r(Z0), T_r = r("["), O_r = r("]"), I_r = r(VY), A_r = r(","), N_r = r(Lo), C_r = r("=>"), P_r = r("..."), D_r = r(gX), L_r = r(YY), R_r = r(M2), j_r = r(A3), G_r = r(R2), M_r = r(j2), B_r = r(Ju), q_r = r(D7), U_r = r(i1), H_r = r(F7), X_r = r(d4), Y_r = r(U2), V_r = r(K6), z_r = r(C8), K_r = r(D2), W_r = r(G2), J_r = r(fs5), $_r = r(Ci), Z_r = r(Gi), Q_r = r(A7), ryr = r(d6), eyr = r(o6), nyr = r(N7), tyr = r(_i), uyr = r(_4), iyr = r(q8), fyr = r(np), xyr = r(q2), oyr = r(P7), ayr = r(nu), cyr = r(U4), syr = r(u1), vyr = r(J2), lyr = r(rs), byr = r(es), pyr = r(b8), myr = r(_3), _yr = r(Uu), yyr = r(yv), hyr = r(ws), dyr = r(e7), kyr = r(y4), wyr = r(k4), Eyr = r(a6), Syr = r(E6), gyr = r(Eu), Fyr = r(I7), Tyr = r(T2), Oyr = r(Jc), Iyr = r(eh), Ayr = r(CS), Nyr = r(gs), Cyr = r(dx), Pyr = r("%checks"), Dyr = r(aX), Lyr = r(zX), Ryr = r(xU), jyr = r(wH), Gyr = r(bH), Myr = r(XH), Byr = r(hX), qyr = r(lH), Uyr = r(nY), Hyr = r(xX), Xyr = r(BU), Yyr = r(WU), Vyr = r(rV), zyr = r(AU), Kyr = r(tX), Wyr = r(XO), Jyr = r("?."), $yr = r(Ke), Zyr = r("?"), Qyr = r(o1), rhr = r(zH), ehr = r(MX), nhr = r(OH), thr = r(I6), uhr = r(jd), ihr = r(lV), fhr = r(jY), xhr = r(PX), ohr = r(zY), ahr = r(ZH), chr = r(OU), shr = r(S3), vhr = r(cv), lhr = r(vY), bhr = r(_X), phr = r(sX), mhr = r(xs), _hr = r(Fa), yhr = r(Qu), hhr = r(UU), dhr = r(WH), khr = r(XY), whr = r(Kt), Ehr = r(ZY), Shr = r(sH), ghr = r(oV), Fhr = r(C), Thr = r(n6), Ohr = r(H8), Ihr = r(v7), Ahr = r(dv), Nhr = r(x1), Chr = r(Tv), Phr = r(es), Dhr = r(K4), Lhr = r(Qu), Rhr = r(Qu), jhr = r(O2), Ghr = r(O6), Mhr = r("T_LCURLY"), Bhr = r("T_RCURLY"), qhr = r("T_LCURLYBAR"), Uhr = r("T_RCURLYBAR"), Hhr = r("T_LPAREN"), Xhr = r("T_RPAREN"), Yhr = r("T_LBRACKET"), Vhr = r("T_RBRACKET"), zhr = r("T_SEMICOLON"), Khr = r("T_COMMA"), Whr = r("T_PERIOD"), Jhr = r("T_ARROW"), $hr = r("T_ELLIPSIS"), Zhr = r("T_AT"), Qhr = r("T_POUND"), rdr = r("T_FUNCTION"), edr = r("T_IF"), ndr = r("T_IN"), tdr = r("T_INSTANCEOF"), udr = r("T_RETURN"), idr = r("T_SWITCH"), fdr = r("T_THIS"), xdr = r("T_THROW"), odr = r("T_TRY"), adr = r("T_VAR"), cdr = r("T_WHILE"), sdr = r("T_WITH"), vdr = r("T_CONST"), ldr = r("T_LET"), bdr = r("T_NULL"), pdr = r("T_FALSE"), mdr = r("T_TRUE"), _dr = r("T_BREAK"), ydr = r("T_CASE"), hdr = r("T_CATCH"), ddr = r("T_CONTINUE"), kdr = r("T_DEFAULT"), wdr = r("T_DO"), Edr = r("T_FINALLY"), Sdr = r("T_FOR"), gdr = r("T_CLASS"), Fdr = r("T_EXTENDS"), Tdr = r("T_STATIC"), Odr = r("T_ELSE"), Idr = r("T_NEW"), Adr = r("T_DELETE"), Ndr = r("T_TYPEOF"), Cdr = r("T_VOID"), Pdr = r("T_ENUM"), Ddr = r("T_EXPORT"), Ldr = r("T_IMPORT"), Rdr = r("T_SUPER"), jdr = r("T_IMPLEMENTS"), Gdr = r("T_INTERFACE"), Mdr = r("T_PACKAGE"), Bdr = r("T_PRIVATE"), qdr = r("T_PROTECTED"), Udr = r("T_PUBLIC"), Hdr = r("T_YIELD"), Xdr = r("T_DEBUGGER"), Ydr = r("T_DECLARE"), Vdr = r("T_TYPE"), zdr = r("T_OPAQUE"), Kdr = r("T_OF"), Wdr = r("T_ASYNC"), Jdr = r("T_AWAIT"), $dr = r("T_CHECKS"), Zdr = r("T_RSHIFT3_ASSIGN"), Qdr = r("T_RSHIFT_ASSIGN"), rkr = r("T_LSHIFT_ASSIGN"), ekr = r("T_BIT_XOR_ASSIGN"), nkr = r("T_BIT_OR_ASSIGN"), tkr = r("T_BIT_AND_ASSIGN"), ukr = r("T_MOD_ASSIGN"), ikr = r("T_DIV_ASSIGN"), fkr = r("T_MULT_ASSIGN"), xkr = r("T_EXP_ASSIGN"), okr = r("T_MINUS_ASSIGN"), akr = r("T_PLUS_ASSIGN"), ckr = r("T_NULLISH_ASSIGN"), skr = r("T_AND_ASSIGN"), vkr = r("T_OR_ASSIGN"), lkr = r("T_ASSIGN"), bkr = r("T_PLING_PERIOD"), pkr = r("T_PLING_PLING"), mkr = r("T_PLING"), _kr = r("T_COLON"), ykr = r("T_OR"), hkr = r("T_AND"), dkr = r("T_BIT_OR"), kkr = r("T_BIT_XOR"), wkr = r("T_BIT_AND"), Ekr = r("T_EQUAL"), Skr = r("T_NOT_EQUAL"), gkr = r("T_STRICT_EQUAL"), Fkr = r("T_STRICT_NOT_EQUAL"), Tkr = r("T_LESS_THAN_EQUAL"), Okr = r("T_GREATER_THAN_EQUAL"), Ikr = r("T_LESS_THAN"), Akr = r("T_GREATER_THAN"), Nkr = r("T_LSHIFT"), Ckr = r("T_RSHIFT"), Pkr = r("T_RSHIFT3"), Dkr = r("T_PLUS"), Lkr = r("T_MINUS"), Rkr = r("T_DIV"), jkr = r("T_MULT"), Gkr = r("T_EXP"), Mkr = r("T_MOD"), Bkr = r("T_NOT"), qkr = r("T_BIT_NOT"), Ukr = r("T_INCR"), Hkr = r("T_DECR"), Xkr = r("T_EOF"), Ykr = r("T_ANY_TYPE"), Vkr = r("T_MIXED_TYPE"), zkr = r("T_EMPTY_TYPE"), Kkr = r("T_NUMBER_TYPE"), Wkr = r("T_BIGINT_TYPE"), Jkr = r("T_STRING_TYPE"), $kr = r("T_VOID_TYPE"), Zkr = r("T_SYMBOL_TYPE"), Qkr = r("T_NUMBER"), rwr = r("T_BIGINT"), ewr = r("T_STRING"), nwr = r("T_TEMPLATE_PART"), twr = r("T_IDENTIFIER"), uwr = r("T_REGEXP"), iwr = r("T_ERROR"), fwr = r("T_JSX_IDENTIFIER"), xwr = r("T_JSX_TEXT"), owr = r("T_BOOLEAN_TYPE"), awr = r("T_NUMBER_SINGLETON_TYPE"), cwr = r("T_BIGINT_SINGLETON_TYPE"), swr = [0, r(kX), HT, 9], vwr = [0, r(kX), A6, 9], lwr = r(GH), bwr = r("*/"), pwr = r(GH), mwr = r("unreachable line_comment"), _wr = r("unreachable string_quote"), ywr = r("\\"), hwr = r("unreachable template_part"), dwr = r("${"), kwr = r(UY), wwr = r(UY), Ewr = r(MI), Swr = r("unreachable regexp_class"), gwr = r(uY), Fwr = r("unreachable regexp_body"), Twr = r(C), Owr = r(C), Iwr = r(C), Awr = r(C), Nwr = r("unreachable jsxtext"), Cwr = r(P3), Pwr = r(V2), Dwr = r(S3), Lwr = r(cv), Rwr = r(hH), jwr = r(b3), Gwr = r("{'}'}"), Mwr = r(b3), Bwr = r("{'>'}"), qwr = r(cv), Uwr = r(l1), Hwr = r("iexcl"), Xwr = r("aelig"), Ywr = r("Nu"), Vwr = r("Eacute"), zwr = r("Atilde"), Kwr = r("'int'"), Wwr = r("AElig"), Jwr = r("Aacute"), $wr = r("Acirc"), Zwr = r("Agrave"), Qwr = r("Alpha"), rEr = r("Aring"), eEr = [0, hY], nEr = [0, 913], tEr = [0, rt], uEr = [0, nI], iEr = [0, HT], fEr = [0, vH], xEr = [0, 8747], oEr = r("Auml"), aEr = r("Beta"), cEr = r("Ccedil"), sEr = r("Chi"), vEr = r("Dagger"), lEr = r("Delta"), bEr = r("ETH"), pEr = [0, _H], mEr = [0, 916], _Er = [0, 8225], yEr = [0, 935], hEr = [0, QH], dEr = [0, 914], kEr = [0, XX], wEr = [0, xY], EEr = r("Icirc"), SEr = r("Ecirc"), gEr = r("Egrave"), FEr = r("Epsilon"), TEr = r("Eta"), OEr = r("Euml"), IEr = r("Gamma"), AEr = r("Iacute"), NEr = [0, VH], CEr = [0, 915], PEr = [0, eV], DEr = [0, 919], LEr = [0, 917], REr = [0, NU], jEr = [0, nH], GEr = r("Igrave"), MEr = r("Iota"), BEr = r("Iuml"), qEr = r("Kappa"), UEr = r("Lambda"), HEr = r("Mu"), XEr = r("Ntilde"), YEr = [0, Wg], VEr = [0, 924], zEr = [0, 923], KEr = [0, 922], WEr = [0, AX], JEr = [0, 921], $Er = [0, WX], ZEr = [0, TH], QEr = [0, sY], rSr = r("Sigma"), eSr = r("Otilde"), nSr = r("OElig"), tSr = r("Oacute"), uSr = r("Ocirc"), iSr = r("Ograve"), fSr = r("Omega"), xSr = r("Omicron"), oSr = r("Oslash"), aSr = [0, y6], cSr = [0, 927], sSr = [0, 937], vSr = [0, A6], lSr = [0, yY], bSr = [0, yU], pSr = [0, 338], mSr = r("Ouml"), _Sr = r("Phi"), ySr = r("Pi"), hSr = r("Prime"), dSr = r("Psi"), kSr = r("Rho"), wSr = r("Scaron"), ESr = [0, 352], SSr = [0, 929], gSr = [0, 936], FSr = [0, 8243], TSr = [0, 928], OSr = [0, 934], ISr = [0, mT], ASr = [0, RX], NSr = r("Uuml"), CSr = r("THORN"), PSr = r("Tau"), DSr = r("Theta"), LSr = r("Uacute"), RSr = r("Ucirc"), jSr = r("Ugrave"), GSr = r("Upsilon"), MSr = [0, 933], BSr = [0, cp], qSr = [0, FU], USr = [0, Cw], HSr = [0, 920], XSr = [0, 932], YSr = [0, FX], VSr = r("Xi"), zSr = r("Yacute"), KSr = r("Yuml"), WSr = r("Zeta"), JSr = r("aacute"), $Sr = r("acirc"), ZSr = r("acute"), QSr = [0, sU], rgr = [0, rk], egr = [0, BO], ngr = [0, 918], tgr = [0, 376], ugr = [0, GX], igr = [0, 926], fgr = [0, iA], xgr = [0, UX], ogr = [0, 925], agr = r("delta"), cgr = r("cap"), sgr = r("aring"), vgr = r("agrave"), lgr = r("alefsym"), bgr = r("alpha"), pgr = r("amp"), mgr = r("and"), _gr = r("ang"), ygr = r("apos"), hgr = [0, 39], dgr = [0, 8736], kgr = [0, 8743], wgr = [0, 38], Egr = [0, 945], Sgr = [0, 8501], ggr = [0, hv], Fgr = r("asymp"), Tgr = r("atilde"), Ogr = r("auml"), Igr = r("bdquo"), Agr = r("beta"), Ngr = r("brvbar"), Cgr = r("bull"), Pgr = [0, 8226], Dgr = [0, DY], Lgr = [0, 946], Rgr = [0, 8222], jgr = [0, fV], Ggr = [0, JH], Mgr = [0, 8776], Bgr = [0, bU], qgr = r("copy"), Ugr = r("ccedil"), Hgr = r("cedil"), Xgr = r("cent"), Ygr = r("chi"), Vgr = r("circ"), zgr = r("clubs"), Kgr = r("cong"), Wgr = [0, 8773], Jgr = [0, 9827], $gr = [0, rX], Zgr = [0, 967], Qgr = [0, kh], rFr = [0, hk], eFr = [0, qX], nFr = r("crarr"), tFr = r("cup"), uFr = r("curren"), iFr = r("dArr"), fFr = r("dagger"), xFr = r("darr"), oFr = r("deg"), aFr = [0, mV], cFr = [0, 8595], sFr = [0, 8224], vFr = [0, 8659], lFr = [0, AF], bFr = [0, 8746], pFr = [0, 8629], mFr = [0, NX], _Fr = [0, 8745], yFr = r("fnof"), hFr = r("ensp"), dFr = r("diams"), kFr = r("divide"), wFr = r("eacute"), EFr = r("ecirc"), SFr = r("egrave"), gFr = r(v7), FFr = r("emsp"), TFr = [0, 8195], OFr = [0, 8709], IFr = [0, ZF], AFr = [0, tH], NFr = [0, hT], CFr = [0, Dw], PFr = [0, 9830], DFr = r("epsilon"), LFr = r("equiv"), RFr = r("eta"), jFr = r("eth"), GFr = r("euml"), MFr = r("euro"), BFr = r("exist"), qFr = [0, 8707], UFr = [0, 8364], HFr = [0, JU], XFr = [0, s1], YFr = [0, 951], VFr = [0, 8801], zFr = [0, 949], KFr = [0, 8194], WFr = r("gt"), JFr = r("forall"), $Fr = r("frac12"), ZFr = r("frac14"), QFr = r("frac34"), rTr = r("frasl"), eTr = r("gamma"), nTr = r("ge"), tTr = [0, 8805], uTr = [0, 947], iTr = [0, 8260], fTr = [0, OY], xTr = [0, iY], oTr = [0, fX], aTr = [0, 8704], cTr = r("hArr"), sTr = r("harr"), vTr = r("hearts"), lTr = r("hellip"), bTr = r("iacute"), pTr = r("icirc"), mTr = [0, cH], _Tr = [0, BY], yTr = [0, 8230], hTr = [0, 9829], dTr = [0, 8596], kTr = [0, 8660], wTr = [0, 62], ETr = [0, 402], STr = [0, 948], gTr = [0, jh], FTr = r("prime"), TTr = r("ndash"), OTr = r("le"), ITr = r("kappa"), ATr = r("igrave"), NTr = r("image"), CTr = r("infin"), PTr = r("iota"), DTr = r("iquest"), LTr = r("isin"), RTr = r("iuml"), jTr = [0, i6], GTr = [0, 8712], MTr = [0, lX], BTr = [0, 953], qTr = [0, 8734], UTr = [0, 8465], HTr = [0, lO], XTr = r("lArr"), YTr = r("lambda"), VTr = r("lang"), zTr = r("laquo"), KTr = r("larr"), WTr = r("lceil"), JTr = r("ldquo"), $Tr = [0, 8220], ZTr = [0, 8968], QTr = [0, 8592], rOr = [0, pg], eOr = [0, 10216], nOr = [0, 955], tOr = [0, 8656], uOr = [0, 954], iOr = r("macr"), fOr = r("lfloor"), xOr = r("lowast"), oOr = r("loz"), aOr = r("lrm"), cOr = r("lsaquo"), sOr = r("lsquo"), vOr = r("lt"), lOr = [0, 60], bOr = [0, 8216], pOr = [0, 8249], mOr = [0, vU], _Or = [0, 9674], yOr = [0, 8727], hOr = [0, 8970], dOr = r("mdash"), kOr = r("micro"), wOr = r("middot"), EOr = r(cY), SOr = r("mu"), gOr = r("nabla"), FOr = r("nbsp"), TOr = [0, fY], OOr = [0, 8711], IOr = [0, 956], AOr = [0, 8722], NOr = [0, lS], COr = [0, Ai], POr = [0, 8212], DOr = [0, bX], LOr = [0, 8804], ROr = r("or"), jOr = r("oacute"), GOr = r("ne"), MOr = r("ni"), BOr = r("not"), qOr = r("notin"), UOr = r("nsub"), HOr = r("ntilde"), XOr = r("nu"), YOr = [0, 957], VOr = [0, Vy], zOr = [0, 8836], KOr = [0, 8713], WOr = [0, LU], JOr = [0, 8715], $Or = [0, 8800], ZOr = r("ocirc"), QOr = r("oelig"), rIr = r("ograve"), eIr = r("oline"), nIr = r("omega"), tIr = r("omicron"), uIr = r("oplus"), iIr = [0, 8853], fIr = [0, 959], xIr = [0, 969], oIr = [0, 8254], aIr = [0, ST], cIr = [0, 339], sIr = [0, v8], vIr = [0, QU], lIr = r("part"), bIr = r("ordf"), pIr = r("ordm"), mIr = r("oslash"), _Ir = r("otilde"), yIr = r("otimes"), hIr = r("ouml"), dIr = r("para"), kIr = [0, Yg], wIr = [0, $2], EIr = [0, 8855], SIr = [0, WY], gIr = [0, wt], FIr = [0, md], TIr = [0, qg], OIr = r("permil"), IIr = r("perp"), AIr = r("phi"), NIr = r("pi"), CIr = r("piv"), PIr = r("plusmn"), DIr = r("pound"), LIr = [0, Ln], RIr = [0, uV], jIr = [0, 982], GIr = [0, 960], MIr = [0, 966], BIr = [0, 8869], qIr = [0, 8240], UIr = [0, 8706], HIr = [0, 8744], XIr = [0, 8211], YIr = r("sup1"), VIr = r("rlm"), zIr = r("raquo"), KIr = r("prod"), WIr = r("prop"), JIr = r("psi"), $Ir = r("quot"), ZIr = r("rArr"), QIr = r("radic"), rAr = r("rang"), eAr = [0, 10217], nAr = [0, 8730], tAr = [0, 8658], uAr = [0, 34], iAr = [0, 968], fAr = [0, 8733], xAr = [0, 8719], oAr = r("rarr"), aAr = r("rceil"), cAr = r("rdquo"), sAr = r("real"), vAr = r("reg"), lAr = r("rfloor"), bAr = r("rho"), pAr = [0, 961], mAr = [0, 8971], _Ar = [0, $U], yAr = [0, 8476], hAr = [0, 8221], dAr = [0, 8969], kAr = [0, 8594], wAr = [0, nw], EAr = r("sigma"), SAr = r("rsaquo"), gAr = r("rsquo"), FAr = r("sbquo"), TAr = r("scaron"), OAr = r("sdot"), IAr = r("sect"), AAr = r("shy"), NAr = [0, _Y], CAr = [0, NT], PAr = [0, 8901], DAr = [0, 353], LAr = [0, 8218], RAr = [0, 8217], jAr = [0, 8250], GAr = r("sigmaf"), MAr = r("sim"), BAr = r("spades"), qAr = r("sub"), UAr = r("sube"), HAr = r("sum"), XAr = r("sup"), YAr = [0, 8835], VAr = [0, 8721], zAr = [0, 8838], KAr = [0, 8834], WAr = [0, 9824], JAr = [0, 8764], $Ar = [0, 962], ZAr = [0, 963], QAr = [0, 8207], rNr = r("uarr"), eNr = r("thetasym"), nNr = r("sup2"), tNr = r("sup3"), uNr = r("supe"), iNr = r("szlig"), fNr = r("tau"), xNr = r("there4"), oNr = r("theta"), aNr = [0, 952], cNr = [0, 8756], sNr = [0, 964], vNr = [0, y8], lNr = [0, 8839], bNr = [0, RY], pNr = [0, gO], mNr = r("thinsp"), _Nr = r("thorn"), yNr = r("tilde"), hNr = r("times"), dNr = r("trade"), kNr = r("uArr"), wNr = r("uacute"), ENr = [0, nl], SNr = [0, 8657], gNr = [0, 8482], FNr = [0, xT], TNr = [0, 732], ONr = [0, gv], INr = [0, 8201], ANr = [0, 977], NNr = r("xi"), CNr = r("ucirc"), PNr = r("ugrave"), DNr = r("uml"), LNr = r("upsih"), RNr = r("upsilon"), jNr = r("uuml"), GNr = r("weierp"), MNr = [0, iU], BNr = [0, Y2], qNr = [0, 965], UNr = [0, 978], HNr = [0, IY], XNr = [0, 249], YNr = [0, 251], VNr = r("yacute"), zNr = r("yen"), KNr = r("yuml"), WNr = r("zeta"), JNr = r("zwj"), $Nr = r("zwnj"), ZNr = [0, kY], QNr = [0, 8205], rCr = [0, 950], eCr = [0, gw], nCr = [0, $X], tCr = [0, nd], uCr = [0, 958], iCr = [0, 8593], fCr = [0, gU], xCr = [0, 8242], oCr = [0, XU], aCr = r(VY), cCr = r(jd), sCr = r("unreachable jsx_child"), vCr = r("unreachable type_token wholenumber"), lCr = r("unreachable type_token wholebigint"), bCr = r("unreachable type_token floatbigint"), pCr = r("unreachable type_token scinumber"), mCr = r("unreachable type_token scibigint"), _Cr = r("unreachable type_token hexnumber"), yCr = r("unreachable type_token hexbigint"), hCr = r("unreachable type_token legacyoctnumber"), dCr = r("unreachable type_token octnumber"), kCr = r("unreachable type_token octbigint"), wCr = r("unreachable type_token binnumber"), ECr = r("unreachable type_token bigbigint"), SCr = r("unreachable type_token"), gCr = r(o1), FCr = r(o1), TCr = r(kU), OCr = r(H8), ICr = r(n6), ACr = r(x1), NCr = r(O6), CCr = r(O2), PCr = r(v7), DCr = r(P7), LCr = r(Ci), RCr = r(e7), jCr = [9, 1], GCr = [9, 0], MCr = r(fs5), BCr = r(dv), qCr = r(nu), UCr = r(Tv), HCr = r(K4), XCr = r(Gi), YCr = r(rs), VCr = r(es), zCr = r("unreachable template_tail"), KCr = r(b3), WCr = [0, r(C), r(C), r(C)], JCr = r("unreachable jsx_tag"), $Cr = r(P3), ZCr = r("unreachable regexp"), QCr = r("unreachable token wholenumber"), rPr = r("unreachable token wholebigint"), ePr = r("unreachable token floatbigint"), nPr = r("unreachable token scinumber"), tPr = r("unreachable token scibigint"), uPr = r("unreachable token hexnumber"), iPr = r("unreachable token hexbigint"), fPr = r("unreachable token legacyoctnumber"), xPr = r("unreachable token legacynonoctnumber"), oPr = r("unreachable token octnumber"), aPr = r("unreachable token octbigint"), cPr = r("unreachable token bignumber"), sPr = r("unreachable token bigint"), vPr = r("unreachable token"), lPr = r(o1), bPr = r(o1), pPr = r(kU), mPr = [6, r("#!")], _Pr = r("expected ?"), yPr = r(j2), hPr = r(_4), dPr = r(D2), kPr = r(gs), wPr = r(dx), EPr = r(A7), SPr = r(d6), gPr = r(o6), FPr = r(q2), TPr = r(N7), OPr = r(I7), IPr = r(T2), APr = r(_i), NPr = r(J2), CPr = r(np), PPr = r(U4), DPr = r(b8), LPr = r(_3), RPr = r(P7), jPr = r(Ci), GPr = r(q8), MPr = r(M2), BPr = r(A3), qPr = r(ws), UPr = r(Uu), HPr = r(R2), XPr = r(yv), YPr = r(y4), VPr = r(e7), zPr = r(G2), KPr = r(u1), WPr = r(fs5), JPr = r(CS), $Pr = r(eh), ZPr = r(k4), QPr = r(a6), rDr = r(E6), eDr = r(Ju), nDr = r(nu), tDr = r(rs), uDr = r(D7), iDr = r(i1), fDr = r(F7), xDr = r(Gi), oDr = r(d4), aDr = r(Jc), cDr = r(U2), sDr = r(es), vDr = r(K6), lDr = r(C8), bDr = r(Eu), pDr = r("unreachable string_escape"), mDr = r(Zu), _Dr = r(H2), yDr = r(H2), hDr = r(Zu), dDr = r(dX), kDr = r(oY), wDr = r("n"), EDr = r("r"), SDr = r("t"), gDr = r(pV), FDr = r(H2), TDr = r(l1), ODr = r(l1), IDr = r("unreachable id_char"), ADr = r(l1), NDr = r(l1), CDr = r("Invalid (lexer) bigint "), PDr = r("Invalid (lexer) bigint binary/octal "), DDr = r(H2), LDr = r(pH), RDr = r(oU), jDr = r(Nh), GDr = [10, r("token ILLEGAL")], MDr = r("\0"), BDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), qDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), UDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), HDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), XDr = r("\0\0"), YDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), VDr = r(""), zDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), KDr = r("\0"), WDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), JDr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), $Dr = r("\0\0\0\0"), ZDr = r("\0\0\0"), QDr = r("\x07\x07"), rLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), eLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), nLr = r(`\x07\b  +\v\f\r`), tLr = r(""), uLr = r("\0\0\0"), iLr = r("\0"), fLr = r("\0\0\0\0\0\0"), xLr = r(""), oLr = r(""), aLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), cLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), sLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), vLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), lLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), bLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), pLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), mLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), _Lr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), yLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), hLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), dLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\b\0\0\0\0\0\0 \x07\b"), kLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), wLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), ELr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), SLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), gLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), FLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), TLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), OLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), ILr = r(`\x07\b +\v\x07\f\r\x1B  ! "#$%                                                                                                                                                                                                                                                         `), ALr = r(""), NLr = r(""), CLr = r("\0\0\0\0"), PLr = r(`\x07\b  +\v\f\r\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x1B\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07`), DLr = r(`\x07\b  +\v\f\r\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07`), LLr = r("\0\0"), RLr = r(""), jLr = r(""), GLr = r("\x07"), MLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), BLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), qLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), ULr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), HLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), XLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), YLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), VLr = r("\0\0\0\0\0\0\0"), zLr = r("\x07"), KLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), WLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), JLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), $Lr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), ZLr = r("\0"), QLr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), rRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), eRr = r("\0\0"), nRr = r("\0"), tRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), uRr = r(""), iRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), fRr = r(""), xRr = r(""), oRr = r(""), aRr = r("\0"), cRr = r("\0\0\0"), sRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), vRr = r(""), lRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), bRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), pRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), mRr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), _Rr = r("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"), yRr = [0, [11, r("the identifier `"), [2, 0, [12, 96, 0]]], r("the identifier `%s`")], hRr = [0, 1], dRr = [0, 1], kRr = r("@flow"), wRr = r(yX), ERr = r(yX), SRr = [0, [11, r("an identifier. When exporting a "), [2, 0, [11, r(" as a named export, you must specify a "), [2, 0, [11, r(" name. Did you mean `export default "), [2, 0, [11, r(" ...`?"), 0]]]]]]], r("an identifier. When exporting a %s as a named export, you must specify a %s name. Did you mean `export default %s ...`?")], gRr = r(g3), FRr = r("Peeking current location when not available"), TRr = r(e7), ORr = r(bv), IRr = r(n6), ARr = r(x1), NRr = r(O6), CRr = r(O2), PRr = r(v7), DRr = r(P7), LRr = r(Ci), RRr = r(H8), jRr = r(fs5), GRr = r(dv), MRr = r(nu), BRr = r(Tv), qRr = r(Gi), URr = r(rs), HRr = r(es), XRr = r(Ci), YRr = r(fs5), VRr = r(Gi), zRr = r(Ci), KRr = r(fs5), WRr = r(Gi), JRr = r(C2), $Rr = r("eval"), ZRr = r(ws), QRr = r(e7), rjr = r(y4), ejr = r(k4), njr = r(a6), tjr = r(E6), ujr = r(nu), ijr = r(Eu), fjr = r(b8), xjr = r(A3), ojr = r(_i), ajr = r(dx), cjr = r(A7), sjr = r(d6), vjr = r(o6), ljr = r(q2), bjr = r(D2), pjr = r(N7), mjr = r(I7), _jr = r(J2), yjr = r(_4), hjr = r(U4), djr = r(_3), kjr = r(P7), wjr = r(q8), Ejr = r(np), Sjr = r(M2), gjr = r(F7), Fjr = r(Uu), Tjr = r(R2), Ojr = r(j2), Ijr = r(u1), Ajr = r(Ju), Njr = r(yv), Cjr = r(D7), Pjr = r(i1), Djr = r(d4), Ljr = r(rs), Rjr = r(U2), jjr = r(es), Gjr = r(K6), Mjr = r(C8), Bjr = r(Eu), qjr = [0, r("src/parser/parser_env.ml"), 343, 9], Ujr = r("Internal Error: Tried to add_declared_private with outside of class scope."), Hjr = r("Internal Error: `exit_class` called before a matching `enter_class`"), Xjr = r(C), Yjr = [0, 0, 0], Vjr = [0, 0, 0], zjr = r("Parser_env.Try.Rollback"), Kjr = r(C), Wjr = r(C), Jjr = [0, r(Eu), r(Yx), r(to), r(dU), r(gY), r(Oo), r(cu), r(dc), r(ux), r(oc), r(Gf), r(To), r(Po), r(ec), r(No), r(wf), r(Ja), r(uo), r(Cx), r(Ff), r(ax), r(Oa), r(qf), r(Ro), r(Ka), r(Xx), r(Jx), r(_x), r(xo), r(fa), r(no), r(F7), r(Io), r(Pf), r(wo), r($x), r(Jf), r(Uo), r(yo), r(D7), r(yc), r(Na), r(Sx), r(Vx), r(_f), r(Sc), r(Mf), r(cx), r(Ju), r(px), r(pa), r(De), r(r7), r($a), r(Yo), r(wa), r(Zx), r(sc), r(aa), r(ta), r(Cf), r(Bo), r(Yf), r(Wf), r(kc), r(vc), r(va), r(bf), r(zo), r(Zf), r(rx), r(mi), r(Qo), r(Mo), r(df), r(Va), r(Xo), r(lc), r(fc), r(Zo), r(oo), r(ix), r(Nf), r(uf), r(Xf), r(ex), r(ma), r(da), r(Kf), r(nc), r(gf), r(Lx), r(qo), r(bx), r(yf), r(Of), r(mc), r(xr), r(_c), r(Wx), r(Ux), r(Pa), r(zx), r(nx), r(Dx), r(ha), r(Px), r(hc), r(vx), r(Jo), r(wc), r(Da), r(Ko), r(rc), r(rf), r(Nx), r(ao), r(Ox), r(io), r(jo), r(Ao), r(pc), r(Ax), r(ff), r(of), r(Qf), r(Wo), r(ya), r(ac), r(Rf), r(za), r(ro), r(ko), r(af), r(e7), r(Aa), r(Fx), r(Ca), r(Hx), r(bo), r(Ec), r(Uu), r(Ya), r(ia), r(pf), r(yi), r(Vf), r(bc), r(Wa), r(G7), r(mx), r(ba), r(vf), r(Ba), r(kx), r(Go), r(_a), r(tx), r(nf), r(Lf), r(gc), r(Ix), r(hx), r(Ia), r(Tc), r(lo), r(So), r(li), r(ic), r(yx), r(La), r(Xa), r(Fc), r(Mx), r(ka), r(Bf), r(Sf), r(eo), r(Tx), r(Nu), r(ea), r(ua), r(Qa), r(sf), r(Sa), r(vo), r(Af), r(jx), r(Za), r(If), r(jf), r(Bx), r(Ho), r(qx), r(sa), r(ra), r(la), r(v7), r(ho), r(Ra), r(wx), r(Fo), r(so), r(na), r(zf), r(ja), r(Ta), r(xx), r(I7), r(N7), r($o), r(xa), r($f), r(iH), r(_o), r(uH), r(qU), r(hf), r(go), r(fx), r(gx), r(Uf), r(Ga), r(kf), r(tf), r(ga), r(Df), r(tc), r(mf), r(qa), r(oa), r(Ua), r(Ef), r(Qi), r(sx), r(po), r(lx), r(Tf), r(A7), r(Ha), r(Tn), r(Gx), r(xf), r(lf), r(Kx), r(Hf), r(Vo), r(ca), r(Ea), r(co), r(Rx), r(W4)], $jr = [0, r(Eu), r(Yx), r(to), r(Oo), r(cu), r(dc), r(ux), r(oc), r(Gf), r(To), r(Po), r(ec), r(No), r(wf), r(Ja), r(uo), r(Cx), r(Ff), r(ax), r(Oa), r(qf), r(Ro), r(Ka), r(Xx), r(Jx), r(_x), r(xo), r(fa), r(no), r(F7), r(Io), r(Pf), r(wo), r($x), r(Jf), r(Uo), r(yo), r(D7), r(yc), r(Na), r(Sx), r(Vx), r(_f), r(Sc), r(Mf), r(cx), r(Ju), r(px), r(pa), r(De), r(r7), r($a), r(Yo), r(wa), r(Zx), r(sc), r(aa), r(ta), r(Cf), r(Bo), r(Yf), r(Wf), r(kc), r(vc), r(va), r(bf), r(zo), r(Zf), r(rx), r(mi), r(Qo), r(Mo), r(df), r(Va), r(Xo), r(lc), r(fc), r(Zo), r(oo), r(ix), r(Nf), r(uf), r(Xf), r(ex), r(ma), r(da), r(Kf), r(nc), r(gf), r(Lx), r(qo), r(bx), r(yf), r(Of), r(mc), r(xr), r(_c), r(Wx), r(Ux), r(Pa), r(zx), r(nx), r(Dx), r(ha), r(Px), r(hc), r(vx), r(Jo), r(wc), r(Da), r(Ko), r(rc), r(rf), r(Nx), r(ao), r(Ox), r(io), r(jo), r(Ao), r(pc), r(Ax), r(ff), r(of), r(Qf), r(Wo), r(ya), r(ac), r(Rf), r(za), r(ro), r(ko), r(af), r(e7), r(Aa), r(Fx), r(Ca), r(Hx), r(bo), r(Ec), r(Uu), r(Ya), r(ia), r(pf), r(yi), r(Vf), r(bc), r(Wa), r(G7), r(mx), r(ba), r(vf), r(Ba), r(kx), r(Go), r(_a), r(tx), r(nf), r(Lf), r(gc), r(Ix), r(hx), r(Ia), r(Tc), r(lo), r(So), r(li), r(ic), r(yx), r(La), r(Xa), r(Fc), r(Mx), r(ka), r(Bf), r(Sf), r(eo), r(Tx), r(Nu), r(ea), r(ua), r(Qa), r(sf), r(Sa), r(vo), r(Af), r(jx), r(Za), r(If), r(jf), r(Bx), r(Ho), r(qx), r(sa), r(ra), r(la), r(v7), r(ho), r(Ra), r(wx), r(Fo), r(so), r(na), r(zf), r(ja), r(Ta), r(xx), r(I7), r(N7), r($o), r(xa), r($f), r(_o), r(hf), r(go), r(fx), r(gx), r(Uf), r(Ga), r(kf), r(tf), r(ga), r(Df), r(tc), r(mf), r(qa), r(oa), r(Ua), r(Ef), r(Qi), r(sx), r(po), r(lx), r(Tf), r(A7), r(Ha), r(Tn), r(Gx), r(xf), r(lf), r(Kx), r(Hf), r(Vo), r(ca), r(Ea), r(co), r(Rx), r(W4)], Zjr = [0, r(_f), r(Qf), r(_a), r(Vf), r(Tf), r(Yf), r(qo), r(ex), r(Nx), r(ko), r(Ka), r(D7), r(Xo), r(ea), r(tc), r(pc), r(bx), r(ff), r(ra), r(Bx), r(Yx), r(li), r(hc), r(Lx), r(Wa), r(sa), r(Of), r(yi), r(Oo), r(Mx), r(ta), r(zf), r(sx), r(tx), r(Qi), r(jo), r(Af), r(ba), r(vc), r(ic), r(yo), r(Kx), r(ma), r(ia), r(Sx), r(la), r(Px), r(yf), r(tf), r(go), r(Qo), r(wa), r(Xf), r(Yo), r(Ko), r(Uf), r(fc), r(r7), r(Nf), r(Ba), r(mc), r(ao), r(Ao), r(bc), r(nx), r($o), r(Jx), r(If), r(uf), r(rc), r($f), r(Dx), r(Go), r(aa), r(Ea), r(so), r(Sa), r(Wx), r(rx), r(co), r(po), r(cx), r(cu), r($a), r(uo), r(Ya), r(lf), r(So), r(no), r(ac), r(Df), r(nc), r(Uo), r(v7), r(Xa), r(Xx), r(Eu), r(fa), r(Ta), r(ec), r(zo), r(px), r(Po), r(hf), r(ja), r(oc), r(Ax), r(Zx), r(ro), r(Ho), r(Sf), r(lc), r(ua), r(ha), r(bf), r(ka), r(Ff), r(xo), r(dc), r(Sc), r(Cx), r(To), r(Ga), r(yx), r(fx), r(Pa), r(kx), r(Gf), r(_o), r(gf), r(Jo), r(Hf), r(Ux), r(oa), r(ga), r(Aa), r(va), r(Mo), r(wc), r(_c), r(Uu), r(Ju), r(Ha), r(Ja), r(ax), r(yc), r(kc), r(F7), r(I7), r(pf), r(Va), r(Tx), r(of), r(mi), r(Ix), r(qx), r(Fx), r(gx), r(nf), r(zx), r(Wo), r(G7), r(vf), r(wf), r(jf), r(De), r(Tc), r(bo), r(Za), r(sf), r(Kf), r(Mf), r(Ca), r(oo), r(Cf), r(_x), r(ix), r(Oa), r(lx), r(Fo), r(Ua), r(na), r(Gx), r(Rf), r(Jf), r(mx), r(pa), r(Ec), r(qa), r(da), r(io), r(kf), r(af), r(ho), r(Ro), r(Rx), r(ux), r(Ef), r(qf), r(Ra), r(Ox), r(ya), r(xa), r(vx), r(Bo), r(za), r(Bf), r(Da), r(wo), r(Vo), r(Wf), r(xf), r(Nu), r(Zf), r(eo), r(hx), r(Ia), r(Vx), r(N7), r(Lf), r(sc), r(vo), r(wx), r(Pf), r($x), r(Na), r(lo), r(Qa), r(No), r(La), r(df), r(Tn), r(Hx), r(mf), r(rf), r(Zo), r(gc), r(xx), r(jx), r(A7), r(ca), r(e7), r(to), r(Fc), r(Io), r(xr)], Qjr = [0, r(_f), r(Qf), r(_a), r(Vf), r(Tf), r(Yf), r(qo), r(ex), r(Nx), r(ko), r(Ka), r(D7), r(Xo), r(ea), r(tc), r(pc), r(bx), r(ff), r(ra), r(Bx), r(Yx), r(li), r(hc), r(Lx), r(Wa), r(sa), r(Of), r(yi), r(Oo), r(gY), r(Mx), r(ta), r(zf), r(sx), r(tx), r(Qi), r(jo), r(Af), r(ba), r(vc), r(ic), r(yo), r(Kx), r(ma), r(ia), r(Sx), r(la), r(Px), r(yf), r(tf), r(go), r(Qo), r(wa), r(uH), r(Xf), r(Yo), r(Ko), r(Uf), r(fc), r(r7), r(Nf), r(Ba), r(mc), r(ao), r(Ao), r(bc), r(nx), r($o), r(Jx), r(If), r(uf), r(rc), r($f), r(Dx), r(Go), r(aa), r(Ea), r(so), r(Sa), r(Wx), r(rx), r(co), r(po), r(cx), r(cu), r($a), r(uo), r(Ya), r(lf), r(So), r(no), r(ac), r(Df), r(nc), r(Uo), r(v7), r(Xa), r(Xx), r(Eu), r(fa), r(Ta), r(ec), r(zo), r(px), r(Po), r(hf), r(ja), r(oc), r(Ax), r(Zx), r(ro), r(Ho), r(Sf), r(lc), r(ua), r(ha), r(bf), r(ka), r(Ff), r(xo), r(dc), r(Sc), r(Cx), r(To), r(Ga), r(yx), r(fx), r(Pa), r(kx), r(Gf), r(_o), r(gf), r(Jo), r(Hf), r(Ux), r(oa), r(ga), r(Aa), r(va), r(Mo), r(wc), r(_c), r(Uu), r(Ju), r(Ha), r(Ja), r(ax), r(yc), r(kc), r(F7), r(I7), r(pf), r(Va), r(Tx), r(of), r(mi), r(Ix), r(qx), r(Fx), r(gx), r(nf), r(zx), r(Wo), r(G7), r(vf), r(wf), r(jf), r(De), r(Tc), r(bo), r(Za), r(sf), r(Kf), r(Mf), r(Ca), r(oo), r(Cf), r(_x), r(ix), r(Oa), r(lx), r(Fo), r(Ua), r(na), r(Gx), r(Rf), r(qU), r(Jf), r(mx), r(pa), r(Ec), r(qa), r(da), r(io), r(kf), r(af), r(ho), r(Ro), r(iH), r(Rx), r(ux), r(Ef), r(qf), r(dU), r(Ra), r(Ox), r(ya), r(xa), r(vx), r(Bo), r(za), r(Bf), r(Da), r(wo), r(Vo), r(Wf), r(xf), r(Nu), r(Zf), r(eo), r(hx), r(Ia), r(Vx), r(N7), r(Lf), r(sc), r(vo), r(wx), r(Pf), r($x), r(Na), r(lo), r(Qa), r(No), r(La), r(df), r(Tn), r(Hx), r(mf), r(rf), r(Zo), r(gc), r(xx), r(jx), r(A7), r(ca), r(e7), r(to), r(Fc), r(Io), r(xr)], rGr = r(Y4), eGr = r(I2), nGr = [0, [11, r("Failure while looking up "), [2, 0, [11, r(". Index: "), [4, 0, 0, 0, [11, r(". Length: "), [4, 0, 0, 0, [12, 46, 0]]]]]]], r("Failure while looking up %s. Index: %d. Length: %d.")], tGr = [0, 0, 0, 0], uGr = r("Offset_utils.Offset_lookup_failed"), iGr = r(KY), fGr = r(hE), xGr = r(CY), oGr = r(VX), aGr = r(VX), cGr = r(CY), sGr = r(Jc), vGr = r(Xr), lGr = r(Wn), bGr = r("Program"), pGr = r(Ud), mGr = r("BreakStatement"), _Gr = r(Ud), yGr = r("ContinueStatement"), hGr = r("DebuggerStatement"), dGr = r(cc), kGr = r("DeclareExportAllDeclaration"), wGr = r(cc), EGr = r(Cv), SGr = r(P2), gGr = r(_i), FGr = r("DeclareExportDeclaration"), TGr = r($c), OGr = r(Wn), IGr = r(mt), AGr = r("DeclareModule"), NGr = r(C7), CGr = r("DeclareModuleExports"), PGr = r(Ss), DGr = r(Wn), LGr = r("DoWhileStatement"), RGr = r("EmptyStatement"), jGr = r(bO), GGr = r(P2), MGr = r("ExportDefaultDeclaration"), BGr = r(bO), qGr = r(I4), UGr = r(cc), HGr = r("ExportAllDeclaration"), XGr = r(bO), YGr = r(cc), VGr = r(Cv), zGr = r(P2), KGr = r("ExportNamedDeclaration"), WGr = r(Zi), JGr = r(Nu), $Gr = r("ExpressionStatement"), ZGr = r(Wn), QGr = r(fU), rMr = r(Ss), eMr = r(ji), nMr = r("ForStatement"), tMr = r(R8), uMr = r(Wn), iMr = r(Cu), fMr = r(bi), xMr = r("ForInStatement"), oMr = r(dx), aMr = r(Wn), cMr = r(Cu), sMr = r(bi), vMr = r("ForOfStatement"), lMr = r(m3), bMr = r(kv), pMr = r(Ss), mMr = r("IfStatement"), _Mr = r(Jc), yMr = r(rs), hMr = r(Bn), dMr = r(cX), kMr = r(cc), wMr = r(Cv), EMr = r("ImportDeclaration"), SMr = r(Wn), gMr = r(Ud), FMr = r("LabeledStatement"), TMr = r(l7), OMr = r("ReturnStatement"), IMr = r(QX), AMr = r("discriminant"), NMr = r("SwitchStatement"), CMr = r(l7), PMr = r("ThrowStatement"), DMr = r(CH), LMr = r(MU), RMr = r(Tn), jMr = r("TryStatement"), GMr = r(Wn), MMr = r(Ss), BMr = r("WhileStatement"), qMr = r(Wn), UMr = r(xk), HMr = r("WithStatement"), XMr = r(PH), YMr = r("ArrayExpression"), VMr = r(O7), zMr = r(p6), KMr = r(Nu), WMr = r(r7), JMr = r(G7), $Mr = r(gs), ZMr = r(Wn), QMr = r(Dt), rBr = r(mt), eBr = r("ArrowFunctionExpression"), nBr = r(XO), tBr = r(Cu), uBr = r(bi), iBr = r(ul), fBr = r("AssignmentExpression"), xBr = r(Cu), oBr = r(bi), aBr = r(ul), cBr = r("BinaryExpression"), sBr = r("CallExpression"), vBr = r(T4), lBr = r(aY), bBr = r("ComprehensionExpression"), pBr = r(m3), mBr = r(kv), _Br = r(Ss), yBr = r("ConditionalExpression"), hBr = r(T4), dBr = r(aY), kBr = r("GeneratorExpression"), wBr = r(cc), EBr = r("ImportExpression"), SBr = r(zH), gBr = r(MX), FBr = r(Ke), TBr = r(Cu), OBr = r(bi), IBr = r(ul), ABr = r("LogicalExpression"), NBr = r("MemberExpression"), CBr = r(Iv), PBr = r(el), DBr = r("MetaProperty"), LBr = r(C2), RBr = r(TX), jBr = r(jH), GBr = r("NewExpression"), MBr = r(H4), BBr = r("ObjectExpression"), qBr = r(qu), UBr = r("OptionalCallExpression"), HBr = r(qu), XBr = r("OptionalMemberExpression"), YBr = r(Mg), VBr = r("SequenceExpression"), zBr = r("Super"), KBr = r("ThisExpression"), WBr = r(C7), JBr = r(Nu), $Br = r("TypeCastExpression"), ZBr = r(l7), QBr = r("AwaitExpression"), rqr = r(Fa), eqr = r(xs), nqr = r(Kt), tqr = r(ZY), uqr = r(rs), iqr = r(es), fqr = r(J2), xqr = r("matched above"), oqr = r(l7), aqr = r(qE), cqr = r(ul), sqr = r("UnaryExpression"), vqr = r(oV), lqr = r(sH), bqr = r(qE), pqr = r(l7), mqr = r(ul), _qr = r("UpdateExpression"), yqr = r(lY), hqr = r(l7), dqr = r("YieldExpression"), kqr = r("Unexpected FunctionDeclaration with BodyExpression"), wqr = r(O7), Eqr = r(p6), Sqr = r(Nu), gqr = r(r7), Fqr = r(G7), Tqr = r(gs), Oqr = r(Wn), Iqr = r(Dt), Aqr = r(mt), Nqr = r("FunctionDeclaration"), Cqr = r("Unexpected FunctionExpression with BodyExpression"), Pqr = r(O7), Dqr = r(p6), Lqr = r(Nu), Rqr = r(r7), jqr = r(G7), Gqr = r(gs), Mqr = r(Wn), Bqr = r(Dt), qqr = r(mt), Uqr = r("FunctionExpression"), Hqr = r(qu), Xqr = r(C7), Yqr = r(ui), Vqr = r(tn), zqr = r(qu), Kqr = r(C7), Wqr = r(ui), Jqr = r("PrivateIdentifier"), $qr = r(qu), Zqr = r(C7), Qqr = r(ui), rUr = r(tn), eUr = r(kv), nUr = r(Ss), tUr = r("SwitchCase"), uUr = r(Wn), iUr = r("param"), fUr = r("CatchClause"), xUr = r(Wn), oUr = r("BlockStatement"), aUr = r(mt), cUr = r("DeclareVariable"), sUr = r(r7), vUr = r(mt), lUr = r("DeclareFunction"), bUr = r(Hy), pUr = r(ws), mUr = r(P7), _Ur = r(Wn), yUr = r(O7), hUr = r(mt), dUr = r("DeclareClass"), kUr = r(P7), wUr = r(Wn), EUr = r(O7), SUr = r(mt), gUr = r("DeclareInterface"), FUr = r(Bn), TUr = r(Jc), OUr = r(I4), IUr = r("ExportNamespaceSpecifier"), AUr = r(Cu), NUr = r(O7), CUr = r(mt), PUr = r("DeclareTypeAlias"), DUr = r(Cu), LUr = r(O7), RUr = r(mt), jUr = r("TypeAlias"), GUr = r("DeclareOpaqueType"), MUr = r("OpaqueType"), BUr = r(SX), qUr = r(mX), UUr = r(O7), HUr = r(mt), XUr = r("ClassDeclaration"), YUr = r("ClassExpression"), VUr = r(j_), zUr = r(ws), KUr = r("superTypeParameters"), WUr = r("superClass"), JUr = r(O7), $Ur = r(Wn), ZUr = r(mt), QUr = r(Nu), rHr = r("Decorator"), eHr = r(O7), nHr = r(mt), tHr = r("ClassImplements"), uHr = r(Wn), iHr = r("ClassBody"), fHr = r(wv), xHr = r(F2), oHr = r(n1), aHr = r(lv), cHr = r(j_), sHr = r(pv), vHr = r(nu), lHr = r($c), bHr = r(Bn), pHr = r(ii), mHr = r("MethodDefinition"), _Hr = r(T2), yHr = r(cu), hHr = r(nu), dHr = r(pv), kHr = r(C7), wHr = r(Bn), EHr = r(ii), SHr = r(xV), gHr = r("Internal Error: Private name found in class prop"), FHr = r(T2), THr = r(cu), OHr = r(nu), IHr = r(pv), AHr = r(C7), NHr = r(Bn), CHr = r(ii), PHr = r(xV), DHr = r(mt), LHr = r(OX), RHr = r(ji), jHr = r(mt), GHr = r("EnumStringMember"), MHr = r(mt), BHr = r(OX), qHr = r(ji), UHr = r(mt), HHr = r("EnumNumberMember"), XHr = r(ji), YHr = r(mt), VHr = r("EnumBooleanMember"), zHr = r(T8), KHr = r(DT), WHr = r(A4), JHr = r("EnumBooleanBody"), $Hr = r(T8), ZHr = r(DT), QHr = r(A4), rXr = r("EnumNumberBody"), eXr = r(T8), nXr = r(DT), tXr = r(A4), uXr = r("EnumStringBody"), iXr = r(T8), fXr = r(A4), xXr = r("EnumSymbolBody"), oXr = r(Wn), aXr = r(mt), cXr = r("EnumDeclaration"), sXr = r(P7), vXr = r(Wn), lXr = r(O7), bXr = r(mt), pXr = r("InterfaceDeclaration"), mXr = r(O7), _Xr = r(mt), yXr = r("InterfaceExtends"), hXr = r(C7), dXr = r(H4), kXr = r("ObjectPattern"), wXr = r(C7), EXr = r(PH), SXr = r("ArrayPattern"), gXr = r(Cu), FXr = r(bi), TXr = r(DF), OXr = r(C7), IXr = r(ui), AXr = r(tn), NXr = r(l7), CXr = r(iX), PXr = r(l7), DXr = r(iX), LXr = r(Cu), RXr = r(bi), jXr = r(DF), GXr = r(ji), MXr = r(ji), BXr = r(n1), qXr = r(lv), UXr = r(aH), HXr = r(pv), XXr = r(f6), YXr = r(F2), VXr = r($c), zXr = r(Bn), KXr = r(ii), WXr = r(_U), JXr = r(l7), $Xr = r("SpreadProperty"), ZXr = r(Cu), QXr = r(bi), rYr = r(DF), eYr = r(pv), nYr = r(f6), tYr = r(F2), uYr = r($c), iYr = r(Bn), fYr = r(ii), xYr = r(_U), oYr = r(l7), aYr = r("SpreadElement"), cYr = r(R8), sYr = r(Cu), vYr = r(bi), lYr = r("ComprehensionBlock"), bYr = r("We should not create Literal nodes for bigints"), pYr = r(jX), mYr = r(mi), _Yr = r("regex"), yYr = r(c7), hYr = r(Bn), dYr = r(c7), kYr = r(Bn), wYr = r(H6), EYr = r(c7), SYr = r(Bn), gYr = r(H6), FYr = r(x1), TYr = r(Bn), OYr = r("BigIntLiteral"), IYr = r(c7), AYr = r(Bn), NYr = r(H6), CYr = r(Gi), PYr = r(Ci), DYr = r(c7), LYr = r(Bn), RYr = r(H6), jYr = r(Mg), GYr = r("quasis"), MYr = r("TemplateLiteral"), BYr = r(PY), qYr = r(c7), UYr = r(aU), HYr = r(Bn), XYr = r("TemplateElement"), YYr = r(EY), VYr = r("tag"), zYr = r("TaggedTemplateExpression"), KYr = r(U2), WYr = r(G2), JYr = r(D2), $Yr = r($c), ZYr = r("declarations"), QYr = r("VariableDeclaration"), rVr = r(ji), eVr = r(mt), nVr = r("VariableDeclarator"), tVr = r($c), uVr = r("Variance"), iVr = r("AnyTypeAnnotation"), fVr = r("MixedTypeAnnotation"), xVr = r("EmptyTypeAnnotation"), oVr = r("VoidTypeAnnotation"), aVr = r("NullLiteralTypeAnnotation"), cVr = r("SymbolTypeAnnotation"), sVr = r("NumberTypeAnnotation"), vVr = r("BigIntTypeAnnotation"), lVr = r("StringTypeAnnotation"), bVr = r("BooleanTypeAnnotation"), pVr = r(C7), mVr = r("NullableTypeAnnotation"), _Vr = r(O7), yVr = r(xd), hVr = r(p6), dVr = r(i1), kVr = r(Dt), wVr = r("FunctionTypeAnnotation"), EVr = r(qu), SVr = r(C7), gVr = r(ui), FVr = r(RH), TVr = r(qu), OVr = r(C7), IVr = r(ui), AVr = r(RH), NVr = [0, 0, 0, 0, 0], CVr = r("internalSlots"), PVr = r("callProperties"), DVr = r("indexers"), LVr = r(H4), RVr = r("exact"), jVr = r(GY), GVr = r("ObjectTypeAnnotation"), MVr = r(aH), BVr = r("There should not be computed object type property keys"), qVr = r(ji), UVr = r(n1), HVr = r(lv), XVr = r($c), YVr = r(cu), VVr = r(X3), zVr = r(nu), KVr = r(qu), WVr = r(F2), JVr = r(Bn), $Vr = r(ii), ZVr = r("ObjectTypeProperty"), QVr = r(l7), rzr = r("ObjectTypeSpreadProperty"), ezr = r(cu), nzr = r(nu), tzr = r(Bn), uzr = r(ii), izr = r(mt), fzr = r("ObjectTypeIndexer"), xzr = r(nu), ozr = r(Bn), azr = r("ObjectTypeCallProperty"), czr = r(Bn), szr = r(F2), vzr = r(nu), lzr = r(qu), bzr = r(mt), pzr = r("ObjectTypeInternalSlot"), mzr = r(Wn), _zr = r(P7), yzr = r("InterfaceTypeAnnotation"), hzr = r("elementType"), dzr = r("ArrayTypeAnnotation"), kzr = r(mt), wzr = r(eY), Ezr = r("QualifiedTypeIdentifier"), Szr = r(O7), gzr = r(mt), Fzr = r("GenericTypeAnnotation"), Tzr = r("indexType"), Ozr = r("objectType"), Izr = r("IndexedAccessType"), Azr = r(qu), Nzr = r("OptionalIndexedAccessType"), Czr = r($6), Pzr = r("UnionTypeAnnotation"), Dzr = r($6), Lzr = r("IntersectionTypeAnnotation"), Rzr = r(l7), jzr = r("TypeofTypeAnnotation"), Gzr = r(mt), Mzr = r(eY), Bzr = r("QualifiedTypeofIdentifier"), qzr = r($6), Uzr = r("TupleTypeAnnotation"), Hzr = r(c7), Xzr = r(Bn), Yzr = r("StringLiteralTypeAnnotation"), Vzr = r(c7), zzr = r(Bn), Kzr = r("NumberLiteralTypeAnnotation"), Wzr = r(c7), Jzr = r(Bn), $zr = r("BigIntLiteralTypeAnnotation"), Zzr = r(Gi), Qzr = r(Ci), rKr = r(c7), eKr = r(Bn), nKr = r("BooleanLiteralTypeAnnotation"), tKr = r("ExistsTypeAnnotation"), uKr = r(C7), iKr = r("TypeAnnotation"), fKr = r(Dt), xKr = r("TypeParameterDeclaration"), oKr = r(_i), aKr = r(cu), cKr = r(DU), sKr = r(ui), vKr = r("TypeParameter"), lKr = r(Dt), bKr = r(gH), pKr = r(Dt), mKr = r(gH), _Kr = r(bv), yKr = r(Ve), hKr = r("closingElement"), dKr = r("openingElement"), kKr = r("JSXElement"), wKr = r("closingFragment"), EKr = r(Ve), SKr = r("openingFragment"), gKr = r("JSXFragment"), FKr = r("selfClosing"), TKr = r(mY), OKr = r(ui), IKr = r("JSXOpeningElement"), AKr = r("JSXOpeningFragment"), NKr = r(ui), CKr = r("JSXClosingElement"), PKr = r("JSXClosingFragment"), DKr = r(Bn), LKr = r(ui), RKr = r("JSXAttribute"), jKr = r(l7), GKr = r("JSXSpreadAttribute"), MKr = r("JSXEmptyExpression"), BKr = r(Nu), qKr = r("JSXExpressionContainer"), UKr = r(Nu), HKr = r("JSXSpreadChild"), XKr = r(c7), YKr = r(Bn), VKr = r("JSXText"), zKr = r(Iv), KKr = r(xk), WKr = r("JSXMemberExpression"), JKr = r(ui), $Kr = r("namespace"), ZKr = r("JSXNamespacedName"), QKr = r(ui), rWr = r("JSXIdentifier"), eWr = r(I4), nWr = r(B2), tWr = r("ExportSpecifier"), uWr = r(B2), iWr = r("ImportDefaultSpecifier"), fWr = r(B2), xWr = r("ImportNamespaceSpecifier"), oWr = r(cX), aWr = r(B2), cWr = r("imported"), sWr = r("ImportSpecifier"), vWr = r("Line"), lWr = r("Block"), bWr = r(Bn), pWr = r(Bn), mWr = r("DeclaredPredicate"), _Wr = r("InferredPredicate"), yWr = r(C2), hWr = r(TX), dWr = r(jH), kWr = r(pv), wWr = r(Iv), EWr = r(xk), SWr = r("message"), gWr = r(hE), FWr = r(HH), TWr = r(g7), OWr = r(cc), IWr = r(I2), AWr = r(Y4), NWr = [0, [3, 0, 0], r(Vt)], CWr = r(M2), PWr = r(A3), DWr = r(R2), LWr = r(j2), RWr = r(Ju), jWr = r(D7), GWr = r(i1), MWr = r(F7), BWr = r(d4), qWr = r(U2), UWr = r(K6), HWr = r(C8), XWr = r(D2), YWr = r(G2), VWr = r(fs5), zWr = r(Ci), KWr = r(Gi), WWr = r(A7), JWr = r(d6), $Wr = r(o6), ZWr = r(N7), QWr = r(_i), rJr = r(_4), eJr = r(q8), nJr = r(np), tJr = r(q2), uJr = r(P7), iJr = r(nu), fJr = r(U4), xJr = r(u1), oJr = r(J2), aJr = r(rs), cJr = r(es), sJr = r(b8), vJr = r(_3), lJr = r(Uu), bJr = r(yv), pJr = r(ws), mJr = r(e7), _Jr = r(y4), yJr = r(k4), hJr = r(a6), dJr = r(E6), kJr = r(Eu), wJr = r(I7), EJr = r(T2), SJr = r(Jc), gJr = r(eh), FJr = r(CS), TJr = r(gs), OJr = r(dx), IJr = r(n6), AJr = r(H8), NJr = r(v7), CJr = r(dv), PJr = r(x1), DJr = r(Tv), LJr = r(es), RJr = r(K4), jJr = r(O2), GJr = r(O6), MJr = [0, r(g3)], BJr = r(C), qJr = [7, 0], UJr = r(C), HJr = [0, 1], XJr = [0, 2], YJr = [0, 3], VJr = [0, 0], zJr = [0, 0], KJr = [0, 0, 0, 0, 0], WJr = [0, r(vv), 906, 6], JJr = [0, r(vv), ZX, 6], $Jr = [0, 0], ZJr = [0, r(vv), 1012, 8], QJr = r(X3), r$r = [0, r(vv), 1029, 8], e$r = r("Can not have both `static` and `proto`"), n$r = r(nu), t$r = r(X3), u$r = r(n1), i$r = r(lv), f$r = r(n1), x$r = r(wv), o$r = r(oH), a$r = [0, 0, 0, 0], c$r = [0, [0, 0, 0, 0, 0]], s$r = r(i1), v$r = [0, r("a type")], l$r = [0, 0], b$r = [0, 0], p$r = [14, 1], m$r = [14, 0], _$r = [0, r(vv), EH, 15], y$r = [0, r(vv), L7, 15], h$r = [0, 44], d$r = [0, 44], k$r = r(M2), w$r = [0, r(C), 0], E$r = [0, 0, 0], S$r = [0, 0, 0], g$r = [0, 0, 0], F$r = [0, 41], T$r = r(Qu), O$r = r(Qu), I$r = [0, r("a regular expression")], A$r = r(C), N$r = r(C), C$r = r(C), P$r = [0, r("src/parser/expression_parser.ml"), CU, 17], D$r = [0, r("a template literal part")], L$r = [0, [0, r(C), r(C)], 1], R$r = r(fs5), j$r = r(fs5), G$r = r(Gi), M$r = r(Ci), B$r = r("Invalid bigint "), q$r = r("Invalid bigint binary/octal "), U$r = r(H2), H$r = r(pH), X$r = r(Nh), Y$r = r(Nh), V$r = r(oU), z$r = [0, 44], K$r = [0, 1], W$r = [0, 1], J$r = [0, 1], $$r = [0, 1], Z$r = [0, 0], Q$r = r(bv), rZr = r(bv), eZr = r(u1), nZr = r(gS), tZr = [0, r("the identifier `target`")], uZr = [0, 0], iZr = r(Uu), fZr = r(el), xZr = r(el), oZr = r(yv), aZr = [0, 0], cZr = [0, r("either a call or access of `super`")], sZr = r(yv), vZr = [0, 0], lZr = [0, 1], bZr = [0, 0], pZr = [0, 1], mZr = [0, 0], _Zr = [0, 1], yZr = [0, 0], hZr = [0, 2], dZr = [0, 3], kZr = [0, 7], wZr = [0, 6], EZr = [0, 4], SZr = [0, 5], gZr = [0, [0, 17, [0, 2]]], FZr = [0, [0, 18, [0, 3]]], TZr = [0, [0, 19, [0, 4]]], OZr = [0, [0, 0, [0, 5]]], IZr = [0, [0, 1, [0, 5]]], AZr = [0, [0, 2, [0, 5]]], NZr = [0, [0, 3, [0, 5]]], CZr = [0, [0, 5, [0, 6]]], PZr = [0, [0, 7, [0, 6]]], DZr = [0, [0, 4, [0, 6]]], LZr = [0, [0, 6, [0, 6]]], RZr = [0, [0, 8, [0, 7]]], jZr = [0, [0, 9, [0, 7]]], GZr = [0, [0, 10, [0, 7]]], MZr = [0, [0, 11, [0, 8]]], BZr = [0, [0, 12, [0, 8]]], qZr = [0, [0, 15, [0, 9]]], UZr = [0, [0, 13, [0, 9]]], HZr = [0, [0, 14, [1, 10]]], XZr = [0, [0, 16, [0, 9]]], YZr = [0, [0, 21, [0, 6]]], VZr = [0, [0, 20, [0, 6]]], zZr = [23, r(Ke)], KZr = [0, [0, 8]], WZr = [0, [0, 7]], JZr = [0, [0, 6]], $Zr = [0, [0, 10]], ZZr = [0, [0, 9]], QZr = [0, [0, 11]], rQr = [0, [0, 5]], eQr = [0, [0, 4]], nQr = [0, [0, 2]], tQr = [0, [0, 3]], uQr = [0, [0, 1]], iQr = [0, [0, 0]], fQr = [0, [0, 12]], xQr = [0, [0, 13]], oQr = [0, [0, 14]], aQr = [0, 0], cQr = r(Uu), sQr = r(u1), vQr = r(gS), lQr = r(el), bQr = r(gs), pQr = r(Uu), mQr = r(u1), _Qr = r(gS), yQr = r(el), hQr = r(o1), dQr = r(Lo), kQr = [17, r("JSX fragment")], wQr = [0, Ni], EQr = [1, Ni], SQr = r(C), gQr = [0, r(C)], FQr = [0, r(g3)], TQr = r(C), OQr = [0, 0, 0, 0], IQr = [0, r("src/hack_forked/utils/collections/flow_map.ml"), 717, 36], AQr = [0, 0, 0], NQr = r(q2), CQr = [0, r(C), 0], PQr = r("unexpected PrivateName in Property, expected a PrivateField"), DQr = r(wv), LQr = r(oH), RQr = [0, 0, 0], jQr = r(wv), GQr = r(wv), MQr = r(n1), BQr = r(lv), qQr = [0, 1], UQr = [0, 1], HQr = [0, 1], XQr = r(wv), YQr = r(n1), VQr = r(lv), zQr = r(XO), KQr = r(Eu), WQr = r(dx), JQr = r("Internal Error: private name found in object props"), $Qr = r(cV), ZQr = [0, r(g3)], QQr = r(Eu), r0e = r(dx), e0e = r(Eu), n0e = r(dx), t0e = r(cV), u0e = [10, r(yi)], i0e = [0, 1], f0e = r(a1), x0e = r(K2), o0e = [0, r(LS), 1763, 21], a0e = r(K2), c0e = r(a1), s0e = [0, r("a declaration, statement or export specifiers")], v0e = [0, 40], l0e = r(a1), b0e = r(K2), p0e = [0, r(C), r(C), 0], m0e = [0, r(EU)], _0e = r(pU), y0e = r("exports"), h0e = [0, 1], d0e = [0, 1], k0e = [0, 0], w0e = r(pU), E0e = [0, 40], S0e = r(Hy), g0e = [0, 0], F0e = [0, 1], T0e = [0, 83], O0e = [0, 0], I0e = [0, 1], A0e = r(a1), N0e = r(a1), C0e = r(K2), P0e = r(a1), D0e = [0, r("the keyword `as`")], L0e = r(a1), R0e = r(K2), j0e = [0, r(EU)], G0e = [0, r("the keyword `from`")], M0e = [0, r(C), r(C), 0], B0e = [0, r(tU)], q0e = r("Label"), U0e = [0, r(tU)], H0e = [0, 0, 0], X0e = [0, 29], Y0e = [0, r(LS), 431, 22], V0e = [0, 28], z0e = [0, r(LS), 450, 22], K0e = [0, 0], W0e = r("the token `;`"), J0e = [0, 0], $0e = [0, 0], Z0e = r(dx), Q0e = r(G2), rre = r(Eu), ere = [0, r(HU)], nre = [15, [0, 0]], tre = [0, r(HU)], ure = r("use strict"), ire = [0, 0, 0, 0], fre = r(MI), xre = r("Nooo: "), ore = r(_i), are = r("Parser error: No such thing as an expression pattern!"), cre = r(C), sre = [0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], vre = [0, r("src/parser/parser_flow.ml"), NT, 28], lre = [0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], bre = r(Bn), pre = r(KY), mre = r(I2), _re = r(Y4), yre = r(HH), hre = r(I2), dre = r(Y4), kre = r(g7), wre = r(hE), Ere = r("normal"), Sre = r(Jc), gre = r("jsxTag"), Fre = r("jsxChild"), Tre = r("template"), Ore = r(MH), Ire = r("context"), Are = r(Jc), Nre = r("use_strict"), Cre = r($6), Pre = r("esproposal_export_star_as"), Dre = r("esproposal_decorators"), Lre = r("enums"), Rre = r("Internal error: "); + function Gt(t) { + if (typeof t == "number") + return 0; + switch (t[0]) { + case 0: + return [0, Gt(t[1])]; + case 1: + return [1, Gt(t[1])]; + case 2: + return [2, Gt(t[1])]; + case 3: + return [3, Gt(t[1])]; + case 4: + return [4, Gt(t[1])]; + case 5: + return [5, Gt(t[1])]; + case 6: + return [6, Gt(t[1])]; + case 7: + return [7, Gt(t[1])]; + case 8: + var n = t[1]; + return [8, n, Gt(t[2])]; + case 9: + var e = t[1]; + return [9, e, e, Gt(t[3])]; + case 10: + return [10, Gt(t[1])]; + case 11: + return [11, Gt(t[1])]; + case 12: + return [12, Gt(t[1])]; + case 13: + return [13, Gt(t[1])]; + default: + return [14, Gt(t[1])]; + } + } + function u7(t, n) { + if (typeof t == "number") + return n; + switch (t[0]) { + case 0: + return [0, u7(t[1], n)]; + case 1: + return [1, u7(t[1], n)]; + case 2: + return [2, u7(t[1], n)]; + case 3: + return [3, u7(t[1], n)]; + case 4: + return [4, u7(t[1], n)]; + case 5: + return [5, u7(t[1], n)]; + case 6: + return [6, u7(t[1], n)]; + case 7: + return [7, u7(t[1], n)]; + case 8: + var e = t[1]; + return [8, e, u7(t[2], n)]; + case 9: + var i = t[2], x = t[1]; + return [9, x, i, u7(t[3], n)]; + case 10: + return [10, u7(t[1], n)]; + case 11: + return [11, u7(t[1], n)]; + case 12: + return [12, u7(t[1], n)]; + case 13: + return [13, u7(t[1], n)]; + default: + return [14, u7(t[1], n)]; + } + } + function At(t, n) { + if (typeof t == "number") + return n; + switch (t[0]) { + case 0: + return [0, At(t[1], n)]; + case 1: + return [1, At(t[1], n)]; + case 2: + var e = t[1]; + return [2, e, At(t[2], n)]; + case 3: + var i = t[1]; + return [3, i, At(t[2], n)]; + case 4: + var x = t[3], c = t[2], s = t[1]; + return [4, s, c, x, At(t[4], n)]; + case 5: + var p = t[3], y = t[2], T = t[1]; + return [5, T, y, p, At(t[4], n)]; + case 6: + var E = t[3], d = t[2], w = t[1]; + return [6, w, d, E, At(t[4], n)]; + case 7: + var G = t[3], A = t[2], S = t[1]; + return [7, S, A, G, At(t[4], n)]; + case 8: + var M = t[3], K = t[2], V = t[1]; + return [8, V, K, M, At(t[4], n)]; + case 9: + var f0 = t[1]; + return [9, f0, At(t[2], n)]; + case 10: + return [10, At(t[1], n)]; + case 11: + var m0 = t[1]; + return [11, m0, At(t[2], n)]; + case 12: + var k0 = t[1]; + return [12, k0, At(t[2], n)]; + case 13: + var g0 = t[2], e0 = t[1]; + return [13, e0, g0, At(t[3], n)]; + case 14: + var x0 = t[2], l = t[1]; + return [14, l, x0, At(t[3], n)]; + case 15: + return [15, At(t[1], n)]; + case 16: + return [16, At(t[1], n)]; + case 17: + var c0 = t[1]; + return [17, c0, At(t[2], n)]; + case 18: + var t0 = t[1]; + return [18, t0, At(t[2], n)]; + case 19: + return [19, At(t[1], n)]; + case 20: + var o0 = t[2], w0 = t[1]; + return [20, w0, o0, At(t[3], n)]; + case 21: + var _0 = t[1]; + return [21, _0, At(t[2], n)]; + case 22: + return [22, At(t[1], n)]; + case 23: + var E0 = t[1]; + return [23, E0, At(t[2], n)]; + default: + var U0 = t[2], b = t[1]; + return [24, b, U0, At(t[3], n)]; + } + } + function nN(t, n, e) { + return t[1] === n ? (t[1] = e, 1) : 0; + } + function ke(t) { + throw [0, q7, t]; + } + function Pu(t) { + throw [0, ZA, t]; + } + M7(0); + function gp(t) { + return 0 <= t ? t : -t | 0; + } + var jre = mH; + function Te(t, n) { + var e = un(t), i = un(n), x = Lt(e + i | 0); + return Ts(t, 0, x, 0, e), Ts(n, 0, x, e, i), x; + } + function Gre(t) { + return t ? fi0 : xi0; + } + function on(t, n) { + if (t) { + var e = t[1]; + return [0, e, on(t[2], n)]; + } + return n; + } + M70(0); + var Mre = zV(1), Pc = zV(2); + function Bre(t) { + function n(e) { + for (var i = e; ; ) { + if (i) { + var x = i[2], c = i[1]; + try { + p1(c); + } catch (y) { + if (y = Et(y), y[1] !== $V) + throw y; + var s = y; + } + var i = x; + continue; + } + return 0; + } + } + return n(B70(0)); + } + function vl(t, n) { + return zA(t, n, 0, un(n)); + } + function iz(t) { + return vl(Pc, t), KV(Pc, 10), p1(Pc); + } + var tN = [0, Bre]; + function fz(t) { + for (; ; ) { + var n = tN[1], e = [0, 1], i = 1 - nN(tN, n, function(x, c) { + return function(s) { + return nN(x, 1, 0) && u(t, 0), u(c, 0); + }; + }(e, n)); + if (!i) + return i; + } + } + function uN(t) { + return u(tN[1], 0); + } + WA(r(sV), uN), K70(0) && fz(function(t) { + return l70(t); + }); + function xz(t) { + return 25 < (t + Y3 | 0) >>> 0 ? t : t + hU | 0; + } + var oz = J70(0)[1], ll = (4 * z70(0) | 0) - 1 | 0; + M7(0); + var qre = V70(0); + function Dc(t) { + for (var n = 0, e = t; ; ) { + if (e) { + var n = n + 1 | 0, e = e[2]; + continue; + } + return n; + } + } + function bl(t) { + return t ? t[1] : ke(mi0); + } + function az(t) { + return t ? t[2] : ke(pi0); + } + function Lc(t, n) { + for (var e = t, i = n; ; ) { + if (e) { + var x = [0, e[1], i], e = e[2], i = x; + continue; + } + return i; + } + } + function ye(t) { + return Lc(t, 0); + } + function pl(t) { + if (t) { + var n = t[1]; + return on(n, pl(t[2])); + } + return 0; + } + function d1(t, n) { + if (n) { + var e = n[2], i = u(t, n[1]); + return [0, i, d1(t, e)]; + } + return 0; + } + function Fp(t, n) { + for (var e = 0, i = n; ; ) { + if (i) { + var x = i[2], e = [0, u(t, i[1]), e], i = x; + continue; + } + return e; + } + } + function Du(t, n) { + for (var e = n; ; ) { + if (e) { + var i = e[2]; + u(t, e[1]); + var e = i; + continue; + } + return 0; + } + } + function le(t, n, e) { + for (var i = n, x = e; ; ) { + if (x) { + var c = x[2], i = o(t, i, x[1]), x = c; + continue; + } + return i; + } + } + function iN(t, n, e) { + if (n) { + var i = n[1]; + return o(t, i, iN(t, n[2], e)); + } + return e; + } + function cz(t, n, e) { + for (var i = n, x = e; ; ) { + if (i) { + if (x) { + var c = x[2], s = i[2]; + o(t, i[1], x[1]); + var i = s, x = c; + continue; + } + } else if (!x) + return 0; + return Pu(bi0); + } + } + function fN(t, n) { + for (var e = n; ; ) { + if (e) { + var i = e[2], x = LV(e[1], t) === 0 ? 1 : 0; + if (x) + return x; + var e = i; + continue; + } + return 0; + } + } + function Ure(t, n) { + for (var e = n; ; ) { + if (e) { + var i = e[1], x = e[2], c = i[2]; + if (LV(i[1], t) === 0) + return c; + var e = x; + continue; + } + throw Jt; + } + } + function ml(t) { + var n = 0; + return function(e) { + for (var i = n, x = e; ; ) { + if (x) { + var c = x[2], s = x[1]; + if (u(t, s)) { + var i = [0, s, i], x = c; + continue; + } + var x = c; + continue; + } + return ye(i); + } + }; + } + function k1(t, n) { + var e = Lt(t); + return v70(e, 0, t, n), e; + } + function sz(t) { + var n = b7(t), e = Lt(n); + return Fs(t, 0, e, 0, n), e; + } + function vz(t, n, e) { + if (0 <= n && 0 <= e && !((b7(t) - e | 0) < n)) { + var i = Lt(e); + return Fs(t, n, i, 0, e), i; + } + return Pu(hi0); + } + function qv(t, n, e) { + return vz(t, n, e); + } + function lz(t, n, e, i, x) { + return 0 <= x && 0 <= n && !((b7(t) - x | 0) < n) && 0 <= i && !((b7(e) - x | 0) < i) ? Fs(t, n, e, i, x) : Pu(yi0); + } + function cs(t, n, e, i, x) { + return 0 <= x && 0 <= n && !((un(t) - x | 0) < n) && 0 <= i && !((b7(e) - x | 0) < i) ? Ts(t, n, e, i, x) : Pu(_i0); + } + function Tp(t, n) { + return k1(t, n); + } + function m7(t, n, e) { + return vz(t, n, e); + } + var bz = Ee; + function pz(t, n) { + var e = n.length - 1 - 1 | 0, i = 0; + if (!(e < 0)) + for (var x = i; ; ) { + u(t, n[1 + x]); + var c = x + 1 | 0; + if (e !== x) { + var x = c; + continue; + } + break; + } + return 0; + } + function Op(t, n) { + var e = n.length - 1; + if (e === 0) + return [0]; + var i = Gv(e, u(t, n[1])), x = e - 1 | 0, c = 1; + if (!(x < 1)) + for (var s = c; ; ) { + i[1 + s] = u(t, n[1 + s]); + var p = s + 1 | 0; + if (x !== s) { + var s = p; + continue; + } + break; + } + return i; + } + function _l(t) { + if (t) + for (var n = 0, e = t, i = t[2], x = t[1]; ; ) { + if (e) { + var n = n + 1 | 0, e = e[2]; + continue; + } + for (var c = Gv(n, x), s = 1, p = i; ; ) { + if (p) { + var y = p[2]; + c[1 + s] = p[1]; + var s = s + 1 | 0, p = y; + continue; + } + return c; + } + } + return [0]; + } + M7(0); + function xN(t) { + function n(v0) { + return v0 ? v0[5] : 0; + } + function e(v0, P, L, Q) { + var i0 = n(v0), l0 = n(Q), S0 = l0 <= i0 ? i0 + 1 | 0 : l0 + 1 | 0; + return [0, v0, P, L, Q, S0]; + } + function i(v0, P) { + return [0, 0, v0, P, 0, 1]; + } + function x(v0, P, L, Q) { + var i0 = v0 ? v0[5] : 0, l0 = Q ? Q[5] : 0; + if ((l0 + 2 | 0) < i0) { + if (v0) { + var S0 = v0[4], T0 = v0[3], rr = v0[2], L0 = v0[1], B = n(S0); + if (B <= n(L0)) + return e(L0, rr, T0, e(S0, P, L, Q)); + if (S0) { + var Z = S0[3], p0 = S0[2], b0 = S0[1], O0 = e(S0[4], P, L, Q); + return e(e(L0, rr, T0, b0), p0, Z, O0); + } + return Pu(Fi0); + } + return Pu(Ti0); + } + if ((i0 + 2 | 0) < l0) { + if (Q) { + var M0 = Q[4], er = Q[3], yr = Q[2], vr = Q[1], $0 = n(vr); + if ($0 <= n(M0)) + return e(e(v0, P, L, vr), yr, er, M0); + if (vr) { + var Er = vr[3], Mr = vr[2], Br = vr[1], qr = e(vr[4], yr, er, M0); + return e(e(v0, P, L, Br), Mr, Er, qr); + } + return Pu(Oi0); + } + return Pu(Ii0); + } + var jr = l0 <= i0 ? i0 + 1 | 0 : l0 + 1 | 0; + return [0, v0, P, L, Q, jr]; + } + var c = 0; + function s(v0) { + return v0 ? 0 : 1; + } + function p(v0, P, L) { + if (L) { + var Q = L[4], i0 = L[3], l0 = L[2], S0 = L[1], T0 = L[5], rr = o(t[1], v0, l0); + if (rr === 0) + return i0 === P ? L : [0, S0, v0, P, Q, T0]; + if (0 <= rr) { + var L0 = p(v0, P, Q); + return Q === L0 ? L : x(S0, l0, i0, L0); + } + var B = p(v0, P, S0); + return S0 === B ? L : x(B, l0, i0, Q); + } + return [0, 0, v0, P, 0, 1]; + } + function y(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[4], i0 = L[3], l0 = L[1], S0 = o(t[1], v0, L[2]); + if (S0 === 0) + return i0; + var T0 = 0 <= S0 ? Q : l0, L = T0; + continue; + } + throw Jt; + } + } + function T(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[2], i0 = L[4], l0 = L[3], S0 = L[1]; + if (u(v0, Q)) + for (var T0 = Q, rr = l0, L0 = S0; ; ) { + if (L0) { + var B = L0[2], Z = L0[4], p0 = L0[3], b0 = L0[1]; + if (u(v0, B)) { + var T0 = B, rr = p0, L0 = b0; + continue; + } + var L0 = Z; + continue; + } + return [0, T0, rr]; + } + var L = i0; + continue; + } + throw Jt; + } + } + function E(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[2], i0 = L[4], l0 = L[3], S0 = L[1]; + if (u(v0, Q)) + for (var T0 = Q, rr = l0, L0 = S0; ; ) { + if (L0) { + var B = L0[2], Z = L0[4], p0 = L0[3], b0 = L0[1]; + if (u(v0, B)) { + var T0 = B, rr = p0, L0 = b0; + continue; + } + var L0 = Z; + continue; + } + return [0, [0, T0, rr]]; + } + var L = i0; + continue; + } + return 0; + } + } + function d(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[2], i0 = L[4], l0 = L[3], S0 = L[1]; + if (u(v0, Q)) + for (var T0 = Q, rr = l0, L0 = i0; ; ) { + if (L0) { + var B = L0[2], Z = L0[4], p0 = L0[3], b0 = L0[1]; + if (u(v0, B)) { + var T0 = B, rr = p0, L0 = Z; + continue; + } + var L0 = b0; + continue; + } + return [0, T0, rr]; + } + var L = S0; + continue; + } + throw Jt; + } + } + function w(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[2], i0 = L[4], l0 = L[3], S0 = L[1]; + if (u(v0, Q)) + for (var T0 = Q, rr = l0, L0 = i0; ; ) { + if (L0) { + var B = L0[2], Z = L0[4], p0 = L0[3], b0 = L0[1]; + if (u(v0, B)) { + var T0 = B, rr = p0, L0 = Z; + continue; + } + var L0 = b0; + continue; + } + return [0, [0, T0, rr]]; + } + var L = S0; + continue; + } + return 0; + } + } + function G(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[4], i0 = L[3], l0 = L[1], S0 = o(t[1], v0, L[2]); + if (S0 === 0) + return [0, i0]; + var T0 = 0 <= S0 ? Q : l0, L = T0; + continue; + } + return 0; + } + } + function A(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[4], i0 = L[1], l0 = o(t[1], v0, L[2]), S0 = l0 === 0 ? 1 : 0; + if (S0) + return S0; + var T0 = 0 <= l0 ? Q : i0, L = T0; + continue; + } + return 0; + } + } + function S(v0) { + for (var P = v0; ; ) { + if (P) { + var L = P[1]; + if (L) { + var P = L; + continue; + } + return [0, P[2], P[3]]; + } + throw Jt; + } + } + function M(v0) { + for (var P = v0; ; ) { + if (P) { + var L = P[1]; + if (L) { + var P = L; + continue; + } + return [0, [0, P[2], P[3]]]; + } + return 0; + } + } + function K(v0) { + for (var P = v0; ; ) { + if (P) { + if (P[4]) { + var P = P[4]; + continue; + } + return [0, P[2], P[3]]; + } + throw Jt; + } + } + function V(v0) { + for (var P = v0; ; ) { + if (P) { + if (P[4]) { + var P = P[4]; + continue; + } + return [0, [0, P[2], P[3]]]; + } + return 0; + } + } + function f0(v0) { + if (v0) { + var P = v0[1]; + if (P) { + var L = v0[4], Q = v0[3], i0 = v0[2]; + return x(f0(P), i0, Q, L); + } + return v0[4]; + } + return Pu(wi0); + } + function m0(v0, P) { + if (v0) { + if (P) { + var L = S(P), Q = L[2], i0 = L[1]; + return x(v0, i0, Q, f0(P)); + } + return v0; + } + return P; + } + function k0(v0, P) { + if (P) { + var L = P[4], Q = P[3], i0 = P[2], l0 = P[1], S0 = o(t[1], v0, i0); + if (S0 === 0) + return m0(l0, L); + if (0 <= S0) { + var T0 = k0(v0, L); + return L === T0 ? P : x(l0, i0, Q, T0); + } + var rr = k0(v0, l0); + return l0 === rr ? P : x(rr, i0, Q, L); + } + return 0; + } + function g0(v0, P, L) { + if (L) { + var Q = L[4], i0 = L[3], l0 = L[2], S0 = L[1], T0 = L[5], rr = o(t[1], v0, l0); + if (rr === 0) { + var L0 = u(P, [0, i0]); + if (L0) { + var B = L0[1]; + return i0 === B ? L : [0, S0, v0, B, Q, T0]; + } + return m0(S0, Q); + } + if (0 <= rr) { + var Z = g0(v0, P, Q); + return Q === Z ? L : x(S0, l0, i0, Z); + } + var p0 = g0(v0, P, S0); + return S0 === p0 ? L : x(p0, l0, i0, Q); + } + var b0 = u(P, 0); + return b0 ? [0, 0, v0, b0[1], 0, 1] : 0; + } + function e0(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[4], i0 = L[3], l0 = L[2]; + e0(v0, L[1]), o(v0, l0, i0); + var L = Q; + continue; + } + return 0; + } + } + function x0(v0, P) { + if (P) { + var L = P[5], Q = P[4], i0 = P[3], l0 = P[2], S0 = x0(v0, P[1]), T0 = u(v0, i0); + return [0, S0, l0, T0, x0(v0, Q), L]; + } + return 0; + } + function l(v0, P) { + if (P) { + var L = P[2], Q = P[5], i0 = P[4], l0 = P[3], S0 = l(v0, P[1]), T0 = o(v0, L, l0); + return [0, S0, L, T0, l(v0, i0), Q]; + } + return 0; + } + function c0(v0, P, L) { + for (var Q = P, i0 = L; ; ) { + if (Q) { + var l0 = Q[4], S0 = Q[3], T0 = Q[2], rr = ur(v0, T0, S0, c0(v0, Q[1], i0)), Q = l0, i0 = rr; + continue; + } + return i0; + } + } + function t0(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[4], i0 = L[1], l0 = o(v0, L[2], L[3]); + if (l0) { + var S0 = t0(v0, i0); + if (S0) { + var L = Q; + continue; + } + var T0 = S0; + } else + var T0 = l0; + return T0; + } + return 1; + } + } + function o0(v0, P) { + for (var L = P; ; ) { + if (L) { + var Q = L[4], i0 = L[1], l0 = o(v0, L[2], L[3]); + if (l0) + var S0 = l0; + else { + var T0 = o0(v0, i0); + if (!T0) { + var L = Q; + continue; + } + var S0 = T0; + } + return S0; + } + return 0; + } + } + function w0(v0, P, L) { + if (L) { + var Q = L[4], i0 = L[3], l0 = L[2]; + return x(w0(v0, P, L[1]), l0, i0, Q); + } + return i(v0, P); + } + function _0(v0, P, L) { + if (L) { + var Q = L[3], i0 = L[2], l0 = L[1]; + return x(l0, i0, Q, _0(v0, P, L[4])); + } + return i(v0, P); + } + function E0(v0, P, L, Q) { + if (v0) { + if (Q) { + var i0 = Q[5], l0 = v0[5], S0 = Q[4], T0 = Q[3], rr = Q[2], L0 = Q[1], B = v0[4], Z = v0[3], p0 = v0[2], b0 = v0[1]; + return (i0 + 2 | 0) < l0 ? x(b0, p0, Z, E0(B, P, L, Q)) : (l0 + 2 | 0) < i0 ? x(E0(v0, P, L, L0), rr, T0, S0) : e(v0, P, L, Q); + } + return _0(P, L, v0); + } + return w0(P, L, Q); + } + function U0(v0, P) { + if (v0) { + if (P) { + var L = S(P), Q = L[2], i0 = L[1]; + return E0(v0, i0, Q, f0(P)); + } + return v0; + } + return P; + } + function b(v0, P, L, Q) { + return L ? E0(v0, P, L[1], Q) : U0(v0, Q); + } + function R0(v0, P) { + if (P) { + var L = P[4], Q = P[3], i0 = P[2], l0 = P[1], S0 = o(t[1], v0, i0); + if (S0 === 0) + return [0, l0, [0, Q], L]; + if (0 <= S0) { + var T0 = R0(v0, L), rr = T0[3], L0 = T0[2]; + return [0, E0(l0, i0, Q, T0[1]), L0, rr]; + } + var B = R0(v0, l0), Z = B[2], p0 = B[1]; + return [0, p0, Z, E0(B[3], i0, Q, L)]; + } + return Ei0; + } + function X(v0, P, L) { + if (P) { + var Q = P[2], i0 = P[5], l0 = P[4], S0 = P[3], T0 = P[1]; + if (n(L) <= i0) { + var rr = R0(Q, L), L0 = rr[2], B = rr[1], Z = X(v0, l0, rr[3]), p0 = ur(v0, Q, [0, S0], L0); + return b(X(v0, T0, B), Q, p0, Z); + } + } else if (!L) + return 0; + if (L) { + var b0 = L[2], O0 = L[4], M0 = L[3], er = L[1], yr = R0(b0, P), vr = yr[2], $0 = yr[1], Er = X(v0, yr[3], O0), Mr = ur(v0, b0, vr, [0, M0]); + return b(X(v0, $0, er), b0, Mr, Er); + } + throw [0, Sn, Si0]; + } + function s0(v0, P, L) { + if (P) { + if (L) { + var Q = L[3], i0 = L[2], l0 = P[3], S0 = P[2], T0 = L[4], rr = L[1], L0 = P[4], B = P[1]; + if (L[5] <= P[5]) { + var Z = R0(S0, L), p0 = Z[2], b0 = Z[3], O0 = s0(v0, B, Z[1]), M0 = s0(v0, L0, b0); + return p0 ? b(O0, S0, ur(v0, S0, l0, p0[1]), M0) : E0(O0, S0, l0, M0); + } + var er = R0(i0, P), yr = er[2], vr = er[3], $0 = s0(v0, er[1], rr), Er = s0(v0, vr, T0); + return yr ? b($0, i0, ur(v0, i0, yr[1], Q), Er) : E0($0, i0, Q, Er); + } + var Mr = P; + } else + var Mr = L; + return Mr; + } + function hr(v0, P) { + if (P) { + var L = P[4], Q = P[3], i0 = P[2], l0 = P[1], S0 = hr(v0, l0), T0 = o(v0, i0, Q), rr = hr(v0, L); + return T0 ? l0 === S0 && L === rr ? P : E0(S0, i0, Q, rr) : U0(S0, rr); + } + return 0; + } + function Ar(v0, P) { + if (P) { + var L = P[2], Q = P[4], i0 = P[3], l0 = Ar(v0, P[1]), S0 = o(v0, L, i0), T0 = Ar(v0, Q); + return S0 ? E0(l0, L, S0[1], T0) : U0(l0, T0); + } + return 0; + } + function or(v0, P) { + if (P) { + var L = P[3], Q = P[2], i0 = P[4], l0 = or(v0, P[1]), S0 = l0[2], T0 = l0[1], rr = o(v0, Q, L), L0 = or(v0, i0), B = L0[2], Z = L0[1]; + if (rr) { + var p0 = U0(S0, B); + return [0, E0(T0, Q, L, Z), p0]; + } + var b0 = E0(S0, Q, L, B); + return [0, U0(T0, Z), b0]; + } + return gi0; + } + function W0(v0, P) { + for (var L = v0, Q = P; ; ) { + if (L) { + var i0 = [0, L[2], L[3], L[4], Q], L = L[1], Q = i0; + continue; + } + return Q; + } + } + function Lr(v0, P, L) { + for (var Q = W0(L, 0), i0 = W0(P, 0), l0 = Q; ; ) { + if (i0) { + if (l0) { + var S0 = l0[4], T0 = l0[3], rr = l0[2], L0 = i0[4], B = i0[3], Z = i0[2], p0 = o(t[1], i0[1], l0[1]); + if (p0 === 0) { + var b0 = o(v0, Z, rr); + if (b0 === 0) { + var O0 = W0(T0, S0), i0 = W0(B, L0), l0 = O0; + continue; + } + return b0; + } + return p0; + } + return 1; + } + return l0 ? -1 : 0; + } + } + function Tr(v0, P, L) { + for (var Q = W0(L, 0), i0 = W0(P, 0), l0 = Q; ; ) { + if (i0) { + if (l0) { + var S0 = l0[4], T0 = l0[3], rr = l0[2], L0 = i0[4], B = i0[3], Z = i0[2], p0 = o(t[1], i0[1], l0[1]) === 0 ? 1 : 0; + if (p0) { + var b0 = o(v0, Z, rr); + if (b0) { + var O0 = W0(T0, S0), i0 = W0(B, L0), l0 = O0; + continue; + } + var M0 = b0; + } else + var M0 = p0; + return M0; + } + return 0; + } + return l0 ? 0 : 1; + } + } + function Hr(v0) { + if (v0) { + var P = v0[1], L = Hr(v0[4]); + return (Hr(P) + 1 | 0) + L | 0; + } + return 0; + } + function Or(v0, P) { + for (var L = v0, Q = P; ; ) { + if (Q) { + var i0 = Q[3], l0 = Q[2], S0 = Q[1], L = [0, [0, l0, i0], Or(L, Q[4])], Q = S0; + continue; + } + return L; + } + } + function fr(v0) { + return Or(0, v0); + } + function Rr(v0, P) { + for (var L = P, Q = v0; ; ) { + var i0 = u(Q, 0); + if (i0) { + var l0 = i0[1], S0 = i0[2], L = p(l0[1], l0[2], L), Q = S0; + continue; + } + return L; + } + } + function Wr(v0) { + return Rr(v0, c); + } + function Jr(v0, P) { + if (v0) { + var L = v0[2], Q = v0[1], i0 = W0(v0[3], v0[4]); + return [0, [0, Q, L], function(l0) { + return Jr(i0, l0); + }]; + } + return 0; + } + function ar(v0) { + var P = W0(v0, 0); + return function(L) { + return Jr(P, L); + }; + } + function _r(v0, P) { + for (var L = v0, Q = P; ; ) { + if (L) { + var i0 = [0, L[2], L[3], L[1], Q], L = L[4], Q = i0; + continue; + } + return Q; + } + } + function Ir(v0, P) { + if (v0) { + var L = v0[2], Q = v0[1], i0 = _r(v0[3], v0[4]); + return [0, [0, Q, L], function(l0) { + return Ir(i0, l0); + }]; + } + return 0; + } + function fe(v0) { + var P = _r(v0, 0); + return function(L) { + return Ir(P, L); + }; + } + return [0, c, s, A, p, g0, i, k0, X, s0, Lr, Tr, e0, c0, t0, o0, hr, Ar, or, Hr, fr, S, M, K, V, S, M, R0, y, G, T, E, d, w, x0, l, ar, fe, function(v0, P) { + for (var L = P, Q = 0; ; ) { + if (L) { + var i0 = L[4], l0 = L[3], S0 = L[2], T0 = L[1], rr = o(t[1], S0, v0); + if (rr !== 0) { + if (0 <= rr) { + var L = T0, Q = [0, S0, l0, i0, Q]; + continue; + } + var L = i0; + continue; + } + var L0 = [0, S0, l0, i0, Q]; + } else + var L0 = Q; + return function(B) { + return Jr(L0, B); + }; + } + }, Rr, Wr]; + } + M7(0); + function yl(t) { + return [0, 0, 0]; + } + function hl(t) { + return t[1] = 0, t[2] = 0, 0; + } + function w1(t, n) { + return n[1] = [0, t, n[1]], n[2] = n[2] + 1 | 0, 0; + } + function Uv(t) { + var n = t[1]; + if (n) { + var e = n[1]; + return t[1] = n[2], t[2] = t[2] - 1 | 0, [0, e]; + } + return 0; + } + function Hv(t) { + var n = t[1]; + return n ? [0, n[1]] : 0; + } + var Hre = [wt, Ai0, M7(0)]; + function mz(t) { + return [0, 0, 0, 0]; + } + function oN(t) { + return t[1] = 0, t[2] = 0, t[3] = 0, 0; + } + function aN(t, n) { + var e = [0, t, 0], i = n[3]; + return i ? (n[1] = n[1] + 1 | 0, i[2] = e, n[3] = e, 0) : (n[1] = 1, n[2] = e, n[3] = e, 0); + } + var Xre = [wt, Ni0, M7(0)]; + function Yre(t) { + throw Xre; + } + function Vre(t) { + var n = t[1]; + t[1] = Yre; + try { + var e = u(n, 0); + return U70(t, e), e; + } catch (i) { + throw i = Et(i), t[1] = function(x) { + throw i; + }, i; + } + } + function $n(t) { + var n = 1 <= t ? t : 1, e = ll < n ? ll : n, i = Lt(e); + return [0, i, 0, e, i]; + } + function Mt(t) { + return qv(t[1], 0, t[2]); + } + function cN(t, n) { + for (var e = t[2], i = [0, t[3]]; ; ) { + if (i[1] < (e + n | 0)) { + i[1] = 2 * i[1] | 0; + continue; + } + ll < i[1] && ((e + n | 0) <= ll ? i[1] = ll : ke(Pi0)); + var x = Lt(i[1]); + if (lz(t[1], 0, x, 0, t[2]), t[1] = x, t[3] = i[1], (t[2] + n | 0) <= t[3]) { + if ((e + n | 0) <= t[3]) + return 0; + throw [0, Sn, Li0]; + } + throw [0, Sn, Di0]; + } + } + function qi(t, n) { + var e = t[2]; + return t[3] <= e && cN(t, 1), Jn(t[1], e, n), t[2] = e + 1 | 0, 0; + } + function _z(t, n, e, i) { + var x = e < 0 ? 1 : 0; + if (x) + var s = x; + else + var c = i < 0 ? 1 : 0, s = c || ((un(n) - i | 0) < e ? 1 : 0); + s && Pu(Ci0); + var p = t[2] + i | 0; + return t[3] < p && cN(t, i), Ts(n, e, t[1], t[2], i), t[2] = p, 0; + } + function sN(t, n, e, i) { + return _z(t, n, e, i); + } + function hn(t, n) { + var e = un(n), i = t[2] + e | 0; + return t[3] < i && cN(t, e), Ts(n, 0, t[1], t[2], e), t[2] = i, 0; + } + function vN(t) { + return t[2] === 5 ? 12 : -6; + } + function yz(t) { + return [0, 0, Lt(t)]; + } + function hz(t, n) { + var e = b7(t[2]), i = t[1] + n | 0, x = e < i ? 1 : 0; + if (x) { + var c = e * 2 | 0, s = i <= c ? c : i, p = Lt(s); + lz(t[2], 0, p, 0, e), t[2] = p; + var y = 0; + } else + var y = x; + return y; + } + function Xv(t, n) { + return hz(t, 1), b1(t[2], t[1], n), t[1] = t[1] + 1 | 0, 0; + } + function Lu(t, n) { + var e = un(n); + return hz(t, e), cs(n, 0, t[2], t[1], e), t[1] = t[1] + e | 0, 0; + } + function dz(t) { + return qv(t[2], 0, t[1]); + } + function kz(t) { + if (typeof t == "number") + switch (t) { + case 0: + return Gx0; + case 1: + return Mx0; + case 2: + return Bx0; + case 3: + return qx0; + case 4: + return Ux0; + case 5: + return Hx0; + default: + return Xx0; + } + else + switch (t[0]) { + case 0: + return t[1]; + case 1: + return t[1]; + default: + return Te(Yx0, Tp(1, t[1])); + } + } + function lN(t, n) { + for (var e = n; ; ) { + if (typeof e == "number") + return 0; + switch (e[0]) { + case 0: + var i = e[1]; + Lu(t, ji0); + var e = i; + continue; + case 1: + var x = e[1]; + Lu(t, Gi0); + var e = x; + continue; + case 2: + var c = e[1]; + Lu(t, Mi0); + var e = c; + continue; + case 3: + var s = e[1]; + Lu(t, Bi0); + var e = s; + continue; + case 4: + var p = e[1]; + Lu(t, qi0); + var e = p; + continue; + case 5: + var y = e[1]; + Lu(t, Ui0); + var e = y; + continue; + case 6: + var T = e[1]; + Lu(t, Hi0); + var e = T; + continue; + case 7: + var E = e[1]; + Lu(t, Xi0); + var e = E; + continue; + case 8: + var d = e[2], w = e[1]; + Lu(t, Yi0), lN(t, w), Lu(t, Vi0); + var e = d; + continue; + case 9: + var G = e[3], A = e[1]; + Lu(t, zi0), lN(t, A), Lu(t, Ki0); + var e = G; + continue; + case 10: + var S = e[1]; + Lu(t, Wi0); + var e = S; + continue; + case 11: + var M = e[1]; + Lu(t, Ji0); + var e = M; + continue; + case 12: + var K = e[1]; + Lu(t, $i0); + var e = K; + continue; + case 13: + var V = e[1]; + Lu(t, Zi0); + var e = V; + continue; + default: + var f0 = e[1]; + Lu(t, Qi0); + var e = f0; + continue; + } + } + } + function uu(t) { + if (typeof t == "number") + return 0; + switch (t[0]) { + case 0: + return [0, uu(t[1])]; + case 1: + return [1, uu(t[1])]; + case 2: + return [2, uu(t[1])]; + case 3: + return [3, uu(t[1])]; + case 4: + return [4, uu(t[1])]; + case 5: + return [5, uu(t[1])]; + case 6: + return [6, uu(t[1])]; + case 7: + return [7, uu(t[1])]; + case 8: + var n = t[1]; + return [8, n, uu(t[2])]; + case 9: + var e = t[2], i = t[1]; + return [9, e, i, uu(t[3])]; + case 10: + return [10, uu(t[1])]; + case 11: + return [11, uu(t[1])]; + case 12: + return [12, uu(t[1])]; + case 13: + return [13, uu(t[1])]; + default: + return [14, uu(t[1])]; + } + } + function Ru(t) { + if (typeof t == "number") { + var n = function(sr) { + return 0; + }, e = function(sr) { + return 0; + }, i = function(sr) { + return 0; + }; + return [0, function(sr) { + return 0; + }, i, e, n]; + } else + switch (t[0]) { + case 0: + var x = Ru(t[1]), c = x[4], s = x[3], p = x[2], y = x[1], T = function(sr) { + return u(p, 0), 0; + }; + return [0, function(sr) { + return u(y, 0), 0; + }, T, s, c]; + case 1: + var E = Ru(t[1]), d = E[4], w = E[3], G = E[2], A = E[1], S = function(sr) { + return u(G, 0), 0; + }; + return [0, function(sr) { + return u(A, 0), 0; + }, S, w, d]; + case 2: + var M = Ru(t[1]), K = M[4], V = M[3], f0 = M[2], m0 = M[1], k0 = function(sr) { + return u(f0, 0), 0; + }; + return [0, function(sr) { + return u(m0, 0), 0; + }, k0, V, K]; + case 3: + var g0 = Ru(t[1]), e0 = g0[4], x0 = g0[3], l = g0[2], c0 = g0[1], t0 = function(sr) { + return u(l, 0), 0; + }; + return [0, function(sr) { + return u(c0, 0), 0; + }, t0, x0, e0]; + case 4: + var o0 = Ru(t[1]), w0 = o0[4], _0 = o0[3], E0 = o0[2], U0 = o0[1], b = function(sr) { + return u(E0, 0), 0; + }; + return [0, function(sr) { + return u(U0, 0), 0; + }, b, _0, w0]; + case 5: + var R0 = Ru(t[1]), X = R0[4], s0 = R0[3], hr = R0[2], Ar = R0[1], or = function(sr) { + return u(hr, 0), 0; + }; + return [0, function(sr) { + return u(Ar, 0), 0; + }, or, s0, X]; + case 6: + var W0 = Ru(t[1]), Lr = W0[4], Tr = W0[3], Hr = W0[2], Or = W0[1], fr = function(sr) { + return u(Hr, 0), 0; + }; + return [0, function(sr) { + return u(Or, 0), 0; + }, fr, Tr, Lr]; + case 7: + var Rr = Ru(t[1]), Wr = Rr[4], Jr = Rr[3], ar = Rr[2], _r = Rr[1], Ir = function(sr) { + return u(ar, 0), 0; + }; + return [0, function(sr) { + return u(_r, 0), 0; + }, Ir, Jr, Wr]; + case 8: + var fe = Ru(t[2]), v0 = fe[4], P = fe[3], L = fe[2], Q = fe[1], i0 = function(sr) { + return u(L, 0), 0; + }; + return [0, function(sr) { + return u(Q, 0), 0; + }, i0, P, v0]; + case 9: + var l0 = t[2], S0 = t[1], T0 = Ru(t[3]), rr = T0[4], L0 = T0[3], B = T0[2], Z = T0[1], p0 = Ru(bu(uu(S0), l0)), b0 = p0[4], O0 = p0[3], M0 = p0[2], er = p0[1], yr = function(sr) { + return u(b0, 0), u(rr, 0), 0; + }, vr = function(sr) { + return u(L0, 0), u(O0, 0), 0; + }, $0 = function(sr) { + return u(M0, 0), u(B, 0), 0; + }; + return [0, function(sr) { + return u(Z, 0), u(er, 0), 0; + }, $0, vr, yr]; + case 10: + var Er = Ru(t[1]), Mr = Er[4], Br = Er[3], qr = Er[2], jr = Er[1], $r = function(sr) { + return u(qr, 0), 0; + }; + return [0, function(sr) { + return u(jr, 0), 0; + }, $r, Br, Mr]; + case 11: + var ne = Ru(t[1]), Qr = ne[4], be = ne[3], ae = ne[2], pe = ne[1], oe = function(sr) { + return u(ae, 0), 0; + }; + return [0, function(sr) { + return u(pe, 0), 0; + }, oe, be, Qr]; + case 12: + var ce = Ru(t[1]), ge = ce[4], q0 = ce[3], Fr = ce[2], _ = ce[1], k = function(sr) { + return u(Fr, 0), 0; + }; + return [0, function(sr) { + return u(_, 0), 0; + }, k, q0, ge]; + case 13: + var I = Ru(t[1]), U = I[4], Y = I[3], y0 = I[2], P0 = I[1], I0 = function(sr) { + return u(U, 0), 0; + }, D = function(sr) { + return u(Y, 0), 0; + }, u0 = function(sr) { + return u(y0, 0), 0; + }; + return [0, function(sr) { + return u(P0, 0), 0; + }, u0, D, I0]; + default: + var X0 = Ru(t[1]), J0 = X0[4], ir = X0[3], Q0 = X0[2], F0 = X0[1], Sr = function(sr) { + return u(J0, 0), 0; + }, mr = function(sr) { + return u(ir, 0), 0; + }, Cr = function(sr) { + return u(Q0, 0), 0; + }; + return [0, function(sr) { + return u(F0, 0), 0; + }, Cr, mr, Sr]; + } + } + function bu(t, n) { + var e = 0; + if (typeof t == "number") { + if (typeof n == "number") + return 0; + switch (n[0]) { + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + case 8: + e = 5; + break; + case 9: + e = 6; + break; + default: + throw [0, Sn, rf0]; + } + } else + switch (t[0]) { + case 0: + var i = 0, x = t[1]; + if (typeof n != "number") + switch (n[0]) { + case 0: + return [0, bu(x, n[1])]; + case 8: + e = 5, i = 1; + break; + case 9: + e = 6, i = 1; + break; + case 10: + i = 1; + break; + case 11: + e = 1, i = 1; + break; + case 12: + e = 2, i = 1; + break; + case 13: + e = 3, i = 1; + break; + case 14: + e = 4, i = 1; + break; + } + i || (e = 7); + break; + case 1: + var c = 0, s = t[1]; + if (typeof n != "number") + switch (n[0]) { + case 1: + return [1, bu(s, n[1])]; + case 8: + e = 5, c = 1; + break; + case 9: + e = 6, c = 1; + break; + case 10: + c = 1; + break; + case 11: + e = 1, c = 1; + break; + case 12: + e = 2, c = 1; + break; + case 13: + e = 3, c = 1; + break; + case 14: + e = 4, c = 1; + break; + } + c || (e = 7); + break; + case 2: + var p = 0, y = t[1]; + if (typeof n == "number") + p = 1; + else + switch (n[0]) { + case 2: + return [2, bu(y, n[1])]; + case 8: + e = 5; + break; + case 9: + e = 6; + break; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + p = 1; + } + p && (e = 7); + break; + case 3: + var T = 0, E = t[1]; + if (typeof n == "number") + T = 1; + else + switch (n[0]) { + case 3: + return [3, bu(E, n[1])]; + case 8: + e = 5; + break; + case 9: + e = 6; + break; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + T = 1; + } + T && (e = 7); + break; + case 4: + var d = 0, w = t[1]; + if (typeof n == "number") + d = 1; + else + switch (n[0]) { + case 4: + return [4, bu(w, n[1])]; + case 8: + e = 5; + break; + case 9: + e = 6; + break; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + d = 1; + } + d && (e = 7); + break; + case 5: + var G = 0, A = t[1]; + if (typeof n == "number") + G = 1; + else + switch (n[0]) { + case 5: + return [5, bu(A, n[1])]; + case 8: + e = 5; + break; + case 9: + e = 6; + break; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + G = 1; + } + G && (e = 7); + break; + case 6: + var S = 0, M = t[1]; + if (typeof n == "number") + S = 1; + else + switch (n[0]) { + case 6: + return [6, bu(M, n[1])]; + case 8: + e = 5; + break; + case 9: + e = 6; + break; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + S = 1; + } + S && (e = 7); + break; + case 7: + var K = 0, V = t[1]; + if (typeof n == "number") + K = 1; + else + switch (n[0]) { + case 7: + return [7, bu(V, n[1])]; + case 8: + e = 5; + break; + case 9: + e = 6; + break; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + K = 1; + } + K && (e = 7); + break; + case 8: + var f0 = 0, m0 = t[2], k0 = t[1]; + if (typeof n == "number") + f0 = 1; + else + switch (n[0]) { + case 8: + var g0 = n[1], e0 = bu(m0, n[2]); + return [8, bu(k0, g0), e0]; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + f0 = 1; + } + if (f0) + throw [0, Sn, sf0]; + break; + case 9: + var x0 = 0, l = t[3], c0 = t[2], t0 = t[1]; + if (typeof n == "number") + x0 = 1; + else + switch (n[0]) { + case 8: + e = 5; + break; + case 9: + var o0 = n[3], w0 = n[2], _0 = n[1], E0 = Ru(bu(uu(c0), _0)), U0 = E0[4]; + return u(E0[2], 0), u(U0, 0), [9, t0, w0, bu(l, o0)]; + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + e = 4; + break; + default: + x0 = 1; + } + if (x0) + throw [0, Sn, lf0]; + break; + case 10: + var b = t[1]; + if (typeof n != "number" && n[0] === 10) + return [10, bu(b, n[1])]; + throw [0, Sn, ef0]; + case 11: + var R0 = 0, X = t[1]; + if (typeof n == "number") + R0 = 1; + else + switch (n[0]) { + case 10: + break; + case 11: + return [11, bu(X, n[1])]; + default: + R0 = 1; + } + if (R0) + throw [0, Sn, tf0]; + break; + case 12: + var s0 = 0, hr = t[1]; + if (typeof n == "number") + s0 = 1; + else + switch (n[0]) { + case 10: + break; + case 11: + e = 1; + break; + case 12: + return [12, bu(hr, n[1])]; + default: + s0 = 1; + } + if (s0) + throw [0, Sn, if0]; + break; + case 13: + var Ar = 0, or = t[1]; + if (typeof n == "number") + Ar = 1; + else + switch (n[0]) { + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + return [13, bu(or, n[1])]; + default: + Ar = 1; + } + if (Ar) + throw [0, Sn, xf0]; + break; + default: + var W0 = 0, Lr = t[1]; + if (typeof n == "number") + W0 = 1; + else + switch (n[0]) { + case 10: + break; + case 11: + e = 1; + break; + case 12: + e = 2; + break; + case 13: + e = 3; + break; + case 14: + return [14, bu(Lr, n[1])]; + default: + W0 = 1; + } + if (W0) + throw [0, Sn, af0]; + } + switch (e) { + case 0: + throw [0, Sn, nf0]; + case 1: + throw [0, Sn, uf0]; + case 2: + throw [0, Sn, ff0]; + case 3: + throw [0, Sn, of0]; + case 4: + throw [0, Sn, cf0]; + case 5: + throw [0, Sn, vf0]; + case 6: + throw [0, Sn, bf0]; + default: + throw [0, Sn, pf0]; + } + } + var Ou = [wt, Vx0, M7(0)]; + function Ip(t, n) { + if (typeof t == "number") + return [0, 0, n]; + if (t[0] === 0) + return [0, [0, t[1], t[2]], n]; + if (typeof n != "number" && n[0] === 2) + return [0, [1, t[1]], n[1]]; + throw Ou; + } + function dl(t, n, e) { + var i = Ip(t, e); + if (typeof n == "number") { + if (n) { + var x = i[2]; + if (typeof x != "number" && x[0] === 2) + return [0, i[1], 1, x[1]]; + throw Ou; + } + return [0, i[1], 0, i[2]]; + } + return [0, i[1], [0, n[1]], i[2]]; + } + function _7(t, n, e) { + if (typeof t == "number") + return [0, 0, _t(n, e)]; + switch (t[0]) { + case 0: + if (typeof e != "number" && e[0] === 0) { + var i = _7(t[1], n, e[1]); + return [0, [0, i[1]], i[2]]; + } + break; + case 1: + if (typeof e != "number" && e[0] === 1) { + var x = _7(t[1], n, e[1]); + return [0, [1, x[1]], x[2]]; + } + break; + case 2: + if (typeof e != "number" && e[0] === 2) { + var c = _7(t[1], n, e[1]); + return [0, [2, c[1]], c[2]]; + } + break; + case 3: + if (typeof e != "number" && e[0] === 3) { + var s = _7(t[1], n, e[1]); + return [0, [3, s[1]], s[2]]; + } + break; + case 4: + if (typeof e != "number" && e[0] === 4) { + var p = _7(t[1], n, e[1]); + return [0, [4, p[1]], p[2]]; + } + break; + case 5: + if (typeof e != "number" && e[0] === 5) { + var y = _7(t[1], n, e[1]); + return [0, [5, y[1]], y[2]]; + } + break; + case 6: + if (typeof e != "number" && e[0] === 6) { + var T = _7(t[1], n, e[1]); + return [0, [6, T[1]], T[2]]; + } + break; + case 7: + if (typeof e != "number" && e[0] === 7) { + var E = _7(t[1], n, e[1]); + return [0, [7, E[1]], E[2]]; + } + break; + case 8: + if (typeof e != "number" && e[0] === 8) { + var d = e[1], w = e[2], G = t[2]; + if (cl([0, t[1]], [0, d])) + throw Ou; + var A = _7(G, n, w); + return [0, [8, d, A[1]], A[2]]; + } + break; + case 9: + if (typeof e != "number" && e[0] === 9) { + var S = e[2], M = e[1], K = e[3], V = t[3], f0 = t[2], m0 = t[1], k0 = [0, Gt(M)]; + if (cl([0, Gt(m0)], k0)) + throw Ou; + var g0 = [0, Gt(S)]; + if (cl([0, Gt(f0)], g0)) + throw Ou; + var e0 = Ru(bu(uu(M), S)), x0 = e0[4]; + u(e0[2], 0), u(x0, 0); + var l = _7(Gt(V), n, K), c0 = l[2]; + return [0, [9, M, S, uu(l[1])], c0]; + } + break; + case 10: + if (typeof e != "number" && e[0] === 10) { + var t0 = _7(t[1], n, e[1]); + return [0, [10, t0[1]], t0[2]]; + } + break; + case 11: + if (typeof e != "number" && e[0] === 11) { + var o0 = _7(t[1], n, e[1]); + return [0, [11, o0[1]], o0[2]]; + } + break; + case 13: + if (typeof e != "number" && e[0] === 13) { + var w0 = _7(t[1], n, e[1]); + return [0, [13, w0[1]], w0[2]]; + } + break; + case 14: + if (typeof e != "number" && e[0] === 14) { + var _0 = _7(t[1], n, e[1]); + return [0, [14, _0[1]], _0[2]]; + } + break; + } + throw Ou; + } + function _t(t, n) { + if (typeof t == "number") + return [0, 0, n]; + switch (t[0]) { + case 0: + if (typeof n != "number" && n[0] === 0) { + var e = _t(t[1], n[1]); + return [0, [0, e[1]], e[2]]; + } + break; + case 1: + if (typeof n != "number" && n[0] === 0) { + var i = _t(t[1], n[1]); + return [0, [1, i[1]], i[2]]; + } + break; + case 2: + var x = t[2], c = Ip(t[1], n), s = c[2], p = c[1]; + if (typeof s != "number" && s[0] === 1) { + var y = _t(x, s[1]); + return [0, [2, p, y[1]], y[2]]; + } + throw Ou; + case 3: + var T = t[2], E = Ip(t[1], n), d = E[2], w = E[1]; + if (typeof d != "number" && d[0] === 1) { + var G = _t(T, d[1]); + return [0, [3, w, G[1]], G[2]]; + } + throw Ou; + case 4: + var A = t[4], S = t[1], M = dl(t[2], t[3], n), K = M[3], V = M[1]; + if (typeof K != "number" && K[0] === 2) { + var f0 = M[2], m0 = _t(A, K[1]); + return [0, [4, S, V, f0, m0[1]], m0[2]]; + } + throw Ou; + case 5: + var k0 = t[4], g0 = t[1], e0 = dl(t[2], t[3], n), x0 = e0[3], l = e0[1]; + if (typeof x0 != "number" && x0[0] === 3) { + var c0 = e0[2], t0 = _t(k0, x0[1]); + return [0, [5, g0, l, c0, t0[1]], t0[2]]; + } + throw Ou; + case 6: + var o0 = t[4], w0 = t[1], _0 = dl(t[2], t[3], n), E0 = _0[3], U0 = _0[1]; + if (typeof E0 != "number" && E0[0] === 4) { + var b = _0[2], R0 = _t(o0, E0[1]); + return [0, [6, w0, U0, b, R0[1]], R0[2]]; + } + throw Ou; + case 7: + var X = t[4], s0 = t[1], hr = dl(t[2], t[3], n), Ar = hr[3], or = hr[1]; + if (typeof Ar != "number" && Ar[0] === 5) { + var W0 = hr[2], Lr = _t(X, Ar[1]); + return [0, [7, s0, or, W0, Lr[1]], Lr[2]]; + } + throw Ou; + case 8: + var Tr = t[4], Hr = t[1], Or = dl(t[2], t[3], n), fr = Or[3], Rr = Or[1]; + if (typeof fr != "number" && fr[0] === 6) { + var Wr = Or[2], Jr = _t(Tr, fr[1]); + return [0, [8, Hr, Rr, Wr, Jr[1]], Jr[2]]; + } + throw Ou; + case 9: + var ar = t[2], _r = Ip(t[1], n), Ir = _r[2], fe = _r[1]; + if (typeof Ir != "number" && Ir[0] === 7) { + var v0 = _t(ar, Ir[1]); + return [0, [9, fe, v0[1]], v0[2]]; + } + throw Ou; + case 10: + var P = _t(t[1], n); + return [0, [10, P[1]], P[2]]; + case 11: + var L = t[1], Q = _t(t[2], n); + return [0, [11, L, Q[1]], Q[2]]; + case 12: + var i0 = t[1], l0 = _t(t[2], n); + return [0, [12, i0, l0[1]], l0[2]]; + case 13: + if (typeof n != "number" && n[0] === 8) { + var S0 = n[1], T0 = n[2], rr = t[3], L0 = t[1]; + if (cl([0, t[2]], [0, S0])) + throw Ou; + var B = _t(rr, T0); + return [0, [13, L0, S0, B[1]], B[2]]; + } + break; + case 14: + if (typeof n != "number" && n[0] === 9) { + var Z = n[1], p0 = n[3], b0 = t[3], O0 = t[2], M0 = t[1], er = [0, Gt(Z)]; + if (cl([0, Gt(O0)], er)) + throw Ou; + var yr = _t(b0, Gt(p0)); + return [0, [14, M0, Z, yr[1]], yr[2]]; + } + break; + case 15: + if (typeof n != "number" && n[0] === 10) { + var vr = _t(t[1], n[1]); + return [0, [15, vr[1]], vr[2]]; + } + break; + case 16: + if (typeof n != "number" && n[0] === 11) { + var $0 = _t(t[1], n[1]); + return [0, [16, $0[1]], $0[2]]; + } + break; + case 17: + var Er = t[1], Mr = _t(t[2], n); + return [0, [17, Er, Mr[1]], Mr[2]]; + case 18: + var Br = t[2], qr = t[1]; + if (qr[0] === 0) { + var jr = qr[1], $r = jr[2], ne = _t(jr[1], n), Qr = ne[1], be = _t(Br, ne[2]); + return [0, [18, [0, [0, Qr, $r]], be[1]], be[2]]; + } + var ae = qr[1], pe = ae[2], oe = _t(ae[1], n), ce = oe[1], ge = _t(Br, oe[2]); + return [0, [18, [1, [0, ce, pe]], ge[1]], ge[2]]; + case 19: + if (typeof n != "number" && n[0] === 13) { + var q0 = _t(t[1], n[1]); + return [0, [19, q0[1]], q0[2]]; + } + break; + case 20: + if (typeof n != "number" && n[0] === 1) { + var Fr = t[2], _ = t[1], k = _t(t[3], n[1]); + return [0, [20, _, Fr, k[1]], k[2]]; + } + break; + case 21: + if (typeof n != "number" && n[0] === 2) { + var I = t[1], U = _t(t[2], n[1]); + return [0, [21, I, U[1]], U[2]]; + } + break; + case 23: + var Y = t[2], y0 = t[1]; + if (typeof y0 == "number") + switch (y0) { + case 0: + return U7(y0, Y, n); + case 1: + return U7(y0, Y, n); + case 2: + if (typeof n != "number" && n[0] === 14) { + var P0 = _t(Y, n[1]); + return [0, [23, 2, P0[1]], P0[2]]; + } + throw Ou; + default: + return U7(y0, Y, n); + } + else + switch (y0[0]) { + case 0: + return U7(y0, Y, n); + case 1: + return U7(y0, Y, n); + case 2: + return U7(y0, Y, n); + case 3: + return U7(y0, Y, n); + case 4: + return U7(y0, Y, n); + case 5: + return U7(y0, Y, n); + case 6: + return U7(y0, Y, n); + case 7: + return U7(y0, Y, n); + case 8: + return U7([8, y0[1], y0[2]], Y, n); + case 9: + var I0 = y0[1], D = _7(y0[2], Y, n), u0 = D[2]; + return [0, [23, [9, I0, D[1]], u0[1]], u0[2]]; + case 10: + return U7(y0, Y, n); + default: + return U7(y0, Y, n); + } + } + throw Ou; + } + function U7(t, n, e) { + var i = _t(n, e); + return [0, [23, t, i[1]], i[2]]; + } + function H7(t, n, e) { + var i = un(e), x = 0 <= n ? t : 0, c = gp(n); + if (c <= i) + return e; + var s = x === 2 ? 48 : 32, p = k1(c, s); + switch (x) { + case 0: + cs(e, 0, p, 0, i); + break; + case 1: + cs(e, 0, p, c - i | 0, i); + break; + default: + var y = 0; + if (0 < i) { + var T = 0; + It(e, 0) !== 43 && It(e, 0) !== 45 && It(e, 0) !== 32 && (y = 1, T = 1), T || (b1(p, 0, It(e, 0)), cs(e, 1, p, (c - i | 0) + 1 | 0, i - 1 | 0)); + } else + y = 1; + if (y) { + var E = 0; + if (1 < i && It(e, 0) === 48) { + var d = 0; + uc !== It(e, 1) && It(e, 1) !== 88 && (E = 1, d = 1), d || (b1(p, 1, It(e, 1)), cs(e, 2, p, (c - i | 0) + 2 | 0, i - 2 | 0)); + } else + E = 1; + E && cs(e, 0, p, c - i | 0, i); + } + } + return p; + } + function Yv(t, n) { + var e = gp(t), i = un(n), x = It(n, 0), c = 0; + if (58 <= x) + 71 <= x ? 5 < (x + Y3 | 0) >>> 0 || (c = 1) : 65 <= x && (c = 1); + else { + var s = 0; + if (x !== 32) + if (43 <= x) + switch (x + xy | 0) { + case 5: + if (i < (e + 2 | 0) && 1 < i) { + var p = 0; + if ((uc === It(n, 1) || It(n, 1) === 88) && (p = 1), p) { + var y = k1(e + 2 | 0, 48); + return b1(y, 1, It(n, 1)), cs(n, 2, y, (e - i | 0) + 4 | 0, i - 2 | 0), y; + } + } + c = 1, s = 1; + break; + case 0: + case 2: + break; + case 1: + case 3: + case 4: + s = 1; + break; + default: + c = 1, s = 1; + } + else + s = 1; + if (!s && i < (e + 1 | 0)) { + var T = k1(e + 1 | 0, 48); + return b1(T, 0, x), cs(n, 1, T, (e - i | 0) + 2 | 0, i - 1 | 0), T; + } + } + if (c && i < e) { + var E = k1(e, 48); + return cs(n, 0, E, e - i | 0, i), E; + } + return n; + } + function zre(t) { + for (var n = 0, e = un(t); ; ) { + if (e <= n) + var i = t; + else { + var x = Vr(t, n) + hU | 0, c = 0; + if (59 < x >>> 0 ? 33 < (x + SS | 0) >>> 0 && (c = 1) : x === 2 && (c = 1), !c) { + var n = n + 1 | 0; + continue; + } + var s = t, p = [0, 0], y = b7(s) - 1 | 0, T = 0; + if (!(y < 0)) + for (var E = T; ; ) { + var d = Xu(s, E), w = 0; + if (32 <= d) { + var G = d - 34 | 0, A = 0; + if (58 < G >>> 0 ? 93 <= G && (A = 1) : 56 < (G - 1 | 0) >>> 0 && (w = 1, A = 1), !A) { + var S = 1; + w = 2; + } + } else + 11 <= d ? d === 13 && (w = 1) : 8 <= d && (w = 1); + switch (w) { + case 0: + var S = 4; + break; + case 1: + var S = 2; + break; + } + p[1] = p[1] + S | 0; + var M = E + 1 | 0; + if (y !== E) { + var E = M; + continue; + } + break; + } + if (p[1] === b7(s)) + var K = sz(s); + else { + var V = Lt(p[1]); + p[1] = 0; + var f0 = b7(s) - 1 | 0, m0 = 0; + if (!(f0 < 0)) + for (var k0 = m0; ; ) { + var g0 = Xu(s, k0), e0 = 0; + if (35 <= g0) + g0 === 92 ? e0 = 2 : zn <= g0 ? e0 = 1 : e0 = 3; + else if (32 <= g0) + 34 <= g0 ? e0 = 2 : e0 = 3; + else if (14 <= g0) + e0 = 1; + else + switch (g0) { + case 8: + Jn(V, p[1], 92), p[1]++, Jn(V, p[1], 98); + break; + case 9: + Jn(V, p[1], 92), p[1]++, Jn(V, p[1], f1); + break; + case 10: + Jn(V, p[1], 92), p[1]++, Jn(V, p[1], Xt); + break; + case 13: + Jn(V, p[1], 92), p[1]++, Jn(V, p[1], t1); + break; + default: + e0 = 1; + } + switch (e0) { + case 1: + Jn(V, p[1], 92), p[1]++, Jn(V, p[1], 48 + (g0 / ti | 0) | 0), p[1]++, Jn(V, p[1], 48 + ((g0 / 10 | 0) % 10 | 0) | 0), p[1]++, Jn(V, p[1], 48 + (g0 % 10 | 0) | 0); + break; + case 2: + Jn(V, p[1], 92), p[1]++, Jn(V, p[1], g0); + break; + case 3: + Jn(V, p[1], g0); + break; + } + p[1]++; + var x0 = k0 + 1 | 0; + if (f0 !== k0) { + var k0 = x0; + continue; + } + break; + } + var K = V; + } + var i = K; + } + var l = un(i), c0 = k1(l + 2 | 0, 34); + return Ts(i, 0, c0, 1, l), c0; + } + } + function wz(t, n) { + var e = gp(n), i = rz ? rz[1] : 70; + switch (t[2]) { + case 0: + var x = Ri; + break; + case 1: + var x = R7; + break; + case 2: + var x = 69; + break; + case 3: + var x = s7; + break; + case 4: + var x = 71; + break; + case 5: + var x = i; + break; + case 6: + var x = L7; + break; + case 7: + var x = 72; + break; + default: + var x = 70; + } + var c = yz(16); + switch (Xv(c, 37), t[1]) { + case 0: + break; + case 1: + Xv(c, 43); + break; + default: + Xv(c, 32); + } + return 8 <= t[2] && Xv(c, 35), Xv(c, 46), Lu(c, r(C + e)), Xv(c, x), dz(c); + } + function Ap(t, n) { + if (13 <= t) { + var e = [0, 0], i = un(n) - 1 | 0, x = 0; + if (!(i < 0)) + for (var c = x; ; ) { + 9 < (Vr(n, c) + Wt | 0) >>> 0 || e[1]++; + var s = c + 1 | 0; + if (i !== c) { + var c = s; + continue; + } + break; + } + var p = e[1], y = Lt(un(n) + ((p - 1 | 0) / 3 | 0) | 0), T = [0, 0], E = function(K) { + return b1(y, T[1], K), T[1]++, 0; + }, d = [0, ((p - 1 | 0) % 3 | 0) + 1 | 0], w = un(n) - 1 | 0, G = 0; + if (!(w < 0)) + for (var A = G; ; ) { + var S = Vr(n, A); + 9 < (S + Wt | 0) >>> 0 || (d[1] === 0 && (E(95), d[1] = 3), d[1] += -1), E(S); + var M = A + 1 | 0; + if (w !== A) { + var A = M; + continue; + } + break; + } + return y; + } + return n; + } + function Kre(t, n) { + switch (t) { + case 1: + var e = gx0; + break; + case 2: + var e = Fx0; + break; + case 4: + var e = Tx0; + break; + case 5: + var e = Ox0; + break; + case 6: + var e = Ix0; + break; + case 7: + var e = Ax0; + break; + case 8: + var e = Nx0; + break; + case 9: + var e = Cx0; + break; + case 10: + var e = Px0; + break; + case 11: + var e = Dx0; + break; + case 0: + case 13: + var e = Lx0; + break; + case 3: + case 14: + var e = Rx0; + break; + default: + var e = jx0; + } + return Ap(t, hp(e, n)); + } + function Wre(t, n) { + switch (t) { + case 1: + var e = Qf0; + break; + case 2: + var e = rx0; + break; + case 4: + var e = ex0; + break; + case 5: + var e = nx0; + break; + case 6: + var e = tx0; + break; + case 7: + var e = ux0; + break; + case 8: + var e = ix0; + break; + case 9: + var e = fx0; + break; + case 10: + var e = xx0; + break; + case 11: + var e = ox0; + break; + case 0: + case 13: + var e = ax0; + break; + case 3: + case 14: + var e = cx0; + break; + default: + var e = sx0; + } + return Ap(t, hp(e, n)); + } + function Jre(t, n) { + switch (t) { + case 1: + var e = Bf0; + break; + case 2: + var e = qf0; + break; + case 4: + var e = Uf0; + break; + case 5: + var e = Hf0; + break; + case 6: + var e = Xf0; + break; + case 7: + var e = Yf0; + break; + case 8: + var e = Vf0; + break; + case 9: + var e = zf0; + break; + case 10: + var e = Kf0; + break; + case 11: + var e = Wf0; + break; + case 0: + case 13: + var e = Jf0; + break; + case 3: + case 14: + var e = $f0; + break; + default: + var e = Zf0; + } + return Ap(t, hp(e, n)); + } + function $re(t, n) { + switch (t) { + case 1: + var e = vx0; + break; + case 2: + var e = lx0; + break; + case 4: + var e = bx0; + break; + case 5: + var e = px0; + break; + case 6: + var e = mx0; + break; + case 7: + var e = _x0; + break; + case 8: + var e = yx0; + break; + case 9: + var e = hx0; + break; + case 10: + var e = dx0; + break; + case 11: + var e = kx0; + break; + case 0: + case 13: + var e = wx0; + break; + case 3: + case 14: + var e = Ex0; + break; + default: + var e = Sx0; + } + return Ap(t, d70(e, n)); + } + function ss(t, n, e) { + function i(m0) { + switch (t[1]) { + case 0: + var k0 = 45; + break; + case 1: + var k0 = 43; + break; + default: + var k0 = 32; + } + return m70(e, n, k0); + } + function x(m0) { + var k0 = Zu0(e); + return k0 === 3 ? e < 0 ? jf0 : Gf0 : 4 <= k0 ? Rf0 : m0; + } + switch (t[2]) { + case 5: + for (var c = XA(wz(t, n), e), s = 0, p = un(c); ; ) { + if (s === p) + var y = 0; + else { + var T = It(c, s) + v1 | 0, E = 0; + if (23 < T >>> 0 ? T === 55 && (E = 1) : 21 < (T - 1 | 0) >>> 0 && (E = 1), !E) { + var s = s + 1 | 0; + continue; + } + var y = 1; + } + var d = y ? c : Te(c, Mf0); + return x(d); + } + case 6: + return i(0); + case 7: + var w = i(0), G = b7(w); + if (G === 0) + var A = w; + else { + var S = Lt(G), M = G - 1 | 0, K = 0; + if (!(M < 0)) + for (var V = K; ; ) { + Jn(S, V, xz(Xu(w, V))); + var f0 = V + 1 | 0; + if (M !== V) { + var V = f0; + continue; + } + break; + } + var A = S; + } + return A; + case 8: + return x(i(0)); + default: + return XA(wz(t, n), e); + } + } + function kl(t, n, e, i) { + for (var x = n, c = e, s = i; ; ) { + if (typeof s == "number") + return u(x, c); + switch (s[0]) { + case 0: + var p = s[1]; + return function(ar) { + return Xn(x, [5, c, ar], p); + }; + case 1: + var y = s[1]; + return function(ar) { + var _r = 0; + if (40 <= ar) + if (ar === 92) + var Ir = oi0; + else + zn <= ar ? _r = 1 : _r = 2; + else if (32 <= ar) + if (39 <= ar) + var Ir = ai0; + else + _r = 2; + else if (14 <= ar) + _r = 1; + else + switch (ar) { + case 8: + var Ir = ci0; + break; + case 9: + var Ir = si0; + break; + case 10: + var Ir = vi0; + break; + case 13: + var Ir = li0; + break; + default: + _r = 1; + } + switch (_r) { + case 1: + var fe = Lt(4); + Jn(fe, 0, 92), Jn(fe, 1, 48 + (ar / ti | 0) | 0), Jn(fe, 2, 48 + ((ar / 10 | 0) % 10 | 0) | 0), Jn(fe, 3, 48 + (ar % 10 | 0) | 0); + var Ir = fe; + break; + case 2: + var v0 = Lt(1); + Jn(v0, 0, ar); + var Ir = v0; + break; + } + var P = un(Ir), L = k1(P + 2 | 0, 39); + return Ts(Ir, 0, L, 1, P), Xn(x, [4, c, L], y); + }; + case 2: + var T = s[2], E = s[1]; + return mN(x, c, T, E, function(ar) { + return ar; + }); + case 3: + return mN(x, c, s[2], s[1], zre); + case 4: + return Np(x, c, s[4], s[2], s[3], Kre, s[1]); + case 5: + return Np(x, c, s[4], s[2], s[3], Wre, s[1]); + case 6: + return Np(x, c, s[4], s[2], s[3], Jre, s[1]); + case 7: + return Np(x, c, s[4], s[2], s[3], $re, s[1]); + case 8: + var d = s[4], w = s[3], G = s[2], A = s[1]; + if (typeof G == "number") { + if (typeof w == "number") + return w ? function(ar, _r) { + return Xn(x, [4, c, ss(A, ar, _r)], d); + } : function(ar) { + return Xn(x, [4, c, ss(A, vN(A), ar)], d); + }; + var S = w[1]; + return function(ar) { + return Xn(x, [4, c, ss(A, S, ar)], d); + }; + } else { + if (G[0] === 0) { + var M = G[2], K = G[1]; + if (typeof w == "number") + return w ? function(ar, _r) { + return Xn(x, [4, c, H7(K, M, ss(A, ar, _r))], d); + } : function(ar) { + return Xn(x, [4, c, H7(K, M, ss(A, vN(A), ar))], d); + }; + var V = w[1]; + return function(ar) { + return Xn(x, [4, c, H7(K, M, ss(A, V, ar))], d); + }; + } + var f0 = G[1]; + if (typeof w == "number") + return w ? function(ar, _r, Ir) { + return Xn(x, [4, c, H7(f0, ar, ss(A, _r, Ir))], d); + } : function(ar, _r) { + return Xn(x, [4, c, H7(f0, ar, ss(A, vN(A), _r))], d); + }; + var m0 = w[1]; + return function(ar, _r) { + return Xn(x, [4, c, H7(f0, ar, ss(A, m0, _r))], d); + }; + } + case 9: + return mN(x, c, s[2], s[1], Gre); + case 10: + var c = [7, c], s = s[1]; + continue; + case 11: + var c = [2, c, s[1]], s = s[2]; + continue; + case 12: + var c = [3, c, s[1]], s = s[2]; + continue; + case 13: + var k0 = s[3], g0 = s[2], e0 = yz(16); + lN(e0, g0); + var x0 = dz(e0); + return function(ar) { + return Xn(x, [4, c, x0], k0); + }; + case 14: + var l = s[3], c0 = s[2]; + return function(ar) { + var _r = ar[1], Ir = _t(_r, Gt(uu(c0))); + if (typeof Ir[2] == "number") + return Xn(x, c, At(Ir[1], l)); + throw Ou; + }; + case 15: + var t0 = s[1]; + return function(ar, _r) { + return Xn(x, [6, c, function(Ir) { + return o(ar, Ir, _r); + }], t0); + }; + case 16: + var o0 = s[1]; + return function(ar) { + return Xn(x, [6, c, ar], o0); + }; + case 17: + var c = [0, c, s[1]], s = s[2]; + continue; + case 18: + var w0 = s[1]; + if (w0[0] === 0) { + var _0 = s[2], E0 = w0[1][1], U0 = 0, x = function(fe, v0, P) { + return function(L) { + return Xn(v0, [1, fe, [0, L]], P); + }; + }(c, x, _0), c = U0, s = E0; + continue; + } + var b = s[2], R0 = w0[1][1], X = 0, x = function(ar, _r, Ir) { + return function(fe) { + return Xn(_r, [1, ar, [1, fe]], Ir); + }; + }(c, x, b), c = X, s = R0; + continue; + case 19: + throw [0, Sn, _f0]; + case 20: + var s0 = s[3], hr = [8, c, yf0]; + return function(ar) { + return Xn(x, hr, s0); + }; + case 21: + var Ar = s[2]; + return function(ar) { + return Xn(x, [4, c, hp(mf0, ar)], Ar); + }; + case 22: + var or = s[1]; + return function(ar) { + return Xn(x, [5, c, ar], or); + }; + case 23: + var W0 = s[2], Lr = s[1]; + if (typeof Lr == "number") + switch (Lr) { + case 0: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 1: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 2: + throw [0, Sn, hf0]; + default: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + } + else + switch (Lr[0]) { + case 0: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 1: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 2: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 3: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 4: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 5: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 6: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 7: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 8: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + case 9: + var Tr = Lr[2]; + return t < 50 ? bN(t + 1 | 0, x, c, Tr, W0) : Tu(bN, [0, x, c, Tr, W0]); + case 10: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + default: + return t < 50 ? ct(t + 1 | 0, x, c, W0) : Tu(ct, [0, x, c, W0]); + } + default: + var Hr = s[3], Or = s[1], fr = u(s[2], 0); + return t < 50 ? pN(t + 1 | 0, x, c, Hr, Or, fr) : Tu(pN, [0, x, c, Hr, Or, fr]); + } + } + } + function bN(t, n, e, i, x) { + if (typeof i == "number") + return t < 50 ? ct(t + 1 | 0, n, e, x) : Tu(ct, [0, n, e, x]); + switch (i[0]) { + case 0: + var c = i[1]; + return function(m0) { + return fi(n, e, c, x); + }; + case 1: + var s = i[1]; + return function(m0) { + return fi(n, e, s, x); + }; + case 2: + var p = i[1]; + return function(m0) { + return fi(n, e, p, x); + }; + case 3: + var y = i[1]; + return function(m0) { + return fi(n, e, y, x); + }; + case 4: + var T = i[1]; + return function(m0) { + return fi(n, e, T, x); + }; + case 5: + var E = i[1]; + return function(m0) { + return fi(n, e, E, x); + }; + case 6: + var d = i[1]; + return function(m0) { + return fi(n, e, d, x); + }; + case 7: + var w = i[1]; + return function(m0) { + return fi(n, e, w, x); + }; + case 8: + var G = i[2]; + return function(m0) { + return fi(n, e, G, x); + }; + case 9: + var A = i[3], S = i[2], M = bu(uu(i[1]), S); + return function(m0) { + return fi(n, e, u7(M, A), x); + }; + case 10: + var K = i[1]; + return function(m0, k0) { + return fi(n, e, K, x); + }; + case 11: + var V = i[1]; + return function(m0) { + return fi(n, e, V, x); + }; + case 12: + var f0 = i[1]; + return function(m0) { + return fi(n, e, f0, x); + }; + case 13: + throw [0, Sn, df0]; + default: + throw [0, Sn, kf0]; + } + } + function ct(t, n, e, i) { + var x = [8, e, wf0]; + return t < 50 ? kl(t + 1 | 0, n, x, i) : Tu(kl, [0, n, x, i]); + } + function pN(t, n, e, i, x, c) { + if (x) { + var s = x[1]; + return function(y) { + return Zre(n, e, i, s, u(c, y)); + }; + } + var p = [4, e, c]; + return t < 50 ? kl(t + 1 | 0, n, p, i) : Tu(kl, [0, n, p, i]); + } + function Xn(t, n, e) { + return JA(kl(0, t, n, e)); + } + function fi(t, n, e, i) { + return JA(bN(0, t, n, e, i)); + } + function Zre(t, n, e, i, x) { + return JA(pN(0, t, n, e, i, x)); + } + function mN(t, n, e, i, x) { + if (typeof i == "number") + return function(y) { + return Xn(t, [4, n, u(x, y)], e); + }; + if (i[0] === 0) { + var c = i[2], s = i[1]; + return function(y) { + return Xn(t, [4, n, H7(s, c, u(x, y))], e); + }; + } + var p = i[1]; + return function(y, T) { + return Xn(t, [4, n, H7(p, y, u(x, T))], e); + }; + } + function Np(t, n, e, i, x, c, s) { + if (typeof i == "number") { + if (typeof x == "number") + return x ? function(G, A) { + return Xn(t, [4, n, Yv(G, o(c, s, A))], e); + } : function(G) { + return Xn(t, [4, n, o(c, s, G)], e); + }; + var p = x[1]; + return function(G) { + return Xn(t, [4, n, Yv(p, o(c, s, G))], e); + }; + } else { + if (i[0] === 0) { + var y = i[2], T = i[1]; + if (typeof x == "number") + return x ? function(G, A) { + return Xn(t, [4, n, H7(T, y, Yv(G, o(c, s, A)))], e); + } : function(G) { + return Xn(t, [4, n, H7(T, y, o(c, s, G))], e); + }; + var E = x[1]; + return function(G) { + return Xn(t, [4, n, H7(T, y, Yv(E, o(c, s, G)))], e); + }; + } + var d = i[1]; + if (typeof x == "number") + return x ? function(G, A, S) { + return Xn(t, [4, n, H7(d, G, Yv(A, o(c, s, S)))], e); + } : function(G, A) { + return Xn(t, [4, n, H7(d, G, o(c, s, A))], e); + }; + var w = x[1]; + return function(G, A) { + return Xn(t, [4, n, H7(d, G, Yv(w, o(c, s, A)))], e); + }; + } + } + function vs(t, n) { + for (var e = n; ; ) { + if (typeof e == "number") + return 0; + switch (e[0]) { + case 0: + var i = e[1], x = kz(e[2]); + return vs(t, i), vl(t, x); + case 1: + var c = e[2], s = e[1]; + if (c[0] === 0) { + var p = c[1]; + vs(t, s), vl(t, Ef0); + var e = p; + continue; + } + var y = c[1]; + vs(t, s), vl(t, Sf0); + var e = y; + continue; + case 6: + var T = e[2]; + return vs(t, e[1]), u(T, t); + case 7: + return vs(t, e[1]), p1(t); + case 8: + var E = e[2]; + return vs(t, e[1]), Pu(E); + case 2: + case 4: + var d = e[2]; + return vs(t, e[1]), vl(t, d); + default: + var w = e[2]; + return vs(t, e[1]), KV(t, w); + } + } + } + function ls(t, n) { + for (var e = n; ; ) { + if (typeof e == "number") + return 0; + switch (e[0]) { + case 0: + var i = e[1], x = kz(e[2]); + return ls(t, i), hn(t, x); + case 1: + var c = e[2], s = e[1]; + if (c[0] === 0) { + var p = c[1]; + ls(t, s), hn(t, gf0); + var e = p; + continue; + } + var y = c[1]; + ls(t, s), hn(t, Ff0); + var e = y; + continue; + case 6: + var T = e[2]; + return ls(t, e[1]), hn(t, u(T, 0)); + case 7: + var e = e[1]; + continue; + case 8: + var E = e[2]; + return ls(t, e[1]), Pu(E); + case 2: + case 4: + var d = e[2]; + return ls(t, e[1]), hn(t, d); + default: + var w = e[2]; + return ls(t, e[1]), qi(t, w); + } + } + } + function Qre(t) { + if (qn(t, Of0)) + return If0; + var n = un(t); + function e(S) { + var M = Tf0[1], K = $n(N4); + return u(Xn(function(V) { + return ls(K, V), ke(Mt(K)); + }, 0, M), t); + } + function i(S) { + for (var M = S; ; ) { + if (M === n) + return M; + var K = It(t, M); + if (K !== 9 && K !== 32) + return M; + var M = M + 1 | 0; + } + } + function x(S, M) { + for (var K = M; ; ) { + if (K === n || 25 < (It(t, K) + Y3 | 0) >>> 0) + return K; + var K = K + 1 | 0; + } + } + function c(S, M) { + for (var K = M; ; ) { + if (K === n) + return K; + var V = It(t, K), f0 = 0; + if (48 <= V ? 58 <= V || (f0 = 1) : V === 45 && (f0 = 1), f0) { + var K = K + 1 | 0; + continue; + } + return K; + } + } + var s = i(0), p = x(s, s), y = m7(t, s, p - s | 0), T = i(p), E = c(T, T); + if (T === E) + var d = 0; + else + try { + var w = Bi(m7(t, T, E - T | 0)), d = w; + } catch (S) { + if (S = Et(S), S[1] !== q7) + throw S; + var d = e(0); + } + i(E) !== n && e(0); + var G = 0; + if (n0(y, Af0) && n0(y, Nf0)) + var A = n0(y, Cf0) ? n0(y, Pf0) ? n0(y, Df0) ? n0(y, Lf0) ? e(0) : 1 : 2 : 3 : 0; + else + G = 1; + if (G) + var A = 4; + return [0, d, A]; + } + function _N(t, n) { + var e = n[1], i = 0; + return Xn(function(x) { + return vs(t, x), 0; + }, i, e); + } + function yN(t) { + return _N(Pc, t); + } + function et(t) { + var n = t[1]; + return Xn(function(e) { + var i = $n(64); + return ls(i, e), Mt(i); + }, 0, n); + } + var hN = [0, 0]; + function dN(t, n) { + var e = t[1 + n]; + if (1 - (typeof e == "number" ? 1 : 0)) { + if (h1(e) === Y2) + return u(et(ho0), e); + if (h1(e) === nd) + for (var i = XA(ui0, e), x = 0, c = un(i); ; ) { + if (c <= x) + return Te(i, ii0); + var s = It(i, x), p = 0; + if (48 <= s ? 58 <= s || (p = 1) : s === 45 && (p = 1), p) { + var x = x + 1 | 0; + continue; + } + return i; + } + return do0; + } + return u(et(yo0), e); + } + function Ez(t, n) { + if (t.length - 1 <= n) + return zx0; + var e = Ez(t, n + 1 | 0), i = dN(t, n); + return o(et(Kx0), i, e); + } + function Cp(t) { + function n(k0) { + for (var g0 = k0; ; ) { + if (g0) { + var e0 = g0[2], x0 = g0[1]; + try { + var l = 0, c0 = u(x0, t); + l = 1; + } catch { + } + if (l && c0) + return [0, c0[1]]; + var g0 = e0; + continue; + } + return 0; + } + } + var e = n(hN[1]); + if (e) + return e[1]; + if (t === $A) + return ao0; + if (t === QV) + return co0; + if (t[1] === ZV) { + var i = t[2], x = i[3], c = i[2], s = i[1]; + return p7(et(QA), s, c, x, x + 5 | 0, so0); + } + if (t[1] === Sn) { + var p = t[2], y = p[3], T = p[2], E = p[1]; + return p7(et(QA), E, T, y, y + 6 | 0, vo0); + } + if (t[1] === sl) { + var d = t[2], w = d[3], G = d[2], A = d[1]; + return p7(et(QA), A, G, w, w + 6 | 0, lo0); + } + if (h1(t) === 0) { + var S = t.length - 1, M = t[1][1]; + if (2 < S >>> 0) + var K = Ez(t, 2), V = dN(t, 1), f0 = o(et(bo0), V, K); + else + switch (S) { + case 0: + var f0 = po0; + break; + case 1: + var f0 = mo0; + break; + default: + var m0 = dN(t, 1), f0 = u(et(_o0), m0); + } + return Te(M, f0); + } + return t[1]; + } + function kN(t, n) { + var e = s70(n), i = e.length - 1 - 1 | 0, x = 0; + if (!(i < 0)) + for (var c = x; ; ) { + var s = tu(e, c)[1 + c], p = function(f0) { + return function(m0) { + return m0 ? f0 === 0 ? eo0 : no0 : f0 === 0 ? to0 : uo0; + }; + }(c); + if (s[0] === 0) + var y = s[5], T = s[4], E = s[3], d = s[6] ? io0 : fo0, w = s[2], G = s[7], A = p(s[1]), M = [0, ei0(et(xo0), A, G, w, d, E, T, y)]; + else if (s[1]) + var M = 0; + else + var S = p(0), M = [0, u(et(oo0), S)]; + if (M) { + var K = M[1]; + u(_N(t, Qx0), K); + } + var V = c + 1 | 0; + if (i !== c) { + var c = V; + continue; + } + break; + } + return 0; + } + function Sz(t) { + for (; ; ) { + var n = hN[1], e = 1 - nN(hN, n, [0, t, n]); + if (!e) + return e; + } + } + var ree = ko0.slice(); + function eee(t, n) { + var e = Cp(t); + u(yN(Zx0), e), kN(Pc, n); + var i = T70(0); + if (i < 0) { + var x = gp(i); + iz(tu(ree, x)[1 + x]); + } + return p1(Pc); + } + var nee = [0]; + WA(r(LH), function(t, n) { + try { + try { + var e = n ? nee : GV(0); + try { + uN(0); + } catch { + } + try { + var i = eee(t, e), x = i; + } catch (y) { + y = Et(y); + var c = Cp(t); + u(yN(Wx0), c), kN(Pc, e); + var s = Cp(y); + u(yN(Jx0), s), kN(Pc, GV(0)); + var x = p1(Pc); + } + var p = x; + } catch (y) { + if (y = Et(y), y !== $A) + throw y; + var p = iz($x0); + } + return p; + } catch { + return 0; + } + }); + var wN = [wt, Uo0, M7(0)], Pp = 0, gz = -1; + function wl(t, n) { + return t[13] = t[13] + n[3] | 0, aN(n, t[28]); + } + var Fz = 1000000010; + function EN(t, n) { + return ur(t[17], n, 0, un(n)); + } + function Dp(t) { + return u(t[19], 0); + } + function Tz(t, n, e) { + return t[9] = t[9] - n | 0, EN(t, e), t[11] = 0, 0; + } + function Lp(t, n) { + var e = n0(n, qo0); + return e && Tz(t, un(n), n); + } + function Vv(t, n, e) { + var i = n[3], x = n[2]; + Lp(t, n[1]), Dp(t), t[11] = 1; + var c = (t[6] - e | 0) + x | 0, s = t[8], p = s <= c ? s : c; + return t[10] = p, t[9] = t[6] - t[10] | 0, u(t[21], t[10]), Lp(t, i); + } + function Oz(t, n) { + return Vv(t, Bo0, n); + } + function El(t, n) { + var e = n[2], i = n[3]; + return Lp(t, n[1]), t[9] = t[9] - e | 0, u(t[20], e), Lp(t, i); + } + function Iz(t) { + for (; ; ) { + var n = t[28][2], e = n ? [0, n[1]] : 0; + if (e) { + var i = e[1], x = i[1], c = i[2], s = 0 <= x ? 1 : 0, p = i[3], y = t[13] - t[12] | 0, T = s || (t[9] <= y ? 1 : 0); + if (T) { + var E = t[28], d = E[2]; + if (d) { + if (d[2]) { + var w = d[2]; + E[1] = E[1] - 1 | 0, E[2] = w; + } else + oN(E); + var G = 0 <= x ? x : Fz; + if (typeof c == "number") + switch (c) { + case 0: + var A = Hv(t[3]); + if (A) { + var S = A[1][1], M = function(L, Q) { + if (Q) { + var i0 = Q[1], l0 = Q[2]; + return F70(L, i0) ? [0, L, Q] : [0, i0, M(L, l0)]; + } + return [0, L, 0]; + }; + S[1] = M(t[6] - t[9] | 0, S[1]); + } + break; + case 1: + Uv(t[2]); + break; + case 2: + Uv(t[3]); + break; + case 3: + var K = Hv(t[2]); + K ? Oz(t, K[1][2]) : Dp(t); + break; + case 4: + if (t[10] !== (t[6] - t[9] | 0)) { + var V = t[28], f0 = V[2]; + if (f0) { + var m0 = f0[1]; + if (f0[2]) { + var k0 = f0[2]; + V[1] = V[1] - 1 | 0, V[2] = k0; + var g0 = [0, m0]; + } else { + oN(V); + var g0 = [0, m0]; + } + } else + var g0 = 0; + if (g0) { + var e0 = g0[1], x0 = e0[1]; + t[12] = t[12] - e0[3] | 0, t[9] = t[9] + x0 | 0; + } + } + break; + default: + var l = Uv(t[5]); + l && EN(t, u(t[25], l[1])); + } + else + switch (c[0]) { + case 0: + Tz(t, G, c[1]); + break; + case 1: + var c0 = c[2], t0 = c[1], o0 = c0[1], w0 = c0[2], _0 = Hv(t[2]); + if (_0) { + var E0 = _0[1], U0 = E0[2]; + switch (E0[1]) { + case 0: + El(t, t0); + break; + case 1: + Vv(t, c0, U0); + break; + case 2: + Vv(t, c0, U0); + break; + case 3: + t[9] < (G + un(o0) | 0) ? Vv(t, c0, U0) : El(t, t0); + break; + case 4: + t[11] || !(t[9] < (G + un(o0) | 0) || ((t[6] - U0 | 0) + w0 | 0) < t[10]) ? El(t, t0) : Vv(t, c0, U0); + break; + default: + El(t, t0); + } + } + break; + case 2: + var b = t[6] - t[9] | 0, R0 = c[2], X = c[1], s0 = Hv(t[3]); + if (s0) { + var hr = s0[1][1], Ar = hr[1]; + if (Ar) + for (var or = hr[1], W0 = Ar[1]; ; ) { + if (or) { + var Lr = or[1], Tr = or[2]; + if (!(b <= Lr)) { + var or = Tr; + continue; + } + var Hr = Lr; + } else + var Hr = W0; + var Or = Hr; + break; + } + else + var Or = b; + var fr = Or - b | 0; + 0 <= fr ? El(t, [0, jo0, fr + X | 0, Ro0]) : Vv(t, [0, Mo0, Or + R0 | 0, Go0], t[6]); + } + break; + case 3: + var Rr = c[2], Wr = c[1]; + if (t[8] < (t[6] - t[9] | 0)) { + var Jr = Hv(t[2]); + if (Jr) { + var ar = Jr[1], _r = ar[2], Ir = ar[1]; + t[9] < _r && !(3 < (Ir - 1 | 0) >>> 0) && Oz(t, _r); + } else + Dp(t); + } + var fe = t[9] - Wr | 0, v0 = Rr === 1 ? 1 : t[9] < G ? Rr : 5; + w1([0, v0, fe], t[2]); + break; + case 4: + w1(c[1], t[3]); + break; + default: + var P = c[1]; + EN(t, u(t[24], P)), w1(P, t[5]); + } + t[12] = p + t[12] | 0; + continue; + } + throw Hre; + } + return T; + } + return 0; + } + } + function Az(t, n) { + return wl(t, n), Iz(t); + } + function Nz(t, n, e) { + return Az(t, [0, n, [0, e], n]); + } + function SN(t) { + return hl(t), w1([0, -1, [0, gz, Lo0, 0]], t); + } + function gN(t, n) { + var e = Hv(t[1]); + if (e) { + var i = e[1], x = i[2], c = x[1]; + if (i[1] < t[12]) + return SN(t[1]); + var s = x[2]; + if (typeof s != "number") + switch (s[0]) { + case 3: + var p = 1 - n, y = p && (x[1] = t[13] + c | 0, Uv(t[1]), 0); + return y; + case 1: + case 2: + var T = n && (x[1] = t[13] + c | 0, Uv(t[1]), 0); + return T; + } + return 0; + } + return 0; + } + function Cz(t, n, e) { + return wl(t, e), n && gN(t, 1), w1([0, t[13], e], t[1]); + } + function Pz(t, n, e) { + if (t[14] = t[14] + 1 | 0, t[14] < t[15]) + return Cz(t, 0, [0, -t[13] | 0, [3, n, e], 0]); + var i = t[14] === t[15] ? 1 : 0; + if (i) { + var x = t[16]; + return Nz(t, un(x), x); + } + return i; + } + function Dz(t, n) { + var e = 1 < t[14] ? 1 : 0; + if (e) { + t[14] < t[15] && (wl(t, [0, Pp, 1, 0]), gN(t, 1), gN(t, 0)), t[14] = t[14] - 1 | 0; + var i = 0; + } else + var i = e; + return i; + } + function Lz(t, n) { + t[23] && wl(t, [0, Pp, 5, 0]); + var e = t[22]; + if (e) { + var i = Uv(t[4]); + if (i) + return u(t[27], i[1]); + var x = 0; + } else + var x = e; + return x; + } + function FN(t, n) { + var e = t[4]; + function i(x) { + return Lz(t, 0); + } + for (Du(i, e[1]); ; ) { + if (1 < t[14]) { + Dz(t, 0); + continue; + } + return t[13] = Fz, Iz(t), n && Dp(t), t[12] = 1, t[13] = 1, oN(t[28]), SN(t[1]), hl(t[2]), hl(t[3]), hl(t[4]), hl(t[5]), t[10] = 0, t[14] = 0, t[9] = t[6], Pz(t, 0, 3); + } + } + function TN(t, n, e) { + var i = t[14] < t[15] ? 1 : 0; + return i && Nz(t, n, e); + } + function Rz(t, n, e) { + return TN(t, n, e); + } + function g(t, n) { + return Rz(t, un(n), n); + } + function Sl(t, n) { + return Rz(t, 1, Tp(1, n)); + } + function gl(t, n) { + return FN(t, 0), u(t[18], 0); + } + var jz = Tp(80, 32); + function Gz(t, n) { + for (var e = n; ; ) { + var i = 0 < e ? 1 : 0; + if (i) { + if (80 < e) { + ur(t[17], jz, 0, 80); + var e = e + eX | 0; + continue; + } + return ur(t[17], jz, 0, e); + } + return i; + } + } + function tee(t) { + return t[1] === wN ? Te(Oo0, Te(t[2], To0)) : Io0; + } + function uee(t) { + return t[1] === wN ? Te(go0, Te(t[2], So0)) : Fo0; + } + function iee(t) { + return 0; + } + function fee(t) { + return 0; + } + function Mz(t, n) { + function e(w) { + return 0; + } + function i(w) { + return 0; + } + function x(w) { + return 0; + } + var c = mz(0), s = [0, gz, wo0, 0]; + aN(s, c); + var p = yl(0); + SN(p), w1([0, 1, s], p); + var y = yl(0), T = yl(0), E = yl(0), d = [0, p, yl(0), E, T, y, 78, 10, 68, 78, 0, 1, 1, 1, 1, jre, Eo0, t, n, x, i, e, 0, 0, tee, uee, iee, fee, c]; + return d[19] = function(w) { + return ur(d[17], Ao0, 0, 1); + }, d[20] = function(w) { + return Gz(d, w); + }, d[21] = function(w) { + return Gz(d, w); + }, d; + } + function Bz(t) { + function n(e) { + return p1(t); + } + return Mz(function(e, i, x) { + return 0 <= i && 0 <= x && !((un(e) - x | 0) < i) ? zA(t, e, i, x) : Pu(ti0); + }, n); + } + function ON(t) { + function n(e) { + return 0; + } + return Mz(function(e, i, x) { + return _z(t, e, i, x); + }, n); + } + var xee = II; + function qz(t) { + return $n(xee); + } + var oee = qz(0), aee = Bz(Mre), cee = Bz(Pc); + ON(oee); + function Uz(t, n) { + var e = $n(16), i = ON(e); + o(t, i, n), gl(i, 0); + var x = e[2]; + if (2 <= x) { + var c = x - 2 | 0, s = 1; + return 0 <= c && !((e[2] - c | 0) < 1) ? qv(e[1], s, c) : Pu(Ri0); + } + return Mt(e); + } + function X7(t, n) { + var e = 0; + if (typeof n == "number") + return 0; + switch (n[0]) { + case 0: + var i = n[2]; + if (X7(t, n[1]), typeof i == "number") + switch (i) { + case 0: + return Dz(t, 0); + case 1: + return Lz(t, 0); + case 2: + return gl(t, 0); + case 3: + var x = t[14] < t[15] ? 1 : 0; + return x && Az(t, [0, Pp, 3, 0]); + case 4: + return FN(t, 1), u(t[18], 0); + case 5: + return Sl(t, 64); + default: + return Sl(t, 37); + } + else + switch (i[0]) { + case 0: + var c = [0, Do0, i[2], Po0], s = t[14] < t[15] ? 1 : 0, p = [0, Co0, i[3], No0], y = c[3], T = c[2], E = c[1]; + return s && Cz(t, 1, [0, -t[13] | 0, [1, c, p], (un(E) + T | 0) + un(y) | 0]); + case 1: + return 0; + default: + var d = i[1]; + return Sl(t, 64), Sl(t, d); + } + case 1: + var w = n[2], G = n[1]; + if (w[0] === 0) { + var A = w[1]; + X7(t, G); + var S = [0, wN, Uz(X7, A)]; + t[22] && (w1(S, t[4]), u(t[26], S)); + var M = t[23]; + return M && wl(t, [0, Pp, [5, S], 0]); + } + var K = w[1]; + X7(t, G); + var V = Qre(Uz(X7, K)); + return Pz(t, V[1], V[2]); + case 2: + var f0 = n[1], m0 = 0; + if (typeof f0 != "number" && f0[0] === 0) { + var k0 = f0[2], g0 = 0; + if (typeof k0 != "number" && k0[0] === 1) { + var e0 = n[2], x0 = k0[2], l = f0[1]; + m0 = 1, g0 = 1; + } + } + if (!m0) { + var c0 = n[2], t0 = f0; + e = 2; + } + break; + case 3: + var o0 = n[1], w0 = 0; + if (typeof o0 != "number" && o0[0] === 0) { + var _0 = o0[2], E0 = 0; + if (typeof _0 != "number" && _0[0] === 1) { + var U0 = n[2], b = _0[2], R0 = o0[1]; + e = 1, w0 = 1, E0 = 1; + } + } + if (!w0) { + var X = n[2], s0 = o0; + e = 3; + } + break; + case 4: + var hr = n[1], Ar = 0; + if (typeof hr != "number" && hr[0] === 0) { + var or = hr[2], W0 = 0; + if (typeof or != "number" && or[0] === 1) { + var e0 = n[2], x0 = or[2], l = hr[1]; + Ar = 1, W0 = 1; + } + } + if (!Ar) { + var c0 = n[2], t0 = hr; + e = 2; + } + break; + case 5: + var Lr = n[1], Tr = 0; + if (typeof Lr == "number" || Lr[0] !== 0) + Tr = 1; + else { + var Hr = Lr[2], Or = 0; + if (typeof Hr != "number" && Hr[0] === 1) { + var U0 = n[2], b = Hr[2], R0 = Lr[1]; + e = 1, Or = 1; + } + Or || (Tr = 1); + } + if (Tr) { + var X = n[2], s0 = Lr; + e = 3; + } + break; + case 6: + var fr = n[2]; + return X7(t, n[1]), u(fr, t); + case 7: + return X7(t, n[1]), gl(t, 0); + default: + var Rr = n[2]; + return X7(t, n[1]), Pu(Rr); + } + switch (e) { + case 0: + return X7(t, l), TN(t, x0, e0); + case 1: + return X7(t, R0), TN(t, b, Tp(1, U0)); + case 2: + return X7(t, t0), g(t, c0); + default: + return X7(t, s0), Sl(t, X); + } + } + function f(t) { + return function(n) { + var e = n[1], i = 0; + return Xn(function(x) { + return X7(t, x), 0; + }, i, e); + }; + } + function C0(t) { + var n = t[1], e = qz(0), i = ON(e); + return Xn(function(x) { + X7(i, x), FN(i, 0); + var c = Mt(e); + return e[2] = 0, e[1] = e[4], e[3] = b7(e[1]), c; + }, 0, n); + } + fz(function(t) { + return gl(aee, 0), gl(cee, 0); + }); + function see(t, n) { + var e = h1(n) === wt ? n : n[1]; + return WA(t, e); + } + var vee = 2; + function lee(t) { + var n = [0, 0], e = un(t) - 1 | 0, i = 0; + if (!(e < 0)) + for (var x = i; ; ) { + var c = It(t, x); + n[1] = (y8 * n[1] | 0) + c | 0; + var s = x + 1 | 0; + if (e !== x) { + var x = s; + continue; + } + break; + } + n[1] = n[1] & mH; + var p = 1073741823 < n[1] ? n[1] + 2147483648 | 0 : n[1]; + return p; + } + var bs = xN([0, Ee]), E1 = xN([0, Ee]), Is = xN([0, Ac]), Hz = KA(0, 0), bee = [0, 0]; + function Xz(t) { + return 2 < t ? Xz((t + 1 | 0) / 2 | 0) * 2 | 0 : t; + } + function Yz(t) { + bee[1]++; + var n = t.length - 1, e = Gv((n * 2 | 0) + 2 | 0, Hz); + tu(e, 0)[1] = n; + var i = ((Xz(n) * 32 | 0) / 8 | 0) - 1 | 0; + tu(e, 1)[2] = i; + var x = n - 1 | 0, c = 0; + if (!(x < 0)) + for (var s = c; ; ) { + var p = (s * 2 | 0) + 3 | 0, y = tu(t, s)[1 + s]; + tu(e, p)[1 + p] = y; + var T = s + 1 | 0; + if (x !== s) { + var s = T; + continue; + } + break; + } + return [0, vee, e, E1[1], Is[1], 0, 0, bs[1], 0]; + } + function IN(t, n) { + var e = t[2].length - 1, i = e < n ? 1 : 0; + if (i) { + var x = Gv(n, Hz), c = t[2], s = 0; + 0 <= e && !((c.length - 1 - e | 0) < 0) && !((x.length - 1 - e | 0) < 0) && (Ku0(c, 0, x, 0, e), s = 1), s || Pu(di0), t[2] = x; + var p = 0; + } else + var p = i; + return p; + } + var Vz = [0, 0], pee = [0, 0]; + function AN(t) { + var n = t[2].length - 1; + return IN(t, n + 1 | 0), n; + } + function Fl(t, n) { + try { + var e = o(E1[28], n, t[3]); + return e; + } catch (x) { + if (x = Et(x), x === Jt) { + var i = AN(t); + return t[3] = ur(E1[4], n, i, t[3]), t[4] = ur(Is[4], i, 1, t[4]), i; + } + throw x; + } + } + function NN(t, n) { + return Op(function(e) { + return Fl(t, e); + }, n); + } + function zz(t, n, e) { + return pee[1]++, o(Is[28], n, t[4]) ? (IN(t, n + 1 | 0), tu(t[2], n)[1 + n] = e, 0) : (t[6] = [0, [0, n, e], t[6]], 0); + } + function mee(t, n) { + try { + var e = Ure(n, t[6]); + return e; + } catch (i) { + if (i = Et(i), i === Jt) + return tu(t[2], n)[1 + n]; + throw i; + } + } + function CN(t) { + if (t === 0) + return 0; + for (var n = t.length - 1 - 1 | 0, e = 0; ; ) { + if (0 <= n) { + var i = [0, t[1 + n], e], n = n - 1 | 0, e = i; + continue; + } + return e; + } + } + function _ee(t) { + var n = t[1]; + return t[1] = n + 1 | 0, n; + } + function PN(t, n) { + try { + var e = o(bs[28], n, t[7]); + return e; + } catch (x) { + if (x = Et(x), x === Jt) { + var i = _ee(t); + return n0(n, Xo0) && (t[7] = ur(bs[4], n, i, t[7])), i; + } + throw x; + } + } + function DN(t) { + return RV(t, 0) ? [0] : t; + } + function yee(t, n) { + try { + var e = o(bs[28], n, t[7]); + return e; + } catch (i) { + throw i = Et(i), i === Jt ? [0, Sn, Ho0] : i; + } + } + function LN(t, n, e, i, x, c) { + var s = x[2], p = x[4], y = CN(n), T = CN(e), E = CN(i), d = d1(function(b) { + return Fl(t, b); + }, T), w = d1(function(b) { + return Fl(t, b); + }, E); + t[5] = [0, [0, t[3], t[4], t[6], t[7], d, y], t[5]]; + var G = bs[1], A = t[7]; + function S(b, R0, X) { + return fN(b, y) ? ur(bs[4], b, R0, X) : X; + } + t[7] = ur(bs[13], S, A, G); + var M = [0, E1[1]], K = [0, Is[1]]; + cz(function(b, R0) { + M[1] = ur(E1[4], b, R0, M[1]); + var X = K[1]; + try { + var s0 = o(Is[28], R0, t[4]), hr = s0; + } catch (Ar) { + if (Ar = Et(Ar), Ar !== Jt) + throw Ar; + var hr = 1; + } + return K[1] = ur(Is[4], R0, hr, X), 0; + }, E, w), cz(function(b, R0) { + return M[1] = ur(E1[4], b, R0, M[1]), K[1] = ur(Is[4], R0, 0, K[1]), 0; + }, T, d), t[3] = M[1], t[4] = K[1]; + var V = 0, f0 = t[6]; + t[6] = iN(function(b, R0) { + return fN(b[1], d) ? R0 : [0, b, R0]; + }, f0, V); + var m0 = c ? o(s, t, p) : u(s, t), k0 = bl(t[5]), g0 = k0[6], e0 = k0[5], x0 = k0[4], l = k0[3], c0 = k0[2], t0 = k0[1]; + t[5] = az(t[5]), t[7] = le(function(b, R0) { + var X = o(bs[28], R0, t[7]); + return ur(bs[4], R0, X, b); + }, x0, g0), t[3] = t0, t[4] = c0; + var o0 = t[6]; + t[6] = iN(function(b, R0) { + return fN(b[1], e0) ? R0 : [0, b, R0]; + }, o0, l); + var w0 = 0, _0 = DN(i), E0 = [0, Op(function(b) { + return mee(t, Fl(t, b)); + }, _0), w0], U0 = DN(n); + return Wu0([0, [0, m0], [0, Op(function(b) { + return yee(t, b); + }, U0), E0]]); + } + function Rp(t, n) { + if (t === 0) + var e = Yz([0]); + else { + var i = Yz(Op(lee, t)), x = t.length - 1 - 1 | 0, c = 0; + if (!(x < 0)) + for (var s = c; ; ) { + var p = (s * 2 | 0) + 2 | 0; + i[3] = ur(E1[4], t[1 + s], p, i[3]), i[4] = ur(Is[4], p, 1, i[4]); + var y = s + 1 | 0; + if (x !== s) { + var s = y; + continue; + } + break; + } + var e = i; + } + var T = u(n, e); + return Vz[1] = (Vz[1] + e[1] | 0) - 1 | 0, e[8] = ye(e[8]), IN(e, 3 + ((tu(e[2], 1)[2] * 16 | 0) / 32 | 0) | 0), [0, u(T, 0), n, T, 0]; + } + function jp(t, n) { + if (t) + return t; + var e = KA(wt, n[1]); + return e[1] = n[2], H70(e); + } + function RN(t, n, e) { + if (t) + return n; + var i = e[8]; + if (i !== 0) + for (var x = i; ; ) { + if (x) { + var c = x[2]; + u(x[1], n); + var x = c; + continue; + } + break; + } + return n; + } + function Gp(t) { + var n = AN(t), e = 0; + if ((n % 2 | 0) !== 0 && !((2 + ((tu(t[2], 1)[2] * 16 | 0) / 32 | 0) | 0) < n)) { + var i = AN(t); + e = 1; + } + if (!e) + var i = n; + return tu(t[2], i)[1 + i] = 0, i; + } + function jN(t, n) { + for (var e = [0, 0], i = n.length - 1; ; ) { + if (e[1] < i) { + var x = e[1], c = tu(n, x)[1 + x], s = function(p0) { + e[1]++; + var b0 = e[1]; + return tu(n, b0)[1 + b0]; + }, p = s(0); + if (typeof p == "number") + switch (p) { + case 0: + var y = s(0), Z = function(b0) { + return function(O0) { + return b0; + }; + }(y); + break; + case 1: + var T = s(0), Z = function(b0) { + return function(O0) { + return O0[1 + b0]; + }; + }(T); + break; + case 2: + var E = s(0), d = s(0), Z = function(b0, O0) { + return function(M0) { + return M0[1 + b0][1 + O0]; + }; + }(E, d); + break; + case 3: + var w = s(0), Z = function(b0) { + return function(O0) { + return u(O0[1][1 + b0], O0); + }; + }(w); + break; + case 4: + var G = s(0), Z = function(b0) { + return function(O0, M0) { + return O0[1 + b0] = M0, 0; + }; + }(G); + break; + case 5: + var A = s(0), S = s(0), Z = function(b0, O0) { + return function(M0) { + return u(b0, O0); + }; + }(A, S); + break; + case 6: + var M = s(0), K = s(0), Z = function(b0, O0) { + return function(M0) { + return u(b0, M0[1 + O0]); + }; + }(M, K); + break; + case 7: + var V = s(0), f0 = s(0), m0 = s(0), Z = function(b0, O0, M0) { + return function(er) { + return u(b0, er[1 + O0][1 + M0]); + }; + }(V, f0, m0); + break; + case 8: + var k0 = s(0), g0 = s(0), Z = function(b0, O0) { + return function(M0) { + return u(b0, u(M0[1][1 + O0], M0)); + }; + }(k0, g0); + break; + case 9: + var e0 = s(0), x0 = s(0), l = s(0), Z = function(b0, O0, M0) { + return function(er) { + return o(b0, O0, M0); + }; + }(e0, x0, l); + break; + case 10: + var c0 = s(0), t0 = s(0), o0 = s(0), Z = function(b0, O0, M0) { + return function(er) { + return o(b0, O0, er[1 + M0]); + }; + }(c0, t0, o0); + break; + case 11: + var w0 = s(0), _0 = s(0), E0 = s(0), U0 = s(0), Z = function(b0, O0, M0, er) { + return function(yr) { + return o(b0, O0, yr[1 + M0][1 + er]); + }; + }(w0, _0, E0, U0); + break; + case 12: + var b = s(0), R0 = s(0), X = s(0), Z = function(b0, O0, M0) { + return function(er) { + return o(b0, O0, u(er[1][1 + M0], er)); + }; + }(b, R0, X); + break; + case 13: + var s0 = s(0), hr = s(0), Ar = s(0), Z = function(b0, O0, M0) { + return function(er) { + return o(b0, er[1 + O0], M0); + }; + }(s0, hr, Ar); + break; + case 14: + var or = s(0), W0 = s(0), Lr = s(0), Tr = s(0), Z = function(b0, O0, M0, er) { + return function(yr) { + return o(b0, yr[1 + O0][1 + M0], er); + }; + }(or, W0, Lr, Tr); + break; + case 15: + var Hr = s(0), Or = s(0), fr = s(0), Z = function(b0, O0, M0) { + return function(er) { + return o(b0, u(er[1][1 + O0], er), M0); + }; + }(Hr, Or, fr); + break; + case 16: + var Rr = s(0), Wr = s(0), Z = function(b0, O0) { + return function(M0) { + return o(M0[1][1 + b0], M0, O0); + }; + }(Rr, Wr); + break; + case 17: + var Jr = s(0), ar = s(0), Z = function(b0, O0) { + return function(M0) { + return o(M0[1][1 + b0], M0, M0[1 + O0]); + }; + }(Jr, ar); + break; + case 18: + var _r = s(0), Ir = s(0), fe = s(0), Z = function(b0, O0, M0) { + return function(er) { + return o(er[1][1 + b0], er, er[1 + O0][1 + M0]); + }; + }(_r, Ir, fe); + break; + case 19: + var v0 = s(0), P = s(0), Z = function(b0, O0) { + return function(M0) { + var er = u(M0[1][1 + O0], M0); + return o(M0[1][1 + b0], M0, er); + }; + }(v0, P); + break; + case 20: + var L = s(0), Q = s(0); + Gp(t); + var Z = function(b0, O0) { + return function(M0) { + return u(Qe(O0, b0, 0), O0); + }; + }(L, Q); + break; + case 21: + var i0 = s(0), l0 = s(0); + Gp(t); + var Z = function(b0, O0) { + return function(M0) { + var er = M0[1 + O0]; + return u(Qe(er, b0, 0), er); + }; + }(i0, l0); + break; + case 22: + var S0 = s(0), T0 = s(0), rr = s(0); + Gp(t); + var Z = function(b0, O0, M0) { + return function(er) { + var yr = er[1 + O0][1 + M0]; + return u(Qe(yr, b0, 0), yr); + }; + }(S0, T0, rr); + break; + default: + var L0 = s(0), B = s(0); + Gp(t); + var Z = function(b0, O0) { + return function(M0) { + var er = u(M0[1][1 + O0], M0); + return u(Qe(er, b0, 0), er); + }; + }(L0, B); + } + else + var Z = p; + zz(t, c, Z), e[1]++; + continue; + } + return 0; + } + } + function Kz(t, n) { + var e = n.length - 1, i = KA(0, e), x = e - 1 | 0, c = 0; + if (!(x < 0)) + for (var s = c; ; ) { + var p = tu(n, s)[1 + s]; + if (typeof p == "number") + switch (p) { + case 0: + var E = function(G) { + function A(S) { + var M = i[1 + G]; + if (A === M) + throw [0, sl, t]; + return u(M, S); + } + return A; + }(s); + break; + case 1: + var y = []; + N(y, [$2, function(G, A) { + return function(S) { + var M = i[1 + A]; + if (G === M) + throw [0, sl, t]; + var K = h1(M); + return nl === K ? M[1] : $2 === K ? Vre(M) : M; + }; + }(y, s)]); + var E = y; + break; + default: + var T = function(G) { + throw [0, sl, t]; + }, E = [0, T, T, T, 0]; + } + else + var E = p[0] === 0 ? Kz(t, p[1]) : p[1]; + i[1 + s] = E; + var d = s + 1 | 0; + if (x !== s) { + var s = d; + continue; + } + break; + } + return i; + } + function pu(t, n) { + return typeof n != "number" && n[0] === 0 ? Kz(t, n[1]) : ke(Ko0); + } + function Wz(t, n, e) { + if (h1(e) === 0 && t.length - 1 <= e.length - 1) { + var i = t.length - 1 - 1 | 0, x = 0; + if (!(i < 0)) + for (var c = x; ; ) { + var s = e[1 + c], p = tu(t, c)[1 + c]; + if (typeof p == "number") + if (p === 2) { + var y = 0; + if (h1(s) === 0 && s.length - 1 === 4) + for (var T = 0, E = n[1 + c]; ; ) { + E[1 + T] = s[1 + T]; + var d = T + 1 | 0; + if (T !== 3) { + var T = d; + continue; + } + break; + } + else + y = 1; + if (y) + throw [0, Sn, Yo0]; + } else + n[1 + c] = s; + else + p[0] === 0 && Wz(p[1], n[1 + c], s); + var w = c + 1 | 0; + if (i !== c) { + var c = w; + continue; + } + break; + } + return 0; + } + throw [0, Sn, Vo0]; + } + function mu(t, n, e) { + return typeof t != "number" && t[0] === 0 ? Wz(t[1], n, e) : ke(zo0); + } + try { + WV(Wo0); + } catch (t) { + if (t = Et(t), t !== Jt) + throw t; + } + try { + WV(Jo0); + } catch (t) { + if (t = Et(t), t !== Jt) + throw t; + } + n0(oz, $o0) && n0(oz, Zo0); + function S1(t, n) { + function e(i) { + return qi(t, i); + } + return fw <= n ? (e(s1 | n >>> 18 | 0), e(jt | (n >>> 12 | 0) & 63), e(jt | (n >>> 6 | 0) & 63), e(jt | n & 63)) : Hh <= n ? (e(hv | n >>> 12 | 0), e(jt | (n >>> 6 | 0) & 63), e(jt | n & 63)) : jt <= n ? (e(rt | n >>> 6 | 0), e(jt | n & 63)) : e(n); + } + var GN = z0, i7 = null, Jz = void 0; + function Mp(t) { + return t !== Jz ? 1 : 0; + } + var hee = GN.Array, MN = [wt, ra0, M7(0)], dee = GN.Error; + see(ea0, [0, MN, {}]); + function $z(t) { + throw t; + } + Sz(function(t) { + return t[1] === MN ? [0, B7(t[2].toString())] : 0; + }), Sz(function(t) { + return t instanceof hee ? 0 : [0, B7(t.toString())]; + }); + var Dr = pu(e3r, r3r), Rn = pu(t3r, n3r), Bp = pu(i3r, u3r), Tl = pu(x3r, f3r), g1 = pu(a3r, o3r), BN = pu(s3r, c3r), Zz = pu(l3r, v3r), qN = pu(p3r, b3r), zv = pu(_3r, m3r), qp = pu(h3r, y3r), $e = pu(k3r, d3r), Yu = pu(E3r, w3r), qe = pu(g3r, S3r), UN = pu(T3r, F3r), di = pu(I3r, O3r), iu = pu(N3r, A3r), F1 = pu(P3r, C3r), As = pu(L3r, D3r), HN = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, Qz = function t(n, e, i) { + return t.fun(n, e, i); + }, kee = pu(j3r, R3r); + N(HN, function(t, n, e, i) { + u(f(e), j8r), o(f(e), M8r, G8r); + var x = i[1]; + u(f(e), B8r); + var c = 0; + le(function(y, T) { + y && u(f(e), R8r); + function E(d) { + return u(t, d); + } + return ur(iu[1], E, e, T), 1; + }, c, x), u(f(e), q8r), u(f(e), U8r), u(f(e), H8r), o(f(e), Y8r, X8r); + var s = i[2]; + u(f(e), V8r); + var p = 0; + return le(function(y, T) { + y && u(f(e), L8r); + function E(d) { + return u(t, d); + } + return ur(iu[1], E, e, T), 1; + }, p, s), u(f(e), z8r), u(f(e), K8r), u(f(e), W8r), o(f(e), $8r, J8r), o(n, e, i[3]), u(f(e), Z8r), u(f(e), Q8r); + }), N(Qz, function(t, n, e) { + var i = o(HN, t, n); + return o(C0(D8r), i, e); + }), mu(G3r, Dr, [0, HN, Qz]); + var XN = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, rK = function t(n, e, i) { + return t.fun(n, e, i); + }, Up = function t(n, e, i) { + return t.fun(n, e, i); + }, eK = function t(n, e) { + return t.fun(n, e); + }; + N(XN, function(t, n, e, i) { + u(f(e), N8r), o(n, e, i[1]), u(f(e), C8r); + var x = i[2]; + return ur(Up, function(c) { + return u(t, c); + }, e, x), u(f(e), P8r); + }), N(rK, function(t, n, e) { + var i = o(XN, t, n); + return o(C0(A8r), i, e); + }), N(Up, function(t, n, e) { + u(f(n), _8r), o(f(n), h8r, y8r); + var i = e[1]; + o(f(n), d8r, i), u(f(n), k8r), u(f(n), w8r), o(f(n), S8r, E8r); + var x = e[2]; + if (x) { + g(n, g8r); + var c = x[1], s = function(y, T) { + return g(y, m8r); + }, p = function(y) { + return u(t, y); + }; + R(Dr[1], p, s, n, c), g(n, F8r); + } else + g(n, T8r); + return u(f(n), O8r), u(f(n), I8r); + }), N(eK, function(t, n) { + var e = u(Up, t); + return o(C0(p8r), e, n); + }), mu(M3r, Rn, [0, XN, rK, Up, eK]); + var YN = function t(n, e, i) { + return t.fun(n, e, i); + }, nK = function t(n, e) { + return t.fun(n, e); + }, Hp = function t(n, e, i) { + return t.fun(n, e, i); + }, tK = function t(n, e) { + return t.fun(n, e); + }; + N(YN, function(t, n, e) { + u(f(n), v8r), o(t, n, e[1]), u(f(n), l8r); + var i = e[2]; + return ur(Hp, function(x) { + return u(t, x); + }, n, i), u(f(n), b8r); + }), N(nK, function(t, n) { + var e = u(YN, t); + return o(C0(s8r), e, n); + }), N(Hp, function(t, n, e) { + u(f(n), Z4r), o(f(n), r8r, Q4r); + var i = e[1]; + o(f(n), e8r, i), u(f(n), n8r), u(f(n), t8r), o(f(n), i8r, u8r); + var x = e[2]; + if (x) { + g(n, f8r); + var c = x[1], s = function(y, T) { + return g(y, $4r); + }, p = function(y) { + return u(t, y); + }; + R(Dr[1], p, s, n, c), g(n, x8r); + } else + g(n, o8r); + return u(f(n), a8r), u(f(n), c8r); + }), N(tK, function(t, n) { + var e = u(Hp, t); + return o(C0(J4r), e, n); + }), mu(B3r, Bp, [0, YN, nK, Hp, tK]); + function uK(t, n) { + u(f(t), G4r), o(f(t), B4r, M4r); + var e = n[1]; + o(f(t), q4r, e), u(f(t), U4r), u(f(t), H4r), o(f(t), Y4r, X4r); + var i = n[2]; + return o(f(t), V4r, i), u(f(t), z4r), u(f(t), K4r); + } + var iK = [0, uK, function(t) { + return o(C0(W4r), uK, t); + }], VN = function t(n, e, i) { + return t.fun(n, e, i); + }, fK = function t(n, e) { + return t.fun(n, e); + }, Xp = function t(n, e) { + return t.fun(n, e); + }, xK = function t(n) { + return t.fun(n); + }; + N(VN, function(t, n, e) { + u(f(n), k4r), o(f(n), E4r, w4r), o(Xp, n, e[1]), u(f(n), S4r), u(f(n), g4r), o(f(n), T4r, F4r); + var i = e[2]; + o(f(n), O4r, i), u(f(n), I4r), u(f(n), A4r), o(f(n), C4r, N4r); + var x = e[3]; + if (x) { + g(n, P4r); + var c = x[1], s = function(y, T) { + return g(y, d4r); + }, p = function(y) { + return u(t, y); + }; + R(Dr[1], p, s, n, c), g(n, D4r); + } else + g(n, L4r); + return u(f(n), R4r), u(f(n), j4r); + }), N(fK, function(t, n) { + var e = u(VN, t); + return o(C0(h4r), e, n); + }), N(Xp, function(t, n) { + if (typeof n == "number") + return g(t, u4r); + switch (n[0]) { + case 0: + u(f(t), i4r); + var e = n[1]; + return o(f(t), f4r, e), u(f(t), x4r); + case 1: + u(f(t), o4r); + var i = n[1]; + return o(f(t), a4r, i), u(f(t), c4r); + case 2: + u(f(t), s4r); + var x = n[1]; + return o(f(t), v4r, x), u(f(t), l4r); + case 3: + u(f(t), b4r); + var c = n[1]; + return o(f(t), p4r, c), u(f(t), m4r); + default: + return u(f(t), _4r), o(iK[1], t, n[1]), u(f(t), y4r); + } + }), N(xK, function(t) { + return o(C0(t4r), Xp, t); + }), mu(q3r, Tl, [0, iK, VN, fK, Xp, xK]); + var zN = function t(n, e, i) { + return t.fun(n, e, i); + }, oK = function t(n, e) { + return t.fun(n, e); + }; + N(zN, function(t, n, e) { + u(f(n), Mbr), o(f(n), qbr, Bbr); + var i = e[1]; + o(f(n), Ubr, i), u(f(n), Hbr), u(f(n), Xbr), o(f(n), Vbr, Ybr); + var x = e[2]; + o(f(n), zbr, x), u(f(n), Kbr), u(f(n), Wbr), o(f(n), $br, Jbr); + var c = e[3]; + if (c) { + g(n, Zbr); + var s = c[1], p = function(T, E) { + return g(T, Gbr); + }, y = function(T) { + return u(t, T); + }; + R(Dr[1], y, p, n, s), g(n, Qbr); + } else + g(n, r4r); + return u(f(n), e4r), u(f(n), n4r); + }), N(oK, function(t, n) { + var e = u(zN, t); + return o(C0(jbr), e, n); + }), mu(U3r, g1, [0, zN, oK]); + var KN = function t(n, e, i) { + return t.fun(n, e, i); + }, aK = function t(n, e) { + return t.fun(n, e); + }; + N(KN, function(t, n, e) { + u(f(n), hbr), o(f(n), kbr, dbr); + var i = e[1]; + o(f(n), wbr, i), u(f(n), Ebr), u(f(n), Sbr), o(f(n), Fbr, gbr); + var x = e[2]; + o(f(n), Tbr, x), u(f(n), Obr), u(f(n), Ibr), o(f(n), Nbr, Abr); + var c = e[3]; + if (c) { + g(n, Cbr); + var s = c[1], p = function(T, E) { + return g(T, ybr); + }, y = function(T) { + return u(t, T); + }; + R(Dr[1], y, p, n, s), g(n, Pbr); + } else + g(n, Dbr); + return u(f(n), Lbr), u(f(n), Rbr); + }), N(aK, function(t, n) { + var e = u(KN, t); + return o(C0(_br), e, n); + }), mu(H3r, BN, [0, KN, aK]); + var WN = function t(n, e, i) { + return t.fun(n, e, i); + }, cK = function t(n, e) { + return t.fun(n, e); + }; + N(WN, function(t, n, e) { + u(f(n), Qlr), o(f(n), ebr, rbr); + var i = e[1]; + o(f(n), nbr, i), u(f(n), tbr), u(f(n), ubr), o(f(n), fbr, ibr); + var x = e[2]; + o(f(n), xbr, x), u(f(n), obr), u(f(n), abr), o(f(n), sbr, cbr); + var c = e[3]; + if (c) { + g(n, vbr); + var s = c[1], p = function(T, E) { + return g(T, Zlr); + }, y = function(T) { + return u(t, T); + }; + R(Dr[1], y, p, n, s), g(n, lbr); + } else + g(n, bbr); + return u(f(n), pbr), u(f(n), mbr); + }), N(cK, function(t, n) { + var e = u(WN, t); + return o(C0($lr), e, n); + }), mu(X3r, Zz, [0, WN, cK]); + var JN = function t(n, e, i) { + return t.fun(n, e, i); + }, sK = function t(n, e) { + return t.fun(n, e); + }; + N(JN, function(t, n, e) { + u(f(n), Glr), o(f(n), Blr, Mlr); + var i = e[1]; + o(f(n), qlr, i), u(f(n), Ulr), u(f(n), Hlr), o(f(n), Ylr, Xlr); + var x = e[2]; + if (x) { + g(n, Vlr); + var c = x[1], s = function(y, T) { + return g(y, jlr); + }, p = function(y) { + return u(t, y); + }; + R(Dr[1], p, s, n, c), g(n, zlr); + } else + g(n, Klr); + return u(f(n), Wlr), u(f(n), Jlr); + }), N(sK, function(t, n) { + var e = u(JN, t); + return o(C0(Rlr), e, n); + }), mu(Y3r, qN, [0, JN, sK]); + var $N = function t(n, e, i) { + return t.fun(n, e, i); + }, vK = function t(n, e) { + return t.fun(n, e); + }, Yp = function t(n, e) { + return t.fun(n, e); + }, lK = function t(n) { + return t.fun(n); + }, Vp = function t(n, e, i) { + return t.fun(n, e, i); + }, bK = function t(n, e) { + return t.fun(n, e); + }; + N($N, function(t, n, e) { + u(f(n), Plr), o(t, n, e[1]), u(f(n), Dlr); + var i = e[2]; + return ur(Vp, function(x) { + return u(t, x); + }, n, i), u(f(n), Llr); + }), N(vK, function(t, n) { + var e = u($N, t); + return o(C0(Clr), e, n); + }), N(Yp, function(t, n) { + return n ? g(t, Alr) : g(t, Nlr); + }), N(lK, function(t) { + return o(C0(Ilr), Yp, t); + }), N(Vp, function(t, n, e) { + u(f(n), _lr), o(f(n), hlr, ylr), o(Yp, n, e[1]), u(f(n), dlr), u(f(n), klr), o(f(n), Elr, wlr); + var i = e[2]; + if (i) { + g(n, Slr); + var x = i[1], c = function(p, y) { + return g(p, mlr); + }, s = function(p) { + return u(t, p); + }; + R(Dr[1], s, c, n, x), g(n, glr); + } else + g(n, Flr); + return u(f(n), Tlr), u(f(n), Olr); + }), N(bK, function(t, n) { + var e = u(Vp, t); + return o(C0(plr), e, n); + }), mu(V3r, zv, [0, $N, vK, Yp, lK, Vp, bK]); + var ZN = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, pK = function t(n, e, i) { + return t.fun(n, e, i); + }, QN = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, mK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(ZN, function(t, n, e, i) { + u(f(e), vlr), o(t, e, i[1]), u(f(e), llr); + var x = i[2]; + function c(p) { + return u(n, p); + } + function s(p) { + return u(t, p); + } + return R(qp[3], s, c, e, x), u(f(e), blr); + }), N(pK, function(t, n, e) { + var i = o(ZN, t, n); + return o(C0(slr), i, e); + }), N(QN, function(t, n, e, i) { + u(f(e), Q2r), o(f(e), elr, rlr); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), nlr), u(f(e), tlr), o(f(e), ilr, ulr); + var p = i[2]; + if (p) { + g(e, flr); + var y = p[1], T = function(d, w) { + return g(d, Z2r); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, xlr); + } else + g(e, olr); + return u(f(e), alr), u(f(e), clr); + }), N(mK, function(t, n, e) { + var i = o(QN, t, n); + return o(C0($2r), i, e); + }), mu(z3r, qp, [0, ZN, pK, QN, mK]); + var rC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, _K = function t(n, e, i) { + return t.fun(n, e, i); + }, zp = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, yK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(rC, function(t, n, e, i) { + u(f(e), K2r), o(t, e, i[1]), u(f(e), W2r); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(zp, function(s) { + return u(t, s); + }, c, e, x), u(f(e), J2r); + }), N(_K, function(t, n, e) { + var i = o(rC, t, n); + return o(C0(z2r), i, e); + }), N(zp, function(t, n, e, i) { + u(f(e), A2r), o(f(e), C2r, N2r); + var x = i[1]; + if (x) { + g(e, P2r); + var c = x[1], s = function(w) { + return u(n, w); + }, p = function(w) { + return u(t, w); + }; + R(Rn[1], p, s, e, c), g(e, D2r); + } else + g(e, L2r); + u(f(e), R2r), u(f(e), j2r), o(f(e), M2r, G2r); + var y = i[2]; + function T(w) { + return u(n, w); + } + function E(w) { + return u(t, w); + } + R($e[13], E, T, e, y), u(f(e), B2r), u(f(e), q2r), o(f(e), H2r, U2r); + var d = i[3]; + return o(f(e), X2r, d), u(f(e), Y2r), u(f(e), V2r); + }), N(yK, function(t, n, e) { + var i = o(zp, t, n); + return o(C0(I2r), i, e); + }); + var eC = [0, rC, _K, zp, yK], nC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, hK = function t(n, e, i) { + return t.fun(n, e, i); + }, Kp = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, dK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(nC, function(t, n, e, i) { + u(f(e), F2r), o(t, e, i[1]), u(f(e), T2r); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Kp, function(s) { + return u(t, s); + }, c, e, x), u(f(e), O2r); + }), N(hK, function(t, n, e) { + var i = o(nC, t, n); + return o(C0(g2r), i, e); + }), N(Kp, function(t, n, e, i) { + u(f(e), l2r), o(f(e), p2r, b2r); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(eC[1], s, c, e, x), u(f(e), m2r), u(f(e), _2r), o(f(e), h2r, y2r); + var p = i[2]; + if (p) { + g(e, d2r); + var y = p[1], T = function(d, w) { + return g(d, v2r); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, k2r); + } else + g(e, w2r); + return u(f(e), E2r), u(f(e), S2r); + }), N(dK, function(t, n, e) { + var i = o(Kp, t, n); + return o(C0(s2r), i, e); + }); + var kK = [0, nC, hK, Kp, dK], tC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, wK = function t(n, e, i) { + return t.fun(n, e, i); + }, Wp = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, EK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(tC, function(t, n, e, i) { + u(f(e), o2r), o(t, e, i[1]), u(f(e), a2r); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Wp, function(s) { + return u(t, s); + }, c, e, x), u(f(e), c2r); + }), N(wK, function(t, n, e) { + var i = o(tC, t, n); + return o(C0(x2r), i, e); + }), N(Wp, function(t, n, e, i) { + u(f(e), Wvr), o(f(e), $vr, Jvr); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R($e[17], s, c, e, x), u(f(e), Zvr), u(f(e), Qvr), o(f(e), e2r, r2r); + var p = i[2]; + if (p) { + g(e, n2r); + var y = p[1], T = function(d, w) { + return g(d, Kvr); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, t2r); + } else + g(e, u2r); + return u(f(e), i2r), u(f(e), f2r); + }), N(EK, function(t, n, e) { + var i = o(Wp, t, n); + return o(C0(zvr), i, e); + }); + var SK = [0, tC, wK, Wp, EK], uC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, gK = function t(n, e, i) { + return t.fun(n, e, i); + }, Jp = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, FK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(uC, function(t, n, e, i) { + u(f(e), Xvr), o(t, e, i[1]), u(f(e), Yvr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Jp, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Vvr); + }), N(gK, function(t, n, e) { + var i = o(uC, t, n); + return o(C0(Hvr), i, e); + }), N(Jp, function(t, n, e, i) { + u(f(e), pvr), o(f(e), _vr, mvr); + var x = i[1]; + if (x) { + g(e, yvr); + var c = x[1], s = function(V) { + return u(n, V); + }, p = function(V) { + return u(t, V); + }; + R(SK[1], p, s, e, c), g(e, hvr); + } else + g(e, dvr); + u(f(e), kvr), u(f(e), wvr), o(f(e), Svr, Evr); + var y = i[2]; + u(f(e), gvr); + var T = 0; + le(function(V, f0) { + V && u(f(e), bvr); + function m0(g0) { + return u(n, g0); + } + function k0(g0) { + return u(t, g0); + } + return R(eC[1], k0, m0, e, f0), 1; + }, T, y), u(f(e), Fvr), u(f(e), Tvr), u(f(e), Ovr), o(f(e), Avr, Ivr); + var E = i[3]; + if (E) { + g(e, Nvr); + var d = E[1], w = function(V) { + return u(n, V); + }, G = function(V) { + return u(t, V); + }; + R(kK[1], G, w, e, d), g(e, Cvr); + } else + g(e, Pvr); + u(f(e), Dvr), u(f(e), Lvr), o(f(e), jvr, Rvr); + var A = i[4]; + if (A) { + g(e, Gvr); + var S = A[1], M = function(V, f0) { + u(f(V), vvr); + var m0 = 0; + return le(function(k0, g0) { + k0 && u(f(V), svr); + function e0(x0) { + return u(t, x0); + } + return ur(iu[1], e0, V, g0), 1; + }, m0, f0), u(f(V), lvr); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, Mvr); + } else + g(e, Bvr); + return u(f(e), qvr), u(f(e), Uvr); + }), N(FK, function(t, n, e) { + var i = o(Jp, t, n); + return o(C0(cvr), i, e); + }); + var TK = [0, uC, gK, Jp, FK], iC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, OK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(iC, function(t, n, e, i) { + u(f(e), q1r), o(f(e), H1r, U1r); + var x = i[1]; + if (x) { + g(e, X1r); + var c = x[1], s = function(V) { + return u(n, V); + }, p = function(V) { + return u(t, V); + }; + R($e[22][1], p, s, e, c), g(e, Y1r); + } else + g(e, V1r); + u(f(e), z1r), u(f(e), K1r), o(f(e), J1r, W1r); + var y = i[2]; + function T(V) { + return u(n, V); + } + function E(V) { + return u(t, V); + } + R(TK[1], E, T, e, y), u(f(e), $1r), u(f(e), Z1r), o(f(e), rvr, Q1r); + var d = i[3]; + function w(V) { + return u(n, V); + } + function G(V) { + return u(t, V); + } + R($e[13], G, w, e, d), u(f(e), evr), u(f(e), nvr), o(f(e), uvr, tvr); + var A = i[4]; + if (A) { + g(e, ivr); + var S = A[1], M = function(V, f0) { + return g(V, B1r); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, fvr); + } else + g(e, xvr); + return u(f(e), ovr), u(f(e), avr); + }), N(OK, function(t, n, e) { + var i = o(iC, t, n); + return o(C0(M1r), i, e); + }); + var Ol = [0, eC, kK, SK, TK, iC, OK], $p = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, IK = function t(n, e, i) { + return t.fun(n, e, i); + }, Zp = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, AK = function t(n, e, i) { + return t.fun(n, e, i); + }, Qp = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, NK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N($p, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), L1r); + var x = i[1], c = function(T) { + return u(n, T); + }, s = function(T) { + return u(t, T); + }; + return R(Rn[1], s, c, e, x), u(f(e), R1r); + } + u(f(e), j1r); + var p = i[1]; + function y(T) { + return u(n, T); + } + return R(Zp, function(T) { + return u(t, T); + }, y, e, p), u(f(e), G1r); + }), N(IK, function(t, n, e) { + var i = o($p, t, n); + return o(C0(D1r), i, e); + }), N(Zp, function(t, n, e, i) { + u(f(e), N1r), o(t, e, i[1]), u(f(e), C1r); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Qp, function(s) { + return u(t, s); + }, c, e, x), u(f(e), P1r); + }), N(AK, function(t, n, e) { + var i = o(Zp, t, n); + return o(C0(A1r), i, e); + }), N(Qp, function(t, n, e, i) { + u(f(e), k1r), o(f(e), E1r, w1r); + var x = i[1]; + function c(T) { + return u(n, T); + } + R($p, function(T) { + return u(t, T); + }, c, e, x), u(f(e), S1r), u(f(e), g1r), o(f(e), T1r, F1r); + var s = i[2]; + function p(T) { + return u(n, T); + } + function y(T) { + return u(t, T); + } + return R(Rn[1], y, p, e, s), u(f(e), O1r), u(f(e), I1r); + }), N(NK, function(t, n, e) { + var i = o(Qp, t, n); + return o(C0(d1r), i, e); + }); + var CK = [0, $p, IK, Zp, AK, Qp, NK], fC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, PK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(fC, function(t, n, e, i) { + u(f(e), e1r), o(f(e), t1r, n1r); + var x = i[1]; + function c(S) { + return u(n, S); + } + function s(S) { + return u(t, S); + } + R(CK[1], s, c, e, x), u(f(e), u1r), u(f(e), i1r), o(f(e), x1r, f1r); + var p = i[2]; + if (p) { + g(e, o1r); + var y = p[1], T = function(S) { + return u(n, S); + }, E = function(S) { + return u(t, S); + }; + R($e[23][1], E, T, e, y), g(e, a1r); + } else + g(e, c1r); + u(f(e), s1r), u(f(e), v1r), o(f(e), b1r, l1r); + var d = i[3]; + if (d) { + g(e, p1r); + var w = d[1], G = function(S, M) { + return g(S, r1r); + }, A = function(S) { + return u(t, S); + }; + R(Dr[1], A, G, e, w), g(e, m1r); + } else + g(e, _1r); + return u(f(e), y1r), u(f(e), h1r); + }), N(PK, function(t, n, e) { + var i = o(fC, t, n); + return o(C0(Qsr), i, e); + }); + var xC = [0, CK, fC, PK], oC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, DK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(oC, function(t, n, e, i) { + u(f(e), jsr), o(f(e), Msr, Gsr); + var x = i[1]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R($e[13], s, c, e, x), u(f(e), Bsr), u(f(e), qsr), o(f(e), Hsr, Usr); + var p = i[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R($e[13], T, y, e, p), u(f(e), Xsr), u(f(e), Ysr), o(f(e), zsr, Vsr); + var E = i[3]; + if (E) { + g(e, Ksr); + var d = E[1], w = function(A, S) { + return g(A, Rsr); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, Wsr); + } else + g(e, Jsr); + return u(f(e), $sr), u(f(e), Zsr); + }), N(DK, function(t, n, e) { + var i = o(oC, t, n); + return o(C0(Lsr), i, e); + }); + var aC = [0, oC, DK], cC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, LK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(cC, function(t, n, e, i) { + u(f(e), gsr), o(f(e), Tsr, Fsr); + var x = i[1]; + function c(y) { + return u(n, y); + } + function s(y) { + return u(t, y); + } + R(aC[1], s, c, e, x), u(f(e), Osr), u(f(e), Isr), o(f(e), Nsr, Asr); + var p = i[2]; + return o(f(e), Csr, p), u(f(e), Psr), u(f(e), Dsr); + }), N(LK, function(t, n, e) { + var i = o(cC, t, n); + return o(C0(Ssr), i, e); + }); + var RK = [0, cC, LK], sC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, jK = function t(n, e, i) { + return t.fun(n, e, i); + }, r5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, GK = function t(n, e, i) { + return t.fun(n, e, i); + }, e5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, MK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(sC, function(t, n, e, i) { + u(f(e), ksr), o(t, e, i[1]), u(f(e), wsr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(r5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Esr); + }), N(jK, function(t, n, e) { + var i = o(sC, t, n); + return o(C0(dsr), i, e); + }), N(r5, function(t, n, e, i) { + u(f(e), Ncr), o(f(e), Pcr, Ccr); + var x = i[1]; + function c(m0) { + return u(n, m0); + } + function s(m0) { + return u(t, m0); + } + R(qe[7][1][1], s, c, e, x), u(f(e), Dcr), u(f(e), Lcr), o(f(e), jcr, Rcr); + var p = i[2]; + function y(m0) { + return u(n, m0); + } + R(e5, function(m0) { + return u(t, m0); + }, y, e, p), u(f(e), Gcr), u(f(e), Mcr), o(f(e), qcr, Bcr); + var T = i[3]; + o(f(e), Ucr, T), u(f(e), Hcr), u(f(e), Xcr), o(f(e), Vcr, Ycr); + var E = i[4]; + o(f(e), zcr, E), u(f(e), Kcr), u(f(e), Wcr), o(f(e), $cr, Jcr); + var d = i[5]; + o(f(e), Zcr, d), u(f(e), Qcr), u(f(e), rsr), o(f(e), nsr, esr); + var w = i[6]; + o(f(e), tsr, w), u(f(e), usr), u(f(e), isr), o(f(e), xsr, fsr); + var G = i[7]; + if (G) { + g(e, osr); + var A = G[1], S = function(m0) { + return u(t, m0); + }; + ur(zv[1], S, e, A), g(e, asr); + } else + g(e, csr); + u(f(e), ssr), u(f(e), vsr), o(f(e), bsr, lsr); + var M = i[8]; + if (M) { + g(e, psr); + var K = M[1], V = function(m0, k0) { + return g(m0, Acr); + }, f0 = function(m0) { + return u(t, m0); + }; + R(Dr[1], f0, V, e, K), g(e, msr); + } else + g(e, _sr); + return u(f(e), ysr), u(f(e), hsr); + }), N(GK, function(t, n, e) { + var i = o(r5, t, n); + return o(C0(Icr), i, e); + }), N(e5, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), _cr); + var x = i[1], c = function(S) { + return u(n, S); + }, s = function(S) { + return u(t, S); + }; + return R($e[13], s, c, e, x), u(f(e), ycr); + case 1: + var p = i[1]; + u(f(e), hcr), u(f(e), dcr), o(t, e, p[1]), u(f(e), kcr); + var y = p[2], T = function(S) { + return u(n, S); + }, E = function(S) { + return u(t, S); + }; + return R(Ol[5], E, T, e, y), u(f(e), wcr), u(f(e), Ecr); + default: + var d = i[1]; + u(f(e), Scr), u(f(e), gcr), o(t, e, d[1]), u(f(e), Fcr); + var w = d[2], G = function(S) { + return u(n, S); + }, A = function(S) { + return u(t, S); + }; + return R(Ol[5], A, G, e, w), u(f(e), Tcr), u(f(e), Ocr); + } + }), N(MK, function(t, n, e) { + var i = o(e5, t, n); + return o(C0(mcr), i, e); + }); + var BK = [0, sC, jK, r5, GK, e5, MK], vC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, qK = function t(n, e, i) { + return t.fun(n, e, i); + }, n5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, UK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(vC, function(t, n, e, i) { + u(f(e), lcr), o(t, e, i[1]), u(f(e), bcr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(n5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), pcr); + }), N(qK, function(t, n, e) { + var i = o(vC, t, n); + return o(C0(vcr), i, e); + }), N(n5, function(t, n, e, i) { + u(f(e), rcr), o(f(e), ncr, ecr); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R($e[13], s, c, e, x), u(f(e), tcr), u(f(e), ucr), o(f(e), fcr, icr); + var p = i[2]; + if (p) { + g(e, xcr); + var y = p[1], T = function(d, w) { + return g(d, Qar); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, ocr); + } else + g(e, acr); + return u(f(e), ccr), u(f(e), scr); + }), N(UK, function(t, n, e) { + var i = o(n5, t, n); + return o(C0(Zar), i, e); + }); + var HK = [0, vC, qK, n5, UK], t5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, XK = function t(n, e, i) { + return t.fun(n, e, i); + }, lC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, YK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(t5, function(t, n, e, i) { + u(f(e), _ar), o(f(e), har, yar); + var x = i[1]; + if (x) { + g(e, dar); + var c = x[1], s = function(g0) { + return u(t, g0); + }, p = function(g0) { + return u(t, g0); + }; + R(Rn[1], p, s, e, c), g(e, kar); + } else + g(e, war); + u(f(e), Ear), u(f(e), Sar), o(f(e), Far, gar); + var y = i[2]; + function T(g0) { + return u(n, g0); + } + function E(g0) { + return u(t, g0); + } + R($e[13], E, T, e, y), u(f(e), Tar), u(f(e), Oar), o(f(e), Aar, Iar); + var d = i[3]; + function w(g0) { + return u(n, g0); + } + function G(g0) { + return u(t, g0); + } + R($e[13], G, w, e, d), u(f(e), Nar), u(f(e), Car), o(f(e), Dar, Par); + var A = i[4]; + o(f(e), Lar, A), u(f(e), Rar), u(f(e), jar), o(f(e), Mar, Gar); + var S = i[5]; + if (S) { + g(e, Bar); + var M = S[1], K = function(g0) { + return u(t, g0); + }; + ur(zv[1], K, e, M), g(e, qar); + } else + g(e, Uar); + u(f(e), Har), u(f(e), Xar), o(f(e), Var, Yar); + var V = i[6]; + if (V) { + g(e, zar); + var f0 = V[1], m0 = function(g0, e0) { + return g(g0, mar); + }, k0 = function(g0) { + return u(t, g0); + }; + R(Dr[1], k0, m0, e, f0), g(e, Kar); + } else + g(e, War); + return u(f(e), Jar), u(f(e), $ar); + }), N(XK, function(t, n, e) { + var i = o(t5, t, n); + return o(C0(par), i, e); + }), N(lC, function(t, n, e, i) { + u(f(e), sar), o(t, e, i[1]), u(f(e), lar); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(t5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), bar); + }), N(YK, function(t, n, e) { + var i = o(lC, t, n); + return o(C0(car), i, e); + }); + var VK = [0, t5, XK, lC, YK], bC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, zK = function t(n, e, i) { + return t.fun(n, e, i); + }, u5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, KK = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(bC, function(t, n, e, i) { + u(f(e), xar), o(t, e, i[1]), u(f(e), oar); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(u5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), aar); + }), N(zK, function(t, n, e) { + var i = o(bC, t, n); + return o(C0(far), i, e); + }), N(u5, function(t, n, e, i) { + u(f(e), Bor), o(f(e), Uor, qor); + var x = i[1]; + u(f(e), Hor), o(t, e, x[1]), u(f(e), Xor); + var c = x[2]; + function s(G) { + return u(n, G); + } + function p(G) { + return u(t, G); + } + R(Ol[5], p, s, e, c), u(f(e), Yor), u(f(e), Vor), u(f(e), zor), o(f(e), Wor, Kor); + var y = i[2]; + o(f(e), Jor, y), u(f(e), $or), u(f(e), Zor), o(f(e), rar, Qor); + var T = i[3]; + if (T) { + g(e, ear); + var E = T[1], d = function(G, A) { + return g(G, Mor); + }, w = function(G) { + return u(t, G); + }; + R(Dr[1], w, d, e, E), g(e, nar); + } else + g(e, tar); + return u(f(e), uar), u(f(e), iar); + }), N(KK, function(t, n, e) { + var i = o(u5, t, n); + return o(C0(Gor), i, e); + }); + var WK = [0, bC, zK, u5, KK], pC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, JK = function t(n, e, i) { + return t.fun(n, e, i); + }, i5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, $K = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(pC, function(t, n, e, i) { + u(f(e), Lor), o(t, e, i[1]), u(f(e), Ror); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(i5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), jor); + }), N(JK, function(t, n, e) { + var i = o(pC, t, n); + return o(C0(Dor), i, e); + }), N(i5, function(t, n, e, i) { + u(f(e), nor), o(f(e), uor, tor); + var x = i[1]; + function c(K) { + return u(t, K); + } + function s(K) { + return u(t, K); + } + R(Rn[1], s, c, e, x), u(f(e), ior), u(f(e), xor), o(f(e), aor, oor); + var p = i[2]; + function y(K) { + return u(n, K); + } + function T(K) { + return u(t, K); + } + R($e[13], T, y, e, p), u(f(e), cor), u(f(e), sor), o(f(e), lor, vor); + var E = i[3]; + o(f(e), bor, E), u(f(e), por), u(f(e), mor), o(f(e), yor, _or); + var d = i[4]; + o(f(e), hor, d), u(f(e), dor), u(f(e), kor), o(f(e), Eor, wor); + var w = i[5]; + o(f(e), Sor, w), u(f(e), gor), u(f(e), For), o(f(e), Oor, Tor); + var G = i[6]; + if (G) { + g(e, Ior); + var A = G[1], S = function(K, V) { + return g(K, eor); + }, M = function(K) { + return u(t, K); + }; + R(Dr[1], M, S, e, A), g(e, Aor); + } else + g(e, Nor); + return u(f(e), Cor), u(f(e), Por); + }), N($K, function(t, n, e) { + var i = o(i5, t, n); + return o(C0(ror), i, e); + }); + var ZK = [0, pC, JK, i5, $K], mC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, QK = function t(n, e, i) { + return t.fun(n, e, i); + }, f5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, rW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(mC, function(t, n, e, i) { + u(f(e), Axr), o(f(e), Cxr, Nxr); + var x = i[1]; + o(f(e), Pxr, x), u(f(e), Dxr), u(f(e), Lxr), o(f(e), jxr, Rxr); + var c = i[2]; + o(f(e), Gxr, c), u(f(e), Mxr), u(f(e), Bxr), o(f(e), Uxr, qxr); + var s = i[3]; + u(f(e), Hxr); + var p = 0; + le(function(w, G) { + w && u(f(e), Ixr); + function A(S) { + return u(n, S); + } + return R(f5, function(S) { + return u(t, S); + }, A, e, G), 1; + }, p, s), u(f(e), Xxr), u(f(e), Yxr), u(f(e), Vxr), o(f(e), Kxr, zxr); + var y = i[4]; + if (y) { + g(e, Wxr); + var T = y[1], E = function(w, G) { + u(f(w), Txr); + var A = 0; + return le(function(S, M) { + S && u(f(w), Fxr); + function K(V) { + return u(t, V); + } + return ur(iu[1], K, w, M), 1; + }, A, G), u(f(w), Oxr); + }, d = function(w) { + return u(t, w); + }; + R(Dr[1], d, E, e, T), g(e, Jxr); + } else + g(e, $xr); + return u(f(e), Zxr), u(f(e), Qxr); + }), N(QK, function(t, n, e) { + var i = o(mC, t, n); + return o(C0(gxr), i, e); + }), N(f5, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), pxr); + var x = i[1], c = function(f0) { + return u(n, f0); + }, s = function(f0) { + return u(t, f0); + }; + return R(BK[1], s, c, e, x), u(f(e), mxr); + case 1: + u(f(e), _xr); + var p = i[1], y = function(f0) { + return u(n, f0); + }, T = function(f0) { + return u(t, f0); + }; + return R(HK[1], T, y, e, p), u(f(e), yxr); + case 2: + u(f(e), hxr); + var E = i[1], d = function(f0) { + return u(n, f0); + }, w = function(f0) { + return u(t, f0); + }; + return R(VK[3], w, d, e, E), u(f(e), dxr); + case 3: + u(f(e), kxr); + var G = i[1], A = function(f0) { + return u(n, f0); + }, S = function(f0) { + return u(t, f0); + }; + return R(WK[1], S, A, e, G), u(f(e), wxr); + default: + u(f(e), Exr); + var M = i[1], K = function(f0) { + return u(n, f0); + }, V = function(f0) { + return u(t, f0); + }; + return R(ZK[1], V, K, e, M), u(f(e), Sxr); + } + }), N(rW, function(t, n, e) { + var i = o(f5, t, n); + return o(C0(bxr), i, e); + }); + var _C = [0, BK, HK, VK, WK, ZK, mC, QK, f5, rW], yC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, eW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(yC, function(t, n, e, i) { + u(f(e), zfr), o(f(e), Wfr, Kfr); + var x = i[1]; + u(f(e), Jfr), o(t, e, x[1]), u(f(e), $fr); + var c = x[2]; + function s(A) { + return u(n, A); + } + function p(A) { + return u(t, A); + } + R(_C[6], p, s, e, c), u(f(e), Zfr), u(f(e), Qfr), u(f(e), rxr), o(f(e), nxr, exr); + var y = i[2]; + u(f(e), txr); + var T = 0; + le(function(A, S) { + A && u(f(e), Hfr), u(f(e), Xfr), o(t, e, S[1]), u(f(e), Yfr); + var M = S[2]; + function K(f0) { + return u(n, f0); + } + function V(f0) { + return u(t, f0); + } + return R(xC[2], V, K, e, M), u(f(e), Vfr), 1; + }, T, y), u(f(e), uxr), u(f(e), ixr), u(f(e), fxr), o(f(e), oxr, xxr); + var E = i[3]; + if (E) { + g(e, axr); + var d = E[1], w = function(A, S) { + return g(A, Ufr); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, cxr); + } else + g(e, sxr); + return u(f(e), vxr), u(f(e), lxr); + }), N(eW, function(t, n, e) { + var i = o(yC, t, n); + return o(C0(qfr), i, e); + }); + var nW = [0, yC, eW], hC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, tW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(hC, function(t, n, e, i) { + u(f(e), Ifr), o(f(e), Nfr, Afr); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R($e[13], s, c, e, x), u(f(e), Cfr), u(f(e), Pfr), o(f(e), Lfr, Dfr); + var p = i[2]; + if (p) { + g(e, Rfr); + var y = p[1], T = function(d, w) { + return g(d, Ofr); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, jfr); + } else + g(e, Gfr); + return u(f(e), Mfr), u(f(e), Bfr); + }), N(tW, function(t, n, e) { + var i = o(hC, t, n); + return o(C0(Tfr), i, e); + }); + var uW = [0, hC, tW], x5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, iW = function t(n, e, i) { + return t.fun(n, e, i); + }, o5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, fW = function t(n, e, i) { + return t.fun(n, e, i); + }, a5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, xW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(x5, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), Efr); + var x = i[1], c = function(T) { + return u(n, T); + }, s = function(T) { + return u(t, T); + }; + return R(Rn[1], s, c, e, x), u(f(e), Sfr); + } + u(f(e), gfr); + var p = i[1]; + function y(T) { + return u(n, T); + } + return R(a5, function(T) { + return u(t, T); + }, y, e, p), u(f(e), Ffr); + }), N(iW, function(t, n, e) { + var i = o(x5, t, n); + return o(C0(wfr), i, e); + }), N(o5, function(t, n, e, i) { + u(f(e), lfr), o(f(e), pfr, bfr); + var x = i[1]; + function c(T) { + return u(n, T); + } + R(x5, function(T) { + return u(t, T); + }, c, e, x), u(f(e), mfr), u(f(e), _fr), o(f(e), hfr, yfr); + var s = i[2]; + function p(T) { + return u(n, T); + } + function y(T) { + return u(t, T); + } + return R(Rn[1], y, p, e, s), u(f(e), dfr), u(f(e), kfr); + }), N(fW, function(t, n, e) { + var i = o(o5, t, n); + return o(C0(vfr), i, e); + }), N(a5, function(t, n, e, i) { + u(f(e), afr), o(n, e, i[1]), u(f(e), cfr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(o5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), sfr); + }), N(xW, function(t, n, e) { + var i = o(a5, t, n); + return o(C0(ofr), i, e); + }); + var oW = [0, x5, iW, o5, fW, a5, xW], dC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, aW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(dC, function(t, n, e, i) { + u(f(e), Jir), o(f(e), Zir, $ir); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(oW[1], s, c, e, x), u(f(e), Qir), u(f(e), rfr), o(f(e), nfr, efr); + var p = i[2]; + if (p) { + g(e, tfr); + var y = p[1], T = function(d, w) { + return g(d, Wir); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, ufr); + } else + g(e, ifr); + return u(f(e), ffr), u(f(e), xfr); + }), N(aW, function(t, n, e) { + var i = o(dC, t, n); + return o(C0(Kir), i, e); + }); + var cW = [0, oW, dC, aW], kC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, sW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(kC, function(t, n, e, i) { + u(f(e), Dir), o(f(e), Rir, Lir); + var x = i[1]; + u(f(e), jir); + var c = 0; + le(function(E, d) { + E && u(f(e), Pir); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R($e[13], G, w, e, d), 1; + }, c, x), u(f(e), Gir), u(f(e), Mir), u(f(e), Bir), o(f(e), Uir, qir); + var s = i[2]; + if (s) { + g(e, Hir); + var p = s[1], y = function(E, d) { + return g(E, Cir); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, Xir); + } else + g(e, Yir); + return u(f(e), Vir), u(f(e), zir); + }), N(sW, function(t, n, e) { + var i = o(kC, t, n); + return o(C0(Nir), i, e); + }); + var vW = [0, kC, sW], wC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, lW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(wC, function(t, n, e, i) { + u(f(e), hir), o(f(e), kir, dir); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R($e[13], s, c, e, x), u(f(e), wir), u(f(e), Eir), o(f(e), gir, Sir); + var p = i[2]; + if (p) { + g(e, Fir); + var y = p[1], T = function(d, w) { + return g(d, yir); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, Tir); + } else + g(e, Oir); + return u(f(e), Iir), u(f(e), Air); + }), N(lW, function(t, n, e) { + var i = o(wC, t, n); + return o(C0(_ir), i, e); + }); + var bW = [0, wC, lW], EC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, pW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(EC, function(t, n, e, i) { + u(f(e), Q7r), o(f(e), eir, rir); + var x = i[1]; + u(f(e), nir); + var c = x[1]; + function s(K) { + return u(n, K); + } + function p(K) { + return u(t, K); + } + R($e[13], p, s, e, c), u(f(e), tir); + var y = x[2]; + function T(K) { + return u(n, K); + } + function E(K) { + return u(t, K); + } + R($e[13], E, T, e, y), u(f(e), uir), u(f(e), iir); + var d = x[3], w = 0; + le(function(K, V) { + K && u(f(e), Z7r); + function f0(k0) { + return u(n, k0); + } + function m0(k0) { + return u(t, k0); + } + return R($e[13], m0, f0, e, V), 1; + }, w, d), u(f(e), fir), u(f(e), xir), u(f(e), oir), u(f(e), air), o(f(e), sir, cir); + var G = i[2]; + if (G) { + g(e, vir); + var A = G[1], S = function(K, V) { + return g(K, $7r); + }, M = function(K) { + return u(t, K); + }; + R(Dr[1], M, S, e, A), g(e, lir); + } else + g(e, bir); + return u(f(e), pir), u(f(e), mir); + }), N(pW, function(t, n, e) { + var i = o(EC, t, n); + return o(C0(J7r), i, e); + }); + var mW = [0, EC, pW], SC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, _W = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(SC, function(t, n, e, i) { + u(f(e), C7r), o(f(e), D7r, P7r); + var x = i[1]; + u(f(e), L7r); + var c = x[1]; + function s(K) { + return u(n, K); + } + function p(K) { + return u(t, K); + } + R($e[13], p, s, e, c), u(f(e), R7r); + var y = x[2]; + function T(K) { + return u(n, K); + } + function E(K) { + return u(t, K); + } + R($e[13], E, T, e, y), u(f(e), j7r), u(f(e), G7r); + var d = x[3], w = 0; + le(function(K, V) { + K && u(f(e), N7r); + function f0(k0) { + return u(n, k0); + } + function m0(k0) { + return u(t, k0); + } + return R($e[13], m0, f0, e, V), 1; + }, w, d), u(f(e), M7r), u(f(e), B7r), u(f(e), q7r), u(f(e), U7r), o(f(e), X7r, H7r); + var G = i[2]; + if (G) { + g(e, Y7r); + var A = G[1], S = function(K, V) { + return g(K, A7r); + }, M = function(K) { + return u(t, K); + }; + R(Dr[1], M, S, e, A), g(e, V7r); + } else + g(e, z7r); + return u(f(e), K7r), u(f(e), W7r); + }), N(_W, function(t, n, e) { + var i = o(SC, t, n); + return o(C0(I7r), i, e); + }); + var yW = [0, SC, _W], c5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, hW = function t(n, e, i) { + return t.fun(n, e, i); + }, s5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, dW = function t(n, e, i) { + return t.fun(n, e, i); + }, gC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, kW = function t(n, e, i) { + return t.fun(n, e, i); + }, FC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, wW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(c5, function(t, n, e, i) { + u(f(e), F7r), o(n, e, i[1]), u(f(e), T7r); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(s5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), O7r); + }), N(hW, function(t, n, e) { + var i = o(c5, t, n); + return o(C0(g7r), i, e); + }), N(s5, function(t, n, e, i) { + switch (i[0]) { + case 0: + var x = i[1]; + if (u(f(e), Vtr), x) { + g(e, ztr); + var c = x[1], s = function(U, Y) { + return g(U, Ytr); + }, p = function(U) { + return u(t, U); + }; + R(Dr[1], p, s, e, c), g(e, Ktr); + } else + g(e, Wtr); + return u(f(e), Jtr); + case 1: + var y = i[1]; + if (u(f(e), $tr), y) { + g(e, Ztr); + var T = y[1], E = function(U, Y) { + return g(U, Xtr); + }, d = function(U) { + return u(t, U); + }; + R(Dr[1], d, E, e, T), g(e, Qtr); + } else + g(e, rur); + return u(f(e), eur); + case 2: + var w = i[1]; + if (u(f(e), nur), w) { + g(e, tur); + var G = w[1], A = function(U, Y) { + return g(U, Htr); + }, S = function(U) { + return u(t, U); + }; + R(Dr[1], S, A, e, G), g(e, uur); + } else + g(e, iur); + return u(f(e), fur); + case 3: + var M = i[1]; + if (u(f(e), xur), M) { + g(e, our); + var K = M[1], V = function(U, Y) { + return g(U, Utr); + }, f0 = function(U) { + return u(t, U); + }; + R(Dr[1], f0, V, e, K), g(e, aur); + } else + g(e, cur); + return u(f(e), sur); + case 4: + var m0 = i[1]; + if (u(f(e), vur), m0) { + g(e, lur); + var k0 = m0[1], g0 = function(U, Y) { + return g(U, qtr); + }, e0 = function(U) { + return u(t, U); + }; + R(Dr[1], e0, g0, e, k0), g(e, bur); + } else + g(e, pur); + return u(f(e), mur); + case 5: + var x0 = i[1]; + if (u(f(e), _ur), x0) { + g(e, yur); + var l = x0[1], c0 = function(U, Y) { + return g(U, Btr); + }, t0 = function(U) { + return u(t, U); + }; + R(Dr[1], t0, c0, e, l), g(e, hur); + } else + g(e, dur); + return u(f(e), kur); + case 6: + var o0 = i[1]; + if (u(f(e), wur), o0) { + g(e, Eur); + var w0 = o0[1], _0 = function(U, Y) { + return g(U, Mtr); + }, E0 = function(U) { + return u(t, U); + }; + R(Dr[1], E0, _0, e, w0), g(e, Sur); + } else + g(e, gur); + return u(f(e), Fur); + case 7: + var U0 = i[1]; + if (u(f(e), Tur), U0) { + g(e, Our); + var b = U0[1], R0 = function(U, Y) { + return g(U, Gtr); + }, X = function(U) { + return u(t, U); + }; + R(Dr[1], X, R0, e, b), g(e, Iur); + } else + g(e, Aur); + return u(f(e), Nur); + case 8: + var s0 = i[1]; + if (u(f(e), Cur), s0) { + g(e, Pur); + var hr = s0[1], Ar = function(U, Y) { + return g(U, jtr); + }, or = function(U) { + return u(t, U); + }; + R(Dr[1], or, Ar, e, hr), g(e, Dur); + } else + g(e, Lur); + return u(f(e), Rur); + case 9: + var W0 = i[1]; + if (u(f(e), jur), W0) { + g(e, Gur); + var Lr = W0[1], Tr = function(U, Y) { + return g(U, Rtr); + }, Hr = function(U) { + return u(t, U); + }; + R(Dr[1], Hr, Tr, e, Lr), g(e, Mur); + } else + g(e, Bur); + return u(f(e), qur); + case 10: + var Or = i[1]; + if (u(f(e), Uur), Or) { + g(e, Hur); + var fr = Or[1], Rr = function(U, Y) { + return g(U, Ltr); + }, Wr = function(U) { + return u(t, U); + }; + R(Dr[1], Wr, Rr, e, fr), g(e, Xur); + } else + g(e, Yur); + return u(f(e), Vur); + case 11: + u(f(e), zur); + var Jr = i[1], ar = function(U) { + return u(n, U); + }, _r = function(U) { + return u(t, U); + }; + return R(uW[1], _r, ar, e, Jr), u(f(e), Kur); + case 12: + u(f(e), Wur); + var Ir = i[1], fe = function(U) { + return u(n, U); + }, v0 = function(U) { + return u(t, U); + }; + return R(Ol[5], v0, fe, e, Ir), u(f(e), Jur); + case 13: + u(f(e), $ur); + var P = i[1], L = function(U) { + return u(n, U); + }, Q = function(U) { + return u(t, U); + }; + return R(_C[6], Q, L, e, P), u(f(e), Zur); + case 14: + u(f(e), Qur); + var i0 = i[1], l0 = function(U) { + return u(n, U); + }, S0 = function(U) { + return u(t, U); + }; + return R(nW[1], S0, l0, e, i0), u(f(e), r7r); + case 15: + u(f(e), e7r); + var T0 = i[1], rr = function(U) { + return u(n, U); + }, L0 = function(U) { + return u(t, U); + }; + return R(bW[1], L0, rr, e, T0), u(f(e), n7r); + case 16: + u(f(e), t7r); + var B = i[1], Z = function(U) { + return u(n, U); + }, p0 = function(U) { + return u(t, U); + }; + return R(xC[2], p0, Z, e, B), u(f(e), u7r); + case 17: + u(f(e), i7r); + var b0 = i[1], O0 = function(U) { + return u(n, U); + }, M0 = function(U) { + return u(t, U); + }; + return R(aC[1], M0, O0, e, b0), u(f(e), f7r); + case 18: + u(f(e), x7r); + var er = i[1], yr = function(U) { + return u(n, U); + }, vr = function(U) { + return u(t, U); + }; + return R(RK[1], vr, yr, e, er), u(f(e), o7r); + case 19: + u(f(e), a7r); + var $0 = i[1], Er = function(U) { + return u(n, U); + }, Mr = function(U) { + return u(t, U); + }; + return R(mW[1], Mr, Er, e, $0), u(f(e), c7r); + case 20: + u(f(e), s7r); + var Br = i[1], qr = function(U) { + return u(n, U); + }, jr = function(U) { + return u(t, U); + }; + return R(yW[1], jr, qr, e, Br), u(f(e), v7r); + case 21: + u(f(e), l7r); + var $r = i[1], ne = function(U) { + return u(n, U); + }, Qr = function(U) { + return u(t, U); + }; + return R(cW[2], Qr, ne, e, $r), u(f(e), b7r); + case 22: + u(f(e), p7r); + var be = i[1], ae = function(U) { + return u(n, U); + }, pe = function(U) { + return u(t, U); + }; + return R(vW[1], pe, ae, e, be), u(f(e), m7r); + case 23: + u(f(e), _7r); + var oe = i[1], ce = function(U) { + return u(t, U); + }; + return ur(g1[1], ce, e, oe), u(f(e), y7r); + case 24: + u(f(e), h7r); + var ge = i[1], q0 = function(U) { + return u(t, U); + }; + return ur(BN[1], q0, e, ge), u(f(e), d7r); + case 25: + u(f(e), k7r); + var Fr = i[1], _ = function(U) { + return u(t, U); + }; + return ur(Zz[1], _, e, Fr), u(f(e), w7r); + default: + u(f(e), E7r); + var k = i[1], I = function(U) { + return u(t, U); + }; + return ur(qN[1], I, e, k), u(f(e), S7r); + } + }), N(dW, function(t, n, e) { + var i = o(s5, t, n); + return o(C0(Dtr), i, e); + }), N(gC, function(t, n, e, i) { + u(f(e), Ntr), o(t, e, i[1]), u(f(e), Ctr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(c5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Ptr); + }), N(kW, function(t, n, e) { + var i = o(gC, t, n); + return o(C0(Atr), i, e); + }), N(FC, function(t, n, e, i) { + if (i[0] === 0) + return u(f(e), Ftr), o(n, e, i[1]), u(f(e), Ttr); + u(f(e), Otr); + var x = i[1]; + function c(p) { + return u(n, p); + } + function s(p) { + return u(t, p); + } + return R($e[17], s, c, e, x), u(f(e), Itr); + }), N(wW, function(t, n, e) { + var i = o(FC, t, n); + return o(C0(gtr), i, e); + }); + var TC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, EW = function t(n, e, i) { + return t.fun(n, e, i); + }, v5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, SW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(TC, function(t, n, e, i) { + u(f(e), wtr), o(t, e, i[1]), u(f(e), Etr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(v5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Str); + }), N(EW, function(t, n, e) { + var i = o(TC, t, n); + return o(C0(ktr), i, e); + }), N(v5, function(t, n, e, i) { + u(f(e), Znr), o(f(e), rtr, Qnr); + var x = i[1]; + function c(K) { + return u(t, K); + } + function s(K) { + return u(t, K); + } + R(Rn[1], s, c, e, x), u(f(e), etr), u(f(e), ntr), o(f(e), utr, ttr); + var p = i[2]; + function y(K) { + return u(n, K); + } + function T(K) { + return u(t, K); + } + R($e[19], T, y, e, p), u(f(e), itr), u(f(e), ftr), o(f(e), otr, xtr); + var E = i[3]; + if (E) { + g(e, atr); + var d = E[1], w = function(K) { + return u(t, K); + }; + ur(zv[1], w, e, d), g(e, ctr); + } else + g(e, str2); + u(f(e), vtr), u(f(e), ltr), o(f(e), ptr, btr); + var G = i[4]; + if (G) { + g(e, mtr); + var A = G[1], S = function(K) { + return u(n, K); + }, M = function(K) { + return u(t, K); + }; + R($e[13], M, S, e, A), g(e, _tr); + } else + g(e, ytr); + return u(f(e), htr), u(f(e), dtr); + }), N(SW, function(t, n, e) { + var i = o(v5, t, n); + return o(C0($nr), i, e); + }); + var gW = [0, TC, EW, v5, SW], OC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, FW = function t(n, e, i) { + return t.fun(n, e, i); + }, l5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, TW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(OC, function(t, n, e, i) { + u(f(e), Knr), o(t, e, i[1]), u(f(e), Wnr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(l5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Jnr); + }), N(FW, function(t, n, e) { + var i = o(OC, t, n); + return o(C0(znr), i, e); + }), N(l5, function(t, n, e, i) { + u(f(e), Pnr), o(f(e), Lnr, Dnr); + var x = i[1]; + u(f(e), Rnr); + var c = 0; + le(function(E, d) { + E && u(f(e), Cnr); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(gW[1], G, w, e, d), 1; + }, c, x), u(f(e), jnr), u(f(e), Gnr), u(f(e), Mnr), o(f(e), qnr, Bnr); + var s = i[2]; + if (s) { + g(e, Unr); + var p = s[1], y = function(E, d) { + u(f(E), Anr); + var w = 0; + return le(function(G, A) { + G && u(f(E), Inr); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), Nnr); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, Hnr); + } else + g(e, Xnr); + return u(f(e), Ynr), u(f(e), Vnr); + }), N(TW, function(t, n, e) { + var i = o(l5, t, n); + return o(C0(Onr), i, e); + }); + var IC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, OW = function t(n, e, i) { + return t.fun(n, e, i); + }, b5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, IW = function t(n, e, i) { + return t.fun(n, e, i); + }, wee = [0, OC, FW, l5, TW]; + N(IC, function(t, n, e, i) { + u(f(e), gnr), o(t, e, i[1]), u(f(e), Fnr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(b5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Tnr); + }), N(OW, function(t, n, e) { + var i = o(IC, t, n); + return o(C0(Snr), i, e); + }), N(b5, function(t, n, e, i) { + u(f(e), cnr), o(f(e), vnr, snr); + var x = i[1]; + u(f(e), lnr); + var c = 0; + le(function(E, d) { + E && u(f(e), anr); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R($e[13], G, w, e, d), 1; + }, c, x), u(f(e), bnr), u(f(e), pnr), u(f(e), mnr), o(f(e), ynr, _nr); + var s = i[2]; + if (s) { + g(e, hnr); + var p = s[1], y = function(E, d) { + u(f(E), xnr); + var w = 0; + return le(function(G, A) { + G && u(f(E), fnr); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), onr); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, dnr); + } else + g(e, knr); + return u(f(e), wnr), u(f(e), Enr); + }), N(IW, function(t, n, e) { + var i = o(b5, t, n); + return o(C0(inr), i, e); + }); + var AC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, AW = function t(n, e, i) { + return t.fun(n, e, i); + }, p5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, NW = function t(n, e, i) { + return t.fun(n, e, i); + }, m5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, CW = function t(n, e, i) { + return t.fun(n, e, i); + }, Eee = [0, IC, OW, b5, IW]; + N(AC, function(t, n, e, i) { + u(f(e), nnr), o(t, e, i[1]), u(f(e), tnr); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(p5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), unr); + }), N(AW, function(t, n, e) { + var i = o(AC, t, n); + return o(C0(enr), i, e); + }), N(p5, function(t, n, e, i) { + u(f(e), Her), o(f(e), Yer, Xer); + var x = i[1]; + function c(E) { + return u(n, E); + } + R(m5, function(E) { + return u(t, E); + }, c, e, x), u(f(e), Ver), u(f(e), zer), o(f(e), Wer, Ker); + var s = i[2]; + if (s) { + g(e, Jer); + var p = s[1], y = function(E, d) { + return g(E, Uer); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, $er); + } else + g(e, Zer); + return u(f(e), Qer), u(f(e), rnr); + }), N(NW, function(t, n, e) { + var i = o(p5, t, n); + return o(C0(qer), i, e); + }), N(m5, function(t, n, e, i) { + if (i) { + u(f(e), Ger); + var x = i[1], c = function(p) { + return u(n, p); + }, s = function(p) { + return u(t, p); + }; + return R(qe[31], s, c, e, x), u(f(e), Mer); + } + return g(e, Ber); + }), N(CW, function(t, n, e) { + var i = o(m5, t, n); + return o(C0(jer), i, e); + }), mu(K3r, $e, [0, Ol, xC, aC, RK, _C, nW, uW, cW, vW, bW, mW, yW, c5, hW, s5, dW, gC, kW, FC, wW, gW, wee, Eee, [0, AC, AW, p5, NW, m5, CW]]); + var NC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, PW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(NC, function(t, n, e, i) { + u(f(e), Eer), o(f(e), ger, Ser); + var x = i[1]; + u(f(e), Fer); + var c = 0; + le(function(E, d) { + E && u(f(e), wer); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(Yu[35], G, w, e, d), 1; + }, c, x), u(f(e), Ter), u(f(e), Oer), u(f(e), Ier), o(f(e), Ner, Aer); + var s = i[2]; + if (s) { + g(e, Cer); + var p = s[1], y = function(E, d) { + u(f(E), der); + var w = 0; + return le(function(G, A) { + G && u(f(E), her); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), ker); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, Per); + } else + g(e, Der); + return u(f(e), Ler), u(f(e), Rer); + }), N(PW, function(t, n, e) { + var i = o(NC, t, n); + return o(C0(yer), i, e); + }); + var Kv = [0, NC, PW], CC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, DW = function t(n, e, i) { + return t.fun(n, e, i); + }, _5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, LW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(CC, function(t, n, e, i) { + u(f(e), per), o(t, e, i[1]), u(f(e), mer); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(_5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), _er); + }), N(DW, function(t, n, e) { + var i = o(CC, t, n); + return o(C0(ber), i, e); + }), N(_5, function(t, n, e, i) { + u(f(e), ner), o(f(e), uer, ter); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(Yu[35], s, c, e, x), u(f(e), ier), u(f(e), fer), o(f(e), oer, xer); + var p = i[2]; + if (p) { + g(e, aer); + var y = p[1], T = function(d, w) { + return g(d, eer); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, cer); + } else + g(e, ser); + return u(f(e), ver), u(f(e), ler); + }), N(LW, function(t, n, e) { + var i = o(_5, t, n); + return o(C0(rer), i, e); + }); + var RW = [0, CC, DW, _5, LW], PC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, jW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(PC, function(t, n, e, i) { + u(f(e), Nrr), o(f(e), Prr, Crr); + var x = i[1]; + function c(V) { + return u(n, V); + } + function s(V) { + return u(t, V); + } + R(qe[31], s, c, e, x), u(f(e), Drr), u(f(e), Lrr), o(f(e), jrr, Rrr); + var p = i[2]; + function y(V) { + return u(n, V); + } + function T(V) { + return u(t, V); + } + R(Yu[35], T, y, e, p), u(f(e), Grr), u(f(e), Mrr), o(f(e), qrr, Brr); + var E = i[3]; + if (E) { + g(e, Urr); + var d = E[1], w = function(V) { + return u(n, V); + }, G = function(V) { + return u(t, V); + }; + R(RW[1], G, w, e, d), g(e, Hrr); + } else + g(e, Xrr); + u(f(e), Yrr), u(f(e), Vrr), o(f(e), Krr, zrr); + var A = i[4]; + if (A) { + g(e, Wrr); + var S = A[1], M = function(V, f0) { + return g(V, Arr); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, Jrr); + } else + g(e, $rr); + return u(f(e), Zrr), u(f(e), Qrr); + }), N(jW, function(t, n, e) { + var i = o(PC, t, n); + return o(C0(Irr), i, e); + }); + var GW = [0, RW, PC, jW], DC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, MW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(DC, function(t, n, e, i) { + u(f(e), lrr), o(f(e), prr, brr); + var x = i[1]; + function c(A) { + return u(t, A); + } + function s(A) { + return u(t, A); + } + R(Rn[1], s, c, e, x), u(f(e), mrr), u(f(e), _rr), o(f(e), hrr, yrr); + var p = i[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R(Yu[35], T, y, e, p), u(f(e), drr), u(f(e), krr), o(f(e), Err, wrr); + var E = i[3]; + if (E) { + g(e, Srr); + var d = E[1], w = function(A, S) { + return g(A, vrr); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, grr); + } else + g(e, Frr); + return u(f(e), Trr), u(f(e), Orr); + }), N(MW, function(t, n, e) { + var i = o(DC, t, n); + return o(C0(srr), i, e); + }); + var BW = [0, DC, MW], LC = function t(n, e, i) { + return t.fun(n, e, i); + }, qW = function t(n, e) { + return t.fun(n, e); + }; + N(LC, function(t, n, e) { + u(f(n), J0r), o(f(n), Z0r, $0r); + var i = e[1]; + if (i) { + g(n, Q0r); + var x = i[1], c = function(d) { + return u(t, d); + }, s = function(d) { + return u(t, d); + }; + R(Rn[1], s, c, n, x), g(n, rrr); + } else + g(n, err); + u(f(n), nrr), u(f(n), trr), o(f(n), irr, urr); + var p = e[2]; + if (p) { + g(n, frr); + var y = p[1], T = function(d, w) { + return g(d, W0r); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, n, y), g(n, xrr); + } else + g(n, orr); + return u(f(n), arr), u(f(n), crr); + }), N(qW, function(t, n) { + var e = u(LC, t); + return o(C0(K0r), e, n); + }); + var UW = [0, LC, qW], RC = function t(n, e, i) { + return t.fun(n, e, i); + }, HW = function t(n, e) { + return t.fun(n, e); + }; + N(RC, function(t, n, e) { + u(f(n), P0r), o(f(n), L0r, D0r); + var i = e[1]; + if (i) { + g(n, R0r); + var x = i[1], c = function(d) { + return u(t, d); + }, s = function(d) { + return u(t, d); + }; + R(Rn[1], s, c, n, x), g(n, j0r); + } else + g(n, G0r); + u(f(n), M0r), u(f(n), B0r), o(f(n), U0r, q0r); + var p = e[2]; + if (p) { + g(n, H0r); + var y = p[1], T = function(d, w) { + return g(d, C0r); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, n, y), g(n, X0r); + } else + g(n, Y0r); + return u(f(n), V0r), u(f(n), z0r); + }), N(HW, function(t, n) { + var e = u(RC, t); + return o(C0(N0r), e, n); + }); + var XW = [0, RC, HW], jC = function t(n, e, i) { + return t.fun(n, e, i); + }, YW = function t(n, e) { + return t.fun(n, e); + }; + N(jC, function(t, n, e) { + u(f(n), E0r), o(f(n), g0r, S0r); + var i = e[1]; + if (i) { + g(n, F0r); + var x = i[1], c = function(p, y) { + return g(p, w0r); + }, s = function(p) { + return u(t, p); + }; + R(Dr[1], s, c, n, x), g(n, T0r); + } else + g(n, O0r); + return u(f(n), I0r), u(f(n), A0r); + }), N(YW, function(t, n) { + var e = u(jC, t); + return o(C0(k0r), e, n); + }); + var VW = [0, jC, YW], GC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, zW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(GC, function(t, n, e, i) { + u(f(e), i0r), o(f(e), x0r, f0r); + var x = i[1]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R(qe[31], s, c, e, x), u(f(e), o0r), u(f(e), a0r), o(f(e), s0r, c0r); + var p = i[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R(Yu[35], T, y, e, p), u(f(e), v0r), u(f(e), l0r), o(f(e), p0r, b0r); + var E = i[3]; + if (E) { + g(e, m0r); + var d = E[1], w = function(A, S) { + return g(A, u0r); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, _0r); + } else + g(e, y0r); + return u(f(e), h0r), u(f(e), d0r); + }), N(zW, function(t, n, e) { + var i = o(GC, t, n); + return o(C0(t0r), i, e); + }); + var KW = [0, GC, zW], MC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, WW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(MC, function(t, n, e, i) { + u(f(e), DQ0), o(f(e), RQ0, LQ0); + var x = i[1]; + function c(V) { + return u(n, V); + } + function s(V) { + return u(t, V); + } + R(Rn[1], s, c, e, x), u(f(e), jQ0), u(f(e), GQ0), o(f(e), BQ0, MQ0); + var p = i[2]; + if (p) { + g(e, qQ0); + var y = p[1], T = function(V) { + return u(n, V); + }, E = function(V) { + return u(t, V); + }; + R($e[22][1], E, T, e, y), g(e, UQ0); + } else + g(e, HQ0); + u(f(e), XQ0), u(f(e), YQ0), o(f(e), zQ0, VQ0); + var d = i[3]; + function w(V) { + return u(n, V); + } + function G(V) { + return u(t, V); + } + R($e[13], G, w, e, d), u(f(e), KQ0), u(f(e), WQ0), o(f(e), $Q0, JQ0); + var A = i[4]; + if (A) { + g(e, ZQ0); + var S = A[1], M = function(V, f0) { + return g(V, PQ0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, QQ0); + } else + g(e, r0r); + return u(f(e), e0r), u(f(e), n0r); + }), N(WW, function(t, n, e) { + var i = o(MC, t, n); + return o(C0(CQ0), i, e); + }); + var y5 = [0, MC, WW], BC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, JW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(BC, function(t, n, e, i) { + u(f(e), QZ0), o(f(e), eQ0, rQ0); + var x = i[1]; + function c(e0) { + return u(n, e0); + } + function s(e0) { + return u(t, e0); + } + R(Rn[1], s, c, e, x), u(f(e), nQ0), u(f(e), tQ0), o(f(e), iQ0, uQ0); + var p = i[2]; + if (p) { + g(e, fQ0); + var y = p[1], T = function(e0) { + return u(n, e0); + }, E = function(e0) { + return u(t, e0); + }; + R($e[22][1], E, T, e, y), g(e, xQ0); + } else + g(e, oQ0); + u(f(e), aQ0), u(f(e), cQ0), o(f(e), vQ0, sQ0); + var d = i[3]; + if (d) { + g(e, lQ0); + var w = d[1], G = function(e0) { + return u(n, e0); + }, A = function(e0) { + return u(t, e0); + }; + R($e[13], A, G, e, w), g(e, bQ0); + } else + g(e, pQ0); + u(f(e), mQ0), u(f(e), _Q0), o(f(e), hQ0, yQ0); + var S = i[4]; + if (S) { + g(e, dQ0); + var M = S[1], K = function(e0) { + return u(n, e0); + }, V = function(e0) { + return u(t, e0); + }; + R($e[13], V, K, e, M), g(e, kQ0); + } else + g(e, wQ0); + u(f(e), EQ0), u(f(e), SQ0), o(f(e), FQ0, gQ0); + var f0 = i[5]; + if (f0) { + g(e, TQ0); + var m0 = f0[1], k0 = function(e0, x0) { + return g(e0, ZZ0); + }, g0 = function(e0) { + return u(t, e0); + }; + R(Dr[1], g0, k0, e, m0), g(e, OQ0); + } else + g(e, IQ0); + return u(f(e), AQ0), u(f(e), NQ0); + }), N(JW, function(t, n, e) { + var i = o(BC, t, n); + return o(C0($Z0), i, e); + }); + var h5 = [0, BC, JW], qC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, $W = function t(n, e, i) { + return t.fun(n, e, i); + }, d5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, ZW = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(qC, function(t, n, e, i) { + u(f(e), KZ0), o(t, e, i[1]), u(f(e), WZ0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(d5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), JZ0); + }), N($W, function(t, n, e) { + var i = o(qC, t, n); + return o(C0(zZ0), i, e); + }), N(d5, function(t, n, e, i) { + u(f(e), FZ0), o(f(e), OZ0, TZ0); + var x = i[1]; + if (x) { + g(e, IZ0); + var c = x[1], s = function(A) { + return u(n, A); + }, p = function(A) { + return u(t, A); + }; + R(qe[31], p, s, e, c), g(e, AZ0); + } else + g(e, NZ0); + u(f(e), CZ0), u(f(e), PZ0), o(f(e), LZ0, DZ0); + var y = i[2]; + u(f(e), RZ0); + var T = 0; + le(function(A, S) { + A && u(f(e), gZ0); + function M(V) { + return u(n, V); + } + function K(V) { + return u(t, V); + } + return R(Yu[35], K, M, e, S), 1; + }, T, y), u(f(e), jZ0), u(f(e), GZ0), u(f(e), MZ0), o(f(e), qZ0, BZ0); + var E = i[3]; + if (E) { + g(e, UZ0); + var d = E[1], w = function(A, S) { + return g(A, SZ0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, HZ0); + } else + g(e, XZ0); + return u(f(e), YZ0), u(f(e), VZ0); + }), N(ZW, function(t, n, e) { + var i = o(d5, t, n); + return o(C0(EZ0), i, e); + }); + var QW = [0, qC, $W, d5, ZW], UC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, rJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(UC, function(t, n, e, i) { + u(f(e), eZ0), o(f(e), tZ0, nZ0); + var x = i[1]; + function c(G) { + return u(n, G); + } + function s(G) { + return u(t, G); + } + R(qe[31], s, c, e, x), u(f(e), uZ0), u(f(e), iZ0), o(f(e), xZ0, fZ0); + var p = i[2]; + u(f(e), oZ0); + var y = 0; + le(function(G, A) { + G && u(f(e), rZ0); + function S(K) { + return u(n, K); + } + function M(K) { + return u(t, K); + } + return R(QW[1], M, S, e, A), 1; + }, y, p), u(f(e), aZ0), u(f(e), cZ0), u(f(e), sZ0), o(f(e), lZ0, vZ0); + var T = i[3]; + if (T) { + g(e, bZ0); + var E = T[1], d = function(G, A) { + return g(G, Q$0); + }, w = function(G) { + return u(t, G); + }; + R(Dr[1], w, d, e, E), g(e, pZ0); + } else + g(e, mZ0); + return u(f(e), _Z0), u(f(e), yZ0), o(f(e), dZ0, hZ0), o(n, e, i[4]), u(f(e), kZ0), u(f(e), wZ0); + }), N(rJ, function(t, n, e) { + var i = o(UC, t, n); + return o(C0(Z$0), i, e); + }); + var eJ = [0, QW, UC, rJ], HC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, nJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(HC, function(t, n, e, i) { + u(f(e), P$0), o(f(e), L$0, D$0); + var x = i[1]; + if (x) { + g(e, R$0); + var c = x[1], s = function(w) { + return u(n, w); + }, p = function(w) { + return u(t, w); + }; + R(qe[31], p, s, e, c), g(e, j$0); + } else + g(e, G$0); + u(f(e), M$0), u(f(e), B$0), o(f(e), U$0, q$0); + var y = i[2]; + if (y) { + g(e, H$0); + var T = y[1], E = function(w, G) { + return g(w, C$0); + }, d = function(w) { + return u(t, w); + }; + R(Dr[1], d, E, e, T), g(e, X$0); + } else + g(e, Y$0); + return u(f(e), V$0), u(f(e), z$0), o(f(e), W$0, K$0), o(n, e, i[3]), u(f(e), J$0), u(f(e), $$0); + }), N(nJ, function(t, n, e) { + var i = o(HC, t, n); + return o(C0(N$0), i, e); + }); + var tJ = [0, HC, nJ], XC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, uJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(XC, function(t, n, e, i) { + u(f(e), h$0), o(f(e), k$0, d$0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), w$0), u(f(e), E$0), o(f(e), g$0, S$0); + var p = i[2]; + if (p) { + g(e, F$0); + var y = p[1], T = function(d, w) { + return g(d, y$0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, T$0); + } else + g(e, O$0); + return u(f(e), I$0), u(f(e), A$0); + }), N(uJ, function(t, n, e) { + var i = o(XC, t, n); + return o(C0(_$0), i, e); + }); + var iJ = [0, XC, uJ], YC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, fJ = function t(n, e, i) { + return t.fun(n, e, i); + }, k5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, xJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(YC, function(t, n, e, i) { + u(f(e), b$0), o(t, e, i[1]), u(f(e), p$0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(k5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), m$0); + }), N(fJ, function(t, n, e) { + var i = o(YC, t, n); + return o(C0(l$0), i, e); + }), N(k5, function(t, n, e, i) { + u(f(e), YJ0), o(f(e), zJ0, VJ0); + var x = i[1]; + if (x) { + g(e, KJ0); + var c = x[1], s = function(M) { + return u(n, M); + }, p = function(M) { + return u(t, M); + }; + R(di[5], p, s, e, c), g(e, WJ0); + } else + g(e, JJ0); + u(f(e), $J0), u(f(e), ZJ0), o(f(e), r$0, QJ0); + var y = i[2]; + u(f(e), e$0), o(t, e, y[1]), u(f(e), n$0); + var T = y[2]; + function E(M) { + return u(n, M); + } + function d(M) { + return u(t, M); + } + R(Kv[1], d, E, e, T), u(f(e), t$0), u(f(e), u$0), u(f(e), i$0), o(f(e), x$0, f$0); + var w = i[3]; + if (w) { + g(e, o$0); + var G = w[1], A = function(M, K) { + return g(M, XJ0); + }, S = function(M) { + return u(t, M); + }; + R(Dr[1], S, A, e, G), g(e, a$0); + } else + g(e, c$0); + return u(f(e), s$0), u(f(e), v$0); + }), N(xJ, function(t, n, e) { + var i = o(k5, t, n); + return o(C0(HJ0), i, e); + }); + var oJ = [0, YC, fJ, k5, xJ], VC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, aJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(VC, function(t, n, e, i) { + u(f(e), sJ0), o(f(e), lJ0, vJ0); + var x = i[1]; + u(f(e), bJ0), o(t, e, x[1]), u(f(e), pJ0); + var c = x[2]; + function s(k0) { + return u(n, k0); + } + function p(k0) { + return u(t, k0); + } + R(Kv[1], p, s, e, c), u(f(e), mJ0), u(f(e), _J0), u(f(e), yJ0), o(f(e), dJ0, hJ0); + var y = i[2]; + if (y) { + g(e, kJ0); + var T = y[1], E = function(k0) { + return u(n, k0); + }, d = function(k0) { + return u(t, k0); + }; + R(oJ[1], d, E, e, T), g(e, wJ0); + } else + g(e, EJ0); + u(f(e), SJ0), u(f(e), gJ0), o(f(e), TJ0, FJ0); + var w = i[3]; + if (w) { + var G = w[1]; + g(e, OJ0), u(f(e), IJ0), o(t, e, G[1]), u(f(e), AJ0); + var A = G[2], S = function(k0) { + return u(n, k0); + }, M = function(k0) { + return u(t, k0); + }; + R(Kv[1], M, S, e, A), u(f(e), NJ0), g(e, CJ0); + } else + g(e, PJ0); + u(f(e), DJ0), u(f(e), LJ0), o(f(e), jJ0, RJ0); + var K = i[4]; + if (K) { + g(e, GJ0); + var V = K[1], f0 = function(k0, g0) { + return g(k0, cJ0); + }, m0 = function(k0) { + return u(t, k0); + }; + R(Dr[1], m0, f0, e, V), g(e, MJ0); + } else + g(e, BJ0); + return u(f(e), qJ0), u(f(e), UJ0); + }), N(aJ, function(t, n, e) { + var i = o(VC, t, n); + return o(C0(aJ0), i, e); + }); + var cJ = [0, oJ, VC, aJ], zC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, sJ = function t(n, e, i) { + return t.fun(n, e, i); + }, w5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, vJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(zC, function(t, n, e, i) { + u(f(e), fJ0), o(t, e, i[1]), u(f(e), xJ0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(w5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), oJ0); + }), N(sJ, function(t, n, e) { + var i = o(zC, t, n); + return o(C0(iJ0), i, e); + }), N(w5, function(t, n, e, i) { + u(f(e), zW0), o(f(e), WW0, KW0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(di[5], s, c, e, x), u(f(e), JW0), u(f(e), $W0), o(f(e), QW0, ZW0); + var p = i[2]; + if (p) { + g(e, rJ0); + var y = p[1], T = function(d) { + return u(n, d); + }, E = function(d) { + return u(t, d); + }; + R(qe[31], E, T, e, y), g(e, eJ0); + } else + g(e, nJ0); + return u(f(e), tJ0), u(f(e), uJ0); + }), N(vJ, function(t, n, e) { + var i = o(w5, t, n); + return o(C0(VW0), i, e); + }); + var lJ = [0, zC, sJ, w5, vJ], KC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, bJ = function t(n, e, i) { + return t.fun(n, e, i); + }, E5 = function t(n, e) { + return t.fun(n, e); + }, pJ = function t(n) { + return t.fun(n); + }; + N(KC, function(t, n, e, i) { + u(f(e), OW0), o(f(e), AW0, IW0); + var x = i[1]; + u(f(e), NW0); + var c = 0; + le(function(E, d) { + E && u(f(e), TW0); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(lJ[1], G, w, e, d), 1; + }, c, x), u(f(e), CW0), u(f(e), PW0), u(f(e), DW0), o(f(e), RW0, LW0), o(E5, e, i[2]), u(f(e), jW0), u(f(e), GW0), o(f(e), BW0, MW0); + var s = i[3]; + if (s) { + g(e, qW0); + var p = s[1], y = function(E, d) { + return g(E, FW0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, UW0); + } else + g(e, HW0); + return u(f(e), XW0), u(f(e), YW0); + }), N(bJ, function(t, n, e) { + var i = o(KC, t, n); + return o(C0(gW0), i, e); + }), N(E5, function(t, n) { + switch (n) { + case 0: + return g(t, wW0); + case 1: + return g(t, EW0); + default: + return g(t, SW0); + } + }), N(pJ, function(t) { + return o(C0(kW0), E5, t); + }); + var Il = [0, lJ, KC, bJ, E5, pJ], WC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, mJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(WC, function(t, n, e, i) { + u(f(e), iW0), o(f(e), xW0, fW0); + var x = i[1]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R(qe[31], s, c, e, x), u(f(e), oW0), u(f(e), aW0), o(f(e), sW0, cW0); + var p = i[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R(Yu[35], T, y, e, p), u(f(e), vW0), u(f(e), lW0), o(f(e), pW0, bW0); + var E = i[3]; + if (E) { + g(e, mW0); + var d = E[1], w = function(A, S) { + return g(A, uW0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, _W0); + } else + g(e, yW0); + return u(f(e), hW0), u(f(e), dW0); + }), N(mJ, function(t, n, e) { + var i = o(WC, t, n); + return o(C0(tW0), i, e); + }); + var _J = [0, WC, mJ], JC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, yJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(JC, function(t, n, e, i) { + u(f(e), qK0), o(f(e), HK0, UK0); + var x = i[1]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R(Yu[35], s, c, e, x), u(f(e), XK0), u(f(e), YK0), o(f(e), zK0, VK0); + var p = i[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R(qe[31], T, y, e, p), u(f(e), KK0), u(f(e), WK0), o(f(e), $K0, JK0); + var E = i[3]; + if (E) { + g(e, ZK0); + var d = E[1], w = function(A, S) { + return g(A, BK0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, QK0); + } else + g(e, rW0); + return u(f(e), eW0), u(f(e), nW0); + }), N(yJ, function(t, n, e) { + var i = o(JC, t, n); + return o(C0(MK0), i, e); + }); + var hJ = [0, JC, yJ], $C = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, dJ = function t(n, e, i) { + return t.fun(n, e, i); + }, S5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, kJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N($C, function(t, n, e, i) { + u(f(e), fK0), o(f(e), oK0, xK0); + var x = i[1]; + if (x) { + g(e, aK0); + var c = x[1], s = function(g0) { + return u(n, g0); + }; + R(S5, function(g0) { + return u(t, g0); + }, s, e, c), g(e, cK0); + } else + g(e, sK0); + u(f(e), vK0), u(f(e), lK0), o(f(e), pK0, bK0); + var p = i[2]; + if (p) { + g(e, mK0); + var y = p[1], T = function(g0) { + return u(n, g0); + }, E = function(g0) { + return u(t, g0); + }; + R(qe[31], E, T, e, y), g(e, _K0); + } else + g(e, yK0); + u(f(e), hK0), u(f(e), dK0), o(f(e), wK0, kK0); + var d = i[3]; + if (d) { + g(e, EK0); + var w = d[1], G = function(g0) { + return u(n, g0); + }, A = function(g0) { + return u(t, g0); + }; + R(qe[31], A, G, e, w), g(e, SK0); + } else + g(e, gK0); + u(f(e), FK0), u(f(e), TK0), o(f(e), IK0, OK0); + var S = i[4]; + function M(g0) { + return u(n, g0); + } + function K(g0) { + return u(t, g0); + } + R(Yu[35], K, M, e, S), u(f(e), AK0), u(f(e), NK0), o(f(e), PK0, CK0); + var V = i[5]; + if (V) { + g(e, DK0); + var f0 = V[1], m0 = function(g0, e0) { + return g(g0, iK0); + }, k0 = function(g0) { + return u(t, g0); + }; + R(Dr[1], k0, m0, e, f0), g(e, LK0); + } else + g(e, RK0); + return u(f(e), jK0), u(f(e), GK0); + }), N(dJ, function(t, n, e) { + var i = o($C, t, n); + return o(C0(uK0), i, e); + }), N(S5, function(t, n, e, i) { + if (i[0] === 0) { + var x = i[1]; + u(f(e), $z0), u(f(e), Zz0), o(t, e, x[1]), u(f(e), Qz0); + var c = x[2], s = function(d) { + return u(n, d); + }, p = function(d) { + return u(t, d); + }; + return R(Il[2], p, s, e, c), u(f(e), rK0), u(f(e), eK0); + } + u(f(e), nK0); + var y = i[1]; + function T(d) { + return u(n, d); + } + function E(d) { + return u(t, d); + } + return R(qe[31], E, T, e, y), u(f(e), tK0); + }), N(kJ, function(t, n, e) { + var i = o(S5, t, n); + return o(C0(Jz0), i, e); + }); + var wJ = [0, $C, dJ, S5, kJ], ZC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, EJ = function t(n, e, i) { + return t.fun(n, e, i); + }, g5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, SJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(ZC, function(t, n, e, i) { + u(f(e), gz0), o(f(e), Tz0, Fz0); + var x = i[1]; + function c(K) { + return u(n, K); + } + R(g5, function(K) { + return u(t, K); + }, c, e, x), u(f(e), Oz0), u(f(e), Iz0), o(f(e), Nz0, Az0); + var s = i[2]; + function p(K) { + return u(n, K); + } + function y(K) { + return u(t, K); + } + R(qe[31], y, p, e, s), u(f(e), Cz0), u(f(e), Pz0), o(f(e), Lz0, Dz0); + var T = i[3]; + function E(K) { + return u(n, K); + } + function d(K) { + return u(t, K); + } + R(Yu[35], d, E, e, T), u(f(e), Rz0), u(f(e), jz0), o(f(e), Mz0, Gz0); + var w = i[4]; + o(f(e), Bz0, w), u(f(e), qz0), u(f(e), Uz0), o(f(e), Xz0, Hz0); + var G = i[5]; + if (G) { + g(e, Yz0); + var A = G[1], S = function(K, V) { + return g(K, Sz0); + }, M = function(K) { + return u(t, K); + }; + R(Dr[1], M, S, e, A), g(e, Vz0); + } else + g(e, zz0); + return u(f(e), Kz0), u(f(e), Wz0); + }), N(EJ, function(t, n, e) { + var i = o(ZC, t, n); + return o(C0(Ez0), i, e); + }), N(g5, function(t, n, e, i) { + if (i[0] === 0) { + var x = i[1]; + u(f(e), mz0), u(f(e), _z0), o(t, e, x[1]), u(f(e), yz0); + var c = x[2], s = function(d) { + return u(n, d); + }, p = function(d) { + return u(t, d); + }; + return R(Il[2], p, s, e, c), u(f(e), hz0), u(f(e), dz0); + } + u(f(e), kz0); + var y = i[1]; + function T(d) { + return u(n, d); + } + function E(d) { + return u(t, d); + } + return R(di[5], E, T, e, y), u(f(e), wz0); + }), N(SJ, function(t, n, e) { + var i = o(g5, t, n); + return o(C0(pz0), i, e); + }); + var gJ = [0, ZC, EJ, g5, SJ], QC = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, FJ = function t(n, e, i) { + return t.fun(n, e, i); + }, F5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, TJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(QC, function(t, n, e, i) { + u(f(e), XV0), o(f(e), VV0, YV0); + var x = i[1]; + function c(K) { + return u(n, K); + } + R(F5, function(K) { + return u(t, K); + }, c, e, x), u(f(e), zV0), u(f(e), KV0), o(f(e), JV0, WV0); + var s = i[2]; + function p(K) { + return u(n, K); + } + function y(K) { + return u(t, K); + } + R(qe[31], y, p, e, s), u(f(e), $V0), u(f(e), ZV0), o(f(e), rz0, QV0); + var T = i[3]; + function E(K) { + return u(n, K); + } + function d(K) { + return u(t, K); + } + R(Yu[35], d, E, e, T), u(f(e), ez0), u(f(e), nz0), o(f(e), uz0, tz0); + var w = i[4]; + o(f(e), iz0, w), u(f(e), fz0), u(f(e), xz0), o(f(e), az0, oz0); + var G = i[5]; + if (G) { + g(e, cz0); + var A = G[1], S = function(K, V) { + return g(K, HV0); + }, M = function(K) { + return u(t, K); + }; + R(Dr[1], M, S, e, A), g(e, sz0); + } else + g(e, vz0); + return u(f(e), lz0), u(f(e), bz0); + }), N(FJ, function(t, n, e) { + var i = o(QC, t, n); + return o(C0(UV0), i, e); + }), N(F5, function(t, n, e, i) { + if (i[0] === 0) { + var x = i[1]; + u(f(e), LV0), u(f(e), RV0), o(t, e, x[1]), u(f(e), jV0); + var c = x[2], s = function(d) { + return u(n, d); + }, p = function(d) { + return u(t, d); + }; + return R(Il[2], p, s, e, c), u(f(e), GV0), u(f(e), MV0); + } + u(f(e), BV0); + var y = i[1]; + function T(d) { + return u(n, d); + } + function E(d) { + return u(t, d); + } + return R(di[5], E, T, e, y), u(f(e), qV0); + }), N(TJ, function(t, n, e) { + var i = o(F5, t, n); + return o(C0(DV0), i, e); + }); + var OJ = [0, QC, FJ, F5, TJ], rP = function t(n, e, i) { + return t.fun(n, e, i); + }, IJ = function t(n, e) { + return t.fun(n, e); + }, T5 = function t(n, e, i) { + return t.fun(n, e, i); + }, AJ = function t(n, e) { + return t.fun(n, e); + }; + N(rP, function(t, n, e) { + u(f(n), NV0), o(t, n, e[1]), u(f(n), CV0); + var i = e[2]; + return ur(T5, function(x) { + return u(t, x); + }, n, i), u(f(n), PV0); + }), N(IJ, function(t, n) { + var e = u(rP, t); + return o(C0(AV0), e, n); + }), N(T5, function(t, n, e) { + u(f(n), gV0), o(f(n), TV0, FV0); + var i = e[1]; + function x(s) { + return u(t, s); + } + function c(s) { + return u(t, s); + } + return R(Rn[1], c, x, n, i), u(f(n), OV0), u(f(n), IV0); + }), N(AJ, function(t, n) { + var e = u(T5, t); + return o(C0(SV0), e, n); + }); + var eP = [0, rP, IJ, T5, AJ], nP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, NJ = function t(n, e, i) { + return t.fun(n, e, i); + }, O5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, CJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(nP, function(t, n, e, i) { + u(f(e), kV0), o(n, e, i[1]), u(f(e), wV0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(O5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), EV0); + }), N(NJ, function(t, n, e) { + var i = o(nP, t, n); + return o(C0(dV0), i, e); + }), N(O5, function(t, n, e, i) { + u(f(e), oV0), o(f(e), cV0, aV0); + var x = i[1]; + function c(y) { + return u(n, y); + } + function s(y) { + return u(n, y); + } + R(Rn[1], s, c, e, x), u(f(e), sV0), u(f(e), vV0), o(f(e), bV0, lV0); + var p = i[2]; + return u(f(e), pV0), o(n, e, p[1]), u(f(e), mV0), o(t, e, p[2]), u(f(e), _V0), u(f(e), yV0), u(f(e), hV0); + }), N(CJ, function(t, n, e) { + var i = o(O5, t, n); + return o(C0(xV0), i, e); + }); + var I5 = [0, nP, NJ, O5, CJ], tP = function t(n, e, i) { + return t.fun(n, e, i); + }, PJ = function t(n, e) { + return t.fun(n, e); + }; + N(tP, function(t, n, e) { + u(f(n), jY0), o(f(n), MY0, GY0); + var i = e[1]; + u(f(n), BY0); + var x = 0; + le(function(d, w) { + d && u(f(n), RY0); + function G(S) { + return u(t, S); + } + function A(S) { + function M(K) { + return u(t, K); + } + return o(qN[1], M, S); + } + return R(I5[1], A, G, n, w), 1; + }, x, i), u(f(n), qY0), u(f(n), UY0), u(f(n), HY0), o(f(n), YY0, XY0); + var c = e[2]; + o(f(n), VY0, c), u(f(n), zY0), u(f(n), KY0), o(f(n), JY0, WY0); + var s = e[3]; + o(f(n), $Y0, s), u(f(n), ZY0), u(f(n), QY0), o(f(n), eV0, rV0); + var p = e[4]; + if (p) { + g(n, nV0); + var y = p[1], T = function(d, w) { + u(f(d), DY0); + var G = 0; + return le(function(A, S) { + A && u(f(d), PY0); + function M(K) { + return u(t, K); + } + return ur(iu[1], M, d, S), 1; + }, G, w), u(f(d), LY0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, n, y), g(n, tV0); + } else + g(n, uV0); + return u(f(n), iV0), u(f(n), fV0); + }), N(PJ, function(t, n) { + var e = u(tP, t); + return o(C0(CY0), e, n); + }); + var DJ = [0, tP, PJ], uP = function t(n, e, i) { + return t.fun(n, e, i); + }, LJ = function t(n, e) { + return t.fun(n, e); + }; + N(uP, function(t, n, e) { + u(f(n), oY0), o(f(n), cY0, aY0); + var i = e[1]; + u(f(n), sY0); + var x = 0; + le(function(d, w) { + d && u(f(n), xY0); + function G(S) { + return u(t, S); + } + function A(S) { + function M(K) { + return u(t, K); + } + return o(BN[1], M, S); + } + return R(I5[1], A, G, n, w), 1; + }, x, i), u(f(n), vY0), u(f(n), lY0), u(f(n), bY0), o(f(n), mY0, pY0); + var c = e[2]; + o(f(n), _Y0, c), u(f(n), yY0), u(f(n), hY0), o(f(n), kY0, dY0); + var s = e[3]; + o(f(n), wY0, s), u(f(n), EY0), u(f(n), SY0), o(f(n), FY0, gY0); + var p = e[4]; + if (p) { + g(n, TY0); + var y = p[1], T = function(d, w) { + u(f(d), iY0); + var G = 0; + return le(function(A, S) { + A && u(f(d), uY0); + function M(K) { + return u(t, K); + } + return ur(iu[1], M, d, S), 1; + }, G, w), u(f(d), fY0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, n, y), g(n, OY0); + } else + g(n, IY0); + return u(f(n), AY0), u(f(n), NY0); + }), N(LJ, function(t, n) { + var e = u(uP, t); + return o(C0(tY0), e, n); + }); + var RJ = [0, uP, LJ], iP = function t(n, e, i) { + return t.fun(n, e, i); + }, jJ = function t(n, e) { + return t.fun(n, e); + }, A5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, GJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(iP, function(t, n, e) { + u(f(n), LX0), o(f(n), jX0, RX0); + var i = e[1]; + function x(d) { + return u(t, d); + } + R(A5, function(d) { + function w(G) { + return u(t, G); + } + return o(g1[1], w, d); + }, x, n, i), u(f(n), GX0), u(f(n), MX0), o(f(n), qX0, BX0); + var c = e[2]; + o(f(n), UX0, c), u(f(n), HX0), u(f(n), XX0), o(f(n), VX0, YX0); + var s = e[3]; + o(f(n), zX0, s), u(f(n), KX0), u(f(n), WX0), o(f(n), $X0, JX0); + var p = e[4]; + if (p) { + g(n, ZX0); + var y = p[1], T = function(d, w) { + u(f(d), PX0); + var G = 0; + return le(function(A, S) { + A && u(f(d), CX0); + function M(K) { + return u(t, K); + } + return ur(iu[1], M, d, S), 1; + }, G, w), u(f(d), DX0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, n, y), g(n, QX0); + } else + g(n, rY0); + return u(f(n), eY0), u(f(n), nY0); + }), N(jJ, function(t, n) { + var e = u(iP, t); + return o(C0(NX0), e, n); + }), N(A5, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), EX0), u(f(e), SX0); + var x = i[1], c = 0; + return le(function(y, T) { + y && u(f(e), wX0); + function E(d) { + return u(n, d); + } + return ur(eP[1], E, e, T), 1; + }, c, x), u(f(e), gX0), u(f(e), FX0); + } + u(f(e), TX0), u(f(e), OX0); + var s = i[1], p = 0; + return le(function(y, T) { + y && u(f(e), kX0); + function E(w) { + return u(n, w); + } + function d(w) { + return u(t, w); + } + return R(I5[1], d, E, e, T), 1; + }, p, s), u(f(e), IX0), u(f(e), AX0); + }), N(GJ, function(t, n, e) { + var i = o(A5, t, n); + return o(C0(dX0), i, e); + }); + var MJ = [0, iP, jJ, A5, GJ], fP = function t(n, e, i) { + return t.fun(n, e, i); + }, BJ = function t(n, e) { + return t.fun(n, e); + }; + N(fP, function(t, n, e) { + u(f(n), eX0), o(f(n), tX0, nX0); + var i = e[1]; + u(f(n), uX0); + var x = 0; + le(function(E, d) { + E && u(f(n), rX0); + function w(G) { + return u(t, G); + } + return ur(eP[1], w, n, d), 1; + }, x, i), u(f(n), iX0), u(f(n), fX0), u(f(n), xX0), o(f(n), aX0, oX0); + var c = e[2]; + o(f(n), cX0, c), u(f(n), sX0), u(f(n), vX0), o(f(n), bX0, lX0); + var s = e[3]; + if (s) { + g(n, pX0); + var p = s[1], y = function(E, d) { + u(f(E), ZH0); + var w = 0; + return le(function(G, A) { + G && u(f(E), $H0); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), QH0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, n, p), g(n, mX0); + } else + g(n, _X0); + return u(f(n), yX0), u(f(n), hX0); + }), N(BJ, function(t, n) { + var e = u(fP, t); + return o(C0(JH0), e, n); + }); + var qJ = [0, fP, BJ], xP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, UJ = function t(n, e, i) { + return t.fun(n, e, i); + }, N5 = function t(n, e, i) { + return t.fun(n, e, i); + }, HJ = function t(n, e) { + return t.fun(n, e); + }, C5 = function t(n, e, i) { + return t.fun(n, e, i); + }, XJ = function t(n, e) { + return t.fun(n, e); + }; + N(xP, function(t, n, e, i) { + u(f(e), DH0), o(f(e), RH0, LH0); + var x = i[1]; + function c(w) { + return u(n, w); + } + function s(w) { + return u(t, w); + } + R(Rn[1], s, c, e, x), u(f(e), jH0), u(f(e), GH0), o(f(e), BH0, MH0); + var p = i[2]; + ur(N5, function(w) { + return u(t, w); + }, e, p), u(f(e), qH0), u(f(e), UH0), o(f(e), XH0, HH0); + var y = i[3]; + if (y) { + g(e, YH0); + var T = y[1], E = function(w, G) { + return g(w, PH0); + }, d = function(w) { + return u(t, w); + }; + R(Dr[1], d, E, e, T), g(e, VH0); + } else + g(e, zH0); + return u(f(e), KH0), u(f(e), WH0); + }), N(UJ, function(t, n, e) { + var i = o(xP, t, n); + return o(C0(CH0), i, e); + }), N(N5, function(t, n, e) { + u(f(n), IH0), o(t, n, e[1]), u(f(n), AH0); + var i = e[2]; + return ur(C5, function(x) { + return u(t, x); + }, n, i), u(f(n), NH0); + }), N(HJ, function(t, n) { + var e = u(N5, t); + return o(C0(OH0), e, n); + }), N(C5, function(t, n, e) { + switch (e[0]) { + case 0: + u(f(n), dH0); + var i = e[1], x = function(d) { + return u(t, d); + }; + return ur(DJ[1], x, n, i), u(f(n), kH0); + case 1: + u(f(n), wH0); + var c = e[1], s = function(d) { + return u(t, d); + }; + return ur(RJ[1], s, n, c), u(f(n), EH0); + case 2: + u(f(n), SH0); + var p = e[1], y = function(d) { + return u(t, d); + }; + return ur(MJ[1], y, n, p), u(f(n), gH0); + default: + u(f(n), FH0); + var T = e[1], E = function(d) { + return u(t, d); + }; + return ur(qJ[1], E, n, T), u(f(n), TH0); + } + }), N(XJ, function(t, n) { + var e = u(C5, t); + return o(C0(hH0), e, n); + }); + var YJ = [0, eP, I5, DJ, RJ, MJ, qJ, xP, UJ, N5, HJ, C5, XJ], oP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, VJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(oP, function(t, n, e, i) { + u(f(e), qU0), o(f(e), HU0, UU0); + var x = i[1]; + function c(k0) { + return u(n, k0); + } + function s(k0) { + return u(t, k0); + } + R(Rn[1], s, c, e, x), u(f(e), XU0), u(f(e), YU0), o(f(e), zU0, VU0); + var p = i[2]; + if (p) { + g(e, KU0); + var y = p[1], T = function(k0) { + return u(n, k0); + }, E = function(k0) { + return u(t, k0); + }; + R($e[22][1], E, T, e, y), g(e, WU0); + } else + g(e, JU0); + u(f(e), $U0), u(f(e), ZU0), o(f(e), rH0, QU0); + var d = i[3]; + u(f(e), eH0); + var w = 0; + le(function(k0, g0) { + k0 && u(f(e), jU0), u(f(e), GU0), o(t, e, g0[1]), u(f(e), MU0); + var e0 = g0[2]; + function x0(c0) { + return u(n, c0); + } + function l(c0) { + return u(t, c0); + } + return R($e[2][2], l, x0, e, e0), u(f(e), BU0), 1; + }, w, d), u(f(e), nH0), u(f(e), tH0), u(f(e), uH0), o(f(e), fH0, iH0); + var G = i[4]; + u(f(e), xH0), o(t, e, G[1]), u(f(e), oH0); + var A = G[2]; + function S(k0) { + return u(n, k0); + } + function M(k0) { + return u(t, k0); + } + R($e[5][6], M, S, e, A), u(f(e), aH0), u(f(e), cH0), u(f(e), sH0), o(f(e), lH0, vH0); + var K = i[5]; + if (K) { + g(e, bH0); + var V = K[1], f0 = function(k0, g0) { + return g(k0, RU0); + }, m0 = function(k0) { + return u(t, k0); + }; + R(Dr[1], m0, f0, e, V), g(e, pH0); + } else + g(e, mH0); + return u(f(e), _H0), u(f(e), yH0); + }), N(VJ, function(t, n, e) { + var i = o(oP, t, n); + return o(C0(LU0), i, e); + }); + var P5 = [0, oP, VJ], aP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, zJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(aP, function(t, n, e, i) { + u(f(e), Bq0), o(f(e), Uq0, qq0); + var x = i[1]; + function c(_0) { + return u(n, _0); + } + function s(_0) { + return u(t, _0); + } + R(Rn[1], s, c, e, x), u(f(e), Hq0), u(f(e), Xq0), o(f(e), Vq0, Yq0); + var p = i[2]; + if (p) { + g(e, zq0); + var y = p[1], T = function(_0) { + return u(n, _0); + }, E = function(_0) { + return u(t, _0); + }; + R($e[22][1], E, T, e, y), g(e, Kq0); + } else + g(e, Wq0); + u(f(e), Jq0), u(f(e), $q0), o(f(e), Qq0, Zq0); + var d = i[3]; + u(f(e), rU0), o(t, e, d[1]), u(f(e), eU0); + var w = d[2]; + function G(_0) { + return u(n, _0); + } + function A(_0) { + return u(t, _0); + } + R($e[5][6], A, G, e, w), u(f(e), nU0), u(f(e), tU0), u(f(e), uU0), o(f(e), fU0, iU0); + var S = i[4]; + if (S) { + var M = S[1]; + g(e, xU0), u(f(e), oU0), o(t, e, M[1]), u(f(e), aU0); + var K = M[2], V = function(_0) { + return u(n, _0); + }, f0 = function(_0) { + return u(t, _0); + }; + R($e[2][2], f0, V, e, K), u(f(e), cU0), g(e, sU0); + } else + g(e, vU0); + u(f(e), lU0), u(f(e), bU0), o(f(e), mU0, pU0); + var m0 = i[5]; + u(f(e), _U0); + var k0 = 0; + le(function(_0, E0) { + _0 && u(f(e), Rq0), u(f(e), jq0), o(t, e, E0[1]), u(f(e), Gq0); + var U0 = E0[2]; + function b(X) { + return u(n, X); + } + function R0(X) { + return u(t, X); + } + return R($e[2][2], R0, b, e, U0), u(f(e), Mq0), 1; + }, k0, m0), u(f(e), yU0), u(f(e), hU0), u(f(e), dU0), o(f(e), wU0, kU0); + var g0 = i[6]; + if (g0) { + g(e, EU0); + var e0 = g0[1], x0 = function(_0) { + return u(n, _0); + }, l = function(_0) { + return u(t, _0); + }; + R(F1[5][2], l, x0, e, e0), g(e, SU0); + } else + g(e, gU0); + u(f(e), FU0), u(f(e), TU0), o(f(e), IU0, OU0); + var c0 = i[7]; + if (c0) { + g(e, AU0); + var t0 = c0[1], o0 = function(_0, E0) { + return g(_0, Lq0); + }, w0 = function(_0) { + return u(t, _0); + }; + R(Dr[1], w0, o0, e, t0), g(e, NU0); + } else + g(e, CU0); + return u(f(e), PU0), u(f(e), DU0); + }), N(zJ, function(t, n, e) { + var i = o(aP, t, n); + return o(C0(Dq0), i, e); + }); + var cP = [0, aP, zJ], sP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, KJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(sP, function(t, n, e, i) { + u(f(e), yq0), o(f(e), dq0, hq0); + var x = i[1]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R(Rn[1], s, c, e, x), u(f(e), kq0), u(f(e), wq0), o(f(e), Sq0, Eq0); + var p = i[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R($e[17], T, y, e, p), u(f(e), gq0), u(f(e), Fq0), o(f(e), Oq0, Tq0); + var E = i[3]; + if (E) { + g(e, Iq0); + var d = E[1], w = function(A, S) { + return g(A, _q0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, Aq0); + } else + g(e, Nq0); + return u(f(e), Cq0), u(f(e), Pq0); + }), N(KJ, function(t, n, e) { + var i = o(sP, t, n); + return o(C0(mq0), i, e); + }); + var vP = [0, sP, KJ], lP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, WJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(lP, function(t, n, e, i) { + u(f(e), zB0), o(f(e), WB0, KB0); + var x = i[1]; + function c(V) { + return u(n, V); + } + function s(V) { + return u(t, V); + } + R(Rn[1], s, c, e, x), u(f(e), JB0), u(f(e), $B0), o(f(e), QB0, ZB0); + var p = i[2]; + function y(V) { + return u(n, V); + } + function T(V) { + return u(t, V); + } + R($e[17], T, y, e, p), u(f(e), rq0), u(f(e), eq0), o(f(e), tq0, nq0); + var E = i[3]; + if (E) { + g(e, uq0); + var d = E[1], w = function(V) { + return u(n, V); + }, G = function(V) { + return u(t, V); + }; + R($e[24][1], G, w, e, d), g(e, iq0); + } else + g(e, fq0); + u(f(e), xq0), u(f(e), oq0), o(f(e), cq0, aq0); + var A = i[4]; + if (A) { + g(e, sq0); + var S = A[1], M = function(V, f0) { + return g(V, VB0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, vq0); + } else + g(e, lq0); + return u(f(e), bq0), u(f(e), pq0); + }), N(WJ, function(t, n, e) { + var i = o(lP, t, n); + return o(C0(YB0), i, e); + }); + var bP = [0, lP, WJ], D5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, JJ = function t(n, e, i) { + return t.fun(n, e, i); + }, L5 = function t(n, e) { + return t.fun(n, e); + }, $J = function t(n) { + return t.fun(n); + }, pP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, ZJ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(D5, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), GB0); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(Rn[1], s, c, e, x), u(f(e), MB0); + } + var p = i[1]; + u(f(e), BB0), u(f(e), qB0), o(n, e, p[1]), u(f(e), UB0); + var y = p[2]; + function T(E) { + return u(t, E); + } + return ur(g1[1], T, e, y), u(f(e), HB0), u(f(e), XB0); + }), N(JJ, function(t, n, e) { + var i = o(D5, t, n); + return o(C0(jB0), i, e); + }), N(L5, function(t, n) { + return n ? g(t, LB0) : g(t, RB0); + }), N($J, function(t) { + return o(C0(DB0), L5, t); + }), N(pP, function(t, n, e, i) { + u(f(e), sB0), o(f(e), lB0, vB0); + var x = i[1]; + function c(A) { + return u(n, A); + } + R(D5, function(A) { + return u(t, A); + }, c, e, x), u(f(e), bB0), u(f(e), pB0), o(f(e), _B0, mB0); + var s = i[2]; + u(f(e), yB0), o(t, e, s[1]), u(f(e), hB0); + var p = s[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R(Kv[1], T, y, e, p), u(f(e), dB0), u(f(e), kB0), u(f(e), wB0), o(f(e), SB0, EB0), o(L5, e, i[3]), u(f(e), gB0), u(f(e), FB0), o(f(e), OB0, TB0); + var E = i[4]; + if (E) { + g(e, IB0); + var d = E[1], w = function(A, S) { + return g(A, cB0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, AB0); + } else + g(e, NB0); + return u(f(e), CB0), u(f(e), PB0); + }), N(ZJ, function(t, n, e) { + var i = o(pP, t, n); + return o(C0(aB0), i, e); + }); + var QJ = [0, D5, JJ, L5, $J, pP, ZJ], mP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, r$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(mP, function(t, n, e, i) { + u(f(e), $M0), o(f(e), QM0, ZM0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R($e[17], s, c, e, x), u(f(e), rB0), u(f(e), eB0), o(f(e), tB0, nB0); + var p = i[2]; + if (p) { + g(e, uB0); + var y = p[1], T = function(d, w) { + return g(d, JM0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, iB0); + } else + g(e, fB0); + return u(f(e), xB0), u(f(e), oB0); + }), N(r$, function(t, n, e) { + var i = o(mP, t, n); + return o(C0(WM0), i, e); + }); + var e$ = [0, mP, r$], _P = function t(n, e, i) { + return t.fun(n, e, i); + }, n$ = function t(n, e) { + return t.fun(n, e); + }, R5 = function t(n, e, i) { + return t.fun(n, e, i); + }, t$ = function t(n, e) { + return t.fun(n, e); + }; + N(_P, function(t, n, e) { + u(f(n), VM0), o(t, n, e[1]), u(f(n), zM0); + var i = e[2]; + return ur(R5, function(x) { + return u(t, x); + }, n, i), u(f(n), KM0); + }), N(n$, function(t, n) { + var e = u(_P, t); + return o(C0(YM0), e, n); + }), N(R5, function(t, n, e) { + u(f(n), PM0), o(f(n), LM0, DM0); + var i = e[1]; + function x(E) { + return u(t, E); + } + function c(E) { + return u(t, E); + } + R(Rn[1], c, x, n, i), u(f(n), RM0), u(f(n), jM0), o(f(n), MM0, GM0); + var s = e[2]; + if (s) { + g(n, BM0); + var p = s[1], y = function(E) { + return u(t, E); + }, T = function(E) { + return u(t, E); + }; + R(Rn[1], T, y, n, p), g(n, qM0); + } else + g(n, UM0); + return u(f(n), HM0), u(f(n), XM0); + }), N(t$, function(t, n) { + var e = u(R5, t); + return o(C0(CM0), e, n); + }); + var u$ = [0, _P, n$, R5, t$], yP = function t(n, e, i) { + return t.fun(n, e, i); + }, i$ = function t(n, e) { + return t.fun(n, e); + }; + N(yP, function(t, n, e) { + var i = e[2]; + if (u(f(n), FM0), o(t, n, e[1]), u(f(n), TM0), i) { + g(n, OM0); + var x = i[1], c = function(p) { + return u(t, p); + }, s = function(p) { + return u(t, p); + }; + R(Rn[1], s, c, n, x), g(n, IM0); + } else + g(n, AM0); + return u(f(n), NM0); + }), N(i$, function(t, n) { + var e = u(yP, t); + return o(C0(gM0), e, n); + }); + var f$ = [0, yP, i$], hP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, x$ = function t(n, e, i) { + return t.fun(n, e, i); + }, j5 = function t(n, e, i) { + return t.fun(n, e, i); + }, o$ = function t(n, e) { + return t.fun(n, e); + }; + N(hP, function(t, n, e, i) { + u(f(e), HG0), o(f(e), YG0, XG0); + var x = i[1]; + if (x) { + g(e, VG0); + var c = x[1], s = function(V) { + return u(n, V); + }, p = function(V) { + return u(t, V); + }; + R(Yu[35], p, s, e, c), g(e, zG0); + } else + g(e, KG0); + u(f(e), WG0), u(f(e), JG0), o(f(e), ZG0, $G0); + var y = i[2]; + if (y) { + g(e, QG0); + var T = y[1]; + ur(j5, function(V) { + return u(t, V); + }, e, T), g(e, rM0); + } else + g(e, eM0); + u(f(e), nM0), u(f(e), tM0), o(f(e), iM0, uM0); + var E = i[3]; + if (E) { + var d = E[1]; + g(e, fM0), u(f(e), xM0), o(t, e, d[1]), u(f(e), oM0); + var w = d[2], G = function(V) { + return u(t, V); + }; + ur(g1[1], G, e, w), u(f(e), aM0), g(e, cM0); + } else + g(e, sM0); + u(f(e), vM0), u(f(e), lM0), o(f(e), pM0, bM0), o(Yu[33], e, i[4]), u(f(e), mM0), u(f(e), _M0), o(f(e), hM0, yM0); + var A = i[5]; + if (A) { + g(e, dM0); + var S = A[1], M = function(V, f0) { + return g(V, UG0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, kM0); + } else + g(e, wM0); + return u(f(e), EM0), u(f(e), SM0); + }), N(x$, function(t, n, e) { + var i = o(hP, t, n); + return o(C0(qG0), i, e); + }), N(j5, function(t, n, e) { + if (e[0] === 0) { + u(f(n), LG0), u(f(n), RG0); + var i = e[1], x = 0; + return le(function(p, y) { + p && u(f(n), DG0); + function T(E) { + return u(t, E); + } + return ur(u$[1], T, n, y), 1; + }, x, i), u(f(n), jG0), u(f(n), GG0); + } + u(f(n), MG0); + var c = e[1]; + function s(p) { + return u(t, p); + } + return ur(f$[1], s, n, c), u(f(n), BG0); + }), N(o$, function(t, n) { + var e = u(j5, t); + return o(C0(PG0), e, n); + }); + var dP = [0, u$, f$, hP, x$, j5, o$], kP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, a$ = function t(n, e, i) { + return t.fun(n, e, i); + }, G5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, c$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(kP, function(t, n, e, i) { + u(f(e), _G0), o(f(e), hG0, yG0), o(t, e, i[1]), u(f(e), dG0), u(f(e), kG0), o(f(e), EG0, wG0); + var x = i[2]; + function c(E) { + return u(n, E); + } + R(G5, function(E) { + return u(t, E); + }, c, e, x), u(f(e), SG0), u(f(e), gG0), o(f(e), TG0, FG0); + var s = i[3]; + if (s) { + g(e, OG0); + var p = s[1], y = function(E, d) { + return g(E, mG0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, IG0); + } else + g(e, AG0); + return u(f(e), NG0), u(f(e), CG0); + }), N(a$, function(t, n, e) { + var i = o(kP, t, n); + return o(C0(pG0), i, e); + }), N(G5, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), sG0); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(Yu[35], s, c, e, x), u(f(e), vG0); + } + u(f(e), lG0); + var p = i[1]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(qe[31], T, y, e, p), u(f(e), bG0); + }), N(c$, function(t, n, e) { + var i = o(G5, t, n); + return o(C0(cG0), i, e); + }); + var s$ = [0, kP, a$, G5, c$], M5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, v$ = function t(n, e, i) { + return t.fun(n, e, i); + }, wP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, l$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(M5, function(t, n, e, i) { + switch (i[0]) { + case 0: + var x = i[1]; + u(f(e), Cj0), u(f(e), Pj0), o(t, e, x[1]), u(f(e), Dj0); + var c = x[2], s = function(E0) { + return u(n, E0); + }, p = function(E0) { + return u(t, E0); + }; + return R(vP[1], p, s, e, c), u(f(e), Lj0), u(f(e), Rj0); + case 1: + var y = i[1]; + u(f(e), jj0), u(f(e), Gj0), o(t, e, y[1]), u(f(e), Mj0); + var T = y[2], E = function(E0) { + return u(n, E0); + }, d = function(E0) { + return u(t, E0); + }; + return R(bP[1], d, E, e, T), u(f(e), Bj0), u(f(e), qj0); + case 2: + var w = i[1]; + u(f(e), Uj0), u(f(e), Hj0), o(t, e, w[1]), u(f(e), Xj0); + var G = w[2], A = function(E0) { + return u(n, E0); + }, S = function(E0) { + return u(t, E0); + }; + return R(cP[1], S, A, e, G), u(f(e), Yj0), u(f(e), Vj0); + case 3: + u(f(e), zj0); + var M = i[1], K = function(E0) { + return u(n, E0); + }, V = function(E0) { + return u(t, E0); + }; + return R($e[13], V, K, e, M), u(f(e), Kj0); + case 4: + var f0 = i[1]; + u(f(e), Wj0), u(f(e), Jj0), o(t, e, f0[1]), u(f(e), $j0); + var m0 = f0[2], k0 = function(E0) { + return u(n, E0); + }, g0 = function(E0) { + return u(t, E0); + }; + return R(y5[1], g0, k0, e, m0), u(f(e), Zj0), u(f(e), Qj0); + case 5: + var e0 = i[1]; + u(f(e), rG0), u(f(e), eG0), o(t, e, e0[1]), u(f(e), nG0); + var x0 = e0[2], l = function(E0) { + return u(n, E0); + }, c0 = function(E0) { + return u(t, E0); + }; + return R(h5[1], c0, l, e, x0), u(f(e), tG0), u(f(e), uG0); + default: + var t0 = i[1]; + u(f(e), iG0), u(f(e), fG0), o(t, e, t0[1]), u(f(e), xG0); + var o0 = t0[2], w0 = function(E0) { + return u(n, E0); + }, _0 = function(E0) { + return u(t, E0); + }; + return R(P5[1], _0, w0, e, o0), u(f(e), oG0), u(f(e), aG0); + } + }), N(v$, function(t, n, e) { + var i = o(M5, t, n); + return o(C0(Nj0), i, e); + }), N(wP, function(t, n, e, i) { + u(f(e), VR0), o(f(e), KR0, zR0); + var x = i[1]; + x ? (g(e, WR0), o(t, e, x[1]), g(e, JR0)) : g(e, $R0), u(f(e), ZR0), u(f(e), QR0), o(f(e), ej0, rj0); + var c = i[2]; + if (c) { + g(e, nj0); + var s = c[1], p = function(f0) { + return u(n, f0); + }; + R(M5, function(f0) { + return u(t, f0); + }, p, e, s), g(e, tj0); + } else + g(e, uj0); + u(f(e), ij0), u(f(e), fj0), o(f(e), oj0, xj0); + var y = i[3]; + if (y) { + g(e, aj0); + var T = y[1], E = function(f0) { + return u(t, f0); + }; + ur(dP[5], E, e, T), g(e, cj0); + } else + g(e, sj0); + u(f(e), vj0), u(f(e), lj0), o(f(e), pj0, bj0); + var d = i[4]; + if (d) { + var w = d[1]; + g(e, mj0), u(f(e), _j0), o(t, e, w[1]), u(f(e), yj0); + var G = w[2], A = function(f0) { + return u(t, f0); + }; + ur(g1[1], A, e, G), u(f(e), hj0), g(e, dj0); + } else + g(e, kj0); + u(f(e), wj0), u(f(e), Ej0), o(f(e), gj0, Sj0); + var S = i[5]; + if (S) { + g(e, Fj0); + var M = S[1], K = function(f0, m0) { + return g(f0, YR0); + }, V = function(f0) { + return u(t, f0); + }; + R(Dr[1], V, K, e, M), g(e, Tj0); + } else + g(e, Oj0); + return u(f(e), Ij0), u(f(e), Aj0); + }), N(l$, function(t, n, e) { + var i = o(wP, t, n); + return o(C0(XR0), i, e); + }); + var b$ = [0, M5, v$, wP, l$], Al = function t(n, e) { + return t.fun(n, e); + }, p$ = function t(n) { + return t.fun(n); + }, B5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, m$ = function t(n, e, i) { + return t.fun(n, e, i); + }, q5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, _$ = function t(n, e, i) { + return t.fun(n, e, i); + }, EP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, y$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(Al, function(t, n) { + switch (n) { + case 0: + return g(t, qR0); + case 1: + return g(t, UR0); + default: + return g(t, HR0); + } + }), N(p$, function(t) { + return o(C0(BR0), Al, t); + }), N(B5, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), NR0), u(f(e), CR0); + var x = i[1], c = 0; + return le(function(E, d) { + E && u(f(e), AR0); + function w(G) { + return u(n, G); + } + return R(q5, function(G) { + return u(t, G); + }, w, e, d), 1; + }, c, x), u(f(e), PR0), u(f(e), DR0); + } + var s = i[1]; + u(f(e), LR0), u(f(e), RR0), o(t, e, s[1]), u(f(e), jR0); + var p = s[2]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(Rn[1], T, y, e, p), u(f(e), GR0), u(f(e), MR0); + }), N(m$, function(t, n, e) { + var i = o(B5, t, n); + return o(C0(IR0), i, e); + }), N(q5, function(t, n, e, i) { + u(f(e), cR0), o(f(e), vR0, sR0); + var x = i[1]; + x ? (g(e, lR0), o(Al, e, x[1]), g(e, bR0)) : g(e, pR0), u(f(e), mR0), u(f(e), _R0), o(f(e), hR0, yR0); + var c = i[2]; + if (c) { + g(e, dR0); + var s = c[1], p = function(w) { + return u(n, w); + }, y = function(w) { + return u(t, w); + }; + R(Rn[1], y, p, e, s), g(e, kR0); + } else + g(e, wR0); + u(f(e), ER0), u(f(e), SR0), o(f(e), FR0, gR0); + var T = i[3]; + function E(w) { + return u(n, w); + } + function d(w) { + return u(t, w); + } + return R(Rn[1], d, E, e, T), u(f(e), TR0), u(f(e), OR0); + }), N(_$, function(t, n, e) { + var i = o(q5, t, n); + return o(C0(aR0), i, e); + }), N(EP, function(t, n, e, i) { + u(f(e), AL0), o(f(e), CL0, NL0), o(Al, e, i[1]), u(f(e), PL0), u(f(e), DL0), o(f(e), RL0, LL0); + var x = i[2]; + u(f(e), jL0), o(t, e, x[1]), u(f(e), GL0); + var c = x[2]; + function s(V) { + return u(t, V); + } + ur(g1[1], s, e, c), u(f(e), ML0), u(f(e), BL0), u(f(e), qL0), o(f(e), HL0, UL0); + var p = i[3]; + if (p) { + g(e, XL0); + var y = p[1], T = function(V) { + return u(n, V); + }, E = function(V) { + return u(t, V); + }; + R(Rn[1], E, T, e, y), g(e, YL0); + } else + g(e, VL0); + u(f(e), zL0), u(f(e), KL0), o(f(e), JL0, WL0); + var d = i[4]; + if (d) { + g(e, $L0); + var w = d[1], G = function(V) { + return u(n, V); + }; + R(B5, function(V) { + return u(t, V); + }, G, e, w), g(e, ZL0); + } else + g(e, QL0); + u(f(e), rR0), u(f(e), eR0), o(f(e), tR0, nR0); + var A = i[5]; + if (A) { + g(e, uR0); + var S = A[1], M = function(V, f0) { + return g(V, IL0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, iR0); + } else + g(e, fR0); + return u(f(e), xR0), u(f(e), oR0); + }), N(y$, function(t, n, e) { + var i = o(EP, t, n); + return o(C0(OL0), i, e); + }); + var h$ = [0, Al, p$, B5, m$, q5, _$, EP, y$], SP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, d$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(SP, function(t, n, e, i) { + u(f(e), oL0), o(f(e), cL0, aL0); + var x = i[1]; + function c(G) { + return u(n, G); + } + function s(G) { + return u(t, G); + } + R(qe[31], s, c, e, x), u(f(e), sL0), u(f(e), vL0), o(f(e), bL0, lL0); + var p = i[2]; + if (p) { + g(e, pL0); + var y = p[1]; + o(f(e), mL0, y), g(e, _L0); + } else + g(e, yL0); + u(f(e), hL0), u(f(e), dL0), o(f(e), wL0, kL0); + var T = i[3]; + if (T) { + g(e, EL0); + var E = T[1], d = function(G, A) { + return g(G, xL0); + }, w = function(G) { + return u(t, G); + }; + R(Dr[1], w, d, e, E), g(e, SL0); + } else + g(e, gL0); + return u(f(e), FL0), u(f(e), TL0); + }), N(d$, function(t, n, e) { + var i = o(SP, t, n); + return o(C0(fL0), i, e); + }); + var k$ = [0, SP, d$], gP = function t(n, e, i) { + return t.fun(n, e, i); + }, w$ = function t(n, e) { + return t.fun(n, e); + }; + N(gP, function(t, n, e) { + u(f(n), ZD0), o(f(n), rL0, QD0); + var i = e[1]; + if (i) { + g(n, eL0); + var x = i[1], c = function(p, y) { + return g(p, $D0); + }, s = function(p) { + return u(t, p); + }; + R(Dr[1], s, c, n, x), g(n, nL0); + } else + g(n, tL0); + return u(f(n), uL0), u(f(n), iL0); + }), N(w$, function(t, n) { + var e = u(gP, t); + return o(C0(JD0), e, n); + }); + var E$ = [0, gP, w$], FP = function t(n, e) { + return t.fun(n, e); + }, S$ = function t(n) { + return t.fun(n); + }, TP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, g$ = function t(n, e, i) { + return t.fun(n, e, i); + }, U5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, F$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(FP, function(t, n) { + return n ? g(t, KD0) : g(t, WD0); + }), N(S$, function(t) { + return o(C0(zD0), FP, t); + }), N(TP, function(t, n, e, i) { + u(f(e), XD0), o(t, e, i[1]), u(f(e), YD0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(U5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), VD0); + }), N(g$, function(t, n, e) { + var i = o(TP, t, n); + return o(C0(HD0), i, e); + }), N(U5, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), EP0); + var x = i[1], c = function(h0) { + return u(n, h0); + }, s = function(h0) { + return u(t, h0); + }; + return R(Kv[1], s, c, e, x), u(f(e), SP0); + case 1: + u(f(e), gP0); + var p = i[1], y = function(h0) { + return u(t, h0); + }; + return ur(UW[1], y, e, p), u(f(e), FP0); + case 2: + u(f(e), TP0); + var T = i[1], E = function(h0) { + return u(n, h0); + }, d = function(h0) { + return u(t, h0); + }; + return R(F1[8], d, E, e, T), u(f(e), OP0); + case 3: + u(f(e), IP0); + var w = i[1], G = function(h0) { + return u(t, h0); + }; + return ur(XW[1], G, e, w), u(f(e), AP0); + case 4: + u(f(e), NP0); + var A = i[1], S = function(h0) { + return u(t, h0); + }; + return ur(VW[1], S, e, A), u(f(e), CP0); + case 5: + u(f(e), PP0); + var M = i[1], K = function(h0) { + return u(n, h0); + }, V = function(h0) { + return u(t, h0); + }; + return R(cP[1], V, K, e, M), u(f(e), DP0); + case 6: + u(f(e), LP0); + var f0 = i[1], m0 = function(h0) { + return u(n, h0); + }, k0 = function(h0) { + return u(t, h0); + }; + return R(b$[3], k0, m0, e, f0), u(f(e), RP0); + case 7: + u(f(e), jP0); + var g0 = i[1], e0 = function(h0) { + return u(n, h0); + }, x0 = function(h0) { + return u(t, h0); + }; + return R(bP[1], x0, e0, e, g0), u(f(e), GP0); + case 8: + u(f(e), MP0); + var l = i[1], c0 = function(h0) { + return u(n, h0); + }, t0 = function(h0) { + return u(t, h0); + }; + return R(P5[1], t0, c0, e, l), u(f(e), BP0); + case 9: + u(f(e), qP0); + var o0 = i[1], w0 = function(h0) { + return u(n, h0); + }, _0 = function(h0) { + return u(t, h0); + }; + return R(QJ[5], _0, w0, e, o0), u(f(e), UP0); + case 10: + u(f(e), HP0); + var E0 = i[1], U0 = function(h0) { + return u(n, h0); + }, b = function(h0) { + return u(t, h0); + }; + return R(e$[1], b, U0, e, E0), u(f(e), XP0); + case 11: + u(f(e), YP0); + var R0 = i[1], X = function(h0) { + return u(n, h0); + }, s0 = function(h0) { + return u(t, h0); + }; + return R(y5[1], s0, X, e, R0), u(f(e), VP0); + case 12: + u(f(e), zP0); + var hr = i[1], Ar = function(h0) { + return u(n, h0); + }, or = function(h0) { + return u(t, h0); + }; + return R(h5[1], or, Ar, e, hr), u(f(e), KP0); + case 13: + u(f(e), WP0); + var W0 = i[1], Lr = function(h0) { + return u(n, h0); + }, Tr = function(h0) { + return u(t, h0); + }; + return R(vP[1], Tr, Lr, e, W0), u(f(e), JP0); + case 14: + u(f(e), $P0); + var Hr = i[1], Or = function(h0) { + return u(n, h0); + }, fr = function(h0) { + return u(t, h0); + }; + return R(hJ[1], fr, Or, e, Hr), u(f(e), ZP0); + case 15: + u(f(e), QP0); + var Rr = i[1], Wr = function(h0) { + return u(t, h0); + }; + return ur(E$[1], Wr, e, Rr), u(f(e), rD0); + case 16: + u(f(e), eD0); + var Jr = i[1], ar = function(h0) { + return u(n, h0); + }, _r = function(h0) { + return u(t, h0); + }; + return R(YJ[7], _r, ar, e, Jr), u(f(e), nD0); + case 17: + u(f(e), tD0); + var Ir = i[1], fe = function(h0) { + return u(n, h0); + }, v0 = function(h0) { + return u(t, h0); + }; + return R(s$[1], v0, fe, e, Ir), u(f(e), uD0); + case 18: + u(f(e), iD0); + var P = i[1], L = function(h0) { + return u(n, h0); + }, Q = function(h0) { + return u(t, h0); + }; + return R(dP[3], Q, L, e, P), u(f(e), fD0); + case 19: + u(f(e), xD0); + var i0 = i[1], l0 = function(h0) { + return u(n, h0); + }, S0 = function(h0) { + return u(t, h0); + }; + return R(k$[1], S0, l0, e, i0), u(f(e), oD0); + case 20: + u(f(e), aD0); + var T0 = i[1], rr = function(h0) { + return u(n, h0); + }, L0 = function(h0) { + return u(t, h0); + }; + return R(wJ[1], L0, rr, e, T0), u(f(e), cD0); + case 21: + u(f(e), sD0); + var B = i[1], Z = function(h0) { + return u(n, h0); + }, p0 = function(h0) { + return u(t, h0); + }; + return R(gJ[1], p0, Z, e, B), u(f(e), vD0); + case 22: + u(f(e), lD0); + var b0 = i[1], O0 = function(h0) { + return u(n, h0); + }, M0 = function(h0) { + return u(t, h0); + }; + return R(OJ[1], M0, O0, e, b0), u(f(e), bD0); + case 23: + u(f(e), pD0); + var er = i[1], yr = function(h0) { + return u(n, h0); + }, vr = function(h0) { + return u(t, h0); + }; + return R(As[5], vr, yr, e, er), u(f(e), mD0); + case 24: + u(f(e), _D0); + var $0 = i[1], Er = function(h0) { + return u(n, h0); + }, Mr = function(h0) { + return u(t, h0); + }; + return R(GW[2], Mr, Er, e, $0), u(f(e), yD0); + case 25: + u(f(e), hD0); + var Br = i[1], qr = function(h0) { + return u(n, h0); + }, jr = function(h0) { + return u(t, h0); + }; + return R(h$[7], jr, qr, e, Br), u(f(e), dD0); + case 26: + u(f(e), kD0); + var $r = i[1], ne = function(h0) { + return u(n, h0); + }, Qr = function(h0) { + return u(t, h0); + }; + return R(P5[1], Qr, ne, e, $r), u(f(e), wD0); + case 27: + u(f(e), ED0); + var be = i[1], ae = function(h0) { + return u(n, h0); + }, pe = function(h0) { + return u(t, h0); + }; + return R(BW[1], pe, ae, e, be), u(f(e), SD0); + case 28: + u(f(e), gD0); + var oe = i[1], ce = function(h0) { + return u(n, h0); + }, ge = function(h0) { + return u(t, h0); + }; + return R(tJ[1], ge, ce, e, oe), u(f(e), FD0); + case 29: + u(f(e), TD0); + var q0 = i[1], Fr = function(h0) { + return u(n, h0); + }, _ = function(h0) { + return u(t, h0); + }; + return R(eJ[2], _, Fr, e, q0), u(f(e), OD0); + case 30: + u(f(e), ID0); + var k = i[1], I = function(h0) { + return u(n, h0); + }, U = function(h0) { + return u(t, h0); + }; + return R(iJ[1], U, I, e, k), u(f(e), AD0); + case 31: + u(f(e), ND0); + var Y = i[1], y0 = function(h0) { + return u(n, h0); + }, P0 = function(h0) { + return u(t, h0); + }; + return R(cJ[2], P0, y0, e, Y), u(f(e), CD0); + case 32: + u(f(e), PD0); + var I0 = i[1], D = function(h0) { + return u(n, h0); + }, u0 = function(h0) { + return u(t, h0); + }; + return R(y5[1], u0, D, e, I0), u(f(e), DD0); + case 33: + u(f(e), LD0); + var X0 = i[1], J0 = function(h0) { + return u(n, h0); + }, ir = function(h0) { + return u(t, h0); + }; + return R(h5[1], ir, J0, e, X0), u(f(e), RD0); + case 34: + u(f(e), jD0); + var Q0 = i[1], F0 = function(h0) { + return u(n, h0); + }, Sr = function(h0) { + return u(t, h0); + }; + return R(Il[2], Sr, F0, e, Q0), u(f(e), GD0); + case 35: + u(f(e), MD0); + var mr = i[1], Cr = function(h0) { + return u(n, h0); + }, sr = function(h0) { + return u(t, h0); + }; + return R(_J[1], sr, Cr, e, mr), u(f(e), BD0); + default: + u(f(e), qD0); + var Pr = i[1], K0 = function(h0) { + return u(n, h0); + }, Ur = function(h0) { + return u(t, h0); + }; + return R(KW[1], Ur, K0, e, Pr), u(f(e), UD0); + } + }), N(F$, function(t, n, e) { + var i = o(U5, t, n); + return o(C0(wP0), i, e); + }), mu(W3r, Yu, [0, Kv, GW, BW, UW, XW, VW, KW, y5, h5, eJ, tJ, iJ, cJ, Il, _J, hJ, wJ, gJ, OJ, YJ, P5, cP, vP, bP, QJ, e$, dP, s$, b$, h$, k$, E$, FP, S$, TP, g$, U5, F$]); + var OP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, T$ = function t(n, e, i) { + return t.fun(n, e, i); + }, H5 = function t(n, e, i) { + return t.fun(n, e, i); + }, O$ = function t(n, e) { + return t.fun(n, e); + }; + N(OP, function(t, n, e, i) { + u(f(e), hP0), o(n, e, i[1]), u(f(e), dP0); + var x = i[2]; + return ur(H5, function(c) { + return u(t, c); + }, e, x), u(f(e), kP0); + }), N(T$, function(t, n, e) { + var i = o(OP, t, n); + return o(C0(yP0), i, e); + }), N(H5, function(t, n, e) { + u(f(n), cP0), o(f(n), vP0, sP0); + var i = e[1]; + if (i) { + g(n, lP0); + var x = i[1], c = function(p, y) { + return g(p, aP0); + }, s = function(p) { + return u(t, p); + }; + R(Dr[1], s, c, n, x), g(n, bP0); + } else + g(n, pP0); + return u(f(n), mP0), u(f(n), _P0); + }), N(O$, function(t, n) { + var e = u(H5, t); + return o(C0(oP0), e, n); + }); + var I$ = [0, OP, T$, H5, O$], IP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, A$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(IP, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), uP0); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R($e[13], s, c, e, x), u(f(e), iP0); + } + u(f(e), fP0); + var p = i[1]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(I$[1], T, y, e, p), u(f(e), xP0); + }), N(A$, function(t, n, e) { + var i = o(IP, t, n); + return o(C0(tP0), i, e); + }); + var N$ = [0, I$, IP, A$], AP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, C$ = function t(n, e, i) { + return t.fun(n, e, i); + }, X5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, P$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(AP, function(t, n, e, i) { + u(f(e), rP0), o(t, e, i[1]), u(f(e), eP0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(X5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), nP0); + }), N(C$, function(t, n, e) { + var i = o(AP, t, n); + return o(C0(QC0), i, e); + }), N(X5, function(t, n, e, i) { + u(f(e), MC0), o(f(e), qC0, BC0); + var x = i[1]; + u(f(e), UC0); + var c = 0; + le(function(E, d) { + E && u(f(e), GC0); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(N$[2], G, w, e, d), 1; + }, c, x), u(f(e), HC0), u(f(e), XC0), u(f(e), YC0), o(f(e), zC0, VC0); + var s = i[2]; + if (s) { + g(e, KC0); + var p = s[1], y = function(E, d) { + u(f(E), RC0); + var w = 0; + return le(function(G, A) { + G && u(f(E), LC0); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), jC0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, WC0); + } else + g(e, JC0); + return u(f(e), $C0), u(f(e), ZC0); + }), N(P$, function(t, n, e) { + var i = o(X5, t, n); + return o(C0(DC0), i, e); + }); + var NP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, D$ = function t(n, e, i) { + return t.fun(n, e, i); + }, Y5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, L$ = function t(n, e, i) { + return t.fun(n, e, i); + }, See = [0, AP, C$, X5, P$]; + N(NP, function(t, n, e, i) { + u(f(e), NC0), o(t, e, i[1]), u(f(e), CC0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Y5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), PC0); + }), N(D$, function(t, n, e) { + var i = o(NP, t, n); + return o(C0(AC0), i, e); + }), N(Y5, function(t, n, e, i) { + u(f(e), yC0), o(f(e), dC0, hC0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), kC0), u(f(e), wC0), o(f(e), SC0, EC0); + var p = i[2]; + if (p) { + g(e, gC0); + var y = p[1], T = function(d, w) { + return g(d, _C0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, FC0); + } else + g(e, TC0); + return u(f(e), OC0), u(f(e), IC0); + }), N(L$, function(t, n, e) { + var i = o(Y5, t, n); + return o(C0(mC0), i, e); + }); + var CP = [0, NP, D$, Y5, L$], V5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, R$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(V5, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), cC0); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(qe[31], s, c, e, x), u(f(e), sC0); + case 1: + u(f(e), vC0); + var p = i[1], y = function(E) { + return u(n, E); + }, T = function(E) { + return u(t, E); + }; + return R(CP[1], T, y, e, p), u(f(e), lC0); + default: + return u(f(e), bC0), o(t, e, i[1]), u(f(e), pC0); + } + }), N(R$, function(t, n, e) { + var i = o(V5, t, n); + return o(C0(aC0), i, e); + }); + var PP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, j$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(PP, function(t, n, e, i) { + u(f(e), WN0), o(f(e), $N0, JN0); + var x = i[1]; + u(f(e), ZN0); + var c = 0; + le(function(E, d) { + E && u(f(e), KN0); + function w(G) { + return u(n, G); + } + return R(V5, function(G) { + return u(t, G); + }, w, e, d), 1; + }, c, x), u(f(e), QN0), u(f(e), rC0), u(f(e), eC0), o(f(e), tC0, nC0); + var s = i[2]; + if (s) { + g(e, uC0); + var p = s[1], y = function(E, d) { + u(f(E), VN0); + var w = 0; + return le(function(G, A) { + G && u(f(E), YN0); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), zN0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, iC0); + } else + g(e, fC0); + return u(f(e), xC0), u(f(e), oC0); + }), N(j$, function(t, n, e) { + var i = o(PP, t, n); + return o(C0(XN0), i, e); + }); + var G$ = [0, V5, R$, PP, j$], z5 = function t(n, e) { + return t.fun(n, e); + }, M$ = function t(n) { + return t.fun(n); + }, DP = function t(n, e, i) { + return t.fun(n, e, i); + }, B$ = function t(n, e) { + return t.fun(n, e); + }, K5 = function t(n, e) { + return t.fun(n, e); + }, q$ = function t(n) { + return t.fun(n); + }; + N(z5, function(t, n) { + u(f(t), PN0), o(f(t), LN0, DN0); + var e = n[1]; + o(f(t), RN0, e), u(f(t), jN0), u(f(t), GN0), o(f(t), BN0, MN0); + var i = n[2]; + return o(f(t), qN0, i), u(f(t), UN0), u(f(t), HN0); + }), N(M$, function(t) { + return o(C0(CN0), z5, t); + }), N(DP, function(t, n, e) { + return u(f(n), IN0), o(t, n, e[1]), u(f(n), AN0), o(K5, n, e[2]), u(f(n), NN0); + }), N(B$, function(t, n) { + var e = u(DP, t); + return o(C0(ON0), e, n); + }), N(K5, function(t, n) { + u(f(t), yN0), o(f(t), dN0, hN0), o(z5, t, n[1]), u(f(t), kN0), u(f(t), wN0), o(f(t), SN0, EN0); + var e = n[2]; + return o(f(t), gN0, e), u(f(t), FN0), u(f(t), TN0); + }), N(q$, function(t) { + return o(C0(_N0), K5, t); + }); + var U$ = [0, z5, M$, DP, B$, K5, q$], LP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, H$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(LP, function(t, n, e, i) { + u(f(e), $A0), o(f(e), QA0, ZA0); + var x = i[1]; + u(f(e), rN0); + var c = 0; + le(function(w, G) { + w && u(f(e), JA0); + function A(S) { + return u(t, S); + } + return ur(U$[3], A, e, G), 1; + }, c, x), u(f(e), eN0), u(f(e), nN0), u(f(e), tN0), o(f(e), iN0, uN0); + var s = i[2]; + u(f(e), fN0); + var p = 0; + le(function(w, G) { + w && u(f(e), WA0); + function A(M) { + return u(n, M); + } + function S(M) { + return u(t, M); + } + return R(qe[31], S, A, e, G), 1; + }, p, s), u(f(e), xN0), u(f(e), oN0), u(f(e), aN0), o(f(e), sN0, cN0); + var y = i[3]; + if (y) { + g(e, vN0); + var T = y[1], E = function(w, G) { + return g(w, KA0); + }, d = function(w) { + return u(t, w); + }; + R(Dr[1], d, E, e, T), g(e, lN0); + } else + g(e, bN0); + return u(f(e), pN0), u(f(e), mN0); + }), N(H$, function(t, n, e) { + var i = o(LP, t, n); + return o(C0(zA0), i, e); + }); + var RP = [0, U$, LP, H$], jP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, X$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(jP, function(t, n, e, i) { + u(f(e), OA0), o(f(e), AA0, IA0); + var x = i[1]; + function c(S) { + return u(n, S); + } + function s(S) { + return u(t, S); + } + R(qe[31], s, c, e, x), u(f(e), NA0), u(f(e), CA0), o(f(e), DA0, PA0); + var p = i[2]; + u(f(e), LA0), o(t, e, p[1]), u(f(e), RA0); + var y = p[2]; + function T(S) { + return u(n, S); + } + function E(S) { + return u(t, S); + } + R(RP[2], E, T, e, y), u(f(e), jA0), u(f(e), GA0), u(f(e), MA0), o(f(e), qA0, BA0); + var d = i[3]; + if (d) { + g(e, UA0); + var w = d[1], G = function(S, M) { + return g(S, TA0); + }, A = function(S) { + return u(t, S); + }; + R(Dr[1], A, G, e, w), g(e, HA0); + } else + g(e, XA0); + return u(f(e), YA0), u(f(e), VA0); + }), N(X$, function(t, n, e) { + var i = o(jP, t, n); + return o(C0(FA0), i, e); + }); + var Y$ = [0, jP, X$], T1 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, V$ = function t(n, e, i) { + return t.fun(n, e, i); + }, GP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, z$ = function t(n, e, i) { + return t.fun(n, e, i); + }, W5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, K$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(T1, function(t, n, e, i) { + switch (i[0]) { + case 0: + var x = i[1]; + u(f(e), pA0), u(f(e), mA0), o(n, e, x[1]), u(f(e), _A0); + var c = x[2], s = function(S) { + return u(t, S); + }; + return ur(Tl[2], s, e, c), u(f(e), yA0), u(f(e), hA0); + case 1: + u(f(e), dA0); + var p = i[1], y = function(S) { + return u(n, S); + }, T = function(S) { + return u(t, S); + }; + return R(Rn[1], T, y, e, p), u(f(e), kA0); + case 2: + u(f(e), wA0); + var E = i[1], d = function(S) { + return u(t, S); + }; + return ur(Bp[1], d, e, E), u(f(e), EA0); + default: + u(f(e), SA0); + var w = i[1], G = function(S) { + return u(n, S); + }, A = function(S) { + return u(t, S); + }; + return R(qp[1], A, G, e, w), u(f(e), gA0); + } + }), N(V$, function(t, n, e) { + var i = o(T1, t, n); + return o(C0(bA0), i, e); + }), N(GP, function(t, n, e, i) { + u(f(e), sA0), o(t, e, i[1]), u(f(e), vA0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(W5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), lA0); + }), N(z$, function(t, n, e) { + var i = o(GP, t, n); + return o(C0(cA0), i, e); + }), N(W5, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), rI0), o(f(e), nI0, eI0); + var x = i[1], c = function(s0) { + return u(n, s0); + }; + R(T1, function(s0) { + return u(t, s0); + }, c, e, x), u(f(e), tI0), u(f(e), uI0), o(f(e), fI0, iI0); + var s = i[2], p = function(s0) { + return u(n, s0); + }, y = function(s0) { + return u(t, s0); + }; + R(qe[31], y, p, e, s), u(f(e), xI0), u(f(e), oI0), o(f(e), cI0, aI0); + var T = i[3]; + return o(f(e), sI0, T), u(f(e), vI0), u(f(e), lI0); + case 1: + var E = i[2]; + u(f(e), bI0), o(f(e), mI0, pI0); + var d = i[1], w = function(s0) { + return u(n, s0); + }; + R(T1, function(s0) { + return u(t, s0); + }, w, e, d), u(f(e), _I0), u(f(e), yI0), o(f(e), dI0, hI0), u(f(e), kI0), o(t, e, E[1]), u(f(e), wI0); + var G = E[2], A = function(s0) { + return u(n, s0); + }, S = function(s0) { + return u(t, s0); + }; + return R(As[5], S, A, e, G), u(f(e), EI0), u(f(e), SI0), u(f(e), gI0); + case 2: + var M = i[3], K = i[2]; + u(f(e), FI0), o(f(e), OI0, TI0); + var V = i[1], f0 = function(s0) { + return u(n, s0); + }; + R(T1, function(s0) { + return u(t, s0); + }, f0, e, V), u(f(e), II0), u(f(e), AI0), o(f(e), CI0, NI0), u(f(e), PI0), o(t, e, K[1]), u(f(e), DI0); + var m0 = K[2], k0 = function(s0) { + return u(n, s0); + }, g0 = function(s0) { + return u(t, s0); + }; + if (R(As[5], g0, k0, e, m0), u(f(e), LI0), u(f(e), RI0), u(f(e), jI0), o(f(e), MI0, GI0), M) { + g(e, BI0); + var e0 = M[1], x0 = function(s0, hr) { + return g(s0, QO0); + }, l = function(s0) { + return u(t, s0); + }; + R(Dr[1], l, x0, e, e0), g(e, qI0); + } else + g(e, UI0); + return u(f(e), HI0), u(f(e), XI0); + default: + var c0 = i[3], t0 = i[2]; + u(f(e), YI0), o(f(e), zI0, VI0); + var o0 = i[1], w0 = function(s0) { + return u(n, s0); + }; + R(T1, function(s0) { + return u(t, s0); + }, w0, e, o0), u(f(e), KI0), u(f(e), WI0), o(f(e), $I0, JI0), u(f(e), ZI0), o(t, e, t0[1]), u(f(e), QI0); + var _0 = t0[2], E0 = function(s0) { + return u(n, s0); + }, U0 = function(s0) { + return u(t, s0); + }; + if (R(As[5], U0, E0, e, _0), u(f(e), rA0), u(f(e), eA0), u(f(e), nA0), o(f(e), uA0, tA0), c0) { + g(e, iA0); + var b = c0[1], R0 = function(s0, hr) { + return g(s0, ZO0); + }, X = function(s0) { + return u(t, s0); + }; + R(Dr[1], X, R0, e, b), g(e, fA0); + } else + g(e, xA0); + return u(f(e), oA0), u(f(e), aA0); + } + }), N(K$, function(t, n, e) { + var i = o(W5, t, n); + return o(C0($O0), i, e); + }); + var W$ = [0, T1, V$, GP, z$, W5, K$], MP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, J$ = function t(n, e, i) { + return t.fun(n, e, i); + }, J5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, $$ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(MP, function(t, n, e, i) { + u(f(e), KO0), o(t, e, i[1]), u(f(e), WO0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(J5, function(s) { + return u(t, s); + }, c, e, x), u(f(e), JO0); + }), N(J$, function(t, n, e) { + var i = o(MP, t, n); + return o(C0(zO0), i, e); + }), N(J5, function(t, n, e, i) { + u(f(e), LO0), o(f(e), jO0, RO0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), GO0), u(f(e), MO0), o(f(e), qO0, BO0); + var p = i[2]; + if (p) { + g(e, UO0); + var y = p[1], T = function(d, w) { + return g(d, DO0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, HO0); + } else + g(e, XO0); + return u(f(e), YO0), u(f(e), VO0); + }), N($$, function(t, n, e) { + var i = o(J5, t, n); + return o(C0(PO0), i, e); + }); + var Z$ = [0, MP, J$, J5, $$], $5 = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, Q$ = function t(n, e, i) { + return t.fun(n, e, i); + }, BP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, rZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N($5, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), IO0); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(W$[3], s, c, e, x), u(f(e), AO0); + } + u(f(e), NO0); + var p = i[1]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(Z$[1], T, y, e, p), u(f(e), CO0); + }), N(Q$, function(t, n, e) { + var i = o($5, t, n); + return o(C0(OO0), i, e); + }), N(BP, function(t, n, e, i) { + u(f(e), bO0), o(f(e), mO0, pO0); + var x = i[1]; + u(f(e), _O0); + var c = 0; + le(function(E, d) { + E && u(f(e), lO0); + function w(G) { + return u(n, G); + } + return R($5, function(G) { + return u(t, G); + }, w, e, d), 1; + }, c, x), u(f(e), yO0), u(f(e), hO0), u(f(e), dO0), o(f(e), wO0, kO0); + var s = i[2]; + if (s) { + g(e, EO0); + var p = s[1], y = function(E, d) { + u(f(E), sO0); + var w = 0; + return le(function(G, A) { + G && u(f(E), cO0); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), vO0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, SO0); + } else + g(e, gO0); + return u(f(e), FO0), u(f(e), TO0); + }), N(rZ, function(t, n, e) { + var i = o(BP, t, n); + return o(C0(aO0), i, e); + }); + var eZ = [0, W$, Z$, $5, Q$, BP, rZ], qP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, nZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(qP, function(t, n, e, i) { + u(f(e), WT0), o(f(e), $T0, JT0); + var x = i[1]; + u(f(e), ZT0); + var c = 0; + le(function(E, d) { + E && u(f(e), KT0); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(qe[31], G, w, e, d), 1; + }, c, x), u(f(e), QT0), u(f(e), rO0), u(f(e), eO0), o(f(e), tO0, nO0); + var s = i[2]; + if (s) { + g(e, uO0); + var p = s[1], y = function(E, d) { + return g(E, zT0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, iO0); + } else + g(e, fO0); + return u(f(e), xO0), u(f(e), oO0); + }), N(nZ, function(t, n, e) { + var i = o(qP, t, n); + return o(C0(VT0), i, e); + }); + var tZ = [0, qP, nZ], Z5 = function t(n, e) { + return t.fun(n, e); + }, uZ = function t(n) { + return t.fun(n); + }, UP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, iZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(Z5, function(t, n) { + switch (n) { + case 0: + return g(t, GT0); + case 1: + return g(t, MT0); + case 2: + return g(t, BT0); + case 3: + return g(t, qT0); + case 4: + return g(t, UT0); + case 5: + return g(t, HT0); + case 6: + return g(t, XT0); + default: + return g(t, YT0); + } + }), N(uZ, function(t) { + return o(C0(jT0), Z5, t); + }), N(UP, function(t, n, e, i) { + u(f(e), kT0), o(f(e), ET0, wT0), o(Z5, e, i[1]), u(f(e), ST0), u(f(e), gT0), o(f(e), TT0, FT0); + var x = i[2]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), OT0), u(f(e), IT0), o(f(e), NT0, AT0); + var p = i[3]; + if (p) { + g(e, CT0); + var y = p[1], T = function(d, w) { + return g(d, dT0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, PT0); + } else + g(e, DT0); + return u(f(e), LT0), u(f(e), RT0); + }), N(iZ, function(t, n, e) { + var i = o(UP, t, n); + return o(C0(hT0), i, e); + }); + var fZ = [0, Z5, uZ, UP, iZ], Q5 = function t(n, e) { + return t.fun(n, e); + }, xZ = function t(n) { + return t.fun(n); + }, HP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, oZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(Q5, function(t, n) { + switch (n) { + case 0: + return g(t, $F0); + case 1: + return g(t, ZF0); + case 2: + return g(t, QF0); + case 3: + return g(t, rT0); + case 4: + return g(t, eT0); + case 5: + return g(t, nT0); + case 6: + return g(t, tT0); + case 7: + return g(t, uT0); + case 8: + return g(t, iT0); + case 9: + return g(t, fT0); + case 10: + return g(t, xT0); + case 11: + return g(t, oT0); + case 12: + return g(t, aT0); + case 13: + return g(t, cT0); + case 14: + return g(t, sT0); + case 15: + return g(t, vT0); + case 16: + return g(t, lT0); + case 17: + return g(t, bT0); + case 18: + return g(t, pT0); + case 19: + return g(t, mT0); + case 20: + return g(t, _T0); + default: + return g(t, yT0); + } + }), N(xZ, function(t) { + return o(C0(JF0), Q5, t); + }), N(HP, function(t, n, e, i) { + u(f(e), AF0), o(f(e), CF0, NF0), o(Q5, e, i[1]), u(f(e), PF0), u(f(e), DF0), o(f(e), RF0, LF0); + var x = i[2]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R(qe[31], s, c, e, x), u(f(e), jF0), u(f(e), GF0), o(f(e), BF0, MF0); + var p = i[3]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R(qe[31], T, y, e, p), u(f(e), qF0), u(f(e), UF0), o(f(e), XF0, HF0); + var E = i[4]; + if (E) { + g(e, YF0); + var d = E[1], w = function(A, S) { + return g(A, IF0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, VF0); + } else + g(e, zF0); + return u(f(e), KF0), u(f(e), WF0); + }), N(oZ, function(t, n, e) { + var i = o(HP, t, n); + return o(C0(OF0), i, e); + }); + var aZ = [0, Q5, xZ, HP, oZ], rm = function t(n, e) { + return t.fun(n, e); + }, cZ = function t(n) { + return t.fun(n); + }, XP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, sZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(rm, function(t, n) { + switch (n) { + case 0: + return g(t, lF0); + case 1: + return g(t, bF0); + case 2: + return g(t, pF0); + case 3: + return g(t, mF0); + case 4: + return g(t, _F0); + case 5: + return g(t, yF0); + case 6: + return g(t, hF0); + case 7: + return g(t, dF0); + case 8: + return g(t, kF0); + case 9: + return g(t, wF0); + case 10: + return g(t, EF0); + case 11: + return g(t, SF0); + case 12: + return g(t, gF0); + case 13: + return g(t, FF0); + default: + return g(t, TF0); + } + }), N(cZ, function(t) { + return o(C0(vF0), rm, t); + }), N(XP, function(t, n, e, i) { + u(f(e), Hg0), o(f(e), Yg0, Xg0); + var x = i[1]; + x ? (g(e, Vg0), o(rm, e, x[1]), g(e, zg0)) : g(e, Kg0), u(f(e), Wg0), u(f(e), Jg0), o(f(e), Zg0, $g0); + var c = i[2]; + function s(S) { + return u(n, S); + } + function p(S) { + return u(t, S); + } + R(di[5], p, s, e, c), u(f(e), Qg0), u(f(e), rF0), o(f(e), nF0, eF0); + var y = i[3]; + function T(S) { + return u(n, S); + } + function E(S) { + return u(t, S); + } + R(qe[31], E, T, e, y), u(f(e), tF0), u(f(e), uF0), o(f(e), fF0, iF0); + var d = i[4]; + if (d) { + g(e, xF0); + var w = d[1], G = function(S, M) { + return g(S, Ug0); + }, A = function(S) { + return u(t, S); + }; + R(Dr[1], A, G, e, w), g(e, oF0); + } else + g(e, aF0); + return u(f(e), cF0), u(f(e), sF0); + }), N(sZ, function(t, n, e) { + var i = o(XP, t, n); + return o(C0(qg0), i, e); + }); + var vZ = [0, rm, cZ, XP, sZ], em = function t(n, e) { + return t.fun(n, e); + }, lZ = function t(n) { + return t.fun(n); + }, YP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, bZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(em, function(t, n) { + return n ? g(t, Mg0) : g(t, Bg0); + }), N(lZ, function(t) { + return o(C0(Gg0), em, t); + }), N(YP, function(t, n, e, i) { + u(f(e), _g0), o(f(e), hg0, yg0), o(em, e, i[1]), u(f(e), dg0), u(f(e), kg0), o(f(e), Eg0, wg0); + var x = i[2]; + function c(w) { + return u(n, w); + } + function s(w) { + return u(t, w); + } + R(qe[31], s, c, e, x), u(f(e), Sg0), u(f(e), gg0), o(f(e), Tg0, Fg0); + var p = i[3]; + o(f(e), Og0, p), u(f(e), Ig0), u(f(e), Ag0), o(f(e), Cg0, Ng0); + var y = i[4]; + if (y) { + g(e, Pg0); + var T = y[1], E = function(w, G) { + return g(w, mg0); + }, d = function(w) { + return u(t, w); + }; + R(Dr[1], d, E, e, T), g(e, Dg0); + } else + g(e, Lg0); + return u(f(e), Rg0), u(f(e), jg0); + }), N(bZ, function(t, n, e) { + var i = o(YP, t, n); + return o(C0(pg0), i, e); + }); + var pZ = [0, em, lZ, YP, bZ], nm = function t(n, e) { + return t.fun(n, e); + }, mZ = function t(n) { + return t.fun(n); + }, VP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, _Z = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(nm, function(t, n) { + switch (n) { + case 0: + return g(t, vg0); + case 1: + return g(t, lg0); + default: + return g(t, bg0); + } + }), N(mZ, function(t) { + return o(C0(sg0), nm, t); + }), N(VP, function(t, n, e, i) { + u(f(e), YS0), o(f(e), zS0, VS0), o(nm, e, i[1]), u(f(e), KS0), u(f(e), WS0), o(f(e), $S0, JS0); + var x = i[2]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R(qe[31], s, c, e, x), u(f(e), ZS0), u(f(e), QS0), o(f(e), eg0, rg0); + var p = i[3]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R(qe[31], T, y, e, p), u(f(e), ng0), u(f(e), tg0), o(f(e), ig0, ug0); + var E = i[4]; + if (E) { + g(e, fg0); + var d = E[1], w = function(A, S) { + return g(A, XS0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, xg0); + } else + g(e, og0); + return u(f(e), ag0), u(f(e), cg0); + }), N(_Z, function(t, n, e) { + var i = o(VP, t, n); + return o(C0(HS0), i, e); + }); + var yZ = [0, nm, mZ, VP, _Z], zP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, hZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(zP, function(t, n, e, i) { + u(f(e), ES0), o(f(e), gS0, SS0); + var x = i[1]; + function c(K) { + return u(n, K); + } + function s(K) { + return u(t, K); + } + R(qe[31], s, c, e, x), u(f(e), FS0), u(f(e), TS0), o(f(e), IS0, OS0); + var p = i[2]; + function y(K) { + return u(n, K); + } + function T(K) { + return u(t, K); + } + R(qe[31], T, y, e, p), u(f(e), AS0), u(f(e), NS0), o(f(e), PS0, CS0); + var E = i[3]; + function d(K) { + return u(n, K); + } + function w(K) { + return u(t, K); + } + R(qe[31], w, d, e, E), u(f(e), DS0), u(f(e), LS0), o(f(e), jS0, RS0); + var G = i[4]; + if (G) { + g(e, GS0); + var A = G[1], S = function(K, V) { + return g(K, wS0); + }, M = function(K) { + return u(t, K); + }; + R(Dr[1], M, S, e, A), g(e, MS0); + } else + g(e, BS0); + return u(f(e), qS0), u(f(e), US0); + }), N(hZ, function(t, n, e) { + var i = o(zP, t, n); + return o(C0(kS0), i, e); + }); + var dZ = [0, zP, hZ], tm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, kZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(tm, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), _S0); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(qe[31], s, c, e, x), u(f(e), yS0); + } + u(f(e), hS0); + var p = i[1]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(CP[1], T, y, e, p), u(f(e), dS0); + }), N(kZ, function(t, n, e) { + var i = o(tm, t, n); + return o(C0(mS0), i, e); + }); + var KP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, wZ = function t(n, e, i) { + return t.fun(n, e, i); + }, um = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, EZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(KP, function(t, n, e, i) { + u(f(e), lS0), o(t, e, i[1]), u(f(e), bS0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(um, function(s) { + return u(t, s); + }, c, e, x), u(f(e), pS0); + }), N(wZ, function(t, n, e) { + var i = o(KP, t, n); + return o(C0(vS0), i, e); + }), N(um, function(t, n, e, i) { + u(f(e), ZE0), o(f(e), rS0, QE0); + var x = i[1]; + u(f(e), eS0); + var c = 0; + le(function(E, d) { + E && u(f(e), $E0); + function w(G) { + return u(n, G); + } + return R(tm, function(G) { + return u(t, G); + }, w, e, d), 1; + }, c, x), u(f(e), nS0), u(f(e), tS0), u(f(e), uS0), o(f(e), fS0, iS0); + var s = i[2]; + if (s) { + g(e, xS0); + var p = s[1], y = function(E, d) { + u(f(E), WE0); + var w = 0; + return le(function(G, A) { + G && u(f(E), KE0); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), JE0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, oS0); + } else + g(e, aS0); + return u(f(e), cS0), u(f(e), sS0); + }), N(EZ, function(t, n, e) { + var i = o(um, t, n); + return o(C0(zE0), i, e); + }); + var WP = [0, KP, wZ, um, EZ], JP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, SZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(JP, function(t, n, e, i) { + u(f(e), kE0), o(f(e), EE0, wE0); + var x = i[1]; + function c(f0) { + return u(n, f0); + } + function s(f0) { + return u(t, f0); + } + R(qe[31], s, c, e, x), u(f(e), SE0), u(f(e), gE0), o(f(e), TE0, FE0); + var p = i[2]; + if (p) { + g(e, OE0); + var y = p[1], T = function(f0) { + return u(n, f0); + }, E = function(f0) { + return u(t, f0); + }; + R(qe[2][1], E, T, e, y), g(e, IE0); + } else + g(e, AE0); + u(f(e), NE0), u(f(e), CE0), o(f(e), DE0, PE0); + var d = i[3]; + if (d) { + g(e, LE0); + var w = d[1], G = function(f0) { + return u(n, f0); + }, A = function(f0) { + return u(t, f0); + }; + R(WP[1], A, G, e, w), g(e, RE0); + } else + g(e, jE0); + u(f(e), GE0), u(f(e), ME0), o(f(e), qE0, BE0); + var S = i[4]; + if (S) { + g(e, UE0); + var M = S[1], K = function(f0, m0) { + return g(f0, dE0); + }, V = function(f0) { + return u(t, f0); + }; + R(Dr[1], V, K, e, M), g(e, HE0); + } else + g(e, XE0); + return u(f(e), YE0), u(f(e), VE0); + }), N(SZ, function(t, n, e) { + var i = o(JP, t, n); + return o(C0(hE0), i, e); + }); + var gZ = [0, JP, SZ], $P = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, FZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N($P, function(t, n, e, i) { + u(f(e), Jw0), o(f(e), Zw0, $w0); + var x = i[1]; + function c(V) { + return u(n, V); + } + function s(V) { + return u(t, V); + } + R(qe[31], s, c, e, x), u(f(e), Qw0), u(f(e), rE0), o(f(e), nE0, eE0); + var p = i[2]; + if (p) { + g(e, tE0); + var y = p[1], T = function(V) { + return u(n, V); + }, E = function(V) { + return u(t, V); + }; + R(qe[2][1], E, T, e, y), g(e, uE0); + } else + g(e, iE0); + u(f(e), fE0), u(f(e), xE0), o(f(e), aE0, oE0); + var d = i[3]; + function w(V) { + return u(n, V); + } + function G(V) { + return u(t, V); + } + R(WP[1], G, w, e, d), u(f(e), cE0), u(f(e), sE0), o(f(e), lE0, vE0); + var A = i[4]; + if (A) { + g(e, bE0); + var S = A[1], M = function(V, f0) { + return g(V, Ww0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, pE0); + } else + g(e, mE0); + return u(f(e), _E0), u(f(e), yE0); + }), N(FZ, function(t, n, e) { + var i = o($P, t, n); + return o(C0(Kw0), i, e); + }); + var ZP = [0, $P, FZ], QP = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, TZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(QP, function(t, n, e, i) { + u(f(e), Dw0), o(f(e), Rw0, Lw0); + var x = i[1]; + function c(y) { + return u(n, y); + } + function s(y) { + return u(t, y); + } + R(ZP[1], s, c, e, x), u(f(e), jw0), u(f(e), Gw0), o(f(e), Bw0, Mw0), o(n, e, i[2]), u(f(e), qw0), u(f(e), Uw0), o(f(e), Xw0, Hw0); + var p = i[3]; + return o(f(e), Yw0, p), u(f(e), Vw0), u(f(e), zw0); + }), N(TZ, function(t, n, e) { + var i = o(QP, t, n); + return o(C0(Pw0), i, e); + }); + var OZ = [0, QP, TZ], im = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, IZ = function t(n, e, i) { + return t.fun(n, e, i); + }, rD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, AZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(im, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), Tw0); + var x = i[1], c = function(w) { + return u(n, w); + }, s = function(w) { + return u(t, w); + }; + return R(Rn[1], s, c, e, x), u(f(e), Ow0); + case 1: + u(f(e), Iw0); + var p = i[1], y = function(w) { + return u(t, w); + }; + return ur(Bp[1], y, e, p), u(f(e), Aw0); + default: + u(f(e), Nw0); + var T = i[1], E = function(w) { + return u(n, w); + }, d = function(w) { + return u(t, w); + }; + return R(qe[31], d, E, e, T), u(f(e), Cw0); + } + }), N(IZ, function(t, n, e) { + var i = o(im, t, n); + return o(C0(Fw0), i, e); + }), N(rD, function(t, n, e, i) { + u(f(e), cw0), o(f(e), vw0, sw0); + var x = i[1]; + function c(G) { + return u(n, G); + } + function s(G) { + return u(t, G); + } + R(qe[31], s, c, e, x), u(f(e), lw0), u(f(e), bw0), o(f(e), mw0, pw0); + var p = i[2]; + function y(G) { + return u(n, G); + } + R(im, function(G) { + return u(t, G); + }, y, e, p), u(f(e), _w0), u(f(e), yw0), o(f(e), dw0, hw0); + var T = i[3]; + if (T) { + g(e, kw0); + var E = T[1], d = function(G, A) { + return g(G, aw0); + }, w = function(G) { + return u(t, G); + }; + R(Dr[1], w, d, e, E), g(e, ww0); + } else + g(e, Ew0); + return u(f(e), Sw0), u(f(e), gw0); + }), N(AZ, function(t, n, e) { + var i = o(rD, t, n); + return o(C0(ow0), i, e); + }); + var eD = [0, im, IZ, rD, AZ], nD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, NZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(nD, function(t, n, e, i) { + u(f(e), Kk0), o(f(e), Jk0, Wk0); + var x = i[1]; + function c(y) { + return u(n, y); + } + function s(y) { + return u(t, y); + } + R(eD[3], s, c, e, x), u(f(e), $k0), u(f(e), Zk0), o(f(e), rw0, Qk0), o(n, e, i[2]), u(f(e), ew0), u(f(e), nw0), o(f(e), uw0, tw0); + var p = i[3]; + return o(f(e), iw0, p), u(f(e), fw0), u(f(e), xw0); + }), N(NZ, function(t, n, e) { + var i = o(nD, t, n); + return o(C0(zk0), i, e); + }); + var CZ = [0, nD, NZ], tD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, PZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(tD, function(t, n, e, i) { + u(f(e), Ek0), o(f(e), gk0, Sk0); + var x = i[1]; + if (x) { + g(e, Fk0); + var c = x[1], s = function(G) { + return u(n, G); + }, p = function(G) { + return u(t, G); + }; + R(qe[31], p, s, e, c), g(e, Tk0); + } else + g(e, Ok0); + u(f(e), Ik0), u(f(e), Ak0), o(f(e), Ck0, Nk0); + var y = i[2]; + if (y) { + g(e, Pk0); + var T = y[1], E = function(G, A) { + return g(G, wk0); + }, d = function(G) { + return u(t, G); + }; + R(Dr[1], d, E, e, T), g(e, Dk0); + } else + g(e, Lk0); + u(f(e), Rk0), u(f(e), jk0), o(f(e), Mk0, Gk0); + var w = i[3]; + return o(f(e), Bk0, w), u(f(e), qk0), u(f(e), Uk0), o(f(e), Xk0, Hk0), o(n, e, i[4]), u(f(e), Yk0), u(f(e), Vk0); + }), N(PZ, function(t, n, e) { + var i = o(tD, t, n); + return o(C0(kk0), i, e); + }); + var DZ = [0, tD, PZ], uD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, LZ = function t(n, e, i) { + return t.fun(n, e, i); + }, fm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, RZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(uD, function(t, n, e, i) { + u(f(e), yk0), o(t, e, i[1]), u(f(e), hk0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(fm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), dk0); + }), N(LZ, function(t, n, e) { + var i = o(uD, t, n); + return o(C0(_k0), i, e); + }), N(fm, function(t, n, e, i) { + u(f(e), tk0), o(f(e), ik0, uk0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(di[5], s, c, e, x), u(f(e), fk0), u(f(e), xk0), o(f(e), ak0, ok0); + var p = i[2]; + function y(d) { + return u(n, d); + } + function T(d) { + return u(t, d); + } + R(qe[31], T, y, e, p), u(f(e), ck0), u(f(e), sk0), o(f(e), lk0, vk0); + var E = i[3]; + return o(f(e), bk0, E), u(f(e), pk0), u(f(e), mk0); + }), N(RZ, function(t, n, e) { + var i = o(fm, t, n); + return o(C0(nk0), i, e); + }); + var jZ = [0, uD, LZ, fm, RZ], iD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, GZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(iD, function(t, n, e, i) { + u(f(e), Ud0), o(f(e), Xd0, Hd0); + var x = i[1]; + u(f(e), Yd0); + var c = 0; + le(function(E, d) { + E && u(f(e), qd0); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(jZ[1], G, w, e, d), 1; + }, c, x), u(f(e), Vd0), u(f(e), zd0), u(f(e), Kd0), o(f(e), Jd0, Wd0); + var s = i[2]; + if (s) { + g(e, $d0); + var p = s[1], y = function(E) { + return u(n, E); + }, T = function(E) { + return u(t, E); + }; + R(qe[31], T, y, e, p), g(e, Zd0); + } else + g(e, Qd0); + return u(f(e), rk0), u(f(e), ek0); + }), N(GZ, function(t, n, e) { + var i = o(iD, t, n); + return o(C0(Bd0), i, e); + }); + var fD = [0, jZ, iD, GZ], xD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, MZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(xD, function(t, n, e, i) { + u(f(e), Fd0), o(f(e), Od0, Td0); + var x = i[1]; + u(f(e), Id0); + var c = 0; + le(function(E, d) { + E && u(f(e), gd0); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(fD[1][1], G, w, e, d), 1; + }, c, x), u(f(e), Ad0), u(f(e), Nd0), u(f(e), Cd0), o(f(e), Dd0, Pd0); + var s = i[2]; + if (s) { + g(e, Ld0); + var p = s[1], y = function(E) { + return u(n, E); + }, T = function(E) { + return u(t, E); + }; + R(qe[31], T, y, e, p), g(e, Rd0); + } else + g(e, jd0); + return u(f(e), Gd0), u(f(e), Md0); + }), N(MZ, function(t, n, e) { + var i = o(xD, t, n); + return o(C0(Sd0), i, e); + }); + var BZ = [0, xD, MZ], oD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, qZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(oD, function(t, n, e, i) { + u(f(e), od0), o(f(e), cd0, ad0); + var x = i[1]; + function c(A) { + return u(n, A); + } + function s(A) { + return u(t, A); + } + R(qe[31], s, c, e, x), u(f(e), sd0), u(f(e), vd0), o(f(e), bd0, ld0); + var p = i[2]; + function y(A) { + return u(n, A); + } + function T(A) { + return u(t, A); + } + R($e[17], T, y, e, p), u(f(e), pd0), u(f(e), md0), o(f(e), yd0, _d0); + var E = i[3]; + if (E) { + g(e, hd0); + var d = E[1], w = function(A, S) { + return g(A, xd0); + }, G = function(A) { + return u(t, A); + }; + R(Dr[1], G, w, e, d), g(e, dd0); + } else + g(e, kd0); + return u(f(e), wd0), u(f(e), Ed0); + }), N(qZ, function(t, n, e) { + var i = o(oD, t, n); + return o(C0(fd0), i, e); + }); + var UZ = [0, oD, qZ], aD = function t(n, e, i) { + return t.fun(n, e, i); + }, HZ = function t(n, e) { + return t.fun(n, e); + }; + N(aD, function(t, n, e) { + u(f(n), Xh0), o(f(n), Vh0, Yh0); + var i = e[1]; + function x(G) { + return u(t, G); + } + function c(G) { + return u(t, G); + } + R(Rn[1], c, x, n, i), u(f(n), zh0), u(f(n), Kh0), o(f(n), Jh0, Wh0); + var s = e[2]; + function p(G) { + return u(t, G); + } + function y(G) { + return u(t, G); + } + R(Rn[1], y, p, n, s), u(f(n), $h0), u(f(n), Zh0), o(f(n), rd0, Qh0); + var T = e[3]; + if (T) { + g(n, ed0); + var E = T[1], d = function(G, A) { + return g(G, Hh0); + }, w = function(G) { + return u(t, G); + }; + R(Dr[1], w, d, n, E), g(n, nd0); + } else + g(n, td0); + return u(f(n), ud0), u(f(n), id0); + }), N(HZ, function(t, n) { + var e = u(aD, t); + return o(C0(Uh0), e, n); + }); + var XZ = [0, aD, HZ], cD = function t(n, e, i) { + return t.fun(n, e, i); + }, YZ = function t(n, e) { + return t.fun(n, e); + }; + N(cD, function(t, n, e) { + u(f(n), Dh0), o(f(n), Rh0, Lh0); + var i = e[1]; + if (i) { + g(n, jh0); + var x = i[1], c = function(p, y) { + return g(p, Ph0); + }, s = function(p) { + return u(t, p); + }; + R(Dr[1], s, c, n, x), g(n, Gh0); + } else + g(n, Mh0); + return u(f(n), Bh0), u(f(n), qh0); + }), N(YZ, function(t, n) { + var e = u(cD, t); + return o(C0(Ch0), e, n); + }); + var VZ = [0, cD, YZ], sD = function t(n, e, i) { + return t.fun(n, e, i); + }, zZ = function t(n, e) { + return t.fun(n, e); + }; + N(sD, function(t, n, e) { + u(f(n), Sh0), o(f(n), Fh0, gh0); + var i = e[1]; + if (i) { + g(n, Th0); + var x = i[1], c = function(p, y) { + return g(p, Eh0); + }, s = function(p) { + return u(t, p); + }; + R(Dr[1], s, c, n, x), g(n, Oh0); + } else + g(n, Ih0); + return u(f(n), Ah0), u(f(n), Nh0); + }), N(zZ, function(t, n) { + var e = u(sD, t); + return o(C0(wh0), e, n); + }); + var KZ = [0, sD, zZ], vD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, WZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(vD, function(t, n, e, i) { + u(f(e), ch0), o(f(e), vh0, sh0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), lh0), u(f(e), bh0), o(f(e), mh0, ph0); + var p = i[2]; + if (p) { + g(e, _h0); + var y = p[1], T = function(d, w) { + return g(d, ah0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, yh0); + } else + g(e, hh0); + return u(f(e), dh0), u(f(e), kh0); + }), N(WZ, function(t, n, e) { + var i = o(vD, t, n); + return o(C0(oh0), i, e); + }); + var JZ = [0, vD, WZ], lD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, $Z = function t(n, e, i) { + return t.fun(n, e, i); + }, xm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, ZZ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(lD, function(t, n, e, i) { + u(f(e), ih0), o(n, e, i[1]), u(f(e), fh0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(xm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), xh0); + }), N($Z, function(t, n, e) { + var i = o(lD, t, n); + return o(C0(uh0), i, e); + }), N(xm, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), J_0); + var x = i[1], c = function(Y) { + return u(n, Y); + }, s = function(Y) { + return u(t, Y); + }; + return R(G$[3], s, c, e, x), u(f(e), $_0); + case 1: + u(f(e), Z_0); + var p = i[1], y = function(Y) { + return u(n, Y); + }, T = function(Y) { + return u(t, Y); + }; + return R(As[5], T, y, e, p), u(f(e), Q_0); + case 2: + u(f(e), ry0); + var E = i[1], d = function(Y) { + return u(n, Y); + }, w = function(Y) { + return u(t, Y); + }; + return R(vZ[3], w, d, e, E), u(f(e), ey0); + case 3: + u(f(e), ny0); + var G = i[1], A = function(Y) { + return u(n, Y); + }, S = function(Y) { + return u(t, Y); + }; + return R(aZ[3], S, A, e, G), u(f(e), ty0); + case 4: + u(f(e), uy0); + var M = i[1], K = function(Y) { + return u(n, Y); + }, V = function(Y) { + return u(t, Y); + }; + return R(ZP[1], V, K, e, M), u(f(e), iy0); + case 5: + u(f(e), fy0); + var f0 = i[1], m0 = function(Y) { + return u(n, Y); + }, k0 = function(Y) { + return u(t, Y); + }; + return R(F1[8], k0, m0, e, f0), u(f(e), xy0); + case 6: + u(f(e), oy0); + var g0 = i[1], e0 = function(Y) { + return u(n, Y); + }, x0 = function(Y) { + return u(t, Y); + }; + return R(fD[2], x0, e0, e, g0), u(f(e), ay0); + case 7: + u(f(e), cy0); + var l = i[1], c0 = function(Y) { + return u(n, Y); + }, t0 = function(Y) { + return u(t, Y); + }; + return R(dZ[1], t0, c0, e, l), u(f(e), sy0); + case 8: + u(f(e), vy0); + var o0 = i[1], w0 = function(Y) { + return u(n, Y); + }, _0 = function(Y) { + return u(t, Y); + }; + return R(As[5], _0, w0, e, o0), u(f(e), ly0); + case 9: + u(f(e), by0); + var E0 = i[1], U0 = function(Y) { + return u(n, Y); + }, b = function(Y) { + return u(t, Y); + }; + return R(BZ[1], b, U0, e, E0), u(f(e), py0); + case 10: + u(f(e), my0); + var R0 = i[1], X = function(Y) { + return u(n, Y); + }, s0 = function(Y) { + return u(t, Y); + }; + return R(Rn[1], s0, X, e, R0), u(f(e), _y0); + case 11: + u(f(e), yy0); + var hr = i[1], Ar = function(Y) { + return u(n, Y); + }, or = function(Y) { + return u(t, Y); + }; + return R(JZ[1], or, Ar, e, hr), u(f(e), hy0); + case 12: + u(f(e), dy0); + var W0 = i[1], Lr = function(Y) { + return u(n, Y); + }, Tr = function(Y) { + return u(t, Y); + }; + return R(UN[17], Tr, Lr, e, W0), u(f(e), ky0); + case 13: + u(f(e), wy0); + var Hr = i[1], Or = function(Y) { + return u(n, Y); + }, fr = function(Y) { + return u(t, Y); + }; + return R(UN[19], fr, Or, e, Hr), u(f(e), Ey0); + case 14: + u(f(e), Sy0); + var Rr = i[1], Wr = function(Y) { + return u(t, Y); + }; + return ur(Tl[2], Wr, e, Rr), u(f(e), gy0); + case 15: + u(f(e), Fy0); + var Jr = i[1], ar = function(Y) { + return u(n, Y); + }, _r = function(Y) { + return u(t, Y); + }; + return R(yZ[3], _r, ar, e, Jr), u(f(e), Ty0); + case 16: + u(f(e), Oy0); + var Ir = i[1], fe = function(Y) { + return u(n, Y); + }, v0 = function(Y) { + return u(t, Y); + }; + return R(eD[3], v0, fe, e, Ir), u(f(e), Iy0); + case 17: + u(f(e), Ay0); + var P = i[1], L = function(Y) { + return u(t, Y); + }; + return ur(XZ[1], L, e, P), u(f(e), Ny0); + case 18: + u(f(e), Cy0); + var Q = i[1], i0 = function(Y) { + return u(n, Y); + }, l0 = function(Y) { + return u(t, Y); + }; + return R(gZ[1], l0, i0, e, Q), u(f(e), Py0); + case 19: + u(f(e), Dy0); + var S0 = i[1], T0 = function(Y) { + return u(n, Y); + }, rr = function(Y) { + return u(t, Y); + }; + return R(eZ[5], rr, T0, e, S0), u(f(e), Ly0); + case 20: + u(f(e), Ry0); + var L0 = i[1], B = function(Y) { + return u(n, Y); + }, Z = function(Y) { + return u(t, Y); + }; + return R(OZ[1], Z, B, e, L0), u(f(e), jy0); + case 21: + u(f(e), Gy0); + var p0 = i[1], b0 = function(Y) { + return u(n, Y); + }, O0 = function(Y) { + return u(t, Y); + }; + return R(CZ[1], O0, b0, e, p0), u(f(e), My0); + case 22: + u(f(e), By0); + var M0 = i[1], er = function(Y) { + return u(n, Y); + }, yr = function(Y) { + return u(t, Y); + }; + return R(tZ[1], yr, er, e, M0), u(f(e), qy0); + case 23: + u(f(e), Uy0); + var vr = i[1], $0 = function(Y) { + return u(t, Y); + }; + return ur(KZ[1], $0, e, vr), u(f(e), Hy0); + case 24: + u(f(e), Xy0); + var Er = i[1], Mr = function(Y) { + return u(n, Y); + }, Br = function(Y) { + return u(t, Y); + }; + return R(Y$[1], Br, Mr, e, Er), u(f(e), Yy0); + case 25: + u(f(e), Vy0); + var qr = i[1], jr = function(Y) { + return u(n, Y); + }, $r = function(Y) { + return u(t, Y); + }; + return R(RP[2], $r, jr, e, qr), u(f(e), zy0); + case 26: + u(f(e), Ky0); + var ne = i[1], Qr = function(Y) { + return u(t, Y); + }; + return ur(VZ[1], Qr, e, ne), u(f(e), Wy0); + case 27: + u(f(e), Jy0); + var be = i[1], ae = function(Y) { + return u(n, Y); + }, pe = function(Y) { + return u(t, Y); + }; + return R(UZ[1], pe, ae, e, be), u(f(e), $y0); + case 28: + u(f(e), Zy0); + var oe = i[1], ce = function(Y) { + return u(n, Y); + }, ge = function(Y) { + return u(t, Y); + }; + return R(fZ[3], ge, ce, e, oe), u(f(e), Qy0); + case 29: + u(f(e), rh0); + var q0 = i[1], Fr = function(Y) { + return u(n, Y); + }, _ = function(Y) { + return u(t, Y); + }; + return R(pZ[3], _, Fr, e, q0), u(f(e), eh0); + default: + u(f(e), nh0); + var k = i[1], I = function(Y) { + return u(n, Y); + }, U = function(Y) { + return u(t, Y); + }; + return R(DZ[1], U, I, e, k), u(f(e), th0); + } + }), N(ZZ, function(t, n, e) { + var i = o(xm, t, n); + return o(C0(W_0), i, e); + }), mu(J3r, qe, [0, N$, See, CP, G$, RP, Y$, eZ, tZ, fZ, aZ, vZ, pZ, yZ, dZ, tm, kZ, WP, gZ, ZP, OZ, eD, CZ, DZ, fD, BZ, UZ, XZ, VZ, KZ, JZ, lD, $Z, xm, ZZ]); + var bD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, QZ = function t(n, e, i) { + return t.fun(n, e, i); + }, om = function t(n, e, i) { + return t.fun(n, e, i); + }, rQ = function t(n, e) { + return t.fun(n, e); + }; + N(bD, function(t, n, e, i) { + u(f(e), V_0), o(n, e, i[1]), u(f(e), z_0); + var x = i[2]; + return ur(om, function(c) { + return u(t, c); + }, e, x), u(f(e), K_0); + }), N(QZ, function(t, n, e) { + var i = o(bD, t, n); + return o(C0(Y_0), i, e); + }), N(om, function(t, n, e) { + u(f(n), C_0), o(f(n), D_0, P_0); + var i = e[1]; + o(f(n), L_0, i), u(f(n), R_0), u(f(n), j_0), o(f(n), M_0, G_0); + var x = e[2]; + if (x) { + g(n, B_0); + var c = x[1], s = function(y, T) { + return g(y, N_0); + }, p = function(y) { + return u(t, y); + }; + R(Dr[1], p, s, n, c), g(n, q_0); + } else + g(n, U_0); + return u(f(n), H_0), u(f(n), X_0); + }), N(rQ, function(t, n) { + var e = u(om, t); + return o(C0(A_0), e, n); + }); + var O1 = [0, bD, QZ, om, rQ], pD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, eQ = function t(n, e, i) { + return t.fun(n, e, i); + }, am = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, nQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(pD, function(t, n, e, i) { + u(f(e), T_0), o(t, e, i[1]), u(f(e), O_0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(am, function(s) { + return u(t, s); + }, c, e, x), u(f(e), I_0); + }), N(eQ, function(t, n, e) { + var i = o(pD, t, n); + return o(C0(F_0), i, e); + }), N(am, function(t, n, e, i) { + u(f(e), __0), o(f(e), h_0, y_0); + var x = i[1]; + function c(E) { + return u(n, E); + } + function s(E) { + return u(t, E); + } + R(O1[1], s, c, e, x), u(f(e), d_0), u(f(e), k_0), o(f(e), E_0, w_0); + var p = i[2]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(O1[1], T, y, e, p), u(f(e), S_0), u(f(e), g_0); + }), N(nQ, function(t, n, e) { + var i = o(am, t, n); + return o(C0(m_0), i, e); + }); + var mD = [0, pD, eQ, am, nQ], _D = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, tQ = function t(n, e, i) { + return t.fun(n, e, i); + }, cm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, uQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(_D, function(t, n, e, i) { + u(f(e), u_0), o(f(e), f_0, i_0); + var x = i[1]; + function c(E) { + return u(n, E); + } + R(cm, function(E) { + return u(t, E); + }, c, e, x), u(f(e), x_0), u(f(e), o_0), o(f(e), c_0, a_0); + var s = i[2]; + if (s) { + g(e, s_0); + var p = s[1], y = function(E, d) { + u(f(E), n_0); + var w = 0; + return le(function(G, A) { + G && u(f(E), e_0); + function S(M) { + return u(t, M); + } + return ur(iu[1], S, E, A), 1; + }, w, d), u(f(E), t_0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, v_0); + } else + g(e, l_0); + return u(f(e), b_0), u(f(e), p_0); + }), N(tQ, function(t, n, e) { + var i = o(_D, t, n); + return o(C0(r_0), i, e); + }), N(cm, function(t, n, e, i) { + if (i) { + u(f(e), $90); + var x = i[1], c = function(p) { + return u(n, p); + }, s = function(p) { + return u(t, p); + }; + return R(qe[31], s, c, e, x), u(f(e), Z90); + } + return g(e, Q90); + }), N(uQ, function(t, n, e) { + var i = o(cm, t, n); + return o(C0(J90), i, e); + }); + var yD = [0, _D, tQ, cm, uQ]; + function iQ(t, n) { + u(f(t), G90), o(f(t), B90, M90); + var e = n[1]; + o(f(t), q90, e), u(f(t), U90), u(f(t), H90), o(f(t), Y90, X90); + var i = n[2]; + return o(f(t), V90, i), u(f(t), z90), u(f(t), K90); + } + var fQ = [0, iQ, function(t) { + return o(C0(W90), iQ, t); + }], hD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, xQ = function t(n, e, i) { + return t.fun(n, e, i); + }, sm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, oQ = function t(n, e, i) { + return t.fun(n, e, i); + }, vm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, aQ = function t(n, e, i) { + return t.fun(n, e, i); + }, lm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, cQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(hD, function(t, n, e, i) { + u(f(e), L90), o(t, e, i[1]), u(f(e), R90); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(lm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), j90); + }), N(xQ, function(t, n, e) { + var i = o(hD, t, n); + return o(C0(D90), i, e); + }), N(sm, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), A90); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(O1[1], s, c, e, x), u(f(e), N90); + } + u(f(e), C90); + var p = i[1]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(mD[1], T, y, e, p), u(f(e), P90); + }), N(oQ, function(t, n, e) { + var i = o(sm, t, n); + return o(C0(I90), i, e); + }), N(vm, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), E90), o(n, e, i[1]), u(f(e), S90); + var x = i[2], c = function(T) { + return u(t, T); + }; + return ur(Tl[2], c, e, x), u(f(e), g90); + } + u(f(e), F90), o(n, e, i[1]), u(f(e), T90); + var s = i[2]; + function p(T) { + return u(n, T); + } + function y(T) { + return u(t, T); + } + return R(yD[1], y, p, e, s), u(f(e), O90); + }), N(aQ, function(t, n, e) { + var i = o(vm, t, n); + return o(C0(w90), i, e); + }), N(lm, function(t, n, e, i) { + u(f(e), c90), o(f(e), v90, s90); + var x = i[1]; + function c(T) { + return u(n, T); + } + R(sm, function(T) { + return u(t, T); + }, c, e, x), u(f(e), l90), u(f(e), b90), o(f(e), m90, p90); + var s = i[2]; + if (s) { + g(e, _90); + var p = s[1], y = function(T) { + return u(n, T); + }; + R(vm, function(T) { + return u(t, T); + }, y, e, p), g(e, y90); + } else + g(e, h90); + return u(f(e), d90), u(f(e), k90); + }), N(cQ, function(t, n, e) { + var i = o(lm, t, n); + return o(C0(a90), i, e); + }); + var sQ = [0, hD, xQ, sm, oQ, vm, aQ, lm, cQ], dD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, vQ = function t(n, e, i) { + return t.fun(n, e, i); + }, bm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, lQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(dD, function(t, n, e, i) { + u(f(e), f90), o(t, e, i[1]), u(f(e), x90); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(bm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), o90); + }), N(vQ, function(t, n, e) { + var i = o(dD, t, n); + return o(C0(i90), i, e); + }), N(bm, function(t, n, e, i) { + u(f(e), zm0), o(f(e), Wm0, Km0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), Jm0), u(f(e), $m0), o(f(e), Qm0, Zm0); + var p = i[2]; + if (p) { + g(e, r90); + var y = p[1], T = function(d, w) { + return g(d, Vm0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, e90); + } else + g(e, n90); + return u(f(e), t90), u(f(e), u90); + }), N(lQ, function(t, n, e) { + var i = o(bm, t, n); + return o(C0(Ym0), i, e); + }); + var bQ = [0, dD, vQ, bm, lQ], pm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, pQ = function t(n, e, i) { + return t.fun(n, e, i); + }, mm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, mQ = function t(n, e, i) { + return t.fun(n, e, i); + }, _m = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, _Q = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(pm, function(t, n, e, i) { + u(f(e), Um0), o(t, e, i[1]), u(f(e), Hm0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(_m, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Xm0); + }), N(pQ, function(t, n, e) { + var i = o(pm, t, n); + return o(C0(qm0), i, e); + }), N(mm, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), jm0); + var x = i[1], c = function(T) { + return u(n, T); + }, s = function(T) { + return u(t, T); + }; + return R(O1[1], s, c, e, x), u(f(e), Gm0); + } + u(f(e), Mm0); + var p = i[1]; + function y(T) { + return u(n, T); + } + return R(pm, function(T) { + return u(t, T); + }, y, e, p), u(f(e), Bm0); + }), N(mQ, function(t, n, e) { + var i = o(mm, t, n); + return o(C0(Rm0), i, e); + }), N(_m, function(t, n, e, i) { + u(f(e), Tm0), o(f(e), Im0, Om0); + var x = i[1]; + function c(T) { + return u(n, T); + } + R(mm, function(T) { + return u(t, T); + }, c, e, x), u(f(e), Am0), u(f(e), Nm0), o(f(e), Pm0, Cm0); + var s = i[2]; + function p(T) { + return u(n, T); + } + function y(T) { + return u(t, T); + } + return R(O1[1], y, p, e, s), u(f(e), Dm0), u(f(e), Lm0); + }), N(_Q, function(t, n, e) { + var i = o(_m, t, n); + return o(C0(Fm0), i, e); + }); + var yQ = [0, pm, pQ, mm, mQ, _m, _Q], Nl = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, hQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(Nl, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), dm0); + var x = i[1], c = function(G) { + return u(n, G); + }, s = function(G) { + return u(t, G); + }; + return R(O1[1], s, c, e, x), u(f(e), km0); + case 1: + u(f(e), wm0); + var p = i[1], y = function(G) { + return u(n, G); + }, T = function(G) { + return u(t, G); + }; + return R(mD[1], T, y, e, p), u(f(e), Em0); + default: + u(f(e), Sm0); + var E = i[1], d = function(G) { + return u(n, G); + }, w = function(G) { + return u(t, G); + }; + return R(yQ[1], w, d, e, E), u(f(e), gm0); + } + }), N(hQ, function(t, n, e) { + var i = o(Nl, t, n); + return o(C0(hm0), i, e); + }); + var kD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, dQ = function t(n, e, i) { + return t.fun(n, e, i); + }, ym = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, kQ = function t(n, e, i) { + return t.fun(n, e, i); + }, hm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, wQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(kD, function(t, n, e, i) { + u(f(e), mm0), o(t, e, i[1]), u(f(e), _m0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(hm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), ym0); + }), N(dQ, function(t, n, e) { + var i = o(kD, t, n); + return o(C0(pm0), i, e); + }), N(ym, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), sm0); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(sQ[1], s, c, e, x), u(f(e), vm0); + } + u(f(e), lm0); + var p = i[1]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(bQ[1], T, y, e, p), u(f(e), bm0); + }), N(kQ, function(t, n, e) { + var i = o(ym, t, n); + return o(C0(cm0), i, e); + }), N(hm, function(t, n, e, i) { + u(f(e), K50), o(f(e), J50, W50); + var x = i[1]; + function c(T) { + return u(n, T); + } + R(Nl, function(T) { + return u(t, T); + }, c, e, x), u(f(e), $50), u(f(e), Z50), o(f(e), rm0, Q50); + var s = i[2]; + o(f(e), em0, s), u(f(e), nm0), u(f(e), tm0), o(f(e), im0, um0); + var p = i[3]; + u(f(e), fm0); + var y = 0; + return le(function(T, E) { + T && u(f(e), z50); + function d(w) { + return u(n, w); + } + return R(ym, function(w) { + return u(t, w); + }, d, e, E), 1; + }, y, p), u(f(e), xm0), u(f(e), om0), u(f(e), am0); + }), N(wQ, function(t, n, e) { + var i = o(hm, t, n); + return o(C0(V50), i, e); + }); + var EQ = [0, kD, dQ, ym, kQ, hm, wQ], wD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, SQ = function t(n, e, i) { + return t.fun(n, e, i); + }, dm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, gQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(wD, function(t, n, e, i) { + u(f(e), H50), o(t, e, i[1]), u(f(e), X50); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(dm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Y50); + }), N(SQ, function(t, n, e) { + var i = o(wD, t, n); + return o(C0(U50), i, e); + }), N(dm, function(t, n, e, i) { + u(f(e), j50), o(f(e), M50, G50); + var x = i[1]; + function c(s) { + return u(n, s); + } + return R(Nl, function(s) { + return u(t, s); + }, c, e, x), u(f(e), B50), u(f(e), q50); + }), N(gQ, function(t, n, e) { + var i = o(dm, t, n); + return o(C0(R50), i, e); + }); + var FQ = [0, wD, SQ, dm, gQ], ED = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, TQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(ED, function(t, n, e, i) { + u(f(e), S50), o(f(e), F50, g50); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), T50), u(f(e), O50), o(f(e), A50, I50); + var p = i[2]; + if (p) { + g(e, N50); + var y = p[1], T = function(d, w) { + return g(d, E50); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, C50); + } else + g(e, P50); + return u(f(e), D50), u(f(e), L50); + }), N(TQ, function(t, n, e) { + var i = o(ED, t, n); + return o(C0(w50), i, e); + }); + var OQ = [0, ED, TQ], Cl = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, IQ = function t(n, e, i) { + return t.fun(n, e, i); + }, km = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, AQ = function t(n, e, i) { + return t.fun(n, e, i); + }, wm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, NQ = function t(n, e, i) { + return t.fun(n, e, i); + }, Em = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, CQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(Cl, function(t, n, e, i) { + u(f(e), h50), o(t, e, i[1]), u(f(e), d50); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(km, function(s) { + return u(t, s); + }, c, e, x), u(f(e), k50); + }), N(IQ, function(t, n, e) { + var i = o(Cl, t, n); + return o(C0(y50), i, e); + }), N(km, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), o50); + var x = i[1], c = function(A) { + return u(n, A); + }; + return R(wm, function(A) { + return u(t, A); + }, c, e, x), u(f(e), a50); + case 1: + u(f(e), c50); + var s = i[1], p = function(A) { + return u(n, A); + }; + return R(Em, function(A) { + return u(t, A); + }, p, e, s), u(f(e), s50); + case 2: + u(f(e), v50); + var y = i[1], T = function(A) { + return u(n, A); + }, E = function(A) { + return u(t, A); + }; + return R(yD[1], E, T, e, y), u(f(e), l50); + case 3: + u(f(e), b50); + var d = i[1], w = function(A) { + return u(n, A); + }, G = function(A) { + return u(t, A); + }; + return R(OQ[1], G, w, e, d), u(f(e), p50); + default: + return u(f(e), m50), o(fQ[1], e, i[1]), u(f(e), _50); + } + }), N(AQ, function(t, n, e) { + var i = o(km, t, n); + return o(C0(x50), i, e); + }), N(wm, function(t, n, e, i) { + u(f(e), Pp0), o(f(e), Lp0, Dp0); + var x = i[1]; + function c(V) { + return u(n, V); + } + function s(V) { + return u(t, V); + } + R(EQ[1], s, c, e, x), u(f(e), Rp0), u(f(e), jp0), o(f(e), Mp0, Gp0); + var p = i[2]; + if (p) { + g(e, Bp0); + var y = p[1], T = function(V) { + return u(n, V); + }, E = function(V) { + return u(t, V); + }; + R(FQ[1], E, T, e, y), g(e, qp0); + } else + g(e, Up0); + u(f(e), Hp0), u(f(e), Xp0), o(f(e), Vp0, Yp0); + var d = i[3]; + u(f(e), zp0), o(t, e, d[1]), u(f(e), Kp0), u(f(e), Wp0); + var w = d[2], G = 0; + le(function(V, f0) { + V && u(f(e), Cp0); + function m0(k0) { + return u(n, k0); + } + return R(Cl, function(k0) { + return u(t, k0); + }, m0, e, f0), 1; + }, G, w), u(f(e), Jp0), u(f(e), $p0), u(f(e), Zp0), u(f(e), Qp0), o(f(e), e50, r50); + var A = i[4]; + if (A) { + g(e, n50); + var S = A[1], M = function(V, f0) { + return g(V, Np0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, t50); + } else + g(e, u50); + return u(f(e), i50), u(f(e), f50); + }), N(NQ, function(t, n, e) { + var i = o(wm, t, n); + return o(C0(Ap0), i, e); + }), N(Em, function(t, n, e, i) { + u(f(e), ip0), o(f(e), xp0, fp0), o(t, e, i[1]), u(f(e), op0), u(f(e), ap0), o(f(e), sp0, cp0), o(t, e, i[2]), u(f(e), vp0), u(f(e), lp0), o(f(e), pp0, bp0); + var x = i[3]; + u(f(e), mp0), o(t, e, x[1]), u(f(e), _p0), u(f(e), yp0); + var c = x[2], s = 0; + le(function(d, w) { + d && u(f(e), up0); + function G(A) { + return u(n, A); + } + return R(Cl, function(A) { + return u(t, A); + }, G, e, w), 1; + }, s, c), u(f(e), hp0), u(f(e), dp0), u(f(e), kp0), u(f(e), wp0), o(f(e), Sp0, Ep0); + var p = i[4]; + if (p) { + g(e, gp0); + var y = p[1], T = function(d, w) { + return g(d, tp0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, Fp0); + } else + g(e, Tp0); + return u(f(e), Op0), u(f(e), Ip0); + }), N(CQ, function(t, n, e) { + var i = o(Em, t, n); + return o(C0(np0), i, e); + }), mu($3r, UN, [0, O1, mD, yD, fQ, sQ, bQ, yQ, Nl, hQ, EQ, FQ, OQ, Cl, IQ, km, AQ, wm, NQ, Em, CQ]); + var SD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, PQ = function t(n, e, i) { + return t.fun(n, e, i); + }, Sm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, DQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(SD, function(t, n, e, i) { + u(f(e), Q60), o(t, e, i[1]), u(f(e), rp0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Sm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), ep0); + }), N(PQ, function(t, n, e) { + var i = o(SD, t, n); + return o(C0(Z60), i, e); + }), N(Sm, function(t, n, e, i) { + u(f(e), B60), o(f(e), U60, q60); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(di[5], s, c, e, x), u(f(e), H60), u(f(e), X60), o(f(e), V60, Y60); + var p = i[2]; + if (p) { + g(e, z60); + var y = p[1], T = function(d, w) { + return g(d, M60); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, K60); + } else + g(e, W60); + return u(f(e), J60), u(f(e), $60); + }), N(DQ, function(t, n, e) { + var i = o(Sm, t, n); + return o(C0(G60), i, e); + }); + var gD = [0, SD, PQ, Sm, DQ], gm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, LQ = function t(n, e, i) { + return t.fun(n, e, i); + }, FD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, RQ = function t(n, e, i) { + return t.fun(n, e, i); + }, Fm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, jQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(gm, function(t, n, e, i) { + switch (i[0]) { + case 0: + var x = i[1]; + u(f(e), I60), u(f(e), A60), o(t, e, x[1]), u(f(e), N60); + var c = x[2], s = function(G) { + return u(t, G); + }; + return ur(Tl[2], s, e, c), u(f(e), C60), u(f(e), P60); + case 1: + u(f(e), D60); + var p = i[1], y = function(G) { + return u(n, G); + }, T = function(G) { + return u(t, G); + }; + return R(Rn[1], T, y, e, p), u(f(e), L60); + default: + u(f(e), R60); + var E = i[1], d = function(G) { + return u(n, G); + }, w = function(G) { + return u(t, G); + }; + return R(qp[1], w, d, e, E), u(f(e), j60); + } + }), N(LQ, function(t, n, e) { + var i = o(gm, t, n); + return o(C0(O60), i, e); + }), N(FD, function(t, n, e, i) { + u(f(e), g60), o(t, e, i[1]), u(f(e), F60); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Fm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), T60); + }), N(RQ, function(t, n, e) { + var i = o(FD, t, n); + return o(C0(S60), i, e); + }), N(Fm, function(t, n, e, i) { + u(f(e), t60), o(f(e), i60, u60); + var x = i[1]; + function c(A) { + return u(n, A); + } + R(gm, function(A) { + return u(t, A); + }, c, e, x), u(f(e), f60), u(f(e), x60), o(f(e), a60, o60); + var s = i[2]; + function p(A) { + return u(n, A); + } + function y(A) { + return u(t, A); + } + R(di[5], y, p, e, s), u(f(e), c60), u(f(e), s60), o(f(e), l60, v60); + var T = i[3]; + if (T) { + g(e, b60); + var E = T[1], d = function(A) { + return u(n, A); + }, w = function(A) { + return u(t, A); + }; + R(qe[31], w, d, e, E), g(e, p60); + } else + g(e, m60); + u(f(e), _60), u(f(e), y60), o(f(e), d60, h60); + var G = i[4]; + return o(f(e), k60, G), u(f(e), w60), u(f(e), E60); + }), N(jQ, function(t, n, e) { + var i = o(Fm, t, n); + return o(C0(n60), i, e); + }); + var GQ = [0, gm, LQ, FD, RQ, Fm, jQ], Tm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, MQ = function t(n, e, i) { + return t.fun(n, e, i); + }, TD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, BQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(Tm, function(t, n, e, i) { + if (i[0] === 0) { + u(f(e), Z30); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(GQ[3], s, c, e, x), u(f(e), Q30); + } + u(f(e), r60); + var p = i[1]; + function y(E) { + return u(n, E); + } + function T(E) { + return u(t, E); + } + return R(gD[1], T, y, e, p), u(f(e), e60); + }), N(MQ, function(t, n, e) { + var i = o(Tm, t, n); + return o(C0($30), i, e); + }), N(TD, function(t, n, e, i) { + u(f(e), P30), o(f(e), L30, D30); + var x = i[1]; + u(f(e), R30); + var c = 0; + le(function(G, A) { + G && u(f(e), C30); + function S(M) { + return u(n, M); + } + return R(Tm, function(M) { + return u(t, M); + }, S, e, A), 1; + }, c, x), u(f(e), j30), u(f(e), G30), u(f(e), M30), o(f(e), q30, B30); + var s = i[2]; + function p(G) { + return u(n, G); + } + function y(G) { + return u(t, G); + } + R($e[19], y, p, e, s), u(f(e), U30), u(f(e), H30), o(f(e), Y30, X30); + var T = i[3]; + if (T) { + g(e, V30); + var E = T[1], d = function(G, A) { + u(f(G), A30); + var S = 0; + return le(function(M, K) { + M && u(f(G), I30); + function V(f0) { + return u(t, f0); + } + return ur(iu[1], V, G, K), 1; + }, S, A), u(f(G), N30); + }, w = function(G) { + return u(t, G); + }; + R(Dr[1], w, d, e, E), g(e, z30); + } else + g(e, K30); + return u(f(e), W30), u(f(e), J30); + }), N(BQ, function(t, n, e) { + var i = o(TD, t, n); + return o(C0(O30), i, e); + }); + var qQ = [0, GQ, Tm, MQ, TD, BQ], OD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, UQ = function t(n, e, i) { + return t.fun(n, e, i); + }, Om = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, HQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(OD, function(t, n, e, i) { + u(f(e), g30), o(t, e, i[1]), u(f(e), F30); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Om, function(s) { + return u(t, s); + }, c, e, x), u(f(e), T30); + }), N(UQ, function(t, n, e) { + var i = o(OD, t, n); + return o(C0(S30), i, e); + }), N(Om, function(t, n, e, i) { + u(f(e), v30), o(f(e), b30, l30); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(di[5], s, c, e, x), u(f(e), p30), u(f(e), m30), o(f(e), y30, _30); + var p = i[2]; + if (p) { + g(e, h30); + var y = p[1], T = function(d) { + return u(n, d); + }, E = function(d) { + return u(t, d); + }; + R(qe[31], E, T, e, y), g(e, d30); + } else + g(e, k30); + return u(f(e), w30), u(f(e), E30); + }), N(HQ, function(t, n, e) { + var i = o(Om, t, n); + return o(C0(s30), i, e); + }); + var XQ = [0, OD, UQ, Om, HQ], Im = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, YQ = function t(n, e, i) { + return t.fun(n, e, i); + }, ID = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, VQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(Im, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), i30); + var x = i[1], c = function(E) { + return u(n, E); + }, s = function(E) { + return u(t, E); + }; + return R(XQ[1], s, c, e, x), u(f(e), f30); + case 1: + u(f(e), x30); + var p = i[1], y = function(E) { + return u(n, E); + }, T = function(E) { + return u(t, E); + }; + return R(gD[1], T, y, e, p), u(f(e), o30); + default: + return u(f(e), a30), o(t, e, i[1]), u(f(e), c30); + } + }), N(YQ, function(t, n, e) { + var i = o(Im, t, n); + return o(C0(u30), i, e); + }), N(ID, function(t, n, e, i) { + u(f(e), B80), o(f(e), U80, q80); + var x = i[1]; + u(f(e), H80); + var c = 0; + le(function(G, A) { + G && u(f(e), M80); + function S(M) { + return u(n, M); + } + return R(Im, function(M) { + return u(t, M); + }, S, e, A), 1; + }, c, x), u(f(e), X80), u(f(e), Y80), u(f(e), V80), o(f(e), K80, z80); + var s = i[2]; + function p(G) { + return u(n, G); + } + function y(G) { + return u(t, G); + } + R($e[19], y, p, e, s), u(f(e), W80), u(f(e), J80), o(f(e), Z80, $80); + var T = i[3]; + if (T) { + g(e, Q80); + var E = T[1], d = function(G, A) { + u(f(G), j80); + var S = 0; + return le(function(M, K) { + M && u(f(G), R80); + function V(f0) { + return u(t, f0); + } + return ur(iu[1], V, G, K), 1; + }, S, A), u(f(G), G80); + }, w = function(G) { + return u(t, G); + }; + R(Dr[1], w, d, e, E), g(e, r30); + } else + g(e, e30); + return u(f(e), n30), u(f(e), t30); + }), N(VQ, function(t, n, e) { + var i = o(ID, t, n); + return o(C0(L80), i, e); + }); + var zQ = [0, XQ, Im, YQ, ID, VQ], AD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, KQ = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(AD, function(t, n, e, i) { + u(f(e), k80), o(f(e), E80, w80); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(Rn[1], s, c, e, x), u(f(e), S80), u(f(e), g80), o(f(e), T80, F80); + var p = i[2]; + function y(d) { + return u(n, d); + } + function T(d) { + return u(t, d); + } + R($e[19], T, y, e, p), u(f(e), O80), u(f(e), I80), o(f(e), N80, A80); + var E = i[3]; + return o(f(e), C80, E), u(f(e), P80), u(f(e), D80); + }), N(KQ, function(t, n, e) { + var i = o(AD, t, n); + return o(C0(d80), i, e); + }); + var WQ = [0, AD, KQ], ND = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, JQ = function t(n, e, i) { + return t.fun(n, e, i); + }, Am = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, $Q = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(ND, function(t, n, e, i) { + u(f(e), _80), o(n, e, i[1]), u(f(e), y80); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Am, function(s) { + return u(t, s); + }, c, e, x), u(f(e), h80); + }), N(JQ, function(t, n, e) { + var i = o(ND, t, n); + return o(C0(m80), i, e); + }), N(Am, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), o80); + var x = i[1], c = function(M) { + return u(n, M); + }, s = function(M) { + return u(t, M); + }; + return R(qQ[4], s, c, e, x), u(f(e), a80); + case 1: + u(f(e), c80); + var p = i[1], y = function(M) { + return u(n, M); + }, T = function(M) { + return u(t, M); + }; + return R(zQ[4], T, y, e, p), u(f(e), s80); + case 2: + u(f(e), v80); + var E = i[1], d = function(M) { + return u(n, M); + }, w = function(M) { + return u(t, M); + }; + return R(WQ[1], w, d, e, E), u(f(e), l80); + default: + u(f(e), b80); + var G = i[1], A = function(M) { + return u(n, M); + }, S = function(M) { + return u(t, M); + }; + return R(qe[31], S, A, e, G), u(f(e), p80); + } + }), N($Q, function(t, n, e) { + var i = o(Am, t, n); + return o(C0(x80), i, e); + }), mu(Z3r, di, [0, gD, qQ, zQ, WQ, ND, JQ, Am, $Q]); + var CD = function t(n, e, i) { + return t.fun(n, e, i); + }, ZQ = function t(n, e) { + return t.fun(n, e); + }, Nm = function t(n, e) { + return t.fun(n, e); + }, QQ = function t(n) { + return t.fun(n); + }, Cm = function t(n, e) { + return t.fun(n, e); + }, r00 = function t(n) { + return t.fun(n); + }; + N(CD, function(t, n, e) { + return u(f(n), u80), o(t, n, e[1]), u(f(n), i80), o(Cm, n, e[2]), u(f(n), f80); + }), N(ZQ, function(t, n) { + var e = u(CD, t); + return o(C0(t80), e, n); + }), N(Nm, function(t, n) { + return n ? g(t, e80) : g(t, n80); + }), N(QQ, function(t) { + return o(C0(r80), Nm, t); + }), N(Cm, function(t, n) { + u(f(t), M40), o(f(t), q40, B40), o(Nm, t, n[1]), u(f(t), U40), u(f(t), H40), o(f(t), Y40, X40); + var e = n[2]; + o(f(t), V40, e), u(f(t), z40), u(f(t), K40), o(f(t), J40, W40); + var i = n[3]; + return o(f(t), $40, i), u(f(t), Z40), u(f(t), Q40); + }), N(r00, function(t) { + return o(C0(G40), Cm, t); + }), mu(Q3r, iu, [0, CD, ZQ, Nm, QQ, Cm, r00]); + var PD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, e00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Pm = function t(n, e) { + return t.fun(n, e); + }, n00 = function t(n) { + return t.fun(n); + }, Dm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, t00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(PD, function(t, n, e, i) { + u(f(e), L40), o(n, e, i[1]), u(f(e), R40); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Dm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), j40); + }), N(e00, function(t, n, e) { + var i = o(PD, t, n); + return o(C0(D40), i, e); + }), N(Pm, function(t, n) { + switch (n) { + case 0: + return g(t, A40); + case 1: + return g(t, N40); + case 2: + return g(t, C40); + default: + return g(t, P40); + } + }), N(n00, function(t) { + return o(C0(I40), Pm, t); + }), N(Dm, function(t, n, e, i) { + u(f(e), Wb0), o(f(e), $b0, Jb0), o(Pm, e, i[1]), u(f(e), Zb0), u(f(e), Qb0), o(f(e), e40, r40); + var x = i[2]; + function c(V) { + return u(n, V); + } + function s(V) { + return u(t, V); + } + R(qe[7][1][1], s, c, e, x), u(f(e), n40), u(f(e), t40), o(f(e), i40, u40); + var p = i[3]; + u(f(e), f40), o(t, e, p[1]), u(f(e), x40); + var y = p[2]; + function T(V) { + return u(n, V); + } + function E(V) { + return u(t, V); + } + R(As[5], E, T, e, y), u(f(e), o40), u(f(e), a40), u(f(e), c40), o(f(e), v40, s40); + var d = i[4]; + o(f(e), l40, d), u(f(e), b40), u(f(e), p40), o(f(e), _40, m40); + var w = i[5]; + u(f(e), y40); + var G = 0; + le(function(V, f0) { + V && u(f(e), Kb0); + function m0(g0) { + return u(n, g0); + } + function k0(g0) { + return u(t, g0); + } + return R(F1[7][1], k0, m0, e, f0), 1; + }, G, w), u(f(e), h40), u(f(e), d40), u(f(e), k40), o(f(e), E40, w40); + var A = i[6]; + if (A) { + g(e, S40); + var S = A[1], M = function(V, f0) { + return g(V, zb0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, g40); + } else + g(e, F40); + return u(f(e), T40), u(f(e), O40); + }), N(t00, function(t, n, e) { + var i = o(Dm, t, n); + return o(C0(Vb0), i, e); + }); + var u00 = [0, PD, e00, Pm, n00, Dm, t00], DD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, i00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Lm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, f00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Rm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, x00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(DD, function(t, n, e, i) { + u(f(e), Hb0), o(n, e, i[1]), u(f(e), Xb0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Lm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Yb0); + }), N(i00, function(t, n, e) { + var i = o(DD, t, n); + return o(C0(Ub0), i, e); + }), N(Lm, function(t, n, e, i) { + u(f(e), cb0), o(f(e), vb0, sb0); + var x = i[1]; + function c(m0) { + return u(n, m0); + } + function s(m0) { + return u(t, m0); + } + R(qe[7][1][1], s, c, e, x), u(f(e), lb0), u(f(e), bb0), o(f(e), mb0, pb0); + var p = i[2]; + function y(m0) { + return u(n, m0); + } + R(Rm, function(m0) { + return u(t, m0); + }, y, e, p), u(f(e), _b0), u(f(e), yb0), o(f(e), db0, hb0); + var T = i[3]; + function E(m0) { + return u(n, m0); + } + function d(m0) { + return u(t, m0); + } + R($e[19], d, E, e, T), u(f(e), kb0), u(f(e), wb0), o(f(e), Sb0, Eb0); + var w = i[4]; + o(f(e), gb0, w), u(f(e), Fb0), u(f(e), Tb0), o(f(e), Ib0, Ob0); + var G = i[5]; + if (G) { + g(e, Ab0); + var A = G[1], S = function(m0) { + return u(t, m0); + }; + ur(zv[1], S, e, A), g(e, Nb0); + } else + g(e, Cb0); + u(f(e), Pb0), u(f(e), Db0), o(f(e), Rb0, Lb0); + var M = i[6]; + if (M) { + g(e, jb0); + var K = M[1], V = function(m0, k0) { + return g(m0, ab0); + }, f0 = function(m0) { + return u(t, m0); + }; + R(Dr[1], f0, V, e, K), g(e, Gb0); + } else + g(e, Mb0); + return u(f(e), Bb0), u(f(e), qb0); + }), N(f00, function(t, n, e) { + var i = o(Lm, t, n); + return o(C0(ob0), i, e); + }), N(Rm, function(t, n, e, i) { + if (typeof i == "number") + return i ? g(e, ub0) : g(e, ib0); + u(f(e), fb0); + var x = i[1]; + function c(p) { + return u(n, p); + } + function s(p) { + return u(t, p); + } + return R(qe[31], s, c, e, x), u(f(e), xb0); + }), N(x00, function(t, n, e) { + var i = o(Rm, t, n); + return o(C0(tb0), i, e); + }); + var o00 = [0, DD, i00, Lm, f00, Rm, x00], LD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, a00 = function t(n, e, i) { + return t.fun(n, e, i); + }, jm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, c00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(LD, function(t, n, e, i) { + u(f(e), rb0), o(n, e, i[1]), u(f(e), eb0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(jm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), nb0); + }), N(a00, function(t, n, e) { + var i = o(LD, t, n); + return o(C0(Ql0), i, e); + }), N(jm, function(t, n, e, i) { + u(f(e), kl0), o(f(e), El0, wl0); + var x = i[1]; + function c(m0) { + return u(t, m0); + } + ur(Bp[1], c, e, x), u(f(e), Sl0), u(f(e), gl0), o(f(e), Tl0, Fl0); + var s = i[2]; + function p(m0) { + return u(n, m0); + } + function y(m0) { + return u(t, m0); + } + R(F1[2][5], y, p, e, s), u(f(e), Ol0), u(f(e), Il0), o(f(e), Nl0, Al0); + var T = i[3]; + function E(m0) { + return u(n, m0); + } + function d(m0) { + return u(t, m0); + } + R($e[19], d, E, e, T), u(f(e), Cl0), u(f(e), Pl0), o(f(e), Ll0, Dl0); + var w = i[4]; + o(f(e), Rl0, w), u(f(e), jl0), u(f(e), Gl0), o(f(e), Bl0, Ml0); + var G = i[5]; + if (G) { + g(e, ql0); + var A = G[1], S = function(m0) { + return u(t, m0); + }; + ur(zv[1], S, e, A), g(e, Ul0); + } else + g(e, Hl0); + u(f(e), Xl0), u(f(e), Yl0), o(f(e), zl0, Vl0); + var M = i[6]; + if (M) { + g(e, Kl0); + var K = M[1], V = function(m0, k0) { + return g(m0, dl0); + }, f0 = function(m0) { + return u(t, m0); + }; + R(Dr[1], f0, V, e, K), g(e, Wl0); + } else + g(e, Jl0); + return u(f(e), $l0), u(f(e), Zl0); + }), N(c00, function(t, n, e) { + var i = o(jm, t, n); + return o(C0(hl0), i, e); + }); + var s00 = [0, LD, a00, jm, c00], RD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, v00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Gm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, l00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(RD, function(t, n, e, i) { + u(f(e), ml0), o(t, e, i[1]), u(f(e), _l0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Gm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), yl0); + }), N(v00, function(t, n, e) { + var i = o(RD, t, n); + return o(C0(pl0), i, e); + }), N(Gm, function(t, n, e, i) { + u(f(e), J20), o(f(e), Z20, $20); + var x = i[1]; + function c(S) { + return u(n, S); + } + function s(S) { + return u(t, S); + } + R(qe[31], s, c, e, x), u(f(e), Q20), u(f(e), rl0), o(f(e), nl0, el0); + var p = i[2]; + if (p) { + g(e, tl0); + var y = p[1], T = function(S) { + return u(n, S); + }, E = function(S) { + return u(t, S); + }; + R($e[23][1], E, T, e, y), g(e, ul0); + } else + g(e, il0); + u(f(e), fl0), u(f(e), xl0), o(f(e), al0, ol0); + var d = i[3]; + if (d) { + g(e, cl0); + var w = d[1], G = function(S, M) { + return g(S, W20); + }, A = function(S) { + return u(t, S); + }; + R(Dr[1], A, G, e, w), g(e, sl0); + } else + g(e, vl0); + return u(f(e), ll0), u(f(e), bl0); + }), N(l00, function(t, n, e) { + var i = o(Gm, t, n); + return o(C0(K20), i, e); + }); + var b00 = [0, RD, v00, Gm, l00], jD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, p00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Mm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, m00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(jD, function(t, n, e, i) { + u(f(e), Y20), o(t, e, i[1]), u(f(e), V20); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Mm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), z20); + }), N(p00, function(t, n, e) { + var i = o(jD, t, n); + return o(C0(X20), i, e); + }), N(Mm, function(t, n, e, i) { + u(f(e), C20), o(f(e), D20, P20); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(Rn[1], s, c, e, x), u(f(e), L20), u(f(e), R20), o(f(e), G20, j20); + var p = i[2]; + if (p) { + g(e, M20); + var y = p[1], T = function(d) { + return u(n, d); + }, E = function(d) { + return u(t, d); + }; + R($e[23][1], E, T, e, y), g(e, B20); + } else + g(e, q20); + return u(f(e), U20), u(f(e), H20); + }), N(m00, function(t, n, e) { + var i = o(Mm, t, n); + return o(C0(N20), i, e); + }); + var _00 = [0, jD, p00, Mm, m00], GD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, y00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Bm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, h00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(GD, function(t, n, e, i) { + u(f(e), O20), o(t, e, i[1]), u(f(e), I20); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Bm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), A20); + }), N(y00, function(t, n, e) { + var i = o(GD, t, n); + return o(C0(T20), i, e); + }), N(Bm, function(t, n, e, i) { + u(f(e), l20), o(f(e), p20, b20); + var x = i[1]; + u(f(e), m20); + var c = 0; + le(function(E, d) { + E && u(f(e), v20); + function w(A) { + return u(n, A); + } + function G(A) { + return u(t, A); + } + return R(_00[1], G, w, e, d), 1; + }, c, x), u(f(e), _20), u(f(e), y20), u(f(e), h20), o(f(e), k20, d20); + var s = i[2]; + if (s) { + g(e, w20); + var p = s[1], y = function(E, d) { + return g(E, s20); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, E20); + } else + g(e, S20); + return u(f(e), g20), u(f(e), F20); + }), N(h00, function(t, n, e) { + var i = o(Bm, t, n); + return o(C0(c20), i, e); + }); + var d00 = [0, _00, GD, y00, Bm, h00], MD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, k00 = function t(n, e, i) { + return t.fun(n, e, i); + }, qm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, w00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Um = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, E00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(MD, function(t, n, e, i) { + u(f(e), x20), o(t, e, i[1]), u(f(e), o20); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(qm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), a20); + }), N(k00, function(t, n, e) { + var i = o(MD, t, n); + return o(C0(f20), i, e); + }), N(qm, function(t, n, e, i) { + u(f(e), Vv0), o(f(e), Kv0, zv0); + var x = i[1]; + u(f(e), Wv0); + var c = 0; + le(function(E, d) { + E && u(f(e), Yv0); + function w(G) { + return u(n, G); + } + return R(Um, function(G) { + return u(t, G); + }, w, e, d), 1; + }, c, x), u(f(e), Jv0), u(f(e), $v0), u(f(e), Zv0), o(f(e), r20, Qv0); + var s = i[2]; + if (s) { + g(e, e20); + var p = s[1], y = function(E, d) { + return g(E, Xv0); + }, T = function(E) { + return u(t, E); + }; + R(Dr[1], T, y, e, p), g(e, n20); + } else + g(e, t20); + return u(f(e), u20), u(f(e), i20); + }), N(w00, function(t, n, e) { + var i = o(qm, t, n); + return o(C0(Hv0), i, e); + }), N(Um, function(t, n, e, i) { + switch (i[0]) { + case 0: + u(f(e), jv0); + var x = i[1], c = function(G) { + return u(n, G); + }, s = function(G) { + return u(t, G); + }; + return R(u00[1], s, c, e, x), u(f(e), Gv0); + case 1: + u(f(e), Mv0); + var p = i[1], y = function(G) { + return u(n, G); + }, T = function(G) { + return u(t, G); + }; + return R(o00[1], T, y, e, p), u(f(e), Bv0); + default: + u(f(e), qv0); + var E = i[1], d = function(G) { + return u(n, G); + }, w = function(G) { + return u(t, G); + }; + return R(s00[1], w, d, e, E), u(f(e), Uv0); + } + }), N(E00, function(t, n, e) { + var i = o(Um, t, n); + return o(C0(Rv0), i, e); + }); + var BD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, S00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Hm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, g00 = function t(n, e, i) { + return t.fun(n, e, i); + }, gee = [0, MD, k00, qm, w00, Um, E00]; + N(BD, function(t, n, e, i) { + u(f(e), Pv0), o(t, e, i[1]), u(f(e), Dv0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Hm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Lv0); + }), N(S00, function(t, n, e) { + var i = o(BD, t, n); + return o(C0(Cv0), i, e); + }), N(Hm, function(t, n, e, i) { + u(f(e), dv0), o(f(e), wv0, kv0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(qe[31], s, c, e, x), u(f(e), Ev0), u(f(e), Sv0), o(f(e), Fv0, gv0); + var p = i[2]; + if (p) { + g(e, Tv0); + var y = p[1], T = function(d, w) { + return g(d, hv0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, Ov0); + } else + g(e, Iv0); + return u(f(e), Av0), u(f(e), Nv0); + }), N(g00, function(t, n, e) { + var i = o(Hm, t, n); + return o(C0(yv0), i, e); + }); + var F00 = [0, BD, S00, Hm, g00], qD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, T00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(qD, function(t, n, e, i) { + u(f(e), F10), o(f(e), O10, T10); + var x = i[1]; + if (x) { + g(e, I10); + var c = x[1], s = function(w0) { + return u(n, w0); + }, p = function(w0) { + return u(t, w0); + }; + R(Rn[1], p, s, e, c), g(e, A10); + } else + g(e, N10); + u(f(e), C10), u(f(e), P10), o(f(e), L10, D10); + var y = i[2]; + function T(w0) { + return u(n, w0); + } + function E(w0) { + return u(t, w0); + } + R(F1[6][1], E, T, e, y), u(f(e), R10), u(f(e), j10), o(f(e), M10, G10); + var d = i[3]; + if (d) { + g(e, B10); + var w = d[1], G = function(w0) { + return u(n, w0); + }, A = function(w0) { + return u(t, w0); + }; + R($e[22][1], A, G, e, w), g(e, q10); + } else + g(e, U10); + u(f(e), H10), u(f(e), X10), o(f(e), V10, Y10); + var S = i[4]; + if (S) { + g(e, z10); + var M = S[1], K = function(w0) { + return u(n, w0); + }, V = function(w0) { + return u(t, w0); + }; + R(b00[1], V, K, e, M), g(e, K10); + } else + g(e, W10); + u(f(e), J10), u(f(e), $10), o(f(e), Q10, Z10); + var f0 = i[5]; + if (f0) { + g(e, rv0); + var m0 = f0[1], k0 = function(w0) { + return u(n, w0); + }, g0 = function(w0) { + return u(t, w0); + }; + R(d00[2], g0, k0, e, m0), g(e, ev0); + } else + g(e, nv0); + u(f(e), tv0), u(f(e), uv0), o(f(e), fv0, iv0); + var e0 = i[6]; + u(f(e), xv0); + var x0 = 0; + le(function(w0, _0) { + w0 && u(f(e), g10); + function E0(b) { + return u(n, b); + } + function U0(b) { + return u(t, b); + } + return R(F00[1], U0, E0, e, _0), 1; + }, x0, e0), u(f(e), ov0), u(f(e), av0), u(f(e), cv0), o(f(e), vv0, sv0); + var l = i[7]; + if (l) { + g(e, lv0); + var c0 = l[1], t0 = function(w0, _0) { + return g(w0, S10); + }, o0 = function(w0) { + return u(t, w0); + }; + R(Dr[1], o0, t0, e, c0), g(e, bv0); + } else + g(e, pv0); + return u(f(e), mv0), u(f(e), _v0); + }), N(T00, function(t, n, e) { + var i = o(qD, t, n); + return o(C0(E10), i, e); + }), mu(r6r, F1, [0, u00, o00, s00, b00, d00, gee, F00, qD, T00]); + var UD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, O00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Xm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, I00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(UD, function(t, n, e, i) { + u(f(e), d10), o(t, e, i[1]), u(f(e), k10); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Xm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), w10); + }), N(O00, function(t, n, e) { + var i = o(UD, t, n); + return o(C0(h10), i, e); + }), N(Xm, function(t, n, e, i) { + u(f(e), x10), o(f(e), a10, o10); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(di[5], s, c, e, x), u(f(e), c10), u(f(e), s10), o(f(e), l10, v10); + var p = i[2]; + if (p) { + g(e, b10); + var y = p[1], T = function(d, w) { + return g(d, f10); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, p10); + } else + g(e, m10); + return u(f(e), _10), u(f(e), y10); + }), N(I00, function(t, n, e) { + var i = o(Xm, t, n); + return o(C0(i10), i, e); + }); + var A00 = [0, UD, O00, Xm, I00], HD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, N00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Ym = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, C00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(HD, function(t, n, e, i) { + u(f(e), n10), o(t, e, i[1]), u(f(e), t10); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Ym, function(s) { + return u(t, s); + }, c, e, x), u(f(e), u10); + }), N(N00, function(t, n, e) { + var i = o(HD, t, n); + return o(C0(e10), i, e); + }), N(Ym, function(t, n, e, i) { + u(f(e), Hs0), o(f(e), Ys0, Xs0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R(di[5], s, c, e, x), u(f(e), Vs0), u(f(e), zs0), o(f(e), Ws0, Ks0); + var p = i[2]; + if (p) { + g(e, Js0); + var y = p[1], T = function(d) { + return u(n, d); + }, E = function(d) { + return u(t, d); + }; + R(qe[31], E, T, e, y), g(e, $s0); + } else + g(e, Zs0); + return u(f(e), Qs0), u(f(e), r10); + }), N(C00, function(t, n, e) { + var i = o(Ym, t, n); + return o(C0(Us0), i, e); + }); + var P00 = [0, HD, N00, Ym, C00], XD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, D00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Vm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, L00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(XD, function(t, n, e, i) { + u(f(e), Ms0), o(t, e, i[1]), u(f(e), Bs0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Vm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), qs0); + }), N(D00, function(t, n, e) { + var i = o(XD, t, n); + return o(C0(Gs0), i, e); + }), N(Vm, function(t, n, e, i) { + u(f(e), Fs0), o(f(e), Os0, Ts0); + var x = i[1]; + function c(d) { + return u(n, d); + } + function s(d) { + return u(t, d); + } + R($e[17], s, c, e, x), u(f(e), Is0), u(f(e), As0), o(f(e), Cs0, Ns0); + var p = i[2]; + if (p) { + g(e, Ps0); + var y = p[1], T = function(d, w) { + return g(d, gs0); + }, E = function(d) { + return u(t, d); + }; + R(Dr[1], E, T, e, y), g(e, Ds0); + } else + g(e, Ls0); + return u(f(e), Rs0), u(f(e), js0); + }), N(L00, function(t, n, e) { + var i = o(Vm, t, n); + return o(C0(Ss0), i, e); + }); + var R00 = [0, XD, D00, Vm, L00], YD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, j00 = function t(n, e, i) { + return t.fun(n, e, i); + }, zm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, G00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(YD, function(t, n, e, i) { + u(f(e), ks0), o(t, e, i[1]), u(f(e), ws0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(zm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Es0); + }), N(j00, function(t, n, e) { + var i = o(YD, t, n); + return o(C0(ds0), i, e); + }), N(zm, function(t, n, e, i) { + u(f(e), Vc0), o(f(e), Kc0, zc0); + var x = i[1]; + if (x) { + g(e, Wc0); + var c = x[1], s = function(V) { + return u(n, V); + }, p = function(V) { + return u(t, V); + }; + R(R00[1], p, s, e, c), g(e, Jc0); + } else + g(e, $c0); + u(f(e), Zc0), u(f(e), Qc0), o(f(e), es0, rs0); + var y = i[2]; + u(f(e), ns0); + var T = 0; + le(function(V, f0) { + V && u(f(e), Yc0); + function m0(g0) { + return u(n, g0); + } + function k0(g0) { + return u(t, g0); + } + return R(P00[1], k0, m0, e, f0), 1; + }, T, y), u(f(e), ts0), u(f(e), us0), u(f(e), is0), o(f(e), xs0, fs0); + var E = i[3]; + if (E) { + g(e, os0); + var d = E[1], w = function(V) { + return u(n, V); + }, G = function(V) { + return u(t, V); + }; + R(A00[1], G, w, e, d), g(e, as0); + } else + g(e, cs0); + u(f(e), ss0), u(f(e), vs0), o(f(e), bs0, ls0); + var A = i[4]; + if (A) { + g(e, ps0); + var S = A[1], M = function(V, f0) { + u(f(V), Hc0); + var m0 = 0; + return le(function(k0, g0) { + k0 && u(f(V), Uc0); + function e0(x0) { + return u(t, x0); + } + return ur(iu[1], e0, V, g0), 1; + }, m0, f0), u(f(V), Xc0); + }, K = function(V) { + return u(t, V); + }; + R(Dr[1], K, M, e, S), g(e, ms0); + } else + g(e, _s0); + return u(f(e), ys0), u(f(e), hs0); + }), N(G00, function(t, n, e) { + var i = o(zm, t, n); + return o(C0(qc0), i, e); + }); + var M00 = [0, YD, j00, zm, G00], VD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, B00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Km = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, q00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(VD, function(t, n, e, i) { + u(f(e), Ba0), o(f(e), Ua0, qa0); + var x = i[1]; + if (x) { + g(e, Ha0); + var c = x[1], s = function(_0) { + return u(n, _0); + }, p = function(_0) { + return u(t, _0); + }; + R(Rn[1], p, s, e, c), g(e, Xa0); + } else + g(e, Ya0); + u(f(e), Va0), u(f(e), za0), o(f(e), Wa0, Ka0); + var y = i[2]; + function T(_0) { + return u(n, _0); + } + function E(_0) { + return u(t, _0); + } + R(M00[1], E, T, e, y), u(f(e), Ja0), u(f(e), $a0), o(f(e), Qa0, Za0); + var d = i[3]; + function w(_0) { + return u(n, _0); + } + R(Km, function(_0) { + return u(t, _0); + }, w, e, d), u(f(e), rc0), u(f(e), ec0), o(f(e), tc0, nc0); + var G = i[4]; + o(f(e), uc0, G), u(f(e), ic0), u(f(e), fc0), o(f(e), oc0, xc0); + var A = i[5]; + o(f(e), ac0, A), u(f(e), cc0), u(f(e), sc0), o(f(e), lc0, vc0); + var S = i[6]; + if (S) { + g(e, bc0); + var M = S[1], K = function(_0) { + return u(n, _0); + }, V = function(_0) { + return u(t, _0); + }; + R($e[24][1], V, K, e, M), g(e, pc0); + } else + g(e, mc0); + u(f(e), _c0), u(f(e), yc0), o(f(e), dc0, hc0); + var f0 = i[7]; + function m0(_0) { + return u(n, _0); + } + function k0(_0) { + return u(t, _0); + } + R($e[19], k0, m0, e, f0), u(f(e), kc0), u(f(e), wc0), o(f(e), Sc0, Ec0); + var g0 = i[8]; + if (g0) { + g(e, gc0); + var e0 = g0[1], x0 = function(_0) { + return u(n, _0); + }, l = function(_0) { + return u(t, _0); + }; + R($e[22][1], l, x0, e, e0), g(e, Fc0); + } else + g(e, Tc0); + u(f(e), Oc0), u(f(e), Ic0), o(f(e), Nc0, Ac0); + var c0 = i[9]; + if (c0) { + g(e, Cc0); + var t0 = c0[1], o0 = function(_0, E0) { + return g(_0, Ma0); + }, w0 = function(_0) { + return u(t, _0); + }; + R(Dr[1], w0, o0, e, t0), g(e, Pc0); + } else + g(e, Dc0); + return u(f(e), Lc0), u(f(e), Rc0), o(f(e), Gc0, jc0), o(t, e, i[10]), u(f(e), Mc0), u(f(e), Bc0); + }), N(B00, function(t, n, e) { + var i = o(VD, t, n); + return o(C0(Ga0), i, e); + }), N(Km, function(t, n, e, i) { + if (i[0] === 0) { + var x = i[1]; + u(f(e), Na0), u(f(e), Ca0), o(t, e, x[1]), u(f(e), Pa0); + var c = x[2], s = function(d) { + return u(n, d); + }, p = function(d) { + return u(t, d); + }; + return R(Yu[1][1], p, s, e, c), u(f(e), Da0), u(f(e), La0); + } + u(f(e), Ra0); + var y = i[1]; + function T(d) { + return u(n, d); + } + function E(d) { + return u(t, d); + } + return R(qe[31], E, T, e, y), u(f(e), ja0); + }), N(q00, function(t, n, e) { + var i = o(Km, t, n); + return o(C0(Aa0), i, e); + }), mu(e6r, As, [0, A00, P00, R00, M00, VD, B00, Km, q00]); + var zD = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, U00 = function t(n, e, i) { + return t.fun(n, e, i); + }, Wm = function t(n, e, i, x) { + return t.fun(n, e, i, x); + }, H00 = function t(n, e, i) { + return t.fun(n, e, i); + }; + N(zD, function(t, n, e, i) { + u(f(e), Ta0), o(t, e, i[1]), u(f(e), Oa0); + var x = i[2]; + function c(s) { + return u(n, s); + } + return R(Wm, function(s) { + return u(t, s); + }, c, e, x), u(f(e), Ia0); + }), N(U00, function(t, n, e) { + var i = o(zD, t, n); + return o(C0(Fa0), i, e); + }), N(Wm, function(t, n, e, i) { + u(f(e), fa0), o(f(e), oa0, xa0); + var x = i[1]; + u(f(e), aa0); + var c = 0; + le(function(w, G) { + w && u(f(e), ia0); + function A(M) { + return u(n, M); + } + function S(M) { + return u(t, M); + } + return R(Yu[35], S, A, e, G), 1; + }, c, x), u(f(e), ca0), u(f(e), sa0), u(f(e), va0), o(f(e), ba0, la0); + var s = i[2]; + if (s) { + g(e, pa0); + var p = s[1], y = function(w, G) { + return g(w, ua0); + }, T = function(w) { + return u(t, w); + }; + R(Dr[1], T, y, e, p), g(e, ma0); + } else + g(e, _a0); + u(f(e), ya0), u(f(e), ha0), o(f(e), ka0, da0); + var E = i[3]; + u(f(e), wa0); + var d = 0; + return le(function(w, G) { + w && u(f(e), ta0); + function A(S) { + return u(t, S); + } + return ur(iu[1], A, e, G), 1; + }, d, E), u(f(e), Ea0), u(f(e), Sa0), u(f(e), ga0); + }), N(H00, function(t, n, e) { + var i = o(Wm, t, n); + return o(C0(na0), i, e); + }), mu(n6r, kee, [0, zD, U00, Wm, H00]); + function ze(t, n) { + if (n) { + var e = n[1], i = u(t, e); + return e === i ? n : [0, i]; + } + return n; + } + function te(t, n, e, i, x) { + var c = o(t, n, e); + return e === c ? i : u(x, c); + } + function ee(t, n, e, i) { + var x = u(t, n); + return n === x ? e : u(i, x); + } + function _u(t, n) { + var e = n[1]; + function i(x) { + return [0, e, x]; + } + return te(t, e, n[2], n, i); + } + function Un(t, n) { + var e = le(function(i, x) { + var c = u(t, x), s = i[2], p = s || (c !== x ? 1 : 0); + return [0, [0, c, i[1]], p]; + }, l6r, n); + return e[2] ? ye(e[1]) : n; + } + var KD = Rp(p6r, function(t) { + var n = NN(t, b6r), e = n[1], i = n[2], x = n[3], c = n[4], s = n[5], p = n[6], y = n[7], T = n[8], E = n[9], d = n[10], w = n[11], G = n[12], A = n[13], S = n[14], M = n[15], K = n[16], V = n[17], f0 = n[18], m0 = n[19], k0 = n[20], g0 = n[21], e0 = n[22], x0 = n[23], l = n[24], c0 = n[25], t0 = n[26], o0 = n[27], w0 = n[28], _0 = n[29], E0 = n[30], U0 = n[31], b = n[32], R0 = n[33], X = n[34], s0 = n[35], hr = n[36], Ar = n[37], or = n[38], W0 = n[39], Lr = n[40], Tr = n[41], Hr = n[42], Or = n[43], fr = n[44], Rr = n[45], Wr = n[46], Jr = n[47], ar = n[49], _r = n[50], Ir = n[51], fe = n[52], v0 = n[53], P = n[54], L = n[55], Q = n[56], i0 = n[57], l0 = n[58], S0 = n[59], T0 = n[60], rr = n[61], L0 = n[62], B = n[63], Z = n[65], p0 = n[66], b0 = n[67], O0 = n[68], M0 = n[69], er = n[70], yr = n[71], vr = n[72], $0 = n[73], Er = n[74], Mr = n[75], Br = n[76], qr = n[77], jr = n[78], $r = n[79], ne = n[80], Qr = n[81], be = n[82], ae = n[83], pe = n[84], oe = n[85], ce = n[86], ge = n[87], q0 = n[88], Fr = n[89], _ = n[90], k = n[91], I = n[92], U = n[93], Y = n[94], y0 = n[95], P0 = n[96], I0 = n[97], D = n[98], u0 = n[99], X0 = n[ti], J0 = n[R7], ir = n[Ri], Q0 = n[s7], F0 = n[L7], Sr = n[j7], mr = n[Yt], Cr = n[Zc], sr = n[is], Pr = n[Fv], K0 = n[Xt], Ur = n[cf], h0 = n[T7], Kr = n[Pn], re = n[t1], xe = n[Av], Re = n[f1], ve = n[A2], Ie = n[z2], Ge = n[Sv], Me = n[uc], an = n[tl], We = n[In], Ae = n[ts], cn = n[X2], rn = n[br], kn = n[IX], vn = n[zn], Ne = n[jt], Je = n[JY], en = n[zw], _n = n[Jg], Cn = n[BH], Hn = n[133], Fn = n[134], vt = n[135], Nt = n[KH], gt = n[137], Zt = n[EH], qt = n[139], Ft = n[dH], Ct = n[141], du = n[142], Wu = n[143], lt = n[iV], ou = n[145], Bu = n[146], K7 = n[DX], Yi = n[148], a7 = n[eH], Hc = n[150], W7 = n[151], Ut = n[152], bt = n[153], B0 = n[FH], D0 = n[155], Le = n[156], He = n[157], he = n[158], me = n[159], Zn = n[fY], wn = n[XU], ft = n[kh], xt = n[Ln], jn = n[AF], ut = n[$X], dt = n[DY], xn = n[NT], ln = n[IY], it = n[NX], Tt = n[qg], Ti = n[pg], hs = n[LU], Au = n[_Y], Hs = n[$U], Vi = n[bX], Xs = n[mV], Ys = n[uV], nn = n[gO], si = n[RY], Vs = n[sU], c2 = n[Ai], M9 = n[Yg], B9 = n[lS], q9 = n[hk], zs = n[gU], s2 = n[md], U9 = n[nw], H9 = n[iY], X9 = n[fX], H1 = n[OY], vi = n[lX], ab = n[rt], cb = n[HT], sb = n[nI], Y9 = n[xY], V9 = n[XX], z9 = n[hY], vb = n[vH], K9 = n[QH], W9 = n[NU], J9 = n[sY], $9 = n[nH], lb = n[eV], Z9 = n[WX], X1 = n[VH], v2 = n[TH], bb = n[AX], pb = n[_H], mb = n[Wg], On = n[A6], Gn = n[yU], Y1 = n[yY], _b = n[RX], yb = n[mT], Q9 = n[xT], Xc = n[y6], r_ = n[cp], l2 = n[Cw], hb = n[FU], Yc = n[iA], e_ = n[GX], Ks = n[FX], db = n[y8], V1 = n[hv], n_ = n[BO], ds = n[rk], t_ = n[JH], z1 = n[fV], u_ = n[bU], b2 = n[jh], i_ = n[qX], Ws = n[ZF], kb = n[hT], Js = n[tH], f_ = n[JU], zi = n[lO], Vc = n[BY], $s = n[cH], x_ = n[i6], p2 = n[s1], m2 = n[Vy], _2 = n[ST], o_ = n[QU], Zs = n[v8], a_ = n[WY], y2 = n[$2], qL = n[48], K1 = n[64]; + function UL(a, F, m) { + var O = m[2], H = m[1], $ = ze(u(a[1][1 + nn], a), H), r0 = o(a[1][1 + s0], a, O); + return O === r0 && H === $ ? m : [0, $, r0, m[3], m[4]]; + } + function W1(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + Vc], a, r0), V0 = ze(u(a[1][1 + V], a), $), Nr = o(a[1][1 + t0], a, H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && H === Nr && $ === V0 && O === Gr ? m : [0, j0, V0, Nr, Gr]; + } + function HL(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + nn], a, $), j0 = o(a[1][1 + Or], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function J1(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + _r], a, $), j0 = o(a[1][1 + Or], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function XL(a, F, m) { + var O = m[2], H = O[2], $ = O[1], r0 = ur(a[1][1 + p], a, F, $), j0 = ze(u(a[1][1 + nn], a), H); + return $ === r0 && H === j0 ? m : [0, m[1], [0, r0, j0]]; + } + function Oi(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = Un(o(a[1][1 + y], a, H), $), j0 = o(a[1][1 + s0], a, O); + return $ === r0 && O === j0 ? m : [0, r0, H, j0]; + } + function YL(a, F, m) { + var O = m[4], H = m[2], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, m[1], $, m[3], r0]; + } + function VL(a, F, m) { + var O = m[3], H = m[2], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, m[1], $, r0]; + } + function h2(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + nn], a, $), j0 = o(a[1][1 + l], a, H), V0 = o(a[1][1 + s0], a, O); + return r0 === $ && j0 === H && V0 === O ? m : [0, r0, j0, V0]; + } + function zL(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = _u(u(a[1][1 + zi], a), r0); + if ($) + var V0 = $[1], Nr = V0[1], Gr = function(Qt) { + return [0, [0, Nr, Qt]]; + }, Fe = V0[2], _e = te(u(a[1][1 + z1], a), Nr, Fe, $, Gr); + else + var _e = $; + if (H) + var Dn = H[1], yn = Dn[1], ot = function(Qt) { + return [0, [0, yn, Qt]]; + }, pt = Dn[2], kt = te(u(a[1][1 + zi], a), yn, pt, H, ot); + else + var kt = H; + var Kn = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === _e && H === kt && O === Kn ? m : [0, j0, _e, kt, Kn]; + } + function $1(a, F, m) { + var O = m[2], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function KL(a, F, m) { + var O = m[1], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, H]; + } + function Z1(a, F) { + return F; + } + function WL(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = Un(u(a[1][1 + b], a), $), j0 = Un(u(a[1][1 + nn], a), H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function wb(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + nn], a, $), j0 = _u(u(a[1][1 + R0], a), H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function JL(a, F) { + var m = F[2], O = m[3], H = m[2], $ = m[1], r0 = ze(u(a[1][1 + nn], a), $), j0 = o(a[1][1 + Tr], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? F : [0, F[1], [0, r0, j0, V0]]; + } + function Eb(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + nn], a, $), j0 = Un(u(a[1][1 + Ar], a), H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0, m[4]]; + } + function $L(a, F, m) { + var O = m[1], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, H]; + } + function ZL(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function d2(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function QL(a, F) { + return [0, o(a[1][1 + Or], a, F), 0]; + } + function rR(a, F) { + var m = u(a[1][1 + Hr], a), O = le(function(H, $) { + var r0 = H[1], j0 = u(m, $); + if (j0) { + if (j0[2]) + return [0, Lc(j0, r0), 1]; + var V0 = j0[1], Nr = H[2], Gr = Nr || ($ !== V0 ? 1 : 0); + return [0, [0, V0, r0], Gr]; + } + return [0, r0, 1]; + }, v6r, F); + return O[2] ? ye(O[1]) : F; + } + function c_(a, F) { + return o(a[1][1 + Tr], a, F); + } + function eR(a, F, m) { + var O = m[2], H = m[1], $ = Un(u(a[1][1 + nn], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function k2(a, F, m) { + var O = m[2], H = m[1], $ = ze(u(a[1][1 + nn], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0, m[3]]; + } + function nR(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + Le], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function w2(a, F) { + return o(a[1][1 + nn], a, F); + } + function tR(a, F) { + var m = F[2], O = m[2], H = m[1]; + if (H) + var $ = function(Nr) { + return [0, Nr]; + }, r0 = H[1], j0 = ee(u(a[1][1 + nn], a), r0, H, $); + else + var j0 = H; + var V0 = o(a[1][1 + s0], a, O); + return H === j0 && O === V0 ? F : [0, F[1], [0, j0, V0]]; + } + function Q1(a, F) { + return o(a[1][1 + nn], a, F); + } + function uR(a, F, m) { + return ur(a[1][1 + er], a, F, m); + } + function Sb(a, F, m) { + return ur(a[1][1 + er], a, F, m); + } + function iR(a, F, m) { + var O = m[2], H = O[2], $ = O[1], r0 = ur(a[1][1 + Z], a, F, $), j0 = o(a[1][1 + s0], a, H); + return r0 === $ && H === j0 ? m : [0, m[1], [0, r0, j0]]; + } + function gb(a, F, m) { + return ur(a[1][1 + er], a, F, m); + } + function fR(a, F, m) { + var O = m[2], H = O[2], $ = O[1], r0 = ur(a[1][1 + b0], a, F, $), j0 = ze(u(a[1][1 + nn], a), H); + return $ === r0 && H === j0 ? m : [0, m[1], [0, r0, j0]]; + } + function Fb(a, F, m) { + switch (m[0]) { + case 0: + var O = function(j0) { + return [0, j0]; + }, H = m[1]; + return ee(o(a[1][1 + O0], a, F), H, m, O); + case 1: + var $ = function(j0) { + return [1, j0]; + }, r0 = m[1]; + return ee(o(a[1][1 + p0], a, F), r0, m, $); + default: + return m; + } + } + function xR(a, F, m) { + return ur(a[1][1 + er], a, F, m); + } + function Mn(a, F, m) { + return ur(a[1][1 + er], a, F, m); + } + function s_(a, F, m) { + var O = m[2], H = O[2], $ = O[1], r0 = ur(a[1][1 + fe], a, F, $), j0 = o(a[1][1 + s0], a, H); + return r0 === $ && H === j0 ? m : [0, m[1], [0, r0, j0]]; + } + function oR(a, F, m) { + return o(a[1][1 + On], a, m); + } + function aR(a, F, m) { + return ur(a[1][1 + L0], a, F, m); + } + function rv(a, F, m) { + var O = m[1]; + function H(r0) { + return [0, O, r0]; + } + var $ = m[2]; + return te(o(a[1][1 + rr], a, F), O, $, m, H); + } + function Tb(a, F, m) { + switch (m[0]) { + case 0: + var O = function(Nr) { + return [0, Nr]; + }, H = m[1]; + return ee(o(a[1][1 + L], a, F), H, m, O); + case 1: + var $ = function(Nr) { + return [1, Nr]; + }, r0 = m[1]; + return ee(o(a[1][1 + i0], a, F), r0, m, $); + default: + var j0 = function(Nr) { + return [2, Nr]; + }, V0 = m[1]; + return ee(o(a[1][1 + l0], a, F), V0, m, j0); + } + } + function v_(a, F, m) { + var O = m[2], H = O[4], $ = O[3], r0 = O[2], j0 = O[1], V0 = ur(a[1][1 + Q], a, F, j0), Nr = ur(a[1][1 + P], a, F, r0), Gr = ze(u(a[1][1 + nn], a), $); + if (H) { + var Fe = 0; + if (V0[0] === 1) { + var _e = Nr[2]; + if (_e[0] === 2) + var yn = qn(V0[1][2][1], _e[1][1][2][1]); + else + Fe = 1; + } else + Fe = 1; + if (Fe) + var Dn = j0 === V0 ? 1 : 0, yn = Dn && (r0 === Nr ? 1 : 0); + } else + var yn = H; + return V0 === j0 && Nr === r0 && Gr === $ && H === yn ? m : [0, m[1], [0, V0, Nr, Gr, yn]]; + } + function Ob(a, F, m) { + if (m[0] === 0) { + var O = function(j0) { + return [0, j0]; + }, H = m[1]; + return ee(o(a[1][1 + S0], a, F), H, m, O); + } + function $(j0) { + return [1, j0]; + } + var r0 = m[1]; + return ee(o(a[1][1 + v0], a, F), r0, m, $); + } + function cR(a, F, m, O) { + return ur(a[1][1 + J0], a, m, O); + } + function l_(a, F, m) { + return o(a[1][1 + lt], a, m); + } + function sR(a, F, m) { + var O = m[2]; + switch (O[0]) { + case 0: + var H = O[1], $ = H[3], r0 = H[2], j0 = H[1], V0 = Un(o(a[1][1 + T0], a, F), j0), Nr = o(a[1][1 + x0], a, r0), Gr = o(a[1][1 + s0], a, $), Fe = 0; + if (V0 === j0 && Nr === r0 && Gr === $) { + var _e = O; + Fe = 1; + } + if (!Fe) + var _e = [0, [0, V0, Nr, Gr]]; + var Ji = _e; + break; + case 1: + var Dn = O[1], yn = Dn[3], ot = Dn[2], pt = Dn[1], kt = Un(o(a[1][1 + M0], a, F), pt), Kn = o(a[1][1 + x0], a, ot), Qt = o(a[1][1 + s0], a, yn), J7 = 0; + if (yn === Qt && kt === pt && Kn === ot) { + var $7 = O; + J7 = 1; + } + if (!J7) + var $7 = [1, [0, kt, Kn, Qt]]; + var Ji = $7; + break; + case 2: + var E7 = O[1], Z7 = E7[2], Q7 = E7[1], ri = ur(a[1][1 + L0], a, F, Q7), ei = o(a[1][1 + x0], a, Z7), ni = 0; + if (Q7 === ri && Z7 === ei) { + var Wi = O; + ni = 1; + } + if (!ni) + var Wi = [2, [0, ri, ei, E7[3]]]; + var Ji = Wi; + break; + default: + var tv = function(iv) { + return [3, iv]; + }, uv = O[1], Ji = ee(u(a[1][1 + B], a), uv, O, tv); + } + return O === Ji ? m : [0, m[1], Ji]; + } + function b_(a, F) { + return ur(a[1][1 + er], a, 0, F); + } + function Ib(a, F, m) { + var O = F && F[1]; + return ur(a[1][1 + er], a, [0, O], m); + } + function p_(a, F) { + return o(a[1][1 + m2], a, F); + } + function vR(a, F) { + return o(a[1][1 + m2], a, F); + } + function m_(a, F) { + return ur(a[1][1 + $s], a, s6r, F); + } + function Ab(a, F, m) { + return ur(a[1][1 + $s], a, [0, F], m); + } + function lR(a, F) { + return ur(a[1][1 + $s], a, c6r, F); + } + function bR(a, F, m) { + var O = m[5], H = m[4], $ = m[3], r0 = m[2], j0 = m[1], V0 = o(a[1][1 + Vc], a, j0), Nr = ze(u(a[1][1 + V], a), r0), Gr = ze(u(a[1][1 + t0], a), $), Fe = ze(u(a[1][1 + t0], a), H), _e = o(a[1][1 + s0], a, O); + return j0 === V0 && $ === Gr && r0 === Nr && $ === Gr && H === Fe && O === _e ? m : [0, V0, Nr, Gr, Fe, _e]; + } + function pR(a, F) { + return o(a[1][1 + On], a, F); + } + function Nb(a, F) { + return o(a[1][1 + lt], a, F); + } + function mR(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return te(u(a[1][1 + J0], a), m, H, F, O); + } + function _R(a, F) { + switch (F[0]) { + case 0: + var m = function(Gr) { + return [0, Gr]; + }, O = F[1]; + return ee(u(a[1][1 + be], a), O, F, m); + case 1: + var H = function(Gr) { + return [1, Gr]; + }, $ = F[1]; + return ee(u(a[1][1 + ae], a), $, F, H); + case 2: + var r0 = function(Gr) { + return [2, Gr]; + }, j0 = F[1]; + return ee(u(a[1][1 + ar], a), j0, F, r0); + default: + var V0 = function(Gr) { + return [3, Gr]; + }, Nr = F[1]; + return ee(u(a[1][1 + pe], a), Nr, F, V0); + } + } + function __(a, F) { + var m = F[2], O = F[1]; + switch (m[0]) { + case 0: + var H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + oe], a, r0), V0 = o(a[1][1 + nn], a, $); + if (H) { + var Nr = 0; + if (j0[0] === 1) { + var Gr = V0[2]; + if (Gr[0] === 10) + var _e = qn(j0[1][2][1], Gr[1][2][1]); + else + Nr = 1; + } else + Nr = 1; + if (Nr) + var Fe = r0 === j0 ? 1 : 0, _e = Fe && ($ === V0 ? 1 : 0); + } else + var _e = H; + return r0 === j0 && $ === V0 && H === _e ? F : [0, O, [0, j0, V0, _e]]; + case 1: + var Dn = m[2], yn = m[1], ot = o(a[1][1 + oe], a, yn), pt = _u(u(a[1][1 + me], a), Dn); + return yn === ot && Dn === pt ? F : [0, O, [1, ot, pt]]; + case 2: + var kt = m[3], Kn = m[2], Qt = m[1], J7 = o(a[1][1 + oe], a, Qt), $7 = _u(u(a[1][1 + me], a), Kn), E7 = o(a[1][1 + s0], a, kt); + return Qt === J7 && Kn === $7 && kt === E7 ? F : [0, O, [2, J7, $7, E7]]; + default: + var Z7 = m[3], Q7 = m[2], ri = m[1], ei = o(a[1][1 + oe], a, ri), ni = _u(u(a[1][1 + me], a), Q7), Wi = o(a[1][1 + s0], a, Z7); + return ri === ei && Q7 === ni && Z7 === Wi ? F : [0, O, [3, ei, ni, Wi]]; + } + } + function yR(a, F, m) { + var O = m[2], H = m[1], $ = Un(function(j0) { + if (j0[0] === 0) { + var V0 = j0[1], Nr = o(a[1][1 + Qr], a, V0); + return V0 === Nr ? j0 : [0, Nr]; + } + var Gr = j0[1], Fe = o(a[1][1 + fr], a, Gr); + return Gr === Fe ? j0 : [1, Fe]; + }, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function Cb(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + nn], a, r0), V0 = ze(u(a[1][1 + b2], a), $), Nr = ze(u(a[1][1 + Ws], a), H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Nr && O === Gr ? m : [0, j0, V0, Nr, Gr]; + } + function hR(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + lt], a, $), j0 = o(a[1][1 + lt], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function dR(a, F) { + return o(a[1][1 + nn], a, F); + } + function y_(a, F) { + return o(a[1][1 + ar], a, F); + } + function kR(a, F) { + return o(a[1][1 + lt], a, F); + } + function E2(a, F) { + switch (F[0]) { + case 0: + var m = function(V0) { + return [0, V0]; + }, O = F[1]; + return ee(u(a[1][1 + y0], a), O, F, m); + case 1: + var H = function(V0) { + return [1, V0]; + }, $ = F[1]; + return ee(u(a[1][1 + D], a), $, F, H); + default: + var r0 = function(V0) { + return [2, V0]; + }, j0 = F[1]; + return ee(u(a[1][1 + P0], a), j0, F, r0); + } + } + function wR(a, F, m) { + var O = m[1], H = ur(a[1][1 + u0], a, F, O); + return O === H ? m : [0, H, m[2], m[3]]; + } + function ER(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + nn], a, $), j0 = o(a[1][1 + I0], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function SR(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = o(a[1][1 + nn], a, $), j0 = o(a[1][1 + nn], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, m[1], r0, j0, V0]; + } + function Pb(a, F, m) { + var O = m[3], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, m[1], m[2], H]; + } + function gR(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + Q0], a, $), j0 = o(a[1][1 + Or], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function FR(a, F) { + var m = F[2], O = m[2], H = o(a[1][1 + s0], a, O); + return O === H ? F : [0, F[1], [0, m[1], H]]; + } + function Db(a, F) { + return o(a[1][1 + ve], a, F); + } + function TR(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + K0], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + Ur], a), $, F, H); + } + function OR(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + Pr], a, H), r0 = o(a[1][1 + h0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function ku(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + h0], a, H), r0 = o(a[1][1 + h0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function wu(a, F) { + return o(a[1][1 + Ur], a, F); + } + function Ii(a, F) { + return o(a[1][1 + sr], a, F); + } + function w7(a, F) { + return o(a[1][1 + h0], a, F); + } + function Ki(a, F) { + switch (F[0]) { + case 0: + var m = function(V0) { + return [0, V0]; + }, O = F[1]; + return ee(u(a[1][1 + ve], a), O, F, m); + case 1: + var H = function(V0) { + return [1, V0]; + }, $ = F[1]; + return ee(u(a[1][1 + xe], a), $, F, H); + default: + var r0 = function(V0) { + return [2, V0]; + }, j0 = F[1]; + return ee(u(a[1][1 + Re], a), j0, F, r0); + } + } + function ev(a, F) { + var m = F[2], O = F[1], H = o(a[1][1 + nn], a, O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, $]; + } + function Lb(a, F, m) { + var O = m[2], H = m[1], $ = o(a[1][1 + s0], a, O); + if (H) { + var r0 = H[1], j0 = o(a[1][1 + nn], a, r0); + return r0 === j0 && O === $ ? m : [0, [0, j0], $]; + } + return O === $ ? m : [0, 0, $]; + } + function nv(a, F) { + var m = F[2], O = F[1]; + switch (m[0]) { + case 0: + var H = function(_e) { + return [0, O, [0, _e]]; + }, $ = m[1]; + return te(u(a[1][1 + Ge], a), O, $, F, H); + case 1: + var r0 = function(_e) { + return [0, O, [1, _e]]; + }, j0 = m[1]; + return te(u(a[1][1 + Kr], a), O, j0, F, r0); + case 2: + var V0 = function(_e) { + return [0, O, [2, _e]]; + }, Nr = m[1]; + return te(u(a[1][1 + re], a), O, Nr, F, V0); + case 3: + var Gr = function(_e) { + return [0, O, [3, _e]]; + }, Fe = m[1]; + return ee(u(a[1][1 + F0], a), Fe, F, Gr); + default: + return F; + } + } + function Rb(a, F) { + var m = F[2], O = Un(u(a[1][1 + We], a), m); + return m === O ? F : [0, F[1], O]; + } + function jb(a, F, m) { + return ur(a[1][1 + J0], a, F, m); + } + function IR(a, F, m) { + return ur(a[1][1 + re], a, F, m); + } + function Sne(a, F) { + if (F[0] === 0) { + var m = F[1], O = function(V0) { + return [0, m, V0]; + }, H = F[2]; + return te(u(a[1][1 + Ae], a), m, H, F, O); + } + var $ = F[1]; + function r0(V0) { + return [1, $, V0]; + } + var j0 = F[2]; + return te(u(a[1][1 + cn], a), $, j0, F, r0); + } + function gne(a, F) { + return o(a[1][1 + sr], a, F); + } + function Fne(a, F) { + return o(a[1][1 + h0], a, F); + } + function Tne(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + vn], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + kn], a), $, F, H); + } + function One(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + Ne], a, H), r0 = ze(u(a[1][1 + rn], a), O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function Ine(a, F, m) { + var O = m[2], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function Ane(a, F) { + if (F[0] === 0) { + var m = function(V0) { + return [0, V0]; + }, O = F[1]; + return ee(u(a[1][1 + Je], a), O, F, m); + } + var H = F[1], $ = H[1]; + function r0(V0) { + return [1, [0, $, V0]]; + } + var j0 = H[2]; + return te(u(a[1][1 + Sr], a), $, j0, F, r0); + } + function Nne(a, F) { + var m = F[2][1], O = o(a[1][1 + Ie], a, m); + return m === O ? F : [0, F[1], [0, O]]; + } + function Cne(a, F) { + var m = F[2], O = m[3], H = m[1], $ = o(a[1][1 + Ie], a, H), r0 = Un(u(a[1][1 + Cr], a), O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, m[2], r0]]; + } + function Pne(a, F, m) { + var O = m[4], H = m[3], $ = o(a[1][1 + an], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, m[1], m[2], $, r0]; + } + function Dne(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + mr], a, r0), V0 = ze(u(a[1][1 + Me], a), $), Nr = o(a[1][1 + an], a, H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Nr && O === Gr ? m : [0, j0, V0, Nr, Gr]; + } + function Lne(a, F, m, O) { + var H = 2 <= F ? o(a[1][1 + L0], a, a6r) : u(a[1][1 + Vc], a); + return u(H, O); + } + function Rne(a, F, m) { + var O = 2 <= F ? o(a[1][1 + L0], a, o6r) : u(a[1][1 + Vc], a); + return u(O, m); + } + function jne(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = 0; + if (F) { + var j0 = 0; + if ($) + switch ($[1]) { + case 2: + break; + case 0: + r0 = 1, j0 = 2; + break; + default: + j0 = 1; + } + var V0 = 0; + switch (j0) { + case 2: + V0 = 1; + break; + case 0: + if (2 <= F) { + var Nr = 0, Gr = 0; + V0 = 1; + } + break; + } + if (!V0) + var Nr = 1, Gr = 0; + } else + r0 = 1; + if (r0) + var Nr = 1, Gr = 1; + var Fe = o(Gr ? a[1][1 + m0] : a[1][1 + lt], a, O); + if (H) + var _e = Nr ? u(a[1][1 + Vc], a) : o(a[1][1 + L0], a, x6r), Dn = function(ot) { + return [0, ot]; + }, yn = ee(_e, H[1], H, Dn); + else + var yn = H; + return H === yn && O === Fe ? m : [0, $, yn, Fe]; + } + function Gne(a, F, m) { + if (m[0] === 0) { + var O = m[1], H = Un(o(a[1][1 + gt], a, F), O); + return O === H ? m : [0, H]; + } + var $ = m[1], r0 = $[1]; + function j0(Nr) { + return [1, [0, r0, Nr]]; + } + var V0 = $[2]; + return te(o(a[1][1 + Nt], a, F), r0, V0, m, j0); + } + function Mne(a, F, m) { + var O = m[5], H = m[4], $ = m[3], r0 = m[1], j0 = ze(o(a[1][1 + vt], a, r0), H), V0 = ze(o(a[1][1 + Zt], a, r0), $), Nr = o(a[1][1 + s0], a, O); + return H === j0 && $ === V0 && O === Nr ? m : [0, r0, m[2], V0, j0, Nr]; + } + function Bne(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + _r], a, r0), V0 = ur(a[1][1 + du], a, H !== 0 ? 1 : 0, $), Nr = u(a[1][1 + Wu], a), Gr = ze(function(_e) { + return _u(Nr, _e); + }, H), Fe = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Gr && O === Fe ? m : [0, j0, V0, Gr, Fe]; + } + function qne(a, F, m) { + var O = m[2], H = m[1], $ = o(a[1][1 + Or], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function Une(a, F, m) { + return o(a[1][1 + Or], a, m); + } + function Hne(a, F, m) { + var O = m[2], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function Xne(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function Yne(a, F) { + var m = F[2], O = m[2], H = o(a[1][1 + s0], a, O); + return O === H ? F : [0, F[1], [0, m[1], H]]; + } + function Vne(a, F, m) { + return ur(a[1][1 + Hn], a, F, m); + } + function zne(a, F, m) { + var O = m[5], H = m[4], $ = m[3], r0 = m[2], j0 = m[1], V0 = o(a[1][1 + Vc], a, j0), Nr = ze(u(a[1][1 + V], a), r0), Gr = u(a[1][1 + ou], a), Fe = Un(function(yn) { + return _u(Gr, yn); + }, $), _e = _u(u(a[1][1 + qr], a), H), Dn = o(a[1][1 + s0], a, O); + return V0 === j0 && Nr === r0 && Fe === $ && _e === H && Dn === O ? m : [0, V0, Nr, Fe, _e, Dn]; + } + function Kne(a, F) { + return o(a[1][1 + k0], a, F); + } + function Wne(a, F) { + return o(a[1][1 + k0], a, F); + } + function Jne(a, F) { + return o(a[1][1 + lt], a, F); + } + function $ne(a, F) { + var m = F[2], O = m[2], H = o(a[1][1 + s0], a, O); + return O === H ? F : [0, F[1], [0, m[1], H]]; + } + function Zne(a, F, m) { + return m; + } + function Qne(a, F) { + return ur(a[1][1 + L0], a, f6r, F); + } + function rte(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return te(u(a[1][1 + zi], a), m, H, F, O); + } + function ete(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + xt], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + nn], a), $, F, H); + } + function nte(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + Le], a, H), r0 = ze(u(a[1][1 + nn], a), O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function tte(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + l], a, H), r0 = o(a[1][1 + s0], a, O); + return $ === H && r0 === O ? F : [0, F[1], [0, $, r0]]; + } + function ute(a, F) { + var m = F[2], O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = Un(u(a[1][1 + He], a), $), V0 = ze(u(a[1][1 + bt], a), H), Nr = ze(u(a[1][1 + W7], a), r0), Gr = o(a[1][1 + s0], a, O); + return $ === j0 && H === V0 && O === Gr && r0 === Nr ? F : [0, F[1], [0, Nr, j0, V0, Gr]]; + } + function ite(a, F, m) { + var O = m[9], H = m[8], $ = m[7], r0 = m[6], j0 = m[3], V0 = m[2], Nr = m[1], Gr = ze(u(a[1][1 + he], a), Nr), Fe = o(a[1][1 + B0], a, V0), _e = o(a[1][1 + x0], a, $), Dn = o(a[1][1 + ft], a, j0), yn = ze(u(a[1][1 + Ir], a), r0), ot = ze(u(a[1][1 + V], a), H), pt = o(a[1][1 + s0], a, O); + return Nr === Gr && V0 === Fe && j0 === Dn && r0 === yn && $ === _e && H === ot && O === pt ? m : [0, Gr, Fe, Dn, m[4], m[5], yn, _e, ot, pt, m[10]]; + } + function fte(a, F, m) { + return ur(a[1][1 + jn], a, F, m); + } + function xte(a, F, m) { + return ur(a[1][1 + me], a, F, m); + } + function ote(a, F, m) { + return ur(a[1][1 + jn], a, F, m); + } + function ate(a, F) { + if (F[0] === 0) + return F; + var m = F[1], O = o(a[1][1 + l], a, m); + return O === m ? F : [1, O]; + } + function cte(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return ee(u(a[1][1 + t0], a), H, F, O); + } + function ste(a, F) { + var m = F[2], O = F[1]; + switch (m[0]) { + case 0: + var H = function(Ze) { + return [0, O, [0, Ze]]; + }, $ = m[1]; + return ee(u(a[1][1 + s0], a), $, F, H); + case 1: + var r0 = function(Ze) { + return [0, O, [1, Ze]]; + }, j0 = m[1]; + return ee(u(a[1][1 + s0], a), j0, F, r0); + case 2: + var V0 = function(Ze) { + return [0, O, [2, Ze]]; + }, Nr = m[1]; + return ee(u(a[1][1 + s0], a), Nr, F, V0); + case 3: + var Gr = function(Ze) { + return [0, O, [3, Ze]]; + }, Fe = m[1]; + return ee(u(a[1][1 + s0], a), Fe, F, Gr); + case 4: + var _e = function(Ze) { + return [0, O, [4, Ze]]; + }, Dn = m[1]; + return ee(u(a[1][1 + s0], a), Dn, F, _e); + case 5: + var yn = function(Ze) { + return [0, O, [5, Ze]]; + }, ot = m[1]; + return ee(u(a[1][1 + s0], a), ot, F, yn); + case 6: + var pt = function(Ze) { + return [0, O, [6, Ze]]; + }, kt = m[1]; + return ee(u(a[1][1 + s0], a), kt, F, pt); + case 7: + var Kn = function(Ze) { + return [0, O, [7, Ze]]; + }, Qt = m[1]; + return ee(u(a[1][1 + s0], a), Qt, F, Kn); + case 8: + var J7 = function(Ze) { + return [0, O, [8, Ze]]; + }, $7 = m[1]; + return ee(u(a[1][1 + s0], a), $7, F, J7); + case 9: + var E7 = function(Ze) { + return [0, O, [9, Ze]]; + }, Z7 = m[1]; + return ee(u(a[1][1 + s0], a), Z7, F, E7); + case 10: + var Q7 = function(Ze) { + return [0, O, [10, Ze]]; + }, ri = m[1]; + return ee(u(a[1][1 + s0], a), ri, F, Q7); + case 11: + var ei = function(Ze) { + return [0, O, [11, Ze]]; + }, ni = m[1]; + return ee(u(a[1][1 + k], a), ni, F, ei); + case 12: + var Wi = function(Ze) { + return [0, O, [12, Ze]]; + }, tv = m[1]; + return te(u(a[1][1 + a7], a), O, tv, F, Wi); + case 13: + var uv = function(Ze) { + return [0, O, [13, Ze]]; + }, Ji = m[1]; + return te(u(a[1][1 + qr], a), O, Ji, F, uv); + case 14: + var iv = function(Ze) { + return [0, O, [14, Ze]]; + }, Gb = m[1]; + return te(u(a[1][1 + _n], a), O, Gb, F, iv); + case 15: + var Mb = function(Ze) { + return [0, O, [15, Ze]]; + }, Bb = m[1]; + return ee(u(a[1][1 + Zs], a), Bb, F, Mb); + case 16: + var qb = function(Ze) { + return [0, O, [16, Ze]]; + }, Ub = m[1]; + return te(u(a[1][1 + ou], a), O, Ub, F, qb); + case 17: + var Hb = function(Ze) { + return [0, O, [17, Ze]]; + }, Xb = m[1]; + return te(u(a[1][1 + Fn], a), O, Xb, F, Hb); + case 18: + var Yb = function(Ze) { + return [0, O, [18, Ze]]; + }, Vb = m[1]; + return te(u(a[1][1 + vr], a), O, Vb, F, Yb); + case 19: + var zb = function(Ze) { + return [0, O, [19, Ze]]; + }, Kb = m[1]; + return te(u(a[1][1 + d], a), O, Kb, F, zb); + case 20: + var Wb = function(Ze) { + return [0, O, [20, Ze]]; + }, Jb = m[1]; + return te(u(a[1][1 + en], a), O, Jb, F, Wb); + case 21: + var $b = function(Ze) { + return [0, O, [21, Ze]]; + }, Zb = m[1]; + return ee(u(a[1][1 + G], a), Zb, F, $b); + case 22: + var Qb = function(Ze) { + return [0, O, [22, Ze]]; + }, r4 = m[1]; + return ee(u(a[1][1 + o0], a), r4, F, Qb); + case 23: + var e4 = function(Ze) { + return [0, O, [23, Ze]]; + }, n4 = m[1]; + return te(u(a[1][1 + Lr], a), O, n4, F, e4); + case 24: + var t4 = function(Ze) { + return [0, O, [24, Ze]]; + }, u4 = m[1]; + return te(u(a[1][1 + _], a), O, u4, F, t4); + case 25: + var i4 = function(Ze) { + return [0, O, [25, Ze]]; + }, f4 = m[1]; + return te(u(a[1][1 + p2], a), O, f4, F, i4); + default: + var x4 = function(Ze) { + return [0, O, [26, Ze]]; + }, o4 = m[1]; + return te(u(a[1][1 + f_], a), O, o4, F, x4); + } + } + function vte(a, F, m) { + var O = m[2], H = m[1], $ = H[3], r0 = H[2], j0 = H[1], V0 = o(a[1][1 + t0], a, j0), Nr = o(a[1][1 + t0], a, r0), Gr = Un(u(a[1][1 + t0], a), $), Fe = o(a[1][1 + s0], a, O); + return V0 === j0 && Nr === r0 && Gr === $ && Fe === O ? m : [0, [0, V0, Nr, Gr], Fe]; + } + function lte(a, F, m) { + var O = m[2], H = m[1], $ = H[3], r0 = H[2], j0 = H[1], V0 = o(a[1][1 + t0], a, j0), Nr = o(a[1][1 + t0], a, r0), Gr = Un(u(a[1][1 + t0], a), $), Fe = o(a[1][1 + s0], a, O); + return V0 === j0 && Nr === r0 && Gr === $ && Fe === O ? m : [0, [0, V0, Nr, Gr], Fe]; + } + function bte(a, F) { + var m = F[2], O = F[1], H = o(a[1][1 + t0], a, O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, $]; + } + function pte(a, F) { + var m = F[2], O = F[1], H = Un(u(a[1][1 + t0], a), O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, $]; + } + function mte(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + K], a, H), r0 = o(a[1][1 + S], a, O); + return $ === H && r0 === O ? F : [0, F[1], [0, $, r0]]; + } + function _te(a, F) { + return o(a[1][1 + lt], a, F); + } + function yte(a, F) { + return o(a[1][1 + lt], a, F); + } + function hte(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + M], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + A], a), $, F, H); + } + function dte(a, F) { + var m = F[2], O = F[1], H = o(a[1][1 + K], a, O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, $]; + } + function kte(a, F) { + var m = F[2], O = F[1], H = o(a[1][1 + t0], a, O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, $]; + } + function wte(a, F, m) { + var O = m[2], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, m[1], H]; + } + function Ete(a, F, m) { + var O = m[3], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, m[1], m[2], H]; + } + function Ste(a, F, m) { + var O = m[3], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, m[1], m[2], H]; + } + function gte(a, F, m) { + var O = m[3], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, m[1], m[2], H]; + } + function Fte(a, F, m) { + var O = m[1], H = ur(a[1][1 + Fn], a, F, O); + return H === O ? m : [0, H, m[2]]; + } + function Tte(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + t0], a, $), j0 = o(a[1][1 + t0], a, H), V0 = o(a[1][1 + s0], a, O); + return r0 === $ && j0 === H && V0 === O ? m : [0, r0, j0, V0]; + } + function Ote(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + K7], a, $), j0 = ze(u(a[1][1 + e0], a), H), V0 = o(a[1][1 + s0], a, O); + return r0 === $ && j0 === H && V0 === O ? m : [0, r0, j0, V0]; + } + function Ite(a, F) { + var m = F[2], O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + x0], a, $), V0 = o(a[1][1 + c], a, H), Nr = ze(u(a[1][1 + t0], a), O), Gr = o(a[1][1 + Vc], a, r0); + return Gr === r0 && j0 === $ && V0 === H && Nr === O ? F : [0, F[1], [0, Gr, j0, V0, Nr]]; + } + function Ate(a, F) { + var m = F[2], O = m[2], H = m[1], $ = Un(u(a[1][1 + f0], a), H), r0 = o(a[1][1 + s0], a, O); + return $ === H && r0 === O ? F : [0, F[1], [0, $, r0]]; + } + function Nte(a, F) { + var m = F[2], O = m[2], H = m[1], $ = Un(u(a[1][1 + t0], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function Cte(a, F) { + return ze(u(a[1][1 + s], a), F); + } + function Pte(a, F) { + var m = F[2], O = m[2], H = o(a[1][1 + s0], a, O); + return O === H ? F : [0, F[1], [0, m[1], H]]; + } + function Dte(a, F) { + return o(a[1][1 + lt], a, F); + } + function Lte(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + K7], a, H), r0 = o(a[1][1 + Y], a, O); + return $ === H && r0 === O ? F : [0, F[1], [0, $, r0]]; + } + function Rte(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + m0], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + Bu], a), $, F, H); + } + function jte(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = u(a[1][1 + ou], a), j0 = Un(function(Gr) { + return _u(r0, Gr); + }, H), V0 = _u(u(a[1][1 + qr], a), $), Nr = o(a[1][1 + s0], a, O); + return j0 === H && V0 === $ && O === Nr ? m : [0, V0, j0, Nr]; + } + function Gte(a, F, m) { + var O = m[4], H = m[3], $ = Un(function(j0) { + switch (j0[0]) { + case 0: + var V0 = function(Kn) { + return [0, Kn]; + }, Nr = j0[1]; + return ee(u(a[1][1 + ne], a), Nr, j0, V0); + case 1: + var Gr = function(Kn) { + return [1, Kn]; + }, Fe = j0[1]; + return ee(u(a[1][1 + jr], a), Fe, j0, Gr); + case 2: + var _e = function(Kn) { + return [2, Kn]; + }, Dn = j0[1]; + return ee(u(a[1][1 + ge], a), Dn, j0, _e); + case 3: + var yn = function(Kn) { + return [3, Kn]; + }, ot = j0[1]; + return ee(u(a[1][1 + q0], a), ot, j0, yn); + default: + var pt = function(Kn) { + return [4, Kn]; + }, kt = j0[1]; + return ee(u(a[1][1 + ce], a), kt, j0, pt); + } + }, H), r0 = o(a[1][1 + s0], a, O); + return $ === H && O === r0 ? m : [0, m[1], m[2], $, r0]; + } + function Mte(a, F) { + var m = F[2], O = m[3], H = m[1], $ = H[2], r0 = H[1], j0 = ur(a[1][1 + a7], a, r0, $), V0 = o(a[1][1 + s0], a, O); + return $ === j0 && O === V0 ? F : [0, F[1], [0, [0, r0, j0], m[2], V0]]; + } + function Bte(a, F) { + var m = F[2], O = m[6], H = m[2], $ = m[1], r0 = o(a[1][1 + lt], a, $), j0 = o(a[1][1 + t0], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? F : [0, F[1], [0, r0, j0, m[3], m[4], m[5], V0]]; + } + function qte(a, F) { + var m = F[2], O = m[6], H = m[5], $ = m[3], r0 = m[2], j0 = o(a[1][1 + t0], a, r0), V0 = o(a[1][1 + t0], a, $), Nr = o(a[1][1 + c], a, H), Gr = o(a[1][1 + s0], a, O); + return j0 === r0 && V0 === $ && Nr === H && Gr === O ? F : [0, F[1], [0, m[1], j0, V0, m[4], Nr, Gr]]; + } + function Ute(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + t0], a, H), r0 = o(a[1][1 + s0], a, O); + return $ === H && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function Hte(a, F) { + var m = F[2], O = m[8], H = m[7], $ = m[2], r0 = m[1], j0 = o(a[1][1 + oe], a, r0), V0 = o(a[1][1 + $r], a, $), Nr = o(a[1][1 + c], a, H), Gr = o(a[1][1 + s0], a, O); + return j0 === r0 && V0 === $ && Nr === H && Gr === O ? F : [0, F[1], [0, j0, V0, m[3], m[4], m[5], m[6], Nr, Gr]]; + } + function Xte(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return te(u(a[1][1 + a7], a), m, H, F, O); + } + function Yte(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return te(u(a[1][1 + a7], a), m, H, F, O); + } + function Vte(a, F) { + switch (F[0]) { + case 0: + var m = function(V0) { + return [0, V0]; + }, O = F[1]; + return ee(u(a[1][1 + t0], a), O, F, m); + case 1: + var H = function(V0) { + return [1, V0]; + }, $ = F[1]; + return ee(u(a[1][1 + Br], a), $, F, H); + default: + var r0 = function(V0) { + return [2, V0]; + }, j0 = F[1]; + return ee(u(a[1][1 + Mr], a), j0, F, r0); + } + } + function zte(a, F) { + return o(a[1][1 + lt], a, F); + } + function Kte(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = $[2], j0 = r0[4], V0 = r0[3], Nr = r0[2], Gr = r0[1], Fe = m[1], _e = ze(u(a[1][1 + Hc], a), Gr), Dn = Un(u(a[1][1 + D0], a), Nr), yn = ze(u(a[1][1 + Ut], a), V0), ot = o(a[1][1 + t0], a, H), pt = ze(u(a[1][1 + V], a), Fe), kt = o(a[1][1 + s0], a, O), Kn = o(a[1][1 + s0], a, j0); + return Dn === Nr && yn === V0 && ot === H && pt === Fe && kt === O && Kn === j0 && _e === Gr ? m : [0, pt, [0, $[1], [0, _e, Dn, yn, Kn]], ot, kt]; + } + function Wte(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + l], a, H), r0 = o(a[1][1 + s0], a, O); + return $ === H && r0 === O ? F : [0, F[1], [0, $, r0]]; + } + function Jte(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + D0], a, H), r0 = o(a[1][1 + s0], a, O); + return $ === H && r0 === O ? F : [0, F[1], [0, $, r0]]; + } + function $te(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + t0], a, O), r0 = ze(u(a[1][1 + lt], a), H); + return $ === O && r0 === H ? F : [0, F[1], [0, r0, $, m[3]]]; + } + function Zte(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return te(u(a[1][1 + T], a), m, H, F, O); + } + function Qte(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + Ti], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + nn], a), $, F, H); + } + function rue(a, F, m) { + var O = m[5], H = m[4], $ = m[3], r0 = m[2], j0 = m[1], V0 = ze(u(a[1][1 + ut], a), j0), Nr = ze(u(a[1][1 + _r], a), r0), Gr = ze(u(a[1][1 + nn], a), $), Fe = o(a[1][1 + Or], a, H), _e = o(a[1][1 + s0], a, O); + return j0 === V0 && r0 === Nr && $ === Gr && H === Fe && O === _e ? m : [0, V0, Nr, Gr, Fe, _e]; + } + function eue(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return te(u(a[1][1 + T], a), m, H, F, O); + } + function nue(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + it], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + Tt], a), $, F, H); + } + function tue(a, F, m) { + var O = m[5], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + xn], a, r0), V0 = o(a[1][1 + nn], a, $), Nr = o(a[1][1 + Or], a, H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Nr && O === Gr ? m : [0, j0, V0, Nr, m[4], Gr]; + } + function uue(a, F) { + var m = F[1]; + function O($) { + return [0, m, $]; + } + var H = F[2]; + return te(u(a[1][1 + T], a), m, H, F, O); + } + function iue(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + Hs], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + Vi], a), $, F, H); + } + function fue(a, F, m) { + var O = m[5], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + hs], a, r0), V0 = o(a[1][1 + nn], a, $), Nr = o(a[1][1 + Or], a, H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Nr && O === Gr ? m : [0, j0, V0, Nr, m[4], Gr]; + } + function xue(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + nn], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + Rr], a), $, F, H); + } + function oue(a, F, m) { + var O = m[3], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, m[2], r0]; + } + function aue(a, F) { + if (F[0] === 0) { + var m = F[1], O = Un(u(a[1][1 + Vs], a), m); + return m === O ? F : [0, O]; + } + var H = F[1], $ = o(a[1][1 + q9], a, H); + return H === $ ? F : [1, $]; + } + function cue(a, F) { + var m = F[2], O = ze(u(a[1][1 + lt], a), m); + return m === O ? F : [0, F[1], O]; + } + function sue(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + lt], a, H), r0 = ze(u(a[1][1 + lt], a), O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function vue(a, F, m) { + var O = m[5], H = m[2], $ = m[1], r0 = ze(u(a[1][1 + si], a), H), j0 = ze(u(a[1][1 + Or], a), $), V0 = o(a[1][1 + s0], a, O); + return H === r0 && $ === j0 && O === V0 ? m : [0, j0, r0, m[3], m[4], V0]; + } + function lue(a, F) { + if (F[0] === 0) { + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + Or], a), O, F, m); + } + function H(r0) { + return [1, r0]; + } + var $ = F[1]; + return ee(u(a[1][1 + nn], a), $, F, H); + } + function bue(a, F, m) { + var O = m[3], H = m[2], $ = o(a[1][1 + M9], a, H), r0 = o(a[1][1 + s0], a, O); + return $ === H && r0 === O ? m : [0, m[1], $, r0]; + } + function pue(a, F) { + return o(a[1][1 + lt], a, F); + } + function mue(a, F) { + var m = F[2], O = m[1], H = o(a[1][1 + H1], a, O); + return O === H ? F : [0, F[1], [0, H, m[2]]]; + } + function _ue(a, F) { + var m = F[2], O = m[1], H = o(a[1][1 + H1], a, O); + return O === H ? F : [0, F[1], [0, H, m[2]]]; + } + function yue(a, F) { + var m = F[2], O = m[1], H = o(a[1][1 + H1], a, O); + return O === H ? F : [0, F[1], [0, H, m[2]]]; + } + function hue(a, F) { + var m = F[2][1], O = o(a[1][1 + H1], a, m); + return m === O ? F : [0, F[1], [0, O]]; + } + function due(a, F) { + var m = F[3], O = F[1], H = Un(u(a[1][1 + vi], a), O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, F[2], $]; + } + function kue(a, F) { + var m = F[4], O = F[1]; + if (O[0] === 0) + var H = function(_e) { + return [0, _e]; + }, $ = O[1], r0 = u(a[1][1 + vi], a), Gr = ee(function(_e) { + return Un(r0, _e); + }, $, O, H); + else + var j0 = function(_e) { + return [1, _e]; + }, V0 = O[1], Nr = u(a[1][1 + s2], a), Gr = ee(function(_e) { + return Un(Nr, _e); + }, V0, O, j0); + var Fe = o(a[1][1 + s0], a, m); + return O === Gr && m === Fe ? F : [0, Gr, F[2], F[3], Fe]; + } + function wue(a, F) { + var m = F[4], O = F[1], H = Un(u(a[1][1 + H9], a), O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, F[2], F[3], $]; + } + function Eue(a, F) { + var m = F[4], O = F[1], H = Un(u(a[1][1 + cb], a), O), $ = o(a[1][1 + s0], a, m); + return O === H && m === $ ? F : [0, H, F[2], F[3], $]; + } + function Sue(a, F) { + var m = F[2], O = F[1]; + switch (m[0]) { + case 0: + var H = function(_e) { + return [0, O, [0, _e]]; + }, $ = m[1]; + return ee(u(a[1][1 + sb], a), $, F, H); + case 1: + var r0 = function(_e) { + return [0, O, [1, _e]]; + }, j0 = m[1]; + return ee(u(a[1][1 + X9], a), j0, F, r0); + case 2: + var V0 = function(_e) { + return [0, O, [2, _e]]; + }, Nr = m[1]; + return ee(u(a[1][1 + U9], a), Nr, F, V0); + default: + var Gr = function(_e) { + return [0, O, [3, _e]]; + }, Fe = m[1]; + return ee(u(a[1][1 + zs], a), Fe, F, Gr); + } + } + function gue(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = ur(a[1][1 + L0], a, i6r, $), j0 = o(a[1][1 + Y9], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function Fue(a, F, m) { + var O = m[1], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, H]; + } + function Tue(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + Or], a, $), j0 = o(a[1][1 + _r], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function Oue(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = ur(a[1][1 + L0], a, u6r, $), j0 = o(a[1][1 + l], a, H), V0 = o(a[1][1 + s0], a, O); + return r0 === $ && j0 === H && V0 === O ? m : [0, r0, j0, V0]; + } + function Iue(a, F, m) { + return ur(a[1][1 + c0], a, F, m); + } + function Aue(a, F, m) { + var O = m[2], H = m[1], $ = o(a[1][1 + l], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function Nue(a, F, m) { + var O = m[4], H = m[2], $ = _u(u(a[1][1 + zi], a), H), r0 = o(a[1][1 + s0], a, O); + return $ === H && O === r0 ? m : [0, m[1], $, m[3], r0]; + } + function Cue(a, F, m) { + return ur(a[1][1 + Hn], a, F, m); + } + function Pue(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + he], a, r0), V0 = o(a[1][1 + l], a, $), Nr = ze(u(a[1][1 + Ir], a), H), Gr = o(a[1][1 + s0], a, O); + return j0 === r0 && V0 === $ && Nr === H && Gr === O ? m : [0, j0, V0, Nr, Gr]; + } + function Due(a, F) { + switch (F[0]) { + case 0: + var m = F[1], O = m[2], H = m[1], $ = ur(a[1][1 + vb], a, H, O); + return $ === O ? F : [0, [0, H, $]]; + case 1: + var r0 = F[1], j0 = r0[2], V0 = r0[1], Nr = ur(a[1][1 + lb], a, V0, j0); + return Nr === j0 ? F : [1, [0, V0, Nr]]; + case 2: + var Gr = F[1], Fe = Gr[2], _e = Gr[1], Dn = ur(a[1][1 + v2], a, _e, Fe); + return Dn === Fe ? F : [2, [0, _e, Dn]]; + case 3: + var yn = F[1], ot = o(a[1][1 + t0], a, yn); + return ot === yn ? F : [3, ot]; + case 4: + var pt = F[1], kt = pt[2], Kn = pt[1], Qt = ur(a[1][1 + c0], a, Kn, kt); + return Qt === kt ? F : [4, [0, Kn, Qt]]; + case 5: + var J7 = F[1], $7 = J7[2], E7 = J7[1], Z7 = ur(a[1][1 + Er], a, E7, $7); + return Z7 === $7 ? F : [5, [0, E7, Z7]]; + default: + var Q7 = F[1], ri = Q7[2], ei = Q7[1], ni = ur(a[1][1 + Hn], a, ei, ri); + return ni === ri ? F : [6, [0, ei, ni]]; + } + } + function Lue(a, F, m) { + var O = m[5], H = m[3], $ = m[2], r0 = ze(u(a[1][1 + si], a), H), j0 = ze(u(a[1][1 + Z9], a), $), V0 = o(a[1][1 + s0], a, O); + return H === r0 && $ === j0 && O === V0 ? m : [0, m[1], j0, r0, m[4], V0]; + } + function Rue(a, F, m) { + var O = m[7], H = m[6], $ = m[5], r0 = m[4], j0 = m[3], V0 = m[2], Nr = m[1], Gr = o(a[1][1 + hb], a, Nr), Fe = ze(u(a[1][1 + V], a), V0), _e = _u(u(a[1][1 + qr], a), j0), Dn = u(a[1][1 + ou], a), yn = ze(function(Qt) { + return _u(Dn, Qt); + }, r0), ot = u(a[1][1 + ou], a), pt = Un(function(Qt) { + return _u(ot, Qt); + }, $), kt = ze(u(a[1][1 + l2], a), H), Kn = o(a[1][1 + s0], a, O); + return Gr === Nr && Fe === V0 && _e === j0 && yn === r0 && pt === $ && kt === H && Kn === O ? m : [0, Gr, Fe, _e, yn, pt, kt, Kn]; + } + function jue(a, F, m) { + var O = m[1], H = o(a[1][1 + s0], a, O); + return O === H ? m : [0, H]; + } + function Gue(a, F, m) { + var O = m[2], H = m[1], $ = ze(u(a[1][1 + Q0], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function Mue(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + _r], a, r0), V0 = o(a[1][1 + nn], a, $), Nr = o(a[1][1 + nn], a, H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Nr && O === Gr ? m : [0, j0, V0, Nr, Gr]; + } + function Bue(a, F, m) { + return m; + } + function que(a, F, m) { + var O = m[6], H = m[5], $ = m[3], r0 = m[2], j0 = m[1], V0 = o(a[1][1 + ar], a, j0), Nr = o(a[1][1 + _b], a, r0), Gr = o(a[1][1 + x0], a, $), Fe = o(a[1][1 + c], a, H), _e = o(a[1][1 + s0], a, O); + return j0 === V0 && r0 === Nr && Gr === $ && Fe === H && _e === O ? m : [0, V0, Nr, Gr, m[4], Fe, _e]; + } + function Uue(a, F) { + if (typeof F == "number") + return F; + var m = F[1], O = o(a[1][1 + nn], a, m); + return m === O ? F : [0, O]; + } + function Hue(a, F, m) { + var O = m[6], H = m[5], $ = m[3], r0 = m[2], j0 = m[1], V0 = o(a[1][1 + oe], a, j0), Nr = o(a[1][1 + _b], a, r0), Gr = o(a[1][1 + x0], a, $), Fe = o(a[1][1 + c], a, H), _e = o(a[1][1 + s0], a, O); + return j0 === V0 && r0 === Nr && Gr === $ && Fe === H && _e === O ? m : [0, V0, Nr, Gr, m[4], Fe, _e]; + } + function Xue(a, F, m) { + var O = m[6], H = m[5], $ = m[3], r0 = m[2], j0 = o(a[1][1 + oe], a, r0), V0 = _u(u(a[1][1 + me], a), $), Nr = Un(u(a[1][1 + db], a), H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Nr && O === Gr ? m : [0, m[1], j0, V0, m[4], Nr, Gr]; + } + function Yue(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + m0], a, H), r0 = ze(u(a[1][1 + e0], a), O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function Vue(a, F) { + var m = F[2], O = m[2], H = m[1], $ = Un(u(a[1][1 + r_], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function zue(a, F) { + switch (F[0]) { + case 0: + var m = F[1], O = m[1], H = function(yn) { + return [0, [0, O, yn]]; + }, $ = m[2]; + return te(u(a[1][1 + Xc], a), O, $, F, H); + case 1: + var r0 = F[1], j0 = r0[1], V0 = function(yn) { + return [1, [0, j0, yn]]; + }, Nr = r0[2]; + return te(u(a[1][1 + yb], a), j0, Nr, F, V0); + default: + var Gr = F[1], Fe = Gr[1], _e = function(yn) { + return [2, [0, Fe, yn]]; + }, Dn = Gr[2]; + return te(u(a[1][1 + Q9], a), Fe, Dn, F, _e); + } + } + function Kue(a, F) { + var m = F[2], O = m[2], H = m[1], $ = o(a[1][1 + nn], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function Wue(a, F) { + var m = F[2], O = m[2], H = m[1], $ = Un(u(a[1][1 + Ks], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function Jue(a, F) { + return ur(a[1][1 + L0], a, t6r, F); + } + function $ue(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + nn], a, $), j0 = ze(u(a[1][1 + e0], a), H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function Zue(a, F, m) { + var O = m[7], H = m[6], $ = m[5], r0 = m[4], j0 = m[3], V0 = m[2], Nr = m[1], Gr = ze(u(a[1][1 + hb], a), Nr), Fe = o(a[1][1 + n_], a, V0), _e = ze(u(a[1][1 + V], a), j0), Dn = u(a[1][1 + Yc], a), yn = ze(function(Kn) { + return _u(Dn, Kn); + }, r0), ot = ze(u(a[1][1 + l2], a), $), pt = Un(u(a[1][1 + db], a), H), kt = o(a[1][1 + s0], a, O); + return Nr === Gr && V0 === Fe && r0 === yn && $ === ot && H === pt && O === kt && j0 === _e ? m : [0, Gr, Fe, _e, yn, ot, pt, kt]; + } + function Que(a, F, m) { + return ur(a[1][1 + ds], a, F, m); + } + function r7e(a, F, m) { + return ur(a[1][1 + ds], a, F, m); + } + function e7e(a, F, m) { + var O = m[3], H = m[2], $ = m[1], r0 = ze(u(a[1][1 + t_], a), $), j0 = o(a[1][1 + u_], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, r0, j0, V0]; + } + function n7e(a, F) { + return _u(u(a[1][1 + zi], a), F); + } + function t7e(a, F) { + if (F[0] === 0) { + var m = F[1], O = o(a[1][1 + t0], a, m); + return O === m ? F : [0, O]; + } + var H = F[1], $ = H[2][1], r0 = o(a[1][1 + s0], a, $); + return $ === r0 ? F : [1, [0, H[1], [0, r0]]]; + } + function u7e(a, F) { + var m = F[2], O = m[2], H = m[1], $ = Un(u(a[1][1 + i_], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function i7e(a, F, m) { + var O = m[1], H = ur(a[1][1 + kb], a, F, O); + return O === H ? m : [0, H, m[2], m[3]]; + } + function f7e(a, F) { + var m = F[2], O = m[2], H = m[1], $ = Un(u(a[1][1 + Ys], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? F : [0, F[1], [0, $, r0]]; + } + function x7e(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = m[1], j0 = o(a[1][1 + nn], a, r0), V0 = ze(u(a[1][1 + b2], a), $), Nr = o(a[1][1 + Ws], a, H), Gr = o(a[1][1 + s0], a, O); + return r0 === j0 && $ === V0 && H === Nr && O === Gr ? m : [0, j0, V0, Nr, Gr]; + } + function o7e(a, F, m) { + var O = m[2], H = m[1], $ = ze(u(a[1][1 + Q0], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function a7e(a, F, m) { + var O = m[2], H = m[1], $ = o(a[1][1 + Tr], a, H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function c7e(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = o(a[1][1 + nn], a, $), j0 = o(a[1][1 + nn], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, m[1], r0, j0, V0]; + } + function s7e(a, F, m) { + var O = m[4], H = m[3], $ = m[2], r0 = o(a[1][1 + m2], a, $), j0 = o(a[1][1 + nn], a, H), V0 = o(a[1][1 + s0], a, O); + return $ === r0 && H === j0 && O === V0 ? m : [0, m[1], r0, j0, V0]; + } + function v7e(a, F, m) { + return ur(a[1][1 + jn], a, F, m); + } + function l7e(a, F) { + switch (F[0]) { + case 0: + var m = function(r0) { + return [0, r0]; + }, O = F[1]; + return ee(u(a[1][1 + nn], a), O, F, m); + case 1: + var H = function(r0) { + return [1, r0]; + }, $ = F[1]; + return ee(u(a[1][1 + Rr], a), $, F, H); + default: + return F; + } + } + function b7e(a, F, m) { + var O = m[2], H = m[1], $ = Un(u(a[1][1 + a_], a), H), r0 = o(a[1][1 + s0], a, O); + return H === $ && O === r0 ? m : [0, $, r0]; + } + function p7e(a, F) { + var m = F[2], O = F[1]; + switch (m[0]) { + case 0: + var H = function(Ue) { + return [0, O, [0, Ue]]; + }, $ = m[1]; + return te(u(a[1][1 + y2], a), O, $, F, H); + case 1: + var r0 = function(Ue) { + return [0, O, [1, Ue]]; + }, j0 = m[1]; + return te(u(a[1][1 + o_], a), O, j0, F, r0); + case 2: + var V0 = function(Ue) { + return [0, O, [2, Ue]]; + }, Nr = m[1]; + return te(u(a[1][1 + _2], a), O, Nr, F, V0); + case 3: + var Gr = function(Ue) { + return [0, O, [3, Ue]]; + }, Fe = m[1]; + return te(u(a[1][1 + x_], a), O, Fe, F, Gr); + case 4: + var _e = function(Ue) { + return [0, O, [4, Ue]]; + }, Dn = m[1]; + return te(u(a[1][1 + kb], a), O, Dn, F, _e); + case 5: + var yn = function(Ue) { + return [0, O, [5, Ue]]; + }, ot = m[1]; + return te(u(a[1][1 + e_], a), O, ot, F, yn); + case 6: + var pt = function(Ue) { + return [0, O, [6, Ue]]; + }, kt = m[1]; + return te(u(a[1][1 + Gn], a), O, kt, F, pt); + case 7: + var Kn = function(Ue) { + return [0, O, [7, Ue]]; + }, Qt = m[1]; + return te(u(a[1][1 + mb], a), O, Qt, F, Kn); + case 8: + var J7 = function(Ue) { + return [0, O, [8, Ue]]; + }, $7 = m[1]; + return te(u(a[1][1 + Zn], a), O, $7, F, J7); + case 9: + var E7 = function(Ue) { + return [0, O, [9, Ue]]; + }, Z7 = m[1]; + return te(u(a[1][1 + Yi], a), O, Z7, F, E7); + case 10: + var Q7 = function(Ue) { + return [0, O, [10, Ue]]; + }, ri = m[1]; + return ee(u(a[1][1 + lt], a), ri, F, Q7); + case 11: + var ei = function(Ue) { + return [0, O, [11, Ue]]; + }, ni = m[1]; + return ee(o(a[1][1 + Ft], a, O), ni, F, ei); + case 12: + var Wi = function(Ue) { + return [0, O, [12, Ue]]; + }, tv = m[1]; + return te(u(a[1][1 + Ge], a), O, tv, F, Wi); + case 13: + var uv = function(Ue) { + return [0, O, [13, Ue]]; + }, Ji = m[1]; + return te(u(a[1][1 + Kr], a), O, Ji, F, uv); + case 14: + var iv = function(Ue) { + return [0, O, [14, Ue]]; + }, Gb = m[1]; + return te(u(a[1][1 + J0], a), O, Gb, F, iv); + case 15: + var Mb = function(Ue) { + return [0, O, [15, Ue]]; + }, Bb = m[1]; + return te(u(a[1][1 + X0], a), O, Bb, F, Mb); + case 16: + var qb = function(Ue) { + return [0, O, [16, Ue]]; + }, Ub = m[1]; + return te(u(a[1][1 + u0], a), O, Ub, F, qb); + case 17: + var Hb = function(Ue) { + return [0, O, [17, Ue]]; + }, Xb = m[1]; + return te(u(a[1][1 + U], a), O, Xb, F, Hb); + case 18: + var Yb = function(Ue) { + return [0, O, [18, Ue]]; + }, Vb = m[1]; + return te(u(a[1][1 + I], a), O, Vb, F, Yb); + case 19: + var zb = function(Ue) { + return [0, O, [19, Ue]]; + }, Kb = m[1]; + return te(u(a[1][1 + Fr], a), O, Kb, F, zb); + case 20: + var Wb = function(Ue) { + return [0, O, [20, Ue]]; + }, Jb = m[1]; + return ee(o(a[1][1 + $0], a, O), Jb, F, Wb); + case 21: + var $b = function(Ue) { + return [0, O, [21, Ue]]; + }, Zb = m[1]; + return te(u(a[1][1 + yr], a), O, Zb, F, $b); + case 22: + var Qb = function(Ue) { + return [0, O, [22, Ue]]; + }, r4 = m[1]; + return te(u(a[1][1 + Wr], a), O, r4, F, Qb); + case 23: + var e4 = function(Ue) { + return [0, O, [23, Ue]]; + }, n4 = m[1]; + return te(u(a[1][1 + W0], a), O, n4, F, e4); + case 24: + var t4 = function(Ue) { + return [0, O, [24, Ue]]; + }, u4 = m[1]; + return te(u(a[1][1 + X], a), O, u4, F, t4); + case 25: + var i4 = function(Ue) { + return [0, O, [25, Ue]]; + }, f4 = m[1]; + return te(u(a[1][1 + R0], a), O, f4, F, i4); + case 26: + var x4 = function(Ue) { + return [0, O, [26, Ue]]; + }, o4 = m[1]; + return te(u(a[1][1 + U0], a), O, o4, F, x4); + case 27: + var Ze = function(Ue) { + return [0, O, [27, Ue]]; + }, AR = m[1]; + return te(u(a[1][1 + g0], a), O, AR, F, Ze); + case 28: + var NR = function(Ue) { + return [0, O, [28, Ue]]; + }, CR = m[1]; + return te(u(a[1][1 + w], a), O, CR, F, NR); + case 29: + var PR = function(Ue) { + return [0, O, [29, Ue]]; + }, DR = m[1]; + return te(u(a[1][1 + E], a), O, DR, F, PR); + default: + var LR = function(Ue) { + return [0, O, [30, Ue]]; + }, RR = m[1]; + return te(u(a[1][1 + e], a), O, RR, F, LR); + } + } + function m7e(a, F) { + var m = F[2], O = F[1], H = Un(u(a[1][1 + Y1], a), O), $ = Un(u(a[1][1 + Y1], a), m); + return O === H && m === $ ? F : [0, H, $, F[3]]; + } + var _7e = 8; + function y7e(a, F) { + return F; + } + function h7e(a, F) { + var m = F[2], O = F[1]; + switch (m[0]) { + case 0: + var H = function(Oe) { + return [0, O, [0, Oe]]; + }, $ = m[1]; + return te(u(a[1][1 + zi], a), O, $, F, H); + case 1: + var r0 = function(Oe) { + return [0, O, [1, Oe]]; + }, j0 = m[1]; + return te(u(a[1][1 + Js], a), O, j0, F, r0); + case 2: + var V0 = function(Oe) { + return [0, O, [2, Oe]]; + }, Nr = m[1]; + return te(u(a[1][1 + V1], a), O, Nr, F, V0); + case 3: + var Gr = function(Oe) { + return [0, O, [3, Oe]]; + }, Fe = m[1]; + return te(u(a[1][1 + pb], a), O, Fe, F, Gr); + case 4: + var _e = function(Oe) { + return [0, O, [4, Oe]]; + }, Dn = m[1]; + return te(u(a[1][1 + bb], a), O, Dn, F, _e); + case 5: + var yn = function(Oe) { + return [0, O, [5, Oe]]; + }, ot = m[1]; + return te(u(a[1][1 + v2], a), O, ot, F, yn); + case 6: + var pt = function(Oe) { + return [0, O, [6, Oe]]; + }, kt = m[1]; + return te(u(a[1][1 + X1], a), O, kt, F, pt); + case 7: + var Kn = function(Oe) { + return [0, O, [7, Oe]]; + }, Qt = m[1]; + return te(u(a[1][1 + lb], a), O, Qt, F, Kn); + case 8: + var J7 = function(Oe) { + return [0, O, [8, Oe]]; + }, $7 = m[1]; + return te(u(a[1][1 + $9], a), O, $7, F, J7); + case 9: + var E7 = function(Oe) { + return [0, O, [9, Oe]]; + }, Z7 = m[1]; + return te(u(a[1][1 + J9], a), O, Z7, F, E7); + case 10: + var Q7 = function(Oe) { + return [0, O, [10, Oe]]; + }, ri = m[1]; + return te(u(a[1][1 + W9], a), O, ri, F, Q7); + case 11: + var ei = function(Oe) { + return [0, O, [11, Oe]]; + }, ni = m[1]; + return te(u(a[1][1 + K9], a), O, ni, F, ei); + case 12: + var Wi = function(Oe) { + return [0, O, [33, Oe]]; + }, tv = m[1]; + return te(u(a[1][1 + Er], a), O, tv, F, Wi); + case 13: + var uv = function(Oe) { + return [0, O, [13, Oe]]; + }, Ji = m[1]; + return te(u(a[1][1 + vb], a), O, Ji, F, uv); + case 14: + var iv = function(Oe) { + return [0, O, [14, Oe]]; + }, Gb = m[1]; + return te(u(a[1][1 + z9], a), O, Gb, F, iv); + case 15: + var Mb = function(Oe) { + return [0, O, [15, Oe]]; + }, Bb = m[1]; + return te(u(a[1][1 + V9], a), O, Bb, F, Mb); + case 16: + var qb = function(Oe) { + return [0, O, [16, Oe]]; + }, Ub = m[1]; + return te(u(a[1][1 + ab], a), O, Ub, F, qb); + case 17: + var Hb = function(Oe) { + return [0, O, [17, Oe]]; + }, Xb = m[1]; + return te(u(a[1][1 + B9], a), O, Xb, F, Hb); + case 18: + var Yb = function(Oe) { + return [0, O, [18, Oe]]; + }, Vb = m[1]; + return te(u(a[1][1 + c2], a), O, Vb, F, Yb); + case 19: + var zb = function(Oe) { + return [0, O, [19, Oe]]; + }, Kb = m[1]; + return te(u(a[1][1 + Xs], a), O, Kb, F, zb); + case 20: + var Wb = function(Oe) { + return [0, O, [20, Oe]]; + }, Jb = m[1]; + return te(u(a[1][1 + dt], a), O, Jb, F, Wb); + case 21: + var $b = function(Oe) { + return [0, O, [21, Oe]]; + }, Zb = m[1]; + return te(u(a[1][1 + Au], a), O, Zb, F, $b); + case 22: + var Qb = function(Oe) { + return [0, O, [22, Oe]]; + }, r4 = m[1]; + return te(u(a[1][1 + ln], a), O, r4, F, Qb); + case 23: + var e4 = function(Oe) { + return [0, O, [23, Oe]]; + }, n4 = m[1]; + return te(u(a[1][1 + wn], a), O, n4, F, e4); + case 24: + var t4 = function(Oe) { + return [0, O, [24, Oe]]; + }, u4 = m[1]; + return te(u(a[1][1 + Ct], a), O, u4, F, t4); + case 25: + var i4 = function(Oe) { + return [0, O, [25, Oe]]; + }, f4 = m[1]; + return te(u(a[1][1 + qt], a), O, f4, F, i4); + case 26: + var x4 = function(Oe) { + return [0, O, [26, Oe]]; + }, o4 = m[1]; + return te(u(a[1][1 + Cn], a), O, o4, F, x4); + case 27: + var Ze = function(Oe) { + return [0, O, [27, Oe]]; + }, AR = m[1]; + return te(u(a[1][1 + ir], a), O, AR, F, Ze); + case 28: + var NR = function(Oe) { + return [0, O, [28, Oe]]; + }, CR = m[1]; + return te(u(a[1][1 + Jr], a), O, CR, F, NR); + case 29: + var PR = function(Oe) { + return [0, O, [29, Oe]]; + }, DR = m[1]; + return te(u(a[1][1 + or], a), O, DR, F, PR); + case 30: + var LR = function(Oe) { + return [0, O, [30, Oe]]; + }, RR = m[1]; + return te(u(a[1][1 + E0], a), O, RR, F, LR); + case 31: + var Ue = function(Oe) { + return [0, O, [31, Oe]]; + }, d7e = m[1]; + return te(u(a[1][1 + w0], a), O, d7e, F, Ue); + case 32: + var k7e = function(Oe) { + return [0, O, [32, Oe]]; + }, w7e = m[1]; + return te(u(a[1][1 + c0], a), O, w7e, F, k7e); + case 33: + var E7e = function(Oe) { + return [0, O, [33, Oe]]; + }, S7e = m[1]; + return te(u(a[1][1 + Er], a), O, S7e, F, E7e); + case 34: + var g7e = function(Oe) { + return [0, O, [34, Oe]]; + }, F7e = m[1]; + return te(u(a[1][1 + T], a), O, F7e, F, g7e); + case 35: + var T7e = function(Oe) { + return [0, O, [35, Oe]]; + }, O7e = m[1]; + return te(u(a[1][1 + x], a), O, O7e, F, T7e); + default: + var I7e = function(Oe) { + return [0, O, [36, Oe]]; + }, A7e = m[1]; + return te(u(a[1][1 + i], a), O, A7e, F, I7e); + } + } + return jN(t, [0, qL, function(a, F) { + var m = F[2], O = m[3], H = m[2], $ = m[1], r0 = o(a[1][1 + _0], a, $), j0 = o(a[1][1 + s0], a, H), V0 = Un(u(a[1][1 + Y1], a), O); + return $ === r0 && H === j0 && O === V0 ? F : [0, F[1], [0, r0, j0, V0]]; + }, Or, h7e, Y1, y7e, s0, _7e, ze, hr, hr, m7e, nn, p7e, y2, b7e, a_, l7e, o_, v7e, _2, s7e, x_, c7e, zi, a7e, Js, o7e, kb, x7e, Ws, f7e, $0, i7e, b2, u7e, i_, t7e, u_, n7e, z1, e7e, V1, r7e, e_, Que, ds, Zue, Yc, $ue, hb, Jue, n_, Wue, db, Kue, Ks, zue, l2, Vue, r_, Yue, Xc, Xue, yb, Hue, _b, Uue, Q9, que, Gn, Bue, mb, Mue, pb, Gue, bb, jue, v2, Rue, X1, Lue, Z9, Due, lb, Pue, $9, Cue, J9, Nue, W9, Aue, K9, Iue, vb, Oue, z9, Tue, V9, Fue, ab, gue, Y9, Sue, sb, Eue, X9, wue, U9, kue, zs, due, vi, hue, cb, yue, H9, _ue, s2, mue, H1, pue, B9, bue, M9, lue, c2, vue, Vs, sue, q9, cue, si, aue, Xs, oue, Ys, xue, Au, fue, hs, iue, Hs, uue, ln, tue, xn, nue, it, eue, dt, rue, ut, Qte, Ti, Zte, D0, $te, Ut, Jte, Hc, Wte, a7, Kte, Q0, zte, $r, Vte, Br, Yte, Mr, Xte, ne, Hte, jr, Ute, ge, qte, ce, Bte, q0, Mte, qr, Gte, _n, jte, K7, Rte, Bu, Lte, Y, Dte, s, Pte, c, Cte, e0, Nte, V, Ate, f0, Ite, ou, Ote, Fn, Tte, vr, Fte, Lr, gte, _, Ste, p2, Ete, f_, wte, k, kte, G, dte, K, hte, M, yte, S, _te, A, mte, o0, pte, Zs, bte, d, lte, en, vte, t0, ste, l, cte, x0, ate, wn, ote, Zn, xte, me, fte, jn, ite, B0, ute, W7, tte, He, nte, ft, ete, xt, rte, he, Qne, Yi, Zne, lt, $ne, k0, Jne, m0, Wne, Vc, Kne, Hn, zne, Cn, Vne, ar, Yne, On, Xne, Ft, Hne, du, Une, Wu, qne, Ct, Bne, qt, Mne, vt, Gne, gt, jne, Zt, Rne, Nt, Lne, Ge, Dne, Kr, Pne, mr, Cne, Me, Nne, Cr, Ane, Sr, Ine, Je, One, Ne, Tne, vn, Fne, kn, gne, rn, Sne, cn, IR, Ae, jb, an, Rb, We, nv, re, Lb, F0, ev, Ie, Ki, ve, w7, xe, Ii, Re, wu, sr, ku, Ur, OR, Pr, TR, K0, Db, h0, FR, ir, gR, J0, Pb, X0, SR, u0, ER, yr, wR, I0, E2, y0, kR, D, y_, P0, dR, U, hR, I, Cb, Fr, yR, Qr, __, oe, _R, be, mR, ae, Nb, pe, pR, Er, bR, Le, lR, p, Ab, t_, m_, Vi, vR, Tt, p_, $s, Ib, m2, b_, er, sR, L0, l_, rr, cR, T0, Ob, S0, v_, Q, Tb, L, rv, i0, aR, l0, oR, v0, s_, P, Mn, fe, xR, M0, Fb, O0, fR, b0, gb, p0, iR, Z, Sb, K1, uR, B, Q1, Ir, tR, _r, w2, bt, nR, Jr, k2, Wr, eR, _0, c_, Tr, rR, Hr, QL, Rr, d2, fr, ZL, W0, $L, or, Eb, Ar, JL, X, wb, R0, WL, b, Z1, U0, KL, E0, $1, w0, zL, g0, h2, w, VL, E, YL, T, Oi, y, XL, x, J1, i, HL, c0, W1, e, UL]), function(a, F) { + return jp(F, t); + }; + }); + function X00(t) { + switch (t[0]) { + case 0: + return 1; + case 3: + return 3; + default: + return 2; + } + } + function Y00(t, n) { + u(f(t), O6r), o(f(t), A6r, I6r); + var e = n[1]; + o(f(t), N6r, e), u(f(t), C6r), u(f(t), P6r), o(f(t), L6r, D6r); + var i = n[2]; + return o(f(t), R6r, i), u(f(t), j6r), u(f(t), G6r); + } + var V00 = function t(n, e) { + return t.fun(n, e); + }, Fee = function t(n) { + return t.fun(n); + }; + N(V00, function(t, n) { + u(f(t), B6r), o(f(t), U6r, q6r); + var e = n[1]; + if (e) { + g(t, H6r); + var i = e[1]; + switch (i[0]) { + case 0: + u(f(t), m6r); + var x = i[1]; + o(f(t), _6r, x), u(f(t), y6r); + break; + case 1: + u(f(t), h6r); + var c = i[1]; + o(f(t), d6r, c), u(f(t), k6r); + break; + case 2: + u(f(t), w6r); + var s = i[1]; + o(f(t), E6r, s), u(f(t), S6r); + break; + default: + u(f(t), g6r); + var p = i[1]; + o(f(t), F6r, p), u(f(t), T6r); + } + g(t, X6r); + } else + g(t, Y6r); + return u(f(t), V6r), u(f(t), z6r), o(f(t), W6r, K6r), Y00(t, n[2]), u(f(t), J6r), u(f(t), $6r), o(f(t), Q6r, Z6r), Y00(t, n[3]), u(f(t), rpr), u(f(t), epr); + }), N(Fee, function(t) { + return o(C0(M6r), V00, t); + }); + function yt(t, n) { + return [0, t[1], t[2], n[3]]; + } + function ps(t, n) { + var e = t[1] - n[1] | 0; + return e === 0 ? t[2] - n[2] | 0 : e; + } + function z00(t, n) { + var e = n[1], i = t[1]; + if (i) + if (e) + var x = e[1], c = i[1], s = X00(x), p = X00(c) - s | 0, T = p === 0 ? Ee(c[1], x[1]) : p; + else + var T = -1; + else + var y = e && 1, T = y; + if (T === 0) { + var E = ps(t[2], n[2]); + return E === 0 ? ps(t[3], n[3]) : E; + } + return T; + } + function Wv(t, n) { + return z00(t, n) === 0 ? 1 : 0; + } + var WD = function t(n, e, i) { + return t.fun(n, e, i); + }, Tee = Rp(upr, function(t) { + var n = NN(t, tpr)[35], e = LN(t, 0, 0, npr, KD, 1)[1]; + return zz(t, n, function(i, x) { + return 0; + }), function(i, x) { + var c = jp(x, t); + return u(e, c), RN(x, c, t); + }; + }); + N(WD, function(t, n, e) { + var i = e[2]; + switch (i[0]) { + case 0: + var x = i[1][1]; + return le(function(s, p) { + var y = p[0] === 0 ? p[1][2][2] : p[1][2][1]; + return ur(WD, t, s, y); + }, n, x); + case 1: + var c = i[1][1]; + return le(function(s, p) { + return p[0] === 2 ? s : ur(WD, t, s, p[1][2][1]); + }, n, c); + case 2: + return o(t, n, i[1][1]); + default: + return n; + } + }); + function Rc(t, n) { + return [0, n[1], [0, n[2], t]]; + } + function K00(t, n, e) { + var i = t && t[1], x = n && n[1]; + return [0, i, x, e]; + } + function lr(t, n, e) { + var i = t && t[1], x = n && n[1]; + return !i && !x ? x : [0, K00([0, i], [0, x], 0)]; + } + function yu(t, n, e, i) { + var x = t && t[1], c = n && n[1]; + return !x && !c && !e ? e : [0, K00([0, x], [0, c], e)]; + } + function y7(t, n) { + if (t) { + if (n) { + var e = n[1], i = t[1], x = [0, on(i[2], e[2])]; + return lr([0, on(e[1], i[1])], x, 0); + } + var c = t; + } else + var c = n; + return c; + } + function JD(t, n) { + if (n) { + if (t) { + var e = n[1], i = t[1], x = i[3], c = [0, on(i[2], e[2])]; + return yu([0, on(e[1], i[1])], c, x, 0); + } + var s = n[1]; + return yu([0, s[1]], [0, s[2]], 0, 0); + } + return t; + } + function Jv(t, n) { + for (var e = t, i = n; ; ) { + if (typeof e == "number") + return i; + if (e[0] === 0) + return [0, e[1], 0, i]; + var x = [0, e[2], e[4], i], e = e[3], i = x; + } + } + function W00(t, n) { + if (t) + var e = Jv(t[2], t[3]), i = function(c) { + return W00(e, c); + }, x = [0, t[1], i]; + else + var x = t; + return x; + } + function Oee(t) { + var n = Jv(t, 0); + return function(e) { + return W00(n, e); + }; + } + function ms(t) { + return typeof t == "number" ? 0 : t[0] === 0 ? 1 : t[1]; + } + function Iee(t) { + return [0, t]; + } + function Y7(t, n, e) { + var i = 0; + if (typeof t == "number") { + if (typeof e == "number") + return [0, n]; + e[0] === 1 && (i = 1); + } else if (t[0] === 0) + typeof e != "number" && e[0] === 1 && (i = 1); + else { + var x = t[1]; + if (typeof e != "number" && e[0] === 1) { + var c = e[1], s = c <= x ? x + 1 | 0 : c + 1 | 0; + return [1, s, n, t, e]; + } + var p = x; + i = 2; + } + switch (i) { + case 1: + var p = e[1]; + break; + case 0: + return [1, 2, n, t, e]; + } + return [1, p + 1 | 0, n, t, e]; + } + function Ns(t, n, e) { + var i = ms(t), x = ms(e), c = x <= i ? i + 1 | 0 : x + 1 | 0; + return [1, c, n, t, e]; + } + function $D(t, n) { + var e = n !== 0 ? 1 : 0; + if (e) { + if (n !== 1) { + var i = n >>> 1 | 0, x = $D(t, i), c = u(t, 0), s = $D(t, (n - i | 0) - 1 | 0); + return [1, ms(x) + 1 | 0, c, x, s]; + } + var p = [0, u(t, 0)]; + } else + var p = e; + return p; + } + function ki(t, n, e) { + var i = ms(t), x = ms(e); + if ((x + 2 | 0) < i) { + var c = t[4], s = t[3], p = t[2], y = ms(c); + if (y <= ms(s)) + return Ns(s, p, Y7(c, n, e)); + var T = Y7(c[4], n, e), E = c[2]; + return Ns(Y7(s, p, c[3]), E, T); + } + if ((i + 2 | 0) < x) { + var d = e[4], w = e[3], G = e[2], A = ms(w); + if (A <= ms(d)) + return Ns(Y7(t, n, w), G, d); + var S = Y7(w[4], G, d), M = w[2]; + return Ns(Y7(t, n, w[3]), M, S); + } + return Y7(t, n, e); + } + function J00(t, n) { + if (typeof n == "number") + return [0, t]; + if (n[0] === 0) + return Y7([0, t], n[1], 0); + var e = n[4], i = n[2]; + return ki(J00(t, n[3]), i, e); + } + function $00(t, n) { + if (typeof n == "number") + return [0, t]; + if (n[0] === 0) + return Y7(0, n[1], [0, t]); + var e = $00(t, n[4]); + return ki(n[3], n[2], e); + } + function Vu(t, n, e) { + if (typeof t == "number") + return J00(n, e); + if (t[0] === 0) { + if (typeof e != "number") { + if (e[0] === 0) + return Y7(t, n, e); + if (3 < e[1]) { + var i = e[4], x = e[2]; + return ki(Vu(t, n, e[3]), x, i); + } + return Ns(t, n, e); + } + } else { + var c = t[4], s = t[3], p = t[2], y = t[1]; + if (typeof e != "number") { + if (e[0] === 0) + return 3 < y ? ki(s, p, Vu(c, n, e)) : Ns(t, n, e); + var T = e[1]; + if ((T + 2 | 0) < y) + return ki(s, p, Vu(c, n, e)); + if ((y + 2 | 0) < T) { + var E = e[4], d = e[2]; + return ki(Vu(t, n, e[3]), d, E); + } + return Ns(t, n, e); + } + } + return $00(n, t); + } + function Pl(t) { + for (var n = t; ; ) { + if (typeof n == "number") + throw Jt; + if (n[0] === 0) + return n[1]; + if (typeof n[3] == "number") + return n[2]; + var n = n[3]; + } + } + function Z00(t) { + for (var n = t; ; ) { + if (typeof n == "number") + return 0; + if (n[0] === 0) + return [0, n[1]]; + if (typeof n[3] == "number") + return [0, n[2]]; + var n = n[3]; + } + } + function Q00(t) { + for (var n = t; ; ) { + if (typeof n == "number") + throw Jt; + if (n[0] === 0) + return n[1]; + if (typeof n[4] == "number") + return n[2]; + var n = n[4]; + } + } + function Aee(t) { + for (var n = t; ; ) { + if (typeof n == "number") + return 0; + if (n[0] === 0) + return [0, n[1]]; + if (typeof n[4] == "number") + return [0, n[2]]; + var n = n[4]; + } + } + function ZD(t) { + if (typeof t == "number") + return Pu(Upr); + if (t[0] === 0) + return 0; + if (typeof t[3] == "number") + return t[4]; + var n = t[4], e = t[2]; + return ki(ZD(t[3]), e, n); + } + function Dl(t, n) { + if (typeof t == "number") + return n; + if (typeof n == "number") + return t; + var e = ZD(n); + return Vu(t, Pl(n), e); + } + function QD(t) { + if (typeof t == "number") + return 0; + if (t[0] === 0) + return 1; + var n = QD(t[4]); + return (QD(t[3]) + 1 | 0) + n | 0; + } + function rr0(t, n) { + for (var e = t, i = n; ; ) { + if (typeof i == "number") + return e; + if (i[0] === 0) + return [0, i[1], e]; + var x = i[3], c = rr0(e, i[4]), e = [0, i[2], c], i = x; + } + } + function er0(t) { + return rr0(0, t); + } + var st = 0; + function rL(t) { + var n = typeof t == "number" ? 1 : 0, e = n && 1; + return e; + } + function eL(t) { + function n(e0, x0) { + if (typeof x0 == "number") + return [0, e0]; + if (x0[0] === 0) { + var l = x0[1], c0 = o(t[1], e0, l); + return c0 === 0 ? x0 : 0 <= c0 ? Y7(x0, e0, st) : Y7([0, e0], l, st); + } + var t0 = x0[4], o0 = x0[3], w0 = x0[2], _0 = o(t[1], e0, w0); + if (_0 === 0) + return x0; + if (0 <= _0) { + var E0 = n(e0, t0); + return t0 === E0 ? x0 : ki(o0, w0, E0); + } + var U0 = n(e0, o0); + return o0 === U0 ? x0 : ki(U0, w0, t0); + } + function e(e0, x0) { + if (typeof x0 == "number") + return [0, st, 0, st]; + if (x0[0] === 0) { + var l = o(t[1], e0, x0[1]); + return l === 0 ? [0, st, 1, st] : 0 <= l ? [0, x0, 0, st] : [0, st, 0, x0]; + } + var c0 = x0[4], t0 = x0[3], o0 = x0[2], w0 = o(t[1], e0, o0); + if (w0 === 0) + return [0, t0, 1, c0]; + if (0 <= w0) { + var _0 = e(e0, c0), E0 = _0[3], U0 = _0[2]; + return [0, Vu(t0, o0, _0[1]), U0, E0]; + } + var b = e(e0, t0), R0 = Vu(b[3], o0, c0); + return [0, b[1], b[2], R0]; + } + function i(e0, x0) { + for (var l = x0; ; ) { + if (typeof l == "number") + return 0; + if (l[0] === 0) + return o(t[1], e0, l[1]) === 0 ? 1 : 0; + var c0 = o(t[1], e0, l[2]), t0 = c0 === 0 ? 1 : 0; + if (t0) + return t0; + var o0 = 0 <= c0 ? l[4] : l[3], l = o0; + } + } + function x(e0, x0) { + if (typeof x0 == "number") + return st; + if (x0[0] === 0) + return o(t[1], e0, x0[1]) === 0 ? st : x0; + var l = x0[4], c0 = x0[3], t0 = x0[2], o0 = o(t[1], e0, t0); + if (o0 === 0) { + if (typeof c0 == "number") + return l; + if (typeof l == "number") + return c0; + var w0 = ZD(l); + return ki(c0, Pl(l), w0); + } + if (0 <= o0) { + var _0 = x(e0, l); + return l === _0 ? x0 : ki(c0, t0, _0); + } + var E0 = x(e0, c0); + return c0 === E0 ? x0 : ki(E0, t0, l); + } + function c(e0, x0) { + if (typeof e0 == "number") + return x0; + if (e0[0] === 1) { + var l = e0[2], c0 = e0[1]; + if (typeof x0 != "number") { + if (x0[0] === 0) + return n(x0[1], e0); + var t0 = x0[2], o0 = x0[1]; + if (o0 <= c0) { + if (o0 === 1) + return n(t0, e0); + var w0 = e(l, x0), _0 = c(e0[4], w0[3]); + return Vu(c(e0[3], w0[1]), l, _0); + } + if (c0 === 1) + return n(l, x0); + var E0 = e(t0, e0), U0 = c(E0[3], x0[4]); + return Vu(c(E0[1], x0[3]), t0, U0); + } + } + return typeof x0 == "number" ? e0 : n(e0[1], x0); + } + function s(e0, x0) { + if (typeof e0 == "number" || typeof x0 == "number") + return st; + if (typeof e0 != "number" && e0[0] !== 0) { + var l = e0[4], c0 = e0[3], t0 = e0[2], o0 = e(t0, x0), w0 = o0[1]; + if (o0[2]) { + var _0 = s(l, o0[3]); + return Vu(s(c0, w0), t0, _0); + } + var E0 = s(l, o0[3]); + return Dl(s(c0, w0), E0); + } + return i(e0[1], x0) ? e0 : st; + } + function p(e0, x0) { + if (typeof x0 == "number") + return [0, st, function(s0) { + return st; + }]; + if (x0[0] === 0) + return o(t[1], e0, x0[1]) === 0 ? 0 : [0, st, function(s0) { + return st; + }]; + var l = x0[4], c0 = x0[3], t0 = x0[2], o0 = o(t[1], e0, t0); + if (o0 === 0) + return 0; + if (0 <= o0) { + var w0 = p(e0, l); + if (w0) + var _0 = w0[2], E0 = [0, Vu(c0, t0, w0[1]), _0]; + else + var E0 = w0; + return E0; + } + var U0 = p(e0, c0); + if (U0) + var b = U0[2], R0 = function(s0) { + return Vu(u(b, 0), t0, l); + }, X = [0, U0[1], R0]; + else + var X = U0; + return X; + } + function y(e0, x0) { + for (var l = e0, c0 = x0; ; ) { + if (typeof l != "number" && typeof c0 != "number") { + var t0 = 0; + if (typeof l != "number" && l[0] !== 0) { + if (typeof c0 != "number" && c0[0] !== 0) { + if (l === c0) + return 0; + var o0 = p(l[2], c0); + if (o0) { + var w0 = y(l[3], o0[1]); + if (w0) { + var _0 = u(o0[2], 0), l = l[4], c0 = _0; + continue; + } + var E0 = w0; + } else + var E0 = o0; + return E0; + } + var U0 = l, b = c0[1]; + t0 = 1; + } + if (!t0) + var U0 = c0, b = l[1]; + return 1 - i(b, U0); + } + return 1; + } + } + function T(e0, x0) { + if (typeof e0 == "number") + return st; + if (typeof x0 == "number") + return e0; + if (typeof e0 != "number" && e0[0] !== 0) { + var l = e0[4], c0 = e0[3], t0 = e0[2], o0 = e(t0, x0), w0 = o0[1]; + if (o0[2]) { + var _0 = T(l, o0[3]); + return Dl(T(c0, w0), _0); + } + var E0 = T(l, o0[3]); + return Vu(T(c0, w0), t0, E0); + } + return i(e0[1], x0) ? st : e0; + } + function E(e0, x0) { + for (var l = Jv(x0, 0), c0 = Jv(e0, 0), t0 = l; ; ) { + if (c0) { + if (t0) { + var o0 = o(t[1], c0[1], t0[1]); + if (o0 === 0) { + var w0 = Jv(t0[2], t0[3]), c0 = Jv(c0[2], c0[3]), t0 = w0; + continue; + } + return o0; + } + return 1; + } + var _0 = t0 && -1; + return _0; + } + } + function d(e0, x0) { + return E(e0, x0) === 0 ? 1 : 0; + } + function w(e0, x0) { + for (var l = e0, c0 = x0; ; ) { + if (typeof l == "number") + return 1; + if (l[0] === 0) { + var t0 = l[1]; + if (typeof c0 != "number") { + if (c0[0] === 0) { + var o0 = o(t[1], t0, c0[1]) === 0 ? 1 : 0, w0 = o0 && 1; + return w0; + } + var _0 = o(t[1], t0, c0[2]); + if (_0 === 0) + return 1; + if (0 <= _0) { + var c0 = c0[4]; + continue; + } + var c0 = c0[3]; + continue; + } + } else { + var E0 = l[4], U0 = l[3], b = l[2]; + if (typeof c0 != "number") { + if (c0[0] === 0) { + var R0 = l[1] === 1 ? 1 : 0, X = R0 && (o(t[1], b, c0[1]) === 0 ? 1 : 0); + return X; + } + var s0 = c0[4], hr = c0[3], Ar = o(t[1], b, c0[2]); + if (Ar === 0) { + var or = w(U0, hr); + if (or) { + var l = E0, c0 = s0; + continue; + } + return or; + } + if (0 <= Ar) { + var W0 = w(Y7(st, b, E0), s0); + if (W0) { + var l = U0; + continue; + } + return W0; + } + var Lr = w(Y7(U0, b, st), hr); + if (Lr) { + var l = E0; + continue; + } + return Lr; + } + } + return 0; + } + } + function G(e0, x0) { + for (var l = x0; ; ) { + if (typeof l == "number") + return 0; + if (l[0] === 0) + return u(e0, l[1]); + G(e0, l[3]), u(e0, l[2]); + var l = l[4]; + } + } + function A(e0, x0, l) { + for (var c0 = x0, t0 = l; ; ) { + if (typeof c0 == "number") + return t0; + if (c0[0] === 0) + return o(e0, c0[1], t0); + var o0 = A(e0, c0[3], t0), w0 = o(e0, c0[2], o0), c0 = c0[4], t0 = w0; + } + } + function S(e0, x0) { + for (var l = x0; ; ) { + if (typeof l == "number") + return 1; + if (l[0] === 0) + return u(e0, l[1]); + var c0 = u(e0, l[2]); + if (c0) { + var t0 = S(e0, l[3]); + if (t0) { + var l = l[4]; + continue; + } + var o0 = t0; + } else + var o0 = c0; + return o0; + } + } + function M(e0, x0) { + for (var l = x0; ; ) { + if (typeof l == "number") + return 0; + if (l[0] === 0) + return u(e0, l[1]); + var c0 = u(e0, l[2]); + if (c0) + var t0 = c0; + else { + var o0 = M(e0, l[3]); + if (!o0) { + var l = l[4]; + continue; + } + var t0 = o0; + } + return t0; + } + } + function K(e0, x0) { + if (typeof x0 == "number") + return st; + if (x0[0] === 0) + return u(e0, x0[1]) ? x0 : st; + var l = x0[4], c0 = x0[3], t0 = x0[2], o0 = K(e0, c0), w0 = u(e0, t0), _0 = K(e0, l); + return w0 ? c0 === o0 && l === _0 ? x0 : Vu(o0, t0, _0) : Dl(o0, _0); + } + function V(e0, x0) { + if (typeof x0 == "number") + return [0, st, st]; + if (x0[0] === 0) + return u(e0, x0[1]) ? [0, x0, st] : [0, st, x0]; + var l = x0[2], c0 = V(e0, x0[3]), t0 = c0[2], o0 = c0[1], w0 = u(e0, l), _0 = V(e0, x0[4]), E0 = _0[2], U0 = _0[1]; + if (w0) { + var b = Dl(t0, E0); + return [0, Vu(o0, l, U0), b]; + } + var R0 = Vu(t0, l, E0); + return [0, Dl(o0, U0), R0]; + } + function f0(e0, x0) { + for (var l = x0; ; ) { + if (typeof l == "number") + throw Jt; + if (l[0] === 0) { + var c0 = l[1]; + if (o(t[1], e0, c0) === 0) + return c0; + throw Jt; + } + var t0 = l[2], o0 = o(t[1], e0, t0); + if (o0 === 0) + return t0; + var w0 = 0 <= o0 ? l[4] : l[3], l = w0; + } + } + function m0(e0, x0) { + for (var l = x0; ; ) { + if (typeof l == "number") + return 0; + if (l[0] === 0) { + var c0 = l[1], t0 = o(t[1], e0, c0) === 0 ? 1 : 0, o0 = t0 && [0, c0]; + return o0; + } + var w0 = l[2], _0 = o(t[1], e0, w0); + if (_0 === 0) + return [0, w0]; + var E0 = 0 <= _0 ? l[4] : l[3], l = E0; + } + } + function k0(e0, x0) { + if (typeof x0 == "number") + return st; + if (x0[0] === 0) { + var l = x0[1], c0 = u(e0, l); + return l === c0 ? x0 : [0, c0]; + } + var t0 = x0[4], o0 = x0[3], w0 = x0[2], _0 = k0(e0, o0), E0 = u(e0, w0), U0 = k0(e0, t0); + if (o0 === _0 && w0 === E0 && t0 === U0) + return x0; + var b = 0; + if (!rL(_0)) { + var R0 = Q00(_0); + 0 <= o(t[1], R0, E0) && (b = 1); + } + if (!b) { + var X = 0; + if (!rL(U0)) { + var s0 = Pl(U0); + 0 <= o(t[1], E0, s0) && (X = 1); + } + if (!X) + return Vu(_0, E0, U0); + } + return c(_0, n(E0, U0)); + } + function g0(e0) { + if (e0) { + var x0 = e0[2], l = e0[1]; + if (x0) { + var c0 = x0[2], t0 = x0[1]; + if (c0) { + var o0 = c0[2], w0 = c0[1]; + if (o0) { + var _0 = o0[2], E0 = o0[1]; + if (_0) { + if (_0[2]) { + var U0 = t[1], b = function(or, W0) { + if (or === 2) { + if (W0) { + var Lr = W0[2]; + if (Lr) { + var Tr = Lr[1], Hr = W0[1], Or = Lr[2], fr = o(U0, Hr, Tr), Rr = fr === 0 ? [0, Hr, 0] : 0 < fr ? [0, Hr, [0, Tr, 0]] : [0, Tr, [0, Hr, 0]]; + return [0, Rr, Or]; + } + } + } else if (or === 3 && W0) { + var Wr = W0[2]; + if (Wr) { + var Jr = Wr[2]; + if (Jr) { + var ar = Jr[1], _r = Wr[1], Ir = W0[1], fe = Jr[2], v0 = o(U0, Ir, _r); + if (v0 === 0) + var P = o(U0, _r, ar), L = P === 0 ? [0, _r, 0] : 0 < P ? [0, _r, [0, ar, 0]] : [0, ar, [0, _r, 0]], Q = L; + else if (0 < v0) { + var i0 = o(U0, _r, ar); + if (i0 === 0) + var T0 = [0, Ir, [0, _r, 0]]; + else if (0 < i0) + var T0 = [0, Ir, [0, _r, [0, ar, 0]]]; + else + var l0 = o(U0, Ir, ar), S0 = l0 === 0 ? [0, Ir, [0, _r, 0]] : 0 < l0 ? [0, Ir, [0, ar, [0, _r, 0]]] : [0, ar, [0, Ir, [0, _r, 0]]], T0 = S0; + var Q = T0; + } else { + var rr = o(U0, Ir, ar); + if (rr === 0) + var Z = [0, _r, [0, Ir, 0]]; + else if (0 < rr) + var Z = [0, _r, [0, Ir, [0, ar, 0]]]; + else + var L0 = o(U0, _r, ar), B = L0 === 0 ? [0, _r, [0, Ir, 0]] : 0 < L0 ? [0, _r, [0, ar, [0, Ir, 0]]] : [0, ar, [0, _r, [0, Ir, 0]]], Z = B; + var Q = Z; + } + return [0, Q, fe]; + } + } + } + for (var p0 = or >> 1, b0 = R0(p0, W0), O0 = b0[1], M0 = R0(or - p0 | 0, b0[2]), er = O0, yr = M0[1], vr = 0, $0 = M0[2]; ; ) { + if (er) { + if (yr) { + var Er = yr[2], Mr = yr[1], Br = er[2], qr = er[1], jr = o(U0, qr, Mr); + if (jr === 0) { + var er = Br, yr = Er, vr = [0, qr, vr]; + continue; + } + if (0 <= jr) { + var yr = Er, vr = [0, Mr, vr]; + continue; + } + var er = Br, vr = [0, qr, vr]; + continue; + } + var $r = Lc(er, vr); + } else + var $r = Lc(yr, vr); + return [0, $r, $0]; + } + }, R0 = function(or, W0) { + if (or === 2) { + if (W0) { + var Lr = W0[2]; + if (Lr) { + var Tr = Lr[1], Hr = W0[1], Or = Lr[2], fr = o(U0, Hr, Tr), Rr = fr === 0 ? [0, Hr, 0] : 0 <= fr ? [0, Tr, [0, Hr, 0]] : [0, Hr, [0, Tr, 0]]; + return [0, Rr, Or]; + } + } + } else if (or === 3 && W0) { + var Wr = W0[2]; + if (Wr) { + var Jr = Wr[2]; + if (Jr) { + var ar = Jr[1], _r = Wr[1], Ir = W0[1], fe = Jr[2], v0 = o(U0, Ir, _r); + if (v0 === 0) + var P = o(U0, _r, ar), L = P === 0 ? [0, _r, 0] : 0 <= P ? [0, ar, [0, _r, 0]] : [0, _r, [0, ar, 0]], Q = L; + else if (0 <= v0) { + var i0 = o(U0, Ir, ar); + if (i0 === 0) + var T0 = [0, _r, [0, Ir, 0]]; + else if (0 <= i0) + var l0 = o(U0, _r, ar), S0 = l0 === 0 ? [0, _r, [0, Ir, 0]] : 0 <= l0 ? [0, ar, [0, _r, [0, Ir, 0]]] : [0, _r, [0, ar, [0, Ir, 0]]], T0 = S0; + else + var T0 = [0, _r, [0, Ir, [0, ar, 0]]]; + var Q = T0; + } else { + var rr = o(U0, _r, ar); + if (rr === 0) + var Z = [0, Ir, [0, _r, 0]]; + else if (0 <= rr) + var L0 = o(U0, Ir, ar), B = L0 === 0 ? [0, Ir, [0, _r, 0]] : 0 <= L0 ? [0, ar, [0, Ir, [0, _r, 0]]] : [0, Ir, [0, ar, [0, _r, 0]]], Z = B; + else + var Z = [0, Ir, [0, _r, [0, ar, 0]]]; + var Q = Z; + } + return [0, Q, fe]; + } + } + } + for (var p0 = or >> 1, b0 = b(p0, W0), O0 = b0[1], M0 = b(or - p0 | 0, b0[2]), er = O0, yr = M0[1], vr = 0, $0 = M0[2]; ; ) { + if (er) { + if (yr) { + var Er = yr[2], Mr = yr[1], Br = er[2], qr = er[1], jr = o(U0, qr, Mr); + if (jr === 0) { + var er = Br, yr = Er, vr = [0, qr, vr]; + continue; + } + if (0 < jr) { + var er = Br, vr = [0, qr, vr]; + continue; + } + var yr = Er, vr = [0, Mr, vr]; + continue; + } + var $r = Lc(er, vr); + } else + var $r = Lc(yr, vr); + return [0, $r, $0]; + } + }, X = Dc(e0), s0 = 2 <= X ? R0(X, e0)[1] : e0, hr = function(or, W0) { + if (!(3 < or >>> 0)) + switch (or) { + case 0: + return [0, 0, W0]; + case 1: + if (W0) + return [0, [0, W0[1]], W0[2]]; + break; + case 2: + if (W0) { + var Lr = W0[2]; + if (Lr) + return [0, [1, 2, Lr[1], [0, W0[1]], 0], Lr[2]]; + } + break; + default: + if (W0) { + var Tr = W0[2]; + if (Tr) { + var Hr = Tr[2]; + if (Hr) + return [0, [1, 2, Tr[1], [0, W0[1]], [0, Hr[1]]], Hr[2]]; + } + } + } + var Or = or / 2 | 0, fr = hr(Or, W0), Rr = fr[2]; + if (Rr) { + var Wr = hr((or - Or | 0) - 1 | 0, Rr[2]), Jr = Wr[2]; + return [0, Ns(fr[1], Rr[1], Wr[1]), Jr]; + } + throw [0, Sn, Kpr]; + }; + return hr(Dc(s0), s0)[1]; + } + var Ar = n(E0, n(w0, n(t0, [0, l]))); + return n(_0[1], Ar); + } + return n(E0, n(w0, n(t0, [0, l]))); + } + return n(w0, n(t0, [0, l])); + } + return n(t0, [0, l]); + } + return [0, l]; + } + return st; + } + return [0, st, rL, i, n, Iee, x, c, s, y, T, E, d, w, G, k0, A, S, M, K, V, QD, er0, Pl, Z00, Q00, Aee, Pl, Z00, f0, m0, Oee, g0, function(e0, x0, l) { + u(f(x0), Xpr); + var c0 = er0(l); + c0 && u(f(x0), Ypr); + var t0 = 0; + return le(function(o0, w0) { + return o0 && u(f(x0), Hpr), o(e0, x0, w0), 1; + }, t0, c0), c0 && u(f(x0), Vpr), u(f(x0), zpr); + }, $D]; + } + var nr0 = Wpr.slice(); + function nL(t) { + for (var n = 0, e = nr0.length - 1 - 1 | 0; ; ) { + if (e < n) + return 0; + var i = n + ((e - n | 0) / 2 | 0) | 0, x = nr0[1 + i]; + if (t < x[1]) { + var e = i - 1 | 0; + continue; + } + if (x[2] <= t) { + var n = i + 1 | 0; + continue; + } + return 1; + } + } + var tr0 = function t(n, e) { + return t.fun(n, e); + }; + N(tr0, function(t, n) { + if (typeof t == "number") { + var e = t; + if (55 <= e) + switch (e) { + case 55: + if (typeof n == "number") { + var i = n !== 55 ? 1 : 0; + if (!i) + return i; + } + break; + case 56: + if (typeof n == "number") { + var x = n !== 56 ? 1 : 0; + if (!x) + return x; + } + break; + case 57: + if (typeof n == "number") { + var c = n !== 57 ? 1 : 0; + if (!c) + return c; + } + break; + case 58: + if (typeof n == "number") { + var s = n !== 58 ? 1 : 0; + if (!s) + return s; + } + break; + case 59: + if (typeof n == "number") { + var p = n !== 59 ? 1 : 0; + if (!p) + return p; + } + break; + case 60: + if (typeof n == "number") { + var y = n !== 60 ? 1 : 0; + if (!y) + return y; + } + break; + case 61: + if (typeof n == "number") { + var T = n !== 61 ? 1 : 0; + if (!T) + return T; + } + break; + case 62: + if (typeof n == "number") { + var E = n !== 62 ? 1 : 0; + if (!E) + return E; + } + break; + case 63: + if (typeof n == "number") { + var d = n !== 63 ? 1 : 0; + if (!d) + return d; + } + break; + case 64: + if (typeof n == "number") { + var w = n !== 64 ? 1 : 0; + if (!w) + return w; + } + break; + case 65: + if (typeof n == "number") { + var G = n !== 65 ? 1 : 0; + if (!G) + return G; + } + break; + case 66: + if (typeof n == "number") { + var A = n !== 66 ? 1 : 0; + if (!A) + return A; + } + break; + case 67: + if (typeof n == "number") { + var S = n !== 67 ? 1 : 0; + if (!S) + return S; + } + break; + case 68: + if (typeof n == "number") { + var M = n !== 68 ? 1 : 0; + if (!M) + return M; + } + break; + case 69: + if (typeof n == "number") { + var K = n !== 69 ? 1 : 0; + if (!K) + return K; + } + break; + case 70: + if (typeof n == "number") { + var V = n !== 70 ? 1 : 0; + if (!V) + return V; + } + break; + case 71: + if (typeof n == "number") { + var f0 = n !== 71 ? 1 : 0; + if (!f0) + return f0; + } + break; + case 72: + if (typeof n == "number") { + var m0 = n !== 72 ? 1 : 0; + if (!m0) + return m0; + } + break; + case 73: + if (typeof n == "number") { + var k0 = n !== 73 ? 1 : 0; + if (!k0) + return k0; + } + break; + case 74: + if (typeof n == "number") { + var g0 = n !== 74 ? 1 : 0; + if (!g0) + return g0; + } + break; + case 75: + if (typeof n == "number") { + var e0 = n !== 75 ? 1 : 0; + if (!e0) + return e0; + } + break; + case 76: + if (typeof n == "number") { + var x0 = n !== 76 ? 1 : 0; + if (!x0) + return x0; + } + break; + case 77: + if (typeof n == "number") { + var l = n !== 77 ? 1 : 0; + if (!l) + return l; + } + break; + case 78: + if (typeof n == "number") { + var c0 = n !== 78 ? 1 : 0; + if (!c0) + return c0; + } + break; + case 79: + if (typeof n == "number") { + var t0 = n !== 79 ? 1 : 0; + if (!t0) + return t0; + } + break; + case 80: + if (typeof n == "number") { + var o0 = n !== 80 ? 1 : 0; + if (!o0) + return o0; + } + break; + case 81: + if (typeof n == "number") { + var w0 = n !== 81 ? 1 : 0; + if (!w0) + return w0; + } + break; + case 82: + if (typeof n == "number") { + var _0 = n !== 82 ? 1 : 0; + if (!_0) + return _0; + } + break; + case 83: + if (typeof n == "number") { + var E0 = n !== 83 ? 1 : 0; + if (!E0) + return E0; + } + break; + case 84: + if (typeof n == "number") { + var U0 = n !== 84 ? 1 : 0; + if (!U0) + return U0; + } + break; + case 85: + if (typeof n == "number") { + var b = n !== 85 ? 1 : 0; + if (!b) + return b; + } + break; + case 86: + if (typeof n == "number") { + var R0 = n !== 86 ? 1 : 0; + if (!R0) + return R0; + } + break; + case 87: + if (typeof n == "number") { + var X = n !== 87 ? 1 : 0; + if (!X) + return X; + } + break; + case 88: + if (typeof n == "number") { + var s0 = n !== 88 ? 1 : 0; + if (!s0) + return s0; + } + break; + case 89: + if (typeof n == "number") { + var hr = n !== 89 ? 1 : 0; + if (!hr) + return hr; + } + break; + case 90: + if (typeof n == "number") { + var Ar = n !== 90 ? 1 : 0; + if (!Ar) + return Ar; + } + break; + case 91: + if (typeof n == "number") { + var or = n !== 91 ? 1 : 0; + if (!or) + return or; + } + break; + case 92: + if (typeof n == "number") { + var W0 = n !== 92 ? 1 : 0; + if (!W0) + return W0; + } + break; + case 93: + if (typeof n == "number") { + var Lr = n !== 93 ? 1 : 0; + if (!Lr) + return Lr; + } + break; + case 94: + if (typeof n == "number") { + var Tr = n !== 94 ? 1 : 0; + if (!Tr) + return Tr; + } + break; + case 95: + if (typeof n == "number") { + var Hr = n !== 95 ? 1 : 0; + if (!Hr) + return Hr; + } + break; + case 96: + if (typeof n == "number") { + var Or = n !== 96 ? 1 : 0; + if (!Or) + return Or; + } + break; + case 97: + if (typeof n == "number") { + var fr = n !== 97 ? 1 : 0; + if (!fr) + return fr; + } + break; + case 98: + if (typeof n == "number") { + var Rr = n !== 98 ? 1 : 0; + if (!Rr) + return Rr; + } + break; + case 99: + if (typeof n == "number") { + var Wr = n !== 99 ? 1 : 0; + if (!Wr) + return Wr; + } + break; + case 100: + if (typeof n == "number") { + var Jr = ti !== n ? 1 : 0; + if (!Jr) + return Jr; + } + break; + case 101: + if (typeof n == "number") { + var ar = R7 !== n ? 1 : 0; + if (!ar) + return ar; + } + break; + case 102: + if (typeof n == "number") { + var _r = Ri !== n ? 1 : 0; + if (!_r) + return _r; + } + break; + case 103: + if (typeof n == "number") { + var Ir = s7 !== n ? 1 : 0; + if (!Ir) + return Ir; + } + break; + case 104: + if (typeof n == "number") { + var fe = L7 !== n ? 1 : 0; + if (!fe) + return fe; + } + break; + case 105: + if (typeof n == "number") { + var v0 = j7 !== n ? 1 : 0; + if (!v0) + return v0; + } + break; + case 106: + if (typeof n == "number") { + var P = Yt !== n ? 1 : 0; + if (!P) + return P; + } + break; + case 107: + if (typeof n == "number") { + var L = Zc !== n ? 1 : 0; + if (!L) + return L; + } + break; + default: + if (typeof n == "number" && is <= n) + return 0; + } + else + switch (e) { + case 0: + if (typeof n == "number" && !n) + return n; + break; + case 1: + if (typeof n == "number") { + var Q = n !== 1 ? 1 : 0; + if (!Q) + return Q; + } + break; + case 2: + if (typeof n == "number") { + var i0 = n !== 2 ? 1 : 0; + if (!i0) + return i0; + } + break; + case 3: + if (typeof n == "number") { + var l0 = n !== 3 ? 1 : 0; + if (!l0) + return l0; + } + break; + case 4: + if (typeof n == "number") { + var S0 = n !== 4 ? 1 : 0; + if (!S0) + return S0; + } + break; + case 5: + if (typeof n == "number") { + var T0 = n !== 5 ? 1 : 0; + if (!T0) + return T0; + } + break; + case 6: + if (typeof n == "number") { + var rr = n !== 6 ? 1 : 0; + if (!rr) + return rr; + } + break; + case 7: + if (typeof n == "number") { + var L0 = n !== 7 ? 1 : 0; + if (!L0) + return L0; + } + break; + case 8: + if (typeof n == "number") { + var B = n !== 8 ? 1 : 0; + if (!B) + return B; + } + break; + case 9: + if (typeof n == "number") { + var Z = n !== 9 ? 1 : 0; + if (!Z) + return Z; + } + break; + case 10: + if (typeof n == "number") { + var p0 = n !== 10 ? 1 : 0; + if (!p0) + return p0; + } + break; + case 11: + if (typeof n == "number") { + var b0 = n !== 11 ? 1 : 0; + if (!b0) + return b0; + } + break; + case 12: + if (typeof n == "number") { + var O0 = n !== 12 ? 1 : 0; + if (!O0) + return O0; + } + break; + case 13: + if (typeof n == "number") { + var M0 = n !== 13 ? 1 : 0; + if (!M0) + return M0; + } + break; + case 14: + if (typeof n == "number") { + var er = n !== 14 ? 1 : 0; + if (!er) + return er; + } + break; + case 15: + if (typeof n == "number") { + var yr = n !== 15 ? 1 : 0; + if (!yr) + return yr; + } + break; + case 16: + if (typeof n == "number") { + var vr = n !== 16 ? 1 : 0; + if (!vr) + return vr; + } + break; + case 17: + if (typeof n == "number") { + var $0 = n !== 17 ? 1 : 0; + if (!$0) + return $0; + } + break; + case 18: + if (typeof n == "number") { + var Er = n !== 18 ? 1 : 0; + if (!Er) + return Er; + } + break; + case 19: + if (typeof n == "number") { + var Mr = n !== 19 ? 1 : 0; + if (!Mr) + return Mr; + } + break; + case 20: + if (typeof n == "number") { + var Br = n !== 20 ? 1 : 0; + if (!Br) + return Br; + } + break; + case 21: + if (typeof n == "number") { + var qr = n !== 21 ? 1 : 0; + if (!qr) + return qr; + } + break; + case 22: + if (typeof n == "number") { + var jr = n !== 22 ? 1 : 0; + if (!jr) + return jr; + } + break; + case 23: + if (typeof n == "number") { + var $r = n !== 23 ? 1 : 0; + if (!$r) + return $r; + } + break; + case 24: + if (typeof n == "number") { + var ne = n !== 24 ? 1 : 0; + if (!ne) + return ne; + } + break; + case 25: + if (typeof n == "number") { + var Qr = n !== 25 ? 1 : 0; + if (!Qr) + return Qr; + } + break; + case 26: + if (typeof n == "number") { + var be = n !== 26 ? 1 : 0; + if (!be) + return be; + } + break; + case 27: + if (typeof n == "number") { + var ae = n !== 27 ? 1 : 0; + if (!ae) + return ae; + } + break; + case 28: + if (typeof n == "number") { + var pe = n !== 28 ? 1 : 0; + if (!pe) + return pe; + } + break; + case 29: + if (typeof n == "number") { + var oe = n !== 29 ? 1 : 0; + if (!oe) + return oe; + } + break; + case 30: + if (typeof n == "number") { + var ce = n !== 30 ? 1 : 0; + if (!ce) + return ce; + } + break; + case 31: + if (typeof n == "number") { + var ge = n !== 31 ? 1 : 0; + if (!ge) + return ge; + } + break; + case 32: + if (typeof n == "number") { + var q0 = n !== 32 ? 1 : 0; + if (!q0) + return q0; + } + break; + case 33: + if (typeof n == "number") { + var Fr = n !== 33 ? 1 : 0; + if (!Fr) + return Fr; + } + break; + case 34: + if (typeof n == "number") { + var _ = n !== 34 ? 1 : 0; + if (!_) + return _; + } + break; + case 35: + if (typeof n == "number") { + var k = n !== 35 ? 1 : 0; + if (!k) + return k; + } + break; + case 36: + if (typeof n == "number") { + var I = n !== 36 ? 1 : 0; + if (!I) + return I; + } + break; + case 37: + if (typeof n == "number") { + var U = n !== 37 ? 1 : 0; + if (!U) + return U; + } + break; + case 38: + if (typeof n == "number") { + var Y = n !== 38 ? 1 : 0; + if (!Y) + return Y; + } + break; + case 39: + if (typeof n == "number") { + var y0 = n !== 39 ? 1 : 0; + if (!y0) + return y0; + } + break; + case 40: + if (typeof n == "number") { + var P0 = n !== 40 ? 1 : 0; + if (!P0) + return P0; + } + break; + case 41: + if (typeof n == "number") { + var I0 = n !== 41 ? 1 : 0; + if (!I0) + return I0; + } + break; + case 42: + if (typeof n == "number") { + var D = n !== 42 ? 1 : 0; + if (!D) + return D; + } + break; + case 43: + if (typeof n == "number") { + var u0 = n !== 43 ? 1 : 0; + if (!u0) + return u0; + } + break; + case 44: + if (typeof n == "number") { + var X0 = n !== 44 ? 1 : 0; + if (!X0) + return X0; + } + break; + case 45: + if (typeof n == "number") { + var J0 = n !== 45 ? 1 : 0; + if (!J0) + return J0; + } + break; + case 46: + if (typeof n == "number") { + var ir = n !== 46 ? 1 : 0; + if (!ir) + return ir; + } + break; + case 47: + if (typeof n == "number") { + var Q0 = n !== 47 ? 1 : 0; + if (!Q0) + return Q0; + } + break; + case 48: + if (typeof n == "number") { + var F0 = n !== 48 ? 1 : 0; + if (!F0) + return F0; + } + break; + case 49: + if (typeof n == "number") { + var Sr = n !== 49 ? 1 : 0; + if (!Sr) + return Sr; + } + break; + case 50: + if (typeof n == "number") { + var mr = n !== 50 ? 1 : 0; + if (!mr) + return mr; + } + break; + case 51: + if (typeof n == "number") { + var Cr = n !== 51 ? 1 : 0; + if (!Cr) + return Cr; + } + break; + case 52: + if (typeof n == "number") { + var sr = n !== 52 ? 1 : 0; + if (!sr) + return sr; + } + break; + case 53: + if (typeof n == "number") { + var Pr = n !== 53 ? 1 : 0; + if (!Pr) + return Pr; + } + break; + default: + if (typeof n == "number") { + var K0 = n !== 54 ? 1 : 0; + if (!K0) + return K0; + } + } + } else + switch (t[0]) { + case 0: + if (typeof n != "number" && n[0] === 0) { + var Ur = Ee(t[1], n[1]); + return Ur === 0 ? Ee(t[2], n[2]) : Ur; + } + break; + case 1: + if (typeof n != "number" && n[0] === 1) { + var h0 = Ee(t[1], n[1]); + return h0 === 0 ? Ee(t[2], n[2]) : h0; + } + break; + case 2: + if (typeof n != "number" && n[0] === 2) + return Ee(t[1], n[1]); + break; + case 3: + if (typeof n != "number" && n[0] === 3) { + var Kr = n[2], re = t[2], xe = Ee(t[1], n[1]); + if (xe === 0) { + if (re) + return Kr ? Ee(re[1], Kr[1]) : 1; + var Re = Kr && -1; + return Re; + } + return xe; + } + break; + case 4: + if (typeof n != "number" && n[0] === 4) + return Ee(t[1], n[1]); + break; + case 5: + if (typeof n != "number" && n[0] === 5) { + var ve = n[2], Ie = t[2], Ge = Ee(t[1], n[1]); + if (Ge === 0) { + if (Ie) + if (ve) { + var Me = ve[1], an = Ie[1], We = 0; + switch (an) { + case 0: + if (Me) + We = 1; + else + var vn = Me; + break; + case 1: + var Ae = Me !== 1 ? 1 : 0; + if (Ae) + We = 1; + else + var vn = Ae; + break; + case 2: + var cn = Me !== 2 ? 1 : 0; + if (cn) + We = 1; + else + var vn = cn; + break; + default: + if (3 <= Me) + var vn = 0; + else + We = 1; + } + if (We) + var rn = function(Ct) { + switch (Ct) { + case 0: + return 0; + case 1: + return 1; + case 2: + return 2; + default: + return 3; + } + }, kn = rn(Me), vn = Ac(rn(an), kn); + var Ne = vn; + } else + var Ne = 1; + else + var Ne = ve && -1; + return Ne === 0 ? Ee(t[3], n[3]) : Ne; + } + return Ge; + } + break; + case 6: + if (typeof n != "number" && n[0] === 6) { + var Je = Ee(t[1], n[1]); + return Je === 0 ? Ee(t[2], n[2]) : Je; + } + break; + case 7: + if (typeof n != "number" && n[0] === 7) + return Ac(t[1], n[1]); + break; + case 8: + if (typeof n != "number" && n[0] === 8) { + var en = Ee(t[1], n[1]); + return en === 0 ? Ee(t[2], n[2]) : en; + } + break; + case 9: + if (typeof n != "number" && n[0] === 9) + return Ee(t[1], n[1]); + break; + case 10: + if (typeof n != "number" && n[0] === 10) + return Ee(t[1], n[1]); + break; + case 11: + if (typeof n != "number" && n[0] === 11) { + var _n = Ee(t[1], n[1]); + return _n === 0 ? Ee(t[2], n[2]) : _n; + } + break; + case 12: + if (typeof n != "number" && n[0] === 12) { + var Cn = Ee(t[1], n[1]); + return Cn === 0 ? Ee(t[2], n[2]) : Cn; + } + break; + case 13: + if (typeof n != "number" && n[0] === 13) + return Ee(t[1], n[1]); + break; + case 14: + if (typeof n != "number" && n[0] === 14) + return Ac(t[1], n[1]); + break; + case 15: + if (typeof n != "number" && n[0] === 15) + return Ee(t[1], n[1]); + break; + case 16: + if (typeof n != "number" && n[0] === 16) { + var Hn = Ee(t[1], n[1]); + return Hn === 0 ? Ee(t[2], n[2]) : Hn; + } + break; + case 17: + if (typeof n != "number" && n[0] === 17) + return Ee(t[1], n[1]); + break; + case 18: + if (typeof n != "number" && n[0] === 18) + return Ac(t[1], n[1]); + break; + case 19: + if (typeof n != "number" && n[0] === 19) + return Ee(t[1], n[1]); + break; + case 20: + if (typeof n != "number" && n[0] === 20) + return Ee(t[1], n[1]); + break; + case 21: + if (typeof n != "number" && n[0] === 21) { + var Fn = Ee(t[1], n[1]); + if (Fn === 0) { + var vt = Ac(t[2], n[2]); + if (vt === 0) { + var Nt = Ac(t[3], n[3]); + return Nt === 0 ? Ac(t[4], n[4]) : Nt; + } + return vt; + } + return Fn; + } + break; + case 22: + if (typeof n != "number" && n[0] === 22) + return Ee(t[1], n[1]); + break; + default: + if (typeof n != "number" && n[0] === 23) + return Ee(t[1], n[1]); + } + function gt(qt) { + if (typeof qt == "number") { + var Ft = qt; + if (55 <= Ft) + switch (Ft) { + case 55: + return 72; + case 56: + return 73; + case 57: + return 74; + case 58: + return 76; + case 59: + return 77; + case 60: + return 78; + case 61: + return 80; + case 62: + return 81; + case 63: + return 82; + case 64: + return 83; + case 65: + return 84; + case 66: + return 85; + case 67: + return 86; + case 68: + return 87; + case 69: + return 88; + case 70: + return 89; + case 71: + return 90; + case 72: + return 91; + case 73: + return 92; + case 74: + return 93; + case 75: + return 94; + case 76: + return 96; + case 77: + return 97; + case 78: + return 98; + case 79: + return 99; + case 80: + return ti; + case 81: + return R7; + case 82: + return Ri; + case 83: + return s7; + case 84: + return L7; + case 85: + return j7; + case 86: + return Yt; + case 87: + return Zc; + case 88: + return Xt; + case 89: + return T7; + case 90: + return Pn; + case 91: + return t1; + case 92: + return Av; + case 93: + return f1; + case 94: + return A2; + case 95: + return z2; + case 96: + return Sv; + case 97: + return uc; + case 98: + return tl; + case 99: + return In; + case 100: + return ts; + case 101: + return br; + case 102: + return IX; + case 103: + return zn; + case 104: + return jt; + case 105: + return JY; + case 106: + return zw; + case 107: + return Jg; + default: + return BH; + } + switch (Ft) { + case 0: + return 4; + case 1: + return 8; + case 2: + return 15; + case 3: + return 16; + case 4: + return 17; + case 5: + return 18; + case 6: + return 19; + case 7: + return 20; + case 8: + return 21; + case 9: + return 22; + case 10: + return 23; + case 11: + return 24; + case 12: + return 25; + case 13: + return 26; + case 14: + return 27; + case 15: + return 28; + case 16: + return 29; + case 17: + return 30; + case 18: + return 31; + case 19: + return 32; + case 20: + return 33; + case 21: + return 34; + case 22: + return 35; + case 23: + return 36; + case 24: + return 37; + case 25: + return 39; + case 26: + return 40; + case 27: + return 41; + case 28: + return 42; + case 29: + return 43; + case 30: + return 45; + case 31: + return 46; + case 32: + return 47; + case 33: + return 48; + case 34: + return 51; + case 35: + return 52; + case 36: + return 53; + case 37: + return 54; + case 38: + return 55; + case 39: + return 56; + case 40: + return 57; + case 41: + return 58; + case 42: + return 59; + case 43: + return 60; + case 44: + return 61; + case 45: + return 62; + case 46: + return 63; + case 47: + return 64; + case 48: + return 65; + case 49: + return 66; + case 50: + return 67; + case 51: + return 68; + case 52: + return 69; + case 53: + return 70; + default: + return 71; + } + } else + switch (qt[0]) { + case 0: + return 0; + case 1: + return 1; + case 2: + return 2; + case 3: + return 3; + case 4: + return 5; + case 5: + return 6; + case 6: + return 7; + case 7: + return 9; + case 8: + return 10; + case 9: + return 11; + case 10: + return 12; + case 11: + return 13; + case 12: + return 14; + case 13: + return 38; + case 14: + return 44; + case 15: + return 49; + case 16: + return 50; + case 17: + return 75; + case 18: + return 79; + case 19: + return 95; + case 20: + return is; + case 21: + return Fv; + case 22: + return cf; + default: + return X2; + } + } + var Zt = gt(n); + return Ac(gt(t), Zt); + }); + var Nee = [wt, Q9r, M7(0)]; + M7(0); + var I1 = [wt, e_r, M7(0)], ur0 = 0, ir0 = 0, fr0 = 0, xr0 = 0, or0 = 0, ar0 = 0, cr0 = 0, sr0 = 0, vr0 = 0, lr0 = 0; + function j(t) { + if (t[3] === t[2]) + return -1; + var n = t[1][1 + t[3]]; + return t[3] = t[3] + 1 | 0, n === 10 && (t[5] !== 0 && (t[5] = t[5] + 1 | 0), t[4] = t[3]), n; + } + function G0(t, n) { + return t[9] = t[3], t[10] = t[4], t[11] = t[5], t[12] = n, 0; + } + function gn(t) { + return t[6] = t[3], t[7] = t[4], t[8] = t[5], G0(t, -1); + } + function q(t) { + return t[3] = t[9], t[4] = t[10], t[5] = t[11], t[12]; + } + function $v(t) { + return t[3] = t[6], t[4] = t[7], t[5] = t[8], 0; + } + function tL(t, n) { + return t[6] = n, 0; + } + function Jm(t) { + return t[3] - t[6] | 0; + } + function Ll(t) { + var n = t[3] - t[6] | 0, e = t[6], i = t[1]; + return 0 <= e && 0 <= n && !((i.length - 1 - n | 0) < e) ? Ju0(i, e, n) : Pu(ki0); + } + function br0(t) { + var n = t[6]; + return tu(t[1], n)[1 + n]; + } + function Rl(t, n, e, i) { + for (var x = 0, c = e, s = n; ; ) { + if (0 < c) { + var p = t[1 + s]; + if (0 <= p) { + if (zn < p) + if (nX < p) + if (U8 < p) { + if (lI < p) + throw I1; + Jn(i, x, s1 | p >>> 18 | 0), Jn(i, x + 1 | 0, jt | (p >>> 12 | 0) & 63), Jn(i, x + 2 | 0, jt | (p >>> 6 | 0) & 63), Jn(i, x + 3 | 0, jt | p & 63); + var y = x + 4 | 0; + } else { + Jn(i, x, hv | p >>> 12 | 0), Jn(i, x + 1 | 0, jt | (p >>> 6 | 0) & 63), Jn(i, x + 2 | 0, jt | p & 63); + var y = x + 3 | 0; + } + else { + Jn(i, x, rt | p >>> 6 | 0), Jn(i, x + 1 | 0, jt | p & 63); + var y = x + 2 | 0; + } + else { + Jn(i, x, p); + var y = x + 1 | 0; + } + var x = y, c = c - 1 | 0, s = s + 1 | 0; + continue; + } + throw I1; + } + return x; + } + } + function pr0(t) { + for (var n = un(t), e = Gv(n, 0), i = 0, x = 0; ; ) { + if (x < n) { + var c = Vr(t, x), s = 0; + if (rt <= c) + if (s1 <= c) + if (wt <= c) + s = 1; + else { + var p = Vr(t, x + 1 | 0), y = Vr(t, x + 2 | 0), T = Vr(t, x + 3 | 0), E = (p >>> 6 | 0) !== 2 ? 1 : 0; + if (E) + var w = E; + else + var d = (y >>> 6 | 0) !== 2 ? 1 : 0, w = d || ((T >>> 6 | 0) !== 2 ? 1 : 0); + if (w) + throw I1; + e[1 + i] = (c & 7) << 18 | (p & 63) << 12 | (y & 63) << 6 | T & 63; + var G = x + 4 | 0; + } + else if (hv <= c) { + var A = Vr(t, x + 1 | 0), S = Vr(t, x + 2 | 0), M = (c & 15) << 12 | (A & 63) << 6 | S & 63, K = (A >>> 6 | 0) !== 2 ? 1 : 0, V = K || ((S >>> 6 | 0) !== 2 ? 1 : 0); + if (V) + var m0 = V; + else + var f0 = 55296 <= M ? 1 : 0, m0 = f0 && (M <= 57088 ? 1 : 0); + if (m0) + throw I1; + e[1 + i] = M; + var G = x + 3 | 0; + } else { + var k0 = Vr(t, x + 1 | 0); + if ((k0 >>> 6 | 0) !== 2) + throw I1; + e[1 + i] = (c & 31) << 6 | k0 & 63; + var G = x + 2 | 0; + } + else if (jt <= c) + s = 1; + else { + e[1 + i] = c; + var G = x + 1 | 0; + } + if (s) + throw I1; + var i = i + 1 | 0, x = G; + continue; + } + return [0, e, i, lr0, vr0, sr0, cr0, ar0, or0, xr0, fr0, ir0, ur0]; + } + } + function jl(t, n, e) { + var i = t[6] + n | 0, x = Lt(e * 4 | 0), c = t[1]; + if ((i + e | 0) <= c.length - 1) + return qv(x, 0, Rl(c, i, e, x)); + throw [0, Sn, r_r]; + } + function Se(t) { + var n = t[6], e = t[3] - n | 0, i = Lt(e * 4 | 0); + return qv(i, 0, Rl(t[1], n, e, i)); + } + function Gl(t, n) { + var e = t[6], i = t[3] - e | 0, x = Lt(i * 4 | 0); + return sN(n, x, 0, Rl(t[1], e, i, x)); + } + function uL(t) { + var n = t.length - 1, e = Lt(n * 4 | 0); + return qv(e, 0, Rl(t, 0, n, e)); + } + function mr0(t, n) { + return t[3] = t[3] - n | 0, 0; + } + var _r0 = 0; + function Cee(t, n, e) { + return [0, t, n, n_r, 0, e, _r0, t_r]; + } + function yr0(t) { + var n = t[2]; + return [0, t[1], [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12]], t[3], t[4], t[5], t[6], t[7]]; + } + function hr0(t) { + return t[3][1]; + } + function $m(t, n) { + return t !== n[4] ? [0, n[1], n[2], n[3], t, n[5], n[6], n[7]] : n; + } + var iL = function t(n, e) { + return t.fun(n, e); + }, dr0 = function t(n, e) { + return t.fun(n, e); + }, fL = function t(n, e) { + return t.fun(n, e); + }, xL = function t(n, e) { + return t.fun(n, e); + }, kr0 = function t(n, e) { + return t.fun(n, e); + }; + N(iL, function(t, n) { + if (typeof t == "number") { + var e = t; + if (61 <= e) + if (92 <= e) + switch (e) { + case 92: + if (typeof n == "number" && n === 92) + return 1; + break; + case 93: + if (typeof n == "number" && n === 93) + return 1; + break; + case 94: + if (typeof n == "number" && n === 94) + return 1; + break; + case 95: + if (typeof n == "number" && n === 95) + return 1; + break; + case 96: + if (typeof n == "number" && n === 96) + return 1; + break; + case 97: + if (typeof n == "number" && n === 97) + return 1; + break; + case 98: + if (typeof n == "number" && n === 98) + return 1; + break; + case 99: + if (typeof n == "number" && n === 99) + return 1; + break; + case 100: + if (typeof n == "number" && ti === n) + return 1; + break; + case 101: + if (typeof n == "number" && R7 === n) + return 1; + break; + case 102: + if (typeof n == "number" && Ri === n) + return 1; + break; + case 103: + if (typeof n == "number" && s7 === n) + return 1; + break; + case 104: + if (typeof n == "number" && L7 === n) + return 1; + break; + case 105: + if (typeof n == "number" && j7 === n) + return 1; + break; + case 106: + if (typeof n == "number" && Yt === n) + return 1; + break; + case 107: + if (typeof n == "number" && Zc === n) + return 1; + break; + case 108: + if (typeof n == "number" && is === n) + return 1; + break; + case 109: + if (typeof n == "number" && Fv === n) + return 1; + break; + case 110: + if (typeof n == "number" && Xt === n) + return 1; + break; + case 111: + if (typeof n == "number" && cf === n) + return 1; + break; + case 112: + if (typeof n == "number" && T7 === n) + return 1; + break; + case 113: + if (typeof n == "number" && Pn === n) + return 1; + break; + case 114: + if (typeof n == "number" && t1 === n) + return 1; + break; + case 115: + if (typeof n == "number" && Av === n) + return 1; + break; + case 116: + if (typeof n == "number" && f1 === n) + return 1; + break; + case 117: + if (typeof n == "number" && A2 === n) + return 1; + break; + case 118: + if (typeof n == "number" && z2 === n) + return 1; + break; + case 119: + if (typeof n == "number" && Sv === n) + return 1; + break; + case 120: + if (typeof n == "number" && uc === n) + return 1; + break; + default: + if (typeof n == "number" && tl <= n) + return 1; + } + else + switch (e) { + case 61: + if (typeof n == "number" && n === 61) + return 1; + break; + case 62: + if (typeof n == "number" && n === 62) + return 1; + break; + case 63: + if (typeof n == "number" && n === 63) + return 1; + break; + case 64: + if (typeof n == "number" && n === 64) + return 1; + break; + case 65: + if (typeof n == "number" && n === 65) + return 1; + break; + case 66: + if (typeof n == "number" && n === 66) + return 1; + break; + case 67: + if (typeof n == "number" && n === 67) + return 1; + break; + case 68: + if (typeof n == "number" && n === 68) + return 1; + break; + case 69: + if (typeof n == "number" && n === 69) + return 1; + break; + case 70: + if (typeof n == "number" && n === 70) + return 1; + break; + case 71: + if (typeof n == "number" && n === 71) + return 1; + break; + case 72: + if (typeof n == "number" && n === 72) + return 1; + break; + case 73: + if (typeof n == "number" && n === 73) + return 1; + break; + case 74: + if (typeof n == "number" && n === 74) + return 1; + break; + case 75: + if (typeof n == "number" && n === 75) + return 1; + break; + case 76: + if (typeof n == "number" && n === 76) + return 1; + break; + case 77: + if (typeof n == "number" && n === 77) + return 1; + break; + case 78: + if (typeof n == "number" && n === 78) + return 1; + break; + case 79: + if (typeof n == "number" && n === 79) + return 1; + break; + case 80: + if (typeof n == "number" && n === 80) + return 1; + break; + case 81: + if (typeof n == "number" && n === 81) + return 1; + break; + case 82: + if (typeof n == "number" && n === 82) + return 1; + break; + case 83: + if (typeof n == "number" && n === 83) + return 1; + break; + case 84: + if (typeof n == "number" && n === 84) + return 1; + break; + case 85: + if (typeof n == "number" && n === 85) + return 1; + break; + case 86: + if (typeof n == "number" && n === 86) + return 1; + break; + case 87: + if (typeof n == "number" && n === 87) + return 1; + break; + case 88: + if (typeof n == "number" && n === 88) + return 1; + break; + case 89: + if (typeof n == "number" && n === 89) + return 1; + break; + case 90: + if (typeof n == "number" && n === 90) + return 1; + break; + default: + if (typeof n == "number" && n === 91) + return 1; + } + else if (31 <= e) + switch (e) { + case 31: + if (typeof n == "number" && n === 31) + return 1; + break; + case 32: + if (typeof n == "number" && n === 32) + return 1; + break; + case 33: + if (typeof n == "number" && n === 33) + return 1; + break; + case 34: + if (typeof n == "number" && n === 34) + return 1; + break; + case 35: + if (typeof n == "number" && n === 35) + return 1; + break; + case 36: + if (typeof n == "number" && n === 36) + return 1; + break; + case 37: + if (typeof n == "number" && n === 37) + return 1; + break; + case 38: + if (typeof n == "number" && n === 38) + return 1; + break; + case 39: + if (typeof n == "number" && n === 39) + return 1; + break; + case 40: + if (typeof n == "number" && n === 40) + return 1; + break; + case 41: + if (typeof n == "number" && n === 41) + return 1; + break; + case 42: + if (typeof n == "number" && n === 42) + return 1; + break; + case 43: + if (typeof n == "number" && n === 43) + return 1; + break; + case 44: + if (typeof n == "number" && n === 44) + return 1; + break; + case 45: + if (typeof n == "number" && n === 45) + return 1; + break; + case 46: + if (typeof n == "number" && n === 46) + return 1; + break; + case 47: + if (typeof n == "number" && n === 47) + return 1; + break; + case 48: + if (typeof n == "number" && n === 48) + return 1; + break; + case 49: + if (typeof n == "number" && n === 49) + return 1; + break; + case 50: + if (typeof n == "number" && n === 50) + return 1; + break; + case 51: + if (typeof n == "number" && n === 51) + return 1; + break; + case 52: + if (typeof n == "number" && n === 52) + return 1; + break; + case 53: + if (typeof n == "number" && n === 53) + return 1; + break; + case 54: + if (typeof n == "number" && n === 54) + return 1; + break; + case 55: + if (typeof n == "number" && n === 55) + return 1; + break; + case 56: + if (typeof n == "number" && n === 56) + return 1; + break; + case 57: + if (typeof n == "number" && n === 57) + return 1; + break; + case 58: + if (typeof n == "number" && n === 58) + return 1; + break; + case 59: + if (typeof n == "number" && n === 59) + return 1; + break; + default: + if (typeof n == "number" && n === 60) + return 1; + } + else + switch (e) { + case 0: + if (typeof n == "number" && !n) + return 1; + break; + case 1: + if (typeof n == "number" && n === 1) + return 1; + break; + case 2: + if (typeof n == "number" && n === 2) + return 1; + break; + case 3: + if (typeof n == "number" && n === 3) + return 1; + break; + case 4: + if (typeof n == "number" && n === 4) + return 1; + break; + case 5: + if (typeof n == "number" && n === 5) + return 1; + break; + case 6: + if (typeof n == "number" && n === 6) + return 1; + break; + case 7: + if (typeof n == "number" && n === 7) + return 1; + break; + case 8: + if (typeof n == "number" && n === 8) + return 1; + break; + case 9: + if (typeof n == "number" && n === 9) + return 1; + break; + case 10: + if (typeof n == "number" && n === 10) + return 1; + break; + case 11: + if (typeof n == "number" && n === 11) + return 1; + break; + case 12: + if (typeof n == "number" && n === 12) + return 1; + break; + case 13: + if (typeof n == "number" && n === 13) + return 1; + break; + case 14: + if (typeof n == "number" && n === 14) + return 1; + break; + case 15: + if (typeof n == "number" && n === 15) + return 1; + break; + case 16: + if (typeof n == "number" && n === 16) + return 1; + break; + case 17: + if (typeof n == "number" && n === 17) + return 1; + break; + case 18: + if (typeof n == "number" && n === 18) + return 1; + break; + case 19: + if (typeof n == "number" && n === 19) + return 1; + break; + case 20: + if (typeof n == "number" && n === 20) + return 1; + break; + case 21: + if (typeof n == "number" && n === 21) + return 1; + break; + case 22: + if (typeof n == "number" && n === 22) + return 1; + break; + case 23: + if (typeof n == "number" && n === 23) + return 1; + break; + case 24: + if (typeof n == "number" && n === 24) + return 1; + break; + case 25: + if (typeof n == "number" && n === 25) + return 1; + break; + case 26: + if (typeof n == "number" && n === 26) + return 1; + break; + case 27: + if (typeof n == "number" && n === 27) + return 1; + break; + case 28: + if (typeof n == "number" && n === 28) + return 1; + break; + case 29: + if (typeof n == "number" && n === 29) + return 1; + break; + default: + if (typeof n == "number" && n === 30) + return 1; + } + } else + switch (t[0]) { + case 0: + if (typeof n != "number" && n[0] === 0) { + var i = n[1], x = u(u(fL, t[1]), i), c = x && qn(t[2], n[2]); + return c; + } + break; + case 1: + if (typeof n != "number" && n[0] === 1) { + var s = n[1], p = u(u(xL, t[1]), s), y = p && qn(t[2], n[2]); + return y; + } + break; + case 2: + if (typeof n != "number" && n[0] === 2) { + var T = n[1], E = t[1], d = Wv(E[1], T[1]), w = d && qn(E[2], T[2]), G = w && qn(E[3], T[3]), A = G && (E[4] === T[4] ? 1 : 0); + return A; + } + break; + case 3: + if (typeof n != "number" && n[0] === 3) { + var S = n[1], M = t[1], K = Wv(M[1], S[1]); + if (K) + var V = S[2], f0 = u(u(kr0, M[2]), V); + else + var f0 = K; + var m0 = f0 && (M[3] === S[3] ? 1 : 0); + return m0; + } + break; + case 4: + if (typeof n != "number" && n[0] === 4) { + var k0 = Wv(t[1], n[1]), g0 = k0 && qn(t[2], n[2]), e0 = g0 && qn(t[3], n[3]); + return e0; + } + break; + case 5: + if (typeof n != "number" && n[0] === 5) { + var x0 = Wv(t[1], n[1]), l = x0 && qn(t[2], n[2]), c0 = l && qn(t[3], n[3]); + return c0; + } + break; + case 6: + if (typeof n != "number" && n[0] === 6) + return qn(t[1], n[1]); + break; + case 7: + if (typeof n != "number" && n[0] === 7) { + var t0 = qn(t[1], n[1]); + return t0 && Wv(t[2], n[2]); + } + break; + case 8: + if (typeof n != "number" && n[0] === 8) { + var o0 = Wv(t[1], n[1]), w0 = o0 && qn(t[2], n[2]), _0 = w0 && qn(t[3], n[3]); + return _0; + } + break; + case 9: + if (typeof n != "number" && n[0] === 9) { + var E0 = n[1]; + return u(u(dr0, t[1]), E0); + } + break; + case 10: + if (typeof n != "number" && n[0] === 10) { + var U0 = n[1], b = u(u(fL, t[1]), U0), R0 = b && (t[2] == n[2] ? 1 : 0), X = R0 && qn(t[3], n[3]); + return X; + } + break; + default: + if (typeof n != "number" && n[0] === 11) { + var s0 = n[1], hr = u(u(xL, t[1]), s0), Ar = hr && (t[2] == n[2] ? 1 : 0), or = Ar && qn(t[3], n[3]); + return or; + } + } + return 0; + }), N(dr0, function(t, n) { + if (t) { + if (n) + return 1; + } else if (!n) + return 1; + return 0; + }), N(fL, function(t, n) { + switch (t) { + case 0: + if (!n) + return 1; + break; + case 1: + if (n === 1) + return 1; + break; + case 2: + if (n === 2) + return 1; + break; + case 3: + if (n === 3) + return 1; + break; + default: + if (4 <= n) + return 1; + } + return 0; + }), N(xL, function(t, n) { + switch (t) { + case 0: + if (!n) + return 1; + break; + case 1: + if (n === 1) + return 1; + break; + default: + if (2 <= n) + return 1; + } + return 0; + }), N(kr0, function(t, n) { + var e = qn(t[1], n[1]), i = e && qn(t[2], n[2]), x = i && qn(t[3], n[3]); + return x; + }); + function wr0(t) { + if (typeof t == "number") { + var n = t; + if (61 <= n) { + if (92 <= n) + switch (n) { + case 92: + return Ekr; + case 93: + return Skr; + case 94: + return gkr; + case 95: + return Fkr; + case 96: + return Tkr; + case 97: + return Okr; + case 98: + return Ikr; + case 99: + return Akr; + case 100: + return Nkr; + case 101: + return Ckr; + case 102: + return Pkr; + case 103: + return Dkr; + case 104: + return Lkr; + case 105: + return Rkr; + case 106: + return jkr; + case 107: + return Gkr; + case 108: + return Mkr; + case 109: + return Bkr; + case 110: + return qkr; + case 111: + return Ukr; + case 112: + return Hkr; + case 113: + return Xkr; + case 114: + return Ykr; + case 115: + return Vkr; + case 116: + return zkr; + case 117: + return Kkr; + case 118: + return Wkr; + case 119: + return Jkr; + case 120: + return $kr; + default: + return Zkr; + } + switch (n) { + case 61: + return Vdr; + case 62: + return zdr; + case 63: + return Kdr; + case 64: + return Wdr; + case 65: + return Jdr; + case 66: + return $dr; + case 67: + return Zdr; + case 68: + return Qdr; + case 69: + return rkr; + case 70: + return ekr; + case 71: + return nkr; + case 72: + return tkr; + case 73: + return ukr; + case 74: + return ikr; + case 75: + return fkr; + case 76: + return xkr; + case 77: + return okr; + case 78: + return akr; + case 79: + return ckr; + case 80: + return skr; + case 81: + return vkr; + case 82: + return lkr; + case 83: + return bkr; + case 84: + return pkr; + case 85: + return mkr; + case 86: + return _kr; + case 87: + return ykr; + case 88: + return hkr; + case 89: + return dkr; + case 90: + return kkr; + default: + return wkr; + } + } + if (31 <= n) + switch (n) { + case 31: + return mdr; + case 32: + return _dr; + case 33: + return ydr; + case 34: + return hdr; + case 35: + return ddr; + case 36: + return kdr; + case 37: + return wdr; + case 38: + return Edr; + case 39: + return Sdr; + case 40: + return gdr; + case 41: + return Fdr; + case 42: + return Tdr; + case 43: + return Odr; + case 44: + return Idr; + case 45: + return Adr; + case 46: + return Ndr; + case 47: + return Cdr; + case 48: + return Pdr; + case 49: + return Ddr; + case 50: + return Ldr; + case 51: + return Rdr; + case 52: + return jdr; + case 53: + return Gdr; + case 54: + return Mdr; + case 55: + return Bdr; + case 56: + return qdr; + case 57: + return Udr; + case 58: + return Hdr; + case 59: + return Xdr; + default: + return Ydr; + } + switch (n) { + case 0: + return Mhr; + case 1: + return Bhr; + case 2: + return qhr; + case 3: + return Uhr; + case 4: + return Hhr; + case 5: + return Xhr; + case 6: + return Yhr; + case 7: + return Vhr; + case 8: + return zhr; + case 9: + return Khr; + case 10: + return Whr; + case 11: + return Jhr; + case 12: + return $hr; + case 13: + return Zhr; + case 14: + return Qhr; + case 15: + return rdr; + case 16: + return edr; + case 17: + return ndr; + case 18: + return tdr; + case 19: + return udr; + case 20: + return idr; + case 21: + return fdr; + case 22: + return xdr; + case 23: + return odr; + case 24: + return adr; + case 25: + return cdr; + case 26: + return sdr; + case 27: + return vdr; + case 28: + return ldr; + case 29: + return bdr; + default: + return pdr; + } + } else + switch (t[0]) { + case 0: + return Qkr; + case 1: + return rwr; + case 2: + return ewr; + case 3: + return nwr; + case 4: + return twr; + case 5: + return uwr; + case 6: + return iwr; + case 7: + return fwr; + case 8: + return xwr; + case 9: + return owr; + case 10: + return awr; + default: + return cwr; + } + } + function oL(t) { + if (typeof t == "number") { + var n = t; + if (61 <= n) { + if (92 <= n) + switch (n) { + case 92: + return ihr; + case 93: + return fhr; + case 94: + return xhr; + case 95: + return ohr; + case 96: + return ahr; + case 97: + return chr; + case 98: + return shr; + case 99: + return vhr; + case 100: + return lhr; + case 101: + return bhr; + case 102: + return phr; + case 103: + return mhr; + case 104: + return _hr; + case 105: + return yhr; + case 106: + return hhr; + case 107: + return dhr; + case 108: + return khr; + case 109: + return whr; + case 110: + return Ehr; + case 111: + return Shr; + case 112: + return ghr; + case 113: + return Fhr; + case 114: + return Thr; + case 115: + return Ohr; + case 116: + return Ihr; + case 117: + return Ahr; + case 118: + return Nhr; + case 119: + return Chr; + case 120: + return Phr; + default: + return Dhr; + } + switch (n) { + case 61: + return Oyr; + case 62: + return Iyr; + case 63: + return Ayr; + case 64: + return Nyr; + case 65: + return Cyr; + case 66: + return Pyr; + case 67: + return Dyr; + case 68: + return Lyr; + case 69: + return Ryr; + case 70: + return jyr; + case 71: + return Gyr; + case 72: + return Myr; + case 73: + return Byr; + case 74: + return qyr; + case 75: + return Uyr; + case 76: + return Hyr; + case 77: + return Xyr; + case 78: + return Yyr; + case 79: + return Vyr; + case 80: + return zyr; + case 81: + return Kyr; + case 82: + return Wyr; + case 83: + return Jyr; + case 84: + return $yr; + case 85: + return Zyr; + case 86: + return Qyr; + case 87: + return rhr; + case 88: + return ehr; + case 89: + return nhr; + case 90: + return thr; + default: + return uhr; + } + } + if (31 <= n) + switch (n) { + case 31: + return Z_r; + case 32: + return Q_r; + case 33: + return ryr; + case 34: + return eyr; + case 35: + return nyr; + case 36: + return tyr; + case 37: + return uyr; + case 38: + return iyr; + case 39: + return fyr; + case 40: + return xyr; + case 41: + return oyr; + case 42: + return ayr; + case 43: + return cyr; + case 44: + return syr; + case 45: + return vyr; + case 46: + return lyr; + case 47: + return byr; + case 48: + return pyr; + case 49: + return myr; + case 50: + return _yr; + case 51: + return yyr; + case 52: + return hyr; + case 53: + return dyr; + case 54: + return kyr; + case 55: + return wyr; + case 56: + return Eyr; + case 57: + return Syr; + case 58: + return gyr; + case 59: + return Fyr; + default: + return Tyr; + } + switch (n) { + case 0: + return k_r; + case 1: + return w_r; + case 2: + return E_r; + case 3: + return S_r; + case 4: + return g_r; + case 5: + return F_r; + case 6: + return T_r; + case 7: + return O_r; + case 8: + return I_r; + case 9: + return A_r; + case 10: + return N_r; + case 11: + return C_r; + case 12: + return P_r; + case 13: + return D_r; + case 14: + return L_r; + case 15: + return R_r; + case 16: + return j_r; + case 17: + return G_r; + case 18: + return M_r; + case 19: + return B_r; + case 20: + return q_r; + case 21: + return U_r; + case 22: + return H_r; + case 23: + return X_r; + case 24: + return Y_r; + case 25: + return V_r; + case 26: + return z_r; + case 27: + return K_r; + case 28: + return W_r; + case 29: + return J_r; + default: + return $_r; + } + } else + switch (t[0]) { + case 2: + return t[1][3]; + case 3: + return t[1][2][3]; + case 5: + var e = Te(Lhr, t[3]); + return Te(Rhr, Te(t[2], e)); + case 9: + return t[1] ? jhr : Ghr; + case 0: + case 1: + return t[2]; + case 6: + case 7: + return t[1]; + default: + return t[3]; + } + } + function Ml(t) { + return u(et(d_r), t); + } + function aL(t, n) { + var e = t && t[1], i = 0; + if (typeof n == "number") + if (Pn === n) + var x = u_r, c = i_r; + else + i = 1; + else + switch (n[0]) { + case 3: + var x = f_r, c = x_r; + break; + case 5: + var x = o_r, c = a_r; + break; + case 6: + case 9: + i = 1; + break; + case 0: + case 10: + var x = s_r, c = v_r; + break; + case 1: + case 11: + var x = l_r, c = b_r; + break; + case 2: + case 8: + var x = p_r, c = m_r; + break; + default: + var x = __r, c = y_r; + } + if (i) + var x = c_r, c = Ml(oL(n)); + return e ? Te(x, Te(h_r, c)) : c; + } + function cL(t) { + return 45 < t ? 46 < t ? -1 : 0 : -1; + } + function jc(t) { + if (8 < t) { + if (Ev < t) { + if (ef < t) { + if (Do < t) + return -1; + if (Qx < t) { + var n = t <= Ma ? 1 : 0, e = n && -1; + return e; + } + if (fo < t) { + if (xc < t) { + if (ox < t) { + var i = t <= Eo ? 1 : 0, x = i && -1; + return x; + } + return 0; + } + return -1; + } + if (Co < t) { + var c = t <= mo ? 1 : 0, s = c && -1; + return s; + } + return 0; + } + return -1; + } + return Vr(BDr, t - 9 | 0) - 1 | 0; + } + return -1; + } + function pn(t) { + return 47 < t ? 57 < t ? -1 : 0 : -1; + } + function Nn(t) { + return 47 < t ? Ri < t ? -1 : Vr($Lr, t + Wt | 0) - 1 | 0 : -1; + } + function wi(t) { + return 47 < t ? Xt < t ? -1 : Vr(ULr, t + Wt | 0) - 1 | 0 : -1; + } + function Zv(t) { + return 35 < t ? In < t ? -1 : Vr(cLr, t + vu | 0) - 1 | 0 : -1; + } + function Zm(t) { + return 87 < t ? uc < t ? -1 : Vr(eN, t - 88 | 0) - 1 | 0 : -1; + } + function Qm(t) { + return 45 < t ? 57 < t ? -1 : Vr(ZLr, t + v1 | 0) - 1 | 0 : -1; + } + function Er0(t) { + return 35 < t ? In < t ? -1 : Vr(sLr, t + vu | 0) - 1 | 0 : -1; + } + function A1(t) { + return 47 < t ? br < t ? -1 : Vr(MLr, t + Wt | 0) - 1 | 0 : -1; + } + function Qv(t) { + return 35 < t ? In < t ? -1 : Vr(vLr, t + vu | 0) - 1 | 0 : -1; + } + function N1(t) { + if (8 < t) { + if (Ev < t) { + if (ef < t) { + if (Do < t) + return -1; + if (Qx < t) { + var n = t <= Ma ? 1 : 0, e = n && -1; + return e; + } + if (fo < t) { + if (xc < t) { + if (ox < t) { + var i = t <= Eo ? 1 : 0, x = i && -1; + return x; + } + return 0; + } + return -1; + } + if (Co < t) { + var c = t <= mo ? 1 : 0, s = c && -1; + return s; + } + return 0; + } + return -1; + } + return Vr(qDr, t - 9 | 0) - 1 | 0; + } + return -1; + } + function r9(t) { + return 45 < t ? R7 < t ? -1 : Vr(rLr, t + v1 | 0) - 1 | 0 : -1; + } + function Sr0(t) { + return 35 < t ? In < t ? -1 : Vr(lLr, t + vu | 0) - 1 | 0 : -1; + } + function e9(t) { + return 47 < t ? 95 < t ? -1 : Vr(sRr, t + Wt | 0) - 1 | 0 : -1; + } + function n9(t) { + return 47 < t ? Xt < t ? -1 : Vr(lRr, t + Wt | 0) - 1 | 0 : -1; + } + function t9(t) { + return 47 < t ? Xt < t ? -1 : Vr(HLr, t + Wt | 0) - 1 | 0 : -1; + } + function u9(t) { + return 35 < t ? In < t ? -1 : Vr(bLr, t + vu | 0) - 1 | 0 : -1; + } + function i9(t) { + if (8 < t) { + if (Ev < t) { + if (ef < t) { + if (Do < t) + return -1; + if (Qx < t) { + var n = t <= Ma ? 1 : 0, e = n && -1; + return e; + } + if (fo < t) { + if (xc < t) { + if (ox < t) { + var i = t <= Eo ? 1 : 0, x = i && -1; + return x; + } + return 0; + } + return -1; + } + if (Co < t) { + var c = t <= mo ? 1 : 0, s = c && -1; + return s; + } + return 0; + } + return -1; + } + return Vr(UDr, t - 9 | 0) - 1 | 0; + } + return -1; + } + function f9(t) { + return 44 < t ? 57 < t ? -1 : Vr(KDr, t + mv | 0) - 1 | 0 : -1; + } + function Gc(t) { + return 47 < t ? 49 < t ? -1 : 0 : -1; + } + function x9(t) { + return 47 < t ? 95 < t ? -1 : Vr(WDr, t + Wt | 0) - 1 | 0 : -1; + } + function C1(t) { + return 47 < t ? 57 < t ? -1 : Vr(vRr, t + Wt | 0) - 1 | 0 : -1; + } + function o9(t) { + return 35 < t ? In < t ? -1 : Vr(pLr, t + vu | 0) - 1 | 0 : -1; + } + function gr0(t) { + return t1 < t ? Av < t ? -1 : 0 : -1; + } + function Ui(t) { + return 60 < t ? 61 < t ? -1 : 0 : -1; + } + function Fr0(t) { + if (-1 < t) { + if (In < t) { + if (ts < t) { + if ($u < t) { + var n = t <= Hu ? 1 : 0, e = n && -1; + return e; + } + return 0; + } + return -1; + } + return Vr(fLr, t) - 1 | 0; + } + return -1; + } + function r2(t) { + return 47 < t ? Xt < t ? -1 : Vr(XLr, t + Wt | 0) - 1 | 0 : -1; + } + function a9(t) { + return 47 < t ? Xt < t ? -1 : Vr(JLr, t + Wt | 0) - 1 | 0 : -1; + } + function sL(t) { + return 60 < t ? 62 < t ? -1 : Vr(rN, t + SS | 0) - 1 | 0 : -1; + } + function c9(t) { + return 65 < t ? 98 < t ? -1 : Vr(eN, t - 66 | 0) - 1 | 0 : -1; + } + function Bt(t) { + return 35 < t ? In < t ? -1 : Vr(mLr, t + vu | 0) - 1 | 0 : -1; + } + function s9(t) { + return Av < t ? f1 < t ? -1 : 0 : -1; + } + function zu(t) { + return 47 < t ? 55 < t ? -1 : 0 : -1; + } + function vL(t) { + return Fv < t ? Xt < t ? -1 : 0 : -1; + } + function v9(t) { + return Xt < t ? cf < t ? -1 : 0 : -1; + } + function Bl(t) { + return 98 < t ? 99 < t ? -1 : 0 : -1; + } + function Cs(t) { + return 47 < t ? 48 < t ? -1 : 0 : -1; + } + function ql(t) { + if (8 < t) { + if (Ev < t) { + if (ef < t) { + if (Do < t) + return -1; + if (Qx < t) { + var n = t <= Ma ? 1 : 0, e = n && -1; + return e; + } + if (fo < t) { + if (xc < t) { + if (ox < t) { + var i = t <= Eo ? 1 : 0, x = i && -1; + return x; + } + return 0; + } + return -1; + } + if (Co < t) { + var c = t <= mo ? 1 : 0, s = c && -1; + return s; + } + return 0; + } + return -1; + } + return Vr(HDr, t - 9 | 0) - 1 | 0; + } + return -1; + } + function l9(t) { + return 45 < t ? R7 < t ? -1 : Vr(JDr, t + v1 | 0) - 1 | 0 : -1; + } + function b9(t) { + return 78 < t ? cf < t ? -1 : Vr(eN, t - 79 | 0) - 1 | 0 : -1; + } + function Tr0(t) { + return 41 < t ? 42 < t ? -1 : 0 : -1; + } + function Or0(t) { + return 35 < t ? In < t ? -1 : Vr(_Lr, t + vu | 0) - 1 | 0 : -1; + } + function p9(t) { + return 47 < t ? R7 < t ? -1 : Vr(BLr, t + Wt | 0) - 1 | 0 : -1; + } + function Ps(t) { + return 35 < t ? In < t ? -1 : Vr(yLr, t + vu | 0) - 1 | 0 : -1; + } + function Ir0(t) { + return 41 < t ? 61 < t ? -1 : Vr(KLr, t + _y | 0) - 1 | 0 : -1; + } + function P1(t) { + return 44 < t ? 48 < t ? -1 : Vr(LLr, t + mv | 0) - 1 | 0 : -1; + } + function Ar0(t) { + return 44 < t ? 45 < t ? -1 : 0 : -1; + } + function Nr0(t) { + return L7 < t ? j7 < t ? -1 : 0 : -1; + } + function m9(t) { + return Zc < t ? is < t ? -1 : 0 : -1; + } + function Cr0(t) { + return 99 < t ? ti < t ? -1 : 0 : -1; + } + function _9(t) { + return 47 < t ? Ri < t ? -1 : Vr(QLr, t + Wt | 0) - 1 | 0 : -1; + } + function y9(t) { + return Pn < t ? t1 < t ? -1 : 0 : -1; + } + function D1(t) { + return 45 < t ? 57 < t ? -1 : Vr(nRr, t + v1 | 0) - 1 | 0 : -1; + } + function Pr0(t) { + return 35 < t ? In < t ? -1 : Vr(hLr, t + vu | 0) - 1 | 0 : -1; + } + function L1(t) { + return 47 < t ? ts < t ? -1 : Vr(bRr, t + Wt | 0) - 1 | 0 : -1; + } + function lL(t) { + return 35 < t ? In < t ? -1 : Vr(dLr, t + vu | 0) - 1 | 0 : -1; + } + function xi(t) { + return 9 < t ? 10 < t ? -1 : 0 : -1; + } + function Dr0(t) { + return 35 < t ? In < t ? -1 : Vr(kLr, t + vu | 0) - 1 | 0 : -1; + } + function Lr0(t) { + return 96 < t ? 97 < t ? -1 : 0 : -1; + } + function Mc(t) { + return 35 < t ? In < t ? -1 : Vr(wLr, t + vu | 0) - 1 | 0 : -1; + } + function h9(t) { + return 35 < t ? In < t ? -1 : Vr(ELr, t + vu | 0) - 1 | 0 : -1; + } + function Ds(t) { + return 47 < t ? 95 < t ? -1 : Vr(YLr, t + Wt | 0) - 1 | 0 : -1; + } + function Rr0(t) { + return 35 < t ? In < t ? -1 : Vr(SLr, t + vu | 0) - 1 | 0 : -1; + } + function Ul(t) { + return ti < t ? R7 < t ? -1 : 0 : -1; + } + function jr0(t) { + if (8 < t) { + if (Ev < t) { + if (ef < t) { + if (Do < t) + return -1; + if (Qx < t) { + var n = t <= Ma ? 1 : 0, e = n && -1; + return e; + } + if (fo < t) { + if (xc < t) { + if (ox < t) { + var i = t <= Eo ? 1 : 0, x = i && -1; + return x; + } + return 0; + } + return -1; + } + if (Co < t) { + var c = t <= mo ? 1 : 0, s = c && -1; + return s; + } + return 0; + } + return -1; + } + return Vr(YDr, t - 9 | 0) - 1 | 0; + } + return -1; + } + function Gr0(t) { + return 35 < t ? In < t ? -1 : Vr(tRr, t + vu | 0) - 1 | 0 : -1; + } + function d9(t) { + return 41 < t ? 47 < t ? -1 : Vr(CLr, t + _y | 0) - 1 | 0 : -1; + } + function k9(t) { + return 35 < t ? In < t ? -1 : Vr(gLr, t + vu | 0) - 1 | 0 : -1; + } + function Mr0(t) { + return 35 < t ? In < t ? -1 : Vr(FLr, t + vu | 0) - 1 | 0 : -1; + } + function Br0(t) { + return z2 < t ? Sv < t ? -1 : 0 : -1; + } + function w9(t) { + return 35 < t ? In < t ? -1 : Vr(TLr, t + vu | 0) - 1 | 0 : -1; + } + function f7(t) { + return 47 < t ? R7 < t ? -1 : Vr(qLr, t + Wt | 0) - 1 | 0 : -1; + } + function E9(t) { + return 42 < t ? 57 < t ? -1 : Vr(uLr, t + xy | 0) - 1 | 0 : -1; + } + function Bc(t) { + return 45 < t ? 95 < t ? -1 : Vr(aLr, t + v1 | 0) - 1 | 0 : -1; + } + function Ls(t) { + return f1 < t ? A2 < t ? -1 : 0 : -1; + } + function qr0(t) { + return 46 < t ? 47 < t ? -1 : 0 : -1; + } + function Ur0(t) { + return 57 < t ? 58 < t ? -1 : 0 : -1; + } + function dn(t) { + return 35 < t ? In < t ? -1 : Vr(OLr, t + vu | 0) - 1 | 0 : -1; + } + function Hr0(t) { + for (; ; ) { + gn(t); + var n = j(t), e = In < n ? 1 : Vr(xRr, n + 1 | 0) - 1 | 0; + if (3 < e >>> 0) + var i = q(t); + else + switch (e) { + case 0: + var i = 1; + break; + case 1: + var i = 2; + break; + case 2: + var i = 0; + break; + default: + if (G0(t, 2), Ls(j(t)) === 0) { + var x = L1(j(t)); + if (x === 0) + if (Nn(j(t)) === 0 && Nn(j(t)) === 0) + var c = Nn(j(t)) !== 0 ? 1 : 0, i = c && q(t); + else + var i = q(t); + else if (x === 1 && Nn(j(t)) === 0) + for (; ; ) { + var s = A1(j(t)); + if (s !== 0) { + var p = s !== 1 ? 1 : 0, i = p && q(t); + break; + } + } + else + var i = q(t); + } else + var i = q(t); + } + if (2 < i >>> 0) + throw [0, Sn, swr]; + switch (i) { + case 0: + continue; + case 1: + return 1; + default: + if (nL(br0(t))) + continue; + return mr0(t, 1), 0; + } + } + } + function S9(t, n) { + var e = n - t[3][2] | 0; + return [0, hr0(t), e]; + } + function Hl(t, n, e) { + var i = S9(t, e), x = S9(t, n); + return [0, t[1], x, i]; + } + function ju(t, n) { + return S9(t, n[6]); + } + function h7(t, n) { + return S9(t, n[3]); + } + function nt(t, n) { + return Hl(t, n[6], n[3]); + } + function Xr0(t, n) { + var e = 0; + if (typeof n == "number") + e = 1; + else + switch (n[0]) { + case 2: + var i = n[1][1]; + break; + case 3: + return n[1][1]; + case 4: + var i = n[1]; + break; + case 7: + var i = n[2]; + break; + case 5: + case 8: + return n[1]; + default: + e = 1; + } + return e ? nt(t, t[2]) : i; + } + function Gu(t, n, e) { + return [0, t[1], t[2], t[3], t[4], t[5], [0, [0, n, e], t[6]], t[7]]; + } + function Yr0(t, n, e) { + return Gu(t, n, [10, Ml(e)]); + } + function bL(t, n, e, i) { + return Gu(t, n, [12, e, i]); + } + function Ei(t, n) { + return Gu(t, n, GDr); + } + function d7(t, n) { + var e = n[3], i = [0, hr0(t) + 1 | 0, e]; + return [0, t[1], t[2], i, t[4], t[5], t[6], t[7]]; + } + function Vr0(t) { + var n = un(t); + return n !== 0 && Xt === It(t, n - 1 | 0) ? m7(t, 0, n - 1 | 0) : t; + } + function Si(t, n, e, i, x) { + var c = [0, t[1], n, e], s = Mt(i), p = x ? 0 : 1; + return [0, c, [0, p, s, t[7][3][1] < c[2][1] ? 1 : 0]]; + } + function qc(t, n) { + if (It(n, 0) === 45) + var e = m7(n, 1, un(n) - 1 | 0), i = 1; + else + var e = n, i = 0; + switch (t) { + case 1: + try { + var x = jv(Rv(Te(DDr, e))), c = x; + } catch (T) { + if (T = Et(T), T[1] !== q7) + throw T; + var c = ke(Te(LDr, e)); + } + break; + case 0: + case 3: + try { + var s = jv(Rv(e)), c = s; + } catch (T) { + if (T = Et(T), T[1] !== q7) + throw T; + var c = ke(Te(RDr, e)); + } + break; + default: + try { + var p = ol(e), c = p; + } catch (T) { + if (T = Et(T), T[1] !== q7) + throw T; + var c = ke(Te(jDr, e)); + } + } + var y = i ? -c : c; + return [10, t, y, n]; + } + function Hi(t, n) { + if (It(n, 0) === 45) + var e = m7(n, 1, un(n) - 1 | 0), i = 1; + else + var e = n, i = 0; + if (2 <= t) { + var x = Vr0(e); + try { + var c = ol(x), s = c; + } catch (w) { + if (w = Et(w), w[1] !== q7) + throw w; + var s = ke(Te(CDr, x)); + } + var p = s; + } else { + var y = Vr0(e); + try { + var T = jv(Rv(y)), E = T; + } catch (G) { + if (G = Et(G), G[1] !== q7) + throw G; + var E = ke(Te(PDr, y)); + } + var p = E; + } + var d = i ? -p : p; + return [11, t, d, n]; + } + function zr0(t, n, e) { + return nL(e) ? t : Gu(t, n, 37); + } + function Kr0(t, n, e, i, x) { + var c = Hl(t, n + e[6] | 0, n + e[3] | 0); + return [0, c, jl(e, i, (Jm(e) - i | 0) - x | 0)]; + } + function Wr0(t, n) { + for (var e = t[2][6], i = [0, n, n.length - 1, lr0, vr0, sr0, cr0, ar0, or0, xr0, fr0, ir0, ur0], x = $n(n.length - 1), c = t; ; ) { + gn(i); + var s = j(i), p = 92 < s ? 1 : Vr(jLr, s + 1 | 0) - 1 | 0; + if (2 < p >>> 0) + var y = q(i); + else + switch (p) { + case 0: + var y = 2; + break; + case 1: + for (; ; ) { + G0(i, 3); + var T = j(i); + if (-1 < T) + if (91 < T) + var E = T <= 92 ? 1 : 0, d = E && -1; + else + var d = 0; + else + var d = -1; + if (d !== 0) { + var y = q(i); + break; + } + } + break; + default: + if (G0(i, 3), Ls(j(i)) === 0) { + var w = L1(j(i)); + if (w === 0) + if (Nn(j(i)) === 0 && Nn(j(i)) === 0) + var G = Nn(j(i)) !== 0 ? 1 : 0, y = G && q(i); + else + var y = q(i); + else if (w === 1 && Nn(j(i)) === 0) + for (; ; ) { + var A = A1(j(i)); + if (A !== 0) { + var y = A === 1 ? 1 : q(i); + break; + } + } + else + var y = q(i); + } else + var y = q(i); + } + if (3 < y >>> 0) + return ke(IDr); + switch (y) { + case 0: + var S = Kr0(c, e, i, 2, 0), M = S[1], K = Bi(Te(ADr, S[2])), V = 0 <= K ? 1 : 0, f0 = V && (K <= 55295 ? 1 : 0); + if (f0) + var k0 = f0; + else + var m0 = 57344 <= K ? 1 : 0, k0 = m0 && (K <= lI ? 1 : 0); + var g0 = k0 ? zr0(c, M, K) : Gu(c, M, 37); + S1(x, K); + var c = g0; + continue; + case 1: + var e0 = Kr0(c, e, i, 3, 1), x0 = Bi(Te(NDr, e0[2])), l = zr0(c, e0[1], x0); + S1(x, x0); + var c = l; + continue; + case 2: + return [0, c, Mt(x)]; + default: + Gl(i, x); + continue; + } + } + } + function Rt(t, n, e) { + var i = Ei(t, nt(t, n)); + return $v(n), o(e, i, n); + } + function R1(t, n, e) { + for (var i = t; ; ) { + gn(e); + var x = j(e); + if (-1 < x) + if (42 < x) + var c = x <= Hu ? 1 : 0, s = c && ($u < x ? 1 : 0); + else + var s = Vr(VDr, x) - 1 | 0; + else + var s = -1; + if (3 < s >>> 0) + var p = q(e); + else + switch (s) { + case 0: + for (; ; ) { + G0(e, 3); + var y = j(e); + if (-1 < y) + if (41 < y) + if (42 < y) + if ($u < y) + var T = y <= Hu ? 1 : 0, E = T && -1; + else + var E = 0; + else + var E = -1; + else + var E = Vr(eRr, y) - 1 | 0; + else + var E = -1; + if (E !== 0) { + var p = q(e); + break; + } + } + break; + case 1: + var p = 0; + break; + case 2: + G0(e, 0); + var d = xi(j(e)) !== 0 ? 1 : 0, p = d && q(e); + break; + default: + G0(e, 3); + var w = j(e), G = 44 < w ? 47 < w ? -1 : Vr(aRr, w + mv | 0) - 1 | 0 : -1, p = G === 0 ? qr0(j(e)) === 0 ? 2 : q(e) : G === 1 ? 1 : q(e); + } + if (3 < p >>> 0) { + var A = Ei(i, nt(i, e)); + return [0, A, h7(A, e)]; + } + switch (p) { + case 0: + var S = d7(i, e); + Gl(e, n); + var i = S; + continue; + case 1: + var M = i[4] ? bL(i, nt(i, e), bwr, lwr) : i; + return [0, M, h7(M, e)]; + case 2: + if (i[4]) + return [0, i, h7(i, e)]; + hn(n, pwr); + continue; + default: + Gl(e, n); + continue; + } + } + } + function e2(t, n, e) { + for (; ; ) { + gn(e); + var i = j(e), x = 13 < i ? Hu < i ? 1 : $u < i ? 2 : 1 : Vr(NLr, i + 1 | 0) - 1 | 0; + if (3 < x >>> 0) + var c = q(e); + else + switch (x) { + case 0: + var c = 0; + break; + case 1: + for (; ; ) { + G0(e, 2); + var s = j(e); + if (-1 < s) + if (12 < s) + if (13 < s) + if ($u < s) + var p = s <= Hu ? 1 : 0, y = p && -1; + else + var y = 0; + else + var y = -1; + else + var y = Vr(MDr, s) - 1 | 0; + else + var y = -1; + if (y !== 0) { + var c = q(e); + break; + } + } + break; + case 2: + var c = 1; + break; + default: + G0(e, 1); + var c = xi(j(e)) === 0 ? 1 : q(e); + } + if (2 < c >>> 0) + return ke(mwr); + switch (c) { + case 0: + return [0, t, h7(t, e)]; + case 1: + var T = h7(t, e), E = d7(t, e), d = Jm(e); + return [0, E, [0, T[1], T[2] - d | 0]]; + default: + Gl(e, n); + continue; + } + } + } + function Jr0(t, n) { + function e(k0) { + return G0(k0, 3), zu(j(k0)) === 0 ? 2 : q(k0); + } + gn(n); + var i = j(n), x = uc < i ? Hu < i ? 1 : $u < i ? 2 : 1 : Vr(nLr, i + 1 | 0) - 1 | 0; + if (14 < x >>> 0) + var c = q(n); + else + switch (x) { + case 1: + var c = 16; + break; + case 2: + var c = 15; + break; + case 3: + G0(n, 15); + var c = xi(j(n)) === 0 ? 15 : q(n); + break; + case 4: + G0(n, 4); + var c = zu(j(n)) === 0 ? e(n) : q(n); + break; + case 5: + G0(n, 11); + var c = zu(j(n)) === 0 ? e(n) : q(n); + break; + case 7: + var c = 5; + break; + case 8: + var c = 6; + break; + case 9: + var c = 7; + break; + case 10: + var c = 8; + break; + case 11: + var c = 9; + break; + case 12: + G0(n, 14); + var s = L1(j(n)); + if (s === 0) + var c = Nn(j(n)) === 0 && Nn(j(n)) === 0 && Nn(j(n)) === 0 ? 12 : q(n); + else if (s === 1 && Nn(j(n)) === 0) + for (; ; ) { + var p = A1(j(n)); + if (p !== 0) { + var c = p === 1 ? 13 : q(n); + break; + } + } + else + var c = q(n); + break; + case 13: + var c = 10; + break; + case 14: + G0(n, 14); + var c = Nn(j(n)) === 0 && Nn(j(n)) === 0 ? 1 : q(n); + break; + default: + var c = 0; + } + if (16 < c >>> 0) + return ke(pDr); + switch (c) { + case 1: + var y = Se(n); + return [0, t, y, [0, Bi(Te(mDr, y))], 0]; + case 2: + var T = Se(n), E = Bi(Te(_Dr, T)); + return N4 <= E ? [0, t, T, [0, E >>> 3 | 0, 48 + (E & 7) | 0], 1] : [0, t, T, [0, E], 1]; + case 3: + var d = Se(n); + return [0, t, d, [0, Bi(Te(yDr, d))], 1]; + case 4: + return [0, t, hDr, [0, 0], 0]; + case 5: + return [0, t, dDr, [0, 8], 0]; + case 6: + return [0, t, kDr, [0, 12], 0]; + case 7: + return [0, t, wDr, [0, 10], 0]; + case 8: + return [0, t, EDr, [0, 13], 0]; + case 9: + return [0, t, SDr, [0, 9], 0]; + case 10: + return [0, t, gDr, [0, 11], 0]; + case 11: + var w = Se(n); + return [0, t, w, [0, Bi(Te(FDr, w))], 1]; + case 12: + var G = Se(n); + return [0, t, G, [0, Bi(Te(TDr, m7(G, 1, un(G) - 1 | 0)))], 0]; + case 13: + var A = Se(n), S = Bi(Te(ODr, m7(A, 2, un(A) - 3 | 0))), M = lI < S ? Ei(t, nt(t, n)) : t; + return [0, M, A, [0, S], 0]; + case 14: + var K = Se(n), V = Ll(n); + return [0, Ei(t, nt(t, n)), K, V, 0]; + case 15: + var f0 = Se(n); + return [0, d7(t, n), f0, [0], 0]; + default: + var m0 = Se(n); + return [0, t, m0, Ll(n), 0]; + } + } + function $r0(t, n, e, i, x, c) { + for (var s = t, p = x; ; ) { + gn(c); + var y = j(c), T = 92 < y ? 1 : Vr(RLr, y + 1 | 0) - 1 | 0; + if (4 < T >>> 0) + var E = q(c); + else + switch (T) { + case 0: + var E = 3; + break; + case 1: + for (; ; ) { + G0(c, 4); + var d = j(c); + if (-1 < d) + if (91 < d) + var w = d <= 92 ? 1 : 0, G = w && -1; + else + var G = Vr(ZDr, d) - 1 | 0; + else + var G = -1; + if (G !== 0) { + var E = q(c); + break; + } + } + break; + case 2: + var E = 2; + break; + case 3: + var E = 0; + break; + default: + var E = 1; + } + if (4 < E >>> 0) + return ke(_wr); + switch (E) { + case 0: + var A = Se(c); + if (hn(i, A), qn(n, A)) + return [0, s, h7(s, c), p]; + hn(e, A); + continue; + case 1: + hn(i, ywr); + var S = Jr0(s, c), M = S[4], K = M || p; + hn(i, S[2]); + var V = S[3]; + pz(function(w0) { + return S1(e, w0); + }, V); + var s = S[1], p = K; + continue; + case 2: + var f0 = Se(c); + hn(i, f0); + var m0 = d7(Ei(s, nt(s, c)), c); + return hn(e, f0), [0, m0, h7(m0, c), p]; + case 3: + var k0 = Se(c); + hn(i, k0); + var g0 = Ei(s, nt(s, c)); + return hn(e, k0), [0, g0, h7(g0, c), p]; + default: + var e0 = c[6], x0 = c[3] - e0 | 0, l = Lt(x0 * 4 | 0), c0 = Rl(c[1], e0, x0, l); + sN(i, l, 0, c0), sN(e, l, 0, c0); + continue; + } + } + } + function Zr0(t, n, e, i, x) { + for (var c = t; ; ) { + gn(x); + var s = j(x), p = 96 < s ? 1 : Vr(zLr, s + 1 | 0) - 1 | 0; + if (6 < p >>> 0) + var y = q(x); + else + switch (p) { + case 0: + var y = 0; + break; + case 1: + for (; ; ) { + G0(x, 6); + var T = j(x); + if (-1 < T) + if (95 < T) + var E = T <= 96 ? 1 : 0, d = E && -1; + else + var d = Vr($Dr, T) - 1 | 0; + else + var d = -1; + if (d !== 0) { + var y = q(x); + break; + } + } + break; + case 2: + var y = 5; + break; + case 3: + G0(x, 5); + var y = xi(j(x)) === 0 ? 4 : q(x); + break; + case 4: + G0(x, 6); + var w = j(x), G = In < w ? ts < w ? -1 : 0 : -1, y = G === 0 ? 2 : q(x); + break; + case 5: + var y = 3; + break; + default: + var y = 1; + } + if (6 < y >>> 0) + return ke(hwr); + switch (y) { + case 0: + return [0, Ei(c, nt(c, x)), 1]; + case 1: + return qi(i, 96), [0, c, 1]; + case 2: + return hn(i, dwr), [0, c, 0]; + case 3: + qi(e, 92), qi(i, 92); + var A = Jr0(c, x), S = A[2]; + hn(e, S), hn(i, S); + var M = A[3]; + pz(function(m0) { + return S1(n, m0); + }, M); + var c = A[1]; + continue; + case 4: + hn(e, kwr), hn(i, wwr), hn(n, Ewr); + var c = d7(c, x); + continue; + case 5: + var K = Se(x); + hn(e, K), hn(i, K), qi(n, 10); + var c = d7(c, x); + continue; + default: + var V = Se(x); + hn(e, V), hn(i, V), hn(n, V); + continue; + } + } + } + function Pee(t, n) { + function e(B0) { + for (; ; ) + if (G0(B0, 33), dn(j(B0)) !== 0) + return q(B0); + } + function i(B0) { + for (; ; ) + if (G0(B0, 27), dn(j(B0)) !== 0) + return q(B0); + } + function x(B0) { + G0(B0, 26); + var D0 = Bt(j(B0)); + if (D0 === 0) { + for (; ; ) + if (G0(B0, 25), dn(j(B0)) !== 0) + return q(B0); + } + return D0 === 1 ? i(B0) : q(B0); + } + function c(B0) { + for (; ; ) + if (G0(B0, 27), dn(j(B0)) !== 0) + return q(B0); + } + function s(B0) { + G0(B0, 26); + var D0 = Bt(j(B0)); + if (D0 === 0) { + for (; ; ) + if (G0(B0, 25), dn(j(B0)) !== 0) + return q(B0); + } + return D0 === 1 ? c(B0) : q(B0); + } + function p(B0) { + r: + for (; ; ) { + if (pn(j(B0)) === 0) + for (; ; ) { + G0(B0, 28); + var D0 = Mc(j(B0)); + if (3 < D0 >>> 0) + return q(B0); + switch (D0) { + case 0: + return c(B0); + case 1: + continue; + case 2: + continue r; + default: + return s(B0); + } + } + return q(B0); + } + } + function y(B0) { + G0(B0, 33); + var D0 = Gr0(j(B0)); + if (3 < D0 >>> 0) + return q(B0); + switch (D0) { + case 0: + return e(B0); + case 1: + var Le = C1(j(B0)); + if (Le === 0) + for (; ; ) { + G0(B0, 28); + var He = Qv(j(B0)); + if (2 < He >>> 0) + return q(B0); + switch (He) { + case 0: + return c(B0); + case 1: + continue; + default: + return s(B0); + } + } + if (Le === 1) + for (; ; ) { + G0(B0, 28); + var he = Mc(j(B0)); + if (3 < he >>> 0) + return q(B0); + switch (he) { + case 0: + return c(B0); + case 1: + continue; + case 2: + return p(B0); + default: + return s(B0); + } + } + return q(B0); + case 2: + for (; ; ) { + G0(B0, 28); + var me = Qv(j(B0)); + if (2 < me >>> 0) + return q(B0); + switch (me) { + case 0: + return i(B0); + case 1: + continue; + default: + return x(B0); + } + } + default: + for (; ; ) { + G0(B0, 28); + var Zn = Mc(j(B0)); + if (3 < Zn >>> 0) + return q(B0); + switch (Zn) { + case 0: + return i(B0); + case 1: + continue; + case 2: + return p(B0); + default: + return x(B0); + } + } + } + } + function T(B0) { + G0(B0, 31); + var D0 = Bt(j(B0)); + if (D0 === 0) { + for (; ; ) + if (G0(B0, 29), dn(j(B0)) !== 0) + return q(B0); + } + return D0 === 1 ? e(B0) : q(B0); + } + function E(B0) { + return G0(B0, 3), Ur0(j(B0)) === 0 ? 3 : q(B0); + } + function d(B0) { + return m9(j(B0)) === 0 && v9(j(B0)) === 0 && Br0(j(B0)) === 0 && Ar0(j(B0)) === 0 && Nr0(j(B0)) === 0 && vL(j(B0)) === 0 && Bl(j(B0)) === 0 && m9(j(B0)) === 0 && Ls(j(B0)) === 0 && Cr0(j(B0)) === 0 && Ul(j(B0)) === 0 ? 3 : q(B0); + } + function w(B0) { + G0(B0, 34); + var D0 = Or0(j(B0)); + if (3 < D0 >>> 0) + return q(B0); + switch (D0) { + case 0: + return e(B0); + case 1: + for (; ; ) { + G0(B0, 34); + var Le = Ps(j(B0)); + if (4 < Le >>> 0) + return q(B0); + switch (Le) { + case 0: + return e(B0); + case 1: + continue; + case 2: + return y(B0); + case 3: + r: + for (; ; ) { + if (pn(j(B0)) === 0) + for (; ; ) { + G0(B0, 34); + var He = Ps(j(B0)); + if (4 < He >>> 0) + return q(B0); + switch (He) { + case 0: + return e(B0); + case 1: + continue; + case 2: + return y(B0); + case 3: + continue r; + default: + return T(B0); + } + } + return q(B0); + } + default: + return T(B0); + } + } + case 2: + return y(B0); + default: + return T(B0); + } + } + function G(B0) { + for (; ; ) + if (G0(B0, 19), dn(j(B0)) !== 0) + return q(B0); + } + function A(B0) { + G0(B0, 34); + var D0 = Qv(j(B0)); + if (2 < D0 >>> 0) + return q(B0); + switch (D0) { + case 0: + return e(B0); + case 1: + for (; ; ) { + G0(B0, 34); + var Le = Mc(j(B0)); + if (3 < Le >>> 0) + return q(B0); + switch (Le) { + case 0: + return e(B0); + case 1: + continue; + case 2: + r: + for (; ; ) { + if (pn(j(B0)) === 0) + for (; ; ) { + G0(B0, 34); + var He = Mc(j(B0)); + if (3 < He >>> 0) + return q(B0); + switch (He) { + case 0: + return e(B0); + case 1: + continue; + case 2: + continue r; + default: + return T(B0); + } + } + return q(B0); + } + default: + return T(B0); + } + } + default: + return T(B0); + } + } + function S(B0) { + for (; ; ) + if (G0(B0, 17), dn(j(B0)) !== 0) + return q(B0); + } + function M(B0) { + for (; ; ) + if (G0(B0, 17), dn(j(B0)) !== 0) + return q(B0); + } + function K(B0) { + for (; ; ) + if (G0(B0, 11), dn(j(B0)) !== 0) + return q(B0); + } + function V(B0) { + for (; ; ) + if (G0(B0, 11), dn(j(B0)) !== 0) + return q(B0); + } + function f0(B0) { + for (; ; ) + if (G0(B0, 15), dn(j(B0)) !== 0) + return q(B0); + } + function m0(B0) { + for (; ; ) + if (G0(B0, 15), dn(j(B0)) !== 0) + return q(B0); + } + function k0(B0) { + for (; ; ) + if (G0(B0, 23), dn(j(B0)) !== 0) + return q(B0); + } + function g0(B0) { + for (; ; ) + if (G0(B0, 23), dn(j(B0)) !== 0) + return q(B0); + } + function e0(B0) { + G0(B0, 32); + var D0 = Bt(j(B0)); + if (D0 === 0) { + for (; ; ) + if (G0(B0, 30), dn(j(B0)) !== 0) + return q(B0); + } + return D0 === 1 ? e(B0) : q(B0); + } + function x0(B0) { + r: + for (; ; ) { + if (pn(j(B0)) === 0) + for (; ; ) { + G0(B0, 34); + var D0 = Rr0(j(B0)); + if (4 < D0 >>> 0) + return q(B0); + switch (D0) { + case 0: + return e(B0); + case 1: + return A(B0); + case 2: + continue; + case 3: + continue r; + default: + return e0(B0); + } + } + return q(B0); + } + } + gn(n); + var l = j(n), c0 = ef < l ? vw < l ? -1 : Uk < l ? C3 < l ? Bw < l ? EE < l ? Wy < l ? 1 : 8 : Jd < l ? lE < l ? uF < l ? 1 : 8 : ZT < l ? 1 : 8 : WF < l ? bA < l ? 1 : 8 : sI < l ? 1 : 8 : C6 < l ? E4 < l ? x6 < l ? V8 < l ? j3 < l ? r3 < l ? CO < l ? 1 : 8 : LI < l ? 1 : 8 : Iy < l ? hg < l ? 1 : 8 : Mw < l ? 1 : 8 : L3 < l ? w8 < l ? jg < l ? 1 : 8 : $4 < l ? 1 : 8 : W8 < l ? zT < l ? 1 : 8 : kk < l ? 1 : 8 : O4 < l ? YO < l ? l3 < l ? Qk < l ? 1 : 8 : fk < l ? 1 : 8 : xp < l ? V6 < l ? 1 : 8 : Td < l ? 1 : 8 : G8 < l ? s4 < l ? t6 < l ? 1 : 8 : q6 < l ? 1 : 8 : B6 < l ? S4 < l ? 1 : 8 : fn < l ? 1 : 8 : LE < l ? M4 < l ? g6 < l ? SF < l ? i8 < l ? 1 : 8 : d8 < l ? 1 : 8 : F4 < l ? JF < l ? 1 : 8 : mh < l ? 1 : 8 : U6 < l ? n8 < l ? s3 < l ? 1 : 8 : S8 < l ? 1 : 8 : BS < l ? L8 < l ? 1 : 8 : K3 < l ? 1 : 8 : m8 < l ? f8 < l ? x8 < l ? w3 < l ? 1 : 8 : _6 < l ? 1 : 8 : s6 < l ? oF < l ? 1 : 8 : ZO < l ? 1 : 8 : a3 < l ? DS < l ? e8 < l ? 1 : 8 : g8 < l ? 1 : 8 : J3 < l ? sF < l ? 1 : 8 : ig < l ? 1 : 8 : iw < l ? Ek < l ? wk < l ? qk < l ? FT < l ? Vk < l ? 1 : 8 : uA < l ? 1 : 8 : dy < l ? VS < l ? 1 : 8 : _d < l ? 1 : 8 : Th < l ? pF < l ? FE < l ? 1 : 8 : Zw < l ? 1 : 8 : Sy < l ? L_ < l ? 1 : 8 : CE < l ? 1 : 8 : LF < l ? Vw < l ? My < l ? rw < l ? 1 : 8 : XI < l ? 1 : 8 : jO < l ? ap < l ? 1 : 8 : jT < l ? 1 : 8 : Ot < l ? OA < l ? gA < l ? 1 : 8 : 1 : 8 : c6 < l ? w6 < l ? l6 < l ? k3 < l ? VE < l ? 1 : 8 : qw < l ? 1 : 8 : v4 < l ? nE < l ? 1 : 8 : Ty < l ? 1 : 8 : c3 < l ? V4 < l ? eg < l ? 1 : 8 : qF < l ? 1 : 8 : X4 < l ? _T < l ? 1 : 8 : Oy < l ? 1 : 8 : D6 < l ? D4 < l ? V3 < l ? MS < l ? 1 : 8 : Ww < l ? 1 : 8 : cy < l ? jy < l ? 1 : 8 : VT < l ? 1 : 8 : B4 < l ? bh < l ? JT < l ? 1 : 8 : G3 < l ? 1 : 8 : r6 < l ? sO < l ? 1 : 8 : ZE < l ? 1 : 8 : uT < l ? Z4 < l ? Yd < l ? Q6 < l ? L4 < l ? N6 < l ? vp < l ? D_ < l ? 1 : 8 : Pd < l ? 1 : 8 : pd < l ? Rg < l ? 1 : 8 : OS < l ? 1 : 8 : G6 < l ? I3 < l ? uk < l ? 1 : 8 : cE < l ? 1 : 8 : l8 < l ? l4 < l ? 1 : 8 : rh < l ? 1 : 8 : M3 < l ? FS < l ? NE < l ? aT < l ? 1 : 8 : kT < l ? 1 : 8 : uS < l ? d3 < l ? 1 : 8 : zd < l ? 1 : 8 : ly < l ? T6 < l ? Pg < l ? 1 : 8 : vy < l ? 1 : 8 : LO < l ? yF < l ? 1 : 8 : YF < l ? 1 : 8 : DI < l ? au < l ? jF < l ? Ah < l ? AO < l ? 1 : 8 : Cd < l ? 1 : 8 : qh < l ? AS < l ? 1 : 8 : lA < l ? 1 : 8 : cO < l ? AI < l ? xI < l ? 1 : 8 : B_ < l ? 1 : 8 : hS < l ? fT < l ? 1 : 8 : mg < l ? 1 : 8 : NO < l ? Nw < l ? Yh < l ? lw < l ? 1 : 8 : Qg < l ? 1 : 8 : Vg < l ? Lk < l ? 1 : 8 : qO < l ? 1 : 8 : iS < l ? b6 < l ? h6 < l ? 1 : 8 : $F < l ? 1 : 8 : ph < l ? rT < l ? 1 : 8 : HS < l ? 1 : 8 : zO < l ? Ck < l ? yS < l ? Iw < l ? CI < l ? Kg < l ? 1 : 8 : VO < l ? 1 : 8 : Mk < l ? ks < l ? 1 : 8 : PF < l ? 1 : 8 : kd < l ? TS < l ? wI < l ? 1 : 8 : xg < l ? 1 : 8 : Rd < l ? dh < l ? 1 : 8 : oI < l ? 1 : 8 : oT < l ? lg < l ? tF < l ? KI < l ? 1 : 8 : pk < l ? 1 : 8 : G_ < l ? kw < l ? 1 : 8 : QF < l ? 1 : 8 : jk < l ? FO < l ? mA < l ? 1 : 8 : _g < l ? 1 : 8 : WE < l ? lF < l ? 1 : 8 : MF < l ? 1 : 8 : h4 < l ? h3 < l ? vT < l ? jI < l ? mS < l ? 1 : 8 : cA < l ? 1 : 8 : DE < l ? zk < l ? 1 : 8 : Lg < l ? 1 : 8 : AT < l ? R6 < l ? bk < l ? 1 : 8 : iT < l ? 1 : 8 : US < l ? BT < l ? 1 : 8 : vE < l ? 1 : 8 : Wc < l ? Sk < l ? D3 < l ? Xg < l ? 1 : 8 : fd < l ? 1 : 8 : IF < l ? ld < l ? 1 : 8 : nA < l ? 1 : 8 : BE < l ? W3 < l ? sy < l ? 1 : 8 : kI < l ? 1 : 8 : VF < l ? fS < l ? 1 : 8 : P4 < l ? 1 : 8 : vS < l ? jw < l ? ik < l ? hO < l ? iI < l ? bg < l ? Nd < l ? 1 : 8 : u3 < l ? 1 : 8 : sE < l ? Ld < l ? 1 : 8 : Xk < l ? 1 : 8 : up < l ? hh < l ? M8 < l ? 1 : 8 : p3 < l ? 1 : 8 : Ew < l ? pE < l ? 1 : 8 : Bg < l ? 1 : 8 : by < l ? Zk < l ? $T < l ? zF < l ? 1 : 8 : Bd < l ? 1 : 8 : $k < l ? TI < l ? 1 : 8 : pO < l ? 1 : 8 : sS < l ? RO < l ? kA < l ? 1 : 8 : wA < l ? 1 : 8 : fg < l ? qI < l ? 1 : 8 : dS < l ? 1 : 8 : hI < l ? NI < l ? nS < l ? Xy < l ? J_ < l ? 1 : 8 : bT < l ? 1 : 8 : $O < l ? Eg < l ? 1 : 8 : oA < l ? 1 : 8 : uE < l ? ET < l ? dg < l ? 1 : 8 : TT < l ? 1 : 8 : Ay < l ? u8 < l ? 1 : 8 : ZS < l ? 1 : 8 : Gh < l ? M_ < l ? SO < l ? lh < l ? 1 : 8 : XE < l ? 1 : 8 : Q3 < l ? Z6 < l ? 1 : 8 : Od < l ? 1 : 8 : W6 < l ? RF < l ? qy < l ? 1 : 8 : Nk < l ? 1 : 8 : PE < l ? Tg < l ? 1 : 8 : OI < l ? 1 : 8 : A8 < l ? P_ < l ? C4 < l ? $g < l ? Uh < l ? WS < l ? 1 : 8 : j6 < l ? 1 : 8 : _E < l ? fI < l ? 1 : 8 : Pw < l ? 1 : 8 : f3 < l ? a8 < l ? UF < l ? 1 : 8 : Lw < l ? 1 : 8 : mk < l ? aI < l ? 1 : 8 : yy < l ? 1 : 8 : O8 < l ? uI < l ? u6 < l ? ky < l ? 1 : 8 : GI < l ? 1 : 8 : c8 < l ? Ow < l ? 1 : 8 : bE < l ? 1 : 8 : y3 < l ? fp < l ? eE < l ? 1 : 8 : I8 < l ? 1 : 8 : cw < l ? KF < l ? 1 : 8 : VI < l ? 1 : 8 : zh < l ? QO < l ? h8 < l ? hy < l ? ew < l ? 1 : 8 : i3 < l ? 1 : 8 : pI < l ? dA < l ? 1 : 8 : qd < l ? 1 : 8 : kg < l ? iE < l ? TO < l ? 1 : 8 : X6 < l ? 1 : 8 : Rw < l ? aw < l ? 1 : 8 : F3 < l ? 1 : 8 : Ik < l ? OF < l ? Ly < l ? m4 < l ? 1 : 8 : cd < l ? 1 : 8 : zg < l ? Jk < l ? 1 : 8 : aS < l ? 1 : 8 : B3 < l ? IO < l ? hw < l ? 1 : 8 : mE < l ? 1 : 8 : $S < l ? QI < l ? 1 : 8 : FA < l ? 1 : 8 : od < l ? KE < l ? Rk < l ? J6 < l ? Md < l ? xF < l ? Zg < l ? sh < l ? eT < l ? 1 : 8 : YI < l ? 1 : 8 : RE < l ? OT < l ? 1 : 8 : J8 < l ? 1 : 8 : IA < l ? dE < l ? qT < l ? 1 : 8 : hd < l ? 1 : 8 : Id < l ? Mh < l ? 1 : 8 : _S < l ? 1 : 8 : EA < l ? PO < l ? Hg < l ? sg < l ? 1 : 8 : Ug < l ? 1 : 8 : Xw < l ? td < l ? 1 : 8 : Dg < l ? 1 : 8 : Ag < l ? bS < l ? Wd < l ? 1 : 8 : Fg < l ? 1 : 8 : tA < l ? wT < l ? 1 : 8 : Dk < l ? 1 : 8 : rS < l ? Z8 < l ? JI < l ? AE < l ? ME < l ? 1 : 8 : pA < l ? 1 : 8 : EO < l ? Gy < l ? 1 : 8 : fA < l ? 1 : 8 : xA < l ? b4 < l ? _k < l ? 1 : 8 : oO < l ? 1 : 8 : wd < l ? S7 < l ? 1 : 8 : $d < l ? 1 : 8 : X8 < l ? z_ < l ? Fd < l ? Ph < l ? 1 : 8 : dT < l ? 1 : 8 : Dd < l ? Ok < l ? 1 : 8 : ah < l ? 1 : 8 : nh < l ? ag < l ? $w < l ? 1 : 8 : WT < l ? 1 : 8 : QS < l ? Fw < l ? 1 : 8 : LT < l ? 1 : 8 : Ih < l ? vk < l ? En < l ? p8 < l ? gT < l ? M6 < l ? 1 : 8 : gh < l ? 1 : 8 : J4 < l ? Q_ < l ? 1 : 8 : op < l ? 1 : 8 : vO < l ? GE < l ? ch < l ? 1 : 8 : q_ < l ? 1 : 8 : ES < l ? UT < l ? 1 : 8 : jS < l ? 1 : 8 : Uw < l ? ty < l ? sA < l ? Vh < l ? 1 : 8 : sT < l ? 1 : 8 : iF < l ? Zd < l ? 1 : 8 : FI < l ? 1 : 8 : xO < l ? th < l ? ng < l ? 1 : 8 : bd < l ? 1 : 8 : iO < l ? _O < l ? 1 : 8 : eO < l ? 1 : 8 : IS < l ? zE < l ? fO < l ? ck < l ? xh < l ? 1 : 8 : ud < l ? 1 : 8 : JS < l ? _w < l ? 1 : 8 : Fy < l ? 1 : 8 : vA < l ? $E < l ? KT < l ? 1 : 8 : rI < l ? 1 : 8 : uy < l ? Tw < l ? 1 : 8 : 1 : nT < l ? Z3 < l ? ek < l ? 8 : $y < l ? 1 : 8 : GF < l ? Qw < l ? 1 : 8 : sk < l ? 1 : 8 : vg < l ? nO < l ? tI < l ? 1 : 8 : GO < l ? 1 : 8 : Ry < l ? 1 : 8 : D8 < l ? Ed < l ? xw < l ? Oh < l ? rA < l ? 8 : $h < l ? tT < l ? 1 : 8 : vF < l ? 1 : 8 : Qy < l ? zI < l ? ry < l ? 1 : 8 : yh < l ? 1 : 8 : HE < l ? Jh < l ? 1 : 8 : hF < l ? 1 : 8 : rp < l ? z4 < l ? S6 < l ? py < l ? 1 : 8 : rg < l ? 1 : 8 : $8 < l ? yO < l ? 1 : 8 : Bk < l ? 1 : 8 : gk < l ? U8 < l ? EF < l ? 1 : 8 : wy < l ? 1 : 8 : og < l ? Tk < l ? 1 : 8 : wE < l ? 1 : 8 : Gw < l ? $_ < l ? ey < l ? pS < l ? oE < l ? 1 : 8 : 1 : 8 : dw < l ? 8 : Q4 < l ? IT < l ? 1 : 8 : yg < l ? 1 : 8 : eI < l ? t3 < l ? Ma < l ? Do < l ? 1 : 2 : BI < l ? 1 : 8 : ow < l ? MT < l ? 1 : 8 : YS < l ? 1 : 8 : yI < l ? tS < l ? Zh < l ? 1 : 8 : CT < l ? 1 : 8 : GT < l ? Kw < l ? 1 : 8 : SI < l ? 1 : 8 : UI < l ? tk < l ? Qn < l ? R4 < l ? q3 < l ? id < l ? 1 : 8 : _F < l ? 1 : 8 : z3 < l ? L6 < l ? 1 : 8 : fh < l ? 1 : 8 : PT < l ? ip < l ? uw < l ? 1 : 8 : eS < l ? 1 : 8 : tO < l ? e3 < l ? 1 : 8 : oh < l ? 1 : 8 : dk < l ? zS < l ? Qh < l ? ug < l ? 1 : 8 : iy < l ? 1 : 8 : Wk < l ? Kd < l ? 1 : 8 : TE < l ? 1 : 8 : dd < l ? my < l ? cF < l ? 1 : 8 : _A < l ? 1 : 8 : Ny < l ? 1 : 8 : Xd < l ? H3 < l ? o3 < l ? Jw < l ? 1 : 8 : av < l ? 8 : RT < l ? 1 : 8 : gF < l ? k6 < l ? NF < l ? 1 : 8 : Wh < l ? 1 : 8 : Gk < l ? Dh < l ? 1 : 8 : ZI < l ? 1 : 8 : Vd < l ? cS < l ? lT < l ? cI < l ? 1 : 8 : 1 : Dy < l ? 8 : Jy < l ? 1 : 8 : FF < l ? sd < l ? 1 : 8 : XT < l ? OO < l ? 1 : 8 : aO < l ? 1 : 8 : wh < l ? F8 < l ? W_ < l ? uh < l ? kO < l ? ed < l ? EI < l ? Aw < l ? 1 : 8 : yA < l ? 1 : 8 : Bh < l ? fy < l ? 1 : 8 : ak < l ? 1 : 8 : CF < l ? TA < l ? lp < l ? 1 : 8 : 1 : 8 : yT < l ? Hd < l ? kS < l ? zy < l ? 1 : 8 : wS < l ? 1 : 8 : v6 < l ? Hk < l ? 1 : 8 : kE < l ? 1 : 8 : Sw < l ? pw < l ? 1 : 8 : _h < l ? WO < l ? 1 : 8 : k8 < l ? 1 : 8 : kF < l ? DO < l ? XF < l ? gy < l ? Sd < l ? 1 : 8 : eA < l ? 1 : 8 : Z_ < l ? JE < l ? 1 : 8 : ay < l ? 1 : 8 : Ky < l ? _8 < l ? Uy < l ? 1 : 8 : n3 < l ? 1 : 8 : rE < l ? oy < l ? 1 : 8 : cg < l ? 1 : 8 : Yy < l ? SA < l ? xS < l ? rF < l ? 1 : 8 : Xh < l ? 1 : 8 : mI < l ? lk < l ? 1 : 8 : uO < l ? 1 : 8 : PS < l && aA < l ? 1 : 8 : yk < l ? Rh < l ? tg < l ? nk < l ? 8 : Zy < l ? bI < l ? 1 : 8 : Ch < l ? 1 : 8 : xE < l ? ok < l ? V_ < l ? 1 : 8 : 1 : 8 : Og < l ? UO < l && oS < l ? 1 : 8 : bw < l ? rO < l ? Lh < l ? 1 : 8 : 1 : dF < l ? 8 : 1 : Eh < l ? gE < l ? U3 < l ? 8 : tw < l ? 1 : 8 : dI < l ? Qd < l ? wO < l ? 1 : 8 : R_ < l ? 1 : 8 : Sh < l ? 1 : 8 : BF < l ? gg < l ? Ad < l ? 1 : 8 : XS < l ? 1 : 8 : Kk < l ? YE < l ? 8 : ih < l ? 1 : 8 : U_ < l ? yE < l ? 1 : 8 : Ht < l ? 1 : 8 : GS < l ? jE < l ? dO < l ? q4 < l ? Ey < l ? E8 < l ? RI < l ? 1 : 8 : nF < l ? 1 : 8 : HF < l ? 1 : 8 : ww < l ? E3 < l ? de < l ? 1 : 8 : 1 : 8 : Ig < l ? Gd < l ? X_ < l ? H_ < l ? 1 : 8 : 1 : 8 : Hw < l ? T3 < l ? vd < l ? 1 : 8 : fF < l ? 1 : 8 : wg < l ? 1 : 8 : z8 < l ? j8 < l ? Eo < l ? PI < l ? 8 : Qx < l ? 1 : 2 : F6 < l ? By < l ? 1 : 8 : IE < l ? 1 : 8 : K8 < l ? z6 < l ? Cg < l ? 1 : 8 : cT < l ? 1 : 8 : o8 < l ? tt < l ? 1 : 8 : Ak < l ? 1 : 8 : NS < l ? tE < l ? j4 < l ? Ng < l ? 1 : 8 : $I < l ? 1 : 8 : P6 < l ? TF < l ? 1 : 8 : p4 < l ? 1 : 8 : _I < l ? fE < l ? gI < l ? 1 : 8 : N3 < l ? 1 : 8 : G4 < l ? B8 < l ? 1 : 8 : Sg < l ? 1 : 8 : N8 < l ? QE < l ? aE < l ? Yk < l ? pT < l ? K_ < l ? 1 : 8 : wF < l ? 1 : 8 : UE < l ? 1 : 8 : rd < l ? vI < l ? 8 : 1 : 8 : MO < l ? mw < l ? YT < l ? s8 < l ? 1 : 8 : AA < l ? 1 : 8 : Yw < l ? Y_ < l ? 1 : 8 : 1 : 8 : Gg < l ? JO < l ? $3 < l ? sp < l ? P8 < l ? 1 : 8 : Q8 < l ? 1 : 8 : gr < l ? t8 < l ? 1 : 8 : 1 : g4 < l ? KS < l ? 8 : m6 < l ? 1 : 8 : mF < l ? Cy < l ? 1 : 8 : R3 < l ? 1 : 8 : Pk < l ? HI < l ? QT < l ? x3 < l ? 1 : 8 : mO < l ? 1 : 8 : Py < l ? O3 < l ? 1 : 8 : ep < l ? 1 : 8 : mo < l ? xc < l ? ox < l ? 1 : 2 : fo < l ? 1 : 2 : $u < l ? Hu < l ? 1 : 3 : Co < l ? 1 : 2 : Vr(ILr, l + 1 | 0) - 1 | 0; + if (36 < c0 >>> 0) + var t0 = q(n); + else + switch (c0) { + case 0: + var t0 = 98; + break; + case 1: + var t0 = 99; + break; + case 2: + if (G0(n, 1), jc(j(n)) === 0) { + for (; ; ) + if (G0(n, 1), jc(j(n)) !== 0) { + var t0 = q(n); + break; + } + } else + var t0 = q(n); + break; + case 3: + var t0 = 0; + break; + case 4: + G0(n, 0); + var o0 = xi(j(n)) !== 0 ? 1 : 0, t0 = o0 && q(n); + break; + case 5: + G0(n, 88); + var t0 = Ui(j(n)) === 0 ? (G0(n, 58), Ui(j(n)) === 0 ? 54 : q(n)) : q(n); + break; + case 6: + var t0 = 7; + break; + case 7: + G0(n, 95); + var w0 = j(n), _0 = 32 < w0 ? 33 < w0 ? -1 : 0 : -1, t0 = _0 === 0 ? 6 : q(n); + break; + case 8: + var t0 = 97; + break; + case 9: + G0(n, 84); + var t0 = Ui(j(n)) === 0 ? 71 : q(n); + break; + case 10: + G0(n, 86); + var E0 = j(n), U0 = 37 < E0 ? 61 < E0 ? -1 : Vr(pRr, E0 - 38 | 0) - 1 | 0 : -1, t0 = U0 === 0 ? (G0(n, 51), Ui(j(n)) === 0 ? 76 : q(n)) : U0 === 1 ? 72 : q(n); + break; + case 11: + var t0 = 38; + break; + case 12: + var t0 = 39; + break; + case 13: + G0(n, 82); + var b = Ir0(j(n)); + if (2 < b >>> 0) + var t0 = q(n); + else + switch (b) { + case 0: + G0(n, 83); + var t0 = Ui(j(n)) === 0 ? 70 : q(n); + break; + case 1: + var t0 = 4; + break; + default: + var t0 = 69; + } + break; + case 14: + G0(n, 80); + var R0 = j(n), X = 42 < R0 ? 61 < R0 ? -1 : Vr(mRr, R0 + xy | 0) - 1 | 0 : -1, t0 = X === 0 ? 59 : X === 1 ? 67 : q(n); + break; + case 15: + var t0 = 45; + break; + case 16: + G0(n, 81); + var s0 = j(n), hr = 44 < s0 ? 61 < s0 ? -1 : Vr(eLr, s0 + mv | 0) - 1 | 0 : -1, t0 = hr === 0 ? 60 : hr === 1 ? 68 : q(n); + break; + case 17: + G0(n, 43); + var Ar = D1(j(n)); + if (Ar === 0) + var t0 = cL(j(n)) === 0 ? 42 : q(n); + else if (Ar === 1) + for (; ; ) { + G0(n, 34); + var or = Ps(j(n)); + if (4 < or >>> 0) + var t0 = q(n); + else + switch (or) { + case 0: + var t0 = e(n); + break; + case 1: + continue; + case 2: + var t0 = y(n); + break; + case 3: + r: + for (; ; ) { + if (pn(j(n)) === 0) + for (; ; ) { + G0(n, 34); + var W0 = Ps(j(n)); + if (4 < W0 >>> 0) + var Lr = q(n); + else + switch (W0) { + case 0: + var Lr = e(n); + break; + case 1: + continue; + case 2: + var Lr = y(n); + break; + case 3: + continue r; + default: + var Lr = T(n); + } + break; + } + else + var Lr = q(n); + var t0 = Lr; + break; + } + break; + default: + var t0 = T(n); + } + break; + } + else + var t0 = q(n); + break; + case 18: + G0(n, 93); + var Tr = Ir0(j(n)); + if (2 < Tr >>> 0) + var t0 = q(n); + else + switch (Tr) { + case 0: + G0(n, 2); + var Hr = i9(j(n)); + if (2 < Hr >>> 0) + var t0 = q(n); + else + switch (Hr) { + case 0: + for (; ; ) { + var Or = i9(j(n)); + if (2 < Or >>> 0) + var t0 = q(n); + else + switch (Or) { + case 0: + continue; + case 1: + var t0 = E(n); + break; + default: + var t0 = d(n); + } + break; + } + break; + case 1: + var t0 = E(n); + break; + default: + var t0 = d(n); + } + break; + case 1: + var t0 = 5; + break; + default: + var t0 = 92; + } + break; + case 19: + G0(n, 34); + var fr = lL(j(n)); + if (8 < fr >>> 0) + var t0 = q(n); + else + switch (fr) { + case 0: + var t0 = e(n); + break; + case 1: + var t0 = w(n); + break; + case 2: + for (; ; ) { + G0(n, 20); + var Rr = Mr0(j(n)); + if (4 < Rr >>> 0) + var t0 = q(n); + else + switch (Rr) { + case 0: + var t0 = G(n); + break; + case 1: + var t0 = A(n); + break; + case 2: + continue; + case 3: + for (; ; ) { + G0(n, 18); + var Wr = u9(j(n)); + if (3 < Wr >>> 0) + var t0 = q(n); + else + switch (Wr) { + case 0: + var t0 = S(n); + break; + case 1: + var t0 = A(n); + break; + case 2: + continue; + default: + G0(n, 17); + var Jr = Bt(j(n)); + if (Jr === 0) { + for (; ; ) + if (G0(n, 17), dn(j(n)) !== 0) { + var t0 = q(n); + break; + } + } else + var t0 = Jr === 1 ? S(n) : q(n); + } + break; + } + break; + default: + G0(n, 19); + var ar = Bt(j(n)); + if (ar === 0) { + for (; ; ) + if (G0(n, 19), dn(j(n)) !== 0) { + var t0 = q(n); + break; + } + } else + var t0 = ar === 1 ? G(n) : q(n); + } + break; + } + break; + case 3: + for (; ; ) { + G0(n, 18); + var _r = u9(j(n)); + if (3 < _r >>> 0) + var t0 = q(n); + else + switch (_r) { + case 0: + var t0 = M(n); + break; + case 1: + var t0 = A(n); + break; + case 2: + continue; + default: + G0(n, 17); + var Ir = Bt(j(n)); + if (Ir === 0) { + for (; ; ) + if (G0(n, 17), dn(j(n)) !== 0) { + var t0 = q(n); + break; + } + } else + var t0 = Ir === 1 ? M(n) : q(n); + } + break; + } + break; + case 4: + G0(n, 33); + var fe = Pr0(j(n)); + if (fe === 0) + var t0 = e(n); + else if (fe === 1) + for (; ; ) { + G0(n, 12); + var v0 = k9(j(n)); + if (3 < v0 >>> 0) + var t0 = q(n); + else + switch (v0) { + case 0: + var t0 = K(n); + break; + case 1: + continue; + case 2: + r: + for (; ; ) { + if (Gc(j(n)) === 0) + for (; ; ) { + G0(n, 12); + var P = k9(j(n)); + if (3 < P >>> 0) + var Q = q(n); + else + switch (P) { + case 0: + var Q = V(n); + break; + case 1: + continue; + case 2: + continue r; + default: + G0(n, 10); + var L = Bt(j(n)); + if (L === 0) { + for (; ; ) + if (G0(n, 9), dn(j(n)) !== 0) { + var Q = q(n); + break; + } + } else + var Q = L === 1 ? V(n) : q(n); + } + break; + } + else + var Q = q(n); + var t0 = Q; + break; + } + break; + default: + G0(n, 10); + var i0 = Bt(j(n)); + if (i0 === 0) { + for (; ; ) + if (G0(n, 9), dn(j(n)) !== 0) { + var t0 = q(n); + break; + } + } else + var t0 = i0 === 1 ? K(n) : q(n); + } + break; + } + else + var t0 = q(n); + break; + case 5: + var t0 = y(n); + break; + case 6: + G0(n, 33); + var l0 = Dr0(j(n)); + if (l0 === 0) + var t0 = e(n); + else if (l0 === 1) + for (; ; ) { + G0(n, 16); + var S0 = h9(j(n)); + if (3 < S0 >>> 0) + var t0 = q(n); + else + switch (S0) { + case 0: + var t0 = f0(n); + break; + case 1: + continue; + case 2: + r: + for (; ; ) { + if (zu(j(n)) === 0) + for (; ; ) { + G0(n, 16); + var T0 = h9(j(n)); + if (3 < T0 >>> 0) + var L0 = q(n); + else + switch (T0) { + case 0: + var L0 = m0(n); + break; + case 1: + continue; + case 2: + continue r; + default: + G0(n, 14); + var rr = Bt(j(n)); + if (rr === 0) { + for (; ; ) + if (G0(n, 13), dn(j(n)) !== 0) { + var L0 = q(n); + break; + } + } else + var L0 = rr === 1 ? m0(n) : q(n); + } + break; + } + else + var L0 = q(n); + var t0 = L0; + break; + } + break; + default: + G0(n, 14); + var B = Bt(j(n)); + if (B === 0) { + for (; ; ) + if (G0(n, 13), dn(j(n)) !== 0) { + var t0 = q(n); + break; + } + } else + var t0 = B === 1 ? f0(n) : q(n); + } + break; + } + else + var t0 = q(n); + break; + case 7: + G0(n, 33); + var Z = Er0(j(n)); + if (Z === 0) + var t0 = e(n); + else if (Z === 1) + for (; ; ) { + G0(n, 24); + var p0 = w9(j(n)); + if (3 < p0 >>> 0) + var t0 = q(n); + else + switch (p0) { + case 0: + var t0 = k0(n); + break; + case 1: + continue; + case 2: + r: + for (; ; ) { + if (Nn(j(n)) === 0) + for (; ; ) { + G0(n, 24); + var b0 = w9(j(n)); + if (3 < b0 >>> 0) + var M0 = q(n); + else + switch (b0) { + case 0: + var M0 = g0(n); + break; + case 1: + continue; + case 2: + continue r; + default: + G0(n, 22); + var O0 = Bt(j(n)); + if (O0 === 0) { + for (; ; ) + if (G0(n, 21), dn(j(n)) !== 0) { + var M0 = q(n); + break; + } + } else + var M0 = O0 === 1 ? g0(n) : q(n); + } + break; + } + else + var M0 = q(n); + var t0 = M0; + break; + } + break; + default: + G0(n, 22); + var er = Bt(j(n)); + if (er === 0) { + for (; ; ) + if (G0(n, 21), dn(j(n)) !== 0) { + var t0 = q(n); + break; + } + } else + var t0 = er === 1 ? k0(n) : q(n); + } + break; + } + else + var t0 = q(n); + break; + default: + var t0 = e0(n); + } + break; + case 20: + G0(n, 34); + var yr = o9(j(n)); + if (5 < yr >>> 0) + var t0 = q(n); + else + switch (yr) { + case 0: + var t0 = e(n); + break; + case 1: + var t0 = w(n); + break; + case 2: + for (; ; ) { + G0(n, 34); + var vr = o9(j(n)); + if (5 < vr >>> 0) + var t0 = q(n); + else + switch (vr) { + case 0: + var t0 = e(n); + break; + case 1: + var t0 = w(n); + break; + case 2: + continue; + case 3: + var t0 = y(n); + break; + case 4: + var t0 = x0(n); + break; + default: + var t0 = e0(n); + } + break; + } + break; + case 3: + var t0 = y(n); + break; + case 4: + var t0 = x0(n); + break; + default: + var t0 = e0(n); + } + break; + case 21: + var t0 = 46; + break; + case 22: + var t0 = 44; + break; + case 23: + G0(n, 78); + var $0 = j(n), Er = 59 < $0 ? 61 < $0 ? -1 : Vr(rN, $0 - 60 | 0) - 1 | 0 : -1, t0 = Er === 0 ? (G0(n, 62), Ui(j(n)) === 0 ? 61 : q(n)) : Er === 1 ? 55 : q(n); + break; + case 24: + G0(n, 90); + var Mr = sL(j(n)), t0 = Mr === 0 ? (G0(n, 57), Ui(j(n)) === 0 ? 53 : q(n)) : Mr === 1 ? 91 : q(n); + break; + case 25: + G0(n, 79); + var Br = sL(j(n)); + if (Br === 0) + var t0 = 56; + else if (Br === 1) { + G0(n, 66); + var qr = sL(j(n)), t0 = qr === 0 ? 63 : qr === 1 ? (G0(n, 65), Ui(j(n)) === 0 ? 64 : q(n)) : q(n); + } else + var t0 = q(n); + break; + case 26: + G0(n, 50); + var jr = j(n), $r = 45 < jr ? 63 < jr ? -1 : Vr(zDr, jr + v1 | 0) - 1 | 0 : -1, t0 = $r === 0 ? (G0(n, 48), pn(j(n)) === 0 ? 47 : q(n)) : $r === 1 ? (G0(n, 49), Ui(j(n)) === 0 ? 75 : q(n)) : q(n); + break; + case 27: + G0(n, 94); + var ne = j(n), Qr = 63 < ne ? 64 < ne ? -1 : 0 : -1; + if (Qr === 0) { + var be = j(n), ae = 96 < be ? j7 < be ? -1 : Vr(VLr, be + Y3 | 0) - 1 | 0 : -1; + if (ae === 0) + if (gr0(j(n)) === 0) { + var pe = j(n), oe = uc < pe ? tl < pe ? -1 : 0 : -1; + if (oe === 0 && vL(j(n)) === 0 && Bl(j(n)) === 0) + var ce = j(n), ge = 72 < ce ? 73 < ce ? -1 : 0 : -1, t0 = ge === 0 && s9(j(n)) === 0 && Ul(j(n)) === 0 && y9(j(n)) === 0 && Lr0(j(n)) === 0 && s9(j(n)) === 0 && v9(j(n)) === 0 && y9(j(n)) === 0 ? 35 : q(n); + else + var t0 = q(n); + } else + var t0 = q(n); + else + var t0 = ae === 1 && s9(j(n)) === 0 && Ul(j(n)) === 0 && y9(j(n)) === 0 && Lr0(j(n)) === 0 && s9(j(n)) === 0 && v9(j(n)) === 0 && y9(j(n)) === 0 ? 35 : q(n); + } else + var t0 = q(n); + break; + case 28: + var t0 = 40; + break; + case 29: + if (G0(n, 96), Ls(j(n)) === 0) { + var q0 = L1(j(n)); + if (q0 === 0) + var t0 = Nn(j(n)) === 0 && Nn(j(n)) === 0 && Nn(j(n)) === 0 ? 97 : q(n); + else if (q0 === 1 && Nn(j(n)) === 0) + for (; ; ) { + var Fr = A1(j(n)); + if (Fr !== 0) { + var t0 = Fr === 1 ? 97 : q(n); + break; + } + } + else + var t0 = q(n); + } else + var t0 = q(n); + break; + case 30: + var t0 = 41; + break; + case 31: + G0(n, 87); + var t0 = Ui(j(n)) === 0 ? 74 : q(n); + break; + case 32: + var t0 = 8; + break; + case 33: + var t0 = 36; + break; + case 34: + G0(n, 85); + var _ = j(n), k = 60 < _ ? X2 < _ ? -1 : Vr(_Rr, _ + SS | 0) - 1 | 0 : -1, t0 = k === 0 ? 73 : k === 1 ? (G0(n, 52), Ui(j(n)) === 0 ? 77 : q(n)) : q(n); + break; + case 35: + var t0 = 37; + break; + default: + var t0 = 89; + } + if (99 < t0 >>> 0) + return ke(vPr); + var I = t0; + if (50 <= I) + switch (I) { + case 50: + return [0, t, 85]; + case 51: + return [0, t, 88]; + case 52: + return [0, t, 87]; + case 53: + return [0, t, 94]; + case 54: + return [0, t, 95]; + case 55: + return [0, t, 96]; + case 56: + return [0, t, 97]; + case 57: + return [0, t, 92]; + case 58: + return [0, t, 93]; + case 59: + return [0, t, cf]; + case 60: + return [0, t, T7]; + case 61: + return [0, t, 69]; + case 62: + return [0, t, ti]; + case 63: + return [0, t, 68]; + case 64: + return [0, t, 67]; + case 65: + return [0, t, Ri]; + case 66: + return [0, t, R7]; + case 67: + return [0, t, 78]; + case 68: + return [0, t, 77]; + case 69: + return [0, t, 75]; + case 70: + return [0, t, 76]; + case 71: + return [0, t, 73]; + case 72: + return [0, t, 72]; + case 73: + return [0, t, 71]; + case 74: + return [0, t, 70]; + case 75: + return [0, t, 79]; + case 76: + return [0, t, 80]; + case 77: + return [0, t, 81]; + case 78: + return [0, t, 98]; + case 79: + return [0, t, 99]; + case 80: + return [0, t, s7]; + case 81: + return [0, t, L7]; + case 82: + return [0, t, Yt]; + case 83: + return [0, t, Zc]; + case 84: + return [0, t, is]; + case 85: + return [0, t, 89]; + case 86: + return [0, t, 91]; + case 87: + return [0, t, 90]; + case 88: + return [0, t, Fv]; + case 89: + return [0, t, Xt]; + case 90: + return [0, t, 82]; + case 91: + return [0, t, 11]; + case 92: + return [0, t, 74]; + case 93: + return [0, t, j7]; + case 94: + return [0, t, 13]; + case 95: + return [0, t, 14]; + case 96: + return [2, Ei(t, nt(t, n))]; + case 97: + var U = n[6]; + Hr0(n); + var Y = Hl(t, U, n[3]); + tL(n, U); + var y0 = Ll(n), P0 = Wr0(t, y0), I0 = P0[2], D = Ee(I0, yPr); + if (0 <= D) { + if (!(0 < D)) + return [0, t, 18]; + var u0 = Ee(I0, XPr); + if (0 <= u0) { + if (!(0 < u0)) + return [0, t, 51]; + var X0 = Ee(I0, tDr); + if (0 <= X0) { + if (!(0 < X0)) + return [0, t, 46]; + if (!n0(I0, cDr)) + return [0, t, 24]; + if (!n0(I0, sDr)) + return [0, t, 47]; + if (!n0(I0, vDr)) + return [0, t, 25]; + if (!n0(I0, lDr)) + return [0, t, 26]; + if (!n0(I0, bDr)) + return [0, t, 58]; + } else { + if (!n0(I0, uDr)) + return [0, t, 20]; + if (!n0(I0, iDr)) + return [0, t, 21]; + if (!n0(I0, fDr)) + return [0, t, 22]; + if (!n0(I0, xDr)) + return [0, t, 31]; + if (!n0(I0, oDr)) + return [0, t, 23]; + if (!n0(I0, aDr)) + return [0, t, 61]; + } + } else { + var J0 = Ee(I0, YPr); + if (0 <= J0) { + if (!(0 < J0)) + return [0, t, 54]; + if (!n0(I0, ZPr)) + return [0, t, 55]; + if (!n0(I0, QPr)) + return [0, t, 56]; + if (!n0(I0, rDr)) + return [0, t, 57]; + if (!n0(I0, eDr)) + return [0, t, 19]; + if (!n0(I0, nDr)) + return [0, t, 42]; + } else { + if (!n0(I0, VPr)) + return [0, t, 53]; + if (!n0(I0, zPr)) + return [0, t, 28]; + if (!n0(I0, KPr)) + return [0, t, 44]; + if (!n0(I0, WPr)) + return [0, t, 29]; + if (!n0(I0, JPr)) + return [0, t, 63]; + if (!n0(I0, $Pr)) + return [0, t, 62]; + } + } + } else { + var ir = Ee(I0, hPr); + if (0 <= ir) { + if (!(0 < ir)) + return [0, t, 37]; + var Q0 = Ee(I0, CPr); + if (0 <= Q0) { + if (!(0 < Q0)) + return [0, t, 39]; + if (!n0(I0, MPr)) + return [0, t, 15]; + if (!n0(I0, BPr)) + return [0, t, 16]; + if (!n0(I0, qPr)) + return [0, t, 52]; + if (!n0(I0, UPr)) + return [0, t, 50]; + if (!n0(I0, HPr)) + return [0, t, 17]; + } else { + if (!n0(I0, PPr)) + return [0, t, 43]; + if (!n0(I0, DPr)) + return [0, t, 48]; + if (!n0(I0, LPr)) + return [0, t, 49]; + if (!n0(I0, RPr)) + return [0, t, 41]; + if (!n0(I0, jPr)) + return [0, t, 30]; + if (!n0(I0, GPr)) + return [0, t, 38]; + } + } else { + var F0 = Ee(I0, dPr); + if (0 <= F0) { + if (!(0 < F0)) + return [0, t, 27]; + if (!n0(I0, TPr)) + return [0, t, 35]; + if (!n0(I0, OPr)) + return [0, t, 59]; + if (!n0(I0, IPr)) + return [0, t, 60]; + if (!n0(I0, APr)) + return [0, t, 36]; + if (!n0(I0, NPr)) + return [0, t, 45]; + } else { + if (!n0(I0, kPr)) + return [0, t, 64]; + if (!n0(I0, wPr)) + return [0, t, 65]; + if (!n0(I0, EPr)) + return [0, t, 32]; + if (!n0(I0, SPr)) + return [0, t, 33]; + if (!n0(I0, gPr)) + return [0, t, 34]; + if (!n0(I0, FPr)) + return [0, t, 40]; + } + } + } + var Sr = [4, Y, I0, uL(y0)]; + return [0, P0[1], Sr]; + case 98: + var mr = t[4] ? Gu(t, nt(t, n), 6) : t; + return [0, mr, Pn]; + default: + var Cr = Ei(t, nt(t, n)); + return [0, Cr, [6, Se(n)]]; + } + switch (I) { + case 0: + return [2, d7(t, n)]; + case 1: + return [2, t]; + case 2: + var sr = ju(t, n), Pr = $n(zn), K0 = R1(t, Pr, n), Ur = K0[1]; + return [1, Ur, Si(Ur, sr, K0[2], Pr, 1)]; + case 3: + var h0 = Se(n); + if (t[5]) { + var Kr = t[4] ? Yr0(t, nt(t, n), h0) : t, re = $m(1, Kr), xe = Jm(n); + return qn(jl(n, xe - 1 | 0, 1), lPr) && n0(jl(n, xe - 2 | 0, 1), bPr) ? [0, re, 86] : [2, re]; + } + var Re = ju(t, n), ve = $n(zn); + hn(ve, m7(h0, 2, un(h0) - 2 | 0)); + var Ie = R1(t, ve, n), Ge = Ie[1]; + return [1, Ge, Si(Ge, Re, Ie[2], ve, 1)]; + case 4: + if (t[4]) + return [2, $m(0, t)]; + $v(n), gn(n); + var Me = Tr0(j(n)) !== 0 ? 1 : 0, an = Me && q(n); + return an === 0 ? [0, t, Yt] : ke(pPr); + case 5: + var We = ju(t, n), Ae = $n(zn), cn = e2(t, Ae, n), rn = cn[1]; + return [1, rn, Si(rn, We, cn[2], Ae, 0)]; + case 6: + return n[6] === 0 ? [2, e2(t, $n(zn), n)[1]] : [0, t, mPr]; + case 7: + var kn = Se(n), vn = ju(t, n), Ne = $n(zn), Je = $n(zn); + hn(Je, kn); + var en = $r0(t, kn, Ne, Je, 0, n), _n = en[1], Cn = [0, _n[1], vn, en[2]], Hn = en[3], Fn = Mt(Je); + return [0, _n, [2, [0, Cn, Mt(Ne), Fn, Hn]]]; + case 8: + var vt = $n(zn), Nt = $n(zn), gt = $n(zn); + Gl(n, gt); + var Zt = ju(t, n), qt = Zr0(t, vt, Nt, gt, n), Ft = qt[1], Ct = h7(Ft, n), du = [0, Ft[1], Zt, Ct], Wu = qt[2], lt = Mt(gt), ou = Mt(Nt); + return [0, Ft, [3, [0, du, [0, Mt(vt), ou, lt], Wu]]]; + case 9: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0 && c9(j(D0)) === 0 && Gc(j(D0)) === 0) + for (; ; ) { + var Le = n9(j(D0)); + if (2 < Le >>> 0) + var me = q(D0); + else + switch (Le) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (Gc(j(D0)) === 0) + for (; ; ) { + var He = n9(j(D0)); + if (2 < He >>> 0) + var he = q(D0); + else + switch (He) { + case 0: + continue; + case 1: + continue r; + default: + var he = 0; + } + break; + } + else + var he = q(D0); + var me = he; + break; + } + break; + default: + var me = 0; + } + break; + } + else + var me = q(D0); + return me === 0 ? [0, B0, [1, 0, Se(D0)]] : ke(sPr); + }); + case 10: + return [0, t, [1, 0, Se(n)]]; + case 11: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0 && c9(j(D0)) === 0 && Gc(j(D0)) === 0) + for (; ; ) { + G0(D0, 0); + var Le = e9(j(D0)); + if (Le !== 0) { + if (Le === 1) + r: + for (; ; ) { + if (Gc(j(D0)) === 0) + for (; ; ) { + G0(D0, 0); + var He = e9(j(D0)); + if (He !== 0) { + if (He === 1) + continue r; + var he = q(D0); + break; + } + } + else + var he = q(D0); + var me = he; + break; + } + else + var me = q(D0); + break; + } + } + else + var me = q(D0); + return me === 0 ? [0, B0, [0, 0, Se(D0)]] : ke(cPr); + }); + case 12: + return [0, t, [0, 0, Se(n)]]; + case 13: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0 && b9(j(D0)) === 0 && zu(j(D0)) === 0) + for (; ; ) { + var Le = a9(j(D0)); + if (2 < Le >>> 0) + var me = q(D0); + else + switch (Le) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (zu(j(D0)) === 0) + for (; ; ) { + var He = a9(j(D0)); + if (2 < He >>> 0) + var he = q(D0); + else + switch (He) { + case 0: + continue; + case 1: + continue r; + default: + var he = 0; + } + break; + } + else + var he = q(D0); + var me = he; + break; + } + break; + default: + var me = 0; + } + break; + } + else + var me = q(D0); + return me === 0 ? [0, B0, [1, 1, Se(D0)]] : ke(aPr); + }); + case 14: + return [0, t, [1, 1, Se(n)]]; + case 15: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0 && b9(j(D0)) === 0 && zu(j(D0)) === 0) + for (; ; ) { + G0(D0, 0); + var Le = x9(j(D0)); + if (Le !== 0) { + if (Le === 1) + r: + for (; ; ) { + if (zu(j(D0)) === 0) + for (; ; ) { + G0(D0, 0); + var He = x9(j(D0)); + if (He !== 0) { + if (He === 1) + continue r; + var he = q(D0); + break; + } + } + else + var he = q(D0); + var me = he; + break; + } + else + var me = q(D0); + break; + } + } + else + var me = q(D0); + return me === 0 ? [0, B0, [0, 3, Se(D0)]] : ke(oPr); + }); + case 16: + return [0, t, [0, 3, Se(n)]]; + case 17: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0) + for (; ; ) { + var Le = j(D0), He = 47 < Le ? 57 < Le ? -1 : Vr(uRr, Le + Wt | 0) - 1 | 0 : -1; + if (He !== 0) { + if (He === 1) { + for (; ; ) + if (G0(D0, 0), pn(j(D0)) !== 0) { + var he = q(D0); + break; + } + } else + var he = q(D0); + break; + } + } + else + var he = q(D0); + return he === 0 ? [0, B0, [0, 2, Se(D0)]] : ke(xPr); + }); + case 18: + return [0, t, [0, 2, Se(n)]]; + case 19: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0 && zu(j(D0)) === 0) { + for (; ; ) + if (G0(D0, 0), zu(j(D0)) !== 0) { + var Le = q(D0); + break; + } + } else + var Le = q(D0); + return Le === 0 ? [0, B0, [0, 1, Se(D0)]] : ke(fPr); + }); + case 20: + return [0, t, [0, 1, Se(n)]]; + case 21: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0 && Zm(j(D0)) === 0 && Nn(j(D0)) === 0) + for (; ; ) { + var Le = t9(j(D0)); + if (2 < Le >>> 0) + var me = q(D0); + else + switch (Le) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (Nn(j(D0)) === 0) + for (; ; ) { + var He = t9(j(D0)); + if (2 < He >>> 0) + var he = q(D0); + else + switch (He) { + case 0: + continue; + case 1: + continue r; + default: + var he = 0; + } + break; + } + else + var he = q(D0); + var me = he; + break; + } + break; + default: + var me = 0; + } + break; + } + else + var me = q(D0); + return me === 0 ? [0, B0, [1, 2, Se(D0)]] : ke(iPr); + }); + case 23: + return Rt(t, n, function(B0, D0) { + if (gn(D0), Cs(j(D0)) === 0 && Zm(j(D0)) === 0 && Nn(j(D0)) === 0) + for (; ; ) { + G0(D0, 0); + var Le = _9(j(D0)); + if (Le !== 0) { + if (Le === 1) + r: + for (; ; ) { + if (Nn(j(D0)) === 0) + for (; ; ) { + G0(D0, 0); + var He = _9(j(D0)); + if (He !== 0) { + if (He === 1) + continue r; + var he = q(D0); + break; + } + } + else + var he = q(D0); + var me = he; + break; + } + else + var me = q(D0); + break; + } + } + else + var me = q(D0); + return me === 0 ? [0, B0, [0, 4, Se(D0)]] : ke(uPr); + }); + case 25: + return Rt(t, n, function(B0, D0) { + function Le(ln) { + for (; ; ) { + var it = wi(j(ln)); + if (2 < it >>> 0) + return q(ln); + switch (it) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (pn(j(ln)) === 0) + for (; ; ) { + var Tt = wi(j(ln)); + if (2 < Tt >>> 0) + return q(ln); + switch (Tt) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(ln); + } + default: + return 0; + } + } + } + function He(ln) { + for (; ; ) { + var it = r2(j(ln)); + if (it !== 0) { + var Tt = it !== 1 ? 1 : 0; + return Tt && q(ln); + } + } + } + function he(ln) { + var it = E9(j(ln)); + if (2 < it >>> 0) + return q(ln); + switch (it) { + case 0: + var Tt = C1(j(ln)); + return Tt === 0 ? He(ln) : Tt === 1 ? Le(ln) : q(ln); + case 1: + return He(ln); + default: + return Le(ln); + } + } + function me(ln) { + var it = p9(j(ln)); + if (it === 0) + for (; ; ) { + var Tt = f7(j(ln)); + if (2 < Tt >>> 0) + return q(ln); + switch (Tt) { + case 0: + continue; + case 1: + return he(ln); + default: + r: + for (; ; ) { + if (pn(j(ln)) === 0) + for (; ; ) { + var Ti = f7(j(ln)); + if (2 < Ti >>> 0) + return q(ln); + switch (Ti) { + case 0: + continue; + case 1: + return he(ln); + default: + continue r; + } + } + return q(ln); + } + } + } + return it === 1 ? he(ln) : q(ln); + } + gn(D0); + var Zn = Qm(j(D0)); + if (2 < Zn >>> 0) + var wn = q(D0); + else + switch (Zn) { + case 0: + if (pn(j(D0)) === 0) + for (; ; ) { + var ft = f7(j(D0)); + if (2 < ft >>> 0) + var wn = q(D0); + else + switch (ft) { + case 0: + continue; + case 1: + var wn = he(D0); + break; + default: + r: + for (; ; ) { + if (pn(j(D0)) === 0) + for (; ; ) { + var xt = f7(j(D0)); + if (2 < xt >>> 0) + var jn = q(D0); + else + switch (xt) { + case 0: + continue; + case 1: + var jn = he(D0); + break; + default: + continue r; + } + break; + } + else + var jn = q(D0); + var wn = jn; + break; + } + } + break; + } + else + var wn = q(D0); + break; + case 1: + var ut = r9(j(D0)), wn = ut === 0 ? me(D0) : ut === 1 ? he(D0) : q(D0); + break; + default: + for (; ; ) { + var dt = l9(j(D0)); + if (2 < dt >>> 0) + var wn = q(D0); + else + switch (dt) { + case 0: + var wn = me(D0); + break; + case 1: + continue; + default: + var wn = he(D0); + } + break; + } + } + if (wn === 0) { + var xn = Gu(B0, nt(B0, D0), 23); + return [0, xn, [1, 2, Se(D0)]]; + } + return ke(tPr); + }); + case 26: + var Bu = Gu(t, nt(t, n), 23); + return [0, Bu, [1, 2, Se(n)]]; + case 27: + return Rt(t, n, function(B0, D0) { + function Le(xn) { + for (; ; ) { + G0(xn, 0); + var ln = Ds(j(xn)); + if (ln !== 0) { + if (ln === 1) + r: + for (; ; ) { + if (pn(j(xn)) === 0) + for (; ; ) { + G0(xn, 0); + var it = Ds(j(xn)); + if (it !== 0) { + if (it === 1) + continue r; + return q(xn); + } + } + return q(xn); + } + return q(xn); + } + } + } + function He(xn) { + for (; ; ) + if (G0(xn, 0), pn(j(xn)) !== 0) + return q(xn); + } + function he(xn) { + var ln = E9(j(xn)); + if (2 < ln >>> 0) + return q(xn); + switch (ln) { + case 0: + var it = C1(j(xn)); + return it === 0 ? He(xn) : it === 1 ? Le(xn) : q(xn); + case 1: + return He(xn); + default: + return Le(xn); + } + } + function me(xn) { + var ln = p9(j(xn)); + if (ln === 0) + for (; ; ) { + var it = f7(j(xn)); + if (2 < it >>> 0) + return q(xn); + switch (it) { + case 0: + continue; + case 1: + return he(xn); + default: + r: + for (; ; ) { + if (pn(j(xn)) === 0) + for (; ; ) { + var Tt = f7(j(xn)); + if (2 < Tt >>> 0) + return q(xn); + switch (Tt) { + case 0: + continue; + case 1: + return he(xn); + default: + continue r; + } + } + return q(xn); + } + } + } + return ln === 1 ? he(xn) : q(xn); + } + gn(D0); + var Zn = Qm(j(D0)); + if (2 < Zn >>> 0) + var wn = q(D0); + else + switch (Zn) { + case 0: + if (pn(j(D0)) === 0) + for (; ; ) { + var ft = f7(j(D0)); + if (2 < ft >>> 0) + var wn = q(D0); + else + switch (ft) { + case 0: + continue; + case 1: + var wn = he(D0); + break; + default: + r: + for (; ; ) { + if (pn(j(D0)) === 0) + for (; ; ) { + var xt = f7(j(D0)); + if (2 < xt >>> 0) + var jn = q(D0); + else + switch (xt) { + case 0: + continue; + case 1: + var jn = he(D0); + break; + default: + continue r; + } + break; + } + else + var jn = q(D0); + var wn = jn; + break; + } + } + break; + } + else + var wn = q(D0); + break; + case 1: + var ut = r9(j(D0)), wn = ut === 0 ? me(D0) : ut === 1 ? he(D0) : q(D0); + break; + default: + for (; ; ) { + var dt = l9(j(D0)); + if (2 < dt >>> 0) + var wn = q(D0); + else + switch (dt) { + case 0: + var wn = me(D0); + break; + case 1: + continue; + default: + var wn = he(D0); + } + break; + } + } + return wn === 0 ? [0, B0, [0, 4, Se(D0)]] : ke(nPr); + }); + case 29: + return Rt(t, n, function(B0, D0) { + function Le(ut) { + for (; ; ) { + var dt = wi(j(ut)); + if (2 < dt >>> 0) + return q(ut); + switch (dt) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (pn(j(ut)) === 0) + for (; ; ) { + var xn = wi(j(ut)); + if (2 < xn >>> 0) + return q(ut); + switch (xn) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(ut); + } + default: + return 0; + } + } + } + function He(ut) { + var dt = r2(j(ut)); + if (dt === 0) + return Le(ut); + var xn = dt !== 1 ? 1 : 0; + return xn && q(ut); + } + gn(D0); + var he = Qm(j(D0)); + if (2 < he >>> 0) + var me = q(D0); + else + switch (he) { + case 0: + var me = pn(j(D0)) === 0 ? Le(D0) : q(D0); + break; + case 1: + for (; ; ) { + var Zn = D1(j(D0)); + if (Zn === 0) + var me = He(D0); + else { + if (Zn === 1) + continue; + var me = q(D0); + } + break; + } + break; + default: + for (; ; ) { + var wn = Bc(j(D0)); + if (2 < wn >>> 0) + var me = q(D0); + else + switch (wn) { + case 0: + var me = He(D0); + break; + case 1: + continue; + default: + r: + for (; ; ) { + if (pn(j(D0)) === 0) + for (; ; ) { + var ft = Bc(j(D0)); + if (2 < ft >>> 0) + var xt = q(D0); + else + switch (ft) { + case 0: + var xt = He(D0); + break; + case 1: + continue; + default: + continue r; + } + break; + } + else + var xt = q(D0); + var me = xt; + break; + } + } + break; + } + } + if (me === 0) { + var jn = Gu(B0, nt(B0, D0), 22); + return [0, jn, [1, 2, Se(D0)]]; + } + return ke(ePr); + }); + case 30: + return Rt(t, n, function(B0, D0) { + gn(D0); + var Le = C1(j(D0)); + if (Le === 0) + for (; ; ) { + var He = r2(j(D0)); + if (He !== 0) { + var he = He !== 1 ? 1 : 0, ft = he && q(D0); + break; + } + } + else if (Le === 1) + for (; ; ) { + var me = wi(j(D0)); + if (2 < me >>> 0) + var ft = q(D0); + else + switch (me) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (pn(j(D0)) === 0) + for (; ; ) { + var Zn = wi(j(D0)); + if (2 < Zn >>> 0) + var wn = q(D0); + else + switch (Zn) { + case 0: + continue; + case 1: + continue r; + default: + var wn = 0; + } + break; + } + else + var wn = q(D0); + var ft = wn; + break; + } + break; + default: + var ft = 0; + } + break; + } + else + var ft = q(D0); + return ft === 0 ? [0, B0, [1, 2, Se(D0)]] : ke(rPr); + }); + case 31: + var K7 = Gu(t, nt(t, n), 22); + return [0, K7, [1, 2, Se(n)]]; + case 33: + return Rt(t, n, function(B0, D0) { + function Le(jn) { + for (; ; ) { + G0(jn, 0); + var ut = Ds(j(jn)); + if (ut !== 0) { + if (ut === 1) + r: + for (; ; ) { + if (pn(j(jn)) === 0) + for (; ; ) { + G0(jn, 0); + var dt = Ds(j(jn)); + if (dt !== 0) { + if (dt === 1) + continue r; + return q(jn); + } + } + return q(jn); + } + return q(jn); + } + } + } + function He(jn) { + return G0(jn, 0), pn(j(jn)) === 0 ? Le(jn) : q(jn); + } + gn(D0); + var he = Qm(j(D0)); + if (2 < he >>> 0) + var me = q(D0); + else + switch (he) { + case 0: + var me = pn(j(D0)) === 0 ? Le(D0) : q(D0); + break; + case 1: + for (; ; ) { + G0(D0, 0); + var Zn = D1(j(D0)); + if (Zn === 0) + var me = He(D0); + else { + if (Zn === 1) + continue; + var me = q(D0); + } + break; + } + break; + default: + for (; ; ) { + G0(D0, 0); + var wn = Bc(j(D0)); + if (2 < wn >>> 0) + var me = q(D0); + else + switch (wn) { + case 0: + var me = He(D0); + break; + case 1: + continue; + default: + r: + for (; ; ) { + if (pn(j(D0)) === 0) + for (; ; ) { + G0(D0, 0); + var ft = Bc(j(D0)); + if (2 < ft >>> 0) + var xt = q(D0); + else + switch (ft) { + case 0: + var xt = He(D0); + break; + case 1: + continue; + default: + continue r; + } + break; + } + else + var xt = q(D0); + var me = xt; + break; + } + } + break; + } + } + return me === 0 ? [0, B0, [0, 4, Se(D0)]] : ke(QCr); + }); + case 35: + var Yi = nt(t, n), a7 = Se(n); + return [0, t, [4, Yi, a7, a7]]; + case 36: + return [0, t, 0]; + case 37: + return [0, t, 1]; + case 38: + return [0, t, 4]; + case 39: + return [0, t, 5]; + case 40: + return [0, t, 6]; + case 41: + return [0, t, 7]; + case 42: + return [0, t, 12]; + case 43: + return [0, t, 10]; + case 44: + return [0, t, 8]; + case 45: + return [0, t, 9]; + case 46: + return [0, t, 86]; + case 47: + $v(n), gn(n); + var Hc = j(n), W7 = 62 < Hc ? 63 < Hc ? -1 : 0 : -1, Ut = W7 !== 0 ? 1 : 0, bt = Ut && q(n); + return bt === 0 ? [0, t, 85] : ke(_Pr); + case 48: + return [0, t, 83]; + case 49: + return [0, t, 84]; + case 22: + case 32: + return [0, t, [1, 2, Se(n)]]; + default: + return [0, t, [0, 4, Se(n)]]; + } + } + function Dee(t, n) { + gn(n); + var e = j(n), i = ef < e ? Eo < e ? Ma < e ? Do < e ? 1 : 2 : Qx < e ? 1 : 2 : mo < e ? xc < e ? ox < e ? 1 : 2 : fo < e ? 1 : 2 : $u < e ? Hu < e ? 1 : 3 : Co < e ? 1 : 2 : Vr(ALr, e + 1 | 0) - 1 | 0; + if (5 < i >>> 0) + var x = q(n); + else + switch (i) { + case 0: + var x = 0; + break; + case 1: + var x = 6; + break; + case 2: + if (G0(n, 2), jc(j(n)) === 0) { + for (; ; ) + if (G0(n, 2), jc(j(n)) !== 0) { + var x = q(n); + break; + } + } else + var x = q(n); + break; + case 3: + var x = 1; + break; + case 4: + G0(n, 1); + var x = xi(j(n)) === 0 ? 1 : q(n); + break; + default: + G0(n, 5); + var c = d9(j(n)), x = c === 0 ? 4 : c === 1 ? 3 : q(n); + } + if (6 < x >>> 0) + return ke(ZCr); + switch (x) { + case 0: + return [0, t, Pn]; + case 1: + return [2, d7(t, n)]; + case 2: + return [2, t]; + case 3: + var s = ju(t, n), p = $n(zn), y = e2(t, p, n), T = y[1]; + return [1, T, Si(T, s, y[2], p, 0)]; + case 4: + var E = ju(t, n), d = $n(zn), w = R1(t, d, n), G = w[1]; + return [1, G, Si(G, E, w[2], d, 1)]; + case 5: + var A = ju(t, n), S = $n(zn), M = t; + r: + for (; ; ) { + gn(n); + var K = j(n), V = 92 < K ? Hu < K ? 1 : $u < K ? 2 : 1 : Vr(GLr, K + 1 | 0) - 1 | 0; + if (6 < V >>> 0) + var f0 = q(n); + else + switch (V) { + case 0: + var f0 = 0; + break; + case 1: + for (; ; ) { + G0(n, 7); + var m0 = j(n); + if (-1 < m0) + if (90 < m0) + if (92 < m0) + if ($u < m0) + var k0 = m0 <= Hu ? 1 : 0, g0 = k0 && -1; + else + var g0 = 0; + else + var g0 = -1; + else + var g0 = Vr(cRr, m0) - 1 | 0; + else + var g0 = -1; + if (g0 !== 0) { + var f0 = q(n); + break; + } + } + break; + case 2: + var f0 = 6; + break; + case 3: + G0(n, 6); + var f0 = xi(j(n)) === 0 ? 6 : q(n); + break; + case 4: + if (G0(n, 4), Sr0(j(n)) === 0) { + for (; ; ) + if (G0(n, 3), Sr0(j(n)) !== 0) { + var f0 = q(n); + break; + } + } else + var f0 = q(n); + break; + case 5: + var f0 = 5; + break; + default: + G0(n, 7); + var e0 = j(n); + if (-1 < e0) + if (13 < e0) + var x0 = e0 <= Hu ? 1 : 0, l = x0 && ($u < e0 ? 1 : 0); + else + var l = Vr(xLr, e0) - 1 | 0; + else + var l = -1; + if (2 < l >>> 0) + var f0 = q(n); + else + switch (l) { + case 0: + var f0 = 2; + break; + case 1: + var f0 = 1; + break; + default: + G0(n, 1); + var f0 = xi(j(n)) === 0 ? 1 : q(n); + } + } + if (7 < f0 >>> 0) + var c0 = ke(Fwr); + else + switch (f0) { + case 0: + var c0 = [0, Gu(M, nt(M, n), 25), Twr]; + break; + case 1: + var c0 = [0, d7(Gu(M, nt(M, n), 25), n), Owr]; + break; + case 3: + var t0 = Se(n), c0 = [0, M, m7(t0, 1, un(t0) - 1 | 0)]; + break; + case 4: + var c0 = [0, M, Iwr]; + break; + case 5: + for (qi(S, 91); ; ) { + gn(n); + var o0 = j(n), w0 = 93 < o0 ? 1 : Vr(oLr, o0 + 1 | 0) - 1 | 0; + if (3 < w0 >>> 0) + var _0 = q(n); + else + switch (w0) { + case 0: + var _0 = 0; + break; + case 1: + for (; ; ) { + G0(n, 4); + var E0 = j(n); + if (-1 < E0) + if (91 < E0) + var U0 = E0 <= 93 ? 1 : 0, b = U0 && -1; + else + var b = 0; + else + var b = -1; + if (b !== 0) { + var _0 = q(n); + break; + } + } + break; + case 2: + G0(n, 4); + var R0 = j(n), X = 91 < R0 ? 93 < R0 ? -1 : Vr(rN, R0 - 92 | 0) - 1 | 0 : -1, _0 = X === 0 ? 1 : X === 1 ? 2 : q(n); + break; + default: + var _0 = 3; + } + if (4 < _0 >>> 0) + var s0 = ke(Swr); + else + switch (_0) { + case 0: + var s0 = M; + break; + case 1: + hn(S, gwr); + continue; + case 2: + qi(S, 92), qi(S, 93); + continue; + case 3: + qi(S, 93); + var s0 = M; + break; + default: + hn(S, Se(n)); + continue; + } + var M = s0; + continue r; + } + case 6: + var c0 = [0, d7(Gu(M, nt(M, n), 25), n), Awr]; + break; + default: + hn(S, Se(n)); + continue; + } + var hr = c0[1], Ar = h7(hr, n), or = [0, hr[1], A, Ar], W0 = c0[2]; + return [0, hr, [5, or, Mt(S), W0]]; + } + default: + var Lr = Ei(t, nt(t, n)); + return [0, Lr, [6, Se(n)]]; + } + } + function pL(t, n, e, i, x) { + for (var c = t; ; ) { + var s = function(Cn) { + for (; ; ) + if (G0(Cn, 6), Fr0(j(Cn)) !== 0) + return q(Cn); + }; + gn(x); + var p = j(x), y = br < p ? Hu < p ? 1 : $u < p ? 2 : 1 : Vr(QDr, p + 1 | 0) - 1 | 0; + if (6 < y >>> 0) + var T = q(x); + else + switch (y) { + case 0: + var T = 1; + break; + case 1: + var T = s(x); + break; + case 2: + var T = 2; + break; + case 3: + G0(x, 2); + var T = xi(j(x)) === 0 ? 2 : q(x); + break; + case 4: + var T = 0; + break; + case 5: + G0(x, 6); + var E = j(x), d = 34 < E ? In < E ? -1 : Vr(WLr, E - 35 | 0) - 1 | 0 : -1; + if (d === 0) { + var w = j(x), G = 47 < w ? uc < w ? -1 : Vr(iRr, w + Wt | 0) - 1 | 0 : -1; + if (G === 0) + for (; ; ) { + var A = j(x), S = 47 < A ? 59 < A ? -1 : Vr(iLr, A + Wt | 0) - 1 | 0 : -1; + if (S !== 0) { + var T = S === 1 ? 4 : q(x); + break; + } + } + else if (G === 1 && Nn(j(x)) === 0) + for (; ; ) { + var M = j(x), K = 47 < M ? Ri < M ? -1 : Vr(rRr, M + Wt | 0) - 1 | 0 : -1; + if (K !== 0) { + var T = K === 1 ? 3 : q(x); + break; + } + } + else + var T = q(x); + } else if (d === 1 && dn(j(x)) === 0) { + var V = Zv(j(x)); + if (V === 0) { + var f0 = Zv(j(x)); + if (f0 === 0) { + var m0 = Zv(j(x)); + if (m0 === 0) { + var k0 = Zv(j(x)); + if (k0 === 0) { + var g0 = Zv(j(x)); + if (g0 === 0) { + var e0 = Zv(j(x)); + if (e0 === 0) + var x0 = j(x), l = 58 < x0 ? 59 < x0 ? -1 : 0 : -1, T = l === 0 ? 5 : q(x); + else + var T = e0 === 1 ? 5 : q(x); + } else + var T = g0 === 1 ? 5 : q(x); + } else + var T = k0 === 1 ? 5 : q(x); + } else + var T = m0 === 1 ? 5 : q(x); + } else + var T = f0 === 1 ? 5 : q(x); + } else + var T = V === 1 ? 5 : q(x); + } else + var T = q(x); + break; + default: + G0(x, 0); + var T = Fr0(j(x)) === 0 ? s(x) : q(x); + } + if (6 < T >>> 0) + return ke(Nwr); + switch (T) { + case 0: + var c0 = Se(x), t0 = 0; + switch (n) { + case 0: + n0(c0, Cwr) || (t0 = 1); + break; + case 1: + n0(c0, Pwr) || (t0 = 1); + break; + default: + var o0 = 0; + if (n0(c0, Dwr)) { + if (!n0(c0, Lwr)) + return bL(c, nt(c, x), qwr, Bwr); + if (n0(c0, Rwr)) { + if (!n0(c0, jwr)) + return bL(c, nt(c, x), Mwr, Gwr); + o0 = 1; + } + } + if (!o0) + return $v(x), c; + } + if (t0) + return c; + hn(i, c0), hn(e, c0); + continue; + case 1: + return Ei(c, nt(c, x)); + case 2: + var w0 = Se(x); + hn(i, w0), hn(e, w0); + var c = d7(c, x); + continue; + case 3: + var _0 = Se(x), E0 = m7(_0, 3, un(_0) - 4 | 0); + hn(i, _0), S1(e, Bi(Te(Uwr, E0))); + continue; + case 4: + var U0 = Se(x), b = m7(U0, 2, un(U0) - 3 | 0); + hn(i, U0), S1(e, Bi(b)); + continue; + case 5: + var R0 = Se(x), X = m7(R0, 1, un(R0) - 2 | 0); + hn(i, R0); + var s0 = Ee(X, Hwr), hr = 0; + if (0 <= s0) + if (0 < s0) { + var Ar = Ee(X, FTr), or = 0; + if (0 <= Ar) + if (0 < Ar) { + var W0 = Ee(X, YIr), Lr = 0; + if (0 <= W0) + if (0 < W0) { + var Tr = Ee(X, rNr), Hr = 0; + if (0 <= Tr) + if (0 < Tr) { + var Or = Ee(X, NNr), fr = 0; + if (0 <= Or) + if (0 < Or) + if (n0(X, VNr)) + if (n0(X, zNr)) + if (n0(X, KNr)) + if (n0(X, WNr)) + if (n0(X, JNr)) + if (n0(X, $Nr)) + or = 1, Lr = 1, Hr = 1, fr = 1; + else + var Rr = ZNr; + else + var Rr = QNr; + else + var Rr = rCr; + else + var Rr = eCr; + else + var Rr = nCr; + else + var Rr = tCr; + else + var Rr = uCr; + else if (n0(X, CNr)) + if (n0(X, PNr)) + if (n0(X, DNr)) + if (n0(X, LNr)) + if (n0(X, RNr)) + if (n0(X, jNr)) + if (n0(X, GNr)) + or = 1, Lr = 1, Hr = 1, fr = 1; + else + var Rr = MNr; + else + var Rr = BNr; + else + var Rr = qNr; + else + var Rr = UNr; + else + var Rr = HNr; + else + var Rr = XNr; + else + var Rr = YNr; + if (!fr) + var Wr = Rr; + } else + var Wr = iCr; + else { + var Jr = Ee(X, eNr), ar = 0; + if (0 <= Jr) + if (0 < Jr) + if (n0(X, mNr)) + if (n0(X, _Nr)) + if (n0(X, yNr)) + if (n0(X, hNr)) + if (n0(X, dNr)) + if (n0(X, kNr)) + if (n0(X, wNr)) + or = 1, Lr = 1, Hr = 1, ar = 1; + else + var _r = ENr; + else + var _r = SNr; + else + var _r = gNr; + else + var _r = FNr; + else + var _r = TNr; + else + var _r = ONr; + else + var _r = INr; + else + var _r = ANr; + else if (n0(X, nNr)) + if (n0(X, tNr)) + if (n0(X, uNr)) + if (n0(X, iNr)) + if (n0(X, fNr)) + if (n0(X, xNr)) + if (n0(X, oNr)) + or = 1, Lr = 1, Hr = 1, ar = 1; + else + var _r = aNr; + else + var _r = cNr; + else + var _r = sNr; + else + var _r = vNr; + else + var _r = lNr; + else + var _r = bNr; + else + var _r = pNr; + if (!ar) + var Wr = _r; + } + if (!Hr) + var Ir = Wr; + } else + var Ir = fCr; + else { + var fe = Ee(X, VIr), v0 = 0; + if (0 <= fe) + if (0 < fe) { + var P = Ee(X, EAr), L = 0; + if (0 <= P) + if (0 < P) + if (n0(X, GAr)) + if (n0(X, MAr)) + if (n0(X, BAr)) + if (n0(X, qAr)) + if (n0(X, UAr)) + if (n0(X, HAr)) + if (n0(X, XAr)) + or = 1, Lr = 1, v0 = 1, L = 1; + else + var Q = YAr; + else + var Q = VAr; + else + var Q = zAr; + else + var Q = KAr; + else + var Q = WAr; + else + var Q = JAr; + else + var Q = $Ar; + else + var Q = ZAr; + else if (n0(X, SAr)) + if (n0(X, gAr)) + if (n0(X, FAr)) + if (n0(X, TAr)) + if (n0(X, OAr)) + if (n0(X, IAr)) + if (n0(X, AAr)) + or = 1, Lr = 1, v0 = 1, L = 1; + else + var Q = NAr; + else + var Q = CAr; + else + var Q = PAr; + else + var Q = DAr; + else + var Q = LAr; + else + var Q = RAr; + else + var Q = jAr; + if (!L) + var i0 = Q; + } else + var i0 = QAr; + else { + var l0 = Ee(X, zIr), S0 = 0; + if (0 <= l0) + if (0 < l0) + if (n0(X, oAr)) + if (n0(X, aAr)) + if (n0(X, cAr)) + if (n0(X, sAr)) + if (n0(X, vAr)) + if (n0(X, lAr)) + if (n0(X, bAr)) + or = 1, Lr = 1, v0 = 1, S0 = 1; + else + var T0 = pAr; + else + var T0 = mAr; + else + var T0 = _Ar; + else + var T0 = yAr; + else + var T0 = hAr; + else + var T0 = dAr; + else + var T0 = kAr; + else + var T0 = wAr; + else if (n0(X, KIr)) + if (n0(X, WIr)) + if (n0(X, JIr)) + if (n0(X, $Ir)) + if (n0(X, ZIr)) + if (n0(X, QIr)) + if (n0(X, rAr)) + or = 1, Lr = 1, v0 = 1, S0 = 1; + else + var T0 = eAr; + else + var T0 = nAr; + else + var T0 = tAr; + else + var T0 = uAr; + else + var T0 = iAr; + else + var T0 = fAr; + else + var T0 = xAr; + if (!S0) + var i0 = T0; + } + if (!v0) + var Ir = i0; + } + if (!Lr) + var rr = Ir; + } else + var rr = xCr; + else { + var L0 = Ee(X, TTr), B = 0; + if (0 <= L0) + if (0 < L0) { + var Z = Ee(X, ROr), p0 = 0; + if (0 <= Z) + if (0 < Z) { + var b0 = Ee(X, lIr), O0 = 0; + if (0 <= b0) + if (0 < b0) + if (n0(X, OIr)) + if (n0(X, IIr)) + if (n0(X, AIr)) + if (n0(X, NIr)) + if (n0(X, CIr)) + if (n0(X, PIr)) + if (n0(X, DIr)) + or = 1, B = 1, p0 = 1, O0 = 1; + else + var M0 = LIr; + else + var M0 = RIr; + else + var M0 = jIr; + else + var M0 = GIr; + else + var M0 = MIr; + else + var M0 = BIr; + else + var M0 = qIr; + else + var M0 = UIr; + else if (n0(X, bIr)) + if (n0(X, pIr)) + if (n0(X, mIr)) + if (n0(X, _Ir)) + if (n0(X, yIr)) + if (n0(X, hIr)) + if (n0(X, dIr)) + or = 1, B = 1, p0 = 1, O0 = 1; + else + var M0 = kIr; + else + var M0 = wIr; + else + var M0 = EIr; + else + var M0 = SIr; + else + var M0 = gIr; + else + var M0 = FIr; + else + var M0 = TIr; + if (!O0) + var er = M0; + } else + var er = HIr; + else { + var yr = Ee(X, jOr), vr = 0; + if (0 <= yr) + if (0 < yr) + if (n0(X, ZOr)) + if (n0(X, QOr)) + if (n0(X, rIr)) + if (n0(X, eIr)) + if (n0(X, nIr)) + if (n0(X, tIr)) + if (n0(X, uIr)) + or = 1, B = 1, p0 = 1, vr = 1; + else + var $0 = iIr; + else + var $0 = fIr; + else + var $0 = xIr; + else + var $0 = oIr; + else + var $0 = aIr; + else + var $0 = cIr; + else + var $0 = sIr; + else + var $0 = vIr; + else if (n0(X, GOr)) + if (n0(X, MOr)) + if (n0(X, BOr)) + if (n0(X, qOr)) + if (n0(X, UOr)) + if (n0(X, HOr)) + if (n0(X, XOr)) + or = 1, B = 1, p0 = 1, vr = 1; + else + var $0 = YOr; + else + var $0 = VOr; + else + var $0 = zOr; + else + var $0 = KOr; + else + var $0 = WOr; + else + var $0 = JOr; + else + var $0 = $Or; + if (!vr) + var er = $0; + } + if (!p0) + var Er = er; + } else + var Er = XIr; + else { + var Mr = Ee(X, OTr), Br = 0; + if (0 <= Mr) + if (0 < Mr) { + var qr = Ee(X, iOr), jr = 0; + if (0 <= qr) + if (0 < qr) + if (n0(X, dOr)) + if (n0(X, kOr)) + if (n0(X, wOr)) + if (n0(X, EOr)) + if (n0(X, SOr)) + if (n0(X, gOr)) + if (n0(X, FOr)) + or = 1, B = 1, Br = 1, jr = 1; + else + var $r = TOr; + else + var $r = OOr; + else + var $r = IOr; + else + var $r = AOr; + else + var $r = NOr; + else + var $r = COr; + else + var $r = POr; + else + var $r = DOr; + else if (n0(X, fOr)) + if (n0(X, xOr)) + if (n0(X, oOr)) + if (n0(X, aOr)) + if (n0(X, cOr)) + if (n0(X, sOr)) + if (n0(X, vOr)) + or = 1, B = 1, Br = 1, jr = 1; + else + var $r = lOr; + else + var $r = bOr; + else + var $r = pOr; + else + var $r = mOr; + else + var $r = _Or; + else + var $r = yOr; + else + var $r = hOr; + if (!jr) + var ne = $r; + } else + var ne = LOr; + else { + var Qr = Ee(X, ITr), be = 0; + if (0 <= Qr) + if (0 < Qr) + if (n0(X, XTr)) + if (n0(X, YTr)) + if (n0(X, VTr)) + if (n0(X, zTr)) + if (n0(X, KTr)) + if (n0(X, WTr)) + if (n0(X, JTr)) + or = 1, B = 1, Br = 1, be = 1; + else + var ae = $Tr; + else + var ae = ZTr; + else + var ae = QTr; + else + var ae = rOr; + else + var ae = eOr; + else + var ae = nOr; + else + var ae = tOr; + else + var ae = uOr; + else if (n0(X, ATr)) + if (n0(X, NTr)) + if (n0(X, CTr)) + if (n0(X, PTr)) + if (n0(X, DTr)) + if (n0(X, LTr)) + if (n0(X, RTr)) + or = 1, B = 1, Br = 1, be = 1; + else + var ae = jTr; + else + var ae = GTr; + else + var ae = MTr; + else + var ae = BTr; + else + var ae = qTr; + else + var ae = UTr; + else + var ae = HTr; + if (!be) + var ne = ae; + } + if (!Br) + var Er = ne; + } + if (!B) + var rr = Er; + } + if (!or) { + var pe = rr; + hr = 1; + } + } else { + var pe = oCr; + hr = 1; + } + else { + var oe = Ee(X, Xwr), ce = 0; + if (0 <= oe) + if (0 < oe) { + var ge = Ee(X, agr), q0 = 0; + if (0 <= ge) + if (0 < ge) { + var Fr = Ee(X, yFr), _ = 0; + if (0 <= Fr) + if (0 < Fr) { + var k = Ee(X, WFr), I = 0; + if (0 <= k) + if (0 < k) + if (n0(X, cTr)) + if (n0(X, sTr)) + if (n0(X, vTr)) + if (n0(X, lTr)) + if (n0(X, bTr)) + if (n0(X, pTr)) + ce = 1, q0 = 1, _ = 1, I = 1; + else + var U = mTr; + else + var U = _Tr; + else + var U = yTr; + else + var U = hTr; + else + var U = dTr; + else + var U = kTr; + else + var U = wTr; + else if (n0(X, JFr)) + if (n0(X, $Fr)) + if (n0(X, ZFr)) + if (n0(X, QFr)) + if (n0(X, rTr)) + if (n0(X, eTr)) + if (n0(X, nTr)) + ce = 1, q0 = 1, _ = 1, I = 1; + else + var U = tTr; + else + var U = uTr; + else + var U = iTr; + else + var U = fTr; + else + var U = xTr; + else + var U = oTr; + else + var U = aTr; + if (!I) + var Y = U; + } else + var Y = ETr; + else { + var y0 = Ee(X, hFr), P0 = 0; + if (0 <= y0) + if (0 < y0) + if (n0(X, DFr)) + if (n0(X, LFr)) + if (n0(X, RFr)) + if (n0(X, jFr)) + if (n0(X, GFr)) + if (n0(X, MFr)) + if (n0(X, BFr)) + ce = 1, q0 = 1, _ = 1, P0 = 1; + else + var I0 = qFr; + else + var I0 = UFr; + else + var I0 = HFr; + else + var I0 = XFr; + else + var I0 = YFr; + else + var I0 = VFr; + else + var I0 = zFr; + else + var I0 = KFr; + else if (n0(X, dFr)) + if (n0(X, kFr)) + if (n0(X, wFr)) + if (n0(X, EFr)) + if (n0(X, SFr)) + if (n0(X, gFr)) + if (n0(X, FFr)) + ce = 1, q0 = 1, _ = 1, P0 = 1; + else + var I0 = TFr; + else + var I0 = OFr; + else + var I0 = IFr; + else + var I0 = AFr; + else + var I0 = NFr; + else + var I0 = CFr; + else + var I0 = PFr; + if (!P0) + var Y = I0; + } + if (!_) + var D = Y; + } else + var D = STr; + else { + var u0 = Ee(X, cgr), X0 = 0; + if (0 <= u0) + if (0 < u0) { + var J0 = Ee(X, qgr), ir = 0; + if (0 <= J0) + if (0 < J0) + if (n0(X, nFr)) + if (n0(X, tFr)) + if (n0(X, uFr)) + if (n0(X, iFr)) + if (n0(X, fFr)) + if (n0(X, xFr)) + if (n0(X, oFr)) + ce = 1, q0 = 1, X0 = 1, ir = 1; + else + var Q0 = aFr; + else + var Q0 = cFr; + else + var Q0 = sFr; + else + var Q0 = vFr; + else + var Q0 = lFr; + else + var Q0 = bFr; + else + var Q0 = pFr; + else + var Q0 = mFr; + else if (n0(X, Ugr)) + if (n0(X, Hgr)) + if (n0(X, Xgr)) + if (n0(X, Ygr)) + if (n0(X, Vgr)) + if (n0(X, zgr)) + if (n0(X, Kgr)) + ce = 1, q0 = 1, X0 = 1, ir = 1; + else + var Q0 = Wgr; + else + var Q0 = Jgr; + else + var Q0 = $gr; + else + var Q0 = Zgr; + else + var Q0 = Qgr; + else + var Q0 = rFr; + else + var Q0 = eFr; + if (!ir) + var F0 = Q0; + } else + var F0 = _Fr; + else { + var Sr = Ee(X, sgr), mr = 0; + if (0 <= Sr) + if (0 < Sr) + if (n0(X, Fgr)) + if (n0(X, Tgr)) + if (n0(X, Ogr)) + if (n0(X, Igr)) + if (n0(X, Agr)) + if (n0(X, Ngr)) + if (n0(X, Cgr)) + ce = 1, q0 = 1, X0 = 1, mr = 1; + else + var Cr = Pgr; + else + var Cr = Dgr; + else + var Cr = Lgr; + else + var Cr = Rgr; + else + var Cr = jgr; + else + var Cr = Ggr; + else + var Cr = Mgr; + else + var Cr = Bgr; + else if (n0(X, vgr)) + if (n0(X, lgr)) + if (n0(X, bgr)) + if (n0(X, pgr)) + if (n0(X, mgr)) + if (n0(X, _gr)) + if (n0(X, ygr)) + ce = 1, q0 = 1, X0 = 1, mr = 1; + else + var Cr = hgr; + else + var Cr = dgr; + else + var Cr = kgr; + else + var Cr = wgr; + else + var Cr = Egr; + else + var Cr = Sgr; + else + var Cr = ggr; + if (!mr) + var F0 = Cr; + } + if (!X0) + var D = F0; + } + if (!q0) + var sr = D; + } else + var sr = gTr; + else { + var Pr = Ee(X, Ywr), K0 = 0; + if (0 <= Pr) + if (0 < Pr) { + var Ur = Ee(X, rSr), h0 = 0; + if (0 <= Ur) + if (0 < Ur) { + var Kr = Ee(X, NSr), re = 0; + if (0 <= Kr) + if (0 < Kr) + if (n0(X, VSr)) + if (n0(X, zSr)) + if (n0(X, KSr)) + if (n0(X, WSr)) + if (n0(X, JSr)) + if (n0(X, $Sr)) + if (n0(X, ZSr)) + ce = 1, K0 = 1, h0 = 1, re = 1; + else + var xe = QSr; + else + var xe = rgr; + else + var xe = egr; + else + var xe = ngr; + else + var xe = tgr; + else + var xe = ugr; + else + var xe = igr; + else + var xe = fgr; + else if (n0(X, CSr)) + if (n0(X, PSr)) + if (n0(X, DSr)) + if (n0(X, LSr)) + if (n0(X, RSr)) + if (n0(X, jSr)) + if (n0(X, GSr)) + ce = 1, K0 = 1, h0 = 1, re = 1; + else + var xe = MSr; + else + var xe = BSr; + else + var xe = qSr; + else + var xe = USr; + else + var xe = HSr; + else + var xe = XSr; + else + var xe = YSr; + if (!re) + var Re = xe; + } else + var Re = xgr; + else { + var ve = Ee(X, eSr), Ie = 0; + if (0 <= ve) + if (0 < ve) + if (n0(X, mSr)) + if (n0(X, _Sr)) + if (n0(X, ySr)) + if (n0(X, hSr)) + if (n0(X, dSr)) + if (n0(X, kSr)) + if (n0(X, wSr)) + ce = 1, K0 = 1, h0 = 1, Ie = 1; + else + var Ge = ESr; + else + var Ge = SSr; + else + var Ge = gSr; + else + var Ge = FSr; + else + var Ge = TSr; + else + var Ge = OSr; + else + var Ge = ISr; + else + var Ge = ASr; + else if (n0(X, nSr)) + if (n0(X, tSr)) + if (n0(X, uSr)) + if (n0(X, iSr)) + if (n0(X, fSr)) + if (n0(X, xSr)) + if (n0(X, oSr)) + ce = 1, K0 = 1, h0 = 1, Ie = 1; + else + var Ge = aSr; + else + var Ge = cSr; + else + var Ge = sSr; + else + var Ge = vSr; + else + var Ge = lSr; + else + var Ge = bSr; + else + var Ge = pSr; + if (!Ie) + var Re = Ge; + } + if (!h0) + var Me = Re; + } else + var Me = ogr; + else { + var an = Ee(X, Vwr), We = 0; + if (0 <= an) + if (0 < an) { + var Ae = Ee(X, EEr), cn = 0; + if (0 <= Ae) + if (0 < Ae) + if (n0(X, GEr)) + if (n0(X, MEr)) + if (n0(X, BEr)) + if (n0(X, qEr)) + if (n0(X, UEr)) + if (n0(X, HEr)) + if (n0(X, XEr)) + ce = 1, K0 = 1, We = 1, cn = 1; + else + var rn = YEr; + else + var rn = VEr; + else + var rn = zEr; + else + var rn = KEr; + else + var rn = WEr; + else + var rn = JEr; + else + var rn = $Er; + else + var rn = ZEr; + else if (n0(X, SEr)) + if (n0(X, gEr)) + if (n0(X, FEr)) + if (n0(X, TEr)) + if (n0(X, OEr)) + if (n0(X, IEr)) + if (n0(X, AEr)) + ce = 1, K0 = 1, We = 1, cn = 1; + else + var rn = NEr; + else + var rn = CEr; + else + var rn = PEr; + else + var rn = DEr; + else + var rn = LEr; + else + var rn = REr; + else + var rn = jEr; + if (!cn) + var kn = rn; + } else + var kn = QEr; + else { + var vn = Ee(X, zwr), Ne = 0; + if (0 <= vn) + if (0 < vn) + if (n0(X, oEr)) + if (n0(X, aEr)) + if (n0(X, cEr)) + if (n0(X, sEr)) + if (n0(X, vEr)) + if (n0(X, lEr)) + if (n0(X, bEr)) + ce = 1, K0 = 1, We = 1, Ne = 1; + else + var Je = pEr; + else + var Je = mEr; + else + var Je = _Er; + else + var Je = yEr; + else + var Je = hEr; + else + var Je = dEr; + else + var Je = kEr; + else + var Je = wEr; + else if (n0(X, Kwr)) + if (n0(X, Wwr)) + if (n0(X, Jwr)) + if (n0(X, $wr)) + if (n0(X, Zwr)) + if (n0(X, Qwr)) + if (n0(X, rEr)) + ce = 1, K0 = 1, We = 1, Ne = 1; + else + var Je = eEr; + else + var Je = nEr; + else + var Je = tEr; + else + var Je = uEr; + else + var Je = iEr; + else + var Je = fEr; + else + var Je = xEr; + if (!Ne) + var kn = Je; + } + if (!We) + var Me = kn; + } + if (!K0) + var sr = Me; + } + if (!ce) { + var pe = sr; + hr = 1; + } + } + var en = hr ? pe : 0; + en ? S1(e, en[1]) : hn(e, Te(cCr, Te(X, aCr))); + continue; + default: + var _n = Se(x); + hn(i, _n), hn(e, _n); + continue; + } + } + } + function Lee(t, n) { + gn(n); + var e = j(n), i = ef < e ? vw < e ? -1 : Uk < e ? C3 < e ? Bw < e ? EE < e ? Wy < e ? 1 : 6 : Jd < e ? lE < e ? uF < e ? 1 : 6 : ZT < e ? 1 : 6 : WF < e ? bA < e ? 1 : 6 : sI < e ? 1 : 6 : C6 < e ? E4 < e ? x6 < e ? V8 < e ? j3 < e ? r3 < e ? CO < e ? 1 : 6 : LI < e ? 1 : 6 : Iy < e ? hg < e ? 1 : 6 : Mw < e ? 1 : 6 : L3 < e ? w8 < e ? jg < e ? 1 : 6 : $4 < e ? 1 : 6 : W8 < e ? zT < e ? 1 : 6 : kk < e ? 1 : 6 : O4 < e ? YO < e ? l3 < e ? Qk < e ? 1 : 6 : fk < e ? 1 : 6 : xp < e ? V6 < e ? 1 : 6 : Td < e ? 1 : 6 : G8 < e ? s4 < e ? t6 < e ? 1 : 6 : q6 < e ? 1 : 6 : B6 < e ? S4 < e ? 1 : 6 : fn < e ? 1 : 6 : LE < e ? M4 < e ? g6 < e ? SF < e ? i8 < e ? 1 : 6 : d8 < e ? 1 : 6 : F4 < e ? JF < e ? 1 : 6 : mh < e ? 1 : 6 : U6 < e ? n8 < e ? s3 < e ? 1 : 6 : S8 < e ? 1 : 6 : BS < e ? L8 < e ? 1 : 6 : K3 < e ? 1 : 6 : m8 < e ? f8 < e ? x8 < e ? w3 < e ? 1 : 6 : _6 < e ? 1 : 6 : s6 < e ? oF < e ? 1 : 6 : ZO < e ? 1 : 6 : a3 < e ? DS < e ? e8 < e ? 1 : 6 : g8 < e ? 1 : 6 : J3 < e ? sF < e ? 1 : 6 : ig < e ? 1 : 6 : iw < e ? Ek < e ? wk < e ? qk < e ? FT < e ? Vk < e ? 1 : 6 : uA < e ? 1 : 6 : dy < e ? VS < e ? 1 : 6 : _d < e ? 1 : 6 : Th < e ? pF < e ? FE < e ? 1 : 6 : Zw < e ? 1 : 6 : Sy < e ? L_ < e ? 1 : 6 : CE < e ? 1 : 6 : LF < e ? Vw < e ? My < e ? rw < e ? 1 : 6 : XI < e ? 1 : 6 : jO < e ? ap < e ? 1 : 6 : jT < e ? 1 : 6 : Ot < e ? OA < e ? gA < e ? 1 : 6 : 1 : 6 : c6 < e ? w6 < e ? l6 < e ? k3 < e ? VE < e ? 1 : 6 : qw < e ? 1 : 6 : v4 < e ? nE < e ? 1 : 6 : Ty < e ? 1 : 6 : c3 < e ? V4 < e ? eg < e ? 1 : 6 : qF < e ? 1 : 6 : X4 < e ? _T < e ? 1 : 6 : Oy < e ? 1 : 6 : D6 < e ? D4 < e ? V3 < e ? MS < e ? 1 : 6 : Ww < e ? 1 : 6 : cy < e ? jy < e ? 1 : 6 : VT < e ? 1 : 6 : B4 < e ? bh < e ? JT < e ? 1 : 6 : G3 < e ? 1 : 6 : r6 < e ? sO < e ? 1 : 6 : ZE < e ? 1 : 6 : uT < e ? Z4 < e ? Yd < e ? Q6 < e ? L4 < e ? N6 < e ? vp < e ? D_ < e ? 1 : 6 : Pd < e ? 1 : 6 : pd < e ? Rg < e ? 1 : 6 : OS < e ? 1 : 6 : G6 < e ? I3 < e ? uk < e ? 1 : 6 : cE < e ? 1 : 6 : l8 < e ? l4 < e ? 1 : 6 : rh < e ? 1 : 6 : M3 < e ? FS < e ? NE < e ? aT < e ? 1 : 6 : kT < e ? 1 : 6 : uS < e ? d3 < e ? 1 : 6 : zd < e ? 1 : 6 : ly < e ? T6 < e ? Pg < e ? 1 : 6 : vy < e ? 1 : 6 : LO < e ? yF < e ? 1 : 6 : YF < e ? 1 : 6 : DI < e ? au < e ? jF < e ? Ah < e ? AO < e ? 1 : 6 : Cd < e ? 1 : 6 : qh < e ? AS < e ? 1 : 6 : lA < e ? 1 : 6 : cO < e ? AI < e ? xI < e ? 1 : 6 : B_ < e ? 1 : 6 : hS < e ? fT < e ? 1 : 6 : mg < e ? 1 : 6 : NO < e ? Nw < e ? Yh < e ? lw < e ? 1 : 6 : Qg < e ? 1 : 6 : Vg < e ? Lk < e ? 1 : 6 : qO < e ? 1 : 6 : iS < e ? b6 < e ? h6 < e ? 1 : 6 : $F < e ? 1 : 6 : ph < e ? rT < e ? 1 : 6 : HS < e ? 1 : 6 : zO < e ? Ck < e ? yS < e ? Iw < e ? CI < e ? Kg < e ? 1 : 6 : VO < e ? 1 : 6 : Mk < e ? ks < e ? 1 : 6 : PF < e ? 1 : 6 : kd < e ? TS < e ? wI < e ? 1 : 6 : xg < e ? 1 : 6 : Rd < e ? dh < e ? 1 : 6 : oI < e ? 1 : 6 : oT < e ? lg < e ? tF < e ? KI < e ? 1 : 6 : pk < e ? 1 : 6 : G_ < e ? kw < e ? 1 : 6 : QF < e ? 1 : 6 : jk < e ? FO < e ? mA < e ? 1 : 6 : _g < e ? 1 : 6 : WE < e ? lF < e ? 1 : 6 : MF < e ? 1 : 6 : h4 < e ? h3 < e ? vT < e ? jI < e ? mS < e ? 1 : 6 : cA < e ? 1 : 6 : DE < e ? zk < e ? 1 : 6 : Lg < e ? 1 : 6 : AT < e ? R6 < e ? bk < e ? 1 : 6 : iT < e ? 1 : 6 : US < e ? BT < e ? 1 : 6 : vE < e ? 1 : 6 : Wc < e ? Sk < e ? D3 < e ? Xg < e ? 1 : 6 : fd < e ? 1 : 6 : IF < e ? ld < e ? 1 : 6 : nA < e ? 1 : 6 : BE < e ? W3 < e ? sy < e ? 1 : 6 : kI < e ? 1 : 6 : VF < e ? fS < e ? 1 : 6 : P4 < e ? 1 : 6 : vS < e ? jw < e ? ik < e ? hO < e ? iI < e ? bg < e ? Nd < e ? 1 : 6 : u3 < e ? 1 : 6 : sE < e ? Ld < e ? 1 : 6 : Xk < e ? 1 : 6 : up < e ? hh < e ? M8 < e ? 1 : 6 : p3 < e ? 1 : 6 : Ew < e ? pE < e ? 1 : 6 : Bg < e ? 1 : 6 : by < e ? Zk < e ? $T < e ? zF < e ? 1 : 6 : Bd < e ? 1 : 6 : $k < e ? TI < e ? 1 : 6 : pO < e ? 1 : 6 : sS < e ? RO < e ? kA < e ? 1 : 6 : wA < e ? 1 : 6 : fg < e ? qI < e ? 1 : 6 : dS < e ? 1 : 6 : hI < e ? NI < e ? nS < e ? Xy < e ? J_ < e ? 1 : 6 : bT < e ? 1 : 6 : $O < e ? Eg < e ? 1 : 6 : oA < e ? 1 : 6 : uE < e ? ET < e ? dg < e ? 1 : 6 : TT < e ? 1 : 6 : Ay < e ? u8 < e ? 1 : 6 : ZS < e ? 1 : 6 : Gh < e ? M_ < e ? SO < e ? lh < e ? 1 : 6 : XE < e ? 1 : 6 : Q3 < e ? Z6 < e ? 1 : 6 : Od < e ? 1 : 6 : W6 < e ? RF < e ? qy < e ? 1 : 6 : Nk < e ? 1 : 6 : PE < e ? Tg < e ? 1 : 6 : OI < e ? 1 : 6 : A8 < e ? P_ < e ? C4 < e ? $g < e ? Uh < e ? WS < e ? 1 : 6 : j6 < e ? 1 : 6 : _E < e ? fI < e ? 1 : 6 : Pw < e ? 1 : 6 : f3 < e ? a8 < e ? UF < e ? 1 : 6 : Lw < e ? 1 : 6 : mk < e ? aI < e ? 1 : 6 : yy < e ? 1 : 6 : O8 < e ? uI < e ? u6 < e ? ky < e ? 1 : 6 : GI < e ? 1 : 6 : c8 < e ? Ow < e ? 1 : 6 : bE < e ? 1 : 6 : y3 < e ? fp < e ? eE < e ? 1 : 6 : I8 < e ? 1 : 6 : cw < e ? KF < e ? 1 : 6 : VI < e ? 1 : 6 : zh < e ? QO < e ? h8 < e ? hy < e ? ew < e ? 1 : 6 : i3 < e ? 1 : 6 : pI < e ? dA < e ? 1 : 6 : qd < e ? 1 : 6 : kg < e ? iE < e ? TO < e ? 1 : 6 : X6 < e ? 1 : 6 : Rw < e ? aw < e ? 1 : 6 : F3 < e ? 1 : 6 : Ik < e ? OF < e ? Ly < e ? m4 < e ? 1 : 6 : cd < e ? 1 : 6 : zg < e ? Jk < e ? 1 : 6 : aS < e ? 1 : 6 : B3 < e ? IO < e ? hw < e ? 1 : 6 : mE < e ? 1 : 6 : $S < e ? QI < e ? 1 : 6 : FA < e ? 1 : 6 : od < e ? KE < e ? Rk < e ? J6 < e ? Md < e ? xF < e ? Zg < e ? sh < e ? eT < e ? 1 : 6 : YI < e ? 1 : 6 : RE < e ? OT < e ? 1 : 6 : J8 < e ? 1 : 6 : IA < e ? dE < e ? qT < e ? 1 : 6 : hd < e ? 1 : 6 : Id < e ? Mh < e ? 1 : 6 : _S < e ? 1 : 6 : EA < e ? PO < e ? Hg < e ? sg < e ? 1 : 6 : Ug < e ? 1 : 6 : Xw < e ? td < e ? 1 : 6 : Dg < e ? 1 : 6 : Ag < e ? bS < e ? Wd < e ? 1 : 6 : Fg < e ? 1 : 6 : tA < e ? wT < e ? 1 : 6 : Dk < e ? 1 : 6 : rS < e ? Z8 < e ? JI < e ? AE < e ? ME < e ? 1 : 6 : pA < e ? 1 : 6 : EO < e ? Gy < e ? 1 : 6 : fA < e ? 1 : 6 : xA < e ? b4 < e ? _k < e ? 1 : 6 : oO < e ? 1 : 6 : wd < e ? S7 < e ? 1 : 6 : $d < e ? 1 : 6 : X8 < e ? z_ < e ? Fd < e ? Ph < e ? 1 : 6 : dT < e ? 1 : 6 : Dd < e ? Ok < e ? 1 : 6 : ah < e ? 1 : 6 : nh < e ? ag < e ? $w < e ? 1 : 6 : WT < e ? 1 : 6 : QS < e ? Fw < e ? 1 : 6 : LT < e ? 1 : 6 : Ih < e ? vk < e ? En < e ? p8 < e ? gT < e ? M6 < e ? 1 : 6 : gh < e ? 1 : 6 : J4 < e ? Q_ < e ? 1 : 6 : op < e ? 1 : 6 : vO < e ? GE < e ? ch < e ? 1 : 6 : q_ < e ? 1 : 6 : ES < e ? UT < e ? 1 : 6 : jS < e ? 1 : 6 : Uw < e ? ty < e ? sA < e ? Vh < e ? 1 : 6 : sT < e ? 1 : 6 : iF < e ? Zd < e ? 1 : 6 : FI < e ? 1 : 6 : xO < e ? th < e ? ng < e ? 1 : 6 : bd < e ? 1 : 6 : iO < e ? _O < e ? 1 : 6 : eO < e ? 1 : 6 : IS < e ? zE < e ? fO < e ? ck < e ? xh < e ? 1 : 6 : ud < e ? 1 : 6 : JS < e ? _w < e ? 1 : 6 : Fy < e ? 1 : 6 : vA < e ? $E < e ? KT < e ? 1 : 6 : rI < e ? 1 : 6 : uy < e ? Tw < e ? 1 : 6 : 1 : nT < e ? Z3 < e ? ek < e ? 6 : $y < e ? 1 : 6 : GF < e ? Qw < e ? 1 : 6 : sk < e ? 1 : 6 : vg < e ? nO < e ? tI < e ? 1 : 6 : GO < e ? 1 : 6 : Ry < e ? 1 : 6 : D8 < e ? Ed < e ? xw < e ? Oh < e ? rA < e ? 6 : $h < e ? tT < e ? 1 : 6 : vF < e ? 1 : 6 : Qy < e ? zI < e ? ry < e ? 1 : 6 : yh < e ? 1 : 6 : HE < e ? Jh < e ? 1 : 6 : hF < e ? 1 : 6 : rp < e ? z4 < e ? S6 < e ? py < e ? 1 : 6 : rg < e ? 1 : 6 : $8 < e ? yO < e ? 1 : 6 : Bk < e ? 1 : 6 : gk < e ? U8 < e ? EF < e ? 1 : 6 : wy < e ? 1 : 6 : og < e ? Tk < e ? 1 : 6 : wE < e ? 1 : 6 : Gw < e ? $_ < e ? ey < e ? pS < e ? oE < e ? 1 : 6 : 1 : 6 : dw < e ? 6 : Q4 < e ? IT < e ? 1 : 6 : yg < e ? 1 : 6 : eI < e ? t3 < e ? Ma < e ? Do < e ? 1 : 2 : BI < e ? 1 : 6 : ow < e ? MT < e ? 1 : 6 : YS < e ? 1 : 6 : yI < e ? tS < e ? Zh < e ? 1 : 6 : CT < e ? 1 : 6 : GT < e ? Kw < e ? 1 : 6 : SI < e ? 1 : 6 : UI < e ? tk < e ? Qn < e ? R4 < e ? q3 < e ? id < e ? 1 : 6 : _F < e ? 1 : 6 : z3 < e ? L6 < e ? 1 : 6 : fh < e ? 1 : 6 : PT < e ? ip < e ? uw < e ? 1 : 6 : eS < e ? 1 : 6 : tO < e ? e3 < e ? 1 : 6 : oh < e ? 1 : 6 : dk < e ? zS < e ? Qh < e ? ug < e ? 1 : 6 : iy < e ? 1 : 6 : Wk < e ? Kd < e ? 1 : 6 : TE < e ? 1 : 6 : dd < e ? my < e ? cF < e ? 1 : 6 : _A < e ? 1 : 6 : Ny < e ? 1 : 6 : Xd < e ? H3 < e ? o3 < e ? Jw < e ? 1 : 6 : av < e ? 6 : RT < e ? 1 : 6 : gF < e ? k6 < e ? NF < e ? 1 : 6 : Wh < e ? 1 : 6 : Gk < e ? Dh < e ? 1 : 6 : ZI < e ? 1 : 6 : Vd < e ? cS < e ? lT < e ? cI < e ? 1 : 6 : 1 : Dy < e ? 6 : Jy < e ? 1 : 6 : FF < e ? sd < e ? 1 : 6 : XT < e ? OO < e ? 1 : 6 : aO < e ? 1 : 6 : wh < e ? F8 < e ? W_ < e ? uh < e ? kO < e ? ed < e ? EI < e ? Aw < e ? 1 : 6 : yA < e ? 1 : 6 : Bh < e ? fy < e ? 1 : 6 : ak < e ? 1 : 6 : CF < e ? TA < e ? lp < e ? 1 : 6 : 1 : 6 : yT < e ? Hd < e ? kS < e ? zy < e ? 1 : 6 : wS < e ? 1 : 6 : v6 < e ? Hk < e ? 1 : 6 : kE < e ? 1 : 6 : Sw < e ? pw < e ? 1 : 6 : _h < e ? WO < e ? 1 : 6 : k8 < e ? 1 : 6 : kF < e ? DO < e ? XF < e ? gy < e ? Sd < e ? 1 : 6 : eA < e ? 1 : 6 : Z_ < e ? JE < e ? 1 : 6 : ay < e ? 1 : 6 : Ky < e ? _8 < e ? Uy < e ? 1 : 6 : n3 < e ? 1 : 6 : rE < e ? oy < e ? 1 : 6 : cg < e ? 1 : 6 : Yy < e ? SA < e ? xS < e ? rF < e ? 1 : 6 : Xh < e ? 1 : 6 : mI < e ? lk < e ? 1 : 6 : uO < e ? 1 : 6 : PS < e && aA < e ? 1 : 6 : yk < e ? Rh < e ? tg < e ? nk < e ? 6 : Zy < e ? bI < e ? 1 : 6 : Ch < e ? 1 : 6 : xE < e ? ok < e ? V_ < e ? 1 : 6 : 1 : 6 : Og < e ? UO < e && oS < e ? 1 : 6 : bw < e ? rO < e ? Lh < e ? 1 : 6 : 1 : dF < e ? 6 : 1 : Eh < e ? gE < e ? U3 < e ? 6 : tw < e ? 1 : 6 : dI < e ? Qd < e ? wO < e ? 1 : 6 : R_ < e ? 1 : 6 : Sh < e ? 1 : 6 : BF < e ? gg < e ? Ad < e ? 1 : 6 : XS < e ? 1 : 6 : Kk < e ? YE < e ? 6 : ih < e ? 1 : 6 : U_ < e ? yE < e ? 1 : 6 : Ht < e ? 1 : 6 : GS < e ? jE < e ? dO < e ? q4 < e ? Ey < e ? E8 < e ? RI < e ? 1 : 6 : nF < e ? 1 : 6 : HF < e ? 1 : 6 : ww < e ? E3 < e ? de < e ? 1 : 6 : 1 : 6 : Ig < e ? Gd < e ? X_ < e ? H_ < e ? 1 : 6 : 1 : 6 : Hw < e ? T3 < e ? vd < e ? 1 : 6 : fF < e ? 1 : 6 : wg < e ? 1 : 6 : z8 < e ? j8 < e ? Eo < e ? PI < e ? 6 : Qx < e ? 1 : 2 : F6 < e ? By < e ? 1 : 6 : IE < e ? 1 : 6 : K8 < e ? z6 < e ? Cg < e ? 1 : 6 : cT < e ? 1 : 6 : o8 < e ? tt < e ? 1 : 6 : Ak < e ? 1 : 6 : NS < e ? tE < e ? j4 < e ? Ng < e ? 1 : 6 : $I < e ? 1 : 6 : P6 < e ? TF < e ? 1 : 6 : p4 < e ? 1 : 6 : _I < e ? fE < e ? gI < e ? 1 : 6 : N3 < e ? 1 : 6 : G4 < e ? B8 < e ? 1 : 6 : Sg < e ? 1 : 6 : N8 < e ? QE < e ? aE < e ? Yk < e ? pT < e ? K_ < e ? 1 : 6 : wF < e ? 1 : 6 : UE < e ? 1 : 6 : rd < e ? vI < e ? 6 : 1 : 6 : MO < e ? mw < e ? YT < e ? s8 < e ? 1 : 6 : AA < e ? 1 : 6 : Yw < e ? Y_ < e ? 1 : 6 : 1 : 6 : Gg < e ? JO < e ? $3 < e ? sp < e ? P8 < e ? 1 : 6 : Q8 < e ? 1 : 6 : gr < e ? t8 < e ? 1 : 6 : 1 : g4 < e ? KS < e ? 6 : m6 < e ? 1 : 6 : mF < e ? Cy < e ? 1 : 6 : R3 < e ? 1 : 6 : Pk < e ? HI < e ? QT < e ? x3 < e ? 1 : 6 : mO < e ? 1 : 6 : Py < e ? O3 < e ? 1 : 6 : ep < e ? 1 : 6 : mo < e ? xc < e ? ox < e ? 1 : 2 : fo < e ? 1 : 2 : $u < e ? Hu < e ? 1 : 3 : Co < e ? 1 : 2 : Vr(DLr, e + 1 | 0) - 1 | 0; + if (14 < i >>> 0) + var x = q(n); + else + switch (i) { + case 0: + var x = 0; + break; + case 1: + var x = 14; + break; + case 2: + if (G0(n, 2), jc(j(n)) === 0) { + for (; ; ) + if (G0(n, 2), jc(j(n)) !== 0) { + var x = q(n); + break; + } + } else + var x = q(n); + break; + case 3: + var x = 1; + break; + case 4: + G0(n, 1); + var x = xi(j(n)) === 0 ? 1 : q(n); + break; + case 5: + var x = 12; + break; + case 6: + var x = 13; + break; + case 7: + var x = 10; + break; + case 8: + G0(n, 6); + var c = d9(j(n)), x = c === 0 ? 4 : c === 1 ? 3 : q(n); + break; + case 9: + var x = 9; + break; + case 10: + var x = 5; + break; + case 11: + var x = 11; + break; + case 12: + var x = 7; + break; + case 13: + if (G0(n, 14), Ls(j(n)) === 0) { + var s = L1(j(n)); + if (s === 0) + var x = Nn(j(n)) === 0 && Nn(j(n)) === 0 && Nn(j(n)) === 0 ? 13 : q(n); + else if (s === 1 && Nn(j(n)) === 0) + for (; ; ) { + var p = A1(j(n)); + if (p !== 0) { + var x = p === 1 ? 13 : q(n); + break; + } + } + else + var x = q(n); + } else + var x = q(n); + break; + default: + var x = 8; + } + if (14 < x >>> 0) + return ke(JCr); + switch (x) { + case 0: + return [0, t, Pn]; + case 1: + return [2, d7(t, n)]; + case 2: + return [2, t]; + case 3: + var y = ju(t, n), T = $n(zn), E = e2(t, T, n), d = E[1]; + return [1, d, Si(d, y, E[2], T, 0)]; + case 4: + var w = ju(t, n), G = $n(zn), A = R1(t, G, n), S = A[1]; + return [1, S, Si(S, w, A[2], G, 1)]; + case 5: + return [0, t, 98]; + case 6: + return [0, t, j7]; + case 7: + return [0, t, 99]; + case 8: + return [0, t, 0]; + case 9: + return [0, t, 86]; + case 10: + return [0, t, 10]; + case 11: + return [0, t, 82]; + case 12: + var M = Se(n), K = ju(t, n), V = $n(zn), f0 = $n(zn); + hn(f0, M); + var m0 = qn(M, $Cr) ? 0 : 1, k0 = pL(t, m0, V, f0, n), g0 = h7(k0, n); + hn(f0, M); + var e0 = Mt(V), x0 = Mt(f0); + return [0, k0, [8, [0, k0[1], K, g0], e0, x0]]; + case 13: + for (var l = n[6]; ; ) { + gn(n); + var c0 = j(n), t0 = In < c0 ? 1 : Vr(oRr, c0 + 1 | 0) - 1 | 0; + if (3 < t0 >>> 0) + var o0 = q(n); + else + switch (t0) { + case 0: + var o0 = 1; + break; + case 1: + var o0 = 2; + break; + case 2: + var o0 = 0; + break; + default: + if (G0(n, 2), Ls(j(n)) === 0) { + var w0 = L1(j(n)); + if (w0 === 0) + if (Nn(j(n)) === 0 && Nn(j(n)) === 0) + var _0 = Nn(j(n)) !== 0 ? 1 : 0, o0 = _0 && q(n); + else + var o0 = q(n); + else if (w0 === 1 && Nn(j(n)) === 0) + for (; ; ) { + var E0 = A1(j(n)); + if (E0 !== 0) { + var U0 = E0 !== 1 ? 1 : 0, o0 = U0 && q(n); + break; + } + } + else + var o0 = q(n); + } else + var o0 = q(n); + } + if (2 < o0 >>> 0) + throw [0, Sn, vwr]; + switch (o0) { + case 0: + continue; + case 1: + break; + default: + if (nL(br0(n))) + continue; + mr0(n, 1); + } + var b = n[3]; + tL(n, l); + var R0 = Ll(n), X = Hl(t, l, b); + return [0, t, [7, uL(R0), X]]; + } + default: + return [0, t, [6, Se(n)]]; + } + } + function Ree(t, n) { + gn(n); + var e = j(n); + if (-1 < e) + if (ef < e) + if (Eo < e) + if (Ma < e) + var i = e <= Do ? 1 : 0, T = i && 1; + else + var x = e <= Qx ? 1 : 0, T = x && 1; + else if (mo < e) + if (xc < e) + var c = e <= ox ? 1 : 0, T = c && 1; + else + var s = e <= fo ? 1 : 0, T = s && 1; + else if ($u < e) + var p = e <= Hu ? 1 : 0, T = p && 2; + else + var y = e <= Co ? 1 : 0, T = y && 1; + else + var T = Vr(tLr, e) - 1 | 0; + else + var T = -1; + if (5 < T >>> 0) + var E = q(n); + else + switch (T) { + case 0: + var E = 5; + break; + case 1: + if (G0(n, 1), jc(j(n)) === 0) { + for (; ; ) + if (G0(n, 1), jc(j(n)) !== 0) { + var E = q(n); + break; + } + } else + var E = q(n); + break; + case 2: + var E = 0; + break; + case 3: + G0(n, 0); + var d = xi(j(n)) !== 0 ? 1 : 0, E = d && q(n); + break; + case 4: + G0(n, 5); + var w = d9(j(n)), E = w === 0 ? 3 : w === 1 ? 2 : q(n); + break; + default: + var E = 4; + } + if (5 < E >>> 0) + return ke(zCr); + switch (E) { + case 0: + return [2, d7(t, n)]; + case 1: + return [2, t]; + case 2: + var G = ju(t, n), A = $n(zn), S = e2(t, A, n), M = S[1]; + return [1, M, Si(M, G, S[2], A, 0)]; + case 3: + var K = ju(t, n), V = $n(zn), f0 = R1(t, V, n), m0 = f0[1]; + return [1, m0, Si(m0, K, f0[2], V, 1)]; + case 4: + var k0 = ju(t, n), g0 = $n(zn), e0 = $n(zn), x0 = $n(zn); + hn(x0, KCr); + var l = Zr0(t, g0, e0, x0, n), c0 = l[1], t0 = h7(c0, n), o0 = [0, c0[1], k0, t0], w0 = l[2], _0 = Mt(x0), E0 = Mt(e0); + return [0, c0, [3, [0, o0, [0, Mt(g0), E0, _0], w0]]]; + default: + var U0 = Ei(t, nt(t, n)); + return [0, U0, [3, [0, nt(U0, n), WCr, 1]]]; + } + } + function jee(t, n) { + function e(D) { + for (; ; ) + if (G0(D, 29), dn(j(D)) !== 0) + return q(D); + } + function i(D) { + G0(D, 27); + var u0 = Bt(j(D)); + if (u0 === 0) { + for (; ; ) + if (G0(D, 25), dn(j(D)) !== 0) + return q(D); + } + return u0 === 1 ? e(D) : q(D); + } + function x(D) { + for (; ; ) + if (G0(D, 23), dn(j(D)) !== 0) + return q(D); + } + function c(D) { + G0(D, 22); + var u0 = Bt(j(D)); + if (u0 === 0) { + for (; ; ) + if (G0(D, 21), dn(j(D)) !== 0) + return q(D); + } + return u0 === 1 ? x(D) : q(D); + } + function s(D) { + for (; ; ) + if (G0(D, 23), dn(j(D)) !== 0) + return q(D); + } + function p(D) { + G0(D, 22); + var u0 = Bt(j(D)); + if (u0 === 0) { + for (; ; ) + if (G0(D, 21), dn(j(D)) !== 0) + return q(D); + } + return u0 === 1 ? s(D) : q(D); + } + function y(D) { + r: + for (; ; ) { + if (pn(j(D)) === 0) + for (; ; ) { + G0(D, 24); + var u0 = Mc(j(D)); + if (3 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return s(D); + case 1: + continue; + case 2: + continue r; + default: + return p(D); + } + } + return q(D); + } + } + function T(D) { + G0(D, 29); + var u0 = Gr0(j(D)); + if (3 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + var X0 = C1(j(D)); + if (X0 === 0) + for (; ; ) { + G0(D, 24); + var J0 = Qv(j(D)); + if (2 < J0 >>> 0) + return q(D); + switch (J0) { + case 0: + return s(D); + case 1: + continue; + default: + return p(D); + } + } + if (X0 === 1) + for (; ; ) { + G0(D, 24); + var ir = Mc(j(D)); + if (3 < ir >>> 0) + return q(D); + switch (ir) { + case 0: + return s(D); + case 1: + continue; + case 2: + return y(D); + default: + return p(D); + } + } + return q(D); + case 2: + for (; ; ) { + G0(D, 24); + var Q0 = Qv(j(D)); + if (2 < Q0 >>> 0) + return q(D); + switch (Q0) { + case 0: + return x(D); + case 1: + continue; + default: + return c(D); + } + } + default: + for (; ; ) { + G0(D, 24); + var F0 = Mc(j(D)); + if (3 < F0 >>> 0) + return q(D); + switch (F0) { + case 0: + return x(D); + case 1: + continue; + case 2: + return y(D); + default: + return c(D); + } + } + } + } + function E(D) { + for (; ; ) { + G0(D, 30); + var u0 = Ps(j(D)); + if (4 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + continue; + case 2: + return T(D); + case 3: + r: + for (; ; ) { + if (pn(j(D)) === 0) + for (; ; ) { + G0(D, 30); + var X0 = Ps(j(D)); + if (4 < X0 >>> 0) + return q(D); + switch (X0) { + case 0: + return e(D); + case 1: + continue; + case 2: + return T(D); + case 3: + continue r; + default: + return i(D); + } + } + return q(D); + } + default: + return i(D); + } + } + } + function d(D) { + return pn(j(D)) === 0 ? E(D) : q(D); + } + function w(D) { + for (; ; ) + if (G0(D, 19), dn(j(D)) !== 0) + return q(D); + } + function G(D) { + for (; ; ) + if (G0(D, 19), dn(j(D)) !== 0) + return q(D); + } + function A(D) { + G0(D, 29); + var u0 = Er0(j(D)); + if (u0 === 0) + return e(D); + if (u0 === 1) + for (; ; ) { + G0(D, 20); + var X0 = w9(j(D)); + if (3 < X0 >>> 0) + return q(D); + switch (X0) { + case 0: + return G(D); + case 1: + continue; + case 2: + r: + for (; ; ) { + if (Nn(j(D)) === 0) + for (; ; ) { + G0(D, 20); + var J0 = w9(j(D)); + if (3 < J0 >>> 0) + return q(D); + switch (J0) { + case 0: + return w(D); + case 1: + continue; + case 2: + continue r; + default: + G0(D, 18); + var ir = Bt(j(D)); + if (ir === 0) { + for (; ; ) + if (G0(D, 17), dn(j(D)) !== 0) + return q(D); + } + return ir === 1 ? w(D) : q(D); + } + } + return q(D); + } + default: + G0(D, 18); + var Q0 = Bt(j(D)); + if (Q0 === 0) { + for (; ; ) + if (G0(D, 17), dn(j(D)) !== 0) + return q(D); + } + return Q0 === 1 ? G(D) : q(D); + } + } + return q(D); + } + function S(D) { + for (; ; ) + if (G0(D, 13), dn(j(D)) !== 0) + return q(D); + } + function M(D) { + for (; ; ) + if (G0(D, 13), dn(j(D)) !== 0) + return q(D); + } + function K(D) { + G0(D, 29); + var u0 = Dr0(j(D)); + if (u0 === 0) + return e(D); + if (u0 === 1) + for (; ; ) { + G0(D, 14); + var X0 = h9(j(D)); + if (3 < X0 >>> 0) + return q(D); + switch (X0) { + case 0: + return M(D); + case 1: + continue; + case 2: + r: + for (; ; ) { + if (zu(j(D)) === 0) + for (; ; ) { + G0(D, 14); + var J0 = h9(j(D)); + if (3 < J0 >>> 0) + return q(D); + switch (J0) { + case 0: + return S(D); + case 1: + continue; + case 2: + continue r; + default: + G0(D, 12); + var ir = Bt(j(D)); + if (ir === 0) { + for (; ; ) + if (G0(D, 11), dn(j(D)) !== 0) + return q(D); + } + return ir === 1 ? S(D) : q(D); + } + } + return q(D); + } + default: + G0(D, 12); + var Q0 = Bt(j(D)); + if (Q0 === 0) { + for (; ; ) + if (G0(D, 11), dn(j(D)) !== 0) + return q(D); + } + return Q0 === 1 ? M(D) : q(D); + } + } + return q(D); + } + function V(D) { + for (; ; ) + if (G0(D, 9), dn(j(D)) !== 0) + return q(D); + } + function f0(D) { + for (; ; ) + if (G0(D, 9), dn(j(D)) !== 0) + return q(D); + } + function m0(D) { + G0(D, 29); + var u0 = Pr0(j(D)); + if (u0 === 0) + return e(D); + if (u0 === 1) + for (; ; ) { + G0(D, 10); + var X0 = k9(j(D)); + if (3 < X0 >>> 0) + return q(D); + switch (X0) { + case 0: + return f0(D); + case 1: + continue; + case 2: + r: + for (; ; ) { + if (Gc(j(D)) === 0) + for (; ; ) { + G0(D, 10); + var J0 = k9(j(D)); + if (3 < J0 >>> 0) + return q(D); + switch (J0) { + case 0: + return V(D); + case 1: + continue; + case 2: + continue r; + default: + G0(D, 8); + var ir = Bt(j(D)); + if (ir === 0) { + for (; ; ) + if (G0(D, 7), dn(j(D)) !== 0) + return q(D); + } + return ir === 1 ? V(D) : q(D); + } + } + return q(D); + } + default: + G0(D, 8); + var Q0 = Bt(j(D)); + if (Q0 === 0) { + for (; ; ) + if (G0(D, 7), dn(j(D)) !== 0) + return q(D); + } + return Q0 === 1 ? f0(D) : q(D); + } + } + return q(D); + } + function k0(D) { + G0(D, 28); + var u0 = Bt(j(D)); + if (u0 === 0) { + for (; ; ) + if (G0(D, 26), dn(j(D)) !== 0) + return q(D); + } + return u0 === 1 ? e(D) : q(D); + } + function g0(D) { + G0(D, 30); + var u0 = Qv(j(D)); + if (2 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + for (; ; ) { + G0(D, 30); + var X0 = Mc(j(D)); + if (3 < X0 >>> 0) + return q(D); + switch (X0) { + case 0: + return e(D); + case 1: + continue; + case 2: + r: + for (; ; ) { + if (pn(j(D)) === 0) + for (; ; ) { + G0(D, 30); + var J0 = Mc(j(D)); + if (3 < J0 >>> 0) + return q(D); + switch (J0) { + case 0: + return e(D); + case 1: + continue; + case 2: + continue r; + default: + return i(D); + } + } + return q(D); + } + default: + return i(D); + } + } + default: + return i(D); + } + } + function e0(D) { + for (; ; ) { + G0(D, 30); + var u0 = u9(j(D)); + if (3 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + return g0(D); + case 2: + continue; + default: + return k0(D); + } + } + } + function x0(D) { + for (; ; ) + if (G0(D, 15), dn(j(D)) !== 0) + return q(D); + } + function l(D) { + G0(D, 15); + var u0 = Bt(j(D)); + if (u0 === 0) { + for (; ; ) + if (G0(D, 15), dn(j(D)) !== 0) + return q(D); + } + return u0 === 1 ? x0(D) : q(D); + } + function c0(D) { + for (; ; ) { + G0(D, 16); + var u0 = Mr0(j(D)); + if (4 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return x0(D); + case 1: + return g0(D); + case 2: + continue; + case 3: + for (; ; ) { + G0(D, 15); + var X0 = u9(j(D)); + if (3 < X0 >>> 0) + return q(D); + switch (X0) { + case 0: + return x0(D); + case 1: + return g0(D); + case 2: + continue; + default: + return l(D); + } + } + default: + return l(D); + } + } + } + function t0(D) { + G0(D, 30); + var u0 = Or0(j(D)); + if (3 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + for (; ; ) { + G0(D, 30); + var X0 = Ps(j(D)); + if (4 < X0 >>> 0) + return q(D); + switch (X0) { + case 0: + return e(D); + case 1: + continue; + case 2: + return T(D); + case 3: + r: + for (; ; ) { + if (pn(j(D)) === 0) + for (; ; ) { + G0(D, 30); + var J0 = Ps(j(D)); + if (4 < J0 >>> 0) + return q(D); + switch (J0) { + case 0: + return e(D); + case 1: + continue; + case 2: + return T(D); + case 3: + continue r; + default: + return i(D); + } + } + return q(D); + } + default: + return i(D); + } + } + case 2: + return T(D); + default: + return i(D); + } + } + function o0(D) { + G0(D, 30); + var u0 = lL(j(D)); + if (8 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + return t0(D); + case 2: + return c0(D); + case 3: + return e0(D); + case 4: + return m0(D); + case 5: + return T(D); + case 6: + return K(D); + case 7: + return A(D); + default: + return k0(D); + } + } + function w0(D) { + r: + for (; ; ) { + if (pn(j(D)) === 0) + for (; ; ) { + G0(D, 30); + var u0 = Rr0(j(D)); + if (4 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + return g0(D); + case 2: + continue; + case 3: + continue r; + default: + return k0(D); + } + } + return q(D); + } + } + function _0(D) { + for (; ; ) { + G0(D, 30); + var u0 = o9(j(D)); + if (5 < u0 >>> 0) + return q(D); + switch (u0) { + case 0: + return e(D); + case 1: + return t0(D); + case 2: + continue; + case 3: + return T(D); + case 4: + return w0(D); + default: + return k0(D); + } + } + } + function E0(D) { + return G0(D, 3), Ur0(j(D)) === 0 ? 3 : q(D); + } + function U0(D) { + return m9(j(D)) === 0 && v9(j(D)) === 0 && Br0(j(D)) === 0 && Ar0(j(D)) === 0 && Nr0(j(D)) === 0 && vL(j(D)) === 0 && Bl(j(D)) === 0 && m9(j(D)) === 0 && Ls(j(D)) === 0 && Cr0(j(D)) === 0 && Ul(j(D)) === 0 ? 3 : q(D); + } + gn(n); + var b = j(n), R0 = ef < b ? vw < b ? -1 : Uk < b ? C3 < b ? Bw < b ? EE < b ? Wy < b ? 1 : 6 : Jd < b ? lE < b ? uF < b ? 1 : 6 : ZT < b ? 1 : 6 : WF < b ? bA < b ? 1 : 6 : sI < b ? 1 : 6 : C6 < b ? E4 < b ? x6 < b ? V8 < b ? j3 < b ? r3 < b ? CO < b ? 1 : 6 : LI < b ? 1 : 6 : Iy < b ? hg < b ? 1 : 6 : Mw < b ? 1 : 6 : L3 < b ? w8 < b ? jg < b ? 1 : 6 : $4 < b ? 1 : 6 : W8 < b ? zT < b ? 1 : 6 : kk < b ? 1 : 6 : O4 < b ? YO < b ? l3 < b ? Qk < b ? 1 : 6 : fk < b ? 1 : 6 : xp < b ? V6 < b ? 1 : 6 : Td < b ? 1 : 6 : G8 < b ? s4 < b ? t6 < b ? 1 : 6 : q6 < b ? 1 : 6 : B6 < b ? S4 < b ? 1 : 6 : fn < b ? 1 : 6 : LE < b ? M4 < b ? g6 < b ? SF < b ? i8 < b ? 1 : 6 : d8 < b ? 1 : 6 : F4 < b ? JF < b ? 1 : 6 : mh < b ? 1 : 6 : U6 < b ? n8 < b ? s3 < b ? 1 : 6 : S8 < b ? 1 : 6 : BS < b ? L8 < b ? 1 : 6 : K3 < b ? 1 : 6 : m8 < b ? f8 < b ? x8 < b ? w3 < b ? 1 : 6 : _6 < b ? 1 : 6 : s6 < b ? oF < b ? 1 : 6 : ZO < b ? 1 : 6 : a3 < b ? DS < b ? e8 < b ? 1 : 6 : g8 < b ? 1 : 6 : J3 < b ? sF < b ? 1 : 6 : ig < b ? 1 : 6 : iw < b ? Ek < b ? wk < b ? qk < b ? FT < b ? Vk < b ? 1 : 6 : uA < b ? 1 : 6 : dy < b ? VS < b ? 1 : 6 : _d < b ? 1 : 6 : Th < b ? pF < b ? FE < b ? 1 : 6 : Zw < b ? 1 : 6 : Sy < b ? L_ < b ? 1 : 6 : CE < b ? 1 : 6 : LF < b ? Vw < b ? My < b ? rw < b ? 1 : 6 : XI < b ? 1 : 6 : jO < b ? ap < b ? 1 : 6 : jT < b ? 1 : 6 : Ot < b ? OA < b ? gA < b ? 1 : 6 : 1 : 6 : c6 < b ? w6 < b ? l6 < b ? k3 < b ? VE < b ? 1 : 6 : qw < b ? 1 : 6 : v4 < b ? nE < b ? 1 : 6 : Ty < b ? 1 : 6 : c3 < b ? V4 < b ? eg < b ? 1 : 6 : qF < b ? 1 : 6 : X4 < b ? _T < b ? 1 : 6 : Oy < b ? 1 : 6 : D6 < b ? D4 < b ? V3 < b ? MS < b ? 1 : 6 : Ww < b ? 1 : 6 : cy < b ? jy < b ? 1 : 6 : VT < b ? 1 : 6 : B4 < b ? bh < b ? JT < b ? 1 : 6 : G3 < b ? 1 : 6 : r6 < b ? sO < b ? 1 : 6 : ZE < b ? 1 : 6 : uT < b ? Z4 < b ? Yd < b ? Q6 < b ? L4 < b ? N6 < b ? vp < b ? D_ < b ? 1 : 6 : Pd < b ? 1 : 6 : pd < b ? Rg < b ? 1 : 6 : OS < b ? 1 : 6 : G6 < b ? I3 < b ? uk < b ? 1 : 6 : cE < b ? 1 : 6 : l8 < b ? l4 < b ? 1 : 6 : rh < b ? 1 : 6 : M3 < b ? FS < b ? NE < b ? aT < b ? 1 : 6 : kT < b ? 1 : 6 : uS < b ? d3 < b ? 1 : 6 : zd < b ? 1 : 6 : ly < b ? T6 < b ? Pg < b ? 1 : 6 : vy < b ? 1 : 6 : LO < b ? yF < b ? 1 : 6 : YF < b ? 1 : 6 : DI < b ? au < b ? jF < b ? Ah < b ? AO < b ? 1 : 6 : Cd < b ? 1 : 6 : qh < b ? AS < b ? 1 : 6 : lA < b ? 1 : 6 : cO < b ? AI < b ? xI < b ? 1 : 6 : B_ < b ? 1 : 6 : hS < b ? fT < b ? 1 : 6 : mg < b ? 1 : 6 : NO < b ? Nw < b ? Yh < b ? lw < b ? 1 : 6 : Qg < b ? 1 : 6 : Vg < b ? Lk < b ? 1 : 6 : qO < b ? 1 : 6 : iS < b ? b6 < b ? h6 < b ? 1 : 6 : $F < b ? 1 : 6 : ph < b ? rT < b ? 1 : 6 : HS < b ? 1 : 6 : zO < b ? Ck < b ? yS < b ? Iw < b ? CI < b ? Kg < b ? 1 : 6 : VO < b ? 1 : 6 : Mk < b ? ks < b ? 1 : 6 : PF < b ? 1 : 6 : kd < b ? TS < b ? wI < b ? 1 : 6 : xg < b ? 1 : 6 : Rd < b ? dh < b ? 1 : 6 : oI < b ? 1 : 6 : oT < b ? lg < b ? tF < b ? KI < b ? 1 : 6 : pk < b ? 1 : 6 : G_ < b ? kw < b ? 1 : 6 : QF < b ? 1 : 6 : jk < b ? FO < b ? mA < b ? 1 : 6 : _g < b ? 1 : 6 : WE < b ? lF < b ? 1 : 6 : MF < b ? 1 : 6 : h4 < b ? h3 < b ? vT < b ? jI < b ? mS < b ? 1 : 6 : cA < b ? 1 : 6 : DE < b ? zk < b ? 1 : 6 : Lg < b ? 1 : 6 : AT < b ? R6 < b ? bk < b ? 1 : 6 : iT < b ? 1 : 6 : US < b ? BT < b ? 1 : 6 : vE < b ? 1 : 6 : Wc < b ? Sk < b ? D3 < b ? Xg < b ? 1 : 6 : fd < b ? 1 : 6 : IF < b ? ld < b ? 1 : 6 : nA < b ? 1 : 6 : BE < b ? W3 < b ? sy < b ? 1 : 6 : kI < b ? 1 : 6 : VF < b ? fS < b ? 1 : 6 : P4 < b ? 1 : 6 : vS < b ? jw < b ? ik < b ? hO < b ? iI < b ? bg < b ? Nd < b ? 1 : 6 : u3 < b ? 1 : 6 : sE < b ? Ld < b ? 1 : 6 : Xk < b ? 1 : 6 : up < b ? hh < b ? M8 < b ? 1 : 6 : p3 < b ? 1 : 6 : Ew < b ? pE < b ? 1 : 6 : Bg < b ? 1 : 6 : by < b ? Zk < b ? $T < b ? zF < b ? 1 : 6 : Bd < b ? 1 : 6 : $k < b ? TI < b ? 1 : 6 : pO < b ? 1 : 6 : sS < b ? RO < b ? kA < b ? 1 : 6 : wA < b ? 1 : 6 : fg < b ? qI < b ? 1 : 6 : dS < b ? 1 : 6 : hI < b ? NI < b ? nS < b ? Xy < b ? J_ < b ? 1 : 6 : bT < b ? 1 : 6 : $O < b ? Eg < b ? 1 : 6 : oA < b ? 1 : 6 : uE < b ? ET < b ? dg < b ? 1 : 6 : TT < b ? 1 : 6 : Ay < b ? u8 < b ? 1 : 6 : ZS < b ? 1 : 6 : Gh < b ? M_ < b ? SO < b ? lh < b ? 1 : 6 : XE < b ? 1 : 6 : Q3 < b ? Z6 < b ? 1 : 6 : Od < b ? 1 : 6 : W6 < b ? RF < b ? qy < b ? 1 : 6 : Nk < b ? 1 : 6 : PE < b ? Tg < b ? 1 : 6 : OI < b ? 1 : 6 : A8 < b ? P_ < b ? C4 < b ? $g < b ? Uh < b ? WS < b ? 1 : 6 : j6 < b ? 1 : 6 : _E < b ? fI < b ? 1 : 6 : Pw < b ? 1 : 6 : f3 < b ? a8 < b ? UF < b ? 1 : 6 : Lw < b ? 1 : 6 : mk < b ? aI < b ? 1 : 6 : yy < b ? 1 : 6 : O8 < b ? uI < b ? u6 < b ? ky < b ? 1 : 6 : GI < b ? 1 : 6 : c8 < b ? Ow < b ? 1 : 6 : bE < b ? 1 : 6 : y3 < b ? fp < b ? eE < b ? 1 : 6 : I8 < b ? 1 : 6 : cw < b ? KF < b ? 1 : 6 : VI < b ? 1 : 6 : zh < b ? QO < b ? h8 < b ? hy < b ? ew < b ? 1 : 6 : i3 < b ? 1 : 6 : pI < b ? dA < b ? 1 : 6 : qd < b ? 1 : 6 : kg < b ? iE < b ? TO < b ? 1 : 6 : X6 < b ? 1 : 6 : Rw < b ? aw < b ? 1 : 6 : F3 < b ? 1 : 6 : Ik < b ? OF < b ? Ly < b ? m4 < b ? 1 : 6 : cd < b ? 1 : 6 : zg < b ? Jk < b ? 1 : 6 : aS < b ? 1 : 6 : B3 < b ? IO < b ? hw < b ? 1 : 6 : mE < b ? 1 : 6 : $S < b ? QI < b ? 1 : 6 : FA < b ? 1 : 6 : od < b ? KE < b ? Rk < b ? J6 < b ? Md < b ? xF < b ? Zg < b ? sh < b ? eT < b ? 1 : 6 : YI < b ? 1 : 6 : RE < b ? OT < b ? 1 : 6 : J8 < b ? 1 : 6 : IA < b ? dE < b ? qT < b ? 1 : 6 : hd < b ? 1 : 6 : Id < b ? Mh < b ? 1 : 6 : _S < b ? 1 : 6 : EA < b ? PO < b ? Hg < b ? sg < b ? 1 : 6 : Ug < b ? 1 : 6 : Xw < b ? td < b ? 1 : 6 : Dg < b ? 1 : 6 : Ag < b ? bS < b ? Wd < b ? 1 : 6 : Fg < b ? 1 : 6 : tA < b ? wT < b ? 1 : 6 : Dk < b ? 1 : 6 : rS < b ? Z8 < b ? JI < b ? AE < b ? ME < b ? 1 : 6 : pA < b ? 1 : 6 : EO < b ? Gy < b ? 1 : 6 : fA < b ? 1 : 6 : xA < b ? b4 < b ? _k < b ? 1 : 6 : oO < b ? 1 : 6 : wd < b ? S7 < b ? 1 : 6 : $d < b ? 1 : 6 : X8 < b ? z_ < b ? Fd < b ? Ph < b ? 1 : 6 : dT < b ? 1 : 6 : Dd < b ? Ok < b ? 1 : 6 : ah < b ? 1 : 6 : nh < b ? ag < b ? $w < b ? 1 : 6 : WT < b ? 1 : 6 : QS < b ? Fw < b ? 1 : 6 : LT < b ? 1 : 6 : Ih < b ? vk < b ? En < b ? p8 < b ? gT < b ? M6 < b ? 1 : 6 : gh < b ? 1 : 6 : J4 < b ? Q_ < b ? 1 : 6 : op < b ? 1 : 6 : vO < b ? GE < b ? ch < b ? 1 : 6 : q_ < b ? 1 : 6 : ES < b ? UT < b ? 1 : 6 : jS < b ? 1 : 6 : Uw < b ? ty < b ? sA < b ? Vh < b ? 1 : 6 : sT < b ? 1 : 6 : iF < b ? Zd < b ? 1 : 6 : FI < b ? 1 : 6 : xO < b ? th < b ? ng < b ? 1 : 6 : bd < b ? 1 : 6 : iO < b ? _O < b ? 1 : 6 : eO < b ? 1 : 6 : IS < b ? zE < b ? fO < b ? ck < b ? xh < b ? 1 : 6 : ud < b ? 1 : 6 : JS < b ? _w < b ? 1 : 6 : Fy < b ? 1 : 6 : vA < b ? $E < b ? KT < b ? 1 : 6 : rI < b ? 1 : 6 : uy < b ? Tw < b ? 1 : 6 : 1 : nT < b ? Z3 < b ? ek < b ? 6 : $y < b ? 1 : 6 : GF < b ? Qw < b ? 1 : 6 : sk < b ? 1 : 6 : vg < b ? nO < b ? tI < b ? 1 : 6 : GO < b ? 1 : 6 : Ry < b ? 1 : 6 : D8 < b ? Ed < b ? xw < b ? Oh < b ? rA < b ? 6 : $h < b ? tT < b ? 1 : 6 : vF < b ? 1 : 6 : Qy < b ? zI < b ? ry < b ? 1 : 6 : yh < b ? 1 : 6 : HE < b ? Jh < b ? 1 : 6 : hF < b ? 1 : 6 : rp < b ? z4 < b ? S6 < b ? py < b ? 1 : 6 : rg < b ? 1 : 6 : $8 < b ? yO < b ? 1 : 6 : Bk < b ? 1 : 6 : gk < b ? U8 < b ? EF < b ? 1 : 6 : wy < b ? 1 : 6 : og < b ? Tk < b ? 1 : 6 : wE < b ? 1 : 6 : Gw < b ? $_ < b ? ey < b ? pS < b ? oE < b ? 1 : 6 : 1 : 6 : dw < b ? 6 : Q4 < b ? IT < b ? 1 : 6 : yg < b ? 1 : 6 : eI < b ? t3 < b ? Ma < b ? Do < b ? 1 : 2 : BI < b ? 1 : 6 : ow < b ? MT < b ? 1 : 6 : YS < b ? 1 : 6 : yI < b ? tS < b ? Zh < b ? 1 : 6 : CT < b ? 1 : 6 : GT < b ? Kw < b ? 1 : 6 : SI < b ? 1 : 6 : UI < b ? tk < b ? Qn < b ? R4 < b ? q3 < b ? id < b ? 1 : 6 : _F < b ? 1 : 6 : z3 < b ? L6 < b ? 1 : 6 : fh < b ? 1 : 6 : PT < b ? ip < b ? uw < b ? 1 : 6 : eS < b ? 1 : 6 : tO < b ? e3 < b ? 1 : 6 : oh < b ? 1 : 6 : dk < b ? zS < b ? Qh < b ? ug < b ? 1 : 6 : iy < b ? 1 : 6 : Wk < b ? Kd < b ? 1 : 6 : TE < b ? 1 : 6 : dd < b ? my < b ? cF < b ? 1 : 6 : _A < b ? 1 : 6 : Ny < b ? 1 : 6 : Xd < b ? H3 < b ? o3 < b ? Jw < b ? 1 : 6 : av < b ? 6 : RT < b ? 1 : 6 : gF < b ? k6 < b ? NF < b ? 1 : 6 : Wh < b ? 1 : 6 : Gk < b ? Dh < b ? 1 : 6 : ZI < b ? 1 : 6 : Vd < b ? cS < b ? lT < b ? cI < b ? 1 : 6 : 1 : Dy < b ? 6 : Jy < b ? 1 : 6 : FF < b ? sd < b ? 1 : 6 : XT < b ? OO < b ? 1 : 6 : aO < b ? 1 : 6 : wh < b ? F8 < b ? W_ < b ? uh < b ? kO < b ? ed < b ? EI < b ? Aw < b ? 1 : 6 : yA < b ? 1 : 6 : Bh < b ? fy < b ? 1 : 6 : ak < b ? 1 : 6 : CF < b ? TA < b ? lp < b ? 1 : 6 : 1 : 6 : yT < b ? Hd < b ? kS < b ? zy < b ? 1 : 6 : wS < b ? 1 : 6 : v6 < b ? Hk < b ? 1 : 6 : kE < b ? 1 : 6 : Sw < b ? pw < b ? 1 : 6 : _h < b ? WO < b ? 1 : 6 : k8 < b ? 1 : 6 : kF < b ? DO < b ? XF < b ? gy < b ? Sd < b ? 1 : 6 : eA < b ? 1 : 6 : Z_ < b ? JE < b ? 1 : 6 : ay < b ? 1 : 6 : Ky < b ? _8 < b ? Uy < b ? 1 : 6 : n3 < b ? 1 : 6 : rE < b ? oy < b ? 1 : 6 : cg < b ? 1 : 6 : Yy < b ? SA < b ? xS < b ? rF < b ? 1 : 6 : Xh < b ? 1 : 6 : mI < b ? lk < b ? 1 : 6 : uO < b ? 1 : 6 : PS < b && aA < b ? 1 : 6 : yk < b ? Rh < b ? tg < b ? nk < b ? 6 : Zy < b ? bI < b ? 1 : 6 : Ch < b ? 1 : 6 : xE < b ? ok < b ? V_ < b ? 1 : 6 : 1 : 6 : Og < b ? UO < b && oS < b ? 1 : 6 : bw < b ? rO < b ? Lh < b ? 1 : 6 : 1 : dF < b ? 6 : 1 : Eh < b ? gE < b ? U3 < b ? 6 : tw < b ? 1 : 6 : dI < b ? Qd < b ? wO < b ? 1 : 6 : R_ < b ? 1 : 6 : Sh < b ? 1 : 6 : BF < b ? gg < b ? Ad < b ? 1 : 6 : XS < b ? 1 : 6 : Kk < b ? YE < b ? 6 : ih < b ? 1 : 6 : U_ < b ? yE < b ? 1 : 6 : Ht < b ? 1 : 6 : GS < b ? jE < b ? dO < b ? q4 < b ? Ey < b ? E8 < b ? RI < b ? 1 : 6 : nF < b ? 1 : 6 : HF < b ? 1 : 6 : ww < b ? E3 < b ? de < b ? 1 : 6 : 1 : 6 : Ig < b ? Gd < b ? X_ < b ? H_ < b ? 1 : 6 : 1 : 6 : Hw < b ? T3 < b ? vd < b ? 1 : 6 : fF < b ? 1 : 6 : wg < b ? 1 : 6 : z8 < b ? j8 < b ? Eo < b ? PI < b ? 6 : Qx < b ? 1 : 2 : F6 < b ? By < b ? 1 : 6 : IE < b ? 1 : 6 : K8 < b ? z6 < b ? Cg < b ? 1 : 6 : cT < b ? 1 : 6 : o8 < b ? tt < b ? 1 : 6 : Ak < b ? 1 : 6 : NS < b ? tE < b ? j4 < b ? Ng < b ? 1 : 6 : $I < b ? 1 : 6 : P6 < b ? TF < b ? 1 : 6 : p4 < b ? 1 : 6 : _I < b ? fE < b ? gI < b ? 1 : 6 : N3 < b ? 1 : 6 : G4 < b ? B8 < b ? 1 : 6 : Sg < b ? 1 : 6 : N8 < b ? QE < b ? aE < b ? Yk < b ? pT < b ? K_ < b ? 1 : 6 : wF < b ? 1 : 6 : UE < b ? 1 : 6 : rd < b ? vI < b ? 6 : 1 : 6 : MO < b ? mw < b ? YT < b ? s8 < b ? 1 : 6 : AA < b ? 1 : 6 : Yw < b ? Y_ < b ? 1 : 6 : 1 : 6 : Gg < b ? JO < b ? $3 < b ? sp < b ? P8 < b ? 1 : 6 : Q8 < b ? 1 : 6 : gr < b ? t8 < b ? 1 : 6 : 1 : g4 < b ? KS < b ? 6 : m6 < b ? 1 : 6 : mF < b ? Cy < b ? 1 : 6 : R3 < b ? 1 : 6 : Pk < b ? HI < b ? QT < b ? x3 < b ? 1 : 6 : mO < b ? 1 : 6 : Py < b ? O3 < b ? 1 : 6 : ep < b ? 1 : 6 : mo < b ? xc < b ? ox < b ? 1 : 2 : fo < b ? 1 : 2 : $u < b ? Hu < b ? 1 : 3 : Co < b ? 1 : 2 : Vr(PLr, b + 1 | 0) - 1 | 0; + if (30 < R0 >>> 0) + var X = q(n); + else + switch (R0) { + case 0: + var X = 62; + break; + case 1: + var X = 63; + break; + case 2: + if (G0(n, 1), jc(j(n)) === 0) { + for (; ; ) + if (G0(n, 1), jc(j(n)) !== 0) { + var X = q(n); + break; + } + } else + var X = q(n); + break; + case 3: + var X = 0; + break; + case 4: + G0(n, 0); + var s0 = xi(j(n)) !== 0 ? 1 : 0, X = s0 && q(n); + break; + case 5: + var X = 6; + break; + case 6: + var X = 61; + break; + case 7: + if (G0(n, 63), Bl(j(n)) === 0) { + var hr = j(n), Ar = s7 < hr ? L7 < hr ? -1 : 0 : -1; + if (Ar === 0 && Ul(j(n)) === 0 && Bl(j(n)) === 0) + var or = j(n), W0 = Yt < or ? Zc < or ? -1 : 0 : -1, X = W0 === 0 && gr0(j(n)) === 0 ? 31 : q(n); + else + var X = q(n); + } else + var X = q(n); + break; + case 8: + var X = 56; + break; + case 9: + var X = 38; + break; + case 10: + var X = 39; + break; + case 11: + G0(n, 53); + var X = qr0(j(n)) === 0 ? 4 : q(n); + break; + case 12: + var X = 59; + break; + case 13: + var X = 43; + break; + case 14: + G0(n, 60); + var Lr = ql(j(n)); + if (3 < Lr >>> 0) + var X = q(n); + else + switch (Lr) { + case 0: + for (; ; ) { + var Tr = ql(j(n)); + if (3 < Tr >>> 0) + var X = q(n); + else + switch (Tr) { + case 0: + continue; + case 1: + var X = d(n); + break; + case 2: + var X = o0(n); + break; + default: + var X = _0(n); + } + break; + } + break; + case 1: + var X = d(n); + break; + case 2: + var X = o0(n); + break; + default: + var X = _0(n); + } + break; + case 15: + G0(n, 41); + var Hr = D1(j(n)), X = Hr === 0 ? cL(j(n)) === 0 ? 40 : q(n) : Hr === 1 ? E(n) : q(n); + break; + case 16: + G0(n, 63); + var Or = d9(j(n)); + if (Or === 0) { + G0(n, 2); + var fr = i9(j(n)); + if (2 < fr >>> 0) + var X = q(n); + else + switch (fr) { + case 0: + for (; ; ) { + var Rr = i9(j(n)); + if (2 < Rr >>> 0) + var X = q(n); + else + switch (Rr) { + case 0: + continue; + case 1: + var X = E0(n); + break; + default: + var X = U0(n); + } + break; + } + break; + case 1: + var X = E0(n); + break; + default: + var X = U0(n); + } + } else + var X = Or === 1 ? 5 : q(n); + break; + case 17: + G0(n, 30); + var Wr = lL(j(n)); + if (8 < Wr >>> 0) + var X = q(n); + else + switch (Wr) { + case 0: + var X = e(n); + break; + case 1: + var X = t0(n); + break; + case 2: + var X = c0(n); + break; + case 3: + var X = e0(n); + break; + case 4: + var X = m0(n); + break; + case 5: + var X = T(n); + break; + case 6: + var X = K(n); + break; + case 7: + var X = A(n); + break; + default: + var X = k0(n); + } + break; + case 18: + G0(n, 30); + var Jr = o9(j(n)); + if (5 < Jr >>> 0) + var X = q(n); + else + switch (Jr) { + case 0: + var X = e(n); + break; + case 1: + var X = t0(n); + break; + case 2: + var X = _0(n); + break; + case 3: + var X = T(n); + break; + case 4: + var X = w0(n); + break; + default: + var X = k0(n); + } + break; + case 19: + var X = 44; + break; + case 20: + var X = 42; + break; + case 21: + var X = 49; + break; + case 22: + G0(n, 51); + var ar = j(n), _r = 61 < ar ? 62 < ar ? -1 : 0 : -1, X = _r === 0 ? 57 : q(n); + break; + case 23: + var X = 50; + break; + case 24: + G0(n, 46); + var X = cL(j(n)) === 0 ? 45 : q(n); + break; + case 25: + var X = 32; + break; + case 26: + if (G0(n, 63), Ls(j(n)) === 0) { + var Ir = L1(j(n)); + if (Ir === 0) + var X = Nn(j(n)) === 0 && Nn(j(n)) === 0 && Nn(j(n)) === 0 ? 61 : q(n); + else if (Ir === 1 && Nn(j(n)) === 0) + for (; ; ) { + var fe = A1(j(n)); + if (fe !== 0) { + var X = fe === 1 ? 61 : q(n); + break; + } + } + else + var X = q(n); + } else + var X = q(n); + break; + case 27: + var X = 33; + break; + case 28: + G0(n, 34); + var v0 = j(n), P = ts < v0 ? X2 < v0 ? -1 : 0 : -1, X = P === 0 ? 36 : q(n); + break; + case 29: + G0(n, 55); + var L = j(n), Q = X2 < L ? br < L ? -1 : 0 : -1, X = Q === 0 ? 37 : q(n); + break; + default: + var X = 35; + } + if (63 < X >>> 0) + return ke(SCr); + var i0 = X; + if (32 <= i0) + switch (i0) { + case 34: + return [0, t, 0]; + case 35: + return [0, t, 1]; + case 36: + return [0, t, 2]; + case 37: + return [0, t, 3]; + case 38: + return [0, t, 4]; + case 39: + return [0, t, 5]; + case 40: + return [0, t, 12]; + case 41: + return [0, t, 10]; + case 42: + return [0, t, 8]; + case 43: + return [0, t, 9]; + case 45: + return [0, t, 83]; + case 49: + return [0, t, 98]; + case 50: + return [0, t, 99]; + case 53: + return [0, t, Yt]; + case 55: + return [0, t, 89]; + case 56: + return [0, t, 91]; + case 57: + return [0, t, 11]; + case 59: + return [0, t, s7]; + case 60: + return [0, t, L7]; + case 61: + var l0 = n[6]; + Hr0(n); + var S0 = Hl(t, l0, n[3]); + tL(n, l0); + var T0 = Ll(n), rr = Wr0(t, T0), L0 = rr[2], B = rr[1], Z = Ee(L0, OCr); + if (0 <= Z) { + if (!(0 < Z)) + return [0, B, Av]; + if (!n0(L0, MCr)) + return [0, B, 29]; + if (!n0(L0, BCr)) + return [0, B, A2]; + if (!n0(L0, qCr)) + return [0, B, 42]; + if (!n0(L0, UCr)) + return [0, B, Sv]; + if (!n0(L0, HCr)) + return [0, B, tl]; + if (!n0(L0, XCr)) + return [0, B, 31]; + if (!n0(L0, YCr)) + return [0, B, 46]; + if (!n0(L0, VCr)) + return [0, B, uc]; + } else { + if (!n0(L0, ICr)) + return [0, B, t1]; + if (!n0(L0, ACr)) + return [0, B, z2]; + if (!n0(L0, NCr)) + return [0, B, GCr]; + if (!n0(L0, CCr)) + return [0, B, jCr]; + if (!n0(L0, PCr)) + return [0, B, f1]; + if (!n0(L0, DCr)) + return [0, B, 41]; + if (!n0(L0, LCr)) + return [0, B, 30]; + if (!n0(L0, RCr)) + return [0, B, 53]; + } + return [0, B, [4, S0, L0, uL(T0)]]; + case 62: + var p0 = t[4] ? Gu(t, nt(t, n), 6) : t; + return [0, p0, Pn]; + case 63: + return [0, t, [6, Se(n)]]; + case 32: + case 47: + return [0, t, 6]; + case 33: + case 48: + return [0, t, 7]; + case 44: + case 54: + return [0, t, 86]; + case 46: + case 52: + return [0, t, 85]; + default: + return [0, t, 82]; + } + switch (i0) { + case 0: + return [2, d7(t, n)]; + case 1: + return [2, t]; + case 2: + var b0 = ju(t, n), O0 = $n(zn), M0 = R1(t, O0, n), er = M0[1]; + return [1, er, Si(er, b0, M0[2], O0, 1)]; + case 3: + var yr = Se(n); + if (t[5]) { + var vr = t[4] ? Yr0(t, nt(t, n), yr) : t, $0 = $m(1, vr), Er = Jm(n); + return qn(jl(n, Er - 1 | 0, 1), gCr) && n0(jl(n, Er - 2 | 0, 1), FCr) ? [0, $0, 86] : [2, $0]; + } + var Mr = ju(t, n), Br = $n(zn); + hn(Br, yr); + var qr = R1(t, Br, n), jr = qr[1]; + return [1, jr, Si(jr, Mr, qr[2], Br, 1)]; + case 4: + if (t[4]) + return [2, $m(0, t)]; + $v(n), gn(n); + var $r = Tr0(j(n)) !== 0 ? 1 : 0, ne = $r && q(n); + return ne === 0 ? [0, t, Yt] : ke(TCr); + case 5: + var Qr = ju(t, n), be = $n(zn), ae = e2(t, be, n), pe = ae[1]; + return [1, pe, Si(pe, Qr, ae[2], be, 0)]; + case 6: + var oe = Se(n), ce = ju(t, n), ge = $n(zn), q0 = $n(zn); + hn(q0, oe); + var Fr = $r0(t, oe, ge, q0, 0, n), _ = Fr[1], k = [0, _[1], ce, Fr[2]], I = Fr[3], U = Mt(q0); + return [0, _, [2, [0, k, Mt(ge), U, I]]]; + case 7: + return Rt(t, n, function(D, u0) { + function X0(F0) { + if (c9(j(F0)) === 0) { + if (Gc(j(F0)) === 0) + for (; ; ) { + var Sr = n9(j(F0)); + if (2 < Sr >>> 0) + return q(F0); + switch (Sr) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (Gc(j(F0)) === 0) + for (; ; ) { + var mr = n9(j(F0)); + if (2 < mr >>> 0) + return q(F0); + switch (mr) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(F0); + } + default: + return 0; + } + } + return q(F0); + } + return q(F0); + } + gn(u0); + var J0 = P1(j(u0)); + if (J0 === 0) + for (; ; ) { + var ir = N1(j(u0)); + if (ir !== 0) { + var Q0 = ir === 1 ? X0(u0) : q(u0); + break; + } + } + else + var Q0 = J0 === 1 ? X0(u0) : q(u0); + return Q0 === 0 ? [0, D, Hi(0, Se(u0))] : ke(ECr); + }); + case 8: + return [0, t, Hi(0, Se(n))]; + case 9: + return Rt(t, n, function(D, u0) { + function X0(F0) { + if (c9(j(F0)) === 0) { + if (Gc(j(F0)) === 0) + for (; ; ) { + G0(F0, 0); + var Sr = e9(j(F0)); + if (Sr !== 0) { + if (Sr === 1) + r: + for (; ; ) { + if (Gc(j(F0)) === 0) + for (; ; ) { + G0(F0, 0); + var mr = e9(j(F0)); + if (mr !== 0) { + if (mr === 1) + continue r; + return q(F0); + } + } + return q(F0); + } + return q(F0); + } + } + return q(F0); + } + return q(F0); + } + gn(u0); + var J0 = P1(j(u0)); + if (J0 === 0) + for (; ; ) { + var ir = N1(j(u0)); + if (ir !== 0) { + var Q0 = ir === 1 ? X0(u0) : q(u0); + break; + } + } + else + var Q0 = J0 === 1 ? X0(u0) : q(u0); + return Q0 === 0 ? [0, D, qc(0, Se(u0))] : ke(wCr); + }); + case 10: + return [0, t, qc(0, Se(n))]; + case 11: + return Rt(t, n, function(D, u0) { + function X0(F0) { + if (b9(j(F0)) === 0) { + if (zu(j(F0)) === 0) + for (; ; ) { + var Sr = a9(j(F0)); + if (2 < Sr >>> 0) + return q(F0); + switch (Sr) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (zu(j(F0)) === 0) + for (; ; ) { + var mr = a9(j(F0)); + if (2 < mr >>> 0) + return q(F0); + switch (mr) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(F0); + } + default: + return 0; + } + } + return q(F0); + } + return q(F0); + } + gn(u0); + var J0 = P1(j(u0)); + if (J0 === 0) + for (; ; ) { + var ir = N1(j(u0)); + if (ir !== 0) { + var Q0 = ir === 1 ? X0(u0) : q(u0); + break; + } + } + else + var Q0 = J0 === 1 ? X0(u0) : q(u0); + return Q0 === 0 ? [0, D, Hi(1, Se(u0))] : ke(kCr); + }); + case 12: + return [0, t, Hi(1, Se(n))]; + case 13: + return Rt(t, n, function(D, u0) { + function X0(F0) { + if (b9(j(F0)) === 0) { + if (zu(j(F0)) === 0) + for (; ; ) { + G0(F0, 0); + var Sr = x9(j(F0)); + if (Sr !== 0) { + if (Sr === 1) + r: + for (; ; ) { + if (zu(j(F0)) === 0) + for (; ; ) { + G0(F0, 0); + var mr = x9(j(F0)); + if (mr !== 0) { + if (mr === 1) + continue r; + return q(F0); + } + } + return q(F0); + } + return q(F0); + } + } + return q(F0); + } + return q(F0); + } + gn(u0); + var J0 = P1(j(u0)); + if (J0 === 0) + for (; ; ) { + var ir = N1(j(u0)); + if (ir !== 0) { + var Q0 = ir === 1 ? X0(u0) : q(u0); + break; + } + } + else + var Q0 = J0 === 1 ? X0(u0) : q(u0); + return Q0 === 0 ? [0, D, qc(3, Se(u0))] : ke(dCr); + }); + case 14: + return [0, t, qc(3, Se(n))]; + case 15: + return Rt(t, n, function(D, u0) { + function X0(F0) { + if (zu(j(F0)) === 0) { + for (; ; ) + if (G0(F0, 0), zu(j(F0)) !== 0) + return q(F0); + } + return q(F0); + } + gn(u0); + var J0 = P1(j(u0)); + if (J0 === 0) + for (; ; ) { + var ir = N1(j(u0)); + if (ir !== 0) { + var Q0 = ir === 1 ? X0(u0) : q(u0); + break; + } + } + else + var Q0 = J0 === 1 ? X0(u0) : q(u0); + return Q0 === 0 ? [0, D, qc(1, Se(u0))] : ke(hCr); + }); + case 16: + return [0, t, qc(1, Se(n))]; + case 17: + return Rt(t, n, function(D, u0) { + function X0(F0) { + if (Zm(j(F0)) === 0) { + if (Nn(j(F0)) === 0) + for (; ; ) { + var Sr = t9(j(F0)); + if (2 < Sr >>> 0) + return q(F0); + switch (Sr) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (Nn(j(F0)) === 0) + for (; ; ) { + var mr = t9(j(F0)); + if (2 < mr >>> 0) + return q(F0); + switch (mr) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(F0); + } + default: + return 0; + } + } + return q(F0); + } + return q(F0); + } + gn(u0); + var J0 = P1(j(u0)); + if (J0 === 0) + for (; ; ) { + var ir = N1(j(u0)); + if (ir !== 0) { + var Q0 = ir === 1 ? X0(u0) : q(u0); + break; + } + } + else + var Q0 = J0 === 1 ? X0(u0) : q(u0); + return Q0 === 0 ? [0, D, Hi(2, Se(u0))] : ke(yCr); + }); + case 19: + return Rt(t, n, function(D, u0) { + function X0(F0) { + if (Zm(j(F0)) === 0) { + if (Nn(j(F0)) === 0) + for (; ; ) { + G0(F0, 0); + var Sr = _9(j(F0)); + if (Sr !== 0) { + if (Sr === 1) + r: + for (; ; ) { + if (Nn(j(F0)) === 0) + for (; ; ) { + G0(F0, 0); + var mr = _9(j(F0)); + if (mr !== 0) { + if (mr === 1) + continue r; + return q(F0); + } + } + return q(F0); + } + return q(F0); + } + } + return q(F0); + } + return q(F0); + } + gn(u0); + var J0 = P1(j(u0)); + if (J0 === 0) + for (; ; ) { + var ir = N1(j(u0)); + if (ir !== 0) { + var Q0 = ir === 1 ? X0(u0) : q(u0); + break; + } + } + else + var Q0 = J0 === 1 ? X0(u0) : q(u0); + return Q0 === 0 ? [0, D, qc(4, Se(u0))] : ke(_Cr); + }); + case 21: + return Rt(t, n, function(D, u0) { + function X0(h0) { + for (; ; ) { + var Kr = wi(j(h0)); + if (2 < Kr >>> 0) + return q(h0); + switch (Kr) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (pn(j(h0)) === 0) + for (; ; ) { + var re = wi(j(h0)); + if (2 < re >>> 0) + return q(h0); + switch (re) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(h0); + } + default: + return 0; + } + } + } + function J0(h0) { + for (; ; ) { + var Kr = r2(j(h0)); + if (Kr !== 0) { + var re = Kr !== 1 ? 1 : 0; + return re && q(h0); + } + } + } + function ir(h0) { + var Kr = E9(j(h0)); + if (2 < Kr >>> 0) + return q(h0); + switch (Kr) { + case 0: + var re = C1(j(h0)); + return re === 0 ? J0(h0) : re === 1 ? X0(h0) : q(h0); + case 1: + return J0(h0); + default: + return X0(h0); + } + } + function Q0(h0) { + if (pn(j(h0)) === 0) + for (; ; ) { + var Kr = f7(j(h0)); + if (2 < Kr >>> 0) + return q(h0); + switch (Kr) { + case 0: + continue; + case 1: + return ir(h0); + default: + r: + for (; ; ) { + if (pn(j(h0)) === 0) + for (; ; ) { + var re = f7(j(h0)); + if (2 < re >>> 0) + return q(h0); + switch (re) { + case 0: + continue; + case 1: + return ir(h0); + default: + continue r; + } + } + return q(h0); + } + } + } + return q(h0); + } + function F0(h0) { + var Kr = p9(j(h0)); + if (Kr === 0) + for (; ; ) { + var re = f7(j(h0)); + if (2 < re >>> 0) + return q(h0); + switch (re) { + case 0: + continue; + case 1: + return ir(h0); + default: + r: + for (; ; ) { + if (pn(j(h0)) === 0) + for (; ; ) { + var xe = f7(j(h0)); + if (2 < xe >>> 0) + return q(h0); + switch (xe) { + case 0: + continue; + case 1: + return ir(h0); + default: + continue r; + } + } + return q(h0); + } + } + } + return Kr === 1 ? ir(h0) : q(h0); + } + function Sr(h0) { + var Kr = r9(j(h0)); + return Kr === 0 ? F0(h0) : Kr === 1 ? ir(h0) : q(h0); + } + function mr(h0) { + for (; ; ) { + var Kr = l9(j(h0)); + if (2 < Kr >>> 0) + return q(h0); + switch (Kr) { + case 0: + return F0(h0); + case 1: + continue; + default: + return ir(h0); + } + } + } + gn(u0); + var Cr = f9(j(u0)); + if (3 < Cr >>> 0) + var sr = q(u0); + else + switch (Cr) { + case 0: + for (; ; ) { + var Pr = ql(j(u0)); + if (3 < Pr >>> 0) + var sr = q(u0); + else + switch (Pr) { + case 0: + continue; + case 1: + var sr = Q0(u0); + break; + case 2: + var sr = Sr(u0); + break; + default: + var sr = mr(u0); + } + break; + } + break; + case 1: + var sr = Q0(u0); + break; + case 2: + var sr = Sr(u0); + break; + default: + var sr = mr(u0); + } + if (sr === 0) { + var K0 = Se(u0), Ur = Gu(D, nt(D, u0), 23); + return [0, Ur, Hi(2, K0)]; + } + return ke(mCr); + }); + case 22: + var Y = Se(n), y0 = Gu(t, nt(t, n), 23); + return [0, y0, Hi(2, Y)]; + case 23: + return Rt(t, n, function(D, u0) { + function X0(K0) { + for (; ; ) { + G0(K0, 0); + var Ur = Ds(j(K0)); + if (Ur !== 0) { + if (Ur === 1) + r: + for (; ; ) { + if (pn(j(K0)) === 0) + for (; ; ) { + G0(K0, 0); + var h0 = Ds(j(K0)); + if (h0 !== 0) { + if (h0 === 1) + continue r; + return q(K0); + } + } + return q(K0); + } + return q(K0); + } + } + } + function J0(K0) { + for (; ; ) + if (G0(K0, 0), pn(j(K0)) !== 0) + return q(K0); + } + function ir(K0) { + var Ur = E9(j(K0)); + if (2 < Ur >>> 0) + return q(K0); + switch (Ur) { + case 0: + var h0 = C1(j(K0)); + return h0 === 0 ? J0(K0) : h0 === 1 ? X0(K0) : q(K0); + case 1: + return J0(K0); + default: + return X0(K0); + } + } + function Q0(K0) { + if (pn(j(K0)) === 0) + for (; ; ) { + var Ur = f7(j(K0)); + if (2 < Ur >>> 0) + return q(K0); + switch (Ur) { + case 0: + continue; + case 1: + return ir(K0); + default: + r: + for (; ; ) { + if (pn(j(K0)) === 0) + for (; ; ) { + var h0 = f7(j(K0)); + if (2 < h0 >>> 0) + return q(K0); + switch (h0) { + case 0: + continue; + case 1: + return ir(K0); + default: + continue r; + } + } + return q(K0); + } + } + } + return q(K0); + } + function F0(K0) { + var Ur = p9(j(K0)); + if (Ur === 0) + for (; ; ) { + var h0 = f7(j(K0)); + if (2 < h0 >>> 0) + return q(K0); + switch (h0) { + case 0: + continue; + case 1: + return ir(K0); + default: + r: + for (; ; ) { + if (pn(j(K0)) === 0) + for (; ; ) { + var Kr = f7(j(K0)); + if (2 < Kr >>> 0) + return q(K0); + switch (Kr) { + case 0: + continue; + case 1: + return ir(K0); + default: + continue r; + } + } + return q(K0); + } + } + } + return Ur === 1 ? ir(K0) : q(K0); + } + function Sr(K0) { + var Ur = r9(j(K0)); + return Ur === 0 ? F0(K0) : Ur === 1 ? ir(K0) : q(K0); + } + function mr(K0) { + for (; ; ) { + var Ur = l9(j(K0)); + if (2 < Ur >>> 0) + return q(K0); + switch (Ur) { + case 0: + return F0(K0); + case 1: + continue; + default: + return ir(K0); + } + } + } + gn(u0); + var Cr = f9(j(u0)); + if (3 < Cr >>> 0) + var sr = q(u0); + else + switch (Cr) { + case 0: + for (; ; ) { + var Pr = ql(j(u0)); + if (3 < Pr >>> 0) + var sr = q(u0); + else + switch (Pr) { + case 0: + continue; + case 1: + var sr = Q0(u0); + break; + case 2: + var sr = Sr(u0); + break; + default: + var sr = mr(u0); + } + break; + } + break; + case 1: + var sr = Q0(u0); + break; + case 2: + var sr = Sr(u0); + break; + default: + var sr = mr(u0); + } + return sr === 0 ? [0, D, qc(4, Se(u0))] : ke(pCr); + }); + case 25: + return Rt(t, n, function(D, u0) { + function X0(K0) { + for (; ; ) { + var Ur = wi(j(K0)); + if (2 < Ur >>> 0) + return q(K0); + switch (Ur) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (pn(j(K0)) === 0) + for (; ; ) { + var h0 = wi(j(K0)); + if (2 < h0 >>> 0) + return q(K0); + switch (h0) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(K0); + } + default: + return 0; + } + } + } + function J0(K0) { + return pn(j(K0)) === 0 ? X0(K0) : q(K0); + } + function ir(K0) { + var Ur = r2(j(K0)); + if (Ur === 0) + return X0(K0); + var h0 = Ur !== 1 ? 1 : 0; + return h0 && q(K0); + } + function Q0(K0) { + for (; ; ) { + var Ur = D1(j(K0)); + if (Ur === 0) + return ir(K0); + if (Ur !== 1) + return q(K0); + } + } + function F0(K0) { + for (; ; ) { + var Ur = Bc(j(K0)); + if (2 < Ur >>> 0) + return q(K0); + switch (Ur) { + case 0: + return ir(K0); + case 1: + continue; + default: + r: + for (; ; ) { + if (pn(j(K0)) === 0) + for (; ; ) { + var h0 = Bc(j(K0)); + if (2 < h0 >>> 0) + return q(K0); + switch (h0) { + case 0: + return ir(K0); + case 1: + continue; + default: + continue r; + } + } + return q(K0); + } + } + } + } + gn(u0); + var Sr = f9(j(u0)); + if (3 < Sr >>> 0) + var mr = q(u0); + else + switch (Sr) { + case 0: + for (; ; ) { + var Cr = ql(j(u0)); + if (3 < Cr >>> 0) + var mr = q(u0); + else + switch (Cr) { + case 0: + continue; + case 1: + var mr = J0(u0); + break; + case 2: + var mr = Q0(u0); + break; + default: + var mr = F0(u0); + } + break; + } + break; + case 1: + var mr = J0(u0); + break; + case 2: + var mr = Q0(u0); + break; + default: + var mr = F0(u0); + } + if (mr === 0) { + var sr = Se(u0), Pr = Gu(D, nt(D, u0), 22); + return [0, Pr, Hi(2, sr)]; + } + return ke(bCr); + }); + case 26: + return Rt(t, n, function(D, u0) { + function X0(mr) { + for (; ; ) { + var Cr = r2(j(mr)); + if (Cr !== 0) { + var sr = Cr !== 1 ? 1 : 0; + return sr && q(mr); + } + } + } + function J0(mr) { + for (; ; ) { + var Cr = wi(j(mr)); + if (2 < Cr >>> 0) + return q(mr); + switch (Cr) { + case 0: + continue; + case 1: + r: + for (; ; ) { + if (pn(j(mr)) === 0) + for (; ; ) { + var sr = wi(j(mr)); + if (2 < sr >>> 0) + return q(mr); + switch (sr) { + case 0: + continue; + case 1: + continue r; + default: + return 0; + } + } + return q(mr); + } + default: + return 0; + } + } + } + gn(u0); + var ir = j(u0), Q0 = 44 < ir ? 57 < ir ? -1 : Vr(XDr, ir + mv | 0) - 1 | 0 : -1; + if (2 < Q0 >>> 0) + var F0 = q(u0); + else + switch (Q0) { + case 0: + for (; ; ) { + var Sr = jr0(j(u0)); + if (2 < Sr >>> 0) + var F0 = q(u0); + else + switch (Sr) { + case 0: + continue; + case 1: + var F0 = X0(u0); + break; + default: + var F0 = J0(u0); + } + break; + } + break; + case 1: + var F0 = X0(u0); + break; + default: + var F0 = J0(u0); + } + return F0 === 0 ? [0, D, Hi(2, Se(u0))] : ke(lCr); + }); + case 27: + var P0 = Se(n), I0 = Gu(t, nt(t, n), 22); + return [0, I0, Hi(2, P0)]; + case 29: + return Rt(t, n, function(D, u0) { + function X0(re) { + for (; ; ) { + G0(re, 0); + var xe = Ds(j(re)); + if (xe !== 0) { + if (xe === 1) + r: + for (; ; ) { + if (pn(j(re)) === 0) + for (; ; ) { + G0(re, 0); + var Re = Ds(j(re)); + if (Re !== 0) { + if (Re === 1) + continue r; + return q(re); + } + } + return q(re); + } + return q(re); + } + } + } + function J0(re) { + return G0(re, 0), pn(j(re)) === 0 ? X0(re) : q(re); + } + gn(u0); + var ir = f9(j(u0)); + if (3 < ir >>> 0) + var Q0 = q(u0); + else + switch (ir) { + case 0: + for (; ; ) { + var F0 = jr0(j(u0)); + if (2 < F0 >>> 0) + var Q0 = q(u0); + else + switch (F0) { + case 0: + continue; + case 1: + for (; ; ) { + G0(u0, 0); + var Sr = D1(j(u0)), mr = Sr !== 0 ? 1 : 0; + if (mr) { + if (Sr === 1) + continue; + var Q0 = q(u0); + } else + var Q0 = mr; + break; + } + break; + default: + for (; ; ) { + G0(u0, 0); + var Cr = Bc(j(u0)); + if (2 < Cr >>> 0) + var Q0 = q(u0); + else + switch (Cr) { + case 0: + var Q0 = 0; + break; + case 1: + continue; + default: + r: + for (; ; ) { + if (pn(j(u0)) === 0) + for (; ; ) { + G0(u0, 0); + var sr = Bc(j(u0)); + if (2 < sr >>> 0) + var Pr = q(u0); + else + switch (sr) { + case 0: + var Pr = 0; + break; + case 1: + continue; + default: + continue r; + } + break; + } + else + var Pr = q(u0); + var Q0 = Pr; + break; + } + } + break; + } + } + break; + } + break; + case 1: + var Q0 = pn(j(u0)) === 0 ? X0(u0) : q(u0); + break; + case 2: + for (; ; ) { + G0(u0, 0); + var K0 = D1(j(u0)); + if (K0 === 0) + var Q0 = J0(u0); + else { + if (K0 === 1) + continue; + var Q0 = q(u0); + } + break; + } + break; + default: + for (; ; ) { + G0(u0, 0); + var Ur = Bc(j(u0)); + if (2 < Ur >>> 0) + var Q0 = q(u0); + else + switch (Ur) { + case 0: + var Q0 = J0(u0); + break; + case 1: + continue; + default: + r: + for (; ; ) { + if (pn(j(u0)) === 0) + for (; ; ) { + G0(u0, 0); + var h0 = Bc(j(u0)); + if (2 < h0 >>> 0) + var Kr = q(u0); + else + switch (h0) { + case 0: + var Kr = J0(u0); + break; + case 1: + continue; + default: + continue r; + } + break; + } + else + var Kr = q(u0); + var Q0 = Kr; + break; + } + } + break; + } + } + return Q0 === 0 ? [0, D, qc(4, Se(u0))] : ke(vCr); + }); + case 31: + return [0, t, 66]; + case 18: + case 28: + return [0, t, Hi(2, Se(n))]; + default: + return [0, t, qc(4, Se(n))]; + } + } + function Xl(t) { + return function(n) { + for (var e = 0, i = n; ; ) { + var x = o(t, i, i[2]); + switch (x[0]) { + case 0: + var c = x[2], s = x[1], p = Xr0(s, c), y = e === 0 ? 0 : ye(e), T = s[6]; + if (T === 0) + return [0, [0, s[1], s[2], s[3], s[4], s[5], s[6], p], [0, c, p, 0, y]]; + var E = [0, c, p, ye(T), y]; + return [0, [0, s[1], s[2], s[3], s[4], s[5], _r0, p], E]; + case 1: + var d = x[2], w = x[1], e = [0, d, e], i = [0, w[1], w[2], w[3], w[4], w[5], w[6], d[1]]; + continue; + default: + var i = x[1]; + continue; + } + } + }; + } + var Gee = Xl(Dee), Mee = Xl(Lee), Bee = Xl(Ree), qee = Xl(jee), Uee = Xl(Pee), Mu = eL([0, bz]); + function Yl(t, n) { + return [0, 0, 0, n, yr0(t)]; + } + function g9(t) { + var n = t[4]; + switch (t[3]) { + case 0: + var c0 = u(Uee, n); + break; + case 1: + var c0 = u(qee, n); + break; + case 2: + var c0 = u(Mee, n); + break; + case 3: + var e = h7(n, n[2]), i = $n(zn), x = $n(zn), c = n[2]; + gn(c); + var s = j(c), p = ts < s ? Hu < s ? 1 : $u < s ? 2 : 1 : Vr(fRr, s + 1 | 0) - 1 | 0; + if (5 < p >>> 0) + var y = q(c); + else + switch (p) { + case 0: + var y = 1; + break; + case 1: + var y = 4; + break; + case 2: + var y = 0; + break; + case 3: + G0(c, 0); + var T = xi(j(c)) !== 0 ? 1 : 0, y = T && q(c); + break; + case 4: + var y = 2; + break; + default: + var y = 3; + } + if (4 < y >>> 0) + var E = ke(sCr); + else + switch (y) { + case 0: + var d = Se(c); + hn(x, d), hn(i, d); + var w = pL(d7(n, c), 2, i, x, c), G = h7(w, c), A = Mt(i), S = Mt(x), E = [0, w, [8, [0, w[1], e, G], A, S]]; + break; + case 1: + var E = [0, n, Pn]; + break; + case 2: + var E = [0, n, 98]; + break; + case 3: + var E = [0, n, 0]; + break; + default: + $v(c); + var M = pL(n, 2, i, x, c), K = h7(M, c), V = Mt(i), f0 = Mt(x), E = [0, M, [8, [0, M[1], e, K], V, f0]]; + } + var m0 = E[2], k0 = E[1], g0 = Xr0(k0, m0), e0 = k0[6]; + if (e0 === 0) + var l = [0, k0, [0, m0, g0, 0, 0]]; + else + var x0 = [0, m0, g0, ye(e0), 0], l = [0, [0, k0[1], k0[2], k0[3], k0[4], k0[5], 0, k0[7]], x0]; + var c0 = l; + break; + case 4: + var c0 = u(Bee, n); + break; + default: + var c0 = u(Gee, n); + } + var t0 = c0[1], o0 = yr0(t0), w0 = [0, o0, c0[2]]; + return t[4] = t0, t[1] ? t[2] = [0, w0] : t[1] = [0, w0], w0; + } + function Qr0(t) { + var n = t[1]; + return n ? n[1][2] : g9(t)[2]; + } + function Hee(t, n, e, i) { + var x = t && t[1], c = n && n[1]; + try { + var s = 0, p = pr0(i), y = s, T = p; + } catch (A) { + if (A = Et(A), A !== I1) + throw A; + var E = [0, [0, [0, e, ez[2], ez[3]], 86], 0], y = E, T = pr0(Xjr); + } + var d = c ? c[1] : Bv, w = Cee(e, T, d[4]), G = [0, Yl(w, 0)]; + return [0, [0, y], [0, 0], Mu[1], [0, 0], d[5], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, [0, Vjr], [0, w], G, [0, x], d, e, [0, 0], [0, Yjr]]; + } + function n2(t) { + return bl(t[23][1]); + } + function fu(t) { + return t[27][4]; + } + function ue(t, n) { + var e = n[2]; + t[1][1] = [0, [0, n[1], e], t[1][1]]; + var i = t[22]; + return i && o(i[1], t, e); + } + function Vl(t, n) { + return t[30][1] = n, 0; + } + function Rs(t, n) { + if (t === 0) + return Qr0(n[25][1]); + if (t === 1) { + var e = n[25][1]; + e[1] || g9(e); + var i = e[2]; + return i ? i[1][2] : g9(e)[2]; + } + throw [0, Sn, qjr]; + } + function _s(t, n) { + return t === n[5] ? n : [0, n[1], n[2], n[3], n[4], t, n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function mL(t, n) { + return t === n[17] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], t, n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function re0(t, n) { + return t === n[18] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], t, n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function ee0(t, n) { + return t === n[19] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], n[18], t, n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function t2(t, n) { + return t === n[21] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], n[18], n[19], n[20], t, n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function F9(t, n) { + return t === n[14] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], t, n[15], n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function zl(t, n) { + return t === n[8] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], t, n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function Kl(t, n) { + return t === n[12] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], t, n[13], n[14], n[15], n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function u2(t, n) { + return t === n[15] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], t, n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function ne0(t, n) { + return t === n[6] ? n : [0, n[1], n[2], n[3], n[4], n[5], t, n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function te0(t, n) { + return t === n[7] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], t, n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function _L(t, n) { + return t === n[13] ? n : [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], t, n[14], n[15], n[16], n[17], n[18], n[19], n[20], n[21], n[22], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function T9(t, n) { + return [0, n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15], n[16], n[17], n[18], n[19], n[20], n[21], [0, t], n[23], n[24], n[25], n[26], n[27], n[28], n[29], n[30]]; + } + function yL(t) { + function n(e) { + return ue(t, e); + } + return function(e) { + return Du(n, e); + }; + } + function i2(t) { + var n = t[4][1], e = n && [0, n[1][2]]; + return e; + } + function ue0(t) { + var n = t[4][1], e = n && [0, n[1][1]]; + return e; + } + function ie0(t) { + return [0, t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9], t[10], t[11], t[12], t[13], t[14], t[15], t[16], t[17], t[18], t[19], t[20], t[21], 0, t[23], t[24], t[25], t[26], t[27], t[28], t[29], t[30]]; + } + function fe0(t, n, e, i) { + return [0, t[1], t[2], Mu[1], t[4], t[5], 0, 0, 0, 0, 0, 1, t[12], t[13], t[14], t[15], t[16], e, n, t[19], i, t[21], t[22], t[23], t[24], t[25], t[26], t[27], t[28], t[29], t[30]]; + } + function xe0(t) { + var n = Ee(t, xjr), e = 0; + if (0 <= n) { + if (0 < n) { + var i = Ee(t, gjr); + 0 <= i ? 0 < i && n0(t, Djr) && n0(t, Ljr) && n0(t, Rjr) && n0(t, jjr) && n0(t, Gjr) && n0(t, Mjr) && n0(t, Bjr) && (e = 1) : n0(t, Fjr) && n0(t, Tjr) && n0(t, Ojr) && n0(t, Ijr) && n0(t, Ajr) && n0(t, Njr) && n0(t, Cjr) && n0(t, Pjr) && (e = 1); + } + } else { + var x = Ee(t, ojr); + 0 <= x ? 0 < x && n0(t, _jr) && n0(t, yjr) && n0(t, hjr) && n0(t, djr) && n0(t, kjr) && n0(t, wjr) && n0(t, Ejr) && n0(t, Sjr) && (e = 1) : n0(t, ajr) && n0(t, cjr) && n0(t, sjr) && n0(t, vjr) && n0(t, ljr) && n0(t, bjr) && n0(t, pjr) && n0(t, mjr) && (e = 1); + } + return e ? 0 : 1; + } + function O9(t) { + return n0(t, fjr) ? 0 : 1; + } + function hL(t) { + if (typeof t == "number") { + if (t === 48) + return 1; + } else if (t[0] === 4 && O9(t[3])) + return 1; + return 0; + } + function f2(t) { + return n0(t, ZRr) && n0(t, QRr) && n0(t, rjr) && n0(t, ejr) && n0(t, njr) && n0(t, tjr) && n0(t, ujr) && n0(t, ijr) ? 0 : 1; + } + function dL(t) { + if (typeof t == "number") + switch (t) { + case 42: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + return 1; + } + else if (t[0] === 4 && f2(t[3])) + return 1; + return 0; + } + function js(t) { + return n0(t, JRr) && n0(t, $Rr) ? 0 : 1; + } + function oe0(t) { + return typeof t != "number" && t[0] === 4 && js(t[3]) ? 1 : 0; + } + function kL(t) { + var n = xe0(t); + if (n) + var e = n; + else { + var i = O9(t); + if (i) + var e = i; + else { + if (n0(t, zRr) && n0(t, KRr) && n0(t, WRr)) + return 0; + var e = 1; + } + } + return e; + } + function ae0(t) { + var n = Ee(t, TRr), e = 0; + return 0 <= n ? 0 < n && n0(t, RRr) && n0(t, jRr) && n0(t, GRr) && n0(t, MRr) && n0(t, BRr) && n0(t, qRr) && n0(t, URr) && n0(t, HRr) && (e = 1) : n0(t, ORr) && n0(t, IRr) && n0(t, ARr) && n0(t, NRr) && n0(t, CRr) && n0(t, PRr) && n0(t, DRr) && n0(t, LRr) && (e = 1), e ? 0 : 1; + } + function Yn(t, n) { + return Rs(t, n)[1]; + } + function Wl(t, n) { + return Rs(t, n)[2]; + } + function A0(t) { + return Yn(0, t); + } + function Pe(t) { + return Wl(0, t); + } + function j1(t) { + var n = i2(t), e = n ? n[1] : ke(FRr); + return [0, e[1], e[3], e[3]]; + } + function wL(t) { + return Rs(0, t)[3]; + } + function pr(t) { + var n = Rs(0, t)[4]; + return n && u(ml(function(e) { + return ps(t[30][1], e[1][2]) <= 0 ? 1 : 0; + }), n); + } + function ce0(t) { + for (var n = Rs(0, t)[4]; ; ) { + if (n) { + var e = n[2], i = ps(n[1][1][2], t[30][1]) < 0 ? 1 : 0; + if (i) + return i; + var n = e; + continue; + } + return 0; + } + } + function Jl(t, n) { + var e = 0 < t ? [0, Wl(t - 1 | 0, n)] : i2(n); + if (e) + var i = e[1][2][1], x = i < Wl(t, n)[2][1] ? 1 : 0; + else + var x = e; + return x; + } + function x7(t) { + return Jl(0, t); + } + function se0(t, n) { + var e = Yn(t, n); + if (typeof e == "number") { + var i = e - 2 | 0; + if (Xt < i >>> 0) { + if (!(T7 < (i + 1 | 0) >>> 0)) + return 1; + } else { + var x = i !== 6 ? 1 : 0; + if (!x) + return x; + } + } + return Jl(t, n); + } + function x2(t) { + return se0(0, t); + } + function I9(t, n) { + var e = Yn(t, n); + if (dL(e) || hL(e) || oe0(e)) + return 1; + var i = 0; + if (typeof e == "number") + switch (e) { + case 14: + case 28: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + i = 1; + break; + } + else + e[0] === 4 && (i = 1); + return i ? 1 : 0; + } + function ve0(t, n) { + var e = n2(n); + if (e === 1) { + var i = Yn(t, n); + return typeof i != "number" && i[0] === 4 ? 1 : 0; + } + if (e) + return 0; + var x = Yn(t, n); + if (typeof x == "number") + switch (x) { + case 42: + case 46: + case 47: + return 0; + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 43: + case 44: + case 45: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + break; + default: + return 0; + } + else + switch (x[0]) { + case 4: + if (ae0(x[3])) + return 0; + break; + case 9: + case 10: + case 11: + break; + default: + return 0; + } + return 1; + } + function G1(t) { + return I9(0, t); + } + function Gs(t) { + var n = A0(t) === 15 ? 1 : 0; + if (n) + var e = n; + else { + var i = A0(t) === 64 ? 1 : 0; + if (i) { + var x = Yn(1, t) === 15 ? 1 : 0; + if (x) + var c = Wl(1, t)[2][1], e = Pe(t)[3][1] === c ? 1 : 0; + else + var e = x; + } else + var e = i; + } + return e; + } + function $l(t) { + var n = A0(t); + if (typeof n == "number") { + var e = 0; + if ((n === 13 || n === 40) && (e = 1), e) + return 1; + } + return 0; + } + function je(t, n) { + return ue(t, [0, Pe(t), n]); + } + function le0(t, n) { + if (hL(n)) + return 2; + if (dL(n)) + return 55; + var e = aL(0, n); + return t ? [11, e, t[1]] : [10, e]; + } + function St(t, n) { + var e = wL(n); + return u(yL(n), e), je(n, le0(t, A0(n))); + } + function A9(t) { + function n(e) { + return ue(t, [0, e[1], 76]); + } + return function(e) { + return Du(n, e); + }; + } + function be0(t, n) { + var e = t[6] ? ur(et(SRr), n, n, n) : gRr; + return St([0, e], t); + } + function gi(t, n) { + var e = t[5]; + return e && je(t, n); + } + function V7(t, n) { + var e = t[5]; + return e && ue(t, [0, n[1], n[2]]); + } + function M1(t, n) { + return ue(t, [0, n, [18, t[5]]]); + } + function ie(t) { + var n = t[26][1]; + if (n) { + var e = n2(t), i = A0(t), x = [0, Pe(t), i, e]; + u(n[1], x); + } + var c = t[25][1], s = c[1], p = s ? s[1][1] : g9(c)[1]; + t[24][1] = p; + var y = wL(t); + u(yL(t), y); + var T = t[2][1], E = Lc(Rs(0, t)[4], T); + t[2][1] = E; + var d = [0, Rs(0, t)]; + t[4][1] = d; + var w = t[25][1]; + return w[2] ? (w[1] = w[2], w[2] = 0, 0) : (Qr0(w), w[1] = 0, 0); + } + function xu(t, n) { + var e = o(iL, A0(t), n); + return e && ie(t), e; + } + function Ku(t, n) { + t[23][1] = [0, n, t[23][1]]; + var e = n2(t), i = Yl(t[24][1], e); + return t[25][1] = i, 0; + } + function k7(t) { + var n = t[23][1], e = n ? n[2] : ke(ERr); + t[23][1] = e; + var i = n2(t), x = Yl(t[24][1], i); + return t[25][1] = x, 0; + } + function we(t) { + var n = Pe(t); + if (A0(t) === 9 && Jl(1, t)) { + var e = pr(t), i = Rs(1, t)[4], x = on(e, u(ml(function(s) { + return s[1][2][1] <= n[3][1] ? 1 : 0; + }), i)); + return Vl(t, [0, n[3][1] + 1 | 0, 0]), x; + } + var c = pr(t); + return Vl(t, n[3]), c; + } + function Ms(t) { + var n = t[4][1]; + if (n) { + var e = n[1][2], i = pr(t), x = u(ml(function(p) { + return p[1][2][1] <= e[3][1] ? 1 : 0; + }), i); + Vl(t, [0, e[3][1] + 1 | 0, 0]); + var c = x; + } else + var c = n; + return c; + } + function B1(t, n) { + return St([0, aL(hRr, n)], t); + } + function Y0(t, n) { + return 1 - o(iL, A0(t), n) && B1(t, n), ie(t); + } + function pe0(t, n) { + var e = xu(t, n); + return 1 - e && B1(t, n), e; + } + function Zl(t, n) { + var e = A0(t), i = 0; + return typeof e != "number" && e[0] === 4 && qn(e[3], n) && (i = 1), i || St([0, u(et(yRr), n)], t), ie(t); + } + var Bs = [wt, zjr, M7(0)]; + function Xee(t) { + var n = t[26][1]; + if (n) { + var e = mz(0), i = [0, function(s) { + return aN(s, e); + }]; + t[26][1] = i; + var x = [0, [0, n[1], e]]; + } else + var x = n; + return [0, t[1][1], t[2][1], t[4][1], t[23][1], t[24][1], t[30][1], x]; + } + function me0(t, n, e) { + if (e) { + var i = e[1], x = i[1]; + if (n[26][1] = [0, x], t) + for (var c = i[2][2]; ; ) { + if (c) { + var s = c[2]; + u(x, c[1]); + var c = s; + continue; + } + return 0; + } + var p = t; + } else + var p = e; + return p; + } + function Yee(t, n) { + me0(0, t, n[7]), t[1][1] = n[1], t[2][1] = n[2], t[4][1] = n[3], t[23][1] = n[4], t[24][1] = n[5], t[30][1] = n[6]; + var e = n2(t), i = Yl(t[24][1], e); + return t[25][1] = i, 0; + } + function Vee(t, n, e) { + return me0(1, t, n[7]), [0, e]; + } + function EL(t, n) { + var e = Xee(t); + try { + var i = Vee(t, e, u(n, t)); + return i; + } catch (x) { + if (x = Et(x), x === Bs) + return Yee(t, e); + throw x; + } + } + function _e0(t, n, e) { + var i = EL(t, e); + return i ? i[1] : n; + } + function Ql(t, n) { + var e = ye(n); + if (e) { + var i = e[1], x = u(t, i); + return i === x ? n : ye([0, x, e[2]]); + } + return n; + } + var ye0 = Rp(Zjr, function(t) { + var n = PN(t, Wjr), e = NN(t, $jr), i = e[22], x = e[26], c = e[35], s = e[77], p = e[iV], y = e[gO], T = e[cp], E = e[BO], d = e[jh], w = e[ZF], G = e[6], A = e[7], S = e[10], M = e[17], K = e[21], V = e[27], f0 = e[33], m0 = e[36], k0 = e[46], g0 = e[51], e0 = e[89], x0 = e[92], l = e[97], c0 = e[99], t0 = e[ti], o0 = e[Pn], w0 = e[Sv], _0 = e[zw], E0 = e[Jg], U0 = e[dH], b = e[DX], R0 = e[eH], X = e[FH], s0 = e[kh], hr = e[AF], Ar = e[Wg], or = e[A6], W0 = e[Cw], Lr = e[iA], Tr = e[rk], Hr = e[hT], Or = e[lO], fr = e[i6], Rr = e[ST], Wr = e[v8], Jr = e[$2], ar = LN(t, 0, 0, nz, KD, 1)[1]; + function _r(q0, Fr, _) { + var k = _[2], I = k[2], U = k[1], Y = _[1]; + if (I) { + var y0 = function(D) { + return [0, Y, [0, U, [0, D]]]; + }, P0 = I[1]; + return ee(u(q0[1][1 + y], q0), P0, _, y0); + } + function I0(D) { + return [0, Y, [0, D, I]]; + } + return ee(o(q0[1][1 + G], q0, Fr), U, _, I0); + } + function Ir(q0, Fr, _) { + var k = _[2], I = _[1], U = I[3], Y = I[2]; + if (U) + var y0 = Ql(u(q0[1][1 + x], q0), U), P0 = Y; + else + var y0 = 0, P0 = o(q0[1][1 + x], q0, Y); + var I0 = o(q0[1][1 + c], q0, k); + return Y === P0 && U === y0 && k === I0 ? _ : [0, [0, I[1], P0, y0], I0]; + } + function fe(q0, Fr) { + var _ = Fr[2], k = _[1], I = Fr[1]; + function U(y0) { + return [0, I, [0, k, y0]]; + } + var Y = _[2]; + return ee(u(q0[1][1 + c], q0), Y, Fr, U); + } + function v0(q0, Fr, _) { + function k(U) { + return [0, _[1], _[2], U]; + } + var I = _[3]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function P(q0, Fr) { + function _(I) { + return [0, Fr[1], I]; + } + var k = Fr[2]; + return ee(u(q0[1][1 + c], q0), k, Fr, _); + } + function L(q0, Fr, _) { + function k(U) { + return [0, _[1], _[2], U]; + } + var I = _[3]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function Q(q0, Fr, _) { + var k = _[2], I = _[1], U = Ql(u(q0[1][1 + y], q0), I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, U, Y]; + } + function i0(q0, Fr) { + var _ = Fr[2], k = _[1], I = Fr[1]; + function U(y0) { + return [0, I, [0, k, y0]]; + } + var Y = _[2]; + return ee(u(q0[1][1 + c], q0), Y, Fr, U); + } + function l0(q0, Fr, _) { + function k(U) { + return [0, _[1], _[2], _[3], U]; + } + var I = _[4]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function S0(q0, Fr, _) { + function k(U) { + return [0, _[1], U]; + } + var I = _[2]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function T0(q0, Fr, _) { + var k = _[3], I = _[2], U = o(q0[1][1 + l], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], U, Y]; + } + function rr(q0, Fr, _) { + var k = _[4], I = _[3], U = _[2], Y = _[1], y0 = o(q0[1][1 + c], q0, k); + if (I) { + var P0 = ze(u(q0[1][1 + w], q0), I); + return I === P0 && k === y0 ? _ : [0, _[1], _[2], P0, y0]; + } + if (U) { + var I0 = ze(u(q0[1][1 + d], q0), U); + return U === I0 && k === y0 ? _ : [0, _[1], I0, _[3], y0]; + } + var D = o(q0[1][1 + y], q0, Y); + return Y === D && k === y0 ? _ : [0, D, _[2], _[3], y0]; + } + function L0(q0, Fr, _) { + var k = _[4], I = _[3], U = o(q0[1][1 + y], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], _[2], U, Y]; + } + function B(q0, Fr, _) { + function k(U) { + return [0, _[1], _[2], _[3], U]; + } + var I = _[4]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function Z(q0, Fr, _) { + function k(U) { + return [0, _[1], _[2], _[3], U]; + } + var I = _[4]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function p0(q0, Fr, _) { + var k = _[2], I = _[1], U = I[3], Y = I[2]; + if (U) + var y0 = Ql(u(q0[1][1 + x], q0), U), P0 = Y; + else + var y0 = 0, P0 = o(q0[1][1 + x], q0, Y); + var I0 = o(q0[1][1 + c], q0, k); + return Y === P0 && U === y0 && k === I0 ? _ : [0, [0, I[1], P0, y0], I0]; + } + function b0(q0, Fr, _) { + var k = _[3], I = _[1], U = _u(u(q0[1][1 + s], q0), I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, U, _[2], Y]; + } + function O0(q0, Fr, _) { + function k(U) { + return [0, _[1], U]; + } + var I = _[2]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function M0(q0, Fr) { + if (Fr[0] === 0) { + var _ = function(P0) { + return [0, P0]; + }, k = Fr[1]; + return ee(u(q0[1][1 + p], q0), k, Fr, _); + } + var I = Fr[1], U = I[2], Y = U[2], y0 = o(q0[1][1 + p], q0, Y); + return Y === y0 ? Fr : [1, [0, I[1], [0, U[1], y0]]]; + } + function er(q0, Fr, _) { + var k = _[4], I = _[3], U = o(q0[1][1 + x], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], _[2], U, Y]; + } + function yr(q0, Fr) { + var _ = Fr[2], k = Fr[1]; + function I(Y) { + return [0, k, [0, _[1], _[2], _[3], Y]]; + } + var U = _[4]; + return ee(u(q0[1][1 + c], q0), U, [0, k, _], I); + } + function vr(q0, Fr, _) { + var k = _[9], I = _[3], U = o(q0[1][1 + s0], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], _[2], U, _[4], _[5], _[6], _[7], _[8], Y, _[10]]; + } + function $0(q0, Fr, _) { + var k = _[4], I = _[3], U = o(q0[1][1 + y], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], _[2], U, Y]; + } + function Er(q0, Fr) { + var _ = Fr[2], k = _[1], I = Fr[1]; + function U(y0) { + return [0, I, [0, k, y0]]; + } + var Y = _[2]; + return ee(u(q0[1][1 + c], q0), Y, Fr, U); + } + function Mr(q0, Fr) { + var _ = Fr[2], k = _[2], I = _[1], U = Fr[1]; + if (k === 0) { + var Y = function(I0) { + return [0, U, [0, I0, k]]; + }; + return ee(u(q0[1][1 + p], q0), I, Fr, Y); + } + function y0(I0) { + return [0, U, [0, I, I0]]; + } + var P0 = u(q0[1][1 + i], q0); + return ee(function(I0) { + return ze(P0, I0); + }, k, Fr, y0); + } + function Br(q0, Fr) { + var _ = Fr[2], k = _[2], I = Fr[1]; + function U(P0) { + return [0, I, [0, P0, k]]; + } + var Y = _[1], y0 = u(q0[1][1 + T], q0); + return ee(function(P0) { + return Ql(y0, P0); + }, Y, Fr, U); + } + function qr(q0, Fr, _) { + var k = _[2]; + if (k === 0) { + var I = function(P0) { + return [0, P0, _[2], _[3]]; + }, U = _[1]; + return ee(u(q0[1][1 + y], q0), U, _, I); + } + function Y(P0) { + return [0, _[1], P0, _[3]]; + } + var y0 = u(q0[1][1 + i], q0); + return ee(function(P0) { + return ze(y0, P0); + }, k, _, Y); + } + function jr(q0, Fr) { + var _ = Fr[2], k = _[1], I = Fr[1]; + function U(y0) { + return [0, I, [0, k, y0]]; + } + var Y = _[2]; + return ee(u(q0[1][1 + c], q0), Y, Fr, U); + } + function $r(q0, Fr, _) { + var k = _[7], I = _[2], U = o(q0[1][1 + E], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], U, _[3], _[4], _[5], _[6], Y]; + } + function ne(q0, Fr) { + var _ = Fr[2], k = _[1], I = Fr[1]; + function U(y0) { + return [0, I, [0, k, y0]]; + } + var Y = _[2]; + return ee(u(q0[1][1 + c], q0), Y, Fr, U); + } + function Qr(q0, Fr) { + var _ = Fr[2], k = _[1], I = Fr[1]; + function U(y0) { + return [0, I, [0, k, y0]]; + } + var Y = _[2]; + return ee(u(q0[1][1 + c], q0), Y, Fr, U); + } + function be(q0, Fr, _) { + var k = _[4], I = _[3], U = o(q0[1][1 + w], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], _[2], U, Y]; + } + function ae(q0, Fr, _) { + function k(U) { + return [0, _[1], U]; + } + var I = _[2]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + function pe(q0, Fr, _) { + var k = _[4], I = _[3], U = o(q0[1][1 + y], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], _[2], U, Y]; + } + function oe(q0, Fr, _) { + var k = _[4], I = _[3], U = o(q0[1][1 + y], q0, I), Y = o(q0[1][1 + c], q0, k); + return I === U && k === Y ? _ : [0, _[1], _[2], U, Y]; + } + function ce(q0, Fr) { + function _(I) { + return [0, Fr[1], I]; + } + var k = Fr[2]; + return ee(u(q0[1][1 + c], q0), k, Fr, _); + } + function ge(q0, Fr, _) { + function k(U) { + return [0, _[1], U]; + } + var I = _[2]; + return ee(u(q0[1][1 + c], q0), I, _, k); + } + return jN(t, [0, m0, function(q0, Fr) { + var _ = Fr[2], k = u(ml(function(U) { + return ps(U[1][2], q0[1 + n]) < 0 ? 1 : 0; + }), _), I = Dc(k); + return Dc(_) === I ? Fr : [0, Fr[1], k, Fr[3]]; + }, Jr, ge, Wr, ce, Rr, oe, fr, pe, Or, ae, Hr, be, w, Qr, d, ne, Tr, $r, E, jr, Lr, qr, W0, Br, T, Mr, or, Er, Ar, $0, hr, vr, X, yr, R0, er, b, M0, U0, O0, E0, b0, _0, p0, w0, Z, o0, B, t0, L0, x0, rr, c0, T0, e0, S0, s, l0, g0, i0, k0, Q, f0, L, V, P, K, v0, M, fe, S, Ir, A, _r]), function(q0, Fr, _) { + var k = jp(Fr, t); + return k[1 + n] = _, u(ar, k), RN(Fr, k, t); + }; + }); + function N9(t) { + var n = i2(t); + if (n) + var e = n[1], i = ce0(t) ? (Vl(t, e[3]), [0, o(ye0[1], 0, e[3])]) : 0, x = i; + else + var x = n; + return [0, 0, function(c, s) { + return x ? o(s, x[1], c) : c; + }]; + } + function rb(t) { + var n = i2(t); + if (n) { + var e = n[1]; + if (ce0(t)) { + Vl(t, e[3]); + var i = Ms(t), x = [0, o(ye0[1], 0, [0, e[3][1] + 1 | 0, 0])], c = i; + } else + var x = 0, c = Ms(t); + } else + var x = 0, c = 0; + return [0, c, function(s, p) { + return x ? o(p, x[1], s) : s; + }]; + } + function $t(t) { + return x7(t) ? rb(t) : N9(t); + } + function ys(t, n) { + var e = $t(t); + function i(x, c) { + return o(Qe(x, Nv, 27), x, c); + } + return o(e[2], n, i); + } + function oi(t, n) { + if (n) + var e = $t(t), i = function(c, s) { + return o(Qe(c, bF, 30), c, s); + }, x = [0, o(e[2], n[1], i)]; + else + var x = n; + return x; + } + function o2(t, n) { + var e = $t(t); + function i(x, c) { + return o(Qe(x, -983660142, 32), x, c); + } + return o(e[2], n, i); + } + function eb(t, n) { + var e = $t(t); + function i(x, c) { + return o(Qe(x, -455772979, 33), x, c); + } + return o(e[2], n, i); + } + function he0(t, n) { + if (n) + var e = $t(t), i = function(c, s) { + return o(Qe(c, kH, 34), c, s); + }, x = [0, o(e[2], n[1], i)]; + else + var x = n; + return x; + } + function Xi(t, n) { + var e = $t(t); + function i(x, c) { + return o(Qe(x, qY, 35), x, c); + } + return o(e[2], n, i); + } + function de0(t, n) { + var e = $t(t); + function i(x, c) { + var s = u(Qe(x, ZU, 37), x); + return Ql(function(p) { + return _u(s, p); + }, c); + } + return o(e[2], n, i); + } + function ke0(t, n) { + var e = $t(t); + function i(x, c) { + return o(Qe(x, -21476009, 38), x, c); + } + return o(e[2], n, i); + } + Rp(Qjr, function(t) { + var n = PN(t, Kjr), e = DN(Jjr), i = e.length - 1, x = tz.length - 1, c = Gv(i + x | 0, 0), s = i - 1 | 0, p = 0; + if (!(s < 0)) + for (var y = p; ; ) { + var T = Fl(t, tu(e, y)[1 + y]); + tu(c, y)[1 + y] = T; + var E = y + 1 | 0; + if (s !== y) { + var y = E; + continue; + } + break; + } + var d = x - 1 | 0, w = 0; + if (!(d < 0)) + for (var G = w; ; ) { + var A = G + i | 0, S = PN(t, tu(tz, G)[1 + G]); + tu(c, A)[1 + A] = S; + var M = G + 1 | 0; + if (d !== G) { + var G = M; + continue; + } + break; + } + var K = c[4], V = c[5], f0 = c[y6], m0 = c[cp], k0 = c[nd], g0 = c[gv], e0 = c[38], x0 = c[mT], l = c[Vy], c0 = LN(t, 0, 0, nz, KD, 1)[1]; + function t0(b, R0, X) { + return o(b[1][1 + f0], b, X[2]), X; + } + function o0(b, R0) { + return o(b[1][1 + m0], b, R0), R0; + } + function w0(b, R0) { + var X = R0[1], s0 = b[1 + g0]; + if (s0) { + var hr = ps(s0[1][1][2], X[2]) < 0 ? 1 : 0, Ar = hr && (b[1 + g0] = [0, R0], 0); + return Ar; + } + var or = 0 <= ps(X[2], b[1 + n][3]) ? 1 : 0, W0 = or && (b[1 + g0] = [0, R0], 0); + return W0; + } + function _0(b, R0) { + var X = R0[1], s0 = b[1 + k0]; + if (s0) { + var hr = ps(X[2], s0[1][1][2]) < 0 ? 1 : 0, Ar = hr && (b[1 + k0] = [0, R0], 0); + return Ar; + } + var or = ps(X[2], b[1 + n][2]) < 0 ? 1 : 0, W0 = or && (b[1 + k0] = [0, R0], 0); + return W0; + } + function E0(b, R0) { + return R0 && o(b[1][1 + m0], b, R0[1]); + } + function U0(b, R0) { + var X = R0[1]; + Du(u(b[1][1 + V], b), X); + var s0 = R0[2]; + return Du(u(b[1][1 + K], b), s0); + } + return jN(t, [0, x0, function(b) { + return [0, b[1 + k0], b[1 + g0]]; + }, m0, U0, f0, E0, V, _0, K, w0, e0, o0, l, t0]), function(b, R0, X) { + var s0 = jp(R0, t); + return s0[1 + n] = X, u(c0, s0), s0[1 + k0] = 0, s0[1 + g0] = 0, RN(R0, s0, t); + }; + }); + function we0(t) { + return t === 3 ? 2 : (4 <= t, 1); + } + function SL(t, n, e) { + if (e) { + var i = e[1], x = 0; + if (i === 8232 || Hu === i) + x = 1; + else if (i === 10) + var s = 6; + else if (i === 13) + var s = 5; + else if (fw <= i) + var s = 3; + else if (Hh <= i) + var s = 2; + else + var c = jt <= i ? 1 : 0, s = c && 1; + if (x) + var s = 7; + var p = s; + } else + var p = 4; + return [0, p, t]; + } + var zee = [wt, uGr, M7(0)]; + function Ee0(t, n, e, i) { + try { + var x = tu(t, n)[1 + n]; + return x; + } catch (c) { + throw c = Et(c), c[1] === ZA ? [0, zee, e, ur(et(nGr), i, n, t.length - 1)] : c; + } + } + function C9(t, n) { + if (n[1] === 0 && n[2] === 0) + return 0; + var e = Ee0(t, n[1] - 1 | 0, n, rGr); + return Ee0(e, n[2], n, eGr); + } + var Kee = Ee; + function Wee(t, n) { + return o(f(t), NWr, n); + } + u(eL([0, Kee])[33], Wee); + function Se0(t) { + var n = A0(t), e = 0; + if (typeof n == "number") + switch (n) { + case 15: + var i = CWr; + break; + case 16: + var i = PWr; + break; + case 17: + var i = DWr; + break; + case 18: + var i = LWr; + break; + case 19: + var i = RWr; + break; + case 20: + var i = jWr; + break; + case 21: + var i = GWr; + break; + case 22: + var i = MWr; + break; + case 23: + var i = BWr; + break; + case 24: + var i = qWr; + break; + case 25: + var i = UWr; + break; + case 26: + var i = HWr; + break; + case 27: + var i = XWr; + break; + case 28: + var i = YWr; + break; + case 29: + var i = VWr; + break; + case 30: + var i = zWr; + break; + case 31: + var i = KWr; + break; + case 32: + var i = WWr; + break; + case 33: + var i = JWr; + break; + case 34: + var i = $Wr; + break; + case 35: + var i = ZWr; + break; + case 36: + var i = QWr; + break; + case 37: + var i = rJr; + break; + case 38: + var i = eJr; + break; + case 39: + var i = nJr; + break; + case 40: + var i = tJr; + break; + case 41: + var i = uJr; + break; + case 42: + var i = iJr; + break; + case 43: + var i = fJr; + break; + case 44: + var i = xJr; + break; + case 45: + var i = oJr; + break; + case 46: + var i = aJr; + break; + case 47: + var i = cJr; + break; + case 48: + var i = sJr; + break; + case 49: + var i = vJr; + break; + case 50: + var i = lJr; + break; + case 51: + var i = bJr; + break; + case 52: + var i = pJr; + break; + case 53: + var i = mJr; + break; + case 54: + var i = _Jr; + break; + case 55: + var i = yJr; + break; + case 56: + var i = hJr; + break; + case 57: + var i = dJr; + break; + case 58: + var i = kJr; + break; + case 59: + var i = wJr; + break; + case 60: + var i = EJr; + break; + case 61: + var i = SJr; + break; + case 62: + var i = gJr; + break; + case 63: + var i = FJr; + break; + case 64: + var i = TJr; + break; + case 65: + var i = OJr; + break; + case 114: + var i = IJr; + break; + case 115: + var i = AJr; + break; + case 116: + var i = NJr; + break; + case 117: + var i = CJr; + break; + case 118: + var i = PJr; + break; + case 119: + var i = DJr; + break; + case 120: + var i = LJr; + break; + case 121: + var i = RJr; + break; + default: + e = 1; + } + else + switch (n[0]) { + case 4: + var i = n[2]; + break; + case 9: + var i = n[1] ? jJr : GJr; + break; + default: + e = 1; + } + if (e) { + St(MJr, t); + var i = BJr; + } + return ie(t), i; + } + function z7(t) { + var n = Pe(t), e = pr(t), i = Se0(t); + return [0, n, [0, i, lr([0, e], [0, we(t)], 0)]]; + } + function ge0(t) { + var n = Pe(t), e = pr(t); + Y0(t, 14); + var i = Pe(t), x = Se0(t), c = lr([0, e], [0, we(t)], 0), s = yt(n, i), p = i[2], y = n[3], T = y[1] === p[1] ? 1 : 0, E = T && (y[2] === p[2] ? 1 : 0); + return 1 - E && ue(t, [0, s, R7]), [0, s, [0, x, c]]; + } + function q1(t) { + var n = t[2], e = n[3] === 0 ? 1 : 0; + if (e) + for (var i = n[2]; ; ) { + if (i) { + var x = i[1][2], c = 0, s = i[2]; + if (x[1][2][0] === 2 && !x[2]) { + var p = 1; + c = 1; + } + if (!c) + var p = 0; + if (p) { + var i = s; + continue; + } + return p; + } + return 1; + } + return e; + } + function nb(t) { + for (var n = t; ; ) { + var e = n[2]; + if (e[0] === 27) { + var i = e[1][2]; + if (i[2][0] === 23) + return 1; + var n = i; + continue; + } + return 0; + } + } + function cr(t, n, e) { + var i = t ? t[1] : Pe(e), x = u(n, e), c = i2(e), s = c ? yt(i, c[1]) : i; + return [0, s, x]; + } + function gL(t, n, e) { + var i = cr(t, n, e), x = i[2]; + return [0, [0, i[1], x[1]], x[2]]; + } + function Jee(t) { + function n(B) { + var Z = Pe(B), p0 = A0(B); + if (typeof p0 == "number") { + if (s7 === p0) { + var b0 = pr(B); + return ie(B), [0, [0, Z, [0, 0, lr([0, b0], 0, 0)]]]; + } + if (L7 === p0) { + var O0 = pr(B); + return ie(B), [0, [0, Z, [0, 1, lr([0, O0], 0, 0)]]]; + } + } + return 0; + } + var e = function B(Z) { + return B.fun(Z); + }, i = function B(Z) { + return B.fun(Z); + }, x = function B(Z) { + return B.fun(Z); + }, c = function B(Z, p0, b0) { + return B.fun(Z, p0, b0); + }, s = function B(Z) { + return B.fun(Z); + }, p = function B(Z, p0, b0) { + return B.fun(Z, p0, b0); + }, y = function B(Z) { + return B.fun(Z); + }, T = function B(Z, p0) { + return B.fun(Z, p0); + }, E = function B(Z) { + return B.fun(Z); + }, d = function B(Z) { + return B.fun(Z); + }, w = function B(Z, p0, b0) { + return B.fun(Z, p0, b0); + }, G = function B(Z, p0, b0, O0) { + return B.fun(Z, p0, b0, O0); + }, A = function B(Z) { + return B.fun(Z); + }, S = function B(Z, p0) { + return B.fun(Z, p0); + }, M = function B(Z) { + return B.fun(Z); + }, K = function B(Z) { + return B.fun(Z); + }, V = function B(Z) { + return B.fun(Z); + }, f0 = function B(Z) { + return B.fun(Z); + }, m0 = function B(Z) { + return B.fun(Z); + }, k0 = function B(Z) { + return B.fun(Z); + }, g0 = function B(Z, p0) { + return B.fun(Z, p0); + }, e0 = function B(Z) { + return B.fun(Z); + }, x0 = function B(Z) { + return B.fun(Z); + }, l = function B(Z) { + return B.fun(Z); + }, c0 = function B(Z) { + return B.fun(Z); + }, t0 = function B(Z) { + return B.fun(Z); + }, o0 = function B(Z) { + return B.fun(Z); + }, w0 = function B(Z) { + return B.fun(Z); + }, _0 = function B(Z, p0, b0, O0) { + return B.fun(Z, p0, b0, O0); + }, E0 = function B(Z, p0, b0, O0) { + return B.fun(Z, p0, b0, O0); + }, U0 = function B(Z) { + return B.fun(Z); + }, b = function B(Z) { + return B.fun(Z); + }, R0 = function B(Z) { + return B.fun(Z); + }, X = function B(Z) { + return B.fun(Z); + }, s0 = function B(Z) { + return B.fun(Z); + }, hr = function B(Z) { + return B.fun(Z); + }, Ar = function B(Z, p0) { + return B.fun(Z, p0); + }, or = function B(Z, p0) { + return B.fun(Z, p0); + }, W0 = function B(Z) { + return B.fun(Z); + }, Lr = function B(Z, p0, b0) { + return B.fun(Z, p0, b0); + }; + N(e, function(B) { + return u(x, B); + }), N(i, function(B) { + return 1 - fu(B) && je(B, 12), cr(0, function(Z) { + return Y0(Z, 86), u(e, Z); + }, B); + }), N(x, function(B) { + var Z = A0(B) === 89 ? 1 : 0; + if (Z) { + var p0 = pr(B); + ie(B); + var b0 = p0; + } else + var b0 = Z; + return ur(c, B, [0, b0], u(s, B)); + }), N(c, function(B, Z, p0) { + var b0 = Z && Z[1]; + if (A0(B) === 89) { + var O0 = [0, p0, 0], M0 = function(er) { + for (var yr = O0; ; ) { + var vr = A0(er); + if (typeof vr == "number" && vr === 89) { + Y0(er, 89); + var yr = [0, u(s, er), yr]; + continue; + } + var $0 = ye(yr); + if ($0) { + var Er = $0[2]; + if (Er) { + var Mr = lr([0, b0], 0, 0); + return [19, [0, [0, $0[1], Er[1], Er[2]], Mr]]; + } + } + throw [0, Sn, y$r]; + } + }; + return cr([0, p0[1]], M0, B); + } + return p0; + }), N(s, function(B) { + var Z = A0(B) === 91 ? 1 : 0; + if (Z) { + var p0 = pr(B); + ie(B); + var b0 = p0; + } else + var b0 = Z; + return ur(p, B, [0, b0], u(y, B)); + }), N(p, function(B, Z, p0) { + var b0 = Z && Z[1]; + if (A0(B) === 91) { + var O0 = [0, p0, 0], M0 = function(er) { + for (var yr = O0; ; ) { + var vr = A0(er); + if (typeof vr == "number" && vr === 91) { + Y0(er, 91); + var yr = [0, u(y, er), yr]; + continue; + } + var $0 = ye(yr); + if ($0) { + var Er = $0[2]; + if (Er) { + var Mr = lr([0, b0], 0, 0); + return [20, [0, [0, $0[1], Er[1], Er[2]], Mr]]; + } + } + throw [0, Sn, _$r]; + } + }; + return cr([0, p0[1]], M0, B); + } + return p0; + }), N(y, function(B) { + return o(T, B, u(E, B)); + }), N(T, function(B, Z) { + var p0 = A0(B); + if (typeof p0 == "number" && p0 === 11 && !B[15]) { + var b0 = o(g0, B, Z); + return R(_0, B, b0[1], 0, [0, b0[1], [0, 0, [0, b0, 0], 0, 0]]); + } + return Z; + }), N(E, function(B) { + var Z = A0(B); + return typeof Z == "number" && Z === 85 ? cr(0, function(p0) { + var b0 = pr(p0); + Y0(p0, 85); + var O0 = lr([0, b0], 0, 0); + return [11, [0, u(E, p0), O0]]; + }, B) : u(d, B); + }), N(d, function(B) { + return ur(w, 0, B, u(V, B)); + }), N(w, function(B, Z, p0) { + var b0 = B && B[1]; + if (x7(Z)) + return p0; + var O0 = A0(Z); + if (typeof O0 == "number") { + if (O0 === 6) + return ie(Z), R(G, b0, 0, Z, p0); + if (O0 === 10) { + var M0 = Yn(1, Z); + return typeof M0 == "number" && M0 === 6 ? (je(Z, p$r), Y0(Z, 10), Y0(Z, 6), R(G, b0, 0, Z, p0)) : (je(Z, m$r), p0); + } + if (O0 === 83) + return ie(Z), A0(Z) !== 6 && je(Z, 30), Y0(Z, 6), R(G, 1, 1, Z, p0); + } + return p0; + }), N(G, function(B, Z, p0, b0) { + function O0(M0) { + if (!Z && xu(M0, 7)) + return [15, [0, b0, lr(0, [0, we(M0)], 0)]]; + var er = u(e, M0); + Y0(M0, 7); + var yr = [0, b0, er, lr(0, [0, we(M0)], 0)]; + return B ? [18, [0, yr, Z]] : [17, yr]; + } + return ur(w, [0, B], p0, cr([0, b0[1]], O0, p0)); + }), N(A, function(B) { + return o(S, B, o(t[13], 0, B)); + }), N(S, function(B, Z) { + for (var p0 = [0, Z[1], [0, Z]]; ; ) { + var b0 = p0[2]; + if (A0(B) === 10 && I9(1, B)) { + var O0 = function(vr) { + return function($0) { + return Y0($0, 10), [0, vr, z7($0)]; + }; + }(b0), M0 = cr([0, p0[1]], O0, B), er = M0[1], p0 = [0, er, [1, [0, er, M0[2]]]]; + continue; + } + return b0; + } + }), N(M, function(B) { + var Z = A0(B); + if (typeof Z == "number") { + if (Z === 4) { + ie(B); + var p0 = u(M, B); + return Y0(B, 5), p0; + } + } else if (Z[0] === 4) + return [0, u(A, B)]; + return je(B, 51), 0; + }), N(K, function(B) { + return cr(0, function(Z) { + var p0 = pr(Z); + Y0(Z, 46); + var b0 = u(M, Z); + if (b0) { + var O0 = lr([0, p0], 0, 0); + return [21, [0, b0[1], O0]]; + } + return b$r; + }, B); + }), N(V, function(B) { + var Z = Pe(B), p0 = A0(B), b0 = 0; + if (typeof p0 == "number") + switch (p0) { + case 4: + return u(o0, B); + case 6: + return u(k0, B); + case 46: + return u(K, B); + case 53: + return cr(0, function(ge) { + var q0 = pr(ge); + Y0(ge, 53); + var Fr = u(U0, ge), _ = lr([0, q0], 0, 0); + return [14, [0, Fr[2], Fr[1], _]]; + }, B); + case 98: + return u(w0, B); + case 106: + var O0 = pr(B); + return Y0(B, Yt), [0, Z, [10, lr([0, O0], [0, we(B)], 0)]]; + case 42: + b0 = 1; + break; + case 0: + case 2: + var M0 = R(E0, 0, 1, 1, B); + return [0, M0[1], [13, M0[2]]]; + case 30: + case 31: + var er = pr(B); + return Y0(B, p0), [0, Z, [26, [0, p0 === 31 ? 1 : 0, lr([0, er], [0, we(B)], 0)]]]; + } + else + switch (p0[0]) { + case 2: + var yr = p0[1], vr = yr[4], $0 = yr[3], Er = yr[2], Mr = yr[1]; + vr && gi(B, 45); + var Br = pr(B); + return Y0(B, [2, [0, Mr, Er, $0, vr]]), [0, Mr, [23, [0, Er, $0, lr([0, Br], [0, we(B)], 0)]]]; + case 10: + var qr = p0[3], jr = p0[2], $r = p0[1], ne = pr(B); + Y0(B, [10, $r, jr, qr]); + var Qr = we(B); + return $r === 1 && gi(B, 45), [0, Z, [24, [0, jr, qr, lr([0, ne], [0, Qr], 0)]]]; + case 11: + var be = p0[3], ae = p0[2], pe = pr(B); + return Y0(B, [11, p0[1], ae, be]), [0, Z, [25, [0, ae, be, lr([0, pe], [0, we(B)], 0)]]]; + case 4: + b0 = 1; + break; + } + if (b0) { + var oe = u(hr, B); + return [0, oe[1], [16, oe[2]]]; + } + var ce = u(m0, B); + return ce ? [0, Z, ce[1]] : (St(v$r, B), [0, Z, l$r]); + }), N(f0, function(B) { + var Z = 0; + if (typeof B == "number") + switch (B) { + case 29: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + Z = 1; + break; + } + else + B[0] === 9 && (Z = 1); + return Z ? 1 : 0; + }), N(m0, function(B) { + var Z = pr(B), p0 = A0(B); + if (typeof p0 == "number") + switch (p0) { + case 29: + return ie(B), [0, [4, lr([0, Z], [0, we(B)], 0)]]; + case 114: + return ie(B), [0, [0, lr([0, Z], [0, we(B)], 0)]]; + case 115: + return ie(B), [0, [1, lr([0, Z], [0, we(B)], 0)]]; + case 116: + return ie(B), [0, [2, lr([0, Z], [0, we(B)], 0)]]; + case 117: + return ie(B), [0, [5, lr([0, Z], [0, we(B)], 0)]]; + case 118: + return ie(B), [0, [6, lr([0, Z], [0, we(B)], 0)]]; + case 119: + return ie(B), [0, [7, lr([0, Z], [0, we(B)], 0)]]; + case 120: + return ie(B), [0, [3, lr([0, Z], [0, we(B)], 0)]]; + case 121: + return ie(B), [0, [9, lr([0, Z], [0, we(B)], 0)]]; + } + else if (p0[0] === 9) + return ie(B), [0, [8, lr([0, Z], [0, we(B)], 0)]]; + return 0; + }), N(k0, function(B) { + return cr(0, function(Z) { + var p0 = pr(Z); + Y0(Z, 6); + for (var b0 = u2(0, Z), O0 = 0; ; ) { + var M0 = A0(b0); + if (typeof M0 == "number") { + var er = 0; + if ((M0 === 7 || Pn === M0) && (er = 1), er) { + var yr = ye(O0); + return Y0(Z, 7), [22, [0, yr, lr([0, p0], [0, we(Z)], 0)]]; + } + } + var vr = [0, u(e, b0), O0]; + A0(b0) !== 7 && Y0(b0, 9); + var O0 = vr; + } + }, B); + }), N(g0, function(B, Z) { + return [0, Z[1], [0, 0, Z, 0]]; + }), N(e0, function(B) { + return cr(0, function(Z) { + Ku(Z, 0); + var p0 = o(t[13], 0, Z); + k7(Z), 1 - fu(Z) && je(Z, 12); + var b0 = xu(Z, 85); + return Y0(Z, 86), [0, [0, p0], u(e, Z), b0]; + }, B); + }); + function Tr(B) { + var Z = Yn(1, B); + return typeof Z == "number" && !(1 < (Z + W2 | 0) >>> 0) ? u(e0, B) : o(g0, B, u(e, B)); + } + N(x0, function(B) { + var Z = 0; + return function(p0) { + for (var b0 = Z, O0 = p0; ; ) { + var M0 = A0(B); + if (typeof M0 == "number") + switch (M0) { + case 5: + case 12: + case 113: + var er = M0 === 12 ? 1 : 0, yr = er && [0, cr(0, function(jr) { + var $r = pr(jr); + Y0(jr, 12); + var ne = lr([0, $r], 0, 0); + return [0, Tr(jr), ne]; + }, B)]; + return [0, b0, ye(O0), yr, 0]; + } + else if (M0[0] === 4 && !n0(M0[3], s$r)) { + var vr = 0; + if ((Yn(1, B) === 86 || Yn(1, B) === 85) && (vr = 1), vr) { + var $0 = b0 !== 0 ? 1 : 0, Er = $0 || (O0 !== 0 ? 1 : 0); + Er && je(B, s7); + var Mr = cr(0, function($r) { + var ne = pr($r); + ie($r), A0($r) === 85 && je($r, L7); + var Qr = lr([0, ne], 0, 0); + return [0, u(i, $r), Qr]; + }, B); + A0(B) !== 5 && Y0(B, 9); + var b0 = [0, Mr]; + continue; + } + } + var Br = [0, Tr(B), O0]; + A0(B) !== 5 && Y0(B, 9); + var O0 = Br; + } + }; + }), N(l, function(B) { + return cr(0, function(Z) { + var p0 = pr(Z); + Y0(Z, 4); + var b0 = o(x0, Z, 0), O0 = pr(Z); + Y0(Z, 5); + var M0 = yu([0, p0], [0, we(Z)], O0, 0); + return [0, b0[1], b0[2], b0[3], M0]; + }, B); + }), N(c0, function(B) { + var Z = pr(B); + Y0(B, 4); + var p0 = u2(0, B), b0 = A0(p0), O0 = 0; + if (typeof b0 == "number") + switch (b0) { + case 5: + var M0 = c$r; + break; + case 42: + O0 = 2; + break; + case 12: + case 113: + var M0 = [0, o(x0, p0, 0)]; + break; + default: + O0 = 1; + } + else + b0[0] === 4 ? O0 = 2 : O0 = 1; + switch (O0) { + case 1: + if (u(f0, b0)) { + var er = Yn(1, p0), yr = 0; + if (typeof er == "number" && !(1 < (er + W2 | 0) >>> 0)) { + var vr = [0, o(x0, p0, 0)]; + yr = 1; + } + if (!yr) + var vr = [1, u(e, p0)]; + var M0 = vr; + } else + var M0 = [1, u(e, p0)]; + break; + case 2: + var M0 = u(t0, p0); + break; + } + if (M0[0] === 0) + var $0 = M0; + else { + var Er = M0[1]; + if (B[15]) + var Mr = M0; + else { + var Br = A0(B), qr = 0; + if (typeof Br == "number") + if (Br === 5) + var jr = Yn(1, B) === 11 ? [0, o(x0, B, [0, o(g0, B, Er), 0])] : [1, Er]; + else if (Br === 9) { + Y0(B, 9); + var jr = [0, o(x0, B, [0, o(g0, B, Er), 0])]; + } else + qr = 1; + else + qr = 1; + if (qr) + var jr = M0; + var Mr = jr; + } + var $0 = Mr; + } + var $r = pr(B); + Y0(B, 5); + var ne = we(B); + if ($0[0] === 0) { + var Qr = $0[1], be = yu([0, Z], [0, ne], $r, 0); + return [0, [0, Qr[1], Qr[2], Qr[3], be]]; + } + return [1, ur(Lr, $0[1], Z, ne)]; + }), N(t0, function(B) { + var Z = Yn(1, B); + return typeof Z == "number" && !(1 < (Z + W2 | 0) >>> 0) ? [0, o(x0, B, 0)] : [1, ur(c, B, 0, ur(p, B, 0, o(T, B, ur(w, 0, B, o(or, B, u(b, B))))))]; + }), N(o0, function(B) { + var Z = Pe(B), p0 = cr(0, c0, B), b0 = p0[2]; + return b0[0] === 0 ? R(_0, B, Z, 0, [0, p0[1], b0[1]]) : b0[1]; + }), N(w0, function(B) { + var Z = Pe(B), p0 = oi(B, u(X, B)); + return R(_0, B, Z, p0, u(l, B)); + }), N(_0, function(B, Z, p0, b0) { + return cr([0, Z], function(O0) { + return Y0(O0, 11), [12, [0, p0, b0, u(e, O0), 0]]; + }, B); + }); + function Hr(B, Z, p0) { + return cr([0, Z], function(b0) { + var O0 = u(l, b0); + return Y0(b0, 86), [0, p0, O0, u(e, b0), 0]; + }, B); + } + function Or(B, Z) { + var p0 = A0(Z); + if (typeof p0 == "number" && !(10 <= p0)) + switch (p0) { + case 1: + if (!B) + return 0; + break; + case 3: + if (B) + return 0; + break; + case 8: + case 9: + return ie(Z); + } + return B1(Z, 9); + } + function fr(B, Z) { + return Z && ue(B, [0, Z[1][1], 7]); + } + function Rr(B, Z) { + return Z && ue(B, [0, Z[1], 9]); + } + N(E0, function(B, Z, p0, b0) { + var O0 = Z && (A0(b0) === 2 ? 1 : 0), M0 = Z && 1 - O0; + return cr(0, function(er) { + var yr = pr(er), vr = O0 && 2; + Y0(er, vr); + var $0 = u2(0, er), Er = a$r; + r: + for (; ; ) { + var Mr = Er[3], Br = Er[2], qr = Er[1]; + if (B && p0) + throw [0, Sn, WJr]; + if (M0 && !p0) + throw [0, Sn, JJr]; + var jr = Pe($0), $r = A0($0); + if (typeof $r == "number") { + var ne = 0; + if (13 <= $r) { + if (Pn === $r) { + var Qr = [0, ye(qr), Br, Mr]; + ne = 1; + } + } else if ($r) + switch ($r - 1 | 0) { + case 0: + if (!O0) { + var Qr = [0, ye(qr), Br, Mr]; + ne = 1; + } + break; + case 2: + if (O0) { + var Qr = [0, ye(qr), Br, Mr]; + ne = 1; + } + break; + case 11: + if (!p0) { + ie($0); + var be = A0($0); + if (typeof be == "number" && !(10 <= be)) + switch (be) { + case 1: + case 3: + case 8: + case 9: + ue($0, [0, jr, 20]), Or(O0, $0); + continue; + } + var ae = wL($0); + u(yL($0), ae), ue($0, [0, jr, 17]), ie($0), Or(O0, $0); + continue; + } + var pe = pr($0); + ie($0); + var oe = A0($0), ce = 0; + if (typeof oe == "number" && !(10 <= oe)) + switch (oe) { + case 1: + case 3: + case 8: + case 9: + Or(O0, $0); + var ge = A0($0), q0 = 0; + if (typeof ge == "number") { + var Fr = ge - 1 | 0; + if (!(2 < Fr >>> 0)) + switch (Fr) { + case 0: + if (M0) { + var Qr = [0, ye(qr), 1, pe]; + ne = 1, ce = 1, q0 = 1; + } + break; + case 1: + break; + default: + ue($0, [0, jr, 19]); + var Qr = [0, ye(qr), Br, Mr]; + ne = 1, ce = 1, q0 = 1; + } + } + if (!q0) { + ue($0, [0, jr, 18]); + continue; + } + break; + } + if (!ce) { + var _ = [1, cr([0, jr], function(W7) { + return function(Ut) { + var bt = lr([0, W7], 0, 0); + return [0, u(e, Ut), bt]; + }; + }(pe), $0)]; + Or(O0, $0); + var Er = [0, [0, _, qr], Br, Mr]; + continue; + } + break; + } + if (ne) { + var k = pr(er), I = on(Qr[3], k), U = O0 ? 3 : 1; + Y0(er, U); + var Y = yu([0, yr], [0, we(er)], I, 0); + return [0, O0, Qr[2], Qr[1], Y]; + } + } + for (var y0 = B, P0 = B, I0 = 0, D = 0, u0 = 0, X0 = 0; ; ) { + var J0 = A0($0), ir = 0; + if (typeof J0 == "number") + switch (J0) { + case 6: + Rr($0, u0); + var Q0 = Yn(1, $0), F0 = 0; + if (typeof Q0 == "number" && Q0 === 6) { + fr($0, I0); + var Cr = [4, cr([0, jr], function(Ut, bt, B0) { + return function(D0) { + var Le = on(bt, pr(D0)); + Y0(D0, 6), Y0(D0, 6); + var He = z7(D0); + Y0(D0, 7), Y0(D0, 7); + var he = A0(D0), me = 0; + if (typeof he == "number") { + var Zn = 0; + if (he !== 4 && he !== 98 && (Zn = 1), !Zn) { + var wn = Hr(D0, Ut, oi(D0, u(X, D0))), ft = 0, xt = [0, wn[1], [12, wn[2]]], jn = 1, ut = 0; + me = 1; + } + } + if (!me) { + var dt = xu(D0, 85), xn = we(D0); + Y0(D0, 86); + var ft = xn, xt = u(e, D0), jn = 0, ut = dt; + } + return [0, He, xt, ut, B0 !== 0 ? 1 : 0, jn, lr([0, Le], [0, ft], 0)]; + }; + }(jr, X0, D), $0)]; + F0 = 1; + } + if (!F0) + var Cr = [2, cr([0, jr], function(W7, Ut, bt) { + return function(B0) { + var D0 = on(W7, pr(B0)); + Y0(B0, 6); + var Le = Yn(1, B0) === 86 ? 1 : 0; + if (Le) { + var He = z7(B0); + Y0(B0, 86); + var he = [0, He]; + } else + var he = Le; + var me = u(e, B0); + Y0(B0, 7); + var Zn = we(B0); + Y0(B0, 86); + var wn = u(e, B0); + return [0, he, me, wn, Ut !== 0 ? 1 : 0, bt, lr([0, D0], [0, Zn], 0)]; + }; + }(X0, D, I0), $0)]; + break; + case 42: + if (y0) { + if (I0 === 0) { + var Sr = [0, Pe($0)], mr = on(X0, pr($0)); + ie($0); + var y0 = 0, P0 = 0, D = Sr, X0 = mr; + continue; + } + throw [0, Sn, ZJr]; + } + ir = 1; + break; + case 103: + case 104: + if (I0 === 0) { + var y0 = 0, P0 = 0, I0 = n($0); + continue; + } + ir = 1; + break; + case 4: + case 98: + Rr($0, u0), fr($0, I0); + var Cr = [3, cr([0, jr], function(W7, Ut) { + return function(bt) { + var B0 = Pe(bt), D0 = Hr(bt, B0, oi(bt, u(X, bt))); + return [0, D0, Ut !== 0 ? 1 : 0, lr([0, W7], 0, 0)]; + }; + }(X0, D), $0)]; + break; + default: + ir = 1; + } + else if (J0[0] === 4 && !n0(J0[3], QJr)) { + if (P0) { + if (I0 === 0) { + var sr = [0, Pe($0)], Pr = on(X0, pr($0)); + ie($0); + var y0 = 0, P0 = 0, u0 = sr, X0 = Pr; + continue; + } + throw [0, Sn, r$r]; + } + ir = 1; + } else + ir = 1; + if (ir) { + var K0 = 0; + if (D) { + var Ur = D[1]; + if (u0) { + var Cr = ke(e$r); + K0 = 1; + } else if (typeof J0 == "number" && !(1 < (J0 + W2 | 0) >>> 0)) { + var h0 = [0, Ur, [1, Rc(lr([0, X0], 0, 0), [0, Ur, n$r])]], Kr = 0, re = u0, xe = 0; + K0 = 2; + } + } else if (u0) { + var Re = u0[1]; + if (typeof J0 == "number" && !(1 < (J0 + W2 | 0) >>> 0)) { + var h0 = [0, Re, [1, Rc(lr([0, X0], 0, 0), [0, Re, t$r])]], Kr = 0, re = 0, xe = D; + K0 = 2; + } + } + var ve = 0; + switch (K0) { + case 0: + var Ie = function(Ut) { + Ku(Ut, 0); + var bt = o(t[20], 0, Ut); + return k7(Ut), bt; + }, Ge = pr($0), Me = Ie($0), an = Me[1], We = Me[2], Ae = 0; + if (We[0] === 1) { + var cn = We[1][2][1], rn = 0; + if (n0(cn, u$r) && n0(cn, i$r) && (rn = 1), !rn) { + var kn = A0($0), vn = 0; + if (typeof kn == "number") { + var Ne = kn - 5 | 0; + if (92 < Ne >>> 0) { + if (!(94 < (Ne + 1 | 0) >>> 0)) { + Rr($0, u0), fr($0, I0); + var Je = We; + Ae = 1, vn = 1; + } + } else if (!(1 < (Ne + eX | 0) >>> 0)) { + var h0 = [0, an, We], Kr = X0, re = u0, xe = D; + ve = 1, Ae = 2, vn = 1; + } + } + if (!vn) { + Xi($0, We); + var en = Ie($0), _n = qn(cn, f$r), Cn = on(X0, Ge); + Rr($0, u0), fr($0, I0); + var Cr = [0, cr([0, jr], function(bt, B0, D0, Le, He) { + return function(he) { + var me = D0[1], Zn = Xi(he, D0[2]), wn = Hr(he, bt, 0), ft = wn[2][2]; + if (Le) { + var xt = ft[2], jn = 0; + if (xt[1]) + ue(he, [0, me, j7]), jn = 1; + else { + var ut = 0; + !xt[2] && !xt[3] && (jn = 1, ut = 1), ut || ue(he, [0, me, 80]); + } + } else { + var dt = ft[2], xn = 0; + if (dt[1]) + ue(he, [0, me, Yt]), xn = 1; + else { + var ln = dt[2], it = 0; + if (dt[3]) + ue(he, [0, me, 81]); + else { + var Tt = 0; + ln && !ln[2] && (Tt = 1), Tt || (ue(he, [0, me, 81]), it = 1); + } + it || (xn = 1); + } + } + var Ti = lr([0, He], 0, 0), hs = 0, Au = 0, Hs = 0, Vi = B0 !== 0 ? 1 : 0, Xs = 0, Ys = Le ? [1, wn] : [2, wn]; + return [0, Zn, Ys, Xs, Vi, Hs, Au, hs, Ti]; + }; + }(jr, D, en, _n, Cn), $0)]; + Ae = 2; + } + } + } + var Hn = 0; + switch (Ae) { + case 2: + Hn = 1; + break; + case 0: + var Fn = Me[2], vt = A0($0), Nt = 0; + if (typeof vt == "number") { + var gt = 0; + if (vt !== 4 && vt !== 98 && (gt = 1), !gt) { + Rr($0, u0), fr($0, I0); + var Je = Fn; + Nt = 1; + } + } + if (!Nt) { + var Zt = D !== 0 ? 1 : 0, qt = 0; + if (Fn[0] === 1) { + var Ft = Fn[1], Ct = Ft[2][1], du = 0; + if (B) { + var Wu = 0; + !qn(x$r, Ct) && (!Zt || !qn(o$r, Ct)) && (Wu = 1), Wu || (ue($0, [0, Ft[1], [21, Ct, Zt, 0, 0]]), qt = 1, du = 1); + } + } + var h0 = [0, an, Fn], Kr = X0, re = u0, xe = D; + ve = 1, Hn = 1; + } + break; + } + if (!Hn) + var lt = Xi($0, Je), ou = Hr($0, jr, oi($0, u(X, $0))), Bu = [0, ou[1], [12, ou[2]]], K7 = [0, lt, [0, Bu], 0, D !== 0 ? 1 : 0, 0, 1, 0, lr([0, X0], 0, 0)], Cr = [0, [0, Bu[1], K7]]; + break; + case 2: + ve = 1; + break; + } + if (ve) { + var Yi = h0[2], a7 = h0[1]; + 1 - fu($0) && je($0, 12); + var Cr = [0, cr([0, jr], function(Ut, bt, B0, D0, Le, He) { + return function(he) { + var me = xu(he, 85), Zn = pe0(he, 86) ? u(e, he) : [0, He, $Jr]; + return [0, Le, [0, Zn], me, bt !== 0 ? 1 : 0, B0 !== 0 ? 1 : 0, 0, Ut, lr([0, D0], 0, 0)]; + }; + }(I0, xe, re, Kr, Yi, a7), $0)]; + } + } + Or(O0, $0); + var Er = [0, [0, Cr, qr], Br, Mr]; + continue r; + } + } + }, b0); + }), N(U0, function(B) { + var Z = A0(B) === 41 ? 1 : 0; + if (Z) { + Y0(B, 41); + for (var p0 = 0; ; ) { + var b0 = [0, u(hr, B), p0], O0 = A0(B); + if (typeof O0 == "number" && O0 === 9) { + Y0(B, 9); + var p0 = b0; + continue; + } + var M0 = de0(B, ye(b0)); + break; + } + } else + var M0 = Z; + return [0, M0, R(E0, 0, 0, 0, B)]; + }), N(b, function(B) { + var Z = z7(B), p0 = Z[2], b0 = p0[1], O0 = Z[1]; + return ae0(b0) && ue(B, [0, O0, 3]), [0, O0, [0, b0, p0[2]]]; + }), N(R0, function(B) { + return cr(0, function(Z) { + var p0 = u(b, Z), b0 = A0(Z) === 86 ? [1, u(i, Z)] : [0, j1(Z)]; + return [0, p0, b0]; + }, B); + }), N(X, function(B) { + var Z = A0(B) === 98 ? 1 : 0; + if (Z) { + 1 - fu(B) && je(B, 12); + var p0 = [0, cr(0, function(O0) { + var M0 = pr(O0); + Y0(O0, 98); + for (var er = 0, yr = 0; ; ) { + var vr = cr(0, function(ne) { + return function(Qr) { + var be = n(Qr), ae = u(R0, Qr), pe = ae[2], oe = A0(Qr), ce = 0; + if (typeof oe == "number" && oe === 82) { + ie(Qr); + var ge = 1, q0 = [0, u(e, Qr)]; + ce = 1; + } + if (!ce) { + ne && ue(Qr, [0, ae[1], 77]); + var ge = ne, q0 = 0; + } + return [0, be, pe[1], pe[2], q0, ge]; + }; + }(er), O0), $0 = vr[2], Er = [0, [0, vr[1], [0, $0[2], $0[3], $0[1], $0[4]]], yr], Mr = A0(O0), Br = 0; + if (typeof Mr == "number") { + var qr = 0; + if (Mr !== 99 && Pn !== Mr && (qr = 1), !qr) { + var jr = ye(Er); + Br = 1; + } + } + if (!Br) { + if (Y0(O0, 9), A0(O0) !== 99) { + var er = $0[5], yr = Er; + continue; + } + var jr = ye(Er); + } + var $r = pr(O0); + return Y0(O0, 99), [0, jr, yu([0, M0], [0, we(O0)], $r, 0)]; + } + }, B)]; + } else + var p0 = Z; + return p0; + }), N(s0, function(B) { + var Z = A0(B) === 98 ? 1 : 0, p0 = Z && [0, cr(0, function(b0) { + var O0 = pr(b0); + Y0(b0, 98); + for (var M0 = u2(0, b0), er = 0; ; ) { + var yr = A0(M0); + if (typeof yr == "number") { + var vr = 0; + if ((yr === 99 || Pn === yr) && (vr = 1), vr) { + var $0 = ye(er), Er = pr(M0); + return Y0(M0, 99), [0, $0, yu([0, O0], [0, we(M0)], Er, 0)]; + } + } + var Mr = [0, u(e, M0), er]; + A0(M0) !== 99 && Y0(M0, 9); + var er = Mr; + } + }, B)]; + return p0; + }), N(hr, function(B) { + return o(Ar, B, u(b, B)); + }), N(Ar, function(B, Z) { + function p0(b0) { + for (var O0 = [0, Z[1], [0, Z]]; ; ) { + var M0 = O0[2], er = O0[1]; + if (A0(b0) === 10 && ve0(1, b0)) { + var yr = cr([0, er], function(qr) { + return function(jr) { + return Y0(jr, 10), [0, qr, u(b, jr)]; + }; + }(M0), b0), vr = yr[1], O0 = [0, vr, [1, [0, vr, yr[2]]]]; + continue; + } + if (A0(b0) === 98) + var $0 = $t(b0), Er = function(Br, qr) { + return o(Qe(Br, -860373976, 77), Br, qr); + }, Mr = o($0[2], M0, Er); + else + var Mr = M0; + return [0, Mr, u(s0, b0), 0]; + } + } + return cr([0, Z[1]], p0, B); + }), N(or, function(B, Z) { + var p0 = o(Ar, B, Z); + return [0, p0[1], [16, p0[2]]]; + }), N(W0, function(B) { + var Z = A0(B); + return typeof Z == "number" && Z === 86 ? [1, u(i, B)] : [0, j1(B)]; + }), N(Lr, function(B, Z, p0) { + var b0 = B[2]; + function O0(Sr) { + return y7(Sr, lr([0, Z], [0, p0], 0)); + } + switch (b0[0]) { + case 0: + var F0 = [0, O0(b0[1])]; + break; + case 1: + var F0 = [1, O0(b0[1])]; + break; + case 2: + var F0 = [2, O0(b0[1])]; + break; + case 3: + var F0 = [3, O0(b0[1])]; + break; + case 4: + var F0 = [4, O0(b0[1])]; + break; + case 5: + var F0 = [5, O0(b0[1])]; + break; + case 6: + var F0 = [6, O0(b0[1])]; + break; + case 7: + var F0 = [7, O0(b0[1])]; + break; + case 8: + var F0 = [8, O0(b0[1])]; + break; + case 9: + var F0 = [9, O0(b0[1])]; + break; + case 10: + var F0 = [10, O0(b0[1])]; + break; + case 11: + var M0 = b0[1], er = O0(M0[2]), F0 = [11, [0, M0[1], er]]; + break; + case 12: + var yr = b0[1], vr = O0(yr[4]), F0 = [12, [0, yr[1], yr[2], yr[3], vr]]; + break; + case 13: + var $0 = b0[1], Er = lr([0, Z], [0, p0], 0), Mr = JD($0[4], Er), F0 = [13, [0, $0[1], $0[2], $0[3], Mr]]; + break; + case 14: + var Br = b0[1], qr = O0(Br[3]), F0 = [14, [0, Br[1], Br[2], qr]]; + break; + case 15: + var jr = b0[1], $r = O0(jr[2]), F0 = [15, [0, jr[1], $r]]; + break; + case 16: + var ne = b0[1], Qr = O0(ne[3]), F0 = [16, [0, ne[1], ne[2], Qr]]; + break; + case 17: + var be = b0[1], ae = O0(be[3]), F0 = [17, [0, be[1], be[2], ae]]; + break; + case 18: + var pe = b0[1], oe = pe[1], ce = pe[2], ge = O0(oe[3]), F0 = [18, [0, [0, oe[1], oe[2], ge], ce]]; + break; + case 19: + var q0 = b0[1], Fr = O0(q0[2]), F0 = [19, [0, q0[1], Fr]]; + break; + case 20: + var _ = b0[1], k = O0(_[2]), F0 = [20, [0, _[1], k]]; + break; + case 21: + var I = b0[1], U = O0(I[2]), F0 = [21, [0, I[1], U]]; + break; + case 22: + var Y = b0[1], y0 = O0(Y[2]), F0 = [22, [0, Y[1], y0]]; + break; + case 23: + var P0 = b0[1], I0 = O0(P0[3]), F0 = [23, [0, P0[1], P0[2], I0]]; + break; + case 24: + var D = b0[1], u0 = O0(D[3]), F0 = [24, [0, D[1], D[2], u0]]; + break; + case 25: + var X0 = b0[1], J0 = O0(X0[3]), F0 = [25, [0, X0[1], X0[2], J0]]; + break; + default: + var ir = b0[1], Q0 = O0(ir[2]), F0 = [26, [0, ir[1], Q0]]; + } + return [0, B[1], F0]; + }); + function Wr(B) { + var Z = pr(B); + if (Y0(B, 66), A0(B) === 4) { + var p0 = on(Z, pr(B)); + Y0(B, 4), Ku(B, 0); + var b0 = u(t[9], B); + return k7(B), Y0(B, 5), [0, [0, b0], lr([0, p0], [0, we(B)], 0)]; + } + return [0, 0, lr([0, Z], [0, we(B)], 0)]; + } + var Jr = 0; + function ar(B) { + var Z = u2(0, B), p0 = A0(Z); + return typeof p0 == "number" && p0 === 66 ? [0, cr(Jr, Wr, Z)] : 0; + } + function _r(B) { + var Z = A0(B), p0 = Yn(1, B); + if (typeof Z == "number" && Z === 86) { + if (typeof p0 == "number" && p0 === 66) { + Y0(B, 86); + var b0 = ar(B); + return [0, [0, j1(B)], b0]; + } + var O0 = u(W0, B), M0 = A0(B) === 66 ? o2(B, O0) : O0; + return [0, M0, ar(B)]; + } + return [0, [0, j1(B)], 0]; + } + function Ir(B, Z) { + var p0 = _s(1, Z); + Ku(p0, 1); + var b0 = u(B, p0); + return k7(p0), b0; + } + function fe(B) { + return Ir(e, B); + } + function v0(B) { + return Ir(b, B); + } + function P(B) { + return Ir(X, B); + } + function L(B) { + return Ir(s0, B); + } + function Q(B, Z) { + return Ir(ur(E0, B, 0, 0), Z); + } + function i0(B) { + return Ir(U0, B); + } + function l0(B) { + return Ir(l, B); + } + function S0(B) { + return Ir(i, B); + } + function T0(B) { + return Ir(W0, B); + } + function rr(B) { + return Ir(ar, B); + } + function L0(B) { + return Ir(_r, B); + } + return [0, fe, v0, P, L, function(B) { + return Ir(hr, B); + }, Q, i0, l0, S0, T0, rr, L0]; + } + function $ee(t) { + function n(c, s) { + if (s[0] === 0) + return s[1]; + var p = s[2][1]; + return Du(function(y) { + return ue(c, y); + }, p), s[1]; + } + function e(c, s, p) { + var y = c ? c[1] : 26; + if (p[0] === 0) + var T = p[1]; + else { + var E = p[2][2]; + Du(function(A) { + return ue(s, A); + }, E); + var T = p[1]; + } + 1 - u(t[23], T) && ue(s, [0, T[1], y]); + var d = T[2], w = 0; + return d[0] === 10 && js(d[1][2][1]) && (V7(s, [0, T[1], 52]), w = 1), o(t[19], s, T); + } + function i(c, s) { + return [0, [0, c, s[1]], [0, c, s[2]]]; + } + function x(c, s) { + var p = Lc(c[2], s[2]); + return [0, Lc(c[1], s[1]), p]; + } + return [0, n, e, g$r, i, x, function(c) { + var s = ye(c[2]); + return [0, ye(c[1]), s]; + }]; + } + function Zee(t) { + function n(S) { + var M = A0(S); + if (typeof M == "number") { + var K = M - 99 | 0, V = 0; + if (6 < K >>> 0 ? K === 14 && (V = 1) : 4 < (K - 1 | 0) >>> 0 && (V = 1), V) + return we(S); + } + var f0 = x7(S); + return f0 && Ms(S); + } + function e(S) { + var M = pr(S); + Ku(S, 0); + var K = cr(0, function(f0) { + Y0(f0, 0), Y0(f0, 12); + var m0 = u(t[10], f0); + return Y0(f0, 1), m0; + }, S); + k7(S); + var V = lr([0, M], [0, n(S)], 0); + return [0, K[1], [0, K[2], V]]; + } + function i(S) { + return A0(S) === 1 ? 0 : [0, u(t[7], S)]; + } + function x(S) { + var M = pr(S); + Ku(S, 0); + var K = cr(0, function(f0) { + Y0(f0, 0); + var m0 = i(f0); + return Y0(f0, 1), m0; + }, S); + k7(S); + var V = yu([0, M], [0, n(S)], 0, 0); + return [0, K[1], [0, K[2], V]]; + } + function c(S) { + Ku(S, 0); + var M = cr(0, function(K) { + Y0(K, 0); + var V = A0(K), f0 = 0; + if (typeof V == "number" && V === 12) { + var m0 = pr(K); + Y0(K, 12); + var k0 = u(t[10], K), x0 = [3, [0, k0, lr([0, m0], 0, 0)]]; + f0 = 1; + } + if (!f0) + var g0 = i(K), e0 = g0 ? 0 : pr(K), x0 = [2, [0, g0, yu(0, 0, e0, 0)]]; + return Y0(K, 1), x0; + }, S); + return k7(S), [0, M[1], M[2]]; + } + function s(S) { + var M = Pe(S), K = A0(S), V = 0; + if (typeof K != "number" && K[0] === 7) { + var f0 = K[1]; + V = 1; + } + if (!V) { + St(FQr, S); + var f0 = TQr; + } + var m0 = pr(S); + ie(S); + var k0 = A0(S), g0 = 0; + if (typeof k0 == "number") { + var e0 = k0 + CX | 0, x0 = 0; + if (72 < e0 >>> 0 ? e0 !== 76 && (x0 = 1) : 70 < (e0 - 1 | 0) >>> 0 || (x0 = 1), !x0) { + var l = we(S); + g0 = 1; + } + } + if (!g0) + var l = n(S); + return [0, M, [0, f0, lr([0, m0], [0, l], 0)]]; + } + function p(S) { + var M = Yn(1, S); + if (typeof M == "number") { + if (M === 10) + for (var K = cr(0, function(m0) { + var k0 = [0, s(m0)]; + return Y0(m0, 10), [0, k0, s(m0)]; + }, S); ; ) { + var V = A0(S); + if (typeof V == "number" && V === 10) { + var f0 = function(k0) { + return function(g0) { + return Y0(g0, 10), [0, [1, k0], s(g0)]; + }; + }(K), K = cr([0, K[1]], f0, S); + continue; + } + return [2, K]; + } + if (M === 86) + return [1, cr(0, function(m0) { + var k0 = s(m0); + return Y0(m0, 86), [0, k0, s(m0)]; + }, S)]; + } + return [0, s(S)]; + } + function y(S) { + return cr(0, function(M) { + var K = Yn(1, M), V = 0; + if (typeof K == "number" && K === 86) { + var f0 = [1, cr(0, function(b) { + var R0 = s(b); + return Y0(b, 86), [0, R0, s(b)]; + }, M)]; + V = 1; + } + if (!V) + var f0 = [0, s(M)]; + var m0 = A0(M), k0 = 0; + if (typeof m0 == "number" && m0 === 82) { + Y0(M, 82); + var g0 = pr(M), e0 = A0(M), x0 = 0; + if (typeof e0 == "number") + if (e0 === 0) { + var l = x(M), c0 = l[2], t0 = l[1]; + c0[1] || ue(M, [0, t0, 56]); + var o0 = [0, [1, t0, c0]]; + } else + x0 = 1; + else if (e0[0] === 8) { + Y0(M, e0); + var w0 = [0, e0[2]], _0 = lr([0, g0], [0, n(M)], 0), o0 = [0, [0, e0[1], [0, w0, e0[3], _0]]]; + } else + x0 = 1; + if (x0) { + je(M, 57); + var o0 = [0, [0, Pe(M), [0, gQr, SQr, 0]]]; + } + var E0 = o0; + k0 = 1; + } + if (!k0) + var E0 = 0; + return [0, f0, E0]; + }, S); + } + function T(S) { + return cr(0, function(M) { + Y0(M, 98); + var K = A0(M); + if (typeof K == "number") { + if (K === 99) + return ie(M), wQr; + } else if (K[0] === 7) + for (var V = 0, f0 = p(M); ; ) { + var m0 = A0(M); + if (typeof m0 == "number") { + if (m0 === 0) { + var V = [0, [1, e(M)], V]; + continue; + } + } else if (m0[0] === 7) { + var V = [0, [0, y(M)], V]; + continue; + } + var k0 = ye(V), g0 = [0, c1, [0, f0, xu(M, j7), k0]]; + return xu(M, 99) ? [0, g0] : (B1(M, 99), [1, g0]); + } + return B1(M, 99), EQr; + }, S); + } + function E(S) { + return cr(0, function(M) { + Y0(M, 98), Y0(M, j7); + var K = A0(M); + if (typeof K == "number") { + if (K === 99) + return ie(M), Ni; + } else if (K[0] === 7) { + var V = p(M); + return pe0(M, 99), [0, c1, [0, V]]; + } + return B1(M, 99), Ni; + }, S); + } + var d = function S(M) { + return S.fun(M); + }, w = function S(M) { + return S.fun(M); + }, G = function S(M) { + return S.fun(M); + }; + N(d, function(S) { + var M = A0(S); + if (typeof M == "number") { + if (M === 0) + return c(S); + } else if (M[0] === 8) + return Y0(S, M), [0, M[1], [4, [0, M[2], M[3]]]]; + var K = u(G, S), V = K[2], f0 = K[1]; + return Ni <= V[1] ? [0, f0, [1, V[2]]] : [0, f0, [0, V[2]]]; + }); + function A(S) { + switch (S[0]) { + case 0: + return S[1][2][1]; + case 1: + var M = S[1][2], K = Te(hQr, M[2][2][1]); + return Te(M[1][2][1], K); + default: + var V = S[1][2], f0 = V[1], m0 = f0[0] === 0 ? f0[1][2][1] : A([2, f0[1]]); + return Te(m0, Te(dQr, V[2][2][1])); + } + } + return N(w, function(S) { + var M = pr(S), K = T(S); + k7(S); + var V = K[2]; + if (V[0] === 0) + var f0 = V[1], m0 = typeof f0 == "number" ? 0 : f0[2][2], k0 = m0; + else + var k0 = 1; + if (k0) + var g0 = SU, e0 = g0, x0 = cr(0, function(qr) { + return 0; + }, S); + else { + Ku(S, 3); + for (var l = Pe(S), c0 = 0; ; ) { + var t0 = i2(S), o0 = A0(S), w0 = 0; + if (typeof o0 == "number") { + var _0 = 0; + if (o0 === 98) { + Ku(S, 2); + var E0 = A0(S), U0 = Yn(1, S), b = 0; + if (typeof E0 == "number" && E0 === 98 && typeof U0 == "number") { + var R0 = 0; + if (j7 !== U0 && Pn !== U0 && (R0 = 1), !R0) { + var X = E(S), s0 = X[2], hr = X[1], Ar = typeof s0 == "number" ? [0, Ni, hr] : [0, c1, [0, hr, s0[2]]], or = S[23][1], W0 = 0; + if (or) { + var Lr = or[2]; + if (Lr) { + var Tr = Lr[2]; + W0 = 1; + } + } + if (!W0) + var Tr = ke(wRr); + S[23][1] = Tr; + var Hr = n2(S), Or = Yl(S[24][1], Hr); + S[25][1] = Or; + var fr = [0, ye(c0), t0, Ar]; + b = 1; + } + } + if (!b) { + var Rr = u(w, S), Wr = Rr[2], Jr = Rr[1], ar = Ni <= Wr[1] ? [0, Jr, [1, Wr[2]]] : [0, Jr, [0, Wr[2]]], c0 = [0, ar, c0]; + continue; + } + } else if (Pn === o0) { + St(0, S); + var fr = [0, ye(c0), t0, SU]; + } else + w0 = 1, _0 = 1; + if (!_0) + var _r = t0 ? t0[1] : l, Ir = yt(l, _r), e0 = fr[3], x0 = [0, Ir, fr[1]]; + } else + w0 = 1; + if (w0) { + var c0 = [0, u(d, S), c0]; + continue; + } + break; + } + } + var fe = we(S), v0 = 0; + if (typeof e0 != "number") { + var P = e0[1], L = 0; + if (c1 === P) { + var Q = e0[2], i0 = K[2]; + if (i0[0] === 0) { + var l0 = i0[1]; + if (typeof l0 == "number") + je(S, kQr); + else { + var S0 = A(l0[2][1]); + n0(A(Q[2][1]), S0) && je(S, [17, S0]); + } + } + var T0 = Q[1]; + } else if (Ni === P) { + var rr = K[2]; + if (rr[0] === 0) { + var L0 = rr[1]; + typeof L0 != "number" && je(S, [17, A(L0[2][1])]); + } + var T0 = e0[2]; + } else + L = 1; + if (!L) { + var B = T0; + v0 = 1; + } + } + if (!v0) + var B = K[1]; + var Z = K[2][1], p0 = K[1]; + if (typeof Z == "number") { + var b0 = 0, O0 = lr([0, M], [0, fe], 0); + if (typeof e0 != "number") { + var M0 = e0[1], er = 0; + if (c1 === M0) + var yr = e0[2][1]; + else if (Ni === M0) + var yr = e0[2]; + else + er = 1; + if (!er) { + var vr = yr; + b0 = 1; + } + } + if (!b0) + var vr = B; + var $0 = [0, Ni, [0, p0, vr, x0, O0]]; + } else { + var Er = 0, Mr = lr([0, M], [0, fe], 0); + if (typeof e0 != "number" && c1 === e0[1]) { + var Br = [0, e0[2]]; + Er = 1; + } + if (!Er) + var Br = 0; + var $0 = [0, c1, [0, [0, p0, Z[2]], Br, x0, Mr]]; + } + return [0, yt(K[1], B), $0]; + }), N(G, function(S) { + return Ku(S, 2), u(w, S); + }), [0, n, e, i, x, c, s, p, y, T, E, d, w, G]; + } + function Fi(t) { + return typeof t == "number" ? 0 : t[0] === 0 ? 1 : t[1]; + } + function Qee(t, n) { + return [0, t, n]; + } + function tb(t, n, e) { + return [1, 2, n, e, t, 0]; + } + function ub(t, n, e) { + return [1, 2, t, n, 0, e]; + } + function Uc(t, n, e, i) { + var x = Fi(t), c = Fi(i), s = c <= x ? x + 1 | 0 : c + 1 | 0; + return s === 1 ? [0, n, e] : [1, s, n, e, t, i]; + } + function FL(t, n) { + var e = n !== 0 ? 1 : 0; + if (e) { + if (n !== 1) { + var i = n >>> 1 | 0, x = FL(t, i), c = u(t, 0), s = FL(t, (n - i | 0) - 1 | 0), p = c[2], y = c[1]; + return [1, Fi(x) + 1 | 0, y, p, x, s]; + } + var T = u(t, 0), E = [0, T[1], T[2]]; + } else + var E = e; + return E; + } + function P9(t, n, e, i) { + var x = Fi(t), c = Fi(i), s = c <= x ? x + 1 | 0 : c + 1 | 0; + return [1, s, n, e, t, i]; + } + function Iu(t, n, e, i) { + var x = Fi(t), c = Fi(i); + if ((c + 2 | 0) < x) { + var s = t[5], p = t[4], y = t[3], T = t[2], E = Fi(s); + if (E <= Fi(p)) + return P9(p, T, y, Uc(s, n, e, i)); + var d = Uc(s[5], n, e, i), w = s[3], G = s[2]; + return P9(Uc(p, T, y, s[4]), G, w, d); + } + if ((x + 2 | 0) < c) { + var A = i[5], S = i[4], M = i[3], K = i[2], V = Fi(S); + if (V <= Fi(A)) + return P9(Uc(t, n, e, S), K, M, A); + var f0 = Uc(S[5], K, M, A), m0 = S[3], k0 = S[2]; + return P9(Uc(t, n, e, S[4]), k0, m0, f0); + } + return Uc(t, n, e, i); + } + var o7 = 0; + function rne(t) { + var n = typeof t == "number" ? 1 : 0, e = n && 1; + return e; + } + function qs(t, n) { + for (var e = t, i = n; ; ) { + if (typeof e == "number") + return i; + if (e[0] === 0) + return [0, e[1], e[2], o7, i]; + var x = [0, e[2], e[3], e[5], i], e = e[4], i = x; + } + } + function Fe0(t) { + for (var n = t; ; ) { + if (typeof n == "number") + throw Jt; + if (n[0] === 0) + return n; + if (typeof n[4] == "number") + return [0, n[2], n[3]]; + var n = n[4]; + } + } + function Te0(t) { + for (var n = t; ; ) { + var e = n[4]; + if (typeof e == "number") + return [0, n[2], n[3]]; + if (e[0] === 0) + return e; + var n = e; + } + } + function Oe0(t) { + for (var n = t; ; ) { + if (typeof n == "number") + return 0; + if (n[0] === 0) + return [0, [0, n[1], n[2]]]; + if (typeof n[4] == "number") + return [0, [0, n[2], n[3]]]; + var n = n[4]; + } + } + function ene(t) { + for (var n = t; ; ) { + if (typeof n == "number") + throw Jt; + if (n[0] === 0) + return n; + if (typeof n[5] == "number") + return [0, n[2], n[3]]; + var n = n[5]; + } + } + function nne(t) { + for (var n = t; ; ) { + if (typeof n == "number") + return 0; + if (n[0] === 0) + return [0, [0, n[1], n[2]]]; + if (typeof n[5] == "number") + return [0, [0, n[2], n[3]]]; + var n = n[5]; + } + } + function TL(t) { + var n = t[5], e = t[4], i = t[3], x = t[2]; + return typeof e == "number" ? n : e[0] === 0 ? Iu(0, x, i, n) : Iu(TL(e), x, i, n); + } + function OL(t, n) { + if (typeof n == "number") + return t; + if (n[0] === 0) + return tb(t, n[1], n[2]); + var e = n[5], i = n[3], x = n[2]; + return Iu(OL(t, n[4]), x, i, e); + } + function Ie0(t, n, e) { + if (typeof e == "number") + return [0, t, n]; + if (e[0] === 0) + return ub(t, n, e); + var i = e[5], x = e[3], c = e[2]; + return Iu(Ie0(t, n, e[4]), c, x, i); + } + function IL(t, n) { + if (typeof n == "number") + return t; + if (n[0] === 0) + return ub(n[1], n[2], t); + var e = IL(t, n[5]); + return Iu(n[4], n[2], n[3], e); + } + function Ae0(t, n, e) { + if (typeof e == "number") + return [0, t, n]; + if (e[0] === 0) + return tb(e, t, n); + var i = Ae0(t, n, e[5]); + return Iu(e[4], e[2], e[3], i); + } + function Ne0(t, n) { + if (typeof t == "number") + return n; + if (t[0] === 1 && typeof n != "number") { + if (n[0] === 0) + return IL(n, t); + var e = Te0(n), i = TL(n); + return Iu(t, e[1], e[2], i); + } + return typeof n == "number" ? t : OL(t, n); + } + function ai(t, n, e, i) { + if (typeof t == "number") + return Ie0(n, e, i); + if (t[0] === 0) { + if (typeof i != "number") { + if (i[0] === 0) + return [1, 2, n, e, t, i]; + if (3 < i[1]) { + var x = i[5], c = i[3], s = i[2]; + return Iu(ai(t, n, e, i[4]), s, c, x); + } + return Uc(t, n, e, i); + } + } else { + var p = t[5], y = t[4], T = t[3], E = t[2], d = t[1]; + if (typeof i != "number") { + if (i[0] === 0) + return 3 < d ? Iu(y, E, T, ai(p, n, e, i)) : Uc(t, n, e, i); + var w = i[1]; + if ((w + 2 | 0) < d) + return Iu(y, E, T, ai(p, n, e, i)); + if ((d + 2 | 0) < w) { + var G = i[5], A = i[3], S = i[2]; + return Iu(ai(t, n, e, i[4]), S, A, G); + } + return Uc(t, n, e, i); + } + } + return Ae0(n, e, t); + } + function D9(t, n) { + if (typeof t == "number") + return n; + if (t[0] === 1 && typeof n != "number") { + if (n[0] === 0) + return IL(n, t); + var e = Te0(n), i = TL(n); + return ai(t, e[1], e[2], i); + } + return typeof n == "number" ? t : OL(t, n); + } + function ib(t, n, e, i) { + return e ? ai(t, n, e[1], i) : D9(t, i); + } + function Ce0(t, n) { + for (var e = n; ; ) { + if (typeof e == "number") + return 0; + if (e[0] === 0) + return o(t, e[1], e[2]); + Ce0(t, e[4]), o(t, e[2], e[3]); + var e = e[5]; + } + } + function AL(t, n) { + if (typeof n == "number") + return 0; + if (n[0] === 0) { + var e = u(t, n[2]); + return [0, n[1], e]; + } + var i = AL(t, n[4]), x = u(t, n[3]), c = AL(t, n[5]); + return [1, n[1], n[2], x, i, c]; + } + function NL(t, n) { + if (typeof n == "number") + return 0; + if (n[0] === 0) { + var e = n[1]; + return [0, e, o(t, e, n[2])]; + } + var i = n[2], x = NL(t, n[4]), c = o(t, i, n[3]), s = NL(t, n[5]); + return [1, n[1], i, c, x, s]; + } + function CL(t, n, e) { + for (var i = n, x = e; ; ) { + if (typeof i == "number") + return x; + if (i[0] === 0) + return ur(t, i[1], i[2], x); + var c = CL(t, i[4], x), s = ur(t, i[2], i[3], c), i = i[5], x = s; + } + } + function Pe0(t, n) { + for (var e = t, i = n; ; ) { + if (typeof i == "number") + return e; + if (i[0] === 0) + return [0, i[1], e]; + var x = i[4], c = Pe0(e, i[5]), e = [0, i[2], c], i = x; + } + } + function De0(t) { + return Pe0(0, t); + } + function Le0(t, n) { + for (var e = n; ; ) { + if (typeof e == "number") + return 1; + if (e[0] === 0) + return o(t, e[1], e[2]); + var i = o(t, e[2], e[3]); + if (i) { + var x = Le0(t, e[4]); + if (x) { + var e = e[5]; + continue; + } + var c = x; + } else + var c = i; + return c; + } + } + function Re0(t, n) { + for (var e = n; ; ) { + if (typeof e == "number") + return 0; + if (e[0] === 0) + return o(t, e[1], e[2]); + var i = o(t, e[2], e[3]); + if (i) + var x = i; + else { + var c = Re0(t, e[4]); + if (!c) { + var e = e[5]; + continue; + } + var x = c; + } + return x; + } + } + function PL(t, n) { + if (typeof n == "number") + return 0; + if (n[0] === 0) + return o(t, n[1], n[2]) ? n : o7; + var e = n[5], i = n[4], x = n[3], c = n[2], s = PL(t, i), p = o(t, c, x), y = PL(t, e); + return p ? i === s && e === y ? n : ai(s, c, x, y) : D9(s, y); + } + function DL(t) { + if (typeof t == "number") + return 0; + if (t[0] === 0) + return 1; + var n = DL(t[5]); + return (DL(t[4]) + 1 | 0) + n | 0; + } + function je0(t, n) { + for (var e = t, i = n; ; ) { + if (typeof i == "number") + return e; + if (i[0] === 0) + return [0, i, e]; + var x = i[4], c = je0(e, i[5]), e = [0, [0, i[2], i[3]], c], i = x; + } + } + function tne(t) { + return je0(0, t); + } + var L9 = function(t) { + function n(A, S, M) { + if (typeof M == "number") + return [0, A, S]; + if (M[0] === 0) { + var K = M[1], V = o(t[1], A, K); + return V === 0 ? M[2] === S ? M : [0, K, S] : 0 <= V ? tb(M, A, S) : ub(A, S, M); + } + var f0 = M[5], m0 = M[4], k0 = M[3], g0 = M[2], e0 = o(t[1], A, g0); + if (e0 === 0) + return k0 === S ? M : [1, M[1], A, S, m0, f0]; + if (0 <= e0) { + var x0 = n(A, S, f0); + return f0 === x0 ? M : Iu(m0, g0, k0, x0); + } + var l = n(A, S, m0); + return m0 === l ? M : Iu(l, g0, k0, f0); + } + function e(A, S) { + for (var M = S; ; ) { + if (typeof M == "number") + throw Jt; + if (M[0] === 0) { + if (o(t[1], A, M[1]) === 0) + return M[2]; + throw Jt; + } + var K = o(t[1], A, M[2]); + if (K === 0) + return M[3]; + var V = 0 <= K ? M[5] : M[4], M = V; + } + } + function i(A, S) { + for (var M = S; ; ) { + if (typeof M == "number") + return 0; + if (M[0] === 0) { + var K = o(t[1], A, M[1]) === 0 ? 1 : 0, V = K && [0, M[2]]; + return V; + } + var f0 = o(t[1], A, M[2]); + if (f0 === 0) + return [0, M[3]]; + var m0 = 0 <= f0 ? M[5] : M[4], M = m0; + } + } + function x(A, S) { + for (var M = S; ; ) { + if (typeof M == "number") + return 0; + if (M[0] === 0) + return o(t[1], A, M[1]) === 0 ? 1 : 0; + var K = o(t[1], A, M[2]), V = K === 0 ? 1 : 0; + if (V) + return V; + var f0 = 0 <= K ? M[5] : M[4], M = f0; + } + } + function c(A, S) { + if (typeof S == "number") + return S; + if (S[0] === 0) + return o(t[1], A, S[1]) === 0 ? o7 : S; + var M = S[5], K = S[4], V = S[3], f0 = S[2], m0 = o(t[1], A, f0); + if (m0 === 0) + return Ne0(K, M); + if (0 <= m0) { + var k0 = c(A, M); + return M === k0 ? S : Iu(K, f0, V, k0); + } + var g0 = c(A, K); + return K === g0 ? S : Iu(g0, f0, V, M); + } + function s(A, S, M) { + if (typeof M == "number") + return [0, A, u(S, 0)]; + if (M[0] === 0) { + var K = M[2], V = M[1], f0 = o(t[1], A, V); + if (f0 === 0) { + var m0 = u(S, [0, K]); + return K === m0 ? M : [0, V, m0]; + } + var k0 = u(S, 0); + return 0 <= f0 ? tb(M, A, k0) : ub(A, k0, M); + } + var g0 = M[5], e0 = M[4], x0 = M[3], l = M[2], c0 = o(t[1], A, l); + if (c0 === 0) { + var t0 = u(S, [0, x0]); + return x0 === t0 ? M : [1, M[1], A, t0, e0, g0]; + } + if (0 <= c0) { + var o0 = s(A, S, g0); + return g0 === o0 ? M : Iu(e0, l, x0, o0); + } + var w0 = s(A, S, e0); + return e0 === w0 ? M : Iu(w0, l, x0, g0); + } + function p(A, S, M) { + if (typeof M == "number") { + var K = u(S, 0); + return K && [0, A, K[1]]; + } else { + if (M[0] === 0) { + var V = M[2], f0 = M[1], m0 = o(t[1], A, f0); + if (m0 === 0) { + var k0 = u(S, [0, V]); + if (k0) { + var g0 = k0[1]; + return V === g0 ? M : [0, f0, g0]; + } + return o7; + } + var e0 = u(S, 0); + if (e0) { + var x0 = e0[1]; + return 0 <= m0 ? tb(M, A, x0) : ub(A, x0, M); + } + return M; + } + var l = M[5], c0 = M[4], t0 = M[3], o0 = M[2], w0 = o(t[1], A, o0); + if (w0 === 0) { + var _0 = u(S, [0, t0]); + if (_0) { + var E0 = _0[1]; + return t0 === E0 ? M : [1, M[1], A, E0, c0, l]; + } + return Ne0(c0, l); + } + if (0 <= w0) { + var U0 = p(A, S, l); + return l === U0 ? M : Iu(c0, o0, t0, U0); + } + var b = p(A, S, c0); + return c0 === b ? M : Iu(b, o0, t0, l); + } + } + function y(A, S) { + if (typeof S == "number") + return OQr; + if (S[0] === 0) { + var M = o(t[1], A, S[1]); + return M === 0 ? [0, o7, [0, S[2]], o7] : 0 <= M ? [0, S, 0, o7] : [0, o7, 0, S]; + } + var K = S[5], V = S[4], f0 = S[3], m0 = S[2], k0 = o(t[1], A, m0); + if (k0 === 0) + return [0, V, [0, f0], K]; + if (0 <= k0) { + var g0 = y(A, K), e0 = g0[3], x0 = g0[2]; + return [0, ai(V, m0, f0, g0[1]), x0, e0]; + } + var l = y(A, V), c0 = ai(l[3], m0, f0, K); + return [0, l[1], l[2], c0]; + } + function T(A, S, M) { + if (typeof S == "number") { + if (typeof M == "number") + return 0; + if (M[0] === 0) { + var K = M[1], V = ur(A, K, 0, [0, M[2]]); + return V ? [0, K, V[1]] : o7; + } + } else if (S[0] === 0) { + var f0 = S[2], m0 = S[1]; + if (typeof M == "number") { + var k0 = ur(A, m0, [0, f0], 0); + return k0 ? [0, m0, k0[1]] : o7; + } else if (M[0] === 0) { + var g0 = y(m0, M), e0 = T(A, o7, g0[3]), x0 = ur(A, m0, [0, f0], g0[2]); + return ib(T(A, o7, g0[1]), m0, x0, e0); + } + } else { + var l = S[2], c0 = Fi(M); + if (c0 <= S[1]) { + var t0 = y(l, M), o0 = T(A, S[5], t0[3]), w0 = ur(A, l, [0, S[3]], t0[2]); + return ib(T(A, S[4], t0[1]), l, w0, o0); + } + var _0 = 0; + if ((typeof M == "number" || M[0] !== 1) && (_0 = 1), _0) + throw [0, Sn, IQr]; + } + var E0 = M[2], U0 = y(E0, S), b = T(A, U0[3], M[5]), R0 = ur(A, E0, U0[2], [0, M[3]]); + return ib(T(A, U0[1], M[4]), E0, R0, b); + } + function E(A, S, M) { + var K = 0; + if (typeof S == "number") { + var _0 = M; + K = 1; + } else if (S[0] === 1) { + var V = S[3], f0 = S[2]; + if (typeof M != "number" && M[0] !== 0) { + var m0 = M[3], k0 = M[2]; + if (M[1] <= S[1]) { + var g0 = y(f0, M), e0 = g0[2], x0 = E(A, S[4], g0[1]), l = E(A, S[5], g0[3]); + return e0 ? ib(x0, f0, ur(A, f0, V, e0[1]), l) : ai(x0, f0, V, l); + } + var c0 = y(k0, S), t0 = c0[2], o0 = E(A, c0[1], M[4]), w0 = E(A, c0[3], M[5]); + return t0 ? ib(o0, k0, ur(A, k0, t0[1], m0), w0) : ai(o0, k0, m0, w0); + } + } + if (!K) + if (typeof M == "number") + var _0 = S; + else { + if (M[0] === 0) { + var E0 = M[2], U0 = M[1]; + return p(U0, function(X) { + return X ? ur(A, U0, X[1], E0) : [0, E0]; + }, S); + } + var b = S[2], R0 = S[1]; + return p(R0, function(X) { + return X ? ur(A, R0, b, X[1]) : [0, b]; + }, M); + } + return _0; + } + function d(A, S) { + if (typeof S == "number") + return AQr; + if (S[0] === 0) + return o(A, S[1], S[2]) ? [0, S, o7] : [0, o7, S]; + var M = S[3], K = S[2], V = d(A, S[4]), f0 = V[2], m0 = V[1], k0 = o(A, K, M), g0 = d(A, S[5]), e0 = g0[2], x0 = g0[1]; + if (k0) { + var l = D9(f0, e0); + return [0, ai(m0, K, M, x0), l]; + } + var c0 = ai(f0, K, M, e0); + return [0, D9(m0, x0), c0]; + } + function w(A, S, M) { + for (var K = qs(M, 0), V = qs(S, 0), f0 = K; ; ) { + if (V) { + if (f0) { + var m0 = o(t[1], V[1], f0[1]); + if (m0 === 0) { + var k0 = o(A, V[2], f0[2]); + if (k0 === 0) { + var g0 = qs(f0[3], f0[4]), V = qs(V[3], V[4]), f0 = g0; + continue; + } + return k0; + } + return m0; + } + return 1; + } + var e0 = f0 && -1; + return e0; + } + } + function G(A, S, M) { + for (var K = qs(M, 0), V = qs(S, 0), f0 = K; ; ) { + if (V) { + if (f0) { + var m0 = o(t[1], V[1], f0[1]) === 0 ? 1 : 0; + if (m0) { + var k0 = o(A, V[2], f0[2]); + if (k0) { + var g0 = qs(f0[3], f0[4]), V = qs(V[3], V[4]), f0 = g0; + continue; + } + var e0 = k0; + } else + var e0 = m0; + } else + var e0 = f0; + return e0; + } + return f0 ? 0 : 1; + } + } + return [0, o7, rne, x, n, p, s, Qee, c, T, E, w, G, Ce0, CL, Le0, Re0, PL, d, DL, tne, Fe0, Oe0, ene, nne, De0, De0, function(A, S, M) { + var K = [0, o7, 0], V = CL(function(f0, m0, k0) { + var g0 = k0[1], e0 = u(S, f0), x0 = k0[2], l = x0 || (e0 !== f0 ? 1 : 0); + if (A) + var c0 = A[1], t0 = s(e0, function(o0) { + return o0 ? o(c0, o0[1], m0) : m0; + }, g0); + else + var t0 = n(e0, m0, g0); + return [0, t0, l]; + }, M, K); + return V[2] ? V[1] : M; + }, Fe0, Oe0, y, e, i, AL, NL, FL]; + }([0, bz]); + function a2(t) { + return [0, j1(t)]; + } + var LL = eL([0, function(t, n) { + var e = z00(t[1], n[1]); + return e === 0 ? o(tr0, t[2], n[2]) : e; + }]); + function fb(t, n, e) { + var i = e[2][1]; + return qn(i, cre) ? n : o(Mu[3], i, n) ? (ue(t, [0, e[1], [19, i]]), n) : o(Mu[4], i, n); + } + function RL(t, n) { + var e = n[2]; + switch (e[0]) { + case 0: + var i = e[1][1]; + return le(function(c, s) { + var p = s[0] === 0 ? s[1][2][2] : s[1][2][1]; + return RL(c, p); + }, t, i); + case 1: + var x = e[1][1]; + return le(function(c, s) { + return s[0] === 2 ? c : RL(c, s[1][2][1]); + }, t, x); + case 2: + return [0, e[1][1], t]; + default: + return ke(are); + } + } + var se = pu(vre, sre), mn = Jee(se), Vn = function(t) { + var n = [0, KJr, Mu[1], 0, 0]; + function e(o0) { + var w0 = A0(o0); + if (typeof w0 == "number") { + var _0 = 0; + if (8 <= w0 ? 10 <= w0 || (_0 = 1) : w0 === 1 && (_0 = 1), _0) + return 1; + } + return 0; + } + function i(o0) { + var w0 = z7(o0), _0 = A0(o0), E0 = 0; + if (typeof _0 == "number") { + var U0 = 0; + if (_0 === 82 ? Y0(o0, 82) : _0 === 86 ? (je(o0, [4, w0[2][1]]), Y0(o0, 86)) : U0 = 1, !U0) { + var b = Pe(o0), R0 = pr(o0), X = A0(o0), s0 = 0; + if (typeof X == "number") + switch (X) { + case 30: + case 31: + ie(o0); + var hr = we(o0), Ar = e(o0) ? [1, b, [0, X === 31 ? 1 : 0, lr([0, R0], [0, hr], 0)]] : [0, b], or = Ar; + break; + default: + s0 = 1; + } + else + switch (X[0]) { + case 0: + var W0 = X[2], Lr = ur(se[24], o0, X[1], W0), Tr = we(o0), Hr = e(o0) ? [2, b, [0, Lr, W0, lr([0, R0], [0, Tr], 0)]] : [0, b], or = Hr; + break; + case 2: + var Or = X[1], fr = Or[1]; + Or[4] && gi(o0, 45), ie(o0); + var Rr = we(o0); + if (e(o0)) + var Wr = lr([0, R0], [0, Rr], 0), Jr = [3, fr, [0, Or[2], Or[3], Wr]]; + else + var Jr = [0, fr]; + var or = Jr; + break; + default: + s0 = 1; + } + if (s0) { + ie(o0); + var or = [0, b]; + } + var ar = or; + E0 = 1; + } + } + if (!E0) + var ar = 0; + return [0, w0, ar]; + } + var x = 0; + function c(o0) { + var w0 = pr(o0); + Y0(o0, 48); + var _0 = o(se[13], 0, o0), E0 = _0[2][1], U0 = _0[1], b = cr(0, function(R0) { + var X = xu(R0, 63); + if (X) { + Ku(R0, 1); + var s0 = A0(R0), hr = 0; + if (typeof s0 == "number") + switch (s0) { + case 117: + var Ar = HJr; + break; + case 119: + var Ar = XJr; + break; + case 121: + var Ar = YJr; + break; + default: + hr = 1; + } + else + switch (s0[0]) { + case 4: + je(R0, [3, E0, [0, s0[2]]]); + var Ar = 0; + break; + case 9: + if (s0[1]) + var Ar = VJr; + else + hr = 1; + break; + default: + hr = 1; + } + if (hr) { + je(R0, [3, E0, 0]); + var Ar = 0; + } + ie(R0), k7(R0); + var or = Ar; + } else + var or = X; + var W0 = or !== 0 ? 1 : 0, Lr = W0 && pr(R0); + Y0(R0, 0); + for (var Tr = n; ; ) { + var Hr = A0(R0); + if (typeof Hr == "number") { + var Or = Hr - 2 | 0; + if (Xt < Or >>> 0) { + if (!(T7 < (Or + 1 | 0) >>> 0)) { + var fr = Tr[3], Rr = Tr[4], Wr = ye(Tr[1][4]), Jr = ye(Tr[1][3]), ar = ye(Tr[1][2]), _r = ye(Tr[1][1]), Ir = on(Rr, pr(R0)); + Y0(R0, 1); + var fe = A0(R0), v0 = 0; + if (typeof fe == "number") { + var P = 0; + if (fe !== 1 && Pn !== fe && (v0 = 1, P = 1), !P) + var Q = we(R0); + } else + v0 = 1; + if (v0) + var L = x7(R0), Q = L && Ms(R0); + var i0 = yu([0, Lr], [0, Q], Ir, 0); + if (or) + switch (or[1]) { + case 0: + return [0, [0, _r, 1, fr, i0]]; + case 1: + return [1, [0, ar, 1, fr, i0]]; + case 2: + var l0 = 1; + break; + default: + return [3, [0, Wr, fr, i0]]; + } + else { + var S0 = Dc(_r), T0 = Dc(ar), rr = Dc(Jr), L0 = Dc(Wr), B = 0; + if (S0 === 0 && T0 === 0) { + var Z = 0; + if (rr === 0 && L0 === 0 && (B = 1, Z = 1), !Z) { + var l0 = 0; + B = 2; + } + } + var p0 = 0; + switch (B) { + case 0: + if (T0 === 0 && rr === 0 && L0 <= S0) + return Du(function(K0) { + return ue(R0, [0, K0[1], [0, E0, K0[2][1][2][1]]]); + }, Wr), [0, [0, _r, 0, fr, i0]]; + if (S0 === 0 && rr === 0 && L0 <= T0) + return Du(function(K0) { + return ue(R0, [0, K0[1], [8, E0, K0[2][1][2][1]]]); + }, Wr), [1, [0, ar, 0, fr, i0]]; + ue(R0, [0, U0, [2, E0]]); + break; + case 1: + break; + default: + p0 = 1; + } + if (!p0) + return [2, [0, zJr, 0, fr, i0]]; + } + var b0 = Dc(Jr), O0 = Dc(Wr); + if (b0 !== 0) { + var M0 = 0; + if (O0 !== 0 && (b0 < O0 ? (Du(function(K0) { + return ue(R0, [0, K0[1], [9, E0]]); + }, Jr), M0 = 1) : Du(function(K0) { + return ue(R0, [0, K0[1], [9, E0]]); + }, Wr)), !M0) + return [2, [0, [1, Jr], l0, fr, i0]]; + } + return [2, [0, [0, Wr], l0, fr, i0]]; + } + } else if (Or === 10) { + var er = Pe(R0), yr = pr(R0); + ie(R0); + var vr = A0(R0), $0 = 0; + if (typeof vr == "number") { + var Er = vr - 2 | 0, Mr = 0; + if (Xt < Er >>> 0) + T7 < (Er + 1 | 0) >>> 0 && (Mr = 1); + else if (Er === 7) { + Y0(R0, 9); + var Br = A0(R0), qr = 0; + if (typeof Br == "number") { + var jr = 0; + if (Br !== 1 && Pn !== Br && (jr = 1), !jr) { + var $r = 1; + qr = 1; + } + } + if (!qr) + var $r = 0; + ue(R0, [0, er, [7, $r]]); + } else + Mr = 1; + Mr || ($0 = 1); + } + $0 || ue(R0, [0, er, qJr]); + var Tr = [0, Tr[1], Tr[2], 1, yr]; + continue; + } + } + var ne = Tr[2], Qr = Tr[1], be = cr(x, i, R0), ae = be[2], pe = ae[1], oe = pe[2][1]; + if (qn(oe, UJr)) + var ce = Tr; + else { + var ge = pe[1], q0 = ae[2], Fr = be[1], _ = It(oe, 0), k = 97 <= _ ? 1 : 0, I = k && (_ <= In ? 1 : 0); + I && ue(R0, [0, ge, [6, E0, oe]]), o(Mu[3], oe, ne) && ue(R0, [0, ge, [1, E0, oe]]); + var U = Tr[4], Y = Tr[3], y0 = o(Mu[4], oe, ne), P0 = [0, Tr[1], y0, Y, U], I0 = function(Ur) { + return function(h0, Kr) { + return or && or[1] !== h0 ? ue(R0, [0, Kr, [5, E0, or, Ur]]) : 0; + }; + }(oe); + if (typeof q0 == "number") { + var D = 0; + if (or) { + var u0 = or[1], X0 = 0; + if (u0 === 1 ? ue(R0, [0, Fr, [8, E0, oe]]) : u0 ? (D = 1, X0 = 1) : ue(R0, [0, Fr, [0, E0, oe]]), !X0) + var J0 = P0; + } else + D = 1; + if (D) + var J0 = [0, [0, Qr[1], Qr[2], Qr[3], [0, [0, Fr, [0, pe]], Qr[4]]], y0, Y, U]; + } else + switch (q0[0]) { + case 0: + ue(R0, [0, q0[1], [5, E0, or, oe]]); + var J0 = P0; + break; + case 1: + var ir = q0[1]; + I0(0, ir); + var J0 = [0, [0, [0, [0, Fr, [0, pe, [0, ir, q0[2]]]], Qr[1]], Qr[2], Qr[3], Qr[4]], y0, Y, U]; + break; + case 2: + var Q0 = q0[1]; + I0(1, Q0); + var J0 = [0, [0, Qr[1], [0, [0, Fr, [0, pe, [0, Q0, q0[2]]]], Qr[2]], Qr[3], Qr[4]], y0, Y, U]; + break; + default: + var F0 = q0[1]; + I0(2, F0); + var J0 = [0, [0, Qr[1], Qr[2], [0, [0, Fr, [0, pe, [0, F0, q0[2]]]], Qr[3]], Qr[4]], y0, Y, U]; + } + var ce = J0; + } + var Sr = A0(R0), mr = 0; + if (typeof Sr == "number") { + var Cr = Sr - 2 | 0, sr = 0; + Xt < Cr >>> 0 ? T7 < (Cr + 1 | 0) >>> 0 && (sr = 1) : Cr === 6 ? (je(R0, 1), Y0(R0, 8)) : sr = 1, sr || (mr = 1); + } + mr || Y0(R0, 9); + var Tr = ce; + } + }, o0); + return [16, [0, _0, b, lr([0, w0], 0, 0)]]; + } + var s = 0; + function p(o0) { + return cr(s, c, o0); + } + function y(o0, w0) { + var _0 = w0[2][1], E0 = w0[1], U0 = o0[1]; + js(_0) && V7(U0, [0, E0, 41]); + var b = O9(_0), R0 = b || f2(_0); + return R0 && V7(U0, [0, E0, 55]), [0, U0, o0[2]]; + } + function T(o0, w0) { + var _0 = w0[2]; + switch (_0[0]) { + case 0: + return le(E, o0, _0[1][1]); + case 1: + return le(d, o0, _0[1][1]); + case 2: + var E0 = _0[1][1], U0 = E0[2][1], b = o0[2], R0 = o0[1]; + o(Mu[3], U0, b) && ue(R0, [0, E0[1], 42]); + var X = y([0, R0, b], E0), s0 = o(Mu[4], U0, X[2]); + return [0, X[1], s0]; + default: + return ue(o0[1], [0, w0[1], 31]), o0; + } + } + function E(o0, w0) { + if (w0[0] === 0) { + var _0 = w0[1][2], E0 = _0[1], U0 = E0[0] === 1 ? y(o0, E0[1]) : o0; + return T(U0, _0[2]); + } + return T(o0, w0[1][2][1]); + } + function d(o0, w0) { + return w0[0] === 2 ? o0 : T(o0, w0[1][2][1]); + } + function w(o0, w0, _0, E0) { + var U0 = o0[5], b = q1(E0), R0 = E0[2], X = R0[3], s0 = _s(U0 ? 0 : w0, o0), hr = w0 || U0 || 1 - b; + if (hr) { + if (_0) { + var Ar = _0[1], or = Ar[2][1], W0 = Ar[1]; + js(or) && V7(s0, [0, W0, 44]); + var Lr = O9(or), Tr = Lr || f2(or); + Tr && V7(s0, [0, W0, 55]); + } + var Hr = R0[2], Or = [0, s0, Mu[1]], fr = le(function(ar, _r) { + return T(ar, _r[2][1]); + }, Or, Hr), Rr = X && (T(fr, X[1][2][1]), 0), Wr = Rr; + } else + var Wr = hr; + return Wr; + } + var G = function o0(w0, _0) { + return o0.fun(w0, _0); + }; + function A(o0) { + A0(o0) === 21 && je(o0, s7); + var w0 = o(se[18], o0, 41), _0 = A0(o0) === 82 ? 1 : 0, E0 = _0 && (Y0(o0, 82), [0, u(se[10], o0)]); + return [0, w0, E0]; + } + var S = 0; + N(G, function(o0, w0) { + var _0 = A0(o0); + if (typeof _0 == "number") { + var E0 = _0 - 5 | 0, U0 = 0; + if (7 < E0 >>> 0 ? is === E0 && (U0 = 1) : 5 < (E0 - 1 | 0) >>> 0 && (U0 = 1), U0) { + var b = _0 === 12 ? 1 : 0; + if (b) + var R0 = pr(o0), X = cr(0, function(or) { + return Y0(or, 12), o(se[18], or, 41); + }, o0), s0 = lr([0, R0], 0, 0), hr = [0, [0, X[1], [0, X[2], s0]]]; + else + var hr = b; + return A0(o0) !== 5 && je(o0, 64), [0, ye(w0), hr]; + } + } + var Ar = cr(S, A, o0); + return A0(o0) !== 5 && Y0(o0, 9), o(G, o0, [0, Ar, w0]); + }); + function M(o0, w0) { + function _0(U0) { + var b = mL(w0, re0(o0, U0)), R0 = 1, X = b[10] === 1 ? b : [0, b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], R0, b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24], b[25], b[26], b[27], b[28], b[29], b[30]], s0 = pr(X); + Y0(X, 4); + var hr = fu(X), Ar = hr && (A0(X) === 21 ? 1 : 0); + if (Ar) { + var or = pr(X), W0 = cr(0, function(ar) { + return Y0(ar, 21), A0(ar) === 86 ? [0, u(t[9], ar)] : (je(ar, Ri), 0); + }, X), Lr = W0[2]; + if (Lr) { + A0(X) === 9 && ie(X); + var Tr = lr([0, or], 0, 0), Hr = [0, [0, W0[1], [0, Lr[1], Tr]]]; + } else + var Hr = Lr; + var Or = Hr; + } else + var Or = Ar; + var fr = o(G, X, 0), Rr = pr(X); + Y0(X, 5); + var Wr = yu([0, s0], [0, we(X)], Rr, 0); + return [0, Or, fr[1], fr[2], Wr]; + } + var E0 = 0; + return function(U0) { + return cr(E0, _0, U0); + }; + } + function K(o0, w0, _0, E0, U0) { + var b = fe0(o0, w0, _0, U0), R0 = o(se[16], E0, b); + return [0, [0, R0[1]], R0[2]]; + } + function V(o0, w0, _0) { + var E0 = Pe(o0), U0 = A0(o0), b = 0; + if (typeof U0 == "number") + if (s7 === U0) { + var R0 = pr(o0); + ie(o0); + var s0 = [0, [0, E0, [0, 0, lr([0, R0], 0, 0)]]]; + } else if (L7 === U0) { + var X = pr(o0); + ie(o0); + var s0 = [0, [0, E0, [0, 1, lr([0, X], 0, 0)]]]; + } else + b = 1; + else + b = 1; + if (b) + var s0 = 0; + if (s0) { + var hr = 0; + if (!w0 && !_0 && (hr = 1), !hr) + return ue(o0, [0, s0[1][1], 7]), 0; + } + return s0; + } + function f0(o0) { + if (Yt === A0(o0)) { + var w0 = pr(o0); + return ie(o0), [0, 1, w0]; + } + return S$r; + } + function m0(o0) { + if (A0(o0) === 64 && !Jl(1, o0)) { + var w0 = pr(o0); + return ie(o0), [0, 1, w0]; + } + return E$r; + } + function k0(o0) { + var w0 = m0(o0), _0 = w0[1], E0 = w0[2], U0 = cr(0, function(W0) { + var Lr = pr(W0); + Y0(W0, 15); + var Tr = f0(W0), Hr = Tr[1], Or = pl([0, E0, [0, Lr, [0, Tr[2], 0]]]), fr = W0[7], Rr = A0(W0), Wr = 0; + if (fr && typeof Rr == "number") { + if (Rr === 4) { + var Ir = 0, fe = 0; + Wr = 1; + } else if (Rr === 98) { + var Jr = oi(W0, u(t[3], W0)), ar = A0(W0) === 4 ? 0 : [0, ys(W0, o(se[13], h$r, W0))], Ir = ar, fe = Jr; + Wr = 1; + } + } + if (!Wr) + var _r = G1(W0) ? ys(W0, o(se[13], d$r, W0)) : (be0(W0, k$r), [0, Pe(W0), w$r]), Ir = [0, _r], fe = oi(W0, u(t[3], W0)); + var v0 = u(M(_0, Hr), W0), P = A0(W0) === 86 ? v0 : eb(W0, v0), L = u(t[12], W0), Q = L[2], i0 = L[1]; + if (Q) + var l0 = he0(W0, Q), S0 = i0; + else + var l0 = Q, S0 = o2(W0, i0); + return [0, Hr, fe, Ir, P, S0, l0, Or]; + }, o0), b = U0[2], R0 = b[4], X = b[3], s0 = b[1], hr = K(o0, _0, s0, 0, q1(R0)); + w(o0, hr[2], X, R0); + var Ar = U0[1], or = lr([0, b[7]], 0, 0); + return [23, [0, X, R0, hr[1], _0, s0, b[6], b[5], b[2], or, Ar]]; + } + var g0 = 0; + function e0(o0) { + return cr(g0, k0, o0); + } + function x0(o0, w0) { + var _0 = pr(w0); + Y0(w0, o0); + for (var E0 = 0, U0 = 0; ; ) { + var b = cr(0, function(or) { + var W0 = o(se[18], or, 40); + if (xu(or, 82)) + var Lr = 0, Tr = [0, u(se[10], or)]; + else if (W0[2][0] === 2) + var Lr = 0, Tr = 0; + else + var Lr = [0, [0, W0[1], 59]], Tr = 0; + return [0, [0, W0, Tr], Lr]; + }, w0), R0 = b[2], X = R0[2], s0 = [0, [0, b[1], R0[1]], E0], hr = X ? [0, X[1], U0] : U0; + if (xu(w0, 9)) { + var E0 = s0, U0 = hr; + continue; + } + var Ar = ye(hr); + return [0, ye(s0), _0, Ar]; + } + } + var l = 24; + function c0(o0) { + return x0(l, o0); + } + function t0(o0) { + var w0 = x0(27, F9(1, o0)), _0 = w0[1], E0 = w0[3], U0 = ye(le(function(b, R0) { + return R0[2][2] ? b : [0, [0, R0[1], 58], b]; + }, E0, _0)); + return [0, _0, w0[2], U0]; + } + return [0, m0, f0, V, M, K, w, function(o0) { + return x0(28, F9(1, o0)); + }, t0, c0, e0, p]; + }(mn), R9 = $ee(se), ci = function(t) { + function n(P) { + var L = P[2]; + switch (L[0]) { + case 17: + var Q = L[1], i0 = Q[1][2][1]; + if (n0(i0, pQr)) { + if (!n0(i0, mQr)) { + var l0 = n0(Q[2][2][1], _Qr); + if (!l0) + return l0; + } + } else { + var S0 = n0(Q[2][2][1], yQr); + if (!S0) + return S0; + } + break; + case 0: + case 10: + case 16: + case 19: + break; + default: + return 0; + } + return 1; + } + var e = t[1], i = function P(L) { + return P.fun(L); + }, x = function P(L) { + return P.fun(L); + }, c = function P(L) { + return P.fun(L); + }, s = function P(L) { + return P.fun(L); + }, p = function P(L) { + return P.fun(L); + }, y = function P(L) { + return P.fun(L); + }, T = function P(L) { + return P.fun(L); + }, E = function P(L) { + return P.fun(L); + }, d = function P(L) { + return P.fun(L); + }, w = function P(L) { + return P.fun(L); + }, G = function P(L) { + return P.fun(L); + }, A = function P(L) { + return P.fun(L); + }, S = function P(L) { + return P.fun(L); + }, M = function P(L) { + return P.fun(L); + }, K = function P(L) { + return P.fun(L); + }, V = function P(L) { + return P.fun(L); + }, f0 = function P(L) { + return P.fun(L); + }, m0 = function P(L, Q, i0, l0, S0) { + return P.fun(L, Q, i0, l0, S0); + }, k0 = function P(L, Q, i0, l0) { + return P.fun(L, Q, i0, l0); + }, g0 = function P(L) { + return P.fun(L); + }, e0 = function P(L) { + return P.fun(L); + }, x0 = function P(L) { + return P.fun(L); + }, l = function P(L, Q, i0, l0, S0) { + return P.fun(L, Q, i0, l0, S0); + }, c0 = function P(L, Q, i0, l0) { + return P.fun(L, Q, i0, l0); + }, t0 = function P(L) { + return P.fun(L); + }, o0 = function P(L, Q, i0) { + return P.fun(L, Q, i0); + }, w0 = function P(L) { + return P.fun(L); + }, _0 = function P(L, Q, i0) { + return P.fun(L, Q, i0); + }, E0 = function P(L) { + return P.fun(L); + }, U0 = function P(L) { + return P.fun(L); + }, b = function P(L, Q) { + return P.fun(L, Q); + }, R0 = function P(L, Q, i0, l0) { + return P.fun(L, Q, i0, l0); + }, X = function P(L) { + return P.fun(L); + }, s0 = function P(L, Q, i0) { + return P.fun(L, Q, i0); + }, hr = function P(L) { + return P.fun(L); + }, Ar = function P(L) { + return P.fun(L); + }, or = function P(L) { + return P.fun(L); + }, W0 = function P(L, Q, i0) { + return P.fun(L, Q, i0); + }, Lr = t[2]; + function Tr(P) { + var L = Pe(P), Q = u(y, P), i0 = u(p, P); + if (i0) { + var l0 = i0[1]; + return [0, cr([0, L], function(S0) { + var T0 = ur(Lr, 0, S0, Q); + return [2, [0, l0, T0, u(x, S0), 0]]; + }, P)]; + } + return Q; + } + function Hr(P, L) { + if (typeof L == "number") { + var Q = L !== 55 ? 1 : 0; + if (!Q) + return Q; + } + throw Bs; + } + function Or(P) { + var L = T9(Hr, P), Q = Tr(L), i0 = A0(L); + if (typeof i0 == "number") { + if (i0 === 11) + throw Bs; + if (i0 === 86) { + var l0 = ue0(L), S0 = 0; + if (l0) { + var T0 = l0[1]; + if (typeof T0 == "number" && T0 === 5) { + var rr = 1; + S0 = 1; + } + } + if (!S0) + var rr = 0; + if (rr) + throw Bs; + } + } + if (G1(L)) { + if (Q[0] === 0) { + var L0 = Q[1][2]; + if (L0[0] === 10 && !n0(L0[1][2][1], bQr) && !x7(L)) + throw Bs; + } + return Q; + } + return Q; + } + N(i, function(P) { + var L = A0(P), Q = 0, i0 = G1(P); + if (typeof L == "number") { + var l0 = 0; + if (22 <= L) + if (L === 58) { + if (P[17]) + return [0, u(c, P)]; + l0 = 1; + } else + L !== 98 && (l0 = 1); + else + L !== 4 && !(21 <= L) && (l0 = 1); + l0 || (Q = 1); + } + if (!Q && !i0) + return Tr(P); + var S0 = 0; + if (L === 64 && fu(P) && Yn(1, P) === 98) { + var T0 = Or, rr = or; + S0 = 1; + } + if (!S0) + var T0 = or, rr = Or; + var L0 = EL(P, rr); + if (L0) + return L0[1]; + var B = EL(P, T0); + return B ? B[1] : Tr(P); + }), N(x, function(P) { + return o(e, P, u(i, P)); + }), N(c, function(P) { + return cr(0, function(L) { + L[10] && je(L, 91); + var Q = pr(L), i0 = Pe(L); + Y0(L, 58); + var l0 = Pe(L); + if (x2(L)) + var S0 = 0, T0 = 0; + else { + var rr = xu(L, Yt), L0 = A0(L), B = 0; + if (typeof L0 == "number") { + var Z = 0; + if (L0 !== 86) + if (10 <= L0) + Z = 1; + else + switch (L0) { + case 0: + case 2: + case 3: + case 4: + case 6: + Z = 1; + break; + } + if (!Z) { + var p0 = 0; + B = 1; + } + } + if (!B) + var p0 = 1; + var b0 = rr || p0, O0 = b0 && [0, u(x, L)], S0 = rr, T0 = O0; + } + var M0 = T0 ? 0 : we(L), er = yt(i0, l0); + return [30, [0, T0, lr([0, Q], [0, M0], 0), S0, er]]; + }, P); + }), N(s, function(P) { + var L = P[2]; + switch (L[0]) { + case 17: + var Q = L[1], i0 = Q[1][2][1]; + if (n0(i0, cQr)) { + if (!n0(i0, sQr)) { + var l0 = n0(Q[2][2][1], vQr); + if (!l0) + return l0; + } + } else { + var S0 = n0(Q[2][2][1], lQr); + if (!S0) + return S0; + } + break; + case 10: + case 16: + break; + default: + return 0; + } + return 1; + }), N(p, function(P) { + var L = A0(P), Q = 0; + if (typeof L == "number") { + var i0 = L - 67 | 0; + if (!(15 < i0 >>> 0)) { + switch (i0) { + case 0: + var l0 = KZr; + break; + case 1: + var l0 = WZr; + break; + case 2: + var l0 = JZr; + break; + case 3: + var l0 = $Zr; + break; + case 4: + var l0 = ZZr; + break; + case 5: + var l0 = QZr; + break; + case 6: + var l0 = rQr; + break; + case 7: + var l0 = eQr; + break; + case 8: + var l0 = nQr; + break; + case 9: + var l0 = tQr; + break; + case 10: + var l0 = uQr; + break; + case 11: + var l0 = iQr; + break; + case 12: + var l0 = fQr; + break; + case 13: + var l0 = xQr; + break; + case 14: + var l0 = oQr; + break; + default: + var l0 = aQr; + } + var S0 = l0; + Q = 1; + } + } + if (!Q) + var S0 = 0; + return S0 !== 0 && ie(P), S0; + }), N(y, function(P) { + var L = Pe(P), Q = u(E, P); + if (A0(P) === 85) { + ie(P); + var i0 = u(x, Kl(0, P)); + Y0(P, 86); + var l0 = cr(0, x, P), S0 = yt(L, l0[1]), T0 = l0[2]; + return [0, [0, S0, [7, [0, o(e, P, Q), i0, T0, 0]]]]; + } + return Q; + }), N(T, function(P) { + return o(e, P, u(y, P)); + }); + function fr(P, L, Q, i0, l0) { + var S0 = o(e, P, L); + return [0, [0, l0, [15, [0, i0, S0, o(e, P, Q), 0]]]]; + } + function Rr(P, L, Q, i0) { + for (var l0 = P, S0 = Q, T0 = i0; ; ) { + var rr = A0(L); + if (typeof rr == "number" && rr === 84) { + 1 - l0 && je(L, zZr), Y0(L, 84); + var L0 = cr(0, d, L), B = L0[2], Z = L0[1], p0 = A0(L), b0 = 0; + if (typeof p0 == "number" && !(1 < (p0 - 87 | 0) >>> 0)) { + je(L, [23, oL(p0)]); + var O0 = Jr(L, B, Z), M0 = Wr(L, O0[2], O0[1]), er = M0[2], yr = M0[1]; + b0 = 1; + } + if (!b0) + var er = B, yr = Z; + var vr = yt(T0, yr), l0 = 1, S0 = fr(L, S0, er, 2, vr), T0 = vr; + continue; + } + return [0, T0, S0]; + } + } + function Wr(P, L, Q) { + for (var i0 = L, l0 = Q; ; ) { + var S0 = A0(P); + if (typeof S0 == "number" && S0 === 87) { + ie(P); + var T0 = cr(0, d, P), rr = Jr(P, T0[2], T0[1]), L0 = yt(l0, rr[1]), B = Rr(0, P, fr(P, i0, rr[2], 0, L0), L0), i0 = B[2], l0 = B[1]; + continue; + } + return [0, l0, i0]; + } + } + function Jr(P, L, Q) { + for (var i0 = L, l0 = Q; ; ) { + var S0 = A0(P); + if (typeof S0 == "number" && S0 === 88) { + ie(P); + var T0 = cr(0, d, P), rr = yt(l0, T0[1]), L0 = Rr(0, P, fr(P, i0, T0[2], 1, rr), rr), i0 = L0[2], l0 = L0[1]; + continue; + } + return [0, l0, i0]; + } + } + N(E, function(P) { + var L = cr(0, d, P), Q = L[2], i0 = L[1], l0 = A0(P), S0 = 0; + if (typeof l0 == "number" && l0 === 84) { + var rr = Rr(1, P, Q, i0); + S0 = 1; + } + if (!S0) + var T0 = Jr(P, Q, i0), rr = Wr(P, T0[2], T0[1]); + return rr[2]; + }); + function ar(P, L, Q, i0) { + return [0, i0, [3, [0, Q, P, L, 0]]]; + } + N(d, function(P) { + var L = 0; + r: + for (; ; ) { + var Q = cr(0, function(k) { + var I = u(w, k) !== 0 ? 1 : 0; + return [0, I, u(G, Kl(0, k))]; + }, P), i0 = Q[2], l0 = i0[2], S0 = Q[1]; + if (A0(P) === 98) { + var T0 = 0; + l0[0] === 0 && l0[1][2][0] === 12 ? je(P, 63) : T0 = 1; + } + var rr = A0(P), L0 = 0; + if (typeof rr == "number") { + var B = rr - 17 | 0, Z = 0; + if (1 < B >>> 0) + if (72 <= B) + switch (B - 72 | 0) { + case 0: + var p0 = gZr; + break; + case 1: + var p0 = FZr; + break; + case 2: + var p0 = TZr; + break; + case 3: + var p0 = OZr; + break; + case 4: + var p0 = IZr; + break; + case 5: + var p0 = AZr; + break; + case 6: + var p0 = NZr; + break; + case 7: + var p0 = CZr; + break; + case 8: + var p0 = PZr; + break; + case 9: + var p0 = DZr; + break; + case 10: + var p0 = LZr; + break; + case 11: + var p0 = RZr; + break; + case 12: + var p0 = jZr; + break; + case 13: + var p0 = GZr; + break; + case 14: + var p0 = MZr; + break; + case 15: + var p0 = BZr; + break; + case 16: + var p0 = qZr; + break; + case 17: + var p0 = UZr; + break; + case 18: + var p0 = HZr; + break; + case 19: + var p0 = XZr; + break; + default: + Z = 1; + } + else + Z = 1; + else + var p0 = B ? YZr : P[12] ? 0 : VZr; + if (!Z) { + var b0 = p0; + L0 = 1; + } + } + if (!L0) + var b0 = 0; + if (b0 !== 0 && ie(P), !L && !b0) + return l0; + if (b0) { + var O0 = b0[1], M0 = O0[1], er = i0[1], yr = er && (M0 === 14 ? 1 : 0); + yr && ue(P, [0, S0, 27]); + for (var vr = o(e, P, l0), $0 = vr, Er = [0, M0, O0[2]], Mr = S0, Br = L; ; ) { + var qr = Er[2], jr = Er[1]; + if (Br) { + var $r = Br[1], ne = $r[2], Qr = ne[2], be = Qr[0] === 0 ? Qr[1] : Qr[1] - 1 | 0; + if (qr[1] <= be) { + var ae = yt($r[3], Mr), pe = ar($r[1], $0, ne[1], ae), $0 = pe, Er = [0, jr, qr], Mr = ae, Br = Br[2]; + continue; + } + } + var L = [0, [0, $0, [0, jr, qr], Mr], Br]; + continue r; + } + } + for (var oe = o(e, P, l0), ce = S0, ge = L; ; ) { + if (ge) { + var q0 = ge[1], Fr = yt(q0[3], ce), _ = ge[2], oe = ar(q0[1], oe, q0[2][1], Fr), ce = Fr, ge = _; + continue; + } + return [0, oe]; + } + } + }), N(w, function(P) { + var L = A0(P); + if (typeof L == "number") { + if (48 <= L) { + if (s7 <= L) { + if (!(cf <= L)) + switch (L - 103 | 0) { + case 0: + return _Zr; + case 1: + return yZr; + case 6: + return hZr; + case 7: + return dZr; + } + } else if (L === 65 && P[18]) + return kZr; + } else if (45 <= L) + switch (L + mv | 0) { + case 0: + return wZr; + case 1: + return EZr; + default: + return SZr; + } + } + return 0; + }), N(G, function(P) { + var L = Pe(P), Q = pr(P), i0 = u(w, P); + if (i0) { + var l0 = i0[1]; + ie(P); + var S0 = cr(0, A, P), T0 = S0[2], rr = yt(L, S0[1]), L0 = 0; + if (l0 === 6) { + var B = T0[2], Z = 0; + switch (B[0]) { + case 10: + V7(P, [0, rr, 47]); + break; + case 16: + B[1][2][0] === 1 && ue(P, [0, rr, 88]); + break; + default: + Z = 1; + } + Z || (L0 = 1); + } + return [0, [0, rr, [28, [0, l0, T0, lr([0, Q], 0, 0)]]]]; + } + var p0 = A0(P), b0 = 0; + if (typeof p0 == "number") + if (cf === p0) + var O0 = mZr; + else if (T7 === p0) + var O0 = pZr; + else + b0 = 1; + else + b0 = 1; + if (b0) + var O0 = 0; + if (O0) { + ie(P); + var M0 = cr(0, A, P), er = M0[2]; + 1 - u(s, er) && ue(P, [0, er[1], 26]); + var yr = er[2], vr = 0; + yr[0] === 10 && js(yr[1][2][1]) && (gi(P, 54), vr = 1); + var $0 = yt(L, M0[1]), Er = lr([0, Q], 0, 0); + return [0, [0, $0, [29, [0, O0[1], er, 1, Er]]]]; + } + return u(S, P); + }), N(A, function(P) { + return o(e, P, u(G, P)); + }), N(S, function(P) { + var L = u(M, P); + if (x7(P)) + return L; + var Q = A0(P), i0 = 0; + if (typeof Q == "number") + if (cf === Q) + var l0 = bZr; + else if (T7 === Q) + var l0 = lZr; + else + i0 = 1; + else + i0 = 1; + if (i0) + var l0 = 0; + if (l0) { + var S0 = o(e, P, L); + 1 - u(s, S0) && ue(P, [0, S0[1], 26]); + var T0 = S0[2], rr = 0; + T0[0] === 10 && js(T0[1][2][1]) && (gi(P, 53), rr = 1); + var L0 = Pe(P); + ie(P); + var B = we(P), Z = yt(S0[1], L0), p0 = lr(0, [0, B], 0); + return [0, [0, Z, [29, [0, l0[1], S0, 0, p0]]]]; + } + return L; + }), N(M, function(P) { + var L = Pe(P), Q = 1 - P[16], i0 = 0, l0 = P[16] === 0 ? P : [0, P[1], P[2], P[3], P[4], P[5], P[6], P[7], P[8], P[9], P[10], P[11], P[12], P[13], P[14], P[15], i0, P[17], P[18], P[19], P[20], P[21], P[22], P[23], P[24], P[25], P[26], P[27], P[28], P[29], P[30]], S0 = A0(l0), T0 = 0; + if (typeof S0 == "number") { + var rr = S0 - 44 | 0; + if (!(7 < rr >>> 0)) { + var L0 = 0; + switch (rr) { + case 0: + if (Q) + var B = [0, u(g0, l0)]; + else + L0 = 1; + break; + case 6: + var B = [0, u(f0, l0)]; + break; + case 7: + var B = [0, u(V, l0)]; + break; + default: + L0 = 1; + } + if (!L0) { + var Z = B; + T0 = 1; + } + } + } + if (!T0) + var Z = Gs(l0) ? [0, u(t0, l0)] : u(E0, l0); + return p7(m0, 0, 0, l0, L, Z); + }), N(K, function(P) { + return o(e, P, u(M, P)); + }), N(V, function(P) { + switch (P[21]) { + case 0: + var L = 0, Q = 0; + break; + case 1: + var L = 0, Q = 1; + break; + default: + var L = 1, Q = 1; + } + var i0 = Pe(P), l0 = pr(P); + Y0(P, 51); + var S0 = [0, i0, [23, [0, lr([0, l0], [0, we(P)], 0)]]], T0 = A0(P); + if (typeof T0 == "number" && !(11 <= T0)) + switch (T0) { + case 4: + var rr = L ? S0 : (ue(P, [0, i0, 5]), [0, i0, [10, Rc(0, [0, i0, oZr])]]); + return R(k0, aZr, P, i0, rr); + case 6: + case 10: + var L0 = Q ? S0 : (ue(P, [0, i0, 4]), [0, i0, [10, Rc(0, [0, i0, sZr])]]); + return R(k0, vZr, P, i0, L0); + } + return Q ? St(cZr, P) : ue(P, [0, i0, 4]), S0; + }), N(f0, function(P) { + return cr(0, function(L) { + var Q = pr(L), i0 = Pe(L); + if (Y0(L, 50), xu(L, 10)) { + var l0 = Rc(0, [0, i0, iZr]), S0 = Pe(L); + Zl(L, fZr); + var T0 = Rc(0, [0, S0, xZr]); + return [17, [0, l0, T0, lr([0, Q], [0, we(L)], 0)]]; + } + var rr = pr(L); + Y0(L, 4); + var L0 = ur(s0, [0, rr], 0, u(x, Kl(0, L))); + return Y0(L, 5), [11, [0, L0, lr([0, Q], [0, we(L)], 0)]]; + }, P); + }), N(m0, function(P, L, Q, i0, l0) { + var S0 = P ? P[1] : 1, T0 = L && L[1], rr = p7(l, [0, S0], [0, T0], Q, i0, l0), L0 = ue0(Q), B = 0; + if (L0) { + var Z = L0[1]; + if (typeof Z == "number" && Z === 83) { + var p0 = 1; + B = 1; + } + } + if (!B) + var p0 = 0; + function b0(vr) { + var $0 = $t(vr); + function Er(Br, qr) { + return o(Qe(Br, Di, 78), Br, qr); + } + var Mr = o(e, vr, rr); + return o($0[2], Mr, Er); + } + function O0(vr, $0, Er) { + var Mr = u(x0, $0), Br = Mr[1], qr = yt(i0, Br), jr = [0, Er, vr, [0, Br, Mr[2]], 0], $r = 0; + if (!p0 && !T0) { + var ne = [4, jr]; + $r = 1; + } + if (!$r) + var ne = [20, [0, jr, qr, p0]]; + var Qr = T0 || p0; + return p7(m0, [0, S0], [0, Qr], $0, i0, [0, [0, qr, ne]]); + } + if (Q[13]) + return rr; + var M0 = A0(Q); + if (typeof M0 == "number") { + var er = M0 - 98 | 0; + if (2 < er >>> 0) { + if (er === -94) + return O0(0, Q, b0(Q)); + } else if (er !== 1 && fu(Q)) { + var yr = T9(function(vr, $0) { + throw Bs; + }, Q); + return _e0(yr, rr, function(vr) { + var $0 = b0(vr); + return O0(u(e0, vr), vr, $0); + }); + } + } + return rr; + }), N(k0, function(P, L, Q, i0) { + var l0 = P ? P[1] : 1; + return o(e, L, p7(m0, [0, l0], 0, L, Q, [0, i0])); + }), N(g0, function(P) { + return cr(0, function(L) { + var Q = Pe(L), i0 = pr(L); + if (Y0(L, 44), L[11] && A0(L) === 10) { + var l0 = we(L); + ie(L); + var S0 = Rc(lr([0, i0], [0, l0], 0), [0, Q, eZr]), T0 = A0(L); + return typeof T0 != "number" && T0[0] === 4 && !n0(T0[3], nZr) ? [17, [0, S0, o(se[13], 0, L), 0]] : (St(tZr, L), ie(L), [10, S0]); + } + var rr = Pe(L), L0 = A0(L), B = 0; + if (typeof L0 == "number") + if (L0 === 44) + var Z = u(g0, L); + else if (L0 === 51) + var Z = u(V, _L(1, L)); + else + B = 1; + else + B = 1; + if (B) + var Z = Gs(L) ? u(t0, L) : u(U0, L); + var p0 = R(c0, uZr, _L(1, L), rr, Z), b0 = A0(L), O0 = 0; + if (typeof b0 != "number" && b0[0] === 3) { + var M0 = R(R0, L, rr, p0, b0[1]); + O0 = 1; + } + if (!O0) + var M0 = p0; + var er = 0; + if (A0(L) !== 4) { + var yr = 0; + if (fu(L) && A0(L) === 98 && (yr = 1), !yr) { + var Er = M0; + er = 1; + } + } + if (!er) + var vr = $t(L), $0 = function(ne, Qr) { + return o(Qe(ne, Di, 79), ne, Qr); + }, Er = o(vr[2], M0, $0); + var Mr = fu(L), Br = Mr && _e0(T9(function(ne, Qr) { + throw Bs; + }, L), 0, e0), qr = A0(L), jr = 0; + if (typeof qr == "number" && qr === 4) { + var $r = [0, u(x0, L)]; + jr = 1; + } + if (!jr) + var $r = 0; + return [18, [0, Er, Br, $r, lr([0, i0], 0, 0)]]; + }, P); + }); + function _r(P) { + var L = pr(P); + Y0(P, 98); + for (var Q = 0; ; ) { + var i0 = A0(P); + if (typeof i0 == "number") { + var l0 = 0; + if ((i0 === 99 || Pn === i0) && (l0 = 1), l0) { + var S0 = ye(Q), T0 = pr(P); + Y0(P, 99); + var rr = A0(P) === 4 ? $t(P)[1] : we(P); + return [0, S0, yu([0, L], [0, rr], T0, 0)]; + } + } + var L0 = A0(P), B = 0; + if (typeof L0 != "number" && L0[0] === 4 && !n0(L0[2], Q$r)) { + var Z = Pe(P), p0 = pr(P); + Zl(P, rZr); + var b0 = [1, [0, Z, [0, lr([0, p0], [0, we(P)], 0)]]]; + B = 1; + } + if (!B) + var b0 = [0, u(mn[1], P)]; + var O0 = [0, b0, Q]; + A0(P) !== 99 && Y0(P, 9); + var Q = O0; + } + } + N(e0, function(P) { + Ku(P, 1); + var L = A0(P) === 98 ? 1 : 0, Q = L && [0, cr(0, _r, P)]; + return k7(P), Q; + }); + function Ir(P) { + var L = pr(P); + Y0(P, 12); + var Q = u(x, P); + return [0, Q, lr([0, L], 0, 0)]; + } + N(x0, function(P) { + return cr(0, function(L) { + var Q = pr(L); + Y0(L, 4); + for (var i0 = 0; ; ) { + var l0 = A0(L); + if (typeof l0 == "number") { + var S0 = 0; + if ((l0 === 5 || Pn === l0) && (S0 = 1), S0) { + var T0 = ye(i0), rr = pr(L); + return Y0(L, 5), [0, T0, yu([0, Q], [0, we(L)], rr, 0)]; + } + } + var L0 = A0(L), B = 0; + if (typeof L0 == "number" && L0 === 12) { + var Z = [1, cr(0, Ir, L)]; + B = 1; + } + if (!B) + var Z = [0, u(x, L)]; + var p0 = [0, Z, i0]; + A0(L) !== 5 && Y0(L, 9); + var i0 = p0; + } + }, P); + }), N(l, function(P, L, Q, i0, l0) { + var S0 = P ? P[1] : 1, T0 = L && L[1], rr = A0(Q), L0 = 0; + if (typeof rr == "number") + switch (rr) { + case 6: + ie(Q); + var B = 0, Z = [0, T0], p0 = [0, S0]; + L0 = 2; + break; + case 10: + ie(Q); + var b0 = 0, O0 = [0, T0], M0 = [0, S0]; + L0 = 1; + break; + case 83: + 1 - S0 && je(Q, 99), Y0(Q, 83); + var er = 0, yr = A0(Q); + if (typeof yr == "number") + switch (yr) { + case 4: + return l0; + case 6: + ie(Q); + var B = K$r, Z = W$r, p0 = [0, S0]; + L0 = 2, er = 1; + break; + case 98: + if (fu(Q)) + return l0; + break; + } + else if (yr[0] === 3) + return je(Q, ti), l0; + if (!er) { + var b0 = J$r, O0 = $$r, M0 = [0, S0]; + L0 = 1; + } + break; + } + else if (rr[0] === 3) { + T0 && je(Q, ti); + var vr = rr[1]; + return p7(m0, Z$r, 0, Q, i0, [0, R(R0, Q, i0, o(e, Q, l0), vr)]); + } + switch (L0) { + case 0: + return l0; + case 1: + var $0 = M0 ? S0 : 1, Er = O0 && O0[1], Mr = b0 && b0[1], Br = A0(Q), qr = 0; + if (typeof Br == "number" && Br === 14) { + var jr = ge0(Q), $r = jr[1], ne = Q[29][1], Qr = jr[2][1]; + if (ne) { + var be = ne[1]; + Q[29][1] = [0, [0, be[1], [0, [0, Qr, $r], be[2]]], ne[2]]; + } else + ue(Q, [0, $r, 89]); + var pe = [1, jr], oe = $r; + qr = 1; + } + if (!qr) + var ae = z7(Q), pe = [0, ae], oe = ae[1]; + var ce = yt(i0, oe), ge = 0; + l0[0] === 0 && l0[1][2][0] === 23 && pe[0] === 1 && (ue(Q, [0, ce, 90]), ge = 1); + var q0 = [0, o(e, Q, l0), pe, 0], Fr = Er ? [21, [0, q0, ce, Mr]] : [16, q0]; + return p7(m0, [0, $0], [0, Er], Q, i0, [0, [0, ce, Fr]]); + default: + var _ = p0 ? S0 : 1, k = Z && Z[1], I = B && B[1], U = _L(0, Q), Y = u(se[7], U), y0 = Pe(Q); + Y0(Q, 7); + var P0 = we(Q), I0 = yt(i0, y0), D = lr(0, [0, P0], 0), u0 = [0, o(e, Q, l0), [2, Y], D], X0 = k ? [21, [0, u0, I0, I]] : [16, u0]; + return p7(m0, [0, _], [0, k], Q, i0, [0, [0, I0, X0]]); + } + }), N(c0, function(P, L, Q, i0) { + var l0 = P ? P[1] : 1; + return o(e, L, p7(l, [0, l0], 0, L, Q, [0, i0])); + }), N(t0, function(P) { + return cr(0, function(L) { + var Q = u(Vn[1], L), i0 = Q[1], l0 = Q[2], S0 = cr(0, function(M0) { + var er = pr(M0); + Y0(M0, 15); + var yr = u(Vn[2], M0), vr = yr[1], $0 = pl([0, l0, [0, er, [0, yr[2], 0]]]); + if (A0(M0) === 4) + var Er = 0, Mr = 0; + else { + var Br = A0(M0), qr = 0; + if (typeof Br == "number") { + var jr = Br !== 98 ? 1 : 0; + if (!jr) { + var ne = jr; + qr = 1; + } + } + if (!qr) + var $r = mL(vr, re0(i0, M0)), ne = [0, ys($r, o(se[13], z$r, $r))]; + var Er = oi(M0, u(mn[3], M0)), Mr = ne; + } + var Qr = t2(0, M0), be = ur(Vn[4], i0, vr, Qr), ae = A0(Qr) === 86 ? be : eb(Qr, be), pe = u(mn[12], Qr), oe = pe[2], ce = pe[1]; + if (oe) + var ge = he0(Qr, oe), q0 = ce; + else + var ge = oe, q0 = o2(Qr, ce); + return [0, Mr, ae, vr, ge, q0, Er, $0]; + }, L), T0 = S0[2], rr = T0[3], L0 = T0[2], B = T0[1], Z = q1(L0), p0 = p7(Vn[5], L, i0, rr, 1, Z); + R(Vn[6], L, p0[2], B, L0); + var b0 = S0[1], O0 = lr([0, T0[7]], 0, 0); + return [8, [0, B, L0, p0[1], i0, rr, T0[4], T0[5], T0[6], O0, b0]]; + }, P); + }), N(o0, function(P, L, Q) { + switch (L) { + case 1: + gi(P, 45); + try { + var i0 = jv(Rv(Te(U$r, Q))), l0 = i0; + } catch (L0) { + if (L0 = Et(L0), L0[1] !== q7) + throw L0; + var l0 = ke(Te(H$r, Q)); + } + break; + case 2: + gi(P, 46); + try { + var S0 = ol(Q), l0 = S0; + } catch (L0) { + if (L0 = Et(L0), L0[1] !== q7) + throw L0; + var l0 = ke(Te(X$r, Q)); + } + break; + case 4: + try { + var T0 = ol(Q), l0 = T0; + } catch (L0) { + if (L0 = Et(L0), L0[1] !== q7) + throw L0; + var l0 = ke(Te(Y$r, Q)); + } + break; + default: + try { + var rr = jv(Rv(Q)), l0 = rr; + } catch (L0) { + if (L0 = Et(L0), L0[1] !== q7) + throw L0; + var l0 = ke(Te(V$r, Q)); + } + } + return Y0(P, [0, L, Q]), l0; + }), N(w0, function(P) { + var L = un(P); + return L !== 0 && Xt === It(P, L - 1 | 0) ? m7(P, 0, L - 1 | 0) : P; + }), N(_0, function(P, L, Q) { + if (2 <= L) { + var i0 = u(w0, Q); + try { + var l0 = ol(i0), S0 = l0; + } catch (Z) { + if (Z = Et(Z), Z[1] !== q7) + throw Z; + var S0 = ke(Te(B$r, i0)); + } + var T0 = S0; + } else { + var rr = u(w0, Q); + try { + var L0 = jv(Rv(rr)), B = L0; + } catch (p0) { + if (p0 = Et(p0), p0[1] !== q7) + throw p0; + var B = ke(Te(q$r, rr)); + } + var T0 = B; + } + return Y0(P, [1, L, Q]), T0; + }), N(E0, function(P) { + var L = Pe(P), Q = pr(P), i0 = A0(P); + if (typeof i0 == "number") + switch (i0) { + case 0: + var l0 = u(se[12], P); + return [1, [0, l0[1], [19, l0[2]]], l0[3]]; + case 4: + return [0, u(X, P)]; + case 6: + var S0 = cr(0, hr, P), T0 = S0[2]; + return [1, [0, S0[1], [0, T0[1]]], T0[2]]; + case 21: + return ie(P), [0, [0, L, [26, [0, lr([0, Q], [0, we(P)], 0)]]]]; + case 29: + return ie(P), [0, [0, L, [14, [0, 0, R$r, lr([0, Q], [0, we(P)], 0)]]]]; + case 40: + return [0, u(se[22], P)]; + case 98: + var rr = u(se[17], P), L0 = rr[2], B = rr[1], Z = Ni <= L0[1] ? [13, L0[2]] : [12, L0[2]]; + return [0, [0, B, Z]]; + case 30: + case 31: + ie(P); + var p0 = i0 === 31 ? 1 : 0, b0 = p0 ? G$r : M$r; + return [0, [0, L, [14, [0, [1, p0], b0, lr([0, Q], [0, we(P)], 0)]]]]; + case 74: + case 105: + return [0, u(Ar, P)]; + } + else + switch (i0[0]) { + case 0: + var O0 = i0[2], M0 = [2, ur(o0, P, i0[1], O0)]; + return [0, [0, L, [14, [0, M0, O0, lr([0, Q], [0, we(P)], 0)]]]]; + case 1: + var er = i0[2], yr = [3, ur(_0, P, i0[1], er)]; + return [0, [0, L, [14, [0, yr, er, lr([0, Q], [0, we(P)], 0)]]]]; + case 2: + var vr = i0[1]; + vr[4] && gi(P, 45), ie(P); + var $0 = [0, vr[2]], Er = lr([0, Q], [0, we(P)], 0); + return [0, [0, vr[1], [14, [0, $0, vr[3], Er]]]]; + case 3: + var Mr = o(b, P, i0[1]); + return [0, [0, Mr[1], [25, Mr[2]]]]; + } + if (G1(P)) { + var Br = o(se[13], 0, P); + return [0, [0, Br[1], [10, Br]]]; + } + St(0, P); + var qr = 0; + return typeof i0 != "number" && i0[0] === 6 && (ie(P), qr = 1), [0, [0, L, [14, [0, 0, j$r, lr([0, Q], [0, 0], 0)]]]]; + }), N(U0, function(P) { + return o(e, P, u(E0, P)); + }), N(b, function(P, L) { + var Q = L[3], i0 = L[2], l0 = L[1], S0 = pr(P); + Y0(P, [3, L]); + var T0 = [0, l0, [0, [0, i0[2], i0[1]], Q]]; + if (Q) + var rr = 0, L0 = [0, T0, 0], B = l0; + else + for (var Z = [0, T0, 0], p0 = 0; ; ) { + var b0 = u(se[7], P), O0 = [0, b0, p0], M0 = A0(P), er = 0; + if (typeof M0 == "number" && M0 === 1) { + Ku(P, 4); + var yr = A0(P), vr = 0; + if (typeof yr != "number" && yr[0] === 3) { + var $0 = yr[1], Er = $0[3], Mr = $0[2], Br = $0[1]; + ie(P); + var qr = [0, [0, Mr[2], Mr[1]], Er]; + k7(P); + var jr = [0, [0, Br, qr], Z]; + if (!Er) { + var Z = jr, p0 = O0; + continue; + } + var $r = ye(O0), ne = [0, Br, ye(jr), $r]; + er = 1, vr = 1; + } + if (!vr) + throw [0, Sn, P$r]; + } + if (!er) { + St(D$r, P); + var Qr = [0, b0[1], L$r], be = ye(O0), ae = ye([0, Qr, Z]), ne = [0, b0[1], ae, be]; + } + var rr = ne[3], L0 = ne[2], B = ne[1]; + break; + } + var pe = we(P), oe = yt(l0, B); + return [0, oe, [0, L0, rr, lr([0, S0], [0, pe], 0)]]; + }), N(R0, function(P, L, Q, i0) { + var l0 = $t(P); + function S0(L0, B) { + return o(Qe(L0, Di, 28), L0, B); + } + var T0 = o(l0[2], Q, S0), rr = o(b, P, i0); + return [0, yt(L, rr[1]), [24, [0, T0, rr, 0]]]; + }), N(X, function(P) { + var L = pr(P), Q = cr(0, function(T0) { + Y0(T0, 4); + var rr = Pe(T0), L0 = u(x, T0), B = A0(T0), Z = 0; + if (typeof B == "number") + if (B === 9) + var p0 = [0, ur(W0, T0, rr, [0, L0, 0])]; + else if (B === 86) + var p0 = [1, [0, L0, u(mn[9], T0), 0]]; + else + Z = 1; + else + Z = 1; + if (Z) + var p0 = [0, L0]; + return Y0(T0, 5), p0; + }, P), i0 = Q[2], l0 = we(P), S0 = i0[0] === 0 ? i0[1] : [0, Q[1], [27, i0[1]]]; + return ur(s0, [0, L], [0, l0], S0); + }), N(s0, function(P, L, Q) { + var i0 = Q[2], l0 = P && P[1], S0 = L && L[1]; + function T0(Je) { + return y7(Je, lr([0, l0], [0, S0], 0)); + } + function rr(Je) { + return JD(Je, lr([0, l0], [0, S0], 0)); + } + switch (i0[0]) { + case 0: + var L0 = i0[1], B = rr(L0[2]), Ne = [0, [0, L0[1], B]]; + break; + case 1: + var Z = i0[1], p0 = Z[10], b0 = T0(Z[9]), Ne = [1, [0, Z[1], Z[2], Z[3], Z[4], Z[5], Z[6], Z[7], Z[8], b0, p0]]; + break; + case 2: + var O0 = i0[1], M0 = T0(O0[4]), Ne = [2, [0, O0[1], O0[2], O0[3], M0]]; + break; + case 3: + var er = i0[1], yr = T0(er[4]), Ne = [3, [0, er[1], er[2], er[3], yr]]; + break; + case 4: + var vr = i0[1], $0 = T0(vr[4]), Ne = [4, [0, vr[1], vr[2], vr[3], $0]]; + break; + case 5: + var Er = i0[1], Mr = T0(Er[7]), Ne = [5, [0, Er[1], Er[2], Er[3], Er[4], Er[5], Er[6], Mr]]; + break; + case 7: + var Br = i0[1], qr = T0(Br[4]), Ne = [7, [0, Br[1], Br[2], Br[3], qr]]; + break; + case 8: + var jr = i0[1], $r = jr[10], ne = T0(jr[9]), Ne = [8, [0, jr[1], jr[2], jr[3], jr[4], jr[5], jr[6], jr[7], jr[8], ne, $r]]; + break; + case 10: + var Qr = i0[1], be = Qr[2], ae = T0(be[2]), Ne = [10, [0, Qr[1], [0, be[1], ae]]]; + break; + case 11: + var pe = i0[1], oe = T0(pe[2]), Ne = [11, [0, pe[1], oe]]; + break; + case 12: + var ce = i0[1], ge = T0(ce[4]), Ne = [12, [0, ce[1], ce[2], ce[3], ge]]; + break; + case 13: + var q0 = i0[1], Fr = T0(q0[4]), Ne = [13, [0, q0[1], q0[2], q0[3], Fr]]; + break; + case 14: + var _ = i0[1], k = T0(_[3]), Ne = [14, [0, _[1], _[2], k]]; + break; + case 15: + var I = i0[1], U = T0(I[4]), Ne = [15, [0, I[1], I[2], I[3], U]]; + break; + case 16: + var Y = i0[1], y0 = T0(Y[3]), Ne = [16, [0, Y[1], Y[2], y0]]; + break; + case 17: + var P0 = i0[1], I0 = T0(P0[3]), Ne = [17, [0, P0[1], P0[2], I0]]; + break; + case 18: + var D = i0[1], u0 = T0(D[4]), Ne = [18, [0, D[1], D[2], D[3], u0]]; + break; + case 19: + var X0 = i0[1], J0 = rr(X0[2]), Ne = [19, [0, X0[1], J0]]; + break; + case 20: + var ir = i0[1], Q0 = ir[1], F0 = ir[3], Sr = ir[2], mr = T0(Q0[4]), Ne = [20, [0, [0, Q0[1], Q0[2], Q0[3], mr], Sr, F0]]; + break; + case 21: + var Cr = i0[1], sr = Cr[1], Pr = Cr[3], K0 = Cr[2], Ur = T0(sr[3]), Ne = [21, [0, [0, sr[1], sr[2], Ur], K0, Pr]]; + break; + case 22: + var h0 = i0[1], Kr = T0(h0[2]), Ne = [22, [0, h0[1], Kr]]; + break; + case 23: + var Ne = [23, [0, T0(i0[1][1])]]; + break; + case 24: + var re = i0[1], xe = T0(re[3]), Ne = [24, [0, re[1], re[2], xe]]; + break; + case 25: + var Re = i0[1], ve = T0(Re[3]), Ne = [25, [0, Re[1], Re[2], ve]]; + break; + case 26: + var Ne = [26, [0, T0(i0[1][1])]]; + break; + case 27: + var Ie = i0[1], Ge = T0(Ie[3]), Ne = [27, [0, Ie[1], Ie[2], Ge]]; + break; + case 28: + var Me = i0[1], an = T0(Me[3]), Ne = [28, [0, Me[1], Me[2], an]]; + break; + case 29: + var We = i0[1], Ae = T0(We[4]), Ne = [29, [0, We[1], We[2], We[3], Ae]]; + break; + case 30: + var cn = i0[1], rn = cn[4], kn = cn[3], vn = T0(cn[2]), Ne = [30, [0, cn[1], vn, kn, rn]]; + break; + default: + var Ne = i0; + } + return [0, Q[1], Ne]; + }), N(hr, function(P) { + var L = pr(P); + Y0(P, 6); + for (var Q = [0, 0, t[3]]; ; ) { + var i0 = Q[2], l0 = Q[1], S0 = A0(P); + if (typeof S0 == "number") { + var T0 = 0; + if (13 <= S0) + Pn === S0 && (T0 = 1); + else if (7 <= S0) + switch (S0 - 7 | 0) { + case 2: + var rr = Pe(P); + ie(P); + var Q = [0, [0, [2, rr], l0], i0]; + continue; + case 5: + var L0 = pr(P), B = cr(0, function(Qr) { + ie(Qr); + var be = u(i, Qr); + return be[0] === 0 ? [0, be[1], t[3]] : [0, be[1], be[2]]; + }, P), Z = B[2], p0 = Z[2], b0 = B[1], O0 = lr([0, L0], 0, 0), M0 = [1, [0, b0, [0, Z[1], O0]]], er = A0(P) === 7 ? 1 : 0, yr = 0; + if (!er && Yn(1, P) === 7) { + var vr = [0, p0[1], [0, [0, b0, 65], p0[2]]]; + yr = 1; + } + if (!yr) + var vr = p0; + 1 - er && Y0(P, 9); + var Q = [0, [0, M0, l0], o(t[5], vr, i0)]; + continue; + case 0: + T0 = 1; + break; + } + if (T0) { + var $0 = u(t[6], i0), Er = ye(l0), Mr = pr(P); + return Y0(P, 7), [0, [0, Er, yu([0, L], [0, we(P)], Mr, 0)], $0]; + } + } + var Br = u(i, P); + if (Br[0] === 0) + var qr = t[3], jr = Br[1]; + else + var qr = Br[2], jr = Br[1]; + A0(P) !== 7 && Y0(P, 9); + var Q = [0, [0, [0, jr], l0], o(t[5], qr, i0)]; + } + }), N(Ar, function(P) { + Ku(P, 5); + var L = Pe(P), Q = pr(P), i0 = A0(P), l0 = 0; + if (typeof i0 != "number" && i0[0] === 5) { + var S0 = i0[3], T0 = i0[2]; + ie(P); + var rr = we(P), L0 = rr, B = S0, Z = T0, p0 = Te(O$r, Te(T0, Te(T$r, S0))); + l0 = 1; + } + if (!l0) { + St(I$r, P); + var L0 = 0, B = A$r, Z = N$r, p0 = C$r; + } + k7(P); + var b0 = $n(un(B)), O0 = un(B) - 1 | 0, M0 = 0; + if (!(O0 < 0)) + for (var er = M0; ; ) { + var yr = Vr(B, er), vr = yr - 100 | 0, $0 = 0; + if (!(21 < vr >>> 0)) + switch (vr) { + case 0: + case 3: + case 5: + case 9: + case 15: + case 17: + case 21: + qi(b0, yr), $0 = 1; + break; + } + var Er = er + 1 | 0; + if (O0 !== er) { + var er = Er; + continue; + } + break; + } + var Mr = Mt(b0); + return n0(Mr, B) && je(P, [13, B]), [0, L, [14, [0, [4, [0, Z, Mr]], p0, lr([0, Q], [0, L0], 0)]]]; + }); + function fe(P, L) { + if (typeof L == "number") { + var Q = 0; + if (61 <= L) { + var i0 = L - 64 | 0; + 27 < i0 >>> 0 ? i0 === 43 && (Q = 1) : 25 < (i0 - 1 | 0) >>> 0 && (Q = 1); + } else { + var l0 = L + _y | 0; + 17 < l0 >>> 0 ? -1 <= l0 && (Q = 1) : l0 === 13 && (Q = 1); + } + if (Q) + return 0; + } + throw Bs; + } + function v0(P) { + var L = A0(P); + if (typeof L == "number" && !L) { + var Q = o(se[16], 1, P); + return [0, [0, Q[1]], Q[2]]; + } + return [0, [1, u(se[10], P)], 0]; + } + return N(or, function(P) { + var L = T9(fe, P), Q = Pe(L); + if (Yn(1, L) === 11) + var l0 = 0, S0 = 0; + else + var i0 = u(Vn[1], L), l0 = i0[2], S0 = i0[1]; + var T0 = cr(0, function(ne) { + var Qr = oi(ne, u(mn[3], ne)); + if (G1(ne) && Qr === 0) { + var be = o(se[13], F$r, ne), ae = be[1], pe = [0, ae, [0, [0, ae, [2, [0, be, [0, j1(ne)], 0]]], 0]]; + return [0, Qr, [0, ae, [0, 0, [0, pe, 0], 0, 0]], [0, [0, ae[1], ae[3], ae[3]]], 0]; + } + var oe = ur(Vn[4], ne[18], ne[17], ne), ce = u2(1, ne), ge = u(mn[12], ce); + return [0, Qr, oe, ge[1], ge[2]]; + }, L), rr = T0[2], L0 = rr[2], B = L0[2], Z = 0; + if (!B[1]) { + var p0 = 0; + if (!B[3] && B[2] && (p0 = 1), !p0) { + var b0 = ie0(L); + Z = 1; + } + } + if (!Z) + var b0 = L; + var O0 = L0[2], M0 = O0[1], er = M0 ? (ue(b0, [0, M0[1][1], Zc]), [0, L0[1], [0, 0, O0[2], O0[3], O0[4]]]) : L0, yr = q1(er), vr = x7(b0), $0 = vr && (A0(b0) === 11 ? 1 : 0); + $0 && je(b0, 60), Y0(b0, 11); + var Er = fe0(ie0(b0), S0, 0, yr), Mr = cr(0, v0, Er), Br = Mr[2]; + R(Vn[6], Er, Br[2], 0, er); + var qr = yt(Q, Mr[1]), jr = T0[1], $r = lr([0, l0], 0, 0); + return [0, [0, qr, [1, [0, 0, er, Br[1], S0, 0, rr[4], rr[3], rr[1], $r, jr]]]]; + }), N(W0, function(P, L, Q) { + return cr([0, L], function(i0) { + for (var l0 = Q; ; ) { + var S0 = A0(i0); + if (typeof S0 == "number" && S0 === 9) { + ie(i0); + var l0 = [0, u(x, i0), l0]; + continue; + } + return [22, [0, ye(l0), 0]]; + } + }, P); + }), [0, x, i, T, n, K, o0, W0]; + }(R9), Us = function(t) { + function n(e0) { + var x0 = pr(e0); + ie(e0); + var l = lr([0, x0], 0, 0), c0 = u(ci[5], e0), t0 = x7(e0) ? rb(e0) : N9(e0); + function o0(w0, _0) { + return o(Qe(w0, Di, 80), w0, _0); + } + return [0, o(t0[2], c0, o0), l]; + } + function e(e0) { + var x0 = e0[27][2]; + if (x0) + for (var l = 0; ; ) { + var c0 = A0(e0); + if (typeof c0 == "number" && c0 === 13) { + var l = [0, cr(0, n, e0), l]; + continue; + } + return ye(l); + } + return x0; + } + function i(e0, x0) { + var l = e0 && e0[1], c0 = pr(x0), t0 = A0(x0); + if (typeof t0 == "number") + switch (t0) { + case 6: + var o0 = cr(0, function(Jr) { + var ar = pr(Jr); + Y0(Jr, 6); + var _r = Kl(0, Jr), Ir = u(se[10], _r); + return Y0(Jr, 7), [0, Ir, lr([0, ar], [0, we(Jr)], 0)]; + }, x0), w0 = o0[1]; + return [0, w0, [3, [0, w0, o0[2]]]]; + case 14: + if (l) { + var _0 = ge0(x0), E0 = x0[29][1], U0 = _0[2][1]; + if (E0) { + var b = E0[1], R0 = E0[2], X = b[2], s0 = [0, [0, o(Mu[4], U0, b[1]), X], R0]; + x0[29][1] = s0; + } else + ke(Ujr); + return [0, _0[1], [2, _0]]; + } + var hr = cr(0, function(Jr) { + return ie(Jr), [1, z7(Jr)]; + }, x0), Ar = hr[1]; + return ue(x0, [0, Ar, 89]), [0, Ar, hr[2]]; + } + else + switch (t0[0]) { + case 0: + var or = t0[2], W0 = Pe(x0), Lr = [2, ur(ci[6], x0, t0[1], or)]; + return [0, W0, [0, [0, W0, [0, Lr, or, lr([0, c0], [0, we(x0)], 0)]]]]; + case 2: + var Tr = t0[1], Hr = Tr[4], Or = Tr[3], fr = Tr[2], Rr = Tr[1]; + return Hr && gi(x0, 45), Y0(x0, [2, [0, Rr, fr, Or, Hr]]), [0, Rr, [0, [0, Rr, [0, [0, fr], Or, lr([0, c0], [0, we(x0)], 0)]]]]; + } + var Wr = z7(x0); + return [0, Wr[1], [1, Wr]]; + } + function x(e0, x0, l) { + var c0 = u(Vn[2], e0), t0 = c0[1], o0 = c0[2], w0 = i([0, x0], e0), _0 = w0[1], E0 = 0, U0 = Xi(e0, w0[2]); + return [0, U0, cr(0, function(b) { + var R0 = t2(1, b), X = cr(0, function(Tr) { + var Hr = ur(Vn[4], 0, 0, Tr), Or = 0, fr = A0(Tr) === 86 ? Hr : eb(Tr, Hr); + if (l) { + var Rr = fr[2], Wr = 0; + if (Rr[1]) + ue(Tr, [0, _0, j7]), Wr = 1; + else { + var Jr = 0; + !Rr[2] && !Rr[3] && (Wr = 1, Jr = 1), Jr || ue(Tr, [0, _0, 80]); + } + } else { + var ar = fr[2]; + if (ar[1]) + ue(Tr, [0, _0, Yt]); + else { + var _r = ar[2], Ir = 0; + (!_r || _r[2] || ar[3]) && (Ir = 1), Ir && (ar[3] ? ue(Tr, [0, _0, 81]) : ue(Tr, [0, _0, 81])); + } + } + return [0, Or, fr, o2(Tr, u(mn[10], Tr))]; + }, R0), s0 = X[2], hr = s0[2], Ar = q1(hr), or = p7(Vn[5], R0, E0, t0, 0, Ar); + R(Vn[6], R0, or[2], 0, hr); + var W0 = X[1], Lr = lr([0, o0], 0, 0); + return [0, 0, hr, or[1], E0, t0, 0, s0[3], s0[1], Lr, W0]; + }, e0)]; + } + function c(e0) { + var x0 = u(ci[2], e0); + return x0[0] === 0 ? [0, x0[1], t[3]] : [0, x0[1], x0[2]]; + } + function s(e0, x0) { + switch (x0[0]) { + case 0: + var l = x0[1], c0 = l[1]; + return ue(e0, [0, c0, 95]), [0, c0, [14, l[2]]]; + case 1: + var t0 = x0[1], o0 = t0[2][1], w0 = t0[1], _0 = 0; + return kL(o0) && n0(o0, KQr) && n0(o0, WQr) && (ue(e0, [0, w0, 2]), _0 = 1), !_0 && f2(o0) && V7(e0, [0, w0, 55]), [0, w0, [10, t0]]; + case 2: + return ke(JQr); + default: + var E0 = x0[1][2][1]; + return ue(e0, [0, E0[1], 96]), E0; + } + } + function p(e0, x0, l) { + function c0(o0) { + var w0 = t2(1, o0), _0 = cr(0, function(hr) { + var Ar = oi(hr, u(mn[3], hr)); + if (e0) + if (x0) + var or = 1, W0 = 1; + else + var or = hr[18], W0 = 0; + else if (x0) + var or = 0, W0 = 1; + else + var or = 0, W0 = 0; + var Lr = ur(Vn[4], or, W0, hr), Tr = A0(hr) === 86 ? Lr : eb(hr, Lr); + return [0, Ar, Tr, o2(hr, u(mn[10], hr))]; + }, w0), E0 = _0[2], U0 = E0[2], b = q1(U0), R0 = p7(Vn[5], w0, e0, x0, 0, b); + R(Vn[6], w0, R0[2], 0, U0); + var X = _0[1], s0 = lr([0, l], 0, 0); + return [0, 0, U0, R0[1], e0, x0, 0, E0[3], E0[1], s0, X]; + } + var t0 = 0; + return function(o0) { + return cr(t0, c0, o0); + }; + } + function y(e0) { + return Y0(e0, 86), c(e0); + } + function T(e0, x0, l, c0, t0, o0) { + var w0 = cr([0, x0], function(E0) { + if (!c0 && !t0) { + var U0 = A0(E0); + if (typeof U0 == "number") { + var b = 0; + if (86 <= U0) { + if (U0 === 98) + b = 1; + else if (!(87 <= U0)) { + var R0 = y(E0); + return [0, [0, l, R0[1], 0], R0[2]]; + } + } else { + if (U0 === 82) { + if (l[0] === 1) + var X = l[1], s0 = Pe(E0), hr = function(Rr) { + var Wr = pr(Rr); + Y0(Rr, 82); + var Jr = we(Rr), ar = o(se[19], Rr, [0, X[1], [10, X]]), _r = u(se[10], Rr); + return [2, [0, 0, ar, _r, lr([0, Wr], [0, Jr], 0)]]; + }, Ar = cr([0, X[1]], hr, E0), or = [0, Ar, [0, [0, [0, s0, [10, Ml(zQr)]], 0], 0]]; + else + var or = y(E0); + return [0, [0, l, or[1], 1], or[2]]; + } + if (!(10 <= U0)) + switch (U0) { + case 4: + b = 1; + break; + case 1: + case 9: + var W0 = [0, l, s(E0, l), 1]; + return [0, W0, t[3]]; + } + } + if (b) { + var Lr = Xi(E0, l), Tr = [1, Lr, u(p(c0, t0, o0), E0)]; + return [0, Tr, t[3]]; + } + } + var Hr = [0, l, s(E0, l), 1]; + return [0, Hr, t[3]]; + } + var Or = Xi(E0, l), fr = [1, Or, u(p(c0, t0, o0), E0)]; + return [0, fr, t[3]]; + }, e0), _0 = w0[2]; + return [0, [0, [0, w0[1], _0[1]]], _0[2]]; + } + function E(e0) { + var x0 = cr(0, function(c0) { + var t0 = pr(c0); + Y0(c0, 0); + for (var o0 = 0, w0 = [0, 0, t[3]]; ; ) { + var _0 = w0[2], E0 = w0[1], U0 = A0(c0); + if (typeof U0 == "number") { + var b = 0; + if ((U0 === 1 || Pn === U0) && (b = 1), b) { + var R0 = o0 ? [0, _0[1], [0, [0, o0[1], 98], _0[2]]] : _0, X = u(t[6], R0), s0 = ye(E0), hr = pr(c0); + return Y0(c0, 1), [0, [0, s0, yu([0, t0], [0, we(c0)], hr, 0)], X]; + } + } + if (A0(c0) === 12) + var Ar = pr(c0), or = cr(0, function(y0) { + return Y0(y0, 12), c(y0); + }, c0), W0 = or[2], Lr = W0[2], Tr = lr([0, Ar], 0, 0), Hr = [0, [1, [0, or[1], [0, W0[1], Tr]]], Lr]; + else { + var Or = Pe(c0), fr = Yn(1, c0), Rr = 0; + if (typeof fr == "number") { + var Wr = 0; + if (86 <= fr) + fr !== 98 && 87 <= fr && (Wr = 1); + else if (fr !== 82) + if (10 <= fr) + Wr = 1; + else + switch (fr) { + case 1: + case 4: + case 9: + break; + default: + Wr = 1; + } + if (!Wr) { + var ar = 0, _r = 0; + Rr = 1; + } + } + if (!Rr) + var Jr = u(Vn[1], c0), ar = Jr[2], _r = Jr[1]; + var Ir = u(Vn[2], c0), fe = Ir[1], v0 = on(ar, Ir[2]), P = A0(c0), L = 0; + if (!_r && !fe && typeof P != "number" && P[0] === 4) { + var Q = P[3], i0 = 0; + if (n0(Q, YQr)) + if (n0(Q, VQr)) + i0 = 1; + else { + var l0 = pr(c0), S0 = i(0, c0)[2], T0 = A0(c0), rr = 0; + if (typeof T0 == "number") { + var L0 = 0; + if (86 <= T0) + T0 !== 98 && 87 <= T0 && (L0 = 1); + else if (T0 !== 82) + if (10 <= T0) + L0 = 1; + else + switch (T0) { + case 1: + case 4: + case 9: + break; + default: + L0 = 1; + } + if (!L0) { + var B = T(c0, Or, S0, 0, 0, 0); + rr = 1; + } + } + if (!rr) { + Xi(c0, S0); + var Z = t[3], p0 = cr([0, Or], function(I0) { + return x(I0, 0, 0); + }, c0), b0 = p0[2], O0 = lr([0, l0], 0, 0), B = [0, [0, [0, p0[1], [3, b0[1], b0[2], O0]]], Z]; + } + var M0 = B; + } + else { + var er = pr(c0), yr = i(0, c0)[2], vr = A0(c0), $0 = 0; + if (typeof vr == "number") { + var Er = 0; + if (86 <= vr) + vr !== 98 && 87 <= vr && (Er = 1); + else if (vr !== 82) + if (10 <= vr) + Er = 1; + else + switch (vr) { + case 1: + case 4: + case 9: + break; + default: + Er = 1; + } + if (!Er) { + var Mr = T(c0, Or, yr, 0, 0, 0); + $0 = 1; + } + } + if (!$0) { + Xi(c0, yr); + var Br = t[3], qr = cr([0, Or], function(D) { + return x(D, 0, 1); + }, c0), jr = qr[2], $r = lr([0, er], 0, 0), Mr = [0, [0, [0, qr[1], [2, jr[1], jr[2], $r]]], Br]; + } + var M0 = Mr; + } + if (!i0) { + var ne = M0; + L = 1; + } + } + if (!L) + var ne = T(c0, Or, i(0, c0)[2], _r, fe, v0); + var Hr = ne; + } + var Qr = Hr[1], be = 0; + if (Qr[0] === 1 && A0(c0) === 9) { + var ae = [0, Pe(c0)]; + be = 1; + } + if (!be) + var ae = 0; + var pe = o(t[5], Hr[2], _0), oe = A0(c0), ce = 0; + if (typeof oe == "number") { + var ge = oe - 2 | 0, q0 = 0; + if (Xt < ge >>> 0 ? T7 < (ge + 1 | 0) >>> 0 && (q0 = 1) : ge === 7 ? ie(c0) : q0 = 1, !q0) { + var Fr = pe; + ce = 1; + } + } + if (!ce) { + var _ = aL(dRr, 9), k = le0([0, _], A0(c0)), I = [0, Pe(c0), k]; + xu(c0, 8); + var Fr = o(t[4], I, pe); + } + var o0 = ae, w0 = [0, [0, Qr, E0], Fr]; + } + }, e0), l = x0[2]; + return [0, x0[1], l[1], l[2]]; + } + function d(e0, x0, l, c0) { + var t0 = l[2][1], o0 = l[1]; + if (qn(t0, XQr)) + return ue(e0, [0, o0, [21, t0, 0, QY === c0 ? 1 : 0, 1]]), x0; + var w0 = o(L9[32], t0, x0); + if (w0) { + var _0 = w0[1], E0 = 0; + return SE === c0 ? Fh === _0 && (E0 = 1) : Fh === c0 && SE === _0 && (E0 = 1), E0 || ue(e0, [0, o0, [20, t0]]), ur(L9[4], t0, KX, x0); + } + return ur(L9[4], t0, c0, x0); + } + function w(e0, x0) { + return cr(0, function(l) { + var c0 = x0 && pr(l); + Y0(l, 52); + for (var t0 = 0; ; ) { + var o0 = [0, cr(0, function(E0) { + var U0 = u(mn[2], E0); + if (A0(E0) === 98) + var b = $t(E0), R0 = function(s0, hr) { + return o(Qe(s0, Nv, 81), s0, hr); + }, X = o(b[2], U0, R0); + else + var X = U0; + return [0, X, u(mn[4], E0)]; + }, l), t0], w0 = A0(l); + if (typeof w0 == "number" && w0 === 9) { + Y0(l, 9); + var t0 = o0; + continue; + } + var _0 = ye(o0); + return [0, _0, lr([0, c0], 0, 0)]; + } + }, e0); + } + function G(e0, x0) { + return x0 && ue(e0, [0, x0[1][1], 7]); + } + function A(e0, x0) { + return x0 && ue(e0, [0, x0[1], 68]); + } + function S(e0, x0, l, c0, t0, o0, w0, _0, E0, U0) { + for (; ; ) { + var b = A0(e0), R0 = 0; + if (typeof b == "number") { + var X = b - 1 | 0, s0 = 0; + if (7 < X >>> 0) { + var hr = X - 81 | 0; + if (4 < hr >>> 0) + s0 = 1; + else + switch (hr) { + case 3: + St(0, e0), ie(e0); + continue; + case 0: + case 4: + break; + default: + s0 = 1; + } + } else + 5 < (X - 1 | 0) >>> 0 || (s0 = 1); + !s0 && !t0 && !o0 && (R0 = 1); + } + if (!R0) { + var Ar = A0(e0), or = 0; + if (typeof Ar == "number") { + var W0 = 0; + if (Ar !== 4 && Ar !== 98 && (or = 1, W0 = 1), !W0) + var Tr = 0; + } else + or = 1; + if (or) + var Lr = x2(e0), Tr = Lr && 1; + if (!Tr) { + A(e0, _0), G(e0, E0); + var Hr = 0; + if (!w0) { + var Or = 0; + switch (c0[0]) { + case 0: + var fr = c0[1][2][1], Rr = 0; + typeof fr != "number" && fr[0] === 0 && (n0(fr[1], jQr) && (Or = 1), Rr = 1), Rr || (Or = 1); + break; + case 1: + n0(c0[1][2][1], GQr) && (Or = 1); + break; + default: + Or = 1; + } + if (!Or) { + var Wr = t2(2, e0), Jr = 0; + Hr = 1; + } + } + if (!Hr) + var Wr = t2(1, e0), Jr = 1; + var ar = Xi(Wr, c0), _r = cr(0, function(S0) { + var T0 = cr(0, function(p0) { + var b0 = oi(p0, u(mn[3], p0)); + if (t0) + if (o0) + var O0 = 1, M0 = 1; + else + var O0 = p0[18], M0 = 0; + else if (o0) + var O0 = 0, M0 = 1; + else + var O0 = 0, M0 = 0; + var er = ur(Vn[4], O0, M0, p0), yr = A0(p0) === 86 ? er : eb(p0, er), vr = yr[2], $0 = vr[1], Er = 0; + if ($0 && Jr === 0) { + ue(p0, [0, $0[1][1], is]); + var Mr = [0, yr[1], [0, 0, vr[2], vr[3], vr[4]]]; + Er = 1; + } + if (!Er) + var Mr = yr; + return [0, b0, Mr, o2(p0, u(mn[10], p0))]; + }, S0), rr = T0[2], L0 = rr[2], B = q1(L0), Z = p7(Vn[5], S0, t0, o0, 0, B); + return R(Vn[6], S0, Z[2], 0, L0), [0, 0, L0, Z[1], t0, o0, 0, rr[3], rr[1], 0, T0[1]]; + }, Wr), Ir = [0, Jr, ar, _r, w0, l, lr([0, U0], 0, 0)]; + return [0, [0, yt(x0, _r[1]), Ir]]; + } + } + var fe = cr([0, x0], function(S0) { + var T0 = u(mn[10], S0), rr = A0(S0); + if (_0) { + var L0 = 0; + if (typeof rr == "number" && rr === 82) { + je(S0, 69), ie(S0); + var B = 0; + } else + L0 = 1; + if (L0) + var B = 0; + } else { + var Z = 0; + if (typeof rr == "number" && rr === 82) { + ie(S0); + var p0 = t2(1, S0), B = [0, u(se[7], p0)]; + } else + Z = 1; + if (Z) + var B = 1; + } + var b0 = A0(S0), O0 = 0; + if (typeof b0 == "number" && !(9 <= b0)) + switch (b0) { + case 8: + ie(S0); + var M0 = A0(S0), er = 0; + if (typeof M0 == "number") { + var yr = 0; + if (M0 !== 1 && Pn !== M0 && (er = 1, yr = 1), !yr) + var $0 = we(S0); + } else + er = 1; + if (er) + var vr = x7(S0), $0 = vr && Ms(S0); + var Er = [0, c0, T0, B, $0]; + O0 = 1; + break; + case 4: + case 6: + St(0, S0); + var Er = [0, c0, T0, B, 0]; + O0 = 1; + break; + } + if (!O0) { + var Mr = A0(S0), Br = 0; + if (typeof Mr == "number") { + var qr = 0; + if (Mr !== 1 && Pn !== Mr && (Br = 1, qr = 1), !qr) + var jr = [0, 0, function(q0, Fr) { + return q0; + }]; + } else + Br = 1; + if (Br) + var jr = x7(S0) ? rb(S0) : N9(S0); + if (typeof B == "number") + if (T0[0] === 0) + var $r = function(_, k) { + return o(Qe(_, qY, 83), _, k); + }, be = B, ae = T0, pe = o(jr[2], c0, $r); + else + var ne = function(_, k) { + return o(Qe(_, OE, 84), _, k); + }, be = B, ae = [1, o(jr[2], T0[1], ne)], pe = c0; + else + var Qr = function(ge, q0) { + return o(Qe(ge, Di, 85), ge, q0); + }, be = [0, o(jr[2], B[1], Qr)], ae = T0, pe = c0; + var Er = [0, pe, ae, be, 0]; + } + var oe = lr([0, U0], [0, Er[4]], 0); + return [0, Er[1], Er[2], Er[3], oe]; + }, e0), v0 = fe[2], P = v0[4], L = v0[3], Q = v0[2], i0 = v0[1], l0 = fe[1]; + return i0[0] === 2 ? [2, [0, l0, [0, i0[1], L, Q, w0, E0, P]]] : [1, [0, l0, [0, i0, L, Q, w0, E0, P]]]; + } + } + function M(e0, x0) { + var l = Yn(e0, x0); + if (typeof l == "number") { + var c0 = 0; + if (86 <= l) + (l === 98 || !(87 <= l)) && (c0 = 1); + else if (l === 82) + c0 = 1; + else if (!(9 <= l)) + switch (l) { + case 1: + case 4: + case 8: + c0 = 1; + break; + } + if (c0) + return 1; + } + return 0; + } + var K = 0; + function V(e0) { + return M(K, e0); + } + function f0(e0, x0, l, c0) { + var t0 = e0 && e0[1], o0 = _s(1, x0), w0 = on(t0, e(o0)), _0 = pr(o0); + Y0(o0, 40); + var E0 = F9(1, o0), U0 = A0(E0), b = 0; + if (l && typeof U0 == "number") { + var R0 = 0; + if (52 <= U0 ? U0 !== 98 && 53 <= U0 && (R0 = 1) : U0 !== 41 && U0 && (R0 = 1), !R0) { + var Ar = 0; + b = 1; + } + } + if (!b) + if (G1(o0)) + var X = o(se[13], 0, E0), s0 = $t(o0), hr = function(v0, P) { + return o(Qe(v0, Nv, 88), v0, P); + }, Ar = [0, o(s0[2], X, hr)]; + else { + be0(o0, NQr); + var Ar = [0, [0, Pe(o0), CQr]]; + } + var or = u(mn[3], o0); + if (or) + var W0 = $t(o0), Lr = function(v0, P) { + return o(Qe(v0, bF, 86), v0, P); + }, Tr = [0, o(W0[2], or[1], Lr)]; + else + var Tr = or; + var Hr = pr(o0), Or = xu(o0, 41); + if (Or) + var fr = cr(0, function(v0) { + var P = mL(0, v0), L = u(ci[5], P); + if (A0(v0) === 98) + var Q = $t(v0), i0 = function(T0, rr) { + return o(Qe(T0, Di, 82), T0, rr); + }, l0 = o(Q[2], L, i0); + else + var l0 = L; + var S0 = u(mn[4], v0); + return [0, l0, S0, lr([0, Hr], 0, 0)]; + }, o0), Rr = fr[1], Wr = $t(o0), Jr = function(v0, P) { + return ur(Qe(v0, -663447790, 87), v0, Rr, P); + }, ar = [0, [0, Rr, o(Wr[2], fr[2], Jr)]]; + else + var ar = Or; + var _r = A0(o0) === 52 ? 1 : 0; + if (_r) { + 1 - fu(o0) && je(o0, 16); + var Ir = [0, ke0(o0, w(o0, 1))]; + } else + var Ir = _r; + var fe = cr(0, function(v0) { + var P = pr(v0); + if (xu(v0, 0)) { + v0[29][1] = [0, [0, Mu[1], 0], v0[29][1]]; + for (var L = 0, Q = L9[1], i0 = 0; ; ) { + var l0 = A0(v0); + if (typeof l0 == "number") { + var S0 = l0 - 2 | 0; + if (Xt < S0 >>> 0) { + if (!(T7 < (S0 + 1 | 0) >>> 0)) { + var T0 = ye(i0), rr = function(ou, Bu) { + return u(ml(function(K7) { + return 1 - o(Mu[3], K7[1], ou); + }), Bu); + }, L0 = v0[29][1]; + if (L0) { + var B = L0[1], Z = B[1]; + if (L0[2]) { + var p0 = L0[2], b0 = rr(Z, B[2]), O0 = bl(p0), M0 = az(p0), er = on(O0[2], b0); + v0[29][1] = [0, [0, O0[1], er], M0]; + } else { + var yr = rr(Z, B[2]); + Du(function(ou) { + return ue(v0, [0, ou[2], [22, ou[1]]]); + }, yr), v0[29][1] = 0; + } + } else + ke(Hjr); + Y0(v0, 1); + var vr = A0(v0), $0 = 0; + if (!c0) { + var Er = 0; + if (typeof vr == "number" && (vr === 1 || Pn === vr) && (Er = 1), !Er) { + var Mr = x7(v0); + if (Mr) { + var Br = Ms(v0); + $0 = 1; + } else { + var Br = Mr; + $0 = 1; + } + } + } + if (!$0) + var Br = we(v0); + return [0, T0, lr([0, P], [0, Br], 0)]; + } + } else if (S0 === 6) { + Y0(v0, 8); + continue; + } + } + var qr = Pe(v0), jr = e(v0), $r = A0(v0), ne = 0; + if (typeof $r == "number" && $r === 60 && !M(1, v0)) { + var Qr = [0, Pe(v0)], be = pr(v0); + ie(v0); + var ae = be, pe = Qr; + ne = 1; + } + if (!ne) + var ae = 0, pe = 0; + var oe = Yn(1, v0) !== 4 ? 1 : 0; + if (oe) + var ce = Yn(1, v0) !== 98 ? 1 : 0, ge = ce && (A0(v0) === 42 ? 1 : 0); + else + var ge = oe; + if (ge) { + var q0 = pr(v0); + ie(v0); + var Fr = q0; + } else + var Fr = ge; + var _ = A0(v0) === 64 ? 1 : 0; + if (_) + var k = 1 - M(1, v0), I = k && 1 - Jl(1, v0); + else + var I = _; + if (I) { + var U = pr(v0); + ie(v0); + var Y = U; + } else + var Y = I; + var y0 = u(Vn[2], v0), P0 = y0[1], I0 = ur(Vn[3], v0, I, P0), D = 0; + if (!P0 && I0) { + var u0 = u(Vn[2], v0), X0 = u0[2], J0 = u0[1]; + D = 1; + } + if (!D) + var X0 = y0[2], J0 = P0; + var ir = pl([0, ae, [0, Fr, [0, Y, [0, X0, 0]]]]), Q0 = A0(v0), F0 = 0; + if (!I && !J0 && typeof Q0 != "number" && Q0[0] === 4) { + var Sr = Q0[3]; + if (n0(Sr, MQr)) { + if (!n0(Sr, BQr)) { + var mr = pr(v0), Cr = i(qQr, v0)[2]; + if (V(v0)) { + var Ie = S(v0, qr, jr, Cr, I, J0, ge, pe, I0, ir); + F0 = 1; + } else { + A(v0, pe), G(v0, I0), Xi(v0, Cr); + var sr = on(ir, mr), Pr = cr([0, qr], function(Bu) { + return x(Bu, 1, 0); + }, v0), K0 = Pr[2], Ur = lr([0, sr], 0, 0), Ie = [0, [0, Pr[1], [0, 3, K0[1], K0[2], ge, jr, Ur]]]; + F0 = 1; + } + } + } else { + var h0 = pr(v0), Kr = i(UQr, v0)[2]; + if (V(v0)) { + var Ie = S(v0, qr, jr, Kr, I, J0, ge, pe, I0, ir); + F0 = 1; + } else { + A(v0, pe), G(v0, I0), Xi(v0, Kr); + var re = on(ir, h0), xe = cr([0, qr], function(Bu) { + return x(Bu, 1, 1); + }, v0), Re = xe[2], ve = lr([0, re], 0, 0), Ie = [0, [0, xe[1], [0, 2, Re[1], Re[2], ge, jr, ve]]]; + F0 = 1; + } + } + } + if (!F0) + var Ie = S(v0, qr, jr, i(HQr, v0)[2], I, J0, ge, pe, I0, ir); + switch (Ie[0]) { + case 0: + var Ge = Ie[1], Me = Ge[2]; + switch (Me[1]) { + case 0: + if (Me[4]) + var Ft = Q, Ct = L; + else { + L && ue(v0, [0, Ge[1], 87]); + var Ft = Q, Ct = 1; + } + break; + case 1: + var an = Me[2], We = an[0] === 2 ? d(v0, Q, an[1], QY) : Q, Ft = We, Ct = L; + break; + case 2: + var Ae = Me[2], cn = Ae[0] === 2 ? d(v0, Q, Ae[1], SE) : Q, Ft = cn, Ct = L; + break; + default: + var rn = Me[2], kn = rn[0] === 2 ? d(v0, Q, rn[1], Fh) : Q, Ft = kn, Ct = L; + } + break; + case 1: + var vn = Ie[1][2], Ne = vn[4], Je = vn[1], en = 0; + switch (Je[0]) { + case 0: + var _n = Je[1], Cn = _n[2][1], Hn = 0; + if (typeof Cn != "number" && Cn[0] === 0) { + var vt = Cn[1], Nt = _n[1]; + en = 1, Hn = 1; + } + Hn || (en = 2); + break; + case 1: + var Fn = Je[1], vt = Fn[2][1], Nt = Fn[1]; + en = 1; + break; + case 2: + ke(PQr); + break; + default: + en = 2; + } + switch (en) { + case 1: + var gt = qn(vt, DQr); + if (gt) + var qt = gt; + else + var Zt = qn(vt, LQr), qt = Zt && Ne; + qt && ue(v0, [0, Nt, [21, vt, Ne, 0, 0]]); + break; + case 2: + break; + } + var Ft = Q, Ct = L; + break; + default: + var Ft = d(v0, Q, Ie[1][2][1], KX), Ct = L; + } + var L = Ct, Q = Ft, i0 = [0, Ie, i0]; + } + } + return B1(v0, 0), RQr; + }, o0); + return [0, Ar, fe, Tr, ar, Ir, w0, lr([0, _0], 0, 0)]; + } + function m0(e0, x0) { + return cr(0, function(l) { + return [2, f0([0, x0], l, l[7], 0)]; + }, e0); + } + function k0(e0) { + return [5, f0(0, e0, 1, 1)]; + } + var g0 = 0; + return [0, i, E, m0, function(e0) { + return cr(g0, k0, e0); + }, w, e]; + }(R9), ht = function(t) { + function n(_) { + var k = u(Vn[10], _); + if (_[5]) + M1(_, k[1]); + else { + var I = k[2], U = 0; + if (I[0] === 23) { + var Y = I[1], y0 = k[1], P0 = 0; + Y[4] ? ue(_, [0, y0, 61]) : Y[5] ? ue(_, [0, y0, 62]) : (U = 1, P0 = 1); + } else + U = 1; + } + return k; + } + function e(_, k, I) { + var U = I[2][1], Y = I[1]; + if (n0(U, Z0e)) { + if (n0(U, Q0e)) + return n0(U, rre) ? f2(U) ? V7(k, [0, Y, 55]) : kL(U) ? ue(k, [0, Y, [10, Ml(U)]]) : _ && js(U) ? V7(k, [0, Y, _[1]]) : 0 : k[17] ? ue(k, [0, Y, 2]) : V7(k, [0, Y, 55]); + if (k[5]) + return V7(k, [0, Y, 55]); + var y0 = k[14]; + return y0 && ue(k, [0, Y, [10, Ml(U)]]); + } + var P0 = k[18]; + return P0 && ue(k, [0, Y, 2]); + } + function i(_, k) { + var I = k[4], U = k[3], Y = k[2], y0 = k[1]; + I && gi(_, 45); + var P0 = pr(_); + return Y0(_, [2, [0, y0, Y, U, I]]), [0, y0, [0, Y, U, lr([0, P0], [0, we(_)], 0)]]; + } + function x(_, k, I) { + var U = _ ? _[1] : W0e, Y = k ? k[1] : 1, y0 = A0(I); + if (typeof y0 == "number") { + var P0 = y0 - 2 | 0; + if (Xt < P0 >>> 0) { + if (!(T7 < (P0 + 1 | 0) >>> 0)) { + var I0 = function(X0, J0) { + return X0; + }; + return [1, [0, we(I), I0]]; + } + } else if (P0 === 6) { + ie(I); + var D = A0(I); + if (typeof D == "number") { + var u0 = 0; + if ((D === 1 || Pn === D) && (u0 = 1), u0) + return [0, we(I)]; + } + return x7(I) ? [0, Ms(I)] : J0e; + } + } + return x7(I) ? [1, rb(I)] : (Y && St([0, U], I), $0e); + } + function c(_) { + var k = A0(_); + if (typeof k == "number") { + var I = 0; + if ((k === 1 || Pn === k) && (I = 1), I) { + var U = function(Y, y0) { + return Y; + }; + return [0, we(_), U]; + } + } + return x7(_) ? rb(_) : N9(_); + } + function s(_, k, I) { + var U = x(0, 0, k); + if (U[0] === 0) + return [0, U[1], I]; + var Y = ye(I); + if (Y) + var y0 = function(D, u0) { + return ur(Qe(D, 634872468, 89), D, _, u0); + }, P0 = o(U[1][2], Y[1], y0), I0 = ye([0, P0, Y[2]]); + else + var I0 = Y; + return [0, 0, I0]; + } + var p = function _(k) { + return _.fun(k); + }, y = function _(k) { + return _.fun(k); + }, T = function _(k) { + return _.fun(k); + }, E = function _(k) { + return _.fun(k); + }, d = function _(k) { + return _.fun(k); + }, w = function _(k, I) { + return _.fun(k, I); + }, G = function _(k) { + return _.fun(k); + }, A = function _(k) { + return _.fun(k); + }, S = function _(k, I, U) { + return _.fun(k, I, U); + }, M = function _(k) { + return _.fun(k); + }, K = function _(k) { + return _.fun(k); + }, V = function _(k, I) { + return _.fun(k, I); + }, f0 = function _(k) { + return _.fun(k); + }, m0 = function _(k) { + return _.fun(k); + }, k0 = function _(k, I) { + return _.fun(k, I); + }, g0 = function _(k) { + return _.fun(k); + }, e0 = function _(k, I) { + return _.fun(k, I); + }, x0 = function _(k) { + return _.fun(k); + }, l = function _(k, I) { + return _.fun(k, I); + }, c0 = function _(k) { + return _.fun(k); + }, t0 = function _(k, I) { + return _.fun(k, I); + }, o0 = function _(k, I) { + return _.fun(k, I); + }, w0 = function _(k, I) { + return _.fun(k, I); + }, _0 = function _(k) { + return _.fun(k); + }, E0 = function _(k) { + return _.fun(k); + }, U0 = function _(k, I, U) { + return _.fun(k, I, U); + }, b = function _(k, I) { + return _.fun(k, I); + }, R0 = function _(k, I) { + return _.fun(k, I); + }, X = function _(k) { + return _.fun(k); + }; + function s0(_) { + var k = pr(_); + Y0(_, 59); + var I = A0(_) === 8 ? 1 : 0, U = I && we(_), Y = x(0, 0, _), y0 = Y[0] === 0 ? Y[1] : Y[1][1]; + return [4, [0, lr([0, k], [0, on(U, y0)], 0)]]; + } + var hr = 0; + function Ar(_) { + return cr(hr, s0, _); + } + function or(_) { + var k = pr(_); + Y0(_, 37); + var I = zl(1, _), U = u(se[2], I), Y = 1 - _[5], y0 = Y && nb(U); + y0 && M1(_, U[1]); + var P0 = we(_); + Y0(_, 25); + var I0 = we(_); + Y0(_, 4); + var D = u(se[7], _); + Y0(_, 5); + var u0 = A0(_) === 8 ? 1 : 0, X0 = u0 && we(_), J0 = x(0, K0e, _), ir = J0[0] === 0 ? on(X0, J0[1]) : J0[1][1]; + return [14, [0, U, D, lr([0, k], [0, on(P0, on(I0, ir))], 0)]]; + } + var W0 = 0; + function Lr(_) { + return cr(W0, or, _); + } + function Tr(_, k, I) { + var U = I[2][1]; + if (U && !U[1][2][2]) { + var Y = U[2]; + if (!Y) + return Y; + } + return ue(_, [0, I[1], k]); + } + function Hr(_, k) { + var I = 1 - _[5], U = I && nb(k); + return U && M1(_, k[1]); + } + function Or(_) { + var k = pr(_); + Y0(_, 39); + var I = _[18], U = I && xu(_, 65), Y = on(k, pr(_)); + Y0(_, 4); + var y0 = lr([0, Y], 0, 0), P0 = Kl(1, _), I0 = A0(P0), D = 0; + if (typeof I0 == "number") + if (24 <= I0) + if (29 <= I0) + D = 1; + else + switch (I0 - 24 | 0) { + case 0: + var u0 = cr(0, Vn[9], P0), X0 = u0[2], J0 = lr([0, X0[2]], 0, 0), Pr = X0[3], K0 = [0, [1, [0, u0[1], [0, X0[1], 0, J0]]]]; + break; + case 3: + var ir = cr(0, Vn[8], P0), Q0 = ir[2], F0 = lr([0, Q0[2]], 0, 0), Pr = Q0[3], K0 = [0, [1, [0, ir[1], [0, Q0[1], 2, F0]]]]; + break; + case 4: + var Sr = cr(0, Vn[7], P0), mr = Sr[2], Cr = lr([0, mr[2]], 0, 0), Pr = mr[3], K0 = [0, [1, [0, Sr[1], [0, mr[1], 1, Cr]]]]; + break; + default: + D = 1; + } + else if (I0 === 8) + var Pr = 0, K0 = 0; + else + D = 1; + else + D = 1; + if (D) + var sr = F9(1, P0), Pr = 0, K0 = [0, [0, u(se[8], sr)]]; + var Ur = A0(_); + if (typeof Ur == "number") { + if (Ur === 17) { + if (K0) { + var h0 = K0[1]; + if (h0[0] === 0) + var Kr = [1, ur(t[2], V0e, _, h0[1])]; + else { + var re = h0[1]; + Tr(_, 28, re); + var Kr = [0, re]; + } + U ? Y0(_, 63) : Y0(_, 17); + var xe = u(se[7], _); + Y0(_, 5); + var Re = zl(1, _), ve = u(se[2], Re); + return Hr(_, ve), [21, [0, Kr, xe, ve, 0, y0]]; + } + throw [0, Sn, z0e]; + } + if (Ur === 63) { + if (K0) { + var Ie = K0[1]; + if (Ie[0] === 0) + var Ge = [1, ur(t[2], X0e, _, Ie[1])]; + else { + var Me = Ie[1]; + Tr(_, 29, Me); + var Ge = [0, Me]; + } + Y0(_, 63); + var an = u(se[10], _); + Y0(_, 5); + var We = zl(1, _), Ae = u(se[2], We); + return Hr(_, Ae), [22, [0, Ge, an, Ae, U, y0]]; + } + throw [0, Sn, Y0e]; + } + } + if (Du(function(gt) { + return ue(_, gt); + }, Pr), U ? Y0(_, 63) : Y0(_, 8), K0) + var cn = K0[1], rn = cn[0] === 0 ? [0, [1, o(t[1], _, cn[1])]] : [0, [0, cn[1]]], kn = rn; + else + var kn = K0; + var vn = A0(_), Ne = 0; + if (typeof vn == "number") { + var Je = vn !== 8 ? 1 : 0; + if (!Je) { + var en = Je; + Ne = 1; + } + } + if (!Ne) + var en = [0, u(se[7], _)]; + Y0(_, 8); + var _n = A0(_), Cn = 0; + if (typeof _n == "number") { + var Hn = _n !== 5 ? 1 : 0; + if (!Hn) { + var Fn = Hn; + Cn = 1; + } + } + if (!Cn) + var Fn = [0, u(se[7], _)]; + Y0(_, 5); + var vt = zl(1, _), Nt = u(se[2], vt); + return Hr(_, Nt), [20, [0, kn, en, Fn, Nt, y0]]; + } + var fr = 0; + function Rr(_) { + return cr(fr, Or, _); + } + function Wr(_) { + var k = Gs(_) ? n(_) : u(se[2], _), I = 1 - _[5], U = I && nb(k); + return U && M1(_, k[1]), k; + } + function Jr(_) { + var k = pr(_); + Y0(_, 43); + var I = Wr(_); + return [0, I, lr([0, k], 0, 0)]; + } + function ar(_) { + var k = pr(_); + Y0(_, 16); + var I = on(k, pr(_)); + Y0(_, 4); + var U = u(se[7], _); + Y0(_, 5); + var Y = Wr(_), y0 = A0(_) === 43 ? 1 : 0, P0 = y0 && [0, cr(0, Jr, _)]; + return [24, [0, U, Y, P0, lr([0, I], 0, 0)]]; + } + var _r = 0; + function Ir(_) { + return cr(_r, ar, _); + } + function fe(_) { + 1 - _[11] && je(_, 36); + var k = pr(_), I = Pe(_); + Y0(_, 19); + var U = A0(_) === 8 ? 1 : 0, Y = U && we(_), y0 = 0; + if (A0(_) !== 8 && !x2(_)) { + var P0 = [0, u(se[7], _)]; + y0 = 1; + } + if (!y0) + var P0 = 0; + var I0 = yt(I, Pe(_)), D = x(0, 0, _), u0 = 0; + if (D[0] === 0) + var X0 = D[1]; + else { + var J0 = D[1]; + if (P0) { + var ir = function(sr, Pr) { + return o(Qe(sr, Di, 90), sr, Pr); + }, Q0 = [0, o(J0[2], P0[1], ir)], F0 = Y; + u0 = 1; + } else + var X0 = J0[1]; + } + if (!u0) + var Q0 = P0, F0 = on(Y, X0); + return [28, [0, Q0, lr([0, k], [0, F0], 0), I0]]; + } + var v0 = 0; + function P(_) { + return cr(v0, fe, _); + } + function L(_) { + var k = pr(_); + Y0(_, 20), Y0(_, 4); + var I = u(se[7], _); + Y0(_, 5), Y0(_, 0); + for (var U = H0e; ; ) { + var Y = U[2], y0 = A0(_); + if (typeof y0 == "number") { + var P0 = 0; + if ((y0 === 1 || Pn === y0) && (P0 = 1), P0) { + var I0 = ye(Y); + Y0(_, 1); + var D = c(_), u0 = I[1]; + return [29, [0, I, I0, lr([0, k], [0, D[1]], 0), u0]]; + } + } + var X0 = U[1], J0 = gL(0, function(Q0) { + return function(F0) { + var Sr = pr(F0), mr = A0(F0), Cr = 0; + if (typeof mr == "number" && mr === 36) { + Q0 && je(F0, 32), Y0(F0, 36); + var sr = we(F0), Pr = 0; + Cr = 1; + } + if (!Cr) { + Y0(F0, 33); + var sr = 0, Pr = [0, u(se[7], F0)]; + } + var K0 = Q0 || (Pr === 0 ? 1 : 0); + Y0(F0, 86); + var Ur = on(sr, c(F0)[1]); + function h0(Re) { + if (typeof Re == "number") { + var ve = Re - 1 | 0, Ie = 0; + if (32 < ve >>> 0 ? ve === 35 && (Ie = 1) : 30 < (ve - 1 | 0) >>> 0 && (Ie = 1), Ie) + return 1; + } + return 0; + } + var Kr = 1, re = F0[9] === 1 ? F0 : [0, F0[1], F0[2], F0[3], F0[4], F0[5], F0[6], F0[7], F0[8], Kr, F0[10], F0[11], F0[12], F0[13], F0[14], F0[15], F0[16], F0[17], F0[18], F0[19], F0[20], F0[21], F0[22], F0[23], F0[24], F0[25], F0[26], F0[27], F0[28], F0[29], F0[30]], xe = o(se[4], h0, re); + return [0, [0, Pr, xe, lr([0, Sr], [0, Ur], 0)], K0]; + }; + }(X0), _), U = [0, J0[2], [0, J0[1], Y]]; + } + } + var Q = 0; + function i0(_) { + return cr(Q, L, _); + } + function l0(_) { + var k = pr(_), I = Pe(_); + Y0(_, 22), x7(_) && ue(_, [0, I, 21]); + var U = u(se[7], _), Y = x(0, 0, _); + if (Y[0] === 0) + var P0 = U, I0 = Y[1]; + else + var y0 = function(D, u0) { + return o(Qe(D, Di, 91), D, u0); + }, P0 = o(Y[1][2], U, y0), I0 = 0; + return [30, [0, P0, lr([0, k], [0, I0], 0)]]; + } + var S0 = 0; + function T0(_) { + return cr(S0, l0, _); + } + function rr(_) { + var k = pr(_); + Y0(_, 23); + var I = u(se[15], _); + if (A0(_) === 34) + var U = $t(_), Y = function(sr, Pr) { + var K0 = Pr[1]; + return [0, K0, ur(Qe(sr, Y8, 29), sr, K0, Pr[2])]; + }, y0 = o(U[2], I, Y); + else + var y0 = I; + var P0 = A0(_), I0 = 0; + if (typeof P0 == "number" && P0 === 34) { + var D = [0, cr(0, function(Pr) { + var K0 = pr(Pr); + Y0(Pr, 34); + var Ur = we(Pr), h0 = A0(Pr) === 4 ? 1 : 0; + if (h0) { + Y0(Pr, 4); + var Kr = [0, o(se[18], Pr, 39)]; + Y0(Pr, 5); + var re = Kr; + } else + var re = h0; + var xe = u(se[15], Pr); + if (A0(Pr) === 38) + var Ie = xe; + else + var Re = c(Pr), ve = function(Ge, Me) { + var an = Me[1]; + return [0, an, ur(Qe(Ge, Y8, 92), Ge, an, Me[2])]; + }, Ie = o(Re[2], xe, ve); + return [0, re, Ie, lr([0, K0], [0, Ur], 0)]; + }, _)]; + I0 = 1; + } + if (!I0) + var D = 0; + var u0 = A0(_), X0 = 0; + if (typeof u0 == "number" && u0 === 38) { + Y0(_, 38); + var J0 = u(se[15], _), ir = J0[1], Q0 = c(_), F0 = function(Pr, K0) { + return ur(Qe(Pr, Y8, 93), Pr, ir, K0); + }, Sr = [0, [0, ir, o(Q0[2], J0[2], F0)]]; + X0 = 1; + } + if (!X0) + var Sr = 0; + var mr = D === 0 ? 1 : 0, Cr = mr && (Sr === 0 ? 1 : 0); + return Cr && ue(_, [0, y0[1], 33]), [31, [0, y0, D, Sr, lr([0, k], 0, 0)]]; + } + var L0 = 0; + function B(_) { + return cr(L0, rr, _); + } + function Z(_) { + var k = u(Vn[9], _), I = s(0, _, k[1]), U = 0, Y = k[3]; + Du(function(P0) { + return ue(_, P0); + }, Y); + var y0 = lr([0, k[2]], [0, I[1]], 0); + return [34, [0, I[2], U, y0]]; + } + var p0 = 0; + function b0(_) { + return cr(p0, Z, _); + } + function O0(_) { + var k = u(Vn[8], _), I = s(2, _, k[1]), U = 2, Y = k[3]; + Du(function(P0) { + return ue(_, P0); + }, Y); + var y0 = lr([0, k[2]], [0, I[1]], 0); + return [34, [0, I[2], U, y0]]; + } + var M0 = 0; + function er(_) { + return cr(M0, O0, _); + } + function yr(_) { + var k = u(Vn[7], _), I = s(1, _, k[1]), U = 1, Y = k[3]; + Du(function(P0) { + return ue(_, P0); + }, Y); + var y0 = lr([0, k[2]], [0, I[1]], 0); + return [34, [0, I[2], U, y0]]; + } + var vr = 0; + function $0(_) { + return cr(vr, yr, _); + } + function Er(_) { + var k = pr(_); + Y0(_, 25); + var I = on(k, pr(_)); + Y0(_, 4); + var U = u(se[7], _); + Y0(_, 5); + var Y = zl(1, _), y0 = u(se[2], Y), P0 = 1 - _[5], I0 = P0 && nb(y0); + return I0 && M1(_, y0[1]), [35, [0, U, y0, lr([0, I], 0, 0)]]; + } + var Mr = 0; + function Br(_) { + return cr(Mr, Er, _); + } + function qr(_) { + var k = pr(_), I = u(se[7], _), U = A0(_), Y = I[2]; + if (Y[0] === 10 && typeof U == "number" && U === 86) { + var y0 = Y[1], P0 = y0[2][1]; + Y0(_, 86), o(Mu[3], P0, _[3]) && ue(_, [0, I[1], [16, q0e, P0]]); + var I0 = _[30], D = _[29], u0 = _[28], X0 = _[27], J0 = _[26], ir = _[25], Q0 = _[24], F0 = _[23], Sr = _[22], mr = _[21], Cr = _[20], sr = _[19], Pr = _[18], K0 = _[17], Ur = _[16], h0 = _[15], Kr = _[14], re = _[13], xe = _[12], Re = _[11], ve = _[10], Ie = _[9], Ge = _[8], Me = _[7], an = _[6], We = _[5], Ae = _[4], cn = o(Mu[4], P0, _[3]), rn = [0, _[1], _[2], cn, Ae, We, an, Me, Ge, Ie, ve, Re, xe, re, Kr, h0, Ur, K0, Pr, sr, Cr, mr, Sr, F0, Q0, ir, J0, X0, u0, D, I0], kn = Gs(rn) ? n(rn) : u(se[2], rn); + return [27, [0, y0, kn, lr([0, k], 0, 0)]]; + } + var vn = x(U0e, 0, _); + if (vn[0] === 0) + var Je = I, en = vn[1]; + else + var Ne = function(_n, Cn) { + return o(Qe(_n, Di, 94), _n, Cn); + }, Je = o(vn[1][2], I, Ne), en = 0; + return [19, [0, Je, 0, lr(0, [0, en], 0)]]; + } + var jr = 0; + function $r(_) { + return cr(jr, qr, _); + } + function ne(_) { + var k = u(se[7], _), I = x(B0e, 0, _); + if (I[0] === 0) + var Y = k, y0 = I[1]; + else + var U = function(sr, Pr) { + return o(Qe(sr, Di, 95), sr, Pr); + }, Y = o(I[1][2], k, U), y0 = 0; + var P0 = _[19]; + if (P0) { + var I0 = Y[2], D = 0; + if (I0[0] === 14) { + var u0 = I0[1], X0 = 0, J0 = u0[1]; + if (typeof J0 != "number" && J0[0] === 0) { + var ir = u0[2], Q0 = 1 < un(ir) ? 1 : 0; + if (Q0) + var F0 = It(ir, un(ir) - 1 | 0), Sr = It(ir, 0) === F0 ? 1 : 0; + else + var Sr = Q0; + var mr = Sr && [0, m7(ir, 1, un(ir) - 2 | 0)], Cr = mr; + X0 = 1; + } + X0 || (D = 1); + } else + D = 1; + if (D) + var Cr = 0; + } else + var Cr = P0; + return [19, [0, Y, Cr, lr(0, [0, y0], 0)]]; + } + var Qr = 0; + function be(_) { + return cr(Qr, ne, _); + } + function ae(_) { + var k = A0(_), I = 0; + if (typeof k != "number" && k[0] === 4 && !n0(k[3], R0e)) { + ie(_); + var U = A0(_); + if (typeof U != "number" && U[0] === 2) + return i(_, U[1]); + St(j0e, _), I = 1; + } + return I || St(G0e, _), [0, j1(_), M0e]; + } + function pe(_, k, I) { + function U(D) { + return _ ? u(mn[2], D) : o(se[13], 0, D); + } + var Y = Yn(1, I); + if (typeof Y == "number") + switch (Y) { + case 1: + case 9: + case 113: + return [0, U(I), 0]; + } + else if (Y[0] === 4 && !n0(Y[3], L0e)) { + var y0 = z7(I); + return ie(I), [0, y0, [0, U(I)]]; + } + var P0 = A0(I); + if (k && typeof P0 == "number") { + var I0 = 0; + if ((P0 === 46 || P0 === 61) && (I0 = 1), I0) + return je(I, k[1]), ie(I), [0, u(mn[2], I), 0]; + } + return [0, U(I), 0]; + } + function oe(_, k) { + var I = A0(_); + if (typeof I == "number" && Yt === I) { + var U = cr(0, function(Ae) { + ie(Ae); + var cn = A0(Ae); + return typeof cn != "number" && cn[0] === 4 && !n0(cn[3], P0e) ? (ie(Ae), 2 <= k ? [0, o(se[13], 0, Ae)] : [0, u(mn[2], Ae)]) : (St(D0e, Ae), 0); + }, _), Y = U[2], y0 = Y && [0, [0, U[1], Y[1]]], P0 = y0 && [0, [1, y0[1]]]; + return P0; + } + Y0(_, 0); + for (var I0 = 0, D = 0; ; ) { + var u0 = I0 ? I0[1] : 1, X0 = A0(_); + if (typeof X0 == "number") { + var J0 = 0; + if ((X0 === 1 || Pn === X0) && (J0 = 1), J0) { + var ir = ye(D); + return Y0(_, 1), [0, [0, ir]]; + } + } + if (1 - u0 && je(_, 84), k === 2) { + var Q0 = A0(_), F0 = 0; + if (typeof Q0 == "number") + if (Q0 === 46) + var Sr = I0e; + else if (Q0 === 61) + var Sr = O0e; + else + F0 = 1; + else + F0 = 1; + if (F0) + var Sr = 0; + var mr = A0(_), Cr = 0; + if (typeof mr == "number") { + var sr = 0; + if (mr !== 46 && mr !== 61 && (sr = 1), !sr) { + var Pr = 1; + Cr = 1; + } + } + if (!Cr) + var Pr = 0; + if (Pr) { + var K0 = z7(_), Ur = A0(_), h0 = 0; + if (typeof Ur == "number") + switch (Ur) { + case 1: + case 9: + case 113: + e(0, _, K0); + var Ie = [0, 0, 0, K0]; + h0 = 1; + break; + } + else if (Ur[0] === 4 && !n0(Ur[3], A0e)) { + var Kr = Yn(1, _), re = 0; + if (typeof Kr == "number") + switch (Kr) { + case 1: + case 9: + case 113: + var xe = [0, Sr, 0, u(mn[2], _)]; + re = 1; + break; + } + else if (Kr[0] === 4 && !n0(Kr[3], N0e)) { + var Re = z7(_); + ie(_); + var xe = [0, Sr, [0, u(mn[2], _)], Re]; + re = 1; + } + if (!re) { + e(0, _, K0), ie(_); + var xe = [0, 0, [0, o(se[13], 0, _)], K0]; + } + var Ie = xe; + h0 = 1; + } + if (!h0) + var ve = pe(1, 0, _), Ie = [0, Sr, ve[2], ve[1]]; + var Me = Ie; + } else + var Ge = pe(0, 0, _), Me = [0, 0, Ge[2], Ge[1]]; + var We = Me; + } else + var an = pe(1, T0e, _), We = [0, 0, an[2], an[1]]; + var I0 = [0, xu(_, 9)], D = [0, We, D]; + } + } + function ce(_, k) { + var I = x(0, 0, _); + if (I[0] === 0) + return [0, I[1], k]; + function U(Y, y0) { + var P0 = y0[1]; + return [0, P0, ur(Qe(Y, hA, 96), Y, P0, y0[2])]; + } + return [0, 0, o(I[1][2], k, U)]; + } + function ge(_) { + var k = _s(1, _), I = pr(k); + Y0(k, 50); + var U = A0(k), Y = 0; + if (typeof U == "number") + switch (U) { + case 46: + if (fu(k)) { + Y0(k, 46); + var y0 = A0(k), P0 = 0; + if (typeof y0 == "number") { + var I0 = 0; + if (Yt !== y0 && y0 && (I0 = 1), !I0) { + var J0 = 1; + Y = 2, P0 = 1; + } + } + if (!P0) { + var D = 1; + Y = 1; + } + } + break; + case 61: + if (fu(k)) { + var u0 = Yn(1, k), X0 = 0; + if (typeof u0 == "number") + switch (u0) { + case 0: + ie(k); + var J0 = 0; + Y = 2, X0 = 2; + break; + case 106: + ie(k), St(0, k); + var J0 = 0; + Y = 2, X0 = 2; + break; + case 9: + X0 = 1; + break; + } + else + u0[0] === 4 && !n0(u0[3], C0e) && (X0 = 1); + switch (X0) { + case 2: + break; + case 0: + ie(k); + var D = 0; + Y = 1; + break; + default: + var D = 2; + Y = 1; + } + } + break; + case 0: + case 106: + var J0 = 2; + Y = 2; + break; + } + else if (U[0] === 2) { + var ir = ce(k, i(k, U[1])), Q0 = lr([0, I], [0, ir[1]], 0); + return [25, [0, 2, ir[2], 0, 0, Q0]]; + } + switch (Y) { + case 0: + var D = 2; + break; + case 1: + break; + default: + var F0 = oe(k, J0), Sr = ce(k, ae(k)), mr = lr([0, I], [0, Sr[1]], 0); + return [25, [0, J0, Sr[2], 0, F0, mr]]; + } + var Cr = 2 <= D ? o(se[13], 0, k) : u(mn[2], k), sr = A0(k), Pr = 0; + if (typeof sr == "number" && sr === 9) { + Y0(k, 9); + var K0 = oe(k, D); + Pr = 1; + } + if (!Pr) + var K0 = 0; + var Ur = ce(k, ae(k)), h0 = lr([0, I], [0, Ur[1]], 0); + return [25, [0, D, Ur[2], [0, Cr], K0, h0]]; + } + var q0 = 0; + function Fr(_) { + return cr(q0, ge, _); + } + return N(p, function(_) { + var k = Pe(_), I = pr(_); + return Y0(_, 8), [0, k, [15, [0, lr([0, I], [0, c(_)[1]], 0)]]]; + }), N(y, function(_) { + var k = pr(_), I = cr(0, function(X0) { + Y0(X0, 32); + var J0 = 0; + if (A0(X0) !== 8 && !x2(X0)) { + var ir = o(se[13], 0, X0), Q0 = ir[2][1]; + 1 - o(Mu[3], Q0, X0[3]) && je(X0, [15, Q0]); + var F0 = [0, ir]; + J0 = 1; + } + if (!J0) + var F0 = 0; + var Sr = x(0, 0, X0), mr = 0; + if (Sr[0] === 0) + var Cr = Sr[1]; + else { + var sr = Sr[1]; + if (F0) { + var Pr = function(xe, Re) { + return o(Qe(xe, Nv, 97), xe, Re); + }, K0 = [0, o(sr[2], F0[1], Pr)], Ur = 0; + mr = 1; + } else + var Cr = sr[1]; + } + if (!mr) + var K0 = F0, Ur = Cr; + return [0, K0, Ur]; + }, _), U = I[2], Y = U[1], y0 = I[1], P0 = Y === 0 ? 1 : 0; + if (P0) + var I0 = _[8], D = I0 || _[9], u0 = 1 - D; + else + var u0 = P0; + return u0 && ue(_, [0, y0, 35]), [0, y0, [1, [0, Y, lr([0, k], [0, U[2]], 0)]]]; + }), N(T, function(_) { + var k = pr(_), I = cr(0, function(P0) { + Y0(P0, 35); + var I0 = 0; + if (A0(P0) !== 8 && !x2(P0)) { + var D = o(se[13], 0, P0), u0 = D[2][1]; + 1 - o(Mu[3], u0, P0[3]) && je(P0, [15, u0]); + var X0 = [0, D]; + I0 = 1; + } + if (!I0) + var X0 = 0; + var J0 = x(0, 0, P0), ir = 0; + if (J0[0] === 0) + var Q0 = J0[1]; + else { + var F0 = J0[1]; + if (X0) { + var Sr = function(Ur, h0) { + return o(Qe(Ur, Nv, 98), Ur, h0); + }, mr = [0, o(F0[2], X0[1], Sr)], Cr = 0; + ir = 1; + } else + var Q0 = F0[1]; + } + if (!ir) + var mr = X0, Cr = Q0; + return [0, mr, Cr]; + }, _), U = I[2], Y = I[1]; + 1 - _[8] && ue(_, [0, Y, 34]); + var y0 = lr([0, k], [0, U[2]], 0); + return [0, Y, [3, [0, U[1], y0]]]; + }), N(E, function(_) { + var k = cr(0, function(U) { + var Y = pr(U); + Y0(U, 26); + var y0 = on(Y, pr(U)); + Y0(U, 4); + var P0 = u(se[7], U); + Y0(U, 5); + var I0 = u(se[2], U), D = 1 - U[5], u0 = D && nb(I0); + return u0 && M1(U, I0[1]), [36, [0, P0, I0, lr([0, y0], 0, 0)]]; + }, _), I = k[1]; + return V7(_, [0, I, 38]), [0, I, k[2]]; + }), N(d, function(_) { + var k = u(se[15], _), I = k[1], U = c(_); + function Y(y0, P0) { + return ur(Qe(y0, Y8, 99), y0, I, P0); + } + return [0, I, [0, o(U[2], k[2], Y)]]; + }), N(w, function(_, k) { + 1 - fu(k) && je(k, 10); + var I = on(_, pr(k)); + Y0(k, 61), Ku(k, 1); + var U = u(mn[2], k), Y = A0(k) === 98 ? ys(k, U) : U, y0 = u(mn[3], k); + Y0(k, 82); + var P0 = u(mn[1], k); + k7(k); + var I0 = x(0, 0, k); + if (I0[0] === 0) + var u0 = P0, X0 = I0[1]; + else + var D = function(J0, ir) { + return o(Qe(J0, _v, ti), J0, ir); + }, u0 = o(I0[1][2], P0, D), X0 = 0; + return [0, Y, y0, u0, lr([0, I], [0, X0], 0)]; + }), N(G, function(_) { + return cr(0, function(k) { + var I = pr(k); + return Y0(k, 60), [11, o(w, I, k)]; + }, _); + }), N(A, function(_) { + if (I9(1, _) && !se0(1, _)) { + var k = cr(0, u(w, 0), _); + return [0, k[1], [32, k[2]]]; + } + return u(se[2], _); + }), N(S, function(_, k, I) { + var U = _ && _[1]; + 1 - fu(I) && je(I, 11); + var Y = on(k, pr(I)); + Y0(I, 62); + var y0 = pr(I); + Y0(I, 61); + var P0 = on(Y, y0); + Ku(I, 1); + var I0 = u(mn[2], I), D = A0(I) === 98 ? ys(I, I0) : I0, u0 = u(mn[3], I), X0 = A0(I), J0 = 0; + if (typeof X0 == "number" && X0 === 86) { + Y0(I, 86); + var ir = [0, u(mn[1], I)]; + J0 = 1; + } + if (!J0) + var ir = 0; + if (U) { + var Q0 = A0(I), F0 = 0; + if (typeof Q0 == "number" && Q0 === 82) { + je(I, 70), ie(I); + var Sr = 0; + if (A0(I) !== 8 && !x2(I)) { + var mr = [0, u(mn[1], I)]; + Sr = 1; + } + if (!Sr) + var mr = 0; + } else + F0 = 1; + if (F0) + var mr = 0; + var Cr = mr; + } else { + Y0(I, 82); + var Cr = [0, u(mn[1], I)]; + } + k7(I); + var sr = x(0, 0, I); + if (sr[0] === 0) + var Pr = Cr, K0 = ir, Ur = u0, h0 = D, Kr = sr[1]; + else { + var re = sr[1][2]; + if (Cr) + var xe = function(en, _n) { + return o(Qe(en, _v, R7), en, _n); + }, Pr = [0, o(re, Cr[1], xe)], K0 = ir, Ur = u0, h0 = D, Kr = 0; + else if (ir) + var Re = 0, ve = function(en, _n) { + return o(Qe(en, _v, Ri), en, _n); + }, Pr = Re, K0 = [0, o(re, ir[1], ve)], Ur = u0, h0 = D, Kr = 0; + else if (u0) + var Ie = 0, Ge = 0, Me = function(en, _n) { + return o(Qe(en, bF, s7), en, _n); + }, Pr = Ie, K0 = Ge, Ur = [0, o(re, u0[1], Me)], h0 = D, Kr = 0; + else + var an = 0, We = 0, Ae = 0, Pr = an, K0 = We, Ur = Ae, cn = 0, h0 = o(re, D, function(en, _n) { + return o(Qe(en, Nv, L7), en, _n); + }), Kr = cn; + } + return [0, h0, Ur, Pr, K0, lr([0, P0], [0, Kr], 0)]; + }), N(M, function(_) { + return cr(0, function(k) { + var I = pr(k); + return Y0(k, 60), [12, ur(S, F0e, I, k)]; + }, _); + }), N(K, function(_) { + var k = Yn(1, _); + if (typeof k == "number" && k === 61) { + var I = cr(0, o(S, g0e, 0), _); + return [0, I[1], [33, I[2]]]; + } + return u(se[2], _); + }), N(V, function(_, k) { + 1 - fu(k) && je(k, 16); + var I = on(_, pr(k)); + Y0(k, 53); + var U = u(mn[2], k), Y = A0(k) === 41 ? U : ys(k, U), y0 = u(mn[3], k), P0 = A0(k) === 41 ? y0 : oi(k, y0), I0 = u(mn[7], k), D = c(k); + function u0(ir, Q0) { + var F0 = Q0[1]; + return [0, F0, ur(Qe(ir, qH, j7), ir, F0, Q0[2])]; + } + var X0 = o(D[2], I0[2], u0), J0 = lr([0, I], 0, 0); + return [0, Y, P0, I0[1], X0, J0]; + }), N(f0, function(_) { + return cr(0, function(k) { + var I = pr(k); + return Y0(k, 60), [8, o(V, I, k)]; + }, _); + }), N(m0, function(_) { + var k = I9(1, _), I = 1, U = k || ve0(I, _); + if (U) { + var Y = cr(0, u(V, 0), _); + return [0, Y[1], [26, Y[2]]]; + } + return be(_); + }), N(k0, function(_, k) { + var I = _s(1, k), U = on(_, pr(I)); + Y0(I, 40); + var Y = o(se[13], 0, I), y0 = A0(I), P0 = 0; + if (typeof y0 == "number") { + var I0 = 0; + if (y0 !== 98 && y0 && (I0 = 1), !I0) { + var D = ys(I, Y); + P0 = 1; + } + } + if (!P0) + var D = Y; + var u0 = u(mn[3], I), X0 = A0(I), J0 = 0; + if (typeof X0 == "number" && !X0) { + var ir = oi(I, u0); + J0 = 1; + } + if (!J0) + var ir = u0; + var Q0 = xu(I, 41); + if (Q0) { + var F0 = u(mn[5], I), Sr = A0(I), mr = 0; + if (typeof Sr == "number" && !Sr) { + var Cr = $t(I), sr = function(Fn, vt) { + return _u(u(Qe(Fn, ZU, 36), Fn), vt); + }, Pr = [0, o(Cr[2], F0, sr)]; + mr = 1; + } + if (!mr) + var Pr = [0, F0]; + var K0 = Pr; + } else + var K0 = Q0; + var Ur = A0(I), h0 = 0; + if (typeof Ur != "number" && Ur[0] === 4 && !n0(Ur[3], S0e)) { + ie(I); + for (var Kr = 0; ; ) { + var re = [0, u(mn[5], I), Kr], xe = A0(I); + if (typeof xe == "number" && xe === 9) { + Y0(I, 9); + var Kr = re; + continue; + } + var Re = ye(re), ve = A0(I), Ie = 0; + if (typeof ve == "number" && !ve) { + var Ge = de0(I, Re); + Ie = 1; + } + if (!Ie) + var Ge = Re; + var Me = Ge; + h0 = 1; + break; + } + } + if (!h0) + var Me = 0; + var an = A0(I), We = 0; + if (typeof an == "number" && an === 52) { + var Ae = o(Us[5], I, 0), cn = A0(I), rn = 0; + if (typeof cn == "number" && !cn) { + var kn = [0, ke0(I, Ae)]; + rn = 1; + } + if (!rn) + var kn = [0, Ae]; + var vn = kn; + We = 1; + } + if (!We) + var vn = 0; + var Ne = o(mn[6], 1, I), Je = c(I); + function en(Cn, Hn) { + var Fn = Hn[1]; + return [0, Fn, ur(Qe(Cn, qH, Yt), Cn, Fn, Hn[2])]; + } + var _n = o(Je[2], Ne, en); + return [0, D, ir, _n, K0, Me, vn, lr([0, U], 0, 0)]; + }), N(g0, function(_) { + return cr(0, function(k) { + var I = pr(k); + return Y0(k, 60), [5, o(k0, I, k)]; + }, _); + }), N(e0, function(_, k) { + var I = _ && _[1], U = on(I, pr(k)); + Y0(k, 15); + var Y = ys(k, o(se[13], 0, k)), y0 = cr(0, function(mr) { + var Cr = oi(mr, u(mn[3], mr)), sr = u(mn[8], mr); + Y0(mr, 86); + var Pr = u(mn[1], mr); + Ku(mr, 1); + var K0 = A0(mr); + if (k7(mr), K0 === 66) + var Ur = $t(mr), h0 = function(re, xe) { + return o(Qe(re, _v, 31), re, xe); + }, Kr = o(Ur[2], Pr, h0); + else + var Kr = Pr; + return [12, [0, Cr, sr, Kr, 0]]; + }, k), P0 = u(mn[11], k), I0 = x(0, 0, k); + if (I0[0] === 0) + var D = P0, u0 = y0, X0 = I0[1]; + else { + var J0 = I0[1][2]; + if (P0) + var ir = function(Pr, K0) { + return o(Qe(Pr, kH, Zc), Pr, K0); + }, D = [0, o(J0, P0[1], ir)], u0 = y0, X0 = 0; + else + var Q0 = 0, D = Q0, F0 = 0, u0 = o(J0, y0, function(Pr, K0) { + return o(Qe(Pr, _v, is), Pr, K0); + }), X0 = F0; + } + var Sr = [0, u0[1], u0]; + return [0, Y, Sr, D, lr([0, U], [0, X0], 0)]; + }), N(x0, function(_) { + return cr(0, function(k) { + var I = pr(k); + Y0(k, 60); + var U = A0(k), Y = 0; + return typeof U == "number" && U === 64 && (je(k, 67), Y0(k, 64), Y = 1), [7, o(e0, [0, I], k)]; + }, _); + }), N(l, function(_, k) { + var I = on(k, pr(_)); + Y0(_, 24); + var U = o(se[13], E0e, _), Y = u(mn[9], _), y0 = x(0, 0, _); + if (y0[0] === 0) + var I0 = Y, D = y0[1]; + else + var P0 = function(u0, X0) { + return o(Qe(u0, OE, Fv), u0, X0); + }, I0 = o(y0[1][2], Y, P0), D = 0; + return [0, U, I0, lr([0, I], [0, D], 0)]; + }), N(c0, function(_) { + return cr(0, function(k) { + var I = pr(k); + return Y0(k, 60), [13, o(l, k, I)]; + }, _); + }), N(t0, function(_, k) { + var I = Pe(k), U = pr(k); + Y0(k, 60); + var Y = on(U, pr(k)); + return Zl(k, w0e), !_ && A0(k) !== 10 ? cr([0, I], function(y0) { + var P0 = A0(y0), I0 = 0; + if (typeof P0 != "number" && P0[0] === 2) { + var D = i(y0, P0[1]), u0 = $t(y0), X0 = function(Cr, sr) { + var Pr = sr[1]; + return [0, Pr, ur(Qe(Cr, hA, 39), Cr, Pr, sr[2])]; + }, J0 = [1, o(u0[2], D, X0)]; + I0 = 1; + } + if (!I0) + var J0 = [0, ys(y0, o(se[13], 0, y0))]; + var ir = gL(0, function(mr) { + var Cr = pr(mr); + Y0(mr, 0); + for (var sr = 0, Pr = 0; ; ) { + var K0 = A0(mr); + if (typeof K0 == "number") { + var Ur = 0; + if ((K0 === 1 || Pn === K0) && (Ur = 1), Ur) { + var h0 = ye(Pr), Kr = h0 === 0 ? 1 : 0, re = Kr && pr(mr); + return Y0(mr, 1), [0, [0, h0, yu([0, Cr], [0, c(mr)[1]], re, 0)], sr]; + } + } + var xe = o(w0, h0e, mr), Re = xe[2], ve = 0; + if (sr) + if (sr[1]) + if (Re[0] === 10) { + je(mr, 79); + var Ae = sr; + } else + ve = 1; + else + switch (Re[0]) { + case 6: + var Ie = Re[1][2], Ge = 0; + if (Ie) + switch (Ie[1][0]) { + case 4: + case 6: + Ge = 1; + break; + } + Ge || je(mr, 79); + var Ae = sr; + break; + case 10: + je(mr, 78); + var Ae = sr; + break; + default: + ve = 1; + } + else + switch (Re[0]) { + case 6: + var Me = Re[1][2], an = 0; + if (Me) + switch (Me[1][0]) { + case 4: + case 6: + var We = sr; + an = 1; + break; + } + if (!an) + var We = d0e; + var Ae = We; + break; + case 10: + var Ae = k0e; + break; + default: + ve = 1; + } + if (ve) + var Ae = sr; + var sr = Ae, Pr = [0, xe, Pr]; + } + }, y0), Q0 = ir[2], F0 = Q0 && Q0[1], Sr = lr([0, Y], 0, 0); + return [9, [0, J0, ir[1], F0, Sr]]; + }, k) : cr([0, I], u(o0, Y), k); + }), N(o0, function(_, k) { + var I = pr(k); + Y0(k, 10); + var U = pr(k); + Zl(k, y0e); + var Y = pl([0, _, [0, I, [0, U, [0, pr(k), 0]]]]), y0 = u(mn[9], k), P0 = x(0, 0, k); + if (P0[0] === 0) + var u0 = P0[1], X0 = y0; + else + var I0 = 0, D = function(J0, ir) { + return o(Qe(J0, OE, Xt), J0, ir); + }, u0 = I0, X0 = o(P0[1][2], y0, D); + return [10, [0, X0, lr([0, Y], [0, u0], 0)]]; + }), N(w0, function(_, k) { + var I = _ && _[1]; + 1 - fu(k) && je(k, 13); + var U = Yn(1, k); + if (typeof U == "number") + switch (U) { + case 24: + return u(c0, k); + case 40: + return u(g0, k); + case 46: + if (A0(k) === 50) + return Fr(k); + break; + case 49: + if (I) + return o(X, [0, I], k); + break; + case 53: + return u(f0, k); + case 61: + var Y = A0(k); + return typeof Y == "number" && Y === 50 && I ? Fr(k) : u(G, k); + case 62: + return u(M, k); + case 15: + case 64: + return u(x0, k); + } + else if (U[0] === 4 && !n0(U[3], _0e)) + return o(t0, I, k); + if (I) { + var y0 = A0(k); + return typeof y0 == "number" && y0 === 50 ? (je(k, 82), u(se[2], k)) : u(c0, k); + } + return u(se[2], k); + }), N(_0, function(_) { + Zl(_, b0e); + var k = A0(_); + if (typeof k != "number" && k[0] === 2) + return i(_, k[1]); + var I = [0, Pe(_), p0e]; + return St(m0e, _), I; + }), N(E0, function(_) { + var k = u(_0, _), I = k[2], U = k[1], Y = x(0, 0, _); + if (Y[0] === 0) + return [0, [0, U, I], Y[1]]; + var y0 = 0; + function P0(I0, D) { + return ur(Qe(I0, hA, cf), I0, U, D); + } + return [0, [0, U, o(Y[1][2], I, P0)], y0]; + }), N(U0, function(_, k, I) { + var U = _ ? _[1] : 1, Y = A0(k); + if (typeof Y == "number") { + var y0 = 0; + if ((Y === 1 || Pn === Y) && (y0 = 1), y0) + return ye(I); + } + 1 - U && je(k, 85); + var P0 = cr(0, function(I0) { + var D = z7(I0), u0 = A0(I0), X0 = 0; + if (typeof u0 != "number" && u0[0] === 4 && !n0(u0[3], l0e)) { + ie(I0); + var J0 = [0, z7(I0)]; + X0 = 1; + } + if (!X0) + var J0 = 0; + return [0, D, J0]; + }, k); + return ur(U0, [0, xu(k, 9)], k, [0, P0, I]); + }), N(b, function(_, k) { + return Du(function(I) { + var U = I[2]; + return U[2] ? 0 : e(v0e, _, U[1]); + }, k); + }), N(R0, function(_, k) { + var I = ne0(1, _s(1, k)), U = pr(I), Y = Pe(I); + Y0(I, 49); + var y0 = A0(I); + if (typeof y0 == "number") { + if (53 <= y0) { + if (!(63 <= y0)) + switch (y0 + cU | 0) { + case 0: + return cr([0, Y], function(D) { + 1 - fu(D) && je(D, 15); + var u0 = cr(0, u(V, 0), D), X0 = [0, u0[1], [26, u0[2]]]; + return [18, [0, [0, X0], 0, 0, 0, lr([0, U], 0, 0)]]; + }, I); + case 8: + if (Yn(1, I) !== 0) + return cr([0, Y], function(D) { + 1 - fu(D) && je(D, 15); + var u0 = Yn(1, D); + if (typeof u0 == "number") { + if (u0 === 48) + return je(D, 0), Y0(D, 61), [18, [0, 0, 0, 0, 0, lr([0, U], 0, 0)]]; + if (Yt === u0) { + Y0(D, 61); + var X0 = Pe(D); + Y0(D, Yt); + var J0 = u(E0, D), ir = lr([0, U], [0, J0[2]], 0); + return [18, [0, 0, [0, [1, [0, X0, 0]]], [0, J0[1]], 0, ir]]; + } + } + var Q0 = cr(0, u(w, 0), D), F0 = [0, Q0[1], [32, Q0[2]]]; + return [18, [0, [0, F0], 0, 0, 0, lr([0, U], 0, 0)]]; + }, I); + break; + case 9: + return cr([0, Y], function(D) { + var u0 = cr(0, function(J0) { + return u(o(S, 0, 0), J0); + }, D), X0 = [0, u0[1], [33, u0[2]]]; + return [18, [0, [0, X0], 0, 0, 0, lr([0, U], 0, 0)]]; + }, I); + } + } else if (y0 === 36) + return cr([0, Y], function(D) { + var u0 = on(U, pr(D)), X0 = cr(0, function(Ur) { + return Y0(Ur, 36); + }, D), J0 = te0(1, D); + if (Gs(J0)) + var ir = 0, Q0 = [0, u(Vn[10], J0)]; + else if ($l(J0)) + var ir = 0, Q0 = [0, o(Us[3], J0, _)]; + else if (A0(J0) === 48) + var ir = 0, Q0 = [0, u(Vn[11], J0)]; + else { + var F0 = u(se[10], J0), Sr = x(0, 0, J0); + if (Sr[0] === 0) + var sr = Sr[1], Pr = F0; + else + var mr = 0, Cr = function(Kr, re) { + return o(Qe(Kr, Di, T7), Kr, re); + }, sr = mr, Pr = o(Sr[1][2], F0, Cr); + var ir = sr, Q0 = [1, Pr]; + } + var K0 = lr([0, u0], [0, ir], 0); + return [17, [0, X0[1], Q0, K0]]; + }, I); + } + if ($l(I)) + return cr([0, Y], function(D) { + var u0 = o(Us[3], D, _); + return [18, [0, [0, u0], 0, 0, 1, lr([0, U], 0, 0)]]; + }, I); + if (Gs(I)) + return cr([0, Y], function(D) { + u(A9(D), _); + var u0 = u(Vn[10], D); + return [18, [0, [0, u0], 0, 0, 1, lr([0, U], 0, 0)]]; + }, I); + if (typeof y0 == "number") + if (29 <= y0) { + if (y0 === 48) { + if (I[27][1]) + return cr([0, Y], function(D) { + var u0 = o(se[3], [0, _], D); + return [18, [0, [0, u0], 0, 0, 1, lr([0, U], 0, 0)]]; + }, I); + } else if (Yt === y0) + return cr([0, Y], function(D) { + var u0 = Pe(D); + Y0(D, Yt); + var X0 = D[27][3], J0 = A0(D), ir = 0; + if (typeof J0 != "number" && J0[0] === 4 && !n0(J0[3], c0e)) { + ie(D); + var Q0 = X0 ? [0, o(se[13], 0, D)] : (je(D, 13), 0), F0 = Q0; + ir = 1; + } + if (!ir) + var F0 = 0; + var Sr = u(E0, D), mr = lr([0, U], [0, Sr[2]], 0); + return [18, [0, 0, [0, [1, [0, u0, F0]]], [0, Sr[1]], 1, mr]]; + }, I); + } else { + var P0 = 0; + if ((y0 === 24 || 27 <= y0) && (P0 = 1), P0) + return cr([0, Y], function(D) { + var u0 = o(se[3], [0, _], D); + return [18, [0, [0, u0], 0, 0, 1, lr([0, U], 0, 0)]]; + }, I); + } + var I0 = xu(I, 61) ? 0 : 1; + return xu(I, 0) ? cr([0, Y], function(D) { + var u0 = ur(U0, 0, D, 0); + Y0(D, 1); + var X0 = A0(D), J0 = 0; + if (typeof X0 != "number" && X0[0] === 4 && !n0(X0[3], a0e)) { + var ir = u(E0, D), Q0 = ir[2], F0 = [0, ir[1]]; + J0 = 1; + } + if (!J0) { + o(b, D, u0); + var Sr = x(0, 0, D), mr = Sr[0] === 0 ? Sr[1] : Sr[1][1], Q0 = mr, F0 = 0; + } + return [18, [0, 0, [0, [0, u0]], F0, I0, lr([0, U], [0, Q0], 0)]]; + }, I) : (St(s0e, I), o(se[3], [0, _], I)); + }), N(X, function(_) { + var k = _ && _[1]; + function I(Y) { + 1 - fu(Y) && je(Y, 13); + var y0 = pr(Y); + Y0(Y, 60); + var P0 = ne0(1, _s(1, Y)), I0 = on(y0, pr(P0)); + Y0(P0, 49); + var D = A0(P0); + if (typeof D == "number") + if (53 <= D) { + if (Yt === D) { + var u0 = Pe(P0); + Y0(P0, Yt); + var X0 = P0[27][3], J0 = A0(P0), ir = 0; + if (typeof J0 != "number" && J0[0] === 4 && !n0(J0[3], f0e)) { + ie(P0); + var Q0 = X0 ? [0, o(se[13], 0, P0)] : (je(P0, 13), 0), F0 = Q0; + ir = 1; + } + if (!ir) + var F0 = 0; + var Sr = u(E0, P0), mr = lr([0, I0], [0, Sr[2]], 0); + return [6, [0, 0, 0, [0, [1, [0, u0, F0]]], [0, Sr[1]], mr]]; + } + if (!(63 <= D)) + switch (D + cU | 0) { + case 0: + if (k) { + var Cr = cr(0, u(V, 0), P0); + return [6, [0, 0, [0, [6, Cr]], 0, 0, lr([0, I0], 0, 0)]]; + } + break; + case 8: + if (k) { + var sr = cr(0, u(w, 0), P0); + return [6, [0, 0, [0, [4, sr]], 0, 0, lr([0, I0], 0, 0)]]; + } + break; + case 9: + var Pr = cr(0, o(S, i0e, 0), P0); + return [6, [0, 0, [0, [5, Pr]], 0, 0, lr([0, I0], 0, 0)]]; + } + } else { + var K0 = D - 15 | 0; + if (!(25 < K0 >>> 0)) + switch (K0) { + case 21: + var Ur = on(I0, pr(P0)), h0 = cr(0, function(Ct) { + return Y0(Ct, 36); + }, P0), Kr = te0(1, P0), re = A0(Kr), xe = 0; + if (typeof re == "number") + if (re === 15) + var Re = 0, ve = Re, Ie = [0, [1, cr(0, function(Ct) { + return o(e0, 0, Ct); + }, Kr)]]; + else if (re === 40) + var ve = 0, Ie = [0, [2, cr(0, u(k0, 0), Kr)]]; + else + xe = 1; + else + xe = 1; + if (xe) { + var Ge = u(mn[1], Kr), Me = x(0, 0, Kr); + if (Me[0] === 0) + var Ae = Me[1], cn = Ge; + else + var an = 0, We = function(Wu, lt) { + return o(Qe(Wu, _v, Pn), Wu, lt); + }, Ae = an, cn = o(Me[1][2], Ge, We); + var ve = Ae, Ie = [0, [3, cn]]; + } + var rn = lr([0, Ur], [0, ve], 0); + return [6, [0, [0, h0[1]], Ie, 0, 0, rn]]; + case 0: + case 9: + case 12: + case 13: + case 25: + var kn = A0(P0); + if (typeof kn == "number") { + var vn = 0; + if (25 <= kn) + if (29 <= kn) { + if (kn === 40) { + var Ne = [0, [2, cr(0, u(k0, 0), P0)]]; + vn = 1; + } + } else + 27 <= kn && (vn = 2); + else if (kn === 15) { + var Ne = [0, [1, cr(0, function(du) { + return o(e0, 0, du); + }, P0)]]; + vn = 1; + } else + 24 <= kn && (vn = 2); + var Je = 0; + switch (vn) { + case 0: + break; + case 2: + var en = 0; + typeof kn == "number" ? kn === 27 ? je(P0, 72) : kn === 28 ? je(P0, 71) : en = 1 : en = 1; + var Ne = [0, [0, cr(0, function(du) { + return o(l, du, 0); + }, P0)]]; + Je = 1; + break; + default: + Je = 1; + } + if (Je) + return [6, [0, 0, Ne, 0, 0, lr([0, I0], 0, 0)]]; + } + throw [0, Sn, o0e]; + } + } + var _n = A0(P0), Cn = 0; + typeof _n == "number" ? _n === 53 ? je(P0, 74) : _n === 61 ? je(P0, 73) : Cn = 1 : Cn = 1, Y0(P0, 0); + var Hn = ur(U0, 0, P0, 0); + Y0(P0, 1); + var Fn = A0(P0), vt = 0; + if (typeof Fn != "number" && Fn[0] === 4 && !n0(Fn[3], x0e)) { + var Nt = u(E0, P0), gt = Nt[2], Zt = [0, Nt[1]]; + vt = 1; + } + if (!vt) { + o(b, P0, Hn); + var qt = x(0, 0, P0), Ft = qt[0] === 0 ? qt[1] : qt[1][1], gt = Ft, Zt = 0; + } + return [6, [0, 0, 0, [0, [0, Hn]], Zt, lr([0, I0], [0, gt], 0)]]; + } + var U = 0; + return function(Y) { + return cr(U, I, Y); + }; + }), [0, Rr, Ir, $0, B, Br, E, d, y, T, Ar, w0, X, M, Lr, p, R0, be, Fr, m0, $r, K, P, i0, T0, A, b0, er]; + }(R9), Ge0 = function(t) { + var n = function y(T, E) { + return y.fun(T, E); + }, e = function y(T, E) { + return y.fun(T, E); + }, i = function y(T, E) { + return y.fun(T, E); + }; + N(n, function(y, T) { + for (var E = T[2], d = E[2], w = a2(y), G = 0, A = E[1]; ; ) { + if (A) { + var S = A[1]; + if (S[0] === 0) { + var M = S[1], K = M[2]; + switch (K[0]) { + case 0: + var V = K[2], f0 = K[1]; + switch (f0[0]) { + case 0: + var m0 = [0, f0[1]]; + break; + case 1: + var m0 = [1, f0[1]]; + break; + case 2: + var m0 = ke(t0e); + break; + default: + var m0 = [2, f0[1]]; + } + var k0 = V[2], g0 = 0; + if (k0[0] === 2) { + var e0 = k0[1]; + if (!e0[1]) { + var x0 = [0, e0[3]], l = e0[2]; + g0 = 1; + } + } + if (!g0) + var x0 = 0, l = o(i, y, V); + var c0 = [0, [0, [0, M[1], [0, m0, l, x0, K[3]]]], G]; + break; + case 1: + ue(y, [0, K[2][1], 97]); + var c0 = G; + break; + default: + ue(y, [0, K[2][1], u0e]); + var c0 = G; + } + var G = c0, A = A[2]; + continue; + } + var t0 = S[1], o0 = t0[1]; + if (A[2]) { + ue(y, [0, o0, 66]); + var A = A[2]; + continue; + } + var w0 = t0[2], _0 = w0[2], G = [0, [1, [0, o0, [0, o(i, y, w0[1]), _0]]], G], A = 0; + continue; + } + var E0 = [0, [0, ye(G), w, d]]; + return [0, T[1], E0]; + } + }); + function x(y, T) { + return u(se[23], T) ? [0, o(i, y, T)] : (ue(y, [0, T[1], 26]), 0); + } + N(e, function(y, T) { + for (var E = T[2], d = E[2], w = a2(y), G = 0, A = E[1]; ; ) { + if (A) { + var S = A[1]; + switch (S[0]) { + case 0: + var M = S[1], K = M[2]; + if (K[0] === 2) { + var V = K[1]; + if (!V[1]) { + var G = [0, [0, [0, M[1], [0, V[2], [0, V[3]]]]], G], A = A[2]; + continue; + } + } + var f0 = x(y, M); + if (f0) + var m0 = f0[1], k0 = [0, [0, [0, m0[1], [0, m0, 0]]], G]; + else + var k0 = G; + var G = k0, A = A[2]; + continue; + case 1: + var g0 = S[1], e0 = g0[1]; + if (A[2]) { + ue(y, [0, e0, 65]); + var A = A[2]; + continue; + } + var x0 = g0[2], l = x(y, x0[1]), c0 = l ? [0, [1, [0, e0, [0, l[1], x0[2]]]], G] : G, G = c0, A = 0; + continue; + default: + var G = [0, [2, S[1]], G], A = A[2]; + continue; + } + } + var t0 = [1, [0, ye(G), w, d]]; + return [0, T[1], t0]; + } + }), N(i, function(y, T) { + var E = T[2], d = T[1]; + switch (E[0]) { + case 0: + return o(e, y, [0, d, E[1]]); + case 10: + var w = E[1], G = w[2][1], A = w[1], S = 0; + if (y[5] && js(G) ? ue(y, [0, A, 52]) : S = 1, S && 1 - y[5]) { + var M = 0; + if (y[17] && qn(G, e0e) ? ue(y, [0, A, 93]) : M = 1, M) { + var K = y[18], V = K && qn(G, n0e); + V && ue(y, [0, A, 92]); + } + } + return [0, d, [2, [0, w, a2(y), 0]]]; + case 19: + return o(n, y, [0, d, E[1]]); + default: + return [0, d, [3, [0, d, E]]]; + } + }); + function c(y) { + function T(w) { + var G = A0(w); + return typeof G == "number" && G === 82 ? (Y0(w, 82), [0, u(se[10], w)]) : 0; + } + function E(w) { + var G = pr(w); + Y0(w, 0); + for (var A = 0, S = 0, M = 0; ; ) { + var K = A0(w); + if (typeof K == "number") { + var V = 0; + if ((K === 1 || Pn === K) && (V = 1), V) { + S && ue(w, [0, S[1], 98]); + var f0 = ye(M), m0 = pr(w); + Y0(w, 1); + var k0 = we(w), g0 = A0(w) === 86 ? [1, u(t[9], w)] : a2(w); + return [0, [0, f0, g0, yu([0, G], [0, k0], m0, 0)]]; + } + } + if (A0(w) === 12) + var e0 = pr(w), x0 = cr(0, function(Jr) { + return Y0(Jr, 12), p(Jr, y); + }, w), l = lr([0, e0], 0, 0), c0 = [0, [1, [0, x0[1], [0, x0[2], l]]]]; + else { + var t0 = Pe(w), o0 = o(se[20], 0, w), w0 = A0(w), _0 = 0; + if (typeof w0 == "number" && w0 === 86) { + Y0(w, 86); + var E0 = cr([0, t0], function(ar) { + var _r = p(ar, y); + return [0, _r, T(ar)]; + }, w), U0 = E0[2], b = o0[2]; + switch (b[0]) { + case 0: + var R0 = [0, b[1]]; + break; + case 1: + var R0 = [1, b[1]]; + break; + case 2: + var R0 = ke($Qr); + break; + default: + var R0 = [2, b[1]]; + } + var c0 = [0, [0, [0, E0[1], [0, R0, U0[1], U0[2], 0]]]]; + } else + _0 = 1; + if (_0) { + var X = o0[2]; + if (X[0] === 1) { + var s0 = X[1], hr = s0[2][1], Ar = s0[1], or = 0; + kL(hr) && n0(hr, QQr) && n0(hr, r0e) && (ue(w, [0, Ar, 2]), or = 1), !or && f2(hr) && V7(w, [0, Ar, 55]); + var W0 = cr([0, t0], function(ar, _r) { + return function(Ir) { + var fe = [0, _r, [2, [0, ar, a2(Ir), 0]]]; + return [0, fe, T(Ir)]; + }; + }(s0, Ar), w), Lr = W0[2], c0 = [0, [0, [0, W0[1], [0, [1, s0], Lr[1], Lr[2], 1]]]]; + } else { + St(ZQr, w); + var c0 = 0; + } + } + } + if (c0) { + var Tr = c0[1], Hr = A ? (ue(w, [0, Tr[1][1], 66]), 0) : S; + if (Tr[0] === 0) + var Rr = Hr, Wr = A; + else + var Or = A0(w) === 9 ? 1 : 0, fr = Or && [0, Pe(w)], Rr = fr, Wr = 1; + A0(w) !== 1 && Y0(w, 9); + var A = Wr, S = Rr, M = [0, Tr, M]; + continue; + } + } + } + var d = 0; + return function(w) { + return cr(d, E, w); + }; + } + function s(y) { + function T(d) { + var w = pr(d); + Y0(d, 6); + for (var G = 0; ; ) { + var A = A0(d); + if (typeof A == "number") { + var S = 0; + if (13 <= A) + Pn === A && (S = 1); + else if (7 <= A) + switch (A - 7 | 0) { + case 2: + var M = Pe(d); + Y0(d, 9); + var G = [0, [2, M], G]; + continue; + case 5: + var K = pr(d), V = cr(0, function(_0) { + return Y0(_0, 12), p(_0, y); + }, d), f0 = V[1], m0 = lr([0, K], 0, 0), k0 = [1, [0, f0, [0, V[2], m0]]]; + A0(d) !== 7 && (ue(d, [0, f0, 65]), A0(d) === 9 && ie(d)); + var G = [0, k0, G]; + continue; + case 0: + S = 1; + break; + } + if (S) { + var g0 = ye(G), e0 = pr(d); + Y0(d, 7); + var x0 = A0(d) === 86 ? [1, u(t[9], d)] : a2(d); + return [1, [0, g0, x0, yu([0, w], [0, we(d)], e0, 0)]]; + } + } + var l = cr(0, function(w0) { + var _0 = p(w0, y), E0 = A0(w0), U0 = 0; + if (typeof E0 == "number" && E0 === 82) { + Y0(w0, 82); + var b = [0, u(se[10], w0)]; + U0 = 1; + } + if (!U0) + var b = 0; + return [0, _0, b]; + }, d), c0 = l[2], t0 = [0, [0, l[1], [0, c0[1], c0[2]]]]; + A0(d) !== 7 && Y0(d, 9); + var G = [0, t0, G]; + } + } + var E = 0; + return function(d) { + return cr(E, T, d); + }; + } + function p(y, T) { + var E = A0(y); + if (typeof E == "number") { + if (E === 6) + return u(s(T), y); + if (!E) + return u(c(T), y); + } + var d = ur(se[14], y, 0, T); + return [0, d[1], [2, d[2]]]; + } + return [0, n, e, i, c, s, p]; + }(mn), une = Zee(se), ine = mn[9]; + function Me0(t, n) { + var e = A0(n), i = 0; + if (typeof e == "number" ? e === 28 ? n[5] ? je(n, 55) : n[14] && St(0, n) : e === 58 ? n[17] ? je(n, 2) : n[5] && je(n, 55) : e === 65 ? n[18] && je(n, 2) : i = 1 : i = 1, i) + if (dL(e)) + gi(n, 55); + else { + var x = 0; + if (typeof e == "number") + switch (e) { + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 43: + case 44: + case 45: + case 46: + case 47: + case 49: + case 50: + case 51: + case 58: + case 59: + case 65: + var c = 1; + x = 1; + break; + } + else if (e[0] === 4 && xe0(e[3])) { + var c = 1; + x = 1; + } + if (!x) + var c = 0; + var s = 0; + if (c) + var p = c; + else { + var y = hL(e); + if (y) + var p = y; + else { + var T = 0; + if (typeof e == "number") + switch (e) { + case 29: + case 30: + case 31: + break; + default: + T = 1; + } + else if (e[0] === 4) { + var E = e[3]; + n0(E, XRr) && n0(E, YRr) && n0(E, VRr) && (T = 1); + } else + T = 1; + if (T) { + var d = 0; + s = 1; + } else + var p = 1; + } + } + if (!s) + var d = p; + if (d) + St(0, n); + else { + var w = 0; + t && oe0(e) ? gi(n, t[1]) : w = 1; + } + } + return z7(n); + } + var Be0 = function t(n) { + return t.fun(n); + }, jL = function t(n, e, i) { + return t.fun(n, e, i); + }, GL = function t(n) { + return t.fun(n); + }, qe0 = function t(n, e) { + return t.fun(n, e); + }, ML = function t(n, e) { + return t.fun(n, e); + }, BL = function t(n, e) { + return t.fun(n, e); + }, j9 = function t(n, e) { + return t.fun(n, e); + }, xb = function t(n, e) { + return t.fun(n, e); + }, G9 = function t(n) { + return t.fun(n); + }, Ue0 = function t(n) { + return t.fun(n); + }, He0 = function t(n) { + return t.fun(n); + }, Xe0 = function t(n, e, i) { + return t.fun(n, e, i); + }, Ye0 = function t(n) { + return t.fun(n); + }, Ve0 = function t(n) { + return t.fun(n); + }, ze0 = Us[3], fne = ci[3], xne = ci[1], one = ci[5], ane = Us[2], cne = Us[1], sne = Us[4], vne = ci[4], lne = ci[6], bne = une[13], pne = Ge0[6], mne = Ge0[3]; + N(Be0, function(t) { + var n = pr(t), e = ye(n), i = 5; + r: + for (; ; ) { + if (e) + for (var x = e[2], c = e[1], s = c[2], p = c[1], y = s[2], T = 0, E = un(y); ; ) { + if (E < (T + 5 | 0)) + var d = 0; + else { + var w = qn(m7(y, T, i), kRr); + if (!w) { + var T = T + 1 | 0; + continue; + } + var d = w; + } + if (!d) { + var e = x; + continue r; + } + t[30][1] = p[3]; + var G = ye([0, [0, p, s], x]); + break; + } + else + var G = e; + if (G === 0) { + var A = 0; + if (n) { + var S = n[1], M = S[2]; + if (!M[1]) { + var K = M[2], V = 0; + if (1 <= un(K) && It(K, 0) === 42) { + t[30][1] = S[1][3]; + var f0 = [0, S, 0]; + A = 1, V = 1; + } + } + } + if (!A) + var f0 = 0; + } else + var f0 = G; + var m0 = o(qe0, t, function(c0) { + return 0; + }), k0 = Pe(t); + Y0(t, Pn); + var g0 = Mu[1]; + if (le(function(c0, t0) { + var o0 = t0[2]; + switch (o0[0]) { + case 17: + return fb(t, c0, Rc(0, [0, o0[1][1], ore])); + case 18: + var w0 = o0[1], _0 = w0[1]; + if (_0) { + if (!w0[2]) { + var E0 = _0[1], U0 = E0[2], b = 0; + switch (U0[0]) { + case 34: + var R0 = U0[1][1], X = 0, s0 = le(function(Tr, Hr) { + return le(RL, Tr, [0, Hr[2][1], 0]); + }, X, R0); + return le(function(Tr, Hr) { + return fb(t, Tr, Hr); + }, c0, s0); + case 2: + case 23: + var hr = U0[1][1]; + if (hr) + var Ar = hr[1]; + else + b = 1; + break; + case 16: + case 26: + case 32: + case 33: + var Ar = U0[1][1]; + break; + default: + b = 1; + } + return b ? c0 : fb(t, c0, Rc(0, [0, E0[1], Ar[2][1]])); + } + } else { + var or = w0[2]; + if (or) { + var W0 = or[1]; + if (W0[0] === 0) { + var Lr = W0[1]; + return le(function(Tr, Hr) { + var Or = Hr[2], fr = Or[2]; + return fr ? fb(t, Tr, fr[1]) : fb(t, Tr, Or[1]); + }, c0, Lr); + } + return c0; + } + } + return c0; + default: + return c0; + } + }, g0, m0), m0) + var e0 = bl(ye(m0))[1], x0 = yt(bl(m0)[1], e0); + else + var x0 = k0; + var l = ye(t[2][1]); + return [0, x0, [0, m0, lr([0, f0], 0, 0), l]]; + } + }), N(jL, function(t, n, e) { + for (var i = ee0(1, t), x = ire; ; ) { + var c = x[3], s = x[2], p = x[1], y = A0(i), T = 0; + if (typeof y == "number" && Pn === y) + var E = [0, i, p, s, c]; + else + T = 1; + if (T) + if (u(n, y)) + var E = [0, i, p, s, c]; + else { + var d = 0; + if (typeof y == "number" || y[0] !== 2) + d = 1; + else { + var w = u(e, i), G = [0, w, s], A = w[2]; + if (A[0] === 19) { + var S = A[1][2]; + if (S) { + var M = qn(S[1], ure), K = M && 1 - i[20]; + K && ue(i, [0, w[1], 43]); + var V = M ? _s(1, i) : i, f0 = [0, y, p], m0 = c || M, i = V, x = [0, f0, G, m0]; + continue; + } + } + var E = [0, i, p, G, c]; + } + if (d) + var E = [0, i, p, s, c]; + } + var k0 = ee0(0, i), g0 = ye(p); + return Du(function(e0) { + if (typeof e0 != "number" && e0[0] === 2) { + var x0 = e0[1], l = x0[4]; + return l && V7(k0, [0, x0[1], 45]); + } + return ke(Te(xre, Te(wr0(e0), fre))); + }, g0), [0, k0, E[3], c]; + } + }), N(GL, function(t) { + var n = u(Us[6], t), e = A0(t); + if (typeof e == "number") { + var i = e - 49 | 0; + if (!(11 < i >>> 0)) + switch (i) { + case 0: + return o(ht[16], n, t); + case 1: + u(A9(t), n); + var x = Yn(1, t); + if (typeof x == "number") { + var c = 0; + if ((x === 4 || x === 10) && (c = 1), c) + return u(ht[17], t); + } + return u(ht[18], t); + case 11: + if (Yn(1, t) === 49) + return u(A9(t), n), o(ht[12], 0, t); + break; + } + } + return o(xb, [0, n], t); + }), N(qe0, function(t, n) { + var e = ur(jL, t, n, GL), i = o(ML, n, e[1]), x = e[2]; + return le(function(c, s) { + return [0, s, c]; + }, i, x); + }), N(ML, function(t, n) { + for (var e = 0; ; ) { + var i = A0(n); + if (typeof i == "number" && Pn === i || u(t, i)) + return ye(e); + var e = [0, u(GL, n), e]; + } + }), N(BL, function(t, n) { + var e = ur(jL, n, t, function(s) { + return o(xb, 0, s); + }), i = o(j9, t, e[1]), x = e[2], c = le(function(s, p) { + return [0, p, s]; + }, i, x); + return [0, c, e[3]]; + }), N(j9, function(t, n) { + for (var e = 0; ; ) { + var i = A0(n); + if (typeof i == "number" && Pn === i || u(t, i)) + return ye(e); + var e = [0, o(xb, 0, n), e]; + } + }), N(xb, function(t, n) { + var e = t && t[1]; + 1 - $l(n) && u(A9(n), e); + var i = A0(n); + if (typeof i == "number") { + if (i === 27) + return u(ht[27], n); + if (i === 28) + return u(ht[3], n); + } + if (Gs(n)) + return u(Vn[10], n); + if ($l(n)) + return o(ze0, n, e); + if (typeof i == "number") { + var x = i + Wt | 0; + if (!(14 < x >>> 0)) + switch (x) { + case 0: + if (n[27][1]) + return u(Vn[11], n); + break; + case 5: + return u(ht[19], n); + case 12: + return o(ht[11], 0, n); + case 13: + return u(ht[25], n); + case 14: + return u(ht[21], n); + } + } + return u(G9, n); + }), N(G9, function(t) { + var n = A0(t); + if (typeof n == "number") + switch (n) { + case 0: + return u(ht[7], t); + case 8: + return u(ht[15], t); + case 19: + return u(ht[22], t); + case 20: + return u(ht[23], t); + case 22: + return u(ht[24], t); + case 23: + return u(ht[4], t); + case 24: + return u(ht[26], t); + case 25: + return u(ht[5], t); + case 26: + return u(ht[6], t); + case 32: + return u(ht[8], t); + case 35: + return u(ht[9], t); + case 37: + return u(ht[14], t); + case 39: + return u(ht[1], t); + case 59: + return u(ht[10], t); + case 113: + return St(ere, t), [0, Pe(t), nre]; + case 16: + case 43: + return u(ht[2], t); + case 1: + case 5: + case 7: + case 9: + case 10: + case 11: + case 12: + case 17: + case 18: + case 33: + case 34: + case 36: + case 38: + case 41: + case 42: + case 49: + case 83: + case 86: + return St(tre, t), ie(t), u(G9, t); + } + if (Gs(t)) { + var e = u(Vn[10], t); + return M1(t, e[1]), e; + } + if (typeof n == "number" && n === 28 && Yn(1, t) === 6) { + var i = Wl(1, t); + return ue(t, [0, yt(Pe(t), i), 94]), u(ht[17], t); + } + return G1(t) ? u(ht[20], t) : ($l(t) && (St(0, t), ie(t)), u(ht[17], t)); + }), N(Ue0, function(t) { + var n = Pe(t), e = u(ci[1], t), i = A0(t); + return typeof i == "number" && i === 9 ? ur(ci[7], t, n, [0, e, 0]) : e; + }), N(He0, function(t) { + var n = Pe(t), e = u(ci[2], t), i = A0(t); + if (typeof i == "number" && i === 9) { + var x = [0, o(R9[1], t, e), 0]; + return [0, ur(ci[7], t, n, x)]; + } + return e; + }), N(Xe0, function(t, n, e) { + var i = n && n[1]; + return cr(0, function(x) { + var c = 1 - i, s = Me0([0, e], x), p = c && (A0(x) === 85 ? 1 : 0); + return p && (1 - fu(x) && je(x, 12), Y0(x, 85)), [0, s, u(mn[10], x), p]; + }, t); + }), N(Ye0, function(t) { + var n = Pe(t), e = pr(t); + Y0(t, 0); + var i = o(j9, function(y) { + return y === 1 ? 1 : 0; + }, t), x = i === 0 ? 1 : 0, c = Pe(t), s = x && pr(t); + Y0(t, 1); + var p = [0, i, yu([0, e], [0, we(t)], s, 0)]; + return [0, yt(n, c), p]; + }), N(Ve0, function(t) { + function n(i) { + var x = pr(i); + Y0(i, 0); + var c = o(BL, function(S) { + return S === 1 ? 1 : 0; + }, i), s = c[1], p = s === 0 ? 1 : 0, y = p && pr(i); + Y0(i, 1); + var T = A0(i), E = 0; + if (!t) { + var d = 0; + if (typeof T == "number" && (T === 1 || Pn === T) && (d = 1), !d) { + var w = x7(i); + if (w) { + var G = Ms(i); + E = 1; + } else { + var G = w; + E = 1; + } + } + } + if (!E) + var G = we(i); + var A = yu([0, x], [0, G], y, 0); + return [0, [0, s, A], c[2]]; + } + var e = 0; + return function(i) { + return gL(e, n, i); + }; + }), mu(lre, se, [0, Be0, G9, xb, j9, BL, ML, Ue0, He0, fne, xne, one, ane, Me0, Xe0, Ye0, Ve0, bne, pne, mne, cne, ze0, sne, vne, lne, ine]); + var Ke0 = [0, 0], We0 = bn; + function _ne(t) { + function n(e, i) { + var x = i[2], c = i[1], s = oL(x), p = [0, [0, bre, u(t[1], s)], 0], y = C9(e, c[3]), T = [0, u(t[5], y), 0], E = C9(e, c[2]), d = [0, u(t[5], E), T], w = [0, [0, pre, u(t[4], d)], p], G = [0, [0, mre, u(t[5], c[3][2])], 0], A = [0, [0, _re, u(t[5], c[3][1])], G], S = [0, [0, yre, u(t[3], A)], 0], M = [0, [0, hre, u(t[5], c[2][2])], 0], K = [0, [0, dre, u(t[5], c[2][1])], M], V = [0, [0, kre, u(t[3], K)], S], f0 = [0, [0, wre, u(t[3], V)], w]; + switch (i[3]) { + case 0: + var m0 = Ere; + break; + case 1: + var m0 = Sre; + break; + case 2: + var m0 = gre; + break; + case 3: + var m0 = Fre; + break; + case 4: + var m0 = Tre; + break; + default: + var m0 = Ore; + } + var k0 = [0, [0, Ire, u(t[1], m0)], f0], g0 = wr0(x), e0 = [0, [0, Are, u(t[1], g0)], k0]; + return u(t[3], e0); + } + return [0, n, function(e, i) { + var x = ye(Fp(function(c) { + return n(e, c); + }, i)); + return u(t[4], x); + }]; + } + var yne = S70; + function U1(t) { + return g70(_l(t)); + } + function hu(t) { + return E70(_l(t)); + } + function hne(t) { + return t; + } + function dne(t) { + return t; + } + function Je0(t, n, e) { + try { + var i = new RegExp(bn(n), bn(e)); + return i; + } catch { + return i7; + } + } + var kne = _ne([0, We0, yne, U1, hu, hne, dne, i7, Je0]), wne = [0, 1], $e0 = function(t) { + function n(E, d) { + return hu(ye(Fp(E, d))); + } + function e(E, d) { + return d ? u(E, d[1]) : i7; + } + function i(E, d) { + return d[0] === 0 ? i7 : u(E, d[1]); + } + function x(E) { + return U1([0, [0, AWr, E[1]], [0, [0, IWr, E[2]], 0]]); + } + function c(E) { + var d = E[1], w = d ? bn(d[1][1]) : i7, G = [0, [0, FWr, x(E[3])], 0]; + return U1([0, [0, OWr, w], [0, [0, TWr, x(E[2])], G]]); + } + function s(E) { + return n(function(d) { + var w = d[2], G = 0; + if (typeof w == "number") { + var A = w; + if (55 <= A) + switch (A) { + case 55: + var S = nmr; + break; + case 56: + var S = tmr; + break; + case 57: + var S = umr; + break; + case 58: + var S = imr; + break; + case 59: + var S = fmr; + break; + case 60: + var S = xmr; + break; + case 61: + var S = Te(amr, omr); + break; + case 62: + var S = Te(smr, cmr); + break; + case 63: + var S = Te(lmr, vmr); + break; + case 64: + var S = bmr; + break; + case 65: + var S = pmr; + break; + case 66: + var S = mmr; + break; + case 67: + var S = _mr; + break; + case 68: + var S = ymr; + break; + case 69: + var S = hmr; + break; + case 70: + var S = dmr; + break; + case 71: + var S = kmr; + break; + case 72: + var S = wmr; + break; + case 73: + var S = Emr; + break; + case 74: + var S = Smr; + break; + case 75: + var S = gmr; + break; + case 76: + var S = Fmr; + break; + case 77: + var S = Tmr; + break; + case 78: + var S = Omr; + break; + case 79: + var S = Imr; + break; + case 80: + var S = Amr; + break; + case 81: + var S = Nmr; + break; + case 82: + var S = Te(Pmr, Cmr); + break; + case 83: + var S = Dmr; + break; + case 84: + var S = Lmr; + break; + case 85: + var S = Rmr; + break; + case 86: + var S = jmr; + break; + case 87: + var S = Gmr; + break; + case 88: + var S = Mmr; + break; + case 89: + var S = Bmr; + break; + case 90: + var S = qmr; + break; + case 91: + var S = Umr; + break; + case 92: + var S = Hmr; + break; + case 93: + var S = Xmr; + break; + case 94: + var S = Te(Vmr, Ymr); + break; + case 95: + var S = zmr; + break; + case 96: + var S = Kmr; + break; + case 97: + var S = Wmr; + break; + case 98: + var S = Jmr; + break; + case 99: + var S = $mr; + break; + case 100: + var S = Zmr; + break; + case 101: + var S = Qmr; + break; + case 102: + var S = r9r; + break; + case 103: + var S = e9r; + break; + case 104: + var S = n9r; + break; + case 105: + var S = t9r; + break; + case 106: + var S = u9r; + break; + case 107: + var S = i9r; + break; + default: + var S = f9r; + } + else + switch (A) { + case 0: + var S = r5r; + break; + case 1: + var S = e5r; + break; + case 2: + var S = n5r; + break; + case 3: + var S = t5r; + break; + case 4: + var S = u5r; + break; + case 5: + var S = i5r; + break; + case 6: + var S = f5r; + break; + case 7: + var S = x5r; + break; + case 8: + var S = o5r; + break; + case 9: + var S = a5r; + break; + case 10: + var S = c5r; + break; + case 11: + var S = s5r; + break; + case 12: + var S = v5r; + break; + case 13: + var S = l5r; + break; + case 14: + var S = b5r; + break; + case 15: + var S = p5r; + break; + case 16: + var S = m5r; + break; + case 17: + var S = _5r; + break; + case 18: + var S = y5r; + break; + case 19: + var S = h5r; + break; + case 20: + var S = d5r; + break; + case 21: + var S = k5r; + break; + case 22: + var S = w5r; + break; + case 23: + var S = E5r; + break; + case 24: + var S = S5r; + break; + case 25: + var S = g5r; + break; + case 26: + var S = F5r; + break; + case 27: + var S = T5r; + break; + case 28: + var S = O5r; + break; + case 29: + var S = I5r; + break; + case 30: + var S = A5r; + break; + case 31: + var S = Te(C5r, N5r); + break; + case 32: + var S = P5r; + break; + case 33: + var S = D5r; + break; + case 34: + var S = L5r; + break; + case 35: + var S = R5r; + break; + case 36: + var S = j5r; + break; + case 37: + var S = G5r; + break; + case 38: + var S = M5r; + break; + case 39: + var S = B5r; + break; + case 40: + var S = q5r; + break; + case 41: + var S = U5r; + break; + case 42: + var S = H5r; + break; + case 43: + var S = X5r; + break; + case 44: + var S = Y5r; + break; + case 45: + var S = V5r; + break; + case 46: + var S = z5r; + break; + case 47: + var S = K5r; + break; + case 48: + var S = W5r; + break; + case 49: + var S = J5r; + break; + case 50: + var S = $5r; + break; + case 51: + var S = Z5r; + break; + case 52: + var S = Q5r; + break; + case 53: + var S = rmr; + break; + default: + var S = emr; + } + } else + switch (w[0]) { + case 0: + var M = w[2], K = w[1], S = ur(et(x9r), M, M, K); + break; + case 1: + var V = w[1], f0 = w[2], S = o(et(o9r), f0, V); + break; + case 2: + var m0 = w[1], S = u(et(a9r), m0); + break; + case 3: + var k0 = w[2], g0 = w[1], e0 = u(et(c9r), g0); + if (k0) + var x0 = k0[1], S = o(et(s9r), x0, e0); + else + var S = u(et(v9r), e0); + break; + case 4: + var l = w[1], S = o(et(l9r), l, l); + break; + case 5: + var c0 = w[3], t0 = w[2], o0 = w[1]; + if (t0) { + var w0 = t0[1]; + if (3 <= w0) + var S = o(et(b9r), c0, o0); + else { + switch (w0) { + case 0: + var _0 = Jpr; + break; + case 1: + var _0 = $pr; + break; + case 2: + var _0 = Zpr; + break; + default: + var _0 = Qpr; + } + var S = R(et(p9r), o0, _0, c0, _0); + } + } else + var S = o(et(m9r), c0, o0); + break; + case 6: + var E0 = w[2], U0 = E0; + if (b7(U0) === 0) + var b = U0; + else { + var R0 = sz(U0); + Jn(R0, 0, xz(Xu(U0, 0))); + var b = R0; + } + var X = b, s0 = w[1], S = ur(et(_9r), E0, X, s0); + break; + case 7: + var S = w[1] ? y9r : h9r; + break; + case 8: + var hr = w[1], Ar = w[2], S = o(et(d9r), Ar, hr); + break; + case 9: + var or = w[1], S = u(et(k9r), or); + break; + case 10: + var W0 = w[1], S = u(et(w9r), W0); + break; + case 11: + var Lr = w[2], Tr = w[1], S = o(et(E9r), Tr, Lr); + break; + case 12: + var Hr = w[2], Or = w[1], S = o(et(S9r), Or, Hr); + break; + case 13: + var S = Te(F9r, Te(w[1], g9r)); + break; + case 14: + var fr = w[1] ? T9r : O9r, S = u(et(I9r), fr); + break; + case 15: + var S = Te(N9r, Te(w[1], A9r)); + break; + case 16: + var Rr = Te(P9r, Te(w[2], C9r)), S = Te(w[1], Rr); + break; + case 17: + var S = Te(D9r, w[1]); + break; + case 18: + var S = w[1] ? Te(R9r, L9r) : Te(G9r, j9r); + break; + case 19: + var Wr = w[1], S = u(et(M9r), Wr); + break; + case 20: + var S = Te(q9r, Te(w[1], B9r)); + break; + case 21: + var Jr = w[1], ar = w[2] ? U9r : H9r, _r = w[4] ? Te(X9r, Jr) : Jr, Ir = w[3] ? Y9r : V9r, S = Te(W9r, Te(ar, Te(Ir, Te(K9r, Te(_r, z9r))))); + break; + case 22: + var S = Te($9r, Te(w[1], J9r)); + break; + default: + var fe = w[1], S = u(et(Z9r), fe); + } + var v0 = [0, [0, SWr, bn(S)], G]; + return U1([0, [0, gWr, c(d[1])], v0]); + }, E); + } + function p(E) { + if (E) { + var d = E[1], w = [0, on(d[3], d[2])]; + return lr([0, d[1]], w, 0); + } + return E; + } + function y(E) { + function d(_) { + return n(q0, _); + } + function w(_, k, I, U) { + var Y = t[1]; + if (Y) { + if (E) + var y0 = E[1], P0 = [0, C9(y0, k[3]), 0], I0 = [0, [0, iGr, hu([0, C9(y0, k[2]), P0])], 0]; + else + var I0 = E; + var D = on(I0, [0, [0, fGr, c(k)], 0]); + } else + var D = Y; + if (I) { + var u0 = I[1], X0 = u0[1]; + if (X0) { + var J0 = u0[2]; + if (J0) + var ir = [0, [0, xGr, d(J0)], 0], Q0 = [0, [0, oGr, d(X0)], ir]; + else + var Q0 = [0, [0, aGr, d(X0)], 0]; + var mr = Q0; + } else + var F0 = u0[2], Sr = F0 && [0, [0, cGr, d(F0)], 0], mr = Sr; + var Cr = mr; + } else + var Cr = I; + return U1(Lc(on(D, on(Cr, [0, [0, sGr, bn(_)], 0])), U)); + } + function G(_) { + return n(Q, _); + } + function A(_) { + var k = _[2], I = G(k[1]), U = [0, [0, lGr, I], [0, [0, vGr, d(k[3])], 0]]; + return w(bGr, _[1], k[2], U); + } + function S(_) { + var k = _[2]; + return w(Vqr, _[1], k[2], [0, [0, Yqr, bn(k[1])], [0, [0, Xqr, i7], [0, [0, Hqr, false], 0]]]); + } + function M(_) { + if (_[0] === 0) + return S(_[1]); + var k = _[1], I = k[2], U = M(I[1]), Y = [0, [0, Mzr, U], [0, [0, Gzr, S(I[2])], 0]]; + return w(Bzr, k[1], 0, Y); + } + function K(_) { + var k = _[2], I = k[1], U = I[0] === 0 ? S(I[1]) : K(I[1]), Y = [0, [0, wzr, U], [0, [0, kzr, S(k[2])], 0]]; + return w(Ezr, _[1], 0, Y); + } + function V(_) { + var k = _[2], I = k[1], U = I[0] === 0 ? S(I[1]) : K(I[1]), Y = [0, [0, gzr, U], [0, [0, Szr, e($r, k[2])], 0]]; + return w(Fzr, _[1], k[3], Y); + } + function f0(_) { + var k = _[2], I = k[2], U = k[1], Y = _[1]; + if (typeof U == "number") + var y0 = i7; + else + switch (U[0]) { + case 0: + var y0 = bn(U[1]); + break; + case 1: + var y0 = !!U[1]; + break; + case 2: + var y0 = U[1]; + break; + case 3: + var y0 = ke(bYr); + break; + default: + var P0 = U[1], y0 = Je0(Y, P0[1], P0[2]); + } + var I0 = 0; + if (typeof U != "number" && U[0] === 4) { + var D = U[1], u0 = [0, [0, _Yr, U1([0, [0, mYr, bn(D[1])], [0, [0, pYr, bn(D[2])], 0]])], 0], X0 = [0, [0, hYr, y0], [0, [0, yYr, bn(I)], u0]]; + I0 = 1; + } + if (!I0) + var X0 = [0, [0, kYr, y0], [0, [0, dYr, bn(I)], 0]]; + return w(wYr, Y, k[3], X0); + } + function m0(_) { + var k = [0, [0, Tzr, g0(_[2])], 0]; + return [0, [0, Ozr, g0(_[1])], k]; + } + function k0(_, k) { + var I = k[2], U = [0, [0, EVr, !!I[3]], 0], Y = [0, [0, SVr, g0(I[2])], U], y0 = [0, [0, gVr, e(S, I[1])], Y]; + return w(FVr, k[1], _, y0); + } + function g0(_) { + var k = _[2], I = _[1]; + switch (k[0]) { + case 0: + return w(iVr, I, k[1], 0); + case 1: + return w(fVr, I, k[1], 0); + case 2: + return w(xVr, I, k[1], 0); + case 3: + return w(oVr, I, k[1], 0); + case 4: + return w(aVr, I, k[1], 0); + case 5: + return w(sVr, I, k[1], 0); + case 6: + return w(vVr, I, k[1], 0); + case 7: + return w(lVr, I, k[1], 0); + case 8: + return w(bVr, I, k[1], 0); + case 9: + return w(cVr, I, k[1], 0); + case 10: + return w(tKr, I, k[1], 0); + case 11: + var U = k[1], Y = [0, [0, pVr, g0(U[1])], 0]; + return w(mVr, I, U[2], Y); + case 12: + return e0([0, I, k[1]]); + case 13: + return x0(1, [0, I, k[1]]); + case 14: + var y0 = k[1], P0 = [0, [0, mzr, x0(0, y0[1])], 0], I0 = [0, [0, _zr, n(fe, y0[2])], P0]; + return w(yzr, I, y0[3], I0); + case 15: + var D = k[1], u0 = [0, [0, hzr, g0(D[1])], 0]; + return w(dzr, I, D[2], u0); + case 16: + return V([0, I, k[1]]); + case 17: + var X0 = k[1], J0 = m0(X0); + return w(Izr, I, X0[3], J0); + case 18: + var ir = k[1], Q0 = ir[1], F0 = [0, [0, Azr, !!ir[2]], 0], Sr = on(m0(Q0), F0); + return w(Nzr, I, Q0[3], Sr); + case 19: + var mr = k[1], Cr = mr[1], sr = [0, [0, Czr, n(g0, [0, Cr[1], [0, Cr[2], Cr[3]]])], 0]; + return w(Pzr, I, mr[2], sr); + case 20: + var Pr = k[1], K0 = Pr[1], Ur = [0, [0, Dzr, n(g0, [0, K0[1], [0, K0[2], K0[3]]])], 0]; + return w(Lzr, I, Pr[2], Ur); + case 21: + var h0 = k[1], Kr = [0, [0, Rzr, M(h0[1])], 0]; + return w(jzr, I, h0[2], Kr); + case 22: + var re = k[1], xe = [0, [0, qzr, n(g0, re[1])], 0]; + return w(Uzr, I, re[2], xe); + case 23: + var Re = k[1]; + return w(Yzr, I, Re[3], [0, [0, Xzr, bn(Re[1])], [0, [0, Hzr, bn(Re[2])], 0]]); + case 24: + var ve = k[1]; + return w(Kzr, I, ve[3], [0, [0, zzr, ve[1]], [0, [0, Vzr, bn(ve[2])], 0]]); + case 25: + var Ie = k[1]; + return w($zr, I, Ie[3], [0, [0, Jzr, i7], [0, [0, Wzr, bn(Ie[2])], 0]]); + default: + var Ge = k[1], Me = Ge[1], an = 0, We = Me ? Zzr : Qzr; + return w(nKr, I, Ge[2], [0, [0, eKr, !!Me], [0, [0, rKr, bn(We)], an]]); + } + } + function e0(_) { + var k = _[2], I = k[2][2], U = k[4], Y = y7(p(I[4]), U), y0 = [0, [0, _Vr, e(qr, k[1])], 0], P0 = [0, [0, yVr, e(Mr, I[3])], y0], I0 = [0, [0, hVr, g0(k[3])], P0], D = [0, [0, dVr, e(Br, I[1])], I0], u0 = I[2], X0 = [0, [0, kVr, n(function(J0) { + return k0(0, J0); + }, u0)], D]; + return w(wVr, _[1], Y, X0); + } + function x0(_, k) { + var I = k[2], U = I[3], Y = le(function(ir, Q0) { + var F0 = ir[4], Sr = ir[3], mr = ir[2], Cr = ir[1]; + switch (Q0[0]) { + case 0: + var sr = Q0[1], Pr = sr[2], K0 = Pr[2], Ur = Pr[1]; + switch (Ur[0]) { + case 0: + var h0 = f0(Ur[1]); + break; + case 1: + var h0 = S(Ur[1]); + break; + case 2: + var h0 = ke(MVr); + break; + default: + var h0 = ke(BVr); + } + switch (K0[0]) { + case 0: + var xe = qVr, Re = g0(K0[1]); + break; + case 1: + var Kr = K0[1], xe = UVr, Re = e0([0, Kr[1], Kr[2]]); + break; + default: + var re = K0[1], xe = HVr, Re = e0([0, re[1], re[2]]); + } + var ve = [0, [0, XVr, bn(xe)], 0], Ie = [0, [0, YVr, e(Er, Pr[7])], ve]; + return [0, [0, w(ZVr, sr[1], Pr[8], [0, [0, $Vr, h0], [0, [0, JVr, Re], [0, [0, WVr, !!Pr[6]], [0, [0, KVr, !!Pr[3]], [0, [0, zVr, !!Pr[4]], [0, [0, VVr, !!Pr[5]], Ie]]]]]]), Cr], mr, Sr, F0]; + case 1: + var Ge = Q0[1], Me = Ge[2], an = [0, [0, QVr, g0(Me[1])], 0]; + return [0, [0, w(rzr, Ge[1], Me[2], an), Cr], mr, Sr, F0]; + case 2: + var We = Q0[1], Ae = We[2], cn = [0, [0, ezr, e(Er, Ae[5])], 0], rn = [0, [0, nzr, !!Ae[4]], cn], kn = [0, [0, tzr, g0(Ae[3])], rn], vn = [0, [0, uzr, g0(Ae[2])], kn], Ne = [0, [0, izr, e(S, Ae[1])], vn]; + return [0, Cr, [0, w(fzr, We[1], Ae[6], Ne), mr], Sr, F0]; + case 3: + var Je = Q0[1], en = Je[2], _n = [0, [0, xzr, !!en[2]], 0], Cn = [0, [0, ozr, e0(en[1])], _n]; + return [0, Cr, mr, [0, w(azr, Je[1], en[3], Cn), Sr], F0]; + default: + var Hn = Q0[1], Fn = Hn[2], vt = [0, [0, czr, g0(Fn[2])], 0], Nt = [0, [0, lzr, !!Fn[3]], [0, [0, vzr, !!Fn[4]], [0, [0, szr, !!Fn[5]], vt]]], gt = [0, [0, bzr, S(Fn[1])], Nt]; + return [0, Cr, mr, Sr, [0, w(pzr, Hn[1], Fn[6], gt), F0]]; + } + }, NVr, U), y0 = [0, [0, CVr, hu(ye(Y[4]))], 0], P0 = [0, [0, PVr, hu(ye(Y[3]))], y0], I0 = [0, [0, DVr, hu(ye(Y[2]))], P0], D = [0, [0, LVr, hu(ye(Y[1]))], I0], u0 = [0, [0, RVr, !!I[1]], D], X0 = _ ? [0, [0, jVr, !!I[2]], u0] : u0, J0 = p(I[4]); + return w(GVr, k[1], J0, X0); + } + function l(_) { + var k = [0, [0, uKr, g0(_[2])], 0]; + return w(iKr, _[1], 0, k); + } + function c0(_) { + var k = _[2]; + switch (k[2]) { + case 0: + var I = KYr; + break; + case 1: + var I = WYr; + break; + default: + var I = JYr; + } + var U = [0, [0, $Yr, bn(I)], 0], Y = [0, [0, ZYr, n($0, k[1])], U]; + return w(QYr, _[1], k[3], Y); + } + function t0(_) { + var k = _[2]; + return w(NYr, _[1], k[3], [0, [0, AYr, bn(k[1])], [0, [0, IYr, bn(k[2])], 0]]); + } + function o0(_) { + var k = _[2], I = [0, [0, IXr, i1], [0, [0, OXr, l(k[1])], 0]]; + return w(AXr, _[1], k[2], I); + } + function w0(_, k) { + var I = k[1][2], U = [0, [0, $qr, !!k[3]], 0], Y = [0, [0, Zqr, i(l, k[2])], U]; + return w(rUr, _, I[2], [0, [0, Qqr, bn(I[1])], Y]); + } + function _0(_) { + var k = _[2]; + return w(Jqr, _[1], k[2], [0, [0, Wqr, bn(k[1])], [0, [0, Kqr, i7], [0, [0, zqr, false], 0]]]); + } + function E0(_) { + return n(M0, _[2][1]); + } + function U0(_) { + var k = _[2], I = [0, [0, wKr, w(PKr, k[2], 0, 0)], 0], U = [0, [0, EKr, n(oe, k[3][2])], I], Y = [0, [0, SKr, w(AKr, k[1], 0, 0)], U]; + return w(gKr, _[1], k[4], Y); + } + function b(_) { + var k = _[2]; + return w(rWr, _[1], k[2], [0, [0, QKr, bn(k[1])], 0]); + } + function R0(_) { + var k = _[2], I = [0, [0, JKr, b(k[2])], 0], U = [0, [0, $Kr, b(k[1])], I]; + return w(ZKr, _[1], 0, U); + } + function X(_) { + var k = _[2], I = k[1], U = I[0] === 0 ? b(I[1]) : X(I[1]), Y = [0, [0, KKr, U], [0, [0, zKr, b(k[2])], 0]]; + return w(WKr, _[1], 0, Y); + } + function s0(_) { + switch (_[0]) { + case 0: + return b(_[1]); + case 1: + return R0(_[1]); + default: + return X(_[1]); + } + } + function hr(_) { + var k = _[2], I = [0, [0, yKr, n(oe, k[3][2])], 0], U = [0, [0, hKr, e(ae, k[2])], I], Y = k[1], y0 = Y[2], P0 = [0, [0, FKr, !!y0[2]], 0], I0 = [0, [0, TKr, n(be, y0[3])], P0], D = [0, [0, OKr, s0(y0[1])], I0], u0 = [0, [0, dKr, w(IKr, Y[1], 0, D)], U]; + return w(kKr, _[1], k[4], u0); + } + function Ar(_) { + var k = _[2], I = [0, [0, jYr, n(fr, k[2])], 0], U = [0, [0, GYr, n(vr, k[1])], I]; + return w(MYr, _[1], k[3], U); + } + function or(_, k) { + var I = k[2], U = I[7], Y = I[5], y0 = I[4]; + if (y0) + var P0 = y0[1][2], I0 = y7(P0[3], U), D = I0, u0 = P0[2], X0 = [0, P0[1]]; + else + var D = U, u0 = 0, X0 = 0; + if (Y) + var J0 = Y[1][2], ir = y7(J0[2], D), Q0 = ir, F0 = n(T0, J0[1]); + else + var Q0 = D, F0 = hu(0); + var Sr = [0, [0, zUr, F0], [0, [0, VUr, n(S0, I[6])], 0]], mr = [0, [0, KUr, e($r, u0)], Sr], Cr = [0, [0, WUr, e(fr, X0)], mr], sr = [0, [0, JUr, e(qr, I[3])], Cr], Pr = I[2], K0 = Pr[2], Ur = [0, [0, uHr, n(rr, K0[1])], 0], h0 = [0, [0, $Ur, w(iHr, Pr[1], K0[2], Ur)], sr], Kr = [0, [0, ZUr, e(S, I[1])], h0]; + return w(_, k[1], Q0, Kr); + } + function W0(_) { + var k = _[2], I = [0, [0, xUr, G(k[1])], 0], U = p(k[2]); + return w(oUr, _[1], U, I); + } + function Lr(_) { + var k = _[2]; + switch (k[0]) { + case 0: + var I = 0, U = S(k[1]); + break; + case 1: + var I = 0, U = _0(k[1]); + break; + default: + var I = 1, U = fr(k[1]); + } + return [0, [0, EWr, fr(_[1])], [0, [0, wWr, U], [0, [0, kWr, !!I], 0]]]; + } + function Tr(_) { + var k = [0, [0, yWr, E0(_[3])], 0], I = [0, [0, hWr, e(ne, _[2])], k]; + return [0, [0, dWr, fr(_[1])], I]; + } + function Hr(_) { + var k = _[2], I = k[3], U = k[2], Y = k[1]; + if (I) { + var y0 = I[1], P0 = y0[2], I0 = [0, [0, NXr, Or(P0[1])], 0], D = w(CXr, y0[1], P0[2], I0), u0 = ye([0, D, Fp(L0, U)]), X0 = Y ? [0, o0(Y[1]), u0] : u0; + return hu(X0); + } + var J0 = d1(L0, U), ir = Y ? [0, o0(Y[1]), J0] : J0; + return hu(ir); + } + function Or(_) { + var k = _[2], I = _[1]; + switch (k[0]) { + case 0: + var U = k[1], Y = [0, [0, hXr, i(l, U[2])], 0], y0 = [0, [0, dXr, n(b0, U[1])], Y]; + return w(kXr, I, p(U[3]), y0); + case 1: + var P0 = k[1], I0 = [0, [0, wXr, i(l, P0[2])], 0], D = [0, [0, EXr, n(Z, P0[1])], I0]; + return w(SXr, I, p(P0[3]), D); + case 2: + return w0(I, k[1]); + default: + return fr(k[1]); + } + } + function fr(_) { + var k = _[2], I = _[1]; + switch (k[0]) { + case 0: + var U = k[1], Y = [0, [0, XMr, n(er, U[1])], 0]; + return w(YMr, I, p(U[2]), Y); + case 1: + var y0 = k[1], P0 = y0[7], I0 = y0[3], D = y0[2]; + if (I0[0] === 0) + var u0 = 0, X0 = W0(I0[1]); + else + var u0 = 1, X0 = fr(I0[1]); + var J0 = P0[0] === 0 ? 0 : [0, P0[1]], ir = y0[9], Q0 = y7(p(D[2][4]), ir), F0 = [0, [0, VMr, e(qr, y0[8])], 0], Sr = [0, [0, KMr, !!u0], [0, [0, zMr, e(l, J0)], F0]], mr = [0, [0, JMr, false], [0, [0, WMr, e(Fr, y0[6])], Sr]], Cr = [0, [0, ZMr, X0], [0, [0, $Mr, !!y0[4]], mr]]; + return w(eBr, I, Q0, [0, [0, rBr, i7], [0, [0, QMr, Hr(D)], Cr]]); + case 2: + var sr = k[1], Pr = sr[1]; + if (Pr) { + switch (Pr[1]) { + case 0: + var K0 = Tpr; + break; + case 1: + var K0 = Opr; + break; + case 2: + var K0 = Ipr; + break; + case 3: + var K0 = Apr; + break; + case 4: + var K0 = Npr; + break; + case 5: + var K0 = Cpr; + break; + case 6: + var K0 = Ppr; + break; + case 7: + var K0 = Dpr; + break; + case 8: + var K0 = Lpr; + break; + case 9: + var K0 = Rpr; + break; + case 10: + var K0 = jpr; + break; + case 11: + var K0 = Gpr; + break; + case 12: + var K0 = Mpr; + break; + case 13: + var K0 = Bpr; + break; + default: + var K0 = qpr; + } + var Ur = K0; + } else + var Ur = nBr; + var h0 = [0, [0, tBr, fr(sr[3])], 0], Kr = [0, [0, uBr, Or(sr[2])], h0]; + return w(fBr, I, sr[4], [0, [0, iBr, bn(Ur)], Kr]); + case 3: + var re = k[1], xe = [0, [0, xBr, fr(re[3])], 0], Re = [0, [0, oBr, fr(re[2])], xe]; + switch (re[1]) { + case 0: + var ve = ipr; + break; + case 1: + var ve = fpr; + break; + case 2: + var ve = xpr; + break; + case 3: + var ve = opr; + break; + case 4: + var ve = apr; + break; + case 5: + var ve = cpr; + break; + case 6: + var ve = spr; + break; + case 7: + var ve = vpr; + break; + case 8: + var ve = lpr; + break; + case 9: + var ve = bpr; + break; + case 10: + var ve = ppr; + break; + case 11: + var ve = mpr; + break; + case 12: + var ve = _pr; + break; + case 13: + var ve = ypr; + break; + case 14: + var ve = hpr; + break; + case 15: + var ve = dpr; + break; + case 16: + var ve = kpr; + break; + case 17: + var ve = wpr; + break; + case 18: + var ve = Epr; + break; + case 19: + var ve = Spr; + break; + case 20: + var ve = gpr; + break; + default: + var ve = Fpr; + } + return w(cBr, I, re[4], [0, [0, aBr, bn(ve)], Re]); + case 4: + var Ie = k[1], Ge = Ie[4], Me = y7(p(Ie[3][2][2]), Ge); + return w(sBr, I, Me, Tr(Ie)); + case 5: + return or(YUr, [0, I, k[1]]); + case 6: + var an = k[1], We = [0, [0, vBr, e(fr, an[2])], 0]; + return w(bBr, I, 0, [0, [0, lBr, n(yr, an[1])], We]); + case 7: + var Ae = k[1], cn = [0, [0, pBr, fr(Ae[3])], 0], rn = [0, [0, mBr, fr(Ae[2])], cn], kn = [0, [0, _Br, fr(Ae[1])], rn]; + return w(yBr, I, Ae[4], kn); + case 8: + return Rr([0, I, k[1]]); + case 9: + var vn = k[1], Ne = [0, [0, hBr, e(fr, vn[2])], 0]; + return w(kBr, I, 0, [0, [0, dBr, n(yr, vn[1])], Ne]); + case 10: + return S(k[1]); + case 11: + var Je = k[1], en = [0, [0, wBr, fr(Je[1])], 0]; + return w(EBr, I, Je[2], en); + case 12: + return hr([0, I, k[1]]); + case 13: + return U0([0, I, k[1]]); + case 14: + var _n = k[1], Cn = _n[1]; + return typeof Cn != "number" && Cn[0] === 3 ? w(OYr, I, _n[3], [0, [0, TYr, i7], [0, [0, FYr, bn(_n[2])], 0]]) : f0([0, I, _n]); + case 15: + var Hn = k[1]; + switch (Hn[1]) { + case 0: + var Fn = SBr; + break; + case 1: + var Fn = gBr; + break; + default: + var Fn = FBr; + } + var vt = [0, [0, TBr, fr(Hn[3])], 0], Nt = [0, [0, OBr, fr(Hn[2])], vt]; + return w(ABr, I, Hn[4], [0, [0, IBr, bn(Fn)], Nt]); + case 16: + var gt = k[1], Zt = Lr(gt); + return w(NBr, I, gt[3], Zt); + case 17: + var qt = k[1], Ft = [0, [0, CBr, S(qt[2])], 0], Ct = [0, [0, PBr, S(qt[1])], Ft]; + return w(DBr, I, qt[3], Ct); + case 18: + var du = k[1], Wu = du[4], lt = du[3]; + if (lt) + var ou = lt[1], Bu = y7(p(ou[2][2]), Wu), K7 = Bu, Yi = E0(ou); + else + var K7 = Wu, Yi = hu(0); + var a7 = [0, [0, RBr, e(ne, du[2])], [0, [0, LBr, Yi], 0]]; + return w(GBr, I, K7, [0, [0, jBr, fr(du[1])], a7]); + case 19: + var Hc = k[1], W7 = [0, [0, MBr, n(p0, Hc[1])], 0]; + return w(BBr, I, p(Hc[2]), W7); + case 20: + var Ut = k[1], bt = Ut[1], B0 = bt[4], D0 = y7(p(bt[3][2][2]), B0), Le = [0, [0, qBr, !!Ut[3]], 0]; + return w(UBr, I, D0, on(Tr(bt), Le)); + case 21: + var He = k[1], he = He[1], me = [0, [0, HBr, !!He[3]], 0], Zn = on(Lr(he), me); + return w(XBr, I, he[3], Zn); + case 22: + var wn = k[1], ft = [0, [0, YBr, n(fr, wn[1])], 0]; + return w(VBr, I, wn[2], ft); + case 23: + return w(zBr, I, k[1][1], 0); + case 24: + var xt = k[1], jn = [0, [0, YYr, Ar(xt[2])], 0], ut = [0, [0, VYr, fr(xt[1])], jn]; + return w(zYr, I, xt[3], ut); + case 25: + return Ar([0, I, k[1]]); + case 26: + return w(KBr, I, k[1][1], 0); + case 27: + var dt = k[1], xn = [0, [0, WBr, l(dt[2])], 0], ln = [0, [0, JBr, fr(dt[1])], xn]; + return w($Br, I, dt[3], ln); + case 28: + var it = k[1], Tt = it[3], Ti = it[2], hs = it[1]; + if (7 <= hs) + return w(QBr, I, Tt, [0, [0, ZBr, fr(Ti)], 0]); + switch (hs) { + case 0: + var Au = rqr; + break; + case 1: + var Au = eqr; + break; + case 2: + var Au = nqr; + break; + case 3: + var Au = tqr; + break; + case 4: + var Au = uqr; + break; + case 5: + var Au = iqr; + break; + case 6: + var Au = fqr; + break; + default: + var Au = ke(xqr); + } + var Hs = [0, [0, aqr, true], [0, [0, oqr, fr(Ti)], 0]]; + return w(sqr, I, Tt, [0, [0, cqr, bn(Au)], Hs]); + case 29: + var Vi = k[1], Xs = Vi[1] ? vqr : lqr, Ys = [0, [0, bqr, !!Vi[3]], 0], nn = [0, [0, pqr, fr(Vi[2])], Ys]; + return w(_qr, I, Vi[4], [0, [0, mqr, bn(Xs)], nn]); + default: + var si = k[1], Vs = [0, [0, yqr, !!si[3]], 0], c2 = [0, [0, hqr, e(fr, si[1])], Vs]; + return w(dqr, I, si[2], c2); + } + } + function Rr(_) { + var k = _[2], I = k[7], U = k[3], Y = k[2], y0 = U[0] === 0 ? U[1] : ke(Cqr), P0 = I[0] === 0 ? 0 : [0, I[1]], I0 = k[9], D = y7(p(Y[2][4]), I0), u0 = [0, [0, Pqr, e(qr, k[8])], 0], X0 = [0, [0, Lqr, false], [0, [0, Dqr, e(l, P0)], u0]], J0 = [0, [0, Rqr, e(Fr, k[6])], X0], ir = [0, [0, Gqr, !!k[4]], [0, [0, jqr, !!k[5]], J0]], Q0 = [0, [0, Mqr, W0(y0)], ir], F0 = [0, [0, Bqr, Hr(Y)], Q0], Sr = [0, [0, qqr, e(S, k[1])], F0]; + return w(Uqr, _[1], D, Sr); + } + function Wr(_) { + var k = _[2], I = [0, [0, sXr, n(fe, k[3])], 0], U = [0, [0, vXr, x0(0, k[4])], I], Y = [0, [0, lXr, e(qr, k[2])], U], y0 = [0, [0, bXr, S(k[1])], Y]; + return w(pXr, _[1], k[5], y0); + } + function Jr(_, k) { + var I = k[2], U = _ ? GUr : MUr, Y = [0, [0, BUr, e(g0, I[4])], 0], y0 = [0, [0, qUr, e(g0, I[3])], Y], P0 = [0, [0, UUr, e(qr, I[2])], y0], I0 = [0, [0, HUr, S(I[1])], P0]; + return w(U, k[1], I[5], I0); + } + function ar(_) { + var k = _[2], I = [0, [0, DUr, g0(k[3])], 0], U = [0, [0, LUr, e(qr, k[2])], I], Y = [0, [0, RUr, S(k[1])], U]; + return w(jUr, _[1], k[4], Y); + } + function _r(_) { + if (_) { + var k = _[1]; + if (k[0] === 0) + return n(ge, k[1]); + var I = k[1], U = I[2]; + if (U) { + var Y = [0, [0, OUr, S(U[1])], 0]; + return hu([0, w(IUr, I[1], 0, Y), 0]); + } + return hu(0); + } + return hu(0); + } + function Ir(_) { + return _ ? FUr : TUr; + } + function fe(_) { + var k = _[2], I = k[1], U = I[0] === 0 ? S(I[1]) : K(I[1]), Y = [0, [0, _Xr, U], [0, [0, mXr, e($r, k[2])], 0]]; + return w(yXr, _[1], k[3], Y); + } + function v0(_) { + var k = _[2], I = k[6], U = k[4], Y = hu(U ? [0, fe(U[1]), 0] : 0), y0 = I ? n(T0, I[1][2][1]) : hu(0), P0 = [0, [0, mUr, Y], [0, [0, pUr, y0], [0, [0, bUr, n(fe, k[5])], 0]]], I0 = [0, [0, _Ur, x0(0, k[3])], P0], D = [0, [0, yUr, e(qr, k[2])], I0], u0 = [0, [0, hUr, S(k[1])], D]; + return w(dUr, _[1], k[7], u0); + } + function P(_) { + var k = _[2], I = k[2], U = k[1], Y = yt(U[1], I[1]), y0 = [0, [0, sUr, e(Fr, k[3])], 0], P0 = [0, [0, vUr, w0(Y, [0, U, [1, I], 0])], y0]; + return w(lUr, _[1], k[4], P0); + } + function L(_) { + var k = _[2], I = k[2], U = k[1], Y = [0, [0, aUr, w0(yt(U[1], I[1]), [0, U, [1, I], 0])], 0]; + return w(cUr, _[1], k[3], Y); + } + function Q(_) { + var k = _[2], I = _[1]; + switch (k[0]) { + case 0: + return W0([0, I, k[1]]); + case 1: + var U = k[1], Y = [0, [0, pGr, e(S, U[1])], 0]; + return w(mGr, I, U[2], Y); + case 2: + return or(XUr, [0, I, k[1]]); + case 3: + var y0 = k[1], P0 = [0, [0, _Gr, e(S, y0[1])], 0]; + return w(yGr, I, y0[2], P0); + case 4: + return w(hGr, I, k[1][1], 0); + case 5: + return v0([0, I, k[1]]); + case 6: + var I0 = k[1], D = I0[5], u0 = I0[4], X0 = I0[3], J0 = I0[2]; + if (X0) { + var ir = X0[1]; + if (ir[0] !== 0 && !ir[1][2]) + return w(kGr, I, D, [0, [0, dGr, e(t0, u0)], 0]); + } + if (J0) { + var Q0 = J0[1]; + switch (Q0[0]) { + case 0: + var F0 = L(Q0[1]); + break; + case 1: + var F0 = P(Q0[1]); + break; + case 2: + var F0 = v0(Q0[1]); + break; + case 3: + var F0 = g0(Q0[1]); + break; + case 4: + var F0 = ar(Q0[1]); + break; + case 5: + var F0 = Jr(1, Q0[1]); + break; + default: + var F0 = Wr(Q0[1]); + } + var Sr = F0; + } else + var Sr = i7; + var mr = [0, [0, wGr, e(t0, u0)], 0], Cr = [0, [0, SGr, Sr], [0, [0, EGr, _r(X0)], mr]], sr = I0[1], Pr = sr && 1; + return w(FGr, I, D, [0, [0, gGr, !!Pr], Cr]); + case 7: + return P([0, I, k[1]]); + case 8: + var K0 = k[1], Ur = [0, [0, kUr, n(fe, K0[3])], 0], h0 = [0, [0, wUr, x0(0, K0[4])], Ur], Kr = [0, [0, EUr, e(qr, K0[2])], h0], re = [0, [0, SUr, S(K0[1])], Kr]; + return w(gUr, I, K0[5], re); + case 9: + var xe = k[1], Re = xe[1], ve = Re[0] === 0 ? S(Re[1]) : t0(Re[1]), Ie = 0, Ge = xe[3] ? "ES" : "CommonJS", Me = [0, [0, IGr, ve], [0, [0, OGr, W0(xe[2])], [0, [0, TGr, Ge], Ie]]]; + return w(AGr, I, xe[4], Me); + case 10: + var an = k[1], We = [0, [0, NGr, l(an[1])], 0]; + return w(CGr, I, an[2], We); + case 11: + var Ae = k[1], cn = [0, [0, AUr, g0(Ae[3])], 0], rn = [0, [0, NUr, e(qr, Ae[2])], cn], kn = [0, [0, CUr, S(Ae[1])], rn]; + return w(PUr, I, Ae[4], kn); + case 12: + return Jr(1, [0, I, k[1]]); + case 13: + return L([0, I, k[1]]); + case 14: + var vn = k[1], Ne = [0, [0, PGr, fr(vn[2])], 0], Je = [0, [0, DGr, Q(vn[1])], Ne]; + return w(LGr, I, vn[3], Je); + case 15: + return w(RGr, I, k[1][1], 0); + case 16: + var en = k[1], _n = en[2], Cn = _n[2], Hn = _n[1]; + switch (Cn[0]) { + case 0: + var Fn = Cn[1], vt = [0, [0, KHr, !!Fn[2]], [0, [0, zHr, !!Fn[3]], 0]], Nt = Fn[1], gt = [0, [0, WHr, n(function(ku) { + var wu = ku[2], Ii = wu[2], w7 = Ii[2], Ki = w7[1], ev = 0, Lb = Ki ? CYr : PYr, nv = [0, [0, XHr, w(RYr, Ii[1], w7[2], [0, [0, LYr, !!Ki], [0, [0, DYr, bn(Lb)], 0]])], ev], Rb = [0, [0, YHr, S(wu[1])], nv]; + return w(VHr, ku[1], 0, Rb); + }, Nt)], vt], bt = w(JHr, Hn, p(Fn[4]), gt); + break; + case 1: + var Zt = Cn[1], qt = [0, [0, ZHr, !!Zt[2]], [0, [0, $Hr, !!Zt[3]], 0]], Ft = Zt[1], Ct = [0, [0, QHr, n(function(ku) { + var wu = ku[2], Ii = wu[2], w7 = Ii[2], Ki = [0, [0, qHr, w(gYr, Ii[1], w7[3], [0, [0, SYr, w7[1]], [0, [0, EYr, bn(w7[2])], 0]])], 0], ev = [0, [0, UHr, S(wu[1])], Ki]; + return w(HHr, ku[1], 0, ev); + }, Ft)], qt], bt = w(rXr, Hn, p(Zt[4]), Ct); + break; + case 2: + var du = Cn[1], Wu = du[1]; + if (Wu[0] === 0) + var lt = Wu[1], Bu = d1(function(ku) { + var wu = [0, [0, MHr, S(ku[2][1])], 0]; + return w(BHr, ku[1], 0, wu); + }, lt); + else + var ou = Wu[1], Bu = d1(function(ku) { + var wu = ku[2], Ii = [0, [0, RHr, t0(wu[2])], 0], w7 = [0, [0, jHr, S(wu[1])], Ii]; + return w(GHr, ku[1], 0, w7); + }, ou); + var K7 = [0, [0, nXr, !!du[2]], [0, [0, eXr, !!du[3]], 0]], Yi = [0, [0, tXr, hu(Bu)], K7], bt = w(uXr, Hn, p(du[4]), Yi); + break; + default: + var a7 = Cn[1], Hc = [0, [0, iXr, !!a7[2]], 0], W7 = a7[1], Ut = [0, [0, fXr, n(function(ku) { + var wu = [0, [0, DHr, S(ku[2][1])], 0]; + return w(LHr, ku[1], 0, wu); + }, W7)], Hc], bt = w(xXr, Hn, p(a7[3]), Ut); + } + var B0 = [0, [0, aXr, S(en[1])], [0, [0, oXr, bt], 0]]; + return w(cXr, I, en[3], B0); + case 17: + var D0 = k[1], Le = D0[2], He = Le[0] === 0 ? Q(Le[1]) : fr(Le[1]), he = [0, [0, GGr, He], [0, [0, jGr, bn(Ir(1))], 0]]; + return w(MGr, I, D0[3], he); + case 18: + var me = k[1], Zn = me[5], wn = me[4], ft = me[3], xt = me[2]; + if (xt) { + var jn = xt[1]; + if (jn[0] !== 0) { + var ut = [0, [0, BGr, bn(Ir(wn))], 0], dt = [0, [0, qGr, e(S, jn[1][2])], ut]; + return w(HGr, I, Zn, [0, [0, UGr, e(t0, ft)], dt]); + } + } + var xn = [0, [0, XGr, bn(Ir(wn))], 0], ln = [0, [0, YGr, e(t0, ft)], xn], it = [0, [0, VGr, _r(xt)], ln]; + return w(KGr, I, Zn, [0, [0, zGr, e(Q, me[1])], it]); + case 19: + var Tt = k[1], Ti = [0, [0, WGr, e(We0, Tt[2])], 0], hs = [0, [0, JGr, fr(Tt[1])], Ti]; + return w($Gr, I, Tt[3], hs); + case 20: + var Au = k[1], Hs = function(ku) { + return ku[0] === 0 ? c0(ku[1]) : fr(ku[1]); + }, Vi = [0, [0, ZGr, Q(Au[4])], 0], Xs = [0, [0, QGr, e(fr, Au[3])], Vi], Ys = [0, [0, rMr, e(fr, Au[2])], Xs], nn = [0, [0, eMr, e(Hs, Au[1])], Ys]; + return w(nMr, I, Au[5], nn); + case 21: + var si = k[1], Vs = si[1], c2 = Vs[0] === 0 ? c0(Vs[1]) : Or(Vs[1]), M9 = [0, [0, tMr, !!si[4]], 0], B9 = [0, [0, uMr, Q(si[3])], M9], q9 = [0, [0, fMr, c2], [0, [0, iMr, fr(si[2])], B9]]; + return w(xMr, I, si[5], q9); + case 22: + var zs = k[1], s2 = zs[1], U9 = s2[0] === 0 ? c0(s2[1]) : Or(s2[1]), H9 = [0, [0, oMr, !!zs[4]], 0], X9 = [0, [0, aMr, Q(zs[3])], H9], H1 = [0, [0, sMr, U9], [0, [0, cMr, fr(zs[2])], X9]]; + return w(vMr, I, zs[5], H1); + case 23: + var vi = k[1], ab = vi[7], cb = vi[3], sb = vi[2], Y9 = cb[0] === 0 ? cb[1] : ke(kqr), V9 = ab[0] === 0 ? 0 : [0, ab[1]], z9 = vi[9], vb = y7(p(sb[2][4]), z9), K9 = [0, [0, wqr, e(qr, vi[8])], 0], W9 = [0, [0, Sqr, false], [0, [0, Eqr, e(l, V9)], K9]], J9 = [0, [0, gqr, e(Fr, vi[6])], W9], $9 = [0, [0, Tqr, !!vi[4]], [0, [0, Fqr, !!vi[5]], J9]], lb = [0, [0, Oqr, W0(Y9)], $9], Z9 = [0, [0, Iqr, Hr(sb)], lb]; + return w(Nqr, I, vb, [0, [0, Aqr, e(S, vi[1])], Z9]); + case 24: + var X1 = k[1], v2 = X1[3]; + if (v2) { + var bb = v2[1][2], pb = bb[2], mb = bb[1], On = mb[2], Gn = function(wu) { + return y7(wu, pb); + }; + switch (On[0]) { + case 0: + var Y1 = On[1], _b = JD(Y1[2], pb), Mn = [0, [0, Y1[1], _b]]; + break; + case 1: + var yb = On[1], Q9 = Gn(yb[2]), Mn = [1, [0, yb[1], Q9]]; + break; + case 2: + var Xc = On[1], r_ = Gn(Xc[7]), Mn = [2, [0, Xc[1], Xc[2], Xc[3], Xc[4], Xc[5], Xc[6], r_]]; + break; + case 3: + var l2 = On[1], hb = Gn(l2[2]), Mn = [3, [0, l2[1], hb]]; + break; + case 4: + var Mn = [4, [0, Gn(On[1][1])]]; + break; + case 5: + var Yc = On[1], e_ = Gn(Yc[7]), Mn = [5, [0, Yc[1], Yc[2], Yc[3], Yc[4], Yc[5], Yc[6], e_]]; + break; + case 6: + var Ks = On[1], db = Gn(Ks[5]), Mn = [6, [0, Ks[1], Ks[2], Ks[3], Ks[4], db]]; + break; + case 7: + var V1 = On[1], n_ = Gn(V1[4]), Mn = [7, [0, V1[1], V1[2], V1[3], n_]]; + break; + case 8: + var ds = On[1], t_ = Gn(ds[5]), Mn = [8, [0, ds[1], ds[2], ds[3], ds[4], t_]]; + break; + case 9: + var z1 = On[1], u_ = Gn(z1[4]), Mn = [9, [0, z1[1], z1[2], z1[3], u_]]; + break; + case 10: + var b2 = On[1], i_ = Gn(b2[2]), Mn = [10, [0, b2[1], i_]]; + break; + case 11: + var Ws = On[1], kb = Gn(Ws[4]), Mn = [11, [0, Ws[1], Ws[2], Ws[3], kb]]; + break; + case 12: + var Js = On[1], f_ = Gn(Js[5]), Mn = [12, [0, Js[1], Js[2], Js[3], Js[4], f_]]; + break; + case 13: + var zi = On[1], Vc = Gn(zi[3]), Mn = [13, [0, zi[1], zi[2], Vc]]; + break; + case 14: + var $s = On[1], x_ = Gn($s[3]), Mn = [14, [0, $s[1], $s[2], x_]]; + break; + case 15: + var Mn = [15, [0, Gn(On[1][1])]]; + break; + case 16: + var p2 = On[1], m2 = Gn(p2[3]), Mn = [16, [0, p2[1], p2[2], m2]]; + break; + case 17: + var _2 = On[1], o_ = Gn(_2[3]), Mn = [17, [0, _2[1], _2[2], o_]]; + break; + case 18: + var Zs = On[1], a_ = Gn(Zs[5]), Mn = [18, [0, Zs[1], Zs[2], Zs[3], Zs[4], a_]]; + break; + case 19: + var y2 = On[1], qL = Gn(y2[3]), Mn = [19, [0, y2[1], y2[2], qL]]; + break; + case 20: + var K1 = On[1], UL = Gn(K1[5]), Mn = [20, [0, K1[1], K1[2], K1[3], K1[4], UL]]; + break; + case 21: + var W1 = On[1], HL = Gn(W1[5]), Mn = [21, [0, W1[1], W1[2], W1[3], W1[4], HL]]; + break; + case 22: + var J1 = On[1], XL = Gn(J1[5]), Mn = [22, [0, J1[1], J1[2], J1[3], J1[4], XL]]; + break; + case 23: + var Oi = On[1], YL = Oi[10], VL = Gn(Oi[9]), Mn = [23, [0, Oi[1], Oi[2], Oi[3], Oi[4], Oi[5], Oi[6], Oi[7], Oi[8], VL, YL]]; + break; + case 24: + var h2 = On[1], zL = Gn(h2[4]), Mn = [24, [0, h2[1], h2[2], h2[3], zL]]; + break; + case 25: + var $1 = On[1], KL = Gn($1[5]), Mn = [25, [0, $1[1], $1[2], $1[3], $1[4], KL]]; + break; + case 26: + var Z1 = On[1], WL = Gn(Z1[5]), Mn = [26, [0, Z1[1], Z1[2], Z1[3], Z1[4], WL]]; + break; + case 27: + var wb = On[1], JL = Gn(wb[3]), Mn = [27, [0, wb[1], wb[2], JL]]; + break; + case 28: + var Eb = On[1], $L = Eb[3], ZL = Gn(Eb[2]), Mn = [28, [0, Eb[1], ZL, $L]]; + break; + case 29: + var d2 = On[1], QL = d2[4], rR = Gn(d2[3]), Mn = [29, [0, d2[1], d2[2], rR, QL]]; + break; + case 30: + var c_ = On[1], eR = Gn(c_[2]), Mn = [30, [0, c_[1], eR]]; + break; + case 31: + var k2 = On[1], nR = Gn(k2[4]), Mn = [31, [0, k2[1], k2[2], k2[3], nR]]; + break; + case 32: + var w2 = On[1], tR = Gn(w2[4]), Mn = [32, [0, w2[1], w2[2], w2[3], tR]]; + break; + case 33: + var Q1 = On[1], uR = Gn(Q1[5]), Mn = [33, [0, Q1[1], Q1[2], Q1[3], Q1[4], uR]]; + break; + case 34: + var Sb = On[1], iR = Gn(Sb[3]), Mn = [34, [0, Sb[1], Sb[2], iR]]; + break; + case 35: + var gb = On[1], fR = Gn(gb[3]), Mn = [35, [0, gb[1], gb[2], fR]]; + break; + default: + var Fb = On[1], xR = Gn(Fb[3]), Mn = [36, [0, Fb[1], Fb[2], xR]]; + } + var s_ = Q([0, mb[1], Mn]); + } else + var s_ = i7; + var oR = [0, [0, bMr, Q(X1[2])], [0, [0, lMr, s_], 0]], aR = [0, [0, pMr, fr(X1[1])], oR]; + return w(mMr, I, X1[4], aR); + case 25: + var rv = k[1], Tb = rv[4], v_ = rv[3]; + if (Tb) { + var Ob = Tb[1]; + if (Ob[0] === 0) + var cR = Ob[1], b_ = d1(function(wu) { + var Ii = wu[1], w7 = wu[3], Ki = wu[2], ev = Ki ? yt(w7[1], Ki[1][1]) : w7[1], Lb = Ki ? Ki[1] : w7, nv = 0, Rb = 0; + if (Ii) + switch (Ii[1]) { + case 0: + var jb = Jc; + break; + case 1: + var jb = rs; + break; + default: + nv = 1; + } + else + nv = 1; + if (nv) + var jb = i7; + var IR = [0, [0, aWr, S(Lb)], [0, [0, oWr, jb], Rb]]; + return w(sWr, ev, 0, [0, [0, cWr, S(w7)], IR]); + }, cR); + else + var l_ = Ob[1], sR = [0, [0, fWr, S(l_[2])], 0], b_ = [0, w(xWr, l_[1], 0, sR), 0]; + var Ib = b_; + } else + var Ib = Tb; + if (v_) + var p_ = v_[1], vR = [0, [0, uWr, S(p_)], 0], m_ = [0, w(iWr, p_[1], 0, vR), Ib]; + else + var m_ = Ib; + switch (rv[1]) { + case 0: + var Ab = _Mr; + break; + case 1: + var Ab = yMr; + break; + default: + var Ab = hMr; + } + var lR = [0, [0, dMr, bn(Ab)], 0], bR = [0, [0, kMr, t0(rv[2])], lR], pR = [0, [0, wMr, hu(m_)], bR]; + return w(EMr, I, rv[5], pR); + case 26: + return Wr([0, I, k[1]]); + case 27: + var Nb = k[1], mR = [0, [0, SMr, Q(Nb[2])], 0], _R = [0, [0, gMr, S(Nb[1])], mR]; + return w(FMr, I, Nb[3], _R); + case 28: + var __ = k[1], yR = [0, [0, TMr, e(fr, __[1])], 0]; + return w(OMr, I, __[2], yR); + case 29: + var Cb = k[1], hR = [0, [0, IMr, n(i0, Cb[2])], 0], dR = [0, [0, AMr, fr(Cb[1])], hR]; + return w(NMr, I, Cb[3], dR); + case 30: + var y_ = k[1], kR = [0, [0, CMr, fr(y_[1])], 0]; + return w(PMr, I, y_[2], kR); + case 31: + var E2 = k[1], wR = [0, [0, DMr, e(W0, E2[3])], 0], ER = [0, [0, LMr, e(l0, E2[2])], wR], SR = [0, [0, RMr, W0(E2[1])], ER]; + return w(jMr, I, E2[4], SR); + case 32: + return ar([0, I, k[1]]); + case 33: + return Jr(0, [0, I, k[1]]); + case 34: + return c0([0, I, k[1]]); + case 35: + var Pb = k[1], gR = [0, [0, GMr, Q(Pb[2])], 0], FR = [0, [0, MMr, fr(Pb[1])], gR]; + return w(BMr, I, Pb[3], FR); + default: + var Db = k[1], TR = [0, [0, qMr, Q(Db[2])], 0], OR = [0, [0, UMr, fr(Db[1])], TR]; + return w(HMr, I, Db[3], OR); + } + } + function i0(_) { + var k = _[2], I = [0, [0, eUr, n(Q, k[2])], 0], U = [0, [0, nUr, e(fr, k[1])], I]; + return w(tUr, _[1], k[3], U); + } + function l0(_) { + var k = _[2], I = [0, [0, uUr, W0(k[2])], 0], U = [0, [0, iUr, e(Or, k[1])], I]; + return w(fUr, _[1], k[3], U); + } + function S0(_) { + var k = _[2], I = [0, [0, QUr, fr(k[1])], 0]; + return w(rHr, _[1], k[2], I); + } + function T0(_) { + var k = _[2], I = [0, [0, eHr, e($r, k[2])], 0], U = [0, [0, nHr, S(k[1])], I]; + return w(tHr, _[1], 0, U); + } + function rr(_) { + switch (_[0]) { + case 0: + var k = _[1], I = k[2], U = I[6], Y = I[2]; + switch (Y[0]) { + case 0: + var I0 = U, D = 0, u0 = f0(Y[1]); + break; + case 1: + var I0 = U, D = 0, u0 = S(Y[1]); + break; + case 2: + var I0 = U, D = 0, u0 = _0(Y[1]); + break; + default: + var y0 = Y[1][2], P0 = y7(y0[2], U), I0 = P0, D = 1, u0 = fr(y0[1]); + } + switch (I[1]) { + case 0: + var X0 = fHr; + break; + case 1: + var X0 = xHr; + break; + case 2: + var X0 = oHr; + break; + default: + var X0 = aHr; + } + var J0 = [0, [0, sHr, !!D], [0, [0, cHr, n(S0, I[5])], 0]], ir = [0, [0, lHr, bn(X0)], [0, [0, vHr, !!I[4]], J0]], Q0 = [0, [0, pHr, u0], [0, [0, bHr, Rr(I[3])], ir]]; + return w(mHr, k[1], I0, Q0); + case 1: + var F0 = _[1], Sr = F0[2], mr = Sr[6], Cr = Sr[2], sr = Sr[1]; + switch (sr[0]) { + case 0: + var h0 = mr, Kr = 0, re = f0(sr[1]); + break; + case 1: + var h0 = mr, Kr = 0, re = S(sr[1]); + break; + case 2: + var Pr = ke(gHr), h0 = Pr[3], Kr = Pr[2], re = Pr[1]; + break; + default: + var K0 = sr[1][2], Ur = y7(K0[2], mr), h0 = Ur, Kr = 1, re = fr(K0[1]); + } + if (typeof Cr == "number") + if (Cr) + var xe = 0, Re = 0; + else + var xe = 1, Re = 0; + else + var xe = 0, Re = [0, Cr[1]]; + var ve = xe && [0, [0, FHr, !!xe], 0], Ie = [0, [0, THr, e(Er, Sr[5])], 0], Ge = [0, [0, IHr, !!Kr], [0, [0, OHr, !!Sr[4]], Ie]], Me = [0, [0, AHr, i(l, Sr[3])], Ge], an = on([0, [0, CHr, re], [0, [0, NHr, e(fr, Re)], Me]], ve); + return w(PHr, F0[1], h0, an); + default: + var We = _[1], Ae = We[2], cn = Ae[2]; + if (typeof cn == "number") + if (cn) + var rn = 0, kn = 0; + else + var rn = 1, kn = 0; + else + var rn = 0, kn = [0, cn[1]]; + var vn = rn && [0, [0, _Hr, !!rn], 0], Ne = [0, [0, yHr, e(Er, Ae[5])], 0], Je = [0, [0, dHr, false], [0, [0, hHr, !!Ae[4]], Ne]], en = [0, [0, kHr, i(l, Ae[3])], Je], _n = [0, [0, wHr, e(fr, kn)], en], Cn = on([0, [0, EHr, _0(Ae[1])], _n], vn); + return w(SHr, We[1], Ae[6], Cn); + } + } + function L0(_) { + var k = _[2], I = k[2], U = k[1]; + if (I) { + var Y = [0, [0, gXr, fr(I[1])], 0], y0 = [0, [0, FXr, Or(U)], Y]; + return w(TXr, _[1], 0, y0); + } + return Or(U); + } + function B(_, k) { + var I = [0, [0, PXr, Or(k[1])], 0]; + return w(DXr, _, k[2], I); + } + function Z(_) { + switch (_[0]) { + case 0: + var k = _[1], I = k[2], U = I[2], Y = I[1]; + if (U) { + var y0 = [0, [0, LXr, fr(U[1])], 0], P0 = [0, [0, RXr, Or(Y)], y0]; + return w(jXr, k[1], 0, P0); + } + return Or(Y); + case 1: + var I0 = _[1]; + return B(I0[1], I0[2]); + default: + return i7; + } + } + function p0(_) { + if (_[0] === 0) { + var k = _[1], I = k[2]; + switch (I[0]) { + case 0: + var U = fr(I[2]), X0 = 0, J0 = I[3], ir = 0, Q0 = GXr, F0 = U, Sr = I[1]; + break; + case 1: + var Y = I[2], y0 = Rr([0, Y[1], Y[2]]), X0 = 0, J0 = 0, ir = 1, Q0 = MXr, F0 = y0, Sr = I[1]; + break; + case 2: + var P0 = I[2], I0 = Rr([0, P0[1], P0[2]]), X0 = I[3], J0 = 0, ir = 0, Q0 = BXr, F0 = I0, Sr = I[1]; + break; + default: + var D = I[2], u0 = Rr([0, D[1], D[2]]), X0 = I[3], J0 = 0, ir = 0, Q0 = qXr, F0 = u0, Sr = I[1]; + } + switch (Sr[0]) { + case 0: + var Pr = X0, K0 = 0, Ur = f0(Sr[1]); + break; + case 1: + var Pr = X0, K0 = 0, Ur = S(Sr[1]); + break; + case 2: + var mr = ke(UXr), Pr = mr[3], K0 = mr[2], Ur = mr[1]; + break; + default: + var Cr = Sr[1][2], sr = y7(Cr[2], X0), Pr = sr, K0 = 1, Ur = fr(Cr[1]); + } + return w(WXr, k[1], Pr, [0, [0, KXr, Ur], [0, [0, zXr, F0], [0, [0, VXr, bn(Q0)], [0, [0, YXr, !!ir], [0, [0, XXr, !!J0], [0, [0, HXr, !!K0], 0]]]]]]); + } + var h0 = _[1], Kr = h0[2], re = [0, [0, JXr, fr(Kr[1])], 0]; + return w($Xr, h0[1], Kr[2], re); + } + function b0(_) { + if (_[0] === 0) { + var k = _[1], I = k[2], U = I[3], Y = I[2], y0 = I[1]; + switch (y0[0]) { + case 0: + var D = 0, u0 = 0, X0 = f0(y0[1]); + break; + case 1: + var D = 0, u0 = 0, X0 = S(y0[1]); + break; + default: + var P0 = y0[1][2], I0 = fr(P0[1]), D = P0[2], u0 = 1, X0 = I0; + } + if (U) + var J0 = U[1], ir = yt(Y[1], J0[1]), Q0 = [0, [0, ZXr, fr(J0)], 0], F0 = w(rYr, ir, 0, [0, [0, QXr, Or(Y)], Q0]); + else + var F0 = Or(Y); + return w(xYr, k[1], D, [0, [0, fYr, X0], [0, [0, iYr, F0], [0, [0, uYr, ji], [0, [0, tYr, false], [0, [0, nYr, !!I[4]], [0, [0, eYr, !!u0], 0]]]]]]); + } + var Sr = _[1]; + return B(Sr[1], Sr[2]); + } + function O0(_) { + var k = _[2], I = [0, [0, oYr, fr(k[1])], 0]; + return w(aYr, _[1], k[2], I); + } + function M0(_) { + return _[0] === 0 ? fr(_[1]) : O0(_[1]); + } + function er(_) { + switch (_[0]) { + case 0: + return fr(_[1]); + case 1: + return O0(_[1]); + default: + return i7; + } + } + function yr(_) { + var k = _[2], I = [0, [0, cYr, !!k[3]], 0], U = [0, [0, sYr, fr(k[2])], I], Y = [0, [0, vYr, Or(k[1])], U]; + return w(lYr, _[1], 0, Y); + } + function vr(_) { + var k = _[2], I = k[1], U = U1([0, [0, qYr, bn(I[1])], [0, [0, BYr, bn(I[2])], 0]]); + return w(XYr, _[1], 0, [0, [0, HYr, U], [0, [0, UYr, !!k[2]], 0]]); + } + function $0(_) { + var k = _[2], I = [0, [0, rVr, e(fr, k[2])], 0], U = [0, [0, eVr, Or(k[1])], I]; + return w(nVr, _[1], 0, U); + } + function Er(_) { + var k = _[2], I = k[1] ? cY : "plus"; + return w(uVr, _[1], k[2], [0, [0, tVr, I], 0]); + } + function Mr(_) { + var k = _[2]; + return k0(k[2], k[1]); + } + function Br(_) { + var k = _[2], I = [0, [0, OVr, g0(k[1][2])], [0, [0, TVr, false], 0]], U = [0, [0, IVr, e(S, 0)], I]; + return w(AVr, _[1], k[2], U); + } + function qr(_) { + var k = _[2], I = [0, [0, fKr, n(jr, k[1])], 0], U = p(k[2]); + return w(xKr, _[1], U, I); + } + function jr(_) { + var k = _[2], I = k[1][2], U = [0, [0, oKr, e(g0, k[4])], 0], Y = [0, [0, aKr, e(Er, k[3])], U], y0 = [0, [0, cKr, i(l, k[2])], Y]; + return w(vKr, _[1], I[2], [0, [0, sKr, bn(I[1])], y0]); + } + function $r(_) { + var k = _[2], I = [0, [0, lKr, n(g0, k[1])], 0], U = p(k[2]); + return w(bKr, _[1], U, I); + } + function ne(_) { + var k = _[2], I = [0, [0, pKr, n(Qr, k[1])], 0], U = p(k[2]); + return w(mKr, _[1], U, I); + } + function Qr(_) { + if (_[0] === 0) + return g0(_[1]); + var k = _[1], I = k[1], U = k[2][1]; + return V([0, I, [0, [0, Rc(0, [0, I, _Kr])], 0, U]]); + } + function be(_) { + if (_[0] === 0) { + var k = _[1], I = k[2], U = I[1], Y = U[0] === 0 ? b(U[1]) : R0(U[1]), y0 = [0, [0, LKr, Y], [0, [0, DKr, e(ce, I[2])], 0]]; + return w(RKr, k[1], 0, y0); + } + var P0 = _[1], I0 = P0[2], D = [0, [0, jKr, fr(I0[1])], 0]; + return w(GKr, P0[1], I0[2], D); + } + function ae(_) { + var k = [0, [0, NKr, s0(_[2][1])], 0]; + return w(CKr, _[1], 0, k); + } + function pe(_) { + var k = _[2], I = k[1], U = _[1], Y = I ? fr(I[1]) : w(MKr, [0, U[1], [0, U[2][1], U[2][2] + 1 | 0], [0, U[3][1], U[3][2] - 1 | 0]], 0, 0); + return w(qKr, U, p(k[2]), [0, [0, BKr, Y], 0]); + } + function oe(_) { + var k = _[2], I = _[1]; + switch (k[0]) { + case 0: + return hr([0, I, k[1]]); + case 1: + return U0([0, I, k[1]]); + case 2: + return pe([0, I, k[1]]); + case 3: + var U = k[1], Y = [0, [0, UKr, fr(U[1])], 0]; + return w(HKr, I, U[2], Y); + default: + var y0 = k[1]; + return w(VKr, I, 0, [0, [0, YKr, bn(y0[1])], [0, [0, XKr, bn(y0[2])], 0]]); + } + } + function ce(_) { + return _[0] === 0 ? f0([0, _[1], _[2]]) : pe([0, _[1], _[2]]); + } + function ge(_) { + var k = _[2], I = k[2], U = k[1], Y = S(I ? I[1] : U), y0 = [0, [0, nWr, S(U)], [0, [0, eWr, Y], 0]]; + return w(tWr, _[1], 0, y0); + } + function q0(_) { + var k = _[2]; + if (k[1]) + var I = k[2], U = vWr; + else + var I = k[2], U = lWr; + return w(U, _[1], 0, [0, [0, bWr, bn(I)], 0]); + } + function Fr(_) { + var k = _[2], I = k[1]; + if (I) + var U = [0, [0, pWr, fr(I[1])], 0], Y = mWr; + else + var U = 0, Y = _Wr; + return w(Y, _[1], k[2], U); + } + return [0, A, fr]; + } + function T(E) { + return y(E)[1]; + } + return [0, T, function(E) { + return y(E)[2]; + }, s]; + }(wne); + function ob(t, n, e) { + var i = n[e]; + return Mp(i) ? i | 0 : t; + } + function Ene(t, n) { + var e = RV(n, Jz) ? {} : n, i = B7(t), x = ob(Bv[5], e, Nre), c = ob(Bv[4], e, Cre), s = ob(Bv[3], e, Pre), p = ob(Bv[2], e, Dre), y = [0, [0, ob(Bv[1], e, Lre), p, s, c, x]], T = e.tokens, E = Mp(T), d = E && T | 0, w = e.comments, G = Mp(w) ? w | 0 : 1, A = e.all_comments, S = Mp(A) ? A | 0 : 1, M = [0, 0], K = d && [0, function(b0) { + return M[1] = [0, b0, M[1]], 0; + }], V = [0, y], f0 = [0, K], m0 = uz ? uz[1] : 1, k0 = f0 && f0[1], g0 = V && V[1], e0 = [0, g0], x0 = [0, k0], l = 0, c0 = x0 && x0[1], t0 = e0 && e0[1], o0 = Hee([0, c0], [0, t0], l, i), w0 = u(se[1], o0), _0 = ye(o0[1][1]), E0 = [0, LL[1], 0], U0 = ye(le(function(b0, O0) { + var M0 = b0[2], er = b0[1]; + return o(LL[3], O0, er) ? [0, er, M0] : [0, o(LL[4], O0, er), [0, O0, M0]]; + }, E0, _0)[2]); + if (U0 && m0) + throw [0, Nee, U0[1], U0[2]]; + Ke0[1] = 0; + for (var b = un(i) - 0 | 0, R0 = i, X = 0, s0 = 0; ; ) { + if (s0 === b) + var hr = X; + else { + var Ar = Xu(R0, s0), or = 0; + if (0 <= Ar && !(zn < Ar)) + var W0 = 1; + else + or = 1; + if (or) { + var Lr = 0; + if (nI <= Ar && !(y8 < Ar)) + var W0 = 2; + else + Lr = 1; + if (Lr) { + var Tr = 0; + if (hv <= Ar && !(i6 < Ar)) + var W0 = 3; + else + Tr = 1; + if (Tr) { + var Hr = 0; + if (s1 <= Ar && !(v8 < Ar)) + var W0 = 4; + else + Hr = 1; + if (Hr) + var W0 = 0; + } + } + } + if (W0 === 0) { + var X = SL(X, s0, 0), s0 = s0 + 1 | 0; + continue; + } + if (!((b - s0 | 0) < W0)) { + var Or = W0 - 1 | 0, fr = s0 + W0 | 0; + if (3 < Or >>> 0) + throw [0, Sn, Qo0]; + switch (Or) { + case 0: + var Rr = Xu(R0, s0); + break; + case 1: + var Rr = (Xu(R0, s0) & 31) << 6 | Xu(R0, s0 + 1 | 0) & 63; + break; + case 2: + var Rr = (Xu(R0, s0) & 15) << 12 | (Xu(R0, s0 + 1 | 0) & 63) << 6 | Xu(R0, s0 + 2 | 0) & 63; + break; + default: + var Rr = (Xu(R0, s0) & 7) << 18 | (Xu(R0, s0 + 1 | 0) & 63) << 12 | (Xu(R0, s0 + 2 | 0) & 63) << 6 | Xu(R0, s0 + 3 | 0) & 63; + } + var X = SL(X, s0, [0, Rr]), s0 = fr; + continue; + } + var hr = SL(X, s0, 0); + } + for (var Wr = tGr, Jr = ye([0, 6, hr]); ; ) { + var ar = Wr[3], _r = Wr[2], Ir = Wr[1]; + if (Jr) { + var fe = Jr[1]; + if (fe === 5) { + var v0 = Jr[2]; + if (v0 && v0[1] === 6) { + var P = _l(ye([0, Ir, _r])), Wr = [0, Ir + 2 | 0, 0, [0, P, ar]], Jr = v0[2]; + continue; + } + } else if (!(6 <= fe)) { + var L = Jr[2], Wr = [0, Ir + we0(fe) | 0, [0, Ir, _r], ar], Jr = L; + continue; + } + var Q = _l(ye([0, Ir, _r])), i0 = Jr[2], Wr = [0, Ir + we0(fe) | 0, 0, [0, Q, ar]], Jr = i0; + continue; + } + var l0 = _l(ye(ar)); + if (G) + var T0 = w0; + else + var S0 = u(Tee[1], 0), T0 = o(Qe(S0, -201766268, 25), S0, w0); + if (S) + var L0 = T0; + else + var rr = T0[2], L0 = [0, T0[1], [0, rr[1], rr[2], 0]]; + var B = o($e0[1], [0, l0], L0), Z = on(U0, Ke0[1]); + if (B.errors = u($e0[3], Z), d) { + var p0 = M[1]; + B.tokens = hu(Fp(u(kne[1], l0), p0)); + } + return B; + } + } + } + if (typeof H0 < "u") + var Ze0 = H0; + else { + var Qe0 = {}; + GN.flow = Qe0; + var Ze0 = Qe0; + } + Ze0.parse = function(t, n) { + try { + var e = Ene(t, n); + return e; + } catch (i) { + return i = Et(i), i[1] === MN ? u($z, i[2]) : u($z, new dee(bn(Te(Rre, Cp(i))))); + } + }, uN(0); + }(globalThis); + } }); + Pt(); + var uoe = Fu0(), ioe = Vxe(), foe = zxe(), xoe = Qxe(), ooe = { comments: false, enums: true, esproposal_decorators: true, esproposal_export_star_as: true, tokens: true }; + function aoe(H0) { + let { message: z0, loc: { start: xr, end: gr } } = H0; + return uoe(z0, { start: { line: xr.line, column: xr.column + 1 }, end: { line: gr.line, column: gr.column + 1 } }); + } + function coe(H0, z0) { + let xr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, { parse: gr } = toe(), de = gr(foe(H0), ooe), [Ve] = de.errors; + if (Ve) + throw aoe(Ve); + return xr.originalText = H0, xoe(de, xr); + } + zu0.exports = { parsers: { flow: ioe(coe) } }; + }); + return soe(); + }); + } +}); + +// node_modules/prettier/parser-typescript.js +var require_parser_typescript = __commonJS({ + "node_modules/prettier/parser-typescript.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.typescript = e(); + } + })(function() { + "use strict"; + var Bn = (M, re) => () => (re || M((re = { exports: {} }).exports, re), re.exports); + var qc = Bn((Sz, CA) => { + var $0 = function(M) { + return M && M.Math == Math && M; + }; + CA.exports = $0(typeof globalThis == "object" && globalThis) || $0(typeof window == "object" && window) || $0(typeof self == "object" && self) || $0(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var cg = Bn((Tz, kA) => { + kA.exports = function(M) { + try { + return !!M(); + } catch { + return true; + } + }; + }); + var Am = Bn((xz, AA) => { + var OL = cg(); + AA.exports = !OL(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var Z0 = Bn((Ez, NA) => { + var FL = cg(); + NA.exports = !FL(function() { + var M = function() { + }.bind(); + return typeof M != "function" || M.hasOwnProperty("prototype"); + }); + }); + var r1 = Bn((Cz, PA) => { + var ML = Z0(), e1 = Function.prototype.call; + PA.exports = ML ? e1.bind(e1) : function() { + return e1.apply(e1, arguments); + }; + }); + var FA = Bn((OA) => { + "use strict"; + var IA = {}.propertyIsEnumerable, wA = Object.getOwnPropertyDescriptor, LL = wA && !IA.call({ 1: 2 }, 1); + OA.f = LL ? function(re) { + var Ve = wA(this, re); + return !!Ve && Ve.enumerable; + } : IA; + }); + var XS = Bn((Az, MA) => { + MA.exports = function(M, re) { + return { enumerable: !(M & 1), configurable: !(M & 2), writable: !(M & 4), value: re }; + }; + }); + var dp = Bn((Nz, BA) => { + var LA = Z0(), RA = Function.prototype, RL = RA.bind, QS = RA.call, BL = LA && RL.bind(QS, QS); + BA.exports = LA ? function(M) { + return M && BL(M); + } : function(M) { + return M && function() { + return QS.apply(M, arguments); + }; + }; + }); + var i1 = Bn((Pz, jA) => { + var JA = dp(), JL = JA({}.toString), jL = JA("".slice); + jA.exports = function(M) { + return jL(JL(M), 8, -1); + }; + }); + var zA = Bn((Iz, UA) => { + var UL = qc(), zL = dp(), WL = cg(), qL = i1(), YS = UL.Object, VL = zL("".split); + UA.exports = WL(function() { + return !YS("z").propertyIsEnumerable(0); + }) ? function(M) { + return qL(M) == "String" ? VL(M, "") : YS(M); + } : YS; + }); + var $S = Bn((wz, WA) => { + var KL = qc(), GL = KL.TypeError; + WA.exports = function(M) { + if (M == null) + throw GL("Can't call method on " + M); + return M; + }; + }); + var t1 = Bn((Oz, qA) => { + var HL = zA(), XL = $S(); + qA.exports = function(M) { + return HL(XL(M)); + }; + }); + var gp = Bn((Fz, VA) => { + VA.exports = function(M) { + return typeof M == "function"; + }; + }); + var Nm = Bn((Mz, KA) => { + var QL = gp(); + KA.exports = function(M) { + return typeof M == "object" ? M !== null : QL(M); + }; + }); + var qy = Bn((Lz, GA) => { + var ZS = qc(), YL = gp(), $L = function(M) { + return YL(M) ? M : void 0; + }; + GA.exports = function(M, re) { + return arguments.length < 2 ? $L(ZS[M]) : ZS[M] && ZS[M][re]; + }; + }); + var XA = Bn((Rz, HA) => { + var ZL = dp(); + HA.exports = ZL({}.isPrototypeOf); + }); + var YA = Bn((Bz, QA) => { + var eR = qy(); + QA.exports = eR("navigator", "userAgent") || ""; + }); + var aN = Bn((Jz, tN) => { + var iN = qc(), eT = YA(), $A = iN.process, ZA = iN.Deno, eN = $A && $A.versions || ZA && ZA.version, rN = eN && eN.v8, ad, a1; + rN && (ad = rN.split("."), a1 = ad[0] > 0 && ad[0] < 4 ? 1 : +(ad[0] + ad[1])); + !a1 && eT && (ad = eT.match(/Edge\/(\d+)/), (!ad || ad[1] >= 74) && (ad = eT.match(/Chrome\/(\d+)/), ad && (a1 = +ad[1]))); + tN.exports = a1; + }); + var rT = Bn((jz, oN) => { + var nN = aN(), rR = cg(); + oN.exports = !!Object.getOwnPropertySymbols && !rR(function() { + var M = Symbol(); + return !String(M) || !(Object(M) instanceof Symbol) || !Symbol.sham && nN && nN < 41; + }); + }); + var iT = Bn((Uz, sN) => { + var iR = rT(); + sN.exports = iR && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var tT = Bn((zz, cN) => { + var tR = qc(), aR = qy(), nR = gp(), oR = XA(), sR = iT(), cR = tR.Object; + cN.exports = sR ? function(M) { + return typeof M == "symbol"; + } : function(M) { + var re = aR("Symbol"); + return nR(re) && oR(re.prototype, cR(M)); + }; + }); + var lN = Bn((Wz, uN) => { + var uR = qc(), lR = uR.String; + uN.exports = function(M) { + try { + return lR(M); + } catch { + return "Object"; + } + }; + }); + var n1 = Bn((qz, fN) => { + var fR = qc(), _R = gp(), pR = lN(), dR = fR.TypeError; + fN.exports = function(M) { + if (_R(M)) + return M; + throw dR(pR(M) + " is not a function"); + }; + }); + var pN = Bn((Vz, _N) => { + var gR = n1(); + _N.exports = function(M, re) { + var Ve = M[re]; + return Ve == null ? void 0 : gR(Ve); + }; + }); + var gN = Bn((Kz, dN) => { + var mR = qc(), aT = r1(), nT = gp(), oT = Nm(), vR = mR.TypeError; + dN.exports = function(M, re) { + var Ve, Ke; + if (re === "string" && nT(Ve = M.toString) && !oT(Ke = aT(Ve, M)) || nT(Ve = M.valueOf) && !oT(Ke = aT(Ve, M)) || re !== "string" && nT(Ve = M.toString) && !oT(Ke = aT(Ve, M))) + return Ke; + throw vR("Can't convert object to primitive value"); + }; + }); + var vN = Bn((Gz, mN) => { + mN.exports = false; + }); + var o1 = Bn((Hz, hN) => { + var yN = qc(), yR = Object.defineProperty; + hN.exports = function(M, re) { + try { + yR(yN, M, { value: re, configurable: true, writable: true }); + } catch { + yN[M] = re; + } + return re; + }; + }); + var s1 = Bn((Xz, bN) => { + var hR = qc(), DR = o1(), DN = "__core-js_shared__", bR = hR[DN] || DR(DN, {}); + bN.exports = bR; + }); + var sT = Bn((Qz, TN) => { + var SR = vN(), SN = s1(); + (TN.exports = function(M, re) { + return SN[M] || (SN[M] = re !== void 0 ? re : {}); + })("versions", []).push({ version: "3.22.2", mode: SR ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var cT = Bn((Yz, xN) => { + var TR = qc(), xR = $S(), ER = TR.Object; + xN.exports = function(M) { + return ER(xR(M)); + }; + }); + var Wg = Bn(($z, EN) => { + var CR = dp(), kR = cT(), AR = CR({}.hasOwnProperty); + EN.exports = Object.hasOwn || function(re, Ve) { + return AR(kR(re), Ve); + }; + }); + var uT = Bn((Zz, CN) => { + var NR = dp(), PR = 0, IR = Math.random(), wR = NR(1 .toString); + CN.exports = function(M) { + return "Symbol(" + (M === void 0 ? "" : M) + ")_" + wR(++PR + IR, 36); + }; + }); + var Vy = Bn((eW, IN) => { + var OR = qc(), FR = sT(), kN = Wg(), MR = uT(), AN = rT(), PN = iT(), Iv = FR("wks"), Pm = OR.Symbol, NN = Pm && Pm.for, LR = PN ? Pm : Pm && Pm.withoutSetter || MR; + IN.exports = function(M) { + if (!kN(Iv, M) || !(AN || typeof Iv[M] == "string")) { + var re = "Symbol." + M; + AN && kN(Pm, M) ? Iv[M] = Pm[M] : PN && NN ? Iv[M] = NN(re) : Iv[M] = LR(re); + } + return Iv[M]; + }; + }); + var MN = Bn((rW, FN) => { + var RR = qc(), BR = r1(), wN = Nm(), ON = tT(), JR = pN(), jR = gN(), UR = Vy(), zR = RR.TypeError, WR = UR("toPrimitive"); + FN.exports = function(M, re) { + if (!wN(M) || ON(M)) + return M; + var Ve = JR(M, WR), Ke; + if (Ve) { + if (re === void 0 && (re = "default"), Ke = BR(Ve, M, re), !wN(Ke) || ON(Ke)) + return Ke; + throw zR("Can't convert object to primitive value"); + } + return re === void 0 && (re = "number"), jR(M, re); + }; + }); + var lT = Bn((iW, LN) => { + var qR = MN(), VR = tT(); + LN.exports = function(M) { + var re = qR(M, "string"); + return VR(re) ? re : re + ""; + }; + }); + var JN = Bn((tW, BN) => { + var KR = qc(), RN = Nm(), fT = KR.document, GR = RN(fT) && RN(fT.createElement); + BN.exports = function(M) { + return GR ? fT.createElement(M) : {}; + }; + }); + var _T = Bn((aW, jN) => { + var HR = Am(), XR = cg(), QR = JN(); + jN.exports = !HR && !XR(function() { + return Object.defineProperty(QR("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var pT = Bn((zN) => { + var YR = Am(), $R = r1(), ZR = FA(), eB = XS(), rB = t1(), iB = lT(), tB = Wg(), aB = _T(), UN = Object.getOwnPropertyDescriptor; + zN.f = YR ? UN : function(re, Ve) { + if (re = rB(re), Ve = iB(Ve), aB) + try { + return UN(re, Ve); + } catch { + } + if (tB(re, Ve)) + return eB(!$R(ZR.f, re, Ve), re[Ve]); + }; + }); + var qN = Bn((oW, WN) => { + var nB = Am(), oB = cg(); + WN.exports = nB && oB(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var dT = Bn((sW, KN) => { + var VN = qc(), sB = Nm(), cB = VN.String, uB = VN.TypeError; + KN.exports = function(M) { + if (sB(M)) + return M; + throw uB(cB(M) + " is not an object"); + }; + }); + var hT = Bn((HN) => { + var lB = qc(), fB = Am(), _B = _T(), pB = qN(), c1 = dT(), GN = lT(), dB = lB.TypeError, gT = Object.defineProperty, gB = Object.getOwnPropertyDescriptor, mT = "enumerable", vT = "configurable", yT = "writable"; + HN.f = fB ? pB ? function(re, Ve, Ke) { + if (c1(re), Ve = GN(Ve), c1(Ke), typeof re == "function" && Ve === "prototype" && "value" in Ke && yT in Ke && !Ke[yT]) { + var oi = gB(re, Ve); + oi && oi[yT] && (re[Ve] = Ke.value, Ke = { configurable: vT in Ke ? Ke[vT] : oi[vT], enumerable: mT in Ke ? Ke[mT] : oi[mT], writable: false }); + } + return gT(re, Ve, Ke); + } : gT : function(re, Ve, Ke) { + if (c1(re), Ve = GN(Ve), c1(Ke), _B) + try { + return gT(re, Ve, Ke); + } catch { + } + if ("get" in Ke || "set" in Ke) + throw dB("Accessors not supported"); + return "value" in Ke && (re[Ve] = Ke.value), re; + }; + }); + var u1 = Bn((uW, XN) => { + var mB = Am(), vB = hT(), yB = XS(); + XN.exports = mB ? function(M, re, Ve) { + return vB.f(M, re, yB(1, Ve)); + } : function(M, re, Ve) { + return M[re] = Ve, M; + }; + }); + var l1 = Bn((lW, QN) => { + var hB = dp(), DB = gp(), DT = s1(), bB = hB(Function.toString); + DB(DT.inspectSource) || (DT.inspectSource = function(M) { + return bB(M); + }); + QN.exports = DT.inspectSource; + }); + var ZN = Bn((fW, $N) => { + var SB = qc(), TB = gp(), xB = l1(), YN = SB.WeakMap; + $N.exports = TB(YN) && /native code/.test(xB(YN)); + }); + var iP = Bn((_W, rP) => { + var EB = sT(), CB = uT(), eP = EB("keys"); + rP.exports = function(M) { + return eP[M] || (eP[M] = CB(M)); + }; + }); + var bT = Bn((pW, tP) => { + tP.exports = {}; + }); + var uP = Bn((dW, cP) => { + var kB = ZN(), sP = qc(), ST = dp(), AB = Nm(), NB = u1(), TT = Wg(), xT = s1(), PB = iP(), IB = bT(), aP = "Object already initialized", CT = sP.TypeError, wB = sP.WeakMap, f1, Ky, _1, OB = function(M) { + return _1(M) ? Ky(M) : f1(M, {}); + }, FB = function(M) { + return function(re) { + var Ve; + if (!AB(re) || (Ve = Ky(re)).type !== M) + throw CT("Incompatible receiver, " + M + " required"); + return Ve; + }; + }; + kB || xT.state ? (qg = xT.state || (xT.state = new wB()), nP = ST(qg.get), ET = ST(qg.has), oP = ST(qg.set), f1 = function(M, re) { + if (ET(qg, M)) + throw new CT(aP); + return re.facade = M, oP(qg, M, re), re; + }, Ky = function(M) { + return nP(qg, M) || {}; + }, _1 = function(M) { + return ET(qg, M); + }) : (Im = PB("state"), IB[Im] = true, f1 = function(M, re) { + if (TT(M, Im)) + throw new CT(aP); + return re.facade = M, NB(M, Im, re), re; + }, Ky = function(M) { + return TT(M, Im) ? M[Im] : {}; + }, _1 = function(M) { + return TT(M, Im); + }); + var qg, nP, ET, oP, Im; + cP.exports = { set: f1, get: Ky, has: _1, enforce: OB, getterFor: FB }; + }); + var _P = Bn((gW, fP) => { + var kT = Am(), MB = Wg(), lP = Function.prototype, LB = kT && Object.getOwnPropertyDescriptor, AT = MB(lP, "name"), RB = AT && function() { + }.name === "something", BB = AT && (!kT || kT && LB(lP, "name").configurable); + fP.exports = { EXISTS: AT, PROPER: RB, CONFIGURABLE: BB }; + }); + var vP = Bn((mW, mP) => { + var JB = qc(), pP = gp(), jB = Wg(), dP = u1(), UB = o1(), zB = l1(), gP = uP(), WB = _P().CONFIGURABLE, qB = gP.get, VB = gP.enforce, KB = String(String).split("String"); + (mP.exports = function(M, re, Ve, Ke) { + var oi = Ke ? !!Ke.unsafe : false, kr = Ke ? !!Ke.enumerable : false, pr = Ke ? !!Ke.noTargetGet : false, Lr = Ke && Ke.name !== void 0 ? Ke.name : re, ar; + if (pP(Ve) && (String(Lr).slice(0, 7) === "Symbol(" && (Lr = "[" + String(Lr).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!jB(Ve, "name") || WB && Ve.name !== Lr) && dP(Ve, "name", Lr), ar = VB(Ve), ar.source || (ar.source = KB.join(typeof Lr == "string" ? Lr : ""))), M === JB) { + kr ? M[re] = Ve : UB(re, Ve); + return; + } else + oi ? !pr && M[re] && (kr = true) : delete M[re]; + kr ? M[re] = Ve : dP(M, re, Ve); + })(Function.prototype, "toString", function() { + return pP(this) && qB(this).source || zB(this); + }); + }); + var NT = Bn((vW, yP) => { + var GB = Math.ceil, HB = Math.floor; + yP.exports = function(M) { + var re = +M; + return re !== re || re === 0 ? 0 : (re > 0 ? HB : GB)(re); + }; + }); + var DP = Bn((yW, hP) => { + var XB = NT(), QB = Math.max, YB = Math.min; + hP.exports = function(M, re) { + var Ve = XB(M); + return Ve < 0 ? QB(Ve + re, 0) : YB(Ve, re); + }; + }); + var SP = Bn((hW, bP) => { + var $B = NT(), ZB = Math.min; + bP.exports = function(M) { + return M > 0 ? ZB($B(M), 9007199254740991) : 0; + }; + }); + var p1 = Bn((DW, TP) => { + var eJ = SP(); + TP.exports = function(M) { + return eJ(M.length); + }; + }); + var CP = Bn((bW, EP) => { + var rJ = t1(), iJ = DP(), tJ = p1(), xP = function(M) { + return function(re, Ve, Ke) { + var oi = rJ(re), kr = tJ(oi), pr = iJ(Ke, kr), Lr; + if (M && Ve != Ve) { + for (; kr > pr; ) + if (Lr = oi[pr++], Lr != Lr) + return true; + } else + for (; kr > pr; pr++) + if ((M || pr in oi) && oi[pr] === Ve) + return M || pr || 0; + return !M && -1; + }; + }; + EP.exports = { includes: xP(true), indexOf: xP(false) }; + }); + var NP = Bn((SW, AP) => { + var aJ = dp(), PT = Wg(), nJ = t1(), oJ = CP().indexOf, sJ = bT(), kP = aJ([].push); + AP.exports = function(M, re) { + var Ve = nJ(M), Ke = 0, oi = [], kr; + for (kr in Ve) + !PT(sJ, kr) && PT(Ve, kr) && kP(oi, kr); + for (; re.length > Ke; ) + PT(Ve, kr = re[Ke++]) && (~oJ(oi, kr) || kP(oi, kr)); + return oi; + }; + }); + var IP = Bn((TW, PP) => { + PP.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var OP = Bn((wP) => { + var cJ = NP(), uJ = IP(), lJ = uJ.concat("length", "prototype"); + wP.f = Object.getOwnPropertyNames || function(re) { + return cJ(re, lJ); + }; + }); + var MP = Bn((FP) => { + FP.f = Object.getOwnPropertySymbols; + }); + var RP = Bn((CW, LP) => { + var fJ = qy(), _J = dp(), pJ = OP(), dJ = MP(), gJ = dT(), mJ = _J([].concat); + LP.exports = fJ("Reflect", "ownKeys") || function(re) { + var Ve = pJ.f(gJ(re)), Ke = dJ.f; + return Ke ? mJ(Ve, Ke(re)) : Ve; + }; + }); + var jP = Bn((kW, JP) => { + var BP = Wg(), vJ = RP(), yJ = pT(), hJ = hT(); + JP.exports = function(M, re, Ve) { + for (var Ke = vJ(re), oi = hJ.f, kr = yJ.f, pr = 0; pr < Ke.length; pr++) { + var Lr = Ke[pr]; + !BP(M, Lr) && !(Ve && BP(Ve, Lr)) && oi(M, Lr, kr(re, Lr)); + } + }; + }); + var zP = Bn((AW, UP) => { + var DJ = cg(), bJ = gp(), SJ = /#|\.prototype\./, Gy = function(M, re) { + var Ve = xJ[TJ(M)]; + return Ve == CJ ? true : Ve == EJ ? false : bJ(re) ? DJ(re) : !!re; + }, TJ = Gy.normalize = function(M) { + return String(M).replace(SJ, ".").toLowerCase(); + }, xJ = Gy.data = {}, EJ = Gy.NATIVE = "N", CJ = Gy.POLYFILL = "P"; + UP.exports = Gy; + }); + var wT = Bn((NW, WP) => { + var IT = qc(), kJ = pT().f, AJ = u1(), NJ = vP(), PJ = o1(), IJ = jP(), wJ = zP(); + WP.exports = function(M, re) { + var Ve = M.target, Ke = M.global, oi = M.stat, kr, pr, Lr, ar, ke, e; + if (Ke ? pr = IT : oi ? pr = IT[Ve] || PJ(Ve, {}) : pr = (IT[Ve] || {}).prototype, pr) + for (Lr in re) { + if (ke = re[Lr], M.noTargetGet ? (e = kJ(pr, Lr), ar = e && e.value) : ar = pr[Lr], kr = wJ(Ke ? Lr : Ve + (oi ? "." : "#") + Lr, M.forced), !kr && ar !== void 0) { + if (typeof ke == typeof ar) + continue; + IJ(ke, ar); + } + (M.sham || ar && ar.sham) && AJ(ke, "sham", true), NJ(pr, Lr, ke, M); + } + }; + }); + var qP = Bn(() => { + var OJ = wT(), FJ = qc(); + OJ({ global: true }, { globalThis: FJ }); + }); + var VP = Bn(() => { + qP(); + }); + var OT = Bn((FW, KP) => { + var MJ = i1(); + KP.exports = Array.isArray || function(re) { + return MJ(re) == "Array"; + }; + }); + var XP = Bn((MW, HP) => { + var GP = dp(), LJ = n1(), RJ = Z0(), BJ = GP(GP.bind); + HP.exports = function(M, re) { + return LJ(M), re === void 0 ? M : RJ ? BJ(M, re) : function() { + return M.apply(re, arguments); + }; + }; + }); + var $P = Bn((LW, YP) => { + "use strict"; + var JJ = qc(), jJ = OT(), UJ = p1(), zJ = XP(), WJ = JJ.TypeError, QP = function(M, re, Ve, Ke, oi, kr, pr, Lr) { + for (var ar = oi, ke = 0, e = pr ? zJ(pr, Lr) : false, a, C; ke < Ke; ) { + if (ke in Ve) { + if (a = e ? e(Ve[ke], ke, re) : Ve[ke], kr > 0 && jJ(a)) + C = UJ(a), ar = QP(M, re, a, C, ar, kr - 1) - 1; + else { + if (ar >= 9007199254740991) + throw WJ("Exceed the acceptable array length"); + M[ar] = a; + } + ar++; + } + ke++; + } + return ar; + }; + YP.exports = QP; + }); + var r4 = Bn((RW, e4) => { + var qJ = Vy(), VJ = qJ("toStringTag"), ZP = {}; + ZP[VJ] = "z"; + e4.exports = String(ZP) === "[object z]"; + }); + var t4 = Bn((BW, i4) => { + var KJ = qc(), GJ = r4(), HJ = gp(), d1 = i1(), XJ = Vy(), QJ = XJ("toStringTag"), YJ = KJ.Object, $J = d1(function() { + return arguments; + }()) == "Arguments", ZJ = function(M, re) { + try { + return M[re]; + } catch { + } + }; + i4.exports = GJ ? d1 : function(M) { + var re, Ve, Ke; + return M === void 0 ? "Undefined" : M === null ? "Null" : typeof (Ve = ZJ(re = YJ(M), QJ)) == "string" ? Ve : $J ? d1(re) : (Ke = d1(re)) == "Object" && HJ(re.callee) ? "Arguments" : Ke; + }; + }); + var u4 = Bn((JW, c4) => { + var ej = dp(), rj = cg(), a4 = gp(), ij = t4(), tj = qy(), aj = l1(), n4 = function() { + }, nj = [], o4 = tj("Reflect", "construct"), FT = /^\s*(?:class|function)\b/, oj = ej(FT.exec), sj = !FT.exec(n4), Hy = function(re) { + if (!a4(re)) + return false; + try { + return o4(n4, nj, re), true; + } catch { + return false; + } + }, s4 = function(re) { + if (!a4(re)) + return false; + switch (ij(re)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return false; + } + try { + return sj || !!oj(FT, aj(re)); + } catch { + return true; + } + }; + s4.sham = true; + c4.exports = !o4 || rj(function() { + var M; + return Hy(Hy.call) || !Hy(Object) || !Hy(function() { + M = true; + }) || M; + }) ? s4 : Hy; + }); + var p4 = Bn((jW, _4) => { + var cj = qc(), l4 = OT(), uj = u4(), lj = Nm(), fj = Vy(), _j = fj("species"), f4 = cj.Array; + _4.exports = function(M) { + var re; + return l4(M) && (re = M.constructor, uj(re) && (re === f4 || l4(re.prototype)) ? re = void 0 : lj(re) && (re = re[_j], re === null && (re = void 0))), re === void 0 ? f4 : re; + }; + }); + var g4 = Bn((UW, d4) => { + var pj = p4(); + d4.exports = function(M, re) { + return new (pj(M))(re === 0 ? 0 : re); + }; + }); + var m4 = Bn(() => { + "use strict"; + var dj = wT(), gj = $P(), mj = n1(), vj = cT(), yj = p1(), hj = g4(); + dj({ target: "Array", proto: true }, { flatMap: function(re) { + var Ve = vj(this), Ke = yj(Ve), oi; + return mj(re), oi = hj(Ve, 0), oi.length = gj(oi, Ve, Ve, Ke, 0, 1, re, arguments.length > 1 ? arguments[1] : void 0), oi; + } }); + }); + var Dz = Bn((qW, f3) => { + VP(); + m4(); + var zT = Object.defineProperty, Dj = Object.getOwnPropertyDescriptor, WT = Object.getOwnPropertyNames, bj = Object.prototype.hasOwnProperty, Qy = (M, re) => function() { + return M && (re = (0, M[WT(M)[0]])(M = 0)), re; + }, Oa = (M, re) => function() { + return re || (0, M[WT(M)[0]])((re = { exports: {} }).exports, re), re.exports; + }, h1 = (M, re) => { + for (var Ve in re) + zT(M, Ve, { get: re[Ve], enumerable: true }); + }, Sj = (M, re, Ve, Ke) => { + if (re && typeof re == "object" || typeof re == "function") + for (let oi of WT(re)) + !bj.call(M, oi) && oi !== Ve && zT(M, oi, { get: () => re[oi], enumerable: !(Ke = Dj(re, oi)) || Ke.enumerable }); + return M; + }, mp = (M) => Sj(zT({}, "__esModule", { value: true }), M), v4, y4, Eu, Ea = Qy({ ""() { + v4 = {}, y4 = [], Eu = { env: v4, argv: y4 }; + } }), S4 = Oa({ "src/common/parser-create-error.js"(M, re) { + "use strict"; + Ea(); + function Ve(Ke, oi) { + let kr = new SyntaxError(Ke + " (" + oi.start.line + ":" + oi.start.column + ")"); + return kr.loc = oi, kr; + } + re.exports = Ve; + } }), Tj = Oa({ "src/utils/try-combinations.js"(M, re) { + "use strict"; + Ea(); + function Ve() { + let Ke; + for (var oi = arguments.length, kr = new Array(oi), pr = 0; pr < oi; pr++) + kr[pr] = arguments[pr]; + for (let [Lr, ar] of kr.entries()) + try { + return { result: ar() }; + } catch (ke) { + Lr === 0 && (Ke = ke); + } + return { error: Ke }; + } + re.exports = Ve; + } }), T4 = {}; + h1(T4, { EOL: () => RT, arch: () => xj, cpus: () => P4, default: () => M4, endianness: () => x4, freemem: () => A4, getNetworkInterfaces: () => F4, hostname: () => E4, loadavg: () => C4, networkInterfaces: () => O4, platform: () => Ej, release: () => w4, tmpDir: () => MT, tmpdir: () => LT, totalmem: () => N4, type: () => I4, uptime: () => k4 }); + function x4() { + if (typeof g1 > "u") { + var M = new ArrayBuffer(2), re = new Uint8Array(M), Ve = new Uint16Array(M); + if (re[0] = 1, re[1] = 2, Ve[0] === 258) + g1 = "BE"; + else if (Ve[0] === 513) + g1 = "LE"; + else + throw new Error("unable to figure out endianess"); + } + return g1; + } + function E4() { + return typeof globalThis.location < "u" ? globalThis.location.hostname : ""; + } + function C4() { + return []; + } + function k4() { + return 0; + } + function A4() { + return Number.MAX_VALUE; + } + function N4() { + return Number.MAX_VALUE; + } + function P4() { + return []; + } + function I4() { + return "Browser"; + } + function w4() { + return typeof globalThis.navigator < "u" ? globalThis.navigator.appVersion : ""; + } + function O4() { + } + function F4() { + } + function xj() { + return "javascript"; + } + function Ej() { + return "browser"; + } + function MT() { + return "/tmp"; + } + var g1, LT, RT, M4, Cj = Qy({ "node-modules-polyfills:os"() { + Ea(), LT = MT, RT = ` +`, M4 = { EOL: RT, tmpdir: LT, tmpDir: MT, networkInterfaces: O4, getNetworkInterfaces: F4, release: w4, type: I4, cpus: P4, totalmem: N4, freemem: A4, uptime: k4, loadavg: C4, hostname: E4, endianness: x4 }; + } }), kj = Oa({ "node-modules-polyfills-commonjs:os"(M, re) { + Ea(); + var Ve = (Cj(), mp(T4)); + if (Ve && Ve.default) { + re.exports = Ve.default; + for (let Ke in Ve) + re.exports[Ke] = Ve[Ke]; + } else + Ve && (re.exports = Ve); + } }), Aj = Oa({ "node_modules/detect-newline/index.js"(M, re) { + "use strict"; + Ea(); + var Ve = (Ke) => { + if (typeof Ke != "string") + throw new TypeError("Expected a string"); + let oi = Ke.match(/(?:\r?\n)/g) || []; + if (oi.length === 0) + return; + let kr = oi.filter((Lr) => Lr === `\r +`).length, pr = oi.length - kr; + return kr > pr ? `\r +` : ` +`; + }; + re.exports = Ve, re.exports.graceful = (Ke) => typeof Ke == "string" && Ve(Ke) || ` +`; + } }), Nj = Oa({ "node_modules/jest-docblock/build/index.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.extract = w, M.parse = E, M.parseWithComments = Q, M.print = le, M.strip = B; + function re() { + let p = kj(); + return re = function() { + return p; + }, p; + } + function Ve() { + let p = Ke(Aj()); + return Ve = function() { + return p; + }, p; + } + function Ke(p) { + return p && p.__esModule ? p : { default: p }; + } + var oi = /\*\/$/, kr = /^\/\*\*/, pr = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, Lr = /(^|\s+)\/\/([^\r\n]*)/g, ar = /^(\r?\n)+/, ke = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g, e = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g, a = /(\r?\n|^) *\* ?/g, C = []; + function w(p) { + let m = p.match(pr); + return m ? m[0].trimLeft() : ""; + } + function B(p) { + let m = p.match(pr); + return m && m[0] ? p.substring(m[0].length) : p; + } + function E(p) { + return Q(p).pragmas; + } + function Q(p) { + let m = (0, Ve().default)(p) || re().EOL; + p = p.replace(kr, "").replace(oi, "").replace(a, "$1"); + let G = ""; + for (; G !== p; ) + G = p, p = p.replace(ke, "".concat(m, "$1 $2").concat(m)); + p = p.replace(ar, "").trimRight(); + let oe = /* @__PURE__ */ Object.create(null), f = p.replace(e, "").replace(ar, "").trimRight(), T; + for (; T = e.exec(p); ) { + let K = T[2].replace(Lr, ""); + typeof oe[T[1]] == "string" || Array.isArray(oe[T[1]]) ? oe[T[1]] = C.concat(oe[T[1]], K) : oe[T[1]] = K; + } + return { comments: f, pragmas: oe }; + } + function le(p) { + let { comments: m = "", pragmas: G = {} } = p, oe = (0, Ve().default)(m) || re().EOL, f = "/**", T = " *", K = " */", b = Object.keys(G), se = b.map((ie) => N(ie, G[ie])).reduce((ie, R) => ie.concat(R), []).map((ie) => T + " " + ie + oe).join(""); + if (!m) { + if (b.length === 0) + return ""; + if (b.length === 1 && !Array.isArray(G[b[0]])) { + let ie = G[b[0]]; + return "".concat(f, " ").concat(N(b[0], ie)[0]).concat(K); + } + } + let J = m.split(oe).map((ie) => "".concat(T, " ").concat(ie)).join(oe) + oe; + return f + oe + (m ? J : "") + (m && b.length ? T + oe : "") + se + K; + } + function N(p, m) { + return C.concat(m).map((G) => "@".concat(p, " ").concat(G).trim()); + } + } }), Pj = Oa({ "src/common/end-of-line.js"(M, re) { + "use strict"; + Ea(); + function Ve(pr) { + let Lr = pr.indexOf("\r"); + return Lr >= 0 ? pr.charAt(Lr + 1) === ` +` ? "crlf" : "cr" : "lf"; + } + function Ke(pr) { + switch (pr) { + case "cr": + return "\r"; + case "crlf": + return `\r +`; + default: + return ` +`; + } + } + function oi(pr, Lr) { + let ar; + switch (Lr) { + case ` +`: + ar = /\n/g; + break; + case "\r": + ar = /\r/g; + break; + case `\r +`: + ar = /\r\n/g; + break; + default: + throw new Error('Unexpected "eol" '.concat(JSON.stringify(Lr), ".")); + } + let ke = pr.match(ar); + return ke ? ke.length : 0; + } + function kr(pr) { + return pr.replace(/\r\n?/g, ` +`); + } + re.exports = { guessEndOfLine: Ve, convertEndOfLineToChars: Ke, countEndOfLineChars: oi, normalizeEndOfLine: kr }; + } }), Ij = Oa({ "src/language-js/utils/get-shebang.js"(M, re) { + "use strict"; + Ea(); + function Ve(Ke) { + if (!Ke.startsWith("#!")) + return ""; + let oi = Ke.indexOf(` +`); + return oi === -1 ? Ke : Ke.slice(0, oi); + } + re.exports = Ve; + } }), wj = Oa({ "src/language-js/pragma.js"(M, re) { + "use strict"; + Ea(); + var { parseWithComments: Ve, strip: Ke, extract: oi, print: kr } = Nj(), { normalizeEndOfLine: pr } = Pj(), Lr = Ij(); + function ar(a) { + let C = Lr(a); + C && (a = a.slice(C.length + 1)); + let w = oi(a), { pragmas: B, comments: E } = Ve(w); + return { shebang: C, text: a, pragmas: B, comments: E }; + } + function ke(a) { + let C = Object.keys(ar(a).pragmas); + return C.includes("prettier") || C.includes("format"); + } + function e(a) { + let { shebang: C, text: w, pragmas: B, comments: E } = ar(a), Q = Ke(w), le = kr({ pragmas: Object.assign({ format: "" }, B), comments: E.trimStart() }); + return (C ? "".concat(C, ` +`) : "") + pr(le) + (Q.startsWith(` +`) ? ` +` : ` + +`) + Q; + } + re.exports = { hasPragma: ke, insertPragma: e }; + } }), Oj = Oa({ "src/utils/is-non-empty-array.js"(M, re) { + "use strict"; + Ea(); + function Ve(Ke) { + return Array.isArray(Ke) && Ke.length > 0; + } + re.exports = Ve; + } }), L4 = Oa({ "src/language-js/loc.js"(M, re) { + "use strict"; + Ea(); + var Ve = Oj(); + function Ke(ar, ke) { + let { ignoreDecorators: e } = ke || {}; + if (!e) { + let a = ar.declaration && ar.declaration.decorators || ar.decorators; + if (Ve(a)) + return Ke(a[0]); + } + return ar.range ? ar.range[0] : ar.start; + } + function oi(ar) { + return ar.range ? ar.range[1] : ar.end; + } + function kr(ar, ke) { + let e = Ke(ar); + return Number.isInteger(e) && e === Ke(ke); + } + function pr(ar, ke) { + let e = oi(ar); + return Number.isInteger(e) && e === oi(ke); + } + function Lr(ar, ke) { + return kr(ar, ke) && pr(ar, ke); + } + re.exports = { locStart: Ke, locEnd: oi, hasSameLocStart: kr, hasSameLoc: Lr }; + } }), Fj = Oa({ "src/language-js/parse/utils/create-parser.js"(M, re) { + "use strict"; + Ea(); + var { hasPragma: Ve } = wj(), { locStart: Ke, locEnd: oi } = L4(); + function kr(pr) { + return pr = typeof pr == "function" ? { parse: pr } : pr, Object.assign({ astFormat: "estree", hasPragma: Ve, locStart: Ke, locEnd: oi }, pr); + } + re.exports = kr; + } }), Mj = Oa({ "src/language-js/parse/utils/replace-hashbang.js"(M, re) { + "use strict"; + Ea(); + function Ve(Ke) { + return Ke.charAt(0) === "#" && Ke.charAt(1) === "!" ? "//" + Ke.slice(2) : Ke; + } + re.exports = Ve; + } }), Lj = Oa({ "src/language-js/utils/is-ts-keyword-type.js"(M, re) { + "use strict"; + Ea(); + function Ve(Ke) { + let { type: oi } = Ke; + return oi.startsWith("TS") && oi.endsWith("Keyword"); + } + re.exports = Ve; + } }), Rj = Oa({ "src/language-js/utils/is-block-comment.js"(M, re) { + "use strict"; + Ea(); + var Ve = /* @__PURE__ */ new Set(["Block", "CommentBlock", "MultiLine"]), Ke = (oi) => Ve.has(oi == null ? void 0 : oi.type); + re.exports = Ke; + } }), Bj = Oa({ "src/language-js/utils/is-type-cast-comment.js"(M, re) { + "use strict"; + Ea(); + var Ve = Rj(); + function Ke(oi) { + return Ve(oi) && oi.value[0] === "*" && /@type\b/.test(oi.value); + } + re.exports = Ke; + } }), Jj = Oa({ "src/utils/get-last.js"(M, re) { + "use strict"; + Ea(); + var Ve = (Ke) => Ke[Ke.length - 1]; + re.exports = Ve; + } }), R4 = Oa({ "src/language-js/parse/postprocess/visit-node.js"(M, re) { + "use strict"; + Ea(); + function Ve(Ke, oi) { + if (Array.isArray(Ke)) { + for (let kr = 0; kr < Ke.length; kr++) + Ke[kr] = Ve(Ke[kr], oi); + return Ke; + } + if (Ke && typeof Ke == "object" && typeof Ke.type == "string") { + let kr = Object.keys(Ke); + for (let pr = 0; pr < kr.length; pr++) + Ke[kr[pr]] = Ve(Ke[kr[pr]], oi); + return oi(Ke) || Ke; + } + return Ke; + } + re.exports = Ve; + } }), B4 = Oa({ "src/language-js/parse/postprocess/throw-syntax-error.js"(M, re) { + "use strict"; + Ea(); + var Ve = S4(); + function Ke(oi, kr) { + let { start: pr, end: Lr } = oi.loc; + throw Ve(kr, { start: { line: pr.line, column: pr.column + 1 }, end: { line: Lr.line, column: Lr.column + 1 } }); + } + re.exports = Ke; + } }), jj = Oa({ "src/language-js/parse/postprocess/typescript.js"(M, re) { + "use strict"; + Ea(); + var Ve = R4(), Ke = B4(); + function oi(Lr, ar, ke) { + let e = Lr.decorators; + if (!Array.isArray(e)) + return; + let a = ar.decorators; + (!Array.isArray(a) || a.length !== e.length || e.some((C) => { + let w = ke.get(C); + return !w || !a.includes(w); + })) && Ke(ar, "Leading decorators must be attached to a class declaration"); + } + function kr(Lr, ar) { + Lr.kind !== 167 || Lr.modifiers && !Lr.modifiers.some((a) => a.kind === 126) || Lr.initializer && ar.value === null && Ke(ar, "Abstract property cannot have an initializer"); + } + function pr(Lr, ar) { + let { esTreeNodeToTSNodeMap: ke, tsNodeToESTreeNodeMap: e } = ar.tsParseResult; + Ve(Lr, (a) => { + let C = ke.get(a); + if (!C) + return; + let w = e.get(C); + w === a && (oi(C, w, e), kr(C, w)); + }); + } + re.exports = { throwErrorForInvalidNodes: pr }; + } }), Uj = Oa({ "src/language-js/parse/postprocess/index.js"(M, re) { + "use strict"; + Ea(); + var { locStart: Ve, locEnd: Ke } = L4(), oi = Lj(), kr = Bj(), pr = Jj(), Lr = R4(), { throwErrorForInvalidNodes: ar } = jj(), ke = B4(); + function e(B, E) { + if (E.parser === "typescript" && /@|abstract/.test(E.originalText) && ar(B, E), E.parser !== "typescript" && E.parser !== "flow" && E.parser !== "acorn" && E.parser !== "espree" && E.parser !== "meriyah") { + let le = /* @__PURE__ */ new Set(); + B = Lr(B, (N) => { + N.leadingComments && N.leadingComments.some(kr) && le.add(Ve(N)); + }), B = Lr(B, (N) => { + if (N.type === "ParenthesizedExpression") { + let { expression: p } = N; + if (p.type === "TypeCastExpression") + return p.range = N.range, p; + let m = Ve(N); + if (!le.has(m)) + return p.extra = Object.assign(Object.assign({}, p.extra), {}, { parenthesized: true }), p; + } + }); + } + return B = Lr(B, (le) => { + switch (le.type) { + case "ChainExpression": + return a(le.expression); + case "LogicalExpression": { + if (C(le)) + return w(le); + break; + } + case "VariableDeclaration": { + let N = pr(le.declarations); + N && N.init && Q(le, N); + break; + } + case "TSParenthesizedType": + return oi(le.typeAnnotation) || le.typeAnnotation.type === "TSThisType" || (le.typeAnnotation.range = [Ve(le), Ke(le)]), le.typeAnnotation; + case "TSTypeParameter": + if (typeof le.name == "string") { + let N = Ve(le); + le.name = { type: "Identifier", name: le.name, range: [N, N + le.name.length] }; + } + break; + case "ObjectExpression": + if (E.parser === "typescript") { + let N = le.properties.find((p) => p.type === "Property" && p.value.type === "TSEmptyBodyFunctionExpression"); + N && ke(N.value, "Unexpected token."); + } + break; + case "SequenceExpression": { + let N = pr(le.expressions); + le.range = [Ve(le), Math.min(Ke(N), Ke(le))]; + break; + } + case "TopicReference": + E.__isUsingHackPipeline = true; + break; + case "ExportAllDeclaration": { + let { exported: N } = le; + if (E.parser === "meriyah" && N && N.type === "Identifier") { + let p = E.originalText.slice(Ve(N), Ke(N)); + (p.startsWith('"') || p.startsWith("'")) && (le.exported = Object.assign(Object.assign({}, le.exported), {}, { type: "Literal", value: le.exported.name, raw: p })); + } + break; + } + } + }), B; + function Q(le, N) { + E.originalText[Ke(N)] !== ";" && (le.range = [Ve(le), Ke(N)]); + } + } + function a(B) { + switch (B.type) { + case "CallExpression": + B.type = "OptionalCallExpression", B.callee = a(B.callee); + break; + case "MemberExpression": + B.type = "OptionalMemberExpression", B.object = a(B.object); + break; + case "TSNonNullExpression": + B.expression = a(B.expression); + break; + } + return B; + } + function C(B) { + return B.type === "LogicalExpression" && B.right.type === "LogicalExpression" && B.operator === B.right.operator; + } + function w(B) { + return C(B) ? w({ type: "LogicalExpression", operator: B.operator, left: w({ type: "LogicalExpression", operator: B.operator, left: B.left, right: B.right.left, range: [Ve(B.left), Ke(B.right.left)] }), right: B.right.right, range: [Ve(B), Ke(B)] }) : B; + } + re.exports = e; + } }), zj = Oa({ "node_modules/ms/index.js"(M, re) { + Ea(); + var Ve = 1e3, Ke = Ve * 60, oi = Ke * 60, kr = oi * 24, pr = kr * 7, Lr = kr * 365.25; + re.exports = function(C, w) { + w = w || {}; + var B = typeof C; + if (B === "string" && C.length > 0) + return ar(C); + if (B === "number" && isFinite(C)) + return w.long ? e(C) : ke(C); + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(C)); + }; + function ar(C) { + if (C = String(C), !(C.length > 100)) { + var w = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(C); + if (!!w) { + var B = parseFloat(w[1]), E = (w[2] || "ms").toLowerCase(); + switch (E) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return B * Lr; + case "weeks": + case "week": + case "w": + return B * pr; + case "days": + case "day": + case "d": + return B * kr; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return B * oi; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return B * Ke; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return B * Ve; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return B; + default: + return; + } + } + } + } + function ke(C) { + var w = Math.abs(C); + return w >= kr ? Math.round(C / kr) + "d" : w >= oi ? Math.round(C / oi) + "h" : w >= Ke ? Math.round(C / Ke) + "m" : w >= Ve ? Math.round(C / Ve) + "s" : C + "ms"; + } + function e(C) { + var w = Math.abs(C); + return w >= kr ? a(C, w, kr, "day") : w >= oi ? a(C, w, oi, "hour") : w >= Ke ? a(C, w, Ke, "minute") : w >= Ve ? a(C, w, Ve, "second") : C + " ms"; + } + function a(C, w, B, E) { + var Q = w >= B * 1.5; + return Math.round(C / B) + " " + E + (Q ? "s" : ""); + } + } }), Wj = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/debug/src/common.js"(M, re) { + Ea(); + function Ve(Ke) { + kr.debug = kr, kr.default = kr, kr.coerce = a, kr.disable = ar, kr.enable = Lr, kr.enabled = ke, kr.humanize = zj(), kr.destroy = C, Object.keys(Ke).forEach((w) => { + kr[w] = Ke[w]; + }), kr.names = [], kr.skips = [], kr.formatters = {}; + function oi(w) { + let B = 0; + for (let E = 0; E < w.length; E++) + B = (B << 5) - B + w.charCodeAt(E), B |= 0; + return kr.colors[Math.abs(B) % kr.colors.length]; + } + kr.selectColor = oi; + function kr(w) { + let B, E = null, Q, le; + function N() { + for (var p = arguments.length, m = new Array(p), G = 0; G < p; G++) + m[G] = arguments[G]; + if (!N.enabled) + return; + let oe = N, f = Number(new Date()), T = f - (B || f); + oe.diff = T, oe.prev = B, oe.curr = f, B = f, m[0] = kr.coerce(m[0]), typeof m[0] != "string" && m.unshift("%O"); + let K = 0; + m[0] = m[0].replace(/%([a-zA-Z%])/g, (se, J) => { + if (se === "%%") + return "%"; + K++; + let ie = kr.formatters[J]; + if (typeof ie == "function") { + let R = m[K]; + se = ie.call(oe, R), m.splice(K, 1), K--; + } + return se; + }), kr.formatArgs.call(oe, m), (oe.log || kr.log).apply(oe, m); + } + return N.namespace = w, N.useColors = kr.useColors(), N.color = kr.selectColor(w), N.extend = pr, N.destroy = kr.destroy, Object.defineProperty(N, "enabled", { enumerable: true, configurable: false, get: () => E !== null ? E : (Q !== kr.namespaces && (Q = kr.namespaces, le = kr.enabled(w)), le), set: (p) => { + E = p; + } }), typeof kr.init == "function" && kr.init(N), N; + } + function pr(w, B) { + let E = kr(this.namespace + (typeof B > "u" ? ":" : B) + w); + return E.log = this.log, E; + } + function Lr(w) { + kr.save(w), kr.namespaces = w, kr.names = [], kr.skips = []; + let B, E = (typeof w == "string" ? w : "").split(/[\s,]+/), Q = E.length; + for (B = 0; B < Q; B++) + !E[B] || (w = E[B].replace(/\*/g, ".*?"), w[0] === "-" ? kr.skips.push(new RegExp("^" + w.slice(1) + "$")) : kr.names.push(new RegExp("^" + w + "$"))); + } + function ar() { + let w = [...kr.names.map(e), ...kr.skips.map(e).map((B) => "-" + B)].join(","); + return kr.enable(""), w; + } + function ke(w) { + if (w[w.length - 1] === "*") + return true; + let B, E; + for (B = 0, E = kr.skips.length; B < E; B++) + if (kr.skips[B].test(w)) + return false; + for (B = 0, E = kr.names.length; B < E; B++) + if (kr.names[B].test(w)) + return true; + return false; + } + function e(w) { + return w.toString().substring(2, w.toString().length - 2).replace(/\.\*\?$/, "*"); + } + function a(w) { + return w instanceof Error ? w.stack || w.message : w; + } + function C() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + return kr.enable(kr.load()), kr; + } + re.exports = Ve; + } }), wm = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/debug/src/browser.js"(M, re) { + Ea(), M.formatArgs = Ke, M.save = oi, M.load = kr, M.useColors = Ve, M.storage = pr(), M.destroy = (() => { + let ar = false; + return () => { + ar || (ar = true, console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")); + }; + })(), M.colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"]; + function Ve() { + return typeof window < "u" && window.process && (window.process.type === "renderer" || window.process.__nwjs) ? true : typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/) ? false : typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function Ke(ar) { + if (ar[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + ar[0] + (this.useColors ? "%c " : " ") + "+" + re.exports.humanize(this.diff), !this.useColors) + return; + let ke = "color: " + this.color; + ar.splice(1, 0, ke, "color: inherit"); + let e = 0, a = 0; + ar[0].replace(/%[a-zA-Z%]/g, (C) => { + C !== "%%" && (e++, C === "%c" && (a = e)); + }), ar.splice(a, 0, ke); + } + M.log = console.debug || console.log || (() => { + }); + function oi(ar) { + try { + ar ? M.storage.setItem("debug", ar) : M.storage.removeItem("debug"); + } catch { + } + } + function kr() { + let ar; + try { + ar = M.storage.getItem("debug"); + } catch { + } + return !ar && typeof Eu < "u" && "env" in Eu && (ar = Eu.env.DEBUG), ar; + } + function pr() { + try { + return localStorage; + } catch { + } + } + re.exports = Wj()(M); + var { formatters: Lr } = re.exports; + Lr.j = function(ar) { + try { + return JSON.stringify(ar); + } catch (ke) { + return "[UnexpectedJSONParseError]: " + ke.message; + } + }; + } }), qj = Oa({ "node_modules/is-extglob/index.js"(M, re) { + Ea(), re.exports = function(Ke) { + if (typeof Ke != "string" || Ke === "") + return false; + for (var oi; oi = /(\\).|([@?!+*]\(.*\))/g.exec(Ke); ) { + if (oi[2]) + return true; + Ke = Ke.slice(oi.index + oi[0].length); + } + return false; + }; + } }), Vj = Oa({ "node_modules/is-glob/index.js"(M, re) { + Ea(); + var Ve = qj(), Ke = { "{": "}", "(": ")", "[": "]" }, oi = function(pr) { + if (pr[0] === "!") + return true; + for (var Lr = 0, ar = -2, ke = -2, e = -2, a = -2, C = -2; Lr < pr.length; ) { + if (pr[Lr] === "*" || pr[Lr + 1] === "?" && /[\].+)]/.test(pr[Lr]) || ke !== -1 && pr[Lr] === "[" && pr[Lr + 1] !== "]" && (ke < Lr && (ke = pr.indexOf("]", Lr)), ke > Lr && (C === -1 || C > ke || (C = pr.indexOf("\\", Lr), C === -1 || C > ke))) || e !== -1 && pr[Lr] === "{" && pr[Lr + 1] !== "}" && (e = pr.indexOf("}", Lr), e > Lr && (C = pr.indexOf("\\", Lr), C === -1 || C > e)) || a !== -1 && pr[Lr] === "(" && pr[Lr + 1] === "?" && /[:!=]/.test(pr[Lr + 2]) && pr[Lr + 3] !== ")" && (a = pr.indexOf(")", Lr), a > Lr && (C = pr.indexOf("\\", Lr), C === -1 || C > a)) || ar !== -1 && pr[Lr] === "(" && pr[Lr + 1] !== "|" && (ar < Lr && (ar = pr.indexOf("|", Lr)), ar !== -1 && pr[ar + 1] !== ")" && (a = pr.indexOf(")", ar), a > ar && (C = pr.indexOf("\\", ar), C === -1 || C > a)))) + return true; + if (pr[Lr] === "\\") { + var w = pr[Lr + 1]; + Lr += 2; + var B = Ke[w]; + if (B) { + var E = pr.indexOf(B, Lr); + E !== -1 && (Lr = E + 1); + } + if (pr[Lr] === "!") + return true; + } else + Lr++; + } + return false; + }, kr = function(pr) { + if (pr[0] === "!") + return true; + for (var Lr = 0; Lr < pr.length; ) { + if (/[*?{}()[\]]/.test(pr[Lr])) + return true; + if (pr[Lr] === "\\") { + var ar = pr[Lr + 1]; + Lr += 2; + var ke = Ke[ar]; + if (ke) { + var e = pr.indexOf(ke, Lr); + e !== -1 && (Lr = e + 1); + } + if (pr[Lr] === "!") + return true; + } else + Lr++; + } + return false; + }; + re.exports = function(Lr, ar) { + if (typeof Lr != "string" || Lr === "") + return false; + if (Ve(Lr)) + return true; + var ke = oi; + return ar && ar.strict === false && (ke = kr), ke(Lr); + }; + } }), D1 = Oa({ "node_modules/semver/internal/constants.js"(M, re) { + Ea(); + var Ve = "2.0.0", Ke = 256, oi = Number.MAX_SAFE_INTEGER || 9007199254740991, kr = 16; + re.exports = { SEMVER_SPEC_VERSION: Ve, MAX_LENGTH: Ke, MAX_SAFE_INTEGER: oi, MAX_SAFE_COMPONENT_LENGTH: kr }; + } }), b1 = Oa({ "node_modules/semver/internal/debug.js"(M, re) { + Ea(); + var Ve = typeof Eu == "object" && Eu.env && Eu.env.NODE_DEBUG && /\bsemver\b/i.test(Eu.env.NODE_DEBUG) ? function() { + for (var Ke = arguments.length, oi = new Array(Ke), kr = 0; kr < Ke; kr++) + oi[kr] = arguments[kr]; + return console.error("SEMVER", ...oi); + } : () => { + }; + re.exports = Ve; + } }), wv = Oa({ "node_modules/semver/internal/re.js"(M, re) { + Ea(); + var { MAX_SAFE_COMPONENT_LENGTH: Ve } = D1(), Ke = b1(); + M = re.exports = {}; + var oi = M.re = [], kr = M.src = [], pr = M.t = {}, Lr = 0, ar = (ke, e, a) => { + let C = Lr++; + Ke(ke, C, e), pr[ke] = C, kr[C] = e, oi[C] = new RegExp(e, a ? "g" : void 0); + }; + ar("NUMERICIDENTIFIER", "0|[1-9]\\d*"), ar("NUMERICIDENTIFIERLOOSE", "[0-9]+"), ar("NONNUMERICIDENTIFIER", "\\d*[a-zA-Z-][a-zA-Z0-9-]*"), ar("MAINVERSION", "(".concat(kr[pr.NUMERICIDENTIFIER], ")\\.(").concat(kr[pr.NUMERICIDENTIFIER], ")\\.(").concat(kr[pr.NUMERICIDENTIFIER], ")")), ar("MAINVERSIONLOOSE", "(".concat(kr[pr.NUMERICIDENTIFIERLOOSE], ")\\.(").concat(kr[pr.NUMERICIDENTIFIERLOOSE], ")\\.(").concat(kr[pr.NUMERICIDENTIFIERLOOSE], ")")), ar("PRERELEASEIDENTIFIER", "(?:".concat(kr[pr.NUMERICIDENTIFIER], "|").concat(kr[pr.NONNUMERICIDENTIFIER], ")")), ar("PRERELEASEIDENTIFIERLOOSE", "(?:".concat(kr[pr.NUMERICIDENTIFIERLOOSE], "|").concat(kr[pr.NONNUMERICIDENTIFIER], ")")), ar("PRERELEASE", "(?:-(".concat(kr[pr.PRERELEASEIDENTIFIER], "(?:\\.").concat(kr[pr.PRERELEASEIDENTIFIER], ")*))")), ar("PRERELEASELOOSE", "(?:-?(".concat(kr[pr.PRERELEASEIDENTIFIERLOOSE], "(?:\\.").concat(kr[pr.PRERELEASEIDENTIFIERLOOSE], ")*))")), ar("BUILDIDENTIFIER", "[0-9A-Za-z-]+"), ar("BUILD", "(?:\\+(".concat(kr[pr.BUILDIDENTIFIER], "(?:\\.").concat(kr[pr.BUILDIDENTIFIER], ")*))")), ar("FULLPLAIN", "v?".concat(kr[pr.MAINVERSION]).concat(kr[pr.PRERELEASE], "?").concat(kr[pr.BUILD], "?")), ar("FULL", "^".concat(kr[pr.FULLPLAIN], "$")), ar("LOOSEPLAIN", "[v=\\s]*".concat(kr[pr.MAINVERSIONLOOSE]).concat(kr[pr.PRERELEASELOOSE], "?").concat(kr[pr.BUILD], "?")), ar("LOOSE", "^".concat(kr[pr.LOOSEPLAIN], "$")), ar("GTLT", "((?:<|>)?=?)"), ar("XRANGEIDENTIFIERLOOSE", "".concat(kr[pr.NUMERICIDENTIFIERLOOSE], "|x|X|\\*")), ar("XRANGEIDENTIFIER", "".concat(kr[pr.NUMERICIDENTIFIER], "|x|X|\\*")), ar("XRANGEPLAIN", "[v=\\s]*(".concat(kr[pr.XRANGEIDENTIFIER], ")(?:\\.(").concat(kr[pr.XRANGEIDENTIFIER], ")(?:\\.(").concat(kr[pr.XRANGEIDENTIFIER], ")(?:").concat(kr[pr.PRERELEASE], ")?").concat(kr[pr.BUILD], "?)?)?")), ar("XRANGEPLAINLOOSE", "[v=\\s]*(".concat(kr[pr.XRANGEIDENTIFIERLOOSE], ")(?:\\.(").concat(kr[pr.XRANGEIDENTIFIERLOOSE], ")(?:\\.(").concat(kr[pr.XRANGEIDENTIFIERLOOSE], ")(?:").concat(kr[pr.PRERELEASELOOSE], ")?").concat(kr[pr.BUILD], "?)?)?")), ar("XRANGE", "^".concat(kr[pr.GTLT], "\\s*").concat(kr[pr.XRANGEPLAIN], "$")), ar("XRANGELOOSE", "^".concat(kr[pr.GTLT], "\\s*").concat(kr[pr.XRANGEPLAINLOOSE], "$")), ar("COERCE", "(^|[^\\d])(\\d{1,".concat(Ve, "})(?:\\.(\\d{1,").concat(Ve, "}))?(?:\\.(\\d{1,").concat(Ve, "}))?(?:$|[^\\d])")), ar("COERCERTL", kr[pr.COERCE], true), ar("LONETILDE", "(?:~>?)"), ar("TILDETRIM", "(\\s*)".concat(kr[pr.LONETILDE], "\\s+"), true), M.tildeTrimReplace = "$1~", ar("TILDE", "^".concat(kr[pr.LONETILDE]).concat(kr[pr.XRANGEPLAIN], "$")), ar("TILDELOOSE", "^".concat(kr[pr.LONETILDE]).concat(kr[pr.XRANGEPLAINLOOSE], "$")), ar("LONECARET", "(?:\\^)"), ar("CARETTRIM", "(\\s*)".concat(kr[pr.LONECARET], "\\s+"), true), M.caretTrimReplace = "$1^", ar("CARET", "^".concat(kr[pr.LONECARET]).concat(kr[pr.XRANGEPLAIN], "$")), ar("CARETLOOSE", "^".concat(kr[pr.LONECARET]).concat(kr[pr.XRANGEPLAINLOOSE], "$")), ar("COMPARATORLOOSE", "^".concat(kr[pr.GTLT], "\\s*(").concat(kr[pr.LOOSEPLAIN], ")$|^$")), ar("COMPARATOR", "^".concat(kr[pr.GTLT], "\\s*(").concat(kr[pr.FULLPLAIN], ")$|^$")), ar("COMPARATORTRIM", "(\\s*)".concat(kr[pr.GTLT], "\\s*(").concat(kr[pr.LOOSEPLAIN], "|").concat(kr[pr.XRANGEPLAIN], ")"), true), M.comparatorTrimReplace = "$1$2$3", ar("HYPHENRANGE", "^\\s*(".concat(kr[pr.XRANGEPLAIN], ")\\s+-\\s+(").concat(kr[pr.XRANGEPLAIN], ")\\s*$")), ar("HYPHENRANGELOOSE", "^\\s*(".concat(kr[pr.XRANGEPLAINLOOSE], ")\\s+-\\s+(").concat(kr[pr.XRANGEPLAINLOOSE], ")\\s*$")), ar("STAR", "(<|>)?=?\\s*\\*"), ar("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), ar("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } }), S1 = Oa({ "node_modules/semver/internal/parse-options.js"(M, re) { + Ea(); + var Ve = ["includePrerelease", "loose", "rtl"], Ke = (oi) => oi ? typeof oi != "object" ? { loose: true } : Ve.filter((kr) => oi[kr]).reduce((kr, pr) => (kr[pr] = true, kr), {}) : {}; + re.exports = Ke; + } }), BT = Oa({ "node_modules/semver/internal/identifiers.js"(M, re) { + Ea(); + var Ve = /^[0-9]+$/, Ke = (kr, pr) => { + let Lr = Ve.test(kr), ar = Ve.test(pr); + return Lr && ar && (kr = +kr, pr = +pr), kr === pr ? 0 : Lr && !ar ? -1 : ar && !Lr ? 1 : kr < pr ? -1 : 1; + }, oi = (kr, pr) => Ke(pr, kr); + re.exports = { compareIdentifiers: Ke, rcompareIdentifiers: oi }; + } }), Lf = Oa({ "node_modules/semver/classes/semver.js"(M, re) { + Ea(); + var Ve = b1(), { MAX_LENGTH: Ke, MAX_SAFE_INTEGER: oi } = D1(), { re: kr, t: pr } = wv(), Lr = S1(), { compareIdentifiers: ar } = BT(), ke = class { + constructor(e, a) { + if (a = Lr(a), e instanceof ke) { + if (e.loose === !!a.loose && e.includePrerelease === !!a.includePrerelease) + return e; + e = e.version; + } else if (typeof e != "string") + throw new TypeError("Invalid Version: ".concat(e)); + if (e.length > Ke) + throw new TypeError("version is longer than ".concat(Ke, " characters")); + Ve("SemVer", e, a), this.options = a, this.loose = !!a.loose, this.includePrerelease = !!a.includePrerelease; + let C = e.trim().match(a.loose ? kr[pr.LOOSE] : kr[pr.FULL]); + if (!C) + throw new TypeError("Invalid Version: ".concat(e)); + if (this.raw = e, this.major = +C[1], this.minor = +C[2], this.patch = +C[3], this.major > oi || this.major < 0) + throw new TypeError("Invalid major version"); + if (this.minor > oi || this.minor < 0) + throw new TypeError("Invalid minor version"); + if (this.patch > oi || this.patch < 0) + throw new TypeError("Invalid patch version"); + C[4] ? this.prerelease = C[4].split(".").map((w) => { + if (/^[0-9]+$/.test(w)) { + let B = +w; + if (B >= 0 && B < oi) + return B; + } + return w; + }) : this.prerelease = [], this.build = C[5] ? C[5].split(".") : [], this.format(); + } + format() { + return this.version = "".concat(this.major, ".").concat(this.minor, ".").concat(this.patch), this.prerelease.length && (this.version += "-".concat(this.prerelease.join("."))), this.version; + } + toString() { + return this.version; + } + compare(e) { + if (Ve("SemVer.compare", this.version, this.options, e), !(e instanceof ke)) { + if (typeof e == "string" && e === this.version) + return 0; + e = new ke(e, this.options); + } + return e.version === this.version ? 0 : this.compareMain(e) || this.comparePre(e); + } + compareMain(e) { + return e instanceof ke || (e = new ke(e, this.options)), ar(this.major, e.major) || ar(this.minor, e.minor) || ar(this.patch, e.patch); + } + comparePre(e) { + if (e instanceof ke || (e = new ke(e, this.options)), this.prerelease.length && !e.prerelease.length) + return -1; + if (!this.prerelease.length && e.prerelease.length) + return 1; + if (!this.prerelease.length && !e.prerelease.length) + return 0; + let a = 0; + do { + let C = this.prerelease[a], w = e.prerelease[a]; + if (Ve("prerelease compare", a, C, w), C === void 0 && w === void 0) + return 0; + if (w === void 0) + return 1; + if (C === void 0) + return -1; + if (C === w) + continue; + return ar(C, w); + } while (++a); + } + compareBuild(e) { + e instanceof ke || (e = new ke(e, this.options)); + let a = 0; + do { + let C = this.build[a], w = e.build[a]; + if (Ve("prerelease compare", a, C, w), C === void 0 && w === void 0) + return 0; + if (w === void 0) + return 1; + if (C === void 0) + return -1; + if (C === w) + continue; + return ar(C, w); + } while (++a); + } + inc(e, a) { + switch (e) { + case "premajor": + this.prerelease.length = 0, this.patch = 0, this.minor = 0, this.major++, this.inc("pre", a); + break; + case "preminor": + this.prerelease.length = 0, this.patch = 0, this.minor++, this.inc("pre", a); + break; + case "prepatch": + this.prerelease.length = 0, this.inc("patch", a), this.inc("pre", a); + break; + case "prerelease": + this.prerelease.length === 0 && this.inc("patch", a), this.inc("pre", a); + break; + case "major": + (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) && this.major++, this.minor = 0, this.patch = 0, this.prerelease = []; + break; + case "minor": + (this.patch !== 0 || this.prerelease.length === 0) && this.minor++, this.patch = 0, this.prerelease = []; + break; + case "patch": + this.prerelease.length === 0 && this.patch++, this.prerelease = []; + break; + case "pre": + if (this.prerelease.length === 0) + this.prerelease = [0]; + else { + let C = this.prerelease.length; + for (; --C >= 0; ) + typeof this.prerelease[C] == "number" && (this.prerelease[C]++, C = -2); + C === -1 && this.prerelease.push(0); + } + a && (ar(this.prerelease[0], a) === 0 ? isNaN(this.prerelease[1]) && (this.prerelease = [a, 0]) : this.prerelease = [a, 0]); + break; + default: + throw new Error("invalid increment argument: ".concat(e)); + } + return this.format(), this.raw = this.version, this; + } + }; + re.exports = ke; + } }), Ov = Oa({ "node_modules/semver/functions/parse.js"(M, re) { + Ea(); + var { MAX_LENGTH: Ve } = D1(), { re: Ke, t: oi } = wv(), kr = Lf(), pr = S1(), Lr = (ar, ke) => { + if (ke = pr(ke), ar instanceof kr) + return ar; + if (typeof ar != "string" || ar.length > Ve || !(ke.loose ? Ke[oi.LOOSE] : Ke[oi.FULL]).test(ar)) + return null; + try { + return new kr(ar, ke); + } catch { + return null; + } + }; + re.exports = Lr; + } }), Kj = Oa({ "node_modules/semver/functions/valid.js"(M, re) { + Ea(); + var Ve = Ov(), Ke = (oi, kr) => { + let pr = Ve(oi, kr); + return pr ? pr.version : null; + }; + re.exports = Ke; + } }), Gj = Oa({ "node_modules/semver/functions/clean.js"(M, re) { + Ea(); + var Ve = Ov(), Ke = (oi, kr) => { + let pr = Ve(oi.trim().replace(/^[=v]+/, ""), kr); + return pr ? pr.version : null; + }; + re.exports = Ke; + } }), Hj = Oa({ "node_modules/semver/functions/inc.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = (oi, kr, pr, Lr) => { + typeof pr == "string" && (Lr = pr, pr = void 0); + try { + return new Ve(oi instanceof Ve ? oi.version : oi, pr).inc(kr, Lr).version; + } catch { + return null; + } + }; + re.exports = Ke; + } }), nd = Oa({ "node_modules/semver/functions/compare.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = (oi, kr, pr) => new Ve(oi, pr).compare(new Ve(kr, pr)); + re.exports = Ke; + } }), qT = Oa({ "node_modules/semver/functions/eq.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr, pr) => Ve(oi, kr, pr) === 0; + re.exports = Ke; + } }), Xj = Oa({ "node_modules/semver/functions/diff.js"(M, re) { + Ea(); + var Ve = Ov(), Ke = qT(), oi = (kr, pr) => { + if (Ke(kr, pr)) + return null; + { + let Lr = Ve(kr), ar = Ve(pr), ke = Lr.prerelease.length || ar.prerelease.length, e = ke ? "pre" : "", a = ke ? "prerelease" : ""; + for (let C in Lr) + if ((C === "major" || C === "minor" || C === "patch") && Lr[C] !== ar[C]) + return e + C; + return a; + } + }; + re.exports = oi; + } }), Qj = Oa({ "node_modules/semver/functions/major.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = (oi, kr) => new Ve(oi, kr).major; + re.exports = Ke; + } }), Yj = Oa({ "node_modules/semver/functions/minor.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = (oi, kr) => new Ve(oi, kr).minor; + re.exports = Ke; + } }), $j = Oa({ "node_modules/semver/functions/patch.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = (oi, kr) => new Ve(oi, kr).patch; + re.exports = Ke; + } }), Zj = Oa({ "node_modules/semver/functions/prerelease.js"(M, re) { + Ea(); + var Ve = Ov(), Ke = (oi, kr) => { + let pr = Ve(oi, kr); + return pr && pr.prerelease.length ? pr.prerelease : null; + }; + re.exports = Ke; + } }), eU = Oa({ "node_modules/semver/functions/rcompare.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr, pr) => Ve(kr, oi, pr); + re.exports = Ke; + } }), rU = Oa({ "node_modules/semver/functions/compare-loose.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr) => Ve(oi, kr, true); + re.exports = Ke; + } }), VT = Oa({ "node_modules/semver/functions/compare-build.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = (oi, kr, pr) => { + let Lr = new Ve(oi, pr), ar = new Ve(kr, pr); + return Lr.compare(ar) || Lr.compareBuild(ar); + }; + re.exports = Ke; + } }), iU = Oa({ "node_modules/semver/functions/sort.js"(M, re) { + Ea(); + var Ve = VT(), Ke = (oi, kr) => oi.sort((pr, Lr) => Ve(pr, Lr, kr)); + re.exports = Ke; + } }), tU = Oa({ "node_modules/semver/functions/rsort.js"(M, re) { + Ea(); + var Ve = VT(), Ke = (oi, kr) => oi.sort((pr, Lr) => Ve(Lr, pr, kr)); + re.exports = Ke; + } }), T1 = Oa({ "node_modules/semver/functions/gt.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr, pr) => Ve(oi, kr, pr) > 0; + re.exports = Ke; + } }), KT = Oa({ "node_modules/semver/functions/lt.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr, pr) => Ve(oi, kr, pr) < 0; + re.exports = Ke; + } }), J4 = Oa({ "node_modules/semver/functions/neq.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr, pr) => Ve(oi, kr, pr) !== 0; + re.exports = Ke; + } }), GT = Oa({ "node_modules/semver/functions/gte.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr, pr) => Ve(oi, kr, pr) >= 0; + re.exports = Ke; + } }), HT = Oa({ "node_modules/semver/functions/lte.js"(M, re) { + Ea(); + var Ve = nd(), Ke = (oi, kr, pr) => Ve(oi, kr, pr) <= 0; + re.exports = Ke; + } }), j4 = Oa({ "node_modules/semver/functions/cmp.js"(M, re) { + Ea(); + var Ve = qT(), Ke = J4(), oi = T1(), kr = GT(), pr = KT(), Lr = HT(), ar = (ke, e, a, C) => { + switch (e) { + case "===": + return typeof ke == "object" && (ke = ke.version), typeof a == "object" && (a = a.version), ke === a; + case "!==": + return typeof ke == "object" && (ke = ke.version), typeof a == "object" && (a = a.version), ke !== a; + case "": + case "=": + case "==": + return Ve(ke, a, C); + case "!=": + return Ke(ke, a, C); + case ">": + return oi(ke, a, C); + case ">=": + return kr(ke, a, C); + case "<": + return pr(ke, a, C); + case "<=": + return Lr(ke, a, C); + default: + throw new TypeError("Invalid operator: ".concat(e)); + } + }; + re.exports = ar; + } }), aU = Oa({ "node_modules/semver/functions/coerce.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = Ov(), { re: oi, t: kr } = wv(), pr = (Lr, ar) => { + if (Lr instanceof Ve) + return Lr; + if (typeof Lr == "number" && (Lr = String(Lr)), typeof Lr != "string") + return null; + ar = ar || {}; + let ke = null; + if (!ar.rtl) + ke = Lr.match(oi[kr.COERCE]); + else { + let e; + for (; (e = oi[kr.COERCERTL].exec(Lr)) && (!ke || ke.index + ke[0].length !== Lr.length); ) + (!ke || e.index + e[0].length !== ke.index + ke[0].length) && (ke = e), oi[kr.COERCERTL].lastIndex = e.index + e[1].length + e[2].length; + oi[kr.COERCERTL].lastIndex = -1; + } + return ke === null ? null : Ke("".concat(ke[2], ".").concat(ke[3] || "0", ".").concat(ke[4] || "0"), ar); + }; + re.exports = pr; + } }), nU = Oa({ "node_modules/yallist/iterator.js"(M, re) { + "use strict"; + Ea(), re.exports = function(Ve) { + Ve.prototype[Symbol.iterator] = function* () { + for (let Ke = this.head; Ke; Ke = Ke.next) + yield Ke.value; + }; + }; + } }), oU = Oa({ "node_modules/yallist/yallist.js"(M, re) { + "use strict"; + Ea(), re.exports = Ve, Ve.Node = pr, Ve.create = Ve; + function Ve(Lr) { + var ar = this; + if (ar instanceof Ve || (ar = new Ve()), ar.tail = null, ar.head = null, ar.length = 0, Lr && typeof Lr.forEach == "function") + Lr.forEach(function(a) { + ar.push(a); + }); + else if (arguments.length > 0) + for (var ke = 0, e = arguments.length; ke < e; ke++) + ar.push(arguments[ke]); + return ar; + } + Ve.prototype.removeNode = function(Lr) { + if (Lr.list !== this) + throw new Error("removing node which does not belong to this list"); + var ar = Lr.next, ke = Lr.prev; + return ar && (ar.prev = ke), ke && (ke.next = ar), Lr === this.head && (this.head = ar), Lr === this.tail && (this.tail = ke), Lr.list.length--, Lr.next = null, Lr.prev = null, Lr.list = null, ar; + }, Ve.prototype.unshiftNode = function(Lr) { + if (Lr !== this.head) { + Lr.list && Lr.list.removeNode(Lr); + var ar = this.head; + Lr.list = this, Lr.next = ar, ar && (ar.prev = Lr), this.head = Lr, this.tail || (this.tail = Lr), this.length++; + } + }, Ve.prototype.pushNode = function(Lr) { + if (Lr !== this.tail) { + Lr.list && Lr.list.removeNode(Lr); + var ar = this.tail; + Lr.list = this, Lr.prev = ar, ar && (ar.next = Lr), this.tail = Lr, this.head || (this.head = Lr), this.length++; + } + }, Ve.prototype.push = function() { + for (var Lr = 0, ar = arguments.length; Lr < ar; Lr++) + oi(this, arguments[Lr]); + return this.length; + }, Ve.prototype.unshift = function() { + for (var Lr = 0, ar = arguments.length; Lr < ar; Lr++) + kr(this, arguments[Lr]); + return this.length; + }, Ve.prototype.pop = function() { + if (!!this.tail) { + var Lr = this.tail.value; + return this.tail = this.tail.prev, this.tail ? this.tail.next = null : this.head = null, this.length--, Lr; + } + }, Ve.prototype.shift = function() { + if (!!this.head) { + var Lr = this.head.value; + return this.head = this.head.next, this.head ? this.head.prev = null : this.tail = null, this.length--, Lr; + } + }, Ve.prototype.forEach = function(Lr, ar) { + ar = ar || this; + for (var ke = this.head, e = 0; ke !== null; e++) + Lr.call(ar, ke.value, e, this), ke = ke.next; + }, Ve.prototype.forEachReverse = function(Lr, ar) { + ar = ar || this; + for (var ke = this.tail, e = this.length - 1; ke !== null; e--) + Lr.call(ar, ke.value, e, this), ke = ke.prev; + }, Ve.prototype.get = function(Lr) { + for (var ar = 0, ke = this.head; ke !== null && ar < Lr; ar++) + ke = ke.next; + if (ar === Lr && ke !== null) + return ke.value; + }, Ve.prototype.getReverse = function(Lr) { + for (var ar = 0, ke = this.tail; ke !== null && ar < Lr; ar++) + ke = ke.prev; + if (ar === Lr && ke !== null) + return ke.value; + }, Ve.prototype.map = function(Lr, ar) { + ar = ar || this; + for (var ke = new Ve(), e = this.head; e !== null; ) + ke.push(Lr.call(ar, e.value, this)), e = e.next; + return ke; + }, Ve.prototype.mapReverse = function(Lr, ar) { + ar = ar || this; + for (var ke = new Ve(), e = this.tail; e !== null; ) + ke.push(Lr.call(ar, e.value, this)), e = e.prev; + return ke; + }, Ve.prototype.reduce = function(Lr, ar) { + var ke, e = this.head; + if (arguments.length > 1) + ke = ar; + else if (this.head) + e = this.head.next, ke = this.head.value; + else + throw new TypeError("Reduce of empty list with no initial value"); + for (var a = 0; e !== null; a++) + ke = Lr(ke, e.value, a), e = e.next; + return ke; + }, Ve.prototype.reduceReverse = function(Lr, ar) { + var ke, e = this.tail; + if (arguments.length > 1) + ke = ar; + else if (this.tail) + e = this.tail.prev, ke = this.tail.value; + else + throw new TypeError("Reduce of empty list with no initial value"); + for (var a = this.length - 1; e !== null; a--) + ke = Lr(ke, e.value, a), e = e.prev; + return ke; + }, Ve.prototype.toArray = function() { + for (var Lr = new Array(this.length), ar = 0, ke = this.head; ke !== null; ar++) + Lr[ar] = ke.value, ke = ke.next; + return Lr; + }, Ve.prototype.toArrayReverse = function() { + for (var Lr = new Array(this.length), ar = 0, ke = this.tail; ke !== null; ar++) + Lr[ar] = ke.value, ke = ke.prev; + return Lr; + }, Ve.prototype.slice = function(Lr, ar) { + ar = ar || this.length, ar < 0 && (ar += this.length), Lr = Lr || 0, Lr < 0 && (Lr += this.length); + var ke = new Ve(); + if (ar < Lr || ar < 0) + return ke; + Lr < 0 && (Lr = 0), ar > this.length && (ar = this.length); + for (var e = 0, a = this.head; a !== null && e < Lr; e++) + a = a.next; + for (; a !== null && e < ar; e++, a = a.next) + ke.push(a.value); + return ke; + }, Ve.prototype.sliceReverse = function(Lr, ar) { + ar = ar || this.length, ar < 0 && (ar += this.length), Lr = Lr || 0, Lr < 0 && (Lr += this.length); + var ke = new Ve(); + if (ar < Lr || ar < 0) + return ke; + Lr < 0 && (Lr = 0), ar > this.length && (ar = this.length); + for (var e = this.length, a = this.tail; a !== null && e > ar; e--) + a = a.prev; + for (; a !== null && e > Lr; e--, a = a.prev) + ke.push(a.value); + return ke; + }, Ve.prototype.splice = function(Lr, ar) { + Lr > this.length && (Lr = this.length - 1), Lr < 0 && (Lr = this.length + Lr); + for (var ke = 0, e = this.head; e !== null && ke < Lr; ke++) + e = e.next; + for (var a = [], ke = 0; e && ke < ar; ke++) + a.push(e.value), e = this.removeNode(e); + e === null && (e = this.tail), e !== this.head && e !== this.tail && (e = e.prev); + for (var ke = 0; ke < (arguments.length <= 2 ? 0 : arguments.length - 2); ke++) + e = Ke(this, e, ke + 2 < 2 || arguments.length <= ke + 2 ? void 0 : arguments[ke + 2]); + return a; + }, Ve.prototype.reverse = function() { + for (var Lr = this.head, ar = this.tail, ke = Lr; ke !== null; ke = ke.prev) { + var e = ke.prev; + ke.prev = ke.next, ke.next = e; + } + return this.head = ar, this.tail = Lr, this; + }; + function Ke(Lr, ar, ke) { + var e = ar === Lr.head ? new pr(ke, null, ar, Lr) : new pr(ke, ar, ar.next, Lr); + return e.next === null && (Lr.tail = e), e.prev === null && (Lr.head = e), Lr.length++, e; + } + function oi(Lr, ar) { + Lr.tail = new pr(ar, Lr.tail, null, Lr), Lr.head || (Lr.head = Lr.tail), Lr.length++; + } + function kr(Lr, ar) { + Lr.head = new pr(ar, null, Lr.head, Lr), Lr.tail || (Lr.tail = Lr.head), Lr.length++; + } + function pr(Lr, ar, ke, e) { + if (!(this instanceof pr)) + return new pr(Lr, ar, ke, e); + this.list = e, this.value = Lr, ar ? (ar.next = this, this.prev = ar) : this.prev = null, ke ? (ke.prev = this, this.next = ke) : this.next = null; + } + try { + nU()(Ve); + } catch { + } + } }), sU = Oa({ "node_modules/lru-cache/index.js"(M, re) { + "use strict"; + Ea(); + var Ve = oU(), Ke = Symbol("max"), oi = Symbol("length"), kr = Symbol("lengthCalculator"), pr = Symbol("allowStale"), Lr = Symbol("maxAge"), ar = Symbol("dispose"), ke = Symbol("noDisposeOnSet"), e = Symbol("lruList"), a = Symbol("cache"), C = Symbol("updateAgeOnGet"), w = () => 1, B = class { + constructor(G) { + if (typeof G == "number" && (G = { max: G }), G || (G = {}), G.max && (typeof G.max != "number" || G.max < 0)) + throw new TypeError("max must be a non-negative number"); + let oe = this[Ke] = G.max || 1 / 0, f = G.length || w; + if (this[kr] = typeof f != "function" ? w : f, this[pr] = G.stale || false, G.maxAge && typeof G.maxAge != "number") + throw new TypeError("maxAge must be a number"); + this[Lr] = G.maxAge || 0, this[ar] = G.dispose, this[ke] = G.noDisposeOnSet || false, this[C] = G.updateAgeOnGet || false, this.reset(); + } + set max(G) { + if (typeof G != "number" || G < 0) + throw new TypeError("max must be a non-negative number"); + this[Ke] = G || 1 / 0, le(this); + } + get max() { + return this[Ke]; + } + set allowStale(G) { + this[pr] = !!G; + } + get allowStale() { + return this[pr]; + } + set maxAge(G) { + if (typeof G != "number") + throw new TypeError("maxAge must be a non-negative number"); + this[Lr] = G, le(this); + } + get maxAge() { + return this[Lr]; + } + set lengthCalculator(G) { + typeof G != "function" && (G = w), G !== this[kr] && (this[kr] = G, this[oi] = 0, this[e].forEach((oe) => { + oe.length = this[kr](oe.value, oe.key), this[oi] += oe.length; + })), le(this); + } + get lengthCalculator() { + return this[kr]; + } + get length() { + return this[oi]; + } + get itemCount() { + return this[e].length; + } + rforEach(G, oe) { + oe = oe || this; + for (let f = this[e].tail; f !== null; ) { + let T = f.prev; + m(this, G, f, oe), f = T; + } + } + forEach(G, oe) { + oe = oe || this; + for (let f = this[e].head; f !== null; ) { + let T = f.next; + m(this, G, f, oe), f = T; + } + } + keys() { + return this[e].toArray().map((G) => G.key); + } + values() { + return this[e].toArray().map((G) => G.value); + } + reset() { + this[ar] && this[e] && this[e].length && this[e].forEach((G) => this[ar](G.key, G.value)), this[a] = /* @__PURE__ */ new Map(), this[e] = new Ve(), this[oi] = 0; + } + dump() { + return this[e].map((G) => Q(this, G) ? false : { k: G.key, v: G.value, e: G.now + (G.maxAge || 0) }).toArray().filter((G) => G); + } + dumpLru() { + return this[e]; + } + set(G, oe, f) { + if (f = f || this[Lr], f && typeof f != "number") + throw new TypeError("maxAge must be a number"); + let T = f ? Date.now() : 0, K = this[kr](oe, G); + if (this[a].has(G)) { + if (K > this[Ke]) + return N(this, this[a].get(G)), false; + let J = this[a].get(G).value; + return this[ar] && (this[ke] || this[ar](G, J.value)), J.now = T, J.maxAge = f, J.value = oe, this[oi] += K - J.length, J.length = K, this.get(G), le(this), true; + } + let b = new p(G, oe, K, T, f); + return b.length > this[Ke] ? (this[ar] && this[ar](G, oe), false) : (this[oi] += b.length, this[e].unshift(b), this[a].set(G, this[e].head), le(this), true); + } + has(G) { + if (!this[a].has(G)) + return false; + let oe = this[a].get(G).value; + return !Q(this, oe); + } + get(G) { + return E(this, G, true); + } + peek(G) { + return E(this, G, false); + } + pop() { + let G = this[e].tail; + return G ? (N(this, G), G.value) : null; + } + del(G) { + N(this, this[a].get(G)); + } + load(G) { + this.reset(); + let oe = Date.now(); + for (let f = G.length - 1; f >= 0; f--) { + let T = G[f], K = T.e || 0; + if (K === 0) + this.set(T.k, T.v); + else { + let b = K - oe; + b > 0 && this.set(T.k, T.v, b); + } + } + } + prune() { + this[a].forEach((G, oe) => E(this, oe, false)); + } + }, E = (G, oe, f) => { + let T = G[a].get(oe); + if (T) { + let K = T.value; + if (Q(G, K)) { + if (N(G, T), !G[pr]) + return; + } else + f && (G[C] && (T.value.now = Date.now()), G[e].unshiftNode(T)); + return K.value; + } + }, Q = (G, oe) => { + if (!oe || !oe.maxAge && !G[Lr]) + return false; + let f = Date.now() - oe.now; + return oe.maxAge ? f > oe.maxAge : G[Lr] && f > G[Lr]; + }, le = (G) => { + if (G[oi] > G[Ke]) + for (let oe = G[e].tail; G[oi] > G[Ke] && oe !== null; ) { + let f = oe.prev; + N(G, oe), oe = f; + } + }, N = (G, oe) => { + if (oe) { + let f = oe.value; + G[ar] && G[ar](f.key, f.value), G[oi] -= f.length, G[a].delete(f.key), G[e].removeNode(oe); + } + }, p = class { + constructor(G, oe, f, T, K) { + this.key = G, this.value = oe, this.length = f, this.now = T, this.maxAge = K || 0; + } + }, m = (G, oe, f, T) => { + let K = f.value; + Q(G, K) && (N(G, f), G[pr] || (K = void 0)), K && oe.call(T, K.value, K.key, G); + }; + re.exports = B; + } }), od = Oa({ "node_modules/semver/classes/range.js"(M, re) { + Ea(); + var Ve = class { + constructor(ie, R) { + if (R = kr(R), ie instanceof Ve) + return ie.loose === !!R.loose && ie.includePrerelease === !!R.includePrerelease ? ie : new Ve(ie.raw, R); + if (ie instanceof pr) + return this.raw = ie.value, this.set = [[ie]], this.format(), this; + if (this.options = R, this.loose = !!R.loose, this.includePrerelease = !!R.includePrerelease, this.raw = ie, this.set = ie.split("||").map((q) => this.parseRange(q.trim())).filter((q) => q.length), !this.set.length) + throw new TypeError("Invalid SemVer Range: ".concat(ie)); + if (this.set.length > 1) { + let q = this.set[0]; + if (this.set = this.set.filter((O) => !B(O[0])), this.set.length === 0) + this.set = [q]; + else if (this.set.length > 1) { + for (let O of this.set) + if (O.length === 1 && E(O[0])) { + this.set = [O]; + break; + } + } + } + this.format(); + } + format() { + return this.range = this.set.map((ie) => ie.join(" ").trim()).join("||").trim(), this.range; + } + toString() { + return this.range; + } + parseRange(ie) { + ie = ie.trim(); + let R = Object.keys(this.options).join(","), q = "parseRange:".concat(R, ":").concat(ie), O = oi.get(q); + if (O) + return O; + let ve = this.options.loose, ee = ve ? ke[e.HYPHENRANGELOOSE] : ke[e.HYPHENRANGE]; + ie = ie.replace(ee, se(this.options.includePrerelease)), Lr("hyphen replace", ie), ie = ie.replace(ke[e.COMPARATORTRIM], a), Lr("comparator trim", ie), ie = ie.replace(ke[e.TILDETRIM], C), ie = ie.replace(ke[e.CARETTRIM], w), ie = ie.split(/\s+/).join(" "); + let he = ie.split(" ").map(($) => le($, this.options)).join(" ").split(/\s+/).map(($) => b($, this.options)); + ve && (he = he.filter(($) => (Lr("loose invalid filter", $, this.options), !!$.match(ke[e.COMPARATORLOOSE])))), Lr("range list", he); + let F = /* @__PURE__ */ new Map(), x = he.map(($) => new pr($, this.options)); + for (let $ of x) { + if (B($)) + return [$]; + F.set($.value, $); + } + F.size > 1 && F.has("") && F.delete(""); + let X = [...F.values()]; + return oi.set(q, X), X; + } + intersects(ie, R) { + if (!(ie instanceof Ve)) + throw new TypeError("a Range is required"); + return this.set.some((q) => Q(q, R) && ie.set.some((O) => Q(O, R) && q.every((ve) => O.every((ee) => ve.intersects(ee, R))))); + } + test(ie) { + if (!ie) + return false; + if (typeof ie == "string") + try { + ie = new ar(ie, this.options); + } catch { + return false; + } + for (let R = 0; R < this.set.length; R++) + if (J(this.set[R], ie, this.options)) + return true; + return false; + } + }; + re.exports = Ve; + var Ke = sU(), oi = new Ke({ max: 1e3 }), kr = S1(), pr = x1(), Lr = b1(), ar = Lf(), { re: ke, t: e, comparatorTrimReplace: a, tildeTrimReplace: C, caretTrimReplace: w } = wv(), B = (ie) => ie.value === "<0.0.0-0", E = (ie) => ie.value === "", Q = (ie, R) => { + let q = true, O = ie.slice(), ve = O.pop(); + for (; q && O.length; ) + q = O.every((ee) => ve.intersects(ee, R)), ve = O.pop(); + return q; + }, le = (ie, R) => (Lr("comp", ie, R), ie = G(ie, R), Lr("caret", ie), ie = p(ie, R), Lr("tildes", ie), ie = f(ie, R), Lr("xrange", ie), ie = K(ie, R), Lr("stars", ie), ie), N = (ie) => !ie || ie.toLowerCase() === "x" || ie === "*", p = (ie, R) => ie.trim().split(/\s+/).map((q) => m(q, R)).join(" "), m = (ie, R) => { + let q = R.loose ? ke[e.TILDELOOSE] : ke[e.TILDE]; + return ie.replace(q, (O, ve, ee, he, F) => { + Lr("tilde", ie, O, ve, ee, he, F); + let x; + return N(ve) ? x = "" : N(ee) ? x = ">=".concat(ve, ".0.0 <").concat(+ve + 1, ".0.0-0") : N(he) ? x = ">=".concat(ve, ".").concat(ee, ".0 <").concat(ve, ".").concat(+ee + 1, ".0-0") : F ? (Lr("replaceTilde pr", F), x = ">=".concat(ve, ".").concat(ee, ".").concat(he, "-").concat(F, " <").concat(ve, ".").concat(+ee + 1, ".0-0")) : x = ">=".concat(ve, ".").concat(ee, ".").concat(he, " <").concat(ve, ".").concat(+ee + 1, ".0-0"), Lr("tilde return", x), x; + }); + }, G = (ie, R) => ie.trim().split(/\s+/).map((q) => oe(q, R)).join(" "), oe = (ie, R) => { + Lr("caret", ie, R); + let q = R.loose ? ke[e.CARETLOOSE] : ke[e.CARET], O = R.includePrerelease ? "-0" : ""; + return ie.replace(q, (ve, ee, he, F, x) => { + Lr("caret", ie, ve, ee, he, F, x); + let X; + return N(ee) ? X = "" : N(he) ? X = ">=".concat(ee, ".0.0").concat(O, " <").concat(+ee + 1, ".0.0-0") : N(F) ? ee === "0" ? X = ">=".concat(ee, ".").concat(he, ".0").concat(O, " <").concat(ee, ".").concat(+he + 1, ".0-0") : X = ">=".concat(ee, ".").concat(he, ".0").concat(O, " <").concat(+ee + 1, ".0.0-0") : x ? (Lr("replaceCaret pr", x), ee === "0" ? he === "0" ? X = ">=".concat(ee, ".").concat(he, ".").concat(F, "-").concat(x, " <").concat(ee, ".").concat(he, ".").concat(+F + 1, "-0") : X = ">=".concat(ee, ".").concat(he, ".").concat(F, "-").concat(x, " <").concat(ee, ".").concat(+he + 1, ".0-0") : X = ">=".concat(ee, ".").concat(he, ".").concat(F, "-").concat(x, " <").concat(+ee + 1, ".0.0-0")) : (Lr("no pr"), ee === "0" ? he === "0" ? X = ">=".concat(ee, ".").concat(he, ".").concat(F).concat(O, " <").concat(ee, ".").concat(he, ".").concat(+F + 1, "-0") : X = ">=".concat(ee, ".").concat(he, ".").concat(F).concat(O, " <").concat(ee, ".").concat(+he + 1, ".0-0") : X = ">=".concat(ee, ".").concat(he, ".").concat(F, " <").concat(+ee + 1, ".0.0-0")), Lr("caret return", X), X; + }); + }, f = (ie, R) => (Lr("replaceXRanges", ie, R), ie.split(/\s+/).map((q) => T(q, R)).join(" ")), T = (ie, R) => { + ie = ie.trim(); + let q = R.loose ? ke[e.XRANGELOOSE] : ke[e.XRANGE]; + return ie.replace(q, (O, ve, ee, he, F, x) => { + Lr("xRange", ie, O, ve, ee, he, F, x); + let X = N(ee), $ = X || N(he), A = $ || N(F), y = A; + return ve === "=" && y && (ve = ""), x = R.includePrerelease ? "-0" : "", X ? ve === ">" || ve === "<" ? O = "<0.0.0-0" : O = "*" : ve && y ? ($ && (he = 0), F = 0, ve === ">" ? (ve = ">=", $ ? (ee = +ee + 1, he = 0, F = 0) : (he = +he + 1, F = 0)) : ve === "<=" && (ve = "<", $ ? ee = +ee + 1 : he = +he + 1), ve === "<" && (x = "-0"), O = "".concat(ve + ee, ".").concat(he, ".").concat(F).concat(x)) : $ ? O = ">=".concat(ee, ".0.0").concat(x, " <").concat(+ee + 1, ".0.0-0") : A && (O = ">=".concat(ee, ".").concat(he, ".0").concat(x, " <").concat(ee, ".").concat(+he + 1, ".0-0")), Lr("xRange return", O), O; + }); + }, K = (ie, R) => (Lr("replaceStars", ie, R), ie.trim().replace(ke[e.STAR], "")), b = (ie, R) => (Lr("replaceGTE0", ie, R), ie.trim().replace(ke[R.includePrerelease ? e.GTE0PRE : e.GTE0], "")), se = (ie) => (R, q, O, ve, ee, he, F, x, X, $, A, y, V) => (N(O) ? q = "" : N(ve) ? q = ">=".concat(O, ".0.0").concat(ie ? "-0" : "") : N(ee) ? q = ">=".concat(O, ".").concat(ve, ".0").concat(ie ? "-0" : "") : he ? q = ">=".concat(q) : q = ">=".concat(q).concat(ie ? "-0" : ""), N(X) ? x = "" : N($) ? x = "<".concat(+X + 1, ".0.0-0") : N(A) ? x = "<".concat(X, ".").concat(+$ + 1, ".0-0") : y ? x = "<=".concat(X, ".").concat($, ".").concat(A, "-").concat(y) : ie ? x = "<".concat(X, ".").concat($, ".").concat(+A + 1, "-0") : x = "<=".concat(x), "".concat(q, " ").concat(x).trim()), J = (ie, R, q) => { + for (let O = 0; O < ie.length; O++) + if (!ie[O].test(R)) + return false; + if (R.prerelease.length && !q.includePrerelease) { + for (let O = 0; O < ie.length; O++) + if (Lr(ie[O].semver), ie[O].semver !== pr.ANY && ie[O].semver.prerelease.length > 0) { + let ve = ie[O].semver; + if (ve.major === R.major && ve.minor === R.minor && ve.patch === R.patch) + return true; + } + return false; + } + return true; + }; + } }), x1 = Oa({ "node_modules/semver/classes/comparator.js"(M, re) { + Ea(); + var Ve = Symbol("SemVer ANY"), Ke = class { + static get ANY() { + return Ve; + } + constructor(a, C) { + if (C = oi(C), a instanceof Ke) { + if (a.loose === !!C.loose) + return a; + a = a.value; + } + ar("comparator", a, C), this.options = C, this.loose = !!C.loose, this.parse(a), this.semver === Ve ? this.value = "" : this.value = this.operator + this.semver.version, ar("comp", this); + } + parse(a) { + let C = this.options.loose ? kr[pr.COMPARATORLOOSE] : kr[pr.COMPARATOR], w = a.match(C); + if (!w) + throw new TypeError("Invalid comparator: ".concat(a)); + this.operator = w[1] !== void 0 ? w[1] : "", this.operator === "=" && (this.operator = ""), w[2] ? this.semver = new ke(w[2], this.options.loose) : this.semver = Ve; + } + toString() { + return this.value; + } + test(a) { + if (ar("Comparator.test", a, this.options.loose), this.semver === Ve || a === Ve) + return true; + if (typeof a == "string") + try { + a = new ke(a, this.options); + } catch { + return false; + } + return Lr(a, this.operator, this.semver, this.options); + } + intersects(a, C) { + if (!(a instanceof Ke)) + throw new TypeError("a Comparator is required"); + if ((!C || typeof C != "object") && (C = { loose: !!C, includePrerelease: false }), this.operator === "") + return this.value === "" ? true : new e(a.value, C).test(this.value); + if (a.operator === "") + return a.value === "" ? true : new e(this.value, C).test(a.semver); + let w = (this.operator === ">=" || this.operator === ">") && (a.operator === ">=" || a.operator === ">"), B = (this.operator === "<=" || this.operator === "<") && (a.operator === "<=" || a.operator === "<"), E = this.semver.version === a.semver.version, Q = (this.operator === ">=" || this.operator === "<=") && (a.operator === ">=" || a.operator === "<="), le = Lr(this.semver, "<", a.semver, C) && (this.operator === ">=" || this.operator === ">") && (a.operator === "<=" || a.operator === "<"), N = Lr(this.semver, ">", a.semver, C) && (this.operator === "<=" || this.operator === "<") && (a.operator === ">=" || a.operator === ">"); + return w || B || E && Q || le || N; + } + }; + re.exports = Ke; + var oi = S1(), { re: kr, t: pr } = wv(), Lr = j4(), ar = b1(), ke = Lf(), e = od(); + } }), E1 = Oa({ "node_modules/semver/functions/satisfies.js"(M, re) { + Ea(); + var Ve = od(), Ke = (oi, kr, pr) => { + try { + kr = new Ve(kr, pr); + } catch { + return false; + } + return kr.test(oi); + }; + re.exports = Ke; + } }), cU = Oa({ "node_modules/semver/ranges/to-comparators.js"(M, re) { + Ea(); + var Ve = od(), Ke = (oi, kr) => new Ve(oi, kr).set.map((pr) => pr.map((Lr) => Lr.value).join(" ").trim().split(" ")); + re.exports = Ke; + } }), uU = Oa({ "node_modules/semver/ranges/max-satisfying.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = od(), oi = (kr, pr, Lr) => { + let ar = null, ke = null, e = null; + try { + e = new Ke(pr, Lr); + } catch { + return null; + } + return kr.forEach((a) => { + e.test(a) && (!ar || ke.compare(a) === -1) && (ar = a, ke = new Ve(ar, Lr)); + }), ar; + }; + re.exports = oi; + } }), lU = Oa({ "node_modules/semver/ranges/min-satisfying.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = od(), oi = (kr, pr, Lr) => { + let ar = null, ke = null, e = null; + try { + e = new Ke(pr, Lr); + } catch { + return null; + } + return kr.forEach((a) => { + e.test(a) && (!ar || ke.compare(a) === 1) && (ar = a, ke = new Ve(ar, Lr)); + }), ar; + }; + re.exports = oi; + } }), fU = Oa({ "node_modules/semver/ranges/min-version.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = od(), oi = T1(), kr = (pr, Lr) => { + pr = new Ke(pr, Lr); + let ar = new Ve("0.0.0"); + if (pr.test(ar) || (ar = new Ve("0.0.0-0"), pr.test(ar))) + return ar; + ar = null; + for (let ke = 0; ke < pr.set.length; ++ke) { + let e = pr.set[ke], a = null; + e.forEach((C) => { + let w = new Ve(C.semver.version); + switch (C.operator) { + case ">": + w.prerelease.length === 0 ? w.patch++ : w.prerelease.push(0), w.raw = w.format(); + case "": + case ">=": + (!a || oi(w, a)) && (a = w); + break; + case "<": + case "<=": + break; + default: + throw new Error("Unexpected operation: ".concat(C.operator)); + } + }), a && (!ar || oi(ar, a)) && (ar = a); + } + return ar && pr.test(ar) ? ar : null; + }; + re.exports = kr; + } }), _U = Oa({ "node_modules/semver/ranges/valid.js"(M, re) { + Ea(); + var Ve = od(), Ke = (oi, kr) => { + try { + return new Ve(oi, kr).range || "*"; + } catch { + return null; + } + }; + re.exports = Ke; + } }), XT = Oa({ "node_modules/semver/ranges/outside.js"(M, re) { + Ea(); + var Ve = Lf(), Ke = x1(), { ANY: oi } = Ke, kr = od(), pr = E1(), Lr = T1(), ar = KT(), ke = HT(), e = GT(), a = (C, w, B, E) => { + C = new Ve(C, E), w = new kr(w, E); + let Q, le, N, p, m; + switch (B) { + case ">": + Q = Lr, le = ke, N = ar, p = ">", m = ">="; + break; + case "<": + Q = ar, le = e, N = Lr, p = "<", m = "<="; + break; + default: + throw new TypeError('Must provide a hilo val of "<" or ">"'); + } + if (pr(C, w, E)) + return false; + for (let G = 0; G < w.set.length; ++G) { + let oe = w.set[G], f = null, T = null; + if (oe.forEach((K) => { + K.semver === oi && (K = new Ke(">=0.0.0")), f = f || K, T = T || K, Q(K.semver, f.semver, E) ? f = K : N(K.semver, T.semver, E) && (T = K); + }), f.operator === p || f.operator === m || (!T.operator || T.operator === p) && le(C, T.semver)) + return false; + if (T.operator === m && N(C, T.semver)) + return false; + } + return true; + }; + re.exports = a; + } }), pU = Oa({ "node_modules/semver/ranges/gtr.js"(M, re) { + Ea(); + var Ve = XT(), Ke = (oi, kr, pr) => Ve(oi, kr, ">", pr); + re.exports = Ke; + } }), dU = Oa({ "node_modules/semver/ranges/ltr.js"(M, re) { + Ea(); + var Ve = XT(), Ke = (oi, kr, pr) => Ve(oi, kr, "<", pr); + re.exports = Ke; + } }), gU = Oa({ "node_modules/semver/ranges/intersects.js"(M, re) { + Ea(); + var Ve = od(), Ke = (oi, kr, pr) => (oi = new Ve(oi, pr), kr = new Ve(kr, pr), oi.intersects(kr)); + re.exports = Ke; + } }), mU = Oa({ "node_modules/semver/ranges/simplify.js"(M, re) { + Ea(); + var Ve = E1(), Ke = nd(); + re.exports = (oi, kr, pr) => { + let Lr = [], ar = null, ke = null, e = oi.sort((B, E) => Ke(B, E, pr)); + for (let B of e) + Ve(B, kr, pr) ? (ke = B, ar || (ar = B)) : (ke && Lr.push([ar, ke]), ke = null, ar = null); + ar && Lr.push([ar, null]); + let a = []; + for (let [B, E] of Lr) + B === E ? a.push(B) : !E && B === e[0] ? a.push("*") : E ? B === e[0] ? a.push("<=".concat(E)) : a.push("".concat(B, " - ").concat(E)) : a.push(">=".concat(B)); + let C = a.join(" || "), w = typeof kr.raw == "string" ? kr.raw : String(kr); + return C.length < w.length ? C : kr; + }; + } }), vU = Oa({ "node_modules/semver/ranges/subset.js"(M, re) { + Ea(); + var Ve = od(), Ke = x1(), { ANY: oi } = Ke, kr = E1(), pr = nd(), Lr = function(a, C) { + let w = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (a === C) + return true; + a = new Ve(a, w), C = new Ve(C, w); + let B = false; + e: + for (let E of a.set) { + for (let Q of C.set) { + let le = ar(E, Q, w); + if (B = B || le !== null, le) + continue e; + } + if (B) + return false; + } + return true; + }, ar = (a, C, w) => { + if (a === C) + return true; + if (a.length === 1 && a[0].semver === oi) { + if (C.length === 1 && C[0].semver === oi) + return true; + w.includePrerelease ? a = [new Ke(">=0.0.0-0")] : a = [new Ke(">=0.0.0")]; + } + if (C.length === 1 && C[0].semver === oi) { + if (w.includePrerelease) + return true; + C = [new Ke(">=0.0.0")]; + } + let B = /* @__PURE__ */ new Set(), E, Q; + for (let T of a) + T.operator === ">" || T.operator === ">=" ? E = ke(E, T, w) : T.operator === "<" || T.operator === "<=" ? Q = e(Q, T, w) : B.add(T.semver); + if (B.size > 1) + return null; + let le; + if (E && Q) { + if (le = pr(E.semver, Q.semver, w), le > 0) + return null; + if (le === 0 && (E.operator !== ">=" || Q.operator !== "<=")) + return null; + } + for (let T of B) { + if (E && !kr(T, String(E), w) || Q && !kr(T, String(Q), w)) + return null; + for (let K of C) + if (!kr(T, String(K), w)) + return false; + return true; + } + let N, p, m, G, oe = Q && !w.includePrerelease && Q.semver.prerelease.length ? Q.semver : false, f = E && !w.includePrerelease && E.semver.prerelease.length ? E.semver : false; + oe && oe.prerelease.length === 1 && Q.operator === "<" && oe.prerelease[0] === 0 && (oe = false); + for (let T of C) { + if (G = G || T.operator === ">" || T.operator === ">=", m = m || T.operator === "<" || T.operator === "<=", E) { + if (f && T.semver.prerelease && T.semver.prerelease.length && T.semver.major === f.major && T.semver.minor === f.minor && T.semver.patch === f.patch && (f = false), T.operator === ">" || T.operator === ">=") { + if (N = ke(E, T, w), N === T && N !== E) + return false; + } else if (E.operator === ">=" && !kr(E.semver, String(T), w)) + return false; + } + if (Q) { + if (oe && T.semver.prerelease && T.semver.prerelease.length && T.semver.major === oe.major && T.semver.minor === oe.minor && T.semver.patch === oe.patch && (oe = false), T.operator === "<" || T.operator === "<=") { + if (p = e(Q, T, w), p === T && p !== Q) + return false; + } else if (Q.operator === "<=" && !kr(Q.semver, String(T), w)) + return false; + } + if (!T.operator && (Q || E) && le !== 0) + return false; + } + return !(E && m && !Q && le !== 0 || Q && G && !E && le !== 0 || f || oe); + }, ke = (a, C, w) => { + if (!a) + return C; + let B = pr(a.semver, C.semver, w); + return B > 0 ? a : B < 0 || C.operator === ">" && a.operator === ">=" ? C : a; + }, e = (a, C, w) => { + if (!a) + return C; + let B = pr(a.semver, C.semver, w); + return B < 0 ? a : B > 0 || C.operator === "<" && a.operator === "<=" ? C : a; + }; + re.exports = Lr; + } }), QT = Oa({ "node_modules/semver/index.js"(M, re) { + Ea(); + var Ve = wv(); + re.exports = { re: Ve.re, src: Ve.src, tokens: Ve.t, SEMVER_SPEC_VERSION: D1().SEMVER_SPEC_VERSION, SemVer: Lf(), compareIdentifiers: BT().compareIdentifiers, rcompareIdentifiers: BT().rcompareIdentifiers, parse: Ov(), valid: Kj(), clean: Gj(), inc: Hj(), diff: Xj(), major: Qj(), minor: Yj(), patch: $j(), prerelease: Zj(), compare: nd(), rcompare: eU(), compareLoose: rU(), compareBuild: VT(), sort: iU(), rsort: tU(), gt: T1(), lt: KT(), eq: qT(), neq: J4(), gte: GT(), lte: HT(), cmp: j4(), coerce: aU(), Comparator: x1(), Range: od(), satisfies: E1(), toComparators: cU(), maxSatisfying: uU(), minSatisfying: lU(), minVersion: fU(), validRange: _U(), outside: XT(), gtr: pU(), ltr: dU(), intersects: gU(), simplifyRange: mU(), subset: vU() }; + } }), U4 = {}; + h1(U4, { basename: () => K4, default: () => H4, delimiter: () => jT, dirname: () => V4, extname: () => G4, isAbsolute: () => $T, join: () => W4, normalize: () => YT, relative: () => q4, resolve: () => y1, sep: () => JT }); + function z4(M, re) { + for (var Ve = 0, Ke = M.length - 1; Ke >= 0; Ke--) { + var oi = M[Ke]; + oi === "." ? M.splice(Ke, 1) : oi === ".." ? (M.splice(Ke, 1), Ve++) : Ve && (M.splice(Ke, 1), Ve--); + } + if (re) + for (; Ve--; Ve) + M.unshift(".."); + return M; + } + function y1() { + for (var M = "", re = false, Ve = arguments.length - 1; Ve >= -1 && !re; Ve--) { + var Ke = Ve >= 0 ? arguments[Ve] : "/"; + if (typeof Ke != "string") + throw new TypeError("Arguments to path.resolve must be strings"); + if (!Ke) + continue; + M = Ke + "/" + M, re = Ke.charAt(0) === "/"; + } + return M = z4(ZT(M.split("/"), function(oi) { + return !!oi; + }), !re).join("/"), (re ? "/" : "") + M || "."; + } + function YT(M) { + var re = $T(M), Ve = X4(M, -1) === "/"; + return M = z4(ZT(M.split("/"), function(Ke) { + return !!Ke; + }), !re).join("/"), !M && !re && (M = "."), M && Ve && (M += "/"), (re ? "/" : "") + M; + } + function $T(M) { + return M.charAt(0) === "/"; + } + function W4() { + var M = Array.prototype.slice.call(arguments, 0); + return YT(ZT(M, function(re, Ve) { + if (typeof re != "string") + throw new TypeError("Arguments to path.join must be strings"); + return re; + }).join("/")); + } + function q4(M, re) { + M = y1(M).substr(1), re = y1(re).substr(1); + function Ve(ke) { + for (var e = 0; e < ke.length && ke[e] === ""; e++) + ; + for (var a = ke.length - 1; a >= 0 && ke[a] === ""; a--) + ; + return e > a ? [] : ke.slice(e, a - e + 1); + } + for (var Ke = Ve(M.split("/")), oi = Ve(re.split("/")), kr = Math.min(Ke.length, oi.length), pr = kr, Lr = 0; Lr < kr; Lr++) + if (Ke[Lr] !== oi[Lr]) { + pr = Lr; + break; + } + for (var ar = [], Lr = pr; Lr < Ke.length; Lr++) + ar.push(".."); + return ar = ar.concat(oi.slice(pr)), ar.join("/"); + } + function V4(M) { + var re = C1(M), Ve = re[0], Ke = re[1]; + return !Ve && !Ke ? "." : (Ke && (Ke = Ke.substr(0, Ke.length - 1)), Ve + Ke); + } + function K4(M, re) { + var Ve = C1(M)[2]; + return re && Ve.substr(-1 * re.length) === re && (Ve = Ve.substr(0, Ve.length - re.length)), Ve; + } + function G4(M) { + return C1(M)[3]; + } + function ZT(M, re) { + if (M.filter) + return M.filter(re); + for (var Ve = [], Ke = 0; Ke < M.length; Ke++) + re(M[Ke], Ke, M) && Ve.push(M[Ke]); + return Ve; + } + var h4, C1, JT, jT, H4, X4, yU = Qy({ "node-modules-polyfills:path"() { + Ea(), h4 = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/, C1 = function(M) { + return h4.exec(M).slice(1); + }, JT = "/", jT = ":", H4 = { extname: G4, basename: K4, dirname: V4, sep: JT, delimiter: jT, relative: q4, join: W4, isAbsolute: $T, normalize: YT, resolve: y1 }, X4 = "ab".substr(-1) === "b" ? function(M, re, Ve) { + return M.substr(re, Ve); + } : function(M, re, Ve) { + return re < 0 && (re = M.length + re), M.substr(re, Ve); + }; + } }), Fv = Oa({ "node-modules-polyfills-commonjs:path"(M, re) { + Ea(); + var Ve = (yU(), mp(U4)); + if (Ve && Ve.default) { + re.exports = Ve.default; + for (let Ke in Ve) + re.exports[Ke] = Ve[Ke]; + } else + Ve && (re.exports = Ve); + } }), Q4 = {}; + h1(Q4, { default: () => Y4 }); + var Y4, hU = Qy({ "node-modules-polyfills:fs"() { + Ea(), Y4 = {}; + } }), ex = Oa({ "node-modules-polyfills-commonjs:fs"(M, re) { + Ea(); + var Ve = (hU(), mp(Q4)); + if (Ve && Ve.default) { + re.exports = Ve.default; + for (let Ke in Ve) + re.exports[Ke] = Ve[Ke]; + } else + Ve && (re.exports = Ve); + } }), _u = Oa({ "node_modules/typescript/lib/typescript.js"(M, re) { + "use strict"; + Ea(); + var Ve = M && M.__spreadArray || function(e, a, C) { + if (C || arguments.length === 2) + for (var w = 0, B = a.length, E; w < B; w++) + (E || !(w in a)) && (E || (E = Array.prototype.slice.call(a, 0, w)), E[w] = a[w]); + return e.concat(E || Array.prototype.slice.call(a)); + }, Ke = M && M.__assign || function() { + return Ke = Object.assign || function(e) { + for (var a, C = 1, w = arguments.length; C < w; C++) { + a = arguments[C]; + for (var B in a) + Object.prototype.hasOwnProperty.call(a, B) && (e[B] = a[B]); + } + return e; + }, Ke.apply(this, arguments); + }, oi = M && M.__makeTemplateObject || function(e, a) { + return Object.defineProperty ? Object.defineProperty(e, "raw", { value: a }) : e.raw = a, e; + }, kr = M && M.__generator || function(e, a) { + var C = { label: 0, sent: function() { + if (E[0] & 1) + throw E[1]; + return E[1]; + }, trys: [], ops: [] }, w, B, E, Q; + return Q = { next: le(0), throw: le(1), return: le(2) }, typeof Symbol == "function" && (Q[Symbol.iterator] = function() { + return this; + }), Q; + function le(p) { + return function(m) { + return N([p, m]); + }; + } + function N(p) { + if (w) + throw new TypeError("Generator is already executing."); + for (; C; ) + try { + if (w = 1, B && (E = p[0] & 2 ? B.return : p[0] ? B.throw || ((E = B.return) && E.call(B), 0) : B.next) && !(E = E.call(B, p[1])).done) + return E; + switch (B = 0, E && (p = [p[0] & 2, E.value]), p[0]) { + case 0: + case 1: + E = p; + break; + case 4: + return C.label++, { value: p[1], done: false }; + case 5: + C.label++, B = p[1], p = [0]; + continue; + case 7: + p = C.ops.pop(), C.trys.pop(); + continue; + default: + if (E = C.trys, !(E = E.length > 0 && E[E.length - 1]) && (p[0] === 6 || p[0] === 2)) { + C = 0; + continue; + } + if (p[0] === 3 && (!E || p[1] > E[0] && p[1] < E[3])) { + C.label = p[1]; + break; + } + if (p[0] === 6 && C.label < E[1]) { + C.label = E[1], E = p; + break; + } + if (E && C.label < E[2]) { + C.label = E[2], C.ops.push(p); + break; + } + E[2] && C.ops.pop(), C.trys.pop(); + continue; + } + p = a.call(e, C); + } catch (m) { + p = [6, m], B = 0; + } finally { + w = E = 0; + } + if (p[0] & 5) + throw p[1]; + return { value: p[0] ? p[1] : void 0, done: true }; + } + }, pr = M && M.__rest || function(e, a) { + var C = {}; + for (var w in e) + Object.prototype.hasOwnProperty.call(e, w) && a.indexOf(w) < 0 && (C[w] = e[w]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var B = 0, w = Object.getOwnPropertySymbols(e); B < w.length; B++) + a.indexOf(w[B]) < 0 && Object.prototype.propertyIsEnumerable.call(e, w[B]) && (C[w[B]] = e[w[B]]); + return C; + }, Lr = M && M.__extends || function() { + var e = function(a, C) { + return e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(w, B) { + w.__proto__ = B; + } || function(w, B) { + for (var E in B) + Object.prototype.hasOwnProperty.call(B, E) && (w[E] = B[E]); + }, e(a, C); + }; + return function(a, C) { + if (typeof C != "function" && C !== null) + throw new TypeError("Class extends value " + String(C) + " is not a constructor or null"); + e(a, C); + function w() { + this.constructor = a; + } + a.prototype = C === null ? Object.create(C) : (w.prototype = C.prototype, new w()); + }; + }(), ke; + (function(e) { + function a() { + var K = {}; + return K.prev = K, { head: K, tail: K, size: 0 }; + } + function C(K, b) { + return { key: K, value: b, next: void 0, prev: void 0 }; + } + function w(K, b) { + return K === b || K !== K && b !== b; + } + function B(K) { + var b = K.prev; + if (!b || b === K) + throw new Error("Illegal state"); + return b; + } + function E(K) { + for (; K; ) { + var b = !K.prev; + if (K = K.next, !b) + return K; + } + } + function Q(K, b) { + for (var se = K.tail; se !== K.head; se = B(se)) + if (w(se.key, b)) + return se; + } + function le(K, b, se) { + var J = Q(K, b); + if (J) { + J.value = se; + return; + } + var ie = C(b, se); + return ie.prev = K.tail, K.tail.next = ie, K.tail = ie, K.size++, ie; + } + function N(K, b) { + for (var se = K.tail; se !== K.head; se = B(se)) { + if (se.prev === void 0) + throw new Error("Illegal state"); + if (w(se.key, b)) { + if (se.next) + se.next.prev = se.prev; + else { + if (K.tail !== se) + throw new Error("Illegal state"); + K.tail = se.prev; + } + return se.prev.next = se.next, se.next = se.prev, se.prev = void 0, K.size--, se; + } + } + } + function p(K) { + for (var b = K.tail; b !== K.head; ) { + var se = B(b); + b.next = K.head, b.prev = void 0, b = se; + } + K.head.next = void 0, K.tail = K.head, K.size = 0; + } + function m(K, b) { + for (var se = K.head; se; ) + se = E(se), se && b(se.value, se.key); + } + function G(K, b) { + if (K) + for (var se = K.next(); !se.done; se = K.next()) + b(se.value); + } + function oe(K, b) { + return { current: K.head, selector: b }; + } + function f(K) { + return K.current = E(K.current), K.current ? { value: K.selector(K.current.key, K.current.value), done: false } : { value: void 0, done: true }; + } + var T; + (function(K) { + function b(J) { + var ie = function() { + function R(q, O) { + this._data = oe(q, O); + } + return R.prototype.next = function() { + return f(this._data); + }, R; + }(); + return function() { + function R(q) { + var O = this; + this._mapData = a(), G(J(q), function(ve) { + var ee = ve[0], he = ve[1]; + return O.set(ee, he); + }); + } + return Object.defineProperty(R.prototype, "size", { get: function() { + return this._mapData.size; + }, enumerable: false, configurable: true }), R.prototype.get = function(q) { + var O; + return (O = Q(this._mapData, q)) === null || O === void 0 ? void 0 : O.value; + }, R.prototype.set = function(q, O) { + return le(this._mapData, q, O), this; + }, R.prototype.has = function(q) { + return !!Q(this._mapData, q); + }, R.prototype.delete = function(q) { + return !!N(this._mapData, q); + }, R.prototype.clear = function() { + p(this._mapData); + }, R.prototype.keys = function() { + return new ie(this._mapData, function(q, O) { + return q; + }); + }, R.prototype.values = function() { + return new ie(this._mapData, function(q, O) { + return O; + }); + }, R.prototype.entries = function() { + return new ie(this._mapData, function(q, O) { + return [q, O]; + }); + }, R.prototype.forEach = function(q) { + m(this._mapData, q); + }, R; + }(); + } + K.createMapShim = b; + function se(J) { + var ie = function() { + function R(q, O) { + this._data = oe(q, O); + } + return R.prototype.next = function() { + return f(this._data); + }, R; + }(); + return function() { + function R(q) { + var O = this; + this._mapData = a(), G(J(q), function(ve) { + return O.add(ve); + }); + } + return Object.defineProperty(R.prototype, "size", { get: function() { + return this._mapData.size; + }, enumerable: false, configurable: true }), R.prototype.add = function(q) { + return le(this._mapData, q, q), this; + }, R.prototype.has = function(q) { + return !!Q(this._mapData, q); + }, R.prototype.delete = function(q) { + return !!N(this._mapData, q); + }, R.prototype.clear = function() { + p(this._mapData); + }, R.prototype.keys = function() { + return new ie(this._mapData, function(q, O) { + return q; + }); + }, R.prototype.values = function() { + return new ie(this._mapData, function(q, O) { + return O; + }); + }, R.prototype.entries = function() { + return new ie(this._mapData, function(q, O) { + return [q, O]; + }); + }, R.prototype.forEach = function(q) { + m(this._mapData, q); + }, R; + }(); + } + K.createSetShim = se; + })(T = e.ShimCollections || (e.ShimCollections = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + e.versionMajorMinor = "4.7", e.version = "4.7.2"; + var a; + (function(B) { + B[B.LessThan = -1] = "LessThan", B[B.EqualTo = 0] = "EqualTo", B[B.GreaterThan = 1] = "GreaterThan"; + })(a = e.Comparison || (e.Comparison = {})); + var C; + (function(B) { + var E = typeof globalThis < "u" || typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : void 0; + function Q() { + var N = E == null ? void 0 : E.Map; + return typeof N < "u" && "entries" in N.prototype && new N([[0, 0]]).size === 1 ? N : void 0; + } + B.tryGetNativeMap = Q; + function le() { + var N = E == null ? void 0 : E.Set; + return typeof N < "u" && "entries" in N.prototype && new N([0]).size === 1 ? N : void 0; + } + B.tryGetNativeSet = le; + })(C || (C = {})), e.Map = w("Map", "tryGetNativeMap", "createMapShim"), e.Set = w("Set", "tryGetNativeSet", "createSetShim"); + function w(B, E, Q) { + var le, N = (le = C[E]()) !== null && le !== void 0 ? le : e.ShimCollections === null || e.ShimCollections === void 0 ? void 0 : e.ShimCollections[Q](e.getIterator); + if (N) + return N; + throw new Error("TypeScript requires an environment that provides a compatible native ".concat(B, " implementation.")); + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(S) { + if (S) { + if (Oe(S)) + return Br(S); + if (S instanceof e.Map) + return S.entries(); + if (S instanceof e.Set) + return S.values(); + throw new Error("Iteration not supported."); + } + } + e.getIterator = a, e.emptyArray = [], e.emptyMap = new e.Map(), e.emptySet = new e.Set(); + function C(S) { + return S ? S.length : 0; + } + e.length = C; + function w(S, Ce) { + if (S) + for (var qe = 0; qe < S.length; qe++) { + var br = Ce(S[qe], qe); + if (br) + return br; + } + } + e.forEach = w; + function B(S, Ce) { + if (S) + for (var qe = S.length - 1; qe >= 0; qe--) { + var br = Ce(S[qe], qe); + if (br) + return br; + } + } + e.forEachRight = B; + function E(S, Ce) { + if (S !== void 0) + for (var qe = 0; qe < S.length; qe++) { + var br = Ce(S[qe], qe); + if (br !== void 0) + return br; + } + } + e.firstDefined = E; + function Q(S, Ce) { + for (; ; ) { + var qe = S.next(); + if (qe.done) + return; + var br = Ce(qe.value); + if (br !== void 0) + return br; + } + } + e.firstDefinedIterator = Q; + function le(S, Ce, qe) { + var br = qe; + if (S) + for (var Zr = S.next(), Si = 0; !Zr.done; Zr = S.next(), Si++) + br = Ce(br, Zr.value, Si); + return br; + } + e.reduceLeftIterator = le; + function N(S, Ce, qe) { + var br = []; + e.Debug.assertEqual(S.length, Ce.length); + for (var Zr = 0; Zr < S.length; Zr++) + br.push(qe(S[Zr], Ce[Zr], Zr)); + return br; + } + e.zipWith = N; + function p(S, Ce) { + e.Debug.assertEqual(S.length, Ce.length); + var qe = 0; + return { next: function() { + return qe === S.length ? { value: void 0, done: true } : (qe++, { value: [S[qe - 1], Ce[qe - 1]], done: false }); + } }; + } + e.zipToIterator = p; + function m(S, Ce) { + e.Debug.assert(S.length === Ce.length); + for (var qe = new e.Map(), br = 0; br < S.length; ++br) + qe.set(S[br], Ce[br]); + return qe; + } + e.zipToMap = m; + function G(S, Ce) { + if (S.length <= 1) + return S; + for (var qe = [], br = 0, Zr = S.length; br < Zr; br++) + br && qe.push(Ce), qe.push(S[br]); + return qe; + } + e.intersperse = G; + function oe(S, Ce) { + if (S) { + for (var qe = 0; qe < S.length; qe++) + if (!Ce(S[qe], qe)) + return false; + } + return true; + } + e.every = oe; + function f(S, Ce) { + for (var qe = 0; qe < S.length; qe++) { + var br = S[qe]; + if (Ce(br, qe)) + return br; + } + } + e.find = f; + function T(S, Ce) { + for (var qe = S.length - 1; qe >= 0; qe--) { + var br = S[qe]; + if (Ce(br, qe)) + return br; + } + } + e.findLast = T; + function K(S, Ce, qe) { + for (var br = qe || 0; br < S.length; br++) + if (Ce(S[br], br)) + return br; + return -1; + } + e.findIndex = K; + function b(S, Ce, qe) { + for (var br = qe === void 0 ? S.length - 1 : qe; br >= 0; br--) + if (Ce(S[br], br)) + return br; + return -1; + } + e.findLastIndex = b; + function se(S, Ce) { + for (var qe = 0; qe < S.length; qe++) { + var br = Ce(S[qe], qe); + if (br) + return br; + } + return e.Debug.fail(); + } + e.findMap = se; + function J(S, Ce, qe) { + if (qe === void 0 && (qe = ut), S) + for (var br = 0, Zr = S; br < Zr.length; br++) { + var Si = Zr[br]; + if (qe(Si, Ce)) + return true; + } + return false; + } + e.contains = J; + function ie(S, Ce, qe) { + return qe === void 0 && (qe = ut), S.length === Ce.length && S.every(function(br, Zr) { + return qe(br, Ce[Zr]); + }); + } + e.arraysEqual = ie; + function R(S, Ce, qe) { + for (var br = qe || 0; br < S.length; br++) + if (J(Ce, S.charCodeAt(br))) + return br; + return -1; + } + e.indexOfAnyCharCode = R; + function q(S, Ce) { + var qe = 0; + if (S) + for (var br = 0; br < S.length; br++) { + var Zr = S[br]; + Ce(Zr, br) && qe++; + } + return qe; + } + e.countWhere = q; + function O(S, Ce) { + if (S) { + for (var qe = S.length, br = 0; br < qe && Ce(S[br]); ) + br++; + if (br < qe) { + var Zr = S.slice(0, br); + for (br++; br < qe; ) { + var Si = S[br]; + Ce(Si) && Zr.push(Si), br++; + } + return Zr; + } + } + return S; + } + e.filter = O; + function ve(S, Ce) { + for (var qe = 0, br = 0; br < S.length; br++) + Ce(S[br], br, S) && (S[qe] = S[br], qe++); + S.length = qe; + } + e.filterMutate = ve; + function ee(S) { + S.length = 0; + } + e.clear = ee; + function he(S, Ce) { + var qe; + if (S) { + qe = []; + for (var br = 0; br < S.length; br++) + qe.push(Ce(S[br], br)); + } + return qe; + } + e.map = he; + function F(S, Ce) { + return { next: function() { + var qe = S.next(); + return qe.done ? qe : { value: Ce(qe.value), done: false }; + } }; + } + e.mapIterator = F; + function x(S, Ce) { + if (S) + for (var qe = 0; qe < S.length; qe++) { + var br = S[qe], Zr = Ce(br, qe); + if (br !== Zr) { + var Si = S.slice(0, qe); + for (Si.push(Zr), qe++; qe < S.length; qe++) + Si.push(Ce(S[qe], qe)); + return Si; + } + } + return S; + } + e.sameMap = x; + function X(S) { + for (var Ce = [], qe = 0, br = S; qe < br.length; qe++) { + var Zr = br[qe]; + Zr && (Oe(Zr) ? Ae(Ce, Zr) : Ce.push(Zr)); + } + return Ce; + } + e.flatten = X; + function $(S, Ce) { + var qe; + if (S) + for (var br = 0; br < S.length; br++) { + var Zr = Ce(S[br], br); + Zr && (Oe(Zr) ? qe = Ae(qe, Zr) : qe = we(qe, Zr)); + } + return qe || e.emptyArray; + } + e.flatMap = $; + function A(S, Ce) { + var qe = []; + if (S) + for (var br = 0; br < S.length; br++) { + var Zr = Ce(S[br], br); + Zr && (Oe(Zr) ? Ae(qe, Zr) : qe.push(Zr)); + } + return qe; + } + e.flatMapToMutable = A; + function y(S, Ce) { + var qe = S.next(); + if (qe.done) + return e.emptyIterator; + var br = Zr(qe.value); + return { next: function() { + for (; ; ) { + var Si = br.next(); + if (!Si.done) + return Si; + var Pi = S.next(); + if (Pi.done) + return Pi; + br = Zr(Pi.value); + } + } }; + function Zr(Si) { + var Pi = Ce(Si); + return Pi === void 0 ? e.emptyIterator : Oe(Pi) ? Br(Pi) : Pi; + } + } + e.flatMapIterator = y; + function V(S, Ce) { + var qe; + if (S) + for (var br = 0; br < S.length; br++) { + var Zr = S[br], Si = Ce(Zr, br); + (qe || Zr !== Si || Oe(Si)) && (qe || (qe = S.slice(0, br)), Oe(Si) ? Ae(qe, Si) : qe.push(Si)); + } + return qe || S; + } + e.sameFlatMap = V; + function L(S, Ce) { + for (var qe = [], br = 0; br < S.length; br++) { + var Zr = Ce(S[br], br); + if (Zr === void 0) + return; + qe.push(Zr); + } + return qe; + } + e.mapAllOrFail = L; + function P(S, Ce) { + var qe = []; + if (S) + for (var br = 0; br < S.length; br++) { + var Zr = Ce(S[br], br); + Zr !== void 0 && qe.push(Zr); + } + return qe; + } + e.mapDefined = P; + function k(S, Ce) { + return { next: function() { + for (; ; ) { + var qe = S.next(); + if (qe.done) + return qe; + var br = Ce(qe.value); + if (br !== void 0) + return { value: br, done: false }; + } + } }; + } + e.mapDefinedIterator = k; + function Y(S, Ce) { + if (!!S) { + var qe = new e.Map(); + return S.forEach(function(br, Zr) { + var Si = Ce(Zr, br); + if (Si !== void 0) { + var Pi = Si[0], Qi = Si[1]; + Pi !== void 0 && Qi !== void 0 && qe.set(Pi, Qi); + } + }), qe; + } + } + e.mapDefinedEntries = Y; + function U(S, Ce) { + if (S) { + var qe = new e.Set(); + return S.forEach(function(br) { + var Zr = Ce(br); + Zr !== void 0 && qe.add(Zr); + }), qe; + } + } + e.mapDefinedValues = U; + function j(S, Ce, qe) { + if (S.has(Ce)) + return S.get(Ce); + var br = qe(); + return S.set(Ce, br), br; + } + e.getOrUpdate = j; + function H(S, Ce) { + return S.has(Ce) ? false : (S.add(Ce), true); + } + e.tryAddToSet = H, e.emptyIterator = { next: function() { + return { value: void 0, done: true }; + } }; + function I(S) { + var Ce = false; + return { next: function() { + var qe = Ce; + return Ce = true, qe ? { value: void 0, done: true } : { value: S, done: false }; + } }; + } + e.singleIterator = I; + function l(S, Ce, qe) { + var br; + if (S) { + br = []; + for (var Zr = S.length, Si = void 0, Pi = void 0, Qi = 0, Ct = 0; Qi < Zr; ) { + for (; Ct < Zr; ) { + var sa = S[Ct]; + if (Pi = Ce(sa, Ct), Ct === 0) + Si = Pi; + else if (Pi !== Si) + break; + Ct++; + } + if (Qi < Ct) { + var en = qe(S.slice(Qi, Ct), Si, Qi, Ct); + en && br.push(en), Qi = Ct; + } + Si = Pi, Ct++; + } + } + return br; + } + e.spanMap = l; + function d(S, Ce) { + if (!!S) { + var qe = new e.Map(); + return S.forEach(function(br, Zr) { + var Si = Ce(Zr, br), Pi = Si[0], Qi = Si[1]; + qe.set(Pi, Qi); + }), qe; + } + } + e.mapEntries = d; + function D(S, Ce) { + if (S) + if (Ce) + for (var qe = 0, br = S; qe < br.length; qe++) { + var Zr = br[qe]; + if (Ce(Zr)) + return true; + } + else + return S.length > 0; + return false; + } + e.some = D; + function fe(S, Ce, qe) { + for (var br, Zr = 0; Zr < S.length; Zr++) + Ce(S[Zr]) ? br = br === void 0 ? Zr : br : br !== void 0 && (qe(br, Zr), br = void 0); + br !== void 0 && qe(br, S.length); + } + e.getRangesWhere = fe; + function g(S, Ce) { + return D(Ce) ? D(S) ? Ve(Ve([], S, true), Ce, true) : Ce : S; + } + e.concatenate = g; + function ne(S, Ce) { + return Ce; + } + function ue(S) { + return S.map(ne); + } + e.indicesOf = ue; + function We(S, Ce, qe) { + var br = ue(S); + Cr(S, br, qe); + for (var Zr = S[br[0]], Si = [br[0]], Pi = 1; Pi < br.length; Pi++) { + var Qi = br[Pi], Ct = S[Qi]; + Ce(Zr, Ct) || (Si.push(Qi), Zr = Ct); + } + return Si.sort(), Si.map(function(sa) { + return S[sa]; + }); + } + function Fe(S, Ce) { + for (var qe = [], br = 0, Zr = S; br < Zr.length; br++) { + var Si = Zr[br]; + er(qe, Si, Ce); + } + return qe; + } + function Z(S, Ce, qe) { + return S.length === 0 ? [] : S.length === 1 ? S.slice() : qe ? We(S, Ce, qe) : Fe(S, Ce); + } + e.deduplicate = Z; + function Be(S, Ce) { + if (S.length === 0) + return e.emptyArray; + for (var qe = S[0], br = [qe], Zr = 1; Zr < S.length; Zr++) { + var Si = S[Zr]; + switch (Ce(Si, qe)) { + case true: + case 0: + continue; + case -1: + return e.Debug.fail("Array is unsorted."); + } + br.push(qe = Si); + } + return br; + } + function ge() { + return []; + } + e.createSortedArray = ge; + function Re(S, Ce, qe, br) { + if (S.length === 0) { + S.push(Ce); + return; + } + var Zr = ii(S, Ce, vi, qe); + Zr < 0 ? S.splice(~Zr, 0, Ce) : br && S.splice(Zr, 0, Ce); + } + e.insertSorted = Re; + function ze(S, Ce, qe) { + return Be(Ye(S, Ce), qe || Ce || wt); + } + e.sortAndDeduplicate = ze; + function Ee(S, Ce) { + if (S.length < 2) + return true; + for (var qe = S[0], br = 0, Zr = S.slice(1); br < Zr.length; br++) { + var Si = Zr[br]; + if (Ce(qe, Si) === 1) + return false; + qe = Si; + } + return true; + } + e.arrayIsSorted = Ee; + function He(S, Ce, qe) { + if (qe === void 0 && (qe = ut), !S || !Ce) + return S === Ce; + if (S.length !== Ce.length) + return false; + for (var br = 0; br < S.length; br++) + if (!qe(S[br], Ce[br], br)) + return false; + return true; + } + e.arrayIsEqualTo = He; + function rr(S) { + var Ce; + if (S) + for (var qe = 0; qe < S.length; qe++) { + var br = S[qe]; + (Ce || !br) && (Ce || (Ce = S.slice(0, qe)), br && Ce.push(br)); + } + return Ce || S; + } + e.compact = rr; + function Ie(S, Ce, qe) { + if (!Ce || !S || Ce.length === 0 || S.length === 0) + return Ce; + var br = []; + e: + for (var Zr = 0, Si = 0; Si < Ce.length; Si++) { + Si > 0 && e.Debug.assertGreaterThanOrEqual(qe(Ce[Si], Ce[Si - 1]), 0); + r: + for (var Pi = Zr; Zr < S.length; Zr++) + switch (Zr > Pi && e.Debug.assertGreaterThanOrEqual(qe(S[Zr], S[Zr - 1]), 0), qe(Ce[Si], S[Zr])) { + case -1: + br.push(Ce[Si]); + continue e; + case 0: + continue e; + case 1: + continue r; + } + } + return br; + } + e.relativeComplement = Ie; + function _e(S, Ce) { + for (var qe = 0, br = 0, Zr = S; br < Zr.length; br++) { + var Si = Zr[br]; + qe += Si[Ce]; + } + return qe; + } + e.sum = _e; + function we(S, Ce) { + return Ce === void 0 ? S : S === void 0 ? [Ce] : (S.push(Ce), S); + } + e.append = we; + function de(S, Ce) { + return S === void 0 ? Ce : Ce === void 0 ? S : Oe(S) ? Oe(Ce) ? g(S, Ce) : we(S, Ce) : Oe(Ce) ? we(Ce, S) : [S, Ce]; + } + e.combine = de; + function ye(S, Ce) { + return Ce < 0 ? S.length + Ce : Ce; + } + function Ae(S, Ce, qe, br) { + if (Ce === void 0 || Ce.length === 0) + return S; + if (S === void 0) + return Ce.slice(qe, br); + qe = qe === void 0 ? 0 : ye(Ce, qe), br = br === void 0 ? Ce.length : ye(Ce, br); + for (var Zr = qe; Zr < br && Zr < Ce.length; Zr++) + Ce[Zr] !== void 0 && S.push(Ce[Zr]); + return S; + } + e.addRange = Ae; + function er(S, Ce, qe) { + return J(S, Ce, qe) ? false : (S.push(Ce), true); + } + e.pushIfUnique = er; + function ir(S, Ce, qe) { + return S ? (er(S, Ce, qe), S) : [Ce]; + } + e.appendIfUnique = ir; + function Cr(S, Ce, qe) { + Ce.sort(function(br, Zr) { + return qe(S[br], S[Zr]) || Ki(br, Zr); + }); + } + function Ye(S, Ce) { + return S.length === 0 ? S : S.slice().sort(Ce); + } + e.sort = Ye; + function Br(S) { + var Ce = 0; + return { next: function() { + return Ce === S.length ? { value: void 0, done: true } : (Ce++, { value: S[Ce - 1], done: false }); + } }; + } + e.arrayIterator = Br; + function Er(S) { + var Ce = S.length; + return { next: function() { + return Ce === 0 ? { value: void 0, done: true } : (Ce--, { value: S[Ce], done: false }); + } }; + } + e.arrayReverseIterator = Er; + function Ne(S, Ce) { + var qe = ue(S); + return Cr(S, qe, Ce), qe.map(function(br) { + return S[br]; + }); + } + e.stableSort = Ne; + function n(S, Ce, qe, br) { + for (; qe < br; ) { + if (S[qe] !== Ce[qe]) + return false; + qe++; + } + return true; + } + e.rangeEquals = n; + function lr(S, Ce) { + if (S && (Ce = ye(S, Ce), Ce < S.length)) + return S[Ce]; + } + e.elementAt = lr; + function be(S) { + return S.length === 0 ? void 0 : S[0]; + } + e.firstOrUndefined = be; + function Ge(S) { + return e.Debug.assert(S.length !== 0), S[0]; + } + e.first = Ge; + function ur(S) { + return S.length === 0 ? void 0 : S[S.length - 1]; + } + e.lastOrUndefined = ur; + function yr(S) { + return e.Debug.assert(S.length !== 0), S[S.length - 1]; + } + e.last = yr; + function Ir(S) { + return S && S.length === 1 ? S[0] : void 0; + } + e.singleOrUndefined = Ir; + function wr(S) { + return S && S.length === 1 ? S[0] : S; + } + e.singleOrMany = wr; + function Ur(S, Ce, qe) { + var br = S.slice(0); + return br[Ce] = qe, br; + } + e.replaceElement = Ur; + function ii(S, Ce, qe, br, Zr) { + return mi(S, qe(Ce), qe, br, Zr); + } + e.binarySearch = ii; + function mi(S, Ce, qe, br, Zr) { + if (!D(S)) + return -1; + for (var Si = Zr || 0, Pi = S.length - 1; Si <= Pi; ) { + var Qi = Si + (Pi - Si >> 1), Ct = qe(S[Qi], Qi); + switch (br(Ct, Ce)) { + case -1: + Si = Qi + 1; + break; + case 0: + return Qi; + case 1: + Pi = Qi - 1; + break; + } + } + return ~Si; + } + e.binarySearchKey = mi; + function pe(S, Ce, qe, br, Zr) { + if (S && S.length > 0) { + var Si = S.length; + if (Si > 0) { + var Pi = br === void 0 || br < 0 ? 0 : br, Qi = Zr === void 0 || Pi + Zr > Si - 1 ? Si - 1 : Pi + Zr, Ct = void 0; + for (arguments.length <= 2 ? (Ct = S[Pi], Pi++) : Ct = qe; Pi <= Qi; ) + Ct = Ce(Ct, S[Pi], Pi), Pi++; + return Ct; + } + } + return qe; + } + e.reduceLeft = pe; + var or = Object.prototype.hasOwnProperty; + function qr(S, Ce) { + return or.call(S, Ce); + } + e.hasProperty = qr; + function si(S, Ce) { + return or.call(S, Ce) ? S[Ce] : void 0; + } + e.getProperty = si; + function Di(S) { + var Ce = []; + for (var qe in S) + or.call(S, qe) && Ce.push(qe); + return Ce; + } + e.getOwnKeys = Di; + function wi(S) { + var Ce = []; + do + for (var qe = Object.getOwnPropertyNames(S), br = 0, Zr = qe; br < Zr.length; br++) { + var Si = Zr[br]; + er(Ce, Si); + } + while (S = Object.getPrototypeOf(S)); + return Ce; + } + e.getAllKeys = wi; + function Xi(S) { + var Ce = []; + for (var qe in S) + or.call(S, qe) && Ce.push(S[qe]); + return Ce; + } + e.getOwnValues = Xi; + var et = Object.entries || function(S) { + for (var Ce = Di(S), qe = Array(Ce.length), br = 0; br < Ce.length; br++) + qe[br] = [Ce[br], S[Ce[br]]]; + return qe; + }; + function Gi(S) { + return S ? et(S) : []; + } + e.getEntries = Gi; + function Wt(S, Ce) { + for (var qe = new Array(S), br = 0; br < S; br++) + qe[br] = Ce(br); + return qe; + } + e.arrayOf = Wt; + function Zt(S, Ce) { + for (var qe = [], br = S.next(); !br.done; br = S.next()) + qe.push(Ce ? Ce(br.value) : br.value); + return qe; + } + e.arrayFrom = Zt; + function _r(S) { + for (var Ce = [], qe = 1; qe < arguments.length; qe++) + Ce[qe - 1] = arguments[qe]; + for (var br = 0, Zr = Ce; br < Zr.length; br++) { + var Si = Zr[br]; + if (Si !== void 0) + for (var Pi in Si) + qr(Si, Pi) && (S[Pi] = Si[Pi]); + } + return S; + } + e.assign = _r; + function pi(S, Ce, qe) { + if (qe === void 0 && (qe = ut), S === Ce) + return true; + if (!S || !Ce) + return false; + for (var br in S) + if (or.call(S, br) && (!or.call(Ce, br) || !qe(S[br], Ce[br]))) + return false; + for (var br in Ce) + if (or.call(Ce, br) && !or.call(S, br)) + return false; + return true; + } + e.equalOwnProperties = pi; + function ae(S, Ce, qe) { + qe === void 0 && (qe = vi); + for (var br = new e.Map(), Zr = 0, Si = S; Zr < Si.length; Zr++) { + var Pi = Si[Zr], Qi = Ce(Pi); + Qi !== void 0 && br.set(Qi, qe(Pi)); + } + return br; + } + e.arrayToMap = ae; + function Xe(S, Ce, qe) { + qe === void 0 && (qe = vi); + for (var br = [], Zr = 0, Si = S; Zr < Si.length; Zr++) { + var Pi = Si[Zr]; + br[Ce(Pi)] = qe(Pi); + } + return br; + } + e.arrayToNumericMap = Xe; + function Jr(S, Ce, qe) { + qe === void 0 && (qe = vi); + for (var br = Je(), Zr = 0, Si = S; Zr < Si.length; Zr++) { + var Pi = Si[Zr]; + br.add(Ce(Pi), qe(Pi)); + } + return br; + } + e.arrayToMultiMap = Jr; + function ti(S, Ce, qe) { + return qe === void 0 && (qe = vi), Zt(Jr(S, Ce).values(), qe); + } + e.group = ti; + function Ze(S) { + var Ce = {}; + for (var qe in S) + or.call(S, qe) && (Ce[qe] = S[qe]); + return Ce; + } + e.clone = Ze; + function Sr(S, Ce) { + var qe = {}; + for (var br in Ce) + or.call(Ce, br) && (qe[br] = Ce[br]); + for (var br in S) + or.call(S, br) && (qe[br] = S[br]); + return qe; + } + e.extend = Sr; + function zr(S, Ce) { + for (var qe in Ce) + or.call(Ce, qe) && (S[qe] = Ce[qe]); + } + e.copyProperties = zr; + function Wr(S, Ce) { + return Ce ? Ce.bind(S) : void 0; + } + e.maybeBind = Wr; + function Je() { + var S = new e.Map(); + return S.add = xe, S.remove = vr, S; + } + e.createMultiMap = Je; + function xe(S, Ce) { + var qe = this.get(S); + return qe ? qe.push(Ce) : this.set(S, qe = [Ce]), qe; + } + function vr(S, Ce) { + var qe = this.get(S); + qe && (Kn(qe, Ce), qe.length || this.delete(S)); + } + function mr() { + return Je(); + } + e.createUnderscoreEscapedMultiMap = mr; + function Ar(S, Ce) { + var qe = new e.Map(), br = 0; + function Zr() { + var Pi = qe.values(), Qi; + return { next: function() { + for (; ; ) + if (Qi) { + var Ct = Qi.next(); + if (!Ct.done) + return { value: Ct.value }; + Qi = void 0; + } else { + var Ct = Pi.next(); + if (Ct.done) + return { value: void 0, done: true }; + if (!Oe(Ct.value)) + return { value: Ct.value }; + Qi = Br(Ct.value); + } + } }; + } + var Si = { has: function(Pi) { + var Qi = S(Pi); + if (!qe.has(Qi)) + return false; + var Ct = qe.get(Qi); + if (!Oe(Ct)) + return Ce(Ct, Pi); + for (var sa = 0, en = Ct; sa < en.length; sa++) { + var Wa = en[sa]; + if (Ce(Wa, Pi)) + return true; + } + return false; + }, add: function(Pi) { + var Qi = S(Pi); + if (qe.has(Qi)) { + var Ct = qe.get(Qi); + if (Oe(Ct)) + J(Ct, Pi, Ce) || (Ct.push(Pi), br++); + else { + var sa = Ct; + Ce(sa, Pi) || (qe.set(Qi, [sa, Pi]), br++); + } + } else + qe.set(Qi, Pi), br++; + return this; + }, delete: function(Pi) { + var Qi = S(Pi); + if (!qe.has(Qi)) + return false; + var Ct = qe.get(Qi); + if (Oe(Ct)) { + for (var sa = 0; sa < Ct.length; sa++) + if (Ce(Ct[sa], Pi)) + return Ct.length === 1 ? qe.delete(Qi) : Ct.length === 2 ? qe.set(Qi, Ct[1 - sa]) : xn(Ct, sa), br--, true; + } else { + var en = Ct; + if (Ce(en, Pi)) + return qe.delete(Qi), br--, true; + } + return false; + }, clear: function() { + qe.clear(), br = 0; + }, get size() { + return br; + }, forEach: function(Pi) { + for (var Qi = 0, Ct = Zt(qe.values()); Qi < Ct.length; Qi++) { + var sa = Ct[Qi]; + if (Oe(sa)) + for (var en = 0, Wa = sa; en < Wa.length; en++) { + var qn = Wa[en]; + Pi(qn, qn); + } + else { + var qn = sa; + Pi(qn, qn); + } + } + }, keys: function() { + return Zr(); + }, values: function() { + return Zr(); + }, entries: function() { + var Pi = Zr(); + return { next: function() { + var Qi = Pi.next(); + return Qi.done ? Qi : { value: [Qi.value, Qi.value] }; + } }; + } }; + return Si; + } + e.createSet = Ar; + function Oe(S) { + return Array.isArray ? Array.isArray(S) : S instanceof Array; + } + e.isArray = Oe; + function nr(S) { + return Oe(S) ? S : [S]; + } + e.toArray = nr; + function Mr(S) { + return typeof S == "string"; + } + e.isString = Mr; + function Pe(S) { + return typeof S == "number"; + } + e.isNumber = Pe; + function Ue(S, Ce) { + return S !== void 0 && Ce(S) ? S : void 0; + } + e.tryCast = Ue; + function fr(S, Ce) { + return S !== void 0 && Ce(S) ? S : e.Debug.fail("Invalid cast. The supplied value ".concat(S, " did not pass the test '").concat(e.Debug.getFunctionName(Ce), "'.")); + } + e.cast = fr; + function De(S) { + } + e.noop = De; + function gr() { + return false; + } + e.returnFalse = gr; + function Vr() { + return true; + } + e.returnTrue = Vr; + function Tr() { + } + e.returnUndefined = Tr; + function vi(S) { + return S; + } + e.identity = vi; + function Ui(S) { + return S.toLowerCase(); + } + e.toLowerCase = Ui; + var Yi = /[^\u0130\u0131\u00DFa-z0-9\\/:\-_\. ]+/g; + function Wi(S) { + return Yi.test(S) ? S.replace(Yi, Ui) : S; + } + e.toFileNameLowerCase = Wi; + function ct() { + throw new Error("Not implemented"); + } + e.notImplemented = ct; + function Li(S) { + var Ce; + return function() { + return S && (Ce = S(), S = void 0), Ce; + }; + } + e.memoize = Li; + function nt(S) { + var Ce = new e.Map(); + return function(qe) { + var br = "".concat(typeof qe, ":").concat(qe), Zr = Ce.get(br); + return Zr === void 0 && !Ce.has(br) && (Zr = S(qe), Ce.set(br, Zr)), Zr; + }; + } + e.memoizeOne = nt; + function Mt(S, Ce, qe, br, Zr) { + if (Zr) { + for (var Si = [], Pi = 0; Pi < arguments.length; Pi++) + Si[Pi] = arguments[Pi]; + return function(Qi) { + return pe(Si, function(Ct, sa) { + return sa(Ct); + }, Qi); + }; + } else + return br ? function(Qi) { + return br(qe(Ce(S(Qi)))); + } : qe ? function(Qi) { + return qe(Ce(S(Qi))); + } : Ce ? function(Qi) { + return Ce(S(Qi)); + } : S ? function(Qi) { + return S(Qi); + } : function(Qi) { + return Qi; + }; + } + e.compose = Mt; + var xt; + (function(S) { + S[S.None = 0] = "None", S[S.Normal = 1] = "Normal", S[S.Aggressive = 2] = "Aggressive", S[S.VeryAggressive = 3] = "VeryAggressive"; + })(xt = e.AssertionLevel || (e.AssertionLevel = {})); + function ut(S, Ce) { + return S === Ce; + } + e.equateValues = ut; + function Dt(S, Ce) { + return S === Ce || S !== void 0 && Ce !== void 0 && S.toUpperCase() === Ce.toUpperCase(); + } + e.equateStringsCaseInsensitive = Dt; + function Rt(S, Ce) { + return ut(S, Ce); + } + e.equateStringsCaseSensitive = Rt; + function Ii(S, Ce) { + return S === Ce ? 0 : S === void 0 ? -1 : Ce === void 0 ? 1 : S < Ce ? -1 : 1; + } + function Ki(S, Ce) { + return Ii(S, Ce); + } + e.compareValues = Ki; + function Fi(S, Ce) { + return Ki(S == null ? void 0 : S.start, Ce == null ? void 0 : Ce.start) || Ki(S == null ? void 0 : S.length, Ce == null ? void 0 : Ce.length); + } + e.compareTextSpans = Fi; + function ui(S, Ce, qe) { + return qe(S, Ce) === -1 ? S : Ce; + } + e.min = ui; + function Bt(S, Ce) { + return S === Ce ? 0 : S === void 0 ? -1 : Ce === void 0 ? 1 : (S = S.toUpperCase(), Ce = Ce.toUpperCase(), S < Ce ? -1 : S > Ce ? 1 : 0); + } + e.compareStringsCaseInsensitive = Bt; + function wt(S, Ce) { + return Ii(S, Ce); + } + e.compareStringsCaseSensitive = wt; + function na(S) { + return S ? Bt : wt; + } + e.getStringComparer = na; + var Ai = function() { + var S, Ce, qe = Qi(); + return Ct; + function br(sa, en, Wa) { + if (sa === en) + return 0; + if (sa === void 0) + return -1; + if (en === void 0) + return 1; + var qn = Wa(sa, en); + return qn < 0 ? -1 : qn > 0 ? 1 : 0; + } + function Zr(sa) { + var en = new Intl.Collator(sa, { usage: "sort", sensitivity: "variant" }).compare; + return function(Wa, qn) { + return br(Wa, qn, en); + }; + } + function Si(sa) { + if (sa !== void 0) + return Pi(); + return function(Wa, qn) { + return br(Wa, qn, en); + }; + function en(Wa, qn) { + return Wa.localeCompare(qn); + } + } + function Pi() { + return function(Wa, qn) { + return br(Wa, qn, sa); + }; + function sa(Wa, qn) { + return en(Wa.toUpperCase(), qn.toUpperCase()) || en(Wa, qn); + } + function en(Wa, qn) { + return Wa < qn ? -1 : Wa > qn ? 1 : 0; + } + } + function Qi() { + return typeof Intl == "object" && typeof Intl.Collator == "function" ? Zr : typeof String.prototype.localeCompare == "function" && typeof String.prototype.toLocaleUpperCase == "function" && "a".localeCompare("B") < 0 ? Si : Pi; + } + function Ct(sa) { + return sa === void 0 ? S || (S = qe(sa)) : sa === "en-US" ? Ce || (Ce = qe(sa)) : qe(sa); + } + }(), Oi, ji; + function Vi() { + return ji; + } + e.getUILocale = Vi; + function at(S) { + ji !== S && (ji = S, Oi = void 0); + } + e.setUILocale = at; + function At(S, Ce) { + var qe = Oi || (Oi = Ai(ji)); + return qe(S, Ce); + } + e.compareStringsCaseSensitiveUI = At; + function ba(S, Ce, qe, br) { + return S === Ce ? 0 : S === void 0 ? -1 : Ce === void 0 ? 1 : br(S[qe], Ce[qe]); + } + e.compareProperties = ba; + function $a(S, Ce) { + return Ki(S ? 1 : 0, Ce ? 1 : 0); + } + e.compareBooleans = $a; + function Qa(S, Ce, qe) { + for (var br = Math.min(2, Math.floor(S.length * 0.34)), Zr = Math.floor(S.length * 0.4) + 1, Si, Pi = 0, Qi = Ce; Pi < Qi.length; Pi++) { + var Ct = Qi[Pi], sa = qe(Ct); + if (sa !== void 0 && Math.abs(sa.length - S.length) <= br) { + if (sa === S || sa.length < 3 && sa.toLowerCase() !== S.toLowerCase()) + continue; + var en = ai(S, sa, Zr - 0.1); + if (en === void 0) + continue; + e.Debug.assert(en < Zr), Zr = en, Si = Ct; + } + } + return Si; + } + e.getSpellingSuggestion = Qa; + function ai(S, Ce, qe) { + for (var br = new Array(Ce.length + 1), Zr = new Array(Ce.length + 1), Si = qe + 0.01, Pi = 0; Pi <= Ce.length; Pi++) + br[Pi] = Pi; + for (var Pi = 1; Pi <= S.length; Pi++) { + var Qi = S.charCodeAt(Pi - 1), Ct = Math.ceil(Pi > qe ? Pi - qe : 1), sa = Math.floor(Ce.length > qe + Pi ? qe + Pi : Ce.length); + Zr[0] = Pi; + for (var en = Pi, Wa = 1; Wa < Ct; Wa++) + Zr[Wa] = Si; + for (var Wa = Ct; Wa <= sa; Wa++) { + var qn = S[Pi - 1].toLowerCase() === Ce[Wa - 1].toLowerCase() ? br[Wa - 1] + 0.1 : br[Wa - 1] + 2, mo = Qi === Ce.charCodeAt(Wa - 1) ? br[Wa - 1] : Math.min(br[Wa] + 1, Zr[Wa - 1] + 1, qn); + Zr[Wa] = mo, en = Math.min(en, mo); + } + for (var Wa = sa + 1; Wa <= Ce.length; Wa++) + Zr[Wa] = Si; + if (en > qe) + return; + var So = br; + br = Zr, Zr = So; + } + var Go = br[Ce.length]; + return Go > qe ? void 0 : Go; + } + function Dn(S, Ce) { + var qe = S.length - Ce.length; + return qe >= 0 && S.indexOf(Ce, qe) === qe; + } + e.endsWith = Dn; + function ka(S, Ce) { + return Dn(S, Ce) ? S.slice(0, S.length - Ce.length) : S; + } + e.removeSuffix = ka; + function Ba(S, Ce) { + return Dn(S, Ce) ? S.slice(0, S.length - Ce.length) : void 0; + } + e.tryRemoveSuffix = Ba; + function pn(S, Ce) { + return S.indexOf(Ce) !== -1; + } + e.stringContains = pn; + function Cn(S) { + for (var Ce = S.length, qe = Ce - 1; qe > 0; qe--) { + var br = S.charCodeAt(qe); + if (br >= 48 && br <= 57) + do + --qe, br = S.charCodeAt(qe); + while (qe > 0 && br >= 48 && br <= 57); + else if (qe > 4 && (br === 110 || br === 78)) { + if (--qe, br = S.charCodeAt(qe), br !== 105 && br !== 73 || (--qe, br = S.charCodeAt(qe), br !== 109 && br !== 77)) + break; + --qe, br = S.charCodeAt(qe); + } else + break; + if (br !== 45 && br !== 46) + break; + Ce = qe; + } + return Ce === S.length ? S : S.slice(0, Ce); + } + e.removeMinAndVersionNumbers = Cn; + function Bi(S, Ce) { + for (var qe = 0; qe < S.length; qe++) + if (S[qe] === Ce) + return kn(S, qe), true; + return false; + } + e.orderedRemoveItem = Bi; + function kn(S, Ce) { + for (var qe = Ce; qe < S.length - 1; qe++) + S[qe] = S[qe + 1]; + S.pop(); + } + e.orderedRemoveItemAt = kn; + function xn(S, Ce) { + S[Ce] = S[S.length - 1], S.pop(); + } + e.unorderedRemoveItemAt = xn; + function Kn(S, Ce) { + return Pn(S, function(qe) { + return qe === Ce; + }); + } + e.unorderedRemoveItem = Kn; + function Pn(S, Ce) { + for (var qe = 0; qe < S.length; qe++) + if (Ce(S[qe])) + return xn(S, qe), true; + return false; + } + function eo(S) { + return S ? vi : Wi; + } + e.createGetCanonicalFileName = eo; + function Rn(S) { + var Ce = S.prefix, qe = S.suffix; + return "".concat(Ce, "*").concat(qe); + } + e.patternText = Rn; + function Da(S, Ce) { + return e.Debug.assert(to(S, Ce)), Ce.substring(S.prefix.length, Ce.length - S.suffix.length); + } + e.matchedText = Da; + function bo(S, Ce, qe) { + for (var br, Zr = -1, Si = 0, Pi = S; Si < Pi.length; Si++) { + var Qi = Pi[Si], Ct = Ce(Qi); + to(Ct, qe) && Ct.prefix.length > Zr && (Zr = Ct.prefix.length, br = Qi); + } + return br; + } + e.findBestPatternMatch = bo; + function Ro(S, Ce) { + return S.lastIndexOf(Ce, 0) === 0; + } + e.startsWith = Ro; + function En(S, Ce) { + return Ro(S, Ce) ? S.substr(Ce.length) : S; + } + e.removePrefix = En; + function Wn(S, Ce, qe) { + return qe === void 0 && (qe = vi), Ro(qe(S), qe(Ce)) ? S.substring(Ce.length) : void 0; + } + e.tryRemovePrefix = Wn; + function to(S, Ce) { + var qe = S.prefix, br = S.suffix; + return Ce.length >= qe.length + br.length && Ro(Ce, qe) && Dn(Ce, br); + } + function Co(S, Ce) { + return function(qe) { + return S(qe) && Ce(qe); + }; + } + e.and = Co; + function Ko() { + for (var S = [], Ce = 0; Ce < arguments.length; Ce++) + S[Ce] = arguments[Ce]; + return function() { + for (var qe = [], br = 0; br < arguments.length; br++) + qe[br] = arguments[br]; + for (var Zr, Si = 0, Pi = S; Si < Pi.length; Si++) { + var Qi = Pi[Si]; + if (Zr = Qi.apply(void 0, qe), Zr) + return Zr; + } + return Zr; + }; + } + e.or = Ko; + function Oo(S) { + return function() { + for (var Ce = [], qe = 0; qe < arguments.length; qe++) + Ce[qe] = arguments[qe]; + return !S.apply(void 0, Ce); + }; + } + e.not = Oo; + function no(S) { + } + e.assertType = no; + function $o(S) { + return S === void 0 ? void 0 : [S]; + } + e.singleElementArray = $o; + function Pr(S, Ce, qe, br, Zr, Si) { + Si = Si || De; + for (var Pi = 0, Qi = 0, Ct = S.length, sa = Ce.length, en = false; Pi < Ct && Qi < sa; ) { + var Wa = S[Pi], qn = Ce[Qi], mo = qe(Wa, qn); + mo === -1 ? (br(Wa), Pi++, en = true) : mo === 1 ? (Zr(qn), Qi++, en = true) : (Si(qn, Wa), Pi++, Qi++); + } + for (; Pi < Ct; ) + br(S[Pi++]), en = true; + for (; Qi < sa; ) + Zr(Ce[Qi++]), en = true; + return en; + } + e.enumerateInsertsAndDeletes = Pr; + function xi(S, Ce) { + for (var qe = Array(S), br = 0; br < S; br++) + qe[br] = Ce(br); + return qe; + } + e.fill = xi; + function St(S) { + var Ce = []; + return pa(S, Ce, void 0, 0), Ce; + } + e.cartesianProduct = St; + function pa(S, Ce, qe, br) { + for (var Zr = 0, Si = S[br]; Zr < Si.length; Zr++) { + var Pi = Si[Zr], Qi = void 0; + qe ? (Qi = qe.slice(), Qi.push(Pi)) : Qi = [Pi], br === S.length - 1 ? Ce.push(Qi) : pa(S, Ce, Qi, br + 1); + } + } + function dn(S, Ce, qe) { + return qe === void 0 && (qe = " "), Ce <= S.length ? S : qe.repeat(Ce - S.length) + S; + } + e.padLeft = dn; + function Jn(S, Ce, qe) { + return qe === void 0 && (qe = " "), Ce <= S.length ? S : S + qe.repeat(Ce - S.length); + } + e.padRight = Jn; + function Qe(S, Ce) { + for (var qe = S.length, br = 0; br < qe && Ce(S[br]); ) + br++; + return S.slice(0, br); + } + e.takeWhile = Qe, e.trimString = String.prototype.trim ? function(S) { + return S.trim(); + } : function(S) { + return e.trimStringEnd(e.trimStringStart(S)); + }, e.trimStringEnd = String.prototype.trimEnd ? function(S) { + return S.trimEnd(); + } : Gr, e.trimStringStart = String.prototype.trimStart ? function(S) { + return S.trimStart(); + } : function(S) { + return S.replace(/^\s+/g, ""); + }; + function Gr(S) { + for (var Ce = S.length - 1; Ce >= 0 && e.isWhiteSpaceLike(S.charCodeAt(Ce)); ) + Ce--; + return S.slice(0, Ce + 1); + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(w) { + w[w.Off = 0] = "Off", w[w.Error = 1] = "Error", w[w.Warning = 2] = "Warning", w[w.Info = 3] = "Info", w[w.Verbose = 4] = "Verbose"; + })(a = e.LogLevel || (e.LogLevel = {})); + var C; + (function(w) { + var B, E = 0; + w.currentLogLevel = a.Warning, w.isDebugging = false; + function Q() { + return B != null ? B : B = new e.Version(e.version); + } + w.getTypeScriptVersion = Q; + function le(Ye) { + return w.currentLogLevel <= Ye; + } + w.shouldLog = le; + function N(Ye, Br) { + w.loggingHost && le(Ye) && w.loggingHost.log(Ye, Br); + } + function p(Ye) { + N(a.Info, Ye); + } + w.log = p, function(Ye) { + function Br(lr) { + N(a.Error, lr); + } + Ye.error = Br; + function Er(lr) { + N(a.Warning, lr); + } + Ye.warn = Er; + function Ne(lr) { + N(a.Info, lr); + } + Ye.log = Ne; + function n(lr) { + N(a.Verbose, lr); + } + Ye.trace = n; + }(p = w.log || (w.log = {})); + var m = {}; + function G() { + return E; + } + w.getAssertionLevel = G; + function oe(Ye) { + var Br = E; + if (E = Ye, Ye > Br) + for (var Er = 0, Ne = e.getOwnKeys(m); Er < Ne.length; Er++) { + var n = Ne[Er], lr = m[n]; + lr !== void 0 && w[n] !== lr.assertion && Ye >= lr.level && (w[n] = lr, m[n] = void 0); + } + } + w.setAssertionLevel = oe; + function f(Ye) { + return E >= Ye; + } + w.shouldAssert = f; + function T(Ye, Br) { + return f(Ye) ? true : (m[Br] = { level: Ye, assertion: w[Br] }, w[Br] = e.noop, false); + } + function K(Ye, Br) { + debugger; + var Er = new Error(Ye ? "Debug Failure. ".concat(Ye) : "Debug Failure."); + throw Error.captureStackTrace && Error.captureStackTrace(Er, Br || K), Er; + } + w.fail = K; + function b(Ye, Br, Er) { + return K("".concat(Br || "Unexpected node.", `\r +Node `).concat(j(Ye.kind), " was unexpected."), Er || b); + } + w.failBadSyntaxKind = b; + function se(Ye, Br, Er, Ne) { + Ye || (Br = Br ? "False expression: ".concat(Br) : "False expression.", Er && (Br += `\r +Verbose Debug Information: ` + (typeof Er == "string" ? Er : Er())), K(Br, Ne || se)); + } + w.assert = se; + function J(Ye, Br, Er, Ne, n) { + if (Ye !== Br) { + var lr = Er ? Ne ? "".concat(Er, " ").concat(Ne) : Er : ""; + K("Expected ".concat(Ye, " === ").concat(Br, ". ").concat(lr), n || J); + } + } + w.assertEqual = J; + function ie(Ye, Br, Er, Ne) { + Ye >= Br && K("Expected ".concat(Ye, " < ").concat(Br, ". ").concat(Er || ""), Ne || ie); + } + w.assertLessThan = ie; + function R(Ye, Br, Er) { + Ye > Br && K("Expected ".concat(Ye, " <= ").concat(Br), Er || R); + } + w.assertLessThanOrEqual = R; + function q(Ye, Br, Er) { + Ye < Br && K("Expected ".concat(Ye, " >= ").concat(Br), Er || q); + } + w.assertGreaterThanOrEqual = q; + function O(Ye, Br, Er) { + Ye == null && K(Br, Er || O); + } + w.assertIsDefined = O; + function ve(Ye, Br, Er) { + return O(Ye, Br, Er || ve), Ye; + } + w.checkDefined = ve; + function ee(Ye, Br, Er) { + for (var Ne = 0, n = Ye; Ne < n.length; Ne++) { + var lr = n[Ne]; + O(lr, Br, Er || ee); + } + } + w.assertEachIsDefined = ee; + function he(Ye, Br, Er) { + return ee(Ye, Br, Er || he), Ye; + } + w.checkEachDefined = he; + function F(Ye, Br, Er) { + Br === void 0 && (Br = "Illegal value:"); + var Ne = typeof Ye == "object" && e.hasProperty(Ye, "kind") && e.hasProperty(Ye, "pos") ? "SyntaxKind: " + j(Ye.kind) : JSON.stringify(Ye); + return K("".concat(Br, " ").concat(Ne), Er || F); + } + w.assertNever = F; + function x(Ye, Br, Er, Ne) { + T(1, "assertEachNode") && se(Br === void 0 || e.every(Ye, Br), Er || "Unexpected node.", function() { + return "Node array did not pass test '".concat(P(Br), "'."); + }, Ne || x); + } + w.assertEachNode = x; + function X(Ye, Br, Er, Ne) { + T(1, "assertNode") && se(Ye !== void 0 && (Br === void 0 || Br(Ye)), Er || "Unexpected node.", function() { + return "Node ".concat(j(Ye == null ? void 0 : Ye.kind), " did not pass test '").concat(P(Br), "'."); + }, Ne || X); + } + w.assertNode = X; + function $(Ye, Br, Er, Ne) { + T(1, "assertNotNode") && se(Ye === void 0 || Br === void 0 || !Br(Ye), Er || "Unexpected node.", function() { + return "Node ".concat(j(Ye.kind), " should not have passed test '").concat(P(Br), "'."); + }, Ne || $); + } + w.assertNotNode = $; + function A(Ye, Br, Er, Ne) { + T(1, "assertOptionalNode") && se(Br === void 0 || Ye === void 0 || Br(Ye), Er || "Unexpected node.", function() { + return "Node ".concat(j(Ye == null ? void 0 : Ye.kind), " did not pass test '").concat(P(Br), "'."); + }, Ne || A); + } + w.assertOptionalNode = A; + function y(Ye, Br, Er, Ne) { + T(1, "assertOptionalToken") && se(Br === void 0 || Ye === void 0 || Ye.kind === Br, Er || "Unexpected node.", function() { + return "Node ".concat(j(Ye == null ? void 0 : Ye.kind), " was not a '").concat(j(Br), "' token."); + }, Ne || y); + } + w.assertOptionalToken = y; + function V(Ye, Br, Er) { + T(1, "assertMissingNode") && se(Ye === void 0, Br || "Unexpected node.", function() { + return "Node ".concat(j(Ye.kind), " was unexpected'."); + }, Er || V); + } + w.assertMissingNode = V; + function L(Ye) { + } + w.type = L; + function P(Ye) { + if (typeof Ye != "function") + return ""; + if (Ye.hasOwnProperty("name")) + return Ye.name; + var Br = Function.prototype.toString.call(Ye), Er = /^function\s+([\w\$]+)\s*\(/.exec(Br); + return Er ? Er[1] : ""; + } + w.getFunctionName = P; + function k(Ye) { + return "{ name: ".concat(e.unescapeLeadingUnderscores(Ye.escapedName), "; flags: ").concat(fe(Ye.flags), "; declarations: ").concat(e.map(Ye.declarations, function(Br) { + return j(Br.kind); + }), " }"); + } + w.formatSymbol = k; + function Y(Ye, Br, Er) { + Ye === void 0 && (Ye = 0); + var Ne = U(Br); + if (Ye === 0) + return Ne.length > 0 && Ne[0][0] === 0 ? Ne[0][1] : "0"; + if (Er) { + for (var n = "", lr = Ye, be = 0, Ge = Ne; be < Ge.length; be++) { + var ur = Ge[be], yr = ur[0], Ir = ur[1]; + if (yr > Ye) + break; + yr !== 0 && yr & Ye && (n = "".concat(n).concat(n ? "|" : "").concat(Ir), lr &= ~yr); + } + if (lr === 0) + return n; + } else + for (var wr = 0, Ur = Ne; wr < Ur.length; wr++) { + var ii = Ur[wr], yr = ii[0], Ir = ii[1]; + if (yr === Ye) + return Ir; + } + return Ye.toString(); + } + w.formatEnum = Y; + function U(Ye) { + var Br = []; + for (var Er in Ye) { + var Ne = Ye[Er]; + typeof Ne == "number" && Br.push([Ne, Er]); + } + return e.stableSort(Br, function(n, lr) { + return e.compareValues(n[0], lr[0]); + }); + } + function j(Ye) { + return Y(Ye, e.SyntaxKind, false); + } + w.formatSyntaxKind = j; + function H(Ye) { + return Y(Ye, e.SnippetKind, false); + } + w.formatSnippetKind = H; + function I(Ye) { + return Y(Ye, e.NodeFlags, true); + } + w.formatNodeFlags = I; + function l(Ye) { + return Y(Ye, e.ModifierFlags, true); + } + w.formatModifierFlags = l; + function d(Ye) { + return Y(Ye, e.TransformFlags, true); + } + w.formatTransformFlags = d; + function D(Ye) { + return Y(Ye, e.EmitFlags, true); + } + w.formatEmitFlags = D; + function fe(Ye) { + return Y(Ye, e.SymbolFlags, true); + } + w.formatSymbolFlags = fe; + function g(Ye) { + return Y(Ye, e.TypeFlags, true); + } + w.formatTypeFlags = g; + function ne(Ye) { + return Y(Ye, e.SignatureFlags, true); + } + w.formatSignatureFlags = ne; + function ue(Ye) { + return Y(Ye, e.ObjectFlags, true); + } + w.formatObjectFlags = ue; + function We(Ye) { + return Y(Ye, e.FlowFlags, true); + } + w.formatFlowFlags = We; + var Fe = false, Z; + function Be() { + if (we(), !Z) + throw new Error("Debugging helpers could not be loaded."); + return Z; + } + function ge(Ye) { + return console.log(Re(Ye)); + } + w.printControlFlowGraph = ge; + function Re(Ye) { + return Be().formatControlFlowGraph(Ye); + } + w.formatControlFlowGraph = Re; + var ze; + function Ee(Ye) { + "__debugFlowFlags" in Ye || Object.defineProperties(Ye, { __tsDebuggerDisplay: { value: function() { + var Br = this.flags & 2 ? "FlowStart" : this.flags & 4 ? "FlowBranchLabel" : this.flags & 8 ? "FlowLoopLabel" : this.flags & 16 ? "FlowAssignment" : this.flags & 32 ? "FlowTrueCondition" : this.flags & 64 ? "FlowFalseCondition" : this.flags & 128 ? "FlowSwitchClause" : this.flags & 256 ? "FlowArrayMutation" : this.flags & 512 ? "FlowCall" : this.flags & 1024 ? "FlowReduceLabel" : this.flags & 1 ? "FlowUnreachable" : "UnknownFlow", Er = this.flags & ~(2048 - 1); + return "".concat(Br).concat(Er ? " (".concat(We(Er), ")") : ""); + } }, __debugFlowFlags: { get: function() { + return Y(this.flags, e.FlowFlags, true); + } }, __debugToString: { value: function() { + return Re(this); + } } }); + } + function He(Ye) { + Fe && (typeof Object.setPrototypeOf == "function" ? (ze || (ze = Object.create(Object.prototype), Ee(ze)), Object.setPrototypeOf(Ye, ze)) : Ee(Ye)); + } + w.attachFlowNodeDebugInfo = He; + var rr; + function Ie(Ye) { + "__tsDebuggerDisplay" in Ye || Object.defineProperties(Ye, { __tsDebuggerDisplay: { value: function(Br) { + return Br = String(Br).replace(/(?:,[\s\w\d_]+:[^,]+)+\]$/, "]"), "NodeArray ".concat(Br); + } } }); + } + function _e(Ye) { + Fe && (typeof Object.setPrototypeOf == "function" ? (rr || (rr = Object.create(Array.prototype), Ie(rr)), Object.setPrototypeOf(Ye, rr)) : Ie(Ye)); + } + w.attachNodeArrayDebugInfo = _e; + function we() { + if (Fe) + return; + var Ye, Br; + function Er() { + return Ye === void 0 && typeof WeakMap == "function" && (Ye = /* @__PURE__ */ new WeakMap()), Ye; + } + function Ne() { + return Br === void 0 && typeof WeakMap == "function" && (Br = /* @__PURE__ */ new WeakMap()), Br; + } + Object.defineProperties(e.objectAllocator.getSymbolConstructor().prototype, { __tsDebuggerDisplay: { value: function() { + var Ir = this.flags & 33554432 ? "TransientSymbol" : "Symbol", wr = this.flags & -33554433; + return "".concat(Ir, " '").concat(e.symbolName(this), "'").concat(wr ? " (".concat(fe(wr), ")") : ""); + } }, __debugFlags: { get: function() { + return fe(this.flags); + } } }), Object.defineProperties(e.objectAllocator.getTypeConstructor().prototype, { __tsDebuggerDisplay: { value: function() { + var Ir = this.flags & 98304 ? "NullableType" : this.flags & 384 ? "LiteralType ".concat(JSON.stringify(this.value)) : this.flags & 2048 ? "LiteralType ".concat(this.value.negative ? "-" : "").concat(this.value.base10Value, "n") : this.flags & 8192 ? "UniqueESSymbolType" : this.flags & 32 ? "EnumType" : this.flags & 67359327 ? "IntrinsicType ".concat(this.intrinsicName) : this.flags & 1048576 ? "UnionType" : this.flags & 2097152 ? "IntersectionType" : this.flags & 4194304 ? "IndexType" : this.flags & 8388608 ? "IndexedAccessType" : this.flags & 16777216 ? "ConditionalType" : this.flags & 33554432 ? "SubstitutionType" : this.flags & 262144 ? "TypeParameter" : this.flags & 524288 ? this.objectFlags & 3 ? "InterfaceType" : this.objectFlags & 4 ? "TypeReference" : this.objectFlags & 8 ? "TupleType" : this.objectFlags & 16 ? "AnonymousType" : this.objectFlags & 32 ? "MappedType" : this.objectFlags & 1024 ? "ReverseMappedType" : this.objectFlags & 256 ? "EvolvingArrayType" : "ObjectType" : "Type", wr = this.flags & 524288 ? this.objectFlags & -1344 : 0; + return "".concat(Ir).concat(this.symbol ? " '".concat(e.symbolName(this.symbol), "'") : "").concat(wr ? " (".concat(ue(wr), ")") : ""); + } }, __debugFlags: { get: function() { + return g(this.flags); + } }, __debugObjectFlags: { get: function() { + return this.flags & 524288 ? ue(this.objectFlags) : ""; + } }, __debugTypeToString: { value: function() { + var Ir = Er(), wr = Ir == null ? void 0 : Ir.get(this); + return wr === void 0 && (wr = this.checker.typeToString(this), Ir == null || Ir.set(this, wr)), wr; + } } }), Object.defineProperties(e.objectAllocator.getSignatureConstructor().prototype, { __debugFlags: { get: function() { + return ne(this.flags); + } }, __debugSignatureToString: { value: function() { + var Ir; + return (Ir = this.checker) === null || Ir === void 0 ? void 0 : Ir.signatureToString(this); + } } }); + for (var n = [e.objectAllocator.getNodeConstructor(), e.objectAllocator.getIdentifierConstructor(), e.objectAllocator.getTokenConstructor(), e.objectAllocator.getSourceFileConstructor()], lr = 0, be = n; lr < be.length; lr++) { + var Ge = be[lr]; + Ge.prototype.hasOwnProperty("__debugKind") || Object.defineProperties(Ge.prototype, { __tsDebuggerDisplay: { value: function() { + var Ir = e.isGeneratedIdentifier(this) ? "GeneratedIdentifier" : e.isIdentifier(this) ? "Identifier '".concat(e.idText(this), "'") : e.isPrivateIdentifier(this) ? "PrivateIdentifier '".concat(e.idText(this), "'") : e.isStringLiteral(this) ? "StringLiteral ".concat(JSON.stringify(this.text.length < 10 ? this.text : this.text.slice(10) + "...")) : e.isNumericLiteral(this) ? "NumericLiteral ".concat(this.text) : e.isBigIntLiteral(this) ? "BigIntLiteral ".concat(this.text, "n") : e.isTypeParameterDeclaration(this) ? "TypeParameterDeclaration" : e.isParameter(this) ? "ParameterDeclaration" : e.isConstructorDeclaration(this) ? "ConstructorDeclaration" : e.isGetAccessorDeclaration(this) ? "GetAccessorDeclaration" : e.isSetAccessorDeclaration(this) ? "SetAccessorDeclaration" : e.isCallSignatureDeclaration(this) ? "CallSignatureDeclaration" : e.isConstructSignatureDeclaration(this) ? "ConstructSignatureDeclaration" : e.isIndexSignatureDeclaration(this) ? "IndexSignatureDeclaration" : e.isTypePredicateNode(this) ? "TypePredicateNode" : e.isTypeReferenceNode(this) ? "TypeReferenceNode" : e.isFunctionTypeNode(this) ? "FunctionTypeNode" : e.isConstructorTypeNode(this) ? "ConstructorTypeNode" : e.isTypeQueryNode(this) ? "TypeQueryNode" : e.isTypeLiteralNode(this) ? "TypeLiteralNode" : e.isArrayTypeNode(this) ? "ArrayTypeNode" : e.isTupleTypeNode(this) ? "TupleTypeNode" : e.isOptionalTypeNode(this) ? "OptionalTypeNode" : e.isRestTypeNode(this) ? "RestTypeNode" : e.isUnionTypeNode(this) ? "UnionTypeNode" : e.isIntersectionTypeNode(this) ? "IntersectionTypeNode" : e.isConditionalTypeNode(this) ? "ConditionalTypeNode" : e.isInferTypeNode(this) ? "InferTypeNode" : e.isParenthesizedTypeNode(this) ? "ParenthesizedTypeNode" : e.isThisTypeNode(this) ? "ThisTypeNode" : e.isTypeOperatorNode(this) ? "TypeOperatorNode" : e.isIndexedAccessTypeNode(this) ? "IndexedAccessTypeNode" : e.isMappedTypeNode(this) ? "MappedTypeNode" : e.isLiteralTypeNode(this) ? "LiteralTypeNode" : e.isNamedTupleMember(this) ? "NamedTupleMember" : e.isImportTypeNode(this) ? "ImportTypeNode" : j(this.kind); + return "".concat(Ir).concat(this.flags ? " (".concat(I(this.flags), ")") : ""); + } }, __debugKind: { get: function() { + return j(this.kind); + } }, __debugNodeFlags: { get: function() { + return I(this.flags); + } }, __debugModifierFlags: { get: function() { + return l(e.getEffectiveModifierFlagsNoCache(this)); + } }, __debugTransformFlags: { get: function() { + return d(this.transformFlags); + } }, __debugIsParseTreeNode: { get: function() { + return e.isParseTreeNode(this); + } }, __debugEmitFlags: { get: function() { + return D(e.getEmitFlags(this)); + } }, __debugGetText: { value: function(Ir) { + if (e.nodeIsSynthesized(this)) + return ""; + var wr = Ne(), Ur = wr == null ? void 0 : wr.get(this); + if (Ur === void 0) { + var ii = e.getParseTreeNode(this), mi = ii && e.getSourceFileOfNode(ii); + Ur = mi ? e.getSourceTextOfNodeFromSourceFile(mi, ii, Ir) : "", wr == null || wr.set(this, Ur); + } + return Ur; + } } }); + } + try { + if (false) + var ur, yr; + } catch { + } + Fe = true; + } + w.enableDebugInfo = we; + function de(Ye, Br, Er, Ne, n) { + var lr = Br ? "DeprecationError: " : "DeprecationWarning: "; + return lr += "'".concat(Ye, "' "), lr += Ne ? "has been deprecated since v".concat(Ne) : "is deprecated", lr += Br ? " and can no longer be used." : Er ? " and will no longer be usable after v".concat(Er, ".") : ".", lr += n ? " ".concat(e.formatStringFromArgs(n, [Ye], 0)) : "", lr; + } + function ye(Ye, Br, Er, Ne) { + var n = de(Ye, true, Br, Er, Ne); + return function() { + throw new TypeError(n); + }; + } + function Ae(Ye, Br, Er, Ne) { + var n = false; + return function() { + n || (p.warn(de(Ye, false, Br, Er, Ne)), n = true); + }; + } + function er(Ye, Br) { + var Er, Ne; + Br === void 0 && (Br = {}); + var n = typeof Br.typeScriptVersion == "string" ? new e.Version(Br.typeScriptVersion) : (Er = Br.typeScriptVersion) !== null && Er !== void 0 ? Er : Q(), lr = typeof Br.errorAfter == "string" ? new e.Version(Br.errorAfter) : Br.errorAfter, be = typeof Br.warnAfter == "string" ? new e.Version(Br.warnAfter) : Br.warnAfter, Ge = typeof Br.since == "string" ? new e.Version(Br.since) : (Ne = Br.since) !== null && Ne !== void 0 ? Ne : be, ur = Br.error || lr && n.compareTo(lr) <= 0, yr = !be || n.compareTo(be) >= 0; + return ur ? ye(Ye, lr, Ge, Br.message) : yr ? Ae(Ye, lr, Ge, Br.message) : e.noop; + } + function ir(Ye, Br) { + return function() { + return Ye(), Br.apply(this, arguments); + }; + } + function Cr(Ye, Br) { + var Er = er(P(Ye), Br); + return ir(Er, Ye); + } + w.deprecate = Cr; + })(C = e.Debug || (e.Debug = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a = /^(0|[1-9]\d*)(?:\.(0|[1-9]\d*)(?:\.(0|[1-9]\d*)(?:\-([a-z0-9-.]+))?(?:\+([a-z0-9-.]+))?)?)?$/i, C = /^(?:0|[1-9]\d*|[a-z-][a-z0-9-]*)(?:\.(?:0|[1-9]\d*|[a-z-][a-z0-9-]*))*$/i, w = /^[a-z0-9-]+(?:\.[a-z0-9-]+)*$/i, B = /^(0|[1-9]\d*)$/, E = function() { + function F(x, X, $, A, y) { + if (X === void 0 && (X = 0), $ === void 0 && ($ = 0), A === void 0 && (A = ""), y === void 0 && (y = ""), typeof x == "string") { + var V = e.Debug.checkDefined(Q(x), "Invalid version"); + x = V.major, X = V.minor, $ = V.patch, A = V.prerelease, y = V.build; + } + e.Debug.assert(x >= 0, "Invalid argument: major"), e.Debug.assert(X >= 0, "Invalid argument: minor"), e.Debug.assert($ >= 0, "Invalid argument: patch"), e.Debug.assert(!A || C.test(A), "Invalid argument: prerelease"), e.Debug.assert(!y || w.test(y), "Invalid argument: build"), this.major = x, this.minor = X, this.patch = $, this.prerelease = A ? A.split(".") : e.emptyArray, this.build = y ? y.split(".") : e.emptyArray; + } + return F.tryParse = function(x) { + var X = Q(x); + if (!!X) { + var $ = X.major, A = X.minor, y = X.patch, V = X.prerelease, L = X.build; + return new F($, A, y, V, L); + } + }, F.prototype.compareTo = function(x) { + return this === x ? 0 : x === void 0 ? 1 : e.compareValues(this.major, x.major) || e.compareValues(this.minor, x.minor) || e.compareValues(this.patch, x.patch) || le(this.prerelease, x.prerelease); + }, F.prototype.increment = function(x) { + switch (x) { + case "major": + return new F(this.major + 1, 0, 0); + case "minor": + return new F(this.major, this.minor + 1, 0); + case "patch": + return new F(this.major, this.minor, this.patch + 1); + default: + return e.Debug.assertNever(x); + } + }, F.prototype.toString = function() { + var x = "".concat(this.major, ".").concat(this.minor, ".").concat(this.patch); + return e.some(this.prerelease) && (x += "-".concat(this.prerelease.join("."))), e.some(this.build) && (x += "+".concat(this.build.join("."))), x; + }, F.zero = new F(0, 0, 0), F; + }(); + e.Version = E; + function Q(F) { + var x = a.exec(F); + if (!!x) { + var X = x[1], $ = x[2], A = $ === void 0 ? "0" : $, y = x[3], V = y === void 0 ? "0" : y, L = x[4], P = L === void 0 ? "" : L, k = x[5], Y = k === void 0 ? "" : k; + if (!(P && !C.test(P)) && !(Y && !w.test(Y))) + return { major: parseInt(X, 10), minor: parseInt(A, 10), patch: parseInt(V, 10), prerelease: P, build: Y }; + } + } + function le(F, x) { + if (F === x) + return 0; + if (F.length === 0) + return x.length === 0 ? 0 : 1; + if (x.length === 0) + return -1; + for (var X = Math.min(F.length, x.length), $ = 0; $ < X; $++) { + var A = F[$], y = x[$]; + if (A !== y) { + var V = B.test(A), L = B.test(y); + if (V || L) { + if (V !== L) + return V ? -1 : 1; + var P = e.compareValues(+A, +y); + if (P) + return P; + } else { + var P = e.compareStringsCaseSensitive(A, y); + if (P) + return P; + } + } + } + return e.compareValues(F.length, x.length); + } + var N = function() { + function F(x) { + this._alternatives = x ? e.Debug.checkDefined(T(x), "Invalid range spec.") : e.emptyArray; + } + return F.tryParse = function(x) { + var X = T(x); + if (X) { + var $ = new F(""); + return $._alternatives = X, $; + } + }, F.prototype.test = function(x) { + return typeof x == "string" && (x = new E(x)), R(x, this._alternatives); + }, F.prototype.toString = function() { + return ve(this._alternatives); + }, F; + }(); + e.VersionRange = N; + var p = /\|\|/g, m = /\s+/g, G = /^([xX*0]|[1-9]\d*)(?:\.([xX*0]|[1-9]\d*)(?:\.([xX*0]|[1-9]\d*)(?:-([a-z0-9-.]+))?(?:\+([a-z0-9-.]+))?)?)?$/i, oe = /^\s*([a-z0-9-+.*]+)\s+-\s+([a-z0-9-+.*]+)\s*$/i, f = /^(~|\^|<|<=|>|>=|=)?\s*([a-z0-9-+.*]+)$/i; + function T(F) { + for (var x = [], X = 0, $ = e.trimString(F).split(p); X < $.length; X++) { + var A = $[X]; + if (!!A) { + var y = []; + A = e.trimString(A); + var V = oe.exec(A); + if (V) { + if (!b(V[1], V[2], y)) + return; + } else + for (var L = 0, P = A.split(m); L < P.length; L++) { + var k = P[L], Y = f.exec(e.trimString(k)); + if (!Y || !se(Y[1], Y[2], y)) + return; + } + x.push(y); + } + } + return x; + } + function K(F) { + var x = G.exec(F); + if (!!x) { + var X = x[1], $ = x[2], A = $ === void 0 ? "*" : $, y = x[3], V = y === void 0 ? "*" : y, L = x[4], P = x[5], k = new E(J(X) ? 0 : parseInt(X, 10), J(X) || J(A) ? 0 : parseInt(A, 10), J(X) || J(A) || J(V) ? 0 : parseInt(V, 10), L, P); + return { version: k, major: X, minor: A, patch: V }; + } + } + function b(F, x, X) { + var $ = K(F); + if (!$) + return false; + var A = K(x); + return A ? (J($.major) || X.push(ie(">=", $.version)), J(A.major) || X.push(J(A.minor) ? ie("<", A.version.increment("major")) : J(A.patch) ? ie("<", A.version.increment("minor")) : ie("<=", A.version)), true) : false; + } + function se(F, x, X) { + var $ = K(x); + if (!$) + return false; + var A = $.version, y = $.major, V = $.minor, L = $.patch; + if (J(y)) + (F === "<" || F === ">") && X.push(ie("<", E.zero)); + else + switch (F) { + case "~": + X.push(ie(">=", A)), X.push(ie("<", A.increment(J(V) ? "major" : "minor"))); + break; + case "^": + X.push(ie(">=", A)), X.push(ie("<", A.increment(A.major > 0 || J(V) ? "major" : A.minor > 0 || J(L) ? "minor" : "patch"))); + break; + case "<": + case ">=": + X.push(ie(F, A)); + break; + case "<=": + case ">": + X.push(J(V) ? ie(F === "<=" ? "<" : ">=", A.increment("major")) : J(L) ? ie(F === "<=" ? "<" : ">=", A.increment("minor")) : ie(F, A)); + break; + case "=": + case void 0: + J(V) || J(L) ? (X.push(ie(">=", A)), X.push(ie("<", A.increment(J(V) ? "major" : "minor")))) : X.push(ie("=", A)); + break; + default: + return false; + } + return true; + } + function J(F) { + return F === "*" || F === "x" || F === "X"; + } + function ie(F, x) { + return { operator: F, operand: x }; + } + function R(F, x) { + if (x.length === 0) + return true; + for (var X = 0, $ = x; X < $.length; X++) { + var A = $[X]; + if (q(F, A)) + return true; + } + return false; + } + function q(F, x) { + for (var X = 0, $ = x; X < $.length; X++) { + var A = $[X]; + if (!O(F, A.operator, A.operand)) + return false; + } + return true; + } + function O(F, x, X) { + var $ = F.compareTo(X); + switch (x) { + case "<": + return $ < 0; + case "<=": + return $ <= 0; + case ">": + return $ > 0; + case ">=": + return $ >= 0; + case "=": + return $ === 0; + default: + return e.Debug.assertNever(x); + } + } + function ve(F) { + return e.map(F, ee).join(" || ") || "*"; + } + function ee(F) { + return e.map(F, he).join(" "); + } + function he(F) { + return "".concat(F.operator).concat(F.operand); + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(le, N) { + return typeof le == "object" && typeof le.timeOrigin == "number" && typeof le.mark == "function" && typeof le.measure == "function" && typeof le.now == "function" && typeof N == "function"; + } + function C() { + if (typeof performance == "object" && typeof PerformanceObserver == "function" && a(performance, PerformanceObserver)) + return { shouldWriteNativeEvents: true, performance, PerformanceObserver }; + } + function w() { + } + var B = C() || void 0, E = B == null ? void 0 : B.performance; + function Q() { + return B; + } + e.tryGetNativePerformanceHooks = Q, e.timestamp = E ? function() { + return E.now(); + } : Date.now ? Date.now : function() { + return +new Date(); + }; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w, B; + function E(R, q, O, ve) { + return R ? Q(q, O, ve) : C.nullTimer; + } + C.createTimerIf = E; + function Q(R, q, O) { + var ve = 0; + return { enter: ee, exit: he }; + function ee() { + ++ve === 1 && oe(q); + } + function he() { + --ve === 0 ? (oe(O), f(R, q, O)) : ve < 0 && e.Debug.fail("enter/exit count does not match."); + } + } + C.createTimer = Q, C.nullTimer = { enter: e.noop, exit: e.noop }; + var le = false, N = e.timestamp(), p = new e.Map(), m = new e.Map(), G = new e.Map(); + function oe(R) { + var q; + if (le) { + var O = (q = m.get(R)) !== null && q !== void 0 ? q : 0; + m.set(R, O + 1), p.set(R, e.timestamp()), B == null || B.mark(R); + } + } + C.mark = oe; + function f(R, q, O) { + var ve, ee; + if (le) { + var he = (ve = O !== void 0 ? p.get(O) : void 0) !== null && ve !== void 0 ? ve : e.timestamp(), F = (ee = q !== void 0 ? p.get(q) : void 0) !== null && ee !== void 0 ? ee : N, x = G.get(R) || 0; + G.set(R, x + (he - F)), B == null || B.measure(R, q, O); + } + } + C.measure = f; + function T(R) { + return m.get(R) || 0; + } + C.getCount = T; + function K(R) { + return G.get(R) || 0; + } + C.getDuration = K; + function b(R) { + G.forEach(function(q, O) { + return R(O, q); + }); + } + C.forEachMeasure = b; + function se() { + return le; + } + C.isEnabled = se; + function J(R) { + var q; + return R === void 0 && (R = e.sys), le || (le = true, w || (w = e.tryGetNativePerformanceHooks()), w && (N = w.performance.timeOrigin, (w.shouldWriteNativeEvents || ((q = R == null ? void 0 : R.cpuProfilingEnabled) === null || q === void 0 ? void 0 : q.call(R)) || (R == null ? void 0 : R.debugMode)) && (B = w.performance))), true; + } + C.enable = J; + function ie() { + le && (p.clear(), m.clear(), G.clear(), B = void 0, le = false); + } + C.disable = ie; + })(a = e.performance || (e.performance = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a, C = { logEvent: e.noop, logErrEvent: e.noop, logPerfEvent: e.noop, logInfoEvent: e.noop, logStartCommand: e.noop, logStopCommand: e.noop, logStartUpdateProgram: e.noop, logStopUpdateProgram: e.noop, logStartUpdateGraph: e.noop, logStopUpdateGraph: e.noop, logStartResolveModule: e.noop, logStopResolveModule: e.noop, logStartParseSourceFile: e.noop, logStopParseSourceFile: e.noop, logStartReadFile: e.noop, logStopReadFile: e.noop, logStartBindFile: e.noop, logStopBindFile: e.noop, logStartScheduledOperation: e.noop, logStopScheduledOperation: e.noop }, w; + try { + var B = (a = Eu.env.TS_ETW_MODULE_PATH) !== null && a !== void 0 ? a : "./node_modules/@microsoft/typescript-etw"; + w = void 0; + } catch { + w = void 0; + } + e.perfLogger = w && w.logEvent ? w : C; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w, B = 0, E = 0, Q, le = [], N, p = []; + function m(he, F, x) { + if (e.Debug.assert(!e.tracing, "Tracing already started"), w === void 0) + try { + w = ex(); + } catch (V) { + throw new Error(`tracing requires having fs +(original error: `.concat(V.message || V, ")")); + } + Q = he, le.length = 0, N === void 0 && (N = e.combinePaths(F, "legend.json")), w.existsSync(F) || w.mkdirSync(F, { recursive: true }); + var X = Q === "build" ? ".".concat(Eu.pid, "-").concat(++B) : Q === "server" ? ".".concat(Eu.pid) : "", $ = e.combinePaths(F, "trace".concat(X, ".json")), A = e.combinePaths(F, "types".concat(X, ".json")); + p.push({ configFilePath: x, tracePath: $, typesPath: A }), E = w.openSync($, "w"), e.tracing = C; + var y = { cat: "__metadata", ph: "M", ts: 1e3 * e.timestamp(), pid: 1, tid: 1 }; + w.writeSync(E, `[ +` + [Ke({ name: "process_name", args: { name: "tsc" } }, y), Ke({ name: "thread_name", args: { name: "Main" } }, y), Ke(Ke({ name: "TracingStartedInBrowser" }, y), { cat: "disabled-by-default-devtools.timeline" })].map(function(V) { + return JSON.stringify(V); + }).join(`, +`)); + } + C.startTracing = m; + function G() { + e.Debug.assert(e.tracing, "Tracing is not in progress"), e.Debug.assert(!!le.length == (Q !== "server")), w.writeSync(E, ` +] +`), w.closeSync(E), e.tracing = void 0, le.length ? ve(le) : p[p.length - 1].typesPath = void 0; + } + C.stopTracing = G; + function oe(he) { + Q !== "server" && le.push(he); + } + C.recordType = oe; + var f; + (function(he) { + he.Parse = "parse", he.Program = "program", he.Bind = "bind", he.Check = "check", he.CheckTypes = "checkTypes", he.Emit = "emit", he.Session = "session"; + })(f = C.Phase || (C.Phase = {})); + function T(he, F, x) { + q("I", he, F, x, '"s":"g"'); + } + C.instant = T; + var K = []; + function b(he, F, x, X) { + X === void 0 && (X = false), X && q("B", he, F, x), K.push({ phase: he, name: F, args: x, time: 1e3 * e.timestamp(), separateBeginAndEnd: X }); + } + C.push = b; + function se() { + e.Debug.assert(K.length > 0), R(K.length - 1, 1e3 * e.timestamp()), K.length--; + } + C.pop = se; + function J() { + for (var he = 1e3 * e.timestamp(), F = K.length - 1; F >= 0; F--) + R(F, he); + K.length = 0; + } + C.popAll = J; + var ie = 1e3 * 10; + function R(he, F) { + var x = K[he], X = x.phase, $ = x.name, A = x.args, y = x.time, V = x.separateBeginAndEnd; + V ? q("E", X, $, A, void 0, F) : ie - y % ie <= F - y && q("X", X, $, A, '"dur":'.concat(F - y), y); + } + function q(he, F, x, X, $, A) { + A === void 0 && (A = 1e3 * e.timestamp()), !(Q === "server" && F === "checkTypes") && (e.performance.mark("beginTracing"), w.writeSync(E, `, +{"pid":1,"tid":1,"ph":"`.concat(he, '","cat":"').concat(F, '","ts":').concat(A, ',"name":"').concat(x, '"')), $ && w.writeSync(E, ",".concat($)), X && w.writeSync(E, ',"args":'.concat(JSON.stringify(X))), w.writeSync(E, "}"), e.performance.mark("endTracing"), e.performance.measure("Tracing", "beginTracing", "endTracing")); + } + function O(he) { + var F = e.getSourceFileOfNode(he); + return F ? { path: F.path, start: x(e.getLineAndCharacterOfPosition(F, he.pos)), end: x(e.getLineAndCharacterOfPosition(F, he.end)) } : void 0; + function x(X) { + return { line: X.line + 1, character: X.character + 1 }; + } + } + function ve(he) { + var F, x, X, $, A, y, V, L, P, k, Y, U, j, H, I, l, d, D, fe, g, ne, ue; + e.performance.mark("beginDumpTypes"); + var We = p[p.length - 1].typesPath, Fe = w.openSync(We, "w"), Z = new e.Map(); + w.writeSync(Fe, "["); + for (var Be = he.length, ge = 0; ge < Be; ge++) { + var Re = he[ge], ze = Re.objectFlags, Ee = (F = Re.aliasSymbol) !== null && F !== void 0 ? F : Re.symbol, He = void 0; + if (ze & 16 | Re.flags & 2944) + try { + He = (x = Re.checker) === null || x === void 0 ? void 0 : x.typeToString(Re); + } catch { + He = void 0; + } + var rr = {}; + if (Re.flags & 8388608) { + var Ie = Re; + rr = { indexedAccessObjectType: (X = Ie.objectType) === null || X === void 0 ? void 0 : X.id, indexedAccessIndexType: ($ = Ie.indexType) === null || $ === void 0 ? void 0 : $.id }; + } + var _e = {}; + if (ze & 4) { + var we = Re; + _e = { instantiatedType: (A = we.target) === null || A === void 0 ? void 0 : A.id, typeArguments: (y = we.resolvedTypeArguments) === null || y === void 0 ? void 0 : y.map(function(lr) { + return lr.id; + }), referenceLocation: O(we.node) }; + } + var de = {}; + if (Re.flags & 16777216) { + var ye = Re; + de = { conditionalCheckType: (V = ye.checkType) === null || V === void 0 ? void 0 : V.id, conditionalExtendsType: (L = ye.extendsType) === null || L === void 0 ? void 0 : L.id, conditionalTrueType: (k = (P = ye.resolvedTrueType) === null || P === void 0 ? void 0 : P.id) !== null && k !== void 0 ? k : -1, conditionalFalseType: (U = (Y = ye.resolvedFalseType) === null || Y === void 0 ? void 0 : Y.id) !== null && U !== void 0 ? U : -1 }; + } + var Ae = {}; + if (Re.flags & 33554432) { + var er = Re; + Ae = { substitutionBaseType: (j = er.baseType) === null || j === void 0 ? void 0 : j.id, substituteType: (H = er.substitute) === null || H === void 0 ? void 0 : H.id }; + } + var ir = {}; + if (ze & 1024) { + var Cr = Re; + ir = { reverseMappedSourceType: (I = Cr.source) === null || I === void 0 ? void 0 : I.id, reverseMappedMappedType: (l = Cr.mappedType) === null || l === void 0 ? void 0 : l.id, reverseMappedConstraintType: (d = Cr.constraintType) === null || d === void 0 ? void 0 : d.id }; + } + var Ye = {}; + if (ze & 256) { + var Br = Re; + Ye = { evolvingArrayElementType: Br.elementType.id, evolvingArrayFinalType: (D = Br.finalArrayType) === null || D === void 0 ? void 0 : D.id }; + } + var Er = void 0, Ne = Re.checker.getRecursionIdentity(Re); + Ne && (Er = Z.get(Ne), Er || (Er = Z.size, Z.set(Ne, Er))); + var n = Ke(Ke(Ke(Ke(Ke(Ke(Ke({ id: Re.id, intrinsicName: Re.intrinsicName, symbolName: (Ee == null ? void 0 : Ee.escapedName) && e.unescapeLeadingUnderscores(Ee.escapedName), recursionId: Er, isTuple: ze & 8 ? true : void 0, unionTypes: Re.flags & 1048576 ? (fe = Re.types) === null || fe === void 0 ? void 0 : fe.map(function(lr) { + return lr.id; + }) : void 0, intersectionTypes: Re.flags & 2097152 ? Re.types.map(function(lr) { + return lr.id; + }) : void 0, aliasTypeArguments: (g = Re.aliasTypeArguments) === null || g === void 0 ? void 0 : g.map(function(lr) { + return lr.id; + }), keyofType: Re.flags & 4194304 ? (ne = Re.type) === null || ne === void 0 ? void 0 : ne.id : void 0 }, rr), _e), de), Ae), ir), Ye), { destructuringPattern: O(Re.pattern), firstDeclaration: O((ue = Ee == null ? void 0 : Ee.declarations) === null || ue === void 0 ? void 0 : ue[0]), flags: e.Debug.formatTypeFlags(Re.flags).split("|"), display: He }); + w.writeSync(Fe, JSON.stringify(n)), ge < Be - 1 && w.writeSync(Fe, `, +`); + } + w.writeSync(Fe, `] +`), w.closeSync(Fe), e.performance.mark("endDumpTypes"), e.performance.measure("Dump types", "beginDumpTypes", "endDumpTypes"); + } + function ee() { + !N || w.writeFileSync(N, JSON.stringify(p)); + } + C.dumpLegend = ee; + })(a || (a = {})), e.startTracing = a.startTracing, e.dumpTracingLegend = a.dumpLegend; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(n) { + n[n.Unknown = 0] = "Unknown", n[n.EndOfFileToken = 1] = "EndOfFileToken", n[n.SingleLineCommentTrivia = 2] = "SingleLineCommentTrivia", n[n.MultiLineCommentTrivia = 3] = "MultiLineCommentTrivia", n[n.NewLineTrivia = 4] = "NewLineTrivia", n[n.WhitespaceTrivia = 5] = "WhitespaceTrivia", n[n.ShebangTrivia = 6] = "ShebangTrivia", n[n.ConflictMarkerTrivia = 7] = "ConflictMarkerTrivia", n[n.NumericLiteral = 8] = "NumericLiteral", n[n.BigIntLiteral = 9] = "BigIntLiteral", n[n.StringLiteral = 10] = "StringLiteral", n[n.JsxText = 11] = "JsxText", n[n.JsxTextAllWhiteSpaces = 12] = "JsxTextAllWhiteSpaces", n[n.RegularExpressionLiteral = 13] = "RegularExpressionLiteral", n[n.NoSubstitutionTemplateLiteral = 14] = "NoSubstitutionTemplateLiteral", n[n.TemplateHead = 15] = "TemplateHead", n[n.TemplateMiddle = 16] = "TemplateMiddle", n[n.TemplateTail = 17] = "TemplateTail", n[n.OpenBraceToken = 18] = "OpenBraceToken", n[n.CloseBraceToken = 19] = "CloseBraceToken", n[n.OpenParenToken = 20] = "OpenParenToken", n[n.CloseParenToken = 21] = "CloseParenToken", n[n.OpenBracketToken = 22] = "OpenBracketToken", n[n.CloseBracketToken = 23] = "CloseBracketToken", n[n.DotToken = 24] = "DotToken", n[n.DotDotDotToken = 25] = "DotDotDotToken", n[n.SemicolonToken = 26] = "SemicolonToken", n[n.CommaToken = 27] = "CommaToken", n[n.QuestionDotToken = 28] = "QuestionDotToken", n[n.LessThanToken = 29] = "LessThanToken", n[n.LessThanSlashToken = 30] = "LessThanSlashToken", n[n.GreaterThanToken = 31] = "GreaterThanToken", n[n.LessThanEqualsToken = 32] = "LessThanEqualsToken", n[n.GreaterThanEqualsToken = 33] = "GreaterThanEqualsToken", n[n.EqualsEqualsToken = 34] = "EqualsEqualsToken", n[n.ExclamationEqualsToken = 35] = "ExclamationEqualsToken", n[n.EqualsEqualsEqualsToken = 36] = "EqualsEqualsEqualsToken", n[n.ExclamationEqualsEqualsToken = 37] = "ExclamationEqualsEqualsToken", n[n.EqualsGreaterThanToken = 38] = "EqualsGreaterThanToken", n[n.PlusToken = 39] = "PlusToken", n[n.MinusToken = 40] = "MinusToken", n[n.AsteriskToken = 41] = "AsteriskToken", n[n.AsteriskAsteriskToken = 42] = "AsteriskAsteriskToken", n[n.SlashToken = 43] = "SlashToken", n[n.PercentToken = 44] = "PercentToken", n[n.PlusPlusToken = 45] = "PlusPlusToken", n[n.MinusMinusToken = 46] = "MinusMinusToken", n[n.LessThanLessThanToken = 47] = "LessThanLessThanToken", n[n.GreaterThanGreaterThanToken = 48] = "GreaterThanGreaterThanToken", n[n.GreaterThanGreaterThanGreaterThanToken = 49] = "GreaterThanGreaterThanGreaterThanToken", n[n.AmpersandToken = 50] = "AmpersandToken", n[n.BarToken = 51] = "BarToken", n[n.CaretToken = 52] = "CaretToken", n[n.ExclamationToken = 53] = "ExclamationToken", n[n.TildeToken = 54] = "TildeToken", n[n.AmpersandAmpersandToken = 55] = "AmpersandAmpersandToken", n[n.BarBarToken = 56] = "BarBarToken", n[n.QuestionToken = 57] = "QuestionToken", n[n.ColonToken = 58] = "ColonToken", n[n.AtToken = 59] = "AtToken", n[n.QuestionQuestionToken = 60] = "QuestionQuestionToken", n[n.BacktickToken = 61] = "BacktickToken", n[n.HashToken = 62] = "HashToken", n[n.EqualsToken = 63] = "EqualsToken", n[n.PlusEqualsToken = 64] = "PlusEqualsToken", n[n.MinusEqualsToken = 65] = "MinusEqualsToken", n[n.AsteriskEqualsToken = 66] = "AsteriskEqualsToken", n[n.AsteriskAsteriskEqualsToken = 67] = "AsteriskAsteriskEqualsToken", n[n.SlashEqualsToken = 68] = "SlashEqualsToken", n[n.PercentEqualsToken = 69] = "PercentEqualsToken", n[n.LessThanLessThanEqualsToken = 70] = "LessThanLessThanEqualsToken", n[n.GreaterThanGreaterThanEqualsToken = 71] = "GreaterThanGreaterThanEqualsToken", n[n.GreaterThanGreaterThanGreaterThanEqualsToken = 72] = "GreaterThanGreaterThanGreaterThanEqualsToken", n[n.AmpersandEqualsToken = 73] = "AmpersandEqualsToken", n[n.BarEqualsToken = 74] = "BarEqualsToken", n[n.BarBarEqualsToken = 75] = "BarBarEqualsToken", n[n.AmpersandAmpersandEqualsToken = 76] = "AmpersandAmpersandEqualsToken", n[n.QuestionQuestionEqualsToken = 77] = "QuestionQuestionEqualsToken", n[n.CaretEqualsToken = 78] = "CaretEqualsToken", n[n.Identifier = 79] = "Identifier", n[n.PrivateIdentifier = 80] = "PrivateIdentifier", n[n.BreakKeyword = 81] = "BreakKeyword", n[n.CaseKeyword = 82] = "CaseKeyword", n[n.CatchKeyword = 83] = "CatchKeyword", n[n.ClassKeyword = 84] = "ClassKeyword", n[n.ConstKeyword = 85] = "ConstKeyword", n[n.ContinueKeyword = 86] = "ContinueKeyword", n[n.DebuggerKeyword = 87] = "DebuggerKeyword", n[n.DefaultKeyword = 88] = "DefaultKeyword", n[n.DeleteKeyword = 89] = "DeleteKeyword", n[n.DoKeyword = 90] = "DoKeyword", n[n.ElseKeyword = 91] = "ElseKeyword", n[n.EnumKeyword = 92] = "EnumKeyword", n[n.ExportKeyword = 93] = "ExportKeyword", n[n.ExtendsKeyword = 94] = "ExtendsKeyword", n[n.FalseKeyword = 95] = "FalseKeyword", n[n.FinallyKeyword = 96] = "FinallyKeyword", n[n.ForKeyword = 97] = "ForKeyword", n[n.FunctionKeyword = 98] = "FunctionKeyword", n[n.IfKeyword = 99] = "IfKeyword", n[n.ImportKeyword = 100] = "ImportKeyword", n[n.InKeyword = 101] = "InKeyword", n[n.InstanceOfKeyword = 102] = "InstanceOfKeyword", n[n.NewKeyword = 103] = "NewKeyword", n[n.NullKeyword = 104] = "NullKeyword", n[n.ReturnKeyword = 105] = "ReturnKeyword", n[n.SuperKeyword = 106] = "SuperKeyword", n[n.SwitchKeyword = 107] = "SwitchKeyword", n[n.ThisKeyword = 108] = "ThisKeyword", n[n.ThrowKeyword = 109] = "ThrowKeyword", n[n.TrueKeyword = 110] = "TrueKeyword", n[n.TryKeyword = 111] = "TryKeyword", n[n.TypeOfKeyword = 112] = "TypeOfKeyword", n[n.VarKeyword = 113] = "VarKeyword", n[n.VoidKeyword = 114] = "VoidKeyword", n[n.WhileKeyword = 115] = "WhileKeyword", n[n.WithKeyword = 116] = "WithKeyword", n[n.ImplementsKeyword = 117] = "ImplementsKeyword", n[n.InterfaceKeyword = 118] = "InterfaceKeyword", n[n.LetKeyword = 119] = "LetKeyword", n[n.PackageKeyword = 120] = "PackageKeyword", n[n.PrivateKeyword = 121] = "PrivateKeyword", n[n.ProtectedKeyword = 122] = "ProtectedKeyword", n[n.PublicKeyword = 123] = "PublicKeyword", n[n.StaticKeyword = 124] = "StaticKeyword", n[n.YieldKeyword = 125] = "YieldKeyword", n[n.AbstractKeyword = 126] = "AbstractKeyword", n[n.AsKeyword = 127] = "AsKeyword", n[n.AssertsKeyword = 128] = "AssertsKeyword", n[n.AssertKeyword = 129] = "AssertKeyword", n[n.AnyKeyword = 130] = "AnyKeyword", n[n.AsyncKeyword = 131] = "AsyncKeyword", n[n.AwaitKeyword = 132] = "AwaitKeyword", n[n.BooleanKeyword = 133] = "BooleanKeyword", n[n.ConstructorKeyword = 134] = "ConstructorKeyword", n[n.DeclareKeyword = 135] = "DeclareKeyword", n[n.GetKeyword = 136] = "GetKeyword", n[n.InferKeyword = 137] = "InferKeyword", n[n.IntrinsicKeyword = 138] = "IntrinsicKeyword", n[n.IsKeyword = 139] = "IsKeyword", n[n.KeyOfKeyword = 140] = "KeyOfKeyword", n[n.ModuleKeyword = 141] = "ModuleKeyword", n[n.NamespaceKeyword = 142] = "NamespaceKeyword", n[n.NeverKeyword = 143] = "NeverKeyword", n[n.OutKeyword = 144] = "OutKeyword", n[n.ReadonlyKeyword = 145] = "ReadonlyKeyword", n[n.RequireKeyword = 146] = "RequireKeyword", n[n.NumberKeyword = 147] = "NumberKeyword", n[n.ObjectKeyword = 148] = "ObjectKeyword", n[n.SetKeyword = 149] = "SetKeyword", n[n.StringKeyword = 150] = "StringKeyword", n[n.SymbolKeyword = 151] = "SymbolKeyword", n[n.TypeKeyword = 152] = "TypeKeyword", n[n.UndefinedKeyword = 153] = "UndefinedKeyword", n[n.UniqueKeyword = 154] = "UniqueKeyword", n[n.UnknownKeyword = 155] = "UnknownKeyword", n[n.FromKeyword = 156] = "FromKeyword", n[n.GlobalKeyword = 157] = "GlobalKeyword", n[n.BigIntKeyword = 158] = "BigIntKeyword", n[n.OverrideKeyword = 159] = "OverrideKeyword", n[n.OfKeyword = 160] = "OfKeyword", n[n.QualifiedName = 161] = "QualifiedName", n[n.ComputedPropertyName = 162] = "ComputedPropertyName", n[n.TypeParameter = 163] = "TypeParameter", n[n.Parameter = 164] = "Parameter", n[n.Decorator = 165] = "Decorator", n[n.PropertySignature = 166] = "PropertySignature", n[n.PropertyDeclaration = 167] = "PropertyDeclaration", n[n.MethodSignature = 168] = "MethodSignature", n[n.MethodDeclaration = 169] = "MethodDeclaration", n[n.ClassStaticBlockDeclaration = 170] = "ClassStaticBlockDeclaration", n[n.Constructor = 171] = "Constructor", n[n.GetAccessor = 172] = "GetAccessor", n[n.SetAccessor = 173] = "SetAccessor", n[n.CallSignature = 174] = "CallSignature", n[n.ConstructSignature = 175] = "ConstructSignature", n[n.IndexSignature = 176] = "IndexSignature", n[n.TypePredicate = 177] = "TypePredicate", n[n.TypeReference = 178] = "TypeReference", n[n.FunctionType = 179] = "FunctionType", n[n.ConstructorType = 180] = "ConstructorType", n[n.TypeQuery = 181] = "TypeQuery", n[n.TypeLiteral = 182] = "TypeLiteral", n[n.ArrayType = 183] = "ArrayType", n[n.TupleType = 184] = "TupleType", n[n.OptionalType = 185] = "OptionalType", n[n.RestType = 186] = "RestType", n[n.UnionType = 187] = "UnionType", n[n.IntersectionType = 188] = "IntersectionType", n[n.ConditionalType = 189] = "ConditionalType", n[n.InferType = 190] = "InferType", n[n.ParenthesizedType = 191] = "ParenthesizedType", n[n.ThisType = 192] = "ThisType", n[n.TypeOperator = 193] = "TypeOperator", n[n.IndexedAccessType = 194] = "IndexedAccessType", n[n.MappedType = 195] = "MappedType", n[n.LiteralType = 196] = "LiteralType", n[n.NamedTupleMember = 197] = "NamedTupleMember", n[n.TemplateLiteralType = 198] = "TemplateLiteralType", n[n.TemplateLiteralTypeSpan = 199] = "TemplateLiteralTypeSpan", n[n.ImportType = 200] = "ImportType", n[n.ObjectBindingPattern = 201] = "ObjectBindingPattern", n[n.ArrayBindingPattern = 202] = "ArrayBindingPattern", n[n.BindingElement = 203] = "BindingElement", n[n.ArrayLiteralExpression = 204] = "ArrayLiteralExpression", n[n.ObjectLiteralExpression = 205] = "ObjectLiteralExpression", n[n.PropertyAccessExpression = 206] = "PropertyAccessExpression", n[n.ElementAccessExpression = 207] = "ElementAccessExpression", n[n.CallExpression = 208] = "CallExpression", n[n.NewExpression = 209] = "NewExpression", n[n.TaggedTemplateExpression = 210] = "TaggedTemplateExpression", n[n.TypeAssertionExpression = 211] = "TypeAssertionExpression", n[n.ParenthesizedExpression = 212] = "ParenthesizedExpression", n[n.FunctionExpression = 213] = "FunctionExpression", n[n.ArrowFunction = 214] = "ArrowFunction", n[n.DeleteExpression = 215] = "DeleteExpression", n[n.TypeOfExpression = 216] = "TypeOfExpression", n[n.VoidExpression = 217] = "VoidExpression", n[n.AwaitExpression = 218] = "AwaitExpression", n[n.PrefixUnaryExpression = 219] = "PrefixUnaryExpression", n[n.PostfixUnaryExpression = 220] = "PostfixUnaryExpression", n[n.BinaryExpression = 221] = "BinaryExpression", n[n.ConditionalExpression = 222] = "ConditionalExpression", n[n.TemplateExpression = 223] = "TemplateExpression", n[n.YieldExpression = 224] = "YieldExpression", n[n.SpreadElement = 225] = "SpreadElement", n[n.ClassExpression = 226] = "ClassExpression", n[n.OmittedExpression = 227] = "OmittedExpression", n[n.ExpressionWithTypeArguments = 228] = "ExpressionWithTypeArguments", n[n.AsExpression = 229] = "AsExpression", n[n.NonNullExpression = 230] = "NonNullExpression", n[n.MetaProperty = 231] = "MetaProperty", n[n.SyntheticExpression = 232] = "SyntheticExpression", n[n.TemplateSpan = 233] = "TemplateSpan", n[n.SemicolonClassElement = 234] = "SemicolonClassElement", n[n.Block = 235] = "Block", n[n.EmptyStatement = 236] = "EmptyStatement", n[n.VariableStatement = 237] = "VariableStatement", n[n.ExpressionStatement = 238] = "ExpressionStatement", n[n.IfStatement = 239] = "IfStatement", n[n.DoStatement = 240] = "DoStatement", n[n.WhileStatement = 241] = "WhileStatement", n[n.ForStatement = 242] = "ForStatement", n[n.ForInStatement = 243] = "ForInStatement", n[n.ForOfStatement = 244] = "ForOfStatement", n[n.ContinueStatement = 245] = "ContinueStatement", n[n.BreakStatement = 246] = "BreakStatement", n[n.ReturnStatement = 247] = "ReturnStatement", n[n.WithStatement = 248] = "WithStatement", n[n.SwitchStatement = 249] = "SwitchStatement", n[n.LabeledStatement = 250] = "LabeledStatement", n[n.ThrowStatement = 251] = "ThrowStatement", n[n.TryStatement = 252] = "TryStatement", n[n.DebuggerStatement = 253] = "DebuggerStatement", n[n.VariableDeclaration = 254] = "VariableDeclaration", n[n.VariableDeclarationList = 255] = "VariableDeclarationList", n[n.FunctionDeclaration = 256] = "FunctionDeclaration", n[n.ClassDeclaration = 257] = "ClassDeclaration", n[n.InterfaceDeclaration = 258] = "InterfaceDeclaration", n[n.TypeAliasDeclaration = 259] = "TypeAliasDeclaration", n[n.EnumDeclaration = 260] = "EnumDeclaration", n[n.ModuleDeclaration = 261] = "ModuleDeclaration", n[n.ModuleBlock = 262] = "ModuleBlock", n[n.CaseBlock = 263] = "CaseBlock", n[n.NamespaceExportDeclaration = 264] = "NamespaceExportDeclaration", n[n.ImportEqualsDeclaration = 265] = "ImportEqualsDeclaration", n[n.ImportDeclaration = 266] = "ImportDeclaration", n[n.ImportClause = 267] = "ImportClause", n[n.NamespaceImport = 268] = "NamespaceImport", n[n.NamedImports = 269] = "NamedImports", n[n.ImportSpecifier = 270] = "ImportSpecifier", n[n.ExportAssignment = 271] = "ExportAssignment", n[n.ExportDeclaration = 272] = "ExportDeclaration", n[n.NamedExports = 273] = "NamedExports", n[n.NamespaceExport = 274] = "NamespaceExport", n[n.ExportSpecifier = 275] = "ExportSpecifier", n[n.MissingDeclaration = 276] = "MissingDeclaration", n[n.ExternalModuleReference = 277] = "ExternalModuleReference", n[n.JsxElement = 278] = "JsxElement", n[n.JsxSelfClosingElement = 279] = "JsxSelfClosingElement", n[n.JsxOpeningElement = 280] = "JsxOpeningElement", n[n.JsxClosingElement = 281] = "JsxClosingElement", n[n.JsxFragment = 282] = "JsxFragment", n[n.JsxOpeningFragment = 283] = "JsxOpeningFragment", n[n.JsxClosingFragment = 284] = "JsxClosingFragment", n[n.JsxAttribute = 285] = "JsxAttribute", n[n.JsxAttributes = 286] = "JsxAttributes", n[n.JsxSpreadAttribute = 287] = "JsxSpreadAttribute", n[n.JsxExpression = 288] = "JsxExpression", n[n.CaseClause = 289] = "CaseClause", n[n.DefaultClause = 290] = "DefaultClause", n[n.HeritageClause = 291] = "HeritageClause", n[n.CatchClause = 292] = "CatchClause", n[n.AssertClause = 293] = "AssertClause", n[n.AssertEntry = 294] = "AssertEntry", n[n.ImportTypeAssertionContainer = 295] = "ImportTypeAssertionContainer", n[n.PropertyAssignment = 296] = "PropertyAssignment", n[n.ShorthandPropertyAssignment = 297] = "ShorthandPropertyAssignment", n[n.SpreadAssignment = 298] = "SpreadAssignment", n[n.EnumMember = 299] = "EnumMember", n[n.UnparsedPrologue = 300] = "UnparsedPrologue", n[n.UnparsedPrepend = 301] = "UnparsedPrepend", n[n.UnparsedText = 302] = "UnparsedText", n[n.UnparsedInternalText = 303] = "UnparsedInternalText", n[n.UnparsedSyntheticReference = 304] = "UnparsedSyntheticReference", n[n.SourceFile = 305] = "SourceFile", n[n.Bundle = 306] = "Bundle", n[n.UnparsedSource = 307] = "UnparsedSource", n[n.InputFiles = 308] = "InputFiles", n[n.JSDocTypeExpression = 309] = "JSDocTypeExpression", n[n.JSDocNameReference = 310] = "JSDocNameReference", n[n.JSDocMemberName = 311] = "JSDocMemberName", n[n.JSDocAllType = 312] = "JSDocAllType", n[n.JSDocUnknownType = 313] = "JSDocUnknownType", n[n.JSDocNullableType = 314] = "JSDocNullableType", n[n.JSDocNonNullableType = 315] = "JSDocNonNullableType", n[n.JSDocOptionalType = 316] = "JSDocOptionalType", n[n.JSDocFunctionType = 317] = "JSDocFunctionType", n[n.JSDocVariadicType = 318] = "JSDocVariadicType", n[n.JSDocNamepathType = 319] = "JSDocNamepathType", n[n.JSDocComment = 320] = "JSDocComment", n[n.JSDocText = 321] = "JSDocText", n[n.JSDocTypeLiteral = 322] = "JSDocTypeLiteral", n[n.JSDocSignature = 323] = "JSDocSignature", n[n.JSDocLink = 324] = "JSDocLink", n[n.JSDocLinkCode = 325] = "JSDocLinkCode", n[n.JSDocLinkPlain = 326] = "JSDocLinkPlain", n[n.JSDocTag = 327] = "JSDocTag", n[n.JSDocAugmentsTag = 328] = "JSDocAugmentsTag", n[n.JSDocImplementsTag = 329] = "JSDocImplementsTag", n[n.JSDocAuthorTag = 330] = "JSDocAuthorTag", n[n.JSDocDeprecatedTag = 331] = "JSDocDeprecatedTag", n[n.JSDocClassTag = 332] = "JSDocClassTag", n[n.JSDocPublicTag = 333] = "JSDocPublicTag", n[n.JSDocPrivateTag = 334] = "JSDocPrivateTag", n[n.JSDocProtectedTag = 335] = "JSDocProtectedTag", n[n.JSDocReadonlyTag = 336] = "JSDocReadonlyTag", n[n.JSDocOverrideTag = 337] = "JSDocOverrideTag", n[n.JSDocCallbackTag = 338] = "JSDocCallbackTag", n[n.JSDocEnumTag = 339] = "JSDocEnumTag", n[n.JSDocParameterTag = 340] = "JSDocParameterTag", n[n.JSDocReturnTag = 341] = "JSDocReturnTag", n[n.JSDocThisTag = 342] = "JSDocThisTag", n[n.JSDocTypeTag = 343] = "JSDocTypeTag", n[n.JSDocTemplateTag = 344] = "JSDocTemplateTag", n[n.JSDocTypedefTag = 345] = "JSDocTypedefTag", n[n.JSDocSeeTag = 346] = "JSDocSeeTag", n[n.JSDocPropertyTag = 347] = "JSDocPropertyTag", n[n.SyntaxList = 348] = "SyntaxList", n[n.NotEmittedStatement = 349] = "NotEmittedStatement", n[n.PartiallyEmittedExpression = 350] = "PartiallyEmittedExpression", n[n.CommaListExpression = 351] = "CommaListExpression", n[n.MergeDeclarationMarker = 352] = "MergeDeclarationMarker", n[n.EndOfDeclarationMarker = 353] = "EndOfDeclarationMarker", n[n.SyntheticReferenceExpression = 354] = "SyntheticReferenceExpression", n[n.Count = 355] = "Count", n[n.FirstAssignment = 63] = "FirstAssignment", n[n.LastAssignment = 78] = "LastAssignment", n[n.FirstCompoundAssignment = 64] = "FirstCompoundAssignment", n[n.LastCompoundAssignment = 78] = "LastCompoundAssignment", n[n.FirstReservedWord = 81] = "FirstReservedWord", n[n.LastReservedWord = 116] = "LastReservedWord", n[n.FirstKeyword = 81] = "FirstKeyword", n[n.LastKeyword = 160] = "LastKeyword", n[n.FirstFutureReservedWord = 117] = "FirstFutureReservedWord", n[n.LastFutureReservedWord = 125] = "LastFutureReservedWord", n[n.FirstTypeNode = 177] = "FirstTypeNode", n[n.LastTypeNode = 200] = "LastTypeNode", n[n.FirstPunctuation = 18] = "FirstPunctuation", n[n.LastPunctuation = 78] = "LastPunctuation", n[n.FirstToken = 0] = "FirstToken", n[n.LastToken = 160] = "LastToken", n[n.FirstTriviaToken = 2] = "FirstTriviaToken", n[n.LastTriviaToken = 7] = "LastTriviaToken", n[n.FirstLiteralToken = 8] = "FirstLiteralToken", n[n.LastLiteralToken = 14] = "LastLiteralToken", n[n.FirstTemplateToken = 14] = "FirstTemplateToken", n[n.LastTemplateToken = 17] = "LastTemplateToken", n[n.FirstBinaryOperator = 29] = "FirstBinaryOperator", n[n.LastBinaryOperator = 78] = "LastBinaryOperator", n[n.FirstStatement = 237] = "FirstStatement", n[n.LastStatement = 253] = "LastStatement", n[n.FirstNode = 161] = "FirstNode", n[n.FirstJSDocNode = 309] = "FirstJSDocNode", n[n.LastJSDocNode = 347] = "LastJSDocNode", n[n.FirstJSDocTagNode = 327] = "FirstJSDocTagNode", n[n.LastJSDocTagNode = 347] = "LastJSDocTagNode", n[n.FirstContextualKeyword = 126] = "FirstContextualKeyword", n[n.LastContextualKeyword = 160] = "LastContextualKeyword", n[n.JSDoc = 320] = "JSDoc"; + })(a = e.SyntaxKind || (e.SyntaxKind = {})); + var C; + (function(n) { + n[n.None = 0] = "None", n[n.Let = 1] = "Let", n[n.Const = 2] = "Const", n[n.NestedNamespace = 4] = "NestedNamespace", n[n.Synthesized = 8] = "Synthesized", n[n.Namespace = 16] = "Namespace", n[n.OptionalChain = 32] = "OptionalChain", n[n.ExportContext = 64] = "ExportContext", n[n.ContainsThis = 128] = "ContainsThis", n[n.HasImplicitReturn = 256] = "HasImplicitReturn", n[n.HasExplicitReturn = 512] = "HasExplicitReturn", n[n.GlobalAugmentation = 1024] = "GlobalAugmentation", n[n.HasAsyncFunctions = 2048] = "HasAsyncFunctions", n[n.DisallowInContext = 4096] = "DisallowInContext", n[n.YieldContext = 8192] = "YieldContext", n[n.DecoratorContext = 16384] = "DecoratorContext", n[n.AwaitContext = 32768] = "AwaitContext", n[n.DisallowConditionalTypesContext = 65536] = "DisallowConditionalTypesContext", n[n.ThisNodeHasError = 131072] = "ThisNodeHasError", n[n.JavaScriptFile = 262144] = "JavaScriptFile", n[n.ThisNodeOrAnySubNodesHasError = 524288] = "ThisNodeOrAnySubNodesHasError", n[n.HasAggregatedChildData = 1048576] = "HasAggregatedChildData", n[n.PossiblyContainsDynamicImport = 2097152] = "PossiblyContainsDynamicImport", n[n.PossiblyContainsImportMeta = 4194304] = "PossiblyContainsImportMeta", n[n.JSDoc = 8388608] = "JSDoc", n[n.Ambient = 16777216] = "Ambient", n[n.InWithStatement = 33554432] = "InWithStatement", n[n.JsonFile = 67108864] = "JsonFile", n[n.TypeCached = 134217728] = "TypeCached", n[n.Deprecated = 268435456] = "Deprecated", n[n.BlockScoped = 3] = "BlockScoped", n[n.ReachabilityCheckFlags = 768] = "ReachabilityCheckFlags", n[n.ReachabilityAndEmitFlags = 2816] = "ReachabilityAndEmitFlags", n[n.ContextFlags = 50720768] = "ContextFlags", n[n.TypeExcludesFlags = 40960] = "TypeExcludesFlags", n[n.PermanentlySetIncrementalFlags = 6291456] = "PermanentlySetIncrementalFlags"; + })(C = e.NodeFlags || (e.NodeFlags = {})); + var w; + (function(n) { + n[n.None = 0] = "None", n[n.Export = 1] = "Export", n[n.Ambient = 2] = "Ambient", n[n.Public = 4] = "Public", n[n.Private = 8] = "Private", n[n.Protected = 16] = "Protected", n[n.Static = 32] = "Static", n[n.Readonly = 64] = "Readonly", n[n.Abstract = 128] = "Abstract", n[n.Async = 256] = "Async", n[n.Default = 512] = "Default", n[n.Const = 2048] = "Const", n[n.HasComputedJSDocModifiers = 4096] = "HasComputedJSDocModifiers", n[n.Deprecated = 8192] = "Deprecated", n[n.Override = 16384] = "Override", n[n.In = 32768] = "In", n[n.Out = 65536] = "Out", n[n.HasComputedFlags = 536870912] = "HasComputedFlags", n[n.AccessibilityModifier = 28] = "AccessibilityModifier", n[n.ParameterPropertyModifier = 16476] = "ParameterPropertyModifier", n[n.NonPublicAccessibilityModifier = 24] = "NonPublicAccessibilityModifier", n[n.TypeScriptModifier = 116958] = "TypeScriptModifier", n[n.ExportDefault = 513] = "ExportDefault", n[n.All = 125951] = "All"; + })(w = e.ModifierFlags || (e.ModifierFlags = {})); + var B; + (function(n) { + n[n.None = 0] = "None", n[n.IntrinsicNamedElement = 1] = "IntrinsicNamedElement", n[n.IntrinsicIndexedElement = 2] = "IntrinsicIndexedElement", n[n.IntrinsicElement = 3] = "IntrinsicElement"; + })(B = e.JsxFlags || (e.JsxFlags = {})); + var E; + (function(n) { + n[n.Succeeded = 1] = "Succeeded", n[n.Failed = 2] = "Failed", n[n.Reported = 4] = "Reported", n[n.ReportsUnmeasurable = 8] = "ReportsUnmeasurable", n[n.ReportsUnreliable = 16] = "ReportsUnreliable", n[n.ReportsMask = 24] = "ReportsMask"; + })(E = e.RelationComparisonResult || (e.RelationComparisonResult = {})); + var Q; + (function(n) { + n[n.None = 0] = "None", n[n.Auto = 1] = "Auto", n[n.Loop = 2] = "Loop", n[n.Unique = 3] = "Unique", n[n.Node = 4] = "Node", n[n.KindMask = 7] = "KindMask", n[n.ReservedInNestedScopes = 8] = "ReservedInNestedScopes", n[n.Optimistic = 16] = "Optimistic", n[n.FileLevel = 32] = "FileLevel", n[n.AllowNameSubstitution = 64] = "AllowNameSubstitution"; + })(Q = e.GeneratedIdentifierFlags || (e.GeneratedIdentifierFlags = {})); + var le; + (function(n) { + n[n.None = 0] = "None", n[n.PrecedingLineBreak = 1] = "PrecedingLineBreak", n[n.PrecedingJSDocComment = 2] = "PrecedingJSDocComment", n[n.Unterminated = 4] = "Unterminated", n[n.ExtendedUnicodeEscape = 8] = "ExtendedUnicodeEscape", n[n.Scientific = 16] = "Scientific", n[n.Octal = 32] = "Octal", n[n.HexSpecifier = 64] = "HexSpecifier", n[n.BinarySpecifier = 128] = "BinarySpecifier", n[n.OctalSpecifier = 256] = "OctalSpecifier", n[n.ContainsSeparator = 512] = "ContainsSeparator", n[n.UnicodeEscape = 1024] = "UnicodeEscape", n[n.ContainsInvalidEscape = 2048] = "ContainsInvalidEscape", n[n.BinaryOrOctalSpecifier = 384] = "BinaryOrOctalSpecifier", n[n.NumericLiteralFlags = 1008] = "NumericLiteralFlags", n[n.TemplateLiteralLikeFlags = 2048] = "TemplateLiteralLikeFlags"; + })(le = e.TokenFlags || (e.TokenFlags = {})); + var N; + (function(n) { + n[n.Unreachable = 1] = "Unreachable", n[n.Start = 2] = "Start", n[n.BranchLabel = 4] = "BranchLabel", n[n.LoopLabel = 8] = "LoopLabel", n[n.Assignment = 16] = "Assignment", n[n.TrueCondition = 32] = "TrueCondition", n[n.FalseCondition = 64] = "FalseCondition", n[n.SwitchClause = 128] = "SwitchClause", n[n.ArrayMutation = 256] = "ArrayMutation", n[n.Call = 512] = "Call", n[n.ReduceLabel = 1024] = "ReduceLabel", n[n.Referenced = 2048] = "Referenced", n[n.Shared = 4096] = "Shared", n[n.Label = 12] = "Label", n[n.Condition = 96] = "Condition"; + })(N = e.FlowFlags || (e.FlowFlags = {})); + var p; + (function(n) { + n[n.ExpectError = 0] = "ExpectError", n[n.Ignore = 1] = "Ignore"; + })(p = e.CommentDirectiveType || (e.CommentDirectiveType = {})); + var m = function() { + function n() { + } + return n; + }(); + e.OperationCanceledException = m; + var G; + (function(n) { + n[n.RootFile = 0] = "RootFile", n[n.SourceFromProjectReference = 1] = "SourceFromProjectReference", n[n.OutputFromProjectReference = 2] = "OutputFromProjectReference", n[n.Import = 3] = "Import", n[n.ReferenceFile = 4] = "ReferenceFile", n[n.TypeReferenceDirective = 5] = "TypeReferenceDirective", n[n.LibFile = 6] = "LibFile", n[n.LibReferenceDirective = 7] = "LibReferenceDirective", n[n.AutomaticTypeDirectiveFile = 8] = "AutomaticTypeDirectiveFile"; + })(G = e.FileIncludeKind || (e.FileIncludeKind = {})); + var oe; + (function(n) { + n[n.FilePreprocessingReferencedDiagnostic = 0] = "FilePreprocessingReferencedDiagnostic", n[n.FilePreprocessingFileExplainingDiagnostic = 1] = "FilePreprocessingFileExplainingDiagnostic"; + })(oe = e.FilePreprocessingDiagnosticsKind || (e.FilePreprocessingDiagnosticsKind = {})); + var f; + (function(n) { + n[n.Not = 0] = "Not", n[n.SafeModules = 1] = "SafeModules", n[n.Completely = 2] = "Completely"; + })(f = e.StructureIsReused || (e.StructureIsReused = {})); + var T; + (function(n) { + n[n.Success = 0] = "Success", n[n.DiagnosticsPresent_OutputsSkipped = 1] = "DiagnosticsPresent_OutputsSkipped", n[n.DiagnosticsPresent_OutputsGenerated = 2] = "DiagnosticsPresent_OutputsGenerated", n[n.InvalidProject_OutputsSkipped = 3] = "InvalidProject_OutputsSkipped", n[n.ProjectReferenceCycle_OutputsSkipped = 4] = "ProjectReferenceCycle_OutputsSkipped", n[n.ProjectReferenceCycle_OutputsSkupped = 4] = "ProjectReferenceCycle_OutputsSkupped"; + })(T = e.ExitStatus || (e.ExitStatus = {})); + var K; + (function(n) { + n[n.Ok = 0] = "Ok", n[n.NeedsOverride = 1] = "NeedsOverride", n[n.HasInvalidOverride = 2] = "HasInvalidOverride"; + })(K = e.MemberOverrideStatus || (e.MemberOverrideStatus = {})); + var b; + (function(n) { + n[n.None = 0] = "None", n[n.Literal = 1] = "Literal", n[n.Subtype = 2] = "Subtype"; + })(b = e.UnionReduction || (e.UnionReduction = {})); + var se; + (function(n) { + n[n.None = 0] = "None", n[n.Signature = 1] = "Signature", n[n.NoConstraints = 2] = "NoConstraints", n[n.Completions = 4] = "Completions", n[n.SkipBindingPatterns = 8] = "SkipBindingPatterns"; + })(se = e.ContextFlags || (e.ContextFlags = {})); + var J; + (function(n) { + n[n.None = 0] = "None", n[n.NoTruncation = 1] = "NoTruncation", n[n.WriteArrayAsGenericType = 2] = "WriteArrayAsGenericType", n[n.GenerateNamesForShadowedTypeParams = 4] = "GenerateNamesForShadowedTypeParams", n[n.UseStructuralFallback = 8] = "UseStructuralFallback", n[n.ForbidIndexedAccessSymbolReferences = 16] = "ForbidIndexedAccessSymbolReferences", n[n.WriteTypeArgumentsOfSignature = 32] = "WriteTypeArgumentsOfSignature", n[n.UseFullyQualifiedType = 64] = "UseFullyQualifiedType", n[n.UseOnlyExternalAliasing = 128] = "UseOnlyExternalAliasing", n[n.SuppressAnyReturnType = 256] = "SuppressAnyReturnType", n[n.WriteTypeParametersInQualifiedName = 512] = "WriteTypeParametersInQualifiedName", n[n.MultilineObjectLiterals = 1024] = "MultilineObjectLiterals", n[n.WriteClassExpressionAsTypeLiteral = 2048] = "WriteClassExpressionAsTypeLiteral", n[n.UseTypeOfFunction = 4096] = "UseTypeOfFunction", n[n.OmitParameterModifiers = 8192] = "OmitParameterModifiers", n[n.UseAliasDefinedOutsideCurrentScope = 16384] = "UseAliasDefinedOutsideCurrentScope", n[n.UseSingleQuotesForStringLiteralType = 268435456] = "UseSingleQuotesForStringLiteralType", n[n.NoTypeReduction = 536870912] = "NoTypeReduction", n[n.AllowThisInObjectLiteral = 32768] = "AllowThisInObjectLiteral", n[n.AllowQualifiedNameInPlaceOfIdentifier = 65536] = "AllowQualifiedNameInPlaceOfIdentifier", n[n.AllowQualifedNameInPlaceOfIdentifier = 65536] = "AllowQualifedNameInPlaceOfIdentifier", n[n.AllowAnonymousIdentifier = 131072] = "AllowAnonymousIdentifier", n[n.AllowEmptyUnionOrIntersection = 262144] = "AllowEmptyUnionOrIntersection", n[n.AllowEmptyTuple = 524288] = "AllowEmptyTuple", n[n.AllowUniqueESSymbolType = 1048576] = "AllowUniqueESSymbolType", n[n.AllowEmptyIndexInfoType = 2097152] = "AllowEmptyIndexInfoType", n[n.AllowNodeModulesRelativePaths = 67108864] = "AllowNodeModulesRelativePaths", n[n.DoNotIncludeSymbolChain = 134217728] = "DoNotIncludeSymbolChain", n[n.IgnoreErrors = 70221824] = "IgnoreErrors", n[n.InObjectTypeLiteral = 4194304] = "InObjectTypeLiteral", n[n.InTypeAlias = 8388608] = "InTypeAlias", n[n.InInitialEntityName = 16777216] = "InInitialEntityName"; + })(J = e.NodeBuilderFlags || (e.NodeBuilderFlags = {})); + var ie; + (function(n) { + n[n.None = 0] = "None", n[n.NoTruncation = 1] = "NoTruncation", n[n.WriteArrayAsGenericType = 2] = "WriteArrayAsGenericType", n[n.UseStructuralFallback = 8] = "UseStructuralFallback", n[n.WriteTypeArgumentsOfSignature = 32] = "WriteTypeArgumentsOfSignature", n[n.UseFullyQualifiedType = 64] = "UseFullyQualifiedType", n[n.SuppressAnyReturnType = 256] = "SuppressAnyReturnType", n[n.MultilineObjectLiterals = 1024] = "MultilineObjectLiterals", n[n.WriteClassExpressionAsTypeLiteral = 2048] = "WriteClassExpressionAsTypeLiteral", n[n.UseTypeOfFunction = 4096] = "UseTypeOfFunction", n[n.OmitParameterModifiers = 8192] = "OmitParameterModifiers", n[n.UseAliasDefinedOutsideCurrentScope = 16384] = "UseAliasDefinedOutsideCurrentScope", n[n.UseSingleQuotesForStringLiteralType = 268435456] = "UseSingleQuotesForStringLiteralType", n[n.NoTypeReduction = 536870912] = "NoTypeReduction", n[n.AllowUniqueESSymbolType = 1048576] = "AllowUniqueESSymbolType", n[n.AddUndefined = 131072] = "AddUndefined", n[n.WriteArrowStyleSignature = 262144] = "WriteArrowStyleSignature", n[n.InArrayType = 524288] = "InArrayType", n[n.InElementType = 2097152] = "InElementType", n[n.InFirstTypeArgument = 4194304] = "InFirstTypeArgument", n[n.InTypeAlias = 8388608] = "InTypeAlias", n[n.WriteOwnNameForAnyLike = 0] = "WriteOwnNameForAnyLike", n[n.NodeBuilderFlagsMask = 814775659] = "NodeBuilderFlagsMask"; + })(ie = e.TypeFormatFlags || (e.TypeFormatFlags = {})); + var R; + (function(n) { + n[n.None = 0] = "None", n[n.WriteTypeParametersOrArguments = 1] = "WriteTypeParametersOrArguments", n[n.UseOnlyExternalAliasing = 2] = "UseOnlyExternalAliasing", n[n.AllowAnyNodeKind = 4] = "AllowAnyNodeKind", n[n.UseAliasDefinedOutsideCurrentScope = 8] = "UseAliasDefinedOutsideCurrentScope", n[n.DoNotIncludeSymbolChain = 16] = "DoNotIncludeSymbolChain"; + })(R = e.SymbolFormatFlags || (e.SymbolFormatFlags = {})); + var q; + (function(n) { + n[n.Accessible = 0] = "Accessible", n[n.NotAccessible = 1] = "NotAccessible", n[n.CannotBeNamed = 2] = "CannotBeNamed"; + })(q = e.SymbolAccessibility || (e.SymbolAccessibility = {})); + var O; + (function(n) { + n[n.UnionOrIntersection = 0] = "UnionOrIntersection", n[n.Spread = 1] = "Spread"; + })(O = e.SyntheticSymbolKind || (e.SyntheticSymbolKind = {})); + var ve; + (function(n) { + n[n.This = 0] = "This", n[n.Identifier = 1] = "Identifier", n[n.AssertsThis = 2] = "AssertsThis", n[n.AssertsIdentifier = 3] = "AssertsIdentifier"; + })(ve = e.TypePredicateKind || (e.TypePredicateKind = {})); + var ee; + (function(n) { + n[n.Unknown = 0] = "Unknown", n[n.TypeWithConstructSignatureAndValue = 1] = "TypeWithConstructSignatureAndValue", n[n.VoidNullableOrNeverType = 2] = "VoidNullableOrNeverType", n[n.NumberLikeType = 3] = "NumberLikeType", n[n.BigIntLikeType = 4] = "BigIntLikeType", n[n.StringLikeType = 5] = "StringLikeType", n[n.BooleanType = 6] = "BooleanType", n[n.ArrayLikeType = 7] = "ArrayLikeType", n[n.ESSymbolType = 8] = "ESSymbolType", n[n.Promise = 9] = "Promise", n[n.TypeWithCallSignature = 10] = "TypeWithCallSignature", n[n.ObjectType = 11] = "ObjectType"; + })(ee = e.TypeReferenceSerializationKind || (e.TypeReferenceSerializationKind = {})); + var he; + (function(n) { + n[n.None = 0] = "None", n[n.FunctionScopedVariable = 1] = "FunctionScopedVariable", n[n.BlockScopedVariable = 2] = "BlockScopedVariable", n[n.Property = 4] = "Property", n[n.EnumMember = 8] = "EnumMember", n[n.Function = 16] = "Function", n[n.Class = 32] = "Class", n[n.Interface = 64] = "Interface", n[n.ConstEnum = 128] = "ConstEnum", n[n.RegularEnum = 256] = "RegularEnum", n[n.ValueModule = 512] = "ValueModule", n[n.NamespaceModule = 1024] = "NamespaceModule", n[n.TypeLiteral = 2048] = "TypeLiteral", n[n.ObjectLiteral = 4096] = "ObjectLiteral", n[n.Method = 8192] = "Method", n[n.Constructor = 16384] = "Constructor", n[n.GetAccessor = 32768] = "GetAccessor", n[n.SetAccessor = 65536] = "SetAccessor", n[n.Signature = 131072] = "Signature", n[n.TypeParameter = 262144] = "TypeParameter", n[n.TypeAlias = 524288] = "TypeAlias", n[n.ExportValue = 1048576] = "ExportValue", n[n.Alias = 2097152] = "Alias", n[n.Prototype = 4194304] = "Prototype", n[n.ExportStar = 8388608] = "ExportStar", n[n.Optional = 16777216] = "Optional", n[n.Transient = 33554432] = "Transient", n[n.Assignment = 67108864] = "Assignment", n[n.ModuleExports = 134217728] = "ModuleExports", n[n.All = 67108863] = "All", n[n.Enum = 384] = "Enum", n[n.Variable = 3] = "Variable", n[n.Value = 111551] = "Value", n[n.Type = 788968] = "Type", n[n.Namespace = 1920] = "Namespace", n[n.Module = 1536] = "Module", n[n.Accessor = 98304] = "Accessor", n[n.FunctionScopedVariableExcludes = 111550] = "FunctionScopedVariableExcludes", n[n.BlockScopedVariableExcludes = 111551] = "BlockScopedVariableExcludes", n[n.ParameterExcludes = 111551] = "ParameterExcludes", n[n.PropertyExcludes = 0] = "PropertyExcludes", n[n.EnumMemberExcludes = 900095] = "EnumMemberExcludes", n[n.FunctionExcludes = 110991] = "FunctionExcludes", n[n.ClassExcludes = 899503] = "ClassExcludes", n[n.InterfaceExcludes = 788872] = "InterfaceExcludes", n[n.RegularEnumExcludes = 899327] = "RegularEnumExcludes", n[n.ConstEnumExcludes = 899967] = "ConstEnumExcludes", n[n.ValueModuleExcludes = 110735] = "ValueModuleExcludes", n[n.NamespaceModuleExcludes = 0] = "NamespaceModuleExcludes", n[n.MethodExcludes = 103359] = "MethodExcludes", n[n.GetAccessorExcludes = 46015] = "GetAccessorExcludes", n[n.SetAccessorExcludes = 78783] = "SetAccessorExcludes", n[n.TypeParameterExcludes = 526824] = "TypeParameterExcludes", n[n.TypeAliasExcludes = 788968] = "TypeAliasExcludes", n[n.AliasExcludes = 2097152] = "AliasExcludes", n[n.ModuleMember = 2623475] = "ModuleMember", n[n.ExportHasLocal = 944] = "ExportHasLocal", n[n.BlockScoped = 418] = "BlockScoped", n[n.PropertyOrAccessor = 98308] = "PropertyOrAccessor", n[n.ClassMember = 106500] = "ClassMember", n[n.ExportSupportsDefaultModifier = 112] = "ExportSupportsDefaultModifier", n[n.ExportDoesNotSupportDefaultModifier = -113] = "ExportDoesNotSupportDefaultModifier", n[n.Classifiable = 2885600] = "Classifiable", n[n.LateBindingContainer = 6256] = "LateBindingContainer"; + })(he = e.SymbolFlags || (e.SymbolFlags = {})); + var F; + (function(n) { + n[n.Numeric = 0] = "Numeric", n[n.Literal = 1] = "Literal"; + })(F = e.EnumKind || (e.EnumKind = {})); + var x; + (function(n) { + n[n.Instantiated = 1] = "Instantiated", n[n.SyntheticProperty = 2] = "SyntheticProperty", n[n.SyntheticMethod = 4] = "SyntheticMethod", n[n.Readonly = 8] = "Readonly", n[n.ReadPartial = 16] = "ReadPartial", n[n.WritePartial = 32] = "WritePartial", n[n.HasNonUniformType = 64] = "HasNonUniformType", n[n.HasLiteralType = 128] = "HasLiteralType", n[n.ContainsPublic = 256] = "ContainsPublic", n[n.ContainsProtected = 512] = "ContainsProtected", n[n.ContainsPrivate = 1024] = "ContainsPrivate", n[n.ContainsStatic = 2048] = "ContainsStatic", n[n.Late = 4096] = "Late", n[n.ReverseMapped = 8192] = "ReverseMapped", n[n.OptionalParameter = 16384] = "OptionalParameter", n[n.RestParameter = 32768] = "RestParameter", n[n.DeferredType = 65536] = "DeferredType", n[n.HasNeverType = 131072] = "HasNeverType", n[n.Mapped = 262144] = "Mapped", n[n.StripOptional = 524288] = "StripOptional", n[n.Unresolved = 1048576] = "Unresolved", n[n.Synthetic = 6] = "Synthetic", n[n.Discriminant = 192] = "Discriminant", n[n.Partial = 48] = "Partial"; + })(x = e.CheckFlags || (e.CheckFlags = {})); + var X; + (function(n) { + n.Call = "__call", n.Constructor = "__constructor", n.New = "__new", n.Index = "__index", n.ExportStar = "__export", n.Global = "__global", n.Missing = "__missing", n.Type = "__type", n.Object = "__object", n.JSXAttributes = "__jsxAttributes", n.Class = "__class", n.Function = "__function", n.Computed = "__computed", n.Resolving = "__resolving__", n.ExportEquals = "export=", n.Default = "default", n.This = "this"; + })(X = e.InternalSymbolName || (e.InternalSymbolName = {})); + var $; + (function(n) { + n[n.TypeChecked = 1] = "TypeChecked", n[n.LexicalThis = 2] = "LexicalThis", n[n.CaptureThis = 4] = "CaptureThis", n[n.CaptureNewTarget = 8] = "CaptureNewTarget", n[n.SuperInstance = 256] = "SuperInstance", n[n.SuperStatic = 512] = "SuperStatic", n[n.ContextChecked = 1024] = "ContextChecked", n[n.AsyncMethodWithSuper = 2048] = "AsyncMethodWithSuper", n[n.AsyncMethodWithSuperBinding = 4096] = "AsyncMethodWithSuperBinding", n[n.CaptureArguments = 8192] = "CaptureArguments", n[n.EnumValuesComputed = 16384] = "EnumValuesComputed", n[n.LexicalModuleMergesWithClass = 32768] = "LexicalModuleMergesWithClass", n[n.LoopWithCapturedBlockScopedBinding = 65536] = "LoopWithCapturedBlockScopedBinding", n[n.ContainsCapturedBlockScopeBinding = 131072] = "ContainsCapturedBlockScopeBinding", n[n.CapturedBlockScopedBinding = 262144] = "CapturedBlockScopedBinding", n[n.BlockScopedBindingInLoop = 524288] = "BlockScopedBindingInLoop", n[n.ClassWithBodyScopedClassBinding = 1048576] = "ClassWithBodyScopedClassBinding", n[n.BodyScopedClassBinding = 2097152] = "BodyScopedClassBinding", n[n.NeedsLoopOutParameter = 4194304] = "NeedsLoopOutParameter", n[n.AssignmentsMarked = 8388608] = "AssignmentsMarked", n[n.ClassWithConstructorReference = 16777216] = "ClassWithConstructorReference", n[n.ConstructorReferenceInClass = 33554432] = "ConstructorReferenceInClass", n[n.ContainsClassWithPrivateIdentifiers = 67108864] = "ContainsClassWithPrivateIdentifiers", n[n.ContainsSuperPropertyInStaticInitializer = 134217728] = "ContainsSuperPropertyInStaticInitializer", n[n.InCheckIdentifier = 268435456] = "InCheckIdentifier"; + })($ = e.NodeCheckFlags || (e.NodeCheckFlags = {})); + var A; + (function(n) { + n[n.Any = 1] = "Any", n[n.Unknown = 2] = "Unknown", n[n.String = 4] = "String", n[n.Number = 8] = "Number", n[n.Boolean = 16] = "Boolean", n[n.Enum = 32] = "Enum", n[n.BigInt = 64] = "BigInt", n[n.StringLiteral = 128] = "StringLiteral", n[n.NumberLiteral = 256] = "NumberLiteral", n[n.BooleanLiteral = 512] = "BooleanLiteral", n[n.EnumLiteral = 1024] = "EnumLiteral", n[n.BigIntLiteral = 2048] = "BigIntLiteral", n[n.ESSymbol = 4096] = "ESSymbol", n[n.UniqueESSymbol = 8192] = "UniqueESSymbol", n[n.Void = 16384] = "Void", n[n.Undefined = 32768] = "Undefined", n[n.Null = 65536] = "Null", n[n.Never = 131072] = "Never", n[n.TypeParameter = 262144] = "TypeParameter", n[n.Object = 524288] = "Object", n[n.Union = 1048576] = "Union", n[n.Intersection = 2097152] = "Intersection", n[n.Index = 4194304] = "Index", n[n.IndexedAccess = 8388608] = "IndexedAccess", n[n.Conditional = 16777216] = "Conditional", n[n.Substitution = 33554432] = "Substitution", n[n.NonPrimitive = 67108864] = "NonPrimitive", n[n.TemplateLiteral = 134217728] = "TemplateLiteral", n[n.StringMapping = 268435456] = "StringMapping", n[n.AnyOrUnknown = 3] = "AnyOrUnknown", n[n.Nullable = 98304] = "Nullable", n[n.Literal = 2944] = "Literal", n[n.Unit = 109440] = "Unit", n[n.StringOrNumberLiteral = 384] = "StringOrNumberLiteral", n[n.StringOrNumberLiteralOrUnique = 8576] = "StringOrNumberLiteralOrUnique", n[n.DefinitelyFalsy = 117632] = "DefinitelyFalsy", n[n.PossiblyFalsy = 117724] = "PossiblyFalsy", n[n.Intrinsic = 67359327] = "Intrinsic", n[n.Primitive = 131068] = "Primitive", n[n.StringLike = 402653316] = "StringLike", n[n.NumberLike = 296] = "NumberLike", n[n.BigIntLike = 2112] = "BigIntLike", n[n.BooleanLike = 528] = "BooleanLike", n[n.EnumLike = 1056] = "EnumLike", n[n.ESSymbolLike = 12288] = "ESSymbolLike", n[n.VoidLike = 49152] = "VoidLike", n[n.DefinitelyNonNullable = 470302716] = "DefinitelyNonNullable", n[n.DisjointDomains = 469892092] = "DisjointDomains", n[n.UnionOrIntersection = 3145728] = "UnionOrIntersection", n[n.StructuredType = 3670016] = "StructuredType", n[n.TypeVariable = 8650752] = "TypeVariable", n[n.InstantiableNonPrimitive = 58982400] = "InstantiableNonPrimitive", n[n.InstantiablePrimitive = 406847488] = "InstantiablePrimitive", n[n.Instantiable = 465829888] = "Instantiable", n[n.StructuredOrInstantiable = 469499904] = "StructuredOrInstantiable", n[n.ObjectFlagsType = 3899393] = "ObjectFlagsType", n[n.Simplifiable = 25165824] = "Simplifiable", n[n.Singleton = 67358815] = "Singleton", n[n.Narrowable = 536624127] = "Narrowable", n[n.IncludesMask = 205258751] = "IncludesMask", n[n.IncludesMissingType = 262144] = "IncludesMissingType", n[n.IncludesNonWideningType = 4194304] = "IncludesNonWideningType", n[n.IncludesWildcard = 8388608] = "IncludesWildcard", n[n.IncludesEmptyObject = 16777216] = "IncludesEmptyObject", n[n.IncludesInstantiable = 33554432] = "IncludesInstantiable", n[n.NotPrimitiveUnion = 36323363] = "NotPrimitiveUnion"; + })(A = e.TypeFlags || (e.TypeFlags = {})); + var y; + (function(n) { + n[n.Class = 1] = "Class", n[n.Interface = 2] = "Interface", n[n.Reference = 4] = "Reference", n[n.Tuple = 8] = "Tuple", n[n.Anonymous = 16] = "Anonymous", n[n.Mapped = 32] = "Mapped", n[n.Instantiated = 64] = "Instantiated", n[n.ObjectLiteral = 128] = "ObjectLiteral", n[n.EvolvingArray = 256] = "EvolvingArray", n[n.ObjectLiteralPatternWithComputedProperties = 512] = "ObjectLiteralPatternWithComputedProperties", n[n.ReverseMapped = 1024] = "ReverseMapped", n[n.JsxAttributes = 2048] = "JsxAttributes", n[n.JSLiteral = 4096] = "JSLiteral", n[n.FreshLiteral = 8192] = "FreshLiteral", n[n.ArrayLiteral = 16384] = "ArrayLiteral", n[n.PrimitiveUnion = 32768] = "PrimitiveUnion", n[n.ContainsWideningType = 65536] = "ContainsWideningType", n[n.ContainsObjectOrArrayLiteral = 131072] = "ContainsObjectOrArrayLiteral", n[n.NonInferrableType = 262144] = "NonInferrableType", n[n.CouldContainTypeVariablesComputed = 524288] = "CouldContainTypeVariablesComputed", n[n.CouldContainTypeVariables = 1048576] = "CouldContainTypeVariables", n[n.ClassOrInterface = 3] = "ClassOrInterface", n[n.RequiresWidening = 196608] = "RequiresWidening", n[n.PropagatingFlags = 458752] = "PropagatingFlags", n[n.ObjectTypeKindMask = 1343] = "ObjectTypeKindMask", n[n.ContainsSpread = 2097152] = "ContainsSpread", n[n.ObjectRestType = 4194304] = "ObjectRestType", n[n.InstantiationExpressionType = 8388608] = "InstantiationExpressionType", n[n.IsClassInstanceClone = 16777216] = "IsClassInstanceClone", n[n.IdenticalBaseTypeCalculated = 33554432] = "IdenticalBaseTypeCalculated", n[n.IdenticalBaseTypeExists = 67108864] = "IdenticalBaseTypeExists", n[n.IsGenericTypeComputed = 2097152] = "IsGenericTypeComputed", n[n.IsGenericObjectType = 4194304] = "IsGenericObjectType", n[n.IsGenericIndexType = 8388608] = "IsGenericIndexType", n[n.IsGenericType = 12582912] = "IsGenericType", n[n.ContainsIntersections = 16777216] = "ContainsIntersections", n[n.IsNeverIntersectionComputed = 16777216] = "IsNeverIntersectionComputed", n[n.IsNeverIntersection = 33554432] = "IsNeverIntersection"; + })(y = e.ObjectFlags || (e.ObjectFlags = {})); + var V; + (function(n) { + n[n.Invariant = 0] = "Invariant", n[n.Covariant = 1] = "Covariant", n[n.Contravariant = 2] = "Contravariant", n[n.Bivariant = 3] = "Bivariant", n[n.Independent = 4] = "Independent", n[n.VarianceMask = 7] = "VarianceMask", n[n.Unmeasurable = 8] = "Unmeasurable", n[n.Unreliable = 16] = "Unreliable", n[n.AllowsStructuralFallback = 24] = "AllowsStructuralFallback"; + })(V = e.VarianceFlags || (e.VarianceFlags = {})); + var L; + (function(n) { + n[n.Required = 1] = "Required", n[n.Optional = 2] = "Optional", n[n.Rest = 4] = "Rest", n[n.Variadic = 8] = "Variadic", n[n.Fixed = 3] = "Fixed", n[n.Variable = 12] = "Variable", n[n.NonRequired = 14] = "NonRequired", n[n.NonRest = 11] = "NonRest"; + })(L = e.ElementFlags || (e.ElementFlags = {})); + var P; + (function(n) { + n[n.None = 0] = "None", n[n.IncludeUndefined = 1] = "IncludeUndefined", n[n.NoIndexSignatures = 2] = "NoIndexSignatures", n[n.Writing = 4] = "Writing", n[n.CacheSymbol = 8] = "CacheSymbol", n[n.NoTupleBoundsCheck = 16] = "NoTupleBoundsCheck", n[n.ExpressionPosition = 32] = "ExpressionPosition", n[n.ReportDeprecated = 64] = "ReportDeprecated", n[n.SuppressNoImplicitAnyError = 128] = "SuppressNoImplicitAnyError", n[n.Contextual = 256] = "Contextual", n[n.Persistent = 1] = "Persistent"; + })(P = e.AccessFlags || (e.AccessFlags = {})); + var k; + (function(n) { + n[n.Component = 0] = "Component", n[n.Function = 1] = "Function", n[n.Mixed = 2] = "Mixed"; + })(k = e.JsxReferenceKind || (e.JsxReferenceKind = {})); + var Y; + (function(n) { + n[n.Call = 0] = "Call", n[n.Construct = 1] = "Construct"; + })(Y = e.SignatureKind || (e.SignatureKind = {})); + var U; + (function(n) { + n[n.None = 0] = "None", n[n.HasRestParameter = 1] = "HasRestParameter", n[n.HasLiteralTypes = 2] = "HasLiteralTypes", n[n.Abstract = 4] = "Abstract", n[n.IsInnerCallChain = 8] = "IsInnerCallChain", n[n.IsOuterCallChain = 16] = "IsOuterCallChain", n[n.IsUntypedSignatureInJSFile = 32] = "IsUntypedSignatureInJSFile", n[n.PropagatingFlags = 39] = "PropagatingFlags", n[n.CallChainFlags = 24] = "CallChainFlags"; + })(U = e.SignatureFlags || (e.SignatureFlags = {})); + var j; + (function(n) { + n[n.String = 0] = "String", n[n.Number = 1] = "Number"; + })(j = e.IndexKind || (e.IndexKind = {})); + var H; + (function(n) { + n[n.Simple = 0] = "Simple", n[n.Array = 1] = "Array", n[n.Function = 2] = "Function", n[n.Composite = 3] = "Composite", n[n.Merged = 4] = "Merged"; + })(H = e.TypeMapKind || (e.TypeMapKind = {})); + var I; + (function(n) { + n[n.NakedTypeVariable = 1] = "NakedTypeVariable", n[n.SpeculativeTuple = 2] = "SpeculativeTuple", n[n.SubstituteSource = 4] = "SubstituteSource", n[n.HomomorphicMappedType = 8] = "HomomorphicMappedType", n[n.PartialHomomorphicMappedType = 16] = "PartialHomomorphicMappedType", n[n.MappedTypeConstraint = 32] = "MappedTypeConstraint", n[n.ContravariantConditional = 64] = "ContravariantConditional", n[n.ReturnType = 128] = "ReturnType", n[n.LiteralKeyof = 256] = "LiteralKeyof", n[n.NoConstraints = 512] = "NoConstraints", n[n.AlwaysStrict = 1024] = "AlwaysStrict", n[n.MaxValue = 2048] = "MaxValue", n[n.PriorityImpliesCombination = 416] = "PriorityImpliesCombination", n[n.Circularity = -1] = "Circularity"; + })(I = e.InferencePriority || (e.InferencePriority = {})); + var l; + (function(n) { + n[n.None = 0] = "None", n[n.NoDefault = 1] = "NoDefault", n[n.AnyDefault = 2] = "AnyDefault", n[n.SkippedGenericFunction = 4] = "SkippedGenericFunction"; + })(l = e.InferenceFlags || (e.InferenceFlags = {})); + var d; + (function(n) { + n[n.False = 0] = "False", n[n.Unknown = 1] = "Unknown", n[n.Maybe = 3] = "Maybe", n[n.True = -1] = "True"; + })(d = e.Ternary || (e.Ternary = {})); + var D; + (function(n) { + n[n.None = 0] = "None", n[n.ExportsProperty = 1] = "ExportsProperty", n[n.ModuleExports = 2] = "ModuleExports", n[n.PrototypeProperty = 3] = "PrototypeProperty", n[n.ThisProperty = 4] = "ThisProperty", n[n.Property = 5] = "Property", n[n.Prototype = 6] = "Prototype", n[n.ObjectDefinePropertyValue = 7] = "ObjectDefinePropertyValue", n[n.ObjectDefinePropertyExports = 8] = "ObjectDefinePropertyExports", n[n.ObjectDefinePrototypeProperty = 9] = "ObjectDefinePrototypeProperty"; + })(D = e.AssignmentDeclarationKind || (e.AssignmentDeclarationKind = {})); + var fe; + (function(n) { + n[n.Warning = 0] = "Warning", n[n.Error = 1] = "Error", n[n.Suggestion = 2] = "Suggestion", n[n.Message = 3] = "Message"; + })(fe = e.DiagnosticCategory || (e.DiagnosticCategory = {})); + function g(n, lr) { + lr === void 0 && (lr = true); + var be = fe[n.category]; + return lr ? be.toLowerCase() : be; + } + e.diagnosticCategoryName = g; + var ne; + (function(n) { + n[n.Classic = 1] = "Classic", n[n.NodeJs = 2] = "NodeJs", n[n.Node16 = 3] = "Node16", n[n.NodeNext = 99] = "NodeNext"; + })(ne = e.ModuleResolutionKind || (e.ModuleResolutionKind = {})); + var ue; + (function(n) { + n[n.Legacy = 1] = "Legacy", n[n.Auto = 2] = "Auto", n[n.Force = 3] = "Force"; + })(ue = e.ModuleDetectionKind || (e.ModuleDetectionKind = {})); + var We; + (function(n) { + n[n.FixedPollingInterval = 0] = "FixedPollingInterval", n[n.PriorityPollingInterval = 1] = "PriorityPollingInterval", n[n.DynamicPriorityPolling = 2] = "DynamicPriorityPolling", n[n.FixedChunkSizePolling = 3] = "FixedChunkSizePolling", n[n.UseFsEvents = 4] = "UseFsEvents", n[n.UseFsEventsOnParentDirectory = 5] = "UseFsEventsOnParentDirectory"; + })(We = e.WatchFileKind || (e.WatchFileKind = {})); + var Fe; + (function(n) { + n[n.UseFsEvents = 0] = "UseFsEvents", n[n.FixedPollingInterval = 1] = "FixedPollingInterval", n[n.DynamicPriorityPolling = 2] = "DynamicPriorityPolling", n[n.FixedChunkSizePolling = 3] = "FixedChunkSizePolling"; + })(Fe = e.WatchDirectoryKind || (e.WatchDirectoryKind = {})); + var Z; + (function(n) { + n[n.FixedInterval = 0] = "FixedInterval", n[n.PriorityInterval = 1] = "PriorityInterval", n[n.DynamicPriority = 2] = "DynamicPriority", n[n.FixedChunkSize = 3] = "FixedChunkSize"; + })(Z = e.PollingWatchKind || (e.PollingWatchKind = {})); + var Be; + (function(n) { + n[n.None = 0] = "None", n[n.CommonJS = 1] = "CommonJS", n[n.AMD = 2] = "AMD", n[n.UMD = 3] = "UMD", n[n.System = 4] = "System", n[n.ES2015 = 5] = "ES2015", n[n.ES2020 = 6] = "ES2020", n[n.ES2022 = 7] = "ES2022", n[n.ESNext = 99] = "ESNext", n[n.Node16 = 100] = "Node16", n[n.NodeNext = 199] = "NodeNext"; + })(Be = e.ModuleKind || (e.ModuleKind = {})); + var ge; + (function(n) { + n[n.None = 0] = "None", n[n.Preserve = 1] = "Preserve", n[n.React = 2] = "React", n[n.ReactNative = 3] = "ReactNative", n[n.ReactJSX = 4] = "ReactJSX", n[n.ReactJSXDev = 5] = "ReactJSXDev"; + })(ge = e.JsxEmit || (e.JsxEmit = {})); + var Re; + (function(n) { + n[n.Remove = 0] = "Remove", n[n.Preserve = 1] = "Preserve", n[n.Error = 2] = "Error"; + })(Re = e.ImportsNotUsedAsValues || (e.ImportsNotUsedAsValues = {})); + var ze; + (function(n) { + n[n.CarriageReturnLineFeed = 0] = "CarriageReturnLineFeed", n[n.LineFeed = 1] = "LineFeed"; + })(ze = e.NewLineKind || (e.NewLineKind = {})); + var Ee; + (function(n) { + n[n.Unknown = 0] = "Unknown", n[n.JS = 1] = "JS", n[n.JSX = 2] = "JSX", n[n.TS = 3] = "TS", n[n.TSX = 4] = "TSX", n[n.External = 5] = "External", n[n.JSON = 6] = "JSON", n[n.Deferred = 7] = "Deferred"; + })(Ee = e.ScriptKind || (e.ScriptKind = {})); + var He; + (function(n) { + n[n.ES3 = 0] = "ES3", n[n.ES5 = 1] = "ES5", n[n.ES2015 = 2] = "ES2015", n[n.ES2016 = 3] = "ES2016", n[n.ES2017 = 4] = "ES2017", n[n.ES2018 = 5] = "ES2018", n[n.ES2019 = 6] = "ES2019", n[n.ES2020 = 7] = "ES2020", n[n.ES2021 = 8] = "ES2021", n[n.ES2022 = 9] = "ES2022", n[n.ESNext = 99] = "ESNext", n[n.JSON = 100] = "JSON", n[n.Latest = 99] = "Latest"; + })(He = e.ScriptTarget || (e.ScriptTarget = {})); + var rr; + (function(n) { + n[n.Standard = 0] = "Standard", n[n.JSX = 1] = "JSX"; + })(rr = e.LanguageVariant || (e.LanguageVariant = {})); + var Ie; + (function(n) { + n[n.None = 0] = "None", n[n.Recursive = 1] = "Recursive"; + })(Ie = e.WatchDirectoryFlags || (e.WatchDirectoryFlags = {})); + var _e; + (function(n) { + n[n.nullCharacter = 0] = "nullCharacter", n[n.maxAsciiCharacter = 127] = "maxAsciiCharacter", n[n.lineFeed = 10] = "lineFeed", n[n.carriageReturn = 13] = "carriageReturn", n[n.lineSeparator = 8232] = "lineSeparator", n[n.paragraphSeparator = 8233] = "paragraphSeparator", n[n.nextLine = 133] = "nextLine", n[n.space = 32] = "space", n[n.nonBreakingSpace = 160] = "nonBreakingSpace", n[n.enQuad = 8192] = "enQuad", n[n.emQuad = 8193] = "emQuad", n[n.enSpace = 8194] = "enSpace", n[n.emSpace = 8195] = "emSpace", n[n.threePerEmSpace = 8196] = "threePerEmSpace", n[n.fourPerEmSpace = 8197] = "fourPerEmSpace", n[n.sixPerEmSpace = 8198] = "sixPerEmSpace", n[n.figureSpace = 8199] = "figureSpace", n[n.punctuationSpace = 8200] = "punctuationSpace", n[n.thinSpace = 8201] = "thinSpace", n[n.hairSpace = 8202] = "hairSpace", n[n.zeroWidthSpace = 8203] = "zeroWidthSpace", n[n.narrowNoBreakSpace = 8239] = "narrowNoBreakSpace", n[n.ideographicSpace = 12288] = "ideographicSpace", n[n.mathematicalSpace = 8287] = "mathematicalSpace", n[n.ogham = 5760] = "ogham", n[n._ = 95] = "_", n[n.$ = 36] = "$", n[n._0 = 48] = "_0", n[n._1 = 49] = "_1", n[n._2 = 50] = "_2", n[n._3 = 51] = "_3", n[n._4 = 52] = "_4", n[n._5 = 53] = "_5", n[n._6 = 54] = "_6", n[n._7 = 55] = "_7", n[n._8 = 56] = "_8", n[n._9 = 57] = "_9", n[n.a = 97] = "a", n[n.b = 98] = "b", n[n.c = 99] = "c", n[n.d = 100] = "d", n[n.e = 101] = "e", n[n.f = 102] = "f", n[n.g = 103] = "g", n[n.h = 104] = "h", n[n.i = 105] = "i", n[n.j = 106] = "j", n[n.k = 107] = "k", n[n.l = 108] = "l", n[n.m = 109] = "m", n[n.n = 110] = "n", n[n.o = 111] = "o", n[n.p = 112] = "p", n[n.q = 113] = "q", n[n.r = 114] = "r", n[n.s = 115] = "s", n[n.t = 116] = "t", n[n.u = 117] = "u", n[n.v = 118] = "v", n[n.w = 119] = "w", n[n.x = 120] = "x", n[n.y = 121] = "y", n[n.z = 122] = "z", n[n.A = 65] = "A", n[n.B = 66] = "B", n[n.C = 67] = "C", n[n.D = 68] = "D", n[n.E = 69] = "E", n[n.F = 70] = "F", n[n.G = 71] = "G", n[n.H = 72] = "H", n[n.I = 73] = "I", n[n.J = 74] = "J", n[n.K = 75] = "K", n[n.L = 76] = "L", n[n.M = 77] = "M", n[n.N = 78] = "N", n[n.O = 79] = "O", n[n.P = 80] = "P", n[n.Q = 81] = "Q", n[n.R = 82] = "R", n[n.S = 83] = "S", n[n.T = 84] = "T", n[n.U = 85] = "U", n[n.V = 86] = "V", n[n.W = 87] = "W", n[n.X = 88] = "X", n[n.Y = 89] = "Y", n[n.Z = 90] = "Z", n[n.ampersand = 38] = "ampersand", n[n.asterisk = 42] = "asterisk", n[n.at = 64] = "at", n[n.backslash = 92] = "backslash", n[n.backtick = 96] = "backtick", n[n.bar = 124] = "bar", n[n.caret = 94] = "caret", n[n.closeBrace = 125] = "closeBrace", n[n.closeBracket = 93] = "closeBracket", n[n.closeParen = 41] = "closeParen", n[n.colon = 58] = "colon", n[n.comma = 44] = "comma", n[n.dot = 46] = "dot", n[n.doubleQuote = 34] = "doubleQuote", n[n.equals = 61] = "equals", n[n.exclamation = 33] = "exclamation", n[n.greaterThan = 62] = "greaterThan", n[n.hash = 35] = "hash", n[n.lessThan = 60] = "lessThan", n[n.minus = 45] = "minus", n[n.openBrace = 123] = "openBrace", n[n.openBracket = 91] = "openBracket", n[n.openParen = 40] = "openParen", n[n.percent = 37] = "percent", n[n.plus = 43] = "plus", n[n.question = 63] = "question", n[n.semicolon = 59] = "semicolon", n[n.singleQuote = 39] = "singleQuote", n[n.slash = 47] = "slash", n[n.tilde = 126] = "tilde", n[n.backspace = 8] = "backspace", n[n.formFeed = 12] = "formFeed", n[n.byteOrderMark = 65279] = "byteOrderMark", n[n.tab = 9] = "tab", n[n.verticalTab = 11] = "verticalTab"; + })(_e = e.CharacterCodes || (e.CharacterCodes = {})); + var we; + (function(n) { + n.Ts = ".ts", n.Tsx = ".tsx", n.Dts = ".d.ts", n.Js = ".js", n.Jsx = ".jsx", n.Json = ".json", n.TsBuildInfo = ".tsbuildinfo", n.Mjs = ".mjs", n.Mts = ".mts", n.Dmts = ".d.mts", n.Cjs = ".cjs", n.Cts = ".cts", n.Dcts = ".d.cts"; + })(we = e.Extension || (e.Extension = {})); + var de; + (function(n) { + n[n.None = 0] = "None", n[n.ContainsTypeScript = 1] = "ContainsTypeScript", n[n.ContainsJsx = 2] = "ContainsJsx", n[n.ContainsESNext = 4] = "ContainsESNext", n[n.ContainsES2022 = 8] = "ContainsES2022", n[n.ContainsES2021 = 16] = "ContainsES2021", n[n.ContainsES2020 = 32] = "ContainsES2020", n[n.ContainsES2019 = 64] = "ContainsES2019", n[n.ContainsES2018 = 128] = "ContainsES2018", n[n.ContainsES2017 = 256] = "ContainsES2017", n[n.ContainsES2016 = 512] = "ContainsES2016", n[n.ContainsES2015 = 1024] = "ContainsES2015", n[n.ContainsGenerator = 2048] = "ContainsGenerator", n[n.ContainsDestructuringAssignment = 4096] = "ContainsDestructuringAssignment", n[n.ContainsTypeScriptClassSyntax = 4096] = "ContainsTypeScriptClassSyntax", n[n.ContainsLexicalThis = 8192] = "ContainsLexicalThis", n[n.ContainsRestOrSpread = 16384] = "ContainsRestOrSpread", n[n.ContainsObjectRestOrSpread = 32768] = "ContainsObjectRestOrSpread", n[n.ContainsComputedPropertyName = 65536] = "ContainsComputedPropertyName", n[n.ContainsBlockScopedBinding = 131072] = "ContainsBlockScopedBinding", n[n.ContainsBindingPattern = 262144] = "ContainsBindingPattern", n[n.ContainsYield = 524288] = "ContainsYield", n[n.ContainsAwait = 1048576] = "ContainsAwait", n[n.ContainsHoistedDeclarationOrCompletion = 2097152] = "ContainsHoistedDeclarationOrCompletion", n[n.ContainsDynamicImport = 4194304] = "ContainsDynamicImport", n[n.ContainsClassFields = 8388608] = "ContainsClassFields", n[n.ContainsPossibleTopLevelAwait = 16777216] = "ContainsPossibleTopLevelAwait", n[n.ContainsLexicalSuper = 33554432] = "ContainsLexicalSuper", n[n.ContainsUpdateExpressionForIdentifier = 67108864] = "ContainsUpdateExpressionForIdentifier", n[n.HasComputedFlags = 536870912] = "HasComputedFlags", n[n.AssertTypeScript = 1] = "AssertTypeScript", n[n.AssertJsx = 2] = "AssertJsx", n[n.AssertESNext = 4] = "AssertESNext", n[n.AssertES2022 = 8] = "AssertES2022", n[n.AssertES2021 = 16] = "AssertES2021", n[n.AssertES2020 = 32] = "AssertES2020", n[n.AssertES2019 = 64] = "AssertES2019", n[n.AssertES2018 = 128] = "AssertES2018", n[n.AssertES2017 = 256] = "AssertES2017", n[n.AssertES2016 = 512] = "AssertES2016", n[n.AssertES2015 = 1024] = "AssertES2015", n[n.AssertGenerator = 2048] = "AssertGenerator", n[n.AssertDestructuringAssignment = 4096] = "AssertDestructuringAssignment", n[n.OuterExpressionExcludes = 536870912] = "OuterExpressionExcludes", n[n.PropertyAccessExcludes = 536870912] = "PropertyAccessExcludes", n[n.NodeExcludes = 536870912] = "NodeExcludes", n[n.ArrowFunctionExcludes = 557748224] = "ArrowFunctionExcludes", n[n.FunctionExcludes = 591310848] = "FunctionExcludes", n[n.ConstructorExcludes = 591306752] = "ConstructorExcludes", n[n.MethodOrAccessorExcludes = 574529536] = "MethodOrAccessorExcludes", n[n.PropertyExcludes = 570433536] = "PropertyExcludes", n[n.ClassExcludes = 536940544] = "ClassExcludes", n[n.ModuleExcludes = 589443072] = "ModuleExcludes", n[n.TypeExcludes = -2] = "TypeExcludes", n[n.ObjectLiteralExcludes = 536973312] = "ObjectLiteralExcludes", n[n.ArrayLiteralOrCallOrNewExcludes = 536887296] = "ArrayLiteralOrCallOrNewExcludes", n[n.VariableDeclarationListExcludes = 537165824] = "VariableDeclarationListExcludes", n[n.ParameterExcludes = 536870912] = "ParameterExcludes", n[n.CatchClauseExcludes = 536903680] = "CatchClauseExcludes", n[n.BindingPatternExcludes = 536887296] = "BindingPatternExcludes", n[n.ContainsLexicalThisOrSuper = 33562624] = "ContainsLexicalThisOrSuper", n[n.PropertyNamePropagatingFlags = 33562624] = "PropertyNamePropagatingFlags"; + })(de = e.TransformFlags || (e.TransformFlags = {})); + var ye; + (function(n) { + n[n.TabStop = 0] = "TabStop", n[n.Placeholder = 1] = "Placeholder", n[n.Choice = 2] = "Choice", n[n.Variable = 3] = "Variable"; + })(ye = e.SnippetKind || (e.SnippetKind = {})); + var Ae; + (function(n) { + n[n.None = 0] = "None", n[n.SingleLine = 1] = "SingleLine", n[n.AdviseOnEmitNode = 2] = "AdviseOnEmitNode", n[n.NoSubstitution = 4] = "NoSubstitution", n[n.CapturesThis = 8] = "CapturesThis", n[n.NoLeadingSourceMap = 16] = "NoLeadingSourceMap", n[n.NoTrailingSourceMap = 32] = "NoTrailingSourceMap", n[n.NoSourceMap = 48] = "NoSourceMap", n[n.NoNestedSourceMaps = 64] = "NoNestedSourceMaps", n[n.NoTokenLeadingSourceMaps = 128] = "NoTokenLeadingSourceMaps", n[n.NoTokenTrailingSourceMaps = 256] = "NoTokenTrailingSourceMaps", n[n.NoTokenSourceMaps = 384] = "NoTokenSourceMaps", n[n.NoLeadingComments = 512] = "NoLeadingComments", n[n.NoTrailingComments = 1024] = "NoTrailingComments", n[n.NoComments = 1536] = "NoComments", n[n.NoNestedComments = 2048] = "NoNestedComments", n[n.HelperName = 4096] = "HelperName", n[n.ExportName = 8192] = "ExportName", n[n.LocalName = 16384] = "LocalName", n[n.InternalName = 32768] = "InternalName", n[n.Indented = 65536] = "Indented", n[n.NoIndentation = 131072] = "NoIndentation", n[n.AsyncFunctionBody = 262144] = "AsyncFunctionBody", n[n.ReuseTempVariableScope = 524288] = "ReuseTempVariableScope", n[n.CustomPrologue = 1048576] = "CustomPrologue", n[n.NoHoisting = 2097152] = "NoHoisting", n[n.HasEndOfDeclarationMarker = 4194304] = "HasEndOfDeclarationMarker", n[n.Iterator = 8388608] = "Iterator", n[n.NoAsciiEscaping = 16777216] = "NoAsciiEscaping", n[n.TypeScriptClassWrapper = 33554432] = "TypeScriptClassWrapper", n[n.NeverApplyImportHelper = 67108864] = "NeverApplyImportHelper", n[n.IgnoreSourceNewlines = 134217728] = "IgnoreSourceNewlines", n[n.Immutable = 268435456] = "Immutable", n[n.IndirectCall = 536870912] = "IndirectCall"; + })(Ae = e.EmitFlags || (e.EmitFlags = {})); + var er; + (function(n) { + n[n.Extends = 1] = "Extends", n[n.Assign = 2] = "Assign", n[n.Rest = 4] = "Rest", n[n.Decorate = 8] = "Decorate", n[n.Metadata = 16] = "Metadata", n[n.Param = 32] = "Param", n[n.Awaiter = 64] = "Awaiter", n[n.Generator = 128] = "Generator", n[n.Values = 256] = "Values", n[n.Read = 512] = "Read", n[n.SpreadArray = 1024] = "SpreadArray", n[n.Await = 2048] = "Await", n[n.AsyncGenerator = 4096] = "AsyncGenerator", n[n.AsyncDelegator = 8192] = "AsyncDelegator", n[n.AsyncValues = 16384] = "AsyncValues", n[n.ExportStar = 32768] = "ExportStar", n[n.ImportStar = 65536] = "ImportStar", n[n.ImportDefault = 131072] = "ImportDefault", n[n.MakeTemplateObject = 262144] = "MakeTemplateObject", n[n.ClassPrivateFieldGet = 524288] = "ClassPrivateFieldGet", n[n.ClassPrivateFieldSet = 1048576] = "ClassPrivateFieldSet", n[n.ClassPrivateFieldIn = 2097152] = "ClassPrivateFieldIn", n[n.CreateBinding = 4194304] = "CreateBinding", n[n.FirstEmitHelper = 1] = "FirstEmitHelper", n[n.LastEmitHelper = 4194304] = "LastEmitHelper", n[n.ForOfIncludes = 256] = "ForOfIncludes", n[n.ForAwaitOfIncludes = 16384] = "ForAwaitOfIncludes", n[n.AsyncGeneratorIncludes = 6144] = "AsyncGeneratorIncludes", n[n.AsyncDelegatorIncludes = 26624] = "AsyncDelegatorIncludes", n[n.SpreadIncludes = 1536] = "SpreadIncludes"; + })(er = e.ExternalEmitHelpers || (e.ExternalEmitHelpers = {})); + var ir; + (function(n) { + n[n.SourceFile = 0] = "SourceFile", n[n.Expression = 1] = "Expression", n[n.IdentifierName = 2] = "IdentifierName", n[n.MappedTypeParameter = 3] = "MappedTypeParameter", n[n.Unspecified = 4] = "Unspecified", n[n.EmbeddedStatement = 5] = "EmbeddedStatement", n[n.JsxAttributeValue = 6] = "JsxAttributeValue"; + })(ir = e.EmitHint || (e.EmitHint = {})); + var Cr; + (function(n) { + n[n.Parentheses = 1] = "Parentheses", n[n.TypeAssertions = 2] = "TypeAssertions", n[n.NonNullAssertions = 4] = "NonNullAssertions", n[n.PartiallyEmittedExpressions = 8] = "PartiallyEmittedExpressions", n[n.Assertions = 6] = "Assertions", n[n.All = 15] = "All", n[n.ExcludeJSDocTypeAssertion = 16] = "ExcludeJSDocTypeAssertion"; + })(Cr = e.OuterExpressionKinds || (e.OuterExpressionKinds = {})); + var Ye; + (function(n) { + n[n.None = 0] = "None", n[n.InParameters = 1] = "InParameters", n[n.VariablesHoistedInParameters = 2] = "VariablesHoistedInParameters"; + })(Ye = e.LexicalEnvironmentFlags || (e.LexicalEnvironmentFlags = {})); + var Br; + (function(n) { + n.Prologue = "prologue", n.EmitHelpers = "emitHelpers", n.NoDefaultLib = "no-default-lib", n.Reference = "reference", n.Type = "type", n.TypeResolutionModeRequire = "type-require", n.TypeResolutionModeImport = "type-import", n.Lib = "lib", n.Prepend = "prepend", n.Text = "text", n.Internal = "internal"; + })(Br = e.BundleFileSectionKind || (e.BundleFileSectionKind = {})); + var Er; + (function(n) { + n[n.None = 0] = "None", n[n.SingleLine = 0] = "SingleLine", n[n.MultiLine = 1] = "MultiLine", n[n.PreserveLines = 2] = "PreserveLines", n[n.LinesMask = 3] = "LinesMask", n[n.NotDelimited = 0] = "NotDelimited", n[n.BarDelimited = 4] = "BarDelimited", n[n.AmpersandDelimited = 8] = "AmpersandDelimited", n[n.CommaDelimited = 16] = "CommaDelimited", n[n.AsteriskDelimited = 32] = "AsteriskDelimited", n[n.DelimitersMask = 60] = "DelimitersMask", n[n.AllowTrailingComma = 64] = "AllowTrailingComma", n[n.Indented = 128] = "Indented", n[n.SpaceBetweenBraces = 256] = "SpaceBetweenBraces", n[n.SpaceBetweenSiblings = 512] = "SpaceBetweenSiblings", n[n.Braces = 1024] = "Braces", n[n.Parenthesis = 2048] = "Parenthesis", n[n.AngleBrackets = 4096] = "AngleBrackets", n[n.SquareBrackets = 8192] = "SquareBrackets", n[n.BracketsMask = 15360] = "BracketsMask", n[n.OptionalIfUndefined = 16384] = "OptionalIfUndefined", n[n.OptionalIfEmpty = 32768] = "OptionalIfEmpty", n[n.Optional = 49152] = "Optional", n[n.PreferNewLine = 65536] = "PreferNewLine", n[n.NoTrailingNewLine = 131072] = "NoTrailingNewLine", n[n.NoInterveningComments = 262144] = "NoInterveningComments", n[n.NoSpaceIfEmpty = 524288] = "NoSpaceIfEmpty", n[n.SingleElement = 1048576] = "SingleElement", n[n.SpaceAfterList = 2097152] = "SpaceAfterList", n[n.Modifiers = 262656] = "Modifiers", n[n.HeritageClauses = 512] = "HeritageClauses", n[n.SingleLineTypeLiteralMembers = 768] = "SingleLineTypeLiteralMembers", n[n.MultiLineTypeLiteralMembers = 32897] = "MultiLineTypeLiteralMembers", n[n.SingleLineTupleTypeElements = 528] = "SingleLineTupleTypeElements", n[n.MultiLineTupleTypeElements = 657] = "MultiLineTupleTypeElements", n[n.UnionTypeConstituents = 516] = "UnionTypeConstituents", n[n.IntersectionTypeConstituents = 520] = "IntersectionTypeConstituents", n[n.ObjectBindingPatternElements = 525136] = "ObjectBindingPatternElements", n[n.ArrayBindingPatternElements = 524880] = "ArrayBindingPatternElements", n[n.ObjectLiteralExpressionProperties = 526226] = "ObjectLiteralExpressionProperties", n[n.ImportClauseEntries = 526226] = "ImportClauseEntries", n[n.ArrayLiteralExpressionElements = 8914] = "ArrayLiteralExpressionElements", n[n.CommaListElements = 528] = "CommaListElements", n[n.CallExpressionArguments = 2576] = "CallExpressionArguments", n[n.NewExpressionArguments = 18960] = "NewExpressionArguments", n[n.TemplateExpressionSpans = 262144] = "TemplateExpressionSpans", n[n.SingleLineBlockStatements = 768] = "SingleLineBlockStatements", n[n.MultiLineBlockStatements = 129] = "MultiLineBlockStatements", n[n.VariableDeclarationList = 528] = "VariableDeclarationList", n[n.SingleLineFunctionBodyStatements = 768] = "SingleLineFunctionBodyStatements", n[n.MultiLineFunctionBodyStatements = 1] = "MultiLineFunctionBodyStatements", n[n.ClassHeritageClauses = 0] = "ClassHeritageClauses", n[n.ClassMembers = 129] = "ClassMembers", n[n.InterfaceMembers = 129] = "InterfaceMembers", n[n.EnumMembers = 145] = "EnumMembers", n[n.CaseBlockClauses = 129] = "CaseBlockClauses", n[n.NamedImportsOrExportsElements = 525136] = "NamedImportsOrExportsElements", n[n.JsxElementOrFragmentChildren = 262144] = "JsxElementOrFragmentChildren", n[n.JsxElementAttributes = 262656] = "JsxElementAttributes", n[n.CaseOrDefaultClauseStatements = 163969] = "CaseOrDefaultClauseStatements", n[n.HeritageClauseTypes = 528] = "HeritageClauseTypes", n[n.SourceFileStatements = 131073] = "SourceFileStatements", n[n.Decorators = 2146305] = "Decorators", n[n.TypeArguments = 53776] = "TypeArguments", n[n.TypeParameters = 53776] = "TypeParameters", n[n.Parameters = 2576] = "Parameters", n[n.IndexSignatureParameters = 8848] = "IndexSignatureParameters", n[n.JSDocComment = 33] = "JSDocComment"; + })(Er = e.ListFormat || (e.ListFormat = {})); + var Ne; + (function(n) { + n[n.None = 0] = "None", n[n.TripleSlashXML = 1] = "TripleSlashXML", n[n.SingleLine = 2] = "SingleLine", n[n.MultiLine = 4] = "MultiLine", n[n.All = 7] = "All", n[n.Default = 7] = "Default"; + })(Ne = e.PragmaKindFlags || (e.PragmaKindFlags = {})), e.commentPragmas = { reference: { args: [{ name: "types", optional: true, captureSpan: true }, { name: "lib", optional: true, captureSpan: true }, { name: "path", optional: true, captureSpan: true }, { name: "no-default-lib", optional: true }, { name: "resolution-mode", optional: true }], kind: 1 }, "amd-dependency": { args: [{ name: "path" }, { name: "name", optional: true }], kind: 1 }, "amd-module": { args: [{ name: "name" }], kind: 1 }, "ts-check": { kind: 2 }, "ts-nocheck": { kind: 2 }, jsx: { args: [{ name: "factory" }], kind: 4 }, jsxfrag: { args: [{ name: "factory" }], kind: 4 }, jsximportsource: { args: [{ name: "factory" }], kind: 4 }, jsxruntime: { args: [{ name: "factory" }], kind: 4 } }; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(A) { + for (var y = 5381, V = 0; V < A.length; V++) + y = (y << 5) + y + A.charCodeAt(V); + return y.toString(); + } + e.generateDjb2Hash = a; + function C() { + Error.stackTraceLimit < 100 && (Error.stackTraceLimit = 100); + } + e.setStackTraceLimit = C; + var w; + (function(A) { + A[A.Created = 0] = "Created", A[A.Changed = 1] = "Changed", A[A.Deleted = 2] = "Deleted"; + })(w = e.FileWatcherEventKind || (e.FileWatcherEventKind = {})); + var B; + (function(A) { + A[A.High = 2e3] = "High", A[A.Medium = 500] = "Medium", A[A.Low = 250] = "Low"; + })(B = e.PollingInterval || (e.PollingInterval = {})), e.missingFileModifiedTime = new Date(0); + function E(A, y) { + return A.getModifiedTime(y) || e.missingFileModifiedTime; + } + e.getModifiedTime = E; + function Q(A) { + var y; + return y = {}, y[B.Low] = A.Low, y[B.Medium] = A.Medium, y[B.High] = A.High, y; + } + var le = { Low: 32, Medium: 64, High: 256 }, N = Q(le); + e.unchangedPollThresholds = Q(le); + function p(A) { + if (!A.getEnvironmentVariable) + return; + var y = P("TSC_WATCH_POLLINGINTERVAL", B); + N = k("TSC_WATCH_POLLINGCHUNKSIZE", le) || N, e.unchangedPollThresholds = k("TSC_WATCH_UNCHANGEDPOLLTHRESHOLDS", le) || e.unchangedPollThresholds; + function V(Y, U) { + return A.getEnvironmentVariable("".concat(Y, "_").concat(U.toUpperCase())); + } + function L(Y) { + var U; + return j("Low"), j("Medium"), j("High"), U; + function j(H) { + var I = V(Y, H); + I && ((U || (U = {}))[H] = Number(I)); + } + } + function P(Y, U) { + var j = L(Y); + if (j) + return H("Low"), H("Medium"), H("High"), true; + return false; + function H(I) { + U[I] = j[I] || U[I]; + } + } + function k(Y, U) { + var j = L(Y); + return (y || j) && Q(j ? Ke(Ke({}, U), j) : U); + } + } + e.setCustomPollingValues = p; + function m(A, y, V, L, P) { + for (var k = V, Y = y.length; L && Y; H(), Y--) { + var U = y[V]; + if (U) { + if (U.isClosed) { + y[V] = void 0; + continue; + } + } else + continue; + L--; + var j = K(U, E(A, U.fileName)); + if (U.isClosed) { + y[V] = void 0; + continue; + } + P == null || P(U, V, j), y[V] && (k < V && (y[k] = U, y[V] = void 0), k++); + } + return V; + function H() { + V++, V === y.length && (k < V && (y.length = k), V = 0, k = 0); + } + } + function G(A) { + var y = [], V = [], L = U(B.Low), P = U(B.Medium), k = U(B.High); + return Y; + function Y(ne, ue, We) { + var Fe = { fileName: ne, callback: ue, unchangedPolls: 0, mtime: E(A, ne) }; + return y.push(Fe), d(Fe, We), { close: function() { + Fe.isClosed = true, e.unorderedRemoveItem(y, Fe); + } }; + } + function U(ne) { + var ue = []; + return ue.pollingInterval = ne, ue.pollIndex = 0, ue.pollScheduled = false, ue; + } + function j(ne) { + ne.pollIndex = I(ne, ne.pollingInterval, ne.pollIndex, N[ne.pollingInterval]), ne.length ? g(ne.pollingInterval) : (e.Debug.assert(ne.pollIndex === 0), ne.pollScheduled = false); + } + function H(ne) { + I(V, B.Low, 0, V.length), j(ne), !ne.pollScheduled && V.length && g(B.Low); + } + function I(ne, ue, We, Fe) { + return m(A, ne, We, Fe, Z); + function Z(Be, ge, Re) { + Re ? (Be.unchangedPolls = 0, ne !== V && (ne[ge] = void 0, D(Be))) : Be.unchangedPolls !== e.unchangedPollThresholds[ue] ? Be.unchangedPolls++ : ne === V ? (Be.unchangedPolls = 1, ne[ge] = void 0, d(Be, B.Low)) : ue !== B.High && (Be.unchangedPolls++, ne[ge] = void 0, d(Be, ue === B.Low ? B.Medium : B.High)); + } + } + function l(ne) { + switch (ne) { + case B.Low: + return L; + case B.Medium: + return P; + case B.High: + return k; + } + } + function d(ne, ue) { + l(ue).push(ne), fe(ue); + } + function D(ne) { + V.push(ne), fe(B.Low); + } + function fe(ne) { + l(ne).pollScheduled || g(ne); + } + function g(ne) { + l(ne).pollScheduled = A.setTimeout(ne === B.Low ? H : j, ne, l(ne)); + } + } + e.createDynamicPriorityPollingWatchFile = G; + function oe(A, y) { + var V = e.createMultiMap(), L = new e.Map(), P = e.createGetCanonicalFileName(y); + return k; + function k(U, j, H, I) { + var l = P(U); + V.add(l, j); + var d = e.getDirectoryPath(l) || ".", D = L.get(d) || Y(e.getDirectoryPath(U) || ".", d, I); + return D.referenceCount++, { close: function() { + D.referenceCount === 1 ? (D.close(), L.delete(d)) : D.referenceCount--, V.remove(l, j); + } }; + } + function Y(U, j, H) { + var I = A(U, 1, function(l, d) { + if (!!e.isString(d)) { + var D = e.getNormalizedAbsolutePath(d, U), fe = D && V.get(P(D)); + if (fe) + for (var g = 0, ne = fe; g < ne.length; g++) { + var ue = ne[g]; + ue(D, w.Changed); + } + } + }, false, B.Medium, H); + return I.referenceCount = 0, L.set(j, I), I; + } + } + function f(A) { + var y = [], V = 0, L; + return P; + function P(U, j) { + var H = { fileName: U, callback: j, mtime: E(A, U) }; + return y.push(H), Y(), { close: function() { + H.isClosed = true, e.unorderedRemoveItem(y, H); + } }; + } + function k() { + L = void 0, V = m(A, y, V, N[B.Low]), Y(); + } + function Y() { + !y.length || L || (L = A.setTimeout(k, B.High)); + } + } + function T(A, y) { + var V = new e.Map(), L = e.createMultiMap(), P = e.createGetCanonicalFileName(y); + return function(k, Y, U, j) { + var H = P(k), I = V.get(H); + return I ? I.refCount++ : V.set(H, { watcher: A(k, function(l, d) { + return e.forEach(L.get(H), function(D) { + return D(l, d); + }); + }, U, j), refCount: 1 }), L.add(H, Y), { close: function() { + var l = e.Debug.checkDefined(V.get(H)); + L.remove(H, Y), l.refCount--, !l.refCount && (V.delete(H), e.closeFileWatcherOf(l)); + } }; + }; + } + e.createSingleFileWatcherPerName = T; + function K(A, y) { + var V = A.mtime.getTime(), L = y.getTime(); + return V !== L ? (A.mtime = y, A.callback(A.fileName, b(V, L)), true) : false; + } + e.onWatchedFileStat = K; + function b(A, y) { + return A === 0 ? w.Created : y === 0 ? w.Deleted : w.Changed; + } + e.getFileWatcherEventKind = b, e.ignoredPaths = ["/node_modules/.", "/.git", "/.#"]; + var se = e.noop; + function J(A) { + return se(A); + } + e.sysLog = J; + function ie(A) { + se = A; + } + e.setSysLog = ie; + function R(A) { + var y = A.watchDirectory, V = A.useCaseSensitiveFileNames, L = A.getCurrentDirectory, P = A.getAccessibleSortedChildDirectories, k = A.directoryExists, Y = A.realpath, U = A.setTimeout, j = A.clearTimeout, H = new e.Map(), I = e.createMultiMap(), l = new e.Map(), d, D = e.getStringComparer(!V), fe = e.createGetCanonicalFileName(V); + return function(ze, Ee, He, rr) { + return He ? g(ze, rr, Ee) : y(ze, Ee, He, rr); + }; + function g(ze, Ee, He) { + var rr = fe(ze), Ie = H.get(rr); + Ie ? Ie.refCount++ : (Ie = { watcher: y(ze, function(we) { + ge(we, Ee) || (Ee != null && Ee.synchronousWatchDirectory ? (ne(rr, we), Be(ze, rr, Ee)) : ue(ze, rr, we, Ee)); + }, false, Ee), refCount: 1, childWatches: e.emptyArray }, H.set(rr, Ie), Be(ze, rr, Ee)); + var _e = He && { dirName: ze, callback: He }; + return _e && I.add(rr, _e), { dirName: ze, close: function() { + var we = e.Debug.checkDefined(H.get(rr)); + _e && I.remove(rr, _e), we.refCount--, !we.refCount && (H.delete(rr), e.closeFileWatcherOf(we), we.childWatches.forEach(e.closeFileWatcher)); + } }; + } + function ne(ze, Ee, He) { + var rr, Ie; + e.isString(Ee) ? rr = Ee : Ie = Ee, I.forEach(function(_e, we) { + var de; + if (!(Ie && Ie.get(we) === true) && (we === ze || e.startsWith(ze, we) && ze[we.length] === e.directorySeparator)) + if (Ie) + if (He) { + var ye = Ie.get(we); + ye ? (de = ye).push.apply(de, He) : Ie.set(we, He.slice()); + } else + Ie.set(we, true); + else + _e.forEach(function(Ae) { + var er = Ae.callback; + return er(rr); + }); + }); + } + function ue(ze, Ee, He, rr) { + var Ie = H.get(Ee); + if (Ie && k(ze)) { + We(ze, Ee, He, rr); + return; + } + ne(Ee, He), Z(Ie); + } + function We(ze, Ee, He, rr) { + var Ie = l.get(Ee); + Ie ? Ie.fileNames.push(He) : l.set(Ee, { dirName: ze, options: rr, fileNames: [He] }), d && (j(d), d = void 0), d = U(Fe, 1e3); + } + function Fe() { + d = void 0, J("sysLog:: onTimerToUpdateChildWatches:: ".concat(l.size)); + for (var ze = e.timestamp(), Ee = new e.Map(); !d && l.size; ) { + var He = l.entries().next(); + e.Debug.assert(!He.done); + var rr = He.value, Ie = rr[0], _e = rr[1], we = _e.dirName, de = _e.options, ye = _e.fileNames; + l.delete(Ie); + var Ae = Be(we, Ie, de); + ne(Ie, Ee, Ae ? void 0 : ye); + } + J("sysLog:: invokingWatchers:: Elapsed:: ".concat(e.timestamp() - ze, "ms:: ").concat(l.size)), I.forEach(function(ir, Cr) { + var Ye = Ee.get(Cr); + Ye && ir.forEach(function(Br) { + var Er = Br.callback, Ne = Br.dirName; + e.isArray(Ye) ? Ye.forEach(Er) : Er(Ne); + }); + }); + var er = e.timestamp() - ze; + J("sysLog:: Elapsed:: ".concat(er, "ms:: onTimerToUpdateChildWatches:: ").concat(l.size, " ").concat(d)); + } + function Z(ze) { + if (!!ze) { + var Ee = ze.childWatches; + ze.childWatches = e.emptyArray; + for (var He = 0, rr = Ee; He < rr.length; He++) { + var Ie = rr[He]; + Ie.close(), Z(H.get(fe(Ie.dirName))); + } + } + } + function Be(ze, Ee, He) { + var rr = H.get(Ee); + if (!rr) + return false; + var Ie, _e = e.enumerateInsertsAndDeletes(k(ze) ? e.mapDefined(P(ze), function(ye) { + var Ae = e.getNormalizedAbsolutePath(ye, ze); + return !ge(Ae, He) && D(Ae, e.normalizePath(Y(Ae))) === 0 ? Ae : void 0; + }) : e.emptyArray, rr.childWatches, function(ye, Ae) { + return D(ye, Ae.dirName); + }, we, e.closeFileWatcher, de); + return rr.childWatches = Ie || e.emptyArray, _e; + function we(ye) { + var Ae = g(ye, He); + de(Ae); + } + function de(ye) { + (Ie || (Ie = [])).push(ye); + } + } + function ge(ze, Ee) { + return e.some(e.ignoredPaths, function(He) { + return Re(ze, He); + }) || ee(ze, Ee, V, L); + } + function Re(ze, Ee) { + return e.stringContains(ze, Ee) ? true : V ? false : e.stringContains(fe(ze), Ee); + } + } + e.createDirectoryWatcherSupportingRecursive = R; + var q; + (function(A) { + A[A.File = 0] = "File", A[A.Directory = 1] = "Directory"; + })(q = e.FileSystemEntryKind || (e.FileSystemEntryKind = {})); + function O(A) { + return function(y, V) { + return A(V === w.Changed ? "change" : "rename", ""); + }; + } + e.createFileWatcherCallback = O; + function ve(A, y, V) { + return function(L) { + L === "rename" ? y(A, V(A) ? w.Created : w.Deleted) : y(A, w.Changed); + }; + } + function ee(A, y, V, L) { + return ((y == null ? void 0 : y.excludeDirectories) || (y == null ? void 0 : y.excludeFiles)) && (e.matchesExclude(A, y == null ? void 0 : y.excludeFiles, V, L()) || e.matchesExclude(A, y == null ? void 0 : y.excludeDirectories, V, L())); + } + function he(A, y, V, L, P) { + return function(k, Y) { + if (k === "rename") { + var U = Y ? e.normalizePath(e.combinePaths(A, Y)) : A; + (!Y || !ee(U, V, L, P)) && y(U); + } + }; + } + function F(A) { + var y = A.pollingWatchFile, V = A.getModifiedTime, L = A.setTimeout, P = A.clearTimeout, k = A.fsWatch, Y = A.fileExists, U = A.useCaseSensitiveFileNames, j = A.getCurrentDirectory, H = A.fsSupportsRecursiveFsWatch, I = A.directoryExists, l = A.getAccessibleSortedChildDirectories, d = A.realpath, D = A.tscWatchFile, fe = A.useNonPollingWatchers, g = A.tscWatchDirectory, ne = A.defaultWatchFileKind, ue, We, Fe, Z; + return { watchFile: Be, watchDirectory: He }; + function Be(_e, we, de, ye) { + ye = ze(ye, fe); + var Ae = e.Debug.checkDefined(ye.watchFile); + switch (Ae) { + case e.WatchFileKind.FixedPollingInterval: + return y(_e, we, B.Low, void 0); + case e.WatchFileKind.PriorityPollingInterval: + return y(_e, we, de, void 0); + case e.WatchFileKind.DynamicPriorityPolling: + return ge()(_e, we, de, void 0); + case e.WatchFileKind.FixedChunkSizePolling: + return Re()(_e, we, void 0, void 0); + case e.WatchFileKind.UseFsEvents: + return k(_e, 0, ve(_e, we, Y), false, de, e.getFallbackOptions(ye)); + case e.WatchFileKind.UseFsEventsOnParentDirectory: + return Fe || (Fe = oe(k, U)), Fe(_e, we, de, e.getFallbackOptions(ye)); + default: + e.Debug.assertNever(Ae); + } + } + function ge() { + return ue || (ue = G({ getModifiedTime: V, setTimeout: L })); + } + function Re() { + return We || (We = f({ getModifiedTime: V, setTimeout: L })); + } + function ze(_e, we) { + if (_e && _e.watchFile !== void 0) + return _e; + switch (D) { + case "PriorityPollingInterval": + return { watchFile: e.WatchFileKind.PriorityPollingInterval }; + case "DynamicPriorityPolling": + return { watchFile: e.WatchFileKind.DynamicPriorityPolling }; + case "UseFsEvents": + return Ee(e.WatchFileKind.UseFsEvents, e.PollingWatchKind.PriorityInterval, _e); + case "UseFsEventsWithFallbackDynamicPolling": + return Ee(e.WatchFileKind.UseFsEvents, e.PollingWatchKind.DynamicPriority, _e); + case "UseFsEventsOnParentDirectory": + we = true; + default: + return we ? Ee(e.WatchFileKind.UseFsEventsOnParentDirectory, e.PollingWatchKind.PriorityInterval, _e) : { watchFile: (ne == null ? void 0 : ne()) || e.WatchFileKind.FixedPollingInterval }; + } + } + function Ee(_e, we, de) { + var ye = de == null ? void 0 : de.fallbackPolling; + return { watchFile: _e, fallbackPolling: ye === void 0 ? we : ye }; + } + function He(_e, we, de, ye) { + return H ? k(_e, 1, he(_e, we, ye, U, j), de, B.Medium, e.getFallbackOptions(ye)) : (Z || (Z = R({ useCaseSensitiveFileNames: U, getCurrentDirectory: j, directoryExists: I, getAccessibleSortedChildDirectories: l, watchDirectory: rr, realpath: d, setTimeout: L, clearTimeout: P })), Z(_e, we, de, ye)); + } + function rr(_e, we, de, ye) { + e.Debug.assert(!de); + var Ae = Ie(ye), er = e.Debug.checkDefined(Ae.watchDirectory); + switch (er) { + case e.WatchDirectoryKind.FixedPollingInterval: + return y(_e, function() { + return we(_e); + }, B.Medium, void 0); + case e.WatchDirectoryKind.DynamicPriorityPolling: + return ge()(_e, function() { + return we(_e); + }, B.Medium, void 0); + case e.WatchDirectoryKind.FixedChunkSizePolling: + return Re()(_e, function() { + return we(_e); + }, void 0, void 0); + case e.WatchDirectoryKind.UseFsEvents: + return k(_e, 1, he(_e, we, ye, U, j), de, B.Medium, e.getFallbackOptions(Ae)); + default: + e.Debug.assertNever(er); + } + } + function Ie(_e) { + if (_e && _e.watchDirectory !== void 0) + return _e; + switch (g) { + case "RecursiveDirectoryUsingFsWatchFile": + return { watchDirectory: e.WatchDirectoryKind.FixedPollingInterval }; + case "RecursiveDirectoryUsingDynamicPriorityPolling": + return { watchDirectory: e.WatchDirectoryKind.DynamicPriorityPolling }; + default: + var we = _e == null ? void 0 : _e.fallbackPolling; + return { watchDirectory: e.WatchDirectoryKind.UseFsEvents, fallbackPolling: we !== void 0 ? we : void 0 }; + } + } + } + e.createSystemWatchFunctions = F; + function x(A) { + var y = A.writeFile; + A.writeFile = function(V, L, P) { + return e.writeFileEnsuringDirectories(V, L, !!P, function(k, Y, U) { + return y.call(A, k, Y, U); + }, function(k) { + return A.createDirectory(k); + }, function(k) { + return A.directoryExists(k); + }); + }; + } + e.patchWriteFileEnsuringDirectory = x; + function X() { + if (!(typeof Eu > "u")) { + var A = Eu.version; + if (!!A) { + var y = A.indexOf("."); + if (y !== -1) + return parseInt(A.substring(1, y)); + } + } + } + e.getNodeMajorVersion = X, e.sys = void 0; + function $(A) { + e.sys = void 0; + } + e.setSys = $, e.sys && e.sys.getEnvironmentVariable && (p(e.sys), e.Debug.setAssertionLevel(/^development$/i.test(e.sys.getEnvironmentVariable("NODE_ENV")) ? 1 : 0)), e.sys && e.sys.debugMode && (e.Debug.isDebugging = true); + })(ke || (ke = {})); + var ke; + (function(e) { + e.directorySeparator = "/", e.altDirectorySeparator = "\\"; + var a = "://", C = /\\/g; + function w(ze) { + return ze === 47 || ze === 92; + } + e.isAnyDirectorySeparator = w; + function B(ze) { + return b(ze) < 0; + } + e.isUrl = B; + function E(ze) { + return b(ze) > 0; + } + e.isRootedDiskPath = E; + function Q(ze) { + var Ee = b(ze); + return Ee > 0 && Ee === ze.length; + } + e.isDiskPathRoot = Q; + function le(ze) { + return b(ze) !== 0; + } + e.pathIsAbsolute = le; + function N(ze) { + return /^\.\.?($|[\\/])/.test(ze); + } + e.pathIsRelative = N; + function p(ze) { + return !le(ze) && !N(ze); + } + e.pathIsBareSpecifier = p; + function m(ze) { + return e.stringContains(ie(ze), "."); + } + e.hasExtension = m; + function G(ze, Ee) { + return ze.length > Ee.length && e.endsWith(ze, Ee); + } + e.fileExtensionIs = G; + function oe(ze, Ee) { + for (var He = 0, rr = Ee; He < rr.length; He++) { + var Ie = rr[He]; + if (G(ze, Ie)) + return true; + } + return false; + } + e.fileExtensionIsOneOf = oe; + function f(ze) { + return ze.length > 0 && w(ze.charCodeAt(ze.length - 1)); + } + e.hasTrailingDirectorySeparator = f; + function T(ze) { + return ze >= 97 && ze <= 122 || ze >= 65 && ze <= 90; + } + function K(ze, Ee) { + var He = ze.charCodeAt(Ee); + if (He === 58) + return Ee + 1; + if (He === 37 && ze.charCodeAt(Ee + 1) === 51) { + var rr = ze.charCodeAt(Ee + 2); + if (rr === 97 || rr === 65) + return Ee + 3; + } + return -1; + } + function b(ze) { + if (!ze) + return 0; + var Ee = ze.charCodeAt(0); + if (Ee === 47 || Ee === 92) { + if (ze.charCodeAt(1) !== Ee) + return 1; + var He = ze.indexOf(Ee === 47 ? e.directorySeparator : e.altDirectorySeparator, 2); + return He < 0 ? ze.length : He + 1; + } + if (T(Ee) && ze.charCodeAt(1) === 58) { + var rr = ze.charCodeAt(2); + if (rr === 47 || rr === 92) + return 3; + if (ze.length === 2) + return 2; + } + var Ie = ze.indexOf(a); + if (Ie !== -1) { + var _e = Ie + a.length, we = ze.indexOf(e.directorySeparator, _e); + if (we !== -1) { + var de = ze.slice(0, Ie), ye = ze.slice(_e, we); + if (de === "file" && (ye === "" || ye === "localhost") && T(ze.charCodeAt(we + 1))) { + var Ae = K(ze, we + 2); + if (Ae !== -1) { + if (ze.charCodeAt(Ae) === 47) + return ~(Ae + 1); + if (Ae === ze.length) + return ~Ae; + } + } + return ~(we + 1); + } + return ~ze.length; + } + return 0; + } + function se(ze) { + var Ee = b(ze); + return Ee < 0 ? ~Ee : Ee; + } + e.getRootLength = se; + function J(ze) { + ze = F(ze); + var Ee = se(ze); + return Ee === ze.length ? ze : (ze = Y(ze), ze.slice(0, Math.max(Ee, ze.lastIndexOf(e.directorySeparator)))); + } + e.getDirectoryPath = J; + function ie(ze, Ee, He) { + ze = F(ze); + var rr = se(ze); + if (rr === ze.length) + return ""; + ze = Y(ze); + var Ie = ze.slice(Math.max(se(ze), ze.lastIndexOf(e.directorySeparator) + 1)), _e = Ee !== void 0 && He !== void 0 ? O(Ie, Ee, He) : void 0; + return _e ? Ie.slice(0, Ie.length - _e.length) : Ie; + } + e.getBaseFileName = ie; + function R(ze, Ee, He) { + if (e.startsWith(Ee, ".") || (Ee = "." + Ee), ze.length >= Ee.length && ze.charCodeAt(ze.length - Ee.length) === 46) { + var rr = ze.slice(ze.length - Ee.length); + if (He(rr, Ee)) + return rr; + } + } + function q(ze, Ee, He) { + if (typeof Ee == "string") + return R(ze, Ee, He) || ""; + for (var rr = 0, Ie = Ee; rr < Ie.length; rr++) { + var _e = Ie[rr], we = R(ze, _e, He); + if (we) + return we; + } + return ""; + } + function O(ze, Ee, He) { + if (Ee) + return q(Y(ze), Ee, He ? e.equateStringsCaseInsensitive : e.equateStringsCaseSensitive); + var rr = ie(ze), Ie = rr.lastIndexOf("."); + return Ie >= 0 ? rr.substring(Ie) : ""; + } + e.getAnyExtensionFromPath = O; + function ve(ze, Ee) { + var He = ze.substring(0, Ee), rr = ze.substring(Ee).split(e.directorySeparator); + return rr.length && !e.lastOrUndefined(rr) && rr.pop(), Ve([He], rr, true); + } + function ee(ze, Ee) { + return Ee === void 0 && (Ee = ""), ze = X(Ee, ze), ve(ze, se(ze)); + } + e.getPathComponents = ee; + function he(ze) { + if (ze.length === 0) + return ""; + var Ee = ze[0] && U(ze[0]); + return Ee + ze.slice(1).join(e.directorySeparator); + } + e.getPathFromPathComponents = he; + function F(ze) { + var Ee = ze.indexOf("\\"); + return Ee === -1 ? ze : (C.lastIndex = Ee, ze.replace(C, e.directorySeparator)); + } + e.normalizeSlashes = F; + function x(ze) { + if (!e.some(ze)) + return []; + for (var Ee = [ze[0]], He = 1; He < ze.length; He++) { + var rr = ze[He]; + if (!!rr && rr !== ".") { + if (rr === "..") { + if (Ee.length > 1) { + if (Ee[Ee.length - 1] !== "..") { + Ee.pop(); + continue; + } + } else if (Ee[0]) + continue; + } + Ee.push(rr); + } + } + return Ee; + } + e.reducePathComponents = x; + function X(ze) { + for (var Ee = [], He = 1; He < arguments.length; He++) + Ee[He - 1] = arguments[He]; + ze && (ze = F(ze)); + for (var rr = 0, Ie = Ee; rr < Ie.length; rr++) { + var _e = Ie[rr]; + !_e || (_e = F(_e), !ze || se(_e) !== 0 ? ze = _e : ze = U(ze) + _e); + } + return ze; + } + e.combinePaths = X; + function $(ze) { + for (var Ee = [], He = 1; He < arguments.length; He++) + Ee[He - 1] = arguments[He]; + return V(e.some(Ee) ? X.apply(void 0, Ve([ze], Ee, false)) : F(ze)); + } + e.resolvePath = $; + function A(ze, Ee) { + return x(ee(ze, Ee)); + } + e.getNormalizedPathComponents = A; + function y(ze, Ee) { + return he(A(ze, Ee)); + } + e.getNormalizedAbsolutePath = y; + function V(ze) { + if (ze = F(ze), !I.test(ze)) + return ze; + var Ee = ze.replace(/\/\.\//g, "/").replace(/^\.\//, ""); + if (Ee !== ze && (ze = Ee, !I.test(ze))) + return ze; + var He = he(x(ee(ze))); + return He && f(ze) ? U(He) : He; + } + e.normalizePath = V; + function L(ze) { + return ze.length === 0 ? "" : ze.slice(1).join(e.directorySeparator); + } + function P(ze, Ee) { + return L(A(ze, Ee)); + } + e.getNormalizedAbsolutePathWithoutRoot = P; + function k(ze, Ee, He) { + var rr = E(ze) ? V(ze) : y(ze, Ee); + return He(rr); + } + e.toPath = k; + function Y(ze) { + return f(ze) ? ze.substr(0, ze.length - 1) : ze; + } + e.removeTrailingDirectorySeparator = Y; + function U(ze) { + return f(ze) ? ze : ze + e.directorySeparator; + } + e.ensureTrailingDirectorySeparator = U; + function j(ze) { + return !le(ze) && !N(ze) ? "./" + ze : ze; + } + e.ensurePathIsNonModuleName = j; + function H(ze, Ee, He, rr) { + var Ie = He !== void 0 && rr !== void 0 ? O(ze, He, rr) : O(ze); + return Ie ? ze.slice(0, ze.length - Ie.length) + (e.startsWith(Ee, ".") ? Ee : "." + Ee) : ze; + } + e.changeAnyExtension = H; + var I = /(?:\/\/)|(?:^|\/)\.\.?(?:$|\/)/; + function l(ze, Ee, He) { + if (ze === Ee) + return 0; + if (ze === void 0) + return -1; + if (Ee === void 0) + return 1; + var rr = ze.substring(0, se(ze)), Ie = Ee.substring(0, se(Ee)), _e = e.compareStringsCaseInsensitive(rr, Ie); + if (_e !== 0) + return _e; + var we = ze.substring(rr.length), de = Ee.substring(Ie.length); + if (!I.test(we) && !I.test(de)) + return He(we, de); + for (var ye = x(ee(ze)), Ae = x(ee(Ee)), er = Math.min(ye.length, Ae.length), ir = 1; ir < er; ir++) { + var Cr = He(ye[ir], Ae[ir]); + if (Cr !== 0) + return Cr; + } + return e.compareValues(ye.length, Ae.length); + } + function d(ze, Ee) { + return l(ze, Ee, e.compareStringsCaseSensitive); + } + e.comparePathsCaseSensitive = d; + function D(ze, Ee) { + return l(ze, Ee, e.compareStringsCaseInsensitive); + } + e.comparePathsCaseInsensitive = D; + function fe(ze, Ee, He, rr) { + return typeof He == "string" ? (ze = X(He, ze), Ee = X(He, Ee)) : typeof He == "boolean" && (rr = He), l(ze, Ee, e.getStringComparer(rr)); + } + e.comparePaths = fe; + function g(ze, Ee, He, rr) { + if (typeof He == "string" ? (ze = X(He, ze), Ee = X(He, Ee)) : typeof He == "boolean" && (rr = He), ze === void 0 || Ee === void 0) + return false; + if (ze === Ee) + return true; + var Ie = x(ee(ze)), _e = x(ee(Ee)); + if (_e.length < Ie.length) + return false; + for (var we = rr ? e.equateStringsCaseInsensitive : e.equateStringsCaseSensitive, de = 0; de < Ie.length; de++) { + var ye = de === 0 ? e.equateStringsCaseInsensitive : we; + if (!ye(Ie[de], _e[de])) + return false; + } + return true; + } + e.containsPath = g; + function ne(ze, Ee, He) { + var rr = He(ze), Ie = He(Ee); + return e.startsWith(rr, Ie + "/") || e.startsWith(rr, Ie + "\\"); + } + e.startsWithDirectory = ne; + function ue(ze, Ee, He, rr) { + var Ie = x(ee(ze)), _e = x(ee(Ee)), we; + for (we = 0; we < Ie.length && we < _e.length; we++) { + var de = rr(Ie[we]), ye = rr(_e[we]), Ae = we === 0 ? e.equateStringsCaseInsensitive : He; + if (!Ae(de, ye)) + break; + } + if (we === 0) + return _e; + for (var er = _e.slice(we), ir = []; we < Ie.length; we++) + ir.push(".."); + return Ve(Ve([""], ir, true), er, true); + } + e.getPathComponentsRelativeTo = ue; + function We(ze, Ee, He) { + e.Debug.assert(se(ze) > 0 == se(Ee) > 0, "Paths must either both be absolute or both be relative"); + var rr = typeof He == "function" ? He : e.identity, Ie = typeof He == "boolean" ? He : false, _e = ue(ze, Ee, Ie ? e.equateStringsCaseInsensitive : e.equateStringsCaseSensitive, rr); + return he(_e); + } + e.getRelativePathFromDirectory = We; + function Fe(ze, Ee, He) { + return E(ze) ? Be(Ee, ze, Ee, He, false) : ze; + } + e.convertToRelativePath = Fe; + function Z(ze, Ee, He) { + return j(We(J(ze), Ee, He)); + } + e.getRelativePathFromFile = Z; + function Be(ze, Ee, He, rr, Ie) { + var _e = ue($(He, ze), $(He, Ee), e.equateStringsCaseSensitive, rr), we = _e[0]; + if (Ie && E(we)) { + var de = we.charAt(0) === e.directorySeparator ? "file://" : "file:///"; + _e[0] = de + we; + } + return he(_e); + } + e.getRelativePathToDirectoryOrUrl = Be; + function ge(ze, Ee) { + for (; ; ) { + var He = Ee(ze); + if (He !== void 0) + return He; + var rr = J(ze); + if (rr === ze) + return; + ze = rr; + } + } + e.forEachAncestorDirectory = ge; + function Re(ze) { + return e.endsWith(ze, "/node_modules"); + } + e.isNodeModulesDirectory = Re; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C, w, B, E, Q, le, N) { + return { code: C, category: w, key: B, message: E, reportsUnnecessary: Q, elidedInCompatabilityPyramid: le, reportsDeprecated: N }; + } + e.Diagnostics = { Unterminated_string_literal: a(1002, e.DiagnosticCategory.Error, "Unterminated_string_literal_1002", "Unterminated string literal."), Identifier_expected: a(1003, e.DiagnosticCategory.Error, "Identifier_expected_1003", "Identifier expected."), _0_expected: a(1005, e.DiagnosticCategory.Error, "_0_expected_1005", "'{0}' expected."), A_file_cannot_have_a_reference_to_itself: a(1006, e.DiagnosticCategory.Error, "A_file_cannot_have_a_reference_to_itself_1006", "A file cannot have a reference to itself."), The_parser_expected_to_find_a_1_to_match_the_0_token_here: a(1007, e.DiagnosticCategory.Error, "The_parser_expected_to_find_a_1_to_match_the_0_token_here_1007", "The parser expected to find a '{1}' to match the '{0}' token here."), Trailing_comma_not_allowed: a(1009, e.DiagnosticCategory.Error, "Trailing_comma_not_allowed_1009", "Trailing comma not allowed."), Asterisk_Slash_expected: a(1010, e.DiagnosticCategory.Error, "Asterisk_Slash_expected_1010", "'*/' expected."), An_element_access_expression_should_take_an_argument: a(1011, e.DiagnosticCategory.Error, "An_element_access_expression_should_take_an_argument_1011", "An element access expression should take an argument."), Unexpected_token: a(1012, e.DiagnosticCategory.Error, "Unexpected_token_1012", "Unexpected token."), A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma: a(1013, e.DiagnosticCategory.Error, "A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma_1013", "A rest parameter or binding pattern may not have a trailing comma."), A_rest_parameter_must_be_last_in_a_parameter_list: a(1014, e.DiagnosticCategory.Error, "A_rest_parameter_must_be_last_in_a_parameter_list_1014", "A rest parameter must be last in a parameter list."), Parameter_cannot_have_question_mark_and_initializer: a(1015, e.DiagnosticCategory.Error, "Parameter_cannot_have_question_mark_and_initializer_1015", "Parameter cannot have question mark and initializer."), A_required_parameter_cannot_follow_an_optional_parameter: a(1016, e.DiagnosticCategory.Error, "A_required_parameter_cannot_follow_an_optional_parameter_1016", "A required parameter cannot follow an optional parameter."), An_index_signature_cannot_have_a_rest_parameter: a(1017, e.DiagnosticCategory.Error, "An_index_signature_cannot_have_a_rest_parameter_1017", "An index signature cannot have a rest parameter."), An_index_signature_parameter_cannot_have_an_accessibility_modifier: a(1018, e.DiagnosticCategory.Error, "An_index_signature_parameter_cannot_have_an_accessibility_modifier_1018", "An index signature parameter cannot have an accessibility modifier."), An_index_signature_parameter_cannot_have_a_question_mark: a(1019, e.DiagnosticCategory.Error, "An_index_signature_parameter_cannot_have_a_question_mark_1019", "An index signature parameter cannot have a question mark."), An_index_signature_parameter_cannot_have_an_initializer: a(1020, e.DiagnosticCategory.Error, "An_index_signature_parameter_cannot_have_an_initializer_1020", "An index signature parameter cannot have an initializer."), An_index_signature_must_have_a_type_annotation: a(1021, e.DiagnosticCategory.Error, "An_index_signature_must_have_a_type_annotation_1021", "An index signature must have a type annotation."), An_index_signature_parameter_must_have_a_type_annotation: a(1022, e.DiagnosticCategory.Error, "An_index_signature_parameter_must_have_a_type_annotation_1022", "An index signature parameter must have a type annotation."), readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature: a(1024, e.DiagnosticCategory.Error, "readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024", "'readonly' modifier can only appear on a property declaration or index signature."), An_index_signature_cannot_have_a_trailing_comma: a(1025, e.DiagnosticCategory.Error, "An_index_signature_cannot_have_a_trailing_comma_1025", "An index signature cannot have a trailing comma."), Accessibility_modifier_already_seen: a(1028, e.DiagnosticCategory.Error, "Accessibility_modifier_already_seen_1028", "Accessibility modifier already seen."), _0_modifier_must_precede_1_modifier: a(1029, e.DiagnosticCategory.Error, "_0_modifier_must_precede_1_modifier_1029", "'{0}' modifier must precede '{1}' modifier."), _0_modifier_already_seen: a(1030, e.DiagnosticCategory.Error, "_0_modifier_already_seen_1030", "'{0}' modifier already seen."), _0_modifier_cannot_appear_on_class_elements_of_this_kind: a(1031, e.DiagnosticCategory.Error, "_0_modifier_cannot_appear_on_class_elements_of_this_kind_1031", "'{0}' modifier cannot appear on class elements of this kind."), super_must_be_followed_by_an_argument_list_or_member_access: a(1034, e.DiagnosticCategory.Error, "super_must_be_followed_by_an_argument_list_or_member_access_1034", "'super' must be followed by an argument list or member access."), Only_ambient_modules_can_use_quoted_names: a(1035, e.DiagnosticCategory.Error, "Only_ambient_modules_can_use_quoted_names_1035", "Only ambient modules can use quoted names."), Statements_are_not_allowed_in_ambient_contexts: a(1036, e.DiagnosticCategory.Error, "Statements_are_not_allowed_in_ambient_contexts_1036", "Statements are not allowed in ambient contexts."), A_declare_modifier_cannot_be_used_in_an_already_ambient_context: a(1038, e.DiagnosticCategory.Error, "A_declare_modifier_cannot_be_used_in_an_already_ambient_context_1038", "A 'declare' modifier cannot be used in an already ambient context."), Initializers_are_not_allowed_in_ambient_contexts: a(1039, e.DiagnosticCategory.Error, "Initializers_are_not_allowed_in_ambient_contexts_1039", "Initializers are not allowed in ambient contexts."), _0_modifier_cannot_be_used_in_an_ambient_context: a(1040, e.DiagnosticCategory.Error, "_0_modifier_cannot_be_used_in_an_ambient_context_1040", "'{0}' modifier cannot be used in an ambient context."), _0_modifier_cannot_be_used_here: a(1042, e.DiagnosticCategory.Error, "_0_modifier_cannot_be_used_here_1042", "'{0}' modifier cannot be used here."), _0_modifier_cannot_appear_on_a_module_or_namespace_element: a(1044, e.DiagnosticCategory.Error, "_0_modifier_cannot_appear_on_a_module_or_namespace_element_1044", "'{0}' modifier cannot appear on a module or namespace element."), Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier: a(1046, e.DiagnosticCategory.Error, "Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier_1046", "Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier."), A_rest_parameter_cannot_be_optional: a(1047, e.DiagnosticCategory.Error, "A_rest_parameter_cannot_be_optional_1047", "A rest parameter cannot be optional."), A_rest_parameter_cannot_have_an_initializer: a(1048, e.DiagnosticCategory.Error, "A_rest_parameter_cannot_have_an_initializer_1048", "A rest parameter cannot have an initializer."), A_set_accessor_must_have_exactly_one_parameter: a(1049, e.DiagnosticCategory.Error, "A_set_accessor_must_have_exactly_one_parameter_1049", "A 'set' accessor must have exactly one parameter."), A_set_accessor_cannot_have_an_optional_parameter: a(1051, e.DiagnosticCategory.Error, "A_set_accessor_cannot_have_an_optional_parameter_1051", "A 'set' accessor cannot have an optional parameter."), A_set_accessor_parameter_cannot_have_an_initializer: a(1052, e.DiagnosticCategory.Error, "A_set_accessor_parameter_cannot_have_an_initializer_1052", "A 'set' accessor parameter cannot have an initializer."), A_set_accessor_cannot_have_rest_parameter: a(1053, e.DiagnosticCategory.Error, "A_set_accessor_cannot_have_rest_parameter_1053", "A 'set' accessor cannot have rest parameter."), A_get_accessor_cannot_have_parameters: a(1054, e.DiagnosticCategory.Error, "A_get_accessor_cannot_have_parameters_1054", "A 'get' accessor cannot have parameters."), Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value: a(1055, e.DiagnosticCategory.Error, "Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Prom_1055", "Type '{0}' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value."), Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher: a(1056, e.DiagnosticCategory.Error, "Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher_1056", "Accessors are only available when targeting ECMAScript 5 and higher."), The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member: a(1058, e.DiagnosticCategory.Error, "The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_t_1058", "The return type of an async function must either be a valid promise or must not contain a callable 'then' member."), A_promise_must_have_a_then_method: a(1059, e.DiagnosticCategory.Error, "A_promise_must_have_a_then_method_1059", "A promise must have a 'then' method."), The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback: a(1060, e.DiagnosticCategory.Error, "The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback_1060", "The first parameter of the 'then' method of a promise must be a callback."), Enum_member_must_have_initializer: a(1061, e.DiagnosticCategory.Error, "Enum_member_must_have_initializer_1061", "Enum member must have initializer."), Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method: a(1062, e.DiagnosticCategory.Error, "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062", "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."), An_export_assignment_cannot_be_used_in_a_namespace: a(1063, e.DiagnosticCategory.Error, "An_export_assignment_cannot_be_used_in_a_namespace_1063", "An export assignment cannot be used in a namespace."), The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0: a(1064, e.DiagnosticCategory.Error, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_wri_1064", "The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise<{0}>'?"), In_ambient_enum_declarations_member_initializer_must_be_constant_expression: a(1066, e.DiagnosticCategory.Error, "In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066", "In ambient enum declarations member initializer must be constant expression."), Unexpected_token_A_constructor_method_accessor_or_property_was_expected: a(1068, e.DiagnosticCategory.Error, "Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068", "Unexpected token. A constructor, method, accessor, or property was expected."), Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces: a(1069, e.DiagnosticCategory.Error, "Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069", "Unexpected token. A type parameter name was expected without curly braces."), _0_modifier_cannot_appear_on_a_type_member: a(1070, e.DiagnosticCategory.Error, "_0_modifier_cannot_appear_on_a_type_member_1070", "'{0}' modifier cannot appear on a type member."), _0_modifier_cannot_appear_on_an_index_signature: a(1071, e.DiagnosticCategory.Error, "_0_modifier_cannot_appear_on_an_index_signature_1071", "'{0}' modifier cannot appear on an index signature."), A_0_modifier_cannot_be_used_with_an_import_declaration: a(1079, e.DiagnosticCategory.Error, "A_0_modifier_cannot_be_used_with_an_import_declaration_1079", "A '{0}' modifier cannot be used with an import declaration."), Invalid_reference_directive_syntax: a(1084, e.DiagnosticCategory.Error, "Invalid_reference_directive_syntax_1084", "Invalid 'reference' directive syntax."), Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0: a(1085, e.DiagnosticCategory.Error, "Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0_1085", "Octal literals are not available when targeting ECMAScript 5 and higher. Use the syntax '{0}'."), _0_modifier_cannot_appear_on_a_constructor_declaration: a(1089, e.DiagnosticCategory.Error, "_0_modifier_cannot_appear_on_a_constructor_declaration_1089", "'{0}' modifier cannot appear on a constructor declaration."), _0_modifier_cannot_appear_on_a_parameter: a(1090, e.DiagnosticCategory.Error, "_0_modifier_cannot_appear_on_a_parameter_1090", "'{0}' modifier cannot appear on a parameter."), Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement: a(1091, e.DiagnosticCategory.Error, "Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement_1091", "Only a single variable declaration is allowed in a 'for...in' statement."), Type_parameters_cannot_appear_on_a_constructor_declaration: a(1092, e.DiagnosticCategory.Error, "Type_parameters_cannot_appear_on_a_constructor_declaration_1092", "Type parameters cannot appear on a constructor declaration."), Type_annotation_cannot_appear_on_a_constructor_declaration: a(1093, e.DiagnosticCategory.Error, "Type_annotation_cannot_appear_on_a_constructor_declaration_1093", "Type annotation cannot appear on a constructor declaration."), An_accessor_cannot_have_type_parameters: a(1094, e.DiagnosticCategory.Error, "An_accessor_cannot_have_type_parameters_1094", "An accessor cannot have type parameters."), A_set_accessor_cannot_have_a_return_type_annotation: a(1095, e.DiagnosticCategory.Error, "A_set_accessor_cannot_have_a_return_type_annotation_1095", "A 'set' accessor cannot have a return type annotation."), An_index_signature_must_have_exactly_one_parameter: a(1096, e.DiagnosticCategory.Error, "An_index_signature_must_have_exactly_one_parameter_1096", "An index signature must have exactly one parameter."), _0_list_cannot_be_empty: a(1097, e.DiagnosticCategory.Error, "_0_list_cannot_be_empty_1097", "'{0}' list cannot be empty."), Type_parameter_list_cannot_be_empty: a(1098, e.DiagnosticCategory.Error, "Type_parameter_list_cannot_be_empty_1098", "Type parameter list cannot be empty."), Type_argument_list_cannot_be_empty: a(1099, e.DiagnosticCategory.Error, "Type_argument_list_cannot_be_empty_1099", "Type argument list cannot be empty."), Invalid_use_of_0_in_strict_mode: a(1100, e.DiagnosticCategory.Error, "Invalid_use_of_0_in_strict_mode_1100", "Invalid use of '{0}' in strict mode."), with_statements_are_not_allowed_in_strict_mode: a(1101, e.DiagnosticCategory.Error, "with_statements_are_not_allowed_in_strict_mode_1101", "'with' statements are not allowed in strict mode."), delete_cannot_be_called_on_an_identifier_in_strict_mode: a(1102, e.DiagnosticCategory.Error, "delete_cannot_be_called_on_an_identifier_in_strict_mode_1102", "'delete' cannot be called on an identifier in strict mode."), for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules: a(1103, e.DiagnosticCategory.Error, "for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1103", "'for await' loops are only allowed within async functions and at the top levels of modules."), A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement: a(1104, e.DiagnosticCategory.Error, "A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement_1104", "A 'continue' statement can only be used within an enclosing iteration statement."), A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement: a(1105, e.DiagnosticCategory.Error, "A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement_1105", "A 'break' statement can only be used within an enclosing iteration or switch statement."), The_left_hand_side_of_a_for_of_statement_may_not_be_async: a(1106, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_of_statement_may_not_be_async_1106", "The left-hand side of a 'for...of' statement may not be 'async'."), Jump_target_cannot_cross_function_boundary: a(1107, e.DiagnosticCategory.Error, "Jump_target_cannot_cross_function_boundary_1107", "Jump target cannot cross function boundary."), A_return_statement_can_only_be_used_within_a_function_body: a(1108, e.DiagnosticCategory.Error, "A_return_statement_can_only_be_used_within_a_function_body_1108", "A 'return' statement can only be used within a function body."), Expression_expected: a(1109, e.DiagnosticCategory.Error, "Expression_expected_1109", "Expression expected."), Type_expected: a(1110, e.DiagnosticCategory.Error, "Type_expected_1110", "Type expected."), A_default_clause_cannot_appear_more_than_once_in_a_switch_statement: a(1113, e.DiagnosticCategory.Error, "A_default_clause_cannot_appear_more_than_once_in_a_switch_statement_1113", "A 'default' clause cannot appear more than once in a 'switch' statement."), Duplicate_label_0: a(1114, e.DiagnosticCategory.Error, "Duplicate_label_0_1114", "Duplicate label '{0}'."), A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement: a(1115, e.DiagnosticCategory.Error, "A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement_1115", "A 'continue' statement can only jump to a label of an enclosing iteration statement."), A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement: a(1116, e.DiagnosticCategory.Error, "A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement_1116", "A 'break' statement can only jump to a label of an enclosing statement."), An_object_literal_cannot_have_multiple_properties_with_the_same_name: a(1117, e.DiagnosticCategory.Error, "An_object_literal_cannot_have_multiple_properties_with_the_same_name_1117", "An object literal cannot have multiple properties with the same name."), An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name: a(1118, e.DiagnosticCategory.Error, "An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name_1118", "An object literal cannot have multiple get/set accessors with the same name."), An_object_literal_cannot_have_property_and_accessor_with_the_same_name: a(1119, e.DiagnosticCategory.Error, "An_object_literal_cannot_have_property_and_accessor_with_the_same_name_1119", "An object literal cannot have property and accessor with the same name."), An_export_assignment_cannot_have_modifiers: a(1120, e.DiagnosticCategory.Error, "An_export_assignment_cannot_have_modifiers_1120", "An export assignment cannot have modifiers."), Octal_literals_are_not_allowed_in_strict_mode: a(1121, e.DiagnosticCategory.Error, "Octal_literals_are_not_allowed_in_strict_mode_1121", "Octal literals are not allowed in strict mode."), Variable_declaration_list_cannot_be_empty: a(1123, e.DiagnosticCategory.Error, "Variable_declaration_list_cannot_be_empty_1123", "Variable declaration list cannot be empty."), Digit_expected: a(1124, e.DiagnosticCategory.Error, "Digit_expected_1124", "Digit expected."), Hexadecimal_digit_expected: a(1125, e.DiagnosticCategory.Error, "Hexadecimal_digit_expected_1125", "Hexadecimal digit expected."), Unexpected_end_of_text: a(1126, e.DiagnosticCategory.Error, "Unexpected_end_of_text_1126", "Unexpected end of text."), Invalid_character: a(1127, e.DiagnosticCategory.Error, "Invalid_character_1127", "Invalid character."), Declaration_or_statement_expected: a(1128, e.DiagnosticCategory.Error, "Declaration_or_statement_expected_1128", "Declaration or statement expected."), Statement_expected: a(1129, e.DiagnosticCategory.Error, "Statement_expected_1129", "Statement expected."), case_or_default_expected: a(1130, e.DiagnosticCategory.Error, "case_or_default_expected_1130", "'case' or 'default' expected."), Property_or_signature_expected: a(1131, e.DiagnosticCategory.Error, "Property_or_signature_expected_1131", "Property or signature expected."), Enum_member_expected: a(1132, e.DiagnosticCategory.Error, "Enum_member_expected_1132", "Enum member expected."), Variable_declaration_expected: a(1134, e.DiagnosticCategory.Error, "Variable_declaration_expected_1134", "Variable declaration expected."), Argument_expression_expected: a(1135, e.DiagnosticCategory.Error, "Argument_expression_expected_1135", "Argument expression expected."), Property_assignment_expected: a(1136, e.DiagnosticCategory.Error, "Property_assignment_expected_1136", "Property assignment expected."), Expression_or_comma_expected: a(1137, e.DiagnosticCategory.Error, "Expression_or_comma_expected_1137", "Expression or comma expected."), Parameter_declaration_expected: a(1138, e.DiagnosticCategory.Error, "Parameter_declaration_expected_1138", "Parameter declaration expected."), Type_parameter_declaration_expected: a(1139, e.DiagnosticCategory.Error, "Type_parameter_declaration_expected_1139", "Type parameter declaration expected."), Type_argument_expected: a(1140, e.DiagnosticCategory.Error, "Type_argument_expected_1140", "Type argument expected."), String_literal_expected: a(1141, e.DiagnosticCategory.Error, "String_literal_expected_1141", "String literal expected."), Line_break_not_permitted_here: a(1142, e.DiagnosticCategory.Error, "Line_break_not_permitted_here_1142", "Line break not permitted here."), or_expected: a(1144, e.DiagnosticCategory.Error, "or_expected_1144", "'{' or ';' expected."), Declaration_expected: a(1146, e.DiagnosticCategory.Error, "Declaration_expected_1146", "Declaration expected."), Import_declarations_in_a_namespace_cannot_reference_a_module: a(1147, e.DiagnosticCategory.Error, "Import_declarations_in_a_namespace_cannot_reference_a_module_1147", "Import declarations in a namespace cannot reference a module."), Cannot_use_imports_exports_or_module_augmentations_when_module_is_none: a(1148, e.DiagnosticCategory.Error, "Cannot_use_imports_exports_or_module_augmentations_when_module_is_none_1148", "Cannot use imports, exports, or module augmentations when '--module' is 'none'."), File_name_0_differs_from_already_included_file_name_1_only_in_casing: a(1149, e.DiagnosticCategory.Error, "File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149", "File name '{0}' differs from already included file name '{1}' only in casing."), const_declarations_must_be_initialized: a(1155, e.DiagnosticCategory.Error, "const_declarations_must_be_initialized_1155", "'const' declarations must be initialized."), const_declarations_can_only_be_declared_inside_a_block: a(1156, e.DiagnosticCategory.Error, "const_declarations_can_only_be_declared_inside_a_block_1156", "'const' declarations can only be declared inside a block."), let_declarations_can_only_be_declared_inside_a_block: a(1157, e.DiagnosticCategory.Error, "let_declarations_can_only_be_declared_inside_a_block_1157", "'let' declarations can only be declared inside a block."), Unterminated_template_literal: a(1160, e.DiagnosticCategory.Error, "Unterminated_template_literal_1160", "Unterminated template literal."), Unterminated_regular_expression_literal: a(1161, e.DiagnosticCategory.Error, "Unterminated_regular_expression_literal_1161", "Unterminated regular expression literal."), An_object_member_cannot_be_declared_optional: a(1162, e.DiagnosticCategory.Error, "An_object_member_cannot_be_declared_optional_1162", "An object member cannot be declared optional."), A_yield_expression_is_only_allowed_in_a_generator_body: a(1163, e.DiagnosticCategory.Error, "A_yield_expression_is_only_allowed_in_a_generator_body_1163", "A 'yield' expression is only allowed in a generator body."), Computed_property_names_are_not_allowed_in_enums: a(1164, e.DiagnosticCategory.Error, "Computed_property_names_are_not_allowed_in_enums_1164", "Computed property names are not allowed in enums."), A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type: a(1165, e.DiagnosticCategory.Error, "A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_t_1165", "A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type."), A_computed_property_name_in_a_class_property_declaration_must_have_a_simple_literal_type_or_a_unique_symbol_type: a(1166, e.DiagnosticCategory.Error, "A_computed_property_name_in_a_class_property_declaration_must_have_a_simple_literal_type_or_a_unique_1166", "A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type."), A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type: a(1168, e.DiagnosticCategory.Error, "A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_ty_1168", "A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type."), A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type: a(1169, e.DiagnosticCategory.Error, "A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_1169", "A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type."), A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type: a(1170, e.DiagnosticCategory.Error, "A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type__1170", "A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type."), A_comma_expression_is_not_allowed_in_a_computed_property_name: a(1171, e.DiagnosticCategory.Error, "A_comma_expression_is_not_allowed_in_a_computed_property_name_1171", "A comma expression is not allowed in a computed property name."), extends_clause_already_seen: a(1172, e.DiagnosticCategory.Error, "extends_clause_already_seen_1172", "'extends' clause already seen."), extends_clause_must_precede_implements_clause: a(1173, e.DiagnosticCategory.Error, "extends_clause_must_precede_implements_clause_1173", "'extends' clause must precede 'implements' clause."), Classes_can_only_extend_a_single_class: a(1174, e.DiagnosticCategory.Error, "Classes_can_only_extend_a_single_class_1174", "Classes can only extend a single class."), implements_clause_already_seen: a(1175, e.DiagnosticCategory.Error, "implements_clause_already_seen_1175", "'implements' clause already seen."), Interface_declaration_cannot_have_implements_clause: a(1176, e.DiagnosticCategory.Error, "Interface_declaration_cannot_have_implements_clause_1176", "Interface declaration cannot have 'implements' clause."), Binary_digit_expected: a(1177, e.DiagnosticCategory.Error, "Binary_digit_expected_1177", "Binary digit expected."), Octal_digit_expected: a(1178, e.DiagnosticCategory.Error, "Octal_digit_expected_1178", "Octal digit expected."), Unexpected_token_expected: a(1179, e.DiagnosticCategory.Error, "Unexpected_token_expected_1179", "Unexpected token. '{' expected."), Property_destructuring_pattern_expected: a(1180, e.DiagnosticCategory.Error, "Property_destructuring_pattern_expected_1180", "Property destructuring pattern expected."), Array_element_destructuring_pattern_expected: a(1181, e.DiagnosticCategory.Error, "Array_element_destructuring_pattern_expected_1181", "Array element destructuring pattern expected."), A_destructuring_declaration_must_have_an_initializer: a(1182, e.DiagnosticCategory.Error, "A_destructuring_declaration_must_have_an_initializer_1182", "A destructuring declaration must have an initializer."), An_implementation_cannot_be_declared_in_ambient_contexts: a(1183, e.DiagnosticCategory.Error, "An_implementation_cannot_be_declared_in_ambient_contexts_1183", "An implementation cannot be declared in ambient contexts."), Modifiers_cannot_appear_here: a(1184, e.DiagnosticCategory.Error, "Modifiers_cannot_appear_here_1184", "Modifiers cannot appear here."), Merge_conflict_marker_encountered: a(1185, e.DiagnosticCategory.Error, "Merge_conflict_marker_encountered_1185", "Merge conflict marker encountered."), A_rest_element_cannot_have_an_initializer: a(1186, e.DiagnosticCategory.Error, "A_rest_element_cannot_have_an_initializer_1186", "A rest element cannot have an initializer."), A_parameter_property_may_not_be_declared_using_a_binding_pattern: a(1187, e.DiagnosticCategory.Error, "A_parameter_property_may_not_be_declared_using_a_binding_pattern_1187", "A parameter property may not be declared using a binding pattern."), Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement: a(1188, e.DiagnosticCategory.Error, "Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement_1188", "Only a single variable declaration is allowed in a 'for...of' statement."), The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer: a(1189, e.DiagnosticCategory.Error, "The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer_1189", "The variable declaration of a 'for...in' statement cannot have an initializer."), The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer: a(1190, e.DiagnosticCategory.Error, "The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer_1190", "The variable declaration of a 'for...of' statement cannot have an initializer."), An_import_declaration_cannot_have_modifiers: a(1191, e.DiagnosticCategory.Error, "An_import_declaration_cannot_have_modifiers_1191", "An import declaration cannot have modifiers."), Module_0_has_no_default_export: a(1192, e.DiagnosticCategory.Error, "Module_0_has_no_default_export_1192", "Module '{0}' has no default export."), An_export_declaration_cannot_have_modifiers: a(1193, e.DiagnosticCategory.Error, "An_export_declaration_cannot_have_modifiers_1193", "An export declaration cannot have modifiers."), Export_declarations_are_not_permitted_in_a_namespace: a(1194, e.DiagnosticCategory.Error, "Export_declarations_are_not_permitted_in_a_namespace_1194", "Export declarations are not permitted in a namespace."), export_Asterisk_does_not_re_export_a_default: a(1195, e.DiagnosticCategory.Error, "export_Asterisk_does_not_re_export_a_default_1195", "'export *' does not re-export a default."), Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified: a(1196, e.DiagnosticCategory.Error, "Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified_1196", "Catch clause variable type annotation must be 'any' or 'unknown' if specified."), Catch_clause_variable_cannot_have_an_initializer: a(1197, e.DiagnosticCategory.Error, "Catch_clause_variable_cannot_have_an_initializer_1197", "Catch clause variable cannot have an initializer."), An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive: a(1198, e.DiagnosticCategory.Error, "An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive_1198", "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."), Unterminated_Unicode_escape_sequence: a(1199, e.DiagnosticCategory.Error, "Unterminated_Unicode_escape_sequence_1199", "Unterminated Unicode escape sequence."), Line_terminator_not_permitted_before_arrow: a(1200, e.DiagnosticCategory.Error, "Line_terminator_not_permitted_before_arrow_1200", "Line terminator not permitted before arrow."), Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead: a(1202, e.DiagnosticCategory.Error, "Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202", `Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.`), Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead: a(1203, e.DiagnosticCategory.Error, "Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203", "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead."), Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type: a(1205, e.DiagnosticCategory.Error, "Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type_1205", "Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'."), Decorators_are_not_valid_here: a(1206, e.DiagnosticCategory.Error, "Decorators_are_not_valid_here_1206", "Decorators are not valid here."), Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name: a(1207, e.DiagnosticCategory.Error, "Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207", "Decorators cannot be applied to multiple get/set accessors of the same name."), _0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module: a(1208, e.DiagnosticCategory.Error, "_0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_imp_1208", "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module."), Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode: a(1210, e.DiagnosticCategory.Error, "Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of__1210", "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode."), A_class_declaration_without_the_default_modifier_must_have_a_name: a(1211, e.DiagnosticCategory.Error, "A_class_declaration_without_the_default_modifier_must_have_a_name_1211", "A class declaration without the 'default' modifier must have a name."), Identifier_expected_0_is_a_reserved_word_in_strict_mode: a(1212, e.DiagnosticCategory.Error, "Identifier_expected_0_is_a_reserved_word_in_strict_mode_1212", "Identifier expected. '{0}' is a reserved word in strict mode."), Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: a(1213, e.DiagnosticCategory.Error, "Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_stric_1213", "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode."), Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode: a(1214, e.DiagnosticCategory.Error, "Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode_1214", "Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode."), Invalid_use_of_0_Modules_are_automatically_in_strict_mode: a(1215, e.DiagnosticCategory.Error, "Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215", "Invalid use of '{0}'. Modules are automatically in strict mode."), Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules: a(1216, e.DiagnosticCategory.Error, "Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216", "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."), Export_assignment_is_not_supported_when_module_flag_is_system: a(1218, e.DiagnosticCategory.Error, "Export_assignment_is_not_supported_when_module_flag_is_system_1218", "Export assignment is not supported when '--module' flag is 'system'."), Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning: a(1219, e.DiagnosticCategory.Error, "Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219", "Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning."), Generators_are_not_allowed_in_an_ambient_context: a(1221, e.DiagnosticCategory.Error, "Generators_are_not_allowed_in_an_ambient_context_1221", "Generators are not allowed in an ambient context."), An_overload_signature_cannot_be_declared_as_a_generator: a(1222, e.DiagnosticCategory.Error, "An_overload_signature_cannot_be_declared_as_a_generator_1222", "An overload signature cannot be declared as a generator."), _0_tag_already_specified: a(1223, e.DiagnosticCategory.Error, "_0_tag_already_specified_1223", "'{0}' tag already specified."), Signature_0_must_be_a_type_predicate: a(1224, e.DiagnosticCategory.Error, "Signature_0_must_be_a_type_predicate_1224", "Signature '{0}' must be a type predicate."), Cannot_find_parameter_0: a(1225, e.DiagnosticCategory.Error, "Cannot_find_parameter_0_1225", "Cannot find parameter '{0}'."), Type_predicate_0_is_not_assignable_to_1: a(1226, e.DiagnosticCategory.Error, "Type_predicate_0_is_not_assignable_to_1_1226", "Type predicate '{0}' is not assignable to '{1}'."), Parameter_0_is_not_in_the_same_position_as_parameter_1: a(1227, e.DiagnosticCategory.Error, "Parameter_0_is_not_in_the_same_position_as_parameter_1_1227", "Parameter '{0}' is not in the same position as parameter '{1}'."), A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods: a(1228, e.DiagnosticCategory.Error, "A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods_1228", "A type predicate is only allowed in return type position for functions and methods."), A_type_predicate_cannot_reference_a_rest_parameter: a(1229, e.DiagnosticCategory.Error, "A_type_predicate_cannot_reference_a_rest_parameter_1229", "A type predicate cannot reference a rest parameter."), A_type_predicate_cannot_reference_element_0_in_a_binding_pattern: a(1230, e.DiagnosticCategory.Error, "A_type_predicate_cannot_reference_element_0_in_a_binding_pattern_1230", "A type predicate cannot reference element '{0}' in a binding pattern."), An_export_assignment_must_be_at_the_top_level_of_a_file_or_module_declaration: a(1231, e.DiagnosticCategory.Error, "An_export_assignment_must_be_at_the_top_level_of_a_file_or_module_declaration_1231", "An export assignment must be at the top level of a file or module declaration."), An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module: a(1232, e.DiagnosticCategory.Error, "An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module_1232", "An import declaration can only be used at the top level of a namespace or module."), An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module: a(1233, e.DiagnosticCategory.Error, "An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module_1233", "An export declaration can only be used at the top level of a namespace or module."), An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file: a(1234, e.DiagnosticCategory.Error, "An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file_1234", "An ambient module declaration is only allowed at the top level in a file."), A_namespace_declaration_is_only_allowed_at_the_top_level_of_a_namespace_or_module: a(1235, e.DiagnosticCategory.Error, "A_namespace_declaration_is_only_allowed_at_the_top_level_of_a_namespace_or_module_1235", "A namespace declaration is only allowed at the top level of a namespace or module."), The_return_type_of_a_property_decorator_function_must_be_either_void_or_any: a(1236, e.DiagnosticCategory.Error, "The_return_type_of_a_property_decorator_function_must_be_either_void_or_any_1236", "The return type of a property decorator function must be either 'void' or 'any'."), The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any: a(1237, e.DiagnosticCategory.Error, "The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any_1237", "The return type of a parameter decorator function must be either 'void' or 'any'."), Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression: a(1238, e.DiagnosticCategory.Error, "Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression_1238", "Unable to resolve signature of class decorator when called as an expression."), Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression: a(1239, e.DiagnosticCategory.Error, "Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression_1239", "Unable to resolve signature of parameter decorator when called as an expression."), Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression: a(1240, e.DiagnosticCategory.Error, "Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression_1240", "Unable to resolve signature of property decorator when called as an expression."), Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression: a(1241, e.DiagnosticCategory.Error, "Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression_1241", "Unable to resolve signature of method decorator when called as an expression."), abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration: a(1242, e.DiagnosticCategory.Error, "abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration_1242", "'abstract' modifier can only appear on a class, method, or property declaration."), _0_modifier_cannot_be_used_with_1_modifier: a(1243, e.DiagnosticCategory.Error, "_0_modifier_cannot_be_used_with_1_modifier_1243", "'{0}' modifier cannot be used with '{1}' modifier."), Abstract_methods_can_only_appear_within_an_abstract_class: a(1244, e.DiagnosticCategory.Error, "Abstract_methods_can_only_appear_within_an_abstract_class_1244", "Abstract methods can only appear within an abstract class."), Method_0_cannot_have_an_implementation_because_it_is_marked_abstract: a(1245, e.DiagnosticCategory.Error, "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245", "Method '{0}' cannot have an implementation because it is marked abstract."), An_interface_property_cannot_have_an_initializer: a(1246, e.DiagnosticCategory.Error, "An_interface_property_cannot_have_an_initializer_1246", "An interface property cannot have an initializer."), A_type_literal_property_cannot_have_an_initializer: a(1247, e.DiagnosticCategory.Error, "A_type_literal_property_cannot_have_an_initializer_1247", "A type literal property cannot have an initializer."), A_class_member_cannot_have_the_0_keyword: a(1248, e.DiagnosticCategory.Error, "A_class_member_cannot_have_the_0_keyword_1248", "A class member cannot have the '{0}' keyword."), A_decorator_can_only_decorate_a_method_implementation_not_an_overload: a(1249, e.DiagnosticCategory.Error, "A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249", "A decorator can only decorate a method implementation, not an overload."), Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5: a(1250, e.DiagnosticCategory.Error, "Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_1250", "Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'."), Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode: a(1251, e.DiagnosticCategory.Error, "Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_d_1251", "Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode."), Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode: a(1252, e.DiagnosticCategory.Error, "Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_1252", "Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Modules are automatically in strict mode."), A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_reference: a(1254, e.DiagnosticCategory.Error, "A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_refere_1254", "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference."), A_definite_assignment_assertion_is_not_permitted_in_this_context: a(1255, e.DiagnosticCategory.Error, "A_definite_assignment_assertion_is_not_permitted_in_this_context_1255", "A definite assignment assertion '!' is not permitted in this context."), A_required_element_cannot_follow_an_optional_element: a(1257, e.DiagnosticCategory.Error, "A_required_element_cannot_follow_an_optional_element_1257", "A required element cannot follow an optional element."), A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration: a(1258, e.DiagnosticCategory.Error, "A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration_1258", "A default export must be at the top level of a file or module declaration."), Module_0_can_only_be_default_imported_using_the_1_flag: a(1259, e.DiagnosticCategory.Error, "Module_0_can_only_be_default_imported_using_the_1_flag_1259", "Module '{0}' can only be default-imported using the '{1}' flag"), Keywords_cannot_contain_escape_characters: a(1260, e.DiagnosticCategory.Error, "Keywords_cannot_contain_escape_characters_1260", "Keywords cannot contain escape characters."), Already_included_file_name_0_differs_from_file_name_1_only_in_casing: a(1261, e.DiagnosticCategory.Error, "Already_included_file_name_0_differs_from_file_name_1_only_in_casing_1261", "Already included file name '{0}' differs from file name '{1}' only in casing."), Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module: a(1262, e.DiagnosticCategory.Error, "Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module_1262", "Identifier expected. '{0}' is a reserved word at the top-level of a module."), Declarations_with_initializers_cannot_also_have_definite_assignment_assertions: a(1263, e.DiagnosticCategory.Error, "Declarations_with_initializers_cannot_also_have_definite_assignment_assertions_1263", "Declarations with initializers cannot also have definite assignment assertions."), Declarations_with_definite_assignment_assertions_must_also_have_type_annotations: a(1264, e.DiagnosticCategory.Error, "Declarations_with_definite_assignment_assertions_must_also_have_type_annotations_1264", "Declarations with definite assignment assertions must also have type annotations."), A_rest_element_cannot_follow_another_rest_element: a(1265, e.DiagnosticCategory.Error, "A_rest_element_cannot_follow_another_rest_element_1265", "A rest element cannot follow another rest element."), An_optional_element_cannot_follow_a_rest_element: a(1266, e.DiagnosticCategory.Error, "An_optional_element_cannot_follow_a_rest_element_1266", "An optional element cannot follow a rest element."), Property_0_cannot_have_an_initializer_because_it_is_marked_abstract: a(1267, e.DiagnosticCategory.Error, "Property_0_cannot_have_an_initializer_because_it_is_marked_abstract_1267", "Property '{0}' cannot have an initializer because it is marked abstract."), An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type: a(1268, e.DiagnosticCategory.Error, "An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type_1268", "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type."), Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided: a(1269, e.DiagnosticCategory.Error, "Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided_1269", "Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided."), Decorator_function_return_type_0_is_not_assignable_to_type_1: a(1270, e.DiagnosticCategory.Error, "Decorator_function_return_type_0_is_not_assignable_to_type_1_1270", "Decorator function return type '{0}' is not assignable to type '{1}'."), Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any: a(1271, e.DiagnosticCategory.Error, "Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any_1271", "Decorator function return type is '{0}' but is expected to be 'void' or 'any'."), A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled: a(1272, e.DiagnosticCategory.Error, "A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_w_1272", "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled."), _0_modifier_cannot_appear_on_a_type_parameter: a(1273, e.DiagnosticCategory.Error, "_0_modifier_cannot_appear_on_a_type_parameter_1273", "'{0}' modifier cannot appear on a type parameter"), _0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias: a(1274, e.DiagnosticCategory.Error, "_0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias_1274", "'{0}' modifier can only appear on a type parameter of a class, interface or type alias"), with_statements_are_not_allowed_in_an_async_function_block: a(1300, e.DiagnosticCategory.Error, "with_statements_are_not_allowed_in_an_async_function_block_1300", "'with' statements are not allowed in an async function block."), await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules: a(1308, e.DiagnosticCategory.Error, "await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1308", "'await' expressions are only allowed within async functions and at the top levels of modules."), The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level: a(1309, e.DiagnosticCategory.Error, "The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level_1309", "The current file is a CommonJS module and cannot use 'await' at the top level."), Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern: a(1312, e.DiagnosticCategory.Error, "Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_1312", "Did you mean to use a ':'? An '=' can only follow a property name when the containing object literal is part of a destructuring pattern."), The_body_of_an_if_statement_cannot_be_the_empty_statement: a(1313, e.DiagnosticCategory.Error, "The_body_of_an_if_statement_cannot_be_the_empty_statement_1313", "The body of an 'if' statement cannot be the empty statement."), Global_module_exports_may_only_appear_in_module_files: a(1314, e.DiagnosticCategory.Error, "Global_module_exports_may_only_appear_in_module_files_1314", "Global module exports may only appear in module files."), Global_module_exports_may_only_appear_in_declaration_files: a(1315, e.DiagnosticCategory.Error, "Global_module_exports_may_only_appear_in_declaration_files_1315", "Global module exports may only appear in declaration files."), Global_module_exports_may_only_appear_at_top_level: a(1316, e.DiagnosticCategory.Error, "Global_module_exports_may_only_appear_at_top_level_1316", "Global module exports may only appear at top level."), A_parameter_property_cannot_be_declared_using_a_rest_parameter: a(1317, e.DiagnosticCategory.Error, "A_parameter_property_cannot_be_declared_using_a_rest_parameter_1317", "A parameter property cannot be declared using a rest parameter."), An_abstract_accessor_cannot_have_an_implementation: a(1318, e.DiagnosticCategory.Error, "An_abstract_accessor_cannot_have_an_implementation_1318", "An abstract accessor cannot have an implementation."), A_default_export_can_only_be_used_in_an_ECMAScript_style_module: a(1319, e.DiagnosticCategory.Error, "A_default_export_can_only_be_used_in_an_ECMAScript_style_module_1319", "A default export can only be used in an ECMAScript-style module."), Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member: a(1320, e.DiagnosticCategory.Error, "Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member_1320", "Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member."), Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member: a(1321, e.DiagnosticCategory.Error, "Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_cal_1321", "Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member."), Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member: a(1322, e.DiagnosticCategory.Error, "Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_con_1322", "Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member."), Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext: a(1323, e.DiagnosticCategory.Error, "Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd__1323", "Dynamic imports are only supported when the '--module' flag is set to 'es2020', 'es2022', 'esnext', 'commonjs', 'amd', 'system', 'umd', 'node16', or 'nodenext'."), Dynamic_imports_only_support_a_second_argument_when_the_module_option_is_set_to_esnext_node16_or_nodenext: a(1324, e.DiagnosticCategory.Error, "Dynamic_imports_only_support_a_second_argument_when_the_module_option_is_set_to_esnext_node16_or_nod_1324", "Dynamic imports only support a second argument when the '--module' option is set to 'esnext', 'node16', or 'nodenext'."), Argument_of_dynamic_import_cannot_be_spread_element: a(1325, e.DiagnosticCategory.Error, "Argument_of_dynamic_import_cannot_be_spread_element_1325", "Argument of dynamic import cannot be spread element."), This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot_have_type_arguments: a(1326, e.DiagnosticCategory.Error, "This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot__1326", "This use of 'import' is invalid. 'import()' calls can be written, but they must have parentheses and cannot have type arguments."), String_literal_with_double_quotes_expected: a(1327, e.DiagnosticCategory.Error, "String_literal_with_double_quotes_expected_1327", "String literal with double quotes expected."), Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_literal: a(1328, e.DiagnosticCategory.Error, "Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_li_1328", "Property value can only be string literal, numeric literal, 'true', 'false', 'null', object literal or array literal."), _0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0: a(1329, e.DiagnosticCategory.Error, "_0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write__1329", "'{0}' accepts too few arguments to be used as a decorator here. Did you mean to call it first and write '@{0}()'?"), A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly: a(1330, e.DiagnosticCategory.Error, "A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly_1330", "A property of an interface or type literal whose type is a 'unique symbol' type must be 'readonly'."), A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly: a(1331, e.DiagnosticCategory.Error, "A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly_1331", "A property of a class whose type is a 'unique symbol' type must be both 'static' and 'readonly'."), A_variable_whose_type_is_a_unique_symbol_type_must_be_const: a(1332, e.DiagnosticCategory.Error, "A_variable_whose_type_is_a_unique_symbol_type_must_be_const_1332", "A variable whose type is a 'unique symbol' type must be 'const'."), unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name: a(1333, e.DiagnosticCategory.Error, "unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name_1333", "'unique symbol' types may not be used on a variable declaration with a binding name."), unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement: a(1334, e.DiagnosticCategory.Error, "unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement_1334", "'unique symbol' types are only allowed on variables in a variable statement."), unique_symbol_types_are_not_allowed_here: a(1335, e.DiagnosticCategory.Error, "unique_symbol_types_are_not_allowed_here_1335", "'unique symbol' types are not allowed here."), An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead: a(1337, e.DiagnosticCategory.Error, "An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_o_1337", "An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead."), infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type: a(1338, e.DiagnosticCategory.Error, "infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type_1338", "'infer' declarations are only permitted in the 'extends' clause of a conditional type."), Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here: a(1339, e.DiagnosticCategory.Error, "Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here_1339", "Module '{0}' does not refer to a value, but is used as a value here."), Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0: a(1340, e.DiagnosticCategory.Error, "Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0_1340", "Module '{0}' does not refer to a type, but is used as a type here. Did you mean 'typeof import('{0}')'?"), Type_arguments_cannot_be_used_here: a(1342, e.DiagnosticCategory.Error, "Type_arguments_cannot_be_used_here_1342", "Type arguments cannot be used here."), The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_es2020_es2022_esnext_system_node16_or_nodenext: a(1343, e.DiagnosticCategory.Error, "The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_es2020_es2022_esnext_system__1343", "The 'import.meta' meta-property is only allowed when the '--module' option is 'es2020', 'es2022', 'esnext', 'system', 'node16', or 'nodenext'."), A_label_is_not_allowed_here: a(1344, e.DiagnosticCategory.Error, "A_label_is_not_allowed_here_1344", "'A label is not allowed here."), An_expression_of_type_void_cannot_be_tested_for_truthiness: a(1345, e.DiagnosticCategory.Error, "An_expression_of_type_void_cannot_be_tested_for_truthiness_1345", "An expression of type 'void' cannot be tested for truthiness."), This_parameter_is_not_allowed_with_use_strict_directive: a(1346, e.DiagnosticCategory.Error, "This_parameter_is_not_allowed_with_use_strict_directive_1346", "This parameter is not allowed with 'use strict' directive."), use_strict_directive_cannot_be_used_with_non_simple_parameter_list: a(1347, e.DiagnosticCategory.Error, "use_strict_directive_cannot_be_used_with_non_simple_parameter_list_1347", "'use strict' directive cannot be used with non-simple parameter list."), Non_simple_parameter_declared_here: a(1348, e.DiagnosticCategory.Error, "Non_simple_parameter_declared_here_1348", "Non-simple parameter declared here."), use_strict_directive_used_here: a(1349, e.DiagnosticCategory.Error, "use_strict_directive_used_here_1349", "'use strict' directive used here."), Print_the_final_configuration_instead_of_building: a(1350, e.DiagnosticCategory.Message, "Print_the_final_configuration_instead_of_building_1350", "Print the final configuration instead of building."), An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal: a(1351, e.DiagnosticCategory.Error, "An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal_1351", "An identifier or keyword cannot immediately follow a numeric literal."), A_bigint_literal_cannot_use_exponential_notation: a(1352, e.DiagnosticCategory.Error, "A_bigint_literal_cannot_use_exponential_notation_1352", "A bigint literal cannot use exponential notation."), A_bigint_literal_must_be_an_integer: a(1353, e.DiagnosticCategory.Error, "A_bigint_literal_must_be_an_integer_1353", "A bigint literal must be an integer."), readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types: a(1354, e.DiagnosticCategory.Error, "readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354", "'readonly' type modifier is only permitted on array and tuple literal types."), A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals: a(1355, e.DiagnosticCategory.Error, "A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array__1355", "A 'const' assertions can only be applied to references to enum members, or string, number, boolean, array, or object literals."), Did_you_mean_to_mark_this_function_as_async: a(1356, e.DiagnosticCategory.Error, "Did_you_mean_to_mark_this_function_as_async_1356", "Did you mean to mark this function as 'async'?"), An_enum_member_name_must_be_followed_by_a_or: a(1357, e.DiagnosticCategory.Error, "An_enum_member_name_must_be_followed_by_a_or_1357", "An enum member name must be followed by a ',', '=', or '}'."), Tagged_template_expressions_are_not_permitted_in_an_optional_chain: a(1358, e.DiagnosticCategory.Error, "Tagged_template_expressions_are_not_permitted_in_an_optional_chain_1358", "Tagged template expressions are not permitted in an optional chain."), Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here: a(1359, e.DiagnosticCategory.Error, "Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here_1359", "Identifier expected. '{0}' is a reserved word that cannot be used here."), _0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type: a(1361, e.DiagnosticCategory.Error, "_0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type_1361", "'{0}' cannot be used as a value because it was imported using 'import type'."), _0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type: a(1362, e.DiagnosticCategory.Error, "_0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type_1362", "'{0}' cannot be used as a value because it was exported using 'export type'."), A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both: a(1363, e.DiagnosticCategory.Error, "A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both_1363", "A type-only import can specify a default import or named bindings, but not both."), Convert_to_type_only_export: a(1364, e.DiagnosticCategory.Message, "Convert_to_type_only_export_1364", "Convert to type-only export"), Convert_all_re_exported_types_to_type_only_exports: a(1365, e.DiagnosticCategory.Message, "Convert_all_re_exported_types_to_type_only_exports_1365", "Convert all re-exported types to type-only exports"), Split_into_two_separate_import_declarations: a(1366, e.DiagnosticCategory.Message, "Split_into_two_separate_import_declarations_1366", "Split into two separate import declarations"), Split_all_invalid_type_only_imports: a(1367, e.DiagnosticCategory.Message, "Split_all_invalid_type_only_imports_1367", "Split all invalid type-only imports"), Did_you_mean_0: a(1369, e.DiagnosticCategory.Message, "Did_you_mean_0_1369", "Did you mean '{0}'?"), This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error: a(1371, e.DiagnosticCategory.Error, "This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set__1371", "This import is never used as a value and must use 'import type' because 'importsNotUsedAsValues' is set to 'error'."), Convert_to_type_only_import: a(1373, e.DiagnosticCategory.Message, "Convert_to_type_only_import_1373", "Convert to type-only import"), Convert_all_imports_not_used_as_a_value_to_type_only_imports: a(1374, e.DiagnosticCategory.Message, "Convert_all_imports_not_used_as_a_value_to_type_only_imports_1374", "Convert all imports not used as a value to type-only imports"), await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: a(1375, e.DiagnosticCategory.Error, "await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_fi_1375", "'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."), _0_was_imported_here: a(1376, e.DiagnosticCategory.Message, "_0_was_imported_here_1376", "'{0}' was imported here."), _0_was_exported_here: a(1377, e.DiagnosticCategory.Message, "_0_was_exported_here_1377", "'{0}' was exported here."), Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher: a(1378, e.DiagnosticCategory.Error, "Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378", "Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher."), An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type: a(1379, e.DiagnosticCategory.Error, "An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type_1379", "An import alias cannot reference a declaration that was exported using 'export type'."), An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type: a(1380, e.DiagnosticCategory.Error, "An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type_1380", "An import alias cannot reference a declaration that was imported using 'import type'."), Unexpected_token_Did_you_mean_or_rbrace: a(1381, e.DiagnosticCategory.Error, "Unexpected_token_Did_you_mean_or_rbrace_1381", "Unexpected token. Did you mean `{'}'}` or `}`?"), Unexpected_token_Did_you_mean_or_gt: a(1382, e.DiagnosticCategory.Error, "Unexpected_token_Did_you_mean_or_gt_1382", "Unexpected token. Did you mean `{'>'}` or `>`?"), Only_named_exports_may_use_export_type: a(1383, e.DiagnosticCategory.Error, "Only_named_exports_may_use_export_type_1383", "Only named exports may use 'export type'."), Function_type_notation_must_be_parenthesized_when_used_in_a_union_type: a(1385, e.DiagnosticCategory.Error, "Function_type_notation_must_be_parenthesized_when_used_in_a_union_type_1385", "Function type notation must be parenthesized when used in a union type."), Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type: a(1386, e.DiagnosticCategory.Error, "Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type_1386", "Constructor type notation must be parenthesized when used in a union type."), Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type: a(1387, e.DiagnosticCategory.Error, "Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1387", "Function type notation must be parenthesized when used in an intersection type."), Constructor_type_notation_must_be_parenthesized_when_used_in_an_intersection_type: a(1388, e.DiagnosticCategory.Error, "Constructor_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1388", "Constructor type notation must be parenthesized when used in an intersection type."), _0_is_not_allowed_as_a_variable_declaration_name: a(1389, e.DiagnosticCategory.Error, "_0_is_not_allowed_as_a_variable_declaration_name_1389", "'{0}' is not allowed as a variable declaration name."), _0_is_not_allowed_as_a_parameter_name: a(1390, e.DiagnosticCategory.Error, "_0_is_not_allowed_as_a_parameter_name_1390", "'{0}' is not allowed as a parameter name."), An_import_alias_cannot_use_import_type: a(1392, e.DiagnosticCategory.Error, "An_import_alias_cannot_use_import_type_1392", "An import alias cannot use 'import type'"), Imported_via_0_from_file_1: a(1393, e.DiagnosticCategory.Message, "Imported_via_0_from_file_1_1393", "Imported via {0} from file '{1}'"), Imported_via_0_from_file_1_with_packageId_2: a(1394, e.DiagnosticCategory.Message, "Imported_via_0_from_file_1_with_packageId_2_1394", "Imported via {0} from file '{1}' with packageId '{2}'"), Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions: a(1395, e.DiagnosticCategory.Message, "Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions_1395", "Imported via {0} from file '{1}' to import 'importHelpers' as specified in compilerOptions"), Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions: a(1396, e.DiagnosticCategory.Message, "Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions_1396", "Imported via {0} from file '{1}' with packageId '{2}' to import 'importHelpers' as specified in compilerOptions"), Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions: a(1397, e.DiagnosticCategory.Message, "Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions_1397", "Imported via {0} from file '{1}' to import 'jsx' and 'jsxs' factory functions"), Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions: a(1398, e.DiagnosticCategory.Message, "Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions_1398", "Imported via {0} from file '{1}' with packageId '{2}' to import 'jsx' and 'jsxs' factory functions"), File_is_included_via_import_here: a(1399, e.DiagnosticCategory.Message, "File_is_included_via_import_here_1399", "File is included via import here."), Referenced_via_0_from_file_1: a(1400, e.DiagnosticCategory.Message, "Referenced_via_0_from_file_1_1400", "Referenced via '{0}' from file '{1}'"), File_is_included_via_reference_here: a(1401, e.DiagnosticCategory.Message, "File_is_included_via_reference_here_1401", "File is included via reference here."), Type_library_referenced_via_0_from_file_1: a(1402, e.DiagnosticCategory.Message, "Type_library_referenced_via_0_from_file_1_1402", "Type library referenced via '{0}' from file '{1}'"), Type_library_referenced_via_0_from_file_1_with_packageId_2: a(1403, e.DiagnosticCategory.Message, "Type_library_referenced_via_0_from_file_1_with_packageId_2_1403", "Type library referenced via '{0}' from file '{1}' with packageId '{2}'"), File_is_included_via_type_library_reference_here: a(1404, e.DiagnosticCategory.Message, "File_is_included_via_type_library_reference_here_1404", "File is included via type library reference here."), Library_referenced_via_0_from_file_1: a(1405, e.DiagnosticCategory.Message, "Library_referenced_via_0_from_file_1_1405", "Library referenced via '{0}' from file '{1}'"), File_is_included_via_library_reference_here: a(1406, e.DiagnosticCategory.Message, "File_is_included_via_library_reference_here_1406", "File is included via library reference here."), Matched_by_include_pattern_0_in_1: a(1407, e.DiagnosticCategory.Message, "Matched_by_include_pattern_0_in_1_1407", "Matched by include pattern '{0}' in '{1}'"), File_is_matched_by_include_pattern_specified_here: a(1408, e.DiagnosticCategory.Message, "File_is_matched_by_include_pattern_specified_here_1408", "File is matched by include pattern specified here."), Part_of_files_list_in_tsconfig_json: a(1409, e.DiagnosticCategory.Message, "Part_of_files_list_in_tsconfig_json_1409", "Part of 'files' list in tsconfig.json"), File_is_matched_by_files_list_specified_here: a(1410, e.DiagnosticCategory.Message, "File_is_matched_by_files_list_specified_here_1410", "File is matched by 'files' list specified here."), Output_from_referenced_project_0_included_because_1_specified: a(1411, e.DiagnosticCategory.Message, "Output_from_referenced_project_0_included_because_1_specified_1411", "Output from referenced project '{0}' included because '{1}' specified"), Output_from_referenced_project_0_included_because_module_is_specified_as_none: a(1412, e.DiagnosticCategory.Message, "Output_from_referenced_project_0_included_because_module_is_specified_as_none_1412", "Output from referenced project '{0}' included because '--module' is specified as 'none'"), File_is_output_from_referenced_project_specified_here: a(1413, e.DiagnosticCategory.Message, "File_is_output_from_referenced_project_specified_here_1413", "File is output from referenced project specified here."), Source_from_referenced_project_0_included_because_1_specified: a(1414, e.DiagnosticCategory.Message, "Source_from_referenced_project_0_included_because_1_specified_1414", "Source from referenced project '{0}' included because '{1}' specified"), Source_from_referenced_project_0_included_because_module_is_specified_as_none: a(1415, e.DiagnosticCategory.Message, "Source_from_referenced_project_0_included_because_module_is_specified_as_none_1415", "Source from referenced project '{0}' included because '--module' is specified as 'none'"), File_is_source_from_referenced_project_specified_here: a(1416, e.DiagnosticCategory.Message, "File_is_source_from_referenced_project_specified_here_1416", "File is source from referenced project specified here."), Entry_point_of_type_library_0_specified_in_compilerOptions: a(1417, e.DiagnosticCategory.Message, "Entry_point_of_type_library_0_specified_in_compilerOptions_1417", "Entry point of type library '{0}' specified in compilerOptions"), Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1: a(1418, e.DiagnosticCategory.Message, "Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1_1418", "Entry point of type library '{0}' specified in compilerOptions with packageId '{1}'"), File_is_entry_point_of_type_library_specified_here: a(1419, e.DiagnosticCategory.Message, "File_is_entry_point_of_type_library_specified_here_1419", "File is entry point of type library specified here."), Entry_point_for_implicit_type_library_0: a(1420, e.DiagnosticCategory.Message, "Entry_point_for_implicit_type_library_0_1420", "Entry point for implicit type library '{0}'"), Entry_point_for_implicit_type_library_0_with_packageId_1: a(1421, e.DiagnosticCategory.Message, "Entry_point_for_implicit_type_library_0_with_packageId_1_1421", "Entry point for implicit type library '{0}' with packageId '{1}'"), Library_0_specified_in_compilerOptions: a(1422, e.DiagnosticCategory.Message, "Library_0_specified_in_compilerOptions_1422", "Library '{0}' specified in compilerOptions"), File_is_library_specified_here: a(1423, e.DiagnosticCategory.Message, "File_is_library_specified_here_1423", "File is library specified here."), Default_library: a(1424, e.DiagnosticCategory.Message, "Default_library_1424", "Default library"), Default_library_for_target_0: a(1425, e.DiagnosticCategory.Message, "Default_library_for_target_0_1425", "Default library for target '{0}'"), File_is_default_library_for_target_specified_here: a(1426, e.DiagnosticCategory.Message, "File_is_default_library_for_target_specified_here_1426", "File is default library for target specified here."), Root_file_specified_for_compilation: a(1427, e.DiagnosticCategory.Message, "Root_file_specified_for_compilation_1427", "Root file specified for compilation"), File_is_output_of_project_reference_source_0: a(1428, e.DiagnosticCategory.Message, "File_is_output_of_project_reference_source_0_1428", "File is output of project reference source '{0}'"), File_redirects_to_file_0: a(1429, e.DiagnosticCategory.Message, "File_redirects_to_file_0_1429", "File redirects to file '{0}'"), The_file_is_in_the_program_because_Colon: a(1430, e.DiagnosticCategory.Message, "The_file_is_in_the_program_because_Colon_1430", "The file is in the program because:"), for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: a(1431, e.DiagnosticCategory.Error, "for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_1431", "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."), Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher: a(1432, e.DiagnosticCategory.Error, "Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_nod_1432", "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher."), Decorators_may_not_be_applied_to_this_parameters: a(1433, e.DiagnosticCategory.Error, "Decorators_may_not_be_applied_to_this_parameters_1433", "Decorators may not be applied to 'this' parameters."), Unexpected_keyword_or_identifier: a(1434, e.DiagnosticCategory.Error, "Unexpected_keyword_or_identifier_1434", "Unexpected keyword or identifier."), Unknown_keyword_or_identifier_Did_you_mean_0: a(1435, e.DiagnosticCategory.Error, "Unknown_keyword_or_identifier_Did_you_mean_0_1435", "Unknown keyword or identifier. Did you mean '{0}'?"), Decorators_must_precede_the_name_and_all_keywords_of_property_declarations: a(1436, e.DiagnosticCategory.Error, "Decorators_must_precede_the_name_and_all_keywords_of_property_declarations_1436", "Decorators must precede the name and all keywords of property declarations."), Namespace_must_be_given_a_name: a(1437, e.DiagnosticCategory.Error, "Namespace_must_be_given_a_name_1437", "Namespace must be given a name."), Interface_must_be_given_a_name: a(1438, e.DiagnosticCategory.Error, "Interface_must_be_given_a_name_1438", "Interface must be given a name."), Type_alias_must_be_given_a_name: a(1439, e.DiagnosticCategory.Error, "Type_alias_must_be_given_a_name_1439", "Type alias must be given a name."), Variable_declaration_not_allowed_at_this_location: a(1440, e.DiagnosticCategory.Error, "Variable_declaration_not_allowed_at_this_location_1440", "Variable declaration not allowed at this location."), Cannot_start_a_function_call_in_a_type_annotation: a(1441, e.DiagnosticCategory.Error, "Cannot_start_a_function_call_in_a_type_annotation_1441", "Cannot start a function call in a type annotation."), Expected_for_property_initializer: a(1442, e.DiagnosticCategory.Error, "Expected_for_property_initializer_1442", "Expected '=' for property initializer."), Module_declaration_names_may_only_use_or_quoted_strings: a(1443, e.DiagnosticCategory.Error, "Module_declaration_names_may_only_use_or_quoted_strings_1443", `Module declaration names may only use ' or " quoted strings.`), _0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: a(1444, e.DiagnosticCategory.Error, "_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedMod_1444", "'{0}' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), _0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled: a(1446, e.DiagnosticCategory.Error, "_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveVa_1446", "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled."), _0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled: a(1448, e.DiagnosticCategory.Error, "_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isol_1448", "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when 'isolatedModules' is enabled."), Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed: a(1449, e.DiagnosticCategory.Message, "Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed_1449", "Preserve unused imported values in the JavaScript output that would otherwise be removed."), Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments: a(1450, e.DiagnosticCategory.Message, "Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments_1450", "Dynamic imports can only accept a module specifier and an optional assertion as arguments"), Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression: a(1451, e.DiagnosticCategory.Error, "Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member__1451", "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression"), Resolution_modes_are_only_supported_when_moduleResolution_is_node16_or_nodenext: a(1452, e.DiagnosticCategory.Error, "Resolution_modes_are_only_supported_when_moduleResolution_is_node16_or_nodenext_1452", "Resolution modes are only supported when `moduleResolution` is `node16` or `nodenext`."), resolution_mode_should_be_either_require_or_import: a(1453, e.DiagnosticCategory.Error, "resolution_mode_should_be_either_require_or_import_1453", "`resolution-mode` should be either `require` or `import`."), resolution_mode_can_only_be_set_for_type_only_imports: a(1454, e.DiagnosticCategory.Error, "resolution_mode_can_only_be_set_for_type_only_imports_1454", "`resolution-mode` can only be set for type-only imports."), resolution_mode_is_the_only_valid_key_for_type_import_assertions: a(1455, e.DiagnosticCategory.Error, "resolution_mode_is_the_only_valid_key_for_type_import_assertions_1455", "`resolution-mode` is the only valid key for type import assertions."), Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require: a(1456, e.DiagnosticCategory.Error, "Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require_1456", "Type import assertions should have exactly one key - `resolution-mode` - with value `import` or `require`."), The_import_meta_meta_property_is_not_allowed_in_files_which_will_build_into_CommonJS_output: a(1470, e.DiagnosticCategory.Error, "The_import_meta_meta_property_is_not_allowed_in_files_which_will_build_into_CommonJS_output_1470", "The 'import.meta' meta-property is not allowed in files which will build into CommonJS output."), Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_synchronously_Use_dynamic_import_instead: a(1471, e.DiagnosticCategory.Error, "Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_c_1471", "Module '{0}' cannot be imported using this construct. The specifier only resolves to an ES module, which cannot be imported synchronously. Use dynamic import instead."), catch_or_finally_expected: a(1472, e.DiagnosticCategory.Error, "catch_or_finally_expected_1472", "'catch' or 'finally' expected."), An_import_declaration_can_only_be_used_at_the_top_level_of_a_module: a(1473, e.DiagnosticCategory.Error, "An_import_declaration_can_only_be_used_at_the_top_level_of_a_module_1473", "An import declaration can only be used at the top level of a module."), An_export_declaration_can_only_be_used_at_the_top_level_of_a_module: a(1474, e.DiagnosticCategory.Error, "An_export_declaration_can_only_be_used_at_the_top_level_of_a_module_1474", "An export declaration can only be used at the top level of a module."), Control_what_method_is_used_to_detect_module_format_JS_files: a(1475, e.DiagnosticCategory.Message, "Control_what_method_is_used_to_detect_module_format_JS_files_1475", "Control what method is used to detect module-format JS files."), auto_Colon_Treat_files_with_imports_exports_import_meta_jsx_with_jsx_Colon_react_jsx_or_esm_format_with_module_Colon_node16_as_modules: a(1476, e.DiagnosticCategory.Message, "auto_Colon_Treat_files_with_imports_exports_import_meta_jsx_with_jsx_Colon_react_jsx_or_esm_format_w_1476", '"auto": Treat files with imports, exports, import.meta, jsx (with jsx: react-jsx), or esm format (with module: node16+) as modules.'), The_types_of_0_are_incompatible_between_these_types: a(2200, e.DiagnosticCategory.Error, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."), The_types_returned_by_0_are_incompatible_between_these_types: a(2201, e.DiagnosticCategory.Error, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."), Call_signature_return_types_0_and_1_are_incompatible: a(2202, e.DiagnosticCategory.Error, "Call_signature_return_types_0_and_1_are_incompatible_2202", "Call signature return types '{0}' and '{1}' are incompatible.", void 0, true), Construct_signature_return_types_0_and_1_are_incompatible: a(2203, e.DiagnosticCategory.Error, "Construct_signature_return_types_0_and_1_are_incompatible_2203", "Construct signature return types '{0}' and '{1}' are incompatible.", void 0, true), Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1: a(2204, e.DiagnosticCategory.Error, "Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1_2204", "Call signatures with no arguments have incompatible return types '{0}' and '{1}'.", void 0, true), Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1: a(2205, e.DiagnosticCategory.Error, "Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1_2205", "Construct signatures with no arguments have incompatible return types '{0}' and '{1}'.", void 0, true), The_type_modifier_cannot_be_used_on_a_named_import_when_import_type_is_used_on_its_import_statement: a(2206, e.DiagnosticCategory.Error, "The_type_modifier_cannot_be_used_on_a_named_import_when_import_type_is_used_on_its_import_statement_2206", "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement."), The_type_modifier_cannot_be_used_on_a_named_export_when_export_type_is_used_on_its_export_statement: a(2207, e.DiagnosticCategory.Error, "The_type_modifier_cannot_be_used_on_a_named_export_when_export_type_is_used_on_its_export_statement_2207", "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement."), The_project_root_is_ambiguous_but_is_required_to_resolve_export_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate: a(2209, e.DiagnosticCategory.Error, "The_project_root_is_ambiguous_but_is_required_to_resolve_export_map_entry_0_in_file_1_Supply_the_roo_2209", "The project root is ambiguous, but is required to resolve export map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate."), The_project_root_is_ambiguous_but_is_required_to_resolve_import_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate: a(2210, e.DiagnosticCategory.Error, "The_project_root_is_ambiguous_but_is_required_to_resolve_import_map_entry_0_in_file_1_Supply_the_roo_2210", "The project root is ambiguous, but is required to resolve import map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate."), Duplicate_identifier_0: a(2300, e.DiagnosticCategory.Error, "Duplicate_identifier_0_2300", "Duplicate identifier '{0}'."), Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: a(2301, e.DiagnosticCategory.Error, "Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301", "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor."), Static_members_cannot_reference_class_type_parameters: a(2302, e.DiagnosticCategory.Error, "Static_members_cannot_reference_class_type_parameters_2302", "Static members cannot reference class type parameters."), Circular_definition_of_import_alias_0: a(2303, e.DiagnosticCategory.Error, "Circular_definition_of_import_alias_0_2303", "Circular definition of import alias '{0}'."), Cannot_find_name_0: a(2304, e.DiagnosticCategory.Error, "Cannot_find_name_0_2304", "Cannot find name '{0}'."), Module_0_has_no_exported_member_1: a(2305, e.DiagnosticCategory.Error, "Module_0_has_no_exported_member_1_2305", "Module '{0}' has no exported member '{1}'."), File_0_is_not_a_module: a(2306, e.DiagnosticCategory.Error, "File_0_is_not_a_module_2306", "File '{0}' is not a module."), Cannot_find_module_0_or_its_corresponding_type_declarations: a(2307, e.DiagnosticCategory.Error, "Cannot_find_module_0_or_its_corresponding_type_declarations_2307", "Cannot find module '{0}' or its corresponding type declarations."), Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity: a(2308, e.DiagnosticCategory.Error, "Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308", "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity."), An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: a(2309, e.DiagnosticCategory.Error, "An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309", "An export assignment cannot be used in a module with other exported elements."), Type_0_recursively_references_itself_as_a_base_type: a(2310, e.DiagnosticCategory.Error, "Type_0_recursively_references_itself_as_a_base_type_2310", "Type '{0}' recursively references itself as a base type."), Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function: a(2311, e.DiagnosticCategory.Error, "Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function_2311", "Cannot find name '{0}'. Did you mean to write this in an async function?"), An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_members: a(2312, e.DiagnosticCategory.Error, "An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_me_2312", "An interface can only extend an object type or intersection of object types with statically known members."), Type_parameter_0_has_a_circular_constraint: a(2313, e.DiagnosticCategory.Error, "Type_parameter_0_has_a_circular_constraint_2313", "Type parameter '{0}' has a circular constraint."), Generic_type_0_requires_1_type_argument_s: a(2314, e.DiagnosticCategory.Error, "Generic_type_0_requires_1_type_argument_s_2314", "Generic type '{0}' requires {1} type argument(s)."), Type_0_is_not_generic: a(2315, e.DiagnosticCategory.Error, "Type_0_is_not_generic_2315", "Type '{0}' is not generic."), Global_type_0_must_be_a_class_or_interface_type: a(2316, e.DiagnosticCategory.Error, "Global_type_0_must_be_a_class_or_interface_type_2316", "Global type '{0}' must be a class or interface type."), Global_type_0_must_have_1_type_parameter_s: a(2317, e.DiagnosticCategory.Error, "Global_type_0_must_have_1_type_parameter_s_2317", "Global type '{0}' must have {1} type parameter(s)."), Cannot_find_global_type_0: a(2318, e.DiagnosticCategory.Error, "Cannot_find_global_type_0_2318", "Cannot find global type '{0}'."), Named_property_0_of_types_1_and_2_are_not_identical: a(2319, e.DiagnosticCategory.Error, "Named_property_0_of_types_1_and_2_are_not_identical_2319", "Named property '{0}' of types '{1}' and '{2}' are not identical."), Interface_0_cannot_simultaneously_extend_types_1_and_2: a(2320, e.DiagnosticCategory.Error, "Interface_0_cannot_simultaneously_extend_types_1_and_2_2320", "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'."), Excessive_stack_depth_comparing_types_0_and_1: a(2321, e.DiagnosticCategory.Error, "Excessive_stack_depth_comparing_types_0_and_1_2321", "Excessive stack depth comparing types '{0}' and '{1}'."), Type_0_is_not_assignable_to_type_1: a(2322, e.DiagnosticCategory.Error, "Type_0_is_not_assignable_to_type_1_2322", "Type '{0}' is not assignable to type '{1}'."), Cannot_redeclare_exported_variable_0: a(2323, e.DiagnosticCategory.Error, "Cannot_redeclare_exported_variable_0_2323", "Cannot redeclare exported variable '{0}'."), Property_0_is_missing_in_type_1: a(2324, e.DiagnosticCategory.Error, "Property_0_is_missing_in_type_1_2324", "Property '{0}' is missing in type '{1}'."), Property_0_is_private_in_type_1_but_not_in_type_2: a(2325, e.DiagnosticCategory.Error, "Property_0_is_private_in_type_1_but_not_in_type_2_2325", "Property '{0}' is private in type '{1}' but not in type '{2}'."), Types_of_property_0_are_incompatible: a(2326, e.DiagnosticCategory.Error, "Types_of_property_0_are_incompatible_2326", "Types of property '{0}' are incompatible."), Property_0_is_optional_in_type_1_but_required_in_type_2: a(2327, e.DiagnosticCategory.Error, "Property_0_is_optional_in_type_1_but_required_in_type_2_2327", "Property '{0}' is optional in type '{1}' but required in type '{2}'."), Types_of_parameters_0_and_1_are_incompatible: a(2328, e.DiagnosticCategory.Error, "Types_of_parameters_0_and_1_are_incompatible_2328", "Types of parameters '{0}' and '{1}' are incompatible."), Index_signature_for_type_0_is_missing_in_type_1: a(2329, e.DiagnosticCategory.Error, "Index_signature_for_type_0_is_missing_in_type_1_2329", "Index signature for type '{0}' is missing in type '{1}'."), _0_and_1_index_signatures_are_incompatible: a(2330, e.DiagnosticCategory.Error, "_0_and_1_index_signatures_are_incompatible_2330", "'{0}' and '{1}' index signatures are incompatible."), this_cannot_be_referenced_in_a_module_or_namespace_body: a(2331, e.DiagnosticCategory.Error, "this_cannot_be_referenced_in_a_module_or_namespace_body_2331", "'this' cannot be referenced in a module or namespace body."), this_cannot_be_referenced_in_current_location: a(2332, e.DiagnosticCategory.Error, "this_cannot_be_referenced_in_current_location_2332", "'this' cannot be referenced in current location."), this_cannot_be_referenced_in_constructor_arguments: a(2333, e.DiagnosticCategory.Error, "this_cannot_be_referenced_in_constructor_arguments_2333", "'this' cannot be referenced in constructor arguments."), this_cannot_be_referenced_in_a_static_property_initializer: a(2334, e.DiagnosticCategory.Error, "this_cannot_be_referenced_in_a_static_property_initializer_2334", "'this' cannot be referenced in a static property initializer."), super_can_only_be_referenced_in_a_derived_class: a(2335, e.DiagnosticCategory.Error, "super_can_only_be_referenced_in_a_derived_class_2335", "'super' can only be referenced in a derived class."), super_cannot_be_referenced_in_constructor_arguments: a(2336, e.DiagnosticCategory.Error, "super_cannot_be_referenced_in_constructor_arguments_2336", "'super' cannot be referenced in constructor arguments."), Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors: a(2337, e.DiagnosticCategory.Error, "Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors_2337", "Super calls are not permitted outside constructors or in nested functions inside constructors."), super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class: a(2338, e.DiagnosticCategory.Error, "super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_der_2338", "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class."), Property_0_does_not_exist_on_type_1: a(2339, e.DiagnosticCategory.Error, "Property_0_does_not_exist_on_type_1_2339", "Property '{0}' does not exist on type '{1}'."), Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword: a(2340, e.DiagnosticCategory.Error, "Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword_2340", "Only public and protected methods of the base class are accessible via the 'super' keyword."), Property_0_is_private_and_only_accessible_within_class_1: a(2341, e.DiagnosticCategory.Error, "Property_0_is_private_and_only_accessible_within_class_1_2341", "Property '{0}' is private and only accessible within class '{1}'."), This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0: a(2343, e.DiagnosticCategory.Error, "This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_ve_2343", "This syntax requires an imported helper named '{1}' which does not exist in '{0}'. Consider upgrading your version of '{0}'."), Type_0_does_not_satisfy_the_constraint_1: a(2344, e.DiagnosticCategory.Error, "Type_0_does_not_satisfy_the_constraint_1_2344", "Type '{0}' does not satisfy the constraint '{1}'."), Argument_of_type_0_is_not_assignable_to_parameter_of_type_1: a(2345, e.DiagnosticCategory.Error, "Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_2345", "Argument of type '{0}' is not assignable to parameter of type '{1}'."), Call_target_does_not_contain_any_signatures: a(2346, e.DiagnosticCategory.Error, "Call_target_does_not_contain_any_signatures_2346", "Call target does not contain any signatures."), Untyped_function_calls_may_not_accept_type_arguments: a(2347, e.DiagnosticCategory.Error, "Untyped_function_calls_may_not_accept_type_arguments_2347", "Untyped function calls may not accept type arguments."), Value_of_type_0_is_not_callable_Did_you_mean_to_include_new: a(2348, e.DiagnosticCategory.Error, "Value_of_type_0_is_not_callable_Did_you_mean_to_include_new_2348", "Value of type '{0}' is not callable. Did you mean to include 'new'?"), This_expression_is_not_callable: a(2349, e.DiagnosticCategory.Error, "This_expression_is_not_callable_2349", "This expression is not callable."), Only_a_void_function_can_be_called_with_the_new_keyword: a(2350, e.DiagnosticCategory.Error, "Only_a_void_function_can_be_called_with_the_new_keyword_2350", "Only a void function can be called with the 'new' keyword."), This_expression_is_not_constructable: a(2351, e.DiagnosticCategory.Error, "This_expression_is_not_constructable_2351", "This expression is not constructable."), Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first: a(2352, e.DiagnosticCategory.Error, "Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the__2352", "Conversion of type '{0}' to type '{1}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first."), Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1: a(2353, e.DiagnosticCategory.Error, "Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353", "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'."), This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found: a(2354, e.DiagnosticCategory.Error, "This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354", "This syntax requires an imported helper but module '{0}' cannot be found."), A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value: a(2355, e.DiagnosticCategory.Error, "A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355", "A function whose declared type is neither 'void' nor 'any' must return a value."), An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type: a(2356, e.DiagnosticCategory.Error, "An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type_2356", "An arithmetic operand must be of type 'any', 'number', 'bigint' or an enum type."), The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access: a(2357, e.DiagnosticCategory.Error, "The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access_2357", "The operand of an increment or decrement operator must be a variable or a property access."), The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter: a(2358, e.DiagnosticCategory.Error, "The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_paramete_2358", "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter."), The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type: a(2359, e.DiagnosticCategory.Error, "The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_F_2359", "The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type."), The_left_hand_side_of_an_in_expression_must_be_a_private_identifier_or_of_type_any_string_number_or_symbol: a(2360, e.DiagnosticCategory.Error, "The_left_hand_side_of_an_in_expression_must_be_a_private_identifier_or_of_type_any_string_number_or__2360", "The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'."), The_right_hand_side_of_an_in_expression_must_not_be_a_primitive: a(2361, e.DiagnosticCategory.Error, "The_right_hand_side_of_an_in_expression_must_not_be_a_primitive_2361", "The right-hand side of an 'in' expression must not be a primitive."), The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type: a(2362, e.DiagnosticCategory.Error, "The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type_2362", "The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type."), The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type: a(2363, e.DiagnosticCategory.Error, "The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type_2363", "The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type."), The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access: a(2364, e.DiagnosticCategory.Error, "The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access_2364", "The left-hand side of an assignment expression must be a variable or a property access."), Operator_0_cannot_be_applied_to_types_1_and_2: a(2365, e.DiagnosticCategory.Error, "Operator_0_cannot_be_applied_to_types_1_and_2_2365", "Operator '{0}' cannot be applied to types '{1}' and '{2}'."), Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined: a(2366, e.DiagnosticCategory.Error, "Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366", "Function lacks ending return statement and return type does not include 'undefined'."), This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap: a(2367, e.DiagnosticCategory.Error, "This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap_2367", "This condition will always return '{0}' since the types '{1}' and '{2}' have no overlap."), Type_parameter_name_cannot_be_0: a(2368, e.DiagnosticCategory.Error, "Type_parameter_name_cannot_be_0_2368", "Type parameter name cannot be '{0}'."), A_parameter_property_is_only_allowed_in_a_constructor_implementation: a(2369, e.DiagnosticCategory.Error, "A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369", "A parameter property is only allowed in a constructor implementation."), A_rest_parameter_must_be_of_an_array_type: a(2370, e.DiagnosticCategory.Error, "A_rest_parameter_must_be_of_an_array_type_2370", "A rest parameter must be of an array type."), A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation: a(2371, e.DiagnosticCategory.Error, "A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation_2371", "A parameter initializer is only allowed in a function or constructor implementation."), Parameter_0_cannot_reference_itself: a(2372, e.DiagnosticCategory.Error, "Parameter_0_cannot_reference_itself_2372", "Parameter '{0}' cannot reference itself."), Parameter_0_cannot_reference_identifier_1_declared_after_it: a(2373, e.DiagnosticCategory.Error, "Parameter_0_cannot_reference_identifier_1_declared_after_it_2373", "Parameter '{0}' cannot reference identifier '{1}' declared after it."), Duplicate_index_signature_for_type_0: a(2374, e.DiagnosticCategory.Error, "Duplicate_index_signature_for_type_0_2374", "Duplicate index signature for type '{0}'."), Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties: a(2375, e.DiagnosticCategory.Error, "Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2375", "Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties."), A_super_call_must_be_the_first_statement_in_the_constructor_to_refer_to_super_or_this_when_a_derived_class_contains_initialized_properties_parameter_properties_or_private_identifiers: a(2376, e.DiagnosticCategory.Error, "A_super_call_must_be_the_first_statement_in_the_constructor_to_refer_to_super_or_this_when_a_derived_2376", "A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers."), Constructors_for_derived_classes_must_contain_a_super_call: a(2377, e.DiagnosticCategory.Error, "Constructors_for_derived_classes_must_contain_a_super_call_2377", "Constructors for derived classes must contain a 'super' call."), A_get_accessor_must_return_a_value: a(2378, e.DiagnosticCategory.Error, "A_get_accessor_must_return_a_value_2378", "A 'get' accessor must return a value."), Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties: a(2379, e.DiagnosticCategory.Error, "Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_tr_2379", "Argument of type '{0}' is not assignable to parameter of type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties."), The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type: a(2380, e.DiagnosticCategory.Error, "The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type_2380", "The return type of a 'get' accessor must be assignable to its 'set' accessor type"), Overload_signatures_must_all_be_exported_or_non_exported: a(2383, e.DiagnosticCategory.Error, "Overload_signatures_must_all_be_exported_or_non_exported_2383", "Overload signatures must all be exported or non-exported."), Overload_signatures_must_all_be_ambient_or_non_ambient: a(2384, e.DiagnosticCategory.Error, "Overload_signatures_must_all_be_ambient_or_non_ambient_2384", "Overload signatures must all be ambient or non-ambient."), Overload_signatures_must_all_be_public_private_or_protected: a(2385, e.DiagnosticCategory.Error, "Overload_signatures_must_all_be_public_private_or_protected_2385", "Overload signatures must all be public, private or protected."), Overload_signatures_must_all_be_optional_or_required: a(2386, e.DiagnosticCategory.Error, "Overload_signatures_must_all_be_optional_or_required_2386", "Overload signatures must all be optional or required."), Function_overload_must_be_static: a(2387, e.DiagnosticCategory.Error, "Function_overload_must_be_static_2387", "Function overload must be static."), Function_overload_must_not_be_static: a(2388, e.DiagnosticCategory.Error, "Function_overload_must_not_be_static_2388", "Function overload must not be static."), Function_implementation_name_must_be_0: a(2389, e.DiagnosticCategory.Error, "Function_implementation_name_must_be_0_2389", "Function implementation name must be '{0}'."), Constructor_implementation_is_missing: a(2390, e.DiagnosticCategory.Error, "Constructor_implementation_is_missing_2390", "Constructor implementation is missing."), Function_implementation_is_missing_or_not_immediately_following_the_declaration: a(2391, e.DiagnosticCategory.Error, "Function_implementation_is_missing_or_not_immediately_following_the_declaration_2391", "Function implementation is missing or not immediately following the declaration."), Multiple_constructor_implementations_are_not_allowed: a(2392, e.DiagnosticCategory.Error, "Multiple_constructor_implementations_are_not_allowed_2392", "Multiple constructor implementations are not allowed."), Duplicate_function_implementation: a(2393, e.DiagnosticCategory.Error, "Duplicate_function_implementation_2393", "Duplicate function implementation."), This_overload_signature_is_not_compatible_with_its_implementation_signature: a(2394, e.DiagnosticCategory.Error, "This_overload_signature_is_not_compatible_with_its_implementation_signature_2394", "This overload signature is not compatible with its implementation signature."), Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: a(2395, e.DiagnosticCategory.Error, "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395", "Individual declarations in merged declaration '{0}' must be all exported or all local."), Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: a(2396, e.DiagnosticCategory.Error, "Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396", "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters."), Declaration_name_conflicts_with_built_in_global_identifier_0: a(2397, e.DiagnosticCategory.Error, "Declaration_name_conflicts_with_built_in_global_identifier_0_2397", "Declaration name conflicts with built-in global identifier '{0}'."), constructor_cannot_be_used_as_a_parameter_property_name: a(2398, e.DiagnosticCategory.Error, "constructor_cannot_be_used_as_a_parameter_property_name_2398", "'constructor' cannot be used as a parameter property name."), Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: a(2399, e.DiagnosticCategory.Error, "Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399", "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference."), Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: a(2400, e.DiagnosticCategory.Error, "Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400", "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference."), A_super_call_must_be_a_root_level_statement_within_a_constructor_of_a_derived_class_that_contains_initialized_properties_parameter_properties_or_private_identifiers: a(2401, e.DiagnosticCategory.Error, "A_super_call_must_be_a_root_level_statement_within_a_constructor_of_a_derived_class_that_contains_in_2401", "A 'super' call must be a root-level statement within a constructor of a derived class that contains initialized properties, parameter properties, or private identifiers."), Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference: a(2402, e.DiagnosticCategory.Error, "Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference_2402", "Expression resolves to '_super' that compiler uses to capture base class reference."), Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2: a(2403, e.DiagnosticCategory.Error, "Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_t_2403", "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'."), The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation: a(2404, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation_2404", "The left-hand side of a 'for...in' statement cannot use a type annotation."), The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any: a(2405, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any_2405", "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."), The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access: a(2406, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access_2406", "The left-hand side of a 'for...in' statement must be a variable or a property access."), The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_here_has_type_0: a(2407, e.DiagnosticCategory.Error, "The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_2407", "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '{0}'."), Setters_cannot_return_a_value: a(2408, e.DiagnosticCategory.Error, "Setters_cannot_return_a_value_2408", "Setters cannot return a value."), Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class: a(2409, e.DiagnosticCategory.Error, "Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class_2409", "Return type of constructor signature must be assignable to the instance type of the class."), The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any: a(2410, e.DiagnosticCategory.Error, "The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any_2410", "The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'."), Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target: a(2412, e.DiagnosticCategory.Error, "Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2412", "Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the type of the target."), Property_0_of_type_1_is_not_assignable_to_2_index_type_3: a(2411, e.DiagnosticCategory.Error, "Property_0_of_type_1_is_not_assignable_to_2_index_type_3_2411", "Property '{0}' of type '{1}' is not assignable to '{2}' index type '{3}'."), _0_index_type_1_is_not_assignable_to_2_index_type_3: a(2413, e.DiagnosticCategory.Error, "_0_index_type_1_is_not_assignable_to_2_index_type_3_2413", "'{0}' index type '{1}' is not assignable to '{2}' index type '{3}'."), Class_name_cannot_be_0: a(2414, e.DiagnosticCategory.Error, "Class_name_cannot_be_0_2414", "Class name cannot be '{0}'."), Class_0_incorrectly_extends_base_class_1: a(2415, e.DiagnosticCategory.Error, "Class_0_incorrectly_extends_base_class_1_2415", "Class '{0}' incorrectly extends base class '{1}'."), Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2: a(2416, e.DiagnosticCategory.Error, "Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2_2416", "Property '{0}' in type '{1}' is not assignable to the same property in base type '{2}'."), Class_static_side_0_incorrectly_extends_base_class_static_side_1: a(2417, e.DiagnosticCategory.Error, "Class_static_side_0_incorrectly_extends_base_class_static_side_1_2417", "Class static side '{0}' incorrectly extends base class static side '{1}'."), Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1: a(2418, e.DiagnosticCategory.Error, "Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1_2418", "Type of computed property's value is '{0}', which is not assignable to type '{1}'."), Types_of_construct_signatures_are_incompatible: a(2419, e.DiagnosticCategory.Error, "Types_of_construct_signatures_are_incompatible_2419", "Types of construct signatures are incompatible."), Class_0_incorrectly_implements_interface_1: a(2420, e.DiagnosticCategory.Error, "Class_0_incorrectly_implements_interface_1_2420", "Class '{0}' incorrectly implements interface '{1}'."), A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members: a(2422, e.DiagnosticCategory.Error, "A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_memb_2422", "A class can only implement an object type or intersection of object types with statically known members."), Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor: a(2423, e.DiagnosticCategory.Error, "Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_access_2423", "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor."), Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function: a(2425, e.DiagnosticCategory.Error, "Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_functi_2425", "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function."), Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function: a(2426, e.DiagnosticCategory.Error, "Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_functi_2426", "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function."), Interface_name_cannot_be_0: a(2427, e.DiagnosticCategory.Error, "Interface_name_cannot_be_0_2427", "Interface name cannot be '{0}'."), All_declarations_of_0_must_have_identical_type_parameters: a(2428, e.DiagnosticCategory.Error, "All_declarations_of_0_must_have_identical_type_parameters_2428", "All declarations of '{0}' must have identical type parameters."), Interface_0_incorrectly_extends_interface_1: a(2430, e.DiagnosticCategory.Error, "Interface_0_incorrectly_extends_interface_1_2430", "Interface '{0}' incorrectly extends interface '{1}'."), Enum_name_cannot_be_0: a(2431, e.DiagnosticCategory.Error, "Enum_name_cannot_be_0_2431", "Enum name cannot be '{0}'."), In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element: a(2432, e.DiagnosticCategory.Error, "In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enu_2432", "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element."), A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged: a(2433, e.DiagnosticCategory.Error, "A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433", "A namespace declaration cannot be in a different file from a class or function with which it is merged."), A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged: a(2434, e.DiagnosticCategory.Error, "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434", "A namespace declaration cannot be located prior to a class or function with which it is merged."), Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces: a(2435, e.DiagnosticCategory.Error, "Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces_2435", "Ambient modules cannot be nested in other modules or namespaces."), Ambient_module_declaration_cannot_specify_relative_module_name: a(2436, e.DiagnosticCategory.Error, "Ambient_module_declaration_cannot_specify_relative_module_name_2436", "Ambient module declaration cannot specify relative module name."), Module_0_is_hidden_by_a_local_declaration_with_the_same_name: a(2437, e.DiagnosticCategory.Error, "Module_0_is_hidden_by_a_local_declaration_with_the_same_name_2437", "Module '{0}' is hidden by a local declaration with the same name."), Import_name_cannot_be_0: a(2438, e.DiagnosticCategory.Error, "Import_name_cannot_be_0_2438", "Import name cannot be '{0}'."), Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name: a(2439, e.DiagnosticCategory.Error, "Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relati_2439", "Import or export declaration in an ambient module declaration cannot reference module through relative module name."), Import_declaration_conflicts_with_local_declaration_of_0: a(2440, e.DiagnosticCategory.Error, "Import_declaration_conflicts_with_local_declaration_of_0_2440", "Import declaration conflicts with local declaration of '{0}'."), Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module: a(2441, e.DiagnosticCategory.Error, "Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_2441", "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module."), Types_have_separate_declarations_of_a_private_property_0: a(2442, e.DiagnosticCategory.Error, "Types_have_separate_declarations_of_a_private_property_0_2442", "Types have separate declarations of a private property '{0}'."), Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2: a(2443, e.DiagnosticCategory.Error, "Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2_2443", "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'."), Property_0_is_protected_in_type_1_but_public_in_type_2: a(2444, e.DiagnosticCategory.Error, "Property_0_is_protected_in_type_1_but_public_in_type_2_2444", "Property '{0}' is protected in type '{1}' but public in type '{2}'."), Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses: a(2445, e.DiagnosticCategory.Error, "Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses_2445", "Property '{0}' is protected and only accessible within class '{1}' and its subclasses."), Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_This_is_an_instance_of_class_2: a(2446, e.DiagnosticCategory.Error, "Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_This_is_an_instance_of_cl_2446", "Property '{0}' is protected and only accessible through an instance of class '{1}'. This is an instance of class '{2}'."), The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead: a(2447, e.DiagnosticCategory.Error, "The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead_2447", "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead."), Block_scoped_variable_0_used_before_its_declaration: a(2448, e.DiagnosticCategory.Error, "Block_scoped_variable_0_used_before_its_declaration_2448", "Block-scoped variable '{0}' used before its declaration."), Class_0_used_before_its_declaration: a(2449, e.DiagnosticCategory.Error, "Class_0_used_before_its_declaration_2449", "Class '{0}' used before its declaration."), Enum_0_used_before_its_declaration: a(2450, e.DiagnosticCategory.Error, "Enum_0_used_before_its_declaration_2450", "Enum '{0}' used before its declaration."), Cannot_redeclare_block_scoped_variable_0: a(2451, e.DiagnosticCategory.Error, "Cannot_redeclare_block_scoped_variable_0_2451", "Cannot redeclare block-scoped variable '{0}'."), An_enum_member_cannot_have_a_numeric_name: a(2452, e.DiagnosticCategory.Error, "An_enum_member_cannot_have_a_numeric_name_2452", "An enum member cannot have a numeric name."), Variable_0_is_used_before_being_assigned: a(2454, e.DiagnosticCategory.Error, "Variable_0_is_used_before_being_assigned_2454", "Variable '{0}' is used before being assigned."), Type_alias_0_circularly_references_itself: a(2456, e.DiagnosticCategory.Error, "Type_alias_0_circularly_references_itself_2456", "Type alias '{0}' circularly references itself."), Type_alias_name_cannot_be_0: a(2457, e.DiagnosticCategory.Error, "Type_alias_name_cannot_be_0_2457", "Type alias name cannot be '{0}'."), An_AMD_module_cannot_have_multiple_name_assignments: a(2458, e.DiagnosticCategory.Error, "An_AMD_module_cannot_have_multiple_name_assignments_2458", "An AMD module cannot have multiple name assignments."), Module_0_declares_1_locally_but_it_is_not_exported: a(2459, e.DiagnosticCategory.Error, "Module_0_declares_1_locally_but_it_is_not_exported_2459", "Module '{0}' declares '{1}' locally, but it is not exported."), Module_0_declares_1_locally_but_it_is_exported_as_2: a(2460, e.DiagnosticCategory.Error, "Module_0_declares_1_locally_but_it_is_exported_as_2_2460", "Module '{0}' declares '{1}' locally, but it is exported as '{2}'."), Type_0_is_not_an_array_type: a(2461, e.DiagnosticCategory.Error, "Type_0_is_not_an_array_type_2461", "Type '{0}' is not an array type."), A_rest_element_must_be_last_in_a_destructuring_pattern: a(2462, e.DiagnosticCategory.Error, "A_rest_element_must_be_last_in_a_destructuring_pattern_2462", "A rest element must be last in a destructuring pattern."), A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature: a(2463, e.DiagnosticCategory.Error, "A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature_2463", "A binding pattern parameter cannot be optional in an implementation signature."), A_computed_property_name_must_be_of_type_string_number_symbol_or_any: a(2464, e.DiagnosticCategory.Error, "A_computed_property_name_must_be_of_type_string_number_symbol_or_any_2464", "A computed property name must be of type 'string', 'number', 'symbol', or 'any'."), this_cannot_be_referenced_in_a_computed_property_name: a(2465, e.DiagnosticCategory.Error, "this_cannot_be_referenced_in_a_computed_property_name_2465", "'this' cannot be referenced in a computed property name."), super_cannot_be_referenced_in_a_computed_property_name: a(2466, e.DiagnosticCategory.Error, "super_cannot_be_referenced_in_a_computed_property_name_2466", "'super' cannot be referenced in a computed property name."), A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type: a(2467, e.DiagnosticCategory.Error, "A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type_2467", "A computed property name cannot reference a type parameter from its containing type."), Cannot_find_global_value_0: a(2468, e.DiagnosticCategory.Error, "Cannot_find_global_value_0_2468", "Cannot find global value '{0}'."), The_0_operator_cannot_be_applied_to_type_symbol: a(2469, e.DiagnosticCategory.Error, "The_0_operator_cannot_be_applied_to_type_symbol_2469", "The '{0}' operator cannot be applied to type 'symbol'."), Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher: a(2472, e.DiagnosticCategory.Error, "Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher_2472", "Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher."), Enum_declarations_must_all_be_const_or_non_const: a(2473, e.DiagnosticCategory.Error, "Enum_declarations_must_all_be_const_or_non_const_2473", "Enum declarations must all be const or non-const."), const_enum_member_initializers_can_only_contain_literal_values_and_other_computed_enum_values: a(2474, e.DiagnosticCategory.Error, "const_enum_member_initializers_can_only_contain_literal_values_and_other_computed_enum_values_2474", "const enum member initializers can only contain literal values and other computed enum values."), const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query: a(2475, e.DiagnosticCategory.Error, "const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_im_2475", "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query."), A_const_enum_member_can_only_be_accessed_using_a_string_literal: a(2476, e.DiagnosticCategory.Error, "A_const_enum_member_can_only_be_accessed_using_a_string_literal_2476", "A const enum member can only be accessed using a string literal."), const_enum_member_initializer_was_evaluated_to_a_non_finite_value: a(2477, e.DiagnosticCategory.Error, "const_enum_member_initializer_was_evaluated_to_a_non_finite_value_2477", "'const' enum member initializer was evaluated to a non-finite value."), const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN: a(2478, e.DiagnosticCategory.Error, "const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN_2478", "'const' enum member initializer was evaluated to disallowed value 'NaN'."), let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations: a(2480, e.DiagnosticCategory.Error, "let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations_2480", "'let' is not allowed to be used as a name in 'let' or 'const' declarations."), Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1: a(2481, e.DiagnosticCategory.Error, "Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1_2481", "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'."), The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation: a(2483, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation_2483", "The left-hand side of a 'for...of' statement cannot use a type annotation."), Export_declaration_conflicts_with_exported_declaration_of_0: a(2484, e.DiagnosticCategory.Error, "Export_declaration_conflicts_with_exported_declaration_of_0_2484", "Export declaration conflicts with exported declaration of '{0}'."), The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access: a(2487, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access_2487", "The left-hand side of a 'for...of' statement must be a variable or a property access."), Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator: a(2488, e.DiagnosticCategory.Error, "Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator_2488", "Type '{0}' must have a '[Symbol.iterator]()' method that returns an iterator."), An_iterator_must_have_a_next_method: a(2489, e.DiagnosticCategory.Error, "An_iterator_must_have_a_next_method_2489", "An iterator must have a 'next()' method."), The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property: a(2490, e.DiagnosticCategory.Error, "The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property_2490", "The type returned by the '{0}()' method of an iterator must have a 'value' property."), The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern: a(2491, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern_2491", "The left-hand side of a 'for...in' statement cannot be a destructuring pattern."), Cannot_redeclare_identifier_0_in_catch_clause: a(2492, e.DiagnosticCategory.Error, "Cannot_redeclare_identifier_0_in_catch_clause_2492", "Cannot redeclare identifier '{0}' in catch clause."), Tuple_type_0_of_length_1_has_no_element_at_index_2: a(2493, e.DiagnosticCategory.Error, "Tuple_type_0_of_length_1_has_no_element_at_index_2_2493", "Tuple type '{0}' of length '{1}' has no element at index '{2}'."), Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher: a(2494, e.DiagnosticCategory.Error, "Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher_2494", "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher."), Type_0_is_not_an_array_type_or_a_string_type: a(2495, e.DiagnosticCategory.Error, "Type_0_is_not_an_array_type_or_a_string_type_2495", "Type '{0}' is not an array type or a string type."), The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression: a(2496, e.DiagnosticCategory.Error, "The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_stand_2496", "The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression."), This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_referencing_its_default_export: a(2497, e.DiagnosticCategory.Error, "This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_2497", "This module can only be referenced with ECMAScript imports/exports by turning on the '{0}' flag and referencing its default export."), Module_0_uses_export_and_cannot_be_used_with_export_Asterisk: a(2498, e.DiagnosticCategory.Error, "Module_0_uses_export_and_cannot_be_used_with_export_Asterisk_2498", "Module '{0}' uses 'export =' and cannot be used with 'export *'."), An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments: a(2499, e.DiagnosticCategory.Error, "An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments_2499", "An interface can only extend an identifier/qualified-name with optional type arguments."), A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments: a(2500, e.DiagnosticCategory.Error, "A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments_2500", "A class can only implement an identifier/qualified-name with optional type arguments."), A_rest_element_cannot_contain_a_binding_pattern: a(2501, e.DiagnosticCategory.Error, "A_rest_element_cannot_contain_a_binding_pattern_2501", "A rest element cannot contain a binding pattern."), _0_is_referenced_directly_or_indirectly_in_its_own_type_annotation: a(2502, e.DiagnosticCategory.Error, "_0_is_referenced_directly_or_indirectly_in_its_own_type_annotation_2502", "'{0}' is referenced directly or indirectly in its own type annotation."), Cannot_find_namespace_0: a(2503, e.DiagnosticCategory.Error, "Cannot_find_namespace_0_2503", "Cannot find namespace '{0}'."), Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator: a(2504, e.DiagnosticCategory.Error, "Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator_2504", "Type '{0}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator."), A_generator_cannot_have_a_void_type_annotation: a(2505, e.DiagnosticCategory.Error, "A_generator_cannot_have_a_void_type_annotation_2505", "A generator cannot have a 'void' type annotation."), _0_is_referenced_directly_or_indirectly_in_its_own_base_expression: a(2506, e.DiagnosticCategory.Error, "_0_is_referenced_directly_or_indirectly_in_its_own_base_expression_2506", "'{0}' is referenced directly or indirectly in its own base expression."), Type_0_is_not_a_constructor_function_type: a(2507, e.DiagnosticCategory.Error, "Type_0_is_not_a_constructor_function_type_2507", "Type '{0}' is not a constructor function type."), No_base_constructor_has_the_specified_number_of_type_arguments: a(2508, e.DiagnosticCategory.Error, "No_base_constructor_has_the_specified_number_of_type_arguments_2508", "No base constructor has the specified number of type arguments."), Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members: a(2509, e.DiagnosticCategory.Error, "Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_2509", "Base constructor return type '{0}' is not an object type or intersection of object types with statically known members."), Base_constructors_must_all_have_the_same_return_type: a(2510, e.DiagnosticCategory.Error, "Base_constructors_must_all_have_the_same_return_type_2510", "Base constructors must all have the same return type."), Cannot_create_an_instance_of_an_abstract_class: a(2511, e.DiagnosticCategory.Error, "Cannot_create_an_instance_of_an_abstract_class_2511", "Cannot create an instance of an abstract class."), Overload_signatures_must_all_be_abstract_or_non_abstract: a(2512, e.DiagnosticCategory.Error, "Overload_signatures_must_all_be_abstract_or_non_abstract_2512", "Overload signatures must all be abstract or non-abstract."), Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression: a(2513, e.DiagnosticCategory.Error, "Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression_2513", "Abstract method '{0}' in class '{1}' cannot be accessed via super expression."), Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: a(2515, e.DiagnosticCategory.Error, "Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515", "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'."), All_declarations_of_an_abstract_method_must_be_consecutive: a(2516, e.DiagnosticCategory.Error, "All_declarations_of_an_abstract_method_must_be_consecutive_2516", "All declarations of an abstract method must be consecutive."), Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type: a(2517, e.DiagnosticCategory.Error, "Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517", "Cannot assign an abstract constructor type to a non-abstract constructor type."), A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard: a(2518, e.DiagnosticCategory.Error, "A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518", "A 'this'-based type guard is not compatible with a parameter-based type guard."), An_async_iterator_must_have_a_next_method: a(2519, e.DiagnosticCategory.Error, "An_async_iterator_must_have_a_next_method_2519", "An async iterator must have a 'next()' method."), Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions: a(2520, e.DiagnosticCategory.Error, "Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520", "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions."), The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_using_a_standard_function_or_method: a(2522, e.DiagnosticCategory.Error, "The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_usi_2522", "The 'arguments' object cannot be referenced in an async function or method in ES3 and ES5. Consider using a standard function or method."), yield_expressions_cannot_be_used_in_a_parameter_initializer: a(2523, e.DiagnosticCategory.Error, "yield_expressions_cannot_be_used_in_a_parameter_initializer_2523", "'yield' expressions cannot be used in a parameter initializer."), await_expressions_cannot_be_used_in_a_parameter_initializer: a(2524, e.DiagnosticCategory.Error, "await_expressions_cannot_be_used_in_a_parameter_initializer_2524", "'await' expressions cannot be used in a parameter initializer."), Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value: a(2525, e.DiagnosticCategory.Error, "Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value_2525", "Initializer provides no value for this binding element and the binding element has no default value."), A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface: a(2526, e.DiagnosticCategory.Error, "A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526", "A 'this' type is available only in a non-static member of a class or interface."), The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary: a(2527, e.DiagnosticCategory.Error, "The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary_2527", "The inferred type of '{0}' references an inaccessible '{1}' type. A type annotation is necessary."), A_module_cannot_have_multiple_default_exports: a(2528, e.DiagnosticCategory.Error, "A_module_cannot_have_multiple_default_exports_2528", "A module cannot have multiple default exports."), Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions: a(2529, e.DiagnosticCategory.Error, "Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529", "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions."), Property_0_is_incompatible_with_index_signature: a(2530, e.DiagnosticCategory.Error, "Property_0_is_incompatible_with_index_signature_2530", "Property '{0}' is incompatible with index signature."), Object_is_possibly_null: a(2531, e.DiagnosticCategory.Error, "Object_is_possibly_null_2531", "Object is possibly 'null'."), Object_is_possibly_undefined: a(2532, e.DiagnosticCategory.Error, "Object_is_possibly_undefined_2532", "Object is possibly 'undefined'."), Object_is_possibly_null_or_undefined: a(2533, e.DiagnosticCategory.Error, "Object_is_possibly_null_or_undefined_2533", "Object is possibly 'null' or 'undefined'."), A_function_returning_never_cannot_have_a_reachable_end_point: a(2534, e.DiagnosticCategory.Error, "A_function_returning_never_cannot_have_a_reachable_end_point_2534", "A function returning 'never' cannot have a reachable end point."), Enum_type_0_has_members_with_initializers_that_are_not_literals: a(2535, e.DiagnosticCategory.Error, "Enum_type_0_has_members_with_initializers_that_are_not_literals_2535", "Enum type '{0}' has members with initializers that are not literals."), Type_0_cannot_be_used_to_index_type_1: a(2536, e.DiagnosticCategory.Error, "Type_0_cannot_be_used_to_index_type_1_2536", "Type '{0}' cannot be used to index type '{1}'."), Type_0_has_no_matching_index_signature_for_type_1: a(2537, e.DiagnosticCategory.Error, "Type_0_has_no_matching_index_signature_for_type_1_2537", "Type '{0}' has no matching index signature for type '{1}'."), Type_0_cannot_be_used_as_an_index_type: a(2538, e.DiagnosticCategory.Error, "Type_0_cannot_be_used_as_an_index_type_2538", "Type '{0}' cannot be used as an index type."), Cannot_assign_to_0_because_it_is_not_a_variable: a(2539, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_not_a_variable_2539", "Cannot assign to '{0}' because it is not a variable."), Cannot_assign_to_0_because_it_is_a_read_only_property: a(2540, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_a_read_only_property_2540", "Cannot assign to '{0}' because it is a read-only property."), Index_signature_in_type_0_only_permits_reading: a(2542, e.DiagnosticCategory.Error, "Index_signature_in_type_0_only_permits_reading_2542", "Index signature in type '{0}' only permits reading."), Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_meta_property_reference: a(2543, e.DiagnosticCategory.Error, "Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_me_2543", "Duplicate identifier '_newTarget'. Compiler uses variable declaration '_newTarget' to capture 'new.target' meta-property reference."), Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta_property_reference: a(2544, e.DiagnosticCategory.Error, "Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta__2544", "Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference."), A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any: a(2545, e.DiagnosticCategory.Error, "A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any_2545", "A mixin class must have a constructor with a single rest parameter of type 'any[]'."), The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property: a(2547, e.DiagnosticCategory.Error, "The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_pro_2547", "The type returned by the '{0}()' method of an async iterator must be a promise for a type with a 'value' property."), Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator: a(2548, e.DiagnosticCategory.Error, "Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator_2548", "Type '{0}' is not an array type or does not have a '[Symbol.iterator]()' method that returns an iterator."), Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator: a(2549, e.DiagnosticCategory.Error, "Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns__2549", "Type '{0}' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator."), Property_0_does_not_exist_on_type_1_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2_or_later: a(2550, e.DiagnosticCategory.Error, "Property_0_does_not_exist_on_type_1_Do_you_need_to_change_your_target_library_Try_changing_the_lib_c_2550", "Property '{0}' does not exist on type '{1}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{2}' or later."), Property_0_does_not_exist_on_type_1_Did_you_mean_2: a(2551, e.DiagnosticCategory.Error, "Property_0_does_not_exist_on_type_1_Did_you_mean_2_2551", "Property '{0}' does not exist on type '{1}'. Did you mean '{2}'?"), Cannot_find_name_0_Did_you_mean_1: a(2552, e.DiagnosticCategory.Error, "Cannot_find_name_0_Did_you_mean_1_2552", "Cannot find name '{0}'. Did you mean '{1}'?"), Computed_values_are_not_permitted_in_an_enum_with_string_valued_members: a(2553, e.DiagnosticCategory.Error, "Computed_values_are_not_permitted_in_an_enum_with_string_valued_members_2553", "Computed values are not permitted in an enum with string valued members."), Expected_0_arguments_but_got_1: a(2554, e.DiagnosticCategory.Error, "Expected_0_arguments_but_got_1_2554", "Expected {0} arguments, but got {1}."), Expected_at_least_0_arguments_but_got_1: a(2555, e.DiagnosticCategory.Error, "Expected_at_least_0_arguments_but_got_1_2555", "Expected at least {0} arguments, but got {1}."), A_spread_argument_must_either_have_a_tuple_type_or_be_passed_to_a_rest_parameter: a(2556, e.DiagnosticCategory.Error, "A_spread_argument_must_either_have_a_tuple_type_or_be_passed_to_a_rest_parameter_2556", "A spread argument must either have a tuple type or be passed to a rest parameter."), Expected_0_type_arguments_but_got_1: a(2558, e.DiagnosticCategory.Error, "Expected_0_type_arguments_but_got_1_2558", "Expected {0} type arguments, but got {1}."), Type_0_has_no_properties_in_common_with_type_1: a(2559, e.DiagnosticCategory.Error, "Type_0_has_no_properties_in_common_with_type_1_2559", "Type '{0}' has no properties in common with type '{1}'."), Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it: a(2560, e.DiagnosticCategory.Error, "Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it_2560", "Value of type '{0}' has no properties in common with type '{1}'. Did you mean to call it?"), Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_write_2: a(2561, e.DiagnosticCategory.Error, "Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_writ_2561", "Object literal may only specify known properties, but '{0}' does not exist in type '{1}'. Did you mean to write '{2}'?"), Base_class_expressions_cannot_reference_class_type_parameters: a(2562, e.DiagnosticCategory.Error, "Base_class_expressions_cannot_reference_class_type_parameters_2562", "Base class expressions cannot reference class type parameters."), The_containing_function_or_module_body_is_too_large_for_control_flow_analysis: a(2563, e.DiagnosticCategory.Error, "The_containing_function_or_module_body_is_too_large_for_control_flow_analysis_2563", "The containing function or module body is too large for control flow analysis."), Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor: a(2564, e.DiagnosticCategory.Error, "Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor_2564", "Property '{0}' has no initializer and is not definitely assigned in the constructor."), Property_0_is_used_before_being_assigned: a(2565, e.DiagnosticCategory.Error, "Property_0_is_used_before_being_assigned_2565", "Property '{0}' is used before being assigned."), A_rest_element_cannot_have_a_property_name: a(2566, e.DiagnosticCategory.Error, "A_rest_element_cannot_have_a_property_name_2566", "A rest element cannot have a property name."), Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations: a(2567, e.DiagnosticCategory.Error, "Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations_2567", "Enum declarations can only merge with namespace or other enum declarations."), Property_0_may_not_exist_on_type_1_Did_you_mean_2: a(2568, e.DiagnosticCategory.Error, "Property_0_may_not_exist_on_type_1_Did_you_mean_2_2568", "Property '{0}' may not exist on type '{1}'. Did you mean '{2}'?"), Could_not_find_name_0_Did_you_mean_1: a(2570, e.DiagnosticCategory.Error, "Could_not_find_name_0_Did_you_mean_1_2570", "Could not find name '{0}'. Did you mean '{1}'?"), Object_is_of_type_unknown: a(2571, e.DiagnosticCategory.Error, "Object_is_of_type_unknown_2571", "Object is of type 'unknown'."), A_rest_element_type_must_be_an_array_type: a(2574, e.DiagnosticCategory.Error, "A_rest_element_type_must_be_an_array_type_2574", "A rest element type must be an array type."), No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments: a(2575, e.DiagnosticCategory.Error, "No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments_2575", "No overload expects {0} arguments, but overloads do exist that expect either {1} or {2} arguments."), Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead: a(2576, e.DiagnosticCategory.Error, "Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead_2576", "Property '{0}' does not exist on type '{1}'. Did you mean to access the static member '{2}' instead?"), Return_type_annotation_circularly_references_itself: a(2577, e.DiagnosticCategory.Error, "Return_type_annotation_circularly_references_itself_2577", "Return type annotation circularly references itself."), Unused_ts_expect_error_directive: a(2578, e.DiagnosticCategory.Error, "Unused_ts_expect_error_directive_2578", "Unused '@ts-expect-error' directive."), Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode: a(2580, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashno_2580", "Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`."), Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery: a(2581, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slash_2581", "Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery`."), Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha: a(2582, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_type_2582", "Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha`."), Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_1_or_later: a(2583, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2583", "Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{1}' or later."), Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_include_dom: a(2584, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2584", "Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'."), _0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later: a(2585, e.DiagnosticCategory.Error, "_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_2585", "'{0}' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the 'lib' compiler option to es2015 or later."), Cannot_assign_to_0_because_it_is_a_constant: a(2588, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_a_constant_2588", "Cannot assign to '{0}' because it is a constant."), Type_instantiation_is_excessively_deep_and_possibly_infinite: a(2589, e.DiagnosticCategory.Error, "Type_instantiation_is_excessively_deep_and_possibly_infinite_2589", "Type instantiation is excessively deep and possibly infinite."), Expression_produces_a_union_type_that_is_too_complex_to_represent: a(2590, e.DiagnosticCategory.Error, "Expression_produces_a_union_type_that_is_too_complex_to_represent_2590", "Expression produces a union type that is too complex to represent."), Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig: a(2591, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashno_2591", "Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig."), Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig: a(2592, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slash_2592", "Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery` and then add 'jquery' to the types field in your tsconfig."), Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig: a(2593, e.DiagnosticCategory.Error, "Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_type_2593", "Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha` and then add 'jest' or 'mocha' to the types field in your tsconfig."), This_module_is_declared_with_using_export_and_can_only_be_used_with_a_default_import_when_using_the_0_flag: a(2594, e.DiagnosticCategory.Error, "This_module_is_declared_with_using_export_and_can_only_be_used_with_a_default_import_when_using_the__2594", "This module is declared with using 'export =', and can only be used with a default import when using the '{0}' flag."), _0_can_only_be_imported_by_using_a_default_import: a(2595, e.DiagnosticCategory.Error, "_0_can_only_be_imported_by_using_a_default_import_2595", "'{0}' can only be imported by using a default import."), _0_can_only_be_imported_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import: a(2596, e.DiagnosticCategory.Error, "_0_can_only_be_imported_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import_2596", "'{0}' can only be imported by turning on the 'esModuleInterop' flag and using a default import."), _0_can_only_be_imported_by_using_a_require_call_or_by_using_a_default_import: a(2597, e.DiagnosticCategory.Error, "_0_can_only_be_imported_by_using_a_require_call_or_by_using_a_default_import_2597", "'{0}' can only be imported by using a 'require' call or by using a default import."), _0_can_only_be_imported_by_using_a_require_call_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import: a(2598, e.DiagnosticCategory.Error, "_0_can_only_be_imported_by_using_a_require_call_or_by_turning_on_the_esModuleInterop_flag_and_using__2598", "'{0}' can only be imported by using a 'require' call or by turning on the 'esModuleInterop' flag and using a default import."), JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: a(2602, e.DiagnosticCategory.Error, "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist."), Property_0_in_type_1_is_not_assignable_to_type_2: a(2603, e.DiagnosticCategory.Error, "Property_0_in_type_1_is_not_assignable_to_type_2_2603", "Property '{0}' in type '{1}' is not assignable to type '{2}'."), JSX_element_type_0_does_not_have_any_construct_or_call_signatures: a(2604, e.DiagnosticCategory.Error, "JSX_element_type_0_does_not_have_any_construct_or_call_signatures_2604", "JSX element type '{0}' does not have any construct or call signatures."), Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property: a(2606, e.DiagnosticCategory.Error, "Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property_2606", "Property '{0}' of JSX spread attribute is not assignable to target property."), JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property: a(2607, e.DiagnosticCategory.Error, "JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property_2607", "JSX element class does not support attributes because it does not have a '{0}' property."), The_global_type_JSX_0_may_not_have_more_than_one_property: a(2608, e.DiagnosticCategory.Error, "The_global_type_JSX_0_may_not_have_more_than_one_property_2608", "The global type 'JSX.{0}' may not have more than one property."), JSX_spread_child_must_be_an_array_type: a(2609, e.DiagnosticCategory.Error, "JSX_spread_child_must_be_an_array_type_2609", "JSX spread child must be an array type."), _0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property: a(2610, e.DiagnosticCategory.Error, "_0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property_2610", "'{0}' is defined as an accessor in class '{1}', but is overridden here in '{2}' as an instance property."), _0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor: a(2611, e.DiagnosticCategory.Error, "_0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor_2611", "'{0}' is defined as a property in class '{1}', but is overridden here in '{2}' as an accessor."), Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration: a(2612, e.DiagnosticCategory.Error, "Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_2612", "Property '{0}' will overwrite the base property in '{1}'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration."), Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead: a(2613, e.DiagnosticCategory.Error, "Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead_2613", "Module '{0}' has no default export. Did you mean to use 'import { {1} } from {0}' instead?"), Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead: a(2614, e.DiagnosticCategory.Error, "Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead_2614", "Module '{0}' has no exported member '{1}'. Did you mean to use 'import {1} from {0}' instead?"), Type_of_property_0_circularly_references_itself_in_mapped_type_1: a(2615, e.DiagnosticCategory.Error, "Type_of_property_0_circularly_references_itself_in_mapped_type_1_2615", "Type of property '{0}' circularly references itself in mapped type '{1}'."), _0_can_only_be_imported_by_using_import_1_require_2_or_a_default_import: a(2616, e.DiagnosticCategory.Error, "_0_can_only_be_imported_by_using_import_1_require_2_or_a_default_import_2616", "'{0}' can only be imported by using 'import {1} = require({2})' or a default import."), _0_can_only_be_imported_by_using_import_1_require_2_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import: a(2617, e.DiagnosticCategory.Error, "_0_can_only_be_imported_by_using_import_1_require_2_or_by_turning_on_the_esModuleInterop_flag_and_us_2617", "'{0}' can only be imported by using 'import {1} = require({2})' or by turning on the 'esModuleInterop' flag and using a default import."), Source_has_0_element_s_but_target_requires_1: a(2618, e.DiagnosticCategory.Error, "Source_has_0_element_s_but_target_requires_1_2618", "Source has {0} element(s) but target requires {1}."), Source_has_0_element_s_but_target_allows_only_1: a(2619, e.DiagnosticCategory.Error, "Source_has_0_element_s_but_target_allows_only_1_2619", "Source has {0} element(s) but target allows only {1}."), Target_requires_0_element_s_but_source_may_have_fewer: a(2620, e.DiagnosticCategory.Error, "Target_requires_0_element_s_but_source_may_have_fewer_2620", "Target requires {0} element(s) but source may have fewer."), Target_allows_only_0_element_s_but_source_may_have_more: a(2621, e.DiagnosticCategory.Error, "Target_allows_only_0_element_s_but_source_may_have_more_2621", "Target allows only {0} element(s) but source may have more."), Source_provides_no_match_for_required_element_at_position_0_in_target: a(2623, e.DiagnosticCategory.Error, "Source_provides_no_match_for_required_element_at_position_0_in_target_2623", "Source provides no match for required element at position {0} in target."), Source_provides_no_match_for_variadic_element_at_position_0_in_target: a(2624, e.DiagnosticCategory.Error, "Source_provides_no_match_for_variadic_element_at_position_0_in_target_2624", "Source provides no match for variadic element at position {0} in target."), Variadic_element_at_position_0_in_source_does_not_match_element_at_position_1_in_target: a(2625, e.DiagnosticCategory.Error, "Variadic_element_at_position_0_in_source_does_not_match_element_at_position_1_in_target_2625", "Variadic element at position {0} in source does not match element at position {1} in target."), Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target: a(2626, e.DiagnosticCategory.Error, "Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target_2626", "Type at position {0} in source is not compatible with type at position {1} in target."), Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target: a(2627, e.DiagnosticCategory.Error, "Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target_2627", "Type at positions {0} through {1} in source is not compatible with type at position {2} in target."), Cannot_assign_to_0_because_it_is_an_enum: a(2628, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_an_enum_2628", "Cannot assign to '{0}' because it is an enum."), Cannot_assign_to_0_because_it_is_a_class: a(2629, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_a_class_2629", "Cannot assign to '{0}' because it is a class."), Cannot_assign_to_0_because_it_is_a_function: a(2630, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_a_function_2630", "Cannot assign to '{0}' because it is a function."), Cannot_assign_to_0_because_it_is_a_namespace: a(2631, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_a_namespace_2631", "Cannot assign to '{0}' because it is a namespace."), Cannot_assign_to_0_because_it_is_an_import: a(2632, e.DiagnosticCategory.Error, "Cannot_assign_to_0_because_it_is_an_import_2632", "Cannot assign to '{0}' because it is an import."), JSX_property_access_expressions_cannot_include_JSX_namespace_names: a(2633, e.DiagnosticCategory.Error, "JSX_property_access_expressions_cannot_include_JSX_namespace_names_2633", "JSX property access expressions cannot include JSX namespace names"), _0_index_signatures_are_incompatible: a(2634, e.DiagnosticCategory.Error, "_0_index_signatures_are_incompatible_2634", "'{0}' index signatures are incompatible."), Type_0_has_no_signatures_for_which_the_type_argument_list_is_applicable: a(2635, e.DiagnosticCategory.Error, "Type_0_has_no_signatures_for_which_the_type_argument_list_is_applicable_2635", "Type '{0}' has no signatures for which the type argument list is applicable."), Type_0_is_not_assignable_to_type_1_as_implied_by_variance_annotation: a(2636, e.DiagnosticCategory.Error, "Type_0_is_not_assignable_to_type_1_as_implied_by_variance_annotation_2636", "Type '{0}' is not assignable to type '{1}' as implied by variance annotation."), Variance_annotations_are_only_supported_in_type_aliases_for_object_function_constructor_and_mapped_types: a(2637, e.DiagnosticCategory.Error, "Variance_annotations_are_only_supported_in_type_aliases_for_object_function_constructor_and_mapped_t_2637", "Variance annotations are only supported in type aliases for object, function, constructor, and mapped types."), Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity: a(2649, e.DiagnosticCategory.Error, "Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity_2649", "Cannot augment module '{0}' with value exports because it resolves to a non-module entity."), A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums: a(2651, e.DiagnosticCategory.Error, "A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_memb_2651", "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."), Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead: a(2652, e.DiagnosticCategory.Error, "Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_d_2652", "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead."), Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1: a(2653, e.DiagnosticCategory.Error, "Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1_2653", "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'."), JSX_expressions_must_have_one_parent_element: a(2657, e.DiagnosticCategory.Error, "JSX_expressions_must_have_one_parent_element_2657", "JSX expressions must have one parent element."), Type_0_provides_no_match_for_the_signature_1: a(2658, e.DiagnosticCategory.Error, "Type_0_provides_no_match_for_the_signature_1_2658", "Type '{0}' provides no match for the signature '{1}'."), super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher: a(2659, e.DiagnosticCategory.Error, "super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659", "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher."), super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions: a(2660, e.DiagnosticCategory.Error, "super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660", "'super' can only be referenced in members of derived classes or object literal expressions."), Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module: a(2661, e.DiagnosticCategory.Error, "Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module_2661", "Cannot export '{0}'. Only local declarations can be exported from a module."), Cannot_find_name_0_Did_you_mean_the_static_member_1_0: a(2662, e.DiagnosticCategory.Error, "Cannot_find_name_0_Did_you_mean_the_static_member_1_0_2662", "Cannot find name '{0}'. Did you mean the static member '{1}.{0}'?"), Cannot_find_name_0_Did_you_mean_the_instance_member_this_0: a(2663, e.DiagnosticCategory.Error, "Cannot_find_name_0_Did_you_mean_the_instance_member_this_0_2663", "Cannot find name '{0}'. Did you mean the instance member 'this.{0}'?"), Invalid_module_name_in_augmentation_module_0_cannot_be_found: a(2664, e.DiagnosticCategory.Error, "Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664", "Invalid module name in augmentation, module '{0}' cannot be found."), Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented: a(2665, e.DiagnosticCategory.Error, "Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augm_2665", "Invalid module name in augmentation. Module '{0}' resolves to an untyped module at '{1}', which cannot be augmented."), Exports_and_export_assignments_are_not_permitted_in_module_augmentations: a(2666, e.DiagnosticCategory.Error, "Exports_and_export_assignments_are_not_permitted_in_module_augmentations_2666", "Exports and export assignments are not permitted in module augmentations."), Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module: a(2667, e.DiagnosticCategory.Error, "Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_mod_2667", "Imports are not permitted in module augmentations. Consider moving them to the enclosing external module."), export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible: a(2668, e.DiagnosticCategory.Error, "export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always__2668", "'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible."), Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations: a(2669, e.DiagnosticCategory.Error, "Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_2669", "Augmentations for the global scope can only be directly nested in external modules or ambient module declarations."), Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambient_context: a(2670, e.DiagnosticCategory.Error, "Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambien_2670", "Augmentations for the global scope should have 'declare' modifier unless they appear in already ambient context."), Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity: a(2671, e.DiagnosticCategory.Error, "Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity_2671", "Cannot augment module '{0}' because it resolves to a non-module entity."), Cannot_assign_a_0_constructor_type_to_a_1_constructor_type: a(2672, e.DiagnosticCategory.Error, "Cannot_assign_a_0_constructor_type_to_a_1_constructor_type_2672", "Cannot assign a '{0}' constructor type to a '{1}' constructor type."), Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration: a(2673, e.DiagnosticCategory.Error, "Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration_2673", "Constructor of class '{0}' is private and only accessible within the class declaration."), Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration: a(2674, e.DiagnosticCategory.Error, "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674", "Constructor of class '{0}' is protected and only accessible within the class declaration."), Cannot_extend_a_class_0_Class_constructor_is_marked_as_private: a(2675, e.DiagnosticCategory.Error, "Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675", "Cannot extend a class '{0}'. Class constructor is marked as private."), Accessors_must_both_be_abstract_or_non_abstract: a(2676, e.DiagnosticCategory.Error, "Accessors_must_both_be_abstract_or_non_abstract_2676", "Accessors must both be abstract or non-abstract."), A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type: a(2677, e.DiagnosticCategory.Error, "A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677", "A type predicate's type must be assignable to its parameter's type."), Type_0_is_not_comparable_to_type_1: a(2678, e.DiagnosticCategory.Error, "Type_0_is_not_comparable_to_type_1_2678", "Type '{0}' is not comparable to type '{1}'."), A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void: a(2679, e.DiagnosticCategory.Error, "A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679", "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'."), A_0_parameter_must_be_the_first_parameter: a(2680, e.DiagnosticCategory.Error, "A_0_parameter_must_be_the_first_parameter_2680", "A '{0}' parameter must be the first parameter."), A_constructor_cannot_have_a_this_parameter: a(2681, e.DiagnosticCategory.Error, "A_constructor_cannot_have_a_this_parameter_2681", "A constructor cannot have a 'this' parameter."), this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation: a(2683, e.DiagnosticCategory.Error, "this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683", "'this' implicitly has type 'any' because it does not have a type annotation."), The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1: a(2684, e.DiagnosticCategory.Error, "The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684", "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'."), The_this_types_of_each_signature_are_incompatible: a(2685, e.DiagnosticCategory.Error, "The_this_types_of_each_signature_are_incompatible_2685", "The 'this' types of each signature are incompatible."), _0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead: a(2686, e.DiagnosticCategory.Error, "_0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead_2686", "'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead."), All_declarations_of_0_must_have_identical_modifiers: a(2687, e.DiagnosticCategory.Error, "All_declarations_of_0_must_have_identical_modifiers_2687", "All declarations of '{0}' must have identical modifiers."), Cannot_find_type_definition_file_for_0: a(2688, e.DiagnosticCategory.Error, "Cannot_find_type_definition_file_for_0_2688", "Cannot find type definition file for '{0}'."), Cannot_extend_an_interface_0_Did_you_mean_implements: a(2689, e.DiagnosticCategory.Error, "Cannot_extend_an_interface_0_Did_you_mean_implements_2689", "Cannot extend an interface '{0}'. Did you mean 'implements'?"), _0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0: a(2690, e.DiagnosticCategory.Error, "_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0_2690", "'{0}' only refers to a type, but is being used as a value here. Did you mean to use '{1} in {0}'?"), An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead: a(2691, e.DiagnosticCategory.Error, "An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead_2691", "An import path cannot end with a '{0}' extension. Consider importing '{1}' instead."), _0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible: a(2692, e.DiagnosticCategory.Error, "_0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible_2692", "'{0}' is a primitive, but '{1}' is a wrapper object. Prefer using '{0}' when possible."), _0_only_refers_to_a_type_but_is_being_used_as_a_value_here: a(2693, e.DiagnosticCategory.Error, "_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_2693", "'{0}' only refers to a type, but is being used as a value here."), Namespace_0_has_no_exported_member_1: a(2694, e.DiagnosticCategory.Error, "Namespace_0_has_no_exported_member_1_2694", "Namespace '{0}' has no exported member '{1}'."), Left_side_of_comma_operator_is_unused_and_has_no_side_effects: a(2695, e.DiagnosticCategory.Error, "Left_side_of_comma_operator_is_unused_and_has_no_side_effects_2695", "Left side of comma operator is unused and has no side effects.", true), The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead: a(2696, e.DiagnosticCategory.Error, "The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead_2696", "The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?"), An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option: a(2697, e.DiagnosticCategory.Error, "An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_in_2697", "An async function or method must return a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option."), Spread_types_may_only_be_created_from_object_types: a(2698, e.DiagnosticCategory.Error, "Spread_types_may_only_be_created_from_object_types_2698", "Spread types may only be created from object types."), Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1: a(2699, e.DiagnosticCategory.Error, "Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1_2699", "Static property '{0}' conflicts with built-in property 'Function.{0}' of constructor function '{1}'."), Rest_types_may_only_be_created_from_object_types: a(2700, e.DiagnosticCategory.Error, "Rest_types_may_only_be_created_from_object_types_2700", "Rest types may only be created from object types."), The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access: a(2701, e.DiagnosticCategory.Error, "The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access_2701", "The target of an object rest assignment must be a variable or a property access."), _0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here: a(2702, e.DiagnosticCategory.Error, "_0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here_2702", "'{0}' only refers to a type, but is being used as a namespace here."), The_operand_of_a_delete_operator_must_be_a_property_reference: a(2703, e.DiagnosticCategory.Error, "The_operand_of_a_delete_operator_must_be_a_property_reference_2703", "The operand of a 'delete' operator must be a property reference."), The_operand_of_a_delete_operator_cannot_be_a_read_only_property: a(2704, e.DiagnosticCategory.Error, "The_operand_of_a_delete_operator_cannot_be_a_read_only_property_2704", "The operand of a 'delete' operator cannot be a read-only property."), An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option: a(2705, e.DiagnosticCategory.Error, "An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_de_2705", "An async function or method in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option."), Required_type_parameters_may_not_follow_optional_type_parameters: a(2706, e.DiagnosticCategory.Error, "Required_type_parameters_may_not_follow_optional_type_parameters_2706", "Required type parameters may not follow optional type parameters."), Generic_type_0_requires_between_1_and_2_type_arguments: a(2707, e.DiagnosticCategory.Error, "Generic_type_0_requires_between_1_and_2_type_arguments_2707", "Generic type '{0}' requires between {1} and {2} type arguments."), Cannot_use_namespace_0_as_a_value: a(2708, e.DiagnosticCategory.Error, "Cannot_use_namespace_0_as_a_value_2708", "Cannot use namespace '{0}' as a value."), Cannot_use_namespace_0_as_a_type: a(2709, e.DiagnosticCategory.Error, "Cannot_use_namespace_0_as_a_type_2709", "Cannot use namespace '{0}' as a type."), _0_are_specified_twice_The_attribute_named_0_will_be_overwritten: a(2710, e.DiagnosticCategory.Error, "_0_are_specified_twice_The_attribute_named_0_will_be_overwritten_2710", "'{0}' are specified twice. The attribute named '{0}' will be overwritten."), A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option: a(2711, e.DiagnosticCategory.Error, "A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES20_2711", "A dynamic import call returns a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option."), A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option: a(2712, e.DiagnosticCategory.Error, "A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declarat_2712", "A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option."), Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1: a(2713, e.DiagnosticCategory.Error, "Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_p_2713", `Cannot access '{0}.{1}' because '{0}' is a type, but not a namespace. Did you mean to retrieve the type of the property '{1}' in '{0}' with '{0}["{1}"]'?`), The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context: a(2714, e.DiagnosticCategory.Error, "The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context_2714", "The expression of an export assignment must be an identifier or qualified name in an ambient context."), Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor: a(2715, e.DiagnosticCategory.Error, "Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor_2715", "Abstract property '{0}' in class '{1}' cannot be accessed in the constructor."), Type_parameter_0_has_a_circular_default: a(2716, e.DiagnosticCategory.Error, "Type_parameter_0_has_a_circular_default_2716", "Type parameter '{0}' has a circular default."), Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_type_2: a(2717, e.DiagnosticCategory.Error, "Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_t_2717", "Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'."), Duplicate_property_0: a(2718, e.DiagnosticCategory.Error, "Duplicate_property_0_2718", "Duplicate property '{0}'."), Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated: a(2719, e.DiagnosticCategory.Error, "Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719", "Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated."), Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass: a(2720, e.DiagnosticCategory.Error, "Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720", "Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?"), Cannot_invoke_an_object_which_is_possibly_null: a(2721, e.DiagnosticCategory.Error, "Cannot_invoke_an_object_which_is_possibly_null_2721", "Cannot invoke an object which is possibly 'null'."), Cannot_invoke_an_object_which_is_possibly_undefined: a(2722, e.DiagnosticCategory.Error, "Cannot_invoke_an_object_which_is_possibly_undefined_2722", "Cannot invoke an object which is possibly 'undefined'."), Cannot_invoke_an_object_which_is_possibly_null_or_undefined: a(2723, e.DiagnosticCategory.Error, "Cannot_invoke_an_object_which_is_possibly_null_or_undefined_2723", "Cannot invoke an object which is possibly 'null' or 'undefined'."), _0_has_no_exported_member_named_1_Did_you_mean_2: a(2724, e.DiagnosticCategory.Error, "_0_has_no_exported_member_named_1_Did_you_mean_2_2724", "'{0}' has no exported member named '{1}'. Did you mean '{2}'?"), Class_name_cannot_be_Object_when_targeting_ES5_with_module_0: a(2725, e.DiagnosticCategory.Error, "Class_name_cannot_be_Object_when_targeting_ES5_with_module_0_2725", "Class name cannot be 'Object' when targeting ES5 with module {0}."), Cannot_find_lib_definition_for_0: a(2726, e.DiagnosticCategory.Error, "Cannot_find_lib_definition_for_0_2726", "Cannot find lib definition for '{0}'."), Cannot_find_lib_definition_for_0_Did_you_mean_1: a(2727, e.DiagnosticCategory.Error, "Cannot_find_lib_definition_for_0_Did_you_mean_1_2727", "Cannot find lib definition for '{0}'. Did you mean '{1}'?"), _0_is_declared_here: a(2728, e.DiagnosticCategory.Message, "_0_is_declared_here_2728", "'{0}' is declared here."), Property_0_is_used_before_its_initialization: a(2729, e.DiagnosticCategory.Error, "Property_0_is_used_before_its_initialization_2729", "Property '{0}' is used before its initialization."), An_arrow_function_cannot_have_a_this_parameter: a(2730, e.DiagnosticCategory.Error, "An_arrow_function_cannot_have_a_this_parameter_2730", "An arrow function cannot have a 'this' parameter."), Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_in_String: a(2731, e.DiagnosticCategory.Error, "Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_i_2731", "Implicit conversion of a 'symbol' to a 'string' will fail at runtime. Consider wrapping this expression in 'String(...)'."), Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension: a(2732, e.DiagnosticCategory.Error, "Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension_2732", "Cannot find module '{0}'. Consider using '--resolveJsonModule' to import module with '.json' extension."), Property_0_was_also_declared_here: a(2733, e.DiagnosticCategory.Error, "Property_0_was_also_declared_here_2733", "Property '{0}' was also declared here."), Are_you_missing_a_semicolon: a(2734, e.DiagnosticCategory.Error, "Are_you_missing_a_semicolon_2734", "Are you missing a semicolon?"), Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1: a(2735, e.DiagnosticCategory.Error, "Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1_2735", "Did you mean for '{0}' to be constrained to type 'new (...args: any[]) => {1}'?"), Operator_0_cannot_be_applied_to_type_1: a(2736, e.DiagnosticCategory.Error, "Operator_0_cannot_be_applied_to_type_1_2736", "Operator '{0}' cannot be applied to type '{1}'."), BigInt_literals_are_not_available_when_targeting_lower_than_ES2020: a(2737, e.DiagnosticCategory.Error, "BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737", "BigInt literals are not available when targeting lower than ES2020."), An_outer_value_of_this_is_shadowed_by_this_container: a(2738, e.DiagnosticCategory.Message, "An_outer_value_of_this_is_shadowed_by_this_container_2738", "An outer value of 'this' is shadowed by this container."), Type_0_is_missing_the_following_properties_from_type_1_Colon_2: a(2739, e.DiagnosticCategory.Error, "Type_0_is_missing_the_following_properties_from_type_1_Colon_2_2739", "Type '{0}' is missing the following properties from type '{1}': {2}"), Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more: a(2740, e.DiagnosticCategory.Error, "Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more_2740", "Type '{0}' is missing the following properties from type '{1}': {2}, and {3} more."), Property_0_is_missing_in_type_1_but_required_in_type_2: a(2741, e.DiagnosticCategory.Error, "Property_0_is_missing_in_type_1_but_required_in_type_2_2741", "Property '{0}' is missing in type '{1}' but required in type '{2}'."), The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_annotation_is_necessary: a(2742, e.DiagnosticCategory.Error, "The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_a_2742", "The inferred type of '{0}' cannot be named without a reference to '{1}'. This is likely not portable. A type annotation is necessary."), No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments: a(2743, e.DiagnosticCategory.Error, "No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments_2743", "No overload expects {0} type arguments, but overloads do exist that expect either {1} or {2} type arguments."), Type_parameter_defaults_can_only_reference_previously_declared_type_parameters: a(2744, e.DiagnosticCategory.Error, "Type_parameter_defaults_can_only_reference_previously_declared_type_parameters_2744", "Type parameter defaults can only reference previously declared type parameters."), This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided: a(2745, e.DiagnosticCategory.Error, "This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745", "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided."), This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided: a(2746, e.DiagnosticCategory.Error, "This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746", "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided."), _0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2: a(2747, e.DiagnosticCategory.Error, "_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747", "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'."), Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided: a(2748, e.DiagnosticCategory.Error, "Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided_2748", "Cannot access ambient const enums when the '--isolatedModules' flag is provided."), _0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0: a(2749, e.DiagnosticCategory.Error, "_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0_2749", "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?"), The_implementation_signature_is_declared_here: a(2750, e.DiagnosticCategory.Error, "The_implementation_signature_is_declared_here_2750", "The implementation signature is declared here."), Circularity_originates_in_type_at_this_location: a(2751, e.DiagnosticCategory.Error, "Circularity_originates_in_type_at_this_location_2751", "Circularity originates in type at this location."), The_first_export_default_is_here: a(2752, e.DiagnosticCategory.Error, "The_first_export_default_is_here_2752", "The first export default is here."), Another_export_default_is_here: a(2753, e.DiagnosticCategory.Error, "Another_export_default_is_here_2753", "Another export default is here."), super_may_not_use_type_arguments: a(2754, e.DiagnosticCategory.Error, "super_may_not_use_type_arguments_2754", "'super' may not use type arguments."), No_constituent_of_type_0_is_callable: a(2755, e.DiagnosticCategory.Error, "No_constituent_of_type_0_is_callable_2755", "No constituent of type '{0}' is callable."), Not_all_constituents_of_type_0_are_callable: a(2756, e.DiagnosticCategory.Error, "Not_all_constituents_of_type_0_are_callable_2756", "Not all constituents of type '{0}' are callable."), Type_0_has_no_call_signatures: a(2757, e.DiagnosticCategory.Error, "Type_0_has_no_call_signatures_2757", "Type '{0}' has no call signatures."), Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_other: a(2758, e.DiagnosticCategory.Error, "Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_2758", "Each member of the union type '{0}' has signatures, but none of those signatures are compatible with each other."), No_constituent_of_type_0_is_constructable: a(2759, e.DiagnosticCategory.Error, "No_constituent_of_type_0_is_constructable_2759", "No constituent of type '{0}' is constructable."), Not_all_constituents_of_type_0_are_constructable: a(2760, e.DiagnosticCategory.Error, "Not_all_constituents_of_type_0_are_constructable_2760", "Not all constituents of type '{0}' are constructable."), Type_0_has_no_construct_signatures: a(2761, e.DiagnosticCategory.Error, "Type_0_has_no_construct_signatures_2761", "Type '{0}' has no construct signatures."), Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_with_each_other: a(2762, e.DiagnosticCategory.Error, "Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_2762", "Each member of the union type '{0}' has construct signatures, but none of those signatures are compatible with each other."), Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_send_0: a(2763, e.DiagnosticCategory.Error, "Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_s_2763", "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but for-of will always send '{0}'."), Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_always_send_0: a(2764, e.DiagnosticCategory.Error, "Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_al_2764", "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array spread will always send '{0}'."), Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring_will_always_send_0: a(2765, e.DiagnosticCategory.Error, "Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring__2765", "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array destructuring will always send '{0}'."), Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_containing_generator_will_always_send_0: a(2766, e.DiagnosticCategory.Error, "Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_co_2766", "Cannot delegate iteration to value because the 'next' method of its iterator expects type '{1}', but the containing generator will always send '{0}'."), The_0_property_of_an_iterator_must_be_a_method: a(2767, e.DiagnosticCategory.Error, "The_0_property_of_an_iterator_must_be_a_method_2767", "The '{0}' property of an iterator must be a method."), The_0_property_of_an_async_iterator_must_be_a_method: a(2768, e.DiagnosticCategory.Error, "The_0_property_of_an_async_iterator_must_be_a_method_2768", "The '{0}' property of an async iterator must be a method."), No_overload_matches_this_call: a(2769, e.DiagnosticCategory.Error, "No_overload_matches_this_call_2769", "No overload matches this call."), The_last_overload_gave_the_following_error: a(2770, e.DiagnosticCategory.Error, "The_last_overload_gave_the_following_error_2770", "The last overload gave the following error."), The_last_overload_is_declared_here: a(2771, e.DiagnosticCategory.Error, "The_last_overload_is_declared_here_2771", "The last overload is declared here."), Overload_0_of_1_2_gave_the_following_error: a(2772, e.DiagnosticCategory.Error, "Overload_0_of_1_2_gave_the_following_error_2772", "Overload {0} of {1}, '{2}', gave the following error."), Did_you_forget_to_use_await: a(2773, e.DiagnosticCategory.Error, "Did_you_forget_to_use_await_2773", "Did you forget to use 'await'?"), This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead: a(2774, e.DiagnosticCategory.Error, "This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_2774", "This condition will always return true since this function is always defined. Did you mean to call it instead?"), Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation: a(2775, e.DiagnosticCategory.Error, "Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation_2775", "Assertions require every name in the call target to be declared with an explicit type annotation."), Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name: a(2776, e.DiagnosticCategory.Error, "Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name_2776", "Assertions require the call target to be an identifier or qualified name."), The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access: a(2777, e.DiagnosticCategory.Error, "The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access_2777", "The operand of an increment or decrement operator may not be an optional property access."), The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access: a(2778, e.DiagnosticCategory.Error, "The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access_2778", "The target of an object rest assignment may not be an optional property access."), The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access: a(2779, e.DiagnosticCategory.Error, "The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access_2779", "The left-hand side of an assignment expression may not be an optional property access."), The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access: a(2780, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access_2780", "The left-hand side of a 'for...in' statement may not be an optional property access."), The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access: a(2781, e.DiagnosticCategory.Error, "The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access_2781", "The left-hand side of a 'for...of' statement may not be an optional property access."), _0_needs_an_explicit_type_annotation: a(2782, e.DiagnosticCategory.Message, "_0_needs_an_explicit_type_annotation_2782", "'{0}' needs an explicit type annotation."), _0_is_specified_more_than_once_so_this_usage_will_be_overwritten: a(2783, e.DiagnosticCategory.Error, "_0_is_specified_more_than_once_so_this_usage_will_be_overwritten_2783", "'{0}' is specified more than once, so this usage will be overwritten."), get_and_set_accessors_cannot_declare_this_parameters: a(2784, e.DiagnosticCategory.Error, "get_and_set_accessors_cannot_declare_this_parameters_2784", "'get' and 'set' accessors cannot declare 'this' parameters."), This_spread_always_overwrites_this_property: a(2785, e.DiagnosticCategory.Error, "This_spread_always_overwrites_this_property_2785", "This spread always overwrites this property."), _0_cannot_be_used_as_a_JSX_component: a(2786, e.DiagnosticCategory.Error, "_0_cannot_be_used_as_a_JSX_component_2786", "'{0}' cannot be used as a JSX component."), Its_return_type_0_is_not_a_valid_JSX_element: a(2787, e.DiagnosticCategory.Error, "Its_return_type_0_is_not_a_valid_JSX_element_2787", "Its return type '{0}' is not a valid JSX element."), Its_instance_type_0_is_not_a_valid_JSX_element: a(2788, e.DiagnosticCategory.Error, "Its_instance_type_0_is_not_a_valid_JSX_element_2788", "Its instance type '{0}' is not a valid JSX element."), Its_element_type_0_is_not_a_valid_JSX_element: a(2789, e.DiagnosticCategory.Error, "Its_element_type_0_is_not_a_valid_JSX_element_2789", "Its element type '{0}' is not a valid JSX element."), The_operand_of_a_delete_operator_must_be_optional: a(2790, e.DiagnosticCategory.Error, "The_operand_of_a_delete_operator_must_be_optional_2790", "The operand of a 'delete' operator must be optional."), Exponentiation_cannot_be_performed_on_bigint_values_unless_the_target_option_is_set_to_es2016_or_later: a(2791, e.DiagnosticCategory.Error, "Exponentiation_cannot_be_performed_on_bigint_values_unless_the_target_option_is_set_to_es2016_or_lat_2791", "Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later."), Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_node_or_to_add_aliases_to_the_paths_option: a(2792, e.DiagnosticCategory.Error, "Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_node_or_to_add_aliases_to_th_2792", "Cannot find module '{0}'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?"), The_call_would_have_succeeded_against_this_implementation_but_implementation_signatures_of_overloads_are_not_externally_visible: a(2793, e.DiagnosticCategory.Error, "The_call_would_have_succeeded_against_this_implementation_but_implementation_signatures_of_overloads_2793", "The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible."), Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise: a(2794, e.DiagnosticCategory.Error, "Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise_2794", "Expected {0} arguments, but got {1}. Did you forget to include 'void' in your type argument to 'Promise'?"), The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types: a(2795, e.DiagnosticCategory.Error, "The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types_2795", "The 'intrinsic' keyword can only be used to declare compiler provided intrinsic types."), It_is_likely_that_you_are_missing_a_comma_to_separate_these_two_template_expressions_They_form_a_tagged_template_expression_which_cannot_be_invoked: a(2796, e.DiagnosticCategory.Error, "It_is_likely_that_you_are_missing_a_comma_to_separate_these_two_template_expressions_They_form_a_tag_2796", "It is likely that you are missing a comma to separate these two template expressions. They form a tagged template expression which cannot be invoked."), A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_be_declared_abstract: a(2797, e.DiagnosticCategory.Error, "A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_2797", "A mixin class that extends from a type variable containing an abstract construct signature must also be declared 'abstract'."), The_declaration_was_marked_as_deprecated_here: a(2798, e.DiagnosticCategory.Error, "The_declaration_was_marked_as_deprecated_here_2798", "The declaration was marked as deprecated here."), Type_produces_a_tuple_type_that_is_too_large_to_represent: a(2799, e.DiagnosticCategory.Error, "Type_produces_a_tuple_type_that_is_too_large_to_represent_2799", "Type produces a tuple type that is too large to represent."), Expression_produces_a_tuple_type_that_is_too_large_to_represent: a(2800, e.DiagnosticCategory.Error, "Expression_produces_a_tuple_type_that_is_too_large_to_represent_2800", "Expression produces a tuple type that is too large to represent."), This_condition_will_always_return_true_since_this_0_is_always_defined: a(2801, e.DiagnosticCategory.Error, "This_condition_will_always_return_true_since_this_0_is_always_defined_2801", "This condition will always return true since this '{0}' is always defined."), Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher: a(2802, e.DiagnosticCategory.Error, "Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es201_2802", "Type '{0}' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher."), Cannot_assign_to_private_method_0_Private_methods_are_not_writable: a(2803, e.DiagnosticCategory.Error, "Cannot_assign_to_private_method_0_Private_methods_are_not_writable_2803", "Cannot assign to private method '{0}'. Private methods are not writable."), Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name: a(2804, e.DiagnosticCategory.Error, "Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name_2804", "Duplicate identifier '{0}'. Static and instance elements cannot share the same private name."), Private_accessor_was_defined_without_a_getter: a(2806, e.DiagnosticCategory.Error, "Private_accessor_was_defined_without_a_getter_2806", "Private accessor was defined without a getter."), This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0: a(2807, e.DiagnosticCategory.Error, "This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_o_2807", "This syntax requires an imported helper named '{1}' with {2} parameters, which is not compatible with the one in '{0}'. Consider upgrading your version of '{0}'."), A_get_accessor_must_be_at_least_as_accessible_as_the_setter: a(2808, e.DiagnosticCategory.Error, "A_get_accessor_must_be_at_least_as_accessible_as_the_setter_2808", "A get accessor must be at least as accessible as the setter"), Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_destructuring_assignment_you_might_need_to_wrap_the_the_whole_assignment_in_parentheses: a(2809, e.DiagnosticCategory.Error, "Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_d_2809", "Declaration or statement expected. This '=' follows a block of statements, so if you intended to write a destructuring assignment, you might need to wrap the the whole assignment in parentheses."), Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments: a(2810, e.DiagnosticCategory.Error, "Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_2810", "Expected 1 argument, but got 0. 'new Promise()' needs a JSDoc hint to produce a 'resolve' that can be called without arguments."), Initializer_for_property_0: a(2811, e.DiagnosticCategory.Error, "Initializer_for_property_0_2811", "Initializer for property '{0}'"), Property_0_does_not_exist_on_type_1_Try_changing_the_lib_compiler_option_to_include_dom: a(2812, e.DiagnosticCategory.Error, "Property_0_does_not_exist_on_type_1_Try_changing_the_lib_compiler_option_to_include_dom_2812", "Property '{0}' does not exist on type '{1}'. Try changing the 'lib' compiler option to include 'dom'."), Class_declaration_cannot_implement_overload_list_for_0: a(2813, e.DiagnosticCategory.Error, "Class_declaration_cannot_implement_overload_list_for_0_2813", "Class declaration cannot implement overload list for '{0}'."), Function_with_bodies_can_only_merge_with_classes_that_are_ambient: a(2814, e.DiagnosticCategory.Error, "Function_with_bodies_can_only_merge_with_classes_that_are_ambient_2814", "Function with bodies can only merge with classes that are ambient."), arguments_cannot_be_referenced_in_property_initializers: a(2815, e.DiagnosticCategory.Error, "arguments_cannot_be_referenced_in_property_initializers_2815", "'arguments' cannot be referenced in property initializers."), Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class: a(2816, e.DiagnosticCategory.Error, "Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class_2816", "Cannot use 'this' in a static property initializer of a decorated class."), Property_0_has_no_initializer_and_is_not_definitely_assigned_in_a_class_static_block: a(2817, e.DiagnosticCategory.Error, "Property_0_has_no_initializer_and_is_not_definitely_assigned_in_a_class_static_block_2817", "Property '{0}' has no initializer and is not definitely assigned in a class static block."), Duplicate_identifier_0_Compiler_reserves_name_1_when_emitting_super_references_in_static_initializers: a(2818, e.DiagnosticCategory.Error, "Duplicate_identifier_0_Compiler_reserves_name_1_when_emitting_super_references_in_static_initializer_2818", "Duplicate identifier '{0}'. Compiler reserves name '{1}' when emitting 'super' references in static initializers."), Namespace_name_cannot_be_0: a(2819, e.DiagnosticCategory.Error, "Namespace_name_cannot_be_0_2819", "Namespace name cannot be '{0}'."), Type_0_is_not_assignable_to_type_1_Did_you_mean_2: a(2820, e.DiagnosticCategory.Error, "Type_0_is_not_assignable_to_type_1_Did_you_mean_2_2820", "Type '{0}' is not assignable to type '{1}'. Did you mean '{2}'?"), Import_assertions_are_only_supported_when_the_module_option_is_set_to_esnext_or_nodenext: a(2821, e.DiagnosticCategory.Error, "Import_assertions_are_only_supported_when_the_module_option_is_set_to_esnext_or_nodenext_2821", "Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'."), Import_assertions_cannot_be_used_with_type_only_imports_or_exports: a(2822, e.DiagnosticCategory.Error, "Import_assertions_cannot_be_used_with_type_only_imports_or_exports_2822", "Import assertions cannot be used with type-only imports or exports."), Cannot_find_namespace_0_Did_you_mean_1: a(2833, e.DiagnosticCategory.Error, "Cannot_find_namespace_0_Did_you_mean_1_2833", "Cannot find namespace '{0}'. Did you mean '{1}'?"), Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Consider_adding_an_extension_to_the_import_path: a(2834, e.DiagnosticCategory.Error, "Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_n_2834", "Relative import paths need explicit file extensions in EcmaScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Consider adding an extension to the import path."), Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Did_you_mean_0: a(2835, e.DiagnosticCategory.Error, "Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_n_2835", "Relative import paths need explicit file extensions in EcmaScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Did you mean '{0}'?"), Import_assertions_are_not_allowed_on_statements_that_transpile_to_commonjs_require_calls: a(2836, e.DiagnosticCategory.Error, "Import_assertions_are_not_allowed_on_statements_that_transpile_to_commonjs_require_calls_2836", "Import assertions are not allowed on statements that transpile to commonjs 'require' calls."), Import_assertion_values_must_be_string_literal_expressions: a(2837, e.DiagnosticCategory.Error, "Import_assertion_values_must_be_string_literal_expressions_2837", "Import assertion values must be string literal expressions."), All_declarations_of_0_must_have_identical_constraints: a(2838, e.DiagnosticCategory.Error, "All_declarations_of_0_must_have_identical_constraints_2838", "All declarations of '{0}' must have identical constraints."), Import_declaration_0_is_using_private_name_1: a(4e3, e.DiagnosticCategory.Error, "Import_declaration_0_is_using_private_name_1_4000", "Import declaration '{0}' is using private name '{1}'."), Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: a(4002, e.DiagnosticCategory.Error, "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", "Type parameter '{0}' of exported class has or is using private name '{1}'."), Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: a(4004, e.DiagnosticCategory.Error, "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", "Type parameter '{0}' of exported interface has or is using private name '{1}'."), Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: a(4006, e.DiagnosticCategory.Error, "Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4006", "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'."), Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: a(4008, e.DiagnosticCategory.Error, "Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4008", "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'."), Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: a(4010, e.DiagnosticCategory.Error, "Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4010", "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'."), Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: a(4012, e.DiagnosticCategory.Error, "Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4012", "Type parameter '{0}' of public method from exported class has or is using private name '{1}'."), Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: a(4014, e.DiagnosticCategory.Error, "Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4014", "Type parameter '{0}' of method from exported interface has or is using private name '{1}'."), Type_parameter_0_of_exported_function_has_or_is_using_private_name_1: a(4016, e.DiagnosticCategory.Error, "Type_parameter_0_of_exported_function_has_or_is_using_private_name_1_4016", "Type parameter '{0}' of exported function has or is using private name '{1}'."), Implements_clause_of_exported_class_0_has_or_is_using_private_name_1: a(4019, e.DiagnosticCategory.Error, "Implements_clause_of_exported_class_0_has_or_is_using_private_name_1_4019", "Implements clause of exported class '{0}' has or is using private name '{1}'."), extends_clause_of_exported_class_0_has_or_is_using_private_name_1: a(4020, e.DiagnosticCategory.Error, "extends_clause_of_exported_class_0_has_or_is_using_private_name_1_4020", "'extends' clause of exported class '{0}' has or is using private name '{1}'."), extends_clause_of_exported_class_has_or_is_using_private_name_0: a(4021, e.DiagnosticCategory.Error, "extends_clause_of_exported_class_has_or_is_using_private_name_0_4021", "'extends' clause of exported class has or is using private name '{0}'."), extends_clause_of_exported_interface_0_has_or_is_using_private_name_1: a(4022, e.DiagnosticCategory.Error, "extends_clause_of_exported_interface_0_has_or_is_using_private_name_1_4022", "'extends' clause of exported interface '{0}' has or is using private name '{1}'."), Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4023, e.DiagnosticCategory.Error, "Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023", "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named."), Exported_variable_0_has_or_is_using_name_1_from_private_module_2: a(4024, e.DiagnosticCategory.Error, "Exported_variable_0_has_or_is_using_name_1_from_private_module_2_4024", "Exported variable '{0}' has or is using name '{1}' from private module '{2}'."), Exported_variable_0_has_or_is_using_private_name_1: a(4025, e.DiagnosticCategory.Error, "Exported_variable_0_has_or_is_using_private_name_1_4025", "Exported variable '{0}' has or is using private name '{1}'."), Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4026, e.DiagnosticCategory.Error, "Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot__4026", "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."), Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: a(4027, e.DiagnosticCategory.Error, "Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4027", "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'."), Public_static_property_0_of_exported_class_has_or_is_using_private_name_1: a(4028, e.DiagnosticCategory.Error, "Public_static_property_0_of_exported_class_has_or_is_using_private_name_1_4028", "Public static property '{0}' of exported class has or is using private name '{1}'."), Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4029, e.DiagnosticCategory.Error, "Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_name_4029", "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."), Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: a(4030, e.DiagnosticCategory.Error, "Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4030", "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'."), Public_property_0_of_exported_class_has_or_is_using_private_name_1: a(4031, e.DiagnosticCategory.Error, "Public_property_0_of_exported_class_has_or_is_using_private_name_1_4031", "Public property '{0}' of exported class has or is using private name '{1}'."), Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: a(4032, e.DiagnosticCategory.Error, "Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2_4032", "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'."), Property_0_of_exported_interface_has_or_is_using_private_name_1: a(4033, e.DiagnosticCategory.Error, "Property_0_of_exported_interface_has_or_is_using_private_name_1_4033", "Property '{0}' of exported interface has or is using private name '{1}'."), Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2: a(4034, e.DiagnosticCategory.Error, "Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_mod_4034", "Parameter type of public static setter '{0}' from exported class has or is using name '{1}' from private module '{2}'."), Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1: a(4035, e.DiagnosticCategory.Error, "Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1_4035", "Parameter type of public static setter '{0}' from exported class has or is using private name '{1}'."), Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2: a(4036, e.DiagnosticCategory.Error, "Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2_4036", "Parameter type of public setter '{0}' from exported class has or is using name '{1}' from private module '{2}'."), Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1: a(4037, e.DiagnosticCategory.Error, "Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1_4037", "Parameter type of public setter '{0}' from exported class has or is using private name '{1}'."), Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4038, e.DiagnosticCategory.Error, "Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_modul_4038", "Return type of public static getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named."), Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2: a(4039, e.DiagnosticCategory.Error, "Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_4039", "Return type of public static getter '{0}' from exported class has or is using name '{1}' from private module '{2}'."), Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1: a(4040, e.DiagnosticCategory.Error, "Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1_4040", "Return type of public static getter '{0}' from exported class has or is using private name '{1}'."), Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4041, e.DiagnosticCategory.Error, "Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_4041", "Return type of public getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named."), Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2: a(4042, e.DiagnosticCategory.Error, "Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2_4042", "Return type of public getter '{0}' from exported class has or is using name '{1}' from private module '{2}'."), Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1: a(4043, e.DiagnosticCategory.Error, "Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1_4043", "Return type of public getter '{0}' from exported class has or is using private name '{1}'."), Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: a(4044, e.DiagnosticCategory.Error, "Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_mod_4044", "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'."), Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0: a(4045, e.DiagnosticCategory.Error, "Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0_4045", "Return type of constructor signature from exported interface has or is using private name '{0}'."), Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: a(4046, e.DiagnosticCategory.Error, "Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4046", "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'."), Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0: a(4047, e.DiagnosticCategory.Error, "Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0_4047", "Return type of call signature from exported interface has or is using private name '{0}'."), Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1: a(4048, e.DiagnosticCategory.Error, "Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4048", "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'."), Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0: a(4049, e.DiagnosticCategory.Error, "Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0_4049", "Return type of index signature from exported interface has or is using private name '{0}'."), Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: a(4050, e.DiagnosticCategory.Error, "Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module__4050", "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named."), Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: a(4051, e.DiagnosticCategory.Error, "Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4051", "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'."), Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0: a(4052, e.DiagnosticCategory.Error, "Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0_4052", "Return type of public static method from exported class has or is using private name '{0}'."), Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: a(4053, e.DiagnosticCategory.Error, "Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_c_4053", "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named."), Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1: a(4054, e.DiagnosticCategory.Error, "Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4054", "Return type of public method from exported class has or is using name '{0}' from private module '{1}'."), Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0: a(4055, e.DiagnosticCategory.Error, "Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0_4055", "Return type of public method from exported class has or is using private name '{0}'."), Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1: a(4056, e.DiagnosticCategory.Error, "Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4056", "Return type of method from exported interface has or is using name '{0}' from private module '{1}'."), Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0: a(4057, e.DiagnosticCategory.Error, "Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0_4057", "Return type of method from exported interface has or is using private name '{0}'."), Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named: a(4058, e.DiagnosticCategory.Error, "Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named_4058", "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named."), Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1: a(4059, e.DiagnosticCategory.Error, "Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1_4059", "Return type of exported function has or is using name '{0}' from private module '{1}'."), Return_type_of_exported_function_has_or_is_using_private_name_0: a(4060, e.DiagnosticCategory.Error, "Return_type_of_exported_function_has_or_is_using_private_name_0_4060", "Return type of exported function has or is using private name '{0}'."), Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4061, e.DiagnosticCategory.Error, "Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_can_4061", "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named."), Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2: a(4062, e.DiagnosticCategory.Error, "Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2_4062", "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'."), Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1: a(4063, e.DiagnosticCategory.Error, "Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1_4063", "Parameter '{0}' of constructor from exported class has or is using private name '{1}'."), Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: a(4064, e.DiagnosticCategory.Error, "Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_mod_4064", "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'."), Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1: a(4065, e.DiagnosticCategory.Error, "Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4065", "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'."), Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: a(4066, e.DiagnosticCategory.Error, "Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4066", "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'."), Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1: a(4067, e.DiagnosticCategory.Error, "Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4067", "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'."), Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4068, e.DiagnosticCategory.Error, "Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module__4068", "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named."), Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: a(4069, e.DiagnosticCategory.Error, "Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4069", "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'."), Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1: a(4070, e.DiagnosticCategory.Error, "Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4070", "Parameter '{0}' of public static method from exported class has or is using private name '{1}'."), Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4071, e.DiagnosticCategory.Error, "Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_c_4071", "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named."), Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2: a(4072, e.DiagnosticCategory.Error, "Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4072", "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'."), Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1: a(4073, e.DiagnosticCategory.Error, "Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4073", "Parameter '{0}' of public method from exported class has or is using private name '{1}'."), Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2: a(4074, e.DiagnosticCategory.Error, "Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4074", "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'."), Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1: a(4075, e.DiagnosticCategory.Error, "Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4075", "Parameter '{0}' of method from exported interface has or is using private name '{1}'."), Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4076, e.DiagnosticCategory.Error, "Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4076", "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named."), Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2: a(4077, e.DiagnosticCategory.Error, "Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2_4077", "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'."), Parameter_0_of_exported_function_has_or_is_using_private_name_1: a(4078, e.DiagnosticCategory.Error, "Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078", "Parameter '{0}' of exported function has or is using private name '{1}'."), Exported_type_alias_0_has_or_is_using_private_name_1: a(4081, e.DiagnosticCategory.Error, "Exported_type_alias_0_has_or_is_using_private_name_1_4081", "Exported type alias '{0}' has or is using private name '{1}'."), Default_export_of_the_module_has_or_is_using_private_name_0: a(4082, e.DiagnosticCategory.Error, "Default_export_of_the_module_has_or_is_using_private_name_0_4082", "Default export of the module has or is using private name '{0}'."), Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1: a(4083, e.DiagnosticCategory.Error, "Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1_4083", "Type parameter '{0}' of exported type alias has or is using private name '{1}'."), Exported_type_alias_0_has_or_is_using_private_name_1_from_module_2: a(4084, e.DiagnosticCategory.Error, "Exported_type_alias_0_has_or_is_using_private_name_1_from_module_2_4084", "Exported type alias '{0}' has or is using private name '{1}' from module {2}."), Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict: a(4090, e.DiagnosticCategory.Error, "Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_librar_4090", "Conflicting definitions for '{0}' found at '{1}' and '{2}'. Consider installing a specific version of this library to resolve the conflict."), Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2: a(4091, e.DiagnosticCategory.Error, "Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4091", "Parameter '{0}' of index signature from exported interface has or is using name '{1}' from private module '{2}'."), Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1: a(4092, e.DiagnosticCategory.Error, "Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1_4092", "Parameter '{0}' of index signature from exported interface has or is using private name '{1}'."), Property_0_of_exported_class_expression_may_not_be_private_or_protected: a(4094, e.DiagnosticCategory.Error, "Property_0_of_exported_class_expression_may_not_be_private_or_protected_4094", "Property '{0}' of exported class expression may not be private or protected."), Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4095, e.DiagnosticCategory.Error, "Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_4095", "Public static method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."), Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: a(4096, e.DiagnosticCategory.Error, "Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4096", "Public static method '{0}' of exported class has or is using name '{1}' from private module '{2}'."), Public_static_method_0_of_exported_class_has_or_is_using_private_name_1: a(4097, e.DiagnosticCategory.Error, "Public_static_method_0_of_exported_class_has_or_is_using_private_name_1_4097", "Public static method '{0}' of exported class has or is using private name '{1}'."), Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4098, e.DiagnosticCategory.Error, "Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4098", "Public method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."), Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: a(4099, e.DiagnosticCategory.Error, "Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4099", "Public method '{0}' of exported class has or is using name '{1}' from private module '{2}'."), Public_method_0_of_exported_class_has_or_is_using_private_name_1: a(4100, e.DiagnosticCategory.Error, "Public_method_0_of_exported_class_has_or_is_using_private_name_1_4100", "Public method '{0}' of exported class has or is using private name '{1}'."), Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2: a(4101, e.DiagnosticCategory.Error, "Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2_4101", "Method '{0}' of exported interface has or is using name '{1}' from private module '{2}'."), Method_0_of_exported_interface_has_or_is_using_private_name_1: a(4102, e.DiagnosticCategory.Error, "Method_0_of_exported_interface_has_or_is_using_private_name_1_4102", "Method '{0}' of exported interface has or is using private name '{1}'."), Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1: a(4103, e.DiagnosticCategory.Error, "Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1_4103", "Type parameter '{0}' of exported mapped object type is using private name '{1}'."), The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1: a(4104, e.DiagnosticCategory.Error, "The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1_4104", "The type '{0}' is 'readonly' and cannot be assigned to the mutable type '{1}'."), Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter: a(4105, e.DiagnosticCategory.Error, "Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter_4105", "Private or protected member '{0}' cannot be accessed on a type parameter."), Parameter_0_of_accessor_has_or_is_using_private_name_1: a(4106, e.DiagnosticCategory.Error, "Parameter_0_of_accessor_has_or_is_using_private_name_1_4106", "Parameter '{0}' of accessor has or is using private name '{1}'."), Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2: a(4107, e.DiagnosticCategory.Error, "Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2_4107", "Parameter '{0}' of accessor has or is using name '{1}' from private module '{2}'."), Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named: a(4108, e.DiagnosticCategory.Error, "Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4108", "Parameter '{0}' of accessor has or is using name '{1}' from external module '{2}' but cannot be named."), Type_arguments_for_0_circularly_reference_themselves: a(4109, e.DiagnosticCategory.Error, "Type_arguments_for_0_circularly_reference_themselves_4109", "Type arguments for '{0}' circularly reference themselves."), Tuple_type_arguments_circularly_reference_themselves: a(4110, e.DiagnosticCategory.Error, "Tuple_type_arguments_circularly_reference_themselves_4110", "Tuple type arguments circularly reference themselves."), Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0: a(4111, e.DiagnosticCategory.Error, "Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0_4111", "Property '{0}' comes from an index signature, so it must be accessed with ['{0}']."), This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class: a(4112, e.DiagnosticCategory.Error, "This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another__4112", "This member cannot have an 'override' modifier because its containing class '{0}' does not extend another class."), This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0: a(4113, e.DiagnosticCategory.Error, "This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_4113", "This member cannot have an 'override' modifier because it is not declared in the base class '{0}'."), This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0: a(4114, e.DiagnosticCategory.Error, "This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0_4114", "This member must have an 'override' modifier because it overrides a member in the base class '{0}'."), This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0: a(4115, e.DiagnosticCategory.Error, "This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0_4115", "This parameter property must have an 'override' modifier because it overrides a member in base class '{0}'."), This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0: a(4116, e.DiagnosticCategory.Error, "This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared__4116", "This member must have an 'override' modifier because it overrides an abstract method that is declared in the base class '{0}'."), This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1: a(4117, e.DiagnosticCategory.Error, "This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you__4117", "This member cannot have an 'override' modifier because it is not declared in the base class '{0}'. Did you mean '{1}'?"), The_type_of_this_node_cannot_be_serialized_because_its_property_0_cannot_be_serialized: a(4118, e.DiagnosticCategory.Error, "The_type_of_this_node_cannot_be_serialized_because_its_property_0_cannot_be_serialized_4118", "The type of this node cannot be serialized because its property '{0}' cannot be serialized."), This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0: a(4119, e.DiagnosticCategory.Error, "This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_4119", "This member must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'."), This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0: a(4120, e.DiagnosticCategory.Error, "This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_4120", "This parameter property must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'."), This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class: a(4121, e.DiagnosticCategory.Error, "This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_4121", "This member cannot have a JSDoc comment with an '@override' tag because its containing class '{0}' does not extend another class."), This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0: a(4122, e.DiagnosticCategory.Error, "This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base__4122", "This member cannot have a JSDoc comment with an '@override' tag because it is not declared in the base class '{0}'."), This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1: a(4123, e.DiagnosticCategory.Error, "This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base__4123", "This member cannot have a JSDoc comment with an 'override' tag because it is not declared in the base class '{0}'. Did you mean '{1}'?"), Compiler_option_0_of_value_1_is_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next: a(4124, e.DiagnosticCategory.Error, "Compiler_option_0_of_value_1_is_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_w_4124", "Compiler option '{0}' of value '{1}' is unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'."), Resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next: a(4125, e.DiagnosticCategory.Error, "Resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_wi_4125", "Resolution mode assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'."), The_current_host_does_not_support_the_0_option: a(5001, e.DiagnosticCategory.Error, "The_current_host_does_not_support_the_0_option_5001", "The current host does not support the '{0}' option."), Cannot_find_the_common_subdirectory_path_for_the_input_files: a(5009, e.DiagnosticCategory.Error, "Cannot_find_the_common_subdirectory_path_for_the_input_files_5009", "Cannot find the common subdirectory path for the input files."), File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0: a(5010, e.DiagnosticCategory.Error, "File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010", "File specification cannot end in a recursive directory wildcard ('**'): '{0}'."), Cannot_read_file_0_Colon_1: a(5012, e.DiagnosticCategory.Error, "Cannot_read_file_0_Colon_1_5012", "Cannot read file '{0}': {1}."), Failed_to_parse_file_0_Colon_1: a(5014, e.DiagnosticCategory.Error, "Failed_to_parse_file_0_Colon_1_5014", "Failed to parse file '{0}': {1}."), Unknown_compiler_option_0: a(5023, e.DiagnosticCategory.Error, "Unknown_compiler_option_0_5023", "Unknown compiler option '{0}'."), Compiler_option_0_requires_a_value_of_type_1: a(5024, e.DiagnosticCategory.Error, "Compiler_option_0_requires_a_value_of_type_1_5024", "Compiler option '{0}' requires a value of type {1}."), Unknown_compiler_option_0_Did_you_mean_1: a(5025, e.DiagnosticCategory.Error, "Unknown_compiler_option_0_Did_you_mean_1_5025", "Unknown compiler option '{0}'. Did you mean '{1}'?"), Could_not_write_file_0_Colon_1: a(5033, e.DiagnosticCategory.Error, "Could_not_write_file_0_Colon_1_5033", "Could not write file '{0}': {1}."), Option_project_cannot_be_mixed_with_source_files_on_a_command_line: a(5042, e.DiagnosticCategory.Error, "Option_project_cannot_be_mixed_with_source_files_on_a_command_line_5042", "Option 'project' cannot be mixed with source files on a command line."), Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher: a(5047, e.DiagnosticCategory.Error, "Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES_5047", "Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher."), Option_0_cannot_be_specified_when_option_target_is_ES3: a(5048, e.DiagnosticCategory.Error, "Option_0_cannot_be_specified_when_option_target_is_ES3_5048", "Option '{0}' cannot be specified when option 'target' is 'ES3'."), Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided: a(5051, e.DiagnosticCategory.Error, "Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided_5051", "Option '{0} can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided."), Option_0_cannot_be_specified_without_specifying_option_1: a(5052, e.DiagnosticCategory.Error, "Option_0_cannot_be_specified_without_specifying_option_1_5052", "Option '{0}' cannot be specified without specifying option '{1}'."), Option_0_cannot_be_specified_with_option_1: a(5053, e.DiagnosticCategory.Error, "Option_0_cannot_be_specified_with_option_1_5053", "Option '{0}' cannot be specified with option '{1}'."), A_tsconfig_json_file_is_already_defined_at_Colon_0: a(5054, e.DiagnosticCategory.Error, "A_tsconfig_json_file_is_already_defined_at_Colon_0_5054", "A 'tsconfig.json' file is already defined at: '{0}'."), Cannot_write_file_0_because_it_would_overwrite_input_file: a(5055, e.DiagnosticCategory.Error, "Cannot_write_file_0_because_it_would_overwrite_input_file_5055", "Cannot write file '{0}' because it would overwrite input file."), Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files: a(5056, e.DiagnosticCategory.Error, "Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056", "Cannot write file '{0}' because it would be overwritten by multiple input files."), Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0: a(5057, e.DiagnosticCategory.Error, "Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057", "Cannot find a tsconfig.json file at the specified directory: '{0}'."), The_specified_path_does_not_exist_Colon_0: a(5058, e.DiagnosticCategory.Error, "The_specified_path_does_not_exist_Colon_0_5058", "The specified path does not exist: '{0}'."), Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier: a(5059, e.DiagnosticCategory.Error, "Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier_5059", "Invalid value for '--reactNamespace'. '{0}' is not a valid identifier."), Pattern_0_can_have_at_most_one_Asterisk_character: a(5061, e.DiagnosticCategory.Error, "Pattern_0_can_have_at_most_one_Asterisk_character_5061", "Pattern '{0}' can have at most one '*' character."), Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character: a(5062, e.DiagnosticCategory.Error, "Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character_5062", "Substitution '{0}' in pattern '{1}' can have at most one '*' character."), Substitutions_for_pattern_0_should_be_an_array: a(5063, e.DiagnosticCategory.Error, "Substitutions_for_pattern_0_should_be_an_array_5063", "Substitutions for pattern '{0}' should be an array."), Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2: a(5064, e.DiagnosticCategory.Error, "Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2_5064", "Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'."), File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0: a(5065, e.DiagnosticCategory.Error, "File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildca_5065", "File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'."), Substitutions_for_pattern_0_shouldn_t_be_an_empty_array: a(5066, e.DiagnosticCategory.Error, "Substitutions_for_pattern_0_shouldn_t_be_an_empty_array_5066", "Substitutions for pattern '{0}' shouldn't be an empty array."), Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name: a(5067, e.DiagnosticCategory.Error, "Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name_5067", "Invalid value for 'jsxFactory'. '{0}' is not a valid identifier or qualified-name."), Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig: a(5068, e.DiagnosticCategory.Error, "Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068", "Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig."), Option_0_cannot_be_specified_without_specifying_option_1_or_option_2: a(5069, e.DiagnosticCategory.Error, "Option_0_cannot_be_specified_without_specifying_option_1_or_option_2_5069", "Option '{0}' cannot be specified without specifying option '{1}' or option '{2}'."), Option_resolveJsonModule_cannot_be_specified_without_node_module_resolution_strategy: a(5070, e.DiagnosticCategory.Error, "Option_resolveJsonModule_cannot_be_specified_without_node_module_resolution_strategy_5070", "Option '--resolveJsonModule' cannot be specified without 'node' module resolution strategy."), Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_esNext: a(5071, e.DiagnosticCategory.Error, "Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_5071", "Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs', 'amd', 'es2015' or 'esNext'."), Unknown_build_option_0: a(5072, e.DiagnosticCategory.Error, "Unknown_build_option_0_5072", "Unknown build option '{0}'."), Build_option_0_requires_a_value_of_type_1: a(5073, e.DiagnosticCategory.Error, "Build_option_0_requires_a_value_of_type_1_5073", "Build option '{0}' requires a value of type {1}."), Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBuildInfoFile_is_specified: a(5074, e.DiagnosticCategory.Error, "Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBui_5074", "Option '--incremental' can only be specified using tsconfig, emitting to single file or when option '--tsBuildInfoFile' is specified."), _0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_constraint_2: a(5075, e.DiagnosticCategory.Error, "_0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_5075", "'{0}' is assignable to the constraint of type '{1}', but '{1}' could be instantiated with a different subtype of constraint '{2}'."), _0_and_1_operations_cannot_be_mixed_without_parentheses: a(5076, e.DiagnosticCategory.Error, "_0_and_1_operations_cannot_be_mixed_without_parentheses_5076", "'{0}' and '{1}' operations cannot be mixed without parentheses."), Unknown_build_option_0_Did_you_mean_1: a(5077, e.DiagnosticCategory.Error, "Unknown_build_option_0_Did_you_mean_1_5077", "Unknown build option '{0}'. Did you mean '{1}'?"), Unknown_watch_option_0: a(5078, e.DiagnosticCategory.Error, "Unknown_watch_option_0_5078", "Unknown watch option '{0}'."), Unknown_watch_option_0_Did_you_mean_1: a(5079, e.DiagnosticCategory.Error, "Unknown_watch_option_0_Did_you_mean_1_5079", "Unknown watch option '{0}'. Did you mean '{1}'?"), Watch_option_0_requires_a_value_of_type_1: a(5080, e.DiagnosticCategory.Error, "Watch_option_0_requires_a_value_of_type_1_5080", "Watch option '{0}' requires a value of type {1}."), Cannot_find_a_tsconfig_json_file_at_the_current_directory_Colon_0: a(5081, e.DiagnosticCategory.Error, "Cannot_find_a_tsconfig_json_file_at_the_current_directory_Colon_0_5081", "Cannot find a tsconfig.json file at the current directory: {0}."), _0_could_be_instantiated_with_an_arbitrary_type_which_could_be_unrelated_to_1: a(5082, e.DiagnosticCategory.Error, "_0_could_be_instantiated_with_an_arbitrary_type_which_could_be_unrelated_to_1_5082", "'{0}' could be instantiated with an arbitrary type which could be unrelated to '{1}'."), Cannot_read_file_0: a(5083, e.DiagnosticCategory.Error, "Cannot_read_file_0_5083", "Cannot read file '{0}'."), Tuple_members_must_all_have_names_or_all_not_have_names: a(5084, e.DiagnosticCategory.Error, "Tuple_members_must_all_have_names_or_all_not_have_names_5084", "Tuple members must all have names or all not have names."), A_tuple_member_cannot_be_both_optional_and_rest: a(5085, e.DiagnosticCategory.Error, "A_tuple_member_cannot_be_both_optional_and_rest_5085", "A tuple member cannot be both optional and rest."), A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_colon_rather_than_after_the_type: a(5086, e.DiagnosticCategory.Error, "A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_c_5086", "A labeled tuple element is declared as optional with a question mark after the name and before the colon, rather than after the type."), A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type: a(5087, e.DiagnosticCategory.Error, "A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type_5087", "A labeled tuple element is declared as rest with a '...' before the name, rather than before the type."), The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary: a(5088, e.DiagnosticCategory.Error, "The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088", "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary."), Option_0_cannot_be_specified_when_option_jsx_is_1: a(5089, e.DiagnosticCategory.Error, "Option_0_cannot_be_specified_when_option_jsx_is_1_5089", "Option '{0}' cannot be specified when option 'jsx' is '{1}'."), Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash: a(5090, e.DiagnosticCategory.Error, "Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash_5090", "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?"), Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled: a(5091, e.DiagnosticCategory.Error, "Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled_5091", "Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled."), The_root_value_of_a_0_file_must_be_an_object: a(5092, e.DiagnosticCategory.Error, "The_root_value_of_a_0_file_must_be_an_object_5092", "The root value of a '{0}' file must be an object."), Compiler_option_0_may_only_be_used_with_build: a(5093, e.DiagnosticCategory.Error, "Compiler_option_0_may_only_be_used_with_build_5093", "Compiler option '--{0}' may only be used with '--build'."), Compiler_option_0_may_not_be_used_with_build: a(5094, e.DiagnosticCategory.Error, "Compiler_option_0_may_not_be_used_with_build_5094", "Compiler option '--{0}' may not be used with '--build'."), Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later: a(5095, e.DiagnosticCategory.Error, "Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later_5095", "Option 'preserveValueImports' can only be used when 'module' is set to 'es2015' or later."), Generates_a_sourcemap_for_each_corresponding_d_ts_file: a(6e3, e.DiagnosticCategory.Message, "Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000", "Generates a sourcemap for each corresponding '.d.ts' file."), Concatenate_and_emit_output_to_single_file: a(6001, e.DiagnosticCategory.Message, "Concatenate_and_emit_output_to_single_file_6001", "Concatenate and emit output to single file."), Generates_corresponding_d_ts_file: a(6002, e.DiagnosticCategory.Message, "Generates_corresponding_d_ts_file_6002", "Generates corresponding '.d.ts' file."), Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations: a(6004, e.DiagnosticCategory.Message, "Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004", "Specify the location where debugger should locate TypeScript files instead of source locations."), Watch_input_files: a(6005, e.DiagnosticCategory.Message, "Watch_input_files_6005", "Watch input files."), Redirect_output_structure_to_the_directory: a(6006, e.DiagnosticCategory.Message, "Redirect_output_structure_to_the_directory_6006", "Redirect output structure to the directory."), Do_not_erase_const_enum_declarations_in_generated_code: a(6007, e.DiagnosticCategory.Message, "Do_not_erase_const_enum_declarations_in_generated_code_6007", "Do not erase const enum declarations in generated code."), Do_not_emit_outputs_if_any_errors_were_reported: a(6008, e.DiagnosticCategory.Message, "Do_not_emit_outputs_if_any_errors_were_reported_6008", "Do not emit outputs if any errors were reported."), Do_not_emit_comments_to_output: a(6009, e.DiagnosticCategory.Message, "Do_not_emit_comments_to_output_6009", "Do not emit comments to output."), Do_not_emit_outputs: a(6010, e.DiagnosticCategory.Message, "Do_not_emit_outputs_6010", "Do not emit outputs."), Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: a(6011, e.DiagnosticCategory.Message, "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", "Allow default imports from modules with no default export. This does not affect code emit, just typechecking."), Skip_type_checking_of_declaration_files: a(6012, e.DiagnosticCategory.Message, "Skip_type_checking_of_declaration_files_6012", "Skip type checking of declaration files."), Do_not_resolve_the_real_path_of_symlinks: a(6013, e.DiagnosticCategory.Message, "Do_not_resolve_the_real_path_of_symlinks_6013", "Do not resolve the real path of symlinks."), Only_emit_d_ts_declaration_files: a(6014, e.DiagnosticCategory.Message, "Only_emit_d_ts_declaration_files_6014", "Only emit '.d.ts' declaration files."), Specify_ECMAScript_target_version: a(6015, e.DiagnosticCategory.Message, "Specify_ECMAScript_target_version_6015", "Specify ECMAScript target version."), Specify_module_code_generation: a(6016, e.DiagnosticCategory.Message, "Specify_module_code_generation_6016", "Specify module code generation."), Print_this_message: a(6017, e.DiagnosticCategory.Message, "Print_this_message_6017", "Print this message."), Print_the_compiler_s_version: a(6019, e.DiagnosticCategory.Message, "Print_the_compiler_s_version_6019", "Print the compiler's version."), Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json: a(6020, e.DiagnosticCategory.Message, "Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json_6020", "Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'."), Syntax_Colon_0: a(6023, e.DiagnosticCategory.Message, "Syntax_Colon_0_6023", "Syntax: {0}"), options: a(6024, e.DiagnosticCategory.Message, "options_6024", "options"), file: a(6025, e.DiagnosticCategory.Message, "file_6025", "file"), Examples_Colon_0: a(6026, e.DiagnosticCategory.Message, "Examples_Colon_0_6026", "Examples: {0}"), Options_Colon: a(6027, e.DiagnosticCategory.Message, "Options_Colon_6027", "Options:"), Version_0: a(6029, e.DiagnosticCategory.Message, "Version_0_6029", "Version {0}"), Insert_command_line_options_and_files_from_a_file: a(6030, e.DiagnosticCategory.Message, "Insert_command_line_options_and_files_from_a_file_6030", "Insert command line options and files from a file."), Starting_compilation_in_watch_mode: a(6031, e.DiagnosticCategory.Message, "Starting_compilation_in_watch_mode_6031", "Starting compilation in watch mode..."), File_change_detected_Starting_incremental_compilation: a(6032, e.DiagnosticCategory.Message, "File_change_detected_Starting_incremental_compilation_6032", "File change detected. Starting incremental compilation..."), KIND: a(6034, e.DiagnosticCategory.Message, "KIND_6034", "KIND"), FILE: a(6035, e.DiagnosticCategory.Message, "FILE_6035", "FILE"), VERSION: a(6036, e.DiagnosticCategory.Message, "VERSION_6036", "VERSION"), LOCATION: a(6037, e.DiagnosticCategory.Message, "LOCATION_6037", "LOCATION"), DIRECTORY: a(6038, e.DiagnosticCategory.Message, "DIRECTORY_6038", "DIRECTORY"), STRATEGY: a(6039, e.DiagnosticCategory.Message, "STRATEGY_6039", "STRATEGY"), FILE_OR_DIRECTORY: a(6040, e.DiagnosticCategory.Message, "FILE_OR_DIRECTORY_6040", "FILE OR DIRECTORY"), Errors_Files: a(6041, e.DiagnosticCategory.Message, "Errors_Files_6041", "Errors Files"), Generates_corresponding_map_file: a(6043, e.DiagnosticCategory.Message, "Generates_corresponding_map_file_6043", "Generates corresponding '.map' file."), Compiler_option_0_expects_an_argument: a(6044, e.DiagnosticCategory.Error, "Compiler_option_0_expects_an_argument_6044", "Compiler option '{0}' expects an argument."), Unterminated_quoted_string_in_response_file_0: a(6045, e.DiagnosticCategory.Error, "Unterminated_quoted_string_in_response_file_0_6045", "Unterminated quoted string in response file '{0}'."), Argument_for_0_option_must_be_Colon_1: a(6046, e.DiagnosticCategory.Error, "Argument_for_0_option_must_be_Colon_1_6046", "Argument for '{0}' option must be: {1}."), Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1: a(6048, e.DiagnosticCategory.Error, "Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048", "Locale must be of the form or -. For example '{0}' or '{1}'."), Unable_to_open_file_0: a(6050, e.DiagnosticCategory.Error, "Unable_to_open_file_0_6050", "Unable to open file '{0}'."), Corrupted_locale_file_0: a(6051, e.DiagnosticCategory.Error, "Corrupted_locale_file_0_6051", "Corrupted locale file {0}."), Raise_error_on_expressions_and_declarations_with_an_implied_any_type: a(6052, e.DiagnosticCategory.Message, "Raise_error_on_expressions_and_declarations_with_an_implied_any_type_6052", "Raise error on expressions and declarations with an implied 'any' type."), File_0_not_found: a(6053, e.DiagnosticCategory.Error, "File_0_not_found_6053", "File '{0}' not found."), File_0_has_an_unsupported_extension_The_only_supported_extensions_are_1: a(6054, e.DiagnosticCategory.Error, "File_0_has_an_unsupported_extension_The_only_supported_extensions_are_1_6054", "File '{0}' has an unsupported extension. The only supported extensions are {1}."), Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures: a(6055, e.DiagnosticCategory.Message, "Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055", "Suppress noImplicitAny errors for indexing objects lacking index signatures."), Do_not_emit_declarations_for_code_that_has_an_internal_annotation: a(6056, e.DiagnosticCategory.Message, "Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056", "Do not emit declarations for code that has an '@internal' annotation."), Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir: a(6058, e.DiagnosticCategory.Message, "Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058", "Specify the root directory of input files. Use to control the output directory structure with --outDir."), File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files: a(6059, e.DiagnosticCategory.Error, "File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059", "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files."), Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix: a(6060, e.DiagnosticCategory.Message, "Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060", "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)."), NEWLINE: a(6061, e.DiagnosticCategory.Message, "NEWLINE_6061", "NEWLINE"), Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line: a(6064, e.DiagnosticCategory.Error, "Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line_6064", "Option '{0}' can only be specified in 'tsconfig.json' file or set to 'null' on command line."), Enables_experimental_support_for_ES7_decorators: a(6065, e.DiagnosticCategory.Message, "Enables_experimental_support_for_ES7_decorators_6065", "Enables experimental support for ES7 decorators."), Enables_experimental_support_for_emitting_type_metadata_for_decorators: a(6066, e.DiagnosticCategory.Message, "Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066", "Enables experimental support for emitting type metadata for decorators."), Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6: a(6069, e.DiagnosticCategory.Message, "Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069", "Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)."), Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file: a(6070, e.DiagnosticCategory.Message, "Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070", "Initializes a TypeScript project and creates a tsconfig.json file."), Successfully_created_a_tsconfig_json_file: a(6071, e.DiagnosticCategory.Message, "Successfully_created_a_tsconfig_json_file_6071", "Successfully created a tsconfig.json file."), Suppress_excess_property_checks_for_object_literals: a(6072, e.DiagnosticCategory.Message, "Suppress_excess_property_checks_for_object_literals_6072", "Suppress excess property checks for object literals."), Stylize_errors_and_messages_using_color_and_context_experimental: a(6073, e.DiagnosticCategory.Message, "Stylize_errors_and_messages_using_color_and_context_experimental_6073", "Stylize errors and messages using color and context (experimental)."), Do_not_report_errors_on_unused_labels: a(6074, e.DiagnosticCategory.Message, "Do_not_report_errors_on_unused_labels_6074", "Do not report errors on unused labels."), Report_error_when_not_all_code_paths_in_function_return_a_value: a(6075, e.DiagnosticCategory.Message, "Report_error_when_not_all_code_paths_in_function_return_a_value_6075", "Report error when not all code paths in function return a value."), Report_errors_for_fallthrough_cases_in_switch_statement: a(6076, e.DiagnosticCategory.Message, "Report_errors_for_fallthrough_cases_in_switch_statement_6076", "Report errors for fallthrough cases in switch statement."), Do_not_report_errors_on_unreachable_code: a(6077, e.DiagnosticCategory.Message, "Do_not_report_errors_on_unreachable_code_6077", "Do not report errors on unreachable code."), Disallow_inconsistently_cased_references_to_the_same_file: a(6078, e.DiagnosticCategory.Message, "Disallow_inconsistently_cased_references_to_the_same_file_6078", "Disallow inconsistently-cased references to the same file."), Specify_library_files_to_be_included_in_the_compilation: a(6079, e.DiagnosticCategory.Message, "Specify_library_files_to_be_included_in_the_compilation_6079", "Specify library files to be included in the compilation."), Specify_JSX_code_generation: a(6080, e.DiagnosticCategory.Message, "Specify_JSX_code_generation_6080", "Specify JSX code generation."), File_0_has_an_unsupported_extension_so_skipping_it: a(6081, e.DiagnosticCategory.Message, "File_0_has_an_unsupported_extension_so_skipping_it_6081", "File '{0}' has an unsupported extension, so skipping it."), Only_amd_and_system_modules_are_supported_alongside_0: a(6082, e.DiagnosticCategory.Error, "Only_amd_and_system_modules_are_supported_alongside_0_6082", "Only 'amd' and 'system' modules are supported alongside --{0}."), Base_directory_to_resolve_non_absolute_module_names: a(6083, e.DiagnosticCategory.Message, "Base_directory_to_resolve_non_absolute_module_names_6083", "Base directory to resolve non-absolute module names."), Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react_JSX_emit: a(6084, e.DiagnosticCategory.Message, "Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react__6084", "[Deprecated] Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit"), Enable_tracing_of_the_name_resolution_process: a(6085, e.DiagnosticCategory.Message, "Enable_tracing_of_the_name_resolution_process_6085", "Enable tracing of the name resolution process."), Resolving_module_0_from_1: a(6086, e.DiagnosticCategory.Message, "Resolving_module_0_from_1_6086", "======== Resolving module '{0}' from '{1}'. ========"), Explicitly_specified_module_resolution_kind_Colon_0: a(6087, e.DiagnosticCategory.Message, "Explicitly_specified_module_resolution_kind_Colon_0_6087", "Explicitly specified module resolution kind: '{0}'."), Module_resolution_kind_is_not_specified_using_0: a(6088, e.DiagnosticCategory.Message, "Module_resolution_kind_is_not_specified_using_0_6088", "Module resolution kind is not specified, using '{0}'."), Module_name_0_was_successfully_resolved_to_1: a(6089, e.DiagnosticCategory.Message, "Module_name_0_was_successfully_resolved_to_1_6089", "======== Module name '{0}' was successfully resolved to '{1}'. ========"), Module_name_0_was_not_resolved: a(6090, e.DiagnosticCategory.Message, "Module_name_0_was_not_resolved_6090", "======== Module name '{0}' was not resolved. ========"), paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0: a(6091, e.DiagnosticCategory.Message, "paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0_6091", "'paths' option is specified, looking for a pattern to match module name '{0}'."), Module_name_0_matched_pattern_1: a(6092, e.DiagnosticCategory.Message, "Module_name_0_matched_pattern_1_6092", "Module name '{0}', matched pattern '{1}'."), Trying_substitution_0_candidate_module_location_Colon_1: a(6093, e.DiagnosticCategory.Message, "Trying_substitution_0_candidate_module_location_Colon_1_6093", "Trying substitution '{0}', candidate module location: '{1}'."), Resolving_module_name_0_relative_to_base_url_1_2: a(6094, e.DiagnosticCategory.Message, "Resolving_module_name_0_relative_to_base_url_1_2_6094", "Resolving module name '{0}' relative to base url '{1}' - '{2}'."), Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1: a(6095, e.DiagnosticCategory.Message, "Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1_6095", "Loading module as file / folder, candidate module location '{0}', target file type '{1}'."), File_0_does_not_exist: a(6096, e.DiagnosticCategory.Message, "File_0_does_not_exist_6096", "File '{0}' does not exist."), File_0_exist_use_it_as_a_name_resolution_result: a(6097, e.DiagnosticCategory.Message, "File_0_exist_use_it_as_a_name_resolution_result_6097", "File '{0}' exist - use it as a name resolution result."), Loading_module_0_from_node_modules_folder_target_file_type_1: a(6098, e.DiagnosticCategory.Message, "Loading_module_0_from_node_modules_folder_target_file_type_1_6098", "Loading module '{0}' from 'node_modules' folder, target file type '{1}'."), Found_package_json_at_0: a(6099, e.DiagnosticCategory.Message, "Found_package_json_at_0_6099", "Found 'package.json' at '{0}'."), package_json_does_not_have_a_0_field: a(6100, e.DiagnosticCategory.Message, "package_json_does_not_have_a_0_field_6100", "'package.json' does not have a '{0}' field."), package_json_has_0_field_1_that_references_2: a(6101, e.DiagnosticCategory.Message, "package_json_has_0_field_1_that_references_2_6101", "'package.json' has '{0}' field '{1}' that references '{2}'."), Allow_javascript_files_to_be_compiled: a(6102, e.DiagnosticCategory.Message, "Allow_javascript_files_to_be_compiled_6102", "Allow javascript files to be compiled."), Checking_if_0_is_the_longest_matching_prefix_for_1_2: a(6104, e.DiagnosticCategory.Message, "Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104", "Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'."), Expected_type_of_0_field_in_package_json_to_be_1_got_2: a(6105, e.DiagnosticCategory.Message, "Expected_type_of_0_field_in_package_json_to_be_1_got_2_6105", "Expected type of '{0}' field in 'package.json' to be '{1}', got '{2}'."), baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1: a(6106, e.DiagnosticCategory.Message, "baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106", "'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'."), rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0: a(6107, e.DiagnosticCategory.Message, "rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107", "'rootDirs' option is set, using it to resolve relative module name '{0}'."), Longest_matching_prefix_for_0_is_1: a(6108, e.DiagnosticCategory.Message, "Longest_matching_prefix_for_0_is_1_6108", "Longest matching prefix for '{0}' is '{1}'."), Loading_0_from_the_root_dir_1_candidate_location_2: a(6109, e.DiagnosticCategory.Message, "Loading_0_from_the_root_dir_1_candidate_location_2_6109", "Loading '{0}' from the root dir '{1}', candidate location '{2}'."), Trying_other_entries_in_rootDirs: a(6110, e.DiagnosticCategory.Message, "Trying_other_entries_in_rootDirs_6110", "Trying other entries in 'rootDirs'."), Module_resolution_using_rootDirs_has_failed: a(6111, e.DiagnosticCategory.Message, "Module_resolution_using_rootDirs_has_failed_6111", "Module resolution using 'rootDirs' has failed."), Do_not_emit_use_strict_directives_in_module_output: a(6112, e.DiagnosticCategory.Message, "Do_not_emit_use_strict_directives_in_module_output_6112", "Do not emit 'use strict' directives in module output."), Enable_strict_null_checks: a(6113, e.DiagnosticCategory.Message, "Enable_strict_null_checks_6113", "Enable strict null checks."), Unknown_option_excludes_Did_you_mean_exclude: a(6114, e.DiagnosticCategory.Error, "Unknown_option_excludes_Did_you_mean_exclude_6114", "Unknown option 'excludes'. Did you mean 'exclude'?"), Raise_error_on_this_expressions_with_an_implied_any_type: a(6115, e.DiagnosticCategory.Message, "Raise_error_on_this_expressions_with_an_implied_any_type_6115", "Raise error on 'this' expressions with an implied 'any' type."), Resolving_type_reference_directive_0_containing_file_1_root_directory_2: a(6116, e.DiagnosticCategory.Message, "Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116", "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========"), Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2: a(6119, e.DiagnosticCategory.Message, "Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119", "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========"), Type_reference_directive_0_was_not_resolved: a(6120, e.DiagnosticCategory.Message, "Type_reference_directive_0_was_not_resolved_6120", "======== Type reference directive '{0}' was not resolved. ========"), Resolving_with_primary_search_path_0: a(6121, e.DiagnosticCategory.Message, "Resolving_with_primary_search_path_0_6121", "Resolving with primary search path '{0}'."), Root_directory_cannot_be_determined_skipping_primary_search_paths: a(6122, e.DiagnosticCategory.Message, "Root_directory_cannot_be_determined_skipping_primary_search_paths_6122", "Root directory cannot be determined, skipping primary search paths."), Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set: a(6123, e.DiagnosticCategory.Message, "Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123", "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========"), Type_declaration_files_to_be_included_in_compilation: a(6124, e.DiagnosticCategory.Message, "Type_declaration_files_to_be_included_in_compilation_6124", "Type declaration files to be included in compilation."), Looking_up_in_node_modules_folder_initial_location_0: a(6125, e.DiagnosticCategory.Message, "Looking_up_in_node_modules_folder_initial_location_0_6125", "Looking up in 'node_modules' folder, initial location '{0}'."), Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder: a(6126, e.DiagnosticCategory.Message, "Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126", "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder."), Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1: a(6127, e.DiagnosticCategory.Message, "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127", "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========"), Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set: a(6128, e.DiagnosticCategory.Message, "Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128", "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========"), Resolving_real_path_for_0_result_1: a(6130, e.DiagnosticCategory.Message, "Resolving_real_path_for_0_result_1_6130", "Resolving real path for '{0}', result '{1}'."), Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system: a(6131, e.DiagnosticCategory.Error, "Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system_6131", "Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'."), File_name_0_has_a_1_extension_stripping_it: a(6132, e.DiagnosticCategory.Message, "File_name_0_has_a_1_extension_stripping_it_6132", "File name '{0}' has a '{1}' extension - stripping it."), _0_is_declared_but_its_value_is_never_read: a(6133, e.DiagnosticCategory.Error, "_0_is_declared_but_its_value_is_never_read_6133", "'{0}' is declared but its value is never read.", true), Report_errors_on_unused_locals: a(6134, e.DiagnosticCategory.Message, "Report_errors_on_unused_locals_6134", "Report errors on unused locals."), Report_errors_on_unused_parameters: a(6135, e.DiagnosticCategory.Message, "Report_errors_on_unused_parameters_6135", "Report errors on unused parameters."), The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files: a(6136, e.DiagnosticCategory.Message, "The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files_6136", "The maximum dependency depth to search under node_modules and load JavaScript files."), Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1: a(6137, e.DiagnosticCategory.Error, "Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1_6137", "Cannot import type declaration files. Consider importing '{0}' instead of '{1}'."), Property_0_is_declared_but_its_value_is_never_read: a(6138, e.DiagnosticCategory.Error, "Property_0_is_declared_but_its_value_is_never_read_6138", "Property '{0}' is declared but its value is never read.", true), Import_emit_helpers_from_tslib: a(6139, e.DiagnosticCategory.Message, "Import_emit_helpers_from_tslib_6139", "Import emit helpers from 'tslib'."), Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using_cache_location_2: a(6140, e.DiagnosticCategory.Error, "Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using__6140", "Auto discovery for typings is enabled in project '{0}'. Running extra resolution pass for module '{1}' using cache location '{2}'."), Parse_in_strict_mode_and_emit_use_strict_for_each_source_file: a(6141, e.DiagnosticCategory.Message, "Parse_in_strict_mode_and_emit_use_strict_for_each_source_file_6141", 'Parse in strict mode and emit "use strict" for each source file.'), Module_0_was_resolved_to_1_but_jsx_is_not_set: a(6142, e.DiagnosticCategory.Error, "Module_0_was_resolved_to_1_but_jsx_is_not_set_6142", "Module '{0}' was resolved to '{1}', but '--jsx' is not set."), Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1: a(6144, e.DiagnosticCategory.Message, "Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1_6144", "Module '{0}' was resolved as locally declared ambient module in file '{1}'."), Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified: a(6145, e.DiagnosticCategory.Message, "Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified_6145", "Module '{0}' was resolved as ambient module declared in '{1}' since this file was not modified."), Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h: a(6146, e.DiagnosticCategory.Message, "Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h_6146", "Specify the JSX factory function to use when targeting 'react' JSX emit, e.g. 'React.createElement' or 'h'."), Resolution_for_module_0_was_found_in_cache_from_location_1: a(6147, e.DiagnosticCategory.Message, "Resolution_for_module_0_was_found_in_cache_from_location_1_6147", "Resolution for module '{0}' was found in cache from location '{1}'."), Directory_0_does_not_exist_skipping_all_lookups_in_it: a(6148, e.DiagnosticCategory.Message, "Directory_0_does_not_exist_skipping_all_lookups_in_it_6148", "Directory '{0}' does not exist, skipping all lookups in it."), Show_diagnostic_information: a(6149, e.DiagnosticCategory.Message, "Show_diagnostic_information_6149", "Show diagnostic information."), Show_verbose_diagnostic_information: a(6150, e.DiagnosticCategory.Message, "Show_verbose_diagnostic_information_6150", "Show verbose diagnostic information."), Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file: a(6151, e.DiagnosticCategory.Message, "Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file_6151", "Emit a single file with source maps instead of having a separate file."), Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap_to_be_set: a(6152, e.DiagnosticCategory.Message, "Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap__6152", "Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set."), Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule: a(6153, e.DiagnosticCategory.Message, "Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule_6153", "Transpile each file as a separate module (similar to 'ts.transpileModule')."), Print_names_of_generated_files_part_of_the_compilation: a(6154, e.DiagnosticCategory.Message, "Print_names_of_generated_files_part_of_the_compilation_6154", "Print names of generated files part of the compilation."), Print_names_of_files_part_of_the_compilation: a(6155, e.DiagnosticCategory.Message, "Print_names_of_files_part_of_the_compilation_6155", "Print names of files part of the compilation."), The_locale_used_when_displaying_messages_to_the_user_e_g_en_us: a(6156, e.DiagnosticCategory.Message, "The_locale_used_when_displaying_messages_to_the_user_e_g_en_us_6156", "The locale used when displaying messages to the user (e.g. 'en-us')"), Do_not_generate_custom_helper_functions_like_extends_in_compiled_output: a(6157, e.DiagnosticCategory.Message, "Do_not_generate_custom_helper_functions_like_extends_in_compiled_output_6157", "Do not generate custom helper functions like '__extends' in compiled output."), Do_not_include_the_default_library_file_lib_d_ts: a(6158, e.DiagnosticCategory.Message, "Do_not_include_the_default_library_file_lib_d_ts_6158", "Do not include the default library file (lib.d.ts)."), Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files: a(6159, e.DiagnosticCategory.Message, "Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files_6159", "Do not add triple-slash references or imported modules to the list of compiled files."), Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files: a(6160, e.DiagnosticCategory.Message, "Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files_6160", "[Deprecated] Use '--skipLibCheck' instead. Skip type checking of default library declaration files."), List_of_folders_to_include_type_definitions_from: a(6161, e.DiagnosticCategory.Message, "List_of_folders_to_include_type_definitions_from_6161", "List of folders to include type definitions from."), Disable_size_limitations_on_JavaScript_projects: a(6162, e.DiagnosticCategory.Message, "Disable_size_limitations_on_JavaScript_projects_6162", "Disable size limitations on JavaScript projects."), The_character_set_of_the_input_files: a(6163, e.DiagnosticCategory.Message, "The_character_set_of_the_input_files_6163", "The character set of the input files."), Do_not_truncate_error_messages: a(6165, e.DiagnosticCategory.Message, "Do_not_truncate_error_messages_6165", "Do not truncate error messages."), Output_directory_for_generated_declaration_files: a(6166, e.DiagnosticCategory.Message, "Output_directory_for_generated_declaration_files_6166", "Output directory for generated declaration files."), A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl: a(6167, e.DiagnosticCategory.Message, "A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl_6167", "A series of entries which re-map imports to lookup locations relative to the 'baseUrl'."), List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime: a(6168, e.DiagnosticCategory.Message, "List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime_6168", "List of root folders whose combined content represents the structure of the project at runtime."), Show_all_compiler_options: a(6169, e.DiagnosticCategory.Message, "Show_all_compiler_options_6169", "Show all compiler options."), Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file: a(6170, e.DiagnosticCategory.Message, "Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file_6170", "[Deprecated] Use '--outFile' instead. Concatenate and emit output to single file"), Command_line_Options: a(6171, e.DiagnosticCategory.Message, "Command_line_Options_6171", "Command-line Options"), Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3: a(6179, e.DiagnosticCategory.Message, "Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3_6179", "Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'."), Enable_all_strict_type_checking_options: a(6180, e.DiagnosticCategory.Message, "Enable_all_strict_type_checking_options_6180", "Enable all strict type-checking options."), Scoped_package_detected_looking_in_0: a(6182, e.DiagnosticCategory.Message, "Scoped_package_detected_looking_in_0_6182", "Scoped package detected, looking in '{0}'"), Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2: a(6183, e.DiagnosticCategory.Message, "Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_6183", "Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}'."), Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3: a(6184, e.DiagnosticCategory.Message, "Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package__6184", "Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'."), Enable_strict_checking_of_function_types: a(6186, e.DiagnosticCategory.Message, "Enable_strict_checking_of_function_types_6186", "Enable strict checking of function types."), Enable_strict_checking_of_property_initialization_in_classes: a(6187, e.DiagnosticCategory.Message, "Enable_strict_checking_of_property_initialization_in_classes_6187", "Enable strict checking of property initialization in classes."), Numeric_separators_are_not_allowed_here: a(6188, e.DiagnosticCategory.Error, "Numeric_separators_are_not_allowed_here_6188", "Numeric separators are not allowed here."), Multiple_consecutive_numeric_separators_are_not_permitted: a(6189, e.DiagnosticCategory.Error, "Multiple_consecutive_numeric_separators_are_not_permitted_6189", "Multiple consecutive numeric separators are not permitted."), Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen: a(6191, e.DiagnosticCategory.Message, "Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen_6191", "Whether to keep outdated console output in watch mode instead of clearing the screen."), All_imports_in_import_declaration_are_unused: a(6192, e.DiagnosticCategory.Error, "All_imports_in_import_declaration_are_unused_6192", "All imports in import declaration are unused.", true), Found_1_error_Watching_for_file_changes: a(6193, e.DiagnosticCategory.Message, "Found_1_error_Watching_for_file_changes_6193", "Found 1 error. Watching for file changes."), Found_0_errors_Watching_for_file_changes: a(6194, e.DiagnosticCategory.Message, "Found_0_errors_Watching_for_file_changes_6194", "Found {0} errors. Watching for file changes."), Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols: a(6195, e.DiagnosticCategory.Message, "Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols_6195", "Resolve 'keyof' to string valued property names only (no numbers or symbols)."), _0_is_declared_but_never_used: a(6196, e.DiagnosticCategory.Error, "_0_is_declared_but_never_used_6196", "'{0}' is declared but never used.", true), Include_modules_imported_with_json_extension: a(6197, e.DiagnosticCategory.Message, "Include_modules_imported_with_json_extension_6197", "Include modules imported with '.json' extension"), All_destructured_elements_are_unused: a(6198, e.DiagnosticCategory.Error, "All_destructured_elements_are_unused_6198", "All destructured elements are unused.", true), All_variables_are_unused: a(6199, e.DiagnosticCategory.Error, "All_variables_are_unused_6199", "All variables are unused.", true), Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0: a(6200, e.DiagnosticCategory.Error, "Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0_6200", "Definitions of the following identifiers conflict with those in another file: {0}"), Conflicts_are_in_this_file: a(6201, e.DiagnosticCategory.Message, "Conflicts_are_in_this_file_6201", "Conflicts are in this file."), Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0: a(6202, e.DiagnosticCategory.Error, "Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0_6202", "Project references may not form a circular graph. Cycle detected: {0}"), _0_was_also_declared_here: a(6203, e.DiagnosticCategory.Message, "_0_was_also_declared_here_6203", "'{0}' was also declared here."), and_here: a(6204, e.DiagnosticCategory.Message, "and_here_6204", "and here."), All_type_parameters_are_unused: a(6205, e.DiagnosticCategory.Error, "All_type_parameters_are_unused_6205", "All type parameters are unused."), package_json_has_a_typesVersions_field_with_version_specific_path_mappings: a(6206, e.DiagnosticCategory.Message, "package_json_has_a_typesVersions_field_with_version_specific_path_mappings_6206", "'package.json' has a 'typesVersions' field with version-specific path mappings."), package_json_does_not_have_a_typesVersions_entry_that_matches_version_0: a(6207, e.DiagnosticCategory.Message, "package_json_does_not_have_a_typesVersions_entry_that_matches_version_0_6207", "'package.json' does not have a 'typesVersions' entry that matches version '{0}'."), package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2: a(6208, e.DiagnosticCategory.Message, "package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_ma_6208", "'package.json' has a 'typesVersions' entry '{0}' that matches compiler version '{1}', looking for a pattern to match module name '{2}'."), package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range: a(6209, e.DiagnosticCategory.Message, "package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range_6209", "'package.json' has a 'typesVersions' entry '{0}' that is not a valid semver range."), An_argument_for_0_was_not_provided: a(6210, e.DiagnosticCategory.Message, "An_argument_for_0_was_not_provided_6210", "An argument for '{0}' was not provided."), An_argument_matching_this_binding_pattern_was_not_provided: a(6211, e.DiagnosticCategory.Message, "An_argument_matching_this_binding_pattern_was_not_provided_6211", "An argument matching this binding pattern was not provided."), Did_you_mean_to_call_this_expression: a(6212, e.DiagnosticCategory.Message, "Did_you_mean_to_call_this_expression_6212", "Did you mean to call this expression?"), Did_you_mean_to_use_new_with_this_expression: a(6213, e.DiagnosticCategory.Message, "Did_you_mean_to_use_new_with_this_expression_6213", "Did you mean to use 'new' with this expression?"), Enable_strict_bind_call_and_apply_methods_on_functions: a(6214, e.DiagnosticCategory.Message, "Enable_strict_bind_call_and_apply_methods_on_functions_6214", "Enable strict 'bind', 'call', and 'apply' methods on functions."), Using_compiler_options_of_project_reference_redirect_0: a(6215, e.DiagnosticCategory.Message, "Using_compiler_options_of_project_reference_redirect_0_6215", "Using compiler options of project reference redirect '{0}'."), Found_1_error: a(6216, e.DiagnosticCategory.Message, "Found_1_error_6216", "Found 1 error."), Found_0_errors: a(6217, e.DiagnosticCategory.Message, "Found_0_errors_6217", "Found {0} errors."), Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2: a(6218, e.DiagnosticCategory.Message, "Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2_6218", "======== Module name '{0}' was successfully resolved to '{1}' with Package ID '{2}'. ========"), Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3: a(6219, e.DiagnosticCategory.Message, "Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3_6219", "======== Type reference directive '{0}' was successfully resolved to '{1}' with Package ID '{2}', primary: {3}. ========"), package_json_had_a_falsy_0_field: a(6220, e.DiagnosticCategory.Message, "package_json_had_a_falsy_0_field_6220", "'package.json' had a falsy '{0}' field."), Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects: a(6221, e.DiagnosticCategory.Message, "Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects_6221", "Disable use of source files instead of declaration files from referenced projects."), Emit_class_fields_with_Define_instead_of_Set: a(6222, e.DiagnosticCategory.Message, "Emit_class_fields_with_Define_instead_of_Set_6222", "Emit class fields with Define instead of Set."), Generates_a_CPU_profile: a(6223, e.DiagnosticCategory.Message, "Generates_a_CPU_profile_6223", "Generates a CPU profile."), Disable_solution_searching_for_this_project: a(6224, e.DiagnosticCategory.Message, "Disable_solution_searching_for_this_project_6224", "Disable solution searching for this project."), Specify_strategy_for_watching_file_Colon_FixedPollingInterval_default_PriorityPollingInterval_DynamicPriorityPolling_FixedChunkSizePolling_UseFsEvents_UseFsEventsOnParentDirectory: a(6225, e.DiagnosticCategory.Message, "Specify_strategy_for_watching_file_Colon_FixedPollingInterval_default_PriorityPollingInterval_Dynami_6225", "Specify strategy for watching file: 'FixedPollingInterval' (default), 'PriorityPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling', 'UseFsEvents', 'UseFsEventsOnParentDirectory'."), Specify_strategy_for_watching_directory_on_platforms_that_don_t_support_recursive_watching_natively_Colon_UseFsEvents_default_FixedPollingInterval_DynamicPriorityPolling_FixedChunkSizePolling: a(6226, e.DiagnosticCategory.Message, "Specify_strategy_for_watching_directory_on_platforms_that_don_t_support_recursive_watching_natively__6226", "Specify strategy for watching directory on platforms that don't support recursive watching natively: 'UseFsEvents' (default), 'FixedPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling'."), Specify_strategy_for_creating_a_polling_watch_when_it_fails_to_create_using_file_system_events_Colon_FixedInterval_default_PriorityInterval_DynamicPriority_FixedChunkSize: a(6227, e.DiagnosticCategory.Message, "Specify_strategy_for_creating_a_polling_watch_when_it_fails_to_create_using_file_system_events_Colon_6227", "Specify strategy for creating a polling watch when it fails to create using file system events: 'FixedInterval' (default), 'PriorityInterval', 'DynamicPriority', 'FixedChunkSize'."), Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3: a(6229, e.DiagnosticCategory.Error, "Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3_6229", "Tag '{0}' expects at least '{1}' arguments, but the JSX factory '{2}' provides at most '{3}'."), Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line: a(6230, e.DiagnosticCategory.Error, "Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line_6230", "Option '{0}' can only be specified in 'tsconfig.json' file or set to 'false' or 'null' on command line."), Could_not_resolve_the_path_0_with_the_extensions_Colon_1: a(6231, e.DiagnosticCategory.Error, "Could_not_resolve_the_path_0_with_the_extensions_Colon_1_6231", "Could not resolve the path '{0}' with the extensions: {1}."), Declaration_augments_declaration_in_another_file_This_cannot_be_serialized: a(6232, e.DiagnosticCategory.Error, "Declaration_augments_declaration_in_another_file_This_cannot_be_serialized_6232", "Declaration augments declaration in another file. This cannot be serialized."), This_is_the_declaration_being_augmented_Consider_moving_the_augmenting_declaration_into_the_same_file: a(6233, e.DiagnosticCategory.Error, "This_is_the_declaration_being_augmented_Consider_moving_the_augmenting_declaration_into_the_same_fil_6233", "This is the declaration being augmented. Consider moving the augmenting declaration into the same file."), This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without: a(6234, e.DiagnosticCategory.Error, "This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without_6234", "This expression is not callable because it is a 'get' accessor. Did you mean to use it without '()'?"), Disable_loading_referenced_projects: a(6235, e.DiagnosticCategory.Message, "Disable_loading_referenced_projects_6235", "Disable loading referenced projects."), Arguments_for_the_rest_parameter_0_were_not_provided: a(6236, e.DiagnosticCategory.Error, "Arguments_for_the_rest_parameter_0_were_not_provided_6236", "Arguments for the rest parameter '{0}' were not provided."), Generates_an_event_trace_and_a_list_of_types: a(6237, e.DiagnosticCategory.Message, "Generates_an_event_trace_and_a_list_of_types_6237", "Generates an event trace and a list of types."), Specify_the_module_specifier_to_be_used_to_import_the_jsx_and_jsxs_factory_functions_from_eg_react: a(6238, e.DiagnosticCategory.Error, "Specify_the_module_specifier_to_be_used_to_import_the_jsx_and_jsxs_factory_functions_from_eg_react_6238", "Specify the module specifier to be used to import the 'jsx' and 'jsxs' factory functions from. eg, react"), File_0_exists_according_to_earlier_cached_lookups: a(6239, e.DiagnosticCategory.Message, "File_0_exists_according_to_earlier_cached_lookups_6239", "File '{0}' exists according to earlier cached lookups."), File_0_does_not_exist_according_to_earlier_cached_lookups: a(6240, e.DiagnosticCategory.Message, "File_0_does_not_exist_according_to_earlier_cached_lookups_6240", "File '{0}' does not exist according to earlier cached lookups."), Resolution_for_type_reference_directive_0_was_found_in_cache_from_location_1: a(6241, e.DiagnosticCategory.Message, "Resolution_for_type_reference_directive_0_was_found_in_cache_from_location_1_6241", "Resolution for type reference directive '{0}' was found in cache from location '{1}'."), Resolving_type_reference_directive_0_containing_file_1: a(6242, e.DiagnosticCategory.Message, "Resolving_type_reference_directive_0_containing_file_1_6242", "======== Resolving type reference directive '{0}', containing file '{1}'. ========"), Interpret_optional_property_types_as_written_rather_than_adding_undefined: a(6243, e.DiagnosticCategory.Message, "Interpret_optional_property_types_as_written_rather_than_adding_undefined_6243", "Interpret optional property types as written, rather than adding 'undefined'."), Modules: a(6244, e.DiagnosticCategory.Message, "Modules_6244", "Modules"), File_Management: a(6245, e.DiagnosticCategory.Message, "File_Management_6245", "File Management"), Emit: a(6246, e.DiagnosticCategory.Message, "Emit_6246", "Emit"), JavaScript_Support: a(6247, e.DiagnosticCategory.Message, "JavaScript_Support_6247", "JavaScript Support"), Type_Checking: a(6248, e.DiagnosticCategory.Message, "Type_Checking_6248", "Type Checking"), Editor_Support: a(6249, e.DiagnosticCategory.Message, "Editor_Support_6249", "Editor Support"), Watch_and_Build_Modes: a(6250, e.DiagnosticCategory.Message, "Watch_and_Build_Modes_6250", "Watch and Build Modes"), Compiler_Diagnostics: a(6251, e.DiagnosticCategory.Message, "Compiler_Diagnostics_6251", "Compiler Diagnostics"), Interop_Constraints: a(6252, e.DiagnosticCategory.Message, "Interop_Constraints_6252", "Interop Constraints"), Backwards_Compatibility: a(6253, e.DiagnosticCategory.Message, "Backwards_Compatibility_6253", "Backwards Compatibility"), Language_and_Environment: a(6254, e.DiagnosticCategory.Message, "Language_and_Environment_6254", "Language and Environment"), Projects: a(6255, e.DiagnosticCategory.Message, "Projects_6255", "Projects"), Output_Formatting: a(6256, e.DiagnosticCategory.Message, "Output_Formatting_6256", "Output Formatting"), Completeness: a(6257, e.DiagnosticCategory.Message, "Completeness_6257", "Completeness"), _0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file: a(6258, e.DiagnosticCategory.Error, "_0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file_6258", "'{0}' should be set inside the 'compilerOptions' object of the config json file"), Found_1_error_in_1: a(6259, e.DiagnosticCategory.Message, "Found_1_error_in_1_6259", "Found 1 error in {1}"), Found_0_errors_in_the_same_file_starting_at_Colon_1: a(6260, e.DiagnosticCategory.Message, "Found_0_errors_in_the_same_file_starting_at_Colon_1_6260", "Found {0} errors in the same file, starting at: {1}"), Found_0_errors_in_1_files: a(6261, e.DiagnosticCategory.Message, "Found_0_errors_in_1_files_6261", "Found {0} errors in {1} files."), Directory_0_has_no_containing_package_json_scope_Imports_will_not_resolve: a(6270, e.DiagnosticCategory.Message, "Directory_0_has_no_containing_package_json_scope_Imports_will_not_resolve_6270", "Directory '{0}' has no containing package.json scope. Imports will not resolve."), Import_specifier_0_does_not_exist_in_package_json_scope_at_path_1: a(6271, e.DiagnosticCategory.Message, "Import_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6271", "Import specifier '{0}' does not exist in package.json scope at path '{1}'."), Invalid_import_specifier_0_has_no_possible_resolutions: a(6272, e.DiagnosticCategory.Message, "Invalid_import_specifier_0_has_no_possible_resolutions_6272", "Invalid import specifier '{0}' has no possible resolutions."), package_json_scope_0_has_no_imports_defined: a(6273, e.DiagnosticCategory.Message, "package_json_scope_0_has_no_imports_defined_6273", "package.json scope '{0}' has no imports defined."), package_json_scope_0_explicitly_maps_specifier_1_to_null: a(6274, e.DiagnosticCategory.Message, "package_json_scope_0_explicitly_maps_specifier_1_to_null_6274", "package.json scope '{0}' explicitly maps specifier '{1}' to null."), package_json_scope_0_has_invalid_type_for_target_of_specifier_1: a(6275, e.DiagnosticCategory.Message, "package_json_scope_0_has_invalid_type_for_target_of_specifier_1_6275", "package.json scope '{0}' has invalid type for target of specifier '{1}'"), Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1: a(6276, e.DiagnosticCategory.Message, "Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6276", "Export specifier '{0}' does not exist in package.json scope at path '{1}'."), Enable_project_compilation: a(6302, e.DiagnosticCategory.Message, "Enable_project_compilation_6302", "Enable project compilation"), Composite_projects_may_not_disable_declaration_emit: a(6304, e.DiagnosticCategory.Error, "Composite_projects_may_not_disable_declaration_emit_6304", "Composite projects may not disable declaration emit."), Output_file_0_has_not_been_built_from_source_file_1: a(6305, e.DiagnosticCategory.Error, "Output_file_0_has_not_been_built_from_source_file_1_6305", "Output file '{0}' has not been built from source file '{1}'."), Referenced_project_0_must_have_setting_composite_Colon_true: a(6306, e.DiagnosticCategory.Error, "Referenced_project_0_must_have_setting_composite_Colon_true_6306", `Referenced project '{0}' must have setting "composite": true.`), File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern: a(6307, e.DiagnosticCategory.Error, "File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_includ_6307", "File '{0}' is not listed within the file list of project '{1}'. Projects must list all files or use an 'include' pattern."), Cannot_prepend_project_0_because_it_does_not_have_outFile_set: a(6308, e.DiagnosticCategory.Error, "Cannot_prepend_project_0_because_it_does_not_have_outFile_set_6308", "Cannot prepend project '{0}' because it does not have 'outFile' set"), Output_file_0_from_project_1_does_not_exist: a(6309, e.DiagnosticCategory.Error, "Output_file_0_from_project_1_does_not_exist_6309", "Output file '{0}' from project '{1}' does not exist"), Referenced_project_0_may_not_disable_emit: a(6310, e.DiagnosticCategory.Error, "Referenced_project_0_may_not_disable_emit_6310", "Referenced project '{0}' may not disable emit."), Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2: a(6350, e.DiagnosticCategory.Message, "Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350", "Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}'"), Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2: a(6351, e.DiagnosticCategory.Message, "Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2_6351", "Project '{0}' is up to date because newest input '{1}' is older than oldest output '{2}'"), Project_0_is_out_of_date_because_output_file_1_does_not_exist: a(6352, e.DiagnosticCategory.Message, "Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352", "Project '{0}' is out of date because output file '{1}' does not exist"), Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date: a(6353, e.DiagnosticCategory.Message, "Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353", "Project '{0}' is out of date because its dependency '{1}' is out of date"), Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies: a(6354, e.DiagnosticCategory.Message, "Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354", "Project '{0}' is up to date with .d.ts files from its dependencies"), Projects_in_this_build_Colon_0: a(6355, e.DiagnosticCategory.Message, "Projects_in_this_build_Colon_0_6355", "Projects in this build: {0}"), A_non_dry_build_would_delete_the_following_files_Colon_0: a(6356, e.DiagnosticCategory.Message, "A_non_dry_build_would_delete_the_following_files_Colon_0_6356", "A non-dry build would delete the following files: {0}"), A_non_dry_build_would_build_project_0: a(6357, e.DiagnosticCategory.Message, "A_non_dry_build_would_build_project_0_6357", "A non-dry build would build project '{0}'"), Building_project_0: a(6358, e.DiagnosticCategory.Message, "Building_project_0_6358", "Building project '{0}'..."), Updating_output_timestamps_of_project_0: a(6359, e.DiagnosticCategory.Message, "Updating_output_timestamps_of_project_0_6359", "Updating output timestamps of project '{0}'..."), Project_0_is_up_to_date: a(6361, e.DiagnosticCategory.Message, "Project_0_is_up_to_date_6361", "Project '{0}' is up to date"), Skipping_build_of_project_0_because_its_dependency_1_has_errors: a(6362, e.DiagnosticCategory.Message, "Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362", "Skipping build of project '{0}' because its dependency '{1}' has errors"), Project_0_can_t_be_built_because_its_dependency_1_has_errors: a(6363, e.DiagnosticCategory.Message, "Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363", "Project '{0}' can't be built because its dependency '{1}' has errors"), Build_one_or_more_projects_and_their_dependencies_if_out_of_date: a(6364, e.DiagnosticCategory.Message, "Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364", "Build one or more projects and their dependencies, if out of date"), Delete_the_outputs_of_all_projects: a(6365, e.DiagnosticCategory.Message, "Delete_the_outputs_of_all_projects_6365", "Delete the outputs of all projects."), Show_what_would_be_built_or_deleted_if_specified_with_clean: a(6367, e.DiagnosticCategory.Message, "Show_what_would_be_built_or_deleted_if_specified_with_clean_6367", "Show what would be built (or deleted, if specified with '--clean')"), Option_build_must_be_the_first_command_line_argument: a(6369, e.DiagnosticCategory.Error, "Option_build_must_be_the_first_command_line_argument_6369", "Option '--build' must be the first command line argument."), Options_0_and_1_cannot_be_combined: a(6370, e.DiagnosticCategory.Error, "Options_0_and_1_cannot_be_combined_6370", "Options '{0}' and '{1}' cannot be combined."), Updating_unchanged_output_timestamps_of_project_0: a(6371, e.DiagnosticCategory.Message, "Updating_unchanged_output_timestamps_of_project_0_6371", "Updating unchanged output timestamps of project '{0}'..."), Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed: a(6372, e.DiagnosticCategory.Message, "Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed_6372", "Project '{0}' is out of date because output of its dependency '{1}' has changed"), Updating_output_of_project_0: a(6373, e.DiagnosticCategory.Message, "Updating_output_of_project_0_6373", "Updating output of project '{0}'..."), A_non_dry_build_would_update_timestamps_for_output_of_project_0: a(6374, e.DiagnosticCategory.Message, "A_non_dry_build_would_update_timestamps_for_output_of_project_0_6374", "A non-dry build would update timestamps for output of project '{0}'"), A_non_dry_build_would_update_output_of_project_0: a(6375, e.DiagnosticCategory.Message, "A_non_dry_build_would_update_output_of_project_0_6375", "A non-dry build would update output of project '{0}'"), Cannot_update_output_of_project_0_because_there_was_error_reading_file_1: a(6376, e.DiagnosticCategory.Message, "Cannot_update_output_of_project_0_because_there_was_error_reading_file_1_6376", "Cannot update output of project '{0}' because there was error reading file '{1}'"), Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1: a(6377, e.DiagnosticCategory.Error, "Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1_6377", "Cannot write file '{0}' because it will overwrite '.tsbuildinfo' file generated by referenced project '{1}'"), Composite_projects_may_not_disable_incremental_compilation: a(6379, e.DiagnosticCategory.Error, "Composite_projects_may_not_disable_incremental_compilation_6379", "Composite projects may not disable incremental compilation."), Specify_file_to_store_incremental_compilation_information: a(6380, e.DiagnosticCategory.Message, "Specify_file_to_store_incremental_compilation_information_6380", "Specify file to store incremental compilation information"), Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_current_version_2: a(6381, e.DiagnosticCategory.Message, "Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_curren_6381", "Project '{0}' is out of date because output for it was generated with version '{1}' that differs with current version '{2}'"), Skipping_build_of_project_0_because_its_dependency_1_was_not_built: a(6382, e.DiagnosticCategory.Message, "Skipping_build_of_project_0_because_its_dependency_1_was_not_built_6382", "Skipping build of project '{0}' because its dependency '{1}' was not built"), Project_0_can_t_be_built_because_its_dependency_1_was_not_built: a(6383, e.DiagnosticCategory.Message, "Project_0_can_t_be_built_because_its_dependency_1_was_not_built_6383", "Project '{0}' can't be built because its dependency '{1}' was not built"), Have_recompiles_in_incremental_and_watch_assume_that_changes_within_a_file_will_only_affect_files_directly_depending_on_it: a(6384, e.DiagnosticCategory.Message, "Have_recompiles_in_incremental_and_watch_assume_that_changes_within_a_file_will_only_affect_files_di_6384", "Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it."), _0_is_deprecated: a(6385, e.DiagnosticCategory.Suggestion, "_0_is_deprecated_6385", "'{0}' is deprecated.", void 0, void 0, true), Performance_timings_for_diagnostics_or_extendedDiagnostics_are_not_available_in_this_session_A_native_implementation_of_the_Web_Performance_API_could_not_be_found: a(6386, e.DiagnosticCategory.Message, "Performance_timings_for_diagnostics_or_extendedDiagnostics_are_not_available_in_this_session_A_nativ_6386", "Performance timings for '--diagnostics' or '--extendedDiagnostics' are not available in this session. A native implementation of the Web Performance API could not be found."), The_signature_0_of_1_is_deprecated: a(6387, e.DiagnosticCategory.Suggestion, "The_signature_0_of_1_is_deprecated_6387", "The signature '{0}' of '{1}' is deprecated.", void 0, void 0, true), Project_0_is_being_forcibly_rebuilt: a(6388, e.DiagnosticCategory.Message, "Project_0_is_being_forcibly_rebuilt_6388", "Project '{0}' is being forcibly rebuilt"), Reusing_resolution_of_module_0_from_1_of_old_program_it_was_not_resolved: a(6389, e.DiagnosticCategory.Message, "Reusing_resolution_of_module_0_from_1_of_old_program_it_was_not_resolved_6389", "Reusing resolution of module '{0}' from '{1}' of old program, it was not resolved."), Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2: a(6390, e.DiagnosticCategory.Message, "Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved__6390", "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}'."), Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3: a(6391, e.DiagnosticCategory.Message, "Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved__6391", "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'."), Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_not_resolved: a(6392, e.DiagnosticCategory.Message, "Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_not_resolved_6392", "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was not resolved."), Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3: a(6393, e.DiagnosticCategory.Message, "Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_6393", "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'."), Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4: a(6394, e.DiagnosticCategory.Message, "Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_6394", "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'."), Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_not_resolved: a(6395, e.DiagnosticCategory.Message, "Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_not_resolved_6395", "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was not resolved."), Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3: a(6396, e.DiagnosticCategory.Message, "Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_succes_6396", "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'."), Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4: a(6397, e.DiagnosticCategory.Message, "Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_succes_6397", "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'."), Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_not_resolved: a(6398, e.DiagnosticCategory.Message, "Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_not_re_6398", "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was not resolved."), The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1: a(6500, e.DiagnosticCategory.Message, "The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1_6500", "The expected type comes from property '{0}' which is declared here on type '{1}'"), The_expected_type_comes_from_this_index_signature: a(6501, e.DiagnosticCategory.Message, "The_expected_type_comes_from_this_index_signature_6501", "The expected type comes from this index signature."), The_expected_type_comes_from_the_return_type_of_this_signature: a(6502, e.DiagnosticCategory.Message, "The_expected_type_comes_from_the_return_type_of_this_signature_6502", "The expected type comes from the return type of this signature."), Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing: a(6503, e.DiagnosticCategory.Message, "Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing_6503", "Print names of files that are part of the compilation and then stop processing."), File_0_is_a_JavaScript_file_Did_you_mean_to_enable_the_allowJs_option: a(6504, e.DiagnosticCategory.Error, "File_0_is_a_JavaScript_file_Did_you_mean_to_enable_the_allowJs_option_6504", "File '{0}' is a JavaScript file. Did you mean to enable the 'allowJs' option?"), Print_names_of_files_and_the_reason_they_are_part_of_the_compilation: a(6505, e.DiagnosticCategory.Message, "Print_names_of_files_and_the_reason_they_are_part_of_the_compilation_6505", "Print names of files and the reason they are part of the compilation."), Consider_adding_a_declare_modifier_to_this_class: a(6506, e.DiagnosticCategory.Message, "Consider_adding_a_declare_modifier_to_this_class_6506", "Consider adding a 'declare' modifier to this class."), Allow_JavaScript_files_to_be_a_part_of_your_program_Use_the_checkJS_option_to_get_errors_from_these_files: a(6600, e.DiagnosticCategory.Message, "Allow_JavaScript_files_to_be_a_part_of_your_program_Use_the_checkJS_option_to_get_errors_from_these__6600", "Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files."), Allow_import_x_from_y_when_a_module_doesn_t_have_a_default_export: a(6601, e.DiagnosticCategory.Message, "Allow_import_x_from_y_when_a_module_doesn_t_have_a_default_export_6601", "Allow 'import x from y' when a module doesn't have a default export."), Allow_accessing_UMD_globals_from_modules: a(6602, e.DiagnosticCategory.Message, "Allow_accessing_UMD_globals_from_modules_6602", "Allow accessing UMD globals from modules."), Disable_error_reporting_for_unreachable_code: a(6603, e.DiagnosticCategory.Message, "Disable_error_reporting_for_unreachable_code_6603", "Disable error reporting for unreachable code."), Disable_error_reporting_for_unused_labels: a(6604, e.DiagnosticCategory.Message, "Disable_error_reporting_for_unused_labels_6604", "Disable error reporting for unused labels."), Ensure_use_strict_is_always_emitted: a(6605, e.DiagnosticCategory.Message, "Ensure_use_strict_is_always_emitted_6605", "Ensure 'use strict' is always emitted."), Have_recompiles_in_projects_that_use_incremental_and_watch_mode_assume_that_changes_within_a_file_will_only_affect_files_directly_depending_on_it: a(6606, e.DiagnosticCategory.Message, "Have_recompiles_in_projects_that_use_incremental_and_watch_mode_assume_that_changes_within_a_file_wi_6606", "Have recompiles in projects that use 'incremental' and 'watch' mode assume that changes within a file will only affect files directly depending on it."), Specify_the_base_directory_to_resolve_non_relative_module_names: a(6607, e.DiagnosticCategory.Message, "Specify_the_base_directory_to_resolve_non_relative_module_names_6607", "Specify the base directory to resolve non-relative module names."), No_longer_supported_In_early_versions_manually_set_the_text_encoding_for_reading_files: a(6608, e.DiagnosticCategory.Message, "No_longer_supported_In_early_versions_manually_set_the_text_encoding_for_reading_files_6608", "No longer supported. In early versions, manually set the text encoding for reading files."), Enable_error_reporting_in_type_checked_JavaScript_files: a(6609, e.DiagnosticCategory.Message, "Enable_error_reporting_in_type_checked_JavaScript_files_6609", "Enable error reporting in type-checked JavaScript files."), Enable_constraints_that_allow_a_TypeScript_project_to_be_used_with_project_references: a(6611, e.DiagnosticCategory.Message, "Enable_constraints_that_allow_a_TypeScript_project_to_be_used_with_project_references_6611", "Enable constraints that allow a TypeScript project to be used with project references."), Generate_d_ts_files_from_TypeScript_and_JavaScript_files_in_your_project: a(6612, e.DiagnosticCategory.Message, "Generate_d_ts_files_from_TypeScript_and_JavaScript_files_in_your_project_6612", "Generate .d.ts files from TypeScript and JavaScript files in your project."), Specify_the_output_directory_for_generated_declaration_files: a(6613, e.DiagnosticCategory.Message, "Specify_the_output_directory_for_generated_declaration_files_6613", "Specify the output directory for generated declaration files."), Create_sourcemaps_for_d_ts_files: a(6614, e.DiagnosticCategory.Message, "Create_sourcemaps_for_d_ts_files_6614", "Create sourcemaps for d.ts files."), Output_compiler_performance_information_after_building: a(6615, e.DiagnosticCategory.Message, "Output_compiler_performance_information_after_building_6615", "Output compiler performance information after building."), Disables_inference_for_type_acquisition_by_looking_at_filenames_in_a_project: a(6616, e.DiagnosticCategory.Message, "Disables_inference_for_type_acquisition_by_looking_at_filenames_in_a_project_6616", "Disables inference for type acquisition by looking at filenames in a project."), Reduce_the_number_of_projects_loaded_automatically_by_TypeScript: a(6617, e.DiagnosticCategory.Message, "Reduce_the_number_of_projects_loaded_automatically_by_TypeScript_6617", "Reduce the number of projects loaded automatically by TypeScript."), Remove_the_20mb_cap_on_total_source_code_size_for_JavaScript_files_in_the_TypeScript_language_server: a(6618, e.DiagnosticCategory.Message, "Remove_the_20mb_cap_on_total_source_code_size_for_JavaScript_files_in_the_TypeScript_language_server_6618", "Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server."), Opt_a_project_out_of_multi_project_reference_checking_when_editing: a(6619, e.DiagnosticCategory.Message, "Opt_a_project_out_of_multi_project_reference_checking_when_editing_6619", "Opt a project out of multi-project reference checking when editing."), Disable_preferring_source_files_instead_of_declaration_files_when_referencing_composite_projects: a(6620, e.DiagnosticCategory.Message, "Disable_preferring_source_files_instead_of_declaration_files_when_referencing_composite_projects_6620", "Disable preferring source files instead of declaration files when referencing composite projects."), Emit_more_compliant_but_verbose_and_less_performant_JavaScript_for_iteration: a(6621, e.DiagnosticCategory.Message, "Emit_more_compliant_but_verbose_and_less_performant_JavaScript_for_iteration_6621", "Emit more compliant, but verbose and less performant JavaScript for iteration."), Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files: a(6622, e.DiagnosticCategory.Message, "Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files_6622", "Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files."), Only_output_d_ts_files_and_not_JavaScript_files: a(6623, e.DiagnosticCategory.Message, "Only_output_d_ts_files_and_not_JavaScript_files_6623", "Only output d.ts files and not JavaScript files."), Emit_design_type_metadata_for_decorated_declarations_in_source_files: a(6624, e.DiagnosticCategory.Message, "Emit_design_type_metadata_for_decorated_declarations_in_source_files_6624", "Emit design-type metadata for decorated declarations in source files."), Disable_the_type_acquisition_for_JavaScript_projects: a(6625, e.DiagnosticCategory.Message, "Disable_the_type_acquisition_for_JavaScript_projects_6625", "Disable the type acquisition for JavaScript projects"), Emit_additional_JavaScript_to_ease_support_for_importing_CommonJS_modules_This_enables_allowSyntheticDefaultImports_for_type_compatibility: a(6626, e.DiagnosticCategory.Message, "Emit_additional_JavaScript_to_ease_support_for_importing_CommonJS_modules_This_enables_allowSyntheti_6626", "Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility."), Filters_results_from_the_include_option: a(6627, e.DiagnosticCategory.Message, "Filters_results_from_the_include_option_6627", "Filters results from the `include` option."), Remove_a_list_of_directories_from_the_watch_process: a(6628, e.DiagnosticCategory.Message, "Remove_a_list_of_directories_from_the_watch_process_6628", "Remove a list of directories from the watch process."), Remove_a_list_of_files_from_the_watch_mode_s_processing: a(6629, e.DiagnosticCategory.Message, "Remove_a_list_of_files_from_the_watch_mode_s_processing_6629", "Remove a list of files from the watch mode's processing."), Enable_experimental_support_for_TC39_stage_2_draft_decorators: a(6630, e.DiagnosticCategory.Message, "Enable_experimental_support_for_TC39_stage_2_draft_decorators_6630", "Enable experimental support for TC39 stage 2 draft decorators."), Print_files_read_during_the_compilation_including_why_it_was_included: a(6631, e.DiagnosticCategory.Message, "Print_files_read_during_the_compilation_including_why_it_was_included_6631", "Print files read during the compilation including why it was included."), Output_more_detailed_compiler_performance_information_after_building: a(6632, e.DiagnosticCategory.Message, "Output_more_detailed_compiler_performance_information_after_building_6632", "Output more detailed compiler performance information after building."), Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_are_inherited: a(6633, e.DiagnosticCategory.Message, "Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_a_6633", "Specify one or more path or node module references to base configuration files from which settings are inherited."), Specify_what_approach_the_watcher_should_use_if_the_system_runs_out_of_native_file_watchers: a(6634, e.DiagnosticCategory.Message, "Specify_what_approach_the_watcher_should_use_if_the_system_runs_out_of_native_file_watchers_6634", "Specify what approach the watcher should use if the system runs out of native file watchers."), Include_a_list_of_files_This_does_not_support_glob_patterns_as_opposed_to_include: a(6635, e.DiagnosticCategory.Message, "Include_a_list_of_files_This_does_not_support_glob_patterns_as_opposed_to_include_6635", "Include a list of files. This does not support glob patterns, as opposed to `include`."), Build_all_projects_including_those_that_appear_to_be_up_to_date: a(6636, e.DiagnosticCategory.Message, "Build_all_projects_including_those_that_appear_to_be_up_to_date_6636", "Build all projects, including those that appear to be up to date."), Ensure_that_casing_is_correct_in_imports: a(6637, e.DiagnosticCategory.Message, "Ensure_that_casing_is_correct_in_imports_6637", "Ensure that casing is correct in imports."), Emit_a_v8_CPU_profile_of_the_compiler_run_for_debugging: a(6638, e.DiagnosticCategory.Message, "Emit_a_v8_CPU_profile_of_the_compiler_run_for_debugging_6638", "Emit a v8 CPU profile of the compiler run for debugging."), Allow_importing_helper_functions_from_tslib_once_per_project_instead_of_including_them_per_file: a(6639, e.DiagnosticCategory.Message, "Allow_importing_helper_functions_from_tslib_once_per_project_instead_of_including_them_per_file_6639", "Allow importing helper functions from tslib once per project, instead of including them per-file."), Specify_a_list_of_glob_patterns_that_match_files_to_be_included_in_compilation: a(6641, e.DiagnosticCategory.Message, "Specify_a_list_of_glob_patterns_that_match_files_to_be_included_in_compilation_6641", "Specify a list of glob patterns that match files to be included in compilation."), Save_tsbuildinfo_files_to_allow_for_incremental_compilation_of_projects: a(6642, e.DiagnosticCategory.Message, "Save_tsbuildinfo_files_to_allow_for_incremental_compilation_of_projects_6642", "Save .tsbuildinfo files to allow for incremental compilation of projects."), Include_sourcemap_files_inside_the_emitted_JavaScript: a(6643, e.DiagnosticCategory.Message, "Include_sourcemap_files_inside_the_emitted_JavaScript_6643", "Include sourcemap files inside the emitted JavaScript."), Include_source_code_in_the_sourcemaps_inside_the_emitted_JavaScript: a(6644, e.DiagnosticCategory.Message, "Include_source_code_in_the_sourcemaps_inside_the_emitted_JavaScript_6644", "Include source code in the sourcemaps inside the emitted JavaScript."), Ensure_that_each_file_can_be_safely_transpiled_without_relying_on_other_imports: a(6645, e.DiagnosticCategory.Message, "Ensure_that_each_file_can_be_safely_transpiled_without_relying_on_other_imports_6645", "Ensure that each file can be safely transpiled without relying on other imports."), Specify_what_JSX_code_is_generated: a(6646, e.DiagnosticCategory.Message, "Specify_what_JSX_code_is_generated_6646", "Specify what JSX code is generated."), Specify_the_JSX_factory_function_used_when_targeting_React_JSX_emit_e_g_React_createElement_or_h: a(6647, e.DiagnosticCategory.Message, "Specify_the_JSX_factory_function_used_when_targeting_React_JSX_emit_e_g_React_createElement_or_h_6647", "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'."), Specify_the_JSX_Fragment_reference_used_for_fragments_when_targeting_React_JSX_emit_e_g_React_Fragment_or_Fragment: a(6648, e.DiagnosticCategory.Message, "Specify_the_JSX_Fragment_reference_used_for_fragments_when_targeting_React_JSX_emit_e_g_React_Fragme_6648", "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'."), Specify_module_specifier_used_to_import_the_JSX_factory_functions_when_using_jsx_Colon_react_jsx_Asterisk: a(6649, e.DiagnosticCategory.Message, "Specify_module_specifier_used_to_import_the_JSX_factory_functions_when_using_jsx_Colon_react_jsx_Ast_6649", "Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'."), Make_keyof_only_return_strings_instead_of_string_numbers_or_symbols_Legacy_option: a(6650, e.DiagnosticCategory.Message, "Make_keyof_only_return_strings_instead_of_string_numbers_or_symbols_Legacy_option_6650", "Make keyof only return strings instead of string, numbers or symbols. Legacy option."), Specify_a_set_of_bundled_library_declaration_files_that_describe_the_target_runtime_environment: a(6651, e.DiagnosticCategory.Message, "Specify_a_set_of_bundled_library_declaration_files_that_describe_the_target_runtime_environment_6651", "Specify a set of bundled library declaration files that describe the target runtime environment."), Print_the_names_of_emitted_files_after_a_compilation: a(6652, e.DiagnosticCategory.Message, "Print_the_names_of_emitted_files_after_a_compilation_6652", "Print the names of emitted files after a compilation."), Print_all_of_the_files_read_during_the_compilation: a(6653, e.DiagnosticCategory.Message, "Print_all_of_the_files_read_during_the_compilation_6653", "Print all of the files read during the compilation."), Set_the_language_of_the_messaging_from_TypeScript_This_does_not_affect_emit: a(6654, e.DiagnosticCategory.Message, "Set_the_language_of_the_messaging_from_TypeScript_This_does_not_affect_emit_6654", "Set the language of the messaging from TypeScript. This does not affect emit."), Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: a(6655, e.DiagnosticCategory.Message, "Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6655", "Specify the location where debugger should locate map files instead of generated locations."), Specify_the_maximum_folder_depth_used_for_checking_JavaScript_files_from_node_modules_Only_applicable_with_allowJs: a(6656, e.DiagnosticCategory.Message, "Specify_the_maximum_folder_depth_used_for_checking_JavaScript_files_from_node_modules_Only_applicabl_6656", "Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'."), Specify_what_module_code_is_generated: a(6657, e.DiagnosticCategory.Message, "Specify_what_module_code_is_generated_6657", "Specify what module code is generated."), Specify_how_TypeScript_looks_up_a_file_from_a_given_module_specifier: a(6658, e.DiagnosticCategory.Message, "Specify_how_TypeScript_looks_up_a_file_from_a_given_module_specifier_6658", "Specify how TypeScript looks up a file from a given module specifier."), Set_the_newline_character_for_emitting_files: a(6659, e.DiagnosticCategory.Message, "Set_the_newline_character_for_emitting_files_6659", "Set the newline character for emitting files."), Disable_emitting_files_from_a_compilation: a(6660, e.DiagnosticCategory.Message, "Disable_emitting_files_from_a_compilation_6660", "Disable emitting files from a compilation."), Disable_generating_custom_helper_functions_like_extends_in_compiled_output: a(6661, e.DiagnosticCategory.Message, "Disable_generating_custom_helper_functions_like_extends_in_compiled_output_6661", "Disable generating custom helper functions like '__extends' in compiled output."), Disable_emitting_files_if_any_type_checking_errors_are_reported: a(6662, e.DiagnosticCategory.Message, "Disable_emitting_files_if_any_type_checking_errors_are_reported_6662", "Disable emitting files if any type checking errors are reported."), Disable_truncating_types_in_error_messages: a(6663, e.DiagnosticCategory.Message, "Disable_truncating_types_in_error_messages_6663", "Disable truncating types in error messages."), Enable_error_reporting_for_fallthrough_cases_in_switch_statements: a(6664, e.DiagnosticCategory.Message, "Enable_error_reporting_for_fallthrough_cases_in_switch_statements_6664", "Enable error reporting for fallthrough cases in switch statements."), Enable_error_reporting_for_expressions_and_declarations_with_an_implied_any_type: a(6665, e.DiagnosticCategory.Message, "Enable_error_reporting_for_expressions_and_declarations_with_an_implied_any_type_6665", "Enable error reporting for expressions and declarations with an implied 'any' type."), Ensure_overriding_members_in_derived_classes_are_marked_with_an_override_modifier: a(6666, e.DiagnosticCategory.Message, "Ensure_overriding_members_in_derived_classes_are_marked_with_an_override_modifier_6666", "Ensure overriding members in derived classes are marked with an override modifier."), Enable_error_reporting_for_codepaths_that_do_not_explicitly_return_in_a_function: a(6667, e.DiagnosticCategory.Message, "Enable_error_reporting_for_codepaths_that_do_not_explicitly_return_in_a_function_6667", "Enable error reporting for codepaths that do not explicitly return in a function."), Enable_error_reporting_when_this_is_given_the_type_any: a(6668, e.DiagnosticCategory.Message, "Enable_error_reporting_when_this_is_given_the_type_any_6668", "Enable error reporting when 'this' is given the type 'any'."), Disable_adding_use_strict_directives_in_emitted_JavaScript_files: a(6669, e.DiagnosticCategory.Message, "Disable_adding_use_strict_directives_in_emitted_JavaScript_files_6669", "Disable adding 'use strict' directives in emitted JavaScript files."), Disable_including_any_library_files_including_the_default_lib_d_ts: a(6670, e.DiagnosticCategory.Message, "Disable_including_any_library_files_including_the_default_lib_d_ts_6670", "Disable including any library files, including the default lib.d.ts."), Enforces_using_indexed_accessors_for_keys_declared_using_an_indexed_type: a(6671, e.DiagnosticCategory.Message, "Enforces_using_indexed_accessors_for_keys_declared_using_an_indexed_type_6671", "Enforces using indexed accessors for keys declared using an indexed type."), Disallow_import_s_require_s_or_reference_s_from_expanding_the_number_of_files_TypeScript_should_add_to_a_project: a(6672, e.DiagnosticCategory.Message, "Disallow_import_s_require_s_or_reference_s_from_expanding_the_number_of_files_TypeScript_should_add__6672", "Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project."), Disable_strict_checking_of_generic_signatures_in_function_types: a(6673, e.DiagnosticCategory.Message, "Disable_strict_checking_of_generic_signatures_in_function_types_6673", "Disable strict checking of generic signatures in function types."), Add_undefined_to_a_type_when_accessed_using_an_index: a(6674, e.DiagnosticCategory.Message, "Add_undefined_to_a_type_when_accessed_using_an_index_6674", "Add 'undefined' to a type when accessed using an index."), Enable_error_reporting_when_local_variables_aren_t_read: a(6675, e.DiagnosticCategory.Message, "Enable_error_reporting_when_local_variables_aren_t_read_6675", "Enable error reporting when local variables aren't read."), Raise_an_error_when_a_function_parameter_isn_t_read: a(6676, e.DiagnosticCategory.Message, "Raise_an_error_when_a_function_parameter_isn_t_read_6676", "Raise an error when a function parameter isn't read."), Deprecated_setting_Use_outFile_instead: a(6677, e.DiagnosticCategory.Message, "Deprecated_setting_Use_outFile_instead_6677", "Deprecated setting. Use 'outFile' instead."), Specify_an_output_folder_for_all_emitted_files: a(6678, e.DiagnosticCategory.Message, "Specify_an_output_folder_for_all_emitted_files_6678", "Specify an output folder for all emitted files."), Specify_a_file_that_bundles_all_outputs_into_one_JavaScript_file_If_declaration_is_true_also_designates_a_file_that_bundles_all_d_ts_output: a(6679, e.DiagnosticCategory.Message, "Specify_a_file_that_bundles_all_outputs_into_one_JavaScript_file_If_declaration_is_true_also_designa_6679", "Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output."), Specify_a_set_of_entries_that_re_map_imports_to_additional_lookup_locations: a(6680, e.DiagnosticCategory.Message, "Specify_a_set_of_entries_that_re_map_imports_to_additional_lookup_locations_6680", "Specify a set of entries that re-map imports to additional lookup locations."), Specify_a_list_of_language_service_plugins_to_include: a(6681, e.DiagnosticCategory.Message, "Specify_a_list_of_language_service_plugins_to_include_6681", "Specify a list of language service plugins to include."), Disable_erasing_const_enum_declarations_in_generated_code: a(6682, e.DiagnosticCategory.Message, "Disable_erasing_const_enum_declarations_in_generated_code_6682", "Disable erasing 'const enum' declarations in generated code."), Disable_resolving_symlinks_to_their_realpath_This_correlates_to_the_same_flag_in_node: a(6683, e.DiagnosticCategory.Message, "Disable_resolving_symlinks_to_their_realpath_This_correlates_to_the_same_flag_in_node_6683", "Disable resolving symlinks to their realpath. This correlates to the same flag in node."), Disable_wiping_the_console_in_watch_mode: a(6684, e.DiagnosticCategory.Message, "Disable_wiping_the_console_in_watch_mode_6684", "Disable wiping the console in watch mode."), Enable_color_and_formatting_in_TypeScript_s_output_to_make_compiler_errors_easier_to_read: a(6685, e.DiagnosticCategory.Message, "Enable_color_and_formatting_in_TypeScript_s_output_to_make_compiler_errors_easier_to_read_6685", "Enable color and formatting in TypeScript's output to make compiler errors easier to read."), Specify_the_object_invoked_for_createElement_This_only_applies_when_targeting_react_JSX_emit: a(6686, e.DiagnosticCategory.Message, "Specify_the_object_invoked_for_createElement_This_only_applies_when_targeting_react_JSX_emit_6686", "Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit."), Specify_an_array_of_objects_that_specify_paths_for_projects_Used_in_project_references: a(6687, e.DiagnosticCategory.Message, "Specify_an_array_of_objects_that_specify_paths_for_projects_Used_in_project_references_6687", "Specify an array of objects that specify paths for projects. Used in project references."), Disable_emitting_comments: a(6688, e.DiagnosticCategory.Message, "Disable_emitting_comments_6688", "Disable emitting comments."), Enable_importing_json_files: a(6689, e.DiagnosticCategory.Message, "Enable_importing_json_files_6689", "Enable importing .json files."), Specify_the_root_folder_within_your_source_files: a(6690, e.DiagnosticCategory.Message, "Specify_the_root_folder_within_your_source_files_6690", "Specify the root folder within your source files."), Allow_multiple_folders_to_be_treated_as_one_when_resolving_modules: a(6691, e.DiagnosticCategory.Message, "Allow_multiple_folders_to_be_treated_as_one_when_resolving_modules_6691", "Allow multiple folders to be treated as one when resolving modules."), Skip_type_checking_d_ts_files_that_are_included_with_TypeScript: a(6692, e.DiagnosticCategory.Message, "Skip_type_checking_d_ts_files_that_are_included_with_TypeScript_6692", "Skip type checking .d.ts files that are included with TypeScript."), Skip_type_checking_all_d_ts_files: a(6693, e.DiagnosticCategory.Message, "Skip_type_checking_all_d_ts_files_6693", "Skip type checking all .d.ts files."), Create_source_map_files_for_emitted_JavaScript_files: a(6694, e.DiagnosticCategory.Message, "Create_source_map_files_for_emitted_JavaScript_files_6694", "Create source map files for emitted JavaScript files."), Specify_the_root_path_for_debuggers_to_find_the_reference_source_code: a(6695, e.DiagnosticCategory.Message, "Specify_the_root_path_for_debuggers_to_find_the_reference_source_code_6695", "Specify the root path for debuggers to find the reference source code."), Check_that_the_arguments_for_bind_call_and_apply_methods_match_the_original_function: a(6697, e.DiagnosticCategory.Message, "Check_that_the_arguments_for_bind_call_and_apply_methods_match_the_original_function_6697", "Check that the arguments for 'bind', 'call', and 'apply' methods match the original function."), When_assigning_functions_check_to_ensure_parameters_and_the_return_values_are_subtype_compatible: a(6698, e.DiagnosticCategory.Message, "When_assigning_functions_check_to_ensure_parameters_and_the_return_values_are_subtype_compatible_6698", "When assigning functions, check to ensure parameters and the return values are subtype-compatible."), When_type_checking_take_into_account_null_and_undefined: a(6699, e.DiagnosticCategory.Message, "When_type_checking_take_into_account_null_and_undefined_6699", "When type checking, take into account 'null' and 'undefined'."), Check_for_class_properties_that_are_declared_but_not_set_in_the_constructor: a(6700, e.DiagnosticCategory.Message, "Check_for_class_properties_that_are_declared_but_not_set_in_the_constructor_6700", "Check for class properties that are declared but not set in the constructor."), Disable_emitting_declarations_that_have_internal_in_their_JSDoc_comments: a(6701, e.DiagnosticCategory.Message, "Disable_emitting_declarations_that_have_internal_in_their_JSDoc_comments_6701", "Disable emitting declarations that have '@internal' in their JSDoc comments."), Disable_reporting_of_excess_property_errors_during_the_creation_of_object_literals: a(6702, e.DiagnosticCategory.Message, "Disable_reporting_of_excess_property_errors_during_the_creation_of_object_literals_6702", "Disable reporting of excess property errors during the creation of object literals."), Suppress_noImplicitAny_errors_when_indexing_objects_that_lack_index_signatures: a(6703, e.DiagnosticCategory.Message, "Suppress_noImplicitAny_errors_when_indexing_objects_that_lack_index_signatures_6703", "Suppress 'noImplicitAny' errors when indexing objects that lack index signatures."), Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_support_recursive_watching_natively: a(6704, e.DiagnosticCategory.Message, "Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_supp_6704", "Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively."), Set_the_JavaScript_language_version_for_emitted_JavaScript_and_include_compatible_library_declarations: a(6705, e.DiagnosticCategory.Message, "Set_the_JavaScript_language_version_for_emitted_JavaScript_and_include_compatible_library_declaratio_6705", "Set the JavaScript language version for emitted JavaScript and include compatible library declarations."), Log_paths_used_during_the_moduleResolution_process: a(6706, e.DiagnosticCategory.Message, "Log_paths_used_during_the_moduleResolution_process_6706", "Log paths used during the 'moduleResolution' process."), Specify_the_path_to_tsbuildinfo_incremental_compilation_file: a(6707, e.DiagnosticCategory.Message, "Specify_the_path_to_tsbuildinfo_incremental_compilation_file_6707", "Specify the path to .tsbuildinfo incremental compilation file."), Specify_options_for_automatic_acquisition_of_declaration_files: a(6709, e.DiagnosticCategory.Message, "Specify_options_for_automatic_acquisition_of_declaration_files_6709", "Specify options for automatic acquisition of declaration files."), Specify_multiple_folders_that_act_like_Slashnode_modules_Slash_types: a(6710, e.DiagnosticCategory.Message, "Specify_multiple_folders_that_act_like_Slashnode_modules_Slash_types_6710", "Specify multiple folders that act like './node_modules/@types'."), Specify_type_package_names_to_be_included_without_being_referenced_in_a_source_file: a(6711, e.DiagnosticCategory.Message, "Specify_type_package_names_to_be_included_without_being_referenced_in_a_source_file_6711", "Specify type package names to be included without being referenced in a source file."), Emit_ECMAScript_standard_compliant_class_fields: a(6712, e.DiagnosticCategory.Message, "Emit_ECMAScript_standard_compliant_class_fields_6712", "Emit ECMAScript-standard-compliant class fields."), Enable_verbose_logging: a(6713, e.DiagnosticCategory.Message, "Enable_verbose_logging_6713", "Enable verbose logging."), Specify_how_directories_are_watched_on_systems_that_lack_recursive_file_watching_functionality: a(6714, e.DiagnosticCategory.Message, "Specify_how_directories_are_watched_on_systems_that_lack_recursive_file_watching_functionality_6714", "Specify how directories are watched on systems that lack recursive file-watching functionality."), Specify_how_the_TypeScript_watch_mode_works: a(6715, e.DiagnosticCategory.Message, "Specify_how_the_TypeScript_watch_mode_works_6715", "Specify how the TypeScript watch mode works."), Require_undeclared_properties_from_index_signatures_to_use_element_accesses: a(6717, e.DiagnosticCategory.Message, "Require_undeclared_properties_from_index_signatures_to_use_element_accesses_6717", "Require undeclared properties from index signatures to use element accesses."), Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types: a(6718, e.DiagnosticCategory.Message, "Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types_6718", "Specify emit/checking behavior for imports that are only used for types."), Default_catch_clause_variables_as_unknown_instead_of_any: a(6803, e.DiagnosticCategory.Message, "Default_catch_clause_variables_as_unknown_instead_of_any_6803", "Default catch clause variables as 'unknown' instead of 'any'."), one_of_Colon: a(6900, e.DiagnosticCategory.Message, "one_of_Colon_6900", "one of:"), one_or_more_Colon: a(6901, e.DiagnosticCategory.Message, "one_or_more_Colon_6901", "one or more:"), type_Colon: a(6902, e.DiagnosticCategory.Message, "type_Colon_6902", "type:"), default_Colon: a(6903, e.DiagnosticCategory.Message, "default_Colon_6903", "default:"), module_system_or_esModuleInterop: a(6904, e.DiagnosticCategory.Message, "module_system_or_esModuleInterop_6904", 'module === "system" or esModuleInterop'), false_unless_strict_is_set: a(6905, e.DiagnosticCategory.Message, "false_unless_strict_is_set_6905", "`false`, unless `strict` is set"), false_unless_composite_is_set: a(6906, e.DiagnosticCategory.Message, "false_unless_composite_is_set_6906", "`false`, unless `composite` is set"), node_modules_bower_components_jspm_packages_plus_the_value_of_outDir_if_one_is_specified: a(6907, e.DiagnosticCategory.Message, "node_modules_bower_components_jspm_packages_plus_the_value_of_outDir_if_one_is_specified_6907", '`["node_modules", "bower_components", "jspm_packages"]`, plus the value of `outDir` if one is specified.'), if_files_is_specified_otherwise_Asterisk_Asterisk_Slash_Asterisk: a(6908, e.DiagnosticCategory.Message, "if_files_is_specified_otherwise_Asterisk_Asterisk_Slash_Asterisk_6908", '`[]` if `files` is specified, otherwise `["**/*"]`'), true_if_composite_false_otherwise: a(6909, e.DiagnosticCategory.Message, "true_if_composite_false_otherwise_6909", "`true` if `composite`, `false` otherwise"), module_AMD_or_UMD_or_System_or_ES6_then_Classic_Otherwise_Node: a(69010, e.DiagnosticCategory.Message, "module_AMD_or_UMD_or_System_or_ES6_then_Classic_Otherwise_Node_69010", "module === `AMD` or `UMD` or `System` or `ES6`, then `Classic`, Otherwise `Node`"), Computed_from_the_list_of_input_files: a(6911, e.DiagnosticCategory.Message, "Computed_from_the_list_of_input_files_6911", "Computed from the list of input files"), Platform_specific: a(6912, e.DiagnosticCategory.Message, "Platform_specific_6912", "Platform specific"), You_can_learn_about_all_of_the_compiler_options_at_0: a(6913, e.DiagnosticCategory.Message, "You_can_learn_about_all_of_the_compiler_options_at_0_6913", "You can learn about all of the compiler options at {0}"), Including_watch_w_will_start_watching_the_current_project_for_the_file_changes_Once_set_you_can_config_watch_mode_with_Colon: a(6914, e.DiagnosticCategory.Message, "Including_watch_w_will_start_watching_the_current_project_for_the_file_changes_Once_set_you_can_conf_6914", "Including --watch, -w will start watching the current project for the file changes. Once set, you can config watch mode with:"), Using_build_b_will_make_tsc_behave_more_like_a_build_orchestrator_than_a_compiler_This_is_used_to_trigger_building_composite_projects_which_you_can_learn_more_about_at_0: a(6915, e.DiagnosticCategory.Message, "Using_build_b_will_make_tsc_behave_more_like_a_build_orchestrator_than_a_compiler_This_is_used_to_tr_6915", "Using --build, -b will make tsc behave more like a build orchestrator than a compiler. This is used to trigger building composite projects which you can learn more about at {0}"), COMMON_COMMANDS: a(6916, e.DiagnosticCategory.Message, "COMMON_COMMANDS_6916", "COMMON COMMANDS"), ALL_COMPILER_OPTIONS: a(6917, e.DiagnosticCategory.Message, "ALL_COMPILER_OPTIONS_6917", "ALL COMPILER OPTIONS"), WATCH_OPTIONS: a(6918, e.DiagnosticCategory.Message, "WATCH_OPTIONS_6918", "WATCH OPTIONS"), BUILD_OPTIONS: a(6919, e.DiagnosticCategory.Message, "BUILD_OPTIONS_6919", "BUILD OPTIONS"), COMMON_COMPILER_OPTIONS: a(6920, e.DiagnosticCategory.Message, "COMMON_COMPILER_OPTIONS_6920", "COMMON COMPILER OPTIONS"), COMMAND_LINE_FLAGS: a(6921, e.DiagnosticCategory.Message, "COMMAND_LINE_FLAGS_6921", "COMMAND LINE FLAGS"), tsc_Colon_The_TypeScript_Compiler: a(6922, e.DiagnosticCategory.Message, "tsc_Colon_The_TypeScript_Compiler_6922", "tsc: The TypeScript Compiler"), Compiles_the_current_project_tsconfig_json_in_the_working_directory: a(6923, e.DiagnosticCategory.Message, "Compiles_the_current_project_tsconfig_json_in_the_working_directory_6923", "Compiles the current project (tsconfig.json in the working directory.)"), Ignoring_tsconfig_json_compiles_the_specified_files_with_default_compiler_options: a(6924, e.DiagnosticCategory.Message, "Ignoring_tsconfig_json_compiles_the_specified_files_with_default_compiler_options_6924", "Ignoring tsconfig.json, compiles the specified files with default compiler options."), Build_a_composite_project_in_the_working_directory: a(6925, e.DiagnosticCategory.Message, "Build_a_composite_project_in_the_working_directory_6925", "Build a composite project in the working directory."), Creates_a_tsconfig_json_with_the_recommended_settings_in_the_working_directory: a(6926, e.DiagnosticCategory.Message, "Creates_a_tsconfig_json_with_the_recommended_settings_in_the_working_directory_6926", "Creates a tsconfig.json with the recommended settings in the working directory."), Compiles_the_TypeScript_project_located_at_the_specified_path: a(6927, e.DiagnosticCategory.Message, "Compiles_the_TypeScript_project_located_at_the_specified_path_6927", "Compiles the TypeScript project located at the specified path."), An_expanded_version_of_this_information_showing_all_possible_compiler_options: a(6928, e.DiagnosticCategory.Message, "An_expanded_version_of_this_information_showing_all_possible_compiler_options_6928", "An expanded version of this information, showing all possible compiler options"), Compiles_the_current_project_with_additional_settings: a(6929, e.DiagnosticCategory.Message, "Compiles_the_current_project_with_additional_settings_6929", "Compiles the current project, with additional settings."), true_for_ES2022_and_above_including_ESNext: a(6930, e.DiagnosticCategory.Message, "true_for_ES2022_and_above_including_ESNext_6930", "`true` for ES2022 and above, including ESNext."), List_of_file_name_suffixes_to_search_when_resolving_a_module: a(6931, e.DiagnosticCategory.Error, "List_of_file_name_suffixes_to_search_when_resolving_a_module_6931", "List of file name suffixes to search when resolving a module."), Variable_0_implicitly_has_an_1_type: a(7005, e.DiagnosticCategory.Error, "Variable_0_implicitly_has_an_1_type_7005", "Variable '{0}' implicitly has an '{1}' type."), Parameter_0_implicitly_has_an_1_type: a(7006, e.DiagnosticCategory.Error, "Parameter_0_implicitly_has_an_1_type_7006", "Parameter '{0}' implicitly has an '{1}' type."), Member_0_implicitly_has_an_1_type: a(7008, e.DiagnosticCategory.Error, "Member_0_implicitly_has_an_1_type_7008", "Member '{0}' implicitly has an '{1}' type."), new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type: a(7009, e.DiagnosticCategory.Error, "new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type_7009", "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type."), _0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type: a(7010, e.DiagnosticCategory.Error, "_0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type_7010", "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type."), Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: a(7011, e.DiagnosticCategory.Error, "Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type_7011", "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type."), Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: a(7013, e.DiagnosticCategory.Error, "Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7013", "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type."), Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type: a(7014, e.DiagnosticCategory.Error, "Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type_7014", "Function type, which lacks return-type annotation, implicitly has an '{0}' return type."), Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number: a(7015, e.DiagnosticCategory.Error, "Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number_7015", "Element implicitly has an 'any' type because index expression is not of type 'number'."), Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type: a(7016, e.DiagnosticCategory.Error, "Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016", "Could not find a declaration file for module '{0}'. '{1}' implicitly has an 'any' type."), Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature: a(7017, e.DiagnosticCategory.Error, "Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_7017", "Element implicitly has an 'any' type because type '{0}' has no index signature."), Object_literal_s_property_0_implicitly_has_an_1_type: a(7018, e.DiagnosticCategory.Error, "Object_literal_s_property_0_implicitly_has_an_1_type_7018", "Object literal's property '{0}' implicitly has an '{1}' type."), Rest_parameter_0_implicitly_has_an_any_type: a(7019, e.DiagnosticCategory.Error, "Rest_parameter_0_implicitly_has_an_any_type_7019", "Rest parameter '{0}' implicitly has an 'any[]' type."), Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type: a(7020, e.DiagnosticCategory.Error, "Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7020", "Call signature, which lacks return-type annotation, implicitly has an 'any' return type."), _0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: a(7022, e.DiagnosticCategory.Error, "_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or__7022", "'{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer."), _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: a(7023, e.DiagnosticCategory.Error, "_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_reference_7023", "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."), Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: a(7024, e.DiagnosticCategory.Error, "Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_ref_7024", "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."), Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation: a(7025, e.DiagnosticCategory.Error, "Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_retu_7025", "Generator implicitly has yield type '{0}' because it does not yield any values. Consider supplying a return type annotation."), JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists: a(7026, e.DiagnosticCategory.Error, "JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026", "JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists."), Unreachable_code_detected: a(7027, e.DiagnosticCategory.Error, "Unreachable_code_detected_7027", "Unreachable code detected.", true), Unused_label: a(7028, e.DiagnosticCategory.Error, "Unused_label_7028", "Unused label.", true), Fallthrough_case_in_switch: a(7029, e.DiagnosticCategory.Error, "Fallthrough_case_in_switch_7029", "Fallthrough case in switch."), Not_all_code_paths_return_a_value: a(7030, e.DiagnosticCategory.Error, "Not_all_code_paths_return_a_value_7030", "Not all code paths return a value."), Binding_element_0_implicitly_has_an_1_type: a(7031, e.DiagnosticCategory.Error, "Binding_element_0_implicitly_has_an_1_type_7031", "Binding element '{0}' implicitly has an '{1}' type."), Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation: a(7032, e.DiagnosticCategory.Error, "Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation_7032", "Property '{0}' implicitly has type 'any', because its set accessor lacks a parameter type annotation."), Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation: a(7033, e.DiagnosticCategory.Error, "Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation_7033", "Property '{0}' implicitly has type 'any', because its get accessor lacks a return type annotation."), Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined: a(7034, e.DiagnosticCategory.Error, "Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined_7034", "Variable '{0}' implicitly has type '{1}' in some locations where its type cannot be determined."), Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0: a(7035, e.DiagnosticCategory.Error, "Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare__7035", "Try `npm i --save-dev @types/{1}` if it exists or add a new declaration (.d.ts) file containing `declare module '{0}';`"), Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0: a(7036, e.DiagnosticCategory.Error, "Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0_7036", "Dynamic import's specifier must be of type 'string', but here has type '{0}'."), Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for_all_imports_Implies_allowSyntheticDefaultImports: a(7037, e.DiagnosticCategory.Message, "Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for__7037", "Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'."), Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead: a(7038, e.DiagnosticCategory.Message, "Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cau_7038", "Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead."), Mapped_object_type_implicitly_has_an_any_template_type: a(7039, e.DiagnosticCategory.Error, "Mapped_object_type_implicitly_has_an_any_template_type_7039", "Mapped object type implicitly has an 'any' template type."), If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1: a(7040, e.DiagnosticCategory.Error, "If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_S_7040", "If the '{0}' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/{1}'"), The_containing_arrow_function_captures_the_global_value_of_this: a(7041, e.DiagnosticCategory.Error, "The_containing_arrow_function_captures_the_global_value_of_this_7041", "The containing arrow function captures the global value of 'this'."), Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used: a(7042, e.DiagnosticCategory.Error, "Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used_7042", "Module '{0}' was resolved to '{1}', but '--resolveJsonModule' is not used."), Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage: a(7043, e.DiagnosticCategory.Suggestion, "Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7043", "Variable '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage."), Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage: a(7044, e.DiagnosticCategory.Suggestion, "Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7044", "Parameter '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage."), Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage: a(7045, e.DiagnosticCategory.Suggestion, "Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7045", "Member '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage."), Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage: a(7046, e.DiagnosticCategory.Suggestion, "Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage_7046", "Variable '{0}' implicitly has type '{1}' in some locations, but a better type may be inferred from usage."), Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage: a(7047, e.DiagnosticCategory.Suggestion, "Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage_7047", "Rest parameter '{0}' implicitly has an 'any[]' type, but a better type may be inferred from usage."), Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage: a(7048, e.DiagnosticCategory.Suggestion, "Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage_7048", "Property '{0}' implicitly has type 'any', but a better type for its get accessor may be inferred from usage."), Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage: a(7049, e.DiagnosticCategory.Suggestion, "Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage_7049", "Property '{0}' implicitly has type 'any', but a better type for its set accessor may be inferred from usage."), _0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage: a(7050, e.DiagnosticCategory.Suggestion, "_0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage_7050", "'{0}' implicitly has an '{1}' return type, but a better type may be inferred from usage."), Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1: a(7051, e.DiagnosticCategory.Error, "Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1_7051", "Parameter has a name but no type. Did you mean '{0}: {1}'?"), Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1: a(7052, e.DiagnosticCategory.Error, "Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1_7052", "Element implicitly has an 'any' type because type '{0}' has no index signature. Did you mean to call '{1}'?"), Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1: a(7053, e.DiagnosticCategory.Error, "Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1_7053", "Element implicitly has an 'any' type because expression of type '{0}' can't be used to index type '{1}'."), No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1: a(7054, e.DiagnosticCategory.Error, "No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1_7054", "No index signature with a parameter of type '{0}' was found on type '{1}'."), _0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type: a(7055, e.DiagnosticCategory.Error, "_0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type_7055", "'{0}', which lacks return-type annotation, implicitly has an '{1}' yield type."), The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed: a(7056, e.DiagnosticCategory.Error, "The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_ty_7056", "The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed."), yield_expression_implicitly_results_in_an_any_type_because_its_containing_generator_lacks_a_return_type_annotation: a(7057, e.DiagnosticCategory.Error, "yield_expression_implicitly_results_in_an_any_type_because_its_containing_generator_lacks_a_return_t_7057", "'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation."), If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1: a(7058, e.DiagnosticCategory.Error, "If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_decl_7058", "If the '{0}' package actually exposes this module, try adding a new declaration (.d.ts) file containing `declare module '{1}';`"), This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Use_an_as_expression_instead: a(7059, e.DiagnosticCategory.Error, "This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Use_an_as_expression_instead_7059", "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead."), This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Add_a_trailing_comma_or_explicit_constraint: a(7060, e.DiagnosticCategory.Error, "This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Add_a_trailing_comma_or_explicit_cons_7060", "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma or explicit constraint."), A_mapped_type_may_not_declare_properties_or_methods: a(7061, e.DiagnosticCategory.Error, "A_mapped_type_may_not_declare_properties_or_methods_7061", "A mapped type may not declare properties or methods."), You_cannot_rename_this_element: a(8e3, e.DiagnosticCategory.Error, "You_cannot_rename_this_element_8000", "You cannot rename this element."), You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: a(8001, e.DiagnosticCategory.Error, "You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001", "You cannot rename elements that are defined in the standard TypeScript library."), import_can_only_be_used_in_TypeScript_files: a(8002, e.DiagnosticCategory.Error, "import_can_only_be_used_in_TypeScript_files_8002", "'import ... =' can only be used in TypeScript files."), export_can_only_be_used_in_TypeScript_files: a(8003, e.DiagnosticCategory.Error, "export_can_only_be_used_in_TypeScript_files_8003", "'export =' can only be used in TypeScript files."), Type_parameter_declarations_can_only_be_used_in_TypeScript_files: a(8004, e.DiagnosticCategory.Error, "Type_parameter_declarations_can_only_be_used_in_TypeScript_files_8004", "Type parameter declarations can only be used in TypeScript files."), implements_clauses_can_only_be_used_in_TypeScript_files: a(8005, e.DiagnosticCategory.Error, "implements_clauses_can_only_be_used_in_TypeScript_files_8005", "'implements' clauses can only be used in TypeScript files."), _0_declarations_can_only_be_used_in_TypeScript_files: a(8006, e.DiagnosticCategory.Error, "_0_declarations_can_only_be_used_in_TypeScript_files_8006", "'{0}' declarations can only be used in TypeScript files."), Type_aliases_can_only_be_used_in_TypeScript_files: a(8008, e.DiagnosticCategory.Error, "Type_aliases_can_only_be_used_in_TypeScript_files_8008", "Type aliases can only be used in TypeScript files."), The_0_modifier_can_only_be_used_in_TypeScript_files: a(8009, e.DiagnosticCategory.Error, "The_0_modifier_can_only_be_used_in_TypeScript_files_8009", "The '{0}' modifier can only be used in TypeScript files."), Type_annotations_can_only_be_used_in_TypeScript_files: a(8010, e.DiagnosticCategory.Error, "Type_annotations_can_only_be_used_in_TypeScript_files_8010", "Type annotations can only be used in TypeScript files."), Type_arguments_can_only_be_used_in_TypeScript_files: a(8011, e.DiagnosticCategory.Error, "Type_arguments_can_only_be_used_in_TypeScript_files_8011", "Type arguments can only be used in TypeScript files."), Parameter_modifiers_can_only_be_used_in_TypeScript_files: a(8012, e.DiagnosticCategory.Error, "Parameter_modifiers_can_only_be_used_in_TypeScript_files_8012", "Parameter modifiers can only be used in TypeScript files."), Non_null_assertions_can_only_be_used_in_TypeScript_files: a(8013, e.DiagnosticCategory.Error, "Non_null_assertions_can_only_be_used_in_TypeScript_files_8013", "Non-null assertions can only be used in TypeScript files."), Type_assertion_expressions_can_only_be_used_in_TypeScript_files: a(8016, e.DiagnosticCategory.Error, "Type_assertion_expressions_can_only_be_used_in_TypeScript_files_8016", "Type assertion expressions can only be used in TypeScript files."), Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0: a(8017, e.DiagnosticCategory.Error, "Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0_8017", "Octal literal types must use ES2015 syntax. Use the syntax '{0}'."), Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0: a(8018, e.DiagnosticCategory.Error, "Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0_8018", "Octal literals are not allowed in enums members initializer. Use the syntax '{0}'."), Report_errors_in_js_files: a(8019, e.DiagnosticCategory.Message, "Report_errors_in_js_files_8019", "Report errors in .js files."), JSDoc_types_can_only_be_used_inside_documentation_comments: a(8020, e.DiagnosticCategory.Error, "JSDoc_types_can_only_be_used_inside_documentation_comments_8020", "JSDoc types can only be used inside documentation comments."), JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags: a(8021, e.DiagnosticCategory.Error, "JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags_8021", "JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags."), JSDoc_0_is_not_attached_to_a_class: a(8022, e.DiagnosticCategory.Error, "JSDoc_0_is_not_attached_to_a_class_8022", "JSDoc '@{0}' is not attached to a class."), JSDoc_0_1_does_not_match_the_extends_2_clause: a(8023, e.DiagnosticCategory.Error, "JSDoc_0_1_does_not_match_the_extends_2_clause_8023", "JSDoc '@{0} {1}' does not match the 'extends {2}' clause."), JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name: a(8024, e.DiagnosticCategory.Error, "JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_8024", "JSDoc '@param' tag has name '{0}', but there is no parameter with that name."), Class_declarations_cannot_have_more_than_one_augments_or_extends_tag: a(8025, e.DiagnosticCategory.Error, "Class_declarations_cannot_have_more_than_one_augments_or_extends_tag_8025", "Class declarations cannot have more than one '@augments' or '@extends' tag."), Expected_0_type_arguments_provide_these_with_an_extends_tag: a(8026, e.DiagnosticCategory.Error, "Expected_0_type_arguments_provide_these_with_an_extends_tag_8026", "Expected {0} type arguments; provide these with an '@extends' tag."), Expected_0_1_type_arguments_provide_these_with_an_extends_tag: a(8027, e.DiagnosticCategory.Error, "Expected_0_1_type_arguments_provide_these_with_an_extends_tag_8027", "Expected {0}-{1} type arguments; provide these with an '@extends' tag."), JSDoc_may_only_appear_in_the_last_parameter_of_a_signature: a(8028, e.DiagnosticCategory.Error, "JSDoc_may_only_appear_in_the_last_parameter_of_a_signature_8028", "JSDoc '...' may only appear in the last parameter of a signature."), JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type: a(8029, e.DiagnosticCategory.Error, "JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_h_8029", "JSDoc '@param' tag has name '{0}', but there is no parameter with that name. It would match 'arguments' if it had an array type."), The_type_of_a_function_declaration_must_match_the_function_s_signature: a(8030, e.DiagnosticCategory.Error, "The_type_of_a_function_declaration_must_match_the_function_s_signature_8030", "The type of a function declaration must match the function's signature."), You_cannot_rename_a_module_via_a_global_import: a(8031, e.DiagnosticCategory.Error, "You_cannot_rename_a_module_via_a_global_import_8031", "You cannot rename a module via a global import."), Qualified_name_0_is_not_allowed_without_a_leading_param_object_1: a(8032, e.DiagnosticCategory.Error, "Qualified_name_0_is_not_allowed_without_a_leading_param_object_1_8032", "Qualified name '{0}' is not allowed without a leading '@param {object} {1}'."), A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags: a(8033, e.DiagnosticCategory.Error, "A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags_8033", "A JSDoc '@typedef' comment may not contain multiple '@type' tags."), The_tag_was_first_specified_here: a(8034, e.DiagnosticCategory.Error, "The_tag_was_first_specified_here_8034", "The tag was first specified here."), Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit: a(9005, e.DiagnosticCategory.Error, "Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005", "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit."), Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit: a(9006, e.DiagnosticCategory.Error, "Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006", "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."), JSX_attributes_must_only_be_assigned_a_non_empty_expression: a(17e3, e.DiagnosticCategory.Error, "JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000", "JSX attributes must only be assigned a non-empty 'expression'."), JSX_elements_cannot_have_multiple_attributes_with_the_same_name: a(17001, e.DiagnosticCategory.Error, "JSX_elements_cannot_have_multiple_attributes_with_the_same_name_17001", "JSX elements cannot have multiple attributes with the same name."), Expected_corresponding_JSX_closing_tag_for_0: a(17002, e.DiagnosticCategory.Error, "Expected_corresponding_JSX_closing_tag_for_0_17002", "Expected corresponding JSX closing tag for '{0}'."), Cannot_use_JSX_unless_the_jsx_flag_is_provided: a(17004, e.DiagnosticCategory.Error, "Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004", "Cannot use JSX unless the '--jsx' flag is provided."), A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: a(17005, e.DiagnosticCategory.Error, "A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005", "A constructor cannot contain a 'super' call when its class extends 'null'."), An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: a(17006, e.DiagnosticCategory.Error, "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses."), A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: a(17007, e.DiagnosticCategory.Error, "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses."), JSX_element_0_has_no_corresponding_closing_tag: a(17008, e.DiagnosticCategory.Error, "JSX_element_0_has_no_corresponding_closing_tag_17008", "JSX element '{0}' has no corresponding closing tag."), super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class: a(17009, e.DiagnosticCategory.Error, "super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009", "'super' must be called before accessing 'this' in the constructor of a derived class."), Unknown_type_acquisition_option_0: a(17010, e.DiagnosticCategory.Error, "Unknown_type_acquisition_option_0_17010", "Unknown type acquisition option '{0}'."), super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class: a(17011, e.DiagnosticCategory.Error, "super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class_17011", "'super' must be called before accessing a property of 'super' in the constructor of a derived class."), _0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2: a(17012, e.DiagnosticCategory.Error, "_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012", "'{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?"), Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor: a(17013, e.DiagnosticCategory.Error, "Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constru_17013", "Meta-property '{0}' is only allowed in the body of a function declaration, function expression, or constructor."), JSX_fragment_has_no_corresponding_closing_tag: a(17014, e.DiagnosticCategory.Error, "JSX_fragment_has_no_corresponding_closing_tag_17014", "JSX fragment has no corresponding closing tag."), Expected_corresponding_closing_tag_for_JSX_fragment: a(17015, e.DiagnosticCategory.Error, "Expected_corresponding_closing_tag_for_JSX_fragment_17015", "Expected corresponding closing tag for JSX fragment."), The_jsxFragmentFactory_compiler_option_must_be_provided_to_use_JSX_fragments_with_the_jsxFactory_compiler_option: a(17016, e.DiagnosticCategory.Error, "The_jsxFragmentFactory_compiler_option_must_be_provided_to_use_JSX_fragments_with_the_jsxFactory_com_17016", "The 'jsxFragmentFactory' compiler option must be provided to use JSX fragments with the 'jsxFactory' compiler option."), An_jsxFrag_pragma_is_required_when_using_an_jsx_pragma_with_JSX_fragments: a(17017, e.DiagnosticCategory.Error, "An_jsxFrag_pragma_is_required_when_using_an_jsx_pragma_with_JSX_fragments_17017", "An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments."), Unknown_type_acquisition_option_0_Did_you_mean_1: a(17018, e.DiagnosticCategory.Error, "Unknown_type_acquisition_option_0_Did_you_mean_1_17018", "Unknown type acquisition option '{0}'. Did you mean '{1}'?"), Circularity_detected_while_resolving_configuration_Colon_0: a(18e3, e.DiagnosticCategory.Error, "Circularity_detected_while_resolving_configuration_Colon_0_18000", "Circularity detected while resolving configuration: {0}"), The_files_list_in_config_file_0_is_empty: a(18002, e.DiagnosticCategory.Error, "The_files_list_in_config_file_0_is_empty_18002", "The 'files' list in config file '{0}' is empty."), No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2: a(18003, e.DiagnosticCategory.Error, "No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2_18003", "No inputs were found in config file '{0}'. Specified 'include' paths were '{1}' and 'exclude' paths were '{2}'."), File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module: a(80001, e.DiagnosticCategory.Suggestion, "File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module_80001", "File is a CommonJS module; it may be converted to an ES module."), This_constructor_function_may_be_converted_to_a_class_declaration: a(80002, e.DiagnosticCategory.Suggestion, "This_constructor_function_may_be_converted_to_a_class_declaration_80002", "This constructor function may be converted to a class declaration."), Import_may_be_converted_to_a_default_import: a(80003, e.DiagnosticCategory.Suggestion, "Import_may_be_converted_to_a_default_import_80003", "Import may be converted to a default import."), JSDoc_types_may_be_moved_to_TypeScript_types: a(80004, e.DiagnosticCategory.Suggestion, "JSDoc_types_may_be_moved_to_TypeScript_types_80004", "JSDoc types may be moved to TypeScript types."), require_call_may_be_converted_to_an_import: a(80005, e.DiagnosticCategory.Suggestion, "require_call_may_be_converted_to_an_import_80005", "'require' call may be converted to an import."), This_may_be_converted_to_an_async_function: a(80006, e.DiagnosticCategory.Suggestion, "This_may_be_converted_to_an_async_function_80006", "This may be converted to an async function."), await_has_no_effect_on_the_type_of_this_expression: a(80007, e.DiagnosticCategory.Suggestion, "await_has_no_effect_on_the_type_of_this_expression_80007", "'await' has no effect on the type of this expression."), Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers: a(80008, e.DiagnosticCategory.Suggestion, "Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accur_80008", "Numeric literals with absolute values equal to 2^53 or greater are too large to be represented accurately as integers."), Add_missing_super_call: a(90001, e.DiagnosticCategory.Message, "Add_missing_super_call_90001", "Add missing 'super()' call"), Make_super_call_the_first_statement_in_the_constructor: a(90002, e.DiagnosticCategory.Message, "Make_super_call_the_first_statement_in_the_constructor_90002", "Make 'super()' call the first statement in the constructor"), Change_extends_to_implements: a(90003, e.DiagnosticCategory.Message, "Change_extends_to_implements_90003", "Change 'extends' to 'implements'"), Remove_unused_declaration_for_Colon_0: a(90004, e.DiagnosticCategory.Message, "Remove_unused_declaration_for_Colon_0_90004", "Remove unused declaration for: '{0}'"), Remove_import_from_0: a(90005, e.DiagnosticCategory.Message, "Remove_import_from_0_90005", "Remove import from '{0}'"), Implement_interface_0: a(90006, e.DiagnosticCategory.Message, "Implement_interface_0_90006", "Implement interface '{0}'"), Implement_inherited_abstract_class: a(90007, e.DiagnosticCategory.Message, "Implement_inherited_abstract_class_90007", "Implement inherited abstract class"), Add_0_to_unresolved_variable: a(90008, e.DiagnosticCategory.Message, "Add_0_to_unresolved_variable_90008", "Add '{0}.' to unresolved variable"), Remove_variable_statement: a(90010, e.DiagnosticCategory.Message, "Remove_variable_statement_90010", "Remove variable statement"), Remove_template_tag: a(90011, e.DiagnosticCategory.Message, "Remove_template_tag_90011", "Remove template tag"), Remove_type_parameters: a(90012, e.DiagnosticCategory.Message, "Remove_type_parameters_90012", "Remove type parameters"), Import_0_from_1: a(90013, e.DiagnosticCategory.Message, "Import_0_from_1_90013", `Import '{0}' from "{1}"`), Change_0_to_1: a(90014, e.DiagnosticCategory.Message, "Change_0_to_1_90014", "Change '{0}' to '{1}'"), Declare_property_0: a(90016, e.DiagnosticCategory.Message, "Declare_property_0_90016", "Declare property '{0}'"), Add_index_signature_for_property_0: a(90017, e.DiagnosticCategory.Message, "Add_index_signature_for_property_0_90017", "Add index signature for property '{0}'"), Disable_checking_for_this_file: a(90018, e.DiagnosticCategory.Message, "Disable_checking_for_this_file_90018", "Disable checking for this file"), Ignore_this_error_message: a(90019, e.DiagnosticCategory.Message, "Ignore_this_error_message_90019", "Ignore this error message"), Initialize_property_0_in_the_constructor: a(90020, e.DiagnosticCategory.Message, "Initialize_property_0_in_the_constructor_90020", "Initialize property '{0}' in the constructor"), Initialize_static_property_0: a(90021, e.DiagnosticCategory.Message, "Initialize_static_property_0_90021", "Initialize static property '{0}'"), Change_spelling_to_0: a(90022, e.DiagnosticCategory.Message, "Change_spelling_to_0_90022", "Change spelling to '{0}'"), Declare_method_0: a(90023, e.DiagnosticCategory.Message, "Declare_method_0_90023", "Declare method '{0}'"), Declare_static_method_0: a(90024, e.DiagnosticCategory.Message, "Declare_static_method_0_90024", "Declare static method '{0}'"), Prefix_0_with_an_underscore: a(90025, e.DiagnosticCategory.Message, "Prefix_0_with_an_underscore_90025", "Prefix '{0}' with an underscore"), Rewrite_as_the_indexed_access_type_0: a(90026, e.DiagnosticCategory.Message, "Rewrite_as_the_indexed_access_type_0_90026", "Rewrite as the indexed access type '{0}'"), Declare_static_property_0: a(90027, e.DiagnosticCategory.Message, "Declare_static_property_0_90027", "Declare static property '{0}'"), Call_decorator_expression: a(90028, e.DiagnosticCategory.Message, "Call_decorator_expression_90028", "Call decorator expression"), Add_async_modifier_to_containing_function: a(90029, e.DiagnosticCategory.Message, "Add_async_modifier_to_containing_function_90029", "Add async modifier to containing function"), Replace_infer_0_with_unknown: a(90030, e.DiagnosticCategory.Message, "Replace_infer_0_with_unknown_90030", "Replace 'infer {0}' with 'unknown'"), Replace_all_unused_infer_with_unknown: a(90031, e.DiagnosticCategory.Message, "Replace_all_unused_infer_with_unknown_90031", "Replace all unused 'infer' with 'unknown'"), Add_parameter_name: a(90034, e.DiagnosticCategory.Message, "Add_parameter_name_90034", "Add parameter name"), Declare_private_property_0: a(90035, e.DiagnosticCategory.Message, "Declare_private_property_0_90035", "Declare private property '{0}'"), Replace_0_with_Promise_1: a(90036, e.DiagnosticCategory.Message, "Replace_0_with_Promise_1_90036", "Replace '{0}' with 'Promise<{1}>'"), Fix_all_incorrect_return_type_of_an_async_functions: a(90037, e.DiagnosticCategory.Message, "Fix_all_incorrect_return_type_of_an_async_functions_90037", "Fix all incorrect return type of an async functions"), Declare_private_method_0: a(90038, e.DiagnosticCategory.Message, "Declare_private_method_0_90038", "Declare private method '{0}'"), Remove_unused_destructuring_declaration: a(90039, e.DiagnosticCategory.Message, "Remove_unused_destructuring_declaration_90039", "Remove unused destructuring declaration"), Remove_unused_declarations_for_Colon_0: a(90041, e.DiagnosticCategory.Message, "Remove_unused_declarations_for_Colon_0_90041", "Remove unused declarations for: '{0}'"), Declare_a_private_field_named_0: a(90053, e.DiagnosticCategory.Message, "Declare_a_private_field_named_0_90053", "Declare a private field named '{0}'."), Includes_imports_of_types_referenced_by_0: a(90054, e.DiagnosticCategory.Message, "Includes_imports_of_types_referenced_by_0_90054", "Includes imports of types referenced by '{0}'"), Remove_type_from_import_declaration_from_0: a(90055, e.DiagnosticCategory.Message, "Remove_type_from_import_declaration_from_0_90055", `Remove 'type' from import declaration from "{0}"`), Remove_type_from_import_of_0_from_1: a(90056, e.DiagnosticCategory.Message, "Remove_type_from_import_of_0_from_1_90056", `Remove 'type' from import of '{0}' from "{1}"`), Add_import_from_0: a(90057, e.DiagnosticCategory.Message, "Add_import_from_0_90057", 'Add import from "{0}"'), Update_import_from_0: a(90058, e.DiagnosticCategory.Message, "Update_import_from_0_90058", 'Update import from "{0}"'), Convert_function_to_an_ES2015_class: a(95001, e.DiagnosticCategory.Message, "Convert_function_to_an_ES2015_class_95001", "Convert function to an ES2015 class"), Convert_0_to_1_in_0: a(95003, e.DiagnosticCategory.Message, "Convert_0_to_1_in_0_95003", "Convert '{0}' to '{1} in {0}'"), Extract_to_0_in_1: a(95004, e.DiagnosticCategory.Message, "Extract_to_0_in_1_95004", "Extract to {0} in {1}"), Extract_function: a(95005, e.DiagnosticCategory.Message, "Extract_function_95005", "Extract function"), Extract_constant: a(95006, e.DiagnosticCategory.Message, "Extract_constant_95006", "Extract constant"), Extract_to_0_in_enclosing_scope: a(95007, e.DiagnosticCategory.Message, "Extract_to_0_in_enclosing_scope_95007", "Extract to {0} in enclosing scope"), Extract_to_0_in_1_scope: a(95008, e.DiagnosticCategory.Message, "Extract_to_0_in_1_scope_95008", "Extract to {0} in {1} scope"), Annotate_with_type_from_JSDoc: a(95009, e.DiagnosticCategory.Message, "Annotate_with_type_from_JSDoc_95009", "Annotate with type from JSDoc"), Infer_type_of_0_from_usage: a(95011, e.DiagnosticCategory.Message, "Infer_type_of_0_from_usage_95011", "Infer type of '{0}' from usage"), Infer_parameter_types_from_usage: a(95012, e.DiagnosticCategory.Message, "Infer_parameter_types_from_usage_95012", "Infer parameter types from usage"), Convert_to_default_import: a(95013, e.DiagnosticCategory.Message, "Convert_to_default_import_95013", "Convert to default import"), Install_0: a(95014, e.DiagnosticCategory.Message, "Install_0_95014", "Install '{0}'"), Replace_import_with_0: a(95015, e.DiagnosticCategory.Message, "Replace_import_with_0_95015", "Replace import with '{0}'."), Use_synthetic_default_member: a(95016, e.DiagnosticCategory.Message, "Use_synthetic_default_member_95016", "Use synthetic 'default' member."), Convert_to_ES_module: a(95017, e.DiagnosticCategory.Message, "Convert_to_ES_module_95017", "Convert to ES module"), Add_undefined_type_to_property_0: a(95018, e.DiagnosticCategory.Message, "Add_undefined_type_to_property_0_95018", "Add 'undefined' type to property '{0}'"), Add_initializer_to_property_0: a(95019, e.DiagnosticCategory.Message, "Add_initializer_to_property_0_95019", "Add initializer to property '{0}'"), Add_definite_assignment_assertion_to_property_0: a(95020, e.DiagnosticCategory.Message, "Add_definite_assignment_assertion_to_property_0_95020", "Add definite assignment assertion to property '{0}'"), Convert_all_type_literals_to_mapped_type: a(95021, e.DiagnosticCategory.Message, "Convert_all_type_literals_to_mapped_type_95021", "Convert all type literals to mapped type"), Add_all_missing_members: a(95022, e.DiagnosticCategory.Message, "Add_all_missing_members_95022", "Add all missing members"), Infer_all_types_from_usage: a(95023, e.DiagnosticCategory.Message, "Infer_all_types_from_usage_95023", "Infer all types from usage"), Delete_all_unused_declarations: a(95024, e.DiagnosticCategory.Message, "Delete_all_unused_declarations_95024", "Delete all unused declarations"), Prefix_all_unused_declarations_with_where_possible: a(95025, e.DiagnosticCategory.Message, "Prefix_all_unused_declarations_with_where_possible_95025", "Prefix all unused declarations with '_' where possible"), Fix_all_detected_spelling_errors: a(95026, e.DiagnosticCategory.Message, "Fix_all_detected_spelling_errors_95026", "Fix all detected spelling errors"), Add_initializers_to_all_uninitialized_properties: a(95027, e.DiagnosticCategory.Message, "Add_initializers_to_all_uninitialized_properties_95027", "Add initializers to all uninitialized properties"), Add_definite_assignment_assertions_to_all_uninitialized_properties: a(95028, e.DiagnosticCategory.Message, "Add_definite_assignment_assertions_to_all_uninitialized_properties_95028", "Add definite assignment assertions to all uninitialized properties"), Add_undefined_type_to_all_uninitialized_properties: a(95029, e.DiagnosticCategory.Message, "Add_undefined_type_to_all_uninitialized_properties_95029", "Add undefined type to all uninitialized properties"), Change_all_jsdoc_style_types_to_TypeScript: a(95030, e.DiagnosticCategory.Message, "Change_all_jsdoc_style_types_to_TypeScript_95030", "Change all jsdoc-style types to TypeScript"), Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types: a(95031, e.DiagnosticCategory.Message, "Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types_95031", "Change all jsdoc-style types to TypeScript (and add '| undefined' to nullable types)"), Implement_all_unimplemented_interfaces: a(95032, e.DiagnosticCategory.Message, "Implement_all_unimplemented_interfaces_95032", "Implement all unimplemented interfaces"), Install_all_missing_types_packages: a(95033, e.DiagnosticCategory.Message, "Install_all_missing_types_packages_95033", "Install all missing types packages"), Rewrite_all_as_indexed_access_types: a(95034, e.DiagnosticCategory.Message, "Rewrite_all_as_indexed_access_types_95034", "Rewrite all as indexed access types"), Convert_all_to_default_imports: a(95035, e.DiagnosticCategory.Message, "Convert_all_to_default_imports_95035", "Convert all to default imports"), Make_all_super_calls_the_first_statement_in_their_constructor: a(95036, e.DiagnosticCategory.Message, "Make_all_super_calls_the_first_statement_in_their_constructor_95036", "Make all 'super()' calls the first statement in their constructor"), Add_qualifier_to_all_unresolved_variables_matching_a_member_name: a(95037, e.DiagnosticCategory.Message, "Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037", "Add qualifier to all unresolved variables matching a member name"), Change_all_extended_interfaces_to_implements: a(95038, e.DiagnosticCategory.Message, "Change_all_extended_interfaces_to_implements_95038", "Change all extended interfaces to 'implements'"), Add_all_missing_super_calls: a(95039, e.DiagnosticCategory.Message, "Add_all_missing_super_calls_95039", "Add all missing super calls"), Implement_all_inherited_abstract_classes: a(95040, e.DiagnosticCategory.Message, "Implement_all_inherited_abstract_classes_95040", "Implement all inherited abstract classes"), Add_all_missing_async_modifiers: a(95041, e.DiagnosticCategory.Message, "Add_all_missing_async_modifiers_95041", "Add all missing 'async' modifiers"), Add_ts_ignore_to_all_error_messages: a(95042, e.DiagnosticCategory.Message, "Add_ts_ignore_to_all_error_messages_95042", "Add '@ts-ignore' to all error messages"), Annotate_everything_with_types_from_JSDoc: a(95043, e.DiagnosticCategory.Message, "Annotate_everything_with_types_from_JSDoc_95043", "Annotate everything with types from JSDoc"), Add_to_all_uncalled_decorators: a(95044, e.DiagnosticCategory.Message, "Add_to_all_uncalled_decorators_95044", "Add '()' to all uncalled decorators"), Convert_all_constructor_functions_to_classes: a(95045, e.DiagnosticCategory.Message, "Convert_all_constructor_functions_to_classes_95045", "Convert all constructor functions to classes"), Generate_get_and_set_accessors: a(95046, e.DiagnosticCategory.Message, "Generate_get_and_set_accessors_95046", "Generate 'get' and 'set' accessors"), Convert_require_to_import: a(95047, e.DiagnosticCategory.Message, "Convert_require_to_import_95047", "Convert 'require' to 'import'"), Convert_all_require_to_import: a(95048, e.DiagnosticCategory.Message, "Convert_all_require_to_import_95048", "Convert all 'require' to 'import'"), Move_to_a_new_file: a(95049, e.DiagnosticCategory.Message, "Move_to_a_new_file_95049", "Move to a new file"), Remove_unreachable_code: a(95050, e.DiagnosticCategory.Message, "Remove_unreachable_code_95050", "Remove unreachable code"), Remove_all_unreachable_code: a(95051, e.DiagnosticCategory.Message, "Remove_all_unreachable_code_95051", "Remove all unreachable code"), Add_missing_typeof: a(95052, e.DiagnosticCategory.Message, "Add_missing_typeof_95052", "Add missing 'typeof'"), Remove_unused_label: a(95053, e.DiagnosticCategory.Message, "Remove_unused_label_95053", "Remove unused label"), Remove_all_unused_labels: a(95054, e.DiagnosticCategory.Message, "Remove_all_unused_labels_95054", "Remove all unused labels"), Convert_0_to_mapped_object_type: a(95055, e.DiagnosticCategory.Message, "Convert_0_to_mapped_object_type_95055", "Convert '{0}' to mapped object type"), Convert_namespace_import_to_named_imports: a(95056, e.DiagnosticCategory.Message, "Convert_namespace_import_to_named_imports_95056", "Convert namespace import to named imports"), Convert_named_imports_to_namespace_import: a(95057, e.DiagnosticCategory.Message, "Convert_named_imports_to_namespace_import_95057", "Convert named imports to namespace import"), Add_or_remove_braces_in_an_arrow_function: a(95058, e.DiagnosticCategory.Message, "Add_or_remove_braces_in_an_arrow_function_95058", "Add or remove braces in an arrow function"), Add_braces_to_arrow_function: a(95059, e.DiagnosticCategory.Message, "Add_braces_to_arrow_function_95059", "Add braces to arrow function"), Remove_braces_from_arrow_function: a(95060, e.DiagnosticCategory.Message, "Remove_braces_from_arrow_function_95060", "Remove braces from arrow function"), Convert_default_export_to_named_export: a(95061, e.DiagnosticCategory.Message, "Convert_default_export_to_named_export_95061", "Convert default export to named export"), Convert_named_export_to_default_export: a(95062, e.DiagnosticCategory.Message, "Convert_named_export_to_default_export_95062", "Convert named export to default export"), Add_missing_enum_member_0: a(95063, e.DiagnosticCategory.Message, "Add_missing_enum_member_0_95063", "Add missing enum member '{0}'"), Add_all_missing_imports: a(95064, e.DiagnosticCategory.Message, "Add_all_missing_imports_95064", "Add all missing imports"), Convert_to_async_function: a(95065, e.DiagnosticCategory.Message, "Convert_to_async_function_95065", "Convert to async function"), Convert_all_to_async_functions: a(95066, e.DiagnosticCategory.Message, "Convert_all_to_async_functions_95066", "Convert all to async functions"), Add_missing_call_parentheses: a(95067, e.DiagnosticCategory.Message, "Add_missing_call_parentheses_95067", "Add missing call parentheses"), Add_all_missing_call_parentheses: a(95068, e.DiagnosticCategory.Message, "Add_all_missing_call_parentheses_95068", "Add all missing call parentheses"), Add_unknown_conversion_for_non_overlapping_types: a(95069, e.DiagnosticCategory.Message, "Add_unknown_conversion_for_non_overlapping_types_95069", "Add 'unknown' conversion for non-overlapping types"), Add_unknown_to_all_conversions_of_non_overlapping_types: a(95070, e.DiagnosticCategory.Message, "Add_unknown_to_all_conversions_of_non_overlapping_types_95070", "Add 'unknown' to all conversions of non-overlapping types"), Add_missing_new_operator_to_call: a(95071, e.DiagnosticCategory.Message, "Add_missing_new_operator_to_call_95071", "Add missing 'new' operator to call"), Add_missing_new_operator_to_all_calls: a(95072, e.DiagnosticCategory.Message, "Add_missing_new_operator_to_all_calls_95072", "Add missing 'new' operator to all calls"), Add_names_to_all_parameters_without_names: a(95073, e.DiagnosticCategory.Message, "Add_names_to_all_parameters_without_names_95073", "Add names to all parameters without names"), Enable_the_experimentalDecorators_option_in_your_configuration_file: a(95074, e.DiagnosticCategory.Message, "Enable_the_experimentalDecorators_option_in_your_configuration_file_95074", "Enable the 'experimentalDecorators' option in your configuration file"), Convert_parameters_to_destructured_object: a(95075, e.DiagnosticCategory.Message, "Convert_parameters_to_destructured_object_95075", "Convert parameters to destructured object"), Extract_type: a(95077, e.DiagnosticCategory.Message, "Extract_type_95077", "Extract type"), Extract_to_type_alias: a(95078, e.DiagnosticCategory.Message, "Extract_to_type_alias_95078", "Extract to type alias"), Extract_to_typedef: a(95079, e.DiagnosticCategory.Message, "Extract_to_typedef_95079", "Extract to typedef"), Infer_this_type_of_0_from_usage: a(95080, e.DiagnosticCategory.Message, "Infer_this_type_of_0_from_usage_95080", "Infer 'this' type of '{0}' from usage"), Add_const_to_unresolved_variable: a(95081, e.DiagnosticCategory.Message, "Add_const_to_unresolved_variable_95081", "Add 'const' to unresolved variable"), Add_const_to_all_unresolved_variables: a(95082, e.DiagnosticCategory.Message, "Add_const_to_all_unresolved_variables_95082", "Add 'const' to all unresolved variables"), Add_await: a(95083, e.DiagnosticCategory.Message, "Add_await_95083", "Add 'await'"), Add_await_to_initializer_for_0: a(95084, e.DiagnosticCategory.Message, "Add_await_to_initializer_for_0_95084", "Add 'await' to initializer for '{0}'"), Fix_all_expressions_possibly_missing_await: a(95085, e.DiagnosticCategory.Message, "Fix_all_expressions_possibly_missing_await_95085", "Fix all expressions possibly missing 'await'"), Remove_unnecessary_await: a(95086, e.DiagnosticCategory.Message, "Remove_unnecessary_await_95086", "Remove unnecessary 'await'"), Remove_all_unnecessary_uses_of_await: a(95087, e.DiagnosticCategory.Message, "Remove_all_unnecessary_uses_of_await_95087", "Remove all unnecessary uses of 'await'"), Enable_the_jsx_flag_in_your_configuration_file: a(95088, e.DiagnosticCategory.Message, "Enable_the_jsx_flag_in_your_configuration_file_95088", "Enable the '--jsx' flag in your configuration file"), Add_await_to_initializers: a(95089, e.DiagnosticCategory.Message, "Add_await_to_initializers_95089", "Add 'await' to initializers"), Extract_to_interface: a(95090, e.DiagnosticCategory.Message, "Extract_to_interface_95090", "Extract to interface"), Convert_to_a_bigint_numeric_literal: a(95091, e.DiagnosticCategory.Message, "Convert_to_a_bigint_numeric_literal_95091", "Convert to a bigint numeric literal"), Convert_all_to_bigint_numeric_literals: a(95092, e.DiagnosticCategory.Message, "Convert_all_to_bigint_numeric_literals_95092", "Convert all to bigint numeric literals"), Convert_const_to_let: a(95093, e.DiagnosticCategory.Message, "Convert_const_to_let_95093", "Convert 'const' to 'let'"), Prefix_with_declare: a(95094, e.DiagnosticCategory.Message, "Prefix_with_declare_95094", "Prefix with 'declare'"), Prefix_all_incorrect_property_declarations_with_declare: a(95095, e.DiagnosticCategory.Message, "Prefix_all_incorrect_property_declarations_with_declare_95095", "Prefix all incorrect property declarations with 'declare'"), Convert_to_template_string: a(95096, e.DiagnosticCategory.Message, "Convert_to_template_string_95096", "Convert to template string"), Add_export_to_make_this_file_into_a_module: a(95097, e.DiagnosticCategory.Message, "Add_export_to_make_this_file_into_a_module_95097", "Add 'export {}' to make this file into a module"), Set_the_target_option_in_your_configuration_file_to_0: a(95098, e.DiagnosticCategory.Message, "Set_the_target_option_in_your_configuration_file_to_0_95098", "Set the 'target' option in your configuration file to '{0}'"), Set_the_module_option_in_your_configuration_file_to_0: a(95099, e.DiagnosticCategory.Message, "Set_the_module_option_in_your_configuration_file_to_0_95099", "Set the 'module' option in your configuration file to '{0}'"), Convert_invalid_character_to_its_html_entity_code: a(95100, e.DiagnosticCategory.Message, "Convert_invalid_character_to_its_html_entity_code_95100", "Convert invalid character to its html entity code"), Convert_all_invalid_characters_to_HTML_entity_code: a(95101, e.DiagnosticCategory.Message, "Convert_all_invalid_characters_to_HTML_entity_code_95101", "Convert all invalid characters to HTML entity code"), Convert_function_expression_0_to_arrow_function: a(95105, e.DiagnosticCategory.Message, "Convert_function_expression_0_to_arrow_function_95105", "Convert function expression '{0}' to arrow function"), Convert_function_declaration_0_to_arrow_function: a(95106, e.DiagnosticCategory.Message, "Convert_function_declaration_0_to_arrow_function_95106", "Convert function declaration '{0}' to arrow function"), Fix_all_implicit_this_errors: a(95107, e.DiagnosticCategory.Message, "Fix_all_implicit_this_errors_95107", "Fix all implicit-'this' errors"), Wrap_invalid_character_in_an_expression_container: a(95108, e.DiagnosticCategory.Message, "Wrap_invalid_character_in_an_expression_container_95108", "Wrap invalid character in an expression container"), Wrap_all_invalid_characters_in_an_expression_container: a(95109, e.DiagnosticCategory.Message, "Wrap_all_invalid_characters_in_an_expression_container_95109", "Wrap all invalid characters in an expression container"), Visit_https_Colon_Slash_Slashaka_ms_Slashtsconfig_to_read_more_about_this_file: a(95110, e.DiagnosticCategory.Message, "Visit_https_Colon_Slash_Slashaka_ms_Slashtsconfig_to_read_more_about_this_file_95110", "Visit https://aka.ms/tsconfig to read more about this file"), Add_a_return_statement: a(95111, e.DiagnosticCategory.Message, "Add_a_return_statement_95111", "Add a return statement"), Remove_braces_from_arrow_function_body: a(95112, e.DiagnosticCategory.Message, "Remove_braces_from_arrow_function_body_95112", "Remove braces from arrow function body"), Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal: a(95113, e.DiagnosticCategory.Message, "Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal_95113", "Wrap the following body with parentheses which should be an object literal"), Add_all_missing_return_statement: a(95114, e.DiagnosticCategory.Message, "Add_all_missing_return_statement_95114", "Add all missing return statement"), Remove_braces_from_all_arrow_function_bodies_with_relevant_issues: a(95115, e.DiagnosticCategory.Message, "Remove_braces_from_all_arrow_function_bodies_with_relevant_issues_95115", "Remove braces from all arrow function bodies with relevant issues"), Wrap_all_object_literal_with_parentheses: a(95116, e.DiagnosticCategory.Message, "Wrap_all_object_literal_with_parentheses_95116", "Wrap all object literal with parentheses"), Move_labeled_tuple_element_modifiers_to_labels: a(95117, e.DiagnosticCategory.Message, "Move_labeled_tuple_element_modifiers_to_labels_95117", "Move labeled tuple element modifiers to labels"), Convert_overload_list_to_single_signature: a(95118, e.DiagnosticCategory.Message, "Convert_overload_list_to_single_signature_95118", "Convert overload list to single signature"), Generate_get_and_set_accessors_for_all_overriding_properties: a(95119, e.DiagnosticCategory.Message, "Generate_get_and_set_accessors_for_all_overriding_properties_95119", "Generate 'get' and 'set' accessors for all overriding properties"), Wrap_in_JSX_fragment: a(95120, e.DiagnosticCategory.Message, "Wrap_in_JSX_fragment_95120", "Wrap in JSX fragment"), Wrap_all_unparented_JSX_in_JSX_fragment: a(95121, e.DiagnosticCategory.Message, "Wrap_all_unparented_JSX_in_JSX_fragment_95121", "Wrap all unparented JSX in JSX fragment"), Convert_arrow_function_or_function_expression: a(95122, e.DiagnosticCategory.Message, "Convert_arrow_function_or_function_expression_95122", "Convert arrow function or function expression"), Convert_to_anonymous_function: a(95123, e.DiagnosticCategory.Message, "Convert_to_anonymous_function_95123", "Convert to anonymous function"), Convert_to_named_function: a(95124, e.DiagnosticCategory.Message, "Convert_to_named_function_95124", "Convert to named function"), Convert_to_arrow_function: a(95125, e.DiagnosticCategory.Message, "Convert_to_arrow_function_95125", "Convert to arrow function"), Remove_parentheses: a(95126, e.DiagnosticCategory.Message, "Remove_parentheses_95126", "Remove parentheses"), Could_not_find_a_containing_arrow_function: a(95127, e.DiagnosticCategory.Message, "Could_not_find_a_containing_arrow_function_95127", "Could not find a containing arrow function"), Containing_function_is_not_an_arrow_function: a(95128, e.DiagnosticCategory.Message, "Containing_function_is_not_an_arrow_function_95128", "Containing function is not an arrow function"), Could_not_find_export_statement: a(95129, e.DiagnosticCategory.Message, "Could_not_find_export_statement_95129", "Could not find export statement"), This_file_already_has_a_default_export: a(95130, e.DiagnosticCategory.Message, "This_file_already_has_a_default_export_95130", "This file already has a default export"), Could_not_find_import_clause: a(95131, e.DiagnosticCategory.Message, "Could_not_find_import_clause_95131", "Could not find import clause"), Could_not_find_namespace_import_or_named_imports: a(95132, e.DiagnosticCategory.Message, "Could_not_find_namespace_import_or_named_imports_95132", "Could not find namespace import or named imports"), Selection_is_not_a_valid_type_node: a(95133, e.DiagnosticCategory.Message, "Selection_is_not_a_valid_type_node_95133", "Selection is not a valid type node"), No_type_could_be_extracted_from_this_type_node: a(95134, e.DiagnosticCategory.Message, "No_type_could_be_extracted_from_this_type_node_95134", "No type could be extracted from this type node"), Could_not_find_property_for_which_to_generate_accessor: a(95135, e.DiagnosticCategory.Message, "Could_not_find_property_for_which_to_generate_accessor_95135", "Could not find property for which to generate accessor"), Name_is_not_valid: a(95136, e.DiagnosticCategory.Message, "Name_is_not_valid_95136", "Name is not valid"), Can_only_convert_property_with_modifier: a(95137, e.DiagnosticCategory.Message, "Can_only_convert_property_with_modifier_95137", "Can only convert property with modifier"), Switch_each_misused_0_to_1: a(95138, e.DiagnosticCategory.Message, "Switch_each_misused_0_to_1_95138", "Switch each misused '{0}' to '{1}'"), Convert_to_optional_chain_expression: a(95139, e.DiagnosticCategory.Message, "Convert_to_optional_chain_expression_95139", "Convert to optional chain expression"), Could_not_find_convertible_access_expression: a(95140, e.DiagnosticCategory.Message, "Could_not_find_convertible_access_expression_95140", "Could not find convertible access expression"), Could_not_find_matching_access_expressions: a(95141, e.DiagnosticCategory.Message, "Could_not_find_matching_access_expressions_95141", "Could not find matching access expressions"), Can_only_convert_logical_AND_access_chains: a(95142, e.DiagnosticCategory.Message, "Can_only_convert_logical_AND_access_chains_95142", "Can only convert logical AND access chains"), Add_void_to_Promise_resolved_without_a_value: a(95143, e.DiagnosticCategory.Message, "Add_void_to_Promise_resolved_without_a_value_95143", "Add 'void' to Promise resolved without a value"), Add_void_to_all_Promises_resolved_without_a_value: a(95144, e.DiagnosticCategory.Message, "Add_void_to_all_Promises_resolved_without_a_value_95144", "Add 'void' to all Promises resolved without a value"), Use_element_access_for_0: a(95145, e.DiagnosticCategory.Message, "Use_element_access_for_0_95145", "Use element access for '{0}'"), Use_element_access_for_all_undeclared_properties: a(95146, e.DiagnosticCategory.Message, "Use_element_access_for_all_undeclared_properties_95146", "Use element access for all undeclared properties."), Delete_all_unused_imports: a(95147, e.DiagnosticCategory.Message, "Delete_all_unused_imports_95147", "Delete all unused imports"), Infer_function_return_type: a(95148, e.DiagnosticCategory.Message, "Infer_function_return_type_95148", "Infer function return type"), Return_type_must_be_inferred_from_a_function: a(95149, e.DiagnosticCategory.Message, "Return_type_must_be_inferred_from_a_function_95149", "Return type must be inferred from a function"), Could_not_determine_function_return_type: a(95150, e.DiagnosticCategory.Message, "Could_not_determine_function_return_type_95150", "Could not determine function return type"), Could_not_convert_to_arrow_function: a(95151, e.DiagnosticCategory.Message, "Could_not_convert_to_arrow_function_95151", "Could not convert to arrow function"), Could_not_convert_to_named_function: a(95152, e.DiagnosticCategory.Message, "Could_not_convert_to_named_function_95152", "Could not convert to named function"), Could_not_convert_to_anonymous_function: a(95153, e.DiagnosticCategory.Message, "Could_not_convert_to_anonymous_function_95153", "Could not convert to anonymous function"), Can_only_convert_string_concatenation: a(95154, e.DiagnosticCategory.Message, "Can_only_convert_string_concatenation_95154", "Can only convert string concatenation"), Selection_is_not_a_valid_statement_or_statements: a(95155, e.DiagnosticCategory.Message, "Selection_is_not_a_valid_statement_or_statements_95155", "Selection is not a valid statement or statements"), Add_missing_function_declaration_0: a(95156, e.DiagnosticCategory.Message, "Add_missing_function_declaration_0_95156", "Add missing function declaration '{0}'"), Add_all_missing_function_declarations: a(95157, e.DiagnosticCategory.Message, "Add_all_missing_function_declarations_95157", "Add all missing function declarations"), Method_not_implemented: a(95158, e.DiagnosticCategory.Message, "Method_not_implemented_95158", "Method not implemented."), Function_not_implemented: a(95159, e.DiagnosticCategory.Message, "Function_not_implemented_95159", "Function not implemented."), Add_override_modifier: a(95160, e.DiagnosticCategory.Message, "Add_override_modifier_95160", "Add 'override' modifier"), Remove_override_modifier: a(95161, e.DiagnosticCategory.Message, "Remove_override_modifier_95161", "Remove 'override' modifier"), Add_all_missing_override_modifiers: a(95162, e.DiagnosticCategory.Message, "Add_all_missing_override_modifiers_95162", "Add all missing 'override' modifiers"), Remove_all_unnecessary_override_modifiers: a(95163, e.DiagnosticCategory.Message, "Remove_all_unnecessary_override_modifiers_95163", "Remove all unnecessary 'override' modifiers"), Can_only_convert_named_export: a(95164, e.DiagnosticCategory.Message, "Can_only_convert_named_export_95164", "Can only convert named export"), Add_missing_properties: a(95165, e.DiagnosticCategory.Message, "Add_missing_properties_95165", "Add missing properties"), Add_all_missing_properties: a(95166, e.DiagnosticCategory.Message, "Add_all_missing_properties_95166", "Add all missing properties"), Add_missing_attributes: a(95167, e.DiagnosticCategory.Message, "Add_missing_attributes_95167", "Add missing attributes"), Add_all_missing_attributes: a(95168, e.DiagnosticCategory.Message, "Add_all_missing_attributes_95168", "Add all missing attributes"), Add_undefined_to_optional_property_type: a(95169, e.DiagnosticCategory.Message, "Add_undefined_to_optional_property_type_95169", "Add 'undefined' to optional property type"), Convert_named_imports_to_default_import: a(95170, e.DiagnosticCategory.Message, "Convert_named_imports_to_default_import_95170", "Convert named imports to default import"), Delete_unused_param_tag_0: a(95171, e.DiagnosticCategory.Message, "Delete_unused_param_tag_0_95171", "Delete unused '@param' tag '{0}'"), Delete_all_unused_param_tags: a(95172, e.DiagnosticCategory.Message, "Delete_all_unused_param_tags_95172", "Delete all unused '@param' tags"), Rename_param_tag_name_0_to_1: a(95173, e.DiagnosticCategory.Message, "Rename_param_tag_name_0_to_1_95173", "Rename '@param' tag name '{0}' to '{1}'"), No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer: a(18004, e.DiagnosticCategory.Error, "No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004", "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer."), Classes_may_not_have_a_field_named_constructor: a(18006, e.DiagnosticCategory.Error, "Classes_may_not_have_a_field_named_constructor_18006", "Classes may not have a field named 'constructor'."), JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array: a(18007, e.DiagnosticCategory.Error, "JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007", "JSX expressions may not use the comma operator. Did you mean to write an array?"), Private_identifiers_cannot_be_used_as_parameters: a(18009, e.DiagnosticCategory.Error, "Private_identifiers_cannot_be_used_as_parameters_18009", "Private identifiers cannot be used as parameters."), An_accessibility_modifier_cannot_be_used_with_a_private_identifier: a(18010, e.DiagnosticCategory.Error, "An_accessibility_modifier_cannot_be_used_with_a_private_identifier_18010", "An accessibility modifier cannot be used with a private identifier."), The_operand_of_a_delete_operator_cannot_be_a_private_identifier: a(18011, e.DiagnosticCategory.Error, "The_operand_of_a_delete_operator_cannot_be_a_private_identifier_18011", "The operand of a 'delete' operator cannot be a private identifier."), constructor_is_a_reserved_word: a(18012, e.DiagnosticCategory.Error, "constructor_is_a_reserved_word_18012", "'#constructor' is a reserved word."), Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier: a(18013, e.DiagnosticCategory.Error, "Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier_18013", "Property '{0}' is not accessible outside class '{1}' because it has a private identifier."), The_property_0_cannot_be_accessed_on_type_1_within_this_class_because_it_is_shadowed_by_another_private_identifier_with_the_same_spelling: a(18014, e.DiagnosticCategory.Error, "The_property_0_cannot_be_accessed_on_type_1_within_this_class_because_it_is_shadowed_by_another_priv_18014", "The property '{0}' cannot be accessed on type '{1}' within this class because it is shadowed by another private identifier with the same spelling."), Property_0_in_type_1_refers_to_a_different_member_that_cannot_be_accessed_from_within_type_2: a(18015, e.DiagnosticCategory.Error, "Property_0_in_type_1_refers_to_a_different_member_that_cannot_be_accessed_from_within_type_2_18015", "Property '{0}' in type '{1}' refers to a different member that cannot be accessed from within type '{2}'."), Private_identifiers_are_not_allowed_outside_class_bodies: a(18016, e.DiagnosticCategory.Error, "Private_identifiers_are_not_allowed_outside_class_bodies_18016", "Private identifiers are not allowed outside class bodies."), The_shadowing_declaration_of_0_is_defined_here: a(18017, e.DiagnosticCategory.Error, "The_shadowing_declaration_of_0_is_defined_here_18017", "The shadowing declaration of '{0}' is defined here"), The_declaration_of_0_that_you_probably_intended_to_use_is_defined_here: a(18018, e.DiagnosticCategory.Error, "The_declaration_of_0_that_you_probably_intended_to_use_is_defined_here_18018", "The declaration of '{0}' that you probably intended to use is defined here"), _0_modifier_cannot_be_used_with_a_private_identifier: a(18019, e.DiagnosticCategory.Error, "_0_modifier_cannot_be_used_with_a_private_identifier_18019", "'{0}' modifier cannot be used with a private identifier."), An_enum_member_cannot_be_named_with_a_private_identifier: a(18024, e.DiagnosticCategory.Error, "An_enum_member_cannot_be_named_with_a_private_identifier_18024", "An enum member cannot be named with a private identifier."), can_only_be_used_at_the_start_of_a_file: a(18026, e.DiagnosticCategory.Error, "can_only_be_used_at_the_start_of_a_file_18026", "'#!' can only be used at the start of a file."), Compiler_reserves_name_0_when_emitting_private_identifier_downlevel: a(18027, e.DiagnosticCategory.Error, "Compiler_reserves_name_0_when_emitting_private_identifier_downlevel_18027", "Compiler reserves name '{0}' when emitting private identifier downlevel."), Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher: a(18028, e.DiagnosticCategory.Error, "Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher_18028", "Private identifiers are only available when targeting ECMAScript 2015 and higher."), Private_identifiers_are_not_allowed_in_variable_declarations: a(18029, e.DiagnosticCategory.Error, "Private_identifiers_are_not_allowed_in_variable_declarations_18029", "Private identifiers are not allowed in variable declarations."), An_optional_chain_cannot_contain_private_identifiers: a(18030, e.DiagnosticCategory.Error, "An_optional_chain_cannot_contain_private_identifiers_18030", "An optional chain cannot contain private identifiers."), The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituents: a(18031, e.DiagnosticCategory.Error, "The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituent_18031", "The intersection '{0}' was reduced to 'never' because property '{1}' has conflicting types in some constituents."), The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_private_in_some: a(18032, e.DiagnosticCategory.Error, "The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_pr_18032", "The intersection '{0}' was reduced to 'never' because property '{1}' exists in multiple constituents and is private in some."), Only_numeric_enums_can_have_computed_members_but_this_expression_has_type_0_If_you_do_not_need_exhaustiveness_checks_consider_using_an_object_literal_instead: a(18033, e.DiagnosticCategory.Error, "Only_numeric_enums_can_have_computed_members_but_this_expression_has_type_0_If_you_do_not_need_exhau_18033", "Only numeric enums can have computed members, but this expression has type '{0}'. If you do not need exhaustiveness checks, consider using an object literal instead."), Specify_the_JSX_fragment_factory_function_to_use_when_targeting_react_JSX_emit_with_jsxFactory_compiler_option_is_specified_e_g_Fragment: a(18034, e.DiagnosticCategory.Message, "Specify_the_JSX_fragment_factory_function_to_use_when_targeting_react_JSX_emit_with_jsxFactory_compi_18034", "Specify the JSX fragment factory function to use when targeting 'react' JSX emit with 'jsxFactory' compiler option is specified, e.g. 'Fragment'."), Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name: a(18035, e.DiagnosticCategory.Error, "Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name_18035", "Invalid value for 'jsxFragmentFactory'. '{0}' is not a valid identifier or qualified-name."), Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator: a(18036, e.DiagnosticCategory.Error, "Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_dec_18036", "Class decorators can't be used with static private identifier. Consider removing the experimental decorator."), Await_expression_cannot_be_used_inside_a_class_static_block: a(18037, e.DiagnosticCategory.Error, "Await_expression_cannot_be_used_inside_a_class_static_block_18037", "Await expression cannot be used inside a class static block."), For_await_loops_cannot_be_used_inside_a_class_static_block: a(18038, e.DiagnosticCategory.Error, "For_await_loops_cannot_be_used_inside_a_class_static_block_18038", "'For await' loops cannot be used inside a class static block."), Invalid_use_of_0_It_cannot_be_used_inside_a_class_static_block: a(18039, e.DiagnosticCategory.Error, "Invalid_use_of_0_It_cannot_be_used_inside_a_class_static_block_18039", "Invalid use of '{0}'. It cannot be used inside a class static block."), A_return_statement_cannot_be_used_inside_a_class_static_block: a(18041, e.DiagnosticCategory.Error, "A_return_statement_cannot_be_used_inside_a_class_static_block_18041", "A 'return' statement cannot be used inside a class static block.") }; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + function C(ye) { + return ye >= 79; + } + e.tokenIsIdentifierOrKeyword = C; + function w(ye) { + return ye === 31 || C(ye); + } + e.tokenIsIdentifierOrKeywordOrGreaterThan = w, e.textToKeywordObj = (a = { abstract: 126, any: 130, as: 127, asserts: 128, assert: 129, bigint: 158, boolean: 133, break: 81, case: 82, catch: 83, class: 84, continue: 86, const: 85 }, a.constructor = 134, a.debugger = 87, a.declare = 135, a.default = 88, a.delete = 89, a.do = 90, a.else = 91, a.enum = 92, a.export = 93, a.extends = 94, a.false = 95, a.finally = 96, a.for = 97, a.from = 156, a.function = 98, a.get = 136, a.if = 99, a.implements = 117, a.import = 100, a.in = 101, a.infer = 137, a.instanceof = 102, a.interface = 118, a.intrinsic = 138, a.is = 139, a.keyof = 140, a.let = 119, a.module = 141, a.namespace = 142, a.never = 143, a.new = 103, a.null = 104, a.number = 147, a.object = 148, a.package = 120, a.private = 121, a.protected = 122, a.public = 123, a.override = 159, a.out = 144, a.readonly = 145, a.require = 146, a.global = 157, a.return = 105, a.set = 149, a.static = 124, a.string = 150, a.super = 106, a.switch = 107, a.symbol = 151, a.this = 108, a.throw = 109, a.true = 110, a.try = 111, a.type = 152, a.typeof = 112, a.undefined = 153, a.unique = 154, a.unknown = 155, a.var = 113, a.void = 114, a.while = 115, a.with = 116, a.yield = 125, a.async = 131, a.await = 132, a.of = 160, a); + var B = new e.Map(e.getEntries(e.textToKeywordObj)), E = new e.Map(e.getEntries(Ke(Ke({}, e.textToKeywordObj), { "{": 18, "}": 19, "(": 20, ")": 21, "[": 22, "]": 23, ".": 24, "...": 25, ";": 26, ",": 27, "<": 29, ">": 31, "<=": 32, ">=": 33, "==": 34, "!=": 35, "===": 36, "!==": 37, "=>": 38, "+": 39, "-": 40, "**": 42, "*": 41, "/": 43, "%": 44, "++": 45, "--": 46, "<<": 47, ">": 48, ">>>": 49, "&": 50, "|": 51, "^": 52, "!": 53, "~": 54, "&&": 55, "||": 56, "?": 57, "??": 60, "?.": 28, ":": 58, "=": 63, "+=": 64, "-=": 65, "*=": 66, "**=": 67, "/=": 68, "%=": 69, "<<=": 70, ">>=": 71, ">>>=": 72, "&=": 73, "|=": 74, "^=": 78, "||=": 75, "&&=": 76, "??=": 77, "@": 59, "#": 62, "`": 61 }))), Q = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500], le = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500], N = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6e3, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43e3, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500], p = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6e3, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43e3, 43047, 43072, 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500], m = [65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2208, 2228, 2230, 2237, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6e3, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40943, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42943, 42946, 42950, 42999, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43879, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69376, 69404, 69415, 69415, 69424, 69445, 69600, 69622, 69635, 69687, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70751, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71680, 71723, 71840, 71903, 71935, 71935, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72384, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73728, 74649, 74752, 74862, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92766, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101106, 110592, 110878, 110928, 110930, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 123136, 123180, 123191, 123197, 123214, 123214, 123584, 123627, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173782, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101], G = [48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2208, 2228, 2230, 2237, 2259, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3328, 3331, 3333, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6e3, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7673, 7675, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40943, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42943, 42946, 42950, 42999, 43047, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43879, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69376, 69404, 69415, 69415, 69424, 69456, 69600, 69622, 69632, 69702, 69734, 69743, 69759, 69818, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69958, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70096, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70206, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70751, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71680, 71738, 71840, 71913, 71935, 71935, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72384, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73728, 74649, 74752, 74862, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101106, 110592, 110878, 110928, 110930, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123584, 123641, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173782, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 917760, 917999], oe = /^\/\/\/?\s*@(ts-expect-error|ts-ignore)/, f = /^(?:\/|\*)*\s*@(ts-expect-error|ts-ignore)/; + function T(ye, Ae) { + if (ye < Ae[0]) + return false; + for (var er = 0, ir = Ae.length, Cr; er + 1 < ir; ) { + if (Cr = er + (ir - er) / 2, Cr -= Cr % 2, Ae[Cr] <= ye && ye <= Ae[Cr + 1]) + return true; + ye < Ae[Cr] ? ir = Cr : er = Cr + 2; + } + return false; + } + function K(ye, Ae) { + return Ae >= 2 ? T(ye, m) : Ae === 1 ? T(ye, N) : T(ye, Q); + } + e.isUnicodeIdentifierStart = K; + function b(ye, Ae) { + return Ae >= 2 ? T(ye, G) : Ae === 1 ? T(ye, p) : T(ye, le); + } + function se(ye) { + var Ae = []; + return ye.forEach(function(er, ir) { + Ae[er] = ir; + }), Ae; + } + var J = se(E); + function ie(ye) { + return J[ye]; + } + e.tokenToString = ie; + function R(ye) { + return E.get(ye); + } + e.stringToToken = R; + function q(ye) { + for (var Ae = new Array(), er = 0, ir = 0; er < ye.length; ) { + var Cr = ye.charCodeAt(er); + switch (er++, Cr) { + case 13: + ye.charCodeAt(er) === 10 && er++; + case 10: + Ae.push(ir), ir = er; + break; + default: + Cr > 127 && y(Cr) && (Ae.push(ir), ir = er); + break; + } + } + return Ae.push(ir), Ae; + } + e.computeLineStarts = q; + function O(ye, Ae, er, ir) { + return ye.getPositionOfLineAndCharacter ? ye.getPositionOfLineAndCharacter(Ae, er, ir) : ve(ee(ye), Ae, er, ye.text, ir); + } + e.getPositionOfLineAndCharacter = O; + function ve(ye, Ae, er, ir, Cr) { + (Ae < 0 || Ae >= ye.length) && (Cr ? Ae = Ae < 0 ? 0 : Ae >= ye.length ? ye.length - 1 : Ae : e.Debug.fail("Bad line number. Line: ".concat(Ae, ", lineStarts.length: ").concat(ye.length, " , line map is correct? ").concat(ir !== void 0 ? e.arraysEqual(ye, q(ir)) : "unknown"))); + var Ye = ye[Ae] + er; + return Cr ? Ye > ye[Ae + 1] ? ye[Ae + 1] : typeof ir == "string" && Ye > ir.length ? ir.length : Ye : (Ae < ye.length - 1 ? e.Debug.assert(Ye < ye[Ae + 1]) : ir !== void 0 && e.Debug.assert(Ye <= ir.length), Ye); + } + e.computePositionOfLineAndCharacter = ve; + function ee(ye) { + return ye.lineMap || (ye.lineMap = q(ye.text)); + } + e.getLineStarts = ee; + function he(ye, Ae) { + var er = F(ye, Ae); + return { line: er, character: Ae - ye[er] }; + } + e.computeLineAndCharacterOfPosition = he; + function F(ye, Ae, er) { + var ir = e.binarySearch(ye, Ae, e.identity, e.compareValues, er); + return ir < 0 && (ir = ~ir - 1, e.Debug.assert(ir !== -1, "position cannot precede the beginning of the file")), ir; + } + e.computeLineOfPosition = F; + function x(ye, Ae, er) { + if (Ae === er) + return 0; + var ir = ee(ye), Cr = Math.min(Ae, er), Ye = Cr === er, Br = Ye ? Ae : er, Er = F(ir, Cr), Ne = F(ir, Br, Er); + return Ye ? Er - Ne : Ne - Er; + } + e.getLinesBetweenPositions = x; + function X(ye, Ae) { + return he(ee(ye), Ae); + } + e.getLineAndCharacterOfPosition = X; + function $(ye) { + return A(ye) || y(ye); + } + e.isWhiteSpaceLike = $; + function A(ye) { + return ye === 32 || ye === 9 || ye === 11 || ye === 12 || ye === 160 || ye === 133 || ye === 5760 || ye >= 8192 && ye <= 8203 || ye === 8239 || ye === 8287 || ye === 12288 || ye === 65279; + } + e.isWhiteSpaceSingleLine = A; + function y(ye) { + return ye === 10 || ye === 13 || ye === 8232 || ye === 8233; + } + e.isLineBreak = y; + function V(ye) { + return ye >= 48 && ye <= 57; + } + function L(ye) { + return V(ye) || ye >= 65 && ye <= 70 || ye >= 97 && ye <= 102; + } + function P(ye) { + return ye <= 1114111; + } + function k(ye) { + return ye >= 48 && ye <= 55; + } + e.isOctalDigit = k; + function Y(ye, Ae) { + var er = ye.charCodeAt(Ae); + switch (er) { + case 13: + case 10: + case 9: + case 11: + case 12: + case 32: + case 47: + case 60: + case 124: + case 61: + case 62: + return true; + case 35: + return Ae === 0; + default: + return er > 127; + } + } + e.couldStartTrivia = Y; + function U(ye, Ae, er, ir, Cr) { + if (e.positionIsSynthesized(Ae)) + return Ae; + for (var Ye = false; ; ) { + var Br = ye.charCodeAt(Ae); + switch (Br) { + case 13: + ye.charCodeAt(Ae + 1) === 10 && Ae++; + case 10: + if (Ae++, er) + return Ae; + Ye = !!Cr; + continue; + case 9: + case 11: + case 12: + case 32: + Ae++; + continue; + case 47: + if (ir) + break; + if (ye.charCodeAt(Ae + 1) === 47) { + for (Ae += 2; Ae < ye.length && !y(ye.charCodeAt(Ae)); ) + Ae++; + Ye = false; + continue; + } + if (ye.charCodeAt(Ae + 1) === 42) { + for (Ae += 2; Ae < ye.length; ) { + if (ye.charCodeAt(Ae) === 42 && ye.charCodeAt(Ae + 1) === 47) { + Ae += 2; + break; + } + Ae++; + } + Ye = false; + continue; + } + break; + case 60: + case 124: + case 61: + case 62: + if (H(ye, Ae)) { + Ae = I(ye, Ae), Ye = false; + continue; + } + break; + case 35: + if (Ae === 0 && d(ye, Ae)) { + Ae = D(ye, Ae), Ye = false; + continue; + } + break; + case 42: + if (Ye) { + Ae++, Ye = false; + continue; + } + break; + default: + if (Br > 127 && $(Br)) { + Ae++; + continue; + } + break; + } + return Ae; + } + } + e.skipTrivia = U; + var j = 7; + function H(ye, Ae) { + if (e.Debug.assert(Ae >= 0), Ae === 0 || y(ye.charCodeAt(Ae - 1))) { + var er = ye.charCodeAt(Ae); + if (Ae + j < ye.length) { + for (var ir = 0; ir < j; ir++) + if (ye.charCodeAt(Ae + ir) !== er) + return false; + return er === 61 || ye.charCodeAt(Ae + j) === 32; + } + } + return false; + } + function I(ye, Ae, er) { + er && er(e.Diagnostics.Merge_conflict_marker_encountered, Ae, j); + var ir = ye.charCodeAt(Ae), Cr = ye.length; + if (ir === 60 || ir === 62) + for (; Ae < Cr && !y(ye.charCodeAt(Ae)); ) + Ae++; + else + for (e.Debug.assert(ir === 124 || ir === 61); Ae < Cr; ) { + var Ye = ye.charCodeAt(Ae); + if ((Ye === 61 || Ye === 62) && Ye !== ir && H(ye, Ae)) + break; + Ae++; + } + return Ae; + } + var l = /^#!.*/; + function d(ye, Ae) { + return e.Debug.assert(Ae === 0), l.test(ye); + } + e.isShebangTrivia = d; + function D(ye, Ae) { + var er = l.exec(ye)[0]; + return Ae = Ae + er.length, Ae; + } + e.scanShebangTrivia = D; + function fe(ye, Ae, er, ir, Cr, Ye, Br) { + var Er, Ne, n, lr, be = false, Ge = ir, ur = Br; + if (er === 0) { + Ge = true; + var yr = ge(Ae); + yr && (er = yr.length); + } + e: + for (; er >= 0 && er < Ae.length; ) { + var Ir = Ae.charCodeAt(er); + switch (Ir) { + case 13: + Ae.charCodeAt(er + 1) === 10 && er++; + case 10: + if (er++, ir) + break e; + Ge = true, be && (lr = true); + continue; + case 9: + case 11: + case 12: + case 32: + er++; + continue; + case 47: + var wr = Ae.charCodeAt(er + 1), Ur = false; + if (wr === 47 || wr === 42) { + var ii = wr === 47 ? 2 : 3, mi = er; + if (er += 2, wr === 47) + for (; er < Ae.length; ) { + if (y(Ae.charCodeAt(er))) { + Ur = true; + break; + } + er++; + } + else + for (; er < Ae.length; ) { + if (Ae.charCodeAt(er) === 42 && Ae.charCodeAt(er + 1) === 47) { + er += 2; + break; + } + er++; + } + if (Ge) { + if (be && (ur = Cr(Er, Ne, n, lr, Ye, ur), !ye && ur)) + return ur; + Er = mi, Ne = er, n = ii, lr = Ur, be = true; + } + continue; + } + break e; + default: + if (Ir > 127 && $(Ir)) { + be && y(Ir) && (lr = true), er++; + continue; + } + break e; + } + } + return be && (ur = Cr(Er, Ne, n, lr, Ye, ur)), ur; + } + function g(ye, Ae, er, ir) { + return fe(false, ye, Ae, false, er, ir); + } + e.forEachLeadingCommentRange = g; + function ne(ye, Ae, er, ir) { + return fe(false, ye, Ae, true, er, ir); + } + e.forEachTrailingCommentRange = ne; + function ue(ye, Ae, er, ir, Cr) { + return fe(true, ye, Ae, false, er, ir, Cr); + } + e.reduceEachLeadingCommentRange = ue; + function We(ye, Ae, er, ir, Cr) { + return fe(true, ye, Ae, true, er, ir, Cr); + } + e.reduceEachTrailingCommentRange = We; + function Fe(ye, Ae, er, ir, Cr, Ye) { + return Ye || (Ye = []), Ye.push({ kind: er, pos: ye, end: Ae, hasTrailingNewLine: ir }), Ye; + } + function Z(ye, Ae) { + return ue(ye, Ae, Fe, void 0, void 0); + } + e.getLeadingCommentRanges = Z; + function Be(ye, Ae) { + return We(ye, Ae, Fe, void 0, void 0); + } + e.getTrailingCommentRanges = Be; + function ge(ye) { + var Ae = l.exec(ye); + if (Ae) + return Ae[0]; + } + e.getShebang = ge; + function Re(ye, Ae) { + return ye >= 65 && ye <= 90 || ye >= 97 && ye <= 122 || ye === 36 || ye === 95 || ye > 127 && K(ye, Ae); + } + e.isIdentifierStart = Re; + function ze(ye, Ae, er) { + return ye >= 65 && ye <= 90 || ye >= 97 && ye <= 122 || ye >= 48 && ye <= 57 || ye === 36 || ye === 95 || (er === 1 ? ye === 45 || ye === 58 : false) || ye > 127 && b(ye, Ae); + } + e.isIdentifierPart = ze; + function Ee(ye, Ae, er) { + var ir = rr(ye, 0); + if (!Re(ir, Ae)) + return false; + for (var Cr = Ie(ir); Cr < ye.length; Cr += Ie(ir)) + if (!ze(ir = rr(ye, Cr), Ae, er)) + return false; + return true; + } + e.isIdentifierText = Ee; + function He(ye, Ae, er, ir, Cr, Ye, Br) { + er === void 0 && (er = 0); + var Er = ir, Ne, n, lr, be, Ge, ur, yr, Ir, wr = 0; + nt(Er, Ye, Br); + var Ur = { getStartPos: function() { + return lr; + }, getTextPos: function() { + return Ne; + }, getToken: function() { + return Ge; + }, getTokenPos: function() { + return be; + }, getTokenText: function() { + return Er.substring(be, Ne); + }, getTokenValue: function() { + return ur; + }, hasUnicodeEscape: function() { + return (yr & 1024) !== 0; + }, hasExtendedUnicodeEscape: function() { + return (yr & 8) !== 0; + }, hasPrecedingLineBreak: function() { + return (yr & 1) !== 0; + }, hasPrecedingJSDocComment: function() { + return (yr & 2) !== 0; + }, isIdentifier: function() { + return Ge === 79 || Ge > 116; + }, isReservedWord: function() { + return Ge >= 81 && Ge <= 116; + }, isUnterminated: function() { + return (yr & 4) !== 0; + }, getCommentDirectives: function() { + return Ir; + }, getNumericLiteralFlags: function() { + return yr & 1008; + }, getTokenFlags: function() { + return yr; + }, reScanGreaterToken: Wr, reScanAsteriskEqualsToken: Je, reScanSlashToken: xe, reScanTemplateToken: Ar, reScanTemplateHeadOrNoSubstitutionTemplate: Oe, scanJsxIdentifier: De, scanJsxAttributeValue: gr, reScanJsxAttributeValue: Vr, reScanJsxToken: nr, reScanLessThanToken: Mr, reScanHashToken: Pe, reScanQuestionToken: Ue, reScanInvalidIdentifier: Sr, scanJsxToken: fr, scanJsDocToken: Tr, scan: Ze, getText: ct, clearCommentDirectives: Li, setText: nt, setScriptTarget: xt, setLanguageVariant: ut, setOnError: Mt, setTextPos: Dt, setInJSDocType: Rt, tryScan: Wi, lookAhead: Yi, scanRange: Ui }; + return e.Debug.isDebugging && Object.defineProperty(Ur, "__debugShowCurrentPositionInText", { get: function() { + var Ii = Ur.getText(); + return Ii.slice(0, Ur.getStartPos()) + "\u2551" + Ii.slice(Ur.getStartPos()); + } }), Ur; + function ii(Ii, Ki, Fi) { + if (Ki === void 0 && (Ki = Ne), Cr) { + var ui = Ne; + Ne = Ki, Cr(Ii, Fi || 0), Ne = ui; + } + } + function mi() { + for (var Ii = Ne, Ki = false, Fi = false, ui = ""; ; ) { + var Bt = Er.charCodeAt(Ne); + if (Bt === 95) { + yr |= 512, Ki ? (Ki = false, Fi = true, ui += Er.substring(Ii, Ne)) : ii(Fi ? e.Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted : e.Diagnostics.Numeric_separators_are_not_allowed_here, Ne, 1), Ne++, Ii = Ne; + continue; + } + if (V(Bt)) { + Ki = true, Fi = false, Ne++; + continue; + } + break; + } + return Er.charCodeAt(Ne - 1) === 95 && ii(e.Diagnostics.Numeric_separators_are_not_allowed_here, Ne - 1, 1), ui + Er.substring(Ii, Ne); + } + function pe() { + var Ii = Ne, Ki = mi(), Fi, ui; + Er.charCodeAt(Ne) === 46 && (Ne++, Fi = mi()); + var Bt = Ne; + if (Er.charCodeAt(Ne) === 69 || Er.charCodeAt(Ne) === 101) { + Ne++, yr |= 16, (Er.charCodeAt(Ne) === 43 || Er.charCodeAt(Ne) === 45) && Ne++; + var wt = Ne, na = mi(); + na ? (ui = Er.substring(Bt, wt) + na, Bt = Ne) : ii(e.Diagnostics.Digit_expected); + } + var Ai; + if (yr & 512 ? (Ai = Ki, Fi && (Ai += "." + Fi), ui && (Ai += ui)) : Ai = Er.substring(Ii, Bt), Fi !== void 0 || yr & 16) + return or(Ii, Fi === void 0 && !!(yr & 16)), { type: 8, value: "" + +Ai }; + ur = Ai; + var Oi = ti(); + return or(Ii), { type: Oi, value: ur }; + } + function or(Ii, Ki) { + if (!!Re(rr(Er, Ne), ye)) { + var Fi = Ne, ui = ae().length; + ui === 1 && Er[Fi] === "n" ? ii(Ki ? e.Diagnostics.A_bigint_literal_cannot_use_exponential_notation : e.Diagnostics.A_bigint_literal_must_be_an_integer, Ii, Fi - Ii + 1) : (ii(e.Diagnostics.An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal, Fi, ui), Ne = Fi); + } + } + function qr() { + for (var Ii = Ne; k(Er.charCodeAt(Ne)); ) + Ne++; + return +Er.substring(Ii, Ne); + } + function si(Ii, Ki) { + var Fi = wi(Ii, false, Ki); + return Fi ? parseInt(Fi, 16) : -1; + } + function Di(Ii, Ki) { + return wi(Ii, true, Ki); + } + function wi(Ii, Ki, Fi) { + for (var ui = [], Bt = false, wt = false; ui.length < Ii || Ki; ) { + var na = Er.charCodeAt(Ne); + if (Fi && na === 95) { + yr |= 512, Bt ? (Bt = false, wt = true) : ii(wt ? e.Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted : e.Diagnostics.Numeric_separators_are_not_allowed_here, Ne, 1), Ne++; + continue; + } + if (Bt = Fi, na >= 65 && na <= 70) + na += 97 - 65; + else if (!(na >= 48 && na <= 57 || na >= 97 && na <= 102)) + break; + ui.push(na), Ne++, wt = false; + } + return ui.length < Ii && (ui = []), Er.charCodeAt(Ne - 1) === 95 && ii(e.Diagnostics.Numeric_separators_are_not_allowed_here, Ne - 1, 1), String.fromCharCode.apply(String, ui); + } + function Xi(Ii) { + Ii === void 0 && (Ii = false); + var Ki = Er.charCodeAt(Ne); + Ne++; + for (var Fi = "", ui = Ne; ; ) { + if (Ne >= n) { + Fi += Er.substring(ui, Ne), yr |= 4, ii(e.Diagnostics.Unterminated_string_literal); + break; + } + var Bt = Er.charCodeAt(Ne); + if (Bt === Ki) { + Fi += Er.substring(ui, Ne), Ne++; + break; + } + if (Bt === 92 && !Ii) { + Fi += Er.substring(ui, Ne), Fi += Gi(), ui = Ne; + continue; + } + if (y(Bt) && !Ii) { + Fi += Er.substring(ui, Ne), yr |= 4, ii(e.Diagnostics.Unterminated_string_literal); + break; + } + Ne++; + } + return Fi; + } + function et(Ii) { + var Ki = Er.charCodeAt(Ne) === 96; + Ne++; + for (var Fi = Ne, ui = "", Bt; ; ) { + if (Ne >= n) { + ui += Er.substring(Fi, Ne), yr |= 4, ii(e.Diagnostics.Unterminated_template_literal), Bt = Ki ? 14 : 17; + break; + } + var wt = Er.charCodeAt(Ne); + if (wt === 96) { + ui += Er.substring(Fi, Ne), Ne++, Bt = Ki ? 14 : 17; + break; + } + if (wt === 36 && Ne + 1 < n && Er.charCodeAt(Ne + 1) === 123) { + ui += Er.substring(Fi, Ne), Ne += 2, Bt = Ki ? 15 : 16; + break; + } + if (wt === 92) { + ui += Er.substring(Fi, Ne), ui += Gi(Ii), Fi = Ne; + continue; + } + if (wt === 13) { + ui += Er.substring(Fi, Ne), Ne++, Ne < n && Er.charCodeAt(Ne) === 10 && Ne++, ui += ` +`, Fi = Ne; + continue; + } + Ne++; + } + return e.Debug.assert(Bt !== void 0), ur = ui, Bt; + } + function Gi(Ii) { + var Ki = Ne; + if (Ne++, Ne >= n) + return ii(e.Diagnostics.Unexpected_end_of_text), ""; + var Fi = Er.charCodeAt(Ne); + switch (Ne++, Fi) { + case 48: + return Ii && Ne < n && V(Er.charCodeAt(Ne)) ? (Ne++, yr |= 2048, Er.substring(Ki, Ne)) : "\0"; + case 98: + return "\b"; + case 116: + return " "; + case 110: + return ` +`; + case 118: + return "\v"; + case 102: + return "\f"; + case 114: + return "\r"; + case 39: + return "'"; + case 34: + return '"'; + case 117: + if (Ii) { + for (var ui = Ne; ui < Ne + 4; ui++) + if (ui < n && !L(Er.charCodeAt(ui)) && Er.charCodeAt(ui) !== 123) + return Ne = ui, yr |= 2048, Er.substring(Ki, Ne); + } + if (Ne < n && Er.charCodeAt(Ne) === 123) { + if (Ne++, Ii && !L(Er.charCodeAt(Ne))) + return yr |= 2048, Er.substring(Ki, Ne); + if (Ii) { + var Bt = Ne, wt = Di(1, false), na = wt ? parseInt(wt, 16) : -1; + if (!P(na) || Er.charCodeAt(Ne) !== 125) + return yr |= 2048, Er.substring(Ki, Ne); + Ne = Bt; + } + return yr |= 8, Zt(); + } + return yr |= 1024, Wt(4); + case 120: + if (Ii) + if (L(Er.charCodeAt(Ne))) { + if (!L(Er.charCodeAt(Ne + 1))) + return Ne++, yr |= 2048, Er.substring(Ki, Ne); + } else + return yr |= 2048, Er.substring(Ki, Ne); + return Wt(2); + case 13: + Ne < n && Er.charCodeAt(Ne) === 10 && Ne++; + case 10: + case 8232: + case 8233: + return ""; + default: + return String.fromCharCode(Fi); + } + } + function Wt(Ii) { + var Ki = si(Ii, false); + return Ki >= 0 ? String.fromCharCode(Ki) : (ii(e.Diagnostics.Hexadecimal_digit_expected), ""); + } + function Zt() { + var Ii = Di(1, false), Ki = Ii ? parseInt(Ii, 16) : -1, Fi = false; + return Ki < 0 ? (ii(e.Diagnostics.Hexadecimal_digit_expected), Fi = true) : Ki > 1114111 && (ii(e.Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive), Fi = true), Ne >= n ? (ii(e.Diagnostics.Unexpected_end_of_text), Fi = true) : Er.charCodeAt(Ne) === 125 ? Ne++ : (ii(e.Diagnostics.Unterminated_Unicode_escape_sequence), Fi = true), Fi ? "" : de(Ki); + } + function _r() { + if (Ne + 5 < n && Er.charCodeAt(Ne + 1) === 117) { + var Ii = Ne; + Ne += 2; + var Ki = si(4, false); + return Ne = Ii, Ki; + } + return -1; + } + function pi() { + if (ye >= 2 && rr(Er, Ne + 1) === 117 && rr(Er, Ne + 2) === 123) { + var Ii = Ne; + Ne += 3; + var Ki = Di(1, false), Fi = Ki ? parseInt(Ki, 16) : -1; + return Ne = Ii, Fi; + } + return -1; + } + function ae() { + for (var Ii = "", Ki = Ne; Ne < n; ) { + var Fi = rr(Er, Ne); + if (ze(Fi, ye)) + Ne += Ie(Fi); + else if (Fi === 92) { + if (Fi = pi(), Fi >= 0 && ze(Fi, ye)) { + Ne += 3, yr |= 8, Ii += Zt(), Ki = Ne; + continue; + } + if (Fi = _r(), !(Fi >= 0 && ze(Fi, ye))) + break; + yr |= 1024, Ii += Er.substring(Ki, Ne), Ii += de(Fi), Ne += 6, Ki = Ne; + } else + break; + } + return Ii += Er.substring(Ki, Ne), Ii; + } + function Xe() { + var Ii = ur.length; + if (Ii >= 2 && Ii <= 12) { + var Ki = ur.charCodeAt(0); + if (Ki >= 97 && Ki <= 122) { + var Fi = B.get(ur); + if (Fi !== void 0) + return Ge = Fi; + } + } + return Ge = 79; + } + function Jr(Ii) { + for (var Ki = "", Fi = false, ui = false; ; ) { + var Bt = Er.charCodeAt(Ne); + if (Bt === 95) { + yr |= 512, Fi ? (Fi = false, ui = true) : ii(ui ? e.Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted : e.Diagnostics.Numeric_separators_are_not_allowed_here, Ne, 1), Ne++; + continue; + } + if (Fi = true, !V(Bt) || Bt - 48 >= Ii) + break; + Ki += Er[Ne], Ne++, ui = false; + } + return Er.charCodeAt(Ne - 1) === 95 && ii(e.Diagnostics.Numeric_separators_are_not_allowed_here, Ne - 1, 1), Ki; + } + function ti() { + if (Er.charCodeAt(Ne) === 110) + return ur += "n", yr & 384 && (ur = e.parsePseudoBigInt(ur) + "n"), Ne++, 9; + var Ii = yr & 128 ? parseInt(ur.slice(2), 2) : yr & 256 ? parseInt(ur.slice(2), 8) : +ur; + return ur = "" + Ii, 8; + } + function Ze() { + var Ii; + lr = Ne, yr = 0; + for (var Ki = false; ; ) { + if (be = Ne, Ne >= n) + return Ge = 1; + var Fi = rr(Er, Ne); + if (Fi === 35 && Ne === 0 && d(Er, Ne)) { + if (Ne = D(Er, Ne), Ae) + continue; + return Ge = 6; + } + switch (Fi) { + case 10: + case 13: + if (yr |= 1, Ae) { + Ne++; + continue; + } else + return Fi === 13 && Ne + 1 < n && Er.charCodeAt(Ne + 1) === 10 ? Ne += 2 : Ne++, Ge = 4; + case 9: + case 11: + case 12: + case 32: + case 160: + case 5760: + case 8192: + case 8193: + case 8194: + case 8195: + case 8196: + case 8197: + case 8198: + case 8199: + case 8200: + case 8201: + case 8202: + case 8203: + case 8239: + case 8287: + case 12288: + case 65279: + if (Ae) { + Ne++; + continue; + } else { + for (; Ne < n && A(Er.charCodeAt(Ne)); ) + Ne++; + return Ge = 5; + } + case 33: + return Er.charCodeAt(Ne + 1) === 61 ? Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 37) : (Ne += 2, Ge = 35) : (Ne++, Ge = 53); + case 34: + case 39: + return ur = Xi(), Ge = 10; + case 96: + return Ge = et(false); + case 37: + return Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 69) : (Ne++, Ge = 44); + case 38: + return Er.charCodeAt(Ne + 1) === 38 ? Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 76) : (Ne += 2, Ge = 55) : Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 73) : (Ne++, Ge = 50); + case 40: + return Ne++, Ge = 20; + case 41: + return Ne++, Ge = 21; + case 42: + if (Er.charCodeAt(Ne + 1) === 61) + return Ne += 2, Ge = 66; + if (Er.charCodeAt(Ne + 1) === 42) + return Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 67) : (Ne += 2, Ge = 42); + if (Ne++, wr && !Ki && yr & 1) { + Ki = true; + continue; + } + return Ge = 41; + case 43: + return Er.charCodeAt(Ne + 1) === 43 ? (Ne += 2, Ge = 45) : Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 64) : (Ne++, Ge = 39); + case 44: + return Ne++, Ge = 27; + case 45: + return Er.charCodeAt(Ne + 1) === 45 ? (Ne += 2, Ge = 46) : Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 65) : (Ne++, Ge = 40); + case 46: + return V(Er.charCodeAt(Ne + 1)) ? (ur = pe().value, Ge = 8) : Er.charCodeAt(Ne + 1) === 46 && Er.charCodeAt(Ne + 2) === 46 ? (Ne += 3, Ge = 25) : (Ne++, Ge = 24); + case 47: + if (Er.charCodeAt(Ne + 1) === 47) { + for (Ne += 2; Ne < n && !y(Er.charCodeAt(Ne)); ) + Ne++; + if (Ir = vr(Ir, Er.slice(be, Ne), oe, be), Ae) + continue; + return Ge = 2; + } + if (Er.charCodeAt(Ne + 1) === 42) { + Ne += 2, Er.charCodeAt(Ne) === 42 && Er.charCodeAt(Ne + 1) !== 47 && (yr |= 2); + for (var ui = false, Bt = be; Ne < n; ) { + var wt = Er.charCodeAt(Ne); + if (wt === 42 && Er.charCodeAt(Ne + 1) === 47) { + Ne += 2, ui = true; + break; + } + Ne++, y(wt) && (Bt = Ne, yr |= 1); + } + if (Ir = vr(Ir, Er.slice(Bt, Ne), f, Bt), ui || ii(e.Diagnostics.Asterisk_Slash_expected), Ae) + continue; + return ui || (yr |= 4), Ge = 3; + } + return Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 68) : (Ne++, Ge = 43); + case 48: + if (Ne + 2 < n && (Er.charCodeAt(Ne + 1) === 88 || Er.charCodeAt(Ne + 1) === 120)) + return Ne += 2, ur = Di(1, true), ur || (ii(e.Diagnostics.Hexadecimal_digit_expected), ur = "0"), ur = "0x" + ur, yr |= 64, Ge = ti(); + if (Ne + 2 < n && (Er.charCodeAt(Ne + 1) === 66 || Er.charCodeAt(Ne + 1) === 98)) + return Ne += 2, ur = Jr(2), ur || (ii(e.Diagnostics.Binary_digit_expected), ur = "0"), ur = "0b" + ur, yr |= 128, Ge = ti(); + if (Ne + 2 < n && (Er.charCodeAt(Ne + 1) === 79 || Er.charCodeAt(Ne + 1) === 111)) + return Ne += 2, ur = Jr(8), ur || (ii(e.Diagnostics.Octal_digit_expected), ur = "0"), ur = "0o" + ur, yr |= 256, Ge = ti(); + if (Ne + 1 < n && k(Er.charCodeAt(Ne + 1))) + return ur = "" + qr(), yr |= 32, Ge = 8; + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return Ii = pe(), Ge = Ii.type, ur = Ii.value, Ge; + case 58: + return Ne++, Ge = 58; + case 59: + return Ne++, Ge = 26; + case 60: + if (H(Er, Ne)) { + if (Ne = I(Er, Ne, ii), Ae) + continue; + return Ge = 7; + } + return Er.charCodeAt(Ne + 1) === 60 ? Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 70) : (Ne += 2, Ge = 47) : Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 32) : er === 1 && Er.charCodeAt(Ne + 1) === 47 && Er.charCodeAt(Ne + 2) !== 42 ? (Ne += 2, Ge = 30) : (Ne++, Ge = 29); + case 61: + if (H(Er, Ne)) { + if (Ne = I(Er, Ne, ii), Ae) + continue; + return Ge = 7; + } + return Er.charCodeAt(Ne + 1) === 61 ? Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 36) : (Ne += 2, Ge = 34) : Er.charCodeAt(Ne + 1) === 62 ? (Ne += 2, Ge = 38) : (Ne++, Ge = 63); + case 62: + if (H(Er, Ne)) { + if (Ne = I(Er, Ne, ii), Ae) + continue; + return Ge = 7; + } + return Ne++, Ge = 31; + case 63: + return Er.charCodeAt(Ne + 1) === 46 && !V(Er.charCodeAt(Ne + 2)) ? (Ne += 2, Ge = 28) : Er.charCodeAt(Ne + 1) === 63 ? Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 77) : (Ne += 2, Ge = 60) : (Ne++, Ge = 57); + case 91: + return Ne++, Ge = 22; + case 93: + return Ne++, Ge = 23; + case 94: + return Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 78) : (Ne++, Ge = 52); + case 123: + return Ne++, Ge = 18; + case 124: + if (H(Er, Ne)) { + if (Ne = I(Er, Ne, ii), Ae) + continue; + return Ge = 7; + } + return Er.charCodeAt(Ne + 1) === 124 ? Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 75) : (Ne += 2, Ge = 56) : Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 74) : (Ne++, Ge = 51); + case 125: + return Ne++, Ge = 19; + case 126: + return Ne++, Ge = 54; + case 64: + return Ne++, Ge = 59; + case 92: + var na = pi(); + if (na >= 0 && Re(na, ye)) + return Ne += 3, yr |= 8, ur = Zt() + ae(), Ge = Xe(); + var Ai = _r(); + return Ai >= 0 && Re(Ai, ye) ? (Ne += 6, yr |= 1024, ur = String.fromCharCode(Ai) + ae(), Ge = Xe()) : (ii(e.Diagnostics.Invalid_character), Ne++, Ge = 0); + case 35: + return Ne !== 0 && Er[Ne + 1] === "!" ? (ii(e.Diagnostics.can_only_be_used_at_the_start_of_a_file), Ne++, Ge = 0) : (Re(rr(Er, Ne + 1), ye) ? (Ne++, zr(rr(Er, Ne), ye)) : (ur = String.fromCharCode(rr(Er, Ne)), ii(e.Diagnostics.Invalid_character, Ne++, Ie(Fi))), Ge = 80); + default: + var Oi = zr(Fi, ye); + if (Oi) + return Ge = Oi; + if (A(Fi)) { + Ne += Ie(Fi); + continue; + } else if (y(Fi)) { + yr |= 1, Ne += Ie(Fi); + continue; + } + var ji = Ie(Fi); + return ii(e.Diagnostics.Invalid_character, Ne, ji), Ne += ji, Ge = 0; + } + } + } + function Sr() { + e.Debug.assert(Ge === 0, "'reScanInvalidIdentifier' should only be called when the current token is 'SyntaxKind.Unknown'."), Ne = be = lr, yr = 0; + var Ii = rr(Er, Ne), Ki = zr(Ii, 99); + return Ki ? Ge = Ki : (Ne += Ie(Ii), Ge); + } + function zr(Ii, Ki) { + var Fi = Ii; + if (Re(Fi, Ki)) { + for (Ne += Ie(Fi); Ne < n && ze(Fi = rr(Er, Ne), Ki); ) + Ne += Ie(Fi); + return ur = Er.substring(be, Ne), Fi === 92 && (ur += ae()), Xe(); + } + } + function Wr() { + if (Ge === 31) { + if (Er.charCodeAt(Ne) === 62) + return Er.charCodeAt(Ne + 1) === 62 ? Er.charCodeAt(Ne + 2) === 61 ? (Ne += 3, Ge = 72) : (Ne += 2, Ge = 49) : Er.charCodeAt(Ne + 1) === 61 ? (Ne += 2, Ge = 71) : (Ne++, Ge = 48); + if (Er.charCodeAt(Ne) === 61) + return Ne++, Ge = 33; + } + return Ge; + } + function Je() { + return e.Debug.assert(Ge === 66, "'reScanAsteriskEqualsToken' should only be called on a '*='"), Ne = be + 1, Ge = 63; + } + function xe() { + if (Ge === 43 || Ge === 68) { + for (var Ii = be + 1, Ki = false, Fi = false; ; ) { + if (Ii >= n) { + yr |= 4, ii(e.Diagnostics.Unterminated_regular_expression_literal); + break; + } + var ui = Er.charCodeAt(Ii); + if (y(ui)) { + yr |= 4, ii(e.Diagnostics.Unterminated_regular_expression_literal); + break; + } + if (Ki) + Ki = false; + else if (ui === 47 && !Fi) { + Ii++; + break; + } else + ui === 91 ? Fi = true : ui === 92 ? Ki = true : ui === 93 && (Fi = false); + Ii++; + } + for (; Ii < n && ze(Er.charCodeAt(Ii), ye); ) + Ii++; + Ne = Ii, ur = Er.substring(be, Ne), Ge = 13; + } + return Ge; + } + function vr(Ii, Ki, Fi, ui) { + var Bt = mr(e.trimStringStart(Ki), Fi); + return Bt === void 0 ? Ii : e.append(Ii, { range: { pos: ui, end: Ne }, type: Bt }); + } + function mr(Ii, Ki) { + var Fi = Ki.exec(Ii); + if (!!Fi) + switch (Fi[1]) { + case "ts-expect-error": + return 0; + case "ts-ignore": + return 1; + } + } + function Ar(Ii) { + return e.Debug.assert(Ge === 19, "'reScanTemplateToken' should only be called on a '}'"), Ne = be, Ge = et(Ii); + } + function Oe() { + return Ne = be, Ge = et(true); + } + function nr(Ii) { + return Ii === void 0 && (Ii = true), Ne = be = lr, Ge = fr(Ii); + } + function Mr() { + return Ge === 47 ? (Ne = be + 1, Ge = 29) : Ge; + } + function Pe() { + return Ge === 80 ? (Ne = be + 1, Ge = 62) : Ge; + } + function Ue() { + return e.Debug.assert(Ge === 60, "'reScanQuestionToken' should only be called on a '??'"), Ne = be + 1, Ge = 57; + } + function fr(Ii) { + if (Ii === void 0 && (Ii = true), lr = be = Ne, Ne >= n) + return Ge = 1; + var Ki = Er.charCodeAt(Ne); + if (Ki === 60) + return Er.charCodeAt(Ne + 1) === 47 ? (Ne += 2, Ge = 30) : (Ne++, Ge = 29); + if (Ki === 123) + return Ne++, Ge = 18; + for (var Fi = 0; Ne < n && (Ki = Er.charCodeAt(Ne), Ki !== 123); ) { + if (Ki === 60) { + if (H(Er, Ne)) + return Ne = I(Er, Ne, ii), Ge = 7; + break; + } + if (Ki === 62 && ii(e.Diagnostics.Unexpected_token_Did_you_mean_or_gt, Ne, 1), Ki === 125 && ii(e.Diagnostics.Unexpected_token_Did_you_mean_or_rbrace, Ne, 1), y(Ki) && Fi === 0) + Fi = -1; + else { + if (!Ii && y(Ki) && Fi > 0) + break; + $(Ki) || (Fi = Ne); + } + Ne++; + } + return ur = Er.substring(lr, Ne), Fi === -1 ? 12 : 11; + } + function De() { + if (C(Ge)) { + for (var Ii = false; Ne < n; ) { + var Ki = Er.charCodeAt(Ne); + if (Ki === 45) { + ur += "-", Ne++; + continue; + } else if (Ki === 58 && !Ii) { + ur += ":", Ne++, Ii = true, Ge = 79; + continue; + } + var Fi = Ne; + if (ur += ae(), Ne === Fi) + break; + } + return ur.slice(-1) === ":" && (ur = ur.slice(0, -1), Ne--), Xe(); + } + return Ge; + } + function gr() { + switch (lr = Ne, Er.charCodeAt(Ne)) { + case 34: + case 39: + return ur = Xi(true), Ge = 10; + default: + return Ze(); + } + } + function Vr() { + return Ne = be = lr, gr(); + } + function Tr() { + if (lr = be = Ne, yr = 0, Ne >= n) + return Ge = 1; + var Ii = rr(Er, Ne); + switch (Ne += Ie(Ii), Ii) { + case 9: + case 11: + case 12: + case 32: + for (; Ne < n && A(Er.charCodeAt(Ne)); ) + Ne++; + return Ge = 5; + case 64: + return Ge = 59; + case 13: + Er.charCodeAt(Ne) === 10 && Ne++; + case 10: + return yr |= 1, Ge = 4; + case 42: + return Ge = 41; + case 123: + return Ge = 18; + case 125: + return Ge = 19; + case 91: + return Ge = 22; + case 93: + return Ge = 23; + case 60: + return Ge = 29; + case 62: + return Ge = 31; + case 61: + return Ge = 63; + case 44: + return Ge = 27; + case 46: + return Ge = 24; + case 96: + return Ge = 61; + case 35: + return Ge = 62; + case 92: + Ne--; + var Ki = pi(); + if (Ki >= 0 && Re(Ki, ye)) + return Ne += 3, yr |= 8, ur = Zt() + ae(), Ge = Xe(); + var Fi = _r(); + return Fi >= 0 && Re(Fi, ye) ? (Ne += 6, yr |= 1024, ur = String.fromCharCode(Fi) + ae(), Ge = Xe()) : (Ne++, Ge = 0); + } + if (Re(Ii, ye)) { + for (var ui = Ii; Ne < n && ze(ui = rr(Er, Ne), ye) || Er.charCodeAt(Ne) === 45; ) + Ne += Ie(ui); + return ur = Er.substring(be, Ne), ui === 92 && (ur += ae()), Ge = Xe(); + } else + return Ge = 0; + } + function vi(Ii, Ki) { + var Fi = Ne, ui = lr, Bt = be, wt = Ge, na = ur, Ai = yr, Oi = Ii(); + return (!Oi || Ki) && (Ne = Fi, lr = ui, be = Bt, Ge = wt, ur = na, yr = Ai), Oi; + } + function Ui(Ii, Ki, Fi) { + var ui = n, Bt = Ne, wt = lr, na = be, Ai = Ge, Oi = ur, ji = yr, Vi = Ir; + nt(Er, Ii, Ki); + var at = Fi(); + return n = ui, Ne = Bt, lr = wt, be = na, Ge = Ai, ur = Oi, yr = ji, Ir = Vi, at; + } + function Yi(Ii) { + return vi(Ii, true); + } + function Wi(Ii) { + return vi(Ii, false); + } + function ct() { + return Er; + } + function Li() { + Ir = void 0; + } + function nt(Ii, Ki, Fi) { + Er = Ii || "", n = Fi === void 0 ? Er.length : Ki + Fi, Dt(Ki || 0); + } + function Mt(Ii) { + Cr = Ii; + } + function xt(Ii) { + ye = Ii; + } + function ut(Ii) { + er = Ii; + } + function Dt(Ii) { + e.Debug.assert(Ii >= 0), Ne = Ii, lr = Ii, be = Ii, Ge = 0, ur = void 0, yr = 0; + } + function Rt(Ii) { + wr += Ii ? 1 : -1; + } + } + e.createScanner = He; + var rr = String.prototype.codePointAt ? function(ye, Ae) { + return ye.codePointAt(Ae); + } : function(Ae, er) { + var ir = Ae.length; + if (!(er < 0 || er >= ir)) { + var Cr = Ae.charCodeAt(er); + if (Cr >= 55296 && Cr <= 56319 && ir > er + 1) { + var Ye = Ae.charCodeAt(er + 1); + if (Ye >= 56320 && Ye <= 57343) + return (Cr - 55296) * 1024 + Ye - 56320 + 65536; + } + return Cr; + } + }; + function Ie(ye) { + return ye >= 65536 ? 2 : 1; + } + function _e(ye) { + if (e.Debug.assert(0 <= ye && ye <= 1114111), ye <= 65535) + return String.fromCharCode(ye); + var Ae = Math.floor((ye - 65536) / 1024) + 55296, er = (ye - 65536) % 1024 + 56320; + return String.fromCharCode(Ae, er); + } + var we = String.fromCodePoint ? function(ye) { + return String.fromCodePoint(ye); + } : _e; + function de(ye) { + return we(ye); + } + e.utf16EncodeAsString = de; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(je) { + return e.pathIsRelative(je) || e.isRootedDiskPath(je); + } + e.isExternalModuleNameRelative = a; + function C(je) { + return e.sortAndDeduplicate(je, e.compareDiagnostics); + } + e.sortAndDeduplicateDiagnostics = C; + function w(je) { + switch (e.getEmitScriptTarget(je)) { + case 99: + return "lib.esnext.full.d.ts"; + case 9: + return "lib.es2022.full.d.ts"; + case 8: + return "lib.es2021.full.d.ts"; + case 7: + return "lib.es2020.full.d.ts"; + case 6: + return "lib.es2019.full.d.ts"; + case 5: + return "lib.es2018.full.d.ts"; + case 4: + return "lib.es2017.full.d.ts"; + case 3: + return "lib.es2016.full.d.ts"; + case 2: + return "lib.es6.d.ts"; + default: + return "lib.d.ts"; + } + } + e.getDefaultLibFileName = w; + function B(je) { + return je.start + je.length; + } + e.textSpanEnd = B; + function E(je) { + return je.length === 0; + } + e.textSpanIsEmpty = E; + function Q(je, Hr) { + return Hr >= je.start && Hr < B(je); + } + e.textSpanContainsPosition = Q; + function le(je, Hr) { + return Hr >= je.pos && Hr <= je.end; + } + e.textRangeContainsPositionInclusive = le; + function N(je, Hr) { + return Hr.start >= je.start && B(Hr) <= B(je); + } + e.textSpanContainsTextSpan = N; + function p(je, Hr) { + return m(je, Hr) !== void 0; + } + e.textSpanOverlapsWith = p; + function m(je, Hr) { + var pt = K(je, Hr); + return pt && pt.length === 0 ? void 0 : pt; + } + e.textSpanOverlap = m; + function G(je, Hr) { + return f(je.start, je.length, Hr.start, Hr.length); + } + e.textSpanIntersectsWithTextSpan = G; + function oe(je, Hr, pt) { + return f(je.start, je.length, Hr, pt); + } + e.textSpanIntersectsWith = oe; + function f(je, Hr, pt, Pt) { + var ga = je + Hr, ua = pt + Pt; + return pt <= ga && ua >= je; + } + e.decodedTextSpanIntersectsWith = f; + function T(je, Hr) { + return Hr <= B(je) && Hr >= je.start; + } + e.textSpanIntersectsWithPosition = T; + function K(je, Hr) { + var pt = Math.max(je.start, Hr.start), Pt = Math.min(B(je), B(Hr)); + return pt <= Pt ? se(pt, Pt) : void 0; + } + e.textSpanIntersection = K; + function b(je, Hr) { + if (je < 0) + throw new Error("start < 0"); + if (Hr < 0) + throw new Error("length < 0"); + return { start: je, length: Hr }; + } + e.createTextSpan = b; + function se(je, Hr) { + return b(je, Hr - je); + } + e.createTextSpanFromBounds = se; + function J(je) { + return b(je.span.start, je.newLength); + } + e.textChangeRangeNewSpan = J; + function ie(je) { + return E(je.span) && je.newLength === 0; + } + e.textChangeRangeIsUnchanged = ie; + function R(je, Hr) { + if (Hr < 0) + throw new Error("newLength < 0"); + return { span: je, newLength: Hr }; + } + e.createTextChangeRange = R, e.unchangedTextChangeRange = R(b(0, 0), 0); + function q(je) { + if (je.length === 0) + return e.unchangedTextChangeRange; + if (je.length === 1) + return je[0]; + for (var Hr = je[0], pt = Hr.span.start, Pt = B(Hr.span), ga = pt + Hr.newLength, ua = 1; ua < je.length; ua++) { + var Xn = je[ua], jr = pt, fo = Pt, xs = ga, Fo = Xn.span.start, ko = B(Xn.span), Ao = Fo + Xn.newLength; + pt = Math.min(jr, Fo), Pt = Math.max(fo, fo + (ko - xs)), ga = Math.max(Ao, Ao + (xs - ko)); + } + return R(se(pt, Pt), ga - pt); + } + e.collapseTextChangeRangesAcrossMultipleVersions = q; + function O(je) { + if (je && je.kind === 163) { + for (var Hr = je; Hr; Hr = Hr.parent) + if (Dt(Hr) || na(Hr) || Hr.kind === 258) + return Hr; + } + } + e.getTypeParameterOwner = O; + function ve(je, Hr) { + return e.hasSyntacticModifier(je, 16476) && Hr.kind === 171; + } + e.isParameterPropertyDeclaration = ve; + function ee(je) { + return $a(je) ? e.every(je.elements, he) : false; + } + e.isEmptyBindingPattern = ee; + function he(je) { + return e.isOmittedExpression(je) ? true : ee(je.name); + } + e.isEmptyBindingElement = he; + function F(je) { + for (var Hr = je.parent; e.isBindingElement(Hr.parent); ) + Hr = Hr.parent.parent; + return Hr.parent; + } + e.walkUpBindingElementsAndPatterns = F; + function x(je, Hr) { + e.isBindingElement(je) && (je = F(je)); + var pt = Hr(je); + return je.kind === 254 && (je = je.parent), je && je.kind === 255 && (pt |= Hr(je), je = je.parent), je && je.kind === 237 && (pt |= Hr(je)), pt; + } + function X(je) { + return x(je, e.getEffectiveModifierFlags); + } + e.getCombinedModifierFlags = X; + function $(je) { + return x(je, e.getEffectiveModifierFlagsAlwaysIncludeJSDoc); + } + e.getCombinedNodeFlagsAlwaysIncludeJSDoc = $; + function A(je) { + return x(je, function(Hr) { + return Hr.flags; + }); + } + e.getCombinedNodeFlags = A, e.supportedLocaleDirectories = ["cs", "de", "es", "fr", "it", "ja", "ko", "pl", "pt-br", "ru", "tr", "zh-cn", "zh-tw"]; + function y(je, Hr, pt) { + var Pt = je.toLowerCase(), ga = /^([a-z]+)([_\-]([a-z]+))?$/.exec(Pt); + if (!ga) { + pt && pt.push(e.createCompilerDiagnostic(e.Diagnostics.Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1, "en", "ja-jp")); + return; + } + var ua = ga[1], Xn = ga[3]; + e.contains(e.supportedLocaleDirectories, Pt) && !jr(ua, Xn, pt) && jr(ua, void 0, pt), e.setUILocale(je); + function jr(fo, xs, Fo) { + var ko = e.normalizePath(Hr.getExecutingFilePath()), Ao = e.getDirectoryPath(ko), Ms = e.combinePaths(Ao, fo); + if (xs && (Ms = Ms + "-" + xs), Ms = Hr.resolvePath(e.combinePaths(Ms, "diagnosticMessages.generated.json")), !Hr.fileExists(Ms)) + return false; + var Bs = ""; + try { + Bs = Hr.readFile(Ms); + } catch { + return Fo && Fo.push(e.createCompilerDiagnostic(e.Diagnostics.Unable_to_open_file_0, Ms)), false; + } + try { + e.setLocalizedDiagnosticMessages(JSON.parse(Bs)); + } catch { + return Fo && Fo.push(e.createCompilerDiagnostic(e.Diagnostics.Corrupted_locale_file_0, Ms)), false; + } + return true; + } + } + e.validateLocaleAndSetLanguage = y; + function V(je, Hr) { + if (je) + for (; je.original !== void 0; ) + je = je.original; + return !Hr || Hr(je) ? je : void 0; + } + e.getOriginalNode = V; + function L(je, Hr) { + for (; je; ) { + var pt = Hr(je); + if (pt === "quit") + return; + if (pt) + return je; + je = je.parent; + } + } + e.findAncestor = L; + function P(je) { + return (je.flags & 8) === 0; + } + e.isParseTreeNode = P; + function k(je, Hr) { + if (je === void 0 || P(je)) + return je; + for (je = je.original; je; ) { + if (P(je)) + return !Hr || Hr(je) ? je : void 0; + je = je.original; + } + } + e.getParseTreeNode = k; + function Y(je) { + return je.length >= 2 && je.charCodeAt(0) === 95 && je.charCodeAt(1) === 95 ? "_" + je : je; + } + e.escapeLeadingUnderscores = Y; + function U(je) { + var Hr = je; + return Hr.length >= 3 && Hr.charCodeAt(0) === 95 && Hr.charCodeAt(1) === 95 && Hr.charCodeAt(2) === 95 ? Hr.substr(1) : Hr; + } + e.unescapeLeadingUnderscores = U; + function j(je) { + return U(je.escapedText); + } + e.idText = j; + function H(je) { + return je.valueDeclaration && Ui(je.valueDeclaration) ? j(je.valueDeclaration.name) : U(je.escapedName); + } + e.symbolName = H; + function I(je) { + var Hr = je.parent.parent; + if (!!Hr) { + if (Si(Hr)) + return l(Hr); + switch (Hr.kind) { + case 237: + if (Hr.declarationList && Hr.declarationList.declarations[0]) + return l(Hr.declarationList.declarations[0]); + break; + case 238: + var pt = Hr.expression; + switch (pt.kind === 221 && pt.operatorToken.kind === 63 && (pt = pt.left), pt.kind) { + case 206: + return pt.name; + case 207: + var Pt = pt.argumentExpression; + if (e.isIdentifier(Pt)) + return Pt; + } + break; + case 212: + return l(Hr.expression); + case 250: { + if (Si(Hr.statement) || En(Hr.statement)) + return l(Hr.statement); + break; + } + } + } + } + function l(je) { + var Hr = ne(je); + return Hr && e.isIdentifier(Hr) ? Hr : void 0; + } + function d(je, Hr) { + return !!(fe(je) && e.isIdentifier(je.name) && j(je.name) === j(Hr) || e.isVariableStatement(je) && e.some(je.declarationList.declarations, function(pt) { + return d(pt, Hr); + })); + } + e.nodeHasName = d; + function D(je) { + return je.name || I(je); + } + e.getNameOfJSDocTypedef = D; + function fe(je) { + return !!je.name; + } + e.isNamedDeclaration = fe; + function g(je) { + switch (je.kind) { + case 79: + return je; + case 347: + case 340: { + var Hr = je.name; + if (Hr.kind === 161) + return Hr.right; + break; + } + case 208: + case 221: { + var pt = je; + switch (e.getAssignmentDeclarationKind(pt)) { + case 1: + case 4: + case 5: + case 3: + return e.getElementOrPropertyAccessArgumentExpressionOrName(pt.left); + case 7: + case 8: + case 9: + return pt.arguments[1]; + default: + return; + } + } + case 345: + return D(je); + case 339: + return I(je); + case 271: { + var Pt = je.expression; + return e.isIdentifier(Pt) ? Pt : void 0; + } + case 207: + var ga = je; + if (e.isBindableStaticElementAccessExpression(ga)) + return ga.argumentExpression; + } + return je.name; + } + e.getNonAssignedNameOfDeclaration = g; + function ne(je) { + if (je !== void 0) + return g(je) || (e.isFunctionExpression(je) || e.isArrowFunction(je) || e.isClassExpression(je) ? ue(je) : void 0); + } + e.getNameOfDeclaration = ne; + function ue(je) { + if (je.parent) { + if (e.isPropertyAssignment(je.parent) || e.isBindingElement(je.parent)) + return je.parent.name; + if (e.isBinaryExpression(je.parent) && je === je.parent.right) { + if (e.isIdentifier(je.parent.left)) + return je.parent.left; + if (e.isAccessExpression(je.parent.left)) + return e.getElementOrPropertyAccessArgumentExpressionOrName(je.parent.left); + } else if (e.isVariableDeclaration(je.parent) && e.isIdentifier(je.parent.name)) + return je.parent.name; + } else + return; + } + e.getAssignedName = ue; + function We(je, Hr) { + if (je.name) + if (e.isIdentifier(je.name)) { + var pt = je.name.escapedText; + return yr(je.parent, Hr).filter(function(ua) { + return e.isJSDocParameterTag(ua) && e.isIdentifier(ua.name) && ua.name.escapedText === pt; + }); + } else { + var Pt = je.parent.parameters.indexOf(je); + e.Debug.assert(Pt > -1, "Parameters should always be in their parents' parameter list"); + var ga = yr(je.parent, Hr).filter(e.isJSDocParameterTag); + if (Pt < ga.length) + return [ga[Pt]]; + } + return e.emptyArray; + } + function Fe(je) { + return We(je, false); + } + e.getJSDocParameterTags = Fe; + function Z(je) { + return We(je, true); + } + e.getJSDocParameterTagsNoCache = Z; + function Be(je, Hr) { + var pt = je.name.escapedText; + return yr(je.parent, Hr).filter(function(Pt) { + return e.isJSDocTemplateTag(Pt) && Pt.typeParameters.some(function(ga) { + return ga.name.escapedText === pt; + }); + }); + } + function ge(je) { + return Be(je, false); + } + e.getJSDocTypeParameterTags = ge; + function Re(je) { + return Be(je, true); + } + e.getJSDocTypeParameterTagsNoCache = Re; + function ze(je) { + return !!Ur(je, e.isJSDocParameterTag); + } + e.hasJSDocParameterTags = ze; + function Ee(je) { + return Ur(je, e.isJSDocAugmentsTag); + } + e.getJSDocAugmentsTag = Ee; + function He(je) { + return ii(je, e.isJSDocImplementsTag); + } + e.getJSDocImplementsTags = He; + function rr(je) { + return Ur(je, e.isJSDocClassTag); + } + e.getJSDocClassTag = rr; + function Ie(je) { + return Ur(je, e.isJSDocPublicTag); + } + e.getJSDocPublicTag = Ie; + function _e(je) { + return Ur(je, e.isJSDocPublicTag, true); + } + e.getJSDocPublicTagNoCache = _e; + function we(je) { + return Ur(je, e.isJSDocPrivateTag); + } + e.getJSDocPrivateTag = we; + function de(je) { + return Ur(je, e.isJSDocPrivateTag, true); + } + e.getJSDocPrivateTagNoCache = de; + function ye(je) { + return Ur(je, e.isJSDocProtectedTag); + } + e.getJSDocProtectedTag = ye; + function Ae(je) { + return Ur(je, e.isJSDocProtectedTag, true); + } + e.getJSDocProtectedTagNoCache = Ae; + function er(je) { + return Ur(je, e.isJSDocReadonlyTag); + } + e.getJSDocReadonlyTag = er; + function ir(je) { + return Ur(je, e.isJSDocReadonlyTag, true); + } + e.getJSDocReadonlyTagNoCache = ir; + function Cr(je) { + return Ur(je, e.isJSDocOverrideTag, true); + } + e.getJSDocOverrideTagNoCache = Cr; + function Ye(je) { + return Ur(je, e.isJSDocDeprecatedTag); + } + e.getJSDocDeprecatedTag = Ye; + function Br(je) { + return Ur(je, e.isJSDocDeprecatedTag, true); + } + e.getJSDocDeprecatedTagNoCache = Br; + function Er(je) { + return Ur(je, e.isJSDocEnumTag); + } + e.getJSDocEnumTag = Er; + function Ne(je) { + return Ur(je, e.isJSDocThisTag); + } + e.getJSDocThisTag = Ne; + function n(je) { + return Ur(je, e.isJSDocReturnTag); + } + e.getJSDocReturnTag = n; + function lr(je) { + return Ur(je, e.isJSDocTemplateTag); + } + e.getJSDocTemplateTag = lr; + function be(je) { + var Hr = Ur(je, e.isJSDocTypeTag); + if (Hr && Hr.typeExpression && Hr.typeExpression.type) + return Hr; + } + e.getJSDocTypeTag = be; + function Ge(je) { + var Hr = Ur(je, e.isJSDocTypeTag); + return !Hr && e.isParameter(je) && (Hr = e.find(Fe(je), function(pt) { + return !!pt.typeExpression; + })), Hr && Hr.typeExpression && Hr.typeExpression.type; + } + e.getJSDocType = Ge; + function ur(je) { + var Hr = n(je); + if (Hr && Hr.typeExpression) + return Hr.typeExpression.type; + var pt = be(je); + if (pt && pt.typeExpression) { + var Pt = pt.typeExpression.type; + if (e.isTypeLiteralNode(Pt)) { + var ga = e.find(Pt.members, e.isCallSignatureDeclaration); + return ga && ga.type; + } + if (e.isFunctionTypeNode(Pt) || e.isJSDocFunctionType(Pt)) + return Pt.type; + } + } + e.getJSDocReturnType = ur; + function yr(je, Hr) { + var pt = je.jsDocCache; + if (pt === void 0 || Hr) { + var Pt = e.getJSDocCommentsAndTags(je, Hr); + e.Debug.assert(Pt.length < 2 || Pt[0] !== Pt[1]), pt = e.flatMap(Pt, function(ga) { + return e.isJSDoc(ga) ? ga.tags : ga; + }), Hr || (je.jsDocCache = pt); + } + return pt; + } + function Ir(je) { + return yr(je, false); + } + e.getJSDocTags = Ir; + function wr(je) { + return yr(je, true); + } + e.getJSDocTagsNoCache = wr; + function Ur(je, Hr, pt) { + return e.find(yr(je, pt), Hr); + } + function ii(je, Hr) { + return Ir(je).filter(Hr); + } + e.getAllJSDocTags = ii; + function mi(je, Hr) { + return Ir(je).filter(function(pt) { + return pt.kind === Hr; + }); + } + e.getAllJSDocTagsOfKind = mi; + function pe(je) { + return typeof je == "string" ? je : je == null ? void 0 : je.map(function(Hr) { + return Hr.kind === 321 ? Hr.text : or(Hr); + }).join(""); + } + e.getTextOfJSDocComment = pe; + function or(je) { + var Hr = je.kind === 324 ? "link" : je.kind === 325 ? "linkcode" : "linkplain", pt = je.name ? e.entityNameToString(je.name) : "", Pt = je.name && je.text.startsWith("://") ? "" : " "; + return "{@".concat(Hr, " ").concat(pt).concat(Pt).concat(je.text, "}"); + } + function qr(je) { + if (e.isJSDocSignature(je)) + return e.emptyArray; + if (e.isJSDocTypeAlias(je)) + return e.Debug.assert(je.parent.kind === 320), e.flatMap(je.parent.tags, function(Pt) { + return e.isJSDocTemplateTag(Pt) ? Pt.typeParameters : void 0; + }); + if (je.typeParameters) + return je.typeParameters; + if (e.isInJSFile(je)) { + var Hr = e.getJSDocTypeParameterDeclarations(je); + if (Hr.length) + return Hr; + var pt = Ge(je); + if (pt && e.isFunctionTypeNode(pt) && pt.typeParameters) + return pt.typeParameters; + } + return e.emptyArray; + } + e.getEffectiveTypeParameterDeclarations = qr; + function si(je) { + return je.constraint ? je.constraint : e.isJSDocTemplateTag(je.parent) && je === je.parent.typeParameters[0] ? je.parent.constraint : void 0; + } + e.getEffectiveConstraintOfTypeParameter = si; + function Di(je) { + return je.kind === 79 || je.kind === 80; + } + e.isMemberName = Di; + function wi(je) { + return je.kind === 173 || je.kind === 172; + } + e.isGetOrSetAccessorDeclaration = wi; + function Xi(je) { + return e.isPropertyAccessExpression(je) && !!(je.flags & 32); + } + e.isPropertyAccessChain = Xi; + function et(je) { + return e.isElementAccessExpression(je) && !!(je.flags & 32); + } + e.isElementAccessChain = et; + function Gi(je) { + return e.isCallExpression(je) && !!(je.flags & 32); + } + e.isCallChain = Gi; + function Wt(je) { + var Hr = je.kind; + return !!(je.flags & 32) && (Hr === 206 || Hr === 207 || Hr === 208 || Hr === 230); + } + e.isOptionalChain = Wt; + function Zt(je) { + return Wt(je) && !e.isNonNullExpression(je) && !!je.questionDotToken; + } + e.isOptionalChainRoot = Zt; + function _r(je) { + return Zt(je.parent) && je.parent.expression === je; + } + e.isExpressionOfOptionalChainRoot = _r; + function pi(je) { + return !Wt(je.parent) || Zt(je.parent) || je !== je.parent.expression; + } + e.isOutermostOptionalChain = pi; + function ae(je) { + return je.kind === 221 && je.operatorToken.kind === 60; + } + e.isNullishCoalesce = ae; + function Xe(je) { + return e.isTypeReferenceNode(je) && e.isIdentifier(je.typeName) && je.typeName.escapedText === "const" && !je.typeArguments; + } + e.isConstTypeReference = Xe; + function Jr(je) { + return e.skipOuterExpressions(je, 8); + } + e.skipPartiallyEmittedExpressions = Jr; + function ti(je) { + return e.isNonNullExpression(je) && !!(je.flags & 32); + } + e.isNonNullChain = ti; + function Ze(je) { + return je.kind === 246 || je.kind === 245; + } + e.isBreakOrContinueStatement = Ze; + function Sr(je) { + return je.kind === 274 || je.kind === 273; + } + e.isNamedExportBindings = Sr; + function zr(je) { + switch (je.kind) { + case 302: + case 303: + return true; + default: + return false; + } + } + e.isUnparsedTextLike = zr; + function Wr(je) { + return zr(je) || je.kind === 300 || je.kind === 304; + } + e.isUnparsedNode = Wr; + function Je(je) { + return je.kind === 347 || je.kind === 340; + } + e.isJSDocPropertyLikeTag = Je; + function xe(je) { + return vr(je.kind); + } + e.isNode = xe; + function vr(je) { + return je >= 161; + } + e.isNodeKind = vr; + function mr(je) { + return je >= 0 && je <= 160; + } + e.isTokenKind = mr; + function Ar(je) { + return mr(je.kind); + } + e.isToken = Ar; + function Oe(je) { + return je.hasOwnProperty("pos") && je.hasOwnProperty("end"); + } + e.isNodeArray = Oe; + function nr(je) { + return 8 <= je && je <= 14; + } + e.isLiteralKind = nr; + function Mr(je) { + return nr(je.kind); + } + e.isLiteralExpression = Mr; + function Pe(je) { + return 14 <= je && je <= 17; + } + e.isTemplateLiteralKind = Pe; + function Ue(je) { + return Pe(je.kind); + } + e.isTemplateLiteralToken = Ue; + function fr(je) { + var Hr = je.kind; + return Hr === 16 || Hr === 17; + } + e.isTemplateMiddleOrTemplateTail = fr; + function De(je) { + return e.isImportSpecifier(je) || e.isExportSpecifier(je); + } + e.isImportOrExportSpecifier = De; + function gr(je) { + switch (je.kind) { + case 270: + case 275: + return je.isTypeOnly || je.parent.parent.isTypeOnly; + case 268: + return je.parent.isTypeOnly; + case 267: + case 265: + return je.isTypeOnly; + default: + return false; + } + } + e.isTypeOnlyImportOrExportDeclaration = gr; + function Vr(je) { + return e.isStringLiteral(je) || e.isIdentifier(je); + } + e.isAssertionKey = Vr; + function Tr(je) { + return je.kind === 10 || Pe(je.kind); + } + e.isStringTextContainingNode = Tr; + function vi(je) { + return e.isIdentifier(je) && (je.autoGenerateFlags & 7) > 0; + } + e.isGeneratedIdentifier = vi; + function Ui(je) { + return (e.isPropertyDeclaration(je) || Oi(je)) && e.isPrivateIdentifier(je.name); + } + e.isPrivateIdentifierClassElementDeclaration = Ui; + function Yi(je) { + return e.isPropertyAccessExpression(je) && e.isPrivateIdentifier(je.name); + } + e.isPrivateIdentifierPropertyAccessExpression = Yi; + function Wi(je) { + switch (je) { + case 126: + case 131: + case 85: + case 135: + case 88: + case 93: + case 101: + case 123: + case 121: + case 122: + case 145: + case 124: + case 144: + case 159: + return true; + } + return false; + } + e.isModifierKind = Wi; + function ct(je) { + return !!(e.modifierToFlag(je) & 16476); + } + e.isParameterPropertyModifier = ct; + function Li(je) { + return ct(je) || je === 124 || je === 159; + } + e.isClassMemberModifier = Li; + function nt(je) { + return Wi(je.kind); + } + e.isModifier = nt; + function Mt(je) { + var Hr = je.kind; + return Hr === 161 || Hr === 79; + } + e.isEntityName = Mt; + function xt(je) { + var Hr = je.kind; + return Hr === 79 || Hr === 80 || Hr === 10 || Hr === 8 || Hr === 162; + } + e.isPropertyName = xt; + function ut(je) { + var Hr = je.kind; + return Hr === 79 || Hr === 201 || Hr === 202; + } + e.isBindingName = ut; + function Dt(je) { + return !!je && ui(je.kind); + } + e.isFunctionLike = Dt; + function Rt(je) { + return !!je && (ui(je.kind) || e.isClassStaticBlockDeclaration(je)); + } + e.isFunctionLikeOrClassStaticBlockDeclaration = Rt; + function Ii(je) { + return je && Fi(je.kind); + } + e.isFunctionLikeDeclaration = Ii; + function Ki(je) { + return je.kind === 110 || je.kind === 95; + } + e.isBooleanLiteral = Ki; + function Fi(je) { + switch (je) { + case 256: + case 169: + case 171: + case 172: + case 173: + case 213: + case 214: + return true; + default: + return false; + } + } + function ui(je) { + switch (je) { + case 168: + case 174: + case 323: + case 175: + case 176: + case 179: + case 317: + case 180: + return true; + default: + return Fi(je); + } + } + e.isFunctionLikeKind = ui; + function Bt(je) { + return e.isSourceFile(je) || e.isModuleBlock(je) || e.isBlock(je) && Dt(je.parent); + } + e.isFunctionOrModuleBlock = Bt; + function wt(je) { + var Hr = je.kind; + return Hr === 171 || Hr === 167 || Hr === 169 || Hr === 172 || Hr === 173 || Hr === 176 || Hr === 170 || Hr === 234; + } + e.isClassElement = wt; + function na(je) { + return je && (je.kind === 257 || je.kind === 226); + } + e.isClassLike = na; + function Ai(je) { + return je && (je.kind === 172 || je.kind === 173); + } + e.isAccessor = Ai; + function Oi(je) { + switch (je.kind) { + case 169: + case 172: + case 173: + return true; + default: + return false; + } + } + e.isMethodOrAccessor = Oi; + function ji(je) { + var Hr = je.kind; + return Hr === 175 || Hr === 174 || Hr === 166 || Hr === 168 || Hr === 176 || Hr === 172 || Hr === 173; + } + e.isTypeElement = ji; + function Vi(je) { + return ji(je) || wt(je); + } + e.isClassOrTypeElement = Vi; + function at(je) { + var Hr = je.kind; + return Hr === 296 || Hr === 297 || Hr === 298 || Hr === 169 || Hr === 172 || Hr === 173; + } + e.isObjectLiteralElementLike = at; + function At(je) { + return e.isTypeNodeKind(je.kind); + } + e.isTypeNode = At; + function ba(je) { + switch (je.kind) { + case 179: + case 180: + return true; + } + return false; + } + e.isFunctionOrConstructorTypeNode = ba; + function $a(je) { + if (je) { + var Hr = je.kind; + return Hr === 202 || Hr === 201; + } + return false; + } + e.isBindingPattern = $a; + function Qa(je) { + var Hr = je.kind; + return Hr === 204 || Hr === 205; + } + e.isAssignmentPattern = Qa; + function ai(je) { + var Hr = je.kind; + return Hr === 203 || Hr === 227; + } + e.isArrayBindingElement = ai; + function Dn(je) { + switch (je.kind) { + case 254: + case 164: + case 203: + return true; + } + return false; + } + e.isDeclarationBindingElement = Dn; + function ka(je) { + return Ba(je) || Cn(je); + } + e.isBindingOrAssignmentPattern = ka; + function Ba(je) { + switch (je.kind) { + case 201: + case 205: + return true; + } + return false; + } + e.isObjectBindingOrAssignmentPattern = Ba; + function pn(je) { + switch (je.kind) { + case 203: + case 296: + case 297: + case 298: + return true; + } + return false; + } + e.isObjectBindingOrAssignmentElement = pn; + function Cn(je) { + switch (je.kind) { + case 202: + case 204: + return true; + } + return false; + } + e.isArrayBindingOrAssignmentPattern = Cn; + function Bi(je) { + var Hr = je.kind; + return Hr === 206 || Hr === 161 || Hr === 200; + } + e.isPropertyAccessOrQualifiedNameOrImportTypeNode = Bi; + function kn(je) { + var Hr = je.kind; + return Hr === 206 || Hr === 161; + } + e.isPropertyAccessOrQualifiedName = kn; + function xn(je) { + switch (je.kind) { + case 280: + case 279: + case 208: + case 209: + case 210: + case 165: + return true; + default: + return false; + } + } + e.isCallLikeExpression = xn; + function Kn(je) { + return je.kind === 208 || je.kind === 209; + } + e.isCallOrNewExpression = Kn; + function Pn(je) { + var Hr = je.kind; + return Hr === 223 || Hr === 14; + } + e.isTemplateLiteral = Pn; + function eo(je) { + return Rn(Jr(je).kind); + } + e.isLeftHandSideExpression = eo; + function Rn(je) { + switch (je) { + case 206: + case 207: + case 209: + case 208: + case 278: + case 279: + case 282: + case 210: + case 204: + case 212: + case 205: + case 226: + case 213: + case 79: + case 80: + case 13: + case 8: + case 9: + case 10: + case 14: + case 223: + case 95: + case 104: + case 108: + case 110: + case 106: + case 230: + case 228: + case 231: + case 100: + return true; + default: + return false; + } + } + function Da(je) { + return bo(Jr(je).kind); + } + e.isUnaryExpression = Da; + function bo(je) { + switch (je) { + case 219: + case 220: + case 215: + case 216: + case 217: + case 218: + case 211: + return true; + default: + return Rn(je); + } + } + function Ro(je) { + switch (je.kind) { + case 220: + return true; + case 219: + return je.operator === 45 || je.operator === 46; + default: + return false; + } + } + e.isUnaryExpressionWithWrite = Ro; + function En(je) { + return Wn(Jr(je).kind); + } + e.isExpression = En; + function Wn(je) { + switch (je) { + case 222: + case 224: + case 214: + case 221: + case 225: + case 229: + case 227: + case 351: + case 350: + return true; + default: + return bo(je); + } + } + function to(je) { + var Hr = je.kind; + return Hr === 211 || Hr === 229; + } + e.isAssertionExpression = to; + function Co(je) { + return e.isNotEmittedStatement(je) || e.isPartiallyEmittedExpression(je); + } + e.isNotEmittedOrPartiallyEmittedNode = Co; + function Ko(je, Hr) { + switch (je.kind) { + case 242: + case 243: + case 244: + case 240: + case 241: + return true; + case 250: + return Hr && Ko(je.statement, Hr); + } + return false; + } + e.isIterationStatement = Ko; + function Oo(je) { + return e.isExportAssignment(je) || e.isExportDeclaration(je); + } + e.isScopeMarker = Oo; + function no(je) { + return e.some(je, Oo); + } + e.hasScopeMarker = no; + function $o(je) { + return !e.isAnyImportOrReExport(je) && !e.isExportAssignment(je) && !e.hasSyntacticModifier(je, 1) && !e.isAmbientModule(je); + } + e.needsScopeMarker = $o; + function Pr(je) { + return e.isAnyImportOrReExport(je) || e.isExportAssignment(je) || e.hasSyntacticModifier(je, 1); + } + e.isExternalModuleIndicator = Pr; + function xi(je) { + return je.kind === 243 || je.kind === 244; + } + e.isForInOrOfStatement = xi; + function St(je) { + return e.isBlock(je) || En(je); + } + e.isConciseBody = St; + function pa(je) { + return e.isBlock(je); + } + e.isFunctionBody = pa; + function dn(je) { + return e.isVariableDeclarationList(je) || En(je); + } + e.isForInitializer = dn; + function Jn(je) { + var Hr = je.kind; + return Hr === 262 || Hr === 261 || Hr === 79; + } + e.isModuleBody = Jn; + function Qe(je) { + var Hr = je.kind; + return Hr === 262 || Hr === 261; + } + e.isNamespaceBody = Qe; + function Gr(je) { + var Hr = je.kind; + return Hr === 79 || Hr === 261; + } + e.isJSDocNamespaceBody = Gr; + function S(je) { + var Hr = je.kind; + return Hr === 269 || Hr === 268; + } + e.isNamedImportBindings = S; + function Ce(je) { + return je.kind === 261 || je.kind === 260; + } + e.isModuleOrEnumDeclaration = Ce; + function qe(je) { + return je === 214 || je === 203 || je === 257 || je === 226 || je === 170 || je === 171 || je === 260 || je === 299 || je === 275 || je === 256 || je === 213 || je === 172 || je === 267 || je === 265 || je === 270 || je === 258 || je === 285 || je === 169 || je === 168 || je === 261 || je === 264 || je === 268 || je === 274 || je === 164 || je === 296 || je === 167 || je === 166 || je === 173 || je === 297 || je === 259 || je === 163 || je === 254 || je === 345 || je === 338 || je === 347; + } + function br(je) { + return je === 256 || je === 276 || je === 257 || je === 258 || je === 259 || je === 260 || je === 261 || je === 266 || je === 265 || je === 272 || je === 271 || je === 264; + } + function Zr(je) { + return je === 246 || je === 245 || je === 253 || je === 240 || je === 238 || je === 236 || je === 243 || je === 244 || je === 242 || je === 239 || je === 250 || je === 247 || je === 249 || je === 251 || je === 252 || je === 237 || je === 241 || je === 248 || je === 349 || je === 353 || je === 352; + } + function Si(je) { + return je.kind === 163 ? je.parent && je.parent.kind !== 344 || e.isInJSFile(je) : qe(je.kind); + } + e.isDeclaration = Si; + function Pi(je) { + return br(je.kind); + } + e.isDeclarationStatement = Pi; + function Qi(je) { + return Zr(je.kind); + } + e.isStatementButNotDeclaration = Qi; + function Ct(je) { + var Hr = je.kind; + return Zr(Hr) || br(Hr) || sa(je); + } + e.isStatement = Ct; + function sa(je) { + return je.kind !== 235 || je.parent !== void 0 && (je.parent.kind === 252 || je.parent.kind === 292) ? false : !e.isFunctionBlock(je); + } + function en(je) { + var Hr = je.kind; + return Zr(Hr) || br(Hr) || Hr === 235; + } + e.isStatementOrBlock = en; + function Wa(je) { + var Hr = je.kind; + return Hr === 277 || Hr === 161 || Hr === 79; + } + e.isModuleReference = Wa; + function qn(je) { + var Hr = je.kind; + return Hr === 108 || Hr === 79 || Hr === 206; + } + e.isJsxTagNameExpression = qn; + function mo(je) { + var Hr = je.kind; + return Hr === 278 || Hr === 288 || Hr === 279 || Hr === 11 || Hr === 282; + } + e.isJsxChild = mo; + function So(je) { + var Hr = je.kind; + return Hr === 285 || Hr === 287; + } + e.isJsxAttributeLike = So; + function Go(je) { + var Hr = je.kind; + return Hr === 10 || Hr === 288; + } + e.isStringLiteralOrJsxExpression = Go; + function ys(je) { + var Hr = je.kind; + return Hr === 280 || Hr === 279; + } + e.isJsxOpeningLikeElement = ys; + function Pc(je) { + var Hr = je.kind; + return Hr === 289 || Hr === 290; + } + e.isCaseOrDefaultClause = Pc; + function Vc(je) { + return je.kind >= 309 && je.kind <= 347; + } + e.isJSDocNode = Vc; + function Kc(je) { + return je.kind === 320 || je.kind === 319 || je.kind === 321 || qi(je) || Xs(je) || e.isJSDocTypeLiteral(je) || e.isJSDocSignature(je); + } + e.isJSDocCommentContainingNode = Kc; + function Xs(je) { + return je.kind >= 327 && je.kind <= 347; + } + e.isJSDocTag = Xs; + function pc(je) { + return je.kind === 173; + } + e.isSetAccessor = pc; + function hs(je) { + return je.kind === 172; + } + e.isGetAccessor = hs; + function tc(je) { + var Hr = je.jsDoc; + return !!Hr && Hr.length > 0; + } + e.hasJSDocNodes = tc; + function ps(je) { + return !!je.type; + } + e.hasType = ps; + function Qs(je) { + return !!je.initializer; + } + e.hasInitializer = Qs; + function js(je) { + switch (je.kind) { + case 254: + case 164: + case 203: + case 166: + case 167: + case 296: + case 299: + return true; + default: + return false; + } + } + e.hasOnlyExpressionInitializer = js; + function ds(je) { + return je.kind === 285 || je.kind === 287 || at(je); + } + e.isObjectLiteralElement = ds; + function Ji(je) { + return je.kind === 178 || je.kind === 228; + } + e.isTypeReferenceType = Ji; + var ce = 1073741823; + function Rr(je) { + for (var Hr = ce, pt = 0, Pt = je; pt < Pt.length; pt++) { + var ga = Pt[pt]; + if (!!ga.length) { + for (var ua = 0; ua < ga.length && ua < Hr && e.isWhiteSpaceLike(ga.charCodeAt(ua)); ua++) + ; + if (ua < Hr && (Hr = ua), Hr === 0) + return 0; + } + } + return Hr === ce ? void 0 : Hr; + } + e.guessIndentation = Rr; + function yi(je) { + return je.kind === 10 || je.kind === 14; + } + e.isStringLiteralLike = yi; + function qi(je) { + return je.kind === 324 || je.kind === 325 || je.kind === 326; + } + e.isJSDocLinkLike = qi; + })(ke || (ke = {})); + var ke; + (function(e) { + e.resolvingEmptyArray = [], e.externalHelpersModuleNameText = "tslib", e.defaultMaximumTruncationLength = 160, e.noTruncationMaximumTruncationLength = 1e6; + function a(c, te) { + var xr = c.declarations; + if (xr) + for (var ei = 0, bi = xr; ei < bi.length; ei++) { + var Ft = bi[ei]; + if (Ft.kind === te) + return Ft; + } + } + e.getDeclarationOfKind = a; + function C(c, te) { + return e.filter(c.declarations || e.emptyArray, function(xr) { + return xr.kind === te; + }); + } + e.getDeclarationsOfKind = C; + function w(c) { + var te = new e.Map(); + if (c) + for (var xr = 0, ei = c; xr < ei.length; xr++) { + var bi = ei[xr]; + te.set(bi.escapedName, bi); + } + return te; + } + e.createSymbolTable = w; + function B(c) { + return (c.flags & 33554432) !== 0; + } + e.isTransientSymbol = B; + var E = Q(); + function Q() { + var c = "", te = function(xr) { + return c += xr; + }; + return { getText: function() { + return c; + }, write: te, rawWrite: te, writeKeyword: te, writeOperator: te, writePunctuation: te, writeSpace: te, writeStringLiteral: te, writeLiteral: te, writeParameter: te, writeProperty: te, writeSymbol: function(xr, ei) { + return te(xr); + }, writeTrailingSemicolon: te, writeComment: te, getTextPos: function() { + return c.length; + }, getLine: function() { + return 0; + }, getColumn: function() { + return 0; + }, getIndent: function() { + return 0; + }, isAtStartOfLine: function() { + return false; + }, hasTrailingComment: function() { + return false; + }, hasTrailingWhitespace: function() { + return !!c.length && e.isWhiteSpaceLike(c.charCodeAt(c.length - 1)); + }, writeLine: function() { + return c += " "; + }, increaseIndent: e.noop, decreaseIndent: e.noop, clear: function() { + return c = ""; + }, trackSymbol: function() { + return false; + }, reportInaccessibleThisError: e.noop, reportInaccessibleUniqueSymbolError: e.noop, reportPrivateInBaseOfClassExpression: e.noop }; + } + function le(c, te) { + return c.configFilePath !== te.configFilePath || N(c, te); + } + e.changesAffectModuleResolution = le; + function N(c, te) { + return m(c, te, e.moduleResolutionOptionDeclarations); + } + e.optionsHaveModuleResolutionChanges = N; + function p(c, te) { + return m(c, te, e.optionsAffectingProgramStructure); + } + e.changesAffectingProgramStructure = p; + function m(c, te, xr) { + return c !== te && xr.some(function(ei) { + return !uo(Bm(c, ei), Bm(te, ei)); + }); + } + e.optionsHaveChanges = m; + function G(c, te) { + for (; ; ) { + var xr = te(c); + if (xr === "quit") + return; + if (xr !== void 0) + return xr; + if (e.isSourceFile(c)) + return; + c = c.parent; + } + } + e.forEachAncestor = G; + function oe(c, te) { + for (var xr = c.entries(), ei = xr.next(); !ei.done; ei = xr.next()) { + var bi = ei.value, Ft = bi[0], ot = bi[1], xa = te(ot, Ft); + if (xa) + return xa; + } + } + e.forEachEntry = oe; + function f(c, te) { + for (var xr = c.keys(), ei = xr.next(); !ei.done; ei = xr.next()) { + var bi = te(ei.value); + if (bi) + return bi; + } + } + e.forEachKey = f; + function T(c, te) { + c.forEach(function(xr, ei) { + te.set(ei, xr); + }); + } + e.copyEntries = T; + function K(c) { + var te = E.getText(); + try { + return c(E), E.getText(); + } finally { + E.clear(), E.writeKeyword(te); + } + } + e.usingSingleLineStringWriter = K; + function b(c) { + return c.end - c.pos; + } + e.getFullWidth = b; + function se(c, te, xr) { + return c && c.resolvedModules && c.resolvedModules.get(te, xr); + } + e.getResolvedModule = se; + function J(c, te, xr, ei) { + c.resolvedModules || (c.resolvedModules = e.createModeAwareCache()), c.resolvedModules.set(te, ei, xr); + } + e.setResolvedModule = J; + function ie(c, te, xr) { + c.resolvedTypeReferenceDirectiveNames || (c.resolvedTypeReferenceDirectiveNames = e.createModeAwareCache()), c.resolvedTypeReferenceDirectiveNames.set(te, void 0, xr); + } + e.setResolvedTypeReferenceDirective = ie; + function R(c, te) { + return c.path === te.path && !c.prepend == !te.prepend && !c.circular == !te.circular; + } + e.projectReferenceIsEqualTo = R; + function q(c, te) { + return c.isExternalLibraryImport === te.isExternalLibraryImport && c.extension === te.extension && c.resolvedFileName === te.resolvedFileName && c.originalPath === te.originalPath && O(c.packageId, te.packageId); + } + e.moduleResolutionIsEqualTo = q; + function O(c, te) { + return c === te || !!c && !!te && c.name === te.name && c.subModuleName === te.subModuleName && c.version === te.version; + } + function ve(c) { + var te = c.name, xr = c.subModuleName; + return xr ? "".concat(te, "/").concat(xr) : te; + } + e.packageIdToPackageName = ve; + function ee(c) { + return "".concat(ve(c), "@").concat(c.version); + } + e.packageIdToString = ee; + function he(c, te) { + return c.resolvedFileName === te.resolvedFileName && c.primary === te.primary && c.originalPath === te.originalPath; + } + e.typeDirectiveIsEqualTo = he; + function F(c, te, xr, ei, bi) { + e.Debug.assert(c.length === te.length); + for (var Ft = 0; Ft < c.length; Ft++) { + var ot = te[Ft], xa = c[Ft], mn = e.isString(xa) ? xa : xa.fileName.toLowerCase(), an = e.isString(xa) ? ei && e.getModeForResolutionAtIndex(ei, Ft) : e.getModeForFileReference(xa, ei == null ? void 0 : ei.impliedNodeFormat), To = xr && xr.get(mn, an), Hn = To ? !ot || !bi(To, ot) : ot; + if (Hn) + return true; + } + return false; + } + e.hasChangesInResolutions = F; + function x(c) { + return X(c), (c.flags & 524288) !== 0; + } + e.containsParseError = x; + function X(c) { + if (!(c.flags & 1048576)) { + var te = (c.flags & 131072) !== 0 || e.forEachChild(c, x); + te && (c.flags |= 524288), c.flags |= 1048576; + } + } + function $(c) { + for (; c && c.kind !== 305; ) + c = c.parent; + return c; + } + e.getSourceFileOfNode = $; + function A(c) { + return $(c.valueDeclaration || Ir(c)); + } + e.getSourceFileOfModule = A; + function y(c, te) { + return !!c && (c.scriptKind === 1 || c.scriptKind === 2) && !c.checkJsDirective && te === void 0; + } + e.isPlainJsFile = y; + function V(c) { + switch (c.kind) { + case 235: + case 263: + case 242: + case 243: + case 244: + return true; + } + return false; + } + e.isStatementWithLocals = V; + function L(c, te) { + return e.Debug.assert(c >= 0), e.getLineStarts(te)[c]; + } + e.getStartPositionOfLine = L; + function P(c) { + var te = $(c), xr = e.getLineAndCharacterOfPosition(te, c.pos); + return "".concat(te.fileName, "(").concat(xr.line + 1, ",").concat(xr.character + 1, ")"); + } + e.nodePosToString = P; + function k(c, te) { + e.Debug.assert(c >= 0); + var xr = e.getLineStarts(te), ei = c, bi = te.text; + if (ei + 1 === xr.length) + return bi.length - 1; + var Ft = xr[ei], ot = xr[ei + 1] - 1; + for (e.Debug.assert(e.isLineBreak(bi.charCodeAt(ot))); Ft <= ot && e.isLineBreak(bi.charCodeAt(ot)); ) + ot--; + return ot; + } + e.getEndLinePosition = k; + function Y(c, te, xr) { + return !(xr && xr(te)) && !c.identifiers.has(te); + } + e.isFileLevelUniqueName = Y; + function U(c) { + return c === void 0 ? true : c.pos === c.end && c.pos >= 0 && c.kind !== 1; + } + e.nodeIsMissing = U; + function j(c) { + return !U(c); + } + e.nodeIsPresent = j; + function H(c, te, xr) { + if (te === void 0 || te.length === 0) + return c; + for (var ei = 0; ei < c.length && xr(c[ei]); ++ei) + ; + return c.splice.apply(c, Ve([ei, 0], te, false)), c; + } + function I(c, te, xr) { + if (te === void 0) + return c; + for (var ei = 0; ei < c.length && xr(c[ei]); ++ei) + ; + return c.splice(ei, 0, te), c; + } + function l(c) { + return Ui(c) || !!(Ie(c) & 1048576); + } + function d(c, te) { + return H(c, te, Ui); + } + e.insertStatementsAfterStandardPrologue = d; + function D(c, te) { + return H(c, te, l); + } + e.insertStatementsAfterCustomPrologue = D; + function fe(c, te) { + return I(c, te, Ui); + } + e.insertStatementAfterStandardPrologue = fe; + function g(c, te) { + return I(c, te, l); + } + e.insertStatementAfterCustomPrologue = g; + function ne(c, te, xr) { + if (c.charCodeAt(te + 1) === 47 && te + 2 < xr && c.charCodeAt(te + 2) === 47) { + var ei = c.substring(te, xr); + return !!(e.fullTripleSlashReferencePathRegEx.test(ei) || e.fullTripleSlashAMDReferencePathRegEx.test(ei) || xt.test(ei) || ut.test(ei)); + } + return false; + } + e.isRecognizedTripleSlashComment = ne; + function ue(c, te) { + return c.charCodeAt(te + 1) === 42 && c.charCodeAt(te + 2) === 33; + } + e.isPinnedComment = ue; + function We(c, te) { + var xr = new e.Map(te.map(function(ot) { + return ["".concat(e.getLineAndCharacterOfPosition(c, ot.range.end).line), ot]; + })), ei = new e.Map(); + return { getUnusedExpectations: bi, markUsed: Ft }; + function bi() { + return e.arrayFrom(xr.entries()).filter(function(ot) { + var xa = ot[0], mn = ot[1]; + return mn.type === 0 && !ei.get(xa); + }).map(function(ot) { + var xa = ot[0], mn = ot[1]; + return mn; + }); + } + function Ft(ot) { + return xr.has("".concat(ot)) ? (ei.set("".concat(ot), true), true) : false; + } + } + e.createCommentDirectivesMap = We; + function Fe(c, te, xr) { + return U(c) ? c.pos : e.isJSDocNode(c) || c.kind === 11 ? e.skipTrivia((te || $(c)).text, c.pos, false, true) : xr && e.hasJSDocNodes(c) ? Fe(c.jsDoc[0], te) : c.kind === 348 && c._children.length > 0 ? Fe(c._children[0], te, xr) : e.skipTrivia((te || $(c)).text, c.pos, false, false, Wa(c)); + } + e.getTokenPosOfNode = Fe; + function Z(c, te) { + return U(c) || !c.decorators ? Fe(c, te) : e.skipTrivia((te || $(c)).text, c.decorators.end); + } + e.getNonDecoratorTokenPosOfNode = Z; + function Be(c, te, xr) { + return xr === void 0 && (xr = false), ze(c.text, te, xr); + } + e.getSourceTextOfNodeFromSourceFile = Be; + function ge(c) { + return !!e.findAncestor(c, e.isJSDocTypeExpression); + } + function Re(c) { + return !!(e.isExportDeclaration(c) && c.exportClause && e.isNamespaceExport(c.exportClause) && c.exportClause.name.escapedText === "default"); + } + e.isExportNamespaceAsDefaultDeclaration = Re; + function ze(c, te, xr) { + if (xr === void 0 && (xr = false), U(te)) + return ""; + var ei = c.substring(xr ? te.pos : e.skipTrivia(c, te.pos), te.end); + return ge(te) && (ei = ei.split(/\r\n|\n|\r/).map(function(bi) { + return e.trimStringStart(bi.replace(/^\s*\*/, "")); + }).join(` +`)), ei; + } + e.getTextOfNodeFromSourceText = ze; + function Ee(c, te) { + return te === void 0 && (te = false), Be($(c), c, te); + } + e.getTextOfNode = Ee; + function He(c) { + return c.pos; + } + function rr(c, te) { + return e.binarySearch(c, te, He, e.compareValues); + } + e.indexOfNode = rr; + function Ie(c) { + var te = c.emitNode; + return te && te.flags || 0; + } + e.getEmitFlags = Ie; + function _e() { + return { es2015: { Array: ["find", "findIndex", "fill", "copyWithin", "entries", "keys", "values"], RegExp: ["flags", "sticky", "unicode"], Reflect: ["apply", "construct", "defineProperty", "deleteProperty", "get", " getOwnPropertyDescriptor", "getPrototypeOf", "has", "isExtensible", "ownKeys", "preventExtensions", "set", "setPrototypeOf"], ArrayConstructor: ["from", "of"], ObjectConstructor: ["assign", "getOwnPropertySymbols", "keys", "is", "setPrototypeOf"], NumberConstructor: ["isFinite", "isInteger", "isNaN", "isSafeInteger", "parseFloat", "parseInt"], Math: ["clz32", "imul", "sign", "log10", "log2", "log1p", "expm1", "cosh", "sinh", "tanh", "acosh", "asinh", "atanh", "hypot", "trunc", "fround", "cbrt"], Map: ["entries", "keys", "values"], Set: ["entries", "keys", "values"], Promise: e.emptyArray, PromiseConstructor: ["all", "race", "reject", "resolve"], Symbol: ["for", "keyFor"], WeakMap: ["entries", "keys", "values"], WeakSet: ["entries", "keys", "values"], Iterator: e.emptyArray, AsyncIterator: e.emptyArray, String: ["codePointAt", "includes", "endsWith", "normalize", "repeat", "startsWith", "anchor", "big", "blink", "bold", "fixed", "fontcolor", "fontsize", "italics", "link", "small", "strike", "sub", "sup"], StringConstructor: ["fromCodePoint", "raw"] }, es2016: { Array: ["includes"] }, es2017: { Atomics: e.emptyArray, SharedArrayBuffer: e.emptyArray, String: ["padStart", "padEnd"], ObjectConstructor: ["values", "entries", "getOwnPropertyDescriptors"], DateTimeFormat: ["formatToParts"] }, es2018: { Promise: ["finally"], RegExpMatchArray: ["groups"], RegExpExecArray: ["groups"], RegExp: ["dotAll"], Intl: ["PluralRules"], AsyncIterable: e.emptyArray, AsyncIterableIterator: e.emptyArray, AsyncGenerator: e.emptyArray, AsyncGeneratorFunction: e.emptyArray, NumberFormat: ["formatToParts"] }, es2019: { Array: ["flat", "flatMap"], ObjectConstructor: ["fromEntries"], String: ["trimStart", "trimEnd", "trimLeft", "trimRight"], Symbol: ["description"] }, es2020: { BigInt: e.emptyArray, BigInt64Array: e.emptyArray, BigUint64Array: e.emptyArray, PromiseConstructor: ["allSettled"], SymbolConstructor: ["matchAll"], String: ["matchAll"], DataView: ["setBigInt64", "setBigUint64", "getBigInt64", "getBigUint64"], RelativeTimeFormat: ["format", "formatToParts", "resolvedOptions"] }, es2021: { PromiseConstructor: ["any"], String: ["replaceAll"] }, es2022: { Array: ["at"], String: ["at"], Int8Array: ["at"], Uint8Array: ["at"], Uint8ClampedArray: ["at"], Int16Array: ["at"], Uint16Array: ["at"], Int32Array: ["at"], Uint32Array: ["at"], Float32Array: ["at"], Float64Array: ["at"], BigInt64Array: ["at"], BigUint64Array: ["at"], ObjectConstructor: ["hasOwn"], Error: ["cause"] } }; + } + e.getScriptTargetFeatures = _e; + var we; + (function(c) { + c[c.None = 0] = "None", c[c.NeverAsciiEscape = 1] = "NeverAsciiEscape", c[c.JsxAttributeEscape = 2] = "JsxAttributeEscape", c[c.TerminateUnterminatedLiterals = 4] = "TerminateUnterminatedLiterals", c[c.AllowNumericSeparator = 8] = "AllowNumericSeparator"; + })(we = e.GetLiteralTextFlags || (e.GetLiteralTextFlags = {})); + function de(c, te, xr) { + var ei; + if (te && ye(c, xr)) + return Be(te, c); + switch (c.kind) { + case 10: { + var bi = xr & 2 ? wc : xr & 1 || Ie(c) & 16777216 ? ks : Zl; + return c.singleQuote ? "'" + bi(c.text, 39) + "'" : '"' + bi(c.text, 34) + '"'; + } + case 14: + case 15: + case 16: + case 17: { + var bi = xr & 1 || Ie(c) & 16777216 ? ks : Zl, Ft = (ei = c.rawText) !== null && ei !== void 0 ? ei : gd(bi(c.text, 96)); + switch (c.kind) { + case 14: + return "`" + Ft + "`"; + case 15: + return "`" + Ft + "${"; + case 16: + return "}" + Ft + "${"; + case 17: + return "}" + Ft + "`"; + } + break; + } + case 8: + case 9: + return c.text; + case 13: + return xr & 4 && c.isUnterminated ? c.text + (c.text.charCodeAt(c.text.length - 1) === 92 ? " /" : "/") : c.text; + } + return e.Debug.fail("Literal kind '".concat(c.kind, "' not accounted for.")); + } + e.getLiteralText = de; + function ye(c, te) { + return F_(c) || !c.parent || te & 4 && c.isUnterminated ? false : e.isNumericLiteral(c) && c.numericLiteralFlags & 512 ? !!(te & 8) : !e.isBigIntLiteral(c); + } + function Ae(c) { + return e.isString(c) ? '"' + Zl(c) + '"' : "" + c; + } + e.getTextOfConstantValue = Ae; + function er(c) { + return e.getBaseFileName(c).replace(/^(\d)/, "_$1").replace(/\W/g, "_"); + } + e.makeIdentifierFromModuleName = er; + function ir(c) { + return (e.getCombinedNodeFlags(c) & 3) !== 0 || Cr(c); + } + e.isBlockOrCatchScoped = ir; + function Cr(c) { + var te = jf(c); + return te.kind === 254 && te.parent.kind === 292; + } + e.isCatchClauseVariableDeclarationOrBindingElement = Cr; + function Ye(c) { + return e.isModuleDeclaration(c) && (c.name.kind === 10 || Ge(c)); + } + e.isAmbientModule = Ye; + function Br(c) { + return e.isModuleDeclaration(c) && c.name.kind === 10; + } + e.isModuleWithStringLiteralName = Br; + function Er(c) { + return e.isModuleDeclaration(c) && e.isStringLiteral(c.name); + } + e.isNonGlobalAmbientModule = Er; + function Ne(c) { + return e.isModuleDeclaration(c) || e.isIdentifier(c); + } + e.isEffectiveModuleDeclaration = Ne; + function n(c) { + return lr(c.valueDeclaration); + } + e.isShorthandAmbientModuleSymbol = n; + function lr(c) { + return !!c && c.kind === 261 && !c.body; + } + function be(c) { + return c.kind === 305 || c.kind === 261 || e.isFunctionLikeOrClassStaticBlockDeclaration(c); + } + e.isBlockScopedContainerTopLevel = be; + function Ge(c) { + return !!(c.flags & 1024); + } + e.isGlobalScopeAugmentation = Ge; + function ur(c) { + return Ye(c) && yr(c); + } + e.isExternalModuleAugmentation = ur; + function yr(c) { + switch (c.parent.kind) { + case 305: + return e.isExternalModule(c.parent); + case 262: + return Ye(c.parent.parent) && e.isSourceFile(c.parent.parent.parent) && !e.isExternalModule(c.parent.parent.parent); + } + return false; + } + e.isModuleAugmentationExternal = yr; + function Ir(c) { + var te; + return (te = c.declarations) === null || te === void 0 ? void 0 : te.find(function(xr) { + return !ur(xr) && !(e.isModuleDeclaration(xr) && Ge(xr)); + }); + } + e.getNonAugmentationDeclaration = Ir; + function wr(c) { + return c === e.ModuleKind.CommonJS || c === e.ModuleKind.Node16 || c === e.ModuleKind.NodeNext; + } + function Ur(c, te) { + return e.isExternalModule(c) || te.isolatedModules || wr(Ja(te)) && !!c.commonJsModuleIndicator; + } + e.isEffectiveExternalModule = Ur; + function ii(c, te) { + switch (c.scriptKind) { + case 1: + case 3: + case 2: + case 4: + break; + default: + return false; + } + return c.isDeclarationFile ? false : Sd(te, "alwaysStrict") || e.startsWithUseStrict(c.statements) ? true : e.isExternalModule(c) || te.isolatedModules ? Ja(te) >= e.ModuleKind.ES2015 ? true : !te.noImplicitUseStrict : false; + } + e.isEffectiveStrictModeSourceFile = ii; + function mi(c, te) { + switch (c.kind) { + case 305: + case 263: + case 292: + case 261: + case 242: + case 243: + case 244: + case 171: + case 169: + case 172: + case 173: + case 256: + case 213: + case 214: + case 167: + case 170: + return true; + case 235: + return !e.isFunctionLikeOrClassStaticBlockDeclaration(te); + } + return false; + } + e.isBlockScope = mi; + function pe(c) { + switch (c.kind) { + case 338: + case 345: + case 323: + return true; + default: + return e.assertType(c), or(c); + } + } + e.isDeclarationWithTypeParameters = pe; + function or(c) { + switch (c.kind) { + case 174: + case 175: + case 168: + case 176: + case 179: + case 180: + case 317: + case 257: + case 226: + case 258: + case 259: + case 344: + case 256: + case 169: + case 171: + case 172: + case 173: + case 213: + case 214: + return true; + default: + return e.assertType(c), false; + } + } + e.isDeclarationWithTypeParameterChildren = or; + function qr(c) { + switch (c.kind) { + case 266: + case 265: + return true; + default: + return false; + } + } + e.isAnyImportSyntax = qr; + function si(c) { + return qr(c) || Go(c); + } + e.isAnyImportOrBareOrAccessedRequire = si; + function Di(c) { + switch (c.kind) { + case 266: + case 265: + case 237: + case 257: + case 256: + case 261: + case 259: + case 258: + case 260: + return true; + default: + return false; + } + } + e.isLateVisibilityPaintedStatement = Di; + function wi(c) { + return Xi(c) || e.isModuleDeclaration(c) || e.isImportTypeNode(c) || Vr(c); + } + e.hasPossibleExternalModuleReference = wi; + function Xi(c) { + return qr(c) || e.isExportDeclaration(c); + } + e.isAnyImportOrReExport = Xi; + function et(c) { + return e.findAncestor(c.parent, function(te) { + return mi(te, te.parent); + }); + } + e.getEnclosingBlockScopeContainer = et; + function Gi(c, te) { + for (var xr = et(c); xr; ) + te(xr), xr = et(xr); + } + e.forEachEnclosingBlockScopeContainer = Gi; + function Wt(c) { + return !c || b(c) === 0 ? "(Missing)" : Ee(c); + } + e.declarationNameToString = Wt; + function Zt(c) { + return c.declaration ? Wt(c.declaration.parameters[0].name) : void 0; + } + e.getNameFromIndexInfo = Zt; + function _r(c) { + return c.kind === 162 && !ns(c.expression); + } + e.isComputedNonLiteralName = _r; + function pi(c) { + switch (c.kind) { + case 79: + case 80: + return c.escapedText; + case 10: + case 8: + case 14: + return e.escapeLeadingUnderscores(c.text); + case 162: + return ns(c.expression) ? e.escapeLeadingUnderscores(c.expression.text) : void 0; + default: + return e.Debug.assertNever(c); + } + } + e.tryGetTextOfPropertyName = pi; + function ae(c) { + return e.Debug.checkDefined(pi(c)); + } + e.getTextOfPropertyName = ae; + function Xe(c) { + switch (c.kind) { + case 108: + return "this"; + case 80: + case 79: + return b(c) === 0 ? e.idText(c) : Ee(c); + case 161: + return Xe(c.left) + "." + Xe(c.right); + case 206: + return e.isIdentifier(c.name) || e.isPrivateIdentifier(c.name) ? Xe(c.expression) + "." + Xe(c.name) : e.Debug.assertNever(c.name); + case 311: + return Xe(c.left) + Xe(c.right); + default: + return e.Debug.assertNever(c); + } + } + e.entityNameToString = Xe; + function Jr(c, te, xr, ei, bi, Ft) { + var ot = $(c); + return Ze(ot, c, te, xr, ei, bi, Ft); + } + e.createDiagnosticForNode = Jr; + function ti(c, te, xr, ei, bi, Ft, ot) { + var xa = e.skipTrivia(c.text, te.pos); + return Hg(c, xa, te.end - xa, xr, ei, bi, Ft, ot); + } + e.createDiagnosticForNodeArray = ti; + function Ze(c, te, xr, ei, bi, Ft, ot) { + var xa = Oe(c, te); + return Hg(c, xa.start, xa.length, xr, ei, bi, Ft, ot); + } + e.createDiagnosticForNodeInSourceFile = Ze; + function Sr(c, te, xr) { + var ei = $(c), bi = Oe(ei, c); + return Wr(ei, bi.start, bi.length, te, xr); + } + e.createDiagnosticForNodeFromMessageChain = Sr; + function zr(c, te, xr) { + e.Debug.assertGreaterThanOrEqual(te, 0), e.Debug.assertGreaterThanOrEqual(xr, 0), c && (e.Debug.assertLessThanOrEqual(te, c.text.length), e.Debug.assertLessThanOrEqual(te + xr, c.text.length)); + } + function Wr(c, te, xr, ei, bi) { + return zr(c, te, xr), { file: c, start: te, length: xr, code: ei.code, category: ei.category, messageText: ei.next ? ei : ei.messageText, relatedInformation: bi }; + } + e.createFileDiagnosticFromMessageChain = Wr; + function Je(c, te, xr) { + return { file: c, start: 0, length: 0, code: te.code, category: te.category, messageText: te.next ? te : te.messageText, relatedInformation: xr }; + } + e.createDiagnosticForFileFromMessageChain = Je; + function xe(c) { + return typeof c.messageText == "string" ? { code: c.code, category: c.category, messageText: c.messageText, next: c.next } : c.messageText; + } + e.createDiagnosticMessageChainFromDiagnostic = xe; + function vr(c, te, xr) { + return { file: c, start: te.pos, length: te.end - te.pos, code: xr.code, category: xr.category, messageText: xr.message }; + } + e.createDiagnosticForRange = vr; + function mr(c, te) { + var xr = e.createScanner(c.languageVersion, true, c.languageVariant, c.text, void 0, te); + xr.scan(); + var ei = xr.getTokenPos(); + return e.createTextSpanFromBounds(ei, xr.getTextPos()); + } + e.getSpanOfTokenAtPosition = mr; + function Ar(c, te) { + var xr = e.skipTrivia(c.text, te.pos); + if (te.body && te.body.kind === 235) { + var ei = e.getLineAndCharacterOfPosition(c, te.body.pos).line, bi = e.getLineAndCharacterOfPosition(c, te.body.end).line; + if (ei < bi) + return e.createTextSpan(xr, k(ei, c) - xr + 1); + } + return e.createTextSpanFromBounds(xr, te.end); + } + function Oe(c, te) { + var xr = te; + switch (te.kind) { + case 305: + var ei = e.skipTrivia(c.text, 0, false); + return ei === c.text.length ? e.createTextSpan(0, 0) : mr(c, ei); + case 254: + case 203: + case 257: + case 226: + case 258: + case 261: + case 260: + case 299: + case 256: + case 213: + case 169: + case 172: + case 173: + case 259: + case 167: + case 166: + case 268: + xr = te.name; + break; + case 214: + return Ar(c, te); + case 289: + case 290: + var bi = e.skipTrivia(c.text, te.pos), Ft = te.statements.length > 0 ? te.statements[0].pos : te.end; + return e.createTextSpanFromBounds(bi, Ft); + } + if (xr === void 0) + return mr(c, te.pos); + e.Debug.assert(!e.isJSDoc(xr)); + var ot = U(xr), xa = ot || e.isJsxText(te) ? xr.pos : e.skipTrivia(c.text, xr.pos); + return ot ? (e.Debug.assert(xa === xr.pos, "This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809"), e.Debug.assert(xa === xr.end, "This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809")) : (e.Debug.assert(xa >= xr.pos, "This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809"), e.Debug.assert(xa <= xr.end, "This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809")), e.createTextSpanFromBounds(xa, xr.end); + } + e.getErrorSpanForNode = Oe; + function nr(c) { + return (c.externalModuleIndicator || c.commonJsModuleIndicator) !== void 0; + } + e.isExternalOrCommonJsModule = nr; + function Mr(c) { + return c.scriptKind === 6; + } + e.isJsonSourceFile = Mr; + function Pe(c) { + return !!(e.getCombinedModifierFlags(c) & 2048); + } + e.isEnumConst = Pe; + function Ue(c) { + return !!(e.getCombinedModifierFlags(c) & 64 && !e.isParameterPropertyDeclaration(c, c.parent)); + } + e.isDeclarationReadonly = Ue; + function fr(c) { + return !!(e.getCombinedNodeFlags(c) & 2); + } + e.isVarConst = fr; + function De(c) { + return !!(e.getCombinedNodeFlags(c) & 1); + } + e.isLet = De; + function gr(c) { + return c.kind === 208 && c.expression.kind === 106; + } + e.isSuperCall = gr; + function Vr(c) { + return c.kind === 208 && c.expression.kind === 100; + } + e.isImportCall = Vr; + function Tr(c) { + return e.isMetaProperty(c) && c.keywordToken === 100 && c.name.escapedText === "meta"; + } + e.isImportMeta = Tr; + function vi(c) { + return e.isImportTypeNode(c) && e.isLiteralTypeNode(c.argument) && e.isStringLiteral(c.argument.literal); + } + e.isLiteralImportTypeNode = vi; + function Ui(c) { + return c.kind === 238 && c.expression.kind === 10; + } + e.isPrologueDirective = Ui; + function Yi(c) { + return !!(Ie(c) & 1048576); + } + e.isCustomPrologue = Yi; + function Wi(c) { + return Yi(c) && e.isFunctionDeclaration(c); + } + e.isHoistedFunction = Wi; + function ct(c) { + return e.isIdentifier(c.name) && !c.initializer; + } + function Li(c) { + return Yi(c) && e.isVariableStatement(c) && e.every(c.declarationList.declarations, ct); + } + e.isHoistedVariableStatement = Li; + function nt(c, te) { + return c.kind !== 11 ? e.getLeadingCommentRanges(te.text, c.pos) : void 0; + } + e.getLeadingCommentRangesOfNode = nt; + function Mt(c, te) { + var xr = c.kind === 164 || c.kind === 163 || c.kind === 213 || c.kind === 214 || c.kind === 212 || c.kind === 254 || c.kind === 275 ? e.concatenate(e.getTrailingCommentRanges(te, c.pos), e.getLeadingCommentRanges(te, c.pos)) : e.getLeadingCommentRanges(te, c.pos); + return e.filter(xr, function(ei) { + return te.charCodeAt(ei.pos + 1) === 42 && te.charCodeAt(ei.pos + 2) === 42 && te.charCodeAt(ei.pos + 3) !== 47; + }); + } + e.getJSDocCommentRanges = Mt, e.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; + var xt = /^(\/\/\/\s*/; + e.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; + var ut = /^(\/\/\/\s*/; + function Dt(c) { + if (177 <= c.kind && c.kind <= 200) + return true; + switch (c.kind) { + case 130: + case 155: + case 147: + case 158: + case 150: + case 133: + case 151: + case 148: + case 153: + case 143: + return true; + case 114: + return c.parent.kind !== 217; + case 228: + return e.isHeritageClause(c.parent) && !Fc(c); + case 163: + return c.parent.kind === 195 || c.parent.kind === 190; + case 79: + (c.parent.kind === 161 && c.parent.right === c || c.parent.kind === 206 && c.parent.name === c) && (c = c.parent), e.Debug.assert(c.kind === 79 || c.kind === 161 || c.kind === 206, "'node' was expected to be a qualified name, identifier or property access in 'isPartOfTypeNode'."); + case 161: + case 206: + case 108: { + var te = c.parent; + if (te.kind === 181) + return false; + if (te.kind === 200) + return !te.isTypeOf; + if (177 <= te.kind && te.kind <= 200) + return true; + switch (te.kind) { + case 228: + return e.isHeritageClause(te.parent) && !Fc(te); + case 163: + return c === te.constraint; + case 344: + return c === te.constraint; + case 167: + case 166: + case 164: + case 254: + return c === te.type; + case 256: + case 213: + case 214: + case 171: + case 169: + case 168: + case 172: + case 173: + return c === te.type; + case 174: + case 175: + case 176: + return c === te.type; + case 211: + return c === te.type; + case 208: + case 209: + return e.contains(te.typeArguments, c); + case 210: + return false; + } + } + } + return false; + } + e.isPartOfTypeNode = Dt; + function Rt(c, te) { + for (; c; ) { + if (c.kind === te) + return true; + c = c.parent; + } + return false; + } + e.isChildOfNodeWithKind = Rt; + function Ii(c, te) { + return xr(c); + function xr(ei) { + switch (ei.kind) { + case 247: + return te(ei); + case 263: + case 235: + case 239: + case 240: + case 241: + case 242: + case 243: + case 244: + case 248: + case 249: + case 289: + case 290: + case 250: + case 252: + case 292: + return e.forEachChild(ei, xr); + } + } + } + e.forEachReturnStatement = Ii; + function Ki(c, te) { + return xr(c); + function xr(ei) { + switch (ei.kind) { + case 224: + te(ei); + var bi = ei.expression; + bi && xr(bi); + return; + case 260: + case 258: + case 261: + case 259: + return; + default: + if (e.isFunctionLike(ei)) { + if (ei.name && ei.name.kind === 162) { + xr(ei.name.expression); + return; + } + } else + Dt(ei) || e.forEachChild(ei, xr); + } + } + } + e.forEachYieldExpression = Ki; + function Fi(c) { + return c && c.kind === 183 ? c.elementType : c && c.kind === 178 ? e.singleOrUndefined(c.typeArguments) : void 0; + } + e.getRestParameterElementType = Fi; + function ui(c) { + switch (c.kind) { + case 258: + case 257: + case 226: + case 182: + return c.members; + case 205: + return c.properties; + } + } + e.getMembersOfDeclaration = ui; + function Bt(c) { + if (c) + switch (c.kind) { + case 203: + case 299: + case 164: + case 296: + case 167: + case 166: + case 297: + case 254: + return true; + } + return false; + } + e.isVariableLike = Bt; + function wt(c) { + return Bt(c) || e.isAccessor(c); + } + e.isVariableLikeOrAccessor = wt; + function na(c) { + return c.parent.kind === 255 && c.parent.parent.kind === 237; + } + e.isVariableDeclarationInVariableStatement = na; + function Ai(c) { + return Ct(c) ? e.isObjectLiteralExpression(c.parent) && e.isBinaryExpression(c.parent.parent) && Hr(c.parent.parent) === 2 || Oi(c.parent) : false; + } + e.isCommonJsExportedExpression = Ai; + function Oi(c) { + return Ct(c) ? e.isBinaryExpression(c) && Hr(c) === 1 : false; + } + e.isCommonJsExportPropertyAssignment = Oi; + function ji(c) { + return (e.isVariableDeclaration(c) ? fr(c) && e.isIdentifier(c.name) && na(c) : e.isPropertyDeclaration(c) ? wp(c) && mc(c) : e.isPropertySignature(c) && wp(c)) || Oi(c); + } + e.isValidESSymbolDeclaration = ji; + function Vi(c) { + switch (c.kind) { + case 169: + case 168: + case 171: + case 172: + case 173: + case 256: + case 213: + return true; + } + return false; + } + e.introducesArgumentsExoticObject = Vi; + function at(c, te) { + for (; ; ) { + if (te && te(c), c.statement.kind !== 250) + return c.statement; + c = c.statement; + } + } + e.unwrapInnermostStatementOfLabel = at; + function At(c) { + return c && c.kind === 235 && e.isFunctionLike(c.parent); + } + e.isFunctionBlock = At; + function ba(c) { + return c && c.kind === 169 && c.parent.kind === 205; + } + e.isObjectLiteralMethod = ba; + function $a(c) { + return (c.kind === 169 || c.kind === 172 || c.kind === 173) && (c.parent.kind === 205 || c.parent.kind === 226); + } + e.isObjectLiteralOrClassExpressionMethodOrAccessor = $a; + function Qa(c) { + return c && c.kind === 1; + } + e.isIdentifierTypePredicate = Qa; + function ai(c) { + return c && c.kind === 0; + } + e.isThisTypePredicate = ai; + function Dn(c, te, xr) { + return c.properties.filter(function(ei) { + if (ei.kind === 296) { + var bi = pi(ei.name); + return te === bi || !!xr && xr === bi; + } + return false; + }); + } + e.getPropertyAssignment = Dn; + function ka(c, te, xr) { + return e.firstDefined(Dn(c, te), function(ei) { + return e.isArrayLiteralExpression(ei.initializer) ? e.find(ei.initializer.elements, function(bi) { + return e.isStringLiteral(bi) && bi.text === xr; + }) : void 0; + }); + } + e.getPropertyArrayElementValue = ka; + function Ba(c) { + if (c && c.statements.length) { + var te = c.statements[0].expression; + return e.tryCast(te, e.isObjectLiteralExpression); + } + } + e.getTsConfigObjectLiteralExpression = Ba; + function pn(c, te, xr) { + return e.firstDefined(Cn(c, te), function(ei) { + return e.isArrayLiteralExpression(ei.initializer) ? e.find(ei.initializer.elements, function(bi) { + return e.isStringLiteral(bi) && bi.text === xr; + }) : void 0; + }); + } + e.getTsConfigPropArrayElementValue = pn; + function Cn(c, te) { + var xr = Ba(c); + return xr ? Dn(xr, te) : e.emptyArray; + } + e.getTsConfigPropArray = Cn; + function Bi(c) { + return e.findAncestor(c.parent, e.isFunctionLike); + } + e.getContainingFunction = Bi; + function kn(c) { + return e.findAncestor(c.parent, e.isFunctionLikeDeclaration); + } + e.getContainingFunctionDeclaration = kn; + function xn(c) { + return e.findAncestor(c.parent, e.isClassLike); + } + e.getContainingClass = xn; + function Kn(c) { + return e.findAncestor(c.parent, function(te) { + return e.isClassLike(te) || e.isFunctionLike(te) ? "quit" : e.isClassStaticBlockDeclaration(te); + }); + } + e.getContainingClassStaticBlock = Kn; + function Pn(c) { + return e.findAncestor(c.parent, e.isFunctionLikeOrClassStaticBlockDeclaration); + } + e.getContainingFunctionOrClassStaticBlock = Pn; + function eo(c, te) { + for (e.Debug.assert(c.kind !== 305); ; ) { + if (c = c.parent, !c) + return e.Debug.fail(); + switch (c.kind) { + case 162: + if (e.isClassLike(c.parent.parent)) + return c; + c = c.parent; + break; + case 165: + c.parent.kind === 164 && e.isClassElement(c.parent.parent) ? c = c.parent.parent : e.isClassElement(c.parent) && (c = c.parent); + break; + case 214: + if (!te) + continue; + case 256: + case 213: + case 261: + case 170: + case 167: + case 166: + case 169: + case 168: + case 171: + case 172: + case 173: + case 174: + case 175: + case 176: + case 260: + case 305: + return c; + } + } + } + e.getThisContainer = eo; + function Rn(c) { + switch (c.kind) { + case 214: + case 256: + case 213: + case 167: + return true; + case 235: + switch (c.parent.kind) { + case 171: + case 169: + case 172: + case 173: + return true; + default: + return false; + } + default: + return false; + } + } + e.isThisContainerOrFunctionBlock = Rn; + function Da(c) { + e.isIdentifier(c) && (e.isClassDeclaration(c.parent) || e.isFunctionDeclaration(c.parent)) && c.parent.name === c && (c = c.parent); + var te = eo(c, true); + return e.isSourceFile(te); + } + e.isInTopLevelContext = Da; + function bo(c) { + var te = eo(c, false); + if (te) + switch (te.kind) { + case 171: + case 256: + case 213: + return te; + } + } + e.getNewTargetContainer = bo; + function Ro(c, te) { + for (; ; ) { + if (c = c.parent, !c) + return c; + switch (c.kind) { + case 162: + c = c.parent; + break; + case 256: + case 213: + case 214: + if (!te) + continue; + case 167: + case 166: + case 169: + case 168: + case 171: + case 172: + case 173: + case 170: + return c; + case 165: + c.parent.kind === 164 && e.isClassElement(c.parent.parent) ? c = c.parent.parent : e.isClassElement(c.parent) && (c = c.parent); + break; + } + } + } + e.getSuperContainer = Ro; + function En(c) { + if (c.kind === 213 || c.kind === 214) { + for (var te = c, xr = c.parent; xr.kind === 212; ) + te = xr, xr = xr.parent; + if (xr.kind === 208 && xr.expression === te) + return xr; + } + } + e.getImmediatelyInvokedFunctionExpression = En; + function Wn(c) { + return c.kind === 106 || to(c); + } + e.isSuperOrSuperProperty = Wn; + function to(c) { + var te = c.kind; + return (te === 206 || te === 207) && c.expression.kind === 106; + } + e.isSuperProperty = to; + function Co(c) { + var te = c.kind; + return (te === 206 || te === 207) && c.expression.kind === 108; + } + e.isThisProperty = Co; + function Ko(c) { + var te; + return !!c && e.isVariableDeclaration(c) && ((te = c.initializer) === null || te === void 0 ? void 0 : te.kind) === 108; + } + e.isThisInitializedDeclaration = Ko; + function Oo(c) { + return !!c && (e.isShorthandPropertyAssignment(c) || e.isPropertyAssignment(c)) && e.isBinaryExpression(c.parent.parent) && c.parent.parent.operatorToken.kind === 63 && c.parent.parent.right.kind === 108; + } + e.isThisInitializedObjectBindingExpression = Oo; + function no(c) { + switch (c.kind) { + case 178: + return c.typeName; + case 228: + return Hu(c.expression) ? c.expression : void 0; + case 79: + case 161: + return c; + } + } + e.getEntityNameFromTypeNode = no; + function $o(c) { + switch (c.kind) { + case 210: + return c.tag; + case 280: + case 279: + return c.tagName; + default: + return c.expression; + } + } + e.getInvokedExpression = $o; + function Pr(c, te, xr) { + if (e.isNamedDeclaration(c) && e.isPrivateIdentifier(c.name)) + return false; + switch (c.kind) { + case 257: + return true; + case 167: + return te.kind === 257; + case 172: + case 173: + case 169: + return c.body !== void 0 && te.kind === 257; + case 164: + return te.body !== void 0 && (te.kind === 171 || te.kind === 169 || te.kind === 173) && xr.kind === 257; + } + return false; + } + e.nodeCanBeDecorated = Pr; + function xi(c, te, xr) { + return c.decorators !== void 0 && Pr(c, te, xr); + } + e.nodeIsDecorated = xi; + function St(c, te, xr) { + return xi(c, te, xr) || pa(c, te); + } + e.nodeOrChildIsDecorated = St; + function pa(c, te) { + switch (c.kind) { + case 257: + return e.some(c.members, function(xr) { + return St(xr, c, te); + }); + case 169: + case 173: + case 171: + return e.some(c.parameters, function(xr) { + return xi(xr, c, te); + }); + default: + return false; + } + } + e.childIsDecorated = pa; + function dn(c) { + if (xi(c)) + return true; + var te = Nu(c); + return !!te && pa(te, c); + } + e.classOrConstructorParameterIsDecorated = dn; + function Jn(c) { + var te = c.parent; + return te.kind === 280 || te.kind === 279 || te.kind === 281 ? te.tagName === c : false; + } + e.isJSXTagName = Jn; + function Qe(c) { + switch (c.kind) { + case 106: + case 104: + case 110: + case 95: + case 13: + case 204: + case 205: + case 206: + case 207: + case 208: + case 209: + case 210: + case 229: + case 211: + case 230: + case 212: + case 213: + case 226: + case 214: + case 217: + case 215: + case 216: + case 219: + case 220: + case 221: + case 222: + case 225: + case 223: + case 227: + case 278: + case 279: + case 282: + case 224: + case 218: + case 231: + return true; + case 161: + for (; c.parent.kind === 161; ) + c = c.parent; + return c.parent.kind === 181 || e.isJSDocLinkLike(c.parent) || e.isJSDocNameReference(c.parent) || e.isJSDocMemberName(c.parent) || Jn(c); + case 311: + for (; e.isJSDocMemberName(c.parent); ) + c = c.parent; + return c.parent.kind === 181 || e.isJSDocLinkLike(c.parent) || e.isJSDocNameReference(c.parent) || e.isJSDocMemberName(c.parent) || Jn(c); + case 80: + return e.isBinaryExpression(c.parent) && c.parent.left === c && c.parent.operatorToken.kind === 101; + case 79: + if (c.parent.kind === 181 || e.isJSDocLinkLike(c.parent) || e.isJSDocNameReference(c.parent) || e.isJSDocMemberName(c.parent) || Jn(c)) + return true; + case 8: + case 9: + case 10: + case 14: + case 108: + return Gr(c); + default: + return false; + } + } + e.isExpressionNode = Qe; + function Gr(c) { + var te = c.parent; + switch (te.kind) { + case 254: + case 164: + case 167: + case 166: + case 299: + case 296: + case 203: + return te.initializer === c; + case 238: + case 239: + case 240: + case 241: + case 247: + case 248: + case 249: + case 289: + case 251: + return te.expression === c; + case 242: + var xr = te; + return xr.initializer === c && xr.initializer.kind !== 255 || xr.condition === c || xr.incrementor === c; + case 243: + case 244: + var ei = te; + return ei.initializer === c && ei.initializer.kind !== 255 || ei.expression === c; + case 211: + case 229: + return c === te.expression; + case 233: + return c === te.expression; + case 162: + return c === te.expression; + case 165: + case 288: + case 287: + case 298: + return true; + case 228: + return te.expression === c && !Dt(te); + case 297: + return te.objectAssignmentInitializer === c; + default: + return Qe(te); + } + } + e.isInExpressionContext = Gr; + function S(c) { + for (; c.kind === 161 || c.kind === 79; ) + c = c.parent; + return c.kind === 181; + } + e.isPartOfTypeQuery = S; + function Ce(c) { + return e.isNamespaceExport(c) && !!c.parent.moduleSpecifier; + } + e.isNamespaceReexportDeclaration = Ce; + function qe(c) { + return c.kind === 265 && c.moduleReference.kind === 277; + } + e.isExternalModuleImportEqualsDeclaration = qe; + function br(c) { + return e.Debug.assert(qe(c)), c.moduleReference.expression; + } + e.getExternalModuleImportEqualsDeclarationExpression = br; + function Zr(c) { + return Go(c) && Xa(c.initializer).arguments[0]; + } + e.getExternalModuleRequireArgument = Zr; + function Si(c) { + return c.kind === 265 && c.moduleReference.kind !== 277; + } + e.isInternalModuleImportEqualsDeclaration = Si; + function Pi(c) { + return Ct(c); + } + e.isSourceFileJS = Pi; + function Qi(c) { + return !Ct(c); + } + e.isSourceFileNotJS = Qi; + function Ct(c) { + return !!c && !!(c.flags & 262144); + } + e.isInJSFile = Ct; + function sa(c) { + return !!c && !!(c.flags & 67108864); + } + e.isInJsonFile = sa; + function en(c) { + return !Mr(c); + } + e.isSourceFileNotJson = en; + function Wa(c) { + return !!c && !!(c.flags & 8388608); + } + e.isInJSDoc = Wa; + function qn(c) { + return e.isTypeReferenceNode(c) && e.isIdentifier(c.typeName) && c.typeName.escapedText === "Object" && c.typeArguments && c.typeArguments.length === 2 && (c.typeArguments[0].kind === 150 || c.typeArguments[0].kind === 147); + } + e.isJSDocIndexSignature = qn; + function mo(c, te) { + if (c.kind !== 208) + return false; + var xr = c, ei = xr.expression, bi = xr.arguments; + if (ei.kind !== 79 || ei.escapedText !== "require" || bi.length !== 1) + return false; + var Ft = bi[0]; + return !te || e.isStringLiteralLike(Ft); + } + e.isRequireCall = mo; + function So(c) { + return ys(c, false); + } + e.isVariableDeclarationInitializedToRequire = So; + function Go(c) { + return ys(c, true); + } + e.isVariableDeclarationInitializedToBareOrAccessedRequire = Go; + function ys(c, te) { + return c.kind === 203 && (c = c.parent.parent), e.isVariableDeclaration(c) && !!c.initializer && mo(te ? Xa(c.initializer) : c.initializer, true); + } + function Pc(c) { + return e.isVariableStatement(c) && c.declarationList.declarations.length > 0 && e.every(c.declarationList.declarations, function(te) { + return So(te); + }); + } + e.isRequireVariableStatement = Pc; + function Vc(c) { + return c === 39 || c === 34; + } + e.isSingleOrDoubleQuote = Vc; + function Kc(c, te) { + return Be(te, c).charCodeAt(0) === 34; + } + e.isStringDoubleQuoted = Kc; + function Xs(c) { + return e.isBinaryExpression(c) || cr(c) || e.isIdentifier(c) || e.isCallExpression(c); + } + e.isAssignmentDeclaration = Xs; + function pc(c) { + return Ct(c) && c.initializer && e.isBinaryExpression(c.initializer) && (c.initializer.operatorToken.kind === 56 || c.initializer.operatorToken.kind === 60) && c.name && Hu(c.name) && ce(c.name, c.initializer.left) ? c.initializer.right : c.initializer; + } + e.getEffectiveInitializer = pc; + function hs(c) { + var te = pc(c); + return te && Qs(te, nf(c.name)); + } + e.getDeclaredExpandoInitializer = hs; + function tc(c, te) { + return e.forEach(c.properties, function(xr) { + return e.isPropertyAssignment(xr) && e.isIdentifier(xr.name) && xr.name.escapedText === "value" && xr.initializer && Qs(xr.initializer, te); + }); + } + function ps(c) { + if (c && c.parent && e.isBinaryExpression(c.parent) && c.parent.operatorToken.kind === 63) { + var te = nf(c.parent.left); + return Qs(c.parent.right, te) || js(c.parent.left, c.parent.right, te); + } + if (c && e.isCallExpression(c) && pt(c)) { + var xr = tc(c.arguments[2], c.arguments[1].text === "prototype"); + if (xr) + return xr; + } + } + e.getAssignedExpandoInitializer = ps; + function Qs(c, te) { + if (e.isCallExpression(c)) { + var xr = po(c.expression); + return xr.kind === 213 || xr.kind === 214 ? c : void 0; + } + if (c.kind === 213 || c.kind === 226 || c.kind === 214 || e.isObjectLiteralExpression(c) && (c.properties.length === 0 || te)) + return c; + } + e.getExpandoInitializer = Qs; + function js(c, te, xr) { + var ei = e.isBinaryExpression(te) && (te.operatorToken.kind === 56 || te.operatorToken.kind === 60) && Qs(te.right, xr); + if (ei && ce(c, te.left)) + return ei; + } + function ds(c) { + var te = e.isVariableDeclaration(c.parent) ? c.parent.name : e.isBinaryExpression(c.parent) && c.parent.operatorToken.kind === 63 ? c.parent.left : void 0; + return te && Qs(c.right, nf(te)) && Hu(te) && ce(te, c.left); + } + e.isDefaultedExpandoInitializer = ds; + function Ji(c) { + if (e.isBinaryExpression(c.parent)) { + var te = (c.parent.operatorToken.kind === 56 || c.parent.operatorToken.kind === 60) && e.isBinaryExpression(c.parent.parent) ? c.parent.parent : c.parent; + if (te.operatorToken.kind === 63 && e.isIdentifier(te.left)) + return te.left; + } else if (e.isVariableDeclaration(c.parent)) + return c.parent.name; + } + e.getNameOfExpando = Ji; + function ce(c, te) { + return Jf(c) && Jf(te) ? w_(c) === w_(te) : e.isMemberName(c) && Pt(te) && (te.expression.kind === 108 || e.isIdentifier(te.expression) && (te.expression.escapedText === "window" || te.expression.escapedText === "self" || te.expression.escapedText === "global")) ? ce(c, fo(te)) : Pt(c) && Pt(te) ? Ao(c) === Ao(te) && ce(c.expression, te.expression) : false; + } + e.isSameEntityName = ce; + function Rr(c) { + for (; dl(c, true); ) + c = c.right; + return c; + } + e.getRightMostAssignedExpression = Rr; + function yi(c) { + return e.isIdentifier(c) && c.escapedText === "exports"; + } + e.isExportsIdentifier = yi; + function qi(c) { + return e.isIdentifier(c) && c.escapedText === "module"; + } + e.isModuleIdentifier = qi; + function je(c) { + return (e.isPropertyAccessExpression(c) || ga(c)) && qi(c.expression) && Ao(c) === "exports"; + } + e.isModuleExportsAccessExpression = je; + function Hr(c) { + var te = xs(c); + return te === 5 || Ct(c) ? te : 0; + } + e.getAssignmentDeclarationKind = Hr; + function pt(c) { + return e.length(c.arguments) === 3 && e.isPropertyAccessExpression(c.expression) && e.isIdentifier(c.expression.expression) && e.idText(c.expression.expression) === "Object" && e.idText(c.expression.name) === "defineProperty" && ns(c.arguments[1]) && jr(c.arguments[0], true); + } + e.isBindableObjectDefinePropertyCall = pt; + function Pt(c) { + return e.isPropertyAccessExpression(c) || ga(c); + } + e.isLiteralLikeAccess = Pt; + function ga(c) { + return e.isElementAccessExpression(c) && ns(c.argumentExpression); + } + e.isLiteralLikeElementAccess = ga; + function ua(c, te) { + return e.isPropertyAccessExpression(c) && (!te && c.expression.kind === 108 || e.isIdentifier(c.name) && jr(c.expression, true)) || Xn(c, te); + } + e.isBindableStaticAccessExpression = ua; + function Xn(c, te) { + return ga(c) && (!te && c.expression.kind === 108 || Hu(c.expression) || ua(c.expression, true)); + } + e.isBindableStaticElementAccessExpression = Xn; + function jr(c, te) { + return Hu(c) || ua(c, te); + } + e.isBindableStaticNameExpression = jr; + function fo(c) { + return e.isPropertyAccessExpression(c) ? c.name : c.argumentExpression; + } + e.getNameOrArgument = fo; + function xs(c) { + if (e.isCallExpression(c)) { + if (!pt(c)) + return 0; + var te = c.arguments[0]; + return yi(te) || je(te) ? 8 : ua(te) && Ao(te) === "prototype" ? 9 : 7; + } + return c.operatorToken.kind !== 63 || !cr(c.left) || Fo(Rr(c)) ? 0 : jr(c.left.expression, true) && Ao(c.left) === "prototype" && e.isObjectLiteralExpression(Bs(c)) ? 6 : Ms(c.left); + } + function Fo(c) { + return e.isVoidExpression(c) && e.isNumericLiteral(c.expression) && c.expression.text === "0"; + } + function ko(c) { + if (e.isPropertyAccessExpression(c)) + return c.name; + var te = po(c.argumentExpression); + return e.isNumericLiteral(te) || e.isStringLiteralLike(te) ? te : c; + } + e.getElementOrPropertyAccessArgumentExpressionOrName = ko; + function Ao(c) { + var te = ko(c); + if (te) { + if (e.isIdentifier(te)) + return te.escapedText; + if (e.isStringLiteralLike(te) || e.isNumericLiteral(te)) + return e.escapeLeadingUnderscores(te.text); + } + } + e.getElementOrPropertyAccessName = Ao; + function Ms(c) { + if (c.expression.kind === 108) + return 4; + if (je(c)) + return 2; + if (jr(c.expression, true)) { + if (nf(c.expression)) + return 3; + for (var te = c; !e.isIdentifier(te.expression); ) + te = te.expression; + var xr = te.expression; + if ((xr.escapedText === "exports" || xr.escapedText === "module" && Ao(te) === "exports") && ua(c)) + return 1; + if (jr(c, true) || e.isElementAccessExpression(c) && es(c)) + return 5; + } + return 0; + } + e.getAssignmentDeclarationPropertyAccessKind = Ms; + function Bs(c) { + for (; e.isBinaryExpression(c.right); ) + c = c.right; + return c.right; + } + e.getInitializerOfBinaryExpression = Bs; + function xc(c) { + return e.isBinaryExpression(c) && Hr(c) === 3; + } + e.isPrototypePropertyAssignment = xc; + function su(c) { + return Ct(c) && c.parent && c.parent.kind === 238 && (!e.isElementAccessExpression(c) || ga(c)) && !!e.getJSDocTypeTag(c.parent); + } + e.isSpecialPropertyDeclaration = su; + function tl(c, te) { + var xr = c.valueDeclaration; + (!xr || !(te.flags & 16777216 && !(xr.flags & 16777216)) && Xs(xr) && !Xs(te) || xr.kind !== te.kind && Ne(xr)) && (c.valueDeclaration = te); + } + e.setValueDeclaration = tl; + function Zc(c) { + if (!c || !c.valueDeclaration) + return false; + var te = c.valueDeclaration; + return te.kind === 256 || e.isVariableDeclaration(te) && te.initializer && e.isFunctionLike(te.initializer); + } + e.isFunctionSymbol = Zc; + function Rf(c) { + var te, xr; + switch (c.kind) { + case 254: + return (te = e.findAncestor(c.initializer, function(ei) { + return mo(ei, true); + })) === null || te === void 0 ? void 0 : te.arguments[0]; + case 266: + return e.tryCast(c.moduleSpecifier, e.isStringLiteralLike); + case 265: + return e.tryCast((xr = e.tryCast(c.moduleReference, e.isExternalModuleReference)) === null || xr === void 0 ? void 0 : xr.expression, e.isStringLiteralLike); + default: + e.Debug.assertNever(c); + } + } + e.tryGetModuleSpecifierFromDeclaration = Rf; + function al(c) { + return Jo(c) || e.Debug.failBadSyntaxKind(c.parent); + } + e.importFromModuleSpecifier = al; + function Jo(c) { + switch (c.parent.kind) { + case 266: + case 272: + return c.parent; + case 277: + return c.parent.parent; + case 208: + return Vr(c.parent) || mo(c.parent, false) ? c.parent : void 0; + case 196: + return e.Debug.assert(e.isStringLiteral(c)), e.tryCast(c.parent.parent, e.isImportTypeNode); + default: + return; + } + } + e.tryGetImportFromModuleSpecifier = Jo; + function eu(c) { + switch (c.kind) { + case 266: + case 272: + return c.moduleSpecifier; + case 265: + return c.moduleReference.kind === 277 ? c.moduleReference.expression : void 0; + case 200: + return vi(c) ? c.argument.literal : void 0; + case 208: + return c.arguments[0]; + case 261: + return c.name.kind === 10 ? c.name : void 0; + default: + return e.Debug.assertNever(c); + } + } + e.getExternalModuleName = eu; + function Ws(c) { + switch (c.kind) { + case 266: + return c.importClause && e.tryCast(c.importClause.namedBindings, e.isNamespaceImport); + case 265: + return c; + case 272: + return c.exportClause && e.tryCast(c.exportClause, e.isNamespaceExport); + default: + return e.Debug.assertNever(c); + } + } + e.getNamespaceDeclarationNode = Ws; + function pu(c) { + return c.kind === 266 && !!c.importClause && !!c.importClause.name; + } + e.isDefaultImport = pu; + function Uu(c, te) { + if (c.name) { + var xr = te(c); + if (xr) + return xr; + } + if (c.namedBindings) { + var xr = e.isNamespaceImport(c.namedBindings) ? te(c.namedBindings) : e.forEach(c.namedBindings.elements, te); + if (xr) + return xr; + } + } + e.forEachImportClauseDeclaration = Uu; + function Ql(c) { + if (c) + switch (c.kind) { + case 164: + case 169: + case 168: + case 297: + case 296: + case 167: + case 166: + return c.questionToken !== void 0; + } + return false; + } + e.hasQuestionToken = Ql; + function xl(c) { + var te = e.isJSDocFunctionType(c) ? e.firstOrUndefined(c.parameters) : void 0, xr = e.tryCast(te && te.name, e.isIdentifier); + return !!xr && xr.escapedText === "new"; + } + e.isJSDocConstructSignature = xl; + function Ya(c) { + return c.kind === 345 || c.kind === 338 || c.kind === 339; + } + e.isJSDocTypeAlias = Ya; + function du(c) { + return Ya(c) || e.isTypeAliasDeclaration(c); + } + e.isTypeAlias = du; + function vc(c) { + return e.isExpressionStatement(c) && e.isBinaryExpression(c.expression) && c.expression.operatorToken.kind === 63 ? Rr(c.expression) : void 0; + } + function Kr(c) { + return e.isExpressionStatement(c) && e.isBinaryExpression(c.expression) && Hr(c.expression) !== 0 && e.isBinaryExpression(c.expression.right) && (c.expression.right.operatorToken.kind === 56 || c.expression.right.operatorToken.kind === 60) ? c.expression.right.right : void 0; + } + function _i(c) { + switch (c.kind) { + case 237: + var te = Ei(c); + return te && te.initializer; + case 167: + return c.initializer; + case 296: + return c.initializer; + } + } + e.getSingleInitializerOfVariableStatementOrPropertyDeclaration = _i; + function Ei(c) { + return e.isVariableStatement(c) ? e.firstOrUndefined(c.declarationList.declarations) : void 0; + } + e.getSingleVariableOfVariableStatement = Ei; + function tt(c) { + return e.isModuleDeclaration(c) && c.body && c.body.kind === 261 ? c.body : void 0; + } + function kt(c, te) { + var xr; + Bt(c) && e.hasInitializer(c) && e.hasJSDocNodes(c.initializer) && (xr = e.addRange(xr, bt(c, e.last(c.initializer.jsDoc)))); + for (var ei = c; ei && ei.parent; ) { + if (e.hasJSDocNodes(ei) && (xr = e.addRange(xr, bt(c, e.last(ei.jsDoc)))), ei.kind === 164) { + xr = e.addRange(xr, (te ? e.getJSDocParameterTagsNoCache : e.getJSDocParameterTags)(ei)); + break; + } + if (ei.kind === 163) { + xr = e.addRange(xr, (te ? e.getJSDocTypeParameterTagsNoCache : e.getJSDocTypeParameterTags)(ei)); + break; + } + ei = Xt(ei); + } + return xr || e.emptyArray; + } + e.getJSDocCommentsAndTags = kt; + function bt(c, te) { + if (e.isJSDoc(te)) { + var xr = e.filter(te.tags, function(ei) { + return ia(c, ei); + }); + return te.tags === xr ? [te] : xr; + } + return ia(c, te) ? [te] : void 0; + } + function ia(c, te) { + return !e.isJSDocTypeTag(te) || !te.parent || !e.isJSDoc(te.parent) || !e.isParenthesizedExpression(te.parent.parent) || te.parent.parent === c; + } + function Xt(c) { + var te = c.parent; + if (te.kind === 296 || te.kind === 271 || te.kind === 167 || te.kind === 238 && c.kind === 206 || te.kind === 247 || tt(te) || e.isBinaryExpression(c) && c.operatorToken.kind === 63) + return te; + if (te.parent && (Ei(te.parent) === c || e.isBinaryExpression(te) && te.operatorToken.kind === 63)) + return te.parent; + if (te.parent && te.parent.parent && (Ei(te.parent.parent) || _i(te.parent.parent) === c || Kr(te.parent.parent))) + return te.parent.parent; + } + e.getNextJSDocCommentLocation = Xt; + function Za(c) { + if (c.symbol) + return c.symbol; + if (!!e.isIdentifier(c.name)) { + var te = c.name.escapedText, xr = _a(c); + if (!!xr) { + var ei = e.find(xr.parameters, function(bi) { + return bi.name.kind === 79 && bi.name.escapedText === te; + }); + return ei && ei.symbol; + } + } + } + e.getParameterSymbolFromJSDoc = Za; + function bn(c) { + if (e.isJSDoc(c.parent) && c.parent.tags) { + var te = e.find(c.parent.tags, Ya); + if (te) + return te; + } + return _a(c); + } + e.getEffectiveContainerForJSDocTemplateTag = bn; + function _a(c) { + var te = qa(c); + if (te) + return e.isPropertySignature(te) && te.type && e.isFunctionLike(te.type) ? te.type : e.isFunctionLike(te) ? te : void 0; + } + e.getHostSignatureFromJSDoc = _a; + function qa(c) { + var te = rn(c); + if (te) + return Kr(te) || vc(te) || _i(te) || Ei(te) || tt(te) || te; + } + e.getEffectiveJSDocHost = qa; + function rn(c) { + var te = jn(c); + if (!!te) { + var xr = te.parent; + if (xr && xr.jsDoc && te === e.lastOrUndefined(xr.jsDoc)) + return xr; + } + } + e.getJSDocHost = rn; + function jn(c) { + return e.findAncestor(c.parent, e.isJSDoc); + } + e.getJSDocRoot = jn; + function Mo(c) { + var te = c.name.escapedText, xr = c.parent.parent.parent.typeParameters; + return xr && e.find(xr, function(ei) { + return ei.name.escapedText === te; + }); + } + e.getTypeParameterFromJsDoc = Mo; + function ho(c) { + var te = e.lastOrUndefined(c.parameters); + return !!te && gs(te); + } + e.hasRestParameter = ho; + function gs(c) { + var te = e.isJSDocParameterTag(c) ? c.typeExpression && c.typeExpression.type : c.type; + return c.dotDotDotToken !== void 0 || !!te && te.kind === 318; + } + e.isRestParameter = gs; + function Se(c) { + return !!c.typeArguments; + } + e.hasTypeArguments = Se; + var hr; + (function(c) { + c[c.None = 0] = "None", c[c.Definite = 1] = "Definite", c[c.Compound = 2] = "Compound"; + })(hr = e.AssignmentKind || (e.AssignmentKind = {})); + function Or(c) { + for (var te = c.parent; ; ) { + switch (te.kind) { + case 221: + var xr = te.operatorToken.kind; + return Cf(xr) && te.left === c ? xr === 63 || Gu(xr) ? 1 : 2 : 0; + case 219: + case 220: + var ei = te.operator; + return ei === 45 || ei === 46 ? 2 : 0; + case 243: + case 244: + return te.initializer === c ? 1 : 0; + case 212: + case 204: + case 225: + case 230: + c = te; + break; + case 298: + c = te.parent; + break; + case 297: + if (te.name !== c) + return 0; + c = te.parent; + break; + case 296: + if (te.name === c) + return 0; + c = te.parent; + break; + default: + return 0; + } + te = c.parent; + } + } + e.getAssignmentTargetKind = Or; + function ki(c) { + return Or(c) !== 0; + } + e.isAssignmentTarget = ki; + function dt(c) { + switch (c.kind) { + case 235: + case 237: + case 248: + case 239: + case 249: + case 263: + case 289: + case 290: + case 250: + case 242: + case 243: + case 244: + case 240: + case 241: + case 252: + case 292: + return true; + } + return false; + } + e.isNodeWithPossibleHoistedDeclaration = dt; + function la(c) { + return e.isFunctionExpression(c) || e.isArrowFunction(c) || e.isMethodOrAccessor(c) || e.isFunctionDeclaration(c) || e.isConstructorDeclaration(c); + } + e.isValueSignatureDeclaration = la; + function wa(c, te) { + for (; c && c.kind === te; ) + c = c.parent; + return c; + } + function On(c) { + return wa(c, 191); + } + e.walkUpParenthesizedTypes = On; + function No(c) { + return wa(c, 212); + } + e.walkUpParenthesizedExpressions = No; + function jo(c) { + for (var te; c && c.kind === 191; ) + te = c, c = c.parent; + return [te, c]; + } + e.walkUpParenthesizedTypesAndGetParentAndChild = jo; + function po(c, te) { + var xr = te ? 17 : 1; + return e.skipOuterExpressions(c, xr); + } + e.skipParentheses = po; + function Gn(c) { + return c.kind !== 206 && c.kind !== 207 ? false : (c = No(c.parent), c && c.kind === 215); + } + e.isDeleteTarget = Gn; + function $n(c, te) { + for (; c; ) { + if (c === te) + return true; + c = c.parent; + } + return false; + } + e.isNodeDescendantOf = $n; + function Ho(c) { + return !e.isSourceFile(c) && !e.isBindingPattern(c) && e.isDeclaration(c.parent) && c.parent.name === c; + } + e.isDeclarationName = Ho; + function Zo(c) { + var te = c.parent; + switch (c.kind) { + case 10: + case 14: + case 8: + if (e.isComputedPropertyName(te)) + return te.parent; + case 79: + if (e.isDeclaration(te)) + return te.name === c ? te : void 0; + if (e.isQualifiedName(te)) { + var xr = te.parent; + return e.isJSDocParameterTag(xr) && xr.name === te ? xr : void 0; + } else { + var ei = te.parent; + return e.isBinaryExpression(ei) && Hr(ei) !== 0 && (ei.left.symbol || ei.symbol) && e.getNameOfDeclaration(ei) === c ? ei : void 0; + } + case 80: + return e.isDeclaration(te) && te.name === c ? te : void 0; + default: + return; + } + } + e.getDeclarationFromName = Zo; + function Es(c) { + return ns(c) && c.parent.kind === 162 && e.isDeclaration(c.parent.parent); + } + e.isLiteralComputedPropertyDeclarationName = Es; + function yc(c) { + var te = c.parent; + switch (te.kind) { + case 167: + case 166: + case 169: + case 168: + case 172: + case 173: + case 299: + case 296: + case 206: + return te.name === c; + case 161: + return te.right === c; + case 203: + case 270: + return te.propertyName === c; + case 275: + case 285: + case 279: + case 280: + case 281: + return true; + } + return false; + } + e.isIdentifierName = yc; + function Xr(c) { + return c.kind === 265 || c.kind === 264 || c.kind === 267 && !!c.name || c.kind === 268 || c.kind === 274 || c.kind === 270 || c.kind === 275 || c.kind === 271 && zu(c) ? true : Ct(c) && (e.isBinaryExpression(c) && Hr(c) === 2 && zu(c) || e.isPropertyAccessExpression(c) && e.isBinaryExpression(c.parent) && c.parent.left === c && c.parent.operatorToken.kind === 63 && Ic(c.parent.right)); + } + e.isAliasSymbolDeclaration = Xr; + function Ls(c) { + switch (c.parent.kind) { + case 267: + case 270: + case 268: + case 275: + case 271: + case 265: + case 274: + return c.parent; + case 161: + do + c = c.parent; + while (c.parent.kind === 161); + return Ls(c); + } + } + e.getAliasDeclarationFromName = Ls; + function Ic(c) { + return Hu(c) || e.isClassExpression(c); + } + e.isAliasableExpression = Ic; + function zu(c) { + var te = vf(c); + return Ic(te); + } + e.exportAssignmentIsAlias = zu; + function vf(c) { + return e.isExportAssignment(c) ? c.expression : c.right; + } + e.getExportAssignmentExpression = vf; + function P_(c) { + return c.kind === 297 ? c.name : c.kind === 296 ? c.initializer : c.parent.right; + } + e.getPropertyAssignmentAliasLikeExpression = P_; + function El(c) { + var te = vp(c); + if (te && Ct(c)) { + var xr = e.getJSDocAugmentsTag(c); + if (xr) + return xr.class; + } + return te; + } + e.getEffectiveBaseTypeNode = El; + function vp(c) { + var te = Yl(c.heritageClauses, 94); + return te && te.types.length > 0 ? te.types[0] : void 0; + } + e.getClassExtendsHeritageElement = vp; + function oo(c) { + if (Ct(c)) + return e.getJSDocImplementsTags(c).map(function(xr) { + return xr.class; + }); + var te = Yl(c.heritageClauses, 117); + return te == null ? void 0 : te.types; + } + e.getEffectiveImplementsTypeNodes = oo; + function I_(c) { + return e.isInterfaceDeclaration(c) ? yp(c) || e.emptyArray : e.isClassLike(c) && e.concatenate(e.singleElementArray(El(c)), oo(c)) || e.emptyArray; + } + e.getAllSuperTypeNodes = I_; + function yp(c) { + var te = Yl(c.heritageClauses, 94); + return te ? te.types : void 0; + } + e.getInterfaceBaseTypeNodes = yp; + function Yl(c, te) { + if (c) + for (var xr = 0, ei = c; xr < ei.length; xr++) { + var bi = ei[xr]; + if (bi.token === te) + return bi; + } + } + e.getHeritageClause = Yl; + function Bf(c, te) { + for (; c; ) { + if (c.kind === te) + return c; + c = c.parent; + } + } + e.getAncestor = Bf; + function Cl(c) { + return 81 <= c && c <= 160; + } + e.isKeyword = Cl; + function c_(c) { + return 126 <= c && c <= 160; + } + e.isContextualKeyword = c_; + function hp(c) { + return Cl(c) && !c_(c); + } + e.isNonContextualKeyword = hp; + function gu(c) { + return 117 <= c && c <= 125; + } + e.isFutureReservedKeyword = gu; + function Dp(c) { + var te = e.stringToToken(c); + return te !== void 0 && hp(te); + } + e.isStringANonContextualKeyword = Dp; + function sd(c) { + var te = e.stringToToken(c); + return te !== void 0 && Cl(te); + } + e.isStringAKeyword = sd; + function Aa(c) { + var te = c.originalKeywordKind; + return !!te && !c_(te); + } + e.isIdentifierANonContextualKeyword = Aa; + function va(c) { + return 2 <= c && c <= 7; + } + e.isTrivia = va; + var Cu; + (function(c) { + c[c.Normal = 0] = "Normal", c[c.Generator = 1] = "Generator", c[c.Async = 2] = "Async", c[c.Invalid = 4] = "Invalid", c[c.AsyncGenerator = 3] = "AsyncGenerator"; + })(Cu = e.FunctionFlags || (e.FunctionFlags = {})); + function qs(c) { + if (!c) + return 4; + var te = 0; + switch (c.kind) { + case 256: + case 213: + case 169: + c.asteriskToken && (te |= 1); + case 214: + gc(c, 256) && (te |= 2); + break; + } + return c.body || (te |= 4), te; + } + e.getFunctionFlags = qs; + function cd(c) { + switch (c.kind) { + case 256: + case 213: + case 214: + case 169: + return c.body !== void 0 && c.asteriskToken === void 0 && gc(c, 256); + } + return false; + } + e.isAsyncFunction = cd; + function ns(c) { + return e.isStringLiteralLike(c) || e.isNumericLiteral(c); + } + e.isStringOrNumericLiteralLike = ns; + function nl(c) { + return e.isPrefixUnaryExpression(c) && (c.operator === 39 || c.operator === 40) && e.isNumericLiteral(c.operand); + } + e.isSignedNumericLiteral = nl; + function hc(c) { + var te = e.getNameOfDeclaration(c); + return !!te && es(te); + } + e.hasDynamicName = hc; + function es(c) { + if (!(c.kind === 162 || c.kind === 207)) + return false; + var te = e.isElementAccessExpression(c) ? po(c.argumentExpression) : c.expression; + return !ns(te) && !nl(te); + } + e.isDynamicName = es; + function u_(c) { + switch (c.kind) { + case 79: + case 80: + return c.escapedText; + case 10: + case 8: + return e.escapeLeadingUnderscores(c.text); + case 162: + var te = c.expression; + return ns(te) ? e.escapeLeadingUnderscores(te.text) : nl(te) ? te.operator === 40 ? e.tokenToString(te.operator) + te.operand.text : te.operand.text : void 0; + default: + return e.Debug.assertNever(c); + } + } + e.getPropertyNameForPropertyNameNode = u_; + function Jf(c) { + switch (c.kind) { + case 79: + case 10: + case 14: + case 8: + return true; + default: + return false; + } + } + e.isPropertyNameLiteral = Jf; + function w_(c) { + return e.isMemberName(c) ? e.idText(c) : c.text; + } + e.getTextOfIdentifierOrLiteral = w_; + function ud(c) { + return e.isMemberName(c) ? c.escapedText : e.escapeLeadingUnderscores(c.text); + } + e.getEscapedTextOfIdentifierOrLiteral = ud; + function ku(c) { + return "__@".concat(e.getSymbolId(c), "@").concat(c.escapedName); + } + e.getPropertyNameForUniqueESSymbol = ku; + function ld(c, te) { + return "__#".concat(e.getSymbolId(c), "@").concat(te); + } + e.getSymbolNameForPrivateIdentifier = ld; + function fd(c) { + return e.startsWith(c.escapedName, "__@"); + } + e.isKnownSymbol = fd; + function bp(c) { + return e.startsWith(c.escapedName, "__#"); + } + e.isPrivateIdentifierSymbol = bp; + function Sp(c) { + return c.kind === 79 && c.escapedText === "Symbol"; + } + e.isESSymbolIdentifier = Sp; + function Tp(c) { + return c.escapedText === "push" || c.escapedText === "unshift"; + } + e.isPushOrUnshiftIdentifier = Tp; + function _d(c) { + var te = jf(c); + return te.kind === 164; + } + e.isParameterDeclaration = _d; + function jf(c) { + for (; c.kind === 203; ) + c = c.parent.parent; + return c; + } + e.getRootDeclaration = jf; + function O_(c) { + var te = c.kind; + return te === 171 || te === 213 || te === 256 || te === 214 || te === 169 || te === 172 || te === 173 || te === 261 || te === 305; + } + e.nodeStartsNewLexicalEnvironment = O_; + function F_(c) { + return Jl(c.pos) || Jl(c.end); + } + e.nodeIsSynthesized = F_; + function pd(c) { + return e.getParseTreeNode(c, e.isSourceFile) || c; + } + e.getOriginalSourceFile = pd; + var xp; + (function(c) { + c[c.Left = 0] = "Left", c[c.Right = 1] = "Right"; + })(xp = e.Associativity || (e.Associativity = {})); + function M_(c) { + var te = Au(c), xr = c.kind === 209 && c.arguments !== void 0; + return Ep(c.kind, te, xr); + } + e.getExpressionAssociativity = M_; + function Ep(c, te, xr) { + switch (c) { + case 209: + return xr ? 0 : 1; + case 219: + case 216: + case 217: + case 215: + case 218: + case 222: + case 224: + return 1; + case 221: + switch (te) { + case 42: + case 63: + case 64: + case 65: + case 67: + case 66: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 78: + case 74: + case 75: + case 76: + case 77: + return 1; + } + } + return 0; + } + e.getOperatorAssociativity = Ep; + function ol(c) { + var te = Au(c), xr = c.kind === 209 && c.arguments !== void 0; + return yf(c.kind, te, xr); + } + e.getExpressionPrecedence = ol; + function Au(c) { + return c.kind === 221 ? c.operatorToken.kind : c.kind === 219 || c.kind === 220 ? c.operator : c.kind; + } + e.getOperator = Au; + var ru; + (function(c) { + c[c.Comma = 0] = "Comma", c[c.Spread = 1] = "Spread", c[c.Yield = 2] = "Yield", c[c.Assignment = 3] = "Assignment", c[c.Conditional = 4] = "Conditional", c[c.Coalesce = 4] = "Coalesce", c[c.LogicalOR = 5] = "LogicalOR", c[c.LogicalAND = 6] = "LogicalAND", c[c.BitwiseOR = 7] = "BitwiseOR", c[c.BitwiseXOR = 8] = "BitwiseXOR", c[c.BitwiseAND = 9] = "BitwiseAND", c[c.Equality = 10] = "Equality", c[c.Relational = 11] = "Relational", c[c.Shift = 12] = "Shift", c[c.Additive = 13] = "Additive", c[c.Multiplicative = 14] = "Multiplicative", c[c.Exponentiation = 15] = "Exponentiation", c[c.Unary = 16] = "Unary", c[c.Update = 17] = "Update", c[c.LeftHandSide = 18] = "LeftHandSide", c[c.Member = 19] = "Member", c[c.Primary = 20] = "Primary", c[c.Highest = 20] = "Highest", c[c.Lowest = 0] = "Lowest", c[c.Invalid = -1] = "Invalid"; + })(ru = e.OperatorPrecedence || (e.OperatorPrecedence = {})); + function yf(c, te, xr) { + switch (c) { + case 351: + return 0; + case 225: + return 1; + case 224: + return 2; + case 222: + return 4; + case 221: + switch (te) { + case 27: + return 0; + case 63: + case 64: + case 65: + case 67: + case 66: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 78: + case 74: + case 75: + case 76: + case 77: + return 3; + default: + return Cp(te); + } + case 211: + case 230: + case 219: + case 216: + case 217: + case 215: + case 218: + return 16; + case 220: + return 17; + case 208: + return 18; + case 209: + return xr ? 19 : 18; + case 210: + case 206: + case 207: + case 231: + return 19; + case 229: + return 11; + case 108: + case 106: + case 79: + case 80: + case 104: + case 110: + case 95: + case 8: + case 9: + case 10: + case 204: + case 205: + case 213: + case 214: + case 226: + case 13: + case 14: + case 223: + case 212: + case 227: + case 278: + case 279: + case 282: + return 20; + default: + return -1; + } + } + e.getOperatorPrecedence = yf; + function Cp(c) { + switch (c) { + case 60: + return 4; + case 56: + return 5; + case 55: + return 6; + case 51: + return 7; + case 52: + return 8; + case 50: + return 9; + case 34: + case 35: + case 36: + case 37: + return 10; + case 29: + case 31: + case 32: + case 33: + case 102: + case 101: + case 127: + return 11; + case 47: + case 48: + case 49: + return 12; + case 39: + case 40: + return 13; + case 41: + case 43: + case 44: + return 14; + case 42: + return 15; + } + return -1; + } + e.getBinaryOperatorPrecedence = Cp; + function dd(c) { + return e.filter(c, function(te) { + switch (te.kind) { + case 288: + return !!te.expression; + case 11: + return !te.containsOnlyTriviaWhiteSpaces; + default: + return true; + } + }); + } + e.getSemanticJsxChildren = dd; + function kp() { + var c = [], te = [], xr = new e.Map(), ei = false; + return { add: Ft, lookup: bi, getGlobalDiagnostics: ot, getDiagnostics: xa }; + function bi(mn) { + var an; + if (mn.file ? an = xr.get(mn.file.fileName) : an = c, !!an) { + var To = e.binarySearch(an, mn, e.identity, _g); + if (To >= 0) + return an[To]; + } + } + function Ft(mn) { + var an; + mn.file ? (an = xr.get(mn.file.fileName), an || (an = [], xr.set(mn.file.fileName, an), e.insertSorted(te, mn.file.fileName, e.compareStringsCaseSensitive))) : (ei && (ei = false, c = c.slice()), an = c), e.insertSorted(an, mn, Qg); + } + function ot() { + return ei = true, c; + } + function xa(mn) { + if (mn) + return xr.get(mn) || []; + var an = e.flatMapToMutable(te, function(To) { + return xr.get(To); + }); + return c.length && an.unshift.apply(an, c), an; + } + } + e.createDiagnosticCollection = kp; + var mu = /\$\{/g; + function gd(c) { + return c.replace(mu, "\\${"); + } + function hf(c) { + return c && !!(e.isNoSubstitutionTemplateLiteral(c) ? c.templateFlags : c.head.templateFlags || e.some(c.templateSpans, function(te) { + return !!te.literal.templateFlags; + })); + } + e.hasInvalidEscape = hf; + var $l = /[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g, Uf = /[\\\'\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g, L_ = /\r\n|[\\\`\u0000-\u001f\t\v\f\b\r\u2028\u2029\u0085]/g, l_ = new e.Map(e.getEntries({ " ": "\\t", "\v": "\\v", "\f": "\\f", "\b": "\\b", "\r": "\\r", "\n": "\\n", "\\": "\\\\", '"': '\\"', "'": "\\'", "`": "\\`", "\u2028": "\\u2028", "\u2029": "\\u2029", "\x85": "\\u0085", "\r\n": "\\r\\n" })); + function f_(c) { + var te = c.toString(16).toUpperCase(), xr = ("0000" + te).slice(-4); + return "\\u" + xr; + } + function md(c, te, xr) { + if (c.charCodeAt(0) === 0) { + var ei = xr.charCodeAt(te + c.length); + return ei >= 48 && ei <= 57 ? "\\x00" : "\\0"; + } + return l_.get(c) || f_(c.charCodeAt(0)); + } + function ks(c, te) { + var xr = te === 96 ? L_ : te === 39 ? Uf : $l; + return c.replace(xr, md); + } + e.escapeString = ks; + var Wu = /[^\u0000-\u007F]/g; + function Zl(c, te) { + return c = ks(c, te), Wu.test(c) ? c.replace(Wu, function(xr) { + return f_(xr.charCodeAt(0)); + }) : c; + } + e.escapeNonAsciiString = Zl; + var R_ = /[\"\u0000-\u001f\u2028\u2029\u0085]/g, kl = /[\'\u0000-\u001f\u2028\u2029\u0085]/g, __ = new e.Map(e.getEntries({ '"': """, "'": "'" })); + function zd(c) { + var te = c.toString(16).toUpperCase(); + return "&#x" + te + ";"; + } + function Al(c) { + return c.charCodeAt(0) === 0 ? "�" : __.get(c) || zd(c.charCodeAt(0)); + } + function wc(c, te) { + var xr = te === 39 ? kl : R_; + return c.replace(xr, Al); + } + e.escapeJsxAttributeString = wc; + function qu(c) { + var te = c.length; + return te >= 2 && c.charCodeAt(0) === c.charCodeAt(te - 1) && Vu(c.charCodeAt(0)) ? c.substring(1, te - 1) : c; + } + e.stripQuotes = qu; + function Vu(c) { + return c === 39 || c === 34 || c === 96; + } + function ef(c) { + var te = c.charCodeAt(0); + return te >= 97 && te <= 122 || e.stringContains(c, "-") || e.stringContains(c, ":"); + } + e.isIntrinsicJsxName = ef; + var sl = ["", " "]; + function p_(c) { + for (var te = sl[1], xr = sl.length; xr <= c; xr++) + sl.push(sl[xr - 1] + te); + return sl[c]; + } + e.getIndentString = p_; + function Df() { + return sl[1].length; + } + e.getIndentSize = Df; + function Ec() { + return e.stringContains(e.version, "-dev") || e.stringContains(e.version, "-insiders"); + } + e.isNightly = Ec; + function Zn(c) { + var te, xr, ei, bi, Ft, ot = false; + function xa(Xo) { + var jl = e.computeLineStarts(Xo); + jl.length > 1 ? (bi = bi + jl.length - 1, Ft = te.length - Xo.length + e.last(jl), ei = Ft - te.length === 0) : ei = false; + } + function mn(Xo) { + Xo && Xo.length && (ei && (Xo = p_(xr) + Xo, ei = false), te += Xo, xa(Xo)); + } + function an(Xo) { + Xo && (ot = false), mn(Xo); + } + function To(Xo) { + Xo && (ot = true), mn(Xo); + } + function Hn() { + te = "", xr = 0, ei = true, bi = 0, Ft = 0, ot = false; + } + function ss(Xo) { + Xo !== void 0 && (te += Xo, xa(Xo), ot = false); + } + function cs(Xo) { + Xo && Xo.length && an(Xo); + } + function ws(Xo) { + (!ei || Xo) && (te += c, bi++, Ft = te.length, ei = true, ot = false); + } + function nu() { + return ei ? te.length : te.length + c.length; + } + return Hn(), { write: an, rawWrite: ss, writeLiteral: cs, writeLine: ws, increaseIndent: function() { + xr++; + }, decreaseIndent: function() { + xr--; + }, getIndent: function() { + return xr; + }, getTextPos: function() { + return te.length; + }, getLine: function() { + return bi; + }, getColumn: function() { + return ei ? xr * Df() : te.length - Ft; + }, getText: function() { + return te; + }, isAtStartOfLine: function() { + return ei; + }, hasTrailingComment: function() { + return ot; + }, hasTrailingWhitespace: function() { + return !!te.length && e.isWhiteSpaceLike(te.charCodeAt(te.length - 1)); + }, clear: Hn, reportInaccessibleThisError: e.noop, reportPrivateInBaseOfClassExpression: e.noop, reportInaccessibleUniqueSymbolError: e.noop, trackSymbol: function() { + return false; + }, writeKeyword: an, writeOperator: an, writeParameter: an, writeProperty: an, writePunctuation: an, writeSpace: an, writeStringLiteral: an, writeSymbol: function(Xo, jl) { + return an(Xo); + }, writeTrailingSemicolon: an, writeComment: To, getTextPosWithWriteLine: nu }; + } + e.createTextWriter = Zn; + function os(c) { + var te = false; + function xr() { + te && (c.writeTrailingSemicolon(";"), te = false); + } + return Ke(Ke({}, c), { writeTrailingSemicolon: function() { + te = true; + }, writeLiteral: function(ei) { + xr(), c.writeLiteral(ei); + }, writeStringLiteral: function(ei) { + xr(), c.writeStringLiteral(ei); + }, writeSymbol: function(ei, bi) { + xr(), c.writeSymbol(ei, bi); + }, writePunctuation: function(ei) { + xr(), c.writePunctuation(ei); + }, writeKeyword: function(ei) { + xr(), c.writeKeyword(ei); + }, writeOperator: function(ei) { + xr(), c.writeOperator(ei); + }, writeParameter: function(ei) { + xr(), c.writeParameter(ei); + }, writeSpace: function(ei) { + xr(), c.writeSpace(ei); + }, writeProperty: function(ei) { + xr(), c.writeProperty(ei); + }, writeComment: function(ei) { + xr(), c.writeComment(ei); + }, writeLine: function() { + xr(), c.writeLine(); + }, increaseIndent: function() { + xr(), c.increaseIndent(); + }, decreaseIndent: function() { + xr(), c.decreaseIndent(); + } }); + } + e.getTrailingSemicolonDeferringWriter = os; + function Ps(c) { + return c.useCaseSensitiveFileNames ? c.useCaseSensitiveFileNames() : false; + } + e.hostUsesCaseSensitiveFileNames = Ps; + function d_(c) { + return e.createGetCanonicalFileName(Ps(c)); + } + e.hostGetCanonicalFileName = d_; + function Gc(c, te, xr) { + return te.moduleName || Gt(c, te.fileName, xr && xr.fileName); + } + e.getResolvedExternalModuleName = Gc; + function B_(c, te) { + return c.getCanonicalFileName(e.getNormalizedAbsolutePath(te, c.getCurrentDirectory())); + } + function vu(c, te, xr) { + var ei = te.getExternalModuleFileFromDeclaration(xr); + if (!(!ei || ei.isDeclarationFile)) { + var bi = eu(xr); + if (!(bi && e.isStringLiteralLike(bi) && !e.pathIsRelative(bi.text) && B_(c, ei.path).indexOf(B_(c, e.ensureTrailingDirectorySeparator(c.getCommonSourceDirectory()))) === -1)) + return Gc(c, ei); + } + } + e.getExternalModuleNameFromDeclaration = vu; + function Gt(c, te, xr) { + var ei = function(mn) { + return c.getCanonicalFileName(mn); + }, bi = e.toPath(xr ? e.getDirectoryPath(xr) : c.getCommonSourceDirectory(), c.getCurrentDirectory(), ei), Ft = e.getNormalizedAbsolutePath(te, c.getCurrentDirectory()), ot = e.getRelativePathToDirectoryOrUrl(bi, Ft, bi, ei, false), xa = Gd(ot); + return xr ? e.ensurePathIsNonModuleName(xa) : xa; + } + e.getExternalModuleNameFromPath = Gt; + function As(c, te, xr) { + var ei = te.getCompilerOptions(), bi; + return ei.outDir ? bi = Gd(Dc(c, te, ei.outDir)) : bi = Gd(c), bi + xr; + } + e.getOwnEmitOutputFilePath = As; + function vn(c, te) { + return Nl(c, te.getCompilerOptions(), te.getCurrentDirectory(), te.getCommonSourceDirectory(), function(xr) { + return te.getCanonicalFileName(xr); + }); + } + e.getDeclarationEmitOutputFilePath = vn; + function Nl(c, te, xr, ei, bi) { + var Ft = te.declarationDir || te.outDir, ot = Ft ? Cc(c, Ft, xr, ei, bi) : c, xa = cl(ot); + return Gd(ot) + xa; + } + e.getDeclarationEmitOutputFilePathWorker = Nl; + function cl(c) { + return e.fileExtensionIsOneOf(c, [".mjs", ".mts"]) ? ".d.mts" : e.fileExtensionIsOneOf(c, [".cjs", ".cts"]) ? ".d.cts" : e.fileExtensionIsOneOf(c, [".json"]) ? ".json.d.ts" : ".d.ts"; + } + e.getDeclarationEmitExtensionForPath = cl; + function rf(c) { + return e.fileExtensionIsOneOf(c, [".d.mts", ".mjs", ".mts"]) ? [".mts", ".mjs"] : e.fileExtensionIsOneOf(c, [".d.cts", ".cjs", ".cts"]) ? [".cts", ".cjs"] : e.fileExtensionIsOneOf(c, [".json.d.ts"]) ? [".json"] : [".tsx", ".ts", ".jsx", ".js"]; + } + e.getPossibleOriginalInputExtensionForExtension = rf; + function Ut(c) { + return c.outFile || c.out; + } + e.outFile = Ut; + function Ds(c, te) { + var xr, ei; + if (!!c.paths) + return (xr = c.baseUrl) !== null && xr !== void 0 ? xr : e.Debug.checkDefined(c.pathsBasePath || ((ei = te.getCurrentDirectory) === null || ei === void 0 ? void 0 : ei.call(te)), "Encountered 'paths' without a 'baseUrl', config file, or host 'getCurrentDirectory'."); + } + e.getPathsBasePath = Ds; + function bf(c, te, xr) { + var ei = c.getCompilerOptions(); + if (Ut(ei)) { + var bi = Ja(ei), Ft = ei.emitDeclarationOnly || bi === e.ModuleKind.AMD || bi === e.ModuleKind.System; + return e.filter(c.getSourceFiles(), function(xa) { + return (Ft || !e.isExternalModule(xa)) && bs(xa, c, xr); + }); + } else { + var ot = te === void 0 ? c.getSourceFiles() : [te]; + return e.filter(ot, function(xa) { + return bs(xa, c, xr); + }); + } + } + e.getSourceFilesToEmit = bf; + function bs(c, te, xr) { + var ei = te.getCompilerOptions(); + return !(ei.noEmitForJsFiles && Pi(c)) && !c.isDeclarationFile && !te.isSourceFileFromExternalLibrary(c) && (xr || !(Mr(c) && te.getResolvedProjectReferenceToRedirect(c.fileName)) && !te.isSourceOfProjectReferenceRedirect(c.fileName)); + } + e.sourceFileMayBeEmitted = bs; + function Dc(c, te, xr) { + return Cc(c, xr, te.getCurrentDirectory(), te.getCommonSourceDirectory(), function(ei) { + return te.getCanonicalFileName(ei); + }); + } + e.getSourceFilePathInNewDir = Dc; + function Cc(c, te, xr, ei, bi) { + var Ft = e.getNormalizedAbsolutePath(c, xr), ot = bi(Ft).indexOf(bi(ei)) === 0; + return Ft = ot ? Ft.substring(ei.length) : Ft, e.combinePaths(te, Ft); + } + e.getSourceFilePathInNewDirWorker = Cc; + function ac(c, te, xr, ei, bi, Ft, ot) { + c.writeFile(xr, ei, bi, function(xa) { + te.add(qd(e.Diagnostics.Could_not_write_file_0_Colon_1, xr, xa)); + }, Ft, ot); + } + e.writeFile = ac; + function Pl(c, te, xr) { + if (c.length > e.getRootLength(c) && !xr(c)) { + var ei = e.getDirectoryPath(c); + Pl(ei, te, xr), te(c); + } + } + function Il(c, te, xr, ei, bi, Ft) { + try { + ei(c, te, xr); + } catch { + Pl(e.getDirectoryPath(e.normalizePath(c)), bi, Ft), ei(c, te, xr); + } + } + e.writeFileEnsuringDirectories = Il; + function zf(c, te) { + var xr = e.getLineStarts(c); + return e.computeLineOfPosition(xr, te); + } + e.getLineOfLocalPosition = zf; + function ul(c, te) { + return e.computeLineOfPosition(c, te); + } + e.getLineOfLocalPositionFromLineMap = ul; + function Nu(c) { + return e.find(c.members, function(te) { + return e.isConstructorDeclaration(te) && j(te.body); + }); + } + e.getFirstConstructorWithBody = Nu; + function Us(c) { + if (c && c.parameters.length > 0) { + var te = c.parameters.length === 2 && Sf(c.parameters[0]); + return c.parameters[te ? 1 : 0]; + } + } + e.getSetAccessorValueParameter = Us; + function Ap(c) { + var te = Us(c); + return te && te.type; + } + e.getSetAccessorTypeAnnotationNode = Ap; + function Wf(c) { + if (c.parameters.length && !e.isJSDocSignature(c)) { + var te = c.parameters[0]; + if (Sf(te)) + return te; + } + } + e.getThisParameter = Wf; + function Sf(c) { + return ll(c.name); + } + e.parameterIsThisKeyword = Sf; + function ll(c) { + return !!c && c.kind === 79 && j_(c); + } + e.isThisIdentifier = ll; + function J_(c) { + if (!ll(c)) + return false; + for (; e.isQualifiedName(c.parent) && c.parent.left === c; ) + c = c.parent; + return c.parent.kind === 181; + } + e.isThisInTypeQuery = J_; + function j_(c) { + return c.originalKeywordKind === 108; + } + e.identifierIsThisKeyword = j_; + function U_(c, te) { + var xr, ei, bi, Ft; + return hc(te) ? (xr = te, te.kind === 172 ? bi = te : te.kind === 173 ? Ft = te : e.Debug.fail("Accessor has wrong kind")) : e.forEach(c, function(ot) { + if (e.isAccessor(ot) && Tf(ot) === Tf(te)) { + var xa = u_(ot.name), mn = u_(te.name); + xa === mn && (xr ? ei || (ei = ot) : xr = ot, ot.kind === 172 && !bi && (bi = ot), ot.kind === 173 && !Ft && (Ft = ot)); + } + }), { firstAccessor: xr, secondAccessor: ei, getAccessor: bi, setAccessor: Ft }; + } + e.getAllAccessorDeclarations = U_; + function iu(c) { + if (!(!Ct(c) && e.isFunctionDeclaration(c))) { + var te = c.type; + return te || !Ct(c) ? te : e.isJSDocPropertyLikeTag(c) ? c.typeExpression && c.typeExpression.type : e.getJSDocType(c); + } + } + e.getEffectiveTypeAnnotationNode = iu; + function vd(c) { + return c.type; + } + e.getTypeAnnotationNode = vd; + function qf(c) { + return e.isJSDocSignature(c) ? c.type && c.type.typeExpression && c.type.typeExpression.type : c.type || (Ct(c) ? e.getJSDocReturnType(c) : void 0); + } + e.getEffectiveReturnTypeNode = qf; + function dc(c) { + return e.flatMap(e.getJSDocTags(c), function(te) { + return Pu(te) ? te.typeParameters : void 0; + }); + } + e.getJSDocTypeParameterDeclarations = dc; + function Pu(c) { + return e.isJSDocTemplateTag(c) && !(c.parent.kind === 320 && c.parent.tags.some(Ya)); + } + function wl(c) { + var te = Us(c); + return te && iu(te); + } + e.getEffectiveSetAccessorTypeAnnotationNode = wl; + function Iu(c, te, xr, ei) { + so(c, te, xr.pos, ei); + } + e.emitNewLineBeforeLeadingComments = Iu; + function so(c, te, xr, ei) { + ei && ei.length && xr !== ei[0].pos && ul(c, xr) !== ul(c, ei[0].pos) && te.writeLine(); + } + e.emitNewLineBeforeLeadingCommentsOfPosition = so; + function Et(c, te, xr, ei) { + xr !== ei && ul(c, xr) !== ul(c, ei) && te.writeLine(); + } + e.emitNewLineBeforeLeadingCommentOfPosition = Et; + function Ys(c, te, xr, ei, bi, Ft, ot, xa) { + if (ei && ei.length > 0) { + bi && xr.writeSpace(" "); + for (var mn = false, an = 0, To = ei; an < To.length; an++) { + var Hn = To[an]; + mn && (xr.writeSpace(" "), mn = false), xa(c, te, xr, Hn.pos, Hn.end, ot), Hn.hasTrailingNewLine ? xr.writeLine() : mn = true; + } + mn && Ft && xr.writeSpace(" "); + } + } + e.emitComments = Ys; + function Ku(c, te, xr, ei, bi, Ft, ot) { + var xa, mn; + if (ot ? bi.pos === 0 && (xa = e.filter(e.getLeadingCommentRanges(c, bi.pos), jl)) : xa = e.getLeadingCommentRanges(c, bi.pos), xa) { + for (var an = [], To = void 0, Hn = 0, ss = xa; Hn < ss.length; Hn++) { + var cs = ss[Hn]; + if (To) { + var ws = ul(te, To.end), nu = ul(te, cs.pos); + if (nu >= ws + 2) + break; + } + an.push(cs), To = cs; + } + if (an.length) { + var ws = ul(te, e.last(an).end), Xo = ul(te, e.skipTrivia(c, bi.pos)); + Xo >= ws + 2 && (Iu(te, xr, bi, xa), Ys(c, te, xr, an, false, true, Ft, ei), mn = { nodePos: bi.pos, detachedCommentEndPos: e.last(an).end }); + } + } + return mn; + function jl(Y_) { + return ue(c, Y_.pos); + } + } + e.emitDetachedComments = Ku; + function Np(c, te, xr, ei, bi, Ft) { + if (c.charCodeAt(ei + 1) === 42) + for (var ot = e.computeLineAndCharacterOfPosition(te, ei), xa = te.length, mn = void 0, an = ei, To = ot.line; an < bi; To++) { + var Hn = To + 1 === xa ? c.length + 1 : te[To + 1]; + if (an !== ei) { + mn === void 0 && (mn = nc(c, te[ot.line], ei)); + var ss = xr.getIndent() * Df(), cs = ss - mn + nc(c, an, Hn); + if (cs > 0) { + var ws = cs % Df(), nu = p_((cs - ws) / Df()); + for (xr.rawWrite(nu); ws; ) + xr.rawWrite(" "), ws--; + } else + xr.rawWrite(""); + } + Pp(c, bi, xr, Ft, an, Hn), an = Hn; + } + else + xr.writeComment(c.substring(ei, bi)); + } + e.writeCommentRange = Np; + function Pp(c, te, xr, ei, bi, Ft) { + var ot = Math.min(te, Ft - 1), xa = e.trimString(c.substring(bi, ot)); + xa ? (xr.writeComment(xa), ot !== te && xr.writeLine()) : xr.rawWrite(ei); + } + function nc(c, te, xr) { + for (var ei = 0; te < xr && e.isWhiteSpaceSingleLine(c.charCodeAt(te)); te++) + c.charCodeAt(te) === 9 ? ei += Df() - ei % Df() : ei++; + return ei; + } + function fl(c) { + return xf(c) !== 0; + } + e.hasEffectiveModifiers = fl; + function _l(c) { + return Oc(c) !== 0; + } + e.hasSyntacticModifiers = _l; + function cu(c, te) { + return !!Hc(c, te); + } + e.hasEffectiveModifier = cu; + function gc(c, te) { + return !!Ol(c, te); + } + e.hasSyntacticModifier = gc; + function Tf(c) { + return e.isClassElement(c) && mc(c) || e.isClassStaticBlockDeclaration(c); + } + e.isStatic = Tf; + function mc(c) { + return gc(c, 32); + } + e.hasStaticModifier = mc; + function Ip(c) { + return cu(c, 16384); + } + e.hasOverrideModifier = Ip; + function ms(c) { + return gc(c, 128); + } + e.hasAbstractModifier = ms; + function tu(c) { + return gc(c, 2); + } + e.hasAmbientModifier = tu; + function wp(c) { + return cu(c, 64); + } + e.hasEffectiveReadonlyModifier = wp; + function Hc(c, te) { + return xf(c) & te; + } + e.getSelectedEffectiveModifierFlags = Hc; + function Ol(c, te) { + return Oc(c) & te; + } + e.getSelectedSyntacticModifierFlags = Ol; + function tf(c, te, xr) { + return c.kind >= 0 && c.kind <= 160 ? 0 : (c.modifierFlagsCache & 536870912 || (c.modifierFlagsCache = Ef(c) | 536870912), te && !(c.modifierFlagsCache & 4096) && (xr || Ct(c)) && c.parent && (c.modifierFlagsCache |= rs(c) | 4096), c.modifierFlagsCache & -536875009); + } + function xf(c) { + return tf(c, true); + } + e.getEffectiveModifierFlags = xf; + function z_(c) { + return tf(c, true, true); + } + e.getEffectiveModifierFlagsAlwaysIncludeJSDoc = z_; + function Oc(c) { + return tf(c, false); + } + e.getSyntacticModifierFlags = Oc; + function rs(c) { + var te = 0; + return !!c.parent && !e.isParameter(c) && (Ct(c) && (e.getJSDocPublicTagNoCache(c) && (te |= 4), e.getJSDocPrivateTagNoCache(c) && (te |= 8), e.getJSDocProtectedTagNoCache(c) && (te |= 16), e.getJSDocReadonlyTagNoCache(c) && (te |= 64), e.getJSDocOverrideTagNoCache(c) && (te |= 16384)), e.getJSDocDeprecatedTagNoCache(c) && (te |= 8192)), te; + } + function Op(c) { + return Ef(c) | rs(c); + } + e.getEffectiveModifierFlagsNoCache = Op; + function Ef(c) { + var te = Fl(c.modifiers); + return (c.flags & 4 || c.kind === 79 && c.isInJSDocNamespace) && (te |= 1), te; + } + e.getSyntacticModifierFlagsNoCache = Ef; + function Fl(c) { + var te = 0; + if (c) + for (var xr = 0, ei = c; xr < ei.length; xr++) { + var bi = ei[xr]; + te |= pl(bi.kind); + } + return te; + } + e.modifiersToFlags = Fl; + function pl(c) { + switch (c) { + case 124: + return 32; + case 123: + return 4; + case 122: + return 16; + case 121: + return 8; + case 126: + return 128; + case 93: + return 1; + case 135: + return 2; + case 85: + return 2048; + case 88: + return 512; + case 131: + return 256; + case 145: + return 64; + case 159: + return 16384; + case 101: + return 32768; + case 144: + return 65536; + } + return 0; + } + e.modifierToFlag = pl; + function Fp(c) { + return c ? e.factory.createNodeArray(e.factory.createModifiersFromModifierFlags(c)) : void 0; + } + e.createModifiers = Fp; + function Mp(c) { + return c === 56 || c === 55 || c === 53; + } + e.isLogicalOperator = Mp; + function Gu(c) { + return c === 75 || c === 76 || c === 77; + } + e.isLogicalOrCoalescingAssignmentOperator = Gu; + function Lp(c) { + return Gu(c.operatorToken.kind); + } + e.isLogicalOrCoalescingAssignmentExpression = Lp; + function Cf(c) { + return c >= 63 && c <= 78; + } + e.isAssignmentOperator = Cf; + function W_(c) { + var te = g_(c); + return te && !te.isImplements ? te.class : void 0; + } + e.tryGetClassExtendingExpressionWithTypeArguments = W_; + function g_(c) { + return e.isExpressionWithTypeArguments(c) && e.isHeritageClause(c.parent) && e.isClassLike(c.parent.parent) ? { class: c.parent.parent, isImplements: c.parent.token === 117 } : void 0; + } + e.tryGetClassImplementingOrExtendingExpressionWithTypeArguments = g_; + function dl(c, te) { + return e.isBinaryExpression(c) && (te ? c.operatorToken.kind === 63 : Cf(c.operatorToken.kind)) && e.isLeftHandSideExpression(c.left); + } + e.isAssignmentExpression = dl; + function gl(c) { + return dl(c.parent) && c.parent.left === c; + } + e.isLeftHandSideOfAssignment = gl; + function Vf(c) { + if (dl(c, true)) { + var te = c.left.kind; + return te === 205 || te === 204; + } + return false; + } + e.isDestructuringAssignment = Vf; + function Fc(c) { + return W_(c) !== void 0; + } + e.isExpressionWithTypeArgumentsInClassExtendsClause = Fc; + function Hu(c) { + return c.kind === 79 || Ml(c); + } + e.isEntityNameExpression = Hu; + function af(c) { + switch (c.kind) { + case 79: + return c; + case 161: + do + c = c.left; + while (c.kind !== 79); + return c; + case 206: + do + c = c.expression; + while (c.kind !== 79); + return c; + } + } + e.getFirstIdentifier = af; + function tn(c) { + return c.kind === 79 || c.kind === 108 || c.kind === 106 || c.kind === 231 || c.kind === 206 && tn(c.expression) || c.kind === 212 && tn(c.expression); + } + e.isDottedName = tn; + function Ml(c) { + return e.isPropertyAccessExpression(c) && e.isIdentifier(c.name) && Hu(c.expression); + } + e.isPropertyAccessEntityNameExpression = Ml; + function Ot(c) { + if (e.isPropertyAccessExpression(c)) { + var te = Ot(c.expression); + if (te !== void 0) + return te + "." + Xe(c.name); + } else if (e.isElementAccessExpression(c)) { + var te = Ot(c.expression); + if (te !== void 0 && e.isPropertyName(c.argumentExpression)) + return te + "." + u_(c.argumentExpression); + } else if (e.isIdentifier(c)) + return e.unescapeLeadingUnderscores(c.escapedText); + } + e.tryGetPropertyAccessOrIdentifierToString = Ot; + function nf(c) { + return ua(c) && Ao(c) === "prototype"; + } + e.isPrototypeAccess = nf; + function q_(c) { + return c.parent.kind === 161 && c.parent.right === c || c.parent.kind === 206 && c.parent.name === c; + } + e.isRightSideOfQualifiedNameOrPropertyAccess = q_; + function Kf(c) { + return e.isPropertyAccessExpression(c.parent) && c.parent.name === c || e.isElementAccessExpression(c.parent) && c.parent.argumentExpression === c; + } + e.isRightSideOfAccessExpression = Kf; + function Rp(c) { + return e.isQualifiedName(c.parent) && c.parent.right === c || e.isPropertyAccessExpression(c.parent) && c.parent.name === c || e.isJSDocMemberName(c.parent) && c.parent.right === c; + } + e.isRightSideOfQualifiedNameOrPropertyAccessOrJSDocMemberName = Rp; + function yd(c) { + return c.kind === 205 && c.properties.length === 0; + } + e.isEmptyObjectLiteral = yd; + function m_(c) { + return c.kind === 204 && c.elements.length === 0; + } + e.isEmptyArrayLiteral = m_; + function Ll(c) { + if (!(!hd(c) || !c.declarations)) + for (var te = 0, xr = c.declarations; te < xr.length; te++) { + var ei = xr[te]; + if (ei.localSymbol) + return ei.localSymbol; + } + } + e.getLocalSymbolForExportDefault = Ll; + function hd(c) { + return c && e.length(c.declarations) > 0 && gc(c.declarations[0], 512); + } + function v_(c) { + return e.find(oh, function(te) { + return e.fileExtensionIs(c, te); + }); + } + e.tryExtractTSExtension = v_; + function Bp(c) { + for (var te = [], xr = c.length, ei = 0; ei < xr; ei++) { + var bi = c.charCodeAt(ei); + bi < 128 ? te.push(bi) : bi < 2048 ? (te.push(bi >> 6 | 192), te.push(bi & 63 | 128)) : bi < 65536 ? (te.push(bi >> 12 | 224), te.push(bi >> 6 & 63 | 128), te.push(bi & 63 | 128)) : bi < 131072 ? (te.push(bi >> 18 | 240), te.push(bi >> 12 & 63 | 128), te.push(bi >> 6 & 63 | 128), te.push(bi & 63 | 128)) : e.Debug.assert(false, "Unexpected code point"); + } + return te; + } + var Xu = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + function Xc(c) { + for (var te = "", xr = Bp(c), ei = 0, bi = xr.length, Ft, ot, xa, mn; ei < bi; ) + Ft = xr[ei] >> 2, ot = (xr[ei] & 3) << 4 | xr[ei + 1] >> 4, xa = (xr[ei + 1] & 15) << 2 | xr[ei + 2] >> 6, mn = xr[ei + 2] & 63, ei + 1 >= bi ? xa = mn = 64 : ei + 2 >= bi && (mn = 64), te += Xu.charAt(Ft) + Xu.charAt(ot) + Xu.charAt(xa) + Xu.charAt(mn), ei += 3; + return te; + } + e.convertToBase64 = Xc; + function Gf(c) { + for (var te = "", xr = 0, ei = c.length; xr < ei; ) { + var bi = c[xr]; + if (bi < 128) + te += String.fromCharCode(bi), xr++; + else if ((bi & 192) === 192) { + var Ft = bi & 63; + xr++; + for (var ot = c[xr]; (ot & 192) === 128; ) + Ft = Ft << 6 | ot & 63, xr++, ot = c[xr]; + te += String.fromCharCode(Ft); + } else + te += String.fromCharCode(bi), xr++; + } + return te; + } + function of(c, te) { + return c && c.base64encode ? c.base64encode(te) : Xc(te); + } + e.base64encode = of; + function wu(c, te) { + if (c && c.base64decode) + return c.base64decode(te); + for (var xr = te.length, ei = [], bi = 0; bi < xr && te.charCodeAt(bi) !== Xu.charCodeAt(64); ) { + var Ft = Xu.indexOf(te[bi]), ot = Xu.indexOf(te[bi + 1]), xa = Xu.indexOf(te[bi + 2]), mn = Xu.indexOf(te[bi + 3]), an = (Ft & 63) << 2 | ot >> 4 & 3, To = (ot & 15) << 4 | xa >> 2 & 15, Hn = (xa & 3) << 6 | mn & 63; + To === 0 && xa !== 0 ? ei.push(an) : Hn === 0 && mn !== 0 ? ei.push(an, To) : ei.push(an, To, Hn), bi += 4; + } + return Gf(ei); + } + e.base64decode = wu; + function V_(c, te) { + try { + var xr = te.readFile(c); + if (!xr) + return {}; + var ei = e.parseConfigFileTextToJson(c, xr); + return ei.error ? {} : ei.config; + } catch { + return {}; + } + } + e.readJson = V_; + function yu(c, te) { + return !te.directoryExists || te.directoryExists(c); + } + e.directoryProbablyExists = yu; + var v = `\r +`, sr = ` +`; + function fi(c, te) { + switch (c.newLine) { + case 0: + return v; + case 1: + return sr; + } + return te ? te() : e.sys ? e.sys.newLine : v; + } + e.getNewLineCharacter = fi; + function zi(c, te) { + return te === void 0 && (te = c), e.Debug.assert(te >= c || te === -1), { pos: c, end: te }; + } + e.createRange = zi; + function Sa(c, te) { + return zi(c.pos, te); + } + e.moveRangeEnd = Sa; + function da(c, te) { + return zi(te, c.end); + } + e.moveRangePos = da; + function Ha(c) { + return c.decorators && c.decorators.length > 0 ? da(c, c.decorators.end) : c; + } + e.moveRangePastDecorators = Ha; + function ta(c) { + return c.modifiers && c.modifiers.length > 0 ? da(c, c.modifiers.end) : Ha(c); + } + e.moveRangePastModifiers = ta; + function nn(c) { + return c.pos === c.end; + } + e.isCollapsedRange = nn; + function Wo(c, te) { + return zi(c, c + e.tokenToString(te).length); + } + e.createTokenRange = Wo; + function Lo(c, te) { + return is(c, c, te); + } + e.rangeIsOnSingleLine = Lo; + function oc(c, te, xr) { + return cf(uf(c, xr, false), uf(te, xr, false), xr); + } + e.rangeStartPositionsAreOnSameLine = oc; + function uu(c, te, xr) { + return cf(c.end, te.end, xr); + } + e.rangeEndPositionsAreOnSameLine = uu; + function is(c, te, xr) { + return cf(uf(c, xr, false), te.end, xr); + } + e.rangeStartIsOnSameLineAsRangeEnd = is; + function au(c, te, xr) { + return cf(c.end, uf(te, xr, false), xr); + } + e.rangeEndIsOnSameLineAsRangeStart = au; + function Ou(c, te, xr, ei) { + var bi = uf(te, xr, ei); + return e.getLinesBetweenPositions(xr, c.end, bi); + } + e.getLinesBetweenRangeEndAndRangeStart = Ou; + function sf(c, te, xr) { + return e.getLinesBetweenPositions(xr, c.end, te.end); + } + e.getLinesBetweenRangeEndPositions = sf; + function lu(c, te) { + return !cf(c.pos, c.end, te); + } + e.isNodeArrayMultiLine = lu; + function cf(c, te, xr) { + return e.getLinesBetweenPositions(xr, c, te) === 0; + } + e.positionsAreOnSameLine = cf; + function uf(c, te, xr) { + return Jl(c.pos) ? -1 : e.skipTrivia(te.text, c.pos, false, xr); + } + e.getStartPositionOfRange = uf; + function K_(c, te, xr, ei) { + var bi = e.skipTrivia(xr.text, c, false, ei), Ft = Hf(bi, te, xr); + return e.getLinesBetweenPositions(xr, Ft != null ? Ft : te, bi); + } + e.getLinesBetweenPositionAndPrecedingNonWhitespaceCharacter = K_; + function Jp(c, te, xr, ei) { + var bi = e.skipTrivia(xr.text, c, false, ei); + return e.getLinesBetweenPositions(xr, c, Math.min(te, bi)); + } + e.getLinesBetweenPositionAndNextNonWhitespaceCharacter = Jp; + function Hf(c, te, xr) { + for (te === void 0 && (te = 0); c-- > te; ) + if (!e.isWhiteSpaceLike(xr.text.charCodeAt(c))) + return c; + } + function kc(c) { + var te = e.getParseTreeNode(c); + if (te) + switch (te.parent.kind) { + case 260: + case 261: + return te === te.parent.name; + } + return false; + } + e.isDeclarationNameOfEnumOrNamespace = kc; + function G_(c) { + return e.filter(c.declarations, Le); + } + e.getInitializedVariables = G_; + function Le(c) { + return c.initializer !== void 0; + } + function Nr(c) { + return c.watch && c.hasOwnProperty("watch"); + } + e.isWatchSet = Nr; + function ri(c) { + c.close(); + } + e.closeFileWatcher = ri; + function di(c) { + return c.flags & 33554432 ? c.checkFlags : 0; + } + e.getCheckFlags = di; + function Mi(c, te) { + if (te === void 0 && (te = false), c.valueDeclaration) { + var xr = te && c.declarations && e.find(c.declarations, function(xa) { + return xa.kind === 173; + }) || c.valueDeclaration, ei = e.getCombinedModifierFlags(xr); + return c.parent && c.parent.flags & 32 ? ei : ei & -29; + } + if (di(c) & 6) { + var bi = c.checkFlags, Ft = bi & 1024 ? 8 : bi & 256 ? 4 : 16, ot = bi & 2048 ? 32 : 0; + return Ft | ot; + } + return c.flags & 4194304 ? 36 : 0; + } + e.getDeclarationModifierFlagsFromSymbol = Mi; + function st(c, te) { + return c.flags & 2097152 ? te.getAliasedSymbol(c) : c; + } + e.skipAlias = st; + function ra(c) { + return c.exportSymbol ? c.exportSymbol.flags | c.flags : c.flags; + } + e.getCombinedLocalAndExportSymbolFlags = ra; + function Ta(c) { + return In(c) === 1; + } + e.isWriteOnlyAccess = Ta; + function ha(c) { + return In(c) !== 0; + } + e.isWriteAccess = ha; + var Na; + (function(c) { + c[c.Read = 0] = "Read", c[c.Write = 1] = "Write", c[c.ReadWrite = 2] = "ReadWrite"; + })(Na || (Na = {})); + function In(c) { + var te = c.parent; + if (!te) + return 0; + switch (te.kind) { + case 212: + return In(te); + case 220: + case 219: + var xr = te.operator; + return xr === 45 || xr === 46 ? xa() : 0; + case 221: + var ei = te, bi = ei.left, Ft = ei.operatorToken; + return bi === c && Cf(Ft.kind) ? Ft.kind === 63 ? 1 : xa() : 0; + case 206: + return te.name !== c ? 0 : In(te); + case 296: { + var ot = In(te.parent); + return c === te.name ? qo(ot) : ot; + } + case 297: + return c === te.objectAssignmentInitializer ? 0 : In(te.parent); + case 204: + return In(te); + default: + return 0; + } + function xa() { + return te.parent && No(te.parent).kind === 238 ? 1 : 2; + } + } + function qo(c) { + switch (c) { + case 0: + return 1; + case 1: + return 0; + case 2: + return 2; + default: + return e.Debug.assertNever(c); + } + } + function co(c, te) { + if (!c || !te || Object.keys(c).length !== Object.keys(te).length) + return false; + for (var xr in c) + if (typeof c[xr] == "object") { + if (!co(c[xr], te[xr])) + return false; + } else if (typeof c[xr] != "function" && c[xr] !== te[xr]) + return false; + return true; + } + e.compareDataObjects = co; + function ts(c, te) { + c.forEach(te), c.clear(); + } + e.clearMap = ts; + function vs(c, te, xr) { + var ei = xr.onDeleteValue, bi = xr.onExistingValue; + c.forEach(function(Ft, ot) { + var xa = te.get(ot); + xa === void 0 ? (c.delete(ot), ei(Ft, ot)) : bi && bi(Ft, xa, ot); + }); + } + e.mutateMapSkippingNewValues = vs; + function Ac(c, te, xr) { + vs(c, te, xr); + var ei = xr.createNewValue; + te.forEach(function(bi, Ft) { + c.has(Ft) || c.set(Ft, ei(Ft, bi)); + }); + } + e.mutateMap = Ac; + function Is(c) { + if (c.flags & 32) { + var te = Qu(c); + return !!te && gc(te, 128); + } + return false; + } + e.isAbstractConstructorSymbol = Is; + function Qu(c) { + var te; + return (te = c.declarations) === null || te === void 0 ? void 0 : te.find(e.isClassLike); + } + e.getClassLikeDeclarationOfSymbol = Qu; + function sc(c) { + return c.flags & 3899393 ? c.objectFlags : 0; + } + e.getObjectFlags = sc; + function bc(c, te) { + return te.getSignaturesOfType(c, 0).length !== 0 || te.getSignaturesOfType(c, 1).length !== 0; + } + e.typeHasCallOrConstructSignatures = bc; + function Mc(c, te) { + return !!e.forEachAncestorDirectory(c, function(xr) { + return te(xr) ? true : void 0; + }); + } + e.forSomeAncestorDirectory = Mc; + function Yu(c) { + return !!c && !!c.declarations && !!c.declarations[0] && e.isNamespaceExportDeclaration(c.declarations[0]); + } + e.isUMDExportSymbol = Yu; + function Rl(c) { + var te = c.moduleSpecifier; + return e.isStringLiteral(te) ? te.text : Ee(te); + } + e.showModuleSpecifier = Rl; + function Lc(c) { + var te; + return e.forEachChild(c, function(xr) { + j(xr) && (te = xr); + }, function(xr) { + for (var ei = xr.length - 1; ei >= 0; ei--) + if (j(xr[ei])) { + te = xr[ei]; + break; + } + }), te; + } + e.getLastChild = Lc; + function _(c, te, xr) { + return xr === void 0 && (xr = true), c.has(te) ? false : (c.set(te, xr), true); + } + e.addToSeen = _; + function W(c) { + return e.isClassLike(c) || e.isInterfaceDeclaration(c) || e.isTypeLiteralNode(c); + } + e.isObjectTypeDeclaration = W; + function Te(c) { + return c >= 177 && c <= 200 || c === 130 || c === 155 || c === 147 || c === 158 || c === 148 || c === 133 || c === 150 || c === 151 || c === 114 || c === 153 || c === 143 || c === 228 || c === 312 || c === 313 || c === 314 || c === 315 || c === 316 || c === 317 || c === 318; + } + e.isTypeNodeKind = Te; + function cr(c) { + return c.kind === 206 || c.kind === 207; + } + e.isAccessExpression = cr; + function ni(c) { + return c.kind === 206 ? c.name : (e.Debug.assert(c.kind === 207), c.argumentExpression); + } + e.getNameOfAccessExpression = ni; + function rt(c) { + switch (c.kind) { + case "text": + case "internal": + return true; + default: + return false; + } + } + e.isBundleFileTextLike = rt; + function yt(c) { + return c.kind === 269 || c.kind === 273; + } + e.isNamedImportsOrExports = yt; + function Xa(c) { + for (; cr(c); ) + c = c.expression; + return c; + } + e.getLeftmostAccessExpression = Xa; + function vo(c, te) { + if (cr(c.parent) && Kf(c)) + return xr(c.parent); + function xr(ei) { + if (ei.kind === 206) { + var bi = te(ei.name); + if (bi !== void 0) + return bi; + } else if (ei.kind === 207) + if (e.isIdentifier(ei.argumentExpression) || e.isStringLiteralLike(ei.argumentExpression)) { + var bi = te(ei.argumentExpression); + if (bi !== void 0) + return bi; + } else + return; + if (cr(ei.expression)) + return xr(ei.expression); + if (e.isIdentifier(ei.expression)) + return te(ei.expression); + } + } + e.forEachNameInAccessChainWalkingLeft = vo; + function Vs(c, te) { + for (; ; ) { + switch (c.kind) { + case 220: + c = c.operand; + continue; + case 221: + c = c.left; + continue; + case 222: + c = c.condition; + continue; + case 210: + c = c.tag; + continue; + case 208: + if (te) + return c; + case 229: + case 207: + case 206: + case 230: + case 350: + c = c.expression; + continue; + } + return c; + } + } + e.getLeftmostExpression = Vs; + function H_(c, te) { + this.flags = c, this.escapedName = te, this.declarations = void 0, this.valueDeclaration = void 0, this.id = void 0, this.mergeId = void 0, this.parent = void 0; + } + function y_(c, te) { + this.flags = te, (e.Debug.isDebugging || e.tracing) && (this.checker = c); + } + function Dd(c, te) { + this.flags = te, e.Debug.isDebugging && (this.checker = c); + } + function jp(c, te, xr) { + this.pos = te, this.end = xr, this.kind = c, this.id = 0, this.flags = 0, this.modifierFlagsCache = 0, this.transformFlags = 0, this.parent = void 0, this.original = void 0; + } + function lg(c, te, xr) { + this.pos = te, this.end = xr, this.kind = c, this.id = 0, this.flags = 0, this.transformFlags = 0, this.parent = void 0; + } + function Om(c, te, xr) { + this.pos = te, this.end = xr, this.kind = c, this.id = 0, this.flags = 0, this.transformFlags = 0, this.parent = void 0, this.original = void 0, this.flowNode = void 0; + } + function Fm(c, te, xr) { + this.fileName = c, this.text = te, this.skipTrivia = xr || function(ei) { + return ei; + }; + } + e.objectAllocator = { getNodeConstructor: function() { + return jp; + }, getTokenConstructor: function() { + return lg; + }, getIdentifierConstructor: function() { + return Om; + }, getPrivateIdentifierConstructor: function() { + return jp; + }, getSourceFileConstructor: function() { + return jp; + }, getSymbolConstructor: function() { + return H_; + }, getTypeConstructor: function() { + return y_; + }, getSignatureConstructor: function() { + return Dd; + }, getSourceMapSourceConstructor: function() { + return Fm; + } }; + function Vg(c) { + Object.assign(e.objectAllocator, c); + } + e.setObjectAllocator = Vg; + function Jt(c, te, xr) { + return xr === void 0 && (xr = 0), c.replace(/{(\d+)}/g, function(ei, bi) { + return "" + e.Debug.checkDefined(te[+bi + xr]); + }); + } + e.formatStringFromArgs = Jt; + var ml; + function Xf(c) { + ml = c; + } + e.setLocalizedDiagnosticMessages = Xf; + function bd(c) { + !ml && c && (ml = c()); + } + e.maybeSetLocalizedDiagnosticMessages = bd; + function lf(c) { + return ml && ml[c.key] || c.message; + } + e.getLocaleSpecificMessage = lf; + function Kg(c, te, xr, ei) { + zr(void 0, te, xr); + var bi = lf(ei); + return arguments.length > 4 && (bi = Jt(bi, arguments, 4)), { file: void 0, start: te, length: xr, messageText: bi, category: ei.category, code: ei.code, reportsUnnecessary: ei.reportsUnnecessary, fileName: c }; + } + e.createDetachedDiagnostic = Kg; + function kf(c) { + return c.file === void 0 && c.start !== void 0 && c.length !== void 0 && typeof c.fileName == "string"; + } + function Gg(c, te) { + var xr = te.fileName || "", ei = te.text.length; + e.Debug.assertEqual(c.fileName, xr), e.Debug.assertLessThanOrEqual(c.start, ei), e.Debug.assertLessThanOrEqual(c.start + c.length, ei); + var bi = { file: te, start: c.start, length: c.length, messageText: c.messageText, category: c.category, code: c.code, reportsUnnecessary: c.reportsUnnecessary }; + if (c.relatedInformation) { + bi.relatedInformation = []; + for (var Ft = 0, ot = c.relatedInformation; Ft < ot.length; Ft++) { + var xa = ot[Ft]; + kf(xa) && xa.fileName === xr ? (e.Debug.assertLessThanOrEqual(xa.start, ei), e.Debug.assertLessThanOrEqual(xa.start + xa.length, ei), bi.relatedInformation.push(Gg(xa, te))) : bi.relatedInformation.push(xa); + } + } + return bi; + } + function Af(c, te) { + for (var xr = [], ei = 0, bi = c; ei < bi.length; ei++) { + var Ft = bi[ei]; + xr.push(Gg(Ft, te)); + } + return xr; + } + e.attachFileToDiagnostics = Af; + function Hg(c, te, xr, ei) { + zr(c, te, xr); + var bi = lf(ei); + return arguments.length > 4 && (bi = Jt(bi, arguments, 4)), { file: c, start: te, length: xr, messageText: bi, category: ei.category, code: ei.code, reportsUnnecessary: ei.reportsUnnecessary, reportsDeprecated: ei.reportsDeprecated }; + } + e.createFileDiagnostic = Hg; + function Wd(c, te) { + var xr = lf(te); + return arguments.length > 2 && (xr = Jt(xr, arguments, 2)), xr; + } + e.formatMessage = Wd; + function qd(c) { + var te = lf(c); + return arguments.length > 1 && (te = Jt(te, arguments, 1)), { file: void 0, start: void 0, length: void 0, messageText: te, category: c.category, code: c.code, reportsUnnecessary: c.reportsUnnecessary, reportsDeprecated: c.reportsDeprecated }; + } + e.createCompilerDiagnostic = qd; + function fg(c, te) { + return { file: void 0, start: void 0, length: void 0, code: c.code, category: c.category, messageText: c.next ? c : c.messageText, relatedInformation: te }; + } + e.createCompilerDiagnosticFromMessageChain = fg; + function Mm(c, te) { + var xr = lf(te); + return arguments.length > 2 && (xr = Jt(xr, arguments, 2)), { messageText: xr, category: te.category, code: te.code, next: c === void 0 || Array.isArray(c) ? c : [c] }; + } + e.chainDiagnosticMessages = Mm; + function Xg(c, te) { + for (var xr = c; xr.next; ) + xr = xr.next[0]; + xr.next = [te]; + } + e.concatenateDiagnosticMessageChains = Xg; + function Bl(c) { + return c.file ? c.file.path : void 0; + } + function Qg(c, te) { + return _g(c, te) || Qc(c, te) || 0; + } + e.compareDiagnostics = Qg; + function _g(c, te) { + return e.compareStringsCaseSensitive(Bl(c), Bl(te)) || e.compareValues(c.start, te.start) || e.compareValues(c.length, te.length) || e.compareValues(c.code, te.code) || Lm(c.messageText, te.messageText) || 0; + } + e.compareDiagnosticsSkipRelatedInformation = _g; + function Qc(c, te) { + return !c.relatedInformation && !te.relatedInformation ? 0 : c.relatedInformation && te.relatedInformation ? e.compareValues(c.relatedInformation.length, te.relatedInformation.length) || e.forEach(c.relatedInformation, function(xr, ei) { + var bi = te.relatedInformation[ei]; + return Qg(xr, bi); + }) || 0 : c.relatedInformation ? -1 : 1; + } + function Lm(c, te) { + if (typeof c == "string" && typeof te == "string") + return e.compareStringsCaseSensitive(c, te); + if (typeof c == "string") + return -1; + if (typeof te == "string") + return 1; + var xr = e.compareStringsCaseSensitive(c.messageText, te.messageText); + if (xr) + return xr; + if (!c.next && !te.next) + return 0; + if (!c.next) + return -1; + if (!te.next) + return 1; + for (var ei = Math.min(c.next.length, te.next.length), bi = 0; bi < ei; bi++) + if (xr = Lm(c.next[bi], te.next[bi]), xr) + return xr; + return c.next.length < te.next.length ? -1 : c.next.length > te.next.length ? 1 : 0; + } + function Up(c) { + return c === 4 || c === 2 || c === 1 || c === 6 ? 1 : 0; + } + e.getLanguageVariant = Up; + function Rm(c) { + if (!!(c.transformFlags & 2)) + return e.isJsxOpeningLikeElement(c) || e.isJsxFragment(c) ? c : e.forEachChild(c, Rm); + } + function ff(c) { + return c.isDeclarationFile ? void 0 : Rm(c); + } + function It(c) { + return c.impliedNodeFormat === e.ModuleKind.ESNext && !c.isDeclarationFile ? true : void 0; + } + function Ma(c) { + switch (ro(c)) { + case e.ModuleDetectionKind.Force: + return function(Ft) { + Ft.externalModuleIndicator = !Ft.isDeclarationFile || e.isFileProbablyExternalModule(Ft); + }; + case e.ModuleDetectionKind.Legacy: + return function(Ft) { + Ft.externalModuleIndicator = e.isFileProbablyExternalModule(Ft); + }; + case e.ModuleDetectionKind.Auto: + var te = [e.isFileProbablyExternalModule]; + (c.jsx === 4 || c.jsx === 5) && te.push(ff); + var xr = Ja(c); + (xr === e.ModuleKind.Node16 || xr === e.ModuleKind.NodeNext) && te.push(It); + var ei = e.or.apply(void 0, te), bi = function(Ft) { + return void (Ft.externalModuleIndicator = ei(Ft)); + }; + return bi; + } + } + e.getSetExternalModuleIndicator = Ma; + function aa(c) { + return c.target || c.module === e.ModuleKind.Node16 && 9 || c.module === e.ModuleKind.NodeNext && 99 || 0; + } + e.getEmitScriptTarget = aa; + function Ja(c) { + return typeof c.module == "number" ? c.module : aa(c) >= 2 ? e.ModuleKind.ES2015 : e.ModuleKind.CommonJS; + } + e.getEmitModuleKind = Ja; + function _n(c) { + var te = c.moduleResolution; + if (te === void 0) + switch (Ja(c)) { + case e.ModuleKind.CommonJS: + te = e.ModuleResolutionKind.NodeJs; + break; + case e.ModuleKind.Node16: + te = e.ModuleResolutionKind.Node16; + break; + case e.ModuleKind.NodeNext: + te = e.ModuleResolutionKind.NodeNext; + break; + default: + te = e.ModuleResolutionKind.Classic; + break; + } + return te; + } + e.getEmitModuleResolutionKind = _n; + function ro(c) { + return c.moduleDetection || e.ModuleDetectionKind.Auto; + } + e.getEmitModuleDetectionKind = ro; + function as(c) { + switch (Ja(c)) { + case e.ModuleKind.CommonJS: + case e.ModuleKind.AMD: + case e.ModuleKind.ES2015: + case e.ModuleKind.ES2020: + case e.ModuleKind.ES2022: + case e.ModuleKind.ESNext: + case e.ModuleKind.Node16: + case e.ModuleKind.NodeNext: + return true; + default: + return false; + } + } + e.hasJsonModuleEmitEnabled = as; + function cc(c) { + return c.allowUnreachableCode === false; + } + e.unreachableCodeIsError = cc; + function Sc(c) { + return c.allowUnusedLabels === false; + } + e.unusedLabelIsError = Sc; + function hu(c) { + return !!(go(c) && c.declarationMap); + } + e.getAreDeclarationMapsEnabled = hu; + function Js(c) { + if (c.esModuleInterop !== void 0) + return c.esModuleInterop; + switch (Ja(c)) { + case e.ModuleKind.Node16: + case e.ModuleKind.NodeNext: + return true; + } + } + e.getESModuleInterop = Js; + function Qf(c) { + var te = Ja(c); + return c.allowSyntheticDefaultImports !== void 0 ? c.allowSyntheticDefaultImports : Js(c) || te === e.ModuleKind.System; + } + e.getAllowSyntheticDefaultImports = Qf; + function go(c) { + return !!(c.declaration || c.composite); + } + e.getEmitDeclarations = go; + function Vd(c) { + return !!(c.preserveConstEnums || c.isolatedModules); + } + e.shouldPreserveConstEnums = Vd; + function X_(c) { + return !!(c.incremental || c.composite); + } + e.isIncrementalCompilation = X_; + function Sd(c, te) { + return c[te] === void 0 ? !!c.strict : !!c[te]; + } + e.getStrictOptionValue = Sd; + function Yg(c) { + return c.allowJs === void 0 ? !!c.checkJs : c.allowJs; + } + e.getAllowJSCompilerOption = Yg; + function N1(c) { + return c.useDefineForClassFields === void 0 ? aa(c) >= 9 : c.useDefineForClassFields; + } + e.getUseDefineForClassFields = N1; + function P1(c, te) { + return m(te, c, e.semanticDiagnosticsOptionDeclarations); + } + e.compilerOptionsAffectSemanticDiagnostics = P1; + function Yy(c, te) { + return m(te, c, e.affectsEmitOptionDeclarations); + } + e.compilerOptionsAffectEmit = Yy; + function Bm(c, te) { + return te.strictFlag ? Sd(c, te.name) : c[te.name]; + } + e.getCompilerOptionValue = Bm; + function $y(c) { + var te = c.jsx; + return te === 2 || te === 4 || te === 5; + } + e.getJSXTransformEnabled = $y; + function Lv(c, te) { + var xr = te == null ? void 0 : te.pragmas.get("jsximportsource"), ei = e.isArray(xr) ? xr[xr.length - 1] : xr; + return c.jsx === 4 || c.jsx === 5 || c.jsxImportSource || ei ? (ei == null ? void 0 : ei.arguments.factory) || c.jsxImportSource || "react" : void 0; + } + e.getJSXImplicitImportBase = Lv; + function _f(c, te) { + return c ? "".concat(c, "/").concat(te.jsx === 5 ? "jsx-dev-runtime" : "jsx-runtime") : void 0; + } + e.getJSXRuntimeImport = _f; + function Rv(c) { + for (var te = false, xr = 0; xr < c.length; xr++) + if (c.charCodeAt(xr) === 42) + if (!te) + te = true; + else + return false; + return true; + } + e.hasZeroOrOneAsteriskCharacter = Rv; + function pg(c, te) { + var xr, ei, bi, Ft = false; + return { getSymlinkedFiles: function() { + return bi; + }, getSymlinkedDirectories: function() { + return xr; + }, getSymlinkedDirectoriesByRealpath: function() { + return ei; + }, setSymlinkedFile: function(xa, mn) { + return (bi || (bi = new e.Map())).set(xa, mn); + }, setSymlinkedDirectory: function(xa, mn) { + var an = e.toPath(xa, c, te); + D_(an) || (an = e.ensureTrailingDirectorySeparator(an), mn !== false && !(xr != null && xr.has(an)) && (ei || (ei = e.createMultiMap())).add(e.ensureTrailingDirectorySeparator(mn.realPath), xa), (xr || (xr = new e.Map())).set(an, mn)); + }, setSymlinksFromResolutions: function(xa, mn) { + var an = this, To; + e.Debug.assert(!Ft), Ft = true; + for (var Hn = 0, ss = xa; Hn < ss.length; Hn++) { + var cs = ss[Hn]; + (To = cs.resolvedModules) === null || To === void 0 || To.forEach(function(ws) { + return ot(an, ws); + }); + } + mn == null || mn.forEach(function(ws) { + return ot(an, ws); + }); + }, hasProcessedResolutions: function() { + return Ft; + } }; + function ot(xa, mn) { + if (!(!mn || !mn.originalPath || !mn.resolvedFileName)) { + var an = mn.resolvedFileName, To = mn.originalPath; + xa.setSymlinkedFile(e.toPath(To, c, te), an); + var Hn = $g(an, To, c, te) || e.emptyArray, ss = Hn[0], cs = Hn[1]; + ss && cs && xa.setSymlinkedDirectory(cs, { real: ss, realPath: e.toPath(ss, c, te) }); + } + } + } + e.createSymlinkCache = pg; + function $g(c, te, xr, ei) { + for (var bi = e.getPathComponents(e.getNormalizedAbsolutePath(c, xr)), Ft = e.getPathComponents(e.getNormalizedAbsolutePath(te, xr)), ot = false; bi.length >= 2 && Ft.length >= 2 && !Td(bi[bi.length - 2], ei) && !Td(Ft[Ft.length - 2], ei) && ei(bi[bi.length - 1]) === ei(Ft[Ft.length - 1]); ) + bi.pop(), Ft.pop(), ot = true; + return ot ? [e.getPathFromPathComponents(bi), e.getPathFromPathComponents(Ft)] : void 0; + } + function Td(c, te) { + return c !== void 0 && (te(c) === "node_modules" || e.startsWith(c, "@")); + } + function I1(c) { + return e.isAnyDirectorySeparator(c.charCodeAt(0)) ? c.slice(1) : void 0; + } + function pf(c, te, xr) { + var ei = e.tryRemovePrefix(c, te, xr); + return ei === void 0 ? void 0 : I1(ei); + } + e.tryRemoveDirectoryPrefix = pf; + var Bv = /[^\w\s\/]/g; + function Zy(c) { + return c.replace(Bv, Jv); + } + e.regExpEscape = Zy; + function Jv(c) { + return "\\" + c; + } + var Nf = [42, 63]; + e.commonPackageFolders = ["node_modules", "bower_components", "jspm_packages"]; + var dg = "(?!(".concat(e.commonPackageFolders.join("|"), ")(/|$))"), Rc = { singleAsteriskRegexFragment: "([^./]|(\\.(?!min\\.js$))?)*", doubleAsteriskRegexFragment: "(/".concat(dg, "[^/.][^/]*)*?"), replaceWildcardCharacter: function(c) { + return Jm(c, Rc.singleAsteriskRegexFragment); + } }, jv = { singleAsteriskRegexFragment: "[^/]*", doubleAsteriskRegexFragment: "(/".concat(dg, "[^/.][^/]*)*?"), replaceWildcardCharacter: function(c) { + return Jm(c, jv.singleAsteriskRegexFragment); + } }, eh = { singleAsteriskRegexFragment: "[^/]*", doubleAsteriskRegexFragment: "(/.+?)?", replaceWildcardCharacter: function(c) { + return Jm(c, eh.singleAsteriskRegexFragment); + } }, rh = { files: Rc, directories: jv, exclude: eh }; + function Fu(c, te, xr) { + var ei = xd(c, te, xr); + if (!(!ei || !ei.length)) { + var bi = ei.map(function(ot) { + return "(".concat(ot, ")"); + }).join("|"), Ft = xr === "exclude" ? "($|/)" : "$"; + return "^(".concat(bi, ")").concat(Ft); + } + } + e.getRegularExpressionForWildcard = Fu; + function xd(c, te, xr) { + if (!(c === void 0 || c.length === 0)) + return e.flatMap(c, function(ei) { + return ei && ih(ei, te, xr, rh[xr]); + }); + } + e.getRegularExpressionsForWildcards = xd; + function Uv(c) { + return !/[.*?]/.test(c); + } + e.isImplicitGlob = Uv; + function w1(c, te, xr) { + var ei = c && ih(c, te, xr, rh[xr]); + return ei && "^(".concat(ei, ")").concat(xr === "exclude" ? "($|/)" : "$"); + } + e.getPatternFromSpec = w1; + function ih(c, te, xr, ei) { + var bi = ei.singleAsteriskRegexFragment, Ft = ei.doubleAsteriskRegexFragment, ot = ei.replaceWildcardCharacter, xa = "", mn = false, an = e.getNormalizedPathComponents(c, te), To = e.last(an); + if (!(xr !== "exclude" && To === "**")) { + an[0] = e.removeTrailingDirectorySeparator(an[0]), Uv(To) && an.push("**", "*"); + for (var Hn = 0, ss = 0, cs = an; ss < cs.length; ss++) { + var ws = cs[ss]; + if (ws === "**") + xa += Ft; + else if (xr === "directories" && (xa += "(", Hn++), mn && (xa += e.directorySeparator), xr !== "exclude") { + var nu = ""; + ws.charCodeAt(0) === 42 ? (nu += "([^./]" + bi + ")?", ws = ws.substr(1)) : ws.charCodeAt(0) === 63 && (nu += "[^./]", ws = ws.substr(1)), nu += ws.replace(Bv, ot), nu !== ws && (xa += dg), xa += nu; + } else + xa += ws.replace(Bv, ot); + mn = true; + } + for (; Hn > 0; ) + xa += ")?", Hn--; + return xa; + } + } + function Jm(c, te) { + return c === "*" ? te : c === "?" ? "[^/]" : "\\" + c; + } + function th(c, te, xr, ei, bi) { + c = e.normalizePath(c), bi = e.normalizePath(bi); + var Ft = e.combinePaths(bi, c); + return { includeFilePatterns: e.map(xd(xr, Ft, "files"), function(ot) { + return "^".concat(ot, "$"); + }), includeFilePattern: Fu(xr, Ft, "files"), includeDirectoryPattern: Fu(xr, Ft, "directories"), excludePattern: Fu(te, Ft, "exclude"), basePaths: zv(c, xr, ei) }; + } + e.getFileMatcherPatterns = th; + function gg(c, te) { + return new RegExp(c, te ? "" : "i"); + } + e.getRegexFromPattern = gg; + function O1(c, te, xr, ei, bi, Ft, ot, xa, mn) { + c = e.normalizePath(c), Ft = e.normalizePath(Ft); + for (var an = th(c, xr, ei, bi, Ft), To = an.includeFilePatterns && an.includeFilePatterns.map(function(b_) { + return gg(b_, bi); + }), Hn = an.includeDirectoryPattern && gg(an.includeDirectoryPattern, bi), ss = an.excludePattern && gg(an.excludePattern, bi), cs = To ? To.map(function() { + return []; + }) : [[]], ws = new e.Map(), nu = e.createGetCanonicalFileName(bi), Xo = 0, jl = an.basePaths; Xo < jl.length; Xo++) { + var Y_ = jl[Xo]; + Cd(Y_, e.combinePaths(Ft, Y_), ot); + } + return e.flatten(cs); + function Cd(b_, kd, qm) { + var Vm = nu(mn(kd)); + if (!ws.has(Vm)) { + ws.set(Vm, true); + for (var vg = xa(b_), Ul = vg.files, zp = vg.directories, yl = function(T_) { + var Yc = e.combinePaths(b_, T_), gh = e.combinePaths(kd, T_); + if (te && !e.fileExtensionIsOneOf(Yc, te) || ss && ss.test(gh)) + return "continue"; + if (!To) + cs[0].push(Yc); + else { + var iy = e.findIndex(To, function(yo) { + return yo.test(gh); + }); + iy !== -1 && cs[iy].push(Yc); + } + }, ey = 0, rm = e.sort(Ul, e.compareStringsCaseSensitive); ey < rm.length; ey++) { + var Km = rm[ey]; + yl(Km); + } + if (!(qm !== void 0 && (qm--, qm === 0))) + for (var ry = 0, Gm = e.sort(zp, e.compareStringsCaseSensitive); ry < Gm.length; ry++) { + var Km = Gm[ry], S_ = e.combinePaths(b_, Km), Hm = e.combinePaths(kd, Km); + (!Hn || Hn.test(Hm)) && (!ss || !ss.test(Hm)) && Cd(S_, Hm, qm); + } + } + } + } + e.matchFiles = O1; + function zv(c, te, xr) { + var ei = [c]; + if (te) { + for (var bi = [], Ft = 0, ot = te; Ft < ot.length; Ft++) { + var xa = ot[Ft], mn = e.isRootedDiskPath(xa) ? xa : e.normalizePath(e.combinePaths(c, xa)); + bi.push(ah(mn)); + } + bi.sort(e.getStringComparer(!xr)); + for (var an = function(cs) { + e.every(ei, function(ws) { + return !e.containsPath(ws, cs, c, !xr); + }) && ei.push(cs); + }, To = 0, Hn = bi; To < Hn.length; To++) { + var ss = Hn[To]; + an(ss); + } + } + return ei; + } + function ah(c) { + var te = e.indexOfAnyCharCode(c, Nf); + return te < 0 ? e.hasExtension(c) ? e.removeTrailingDirectorySeparator(e.getDirectoryPath(c)) : c : c.substring(0, c.lastIndexOf(e.directorySeparator, te)); + } + function F1(c, te) { + return te || nh(c) || 3; + } + e.ensureScriptKind = F1; + function nh(c) { + var te = c.substr(c.lastIndexOf(".")); + switch (te.toLowerCase()) { + case ".js": + case ".cjs": + case ".mjs": + return 1; + case ".jsx": + return 2; + case ".ts": + case ".cts": + case ".mts": + return 3; + case ".tsx": + return 4; + case ".json": + return 6; + default: + return 0; + } + } + e.getScriptKindFromFileName = nh, e.supportedTSExtensions = [[".ts", ".tsx", ".d.ts"], [".cts", ".d.cts"], [".mts", ".d.mts"]], e.supportedTSExtensionsFlat = e.flatten(e.supportedTSExtensions); + var M1 = Ve(Ve([], e.supportedTSExtensions, true), [[".json"]], false), oh = [".d.ts", ".d.cts", ".d.mts", ".cts", ".mts", ".ts", ".tsx", ".cts", ".mts"]; + e.supportedJSExtensions = [[".js", ".jsx"], [".mjs"], [".cjs"]], e.supportedJSExtensionsFlat = e.flatten(e.supportedJSExtensions); + var jm = [[".ts", ".tsx", ".d.ts", ".js", ".jsx"], [".cts", ".d.cts", ".cjs"], [".mts", ".d.mts", ".mjs"]], Zg = Ve(Ve([], jm, true), [[".json"]], false); + e.supportedDeclarationExtensions = [".d.ts", ".d.cts", ".d.mts"]; + function Wv(c, te) { + var xr = c && Yg(c); + if (!te || te.length === 0) + return xr ? jm : e.supportedTSExtensions; + var ei = xr ? jm : e.supportedTSExtensions, bi = e.flatten(ei), Ft = Ve(Ve([], ei, true), e.mapDefined(te, function(ot) { + return ot.scriptKind === 7 || xr && L1(ot.scriptKind) && bi.indexOf(ot.extension) === -1 ? [ot.extension] : void 0; + }), true); + return Ft; + } + e.getSupportedExtensions = Wv; + function sh(c, te) { + return !c || !c.resolveJsonModule ? te : te === jm ? Zg : te === e.supportedTSExtensions ? M1 : Ve(Ve([], te, true), [[".json"]], false); + } + e.getSupportedExtensionsWithJsonIfResolveJsonModule = sh; + function L1(c) { + return c === 1 || c === 2; + } + function ch(c) { + return e.some(e.supportedJSExtensionsFlat, function(te) { + return e.fileExtensionIs(c, te); + }); + } + e.hasJSFileExtension = ch; + function uh(c) { + return e.some(e.supportedTSExtensionsFlat, function(te) { + return e.fileExtensionIs(c, te); + }); + } + e.hasTSFileExtension = uh; + function R1(c, te, xr) { + if (!c) + return false; + for (var ei = Wv(te, xr), bi = 0, Ft = e.flatten(sh(te, ei)); bi < Ft.length; bi++) { + var ot = Ft[bi]; + if (e.fileExtensionIs(c, ot)) + return true; + } + return false; + } + e.isSupportedSourceFileName = R1; + function lh(c) { + var te = c.match(/\//g); + return te ? te.length : 0; + } + function B1(c, te) { + return e.compareValues(lh(c), lh(te)); + } + e.compareNumberOfDirectorySeparators = B1; + var Kd = [".d.ts", ".d.mts", ".d.cts", ".mjs", ".mts", ".cjs", ".cts", ".ts", ".js", ".tsx", ".jsx", ".json"]; + function Gd(c) { + for (var te = 0, xr = Kd; te < xr.length; te++) { + var ei = xr[te], bi = Um(c, ei); + if (bi !== void 0) + return bi; + } + return c; + } + e.removeFileExtension = Gd; + function Um(c, te) { + return e.fileExtensionIs(c, te) ? fh(c, te) : void 0; + } + e.tryRemoveExtension = Um; + function fh(c, te) { + return c.substring(0, c.length - te.length); + } + e.removeExtension = fh; + function J1(c, te) { + return e.changeAnyExtension(c, te, Kd, false); + } + e.changeExtension = J1; + function Du(c) { + var te = c.indexOf("*"); + return te === -1 ? c : c.indexOf("*", te + 1) !== -1 ? void 0 : { prefix: c.substr(0, te), suffix: c.substr(te + 1) }; + } + e.tryParsePattern = Du; + function Mu(c) { + return e.mapDefined(e.getOwnKeys(c), function(te) { + return Du(te); + }); + } + e.tryParsePatterns = Mu; + function Jl(c) { + return !(c >= 0); + } + e.positionIsSynthesized = Jl; + function vl(c) { + return c === ".ts" || c === ".tsx" || c === ".d.ts" || c === ".cts" || c === ".mts" || c === ".d.mts" || c === ".d.cts"; + } + e.extensionIsTS = vl; + function _h(c) { + return vl(c) || c === ".json"; + } + e.resolutionExtensionIsTSOrJson = _h; + function mg(c) { + var te = Lu(c); + return te !== void 0 ? te : e.Debug.fail("File ".concat(c, " has unknown extension.")); + } + e.extensionFromPath = mg; + function Ed(c) { + return Lu(c) !== void 0; + } + e.isAnySupportedFileExtension = Ed; + function Lu(c) { + return e.find(Kd, function(te) { + return e.fileExtensionIs(c, te); + }); + } + e.tryGetExtensionFromPath = Lu; + function ph(c, te) { + return c.checkJsDirective ? c.checkJsDirective.enabled : te.checkJs; + } + e.isCheckJsEnabledForFile = ph, e.emptyFileSystemEntries = { files: e.emptyArray, directories: e.emptyArray }; + function qv(c, te) { + for (var xr = [], ei = 0, bi = c; ei < bi.length; ei++) { + var Ft = bi[ei]; + if (Ft === te) + return te; + e.isString(Ft) || xr.push(Ft); + } + return e.findBestPatternMatch(xr, function(ot) { + return ot; + }, te); + } + e.matchPatternOrExact = qv; + function j1(c, te) { + var xr = c.indexOf(te); + return e.Debug.assert(xr !== -1), c.slice(xr); + } + e.sliceAfter = j1; + function Bc(c) { + for (var te, xr = [], ei = 1; ei < arguments.length; ei++) + xr[ei - 1] = arguments[ei]; + return xr.length && (c.relatedInformation || (c.relatedInformation = []), e.Debug.assert(c.relatedInformation !== e.emptyArray, "Diagnostic had empty array singleton for related info, but is still being constructed!"), (te = c.relatedInformation).push.apply(te, xr)), c; + } + e.addRelatedInfo = Bc; + function Ru(c, te) { + e.Debug.assert(c.length !== 0); + for (var xr = te(c[0]), ei = xr, bi = 1; bi < c.length; bi++) { + var Ft = te(c[bi]); + Ft < xr ? xr = Ft : Ft > ei && (ei = Ft); + } + return { min: xr, max: ei }; + } + e.minAndMax = Ru; + function Pf(c) { + return { pos: Fe(c), end: c.end }; + } + e.rangeOfNode = Pf; + function h_(c, te) { + var xr = te.pos - 1, ei = e.skipTrivia(c.text, te.end) + 1; + return { pos: xr, end: ei }; + } + e.rangeOfTypeParameters = h_; + function em(c, te, xr) { + return te.skipLibCheck && c.isDeclarationFile || te.skipDefaultLibCheck && c.hasNoDefaultLib || xr.isSourceOfProjectReferenceRedirect(c.fileName); + } + e.skipTypeChecking = em; + function uo(c, te) { + return c === te || typeof c == "object" && c !== null && typeof te == "object" && te !== null && e.equalOwnProperties(c, te, uo); + } + e.isJsonEqual = uo; + function U1(c) { + var te; + switch (c.charCodeAt(1)) { + case 98: + case 66: + te = 1; + break; + case 111: + case 79: + te = 3; + break; + case 120: + case 88: + te = 4; + break; + default: + for (var xr = c.length - 1, ei = 0; c.charCodeAt(ei) === 48; ) + ei++; + return c.slice(ei, xr) || "0"; + } + for (var bi = 2, Ft = c.length - 1, ot = (Ft - bi) * te, xa = new Uint16Array((ot >>> 4) + (ot & 15 ? 1 : 0)), mn = Ft - 1, an = 0; mn >= bi; mn--, an += te) { + var To = an >>> 4, Hn = c.charCodeAt(mn), ss = Hn <= 57 ? Hn - 48 : 10 + Hn - (Hn <= 70 ? 65 : 97), cs = ss << (an & 15); + xa[To] |= cs; + var ws = cs >>> 16; + ws && (xa[To + 1] |= ws); + } + for (var nu = "", Xo = xa.length - 1, jl = true; jl; ) { + var Y_ = 0; + jl = false; + for (var To = Xo; To >= 0; To--) { + var Cd = Y_ << 16 | xa[To], b_ = Cd / 10 | 0; + xa[To] = b_, Y_ = Cd - b_ * 10, b_ && !jl && (Xo = To, jl = true); + } + nu = Y_ + nu; + } + return nu; + } + e.parsePseudoBigInt = U1; + function z1(c) { + var te = c.negative, xr = c.base10Value; + return (te && xr !== "0" ? "-" : "") + xr; + } + e.pseudoBigIntToString = z1; + function W1(c) { + return !!(c.flags & 16777216) || S(c) || q1(c) || Tc(c) || !(Qe(c) || Q_(c)); + } + e.isValidTypeOnlyAliasUseSite = W1; + function Q_(c) { + return e.isIdentifier(c) && e.isShorthandPropertyAssignment(c.parent) && c.parent.name === c; + } + function Tc(c) { + for (; c.kind === 79 || c.kind === 206; ) + c = c.parent; + if (c.kind !== 162) + return false; + if (gc(c.parent, 128)) + return true; + var te = c.parent.parent.kind; + return te === 258 || te === 182; + } + function q1(c) { + if (c.kind !== 79) + return false; + var te = e.findAncestor(c.parent, function(xr) { + switch (xr.kind) { + case 291: + return true; + case 206: + case 228: + return false; + default: + return "quit"; + } + }); + return (te == null ? void 0 : te.token) === 117 || (te == null ? void 0 : te.parent.kind) === 258; + } + function Vv(c) { + return e.isTypeReferenceNode(c) && e.isIdentifier(c.typeName); + } + e.isIdentifierTypeReference = Vv; + function V1(c, te) { + if (te === void 0 && (te = e.equateValues), c.length < 2) + return true; + for (var xr = c[0], ei = 1, bi = c.length; ei < bi; ei++) { + var Ft = c[ei]; + if (!te(xr, Ft)) + return false; + } + return true; + } + e.arrayIsHomogeneous = V1; + function zm(c, te) { + return c.pos = te, c; + } + e.setTextRangePos = zm; + function Kv(c, te) { + return c.end = te, c; + } + e.setTextRangeEnd = Kv; + function Gv(c, te, xr) { + return Kv(zm(c, te), xr); + } + e.setTextRangePosEnd = Gv; + function K1(c, te, xr) { + return Gv(c, te, te + xr); + } + e.setTextRangePosWidth = K1; + function G1(c, te) { + return c && (c.flags = te), c; + } + e.setNodeFlags = G1; + function uc(c, te) { + return c && te && (c.parent = te), c; + } + e.setParent = uc; + function Hd(c, te) { + if (c) + for (var xr = 0, ei = c; xr < ei.length; xr++) { + var bi = ei[xr]; + uc(bi, te); + } + return c; + } + e.setEachParent = Hd; + function Wm(c, te) { + if (!c) + return c; + return e.forEachChildRecursively(c, e.isJSDocNode(c) ? xr : bi), c; + function xr(Ft, ot) { + if (te && Ft.parent === ot) + return "skip"; + uc(Ft, ot); + } + function ei(Ft) { + if (e.hasJSDocNodes(Ft)) + for (var ot = 0, xa = Ft.jsDoc; ot < xa.length; ot++) { + var mn = xa[ot]; + xr(mn, Ft), e.forEachChildRecursively(mn, xr); + } + } + function bi(Ft, ot) { + return xr(Ft, ot) || ei(Ft); + } + } + e.setParentRecursive = Wm; + function Hv(c) { + return !e.isOmittedExpression(c); + } + function H1(c) { + return e.isArrayLiteralExpression(c) && e.every(c.elements, Hv); + } + e.isPackedArrayLiteral = H1; + function Xv(c) { + for (e.Debug.assertIsDefined(c.parent); ; ) { + var te = c.parent; + if (e.isParenthesizedExpression(te)) { + c = te; + continue; + } + if (e.isExpressionStatement(te) || e.isVoidExpression(te) || e.isForStatement(te) && (te.initializer === c || te.incrementor === c)) + return true; + if (e.isCommaListExpression(te)) { + if (c !== e.last(te.elements)) + return true; + c = te; + continue; + } + if (e.isBinaryExpression(te) && te.operatorToken.kind === 27) { + if (c === te.left) + return true; + c = te; + continue; + } + return false; + } + } + e.expressionResultIsUnused = Xv; + function D_(c) { + return e.some(e.ignoredPaths, function(te) { + return e.stringContains(c, te); + }); + } + e.containsIgnoredPath = D_; + function X1(c) { + if (!!c.parent) { + switch (c.kind) { + case 163: + var te = c.parent; + return te.kind === 190 ? void 0 : te.typeParameters; + case 164: + return c.parent.parameters; + case 199: + return c.parent.templateSpans; + case 233: + return c.parent.templateSpans; + case 165: + return c.parent.decorators; + case 291: + return c.parent.heritageClauses; + } + var xr = c.parent; + if (e.isJSDocTag(c)) + return e.isJSDocTypeLiteral(c.parent) ? void 0 : c.parent.tags; + switch (xr.kind) { + case 182: + case 258: + return e.isTypeElement(c) ? xr.members : void 0; + case 187: + case 188: + return xr.types; + case 184: + case 204: + case 351: + case 269: + case 273: + return xr.elements; + case 205: + case 286: + return xr.properties; + case 208: + case 209: + return e.isTypeNode(c) ? xr.typeArguments : xr.expression === c ? void 0 : xr.arguments; + case 278: + case 282: + return e.isJsxChild(c) ? xr.children : void 0; + case 280: + case 279: + return e.isTypeNode(c) ? xr.typeArguments : void 0; + case 235: + case 289: + case 290: + case 262: + return xr.statements; + case 263: + return xr.clauses; + case 257: + case 226: + return e.isClassElement(c) ? xr.members : void 0; + case 260: + return e.isEnumMember(c) ? xr.members : void 0; + case 305: + return xr.statements; + } + } + } + e.getContainingNodeArray = X1; + function Q1(c) { + if (!c.typeParameters) { + if (e.some(c.parameters, function(xr) { + return !iu(xr); + })) + return true; + if (c.kind !== 214) { + var te = e.firstOrUndefined(c.parameters); + if (!(te && Sf(te))) + return true; + } + } + return false; + } + e.hasContextSensitiveParameters = Q1; + function Y1(c) { + return c === "Infinity" || c === "-Infinity" || c === "NaN"; + } + e.isInfinityOrNaNString = Y1; + function dh(c) { + return c.kind === 254 && c.parent.kind === 292; + } + e.isCatchClauseVariableDeclaration = dh; + function Qv(c) { + var te = c.valueDeclaration && jf(c.valueDeclaration); + return !!te && (e.isParameter(te) || dh(te)); + } + e.isParameterOrCatchClauseVariable = Qv; + function $s(c) { + return c.kind === 213 || c.kind === 214; + } + e.isFunctionExpressionOrArrowFunction = $s; + function Xd(c) { + return c.replace(/\$/gm, function() { + return "\\$"; + }); + } + e.escapeSnippetText = Xd; + function Yv(c) { + return (+c).toString() === c; + } + e.isNumericLiteralName = Yv; + function $v(c, te, xr, ei) { + return e.isIdentifierText(c, te) ? e.factory.createIdentifier(c) : !ei && Yv(c) && +c >= 0 ? e.factory.createNumericLiteral(+c) : e.factory.createStringLiteral(c, !!xr); + } + e.createPropertyNameNodeForIdentifierOrLiteral = $v; + function Zv(c) { + return !!(c.flags & 262144 && c.isThisType); + } + e.isThisTypeParameter = Zv; + function bu(c) { + var te = 0, xr = 0, ei = 0, bi = 0, Ft; + (function(an) { + an[an.BeforeNodeModules = 0] = "BeforeNodeModules", an[an.NodeModules = 1] = "NodeModules", an[an.Scope = 2] = "Scope", an[an.PackageContent = 3] = "PackageContent"; + })(Ft || (Ft = {})); + for (var ot = 0, xa = 0, mn = 0; xa >= 0; ) + switch (ot = xa, xa = c.indexOf("/", ot + 1), mn) { + case 0: + c.indexOf(e.nodeModulesPathPart, ot) === ot && (te = ot, xr = xa, mn = 1); + break; + case 1: + case 2: + mn === 1 && c.charAt(ot + 1) === "@" ? mn = 2 : (ei = xa, mn = 3); + break; + case 3: + c.indexOf(e.nodeModulesPathPart, ot) === ot ? mn = 1 : mn = 3; + break; + } + return bi = ot, mn > 1 ? { topLevelNodeModulesIndex: te, topLevelPackageNameIndex: xr, packageRootIndex: ei, fileNameIndex: bi } : void 0; + } + e.getNodeModulePathParts = bu; + function $1(c) { + var te; + return c.kind === 340 ? (te = c.typeExpression) === null || te === void 0 ? void 0 : te.type : c.type; + } + e.getParameterTypeNode = $1; + })(ke || (ke = {})); + var ke; + (function(e) { + function a() { + var C, w, B, E, Q; + return { createBaseSourceFileNode: le, createBaseIdentifierNode: N, createBasePrivateIdentifierNode: p, createBaseTokenNode: m, createBaseNode: G }; + function le(oe) { + return new (Q || (Q = e.objectAllocator.getSourceFileConstructor()))(oe, -1, -1); + } + function N(oe) { + return new (B || (B = e.objectAllocator.getIdentifierConstructor()))(oe, -1, -1); + } + function p(oe) { + return new (E || (E = e.objectAllocator.getPrivateIdentifierConstructor()))(oe, -1, -1); + } + function m(oe) { + return new (w || (w = e.objectAllocator.getTokenConstructor()))(oe, -1, -1); + } + function G(oe) { + return new (C || (C = e.objectAllocator.getNodeConstructor()))(oe, -1, -1); + } + } + e.createBaseNodeFactory = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w, B; + return { getParenthesizeLeftSideOfBinaryForOperator: E, getParenthesizeRightSideOfBinaryForOperator: Q, parenthesizeLeftSideOfBinary: G, parenthesizeRightSideOfBinary: oe, parenthesizeExpressionOfComputedPropertyName: f, parenthesizeConditionOfConditionalExpression: T, parenthesizeBranchOfConditionalExpression: K, parenthesizeExpressionOfExportDefault: b, parenthesizeExpressionOfNew: se, parenthesizeLeftSideOfAccess: J, parenthesizeOperandOfPostfixUnary: ie, parenthesizeOperandOfPrefixUnary: R, parenthesizeExpressionsOfCommaDelimitedList: q, parenthesizeExpressionForDisallowedComma: O, parenthesizeExpressionOfExpressionStatement: ve, parenthesizeConciseBodyOfArrowFunction: ee, parenthesizeCheckTypeOfConditionalType: he, parenthesizeExtendsTypeOfConditionalType: F, parenthesizeConstituentTypesOfUnionType: X, parenthesizeConstituentTypeOfUnionType: x, parenthesizeConstituentTypesOfIntersectionType: A, parenthesizeConstituentTypeOfIntersectionType: $, parenthesizeOperandOfTypeOperator: y, parenthesizeOperandOfReadonlyTypeOperator: V, parenthesizeNonArrayTypeOfPostfixType: L, parenthesizeElementTypesOfTupleType: P, parenthesizeElementTypeOfTupleType: k, parenthesizeTypeOfOptionalType: U, parenthesizeTypeArguments: I, parenthesizeLeadingTypeArgument: j }; + function E(l) { + w || (w = new e.Map()); + var d = w.get(l); + return d || (d = function(D) { + return G(l, D); + }, w.set(l, d)), d; + } + function Q(l) { + B || (B = new e.Map()); + var d = B.get(l); + return d || (d = function(D) { + return oe(l, void 0, D); + }, B.set(l, d)), d; + } + function le(l, d, D, fe) { + var g = e.getOperatorPrecedence(221, l), ne = e.getOperatorAssociativity(221, l), ue = e.skipPartiallyEmittedExpressions(d); + if (!D && d.kind === 214 && g > 3) + return true; + var We = e.getExpressionPrecedence(ue); + switch (e.compareValues(We, g)) { + case -1: + return !(!D && ne === 1 && d.kind === 224); + case 1: + return false; + case 0: + if (D) + return ne === 1; + if (e.isBinaryExpression(ue) && ue.operatorToken.kind === l) { + if (N(l)) + return false; + if (l === 39) { + var Fe = fe ? p(fe) : 0; + if (e.isLiteralKind(Fe) && Fe === p(ue)) + return false; + } + } + var Z = e.getExpressionAssociativity(ue); + return Z === 0; + } + } + function N(l) { + return l === 41 || l === 51 || l === 50 || l === 52; + } + function p(l) { + if (l = e.skipPartiallyEmittedExpressions(l), e.isLiteralKind(l.kind)) + return l.kind; + if (l.kind === 221 && l.operatorToken.kind === 39) { + if (l.cachedLiteralKind !== void 0) + return l.cachedLiteralKind; + var d = p(l.left), D = e.isLiteralKind(d) && d === p(l.right) ? d : 0; + return l.cachedLiteralKind = D, D; + } + return 0; + } + function m(l, d, D, fe) { + var g = e.skipPartiallyEmittedExpressions(d); + return g.kind === 212 ? d : le(l, d, D, fe) ? C.createParenthesizedExpression(d) : d; + } + function G(l, d) { + return m(l, d, true); + } + function oe(l, d, D) { + return m(l, D, false, d); + } + function f(l) { + return e.isCommaSequence(l) ? C.createParenthesizedExpression(l) : l; + } + function T(l) { + var d = e.getOperatorPrecedence(222, 57), D = e.skipPartiallyEmittedExpressions(l), fe = e.getExpressionPrecedence(D); + return e.compareValues(fe, d) !== 1 ? C.createParenthesizedExpression(l) : l; + } + function K(l) { + var d = e.skipPartiallyEmittedExpressions(l); + return e.isCommaSequence(d) ? C.createParenthesizedExpression(l) : l; + } + function b(l) { + var d = e.skipPartiallyEmittedExpressions(l), D = e.isCommaSequence(d); + if (!D) + switch (e.getLeftmostExpression(d, false).kind) { + case 226: + case 213: + D = true; + } + return D ? C.createParenthesizedExpression(l) : l; + } + function se(l) { + var d = e.getLeftmostExpression(l, true); + switch (d.kind) { + case 208: + return C.createParenthesizedExpression(l); + case 209: + return d.arguments ? l : C.createParenthesizedExpression(l); + } + return J(l); + } + function J(l) { + var d = e.skipPartiallyEmittedExpressions(l); + return e.isLeftHandSideExpression(d) && (d.kind !== 209 || d.arguments) ? l : e.setTextRange(C.createParenthesizedExpression(l), l); + } + function ie(l) { + return e.isLeftHandSideExpression(l) ? l : e.setTextRange(C.createParenthesizedExpression(l), l); + } + function R(l) { + return e.isUnaryExpression(l) ? l : e.setTextRange(C.createParenthesizedExpression(l), l); + } + function q(l) { + var d = e.sameMap(l, O); + return e.setTextRange(C.createNodeArray(d, l.hasTrailingComma), l); + } + function O(l) { + var d = e.skipPartiallyEmittedExpressions(l), D = e.getExpressionPrecedence(d), fe = e.getOperatorPrecedence(221, 27); + return D > fe ? l : e.setTextRange(C.createParenthesizedExpression(l), l); + } + function ve(l) { + var d = e.skipPartiallyEmittedExpressions(l); + if (e.isCallExpression(d)) { + var D = d.expression, fe = e.skipPartiallyEmittedExpressions(D).kind; + if (fe === 213 || fe === 214) { + var g = C.updateCallExpression(d, e.setTextRange(C.createParenthesizedExpression(D), D), d.typeArguments, d.arguments); + return C.restoreOuterExpressions(l, g, 8); + } + } + var ne = e.getLeftmostExpression(d, false).kind; + return ne === 205 || ne === 213 ? e.setTextRange(C.createParenthesizedExpression(l), l) : l; + } + function ee(l) { + return !e.isBlock(l) && (e.isCommaSequence(l) || e.getLeftmostExpression(l, false).kind === 205) ? e.setTextRange(C.createParenthesizedExpression(l), l) : l; + } + function he(l) { + switch (l.kind) { + case 179: + case 180: + case 189: + return C.createParenthesizedType(l); + } + return l; + } + function F(l) { + switch (l.kind) { + case 189: + return C.createParenthesizedType(l); + } + return l; + } + function x(l) { + switch (l.kind) { + case 187: + case 188: + return C.createParenthesizedType(l); + } + return he(l); + } + function X(l) { + return C.createNodeArray(e.sameMap(l, x)); + } + function $(l) { + switch (l.kind) { + case 187: + case 188: + return C.createParenthesizedType(l); + } + return x(l); + } + function A(l) { + return C.createNodeArray(e.sameMap(l, $)); + } + function y(l) { + switch (l.kind) { + case 188: + return C.createParenthesizedType(l); + } + return $(l); + } + function V(l) { + switch (l.kind) { + case 193: + return C.createParenthesizedType(l); + } + return y(l); + } + function L(l) { + switch (l.kind) { + case 190: + case 193: + case 181: + return C.createParenthesizedType(l); + } + return y(l); + } + function P(l) { + return C.createNodeArray(e.sameMap(l, k)); + } + function k(l) { + return Y(l) ? C.createParenthesizedType(l) : l; + } + function Y(l) { + return e.isJSDocNullableType(l) ? l.postfix : e.isNamedTupleMember(l) || e.isFunctionTypeNode(l) || e.isConstructorTypeNode(l) || e.isTypeOperatorNode(l) ? Y(l.type) : e.isConditionalTypeNode(l) ? Y(l.falseType) : e.isUnionTypeNode(l) || e.isIntersectionTypeNode(l) ? Y(e.last(l.types)) : e.isInferTypeNode(l) ? !!l.typeParameter.constraint && Y(l.typeParameter.constraint) : false; + } + function U(l) { + return Y(l) ? C.createParenthesizedType(l) : L(l); + } + function j(l) { + return e.isFunctionOrConstructorTypeNode(l) && l.typeParameters ? C.createParenthesizedType(l) : l; + } + function H(l, d) { + return d === 0 ? j(l) : l; + } + function I(l) { + if (e.some(l)) + return C.createNodeArray(e.sameMap(l, H)); + } + } + e.createParenthesizerRules = a, e.nullParenthesizerRules = { getParenthesizeLeftSideOfBinaryForOperator: function(C) { + return e.identity; + }, getParenthesizeRightSideOfBinaryForOperator: function(C) { + return e.identity; + }, parenthesizeLeftSideOfBinary: function(C, w) { + return w; + }, parenthesizeRightSideOfBinary: function(C, w, B) { + return B; + }, parenthesizeExpressionOfComputedPropertyName: e.identity, parenthesizeConditionOfConditionalExpression: e.identity, parenthesizeBranchOfConditionalExpression: e.identity, parenthesizeExpressionOfExportDefault: e.identity, parenthesizeExpressionOfNew: function(C) { + return e.cast(C, e.isLeftHandSideExpression); + }, parenthesizeLeftSideOfAccess: function(C) { + return e.cast(C, e.isLeftHandSideExpression); + }, parenthesizeOperandOfPostfixUnary: function(C) { + return e.cast(C, e.isLeftHandSideExpression); + }, parenthesizeOperandOfPrefixUnary: function(C) { + return e.cast(C, e.isUnaryExpression); + }, parenthesizeExpressionsOfCommaDelimitedList: function(C) { + return e.cast(C, e.isNodeArray); + }, parenthesizeExpressionForDisallowedComma: e.identity, parenthesizeExpressionOfExpressionStatement: e.identity, parenthesizeConciseBodyOfArrowFunction: e.identity, parenthesizeCheckTypeOfConditionalType: e.identity, parenthesizeExtendsTypeOfConditionalType: e.identity, parenthesizeConstituentTypesOfUnionType: function(C) { + return e.cast(C, e.isNodeArray); + }, parenthesizeConstituentTypeOfUnionType: e.identity, parenthesizeConstituentTypesOfIntersectionType: function(C) { + return e.cast(C, e.isNodeArray); + }, parenthesizeConstituentTypeOfIntersectionType: e.identity, parenthesizeOperandOfTypeOperator: e.identity, parenthesizeOperandOfReadonlyTypeOperator: e.identity, parenthesizeNonArrayTypeOfPostfixType: e.identity, parenthesizeElementTypesOfTupleType: function(C) { + return e.cast(C, e.isNodeArray); + }, parenthesizeElementTypeOfTupleType: e.identity, parenthesizeTypeOfOptionalType: e.identity, parenthesizeTypeArguments: function(C) { + return C && e.cast(C, e.isNodeArray); + }, parenthesizeLeadingTypeArgument: e.identity }; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + return { convertToFunctionBlock: w, convertToFunctionExpression: B, convertToArrayAssignmentElement: E, convertToObjectAssignmentElement: Q, convertToAssignmentPattern: le, convertToObjectAssignmentPattern: N, convertToArrayAssignmentPattern: p, convertToAssignmentElementTarget: m }; + function w(G, oe) { + if (e.isBlock(G)) + return G; + var f = C.createReturnStatement(G); + e.setTextRange(f, G); + var T = C.createBlock([f], oe); + return e.setTextRange(T, G), T; + } + function B(G) { + if (!G.body) + return e.Debug.fail("Cannot convert a FunctionDeclaration without a body"); + var oe = C.createFunctionExpression(G.modifiers, G.asteriskToken, G.name, G.typeParameters, G.parameters, G.type, G.body); + return e.setOriginalNode(oe, G), e.setTextRange(oe, G), e.getStartsOnNewLine(G) && e.setStartsOnNewLine(oe, true), oe; + } + function E(G) { + if (e.isBindingElement(G)) { + if (G.dotDotDotToken) + return e.Debug.assertNode(G.name, e.isIdentifier), e.setOriginalNode(e.setTextRange(C.createSpreadElement(G.name), G), G); + var oe = m(G.name); + return G.initializer ? e.setOriginalNode(e.setTextRange(C.createAssignment(oe, G.initializer), G), G) : oe; + } + return e.cast(G, e.isExpression); + } + function Q(G) { + if (e.isBindingElement(G)) { + if (G.dotDotDotToken) + return e.Debug.assertNode(G.name, e.isIdentifier), e.setOriginalNode(e.setTextRange(C.createSpreadAssignment(G.name), G), G); + if (G.propertyName) { + var oe = m(G.name); + return e.setOriginalNode(e.setTextRange(C.createPropertyAssignment(G.propertyName, G.initializer ? C.createAssignment(oe, G.initializer) : oe), G), G); + } + return e.Debug.assertNode(G.name, e.isIdentifier), e.setOriginalNode(e.setTextRange(C.createShorthandPropertyAssignment(G.name, G.initializer), G), G); + } + return e.cast(G, e.isObjectLiteralElementLike); + } + function le(G) { + switch (G.kind) { + case 202: + case 204: + return p(G); + case 201: + case 205: + return N(G); + } + } + function N(G) { + return e.isObjectBindingPattern(G) ? e.setOriginalNode(e.setTextRange(C.createObjectLiteralExpression(e.map(G.elements, Q)), G), G) : e.cast(G, e.isObjectLiteralExpression); + } + function p(G) { + return e.isArrayBindingPattern(G) ? e.setOriginalNode(e.setTextRange(C.createArrayLiteralExpression(e.map(G.elements, E)), G), G) : e.cast(G, e.isArrayLiteralExpression); + } + function m(G) { + return e.isBindingPattern(G) ? le(G) : e.cast(G, e.isExpression); + } + } + e.createNodeConverters = a, e.nullNodeConverters = { convertToFunctionBlock: e.notImplemented, convertToFunctionExpression: e.notImplemented, convertToArrayAssignmentElement: e.notImplemented, convertToObjectAssignmentElement: e.notImplemented, convertToAssignmentPattern: e.notImplemented, convertToObjectAssignmentPattern: e.notImplemented, convertToArrayAssignmentPattern: e.notImplemented, convertToAssignmentElementTarget: e.notImplemented }; + })(ke || (ke = {})); + var ke; + (function(e) { + var a = 0, C; + (function(X) { + X[X.None = 0] = "None", X[X.NoParenthesizerRules = 1] = "NoParenthesizerRules", X[X.NoNodeConverters = 2] = "NoNodeConverters", X[X.NoIndentationOnFreshPropertyAccess = 4] = "NoIndentationOnFreshPropertyAccess", X[X.NoOriginalNode = 8] = "NoOriginalNode"; + })(C = e.NodeFactoryFlags || (e.NodeFactoryFlags = {})); + function w(X, $) { + var A = X & 8 ? B : E, y = e.memoize(function() { + return X & 1 ? e.nullParenthesizerRules : e.createParenthesizerRules(g); + }), V = e.memoize(function() { + return X & 2 ? e.nullNodeConverters : e.createNodeConverters(g); + }), L = e.memoizeOne(function(_) { + return function(W, Te) { + return jr(W, _, Te); + }; + }), P = e.memoizeOne(function(_) { + return function(W) { + return Pt(_, W); + }; + }), k = e.memoizeOne(function(_) { + return function(W) { + return ua(W, _); + }; + }), Y = e.memoizeOne(function(_) { + return function() { + return Zl(_); + }; + }), U = e.memoizeOne(function(_) { + return function(W) { + return kl(_, W); + }; + }), j = e.memoizeOne(function(_) { + return function(W, Te) { + return zd(_, W, Te); + }; + }), H = e.memoizeOne(function(_) { + return function(W, Te) { + return R_(_, W, Te); + }; + }), I = e.memoizeOne(function(_) { + return function(W, Te) { + return __(_, W, Te); + }; + }), l = e.memoizeOne(function(_) { + return function(W, Te) { + return Wf(_, W, Te); + }; + }), d = e.memoizeOne(function(_) { + return function(W, Te, cr) { + return Sf(_, W, Te, cr); + }; + }), D = e.memoizeOne(function(_) { + return function(W, Te, cr) { + return ll(_, W, Te, cr); + }; + }), fe = e.memoizeOne(function(_) { + return function(W, Te, cr, ni) { + return J_(_, W, Te, cr, ni); + }; + }), g = { get parenthesizer() { + return y(); + }, get converters() { + return V(); + }, baseFactory: $, flags: X, createNodeArray: ne, createNumericLiteral: we, createBigIntLiteral: de, createStringLiteral: Ae, createStringLiteralFromNode: er, createRegularExpressionLiteral: ir, createLiteralLikeNode: Cr, createIdentifier: Er, updateIdentifier: Ne, createTempVariable: n, createLoopVariable: lr, createUniqueName: be, getGeneratedNameForNode: Ge, createPrivateIdentifier: ur, createToken: Ir, createSuper: wr, createThis: Ur, createNull: ii, createTrue: mi, createFalse: pe, createModifier: or, createModifiersFromModifierFlags: qr, createQualifiedName: si, updateQualifiedName: Di, createComputedPropertyName: wi, updateComputedPropertyName: Xi, createTypeParameterDeclaration: et, updateTypeParameterDeclaration: Gi, createParameterDeclaration: Wt, updateParameterDeclaration: Zt, createDecorator: _r, updateDecorator: pi, createPropertySignature: ae, updatePropertySignature: Xe, createPropertyDeclaration: Jr, updatePropertyDeclaration: ti, createMethodSignature: Ze, updateMethodSignature: Sr, createMethodDeclaration: zr, updateMethodDeclaration: Wr, createConstructorDeclaration: vr, updateConstructorDeclaration: mr, createGetAccessorDeclaration: Ar, updateGetAccessorDeclaration: Oe, createSetAccessorDeclaration: nr, updateSetAccessorDeclaration: Mr, createCallSignature: Pe, updateCallSignature: Ue, createConstructSignature: fr, updateConstructSignature: De, createIndexSignature: gr, updateIndexSignature: Vr, createClassStaticBlockDeclaration: Je, updateClassStaticBlockDeclaration: xe, createTemplateLiteralTypeSpan: Tr, updateTemplateLiteralTypeSpan: vi, createKeywordTypeNode: Ui, createTypePredicateNode: Yi, updateTypePredicateNode: Wi, createTypeReferenceNode: ct, updateTypeReferenceNode: Li, createFunctionTypeNode: nt, updateFunctionTypeNode: Mt, createConstructorTypeNode: xt, updateConstructorTypeNode: Rt, createTypeQueryNode: Fi, updateTypeQueryNode: ui, createTypeLiteralNode: Bt, updateTypeLiteralNode: wt, createArrayTypeNode: na, updateArrayTypeNode: Ai, createTupleTypeNode: Oi, updateTupleTypeNode: ji, createNamedTupleMember: Vi, updateNamedTupleMember: at, createOptionalTypeNode: At, updateOptionalTypeNode: ba, createRestTypeNode: $a, updateRestTypeNode: Qa, createUnionTypeNode: ka, updateUnionTypeNode: Ba, createIntersectionTypeNode: pn, updateIntersectionTypeNode: Cn, createConditionalTypeNode: Bi, updateConditionalTypeNode: kn, createInferTypeNode: xn, updateInferTypeNode: Kn, createImportTypeNode: Rn, updateImportTypeNode: Da, createParenthesizedType: bo, updateParenthesizedType: Ro, createThisTypeNode: En, createTypeOperatorNode: Wn, updateTypeOperatorNode: to, createIndexedAccessTypeNode: Co, updateIndexedAccessTypeNode: Ko, createMappedTypeNode: Oo, updateMappedTypeNode: no, createLiteralTypeNode: $o, updateLiteralTypeNode: Pr, createTemplateLiteralType: Pn, updateTemplateLiteralType: eo, createObjectBindingPattern: xi, updateObjectBindingPattern: St, createArrayBindingPattern: pa, updateArrayBindingPattern: dn, createBindingElement: Jn, updateBindingElement: Qe, createArrayLiteralExpression: S, updateArrayLiteralExpression: Ce, createObjectLiteralExpression: qe, updateObjectLiteralExpression: br, createPropertyAccessExpression: X & 4 ? function(_, W) { + return e.setEmitFlags(Zr(_, W), 131072); + } : Zr, updatePropertyAccessExpression: Si, createPropertyAccessChain: X & 4 ? function(_, W, Te) { + return e.setEmitFlags(Pi(_, W, Te), 131072); + } : Pi, updatePropertyAccessChain: Qi, createElementAccessExpression: Ct, updateElementAccessExpression: sa, createElementAccessChain: en, updateElementAccessChain: Wa, createCallExpression: qn, updateCallExpression: mo, createCallChain: So, updateCallChain: Go, createNewExpression: ys, updateNewExpression: Pc, createTaggedTemplateExpression: Vc, updateTaggedTemplateExpression: Kc, createTypeAssertion: Xs, updateTypeAssertion: pc, createParenthesizedExpression: hs, updateParenthesizedExpression: tc, createFunctionExpression: ps, updateFunctionExpression: Qs, createArrowFunction: js, updateArrowFunction: ds, createDeleteExpression: Ji, updateDeleteExpression: ce, createTypeOfExpression: Rr, updateTypeOfExpression: yi, createVoidExpression: qi, updateVoidExpression: je, createAwaitExpression: Hr, updateAwaitExpression: pt, createPrefixUnaryExpression: Pt, updatePrefixUnaryExpression: ga, createPostfixUnaryExpression: ua, updatePostfixUnaryExpression: Xn, createBinaryExpression: jr, updateBinaryExpression: xs, createConditionalExpression: Fo, updateConditionalExpression: ko, createTemplateExpression: Ao, updateTemplateExpression: Ms, createTemplateHead: su, createTemplateMiddle: tl, createTemplateTail: Zc, createNoSubstitutionTemplateLiteral: Rf, createTemplateLiteralLikeNode: xc, createYieldExpression: al, updateYieldExpression: Jo, createSpreadElement: eu, updateSpreadElement: Ws, createClassExpression: pu, updateClassExpression: Uu, createOmittedExpression: Ql, createExpressionWithTypeArguments: xl, updateExpressionWithTypeArguments: Ya, createAsExpression: du, updateAsExpression: vc, createNonNullExpression: Kr, updateNonNullExpression: _i, createNonNullChain: Ei, updateNonNullChain: tt, createMetaProperty: kt, updateMetaProperty: bt, createTemplateSpan: ia, updateTemplateSpan: Xt, createSemicolonClassElement: Za, createBlock: bn, updateBlock: _a, createVariableStatement: qa, updateVariableStatement: rn, createEmptyStatement: jn, createExpressionStatement: Mo, updateExpressionStatement: ho, createIfStatement: gs, updateIfStatement: Se, createDoStatement: hr, updateDoStatement: Or, createWhileStatement: ki, updateWhileStatement: dt, createForStatement: la, updateForStatement: wa, createForInStatement: On, updateForInStatement: No, createForOfStatement: jo, updateForOfStatement: po, createContinueStatement: Gn, updateContinueStatement: $n, createBreakStatement: Ho, updateBreakStatement: Zo, createReturnStatement: Es, updateReturnStatement: yc, createWithStatement: Xr, updateWithStatement: Ls, createSwitchStatement: Ic, updateSwitchStatement: zu, createLabeledStatement: vf, updateLabeledStatement: P_, createThrowStatement: El, updateThrowStatement: vp, createTryStatement: oo, updateTryStatement: I_, createDebuggerStatement: yp, createVariableDeclaration: Yl, updateVariableDeclaration: Bf, createVariableDeclarationList: Cl, updateVariableDeclarationList: c_, createFunctionDeclaration: hp, updateFunctionDeclaration: gu, createClassDeclaration: Dp, updateClassDeclaration: sd, createInterfaceDeclaration: Aa, updateInterfaceDeclaration: va, createTypeAliasDeclaration: Cu, updateTypeAliasDeclaration: qs, createEnumDeclaration: cd, updateEnumDeclaration: ns, createModuleDeclaration: nl, updateModuleDeclaration: hc, createModuleBlock: es, updateModuleBlock: u_, createCaseBlock: Jf, updateCaseBlock: w_, createNamespaceExportDeclaration: ud, updateNamespaceExportDeclaration: ku, createImportEqualsDeclaration: ld, updateImportEqualsDeclaration: fd, createImportDeclaration: bp, updateImportDeclaration: Sp, createImportClause: Tp, updateImportClause: _d, createAssertClause: jf, updateAssertClause: O_, createAssertEntry: F_, updateAssertEntry: pd, createImportTypeAssertionContainer: xp, updateImportTypeAssertionContainer: M_, createNamespaceImport: Ep, updateNamespaceImport: ol, createNamespaceExport: Au, updateNamespaceExport: ru, createNamedImports: yf, updateNamedImports: Cp, createImportSpecifier: dd, updateImportSpecifier: kp, createExportAssignment: mu, updateExportAssignment: gd, createExportDeclaration: hf, updateExportDeclaration: $l, createNamedExports: Uf, updateNamedExports: L_, createExportSpecifier: l_, updateExportSpecifier: f_, createMissingDeclaration: md, createExternalModuleReference: ks, updateExternalModuleReference: Wu, get createJSDocAllType() { + return Y(312); + }, get createJSDocUnknownType() { + return Y(313); + }, get createJSDocNonNullableType() { + return H(315); + }, get updateJSDocNonNullableType() { + return I(315); + }, get createJSDocNullableType() { + return H(314); + }, get updateJSDocNullableType() { + return I(314); + }, get createJSDocOptionalType() { + return U(316); + }, get updateJSDocOptionalType() { + return j(316); + }, get createJSDocVariadicType() { + return U(318); + }, get updateJSDocVariadicType() { + return j(318); + }, get createJSDocNamepathType() { + return U(319); + }, get updateJSDocNamepathType() { + return j(319); + }, createJSDocFunctionType: Al, updateJSDocFunctionType: wc, createJSDocTypeLiteral: qu, updateJSDocTypeLiteral: Vu, createJSDocTypeExpression: ef, updateJSDocTypeExpression: sl, createJSDocSignature: p_, updateJSDocSignature: Df, createJSDocTemplateTag: os, updateJSDocTemplateTag: Ps, createJSDocTypedefTag: d_, updateJSDocTypedefTag: Gc, createJSDocParameterTag: B_, updateJSDocParameterTag: vu, createJSDocPropertyTag: Gt, updateJSDocPropertyTag: As, createJSDocCallbackTag: vn, updateJSDocCallbackTag: Nl, createJSDocAugmentsTag: cl, updateJSDocAugmentsTag: rf, createJSDocImplementsTag: Ut, updateJSDocImplementsTag: Ap, createJSDocSeeTag: Ds, updateJSDocSeeTag: bf, createJSDocNameReference: bs, updateJSDocNameReference: Dc, createJSDocMemberName: Cc, updateJSDocMemberName: ac, createJSDocLink: Pl, updateJSDocLink: Il, createJSDocLinkCode: zf, updateJSDocLinkCode: ul, createJSDocLinkPlain: Nu, updateJSDocLinkPlain: Us, get createJSDocTypeTag() { + return D(343); + }, get updateJSDocTypeTag() { + return fe(343); + }, get createJSDocReturnTag() { + return D(341); + }, get updateJSDocReturnTag() { + return fe(341); + }, get createJSDocThisTag() { + return D(342); + }, get updateJSDocThisTag() { + return fe(342); + }, get createJSDocEnumTag() { + return D(339); + }, get updateJSDocEnumTag() { + return fe(339); + }, get createJSDocAuthorTag() { + return l(330); + }, get updateJSDocAuthorTag() { + return d(330); + }, get createJSDocClassTag() { + return l(332); + }, get updateJSDocClassTag() { + return d(332); + }, get createJSDocPublicTag() { + return l(333); + }, get updateJSDocPublicTag() { + return d(333); + }, get createJSDocPrivateTag() { + return l(334); + }, get updateJSDocPrivateTag() { + return d(334); + }, get createJSDocProtectedTag() { + return l(335); + }, get updateJSDocProtectedTag() { + return d(335); + }, get createJSDocReadonlyTag() { + return l(336); + }, get updateJSDocReadonlyTag() { + return d(336); + }, get createJSDocOverrideTag() { + return l(337); + }, get updateJSDocOverrideTag() { + return d(337); + }, get createJSDocDeprecatedTag() { + return l(331); + }, get updateJSDocDeprecatedTag() { + return d(331); + }, createJSDocUnknownTag: j_, updateJSDocUnknownTag: U_, createJSDocText: iu, updateJSDocText: vd, createJSDocComment: qf, updateJSDocComment: dc, createJsxElement: Pu, updateJsxElement: wl, createJsxSelfClosingElement: Iu, updateJsxSelfClosingElement: so, createJsxOpeningElement: Et, updateJsxOpeningElement: Ys, createJsxClosingElement: Ku, updateJsxClosingElement: Np, createJsxFragment: Pp, createJsxText: fl, updateJsxText: _l, createJsxOpeningFragment: cu, createJsxJsxClosingFragment: gc, updateJsxFragment: nc, createJsxAttribute: Tf, updateJsxAttribute: mc, createJsxAttributes: Ip, updateJsxAttributes: ms, createJsxSpreadAttribute: tu, updateJsxSpreadAttribute: wp, createJsxExpression: Hc, updateJsxExpression: Ol, createCaseClause: tf, updateCaseClause: xf, createDefaultClause: z_, updateDefaultClause: Oc, createHeritageClause: rs, updateHeritageClause: Op, createCatchClause: Ef, updateCatchClause: Fl, createPropertyAssignment: pl, updatePropertyAssignment: Mp, createShorthandPropertyAssignment: Gu, updateShorthandPropertyAssignment: Cf, createSpreadAssignment: W_, updateSpreadAssignment: g_, createEnumMember: dl, updateEnumMember: gl, createSourceFile: Vf, updateSourceFile: Hu, createBundle: af, updateBundle: tn, createUnparsedSource: Ml, createUnparsedPrologue: nf, createUnparsedPrepend: q_, createUnparsedTextLike: Kf, createUnparsedSyntheticReference: Rp, createInputFiles: yd, createSyntheticExpression: m_, createSyntaxList: Ll, createNotEmittedStatement: hd, createPartiallyEmittedExpression: v_, updatePartiallyEmittedExpression: Bp, createCommaListExpression: Xc, updateCommaListExpression: Gf, createEndOfDeclarationMarker: of, createMergeDeclarationMarker: wu, createSyntheticReferenceExpression: V_, updateSyntheticReferenceExpression: yu, cloneNode: v, get createComma() { + return L(27); + }, get createAssignment() { + return L(63); + }, get createLogicalOr() { + return L(56); + }, get createLogicalAnd() { + return L(55); + }, get createBitwiseOr() { + return L(51); + }, get createBitwiseXor() { + return L(52); + }, get createBitwiseAnd() { + return L(50); + }, get createStrictEquality() { + return L(36); + }, get createStrictInequality() { + return L(37); + }, get createEquality() { + return L(34); + }, get createInequality() { + return L(35); + }, get createLessThan() { + return L(29); + }, get createLessThanEquals() { + return L(32); + }, get createGreaterThan() { + return L(31); + }, get createGreaterThanEquals() { + return L(33); + }, get createLeftShift() { + return L(47); + }, get createRightShift() { + return L(48); + }, get createUnsignedRightShift() { + return L(49); + }, get createAdd() { + return L(39); + }, get createSubtract() { + return L(40); + }, get createMultiply() { + return L(41); + }, get createDivide() { + return L(43); + }, get createModulo() { + return L(44); + }, get createExponent() { + return L(42); + }, get createPrefixPlus() { + return P(39); + }, get createPrefixMinus() { + return P(40); + }, get createPrefixIncrement() { + return P(45); + }, get createPrefixDecrement() { + return P(46); + }, get createBitwiseNot() { + return P(54); + }, get createLogicalNot() { + return P(53); + }, get createPostfixIncrement() { + return k(45); + }, get createPostfixDecrement() { + return k(46); + }, createImmediatelyInvokedFunctionExpression: sr, createImmediatelyInvokedArrowFunction: fi, createVoidZero: zi, createExportDefault: Sa, createExternalModuleExport: da, createTypeCheck: Ha, createMethodCall: ta, createGlobalMethodCall: oc, createFunctionBindCall: nn, createFunctionCallCall: Wo, createFunctionApplyCall: Lo, createArraySliceCall: uu, createArrayConcatCall: is, createObjectDefinePropertyCall: au, createReflectGetCall: Ou, createReflectSetCall: sf, createPropertyDescriptor: cf, createCallBinding: G_, createAssignmentTargetWrapper: Le, inlineExpressions: Nr, getInternalName: di, getLocalName: Mi, getExportName: st, getDeclarationName: ra, getNamespaceMemberName: Ta, getExternalModuleOrNamespaceExportName: ha, restoreOuterExpressions: Jp, restoreEnclosingLabel: Hf, createUseStrictPrologue: qo, copyPrologue: Na, copyStandardPrologue: co, copyCustomPrologue: ts, ensureUseStrict: vs, liftToBlock: Ac, mergeLexicalEnvironment: Qu, updateModifiers: sc }; + return g; + function ne(_, W) { + if (_ === void 0 || _ === e.emptyArray) + _ = []; + else if (e.isNodeArray(_)) { + if (W === void 0 || _.hasTrailingComma === W) + return _.transformFlags === void 0 && T(_), e.Debug.attachNodeArrayDebugInfo(_), _; + var Te = _.slice(); + return Te.pos = _.pos, Te.end = _.end, Te.hasTrailingComma = W, Te.transformFlags = _.transformFlags, e.Debug.attachNodeArrayDebugInfo(Te), Te; + } + var cr = _.length, ni = cr >= 1 && cr <= 4 ? _.slice() : _; + return e.setTextRangePosEnd(ni, -1, -1), ni.hasTrailingComma = !!W, T(ni), e.Debug.attachNodeArrayDebugInfo(ni), ni; + } + function ue(_) { + return $.createBaseNode(_); + } + function We(_, W, Te) { + var cr = ue(_); + return cr.decorators = bc(W), cr.modifiers = bc(Te), cr.transformFlags |= f(cr.decorators) | f(cr.modifiers), cr.symbol = void 0, cr.localSymbol = void 0, cr.locals = void 0, cr.nextContainer = void 0, cr; + } + function Fe(_, W, Te, cr) { + var ni = We(_, W, Te); + if (cr = Mc(cr), ni.name = cr, cr) + switch (ni.kind) { + case 169: + case 172: + case 173: + case 167: + case 296: + if (e.isIdentifier(cr)) { + ni.transformFlags |= m(cr); + break; + } + default: + ni.transformFlags |= oe(cr); + break; + } + return ni; + } + function Z(_, W, Te, cr, ni) { + var rt = Fe(_, W, Te, cr); + return rt.typeParameters = bc(ni), rt.transformFlags |= f(rt.typeParameters), ni && (rt.transformFlags |= 1), rt; + } + function Be(_, W, Te, cr, ni, rt, yt) { + var Xa = Z(_, W, Te, cr, ni); + return Xa.parameters = ne(rt), Xa.type = yt, Xa.transformFlags |= f(Xa.parameters) | oe(Xa.type), yt && (Xa.transformFlags |= 1), Xa; + } + function ge(_, W) { + return W.typeArguments && (_.typeArguments = W.typeArguments), A(_, W); + } + function Re(_, W, Te, cr, ni, rt, yt, Xa) { + var vo = Be(_, W, Te, cr, ni, rt, yt); + return vo.body = Xa, vo.transformFlags |= oe(vo.body) & -16777217, Xa || (vo.transformFlags |= 1), vo; + } + function ze(_, W) { + return W.exclamationToken && (_.exclamationToken = W.exclamationToken), W.typeArguments && (_.typeArguments = W.typeArguments), ge(_, W); + } + function Ee(_, W, Te, cr, ni, rt) { + var yt = Z(_, W, Te, cr, ni); + return yt.heritageClauses = bc(rt), yt.transformFlags |= f(yt.heritageClauses), yt; + } + function He(_, W, Te, cr, ni, rt, yt) { + var Xa = Ee(_, W, Te, cr, ni, rt); + return Xa.members = ne(yt), Xa.transformFlags |= f(Xa.members), Xa; + } + function rr(_, W, Te, cr, ni) { + var rt = Fe(_, W, Te, cr); + return rt.initializer = ni, rt.transformFlags |= oe(rt.initializer), rt; + } + function Ie(_, W, Te, cr, ni, rt) { + var yt = rr(_, W, Te, cr, rt); + return yt.type = ni, yt.transformFlags |= oe(ni), ni && (yt.transformFlags |= 1), yt; + } + function _e(_, W) { + var Te = yr(_); + return Te.text = W, Te; + } + function we(_, W) { + W === void 0 && (W = 0); + var Te = _e(8, typeof _ == "number" ? _ + "" : _); + return Te.numericLiteralFlags = W, W & 384 && (Te.transformFlags |= 1024), Te; + } + function de(_) { + var W = _e(9, typeof _ == "string" ? _ : e.pseudoBigIntToString(_) + "n"); + return W.transformFlags |= 4, W; + } + function ye(_, W) { + var Te = _e(10, _); + return Te.singleQuote = W, Te; + } + function Ae(_, W, Te) { + var cr = ye(_, W); + return cr.hasExtendedUnicodeEscape = Te, Te && (cr.transformFlags |= 1024), cr; + } + function er(_) { + var W = ye(e.getTextOfIdentifierOrLiteral(_), void 0); + return W.textSourceNode = _, W; + } + function ir(_) { + var W = _e(13, _); + return W; + } + function Cr(_, W) { + switch (_) { + case 8: + return we(W, 0); + case 9: + return de(W); + case 10: + return Ae(W, void 0); + case 11: + return fl(W, false); + case 12: + return fl(W, true); + case 13: + return ir(W); + case 14: + return xc(_, W, void 0, 0); + } + } + function Ye(_, W) { + W === void 0 && _ && (W = e.stringToToken(_)), W === 79 && (W = void 0); + var Te = $.createBaseIdentifierNode(79); + return Te.originalKeywordKind = W, Te.escapedText = e.escapeLeadingUnderscores(_), Te; + } + function Br(_, W) { + var Te = Ye(_, void 0); + return Te.autoGenerateFlags = W, Te.autoGenerateId = a, a++, Te; + } + function Er(_, W, Te) { + var cr = Ye(_, Te); + return W && (cr.typeArguments = ne(W)), cr.originalKeywordKind === 132 && (cr.transformFlags |= 16777216), cr; + } + function Ne(_, W) { + return _.typeArguments !== W ? A(Er(e.idText(_), W), _) : _; + } + function n(_, W) { + var Te = 1; + W && (Te |= 8); + var cr = Br("", Te); + return _ && _(cr), cr; + } + function lr(_) { + var W = 2; + return _ && (W |= 8), Br("", W); + } + function be(_, W) { + return W === void 0 && (W = 0), e.Debug.assert(!(W & 7), "Argument out of range: flags"), e.Debug.assert((W & 48) !== 32, "GeneratedIdentifierFlags.FileLevel cannot be set without also setting GeneratedIdentifierFlags.Optimistic"), Br(_, 3 | W); + } + function Ge(_, W) { + W === void 0 && (W = 0), e.Debug.assert(!(W & 7), "Argument out of range: flags"); + var Te = Br(_ && e.isIdentifier(_) ? e.idText(_) : "", 4 | W); + return Te.original = _, Te; + } + function ur(_) { + e.startsWith(_, "#") || e.Debug.fail("First character of private identifier must be #: " + _); + var W = $.createBasePrivateIdentifierNode(80); + return W.escapedText = e.escapeLeadingUnderscores(_), W.transformFlags |= 8388608, W; + } + function yr(_) { + return $.createBaseTokenNode(_); + } + function Ir(_) { + e.Debug.assert(_ >= 0 && _ <= 160, "Invalid token"), e.Debug.assert(_ <= 14 || _ >= 17, "Invalid token. Use 'createTemplateLiteralLikeNode' to create template literals."), e.Debug.assert(_ <= 8 || _ >= 14, "Invalid token. Use 'createLiteralLikeNode' to create literals."), e.Debug.assert(_ !== 79, "Invalid token. Use 'createIdentifier' to create identifiers"); + var W = yr(_), Te = 0; + switch (_) { + case 131: + Te = 384; + break; + case 123: + case 121: + case 122: + case 145: + case 126: + case 135: + case 85: + case 130: + case 147: + case 158: + case 143: + case 148: + case 101: + case 144: + case 159: + case 150: + case 133: + case 151: + case 114: + case 155: + case 153: + Te = 1; + break; + case 106: + Te = 33555456; + break; + case 124: + Te = 1024; + break; + case 108: + Te = 8192; + break; + } + return Te && (W.transformFlags |= Te), W; + } + function wr() { + return Ir(106); + } + function Ur() { + return Ir(108); + } + function ii() { + return Ir(104); + } + function mi() { + return Ir(110); + } + function pe() { + return Ir(95); + } + function or(_) { + return Ir(_); + } + function qr(_) { + var W = []; + return _ & 1 && W.push(or(93)), _ & 2 && W.push(or(135)), _ & 512 && W.push(or(88)), _ & 2048 && W.push(or(85)), _ & 4 && W.push(or(123)), _ & 8 && W.push(or(121)), _ & 16 && W.push(or(122)), _ & 128 && W.push(or(126)), _ & 32 && W.push(or(124)), _ & 16384 && W.push(or(159)), _ & 64 && W.push(or(145)), _ & 256 && W.push(or(131)), _ & 32768 && W.push(or(101)), _ & 65536 && W.push(or(144)), W.length ? W : void 0; + } + function si(_, W) { + var Te = ue(161); + return Te.left = _, Te.right = Mc(W), Te.transformFlags |= oe(Te.left) | m(Te.right), Te; + } + function Di(_, W, Te) { + return _.left !== W || _.right !== Te ? A(si(W, Te), _) : _; + } + function wi(_) { + var W = ue(162); + return W.expression = y().parenthesizeExpressionOfComputedPropertyName(_), W.transformFlags |= oe(W.expression) | 1024 | 65536, W; + } + function Xi(_, W) { + return _.expression !== W ? A(wi(W), _) : _; + } + function et(_, W, Te, cr) { + var ni, rt, yt; + _ === void 0 || e.isArray(_) ? (rt = _, ni = W, yt = Te) : (rt = void 0, ni = _, yt = W); + var Xa = Fe(163, void 0, rt, ni); + return Xa.constraint = yt, Xa.default = cr, Xa.transformFlags = 1, Xa; + } + function Gi(_, W, Te, cr, ni) { + var rt, yt, Xa; + return W === void 0 || e.isArray(W) ? (yt = W, rt = Te, Xa = cr) : (yt = void 0, rt = W, Xa = Te), _.modifiers !== yt || _.name !== rt || _.constraint !== Xa || _.default !== ni ? A(et(yt, rt, Xa, ni), _) : _; + } + function Wt(_, W, Te, cr, ni, rt, yt) { + var Xa = Ie(164, _, W, cr, rt, yt && y().parenthesizeExpressionForDisallowedComma(yt)); + return Xa.dotDotDotToken = Te, Xa.questionToken = ni, e.isThisIdentifier(Xa.name) ? Xa.transformFlags = 1 : (Xa.transformFlags |= oe(Xa.dotDotDotToken) | oe(Xa.questionToken), ni && (Xa.transformFlags |= 1), e.modifiersToFlags(Xa.modifiers) & 16476 && (Xa.transformFlags |= 4096), (yt || Te) && (Xa.transformFlags |= 1024)), Xa; + } + function Zt(_, W, Te, cr, ni, rt, yt, Xa) { + return _.decorators !== W || _.modifiers !== Te || _.dotDotDotToken !== cr || _.name !== ni || _.questionToken !== rt || _.type !== yt || _.initializer !== Xa ? A(Wt(W, Te, cr, ni, rt, yt, Xa), _) : _; + } + function _r(_) { + var W = ue(165); + return W.expression = y().parenthesizeLeftSideOfAccess(_), W.transformFlags |= oe(W.expression) | 1 | 4096, W; + } + function pi(_, W) { + return _.expression !== W ? A(_r(W), _) : _; + } + function ae(_, W, Te, cr) { + var ni = Fe(166, void 0, _, W); + return ni.type = cr, ni.questionToken = Te, ni.transformFlags = 1, ni; + } + function Xe(_, W, Te, cr, ni) { + return _.modifiers !== W || _.name !== Te || _.questionToken !== cr || _.type !== ni ? A(ae(W, Te, cr, ni), _) : _; + } + function Jr(_, W, Te, cr, ni, rt) { + var yt = Ie(167, _, W, Te, ni, rt); + return yt.questionToken = cr && e.isQuestionToken(cr) ? cr : void 0, yt.exclamationToken = cr && e.isExclamationToken(cr) ? cr : void 0, yt.transformFlags |= oe(yt.questionToken) | oe(yt.exclamationToken) | 8388608, (e.isComputedPropertyName(yt.name) || e.hasStaticModifier(yt) && yt.initializer) && (yt.transformFlags |= 4096), (cr || e.modifiersToFlags(yt.modifiers) & 2) && (yt.transformFlags |= 1), yt; + } + function ti(_, W, Te, cr, ni, rt, yt) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.questionToken !== (ni !== void 0 && e.isQuestionToken(ni) ? ni : void 0) || _.exclamationToken !== (ni !== void 0 && e.isExclamationToken(ni) ? ni : void 0) || _.type !== rt || _.initializer !== yt ? A(Jr(W, Te, cr, ni, rt, yt), _) : _; + } + function Ze(_, W, Te, cr, ni, rt) { + var yt = Be(168, void 0, _, W, cr, ni, rt); + return yt.questionToken = Te, yt.transformFlags = 1, yt; + } + function Sr(_, W, Te, cr, ni, rt, yt) { + return _.modifiers !== W || _.name !== Te || _.questionToken !== cr || _.typeParameters !== ni || _.parameters !== rt || _.type !== yt ? ge(Ze(W, Te, cr, ni, rt, yt), _) : _; + } + function zr(_, W, Te, cr, ni, rt, yt, Xa, vo) { + var Vs = Re(169, _, W, cr, rt, yt, Xa, vo); + return Vs.asteriskToken = Te, Vs.questionToken = ni, Vs.transformFlags |= oe(Vs.asteriskToken) | oe(Vs.questionToken) | 1024, ni && (Vs.transformFlags |= 1), e.modifiersToFlags(Vs.modifiers) & 256 ? Te ? Vs.transformFlags |= 128 : Vs.transformFlags |= 256 : Te && (Vs.transformFlags |= 2048), Vs; + } + function Wr(_, W, Te, cr, ni, rt, yt, Xa, vo, Vs) { + return _.decorators !== W || _.modifiers !== Te || _.asteriskToken !== cr || _.name !== ni || _.questionToken !== rt || _.typeParameters !== yt || _.parameters !== Xa || _.type !== vo || _.body !== Vs ? ze(zr(W, Te, cr, ni, rt, yt, Xa, vo, Vs), _) : _; + } + function Je(_, W, Te) { + var cr = Z(170, _, W, void 0, void 0); + return cr.body = Te, cr.transformFlags = oe(Te) | 8388608, cr; + } + function xe(_, W, Te, cr) { + return _.decorators !== W || _.modifier !== Te || _.body !== cr ? A(Je(W, Te, cr), _) : _; + } + function vr(_, W, Te, cr) { + var ni = Re(171, _, W, void 0, void 0, Te, void 0, cr); + return ni.transformFlags |= 1024, ni; + } + function mr(_, W, Te, cr, ni) { + return _.decorators !== W || _.modifiers !== Te || _.parameters !== cr || _.body !== ni ? ze(vr(W, Te, cr, ni), _) : _; + } + function Ar(_, W, Te, cr, ni, rt) { + return Re(172, _, W, Te, void 0, cr, ni, rt); + } + function Oe(_, W, Te, cr, ni, rt, yt) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.parameters !== ni || _.type !== rt || _.body !== yt ? ze(Ar(W, Te, cr, ni, rt, yt), _) : _; + } + function nr(_, W, Te, cr, ni) { + return Re(173, _, W, Te, void 0, cr, void 0, ni); + } + function Mr(_, W, Te, cr, ni, rt) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.parameters !== ni || _.body !== rt ? ze(nr(W, Te, cr, ni, rt), _) : _; + } + function Pe(_, W, Te) { + var cr = Be(174, void 0, void 0, void 0, _, W, Te); + return cr.transformFlags = 1, cr; + } + function Ue(_, W, Te, cr) { + return _.typeParameters !== W || _.parameters !== Te || _.type !== cr ? ge(Pe(W, Te, cr), _) : _; + } + function fr(_, W, Te) { + var cr = Be(175, void 0, void 0, void 0, _, W, Te); + return cr.transformFlags = 1, cr; + } + function De(_, W, Te, cr) { + return _.typeParameters !== W || _.parameters !== Te || _.type !== cr ? ge(fr(W, Te, cr), _) : _; + } + function gr(_, W, Te, cr) { + var ni = Be(176, _, W, void 0, void 0, Te, cr); + return ni.transformFlags = 1, ni; + } + function Vr(_, W, Te, cr, ni) { + return _.parameters !== cr || _.type !== ni || _.decorators !== W || _.modifiers !== Te ? ge(gr(W, Te, cr, ni), _) : _; + } + function Tr(_, W) { + var Te = ue(199); + return Te.type = _, Te.literal = W, Te.transformFlags = 1, Te; + } + function vi(_, W, Te) { + return _.type !== W || _.literal !== Te ? A(Tr(W, Te), _) : _; + } + function Ui(_) { + return Ir(_); + } + function Yi(_, W, Te) { + var cr = ue(177); + return cr.assertsModifier = _, cr.parameterName = Mc(W), cr.type = Te, cr.transformFlags = 1, cr; + } + function Wi(_, W, Te, cr) { + return _.assertsModifier !== W || _.parameterName !== Te || _.type !== cr ? A(Yi(W, Te, cr), _) : _; + } + function ct(_, W) { + var Te = ue(178); + return Te.typeName = Mc(_), Te.typeArguments = W && y().parenthesizeTypeArguments(ne(W)), Te.transformFlags = 1, Te; + } + function Li(_, W, Te) { + return _.typeName !== W || _.typeArguments !== Te ? A(ct(W, Te), _) : _; + } + function nt(_, W, Te) { + var cr = Be(179, void 0, void 0, void 0, _, W, Te); + return cr.transformFlags = 1, cr; + } + function Mt(_, W, Te, cr) { + return _.typeParameters !== W || _.parameters !== Te || _.type !== cr ? ge(nt(W, Te, cr), _) : _; + } + function xt() { + for (var _ = [], W = 0; W < arguments.length; W++) + _[W] = arguments[W]; + return _.length === 4 ? ut.apply(void 0, _) : _.length === 3 ? Dt.apply(void 0, _) : e.Debug.fail("Incorrect number of arguments specified."); + } + function ut(_, W, Te, cr) { + var ni = Be(180, void 0, _, void 0, W, Te, cr); + return ni.transformFlags = 1, ni; + } + function Dt(_, W, Te) { + return ut(void 0, _, W, Te); + } + function Rt() { + for (var _ = [], W = 0; W < arguments.length; W++) + _[W] = arguments[W]; + return _.length === 5 ? Ii.apply(void 0, _) : _.length === 4 ? Ki.apply(void 0, _) : e.Debug.fail("Incorrect number of arguments specified."); + } + function Ii(_, W, Te, cr, ni) { + return _.modifiers !== W || _.typeParameters !== Te || _.parameters !== cr || _.type !== ni ? ge(xt(W, Te, cr, ni), _) : _; + } + function Ki(_, W, Te, cr) { + return Ii(_, _.modifiers, W, Te, cr); + } + function Fi(_, W) { + var Te = ue(181); + return Te.exprName = _, Te.typeArguments = W && y().parenthesizeTypeArguments(W), Te.transformFlags = 1, Te; + } + function ui(_, W, Te) { + return _.exprName !== W || _.typeArguments !== Te ? A(Fi(W, Te), _) : _; + } + function Bt(_) { + var W = ue(182); + return W.members = ne(_), W.transformFlags = 1, W; + } + function wt(_, W) { + return _.members !== W ? A(Bt(W), _) : _; + } + function na(_) { + var W = ue(183); + return W.elementType = y().parenthesizeNonArrayTypeOfPostfixType(_), W.transformFlags = 1, W; + } + function Ai(_, W) { + return _.elementType !== W ? A(na(W), _) : _; + } + function Oi(_) { + var W = ue(184); + return W.elements = ne(y().parenthesizeElementTypesOfTupleType(_)), W.transformFlags = 1, W; + } + function ji(_, W) { + return _.elements !== W ? A(Oi(W), _) : _; + } + function Vi(_, W, Te, cr) { + var ni = ue(197); + return ni.dotDotDotToken = _, ni.name = W, ni.questionToken = Te, ni.type = cr, ni.transformFlags = 1, ni; + } + function at(_, W, Te, cr, ni) { + return _.dotDotDotToken !== W || _.name !== Te || _.questionToken !== cr || _.type !== ni ? A(Vi(W, Te, cr, ni), _) : _; + } + function At(_) { + var W = ue(185); + return W.type = y().parenthesizeTypeOfOptionalType(_), W.transformFlags = 1, W; + } + function ba(_, W) { + return _.type !== W ? A(At(W), _) : _; + } + function $a(_) { + var W = ue(186); + return W.type = _, W.transformFlags = 1, W; + } + function Qa(_, W) { + return _.type !== W ? A($a(W), _) : _; + } + function ai(_, W, Te) { + var cr = ue(_); + return cr.types = g.createNodeArray(Te(W)), cr.transformFlags = 1, cr; + } + function Dn(_, W, Te) { + return _.types !== W ? A(ai(_.kind, W, Te), _) : _; + } + function ka(_) { + return ai(187, _, y().parenthesizeConstituentTypesOfUnionType); + } + function Ba(_, W) { + return Dn(_, W, y().parenthesizeConstituentTypesOfUnionType); + } + function pn(_) { + return ai(188, _, y().parenthesizeConstituentTypesOfIntersectionType); + } + function Cn(_, W) { + return Dn(_, W, y().parenthesizeConstituentTypesOfIntersectionType); + } + function Bi(_, W, Te, cr) { + var ni = ue(189); + return ni.checkType = y().parenthesizeCheckTypeOfConditionalType(_), ni.extendsType = y().parenthesizeExtendsTypeOfConditionalType(W), ni.trueType = Te, ni.falseType = cr, ni.transformFlags = 1, ni; + } + function kn(_, W, Te, cr, ni) { + return _.checkType !== W || _.extendsType !== Te || _.trueType !== cr || _.falseType !== ni ? A(Bi(W, Te, cr, ni), _) : _; + } + function xn(_) { + var W = ue(190); + return W.typeParameter = _, W.transformFlags = 1, W; + } + function Kn(_, W) { + return _.typeParameter !== W ? A(xn(W), _) : _; + } + function Pn(_, W) { + var Te = ue(198); + return Te.head = _, Te.templateSpans = ne(W), Te.transformFlags = 1, Te; + } + function eo(_, W, Te) { + return _.head !== W || _.templateSpans !== Te ? A(Pn(W, Te), _) : _; + } + function Rn(_, W, Te, cr, ni) { + var rt = W && W.kind === 295 ? W : void 0, yt = W && e.isEntityName(W) ? W : Te && !e.isArray(Te) ? Te : void 0, Xa = e.isArray(Te) ? Te : e.isArray(cr) ? cr : void 0; + ni = typeof cr == "boolean" ? cr : typeof ni == "boolean" ? ni : false; + var vo = ue(200); + return vo.argument = _, vo.assertions = rt, vo.qualifier = yt, vo.typeArguments = Xa && y().parenthesizeTypeArguments(Xa), vo.isTypeOf = ni, vo.transformFlags = 1, vo; + } + function Da(_, W, Te, cr, ni, rt) { + var yt = Te && Te.kind === 295 ? Te : void 0, Xa = Te && e.isEntityName(Te) ? Te : cr && !e.isArray(cr) ? cr : void 0, vo = e.isArray(cr) ? cr : e.isArray(ni) ? ni : void 0; + return rt = typeof ni == "boolean" ? ni : typeof rt == "boolean" ? rt : _.isTypeOf, _.argument !== W || _.assertions !== yt || _.qualifier !== Xa || _.typeArguments !== vo || _.isTypeOf !== rt ? A(Rn(W, yt, Xa, vo, rt), _) : _; + } + function bo(_) { + var W = ue(191); + return W.type = _, W.transformFlags = 1, W; + } + function Ro(_, W) { + return _.type !== W ? A(bo(W), _) : _; + } + function En() { + var _ = ue(192); + return _.transformFlags = 1, _; + } + function Wn(_, W) { + var Te = ue(193); + return Te.operator = _, Te.type = _ === 145 ? y().parenthesizeOperandOfReadonlyTypeOperator(W) : y().parenthesizeOperandOfTypeOperator(W), Te.transformFlags = 1, Te; + } + function to(_, W) { + return _.type !== W ? A(Wn(_.operator, W), _) : _; + } + function Co(_, W) { + var Te = ue(194); + return Te.objectType = y().parenthesizeNonArrayTypeOfPostfixType(_), Te.indexType = W, Te.transformFlags = 1, Te; + } + function Ko(_, W, Te) { + return _.objectType !== W || _.indexType !== Te ? A(Co(W, Te), _) : _; + } + function Oo(_, W, Te, cr, ni, rt) { + var yt = ue(195); + return yt.readonlyToken = _, yt.typeParameter = W, yt.nameType = Te, yt.questionToken = cr, yt.type = ni, yt.members = rt && ne(rt), yt.transformFlags = 1, yt; + } + function no(_, W, Te, cr, ni, rt, yt) { + return _.readonlyToken !== W || _.typeParameter !== Te || _.nameType !== cr || _.questionToken !== ni || _.type !== rt || _.members !== yt ? A(Oo(W, Te, cr, ni, rt, yt), _) : _; + } + function $o(_) { + var W = ue(196); + return W.literal = _, W.transformFlags = 1, W; + } + function Pr(_, W) { + return _.literal !== W ? A($o(W), _) : _; + } + function xi(_) { + var W = ue(201); + return W.elements = ne(_), W.transformFlags |= f(W.elements) | 1024 | 262144, W.transformFlags & 16384 && (W.transformFlags |= 32896), W; + } + function St(_, W) { + return _.elements !== W ? A(xi(W), _) : _; + } + function pa(_) { + var W = ue(202); + return W.elements = ne(_), W.transformFlags |= f(W.elements) | 1024 | 262144, W; + } + function dn(_, W) { + return _.elements !== W ? A(pa(W), _) : _; + } + function Jn(_, W, Te, cr) { + var ni = rr(203, void 0, void 0, Te, cr && y().parenthesizeExpressionForDisallowedComma(cr)); + return ni.propertyName = Mc(W), ni.dotDotDotToken = _, ni.transformFlags |= oe(ni.dotDotDotToken) | 1024, ni.propertyName && (ni.transformFlags |= e.isIdentifier(ni.propertyName) ? m(ni.propertyName) : oe(ni.propertyName)), _ && (ni.transformFlags |= 16384), ni; + } + function Qe(_, W, Te, cr, ni) { + return _.propertyName !== Te || _.dotDotDotToken !== W || _.name !== cr || _.initializer !== ni ? A(Jn(W, Te, cr, ni), _) : _; + } + function Gr(_) { + var W = ue(_); + return W; + } + function S(_, W) { + var Te = Gr(204), cr = _ && e.lastOrUndefined(_), ni = ne(_, cr && e.isOmittedExpression(cr) ? true : void 0); + return Te.elements = y().parenthesizeExpressionsOfCommaDelimitedList(ni), Te.multiLine = W, Te.transformFlags |= f(Te.elements), Te; + } + function Ce(_, W) { + return _.elements !== W ? A(S(W, _.multiLine), _) : _; + } + function qe(_, W) { + var Te = Gr(205); + return Te.properties = ne(_), Te.multiLine = W, Te.transformFlags |= f(Te.properties), Te; + } + function br(_, W) { + return _.properties !== W ? A(qe(W, _.multiLine), _) : _; + } + function Zr(_, W) { + var Te = Gr(206); + return Te.expression = y().parenthesizeLeftSideOfAccess(_), Te.name = Mc(W), Te.transformFlags = oe(Te.expression) | (e.isIdentifier(Te.name) ? m(Te.name) : oe(Te.name)), e.isSuperKeyword(_) && (Te.transformFlags |= 384), Te; + } + function Si(_, W, Te) { + return e.isPropertyAccessChain(_) ? Qi(_, W, _.questionDotToken, e.cast(Te, e.isIdentifier)) : _.expression !== W || _.name !== Te ? A(Zr(W, Te), _) : _; + } + function Pi(_, W, Te) { + var cr = Gr(206); + return cr.flags |= 32, cr.expression = y().parenthesizeLeftSideOfAccess(_), cr.questionDotToken = W, cr.name = Mc(Te), cr.transformFlags |= 32 | oe(cr.expression) | oe(cr.questionDotToken) | (e.isIdentifier(cr.name) ? m(cr.name) : oe(cr.name)), cr; + } + function Qi(_, W, Te, cr) { + return e.Debug.assert(!!(_.flags & 32), "Cannot update a PropertyAccessExpression using updatePropertyAccessChain. Use updatePropertyAccess instead."), _.expression !== W || _.questionDotToken !== Te || _.name !== cr ? A(Pi(W, Te, cr), _) : _; + } + function Ct(_, W) { + var Te = Gr(207); + return Te.expression = y().parenthesizeLeftSideOfAccess(_), Te.argumentExpression = Yu(W), Te.transformFlags |= oe(Te.expression) | oe(Te.argumentExpression), e.isSuperKeyword(_) && (Te.transformFlags |= 384), Te; + } + function sa(_, W, Te) { + return e.isElementAccessChain(_) ? Wa(_, W, _.questionDotToken, Te) : _.expression !== W || _.argumentExpression !== Te ? A(Ct(W, Te), _) : _; + } + function en(_, W, Te) { + var cr = Gr(207); + return cr.flags |= 32, cr.expression = y().parenthesizeLeftSideOfAccess(_), cr.questionDotToken = W, cr.argumentExpression = Yu(Te), cr.transformFlags |= oe(cr.expression) | oe(cr.questionDotToken) | oe(cr.argumentExpression) | 32, cr; + } + function Wa(_, W, Te, cr) { + return e.Debug.assert(!!(_.flags & 32), "Cannot update a ElementAccessExpression using updateElementAccessChain. Use updateElementAccess instead."), _.expression !== W || _.questionDotToken !== Te || _.argumentExpression !== cr ? A(en(W, Te, cr), _) : _; + } + function qn(_, W, Te) { + var cr = Gr(208); + return cr.expression = y().parenthesizeLeftSideOfAccess(_), cr.typeArguments = bc(W), cr.arguments = y().parenthesizeExpressionsOfCommaDelimitedList(ne(Te)), cr.transformFlags |= oe(cr.expression) | f(cr.typeArguments) | f(cr.arguments), cr.typeArguments && (cr.transformFlags |= 1), e.isImportKeyword(cr.expression) ? cr.transformFlags |= 4194304 : e.isSuperProperty(cr.expression) && (cr.transformFlags |= 8192), cr; + } + function mo(_, W, Te, cr) { + return e.isCallChain(_) ? Go(_, W, _.questionDotToken, Te, cr) : _.expression !== W || _.typeArguments !== Te || _.arguments !== cr ? A(qn(W, Te, cr), _) : _; + } + function So(_, W, Te, cr) { + var ni = Gr(208); + return ni.flags |= 32, ni.expression = y().parenthesizeLeftSideOfAccess(_), ni.questionDotToken = W, ni.typeArguments = bc(Te), ni.arguments = y().parenthesizeExpressionsOfCommaDelimitedList(ne(cr)), ni.transformFlags |= oe(ni.expression) | oe(ni.questionDotToken) | f(ni.typeArguments) | f(ni.arguments) | 32, ni.typeArguments && (ni.transformFlags |= 1), e.isSuperProperty(ni.expression) && (ni.transformFlags |= 8192), ni; + } + function Go(_, W, Te, cr, ni) { + return e.Debug.assert(!!(_.flags & 32), "Cannot update a CallExpression using updateCallChain. Use updateCall instead."), _.expression !== W || _.questionDotToken !== Te || _.typeArguments !== cr || _.arguments !== ni ? A(So(W, Te, cr, ni), _) : _; + } + function ys(_, W, Te) { + var cr = Gr(209); + return cr.expression = y().parenthesizeExpressionOfNew(_), cr.typeArguments = bc(W), cr.arguments = Te ? y().parenthesizeExpressionsOfCommaDelimitedList(Te) : void 0, cr.transformFlags |= oe(cr.expression) | f(cr.typeArguments) | f(cr.arguments) | 32, cr.typeArguments && (cr.transformFlags |= 1), cr; + } + function Pc(_, W, Te, cr) { + return _.expression !== W || _.typeArguments !== Te || _.arguments !== cr ? A(ys(W, Te, cr), _) : _; + } + function Vc(_, W, Te) { + var cr = Gr(210); + return cr.tag = y().parenthesizeLeftSideOfAccess(_), cr.typeArguments = bc(W), cr.template = Te, cr.transformFlags |= oe(cr.tag) | f(cr.typeArguments) | oe(cr.template) | 1024, cr.typeArguments && (cr.transformFlags |= 1), e.hasInvalidEscape(cr.template) && (cr.transformFlags |= 128), cr; + } + function Kc(_, W, Te, cr) { + return _.tag !== W || _.typeArguments !== Te || _.template !== cr ? A(Vc(W, Te, cr), _) : _; + } + function Xs(_, W) { + var Te = Gr(211); + return Te.expression = y().parenthesizeOperandOfPrefixUnary(W), Te.type = _, Te.transformFlags |= oe(Te.expression) | oe(Te.type) | 1, Te; + } + function pc(_, W, Te) { + return _.type !== W || _.expression !== Te ? A(Xs(W, Te), _) : _; + } + function hs(_) { + var W = Gr(212); + return W.expression = _, W.transformFlags = oe(W.expression), W; + } + function tc(_, W) { + return _.expression !== W ? A(hs(W), _) : _; + } + function ps(_, W, Te, cr, ni, rt, yt) { + var Xa = Re(213, void 0, _, Te, cr, ni, rt, yt); + return Xa.asteriskToken = W, Xa.transformFlags |= oe(Xa.asteriskToken), Xa.typeParameters && (Xa.transformFlags |= 1), e.modifiersToFlags(Xa.modifiers) & 256 ? Xa.asteriskToken ? Xa.transformFlags |= 128 : Xa.transformFlags |= 256 : Xa.asteriskToken && (Xa.transformFlags |= 2048), Xa; + } + function Qs(_, W, Te, cr, ni, rt, yt, Xa) { + return _.name !== cr || _.modifiers !== W || _.asteriskToken !== Te || _.typeParameters !== ni || _.parameters !== rt || _.type !== yt || _.body !== Xa ? ze(ps(W, Te, cr, ni, rt, yt, Xa), _) : _; + } + function js(_, W, Te, cr, ni, rt) { + var yt = Re(214, void 0, _, void 0, W, Te, cr, y().parenthesizeConciseBodyOfArrowFunction(rt)); + return yt.equalsGreaterThanToken = ni != null ? ni : Ir(38), yt.transformFlags |= oe(yt.equalsGreaterThanToken) | 1024, e.modifiersToFlags(yt.modifiers) & 256 && (yt.transformFlags |= 8448), yt; + } + function ds(_, W, Te, cr, ni, rt, yt) { + return _.modifiers !== W || _.typeParameters !== Te || _.parameters !== cr || _.type !== ni || _.equalsGreaterThanToken !== rt || _.body !== yt ? ze(js(W, Te, cr, ni, rt, yt), _) : _; + } + function Ji(_) { + var W = Gr(215); + return W.expression = y().parenthesizeOperandOfPrefixUnary(_), W.transformFlags |= oe(W.expression), W; + } + function ce(_, W) { + return _.expression !== W ? A(Ji(W), _) : _; + } + function Rr(_) { + var W = Gr(216); + return W.expression = y().parenthesizeOperandOfPrefixUnary(_), W.transformFlags |= oe(W.expression), W; + } + function yi(_, W) { + return _.expression !== W ? A(Rr(W), _) : _; + } + function qi(_) { + var W = Gr(217); + return W.expression = y().parenthesizeOperandOfPrefixUnary(_), W.transformFlags |= oe(W.expression), W; + } + function je(_, W) { + return _.expression !== W ? A(qi(W), _) : _; + } + function Hr(_) { + var W = Gr(218); + return W.expression = y().parenthesizeOperandOfPrefixUnary(_), W.transformFlags |= oe(W.expression) | 256 | 128 | 1048576, W; + } + function pt(_, W) { + return _.expression !== W ? A(Hr(W), _) : _; + } + function Pt(_, W) { + var Te = Gr(219); + return Te.operator = _, Te.operand = y().parenthesizeOperandOfPrefixUnary(W), Te.transformFlags |= oe(Te.operand), (_ === 45 || _ === 46) && e.isIdentifier(Te.operand) && !e.isGeneratedIdentifier(Te.operand) && !e.isLocalName(Te.operand) && (Te.transformFlags |= 67108864), Te; + } + function ga(_, W) { + return _.operand !== W ? A(Pt(_.operator, W), _) : _; + } + function ua(_, W) { + var Te = Gr(220); + return Te.operator = W, Te.operand = y().parenthesizeOperandOfPostfixUnary(_), Te.transformFlags |= oe(Te.operand), e.isIdentifier(Te.operand) && !e.isGeneratedIdentifier(Te.operand) && !e.isLocalName(Te.operand) && (Te.transformFlags |= 67108864), Te; + } + function Xn(_, W) { + return _.operand !== W ? A(ua(W, _.operator), _) : _; + } + function jr(_, W, Te) { + var cr = Gr(221), ni = Rl(W), rt = ni.kind; + return cr.left = y().parenthesizeLeftSideOfBinary(rt, _), cr.operatorToken = ni, cr.right = y().parenthesizeRightSideOfBinary(rt, cr.left, Te), cr.transformFlags |= oe(cr.left) | oe(cr.operatorToken) | oe(cr.right), rt === 60 ? cr.transformFlags |= 32 : rt === 63 ? e.isObjectLiteralExpression(cr.left) ? cr.transformFlags |= 5248 | fo(cr.left) : e.isArrayLiteralExpression(cr.left) && (cr.transformFlags |= 5120 | fo(cr.left)) : rt === 42 || rt === 67 ? cr.transformFlags |= 512 : e.isLogicalOrCoalescingAssignmentOperator(rt) && (cr.transformFlags |= 16), cr; + } + function fo(_) { + if (_.transformFlags & 32768) + return 32768; + if (_.transformFlags & 128) + for (var W = 0, Te = e.getElementsOfBindingOrAssignmentPattern(_); W < Te.length; W++) { + var cr = Te[W], ni = e.getTargetOfBindingOrAssignmentElement(cr); + if (ni && e.isAssignmentPattern(ni)) { + if (ni.transformFlags & 32768) + return 32768; + if (ni.transformFlags & 128) { + var rt = fo(ni); + if (rt) + return rt; + } + } + } + return 0; + } + function xs(_, W, Te, cr) { + return _.left !== W || _.operatorToken !== Te || _.right !== cr ? A(jr(W, Te, cr), _) : _; + } + function Fo(_, W, Te, cr, ni) { + var rt = Gr(222); + return rt.condition = y().parenthesizeConditionOfConditionalExpression(_), rt.questionToken = W != null ? W : Ir(57), rt.whenTrue = y().parenthesizeBranchOfConditionalExpression(Te), rt.colonToken = cr != null ? cr : Ir(58), rt.whenFalse = y().parenthesizeBranchOfConditionalExpression(ni), rt.transformFlags |= oe(rt.condition) | oe(rt.questionToken) | oe(rt.whenTrue) | oe(rt.colonToken) | oe(rt.whenFalse), rt; + } + function ko(_, W, Te, cr, ni, rt) { + return _.condition !== W || _.questionToken !== Te || _.whenTrue !== cr || _.colonToken !== ni || _.whenFalse !== rt ? A(Fo(W, Te, cr, ni, rt), _) : _; + } + function Ao(_, W) { + var Te = Gr(223); + return Te.head = _, Te.templateSpans = ne(W), Te.transformFlags |= oe(Te.head) | f(Te.templateSpans) | 1024, Te; + } + function Ms(_, W, Te) { + return _.head !== W || _.templateSpans !== Te ? A(Ao(W, Te), _) : _; + } + function Bs(_, W, Te, cr) { + cr === void 0 && (cr = 0), e.Debug.assert(!(cr & -2049), "Unsupported template flags."); + var ni = void 0; + if (Te !== void 0 && Te !== W && (ni = p(_, Te), typeof ni == "object")) + return e.Debug.fail("Invalid raw text"); + if (W === void 0) { + if (ni === void 0) + return e.Debug.fail("Arguments 'text' and 'rawText' may not both be undefined."); + W = ni; + } else + ni !== void 0 && e.Debug.assert(W === ni, "Expected argument 'text' to be the normalized (i.e. 'cooked') version of argument 'rawText'."); + return xc(_, W, Te, cr); + } + function xc(_, W, Te, cr) { + var ni = yr(_); + return ni.text = W, ni.rawText = Te, ni.templateFlags = cr & 2048, ni.transformFlags |= 1024, ni.templateFlags && (ni.transformFlags |= 128), ni; + } + function su(_, W, Te) { + return Bs(15, _, W, Te); + } + function tl(_, W, Te) { + return Bs(16, _, W, Te); + } + function Zc(_, W, Te) { + return Bs(17, _, W, Te); + } + function Rf(_, W, Te) { + return Bs(14, _, W, Te); + } + function al(_, W) { + e.Debug.assert(!_ || !!W, "A `YieldExpression` with an asteriskToken must have an expression."); + var Te = Gr(224); + return Te.expression = W && y().parenthesizeExpressionForDisallowedComma(W), Te.asteriskToken = _, Te.transformFlags |= oe(Te.expression) | oe(Te.asteriskToken) | 1024 | 128 | 524288, Te; + } + function Jo(_, W, Te) { + return _.expression !== Te || _.asteriskToken !== W ? A(al(W, Te), _) : _; + } + function eu(_) { + var W = Gr(225); + return W.expression = y().parenthesizeExpressionForDisallowedComma(_), W.transformFlags |= oe(W.expression) | 1024 | 16384, W; + } + function Ws(_, W) { + return _.expression !== W ? A(eu(W), _) : _; + } + function pu(_, W, Te, cr, ni, rt) { + var yt = He(226, _, W, Te, cr, ni, rt); + return yt.transformFlags |= 1024, yt; + } + function Uu(_, W, Te, cr, ni, rt, yt) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.typeParameters !== ni || _.heritageClauses !== rt || _.members !== yt ? A(pu(W, Te, cr, ni, rt, yt), _) : _; + } + function Ql() { + return Gr(227); + } + function xl(_, W) { + var Te = ue(228); + return Te.expression = y().parenthesizeLeftSideOfAccess(_), Te.typeArguments = W && y().parenthesizeTypeArguments(W), Te.transformFlags |= oe(Te.expression) | f(Te.typeArguments) | 1024, Te; + } + function Ya(_, W, Te) { + return _.expression !== W || _.typeArguments !== Te ? A(xl(W, Te), _) : _; + } + function du(_, W) { + var Te = Gr(229); + return Te.expression = _, Te.type = W, Te.transformFlags |= oe(Te.expression) | oe(Te.type) | 1, Te; + } + function vc(_, W, Te) { + return _.expression !== W || _.type !== Te ? A(du(W, Te), _) : _; + } + function Kr(_) { + var W = Gr(230); + return W.expression = y().parenthesizeLeftSideOfAccess(_), W.transformFlags |= oe(W.expression) | 1, W; + } + function _i(_, W) { + return e.isNonNullChain(_) ? tt(_, W) : _.expression !== W ? A(Kr(W), _) : _; + } + function Ei(_) { + var W = Gr(230); + return W.flags |= 32, W.expression = y().parenthesizeLeftSideOfAccess(_), W.transformFlags |= oe(W.expression) | 1, W; + } + function tt(_, W) { + return e.Debug.assert(!!(_.flags & 32), "Cannot update a NonNullExpression using updateNonNullChain. Use updateNonNullExpression instead."), _.expression !== W ? A(Ei(W), _) : _; + } + function kt(_, W) { + var Te = Gr(231); + switch (Te.keywordToken = _, Te.name = W, Te.transformFlags |= oe(Te.name), _) { + case 103: + Te.transformFlags |= 1024; + break; + case 100: + Te.transformFlags |= 4; + break; + default: + return e.Debug.assertNever(_); + } + return Te; + } + function bt(_, W) { + return _.name !== W ? A(kt(_.keywordToken, W), _) : _; + } + function ia(_, W) { + var Te = ue(233); + return Te.expression = _, Te.literal = W, Te.transformFlags |= oe(Te.expression) | oe(Te.literal) | 1024, Te; + } + function Xt(_, W, Te) { + return _.expression !== W || _.literal !== Te ? A(ia(W, Te), _) : _; + } + function Za() { + var _ = ue(234); + return _.transformFlags |= 1024, _; + } + function bn(_, W) { + var Te = ue(235); + return Te.statements = ne(_), Te.multiLine = W, Te.transformFlags |= f(Te.statements), Te; + } + function _a(_, W) { + return _.statements !== W ? A(bn(W, _.multiLine), _) : _; + } + function qa(_, W) { + var Te = We(237, void 0, _); + return Te.declarationList = e.isArray(W) ? Cl(W) : W, Te.transformFlags |= oe(Te.declarationList), e.modifiersToFlags(Te.modifiers) & 2 && (Te.transformFlags = 1), Te; + } + function rn(_, W, Te) { + return _.modifiers !== W || _.declarationList !== Te ? A(qa(W, Te), _) : _; + } + function jn() { + return ue(236); + } + function Mo(_) { + var W = ue(238); + return W.expression = y().parenthesizeExpressionOfExpressionStatement(_), W.transformFlags |= oe(W.expression), W; + } + function ho(_, W) { + return _.expression !== W ? A(Mo(W), _) : _; + } + function gs(_, W, Te) { + var cr = ue(239); + return cr.expression = _, cr.thenStatement = Lc(W), cr.elseStatement = Lc(Te), cr.transformFlags |= oe(cr.expression) | oe(cr.thenStatement) | oe(cr.elseStatement), cr; + } + function Se(_, W, Te, cr) { + return _.expression !== W || _.thenStatement !== Te || _.elseStatement !== cr ? A(gs(W, Te, cr), _) : _; + } + function hr(_, W) { + var Te = ue(240); + return Te.statement = Lc(_), Te.expression = W, Te.transformFlags |= oe(Te.statement) | oe(Te.expression), Te; + } + function Or(_, W, Te) { + return _.statement !== W || _.expression !== Te ? A(hr(W, Te), _) : _; + } + function ki(_, W) { + var Te = ue(241); + return Te.expression = _, Te.statement = Lc(W), Te.transformFlags |= oe(Te.expression) | oe(Te.statement), Te; + } + function dt(_, W, Te) { + return _.expression !== W || _.statement !== Te ? A(ki(W, Te), _) : _; + } + function la(_, W, Te, cr) { + var ni = ue(242); + return ni.initializer = _, ni.condition = W, ni.incrementor = Te, ni.statement = Lc(cr), ni.transformFlags |= oe(ni.initializer) | oe(ni.condition) | oe(ni.incrementor) | oe(ni.statement), ni; + } + function wa(_, W, Te, cr, ni) { + return _.initializer !== W || _.condition !== Te || _.incrementor !== cr || _.statement !== ni ? A(la(W, Te, cr, ni), _) : _; + } + function On(_, W, Te) { + var cr = ue(243); + return cr.initializer = _, cr.expression = W, cr.statement = Lc(Te), cr.transformFlags |= oe(cr.initializer) | oe(cr.expression) | oe(cr.statement), cr; + } + function No(_, W, Te, cr) { + return _.initializer !== W || _.expression !== Te || _.statement !== cr ? A(On(W, Te, cr), _) : _; + } + function jo(_, W, Te, cr) { + var ni = ue(244); + return ni.awaitModifier = _, ni.initializer = W, ni.expression = y().parenthesizeExpressionForDisallowedComma(Te), ni.statement = Lc(cr), ni.transformFlags |= oe(ni.awaitModifier) | oe(ni.initializer) | oe(ni.expression) | oe(ni.statement) | 1024, _ && (ni.transformFlags |= 128), ni; + } + function po(_, W, Te, cr, ni) { + return _.awaitModifier !== W || _.initializer !== Te || _.expression !== cr || _.statement !== ni ? A(jo(W, Te, cr, ni), _) : _; + } + function Gn(_) { + var W = ue(245); + return W.label = Mc(_), W.transformFlags |= oe(W.label) | 2097152, W; + } + function $n(_, W) { + return _.label !== W ? A(Gn(W), _) : _; + } + function Ho(_) { + var W = ue(246); + return W.label = Mc(_), W.transformFlags |= oe(W.label) | 2097152, W; + } + function Zo(_, W) { + return _.label !== W ? A(Ho(W), _) : _; + } + function Es(_) { + var W = ue(247); + return W.expression = _, W.transformFlags |= oe(W.expression) | 128 | 2097152, W; + } + function yc(_, W) { + return _.expression !== W ? A(Es(W), _) : _; + } + function Xr(_, W) { + var Te = ue(248); + return Te.expression = _, Te.statement = Lc(W), Te.transformFlags |= oe(Te.expression) | oe(Te.statement), Te; + } + function Ls(_, W, Te) { + return _.expression !== W || _.statement !== Te ? A(Xr(W, Te), _) : _; + } + function Ic(_, W) { + var Te = ue(249); + return Te.expression = y().parenthesizeExpressionForDisallowedComma(_), Te.caseBlock = W, Te.transformFlags |= oe(Te.expression) | oe(Te.caseBlock), Te; + } + function zu(_, W, Te) { + return _.expression !== W || _.caseBlock !== Te ? A(Ic(W, Te), _) : _; + } + function vf(_, W) { + var Te = ue(250); + return Te.label = Mc(_), Te.statement = Lc(W), Te.transformFlags |= oe(Te.label) | oe(Te.statement), Te; + } + function P_(_, W, Te) { + return _.label !== W || _.statement !== Te ? A(vf(W, Te), _) : _; + } + function El(_) { + var W = ue(251); + return W.expression = _, W.transformFlags |= oe(W.expression), W; + } + function vp(_, W) { + return _.expression !== W ? A(El(W), _) : _; + } + function oo(_, W, Te) { + var cr = ue(252); + return cr.tryBlock = _, cr.catchClause = W, cr.finallyBlock = Te, cr.transformFlags |= oe(cr.tryBlock) | oe(cr.catchClause) | oe(cr.finallyBlock), cr; + } + function I_(_, W, Te, cr) { + return _.tryBlock !== W || _.catchClause !== Te || _.finallyBlock !== cr ? A(oo(W, Te, cr), _) : _; + } + function yp() { + return ue(253); + } + function Yl(_, W, Te, cr) { + var ni = Ie(254, void 0, void 0, _, Te, cr && y().parenthesizeExpressionForDisallowedComma(cr)); + return ni.exclamationToken = W, ni.transformFlags |= oe(ni.exclamationToken), W && (ni.transformFlags |= 1), ni; + } + function Bf(_, W, Te, cr, ni) { + return _.name !== W || _.type !== cr || _.exclamationToken !== Te || _.initializer !== ni ? A(Yl(W, Te, cr, ni), _) : _; + } + function Cl(_, W) { + W === void 0 && (W = 0); + var Te = ue(255); + return Te.flags |= W & 3, Te.declarations = ne(_), Te.transformFlags |= f(Te.declarations) | 2097152, W & 3 && (Te.transformFlags |= 132096), Te; + } + function c_(_, W) { + return _.declarations !== W ? A(Cl(W, _.flags), _) : _; + } + function hp(_, W, Te, cr, ni, rt, yt, Xa) { + var vo = Re(256, _, W, cr, ni, rt, yt, Xa); + return vo.asteriskToken = Te, !vo.body || e.modifiersToFlags(vo.modifiers) & 2 ? vo.transformFlags = 1 : (vo.transformFlags |= oe(vo.asteriskToken) | 2097152, e.modifiersToFlags(vo.modifiers) & 256 ? vo.asteriskToken ? vo.transformFlags |= 128 : vo.transformFlags |= 256 : vo.asteriskToken && (vo.transformFlags |= 2048)), vo; + } + function gu(_, W, Te, cr, ni, rt, yt, Xa, vo) { + return _.decorators !== W || _.modifiers !== Te || _.asteriskToken !== cr || _.name !== ni || _.typeParameters !== rt || _.parameters !== yt || _.type !== Xa || _.body !== vo ? ze(hp(W, Te, cr, ni, rt, yt, Xa, vo), _) : _; + } + function Dp(_, W, Te, cr, ni, rt) { + var yt = He(257, _, W, Te, cr, ni, rt); + return e.modifiersToFlags(yt.modifiers) & 2 ? yt.transformFlags = 1 : (yt.transformFlags |= 1024, yt.transformFlags & 4096 && (yt.transformFlags |= 1)), yt; + } + function sd(_, W, Te, cr, ni, rt, yt) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.typeParameters !== ni || _.heritageClauses !== rt || _.members !== yt ? A(Dp(W, Te, cr, ni, rt, yt), _) : _; + } + function Aa(_, W, Te, cr, ni, rt) { + var yt = Ee(258, _, W, Te, cr, ni); + return yt.members = ne(rt), yt.transformFlags = 1, yt; + } + function va(_, W, Te, cr, ni, rt, yt) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.typeParameters !== ni || _.heritageClauses !== rt || _.members !== yt ? A(Aa(W, Te, cr, ni, rt, yt), _) : _; + } + function Cu(_, W, Te, cr, ni) { + var rt = Z(259, _, W, Te, cr); + return rt.type = ni, rt.transformFlags = 1, rt; + } + function qs(_, W, Te, cr, ni, rt) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.typeParameters !== ni || _.type !== rt ? A(Cu(W, Te, cr, ni, rt), _) : _; + } + function cd(_, W, Te, cr) { + var ni = Fe(260, _, W, Te); + return ni.members = ne(cr), ni.transformFlags |= f(ni.members) | 1, ni.transformFlags &= -16777217, ni; + } + function ns(_, W, Te, cr, ni) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.members !== ni ? A(cd(W, Te, cr, ni), _) : _; + } + function nl(_, W, Te, cr, ni) { + ni === void 0 && (ni = 0); + var rt = We(261, _, W); + return rt.flags |= ni & 1044, rt.name = Te, rt.body = cr, e.modifiersToFlags(rt.modifiers) & 2 ? rt.transformFlags = 1 : rt.transformFlags |= oe(rt.name) | oe(rt.body) | 1, rt.transformFlags &= -16777217, rt; + } + function hc(_, W, Te, cr, ni) { + return _.decorators !== W || _.modifiers !== Te || _.name !== cr || _.body !== ni ? A(nl(W, Te, cr, ni, _.flags), _) : _; + } + function es(_) { + var W = ue(262); + return W.statements = ne(_), W.transformFlags |= f(W.statements), W; + } + function u_(_, W) { + return _.statements !== W ? A(es(W), _) : _; + } + function Jf(_) { + var W = ue(263); + return W.clauses = ne(_), W.transformFlags |= f(W.clauses), W; + } + function w_(_, W) { + return _.clauses !== W ? A(Jf(W), _) : _; + } + function ud(_) { + var W = Fe(264, void 0, void 0, _); + return W.transformFlags = 1, W; + } + function ku(_, W) { + return _.name !== W ? A(ud(W), _) : _; + } + function ld(_, W, Te, cr, ni) { + var rt = Fe(265, _, W, cr); + return rt.isTypeOnly = Te, rt.moduleReference = ni, rt.transformFlags |= oe(rt.moduleReference), e.isExternalModuleReference(rt.moduleReference) || (rt.transformFlags |= 1), rt.transformFlags &= -16777217, rt; + } + function fd(_, W, Te, cr, ni, rt) { + return _.decorators !== W || _.modifiers !== Te || _.isTypeOnly !== cr || _.name !== ni || _.moduleReference !== rt ? A(ld(W, Te, cr, ni, rt), _) : _; + } + function bp(_, W, Te, cr, ni) { + var rt = We(266, _, W); + return rt.importClause = Te, rt.moduleSpecifier = cr, rt.assertClause = ni, rt.transformFlags |= oe(rt.importClause) | oe(rt.moduleSpecifier), rt.transformFlags &= -16777217, rt; + } + function Sp(_, W, Te, cr, ni, rt) { + return _.decorators !== W || _.modifiers !== Te || _.importClause !== cr || _.moduleSpecifier !== ni || _.assertClause !== rt ? A(bp(W, Te, cr, ni, rt), _) : _; + } + function Tp(_, W, Te) { + var cr = ue(267); + return cr.isTypeOnly = _, cr.name = W, cr.namedBindings = Te, cr.transformFlags |= oe(cr.name) | oe(cr.namedBindings), _ && (cr.transformFlags |= 1), cr.transformFlags &= -16777217, cr; + } + function _d(_, W, Te, cr) { + return _.isTypeOnly !== W || _.name !== Te || _.namedBindings !== cr ? A(Tp(W, Te, cr), _) : _; + } + function jf(_, W) { + var Te = ue(293); + return Te.elements = ne(_), Te.multiLine = W, Te.transformFlags |= 4, Te; + } + function O_(_, W, Te) { + return _.elements !== W || _.multiLine !== Te ? A(jf(W, Te), _) : _; + } + function F_(_, W) { + var Te = ue(294); + return Te.name = _, Te.value = W, Te.transformFlags |= 4, Te; + } + function pd(_, W, Te) { + return _.name !== W || _.value !== Te ? A(F_(W, Te), _) : _; + } + function xp(_, W) { + var Te = ue(295); + return Te.assertClause = _, Te.multiLine = W, Te; + } + function M_(_, W, Te) { + return _.assertClause !== W || _.multiLine !== Te ? A(xp(W, Te), _) : _; + } + function Ep(_) { + var W = ue(268); + return W.name = _, W.transformFlags |= oe(W.name), W.transformFlags &= -16777217, W; + } + function ol(_, W) { + return _.name !== W ? A(Ep(W), _) : _; + } + function Au(_) { + var W = ue(274); + return W.name = _, W.transformFlags |= oe(W.name) | 4, W.transformFlags &= -16777217, W; + } + function ru(_, W) { + return _.name !== W ? A(Au(W), _) : _; + } + function yf(_) { + var W = ue(269); + return W.elements = ne(_), W.transformFlags |= f(W.elements), W.transformFlags &= -16777217, W; + } + function Cp(_, W) { + return _.elements !== W ? A(yf(W), _) : _; + } + function dd(_, W, Te) { + var cr = ue(270); + return cr.isTypeOnly = _, cr.propertyName = W, cr.name = Te, cr.transformFlags |= oe(cr.propertyName) | oe(cr.name), cr.transformFlags &= -16777217, cr; + } + function kp(_, W, Te, cr) { + return _.isTypeOnly !== W || _.propertyName !== Te || _.name !== cr ? A(dd(W, Te, cr), _) : _; + } + function mu(_, W, Te, cr) { + var ni = We(271, _, W); + return ni.isExportEquals = Te, ni.expression = Te ? y().parenthesizeRightSideOfBinary(63, void 0, cr) : y().parenthesizeExpressionOfExportDefault(cr), ni.transformFlags |= oe(ni.expression), ni.transformFlags &= -16777217, ni; + } + function gd(_, W, Te, cr) { + return _.decorators !== W || _.modifiers !== Te || _.expression !== cr ? A(mu(W, Te, _.isExportEquals, cr), _) : _; + } + function hf(_, W, Te, cr, ni, rt) { + var yt = We(272, _, W); + return yt.isTypeOnly = Te, yt.exportClause = cr, yt.moduleSpecifier = ni, yt.assertClause = rt, yt.transformFlags |= oe(yt.exportClause) | oe(yt.moduleSpecifier), yt.transformFlags &= -16777217, yt; + } + function $l(_, W, Te, cr, ni, rt, yt) { + return _.decorators !== W || _.modifiers !== Te || _.isTypeOnly !== cr || _.exportClause !== ni || _.moduleSpecifier !== rt || _.assertClause !== yt ? A(hf(W, Te, cr, ni, rt, yt), _) : _; + } + function Uf(_) { + var W = ue(273); + return W.elements = ne(_), W.transformFlags |= f(W.elements), W.transformFlags &= -16777217, W; + } + function L_(_, W) { + return _.elements !== W ? A(Uf(W), _) : _; + } + function l_(_, W, Te) { + var cr = ue(275); + return cr.isTypeOnly = _, cr.propertyName = Mc(W), cr.name = Mc(Te), cr.transformFlags |= oe(cr.propertyName) | oe(cr.name), cr.transformFlags &= -16777217, cr; + } + function f_(_, W, Te, cr) { + return _.isTypeOnly !== W || _.propertyName !== Te || _.name !== cr ? A(l_(W, Te, cr), _) : _; + } + function md() { + var _ = We(276, void 0, void 0); + return _; + } + function ks(_) { + var W = ue(277); + return W.expression = _, W.transformFlags |= oe(W.expression), W.transformFlags &= -16777217, W; + } + function Wu(_, W) { + return _.expression !== W ? A(ks(W), _) : _; + } + function Zl(_) { + return ue(_); + } + function R_(_, W, Te) { + Te === void 0 && (Te = false); + var cr = kl(_, Te ? W && y().parenthesizeNonArrayTypeOfPostfixType(W) : W); + return cr.postfix = Te, cr; + } + function kl(_, W) { + var Te = ue(_); + return Te.type = W, Te; + } + function __(_, W, Te) { + return W.type !== Te ? A(R_(_, Te, W.postfix), W) : W; + } + function zd(_, W, Te) { + return W.type !== Te ? A(kl(_, Te), W) : W; + } + function Al(_, W) { + var Te = Be(317, void 0, void 0, void 0, void 0, _, W); + return Te; + } + function wc(_, W, Te) { + return _.parameters !== W || _.type !== Te ? A(Al(W, Te), _) : _; + } + function qu(_, W) { + W === void 0 && (W = false); + var Te = ue(322); + return Te.jsDocPropertyTags = bc(_), Te.isArrayType = W, Te; + } + function Vu(_, W, Te) { + return _.jsDocPropertyTags !== W || _.isArrayType !== Te ? A(qu(W, Te), _) : _; + } + function ef(_) { + var W = ue(309); + return W.type = _, W; + } + function sl(_, W) { + return _.type !== W ? A(ef(W), _) : _; + } + function p_(_, W, Te) { + var cr = ue(323); + return cr.typeParameters = bc(_), cr.parameters = ne(W), cr.type = Te, cr; + } + function Df(_, W, Te, cr) { + return _.typeParameters !== W || _.parameters !== Te || _.type !== cr ? A(p_(W, Te, cr), _) : _; + } + function Ec(_) { + var W = Q(_.kind); + return _.tagName.escapedText === e.escapeLeadingUnderscores(W) ? _.tagName : Er(W); + } + function Zn(_, W, Te) { + var cr = ue(_); + return cr.tagName = W, cr.comment = Te, cr; + } + function os(_, W, Te, cr) { + var ni = Zn(344, _ != null ? _ : Er("template"), cr); + return ni.constraint = W, ni.typeParameters = ne(Te), ni; + } + function Ps(_, W, Te, cr, ni) { + return W === void 0 && (W = Ec(_)), _.tagName !== W || _.constraint !== Te || _.typeParameters !== cr || _.comment !== ni ? A(os(W, Te, cr, ni), _) : _; + } + function d_(_, W, Te, cr) { + var ni = Zn(345, _ != null ? _ : Er("typedef"), cr); + return ni.typeExpression = W, ni.fullName = Te, ni.name = e.getJSDocTypeAliasName(Te), ni; + } + function Gc(_, W, Te, cr, ni) { + return W === void 0 && (W = Ec(_)), _.tagName !== W || _.typeExpression !== Te || _.fullName !== cr || _.comment !== ni ? A(d_(W, Te, cr, ni), _) : _; + } + function B_(_, W, Te, cr, ni, rt) { + var yt = Zn(340, _ != null ? _ : Er("param"), rt); + return yt.typeExpression = cr, yt.name = W, yt.isNameFirst = !!ni, yt.isBracketed = Te, yt; + } + function vu(_, W, Te, cr, ni, rt, yt) { + return W === void 0 && (W = Ec(_)), _.tagName !== W || _.name !== Te || _.isBracketed !== cr || _.typeExpression !== ni || _.isNameFirst !== rt || _.comment !== yt ? A(B_(W, Te, cr, ni, rt, yt), _) : _; + } + function Gt(_, W, Te, cr, ni, rt) { + var yt = Zn(347, _ != null ? _ : Er("prop"), rt); + return yt.typeExpression = cr, yt.name = W, yt.isNameFirst = !!ni, yt.isBracketed = Te, yt; + } + function As(_, W, Te, cr, ni, rt, yt) { + return W === void 0 && (W = Ec(_)), _.tagName !== W || _.name !== Te || _.isBracketed !== cr || _.typeExpression !== ni || _.isNameFirst !== rt || _.comment !== yt ? A(Gt(W, Te, cr, ni, rt, yt), _) : _; + } + function vn(_, W, Te, cr) { + var ni = Zn(338, _ != null ? _ : Er("callback"), cr); + return ni.typeExpression = W, ni.fullName = Te, ni.name = e.getJSDocTypeAliasName(Te), ni; + } + function Nl(_, W, Te, cr, ni) { + return W === void 0 && (W = Ec(_)), _.tagName !== W || _.typeExpression !== Te || _.fullName !== cr || _.comment !== ni ? A(vn(W, Te, cr, ni), _) : _; + } + function cl(_, W, Te) { + var cr = Zn(328, _ != null ? _ : Er("augments"), Te); + return cr.class = W, cr; + } + function rf(_, W, Te, cr) { + return W === void 0 && (W = Ec(_)), _.tagName !== W || _.class !== Te || _.comment !== cr ? A(cl(W, Te, cr), _) : _; + } + function Ut(_, W, Te) { + var cr = Zn(329, _ != null ? _ : Er("implements"), Te); + return cr.class = W, cr; + } + function Ds(_, W, Te) { + var cr = Zn(346, _ != null ? _ : Er("see"), Te); + return cr.name = W, cr; + } + function bf(_, W, Te, cr) { + return _.tagName !== W || _.name !== Te || _.comment !== cr ? A(Ds(W, Te, cr), _) : _; + } + function bs(_) { + var W = ue(310); + return W.name = _, W; + } + function Dc(_, W) { + return _.name !== W ? A(bs(W), _) : _; + } + function Cc(_, W) { + var Te = ue(311); + return Te.left = _, Te.right = W, Te.transformFlags |= oe(Te.left) | oe(Te.right), Te; + } + function ac(_, W, Te) { + return _.left !== W || _.right !== Te ? A(Cc(W, Te), _) : _; + } + function Pl(_, W) { + var Te = ue(324); + return Te.name = _, Te.text = W, Te; + } + function Il(_, W, Te) { + return _.name !== W ? A(Pl(W, Te), _) : _; + } + function zf(_, W) { + var Te = ue(325); + return Te.name = _, Te.text = W, Te; + } + function ul(_, W, Te) { + return _.name !== W ? A(zf(W, Te), _) : _; + } + function Nu(_, W) { + var Te = ue(326); + return Te.name = _, Te.text = W, Te; + } + function Us(_, W, Te) { + return _.name !== W ? A(Nu(W, Te), _) : _; + } + function Ap(_, W, Te, cr) { + return W === void 0 && (W = Ec(_)), _.tagName !== W || _.class !== Te || _.comment !== cr ? A(Ut(W, Te, cr), _) : _; + } + function Wf(_, W, Te) { + var cr = Zn(_, W != null ? W : Er(Q(_)), Te); + return cr; + } + function Sf(_, W, Te, cr) { + return Te === void 0 && (Te = Ec(W)), W.tagName !== Te || W.comment !== cr ? A(Wf(_, Te, cr), W) : W; + } + function ll(_, W, Te, cr) { + var ni = Zn(_, W != null ? W : Er(Q(_)), cr); + return ni.typeExpression = Te, ni; + } + function J_(_, W, Te, cr, ni) { + return Te === void 0 && (Te = Ec(W)), W.tagName !== Te || W.typeExpression !== cr || W.comment !== ni ? A(ll(_, Te, cr, ni), W) : W; + } + function j_(_, W) { + var Te = Zn(327, _, W); + return Te; + } + function U_(_, W, Te) { + return _.tagName !== W || _.comment !== Te ? A(j_(W, Te), _) : _; + } + function iu(_) { + var W = ue(321); + return W.text = _, W; + } + function vd(_, W) { + return _.text !== W ? A(iu(W), _) : _; + } + function qf(_, W) { + var Te = ue(320); + return Te.comment = _, Te.tags = bc(W), Te; + } + function dc(_, W, Te) { + return _.comment !== W || _.tags !== Te ? A(qf(W, Te), _) : _; + } + function Pu(_, W, Te) { + var cr = ue(278); + return cr.openingElement = _, cr.children = ne(W), cr.closingElement = Te, cr.transformFlags |= oe(cr.openingElement) | f(cr.children) | oe(cr.closingElement) | 2, cr; + } + function wl(_, W, Te, cr) { + return _.openingElement !== W || _.children !== Te || _.closingElement !== cr ? A(Pu(W, Te, cr), _) : _; + } + function Iu(_, W, Te) { + var cr = ue(279); + return cr.tagName = _, cr.typeArguments = bc(W), cr.attributes = Te, cr.transformFlags |= oe(cr.tagName) | f(cr.typeArguments) | oe(cr.attributes) | 2, cr.typeArguments && (cr.transformFlags |= 1), cr; + } + function so(_, W, Te, cr) { + return _.tagName !== W || _.typeArguments !== Te || _.attributes !== cr ? A(Iu(W, Te, cr), _) : _; + } + function Et(_, W, Te) { + var cr = ue(280); + return cr.tagName = _, cr.typeArguments = bc(W), cr.attributes = Te, cr.transformFlags |= oe(cr.tagName) | f(cr.typeArguments) | oe(cr.attributes) | 2, W && (cr.transformFlags |= 1), cr; + } + function Ys(_, W, Te, cr) { + return _.tagName !== W || _.typeArguments !== Te || _.attributes !== cr ? A(Et(W, Te, cr), _) : _; + } + function Ku(_) { + var W = ue(281); + return W.tagName = _, W.transformFlags |= oe(W.tagName) | 2, W; + } + function Np(_, W) { + return _.tagName !== W ? A(Ku(W), _) : _; + } + function Pp(_, W, Te) { + var cr = ue(282); + return cr.openingFragment = _, cr.children = ne(W), cr.closingFragment = Te, cr.transformFlags |= oe(cr.openingFragment) | f(cr.children) | oe(cr.closingFragment) | 2, cr; + } + function nc(_, W, Te, cr) { + return _.openingFragment !== W || _.children !== Te || _.closingFragment !== cr ? A(Pp(W, Te, cr), _) : _; + } + function fl(_, W) { + var Te = ue(11); + return Te.text = _, Te.containsOnlyTriviaWhiteSpaces = !!W, Te.transformFlags |= 2, Te; + } + function _l(_, W, Te) { + return _.text !== W || _.containsOnlyTriviaWhiteSpaces !== Te ? A(fl(W, Te), _) : _; + } + function cu() { + var _ = ue(283); + return _.transformFlags |= 2, _; + } + function gc() { + var _ = ue(284); + return _.transformFlags |= 2, _; + } + function Tf(_, W) { + var Te = ue(285); + return Te.name = _, Te.initializer = W, Te.transformFlags |= oe(Te.name) | oe(Te.initializer) | 2, Te; + } + function mc(_, W, Te) { + return _.name !== W || _.initializer !== Te ? A(Tf(W, Te), _) : _; + } + function Ip(_) { + var W = ue(286); + return W.properties = ne(_), W.transformFlags |= f(W.properties) | 2, W; + } + function ms(_, W) { + return _.properties !== W ? A(Ip(W), _) : _; + } + function tu(_) { + var W = ue(287); + return W.expression = _, W.transformFlags |= oe(W.expression) | 2, W; + } + function wp(_, W) { + return _.expression !== W ? A(tu(W), _) : _; + } + function Hc(_, W) { + var Te = ue(288); + return Te.dotDotDotToken = _, Te.expression = W, Te.transformFlags |= oe(Te.dotDotDotToken) | oe(Te.expression) | 2, Te; + } + function Ol(_, W) { + return _.expression !== W ? A(Hc(_.dotDotDotToken, W), _) : _; + } + function tf(_, W) { + var Te = ue(289); + return Te.expression = y().parenthesizeExpressionForDisallowedComma(_), Te.statements = ne(W), Te.transformFlags |= oe(Te.expression) | f(Te.statements), Te; + } + function xf(_, W, Te) { + return _.expression !== W || _.statements !== Te ? A(tf(W, Te), _) : _; + } + function z_(_) { + var W = ue(290); + return W.statements = ne(_), W.transformFlags = f(W.statements), W; + } + function Oc(_, W) { + return _.statements !== W ? A(z_(W), _) : _; + } + function rs(_, W) { + var Te = ue(291); + switch (Te.token = _, Te.types = ne(W), Te.transformFlags |= f(Te.types), _) { + case 94: + Te.transformFlags |= 1024; + break; + case 117: + Te.transformFlags |= 1; + break; + default: + return e.Debug.assertNever(_); + } + return Te; + } + function Op(_, W) { + return _.types !== W ? A(rs(_.token, W), _) : _; + } + function Ef(_, W) { + var Te = ue(292); + return (typeof _ == "string" || _ && !e.isVariableDeclaration(_)) && (_ = Yl(_, void 0, void 0, void 0)), Te.variableDeclaration = _, Te.block = W, Te.transformFlags |= oe(Te.variableDeclaration) | oe(Te.block), _ || (Te.transformFlags |= 64), Te; + } + function Fl(_, W, Te) { + return _.variableDeclaration !== W || _.block !== Te ? A(Ef(W, Te), _) : _; + } + function pl(_, W) { + var Te = Fe(296, void 0, void 0, _); + return Te.initializer = y().parenthesizeExpressionForDisallowedComma(W), Te.transformFlags |= oe(Te.name) | oe(Te.initializer), Te; + } + function Fp(_, W) { + return W.decorators && (_.decorators = W.decorators), W.modifiers && (_.modifiers = W.modifiers), W.questionToken && (_.questionToken = W.questionToken), W.exclamationToken && (_.exclamationToken = W.exclamationToken), A(_, W); + } + function Mp(_, W, Te) { + return _.name !== W || _.initializer !== Te ? Fp(pl(W, Te), _) : _; + } + function Gu(_, W) { + var Te = Fe(297, void 0, void 0, _); + return Te.objectAssignmentInitializer = W && y().parenthesizeExpressionForDisallowedComma(W), Te.transformFlags |= oe(Te.objectAssignmentInitializer) | 1024, Te; + } + function Lp(_, W) { + return W.decorators && (_.decorators = W.decorators), W.modifiers && (_.modifiers = W.modifiers), W.equalsToken && (_.equalsToken = W.equalsToken), W.questionToken && (_.questionToken = W.questionToken), W.exclamationToken && (_.exclamationToken = W.exclamationToken), A(_, W); + } + function Cf(_, W, Te) { + return _.name !== W || _.objectAssignmentInitializer !== Te ? Lp(Gu(W, Te), _) : _; + } + function W_(_) { + var W = ue(298); + return W.expression = y().parenthesizeExpressionForDisallowedComma(_), W.transformFlags |= oe(W.expression) | 128 | 32768, W; + } + function g_(_, W) { + return _.expression !== W ? A(W_(W), _) : _; + } + function dl(_, W) { + var Te = ue(299); + return Te.name = Mc(_), Te.initializer = W && y().parenthesizeExpressionForDisallowedComma(W), Te.transformFlags |= oe(Te.name) | oe(Te.initializer) | 1, Te; + } + function gl(_, W, Te) { + return _.name !== W || _.initializer !== Te ? A(dl(W, Te), _) : _; + } + function Vf(_, W, Te) { + var cr = $.createBaseSourceFileNode(305); + return cr.statements = ne(_), cr.endOfFileToken = W, cr.flags |= Te, cr.fileName = "", cr.text = "", cr.languageVersion = 0, cr.languageVariant = 0, cr.scriptKind = 0, cr.isDeclarationFile = false, cr.hasNoDefaultLib = false, cr.transformFlags |= f(cr.statements) | oe(cr.endOfFileToken), cr; + } + function Fc(_, W, Te, cr, ni, rt, yt) { + var Xa = _.redirectInfo ? Object.create(_.redirectInfo.redirectTarget) : $.createBaseSourceFileNode(305); + for (var vo in _) + vo === "emitNode" || e.hasProperty(Xa, vo) || !e.hasProperty(_, vo) || (Xa[vo] = _[vo]); + return Xa.flags |= _.flags, Xa.statements = ne(W), Xa.endOfFileToken = _.endOfFileToken, Xa.isDeclarationFile = Te, Xa.referencedFiles = cr, Xa.typeReferenceDirectives = ni, Xa.hasNoDefaultLib = rt, Xa.libReferenceDirectives = yt, Xa.transformFlags = f(Xa.statements) | oe(Xa.endOfFileToken), Xa.impliedNodeFormat = _.impliedNodeFormat, Xa; + } + function Hu(_, W, Te, cr, ni, rt, yt) { + return Te === void 0 && (Te = _.isDeclarationFile), cr === void 0 && (cr = _.referencedFiles), ni === void 0 && (ni = _.typeReferenceDirectives), rt === void 0 && (rt = _.hasNoDefaultLib), yt === void 0 && (yt = _.libReferenceDirectives), _.statements !== W || _.isDeclarationFile !== Te || _.referencedFiles !== cr || _.typeReferenceDirectives !== ni || _.hasNoDefaultLib !== rt || _.libReferenceDirectives !== yt ? A(Fc(_, W, Te, cr, ni, rt, yt), _) : _; + } + function af(_, W) { + W === void 0 && (W = e.emptyArray); + var Te = ue(306); + return Te.prepends = W, Te.sourceFiles = _, Te; + } + function tn(_, W, Te) { + return Te === void 0 && (Te = e.emptyArray), _.sourceFiles !== W || _.prepends !== Te ? A(af(W, Te), _) : _; + } + function Ml(_, W, Te) { + var cr = ue(307); + return cr.prologues = _, cr.syntheticReferences = W, cr.texts = Te, cr.fileName = "", cr.text = "", cr.referencedFiles = e.emptyArray, cr.libReferenceDirectives = e.emptyArray, cr.getLineAndCharacterOfPosition = function(ni) { + return e.getLineAndCharacterOfPosition(cr, ni); + }, cr; + } + function Ot(_, W) { + var Te = ue(_); + return Te.data = W, Te; + } + function nf(_) { + return Ot(300, _); + } + function q_(_, W) { + var Te = Ot(301, _); + return Te.texts = W, Te; + } + function Kf(_, W) { + return Ot(W ? 303 : 302, _); + } + function Rp(_) { + var W = ue(304); + return W.data = _.data, W.section = _, W; + } + function yd() { + var _ = ue(308); + return _.javascriptText = "", _.declarationText = "", _; + } + function m_(_, W, Te) { + W === void 0 && (W = false); + var cr = ue(232); + return cr.type = _, cr.isSpread = W, cr.tupleNameSource = Te, cr; + } + function Ll(_) { + var W = ue(348); + return W._children = _, W; + } + function hd(_) { + var W = ue(349); + return W.original = _, e.setTextRange(W, _), W; + } + function v_(_, W) { + var Te = ue(350); + return Te.expression = _, Te.original = W, Te.transformFlags |= oe(Te.expression) | 1, e.setTextRange(Te, W), Te; + } + function Bp(_, W) { + return _.expression !== W ? A(v_(W, _.original), _) : _; + } + function Xu(_) { + if (e.nodeIsSynthesized(_) && !e.isParseTreeNode(_) && !_.original && !_.emitNode && !_.id) { + if (e.isCommaListExpression(_)) + return _.elements; + if (e.isBinaryExpression(_) && e.isCommaToken(_.operatorToken)) + return [_.left, _.right]; + } + return _; + } + function Xc(_) { + var W = ue(351); + return W.elements = ne(e.sameFlatMap(_, Xu)), W.transformFlags |= f(W.elements), W; + } + function Gf(_, W) { + return _.elements !== W ? A(Xc(W), _) : _; + } + function of(_) { + var W = ue(353); + return W.emitNode = {}, W.original = _, W; + } + function wu(_) { + var W = ue(352); + return W.emitNode = {}, W.original = _, W; + } + function V_(_, W) { + var Te = ue(354); + return Te.expression = _, Te.thisArg = W, Te.transformFlags |= oe(Te.expression) | oe(Te.thisArg), Te; + } + function yu(_, W, Te) { + return _.expression !== W || _.thisArg !== Te ? A(V_(W, Te), _) : _; + } + function v(_) { + if (_ === void 0) + return _; + var W = e.isSourceFile(_) ? $.createBaseSourceFileNode(305) : e.isIdentifier(_) ? $.createBaseIdentifierNode(79) : e.isPrivateIdentifier(_) ? $.createBasePrivateIdentifierNode(80) : e.isNodeKind(_.kind) ? $.createBaseNode(_.kind) : $.createBaseTokenNode(_.kind); + W.flags |= _.flags & -9, W.transformFlags = _.transformFlags, he(W, _); + for (var Te in _) + W.hasOwnProperty(Te) || !_.hasOwnProperty(Te) || (W[Te] = _[Te]); + return W; + } + function sr(_, W, Te) { + return qn(ps(void 0, void 0, void 0, void 0, W ? [W] : [], void 0, bn(_, true)), void 0, Te ? [Te] : []); + } + function fi(_, W, Te) { + return qn(js(void 0, void 0, W ? [W] : [], void 0, void 0, bn(_, true)), void 0, Te ? [Te] : []); + } + function zi() { + return qi(we("0")); + } + function Sa(_) { + return mu(void 0, void 0, false, _); + } + function da(_) { + return hf(void 0, void 0, false, Uf([l_(false, void 0, _)])); + } + function Ha(_, W) { + return W === "undefined" ? g.createStrictEquality(_, zi()) : g.createStrictEquality(Rr(_), Ae(W)); + } + function ta(_, W, Te) { + return e.isCallChain(_) ? So(Pi(_, void 0, W), void 0, void 0, Te) : qn(Zr(_, W), void 0, Te); + } + function nn(_, W, Te) { + return ta(_, "bind", Ve([W], Te, true)); + } + function Wo(_, W, Te) { + return ta(_, "call", Ve([W], Te, true)); + } + function Lo(_, W, Te) { + return ta(_, "apply", [W, Te]); + } + function oc(_, W, Te) { + return ta(Er(_), W, Te); + } + function uu(_, W) { + return ta(_, "slice", W === void 0 ? [] : [Yu(W)]); + } + function is(_, W) { + return ta(_, "concat", W); + } + function au(_, W, Te) { + return oc("Object", "defineProperty", [_, Yu(W), Te]); + } + function Ou(_, W, Te) { + return oc("Reflect", "get", Te ? [_, W, Te] : [_, W]); + } + function sf(_, W, Te, cr) { + return oc("Reflect", "set", cr ? [_, W, Te, cr] : [_, W, Te]); + } + function lu(_, W, Te) { + return Te ? (_.push(pl(W, Te)), true) : false; + } + function cf(_, W) { + var Te = []; + lu(Te, "enumerable", Yu(_.enumerable)), lu(Te, "configurable", Yu(_.configurable)); + var cr = lu(Te, "writable", Yu(_.writable)); + cr = lu(Te, "value", _.value) || cr; + var ni = lu(Te, "get", _.get); + return ni = lu(Te, "set", _.set) || ni, e.Debug.assert(!(cr && ni), "A PropertyDescriptor may not be both an accessor descriptor and a data descriptor."), qe(Te, !W); + } + function uf(_, W) { + switch (_.kind) { + case 212: + return tc(_, W); + case 211: + return pc(_, _.type, W); + case 229: + return vc(_, W, _.type); + case 230: + return _i(_, W); + case 350: + return Bp(_, W); + } + } + function K_(_) { + return e.isParenthesizedExpression(_) && e.nodeIsSynthesized(_) && e.nodeIsSynthesized(e.getSourceMapRange(_)) && e.nodeIsSynthesized(e.getCommentRange(_)) && !e.some(e.getSyntheticLeadingComments(_)) && !e.some(e.getSyntheticTrailingComments(_)); + } + function Jp(_, W, Te) { + return Te === void 0 && (Te = 15), _ && e.isOuterExpression(_, Te) && !K_(_) ? uf(_, Jp(_.expression, W)) : W; + } + function Hf(_, W, Te) { + if (!W) + return _; + var cr = P_(W, W.label, e.isLabeledStatement(W.statement) ? Hf(_, W.statement) : _); + return Te && Te(W), cr; + } + function kc(_, W) { + var Te = e.skipParentheses(_); + switch (Te.kind) { + case 79: + return W; + case 108: + case 8: + case 9: + case 10: + return false; + case 204: + var cr = Te.elements; + return cr.length !== 0; + case 205: + return Te.properties.length > 0; + default: + return true; + } + } + function G_(_, W, Te, cr) { + cr === void 0 && (cr = false); + var ni = e.skipOuterExpressions(_, 15), rt, yt; + return e.isSuperProperty(ni) ? (rt = Ur(), yt = ni) : e.isSuperKeyword(ni) ? (rt = Ur(), yt = Te !== void 0 && Te < 2 ? e.setTextRange(Er("_super"), ni) : ni) : e.getEmitFlags(ni) & 4096 ? (rt = zi(), yt = y().parenthesizeLeftSideOfAccess(ni)) : e.isPropertyAccessExpression(ni) ? kc(ni.expression, cr) ? (rt = n(W), yt = Zr(e.setTextRange(g.createAssignment(rt, ni.expression), ni.expression), ni.name), e.setTextRange(yt, ni)) : (rt = ni.expression, yt = ni) : e.isElementAccessExpression(ni) ? kc(ni.expression, cr) ? (rt = n(W), yt = Ct(e.setTextRange(g.createAssignment(rt, ni.expression), ni.expression), ni.argumentExpression), e.setTextRange(yt, ni)) : (rt = ni.expression, yt = ni) : (rt = zi(), yt = y().parenthesizeLeftSideOfAccess(_)), { target: yt, thisArg: rt }; + } + function Le(_, W) { + return Zr(hs(qe([nr(void 0, void 0, "value", [Wt(void 0, void 0, void 0, _, void 0, void 0, void 0)], bn([Mo(W)]))])), "value"); + } + function Nr(_) { + return _.length > 10 ? Xc(_) : e.reduceLeft(_, g.createComma); + } + function ri(_, W, Te, cr) { + cr === void 0 && (cr = 0); + var ni = e.getNameOfDeclaration(_); + if (ni && e.isIdentifier(ni) && !e.isGeneratedIdentifier(ni)) { + var rt = e.setParent(e.setTextRange(v(ni), ni), ni.parent); + return cr |= e.getEmitFlags(ni), Te || (cr |= 48), W || (cr |= 1536), cr && e.setEmitFlags(rt, cr), rt; + } + return Ge(_); + } + function di(_, W, Te) { + return ri(_, W, Te, 49152); + } + function Mi(_, W, Te) { + return ri(_, W, Te, 16384); + } + function st(_, W, Te) { + return ri(_, W, Te, 8192); + } + function ra(_, W, Te) { + return ri(_, W, Te); + } + function Ta(_, W, Te, cr) { + var ni = Zr(_, e.nodeIsSynthesized(W) ? W : v(W)); + e.setTextRange(ni, W); + var rt = 0; + return cr || (rt |= 48), Te || (rt |= 1536), rt && e.setEmitFlags(ni, rt), ni; + } + function ha(_, W, Te, cr) { + return _ && e.hasSyntacticModifier(W, 1) ? Ta(_, ri(W), Te, cr) : st(W, Te, cr); + } + function Na(_, W, Te, cr) { + var ni = co(_, W, 0, Te); + return ts(_, W, ni, cr); + } + function In(_) { + return e.isStringLiteral(_.expression) && _.expression.text === "use strict"; + } + function qo() { + return e.startOnNewLine(Mo(Ae("use strict"))); + } + function co(_, W, Te, cr) { + Te === void 0 && (Te = 0), e.Debug.assert(W.length === 0, "Prologue directives should be at the first statement in the target statements array"); + for (var ni = false, rt = _.length; Te < rt; ) { + var yt = _[Te]; + if (e.isPrologueDirective(yt)) + In(yt) && (ni = true), W.push(yt); + else + break; + Te++; + } + return cr && !ni && W.push(qo()), Te; + } + function ts(_, W, Te, cr, ni) { + ni === void 0 && (ni = e.returnTrue); + for (var rt = _.length; Te !== void 0 && Te < rt; ) { + var yt = _[Te]; + if (e.getEmitFlags(yt) & 1048576 && ni(yt)) + e.append(W, cr ? e.visitNode(yt, cr, e.isStatement) : yt); + else + break; + Te++; + } + return Te; + } + function vs(_) { + var W = e.findUseStrictPrologue(_); + return W ? _ : e.setTextRange(ne(Ve([qo()], _, true)), _); + } + function Ac(_) { + return e.Debug.assert(e.every(_, e.isStatementOrBlock), "Cannot lift nodes to a Block."), e.singleOrUndefined(_) || bn(_); + } + function Is(_, W, Te) { + for (var cr = Te; cr < _.length && W(_[cr]); ) + cr++; + return cr; + } + function Qu(_, W) { + if (!e.some(W)) + return _; + var Te = Is(_, e.isPrologueDirective, 0), cr = Is(_, e.isHoistedFunction, Te), ni = Is(_, e.isHoistedVariableStatement, cr), rt = Is(W, e.isPrologueDirective, 0), yt = Is(W, e.isHoistedFunction, rt), Xa = Is(W, e.isHoistedVariableStatement, yt), vo = Is(W, e.isCustomPrologue, Xa); + e.Debug.assert(vo === W.length, "Expected declarations to be valid standard or custom prologues"); + var Vs = e.isNodeArray(_) ? _.slice() : _; + if (vo > Xa && Vs.splice.apply(Vs, Ve([ni, 0], W.slice(Xa, vo), false)), Xa > yt && Vs.splice.apply(Vs, Ve([cr, 0], W.slice(yt, Xa), false)), yt > rt && Vs.splice.apply(Vs, Ve([Te, 0], W.slice(rt, yt), false)), rt > 0) + if (Te === 0) + Vs.splice.apply(Vs, Ve([0, 0], W.slice(0, rt), false)); + else { + for (var H_ = new e.Map(), y_ = 0; y_ < Te; y_++) { + var Dd = _[y_]; + H_.set(Dd.expression.text, true); + } + for (var y_ = rt - 1; y_ >= 0; y_--) { + var jp = W[y_]; + H_.has(jp.expression.text) || Vs.unshift(jp); + } + } + return e.isNodeArray(_) ? e.setTextRange(ne(Vs, _.hasTrailingComma), _) : _; + } + function sc(_, W) { + var Te, cr; + return typeof W == "number" ? cr = qr(W) : cr = W, e.isParameter(_) ? Zt(_, _.decorators, cr, _.dotDotDotToken, _.name, _.questionToken, _.type, _.initializer) : e.isPropertySignature(_) ? Xe(_, cr, _.name, _.questionToken, _.type) : e.isPropertyDeclaration(_) ? ti(_, _.decorators, cr, _.name, (Te = _.questionToken) !== null && Te !== void 0 ? Te : _.exclamationToken, _.type, _.initializer) : e.isMethodSignature(_) ? Sr(_, cr, _.name, _.questionToken, _.typeParameters, _.parameters, _.type) : e.isMethodDeclaration(_) ? Wr(_, _.decorators, cr, _.asteriskToken, _.name, _.questionToken, _.typeParameters, _.parameters, _.type, _.body) : e.isConstructorDeclaration(_) ? mr(_, _.decorators, cr, _.parameters, _.body) : e.isGetAccessorDeclaration(_) ? Oe(_, _.decorators, cr, _.name, _.parameters, _.type, _.body) : e.isSetAccessorDeclaration(_) ? Mr(_, _.decorators, cr, _.name, _.parameters, _.body) : e.isIndexSignatureDeclaration(_) ? Vr(_, _.decorators, cr, _.parameters, _.type) : e.isFunctionExpression(_) ? Qs(_, cr, _.asteriskToken, _.name, _.typeParameters, _.parameters, _.type, _.body) : e.isArrowFunction(_) ? ds(_, cr, _.typeParameters, _.parameters, _.type, _.equalsGreaterThanToken, _.body) : e.isClassExpression(_) ? Uu(_, _.decorators, cr, _.name, _.typeParameters, _.heritageClauses, _.members) : e.isVariableStatement(_) ? rn(_, cr, _.declarationList) : e.isFunctionDeclaration(_) ? gu(_, _.decorators, cr, _.asteriskToken, _.name, _.typeParameters, _.parameters, _.type, _.body) : e.isClassDeclaration(_) ? sd(_, _.decorators, cr, _.name, _.typeParameters, _.heritageClauses, _.members) : e.isInterfaceDeclaration(_) ? va(_, _.decorators, cr, _.name, _.typeParameters, _.heritageClauses, _.members) : e.isTypeAliasDeclaration(_) ? qs(_, _.decorators, cr, _.name, _.typeParameters, _.type) : e.isEnumDeclaration(_) ? ns(_, _.decorators, cr, _.name, _.members) : e.isModuleDeclaration(_) ? hc(_, _.decorators, cr, _.name, _.body) : e.isImportEqualsDeclaration(_) ? fd(_, _.decorators, cr, _.isTypeOnly, _.name, _.moduleReference) : e.isImportDeclaration(_) ? Sp(_, _.decorators, cr, _.importClause, _.moduleSpecifier, _.assertClause) : e.isExportAssignment(_) ? gd(_, _.decorators, cr, _.expression) : e.isExportDeclaration(_) ? $l(_, _.decorators, cr, _.isTypeOnly, _.exportClause, _.moduleSpecifier, _.assertClause) : e.Debug.assertNever(_); + } + function bc(_) { + return _ ? ne(_) : void 0; + } + function Mc(_) { + return typeof _ == "string" ? Er(_) : _; + } + function Yu(_) { + return typeof _ == "string" ? Ae(_) : typeof _ == "number" ? we(_) : typeof _ == "boolean" ? _ ? mi() : pe() : _; + } + function Rl(_) { + return typeof _ == "number" ? Ir(_) : _; + } + function Lc(_) { + return _ && e.isNotEmittedStatement(_) ? e.setTextRange(he(jn(), _), _) : _; + } + } + e.createNodeFactory = w; + function B(X, $) { + return X !== $ && e.setTextRange(X, $), X; + } + function E(X, $) { + return X !== $ && (he(X, $), e.setTextRange(X, $)), X; + } + function Q(X) { + switch (X) { + case 343: + return "type"; + case 341: + return "returns"; + case 342: + return "this"; + case 339: + return "enum"; + case 330: + return "author"; + case 332: + return "class"; + case 333: + return "public"; + case 334: + return "private"; + case 335: + return "protected"; + case 336: + return "readonly"; + case 337: + return "override"; + case 344: + return "template"; + case 345: + return "typedef"; + case 340: + return "param"; + case 347: + return "prop"; + case 338: + return "callback"; + case 328: + return "augments"; + case 329: + return "implements"; + default: + return e.Debug.fail("Unsupported kind: ".concat(e.Debug.formatSyntaxKind(X))); + } + } + var le, N = {}; + function p(X, $) { + switch (le || (le = e.createScanner(99, false, 0)), X) { + case 14: + le.setText("`" + $ + "`"); + break; + case 15: + le.setText("`" + $ + "${"); + break; + case 16: + le.setText("}" + $ + "${"); + break; + case 17: + le.setText("}" + $ + "`"); + break; + } + var A = le.scan(); + if (A === 19 && (A = le.reScanTemplateToken(false)), le.isUnterminated()) + return le.setText(void 0), N; + var y; + switch (A) { + case 14: + case 15: + case 16: + case 17: + y = le.getTokenValue(); + break; + } + return y === void 0 || le.scan() !== 1 ? (le.setText(void 0), N) : (le.setText(void 0), y); + } + function m(X) { + return oe(X) & -16777217; + } + function G(X, $) { + return $ | X.transformFlags & 33562624; + } + function oe(X) { + if (!X) + return 0; + var $ = X.transformFlags & ~K(X.kind); + return e.isNamedDeclaration(X) && e.isPropertyName(X.name) ? G(X.name, $) : $; + } + function f(X) { + return X ? X.transformFlags : 0; + } + function T(X) { + for (var $ = 0, A = 0, y = X; A < y.length; A++) { + var V = y[A]; + $ |= oe(V); + } + X.transformFlags = $; + } + function K(X) { + if (X >= 177 && X <= 200) + return -2; + switch (X) { + case 208: + case 209: + case 204: + return 536887296; + case 261: + return 589443072; + case 164: + return 536870912; + case 214: + return 557748224; + case 213: + case 256: + return 591310848; + case 255: + return 537165824; + case 257: + case 226: + return 536940544; + case 171: + return 591306752; + case 167: + return 570433536; + case 169: + case 172: + case 173: + return 574529536; + case 130: + case 147: + case 158: + case 143: + case 150: + case 148: + case 133: + case 151: + case 114: + case 163: + case 166: + case 168: + case 174: + case 175: + case 176: + case 258: + case 259: + return -2; + case 205: + return 536973312; + case 292: + return 536903680; + case 201: + case 202: + return 536887296; + case 211: + case 229: + case 350: + case 212: + case 106: + return 536870912; + case 206: + case 207: + return 536870912; + default: + return 536870912; + } + } + e.getTransformFlagsSubtreeExclusions = K; + var b = e.createBaseNodeFactory(); + function se(X) { + return X.flags |= 8, X; + } + var J = { createBaseSourceFileNode: function(X) { + return se(b.createBaseSourceFileNode(X)); + }, createBaseIdentifierNode: function(X) { + return se(b.createBaseIdentifierNode(X)); + }, createBasePrivateIdentifierNode: function(X) { + return se(b.createBasePrivateIdentifierNode(X)); + }, createBaseTokenNode: function(X) { + return se(b.createBaseTokenNode(X)); + }, createBaseNode: function(X) { + return se(b.createBaseNode(X)); + } }; + e.factory = w(4, J); + function ie(X, $, A) { + var y, V, L, P, k, Y, U, j, H, I; + e.isString(X) ? (L = "", P = X, k = X.length, Y = $, U = A) : (e.Debug.assert($ === "js" || $ === "dts"), L = ($ === "js" ? X.javascriptPath : X.declarationPath) || "", Y = $ === "js" ? X.javascriptMapPath : X.declarationMapPath, j = function() { + return $ === "js" ? X.javascriptText : X.declarationText; + }, H = function() { + return $ === "js" ? X.javascriptMapText : X.declarationMapText; + }, k = function() { + return j().length; + }, X.buildInfo && X.buildInfo.bundle && (e.Debug.assert(A === void 0 || typeof A == "boolean"), y = A, V = $ === "js" ? X.buildInfo.bundle.js : X.buildInfo.bundle.dts, I = X.oldFileOfCurrentEmit)); + var l = I ? q(e.Debug.checkDefined(V)) : R(V, y, k); + return l.fileName = L, l.sourceMapPath = Y, l.oldFileOfCurrentEmit = I, j && H ? (Object.defineProperty(l, "text", { get: j }), Object.defineProperty(l, "sourceMapText", { get: H })) : (e.Debug.assert(!I), l.text = P != null ? P : "", l.sourceMapText = U), l; + } + e.createUnparsedSourceFile = ie; + function R(X, $, A) { + for (var y, V, L, P, k, Y, U, j, H = 0, I = X ? X.sections : e.emptyArray; H < I.length; H++) { + var l = I[H]; + switch (l.kind) { + case "prologue": + y = e.append(y, e.setTextRange(e.factory.createUnparsedPrologue(l.data), l)); + break; + case "emitHelpers": + V = e.append(V, e.getAllUnscopedEmitHelpers().get(l.data)); + break; + case "no-default-lib": + j = true; + break; + case "reference": + L = e.append(L, { pos: -1, end: -1, fileName: l.data }); + break; + case "type": + P = e.append(P, { pos: -1, end: -1, fileName: l.data }); + break; + case "type-import": + P = e.append(P, { pos: -1, end: -1, fileName: l.data, resolutionMode: e.ModuleKind.ESNext }); + break; + case "type-require": + P = e.append(P, { pos: -1, end: -1, fileName: l.data, resolutionMode: e.ModuleKind.CommonJS }); + break; + case "lib": + k = e.append(k, { pos: -1, end: -1, fileName: l.data }); + break; + case "prepend": + for (var d = void 0, D = 0, fe = l.texts; D < fe.length; D++) { + var g = fe[D]; + (!$ || g.kind !== "internal") && (d = e.append(d, e.setTextRange(e.factory.createUnparsedTextLike(g.data, g.kind === "internal"), g))); + } + Y = e.addRange(Y, d), U = e.append(U, e.factory.createUnparsedPrepend(l.data, d != null ? d : e.emptyArray)); + break; + case "internal": + if ($) { + U || (U = []); + break; + } + case "text": + U = e.append(U, e.setTextRange(e.factory.createUnparsedTextLike(l.data, l.kind === "internal"), l)); + break; + default: + e.Debug.assertNever(l); + } + } + if (!U) { + var ne = e.factory.createUnparsedTextLike(void 0, false); + e.setTextRangePosWidth(ne, 0, typeof A == "function" ? A() : A), U = [ne]; + } + var ue = e.parseNodeFactory.createUnparsedSource(y != null ? y : e.emptyArray, void 0, U); + return e.setEachParent(y, ue), e.setEachParent(U, ue), e.setEachParent(Y, ue), ue.hasNoDefaultLib = j, ue.helpers = V, ue.referencedFiles = L || e.emptyArray, ue.typeReferenceDirectives = P, ue.libReferenceDirectives = k || e.emptyArray, ue; + } + function q(X) { + for (var $, A, y = 0, V = X.sections; y < V.length; y++) { + var L = V[y]; + switch (L.kind) { + case "internal": + case "text": + $ = e.append($, e.setTextRange(e.factory.createUnparsedTextLike(L.data, L.kind === "internal"), L)); + break; + case "no-default-lib": + case "reference": + case "type": + case "type-import": + case "type-require": + case "lib": + A = e.append(A, e.setTextRange(e.factory.createUnparsedSyntheticReference(L), L)); + break; + case "prologue": + case "emitHelpers": + case "prepend": + break; + default: + e.Debug.assertNever(L); + } + } + var P = e.factory.createUnparsedSource(e.emptyArray, A, $ != null ? $ : e.emptyArray); + return e.setEachParent(A, P), e.setEachParent($, P), P.helpers = e.map(X.sources && X.sources.helpers, function(k) { + return e.getAllUnscopedEmitHelpers().get(k); + }), P; + } + function O(X, $, A, y, V, L, P, k, Y, U, j) { + var H = e.parseNodeFactory.createInputFiles(); + if (e.isString(X)) + H.javascriptText = X, H.javascriptMapPath = A, H.javascriptMapText = y, H.declarationText = $, H.declarationMapPath = V, H.declarationMapText = L, H.javascriptPath = P, H.declarationPath = k, H.buildInfoPath = Y, H.buildInfo = U, H.oldFileOfCurrentEmit = j; + else { + var I = new e.Map(), l = function(g) { + if (g !== void 0) { + var ne = I.get(g); + return ne === void 0 && (ne = X(g), I.set(g, ne !== void 0 ? ne : false)), ne !== false ? ne : void 0; + } + }, d = function(g) { + var ne = l(g); + return ne !== void 0 ? ne : "/* Input file ".concat(g, ` was missing */\r +`); + }, D, fe = function(g) { + if (D === void 0) { + var ne = g(); + D = ne !== void 0 ? e.getBuildInfo(ne) : false; + } + return D || void 0; + }; + H.javascriptPath = $, H.javascriptMapPath = A, H.declarationPath = e.Debug.checkDefined(y), H.declarationMapPath = V, H.buildInfoPath = L, Object.defineProperties(H, { javascriptText: { get: function() { + return d($); + } }, javascriptMapText: { get: function() { + return l(A); + } }, declarationText: { get: function() { + return d(e.Debug.checkDefined(y)); + } }, declarationMapText: { get: function() { + return l(V); + } }, buildInfo: { get: function() { + return fe(function() { + return l(L); + }); + } } }); + } + return H; + } + e.createInputFiles = O; + var ve; + function ee(X, $, A) { + return new (ve || (ve = e.objectAllocator.getSourceMapSourceConstructor()))(X, $, A); + } + e.createSourceMapSource = ee; + function he(X, $) { + if (X.original = $, $) { + var A = $.emitNode; + A && (X.emitNode = F(A, X.emitNode)); + } + return X; + } + e.setOriginalNode = he; + function F(X, $) { + var A = X.flags, y = X.leadingComments, V = X.trailingComments, L = X.commentRange, P = X.sourceMapRange, k = X.tokenSourceMapRanges, Y = X.constantValue, U = X.helpers, j = X.startsOnNewLine; + if ($ || ($ = {}), y && ($.leadingComments = e.addRange(y.slice(), $.leadingComments)), V && ($.trailingComments = e.addRange(V.slice(), $.trailingComments)), A && ($.flags = A & -268435457), L && ($.commentRange = L), P && ($.sourceMapRange = P), k && ($.tokenSourceMapRanges = x(k, $.tokenSourceMapRanges)), Y !== void 0 && ($.constantValue = Y), U) + for (var H = 0, I = U; H < I.length; H++) { + var l = I[H]; + $.helpers = e.appendIfUnique($.helpers, l); + } + return j !== void 0 && ($.startsOnNewLine = j), $; + } + function x(X, $) { + $ || ($ = []); + for (var A in X) + $[A] = X[A]; + return $; + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(L) { + var P; + if (L.emitNode) + e.Debug.assert(!(L.emitNode.flags & 268435456), "Invalid attempt to mutate an immutable node."); + else { + if (e.isParseTreeNode(L)) { + if (L.kind === 305) + return L.emitNode = { annotatedNodes: [L] }; + var k = (P = e.getSourceFileOfNode(e.getParseTreeNode(e.getSourceFileOfNode(L)))) !== null && P !== void 0 ? P : e.Debug.fail("Could not determine parsed source file."); + a(k).annotatedNodes.push(L); + } + L.emitNode = {}; + } + return L.emitNode; + } + e.getOrCreateEmitNode = a; + function C(L) { + var P, k, Y = (k = (P = e.getSourceFileOfNode(e.getParseTreeNode(L))) === null || P === void 0 ? void 0 : P.emitNode) === null || k === void 0 ? void 0 : k.annotatedNodes; + if (Y) + for (var U = 0, j = Y; U < j.length; U++) { + var H = j[U]; + H.emitNode = void 0; + } + } + e.disposeEmitNodes = C; + function w(L) { + var P = a(L); + return P.flags |= 1536, P.leadingComments = void 0, P.trailingComments = void 0, L; + } + e.removeAllComments = w; + function B(L, P) { + return a(L).flags = P, L; + } + e.setEmitFlags = B; + function E(L, P) { + var k = a(L); + return k.flags = k.flags | P, L; + } + e.addEmitFlags = E; + function Q(L) { + var P, k; + return (k = (P = L.emitNode) === null || P === void 0 ? void 0 : P.sourceMapRange) !== null && k !== void 0 ? k : L; + } + e.getSourceMapRange = Q; + function le(L, P) { + return a(L).sourceMapRange = P, L; + } + e.setSourceMapRange = le; + function N(L, P) { + var k, Y; + return (Y = (k = L.emitNode) === null || k === void 0 ? void 0 : k.tokenSourceMapRanges) === null || Y === void 0 ? void 0 : Y[P]; + } + e.getTokenSourceMapRange = N; + function p(L, P, k) { + var Y, U = a(L), j = (Y = U.tokenSourceMapRanges) !== null && Y !== void 0 ? Y : U.tokenSourceMapRanges = []; + return j[P] = k, L; + } + e.setTokenSourceMapRange = p; + function m(L) { + var P; + return (P = L.emitNode) === null || P === void 0 ? void 0 : P.startsOnNewLine; + } + e.getStartsOnNewLine = m; + function G(L, P) { + return a(L).startsOnNewLine = P, L; + } + e.setStartsOnNewLine = G; + function oe(L) { + var P, k; + return (k = (P = L.emitNode) === null || P === void 0 ? void 0 : P.commentRange) !== null && k !== void 0 ? k : L; + } + e.getCommentRange = oe; + function f(L, P) { + return a(L).commentRange = P, L; + } + e.setCommentRange = f; + function T(L) { + var P; + return (P = L.emitNode) === null || P === void 0 ? void 0 : P.leadingComments; + } + e.getSyntheticLeadingComments = T; + function K(L, P) { + return a(L).leadingComments = P, L; + } + e.setSyntheticLeadingComments = K; + function b(L, P, k, Y) { + return K(L, e.append(T(L), { kind: P, pos: -1, end: -1, hasTrailingNewLine: Y, text: k })); + } + e.addSyntheticLeadingComment = b; + function se(L) { + var P; + return (P = L.emitNode) === null || P === void 0 ? void 0 : P.trailingComments; + } + e.getSyntheticTrailingComments = se; + function J(L, P) { + return a(L).trailingComments = P, L; + } + e.setSyntheticTrailingComments = J; + function ie(L, P, k, Y) { + return J(L, e.append(se(L), { kind: P, pos: -1, end: -1, hasTrailingNewLine: Y, text: k })); + } + e.addSyntheticTrailingComment = ie; + function R(L, P) { + K(L, T(P)), J(L, se(P)); + var k = a(P); + return k.leadingComments = void 0, k.trailingComments = void 0, L; + } + e.moveSyntheticComments = R; + function q(L) { + var P; + return (P = L.emitNode) === null || P === void 0 ? void 0 : P.constantValue; + } + e.getConstantValue = q; + function O(L, P) { + var k = a(L); + return k.constantValue = P, L; + } + e.setConstantValue = O; + function ve(L, P) { + var k = a(L); + return k.helpers = e.append(k.helpers, P), L; + } + e.addEmitHelper = ve; + function ee(L, P) { + if (e.some(P)) + for (var k = a(L), Y = 0, U = P; Y < U.length; Y++) { + var j = U[Y]; + k.helpers = e.appendIfUnique(k.helpers, j); + } + return L; + } + e.addEmitHelpers = ee; + function he(L, P) { + var k, Y = (k = L.emitNode) === null || k === void 0 ? void 0 : k.helpers; + return Y ? e.orderedRemoveItem(Y, P) : false; + } + e.removeEmitHelper = he; + function F(L) { + var P; + return (P = L.emitNode) === null || P === void 0 ? void 0 : P.helpers; + } + e.getEmitHelpers = F; + function x(L, P, k) { + var Y = L.emitNode, U = Y && Y.helpers; + if (!!e.some(U)) { + for (var j = a(P), H = 0, I = 0; I < U.length; I++) { + var l = U[I]; + k(l) ? (H++, j.helpers = e.appendIfUnique(j.helpers, l)) : H > 0 && (U[I - H] = l); + } + H > 0 && (U.length -= H); + } + } + e.moveEmitHelpers = x; + function X(L) { + var P; + return (P = L.emitNode) === null || P === void 0 ? void 0 : P.snippetElement; + } + e.getSnippetElement = X; + function $(L, P) { + var k = a(L); + return k.snippetElement = P, L; + } + e.setSnippetElement = $; + function A(L) { + return a(L).flags |= 134217728, L; + } + e.ignoreSourceNewlines = A; + function y(L, P) { + var k = a(L); + return k.typeNode = P, L; + } + e.setTypeNode = y; + function V(L) { + var P; + return (P = L.emitNode) === null || P === void 0 ? void 0 : P.typeNode; + } + e.getTypeNode = V; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(le) { + var N = le.factory, p = e.memoize(function() { + return e.setEmitFlags(N.createTrue(), 268435456); + }), m = e.memoize(function() { + return e.setEmitFlags(N.createFalse(), 268435456); + }); + return { getUnscopedHelperName: G, createDecorateHelper: oe, createMetadataHelper: f, createParamHelper: T, createAssignHelper: K, createAwaitHelper: b, createAsyncGeneratorHelper: se, createAsyncDelegatorHelper: J, createAsyncValuesHelper: ie, createRestHelper: R, createAwaiterHelper: q, createExtendsHelper: O, createTemplateObjectHelper: ve, createSpreadArrayHelper: ee, createValuesHelper: he, createReadHelper: F, createGeneratorHelper: x, createCreateBindingHelper: X, createImportStarHelper: $, createImportStarCallbackHelper: A, createImportDefaultHelper: y, createExportStarHelper: V, createClassPrivateFieldGetHelper: L, createClassPrivateFieldSetHelper: P, createClassPrivateFieldInHelper: k }; + function G(Y) { + return e.setEmitFlags(N.createIdentifier(Y), 4098); + } + function oe(Y, U, j, H) { + le.requestEmitHelper(e.decorateHelper); + var I = []; + return I.push(N.createArrayLiteralExpression(Y, true)), I.push(U), j && (I.push(j), H && I.push(H)), N.createCallExpression(G("__decorate"), void 0, I); + } + function f(Y, U) { + return le.requestEmitHelper(e.metadataHelper), N.createCallExpression(G("__metadata"), void 0, [N.createStringLiteral(Y), U]); + } + function T(Y, U, j) { + return le.requestEmitHelper(e.paramHelper), e.setTextRange(N.createCallExpression(G("__param"), void 0, [N.createNumericLiteral(U + ""), Y]), j); + } + function K(Y) { + return e.getEmitScriptTarget(le.getCompilerOptions()) >= 2 ? N.createCallExpression(N.createPropertyAccessExpression(N.createIdentifier("Object"), "assign"), void 0, Y) : (le.requestEmitHelper(e.assignHelper), N.createCallExpression(G("__assign"), void 0, Y)); + } + function b(Y) { + return le.requestEmitHelper(e.awaitHelper), N.createCallExpression(G("__await"), void 0, [Y]); + } + function se(Y, U) { + return le.requestEmitHelper(e.awaitHelper), le.requestEmitHelper(e.asyncGeneratorHelper), (Y.emitNode || (Y.emitNode = {})).flags |= 786432, N.createCallExpression(G("__asyncGenerator"), void 0, [U ? N.createThis() : N.createVoidZero(), N.createIdentifier("arguments"), Y]); + } + function J(Y) { + return le.requestEmitHelper(e.awaitHelper), le.requestEmitHelper(e.asyncDelegator), N.createCallExpression(G("__asyncDelegator"), void 0, [Y]); + } + function ie(Y) { + return le.requestEmitHelper(e.asyncValues), N.createCallExpression(G("__asyncValues"), void 0, [Y]); + } + function R(Y, U, j, H) { + le.requestEmitHelper(e.restHelper); + for (var I = [], l = 0, d = 0; d < U.length - 1; d++) { + var D = e.getPropertyNameOfBindingOrAssignmentElement(U[d]); + if (D) + if (e.isComputedPropertyName(D)) { + e.Debug.assertIsDefined(j, "Encountered computed property name but 'computedTempVariables' argument was not provided."); + var fe = j[l]; + l++, I.push(N.createConditionalExpression(N.createTypeCheck(fe, "symbol"), void 0, fe, void 0, N.createAdd(fe, N.createStringLiteral("")))); + } else + I.push(N.createStringLiteralFromNode(D)); + } + return N.createCallExpression(G("__rest"), void 0, [Y, e.setTextRange(N.createArrayLiteralExpression(I), H)]); + } + function q(Y, U, j, H) { + le.requestEmitHelper(e.awaiterHelper); + var I = N.createFunctionExpression(void 0, N.createToken(41), void 0, void 0, [], void 0, H); + return (I.emitNode || (I.emitNode = {})).flags |= 786432, N.createCallExpression(G("__awaiter"), void 0, [Y ? N.createThis() : N.createVoidZero(), U ? N.createIdentifier("arguments") : N.createVoidZero(), j ? e.createExpressionFromEntityName(N, j) : N.createVoidZero(), I]); + } + function O(Y) { + return le.requestEmitHelper(e.extendsHelper), N.createCallExpression(G("__extends"), void 0, [Y, N.createUniqueName("_super", 48)]); + } + function ve(Y, U) { + return le.requestEmitHelper(e.templateObjectHelper), N.createCallExpression(G("__makeTemplateObject"), void 0, [Y, U]); + } + function ee(Y, U, j) { + return le.requestEmitHelper(e.spreadArrayHelper), N.createCallExpression(G("__spreadArray"), void 0, [Y, U, j ? p() : m()]); + } + function he(Y) { + return le.requestEmitHelper(e.valuesHelper), N.createCallExpression(G("__values"), void 0, [Y]); + } + function F(Y, U) { + return le.requestEmitHelper(e.readHelper), N.createCallExpression(G("__read"), void 0, U !== void 0 ? [Y, N.createNumericLiteral(U + "")] : [Y]); + } + function x(Y) { + return le.requestEmitHelper(e.generatorHelper), N.createCallExpression(G("__generator"), void 0, [N.createThis(), Y]); + } + function X(Y, U, j) { + return le.requestEmitHelper(e.createBindingHelper), N.createCallExpression(G("__createBinding"), void 0, Ve([N.createIdentifier("exports"), Y, U], j ? [j] : [], true)); + } + function $(Y) { + return le.requestEmitHelper(e.importStarHelper), N.createCallExpression(G("__importStar"), void 0, [Y]); + } + function A() { + return le.requestEmitHelper(e.importStarHelper), G("__importStar"); + } + function y(Y) { + return le.requestEmitHelper(e.importDefaultHelper), N.createCallExpression(G("__importDefault"), void 0, [Y]); + } + function V(Y, U) { + return U === void 0 && (U = N.createIdentifier("exports")), le.requestEmitHelper(e.exportStarHelper), le.requestEmitHelper(e.createBindingHelper), N.createCallExpression(G("__exportStar"), void 0, [Y, U]); + } + function L(Y, U, j, H) { + le.requestEmitHelper(e.classPrivateFieldGetHelper); + var I; + return H ? I = [Y, U, N.createStringLiteral(j), H] : I = [Y, U, N.createStringLiteral(j)], N.createCallExpression(G("__classPrivateFieldGet"), void 0, I); + } + function P(Y, U, j, H, I) { + le.requestEmitHelper(e.classPrivateFieldSetHelper); + var l; + return I ? l = [Y, U, j, N.createStringLiteral(H), I] : l = [Y, U, j, N.createStringLiteral(H)], N.createCallExpression(G("__classPrivateFieldSet"), void 0, l); + } + function k(Y, U) { + return le.requestEmitHelper(e.classPrivateFieldInHelper), N.createCallExpression(G("__classPrivateFieldIn"), void 0, [Y, U]); + } + } + e.createEmitHelperFactory = a; + function C(le, N) { + return le === N || le.priority === N.priority ? 0 : le.priority === void 0 ? 1 : N.priority === void 0 ? -1 : e.compareValues(le.priority, N.priority); + } + e.compareEmitHelpers = C; + function w(le) { + for (var N = [], p = 1; p < arguments.length; p++) + N[p - 1] = arguments[p]; + return function(m) { + for (var G = "", oe = 0; oe < N.length; oe++) + G += le[oe], G += m(N[oe]); + return G += le[le.length - 1], G; + }; + } + e.helperString = w, e.decorateHelper = { name: "typescript:decorate", importName: "__decorate", scoped: false, priority: 2, text: ` + var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + };` }, e.metadataHelper = { name: "typescript:metadata", importName: "__metadata", scoped: false, priority: 3, text: ` + var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + };` }, e.paramHelper = { name: "typescript:param", importName: "__param", scoped: false, priority: 4, text: ` + var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } + };` }, e.assignHelper = { name: "typescript:assign", importName: "__assign", scoped: false, priority: 1, text: ` + var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + };` }, e.awaitHelper = { name: "typescript:await", importName: "__await", scoped: false, text: ` + var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }` }, e.asyncGeneratorHelper = { name: "typescript:asyncGenerator", importName: "__asyncGenerator", scoped: false, dependencies: [e.awaitHelper], text: ` + var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + };` }, e.asyncDelegator = { name: "typescript:asyncDelegator", importName: "__asyncDelegator", scoped: false, dependencies: [e.awaitHelper], text: ` + var __asyncDelegator = (this && this.__asyncDelegator) || function (o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } + };` }, e.asyncValues = { name: "typescript:asyncValues", importName: "__asyncValues", scoped: false, text: ` + var __asyncValues = (this && this.__asyncValues) || function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + };` }, e.restHelper = { name: "typescript:rest", importName: "__rest", scoped: false, text: ` + var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + };` }, e.awaiterHelper = { name: "typescript:awaiter", importName: "__awaiter", scoped: false, priority: 5, text: ` + var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + };` }, e.extendsHelper = { name: "typescript:extends", importName: "__extends", scoped: false, priority: 0, text: ` + var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })();` }, e.templateObjectHelper = { name: "typescript:makeTemplateObject", importName: "__makeTemplateObject", scoped: false, priority: 0, text: ` + var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; + };` }, e.readHelper = { name: "typescript:read", importName: "__read", scoped: false, text: ` + var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + };` }, e.spreadArrayHelper = { name: "typescript:spreadArray", importName: "__spreadArray", scoped: false, text: ` + var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + };` }, e.valuesHelper = { name: "typescript:values", importName: "__values", scoped: false, text: ` + var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + };` }, e.generatorHelper = { name: "typescript:generator", importName: "__generator", scoped: false, priority: 6, text: ` + var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + };` }, e.createBindingHelper = { name: "typescript:commonjscreatebinding", importName: "__createBinding", scoped: false, priority: 1, text: ` + var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + }));` }, e.setModuleDefaultHelper = { name: "typescript:commonjscreatevalue", importName: "__setModuleDefault", scoped: false, priority: 1, text: ` + var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + });` }, e.importStarHelper = { name: "typescript:commonjsimportstar", importName: "__importStar", scoped: false, dependencies: [e.createBindingHelper, e.setModuleDefaultHelper], priority: 2, text: ` + var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; + };` }, e.importDefaultHelper = { name: "typescript:commonjsimportdefault", importName: "__importDefault", scoped: false, text: ` + var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + };` }, e.exportStarHelper = { name: "typescript:export-star", importName: "__exportStar", scoped: false, dependencies: [e.createBindingHelper], priority: 2, text: ` + var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + };` }, e.classPrivateFieldGetHelper = { name: "typescript:classPrivateFieldGet", importName: "__classPrivateFieldGet", scoped: false, text: ` + var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); + };` }, e.classPrivateFieldSetHelper = { name: "typescript:classPrivateFieldSet", importName: "__classPrivateFieldSet", scoped: false, text: ` + var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; + };` }, e.classPrivateFieldInHelper = { name: "typescript:classPrivateFieldIn", importName: "__classPrivateFieldIn", scoped: false, text: ` + var __classPrivateFieldIn = (this && this.__classPrivateFieldIn) || function(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); + };` }; + var B; + function E() { + return B || (B = e.arrayToMap([e.decorateHelper, e.metadataHelper, e.paramHelper, e.assignHelper, e.awaitHelper, e.asyncGeneratorHelper, e.asyncDelegator, e.asyncValues, e.restHelper, e.awaiterHelper, e.extendsHelper, e.templateObjectHelper, e.spreadArrayHelper, e.valuesHelper, e.readHelper, e.generatorHelper, e.importStarHelper, e.importDefaultHelper, e.exportStarHelper, e.classPrivateFieldGetHelper, e.classPrivateFieldSetHelper, e.classPrivateFieldInHelper, e.createBindingHelper, e.setModuleDefaultHelper], function(le) { + return le.name; + })); + } + e.getAllUnscopedEmitHelpers = E, e.asyncSuperHelper = { name: "typescript:async-super", scoped: true, text: w(oi([` + const `, " = name => super[name];"], [` + const `, " = name => super[name];"]), "_superIndex") }, e.advancedAsyncSuperHelper = { name: "typescript:advanced-async-super", scoped: true, text: w(oi([` + const `, ` = (function (geti, seti) { + const cache = Object.create(null); + return name => cache[name] || (cache[name] = { get value() { return geti(name); }, set value(v) { seti(name, v); } }); + })(name => super[name], (name, value) => super[name] = value);`], [` + const `, ` = (function (geti, seti) { + const cache = Object.create(null); + return name => cache[name] || (cache[name] = { get value() { return geti(name); }, set value(v) { seti(name, v); } }); + })(name => super[name], (name, value) => super[name] = value);`]), "_superIndex") }; + function Q(le, N) { + return e.isCallExpression(le) && e.isIdentifier(le.expression) && (e.getEmitFlags(le.expression) & 4096) !== 0 && le.expression.escapedText === N; + } + e.isCallToHelper = Q; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(jr) { + return jr.kind === 8; + } + e.isNumericLiteral = a; + function C(jr) { + return jr.kind === 9; + } + e.isBigIntLiteral = C; + function w(jr) { + return jr.kind === 10; + } + e.isStringLiteral = w; + function B(jr) { + return jr.kind === 11; + } + e.isJsxText = B; + function E(jr) { + return jr.kind === 13; + } + e.isRegularExpressionLiteral = E; + function Q(jr) { + return jr.kind === 14; + } + e.isNoSubstitutionTemplateLiteral = Q; + function le(jr) { + return jr.kind === 15; + } + e.isTemplateHead = le; + function N(jr) { + return jr.kind === 16; + } + e.isTemplateMiddle = N; + function p(jr) { + return jr.kind === 17; + } + e.isTemplateTail = p; + function m(jr) { + return jr.kind === 25; + } + e.isDotDotDotToken = m; + function G(jr) { + return jr.kind === 27; + } + e.isCommaToken = G; + function oe(jr) { + return jr.kind === 39; + } + e.isPlusToken = oe; + function f(jr) { + return jr.kind === 40; + } + e.isMinusToken = f; + function T(jr) { + return jr.kind === 41; + } + e.isAsteriskToken = T; + function K(jr) { + return jr.kind === 53; + } + e.isExclamationToken = K; + function b(jr) { + return jr.kind === 57; + } + e.isQuestionToken = b; + function se(jr) { + return jr.kind === 58; + } + e.isColonToken = se; + function J(jr) { + return jr.kind === 28; + } + e.isQuestionDotToken = J; + function ie(jr) { + return jr.kind === 38; + } + e.isEqualsGreaterThanToken = ie; + function R(jr) { + return jr.kind === 79; + } + e.isIdentifier = R; + function q(jr) { + return jr.kind === 80; + } + e.isPrivateIdentifier = q; + function O(jr) { + return jr.kind === 93; + } + e.isExportModifier = O; + function ve(jr) { + return jr.kind === 131; + } + e.isAsyncModifier = ve; + function ee(jr) { + return jr.kind === 128; + } + e.isAssertsKeyword = ee; + function he(jr) { + return jr.kind === 132; + } + e.isAwaitKeyword = he; + function F(jr) { + return jr.kind === 145; + } + e.isReadonlyKeyword = F; + function x(jr) { + return jr.kind === 124; + } + e.isStaticModifier = x; + function X(jr) { + return jr.kind === 126; + } + e.isAbstractModifier = X; + function $(jr) { + return jr.kind === 106; + } + e.isSuperKeyword = $; + function A(jr) { + return jr.kind === 100; + } + e.isImportKeyword = A; + function y(jr) { + return jr.kind === 161; + } + e.isQualifiedName = y; + function V(jr) { + return jr.kind === 162; + } + e.isComputedPropertyName = V; + function L(jr) { + return jr.kind === 163; + } + e.isTypeParameterDeclaration = L; + function P(jr) { + return jr.kind === 164; + } + e.isParameter = P; + function k(jr) { + return jr.kind === 165; + } + e.isDecorator = k; + function Y(jr) { + return jr.kind === 166; + } + e.isPropertySignature = Y; + function U(jr) { + return jr.kind === 167; + } + e.isPropertyDeclaration = U; + function j(jr) { + return jr.kind === 168; + } + e.isMethodSignature = j; + function H(jr) { + return jr.kind === 169; + } + e.isMethodDeclaration = H; + function I(jr) { + return jr.kind === 170; + } + e.isClassStaticBlockDeclaration = I; + function l(jr) { + return jr.kind === 171; + } + e.isConstructorDeclaration = l; + function d(jr) { + return jr.kind === 172; + } + e.isGetAccessorDeclaration = d; + function D(jr) { + return jr.kind === 173; + } + e.isSetAccessorDeclaration = D; + function fe(jr) { + return jr.kind === 174; + } + e.isCallSignatureDeclaration = fe; + function g(jr) { + return jr.kind === 175; + } + e.isConstructSignatureDeclaration = g; + function ne(jr) { + return jr.kind === 176; + } + e.isIndexSignatureDeclaration = ne; + function ue(jr) { + return jr.kind === 177; + } + e.isTypePredicateNode = ue; + function We(jr) { + return jr.kind === 178; + } + e.isTypeReferenceNode = We; + function Fe(jr) { + return jr.kind === 179; + } + e.isFunctionTypeNode = Fe; + function Z(jr) { + return jr.kind === 180; + } + e.isConstructorTypeNode = Z; + function Be(jr) { + return jr.kind === 181; + } + e.isTypeQueryNode = Be; + function ge(jr) { + return jr.kind === 182; + } + e.isTypeLiteralNode = ge; + function Re(jr) { + return jr.kind === 183; + } + e.isArrayTypeNode = Re; + function ze(jr) { + return jr.kind === 184; + } + e.isTupleTypeNode = ze; + function Ee(jr) { + return jr.kind === 197; + } + e.isNamedTupleMember = Ee; + function He(jr) { + return jr.kind === 185; + } + e.isOptionalTypeNode = He; + function rr(jr) { + return jr.kind === 186; + } + e.isRestTypeNode = rr; + function Ie(jr) { + return jr.kind === 187; + } + e.isUnionTypeNode = Ie; + function _e(jr) { + return jr.kind === 188; + } + e.isIntersectionTypeNode = _e; + function we(jr) { + return jr.kind === 189; + } + e.isConditionalTypeNode = we; + function de(jr) { + return jr.kind === 190; + } + e.isInferTypeNode = de; + function ye(jr) { + return jr.kind === 191; + } + e.isParenthesizedTypeNode = ye; + function Ae(jr) { + return jr.kind === 192; + } + e.isThisTypeNode = Ae; + function er(jr) { + return jr.kind === 193; + } + e.isTypeOperatorNode = er; + function ir(jr) { + return jr.kind === 194; + } + e.isIndexedAccessTypeNode = ir; + function Cr(jr) { + return jr.kind === 195; + } + e.isMappedTypeNode = Cr; + function Ye(jr) { + return jr.kind === 196; + } + e.isLiteralTypeNode = Ye; + function Br(jr) { + return jr.kind === 200; + } + e.isImportTypeNode = Br; + function Er(jr) { + return jr.kind === 199; + } + e.isTemplateLiteralTypeSpan = Er; + function Ne(jr) { + return jr.kind === 198; + } + e.isTemplateLiteralTypeNode = Ne; + function n(jr) { + return jr.kind === 201; + } + e.isObjectBindingPattern = n; + function lr(jr) { + return jr.kind === 202; + } + e.isArrayBindingPattern = lr; + function be(jr) { + return jr.kind === 203; + } + e.isBindingElement = be; + function Ge(jr) { + return jr.kind === 204; + } + e.isArrayLiteralExpression = Ge; + function ur(jr) { + return jr.kind === 205; + } + e.isObjectLiteralExpression = ur; + function yr(jr) { + return jr.kind === 206; + } + e.isPropertyAccessExpression = yr; + function Ir(jr) { + return jr.kind === 207; + } + e.isElementAccessExpression = Ir; + function wr(jr) { + return jr.kind === 208; + } + e.isCallExpression = wr; + function Ur(jr) { + return jr.kind === 209; + } + e.isNewExpression = Ur; + function ii(jr) { + return jr.kind === 210; + } + e.isTaggedTemplateExpression = ii; + function mi(jr) { + return jr.kind === 211; + } + e.isTypeAssertionExpression = mi; + function pe(jr) { + return jr.kind === 212; + } + e.isParenthesizedExpression = pe; + function or(jr) { + return jr.kind === 213; + } + e.isFunctionExpression = or; + function qr(jr) { + return jr.kind === 214; + } + e.isArrowFunction = qr; + function si(jr) { + return jr.kind === 215; + } + e.isDeleteExpression = si; + function Di(jr) { + return jr.kind === 216; + } + e.isTypeOfExpression = Di; + function wi(jr) { + return jr.kind === 217; + } + e.isVoidExpression = wi; + function Xi(jr) { + return jr.kind === 218; + } + e.isAwaitExpression = Xi; + function et(jr) { + return jr.kind === 219; + } + e.isPrefixUnaryExpression = et; + function Gi(jr) { + return jr.kind === 220; + } + e.isPostfixUnaryExpression = Gi; + function Wt(jr) { + return jr.kind === 221; + } + e.isBinaryExpression = Wt; + function Zt(jr) { + return jr.kind === 222; + } + e.isConditionalExpression = Zt; + function _r(jr) { + return jr.kind === 223; + } + e.isTemplateExpression = _r; + function pi(jr) { + return jr.kind === 224; + } + e.isYieldExpression = pi; + function ae(jr) { + return jr.kind === 225; + } + e.isSpreadElement = ae; + function Xe(jr) { + return jr.kind === 226; + } + e.isClassExpression = Xe; + function Jr(jr) { + return jr.kind === 227; + } + e.isOmittedExpression = Jr; + function ti(jr) { + return jr.kind === 228; + } + e.isExpressionWithTypeArguments = ti; + function Ze(jr) { + return jr.kind === 229; + } + e.isAsExpression = Ze; + function Sr(jr) { + return jr.kind === 230; + } + e.isNonNullExpression = Sr; + function zr(jr) { + return jr.kind === 231; + } + e.isMetaProperty = zr; + function Wr(jr) { + return jr.kind === 232; + } + e.isSyntheticExpression = Wr; + function Je(jr) { + return jr.kind === 350; + } + e.isPartiallyEmittedExpression = Je; + function xe(jr) { + return jr.kind === 351; + } + e.isCommaListExpression = xe; + function vr(jr) { + return jr.kind === 233; + } + e.isTemplateSpan = vr; + function mr(jr) { + return jr.kind === 234; + } + e.isSemicolonClassElement = mr; + function Ar(jr) { + return jr.kind === 235; + } + e.isBlock = Ar; + function Oe(jr) { + return jr.kind === 237; + } + e.isVariableStatement = Oe; + function nr(jr) { + return jr.kind === 236; + } + e.isEmptyStatement = nr; + function Mr(jr) { + return jr.kind === 238; + } + e.isExpressionStatement = Mr; + function Pe(jr) { + return jr.kind === 239; + } + e.isIfStatement = Pe; + function Ue(jr) { + return jr.kind === 240; + } + e.isDoStatement = Ue; + function fr(jr) { + return jr.kind === 241; + } + e.isWhileStatement = fr; + function De(jr) { + return jr.kind === 242; + } + e.isForStatement = De; + function gr(jr) { + return jr.kind === 243; + } + e.isForInStatement = gr; + function Vr(jr) { + return jr.kind === 244; + } + e.isForOfStatement = Vr; + function Tr(jr) { + return jr.kind === 245; + } + e.isContinueStatement = Tr; + function vi(jr) { + return jr.kind === 246; + } + e.isBreakStatement = vi; + function Ui(jr) { + return jr.kind === 247; + } + e.isReturnStatement = Ui; + function Yi(jr) { + return jr.kind === 248; + } + e.isWithStatement = Yi; + function Wi(jr) { + return jr.kind === 249; + } + e.isSwitchStatement = Wi; + function ct(jr) { + return jr.kind === 250; + } + e.isLabeledStatement = ct; + function Li(jr) { + return jr.kind === 251; + } + e.isThrowStatement = Li; + function nt(jr) { + return jr.kind === 252; + } + e.isTryStatement = nt; + function Mt(jr) { + return jr.kind === 253; + } + e.isDebuggerStatement = Mt; + function xt(jr) { + return jr.kind === 254; + } + e.isVariableDeclaration = xt; + function ut(jr) { + return jr.kind === 255; + } + e.isVariableDeclarationList = ut; + function Dt(jr) { + return jr.kind === 256; + } + e.isFunctionDeclaration = Dt; + function Rt(jr) { + return jr.kind === 257; + } + e.isClassDeclaration = Rt; + function Ii(jr) { + return jr.kind === 258; + } + e.isInterfaceDeclaration = Ii; + function Ki(jr) { + return jr.kind === 259; + } + e.isTypeAliasDeclaration = Ki; + function Fi(jr) { + return jr.kind === 260; + } + e.isEnumDeclaration = Fi; + function ui(jr) { + return jr.kind === 261; + } + e.isModuleDeclaration = ui; + function Bt(jr) { + return jr.kind === 262; + } + e.isModuleBlock = Bt; + function wt(jr) { + return jr.kind === 263; + } + e.isCaseBlock = wt; + function na(jr) { + return jr.kind === 264; + } + e.isNamespaceExportDeclaration = na; + function Ai(jr) { + return jr.kind === 265; + } + e.isImportEqualsDeclaration = Ai; + function Oi(jr) { + return jr.kind === 266; + } + e.isImportDeclaration = Oi; + function ji(jr) { + return jr.kind === 267; + } + e.isImportClause = ji; + function Vi(jr) { + return jr.kind === 293; + } + e.isAssertClause = Vi; + function at(jr) { + return jr.kind === 294; + } + e.isAssertEntry = at; + function At(jr) { + return jr.kind === 268; + } + e.isNamespaceImport = At; + function ba(jr) { + return jr.kind === 274; + } + e.isNamespaceExport = ba; + function $a(jr) { + return jr.kind === 269; + } + e.isNamedImports = $a; + function Qa(jr) { + return jr.kind === 270; + } + e.isImportSpecifier = Qa; + function ai(jr) { + return jr.kind === 271; + } + e.isExportAssignment = ai; + function Dn(jr) { + return jr.kind === 272; + } + e.isExportDeclaration = Dn; + function ka(jr) { + return jr.kind === 273; + } + e.isNamedExports = ka; + function Ba(jr) { + return jr.kind === 275; + } + e.isExportSpecifier = Ba; + function pn(jr) { + return jr.kind === 276; + } + e.isMissingDeclaration = pn; + function Cn(jr) { + return jr.kind === 349; + } + e.isNotEmittedStatement = Cn; + function Bi(jr) { + return jr.kind === 354; + } + e.isSyntheticReference = Bi; + function kn(jr) { + return jr.kind === 352; + } + e.isMergeDeclarationMarker = kn; + function xn(jr) { + return jr.kind === 353; + } + e.isEndOfDeclarationMarker = xn; + function Kn(jr) { + return jr.kind === 277; + } + e.isExternalModuleReference = Kn; + function Pn(jr) { + return jr.kind === 278; + } + e.isJsxElement = Pn; + function eo(jr) { + return jr.kind === 279; + } + e.isJsxSelfClosingElement = eo; + function Rn(jr) { + return jr.kind === 280; + } + e.isJsxOpeningElement = Rn; + function Da(jr) { + return jr.kind === 281; + } + e.isJsxClosingElement = Da; + function bo(jr) { + return jr.kind === 282; + } + e.isJsxFragment = bo; + function Ro(jr) { + return jr.kind === 283; + } + e.isJsxOpeningFragment = Ro; + function En(jr) { + return jr.kind === 284; + } + e.isJsxClosingFragment = En; + function Wn(jr) { + return jr.kind === 285; + } + e.isJsxAttribute = Wn; + function to(jr) { + return jr.kind === 286; + } + e.isJsxAttributes = to; + function Co(jr) { + return jr.kind === 287; + } + e.isJsxSpreadAttribute = Co; + function Ko(jr) { + return jr.kind === 288; + } + e.isJsxExpression = Ko; + function Oo(jr) { + return jr.kind === 289; + } + e.isCaseClause = Oo; + function no(jr) { + return jr.kind === 290; + } + e.isDefaultClause = no; + function $o(jr) { + return jr.kind === 291; + } + e.isHeritageClause = $o; + function Pr(jr) { + return jr.kind === 292; + } + e.isCatchClause = Pr; + function xi(jr) { + return jr.kind === 296; + } + e.isPropertyAssignment = xi; + function St(jr) { + return jr.kind === 297; + } + e.isShorthandPropertyAssignment = St; + function pa(jr) { + return jr.kind === 298; + } + e.isSpreadAssignment = pa; + function dn(jr) { + return jr.kind === 299; + } + e.isEnumMember = dn; + function Jn(jr) { + return jr.kind === 301; + } + e.isUnparsedPrepend = Jn; + function Qe(jr) { + return jr.kind === 305; + } + e.isSourceFile = Qe; + function Gr(jr) { + return jr.kind === 306; + } + e.isBundle = Gr; + function S(jr) { + return jr.kind === 307; + } + e.isUnparsedSource = S; + function Ce(jr) { + return jr.kind === 309; + } + e.isJSDocTypeExpression = Ce; + function qe(jr) { + return jr.kind === 310; + } + e.isJSDocNameReference = qe; + function br(jr) { + return jr.kind === 311; + } + e.isJSDocMemberName = br; + function Zr(jr) { + return jr.kind === 324; + } + e.isJSDocLink = Zr; + function Si(jr) { + return jr.kind === 325; + } + e.isJSDocLinkCode = Si; + function Pi(jr) { + return jr.kind === 326; + } + e.isJSDocLinkPlain = Pi; + function Qi(jr) { + return jr.kind === 312; + } + e.isJSDocAllType = Qi; + function Ct(jr) { + return jr.kind === 313; + } + e.isJSDocUnknownType = Ct; + function sa(jr) { + return jr.kind === 314; + } + e.isJSDocNullableType = sa; + function en(jr) { + return jr.kind === 315; + } + e.isJSDocNonNullableType = en; + function Wa(jr) { + return jr.kind === 316; + } + e.isJSDocOptionalType = Wa; + function qn(jr) { + return jr.kind === 317; + } + e.isJSDocFunctionType = qn; + function mo(jr) { + return jr.kind === 318; + } + e.isJSDocVariadicType = mo; + function So(jr) { + return jr.kind === 319; + } + e.isJSDocNamepathType = So; + function Go(jr) { + return jr.kind === 320; + } + e.isJSDoc = Go; + function ys(jr) { + return jr.kind === 322; + } + e.isJSDocTypeLiteral = ys; + function Pc(jr) { + return jr.kind === 323; + } + e.isJSDocSignature = Pc; + function Vc(jr) { + return jr.kind === 328; + } + e.isJSDocAugmentsTag = Vc; + function Kc(jr) { + return jr.kind === 330; + } + e.isJSDocAuthorTag = Kc; + function Xs(jr) { + return jr.kind === 332; + } + e.isJSDocClassTag = Xs; + function pc(jr) { + return jr.kind === 338; + } + e.isJSDocCallbackTag = pc; + function hs(jr) { + return jr.kind === 333; + } + e.isJSDocPublicTag = hs; + function tc(jr) { + return jr.kind === 334; + } + e.isJSDocPrivateTag = tc; + function ps(jr) { + return jr.kind === 335; + } + e.isJSDocProtectedTag = ps; + function Qs(jr) { + return jr.kind === 336; + } + e.isJSDocReadonlyTag = Qs; + function js(jr) { + return jr.kind === 337; + } + e.isJSDocOverrideTag = js; + function ds(jr) { + return jr.kind === 331; + } + e.isJSDocDeprecatedTag = ds; + function Ji(jr) { + return jr.kind === 346; + } + e.isJSDocSeeTag = Ji; + function ce(jr) { + return jr.kind === 339; + } + e.isJSDocEnumTag = ce; + function Rr(jr) { + return jr.kind === 340; + } + e.isJSDocParameterTag = Rr; + function yi(jr) { + return jr.kind === 341; + } + e.isJSDocReturnTag = yi; + function qi(jr) { + return jr.kind === 342; + } + e.isJSDocThisTag = qi; + function je(jr) { + return jr.kind === 343; + } + e.isJSDocTypeTag = je; + function Hr(jr) { + return jr.kind === 344; + } + e.isJSDocTemplateTag = Hr; + function pt(jr) { + return jr.kind === 345; + } + e.isJSDocTypedefTag = pt; + function Pt(jr) { + return jr.kind === 327; + } + e.isJSDocUnknownTag = Pt; + function ga(jr) { + return jr.kind === 347; + } + e.isJSDocPropertyTag = ga; + function ua(jr) { + return jr.kind === 329; + } + e.isJSDocImplementsTag = ua; + function Xn(jr) { + return jr.kind === 348; + } + e.isSyntaxList = Xn; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(lr) { + return lr.createExportDeclaration(void 0, void 0, false, lr.createNamedExports([]), void 0); + } + e.createEmptyExports = a; + function C(lr, be, Ge, ur) { + if (e.isComputedPropertyName(Ge)) + return e.setTextRange(lr.createElementAccessExpression(be, Ge.expression), ur); + var yr = e.setTextRange(e.isMemberName(Ge) ? lr.createPropertyAccessExpression(be, Ge) : lr.createElementAccessExpression(be, Ge), Ge); + return e.getOrCreateEmitNode(yr).flags |= 64, yr; + } + e.createMemberAccessForPropertyName = C; + function w(lr, be) { + var Ge = e.parseNodeFactory.createIdentifier(lr || "React"); + return e.setParent(Ge, e.getParseTreeNode(be)), Ge; + } + function B(lr, be, Ge) { + if (e.isQualifiedName(be)) { + var ur = B(lr, be.left, Ge), yr = lr.createIdentifier(e.idText(be.right)); + return yr.escapedText = be.right.escapedText, lr.createPropertyAccessExpression(ur, yr); + } else + return w(e.idText(be), Ge); + } + function E(lr, be, Ge, ur) { + return be ? B(lr, be, ur) : lr.createPropertyAccessExpression(w(Ge, ur), "createElement"); + } + e.createJsxFactoryExpression = E; + function Q(lr, be, Ge, ur) { + return be ? B(lr, be, ur) : lr.createPropertyAccessExpression(w(Ge, ur), "Fragment"); + } + function le(lr, be, Ge, ur, yr, Ir) { + var wr = [Ge]; + if (ur && wr.push(ur), yr && yr.length > 0) + if (ur || wr.push(lr.createNull()), yr.length > 1) + for (var Ur = 0, ii = yr; Ur < ii.length; Ur++) { + var mi = ii[Ur]; + y(mi), wr.push(mi); + } + else + wr.push(yr[0]); + return e.setTextRange(lr.createCallExpression(be, void 0, wr), Ir); + } + e.createExpressionForJsxElement = le; + function N(lr, be, Ge, ur, yr, Ir, wr) { + var Ur = Q(lr, Ge, ur, Ir), ii = [Ur, lr.createNull()]; + if (yr && yr.length > 0) + if (yr.length > 1) + for (var mi = 0, pe = yr; mi < pe.length; mi++) { + var or = pe[mi]; + y(or), ii.push(or); + } + else + ii.push(yr[0]); + return e.setTextRange(lr.createCallExpression(E(lr, be, ur, Ir), void 0, ii), wr); + } + e.createExpressionForJsxFragment = N; + function p(lr, be, Ge) { + if (e.isVariableDeclarationList(be)) { + var ur = e.first(be.declarations), yr = lr.updateVariableDeclaration(ur, ur.name, void 0, void 0, Ge); + return e.setTextRange(lr.createVariableStatement(void 0, lr.updateVariableDeclarationList(be, [yr])), be); + } else { + var Ir = e.setTextRange(lr.createAssignment(be, Ge), be); + return e.setTextRange(lr.createExpressionStatement(Ir), be); + } + } + e.createForOfBindingStatement = p; + function m(lr, be, Ge) { + return e.isBlock(be) ? lr.updateBlock(be, e.setTextRange(lr.createNodeArray(Ve([Ge], be.statements, true)), be.statements)) : lr.createBlock(lr.createNodeArray([be, Ge]), true); + } + e.insertLeadingStatement = m; + function G(lr, be) { + if (e.isQualifiedName(be)) { + var Ge = G(lr, be.left), ur = e.setParent(e.setTextRange(lr.cloneNode(be.right), be.right), be.right.parent); + return e.setTextRange(lr.createPropertyAccessExpression(Ge, ur), be); + } else + return e.setParent(e.setTextRange(lr.cloneNode(be), be), be.parent); + } + e.createExpressionFromEntityName = G; + function oe(lr, be) { + return e.isIdentifier(be) ? lr.createStringLiteralFromNode(be) : e.isComputedPropertyName(be) ? e.setParent(e.setTextRange(lr.cloneNode(be.expression), be.expression), be.expression.parent) : e.setParent(e.setTextRange(lr.cloneNode(be), be), be.parent); + } + e.createExpressionForPropertyName = oe; + function f(lr, be, Ge, ur, yr) { + var Ir = e.getAllAccessorDeclarations(be, Ge), wr = Ir.firstAccessor, Ur = Ir.getAccessor, ii = Ir.setAccessor; + if (Ge === wr) + return e.setTextRange(lr.createObjectDefinePropertyCall(ur, oe(lr, Ge.name), lr.createPropertyDescriptor({ enumerable: lr.createFalse(), configurable: true, get: Ur && e.setTextRange(e.setOriginalNode(lr.createFunctionExpression(Ur.modifiers, void 0, void 0, void 0, Ur.parameters, void 0, Ur.body), Ur), Ur), set: ii && e.setTextRange(e.setOriginalNode(lr.createFunctionExpression(ii.modifiers, void 0, void 0, void 0, ii.parameters, void 0, ii.body), ii), ii) }, !yr)), wr); + } + function T(lr, be, Ge) { + return e.setOriginalNode(e.setTextRange(lr.createAssignment(C(lr, Ge, be.name, be.name), be.initializer), be), be); + } + function K(lr, be, Ge) { + return e.setOriginalNode(e.setTextRange(lr.createAssignment(C(lr, Ge, be.name, be.name), lr.cloneNode(be.name)), be), be); + } + function b(lr, be, Ge) { + return e.setOriginalNode(e.setTextRange(lr.createAssignment(C(lr, Ge, be.name, be.name), e.setOriginalNode(e.setTextRange(lr.createFunctionExpression(be.modifiers, be.asteriskToken, void 0, void 0, be.parameters, void 0, be.body), be), be)), be), be); + } + function se(lr, be, Ge, ur) { + switch (Ge.name && e.isPrivateIdentifier(Ge.name) && e.Debug.failBadSyntaxKind(Ge.name, "Private identifiers are not allowed in object literals."), Ge.kind) { + case 172: + case 173: + return f(lr, be.properties, Ge, ur, !!be.multiLine); + case 296: + return T(lr, Ge, ur); + case 297: + return K(lr, Ge, ur); + case 169: + return b(lr, Ge, ur); + } + } + e.createExpressionForObjectLiteralElementLike = se; + function J(lr, be, Ge, ur, yr) { + var Ir = be.operator; + e.Debug.assert(Ir === 45 || Ir === 46, "Expected 'node' to be a pre- or post-increment or pre- or post-decrement expression"); + var wr = lr.createTempVariable(ur); + Ge = lr.createAssignment(wr, Ge), e.setTextRange(Ge, be.operand); + var Ur = e.isPrefixUnaryExpression(be) ? lr.createPrefixUnaryExpression(Ir, wr) : lr.createPostfixUnaryExpression(wr, Ir); + return e.setTextRange(Ur, be), yr && (Ur = lr.createAssignment(yr, Ur), e.setTextRange(Ur, be)), Ge = lr.createComma(Ge, Ur), e.setTextRange(Ge, be), e.isPostfixUnaryExpression(be) && (Ge = lr.createComma(Ge, wr), e.setTextRange(Ge, be)), Ge; + } + e.expandPreOrPostfixIncrementOrDecrementExpression = J; + function ie(lr) { + return (e.getEmitFlags(lr) & 32768) !== 0; + } + e.isInternalName = ie; + function R(lr) { + return (e.getEmitFlags(lr) & 16384) !== 0; + } + e.isLocalName = R; + function q(lr) { + return (e.getEmitFlags(lr) & 8192) !== 0; + } + e.isExportName = q; + function O(lr) { + return e.isStringLiteral(lr.expression) && lr.expression.text === "use strict"; + } + function ve(lr) { + for (var be = 0, Ge = lr; be < Ge.length; be++) { + var ur = Ge[be]; + if (e.isPrologueDirective(ur)) { + if (O(ur)) + return ur; + } else + break; + } + } + e.findUseStrictPrologue = ve; + function ee(lr) { + var be = e.firstOrUndefined(lr); + return be !== void 0 && e.isPrologueDirective(be) && O(be); + } + e.startsWithUseStrict = ee; + function he(lr) { + return lr.kind === 221 && lr.operatorToken.kind === 27 || lr.kind === 351; + } + e.isCommaSequence = he; + function F(lr) { + return e.isParenthesizedExpression(lr) && e.isInJSFile(lr) && !!e.getJSDocTypeTag(lr); + } + e.isJSDocTypeAssertion = F; + function x(lr) { + var be = e.getJSDocType(lr); + return e.Debug.assertIsDefined(be), be; + } + e.getJSDocTypeAssertionType = x; + function X(lr, be) { + switch (be === void 0 && (be = 15), lr.kind) { + case 212: + return be & 16 && F(lr) ? false : (be & 1) !== 0; + case 211: + case 229: + return (be & 2) !== 0; + case 230: + return (be & 4) !== 0; + case 350: + return (be & 8) !== 0; + } + return false; + } + e.isOuterExpression = X; + function $(lr, be) { + for (be === void 0 && (be = 15); X(lr, be); ) + lr = lr.expression; + return lr; + } + e.skipOuterExpressions = $; + function A(lr) { + return $(lr, 6); + } + e.skipAssertions = A; + function y(lr) { + return e.setStartsOnNewLine(lr, true); + } + e.startOnNewLine = y; + function V(lr) { + var be = e.getOriginalNode(lr, e.isSourceFile), Ge = be && be.emitNode; + return Ge && Ge.externalHelpersModuleName; + } + e.getExternalHelpersModuleName = V; + function L(lr) { + var be = e.getOriginalNode(lr, e.isSourceFile), Ge = be && be.emitNode; + return !!Ge && (!!Ge.externalHelpersModuleName || !!Ge.externalHelpers); + } + e.hasRecordedExternalHelpers = L; + function P(lr, be, Ge, ur, yr, Ir, wr) { + if (ur.importHelpers && e.isEffectiveExternalModule(Ge, ur)) { + var Ur = void 0, ii = e.getEmitModuleKind(ur); + if (ii >= e.ModuleKind.ES2015 && ii <= e.ModuleKind.ESNext || Ge.impliedNodeFormat === e.ModuleKind.ESNext) { + var mi = e.getEmitHelpers(Ge); + if (mi) { + for (var pe = [], or = 0, qr = mi; or < qr.length; or++) { + var si = qr[or]; + if (!si.scoped) { + var Di = si.importName; + Di && e.pushIfUnique(pe, Di); + } + } + if (e.some(pe)) { + pe.sort(e.compareStringsCaseSensitive), Ur = lr.createNamedImports(e.map(pe, function(Wt) { + return e.isFileLevelUniqueName(Ge, Wt) ? lr.createImportSpecifier(false, void 0, lr.createIdentifier(Wt)) : lr.createImportSpecifier(false, lr.createIdentifier(Wt), be.getUnscopedHelperName(Wt)); + })); + var wi = e.getOriginalNode(Ge, e.isSourceFile), Xi = e.getOrCreateEmitNode(wi); + Xi.externalHelpers = true; + } + } + } else { + var et = k(lr, Ge, ur, yr, Ir || wr); + et && (Ur = lr.createNamespaceImport(et)); + } + if (Ur) { + var Gi = lr.createImportDeclaration(void 0, void 0, lr.createImportClause(false, void 0, Ur), lr.createStringLiteral(e.externalHelpersModuleNameText), void 0); + return e.addEmitFlags(Gi, 67108864), Gi; + } + } + } + e.createExternalHelpersImportDeclarationIfNeeded = P; + function k(lr, be, Ge, ur, yr) { + if (Ge.importHelpers && e.isEffectiveExternalModule(be, Ge)) { + var Ir = V(be); + if (Ir) + return Ir; + var wr = e.getEmitModuleKind(Ge), Ur = (ur || e.getESModuleInterop(Ge) && yr) && wr !== e.ModuleKind.System && (wr < e.ModuleKind.ES2015 || be.impliedNodeFormat === e.ModuleKind.CommonJS); + if (!Ur) { + var ii = e.getEmitHelpers(be); + if (ii) + for (var mi = 0, pe = ii; mi < pe.length; mi++) { + var or = pe[mi]; + if (!or.scoped) { + Ur = true; + break; + } + } + } + if (Ur) { + var qr = e.getOriginalNode(be, e.isSourceFile), si = e.getOrCreateEmitNode(qr); + return si.externalHelpersModuleName || (si.externalHelpersModuleName = lr.createUniqueName(e.externalHelpersModuleNameText)); + } + } + } + e.getOrCreateExternalHelpersModuleNameIfNeeded = k; + function Y(lr, be, Ge) { + var ur = e.getNamespaceDeclarationNode(be); + if (ur && !e.isDefaultImport(be) && !e.isExportNamespaceAsDefaultDeclaration(be)) { + var yr = ur.name; + return e.isGeneratedIdentifier(yr) ? yr : lr.createIdentifier(e.getSourceTextOfNodeFromSourceFile(Ge, yr) || e.idText(yr)); + } + if (be.kind === 266 && be.importClause || be.kind === 272 && be.moduleSpecifier) + return lr.getGeneratedNameForNode(be); + } + e.getLocalNameForExternalImport = Y; + function U(lr, be, Ge, ur, yr, Ir) { + var wr = e.getExternalModuleName(be); + if (wr && e.isStringLiteral(wr)) + return I(be, ur, lr, yr, Ir) || j(lr, wr, Ge) || lr.cloneNode(wr); + } + e.getExternalModuleNameLiteral = U; + function j(lr, be, Ge) { + var ur = Ge.renamedDependencies && Ge.renamedDependencies.get(be.text); + return ur ? lr.createStringLiteral(ur) : void 0; + } + function H(lr, be, Ge, ur) { + if (!!be) { + if (be.moduleName) + return lr.createStringLiteral(be.moduleName); + if (!be.isDeclarationFile && e.outFile(ur)) + return lr.createStringLiteral(e.getExternalModuleNameFromPath(Ge, be.fileName)); + } + } + e.tryGetModuleNameFromFile = H; + function I(lr, be, Ge, ur, yr) { + return H(Ge, ur.getExternalModuleFileFromDeclaration(lr), be, yr); + } + function l(lr) { + if (e.isDeclarationBindingElement(lr)) + return lr.initializer; + if (e.isPropertyAssignment(lr)) { + var be = lr.initializer; + return e.isAssignmentExpression(be, true) ? be.right : void 0; + } + if (e.isShorthandPropertyAssignment(lr)) + return lr.objectAssignmentInitializer; + if (e.isAssignmentExpression(lr, true)) + return lr.right; + if (e.isSpreadElement(lr)) + return l(lr.expression); + } + e.getInitializerOfBindingOrAssignmentElement = l; + function d(lr) { + if (e.isDeclarationBindingElement(lr)) + return lr.name; + if (e.isObjectLiteralElementLike(lr)) { + switch (lr.kind) { + case 296: + return d(lr.initializer); + case 297: + return lr.name; + case 298: + return d(lr.expression); + } + return; + } + return e.isAssignmentExpression(lr, true) ? d(lr.left) : e.isSpreadElement(lr) ? d(lr.expression) : lr; + } + e.getTargetOfBindingOrAssignmentElement = d; + function D(lr) { + switch (lr.kind) { + case 164: + case 203: + return lr.dotDotDotToken; + case 225: + case 298: + return lr; + } + } + e.getRestIndicatorOfBindingOrAssignmentElement = D; + function fe(lr) { + var be = g(lr); + return e.Debug.assert(!!be || e.isSpreadAssignment(lr), "Invalid property name for binding element."), be; + } + e.getPropertyNameOfBindingOrAssignmentElement = fe; + function g(lr) { + switch (lr.kind) { + case 203: + if (lr.propertyName) { + var be = lr.propertyName; + return e.isPrivateIdentifier(be) ? e.Debug.failBadSyntaxKind(be) : e.isComputedPropertyName(be) && ne(be.expression) ? be.expression : be; + } + break; + case 296: + if (lr.name) { + var be = lr.name; + return e.isPrivateIdentifier(be) ? e.Debug.failBadSyntaxKind(be) : e.isComputedPropertyName(be) && ne(be.expression) ? be.expression : be; + } + break; + case 298: + return lr.name && e.isPrivateIdentifier(lr.name) ? e.Debug.failBadSyntaxKind(lr.name) : lr.name; + } + var Ge = d(lr); + if (Ge && e.isPropertyName(Ge)) + return Ge; + } + e.tryGetPropertyNameOfBindingOrAssignmentElement = g; + function ne(lr) { + var be = lr.kind; + return be === 10 || be === 8; + } + function ue(lr) { + switch (lr.kind) { + case 201: + case 202: + case 204: + return lr.elements; + case 205: + return lr.properties; + } + } + e.getElementsOfBindingOrAssignmentPattern = ue; + function We(lr) { + if (lr) + for (var be = lr; ; ) { + if (e.isIdentifier(be) || !be.body) + return e.isIdentifier(be) ? be : be.name; + be = be.body; + } + } + e.getJSDocTypeAliasName = We; + function Fe(lr) { + var be = lr.kind; + return be === 164 || be === 166 || be === 167 || be === 168 || be === 169 || be === 171 || be === 172 || be === 173 || be === 176 || be === 213 || be === 214 || be === 226 || be === 237 || be === 256 || be === 257 || be === 258 || be === 259 || be === 260 || be === 261 || be === 265 || be === 266 || be === 271 || be === 272; + } + e.canHaveModifiers = Fe, e.isTypeNodeOrTypeParameterDeclaration = e.or(e.isTypeNode, e.isTypeParameterDeclaration), e.isQuestionOrExclamationToken = e.or(e.isQuestionToken, e.isExclamationToken), e.isIdentifierOrThisTypeNode = e.or(e.isIdentifier, e.isThisTypeNode), e.isReadonlyKeywordOrPlusOrMinusToken = e.or(e.isReadonlyKeyword, e.isPlusToken, e.isMinusToken), e.isQuestionOrPlusOrMinusToken = e.or(e.isQuestionToken, e.isPlusToken, e.isMinusToken), e.isModuleName = e.or(e.isIdentifier, e.isStringLiteral); + function Z(lr) { + var be = lr.kind; + return be === 104 || be === 110 || be === 95 || e.isLiteralExpression(lr) || e.isPrefixUnaryExpression(lr); + } + e.isLiteralTypeLikeExpression = Z; + function Be(lr) { + return lr === 42; + } + function ge(lr) { + return lr === 41 || lr === 43 || lr === 44; + } + function Re(lr) { + return Be(lr) || ge(lr); + } + function ze(lr) { + return lr === 39 || lr === 40; + } + function Ee(lr) { + return ze(lr) || Re(lr); + } + function He(lr) { + return lr === 47 || lr === 48 || lr === 49; + } + function rr(lr) { + return He(lr) || Ee(lr); + } + function Ie(lr) { + return lr === 29 || lr === 32 || lr === 31 || lr === 33 || lr === 102 || lr === 101; + } + function _e(lr) { + return Ie(lr) || rr(lr); + } + function we(lr) { + return lr === 34 || lr === 36 || lr === 35 || lr === 37; + } + function de(lr) { + return we(lr) || _e(lr); + } + function ye(lr) { + return lr === 50 || lr === 51 || lr === 52; + } + function Ae(lr) { + return ye(lr) || de(lr); + } + function er(lr) { + return lr === 55 || lr === 56; + } + function ir(lr) { + return er(lr) || Ae(lr); + } + function Cr(lr) { + return lr === 60 || ir(lr) || e.isAssignmentOperator(lr); + } + function Ye(lr) { + return Cr(lr) || lr === 27; + } + function Br(lr) { + return Ye(lr.kind); + } + e.isBinaryOperatorToken = Br; + var Er; + (function(lr) { + function be(pe, or, qr, si, Di, wi, Xi) { + var et = or > 0 ? Di[or - 1] : void 0; + return e.Debug.assertEqual(qr[or], be), Di[or] = pe.onEnter(si[or], et, Xi), qr[or] = Ur(pe, be), or; + } + lr.enter = be; + function Ge(pe, or, qr, si, Di, wi, Xi) { + e.Debug.assertEqual(qr[or], Ge), e.Debug.assertIsDefined(pe.onLeft), qr[or] = Ur(pe, Ge); + var et = pe.onLeft(si[or].left, Di[or], si[or]); + return et ? (mi(or, si, et), ii(or, qr, si, Di, et)) : or; + } + lr.left = Ge; + function ur(pe, or, qr, si, Di, wi, Xi) { + return e.Debug.assertEqual(qr[or], ur), e.Debug.assertIsDefined(pe.onOperator), qr[or] = Ur(pe, ur), pe.onOperator(si[or].operatorToken, Di[or], si[or]), or; + } + lr.operator = ur; + function yr(pe, or, qr, si, Di, wi, Xi) { + e.Debug.assertEqual(qr[or], yr), e.Debug.assertIsDefined(pe.onRight), qr[or] = Ur(pe, yr); + var et = pe.onRight(si[or].right, Di[or], si[or]); + return et ? (mi(or, si, et), ii(or, qr, si, Di, et)) : or; + } + lr.right = yr; + function Ir(pe, or, qr, si, Di, wi, Xi) { + e.Debug.assertEqual(qr[or], Ir), qr[or] = Ur(pe, Ir); + var et = pe.onExit(si[or], Di[or]); + if (or > 0) { + if (or--, pe.foldState) { + var Gi = qr[or] === Ir ? "right" : "left"; + Di[or] = pe.foldState(Di[or], et, Gi); + } + } else + wi.value = et; + return or; + } + lr.exit = Ir; + function wr(pe, or, qr, si, Di, wi, Xi) { + return e.Debug.assertEqual(qr[or], wr), or; + } + lr.done = wr; + function Ur(pe, or) { + switch (or) { + case be: + if (pe.onLeft) + return Ge; + case Ge: + if (pe.onOperator) + return ur; + case ur: + if (pe.onRight) + return yr; + case yr: + return Ir; + case Ir: + return wr; + case wr: + return wr; + default: + e.Debug.fail("Invalid state"); + } + } + lr.nextState = Ur; + function ii(pe, or, qr, si, Di) { + return pe++, or[pe] = be, qr[pe] = Di, si[pe] = void 0, pe; + } + function mi(pe, or, qr) { + if (e.Debug.shouldAssert(2)) + for (; pe >= 0; ) + e.Debug.assert(or[pe] !== qr, "Circular traversal detected."), pe--; + } + })(Er || (Er = {})); + var Ne = function() { + function lr(be, Ge, ur, yr, Ir, wr) { + this.onEnter = be, this.onLeft = Ge, this.onOperator = ur, this.onRight = yr, this.onExit = Ir, this.foldState = wr; + } + return lr; + }(); + function n(lr, be, Ge, ur, yr, Ir) { + var wr = new Ne(lr, be, Ge, ur, yr, Ir); + return Ur; + function Ur(ii, mi) { + for (var pe = { value: void 0 }, or = [Er.enter], qr = [ii], si = [void 0], Di = 0; or[Di] !== Er.done; ) + Di = or[Di](wr, Di, or, qr, si, pe, mi); + return e.Debug.assertEqual(Di, 0), pe.value; + } + } + e.createBinaryExpressionTrampoline = n; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C, w) { + return w ? e.setTextRangePosEnd(C, w.pos, w.end) : C; + } + e.setTextRange = a; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(d) { + d[d.None = 0] = "None", d[d.Yield = 1] = "Yield", d[d.Await = 2] = "Await", d[d.Type = 4] = "Type", d[d.IgnoreMissingOpenBrace = 16] = "IgnoreMissingOpenBrace", d[d.JSDoc = 32] = "JSDoc"; + })(a || (a = {})); + var C; + (function(d) { + d[d.TryParse = 0] = "TryParse", d[d.Lookahead = 1] = "Lookahead", d[d.Reparse = 2] = "Reparse"; + })(C || (C = {})); + var w, B, E, Q, le; + e.parseBaseNodeFactory = { createBaseSourceFileNode: function(d) { + return new (le || (le = e.objectAllocator.getSourceFileConstructor()))(d, -1, -1); + }, createBaseIdentifierNode: function(d) { + return new (E || (E = e.objectAllocator.getIdentifierConstructor()))(d, -1, -1); + }, createBasePrivateIdentifierNode: function(d) { + return new (Q || (Q = e.objectAllocator.getPrivateIdentifierConstructor()))(d, -1, -1); + }, createBaseTokenNode: function(d) { + return new (B || (B = e.objectAllocator.getTokenConstructor()))(d, -1, -1); + }, createBaseNode: function(d) { + return new (w || (w = e.objectAllocator.getNodeConstructor()))(d, -1, -1); + } }, e.parseNodeFactory = e.createNodeFactory(1, e.parseBaseNodeFactory); + function N(d, D) { + return D && d(D); + } + function p(d, D, fe) { + if (fe) { + if (D) + return D(fe); + for (var g = 0, ne = fe; g < ne.length; g++) { + var ue = ne[g], We = d(ue); + if (We) + return We; + } + } + } + function m(d, D) { + return d.charCodeAt(D + 1) === 42 && d.charCodeAt(D + 2) === 42 && d.charCodeAt(D + 3) !== 47; + } + e.isJSDocLikeText = m; + function G(d) { + return e.forEach(d.statements, oe) || f(d); + } + e.isFileProbablyExternalModule = G; + function oe(d) { + return K(d, 93) || e.isImportEqualsDeclaration(d) && e.isExternalModuleReference(d.moduleReference) || e.isImportDeclaration(d) || e.isExportAssignment(d) || e.isExportDeclaration(d) ? d : void 0; + } + function f(d) { + return d.flags & 4194304 ? T(d) : void 0; + } + function T(d) { + return b(d) ? d : se(d, T); + } + function K(d, D) { + return e.some(d.modifiers, function(fe) { + return fe.kind === D; + }); + } + function b(d) { + return e.isMetaProperty(d) && d.keywordToken === 100 && d.name.escapedText === "meta"; + } + function se(d, D, fe) { + if (!(!d || d.kind <= 160)) + switch (d.kind) { + case 161: + return N(D, d.left) || N(D, d.right); + case 163: + return p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.constraint) || N(D, d.default) || N(D, d.expression); + case 297: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.questionToken) || N(D, d.exclamationToken) || N(D, d.equalsToken) || N(D, d.objectAssignmentInitializer); + case 298: + return N(D, d.expression); + case 164: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.dotDotDotToken) || N(D, d.name) || N(D, d.questionToken) || N(D, d.type) || N(D, d.initializer); + case 167: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.questionToken) || N(D, d.exclamationToken) || N(D, d.type) || N(D, d.initializer); + case 166: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.questionToken) || N(D, d.type) || N(D, d.initializer); + case 296: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.questionToken) || N(D, d.initializer); + case 254: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.exclamationToken) || N(D, d.type) || N(D, d.initializer); + case 203: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.dotDotDotToken) || N(D, d.propertyName) || N(D, d.name) || N(D, d.initializer); + case 179: + case 180: + case 174: + case 175: + case 176: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || p(D, fe, d.typeParameters) || p(D, fe, d.parameters) || N(D, d.type); + case 169: + case 168: + case 171: + case 172: + case 173: + case 213: + case 256: + case 214: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.asteriskToken) || N(D, d.name) || N(D, d.questionToken) || N(D, d.exclamationToken) || p(D, fe, d.typeParameters) || p(D, fe, d.parameters) || N(D, d.type) || N(D, d.equalsGreaterThanToken) || N(D, d.body); + case 170: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.body); + case 178: + return N(D, d.typeName) || p(D, fe, d.typeArguments); + case 177: + return N(D, d.assertsModifier) || N(D, d.parameterName) || N(D, d.type); + case 181: + return N(D, d.exprName) || p(D, fe, d.typeArguments); + case 182: + return p(D, fe, d.members); + case 183: + return N(D, d.elementType); + case 184: + return p(D, fe, d.elements); + case 187: + case 188: + return p(D, fe, d.types); + case 189: + return N(D, d.checkType) || N(D, d.extendsType) || N(D, d.trueType) || N(D, d.falseType); + case 190: + return N(D, d.typeParameter); + case 200: + return N(D, d.argument) || N(D, d.assertions) || N(D, d.qualifier) || p(D, fe, d.typeArguments); + case 295: + return N(D, d.assertClause); + case 191: + case 193: + return N(D, d.type); + case 194: + return N(D, d.objectType) || N(D, d.indexType); + case 195: + return N(D, d.readonlyToken) || N(D, d.typeParameter) || N(D, d.nameType) || N(D, d.questionToken) || N(D, d.type) || p(D, fe, d.members); + case 196: + return N(D, d.literal); + case 197: + return N(D, d.dotDotDotToken) || N(D, d.name) || N(D, d.questionToken) || N(D, d.type); + case 201: + case 202: + return p(D, fe, d.elements); + case 204: + return p(D, fe, d.elements); + case 205: + return p(D, fe, d.properties); + case 206: + return N(D, d.expression) || N(D, d.questionDotToken) || N(D, d.name); + case 207: + return N(D, d.expression) || N(D, d.questionDotToken) || N(D, d.argumentExpression); + case 208: + case 209: + return N(D, d.expression) || N(D, d.questionDotToken) || p(D, fe, d.typeArguments) || p(D, fe, d.arguments); + case 210: + return N(D, d.tag) || N(D, d.questionDotToken) || p(D, fe, d.typeArguments) || N(D, d.template); + case 211: + return N(D, d.type) || N(D, d.expression); + case 212: + return N(D, d.expression); + case 215: + return N(D, d.expression); + case 216: + return N(D, d.expression); + case 217: + return N(D, d.expression); + case 219: + return N(D, d.operand); + case 224: + return N(D, d.asteriskToken) || N(D, d.expression); + case 218: + return N(D, d.expression); + case 220: + return N(D, d.operand); + case 221: + return N(D, d.left) || N(D, d.operatorToken) || N(D, d.right); + case 229: + return N(D, d.expression) || N(D, d.type); + case 230: + return N(D, d.expression); + case 231: + return N(D, d.name); + case 222: + return N(D, d.condition) || N(D, d.questionToken) || N(D, d.whenTrue) || N(D, d.colonToken) || N(D, d.whenFalse); + case 225: + return N(D, d.expression); + case 235: + case 262: + return p(D, fe, d.statements); + case 305: + return p(D, fe, d.statements) || N(D, d.endOfFileToken); + case 237: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.declarationList); + case 255: + return p(D, fe, d.declarations); + case 238: + return N(D, d.expression); + case 239: + return N(D, d.expression) || N(D, d.thenStatement) || N(D, d.elseStatement); + case 240: + return N(D, d.statement) || N(D, d.expression); + case 241: + return N(D, d.expression) || N(D, d.statement); + case 242: + return N(D, d.initializer) || N(D, d.condition) || N(D, d.incrementor) || N(D, d.statement); + case 243: + return N(D, d.initializer) || N(D, d.expression) || N(D, d.statement); + case 244: + return N(D, d.awaitModifier) || N(D, d.initializer) || N(D, d.expression) || N(D, d.statement); + case 245: + case 246: + return N(D, d.label); + case 247: + return N(D, d.expression); + case 248: + return N(D, d.expression) || N(D, d.statement); + case 249: + return N(D, d.expression) || N(D, d.caseBlock); + case 263: + return p(D, fe, d.clauses); + case 289: + return N(D, d.expression) || p(D, fe, d.statements); + case 290: + return p(D, fe, d.statements); + case 250: + return N(D, d.label) || N(D, d.statement); + case 251: + return N(D, d.expression); + case 252: + return N(D, d.tryBlock) || N(D, d.catchClause) || N(D, d.finallyBlock); + case 292: + return N(D, d.variableDeclaration) || N(D, d.block); + case 165: + return N(D, d.expression); + case 257: + case 226: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || p(D, fe, d.typeParameters) || p(D, fe, d.heritageClauses) || p(D, fe, d.members); + case 258: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || p(D, fe, d.typeParameters) || p(D, fe, d.heritageClauses) || p(D, fe, d.members); + case 259: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || p(D, fe, d.typeParameters) || N(D, d.type); + case 260: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || p(D, fe, d.members); + case 299: + return N(D, d.name) || N(D, d.initializer); + case 261: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.body); + case 265: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.name) || N(D, d.moduleReference); + case 266: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.importClause) || N(D, d.moduleSpecifier) || N(D, d.assertClause); + case 267: + return N(D, d.name) || N(D, d.namedBindings); + case 293: + return p(D, fe, d.elements); + case 294: + return N(D, d.name) || N(D, d.value); + case 264: + return N(D, d.name); + case 268: + return N(D, d.name); + case 274: + return N(D, d.name); + case 269: + case 273: + return p(D, fe, d.elements); + case 272: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.exportClause) || N(D, d.moduleSpecifier) || N(D, d.assertClause); + case 270: + case 275: + return N(D, d.propertyName) || N(D, d.name); + case 271: + return p(D, fe, d.decorators) || p(D, fe, d.modifiers) || N(D, d.expression); + case 223: + return N(D, d.head) || p(D, fe, d.templateSpans); + case 233: + return N(D, d.expression) || N(D, d.literal); + case 198: + return N(D, d.head) || p(D, fe, d.templateSpans); + case 199: + return N(D, d.type) || N(D, d.literal); + case 162: + return N(D, d.expression); + case 291: + return p(D, fe, d.types); + case 228: + return N(D, d.expression) || p(D, fe, d.typeArguments); + case 277: + return N(D, d.expression); + case 276: + return p(D, fe, d.decorators); + case 351: + return p(D, fe, d.elements); + case 278: + return N(D, d.openingElement) || p(D, fe, d.children) || N(D, d.closingElement); + case 282: + return N(D, d.openingFragment) || p(D, fe, d.children) || N(D, d.closingFragment); + case 279: + case 280: + return N(D, d.tagName) || p(D, fe, d.typeArguments) || N(D, d.attributes); + case 286: + return p(D, fe, d.properties); + case 285: + return N(D, d.name) || N(D, d.initializer); + case 287: + return N(D, d.expression); + case 288: + return N(D, d.dotDotDotToken) || N(D, d.expression); + case 281: + return N(D, d.tagName); + case 185: + case 186: + case 309: + case 315: + case 314: + case 316: + case 318: + return N(D, d.type); + case 317: + return p(D, fe, d.parameters) || N(D, d.type); + case 320: + return (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)) || p(D, fe, d.tags); + case 346: + return N(D, d.tagName) || N(D, d.name) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 310: + return N(D, d.name); + case 311: + return N(D, d.left) || N(D, d.right); + case 340: + case 347: + return N(D, d.tagName) || (d.isNameFirst ? N(D, d.name) || N(D, d.typeExpression) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)) : N(D, d.typeExpression) || N(D, d.name) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment))); + case 330: + return N(D, d.tagName) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 329: + return N(D, d.tagName) || N(D, d.class) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 328: + return N(D, d.tagName) || N(D, d.class) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 344: + return N(D, d.tagName) || N(D, d.constraint) || p(D, fe, d.typeParameters) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 345: + return N(D, d.tagName) || (d.typeExpression && d.typeExpression.kind === 309 ? N(D, d.typeExpression) || N(D, d.fullName) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)) : N(D, d.fullName) || N(D, d.typeExpression) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment))); + case 338: + return N(D, d.tagName) || N(D, d.fullName) || N(D, d.typeExpression) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 341: + case 343: + case 342: + case 339: + return N(D, d.tagName) || N(D, d.typeExpression) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 323: + return e.forEach(d.typeParameters, D) || e.forEach(d.parameters, D) || N(D, d.type); + case 324: + case 325: + case 326: + return N(D, d.name); + case 322: + return e.forEach(d.jsDocPropertyTags, D); + case 327: + case 332: + case 333: + case 334: + case 335: + case 336: + case 331: + return N(D, d.tagName) || (typeof d.comment == "string" ? void 0 : p(D, fe, d.comment)); + case 350: + return N(D, d.expression); + } + } + e.forEachChild = se; + function J(d, D, fe) { + for (var g = ie(d), ne = []; ne.length < g.length; ) + ne.push(d); + for (; g.length !== 0; ) { + var ue = g.pop(), We = ne.pop(); + if (e.isArray(ue)) { + if (fe) { + var Fe = fe(ue, We); + if (Fe) { + if (Fe === "skip") + continue; + return Fe; + } + } + for (var Z = ue.length - 1; Z >= 0; --Z) + g.push(ue[Z]), ne.push(We); + } else { + var Fe = D(ue, We); + if (Fe) { + if (Fe === "skip") + continue; + return Fe; + } + if (ue.kind >= 161) + for (var Be = 0, ge = ie(ue); Be < ge.length; Be++) { + var Re = ge[Be]; + g.push(Re), ne.push(ue); + } + } + } + } + e.forEachChildRecursively = J; + function ie(d) { + var D = []; + return se(d, fe, fe), D; + function fe(g) { + D.unshift(g); + } + } + function R(d) { + d.externalModuleIndicator = G(d); + } + function q(d, D, fe, g, ne) { + g === void 0 && (g = false), e.tracing === null || e.tracing === void 0 || e.tracing.push("parse", "createSourceFile", { path: d }, true), e.performance.mark("beforeParse"); + var ue; + e.perfLogger.logStartParseSourceFile(d); + var We = typeof fe == "object" ? fe : { languageVersion: fe }, Fe = We.languageVersion, Z = We.setExternalModuleIndicator, Be = We.impliedNodeFormat; + if (Fe === 100) + ue = X.parseSourceFile(d, D, Fe, void 0, g, 6, e.noop); + else { + var ge = Be === void 0 ? Z : function(Re) { + return Re.impliedNodeFormat = Be, (Z || R)(Re); + }; + ue = X.parseSourceFile(d, D, Fe, void 0, g, ne, ge); + } + return e.perfLogger.logStopParseSourceFile(), e.performance.mark("afterParse"), e.performance.measure("Parse", "beforeParse", "afterParse"), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), ue; + } + e.createSourceFile = q; + function O(d, D) { + return X.parseIsolatedEntityName(d, D); + } + e.parseIsolatedEntityName = O; + function ve(d, D) { + return X.parseJsonText(d, D); + } + e.parseJsonText = ve; + function ee(d) { + return d.externalModuleIndicator !== void 0; + } + e.isExternalModule = ee; + function he(d, D, fe, g) { + g === void 0 && (g = false); + var ne = $.updateSourceFile(d, D, fe, g); + return ne.flags |= d.flags & 6291456, ne; + } + e.updateSourceFile = he; + function F(d, D, fe) { + var g = X.JSDocParser.parseIsolatedJSDocComment(d, D, fe); + return g && g.jsDoc && X.fixupParentReferences(g.jsDoc), g; + } + e.parseIsolatedJSDocComment = F; + function x(d, D, fe) { + return X.JSDocParser.parseJSDocTypeExpressionForTests(d, D, fe); + } + e.parseJSDocTypeExpressionForTests = x; + var X; + (function(d) { + var D = e.createScanner(99, true), fe = 20480, g, ne, ue, We, Fe; + function Z(Le) { + return Ae++, Le; + } + var Be = { createBaseSourceFileNode: function(Le) { + return Z(new Fe(Le, 0, 0)); + }, createBaseIdentifierNode: function(Le) { + return Z(new ue(Le, 0, 0)); + }, createBasePrivateIdentifierNode: function(Le) { + return Z(new We(Le, 0, 0)); + }, createBaseTokenNode: function(Le) { + return Z(new ne(Le, 0, 0)); + }, createBaseNode: function(Le) { + return Z(new g(Le, 0, 0)); + } }, ge = e.createNodeFactory(11, Be), Re, ze, Ee, He, rr, Ie, _e, we, de, ye, Ae, er, ir, Cr, Ye, Br, Er, Ne = true, n = false; + function lr(Le, Nr, ri, di, Mi, st, ra) { + var Ta; + if (Mi === void 0 && (Mi = false), st = e.ensureScriptKind(Le, st), st === 6) { + var ha = Ge(Le, Nr, ri, di, Mi); + return e.convertToObjectWorker(ha, (Ta = ha.statements[0]) === null || Ta === void 0 ? void 0 : Ta.expression, ha.parseDiagnostics, false, void 0, void 0), ha.referencedFiles = e.emptyArray, ha.typeReferenceDirectives = e.emptyArray, ha.libReferenceDirectives = e.emptyArray, ha.amdDependencies = e.emptyArray, ha.hasNoDefaultLib = false, ha.pragmas = e.emptyMap, ha; + } + ur(Le, Nr, ri, di, st); + var Na = Ir(ri, Mi, st, ra || R); + return yr(), Na; + } + d.parseSourceFile = lr; + function be(Le, Nr) { + ur("", Le, Nr, void 0, 1), Tr(); + var ri = ds(true), di = De() === 1 && !_e.length; + return yr(), di ? ri : void 0; + } + d.parseIsolatedEntityName = be; + function Ge(Le, Nr, ri, di, Mi) { + ri === void 0 && (ri = 2), Mi === void 0 && (Mi = false), ur(Le, Nr, ri, di, 6), ze = Er, Tr(); + var st = Ue(), ra, Ta; + if (De() === 1) + ra = Cn([], st, st), Ta = ai(); + else { + for (var ha = void 0; De() !== 1; ) { + var Na = void 0; + switch (De()) { + case 22: + Na = cl(); + break; + case 110: + case 95: + case 104: + Na = ai(); + break; + case 40: + Rt(function() { + return Tr() === 8 && Tr() !== 58; + }) ? Na = ol() : Na = Ut(); + break; + case 8: + case 10: + if (Rt(function() { + return Tr() !== 58; + })) { + Na = ga(); + break; + } + default: + Na = Ut(); + break; + } + ha && e.isArray(ha) ? ha.push(Na) : ha ? ha = [ha, Na] : (ha = Na, De() !== 1 && Ar(e.Diagnostics.Unexpected_token)); + } + var In = e.isArray(ha) ? Bi(ge.createArrayLiteralExpression(ha), st) : e.Debug.checkDefined(ha), qo = ge.createExpressionStatement(In); + Bi(qo, st), ra = Cn([qo], st), Ta = $a(1, e.Diagnostics.Unexpected_token); + } + var co = or(Le, 2, 6, false, ra, Ta, ze, e.noop); + Mi && pe(co), co.nodeCount = Ae, co.identifierCount = Cr, co.identifiers = er, co.parseDiagnostics = e.attachFileToDiagnostics(_e, co), we && (co.jsDocDiagnostics = e.attachFileToDiagnostics(we, co)); + var ts = co; + return yr(), ts; + } + d.parseJsonText = Ge; + function ur(Le, Nr, ri, di, Mi) { + switch (g = e.objectAllocator.getNodeConstructor(), ne = e.objectAllocator.getTokenConstructor(), ue = e.objectAllocator.getIdentifierConstructor(), We = e.objectAllocator.getPrivateIdentifierConstructor(), Fe = e.objectAllocator.getSourceFileConstructor(), Re = e.normalizePath(Le), Ee = Nr, He = ri, de = di, rr = Mi, Ie = e.getLanguageVariant(Mi), _e = [], Ye = 0, er = new e.Map(), ir = new e.Map(), Cr = 0, Ae = 0, ze = 0, Ne = true, rr) { + case 1: + case 2: + Er = 262144; + break; + case 6: + Er = 67371008; + break; + default: + Er = 0; + break; + } + n = false, D.setText(Ee), D.setOnError(Pe), D.setScriptTarget(He), D.setLanguageVariant(Ie); + } + function yr() { + D.clearCommentDirectives(), D.setText(""), D.setOnError(void 0), Ee = void 0, He = void 0, de = void 0, rr = void 0, Ie = void 0, ze = 0, _e = void 0, we = void 0, Ye = 0, er = void 0, Br = void 0, Ne = true; + } + function Ir(Le, Nr, ri, di) { + var Mi = A(Re); + Mi && (Er |= 16777216), ze = Er, Tr(); + var st = Qi(0, nc); + e.Debug.assert(De() === 1); + var ra = ii(ai()), Ta = or(Re, Le, ri, Mi, st, ra, ze, di); + return V(Ta, Ee), L(Ta, ha), Ta.commentDirectives = D.getCommentDirectives(), Ta.nodeCount = Ae, Ta.identifierCount = Cr, Ta.identifiers = er, Ta.parseDiagnostics = e.attachFileToDiagnostics(_e, Ta), we && (Ta.jsDocDiagnostics = e.attachFileToDiagnostics(we, Ta)), Nr && pe(Ta), Ta; + function ha(Na, In, qo) { + _e.push(e.createDetachedDiagnostic(Re, Na, In, qo)); + } + } + function wr(Le, Nr) { + return Nr ? ii(Le) : Le; + } + var Ur = false; + function ii(Le) { + e.Debug.assert(!Le.jsDoc); + var Nr = e.mapDefined(e.getJSDocCommentRanges(Le, Ee), function(ri) { + return G_.parseJSDocComment(Le, ri.pos, ri.end - ri.pos); + }); + return Nr.length && (Le.jsDoc = Nr), Ur && (Ur = false, Le.flags |= 268435456), Le; + } + function mi(Le) { + var Nr = de, ri = $.createSyntaxCursor(Le); + de = { currentNode: ts }; + var di = [], Mi = _e; + _e = []; + for (var st = 0, ra = qo(Le.statements, 0), Ta = function() { + var vs = Le.statements[st], Ac = Le.statements[ra]; + e.addRange(di, Le.statements, st, ra), st = co(Le.statements, ra); + var Is = e.findIndex(Mi, function(sc) { + return sc.start >= vs.pos; + }), Qu = Is >= 0 ? e.findIndex(Mi, function(sc) { + return sc.start >= Ac.pos; + }, Is) : -1; + Is >= 0 && e.addRange(_e, Mi, Is, Qu >= 0 ? Qu : void 0), Dt(function() { + var sc = Er; + for (Er |= 32768, D.setTextPos(Ac.pos), Tr(); De() !== 1; ) { + var bc = D.getStartPos(), Mc = Ct(0, nc); + if (di.push(Mc), bc === D.getStartPos() && Tr(), st >= 0) { + var Yu = Le.statements[st]; + if (Mc.end === Yu.pos) + break; + Mc.end > Yu.pos && (st = co(Le.statements, st + 1)); + } + } + Er = sc; + }, 2), ra = st >= 0 ? qo(Le.statements, st) : -1; + }; ra !== -1; ) + Ta(); + if (st >= 0) { + var ha = Le.statements[st]; + e.addRange(di, Le.statements, st); + var Na = e.findIndex(Mi, function(vs) { + return vs.start >= ha.pos; + }); + Na >= 0 && e.addRange(_e, Mi, Na); + } + return de = Nr, ge.updateSourceFile(Le, e.setTextRange(ge.createNodeArray(di), Le.statements)); + function In(vs) { + return !(vs.flags & 32768) && !!(vs.transformFlags & 16777216); + } + function qo(vs, Ac) { + for (var Is = Ac; Is < vs.length; Is++) + if (In(vs[Is])) + return Is; + return -1; + } + function co(vs, Ac) { + for (var Is = Ac; Is < vs.length; Is++) + if (!In(vs[Is])) + return Is; + return -1; + } + function ts(vs) { + var Ac = ri.currentNode(vs); + return Ne && Ac && In(Ac) && (Ac.intersectsChange = true), Ac; + } + } + function pe(Le) { + e.setParentRecursive(Le, true); + } + d.fixupParentReferences = pe; + function or(Le, Nr, ri, di, Mi, st, ra, Ta) { + var ha = ge.createSourceFile(Mi, st, ra); + return e.setTextRangePosWidth(ha, 0, Ee.length), Na(ha), !di && ee(ha) && ha.transformFlags & 16777216 && (ha = mi(ha), Na(ha)), ha; + function Na(In) { + In.text = Ee, In.bindDiagnostics = [], In.bindSuggestionDiagnostics = void 0, In.languageVersion = Nr, In.fileName = Le, In.languageVariant = e.getLanguageVariant(ri), In.isDeclarationFile = di, In.scriptKind = ri, Ta(In), In.setExternalModuleIndicator = Ta; + } + } + function qr(Le, Nr) { + Le ? Er |= Nr : Er &= ~Nr; + } + function si(Le) { + qr(Le, 4096); + } + function Di(Le) { + qr(Le, 8192); + } + function wi(Le) { + qr(Le, 16384); + } + function Xi(Le) { + qr(Le, 32768); + } + function et(Le, Nr) { + var ri = Le & Er; + if (ri) { + qr(false, ri); + var di = Nr(); + return qr(true, ri), di; + } + return Nr(); + } + function Gi(Le, Nr) { + var ri = Le & ~Er; + if (ri) { + qr(true, ri); + var di = Nr(); + return qr(false, ri), di; + } + return Nr(); + } + function Wt(Le) { + return et(4096, Le); + } + function Zt(Le) { + return Gi(4096, Le); + } + function _r(Le) { + return et(65536, Le); + } + function pi(Le) { + return Gi(65536, Le); + } + function ae(Le) { + return Gi(8192, Le); + } + function Xe(Le) { + return Gi(16384, Le); + } + function Jr(Le) { + return Gi(32768, Le); + } + function ti(Le) { + return et(32768, Le); + } + function Ze(Le) { + return Gi(40960, Le); + } + function Sr(Le) { + return et(40960, Le); + } + function zr(Le) { + return (Er & Le) !== 0; + } + function Wr() { + return zr(8192); + } + function Je() { + return zr(4096); + } + function xe() { + return zr(65536); + } + function vr() { + return zr(16384); + } + function mr() { + return zr(32768); + } + function Ar(Le, Nr) { + return nr(D.getTokenPos(), D.getTextPos(), Le, Nr); + } + function Oe(Le, Nr, ri, di) { + var Mi = e.lastOrUndefined(_e), st; + return (!Mi || Le !== Mi.start) && (st = e.createDetachedDiagnostic(Re, Le, Nr, ri, di), _e.push(st)), n = true, st; + } + function nr(Le, Nr, ri, di) { + return Oe(Le, Nr - Le, ri, di); + } + function Mr(Le, Nr, ri) { + nr(Le.pos, Le.end, Nr, ri); + } + function Pe(Le, Nr) { + Oe(D.getTextPos(), Nr, Le); + } + function Ue() { + return D.getStartPos(); + } + function fr() { + return D.hasPrecedingJSDocComment(); + } + function De() { + return ye; + } + function gr() { + return ye = D.scan(); + } + function Vr(Le) { + return Tr(), Le(); + } + function Tr() { + return e.isKeyword(ye) && (D.hasUnicodeEscape() || D.hasExtendedUnicodeEscape()) && nr(D.getTokenPos(), D.getTextPos(), e.Diagnostics.Keywords_cannot_contain_escape_characters), gr(); + } + function vi() { + return ye = D.scanJsDocToken(); + } + function Ui() { + return ye = D.reScanGreaterToken(); + } + function Yi() { + return ye = D.reScanSlashToken(); + } + function Wi(Le) { + return ye = D.reScanTemplateToken(Le); + } + function ct() { + return ye = D.reScanTemplateHeadOrNoSubstitutionTemplate(); + } + function Li() { + return ye = D.reScanLessThanToken(); + } + function nt() { + return ye = D.reScanHashToken(); + } + function Mt() { + return ye = D.scanJsxIdentifier(); + } + function xt() { + return ye = D.scanJsxToken(); + } + function ut() { + return ye = D.scanJsxAttributeValue(); + } + function Dt(Le, Nr) { + var ri = ye, di = _e.length, Mi = n, st = Er, ra = Nr !== 0 ? D.lookAhead(Le) : D.tryScan(Le); + return e.Debug.assert(st === Er), (!ra || Nr !== 0) && (ye = ri, Nr !== 2 && (_e.length = di), n = Mi), ra; + } + function Rt(Le) { + return Dt(Le, 1); + } + function Ii(Le) { + return Dt(Le, 0); + } + function Ki() { + return De() === 79 ? true : De() > 116; + } + function Fi() { + return De() === 79 ? true : De() === 125 && Wr() || De() === 132 && mr() ? false : De() > 116; + } + function ui(Le, Nr, ri) { + return ri === void 0 && (ri = true), De() === Le ? (ri && Tr(), true) : (Nr ? Ar(Nr) : Ar(e.Diagnostics._0_expected, e.tokenToString(Le)), false); + } + var Bt = Object.keys(e.textToKeywordObj).filter(function(Le) { + return Le.length > 2; + }); + function wt(Le) { + var Nr; + if (e.isTaggedTemplateExpression(Le)) { + nr(e.skipTrivia(Ee, Le.template.pos), Le.template.end, e.Diagnostics.Module_declaration_names_may_only_use_or_quoted_strings); + return; + } + var ri = e.isIdentifier(Le) ? e.idText(Le) : void 0; + if (!ri || !e.isIdentifierText(ri, He)) { + Ar(e.Diagnostics._0_expected, e.tokenToString(26)); + return; + } + var di = e.skipTrivia(Ee, Le.pos); + switch (ri) { + case "const": + case "let": + case "var": + nr(di, Le.end, e.Diagnostics.Variable_declaration_not_allowed_at_this_location); + return; + case "declare": + return; + case "interface": + na(e.Diagnostics.Interface_name_cannot_be_0, e.Diagnostics.Interface_must_be_given_a_name, 18); + return; + case "is": + nr(di, D.getTextPos(), e.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); + return; + case "module": + case "namespace": + na(e.Diagnostics.Namespace_name_cannot_be_0, e.Diagnostics.Namespace_must_be_given_a_name, 18); + return; + case "type": + na(e.Diagnostics.Type_alias_name_cannot_be_0, e.Diagnostics.Type_alias_must_be_given_a_name, 63); + return; + } + var Mi = (Nr = e.getSpellingSuggestion(ri, Bt, function(st) { + return st; + })) !== null && Nr !== void 0 ? Nr : Ai(ri); + if (Mi) { + nr(di, Le.end, e.Diagnostics.Unknown_keyword_or_identifier_Did_you_mean_0, Mi); + return; + } + De() !== 0 && nr(di, Le.end, e.Diagnostics.Unexpected_keyword_or_identifier); + } + function na(Le, Nr, ri) { + De() === ri ? Ar(Nr) : Ar(Le, D.getTokenValue()); + } + function Ai(Le) { + for (var Nr = 0, ri = Bt; Nr < ri.length; Nr++) { + var di = ri[Nr]; + if (Le.length > di.length + 2 && e.startsWith(Le, di)) + return "".concat(di, " ").concat(Le.slice(di.length)); + } + } + function Oi(Le, Nr, ri) { + if (De() === 59 && !D.hasPrecedingLineBreak()) { + Ar(e.Diagnostics.Decorators_must_precede_the_name_and_all_keywords_of_property_declarations); + return; + } + if (De() === 20) { + Ar(e.Diagnostics.Cannot_start_a_function_call_in_a_type_annotation), Tr(); + return; + } + if (Nr && !ka()) { + ri ? Ar(e.Diagnostics._0_expected, e.tokenToString(26)) : Ar(e.Diagnostics.Expected_for_property_initializer); + return; + } + if (!Ba()) { + if (ri) { + Ar(e.Diagnostics._0_expected, e.tokenToString(26)); + return; + } + wt(Le); + } + } + function ji(Le) { + return De() === Le ? (vi(), true) : (Ar(e.Diagnostics._0_expected, e.tokenToString(Le)), false); + } + function Vi(Le, Nr, ri, di) { + if (De() === Nr) { + Tr(); + return; + } + var Mi = Ar(e.Diagnostics._0_expected, e.tokenToString(Nr)); + !ri || Mi && e.addRelatedInfo(Mi, e.createDetachedDiagnostic(Re, di, 1, e.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, e.tokenToString(Le), e.tokenToString(Nr))); + } + function at(Le) { + return De() === Le ? (Tr(), true) : false; + } + function At(Le) { + if (De() === Le) + return ai(); + } + function ba(Le) { + if (De() === Le) + return Dn(); + } + function $a(Le, Nr, ri) { + return At(Le) || kn(Le, false, Nr || e.Diagnostics._0_expected, ri || e.tokenToString(Le)); + } + function Qa(Le) { + return ba(Le) || kn(Le, false, e.Diagnostics._0_expected, e.tokenToString(Le)); + } + function ai() { + var Le = Ue(), Nr = De(); + return Tr(), Bi(ge.createToken(Nr), Le); + } + function Dn() { + var Le = Ue(), Nr = De(); + return vi(), Bi(ge.createToken(Nr), Le); + } + function ka() { + return De() === 26 ? true : De() === 19 || De() === 1 || D.hasPrecedingLineBreak(); + } + function Ba() { + return ka() ? (De() === 26 && Tr(), true) : false; + } + function pn() { + return Ba() || ui(26); + } + function Cn(Le, Nr, ri, di) { + var Mi = ge.createNodeArray(Le, di); + return e.setTextRangePosEnd(Mi, Nr, ri != null ? ri : D.getStartPos()), Mi; + } + function Bi(Le, Nr, ri) { + return e.setTextRangePosEnd(Le, Nr, ri != null ? ri : D.getStartPos()), Er && (Le.flags |= Er), n && (n = false, Le.flags |= 131072), Le; + } + function kn(Le, Nr, ri, di) { + Nr ? Oe(D.getStartPos(), 0, ri, di) : ri && Ar(ri, di); + var Mi = Ue(), st = Le === 79 ? ge.createIdentifier("", void 0, void 0) : e.isTemplateLiteralKind(Le) ? ge.createTemplateLiteralLikeNode(Le, "", "", void 0) : Le === 8 ? ge.createNumericLiteral("", void 0) : Le === 10 ? ge.createStringLiteral("", void 0) : Le === 276 ? ge.createMissingDeclaration() : ge.createToken(Le); + return Bi(st, Mi); + } + function xn(Le) { + var Nr = er.get(Le); + return Nr === void 0 && er.set(Le, Nr = Le), Nr; + } + function Kn(Le, Nr, ri) { + if (Le) { + Cr++; + var di = Ue(), Mi = De(), st = xn(D.getTokenValue()); + return gr(), Bi(ge.createIdentifier(st, void 0, Mi), di); + } + if (De() === 80) + return Ar(ri || e.Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies), Kn(true); + if (De() === 0 && D.tryScan(function() { + return D.reScanInvalidIdentifier() === 79; + })) + return Kn(true); + Cr++; + var ra = De() === 1, Ta = D.isReservedWord(), ha = D.getTokenText(), Na = Ta ? e.Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here : e.Diagnostics.Identifier_expected; + return kn(79, ra, Nr || Na, ha); + } + function Pn(Le) { + return Kn(Ki(), void 0, Le); + } + function eo(Le, Nr) { + return Kn(Fi(), Le, Nr); + } + function Rn(Le) { + return Kn(e.tokenIsIdentifierOrKeyword(De()), Le); + } + function Da() { + return e.tokenIsIdentifierOrKeyword(De()) || De() === 10 || De() === 8; + } + function bo() { + return e.tokenIsIdentifierOrKeyword(De()) || De() === 10; + } + function Ro(Le) { + if (De() === 10 || De() === 8) { + var Nr = ga(); + return Nr.text = xn(Nr.text), Nr; + } + return Le && De() === 22 ? Wn() : De() === 80 ? Co() : Rn(); + } + function En() { + return Ro(true); + } + function Wn() { + var Le = Ue(); + ui(22); + var Nr = Wt(ns); + return ui(23), Bi(ge.createComputedPropertyName(Nr), Le); + } + function to(Le) { + var Nr = ir.get(Le); + return Nr === void 0 && ir.set(Le, Nr = Le), Nr; + } + function Co() { + var Le = Ue(), Nr = ge.createPrivateIdentifier(to(D.getTokenText())); + return Tr(), Bi(Nr, Le); + } + function Ko(Le) { + return De() === Le && Ii(no); + } + function Oo() { + return Tr(), D.hasPrecedingLineBreak() ? false : St(); + } + function no() { + switch (De()) { + case 85: + return Tr() === 92; + case 93: + return Tr(), De() === 88 ? Rt(pa) : De() === 152 ? Rt(Pr) : $o(); + case 88: + return pa(); + case 124: + case 136: + case 149: + return Tr(), St(); + default: + return Oo(); + } + } + function $o() { + return De() !== 41 && De() !== 127 && De() !== 18 && St(); + } + function Pr() { + return Tr(), $o(); + } + function xi() { + return e.isModifierKind(De()) && Ii(no); + } + function St() { + return De() === 22 || De() === 18 || De() === 41 || De() === 25 || Da(); + } + function pa() { + return Tr(), De() === 84 || De() === 98 || De() === 118 || De() === 126 && Rt(wl) || De() === 131 && Rt(Iu); + } + function dn(Le, Nr) { + var ri = sa(Le); + if (ri) + return true; + switch (Le) { + case 0: + case 1: + case 3: + return !(De() === 26 && Nr) && Ku(); + case 2: + return De() === 82 || De() === 88; + case 4: + return Rt(bn); + case 5: + return Rt(Lp) || De() === 26 && !Nr; + case 6: + return De() === 22 || Da(); + case 12: + switch (De()) { + case 22: + case 41: + case 25: + case 24: + return true; + default: + return Da(); + } + case 18: + return Da(); + case 9: + return De() === 22 || De() === 25 || Da(); + case 24: + return bo(); + case 7: + return De() === 18 ? Rt(Jn) : Nr ? Fi() && !Ce() : Cu() && !Ce(); + case 8: + return Hc(); + case 10: + return De() === 27 || De() === 25 || Hc(); + case 19: + return De() === 101 || Fi(); + case 15: + switch (De()) { + case 27: + case 24: + return true; + } + case 11: + return De() === 25 || qs(); + case 16: + return pu(false); + case 17: + return pu(true); + case 20: + case 21: + return De() === 27 || Xr(); + case 22: + return Ll(); + case 23: + return e.tokenIsIdentifierOrKeyword(De()); + case 13: + return e.tokenIsIdentifierOrKeyword(De()) || De() === 18; + case 14: + return true; + } + return e.Debug.fail("Non-exhaustive case in 'isListElement'."); + } + function Jn() { + if (e.Debug.assert(De() === 18), Tr() === 19) { + var Le = Tr(); + return Le === 27 || Le === 18 || Le === 94 || Le === 117; + } + return true; + } + function Qe() { + return Tr(), Fi(); + } + function Gr() { + return Tr(), e.tokenIsIdentifierOrKeyword(De()); + } + function S() { + return Tr(), e.tokenIsIdentifierOrKeywordOrGreaterThan(De()); + } + function Ce() { + return De() === 117 || De() === 94 ? Rt(qe) : false; + } + function qe() { + return Tr(), qs(); + } + function br() { + return Tr(), Xr(); + } + function Zr(Le) { + if (De() === 1) + return true; + switch (Le) { + case 1: + case 2: + case 4: + case 5: + case 6: + case 12: + case 9: + case 23: + case 24: + return De() === 19; + case 3: + return De() === 19 || De() === 82 || De() === 88; + case 7: + return De() === 18 || De() === 94 || De() === 117; + case 8: + return Si(); + case 19: + return De() === 31 || De() === 20 || De() === 18 || De() === 94 || De() === 117; + case 11: + return De() === 21 || De() === 26; + case 15: + case 21: + case 10: + return De() === 23; + case 17: + case 16: + case 18: + return De() === 21 || De() === 23; + case 20: + return De() !== 27; + case 22: + return De() === 18 || De() === 19; + case 13: + return De() === 31 || De() === 43; + case 14: + return De() === 29 && Rt(fi); + default: + return false; + } + } + function Si() { + return !!(ka() || F_(De()) || De() === 38); + } + function Pi() { + for (var Le = 0; Le < 25; Le++) + if (Ye & 1 << Le && (dn(Le, true) || Zr(Le))) + return true; + return false; + } + function Qi(Le, Nr) { + var ri = Ye; + Ye |= 1 << Le; + for (var di = [], Mi = Ue(); !Zr(Le); ) { + if (dn(Le, false)) { + di.push(Ct(Le, Nr)); + continue; + } + if (Xs(Le)) + break; + } + return Ye = ri, Cn(di, Mi); + } + function Ct(Le, Nr) { + var ri = sa(Le); + return ri ? en(ri) : Nr(); + } + function sa(Le) { + if (!(!de || !Wa(Le) || n)) { + var Nr = de.currentNode(D.getStartPos()); + if (!(e.nodeIsMissing(Nr) || Nr.intersectsChange || e.containsParseError(Nr))) { + var ri = Nr.flags & 50720768; + if (ri === Er && !!qn(Nr, Le)) + return Nr.jsDocCache && (Nr.jsDocCache = void 0), Nr; + } + } + } + function en(Le) { + return D.setTextPos(Le.end), Tr(), Le; + } + function Wa(Le) { + switch (Le) { + case 5: + case 2: + case 0: + case 1: + case 3: + case 6: + case 4: + case 8: + case 17: + case 16: + return true; + } + return false; + } + function qn(Le, Nr) { + switch (Nr) { + case 5: + return mo(Le); + case 2: + return So(Le); + case 0: + case 1: + case 3: + return Go(Le); + case 6: + return ys(Le); + case 4: + return Pc(Le); + case 8: + return Vc(Le); + case 17: + case 16: + return Kc(Le); + } + return false; + } + function mo(Le) { + if (Le) + switch (Le.kind) { + case 171: + case 176: + case 172: + case 173: + case 167: + case 234: + return true; + case 169: + var Nr = Le, ri = Nr.name.kind === 79 && Nr.name.originalKeywordKind === 134; + return !ri; + } + return false; + } + function So(Le) { + if (Le) + switch (Le.kind) { + case 289: + case 290: + return true; + } + return false; + } + function Go(Le) { + if (Le) + switch (Le.kind) { + case 256: + case 237: + case 235: + case 239: + case 238: + case 251: + case 247: + case 249: + case 246: + case 245: + case 243: + case 244: + case 242: + case 241: + case 248: + case 236: + case 252: + case 250: + case 240: + case 253: + case 266: + case 265: + case 272: + case 271: + case 261: + case 257: + case 258: + case 260: + case 259: + return true; + } + return false; + } + function ys(Le) { + return Le.kind === 299; + } + function Pc(Le) { + if (Le) + switch (Le.kind) { + case 175: + case 168: + case 176: + case 166: + case 174: + return true; + } + return false; + } + function Vc(Le) { + if (Le.kind !== 254) + return false; + var Nr = Le; + return Nr.initializer === void 0; + } + function Kc(Le) { + if (Le.kind !== 164) + return false; + var Nr = Le; + return Nr.initializer === void 0; + } + function Xs(Le) { + return pc(Le), Pi() ? true : (Tr(), false); + } + function pc(Le) { + switch (Le) { + case 0: + return De() === 88 ? Ar(e.Diagnostics._0_expected, e.tokenToString(93)) : Ar(e.Diagnostics.Declaration_or_statement_expected); + case 1: + return Ar(e.Diagnostics.Declaration_or_statement_expected); + case 2: + return Ar(e.Diagnostics.case_or_default_expected); + case 3: + return Ar(e.Diagnostics.Statement_expected); + case 18: + case 4: + return Ar(e.Diagnostics.Property_or_signature_expected); + case 5: + return Ar(e.Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected); + case 6: + return Ar(e.Diagnostics.Enum_member_expected); + case 7: + return Ar(e.Diagnostics.Expression_expected); + case 8: + return e.isKeyword(De()) ? Ar(e.Diagnostics._0_is_not_allowed_as_a_variable_declaration_name, e.tokenToString(De())) : Ar(e.Diagnostics.Variable_declaration_expected); + case 9: + return Ar(e.Diagnostics.Property_destructuring_pattern_expected); + case 10: + return Ar(e.Diagnostics.Array_element_destructuring_pattern_expected); + case 11: + return Ar(e.Diagnostics.Argument_expression_expected); + case 12: + return Ar(e.Diagnostics.Property_assignment_expected); + case 15: + return Ar(e.Diagnostics.Expression_or_comma_expected); + case 17: + return Ar(e.Diagnostics.Parameter_declaration_expected); + case 16: + return e.isKeyword(De()) ? Ar(e.Diagnostics._0_is_not_allowed_as_a_parameter_name, e.tokenToString(De())) : Ar(e.Diagnostics.Parameter_declaration_expected); + case 19: + return Ar(e.Diagnostics.Type_parameter_declaration_expected); + case 20: + return Ar(e.Diagnostics.Type_argument_expected); + case 21: + return Ar(e.Diagnostics.Type_expected); + case 22: + return Ar(e.Diagnostics.Unexpected_token_expected); + case 23: + return Ar(e.Diagnostics.Identifier_expected); + case 13: + return Ar(e.Diagnostics.Identifier_expected); + case 14: + return Ar(e.Diagnostics.Identifier_expected); + default: + return [void 0]; + } + } + function hs(Le, Nr, ri) { + var di = Ye; + Ye |= 1 << Le; + for (var Mi = [], st = Ue(), ra = -1; ; ) { + if (dn(Le, false)) { + var Ta = D.getStartPos(), ha = Ct(Le, Nr); + if (!ha) { + Ye = di; + return; + } + if (Mi.push(ha), ra = D.getTokenPos(), at(27)) + continue; + if (ra = -1, Zr(Le)) + break; + ui(27, tc(Le)), ri && De() === 26 && !D.hasPrecedingLineBreak() && Tr(), Ta === D.getStartPos() && Tr(); + continue; + } + if (Zr(Le) || Xs(Le)) + break; + } + return Ye = di, Cn(Mi, st, void 0, ra >= 0); + } + function tc(Le) { + return Le === 6 ? e.Diagnostics.An_enum_member_name_must_be_followed_by_a_or : void 0; + } + function ps() { + var Le = Cn([], Ue()); + return Le.isMissingList = true, Le; + } + function Qs(Le) { + return !!Le.isMissingList; + } + function js(Le, Nr, ri, di) { + if (ui(ri)) { + var Mi = hs(Le, Nr); + return ui(di), Mi; + } + return ps(); + } + function ds(Le, Nr) { + for (var ri = Ue(), di = Le ? Rn(Nr) : eo(Nr), Mi = Ue(); at(24); ) { + if (De() === 29) { + di.jsdocDotPos = Mi; + break; + } + Mi = Ue(), di = Bi(ge.createQualifiedName(di, ce(Le, false)), ri); + } + return di; + } + function Ji(Le, Nr) { + return Bi(ge.createQualifiedName(Le, Nr), Le.pos); + } + function ce(Le, Nr) { + if (D.hasPrecedingLineBreak() && e.tokenIsIdentifierOrKeyword(De())) { + var ri = Rt(Pu); + if (ri) + return kn(79, true, e.Diagnostics.Identifier_expected); + } + if (De() === 80) { + var di = Co(); + return Nr ? di : kn(79, true, e.Diagnostics.Identifier_expected); + } + return Le ? Rn() : eo(); + } + function Rr(Le) { + var Nr = Ue(), ri = [], di; + do + di = Pt(Le), ri.push(di); + while (di.literal.kind === 16); + return Cn(ri, Nr); + } + function yi(Le) { + var Nr = Ue(); + return Bi(ge.createTemplateExpression(ua(Le), Rr(Le)), Nr); + } + function qi() { + var Le = Ue(); + return Bi(ge.createTemplateLiteralType(ua(false), je()), Le); + } + function je() { + var Le = Ue(), Nr = [], ri; + do + ri = Hr(), Nr.push(ri); + while (ri.literal.kind === 16); + return Cn(Nr, Le); + } + function Hr() { + var Le = Ue(); + return Bi(ge.createTemplateLiteralTypeSpan(Aa(), pt(false)), Le); + } + function pt(Le) { + return De() === 19 ? (Wi(Le), Xn()) : $a(17, e.Diagnostics._0_expected, e.tokenToString(19)); + } + function Pt(Le) { + var Nr = Ue(); + return Bi(ge.createTemplateSpan(Wt(ns), pt(Le)), Nr); + } + function ga() { + return fo(De()); + } + function ua(Le) { + Le && ct(); + var Nr = fo(De()); + return e.Debug.assert(Nr.kind === 15, "Template head has wrong token kind"), Nr; + } + function Xn() { + var Le = fo(De()); + return e.Debug.assert(Le.kind === 16 || Le.kind === 17, "Template fragment has wrong token kind"), Le; + } + function jr(Le) { + var Nr = Le === 14 || Le === 17, ri = D.getTokenText(); + return ri.substring(1, ri.length - (D.isUnterminated() ? 0 : Nr ? 1 : 2)); + } + function fo(Le) { + var Nr = Ue(), ri = e.isTemplateLiteralKind(Le) ? ge.createTemplateLiteralLikeNode(Le, D.getTokenValue(), jr(Le), D.getTokenFlags() & 2048) : Le === 8 ? ge.createNumericLiteral(D.getTokenValue(), D.getNumericLiteralFlags()) : Le === 10 ? ge.createStringLiteral(D.getTokenValue(), void 0, D.hasExtendedUnicodeEscape()) : e.isLiteralKind(Le) ? ge.createLiteralLikeNode(Le, D.getTokenValue()) : e.Debug.fail(); + return D.hasExtendedUnicodeEscape() && (ri.hasExtendedUnicodeEscape = true), D.isUnterminated() && (ri.isUnterminated = true), Tr(), Bi(ri, Nr); + } + function xs() { + return ds(true, e.Diagnostics.Type_expected); + } + function Fo() { + if (!D.hasPrecedingLineBreak() && Li() === 29) + return js(20, Aa, 29, 31); + } + function ko() { + var Le = Ue(); + return Bi(ge.createTypeReferenceNode(xs(), Fo()), Le); + } + function Ao(Le) { + switch (Le.kind) { + case 178: + return e.nodeIsMissing(Le.typeName); + case 179: + case 180: { + var Nr = Le, ri = Nr.parameters, di = Nr.type; + return Qs(ri) || Ao(di); + } + case 191: + return Ao(Le.type); + default: + return false; + } + } + function Ms(Le) { + return Tr(), Bi(ge.createTypePredicateNode(void 0, Le, Aa()), Le.pos); + } + function Bs() { + var Le = Ue(); + return Tr(), Bi(ge.createThisTypeNode(), Le); + } + function xc() { + var Le = Ue(); + return Tr(), Bi(ge.createJSDocAllType(), Le); + } + function su() { + var Le = Ue(); + return Tr(), Bi(ge.createJSDocNonNullableType(yc(), false), Le); + } + function tl() { + var Le = Ue(); + return Tr(), De() === 27 || De() === 19 || De() === 21 || De() === 31 || De() === 63 || De() === 51 ? Bi(ge.createJSDocUnknownType(), Le) : Bi(ge.createJSDocNullableType(Aa(), false), Le); + } + function Zc() { + var Le = Ue(), Nr = fr(); + if (Rt(v)) { + Tr(); + var ri = Ei(36), di = vc(58, false); + return wr(Bi(ge.createJSDocFunctionType(ri, di), Le), Nr); + } + return Bi(ge.createTypeReferenceNode(Rn(), void 0), Le); + } + function Rf() { + var Le = Ue(), Nr; + return (De() === 108 || De() === 103) && (Nr = Rn(), ui(58)), Bi(ge.createParameterDeclaration(void 0, void 0, void 0, Nr, void 0, al(), void 0), Le); + } + function al() { + D.setInJSDocType(true); + var Le = Ue(); + if (at(141)) { + var Nr = ge.createJSDocNamepathType(void 0); + e: + for (; ; ) + switch (De()) { + case 19: + case 1: + case 27: + case 5: + break e; + default: + vi(); + } + return D.setInJSDocType(false), Bi(Nr, Le); + } + var ri = at(25), di = gu(); + return D.setInJSDocType(false), ri && (di = Bi(ge.createJSDocVariadicType(di), Le)), De() === 63 ? (Tr(), Bi(ge.createJSDocOptionalType(di), Le)) : di; + } + function Jo() { + var Le = Ue(); + ui(112); + var Nr = ds(true), ri = D.hasPrecedingLineBreak() ? void 0 : m_(); + return Bi(ge.createTypeQueryNode(Nr, ri), Le); + } + function eu() { + var Le = Ue(), Nr = Fc(), ri = eo(), di, Mi; + at(94) && (Xr() || !qs() ? di = Aa() : Mi = kp()); + var st = at(63) ? Aa() : void 0, ra = ge.createTypeParameterDeclaration(Nr, ri, di, st); + return ra.expression = Mi, Bi(ra, Le); + } + function Ws() { + if (De() === 29) + return js(19, eu, 29, 31); + } + function pu(Le) { + return De() === 25 || Hc() || e.isModifierKind(De()) || De() === 59 || Xr(!Le); + } + function Uu(Le) { + var Nr = Ol(e.Diagnostics.Private_identifiers_cannot_be_used_as_parameters); + return e.getFullWidth(Nr) === 0 && !e.some(Le) && e.isModifierKind(De()) && Tr(), Nr; + } + function Ql() { + return Ki() || De() === 22 || De() === 18; + } + function xl(Le) { + return du(Le); + } + function Ya(Le) { + return du(Le, false); + } + function du(Le, Nr) { + Nr === void 0 && (Nr = true); + var ri = Ue(), di = fr(), Mi = Le ? Jr(gl) : gl(); + if (De() === 108) { + var st = ge.createParameterDeclaration(Mi, void 0, void 0, Kn(true), void 0, va(), void 0); + return Mi && Mr(Mi[0], e.Diagnostics.Decorators_may_not_be_applied_to_this_parameters), wr(Bi(st, ri), di); + } + var ra = Ne; + Ne = false; + var Ta = Fc(), ha = At(25); + if (!(!Nr && !Ql())) { + var Na = wr(Bi(ge.createParameterDeclaration(Mi, Ta, ha, Uu(Ta), At(57), va(), nl()), ri), di); + return Ne = ra, Na; + } + } + function vc(Le, Nr) { + if (Kr(Le, Nr)) + return _r(gu); + } + function Kr(Le, Nr) { + return Le === 38 ? (ui(Le), true) : at(58) ? true : Nr && De() === 38 ? (Ar(e.Diagnostics._0_expected, e.tokenToString(58)), Tr(), true) : false; + } + function _i(Le, Nr) { + var ri = Wr(), di = mr(); + Di(!!(Le & 1)), Xi(!!(Le & 2)); + var Mi = Le & 32 ? hs(17, Rf) : hs(16, function() { + return Nr ? xl(di) : Ya(di); + }); + return Di(ri), Xi(di), Mi; + } + function Ei(Le) { + if (!ui(20)) + return ps(); + var Nr = _i(Le, true); + return ui(21), Nr; + } + function tt() { + at(27) || pn(); + } + function kt(Le) { + var Nr = Ue(), ri = fr(); + Le === 175 && ui(103); + var di = Ws(), Mi = Ei(4), st = vc(58, true); + tt(); + var ra = Le === 174 ? ge.createCallSignature(di, Mi, st) : ge.createConstructSignature(di, Mi, st); + return wr(Bi(ra, Nr), ri); + } + function bt() { + return De() === 22 && Rt(ia); + } + function ia() { + if (Tr(), De() === 25 || De() === 23) + return true; + if (e.isModifierKind(De())) { + if (Tr(), Fi()) + return true; + } else if (Fi()) + Tr(); + else + return false; + return De() === 58 || De() === 27 ? true : De() !== 57 ? false : (Tr(), De() === 58 || De() === 27 || De() === 23); + } + function Xt(Le, Nr, ri, di) { + var Mi = js(16, function() { + return xl(false); + }, 22, 23), st = va(); + tt(); + var ra = ge.createIndexSignature(ri, di, Mi, st); + return wr(Bi(ra, Le), Nr); + } + function Za(Le, Nr, ri) { + var di = En(), Mi = At(57), st; + if (De() === 20 || De() === 29) { + var ra = Ws(), Ta = Ei(4), ha = vc(58, true); + st = ge.createMethodSignature(ri, di, Mi, ra, Ta, ha); + } else { + var ha = va(); + st = ge.createPropertySignature(ri, di, Mi, ha), De() === 63 && (st.initializer = nl()); + } + return tt(), wr(Bi(st, Le), Nr); + } + function bn() { + if (De() === 20 || De() === 29 || De() === 136 || De() === 149) + return true; + for (var Le = false; e.isModifierKind(De()); ) + Le = true, Tr(); + return De() === 22 ? true : (Da() && (Le = true, Tr()), Le ? De() === 20 || De() === 29 || De() === 57 || De() === 58 || De() === 27 || ka() : false); + } + function _a() { + if (De() === 20 || De() === 29) + return kt(174); + if (De() === 103 && Rt(qa)) + return kt(175); + var Le = Ue(), Nr = fr(), ri = Fc(); + return Ko(136) ? Gu(Le, Nr, void 0, ri, 172) : Ko(149) ? Gu(Le, Nr, void 0, ri, 173) : bt() ? Xt(Le, Nr, void 0, ri) : Za(Le, Nr, ri); + } + function qa() { + return Tr(), De() === 20 || De() === 29; + } + function rn() { + return Tr() === 24; + } + function jn() { + switch (Tr()) { + case 20: + case 29: + case 24: + return true; + } + return false; + } + function Mo() { + var Le = Ue(); + return Bi(ge.createTypeLiteralNode(ho()), Le); + } + function ho() { + var Le; + return ui(18) ? (Le = Qi(4, _a), ui(19)) : Le = ps(), Le; + } + function gs() { + return Tr(), De() === 39 || De() === 40 ? Tr() === 145 : (De() === 145 && Tr(), De() === 22 && Qe() && Tr() === 101); + } + function Se() { + var Le = Ue(), Nr = Rn(); + ui(101); + var ri = Aa(); + return Bi(ge.createTypeParameterDeclaration(void 0, Nr, ri, void 0), Le); + } + function hr() { + var Le = Ue(); + ui(18); + var Nr; + (De() === 145 || De() === 39 || De() === 40) && (Nr = ai(), Nr.kind !== 145 && ui(145)), ui(22); + var ri = Se(), di = at(127) ? Aa() : void 0; + ui(23); + var Mi; + (De() === 57 || De() === 39 || De() === 40) && (Mi = ai(), Mi.kind !== 57 && ui(57)); + var st = va(); + pn(); + var ra = Qi(4, _a); + return ui(19), Bi(ge.createMappedTypeNode(Nr, ri, di, Mi, st, ra), Le); + } + function Or() { + var Le = Ue(); + if (at(25)) + return Bi(ge.createRestTypeNode(Aa()), Le); + var Nr = Aa(); + if (e.isJSDocNullableType(Nr) && Nr.pos === Nr.type.pos) { + var ri = ge.createOptionalTypeNode(Nr.type); + return e.setTextRange(ri, Nr), ri.flags = Nr.flags, ri; + } + return Nr; + } + function ki() { + return Tr() === 58 || De() === 57 && Tr() === 58; + } + function dt() { + return De() === 25 ? e.tokenIsIdentifierOrKeyword(Tr()) && ki() : e.tokenIsIdentifierOrKeyword(De()) && ki(); + } + function la() { + if (Rt(dt)) { + var Le = Ue(), Nr = fr(), ri = At(25), di = Rn(), Mi = At(57); + ui(58); + var st = Or(), ra = ge.createNamedTupleMember(ri, di, Mi, st); + return wr(Bi(ra, Le), Nr); + } + return Or(); + } + function wa() { + var Le = Ue(); + return Bi(ge.createTupleTypeNode(js(21, la, 22, 23)), Le); + } + function On() { + var Le = Ue(); + ui(20); + var Nr = Aa(); + return ui(21), Bi(ge.createParenthesizedType(Nr), Le); + } + function No() { + var Le; + if (De() === 126) { + var Nr = Ue(); + Tr(); + var ri = Bi(ge.createToken(126), Nr); + Le = Cn([ri], Nr); + } + return Le; + } + function jo() { + var Le = Ue(), Nr = fr(), ri = No(), di = at(103), Mi = Ws(), st = Ei(4), ra = vc(38, false), Ta = di ? ge.createConstructorTypeNode(ri, Mi, st, ra) : ge.createFunctionTypeNode(Mi, st, ra); + return di || (Ta.modifiers = ri), wr(Bi(Ta, Le), Nr); + } + function po() { + var Le = ai(); + return De() === 24 ? void 0 : Le; + } + function Gn(Le) { + var Nr = Ue(); + Le && Tr(); + var ri = De() === 110 || De() === 95 || De() === 104 ? ai() : fo(De()); + return Le && (ri = Bi(ge.createPrefixUnaryExpression(40, ri), Nr)), Bi(ge.createLiteralTypeNode(ri), Nr); + } + function $n() { + return Tr(), De() === 100; + } + function Ho() { + var Le = Ue(), Nr = D.getTokenPos(); + ui(18); + var ri = D.hasPrecedingLineBreak(); + ui(129), ui(58); + var di = Ha(true); + if (!ui(19)) { + var Mi = e.lastOrUndefined(_e); + Mi && Mi.code === e.Diagnostics._0_expected.code && e.addRelatedInfo(Mi, e.createDetachedDiagnostic(Re, Nr, 1, e.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}")); + } + return Bi(ge.createImportTypeAssertionContainer(di, ri), Le); + } + function Zo() { + ze |= 2097152; + var Le = Ue(), Nr = at(112); + ui(100), ui(20); + var ri = Aa(), di; + at(27) && (di = Ho()), ui(21); + var Mi = at(24) ? xs() : void 0, st = Fo(); + return Bi(ge.createImportTypeNode(ri, di, Mi, st, Nr), Le); + } + function Es() { + return Tr(), De() === 8 || De() === 9; + } + function yc() { + switch (De()) { + case 130: + case 155: + case 150: + case 147: + case 158: + case 151: + case 133: + case 153: + case 143: + case 148: + return Ii(po) || ko(); + case 66: + D.reScanAsteriskEqualsToken(); + case 41: + return xc(); + case 60: + D.reScanQuestionToken(); + case 57: + return tl(); + case 98: + return Zc(); + case 53: + return su(); + case 14: + case 10: + case 8: + case 9: + case 110: + case 95: + case 104: + return Gn(); + case 40: + return Rt(Es) ? Gn(true) : ko(); + case 114: + return ai(); + case 108: { + var Le = Bs(); + return De() === 139 && !D.hasPrecedingLineBreak() ? Ms(Le) : Le; + } + case 112: + return Rt($n) ? Zo() : Jo(); + case 18: + return Rt(gs) ? hr() : Mo(); + case 22: + return wa(); + case 20: + return On(); + case 100: + return Zo(); + case 128: + return Rt(Pu) ? sd() : ko(); + case 15: + return qi(); + default: + return ko(); + } + } + function Xr(Le) { + switch (De()) { + case 130: + case 155: + case 150: + case 147: + case 158: + case 133: + case 145: + case 151: + case 154: + case 114: + case 153: + case 104: + case 108: + case 112: + case 143: + case 18: + case 22: + case 29: + case 51: + case 50: + case 103: + case 10: + case 8: + case 9: + case 110: + case 95: + case 148: + case 41: + case 57: + case 53: + case 25: + case 137: + case 100: + case 128: + case 14: + case 15: + return true; + case 98: + return !Le; + case 40: + return !Le && Rt(Es); + case 20: + return !Le && Rt(Ls); + default: + return Fi(); + } + } + function Ls() { + return Tr(), De() === 21 || pu(false) || Xr(); + } + function Ic() { + for (var Le = Ue(), Nr = yc(); !D.hasPrecedingLineBreak(); ) + switch (De()) { + case 53: + Tr(), Nr = Bi(ge.createJSDocNonNullableType(Nr, true), Le); + break; + case 57: + if (Rt(br)) + return Nr; + Tr(), Nr = Bi(ge.createJSDocNullableType(Nr, true), Le); + break; + case 22: + if (ui(22), Xr()) { + var ri = Aa(); + ui(23), Nr = Bi(ge.createIndexedAccessTypeNode(Nr, ri), Le); + } else + ui(23), Nr = Bi(ge.createArrayTypeNode(Nr), Le); + break; + default: + return Nr; + } + return Nr; + } + function zu(Le) { + var Nr = Ue(); + return ui(Le), Bi(ge.createTypeOperatorNode(Le, vp()), Nr); + } + function vf() { + if (at(94)) { + var Le = pi(Aa); + if (xe() || De() !== 57) + return Le; + } + } + function P_() { + var Le = Ue(), Nr = eo(), ri = Ii(vf), di = ge.createTypeParameterDeclaration(void 0, Nr, ri); + return Bi(di, Le); + } + function El() { + var Le = Ue(); + return ui(137), Bi(ge.createInferTypeNode(P_()), Le); + } + function vp() { + var Le = De(); + switch (Le) { + case 140: + case 154: + case 145: + return zu(Le); + case 137: + return El(); + } + return _r(Ic); + } + function oo(Le) { + if (Cl()) { + var Nr = jo(), ri = void 0; + return e.isFunctionTypeNode(Nr) ? ri = Le ? e.Diagnostics.Function_type_notation_must_be_parenthesized_when_used_in_a_union_type : e.Diagnostics.Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type : ri = Le ? e.Diagnostics.Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type : e.Diagnostics.Constructor_type_notation_must_be_parenthesized_when_used_in_an_intersection_type, Mr(Nr, ri), Nr; + } + } + function I_(Le, Nr, ri) { + var di = Ue(), Mi = Le === 51, st = at(Le), ra = st && oo(Mi) || Nr(); + if (De() === Le || st) { + for (var Ta = [ra]; at(Le); ) + Ta.push(oo(Mi) || Nr()); + ra = Bi(ri(Cn(Ta, di)), di); + } + return ra; + } + function yp() { + return I_(50, vp, ge.createIntersectionTypeNode); + } + function Yl() { + return I_(51, yp, ge.createUnionTypeNode); + } + function Bf() { + return Tr(), De() === 103; + } + function Cl() { + return De() === 29 || De() === 20 && Rt(hp) ? true : De() === 103 || De() === 126 && Rt(Bf); + } + function c_() { + if (e.isModifierKind(De()) && Fc(), Fi() || De() === 108) + return Tr(), true; + if (De() === 22 || De() === 18) { + var Le = _e.length; + return Ol(), Le === _e.length; + } + return false; + } + function hp() { + return Tr(), !!(De() === 21 || De() === 25 || c_() && (De() === 58 || De() === 27 || De() === 57 || De() === 63 || De() === 21 && (Tr(), De() === 38))); + } + function gu() { + var Le = Ue(), Nr = Fi() && Ii(Dp), ri = Aa(); + return Nr ? Bi(ge.createTypePredicateNode(void 0, Nr, ri), Le) : ri; + } + function Dp() { + var Le = eo(); + if (De() === 139 && !D.hasPrecedingLineBreak()) + return Tr(), Le; + } + function sd() { + var Le = Ue(), Nr = $a(128), ri = De() === 108 ? Bs() : eo(), di = at(139) ? Aa() : void 0; + return Bi(ge.createTypePredicateNode(Nr, ri, di), Le); + } + function Aa() { + if (Er & 40960) + return et(40960, Aa); + if (Cl()) + return jo(); + var Le = Ue(), Nr = Yl(); + if (!xe() && !D.hasPrecedingLineBreak() && at(94)) { + var ri = pi(Aa); + ui(57); + var di = _r(Aa); + ui(58); + var Mi = _r(Aa); + return Bi(ge.createConditionalTypeNode(Nr, ri, di, Mi), Le); + } + return Nr; + } + function va() { + return at(58) ? Aa() : void 0; + } + function Cu() { + switch (De()) { + case 108: + case 106: + case 104: + case 110: + case 95: + case 8: + case 9: + case 10: + case 14: + case 15: + case 20: + case 22: + case 18: + case 98: + case 84: + case 103: + case 43: + case 68: + case 79: + return true; + case 100: + return Rt(jn); + default: + return Fi(); + } + } + function qs() { + if (Cu()) + return true; + switch (De()) { + case 39: + case 40: + case 54: + case 53: + case 89: + case 112: + case 114: + case 45: + case 46: + case 29: + case 132: + case 125: + case 80: + return true; + default: + return xp() ? true : Fi(); + } + } + function cd() { + return De() !== 18 && De() !== 98 && De() !== 84 && De() !== 59 && qs(); + } + function ns() { + var Le = vr(); + Le && wi(false); + for (var Nr = Ue(), ri = hc(), di; di = At(27); ) + ri = M_(ri, di, hc(), Nr); + return Le && wi(true), ri; + } + function nl() { + return at(63) ? hc() : void 0; + } + function hc() { + if (es()) + return Jf(); + var Le = ud() || bp(); + if (Le) + return Le; + var Nr = Ue(), ri = O_(0); + return ri.kind === 79 && De() === 38 ? w_(Nr, ri, void 0) : e.isLeftHandSideExpression(ri) && e.isAssignmentOperator(Ui()) ? M_(ri, ai(), hc(), Nr) : jf(ri, Nr); + } + function es() { + return De() === 125 ? Wr() ? true : Rt(so) : false; + } + function u_() { + return Tr(), !D.hasPrecedingLineBreak() && Fi(); + } + function Jf() { + var Le = Ue(); + return Tr(), !D.hasPrecedingLineBreak() && (De() === 41 || qs()) ? Bi(ge.createYieldExpression(At(41), hc()), Le) : Bi(ge.createYieldExpression(void 0, void 0), Le); + } + function w_(Le, Nr, ri) { + e.Debug.assert(De() === 38, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); + var di = ge.createParameterDeclaration(void 0, void 0, void 0, Nr, void 0, void 0, void 0); + Bi(di, Nr.pos); + var Mi = Cn([di], di.pos, di.end), st = $a(38), ra = _d(!!ri), Ta = ge.createArrowFunction(ri, void 0, Mi, void 0, st, ra); + return ii(Bi(Ta, Le)); + } + function ud() { + var Le = ku(); + if (Le !== 0) + return Le === 1 ? Tp(true) : Ii(fd); + } + function ku() { + return De() === 20 || De() === 29 || De() === 131 ? Rt(ld) : De() === 38 ? 1 : 0; + } + function ld() { + if (De() === 131 && (Tr(), D.hasPrecedingLineBreak() || De() !== 20 && De() !== 29)) + return 0; + var Le = De(), Nr = Tr(); + if (Le === 20) { + if (Nr === 21) { + var ri = Tr(); + switch (ri) { + case 38: + case 58: + case 18: + return 1; + default: + return 0; + } + } + if (Nr === 22 || Nr === 18) + return 2; + if (Nr === 25) + return 1; + if (e.isModifierKind(Nr) && Nr !== 131 && Rt(Qe)) + return Rt(function() { + return Tr() === 127; + }) ? 0 : 1; + if (!Fi() && Nr !== 108) + return 0; + switch (Tr()) { + case 58: + return 1; + case 57: + return Tr(), De() === 58 || De() === 27 || De() === 63 || De() === 21 ? 1 : 0; + case 27: + case 63: + case 21: + return 2; + } + return 0; + } else { + if (e.Debug.assert(Le === 29), !Fi()) + return 0; + if (Ie === 1) { + var di = Rt(function() { + var Mi = Tr(); + if (Mi === 94) { + var st = Tr(); + switch (st) { + case 63: + case 31: + return false; + default: + return true; + } + } else if (Mi === 27 || Mi === 63) + return true; + return false; + }); + return di ? 1 : 0; + } + return 2; + } + } + function fd() { + var Le = D.getTokenPos(); + if (!(Br != null && Br.has(Le))) { + var Nr = Tp(false); + return Nr || (Br || (Br = new e.Set())).add(Le), Nr; + } + } + function bp() { + if (De() === 131 && Rt(Sp) === 1) { + var Le = Ue(), Nr = Hu(), ri = O_(0); + return w_(Le, ri, Nr); + } + } + function Sp() { + if (De() === 131) { + if (Tr(), D.hasPrecedingLineBreak() || De() === 38) + return 0; + var Le = O_(0); + if (!D.hasPrecedingLineBreak() && Le.kind === 79 && De() === 38) + return 1; + } + return 0; + } + function Tp(Le) { + var Nr = Ue(), ri = fr(), di = Hu(), Mi = e.some(di, e.isAsyncModifier) ? 2 : 0, st = Ws(), ra; + if (ui(20)) { + if (Le) + ra = _i(Mi, Le); + else { + var Ta = _i(Mi, Le); + if (!Ta) + return; + ra = Ta; + } + if (!ui(21) && !Le) + return; + } else { + if (!Le) + return; + ra = ps(); + } + var ha = vc(58, false); + if (!(ha && !Le && Ao(ha))) { + for (var Na = ha; (Na == null ? void 0 : Na.kind) === 191; ) + Na = Na.type; + var In = Na && e.isJSDocFunctionType(Na); + if (!(!Le && De() !== 38 && (In || De() !== 18))) { + var qo = De(), co = $a(38), ts = qo === 38 || qo === 18 ? _d(e.some(di, e.isAsyncModifier)) : eo(), vs = ge.createArrowFunction(di, st, ra, ha, co, ts); + return wr(Bi(vs, Nr), ri); + } + } + } + function _d(Le) { + if (De() === 18) + return Cc(Le ? 2 : 0); + if (De() !== 26 && De() !== 98 && De() !== 84 && Ku() && !cd()) + return Cc(16 | (Le ? 2 : 0)); + var Nr = Ne; + Ne = false; + var ri = Le ? Jr(hc) : ti(hc); + return Ne = Nr, ri; + } + function jf(Le, Nr) { + var ri = At(57); + if (!ri) + return Le; + var di; + return Bi(ge.createConditionalExpression(Le, ri, et(fe, hc), di = $a(58), e.nodeIsPresent(di) ? hc() : kn(79, false, e.Diagnostics._0_expected, e.tokenToString(58))), Nr); + } + function O_(Le) { + var Nr = Ue(), ri = kp(); + return pd(Le, ri, Nr); + } + function F_(Le) { + return Le === 101 || Le === 160; + } + function pd(Le, Nr, ri) { + for (; ; ) { + Ui(); + var di = e.getBinaryOperatorPrecedence(De()), Mi = De() === 42 ? di >= Le : di > Le; + if (!Mi || De() === 101 && Je()) + break; + if (De() === 127) { + if (D.hasPrecedingLineBreak()) + break; + Tr(), Nr = Ep(Nr, Aa()); + } else + Nr = M_(Nr, ai(), O_(di), ri); + } + return Nr; + } + function xp() { + return Je() && De() === 101 ? false : e.getBinaryOperatorPrecedence(De()) > 0; + } + function M_(Le, Nr, ri, di) { + return Bi(ge.createBinaryExpression(Le, Nr, ri), di); + } + function Ep(Le, Nr) { + return Bi(ge.createAsExpression(Le, Nr), Le.pos); + } + function ol() { + var Le = Ue(); + return Bi(ge.createPrefixUnaryExpression(De(), Vr(mu)), Le); + } + function Au() { + var Le = Ue(); + return Bi(ge.createDeleteExpression(Vr(mu)), Le); + } + function ru() { + var Le = Ue(); + return Bi(ge.createTypeOfExpression(Vr(mu)), Le); + } + function yf() { + var Le = Ue(); + return Bi(ge.createVoidExpression(Vr(mu)), Le); + } + function Cp() { + return De() === 132 ? mr() ? true : Rt(so) : false; + } + function dd() { + var Le = Ue(); + return Bi(ge.createAwaitExpression(Vr(mu)), Le); + } + function kp() { + if (gd()) { + var Le = Ue(), Nr = hf(); + return De() === 42 ? pd(e.getBinaryOperatorPrecedence(De()), Nr, Le) : Nr; + } + var ri = De(), di = mu(); + if (De() === 42) { + var Le = e.skipTrivia(Ee, di.pos), Mi = di.end; + di.kind === 211 ? nr(Le, Mi, e.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses) : nr(Le, Mi, e.Diagnostics.An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses, e.tokenToString(ri)); + } + return di; + } + function mu() { + switch (De()) { + case 39: + case 40: + case 54: + case 53: + return ol(); + case 89: + return Au(); + case 112: + return ru(); + case 114: + return yf(); + case 29: + return qu(); + case 132: + if (Cp()) + return dd(); + default: + return hf(); + } + } + function gd() { + switch (De()) { + case 39: + case 40: + case 54: + case 53: + case 89: + case 112: + case 114: + case 132: + return false; + case 29: + if (Ie !== 1) + return false; + default: + return true; + } + } + function hf() { + if (De() === 45 || De() === 46) { + var Le = Ue(); + return Bi(ge.createPrefixUnaryExpression(De(), Vr($l)), Le); + } else if (Ie === 1 && De() === 29 && Rt(S)) + return l_(true); + var Nr = $l(); + if (e.Debug.assert(e.isLeftHandSideExpression(Nr)), (De() === 45 || De() === 46) && !D.hasPrecedingLineBreak()) { + var ri = De(); + return Tr(), Bi(ge.createPostfixUnaryExpression(Nr, ri), Nr.pos); + } + return Nr; + } + function $l() { + var Le = Ue(), Nr; + return De() === 100 ? Rt(qa) ? (ze |= 2097152, Nr = ai()) : Rt(rn) ? (Tr(), Tr(), Nr = Bi(ge.createMetaProperty(100, Rn()), Le), ze |= 4194304) : Nr = Uf() : Nr = De() === 106 ? L_() : Uf(), Ps(Le, Nr); + } + function Uf() { + var Le = Ue(), Nr = vu(); + return Ec(Le, Nr, true); + } + function L_() { + var Le = Ue(), Nr = ai(); + if (De() === 29) { + var ri = Ue(), di = Ii(Gc); + di !== void 0 && nr(ri, Ue(), e.Diagnostics.super_may_not_use_type_arguments); + } + return De() === 20 || De() === 24 || De() === 22 ? Nr : ($a(24, e.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access), Bi(ge.createPropertyAccessExpression(Nr, ce(true, true)), Le)); + } + function l_(Le, Nr, ri) { + var di = Ue(), Mi = Zl(Le), st; + if (Mi.kind === 280) { + var ra = ks(Mi), Ta = void 0, ha = ra[ra.length - 1]; + if ((ha == null ? void 0 : ha.kind) === 278 && !l(ha.openingElement.tagName, ha.closingElement.tagName) && l(Mi.tagName, ha.closingElement.tagName)) { + var Na = ha.children.end, In = Bi(ge.createJsxElement(ha.openingElement, ha.children, Bi(ge.createJsxClosingElement(Bi(ge.createIdentifier(""), Na, Na)), Na, Na)), ha.openingElement.pos, Na); + ra = Cn(Ve(Ve([], ra.slice(0, ra.length - 1), true), [In], false), ra.pos, Na), Ta = ha.closingElement; + } else + Ta = Al(Mi, Le), l(Mi.tagName, Ta.tagName) || (ri && e.isJsxOpeningElement(ri) && l(Ta.tagName, ri.tagName) ? Mr(Mi.tagName, e.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, e.getTextOfNodeFromSourceText(Ee, Mi.tagName)) : Mr(Ta.tagName, e.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, e.getTextOfNodeFromSourceText(Ee, Mi.tagName))); + st = Bi(ge.createJsxElement(Mi, ra, Ta), di); + } else + Mi.kind === 283 ? st = Bi(ge.createJsxFragment(Mi, ks(Mi), wc(Le)), di) : (e.Debug.assert(Mi.kind === 279), st = Mi); + if (Le && De() === 29) { + var qo = typeof Nr > "u" ? st.pos : Nr, co = Ii(function() { + return l_(true, qo); + }); + if (co) { + var ts = kn(27, false); + return e.setTextRangePosWidth(ts, co.pos, 0), nr(e.skipTrivia(Ee, qo), co.end, e.Diagnostics.JSX_expressions_must_have_one_parent_element), Bi(ge.createBinaryExpression(st, ts, co), di); + } + } + return st; + } + function f_() { + var Le = Ue(), Nr = ge.createJsxText(D.getTokenValue(), ye === 12); + return ye = D.scanJsxToken(), Bi(Nr, Le); + } + function md(Le, Nr) { + switch (Nr) { + case 1: + if (e.isJsxOpeningFragment(Le)) + Mr(Le, e.Diagnostics.JSX_fragment_has_no_corresponding_closing_tag); + else { + var ri = Le.tagName, di = e.skipTrivia(Ee, ri.pos); + nr(di, ri.end, e.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, e.getTextOfNodeFromSourceText(Ee, Le.tagName)); + } + return; + case 30: + case 7: + return; + case 11: + case 12: + return f_(); + case 18: + return kl(false); + case 29: + return l_(false, void 0, Le); + default: + return e.Debug.assertNever(Nr); + } + } + function ks(Le) { + var Nr = [], ri = Ue(), di = Ye; + for (Ye |= 1 << 14; ; ) { + var Mi = md(Le, ye = D.reScanJsxToken()); + if (!Mi || (Nr.push(Mi), e.isJsxOpeningElement(Le) && (Mi == null ? void 0 : Mi.kind) === 278 && !l(Mi.openingElement.tagName, Mi.closingElement.tagName) && l(Le.tagName, Mi.closingElement.tagName))) + break; + } + return Ye = di, Cn(Nr, ri); + } + function Wu() { + var Le = Ue(); + return Bi(ge.createJsxAttributes(Qi(13, __)), Le); + } + function Zl(Le) { + var Nr = Ue(); + if (ui(29), De() === 31) + return xt(), Bi(ge.createJsxOpeningFragment(), Nr); + var ri = R_(), di = (Er & 262144) === 0 ? m_() : void 0, Mi = Wu(), st; + return De() === 31 ? (xt(), st = ge.createJsxOpeningElement(ri, di, Mi)) : (ui(43), ui(31, void 0, false) && (Le ? Tr() : xt()), st = ge.createJsxSelfClosingElement(ri, di, Mi)), Bi(st, Nr); + } + function R_() { + var Le = Ue(); + Mt(); + for (var Nr = De() === 108 ? ai() : Rn(); at(24); ) + Nr = Bi(ge.createPropertyAccessExpression(Nr, ce(true, false)), Le); + return Nr; + } + function kl(Le) { + var Nr = Ue(); + if (!!ui(18)) { + var ri, di; + return De() !== 19 && (ri = At(25), di = ns()), Le ? ui(19) : ui(19, void 0, false) && xt(), Bi(ge.createJsxExpression(ri, di), Nr); + } + } + function __() { + if (De() === 18) + return zd(); + Mt(); + var Le = Ue(); + return Bi(ge.createJsxAttribute(Rn(), De() !== 63 ? void 0 : ut() === 10 ? ga() : kl(true)), Le); + } + function zd() { + var Le = Ue(); + ui(18), ui(25); + var Nr = ns(); + return ui(19), Bi(ge.createJsxSpreadAttribute(Nr), Le); + } + function Al(Le, Nr) { + var ri = Ue(); + ui(30); + var di = R_(); + return ui(31, void 0, false) && (Nr || !l(Le.tagName, di) ? Tr() : xt()), Bi(ge.createJsxClosingElement(di), ri); + } + function wc(Le) { + var Nr = Ue(); + return ui(30), e.tokenIsIdentifierOrKeyword(De()) && Mr(R_(), e.Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment), ui(31, void 0, false) && (Le ? Tr() : xt()), Bi(ge.createJsxJsxClosingFragment(), Nr); + } + function qu() { + var Le = Ue(); + ui(29); + var Nr = Aa(); + ui(31); + var ri = mu(); + return Bi(ge.createTypeAssertion(Nr, ri), Le); + } + function Vu() { + return Tr(), e.tokenIsIdentifierOrKeyword(De()) || De() === 22 || Zn(); + } + function ef() { + return De() === 28 && Rt(Vu); + } + function sl(Le) { + if (Le.flags & 32) + return true; + if (e.isNonNullExpression(Le)) { + for (var Nr = Le.expression; e.isNonNullExpression(Nr) && !(Nr.flags & 32); ) + Nr = Nr.expression; + if (Nr.flags & 32) { + for (; e.isNonNullExpression(Le); ) + Le.flags |= 32, Le = Le.expression; + return true; + } + } + return false; + } + function p_(Le, Nr, ri) { + var di = ce(true, true), Mi = ri || sl(Nr), st = Mi ? ge.createPropertyAccessChain(Nr, ri, di) : ge.createPropertyAccessExpression(Nr, di); + return Mi && e.isPrivateIdentifier(st.name) && Mr(st.name, e.Diagnostics.An_optional_chain_cannot_contain_private_identifiers), Bi(st, Le); + } + function Df(Le, Nr, ri) { + var di; + if (De() === 23) + di = kn(79, true, e.Diagnostics.An_element_access_expression_should_take_an_argument); + else { + var Mi = Wt(ns); + e.isStringOrNumericLiteralLike(Mi) && (Mi.text = xn(Mi.text)), di = Mi; + } + ui(23); + var st = ri || sl(Nr) ? ge.createElementAccessChain(Nr, ri, di) : ge.createElementAccessExpression(Nr, di); + return Bi(st, Le); + } + function Ec(Le, Nr, ri) { + for (; ; ) { + var di = void 0, Mi = false; + if (ri && ef() ? (di = $a(28), Mi = e.tokenIsIdentifierOrKeyword(De())) : Mi = at(24), Mi) { + Nr = p_(Le, Nr, di); + continue; + } + if ((di || !vr()) && at(22)) { + Nr = Df(Le, Nr, di); + continue; + } + if (Zn()) { + Nr = !di && Nr.kind === 228 ? os(Le, Nr.expression, di, Nr.typeArguments) : os(Le, Nr, di, void 0); + continue; + } + if (!di) { + if (De() === 53 && !D.hasPrecedingLineBreak()) { + Tr(), Nr = Bi(ge.createNonNullExpression(Nr), Le); + continue; + } + var st = Ii(Gc); + if (st) { + Nr = Bi(ge.createExpressionWithTypeArguments(Nr, st), Le); + continue; + } + } + return Nr; + } + } + function Zn() { + return De() === 14 || De() === 15; + } + function os(Le, Nr, ri, di) { + var Mi = ge.createTaggedTemplateExpression(Nr, di, De() === 14 ? (ct(), ga()) : yi(true)); + return (ri || Nr.flags & 32) && (Mi.flags |= 32), Mi.questionDotToken = ri, Bi(Mi, Le); + } + function Ps(Le, Nr) { + for (; ; ) { + Nr = Ec(Le, Nr, true); + var ri = void 0, di = At(28); + if (di && (ri = Ii(Gc), Zn())) { + Nr = os(Le, Nr, di, ri); + continue; + } + if (ri || De() === 20) { + !di && Nr.kind === 228 && (ri = Nr.typeArguments, Nr = Nr.expression); + var Mi = d_(), st = di || sl(Nr) ? ge.createCallChain(Nr, di, ri, Mi) : ge.createCallExpression(Nr, ri, Mi); + Nr = Bi(st, Le); + continue; + } + if (di) { + var ra = kn(79, false, e.Diagnostics.Identifier_expected); + Nr = Bi(ge.createPropertyAccessChain(Nr, di, ra), Le); + } + break; + } + return Nr; + } + function d_() { + ui(20); + var Le = hs(11, Nl); + return ui(21), Le; + } + function Gc() { + if ((Er & 262144) === 0 && Li() === 29) { + Tr(); + var Le = hs(20, Aa); + if (!!ui(31)) + return Le && B_() ? Le : void 0; + } + } + function B_() { + switch (De()) { + case 20: + case 14: + case 15: + return true; + } + return !qs(); + } + function vu() { + switch (De()) { + case 8: + case 9: + case 10: + case 14: + return ga(); + case 108: + case 106: + case 104: + case 110: + case 95: + return ai(); + case 20: + return Gt(); + case 22: + return cl(); + case 18: + return Ut(); + case 131: + if (!Rt(Iu)) + break; + return Ds(); + case 84: + return tn(); + case 98: + return Ds(); + case 103: + return bs(); + case 43: + case 68: + if (Yi() === 13) + return ga(); + break; + case 15: + return yi(false); + case 80: + return Co(); + } + return eo(e.Diagnostics.Expression_expected); + } + function Gt() { + var Le = Ue(), Nr = fr(); + ui(20); + var ri = Wt(ns); + return ui(21), wr(Bi(ge.createParenthesizedExpression(ri), Le), Nr); + } + function As() { + var Le = Ue(); + ui(25); + var Nr = hc(); + return Bi(ge.createSpreadElement(Nr), Le); + } + function vn() { + return De() === 25 ? As() : De() === 27 ? Bi(ge.createOmittedExpression(), Ue()) : hc(); + } + function Nl() { + return et(fe, vn); + } + function cl() { + var Le = Ue(), Nr = D.getTokenPos(), ri = ui(22), di = D.hasPrecedingLineBreak(), Mi = hs(15, vn); + return Vi(22, 23, ri, Nr), Bi(ge.createArrayLiteralExpression(Mi, di), Le); + } + function rf() { + var Le = Ue(), Nr = fr(); + if (At(25)) { + var ri = hc(); + return wr(Bi(ge.createSpreadAssignment(ri), Le), Nr); + } + var di = gl(), Mi = Fc(); + if (Ko(136)) + return Gu(Le, Nr, di, Mi, 172); + if (Ko(149)) + return Gu(Le, Nr, di, Mi, 173); + var st = At(41), ra = Fi(), Ta = En(), ha = At(57), Na = At(53); + if (st || De() === 20 || De() === 29) + return pl(Le, Nr, di, Mi, st, Ta, ha, Na); + var In, qo = ra && De() !== 58; + if (qo) { + var co = At(63), ts = co ? Wt(hc) : void 0; + In = ge.createShorthandPropertyAssignment(Ta, ts), In.equalsToken = co; + } else { + ui(58); + var vs = Wt(hc); + In = ge.createPropertyAssignment(Ta, vs); + } + return In.decorators = di, In.modifiers = Mi, In.questionToken = ha, In.exclamationToken = Na, wr(Bi(In, Le), Nr); + } + function Ut() { + var Le = Ue(), Nr = D.getTokenPos(), ri = ui(18), di = D.hasPrecedingLineBreak(), Mi = hs(12, rf, true); + return Vi(18, 19, ri, Nr), Bi(ge.createObjectLiteralExpression(Mi, di), Le); + } + function Ds() { + var Le = vr(); + wi(false); + var Nr = Ue(), ri = fr(), di = Fc(); + ui(98); + var Mi = At(41), st = Mi ? 1 : 0, ra = e.some(di, e.isAsyncModifier) ? 2 : 0, Ta = st && ra ? Ze(bf) : st ? ae(bf) : ra ? Jr(bf) : bf(), ha = Ws(), Na = Ei(st | ra), In = vc(58, false), qo = Cc(st | ra); + wi(Le); + var co = ge.createFunctionExpression(di, Mi, Ta, ha, Na, In, qo); + return wr(Bi(co, Nr), ri); + } + function bf() { + return Ki() ? Pn() : void 0; + } + function bs() { + var Le = Ue(); + if (ui(103), at(24)) { + var Nr = Rn(); + return Bi(ge.createMetaProperty(103, Nr), Le); + } + var ri = Ue(), di = Ec(ri, vu(), false), Mi; + di.kind === 228 && (Mi = di.typeArguments, di = di.expression); + var st = De() === 20 ? d_() : void 0; + return Bi(ge.createNewExpression(di, Mi, st), Le); + } + function Dc(Le, Nr) { + var ri = Ue(), di = fr(), Mi = D.getTokenPos(), st = ui(18, Nr); + if (st || Le) { + var ra = D.hasPrecedingLineBreak(), Ta = Qi(1, nc); + Vi(18, 19, st, Mi); + var ha = wr(Bi(ge.createBlock(Ta, ra), ri), di); + return De() === 63 && (Ar(e.Diagnostics.Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_destructuring_assignment_you_might_need_to_wrap_the_the_whole_assignment_in_parentheses), Tr()), ha; + } else { + var Ta = ps(); + return wr(Bi(ge.createBlock(Ta, void 0), ri), di); + } + } + function Cc(Le, Nr) { + var ri = Wr(); + Di(!!(Le & 1)); + var di = mr(); + Xi(!!(Le & 2)); + var Mi = Ne; + Ne = false; + var st = vr(); + st && wi(false); + var ra = Dc(!!(Le & 16), Nr); + return st && wi(true), Ne = Mi, Di(ri), Xi(di), ra; + } + function ac() { + var Le = Ue(), Nr = fr(); + return ui(26), wr(Bi(ge.createEmptyStatement(), Le), Nr); + } + function Pl() { + var Le = Ue(), Nr = fr(); + ui(99); + var ri = D.getTokenPos(), di = ui(20), Mi = Wt(ns); + Vi(20, 21, di, ri); + var st = nc(), ra = at(91) ? nc() : void 0; + return wr(Bi(ge.createIfStatement(Mi, st, ra), Le), Nr); + } + function Il() { + var Le = Ue(), Nr = fr(); + ui(90); + var ri = nc(); + ui(115); + var di = D.getTokenPos(), Mi = ui(20), st = Wt(ns); + return Vi(20, 21, Mi, di), at(26), wr(Bi(ge.createDoStatement(ri, st), Le), Nr); + } + function zf() { + var Le = Ue(), Nr = fr(); + ui(115); + var ri = D.getTokenPos(), di = ui(20), Mi = Wt(ns); + Vi(20, 21, di, ri); + var st = nc(); + return wr(Bi(ge.createWhileStatement(Mi, st), Le), Nr); + } + function ul() { + var Le = Ue(), Nr = fr(); + ui(97); + var ri = At(132); + ui(20); + var di; + De() !== 26 && (De() === 113 || De() === 119 || De() === 85 ? di = z_(true) : di = Zt(ns)); + var Mi; + if (ri ? ui(160) : at(160)) { + var st = Wt(hc); + ui(21), Mi = ge.createForOfStatement(ri, di, st, nc()); + } else if (at(101)) { + var st = Wt(ns); + ui(21), Mi = ge.createForInStatement(di, st, nc()); + } else { + ui(26); + var ra = De() !== 26 && De() !== 21 ? Wt(ns) : void 0; + ui(26); + var Ta = De() !== 21 ? Wt(ns) : void 0; + ui(21), Mi = ge.createForStatement(di, ra, Ta, nc()); + } + return wr(Bi(Mi, Le), Nr); + } + function Nu(Le) { + var Nr = Ue(), ri = fr(); + ui(Le === 246 ? 81 : 86); + var di = ka() ? void 0 : eo(); + pn(); + var Mi = Le === 246 ? ge.createBreakStatement(di) : ge.createContinueStatement(di); + return wr(Bi(Mi, Nr), ri); + } + function Us() { + var Le = Ue(), Nr = fr(); + ui(105); + var ri = ka() ? void 0 : Wt(ns); + return pn(), wr(Bi(ge.createReturnStatement(ri), Le), Nr); + } + function Ap() { + var Le = Ue(), Nr = fr(); + ui(116); + var ri = D.getTokenPos(), di = ui(20), Mi = Wt(ns); + Vi(20, 21, di, ri); + var st = Gi(33554432, nc); + return wr(Bi(ge.createWithStatement(Mi, st), Le), Nr); + } + function Wf() { + var Le = Ue(), Nr = fr(); + ui(82); + var ri = Wt(ns); + ui(58); + var di = Qi(3, nc); + return wr(Bi(ge.createCaseClause(ri, di), Le), Nr); + } + function Sf() { + var Le = Ue(); + ui(88), ui(58); + var Nr = Qi(3, nc); + return Bi(ge.createDefaultClause(Nr), Le); + } + function ll() { + return De() === 82 ? Wf() : Sf(); + } + function J_() { + var Le = Ue(); + ui(18); + var Nr = Qi(2, ll); + return ui(19), Bi(ge.createCaseBlock(Nr), Le); + } + function j_() { + var Le = Ue(), Nr = fr(); + ui(107), ui(20); + var ri = Wt(ns); + ui(21); + var di = J_(); + return wr(Bi(ge.createSwitchStatement(ri, di), Le), Nr); + } + function U_() { + var Le = Ue(), Nr = fr(); + ui(109); + var ri = D.hasPrecedingLineBreak() ? void 0 : Wt(ns); + return ri === void 0 && (Cr++, ri = Bi(ge.createIdentifier(""), Ue())), Ba() || wt(ri), wr(Bi(ge.createThrowStatement(ri), Le), Nr); + } + function iu() { + var Le = Ue(), Nr = fr(); + ui(111); + var ri = Dc(false), di = De() === 83 ? vd() : void 0, Mi; + return (!di || De() === 96) && (ui(96, e.Diagnostics.catch_or_finally_expected), Mi = Dc(false)), wr(Bi(ge.createTryStatement(ri, di, Mi), Le), Nr); + } + function vd() { + var Le = Ue(); + ui(83); + var Nr; + at(20) ? (Nr = xf(), ui(21)) : Nr = void 0; + var ri = Dc(false); + return Bi(ge.createCatchClause(Nr, ri), Le); + } + function qf() { + var Le = Ue(), Nr = fr(); + return ui(87), pn(), wr(Bi(ge.createDebuggerStatement(), Le), Nr); + } + function dc() { + var Le = Ue(), Nr = fr(), ri, di = De() === 20, Mi = Wt(ns); + return e.isIdentifier(Mi) && at(58) ? ri = ge.createLabeledStatement(Mi, nc()) : (Ba() || wt(Mi), ri = ge.createExpressionStatement(Mi), di && (Nr = false)), wr(Bi(ri, Le), Nr); + } + function Pu() { + return Tr(), e.tokenIsIdentifierOrKeyword(De()) && !D.hasPrecedingLineBreak(); + } + function wl() { + return Tr(), De() === 84 && !D.hasPrecedingLineBreak(); + } + function Iu() { + return Tr(), De() === 98 && !D.hasPrecedingLineBreak(); + } + function so() { + return Tr(), (e.tokenIsIdentifierOrKeyword(De()) || De() === 8 || De() === 9 || De() === 10) && !D.hasPrecedingLineBreak(); + } + function Et() { + for (; ; ) + switch (De()) { + case 113: + case 119: + case 85: + case 98: + case 84: + case 92: + return true; + case 118: + case 152: + return u_(); + case 141: + case 142: + return Tf(); + case 126: + case 131: + case 135: + case 121: + case 122: + case 123: + case 145: + if (Tr(), D.hasPrecedingLineBreak()) + return false; + continue; + case 157: + return Tr(), De() === 18 || De() === 79 || De() === 93; + case 100: + return Tr(), De() === 10 || De() === 41 || De() === 18 || e.tokenIsIdentifierOrKeyword(De()); + case 93: + var Le = Tr(); + if (Le === 152 && (Le = Rt(Tr)), Le === 63 || Le === 41 || Le === 18 || Le === 88 || Le === 127) + return true; + continue; + case 124: + Tr(); + continue; + default: + return false; + } + } + function Ys() { + return Rt(Et); + } + function Ku() { + switch (De()) { + case 59: + case 26: + case 18: + case 113: + case 119: + case 98: + case 84: + case 92: + case 99: + case 90: + case 115: + case 97: + case 86: + case 81: + case 105: + case 116: + case 107: + case 109: + case 111: + case 87: + case 83: + case 96: + return true; + case 100: + return Ys() || Rt(jn); + case 85: + case 93: + return Ys(); + case 131: + case 135: + case 118: + case 141: + case 142: + case 152: + case 157: + return true; + case 123: + case 121: + case 122: + case 124: + case 145: + return Ys() || !Rt(Pu); + default: + return qs(); + } + } + function Np() { + return Tr(), Ki() || De() === 18 || De() === 22; + } + function Pp() { + return Rt(Np); + } + function nc() { + switch (De()) { + case 26: + return ac(); + case 18: + return Dc(false); + case 113: + return rs(Ue(), fr(), void 0, void 0); + case 119: + if (Pp()) + return rs(Ue(), fr(), void 0, void 0); + break; + case 98: + return Op(Ue(), fr(), void 0, void 0); + case 84: + return Ml(Ue(), fr(), void 0, void 0); + case 99: + return Pl(); + case 90: + return Il(); + case 115: + return zf(); + case 97: + return ul(); + case 86: + return Nu(245); + case 81: + return Nu(246); + case 105: + return Us(); + case 116: + return Ap(); + case 107: + return j_(); + case 109: + return U_(); + case 111: + case 83: + case 96: + return iu(); + case 87: + return qf(); + case 59: + return _l(); + case 131: + case 118: + case 152: + case 141: + case 142: + case 135: + case 85: + case 92: + case 93: + case 100: + case 121: + case 122: + case 123: + case 126: + case 124: + case 145: + case 157: + if (Ys()) + return _l(); + break; + } + return dc(); + } + function fl(Le) { + return Le.kind === 135; + } + function _l() { + var Le = e.some(Rt(function() { + return gl(), Fc(); + }), fl); + if (Le) { + var Nr = cu(); + if (Nr) + return Nr; + } + var ri = Ue(), di = fr(), Mi = gl(), st = Fc(); + if (Le) { + for (var ra = 0, Ta = st; ra < Ta.length; ra++) { + var ha = Ta[ra]; + ha.flags |= 16777216; + } + return Gi(16777216, function() { + return gc(ri, di, Mi, st); + }); + } else + return gc(ri, di, Mi, st); + } + function cu() { + return Gi(16777216, function() { + var Le = sa(Ye); + if (Le) + return en(Le); + }); + } + function gc(Le, Nr, ri, di) { + switch (De()) { + case 113: + case 119: + case 85: + return rs(Le, Nr, ri, di); + case 98: + return Op(Le, Nr, ri, di); + case 84: + return Ml(Le, Nr, ri, di); + case 118: + return v_(Le, Nr, ri, di); + case 152: + return Bp(Le, Nr, ri, di); + case 92: + return Xc(Le, Nr, ri, di); + case 157: + case 141: + case 142: + return V_(Le, Nr, ri, di); + case 100: + return Sa(Le, Nr, ri, di); + case 93: + switch (Tr(), De()) { + case 88: + case 63: + return Jp(Le, Nr, ri, di); + case 127: + return zi(Le, Nr, ri, di); + default: + return K_(Le, Nr, ri, di); + } + default: + if (ri || di) { + var Mi = kn(276, true, e.Diagnostics.Declaration_expected); + return e.setTextRangePos(Mi, Le), Mi.decorators = ri, Mi.modifiers = di, Mi; + } + return; + } + } + function Tf() { + return Tr(), !D.hasPrecedingLineBreak() && (Fi() || De() === 10); + } + function mc(Le, Nr) { + if (De() !== 18 && ka()) { + pn(); + return; + } + return Cc(Le, Nr); + } + function Ip() { + var Le = Ue(); + if (De() === 27) + return Bi(ge.createOmittedExpression(), Le); + var Nr = At(25), ri = Ol(), di = nl(); + return Bi(ge.createBindingElement(Nr, void 0, ri, di), Le); + } + function ms() { + var Le = Ue(), Nr = At(25), ri = Ki(), di = En(), Mi; + ri && De() !== 58 ? (Mi = di, di = void 0) : (ui(58), Mi = Ol()); + var st = nl(); + return Bi(ge.createBindingElement(Nr, di, Mi, st), Le); + } + function tu() { + var Le = Ue(); + ui(18); + var Nr = hs(9, ms); + return ui(19), Bi(ge.createObjectBindingPattern(Nr), Le); + } + function wp() { + var Le = Ue(); + ui(22); + var Nr = hs(10, Ip); + return ui(23), Bi(ge.createArrayBindingPattern(Nr), Le); + } + function Hc() { + return De() === 18 || De() === 22 || De() === 80 || Ki(); + } + function Ol(Le) { + return De() === 22 ? wp() : De() === 18 ? tu() : Pn(Le); + } + function tf() { + return xf(true); + } + function xf(Le) { + var Nr = Ue(), ri = fr(), di = Ol(e.Diagnostics.Private_identifiers_are_not_allowed_in_variable_declarations), Mi; + Le && di.kind === 79 && De() === 53 && !D.hasPrecedingLineBreak() && (Mi = ai()); + var st = va(), ra = F_(De()) ? void 0 : nl(), Ta = ge.createVariableDeclaration(di, Mi, st, ra); + return wr(Bi(Ta, Nr), ri); + } + function z_(Le) { + var Nr = Ue(), ri = 0; + switch (De()) { + case 113: + break; + case 119: + ri |= 1; + break; + case 85: + ri |= 2; + break; + default: + e.Debug.fail(); + } + Tr(); + var di; + if (De() === 160 && Rt(Oc)) + di = ps(); + else { + var Mi = Je(); + si(Le), di = hs(8, Le ? xf : tf), si(Mi); + } + return Bi(ge.createVariableDeclarationList(di, ri), Nr); + } + function Oc() { + return Qe() && Tr() === 21; + } + function rs(Le, Nr, ri, di) { + var Mi = z_(false); + pn(); + var st = ge.createVariableStatement(di, Mi); + return st.decorators = ri, wr(Bi(st, Le), Nr); + } + function Op(Le, Nr, ri, di) { + var Mi = mr(), st = e.modifiersToFlags(di); + ui(98); + var ra = At(41), Ta = st & 512 ? bf() : Pn(), ha = ra ? 1 : 0, Na = st & 256 ? 2 : 0, In = Ws(); + st & 1 && Xi(true); + var qo = Ei(ha | Na), co = vc(58, false), ts = mc(ha | Na, e.Diagnostics.or_expected); + Xi(Mi); + var vs = ge.createFunctionDeclaration(ri, di, ra, Ta, In, qo, co, ts); + return wr(Bi(vs, Le), Nr); + } + function Ef() { + if (De() === 134) + return ui(134); + if (De() === 10 && Rt(Tr) === 20) + return Ii(function() { + var Le = ga(); + return Le.text === "constructor" ? Le : void 0; + }); + } + function Fl(Le, Nr, ri, di) { + return Ii(function() { + if (Ef()) { + var Mi = Ws(), st = Ei(0), ra = vc(58, false), Ta = mc(0, e.Diagnostics.or_expected), ha = ge.createConstructorDeclaration(ri, di, st, Ta); + return ha.typeParameters = Mi, ha.type = ra, wr(Bi(ha, Le), Nr); + } + }); + } + function pl(Le, Nr, ri, di, Mi, st, ra, Ta, ha) { + var Na = Mi ? 1 : 0, In = e.some(di, e.isAsyncModifier) ? 2 : 0, qo = Ws(), co = Ei(Na | In), ts = vc(58, false), vs = mc(Na | In, ha), Ac = ge.createMethodDeclaration(ri, di, Mi, st, ra, qo, co, ts, vs); + return Ac.exclamationToken = Ta, wr(Bi(Ac, Le), Nr); + } + function Fp(Le, Nr, ri, di, Mi, st) { + var ra = !st && !D.hasPrecedingLineBreak() ? At(53) : void 0, Ta = va(), ha = et(45056, nl); + Oi(Mi, Ta, ha); + var Na = ge.createPropertyDeclaration(ri, di, Mi, st || ra, Ta, ha); + return wr(Bi(Na, Le), Nr); + } + function Mp(Le, Nr, ri, di) { + var Mi = At(41), st = En(), ra = At(57); + return Mi || De() === 20 || De() === 29 ? pl(Le, Nr, ri, di, Mi, st, ra, void 0, e.Diagnostics.or_expected) : Fp(Le, Nr, ri, di, st, ra); + } + function Gu(Le, Nr, ri, di, Mi) { + var st = En(), ra = Ws(), Ta = Ei(0), ha = vc(58, false), Na = mc(0), In = Mi === 172 ? ge.createGetAccessorDeclaration(ri, di, st, Ta, ha, Na) : ge.createSetAccessorDeclaration(ri, di, st, Ta, Na); + return In.typeParameters = ra, ha && In.kind === 173 && (In.type = ha), wr(Bi(In, Le), Nr); + } + function Lp() { + var Le; + if (De() === 59) + return true; + for (; e.isModifierKind(De()); ) { + if (Le = De(), e.isClassMemberModifier(Le)) + return true; + Tr(); + } + if (De() === 41 || (Da() && (Le = De(), Tr()), De() === 22)) + return true; + if (Le !== void 0) { + if (!e.isKeyword(Le) || Le === 149 || Le === 136) + return true; + switch (De()) { + case 20: + case 29: + case 53: + case 58: + case 63: + case 57: + return true; + default: + return ka(); + } + } + return false; + } + function Cf(Le, Nr, ri, di) { + $a(124); + var Mi = W_(); + return wr(Bi(ge.createClassStaticBlockDeclaration(ri, di, Mi), Le), Nr); + } + function W_() { + var Le = Wr(), Nr = mr(); + Di(false), Xi(true); + var ri = Dc(false); + return Di(Le), Xi(Nr), ri; + } + function g_() { + if (mr() && De() === 132) { + var Le = Ue(), Nr = eo(e.Diagnostics.Expression_expected); + Tr(); + var ri = Ec(Le, Nr, true); + return Ps(Le, ri); + } + return $l(); + } + function dl() { + var Le = Ue(); + if (!!at(59)) { + var Nr = Xe(g_); + return Bi(ge.createDecorator(Nr), Le); + } + } + function gl() { + for (var Le = Ue(), Nr, ri; ri = dl(); ) + Nr = e.append(Nr, ri); + return Nr && Cn(Nr, Le); + } + function Vf(Le, Nr, ri) { + var di = Ue(), Mi = De(); + if (De() === 85 && Le) { + if (!Ii(Oo)) + return; + } else { + if (Nr && De() === 124 && Rt(sr)) + return; + if (ri && De() === 124) + return; + if (!xi()) + return; + } + return Bi(ge.createToken(Mi), di); + } + function Fc(Le, Nr) { + for (var ri = Ue(), di, Mi, st = false; Mi = Vf(Le, Nr, st); ) + Mi.kind === 124 && (st = true), di = e.append(di, Mi); + return di && Cn(di, ri); + } + function Hu() { + var Le; + if (De() === 131) { + var Nr = Ue(); + Tr(); + var ri = Bi(ge.createToken(131), Nr); + Le = Cn([ri], Nr); + } + return Le; + } + function af() { + var Le = Ue(); + if (De() === 26) + return Tr(), Bi(ge.createSemicolonClassElement(), Le); + var Nr = fr(), ri = gl(), di = Fc(true, true); + if (De() === 124 && Rt(sr)) + return Cf(Le, Nr, ri, di); + if (Ko(136)) + return Gu(Le, Nr, ri, di, 172); + if (Ko(149)) + return Gu(Le, Nr, ri, di, 173); + if (De() === 134 || De() === 10) { + var Mi = Fl(Le, Nr, ri, di); + if (Mi) + return Mi; + } + if (bt()) + return Xt(Le, Nr, ri, di); + if (e.tokenIsIdentifierOrKeyword(De()) || De() === 10 || De() === 8 || De() === 41 || De() === 22) { + var st = e.some(di, fl); + if (st) { + for (var ra = 0, Ta = di; ra < Ta.length; ra++) { + var ha = Ta[ra]; + ha.flags |= 16777216; + } + return Gi(16777216, function() { + return Mp(Le, Nr, ri, di); + }); + } else + return Mp(Le, Nr, ri, di); + } + if (ri || di) { + var Na = kn(79, true, e.Diagnostics.Declaration_expected); + return Fp(Le, Nr, ri, di, Na, void 0); + } + return e.Debug.fail("Should not have attempted to parse class member declaration."); + } + function tn() { + return Ot(Ue(), fr(), void 0, void 0, 226); + } + function Ml(Le, Nr, ri, di) { + return Ot(Le, Nr, ri, di, 257); + } + function Ot(Le, Nr, ri, di, Mi) { + var st = mr(); + ui(84); + var ra = nf(), Ta = Ws(); + e.some(di, e.isExportModifier) && Xi(true); + var ha = Kf(), Na; + ui(18) ? (Na = hd(), ui(19)) : Na = ps(), Xi(st); + var In = Mi === 257 ? ge.createClassDeclaration(ri, di, ra, Ta, ha, Na) : ge.createClassExpression(ri, di, ra, Ta, ha, Na); + return wr(Bi(In, Le), Nr); + } + function nf() { + return Ki() && !q_() ? Kn(Ki()) : void 0; + } + function q_() { + return De() === 117 && Rt(Gr); + } + function Kf() { + if (Ll()) + return Qi(22, Rp); + } + function Rp() { + var Le = Ue(), Nr = De(); + e.Debug.assert(Nr === 94 || Nr === 117), Tr(); + var ri = hs(7, yd); + return Bi(ge.createHeritageClause(Nr, ri), Le); + } + function yd() { + var Le = Ue(), Nr = $l(); + if (Nr.kind === 228) + return Nr; + var ri = m_(); + return Bi(ge.createExpressionWithTypeArguments(Nr, ri), Le); + } + function m_() { + return De() === 29 ? js(20, Aa, 29, 31) : void 0; + } + function Ll() { + return De() === 94 || De() === 117; + } + function hd() { + return Qi(5, af); + } + function v_(Le, Nr, ri, di) { + ui(118); + var Mi = eo(), st = Ws(), ra = Kf(), Ta = ho(), ha = ge.createInterfaceDeclaration(ri, di, Mi, st, ra, Ta); + return wr(Bi(ha, Le), Nr); + } + function Bp(Le, Nr, ri, di) { + ui(152); + var Mi = eo(), st = Ws(); + ui(63); + var ra = De() === 138 && Ii(po) || Aa(); + pn(); + var Ta = ge.createTypeAliasDeclaration(ri, di, Mi, st, ra); + return wr(Bi(Ta, Le), Nr); + } + function Xu() { + var Le = Ue(), Nr = fr(), ri = En(), di = Wt(nl); + return wr(Bi(ge.createEnumMember(ri, di), Le), Nr); + } + function Xc(Le, Nr, ri, di) { + ui(92); + var Mi = eo(), st; + ui(18) ? (st = Sr(function() { + return hs(6, Xu); + }), ui(19)) : st = ps(); + var ra = ge.createEnumDeclaration(ri, di, Mi, st); + return wr(Bi(ra, Le), Nr); + } + function Gf() { + var Le = Ue(), Nr; + return ui(18) ? (Nr = Qi(1, nc), ui(19)) : Nr = ps(), Bi(ge.createModuleBlock(Nr), Le); + } + function of(Le, Nr, ri, di, Mi) { + var st = Mi & 16, ra = eo(), Ta = at(24) ? of(Ue(), false, void 0, void 0, 4 | st) : Gf(), ha = ge.createModuleDeclaration(ri, di, ra, Ta, Mi); + return wr(Bi(ha, Le), Nr); + } + function wu(Le, Nr, ri, di) { + var Mi = 0, st; + De() === 157 ? (st = eo(), Mi |= 1024) : (st = ga(), st.text = xn(st.text)); + var ra; + De() === 18 ? ra = Gf() : pn(); + var Ta = ge.createModuleDeclaration(ri, di, st, ra, Mi); + return wr(Bi(Ta, Le), Nr); + } + function V_(Le, Nr, ri, di) { + var Mi = 0; + if (De() === 157) + return wu(Le, Nr, ri, di); + if (at(142)) + Mi |= 16; + else if (ui(141), De() === 10) + return wu(Le, Nr, ri, di); + return of(Le, Nr, ri, di, Mi); + } + function yu() { + return De() === 146 && Rt(v); + } + function v() { + return Tr() === 20; + } + function sr() { + return Tr() === 18; + } + function fi() { + return Tr() === 43; + } + function zi(Le, Nr, ri, di) { + ui(127), ui(142); + var Mi = eo(); + pn(); + var st = ge.createNamespaceExportDeclaration(Mi); + return st.decorators = ri, st.modifiers = di, wr(Bi(st, Le), Nr); + } + function Sa(Le, Nr, ri, di) { + ui(100); + var Mi = D.getStartPos(), st; + Fi() && (st = eo()); + var ra = false; + if (De() !== 156 && (st == null ? void 0 : st.escapedText) === "type" && (Fi() || ta()) && (ra = true, st = Fi() ? eo() : void 0), st && !nn()) + return Wo(Le, Nr, ri, di, st, ra); + var Ta; + (st || De() === 41 || De() === 18) && (Ta = Lo(st, Mi, ra), ui(156)); + var ha = is(), Na; + De() === 129 && !D.hasPrecedingLineBreak() && (Na = Ha()), pn(); + var In = ge.createImportDeclaration(ri, di, Ta, ha, Na); + return wr(Bi(In, Le), Nr); + } + function da() { + var Le = Ue(), Nr = e.tokenIsIdentifierOrKeyword(De()) ? Rn() : fo(10); + ui(58); + var ri = hc(); + return Bi(ge.createAssertEntry(Nr, ri), Le); + } + function Ha(Le) { + var Nr = Ue(); + Le || ui(129); + var ri = D.getTokenPos(); + if (ui(18)) { + var di = D.hasPrecedingLineBreak(), Mi = hs(24, da, true); + if (!ui(19)) { + var st = e.lastOrUndefined(_e); + st && st.code === e.Diagnostics._0_expected.code && e.addRelatedInfo(st, e.createDetachedDiagnostic(Re, ri, 1, e.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}")); + } + return Bi(ge.createAssertClause(Mi, di), Nr); + } else { + var Mi = Cn([], Ue(), void 0, false); + return Bi(ge.createAssertClause(Mi, false), Nr); + } + } + function ta() { + return De() === 41 || De() === 18; + } + function nn() { + return De() === 27 || De() === 156; + } + function Wo(Le, Nr, ri, di, Mi, st) { + ui(63); + var ra = oc(); + pn(); + var Ta = ge.createImportEqualsDeclaration(ri, di, st, Mi, ra), ha = wr(Bi(Ta, Le), Nr); + return ha; + } + function Lo(Le, Nr, ri) { + var di; + return (!Le || at(27)) && (di = De() === 41 ? au() : Ou(269)), Bi(ge.createImportClause(ri, Le, di), Nr); + } + function oc() { + return yu() ? uu() : ds(false); + } + function uu() { + var Le = Ue(); + ui(146), ui(20); + var Nr = is(); + return ui(21), Bi(ge.createExternalModuleReference(Nr), Le); + } + function is() { + if (De() === 10) { + var Le = ga(); + return Le.text = xn(Le.text), Le; + } else + return ns(); + } + function au() { + var Le = Ue(); + ui(41), ui(127); + var Nr = eo(); + return Bi(ge.createNamespaceImport(Nr), Le); + } + function Ou(Le) { + var Nr = Ue(), ri = Le === 269 ? ge.createNamedImports(js(23, lu, 18, 19)) : ge.createNamedExports(js(23, sf, 18, 19)); + return Bi(ri, Nr); + } + function sf() { + var Le = fr(); + return wr(cf(275), Le); + } + function lu() { + return cf(270); + } + function cf(Le) { + var Nr = Ue(), ri = e.isKeyword(De()) && !Fi(), di = D.getTokenPos(), Mi = D.getTextPos(), st = false, ra, Ta = true, ha = Rn(); + if (ha.escapedText === "type") + if (De() === 127) { + var Na = Rn(); + if (De() === 127) { + var In = Rn(); + e.tokenIsIdentifierOrKeyword(De()) ? (st = true, ra = Na, ha = co(), Ta = false) : (ra = ha, ha = In, Ta = false); + } else + e.tokenIsIdentifierOrKeyword(De()) ? (ra = ha, Ta = false, ha = co()) : (st = true, ha = Na); + } else + e.tokenIsIdentifierOrKeyword(De()) && (st = true, ha = co()); + Ta && De() === 127 && (ra = ha, ui(127), ha = co()), Le === 270 && ri && nr(di, Mi, e.Diagnostics.Identifier_expected); + var qo = Le === 270 ? ge.createImportSpecifier(st, ra, ha) : ge.createExportSpecifier(st, ra, ha); + return Bi(qo, Nr); + function co() { + return ri = e.isKeyword(De()) && !Fi(), di = D.getTokenPos(), Mi = D.getTextPos(), Rn(); + } + } + function uf(Le) { + return Bi(ge.createNamespaceExport(Rn()), Le); + } + function K_(Le, Nr, ri, di) { + var Mi = mr(); + Xi(true); + var st, ra, Ta, ha = at(152), Na = Ue(); + at(41) ? (at(127) && (st = uf(Na)), ui(156), ra = is()) : (st = Ou(273), (De() === 156 || De() === 10 && !D.hasPrecedingLineBreak()) && (ui(156), ra = is())), ra && De() === 129 && !D.hasPrecedingLineBreak() && (Ta = Ha()), pn(), Xi(Mi); + var In = ge.createExportDeclaration(ri, di, ha, st, ra, Ta); + return wr(Bi(In, Le), Nr); + } + function Jp(Le, Nr, ri, di) { + var Mi = mr(); + Xi(true); + var st; + at(63) ? st = true : ui(88); + var ra = hc(); + pn(), Xi(Mi); + var Ta = ge.createExportAssignment(ri, di, st, ra); + return wr(Bi(Ta, Le), Nr); + } + var Hf; + (function(Le) { + Le[Le.SourceElements = 0] = "SourceElements", Le[Le.BlockStatements = 1] = "BlockStatements", Le[Le.SwitchClauses = 2] = "SwitchClauses", Le[Le.SwitchClauseStatements = 3] = "SwitchClauseStatements", Le[Le.TypeMembers = 4] = "TypeMembers", Le[Le.ClassMembers = 5] = "ClassMembers", Le[Le.EnumMembers = 6] = "EnumMembers", Le[Le.HeritageClauseElement = 7] = "HeritageClauseElement", Le[Le.VariableDeclarations = 8] = "VariableDeclarations", Le[Le.ObjectBindingElements = 9] = "ObjectBindingElements", Le[Le.ArrayBindingElements = 10] = "ArrayBindingElements", Le[Le.ArgumentExpressions = 11] = "ArgumentExpressions", Le[Le.ObjectLiteralMembers = 12] = "ObjectLiteralMembers", Le[Le.JsxAttributes = 13] = "JsxAttributes", Le[Le.JsxChildren = 14] = "JsxChildren", Le[Le.ArrayLiteralMembers = 15] = "ArrayLiteralMembers", Le[Le.Parameters = 16] = "Parameters", Le[Le.JSDocParameters = 17] = "JSDocParameters", Le[Le.RestProperties = 18] = "RestProperties", Le[Le.TypeParameters = 19] = "TypeParameters", Le[Le.TypeArguments = 20] = "TypeArguments", Le[Le.TupleElementTypes = 21] = "TupleElementTypes", Le[Le.HeritageClauses = 22] = "HeritageClauses", Le[Le.ImportOrExportSpecifiers = 23] = "ImportOrExportSpecifiers", Le[Le.AssertEntries = 24] = "AssertEntries", Le[Le.Count = 25] = "Count"; + })(Hf || (Hf = {})); + var kc; + (function(Le) { + Le[Le.False = 0] = "False", Le[Le.True = 1] = "True", Le[Le.Unknown = 2] = "Unknown"; + })(kc || (kc = {})); + var G_; + (function(Le) { + function Nr(Na, In, qo) { + ur("file.js", Na, 99, void 0, 1), D.setText(Na, In, qo), ye = D.scan(); + var co = ri(), ts = or("file.js", 99, 1, false, [], ge.createToken(1), 0, e.noop), vs = e.attachFileToDiagnostics(_e, ts); + return we && (ts.jsDocDiagnostics = e.attachFileToDiagnostics(we, ts)), yr(), co ? { jsDocTypeExpression: co, diagnostics: vs } : void 0; + } + Le.parseJSDocTypeExpressionForTests = Nr; + function ri(Na) { + var In = Ue(), qo = (Na ? at : ui)(18), co = Gi(8388608, al); + (!Na || qo) && ji(19); + var ts = ge.createJSDocTypeExpression(co); + return pe(ts), Bi(ts, In); + } + Le.parseJSDocTypeExpression = ri; + function di() { + for (var Na = Ue(), In = at(18), qo = Ue(), co = ds(false); De() === 80; ) + nt(), vi(), co = Bi(ge.createJSDocMemberName(co, eo()), qo); + In && ji(19); + var ts = ge.createJSDocNameReference(co); + return pe(ts), Bi(ts, Na); + } + Le.parseJSDocNameReference = di; + function Mi(Na, In, qo) { + ur("", Na, 99, void 0, 1); + var co = Gi(8388608, function() { + return ha(In, qo); + }), ts = { languageVariant: 0, text: Na }, vs = e.attachFileToDiagnostics(_e, ts); + return yr(), co ? { jsDoc: co, diagnostics: vs } : void 0; + } + Le.parseIsolatedJSDocComment = Mi; + function st(Na, In, qo) { + var co = ye, ts = _e.length, vs = n, Ac = Gi(8388608, function() { + return ha(In, qo); + }); + return e.setParent(Ac, Na), Er & 262144 && (we || (we = []), we.push.apply(we, _e)), ye = co, _e.length = ts, n = vs, Ac; + } + Le.parseJSDocComment = st; + var ra; + (function(Na) { + Na[Na.BeginningOfLine = 0] = "BeginningOfLine", Na[Na.SawAsterisk = 1] = "SawAsterisk", Na[Na.SavingComments = 2] = "SavingComments", Na[Na.SavingBackticks = 3] = "SavingBackticks"; + })(ra || (ra = {})); + var Ta; + (function(Na) { + Na[Na.Property = 1] = "Property", Na[Na.Parameter = 2] = "Parameter", Na[Na.CallbackParameter = 4] = "CallbackParameter"; + })(Ta || (Ta = {})); + function ha(Na, In) { + Na === void 0 && (Na = 0); + var qo = Ee, co = In === void 0 ? qo.length : Na + In; + if (In = co - Na, e.Debug.assert(Na >= 0), e.Debug.assert(Na <= co), e.Debug.assert(co <= qo.length), !m(qo, Na)) + return; + var ts, vs, Ac, Is, Qu, sc = [], bc = []; + return D.scanRange(Na + 3, In - 5, function() { + var It = 1, Ma, aa = Na - (qo.lastIndexOf(` +`, Na) + 1) + 4; + function Ja(Js) { + Ma || (Ma = aa), sc.push(Js), aa += Js.length; + } + for (vi(); Up(5); ) + ; + Up(4) && (It = 0, aa = 0); + e: + for (; ; ) { + switch (De()) { + case 59: + It === 0 || It === 1 ? (Yu(sc), Qu || (Qu = Ue()), Vs(W(aa)), It = 0, Ma = void 0) : Ja(D.getTokenText()); + break; + case 4: + sc.push(D.getTokenText()), It = 0, aa = 0; + break; + case 41: + var _n = D.getTokenText(); + It === 1 || It === 2 ? (It = 2, Ja(_n)) : (It = 1, aa += _n.length); + break; + case 5: + var ro = D.getTokenText(); + It === 2 ? sc.push(ro) : Ma !== void 0 && aa + ro.length > Ma && sc.push(ro.slice(Ma - aa)), aa += ro.length; + break; + case 1: + break e; + case 18: + It = 2; + var as = D.getStartPos(), cc = D.getTextPos() - 1, Sc = rt(cc); + if (Sc) { + Is || Mc(sc), bc.push(Bi(ge.createJSDocText(sc.join("")), Is != null ? Is : Na, as)), bc.push(Sc), sc = [], Is = D.getTextPos(); + break; + } + default: + It = 2, Ja(D.getTokenText()); + break; + } + vi(); + } + Yu(sc), bc.length && sc.length && bc.push(Bi(ge.createJSDocText(sc.join("")), Is != null ? Is : Na, Qu)), bc.length && ts && e.Debug.assertIsDefined(Qu, "having parsed tags implies that the end of the comment span should be set"); + var hu = ts && Cn(ts, vs, Ac); + return Bi(ge.createJSDocComment(bc.length ? Cn(bc, Na, Qu) : sc.length ? sc.join("") : void 0, hu), Na, co); + }); + function Mc(It) { + for (; It.length && (It[0] === ` +` || It[0] === "\r"); ) + It.shift(); + } + function Yu(It) { + for (; It.length && It[It.length - 1].trim() === ""; ) + It.pop(); + } + function Rl() { + for (; ; ) { + if (vi(), De() === 1) + return true; + if (!(De() === 5 || De() === 4)) + return false; + } + } + function Lc() { + if (!((De() === 5 || De() === 4) && Rt(Rl))) + for (; De() === 5 || De() === 4; ) + vi(); + } + function _() { + if ((De() === 5 || De() === 4) && Rt(Rl)) + return ""; + for (var It = D.hasPrecedingLineBreak(), Ma = false, aa = ""; It && De() === 41 || De() === 5 || De() === 4; ) + aa += D.getTokenText(), De() === 4 ? (It = true, Ma = true, aa = "") : De() === 41 && (It = false), vi(); + return Ma ? aa : ""; + } + function W(It) { + e.Debug.assert(De() === 59); + var Ma = D.getTokenPos(); + vi(); + var aa = ff(void 0), Ja = _(), _n; + switch (aa.escapedText) { + case "author": + _n = Jt(Ma, aa, It, Ja); + break; + case "implements": + _n = Xf(Ma, aa, It, Ja); + break; + case "augments": + case "extends": + _n = bd(Ma, aa, It, Ja); + break; + case "class": + case "constructor": + _n = kf(Ma, ge.createJSDocClassTag, aa, It, Ja); + break; + case "public": + _n = kf(Ma, ge.createJSDocPublicTag, aa, It, Ja); + break; + case "private": + _n = kf(Ma, ge.createJSDocPrivateTag, aa, It, Ja); + break; + case "protected": + _n = kf(Ma, ge.createJSDocProtectedTag, aa, It, Ja); + break; + case "readonly": + _n = kf(Ma, ge.createJSDocReadonlyTag, aa, It, Ja); + break; + case "override": + _n = kf(Ma, ge.createJSDocOverrideTag, aa, It, Ja); + break; + case "deprecated": + Ur = true, _n = kf(Ma, ge.createJSDocDeprecatedTag, aa, It, Ja); + break; + case "this": + _n = Gg(Ma, aa, It, Ja); + break; + case "enum": + _n = Af(Ma, aa, It, Ja); + break; + case "arg": + case "argument": + case "param": + return jp(Ma, aa, 2, It); + case "return": + case "returns": + _n = Om(Ma, aa, It, Ja); + break; + case "template": + _n = Lm(Ma, aa, It, Ja); + break; + case "type": + _n = Fm(Ma, aa, It, Ja); + break; + case "typedef": + _n = Hg(Ma, aa, It, Ja); + break; + case "callback": + _n = fg(Ma, aa, It, Ja); + break; + case "see": + _n = Vg(Ma, aa, It, Ja); + break; + default: + _n = vo(Ma, aa, It, Ja); + break; + } + return _n; + } + function Te(It, Ma, aa, Ja) { + return Ja || (aa += Ma - It), cr(aa, Ja.slice(aa)); + } + function cr(It, Ma) { + var aa = Ue(), Ja = [], _n = [], ro, as = 0, cc = true, Sc; + function hu(Sd) { + Sc || (Sc = It), Ja.push(Sd), It += Sd.length; + } + Ma !== void 0 && (Ma !== "" && hu(Ma), as = 1); + var Js = De(); + e: + for (; ; ) { + switch (Js) { + case 4: + as = 0, Ja.push(D.getTokenText()), It = 0; + break; + case 59: + if (as === 3 || as === 2 && (!cc || Rt(ni))) { + Ja.push(D.getTokenText()); + break; + } + D.setTextPos(D.getTextPos() - 1); + case 1: + break e; + case 5: + if (as === 2 || as === 3) + hu(D.getTokenText()); + else { + var Qf = D.getTokenText(); + Sc !== void 0 && It + Qf.length > Sc && Ja.push(Qf.slice(Sc - It)), It += Qf.length; + } + break; + case 18: + as = 2; + var go = D.getStartPos(), Vd = D.getTextPos() - 1, X_ = rt(Vd); + X_ ? (_n.push(Bi(ge.createJSDocText(Ja.join("")), ro != null ? ro : aa, go)), _n.push(X_), Ja = [], ro = D.getTextPos()) : hu(D.getTokenText()); + break; + case 61: + as === 3 ? as = 2 : as = 3, hu(D.getTokenText()); + break; + case 41: + if (as === 0) { + as = 1, It += 1; + break; + } + default: + as !== 3 && (as = 2), hu(D.getTokenText()); + break; + } + cc = De() === 5, Js = vi(); + } + if (Mc(Ja), Yu(Ja), _n.length) + return Ja.length && _n.push(Bi(ge.createJSDocText(Ja.join("")), ro != null ? ro : aa)), Cn(_n, aa, D.getTextPos()); + if (Ja.length) + return Ja.join(""); + } + function ni() { + var It = vi(); + return It === 5 || It === 4; + } + function rt(It) { + var Ma = Ii(yt); + if (!!Ma) { + vi(), Lc(); + var aa = Ue(), Ja = e.tokenIsIdentifierOrKeyword(De()) ? ds(true) : void 0; + if (Ja) + for (; De() === 80; ) + nt(), vi(), Ja = Bi(ge.createJSDocMemberName(Ja, eo()), aa); + for (var _n = []; De() !== 19 && De() !== 4 && De() !== 1; ) + _n.push(D.getTokenText()), vi(); + var ro = Ma === "link" ? ge.createJSDocLink : Ma === "linkcode" ? ge.createJSDocLinkCode : ge.createJSDocLinkPlain; + return Bi(ro(Ja, _n.join("")), It, D.getTextPos()); + } + } + function yt() { + if (_(), De() === 18 && vi() === 59 && e.tokenIsIdentifierOrKeyword(vi())) { + var It = D.getTokenValue(); + if (Xa(It)) + return It; + } + } + function Xa(It) { + return It === "link" || It === "linkcode" || It === "linkplain"; + } + function vo(It, Ma, aa, Ja) { + return Bi(ge.createJSDocUnknownTag(Ma, Te(It, Ue(), aa, Ja)), It); + } + function Vs(It) { + !It || (ts ? ts.push(It) : (ts = [It], vs = It.pos), Ac = It.end); + } + function H_() { + return _(), De() === 18 ? ri() : void 0; + } + function y_() { + var It = Up(22); + It && Lc(); + var Ma = Up(61), aa = Rm(); + return Ma && Qa(61), It && (Lc(), At(63) && ns(), ui(23)), { name: aa, isBracketed: It }; + } + function Dd(It) { + switch (It.kind) { + case 148: + return true; + case 183: + return Dd(It.elementType); + default: + return e.isTypeReferenceNode(It) && e.isIdentifier(It.typeName) && It.typeName.escapedText === "Object" && !It.typeArguments; + } + } + function jp(It, Ma, aa, Ja) { + var _n = H_(), ro = !_n; + _(); + var as = y_(), cc = as.name, Sc = as.isBracketed, hu = _(); + ro && !Rt(yt) && (_n = H_()); + var Js = Te(It, Ue(), Ja, hu), Qf = aa !== 4 && lg(_n, cc, aa, Ja); + Qf && (_n = Qf, ro = true); + var go = aa === 1 ? ge.createJSDocPropertyTag(Ma, cc, Sc, _n, ro, Js) : ge.createJSDocParameterTag(Ma, cc, Sc, _n, ro, Js); + return Bi(go, It); + } + function lg(It, Ma, aa, Ja) { + if (It && Dd(It.type)) { + for (var _n = Ue(), ro = void 0, as = void 0; ro = Ii(function() { + return Bl(aa, Ja, Ma); + }); ) + (ro.kind === 340 || ro.kind === 347) && (as = e.append(as, ro)); + if (as) { + var cc = Bi(ge.createJSDocTypeLiteral(as, It.type.kind === 183), _n); + return Bi(ge.createJSDocTypeExpression(cc), _n); + } + } + } + function Om(It, Ma, aa, Ja) { + e.some(ts, e.isJSDocReturnTag) && nr(Ma.pos, D.getTokenPos(), e.Diagnostics._0_tag_already_specified, Ma.escapedText); + var _n = H_(); + return Bi(ge.createJSDocReturnTag(Ma, _n, Te(It, Ue(), aa, Ja)), It); + } + function Fm(It, Ma, aa, Ja) { + e.some(ts, e.isJSDocTypeTag) && nr(Ma.pos, D.getTokenPos(), e.Diagnostics._0_tag_already_specified, Ma.escapedText); + var _n = ri(true), ro = aa !== void 0 && Ja !== void 0 ? Te(It, Ue(), aa, Ja) : void 0; + return Bi(ge.createJSDocTypeTag(Ma, _n, ro), It); + } + function Vg(It, Ma, aa, Ja) { + var _n = De() === 22 || Rt(function() { + return vi() === 59 && e.tokenIsIdentifierOrKeyword(vi()) && Xa(D.getTokenValue()); + }), ro = _n ? void 0 : di(), as = aa !== void 0 && Ja !== void 0 ? Te(It, Ue(), aa, Ja) : void 0; + return Bi(ge.createJSDocSeeTag(Ma, ro, as), It); + } + function Jt(It, Ma, aa, Ja) { + var _n = Ue(), ro = ml(), as = D.getStartPos(), cc = Te(It, as, aa, Ja); + cc || (as = D.getStartPos()); + var Sc = typeof cc != "string" ? Cn(e.concatenate([Bi(ro, _n, as)], cc), _n) : ro.text + cc; + return Bi(ge.createJSDocAuthorTag(Ma, Sc), It); + } + function ml() { + for (var It = [], Ma = false, aa = D.getToken(); aa !== 1 && aa !== 4; ) { + if (aa === 29) + Ma = true; + else { + if (aa === 59 && !Ma) + break; + if (aa === 31 && Ma) { + It.push(D.getTokenText()), D.setTextPos(D.getTokenPos() + 1); + break; + } + } + It.push(D.getTokenText()), aa = vi(); + } + return ge.createJSDocText(It.join("")); + } + function Xf(It, Ma, aa, Ja) { + var _n = lf(); + return Bi(ge.createJSDocImplementsTag(Ma, _n, Te(It, Ue(), aa, Ja)), It); + } + function bd(It, Ma, aa, Ja) { + var _n = lf(); + return Bi(ge.createJSDocAugmentsTag(Ma, _n, Te(It, Ue(), aa, Ja)), It); + } + function lf() { + var It = at(18), Ma = Ue(), aa = Kg(), Ja = m_(), _n = ge.createExpressionWithTypeArguments(aa, Ja), ro = Bi(_n, Ma); + return It && ui(19), ro; + } + function Kg() { + for (var It = Ue(), Ma = ff(); at(24); ) { + var aa = ff(); + Ma = Bi(ge.createPropertyAccessExpression(Ma, aa), It); + } + return Ma; + } + function kf(It, Ma, aa, Ja, _n) { + return Bi(Ma(aa, Te(It, Ue(), Ja, _n)), It); + } + function Gg(It, Ma, aa, Ja) { + var _n = ri(true); + return Lc(), Bi(ge.createJSDocThisTag(Ma, _n, Te(It, Ue(), aa, Ja)), It); + } + function Af(It, Ma, aa, Ja) { + var _n = ri(true); + return Lc(), Bi(ge.createJSDocEnumTag(Ma, _n, Te(It, Ue(), aa, Ja)), It); + } + function Hg(It, Ma, aa, Ja) { + var _n, ro = H_(); + _(); + var as = Wd(); + Lc(); + var cc = cr(aa), Sc; + if (!ro || Dd(ro.type)) { + for (var hu = void 0, Js = void 0, Qf = void 0, go = false; hu = Ii(function() { + return Xg(aa); + }); ) + if (go = true, hu.kind === 343) + if (Js) { + var Vd = Ar(e.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags); + Vd && e.addRelatedInfo(Vd, e.createDetachedDiagnostic(Re, 0, 0, e.Diagnostics.The_tag_was_first_specified_here)); + break; + } else + Js = hu; + else + Qf = e.append(Qf, hu); + if (go) { + var X_ = ro && ro.type.kind === 183, Sd = ge.createJSDocTypeLiteral(Qf, X_); + ro = Js && Js.typeExpression && !Dd(Js.typeExpression.type) ? Js.typeExpression : Bi(Sd, It), Sc = ro.end; + } + } + Sc = Sc || cc !== void 0 ? Ue() : ((_n = as != null ? as : ro) !== null && _n !== void 0 ? _n : Ma).end, cc || (cc = Te(It, Sc, aa, Ja)); + var Yg = ge.createJSDocTypedefTag(Ma, ro, as, cc); + return Bi(Yg, It, Sc); + } + function Wd(It) { + var Ma = D.getTokenPos(); + if (!!e.tokenIsIdentifierOrKeyword(De())) { + var aa = ff(); + if (at(24)) { + var Ja = Wd(true), _n = ge.createModuleDeclaration(void 0, void 0, aa, Ja, It ? 4 : void 0); + return Bi(_n, Ma); + } + return It && (aa.isInJSDocNamespace = true), aa; + } + } + function qd(It) { + for (var Ma = Ue(), aa, Ja; aa = Ii(function() { + return Bl(4, It); + }); ) + Ja = e.append(Ja, aa); + return Cn(Ja || [], Ma); + } + function fg(It, Ma, aa, Ja) { + var _n = Wd(); + Lc(); + var ro = cr(aa), as = qd(aa), cc = Ii(function() { + if (Up(59)) { + var Js = W(aa); + if (Js && Js.kind === 341) + return Js; + } + }), Sc = Bi(ge.createJSDocSignature(void 0, as, cc), It); + ro || (ro = Te(It, Ue(), aa, Ja)); + var hu = ro !== void 0 ? Ue() : Sc.end; + return Bi(ge.createJSDocCallbackTag(Ma, Sc, _n, ro), It, hu); + } + function Mm(It, Ma) { + for (; !e.isIdentifier(It) || !e.isIdentifier(Ma); ) + if (!e.isIdentifier(It) && !e.isIdentifier(Ma) && It.right.escapedText === Ma.right.escapedText) + It = It.left, Ma = Ma.left; + else + return false; + return It.escapedText === Ma.escapedText; + } + function Xg(It) { + return Bl(1, It); + } + function Bl(It, Ma, aa) { + for (var Ja = true, _n = false; ; ) + switch (vi()) { + case 59: + if (Ja) { + var ro = Qg(It, Ma); + return ro && (ro.kind === 340 || ro.kind === 347) && It !== 4 && aa && (e.isIdentifier(ro.name) || !Mm(aa, ro.name.left)) ? false : ro; + } + _n = false; + break; + case 4: + Ja = true, _n = false; + break; + case 41: + _n && (Ja = false), _n = true; + break; + case 79: + Ja = false; + break; + case 1: + return false; + } + } + function Qg(It, Ma) { + e.Debug.assert(De() === 59); + var aa = D.getStartPos(); + vi(); + var Ja = ff(); + Lc(); + var _n; + switch (Ja.escapedText) { + case "type": + return It === 1 && Fm(aa, Ja); + case "prop": + case "property": + _n = 1; + break; + case "arg": + case "argument": + case "param": + _n = 6; + break; + default: + return false; + } + return It & _n ? jp(aa, Ja, It, Ma) : false; + } + function _g() { + var It = Ue(), Ma = Up(22); + Ma && Lc(); + var aa = ff(e.Diagnostics.Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces), Ja; + if (Ma && (Lc(), ui(63), Ja = Gi(8388608, al), ui(23)), !e.nodeIsMissing(aa)) + return Bi(ge.createTypeParameterDeclaration(void 0, aa, void 0, Ja), It); + } + function Qc() { + var It = Ue(), Ma = []; + do { + Lc(); + var aa = _g(); + aa !== void 0 && Ma.push(aa), _(); + } while (Up(27)); + return Cn(Ma, It); + } + function Lm(It, Ma, aa, Ja) { + var _n = De() === 18 ? ri() : void 0, ro = Qc(); + return Bi(ge.createJSDocTemplateTag(Ma, _n, ro, Te(It, Ue(), aa, Ja)), It); + } + function Up(It) { + return De() === It ? (vi(), true) : false; + } + function Rm() { + var It = ff(); + for (at(22) && ui(23); at(24); ) { + var Ma = ff(); + at(22) && ui(23), It = Ji(It, Ma); + } + return It; + } + function ff(It) { + if (!e.tokenIsIdentifierOrKeyword(De())) + return kn(79, !It, It || e.Diagnostics.Identifier_expected); + Cr++; + var Ma = D.getTokenPos(), aa = D.getTextPos(), Ja = De(), _n = xn(D.getTokenValue()), ro = Bi(ge.createIdentifier(_n, void 0, Ja), Ma, aa); + return vi(), ro; + } + } + })(G_ = d.JSDocParser || (d.JSDocParser = {})); + })(X || (X = {})); + var $; + (function(d) { + function D(Ee, He, rr, Ie) { + if (Ie = Ie || e.Debug.shouldAssert(2), ge(Ee, He, rr, Ie), e.textChangeRangeIsUnchanged(rr)) + return Ee; + if (Ee.statements.length === 0) + return X.parseSourceFile(Ee.fileName, He, Ee.languageVersion, void 0, true, Ee.scriptKind, Ee.setExternalModuleIndicator); + var _e = Ee; + e.Debug.assert(!_e.hasBeenIncrementallyParsed), _e.hasBeenIncrementallyParsed = true, X.fixupParentReferences(_e); + var we = Ee.text, de = Re(Ee), ye = Z(Ee, rr); + ge(Ee, He, ye, Ie), e.Debug.assert(ye.span.start <= rr.span.start), e.Debug.assert(e.textSpanEnd(ye.span) === e.textSpanEnd(rr.span)), e.Debug.assert(e.textSpanEnd(e.textChangeRangeNewSpan(ye)) === e.textSpanEnd(e.textChangeRangeNewSpan(rr))); + var Ae = e.textChangeRangeNewSpan(ye).length - ye.span.length; + Fe(_e, ye.span.start, e.textSpanEnd(ye.span), e.textSpanEnd(e.textChangeRangeNewSpan(ye)), Ae, we, He, Ie); + var er = X.parseSourceFile(Ee.fileName, He, Ee.languageVersion, de, true, Ee.scriptKind, Ee.setExternalModuleIndicator); + return er.commentDirectives = fe(Ee.commentDirectives, er.commentDirectives, ye.span.start, e.textSpanEnd(ye.span), Ae, we, He, Ie), er.impliedNodeFormat = Ee.impliedNodeFormat, er; + } + d.updateSourceFile = D; + function fe(Ee, He, rr, Ie, _e, we, de, ye) { + if (!Ee) + return He; + for (var Ae, er = false, ir = 0, Cr = Ee; ir < Cr.length; ir++) { + var Ye = Cr[ir], Br = Ye.range, Er = Ye.type; + if (Br.end < rr) + Ae = e.append(Ae, Ye); + else if (Br.pos > Ie) { + n(); + var Ne = { range: { pos: Br.pos + _e, end: Br.end + _e }, type: Er }; + Ae = e.append(Ae, Ne), ye && e.Debug.assert(we.substring(Br.pos, Br.end) === de.substring(Ne.range.pos, Ne.range.end)); + } + } + return n(), Ae; + function n() { + er || (er = true, Ae ? He && Ae.push.apply(Ae, He) : Ae = He); + } + } + function g(Ee, He, rr, Ie, _e, we) { + He ? ye(Ee) : de(Ee); + return; + function de(Ae) { + var er = ""; + if (we && ne(Ae) && (er = Ie.substring(Ae.pos, Ae.end)), Ae._children && (Ae._children = void 0), e.setTextRangePosEnd(Ae, Ae.pos + rr, Ae.end + rr), we && ne(Ae) && e.Debug.assert(er === _e.substring(Ae.pos, Ae.end)), se(Ae, de, ye), e.hasJSDocNodes(Ae)) + for (var ir = 0, Cr = Ae.jsDoc; ir < Cr.length; ir++) { + var Ye = Cr[ir]; + de(Ye); + } + We(Ae, we); + } + function ye(Ae) { + Ae._children = void 0, e.setTextRangePosEnd(Ae, Ae.pos + rr, Ae.end + rr); + for (var er = 0, ir = Ae; er < ir.length; er++) { + var Cr = ir[er]; + de(Cr); + } + } + } + function ne(Ee) { + switch (Ee.kind) { + case 10: + case 8: + case 79: + return true; + } + return false; + } + function ue(Ee, He, rr, Ie, _e) { + e.Debug.assert(Ee.end >= He, "Adjusting an element that was entirely before the change range"), e.Debug.assert(Ee.pos <= rr, "Adjusting an element that was entirely after the change range"), e.Debug.assert(Ee.pos <= Ee.end); + var we = Math.min(Ee.pos, Ie), de = Ee.end >= rr ? Ee.end + _e : Math.min(Ee.end, Ie); + e.Debug.assert(we <= de), Ee.parent && (e.Debug.assertGreaterThanOrEqual(we, Ee.parent.pos), e.Debug.assertLessThanOrEqual(de, Ee.parent.end)), e.setTextRangePosEnd(Ee, we, de); + } + function We(Ee, He) { + if (He) { + var rr = Ee.pos, Ie = function(ye) { + e.Debug.assert(ye.pos >= rr), rr = ye.end; + }; + if (e.hasJSDocNodes(Ee)) + for (var _e = 0, we = Ee.jsDoc; _e < we.length; _e++) { + var de = we[_e]; + Ie(de); + } + se(Ee, Ie), e.Debug.assert(rr <= Ee.end); + } + } + function Fe(Ee, He, rr, Ie, _e, we, de, ye) { + Ae(Ee); + return; + function Ae(ir) { + if (e.Debug.assert(ir.pos <= ir.end), ir.pos > rr) { + g(ir, false, _e, we, de, ye); + return; + } + var Cr = ir.end; + if (Cr >= He) { + if (ir.intersectsChange = true, ir._children = void 0, ue(ir, He, rr, Ie, _e), se(ir, Ae, er), e.hasJSDocNodes(ir)) + for (var Ye = 0, Br = ir.jsDoc; Ye < Br.length; Ye++) { + var Er = Br[Ye]; + Ae(Er); + } + We(ir, ye); + return; + } + e.Debug.assert(Cr < He); + } + function er(ir) { + if (e.Debug.assert(ir.pos <= ir.end), ir.pos > rr) { + g(ir, true, _e, we, de, ye); + return; + } + var Cr = ir.end; + if (Cr >= He) { + ir.intersectsChange = true, ir._children = void 0, ue(ir, He, rr, Ie, _e); + for (var Ye = 0, Br = ir; Ye < Br.length; Ye++) { + var Er = Br[Ye]; + Ae(Er); + } + return; + } + e.Debug.assert(Cr < He); + } + } + function Z(Ee, He) { + for (var rr = 1, Ie = He.span.start, _e = 0; Ie > 0 && _e <= rr; _e++) { + var we = Be(Ee, Ie); + e.Debug.assert(we.pos <= Ie); + var de = we.pos; + Ie = Math.max(0, de - 1); + } + var ye = e.createTextSpanFromBounds(Ie, e.textSpanEnd(He.span)), Ae = He.newLength + (He.span.start - Ie); + return e.createTextChangeRange(ye, Ae); + } + function Be(Ee, He) { + var rr = Ee, Ie; + if (se(Ee, de), Ie) { + var _e = we(Ie); + _e.pos > rr.pos && (rr = _e); + } + return rr; + function we(ye) { + for (; ; ) { + var Ae = e.getLastChild(ye); + if (Ae) + ye = Ae; + else + return ye; + } + } + function de(ye) { + if (!e.nodeIsMissing(ye)) + if (ye.pos <= He) { + if (ye.pos >= rr.pos && (rr = ye), He < ye.end) + return se(ye, de), true; + e.Debug.assert(ye.end <= He), Ie = ye; + } else + return e.Debug.assert(ye.pos > He), true; + } + } + function ge(Ee, He, rr, Ie) { + var _e = Ee.text; + if (rr && (e.Debug.assert(_e.length - rr.span.length + rr.newLength === He.length), Ie || e.Debug.shouldAssert(3))) { + var we = _e.substr(0, rr.span.start), de = He.substr(0, rr.span.start); + e.Debug.assert(we === de); + var ye = _e.substring(e.textSpanEnd(rr.span), _e.length), Ae = He.substring(e.textSpanEnd(e.textChangeRangeNewSpan(rr)), He.length); + e.Debug.assert(ye === Ae); + } + } + function Re(Ee) { + var He = Ee.statements, rr = 0; + e.Debug.assert(rr < He.length); + var Ie = He[rr], _e = -1; + return { currentNode: function(de) { + return de !== _e && (Ie && Ie.end === de && rr < He.length - 1 && (rr++, Ie = He[rr]), (!Ie || Ie.pos !== de) && we(de)), _e = de, e.Debug.assert(!Ie || Ie.pos === de), Ie; + } }; + function we(de) { + He = void 0, rr = -1, Ie = void 0, se(Ee, ye, Ae); + return; + function ye(er) { + return de >= er.pos && de < er.end ? (se(er, ye, Ae), true) : false; + } + function Ae(er) { + if (de >= er.pos && de < er.end) + for (var ir = 0; ir < er.length; ir++) { + var Cr = er[ir]; + if (Cr) { + if (Cr.pos === de) + return He = er, rr = ir, Ie = Cr, true; + if (Cr.pos < de && de < Cr.end) + return se(Cr, ye, Ae), true; + } + } + return false; + } + } + } + d.createSyntaxCursor = Re; + var ze; + (function(Ee) { + Ee[Ee.Value = -1] = "Value"; + })(ze || (ze = {})); + })($ || ($ = {})); + function A(d) { + return e.fileExtensionIsOneOf(d, e.supportedDeclarationExtensions); + } + e.isDeclarationFileName = A; + function y(d, D, fe, g) { + if (!!d) { + if (d === "import") + return e.ModuleKind.ESNext; + if (d === "require") + return e.ModuleKind.CommonJS; + g(D, fe - D, e.Diagnostics.resolution_mode_should_be_either_require_or_import); + } + } + function V(d, D) { + for (var fe = [], g = 0, ne = e.getLeadingCommentRanges(D, 0) || e.emptyArray; g < ne.length; g++) { + var ue = ne[g], We = D.substring(ue.pos, ue.end); + j(fe, ue, We); + } + d.pragmas = new e.Map(); + for (var Fe = 0, Z = fe; Fe < Z.length; Fe++) { + var Be = Z[Fe]; + if (d.pragmas.has(Be.name)) { + var ge = d.pragmas.get(Be.name); + ge instanceof Array ? ge.push(Be.args) : d.pragmas.set(Be.name, [ge, Be.args]); + continue; + } + d.pragmas.set(Be.name, Be.args); + } + } + e.processCommentPragmas = V; + function L(d, D) { + d.checkJsDirective = void 0, d.referencedFiles = [], d.typeReferenceDirectives = [], d.libReferenceDirectives = [], d.amdDependencies = [], d.hasNoDefaultLib = false, d.pragmas.forEach(function(fe, g) { + switch (g) { + case "reference": { + var ne = d.referencedFiles, ue = d.typeReferenceDirectives, We = d.libReferenceDirectives; + e.forEach(e.toArray(fe), function(ge) { + var Re = ge.arguments, ze = Re.types, Ee = Re.lib, He = Re.path, rr = Re["resolution-mode"]; + if (ge.arguments["no-default-lib"]) + d.hasNoDefaultLib = true; + else if (ze) { + var Ie = y(rr, ze.pos, ze.end, D); + ue.push(Ke({ pos: ze.pos, end: ze.end, fileName: ze.value }, Ie ? { resolutionMode: Ie } : {})); + } else + Ee ? We.push({ pos: Ee.pos, end: Ee.end, fileName: Ee.value }) : He ? ne.push({ pos: He.pos, end: He.end, fileName: He.value }) : D(ge.range.pos, ge.range.end - ge.range.pos, e.Diagnostics.Invalid_reference_directive_syntax); + }); + break; + } + case "amd-dependency": { + d.amdDependencies = e.map(e.toArray(fe), function(ge) { + return { name: ge.arguments.name, path: ge.arguments.path }; + }); + break; + } + case "amd-module": { + if (fe instanceof Array) + for (var Fe = 0, Z = fe; Fe < Z.length; Fe++) { + var Be = Z[Fe]; + d.moduleName && D(Be.range.pos, Be.range.end - Be.range.pos, e.Diagnostics.An_AMD_module_cannot_have_multiple_name_assignments), d.moduleName = Be.arguments.name; + } + else + d.moduleName = fe.arguments.name; + break; + } + case "ts-nocheck": + case "ts-check": { + e.forEach(e.toArray(fe), function(ge) { + (!d.checkJsDirective || ge.range.pos > d.checkJsDirective.pos) && (d.checkJsDirective = { enabled: g === "ts-check", end: ge.range.end, pos: ge.range.pos }); + }); + break; + } + case "jsx": + case "jsxfrag": + case "jsximportsource": + case "jsxruntime": + return; + default: + e.Debug.fail("Unhandled pragma kind"); + } + }); + } + e.processPragmasIntoFields = L; + var P = new e.Map(); + function k(d) { + if (P.has(d)) + return P.get(d); + var D = new RegExp("(\\s".concat(d, `\\s*=\\s*)(?:(?:'([^']*)')|(?:"([^"]*)"))`), "im"); + return P.set(d, D), D; + } + var Y = /^\/\/\/\s*<(\S+)\s.*?\/>/im, U = /^\/\/\/?\s*@(\S+)\s*(.*)\s*$/im; + function j(d, D, fe) { + var g = D.kind === 2 && Y.exec(fe); + if (g) { + var ne = g[1].toLowerCase(), ue = e.commentPragmas[ne]; + if (!ue || !(ue.kind & 1)) + return; + if (ue.args) { + for (var We = {}, Fe = 0, Z = ue.args; Fe < Z.length; Fe++) { + var Be = Z[Fe], ge = k(Be.name), Re = ge.exec(fe); + if (!Re && !Be.optional) + return; + if (Re) { + var ze = Re[2] || Re[3]; + if (Be.captureSpan) { + var Ee = D.pos + Re.index + Re[1].length + 1; + We[Be.name] = { value: ze, pos: Ee, end: Ee + ze.length }; + } else + We[Be.name] = ze; + } + } + d.push({ name: ne, args: { arguments: We, range: D } }); + } else + d.push({ name: ne, args: { arguments: {}, range: D } }); + return; + } + var He = D.kind === 2 && U.exec(fe); + if (He) + return H(d, D, 2, He); + if (D.kind === 3) + for (var rr = /@(\S+)(\s+.*)?$/gim, Ie = void 0; Ie = rr.exec(fe); ) + H(d, D, 4, Ie); + } + function H(d, D, fe, g) { + if (!!g) { + var ne = g[1].toLowerCase(), ue = e.commentPragmas[ne]; + if (!(!ue || !(ue.kind & fe))) { + var We = g[2], Fe = I(ue, We); + Fe !== "fail" && d.push({ name: ne, args: { arguments: Fe, range: D } }); + } + } + } + function I(d, D) { + if (!D) + return {}; + if (!d.args) + return {}; + for (var fe = e.trimString(D).split(/\s+/), g = {}, ne = 0; ne < d.args.length; ne++) { + var ue = d.args[ne]; + if (!fe[ne] && !ue.optional) + return "fail"; + if (ue.captureSpan) + return e.Debug.fail("Capture spans not yet implemented for non-xml pragmas"); + g[ue.name] = fe[ne]; + } + return g; + } + function l(d, D) { + return d.kind !== D.kind ? false : d.kind === 79 ? d.escapedText === D.escapedText : d.kind === 108 ? true : d.name.escapedText === D.name.escapedText && l(d.expression, D.expression); + } + e.tagNamesAreEquivalent = l; + })(ke || (ke = {})); + var ke; + (function(e) { + e.compileOnSaveCommandLineOption = { name: "compileOnSave", type: "boolean", defaultValueDescription: false }; + var a = new e.Map(e.getEntries({ preserve: 1, "react-native": 3, react: 2, "react-jsx": 4, "react-jsxdev": 5 })); + e.inverseJsxOptionMap = new e.Map(e.arrayFrom(e.mapIterator(a.entries(), function(Pe) { + var Ue = Pe[0], fr = Pe[1]; + return ["" + fr, Ue]; + }))); + var C = [["es5", "lib.es5.d.ts"], ["es6", "lib.es2015.d.ts"], ["es2015", "lib.es2015.d.ts"], ["es7", "lib.es2016.d.ts"], ["es2016", "lib.es2016.d.ts"], ["es2017", "lib.es2017.d.ts"], ["es2018", "lib.es2018.d.ts"], ["es2019", "lib.es2019.d.ts"], ["es2020", "lib.es2020.d.ts"], ["es2021", "lib.es2021.d.ts"], ["es2022", "lib.es2022.d.ts"], ["esnext", "lib.esnext.d.ts"], ["dom", "lib.dom.d.ts"], ["dom.iterable", "lib.dom.iterable.d.ts"], ["webworker", "lib.webworker.d.ts"], ["webworker.importscripts", "lib.webworker.importscripts.d.ts"], ["webworker.iterable", "lib.webworker.iterable.d.ts"], ["scripthost", "lib.scripthost.d.ts"], ["es2015.core", "lib.es2015.core.d.ts"], ["es2015.collection", "lib.es2015.collection.d.ts"], ["es2015.generator", "lib.es2015.generator.d.ts"], ["es2015.iterable", "lib.es2015.iterable.d.ts"], ["es2015.promise", "lib.es2015.promise.d.ts"], ["es2015.proxy", "lib.es2015.proxy.d.ts"], ["es2015.reflect", "lib.es2015.reflect.d.ts"], ["es2015.symbol", "lib.es2015.symbol.d.ts"], ["es2015.symbol.wellknown", "lib.es2015.symbol.wellknown.d.ts"], ["es2016.array.include", "lib.es2016.array.include.d.ts"], ["es2017.object", "lib.es2017.object.d.ts"], ["es2017.sharedmemory", "lib.es2017.sharedmemory.d.ts"], ["es2017.string", "lib.es2017.string.d.ts"], ["es2017.intl", "lib.es2017.intl.d.ts"], ["es2017.typedarrays", "lib.es2017.typedarrays.d.ts"], ["es2018.asyncgenerator", "lib.es2018.asyncgenerator.d.ts"], ["es2018.asynciterable", "lib.es2018.asynciterable.d.ts"], ["es2018.intl", "lib.es2018.intl.d.ts"], ["es2018.promise", "lib.es2018.promise.d.ts"], ["es2018.regexp", "lib.es2018.regexp.d.ts"], ["es2019.array", "lib.es2019.array.d.ts"], ["es2019.object", "lib.es2019.object.d.ts"], ["es2019.string", "lib.es2019.string.d.ts"], ["es2019.symbol", "lib.es2019.symbol.d.ts"], ["es2020.bigint", "lib.es2020.bigint.d.ts"], ["es2020.date", "lib.es2020.date.d.ts"], ["es2020.promise", "lib.es2020.promise.d.ts"], ["es2020.sharedmemory", "lib.es2020.sharedmemory.d.ts"], ["es2020.string", "lib.es2020.string.d.ts"], ["es2020.symbol.wellknown", "lib.es2020.symbol.wellknown.d.ts"], ["es2020.intl", "lib.es2020.intl.d.ts"], ["es2020.number", "lib.es2020.number.d.ts"], ["es2021.promise", "lib.es2021.promise.d.ts"], ["es2021.string", "lib.es2021.string.d.ts"], ["es2021.weakref", "lib.es2021.weakref.d.ts"], ["es2021.intl", "lib.es2021.intl.d.ts"], ["es2022.array", "lib.es2022.array.d.ts"], ["es2022.error", "lib.es2022.error.d.ts"], ["es2022.intl", "lib.es2022.intl.d.ts"], ["es2022.object", "lib.es2022.object.d.ts"], ["es2022.string", "lib.es2022.string.d.ts"], ["esnext.array", "lib.es2022.array.d.ts"], ["esnext.symbol", "lib.es2019.symbol.d.ts"], ["esnext.asynciterable", "lib.es2018.asynciterable.d.ts"], ["esnext.intl", "lib.esnext.intl.d.ts"], ["esnext.bigint", "lib.es2020.bigint.d.ts"], ["esnext.string", "lib.es2022.string.d.ts"], ["esnext.promise", "lib.es2021.promise.d.ts"], ["esnext.weakref", "lib.es2021.weakref.d.ts"]]; + e.libs = C.map(function(Pe) { + return Pe[0]; + }), e.libMap = new e.Map(C), e.optionsForWatch = [{ name: "watchFile", type: new e.Map(e.getEntries({ fixedpollinginterval: e.WatchFileKind.FixedPollingInterval, prioritypollinginterval: e.WatchFileKind.PriorityPollingInterval, dynamicprioritypolling: e.WatchFileKind.DynamicPriorityPolling, fixedchunksizepolling: e.WatchFileKind.FixedChunkSizePolling, usefsevents: e.WatchFileKind.UseFsEvents, usefseventsonparentdirectory: e.WatchFileKind.UseFsEventsOnParentDirectory })), category: e.Diagnostics.Watch_and_Build_Modes, description: e.Diagnostics.Specify_how_the_TypeScript_watch_mode_works, defaultValueDescription: e.WatchFileKind.UseFsEvents }, { name: "watchDirectory", type: new e.Map(e.getEntries({ usefsevents: e.WatchDirectoryKind.UseFsEvents, fixedpollinginterval: e.WatchDirectoryKind.FixedPollingInterval, dynamicprioritypolling: e.WatchDirectoryKind.DynamicPriorityPolling, fixedchunksizepolling: e.WatchDirectoryKind.FixedChunkSizePolling })), category: e.Diagnostics.Watch_and_Build_Modes, description: e.Diagnostics.Specify_how_directories_are_watched_on_systems_that_lack_recursive_file_watching_functionality, defaultValueDescription: e.WatchDirectoryKind.UseFsEvents }, { name: "fallbackPolling", type: new e.Map(e.getEntries({ fixedinterval: e.PollingWatchKind.FixedInterval, priorityinterval: e.PollingWatchKind.PriorityInterval, dynamicpriority: e.PollingWatchKind.DynamicPriority, fixedchunksize: e.PollingWatchKind.FixedChunkSize })), category: e.Diagnostics.Watch_and_Build_Modes, description: e.Diagnostics.Specify_what_approach_the_watcher_should_use_if_the_system_runs_out_of_native_file_watchers, defaultValueDescription: e.PollingWatchKind.PriorityInterval }, { name: "synchronousWatchDirectory", type: "boolean", category: e.Diagnostics.Watch_and_Build_Modes, description: e.Diagnostics.Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_support_recursive_watching_natively, defaultValueDescription: false }, { name: "excludeDirectories", type: "list", element: { name: "excludeDirectory", type: "string", isFilePath: true, extraValidation: Je }, category: e.Diagnostics.Watch_and_Build_Modes, description: e.Diagnostics.Remove_a_list_of_directories_from_the_watch_process }, { name: "excludeFiles", type: "list", element: { name: "excludeFile", type: "string", isFilePath: true, extraValidation: Je }, category: e.Diagnostics.Watch_and_Build_Modes, description: e.Diagnostics.Remove_a_list_of_files_from_the_watch_mode_s_processing }], e.commonOptionsWithBuild = [{ name: "help", shortName: "h", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Print_this_message, defaultValueDescription: false }, { name: "help", shortName: "?", type: "boolean", defaultValueDescription: false }, { name: "watch", shortName: "w", type: "boolean", showInSimplifiedHelpView: true, isCommandLineOnly: true, category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Watch_input_files, defaultValueDescription: false }, { name: "preserveWatchOutput", type: "boolean", showInSimplifiedHelpView: false, category: e.Diagnostics.Output_Formatting, description: e.Diagnostics.Disable_wiping_the_console_in_watch_mode, defaultValueDescription: false }, { name: "listFiles", type: "boolean", category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Print_all_of_the_files_read_during_the_compilation, defaultValueDescription: false }, { name: "explainFiles", type: "boolean", category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Print_files_read_during_the_compilation_including_why_it_was_included, defaultValueDescription: false }, { name: "listEmittedFiles", type: "boolean", category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Print_the_names_of_emitted_files_after_a_compilation, defaultValueDescription: false }, { name: "pretty", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Output_Formatting, description: e.Diagnostics.Enable_color_and_formatting_in_TypeScript_s_output_to_make_compiler_errors_easier_to_read, defaultValueDescription: true }, { name: "traceResolution", type: "boolean", category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Log_paths_used_during_the_moduleResolution_process, defaultValueDescription: false }, { name: "diagnostics", type: "boolean", category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Output_compiler_performance_information_after_building, defaultValueDescription: false }, { name: "extendedDiagnostics", type: "boolean", category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Output_more_detailed_compiler_performance_information_after_building, defaultValueDescription: false }, { name: "generateCpuProfile", type: "string", isFilePath: true, paramType: e.Diagnostics.FILE_OR_DIRECTORY, category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Emit_a_v8_CPU_profile_of_the_compiler_run_for_debugging, defaultValueDescription: "profile.cpuprofile" }, { name: "generateTrace", type: "string", isFilePath: true, isCommandLineOnly: true, paramType: e.Diagnostics.DIRECTORY, category: e.Diagnostics.Compiler_Diagnostics, description: e.Diagnostics.Generates_an_event_trace_and_a_list_of_types }, { name: "incremental", shortName: "i", type: "boolean", category: e.Diagnostics.Projects, description: e.Diagnostics.Save_tsbuildinfo_files_to_allow_for_incremental_compilation_of_projects, transpileOptionValue: void 0, defaultValueDescription: e.Diagnostics.false_unless_composite_is_set }, { name: "assumeChangesOnlyAffectDirectDependencies", type: "boolean", affectsSemanticDiagnostics: true, affectsEmit: true, category: e.Diagnostics.Watch_and_Build_Modes, description: e.Diagnostics.Have_recompiles_in_projects_that_use_incremental_and_watch_mode_assume_that_changes_within_a_file_will_only_affect_files_directly_depending_on_it, defaultValueDescription: false }, { name: "locale", type: "string", category: e.Diagnostics.Command_line_Options, isCommandLineOnly: true, description: e.Diagnostics.Set_the_language_of_the_messaging_from_TypeScript_This_does_not_affect_emit, defaultValueDescription: e.Diagnostics.Platform_specific }], e.targetOptionDeclaration = { name: "target", shortName: "t", type: new e.Map(e.getEntries({ es3: 0, es5: 1, es6: 2, es2015: 2, es2016: 3, es2017: 4, es2018: 5, es2019: 6, es2020: 7, es2021: 8, es2022: 9, esnext: 99 })), affectsSourceFile: true, affectsModuleResolution: true, affectsEmit: true, paramType: e.Diagnostics.VERSION, showInSimplifiedHelpView: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Set_the_JavaScript_language_version_for_emitted_JavaScript_and_include_compatible_library_declarations, defaultValueDescription: 0 }; + var w = [{ name: "all", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Show_all_compiler_options, defaultValueDescription: false }, { name: "version", shortName: "v", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Print_the_compiler_s_version, defaultValueDescription: false }, { name: "init", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file, defaultValueDescription: false }, { name: "project", shortName: "p", type: "string", isFilePath: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Command_line_Options, paramType: e.Diagnostics.FILE_OR_DIRECTORY, description: e.Diagnostics.Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json }, { name: "build", type: "boolean", shortName: "b", showInSimplifiedHelpView: true, category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Build_one_or_more_projects_and_their_dependencies_if_out_of_date, defaultValueDescription: false }, { name: "showConfig", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Command_line_Options, isCommandLineOnly: true, description: e.Diagnostics.Print_the_final_configuration_instead_of_building, defaultValueDescription: false }, { name: "listFilesOnly", type: "boolean", category: e.Diagnostics.Command_line_Options, affectsSemanticDiagnostics: true, affectsEmit: true, isCommandLineOnly: true, description: e.Diagnostics.Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing, defaultValueDescription: false }, e.targetOptionDeclaration, { name: "module", shortName: "m", type: new e.Map(e.getEntries({ none: e.ModuleKind.None, commonjs: e.ModuleKind.CommonJS, amd: e.ModuleKind.AMD, system: e.ModuleKind.System, umd: e.ModuleKind.UMD, es6: e.ModuleKind.ES2015, es2015: e.ModuleKind.ES2015, es2020: e.ModuleKind.ES2020, es2022: e.ModuleKind.ES2022, esnext: e.ModuleKind.ESNext, node16: e.ModuleKind.Node16, nodenext: e.ModuleKind.NodeNext })), affectsModuleResolution: true, affectsEmit: true, paramType: e.Diagnostics.KIND, showInSimplifiedHelpView: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Specify_what_module_code_is_generated, defaultValueDescription: void 0 }, { name: "lib", type: "list", element: { name: "lib", type: e.libMap, defaultValueDescription: void 0 }, affectsProgramStructure: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Specify_a_set_of_bundled_library_declaration_files_that_describe_the_target_runtime_environment, transpileOptionValue: void 0 }, { name: "allowJs", type: "boolean", affectsModuleResolution: true, showInSimplifiedHelpView: true, category: e.Diagnostics.JavaScript_Support, description: e.Diagnostics.Allow_JavaScript_files_to_be_a_part_of_your_program_Use_the_checkJS_option_to_get_errors_from_these_files, defaultValueDescription: false }, { name: "checkJs", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.JavaScript_Support, description: e.Diagnostics.Enable_error_reporting_in_type_checked_JavaScript_files, defaultValueDescription: false }, { name: "jsx", type: a, affectsSourceFile: true, affectsEmit: true, affectsModuleResolution: true, paramType: e.Diagnostics.KIND, showInSimplifiedHelpView: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Specify_what_JSX_code_is_generated, defaultValueDescription: void 0 }, { name: "declaration", shortName: "d", type: "boolean", affectsEmit: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, transpileOptionValue: void 0, description: e.Diagnostics.Generate_d_ts_files_from_TypeScript_and_JavaScript_files_in_your_project, defaultValueDescription: e.Diagnostics.false_unless_composite_is_set }, { name: "declarationMap", type: "boolean", affectsEmit: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, transpileOptionValue: void 0, defaultValueDescription: false, description: e.Diagnostics.Create_sourcemaps_for_d_ts_files }, { name: "emitDeclarationOnly", type: "boolean", affectsEmit: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Only_output_d_ts_files_and_not_JavaScript_files, transpileOptionValue: void 0, defaultValueDescription: false }, { name: "sourceMap", type: "boolean", affectsEmit: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, defaultValueDescription: false, description: e.Diagnostics.Create_source_map_files_for_emitted_JavaScript_files }, { name: "outFile", type: "string", affectsEmit: true, isFilePath: true, paramType: e.Diagnostics.FILE, showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Specify_a_file_that_bundles_all_outputs_into_one_JavaScript_file_If_declaration_is_true_also_designates_a_file_that_bundles_all_d_ts_output, transpileOptionValue: void 0 }, { name: "outDir", type: "string", affectsEmit: true, isFilePath: true, paramType: e.Diagnostics.DIRECTORY, showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Specify_an_output_folder_for_all_emitted_files }, { name: "rootDir", type: "string", affectsEmit: true, isFilePath: true, paramType: e.Diagnostics.LOCATION, category: e.Diagnostics.Modules, description: e.Diagnostics.Specify_the_root_folder_within_your_source_files, defaultValueDescription: e.Diagnostics.Computed_from_the_list_of_input_files }, { name: "composite", type: "boolean", affectsEmit: true, isTSConfigOnly: true, category: e.Diagnostics.Projects, transpileOptionValue: void 0, defaultValueDescription: false, description: e.Diagnostics.Enable_constraints_that_allow_a_TypeScript_project_to_be_used_with_project_references }, { name: "tsBuildInfoFile", type: "string", affectsEmit: true, isFilePath: true, paramType: e.Diagnostics.FILE, category: e.Diagnostics.Projects, transpileOptionValue: void 0, defaultValueDescription: ".tsbuildinfo", description: e.Diagnostics.Specify_the_path_to_tsbuildinfo_incremental_compilation_file }, { name: "removeComments", type: "boolean", affectsEmit: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, defaultValueDescription: false, description: e.Diagnostics.Disable_emitting_comments }, { name: "noEmit", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Disable_emitting_files_from_a_compilation, transpileOptionValue: void 0, defaultValueDescription: false }, { name: "importHelpers", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Allow_importing_helper_functions_from_tslib_once_per_project_instead_of_including_them_per_file, defaultValueDescription: false }, { name: "importsNotUsedAsValues", type: new e.Map(e.getEntries({ remove: 0, preserve: 1, error: 2 })), affectsEmit: true, affectsSemanticDiagnostics: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types, defaultValueDescription: 0 }, { name: "downlevelIteration", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Emit_more_compliant_but_verbose_and_less_performant_JavaScript_for_iteration, defaultValueDescription: false }, { name: "isolatedModules", type: "boolean", category: e.Diagnostics.Interop_Constraints, description: e.Diagnostics.Ensure_that_each_file_can_be_safely_transpiled_without_relying_on_other_imports, transpileOptionValue: true, defaultValueDescription: false }, { name: "strict", type: "boolean", showInSimplifiedHelpView: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Enable_all_strict_type_checking_options, defaultValueDescription: false }, { name: "noImplicitAny", type: "boolean", affectsSemanticDiagnostics: true, strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Enable_error_reporting_for_expressions_and_declarations_with_an_implied_any_type, defaultValueDescription: e.Diagnostics.false_unless_strict_is_set }, { name: "strictNullChecks", type: "boolean", affectsSemanticDiagnostics: true, strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.When_type_checking_take_into_account_null_and_undefined, defaultValueDescription: e.Diagnostics.false_unless_strict_is_set }, { name: "strictFunctionTypes", type: "boolean", strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.When_assigning_functions_check_to_ensure_parameters_and_the_return_values_are_subtype_compatible, defaultValueDescription: e.Diagnostics.false_unless_strict_is_set }, { name: "strictBindCallApply", type: "boolean", strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Check_that_the_arguments_for_bind_call_and_apply_methods_match_the_original_function, defaultValueDescription: e.Diagnostics.false_unless_strict_is_set }, { name: "strictPropertyInitialization", type: "boolean", affectsSemanticDiagnostics: true, strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Check_for_class_properties_that_are_declared_but_not_set_in_the_constructor, defaultValueDescription: e.Diagnostics.false_unless_strict_is_set }, { name: "noImplicitThis", type: "boolean", affectsSemanticDiagnostics: true, strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Enable_error_reporting_when_this_is_given_the_type_any, defaultValueDescription: e.Diagnostics.false_unless_strict_is_set }, { name: "useUnknownInCatchVariables", type: "boolean", affectsSemanticDiagnostics: true, strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Default_catch_clause_variables_as_unknown_instead_of_any, defaultValueDescription: false }, { name: "alwaysStrict", type: "boolean", affectsSourceFile: true, strictFlag: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Ensure_use_strict_is_always_emitted, defaultValueDescription: e.Diagnostics.false_unless_strict_is_set }, { name: "noUnusedLocals", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Enable_error_reporting_when_local_variables_aren_t_read, defaultValueDescription: false }, { name: "noUnusedParameters", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Raise_an_error_when_a_function_parameter_isn_t_read, defaultValueDescription: false }, { name: "exactOptionalPropertyTypes", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Interpret_optional_property_types_as_written_rather_than_adding_undefined, defaultValueDescription: false }, { name: "noImplicitReturns", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Enable_error_reporting_for_codepaths_that_do_not_explicitly_return_in_a_function, defaultValueDescription: false }, { name: "noFallthroughCasesInSwitch", type: "boolean", affectsBindDiagnostics: true, affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Enable_error_reporting_for_fallthrough_cases_in_switch_statements, defaultValueDescription: false }, { name: "noUncheckedIndexedAccess", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Add_undefined_to_a_type_when_accessed_using_an_index, defaultValueDescription: false }, { name: "noImplicitOverride", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Ensure_overriding_members_in_derived_classes_are_marked_with_an_override_modifier, defaultValueDescription: false }, { name: "noPropertyAccessFromIndexSignature", type: "boolean", showInSimplifiedHelpView: false, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Enforces_using_indexed_accessors_for_keys_declared_using_an_indexed_type, defaultValueDescription: false }, { name: "moduleResolution", type: new e.Map(e.getEntries({ node: e.ModuleResolutionKind.NodeJs, classic: e.ModuleResolutionKind.Classic, node16: e.ModuleResolutionKind.Node16, nodenext: e.ModuleResolutionKind.NodeNext })), affectsModuleResolution: true, paramType: e.Diagnostics.STRATEGY, category: e.Diagnostics.Modules, description: e.Diagnostics.Specify_how_TypeScript_looks_up_a_file_from_a_given_module_specifier, defaultValueDescription: e.Diagnostics.module_AMD_or_UMD_or_System_or_ES6_then_Classic_Otherwise_Node }, { name: "baseUrl", type: "string", affectsModuleResolution: true, isFilePath: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Specify_the_base_directory_to_resolve_non_relative_module_names }, { name: "paths", type: "object", affectsModuleResolution: true, isTSConfigOnly: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Specify_a_set_of_entries_that_re_map_imports_to_additional_lookup_locations, transpileOptionValue: void 0 }, { name: "rootDirs", type: "list", isTSConfigOnly: true, element: { name: "rootDirs", type: "string", isFilePath: true }, affectsModuleResolution: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Allow_multiple_folders_to_be_treated_as_one_when_resolving_modules, transpileOptionValue: void 0, defaultValueDescription: e.Diagnostics.Computed_from_the_list_of_input_files }, { name: "typeRoots", type: "list", element: { name: "typeRoots", type: "string", isFilePath: true }, affectsModuleResolution: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Specify_multiple_folders_that_act_like_Slashnode_modules_Slash_types }, { name: "types", type: "list", element: { name: "types", type: "string" }, affectsProgramStructure: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Specify_type_package_names_to_be_included_without_being_referenced_in_a_source_file, transpileOptionValue: void 0 }, { name: "allowSyntheticDefaultImports", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Interop_Constraints, description: e.Diagnostics.Allow_import_x_from_y_when_a_module_doesn_t_have_a_default_export, defaultValueDescription: e.Diagnostics.module_system_or_esModuleInterop }, { name: "esModuleInterop", type: "boolean", affectsSemanticDiagnostics: true, affectsEmit: true, showInSimplifiedHelpView: true, category: e.Diagnostics.Interop_Constraints, description: e.Diagnostics.Emit_additional_JavaScript_to_ease_support_for_importing_CommonJS_modules_This_enables_allowSyntheticDefaultImports_for_type_compatibility, defaultValueDescription: false }, { name: "preserveSymlinks", type: "boolean", category: e.Diagnostics.Interop_Constraints, description: e.Diagnostics.Disable_resolving_symlinks_to_their_realpath_This_correlates_to_the_same_flag_in_node, defaultValueDescription: false }, { name: "allowUmdGlobalAccess", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Allow_accessing_UMD_globals_from_modules, defaultValueDescription: false }, { name: "moduleSuffixes", type: "list", element: { name: "suffix", type: "string" }, listPreserveFalsyValues: true, affectsModuleResolution: true, category: e.Diagnostics.Modules, description: e.Diagnostics.List_of_file_name_suffixes_to_search_when_resolving_a_module }, { name: "sourceRoot", type: "string", affectsEmit: true, paramType: e.Diagnostics.LOCATION, category: e.Diagnostics.Emit, description: e.Diagnostics.Specify_the_root_path_for_debuggers_to_find_the_reference_source_code }, { name: "mapRoot", type: "string", affectsEmit: true, paramType: e.Diagnostics.LOCATION, category: e.Diagnostics.Emit, description: e.Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations }, { name: "inlineSourceMap", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Include_sourcemap_files_inside_the_emitted_JavaScript, defaultValueDescription: false }, { name: "inlineSources", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Include_source_code_in_the_sourcemaps_inside_the_emitted_JavaScript, defaultValueDescription: false }, { name: "experimentalDecorators", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Enable_experimental_support_for_TC39_stage_2_draft_decorators, defaultValueDescription: false }, { name: "emitDecoratorMetadata", type: "boolean", affectsSemanticDiagnostics: true, affectsEmit: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Emit_design_type_metadata_for_decorated_declarations_in_source_files, defaultValueDescription: false }, { name: "jsxFactory", type: "string", category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Specify_the_JSX_factory_function_used_when_targeting_React_JSX_emit_e_g_React_createElement_or_h, defaultValueDescription: "`React.createElement`" }, { name: "jsxFragmentFactory", type: "string", category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Specify_the_JSX_Fragment_reference_used_for_fragments_when_targeting_React_JSX_emit_e_g_React_Fragment_or_Fragment, defaultValueDescription: "React.Fragment" }, { name: "jsxImportSource", type: "string", affectsSemanticDiagnostics: true, affectsEmit: true, affectsModuleResolution: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Specify_module_specifier_used_to_import_the_JSX_factory_functions_when_using_jsx_Colon_react_jsx_Asterisk, defaultValueDescription: "react" }, { name: "resolveJsonModule", type: "boolean", affectsModuleResolution: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Enable_importing_json_files, defaultValueDescription: false }, { name: "out", type: "string", affectsEmit: true, isFilePath: false, category: e.Diagnostics.Backwards_Compatibility, paramType: e.Diagnostics.FILE, transpileOptionValue: void 0, description: e.Diagnostics.Deprecated_setting_Use_outFile_instead }, { name: "reactNamespace", type: "string", affectsEmit: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Specify_the_object_invoked_for_createElement_This_only_applies_when_targeting_react_JSX_emit, defaultValueDescription: "`React`" }, { name: "skipDefaultLibCheck", type: "boolean", category: e.Diagnostics.Completeness, description: e.Diagnostics.Skip_type_checking_d_ts_files_that_are_included_with_TypeScript, defaultValueDescription: false }, { name: "charset", type: "string", category: e.Diagnostics.Backwards_Compatibility, description: e.Diagnostics.No_longer_supported_In_early_versions_manually_set_the_text_encoding_for_reading_files, defaultValueDescription: "utf8" }, { name: "emitBOM", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files, defaultValueDescription: false }, { name: "newLine", type: new e.Map(e.getEntries({ crlf: 0, lf: 1 })), affectsEmit: true, paramType: e.Diagnostics.NEWLINE, category: e.Diagnostics.Emit, description: e.Diagnostics.Set_the_newline_character_for_emitting_files, defaultValueDescription: e.Diagnostics.Platform_specific }, { name: "noErrorTruncation", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Output_Formatting, description: e.Diagnostics.Disable_truncating_types_in_error_messages, defaultValueDescription: false }, { name: "noLib", type: "boolean", category: e.Diagnostics.Language_and_Environment, affectsProgramStructure: true, description: e.Diagnostics.Disable_including_any_library_files_including_the_default_lib_d_ts, transpileOptionValue: true, defaultValueDescription: false }, { name: "noResolve", type: "boolean", affectsModuleResolution: true, category: e.Diagnostics.Modules, description: e.Diagnostics.Disallow_import_s_require_s_or_reference_s_from_expanding_the_number_of_files_TypeScript_should_add_to_a_project, transpileOptionValue: true, defaultValueDescription: false }, { name: "stripInternal", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Disable_emitting_declarations_that_have_internal_in_their_JSDoc_comments, defaultValueDescription: false }, { name: "disableSizeLimit", type: "boolean", affectsProgramStructure: true, category: e.Diagnostics.Editor_Support, description: e.Diagnostics.Remove_the_20mb_cap_on_total_source_code_size_for_JavaScript_files_in_the_TypeScript_language_server, defaultValueDescription: false }, { name: "disableSourceOfProjectReferenceRedirect", type: "boolean", isTSConfigOnly: true, category: e.Diagnostics.Projects, description: e.Diagnostics.Disable_preferring_source_files_instead_of_declaration_files_when_referencing_composite_projects, defaultValueDescription: false }, { name: "disableSolutionSearching", type: "boolean", isTSConfigOnly: true, category: e.Diagnostics.Projects, description: e.Diagnostics.Opt_a_project_out_of_multi_project_reference_checking_when_editing, defaultValueDescription: false }, { name: "disableReferencedProjectLoad", type: "boolean", isTSConfigOnly: true, category: e.Diagnostics.Projects, description: e.Diagnostics.Reduce_the_number_of_projects_loaded_automatically_by_TypeScript, defaultValueDescription: false }, { name: "noImplicitUseStrict", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Backwards_Compatibility, description: e.Diagnostics.Disable_adding_use_strict_directives_in_emitted_JavaScript_files, defaultValueDescription: false }, { name: "noEmitHelpers", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Disable_generating_custom_helper_functions_like_extends_in_compiled_output, defaultValueDescription: false }, { name: "noEmitOnError", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, transpileOptionValue: void 0, description: e.Diagnostics.Disable_emitting_files_if_any_type_checking_errors_are_reported, defaultValueDescription: false }, { name: "preserveConstEnums", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Disable_erasing_const_enum_declarations_in_generated_code, defaultValueDescription: false }, { name: "declarationDir", type: "string", affectsEmit: true, isFilePath: true, paramType: e.Diagnostics.DIRECTORY, category: e.Diagnostics.Emit, transpileOptionValue: void 0, description: e.Diagnostics.Specify_the_output_directory_for_generated_declaration_files }, { name: "skipLibCheck", type: "boolean", category: e.Diagnostics.Completeness, description: e.Diagnostics.Skip_type_checking_all_d_ts_files, defaultValueDescription: false }, { name: "allowUnusedLabels", type: "boolean", affectsBindDiagnostics: true, affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Disable_error_reporting_for_unused_labels, defaultValueDescription: void 0 }, { name: "allowUnreachableCode", type: "boolean", affectsBindDiagnostics: true, affectsSemanticDiagnostics: true, category: e.Diagnostics.Type_Checking, description: e.Diagnostics.Disable_error_reporting_for_unreachable_code, defaultValueDescription: void 0 }, { name: "suppressExcessPropertyErrors", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Backwards_Compatibility, description: e.Diagnostics.Disable_reporting_of_excess_property_errors_during_the_creation_of_object_literals, defaultValueDescription: false }, { name: "suppressImplicitAnyIndexErrors", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Backwards_Compatibility, description: e.Diagnostics.Suppress_noImplicitAny_errors_when_indexing_objects_that_lack_index_signatures, defaultValueDescription: false }, { name: "forceConsistentCasingInFileNames", type: "boolean", affectsModuleResolution: true, category: e.Diagnostics.Interop_Constraints, description: e.Diagnostics.Ensure_that_casing_is_correct_in_imports, defaultValueDescription: false }, { name: "maxNodeModuleJsDepth", type: "number", affectsModuleResolution: true, category: e.Diagnostics.JavaScript_Support, description: e.Diagnostics.Specify_the_maximum_folder_depth_used_for_checking_JavaScript_files_from_node_modules_Only_applicable_with_allowJs, defaultValueDescription: 0 }, { name: "noStrictGenericChecks", type: "boolean", affectsSemanticDiagnostics: true, category: e.Diagnostics.Backwards_Compatibility, description: e.Diagnostics.Disable_strict_checking_of_generic_signatures_in_function_types, defaultValueDescription: false }, { name: "useDefineForClassFields", type: "boolean", affectsSemanticDiagnostics: true, affectsEmit: true, category: e.Diagnostics.Language_and_Environment, description: e.Diagnostics.Emit_ECMAScript_standard_compliant_class_fields, defaultValueDescription: e.Diagnostics.true_for_ES2022_and_above_including_ESNext }, { name: "preserveValueImports", type: "boolean", affectsEmit: true, category: e.Diagnostics.Emit, description: e.Diagnostics.Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed, defaultValueDescription: false }, { name: "keyofStringsOnly", type: "boolean", category: e.Diagnostics.Backwards_Compatibility, description: e.Diagnostics.Make_keyof_only_return_strings_instead_of_string_numbers_or_symbols_Legacy_option, defaultValueDescription: false }, { name: "plugins", type: "list", isTSConfigOnly: true, element: { name: "plugin", type: "object" }, description: e.Diagnostics.Specify_a_list_of_language_service_plugins_to_include, category: e.Diagnostics.Editor_Support }, { name: "moduleDetection", type: new e.Map(e.getEntries({ auto: e.ModuleDetectionKind.Auto, legacy: e.ModuleDetectionKind.Legacy, force: e.ModuleDetectionKind.Force })), affectsModuleResolution: true, description: e.Diagnostics.Control_what_method_is_used_to_detect_module_format_JS_files, category: e.Diagnostics.Language_and_Environment, defaultValueDescription: e.Diagnostics.auto_Colon_Treat_files_with_imports_exports_import_meta_jsx_with_jsx_Colon_react_jsx_or_esm_format_with_module_Colon_node16_as_modules }]; + e.optionDeclarations = Ve(Ve([], e.commonOptionsWithBuild, true), w, true), e.semanticDiagnosticsOptionDeclarations = e.optionDeclarations.filter(function(Pe) { + return !!Pe.affectsSemanticDiagnostics; + }), e.affectsEmitOptionDeclarations = e.optionDeclarations.filter(function(Pe) { + return !!Pe.affectsEmit; + }), e.moduleResolutionOptionDeclarations = e.optionDeclarations.filter(function(Pe) { + return !!Pe.affectsModuleResolution; + }), e.sourceFileAffectingCompilerOptions = e.optionDeclarations.filter(function(Pe) { + return !!Pe.affectsSourceFile || !!Pe.affectsModuleResolution || !!Pe.affectsBindDiagnostics; + }), e.optionsAffectingProgramStructure = e.optionDeclarations.filter(function(Pe) { + return !!Pe.affectsProgramStructure; + }), e.transpileOptionValueCompilerOptions = e.optionDeclarations.filter(function(Pe) { + return e.hasProperty(Pe, "transpileOptionValue"); + }), e.optionsForBuild = [{ name: "verbose", shortName: "v", category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Enable_verbose_logging, type: "boolean", defaultValueDescription: false }, { name: "dry", shortName: "d", category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Show_what_would_be_built_or_deleted_if_specified_with_clean, type: "boolean", defaultValueDescription: false }, { name: "force", shortName: "f", category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Build_all_projects_including_those_that_appear_to_be_up_to_date, type: "boolean", defaultValueDescription: false }, { name: "clean", category: e.Diagnostics.Command_line_Options, description: e.Diagnostics.Delete_the_outputs_of_all_projects, type: "boolean", defaultValueDescription: false }], e.buildOpts = Ve(Ve([], e.commonOptionsWithBuild, true), e.optionsForBuild, true), e.typeAcquisitionDeclarations = [{ name: "enableAutoDiscovery", type: "boolean", defaultValueDescription: false }, { name: "enable", type: "boolean", defaultValueDescription: false }, { name: "include", type: "list", element: { name: "include", type: "string" } }, { name: "exclude", type: "list", element: { name: "exclude", type: "string" } }, { name: "disableFilenameBasedTypeAcquisition", type: "boolean", defaultValueDescription: false }]; + function B(Pe) { + var Ue = new e.Map(), fr = new e.Map(); + return e.forEach(Pe, function(De) { + Ue.set(De.name.toLowerCase(), De), De.shortName && fr.set(De.shortName, De.name); + }), { optionsNameMap: Ue, shortOptionNames: fr }; + } + e.createOptionNameMap = B; + var E; + function Q() { + return E || (E = B(e.optionDeclarations)); + } + e.getOptionsNameMap = Q; + var le = { diagnostic: e.Diagnostics.Compiler_option_0_may_only_be_used_with_build, getOptionsNameMap: q }; + e.defaultInitCompilerOptions = { module: e.ModuleKind.CommonJS, target: 3, strict: true, esModuleInterop: true, forceConsistentCasingInFileNames: true, skipLibCheck: true }; + function N(Pe) { + return Pe && Pe.enableAutoDiscovery !== void 0 && Pe.enable === void 0 ? { enable: Pe.enableAutoDiscovery, include: Pe.include || [], exclude: Pe.exclude || [] } : Pe; + } + e.convertEnableAutoDiscoveryToEnable = N; + function p(Pe) { + return m(Pe, e.createCompilerDiagnostic); + } + e.createCompilerDiagnosticForInvalidCustomType = p; + function m(Pe, Ue) { + var fr = e.arrayFrom(Pe.type.keys()).map(function(De) { + return "'".concat(De, "'"); + }).join(", "); + return Ue(e.Diagnostics.Argument_for_0_option_must_be_Colon_1, "--".concat(Pe.name), fr); + } + function G(Pe, Ue, fr) { + return _r(Pe, e.trimString(Ue || ""), fr); + } + e.parseCustomTypeOption = G; + function oe(Pe, Ue, fr) { + if (Ue === void 0 && (Ue = ""), Ue = e.trimString(Ue), !e.startsWith(Ue, "-")) { + if (Ue === "") + return []; + var De = Ue.split(","); + switch (Pe.element.type) { + case "number": + return e.mapDefined(De, function(gr) { + return Zt(Pe.element, parseInt(gr), fr); + }); + case "string": + return e.mapDefined(De, function(gr) { + return Zt(Pe.element, gr || "", fr); + }); + default: + return e.mapDefined(De, function(gr) { + return G(Pe.element, gr, fr); + }); + } + } + } + e.parseListTypeOption = oe; + function f(Pe) { + return Pe.name; + } + function T(Pe, Ue, fr, De) { + var gr; + if (!((gr = Ue.alternateMode) === null || gr === void 0) && gr.getOptionsNameMap().optionsNameMap.has(Pe.toLowerCase())) + return fr(Ue.alternateMode.diagnostic, Pe); + var Vr = e.getSpellingSuggestion(Pe, Ue.optionDeclarations, f); + return Vr ? fr(Ue.unknownDidYouMeanDiagnostic, De || Pe, Vr.name) : fr(Ue.unknownOptionDiagnostic, De || Pe); + } + function K(Pe, Ue, fr) { + var De = {}, gr, Vr = [], Tr = []; + return vi(Ue), { options: De, watchOptions: gr, fileNames: Vr, errors: Tr }; + function vi(Yi) { + for (var Wi = 0; Wi < Yi.length; ) { + var ct = Yi[Wi]; + if (Wi++, ct.charCodeAt(0) === 64) + Ui(ct.slice(1)); + else if (ct.charCodeAt(0) === 45) { + var Li = ct.slice(ct.charCodeAt(1) === 45 ? 2 : 1), nt = ie(Pe.getOptionsNameMap, Li, true); + if (nt) + Wi = b(Yi, Wi, Pe, nt, De, Tr); + else { + var Mt = ie(k.getOptionsNameMap, Li, true); + Mt ? Wi = b(Yi, Wi, k, Mt, gr || (gr = {}), Tr) : Tr.push(T(Li, Pe, e.createCompilerDiagnostic, ct)); + } + } else + Vr.push(ct); + } + } + function Ui(Yi) { + var Wi = A(Yi, fr || function(Mt) { + return e.sys.readFile(Mt); + }); + if (!e.isString(Wi)) { + Tr.push(Wi); + return; + } + for (var ct = [], Li = 0; ; ) { + for (; Li < Wi.length && Wi.charCodeAt(Li) <= 32; ) + Li++; + if (Li >= Wi.length) + break; + var nt = Li; + if (Wi.charCodeAt(nt) === 34) { + for (Li++; Li < Wi.length && Wi.charCodeAt(Li) !== 34; ) + Li++; + Li < Wi.length ? (ct.push(Wi.substring(nt + 1, Li)), Li++) : Tr.push(e.createCompilerDiagnostic(e.Diagnostics.Unterminated_quoted_string_in_response_file_0, Yi)); + } else { + for (; Wi.charCodeAt(Li) > 32; ) + Li++; + ct.push(Wi.substring(nt, Li)); + } + } + vi(ct); + } + } + e.parseCommandLineWorker = K; + function b(Pe, Ue, fr, De, gr, Vr) { + if (De.isTSConfigOnly) { + var Tr = Pe[Ue]; + Tr === "null" ? (gr[De.name] = void 0, Ue++) : De.type === "boolean" ? Tr === "false" ? (gr[De.name] = Zt(De, false, Vr), Ue++) : (Tr === "true" && Ue++, Vr.push(e.createCompilerDiagnostic(e.Diagnostics.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line, De.name))) : (Vr.push(e.createCompilerDiagnostic(e.Diagnostics.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line, De.name)), Tr && !e.startsWith(Tr, "-") && Ue++); + } else if (!Pe[Ue] && De.type !== "boolean" && Vr.push(e.createCompilerDiagnostic(fr.optionTypeMismatchDiagnostic, De.name, ue(De))), Pe[Ue] !== "null") + switch (De.type) { + case "number": + gr[De.name] = Zt(De, parseInt(Pe[Ue]), Vr), Ue++; + break; + case "boolean": + var Tr = Pe[Ue]; + gr[De.name] = Zt(De, Tr !== "false", Vr), (Tr === "false" || Tr === "true") && Ue++; + break; + case "string": + gr[De.name] = Zt(De, Pe[Ue] || "", Vr), Ue++; + break; + case "list": + var vi = oe(De, Pe[Ue], Vr); + gr[De.name] = vi || [], vi && Ue++; + break; + default: + gr[De.name] = G(De, Pe[Ue], Vr), Ue++; + break; + } + else + gr[De.name] = void 0, Ue++; + return Ue; + } + e.compilerOptionsDidYouMeanDiagnostics = { alternateMode: le, getOptionsNameMap: Q, optionDeclarations: e.optionDeclarations, unknownOptionDiagnostic: e.Diagnostics.Unknown_compiler_option_0, unknownDidYouMeanDiagnostic: e.Diagnostics.Unknown_compiler_option_0_Did_you_mean_1, optionTypeMismatchDiagnostic: e.Diagnostics.Compiler_option_0_expects_an_argument }; + function se(Pe, Ue) { + return K(e.compilerOptionsDidYouMeanDiagnostics, Pe, Ue); + } + e.parseCommandLine = se; + function J(Pe, Ue) { + return ie(Q, Pe, Ue); + } + e.getOptionFromName = J; + function ie(Pe, Ue, fr) { + fr === void 0 && (fr = false), Ue = Ue.toLowerCase(); + var De = Pe(), gr = De.optionsNameMap, Vr = De.shortOptionNames; + if (fr) { + var Tr = Vr.get(Ue); + Tr !== void 0 && (Ue = Tr); + } + return gr.get(Ue); + } + var R; + function q() { + return R || (R = B(e.buildOpts)); + } + var O = { diagnostic: e.Diagnostics.Compiler_option_0_may_not_be_used_with_build, getOptionsNameMap: Q }, ve = { alternateMode: O, getOptionsNameMap: q, optionDeclarations: e.buildOpts, unknownOptionDiagnostic: e.Diagnostics.Unknown_build_option_0, unknownDidYouMeanDiagnostic: e.Diagnostics.Unknown_build_option_0_Did_you_mean_1, optionTypeMismatchDiagnostic: e.Diagnostics.Build_option_0_requires_a_value_of_type_1 }; + function ee(Pe) { + var Ue = K(ve, Pe), fr = Ue.options, De = Ue.watchOptions, gr = Ue.fileNames, Vr = Ue.errors, Tr = fr; + return gr.length === 0 && gr.push("."), Tr.clean && Tr.force && Vr.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined, "clean", "force")), Tr.clean && Tr.verbose && Vr.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined, "clean", "verbose")), Tr.clean && Tr.watch && Vr.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined, "clean", "watch")), Tr.watch && Tr.dry && Vr.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined, "watch", "dry")), { buildOptions: Tr, watchOptions: De, projects: gr, errors: Vr }; + } + e.parseBuildCommand = ee; + function he(Pe) { + for (var Ue = [], fr = 1; fr < arguments.length; fr++) + Ue[fr - 1] = arguments[fr]; + var De = e.createCompilerDiagnostic.apply(void 0, arguments); + return De.messageText; + } + e.getDiagnosticText = he; + function F(Pe, Ue, fr, De, gr, Vr) { + var Tr = A(Pe, function(Yi) { + return fr.readFile(Yi); + }); + if (!e.isString(Tr)) { + fr.onUnRecoverableConfigFileDiagnostic(Tr); + return; + } + var vi = e.parseJsonText(Pe, Tr), Ui = fr.getCurrentDirectory(); + return vi.path = e.toPath(Pe, Ui, e.createGetCanonicalFileName(fr.useCaseSensitiveFileNames)), vi.resolvedPath = vi.path, vi.originalFileName = vi.fileName, er(vi, fr, e.getNormalizedAbsolutePath(e.getDirectoryPath(Pe), Ui), Ue, e.getNormalizedAbsolutePath(Pe, Ui), void 0, Vr, De, gr); + } + e.getParsedCommandLineOfConfigFile = F; + function x(Pe, Ue) { + var fr = A(Pe, Ue); + return e.isString(fr) ? X(Pe, fr) : { config: {}, error: fr }; + } + e.readConfigFile = x; + function X(Pe, Ue) { + var fr = e.parseJsonText(Pe, Ue); + return { config: fe(fr, fr.parseDiagnostics, false, void 0), error: fr.parseDiagnostics.length ? fr.parseDiagnostics[0] : void 0 }; + } + e.parseConfigFileTextToJson = X; + function $(Pe, Ue) { + var fr = A(Pe, Ue); + return e.isString(fr) ? e.parseJsonText(Pe, fr) : { fileName: Pe, parseDiagnostics: [fr] }; + } + e.readJsonConfigFile = $; + function A(Pe, Ue) { + var fr; + try { + fr = Ue(Pe); + } catch (De) { + return e.createCompilerDiagnostic(e.Diagnostics.Cannot_read_file_0_Colon_1, Pe, De.message); + } + return fr === void 0 ? e.createCompilerDiagnostic(e.Diagnostics.Cannot_read_file_0, Pe) : fr; + } + e.tryReadFile = A; + function y(Pe) { + return e.arrayToMap(Pe, f); + } + var V = { optionDeclarations: e.typeAcquisitionDeclarations, unknownOptionDiagnostic: e.Diagnostics.Unknown_type_acquisition_option_0, unknownDidYouMeanDiagnostic: e.Diagnostics.Unknown_type_acquisition_option_0_Did_you_mean_1 }, L; + function P() { + return L || (L = B(e.optionsForWatch)); + } + var k = { getOptionsNameMap: P, optionDeclarations: e.optionsForWatch, unknownOptionDiagnostic: e.Diagnostics.Unknown_watch_option_0, unknownDidYouMeanDiagnostic: e.Diagnostics.Unknown_watch_option_0_Did_you_mean_1, optionTypeMismatchDiagnostic: e.Diagnostics.Watch_option_0_requires_a_value_of_type_1 }, Y; + function U() { + return Y || (Y = y(e.optionDeclarations)); + } + var j; + function H() { + return j || (j = y(e.optionsForWatch)); + } + var I; + function l() { + return I || (I = y(e.typeAcquisitionDeclarations)); + } + var d; + function D() { + return d === void 0 && (d = { name: void 0, type: "object", elementOptions: y([{ name: "compilerOptions", type: "object", elementOptions: U(), extraKeyDiagnostics: e.compilerOptionsDidYouMeanDiagnostics }, { name: "watchOptions", type: "object", elementOptions: H(), extraKeyDiagnostics: k }, { name: "typingOptions", type: "object", elementOptions: l(), extraKeyDiagnostics: V }, { name: "typeAcquisition", type: "object", elementOptions: l(), extraKeyDiagnostics: V }, { name: "extends", type: "string", category: e.Diagnostics.File_Management }, { name: "references", type: "list", element: { name: "references", type: "object" }, category: e.Diagnostics.Projects }, { name: "files", type: "list", element: { name: "files", type: "string" }, category: e.Diagnostics.File_Management }, { name: "include", type: "list", element: { name: "include", type: "string" }, category: e.Diagnostics.File_Management, defaultValueDescription: e.Diagnostics.if_files_is_specified_otherwise_Asterisk_Asterisk_Slash_Asterisk }, { name: "exclude", type: "list", element: { name: "exclude", type: "string" }, category: e.Diagnostics.File_Management, defaultValueDescription: e.Diagnostics.node_modules_bower_components_jspm_packages_plus_the_value_of_outDir_if_one_is_specified }, e.compileOnSaveCommandLineOption]) }), d; + } + function fe(Pe, Ue, fr, De) { + var gr, Vr = (gr = Pe.statements[0]) === null || gr === void 0 ? void 0 : gr.expression, Tr = fr ? D() : void 0; + if (Vr && Vr.kind !== 205) { + if (Ue.push(e.createDiagnosticForNodeInSourceFile(Pe, Vr, e.Diagnostics.The_root_value_of_a_0_file_must_be_an_object, e.getBaseFileName(Pe.fileName) === "jsconfig.json" ? "jsconfig.json" : "tsconfig.json")), e.isArrayLiteralExpression(Vr)) { + var vi = e.find(Vr.elements, e.isObjectLiteralExpression); + if (vi) + return ne(Pe, vi, Ue, true, Tr, De); + } + return {}; + } + return ne(Pe, Vr, Ue, true, Tr, De); + } + function g(Pe, Ue) { + var fr; + return ne(Pe, (fr = Pe.statements[0]) === null || fr === void 0 ? void 0 : fr.expression, Ue, true, void 0, void 0); + } + e.convertToObject = g; + function ne(Pe, Ue, fr, De, gr, Vr) { + if (!Ue) + return De ? {} : void 0; + return Yi(Ue, gr); + function Tr(ct) { + return gr && gr.elementOptions === ct; + } + function vi(ct, Li, nt, Mt) { + for (var xt = De ? {} : void 0, ut = function(Ki) { + if (Ki.kind !== 296) + return fr.push(e.createDiagnosticForNodeInSourceFile(Pe, Ki, e.Diagnostics.Property_assignment_expected)), "continue"; + Ki.questionToken && fr.push(e.createDiagnosticForNodeInSourceFile(Pe, Ki.questionToken, e.Diagnostics.The_0_modifier_can_only_be_used_in_TypeScript_files, "?")), Wi(Ki.name) || fr.push(e.createDiagnosticForNodeInSourceFile(Pe, Ki.name, e.Diagnostics.String_literal_with_double_quotes_expected)); + var Fi = e.isComputedNonLiteralName(Ki.name) ? void 0 : e.getTextOfPropertyName(Ki.name), ui = Fi && e.unescapeLeadingUnderscores(Fi), Bt = ui && Li ? Li.get(ui) : void 0; + ui && nt && !Bt && (Li ? fr.push(T(ui, nt, function(Ai, Oi, ji) { + return e.createDiagnosticForNodeInSourceFile(Pe, Ki.name, Ai, Oi, ji); + })) : fr.push(e.createDiagnosticForNodeInSourceFile(Pe, Ki.name, nt.unknownOptionDiagnostic, ui))); + var wt = Yi(Ki.initializer, Bt); + if (typeof ui < "u" && (De && (xt[ui] = wt), Vr && (Mt || Tr(Li)))) { + var na = We(Bt, wt); + Mt ? na && Vr.onSetValidOptionKeyValueInParent(Mt, Bt, wt) : Tr(Li) && (na ? Vr.onSetValidOptionKeyValueInRoot(ui, Ki.name, wt, Ki.initializer) : Bt || Vr.onSetUnknownOptionKeyValueInRoot(ui, Ki.name, wt, Ki.initializer)); + } + }, Dt = 0, Rt = ct.properties; Dt < Rt.length; Dt++) { + var Ii = Rt[Dt]; + ut(Ii); + } + return xt; + } + function Ui(ct, Li) { + if (!De) { + ct.forEach(function(nt) { + return Yi(nt, Li); + }); + return; + } + return e.filter(ct.map(function(nt) { + return Yi(nt, Li); + }), function(nt) { + return nt !== void 0; + }); + } + function Yi(ct, Li) { + var nt; + switch (ct.kind) { + case 110: + return ui(Li && Li.type !== "boolean"), Fi(true); + case 95: + return ui(Li && Li.type !== "boolean"), Fi(false); + case 104: + return ui(Li && Li.name === "extends"), Fi(null); + case 10: + Wi(ct) || fr.push(e.createDiagnosticForNodeInSourceFile(Pe, ct, e.Diagnostics.String_literal_with_double_quotes_expected)), ui(Li && e.isString(Li.type) && Li.type !== "string"); + var Mt = ct.text; + if (Li && !e.isString(Li.type)) { + var xt = Li; + xt.type.has(Mt.toLowerCase()) || (fr.push(m(xt, function(Bt, wt, na) { + return e.createDiagnosticForNodeInSourceFile(Pe, ct, Bt, wt, na); + })), nt = true); + } + return Fi(Mt); + case 8: + return ui(Li && Li.type !== "number"), Fi(Number(ct.text)); + case 219: + if (ct.operator !== 40 || ct.operand.kind !== 8) + break; + return ui(Li && Li.type !== "number"), Fi(-Number(ct.operand.text)); + case 205: + ui(Li && Li.type !== "object"); + var ut = ct; + if (Li) { + var Dt = Li, Rt = Dt.elementOptions, Ii = Dt.extraKeyDiagnostics, Ki = Dt.name; + return Fi(vi(ut, Rt, Ii, Ki)); + } else + return Fi(vi(ut, void 0, void 0, void 0)); + case 204: + return ui(Li && Li.type !== "list"), Fi(Ui(ct.elements, Li && Li.element)); + } + Li ? ui(true) : fr.push(e.createDiagnosticForNodeInSourceFile(Pe, ct, e.Diagnostics.Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_literal)); + return; + function Fi(Bt) { + var wt; + if (!nt) { + var na = (wt = Li == null ? void 0 : Li.extraValidation) === null || wt === void 0 ? void 0 : wt.call(Li, Bt); + if (na) { + fr.push(e.createDiagnosticForNodeInSourceFile.apply(void 0, Ve([Pe, ct], na, false))); + return; + } + } + return Bt; + } + function ui(Bt) { + Bt && (fr.push(e.createDiagnosticForNodeInSourceFile(Pe, ct, e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, Li.name, ue(Li))), nt = true); + } + } + function Wi(ct) { + return e.isStringLiteral(ct) && e.isStringDoubleQuoted(ct, Pe); + } + } + e.convertToObjectWorker = ne; + function ue(Pe) { + return Pe.type === "list" ? "Array" : e.isString(Pe.type) ? Pe.type : "string"; + } + function We(Pe, Ue) { + if (Pe) { + if (Cr(Ue)) + return true; + if (Pe.type === "list") + return e.isArray(Ue); + var fr = e.isString(Pe.type) ? Pe.type : "string"; + return typeof Ue === fr; + } + return false; + } + function Fe(Pe, Ue, fr) { + var De, gr, Vr, Tr = e.createGetCanonicalFileName(fr.useCaseSensitiveFileNames), vi = e.map(e.filter(Pe.fileNames, !((gr = (De = Pe.options.configFile) === null || De === void 0 ? void 0 : De.configFileSpecs) === null || gr === void 0) && gr.validatedIncludeSpecs ? ge(Ue, Pe.options.configFile.configFileSpecs.validatedIncludeSpecs, Pe.options.configFile.configFileSpecs.validatedExcludeSpecs, fr) : e.returnTrue), function(ct) { + return e.getRelativePathFromFile(e.getNormalizedAbsolutePath(Ue, fr.getCurrentDirectory()), e.getNormalizedAbsolutePath(ct, fr.getCurrentDirectory()), Tr); + }), Ui = Ee(Pe.options, { configFilePath: e.getNormalizedAbsolutePath(Ue, fr.getCurrentDirectory()), useCaseSensitiveFileNames: fr.useCaseSensitiveFileNames }), Yi = Pe.watchOptions && He(Pe.watchOptions), Wi = Ke(Ke({ compilerOptions: Ke(Ke({}, Z(Ui)), { showConfig: void 0, configFile: void 0, configFilePath: void 0, help: void 0, init: void 0, listFiles: void 0, listEmittedFiles: void 0, project: void 0, build: void 0, version: void 0 }), watchOptions: Yi && Z(Yi), references: e.map(Pe.projectReferences, function(ct) { + return Ke(Ke({}, ct), { path: ct.originalPath ? ct.originalPath : "", originalPath: void 0 }); + }), files: e.length(vi) ? vi : void 0 }, !((Vr = Pe.options.configFile) === null || Vr === void 0) && Vr.configFileSpecs ? { include: Be(Pe.options.configFile.configFileSpecs.validatedIncludeSpecs), exclude: Pe.options.configFile.configFileSpecs.validatedExcludeSpecs } : {}), { compileOnSave: Pe.compileOnSave ? true : void 0 }); + return Wi; + } + e.convertToTSConfig = Fe; + function Z(Pe) { + return Ke({}, e.arrayFrom(Pe.entries()).reduce(function(Ue, fr) { + var De; + return Ke(Ke({}, Ue), (De = {}, De[fr[0]] = fr[1], De)); + }, {})); + } + function Be(Pe) { + if (!!e.length(Pe)) { + if (e.length(Pe) !== 1) + return Pe; + if (Pe[0] !== "**/*") + return Pe; + } + } + function ge(Pe, Ue, fr, De) { + if (!Ue) + return e.returnTrue; + var gr = e.getFileMatcherPatterns(Pe, fr, Ue, De.useCaseSensitiveFileNames, De.getCurrentDirectory()), Vr = gr.excludePattern && e.getRegexFromPattern(gr.excludePattern, De.useCaseSensitiveFileNames), Tr = gr.includeFilePattern && e.getRegexFromPattern(gr.includeFilePattern, De.useCaseSensitiveFileNames); + return Tr ? Vr ? function(vi) { + return !(Tr.test(vi) && !Vr.test(vi)); + } : function(vi) { + return !Tr.test(vi); + } : Vr ? function(vi) { + return Vr.test(vi); + } : e.returnTrue; + } + function Re(Pe) { + if (!(Pe.type === "string" || Pe.type === "number" || Pe.type === "boolean" || Pe.type === "object")) + return Pe.type === "list" ? Re(Pe.element) : Pe.type; + } + function ze(Pe, Ue) { + return e.forEachEntry(Ue, function(fr, De) { + if (fr === Pe) + return De; + }); + } + function Ee(Pe, Ue) { + return rr(Pe, Q(), Ue); + } + function He(Pe) { + return rr(Pe, P()); + } + function rr(Pe, Ue, fr) { + var De = Ue.optionsNameMap, gr = new e.Map(), Vr = fr && e.createGetCanonicalFileName(fr.useCaseSensitiveFileNames), Tr = function(Ui) { + if (e.hasProperty(Pe, Ui)) { + if (De.has(Ui) && (De.get(Ui).category === e.Diagnostics.Command_line_Options || De.get(Ui).category === e.Diagnostics.Output_Formatting)) + return "continue"; + var Yi = Pe[Ui], Wi = De.get(Ui.toLowerCase()); + if (Wi) { + var ct = Re(Wi); + ct ? Wi.type === "list" ? gr.set(Ui, Yi.map(function(Li) { + return ze(Li, ct); + })) : gr.set(Ui, ze(Yi, ct)) : fr && Wi.isFilePath ? gr.set(Ui, e.getRelativePathFromFile(fr.configFilePath, e.getNormalizedAbsolutePath(Yi, e.getDirectoryPath(fr.configFilePath)), Vr)) : gr.set(Ui, Yi); + } + } + }; + for (var vi in Pe) + Tr(vi); + return gr; + } + function Ie(Pe, Ue) { + var fr = _e(Pe); + return gr(); + function De(Vr) { + return Array(Vr + 1).join(" "); + } + function gr() { + var Vr = [], Tr = De(2); + return w.forEach(function(vi) { + if (!!fr.has(vi.name)) { + var Ui = fr.get(vi.name), Yi = Mr(vi); + Ui !== Yi ? Vr.push("".concat(Tr).concat(vi.name, ": ").concat(Ui)) : e.hasProperty(e.defaultInitCompilerOptions, vi.name) && Vr.push("".concat(Tr).concat(vi.name, ": ").concat(Yi)); + } + }), Vr.join(Ue) + Ue; + } + } + e.getCompilerOptionsDiffValue = Ie; + function _e(Pe) { + var Ue = e.extend(Pe, e.defaultInitCompilerOptions); + return Ee(Ue); + } + function we(Pe, Ue, fr) { + var De = _e(Pe); + return Tr(); + function gr(vi) { + return Array(vi + 1).join(" "); + } + function Vr(vi) { + var Ui = vi.category, Yi = vi.name, Wi = vi.isCommandLineOnly, ct = [e.Diagnostics.Command_line_Options, e.Diagnostics.Editor_Support, e.Diagnostics.Compiler_Diagnostics, e.Diagnostics.Backwards_Compatibility, e.Diagnostics.Watch_and_Build_Modes, e.Diagnostics.Output_Formatting]; + return !Wi && Ui !== void 0 && (!ct.includes(Ui) || De.has(Yi)); + } + function Tr() { + for (var vi = e.createMultiMap(), Ui = 0, Yi = e.optionDeclarations; Ui < Yi.length; Ui++) { + var Wi = Yi[Ui], ct = Wi.category; + Vr(Wi) && vi.add(e.getLocaleSpecificMessage(ct), Wi); + } + var Li = 0, nt = 0, Mt = []; + vi.forEach(function(wt, na) { + Mt.length !== 0 && Mt.push({ value: "" }), Mt.push({ value: "/* ".concat(na, " */") }); + for (var Ai = 0, Oi = wt; Ai < Oi.length; Ai++) { + var ji = Oi[Ai], Vi = void 0; + De.has(ji.name) ? Vi = '"'.concat(ji.name, '": ').concat(JSON.stringify(De.get(ji.name))).concat((nt += 1) === De.size ? "" : ",") : Vi = '// "'.concat(ji.name, '": ').concat(JSON.stringify(Mr(ji)), ","), Mt.push({ value: Vi, description: "/* ".concat(ji.description && e.getLocaleSpecificMessage(ji.description) || ji.name, " */") }), Li = Math.max(Vi.length, Li); + } + }); + var xt = gr(2), ut = []; + ut.push("{"), ut.push("".concat(xt, '"compilerOptions": {')), ut.push("".concat(xt).concat(xt, "/* ").concat(e.getLocaleSpecificMessage(e.Diagnostics.Visit_https_Colon_Slash_Slashaka_ms_Slashtsconfig_to_read_more_about_this_file), " */")), ut.push(""); + for (var Dt = 0, Rt = Mt; Dt < Rt.length; Dt++) { + var Ii = Rt[Dt], Ki = Ii.value, Fi = Ii.description, ui = Fi === void 0 ? "" : Fi; + ut.push(Ki && "".concat(xt).concat(xt).concat(Ki).concat(ui && gr(Li - Ki.length + 2) + ui)); + } + if (Ue.length) { + ut.push("".concat(xt, "},")), ut.push("".concat(xt, '"files": [')); + for (var Bt = 0; Bt < Ue.length; Bt++) + ut.push("".concat(xt).concat(xt).concat(JSON.stringify(Ue[Bt])).concat(Bt === Ue.length - 1 ? "" : ",")); + ut.push("".concat(xt, "]")); + } else + ut.push("".concat(xt, "}")); + return ut.push("}"), ut.join(fr) + fr; + } + } + e.generateTSConfig = we; + function de(Pe, Ue) { + var fr = {}, De = Q().optionsNameMap; + for (var gr in Pe) + e.hasProperty(Pe, gr) && (fr[gr] = ye(De.get(gr.toLowerCase()), Pe[gr], Ue)); + return fr.configFilePath && (fr.configFilePath = Ue(fr.configFilePath)), fr; + } + e.convertToOptionsWithAbsolutePaths = de; + function ye(Pe, Ue, fr) { + if (Pe && !Cr(Ue)) { + if (Pe.type === "list") { + var De = Ue; + if (Pe.element.isFilePath && De.length) + return De.map(fr); + } else if (Pe.isFilePath) + return fr(Ue); + } + return Ue; + } + function Ae(Pe, Ue, fr, De, gr, Vr, Tr, vi, Ui) { + return Br(Pe, void 0, Ue, fr, De, Ui, gr, Vr, Tr, vi); + } + e.parseJsonConfigFileContent = Ae; + function er(Pe, Ue, fr, De, gr, Vr, Tr, vi, Ui) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("parse", "parseJsonSourceFileConfigFileContent", { path: Pe.fileName }); + var Yi = Br(void 0, Pe, Ue, fr, De, Ui, gr, Vr, Tr, vi); + return e.tracing === null || e.tracing === void 0 || e.tracing.pop(), Yi; + } + e.parseJsonSourceFileConfigFileContent = er; + function ir(Pe, Ue) { + Ue && Object.defineProperty(Pe, "configFile", { enumerable: false, writable: false, value: Ue }); + } + e.setConfigFileInOptions = ir; + function Cr(Pe) { + return Pe == null; + } + function Ye(Pe, Ue) { + return e.getDirectoryPath(e.getNormalizedAbsolutePath(Pe, Ue)); + } + function Br(Pe, Ue, fr, De, gr, Vr, Tr, vi, Ui, Yi) { + gr === void 0 && (gr = {}), vi === void 0 && (vi = []), Ui === void 0 && (Ui = []), e.Debug.assert(Pe === void 0 && Ue !== void 0 || Pe !== void 0 && Ue === void 0); + var Wi = [], ct = ur(Pe, Ue, fr, De, Tr, vi, Wi, Yi), Li = ct.raw, nt = e.extend(gr, ct.options || {}), Mt = Vr && ct.watchOptions ? e.extend(Vr, ct.watchOptions) : ct.watchOptions || Vr; + nt.configFilePath = Tr && e.normalizeSlashes(Tr); + var xt = Dt(); + Ue && (Ue.configFileSpecs = xt), ir(nt, Ue); + var ut = e.normalizePath(Tr ? Ye(Tr, De) : De); + return { options: nt, watchOptions: Mt, fileNames: Rt(ut), projectReferences: Ii(ut), typeAcquisition: ct.typeAcquisition || si(), raw: Li, errors: Wi, wildcardDirectories: xe(xt, ut, fr.useCaseSensitiveFileNames), compileOnSave: !!Li.compileOnSave }; + function Dt() { + var wt = ui("references", function(pn) { + return typeof pn == "object"; + }, "object"), na = Ki(Fi("files")); + if (na) { + var Ai = wt === "no-prop" || e.isArray(wt) && wt.length === 0, Oi = e.hasProperty(Li, "extends"); + if (na.length === 0 && Ai && !Oi) + if (Ue) { + var ji = Tr || "tsconfig.json", Vi = e.Diagnostics.The_files_list_in_config_file_0_is_empty, at = e.firstDefined(e.getTsConfigPropArray(Ue, "files"), function(pn) { + return pn.initializer; + }), At = at ? e.createDiagnosticForNodeInSourceFile(Ue, at, Vi, ji) : e.createCompilerDiagnostic(Vi, ji); + Wi.push(At); + } else + Bt(e.Diagnostics.The_files_list_in_config_file_0_is_empty, Tr || "tsconfig.json"); + } + var ba = Ki(Fi("include")), $a = Fi("exclude"), Qa = Ki($a); + if ($a === "no-prop" && Li.compilerOptions) { + var ai = Li.compilerOptions.outDir, Dn = Li.compilerOptions.declarationDir; + (ai || Dn) && (Qa = [ai, Dn].filter(function(pn) { + return !!pn; + })); + } + na === void 0 && ba === void 0 && (ba = ["**/*"]); + var ka, Ba; + return ba && (ka = Wr(ba, Wi, true, Ue, "include")), Qa && (Ba = Wr(Qa, Wi, false, Ue, "exclude")), { filesSpecs: na, includeSpecs: ba, excludeSpecs: Qa, validatedFilesSpec: e.filter(na, e.isString), validatedIncludeSpecs: ka, validatedExcludeSpecs: Ba, pathPatterns: void 0 }; + } + function Rt(wt) { + var na = Jr(xt, wt, nt, fr, Ui); + return n(na, lr(Li), vi) && Wi.push(Ne(xt, Tr)), na; + } + function Ii(wt) { + var na, Ai = ui("references", function(at) { + return typeof at == "object"; + }, "object"); + if (e.isArray(Ai)) + for (var Oi = 0, ji = Ai; Oi < ji.length; Oi++) { + var Vi = ji[Oi]; + typeof Vi.path != "string" ? Bt(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "reference.path", "string") : (na || (na = [])).push({ path: e.getNormalizedAbsolutePath(Vi.path, wt), originalPath: Vi.path, prepend: Vi.prepend, circular: Vi.circular }); + } + return na; + } + function Ki(wt) { + return e.isArray(wt) ? wt : void 0; + } + function Fi(wt) { + return ui(wt, e.isString, "string"); + } + function ui(wt, na, Ai) { + if (e.hasProperty(Li, wt) && !Cr(Li[wt])) + if (e.isArray(Li[wt])) { + var Oi = Li[wt]; + return !Ue && !e.every(Oi, na) && Wi.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, wt, Ai)), Oi; + } else + return Bt(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, wt, "Array"), "not-array"; + return "no-prop"; + } + function Bt(wt, na, Ai) { + Ue || Wi.push(e.createCompilerDiagnostic(wt, na, Ai)); + } + } + function Er(Pe) { + return Pe.code === e.Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code; + } + function Ne(Pe, Ue) { + var fr = Pe.includeSpecs, De = Pe.excludeSpecs; + return e.createCompilerDiagnostic(e.Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2, Ue || "tsconfig.json", JSON.stringify(fr || []), JSON.stringify(De || [])); + } + function n(Pe, Ue, fr) { + return Pe.length === 0 && Ue && (!fr || fr.length === 0); + } + function lr(Pe) { + return !e.hasProperty(Pe, "files") && !e.hasProperty(Pe, "references"); + } + e.canJsonReportNoInputFiles = lr; + function be(Pe, Ue, fr, De, gr) { + var Vr = De.length; + return n(Pe, gr) ? De.push(Ne(fr, Ue)) : e.filterMutate(De, function(Tr) { + return !Er(Tr); + }), Vr !== De.length; + } + e.updateErrorForNoInputFiles = be; + function Ge(Pe) { + return !!Pe.options; + } + function ur(Pe, Ue, fr, De, gr, Vr, Tr, vi) { + var Ui; + De = e.normalizeSlashes(De); + var Yi = e.getNormalizedAbsolutePath(gr || "", De); + if (Vr.indexOf(Yi) >= 0) + return Tr.push(e.createCompilerDiagnostic(e.Diagnostics.Circularity_detected_while_resolving_configuration_Colon_0, Ve(Ve([], Vr, true), [Yi], false).join(" -> "))), { raw: Pe || g(Ue, Tr) }; + var Wi = Pe ? yr(Pe, fr, De, gr, Tr) : Ir(Ue, fr, De, gr, Tr); + if (!((Ui = Wi.options) === null || Ui === void 0) && Ui.paths && (Wi.options.pathsBasePath = De), Wi.extendedConfigPath) { + Vr = Vr.concat([Yi]); + var ct = Ur(Ue, Wi.extendedConfigPath, fr, Vr, Tr, vi); + if (ct && Ge(ct)) { + var Li = ct.raw, nt = Wi.raw, Mt, xt = function(ut) { + !nt[ut] && Li[ut] && (nt[ut] = e.map(Li[ut], function(Dt) { + return e.isRootedDiskPath(Dt) ? Dt : e.combinePaths(Mt || (Mt = e.convertToRelativePath(e.getDirectoryPath(Wi.extendedConfigPath), De, e.createGetCanonicalFileName(fr.useCaseSensitiveFileNames))), Dt); + })); + }; + xt("include"), xt("exclude"), xt("files"), nt.compileOnSave === void 0 && (nt.compileOnSave = Li.compileOnSave), Wi.options = e.assign({}, ct.options, Wi.options), Wi.watchOptions = Wi.watchOptions && ct.watchOptions ? e.assign({}, ct.watchOptions, Wi.watchOptions) : Wi.watchOptions || ct.watchOptions; + } + } + return Wi; + } + function yr(Pe, Ue, fr, De, gr) { + e.hasProperty(Pe, "excludes") && gr.push(e.createCompilerDiagnostic(e.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)); + var Vr = qr(Pe.compilerOptions, fr, gr, De), Tr = Di(Pe.typeAcquisition || Pe.typingOptions, fr, gr, De), vi = wi(Pe.watchOptions, fr, gr); + Pe.compileOnSave = ii(Pe, fr, gr); + var Ui; + if (Pe.extends) + if (!e.isString(Pe.extends)) + gr.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, "extends", "string")); + else { + var Yi = De ? Ye(De, fr) : fr; + Ui = wr(Pe.extends, Ue, Yi, gr, e.createCompilerDiagnostic); + } + return { raw: Pe, options: Vr, watchOptions: vi, typeAcquisition: Tr, extendedConfigPath: Ui }; + } + function Ir(Pe, Ue, fr, De, gr) { + var Vr = or(De), Tr, vi, Ui, Yi, Wi, ct = { onSetValidOptionKeyValueInParent: function(nt, Mt, xt) { + var ut; + switch (nt) { + case "compilerOptions": + ut = Vr; + break; + case "watchOptions": + ut = Ui || (Ui = {}); + break; + case "typeAcquisition": + ut = Tr || (Tr = si(De)); + break; + case "typingOptions": + ut = vi || (vi = si(De)); + break; + default: + e.Debug.fail("Unknown option"); + } + ut[Mt.name] = Gi(Mt, fr, xt); + }, onSetValidOptionKeyValueInRoot: function(nt, Mt, xt, ut) { + switch (nt) { + case "extends": + var Dt = De ? Ye(De, fr) : fr; + Yi = wr(xt, Ue, Dt, gr, function(Rt, Ii) { + return e.createDiagnosticForNodeInSourceFile(Pe, ut, Rt, Ii); + }); + return; + } + }, onSetUnknownOptionKeyValueInRoot: function(nt, Mt, xt, ut) { + nt === "excludes" && gr.push(e.createDiagnosticForNodeInSourceFile(Pe, Mt, e.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude)), e.find(w, function(Dt) { + return Dt.name === nt; + }) && (Wi = e.append(Wi, Mt)); + } }, Li = fe(Pe, gr, true, ct); + return Tr || (vi ? Tr = vi.enableAutoDiscovery !== void 0 ? { enable: vi.enableAutoDiscovery, include: vi.include, exclude: vi.exclude } : vi : Tr = si(De)), Wi && Li && Li.compilerOptions === void 0 && gr.push(e.createDiagnosticForNodeInSourceFile(Pe, Wi[0], e.Diagnostics._0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file, e.getTextOfPropertyName(Wi[0]))), { raw: Li, options: Vr, watchOptions: Ui, typeAcquisition: Tr, extendedConfigPath: Yi }; + } + function wr(Pe, Ue, fr, De, gr) { + if (Pe = e.normalizeSlashes(Pe), e.isRootedDiskPath(Pe) || e.startsWith(Pe, "./") || e.startsWith(Pe, "../")) { + var Vr = e.getNormalizedAbsolutePath(Pe, fr); + if (!Ue.fileExists(Vr) && !e.endsWith(Vr, ".json") && (Vr = "".concat(Vr, ".json"), !Ue.fileExists(Vr))) { + De.push(gr(e.Diagnostics.File_0_not_found, Pe)); + return; + } + return Vr; + } + var Tr = e.nodeModuleNameResolver(Pe, e.combinePaths(fr, "tsconfig.json"), { moduleResolution: e.ModuleResolutionKind.NodeJs }, Ue, void 0, void 0, true); + if (Tr.resolvedModule) + return Tr.resolvedModule.resolvedFileName; + De.push(gr(e.Diagnostics.File_0_not_found, Pe)); + } + function Ur(Pe, Ue, fr, De, gr, Vr) { + var Tr, vi = fr.useCaseSensitiveFileNames ? Ue : e.toFileNameLowerCase(Ue), Ui, Yi, Wi; + if (Vr && (Ui = Vr.get(vi)) ? (Yi = Ui.extendedResult, Wi = Ui.extendedConfig) : (Yi = $(Ue, function(ct) { + return fr.readFile(ct); + }), Yi.parseDiagnostics.length || (Wi = ur(void 0, Yi, fr, e.getDirectoryPath(Ue), e.getBaseFileName(Ue), De, gr, Vr)), Vr && Vr.set(vi, { extendedResult: Yi, extendedConfig: Wi })), Pe && (Pe.extendedSourceFiles = [Yi.fileName], Yi.extendedSourceFiles && (Tr = Pe.extendedSourceFiles).push.apply(Tr, Yi.extendedSourceFiles)), Yi.parseDiagnostics.length) { + gr.push.apply(gr, Yi.parseDiagnostics); + return; + } + return Wi; + } + function ii(Pe, Ue, fr) { + if (!e.hasProperty(Pe, e.compileOnSaveCommandLineOption.name)) + return false; + var De = et(e.compileOnSaveCommandLineOption, Pe.compileOnSave, Ue, fr); + return typeof De == "boolean" && De; + } + function mi(Pe, Ue, fr) { + var De = [], gr = qr(Pe, Ue, De, fr); + return { options: gr, errors: De }; + } + e.convertCompilerOptionsFromJson = mi; + function pe(Pe, Ue, fr) { + var De = [], gr = Di(Pe, Ue, De, fr); + return { options: gr, errors: De }; + } + e.convertTypeAcquisitionFromJson = pe; + function or(Pe) { + var Ue = Pe && e.getBaseFileName(Pe) === "jsconfig.json" ? { allowJs: true, maxNodeModuleJsDepth: 2, allowSyntheticDefaultImports: true, skipLibCheck: true, noEmit: true } : {}; + return Ue; + } + function qr(Pe, Ue, fr, De) { + var gr = or(De); + return Xi(U(), Pe, Ue, gr, e.compilerOptionsDidYouMeanDiagnostics, fr), De && (gr.configFilePath = e.normalizeSlashes(De)), gr; + } + function si(Pe) { + return { enable: !!Pe && e.getBaseFileName(Pe) === "jsconfig.json", include: [], exclude: [] }; + } + function Di(Pe, Ue, fr, De) { + var gr = si(De), Vr = N(Pe); + return Xi(l(), Vr, Ue, gr, V, fr), gr; + } + function wi(Pe, Ue, fr) { + return Xi(H(), Pe, Ue, void 0, k, fr); + } + function Xi(Pe, Ue, fr, De, gr, Vr) { + if (!!Ue) { + for (var Tr in Ue) { + var vi = Pe.get(Tr); + vi ? (De || (De = {}))[vi.name] = et(vi, Ue[Tr], fr, Vr) : Vr.push(T(Tr, gr, e.createCompilerDiagnostic)); + } + return De; + } + } + function et(Pe, Ue, fr, De) { + if (We(Pe, Ue)) { + var gr = Pe.type; + if (gr === "list" && e.isArray(Ue)) + return pi(Pe, Ue, fr, De); + if (!e.isString(gr)) + return _r(Pe, Ue, De); + var Vr = Zt(Pe, Ue, De); + return Cr(Vr) ? Vr : Wt(Pe, fr, Vr); + } else + De.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1, Pe.name, ue(Pe))); + } + e.convertJsonOption = et; + function Gi(Pe, Ue, fr) { + if (!Cr(fr)) { + if (Pe.type === "list") { + var De = Pe; + return De.element.isFilePath || !e.isString(De.element.type) ? e.filter(e.map(fr, function(gr) { + return Gi(De.element, Ue, gr); + }), function(gr) { + return De.listPreserveFalsyValues ? true : !!gr; + }) : fr; + } else if (!e.isString(Pe.type)) + return Pe.type.get(e.isString(fr) ? fr.toLowerCase() : fr); + return Wt(Pe, Ue, fr); + } + } + function Wt(Pe, Ue, fr) { + return Pe.isFilePath && (fr = e.getNormalizedAbsolutePath(fr, Ue), fr === "" && (fr = ".")), fr; + } + function Zt(Pe, Ue, fr) { + var De; + if (!Cr(Ue)) { + var gr = (De = Pe.extraValidation) === null || De === void 0 ? void 0 : De.call(Pe, Ue); + if (!gr) + return Ue; + fr.push(e.createCompilerDiagnostic.apply(void 0, gr)); + } + } + function _r(Pe, Ue, fr) { + if (!Cr(Ue)) { + var De = Ue.toLowerCase(), gr = Pe.type.get(De); + if (gr !== void 0) + return Zt(Pe, gr, fr); + fr.push(p(Pe)); + } + } + function pi(Pe, Ue, fr, De) { + return e.filter(e.map(Ue, function(gr) { + return et(Pe.element, gr, fr, De); + }), function(gr) { + return Pe.listPreserveFalsyValues ? true : !!gr; + }); + } + var ae = /(^|\/)\*\*\/?$/, Xe = /^[^*?]*(?=\/[^/]*[*?])/; + function Jr(Pe, Ue, fr, De, gr) { + gr === void 0 && (gr = e.emptyArray), Ue = e.normalizePath(Ue); + var Vr = e.createGetCanonicalFileName(De.useCaseSensitiveFileNames), Tr = new e.Map(), vi = new e.Map(), Ui = new e.Map(), Yi = Pe.validatedFilesSpec, Wi = Pe.validatedIncludeSpecs, ct = Pe.validatedExcludeSpecs, Li = e.getSupportedExtensions(fr, gr), nt = e.getSupportedExtensionsWithJsonIfResolveJsonModule(fr, Li); + if (Yi) + for (var Mt = 0, xt = Yi; Mt < xt.length; Mt++) { + var ut = xt[Mt], Dt = e.getNormalizedAbsolutePath(ut, Ue); + Tr.set(Vr(Dt), Dt); + } + var Rt; + if (Wi && Wi.length > 0) + for (var Ii = function(wt) { + if (e.fileExtensionIs(wt, ".json")) { + if (!Rt) { + var na = Wi.filter(function(at) { + return e.endsWith(at, ".json"); + }), Ai = e.map(e.getRegularExpressionsForWildcards(na, Ue, "files"), function(at) { + return "^".concat(at, "$"); + }); + Rt = Ai ? Ai.map(function(at) { + return e.getRegexFromPattern(at, De.useCaseSensitiveFileNames); + }) : e.emptyArray; + } + var Oi = e.findIndex(Rt, function(at) { + return at.test(wt); + }); + if (Oi !== -1) { + var ji = Vr(wt); + !Tr.has(ji) && !Ui.has(ji) && Ui.set(ji, wt); + } + return "continue"; + } + if (mr(wt, Tr, vi, Li, Vr)) + return "continue"; + Ar(wt, vi, Li, Vr); + var Vi = Vr(wt); + !Tr.has(Vi) && !vi.has(Vi) && vi.set(Vi, wt); + }, Ki = 0, Fi = De.readDirectory(Ue, e.flatten(nt), ct, Wi, void 0); Ki < Fi.length; Ki++) { + var Dt = Fi[Ki]; + Ii(Dt); + } + var ui = e.arrayFrom(Tr.values()), Bt = e.arrayFrom(vi.values()); + return ui.concat(Bt, e.arrayFrom(Ui.values())); + } + e.getFileNamesFromConfigSpecs = Jr; + function ti(Pe, Ue, fr, De, gr) { + var Vr = Ue.validatedFilesSpec, Tr = Ue.validatedIncludeSpecs, vi = Ue.validatedExcludeSpecs; + if (!e.length(Tr) || !e.length(vi)) + return false; + fr = e.normalizePath(fr); + var Ui = e.createGetCanonicalFileName(De); + if (Vr) + for (var Yi = 0, Wi = Vr; Yi < Wi.length; Yi++) { + var ct = Wi[Yi]; + if (Ui(e.getNormalizedAbsolutePath(ct, fr)) === Pe) + return false; + } + return zr(Pe, vi, De, gr, fr); + } + e.isExcludedFile = ti; + function Ze(Pe) { + var Ue = e.startsWith(Pe, "**/") ? 0 : Pe.indexOf("/**/"); + if (Ue === -1) + return false; + var fr = e.endsWith(Pe, "/..") ? Pe.length : Pe.lastIndexOf("/../"); + return fr > Ue; + } + function Sr(Pe, Ue, fr, De) { + return zr(Pe, e.filter(Ue, function(gr) { + return !Ze(gr); + }), fr, De); + } + e.matchesExclude = Sr; + function zr(Pe, Ue, fr, De, gr) { + var Vr = e.getRegularExpressionForWildcard(Ue, e.combinePaths(e.normalizePath(De), gr), "exclude"), Tr = Vr && e.getRegexFromPattern(Vr, fr); + return Tr ? Tr.test(Pe) ? true : !e.hasExtension(Pe) && Tr.test(e.ensureTrailingDirectorySeparator(Pe)) : false; + } + function Wr(Pe, Ue, fr, De, gr) { + return Pe.filter(function(Tr) { + if (!e.isString(Tr)) + return false; + var vi = Je(Tr, fr); + return vi !== void 0 && Ue.push(Vr.apply(void 0, vi)), vi === void 0; + }); + function Vr(Tr, vi) { + var Ui = e.getTsConfigPropArrayElementValue(De, gr, vi); + return Ui ? e.createDiagnosticForNodeInSourceFile(De, Ui, Tr, vi) : e.createCompilerDiagnostic(Tr, vi); + } + } + function Je(Pe, Ue) { + if (Ue && ae.test(Pe)) + return [e.Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, Pe]; + if (Ze(Pe)) + return [e.Diagnostics.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0, Pe]; + } + function xe(Pe, Ue, fr) { + var De = Pe.validatedIncludeSpecs, gr = Pe.validatedExcludeSpecs, Vr = e.getRegularExpressionForWildcard(gr, Ue, "exclude"), Tr = Vr && new RegExp(Vr, fr ? "" : "i"), vi = {}; + if (De !== void 0) { + for (var Ui = [], Yi = 0, Wi = De; Yi < Wi.length; Yi++) { + var ct = Wi[Yi], Li = e.normalizePath(e.combinePaths(Ue, ct)); + if (!(Tr && Tr.test(Li))) { + var nt = vr(Li, fr); + if (nt) { + var Mt = nt.key, xt = nt.flags, ut = vi[Mt]; + (ut === void 0 || ut < xt) && (vi[Mt] = xt, xt === 1 && Ui.push(Mt)); + } + } + } + for (var Mt in vi) + if (e.hasProperty(vi, Mt)) + for (var Dt = 0, Rt = Ui; Dt < Rt.length; Dt++) { + var Ii = Rt[Dt]; + Mt !== Ii && e.containsPath(Ii, Mt, Ue, !fr) && delete vi[Mt]; + } + } + return vi; + } + function vr(Pe, Ue) { + var fr = Xe.exec(Pe); + if (fr) { + var De = Pe.indexOf("?"), gr = Pe.indexOf("*"), Vr = Pe.lastIndexOf(e.directorySeparator); + return { key: Ue ? fr[0] : e.toFileNameLowerCase(fr[0]), flags: De !== -1 && De < Vr || gr !== -1 && gr < Vr ? 1 : 0 }; + } + if (e.isImplicitGlob(Pe.substring(Pe.lastIndexOf(e.directorySeparator) + 1))) + return { key: Ue ? Pe : e.toFileNameLowerCase(Pe), flags: 1 }; + } + function mr(Pe, Ue, fr, De, gr) { + var Vr = e.forEach(De, function(Wi) { + return e.fileExtensionIsOneOf(Pe, Wi) ? Wi : void 0; + }); + if (!Vr) + return false; + for (var Tr = 0, vi = Vr; Tr < vi.length; Tr++) { + var Ui = vi[Tr]; + if (e.fileExtensionIs(Pe, Ui)) + return false; + var Yi = gr(e.changeExtension(Pe, Ui)); + if (Ue.has(Yi) || fr.has(Yi)) { + if (Ui === ".d.ts" && (e.fileExtensionIs(Pe, ".js") || e.fileExtensionIs(Pe, ".jsx"))) + continue; + return true; + } + } + return false; + } + function Ar(Pe, Ue, fr, De) { + var gr = e.forEach(fr, function(Ui) { + return e.fileExtensionIsOneOf(Pe, Ui) ? Ui : void 0; + }); + if (!!gr) + for (var Vr = gr.length - 1; Vr >= 0; Vr--) { + var Tr = gr[Vr]; + if (e.fileExtensionIs(Pe, Tr)) + return; + var vi = De(e.changeExtension(Pe, Tr)); + Ue.delete(vi); + } + } + function Oe(Pe) { + var Ue = {}; + for (var fr in Pe) + if (Pe.hasOwnProperty(fr)) { + var De = J(fr); + De !== void 0 && (Ue[fr] = nr(Pe[fr], De)); + } + return Ue; + } + e.convertCompilerOptionsForTelemetry = Oe; + function nr(Pe, Ue) { + switch (Ue.type) { + case "object": + return ""; + case "string": + return ""; + case "number": + return typeof Pe == "number" ? Pe : ""; + case "boolean": + return typeof Pe == "boolean" ? Pe : ""; + case "list": + var fr = Ue.element; + return e.isArray(Pe) ? Pe.map(function(De) { + return nr(De, fr); + }) : ""; + default: + return e.forEachEntry(Ue.type, function(De, gr) { + if (De === Pe) + return gr; + }); + } + } + function Mr(Pe) { + switch (Pe.type) { + case "number": + return 1; + case "boolean": + return true; + case "string": + var Ue = Pe.defaultValueDescription; + return Pe.isFilePath ? "./".concat(Ue && typeof Ue == "string" ? Ue : "") : ""; + case "list": + return []; + case "object": + return {}; + default: + var fr = Pe.type.keys().next(); + return fr.done ? e.Debug.fail("Expected 'option.type' to have entries.") : fr.value; + } + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(Ze) { + Ze.trace(e.formatMessage.apply(void 0, arguments)); + } + e.trace = a; + function C(Ze, Sr) { + return !!Ze.traceResolution && Sr.trace !== void 0; + } + e.isTraceEnabled = C; + function w(Ze, Sr) { + var zr; + if (Sr && Ze) { + var Wr = Ze.packageJsonContent; + typeof Wr.name == "string" && typeof Wr.version == "string" && (zr = { name: Wr.name, subModuleName: Sr.path.slice(Ze.packageDirectory.length + e.directorySeparator.length), version: Wr.version }); + } + return Sr && { path: Sr.path, extension: Sr.ext, packageId: zr }; + } + function B(Ze) { + return w(void 0, Ze); + } + function E(Ze) { + if (Ze) + return e.Debug.assert(Ze.packageId === void 0), { path: Ze.path, ext: Ze.extension }; + } + var Q; + (function(Ze) { + Ze[Ze.TypeScript = 0] = "TypeScript", Ze[Ze.JavaScript = 1] = "JavaScript", Ze[Ze.Json = 2] = "Json", Ze[Ze.TSConfig = 3] = "TSConfig", Ze[Ze.DtsOnly = 4] = "DtsOnly", Ze[Ze.TsOnly = 5] = "TsOnly"; + })(Q || (Q = {})); + function le(Ze) { + if (!!Ze) + return e.Debug.assert(e.extensionIsTS(Ze.extension)), { fileName: Ze.path, packageId: Ze.packageId }; + } + function N(Ze, Sr, zr, Wr, Je) { + var xe; + return Je ? ((xe = Je.failedLookupLocations).push.apply(xe, zr), Je) : { resolvedModule: Ze && { resolvedFileName: Ze.path, originalPath: Ze.originalPath === true ? void 0 : Ze.originalPath, extension: Ze.extension, isExternalLibraryImport: Sr, packageId: Ze.packageId }, failedLookupLocations: zr, resolutionDiagnostics: Wr }; + } + function p(Ze, Sr, zr, Wr) { + if (!e.hasProperty(Ze, Sr)) { + Wr.traceEnabled && a(Wr.host, e.Diagnostics.package_json_does_not_have_a_0_field, Sr); + return; + } + var Je = Ze[Sr]; + if (typeof Je !== zr || Je === null) { + Wr.traceEnabled && a(Wr.host, e.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_1_got_2, Sr, zr, Je === null ? "null" : typeof Je); + return; + } + return Je; + } + function m(Ze, Sr, zr, Wr) { + var Je = p(Ze, Sr, "string", Wr); + if (Je !== void 0) { + if (!Je) { + Wr.traceEnabled && a(Wr.host, e.Diagnostics.package_json_had_a_falsy_0_field, Sr); + return; + } + var xe = e.normalizePath(e.combinePaths(zr, Je)); + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.package_json_has_0_field_1_that_references_2, Sr, Je, xe), xe; + } + } + function G(Ze, Sr, zr) { + return m(Ze, "typings", Sr, zr) || m(Ze, "types", Sr, zr); + } + function oe(Ze, Sr, zr) { + return m(Ze, "tsconfig", Sr, zr); + } + function f(Ze, Sr, zr) { + return m(Ze, "main", Sr, zr); + } + function T(Ze, Sr) { + var zr = p(Ze, "typesVersions", "object", Sr); + if (zr !== void 0) + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_has_a_typesVersions_field_with_version_specific_path_mappings), zr; + } + function K(Ze, Sr) { + var zr = T(Ze, Sr); + if (zr !== void 0) { + if (Sr.traceEnabled) + for (var Wr in zr) + e.hasProperty(zr, Wr) && !e.VersionRange.tryParse(Wr) && a(Sr.host, e.Diagnostics.package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range, Wr); + var Je = se(zr); + if (!Je) { + Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_does_not_have_a_typesVersions_entry_that_matches_version_0, e.versionMajorMinor); + return; + } + var xe = Je.version, vr = Je.paths; + if (typeof vr != "object") { + Sr.traceEnabled && a(Sr.host, e.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_1_got_2, "typesVersions['".concat(xe, "']"), "object", typeof vr); + return; + } + return Je; + } + } + var b; + function se(Ze) { + b || (b = new e.Version(e.version)); + for (var Sr in Ze) + if (!!e.hasProperty(Ze, Sr)) { + var zr = e.VersionRange.tryParse(Sr); + if (zr !== void 0 && zr.test(b)) + return { version: Sr, paths: Ze[Sr] }; + } + } + e.getPackageJsonTypesVersionsPaths = se; + function J(Ze, Sr) { + if (Ze.typeRoots) + return Ze.typeRoots; + var zr; + if (Ze.configFilePath ? zr = e.getDirectoryPath(Ze.configFilePath) : Sr.getCurrentDirectory && (zr = Sr.getCurrentDirectory()), zr !== void 0) + return ie(zr, Sr); + } + e.getEffectiveTypeRoots = J; + function ie(Ze, Sr) { + if (!Sr.directoryExists) + return [e.combinePaths(Ze, R)]; + var zr; + return e.forEachAncestorDirectory(e.normalizePath(Ze), function(Wr) { + var Je = e.combinePaths(Wr, R); + Sr.directoryExists(Je) && (zr || (zr = [])).push(Je); + }), zr; + } + var R = e.combinePaths("node_modules", "@types"); + function q(Ze, Sr, zr) { + var Wr = typeof zr.useCaseSensitiveFileNames == "function" ? zr.useCaseSensitiveFileNames() : zr.useCaseSensitiveFileNames; + return e.comparePaths(Ze, Sr, !Wr) === 0; + } + function O(Ze, Sr, zr, Wr, Je, xe, vr) { + e.Debug.assert(typeof Ze == "string", "Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself."); + var mr = C(zr, Wr); + Je && (zr = Je.commandLine.options); + var Ar = Sr ? e.getDirectoryPath(Sr) : void 0, Oe = Ar ? xe && xe.getOrCreateCacheForDirectory(Ar, Je) : void 0, nr = Oe && Oe.get(Ze, vr); + if (nr) + return mr && (a(Wr, e.Diagnostics.Resolving_type_reference_directive_0_containing_file_1, Ze, Sr), Je && a(Wr, e.Diagnostics.Using_compiler_options_of_project_reference_redirect_0, Je.sourceFile.fileName), a(Wr, e.Diagnostics.Resolution_for_type_reference_directive_0_was_found_in_cache_from_location_1, Ze, Ar), ct(nr)), nr; + var Mr = J(zr, Wr); + mr && (Sr === void 0 ? Mr === void 0 ? a(Wr, e.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set, Ze) : a(Wr, e.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, Ze, Mr) : Mr === void 0 ? a(Wr, e.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set, Ze, Sr) : a(Wr, e.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, Ze, Sr, Mr), Je && a(Wr, e.Diagnostics.Using_compiler_options_of_project_reference_redirect_0, Je.sourceFile.fileName)); + var Pe = [], Ue = ve(zr); + vr === e.ModuleKind.ESNext && (e.getEmitModuleResolutionKind(zr) === e.ModuleResolutionKind.Node16 || e.getEmitModuleResolutionKind(zr) === e.ModuleResolutionKind.NodeNext) && (Ue |= d.EsmMode); + var fr = Ue & d.Exports ? Ue & d.EsmMode ? ["node", "import", "types"] : ["node", "require", "types"] : [], De = [], gr = { compilerOptions: zr, host: Wr, traceEnabled: mr, failedLookupLocations: Pe, packageJsonInfoCache: xe, features: Ue, conditions: fr, requestContainingDirectory: Ar, reportDiagnostic: function(Mt) { + return void De.push(Mt); + } }, Vr = Li(), Tr = true; + Vr || (Vr = nt(), Tr = false); + var vi; + if (Vr) { + var Ui = Vr.fileName, Yi = Vr.packageId, Wi = zr.preserveSymlinks ? Ui : ze(Ui, Wr, mr); + vi = { primary: Tr, resolvedFileName: Wi, originalPath: q(Ui, Wi, Wr) ? void 0 : Ui, packageId: Yi, isExternalLibraryImport: He(Ui) }; + } + return nr = { resolvedTypeReferenceDirective: vi, failedLookupLocations: Pe, resolutionDiagnostics: De }, Oe == null || Oe.set(Ze, vr, nr), mr && ct(nr), nr; + function ct(Mt) { + var xt; + !((xt = Mt.resolvedTypeReferenceDirective) === null || xt === void 0) && xt.resolvedFileName ? Mt.resolvedTypeReferenceDirective.packageId ? a(Wr, e.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3, Ze, Mt.resolvedTypeReferenceDirective.resolvedFileName, e.packageIdToString(Mt.resolvedTypeReferenceDirective.packageId), Mt.resolvedTypeReferenceDirective.primary) : a(Wr, e.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, Ze, Mt.resolvedTypeReferenceDirective.resolvedFileName, Mt.resolvedTypeReferenceDirective.primary) : a(Wr, e.Diagnostics.Type_reference_directive_0_was_not_resolved, Ze); + } + function Li() { + if (Mr && Mr.length) + return mr && a(Wr, e.Diagnostics.Resolving_with_primary_search_path_0, Mr.join(", ")), e.firstDefined(Mr, function(Mt) { + var xt = e.combinePaths(Mt, Ze), ut = e.getDirectoryPath(xt), Dt = e.directoryProbablyExists(ut, Wr); + return !Dt && mr && a(Wr, e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, ut), le(Cr(Q.DtsOnly, xt, !Dt, gr)); + }); + mr && a(Wr, e.Diagnostics.Root_directory_cannot_be_determined_skipping_primary_search_paths); + } + function nt() { + var Mt = Sr && e.getDirectoryPath(Sr); + if (Mt !== void 0) { + mr && a(Wr, e.Diagnostics.Looking_up_in_node_modules_folder_initial_location_0, Mt); + var xt; + if (e.isExternalModuleNameRelative(Ze)) { + var Dt = Re(Mt, Ze).path; + xt = Ee(Q.DtsOnly, Dt, false, gr, true); + } else { + var ut = or(Q.DtsOnly, Ze, Mt, gr, void 0, void 0); + xt = ut && ut.value; + } + return le(xt); + } else + mr && a(Wr, e.Diagnostics.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder); + } + } + e.resolveTypeReferenceDirective = O; + function ve(Ze) { + return e.getEmitModuleResolutionKind(Ze) === e.ModuleResolutionKind.Node16 ? d.Node16Default : e.getEmitModuleResolutionKind(Ze) === e.ModuleResolutionKind.NodeNext ? d.NodeNextDefault : d.None; + } + function ee(Ze, Sr, zr, Wr, Je) { + var xe = { compilerOptions: zr, host: Wr, traceEnabled: C(zr, Wr), failedLookupLocations: [], packageJsonInfoCache: Je == null ? void 0 : Je.getPackageJsonInfoCache(), conditions: e.emptyArray, features: d.None, requestContainingDirectory: Sr, reportDiagnostic: e.noop }; + return e.forEachAncestorDirectory(Sr, function(vr) { + if (e.getBaseFileName(vr) !== "node_modules") { + var mr = e.combinePaths(vr, "node_modules"), Ar = e.combinePaths(mr, Ze); + return Ne(Ar, false, xe); + } + }); + } + e.resolvePackageNameToPackageJson = ee; + function he(Ze, Sr) { + if (Ze.types) + return Ze.types; + var zr = []; + if (Sr.directoryExists && Sr.getDirectories) { + var Wr = J(Ze, Sr); + if (Wr) + for (var Je = 0, xe = Wr; Je < xe.length; Je++) { + var vr = xe[Je]; + if (Sr.directoryExists(vr)) + for (var mr = 0, Ar = Sr.getDirectories(vr); mr < Ar.length; mr++) { + var Oe = Ar[mr], nr = e.normalizePath(Oe), Mr = e.combinePaths(vr, nr, "package.json"), Pe = Sr.fileExists(Mr) && e.readJson(Mr, Sr).typings === null; + if (!Pe) { + var Ue = e.getBaseFileName(nr); + Ue.charCodeAt(0) !== 46 && zr.push(Ue); + } + } + } + } + return zr; + } + e.getAutomaticTypeDirectiveNames = he; + function F(Ze) { + var Sr = new e.Map(), zr = new e.Map(); + return { getOwnMap: Wr, redirectsMap: zr, getOrCreateMapOfCacheRedirects: vr, clear: mr, setOwnOptions: Je, setOwnMap: xe }; + function Wr() { + return Sr; + } + function Je(Ar) { + Ze = Ar; + } + function xe(Ar) { + Sr = Ar; + } + function vr(Ar) { + if (!Ar) + return Sr; + var Oe = Ar.sourceFile.path, nr = zr.get(Oe); + return nr || (nr = !Ze || e.optionsHaveModuleResolutionChanges(Ze, Ar.commandLine.options) ? new e.Map() : Sr, zr.set(Oe, nr)), nr; + } + function mr() { + Sr.clear(), zr.clear(); + } + } + e.createCacheWithRedirects = F; + function x(Ze, Sr) { + var zr; + return { getPackageJsonInfo: Wr, setPackageJsonInfo: Je, clear: xe, entries: vr }; + function Wr(mr) { + return zr == null ? void 0 : zr.get(e.toPath(mr, Ze, Sr)); + } + function Je(mr, Ar) { + (zr || (zr = new e.Map())).set(e.toPath(mr, Ze, Sr), Ar); + } + function xe() { + zr = void 0; + } + function vr() { + var mr = zr == null ? void 0 : zr.entries(); + return mr ? e.arrayFrom(mr) : []; + } + } + function X(Ze, Sr, zr, Wr) { + var Je = Ze.getOrCreateMapOfCacheRedirects(Sr), xe = Je.get(zr); + return xe || (xe = Wr(), Je.set(zr, xe)), xe; + } + function $(Ze, Sr, zr) { + if (!!Ze.configFile) { + if (Sr.redirectsMap.size === 0) + e.Debug.assert(!zr || zr.redirectsMap.size === 0), e.Debug.assert(Sr.getOwnMap().size === 0), e.Debug.assert(!zr || zr.getOwnMap().size === 0), Sr.redirectsMap.set(Ze.configFile.path, Sr.getOwnMap()), zr == null || zr.redirectsMap.set(Ze.configFile.path, zr.getOwnMap()); + else { + e.Debug.assert(!zr || zr.redirectsMap.size > 0); + var Wr = { sourceFile: Ze.configFile, commandLine: { options: Ze } }; + Sr.setOwnMap(Sr.getOrCreateMapOfCacheRedirects(Wr)), zr == null || zr.setOwnMap(zr.getOrCreateMapOfCacheRedirects(Wr)); + } + Sr.setOwnOptions(Ze), zr == null || zr.setOwnOptions(Ze); + } + } + function A(Ze, Sr, zr) { + return { getOrCreateCacheForDirectory: xe, clear: Wr, update: Je }; + function Wr() { + zr.clear(); + } + function Je(vr) { + $(vr, zr); + } + function xe(vr, mr) { + var Ar = e.toPath(vr, Ze, Sr); + return X(zr, mr, Ar, function() { + return y(); + }); + } + } + function y() { + var Ze = new e.Map(), Sr = new e.Map(), zr = { get: function(Je, xe) { + return Ze.get(Wr(Je, xe)); + }, set: function(Je, xe, vr) { + return Ze.set(Wr(Je, xe), vr), zr; + }, delete: function(Je, xe) { + return Ze.delete(Wr(Je, xe)), zr; + }, has: function(Je, xe) { + return Ze.has(Wr(Je, xe)); + }, forEach: function(Je) { + return Ze.forEach(function(xe, vr) { + var mr = Sr.get(vr), Ar = mr[0], Oe = mr[1]; + return Je(xe, Ar, Oe); + }); + }, size: function() { + return Ze.size; + } }; + return zr; + function Wr(Je, xe) { + var vr = xe === void 0 ? Je : "".concat(xe, "|").concat(Je); + return Sr.set(vr, [Je, xe]), vr; + } + } + e.createModeAwareCache = y; + function V(Ze, Sr, zr) { + e.Debug.assert(Sr.length === zr.length); + for (var Wr = y(), Je = 0; Je < Sr.length; ++Je) { + var xe = Sr[Je], vr = e.isString(xe) ? xe : xe.fileName.toLowerCase(), mr = e.isString(xe) ? e.getModeForResolutionAtIndex(Ze, Je) : xe.resolutionMode || Ze.impliedNodeFormat; + Wr.set(vr, mr, zr[Je]); + } + return Wr; + } + e.zipToModeAwareCache = V; + function L(Ze, Sr, zr, Wr, Je) { + var xe = A(Ze, Sr, Wr || (Wr = F(zr))); + Je || (Je = F(zr)); + var vr = x(Ze, Sr); + return Ke(Ke(Ke({}, vr), xe), { getOrCreateCacheForModuleName: Oe, clear: mr, update: Ar, getPackageJsonInfoCache: function() { + return vr; + } }); + function mr() { + xe.clear(), Je.clear(), vr.clear(); + } + function Ar(Mr) { + $(Mr, Wr, Je); + } + function Oe(Mr, Pe, Ue) { + return e.Debug.assert(!e.isExternalModuleNameRelative(Mr)), X(Je, Ue, Pe === void 0 ? Mr : "".concat(Pe, "|").concat(Mr), nr); + } + function nr() { + var Mr = new e.Map(); + return { get: Pe, set: Ue }; + function Pe(De) { + return Mr.get(e.toPath(De, Ze, Sr)); + } + function Ue(De, gr) { + var Vr = e.toPath(De, Ze, Sr); + if (!Mr.has(Vr)) { + Mr.set(Vr, gr); + for (var Tr = gr.resolvedModule && (gr.resolvedModule.originalPath || gr.resolvedModule.resolvedFileName), vi = Tr && fr(Vr, Tr), Ui = Vr; Ui !== vi; ) { + var Yi = e.getDirectoryPath(Ui); + if (Yi === Ui || Mr.has(Yi)) + break; + Mr.set(Yi, gr), Ui = Yi; + } + } + } + function fr(De, gr) { + for (var Vr = e.toPath(e.getDirectoryPath(gr), Ze, Sr), Tr = 0, vi = Math.min(De.length, Vr.length); Tr < vi && De.charCodeAt(Tr) === Vr.charCodeAt(Tr); ) + Tr++; + if (Tr === De.length && (Vr.length === Tr || Vr[Tr] === e.directorySeparator)) + return De; + var Ui = e.getRootLength(De); + if (!(Tr < Ui)) { + var Yi = De.lastIndexOf(e.directorySeparator, Tr - 1); + if (Yi !== -1) + return De.substr(0, Math.max(Yi, Ui)); + } + } + } + } + e.createModuleResolutionCache = L; + function P(Ze, Sr, zr, Wr, Je) { + var xe = A(Ze, Sr, Je || (Je = F(zr))); + return Wr || (Wr = x(Ze, Sr)), Ke(Ke(Ke({}, Wr), xe), { clear: vr }); + function vr() { + xe.clear(), Wr.clear(); + } + } + e.createTypeReferenceDirectiveResolutionCache = P; + function k(Ze, Sr, zr, Wr) { + var Je = e.getDirectoryPath(Sr), xe = zr && zr.getOrCreateCacheForDirectory(Je); + if (!!xe) + return xe.get(Ze, Wr); + } + e.resolveModuleNameFromCache = k; + function Y(Ze, Sr, zr, Wr, Je, xe, vr) { + var mr = C(zr, Wr); + xe && (zr = xe.commandLine.options), mr && (a(Wr, e.Diagnostics.Resolving_module_0_from_1, Ze, Sr), xe && a(Wr, e.Diagnostics.Using_compiler_options_of_project_reference_redirect_0, xe.sourceFile.fileName)); + var Ar = e.getDirectoryPath(Sr), Oe = Je && Je.getOrCreateCacheForDirectory(Ar, xe), nr = Oe && Oe.get(Ze, vr); + if (nr) + mr && a(Wr, e.Diagnostics.Resolution_for_module_0_was_found_in_cache_from_location_1, Ze, Ar); + else { + var Mr = zr.moduleResolution; + if (Mr === void 0) { + switch (e.getEmitModuleKind(zr)) { + case e.ModuleKind.CommonJS: + Mr = e.ModuleResolutionKind.NodeJs; + break; + case e.ModuleKind.Node16: + Mr = e.ModuleResolutionKind.Node16; + break; + case e.ModuleKind.NodeNext: + Mr = e.ModuleResolutionKind.NodeNext; + break; + default: + Mr = e.ModuleResolutionKind.Classic; + break; + } + mr && a(Wr, e.Diagnostics.Module_resolution_kind_is_not_specified_using_0, e.ModuleResolutionKind[Mr]); + } else + mr && a(Wr, e.Diagnostics.Explicitly_specified_module_resolution_kind_Colon_0, e.ModuleResolutionKind[Mr]); + switch (e.perfLogger.logStartResolveModule(Ze), Mr) { + case e.ModuleResolutionKind.Node16: + nr = D(Ze, Sr, zr, Wr, Je, xe, vr); + break; + case e.ModuleResolutionKind.NodeNext: + nr = fe(Ze, Sr, zr, Wr, Je, xe, vr); + break; + case e.ModuleResolutionKind.NodeJs: + nr = Be(Ze, Sr, zr, Wr, Je, xe); + break; + case e.ModuleResolutionKind.Classic: + nr = Xe(Ze, Sr, zr, Wr, Je, xe); + break; + default: + return e.Debug.fail("Unexpected moduleResolution: ".concat(Mr)); + } + nr && nr.resolvedModule && e.perfLogger.logInfoEvent('Module "'.concat(Ze, '" resolved to "').concat(nr.resolvedModule.resolvedFileName, '"')), e.perfLogger.logStopResolveModule(nr && nr.resolvedModule ? "" + nr.resolvedModule.resolvedFileName : "null"), Oe && (Oe.set(Ze, vr, nr), e.isExternalModuleNameRelative(Ze) || Je.getOrCreateCacheForModuleName(Ze, vr, xe).set(Ar, nr)); + } + return mr && (nr.resolvedModule ? nr.resolvedModule.packageId ? a(Wr, e.Diagnostics.Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2, Ze, nr.resolvedModule.resolvedFileName, e.packageIdToString(nr.resolvedModule.packageId)) : a(Wr, e.Diagnostics.Module_name_0_was_successfully_resolved_to_1, Ze, nr.resolvedModule.resolvedFileName) : a(Wr, e.Diagnostics.Module_name_0_was_not_resolved, Ze)), nr; + } + e.resolveModuleName = Y; + function U(Ze, Sr, zr, Wr, Je) { + var xe = j(Ze, Sr, Wr, Je); + return xe ? xe.value : e.isExternalModuleNameRelative(Sr) ? H(Ze, Sr, zr, Wr, Je) : I(Ze, Sr, Wr, Je); + } + function j(Ze, Sr, zr, Wr) { + var Je, xe = Wr.compilerOptions, vr = xe.baseUrl, mr = xe.paths, Ar = xe.configFile; + if (mr && !e.pathIsRelative(Sr)) { + Wr.traceEnabled && (vr && a(Wr.host, e.Diagnostics.baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1, vr, Sr), a(Wr.host, e.Diagnostics.paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0, Sr)); + var Oe = e.getPathsBasePath(Wr.compilerOptions, Wr.host), nr = Ar != null && Ar.configFileSpecs ? (Je = Ar.configFileSpecs).pathPatterns || (Je.pathPatterns = e.tryParsePatterns(mr)) : void 0; + return Xi(Ze, Sr, Oe, mr, nr, zr, false, Wr); + } + } + function H(Ze, Sr, zr, Wr, Je) { + if (!!Je.compilerOptions.rootDirs) { + Je.traceEnabled && a(Je.host, e.Diagnostics.rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0, Sr); + for (var xe = e.normalizePath(e.combinePaths(zr, Sr)), vr, mr, Ar = 0, Oe = Je.compilerOptions.rootDirs; Ar < Oe.length; Ar++) { + var nr = Oe[Ar], Mr = e.normalizePath(nr); + e.endsWith(Mr, e.directorySeparator) || (Mr += e.directorySeparator); + var Pe = e.startsWith(xe, Mr) && (mr === void 0 || mr.length < Mr.length); + Je.traceEnabled && a(Je.host, e.Diagnostics.Checking_if_0_is_the_longest_matching_prefix_for_1_2, Mr, xe, Pe), Pe && (mr = Mr, vr = nr); + } + if (mr) { + Je.traceEnabled && a(Je.host, e.Diagnostics.Longest_matching_prefix_for_0_is_1, xe, mr); + var Ue = xe.substr(mr.length); + Je.traceEnabled && a(Je.host, e.Diagnostics.Loading_0_from_the_root_dir_1_candidate_location_2, Ue, mr, xe); + var fr = Wr(Ze, xe, !e.directoryProbablyExists(zr, Je.host), Je); + if (fr) + return fr; + Je.traceEnabled && a(Je.host, e.Diagnostics.Trying_other_entries_in_rootDirs); + for (var De = 0, gr = Je.compilerOptions.rootDirs; De < gr.length; De++) { + var nr = gr[De]; + if (nr !== vr) { + var Vr = e.combinePaths(e.normalizePath(nr), Ue); + Je.traceEnabled && a(Je.host, e.Diagnostics.Loading_0_from_the_root_dir_1_candidate_location_2, Ue, nr, Vr); + var Tr = e.getDirectoryPath(Vr), vi = Wr(Ze, Vr, !e.directoryProbablyExists(Tr, Je.host), Je); + if (vi) + return vi; + } + } + Je.traceEnabled && a(Je.host, e.Diagnostics.Module_resolution_using_rootDirs_has_failed); + } + } + } + function I(Ze, Sr, zr, Wr) { + var Je = Wr.compilerOptions.baseUrl; + if (!!Je) { + Wr.traceEnabled && a(Wr.host, e.Diagnostics.baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1, Je, Sr); + var xe = e.normalizePath(e.combinePaths(Je, Sr)); + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.Resolving_module_name_0_relative_to_base_url_1_2, Sr, Je, xe), zr(Ze, xe, !e.directoryProbablyExists(e.getDirectoryPath(xe), Wr.host), Wr); + } + } + function l(Ze, Sr, zr) { + var Wr = Z(Ze, Sr, zr), Je = Wr.resolvedModule, xe = Wr.failedLookupLocations; + if (!Je) + throw new Error("Could not resolve JS module '".concat(Ze, "' starting at '").concat(Sr, "'. Looked in: ").concat(xe.join(", "))); + return Je.resolvedFileName; + } + e.resolveJSModule = l; + var d; + (function(Ze) { + Ze[Ze.None = 0] = "None", Ze[Ze.Imports = 2] = "Imports", Ze[Ze.SelfName = 4] = "SelfName", Ze[Ze.Exports = 8] = "Exports", Ze[Ze.ExportsPatternTrailers = 16] = "ExportsPatternTrailers", Ze[Ze.AllFeatures = 30] = "AllFeatures", Ze[Ze.Node16Default = 30] = "Node16Default", Ze[Ze.NodeNextDefault = 30] = "NodeNextDefault", Ze[Ze.EsmMode = 32] = "EsmMode"; + })(d || (d = {})); + function D(Ze, Sr, zr, Wr, Je, xe, vr) { + return g(d.Node16Default, Ze, Sr, zr, Wr, Je, xe, vr); + } + function fe(Ze, Sr, zr, Wr, Je, xe, vr) { + return g(d.NodeNextDefault, Ze, Sr, zr, Wr, Je, xe, vr); + } + function g(Ze, Sr, zr, Wr, Je, xe, vr, mr) { + var Ar = e.getDirectoryPath(zr), Oe = mr === e.ModuleKind.ESNext ? d.EsmMode : 0; + return ge(Ze | Oe, Sr, Ar, Wr, Je, xe, Wr.resolveJsonModule ? We : ue, vr); + } + var ne = [Q.JavaScript], ue = [Q.TypeScript, Q.JavaScript], We = Ve(Ve([], ue, true), [Q.Json], false), Fe = [Q.TSConfig]; + function Z(Ze, Sr, zr) { + return ge(d.None, Ze, Sr, { moduleResolution: e.ModuleResolutionKind.NodeJs, allowJs: true }, zr, void 0, ne, void 0); + } + function Be(Ze, Sr, zr, Wr, Je, xe, vr) { + var mr; + return vr ? mr = Fe : zr.noDtsResolution ? (mr = [Q.TsOnly], zr.allowJs && mr.push(Q.JavaScript), zr.resolveJsonModule && mr.push(Q.Json)) : mr = zr.resolveJsonModule ? We : ue, ge(d.None, Ze, e.getDirectoryPath(Sr), zr, Wr, Je, mr, xe); + } + e.nodeModuleNameResolver = Be; + function ge(Ze, Sr, zr, Wr, Je, xe, vr, mr) { + var Ar, Oe, nr = C(Wr, Je), Mr = [], Pe = Ze & d.EsmMode ? ["node", "import", "types"] : ["node", "require", "types"]; + Wr.noDtsResolution && Pe.pop(); + var Ue = [], fr = { compilerOptions: Wr, host: Je, traceEnabled: nr, failedLookupLocations: Mr, packageJsonInfoCache: xe, features: Ze, conditions: Pe, requestContainingDirectory: zr, reportDiagnostic: function(Vr) { + return void Ue.push(Vr); + } }, De = e.forEach(vr, function(Vr) { + return gr(Vr); + }); + return N((Ar = De == null ? void 0 : De.value) === null || Ar === void 0 ? void 0 : Ar.resolved, (Oe = De == null ? void 0 : De.value) === null || Oe === void 0 ? void 0 : Oe.isExternalLibraryImport, Mr, Ue, fr.resultFromCache); + function gr(Vr) { + var Tr = function(ut, Dt, Rt, Ii) { + return Ee(ut, Dt, Rt, Ii, true); + }, vi = U(Vr, Sr, zr, Tr, fr); + if (vi) + return ti({ resolved: vi, isExternalLibraryImport: He(vi.path) }); + if (e.isExternalModuleNameRelative(Sr)) { + var Li = Re(zr, Sr), nt = Li.path, Mt = Li.parts, xt = Ee(Vr, nt, false, fr, true); + return xt && ti({ resolved: xt, isExternalLibraryImport: e.contains(Mt, "node_modules") }); + } else { + var Ui; + if (Ze & d.Imports && e.startsWith(Sr, "#") && (Ui = Ur(Vr, Sr, zr, fr, xe, mr)), !Ui && Ze & d.SelfName && (Ui = Ir(Vr, Sr, zr, fr, xe, mr)), Ui || (nr && a(Je, e.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1, Sr, Q[Vr]), Ui = or(Vr, Sr, zr, fr, xe, mr)), !Ui) + return; + var Yi = Ui.value; + if (!Wr.preserveSymlinks && Yi && !Yi.originalPath) { + var Wi = ze(Yi.path, Je, nr), ct = q(Wi, Yi.path, Je) ? void 0 : Yi.path; + Yi = Ke(Ke({}, Yi), { path: Wi, originalPath: ct }); + } + return { value: Yi && { resolved: Yi, isExternalLibraryImport: true } }; + } + } + } + function Re(Ze, Sr) { + var zr = e.combinePaths(Ze, Sr), Wr = e.getPathComponents(zr), Je = e.lastOrUndefined(Wr), xe = Je === "." || Je === ".." ? e.ensureTrailingDirectorySeparator(e.normalizePath(zr)) : e.normalizePath(zr); + return { path: xe, parts: Wr }; + } + function ze(Ze, Sr, zr) { + if (!Sr.realpath) + return Ze; + var Wr = e.normalizePath(Sr.realpath(Ze)); + return zr && a(Sr, e.Diagnostics.Resolving_real_path_for_0_result_1, Ze, Wr), e.Debug.assert(Sr.fileExists(Wr), "".concat(Ze, " linked to nonexistent file ").concat(Wr)), Wr; + } + function Ee(Ze, Sr, zr, Wr, Je) { + if (Wr.traceEnabled && a(Wr.host, e.Diagnostics.Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1, Sr, Q[Ze]), !e.hasTrailingDirectorySeparator(Sr)) { + if (!zr) { + var xe = e.getDirectoryPath(Sr); + e.directoryProbablyExists(xe, Wr.host) || (Wr.traceEnabled && a(Wr.host, e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, xe), zr = true); + } + var vr = we(Ze, Sr, zr, Wr); + if (vr) { + var mr = Je ? rr(vr.path) : void 0, Ar = mr ? Ne(mr, false, Wr) : void 0; + return w(Ar, vr); + } + } + if (!zr) { + var Oe = e.directoryProbablyExists(Sr, Wr.host); + Oe || (Wr.traceEnabled && a(Wr.host, e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, Sr), zr = true); + } + if (!(Wr.features & d.EsmMode)) + return Cr(Ze, Sr, zr, Wr, Je); + } + e.nodeModulesPathPart = "/node_modules/"; + function He(Ze) { + return e.stringContains(Ze, e.nodeModulesPathPart); + } + e.pathContainsNodeModules = He; + function rr(Ze) { + var Sr = e.normalizePath(Ze), zr = Sr.lastIndexOf(e.nodeModulesPathPart); + if (zr !== -1) { + var Wr = zr + e.nodeModulesPathPart.length, Je = Ie(Sr, Wr); + return Sr.charCodeAt(Wr) === 64 && (Je = Ie(Sr, Je)), Sr.slice(0, Je); + } + } + e.parseNodeModuleFromPath = rr; + function Ie(Ze, Sr) { + var zr = Ze.indexOf(e.directorySeparator, Sr + 1); + return zr === -1 ? Sr : zr; + } + function _e(Ze, Sr, zr, Wr) { + return B(we(Ze, Sr, zr, Wr)); + } + function we(Ze, Sr, zr, Wr) { + if (Ze === Q.Json || Ze === Q.TSConfig) { + var Je = e.tryRemoveExtension(Sr, ".json"), xe = Je ? Sr.substring(Je.length) : ""; + return Je === void 0 && Ze === Q.Json ? void 0 : Ae(Je || Sr, Ze, xe, zr, Wr); + } + if (!(Wr.features & d.EsmMode)) { + var vr = Ae(Sr, Ze, "", zr, Wr); + if (vr) + return vr; + } + return de(Ze, Sr, zr, Wr); + } + function de(Ze, Sr, zr, Wr) { + if (e.hasJSFileExtension(Sr) || e.fileExtensionIs(Sr, ".json") && Wr.compilerOptions.resolveJsonModule) { + var Je = e.removeFileExtension(Sr), xe = Sr.substring(Je.length); + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.File_name_0_has_a_1_extension_stripping_it, Sr, xe), Ae(Je, Ze, xe, zr, Wr); + } + } + function ye(Ze, Sr, zr, Wr) { + if ((Ze === Q.TypeScript || Ze === Q.DtsOnly) && e.fileExtensionIsOneOf(Sr, e.supportedTSExtensionsFlat)) { + var Je = er(Sr, zr, Wr); + return Je !== void 0 ? { path: Sr, ext: e.tryExtractTSExtension(Sr) } : void 0; + } + return de(Ze, Sr, zr, Wr); + } + function Ae(Ze, Sr, zr, Wr, Je) { + if (!Wr) { + var xe = e.getDirectoryPath(Ze); + xe && (Wr = !e.directoryProbablyExists(xe, Je.host)); + } + switch (Sr) { + case Q.DtsOnly: + switch (zr) { + case ".mjs": + case ".mts": + case ".d.mts": + return mr(".d.mts"); + case ".cjs": + case ".cts": + case ".d.cts": + return mr(".d.cts"); + case ".json": + return Ze += ".json", mr(".d.ts"); + default: + return mr(".d.ts"); + } + case Q.TypeScript: + case Q.TsOnly: + var vr = Sr === Q.TypeScript; + switch (zr) { + case ".mjs": + case ".mts": + case ".d.mts": + return mr(".mts") || (vr ? mr(".d.mts") : void 0); + case ".cjs": + case ".cts": + case ".d.cts": + return mr(".cts") || (vr ? mr(".d.cts") : void 0); + case ".json": + return Ze += ".json", vr ? mr(".d.ts") : void 0; + default: + return mr(".ts") || mr(".tsx") || (vr ? mr(".d.ts") : void 0); + } + case Q.JavaScript: + switch (zr) { + case ".mjs": + case ".mts": + case ".d.mts": + return mr(".mjs"); + case ".cjs": + case ".cts": + case ".d.cts": + return mr(".cjs"); + case ".json": + return mr(".json"); + default: + return mr(".js") || mr(".jsx"); + } + case Q.TSConfig: + case Q.Json: + return mr(".json"); + } + function mr(Ar) { + var Oe = er(Ze + Ar, Wr, Je); + return Oe === void 0 ? void 0 : { path: Oe, ext: Ar }; + } + } + function er(Ze, Sr, zr) { + var Wr, Je; + if (!(!((Wr = zr.compilerOptions.moduleSuffixes) === null || Wr === void 0) && Wr.length)) + return ir(Ze, Sr, zr); + var xe = (Je = e.tryGetExtensionFromPath(Ze)) !== null && Je !== void 0 ? Je : "", vr = xe ? e.removeExtension(Ze, xe) : Ze; + return e.forEach(zr.compilerOptions.moduleSuffixes, function(mr) { + return ir(vr + mr + xe, Sr, zr); + }); + } + function ir(Ze, Sr, zr) { + if (!Sr) { + if (zr.host.fileExists(Ze)) + return zr.traceEnabled && a(zr.host, e.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result, Ze), Ze; + zr.traceEnabled && a(zr.host, e.Diagnostics.File_0_does_not_exist, Ze); + } + zr.failedLookupLocations.push(Ze); + } + function Cr(Ze, Sr, zr, Wr, Je) { + Je === void 0 && (Je = true); + var xe = Je ? Ne(Sr, zr, Wr) : void 0, vr = xe && xe.packageJsonContent, mr = xe && xe.versionPaths; + return w(xe, n(Ze, Sr, zr, Wr, vr, mr)); + } + function Ye(Ze, Sr, zr, Wr, Je) { + if (!Je && Ze.resolvedEntrypoints !== void 0) + return Ze.resolvedEntrypoints; + var xe, vr = Je ? Q.JavaScript : Q.TypeScript, mr = ve(Sr), Ar = { compilerOptions: Sr, host: zr, traceEnabled: C(Sr, zr), failedLookupLocations: [], packageJsonInfoCache: Wr == null ? void 0 : Wr.getPackageJsonInfoCache(), conditions: ["node", "require", "types"], features: mr, requestContainingDirectory: Ze.packageDirectory, reportDiagnostic: e.noop }, Oe = n(vr, Ze.packageDirectory, false, Ar, Ze.packageJsonContent, Ze.versionPaths); + if (xe = e.append(xe, Oe == null ? void 0 : Oe.path), mr & d.Exports && Ze.packageJsonContent.exports) + for (var nr = 0, Mr = [["node", "import", "types"], ["node", "require", "types"]]; nr < Mr.length; nr++) { + var Pe = Mr[nr], Ue = Ke(Ke({}, Ar), { failedLookupLocations: [], conditions: Pe }), fr = Br(Ze, Ze.packageJsonContent.exports, Ue, vr); + if (fr) + for (var De = 0, gr = fr; De < gr.length; De++) { + var Vr = gr[De]; + xe = e.appendIfUnique(xe, Vr.path); + } + } + return Ze.resolvedEntrypoints = xe || false; + } + e.getEntrypointsFromPackageJsonInfo = Ye; + function Br(Ze, Sr, zr, Wr) { + var Je; + if (e.isArray(Sr)) + for (var xe = 0, vr = Sr; xe < vr.length; xe++) { + var mr = vr[xe]; + Oe(mr); + } + else if (typeof Sr == "object" && Sr !== null && ur(Sr)) + for (var Ar in Sr) + Oe(Sr[Ar]); + else + Oe(Sr); + return Je; + function Oe(nr) { + var Mr, Pe; + if (typeof nr == "string" && e.startsWith(nr, "./") && nr.indexOf("*") === -1) { + var Ue = e.getPathComponents(nr).slice(2); + if (Ue.indexOf("..") >= 0 || Ue.indexOf(".") >= 0 || Ue.indexOf("node_modules") >= 0) + return false; + var fr = e.combinePaths(Ze.packageDirectory, nr), De = e.getNormalizedAbsolutePath(fr, (Pe = (Mr = zr.host).getCurrentDirectory) === null || Pe === void 0 ? void 0 : Pe.call(Mr)), gr = ye(Wr, De, false, zr); + if (gr) + return Je = e.appendIfUnique(Je, gr, function(Yi, Wi) { + return Yi.path === Wi.path; + }), true; + } else if (Array.isArray(nr)) + for (var Vr = 0, Tr = nr; Vr < Tr.length; Vr++) { + var vi = Tr[Vr], Ui = Oe(vi); + if (Ui) + return true; + } + else if (typeof nr == "object" && nr !== null) + return e.forEach(e.getOwnKeys(nr), function(Yi) { + if (Yi === "default" || e.contains(zr.conditions, Yi) || pe(zr.conditions, Yi)) + return Oe(nr[Yi]), true; + }); + } + } + function Er(Ze, Sr, zr, Wr) { + var Je = { host: zr, compilerOptions: Wr, traceEnabled: C(Wr, zr), failedLookupLocations: [], packageJsonInfoCache: Sr, features: 0, conditions: [], requestContainingDirectory: void 0, reportDiagnostic: e.noop }, xe = e.getPathComponents(Ze); + for (xe.pop(); xe.length > 0; ) { + var vr = Ne(e.getPathFromPathComponents(xe), false, Je); + if (vr) + return vr; + xe.pop(); + } + } + e.getPackageScopeForPath = Er; + function Ne(Ze, Sr, zr) { + var Wr, Je, xe, vr = zr.host, mr = zr.traceEnabled, Ar = e.combinePaths(Ze, "package.json"); + if (Sr) { + zr.failedLookupLocations.push(Ar); + return; + } + var Oe = (Wr = zr.packageJsonInfoCache) === null || Wr === void 0 ? void 0 : Wr.getPackageJsonInfo(Ar); + if (Oe !== void 0) { + if (typeof Oe != "boolean") + return mr && a(vr, e.Diagnostics.File_0_exists_according_to_earlier_cached_lookups, Ar), Oe; + Oe && mr && a(vr, e.Diagnostics.File_0_does_not_exist_according_to_earlier_cached_lookups, Ar), zr.failedLookupLocations.push(Ar); + return; + } + var nr = e.directoryProbablyExists(Ze, vr); + if (nr && vr.fileExists(Ar)) { + var Mr = e.readJson(Ar, vr); + mr && a(vr, e.Diagnostics.Found_package_json_at_0, Ar); + var Pe = K(Mr, zr), Ue = { packageDirectory: Ze, packageJsonContent: Mr, versionPaths: Pe, resolvedEntrypoints: void 0 }; + return (Je = zr.packageJsonInfoCache) === null || Je === void 0 || Je.setPackageJsonInfo(Ar, Ue), Ue; + } else + nr && mr && a(vr, e.Diagnostics.File_0_does_not_exist, Ar), (xe = zr.packageJsonInfoCache) === null || xe === void 0 || xe.setPackageJsonInfo(Ar, nr), zr.failedLookupLocations.push(Ar); + } + e.getPackageJsonInfo = Ne; + function n(Ze, Sr, zr, Wr, Je, xe) { + var vr; + if (Je) + switch (Ze) { + case Q.JavaScript: + case Q.Json: + case Q.TsOnly: + vr = f(Je, Sr, Wr); + break; + case Q.TypeScript: + vr = G(Je, Sr, Wr) || f(Je, Sr, Wr); + break; + case Q.DtsOnly: + vr = G(Je, Sr, Wr); + break; + case Q.TSConfig: + vr = oe(Je, Sr, Wr); + break; + default: + return e.Debug.assertNever(Ze); + } + var mr = function(fr, De, gr, Vr) { + var Tr = er(De, gr, Vr); + if (Tr) { + var vi = lr(fr, Tr); + if (vi) + return B(vi); + Vr.traceEnabled && a(Vr.host, e.Diagnostics.File_0_has_an_unsupported_extension_so_skipping_it, Tr); + } + var Ui = fr === Q.DtsOnly ? Q.TypeScript : fr, Yi = Vr.features; + (Je == null ? void 0 : Je.type) !== "module" && (Vr.features &= ~d.EsmMode); + var Wi = Ee(Ui, De, gr, Vr, false); + return Vr.features = Yi, Wi; + }, Ar = vr ? !e.directoryProbablyExists(e.getDirectoryPath(vr), Wr.host) : void 0, Oe = zr || !e.directoryProbablyExists(Sr, Wr.host), nr = e.combinePaths(Sr, Ze === Q.TSConfig ? "tsconfig" : "index"); + if (xe && (!vr || e.containsPath(Sr, vr))) { + var Mr = e.getRelativePathFromDirectory(Sr, vr || nr, false); + Wr.traceEnabled && a(Wr.host, e.Diagnostics.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2, xe.version, e.version, Mr); + var Pe = Xi(Ze, Mr, Sr, xe.paths, void 0, mr, Ar || Oe, Wr); + if (Pe) + return E(Pe.value); + } + var Ue = vr && E(mr(Ze, vr, Ar, Wr)); + if (Ue) + return Ue; + if (!(Wr.features & d.EsmMode)) + return we(Ze, nr, Oe, Wr); + } + function lr(Ze, Sr) { + var zr = e.tryGetExtensionFromPath(Sr); + return zr !== void 0 && be(Ze, zr) ? { path: Sr, ext: zr } : void 0; + } + function be(Ze, Sr) { + switch (Ze) { + case Q.JavaScript: + return Sr === ".js" || Sr === ".jsx" || Sr === ".mjs" || Sr === ".cjs"; + case Q.TSConfig: + case Q.Json: + return Sr === ".json"; + case Q.TypeScript: + return Sr === ".ts" || Sr === ".tsx" || Sr === ".mts" || Sr === ".cts" || Sr === ".d.ts" || Sr === ".d.mts" || Sr === ".d.cts"; + case Q.TsOnly: + return Sr === ".ts" || Sr === ".tsx" || Sr === ".mts" || Sr === ".cts"; + case Q.DtsOnly: + return Sr === ".d.ts" || Sr === ".d.mts" || Sr === ".d.cts"; + } + } + function Ge(Ze) { + var Sr = Ze.indexOf(e.directorySeparator); + return Ze[0] === "@" && (Sr = Ze.indexOf(e.directorySeparator, Sr + 1)), Sr === -1 ? { packageName: Ze, rest: "" } : { packageName: Ze.slice(0, Sr), rest: Ze.slice(Sr + 1) }; + } + e.parsePackageName = Ge; + function ur(Ze) { + return e.every(e.getOwnKeys(Ze), function(Sr) { + return e.startsWith(Sr, "."); + }); + } + e.allKeysStartWithDot = ur; + function yr(Ze) { + return !e.some(e.getOwnKeys(Ze), function(Sr) { + return e.startsWith(Sr, "."); + }); + } + function Ir(Ze, Sr, zr, Wr, Je, xe) { + var vr, mr, Ar = typeof Wr.host.useCaseSensitiveFileNames == "function" ? Wr.host.useCaseSensitiveFileNames() : Wr.host.useCaseSensitiveFileNames, Oe = e.toPath(e.combinePaths(zr, "dummy"), (mr = (vr = Wr.host).getCurrentDirectory) === null || mr === void 0 ? void 0 : mr.call(vr), e.createGetCanonicalFileName(Ar === void 0 ? true : Ar)), nr = Er(Oe, Wr.packageJsonInfoCache, Wr.host, Wr.compilerOptions); + if (!(!nr || !nr.packageJsonContent.exports) && typeof nr.packageJsonContent.name == "string") { + var Mr = e.getPathComponents(Sr), Pe = e.getPathComponents(nr.packageJsonContent.name); + if (!!e.every(Pe, function(fr, De) { + return Mr[De] === fr; + })) { + var Ue = Mr.slice(Pe.length); + return wr(nr, Ze, e.length(Ue) ? ".".concat(e.directorySeparator).concat(Ue.join(e.directorySeparator)) : ".", Wr, Je, xe); + } + } + } + function wr(Ze, Sr, zr, Wr, Je, xe) { + if (!!Ze.packageJsonContent.exports) { + if (zr === ".") { + var vr = void 0; + if (typeof Ze.packageJsonContent.exports == "string" || Array.isArray(Ze.packageJsonContent.exports) || typeof Ze.packageJsonContent.exports == "object" && yr(Ze.packageJsonContent.exports) ? vr = Ze.packageJsonContent.exports : e.hasProperty(Ze.packageJsonContent.exports, ".") && (vr = Ze.packageJsonContent.exports["."]), vr) { + var mr = mi(Sr, Wr, Je, xe, zr, Ze, false); + return mr(vr, "", false); + } + } else if (ur(Ze.packageJsonContent.exports)) { + if (typeof Ze.packageJsonContent.exports != "object") + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1, zr, Ze.packageDirectory), ti(void 0); + var Ar = ii(Sr, Wr, Je, xe, zr, Ze.packageJsonContent.exports, Ze, false); + if (Ar) + return Ar; + } + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1, zr, Ze.packageDirectory), ti(void 0); + } + } + function Ur(Ze, Sr, zr, Wr, Je, xe) { + var vr, mr; + if (Sr === "#" || e.startsWith(Sr, "#/")) + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.Invalid_import_specifier_0_has_no_possible_resolutions, Sr), ti(void 0); + var Ar = typeof Wr.host.useCaseSensitiveFileNames == "function" ? Wr.host.useCaseSensitiveFileNames() : Wr.host.useCaseSensitiveFileNames, Oe = e.toPath(e.combinePaths(zr, "dummy"), (mr = (vr = Wr.host).getCurrentDirectory) === null || mr === void 0 ? void 0 : mr.call(vr), e.createGetCanonicalFileName(Ar === void 0 ? true : Ar)), nr = Er(Oe, Wr.packageJsonInfoCache, Wr.host, Wr.compilerOptions); + if (!nr) + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.Directory_0_has_no_containing_package_json_scope_Imports_will_not_resolve, Oe), ti(void 0); + if (!nr.packageJsonContent.imports) + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.package_json_scope_0_has_no_imports_defined, nr.packageDirectory), ti(void 0); + var Mr = ii(Ze, Wr, Je, xe, Sr, nr.packageJsonContent.imports, nr, true); + return Mr || (Wr.traceEnabled && a(Wr.host, e.Diagnostics.Import_specifier_0_does_not_exist_in_package_json_scope_at_path_1, Sr, nr.packageDirectory), ti(void 0)); + } + function ii(Ze, Sr, zr, Wr, Je, xe, vr, mr) { + var Ar = mi(Ze, Sr, zr, Wr, Je, vr, mr); + if (!e.endsWith(Je, e.directorySeparator) && Je.indexOf("*") === -1 && e.hasProperty(xe, Je)) { + var Oe = xe[Je]; + return Ar(Oe, "", false); + } + for (var nr = e.sort(e.filter(e.getOwnKeys(xe), function(Vr) { + return Vr.indexOf("*") !== -1 || e.endsWith(Vr, "/"); + }), function(Vr, Tr) { + return Vr.length - Tr.length; + }), Mr = 0, Pe = nr; Mr < Pe.length; Mr++) { + var Ue = Pe[Mr]; + if (Sr.features & d.ExportsPatternTrailers && gr(Ue, Je)) { + var Oe = xe[Ue], fr = Ue.indexOf("*"), De = Je.substring(Ue.substring(0, fr).length, Je.length - (Ue.length - 1 - fr)); + return Ar(Oe, De, true); + } else if (e.endsWith(Ue, "*") && e.startsWith(Je, Ue.substring(0, Ue.length - 1))) { + var Oe = xe[Ue], De = Je.substring(Ue.length - 1); + return Ar(Oe, De, true); + } else if (e.startsWith(Je, Ue)) { + var Oe = xe[Ue], De = Je.substring(Ue.length); + return Ar(Oe, De, false); + } + } + function gr(Vr, Tr) { + if (e.endsWith(Vr, "*")) + return false; + var vi = Vr.indexOf("*"); + return vi === -1 ? false : e.startsWith(Tr, Vr.substring(0, vi)) && e.endsWith(Tr, Vr.substring(vi + 1)); + } + } + function mi(Ze, Sr, zr, Wr, Je, xe, vr) { + return mr; + function mr(Ar, Oe, nr) { + if (typeof Ar == "string") { + if (!nr && Oe.length > 0 && !e.endsWith(Ar, "/")) + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_scope_0_has_invalid_type_for_target_of_specifier_1, xe.packageDirectory, Je), ti(void 0); + if (!e.startsWith(Ar, "./")) { + if (vr && !e.startsWith(Ar, "../") && !e.startsWith(Ar, "/") && !e.isRootedDiskPath(Ar)) { + var Mr = nr ? Ar.replace(/\*/g, Oe) : Ar + Oe, Pe = ge(Sr.features, Mr, xe.packageDirectory + "/", Sr.compilerOptions, Sr.host, zr, [Ze], Wr); + return ti(Pe.resolvedModule ? { path: Pe.resolvedModule.resolvedFileName, extension: Pe.resolvedModule.extension, packageId: Pe.resolvedModule.packageId, originalPath: Pe.resolvedModule.originalPath } : void 0); + } + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_scope_0_has_invalid_type_for_target_of_specifier_1, xe.packageDirectory, Je), ti(void 0); + } + var Ue = e.pathIsRelative(Ar) ? e.getPathComponents(Ar).slice(1) : e.getPathComponents(Ar), fr = Ue.slice(1); + if (fr.indexOf("..") >= 0 || fr.indexOf(".") >= 0 || fr.indexOf("node_modules") >= 0) + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_scope_0_has_invalid_type_for_target_of_specifier_1, xe.packageDirectory, Je), ti(void 0); + var De = e.combinePaths(xe.packageDirectory, Ar), gr = e.getPathComponents(Oe); + if (gr.indexOf("..") >= 0 || gr.indexOf(".") >= 0 || gr.indexOf("node_modules") >= 0) + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_scope_0_has_invalid_type_for_target_of_specifier_1, xe.packageDirectory, Je), ti(void 0); + var Vr = Mt(nr ? De.replace(/\*/g, Oe) : De + Oe), Tr = Dt(Vr, Oe, e.combinePaths(xe.packageDirectory, "package.json"), vr); + return Tr || ti(w(xe, ye(Ze, Vr, false, Sr))); + } else if (typeof Ar == "object" && Ar !== null) + if (Array.isArray(Ar)) { + if (!e.length(Ar)) + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_scope_0_has_invalid_type_for_target_of_specifier_1, xe.packageDirectory, Je), ti(void 0); + for (var ct = 0, Li = Ar; ct < Li.length; ct++) { + var nt = Li[ct], Pe = mr(nt, Oe, nr); + if (Pe) + return Pe; + } + } else { + for (var vi = 0, Ui = e.getOwnKeys(Ar); vi < Ui.length; vi++) { + var Yi = Ui[vi]; + if (Yi === "default" || Sr.conditions.indexOf(Yi) >= 0 || pe(Sr.conditions, Yi)) { + var Wi = Ar[Yi], Pe = mr(Wi, Oe, nr); + if (Pe) + return Pe; + } + } + return; + } + else if (Ar === null) + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_scope_0_explicitly_maps_specifier_1_to_null, xe.packageDirectory, Je), ti(void 0); + return Sr.traceEnabled && a(Sr.host, e.Diagnostics.package_json_scope_0_has_invalid_type_for_target_of_specifier_1, xe.packageDirectory, Je), ti(void 0); + function Mt(Rt) { + var Ii, Ki; + return Rt === void 0 ? Rt : e.hostGetCanonicalFileName({ useCaseSensitiveFileNames: ut })(e.getNormalizedAbsolutePath(Rt, (Ki = (Ii = Sr.host).getCurrentDirectory) === null || Ki === void 0 ? void 0 : Ki.call(Ii))); + } + function xt(Rt, Ii) { + return e.ensureTrailingDirectorySeparator(e.combinePaths(Rt, Ii)); + } + function ut() { + return Sr.host.useCaseSensitiveFileNames ? typeof Sr.host.useCaseSensitiveFileNames == "boolean" ? Sr.host.useCaseSensitiveFileNames : Sr.host.useCaseSensitiveFileNames() : true; + } + function Dt(Rt, Ii, Ki, Fi) { + var ui, Bt, wt, na; + if ((Ze === Q.TypeScript || Ze === Q.JavaScript || Ze === Q.Json) && (Sr.compilerOptions.declarationDir || Sr.compilerOptions.outDir) && Rt.indexOf("/node_modules/") === -1 && (Sr.compilerOptions.configFile ? e.startsWith(Mt(Sr.compilerOptions.configFile.fileName), xe.packageDirectory) : true)) { + var Ai = e.hostGetCanonicalFileName({ useCaseSensitiveFileNames: ut }), Oi = []; + if (Sr.compilerOptions.rootDir || Sr.compilerOptions.composite && Sr.compilerOptions.configFilePath) { + var ji = Mt(e.getCommonSourceDirectory(Sr.compilerOptions, function() { + return []; + }, ((Bt = (ui = Sr.host).getCurrentDirectory) === null || Bt === void 0 ? void 0 : Bt.call(ui)) || "", Ai)); + Oi.push(ji); + } else if (Sr.requestContainingDirectory) { + var Vi = Mt(e.combinePaths(Sr.requestContainingDirectory, "index.ts")), ji = Mt(e.getCommonSourceDirectory(Sr.compilerOptions, function() { + return [Vi, Mt(Ki)]; + }, ((na = (wt = Sr.host).getCurrentDirectory) === null || na === void 0 ? void 0 : na.call(wt)) || "", Ai)); + Oi.push(ji); + for (var at = e.ensureTrailingDirectorySeparator(ji); at && at.length > 1; ) { + var At = e.getPathComponents(at); + At.pop(); + var ba = e.getPathFromPathComponents(At); + Oi.unshift(ba), at = e.ensureTrailingDirectorySeparator(ba); + } + } + Oi.length > 1 && Sr.reportDiagnostic(e.createCompilerDiagnostic(Fi ? e.Diagnostics.The_project_root_is_ambiguous_but_is_required_to_resolve_import_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate : e.Diagnostics.The_project_root_is_ambiguous_but_is_required_to_resolve_export_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate, Ii === "" ? "." : Ii, Ki)); + for (var $a = 0, Qa = Oi; $a < Qa.length; $a++) + for (var ai = Qa[$a], Dn = En(ai), ka = 0, Ba = Dn; ka < Ba.length; ka++) { + var pn = Ba[ka]; + if (e.startsWith(Rt, pn)) + for (var Cn = Rt.slice(pn.length + 1), Bi = e.combinePaths(ai, Cn), kn = [".mjs", ".cjs", ".js", ".json", ".d.mts", ".d.cts", ".d.ts"], xn = 0, Kn = kn; xn < Kn.length; xn++) { + var Pn = Kn[xn]; + if (e.fileExtensionIs(Bi, Pn)) + for (var eo = e.getPossibleOriginalInputExtensionForExtension(Bi), Rn = 0, Da = eo; Rn < Da.length; Rn++) { + var bo = Da[Rn], Ro = e.changeAnyExtension(Bi, bo, Pn, !ut()); + if (!(Ze === Q.TypeScript && e.hasJSFileExtension(Ro) || Ze === Q.JavaScript && e.hasTSFileExtension(Ro)) && Sr.host.fileExists(Ro)) + return ti(w(xe, ye(Ze, Ro, false, Sr))); + } + } + } + } + return; + function En(Wn) { + var to, Co, Ko = Sr.compilerOptions.configFile ? ((Co = (to = Sr.host).getCurrentDirectory) === null || Co === void 0 ? void 0 : Co.call(to)) || "" : Wn, Oo = []; + return Sr.compilerOptions.declarationDir && Oo.push(Mt(xt(Ko, Sr.compilerOptions.declarationDir))), Sr.compilerOptions.outDir && Sr.compilerOptions.outDir !== Sr.compilerOptions.declarationDir && Oo.push(Mt(xt(Ko, Sr.compilerOptions.outDir))), Oo; + } + } + } + } + function pe(Ze, Sr) { + if (Ze.indexOf("types") === -1 || !e.startsWith(Sr, "types@")) + return false; + var zr = e.VersionRange.tryParse(Sr.substring(6)); + return zr ? zr.test(e.version) : false; + } + e.isApplicableVersionedTypesKey = pe; + function or(Ze, Sr, zr, Wr, Je, xe) { + return si(Ze, Sr, zr, Wr, false, Je, xe); + } + function qr(Ze, Sr, zr) { + return si(Q.DtsOnly, Ze, Sr, zr, true, void 0, void 0); + } + function si(Ze, Sr, zr, Wr, Je, xe, vr) { + var mr = xe && xe.getOrCreateCacheForModuleName(Sr, Wr.features === 0 ? void 0 : Wr.features & d.EsmMode ? e.ModuleKind.ESNext : e.ModuleKind.CommonJS, vr); + return e.forEachAncestorDirectory(e.normalizeSlashes(zr), function(Ar) { + if (e.getBaseFileName(Ar) !== "node_modules") { + var Oe = ae(mr, Sr, Ar, Wr); + return Oe || ti(Di(Ze, Sr, Ar, Wr, Je, xe, vr)); + } + }); + } + function Di(Ze, Sr, zr, Wr, Je, xe, vr) { + var mr = e.combinePaths(zr, "node_modules"), Ar = e.directoryProbablyExists(mr, Wr.host); + !Ar && Wr.traceEnabled && a(Wr.host, e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, mr); + var Oe = Je ? void 0 : wi(Ze, Sr, mr, Ar, Wr, xe, vr); + if (Oe) + return Oe; + if (Ze === Q.TypeScript || Ze === Q.DtsOnly) { + var nr = e.combinePaths(mr, "@types"), Mr = Ar; + return Ar && !e.directoryProbablyExists(nr, Wr.host) && (Wr.traceEnabled && a(Wr.host, e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it, nr), Mr = false), wi(Q.DtsOnly, Gi(Sr, Wr), nr, Mr, Wr, xe, vr); + } + } + function wi(Ze, Sr, zr, Wr, Je, xe, vr) { + var mr = e.normalizePath(e.combinePaths(zr, Sr)), Ar = Ne(mr, !Wr, Je); + if (!(Je.features & d.Exports) && Ar) { + var Oe = we(Ze, mr, !Wr, Je); + if (Oe) + return B(Oe); + var nr = n(Ze, mr, !Wr, Je, Ar.packageJsonContent, Ar.versionPaths); + return w(Ar, nr); + } + var Mr = Ge(Sr), Pe = Mr.packageName, Ue = Mr.rest, fr = function(Tr, vi, Ui, Yi) { + var Wi; + if (Ar && Ar.packageJsonContent.exports && Yi.features & d.Exports) + return (Wi = wr(Ar, Tr, e.combinePaths(".", Ue), Yi, xe, vr)) === null || Wi === void 0 ? void 0 : Wi.value; + var ct = we(Tr, vi, Ui, Yi) || n(Tr, vi, Ui, Yi, Ar && Ar.packageJsonContent, Ar && Ar.versionPaths); + return !ct && Ar && Ar.packageJsonContent.exports === void 0 && Ar.packageJsonContent.main === void 0 && Yi.features & d.EsmMode && (ct = we(Tr, e.combinePaths(vi, "index.js"), Ui, Yi)), w(Ar, ct); + }; + if (Ue !== "") { + var De = e.combinePaths(zr, Pe); + if (Ar = Ne(De, !Wr, Je), Ar && Ar.versionPaths) { + Je.traceEnabled && a(Je.host, e.Diagnostics.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2, Ar.versionPaths.version, e.version, Ue); + var gr = Wr && e.directoryProbablyExists(De, Je.host), Vr = Xi(Ze, Ue, De, Ar.versionPaths.paths, void 0, fr, !gr, Je); + if (Vr) + return Vr.value; + } + } + return fr(Ze, mr, !Wr, Je); + } + function Xi(Ze, Sr, zr, Wr, Je, xe, vr, mr) { + Je || (Je = e.tryParsePatterns(Wr)); + var Ar = e.matchPatternOrExact(Je, Sr); + if (Ar) { + var Oe = e.isString(Ar) ? void 0 : e.matchedText(Ar, Sr), nr = e.isString(Ar) ? Ar : e.patternText(Ar); + mr.traceEnabled && a(mr.host, e.Diagnostics.Module_name_0_matched_pattern_1, Sr, nr); + var Mr = e.forEach(Wr[nr], function(Pe) { + var Ue = Oe ? Pe.replace("*", Oe) : Pe, fr = e.normalizePath(e.combinePaths(zr, Ue)); + mr.traceEnabled && a(mr.host, e.Diagnostics.Trying_substitution_0_candidate_module_location_Colon_1, Pe, Ue); + var De = e.tryGetExtensionFromPath(Pe); + if (De !== void 0) { + var gr = er(fr, vr, mr); + if (gr !== void 0) + return B({ path: gr, ext: De }); + } + return xe(Ze, fr, vr || !e.directoryProbablyExists(e.getDirectoryPath(fr), mr.host), mr); + }); + return { value: Mr }; + } + } + var et = "__"; + function Gi(Ze, Sr) { + var zr = Zt(Ze); + return Sr.traceEnabled && zr !== Ze && a(Sr.host, e.Diagnostics.Scoped_package_detected_looking_in_0, zr), zr; + } + function Wt(Ze) { + return "@types/".concat(Zt(Ze)); + } + e.getTypesPackageName = Wt; + function Zt(Ze) { + if (e.startsWith(Ze, "@")) { + var Sr = Ze.replace(e.directorySeparator, et); + if (Sr !== Ze) + return Sr.slice(1); + } + return Ze; + } + e.mangleScopedPackageName = Zt; + function _r(Ze) { + var Sr = e.removePrefix(Ze, "@types/"); + return Sr !== Ze ? pi(Sr) : Ze; + } + e.getPackageNameFromTypesPackageName = _r; + function pi(Ze) { + return e.stringContains(Ze, et) ? "@" + Ze.replace(et, e.directorySeparator) : Ze; + } + e.unmangleScopedPackageName = pi; + function ae(Ze, Sr, zr, Wr) { + var Je = Ze && Ze.get(zr); + if (Je) + return Wr.traceEnabled && a(Wr.host, e.Diagnostics.Resolution_for_module_0_was_found_in_cache_from_location_1, Sr, zr), Wr.resultFromCache = Je, { value: Je.resolvedModule && { path: Je.resolvedModule.resolvedFileName, originalPath: Je.resolvedModule.originalPath || true, extension: Je.resolvedModule.extension, packageId: Je.resolvedModule.packageId } }; + } + function Xe(Ze, Sr, zr, Wr, Je, xe) { + var vr = C(zr, Wr), mr = [], Ar = e.getDirectoryPath(Sr), Oe = [], nr = { compilerOptions: zr, host: Wr, traceEnabled: vr, failedLookupLocations: mr, packageJsonInfoCache: Je, features: d.None, conditions: [], requestContainingDirectory: Ar, reportDiagnostic: function(Ue) { + return void Oe.push(Ue); + } }, Mr = Pe(Q.TypeScript) || Pe(Q.JavaScript); + return N(Mr && Mr.value, false, mr, Oe, nr.resultFromCache); + function Pe(Ue) { + var fr = U(Ue, Ze, Ar, _e, nr); + if (fr) + return { value: fr }; + if (e.isExternalModuleNameRelative(Ze)) { + var Vr = e.normalizePath(e.combinePaths(Ar, Ze)); + return ti(_e(Ue, Vr, false, nr)); + } else { + var De = Je && Je.getOrCreateCacheForModuleName(Ze, void 0, xe), gr = e.forEachAncestorDirectory(Ar, function(Tr) { + var vi = ae(De, Ze, Tr, nr); + if (vi) + return vi; + var Ui = e.normalizePath(e.combinePaths(Tr, Ze)); + return ti(_e(Ue, Ui, false, nr)); + }); + if (gr) + return gr; + if (Ue === Q.TypeScript) + return qr(Ze, Ar, nr); + } + } + } + e.classicNameResolver = Xe; + function Jr(Ze, Sr, zr, Wr, Je, xe) { + var vr = C(zr, Wr); + vr && a(Wr, e.Diagnostics.Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using_cache_location_2, Sr, Ze, Je); + var mr = [], Ar = [], Oe = { compilerOptions: zr, host: Wr, traceEnabled: vr, failedLookupLocations: mr, packageJsonInfoCache: xe, features: d.None, conditions: [], requestContainingDirectory: void 0, reportDiagnostic: function(Mr) { + return void Ar.push(Mr); + } }, nr = Di(Q.DtsOnly, Ze, Je, Oe, false, void 0, void 0); + return N(nr, true, mr, Ar, Oe.resultFromCache); + } + e.loadModuleFromGlobalCache = Jr; + function ti(Ze) { + return Ze !== void 0 ? { value: Ze } : void 0; + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(b) { + b[b.NonInstantiated = 0] = "NonInstantiated", b[b.Instantiated = 1] = "Instantiated", b[b.ConstEnumOnly = 2] = "ConstEnumOnly"; + })(a = e.ModuleInstanceState || (e.ModuleInstanceState = {})); + function C(b, se) { + return b.body && !b.body.parent && (e.setParent(b.body, b), e.setParentRecursive(b.body, false)), b.body ? w(b.body, se) : 1; + } + e.getModuleInstanceState = C; + function w(b, se) { + se === void 0 && (se = new e.Map()); + var J = e.getNodeId(b); + if (se.has(J)) + return se.get(J) || 0; + se.set(J, void 0); + var ie = B(b, se); + return se.set(J, ie), ie; + } + function B(b, se) { + switch (b.kind) { + case 258: + case 259: + return 0; + case 260: + if (e.isEnumConst(b)) + return 2; + break; + case 266: + case 265: + if (!e.hasSyntacticModifier(b, 1)) + return 0; + break; + case 272: + var J = b; + if (!J.moduleSpecifier && J.exportClause && J.exportClause.kind === 273) { + for (var ie = 0, R = 0, q = J.exportClause.elements; R < q.length; R++) { + var O = q[R], ve = E(O, se); + if (ve > ie && (ie = ve), ie === 1) + return ie; + } + return ie; + } + break; + case 262: { + var ee = 0; + return e.forEachChild(b, function(he) { + var F = w(he, se); + switch (F) { + case 0: + return; + case 2: + ee = 2; + return; + case 1: + return ee = 1, true; + default: + e.Debug.assertNever(F); + } + }), ee; + } + case 261: + return C(b, se); + case 79: + if (b.isInJSDocNamespace) + return 0; + } + return 1; + } + function E(b, se) { + for (var J = b.propertyName || b.name, ie = b.parent; ie; ) { + if (e.isBlock(ie) || e.isModuleBlock(ie) || e.isSourceFile(ie)) { + for (var R = ie.statements, q = void 0, O = 0, ve = R; O < ve.length; O++) { + var ee = ve[O]; + if (e.nodeHasName(ee, J)) { + ee.parent || (e.setParent(ee, ie), e.setParentRecursive(ee, false)); + var he = w(ee, se); + if ((q === void 0 || he > q) && (q = he), q === 1) + return q; + } + } + if (q !== void 0) + return q; + } + ie = ie.parent; + } + return 1; + } + var Q; + (function(b) { + b[b.None = 0] = "None", b[b.IsContainer = 1] = "IsContainer", b[b.IsBlockScopedContainer = 2] = "IsBlockScopedContainer", b[b.IsControlFlowContainer = 4] = "IsControlFlowContainer", b[b.IsFunctionLike = 8] = "IsFunctionLike", b[b.IsFunctionExpression = 16] = "IsFunctionExpression", b[b.HasLocals = 32] = "HasLocals", b[b.IsInterface = 64] = "IsInterface", b[b.IsObjectLiteralOrClassExpressionMethodOrAccessor = 128] = "IsObjectLiteralOrClassExpressionMethodOrAccessor"; + })(Q || (Q = {})); + function le(b) { + return e.Debug.attachFlowNodeDebugInfo(b), b; + } + var N = m(); + function p(b, se) { + e.performance.mark("beforeBind"), e.perfLogger.logStartBindFile("" + b.fileName), N(b, se), e.perfLogger.logStopBindFile(), e.performance.mark("afterBind"), e.performance.measure("Bind", "beforeBind", "afterBind"); + } + e.bindSourceFile = p; + function m() { + var b, se, J, ie, R, q, O, ve, ee, he, F, x, X, $, A, y, V, L, P, k, Y, U, j = false, H = 0, I, l, d = { flags: 1 }, D = { flags: 1 }, fe = Ar(); + function g(ce, Rr, yi, qi, je) { + return e.createDiagnosticForNodeInSourceFile(e.getSourceFileOfNode(ce) || b, ce, Rr, yi, qi, je); + } + function ne(ce, Rr) { + b = ce, se = Rr, J = e.getEmitScriptTarget(se), U = ue(b, Rr), l = new e.Set(), H = 0, I = e.objectAllocator.getSymbolConstructor(), e.Debug.attachFlowNodeDebugInfo(d), e.Debug.attachFlowNodeDebugInfo(D), b.locals || (e.tracing === null || e.tracing === void 0 || e.tracing.push("bind", "bindSourceFile", { path: b.path }, true), Da(b), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), b.symbolCount = H, b.classifiableNames = l, Ai()), b = void 0, se = void 0, J = void 0, ie = void 0, R = void 0, q = void 0, O = void 0, ve = void 0, ee = void 0, he = false, F = void 0, x = void 0, X = void 0, $ = void 0, A = void 0, y = void 0, V = void 0, P = void 0, k = false, j = false, Y = 0; + } + return ne; + function ue(ce, Rr) { + return e.getStrictOptionValue(Rr, "alwaysStrict") && !ce.isDeclarationFile ? true : !!ce.externalModuleIndicator; + } + function We(ce, Rr) { + return H++, new I(ce, Rr); + } + function Fe(ce, Rr, yi) { + ce.flags |= yi, Rr.symbol = ce, ce.declarations = e.appendIfUnique(ce.declarations, Rr), yi & 1955 && !ce.exports && (ce.exports = e.createSymbolTable()), yi & 6240 && !ce.members && (ce.members = e.createSymbolTable()), ce.constEnumOnlyModule && ce.flags & 304 && (ce.constEnumOnlyModule = false), yi & 111551 && e.setValueDeclaration(ce, Rr); + } + function Z(ce) { + if (ce.kind === 271) + return ce.isExportEquals ? "export=" : "default"; + var Rr = e.getNameOfDeclaration(ce); + if (Rr) { + if (e.isAmbientModule(ce)) { + var yi = e.getTextOfIdentifierOrLiteral(Rr); + return e.isGlobalScopeAugmentation(ce) ? "__global" : '"'.concat(yi, '"'); + } + if (Rr.kind === 162) { + var qi = Rr.expression; + if (e.isStringOrNumericLiteralLike(qi)) + return e.escapeLeadingUnderscores(qi.text); + if (e.isSignedNumericLiteral(qi)) + return e.tokenToString(qi.operator) + qi.operand.text; + e.Debug.fail("Only computed properties with literal names have declaration names"); + } + if (e.isPrivateIdentifier(Rr)) { + var je = e.getContainingClass(ce); + if (!je) + return; + var Hr = je.symbol; + return e.getSymbolNameForPrivateIdentifier(Hr, Rr.escapedText); + } + return e.isPropertyNameLiteral(Rr) ? e.getEscapedTextOfIdentifierOrLiteral(Rr) : void 0; + } + switch (ce.kind) { + case 171: + return "__constructor"; + case 179: + case 174: + case 323: + return "__call"; + case 180: + case 175: + return "__new"; + case 176: + return "__index"; + case 272: + return "__export"; + case 305: + return "export="; + case 221: + if (e.getAssignmentDeclarationKind(ce) === 2) + return "export="; + e.Debug.fail("Unknown binary declaration kind"); + break; + case 317: + return e.isJSDocConstructSignature(ce) ? "__new" : "__call"; + case 164: + e.Debug.assert(ce.parent.kind === 317, "Impossible parameter parent kind", function() { + return "parent is: ".concat(e.SyntaxKind ? e.SyntaxKind[ce.parent.kind] : ce.parent.kind, ", expected JSDocFunctionType"); + }); + var pt = ce.parent, Pt = pt.parameters.indexOf(ce); + return "arg" + Pt; + } + } + function Be(ce) { + return e.isNamedDeclaration(ce) ? e.declarationNameToString(ce.name) : e.unescapeLeadingUnderscores(e.Debug.checkDefined(Z(ce))); + } + function ge(ce, Rr, yi, qi, je, Hr, pt) { + e.Debug.assert(pt || !e.hasDynamicName(yi)); + var Pt = e.hasSyntacticModifier(yi, 512) || e.isExportSpecifier(yi) && yi.name.escapedText === "default", ga = pt ? "__computed" : Pt && Rr ? "default" : Z(yi), ua; + if (ga === void 0) + ua = We(0, "__missing"); + else if (ua = ce.get(ga), qi & 2885600 && l.add(ga), !ua) + ce.set(ga, ua = We(0, ga)), Hr && (ua.isReplaceableByMethod = true); + else { + if (Hr && !ua.isReplaceableByMethod) + return ua; + if (ua.flags & je) { + if (ua.isReplaceableByMethod) + ce.set(ga, ua = We(0, ga)); + else if (!(qi & 3 && ua.flags & 67108864)) { + e.isNamedDeclaration(yi) && e.setParent(yi.name, yi); + var Xn = ua.flags & 2 ? e.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : e.Diagnostics.Duplicate_identifier_0, jr = true; + (ua.flags & 384 || qi & 384) && (Xn = e.Diagnostics.Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations, jr = false); + var fo = false; + e.length(ua.declarations) && (Pt || ua.declarations && ua.declarations.length && yi.kind === 271 && !yi.isExportEquals) && (Xn = e.Diagnostics.A_module_cannot_have_multiple_default_exports, jr = false, fo = true); + var xs = []; + e.isTypeAliasDeclaration(yi) && e.nodeIsMissing(yi.type) && e.hasSyntacticModifier(yi, 1) && ua.flags & 2887656 && xs.push(g(yi, e.Diagnostics.Did_you_mean_0, "export type { ".concat(e.unescapeLeadingUnderscores(yi.name.escapedText), " }"))); + var Fo = e.getNameOfDeclaration(yi) || yi; + e.forEach(ua.declarations, function(Ao, Ms) { + var Bs = e.getNameOfDeclaration(Ao) || Ao, xc = g(Bs, Xn, jr ? Be(Ao) : void 0); + b.bindDiagnostics.push(fo ? e.addRelatedInfo(xc, g(Fo, Ms === 0 ? e.Diagnostics.Another_export_default_is_here : e.Diagnostics.and_here)) : xc), fo && xs.push(g(Bs, e.Diagnostics.The_first_export_default_is_here)); + }); + var ko = g(Fo, Xn, jr ? Be(yi) : void 0); + b.bindDiagnostics.push(e.addRelatedInfo.apply(void 0, Ve([ko], xs, false))), ua = We(0, ga); + } + } + } + return Fe(ua, yi, qi), ua.parent ? e.Debug.assert(ua.parent === Rr, "Existing symbol parent should match new one") : ua.parent = Rr, ua; + } + function Re(ce, Rr, yi) { + var qi = !!(e.getCombinedModifierFlags(ce) & 1) || ze(ce); + if (Rr & 2097152) + return ce.kind === 275 || ce.kind === 265 && qi ? ge(R.symbol.exports, R.symbol, ce, Rr, yi) : ge(R.locals, void 0, ce, Rr, yi); + if (e.isJSDocTypeAlias(ce) && e.Debug.assert(e.isInJSFile(ce)), !e.isAmbientModule(ce) && (qi || R.flags & 64)) { + if (!R.locals || e.hasSyntacticModifier(ce, 512) && !Z(ce)) + return ge(R.symbol.exports, R.symbol, ce, Rr, yi); + var je = Rr & 111551 ? 1048576 : 0, Hr = ge(R.locals, void 0, ce, je, yi); + return Hr.exportSymbol = ge(R.symbol.exports, R.symbol, ce, Rr, yi), ce.localSymbol = Hr, Hr; + } else + return ge(R.locals, void 0, ce, Rr, yi); + } + function ze(ce) { + if (ce.parent && e.isModuleDeclaration(ce) && (ce = ce.parent), !e.isJSDocTypeAlias(ce)) + return false; + if (!e.isJSDocEnumTag(ce) && !!ce.fullName) + return true; + var Rr = e.getNameOfDeclaration(ce); + return Rr ? !!(e.isPropertyAccessEntityNameExpression(Rr.parent) && Wa(Rr.parent) || e.isDeclaration(Rr.parent) && e.getCombinedModifierFlags(Rr.parent) & 1) : false; + } + function Ee(ce, Rr) { + var yi = R, qi = q, je = O; + if (Rr & 1 ? (ce.kind !== 214 && (q = R), R = O = ce, Rr & 32 && (R.locals = e.createSymbolTable()), Li(R)) : Rr & 2 && (O = ce, O.locals = void 0), Rr & 4) { + var Hr = F, pt = x, Pt = X, ga = $, ua = V, Xn = P, jr = k, fo = Rr & 16 && !e.hasSyntacticModifier(ce, 256) && !ce.asteriskToken && !!e.getImmediatelyInvokedFunctionExpression(ce) || ce.kind === 170; + fo || (F = le({ flags: 2 }), Rr & 144 && (F.node = ce)), $ = fo || ce.kind === 171 || e.isInJSFile(ce) && (ce.kind === 256 || ce.kind === 213) ? Ye() : void 0, V = void 0, x = void 0, X = void 0, P = void 0, k = false, _e(ce), ce.flags &= -2817, !(F.flags & 1) && Rr & 8 && e.nodeIsPresent(ce.body) && (ce.flags |= 256, k && (ce.flags |= 512), ce.endFlowNode = F), ce.kind === 305 && (ce.flags |= Y, ce.endFlowNode = F), $ && (n($, F), F = yr($), (ce.kind === 171 || ce.kind === 170 || e.isInJSFile(ce) && (ce.kind === 256 || ce.kind === 213)) && (ce.returnFlowNode = F)), fo || (F = Hr), x = pt, X = Pt, $ = ga, V = ua, P = Xn, k = jr; + } else + Rr & 64 ? (he = false, _e(ce), ce.flags = he ? ce.flags | 128 : ce.flags & -129) : _e(ce); + R = yi, q = qi, O = je; + } + function He(ce) { + rr(ce, function(Rr) { + return Rr.kind === 256 ? Da(Rr) : void 0; + }), rr(ce, function(Rr) { + return Rr.kind !== 256 ? Da(Rr) : void 0; + }); + } + function rr(ce, Rr) { + Rr === void 0 && (Rr = Da), ce !== void 0 && e.forEach(ce, Rr); + } + function Ie(ce) { + e.forEachChild(ce, Da, rr); + } + function _e(ce) { + var Rr = j; + if (j = false, Ji(ce)) { + Ie(ce), bo(ce), j = Rr; + return; + } + switch (ce.kind >= 237 && ce.kind <= 253 && !se.allowUnreachableCode && (ce.flowNode = F), ce.kind) { + case 241: + si(ce); + break; + case 240: + Di(ce); + break; + case 242: + wi(ce); + break; + case 243: + case 244: + Xi(ce); + break; + case 239: + et(ce); + break; + case 247: + case 251: + Gi(ce); + break; + case 246: + case 245: + _r(ce); + break; + case 252: + pi(ce); + break; + case 249: + ae(ce); + break; + case 263: + Xe(ce); + break; + case 289: + Jr(ce); + break; + case 238: + ti(ce); + break; + case 250: + Sr(ce); + break; + case 219: + xe(ce); + break; + case 220: + vr(ce); + break; + case 221: + if (e.isDestructuringAssignment(ce)) { + j = Rr, mr(ce); + return; + } + fe(ce); + break; + case 215: + Oe(ce); + break; + case 222: + nr(ce); + break; + case 254: + Pe(ce); + break; + case 206: + case 207: + Yi(ce); + break; + case 208: + Wi(ce); + break; + case 230: + Ui(ce); + break; + case 345: + case 338: + case 339: + fr(ce); + break; + case 305: { + He(ce.statements), Da(ce.endOfFileToken); + break; + } + case 235: + case 262: + He(ce.statements); + break; + case 203: + Ue(ce); + break; + case 205: + case 204: + case 296: + case 225: + j = Rr; + default: + Ie(ce); + break; + } + bo(ce), j = Rr; + } + function we(ce) { + switch (ce.kind) { + case 79: + case 80: + case 108: + case 206: + case 207: + return ye(ce); + case 208: + return Ae(ce); + case 212: + case 230: + return we(ce.expression); + case 221: + return ir(ce); + case 219: + return ce.operator === 53 && we(ce.operand); + case 216: + return we(ce.expression); + } + return false; + } + function de(ce) { + return e.isDottedName(ce) || (e.isPropertyAccessExpression(ce) || e.isNonNullExpression(ce) || e.isParenthesizedExpression(ce)) && de(ce.expression) || e.isBinaryExpression(ce) && ce.operatorToken.kind === 27 && de(ce.right) || e.isElementAccessExpression(ce) && (e.isStringOrNumericLiteralLike(ce.argumentExpression) || e.isEntityNameExpression(ce.argumentExpression)) && de(ce.expression) || e.isAssignmentExpression(ce) && de(ce.left); + } + function ye(ce) { + return de(ce) || e.isOptionalChain(ce) && ye(ce.expression); + } + function Ae(ce) { + if (ce.arguments) + for (var Rr = 0, yi = ce.arguments; Rr < yi.length; Rr++) { + var qi = yi[Rr]; + if (ye(qi)) + return true; + } + return !!(ce.expression.kind === 206 && ye(ce.expression.expression)); + } + function er(ce, Rr) { + return e.isTypeOfExpression(ce) && Cr(ce.expression) && e.isStringLiteralLike(Rr); + } + function ir(ce) { + switch (ce.operatorToken.kind) { + case 63: + case 75: + case 76: + case 77: + return ye(ce.left); + case 34: + case 35: + case 36: + case 37: + return Cr(ce.left) || Cr(ce.right) || er(ce.right, ce.left) || er(ce.left, ce.right); + case 102: + return Cr(ce.left); + case 101: + return we(ce.right); + case 27: + return we(ce.right); + } + return false; + } + function Cr(ce) { + switch (ce.kind) { + case 212: + return Cr(ce.expression); + case 221: + switch (ce.operatorToken.kind) { + case 63: + return Cr(ce.left); + case 27: + return Cr(ce.right); + } + } + return ye(ce); + } + function Ye() { + return le({ flags: 4, antecedents: void 0 }); + } + function Br() { + return le({ flags: 8, antecedents: void 0 }); + } + function Er(ce, Rr, yi) { + return le({ flags: 1024, target: ce, antecedents: Rr, antecedent: yi }); + } + function Ne(ce) { + ce.flags |= ce.flags & 2048 ? 4096 : 2048; + } + function n(ce, Rr) { + !(Rr.flags & 1) && !e.contains(ce.antecedents, Rr) && ((ce.antecedents || (ce.antecedents = [])).push(Rr), Ne(Rr)); + } + function lr(ce, Rr, yi) { + return Rr.flags & 1 ? Rr : yi ? (yi.kind === 110 && ce & 64 || yi.kind === 95 && ce & 32) && !e.isExpressionOfOptionalChainRoot(yi) && !e.isNullishCoalesce(yi.parent) ? d : we(yi) ? (Ne(Rr), le({ flags: ce, antecedent: Rr, node: yi })) : Rr : ce & 32 ? Rr : d; + } + function be(ce, Rr, yi, qi) { + return Ne(ce), le({ flags: 128, antecedent: ce, switchStatement: Rr, clauseStart: yi, clauseEnd: qi }); + } + function Ge(ce, Rr, yi) { + Ne(Rr); + var qi = le({ flags: ce, antecedent: Rr, node: yi }); + return V && n(V, qi), qi; + } + function ur(ce, Rr) { + return Ne(ce), le({ flags: 512, antecedent: ce, node: Rr }); + } + function yr(ce) { + var Rr = ce.antecedents; + return Rr ? Rr.length === 1 ? Rr[0] : ce : d; + } + function Ir(ce) { + var Rr = ce.parent; + switch (Rr.kind) { + case 239: + case 241: + case 240: + return Rr.expression === ce; + case 242: + case 222: + return Rr.condition === ce; + } + return false; + } + function wr(ce) { + for (; ; ) + if (ce.kind === 212) + ce = ce.expression; + else if (ce.kind === 219 && ce.operator === 53) + ce = ce.operand; + else + return ce.kind === 221 && (ce.operatorToken.kind === 55 || ce.operatorToken.kind === 56 || ce.operatorToken.kind === 60); + } + function Ur(ce) { + return ce = e.skipParentheses(ce), e.isBinaryExpression(ce) && e.isLogicalOrCoalescingAssignmentOperator(ce.operatorToken.kind); + } + function ii(ce) { + for (; e.isParenthesizedExpression(ce.parent) || e.isPrefixUnaryExpression(ce.parent) && ce.parent.operator === 53; ) + ce = ce.parent; + return !Ir(ce) && !wr(ce.parent) && !(e.isOptionalChain(ce.parent) && ce.parent.expression === ce); + } + function mi(ce, Rr, yi, qi) { + var je = A, Hr = y; + A = yi, y = qi, ce(Rr), A = je, y = Hr; + } + function pe(ce, Rr, yi) { + mi(Da, ce, Rr, yi), (!ce || !Ur(ce) && !wr(ce) && !(e.isOptionalChain(ce) && e.isOutermostOptionalChain(ce))) && (n(Rr, lr(32, F, ce)), n(yi, lr(64, F, ce))); + } + function or(ce, Rr, yi) { + var qi = x, je = X; + x = Rr, X = yi, Da(ce), x = qi, X = je; + } + function qr(ce, Rr) { + for (var yi = P; yi && ce.parent.kind === 250; ) + yi.continueTarget = Rr, yi = yi.next, ce = ce.parent; + return Rr; + } + function si(ce) { + var Rr = qr(ce, Br()), yi = Ye(), qi = Ye(); + n(Rr, F), F = Rr, pe(ce.expression, yi, qi), F = yr(yi), or(ce.statement, qi, Rr), n(Rr, F), F = yr(qi); + } + function Di(ce) { + var Rr = Br(), yi = qr(ce, Ye()), qi = Ye(); + n(Rr, F), F = Rr, or(ce.statement, qi, yi), n(yi, F), F = yr(yi), pe(ce.expression, Rr, qi), F = yr(qi); + } + function wi(ce) { + var Rr = qr(ce, Br()), yi = Ye(), qi = Ye(); + Da(ce.initializer), n(Rr, F), F = Rr, pe(ce.condition, yi, qi), F = yr(yi), or(ce.statement, qi, Rr), Da(ce.incrementor), n(Rr, F), F = yr(qi); + } + function Xi(ce) { + var Rr = qr(ce, Br()), yi = Ye(); + Da(ce.expression), n(Rr, F), F = Rr, ce.kind === 244 && Da(ce.awaitModifier), n(yi, F), Da(ce.initializer), ce.initializer.kind !== 255 && Wr(ce.initializer), or(ce.statement, yi, Rr), n(Rr, F), F = yr(yi); + } + function et(ce) { + var Rr = Ye(), yi = Ye(), qi = Ye(); + pe(ce.expression, Rr, yi), F = yr(Rr), Da(ce.thenStatement), n(qi, F), F = yr(yi), Da(ce.elseStatement), n(qi, F), F = yr(qi); + } + function Gi(ce) { + Da(ce.expression), ce.kind === 247 && (k = true, $ && n($, F)), F = d; + } + function Wt(ce) { + for (var Rr = P; Rr; Rr = Rr.next) + if (Rr.name === ce) + return Rr; + } + function Zt(ce, Rr, yi) { + var qi = ce.kind === 246 ? Rr : yi; + qi && (n(qi, F), F = d); + } + function _r(ce) { + if (Da(ce.label), ce.label) { + var Rr = Wt(ce.label.escapedText); + Rr && (Rr.referenced = true, Zt(ce, Rr.breakTarget, Rr.continueTarget)); + } else + Zt(ce, x, X); + } + function pi(ce) { + var Rr = $, yi = V, qi = Ye(), je = Ye(), Hr = Ye(); + if (ce.finallyBlock && ($ = je), n(Hr, F), V = Hr, Da(ce.tryBlock), n(qi, F), ce.catchClause && (F = yr(Hr), Hr = Ye(), n(Hr, F), V = Hr, Da(ce.catchClause), n(qi, F)), $ = Rr, V = yi, ce.finallyBlock) { + var pt = Ye(); + pt.antecedents = e.concatenate(e.concatenate(qi.antecedents, Hr.antecedents), je.antecedents), F = pt, Da(ce.finallyBlock), F.flags & 1 ? F = d : ($ && je.antecedents && n($, Er(pt, je.antecedents, F)), V && Hr.antecedents && n(V, Er(pt, Hr.antecedents, F)), F = qi.antecedents ? Er(pt, qi.antecedents, F) : d); + } else + F = yr(qi); + } + function ae(ce) { + var Rr = Ye(); + Da(ce.expression); + var yi = x, qi = L; + x = Rr, L = F, Da(ce.caseBlock), n(Rr, F); + var je = e.forEach(ce.caseBlock.clauses, function(Hr) { + return Hr.kind === 290; + }); + ce.possiblyExhaustive = !je && !Rr.antecedents, je || n(Rr, be(L, ce, 0, 0)), x = yi, L = qi, F = yr(Rr); + } + function Xe(ce) { + for (var Rr = ce.clauses, yi = we(ce.parent.expression), qi = d, je = 0; je < Rr.length; je++) { + for (var Hr = je; !Rr[je].statements.length && je + 1 < Rr.length; ) + Da(Rr[je]), je++; + var pt = Ye(); + n(pt, yi ? be(L, ce.parent, Hr, je + 1) : L), n(pt, qi), F = yr(pt); + var Pt = Rr[je]; + Da(Pt), qi = F, !(F.flags & 1) && je !== Rr.length - 1 && se.noFallthroughCasesInSwitch && (Pt.fallthroughFlowNode = F); + } + } + function Jr(ce) { + var Rr = F; + F = L, Da(ce.expression), F = Rr, rr(ce.statements); + } + function ti(ce) { + Da(ce.expression), Ze(ce.expression); + } + function Ze(ce) { + if (ce.kind === 208) { + var Rr = ce; + Rr.expression.kind !== 106 && e.isDottedName(Rr.expression) && (F = ur(F, Rr)); + } + } + function Sr(ce) { + var Rr = Ye(); + P = { next: P, name: ce.label.escapedText, breakTarget: Rr, continueTarget: void 0, referenced: false }, Da(ce.label), Da(ce.statement), !P.referenced && !se.allowUnusedLabels && Pn(e.unusedLabelIsError(se), ce.label, e.Diagnostics.Unused_label), P = P.next, n(Rr, F), F = yr(Rr); + } + function zr(ce) { + ce.kind === 221 && ce.operatorToken.kind === 63 ? Wr(ce.left) : Wr(ce); + } + function Wr(ce) { + if (de(ce)) + F = Ge(16, F, ce); + else if (ce.kind === 204) + for (var Rr = 0, yi = ce.elements; Rr < yi.length; Rr++) { + var qi = yi[Rr]; + qi.kind === 225 ? Wr(qi.expression) : zr(qi); + } + else if (ce.kind === 205) + for (var je = 0, Hr = ce.properties; je < Hr.length; je++) { + var pt = Hr[je]; + pt.kind === 296 ? zr(pt.initializer) : pt.kind === 297 ? Wr(pt.name) : pt.kind === 298 && Wr(pt.expression); + } + } + function Je(ce, Rr, yi) { + var qi = Ye(); + ce.operatorToken.kind === 55 || ce.operatorToken.kind === 76 ? pe(ce.left, qi, yi) : pe(ce.left, Rr, qi), F = yr(qi), Da(ce.operatorToken), e.isLogicalOrCoalescingAssignmentOperator(ce.operatorToken.kind) ? (mi(Da, ce.right, Rr, yi), Wr(ce.left), n(Rr, lr(32, F, ce)), n(yi, lr(64, F, ce))) : pe(ce.right, Rr, yi); + } + function xe(ce) { + if (ce.operator === 53) { + var Rr = A; + A = y, y = Rr, Ie(ce), y = A, A = Rr; + } else + Ie(ce), (ce.operator === 45 || ce.operator === 46) && Wr(ce.operand); + } + function vr(ce) { + Ie(ce), (ce.operator === 45 || ce.operator === 46) && Wr(ce.operand); + } + function mr(ce) { + j ? (j = false, Da(ce.operatorToken), Da(ce.right), j = true, Da(ce.left)) : (j = true, Da(ce.left), j = false, Da(ce.operatorToken), Da(ce.right)), Wr(ce.left); + } + function Ar() { + return e.createBinaryExpressionTrampoline(ce, Rr, yi, qi, je, void 0); + function ce(pt, Pt) { + if (Pt) { + Pt.stackIndex++, e.setParent(pt, ie); + var ga = U; + Wn(pt); + var ua = ie; + ie = pt, Pt.skip = false, Pt.inStrictModeStack[Pt.stackIndex] = ga, Pt.parentStack[Pt.stackIndex] = ua; + } else + Pt = { stackIndex: 0, skip: false, inStrictModeStack: [void 0], parentStack: [void 0] }; + var Xn = pt.operatorToken.kind; + if (Xn === 55 || Xn === 56 || Xn === 60 || e.isLogicalOrCoalescingAssignmentOperator(Xn)) { + if (ii(pt)) { + var jr = Ye(); + Je(pt, jr, jr), F = yr(jr); + } else + Je(pt, A, y); + Pt.skip = true; + } + return Pt; + } + function Rr(pt, Pt, ga) { + if (!Pt.skip) { + var ua = Hr(pt); + return ga.operatorToken.kind === 27 && Ze(pt), ua; + } + } + function yi(pt, Pt, ga) { + Pt.skip || Da(pt); + } + function qi(pt, Pt, ga) { + if (!Pt.skip) { + var ua = Hr(pt); + return ga.operatorToken.kind === 27 && Ze(pt), ua; + } + } + function je(pt, Pt) { + if (!Pt.skip) { + var ga = pt.operatorToken.kind; + if (e.isAssignmentOperator(ga) && !e.isAssignmentTarget(pt) && (Wr(pt.left), ga === 63 && pt.left.kind === 207)) { + var ua = pt.left; + Cr(ua.expression) && (F = Ge(256, F, pt)); + } + } + var Xn = Pt.inStrictModeStack[Pt.stackIndex], jr = Pt.parentStack[Pt.stackIndex]; + Xn !== void 0 && (U = Xn), jr !== void 0 && (ie = jr), Pt.skip = false, Pt.stackIndex--; + } + function Hr(pt) { + if (pt && e.isBinaryExpression(pt) && !e.isDestructuringAssignment(pt)) + return pt; + Da(pt); + } + } + function Oe(ce) { + Ie(ce), ce.expression.kind === 206 && Wr(ce.expression); + } + function nr(ce) { + var Rr = Ye(), yi = Ye(), qi = Ye(); + pe(ce.condition, Rr, yi), F = yr(Rr), Da(ce.questionToken), Da(ce.whenTrue), n(qi, F), F = yr(yi), Da(ce.colonToken), Da(ce.whenFalse), n(qi, F), F = yr(qi); + } + function Mr(ce) { + var Rr = e.isOmittedExpression(ce) ? void 0 : ce.name; + if (e.isBindingPattern(Rr)) + for (var yi = 0, qi = Rr.elements; yi < qi.length; yi++) { + var je = qi[yi]; + Mr(je); + } + else + F = Ge(16, F, ce); + } + function Pe(ce) { + Ie(ce), (ce.initializer || e.isForInOrOfStatement(ce.parent.parent)) && Mr(ce); + } + function Ue(ce) { + e.isBindingPattern(ce.name) ? (rr(ce.decorators), rr(ce.modifiers), Da(ce.dotDotDotToken), Da(ce.propertyName), Da(ce.initializer), Da(ce.name)) : Ie(ce); + } + function fr(ce) { + Da(ce.tagName), ce.kind !== 339 && ce.fullName && (e.setParent(ce.fullName, ce), e.setParentRecursive(ce.fullName, false)), typeof ce.comment != "string" && rr(ce.comment); + } + function De(ce) { + Ie(ce); + var Rr = e.getHostSignatureFromJSDoc(ce); + Rr && Rr.kind !== 169 && Fe(Rr.symbol, Rr, 32); + } + function gr(ce, Rr, yi) { + mi(Da, ce, Rr, yi), (!e.isOptionalChain(ce) || e.isOutermostOptionalChain(ce)) && (n(Rr, lr(32, F, ce)), n(yi, lr(64, F, ce))); + } + function Vr(ce) { + switch (ce.kind) { + case 206: + Da(ce.questionDotToken), Da(ce.name); + break; + case 207: + Da(ce.questionDotToken), Da(ce.argumentExpression); + break; + case 208: + Da(ce.questionDotToken), rr(ce.typeArguments), rr(ce.arguments); + break; + } + } + function Tr(ce, Rr, yi) { + var qi = e.isOptionalChainRoot(ce) ? Ye() : void 0; + gr(ce.expression, qi || Rr, yi), qi && (F = yr(qi)), mi(Vr, ce, Rr, yi), e.isOutermostOptionalChain(ce) && (n(Rr, lr(32, F, ce)), n(yi, lr(64, F, ce))); + } + function vi(ce) { + if (ii(ce)) { + var Rr = Ye(); + Tr(ce, Rr, Rr), F = yr(Rr); + } else + Tr(ce, A, y); + } + function Ui(ce) { + e.isOptionalChain(ce) ? vi(ce) : Ie(ce); + } + function Yi(ce) { + e.isOptionalChain(ce) ? vi(ce) : Ie(ce); + } + function Wi(ce) { + if (e.isOptionalChain(ce)) + vi(ce); + else { + var Rr = e.skipParentheses(ce.expression); + Rr.kind === 213 || Rr.kind === 214 ? (rr(ce.typeArguments), rr(ce.arguments), Da(ce.expression)) : (Ie(ce), ce.expression.kind === 106 && (F = ur(F, ce))); + } + if (ce.expression.kind === 206) { + var yi = ce.expression; + e.isIdentifier(yi.name) && Cr(yi.expression) && e.isPushOrUnshiftIdentifier(yi.name) && (F = Ge(256, F, ce)); + } + } + function ct(ce) { + switch (ce.kind) { + case 226: + case 257: + case 260: + case 205: + case 182: + case 322: + case 286: + return 1; + case 258: + return 65; + case 261: + case 259: + case 195: + case 176: + return 33; + case 305: + return 37; + case 172: + case 173: + case 169: + if (e.isObjectLiteralOrClassExpressionMethodOrAccessor(ce)) + return 173; + case 171: + case 256: + case 168: + case 174: + case 323: + case 317: + case 179: + case 175: + case 180: + case 170: + return 45; + case 213: + case 214: + return 61; + case 262: + return 4; + case 167: + return ce.initializer ? 4 : 0; + case 292: + case 242: + case 243: + case 244: + case 263: + return 2; + case 235: + return e.isFunctionLike(ce.parent) || e.isClassStaticBlockDeclaration(ce.parent) ? 0 : 2; + } + return 0; + } + function Li(ce) { + ve && (ve.nextContainer = ce), ve = ce; + } + function nt(ce, Rr, yi) { + switch (R.kind) { + case 261: + return Re(ce, Rr, yi); + case 305: + return xt(ce, Rr, yi); + case 226: + case 257: + return Mt(ce, Rr, yi); + case 260: + return ge(R.symbol.exports, R.symbol, ce, Rr, yi); + case 182: + case 322: + case 205: + case 258: + case 286: + return ge(R.symbol.members, R.symbol, ce, Rr, yi); + case 179: + case 180: + case 174: + case 175: + case 323: + case 176: + case 169: + case 168: + case 171: + case 172: + case 173: + case 256: + case 213: + case 214: + case 317: + case 345: + case 338: + case 170: + case 259: + case 195: + return ge(R.locals, void 0, ce, Rr, yi); + } + } + function Mt(ce, Rr, yi) { + return e.isStatic(ce) ? ge(R.symbol.exports, R.symbol, ce, Rr, yi) : ge(R.symbol.members, R.symbol, ce, Rr, yi); + } + function xt(ce, Rr, yi) { + return e.isExternalModule(b) ? Re(ce, Rr, yi) : ge(b.locals, void 0, ce, Rr, yi); + } + function ut(ce) { + var Rr = e.isSourceFile(ce) ? ce : e.tryCast(ce.body, e.isModuleBlock); + return !!Rr && Rr.statements.some(function(yi) { + return e.isExportDeclaration(yi) || e.isExportAssignment(yi); + }); + } + function Dt(ce) { + ce.flags & 16777216 && !ut(ce) ? ce.flags |= 64 : ce.flags &= -65; + } + function Rt(ce) { + if (Dt(ce), e.isAmbientModule(ce)) + if (e.hasSyntacticModifier(ce, 1) && Kn(ce, e.Diagnostics.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible), e.isModuleAugmentationExternal(ce)) + Ii(ce); + else { + var Rr = void 0; + if (ce.name.kind === 10) { + var yi = ce.name.text; + Rr = e.tryParsePattern(yi), Rr === void 0 && Kn(ce.name, e.Diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character, yi); + } + var qi = nt(ce, 512, 110735); + b.patternAmbientModules = e.append(b.patternAmbientModules, Rr && !e.isString(Rr) ? { pattern: Rr, symbol: qi } : void 0); + } + else { + var je = Ii(ce); + if (je !== 0) { + var qi = ce.symbol; + qi.constEnumOnlyModule = !(qi.flags & 304) && je === 2 && qi.constEnumOnlyModule !== false; + } + } + } + function Ii(ce) { + var Rr = C(ce), yi = Rr !== 0; + return nt(ce, yi ? 512 : 1024, yi ? 110735 : 0), Rr; + } + function Ki(ce) { + var Rr = We(131072, Z(ce)); + Fe(Rr, ce, 131072); + var yi = We(2048, "__type"); + Fe(yi, ce, 2048), yi.members = e.createSymbolTable(), yi.members.set(Rr.escapedName, Rr); + } + function Fi(ce) { + var Rr; + if (function(ua) { + ua[ua.Property = 1] = "Property", ua[ua.Accessor = 2] = "Accessor"; + }(Rr || (Rr = {})), U && !e.isAssignmentTarget(ce)) + for (var yi = new e.Map(), qi = 0, je = ce.properties; qi < je.length; qi++) { + var Hr = je[qi]; + if (!(Hr.kind === 298 || Hr.name.kind !== 79)) { + var pt = Hr.name, Pt = Hr.kind === 296 || Hr.kind === 297 || Hr.kind === 169 ? 1 : 2, ga = yi.get(pt.escapedText); + if (!ga) { + yi.set(pt.escapedText, Pt); + continue; + } + } + } + return wt(ce, 4096, "__object"); + } + function ui(ce) { + return wt(ce, 4096, "__jsxAttributes"); + } + function Bt(ce, Rr, yi) { + return nt(ce, Rr, yi); + } + function wt(ce, Rr, yi) { + var qi = We(Rr, yi); + return Rr & 106508 && (qi.parent = R.symbol), Fe(qi, ce, Rr), qi; + } + function na(ce, Rr, yi) { + switch (O.kind) { + case 261: + Re(ce, Rr, yi); + break; + case 305: + if (e.isExternalOrCommonJsModule(R)) { + Re(ce, Rr, yi); + break; + } + default: + O.locals || (O.locals = e.createSymbolTable(), Li(O)), ge(O.locals, void 0, ce, Rr, yi); + } + } + function Ai() { + if (!!ee) { + for (var ce = R, Rr = ve, yi = O, qi = ie, je = F, Hr = 0, pt = ee; Hr < pt.length; Hr++) { + var Pt = pt[Hr], ga = Pt.parent.parent; + R = e.findAncestor(ga.parent, function(fo) { + return !!(ct(fo) & 1); + }) || b, O = e.getEnclosingBlockScopeContainer(ga) || b, F = le({ flags: 2 }), ie = Pt, Da(Pt.typeExpression); + var ua = e.getNameOfDeclaration(Pt); + if ((e.isJSDocEnumTag(Pt) || !Pt.fullName) && ua && e.isPropertyAccessEntityNameExpression(ua.parent)) { + var Xn = Wa(ua.parent); + if (Xn) { + sa(b.symbol, ua.parent, Xn, !!e.findAncestor(ua, function(fo) { + return e.isPropertyAccessExpression(fo) && fo.name.escapedText === "prototype"; + }), false); + var jr = R; + switch (e.getAssignmentDeclarationPropertyAccessKind(ua.parent)) { + case 1: + case 2: + e.isExternalOrCommonJsModule(b) ? R = b : R = void 0; + break; + case 4: + R = ua.parent.expression; + break; + case 3: + R = ua.parent.expression.name; + break; + case 5: + R = T(b, ua.parent.expression) ? b : e.isPropertyAccessExpression(ua.parent.expression) ? ua.parent.expression.name : ua.parent.expression; + break; + case 0: + return e.Debug.fail("Shouldn't have detected typedef or enum on non-assignment declaration"); + } + R && Re(Pt, 524288, 788968), R = jr; + } + } else + e.isJSDocEnumTag(Pt) || !Pt.fullName || Pt.fullName.kind === 79 ? (ie = Pt.parent, na(Pt, 524288, 788968)) : Da(Pt.fullName); + } + R = ce, ve = Rr, O = yi, ie = qi, F = je; + } + } + function Oi(ce) { + !b.parseDiagnostics.length && !(ce.flags & 16777216) && !(ce.flags & 8388608) && !e.isIdentifierName(ce) && (U && ce.originalKeywordKind >= 117 && ce.originalKeywordKind <= 125 ? b.bindDiagnostics.push(g(ce, ji(ce), e.declarationNameToString(ce))) : ce.originalKeywordKind === 132 ? e.isExternalModule(b) && e.isInTopLevelContext(ce) ? b.bindDiagnostics.push(g(ce, e.Diagnostics.Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module, e.declarationNameToString(ce))) : ce.flags & 32768 && b.bindDiagnostics.push(g(ce, e.Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here, e.declarationNameToString(ce))) : ce.originalKeywordKind === 125 && ce.flags & 8192 && b.bindDiagnostics.push(g(ce, e.Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here, e.declarationNameToString(ce)))); + } + function ji(ce) { + return e.getContainingClass(ce) ? e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode : b.externalModuleIndicator ? e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode : e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode; + } + function Vi(ce) { + ce.escapedText === "#constructor" && (b.parseDiagnostics.length || b.bindDiagnostics.push(g(ce, e.Diagnostics.constructor_is_a_reserved_word, e.declarationNameToString(ce)))); + } + function at(ce) { + U && e.isLeftHandSideExpression(ce.left) && e.isAssignmentOperator(ce.operatorToken.kind) && Qa(ce, ce.left); + } + function At(ce) { + U && ce.variableDeclaration && Qa(ce, ce.variableDeclaration.name); + } + function ba(ce) { + if (U && ce.expression.kind === 79) { + var Rr = e.getErrorSpanForNode(b, ce.expression); + b.bindDiagnostics.push(e.createFileDiagnostic(b, Rr.start, Rr.length, e.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode)); + } + } + function $a(ce) { + return e.isIdentifier(ce) && (ce.escapedText === "eval" || ce.escapedText === "arguments"); + } + function Qa(ce, Rr) { + if (Rr && Rr.kind === 79) { + var yi = Rr; + if ($a(yi)) { + var qi = e.getErrorSpanForNode(b, Rr); + b.bindDiagnostics.push(e.createFileDiagnostic(b, qi.start, qi.length, ai(ce), e.idText(yi))); + } + } + } + function ai(ce) { + return e.getContainingClass(ce) ? e.Diagnostics.Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode : b.externalModuleIndicator ? e.Diagnostics.Invalid_use_of_0_Modules_are_automatically_in_strict_mode : e.Diagnostics.Invalid_use_of_0_in_strict_mode; + } + function Dn(ce) { + U && Qa(ce, ce.name); + } + function ka(ce) { + return e.getContainingClass(ce) ? e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode : b.externalModuleIndicator ? e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode : e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5; + } + function Ba(ce) { + if (J < 2 && O.kind !== 305 && O.kind !== 261 && !e.isFunctionLikeOrClassStaticBlockDeclaration(O)) { + var Rr = e.getErrorSpanForNode(b, ce); + b.bindDiagnostics.push(e.createFileDiagnostic(b, Rr.start, Rr.length, ka(ce))); + } + } + function pn(ce) { + J < 1 && U && ce.numericLiteralFlags & 32 && b.bindDiagnostics.push(g(ce, e.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode)); + } + function Cn(ce) { + U && Qa(ce, ce.operand); + } + function Bi(ce) { + U && (ce.operator === 45 || ce.operator === 46) && Qa(ce, ce.operand); + } + function kn(ce) { + U && Kn(ce, e.Diagnostics.with_statements_are_not_allowed_in_strict_mode); + } + function xn(ce) { + U && e.getEmitScriptTarget(se) >= 2 && (e.isDeclarationStatement(ce.statement) || e.isVariableStatement(ce.statement)) && Kn(ce.label, e.Diagnostics.A_label_is_not_allowed_here); + } + function Kn(ce, Rr, yi, qi, je) { + var Hr = e.getSpanOfTokenAtPosition(b, ce.pos); + b.bindDiagnostics.push(e.createFileDiagnostic(b, Hr.start, Hr.length, Rr, yi, qi, je)); + } + function Pn(ce, Rr, yi) { + eo(ce, Rr, Rr, yi); + } + function eo(ce, Rr, yi, qi) { + Rn(ce, { pos: e.getTokenPosOfNode(Rr, b), end: yi.end }, qi); + } + function Rn(ce, Rr, yi) { + var qi = e.createFileDiagnostic(b, Rr.pos, Rr.end - Rr.pos, yi); + ce ? b.bindDiagnostics.push(qi) : b.bindSuggestionDiagnostics = e.append(b.bindSuggestionDiagnostics, Ke(Ke({}, qi), { category: e.DiagnosticCategory.Suggestion })); + } + function Da(ce) { + if (!!ce) { + e.setParent(ce, ie), e.tracing && (ce.tracingPath = b.path); + var Rr = U; + if (Wn(ce), ce.kind > 160) { + var yi = ie; + ie = ce; + var qi = ct(ce); + qi === 0 ? _e(ce) : Ee(ce, qi), ie = yi; + } else { + var yi = ie; + ce.kind === 1 && (ie = ce), bo(ce), ie = yi; + } + U = Rr; + } + } + function bo(ce) { + if (e.hasJSDocNodes(ce)) + if (e.isInJSFile(ce)) + for (var Rr = 0, yi = ce.jsDoc; Rr < yi.length; Rr++) { + var qi = yi[Rr]; + Da(qi); + } + else + for (var je = 0, Hr = ce.jsDoc; je < Hr.length; je++) { + var qi = Hr[je]; + e.setParent(qi, ce), e.setParentRecursive(qi, false); + } + } + function Ro(ce) { + if (!U) + for (var Rr = 0, yi = ce; Rr < yi.length; Rr++) { + var qi = yi[Rr]; + if (!e.isPrologueDirective(qi)) + return; + if (En(qi)) { + U = true; + return; + } + } + } + function En(ce) { + var Rr = e.getSourceTextOfNodeFromSourceFile(b, ce.expression); + return Rr === '"use strict"' || Rr === "'use strict'"; + } + function Wn(ce) { + switch (ce.kind) { + case 79: + if (ce.isInJSDocNamespace) { + for (var Rr = ce.parent; Rr && !e.isJSDocTypeAlias(Rr); ) + Rr = Rr.parent; + na(Rr, 524288, 788968); + break; + } + case 108: + return F && (e.isExpression(ce) || ie.kind === 297) && (ce.flowNode = F), Oi(ce); + case 161: + F && e.isPartOfTypeQuery(ce) && (ce.flowNode = F); + break; + case 231: + case 106: + ce.flowNode = F; + break; + case 80: + return Vi(ce); + case 206: + case 207: + var yi = ce; + F && de(yi) && (yi.flowNode = F), e.isSpecialPropertyDeclaration(yi) && qe(yi), e.isInJSFile(yi) && b.commonJsModuleIndicator && e.isModuleExportsAccessExpression(yi) && !K(O, "module") && ge(b.locals, void 0, yi.expression, 134217729, 111550); + break; + case 221: + var qi = e.getAssignmentDeclarationKind(ce); + switch (qi) { + case 1: + dn(ce); + break; + case 2: + Jn(ce); + break; + case 3: + Si(ce.left, ce); + break; + case 6: + br(ce); + break; + case 4: + Gr(ce); + break; + case 5: + var je = ce.left.expression; + if (e.isInJSFile(ce) && e.isIdentifier(je)) { + var Hr = K(O, je.escapedText); + if (e.isThisInitializedDeclaration(Hr == null ? void 0 : Hr.valueDeclaration)) { + Gr(ce); + break; + } + } + Qi(ce); + break; + case 0: + break; + default: + e.Debug.fail("Unknown binary expression special property assignment kind"); + } + return at(ce); + case 292: + return At(ce); + case 215: + return ba(ce); + case 8: + return pn(ce); + case 220: + return Cn(ce); + case 219: + return Bi(ce); + case 248: + return kn(ce); + case 250: + return xn(ce); + case 192: + he = true; + return; + case 177: + break; + case 163: + return js(ce); + case 164: + return pc(ce); + case 254: + return Xs(ce); + case 203: + return ce.flowNode = F, Xs(ce); + case 167: + case 166: + return to(ce); + case 296: + case 297: + return ps(ce, 4, 0); + case 299: + return ps(ce, 8, 900095); + case 174: + case 175: + case 176: + return nt(ce, 131072, 0); + case 169: + case 168: + return ps(ce, 8192 | (ce.questionToken ? 16777216 : 0), e.isObjectLiteralMethod(ce) ? 0 : 103359); + case 256: + return hs(ce); + case 171: + return nt(ce, 16384, 0); + case 172: + return ps(ce, 32768, 46015); + case 173: + return ps(ce, 65536, 78783); + case 179: + case 317: + case 323: + case 180: + return Ki(ce); + case 182: + case 322: + case 195: + return Co(ce); + case 332: + return De(ce); + case 205: + return Fi(ce); + case 213: + case 214: + return tc(ce); + case 208: + var pt = e.getAssignmentDeclarationKind(ce); + switch (pt) { + case 7: + return Pi(ce); + case 8: + return pa(ce); + case 9: + return Zr(ce); + case 0: + break; + default: + return e.Debug.fail("Unknown call expression assignment declaration kind"); + } + e.isInJSFile(ce) && Pc(ce); + break; + case 226: + case 257: + return U = true, Vc(ce); + case 258: + return na(ce, 64, 788872); + case 259: + return na(ce, 524288, 788968); + case 260: + return Kc(ce); + case 261: + return Rt(ce); + case 286: + return ui(ce); + case 285: + return Bt(ce, 4, 0); + case 265: + case 268: + case 270: + case 275: + return nt(ce, 2097152, 2097152); + case 264: + return $o(ce); + case 267: + return xi(ce); + case 272: + return Pr(ce); + case 271: + return no(ce); + case 305: + return Ro(ce.statements), Ko(); + case 235: + if (!e.isFunctionLikeOrClassStaticBlockDeclaration(ce.parent)) + return; + case 262: + return Ro(ce.statements); + case 340: + if (ce.parent.kind === 323) + return pc(ce); + if (ce.parent.kind !== 322) + break; + case 347: + var Pt = ce, ga = Pt.isBracketed || Pt.typeExpression && Pt.typeExpression.type.kind === 316 ? 16777220 : 4; + return nt(Pt, ga, 0); + case 345: + case 338: + case 339: + return (ee || (ee = [])).push(ce); + } + } + function to(ce) { + return ps(ce, 4 | (ce.questionToken ? 16777216 : 0), 0); + } + function Co(ce) { + return wt(ce, 2048, "__type"); + } + function Ko() { + if (Dt(b), e.isExternalModule(b)) + Oo(); + else if (e.isJsonSourceFile(b)) { + Oo(); + var ce = b.symbol; + ge(b.symbol.exports, b.symbol, b, 4, 67108863), b.symbol = ce; + } + } + function Oo() { + wt(b, 512, '"'.concat(e.removeFileExtension(b.fileName), '"')); + } + function no(ce) { + if (!R.symbol || !R.symbol.exports) + wt(ce, 111551, Z(ce)); + else { + var Rr = e.exportAssignmentIsAlias(ce) ? 2097152 : 4, yi = ge(R.symbol.exports, R.symbol, ce, Rr, 67108863); + ce.isExportEquals && e.setValueDeclaration(yi, ce); + } + } + function $o(ce) { + ce.modifiers && ce.modifiers.length && b.bindDiagnostics.push(g(ce, e.Diagnostics.Modifiers_cannot_appear_here)); + var Rr = e.isSourceFile(ce.parent) ? e.isExternalModule(ce.parent) ? ce.parent.isDeclarationFile ? void 0 : e.Diagnostics.Global_module_exports_may_only_appear_in_declaration_files : e.Diagnostics.Global_module_exports_may_only_appear_in_module_files : e.Diagnostics.Global_module_exports_may_only_appear_at_top_level; + Rr ? b.bindDiagnostics.push(g(ce, Rr)) : (b.symbol.globalExports = b.symbol.globalExports || e.createSymbolTable(), ge(b.symbol.globalExports, b.symbol, ce, 2097152, 2097152)); + } + function Pr(ce) { + !R.symbol || !R.symbol.exports ? wt(ce, 8388608, Z(ce)) : ce.exportClause ? e.isNamespaceExport(ce.exportClause) && (e.setParent(ce.exportClause, ce), ge(R.symbol.exports, R.symbol, ce.exportClause, 2097152, 2097152)) : ge(R.symbol.exports, R.symbol, ce, 8388608, 0); + } + function xi(ce) { + ce.name && nt(ce, 2097152, 2097152); + } + function St(ce) { + return b.externalModuleIndicator ? false : (b.commonJsModuleIndicator || (b.commonJsModuleIndicator = ce, Oo()), true); + } + function pa(ce) { + if (!!St(ce)) { + var Rr = ys(ce.arguments[0], void 0, function(qi, je) { + return je && Fe(je, qi, 67110400), je; + }); + if (Rr) { + var yi = 1048580; + ge(Rr.exports, Rr, ce, yi, 0); + } + } + } + function dn(ce) { + if (!!St(ce)) { + var Rr = ys(ce.left.expression, void 0, function(je, Hr) { + return Hr && Fe(Hr, je, 67110400), Hr; + }); + if (Rr) { + var yi = e.isAliasableExpression(ce.right) && (e.isExportsIdentifier(ce.left.expression) || e.isModuleExportsAccessExpression(ce.left.expression)), qi = yi ? 2097152 : 1048580; + e.setParent(ce.left, ce), ge(Rr.exports, Rr, ce.left, qi, 0); + } + } + } + function Jn(ce) { + if (!!St(ce)) { + var Rr = e.getRightMostAssignedExpression(ce.right); + if (!(e.isEmptyObjectLiteral(Rr) || R === b && T(b, Rr))) { + if (e.isObjectLiteralExpression(Rr) && e.every(Rr.properties, e.isShorthandPropertyAssignment)) { + e.forEach(Rr.properties, Qe); + return; + } + var yi = e.exportAssignmentIsAlias(ce) ? 2097152 : 1049092, qi = ge(b.symbol.exports, b.symbol, ce, yi | 67108864, 0); + e.setValueDeclaration(qi, ce); + } + } + } + function Qe(ce) { + ge(b.symbol.exports, b.symbol, ce, 69206016, 0); + } + function Gr(ce) { + e.Debug.assert(e.isInJSFile(ce)); + var Rr = e.isBinaryExpression(ce) && e.isPropertyAccessExpression(ce.left) && e.isPrivateIdentifier(ce.left.name) || e.isPropertyAccessExpression(ce) && e.isPrivateIdentifier(ce.name); + if (!Rr) { + var yi = e.getThisContainer(ce, false); + switch (yi.kind) { + case 256: + case 213: + var qi = yi.symbol; + if (e.isBinaryExpression(yi.parent) && yi.parent.operatorToken.kind === 63) { + var je = yi.parent.left; + e.isBindableStaticAccessExpression(je) && e.isPrototypeAccess(je.expression) && (qi = Go(je.expression.expression, q)); + } + qi && qi.valueDeclaration && (qi.members = qi.members || e.createSymbolTable(), e.hasDynamicName(ce) ? S(ce, qi, qi.members) : ge(qi.members, qi, ce, 67108868, 0), Fe(qi, qi.valueDeclaration, 32)); + break; + case 171: + case 167: + case 169: + case 172: + case 173: + case 170: + var Hr = yi.parent, pt = e.isStatic(yi) ? Hr.symbol.exports : Hr.symbol.members; + e.hasDynamicName(ce) ? S(ce, Hr.symbol, pt) : ge(pt, Hr.symbol, ce, 67108868, 0, true); + break; + case 305: + if (e.hasDynamicName(ce)) + break; + yi.commonJsModuleIndicator ? ge(yi.symbol.exports, yi.symbol, ce, 1048580, 0) : nt(ce, 1, 111550); + break; + default: + e.Debug.failBadSyntaxKind(yi); + } + } + } + function S(ce, Rr, yi) { + ge(yi, Rr, ce, 4, 0, true, true), Ce(ce, Rr); + } + function Ce(ce, Rr) { + Rr && (Rr.assignmentDeclarationMembers || (Rr.assignmentDeclarationMembers = new e.Map())).set(e.getNodeId(ce), ce); + } + function qe(ce) { + ce.expression.kind === 108 ? Gr(ce) : e.isBindableStaticAccessExpression(ce) && ce.parent.parent.kind === 305 && (e.isPrototypeAccess(ce.expression) ? Si(ce, ce.parent) : Ct(ce)); + } + function br(ce) { + e.setParent(ce.left, ce), e.setParent(ce.right, ce), qn(ce.left.expression, ce.left, false, true); + } + function Zr(ce) { + var Rr = Go(ce.arguments[0].expression); + Rr && Rr.valueDeclaration && Fe(Rr, Rr.valueDeclaration, 32), en(ce, Rr, true); + } + function Si(ce, Rr) { + var yi = ce.expression, qi = yi.expression; + e.setParent(qi, yi), e.setParent(yi, ce), e.setParent(ce, Rr), qn(qi, ce, true, true); + } + function Pi(ce) { + var Rr = Go(ce.arguments[0]), yi = ce.parent.parent.kind === 305; + Rr = sa(Rr, ce.arguments[0], yi, false, false), en(ce, Rr, false); + } + function Qi(ce) { + var Rr, yi = Go(ce.left.expression, R) || Go(ce.left.expression, O); + if (!(!e.isInJSFile(ce) && !e.isFunctionSymbol(yi))) { + var qi = e.getLeftmostAccessExpression(ce.left); + if (!(e.isIdentifier(qi) && ((Rr = K(R, qi.escapedText)) === null || Rr === void 0 ? void 0 : Rr.flags) & 2097152)) + if (e.setParent(ce.left, ce), e.setParent(ce.right, ce), e.isIdentifier(ce.left.expression) && R === b && T(b, ce.left.expression)) + dn(ce); + else if (e.hasDynamicName(ce)) { + wt(ce, 67108868, "__computed"); + var je = sa(yi, ce.left.expression, Wa(ce.left), false, false); + Ce(ce, je); + } else + Ct(e.cast(ce.left, e.isBindableStaticNameExpression)); + } + } + function Ct(ce) { + e.Debug.assert(!e.isIdentifier(ce)), e.setParent(ce.expression, ce), qn(ce.expression, ce, false, false); + } + function sa(ce, Rr, yi, qi, je) { + if ((ce == null ? void 0 : ce.flags) & 2097152) + return ce; + if (yi && !qi) { + var Hr = 67110400, pt = 110735; + ce = ys(Rr, ce, function(Pt, ga, ua) { + if (ga) + return Fe(ga, Pt, Hr), ga; + var Xn = ua ? ua.exports : b.jsGlobalAugmentations || (b.jsGlobalAugmentations = e.createSymbolTable()); + return ge(Xn, ua, Pt, Hr, pt); + }); + } + return je && ce && ce.valueDeclaration && Fe(ce, ce.valueDeclaration, 32), ce; + } + function en(ce, Rr, yi) { + if (!(!Rr || !mo(Rr))) { + var qi = yi ? Rr.members || (Rr.members = e.createSymbolTable()) : Rr.exports || (Rr.exports = e.createSymbolTable()), je = 0, Hr = 0; + e.isFunctionLikeDeclaration(e.getAssignedExpandoInitializer(ce)) ? (je = 8192, Hr = 103359) : e.isCallExpression(ce) && e.isBindableObjectDefinePropertyCall(ce) && (e.some(ce.arguments[2].properties, function(pt) { + var Pt = e.getNameOfDeclaration(pt); + return !!Pt && e.isIdentifier(Pt) && e.idText(Pt) === "set"; + }) && (je |= 65540, Hr |= 78783), e.some(ce.arguments[2].properties, function(pt) { + var Pt = e.getNameOfDeclaration(pt); + return !!Pt && e.isIdentifier(Pt) && e.idText(Pt) === "get"; + }) && (je |= 32772, Hr |= 46015)), je === 0 && (je = 4, Hr = 0), ge(qi, Rr, ce, je | 67108864, Hr & -67108865); + } + } + function Wa(ce) { + return e.isBinaryExpression(ce.parent) ? So(ce.parent).parent.kind === 305 : ce.parent.parent.kind === 305; + } + function qn(ce, Rr, yi, qi) { + var je = Go(ce, R) || Go(ce, O), Hr = Wa(Rr); + je = sa(je, Rr.expression, Hr, yi, qi), en(Rr, je, yi); + } + function mo(ce) { + if (ce.flags & 1072) + return true; + var Rr = ce.valueDeclaration; + if (Rr && e.isCallExpression(Rr)) + return !!e.getAssignedExpandoInitializer(Rr); + var yi = Rr ? e.isVariableDeclaration(Rr) ? Rr.initializer : e.isBinaryExpression(Rr) ? Rr.right : e.isPropertyAccessExpression(Rr) && e.isBinaryExpression(Rr.parent) ? Rr.parent.right : void 0 : void 0; + if (yi = yi && e.getRightMostAssignedExpression(yi), yi) { + var qi = e.isPrototypeAccess(e.isVariableDeclaration(Rr) ? Rr.name : e.isBinaryExpression(Rr) ? Rr.left : Rr); + return !!e.getExpandoInitializer(e.isBinaryExpression(yi) && (yi.operatorToken.kind === 56 || yi.operatorToken.kind === 60) ? yi.right : yi, qi); + } + return false; + } + function So(ce) { + for (; e.isBinaryExpression(ce.parent); ) + ce = ce.parent; + return ce.parent; + } + function Go(ce, Rr) { + if (Rr === void 0 && (Rr = R), e.isIdentifier(ce)) + return K(Rr, ce.escapedText); + var yi = Go(ce.expression); + return yi && yi.exports && yi.exports.get(e.getElementOrPropertyAccessName(ce)); + } + function ys(ce, Rr, yi) { + if (T(b, ce)) + return b.symbol; + if (e.isIdentifier(ce)) + return yi(ce, Go(ce), Rr); + var qi = ys(ce.expression, Rr, yi), je = e.getNameOrArgument(ce); + return e.isPrivateIdentifier(je) && e.Debug.fail("unexpected PrivateIdentifier"), yi(je, qi && qi.exports && qi.exports.get(e.getElementOrPropertyAccessName(ce)), qi); + } + function Pc(ce) { + !b.commonJsModuleIndicator && e.isRequireCall(ce, false) && St(ce); + } + function Vc(ce) { + if (ce.kind === 257) + na(ce, 32, 899503); + else { + var Rr = ce.name ? ce.name.escapedText : "__class"; + wt(ce, 32, Rr), ce.name && l.add(ce.name.escapedText); + } + var yi = ce.symbol, qi = We(4194308, "prototype"), je = yi.exports.get(qi.escapedName); + je && (ce.name && e.setParent(ce.name, ce), b.bindDiagnostics.push(g(je.declarations[0], e.Diagnostics.Duplicate_identifier_0, e.symbolName(qi)))), yi.exports.set(qi.escapedName, qi), qi.parent = yi; + } + function Kc(ce) { + return e.isEnumConst(ce) ? na(ce, 128, 899967) : na(ce, 256, 899327); + } + function Xs(ce) { + U && Qa(ce, ce.name), e.isBindingPattern(ce.name) || (e.isInJSFile(ce) && e.isVariableDeclarationInitializedToBareOrAccessedRequire(ce) && !e.getJSDocTypeTag(ce) && !(e.getCombinedModifierFlags(ce) & 1) ? nt(ce, 2097152, 2097152) : e.isBlockOrCatchScoped(ce) ? na(ce, 2, 111551) : e.isParameterDeclaration(ce) ? nt(ce, 1, 111551) : nt(ce, 1, 111550)); + } + function pc(ce) { + if (!(ce.kind === 340 && R.kind !== 323) && (U && !(ce.flags & 16777216) && Qa(ce, ce.name), e.isBindingPattern(ce.name) ? wt(ce, 1, "__" + ce.parent.parameters.indexOf(ce)) : nt(ce, 1, 111551), e.isParameterPropertyDeclaration(ce, ce.parent))) { + var Rr = ce.parent.parent; + ge(Rr.symbol.members, Rr.symbol, ce, 4 | (ce.questionToken ? 16777216 : 0), 0); + } + } + function hs(ce) { + !b.isDeclarationFile && !(ce.flags & 16777216) && e.isAsyncFunction(ce) && (Y |= 2048), Dn(ce), U ? (Ba(ce), na(ce, 16, 110991)) : nt(ce, 16, 110991); + } + function tc(ce) { + !b.isDeclarationFile && !(ce.flags & 16777216) && e.isAsyncFunction(ce) && (Y |= 2048), F && (ce.flowNode = F), Dn(ce); + var Rr = ce.name ? ce.name.escapedText : "__function"; + return wt(ce, 16, Rr); + } + function ps(ce, Rr, yi) { + return !b.isDeclarationFile && !(ce.flags & 16777216) && e.isAsyncFunction(ce) && (Y |= 2048), F && e.isObjectLiteralOrClassExpressionMethodOrAccessor(ce) && (ce.flowNode = F), e.hasDynamicName(ce) ? wt(ce, Rr, "__computed") : nt(ce, Rr, yi); + } + function Qs(ce) { + var Rr = e.findAncestor(ce, function(yi) { + return yi.parent && e.isConditionalTypeNode(yi.parent) && yi.parent.extendsType === yi; + }); + return Rr && Rr.parent; + } + function js(ce) { + if (e.isJSDocTemplateTag(ce.parent)) { + var Rr = e.getEffectiveContainerForJSDocTemplateTag(ce.parent); + Rr ? (Rr.locals || (Rr.locals = e.createSymbolTable()), ge(Rr.locals, void 0, ce, 262144, 526824)) : nt(ce, 262144, 526824); + } else if (ce.parent.kind === 190) { + var yi = Qs(ce.parent); + yi ? (yi.locals || (yi.locals = e.createSymbolTable()), ge(yi.locals, void 0, ce, 262144, 526824)) : wt(ce, 262144, Z(ce)); + } else + nt(ce, 262144, 526824); + } + function ds(ce) { + var Rr = C(ce); + return Rr === 1 || Rr === 2 && e.shouldPreserveConstEnums(se); + } + function Ji(ce) { + if (!(F.flags & 1)) + return false; + if (F === d) { + var Rr = e.isStatementButNotDeclaration(ce) && ce.kind !== 236 || ce.kind === 257 || ce.kind === 261 && ds(ce); + if (Rr && (F = D, !se.allowUnreachableCode)) { + var yi = e.unreachableCodeIsError(se) && !(ce.flags & 16777216) && (!e.isVariableStatement(ce) || !!(e.getCombinedNodeFlags(ce.declarationList) & 3) || ce.declarationList.declarations.some(function(qi) { + return !!qi.initializer; + })); + G(ce, function(qi, je) { + return eo(yi, qi, je, e.Diagnostics.Unreachable_code_detected); + }); + } + } + return true; + } + } + function G(b, se) { + if (e.isStatement(b) && oe(b) && e.isBlock(b.parent)) { + var J = b.parent.statements, ie = e.sliceAfter(J, b); + e.getRangesWhere(ie, oe, function(R, q) { + return se(ie[R], ie[q - 1]); + }); + } else + se(b, b); + } + function oe(b) { + return !e.isFunctionDeclaration(b) && !f(b) && !e.isEnumDeclaration(b) && !(e.isVariableStatement(b) && !(e.getCombinedNodeFlags(b) & 3) && b.declarationList.declarations.some(function(se) { + return !se.initializer; + })); + } + function f(b) { + switch (b.kind) { + case 258: + case 259: + return true; + case 261: + return C(b) !== 1; + case 260: + return e.hasSyntacticModifier(b, 2048); + default: + return false; + } + } + function T(b, se) { + for (var J = 0, ie = [se]; ie.length && J < 100; ) { + if (J++, se = ie.shift(), e.isExportsIdentifier(se) || e.isModuleExportsAccessExpression(se)) + return true; + if (e.isIdentifier(se)) { + var R = K(b, se.escapedText); + if (!!R && !!R.valueDeclaration && e.isVariableDeclaration(R.valueDeclaration) && !!R.valueDeclaration.initializer) { + var q = R.valueDeclaration.initializer; + ie.push(q), e.isAssignmentExpression(q, true) && (ie.push(q.left), ie.push(q.right)); + } + } + } + return false; + } + e.isExportsOrModuleExportsOrAlias = T; + function K(b, se) { + var J = b.locals && b.locals.get(se); + return J ? J.exportSymbol || J : e.isSourceFile(b) && b.jsGlobalAugmentations && b.jsGlobalAugmentations.has(se) ? b.jsGlobalAugmentations.get(se) : b.symbol && b.symbol.exports && b.symbol.exports.get(se); + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C, w, B, E, Q, le, N, p, m, G) { + return oe; + function oe(f) { + f === void 0 && (f = function() { + return true; + }); + var T = [], K = []; + return { walkType: function(x) { + try { + return b(x), { visitedTypes: e.getOwnValues(T), visitedSymbols: e.getOwnValues(K) }; + } finally { + e.clear(T), e.clear(K); + } + }, walkSymbol: function(x) { + try { + return F(x), { visitedTypes: e.getOwnValues(T), visitedSymbols: e.getOwnValues(K) }; + } finally { + e.clear(T), e.clear(K); + } + } }; + function b(x) { + if (!!x && !T[x.id]) { + T[x.id] = x; + var X = F(x.symbol); + if (!X) { + if (x.flags & 524288) { + var $ = x, A = $.objectFlags; + A & 4 && se(x), A & 32 && O(x), A & 3 && ee(x), A & 24 && he($); + } + x.flags & 262144 && J(x), x.flags & 3145728 && ie(x), x.flags & 4194304 && R(x), x.flags & 8388608 && q(x); + } + } + } + function se(x) { + b(x.target), e.forEach(G(x), b); + } + function J(x) { + b(p(x)); + } + function ie(x) { + e.forEach(x.types, b); + } + function R(x) { + b(x.type); + } + function q(x) { + b(x.objectType), b(x.indexType), b(x.constraint); + } + function O(x) { + b(x.typeParameter), b(x.constraintType), b(x.templateType), b(x.modifiersType); + } + function ve(x) { + var X = w(x); + X && b(X.type), e.forEach(x.typeParameters, b); + for (var $ = 0, A = x.parameters; $ < A.length; $++) { + var y = A[$]; + F(y); + } + b(C(x)), b(B(x)); + } + function ee(x) { + he(x), e.forEach(x.typeParameters, b), e.forEach(E(x), b), b(x.thisType); + } + function he(x) { + for (var X = Q(x), $ = 0, A = X.indexInfos; $ < A.length; $++) { + var y = A[$]; + b(y.keyType), b(y.type); + } + for (var V = 0, L = X.callSignatures; V < L.length; V++) { + var P = L[V]; + ve(P); + } + for (var k = 0, Y = X.constructSignatures; k < Y.length; k++) { + var P = Y[k]; + ve(P); + } + for (var U = 0, j = X.properties; U < j.length; U++) { + var H = j[U]; + F(H); + } + } + function F(x) { + if (!x) + return false; + var X = e.getSymbolId(x); + if (K[X]) + return false; + if (K[X] = x, !f(x)) + return true; + var $ = le(x); + return b($), x.exports && x.exports.forEach(F), e.forEach(x.declarations, function(A) { + if (A.type && A.type.kind === 181) { + var y = A.type, V = N(m(y.exprName)); + F(V); + } + }), false; + } + } + } + e.createGetSymbolWalker = a; + })(ke || (ke = {})); + var ke; + (function(e) { + var a = /^".+"$/, C = "(anonymous)", w = 1, B = 1, E = 1, Q = 1, le; + (function(l) { + l[l.AllowsSyncIterablesFlag = 1] = "AllowsSyncIterablesFlag", l[l.AllowsAsyncIterablesFlag = 2] = "AllowsAsyncIterablesFlag", l[l.AllowsStringInputFlag = 4] = "AllowsStringInputFlag", l[l.ForOfFlag = 8] = "ForOfFlag", l[l.YieldStarFlag = 16] = "YieldStarFlag", l[l.SpreadFlag = 32] = "SpreadFlag", l[l.DestructuringFlag = 64] = "DestructuringFlag", l[l.PossiblyOutOfBounds = 128] = "PossiblyOutOfBounds", l[l.Element = 1] = "Element", l[l.Spread = 33] = "Spread", l[l.Destructuring = 65] = "Destructuring", l[l.ForOf = 13] = "ForOf", l[l.ForAwaitOf = 15] = "ForAwaitOf", l[l.YieldStar = 17] = "YieldStar", l[l.AsyncYieldStar = 19] = "AsyncYieldStar", l[l.GeneratorReturnType = 1] = "GeneratorReturnType", l[l.AsyncGeneratorReturnType = 2] = "AsyncGeneratorReturnType"; + })(le || (le = {})); + var N; + (function(l) { + l[l.Yield = 0] = "Yield", l[l.Return = 1] = "Return", l[l.Next = 2] = "Next"; + })(N || (N = {})); + var p; + (function(l) { + l[l.Normal = 0] = "Normal", l[l.FunctionReturn = 1] = "FunctionReturn", l[l.GeneratorNext = 2] = "GeneratorNext", l[l.GeneratorYield = 3] = "GeneratorYield"; + })(p || (p = {})); + var m; + (function(l) { + l[l.None = 0] = "None", l[l.TypeofEQString = 1] = "TypeofEQString", l[l.TypeofEQNumber = 2] = "TypeofEQNumber", l[l.TypeofEQBigInt = 4] = "TypeofEQBigInt", l[l.TypeofEQBoolean = 8] = "TypeofEQBoolean", l[l.TypeofEQSymbol = 16] = "TypeofEQSymbol", l[l.TypeofEQObject = 32] = "TypeofEQObject", l[l.TypeofEQFunction = 64] = "TypeofEQFunction", l[l.TypeofEQHostObject = 128] = "TypeofEQHostObject", l[l.TypeofNEString = 256] = "TypeofNEString", l[l.TypeofNENumber = 512] = "TypeofNENumber", l[l.TypeofNEBigInt = 1024] = "TypeofNEBigInt", l[l.TypeofNEBoolean = 2048] = "TypeofNEBoolean", l[l.TypeofNESymbol = 4096] = "TypeofNESymbol", l[l.TypeofNEObject = 8192] = "TypeofNEObject", l[l.TypeofNEFunction = 16384] = "TypeofNEFunction", l[l.TypeofNEHostObject = 32768] = "TypeofNEHostObject", l[l.EQUndefined = 65536] = "EQUndefined", l[l.EQNull = 131072] = "EQNull", l[l.EQUndefinedOrNull = 262144] = "EQUndefinedOrNull", l[l.NEUndefined = 524288] = "NEUndefined", l[l.NENull = 1048576] = "NENull", l[l.NEUndefinedOrNull = 2097152] = "NEUndefinedOrNull", l[l.Truthy = 4194304] = "Truthy", l[l.Falsy = 8388608] = "Falsy", l[l.All = 16777215] = "All", l[l.BaseStringStrictFacts = 3735041] = "BaseStringStrictFacts", l[l.BaseStringFacts = 12582401] = "BaseStringFacts", l[l.StringStrictFacts = 16317953] = "StringStrictFacts", l[l.StringFacts = 16776705] = "StringFacts", l[l.EmptyStringStrictFacts = 12123649] = "EmptyStringStrictFacts", l[l.EmptyStringFacts = 12582401] = "EmptyStringFacts", l[l.NonEmptyStringStrictFacts = 7929345] = "NonEmptyStringStrictFacts", l[l.NonEmptyStringFacts = 16776705] = "NonEmptyStringFacts", l[l.BaseNumberStrictFacts = 3734786] = "BaseNumberStrictFacts", l[l.BaseNumberFacts = 12582146] = "BaseNumberFacts", l[l.NumberStrictFacts = 16317698] = "NumberStrictFacts", l[l.NumberFacts = 16776450] = "NumberFacts", l[l.ZeroNumberStrictFacts = 12123394] = "ZeroNumberStrictFacts", l[l.ZeroNumberFacts = 12582146] = "ZeroNumberFacts", l[l.NonZeroNumberStrictFacts = 7929090] = "NonZeroNumberStrictFacts", l[l.NonZeroNumberFacts = 16776450] = "NonZeroNumberFacts", l[l.BaseBigIntStrictFacts = 3734276] = "BaseBigIntStrictFacts", l[l.BaseBigIntFacts = 12581636] = "BaseBigIntFacts", l[l.BigIntStrictFacts = 16317188] = "BigIntStrictFacts", l[l.BigIntFacts = 16775940] = "BigIntFacts", l[l.ZeroBigIntStrictFacts = 12122884] = "ZeroBigIntStrictFacts", l[l.ZeroBigIntFacts = 12581636] = "ZeroBigIntFacts", l[l.NonZeroBigIntStrictFacts = 7928580] = "NonZeroBigIntStrictFacts", l[l.NonZeroBigIntFacts = 16775940] = "NonZeroBigIntFacts", l[l.BaseBooleanStrictFacts = 3733256] = "BaseBooleanStrictFacts", l[l.BaseBooleanFacts = 12580616] = "BaseBooleanFacts", l[l.BooleanStrictFacts = 16316168] = "BooleanStrictFacts", l[l.BooleanFacts = 16774920] = "BooleanFacts", l[l.FalseStrictFacts = 12121864] = "FalseStrictFacts", l[l.FalseFacts = 12580616] = "FalseFacts", l[l.TrueStrictFacts = 7927560] = "TrueStrictFacts", l[l.TrueFacts = 16774920] = "TrueFacts", l[l.SymbolStrictFacts = 7925520] = "SymbolStrictFacts", l[l.SymbolFacts = 16772880] = "SymbolFacts", l[l.ObjectStrictFacts = 7888800] = "ObjectStrictFacts", l[l.ObjectFacts = 16736160] = "ObjectFacts", l[l.FunctionStrictFacts = 7880640] = "FunctionStrictFacts", l[l.FunctionFacts = 16728e3] = "FunctionFacts", l[l.UndefinedFacts = 9830144] = "UndefinedFacts", l[l.NullFacts = 9363232] = "NullFacts", l[l.EmptyObjectStrictFacts = 16318463] = "EmptyObjectStrictFacts", l[l.AllTypeofNE = 556800] = "AllTypeofNE", l[l.EmptyObjectFacts = 16777215] = "EmptyObjectFacts", l[l.OrFactsMask = 8256] = "OrFactsMask", l[l.AndFactsMask = 16768959] = "AndFactsMask"; + })(m || (m = {})); + var G = new e.Map(e.getEntries({ string: 1, number: 2, bigint: 4, boolean: 8, symbol: 16, undefined: 65536, object: 32, function: 64 })), oe = new e.Map(e.getEntries({ string: 256, number: 512, bigint: 1024, boolean: 2048, symbol: 4096, undefined: 524288, object: 8192, function: 16384 })), f; + (function(l) { + l[l.Type = 0] = "Type", l[l.ResolvedBaseConstructorType = 1] = "ResolvedBaseConstructorType", l[l.DeclaredType = 2] = "DeclaredType", l[l.ResolvedReturnType = 3] = "ResolvedReturnType", l[l.ImmediateBaseConstraint = 4] = "ImmediateBaseConstraint", l[l.EnumTagType = 5] = "EnumTagType", l[l.ResolvedTypeArguments = 6] = "ResolvedTypeArguments", l[l.ResolvedBaseTypes = 7] = "ResolvedBaseTypes", l[l.WriteType = 8] = "WriteType"; + })(f || (f = {})); + var T; + (function(l) { + l[l.Normal = 0] = "Normal", l[l.Contextual = 1] = "Contextual", l[l.Inferential = 2] = "Inferential", l[l.SkipContextSensitive = 4] = "SkipContextSensitive", l[l.SkipGenericFunctions = 8] = "SkipGenericFunctions", l[l.IsForSignatureHelp = 16] = "IsForSignatureHelp", l[l.IsForStringLiteralArgumentCompletions = 32] = "IsForStringLiteralArgumentCompletions", l[l.RestBindingElement = 64] = "RestBindingElement"; + })(T || (T = {})); + var K; + (function(l) { + l[l.BivariantCallback = 1] = "BivariantCallback", l[l.StrictCallback = 2] = "StrictCallback", l[l.IgnoreReturnTypes = 4] = "IgnoreReturnTypes", l[l.StrictArity = 8] = "StrictArity", l[l.Callback = 3] = "Callback"; + })(K || (K = {})); + var b; + (function(l) { + l[l.None = 0] = "None", l[l.Source = 1] = "Source", l[l.Target = 2] = "Target", l[l.PropertyCheck = 4] = "PropertyCheck", l[l.InPropertyCheck = 8] = "InPropertyCheck"; + })(b || (b = {})); + var se; + (function(l) { + l[l.None = 0] = "None", l[l.Source = 1] = "Source", l[l.Target = 2] = "Target", l[l.Both = 3] = "Both"; + })(se || (se = {})); + var J; + (function(l) { + l[l.IncludeReadonly = 1] = "IncludeReadonly", l[l.ExcludeReadonly = 2] = "ExcludeReadonly", l[l.IncludeOptional = 4] = "IncludeOptional", l[l.ExcludeOptional = 8] = "ExcludeOptional"; + })(J || (J = {})); + var ie; + (function(l) { + l[l.None = 0] = "None", l[l.Source = 1] = "Source", l[l.Target = 2] = "Target", l[l.Both = 3] = "Both"; + })(ie || (ie = {})); + var R; + (function(l) { + l.resolvedExports = "resolvedExports", l.resolvedMembers = "resolvedMembers"; + })(R || (R = {})); + var q; + (function(l) { + l[l.Local = 0] = "Local", l[l.Parameter = 1] = "Parameter"; + })(q || (q = {})); + var O = e.and(k, P), ve; + (function(l) { + l[l.GetAccessor = 1] = "GetAccessor", l[l.SetAccessor = 2] = "SetAccessor", l[l.PropertyAssignment = 4] = "PropertyAssignment", l[l.Method = 8] = "Method", l[l.PrivateStatic = 16] = "PrivateStatic", l[l.GetOrSetAccessor = 3] = "GetOrSetAccessor", l[l.PropertyAssignmentOrMethod = 12] = "PropertyAssignmentOrMethod"; + })(ve || (ve = {})); + var ee; + (function(l) { + l[l.None = 0] = "None", l[l.ExportValue = 1] = "ExportValue", l[l.ExportType = 2] = "ExportType", l[l.ExportNamespace = 4] = "ExportNamespace"; + })(ee || (ee = {})); + var he; + (function(l) { + l[l.None = 0] = "None", l[l.StrongArityForUntypedJS = 1] = "StrongArityForUntypedJS", l[l.VoidIsNonOptional = 2] = "VoidIsNonOptional"; + })(he || (he = {})); + var F; + (function(l) { + l[l.Uppercase = 0] = "Uppercase", l[l.Lowercase = 1] = "Lowercase", l[l.Capitalize = 2] = "Capitalize", l[l.Uncapitalize = 3] = "Uncapitalize"; + })(F || (F = {})); + var x = new e.Map(e.getEntries({ Uppercase: 0, Lowercase: 1, Capitalize: 2, Uncapitalize: 3 })); + function X() { + } + function $() { + this.flags = 0; + } + function A(l) { + return l.id || (l.id = B, B++), l.id; + } + e.getNodeId = A; + function y(l) { + return l.id || (l.id = w, w++), l.id; + } + e.getSymbolId = y; + function V(l, d) { + var D = e.getModuleInstanceState(l); + return D === 1 || d && D === 2; + } + e.isInstantiatedModule = V; + function L(l) { + var d = e.memoize(function() { + var r = new e.Map(); + return l.getSourceFiles().forEach(function(i) { + !i.resolvedModules || i.resolvedModules.forEach(function(t) { + t && t.packageId && r.set(t.packageId.name, t.extension === ".d.ts" || !!r.get(t.packageId.name)); + }); + }), r; + }), D = [], fe = function(r) { + D.push(r); + }, g, ne, ue, We = e.objectAllocator.getSymbolConstructor(), Fe = e.objectAllocator.getTypeConstructor(), Z = e.objectAllocator.getSignatureConstructor(), Be = 0, ge = 0, Re = 0, ze = 0, Ee = 0, He = 0, rr = 0, Ie, _e, we = e.createSymbolTable(), de = [1], ye = l.getCompilerOptions(), Ae = e.getEmitScriptTarget(ye), er = e.getEmitModuleKind(ye), ir = e.getUseDefineForClassFields(ye), Cr = e.getAllowSyntheticDefaultImports(ye), Ye = e.getStrictOptionValue(ye, "strictNullChecks"), Br = e.getStrictOptionValue(ye, "strictFunctionTypes"), Er = e.getStrictOptionValue(ye, "strictBindCallApply"), Ne = e.getStrictOptionValue(ye, "strictPropertyInitialization"), n = e.getStrictOptionValue(ye, "noImplicitAny"), lr = e.getStrictOptionValue(ye, "noImplicitThis"), be = e.getStrictOptionValue(ye, "useUnknownInCatchVariables"), Ge = !!ye.keyofStringsOnly, ur = ye.suppressExcessPropertyErrors ? 0 : 8192, yr = ye.exactOptionalPropertyTypes, Ir = dO(), wr = M9(), Ur = m_(), ii = e.createSymbolTable(), mi = oo(4, "undefined"); + mi.declarations = []; + var pe = oo(1536, "globalThis", 8); + pe.exports = ii, pe.declarations = [], ii.set(pe.escapedName, pe); + var or = oo(4, "arguments"), qr = oo(4, "require"), si, Di = { getNodeCount: function() { + return e.sum(l.getSourceFiles(), "nodeCount"); + }, getIdentifierCount: function() { + return e.sum(l.getSourceFiles(), "identifierCount"); + }, getSymbolCount: function() { + return e.sum(l.getSourceFiles(), "symbolCount") + ge; + }, getTypeCount: function() { + return Be; + }, getInstantiationCount: function() { + return ze; + }, getRelationCacheSizes: function() { + return { assignable: dt.size, identity: wa.size, subtype: Or.size, strictSubtype: ki.size }; + }, isUndefinedSymbol: function(r) { + return r === mi; + }, isArgumentsSymbol: function(r) { + return r === or; + }, isUnknownSymbol: function(r) { + return r === xe; + }, getMergedSymbol: so, getDiagnostics: X6, getGlobalDiagnostics: $M, getRecursionIdentity: ov, getUnmatchedProperties: sb, getTypeOfSymbolAtLocation: function(r, i) { + var t = e.getParseTreeNode(i); + return t ? N8(r, t) : Pe; + }, getTypeOfSymbol: Jt, getSymbolsOfParameterPropertyDeclaration: function(r, i) { + var t = e.getParseTreeNode(r, e.isParameter); + return t === void 0 ? e.Debug.fail("Cannot get symbols of a synthetic parameter that cannot be resolved to a parse-tree node.") : cd(t, e.escapeLeadingUnderscores(i)); + }, getDeclaredTypeOfSymbol: go, getPropertiesOfType: uo, getPropertyOfType: function(r, i) { + return bi(r, e.escapeLeadingUnderscores(i)); + }, getPrivateIdentifierPropertyOfType: function(r, i, t) { + var o = e.getParseTreeNode(t); + if (!!o) { + var s = e.escapeLeadingUnderscores(i), u = g0(s, o); + return u ? Ub(r, u) : void 0; + } + }, getTypeOfPropertyOfType: function(r, i) { + return da(r, e.escapeLeadingUnderscores(i)); + }, getIndexInfoOfType: function(r, i) { + return ss(r, i === 0 ? Li : nt); + }, getIndexInfosOfType: Hn, getSignaturesOfType: ot, getIndexTypeOfType: function(r, i) { + return cs(r, i === 0 ? Li : nt); + }, getIndexType: function(r) { + return ql(r); + }, getBaseTypes: Qc, getBaseTypeOfLiteralType: Kl, getWidenedType: $c, getTypeFromTypeNode: function(r) { + var i = e.getParseTreeNode(r, e.isTypeNode); + return i ? Va(i) : Pe; + }, getParameterType: $u, getParameterIdentifierNameAtPosition: q7, getPromisedTypeOfPromise: Tv, getAwaitedType: function(r) { + return ag(r); + }, getReturnTypeOfSignature: yo, isNullableType: d0, getNullableType: Uh, getNonNullableType: C_, getNonOptionalType: YD, getTypeArguments: xo, typeToTypeNode: Ur.typeToTypeNode, indexInfoToIndexSignatureDeclaration: Ur.indexInfoToIndexSignatureDeclaration, signatureToSignatureDeclaration: Ur.signatureToSignatureDeclaration, symbolToEntityName: Ur.symbolToEntityName, symbolToExpression: Ur.symbolToExpression, symbolToTypeParameterDeclarations: Ur.symbolToTypeParameterDeclarations, symbolToParameterDeclaration: Ur.symbolToParameterDeclaration, typeParameterToDeclaration: Ur.typeParameterToDeclaration, getSymbolsInScope: function(r, i) { + var t = e.getParseTreeNode(r); + return t ? ZM(t, i) : []; + }, getSymbolAtLocation: function(r) { + var i = e.getParseTreeNode(r); + return i ? el(i, true) : void 0; + }, getIndexInfosAtLocation: function(r) { + var i = e.getParseTreeNode(r); + return i ? o9(i) : void 0; + }, getShorthandAssignmentValueSymbol: function(r) { + var i = e.getParseTreeNode(r); + return i ? s9(i) : void 0; + }, getExportSpecifierLocalTargetSymbol: function(r) { + var i = e.getParseTreeNode(r, e.isExportSpecifier); + return i ? c9(i) : void 0; + }, getExportSymbolOfSymbol: function(r) { + return so(r.exportSymbol || r); + }, getTypeAtLocation: function(r) { + var i = e.getParseTreeNode(r); + return i ? Bd(i) : Pe; + }, getTypeOfAssignmentPattern: function(r) { + var i = e.getParseTreeNode(r, e.isAssignmentPattern); + return i && V0(i) || Pe; + }, getPropertySymbolOfDestructuringAssignment: function(r) { + var i = e.getParseTreeNode(r, e.isIdentifier); + return i ? u9(i) : void 0; + }, signatureToString: function(r, i, t, o) { + return Ml(r, e.getParseTreeNode(i), t, o); + }, typeToString: function(r, i, t) { + return Ot(r, e.getParseTreeNode(i), t); + }, symbolToString: function(r, i, t, o) { + return tn(r, e.getParseTreeNode(i), t, o); + }, typePredicateToString: function(r, i, t) { + return Ll(r, e.getParseTreeNode(i), t); + }, writeSignature: function(r, i, t, o, s) { + return Ml(r, e.getParseTreeNode(i), t, o, s); + }, writeType: function(r, i, t, o) { + return Ot(r, e.getParseTreeNode(i), t, o); + }, writeSymbol: function(r, i, t, o, s) { + return tn(r, e.getParseTreeNode(i), t, o, s); + }, writeTypePredicate: function(r, i, t, o) { + return Ll(r, e.getParseTreeNode(i), t, o); + }, getAugmentedPropertiesOfType: LS, getRootSymbols: eA, getSymbolOfExpando: T0, getContextualType: function(r, i) { + var t = e.getParseTreeNode(r, e.isExpression); + if (!!t) + return i & 4 ? wi(t, function() { + return ou(t, i); + }) : ou(t, i); + }, getContextualTypeForObjectLiteralElement: function(r) { + var i = e.getParseTreeNode(r, e.isObjectLiteralElementLike); + return i ? kb(i) : void 0; + }, getContextualTypeForArgumentAtIndex: function(r, i) { + var t = e.getParseTreeNode(r, e.isCallLikeExpression); + return t && Cb(t, i); + }, getContextualTypeForJsxAttribute: function(r) { + var i = e.getParseTreeNode(r, e.isJsxAttributeLike); + return i && AC(i); + }, isContextSensitive: Ju, getTypeOfPropertyOfContextualType: Md, getFullyQualifiedName: cl, getResolvedSignature: function(r, i, t) { + return Xi(r, i, t, 0); + }, getResolvedSignatureForStringLiteralCompletions: function(r, i, t) { + return Xi(r, t, void 0, 32, i); + }, getResolvedSignatureForSignatureHelp: function(r, i, t) { + return Xi(r, i, t, 16); + }, getExpandedParameters: Jm, hasEffectiveRestParameter: Xl, containsArgumentsReference: Gm, getConstantValue: function(r) { + var i = e.getParseTreeNode(r, nA); + return i ? BS(i) : void 0; + }, isValidPropertyAccess: function(r, i) { + var t = e.getParseTreeNode(r, e.isPropertyAccessOrQualifiedNameOrImportTypeNode); + return !!t && a7(t, e.escapeLeadingUnderscores(i)); + }, isValidPropertyAccessForCompletions: function(r, i, t) { + var o = e.getParseTreeNode(r, e.isPropertyAccessExpression); + return !!o && ik(o, i, t); + }, getSignatureFromDeclaration: function(r) { + var i = e.getParseTreeNode(r, e.isFunctionLike); + return i ? yl(i) : void 0; + }, isImplementationOfOverload: function(r) { + var i = e.getParseTreeNode(r, e.isFunctionLike); + return i ? tA(i) : void 0; + }, getImmediateAliasedSymbol: wb, getAliasedSymbol: Ps, getEmitResolver: Ho, getExportsOfModule: J_, getExportsAndPropertiesOfModule: j_, forEachExportAndPropertyOfModule: U_, getSymbolWalker: e.createGetSymbolWalker(_3, Yc, yo, Qc, Ru, Jt, Dl, Tc, e.getFirstIdentifier, xo), getAmbientModules: xL, getJsxIntrinsicTagNamesAt: R5, isOptionalParameter: function(r) { + var i = e.getParseTreeNode(r, e.isParameter); + return i ? kd(i) : false; + }, tryGetMemberInModuleExports: function(r, i) { + return iu(e.escapeLeadingUnderscores(r), i); + }, tryGetMemberInModuleExportsAndProperties: function(r, i) { + return vd(e.escapeLeadingUnderscores(r), i); + }, tryFindAmbientModule: function(r) { + return b_(r, true); + }, tryFindAmbientModuleWithoutAugmentations: function(r) { + return b_(r, false); + }, getApparentType: $s, getUnionType: Pa, isTypeAssignableTo: ao, createAnonymousType: rs, createSignature: Fu, createSymbol: oo, createIndexInfo: zl, getAnyType: function() { + return Oe; + }, getStringType: function() { + return Li; + }, getNumberType: function() { + return nt; + }, createPromiseType: Ny, createArrayType: Zs, getElementTypeOfArrayType: KD, getBooleanType: function() { + return Ii; + }, getFalseType: function(r) { + return r ? xt : ut; + }, getTrueType: function(r) { + return r ? Dt : Rt; + }, getVoidType: function() { + return Fi; + }, getUndefinedType: function() { + return Tr; + }, getNullType: function() { + return Wi; + }, getESSymbolType: function() { + return Ki; + }, getNeverType: function() { + return ui; + }, getOptionalType: function() { + return Ui; + }, getPromiseType: function() { + return ay(false); + }, getPromiseLikeType: function() { + return kx(false); + }, isSymbolAccessible: g_, isArrayType: Tu, isTupleType: Yn, isArrayLikeType: sp, isTypeInvalidDueToUnionDiscriminant: z1, getExactOptionalProperties: lw, getAllPossiblePropertiesOfTypes: W1, getSuggestedSymbolForNonexistentProperty: qb, getSuggestionForNonexistentProperty: Vb, getSuggestedSymbolForNonexistentJSXAttribute: ek, getSuggestedSymbolForNonexistentSymbol: function(r, i, t) { + return Kb(r, e.escapeLeadingUnderscores(i), t); + }, getSuggestionForNonexistentSymbol: function(r, i, t) { + return e7(r, e.escapeLeadingUnderscores(i), t); + }, getSuggestedSymbolForNonexistentModule: v0, getSuggestionForNonexistentExport: r7, getSuggestedSymbolForNonexistentClassMember: ZC, getBaseConstraintOfType: uc, getDefaultFromTypeParameter: function(r) { + return r && r.flags & 262144 ? D_(r) : void 0; + }, resolveName: function(r, i, t, o) { + return es(i, e.escapeLeadingUnderscores(r), t, void 0, void 0, false, o); + }, getJsxNamespace: function(r) { + return e.unescapeLeadingUnderscores(po(r)); + }, getJsxFragmentFactory: function(r) { + var i = jS(r); + return i && e.unescapeLeadingUnderscores(e.getFirstIdentifier(i).escapedText); + }, getAccessibleSymbolChain: pl, getTypePredicateOfSignature: Yc, resolveExternalModuleName: function(r) { + var i = e.getParseTreeNode(r, e.isExpression); + return i && ac(i, i, true); + }, resolveExternalModuleSymbol: Us, tryGetThisTypeAt: function(r, i) { + var t = e.getParseTreeNode(r); + return t && bb(t, i); + }, getTypeArgumentConstraint: function(r) { + var i = e.getParseTreeNode(r, e.isTypeNode); + return i && WO(i); + }, getSuggestionDiagnostics: function(r, i) { + var t = e.getParseTreeNode(r, e.isSourceFile) || e.Debug.fail("Could not determine parsed source file."); + if (e.skipTypeChecking(t, ye, l)) + return e.emptyArray; + var o; + try { + return g = i, FS(t), e.Debug.assert(!!(va(t).flags & 1)), o = e.addRange(o, jn.getDiagnostics(t.fileName)), _6(H6(t), function(s, u, h) { + !e.containsParseError(s) && !G6(u, !!(s.flags & 16777216)) && (o || (o = [])).push(Ke(Ke({}, h), { category: e.DiagnosticCategory.Suggestion })); + }), o || e.emptyArray; + } finally { + g = void 0; + } + }, runWithCancellationToken: function(r, i) { + try { + return g = r, i(Di); + } finally { + g = void 0; + } + }, getLocalTypeParametersOfClassOrInterfaceOrTypeAlias: Af, isDeclarationVisible: wu, isPropertyAccessible: Hb, getTypeOnlyAliasDeclaration: vu, getMemberOverrideModifierStatus: dM }; + function wi(r, i) { + var t = e.findAncestor(r, e.isCallLikeExpression), o = t && va(t).resolvedSignature; + if (t) { + var s = r; + do + va(s).skipDirectInference = true, s = s.parent; + while (s && s !== t); + va(t).resolvedSignature = void 0; + } + var u = i(); + if (t) { + var s = r; + do + va(s).skipDirectInference = void 0, s = s.parent; + while (s && s !== t); + va(t).resolvedSignature = o; + } + return u; + } + function Xi(r, i, t, o, s) { + var u = e.getParseTreeNode(r, e.isCallLikeExpression); + si = t; + var h = u ? s ? wi(s, function() { + return Mg(u, i, o); + }) : Mg(u, i, o) : void 0; + return si = void 0, h; + } + var et = new e.Map(), Gi = new e.Map(), Wt = new e.Map(), Zt = new e.Map(), _r = new e.Map(), pi = new e.Map(), ae = new e.Map(), Xe = new e.Map(), Jr = new e.Map(), ti = new e.Map(), Ze = new e.Map(), Sr = new e.Map(), zr = [], Wr = new e.Map(), Je = new e.Set(), xe = oo(4, "unknown"), vr = oo(0, "__resolving__"), mr = new e.Map(), Ar = new e.Map(), Oe = ms(1, "any"), nr = ms(1, "any"), Mr = ms(1, "any"), Pe = ms(1, "error"), Ue = ms(1, "unresolved"), fr = ms(1, "any", 65536), De = ms(1, "intrinsic"), gr = ms(2, "unknown"), Vr = ms(2, "unknown"), Tr = ms(32768, "undefined"), vi = Ye ? Tr : ms(32768, "undefined", 65536), Ui = ms(32768, "undefined"), Yi = yr ? ms(32768, "undefined") : Tr, Wi = ms(65536, "null"), ct = Ye ? Wi : ms(65536, "null", 65536), Li = ms(4, "string"), nt = ms(8, "number"), Mt = ms(64, "bigint"), xt = ms(512, "false"), ut = ms(512, "false"), Dt = ms(512, "true"), Rt = ms(512, "true"); + Dt.regularType = Rt, Dt.freshType = Dt, Rt.regularType = Rt, Rt.freshType = Dt, xt.regularType = ut, xt.freshType = xt, ut.regularType = ut, ut.freshType = xt; + var Ii = Pa([ut, Rt]), Ki = ms(4096, "symbol"), Fi = ms(16384, "void"), ui = ms(131072, "never"), Bt = ms(131072, "never"), wt = ms(131072, "never", 262144), na = ms(131072, "never"), Ai = ms(131072, "never"), Oi = ms(67108864, "object"), ji = Pa([Li, nt]), Vi = Pa([Li, nt, Ki]), at = Ge ? Li : Vi, At = Pa([nt, Mt]), ba = Pa([Li, nt, Ii, Mt, Wi, Tr]), $a = Dg(["", ""], [nt]), Qa = Gp(function(r) { + return r.flags & 262144 ? RI(r) : r; + }), ai = Gp(function(r) { + return r.flags & 262144 ? Mr : r; + }), Dn = ms(131072, "never"), ka = Gp(function(r) { + return r.flags & 262144 ? Dn : r; + }), Ba = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray), pn = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray); + pn.objectFlags |= 2048; + var Cn = oo(2048, "__type"); + Cn.members = e.createSymbolTable(); + var Bi = rs(Cn, we, e.emptyArray, e.emptyArray, e.emptyArray), kn = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray); + kn.instantiations = new e.Map(); + var xn = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray); + xn.objectFlags |= 262144; + var Kn = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray), Pn = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray), eo = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray), Rn = Hc(), Da = Hc(); + Da.constraint = Rn; + var bo = Hc(), Ro = vg(1, "<>", 0, Oe), En = Fu(void 0, void 0, void 0, e.emptyArray, Oe, void 0, 0, 0), Wn = Fu(void 0, void 0, void 0, e.emptyArray, Pe, void 0, 0, 0), to = Fu(void 0, void 0, void 0, e.emptyArray, Oe, void 0, 0, 0), Co = Fu(void 0, void 0, void 0, e.emptyArray, Bt, void 0, 0, 0), Ko = zl(nt, Li, true), Oo = new e.Map(), no = { get yieldType() { + return e.Debug.fail("Not supported"); + }, get returnType() { + return e.Debug.fail("Not supported"); + }, get nextType() { + return e.Debug.fail("Not supported"); + } }, $o = a_(Oe, Oe, Oe), Pr = a_(Oe, Oe, gr), xi = a_(ui, Oe, Tr), St = { iterableCacheKey: "iterationTypesOfAsyncIterable", iteratorCacheKey: "iterationTypesOfAsyncIterator", iteratorSymbolName: "asyncIterator", getGlobalIteratorType: k3, getGlobalIterableType: C3, getGlobalIterableIteratorType: A3, getGlobalGeneratorType: N3, resolveIterationType: ag, mustHaveANextMethodDiagnostic: e.Diagnostics.An_async_iterator_must_have_a_next_method, mustBeAMethodDiagnostic: e.Diagnostics.The_0_property_of_an_async_iterator_must_be_a_method, mustHaveAValueDiagnostic: e.Diagnostics.The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property }, pa = { iterableCacheKey: "iterationTypesOfIterable", iteratorCacheKey: "iterationTypesOfIterator", iteratorSymbolName: "iterator", getGlobalIteratorType: P3, getGlobalIterableType: Ax, getGlobalIterableIteratorType: I3, getGlobalGeneratorType: w3, resolveIterationType: function(r, i) { + return r; + }, mustHaveANextMethodDiagnostic: e.Diagnostics.An_iterator_must_have_a_next_method, mustBeAMethodDiagnostic: e.Diagnostics.The_0_property_of_an_iterator_must_be_a_method, mustHaveAValueDiagnostic: e.Diagnostics.The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property }, dn, Jn = new e.Map(), Qe = false, Gr, S, Ce, qe, br, Zr, Si, Pi, Qi, Ct, sa, en, Wa, qn, mo, So, Go, ys, Pc, Vc, Kc, Xs, pc, hs, tc, ps, Qs, js, ds, Ji, ce, Rr, yi, qi, je, Hr, pt, Pt, ga, ua, Xn, jr, fo, xs, Fo = new e.Map(), ko = 0, Ao = 0, Ms = 0, Bs = false, xc = 0, su, tl, Zc, Rf = Bu(""), al = If(0), Jo = ED({ negative: false, base10Value: "0" }), eu = [], Ws = [], pu = [], Uu = 0, Ql = 10, xl = [], Ya = [], du = [], vc = [], Kr = [], _i = [], Ei = [], tt = [], kt = [], bt = [], ia = [], Xt = [], Za = [], bn = [], _a = [], qa = [], rn = e.createDiagnosticCollection(), jn = e.createDiagnosticCollection(), Mo = new e.Map(e.getEntries({ string: Li, number: nt, bigint: Mt, boolean: Ii, symbol: Ki, undefined: Tr })), ho = wp(), gs, Se, hr, Or = new e.Map(), ki = new e.Map(), dt = new e.Map(), la = new e.Map(), wa = new e.Map(), On = new e.Map(), No = e.createSymbolTable(); + No.set(mi.escapedName, mi); + var jo = [[".mts", ".mjs"], [".ts", ".js"], [".cts", ".cjs"], [".mjs", ".mjs"], [".js", ".js"], [".cjs", ".cjs"], [".tsx", ye.jsx === 1 ? ".jsx" : ".js"], [".jsx", ".jsx"], [".json", ".json"]]; + return L9(), Di; + function po(r) { + if (r) { + var i = e.getSourceFileOfNode(r); + if (i) + if (e.isJsxOpeningFragment(r)) { + if (i.localJsxFragmentNamespace) + return i.localJsxFragmentNamespace; + var t = i.pragmas.get("jsxfrag"); + if (t) { + var o = e.isArray(t) ? t[0] : t; + if (i.localJsxFragmentFactory = e.parseIsolatedEntityName(o.arguments.factory, Ae), e.visitNode(i.localJsxFragmentFactory, $n), i.localJsxFragmentFactory) + return i.localJsxFragmentNamespace = e.getFirstIdentifier(i.localJsxFragmentFactory).escapedText; + } + var s = jS(r); + if (s) + return i.localJsxFragmentFactory = s, i.localJsxFragmentNamespace = e.getFirstIdentifier(s).escapedText; + } else { + var u = Gn(i); + if (u) + return i.localJsxNamespace = u; + } + } + return gs || (gs = "React", ye.jsxFactory ? (Se = e.parseIsolatedEntityName(ye.jsxFactory, Ae), e.visitNode(Se, $n), Se && (gs = e.getFirstIdentifier(Se).escapedText)) : ye.reactNamespace && (gs = e.escapeLeadingUnderscores(ye.reactNamespace))), Se || (Se = e.factory.createQualifiedName(e.factory.createIdentifier(e.unescapeLeadingUnderscores(gs)), "createElement")), gs; + } + function Gn(r) { + if (r.localJsxNamespace) + return r.localJsxNamespace; + var i = r.pragmas.get("jsx"); + if (i) { + var t = e.isArray(i) ? i[0] : i; + if (r.localJsxFactory = e.parseIsolatedEntityName(t.arguments.factory, Ae), e.visitNode(r.localJsxFactory, $n), r.localJsxFactory) + return r.localJsxNamespace = e.getFirstIdentifier(r.localJsxFactory).escapedText; + } + } + function $n(r) { + return e.setTextRangePosEnd(r, -1, -1), e.visitEachChild(r, $n, e.nullTransformationContext); + } + function Ho(r, i) { + return X6(r, i), wr; + } + function Zo(r, i, t, o, s, u) { + var h = r ? e.createDiagnosticForNode(r, i, t, o, s, u) : e.createCompilerDiagnostic(i, t, o, s, u), z = rn.lookup(h); + return z || (rn.add(h), h); + } + function Es(r, i, t, o, s, u, h) { + var z = Xr(i, t, o, s, u, h); + return z.skippedOn = r, z; + } + function yc(r, i, t, o, s, u) { + return r ? e.createDiagnosticForNode(r, i, t, o, s, u) : e.createCompilerDiagnostic(i, t, o, s, u); + } + function Xr(r, i, t, o, s, u) { + var h = yc(r, i, t, o, s, u); + return rn.add(h), h; + } + function Ls(r, i) { + r ? rn.add(i) : jn.add(Ke(Ke({}, i), { category: e.DiagnosticCategory.Suggestion })); + } + function Ic(r, i, t, o, s, u, h) { + if (i.pos < 0 || i.end < 0) { + if (!r) + return; + var z = e.getSourceFileOfNode(i); + Ls(r, "message" in t ? e.createFileDiagnostic(z, 0, 0, t, o, s, u, h) : e.createDiagnosticForFileFromMessageChain(z, t)); + return; + } + Ls(r, "message" in t ? e.createDiagnosticForNode(i, t, o, s, u, h) : e.createDiagnosticForNodeFromMessageChain(i, t)); + } + function zu(r, i, t, o, s, u, h) { + var z = Xr(r, t, o, s, u, h); + if (i) { + var me = e.createDiagnosticForNode(r, e.Diagnostics.Did_you_forget_to_use_await); + e.addRelatedInfo(z, me); + } + return z; + } + function vf(r, i) { + var t = Array.isArray(r) ? e.forEach(r, e.getJSDocDeprecatedTag) : e.getJSDocDeprecatedTag(r); + return t && e.addRelatedInfo(i, e.createDiagnosticForNode(t, e.Diagnostics.The_declaration_was_marked_as_deprecated_here)), jn.add(i), i; + } + function P_(r) { + return !!(p0(r) & 268435456); + } + function El(r, i, t) { + var o = e.createDiagnosticForNode(r, e.Diagnostics._0_is_deprecated, t); + return vf(i, o); + } + function vp(r, i, t, o) { + var s = t ? e.createDiagnosticForNode(r, e.Diagnostics.The_signature_0_of_1_is_deprecated, o, t) : e.createDiagnosticForNode(r, e.Diagnostics._0_is_deprecated, o); + return vf(i, s); + } + function oo(r, i, t) { + ge++; + var o = new We(r | 33554432, i); + return o.checkFlags = t || 0, o; + } + function I_(r) { + var i = 0; + return r & 2 && (i |= 111551), r & 1 && (i |= 111550), r & 4 && (i |= 0), r & 8 && (i |= 900095), r & 16 && (i |= 110991), r & 32 && (i |= 899503), r & 64 && (i |= 788872), r & 256 && (i |= 899327), r & 128 && (i |= 899967), r & 512 && (i |= 110735), r & 8192 && (i |= 103359), r & 32768 && (i |= 46015), r & 65536 && (i |= 78783), r & 262144 && (i |= 526824), r & 524288 && (i |= 788968), r & 2097152 && (i |= 2097152), i; + } + function yp(r, i) { + i.mergeId || (i.mergeId = E, E++), xl[i.mergeId] = r; + } + function Yl(r) { + var i = oo(r.flags, r.escapedName); + return i.declarations = r.declarations ? r.declarations.slice() : [], i.parent = r.parent, r.valueDeclaration && (i.valueDeclaration = r.valueDeclaration), r.constEnumOnlyModule && (i.constEnumOnlyModule = true), r.members && (i.members = new e.Map(r.members)), r.exports && (i.exports = new e.Map(r.exports)), yp(i, r), i; + } + function Bf(r, i, t) { + if (t === void 0 && (t = false), !(r.flags & I_(i.flags)) || (i.flags | r.flags) & 67108864) { + if (i === r) + return r; + if (!(r.flags & 33554432)) { + var o = os(r); + if (o === xe) + return i; + r = Yl(o); + } + i.flags & 512 && r.flags & 512 && r.constEnumOnlyModule && !i.constEnumOnlyModule && (r.constEnumOnlyModule = false), r.flags |= i.flags, i.valueDeclaration && e.setValueDeclaration(r, i.valueDeclaration), e.addRange(r.declarations, i.declarations), i.members && (r.members || (r.members = e.createSymbolTable()), gu(r.members, i.members, t)), i.exports && (r.exports || (r.exports = e.createSymbolTable()), gu(r.exports, i.exports, t)), t || yp(r, i); + } else if (r.flags & 1024) + r !== pe && Xr(i.declarations && e.getNameOfDeclaration(i.declarations[0]), e.Diagnostics.Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity, tn(r)); + else { + var s = !!(r.flags & 384 || i.flags & 384), u = !!(r.flags & 2 || i.flags & 2), h = s ? e.Diagnostics.Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations : u ? e.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : e.Diagnostics.Duplicate_identifier_0, z = i.declarations && e.getSourceFileOfNode(i.declarations[0]), me = r.declarations && e.getSourceFileOfNode(r.declarations[0]), Me = e.isPlainJsFile(z, ye.checkJs), $e = e.isPlainJsFile(me, ye.checkJs), tr = tn(i); + if (z && me && dn && !s && z !== me) { + var dr = e.comparePaths(z.path, me.path) === -1 ? z : me, Dr = dr === z ? me : z, Qr = e.getOrUpdate(dn, "".concat(dr.path, "|").concat(Dr.path), function() { + return { firstFile: dr, secondFile: Dr, conflictingSymbols: new e.Map() }; + }), li = e.getOrUpdate(Qr.conflictingSymbols, tr, function() { + return { isBlockScoped: u, firstFileLocations: [], secondFileLocations: [] }; + }); + Me || Ti(li.firstFileLocations, i), $e || Ti(li.secondFileLocations, r); + } else + Me || Cl(i, h, tr, r), $e || Cl(r, h, tr, i); + } + return r; + function Ti(Ci, $i) { + if ($i.declarations) + for (var Zi = 0, qt = $i.declarations; Zi < qt.length; Zi++) { + var Nt = qt[Zi]; + e.pushIfUnique(Ci, Nt); + } + } + } + function Cl(r, i, t, o) { + e.forEach(r.declarations, function(s) { + c_(s, i, t, o.declarations); + }); + } + function c_(r, i, t, o) { + for (var s = (e.getExpandoInitializer(r, false) ? e.getNameOfExpando(r) : e.getNameOfDeclaration(r)) || r, u = Zo(s, i, t), h = function($e) { + var tr = (e.getExpandoInitializer($e, false) ? e.getNameOfExpando($e) : e.getNameOfDeclaration($e)) || $e; + if (tr === s) + return "continue"; + u.relatedInformation = u.relatedInformation || []; + var dr = e.createDiagnosticForNode(tr, e.Diagnostics._0_was_also_declared_here, t), Dr = e.createDiagnosticForNode(tr, e.Diagnostics.and_here); + if (e.length(u.relatedInformation) >= 5 || e.some(u.relatedInformation, function(Qr) { + return e.compareDiagnostics(Qr, Dr) === 0 || e.compareDiagnostics(Qr, dr) === 0; + })) + return "continue"; + e.addRelatedInfo(u, e.length(u.relatedInformation) ? Dr : dr); + }, z = 0, me = o || e.emptyArray; z < me.length; z++) { + var Me = me[z]; + h(Me); + } + } + function hp(r, i) { + if (!(r != null && r.size)) + return i; + if (!(i != null && i.size)) + return r; + var t = e.createSymbolTable(); + return gu(t, r), gu(t, i), t; + } + function gu(r, i, t) { + t === void 0 && (t = false), i.forEach(function(o, s) { + var u = r.get(s); + r.set(s, u ? Bf(u, o, t) : o); + }); + } + function Dp(r) { + var i, t, o, s = r.parent; + if (((i = s.symbol.declarations) === null || i === void 0 ? void 0 : i[0]) !== s) { + e.Debug.assert(s.symbol.declarations.length > 1); + return; + } + if (e.isGlobalScopeAugmentation(s)) + gu(ii, s.symbol.exports); + else { + var u = r.parent.parent.flags & 16777216 ? void 0 : e.Diagnostics.Invalid_module_name_in_augmentation_module_0_cannot_be_found, h = Pl(r, r, u, true); + if (!h) + return; + if (h = Us(h), h.flags & 1920) + if (e.some(S, function(Qr) { + return h === Qr.symbol; + })) { + var z = Bf(s.symbol, h, true); + Ce || (Ce = new e.Map()), Ce.set(r.text, z); + } else { + if (((t = h.exports) === null || t === void 0 ? void 0 : t.get("__export")) && ((o = s.symbol.exports) === null || o === void 0 ? void 0 : o.size)) + for (var me = Jv(h, "resolvedExports"), Me = 0, $e = e.arrayFrom(s.symbol.exports.entries()); Me < $e.length; Me++) { + var tr = $e[Me], dr = tr[0], Dr = tr[1]; + me.has(dr) && !h.exports.has(dr) && Bf(me.get(dr), Dr); + } + Bf(h, s.symbol); + } + else + Xr(r, e.Diagnostics.Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity, r.text); + } + } + function sd(r, i, t) { + i.forEach(function(s, u) { + var h = r.get(u); + h ? e.forEach(h.declarations, o(e.unescapeLeadingUnderscores(u), t)) : r.set(u, s); + }); + function o(s, u) { + return function(h) { + return rn.add(e.createDiagnosticForNode(h, u, s)); + }; + } + } + function Aa(r) { + if (r.flags & 33554432) + return r; + var i = y(r); + return Ya[i] || (Ya[i] = new X()); + } + function va(r) { + var i = A(r); + return du[i] || (du[i] = new $()); + } + function Cu(r) { + return r.kind === 305 && !e.isExternalOrCommonJsModule(r); + } + function qs(r, i, t) { + if (t) { + var o = so(r.get(i)); + if (o) { + if (e.Debug.assert((e.getCheckFlags(o) & 1) === 0, "Should never get an instantiated symbol here."), o.flags & t) + return o; + if (o.flags & 2097152) { + var s = Ps(o); + if (s === xe || s.flags & t) + return o; + } + } + } + } + function cd(r, i) { + var t = r.parent, o = r.parent.parent, s = qs(t.locals, i, 111551), u = qs(Nf(o.symbol), i, 111551); + return s && u ? [s, u] : e.Debug.fail("There should exist two symbols, one as property declaration and one as parameter declaration"); + } + function ns(r, i) { + var t = e.getSourceFileOfNode(r), o = e.getSourceFileOfNode(i), s = e.getEnclosingBlockScopeContainer(r); + if (t !== o) { + if (er && (t.externalModuleIndicator || o.externalModuleIndicator) || !e.outFile(ye) || _m(i) || r.flags & 16777216 || Me(i, r)) + return true; + var u = l.getSourceFiles(); + return u.indexOf(t) <= u.indexOf(o); + } + if (r.pos <= i.pos && !(e.isPropertyDeclaration(r) && e.isThisProperty(i.parent) && !r.initializer && !r.exclamationToken)) { + if (r.kind === 203) { + var h = e.getAncestor(i, 203); + return h ? e.findAncestor(h, e.isBindingElement) !== e.findAncestor(r, e.isBindingElement) || r.pos < h.pos : ns(e.getAncestor(r, 254), i); + } else { + if (r.kind === 254) + return !me(r, i); + if (e.isClassDeclaration(r)) + return !e.findAncestor(i, function(tr) { + return e.isComputedPropertyName(tr) && tr.parent.parent === r; + }); + if (e.isPropertyDeclaration(r)) + return !$e(r, i, false); + if (e.isParameterPropertyDeclaration(r, r.parent)) + return !(e.getEmitScriptTarget(ye) === 99 && ir && e.getContainingClass(r) === e.getContainingClass(i) && Me(i, r)); + } + return true; + } + if (i.parent.kind === 275 || i.parent.kind === 271 && i.parent.isExportEquals || i.kind === 271 && i.isExportEquals || !!(i.flags & 8388608) || _m(i) || z()) + return true; + if (Me(i, r)) + return e.getEmitScriptTarget(ye) === 99 && ir && e.getContainingClass(r) && (e.isPropertyDeclaration(r) || e.isParameterPropertyDeclaration(r, r.parent)) ? !$e(r, i, true) : true; + return false; + function z() { + return !!e.findAncestor(i, function(tr) { + return e.isInterfaceDeclaration(tr) || e.isTypeAliasDeclaration(tr); + }); + } + function me(tr, dr) { + switch (tr.parent.parent.kind) { + case 237: + case 242: + case 244: + if (ol(dr, tr, s)) + return true; + break; + } + var Dr = tr.parent.parent; + return e.isForInOrOfStatement(Dr) && ol(dr, Dr.expression, s); + } + function Me(tr, dr) { + return !!e.findAncestor(tr, function(Dr) { + if (Dr === s) + return "quit"; + if (e.isFunctionLike(Dr)) + return true; + if (e.isClassStaticBlockDeclaration(Dr)) + return dr.pos < tr.pos; + var Qr = e.tryCast(Dr.parent, e.isPropertyDeclaration); + if (Qr) { + var li = Qr.initializer === Dr; + if (li) + if (e.isStatic(Dr.parent)) { + if (dr.kind === 169) + return true; + if (e.isPropertyDeclaration(dr) && e.getContainingClass(tr) === e.getContainingClass(dr)) { + var Ti = dr.name; + if (e.isIdentifier(Ti) || e.isPrivateIdentifier(Ti)) { + var Ci = Jt(Et(dr)), $i = e.filter(dr.parent.members, e.isClassStaticBlockDeclaration); + if (DM(Ti, Ci, $i, dr.parent.pos, Dr.pos)) + return true; + } + } + } else { + var Zi = dr.kind === 167 && !e.isStatic(dr); + if (!Zi || e.getContainingClass(tr) !== e.getContainingClass(dr)) + return true; + } + } + return false; + }); + } + function $e(tr, dr, Dr) { + if (dr.end > tr.end) + return false; + var Qr = e.findAncestor(dr, function(li) { + if (li === tr) + return "quit"; + switch (li.kind) { + case 214: + return true; + case 167: + return Dr && (e.isPropertyDeclaration(tr) && li.parent === tr.parent || e.isParameterPropertyDeclaration(tr, tr.parent) && li.parent === tr.parent.parent) ? "quit" : true; + case 235: + switch (li.parent.kind) { + case 172: + case 169: + case 173: + return true; + default: + return false; + } + default: + return false; + } + }); + return Qr === void 0; + } + } + function nl(r, i, t) { + var o = e.getEmitScriptTarget(ye), s = i; + if (e.isParameter(t) && s.body && r.valueDeclaration && r.valueDeclaration.pos >= s.body.pos && r.valueDeclaration.end <= s.body.end && o >= 2) { + var u = va(s); + return u.declarationRequiresScopeChange === void 0 && (u.declarationRequiresScopeChange = e.forEach(s.parameters, h) || false), !u.declarationRequiresScopeChange; + } + return false; + function h(me) { + return z(me.name) || !!me.initializer && z(me.initializer); + } + function z(me) { + switch (me.kind) { + case 214: + case 213: + case 256: + case 171: + return false; + case 169: + case 172: + case 173: + case 296: + return z(me.name); + case 167: + return e.hasStaticModifier(me) ? o < 99 || !ir : z(me.name); + default: + return e.isNullishCoalesce(me) || e.isOptionalChain(me) ? o < 7 : e.isBindingElement(me) && me.dotDotDotToken && e.isObjectBindingPattern(me.parent) ? o < 4 : e.isTypeNode(me) ? false : e.forEachChild(me, z) || false; + } + } + } + function hc(r) { + return e.isAssertionExpression(r) && e.isConstTypeReference(r.type) || e.isJSDocTypeTag(r) && e.isConstTypeReference(r.typeExpression); + } + function es(r, i, t, o, s, u, h, z) { + return h === void 0 && (h = false), z === void 0 && (z = true), u_(r, i, t, o, s, u, h, z, qs); + } + function u_(r, i, t, o, s, u, h, z, me) { + var Me, $e, tr, dr = r, Dr, Qr, li, Ti, Ci, $i = false, Zi = r, qt, Nt = false; + e: + for (; r; ) { + if (i === "const" && hc(r)) + return; + if (r.locals && !Cu(r) && (Dr = me(r.locals, i, t))) { + var Ra = true; + if (e.isFunctionLike(r) && Qr && Qr !== r.body ? (t & Dr.flags & 788968 && Qr.kind !== 320 && (Ra = Dr.flags & 262144 ? Qr === r.type || Qr.kind === 164 || Qr.kind === 340 || Qr.kind === 341 || Qr.kind === 163 : false), t & Dr.flags & 3 && (nl(Dr, r, Qr) ? Ra = false : Dr.flags & 1 && (Ra = Qr.kind === 164 || Qr === r.type && !!e.findAncestor(Dr.valueDeclaration, e.isParameter)))) : r.kind === 189 && (Ra = Qr === r.trueType), Ra) + break e; + Dr = void 0; + } + switch ($i = $i || w_(r, Qr), r.kind) { + case 305: + if (!e.isExternalOrCommonJsModule(r)) + break; + Nt = true; + case 261: + var ca = ((Me = Et(r)) === null || Me === void 0 ? void 0 : Me.exports) || we; + if (r.kind === 305 || e.isModuleDeclaration(r) && r.flags & 16777216 && !e.isGlobalScopeAugmentation(r)) { + if (Dr = ca.get("default")) { + var Sn = e.getLocalSymbolForExportDefault(Dr); + if (Sn && Dr.flags & t && Sn.escapedName === i) + break e; + Dr = void 0; + } + var ja = ca.get(i); + if (ja && ja.flags === 2097152 && (e.getDeclarationOfKind(ja, 275) || e.getDeclarationOfKind(ja, 274))) + break; + } + if (i !== "default" && (Dr = me(ca, i, t & 2623475))) + if (e.isSourceFile(r) && r.commonJsModuleIndicator && !(!(($e = Dr.declarations) === null || $e === void 0) && $e.some(e.isJSDocTypeAlias))) + Dr = void 0; + else + break e; + break; + case 260: + if (Dr = me(((tr = Et(r)) === null || tr === void 0 ? void 0 : tr.exports) || we, i, t & 8)) + break e; + break; + case 167: + if (!e.isStatic(r)) { + var Fn = Tf(r.parent); + Fn && Fn.locals && me(Fn.locals, i, t & 111551) && (Ti = r); + } + break; + case 257: + case 226: + case 258: + if (Dr = me(Et(r).members || we, i, t & 788968)) { + if (!ld(Dr, r)) { + Dr = void 0; + break; + } + if (Qr && e.isStatic(Qr)) { + Xr(Zi, e.Diagnostics.Static_members_cannot_reference_class_type_parameters); + return; + } + break e; + } + if (r.kind === 226 && t & 32) { + var wn = r.name; + if (wn && i === wn.escapedText) { + Dr = r.symbol; + break e; + } + } + break; + case 228: + if (Qr === r.expression && r.parent.token === 94) { + var Tn = r.parent.parent; + if (e.isClassLike(Tn) && (Dr = me(Et(Tn).members, i, t & 788968))) { + o && Xr(Zi, e.Diagnostics.Base_class_expressions_cannot_reference_class_type_parameters); + return; + } + } + break; + case 162: + if (qt = r.parent.parent, (e.isClassLike(qt) || qt.kind === 258) && (Dr = me(Et(qt).members, i, t & 788968))) { + Xr(Zi, e.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); + return; + } + break; + case 214: + if (e.getEmitScriptTarget(ye) >= 2) + break; + case 169: + case 171: + case 172: + case 173: + case 256: + if (t & 3 && i === "arguments") { + Dr = or; + break e; + } + break; + case 213: + if (t & 3 && i === "arguments") { + Dr = or; + break e; + } + if (t & 16) { + var Eo = r.name; + if (Eo && i === Eo.escapedText) { + Dr = r.symbol; + break e; + } + } + break; + case 165: + r.parent && r.parent.kind === 164 && (r = r.parent), r.parent && (e.isClassElement(r.parent) || r.parent.kind === 257) && (r = r.parent); + break; + case 345: + case 338: + case 339: + var lt = e.getJSDocRoot(r); + lt && (r = lt.parent); + break; + case 164: + Qr && (Qr === r.initializer || Qr === r.name && e.isBindingPattern(Qr)) && (Ci || (Ci = r)); + break; + case 203: + Qr && (Qr === r.initializer || Qr === r.name && e.isBindingPattern(Qr)) && e.isParameterDeclaration(r) && !Ci && (Ci = r); + break; + case 190: + if (t & 262144) { + var it = r.typeParameter.name; + if (it && i === it.escapedText) { + Dr = r.typeParameter.symbol; + break e; + } + } + break; + } + ud(r) && (li = r), Qr = r, r = e.isJSDocTemplateTag(r) ? e.getEffectiveContainerForJSDocTemplateTag(r) || r.parent : (e.isJSDocParameterTag(r) || e.isJSDocReturnTag(r)) && e.getHostSignatureFromJSDoc(r) || r.parent; + } + if (u && Dr && (!li || Dr !== li.symbol) && (Dr.isReferenced |= t), !Dr) { + if (Qr && (e.Debug.assert(Qr.kind === 305), Qr.commonJsModuleIndicator && i === "exports" && t & Qr.symbol.flags)) + return Qr.symbol; + h || (Dr = me(ii, i, t)); + } + if (!Dr && dr && e.isInJSFile(dr) && dr.parent && e.isRequireCall(dr.parent, false)) + return qr; + if (!Dr) { + o && fe(function() { + if (!Zi || !fd(Zi, i, s) && !bp(Zi) && !Tp(Zi, i, t) && !O_(Zi, i) && !F_(Zi, i, t) && !M_(Zi, i, t) && !_d(Zi, i, t)) { + var Ia = void 0; + if (z && Uu < Ql) { + Ia = Kb(dr, i, t); + var Qt = (Ia == null ? void 0 : Ia.valueDeclaration) && e.isAmbientModule(Ia.valueDeclaration) && e.isGlobalScopeAugmentation(Ia.valueDeclaration); + if (Qt && (Ia = void 0), Ia) { + var Ka = tn(Ia), cn = Wb(dr, Ia, false), Un = t === 1920 || s && typeof s != "string" && e.nodeIsSynthesized(s) ? e.Diagnostics.Cannot_find_namespace_0_Did_you_mean_1 : cn ? e.Diagnostics.Could_not_find_name_0_Did_you_mean_1 : e.Diagnostics.Cannot_find_name_0_Did_you_mean_1, oa = yc(Zi, Un, ku(s), Ka); + Ls(!cn, oa), Ia.valueDeclaration && e.addRelatedInfo(oa, e.createDiagnosticForNode(Ia.valueDeclaration, e.Diagnostics._0_is_declared_here, Ka)); + } + } + if (!Ia && s) { + var Mn = $5(s); + Mn ? Xr(Zi, o, ku(s), Mn) : Xr(Zi, o, ku(s)); + } + Uu++; + } + }); + return; + } + if (Ti && !(e.getEmitScriptTarget(ye) === 99 && ir)) { + var Yt = Ti.name; + Xr(Zi, e.Diagnostics.Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor, e.declarationNameToString(Yt), ku(s)); + return; + } + return o && fe(function() { + if (Zi && (t & 2 || (t & 32 || t & 384) && (t & 111551) === 111551)) { + var Ia = cu(Dr); + (Ia.flags & 2 || Ia.flags & 32 || Ia.flags & 384) && Ep(Ia, Zi); + } + if (Dr && Nt && (t & 111551) === 111551 && !(dr.flags & 8388608)) { + var Qt = so(Dr); + e.length(Qt.declarations) && e.every(Qt.declarations, function(Ln) { + return e.isNamespaceExportDeclaration(Ln) || e.isSourceFile(Ln) && !!Ln.symbol.globalExports; + }) && Ic(!ye.allowUmdGlobalAccess, Zi, e.Diagnostics._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead, e.unescapeLeadingUnderscores(i)); + } + if (Dr && Ci && !$i && (t & 111551) === 111551) { + var Ka = so(dg(Dr)), cn = e.getRootDeclaration(Ci); + Ka === Et(Ci) ? Xr(Zi, e.Diagnostics.Parameter_0_cannot_reference_itself, e.declarationNameToString(Ci.name)) : Ka.valueDeclaration && Ka.valueDeclaration.pos > Ci.pos && cn.parent.locals && me(cn.parent.locals, Ka.escapedName, t) === Ka && Xr(Zi, e.Diagnostics.Parameter_0_cannot_reference_identifier_1_declared_after_it, e.declarationNameToString(Ci.name), e.declarationNameToString(Zi)); + } + if (Dr && Zi && t & 111551 && Dr.flags & 2097152 && !(Dr.flags & 111551) && !e.isValidTypeOnlyAliasUseSite(Zi)) { + var Un = vu(Dr); + if (Un) { + var oa = Un.kind === 275 ? e.Diagnostics._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type : e.Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type, Mn = e.unescapeLeadingUnderscores(i); + Jf(Xr(Zi, oa, Mn), Un, Mn); + } + } + }), Dr; + } + function Jf(r, i, t) { + return i ? e.addRelatedInfo(r, e.createDiagnosticForNode(i, i.kind === 275 ? e.Diagnostics._0_was_exported_here : e.Diagnostics._0_was_imported_here, t)) : r; + } + function w_(r, i) { + return r.kind !== 214 && r.kind !== 213 ? e.isTypeQueryNode(r) || (e.isFunctionLikeDeclaration(r) || r.kind === 167 && !e.isStatic(r)) && (!i || i !== r.name) : i && i === r.name ? false : r.asteriskToken || e.hasSyntacticModifier(r, 256) ? true : !e.getImmediatelyInvokedFunctionExpression(r); + } + function ud(r) { + switch (r.kind) { + case 256: + case 257: + case 258: + case 260: + case 259: + case 261: + return true; + default: + return false; + } + } + function ku(r) { + return e.isString(r) ? e.unescapeLeadingUnderscores(r) : e.declarationNameToString(r); + } + function ld(r, i) { + if (r.declarations) + for (var t = 0, o = r.declarations; t < o.length; t++) { + var s = o[t]; + if (s.kind === 163) { + var u = e.isJSDocTemplateTag(s.parent) ? e.getJSDocHost(s.parent) : s.parent; + if (u === i) + return !(e.isJSDocTemplateTag(s.parent) && e.find(s.parent.parent.tags, e.isJSDocTypeAlias)); + } + } + return false; + } + function fd(r, i, t) { + if (!e.isIdentifier(r) || r.escapedText !== i || Q6(r) || _m(r)) + return false; + for (var o = e.getThisContainer(r, false), s = o; s; ) { + if (e.isClassLike(s.parent)) { + var u = Et(s.parent); + if (!u) + break; + var h = Jt(u); + if (bi(h, i)) + return Xr(r, e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0, ku(t), tn(u)), true; + if (s === o && !e.isStatic(s)) { + var z = go(u).thisType; + if (bi(z, i)) + return Xr(r, e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0, ku(t)), true; + } + } + s = s.parent; + } + return false; + } + function bp(r) { + var i = Sp(r); + return i && Ds(i, 64, true) ? (Xr(r, e.Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements, e.getTextOfNode(i)), true) : false; + } + function Sp(r) { + switch (r.kind) { + case 79: + case 206: + return r.parent ? Sp(r.parent) : void 0; + case 228: + if (e.isEntityNameExpression(r.expression)) + return r.expression; + default: + return; + } + } + function Tp(r, i, t) { + var o = 1920 | (e.isInJSFile(r) ? 111551 : 0); + if (t === o) { + var s = os(es(r, i, 788968 & ~o, void 0, void 0, false)), u = r.parent; + if (s) { + if (e.isQualifiedName(u)) { + e.Debug.assert(u.left === r, "Should only be resolving left side of qualified name as a namespace"); + var h = u.right.escapedText, z = bi(go(s), h); + if (z) + return Xr(u, e.Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1, e.unescapeLeadingUnderscores(i), e.unescapeLeadingUnderscores(h)), true; + } + return Xr(r, e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here, e.unescapeLeadingUnderscores(i)), true; + } + } + return false; + } + function _d(r, i, t) { + if (t & 788584) { + var o = os(es(r, i, 111127, void 0, void 0, false)); + if (o && !(o.flags & 1920)) + return Xr(r, e.Diagnostics._0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0, e.unescapeLeadingUnderscores(i)), true; + } + return false; + } + function jf(r) { + return r === "any" || r === "string" || r === "number" || r === "boolean" || r === "never" || r === "unknown"; + } + function O_(r, i) { + return jf(i) && r.parent.kind === 275 ? (Xr(r, e.Diagnostics.Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module, i), true) : false; + } + function F_(r, i, t) { + if (t & 111551) { + if (jf(i)) + return Xr(r, e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here, e.unescapeLeadingUnderscores(i)), true; + var o = os(es(r, i, 788544, void 0, void 0, false)); + if (o && !(o.flags & 1024)) { + var s = e.unescapeLeadingUnderscores(i); + return xp(i) ? Xr(r, e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later, s) : pd(r, o) ? Xr(r, e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0, s, s === "K" ? "P" : "K") : Xr(r, e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here, s), true; + } + } + return false; + } + function pd(r, i) { + var t = e.findAncestor(r.parent, function(s) { + return e.isComputedPropertyName(s) || e.isPropertySignature(s) ? false : e.isTypeLiteralNode(s) || "quit"; + }); + if (t && t.members.length === 1) { + var o = go(i); + return !!(o.flags & 1048576) && Lg(o, 384, true); + } + return false; + } + function xp(r) { + switch (r) { + case "Promise": + case "Symbol": + case "Map": + case "WeakMap": + case "Set": + case "WeakSet": + return true; + } + return false; + } + function M_(r, i, t) { + if (t & 111127) { + var o = os(es(r, i, 1024, void 0, void 0, false)); + if (o) + return Xr(r, e.Diagnostics.Cannot_use_namespace_0_as_a_value, e.unescapeLeadingUnderscores(i)), true; + } else if (t & 788544) { + var o = os(es(r, i, 1536, void 0, void 0, false)); + if (o) + return Xr(r, e.Diagnostics.Cannot_use_namespace_0_as_a_type, e.unescapeLeadingUnderscores(i)), true; + } + return false; + } + function Ep(r, i) { + var t; + if (e.Debug.assert(!!(r.flags & 2 || r.flags & 32 || r.flags & 384)), !(r.flags & 67108881 && r.flags & 32)) { + var o = (t = r.declarations) === null || t === void 0 ? void 0 : t.find(function(h) { + return e.isBlockOrCatchScoped(h) || e.isClassLike(h) || h.kind === 260; + }); + if (o === void 0) + return e.Debug.fail("checkResolvedBlockScopedVariable could not find block-scoped declaration"); + if (!(o.flags & 16777216) && !ns(o, i)) { + var s = void 0, u = e.declarationNameToString(e.getNameOfDeclaration(o)); + r.flags & 2 ? s = Xr(i, e.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, u) : r.flags & 32 ? s = Xr(i, e.Diagnostics.Class_0_used_before_its_declaration, u) : r.flags & 256 ? s = Xr(i, e.Diagnostics.Enum_0_used_before_its_declaration, u) : (e.Debug.assert(!!(r.flags & 128)), e.shouldPreserveConstEnums(ye) && (s = Xr(i, e.Diagnostics.Enum_0_used_before_its_declaration, u))), s && e.addRelatedInfo(s, e.createDiagnosticForNode(o, e.Diagnostics._0_is_declared_here, u)); + } + } + } + function ol(r, i, t) { + return !!i && !!e.findAncestor(r, function(o) { + return o === i || (o === t || e.isFunctionLike(o) && !e.getImmediatelyInvokedFunctionExpression(o) ? "quit" : false); + }); + } + function Au(r) { + switch (r.kind) { + case 265: + return r; + case 267: + return r.parent; + case 268: + return r.parent.parent; + case 270: + return r.parent.parent.parent; + default: + return; + } + } + function ru(r) { + return r.declarations && e.findLast(r.declarations, yf); + } + function yf(r) { + return r.kind === 265 || r.kind === 264 || r.kind === 267 && !!r.name || r.kind === 268 || r.kind === 274 || r.kind === 270 || r.kind === 275 || r.kind === 271 && e.exportAssignmentIsAlias(r) || e.isBinaryExpression(r) && e.getAssignmentDeclarationKind(r) === 2 && e.exportAssignmentIsAlias(r) || e.isAccessExpression(r) && e.isBinaryExpression(r.parent) && r.parent.left === r && r.parent.operatorToken.kind === 63 && Cp(r.parent.right) || r.kind === 297 || r.kind === 296 && Cp(r.initializer) || e.isVariableDeclarationInitializedToBareOrAccessedRequire(r); + } + function Cp(r) { + return e.isAliasableExpression(r) || e.isFunctionExpression(r) && Sl(r); + } + function dd(r, i) { + var t = wc(r); + if (t) { + var o = e.getLeftmostAccessExpression(t.expression).arguments[0]; + return e.isIdentifier(t.name) ? os(bi(Hm(o), t.name.escapedText)) : void 0; + } + if (e.isVariableDeclaration(r) || r.moduleReference.kind === 277) { + var s = ac(r, e.getExternalModuleRequireArgument(r) || e.getExternalModuleImportEqualsDeclarationExpression(r)), u = Us(s); + return Gc(r, s, u, false), u; + } + var h = Nl(r.moduleReference, i); + return kp(r, h), h; + } + function kp(r, i) { + if (Gc(r, void 0, i, false) && !r.isTypeOnly) { + var t = vu(Et(r)), o = t.kind === 275, s = o ? e.Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type : e.Diagnostics.An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type, u = o ? e.Diagnostics._0_was_exported_here : e.Diagnostics._0_was_imported_here, h = e.unescapeLeadingUnderscores(t.name.escapedText); + e.addRelatedInfo(Xr(r.moduleReference, s), e.createDiagnosticForNode(t, u, h)); + } + } + function mu(r, i, t, o) { + var s = r.exports.get("export="), u = s ? bi(Jt(s), i) : r.exports.get(i), h = os(u, o); + return Gc(t, u, h, false), h; + } + function gd(r) { + return e.isExportAssignment(r) && !r.isExportEquals || e.hasSyntacticModifier(r, 512) || e.isExportSpecifier(r); + } + function hf(r) { + return e.isStringLiteralLike(r) ? e.getModeForUsageLocation(e.getSourceFileOfNode(r), r) : void 0; + } + function $l(r, i) { + return r === e.ModuleKind.ESNext && i === e.ModuleKind.CommonJS; + } + function Uf(r) { + var i = hf(r); + return i === e.ModuleKind.ESNext && e.endsWith(r.text, ".json"); + } + function L_(r, i, t, o) { + var s = r && hf(o); + if (r && s !== void 0) { + var u = $l(s, r.impliedNodeFormat); + if (s === e.ModuleKind.ESNext || u) + return u; + } + if (!Cr) + return false; + if (!r || r.isDeclarationFile) { + var h = mu(i, "default", void 0, true); + return !(h && e.some(h.declarations, gd) || mu(i, e.escapeLeadingUnderscores("__esModule"), void 0, t)); + } + return e.isSourceFileJS(r) ? !r.externalModuleIndicator && !mu(i, e.escapeLeadingUnderscores("__esModule"), void 0, t) : ll(i); + } + function l_(r, i) { + var t, o = ac(r, r.parent.moduleSpecifier); + if (o) { + var s = void 0; + e.isShorthandAmbientModuleSymbol(o) ? s = o : s = mu(o, "default", r, i); + var u = (t = o.declarations) === null || t === void 0 ? void 0 : t.find(e.isSourceFile), h = Uf(r.parent.moduleSpecifier), z = L_(u, o, i, r.parent.moduleSpecifier); + if (!s && !z && !h) + if (ll(o)) { + var me = er >= e.ModuleKind.ES2015 ? "allowSyntheticDefaultImports" : "esModuleInterop", Me = o.exports.get("export="), $e = Me.valueDeclaration, tr = Xr(r.name, e.Diagnostics.Module_0_can_only_be_default_imported_using_the_1_flag, tn(o), me); + $e && e.addRelatedInfo(tr, e.createDiagnosticForNode($e, e.Diagnostics.This_module_is_declared_with_using_export_and_can_only_be_used_with_a_default_import_when_using_the_0_flag, me)); + } else + f_(o, r); + else if (z || h) { + var dr = Us(o, i) || os(o, i); + return Gc(r, o, dr, false), dr; + } + return Gc(r, s, void 0, false), s; + } + } + function f_(r, i) { + var t, o, s; + if (!((t = r.exports) === null || t === void 0) && t.has(i.symbol.escapedName)) + Xr(i.name, e.Diagnostics.Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead, tn(r), tn(i.symbol)); + else { + var u = Xr(i.name, e.Diagnostics.Module_0_has_no_default_export, tn(r)), h = (o = r.exports) === null || o === void 0 ? void 0 : o.get("__export"); + if (h) { + var z = (s = h.declarations) === null || s === void 0 ? void 0 : s.find(function(me) { + var Me, $e; + return !!(e.isExportDeclaration(me) && me.moduleSpecifier && (($e = (Me = ac(me, me.moduleSpecifier)) === null || Me === void 0 ? void 0 : Me.exports) === null || $e === void 0 ? void 0 : $e.has("default"))); + }); + z && e.addRelatedInfo(u, e.createDiagnosticForNode(z, e.Diagnostics.export_Asterisk_does_not_re_export_a_default)); + } + } + } + function md(r, i) { + var t = r.parent.parent.moduleSpecifier, o = ac(r, t), s = Wf(o, t, i, false); + return Gc(r, o, s, false), s; + } + function ks(r, i) { + var t = r.parent.moduleSpecifier, o = t && ac(r, t), s = t && Wf(o, t, i, false); + return Gc(r, o, s, false), s; + } + function Wu(r, i) { + if (r === xe && i === xe) + return xe; + if (r.flags & 790504) + return r; + var t = oo(r.flags | i.flags, r.escapedName); + return t.declarations = e.deduplicate(e.concatenate(r.declarations, i.declarations), e.equateValues), t.parent = r.parent || i.parent, r.valueDeclaration && (t.valueDeclaration = r.valueDeclaration), i.members && (t.members = new e.Map(i.members)), r.exports && (t.exports = new e.Map(r.exports)), t; + } + function Zl(r, i, t, o) { + if (r.flags & 1536) { + var s = dc(r).get(i.escapedText), u = os(s, o); + return Gc(t, s, u, false), u; + } + } + function R_(r, i) { + if (r.flags & 3) { + var t = r.valueDeclaration.type; + if (t) + return os(bi(Va(t), i)); + } + } + function kl(r, i, t) { + var o, s; + t === void 0 && (t = false); + var u = e.getExternalModuleRequireArgument(r) || r.moduleSpecifier, h = ac(r, u), z = !e.isPropertyAccessExpression(i) && i.propertyName || i.name; + if (!!e.isIdentifier(z)) { + var me = z.escapedText === "default" && !!(ye.allowSyntheticDefaultImports || e.getESModuleInterop(ye)), Me = Wf(h, u, false, me); + if (Me && z.escapedText) { + if (e.isShorthandAmbientModuleSymbol(h)) + return h; + var $e = void 0; + h && h.exports && h.exports.get("export=") ? $e = bi(Jt(Me), z.escapedText, true) : $e = R_(Me, z.escapedText), $e = os($e, t); + var tr = Zl(Me, z, i, t); + if (tr === void 0 && z.escapedText === "default") { + var dr = (o = h.declarations) === null || o === void 0 ? void 0 : o.find(e.isSourceFile); + (Uf(u) || L_(dr, h, t, u)) && (tr = Us(h, t) || os(h, t)); + } + var Dr = tr && $e && tr !== $e ? Wu($e, tr) : tr || $e; + if (!Dr) { + var Qr = cl(h, r), li = e.declarationNameToString(z), Ti = v0(z, Me); + if (Ti !== void 0) { + var Ci = tn(Ti), $i = Xr(z, e.Diagnostics._0_has_no_exported_member_named_1_Did_you_mean_2, Qr, li, Ci); + Ti.valueDeclaration && e.addRelatedInfo($i, e.createDiagnosticForNode(Ti.valueDeclaration, e.Diagnostics._0_is_declared_here, Ci)); + } else + !((s = h.exports) === null || s === void 0) && s.has("default") ? Xr(z, e.Diagnostics.Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead, Qr, li) : __(r, z, li, h, Qr); + } + return Dr; + } + } + } + function __(r, i, t, o, s) { + var u, h, z = (h = (u = o.valueDeclaration) === null || u === void 0 ? void 0 : u.locals) === null || h === void 0 ? void 0 : h.get(i.escapedText), me = o.exports; + if (z) { + var Me = me == null ? void 0 : me.get("export="); + if (Me) + _l(Me, z) ? zd(r, i, t, s) : Xr(i, e.Diagnostics.Module_0_has_no_exported_member_1, s, t); + else { + var $e = me ? e.find(Y_(me), function(dr) { + return !!_l(dr, z); + }) : void 0, tr = $e ? Xr(i, e.Diagnostics.Module_0_declares_1_locally_but_it_is_exported_as_2, s, t, tn($e)) : Xr(i, e.Diagnostics.Module_0_declares_1_locally_but_it_is_not_exported, s, t); + z.declarations && e.addRelatedInfo.apply(void 0, Ve([tr], e.map(z.declarations, function(dr, Dr) { + return e.createDiagnosticForNode(dr, Dr === 0 ? e.Diagnostics._0_is_declared_here : e.Diagnostics.and_here, t); + }), false)); + } + } else + Xr(i, e.Diagnostics.Module_0_has_no_exported_member_1, s, t); + } + function zd(r, i, t, o) { + if (er >= e.ModuleKind.ES2015) { + var s = e.getESModuleInterop(ye) ? e.Diagnostics._0_can_only_be_imported_by_using_a_default_import : e.Diagnostics._0_can_only_be_imported_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import; + Xr(i, s, t); + } else if (e.isInJSFile(r)) { + var s = e.getESModuleInterop(ye) ? e.Diagnostics._0_can_only_be_imported_by_using_a_require_call_or_by_using_a_default_import : e.Diagnostics._0_can_only_be_imported_by_using_a_require_call_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import; + Xr(i, s, t); + } else { + var s = e.getESModuleInterop(ye) ? e.Diagnostics._0_can_only_be_imported_by_using_import_1_require_2_or_a_default_import : e.Diagnostics._0_can_only_be_imported_by_using_import_1_require_2_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import; + Xr(i, s, t, t, o); + } + } + function Al(r, i) { + var t = e.isBindingElement(r) ? e.getRootDeclaration(r) : r.parent.parent.parent, o = wc(t), s = kl(t, o || r, i), u = r.propertyName || r.name; + return o && s && e.isIdentifier(u) ? os(bi(Jt(s), u.escapedText), i) : (Gc(r, void 0, s, false), s); + } + function wc(r) { + if (e.isVariableDeclaration(r) && r.initializer && e.isPropertyAccessExpression(r.initializer)) + return r.initializer; + } + function qu(r, i) { + var t = Us(r.parent.symbol, i); + return Gc(r, void 0, t, false), t; + } + function Vu(r, i, t) { + var o = r.parent.parent.moduleSpecifier ? kl(r.parent.parent, r, t) : Ds(r.propertyName || r.name, i, false, t); + return Gc(r, void 0, o, false), o; + } + function ef(r, i) { + var t = e.isExportAssignment(r) ? r.expression : r.right, o = sl(t, i); + return Gc(r, void 0, o, false), o; + } + function sl(r, i) { + if (e.isClassExpression(r)) + return Os(r).symbol; + if (!(!e.isEntityName(r) && !e.isEntityNameExpression(r))) { + var t = Ds(r, 901119, true, i); + return t || (Os(r), va(r).resolvedSymbol); + } + } + function p_(r, i) { + var t = r.initializer; + return sl(t, i); + } + function Df(r, i) { + if (!!(e.isBinaryExpression(r.parent) && r.parent.left === r && r.parent.operatorToken.kind === 63)) + return sl(r.parent.right, i); + } + function Ec(r, i) { + switch (i === void 0 && (i = false), r.kind) { + case 265: + case 254: + return dd(r, i); + case 267: + return l_(r, i); + case 268: + return md(r, i); + case 274: + return ks(r, i); + case 270: + case 203: + return Al(r, i); + case 275: + return Vu(r, 901119, i); + case 271: + case 221: + return ef(r, i); + case 264: + return qu(r, i); + case 297: + return Ds(r.name, 901119, true, i); + case 296: + return p_(r, i); + case 207: + case 206: + return Df(r, i); + default: + return e.Debug.fail(); + } + } + function Zn(r, i) { + return i === void 0 && (i = 901119), r ? (r.flags & (2097152 | i)) === 2097152 || !!(r.flags & 2097152 && r.flags & 67108864) : false; + } + function os(r, i) { + return !i && Zn(r) ? Ps(r) : r; + } + function Ps(r) { + e.Debug.assert((r.flags & 2097152) !== 0, "Should only get Alias here."); + var i = Aa(r); + if (i.aliasTarget) + i.aliasTarget === vr && (i.aliasTarget = xe); + else { + i.aliasTarget = vr; + var t = ru(r); + if (!t) + return e.Debug.fail(); + var o = Ec(t); + i.aliasTarget === vr ? i.aliasTarget = o || xe : Xr(t, e.Diagnostics.Circular_definition_of_import_alias_0, tn(r)); + } + return i.aliasTarget; + } + function d_(r) { + var i = Aa(r); + if (i.aliasTarget !== vr) + return Ps(r); + } + function Gc(r, i, t, o) { + if (!r || e.isPropertyAccessExpression(r)) + return false; + var s = Et(r); + if (e.isTypeOnlyImportOrExportDeclaration(r)) { + var u = Aa(s); + return u.typeOnlyDeclaration = r, true; + } + var h = Aa(s); + return B_(h, i, o) || B_(h, t, o); + } + function B_(r, i, t) { + var o, s, u; + if (i && (r.typeOnlyDeclaration === void 0 || t && r.typeOnlyDeclaration === false)) { + var h = (s = (o = i.exports) === null || o === void 0 ? void 0 : o.get("export=")) !== null && s !== void 0 ? s : i, z = h.declarations && e.find(h.declarations, e.isTypeOnlyImportOrExportDeclaration); + r.typeOnlyDeclaration = (u = z != null ? z : Aa(h).typeOnlyDeclaration) !== null && u !== void 0 ? u : false; + } + return !!r.typeOnlyDeclaration; + } + function vu(r) { + if (!!(r.flags & 2097152)) { + var i = Aa(r); + return i.typeOnlyDeclaration || void 0; + } + } + function Gt(r) { + var i = Et(r), t = Ps(i); + if (t) { + var o = t === xe || t.flags & 111551 && !Av(t) && !vu(i); + o && As(i); + } + } + function As(r) { + var i = Aa(r); + if (!i.referenced) { + i.referenced = true; + var t = ru(r); + if (!t) + return e.Debug.fail(); + if (e.isInternalModuleImportEqualsDeclaration(t)) { + var o = os(r); + (o === xe || o.flags & 111551) && Os(t.moduleReference); + } + } + } + function vn(r) { + var i = Aa(r); + i.constEnumReferenced || (i.constEnumReferenced = true); + } + function Nl(r, i) { + return r.kind === 79 && e.isRightSideOfQualifiedNameOrPropertyAccess(r) && (r = r.parent), r.kind === 79 || r.parent.kind === 161 ? Ds(r, 1920, false, i) : (e.Debug.assert(r.parent.kind === 265), Ds(r, 901119, false, i)); + } + function cl(r, i) { + return r.parent ? cl(r.parent, i) + "." + tn(r) : tn(r, i, void 0, 20); + } + function rf(r) { + for (; e.isQualifiedName(r.parent); ) + r = r.parent; + return r; + } + function Ut(r) { + var i = e.getFirstIdentifier(r), t = es(i, i.escapedText, 111551, void 0, i, true); + if (!!t) { + for (; e.isQualifiedName(i.parent); ) { + var o = Jt(t); + if (t = bi(o, i.parent.right.escapedText), !t) + return; + i = i.parent; + } + return t; + } + } + function Ds(r, i, t, o, s) { + if (!e.nodeIsMissing(r)) { + var u = 1920 | (e.isInJSFile(r) ? i & 111551 : 0), h; + if (r.kind === 79) { + var z = i === u || e.nodeIsSynthesized(r) ? e.Diagnostics.Cannot_find_namespace_0 : HE(e.getFirstIdentifier(r)), me = e.isInJSFile(r) && !e.nodeIsSynthesized(r) ? bf(r, i) : void 0; + if (h = so(es(s || r, r.escapedText, i, t || me ? void 0 : z, r, true, false)), !h) + return so(me); + } else if (r.kind === 161 || r.kind === 206) { + var Me = r.kind === 161 ? r.left : r.expression, $e = r.kind === 161 ? r.right : r.name, tr = Ds(Me, u, t, false, s); + if (!tr || e.nodeIsMissing($e)) + return; + if (tr === xe) + return tr; + if (tr.valueDeclaration && e.isInJSFile(tr.valueDeclaration) && e.isVariableDeclaration(tr.valueDeclaration) && tr.valueDeclaration.initializer && xk(tr.valueDeclaration.initializer)) { + var dr = tr.valueDeclaration.initializer.arguments[0], Dr = ac(dr, dr); + if (Dr) { + var Qr = Us(Dr); + Qr && (tr = Qr); + } + } + if (h = so(qs(dc(tr), $e.escapedText, i)), !h) { + if (!t) { + var li = cl(tr), Ti = e.declarationNameToString($e), Ci = v0($e, tr); + if (Ci) { + Xr($e, e.Diagnostics._0_has_no_exported_member_named_1_Did_you_mean_2, li, Ti, tn(Ci)); + return; + } + var $i = e.isQualifiedName(r) && rf(r), Zi = qe && i & 788968 && $i && !e.isTypeOfExpression($i.parent) && Ut($i); + if (Zi) { + Xr($i, e.Diagnostics._0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0, e.entityNameToString($i)); + return; + } + if (i & 1920 && e.isQualifiedName(r.parent)) { + var qt = so(qs(dc(tr), $e.escapedText, 788968)); + if (qt) { + Xr(r.parent.right, e.Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1, tn(qt), e.unescapeLeadingUnderscores(r.parent.right.escapedText)); + return; + } + } + Xr($e, e.Diagnostics.Namespace_0_has_no_exported_member_1, li, Ti); + } + return; + } + } else + throw e.Debug.assertNever(r, "Unknown entity name kind."); + return e.Debug.assert((e.getCheckFlags(h) & 1) === 0, "Should never get an instantiated symbol here."), !e.nodeIsSynthesized(r) && e.isEntityName(r) && (h.flags & 2097152 || r.parent.kind === 271) && Gc(e.getAliasDeclarationFromName(r), h, void 0, true), h.flags & i || o ? h : Ps(h); + } + } + function bf(r, i) { + if (Dh(r.parent)) { + var t = bs(r.parent); + if (t) + return es(t, r.escapedText, i, void 0, r, true); + } + } + function bs(r) { + var i = e.findAncestor(r, function(u) { + return e.isJSDocNode(u) || u.flags & 8388608 ? e.isJSDocTypeAlias(u) : "quit"; + }); + if (!i) { + var t = e.getJSDocHost(r); + if (t && e.isExpressionStatement(t) && e.isPrototypePropertyAssignment(t.expression)) { + var o = Et(t.expression.left); + if (o) + return Dc(o); + } + if (t && e.isFunctionExpression(t) && e.isPrototypePropertyAssignment(t.parent) && e.isExpressionStatement(t.parent.parent)) { + var o = Et(t.parent.left); + if (o) + return Dc(o); + } + if (t && (e.isObjectLiteralMethod(t) || e.isPropertyAssignment(t)) && e.isBinaryExpression(t.parent.parent) && e.getAssignmentDeclarationKind(t.parent.parent) === 6) { + var o = Et(t.parent.parent.left); + if (o) + return Dc(o); + } + var s = e.getEffectiveJSDocHost(r); + if (s && e.isFunctionLike(s)) { + var o = Et(s); + return o && o.valueDeclaration; + } + } + } + function Dc(r) { + var i = r.parent.valueDeclaration; + if (!!i) { + var t = e.isAssignmentDeclaration(i) ? e.getAssignedExpandoInitializer(i) : e.hasOnlyExpressionInitializer(i) ? e.getDeclaredExpandoInitializer(i) : void 0; + return t || i; + } + } + function Cc(r) { + var i = r.valueDeclaration; + if (!(!i || !e.isInJSFile(i) || r.flags & 524288 || e.getExpandoInitializer(i, false))) { + var t = e.isVariableDeclaration(i) ? e.getDeclaredExpandoInitializer(i) : e.getAssignedExpandoInitializer(i); + if (t) { + var o = Et(t); + if (o) + return iS(o, r); + } + } + } + function ac(r, i, t) { + var o = e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.Classic, s = o ? e.Diagnostics.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_node_or_to_add_aliases_to_the_paths_option : e.Diagnostics.Cannot_find_module_0_or_its_corresponding_type_declarations; + return Pl(r, i, t ? void 0 : s); + } + function Pl(r, i, t, o) { + return o === void 0 && (o = false), e.isStringLiteralLike(i) ? Il(r, i.text, t, i, o) : void 0; + } + function Il(r, i, t, o, s) { + var u, h, z, me, Me, $e, tr, dr; + if (s === void 0 && (s = false), e.startsWith(i, "@types/")) { + var Dr = e.Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1, Qr = e.removePrefix(i, "@types/"); + Xr(o, Dr, Qr, i); + } + var li = b_(i, true); + if (li) + return li; + var Ti = e.getSourceFileOfNode(r), Ci = e.isStringLiteralLike(r) ? r : ((u = e.findAncestor(r, e.isImportCall)) === null || u === void 0 ? void 0 : u.arguments[0]) || ((h = e.findAncestor(r, e.isImportDeclaration)) === null || h === void 0 ? void 0 : h.moduleSpecifier) || ((z = e.findAncestor(r, e.isExternalModuleImportEqualsDeclaration)) === null || z === void 0 ? void 0 : z.moduleReference.expression) || ((me = e.findAncestor(r, e.isExportDeclaration)) === null || me === void 0 ? void 0 : me.moduleSpecifier) || ((Me = e.isModuleDeclaration(r) ? r : r.parent && e.isModuleDeclaration(r.parent) && r.parent.name === r ? r.parent : void 0) === null || Me === void 0 ? void 0 : Me.name) || (($e = e.isLiteralImportTypeNode(r) ? r : void 0) === null || $e === void 0 ? void 0 : $e.argument.literal), $i = Ci && e.isStringLiteralLike(Ci) ? e.getModeForUsageLocation(Ti, Ci) : Ti.impliedNodeFormat, Zi = e.getResolvedModule(Ti, i, $i), qt = Zi && e.getResolutionDiagnostic(ye, Zi), Nt = Zi && (!qt || qt === e.Diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set) && l.getSourceFile(Zi.resolvedFileName); + if (Nt) { + if (qt && Xr(o, qt, i, Zi.resolvedFileName), Nt.symbol) { + if (Zi.isExternalLibraryImport && !e.resolutionExtensionIsTSOrJson(Zi.extension) && zf(false, o, Zi, i), e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.Node16 || e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.NodeNext) { + var Ra = Ti.impliedNodeFormat === e.ModuleKind.CommonJS && !e.findAncestor(r, e.isImportCall) || !!e.findAncestor(r, e.isImportEqualsDeclaration), ca = e.findAncestor(r, function(cn) { + return e.isImportTypeNode(cn) || e.isExportDeclaration(cn) || e.isImportDeclaration(cn); + }), Sn = ca && e.isImportTypeNode(ca) ? (tr = ca.assertions) === null || tr === void 0 ? void 0 : tr.assertClause : ca == null ? void 0 : ca.assertClause; + Ra && Nt.impliedNodeFormat === e.ModuleKind.ESNext && !e.getResolutionModeOverrideForClause(Sn) && Xr(o, e.Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_synchronously_Use_dynamic_import_instead, i); + } + return so(Nt.symbol); + } + t && Xr(o, e.Diagnostics.File_0_is_not_a_module, Nt.fileName); + return; + } + if (S) { + var ja = e.findBestPatternMatch(S, function(cn) { + return cn.pattern; + }, i); + if (ja) { + var Fn = Ce && Ce.get(i); + return so(Fn || ja.symbol); + } + } + if (Zi && !e.resolutionExtensionIsTSOrJson(Zi.extension) && qt === void 0 || qt === e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type) { + if (s) { + var Dr = e.Diagnostics.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented; + Xr(o, Dr, i, Zi.resolvedFileName); + } else + zf(n && !!t, o, Zi, i); + return; + } + if (t) { + if (Zi) { + var wn = l.getProjectReferenceRedirect(Zi.resolvedFileName); + if (wn) { + Xr(o, e.Diagnostics.Output_file_0_has_not_been_built_from_source_file_1, wn, Zi.resolvedFileName); + return; + } + } + if (qt) + Xr(o, qt, i, Zi.resolvedFileName); + else { + var Tn = e.tryExtractTSExtension(i), Eo = e.pathIsRelative(i) && !e.hasExtension(i), lt = e.getEmitModuleResolutionKind(ye), it = lt === e.ModuleResolutionKind.Node16 || lt === e.ModuleResolutionKind.NodeNext; + if (Tn) { + var Dr = e.Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead, Yt = e.removeExtension(i, Tn), Ia = Yt; + er >= e.ModuleKind.ES2015 && (Ia += Tn === ".mts" ? ".mjs" : Tn === ".cts" ? ".cjs" : ".js"), Xr(o, Dr, Tn, Ia); + } else if (!ye.resolveJsonModule && e.fileExtensionIs(i, ".json") && e.getEmitModuleResolutionKind(ye) !== e.ModuleResolutionKind.Classic && e.hasJsonModuleEmitEnabled(ye)) + Xr(o, e.Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, i); + else if ($i === e.ModuleKind.ESNext && it && Eo) { + var Qt = e.getNormalizedAbsolutePath(i, e.getDirectoryPath(Ti.path)), Ka = (dr = jo.find(function(cn) { + var Un = cn[0], oa = cn[1]; + return l.fileExists(Qt + Un); + })) === null || dr === void 0 ? void 0 : dr[1]; + Ka ? Xr(o, e.Diagnostics.Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Did_you_mean_0, i + Ka) : Xr(o, e.Diagnostics.Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Consider_adding_an_extension_to_the_import_path); + } else + Xr(o, t, i); + } + } + } + function zf(r, i, t, o) { + var s = t.packageId, u = t.resolvedFileName, h = !e.isExternalModuleNameRelative(o) && s ? ul(s.name) ? e.chainDiagnosticMessages(void 0, e.Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, s.name, e.mangleScopedPackageName(s.name)) : Nu(s.name) ? e.chainDiagnosticMessages(void 0, e.Diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, s.name, o) : e.chainDiagnosticMessages(void 0, e.Diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, o, e.mangleScopedPackageName(s.name)) : void 0; + Ic(r, i, e.chainDiagnosticMessages(h, e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type, o, u)); + } + function ul(r) { + return d().has(e.getTypesPackageName(r)); + } + function Nu(r) { + return !!d().get(r); + } + function Us(r, i) { + if (r != null && r.exports) { + var t = os(r.exports.get("export="), i), o = Ap(so(t), so(r)); + return so(o) || r; + } + } + function Ap(r, i) { + if (!r || r === xe || r === i || i.exports.size === 1 || r.flags & 2097152) + return r; + var t = Aa(r); + if (t.cjsExportMerged) + return t.cjsExportMerged; + var o = r.flags & 33554432 ? r : Yl(r); + return o.flags = o.flags | 512, o.exports === void 0 && (o.exports = e.createSymbolTable()), i.exports.forEach(function(s, u) { + u !== "export=" && o.exports.set(u, o.exports.has(u) ? Bf(o.exports.get(u), s) : s); + }), Aa(o).cjsExportMerged = o, t.cjsExportMerged = o; + } + function Wf(r, i, t, o) { + var s, u = Us(r, t); + if (!t && u) { + if (!o && !(u.flags & 1539) && !e.getDeclarationOfKind(u, 305)) { + var h = er >= e.ModuleKind.ES2015 ? "allowSyntheticDefaultImports" : "esModuleInterop"; + return Xr(i, e.Diagnostics.This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_referencing_its_default_export, h), u; + } + var z = i.parent; + if (e.isImportDeclaration(z) && e.getNamespaceDeclarationNode(z) || e.isImportCall(z)) { + var me = e.isImportCall(z) ? z.arguments[0] : z.moduleSpecifier, Me = Jt(u), $e = Sk(Me, u, r, me); + if ($e) + return Sf(u, $e, z); + var tr = (s = r == null ? void 0 : r.declarations) === null || s === void 0 ? void 0 : s.find(e.isSourceFile), dr = tr && $l(hf(me), tr.impliedNodeFormat); + if (e.getESModuleInterop(ye) || dr) { + var Dr = Ft(Me, 0); + if ((!Dr || !Dr.length) && (Dr = Ft(Me, 1)), Dr && Dr.length || bi(Me, "default", true) || dr) { + var Qr = Tk(Me, u, r, me); + return Sf(u, Qr, z); + } + } + } + } + return u; + } + function Sf(r, i, t) { + var o = oo(r.flags, r.escapedName); + o.declarations = r.declarations ? r.declarations.slice() : [], o.parent = r.parent, o.target = r, o.originatingImport = t, r.valueDeclaration && (o.valueDeclaration = r.valueDeclaration), r.constEnumOnlyModule && (o.constEnumOnlyModule = true), r.members && (o.members = new e.Map(r.members)), r.exports && (o.exports = new e.Map(r.exports)); + var s = Ru(i); + return o.type = rs(o, s.members, e.emptyArray, e.emptyArray, s.indexInfos), o; + } + function ll(r) { + return r.exports.get("export=") !== void 0; + } + function J_(r) { + return Y_(Pu(r)); + } + function j_(r) { + var i = J_(r), t = Us(r); + if (t !== r) { + var o = Jt(t); + qf(o) && e.addRange(i, uo(o)); + } + return i; + } + function U_(r, i) { + var t = Pu(r); + t.forEach(function(u, h) { + Ol(h) || i(u, h); + }); + var o = Us(r); + if (o !== r) { + var s = Jt(o); + qf(s) && U1(s, function(u, h) { + i(u, h); + }); + } + } + function iu(r, i) { + var t = Pu(i); + if (t) + return t.get(r); + } + function vd(r, i) { + var t = iu(r, i); + if (t) + return t; + var o = Us(i); + if (o !== i) { + var s = Jt(o); + return qf(s) ? bi(s, r) : void 0; + } + } + function qf(r) { + return !(r.flags & 131068 || e.getObjectFlags(r) & 1 || Tu(r) || Yn(r)); + } + function dc(r) { + return r.flags & 6256 ? Jv(r, "resolvedExports") : r.flags & 1536 ? Pu(r) : r.exports || we; + } + function Pu(r) { + var i = Aa(r); + return i.resolvedExports || (i.resolvedExports = Iu(r)); + } + function wl(r, i, t, o) { + !i || i.forEach(function(s, u) { + if (u !== "default") { + var h = r.get(u); + if (!h) + r.set(u, s), t && o && t.set(u, { specifierText: e.getTextOfNode(o.moduleSpecifier) }); + else if (t && o && h && os(h) !== os(s)) { + var z = t.get(u); + z.exportsWithDuplicate ? z.exportsWithDuplicate.push(o) : z.exportsWithDuplicate = [o]; + } + } + }); + } + function Iu(r) { + var i = []; + return r = Us(r), t(r) || we; + function t(o) { + if (!!(o && o.exports && e.pushIfUnique(i, o))) { + var s = new e.Map(o.exports), u = o.exports.get("__export"); + if (u) { + var h = e.createSymbolTable(), z = new e.Map(); + if (u.declarations) + for (var me = 0, Me = u.declarations; me < Me.length; me++) { + var $e = Me[me], tr = ac($e, $e.moduleSpecifier), dr = t(tr); + wl(h, dr, z, $e); + } + z.forEach(function(Dr, Qr) { + var li = Dr.exportsWithDuplicate; + if (!(Qr === "export=" || !(li && li.length) || s.has(Qr))) + for (var Ti = 0, Ci = li; Ti < Ci.length; Ti++) { + var $i = Ci[Ti]; + rn.add(e.createDiagnosticForNode($i, e.Diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, z.get(Qr).specifierText, e.unescapeLeadingUnderscores(Qr))); + } + }), wl(s, h); + } + return s; + } + } + } + function so(r) { + var i; + return r && r.mergeId && (i = xl[r.mergeId]) ? i : r; + } + function Et(r) { + return so(r.symbol && dg(r.symbol)); + } + function Ys(r) { + return so(r.parent && dg(r.parent)); + } + function Ku(r, i) { + var t = e.getSourceFileOfNode(i), o = A(t), s = Aa(r), u; + if (s.extendedContainersByFile && (u = s.extendedContainersByFile.get(o))) + return u; + if (t && t.imports) { + for (var h = 0, z = t.imports; h < z.length; h++) { + var me = z[h]; + if (!e.nodeIsSynthesized(me)) { + var Me = ac(i, me, true); + if (!!Me) { + var $e = fl(Me, r); + !$e || (u = e.append(u, Me)); + } + } + } + if (e.length(u)) + return (s.extendedContainersByFile || (s.extendedContainersByFile = new e.Map())).set(o, u), u; + } + if (s.extendedContainers) + return s.extendedContainers; + for (var tr = l.getSourceFiles(), dr = 0, Dr = tr; dr < Dr.length; dr++) { + var Qr = Dr[dr]; + if (!!e.isExternalModule(Qr)) { + var li = Et(Qr), $e = fl(li, r); + !$e || (u = e.append(u, li)); + } + } + return s.extendedContainers = u || e.emptyArray; + } + function Np(r, i, t) { + var o = Ys(r); + if (o && !(r.flags & 262144)) { + var s = e.mapDefined(o.declarations, $e), u = i && Ku(r, i), h = Pp(o, t); + if (i && o.flags & Fl(t) && pl(o, i, 1920, false)) + return e.append(e.concatenate(e.concatenate([o], s), u), h); + var z = !(o.flags & Fl(t)) && o.flags & 788968 && go(o).flags & 524288 && t === 111551 ? Ef(i, function(tr) { + return e.forEachEntry(tr, function(dr) { + if (dr.flags & Fl(t) && Jt(dr) === go(o)) + return dr; + }); + }) : void 0, me = z ? Ve(Ve([z], s, true), [o], false) : Ve(Ve([], s, true), [o], false); + return me = e.append(me, h), me = e.addRange(me, u), me; + } + var Me = e.mapDefined(r.declarations, function(tr) { + if (!e.isAmbientModule(tr) && tr.parent) { + if (Fc(tr.parent)) + return Et(tr.parent); + if (e.isModuleBlock(tr.parent) && tr.parent.parent && Us(Et(tr.parent.parent)) === r) + return Et(tr.parent.parent); + } + if (e.isClassExpression(tr) && e.isBinaryExpression(tr.parent) && tr.parent.operatorToken.kind === 63 && e.isAccessExpression(tr.parent.left) && e.isEntityNameExpression(tr.parent.left.expression)) + return e.isModuleExportsAccessExpression(tr.parent.left) || e.isExportsIdentifier(tr.parent.left.expression) ? Et(e.getSourceFileOfNode(tr)) : (Os(tr.parent.left.expression), va(tr.parent.left.expression).resolvedSymbol); + }); + if (!e.length(Me)) + return; + return e.mapDefined(Me, function(tr) { + return fl(tr, r) ? tr : void 0; + }); + function $e(tr) { + return o && nc(tr, o); + } + } + function Pp(r, i) { + var t = !!e.length(r.declarations) && e.first(r.declarations); + if (i & 111551 && t && t.parent && e.isVariableDeclaration(t.parent) && (e.isObjectLiteralExpression(t) && t === t.parent.initializer || e.isTypeLiteralNode(t) && t === t.parent.type)) + return Et(t.parent); + } + function nc(r, i) { + var t = gl(r), o = t && t.exports && t.exports.get("export="); + return o && _l(o, i) ? t : void 0; + } + function fl(r, i) { + if (r === Ys(i)) + return i; + var t = r.exports && r.exports.get("export="); + if (t && _l(t, i)) + return r; + var o = dc(r), s = o.get(i.escapedName); + return s && _l(s, i) ? s : e.forEachEntry(o, function(u) { + if (_l(u, i)) + return u; + }); + } + function _l(r, i) { + if (so(os(so(r))) === so(os(so(i)))) + return r; + } + function cu(r) { + return so(r && (r.flags & 1048576) !== 0 && r.exportSymbol || r); + } + function gc(r) { + return !!(r.flags & 111551 || r.flags & 2097152 && Ps(r).flags & 111551 && !vu(r)); + } + function Tf(r) { + for (var i = r.members, t = 0, o = i; t < o.length; t++) { + var s = o[t]; + if (s.kind === 171 && e.nodeIsPresent(s.body)) + return s; + } + } + function mc(r) { + var i = new Fe(Di, r); + return Be++, i.id = Be, e.tracing === null || e.tracing === void 0 || e.tracing.recordType(i), i; + } + function Ip(r) { + return new Fe(Di, r); + } + function ms(r, i, t) { + t === void 0 && (t = 0); + var o = mc(r); + return o.intrinsicName = i, o.objectFlags = t, o; + } + function tu(r, i) { + var t = mc(524288); + return t.objectFlags = r, t.symbol = i, t.members = void 0, t.properties = void 0, t.callSignatures = void 0, t.constructSignatures = void 0, t.indexInfos = void 0, t; + } + function wp() { + return Pa(e.arrayFrom(G.keys(), Bu)); + } + function Hc(r) { + var i = mc(262144); + return r && (i.symbol = r), i; + } + function Ol(r) { + return r.charCodeAt(0) === 95 && r.charCodeAt(1) === 95 && r.charCodeAt(2) !== 95 && r.charCodeAt(2) !== 64 && r.charCodeAt(2) !== 35; + } + function tf(r) { + var i; + return r.forEach(function(t, o) { + xf(t, o) && (i || (i = [])).push(t); + }), i || e.emptyArray; + } + function xf(r, i) { + return !Ol(i) && gc(r); + } + function z_(r) { + var i = tf(r), t = rD(r); + return t ? e.concatenate(i, [t]) : i; + } + function Oc(r, i, t, o, s) { + var u = r; + return u.members = i, u.properties = e.emptyArray, u.callSignatures = t, u.constructSignatures = o, u.indexInfos = s, i !== we && (u.properties = tf(i)), u; + } + function rs(r, i, t, o, s) { + return Oc(tu(16, r), i, t, o, s); + } + function Op(r) { + if (r.constructSignatures.length === 0) + return r; + if (r.objectTypeWithoutAbstractConstructSignatures) + return r.objectTypeWithoutAbstractConstructSignatures; + var i = e.filter(r.constructSignatures, function(o) { + return !(o.flags & 4); + }); + if (r.constructSignatures === i) + return r; + var t = rs(r.symbol, r.members, r.callSignatures, e.some(i) ? i : e.emptyArray, r.indexInfos); + return r.objectTypeWithoutAbstractConstructSignatures = t, t.objectTypeWithoutAbstractConstructSignatures = t, t; + } + function Ef(r, i) { + for (var t, o = function(h) { + if (h.locals && !Cu(h) && (t = i(h.locals, void 0, true, h))) + return { value: t }; + switch (h.kind) { + case 305: + if (!e.isExternalOrCommonJsModule(h)) + break; + case 261: + var z = Et(h); + if (t = i((z == null ? void 0 : z.exports) || we, void 0, true, h)) + return { value: t }; + break; + case 257: + case 226: + case 258: + var me; + if ((Et(h).members || we).forEach(function(Me, $e) { + Me.flags & 788968 && (me || (me = e.createSymbolTable())).set($e, Me); + }), me && (t = i(me, void 0, false, h))) + return { value: t }; + break; + } + }, s = r; s; s = s.parent) { + var u = o(s); + if (typeof u == "object") + return u.value; + } + return i(ii, void 0, true); + } + function Fl(r) { + return r === 111551 ? 111551 : 1920; + } + function pl(r, i, t, o, s) { + if (s === void 0 && (s = new e.Map()), !(r && !Mp(r))) + return; + var u = Aa(r), h = u.accessibleChainCache || (u.accessibleChainCache = new e.Map()), z = Ef(i, function(Ci, $i, Zi, qt) { + return qt; + }), me = "".concat(o ? 0 : 1, "|").concat(z && A(z), "|").concat(t); + if (h.has(me)) + return h.get(me); + var Me = y(r), $e = s.get(Me); + $e || s.set(Me, $e = []); + var tr = Ef(i, dr); + return h.set(me, tr), tr; + function dr(Ci, $i, Zi) { + if (!!e.pushIfUnique($e, Ci)) { + var qt = li(Ci, $i, Zi); + return $e.pop(), qt; + } + } + function Dr(Ci, $i) { + return !Fp(Ci, i, $i) || !!pl(Ci.parent, i, Fl($i), o, s); + } + function Qr(Ci, $i, Zi) { + return (r === ($i || Ci) || so(r) === so($i || Ci)) && !e.some(Ci.declarations, Fc) && (Zi || Dr(so(Ci), t)); + } + function li(Ci, $i, Zi) { + if (Qr(Ci.get(r.escapedName), void 0, $i)) + return [r]; + var qt = e.forEachEntry(Ci, function(Nt) { + if (Nt.flags & 2097152 && Nt.escapedName !== "export=" && Nt.escapedName !== "default" && !(e.isUMDExportSymbol(Nt) && i && e.isExternalModule(e.getSourceFileOfNode(i))) && (!o || e.some(Nt.declarations, e.isExternalModuleImportEqualsDeclaration)) && (Zi ? !e.some(Nt.declarations, e.isNamespaceReexportDeclaration) : true) && ($i || !e.getDeclarationOfKind(Nt, 275))) { + var Ra = Ps(Nt), ca = Ti(Nt, Ra, $i); + if (ca) + return ca; + } + if (Nt.escapedName === r.escapedName && Nt.exportSymbol && Qr(so(Nt.exportSymbol), void 0, $i)) + return [r]; + }); + return qt || (Ci === ii ? Ti(pe, pe, $i) : void 0); + } + function Ti(Ci, $i, Zi) { + if (Qr(Ci, $i, Zi)) + return [Ci]; + var qt = dc($i), Nt = qt && dr(qt, true); + if (Nt && Dr(Ci, Fl(t))) + return [Ci].concat(Nt); + } + } + function Fp(r, i, t) { + var o = false; + return Ef(i, function(s) { + var u = so(s.get(r.escapedName)); + return u ? u === r ? true : (u = u.flags & 2097152 && !e.getDeclarationOfKind(u, 275) ? Ps(u) : u, u.flags & t ? (o = true, true) : false) : false; + }), o; + } + function Mp(r) { + if (r.declarations && r.declarations.length) { + for (var i = 0, t = r.declarations; i < t.length; i++) { + var o = t[i]; + switch (o.kind) { + case 167: + case 169: + case 172: + case 173: + continue; + default: + return false; + } + } + return true; + } + return false; + } + function Gu(r, i) { + var t = dl(r, i, 788968, false, true); + return t.accessibility === 0; + } + function Lp(r, i) { + var t = dl(r, i, 111551, false, true); + return t.accessibility === 0; + } + function Cf(r, i, t) { + var o = dl(r, i, t, false, false); + return o.accessibility === 0; + } + function W_(r, i, t, o, s, u) { + if (!!e.length(r)) { + for (var h, z = false, me = 0, Me = r; me < Me.length; me++) { + var $e = Me[me], tr = pl($e, i, o, false); + if (tr) { + h = $e; + var dr = Hu(tr[0], s); + if (dr) + return dr; + } + if (u && e.some($e.declarations, Fc)) { + if (s) { + z = true; + continue; + } + return { accessibility: 0 }; + } + var Dr = Np($e, i, o), Qr = W_(Dr, i, t, t === $e ? Fl(o) : o, s, u); + if (Qr) + return Qr; + } + if (z) + return { accessibility: 0 }; + if (h) + return { accessibility: 1, errorSymbolName: tn(t, i, o), errorModuleName: h !== t ? tn(h, i, 1920) : void 0 }; + } + } + function g_(r, i, t, o) { + return dl(r, i, t, o, true); + } + function dl(r, i, t, o, s) { + if (r && i) { + var u = W_([r], i, r, t, o, s); + if (u) + return u; + var h = e.forEach(r.declarations, gl); + if (h) { + var z = gl(i); + if (h !== z) + return { accessibility: 2, errorSymbolName: tn(r, i, t), errorModuleName: tn(h), errorNode: e.isInJSFile(i) ? i : void 0 }; + } + return { accessibility: 1, errorSymbolName: tn(r, i, t) }; + } + return { accessibility: 0 }; + } + function gl(r) { + var i = e.findAncestor(r, Vf); + return i && Et(i); + } + function Vf(r) { + return e.isAmbientModule(r) || r.kind === 305 && e.isExternalOrCommonJsModule(r); + } + function Fc(r) { + return e.isModuleWithStringLiteralName(r) || r.kind === 305 && e.isExternalOrCommonJsModule(r); + } + function Hu(r, i) { + var t; + if (!e.every(e.filter(r.declarations, function(u) { + return u.kind !== 79; + }), o)) + return; + return { accessibility: 0, aliasesToMakeVisible: t }; + function o(u) { + var h, z; + if (!wu(u)) { + var me = Au(u); + return me && !e.hasSyntacticModifier(me, 1) && wu(me.parent) ? s(u, me) : e.isVariableDeclaration(u) && e.isVariableStatement(u.parent.parent) && !e.hasSyntacticModifier(u.parent.parent, 1) && wu(u.parent.parent.parent) ? s(u, u.parent.parent) : e.isLateVisibilityPaintedStatement(u) && !e.hasSyntacticModifier(u, 1) && wu(u.parent) ? s(u, u) : r.flags & 2097152 && e.isBindingElement(u) && e.isInJSFile(u) && ((h = u.parent) === null || h === void 0 ? void 0 : h.parent) && e.isVariableDeclaration(u.parent.parent) && ((z = u.parent.parent.parent) === null || z === void 0 ? void 0 : z.parent) && e.isVariableStatement(u.parent.parent.parent.parent) && !e.hasSyntacticModifier(u.parent.parent.parent.parent, 1) && u.parent.parent.parent.parent.parent && wu(u.parent.parent.parent.parent.parent) ? s(u, u.parent.parent.parent.parent) : false; + } + return true; + } + function s(u, h) { + return i && (va(u).isVisible = true, t = e.appendIfUnique(t, h)), true; + } + } + function af(r, i) { + var t; + r.parent.kind === 181 || r.parent.kind === 228 && !e.isPartOfTypeNode(r.parent) || r.parent.kind === 162 ? t = 1160127 : r.kind === 161 || r.kind === 206 || r.parent.kind === 265 ? t = 1920 : t = 788968; + var o = e.getFirstIdentifier(r), s = es(i, o.escapedText, t, void 0, void 0, false); + return s && s.flags & 262144 && t & 788968 ? { accessibility: 0 } : s && Hu(s, true) || { accessibility: 1, errorSymbolName: e.getTextOfNode(o), errorNode: o }; + } + function tn(r, i, t, o, s) { + o === void 0 && (o = 4); + var u = 70221824; + o & 2 && (u |= 128), o & 1 && (u |= 512), o & 8 && (u |= 16384), o & 16 && (u |= 134217728); + var h = o & 4 ? Ur.symbolToExpression : Ur.symbolToEntityName; + return s ? z(s).getText() : e.usingSingleLineStringWriter(z); + function z(me) { + var Me = h(r, t, i, u), $e = (i == null ? void 0 : i.kind) === 305 ? e.createPrinter({ removeComments: true, neverAsciiEscape: true }) : e.createPrinter({ removeComments: true }), tr = i && e.getSourceFileOfNode(i); + return $e.writeNode(4, Me, tr, me), me; + } + } + function Ml(r, i, t, o, s) { + return t === void 0 && (t = 0), s ? u(s).getText() : e.usingSingleLineStringWriter(u); + function u(h) { + var z; + t & 262144 ? z = o === 1 ? 180 : 179 : z = o === 1 ? 175 : 174; + var me = Ur.signatureToSignatureDeclaration(r, z, i, Rp(t) | 70221824 | 512), Me = e.createPrinter({ removeComments: true, omitTrailingSemicolon: true }), $e = i && e.getSourceFileOfNode(i); + return Me.writeNode(4, me, $e, e.getTrailingSemicolonDeferringWriter(h)), h; + } + } + function Ot(r, i, t, o) { + t === void 0 && (t = 1064960), o === void 0 && (o = e.createTextWriter("")); + var s = ye.noErrorTruncation || t & 1, u = Ur.typeToTypeNode(r, i, Rp(t) | 70221824 | (s ? 1 : 0), o); + if (u === void 0) + return e.Debug.fail("should always get typenode"); + var h = { removeComments: r !== Ue }, z = e.createPrinter(h), me = i && e.getSourceFileOfNode(i); + z.writeNode(4, u, me, o); + var Me = o.getText(), $e = s ? e.noTruncationMaximumTruncationLength * 2 : e.defaultMaximumTruncationLength * 2; + return $e && Me && Me.length >= $e ? Me.substr(0, $e - 3) + "..." : Me; + } + function nf(r, i) { + var t = Kf(r.symbol) ? Ot(r, r.symbol.valueDeclaration) : Ot(r), o = Kf(i.symbol) ? Ot(i, i.symbol.valueDeclaration) : Ot(i); + return t === o && (t = q_(r), o = q_(i)), [t, o]; + } + function q_(r) { + return Ot(r, void 0, 64); + } + function Kf(r) { + return r && !!r.valueDeclaration && e.isExpression(r.valueDeclaration) && !Ju(r.valueDeclaration); + } + function Rp(r) { + return r === void 0 && (r = 0), r & 814775659; + } + function yd(r) { + return !!r.symbol && !!(r.symbol.flags & 32) && (r === aa(r.symbol) || !!(r.flags & 524288) && !!(e.getObjectFlags(r) & 16777216)); + } + function m_() { + return { typeToTypeNode: function(ci, Fr, jt, Lt) { + return r(Fr, jt, Lt, function(ea) { + return o(ci, ea); + }); + }, indexInfoToIndexSignatureDeclaration: function(ci, Fr, jt, Lt) { + return r(Fr, jt, Lt, function(ea) { + return Me(ci, ea, void 0); + }); + }, signatureToSignatureDeclaration: function(ci, Fr, jt, Lt, ea) { + return r(jt, Lt, ea, function(Kt) { + return $e(ci, Fr, Kt); + }); + }, symbolToEntityName: function(ci, Fr, jt, Lt, ea) { + return r(jt, Lt, ea, function(Kt) { + return Fn(ci, Kt, Fr, false); + }); + }, symbolToExpression: function(ci, Fr, jt, Lt, ea) { + return r(jt, Lt, ea, function(Kt) { + return wn(ci, Kt, Fr); + }); + }, symbolToTypeParameterDeclarations: function(ci, Fr, jt, Lt) { + return r(Fr, jt, Lt, function(ea) { + return $i(ci, ea); + }); + }, symbolToParameterDeclaration: function(ci, Fr, jt, Lt) { + return r(Fr, jt, Lt, function(ea) { + return Qr(ci, ea); + }); + }, typeParameterToDeclaration: function(ci, Fr, jt, Lt) { + return r(Fr, jt, Lt, function(ea) { + return Dr(ci, ea); + }); + }, symbolTableToDeclarationStatements: function(ci, Fr, jt, Lt, ea) { + return r(Fr, jt, Lt, function(Kt) { + return Ln(ci, Kt, ea); + }); + } }; + function r(ci, Fr, jt, Lt) { + var ea, Kt; + e.Debug.assert(ci === void 0 || (ci.flags & 8) === 0); + var $t = { enclosingDeclaration: ci, flags: Fr || 0, tracker: jt && jt.trackSymbol ? jt : { trackSymbol: function() { + return false; + }, moduleResolverHost: Fr & 134217728 ? { getCommonSourceDirectory: l.getCommonSourceDirectory ? function() { + return l.getCommonSourceDirectory(); + } : function() { + return ""; + }, getCurrentDirectory: function() { + return l.getCurrentDirectory(); + }, getSymlinkCache: e.maybeBind(l, l.getSymlinkCache), getPackageJsonInfoCache: function() { + var Yr; + return (Yr = l.getPackageJsonInfoCache) === null || Yr === void 0 ? void 0 : Yr.call(l); + }, useCaseSensitiveFileNames: e.maybeBind(l, l.useCaseSensitiveFileNames), redirectTargetsMap: l.redirectTargetsMap, getProjectReferenceRedirect: function(Yr) { + return l.getProjectReferenceRedirect(Yr); + }, isSourceOfProjectReferenceRedirect: function(Yr) { + return l.isSourceOfProjectReferenceRedirect(Yr); + }, fileExists: function(Yr) { + return l.fileExists(Yr); + }, getFileIncludeReasons: function() { + return l.getFileIncludeReasons(); + }, readFile: l.readFile ? function(Yr) { + return l.readFile(Yr); + } : void 0 } : void 0 }, encounteredError: false, reportedDiagnostic: false, visitedTypes: void 0, symbolDepth: void 0, inferTypeParameters: void 0, approximateLength: 0 }; + $t.tracker = i($t, $t.tracker); + var Ua = Lt($t); + return $t.truncating && $t.flags & 1 && ((Kt = (ea = $t.tracker) === null || ea === void 0 ? void 0 : ea.reportTruncationError) === null || Kt === void 0 || Kt.call(ea)), $t.encounteredError ? void 0 : Ua; + } + function i(ci, Fr) { + var jt = Fr.trackSymbol; + return Ke(Ke({}, Fr), { reportCyclicStructureError: Lt(Fr.reportCyclicStructureError), reportInaccessibleThisError: Lt(Fr.reportInaccessibleThisError), reportInaccessibleUniqueSymbolError: Lt(Fr.reportInaccessibleUniqueSymbolError), reportLikelyUnsafeImportRequiredError: Lt(Fr.reportLikelyUnsafeImportRequiredError), reportNonlocalAugmentation: Lt(Fr.reportNonlocalAugmentation), reportPrivateInBaseOfClassExpression: Lt(Fr.reportPrivateInBaseOfClassExpression), reportNonSerializableProperty: Lt(Fr.reportNonSerializableProperty), trackSymbol: jt && function() { + for (var ea = [], Kt = 0; Kt < arguments.length; Kt++) + ea[Kt] = arguments[Kt]; + var $t = jt.apply(void 0, ea); + return $t && (ci.reportedDiagnostic = true), $t; + } }); + function Lt(ea) { + return ea && function() { + for (var Kt = [], $t = 0; $t < arguments.length; $t++) + Kt[$t] = arguments[$t]; + return ci.reportedDiagnostic = true, ea.apply(void 0, Kt); + }; + } + } + function t(ci) { + return ci.truncating ? ci.truncating : ci.truncating = ci.approximateLength > (ci.flags & 1 ? e.noTruncationMaximumTruncationLength : e.defaultMaximumTruncationLength); + } + function o(ci, Fr) { + g && g.throwIfCancellationRequested && g.throwIfCancellationRequested(); + var jt = Fr.flags & 8388608; + if (Fr.flags &= -8388609, !ci) { + if (!(Fr.flags & 262144)) { + Fr.encounteredError = true; + return; + } + return Fr.approximateLength += 3, e.factory.createKeywordTypeNode(130); + } + if (Fr.flags & 536870912 || (ci = bu(ci)), ci.flags & 1) + return ci.aliasSymbol ? e.factory.createTypeReferenceNode(Ra(ci.aliasSymbol), z(ci.aliasTypeArguments, Fr)) : ci === Ue ? e.addSyntheticLeadingComment(e.factory.createKeywordTypeNode(130), 3, "unresolved") : (Fr.approximateLength += 3, e.factory.createKeywordTypeNode(ci === De ? 138 : 130)); + if (ci.flags & 2) + return e.factory.createKeywordTypeNode(155); + if (ci.flags & 4) + return Fr.approximateLength += 6, e.factory.createKeywordTypeNode(150); + if (ci.flags & 8) + return Fr.approximateLength += 6, e.factory.createKeywordTypeNode(147); + if (ci.flags & 64) + return Fr.approximateLength += 6, e.factory.createKeywordTypeNode(158); + if (ci.flags & 16 && !ci.aliasSymbol) + return Fr.approximateLength += 7, e.factory.createKeywordTypeNode(133); + if (ci.flags & 1024 && !(ci.flags & 1048576)) { + var Lt = Ys(ci.symbol), ea = ca(Lt, Fr, 788968); + if (go(Lt) === ci) + return ea; + var Kt = e.symbolName(ci.symbol); + return e.isIdentifierText(Kt, 0) ? fp(ea, e.factory.createTypeReferenceNode(Kt, void 0)) : e.isImportTypeNode(ea) ? (ea.isTypeOf = true, e.factory.createIndexedAccessTypeNode(ea, e.factory.createLiteralTypeNode(e.factory.createStringLiteral(Kt)))) : e.isTypeReferenceNode(ea) ? e.factory.createIndexedAccessTypeNode(e.factory.createTypeQueryNode(ea.typeName), e.factory.createLiteralTypeNode(e.factory.createStringLiteral(Kt))) : e.Debug.fail("Unhandled type node kind returned from `symbolToTypeNode`."); + } + if (ci.flags & 1056) + return ca(ci.symbol, Fr, 788968); + if (ci.flags & 128) + return Fr.approximateLength += ci.value.length + 2, e.factory.createLiteralTypeNode(e.setEmitFlags(e.factory.createStringLiteral(ci.value, !!(Fr.flags & 268435456)), 16777216)); + if (ci.flags & 256) { + var $t = ci.value; + return Fr.approximateLength += ("" + $t).length, e.factory.createLiteralTypeNode($t < 0 ? e.factory.createPrefixUnaryExpression(40, e.factory.createNumericLiteral(-$t)) : e.factory.createNumericLiteral($t)); + } + if (ci.flags & 2048) + return Fr.approximateLength += e.pseudoBigIntToString(ci.value).length + 1, e.factory.createLiteralTypeNode(e.factory.createBigIntLiteral(ci.value)); + if (ci.flags & 512) + return Fr.approximateLength += ci.intrinsicName.length, e.factory.createLiteralTypeNode(ci.intrinsicName === "true" ? e.factory.createTrue() : e.factory.createFalse()); + if (ci.flags & 8192) { + if (!(Fr.flags & 1048576)) { + if (Lp(ci.symbol, Fr.enclosingDeclaration)) + return Fr.approximateLength += 6, ca(ci.symbol, Fr, 111551); + Fr.tracker.reportInaccessibleUniqueSymbolError && Fr.tracker.reportInaccessibleUniqueSymbolError(); + } + return Fr.approximateLength += 13, e.factory.createTypeOperatorNode(154, e.factory.createKeywordTypeNode(151)); + } + if (ci.flags & 16384) + return Fr.approximateLength += 4, e.factory.createKeywordTypeNode(114); + if (ci.flags & 32768) + return Fr.approximateLength += 9, e.factory.createKeywordTypeNode(153); + if (ci.flags & 65536) + return Fr.approximateLength += 4, e.factory.createLiteralTypeNode(e.factory.createNull()); + if (ci.flags & 131072) + return Fr.approximateLength += 5, e.factory.createKeywordTypeNode(143); + if (ci.flags & 4096) + return Fr.approximateLength += 6, e.factory.createKeywordTypeNode(151); + if (ci.flags & 67108864) + return Fr.approximateLength += 6, e.factory.createKeywordTypeNode(148); + if (e.isThisTypeParameter(ci)) + return Fr.flags & 4194304 && (!Fr.encounteredError && !(Fr.flags & 32768) && (Fr.encounteredError = true), Fr.tracker.reportInaccessibleThisError && Fr.tracker.reportInaccessibleThisError()), Fr.approximateLength += 4, e.factory.createThisTypeNode(); + if (!jt && ci.aliasSymbol && (Fr.flags & 16384 || Gu(ci.aliasSymbol, Fr.enclosingDeclaration))) { + var Ua = z(ci.aliasTypeArguments, Fr); + return Ol(ci.aliasSymbol.escapedName) && !(ci.aliasSymbol.flags & 32) ? e.factory.createTypeReferenceNode(e.factory.createIdentifier(""), Ua) : ca(ci.aliasSymbol, Fr, 788968, Ua); + } + var Yr = e.getObjectFlags(ci); + if (Yr & 4) + return e.Debug.assert(!!(ci.flags & 524288)), ci.node ? jd(ci, Tl) : Tl(ci); + if (ci.flags & 262144 || Yr & 3) { + if (ci.flags & 262144 && e.contains(Fr.inferTypeParameters, ci)) { + Fr.approximateLength += e.symbolName(ci.symbol).length + 6; + var Ni = void 0, Hi = Tc(ci); + if (Hi) { + var _t = sx(ci, true); + _t && wf(Hi, _t) || (Fr.approximateLength += 9, Ni = Hi && o(Hi, Fr)); + } + return e.factory.createInferTypeNode(dr(ci, Fr, Ni)); + } + if (Fr.flags & 4 && ci.flags & 262144 && !Gu(ci.symbol, Fr.enclosingDeclaration)) { + var gt = ja(ci, Fr); + return Fr.approximateLength += e.idText(gt).length, e.factory.createTypeReferenceNode(e.factory.createIdentifier(e.idText(gt)), void 0); + } + if (ci.symbol) + return ca(ci.symbol, Fr, 788968); + var Vt = (ci === Rn || ci === Da) && _e && _e.symbol ? (ci === Da ? "sub-" : "super-") + e.symbolName(_e.symbol) : "?"; + return e.factory.createTypeReferenceNode(e.factory.createIdentifier(Vt), void 0); + } + if (ci.flags & 1048576 && ci.origin && (ci = ci.origin), ci.flags & 3145728) { + var Fa = ci.flags & 1048576 ? hd(ci.types) : ci.types; + if (e.length(Fa) === 1) + return o(Fa[0], Fr); + var on = z(Fa, Fr, true); + if (on && on.length > 0) + return ci.flags & 1048576 ? e.factory.createUnionTypeNode(on) : e.factory.createIntersectionTypeNode(on); + !Fr.encounteredError && !(Fr.flags & 262144) && (Fr.encounteredError = true); + return; + } + if (Yr & 48) + return e.Debug.assert(!!(ci.flags & 524288)), rl(ci); + if (ci.flags & 4194304) { + var zn = ci.type; + Fr.approximateLength += 6; + var Ga = o(zn, Fr); + return e.factory.createTypeOperatorNode(140, Ga); + } + if (ci.flags & 134217728) { + var Qn = ci.texts, wo = ci.types, Po = e.factory.createTemplateHead(Qn[0]), Uo = e.factory.createNodeArray(e.map(wo, function(za, $r) { + return e.factory.createTemplateLiteralTypeSpan(o(za, Fr), ($r < wo.length - 1 ? e.factory.createTemplateMiddle : e.factory.createTemplateTail)(Qn[$r + 1])); + })); + return Fr.approximateLength += 2, e.factory.createTemplateLiteralType(Po, Uo); + } + if (ci.flags & 268435456) { + var Rs = o(ci.type, Fr); + return ca(ci.symbol, Fr, 788968, [Rs]); + } + if (ci.flags & 8388608) { + var Fs = o(ci.objectType, Fr), Ga = o(ci.indexType, Fr); + return Fr.approximateLength += 2, e.factory.createIndexedAccessTypeNode(Fs, Ga); + } + if (ci.flags & 16777216) + return jd(ci, function(za) { + return rc(za); + }); + if (ci.flags & 33554432) + return o(ci.baseType, Fr); + return e.Debug.fail("Should be unreachable."); + function rc(za) { + var $r = o(za.checkType, Fr); + if (Fr.approximateLength += 15, Fr.flags & 4 && za.root.isDistributive && !(za.checkType.flags & 262144)) { + var hi = Hc(oo(262144, "T")), Ri = ja(hi, Fr), mt = e.factory.createTypeReferenceNode(Ri); + Fr.approximateLength += 37; + var ft = $d(za.root.checkType, hi, za.combinedMapper || za.mapper), Ht = Fr.inferTypeParameters; + Fr.inferTypeParameters = za.root.inferTypeParameters; + var vt = o(un(za.root.extendsType, ft), Fr); + Fr.inferTypeParameters = Ht; + var ht = xu(un(Va(za.root.node.trueType), ft)), ma = xu(un(Va(za.root.node.falseType), ft)); + return e.factory.createConditionalTypeNode($r, e.factory.createInferTypeNode(e.factory.createTypeParameterDeclaration(void 0, e.factory.cloneNode(mt.typeName))), e.factory.createConditionalTypeNode(e.factory.createTypeReferenceNode(e.factory.cloneNode(Ri)), o(za.checkType, Fr), e.factory.createConditionalTypeNode(mt, vt, ht, ma), e.factory.createKeywordTypeNode(143)), e.factory.createKeywordTypeNode(143)); + } + var Ca = Fr.inferTypeParameters; + Fr.inferTypeParameters = za.root.inferTypeParameters; + var An = o(za.extendsType, Fr); + Fr.inferTypeParameters = Ca; + var gn = xu(ip(za)), Vn = xu(tp(za)); + return e.factory.createConditionalTypeNode($r, An, gn, Vn); + } + function xu(za) { + var $r, hi, Ri; + return za.flags & 1048576 ? !(($r = Fr.visitedTypes) === null || $r === void 0) && $r.has(fu(za)) ? (Fr.flags & 131072 || (Fr.encounteredError = true, (Ri = (hi = Fr.tracker) === null || hi === void 0 ? void 0 : hi.reportCyclicStructureError) === null || Ri === void 0 || Ri.call(hi)), s(Fr)) : jd(za, function(mt) { + return o(mt, Fr); + }) : o(za, Fr); + } + function Ts(za) { + e.Debug.assert(!!(za.flags & 524288)); + var $r = za.declaration.readonlyToken ? e.factory.createToken(za.declaration.readonlyToken.kind) : void 0, hi = za.declaration.questionToken ? e.factory.createToken(za.declaration.questionToken.kind) : void 0, Ri, mt; + if (mg(za)) { + if (!(Ed(za).flags & 262144) && Fr.flags & 4) { + var ft = Hc(oo(262144, "T")), Ht = ja(ft, Fr); + mt = e.factory.createTypeReferenceNode(Ht); + } + Ri = e.factory.createTypeOperatorNode(140, mt || o(Ed(za), Fr)); + } else + Ri = o(Mu(za), Fr); + var vt = dr(Du(za), Fr, Ri), ht = za.declaration.nameType ? o(Jl(za), Fr) : void 0, ma = o(kg(vl(za), !!(Lu(za) & 4)), Fr), Ca = e.factory.createMappedTypeNode($r, vt, ht, hi, ma, void 0); + Fr.approximateLength += 10; + var An = e.setEmitFlags(Ca, 1); + return mg(za) && !(Ed(za).flags & 262144) && Fr.flags & 4 ? e.factory.createConditionalTypeNode(o(Ed(za), Fr), e.factory.createInferTypeNode(e.factory.createTypeParameterDeclaration(void 0, e.factory.cloneNode(mt.typeName))), An, e.factory.createKeywordTypeNode(143)) : An; + } + function rl(za) { + var $r, hi = za.id, Ri = za.symbol; + if (Ri) { + var mt = yd(za) ? 788968 : 111551; + if (Sl(Ri.valueDeclaration)) + return ca(Ri, Fr, mt); + if (Ri.flags & 32 && !Xa(Ri) && !(Ri.valueDeclaration && Ri.valueDeclaration.kind === 226 && Fr.flags & 2048) || Ri.flags & 896 || Ht()) + return ca(Ri, Fr, mt); + if (!(($r = Fr.visitedTypes) === null || $r === void 0) && $r.has(hi)) { + var ft = Bp(za); + return ft ? ca(ft, Fr, 788968) : s(Fr); + } else + return jd(za, lp); + } else + return lp(za); + function Ht() { + var vt, ht = !!(Ri.flags & 8192) && e.some(Ri.declarations, function(Ca) { + return e.isStatic(Ca); + }), ma = !!(Ri.flags & 16) && (Ri.parent || e.forEach(Ri.declarations, function(Ca) { + return Ca.parent.kind === 305 || Ca.parent.kind === 262; + })); + if (ht || ma) + return (!!(Fr.flags & 4096) || ((vt = Fr.visitedTypes) === null || vt === void 0 ? void 0 : vt.has(hi))) && (!(Fr.flags & 8) || Lp(Ri, Fr.enclosingDeclaration)); + } + } + function jd(za, $r) { + var hi, Ri, mt = za.id, ft = e.getObjectFlags(za) & 16 && za.symbol && za.symbol.flags & 32, Ht = e.getObjectFlags(za) & 4 && za.node ? "N" + A(za.node) : za.flags & 16777216 ? "N" + A(za.root.node) : za.symbol ? (ft ? "+" : "") + y(za.symbol) : void 0; + Fr.visitedTypes || (Fr.visitedTypes = new e.Set()), Ht && !Fr.symbolDepth && (Fr.symbolDepth = new e.Map()); + var vt = Fr.enclosingDeclaration && va(Fr.enclosingDeclaration), ht = "".concat(fu(za), "|").concat(Fr.flags); + vt && (vt.serializedTypes || (vt.serializedTypes = new e.Map())); + var ma = (hi = vt == null ? void 0 : vt.serializedTypes) === null || hi === void 0 ? void 0 : hi.get(ht); + if (ma) + return ma.truncating && (Fr.truncating = true), Fr.approximateLength += ma.addedLength, zo(ma); + var Ca; + if (Ht) { + if (Ca = Fr.symbolDepth.get(Ht) || 0, Ca > 10) + return s(Fr); + Fr.symbolDepth.set(Ht, Ca + 1); + } + Fr.visitedTypes.add(mt); + var An = Fr.approximateLength, gn = $r(za), Vn = Fr.approximateLength - An; + return !Fr.reportedDiagnostic && !Fr.encounteredError && (Fr.truncating && (gn.truncating = true), gn.addedLength = Vn, (Ri = vt == null ? void 0 : vt.serializedTypes) === null || Ri === void 0 || Ri.set(ht, gn)), Fr.visitedTypes.delete(mt), Ht && Fr.symbolDepth.set(Ht, Ca), gn; + function zo(Bo) { + return !e.nodeIsSynthesized(Bo) && e.getParseTreeNode(Bo) === Bo ? Bo : e.setTextRange(e.factory.cloneNode(e.visitEachChild(Bo, zo, e.nullTransformationContext, us)), Bo); + } + function us(Bo, Io, Qo, ls, gi) { + return Bo && Bo.length === 0 ? e.setTextRange(e.factory.createNodeArray(void 0, Bo.hasTrailingComma), Bo) : e.visitNodes(Bo, Io, Qo, ls, gi); + } + } + function lp(za) { + if (Bc(za) || za.containsError) + return Ts(za); + var $r = Ru(za); + if (!$r.properties.length && !$r.indexInfos.length) { + if (!$r.callSignatures.length && !$r.constructSignatures.length) + return Fr.approximateLength += 2, e.setEmitFlags(e.factory.createTypeLiteralNode(void 0), 1); + if ($r.callSignatures.length === 1 && !$r.constructSignatures.length) { + var hi = $r.callSignatures[0], Ri = $e(hi, 179, Fr); + return Ri; + } + if ($r.constructSignatures.length === 1 && !$r.callSignatures.length) { + var hi = $r.constructSignatures[0], Ri = $e(hi, 180, Fr); + return Ri; + } + } + var mt = e.filter($r.constructSignatures, function(Ca) { + return !!(Ca.flags & 4); + }); + if (e.some(mt)) { + var ft = e.map(mt, im), Ht = $r.callSignatures.length + ($r.constructSignatures.length - mt.length) + $r.indexInfos.length + (Fr.flags & 2048 ? e.countWhere($r.properties, function(Ca) { + return !(Ca.flags & 4194304); + }) : e.length($r.properties)); + return Ht && ft.push(Op($r)), o(Do(ft), Fr); + } + var vt = Fr.flags; + Fr.flags |= 4194304; + var ht = id($r); + Fr.flags = vt; + var ma = e.factory.createTypeLiteralNode(ht); + return Fr.approximateLength += 2, e.setEmitFlags(ma, Fr.flags & 1024 ? 0 : 1), ma; + } + function Tl(za) { + var $r = xo(za); + if (za.target === Pi || za.target === Qi) { + if (Fr.flags & 2) { + var hi = o($r[0], Fr); + return e.factory.createTypeReferenceNode(za.target === Pi ? "Array" : "ReadonlyArray", [hi]); + } + var Ri = o($r[0], Fr), mt = e.factory.createArrayTypeNode(Ri); + return za.target === Pi ? mt : e.factory.createTypeOperatorNode(145, mt); + } else if (za.target.objectFlags & 8) { + if ($r = e.sameMap($r, function(zt, La) { + return kg(zt, !!(za.target.elementFlags[La] & 2)); + }), $r.length > 0) { + var ft = $_(za), Ht = z($r.slice(0, ft), Fr); + if (Ht) { + if (za.target.labeledElementDeclarations) + for (var vt = 0; vt < Ht.length; vt++) { + var ht = za.target.elementFlags[vt]; + Ht[vt] = e.factory.createNamedTupleMember(ht & 12 ? e.factory.createToken(25) : void 0, e.factory.createIdentifier(e.unescapeLeadingUnderscores(E0(za.target.labeledElementDeclarations[vt]))), ht & 2 ? e.factory.createToken(57) : void 0, ht & 4 ? e.factory.createArrayTypeNode(Ht[vt]) : Ht[vt]); + } + else + for (var vt = 0; vt < Math.min(ft, Ht.length); vt++) { + var ht = za.target.elementFlags[vt]; + Ht[vt] = ht & 12 ? e.factory.createRestTypeNode(ht & 4 ? e.factory.createArrayTypeNode(Ht[vt]) : Ht[vt]) : ht & 2 ? e.factory.createOptionalTypeNode(Ht[vt]) : Ht[vt]; + } + var ma = e.setEmitFlags(e.factory.createTupleTypeNode(Ht), 1); + return za.target.readonly ? e.factory.createTypeOperatorNode(145, ma) : ma; + } + } + if (Fr.encounteredError || Fr.flags & 524288) { + var ma = e.setEmitFlags(e.factory.createTupleTypeNode([]), 1); + return za.target.readonly ? e.factory.createTypeOperatorNode(145, ma) : ma; + } + Fr.encounteredError = true; + return; + } else { + if (Fr.flags & 2048 && za.symbol.valueDeclaration && e.isClassLike(za.symbol.valueDeclaration) && !Lp(za.symbol, Fr.enclosingDeclaration)) + return rl(za); + var Ca = za.target.outerTypeParameters, vt = 0, An = void 0; + if (Ca) + for (var gn = Ca.length; vt < gn; ) { + var Vn = vt, zo = cx(Ca[vt]); + do + vt++; + while (vt < gn && cx(Ca[vt]) === zo); + if (!e.rangeEquals(Ca, $r, Vn, vt)) { + var us = z($r.slice(Vn, vt), Fr), Bo = Fr.flags; + Fr.flags |= 16; + var Io = ca(zo, Fr, 788968, us); + Fr.flags = Bo, An = An ? fp(An, Io) : Io; + } + } + var Qo = void 0; + if ($r.length > 0) { + var ls = (za.target.typeParameters || e.emptyArray).length; + Qo = z($r.slice(vt, ls), Fr); + } + var ht = Fr.flags; + Fr.flags |= 16; + var gi = ca(za.symbol, Fr, 788968, Qo); + return Fr.flags = ht, An ? fp(An, gi) : gi; + } + } + function fp(za, $r) { + if (e.isImportTypeNode(za)) { + var hi = za.typeArguments, Ri = za.qualifier; + Ri && (e.isIdentifier(Ri) ? Ri = e.factory.updateIdentifier(Ri, hi) : Ri = e.factory.updateQualifiedName(Ri, Ri.left, e.factory.updateIdentifier(Ri.right, hi))), hi = $r.typeArguments; + for (var mt = zg($r), ft = 0, Ht = mt; ft < Ht.length; ft++) { + var vt = Ht[ft]; + Ri = Ri ? e.factory.createQualifiedName(Ri, vt) : vt; + } + return e.factory.updateImportTypeNode(za, za.argument, Ri, hi, za.isTypeOf); + } else { + var hi = za.typeArguments, ht = za.typeName; + e.isIdentifier(ht) ? ht = e.factory.updateIdentifier(ht, hi) : ht = e.factory.updateQualifiedName(ht, ht.left, e.factory.updateIdentifier(ht.right, hi)), hi = $r.typeArguments; + for (var mt = zg($r), ma = 0, Ca = mt; ma < Ca.length; ma++) { + var vt = Ca[ma]; + ht = e.factory.createQualifiedName(ht, vt); + } + return e.factory.updateTypeReferenceNode(za, ht, hi); + } + } + function zg(za) { + for (var $r = za.typeName, hi = []; !e.isIdentifier($r); ) + hi.unshift($r.right), $r = $r.left; + return hi.unshift($r), hi; + } + function id(za) { + if (t(Fr)) + return [e.factory.createPropertySignature(void 0, "...", void 0, void 0)]; + for (var $r = [], hi = 0, Ri = za.callSignatures; hi < Ri.length; hi++) { + var mt = Ri[hi]; + $r.push($e(mt, 174, Fr)); + } + for (var ft = 0, Ht = za.constructSignatures; ft < Ht.length; ft++) { + var mt = Ht[ft]; + mt.flags & 4 || $r.push($e(mt, 175, Fr)); + } + for (var vt = 0, ht = za.indexInfos; vt < ht.length; vt++) { + var ma = ht[vt]; + $r.push(Me(ma, Fr, za.objectFlags & 1024 ? s(Fr) : void 0)); + } + var Ca = za.properties; + if (!Ca) + return $r; + for (var An = 0, gn = 0, Vn = Ca; gn < Vn.length; gn++) { + var zo = Vn[gn]; + if (An++, Fr.flags & 2048) { + if (zo.flags & 4194304) + continue; + e.getDeclarationModifierFlagsFromSymbol(zo) & 24 && Fr.tracker.reportPrivateInBaseOfClassExpression && Fr.tracker.reportPrivateInBaseOfClassExpression(e.unescapeLeadingUnderscores(zo.escapedName)); + } + if (t(Fr) && An + 2 < Ca.length - 1) { + $r.push(e.factory.createPropertySignature(void 0, "... ".concat(Ca.length - An, " more ..."), void 0, void 0)), h(Ca[Ca.length - 1], Fr, $r); + break; + } + h(zo, Fr, $r); + } + return $r.length ? $r : void 0; + } + } + function s(ci) { + return ci.approximateLength += 3, ci.flags & 1 ? e.factory.createKeywordTypeNode(130) : e.factory.createTypeReferenceNode(e.factory.createIdentifier("..."), void 0); + } + function u(ci, Fr) { + var jt; + return !!(e.getCheckFlags(ci) & 8192) && (e.contains(Fr.reverseMappedStack, ci) || ((jt = Fr.reverseMappedStack) === null || jt === void 0 ? void 0 : jt[0]) && !(e.getObjectFlags(e.last(Fr.reverseMappedStack).propertyType) & 16)); + } + function h(ci, Fr, jt) { + var Lt, ea, Kt = !!(e.getCheckFlags(ci) & 8192), $t = u(ci, Fr) ? Oe : ml(ci), Ua = Fr.enclosingDeclaration; + if (Fr.enclosingDeclaration = void 0, Fr.tracker.trackSymbol && e.getCheckFlags(ci) & 4096 && pg(ci.escapedName)) + if (ci.declarations) { + var Yr = e.first(ci.declarations); + if ($g(Yr)) + if (e.isBinaryExpression(Yr)) { + var Ni = e.getNameOfDeclaration(Yr); + Ni && e.isElementAccessExpression(Ni) && e.isPropertyAccessEntityNameExpression(Ni.argumentExpression) && li(Ni.argumentExpression, Ua, Fr); + } else + li(Yr.name.expression, Ua, Fr); + } else + !((Lt = Fr.tracker) === null || Lt === void 0) && Lt.reportNonSerializableProperty && Fr.tracker.reportNonSerializableProperty(tn(ci)); + Fr.enclosingDeclaration = ci.valueDeclaration || ((ea = ci.declarations) === null || ea === void 0 ? void 0 : ea[0]) || Ua; + var Hi = lt(ci, Fr); + Fr.enclosingDeclaration = Ua, Fr.approximateLength += e.symbolName(ci).length + 1; + var _t = ci.flags & 16777216 ? e.factory.createToken(57) : void 0; + if (ci.flags & 8208 && !Pf($t).length && !Zu(ci)) + for (var gt = ot(ec($t, function(Uo) { + return !(Uo.flags & 32768); + }), 0), Vt = 0, Fa = gt; Vt < Fa.length; Vt++) { + var on = Fa[Vt], zn = $e(on, 168, Fr, { name: Hi, questionToken: _t }); + jt.push(Po(zn)); + } + else { + var Ga = void 0; + u(ci, Fr) ? Ga = s(Fr) : (Kt && (Fr.reverseMappedStack || (Fr.reverseMappedStack = []), Fr.reverseMappedStack.push(ci)), Ga = $t ? Ka(Fr, $t, ci, Ua) : e.factory.createKeywordTypeNode(130), Kt && Fr.reverseMappedStack.pop()); + var Qn = Zu(ci) ? [e.factory.createToken(145)] : void 0; + Qn && (Fr.approximateLength += 9); + var wo = e.factory.createPropertySignature(Qn, Hi, _t, Ga); + jt.push(Po(wo)); + } + function Po(Uo) { + var Rs; + if (e.some(ci.declarations, function(xu) { + return xu.kind === 347; + })) { + var Fs = (Rs = ci.declarations) === null || Rs === void 0 ? void 0 : Rs.find(function(xu) { + return xu.kind === 347; + }), rc = e.getTextOfJSDocComment(Fs.comment); + rc && e.setSyntheticLeadingComments(Uo, [{ kind: 3, text: `* + * ` + rc.replace(/\n/g, ` + * `) + ` + `, pos: -1, end: -1, hasTrailingNewLine: true }]); + } else + ci.valueDeclaration && e.setCommentRange(Uo, ci.valueDeclaration); + return Uo; + } + } + function z(ci, Fr, jt) { + if (e.some(ci)) { + if (t(Fr)) + if (jt) { + if (ci.length > 2) + return [o(ci[0], Fr), e.factory.createTypeReferenceNode("... ".concat(ci.length - 2, " more ..."), void 0), o(ci[ci.length - 1], Fr)]; + } else + return [e.factory.createTypeReferenceNode("...", void 0)]; + for (var Lt = !(Fr.flags & 64), ea = Lt ? e.createUnderscoreEscapedMultiMap() : void 0, Kt = [], $t = 0, Ua = 0, Yr = ci; Ua < Yr.length; Ua++) { + var Ni = Yr[Ua]; + if ($t++, t(Fr) && $t + 2 < ci.length - 1) { + Kt.push(e.factory.createTypeReferenceNode("... ".concat(ci.length - $t, " more ..."), void 0)); + var Hi = o(ci[ci.length - 1], Fr); + Hi && Kt.push(Hi); + break; + } + Fr.approximateLength += 2; + var _t = o(Ni, Fr); + _t && (Kt.push(_t), ea && e.isIdentifierTypeReference(_t) && ea.add(_t.typeName.escapedText, [Ni, Kt.length - 1])); + } + if (ea) { + var gt = Fr.flags; + Fr.flags |= 64, ea.forEach(function(Vt) { + if (!e.arrayIsHomogeneous(Vt, function(wo, Po) { + var Uo = wo[0], Rs = Po[0]; + return me(Uo, Rs); + })) + for (var Fa = 0, on = Vt; Fa < on.length; Fa++) { + var zn = on[Fa], Ga = zn[0], Qn = zn[1]; + Kt[Qn] = o(Ga, Fr); + } + }), Fr.flags = gt; + } + return Kt; + } + } + function me(ci, Fr) { + return ci === Fr || !!ci.symbol && ci.symbol === Fr.symbol || !!ci.aliasSymbol && ci.aliasSymbol === Fr.aliasSymbol; + } + function Me(ci, Fr, jt) { + var Lt = e.getNameFromIndexInfo(ci) || "x", ea = o(ci.keyType, Fr), Kt = e.factory.createParameterDeclaration(void 0, void 0, void 0, Lt, void 0, ea, void 0); + return jt || (jt = o(ci.type || Oe, Fr)), !ci.type && !(Fr.flags & 2097152) && (Fr.encounteredError = true), Fr.approximateLength += Lt.length + 4, e.factory.createIndexSignature(void 0, ci.isReadonly ? [e.factory.createToken(145)] : void 0, [Kt], jt); + } + function $e(ci, Fr, jt, Lt) { + var ea, Kt, $t, Ua, Yr = jt.flags & 256; + Yr && (jt.flags &= -257), jt.approximateLength += 3; + var Ni, Hi; + jt.flags & 32 && ci.target && ci.mapper && ci.target.typeParameters ? Hi = ci.target.typeParameters.map(function(Fs) { + return o(un(Fs, ci.mapper), jt); + }) : Ni = ci.typeParameters && ci.typeParameters.map(function(Fs) { + return Dr(Fs, jt); + }); + var _t = Jm(ci, true)[0], gt = (e.some(_t, function(Fs) { + return Fs !== _t[_t.length - 1] && !!(e.getCheckFlags(Fs) & 32768); + }) ? ci.parameters : _t).map(function(Fs) { + return Qr(Fs, jt, Fr === 171, Lt == null ? void 0 : Lt.privateSymbolVisitor, Lt == null ? void 0 : Lt.bundledImports); + }), Vt = tr(ci, jt); + Vt && gt.unshift(Vt); + var Fa, on = Yc(ci); + if (on) { + var zn = on.kind === 2 || on.kind === 3 ? e.factory.createToken(128) : void 0, Ga = on.kind === 1 || on.kind === 3 ? e.setEmitFlags(e.factory.createIdentifier(on.parameterName), 16777216) : e.factory.createThisTypeNode(), Qn = on.type && o(on.type, jt); + Fa = e.factory.createTypePredicateNode(zn, Ga, Qn); + } else { + var wo = yo(ci); + wo && !(Yr && ta(wo)) ? Fa = Un(jt, wo, ci, Lt == null ? void 0 : Lt.privateSymbolVisitor, Lt == null ? void 0 : Lt.bundledImports) : Yr || (Fa = e.factory.createKeywordTypeNode(130)); + } + var Po = Lt == null ? void 0 : Lt.modifiers; + if (Fr === 180 && ci.flags & 4) { + var Uo = e.modifiersToFlags(Po); + Po = e.factory.createModifiersFromModifierFlags(Uo | 128); + } + var Rs = Fr === 174 ? e.factory.createCallSignature(Ni, gt, Fa) : Fr === 175 ? e.factory.createConstructSignature(Ni, gt, Fa) : Fr === 168 ? e.factory.createMethodSignature(Po, (ea = Lt == null ? void 0 : Lt.name) !== null && ea !== void 0 ? ea : e.factory.createIdentifier(""), Lt == null ? void 0 : Lt.questionToken, Ni, gt, Fa) : Fr === 169 ? e.factory.createMethodDeclaration(void 0, Po, void 0, (Kt = Lt == null ? void 0 : Lt.name) !== null && Kt !== void 0 ? Kt : e.factory.createIdentifier(""), void 0, Ni, gt, Fa, void 0) : Fr === 171 ? e.factory.createConstructorDeclaration(void 0, Po, gt, void 0) : Fr === 172 ? e.factory.createGetAccessorDeclaration(void 0, Po, ($t = Lt == null ? void 0 : Lt.name) !== null && $t !== void 0 ? $t : e.factory.createIdentifier(""), gt, Fa, void 0) : Fr === 173 ? e.factory.createSetAccessorDeclaration(void 0, Po, (Ua = Lt == null ? void 0 : Lt.name) !== null && Ua !== void 0 ? Ua : e.factory.createIdentifier(""), gt, void 0) : Fr === 176 ? e.factory.createIndexSignature(void 0, Po, gt, Fa) : Fr === 317 ? e.factory.createJSDocFunctionType(gt, Fa) : Fr === 179 ? e.factory.createFunctionTypeNode(Ni, gt, Fa != null ? Fa : e.factory.createTypeReferenceNode(e.factory.createIdentifier(""))) : Fr === 180 ? e.factory.createConstructorTypeNode(Po, Ni, gt, Fa != null ? Fa : e.factory.createTypeReferenceNode(e.factory.createIdentifier(""))) : Fr === 256 ? e.factory.createFunctionDeclaration(void 0, Po, void 0, Lt != null && Lt.name ? e.cast(Lt.name, e.isIdentifier) : e.factory.createIdentifier(""), Ni, gt, Fa, void 0) : Fr === 213 ? e.factory.createFunctionExpression(Po, void 0, Lt != null && Lt.name ? e.cast(Lt.name, e.isIdentifier) : e.factory.createIdentifier(""), Ni, gt, Fa, e.factory.createBlock([])) : Fr === 214 ? e.factory.createArrowFunction(Po, Ni, gt, Fa, void 0, e.factory.createBlock([])) : e.Debug.assertNever(Fr); + return Hi && (Rs.typeArguments = e.factory.createNodeArray(Hi)), Rs; + } + function tr(ci, Fr) { + if (ci.thisParameter) + return Qr(ci.thisParameter, Fr); + if (ci.declaration) { + var jt = e.getJSDocThisTag(ci.declaration); + if (jt && jt.typeExpression) + return e.factory.createParameterDeclaration(void 0, void 0, void 0, "this", void 0, o(Va(jt.typeExpression), Fr)); + } + } + function dr(ci, Fr, jt) { + var Lt = Fr.flags; + Fr.flags &= -513; + var ea = e.factory.createModifiersFromModifierFlags(WD(ci)), Kt = ja(ci, Fr), $t = D_(ci), Ua = $t && o($t, Fr); + return Fr.flags = Lt, e.factory.createTypeParameterDeclaration(ea, Kt, jt, Ua); + } + function Dr(ci, Fr, jt) { + jt === void 0 && (jt = Tc(ci)); + var Lt = jt && o(jt, Fr); + return dr(ci, Fr, Lt); + } + function Qr(ci, Fr, jt, Lt, ea) { + var Kt = e.getDeclarationOfKind(ci, 164); + !Kt && !e.isTransientSymbol(ci) && (Kt = e.getDeclarationOfKind(ci, 340)); + var $t = Jt(ci); + Kt && aA(Kt) && ($t = i_($t)); + var Ua = Ka(Fr, $t, ci, Fr.enclosingDeclaration, Lt, ea), Yr = !(Fr.flags & 8192) && jt && Kt && Kt.modifiers ? Kt.modifiers.map(e.factory.cloneNode) : void 0, Ni = Kt && e.isRestParameter(Kt) || e.getCheckFlags(ci) & 32768, Hi = Ni ? e.factory.createToken(25) : void 0, _t = Kt && Kt.name ? Kt.name.kind === 79 ? e.setEmitFlags(e.factory.cloneNode(Kt.name), 16777216) : Kt.name.kind === 161 ? e.setEmitFlags(e.factory.cloneNode(Kt.name.right), 16777216) : on(Kt.name) : e.symbolName(ci), gt = Kt && kd(Kt) || e.getCheckFlags(ci) & 16384, Vt = gt ? e.factory.createToken(57) : void 0, Fa = e.factory.createParameterDeclaration(void 0, Yr, Hi, _t, Vt, Ua, void 0); + return Fr.approximateLength += e.symbolName(ci).length + 3, Fa; + function on(zn) { + return Ga(zn); + function Ga(Qn) { + Fr.tracker.trackSymbol && e.isComputedPropertyName(Qn) && Rv(Qn) && li(Qn.expression, Fr.enclosingDeclaration, Fr); + var wo = e.visitEachChild(Qn, Ga, e.nullTransformationContext, void 0, Ga); + return e.isBindingElement(wo) && (wo = e.factory.updateBindingElement(wo, wo.dotDotDotToken, wo.propertyName, wo.name, void 0)), e.nodeIsSynthesized(wo) || (wo = e.factory.cloneNode(wo)), e.setEmitFlags(wo, 16777217); + } + } + } + function li(ci, Fr, jt) { + if (!!jt.tracker.trackSymbol) { + var Lt = e.getFirstIdentifier(ci), ea = es(Lt, Lt.escapedText, 1160127, void 0, void 0, true); + ea && jt.tracker.trackSymbol(ea, Fr, 111551); + } + } + function Ti(ci, Fr, jt, Lt) { + return Fr.tracker.trackSymbol(ci, Fr.enclosingDeclaration, jt), Ci(ci, Fr, jt, Lt); + } + function Ci(ci, Fr, jt, Lt) { + var ea, Kt = ci.flags & 262144; + return !Kt && (Fr.enclosingDeclaration || Fr.flags & 64) && !(Fr.flags & 134217728) ? (ea = e.Debug.checkDefined($t(ci, jt, true)), e.Debug.assert(ea && ea.length > 0)) : ea = [ci], ea; + function $t(Ua, Yr, Ni) { + var Hi = pl(Ua, Fr.enclosingDeclaration, Yr, !!(Fr.flags & 128)), _t; + if (!Hi || Fp(Hi[0], Fr.enclosingDeclaration, Hi.length === 1 ? Yr : Fl(Yr))) { + var gt = Np(Hi ? Hi[0] : Ua, Fr.enclosingDeclaration, Yr); + if (e.length(gt)) { + _t = gt.map(function(Po) { + return e.some(Po.declarations, Fc) ? Nt(Po, Fr) : void 0; + }); + var Vt = gt.map(function(Po, Uo) { + return Uo; + }); + Vt.sort(wo); + for (var Fa = Vt.map(function(Po) { + return gt[Po]; + }), on = 0, zn = Fa; on < zn.length; on++) { + var Ga = zn[on], Qn = $t(Ga, Fl(Yr), false); + if (Qn) { + if (Ga.exports && Ga.exports.get("export=") && _l(Ga.exports.get("export="), Ua)) { + Hi = Qn; + break; + } + Hi = Qn.concat(Hi || [fl(Ga, Ua) || Ua]); + break; + } + } + } + } + if (Hi) + return Hi; + if (Ni || !(Ua.flags & 6144)) + return !Ni && !Lt && !!e.forEach(Ua.declarations, Fc) ? void 0 : [Ua]; + function wo(Po, Uo) { + var Rs = _t[Po], Fs = _t[Uo]; + if (Rs && Fs) { + var rc = e.pathIsRelative(Fs); + return e.pathIsRelative(Rs) === rc ? e.moduleSpecifiers.countPathComponents(Rs) - e.moduleSpecifiers.countPathComponents(Fs) : rc ? -1 : 1; + } + return 0; + } + } + } + function $i(ci, Fr) { + var jt, Lt = jg(ci); + return Lt.flags & 524384 && (jt = e.factory.createNodeArray(e.map(Af(ci), function(ea) { + return Dr(ea, Fr); + }))), jt; + } + function Zi(ci, Fr, jt) { + var Lt; + e.Debug.assert(ci && 0 <= Fr && Fr < ci.length); + var ea = ci[Fr], Kt = y(ea); + if (!(!((Lt = jt.typeParameterSymbolList) === null || Lt === void 0) && Lt.has(Kt))) { + (jt.typeParameterSymbolList || (jt.typeParameterSymbolList = new e.Set())).add(Kt); + var $t; + if (jt.flags & 512 && Fr < ci.length - 1) { + var Ua = ea, Yr = ci[Fr + 1]; + if (e.getCheckFlags(Yr) & 1) { + var Ni = Hg(Ua.flags & 2097152 ? Ps(Ua) : Ua); + $t = z(e.map(Ni, function(Hi) { + return ap(Hi, Yr.mapper); + }), jt); + } else + $t = $i(ea, jt); + } + return $t; + } + } + function qt(ci) { + return e.isIndexedAccessTypeNode(ci.objectType) ? qt(ci.objectType) : ci; + } + function Nt(ci, Fr, jt) { + var Lt, ea = e.getDeclarationOfKind(ci, 305); + if (!ea) { + var Kt = e.firstDefined(ci.declarations, function(wo) { + return nc(wo, ci); + }); + Kt && (ea = e.getDeclarationOfKind(Kt, 305)); + } + if (ea && ea.moduleName !== void 0) + return ea.moduleName; + if (!ea) { + if (Fr.tracker.trackReferencedAmbientModule) { + var $t = e.filter(ci.declarations, e.isAmbientModule); + if (e.length($t)) + for (var Ua = 0, Yr = $t; Ua < Yr.length; Ua++) { + var Ni = Yr[Ua]; + Fr.tracker.trackReferencedAmbientModule(Ni, ci); + } + } + if (a.test(ci.escapedName)) + return ci.escapedName.substring(1, ci.escapedName.length - 1); + } + if (!Fr.enclosingDeclaration || !Fr.tracker.moduleResolverHost) + return a.test(ci.escapedName) ? ci.escapedName.substring(1, ci.escapedName.length - 1) : e.getSourceFileOfNode(e.getNonAugmentationDeclaration(ci)).fileName; + var Hi = e.getSourceFileOfNode(e.getOriginalNode(Fr.enclosingDeclaration)), _t = jt || (Hi == null ? void 0 : Hi.impliedNodeFormat), gt = Qn(Hi.path, _t), Vt = Aa(ci), Fa = Vt.specifierCache && Vt.specifierCache.get(gt); + if (!Fa) { + var on = !!e.outFile(ye), zn = Fr.tracker.moduleResolverHost, Ga = on ? Ke(Ke({}, ye), { baseUrl: zn.getCommonSourceDirectory() }) : ye; + Fa = e.first(e.moduleSpecifiers.getModuleSpecifiers(ci, Di, Ga, Hi, zn, { importModuleSpecifierPreference: on ? "non-relative" : "project-relative", importModuleSpecifierEnding: on ? "minimal" : _t === e.ModuleKind.ESNext ? "js" : void 0 }, { overrideImportMode: jt })), (Lt = Vt.specifierCache) !== null && Lt !== void 0 || (Vt.specifierCache = new e.Map()), Vt.specifierCache.set(gt, Fa); + } + return Fa; + function Qn(wo, Po) { + return Po === void 0 ? wo : "".concat(Po, "|").concat(wo); + } + } + function Ra(ci) { + var Fr = e.factory.createIdentifier(e.unescapeLeadingUnderscores(ci.escapedName)); + return ci.parent ? e.factory.createQualifiedName(Ra(ci.parent), Fr) : Fr; + } + function ca(ci, Fr, jt, Lt) { + var ea = Ti(ci, Fr, jt, !(Fr.flags & 16384)), Kt = jt === 111551; + if (e.some(ea[0].declarations, Fc)) { + var $t = ea.length > 1 ? Po(ea, ea.length - 1, 1) : void 0, Ua = Lt || Zi(ea, 0, Fr), Yr = e.getSourceFileOfNode(e.getOriginalNode(Fr.enclosingDeclaration)), Ni = e.getSourceFileOfModule(ea[0]), Hi = void 0, _t = void 0; + if ((e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.Node16 || e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.NodeNext) && (Ni == null ? void 0 : Ni.impliedNodeFormat) === e.ModuleKind.ESNext && Ni.impliedNodeFormat !== (Yr == null ? void 0 : Yr.impliedNodeFormat) && (Hi = Nt(ea[0], Fr, e.ModuleKind.ESNext), _t = e.factory.createImportTypeAssertionContainer(e.factory.createAssertClause(e.factory.createNodeArray([e.factory.createAssertEntry(e.factory.createStringLiteral("resolution-mode"), e.factory.createStringLiteral("import"))])))), Hi || (Hi = Nt(ea[0], Fr)), !(Fr.flags & 67108864) && e.getEmitModuleResolutionKind(ye) !== e.ModuleResolutionKind.Classic && Hi.indexOf("/node_modules/") >= 0) { + var gt = Hi; + if (e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.Node16 || e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.NodeNext) { + var Vt = (Yr == null ? void 0 : Yr.impliedNodeFormat) === e.ModuleKind.ESNext ? e.ModuleKind.CommonJS : e.ModuleKind.ESNext; + Hi = Nt(ea[0], Fr, Vt), Hi.indexOf("/node_modules/") >= 0 ? Hi = gt : _t = e.factory.createImportTypeAssertionContainer(e.factory.createAssertClause(e.factory.createNodeArray([e.factory.createAssertEntry(e.factory.createStringLiteral("resolution-mode"), e.factory.createStringLiteral(Vt === e.ModuleKind.ESNext ? "import" : "require"))]))); + } + _t || (Fr.encounteredError = true, Fr.tracker.reportLikelyUnsafeImportRequiredError && Fr.tracker.reportLikelyUnsafeImportRequiredError(gt)); + } + var Fa = e.factory.createLiteralTypeNode(e.factory.createStringLiteral(Hi)); + if (Fr.tracker.trackExternalModuleSymbolOfImportTypeNode && Fr.tracker.trackExternalModuleSymbolOfImportTypeNode(ea[0]), Fr.approximateLength += Hi.length + 10, !$t || e.isEntityName($t)) { + if ($t) { + var on = e.isIdentifier($t) ? $t : $t.right; + on.typeArguments = void 0; + } + return e.factory.createImportTypeNode(Fa, _t, $t, Ua, Kt); + } else { + var zn = qt($t), Ga = zn.objectType.typeName; + return e.factory.createIndexedAccessTypeNode(e.factory.createImportTypeNode(Fa, _t, Ga, Ua, Kt), zn.indexType); + } + } + var Qn = Po(ea, ea.length - 1, 0); + if (e.isIndexedAccessTypeNode(Qn)) + return Qn; + if (Kt) + return e.factory.createTypeQueryNode(Qn); + var on = e.isIdentifier(Qn) ? Qn : Qn.right, wo = on.typeArguments; + return on.typeArguments = void 0, e.factory.createTypeReferenceNode(Qn, wo); + function Po(Uo, Rs, Fs) { + var rc = Rs === Uo.length - 1 ? Lt : Zi(Uo, Rs, Fr), xu = Uo[Rs], Ts = Uo[Rs - 1], rl; + if (Rs === 0) + Fr.flags |= 16777216, rl = of(xu, Fr), Fr.approximateLength += (rl ? rl.length : 0) + 1, Fr.flags ^= 16777216; + else if (Ts && dc(Ts)) { + var jd = dc(Ts); + e.forEachEntry(jd, function(zg, id) { + if (_l(zg, xu) && !pg(id) && id !== "export=") + return rl = e.unescapeLeadingUnderscores(id), true; + }); + } + if (rl === void 0) { + var lp = e.firstDefined(xu.declarations, e.getNameOfDeclaration); + if (lp && e.isComputedPropertyName(lp) && e.isEntityName(lp.expression)) { + var Tl = Po(Uo, Rs - 1, Fs); + return e.isEntityName(Tl) ? e.factory.createIndexedAccessTypeNode(e.factory.createParenthesizedType(e.factory.createTypeQueryNode(Tl)), e.factory.createTypeQueryNode(lp.expression)) : Tl; + } + rl = of(xu, Fr); + } + if (Fr.approximateLength += rl.length + 1, !(Fr.flags & 16) && Ts && Nf(Ts) && Nf(Ts).get(xu.escapedName) && _l(Nf(Ts).get(xu.escapedName), xu)) { + var Tl = Po(Uo, Rs - 1, Fs); + return e.isIndexedAccessTypeNode(Tl) ? e.factory.createIndexedAccessTypeNode(Tl, e.factory.createLiteralTypeNode(e.factory.createStringLiteral(rl))) : e.factory.createIndexedAccessTypeNode(e.factory.createTypeReferenceNode(Tl, rc), e.factory.createLiteralTypeNode(e.factory.createStringLiteral(rl))); + } + var fp = e.setEmitFlags(e.factory.createIdentifier(rl, rc), 16777216); + if (fp.symbol = xu, Rs > Fs) { + var Tl = Po(Uo, Rs - 1, Fs); + return e.isEntityName(Tl) ? e.factory.createQualifiedName(Tl, fp) : e.Debug.fail("Impossible construct - an export of an indexed access cannot be reachable"); + } + return fp; + } + } + function Sn(ci, Fr, jt) { + var Lt = es(Fr.enclosingDeclaration, ci, 788968, void 0, ci, false); + return Lt ? !(Lt.flags & 262144 && Lt === jt.symbol) : false; + } + function ja(ci, Fr) { + var jt, Lt; + if (Fr.flags & 4 && Fr.typeParameterNames) { + var ea = Fr.typeParameterNames.get(fu(ci)); + if (ea) + return ea; + } + var Kt = Fn(ci.symbol, Fr, 788968, true); + if (!(Kt.kind & 79)) + return e.factory.createIdentifier("(Missing type parameter)"); + if (Fr.flags & 4) { + for (var $t = Kt.escapedText, Ua = ((jt = Fr.typeParameterNamesByTextNextNameCount) === null || jt === void 0 ? void 0 : jt.get($t)) || 0, Yr = $t; ((Lt = Fr.typeParameterNamesByText) === null || Lt === void 0 ? void 0 : Lt.has(Yr)) || Sn(Yr, Fr, ci); ) + Ua++, Yr = "".concat($t, "_").concat(Ua); + Yr !== $t && (Kt = e.factory.createIdentifier(Yr, Kt.typeArguments)), (Fr.typeParameterNamesByTextNextNameCount || (Fr.typeParameterNamesByTextNextNameCount = new e.Map())).set($t, Ua), (Fr.typeParameterNames || (Fr.typeParameterNames = new e.Map())).set(fu(ci), Kt), (Fr.typeParameterNamesByText || (Fr.typeParameterNamesByText = new e.Set())).add($t); + } + return Kt; + } + function Fn(ci, Fr, jt, Lt) { + var ea = Ti(ci, Fr, jt); + return Lt && ea.length !== 1 && !Fr.encounteredError && !(Fr.flags & 65536) && (Fr.encounteredError = true), Kt(ea, ea.length - 1); + function Kt($t, Ua) { + var Yr = Zi($t, Ua, Fr), Ni = $t[Ua]; + Ua === 0 && (Fr.flags |= 16777216); + var Hi = of(Ni, Fr); + Ua === 0 && (Fr.flags ^= 16777216); + var _t = e.setEmitFlags(e.factory.createIdentifier(Hi, Yr), 16777216); + return _t.symbol = Ni, Ua > 0 ? e.factory.createQualifiedName(Kt($t, Ua - 1), _t) : _t; + } + } + function wn(ci, Fr, jt) { + var Lt = Ti(ci, Fr, jt); + return ea(Lt, Lt.length - 1); + function ea(Kt, $t) { + var Ua = Zi(Kt, $t, Fr), Yr = Kt[$t]; + $t === 0 && (Fr.flags |= 16777216); + var Ni = of(Yr, Fr); + $t === 0 && (Fr.flags ^= 16777216); + var Hi = Ni.charCodeAt(0); + if (e.isSingleOrDoubleQuote(Hi) && e.some(Yr.declarations, Fc)) + return e.factory.createStringLiteral(Nt(Yr, Fr)); + var _t = Hi === 35 ? Ni.length > 1 && e.isIdentifierStart(Ni.charCodeAt(1), Ae) : e.isIdentifierStart(Hi, Ae); + if ($t === 0 || _t) { + var gt = e.setEmitFlags(e.factory.createIdentifier(Ni, Ua), 16777216); + return gt.symbol = Yr, $t > 0 ? e.factory.createPropertyAccessExpression(ea(Kt, $t - 1), gt) : gt; + } else { + Hi === 91 && (Ni = Ni.substring(1, Ni.length - 1), Hi = Ni.charCodeAt(0)); + var Vt = void 0; + return e.isSingleOrDoubleQuote(Hi) && !(Yr.flags & 8) ? Vt = e.factory.createStringLiteral(e.stripQuotes(Ni).replace(/\\./g, function(Fa) { + return Fa.substring(1); + }), Hi === 39) : "" + +Ni === Ni && (Vt = e.factory.createNumericLiteral(+Ni)), Vt || (Vt = e.setEmitFlags(e.factory.createIdentifier(Ni, Ua), 16777216), Vt.symbol = Yr), e.factory.createElementAccessExpression(ea(Kt, $t - 1), Vt); + } + } + } + function Tn(ci) { + var Fr = e.getNameOfDeclaration(ci); + return !!Fr && e.isStringLiteral(Fr); + } + function Eo(ci) { + var Fr = e.getNameOfDeclaration(ci); + return !!(Fr && e.isStringLiteral(Fr) && (Fr.singleQuote || !e.nodeIsSynthesized(Fr) && e.startsWith(e.getTextOfNode(Fr, false), "'"))); + } + function lt(ci, Fr) { + var jt = !!e.length(ci.declarations) && e.every(ci.declarations, Eo), Lt = it(ci, Fr, jt); + if (Lt) + return Lt; + var ea = e.unescapeLeadingUnderscores(ci.escapedName), Kt = !!e.length(ci.declarations) && e.every(ci.declarations, Tn); + return e.createPropertyNameNodeForIdentifierOrLiteral(ea, e.getEmitScriptTarget(ye), jt, Kt); + } + function it(ci, Fr, jt) { + var Lt = Aa(ci).nameType; + if (Lt) { + if (Lt.flags & 384) { + var ea = "" + Lt.value; + return !e.isIdentifierText(ea, e.getEmitScriptTarget(ye)) && !e.isNumericLiteralName(ea) ? e.factory.createStringLiteral(ea, !!jt) : e.isNumericLiteralName(ea) && e.startsWith(ea, "-") ? e.factory.createComputedPropertyName(e.factory.createNumericLiteral(+ea)) : e.createPropertyNameNodeForIdentifierOrLiteral(ea, e.getEmitScriptTarget(ye)); + } + if (Lt.flags & 8192) + return e.factory.createComputedPropertyName(wn(Lt.symbol, Fr, 111551)); + } + } + function Yt(ci) { + var Fr = Ke({}, ci); + return Fr.typeParameterNames && (Fr.typeParameterNames = new e.Map(Fr.typeParameterNames)), Fr.typeParameterNamesByText && (Fr.typeParameterNamesByText = new e.Set(Fr.typeParameterNamesByText)), Fr.typeParameterSymbolList && (Fr.typeParameterSymbolList = new e.Set(Fr.typeParameterSymbolList)), Fr.tracker = i(Fr, Fr.tracker), Fr; + } + function Ia(ci, Fr) { + return ci.declarations && e.find(ci.declarations, function(jt) { + return !!e.getEffectiveTypeAnnotationNode(jt) && (!Fr || !!e.findAncestor(jt, function(Lt) { + return Lt === Fr; + })); + }); + } + function Qt(ci, Fr) { + return !(e.getObjectFlags(Fr) & 4) || !e.isTypeReferenceNode(ci) || e.length(ci.typeArguments) >= Ul(Fr.target.typeParameters); + } + function Ka(ci, Fr, jt, Lt, ea, Kt) { + if (!nn(Fr) && Lt) { + var $t = Ia(jt, Lt); + if ($t && !e.isFunctionLikeDeclaration($t) && !e.isGetAccessorDeclaration($t)) { + var Ua = e.getEffectiveTypeAnnotationNode($t); + if (cn(Ua, $t, Fr) && Qt(Ua, Fr)) { + var Yr = Mn(ci, Ua, ea, Kt); + if (Yr) + return Yr; + } + } + } + var Ni = ci.flags; + Fr.flags & 8192 && Fr.symbol === jt && (!ci.enclosingDeclaration || e.some(jt.declarations, function(_t) { + return e.getSourceFileOfNode(_t) === e.getSourceFileOfNode(ci.enclosingDeclaration); + })) && (ci.flags |= 1048576); + var Hi = o(Fr, ci); + return ci.flags = Ni, Hi; + } + function cn(ci, Fr, jt) { + var Lt = Va(ci); + return Lt === jt ? true : e.isParameter(Fr) && Fr.questionToken ? Ks(jt, 524288) === Lt : false; + } + function Un(ci, Fr, jt, Lt, ea) { + if (!nn(Fr) && ci.enclosingDeclaration) { + var Kt = jt.declaration && e.getEffectiveReturnTypeNode(jt.declaration); + if (!!e.findAncestor(Kt, function(Ni) { + return Ni === ci.enclosingDeclaration; + }) && Kt) { + var $t = Va(Kt), Ua = $t.flags & 262144 && $t.isThisType ? un($t, jt.mapper) : $t; + if (Ua === Fr && Qt(Kt, Fr)) { + var Yr = Mn(ci, Kt, Lt, ea); + if (Yr) + return Yr; + } + } + } + return o(Fr, ci); + } + function oa(ci, Fr, jt) { + var Lt, ea, Kt = false, $t = e.getFirstIdentifier(ci); + if (e.isInJSFile(ci) && (e.isExportsIdentifier($t) || e.isModuleExportsAccessExpression($t.parent) || e.isQualifiedName($t.parent) && e.isModuleIdentifier($t.parent.left) && e.isExportsIdentifier($t.parent.right))) + return Kt = true, { introducesError: Kt, node: ci }; + var Ua = Ds($t, 67108863, true, true); + if (Ua && (g_(Ua, Fr.enclosingDeclaration, 67108863, false).accessibility !== 0 ? Kt = true : ((ea = (Lt = Fr.tracker) === null || Lt === void 0 ? void 0 : Lt.trackSymbol) === null || ea === void 0 || ea.call(Lt, Ua, Fr.enclosingDeclaration, 67108863), jt == null || jt(Ua)), e.isIdentifier(ci))) { + var Yr = go(Ua), Ni = Ua.flags & 262144 && !Gu(Yr.symbol, Fr.enclosingDeclaration) ? ja(Yr, Fr) : e.factory.cloneNode(ci); + return Ni.symbol = Ua, { introducesError: Kt, node: e.setEmitFlags(e.setOriginalNode(Ni, ci), 16777216) }; + } + return { introducesError: Kt, node: ci }; + } + function Mn(ci, Fr, jt, Lt) { + g && g.throwIfCancellationRequested && g.throwIfCancellationRequested(); + var ea = false, Kt = e.getSourceFileOfNode(Fr), $t = e.visitNode(Fr, Ua); + if (ea) + return; + return $t === Fr ? e.setTextRange(e.factory.cloneNode(Fr), Fr) : $t; + function Ua(Yr) { + if (e.isJSDocAllType(Yr) || Yr.kind === 319) + return e.factory.createKeywordTypeNode(130); + if (e.isJSDocUnknownType(Yr)) + return e.factory.createKeywordTypeNode(155); + if (e.isJSDocNullableType(Yr)) + return e.factory.createUnionTypeNode([e.visitNode(Yr.type, Ua), e.factory.createLiteralTypeNode(e.factory.createNull())]); + if (e.isJSDocOptionalType(Yr)) + return e.factory.createUnionTypeNode([e.visitNode(Yr.type, Ua), e.factory.createKeywordTypeNode(153)]); + if (e.isJSDocNonNullableType(Yr)) + return e.visitNode(Yr.type, Ua); + if (e.isJSDocVariadicType(Yr)) + return e.factory.createArrayTypeNode(e.visitNode(Yr.type, Ua)); + if (e.isJSDocTypeLiteral(Yr)) + return e.factory.createTypeLiteralNode(e.map(Yr.jsDocPropertyTags, function(Ga) { + var Qn = e.isIdentifier(Ga.name) ? Ga.name : Ga.name.right, wo = da(Va(Yr), Qn.escapedText), Po = wo && Ga.typeExpression && Va(Ga.typeExpression.type) !== wo ? o(wo, ci) : void 0; + return e.factory.createPropertySignature(void 0, Qn, Ga.isBracketed || Ga.typeExpression && e.isJSDocOptionalType(Ga.typeExpression.type) ? e.factory.createToken(57) : void 0, Po || Ga.typeExpression && e.visitNode(Ga.typeExpression.type, Ua) || e.factory.createKeywordTypeNode(130)); + })); + if (e.isTypeReferenceNode(Yr) && e.isIdentifier(Yr.typeName) && Yr.typeName.escapedText === "") + return e.setOriginalNode(e.factory.createKeywordTypeNode(130), Yr); + if ((e.isExpressionWithTypeArguments(Yr) || e.isTypeReferenceNode(Yr)) && e.isJSDocIndexSignature(Yr)) + return e.factory.createTypeLiteralNode([e.factory.createIndexSignature(void 0, void 0, [e.factory.createParameterDeclaration(void 0, void 0, void 0, "x", void 0, e.visitNode(Yr.typeArguments[0], Ua))], e.visitNode(Yr.typeArguments[1], Ua))]); + if (e.isJSDocFunctionType(Yr)) + if (e.isJSDocConstructSignature(Yr)) { + var Ni; + return e.factory.createConstructorTypeNode(Yr.modifiers, e.visitNodes(Yr.typeParameters, Ua), e.mapDefined(Yr.parameters, function(Ga, Qn) { + return Ga.name && e.isIdentifier(Ga.name) && Ga.name.escapedText === "new" ? (Ni = Ga.type, void 0) : e.factory.createParameterDeclaration(void 0, void 0, Fa(Ga), on(Ga, Qn), Ga.questionToken, e.visitNode(Ga.type, Ua), void 0); + }), e.visitNode(Ni || Yr.type, Ua) || e.factory.createKeywordTypeNode(130)); + } else + return e.factory.createFunctionTypeNode(e.visitNodes(Yr.typeParameters, Ua), e.map(Yr.parameters, function(Ga, Qn) { + return e.factory.createParameterDeclaration(void 0, void 0, Fa(Ga), on(Ga, Qn), Ga.questionToken, e.visitNode(Ga.type, Ua), void 0); + }), e.visitNode(Yr.type, Ua) || e.factory.createKeywordTypeNode(130)); + if (e.isTypeReferenceNode(Yr) && e.isInJSDoc(Yr) && (!Qt(Yr, Va(Yr)) || vx(Yr) || xe === nm(Yr, 788968, true))) + return e.setOriginalNode(o(Va(Yr), ci), Yr); + if (e.isLiteralImportTypeNode(Yr)) { + var Hi = va(Yr).resolvedSymbol; + return e.isInJSDoc(Yr) && Hi && (!Yr.isTypeOf && !(Hi.flags & 788968) || !(e.length(Yr.typeArguments) >= Ul(Af(Hi)))) ? e.setOriginalNode(o(Va(Yr), ci), Yr) : e.factory.updateImportTypeNode(Yr, e.factory.updateLiteralTypeNode(Yr.argument, zn(Yr, Yr.argument.literal)), Yr.qualifier, e.visitNodes(Yr.typeArguments, Ua, e.isTypeNode), Yr.isTypeOf); + } + if (e.isEntityName(Yr) || e.isEntityNameExpression(Yr)) { + var _t = oa(Yr, ci, jt), gt = _t.introducesError, Vt = _t.node; + if (ea = ea || gt, Vt !== Yr) + return Vt; + } + return Kt && e.isTupleTypeNode(Yr) && e.getLineAndCharacterOfPosition(Kt, Yr.pos).line === e.getLineAndCharacterOfPosition(Kt, Yr.end).line && e.setEmitFlags(Yr, 1), e.visitEachChild(Yr, Ua, e.nullTransformationContext); + function Fa(Ga) { + return Ga.dotDotDotToken || (Ga.type && e.isJSDocVariadicType(Ga.type) ? e.factory.createToken(25) : void 0); + } + function on(Ga, Qn) { + return Ga.name && e.isIdentifier(Ga.name) && Ga.name.escapedText === "this" ? "this" : Fa(Ga) ? "args" : "arg".concat(Qn); + } + function zn(Ga, Qn) { + if (Lt) { + if (ci.tracker && ci.tracker.moduleResolverHost) { + var wo = US(Ga); + if (wo) { + var Po = e.createGetCanonicalFileName(!!l.useCaseSensitiveFileNames), Uo = { getCanonicalFileName: Po, getCurrentDirectory: function() { + return ci.tracker.moduleResolverHost.getCurrentDirectory(); + }, getCommonSourceDirectory: function() { + return ci.tracker.moduleResolverHost.getCommonSourceDirectory(); + } }, Rs = e.getResolvedExternalModuleName(Uo, wo); + return e.factory.createStringLiteral(Rs); + } + } + } else if (ci.tracker && ci.tracker.trackExternalModuleSymbolOfImportTypeNode) { + var Fs = Pl(Qn, Qn, void 0); + Fs && ci.tracker.trackExternalModuleSymbolOfImportTypeNode(Fs); + } + return Qn; + } + } + } + function Ln(ci, Fr, jt) { + var Lt = Ca(e.factory.createPropertyDeclaration, 169, true), ea = Ca(function(gi, zt, La, fa, ya) { + return e.factory.createPropertySignature(zt, La, fa, ya); + }, 168, false), Kt = Fr.enclosingDeclaration, $t = [], Ua = new e.Set(), Yr = [], Ni = Fr; + Fr = Ke(Ke({}, Ni), { usedSymbolNames: new e.Set(Ni.usedSymbolNames), remappedSymbolNames: new e.Map(), tracker: Ke(Ke({}, Ni.tracker), { trackSymbol: function(gi, zt, La) { + var fa = g_(gi, zt, La, false); + if (fa.accessibility === 0) { + var ya = Ci(gi, Fr, La); + gi.flags & 4 || rc(ya[0]); + } else if (Ni.tracker && Ni.tracker.trackSymbol) + return Ni.tracker.trackSymbol(gi, zt, La); + return false; + } }) }), Fr.tracker = i(Fr, Fr.tracker), e.forEachEntry(ci, function(gi, zt) { + var La = e.unescapeLeadingUnderscores(zt); + ls(gi, La); + }); + var Hi = !jt, _t = ci.get("export="); + return _t && ci.size > 1 && _t.flags & 2097152 && (ci = e.createSymbolTable(), ci.set("export=", _t)), Uo(ci), Ga($t); + function gt(gi) { + return !!gi && gi.kind === 79; + } + function Vt(gi) { + return e.isVariableStatement(gi) ? e.filter(e.map(gi.declarationList.declarations, e.getNameOfDeclaration), gt) : e.filter([e.getNameOfDeclaration(gi)], gt); + } + function Fa(gi) { + var zt = e.find(gi, e.isExportAssignment), La = e.findIndex(gi, e.isModuleDeclaration), fa = La !== -1 ? gi[La] : void 0; + if (fa && zt && zt.isExportEquals && e.isIdentifier(zt.expression) && e.isIdentifier(fa.name) && e.idText(fa.name) === e.idText(zt.expression) && fa.body && e.isModuleBlock(fa.body)) { + var ya = e.filter(gi, function(sn) { + return !!(e.getEffectiveModifierFlags(sn) & 1); + }), Nn = fa.name, fn = fa.body; + if (e.length(ya) && (fa = e.factory.updateModuleDeclaration(fa, fa.decorators, fa.modifiers, fa.name, fn = e.factory.updateModuleBlock(fn, e.factory.createNodeArray(Ve(Ve([], fa.body.statements, true), [e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports(e.map(e.flatMap(ya, function(sn) { + return Vt(sn); + }), function(sn) { + return e.factory.createExportSpecifier(false, void 0, sn); + })), void 0)], false)))), gi = Ve(Ve(Ve([], gi.slice(0, La), true), [fa], false), gi.slice(La + 1), true)), !e.find(gi, function(sn) { + return sn !== fa && e.nodeHasName(sn, Nn); + })) { + $t = []; + var hn = !e.some(fn.statements, function(sn) { + return e.hasSyntacticModifier(sn, 1) || e.isExportAssignment(sn) || e.isExportDeclaration(sn); + }); + e.forEach(fn.statements, function(sn) { + Ts(sn, hn ? 1 : 0); + }), gi = Ve(Ve([], e.filter(gi, function(sn) { + return sn !== fa && sn !== zt; + }), true), $t, true); + } + } + return gi; + } + function on(gi) { + var zt = e.filter(gi, function(ln) { + return e.isExportDeclaration(ln) && !ln.moduleSpecifier && !!ln.exportClause && e.isNamedExports(ln.exportClause); + }); + if (e.length(zt) > 1) { + var La = e.filter(gi, function(ln) { + return !e.isExportDeclaration(ln) || !!ln.moduleSpecifier || !ln.exportClause; + }); + gi = Ve(Ve([], La, true), [e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports(e.flatMap(zt, function(ln) { + return e.cast(ln.exportClause, e.isNamedExports).elements; + })), void 0)], false); + } + var fa = e.filter(gi, function(ln) { + return e.isExportDeclaration(ln) && !!ln.moduleSpecifier && !!ln.exportClause && e.isNamedExports(ln.exportClause); + }); + if (e.length(fa) > 1) { + var ya = e.group(fa, function(ln) { + return e.isStringLiteral(ln.moduleSpecifier) ? ">" + ln.moduleSpecifier.text : ">"; + }); + if (ya.length !== fa.length) + for (var Nn = function(ln) { + ln.length > 1 && (gi = Ve(Ve([], e.filter(gi, function(lo) { + return ln.indexOf(lo) === -1; + }), true), [e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports(e.flatMap(ln, function(lo) { + return e.cast(lo.exportClause, e.isNamedExports).elements; + })), ln[0].moduleSpecifier)], false)); + }, fn = 0, hn = ya; fn < hn.length; fn++) { + var sn = hn[fn]; + Nn(sn); + } + } + return gi; + } + function zn(gi) { + var zt = e.findIndex(gi, function(ya) { + return e.isExportDeclaration(ya) && !ya.moduleSpecifier && !ya.assertClause && !!ya.exportClause && e.isNamedExports(ya.exportClause); + }); + if (zt >= 0) { + var La = gi[zt], fa = e.mapDefined(La.exportClause.elements, function(ya) { + if (!ya.propertyName) { + var Nn = e.indicesOf(gi), fn = e.filter(Nn, function(lo) { + return e.nodeHasName(gi[lo], ya.name); + }); + if (e.length(fn) && e.every(fn, function(lo) { + return Qn(gi[lo]); + })) { + for (var hn = 0, sn = fn; hn < sn.length; hn++) { + var ln = sn[hn]; + gi[ln] = wo(gi[ln]); + } + return; + } + } + return ya; + }); + e.length(fa) ? gi[zt] = e.factory.updateExportDeclaration(La, La.decorators, La.modifiers, La.isTypeOnly, e.factory.updateNamedExports(La.exportClause, fa), La.moduleSpecifier, La.assertClause) : e.orderedRemoveItemAt(gi, zt); + } + return gi; + } + function Ga(gi) { + return gi = Fa(gi), gi = on(gi), gi = zn(gi), Kt && (e.isSourceFile(Kt) && e.isExternalOrCommonJsModule(Kt) || e.isModuleDeclaration(Kt)) && (!e.some(gi, e.isExternalModuleIndicator) || !e.hasScopeMarker(gi) && e.some(gi, e.needsScopeMarker)) && gi.push(e.createEmptyExports(e.factory)), gi; + } + function Qn(gi) { + return e.isEnumDeclaration(gi) || e.isVariableStatement(gi) || e.isFunctionDeclaration(gi) || e.isClassDeclaration(gi) || e.isModuleDeclaration(gi) && !e.isExternalModuleAugmentation(gi) && !e.isGlobalScopeAugmentation(gi) || e.isInterfaceDeclaration(gi) || zy(gi); + } + function wo(gi) { + var zt = (e.getEffectiveModifierFlags(gi) | 1) & -3; + return e.factory.updateModifiers(gi, zt); + } + function Po(gi) { + var zt = e.getEffectiveModifierFlags(gi) & -2; + return e.factory.updateModifiers(gi, zt); + } + function Uo(gi, zt, La) { + zt || Yr.push(new e.Map()), gi.forEach(function(fa) { + Rs(fa, false, !!La); + }), zt || (Yr[Yr.length - 1].forEach(function(fa) { + Rs(fa, true, !!La); + }), Yr.pop()); + } + function Rs(gi, zt, La) { + var fa = so(gi); + if (!Ua.has(y(fa))) { + Ua.add(y(fa)); + var ya = !zt; + if (ya || !!e.length(gi.declarations) && e.some(gi.declarations, function(hn) { + return !!e.findAncestor(hn, function(sn) { + return sn === Kt; + }); + })) { + var Nn = Fr; + Fr = Yt(Fr); + var fn = Fs(gi, zt, La); + return Fr.reportedDiagnostic && (Ni.reportedDiagnostic = Fr.reportedDiagnostic), Fr = Nn, fn; + } + } + } + function Fs(gi, zt, La) { + var fa, ya, Nn, fn, hn = e.unescapeLeadingUnderscores(gi.escapedName), sn = gi.escapedName === "default"; + if (zt && !(Fr.flags & 131072) && e.isStringANonContextualKeyword(hn) && !sn) { + Fr.encounteredError = true; + return; + } + var ln = sn && !!(gi.flags & -113 || gi.flags & 16 && e.length(uo(Jt(gi)))) && !(gi.flags & 2097152), lo = !ln && !zt && e.isStringANonContextualKeyword(hn) && !sn; + (ln || lo) && (zt = true); + var _o = (zt ? 0 : 1) | (sn && !ln ? 512 : 0), _s = gi.flags & 1536 && gi.flags & 7 && gi.escapedName !== "export=", Vo = _s && ma(Jt(gi), gi); + if ((gi.flags & 8208 || Vo) && id(Jt(gi), gi, ls(gi, hn), _o), gi.flags & 524288 && rl(gi, hn, _o), gi.flags & 7 && gi.escapedName !== "export=" && !(gi.flags & 4194304) && !(gi.flags & 32) && !Vo) + if (La) { + var Yo = ht(gi); + Yo && (lo = false, ln = false); + } else { + var Cs = Jt(gi), ic = ls(gi, hn); + if (!(gi.flags & 16) && ma(Cs, gi)) + id(Cs, gi, ic, _o); + else { + var _c = gi.flags & 2 ? pv(gi) ? 2 : 1 : ((fa = gi.parent) === null || fa === void 0 ? void 0 : fa.valueDeclaration) && e.isSourceFile((ya = gi.parent) === null || ya === void 0 ? void 0 : ya.valueDeclaration) ? 2 : void 0, il = ln || !(gi.flags & 4) ? ic : Io(ic, gi), n_ = gi.declarations && e.find(gi.declarations, function(pp) { + return e.isVariableDeclaration(pp); + }); + n_ && e.isVariableDeclarationList(n_.parent) && n_.parent.declarations.length === 1 && (n_ = n_.parent.parent); + var o_ = (Nn = gi.declarations) === null || Nn === void 0 ? void 0 : Nn.find(e.isPropertyAccessExpression); + if (o_ && e.isBinaryExpression(o_.parent) && e.isIdentifier(o_.parent.right) && ((fn = Cs.symbol) === null || fn === void 0 ? void 0 : fn.valueDeclaration) && e.isSourceFile(Cs.symbol.valueDeclaration)) { + var og = ic === o_.parent.right.escapedText ? void 0 : o_.parent.right; + Ts(e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports([e.factory.createExportSpecifier(false, og, ic)])), 0), Fr.tracker.trackSymbol(Cs.symbol, Fr.enclosingDeclaration, 111551); + } else { + var _p = e.setTextRange(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(il, void 0, Ka(Fr, Cs, gi, Kt, rc, jt))], _c)), n_); + Ts(_p, il !== ic ? _o & -2 : _o), il !== ic && !zt && (Ts(e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports([e.factory.createExportSpecifier(false, il, ic)])), 0), lo = false, ln = false); + } + } + } + if (gi.flags & 384 && zg(gi, hn, _o), gi.flags & 32 && (gi.flags & 4 && gi.valueDeclaration && e.isBinaryExpression(gi.valueDeclaration.parent) && e.isClassExpression(gi.valueDeclaration.parent.right) ? Ht(gi, ls(gi, hn), _o) : mt(gi, ls(gi, hn), _o)), (gi.flags & 1536 && (!_s || Tl(gi)) || Vo) && fp(gi, hn, _o), gi.flags & 64 && !(gi.flags & 32) && jd(gi, hn, _o), gi.flags & 2097152 && Ht(gi, ls(gi, hn), _o), gi.flags & 4 && gi.escapedName === "export=" && ht(gi), gi.flags & 8388608 && gi.declarations) + for (var td = 0, s_ = gi.declarations; td < s_.length; td++) { + var sg = s_[td], Nc = ac(sg, sg.moduleSpecifier); + !Nc || Ts(e.factory.createExportDeclaration(void 0, void 0, false, void 0, e.factory.createStringLiteral(Nt(Nc, Fr))), 0); + } + ln ? Ts(e.factory.createExportAssignment(void 0, void 0, false, e.factory.createIdentifier(ls(gi, hn))), 0) : lo && Ts(e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports([e.factory.createExportSpecifier(false, ls(gi, hn), hn)])), 0); + } + function rc(gi) { + if (!e.some(gi.declarations, e.isParameterDeclaration)) { + e.Debug.assertIsDefined(Yr[Yr.length - 1]), Io(e.unescapeLeadingUnderscores(gi.escapedName), gi); + var zt = !!(gi.flags & 2097152) && !e.some(gi.declarations, function(La) { + return !!e.findAncestor(La, e.isExportDeclaration) || e.isNamespaceExport(La) || e.isImportEqualsDeclaration(La) && !e.isExternalModuleReference(La.moduleReference); + }); + Yr[zt ? 0 : Yr.length - 1].set(y(gi), gi); + } + } + function xu(gi) { + return e.isSourceFile(gi) && (e.isExternalOrCommonJsModule(gi) || e.isJsonSourceFile(gi)) || e.isAmbientModule(gi) && !e.isGlobalScopeAugmentation(gi); + } + function Ts(gi, zt) { + if (e.canHaveModifiers(gi)) { + var La = 0, fa = Fr.enclosingDeclaration && (e.isJSDocTypeAlias(Fr.enclosingDeclaration) ? e.getSourceFileOfNode(Fr.enclosingDeclaration) : Fr.enclosingDeclaration); + zt & 1 && fa && (xu(fa) || e.isModuleDeclaration(fa)) && Qn(gi) && (La |= 1), Hi && !(La & 1) && (!fa || !(fa.flags & 16777216)) && (e.isEnumDeclaration(gi) || e.isVariableStatement(gi) || e.isFunctionDeclaration(gi) || e.isClassDeclaration(gi) || e.isModuleDeclaration(gi)) && (La |= 2), zt & 512 && (e.isClassDeclaration(gi) || e.isInterfaceDeclaration(gi) || e.isFunctionDeclaration(gi)) && (La |= 512), La && (gi = e.factory.updateModifiers(gi, La | e.getEffectiveModifierFlags(gi))); + } + $t.push(gi); + } + function rl(gi, zt, La) { + var fa, ya = Ja(gi), Nn = Aa(gi).typeParameters, fn = e.map(Nn, function(_s) { + return Dr(_s, Fr); + }), hn = (fa = gi.declarations) === null || fa === void 0 ? void 0 : fa.find(e.isJSDocTypeAlias), sn = e.getTextOfJSDocComment(hn ? hn.comment || hn.parent.comment : void 0), ln = Fr.flags; + Fr.flags |= 8388608; + var lo = Fr.enclosingDeclaration; + Fr.enclosingDeclaration = hn; + var _o = hn && hn.typeExpression && e.isJSDocTypeExpression(hn.typeExpression) && Mn(Fr, hn.typeExpression.type, rc, jt) || o(ya, Fr); + Ts(e.setSyntheticLeadingComments(e.factory.createTypeAliasDeclaration(void 0, void 0, ls(gi, zt), fn, _o), sn ? [{ kind: 3, text: `* + * ` + sn.replace(/\n/g, ` + * `) + ` + `, pos: -1, end: -1, hasTrailingNewLine: true }] : []), La), Fr.flags = ln, Fr.enclosingDeclaration = lo; + } + function jd(gi, zt, La) { + var fa = aa(gi), ya = Af(gi), Nn = e.map(ya, function(Vo) { + return Dr(Vo, Fr); + }), fn = Qc(fa), hn = e.length(fn) ? Do(fn) : void 0, sn = e.flatMap(uo(fa), function(Vo) { + return An(Vo, hn); + }), ln = gn(0, fa, hn, 174), lo = gn(1, fa, hn, 175), _o = Vn(fa, hn), _s = e.length(fn) ? [e.factory.createHeritageClause(94, e.mapDefined(fn, function(Vo) { + return us(Vo, 111551); + }))] : void 0; + Ts(e.factory.createInterfaceDeclaration(void 0, void 0, ls(gi, zt), Nn, _s, Ve(Ve(Ve(Ve([], _o, true), lo, true), ln, true), sn, true)), La); + } + function lp(gi) { + return gi.exports ? e.filter(e.arrayFrom(gi.exports.values()), hi) : []; + } + function Tl(gi) { + return e.every(lp(gi), function(zt) { + return !(os(zt).flags & 111551); + }); + } + function fp(gi, zt, La) { + var fa = lp(gi), ya = e.arrayToMultiMap(fa, function(lo) { + return lo.parent && lo.parent === gi ? "real" : "merged"; + }), Nn = ya.get("real") || e.emptyArray, fn = ya.get("merged") || e.emptyArray; + if (e.length(Nn)) { + var hn = ls(gi, zt); + $r(Nn, hn, La, !!(gi.flags & 67108880)); + } + if (e.length(fn)) { + var sn = e.getSourceFileOfNode(Fr.enclosingDeclaration), hn = ls(gi, zt), ln = e.factory.createModuleBlock([e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports(e.mapDefined(e.filter(fn, function(_o) { + return _o.escapedName !== "export="; + }), function(_o) { + var _s, Vo, Yo = e.unescapeLeadingUnderscores(_o.escapedName), Cs = ls(_o, Yo), ic = _o.declarations && ru(_o); + if (sn && (ic ? sn !== e.getSourceFileOfNode(ic) : !e.some(_o.declarations, function(n_) { + return e.getSourceFileOfNode(n_) === sn; + }))) { + (Vo = (_s = Fr.tracker) === null || _s === void 0 ? void 0 : _s.reportNonlocalAugmentation) === null || Vo === void 0 || Vo.call(_s, sn, gi, _o); + return; + } + var _c = ic && Ec(ic, true); + rc(_c || _o); + var il = _c ? ls(_c, e.unescapeLeadingUnderscores(_c.escapedName)) : Cs; + return e.factory.createExportSpecifier(false, Yo === il ? void 0 : il, Yo); + })))]); + Ts(e.factory.createModuleDeclaration(void 0, void 0, e.factory.createIdentifier(hn), ln, 16), 0); + } + } + function zg(gi, zt, La) { + Ts(e.factory.createEnumDeclaration(void 0, e.factory.createModifiersFromModifierFlags(lS(gi) ? 2048 : 0), ls(gi, zt), e.map(e.filter(uo(Jt(gi)), function(fa) { + return !!(fa.flags & 8); + }), function(fa) { + var ya = fa.declarations && fa.declarations[0] && e.isEnumMember(fa.declarations[0]) ? BS(fa.declarations[0]) : void 0; + return e.factory.createEnumMember(e.unescapeLeadingUnderscores(fa.escapedName), ya === void 0 ? void 0 : typeof ya == "string" ? e.factory.createStringLiteral(ya) : e.factory.createNumericLiteral(ya)); + })), La); + } + function id(gi, zt, La, fa) { + for (var ya = ot(gi, 0), Nn = 0, fn = ya; Nn < fn.length; Nn++) { + var hn = fn[Nn], sn = $e(hn, 256, Fr, { name: e.factory.createIdentifier(La), privateSymbolVisitor: rc, bundledImports: jt }); + Ts(e.setTextRange(sn, za(hn)), fa); + } + if (!(zt.flags & 1536 && !!zt.exports && !!zt.exports.size)) { + var ln = e.filter(uo(gi), hi); + $r(ln, La, fa, true); + } + } + function za(gi) { + if (gi.declaration && gi.declaration.parent) { + if (e.isBinaryExpression(gi.declaration.parent) && e.getAssignmentDeclarationKind(gi.declaration.parent) === 5) + return gi.declaration.parent; + if (e.isVariableDeclaration(gi.declaration.parent) && gi.declaration.parent.parent) + return gi.declaration.parent.parent; + } + return gi.declaration; + } + function $r(gi, zt, La, fa) { + if (e.length(gi)) { + var ya = e.arrayToMultiMap(gi, function(Yo) { + return !e.length(Yo.declarations) || e.some(Yo.declarations, function(Cs) { + return e.getSourceFileOfNode(Cs) === e.getSourceFileOfNode(Fr.enclosingDeclaration); + }) ? "local" : "remote"; + }), Nn = ya.get("local") || e.emptyArray, fn = e.parseNodeFactory.createModuleDeclaration(void 0, void 0, e.factory.createIdentifier(zt), e.factory.createModuleBlock([]), 16); + e.setParent(fn, Kt), fn.locals = e.createSymbolTable(gi), fn.symbol = gi[0].parent; + var hn = $t; + $t = []; + var sn = Hi; + Hi = false; + var ln = Ke(Ke({}, Fr), { enclosingDeclaration: fn }), lo = Fr; + Fr = ln, Uo(e.createSymbolTable(Nn), fa, true), Fr = lo, Hi = sn; + var _o = $t; + $t = hn; + var _s = e.map(_o, function(Yo) { + return e.isExportAssignment(Yo) && !Yo.isExportEquals && e.isIdentifier(Yo.expression) ? e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports([e.factory.createExportSpecifier(false, Yo.expression, e.factory.createIdentifier("default"))])) : Yo; + }), Vo = e.every(_s, function(Yo) { + return e.hasSyntacticModifier(Yo, 1); + }) ? e.map(_s, Po) : _s; + fn = e.factory.updateModuleDeclaration(fn, fn.decorators, fn.modifiers, fn.name, e.factory.createModuleBlock(Vo)), Ts(fn, La); + } + } + function hi(gi) { + return !!(gi.flags & 2887656) || !(gi.flags & 4194304 || gi.escapedName === "prototype" || gi.valueDeclaration && e.isStatic(gi.valueDeclaration) && e.isClassLike(gi.valueDeclaration.parent)); + } + function Ri(gi) { + var zt = e.mapDefined(gi, function(La) { + var fa, ya = Fr.enclosingDeclaration; + Fr.enclosingDeclaration = La; + var Nn = La.expression; + if (e.isEntityNameExpression(Nn)) { + if (e.isIdentifier(Nn) && e.idText(Nn) === "") + return hn(void 0); + var fn = void 0; + if (fa = oa(Nn, Fr, rc), fn = fa.introducesError, Nn = fa.node, fn) + return hn(void 0); + } + return hn(e.factory.createExpressionWithTypeArguments(Nn, e.map(La.typeArguments, function(sn) { + return Mn(Fr, sn, rc, jt) || o(Va(sn), Fr); + }))); + function hn(sn) { + return Fr.enclosingDeclaration = ya, sn; + } + }); + if (zt.length === gi.length) + return zt; + } + function mt(gi, zt, La) { + var fa, ya, Nn = (fa = gi.declarations) === null || fa === void 0 ? void 0 : fa.find(e.isClassLike), fn = Fr.enclosingDeclaration; + Fr.enclosingDeclaration = Nn || fn; + var hn = Af(gi), sn = e.map(hn, function(Nc) { + return Dr(Nc, Fr); + }), ln = aa(gi), lo = Qc(ln), _o = Nn && e.getEffectiveImplementsTypeNodes(Nn), _s = _o && Ri(_o) || e.mapDefined(Qg(ln), Bo), Vo = Jt(gi), Yo = !!(!((ya = Vo.symbol) === null || ya === void 0) && ya.valueDeclaration) && e.isClassLike(Vo.symbol.valueDeclaration), Cs = Yo ? Bl(Vo) : Oe, ic = Ve(Ve([], e.length(lo) ? [e.factory.createHeritageClause(94, e.map(lo, function(Nc) { + return zo(Nc, Cs, zt); + }))] : [], true), e.length(_s) ? [e.factory.createHeritageClause(117, _s)] : [], true), _c = vM(ln, lo, uo(ln)), il = e.filter(_c, function(Nc) { + var pp = Nc.valueDeclaration; + return !!pp && !(e.isNamedDeclaration(pp) && e.isPrivateIdentifier(pp.name)); + }), n_ = e.some(_c, function(Nc) { + var pp = Nc.valueDeclaration; + return !!pp && e.isNamedDeclaration(pp) && e.isPrivateIdentifier(pp.name); + }), o_ = n_ ? [e.factory.createPropertyDeclaration(void 0, void 0, e.factory.createPrivateIdentifier("#private"), void 0, void 0, void 0)] : e.emptyArray, og = e.flatMap(il, function(Nc) { + return Lt(Nc, false, lo[0]); + }), _p = e.flatMap(e.filter(uo(Vo), function(Nc) { + return !(Nc.flags & 4194304) && Nc.escapedName !== "prototype" && !hi(Nc); + }), function(Nc) { + return Lt(Nc, true, Cs); + }), td = !Yo && !!gi.valueDeclaration && e.isInJSFile(gi.valueDeclaration) && !e.some(ot(Vo, 1)), s_ = td ? [e.factory.createConstructorDeclaration(void 0, e.factory.createModifiersFromModifierFlags(8), [], void 0)] : gn(1, Vo, Cs, 171), sg = Vn(ln, lo[0]); + Fr.enclosingDeclaration = fn, Ts(e.setTextRange(e.factory.createClassDeclaration(void 0, void 0, zt, sn, ic, Ve(Ve(Ve(Ve(Ve([], sg, true), _p, true), s_, true), og, true), o_, true)), gi.declarations && e.filter(gi.declarations, function(Nc) { + return e.isClassDeclaration(Nc) || e.isClassExpression(Nc); + })[0]), La); + } + function ft(gi) { + return e.firstDefined(gi, function(zt) { + if (e.isImportSpecifier(zt) || e.isExportSpecifier(zt)) + return e.idText(zt.propertyName || zt.name); + if (e.isBinaryExpression(zt) || e.isExportAssignment(zt)) { + var La = e.isExportAssignment(zt) ? zt.expression : zt.right; + if (e.isPropertyAccessExpression(La)) + return e.idText(La.name); + } + if (yf(zt)) { + var fa = e.getNameOfDeclaration(zt); + if (fa && e.isIdentifier(fa)) + return e.idText(fa); + } + }); + } + function Ht(gi, zt, La) { + var fa, ya, Nn, fn, hn, sn = ru(gi); + if (!sn) + return e.Debug.fail(); + var ln = so(Ec(sn, true)); + if (!!ln) { + var lo = e.isShorthandAmbientModuleSymbol(ln) && ft(gi.declarations) || e.unescapeLeadingUnderscores(ln.escapedName); + lo === "export=" && (e.getESModuleInterop(ye) || ye.allowSyntheticDefaultImports) && (lo = "default"); + var _o = ls(ln, lo); + switch (rc(ln), sn.kind) { + case 203: + if (((ya = (fa = sn.parent) === null || fa === void 0 ? void 0 : fa.parent) === null || ya === void 0 ? void 0 : ya.kind) === 254) { + var _s = Nt(ln.parent || ln, Fr), Vo = sn.propertyName; + Ts(e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, void 0, e.factory.createNamedImports([e.factory.createImportSpecifier(false, Vo && e.isIdentifier(Vo) ? e.factory.createIdentifier(e.idText(Vo)) : void 0, e.factory.createIdentifier(zt))])), e.factory.createStringLiteral(_s), void 0), 0); + break; + } + e.Debug.failBadSyntaxKind(((Nn = sn.parent) === null || Nn === void 0 ? void 0 : Nn.parent) || sn, "Unhandled binding element grandparent kind in declaration serialization"); + break; + case 297: + ((hn = (fn = sn.parent) === null || fn === void 0 ? void 0 : fn.parent) === null || hn === void 0 ? void 0 : hn.kind) === 221 && vt(e.unescapeLeadingUnderscores(gi.escapedName), _o); + break; + case 254: + if (e.isPropertyAccessExpression(sn.initializer)) { + var Yo = sn.initializer, Cs = e.factory.createUniqueName(zt), ic = Nt(ln.parent || ln, Fr); + Ts(e.factory.createImportEqualsDeclaration(void 0, void 0, false, Cs, e.factory.createExternalModuleReference(e.factory.createStringLiteral(ic))), 0), Ts(e.factory.createImportEqualsDeclaration(void 0, void 0, false, e.factory.createIdentifier(zt), e.factory.createQualifiedName(Cs, Yo.name)), La); + break; + } + case 265: + if (ln.escapedName === "export=" && e.some(ln.declarations, e.isJsonSourceFile)) { + ht(gi); + break; + } + var _c = !(ln.flags & 512) && !e.isVariableDeclaration(sn); + Ts(e.factory.createImportEqualsDeclaration(void 0, void 0, false, e.factory.createIdentifier(zt), _c ? Fn(ln, Fr, 67108863, false) : e.factory.createExternalModuleReference(e.factory.createStringLiteral(Nt(ln, Fr)))), _c ? La : 0); + break; + case 264: + Ts(e.factory.createNamespaceExportDeclaration(e.idText(sn.name)), 0); + break; + case 267: + Ts(e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, e.factory.createIdentifier(zt), void 0), e.factory.createStringLiteral(Nt(ln.parent || ln, Fr)), void 0), 0); + break; + case 268: + Ts(e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, void 0, e.factory.createNamespaceImport(e.factory.createIdentifier(zt))), e.factory.createStringLiteral(Nt(ln, Fr)), void 0), 0); + break; + case 274: + Ts(e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamespaceExport(e.factory.createIdentifier(zt)), e.factory.createStringLiteral(Nt(ln, Fr))), 0); + break; + case 270: + Ts(e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, void 0, e.factory.createNamedImports([e.factory.createImportSpecifier(false, zt !== lo ? e.factory.createIdentifier(lo) : void 0, e.factory.createIdentifier(zt))])), e.factory.createStringLiteral(Nt(ln.parent || ln, Fr)), void 0), 0); + break; + case 275: + var il = sn.parent.parent.moduleSpecifier; + vt(e.unescapeLeadingUnderscores(gi.escapedName), il ? lo : _o, il && e.isStringLiteralLike(il) ? e.factory.createStringLiteral(il.text) : void 0); + break; + case 271: + ht(gi); + break; + case 221: + case 206: + case 207: + gi.escapedName === "default" || gi.escapedName === "export=" ? ht(gi) : vt(zt, _o); + break; + default: + return e.Debug.failBadSyntaxKind(sn, "Unhandled alias declaration kind in symbol serializer!"); + } + } + } + function vt(gi, zt, La) { + Ts(e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports([e.factory.createExportSpecifier(false, gi !== zt ? zt : void 0, gi)]), La), 0); + } + function ht(gi) { + if (gi.flags & 4194304) + return false; + var zt = e.unescapeLeadingUnderscores(gi.escapedName), La = zt === "export=", fa = zt === "default", ya = La || fa, Nn = gi.declarations && ru(gi), fn = Nn && Ec(Nn, true); + if (fn && e.length(fn.declarations) && e.some(fn.declarations, function(Yo) { + return e.getSourceFileOfNode(Yo) === e.getSourceFileOfNode(Kt); + })) { + var hn = Nn && (e.isExportAssignment(Nn) || e.isBinaryExpression(Nn) ? e.getExportAssignmentExpression(Nn) : e.getPropertyAssignmentAliasLikeExpression(Nn)), sn = hn && e.isEntityNameExpression(hn) ? IM(hn) : void 0, ln = sn && Ds(sn, 67108863, true, true, Kt); + (ln || fn) && rc(ln || fn); + var lo = Fr.tracker.trackSymbol; + if (Fr.tracker.trackSymbol = function() { + return false; + }, ya) + $t.push(e.factory.createExportAssignment(void 0, void 0, La, wn(fn, Fr, 67108863))); + else if (sn === hn && sn) + vt(zt, e.idText(sn)); + else if (hn && e.isClassExpression(hn)) + vt(zt, ls(fn, e.symbolName(fn))); + else { + var _o = Io(zt, gi); + Ts(e.factory.createImportEqualsDeclaration(void 0, void 0, false, e.factory.createIdentifier(_o), Fn(fn, Fr, 67108863, false)), 0), vt(zt, _o); + } + return Fr.tracker.trackSymbol = lo, true; + } else { + var _o = Io(zt, gi), _s = $c(Jt(so(gi))); + if (ma(_s, gi)) + id(_s, gi, _o, ya ? 0 : 1); + else { + var Vo = e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(_o, void 0, Ka(Fr, _s, gi, Kt, rc, jt))], 2)); + Ts(Vo, fn && fn.flags & 4 && fn.escapedName === "export=" ? 2 : zt === _o ? 1 : 0); + } + return ya ? ($t.push(e.factory.createExportAssignment(void 0, void 0, La, e.factory.createIdentifier(_o))), true) : zt !== _o ? (vt(zt, _o), true) : false; + } + } + function ma(gi, zt) { + var La = e.getSourceFileOfNode(Fr.enclosingDeclaration); + return e.getObjectFlags(gi) & 48 && !e.length(Hn(gi)) && !yd(gi) && !!(e.length(e.filter(uo(gi), hi)) || e.length(ot(gi, 0))) && !e.length(ot(gi, 1)) && !Ia(zt, Kt) && !(gi.symbol && e.some(gi.symbol.declarations, function(fa) { + return e.getSourceFileOfNode(fa) !== La; + })) && !e.some(uo(gi), function(fa) { + return pg(fa.escapedName); + }) && !e.some(uo(gi), function(fa) { + return e.some(fa.declarations, function(ya) { + return e.getSourceFileOfNode(ya) !== La; + }); + }) && e.every(uo(gi), function(fa) { + return e.isIdentifierText(e.symbolName(fa), Ae); + }); + } + function Ca(gi, zt, La) { + return function(ya, Nn, fn) { + var hn, sn, ln, lo, _o, _s = e.getDeclarationModifierFlagsFromSymbol(ya), Vo = !!(_s & 8); + if (Nn && ya.flags & 2887656) + return []; + if (ya.flags & 4194304 || fn && bi(fn, ya.escapedName) && Zu(bi(fn, ya.escapedName)) === Zu(ya) && (ya.flags & 16777216) === (bi(fn, ya.escapedName).flags & 16777216) && wf(Jt(ya), da(fn, ya.escapedName))) + return []; + var Yo = _s & -257 | (Nn ? 32 : 0), Cs = lt(ya, Fr), ic = (hn = ya.declarations) === null || hn === void 0 ? void 0 : hn.find(e.or(e.isPropertyDeclaration, e.isAccessor, e.isVariableDeclaration, e.isPropertySignature, e.isBinaryExpression, e.isPropertyAccessExpression)); + if (ya.flags & 98304 && La) { + var _c = []; + if (ya.flags & 65536 && _c.push(e.setTextRange(e.factory.createSetAccessorDeclaration(void 0, e.factory.createModifiersFromModifierFlags(Yo), Cs, [e.factory.createParameterDeclaration(void 0, void 0, void 0, "arg", void 0, Vo ? void 0 : Ka(Fr, Jt(ya), ya, Kt, rc, jt))], void 0), ((sn = ya.declarations) === null || sn === void 0 ? void 0 : sn.find(e.isSetAccessor)) || ic)), ya.flags & 32768) { + var il = _s & 8; + _c.push(e.setTextRange(e.factory.createGetAccessorDeclaration(void 0, e.factory.createModifiersFromModifierFlags(Yo), Cs, [], il ? void 0 : Ka(Fr, Jt(ya), ya, Kt, rc, jt), void 0), ((ln = ya.declarations) === null || ln === void 0 ? void 0 : ln.find(e.isGetAccessor)) || ic)); + } + return _c; + } else if (ya.flags & 98311) + return e.setTextRange(gi(void 0, e.factory.createModifiersFromModifierFlags((Zu(ya) ? 64 : 0) | Yo), Cs, ya.flags & 16777216 ? e.factory.createToken(57) : void 0, Vo ? void 0 : Ka(Fr, Jt(ya), ya, Kt, rc, jt), void 0), ((lo = ya.declarations) === null || lo === void 0 ? void 0 : lo.find(e.or(e.isPropertyDeclaration, e.isVariableDeclaration))) || ic); + if (ya.flags & 8208) { + var n_ = Jt(ya), o_ = ot(n_, 0); + if (Yo & 8) + return e.setTextRange(gi(void 0, e.factory.createModifiersFromModifierFlags((Zu(ya) ? 64 : 0) | Yo), Cs, ya.flags & 16777216 ? e.factory.createToken(57) : void 0, void 0, void 0), ((_o = ya.declarations) === null || _o === void 0 ? void 0 : _o.find(e.isFunctionLikeDeclaration)) || o_[0] && o_[0].declaration || ya.declarations && ya.declarations[0]); + for (var og = [], _p = 0, td = o_; _p < td.length; _p++) { + var s_ = td[_p], sg = $e(s_, zt, Fr, { name: Cs, questionToken: ya.flags & 16777216 ? e.factory.createToken(57) : void 0, modifiers: Yo ? e.factory.createModifiersFromModifierFlags(Yo) : void 0 }), Nc = s_.declaration && e.isPrototypePropertyAssignment(s_.declaration.parent) ? s_.declaration.parent : s_.declaration; + og.push(e.setTextRange(sg, Nc)); + } + return og; + } + return e.Debug.fail("Unhandled class member kind! ".concat(ya.__debugFlags || ya.flags)); + }; + } + function An(gi, zt) { + return ea(gi, false, zt); + } + function gn(gi, zt, La, fa) { + var ya = ot(zt, gi); + if (gi === 1) { + if (!La && e.every(ya, function(_c) { + return e.length(_c.parameters) === 0; + })) + return []; + if (La) { + var Nn = ot(La, 1); + if (!e.length(Nn) && e.every(ya, function(_c) { + return e.length(_c.parameters) === 0; + })) + return []; + if (Nn.length === ya.length) { + for (var fn = false, hn = 0; hn < Nn.length; hn++) + if (!_y(ya[hn], Nn[hn], false, false, true, av)) { + fn = true; + break; + } + if (!fn) + return []; + } + } + for (var sn = 0, ln = 0, lo = ya; ln < lo.length; ln++) { + var _o = lo[ln]; + _o.declaration && (sn |= e.getSelectedEffectiveModifierFlags(_o.declaration, 24)); + } + if (sn) + return [e.setTextRange(e.factory.createConstructorDeclaration(void 0, e.factory.createModifiersFromModifierFlags(sn), [], void 0), ya[0].declaration)]; + } + for (var _s = [], Vo = 0, Yo = ya; Vo < Yo.length; Vo++) { + var Cs = Yo[Vo], ic = $e(Cs, fa, Fr); + _s.push(e.setTextRange(ic, Cs.declaration)); + } + return _s; + } + function Vn(gi, zt) { + for (var La = [], fa = 0, ya = Hn(gi); fa < ya.length; fa++) { + var Nn = ya[fa]; + if (zt) { + var fn = ss(zt, Nn.keyType); + if (fn && wf(Nn.type, fn.type)) + continue; + } + La.push(Me(Nn, Fr, void 0)); + } + return La; + } + function zo(gi, zt, La) { + var fa = us(gi, 111551); + if (fa) + return fa; + var ya = Io("".concat(La, "_base")), Nn = e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(ya, void 0, o(zt, Fr))], 2)); + return Ts(Nn, 0), e.factory.createExpressionWithTypeArguments(e.factory.createIdentifier(ya), void 0); + } + function us(gi, zt) { + var La, fa; + if (gi.target && Cf(gi.target.symbol, Kt, zt) ? (La = e.map(xo(gi), function(ya) { + return o(ya, Fr); + }), fa = wn(gi.target.symbol, Fr, 788968)) : gi.symbol && Cf(gi.symbol, Kt, zt) && (fa = wn(gi.symbol, Fr, 788968)), fa) + return e.factory.createExpressionWithTypeArguments(fa, La); + } + function Bo(gi) { + var zt = us(gi, 788968); + if (zt) + return zt; + if (gi.symbol) + return e.factory.createExpressionWithTypeArguments(wn(gi.symbol, Fr, 788968), void 0); + } + function Io(gi, zt) { + var La, fa, ya = zt ? y(zt) : void 0; + if (ya && Fr.remappedSymbolNames.has(ya)) + return Fr.remappedSymbolNames.get(ya); + zt && (gi = Qo(zt, gi)); + for (var Nn = 0, fn = gi; !((La = Fr.usedSymbolNames) === null || La === void 0) && La.has(gi); ) + Nn++, gi = "".concat(fn, "_").concat(Nn); + return (fa = Fr.usedSymbolNames) === null || fa === void 0 || fa.add(gi), ya && Fr.remappedSymbolNames.set(ya, gi), gi; + } + function Qo(gi, zt) { + if (zt === "default" || zt === "__class" || zt === "__function") { + var La = Fr.flags; + Fr.flags |= 16777216; + var fa = of(gi, Fr); + Fr.flags = La, zt = fa.length > 0 && e.isSingleOrDoubleQuote(fa.charCodeAt(0)) ? e.stripQuotes(fa) : fa; + } + return zt === "default" ? zt = "_default" : zt === "export=" && (zt = "_exports"), zt = e.isIdentifierText(zt, Ae) && !e.isStringANonContextualKeyword(zt) ? zt : "_" + zt.replace(/[^a-zA-Z0-9]/g, "_"), zt; + } + function ls(gi, zt) { + var La = y(gi); + return Fr.remappedSymbolNames.has(La) ? Fr.remappedSymbolNames.get(La) : (zt = Qo(gi, zt), Fr.remappedSymbolNames.set(La, zt), zt); + } + } + } + function Ll(r, i, t, o) { + return t === void 0 && (t = 16384), o ? s(o).getText() : e.usingSingleLineStringWriter(s); + function s(u) { + var h = e.factory.createTypePredicateNode(r.kind === 2 || r.kind === 3 ? e.factory.createToken(128) : void 0, r.kind === 1 || r.kind === 3 ? e.factory.createIdentifier(r.parameterName) : e.factory.createThisTypeNode(), r.type && Ur.typeToTypeNode(r.type, i, Rp(t) | 70221824 | 512)), z = e.createPrinter({ removeComments: true }), me = i && e.getSourceFileOfNode(i); + return z.writeNode(4, h, me, u), u; + } + } + function hd(r) { + for (var i = [], t = 0, o = 0; o < r.length; o++) { + var s = r[o]; + if (t |= s.flags, !(s.flags & 98304)) { + if (s.flags & 1536) { + var u = s.flags & 512 ? Ii : cc(s); + if (u.flags & 1048576) { + var h = u.types.length; + if (o + h <= r.length && jc(r[o + h - 1]) === jc(u.types[h - 1])) { + i.push(u), o += h - 1; + continue; + } + } + } + i.push(s); + } + } + return t & 65536 && i.push(Wi), t & 32768 && i.push(Tr), i || r; + } + function v_(r) { + return r === 8 ? "private" : r === 16 ? "protected" : "public"; + } + function Bp(r) { + if (r.symbol && r.symbol.flags & 2048 && r.symbol.declarations) { + var i = e.walkUpParenthesizedTypes(r.symbol.declarations[0].parent); + if (i.kind === 259) + return Et(i); + } + } + function Xu(r) { + return r && r.parent && r.parent.kind === 262 && e.isExternalModuleAugmentation(r.parent.parent); + } + function Xc(r) { + return r.kind === 305 || e.isAmbientModule(r); + } + function Gf(r, i) { + var t = Aa(r).nameType; + if (t) { + if (t.flags & 384) { + var o = "" + t.value; + return !e.isIdentifierText(o, e.getEmitScriptTarget(ye)) && !e.isNumericLiteralName(o) ? '"'.concat(e.escapeString(o, 34), '"') : e.isNumericLiteralName(o) && e.startsWith(o, "-") ? "[".concat(o, "]") : o; + } + if (t.flags & 8192) + return "[".concat(of(t.symbol, i), "]"); + } + } + function of(r, i) { + if (i && r.escapedName === "default" && !(i.flags & 16384) && (!(i.flags & 16777216) || !r.declarations || i.enclosingDeclaration && e.findAncestor(r.declarations[0], Xc) !== e.findAncestor(i.enclosingDeclaration, Xc))) + return "default"; + if (r.declarations && r.declarations.length) { + var t = e.firstDefined(r.declarations, function(z) { + return e.getNameOfDeclaration(z) ? z : void 0; + }), o = t && e.getNameOfDeclaration(t); + if (t && o) { + if (e.isCallExpression(t) && e.isBindableObjectDefinePropertyCall(t)) + return e.symbolName(r); + if (e.isComputedPropertyName(o) && !(e.getCheckFlags(r) & 4096)) { + var s = Aa(r).nameType; + if (s && s.flags & 384) { + var u = Gf(r, i); + if (u !== void 0) + return u; + } + } + return e.declarationNameToString(o); + } + if (t || (t = r.declarations[0]), t.parent && t.parent.kind === 254) + return e.declarationNameToString(t.parent.name); + switch (t.kind) { + case 226: + case 213: + case 214: + return i && !i.encounteredError && !(i.flags & 131072) && (i.encounteredError = true), t.kind === 226 ? "(Anonymous class)" : "(Anonymous function)"; + } + } + var h = Gf(r, i); + return h !== void 0 ? h : e.symbolName(r); + } + function wu(r) { + if (r) { + var i = va(r); + return i.isVisible === void 0 && (i.isVisible = !!t()), i.isVisible; + } + return false; + function t() { + switch (r.kind) { + case 338: + case 345: + case 339: + return !!(r.parent && r.parent.parent && r.parent.parent.parent && e.isSourceFile(r.parent.parent.parent)); + case 203: + return wu(r.parent.parent); + case 254: + if (e.isBindingPattern(r.name) && !r.name.elements.length) + return false; + case 261: + case 257: + case 258: + case 259: + case 256: + case 260: + case 265: + if (e.isExternalModuleAugmentation(r)) + return true; + var o = zi(r); + return !(e.getCombinedModifierFlags(r) & 1) && !(r.kind !== 265 && o.kind !== 305 && o.flags & 16777216) ? Cu(o) : wu(o); + case 167: + case 166: + case 172: + case 173: + case 169: + case 168: + if (e.hasEffectiveModifier(r, 24)) + return false; + case 171: + case 175: + case 174: + case 176: + case 164: + case 262: + case 179: + case 180: + case 182: + case 178: + case 183: + case 184: + case 187: + case 188: + case 191: + case 197: + return wu(r.parent); + case 267: + case 268: + case 270: + return false; + case 163: + case 305: + case 264: + return true; + case 271: + return false; + default: + return false; + } + } + } + function V_(r, i) { + var t; + r.parent && r.parent.kind === 271 ? t = es(r, r.escapedText, 2998271, void 0, r, false) : r.parent.kind === 275 && (t = Vu(r.parent, 2998271)); + var o, s; + return t && (s = new e.Set(), s.add(y(t)), u(t.declarations)), o; + function u(h) { + e.forEach(h, function(z) { + var me = Au(z) || z; + if (i ? va(z).isVisible = true : (o = o || [], e.pushIfUnique(o, me)), e.isInternalModuleImportEqualsDeclaration(z)) { + var Me = z.moduleReference, $e = e.getFirstIdentifier(Me), tr = es(z, $e.escapedText, 901119, void 0, void 0, false); + tr && s && e.tryAddToSet(s, y(tr)) && u(tr.declarations); + } + }); + } + } + function yu(r, i) { + var t = v(r, i); + if (t >= 0) { + for (var o = eu.length, s = t; s < o; s++) + Ws[s] = false; + return false; + } + return eu.push(r), Ws.push(true), pu.push(i), true; + } + function v(r, i) { + for (var t = eu.length - 1; t >= 0; t--) { + if (sr(eu[t], pu[t])) + return -1; + if (eu[t] === r && pu[t] === i) + return t; + } + return -1; + } + function sr(r, i) { + switch (i) { + case 0: + return !!Aa(r).type; + case 5: + return !!va(r).resolvedEnumType; + case 2: + return !!Aa(r).declaredType; + case 1: + return !!r.resolvedBaseConstructorType; + case 3: + return !!r.resolvedReturnType; + case 4: + return !!r.immediateBaseConstraint; + case 6: + return !!r.resolvedTypeArguments; + case 7: + return !!r.baseTypesResolved; + case 8: + return !!Aa(r).writeType; + } + return e.Debug.assertNever(i); + } + function fi() { + return eu.pop(), pu.pop(), Ws.pop(); + } + function zi(r) { + return e.findAncestor(e.getRootDeclaration(r), function(i) { + switch (i.kind) { + case 254: + case 255: + case 270: + case 269: + case 268: + case 267: + return false; + default: + return true; + } + }).parent; + } + function Sa(r) { + var i = go(Ys(r)); + return i.typeParameters ? Yf(i, e.map(i.typeParameters, function(t) { + return Oe; + })) : i; + } + function da(r, i) { + var t = bi(r, i); + return t ? Jt(t) : void 0; + } + function Ha(r, i) { + var t; + return da(r, i) || ((t = Xo(r, i)) === null || t === void 0 ? void 0 : t.type) || gr; + } + function ta(r) { + return r && (r.flags & 1) !== 0; + } + function nn(r) { + return r === Pe || !!(r.flags & 1 && r.aliasSymbol); + } + function Wo(r, i) { + if (i !== 0) + return G_(r, false, i); + var t = Et(r); + return t && Aa(t).type || G_(r, false, i); + } + function Lo(r, i, t) { + if (r = ec(r, function(li) { + return !(li.flags & 98304); + }), r.flags & 131072) + return Ba; + if (r.flags & 1048576) + return Ss(r, function(li) { + return Lo(li, i, t); + }); + for (var o = Pa(e.map(i, Z_)), s = [], u = [], h = 0, z = uo(r); h < z.length; h++) { + var me = z[h], Me = om(me, 8576); + !ao(Me, o) && !(e.getDeclarationModifierFlagsFromSymbol(me) & 24) && Eh(me) ? s.push(me) : u.push(Me); + } + if (Ad(r) || qp(o)) { + if (u.length && (o = Pa(Ve([o], u, true))), o.flags & 131072) + return r; + var $e = L3(); + return $e ? am($e, [r, o]) : Pe; + } + for (var tr = e.createSymbolTable(), dr = 0, Dr = s; dr < Dr.length; dr++) { + var me = Dr[dr]; + tr.set(me.escapedName, xD(me, false)); + } + var Qr = rs(t, tr, e.emptyArray, e.emptyArray, Hn(r)); + return Qr.objectFlags |= 4194304, Qr; + } + function oc(r) { + return !!(r.flags & 465829888) && fs5(uc(r) || gr, 32768); + } + function uu(r) { + var i = rg(r, oc) ? Ss(r, function(t) { + return t.flags & 465829888 ? Hd(t) : t; + }) : r; + return Ks(i, 524288); + } + function is(r, i) { + var t = au(r); + return t ? up(t, i) : i; + } + function au(r) { + var i = Ou(r); + if (i && i.flowNode) { + var t = sf(r); + if (t) { + var o = e.setTextRange(e.parseNodeFactory.createStringLiteral(t), r), s = e.isLeftHandSideExpression(i) ? i : e.parseNodeFactory.createParenthesizedExpression(i), u = e.setTextRange(e.parseNodeFactory.createElementAccessExpression(s, o), r); + return e.setParent(o, u), e.setParent(u, r), s !== i && e.setParent(s, u), u.flowNode = i.flowNode, u; + } + } + } + function Ou(r) { + var i = r.parent.parent; + switch (i.kind) { + case 203: + case 296: + return au(i); + case 204: + return au(r.parent); + case 254: + return i.initializer; + case 221: + return i.right; + } + } + function sf(r) { + var i = r.parent; + return r.kind === 203 && i.kind === 201 ? lu(r.propertyName || r.name) : r.kind === 296 || r.kind === 297 ? lu(r.name) : "" + i.elements.indexOf(r); + } + function lu(r) { + var i = Z_(r); + return i.flags & 384 ? "" + i.value : void 0; + } + function cf(r) { + var i = r.dotDotDotToken ? 64 : 0, t = Wo(r.parent.parent, i); + return t && uf(r, t); + } + function uf(r, i) { + if (ta(i)) + return i; + var t = r.parent; + Ye && r.flags & 16777216 && e.isParameterDeclaration(r) ? i = C_(i) : Ye && t.parent.initializer && !(cp(nC(t.parent.initializer)) & 65536) && (i = Ks(i, 524288)); + var o; + if (t.kind === 201) + if (r.dotDotDotToken) { + if (i = bu(i), i.flags & 2 || !Dy(i)) + return Xr(r, e.Diagnostics.Rest_types_may_only_be_created_from_object_types), Pe; + for (var s = [], u = 0, h = t.elements; u < h.length; u++) { + var z = h[u]; + z.dotDotDotToken || s.push(z.propertyName || z.name); + } + o = Lo(i, s, r.symbol); + } else { + var me = r.propertyName || r.name, Me = Z_(me), $e = Jc(i, Me, 32, me); + o = is(r, $e); + } + else { + var tr = N_(65 | (r.dotDotDotToken ? 0 : 128), i, Tr, t), dr = t.elements.indexOf(r); + if (r.dotDotDotToken) + o = gf(i, Yn) ? Ss(i, function(Qr) { + return Zm(Qr, dr); + }) : Zs(tr); + else if (sp(i)) { + var Me = If(dr), Dr = 32 | (pm(r) ? 16 : 0), $e = ep(i, Me, Dr, r.name) || Pe; + o = is(r, $e); + } else + o = tr; + } + return r.initializer ? e.getEffectiveTypeAnnotationNode(e.walkUpBindingElementsAndPatterns(r)) ? Ye && !(ju(wy(r, 0)) & 32768) ? uu(o) : o : _S(r, Pa([uu(o), wy(r, 0)], 2)) : o; + } + function K_(r) { + var i = e.getJSDocType(r); + if (i) + return Va(i); + } + function Jp(r) { + var i = e.skipParentheses(r, true); + return i.kind === 104 || i.kind === 79 && Dl(i) === mi; + } + function Hf(r) { + var i = e.skipParentheses(r, true); + return i.kind === 204 && i.elements.length === 0; + } + function kc(r, i, t) { + return i === void 0 && (i = false), t === void 0 && (t = true), Ye && t ? i_(r, i) : r; + } + function G_(r, i, t) { + if (e.isVariableDeclaration(r) && r.parent.parent.kind === 243) { + var o = ql(jb(yn(r.parent.parent.expression, t))); + return o.flags & 4456448 ? Vx(o) : Li; + } + if (e.isVariableDeclaration(r) && r.parent.parent.kind === 244) { + var s = r.parent.parent; + return By(s) || Oe; + } + if (e.isBindingPattern(r.parent)) + return cf(r); + var u = e.isPropertyDeclaration(r) || e.isPropertySignature(r), h = i && (u && !!r.questionToken || e.isParameter(r) && (!!r.questionToken || Cd(r)) || Vm(r)), z = Rl(r); + if (z) + return kc(z, u, h); + if ((n || e.isInJSFile(r)) && e.isVariableDeclaration(r) && !e.isBindingPattern(r.name) && !(e.getCombinedModifierFlags(r) & 1) && !(r.flags & 16777216)) { + if (!(e.getCombinedNodeFlags(r) & 2) && (!r.initializer || Jp(r.initializer))) + return nr; + if (r.initializer && Hf(r.initializer)) + return So; + } + if (e.isParameter(r)) { + var me = r.parent; + if (me.kind === 173 && Td(me)) { + var Me = e.getDeclarationOfKind(Et(r.parent), 172); + if (Me) { + var $e = yl(Me), tr = qS(me); + return tr && r === tr ? (e.Debug.assert(!tr.type), Jt($e.thisParameter)) : yo($e); + } + } + if (e.isInJSFile(r)) { + var dr = Km(me, r); + if (dr) + return dr; + } + var Dr = r.symbol.escapedName === "this" ? SC(me) : TC(r); + if (Dr) + return kc(Dr, false, h); + } + if (e.hasOnlyExpressionInitializer(r) && !!r.initializer) { + if (e.isInJSFile(r) && !e.isParameter(r)) { + var Qr = ha(r, Et(r), e.getDeclaredExpandoInitializer(r)); + if (Qr) + return Qr; + } + var Dr = _S(r, wy(r, t)); + return kc(Dr, u, h); + } + if (e.isPropertyDeclaration(r) && (n || e.isInJSFile(r))) + if (e.hasStaticModifier(r)) { + var Ti = e.filter(r.parent.members, e.isClassStaticBlockDeclaration), Dr = Ti.length ? Mi(r.symbol, Ti) : e.getEffectiveModifierFlags(r) & 2 ? Lh(r.symbol) : void 0; + return Dr && kc(Dr, true, h); + } else { + var li = Tf(r.parent), Dr = li ? st(r.symbol, li) : e.getEffectiveModifierFlags(r) & 2 ? Lh(r.symbol) : void 0; + return Dr && kc(Dr, true, h); + } + if (e.isJsxAttribute(r)) + return Dt; + if (e.isBindingPattern(r.name)) + return Qu(r.name, false, true); + } + function Le(r) { + if (r.valueDeclaration && e.isBinaryExpression(r.valueDeclaration)) { + var i = Aa(r); + return i.isConstructorDeclaredProperty === void 0 && (i.isConstructorDeclaredProperty = false, i.isConstructorDeclaredProperty = !!ri(r) && e.every(r.declarations, function(t) { + return e.isBinaryExpression(t) && s0(t) && (t.left.kind !== 207 || e.isStringOrNumericLiteralLike(t.left.argumentExpression)) && !Na(void 0, t, r, t); + })), i.isConstructorDeclaredProperty; + } + return false; + } + function Nr(r) { + var i = r.valueDeclaration; + return i && e.isPropertyDeclaration(i) && !e.getEffectiveTypeAnnotationNode(i) && !i.initializer && (n || e.isInJSFile(i)); + } + function ri(r) { + if (!!r.declarations) + for (var i = 0, t = r.declarations; i < t.length; i++) { + var o = t[i], s = e.getThisContainer(o, false); + if (s && (s.kind === 171 || Sl(s))) + return s; + } + } + function di(r) { + var i = e.getSourceFileOfNode(r.declarations[0]), t = e.unescapeLeadingUnderscores(r.escapedName), o = r.declarations.every(function(u) { + return e.isInJSFile(u) && e.isAccessExpression(u) && e.isModuleExportsAccessExpression(u.expression); + }), s = o ? e.factory.createPropertyAccessExpression(e.factory.createPropertyAccessExpression(e.factory.createIdentifier("module"), e.factory.createIdentifier("exports")), t) : e.factory.createPropertyAccessExpression(e.factory.createIdentifier("exports"), t); + return o && e.setParent(s.expression.expression, s.expression), e.setParent(s.expression, s), e.setParent(s, i), s.flowNode = i.endFlowNode, up(s, nr, Tr); + } + function Mi(r, i) { + for (var t = e.startsWith(r.escapedName, "__#") ? e.factory.createPrivateIdentifier(r.escapedName.split("@")[1]) : e.unescapeLeadingUnderscores(r.escapedName), o = 0, s = i; o < s.length; o++) { + var u = s[o], h = e.factory.createPropertyAccessExpression(e.factory.createThis(), t); + e.setParent(h.expression, h), e.setParent(h, u), h.flowNode = u.returnFlowNode; + var z = ra(h, r); + if (n && (z === nr || z === So) && Xr(r.valueDeclaration, e.Diagnostics.Member_0_implicitly_has_an_1_type, tn(r), Ot(z)), !gf(z, d0)) + return kv(z); + } + } + function st(r, i) { + var t = e.startsWith(r.escapedName, "__#") ? e.factory.createPrivateIdentifier(r.escapedName.split("@")[1]) : e.unescapeLeadingUnderscores(r.escapedName), o = e.factory.createPropertyAccessExpression(e.factory.createThis(), t); + e.setParent(o.expression, o), e.setParent(o, i), o.flowNode = i.returnFlowNode; + var s = ra(o, r); + return n && (s === nr || s === So) && Xr(r.valueDeclaration, e.Diagnostics.Member_0_implicitly_has_an_1_type, tn(r), Ot(s)), gf(s, d0) ? void 0 : kv(s); + } + function ra(r, i) { + var t = (i == null ? void 0 : i.valueDeclaration) && (!Nr(i) || e.getEffectiveModifierFlags(i.valueDeclaration) & 2) && Lh(i) || Tr; + return up(r, nr, t); + } + function Ta(r, i) { + var t = e.getAssignedExpandoInitializer(r.valueDeclaration); + if (t) { + var o = e.getJSDocTypeTag(t); + if (o && o.typeExpression) + return Va(o.typeExpression); + var s = r.valueDeclaration && ha(r.valueDeclaration, r, t); + return s || Hp(Os(t)); + } + var u, h = false, z = false; + if (Le(r) && (u = st(r, ri(r))), !u) { + var me = void 0; + if (r.declarations) { + for (var Me = void 0, $e = 0, tr = r.declarations; $e < tr.length; $e++) { + var dr = tr[$e], Dr = e.isBinaryExpression(dr) || e.isCallExpression(dr) ? dr : e.isAccessExpression(dr) ? e.isBinaryExpression(dr.parent) ? dr.parent : dr : void 0; + if (!!Dr) { + var Qr = e.isAccessExpression(Dr) ? e.getAssignmentDeclarationPropertyAccessKind(Dr) : e.getAssignmentDeclarationKind(Dr); + (Qr === 4 || e.isBinaryExpression(Dr) && s0(Dr, Qr)) && (co(Dr) ? h = true : z = true), e.isCallExpression(Dr) || (Me = Na(Me, Dr, r, dr)), Me || (me || (me = [])).push(e.isBinaryExpression(Dr) || e.isCallExpression(Dr) ? In(r, i, Dr, Qr) : ui); + } + } + u = Me; + } + if (!u) { + if (!e.length(me)) + return Pe; + var li = h && r.declarations ? ts(me, r.declarations) : void 0; + if (z) { + var Ti = Lh(r); + Ti && ((li || (li = [])).push(Ti), h = true); + } + var Ci = e.some(li, function(Zi) { + return !!(Zi.flags & -98305); + }) ? li : me; + u = Pa(Ci); + } + } + var $i = $c(kc(u, false, z && !h)); + return r.valueDeclaration && ec($i, function(Zi) { + return !!(Zi.flags & -98305); + }) === ui ? (Xp(r.valueDeclaration, Oe), Oe) : $i; + } + function ha(r, i, t) { + var o, s; + if (!(!e.isInJSFile(r) || !t || !e.isObjectLiteralExpression(t) || t.properties.length)) { + for (var u = e.createSymbolTable(); e.isBinaryExpression(r) || e.isPropertyAccessExpression(r); ) { + var h = Et(r); + !((o = h == null ? void 0 : h.exports) === null || o === void 0) && o.size && gu(u, h.exports), r = e.isBinaryExpression(r) ? r.parent : r.parent.parent; + } + var z = Et(r); + !((s = z == null ? void 0 : z.exports) === null || s === void 0) && s.size && gu(u, z.exports); + var me = rs(i, u, e.emptyArray, e.emptyArray, e.emptyArray); + return me.objectFlags |= 4096, me; + } + } + function Na(r, i, t, o) { + var s, u = e.getEffectiveTypeAnnotationNode(i.parent); + if (u) { + var h = $c(Va(u)); + if (r) + !nn(r) && !nn(h) && !wf(r, h) && v6(void 0, r, o, h); + else + return h; + } + if (!((s = t.parent) === null || s === void 0) && s.valueDeclaration) { + var z = e.getEffectiveTypeAnnotationNode(t.parent.valueDeclaration); + if (z) { + var me = bi(Va(z), t.escapedName); + if (me) + return ml(me); + } + } + return r; + } + function In(r, i, t, o) { + if (e.isCallExpression(t)) { + if (i) + return Jt(i); + var s = Os(t.arguments[2]), u = da(s, "value"); + if (u) + return u; + var h = da(s, "get"); + if (h) { + var z = ig(h); + if (z) + return yo(z); + } + var me = da(s, "set"); + if (me) { + var Me = ig(me); + if (Me) + return aS(Me); + } + return Oe; + } + if (qo(t.left, t.right)) + return Oe; + var $e = o === 1 && (e.isPropertyAccessExpression(t.left) || e.isElementAccessExpression(t.left)) && (e.isModuleExportsAccessExpression(t.left.expression) || e.isIdentifier(t.left.expression) && e.isExportsIdentifier(t.left.expression)), tr = i ? Jt(i) : $e ? jc(Os(t.right)) : Hp(Os(t.right)); + if (tr.flags & 524288 && o === 2 && r.escapedName === "export=") { + var dr = Ru(tr), Dr = e.createSymbolTable(); + e.copyEntries(dr.members, Dr); + var Qr = Dr.size; + i && !i.exports && (i.exports = e.createSymbolTable()), (i || r).exports.forEach(function(Ti, Ci) { + var $i, Zi = Dr.get(Ci); + if (Zi && Zi !== Ti) + if (Ti.flags & 111551 && Zi.flags & 111551) { + if (Ti.valueDeclaration && Zi.valueDeclaration && e.getSourceFileOfNode(Ti.valueDeclaration) !== e.getSourceFileOfNode(Zi.valueDeclaration)) { + var qt = e.unescapeLeadingUnderscores(Ti.escapedName), Nt = (($i = e.tryCast(Zi.valueDeclaration, e.isNamedDeclaration)) === null || $i === void 0 ? void 0 : $i.name) || Zi.valueDeclaration; + e.addRelatedInfo(Xr(Ti.valueDeclaration, e.Diagnostics.Duplicate_identifier_0, qt), e.createDiagnosticForNode(Nt, e.Diagnostics._0_was_also_declared_here, qt)), e.addRelatedInfo(Xr(Nt, e.Diagnostics.Duplicate_identifier_0, qt), e.createDiagnosticForNode(Ti.valueDeclaration, e.Diagnostics._0_was_also_declared_here, qt)); + } + var Ra = oo(Ti.flags | Zi.flags, Ci); + Ra.type = Pa([Jt(Ti), Jt(Zi)]), Ra.valueDeclaration = Zi.valueDeclaration, Ra.declarations = e.concatenate(Zi.declarations, Ti.declarations), Dr.set(Ci, Ra); + } else + Dr.set(Ci, Bf(Ti, Zi)); + else + Dr.set(Ci, Ti); + }); + var li = rs(Qr !== Dr.size ? void 0 : dr.symbol, Dr, dr.callSignatures, dr.constructSignatures, dr.indexInfos); + return li.objectFlags |= e.getObjectFlags(tr) & 4096, li.symbol && li.symbol.flags & 32 && tr === aa(li.symbol) && (li.objectFlags |= 16777216), li; + } + return Jh(tr) ? (Xp(t, mo), mo) : tr; + } + function qo(r, i) { + return e.isPropertyAccessExpression(r) && r.expression.kind === 108 && e.forEachChildRecursively(i, function(t) { + return zs(r, t); + }); + } + function co(r) { + var i = e.getThisContainer(r, false); + return i.kind === 171 || i.kind === 256 || i.kind === 213 && !e.isPrototypePropertyAssignment(i.parent); + } + function ts(r, i) { + return e.Debug.assert(r.length === i.length), r.filter(function(t, o) { + var s = i[o], u = e.isBinaryExpression(s) ? s : e.isBinaryExpression(s.parent) ? s.parent : void 0; + return u && co(u); + }); + } + function vs(r, i, t) { + if (r.initializer) { + var o = e.isBindingPattern(r.name) ? Qu(r.name, true, false) : gr; + return kc(_S(r, wy(r, 0, o))); + } + return e.isBindingPattern(r.name) ? Qu(r.name, i, t) : (t && !Yu(r) && Xp(r, Oe), i ? fr : Oe); + } + function Ac(r, i, t) { + var o = e.createSymbolTable(), s, u = 131200; + e.forEach(r.elements, function(z) { + var me = z.propertyName || z.name; + if (z.dotDotDotToken) { + s = zl(Li, Oe, false); + return; + } + var Me = Z_(me); + if (!_f(Me)) { + u |= 512; + return; + } + var $e = pf(Me), tr = 4 | (z.initializer ? 16777216 : 0), dr = oo(tr, $e); + dr.type = vs(z, i, t), dr.bindingElement = z, o.set(dr.escapedName, dr); + }); + var h = rs(void 0, o, e.emptyArray, e.emptyArray, s ? [s] : e.emptyArray); + return h.objectFlags |= u, i && (h.pattern = r, h.objectFlags |= 131072), h; + } + function Is(r, i, t) { + var o = r.elements, s = e.lastOrUndefined(o), u = s && s.kind === 203 && s.dotDotDotToken ? s : void 0; + if (o.length === 0 || o.length === 1 && u) + return Ae >= 2 ? B3(Oe) : mo; + var h = e.map(o, function($e) { + return e.isOmittedExpression($e) ? Oe : vs($e, i, t); + }), z = e.findLastIndex(o, function($e) { + return !($e === u || e.isOmittedExpression($e) || pm($e)); + }, o.length - 1) + 1, me = e.map(o, function($e, tr) { + return $e === u ? 4 : tr >= z ? 2 : 1; + }), Me = Wl(h, me); + return i && (Me = ux(Me), Me.pattern = r, Me.objectFlags |= 131072), Me; + } + function Qu(r, i, t) { + return i === void 0 && (i = false), t === void 0 && (t = false), r.kind === 201 ? Ac(r, i, t) : Is(r, i, t); + } + function sc(r, i) { + return Mc(G_(r, true, 0), r, i); + } + function bc(r) { + var i = Et(r), t = x3(false); + return t && i && i === t; + } + function Mc(r, i, t) { + return r ? (r.flags & 4096 && bc(i.parent) && (r = CD(i)), t && Kh(i, r), r.flags & 8192 && (e.isBindingElement(i) || !i.type) && r.symbol !== Et(i) && (r = Ki), $c(r)) : (r = e.isParameter(i) && i.dotDotDotToken ? mo : Oe, t && (Yu(i) || Xp(i, r)), r); + } + function Yu(r) { + var i = e.getRootDeclaration(r), t = i.kind === 164 ? i.parent : i; + return I0(t); + } + function Rl(r) { + var i = e.getEffectiveTypeAnnotationNode(r); + if (i) + return Va(i); + } + function Lc(r) { + var i = Aa(r); + if (!i.type) { + var t = _(r); + i.type || (i.type = t); + } + return i.type; + } + function _(r) { + if (r.flags & 4194304) + return Sa(r); + if (r === qr) + return Oe; + if (r.flags & 134217728 && r.valueDeclaration) { + var i = Et(e.getSourceFileOfNode(r.valueDeclaration)), t = oo(i.flags, "exports"); + t.declarations = i.declarations ? i.declarations.slice() : [], t.parent = r, t.target = i, i.valueDeclaration && (t.valueDeclaration = i.valueDeclaration), i.members && (t.members = new e.Map(i.members)), i.exports && (t.exports = new e.Map(i.exports)); + var o = e.createSymbolTable(); + return o.set("exports", t), rs(r, o, e.emptyArray, e.emptyArray, e.emptyArray); + } + e.Debug.assertIsDefined(r.valueDeclaration); + var s = r.valueDeclaration; + if (e.isCatchClauseVariableDeclarationOrBindingElement(s)) { + var u = e.getEffectiveTypeAnnotationNode(s); + if (u === void 0) + return be ? gr : Oe; + var h = Bd(u); + return ta(h) || h === gr ? h : Pe; + } + if (e.isSourceFile(s) && e.isJsonSourceFile(s)) + return s.statements.length ? $c(Hp(yn(s.statements[0].expression))) : Ba; + if (e.isAccessor(s)) + return rt(r); + if (!yu(r, 0)) + return r.flags & 512 && !(r.flags & 67108864) ? vo(r) : lg(r); + var z; + if (s.kind === 271) + z = Mc(Rl(s) || Os(s.expression), s); + else if (e.isBinaryExpression(s) || e.isInJSFile(s) && (e.isCallExpression(s) || (e.isPropertyAccessExpression(s) || e.isBindableStaticElementAccessExpression(s)) && e.isBinaryExpression(s.parent))) + z = Ta(r); + else if (e.isPropertyAccessExpression(s) || e.isElementAccessExpression(s) || e.isIdentifier(s) || e.isStringLiteralLike(s) || e.isNumericLiteral(s) || e.isClassDeclaration(s) || e.isFunctionDeclaration(s) || e.isMethodDeclaration(s) && !e.isObjectLiteralMethod(s) || e.isMethodSignature(s) || e.isSourceFile(s)) { + if (r.flags & 9136) + return vo(r); + z = e.isBinaryExpression(s.parent) ? Ta(r) : Rl(s) || Oe; + } else if (e.isPropertyAssignment(s)) + z = Rl(s) || Kk(s); + else if (e.isJsxAttribute(s)) + z = Rl(s) || OC(s); + else if (e.isShorthandPropertyAssignment(s)) + z = Rl(s) || Dm(s.name, 0); + else if (e.isObjectLiteralMethod(s)) + z = Rl(s) || Gk(s, 0); + else if (e.isParameter(s) || e.isPropertyDeclaration(s) || e.isPropertySignature(s) || e.isVariableDeclaration(s) || e.isBindingElement(s) || e.isJSDocPropertyLikeTag(s)) + z = sc(s, true); + else if (e.isEnumDeclaration(s)) + z = vo(r); + else if (e.isEnumMember(s)) + z = H_(r); + else + return e.Debug.fail("Unhandled declaration kind! " + e.Debug.formatSyntaxKind(s.kind) + " for " + e.Debug.formatSymbol(r)); + return fi() ? z : r.flags & 512 && !(r.flags & 67108864) ? vo(r) : lg(r); + } + function W(r) { + if (r) + if (r.kind === 172) { + var i = e.getEffectiveReturnTypeNode(r); + return i; + } else { + var t = e.getEffectiveSetAccessorTypeAnnotationNode(r); + return t; + } + } + function Te(r) { + var i = W(r); + return i && Va(i); + } + function cr(r) { + var i = qS(r); + return i && i.symbol; + } + function ni(r) { + return T_(yl(r)); + } + function rt(r) { + var i = Aa(r); + if (!i.type) { + if (!yu(r, 0)) + return Pe; + var t = e.getDeclarationOfKind(r, 172), o = e.getDeclarationOfKind(r, 173), s = t && e.isInJSFile(t) && K_(t) || Te(t) || Te(o) || t && t.body && C0(t); + s || (o && !I0(o) ? Ic(n, o, e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation, tn(r)) : t && !I0(t) && Ic(n, t, e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation, tn(r)), s = Oe), fi() || (W(t) ? Xr(t, e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation, tn(r)) : W(o) ? Xr(o, e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation, tn(r)) : t && n && Xr(t, e.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, tn(r)), s = Oe), i.type = s; + } + return i.type; + } + function yt(r) { + var i = Aa(r); + if (!i.writeType) { + if (!yu(r, 8)) + return Pe; + var t = e.getDeclarationOfKind(r, 173), o = Te(t); + fi() || (W(t) && Xr(t, e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation, tn(r)), o = Oe), i.writeType = o || rt(r); + } + return i.writeType; + } + function Xa(r) { + var i = Bl(aa(r)); + return i.flags & 8650752 ? i : i.flags & 2097152 ? e.find(i.types, function(t) { + return !!(t.flags & 8650752); + }) : void 0; + } + function vo(r) { + var i = Aa(r), t = i; + if (!i.type) { + var o = r.valueDeclaration && T0(r.valueDeclaration, false); + if (o) { + var s = iS(r, o); + s && (r = i = s); + } + t.type = i.type = Vs(r); + } + return i.type; + } + function Vs(r) { + var i = r.valueDeclaration; + if (r.flags & 1536 && e.isShorthandAmbientModuleSymbol(r)) + return Oe; + if (i && (i.kind === 221 || e.isAccessExpression(i) && i.parent.kind === 221)) + return Ta(r); + if (r.flags & 512 && i && e.isSourceFile(i) && i.commonJsModuleIndicator) { + var t = Us(r); + if (t !== r) { + if (!yu(r, 0)) + return Pe; + var o = so(r.exports.get("export=")), s = Ta(o, o === t ? void 0 : t); + return fi() ? s : lg(r); + } + } + var u = tu(16, r); + if (r.flags & 32) { + var h = Xa(r); + return h ? Do([u, h]) : u; + } else + return Ye && r.flags & 16777216 ? i_(u) : u; + } + function H_(r) { + var i = Aa(r); + return i.type || (i.type = hu(r)); + } + function y_(r) { + var i = Aa(r); + if (!i.type) { + var t = Ps(r), o = r.declarations && Ec(ru(r), true), s = e.firstDefined(o == null ? void 0 : o.declarations, function(u) { + return e.isExportAssignment(u) ? Rl(u) : void 0; + }); + i.type = (o == null ? void 0 : o.declarations) && z0(o.declarations) && r.declarations.length ? di(o) : z0(r.declarations) ? nr : s || (t.flags & 111551 ? Jt(t) : Pe); + } + return i.type; + } + function Dd(r) { + var i = Aa(r); + return i.type || (i.type = un(Jt(i.target), i.mapper)); + } + function jp(r) { + var i = Aa(r); + return i.writeType || (i.writeType = un(Vg(i.target), i.mapper)); + } + function lg(r) { + var i = r.valueDeclaration; + return e.getEffectiveTypeAnnotationNode(i) ? (Xr(r.valueDeclaration, e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation, tn(r)), Pe) : (n && (i.kind !== 164 || i.initializer) && Xr(r.valueDeclaration, e.Diagnostics._0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer, tn(r)), Oe); + } + function Om(r) { + var i = Aa(r); + return i.type || (e.Debug.assertIsDefined(i.deferralParent), e.Debug.assertIsDefined(i.deferralConstituents), i.type = i.deferralParent.flags & 1048576 ? Pa(i.deferralConstituents) : Do(i.deferralConstituents)), i.type; + } + function Fm(r) { + var i = Aa(r); + return !i.writeType && i.deferralWriteConstituents && (e.Debug.assertIsDefined(i.deferralParent), e.Debug.assertIsDefined(i.deferralConstituents), i.writeType = i.deferralParent.flags & 1048576 ? Pa(i.deferralWriteConstituents) : Do(i.deferralWriteConstituents)), i.writeType; + } + function Vg(r) { + var i = e.getCheckFlags(r); + return r.flags & 4 ? i & 2 ? i & 65536 ? Fm(r) || Om(r) : r.writeType || r.type : Jt(r) : r.flags & 98304 ? i & 1 ? jp(r) : yt(r) : Jt(r); + } + function Jt(r) { + var i = e.getCheckFlags(r); + return i & 65536 ? Om(r) : i & 1 ? Dd(r) : i & 262144 ? J1(r) : i & 8192 ? qw(r) : r.flags & 7 ? Lc(r) : r.flags & 9136 ? vo(r) : r.flags & 8 ? H_(r) : r.flags & 98304 ? rt(r) : r.flags & 2097152 ? y_(r) : Pe; + } + function ml(r) { + return kg(Jt(r), !!(r.flags & 16777216)); + } + function Xf(r, i) { + return r !== void 0 && i !== void 0 && (e.getObjectFlags(r) & 4) !== 0 && r.target === i; + } + function bd(r) { + return e.getObjectFlags(r) & 4 ? r.target : r; + } + function lf(r, i) { + return t(r); + function t(o) { + if (e.getObjectFlags(o) & 7) { + var s = bd(o); + return s === i || e.some(Qc(s), t); + } else if (o.flags & 2097152) + return e.some(o.types, t); + return false; + } + } + function Kg(r, i) { + for (var t = 0, o = i; t < o.length; t++) { + var s = o[t]; + r = e.appendIfUnique(r, Js(Et(s))); + } + return r; + } + function kf(r, i) { + for (; ; ) { + if (r = r.parent, r && e.isBinaryExpression(r)) { + var t = e.getAssignmentDeclarationKind(r); + if (t === 6 || t === 3) { + var o = Et(r.left); + o && o.parent && !e.findAncestor(o.parent.valueDeclaration, function(me) { + return r === me; + }) && (r = o.parent.valueDeclaration); + } + } + if (!r) + return; + switch (r.kind) { + case 257: + case 226: + case 258: + case 174: + case 175: + case 168: + case 179: + case 180: + case 317: + case 256: + case 169: + case 213: + case 214: + case 259: + case 344: + case 345: + case 339: + case 338: + case 195: + case 189: { + var s = kf(r, i); + if (r.kind === 195) + return e.append(s, Js(Et(r.typeParameter))); + if (r.kind === 189) + return e.concatenate(s, eE(r)); + var u = Kg(s, e.getEffectiveTypeParameterDeclarations(r)), h = i && (r.kind === 257 || r.kind === 226 || r.kind === 258 || Sl(r)) && aa(Et(r)).thisType; + return h ? e.append(u, h) : u; + } + case 340: + var z = e.getParameterSymbolFromJSDoc(r); + z && (r = z.valueDeclaration); + break; + case 320: { + var s = kf(r, i); + return r.tags ? Kg(s, e.flatMap(r.tags, function(Me) { + return e.isJSDocTemplateTag(Me) ? Me.typeParameters : void 0; + })) : s; + } + } + } + } + function Gg(r) { + var i = r.flags & 32 ? r.valueDeclaration : e.getDeclarationOfKind(r, 258); + return e.Debug.assert(!!i, "Class was missing valueDeclaration -OR- non-class had no interface declarations"), kf(i); + } + function Af(r) { + if (!!r.declarations) { + for (var i, t = 0, o = r.declarations; t < o.length; t++) { + var s = o[t]; + if (s.kind === 258 || s.kind === 257 || s.kind === 226 || Sl(s) || e.isTypeAlias(s)) { + var u = s; + i = Kg(i, e.getEffectiveTypeParameterDeclarations(u)); + } + } + return i; + } + } + function Hg(r) { + return e.concatenate(Gg(r), Af(r)); + } + function Wd(r) { + var i = ot(r, 1); + if (i.length === 1) { + var t = i[0]; + if (!t.typeParameters && t.parameters.length === 1 && H(t)) { + var o = mv(t.parameters[0]); + return ta(o) || KD(o) === Oe; + } + } + return false; + } + function qd(r) { + if (ot(r, 1).length > 0) + return true; + if (r.flags & 8650752) { + var i = uc(r); + return !!i && Wd(i); + } + return false; + } + function fg(r) { + var i = e.getClassLikeDeclarationOfSymbol(r.symbol); + return i && e.getEffectiveBaseTypeNode(i); + } + function Mm(r, i, t) { + var o = e.length(i), s = e.isInJSFile(t); + return e.filter(ot(r, 1), function(u) { + return (s || o >= Ul(u.typeParameters)) && o <= e.length(u.typeParameters); + }); + } + function Xg(r, i, t) { + var o = Mm(r, i, t), s = e.map(i, Va); + return e.sameMap(o, function(u) { + return e.some(u.typeParameters) ? Xm(u, s, e.isInJSFile(t)) : u; + }); + } + function Bl(r) { + if (!r.resolvedBaseConstructorType) { + var i = e.getClassLikeDeclarationOfSymbol(r.symbol), t = i && e.getEffectiveBaseTypeNode(i), o = fg(r); + if (!o) + return r.resolvedBaseConstructorType = Tr; + if (!yu(r, 1)) + return Pe; + var s = yn(o.expression); + if (t && o !== t && (e.Debug.assert(!t.typeArguments), yn(t.expression)), s.flags & 2621440 && Ru(s), !fi()) + return Xr(r.symbol.valueDeclaration, e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_base_expression, tn(r.symbol)), r.resolvedBaseConstructorType = Pe; + if (!(s.flags & 1) && s !== ct && !qd(s)) { + var u = Xr(o.expression, e.Diagnostics.Type_0_is_not_a_constructor_function_type, Ot(s)); + if (s.flags & 262144) { + var h = tm(s), z = gr; + if (h) { + var me = ot(h, 1); + me[0] && (z = yo(me[0])); + } + s.symbol.declarations && e.addRelatedInfo(u, e.createDiagnosticForNode(s.symbol.declarations[0], e.Diagnostics.Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1, tn(s.symbol), Ot(z))); + } + return r.resolvedBaseConstructorType = Pe; + } + r.resolvedBaseConstructorType = s; + } + return r.resolvedBaseConstructorType; + } + function Qg(r) { + var i = e.emptyArray; + if (r.symbol.declarations) + for (var t = 0, o = r.symbol.declarations; t < o.length; t++) { + var s = o[t], u = e.getEffectiveImplementsTypeNodes(s); + if (!!u) + for (var h = 0, z = u; h < z.length; h++) { + var me = z[h], Me = Va(me); + nn(Me) || (i === e.emptyArray ? i = [Me] : i.push(Me)); + } + } + return i; + } + function _g(r, i) { + Xr(r, e.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, Ot(i, void 0, 2)); + } + function Qc(r) { + if (!r.baseTypesResolved) { + if (yu(r, 7) && (r.objectFlags & 8 ? r.resolvedBaseTypes = [Lm(r)] : r.symbol.flags & 96 ? (r.symbol.flags & 32 && Up(r), r.symbol.flags & 64 && It(r)) : e.Debug.fail("type must be class or interface"), !fi() && r.symbol.declarations)) + for (var i = 0, t = r.symbol.declarations; i < t.length; i++) { + var o = t[i]; + (o.kind === 257 || o.kind === 258) && _g(o, r); + } + r.baseTypesResolved = true; + } + return r.resolvedBaseTypes; + } + function Lm(r) { + var i = e.sameMap(r.typeParameters, function(t, o) { + return r.elementFlags[o] & 8 ? Jc(t, nt) : t; + }); + return Zs(Pa(i || e.emptyArray), r.readonly); + } + function Up(r) { + r.resolvedBaseTypes = e.resolvingEmptyArray; + var i = $s(Bl(r)); + if (!(i.flags & 2621441)) + return r.resolvedBaseTypes = e.emptyArray; + var t = fg(r), o, s = i.symbol ? go(i.symbol) : void 0; + if (i.symbol && i.symbol.flags & 32 && Rm(s)) + o = lx(t, i.symbol); + else if (i.flags & 1) + o = i; + else { + var u = Xg(i, t.typeArguments, t); + if (!u.length) + return Xr(t.expression, e.Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments), r.resolvedBaseTypes = e.emptyArray; + o = yo(u[0]); + } + if (nn(o)) + return r.resolvedBaseTypes = e.emptyArray; + var h = bu(o); + if (!ff(h)) { + var z = ei(void 0, o), me = e.chainDiagnosticMessages(z, e.Diagnostics.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members, Ot(h)); + return rn.add(e.createDiagnosticForNodeFromMessageChain(t.expression, me)), r.resolvedBaseTypes = e.emptyArray; + } + return r === h || lf(h, r) ? (Xr(r.symbol.valueDeclaration, e.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, Ot(r, void 0, 2)), r.resolvedBaseTypes = e.emptyArray) : (r.resolvedBaseTypes === e.resolvingEmptyArray && (r.members = void 0), r.resolvedBaseTypes = [h]); + } + function Rm(r) { + var i = r.outerTypeParameters; + if (i) { + var t = i.length - 1, o = xo(r); + return i[t].symbol !== o[t].symbol; + } + return true; + } + function ff(r) { + if (r.flags & 262144) { + var i = uc(r); + if (i) + return ff(i); + } + return !!(r.flags & 67633153 && !Bc(r) || r.flags & 2097152 && e.every(r.types, ff)); + } + function It(r) { + if (r.resolvedBaseTypes = r.resolvedBaseTypes || e.emptyArray, r.symbol.declarations) + for (var i = 0, t = r.symbol.declarations; i < t.length; i++) { + var o = t[i]; + if (o.kind === 258 && e.getInterfaceBaseTypeNodes(o)) + for (var s = 0, u = e.getInterfaceBaseTypeNodes(o); s < u.length; s++) { + var h = u[s], z = bu(Va(h)); + nn(z) || (ff(z) ? r !== z && !lf(z, r) ? r.resolvedBaseTypes === e.emptyArray ? r.resolvedBaseTypes = [z] : r.resolvedBaseTypes.push(z) : _g(o, r) : Xr(h, e.Diagnostics.An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_members)); + } + } + } + function Ma(r) { + if (!r.declarations) + return true; + for (var i = 0, t = r.declarations; i < t.length; i++) { + var o = t[i]; + if (o.kind === 258) { + if (o.flags & 128) + return false; + var s = e.getInterfaceBaseTypeNodes(o); + if (s) + for (var u = 0, h = s; u < h.length; u++) { + var z = h[u]; + if (e.isEntityNameExpression(z.expression)) { + var me = Ds(z.expression, 788968, true); + if (!me || !(me.flags & 64) || aa(me).thisType) + return false; + } + } + } + } + return true; + } + function aa(r) { + var i = Aa(r), t = i; + if (!i.declaredType) { + var o = r.flags & 32 ? 1 : 2, s = iS(r, r.valueDeclaration && F7(r.valueDeclaration)); + s && (r = i = s); + var u = t.declaredType = i.declaredType = tu(o, r), h = Gg(r), z = Af(r); + (h || z || o === 1 || !Ma(r)) && (u.objectFlags |= 4, u.typeParameters = e.concatenate(h, z), u.outerTypeParameters = h, u.localTypeParameters = z, u.instantiations = new e.Map(), u.instantiations.set(Su(u.typeParameters), u), u.target = u, u.resolvedTypeArguments = u.typeParameters, u.thisType = Hc(r), u.thisType.isThisType = true, u.thisType.constraint = u); + } + return i.declaredType; + } + function Ja(r) { + var i, t = Aa(r); + if (!t.declaredType) { + if (!yu(r, 2)) + return Pe; + var o = e.Debug.checkDefined((i = r.declarations) === null || i === void 0 ? void 0 : i.find(e.isTypeAlias), "Type alias symbol with no valid declaration found"), s = e.isJSDocTypeAlias(o) ? o.typeExpression : o.type, u = s ? Va(s) : Pe; + if (fi()) { + var h = Af(r); + h && (t.typeParameters = h, t.instantiations = new e.Map(), t.instantiations.set(Su(h), u)); + } else + u = Pe, o.kind === 339 ? Xr(o.typeExpression.type, e.Diagnostics.Type_alias_0_circularly_references_itself, tn(r)) : Xr(e.isNamedDeclaration(o) ? o.name : o || o, e.Diagnostics.Type_alias_0_circularly_references_itself, tn(r)); + t.declaredType = u; + } + return t.declaredType; + } + function _n(r) { + return e.isStringLiteralLike(r) ? true : r.kind === 221 ? _n(r.left) && _n(r.right) : false; + } + function ro(r) { + var i = r.initializer; + if (!i) + return !(r.flags & 16777216); + switch (i.kind) { + case 10: + case 8: + case 14: + return true; + case 219: + return i.operator === 40 && i.operand.kind === 8; + case 79: + return e.nodeIsMissing(i) || !!Et(r.parent).exports.get(i.escapedText); + case 221: + return _n(i); + default: + return false; + } + } + function as(r) { + var i = Aa(r); + if (i.enumKind !== void 0) + return i.enumKind; + var t = false; + if (r.declarations) + for (var o = 0, s = r.declarations; o < s.length; o++) { + var u = s[o]; + if (u.kind === 260) + for (var h = 0, z = u.members; h < z.length; h++) { + var me = z[h]; + if (me.initializer && e.isStringLiteralLike(me.initializer)) + return i.enumKind = 1; + ro(me) || (t = true); + } + } + return i.enumKind = t ? 0 : 1; + } + function cc(r) { + return r.flags & 1024 && !(r.flags & 1048576) ? go(Ys(r.symbol)) : r; + } + function Sc(r) { + var i = Aa(r); + if (i.declaredType) + return i.declaredType; + if (as(r) === 1) { + Re++; + var t = []; + if (r.declarations) + for (var o = 0, s = r.declarations; o < s.length; o++) { + var u = s[o]; + if (u.kind === 260) + for (var h = 0, z = u.members; h < z.length; h++) { + var me = z[h], Me = H0(me), $e = Sg(NI(Me !== void 0 ? Me : 0, Re, Et(me))); + Aa(Et(me)).declaredType = $e, t.push(jc($e)); + } + } + if (t.length) { + var tr = Pa(t, 1, r, void 0); + return tr.flags & 1048576 && (tr.flags |= 1024, tr.symbol = r), i.declaredType = tr; + } + } + var dr = mc(32); + return dr.symbol = r, i.declaredType = dr; + } + function hu(r) { + var i = Aa(r); + if (!i.declaredType) { + var t = Sc(Ys(r)); + i.declaredType || (i.declaredType = t); + } + return i.declaredType; + } + function Js(r) { + var i = Aa(r); + return i.declaredType || (i.declaredType = Hc(r)); + } + function Qf(r) { + var i = Aa(r); + return i.declaredType || (i.declaredType = go(Ps(r))); + } + function go(r) { + return Vd(r) || Pe; + } + function Vd(r) { + if (r.flags & 96) + return aa(r); + if (r.flags & 524288) + return Ja(r); + if (r.flags & 262144) + return Js(r); + if (r.flags & 384) + return Sc(r); + if (r.flags & 8) + return hu(r); + if (r.flags & 2097152) + return Qf(r); + } + function X_(r) { + switch (r.kind) { + case 130: + case 155: + case 150: + case 147: + case 158: + case 133: + case 151: + case 148: + case 114: + case 153: + case 143: + case 196: + return true; + case 183: + return X_(r.elementType); + case 178: + return !r.typeArguments || r.typeArguments.every(X_); + } + return false; + } + function Sd(r) { + var i = e.getEffectiveConstraintOfTypeParameter(r); + return !i || X_(i); + } + function Yg(r) { + var i = e.getEffectiveTypeAnnotationNode(r); + return i ? X_(i) : !e.hasInitializer(r); + } + function N1(r) { + var i = e.getEffectiveReturnTypeNode(r), t = e.getEffectiveTypeParameterDeclarations(r); + return (r.kind === 171 || !!i && X_(i)) && r.parameters.every(Yg) && t.every(Sd); + } + function P1(r) { + if (r.declarations && r.declarations.length === 1) { + var i = r.declarations[0]; + if (i) + switch (i.kind) { + case 167: + case 166: + return Yg(i); + case 169: + case 168: + case 171: + case 172: + case 173: + return N1(i); + } + } + return false; + } + function Yy(r, i, t) { + for (var o = e.createSymbolTable(), s = 0, u = r; s < u.length; s++) { + var h = u[s]; + o.set(h.escapedName, t && P1(h) ? h : AD(h, i)); + } + return o; + } + function Bm(r, i) { + for (var t = 0, o = i; t < o.length; t++) { + var s = o[t]; + !r.has(s.escapedName) && !$y(s) && r.set(s.escapedName, s); + } + } + function $y(r) { + return !!r.valueDeclaration && e.isPrivateIdentifierClassElementDeclaration(r.valueDeclaration) && e.isStatic(r.valueDeclaration); + } + function Lv(r) { + if (!r.declaredProperties) { + var i = r.symbol, t = Nf(i); + r.declaredProperties = tf(t), r.declaredCallSignatures = e.emptyArray, r.declaredConstructSignatures = e.emptyArray, r.declaredIndexInfos = e.emptyArray, r.declaredCallSignatures = S_(t.get("__call")), r.declaredConstructSignatures = S_(t.get("__new")), r.declaredIndexInfos = ax(i); + } + return r; + } + function _f(r) { + return !!(r.flags & 8576); + } + function Rv(r) { + if (!e.isComputedPropertyName(r) && !e.isElementAccessExpression(r)) + return false; + var i = e.isComputedPropertyName(r) ? r.expression : r.argumentExpression; + return e.isEntityNameExpression(i) && _f(e.isComputedPropertyName(r) ? t_(r) : Os(i)); + } + function pg(r) { + return r.charCodeAt(0) === 95 && r.charCodeAt(1) === 95 && r.charCodeAt(2) === 64; + } + function $g(r) { + var i = e.getNameOfDeclaration(r); + return !!i && Rv(i); + } + function Td(r) { + return !e.hasDynamicName(r) || $g(r); + } + function I1(r) { + return e.isDynamicName(r) && !Rv(r); + } + function pf(r) { + return r.flags & 8192 ? r.escapedName : r.flags & 384 ? e.escapeLeadingUnderscores("" + r.value) : e.Debug.fail(); + } + function Bv(r, i, t) { + e.Debug.assert(!!(e.getCheckFlags(r) & 4096), "Expected a late-bound symbol."), r.flags |= t, Aa(i.symbol).lateSymbol = r, r.declarations ? i.symbol.isReplaceableByMethod || r.declarations.push(i) : r.declarations = [i], t & 111551 && (!r.valueDeclaration || r.valueDeclaration.kind !== i.kind) && (r.valueDeclaration = i); + } + function Zy(r, i, t, o) { + e.Debug.assert(!!o.symbol, "The member is expected to have a symbol."); + var s = va(o); + if (!s.resolvedSymbol) { + s.resolvedSymbol = o.symbol; + var u = e.isBinaryExpression(o) ? o.left : o.name, h = e.isElementAccessExpression(u) ? Os(u.argumentExpression) : t_(u); + if (_f(h)) { + var z = pf(h), me = o.symbol.flags, Me = t.get(z); + Me || t.set(z, Me = oo(0, z, 4096)); + var $e = i && i.get(z); + if (Me.flags & I_(me) || $e) { + var tr = $e ? e.concatenate($e.declarations, Me.declarations) : Me.declarations, dr = !(h.flags & 8192) && e.unescapeLeadingUnderscores(z) || e.declarationNameToString(u); + e.forEach(tr, function(Dr) { + return Xr(e.getNameOfDeclaration(Dr) || Dr, e.Diagnostics.Property_0_was_also_declared_here, dr); + }), Xr(u || o, e.Diagnostics.Duplicate_property_0, dr), Me = oo(0, z, 4096); + } + return Me.nameType = h, Bv(Me, o, me), Me.parent ? e.Debug.assert(Me.parent === r, "Existing symbol parent should match new one") : Me.parent = r, s.resolvedSymbol = Me; + } + } + return s.resolvedSymbol; + } + function Jv(r, i) { + var t = Aa(r); + if (!t[i]) { + var o = i === "resolvedExports", s = o ? r.flags & 1536 ? Iu(r) : r.exports : r.members; + t[i] = s || we; + for (var u = e.createSymbolTable(), h = 0, z = r.declarations || e.emptyArray; h < z.length; h++) { + var me = z[h], Me = e.getMembersOfDeclaration(me); + if (Me) + for (var $e = 0, tr = Me; $e < tr.length; $e++) { + var dr = tr[$e]; + o === e.hasStaticModifier(dr) && $g(dr) && Zy(r, s, u, dr); + } + } + var Dr = r.assignmentDeclarationMembers; + if (Dr) + for (var Qr = e.arrayFrom(Dr.values()), li = 0, Ti = Qr; li < Ti.length; li++) { + var dr = Ti[li], Ci = e.getAssignmentDeclarationKind(dr), $i = Ci === 3 || e.isBinaryExpression(dr) && s0(dr, Ci) || Ci === 9 || Ci === 6; + o === !$i && $g(dr) && Zy(r, s, u, dr); + } + t[i] = hp(s, u) || we; + } + return t[i]; + } + function Nf(r) { + return r.flags & 6256 ? Jv(r, "resolvedMembers") : r.members || we; + } + function dg(r) { + if (r.flags & 106500 && r.escapedName === "__computed") { + var i = Aa(r); + if (!i.lateSymbol && e.some(r.declarations, $g)) { + var t = so(r.parent); + e.some(r.declarations, e.hasStaticModifier) ? dc(t) : Nf(t); + } + return i.lateSymbol || (i.lateSymbol = r); + } + return r; + } + function Rc(r, i, t) { + if (e.getObjectFlags(r) & 4) { + var o = r.target, s = xo(r); + if (e.length(o.typeParameters) === e.length(s)) { + var u = Yf(o, e.concatenate(s, [i || o.thisType])); + return t ? $s(u) : u; + } + } else if (r.flags & 2097152) { + var h = e.sameMap(r.types, function(z) { + return Rc(z, i, t); + }); + return h !== r.types ? Do(h) : r; + } + return t ? $s(r) : r; + } + function jv(r, i, t, o) { + var s, u, h, z, me; + e.rangeEquals(t, o, 0, t.length) ? (u = i.symbol ? Nf(i.symbol) : e.createSymbolTable(i.declaredProperties), h = i.declaredCallSignatures, z = i.declaredConstructSignatures, me = i.declaredIndexInfos) : (s = Uc(t, o), u = Yy(i.declaredProperties, s, t.length === 1), h = Ah(i.declaredCallSignatures, s), z = Ah(i.declaredConstructSignatures, s), me = oE(i.declaredIndexInfos, s)); + var Me = Qc(i); + if (Me.length) { + i.symbol && u === Nf(i.symbol) && (u = e.createSymbolTable(i.declaredProperties)), Oc(r, u, h, z, me); + for (var $e = e.lastOrUndefined(o), tr = 0, dr = Me; tr < dr.length; tr++) { + var Dr = dr[tr], Qr = $e ? Rc(un(Dr, s), $e) : Dr; + Bm(u, uo(Qr)), h = e.concatenate(h, ot(Qr, 0)), z = e.concatenate(z, ot(Qr, 1)); + var li = Qr !== Oe ? Hn(Qr) : [zl(Li, Oe, false)]; + me = e.concatenate(me, e.filter(li, function(Ti) { + return !xa(me, Ti.keyType); + })); + } + } + Oc(r, u, h, z, me); + } + function eh(r) { + jv(r, Lv(r), e.emptyArray, e.emptyArray); + } + function rh(r) { + var i = Lv(r.target), t = e.concatenate(i.typeParameters, [i.thisType]), o = xo(r), s = o.length === t.length ? o : e.concatenate(o, [r]); + jv(r, i, t, s); + } + function Fu(r, i, t, o, s, u, h, z) { + var me = new Z(Di, z); + return me.declaration = r, me.typeParameters = i, me.parameters = o, me.thisParameter = t, me.resolvedReturnType = s, me.resolvedTypePredicate = u, me.minArgumentCount = h, me.resolvedMinArgumentCount = void 0, me.target = void 0, me.mapper = void 0, me.compositeSignatures = void 0, me.compositeKind = void 0, me; + } + function xd(r) { + var i = Fu(r.declaration, r.typeParameters, r.thisParameter, r.parameters, void 0, void 0, r.minArgumentCount, r.flags & 39); + return i.target = r.target, i.mapper = r.mapper, i.compositeSignatures = r.compositeSignatures, i.compositeKind = r.compositeKind, i; + } + function Uv(r, i) { + var t = xd(r); + return t.compositeSignatures = i, t.compositeKind = 1048576, t.target = void 0, t.mapper = void 0, t; + } + function w1(r, i) { + if ((r.flags & 24) === i) + return r; + r.optionalCallSignatureCache || (r.optionalCallSignatureCache = {}); + var t = i === 8 ? "inner" : "outer"; + return r.optionalCallSignatureCache[t] || (r.optionalCallSignatureCache[t] = ih(r, i)); + } + function ih(r, i) { + e.Debug.assert(i === 8 || i === 16, "An optional call signature can either be for an inner call chain or an outer call chain, but not both."); + var t = xd(r); + return t.flags |= i, t; + } + function Jm(r, i) { + if (H(r)) { + var t = r.parameters.length - 1, o = Jt(r.parameters[t]); + if (Yn(o)) + return [s(o, t)]; + if (!i && o.flags & 1048576 && e.every(o.types, Yn)) + return e.map(o.types, function(u) { + return s(u, t); + }); + } + return [r.parameters]; + function s(u, h) { + var z = xo(u), me = u.target.labeledElementDeclarations, Me = e.map(z, function($e, tr) { + var dr = !!me && E0(me[tr]), Dr = dr || vm(r, h + tr, u), Qr = u.target.elementFlags[tr], li = Qr & 12 ? 32768 : Qr & 2 ? 16384 : 0, Ti = oo(1, Dr, li); + return Ti.type = Qr & 4 ? Zs($e) : $e, Ti; + }); + return e.concatenate(r.parameters.slice(0, h), Me); + } + } + function th(r) { + var i = Bl(r), t = ot(i, 1), o = e.getClassLikeDeclarationOfSymbol(r.symbol), s = !!o && e.hasSyntacticModifier(o, 128); + if (t.length === 0) + return [Fu(void 0, r.localTypeParameters, void 0, e.emptyArray, r, void 0, 0, s ? 4 : 0)]; + for (var u = fg(r), h = e.isInJSFile(u), z = bh(u), me = e.length(z), Me = [], $e = 0, tr = t; $e < tr.length; $e++) { + var dr = tr[$e], Dr = Ul(dr.typeParameters), Qr = e.length(dr.typeParameters); + if (h || me >= Dr && me <= Qr) { + var li = Qr ? mh(dr, zp(z, dr.typeParameters, Dr, h)) : xd(dr); + li.typeParameters = r.localTypeParameters, li.resolvedReturnType = r, li.flags = s ? li.flags | 4 : li.flags & -5, Me.push(li); + } + } + return Me; + } + function gg(r, i, t, o, s) { + for (var u = 0, h = r; u < h.length; u++) { + var z = h[u]; + if (_y(z, i, t, o, s, t ? XI : av)) + return z; + } + } + function O1(r, i, t) { + if (i.typeParameters) { + if (t > 0) + return; + for (var o = 1; o < r.length; o++) + if (!gg(r[o], i, false, false, false)) + return; + return [i]; + } + for (var s, o = 0; o < r.length; o++) { + var u = o === t ? i : gg(r[o], i, true, false, true); + if (!u) + return; + s = e.appendIfUnique(s, u); + } + return s; + } + function zv(r) { + for (var i, t, o = 0; o < r.length; o++) { + if (r[o].length === 0) + return e.emptyArray; + r[o].length > 1 && (t = t === void 0 ? o : -1); + for (var s = 0, u = r[o]; s < u.length; s++) { + var h = u[s]; + if (!i || !gg(i, h, false, false, true)) { + var z = O1(r, h, o); + if (z) { + var me = h; + if (z.length > 1) { + var Me = h.thisParameter, $e = e.forEach(z, function(Zi) { + return Zi.thisParameter; + }); + if ($e) { + var tr = Do(e.mapDefined(z, function(Zi) { + return Zi.thisParameter && Jt(Zi.thisParameter); + })); + Me = eg($e, tr); + } + me = Uv(h, z), me.thisParameter = Me; + } + (i || (i = [])).push(me); + } + } + } + } + if (!e.length(i) && t !== -1) { + for (var dr = r[t !== void 0 ? t : 0], Dr = dr.slice(), Qr = function(Zi) { + if (Zi !== dr) { + var qt = Zi[0]; + if (e.Debug.assert(!!qt, "getUnionSignatures bails early on empty signature lists and should not have empty lists on second pass"), Dr = !!qt.typeParameters && e.some(Dr, function(Nt) { + return !!Nt.typeParameters && !ah(qt.typeParameters, Nt.typeParameters); + }) ? void 0 : e.map(Dr, function(Nt) { + return M1(Nt, qt); + }), !Dr) + return "break"; + } + }, li = 0, Ti = r; li < Ti.length; li++) { + var Ci = Ti[li], $i = Qr(Ci); + if ($i === "break") + break; + } + i = Dr; + } + return i || e.emptyArray; + } + function ah(r, i) { + if (e.length(r) !== e.length(i)) + return false; + if (!r || !i) + return true; + for (var t = Uc(i, r), o = 0; o < r.length; o++) { + var s = r[o], u = i[o]; + if (s !== u && !wf(tm(s) || gr, un(tm(u) || gr, t))) + return false; + } + return true; + } + function F1(r, i, t) { + if (!r || !i) + return r || i; + var o = Do([Jt(r), un(Jt(i), t)]); + return eg(r, o); + } + function nh(r, i, t) { + for (var o = Wc(r), s = Wc(i), u = o >= s ? r : i, h = u === r ? i : r, z = u === r ? o : s, me = Xl(r) || Xl(i), Me = me && !Xl(u), $e = new Array(z + (Me ? 1 : 0)), tr = 0; tr < z; tr++) { + var dr = Ld(u, tr); + u === i && (dr = un(dr, t)); + var Dr = Ld(h, tr) || gr; + h === i && (Dr = un(Dr, t)); + var Qr = Do([dr, Dr]), li = me && !Me && tr === z - 1, Ti = tr >= Hl(u) && tr >= Hl(h), Ci = tr >= o ? void 0 : vm(r, tr), $i = tr >= s ? void 0 : vm(i, tr), Zi = Ci === $i ? Ci : Ci ? $i ? void 0 : Ci : $i, qt = oo(1 | (Ti && !li ? 16777216 : 0), Zi || "arg".concat(tr)); + qt.type = li ? Zs(Qr) : Qr, $e[tr] = qt; + } + if (Me) { + var Nt = oo(1, "args"); + Nt.type = Zs($u(h, z)), h === i && (Nt.type = un(Nt.type, t)), $e[z] = Nt; + } + return $e; + } + function M1(r, i) { + var t = r.typeParameters || i.typeParameters, o; + r.typeParameters && i.typeParameters && (o = Uc(i.typeParameters, r.typeParameters)); + var s = r.declaration, u = nh(r, i, o), h = F1(r.thisParameter, i.thisParameter, o), z = Math.max(r.minArgumentCount, i.minArgumentCount), me = Fu(s, t, h, u, void 0, void 0, z, (r.flags | i.flags) & 39); + return me.compositeKind = 1048576, me.compositeSignatures = e.concatenate(r.compositeKind !== 2097152 && r.compositeSignatures || [r], [i]), o && (me.mapper = r.compositeKind !== 2097152 && r.mapper && r.compositeSignatures ? np(r.mapper, o) : o), me; + } + function oh(r) { + var i = Hn(r[0]); + if (i) { + for (var t = [], o = function(z) { + var me = z.keyType; + e.every(r, function(Me) { + return !!ss(Me, me); + }) && t.push(zl(me, Pa(e.map(r, function(Me) { + return cs(Me, me); + })), e.some(r, function(Me) { + return ss(Me, me).isReadonly; + }))); + }, s = 0, u = i; s < u.length; s++) { + var h = u[s]; + o(h); + } + return t; + } + return e.emptyArray; + } + function jm(r) { + var i = zv(e.map(r.types, function(s) { + return s === br ? [Wn] : ot(s, 0); + })), t = zv(e.map(r.types, function(s) { + return ot(s, 1); + })), o = oh(r.types); + Oc(r, we, i, t, o); + } + function Zg(r, i) { + return r ? i ? Do([r, i]) : r : i; + } + function Wv(r) { + var i = e.countWhere(r, function(s) { + return ot(s, 1).length > 0; + }), t = e.map(r, Wd); + if (i > 0 && i === e.countWhere(t, function(s) { + return s; + })) { + var o = t.indexOf(true); + t[o] = false; + } + return t; + } + function sh(r, i, t, o) { + for (var s = [], u = 0; u < i.length; u++) + u === o ? s.push(r) : t[u] && s.push(yo(ot(i[u], 1)[0])); + return Do(s); + } + function L1(r) { + for (var i, t, o, s = r.types, u = Wv(s), h = e.countWhere(u, function(Me) { + return Me; + }), z = function(Me) { + var $e = r.types[Me]; + if (!u[Me]) { + var tr = ot($e, 1); + tr.length && h > 0 && (tr = e.map(tr, function(dr) { + var Dr = xd(dr); + return Dr.resolvedReturnType = sh(yo(dr), s, u, Me), Dr; + })), t = ch(t, tr); + } + i = ch(i, ot($e, 0)), o = e.reduceLeft(Hn($e), function(dr, Dr) { + return uh(dr, Dr, false); + }, o); + }, me = 0; me < s.length; me++) + z(me); + Oc(r, we, i || e.emptyArray, t || e.emptyArray, o || e.emptyArray); + } + function ch(r, i) { + for (var t = function(h) { + (!r || e.every(r, function(z) { + return !_y(z, h, false, false, false, av); + })) && (r = e.append(r, h)); + }, o = 0, s = i; o < s.length; o++) { + var u = s[o]; + t(u); + } + return r; + } + function uh(r, i, t) { + if (r) + for (var o = 0; o < r.length; o++) { + var s = r[o]; + if (s.keyType === i.keyType) + return r[o] = zl(s.keyType, t ? Pa([s.type, i.type]) : Do([s.type, i.type]), t ? s.isReadonly || i.isReadonly : s.isReadonly && i.isReadonly), r; + } + return e.append(r, i); + } + function R1(r) { + if (r.target) { + Oc(r, we, e.emptyArray, e.emptyArray, e.emptyArray); + var i = Yy(Pf(r.target), r.mapper, false), t = Ah(ot(r.target, 0), r.mapper), o = Ah(ot(r.target, 1), r.mapper), s = oE(Hn(r.target), r.mapper); + Oc(r, i, t, o, s); + return; + } + var u = so(r.symbol); + if (u.flags & 2048) { + Oc(r, we, e.emptyArray, e.emptyArray, e.emptyArray); + var h = Nf(u), t = S_(h.get("__call")), o = S_(h.get("__new")), z = ax(u); + Oc(r, h, t, o, z); + return; + } + var me = we, Me; + if (u.exports && (me = dc(u), u === pe)) { + var $e = new e.Map(); + me.forEach(function(Ti) { + var Ci; + !(Ti.flags & 418) && !(Ti.flags & 512 && ((Ci = Ti.declarations) === null || Ci === void 0 ? void 0 : Ci.length) && e.every(Ti.declarations, e.isAmbientModule)) && $e.set(Ti.escapedName, Ti); + }), me = $e; + } + var tr; + if (Oc(r, me, e.emptyArray, e.emptyArray, e.emptyArray), u.flags & 32) { + var dr = aa(u), Dr = Bl(dr); + Dr.flags & 11272192 ? (me = e.createSymbolTable(z_(me)), Bm(me, uo(Dr))) : Dr === Oe && (tr = zl(Li, Oe, false)); + } + var Qr = rD(me); + if (Qr ? Me = nx(Qr) : (tr && (Me = e.append(Me, tr)), u.flags & 384 && (go(u).flags & 32 || e.some(r.properties, function(Ti) { + return !!(Jt(Ti).flags & 296); + })) && (Me = e.append(Me, Ko))), Oc(r, me, e.emptyArray, e.emptyArray, Me || e.emptyArray), u.flags & 8208 && (r.callSignatures = S_(u)), u.flags & 32) { + var li = aa(u), o = u.members ? S_(u.members.get("__constructor")) : e.emptyArray; + u.flags & 16 && (o = e.addRange(o.slice(), e.mapDefined(r.callSignatures, function(Ci) { + return Sl(Ci.declaration) ? Fu(Ci.declaration, Ci.typeParameters, Ci.thisParameter, Ci.parameters, li, void 0, Ci.minArgumentCount, Ci.flags & 39) : void 0; + }))), o.length || (o = th(li)), r.constructSignatures = o; + } + } + function lh(r, i, t) { + return un(r, Uc([i.indexType, i.objectType], [If(0), Wl([t])])); + } + function B1(r) { + for (var i = ss(r.source, Li), t = Lu(r.mappedType), o = !(t & 1), s = t & 4 ? 0 : 16777216, u = i ? [zl(Li, Hh(i.type, r.mappedType, r.constraintType), o && i.isReadonly)] : e.emptyArray, h = e.createSymbolTable(), z = 0, me = uo(r.source); z < me.length; z++) { + var Me = me[z], $e = 8192 | (o && Zu(Me) ? 8 : 0), tr = oo(4 | Me.flags & s, Me.escapedName, $e); + if (tr.declarations = Me.declarations, tr.nameType = Aa(Me).nameType, tr.propertyType = Jt(Me), r.constraintType.type.flags & 8388608 && r.constraintType.type.objectType.flags & 262144 && r.constraintType.type.indexType.flags & 262144) { + var dr = r.constraintType.type.objectType, Dr = lh(r.mappedType, r.constraintType.type, dr); + tr.mappedType = Dr, tr.constraintType = ql(dr); + } else + tr.mappedType = r.mappedType, tr.constraintType = r.constraintType; + h.set(Me.escapedName, tr); + } + Oc(r, h, e.emptyArray, e.emptyArray, u); + } + function Kd(r) { + if (r.flags & 4194304) { + var i = $s(r.type); + return lm(i) ? Mx(i) : ql(i); + } + if (r.flags & 16777216) { + if (r.root.isDistributive) { + var t = r.checkType, o = Kd(t); + if (o !== t) + return ID(r, $d(r.root.checkType, o, r.mapper)); + } + return r; + } + return r.flags & 1048576 ? Ss(r, Kd) : r.flags & 2097152 ? Do(e.sameMap(r.types, Kd)) : r; + } + function Gd(r) { + return e.getCheckFlags(r) & 4096; + } + function Um(r, i, t, o) { + for (var s = 0, u = uo(r); s < u.length; s++) { + var h = u[s]; + o(om(h, i)); + } + if (r.flags & 1) + o(Li); + else + for (var z = 0, me = Hn(r); z < me.length; z++) { + var Me = me[z]; + (!t || Me.keyType.flags & 134217732) && o(Me.keyType); + } + } + function fh(r) { + var i = e.createSymbolTable(), t; + Oc(r, we, e.emptyArray, e.emptyArray, e.emptyArray); + var o = Du(r), s = Mu(r), u = Jl(r.target || r), h = vl(r.target || r), z = $s(Ed(r)), me = Lu(r), Me = Ge ? 128 : 8576; + mg(r) ? Um(z, Me, Ge, $e) : Od(Kd(s), $e), Oc(r, i, e.emptyArray, e.emptyArray, t || e.emptyArray); + function $e(dr) { + var Dr = u ? un(u, tv(r.mapper, o, dr)) : dr; + Od(Dr, function(Qr) { + return tr(dr, Qr); + }); + } + function tr(dr, Dr) { + if (_f(Dr)) { + var Qr = pf(Dr), li = i.get(Qr); + if (li) + li.nameType = Pa([li.nameType, Dr]), li.keyType = Pa([li.keyType, dr]); + else { + var Ti = _f(dr) ? bi(z, pf(dr)) : void 0, Ci = !!(me & 4 || !(me & 8) && Ti && Ti.flags & 16777216), $i = !!(me & 1 || !(me & 2) && Ti && Zu(Ti)), Zi = Ye && !Ci && Ti && Ti.flags & 16777216, qt = Ti ? Gd(Ti) : 0, Nt = oo(4 | (Ci ? 16777216 : 0), Qr, qt | 262144 | ($i ? 8 : 0) | (Zi ? 524288 : 0)); + Nt.mappedType = r, Nt.nameType = Dr, Nt.keyType = dr, Ti && (Nt.syntheticOrigin = Ti, Nt.declarations = u ? void 0 : Ti.declarations), i.set(Qr, Nt); + } + } else if (vh(Dr) || Dr.flags & 33) { + var Ra = Dr.flags & 5 ? Li : Dr.flags & 40 ? nt : Dr, ca = un(h, tv(r.mapper, o, dr)), Sn = zl(Ra, ca, !!(me & 1)); + t = uh(t, Sn, true); + } + } + } + function J1(r) { + if (!r.type) { + var i = r.mappedType; + if (!yu(r, 0)) + return i.containsError = true, Pe; + var t = vl(i.target || i), o = tv(i.mapper, Du(i), r.keyType), s = un(t, o), u = Ye && r.flags & 16777216 && !fs5(s, 49152) ? i_(s, true) : r.checkFlags & 524288 ? $D(s) : s; + fi() || (Xr(Ie, e.Diagnostics.Type_of_property_0_circularly_references_itself_in_mapped_type_1, tn(r), Ot(i)), u = Pe), r.type = u; + } + return r.type; + } + function Du(r) { + return r.typeParameter || (r.typeParameter = Js(Et(r.declaration.typeParameter))); + } + function Mu(r) { + return r.constraintType || (r.constraintType = Tc(Du(r)) || Pe); + } + function Jl(r) { + return r.declaration.nameType ? r.nameType || (r.nameType = un(Va(r.declaration.nameType), r.mapper)) : void 0; + } + function vl(r) { + return r.templateType || (r.templateType = r.declaration.type ? un(kc(Va(r.declaration.type), true, !!(Lu(r) & 4)), r.mapper) : Pe); + } + function _h(r) { + return e.getEffectiveConstraintOfTypeParameter(r.declaration.typeParameter); + } + function mg(r) { + var i = _h(r); + return i.kind === 193 && i.operator === 140; + } + function Ed(r) { + if (!r.modifiersType) + if (mg(r)) + r.modifiersType = un(Va(_h(r).type), r.mapper); + else { + var i = yD(r.declaration), t = Mu(i), o = t && t.flags & 262144 ? Tc(t) : t; + r.modifiersType = o && o.flags & 4194304 ? un(o.type, r.mapper) : gr; + } + return r.modifiersType; + } + function Lu(r) { + var i = r.declaration; + return (i.readonlyToken ? i.readonlyToken.kind === 40 ? 2 : 1 : 0) | (i.questionToken ? i.questionToken.kind === 40 ? 8 : 4 : 0); + } + function ph(r) { + var i = Lu(r); + return i & 8 ? -1 : i & 4 ? 1 : 0; + } + function qv(r) { + var i = ph(r), t = Ed(r); + return i || (Bc(t) ? ph(t) : 0); + } + function j1(r) { + return !!(e.getObjectFlags(r) & 32 && Lu(r) & 4); + } + function Bc(r) { + return !!(e.getObjectFlags(r) & 32) && qp(Mu(r)); + } + function Ru(r) { + return r.members || (r.flags & 524288 ? r.objectFlags & 4 ? rh(r) : r.objectFlags & 3 ? eh(r) : r.objectFlags & 1024 ? B1(r) : r.objectFlags & 16 ? R1(r) : r.objectFlags & 32 && fh(r) : r.flags & 1048576 ? jm(r) : r.flags & 2097152 && L1(r)), r; + } + function Pf(r) { + return r.flags & 524288 ? Ru(r).properties : e.emptyArray; + } + function h_(r, i) { + if (r.flags & 524288) { + var t = Ru(r), o = t.members.get(i); + if (o && gc(o)) + return o; + } + } + function em(r) { + if (!r.resolvedProperties) { + for (var i = e.createSymbolTable(), t = 0, o = r.types; t < o.length; t++) { + for (var s = o[t], u = 0, h = uo(s); u < h.length; u++) { + var z = h[u]; + if (!i.has(z.escapedName)) { + var me = Zv(r, z.escapedName); + me && i.set(z.escapedName, me); + } + } + if (r.flags & 1048576 && Hn(s).length === 0) + break; + } + r.resolvedProperties = tf(i); + } + return r.resolvedProperties; + } + function uo(r) { + return r = Xd(r), r.flags & 3145728 ? em(r) : Pf(r); + } + function U1(r, i) { + r = Xd(r), r.flags & 3670016 && Ru(r).members.forEach(function(t, o) { + xf(t, o) && i(t, o); + }); + } + function z1(r, i) { + var t = i.properties; + return t.some(function(o) { + var s = o.name && Z_(o.name), u = s && _f(s) ? pf(s) : void 0, h = u === void 0 ? void 0 : da(r, u); + return !!h && Cg(h) && !ao(Bd(o), h); + }); + } + function W1(r) { + var i = Pa(r); + if (!(i.flags & 1048576)) + return LS(i); + for (var t = e.createSymbolTable(), o = 0, s = r; o < s.length; o++) + for (var u = s[o], h = 0, z = LS(u); h < z.length; h++) { + var me = z[h].escapedName; + if (!t.has(me)) { + var Me = Yv(i, me); + Me && t.set(me, Me); + } + } + return e.arrayFrom(t.values()); + } + function Q_(r) { + return r.flags & 262144 ? Tc(r) : r.flags & 8388608 ? q1(r) : r.flags & 16777216 ? K1(r) : uc(r); + } + function Tc(r) { + return Wm(r) ? tm(r) : void 0; + } + function q1(r) { + return Wm(r) ? V1(r) : void 0; + } + function Vv(r) { + var i = Zf(r, false); + return i !== r ? i : Q_(r); + } + function V1(r) { + if (Qv(r)) + return xh(r.objectType, r.indexType); + var i = Vv(r.indexType); + if (i && i !== r.indexType) { + var t = ep(r.objectType, i, r.accessFlags); + if (t) + return t; + } + var o = Vv(r.objectType); + if (o && o !== r.objectType) + return ep(o, r.indexType, r.accessFlags); + } + function zm(r) { + if (!r.resolvedDefaultConstraint) { + var i = TI(r), t = tp(r); + r.resolvedDefaultConstraint = ta(i) ? t : ta(t) ? i : Pa([i, t]); + } + return r.resolvedDefaultConstraint; + } + function Kv(r) { + if (r.root.isDistributive && r.restrictiveInstantiation !== r) { + var i = Zf(r.checkType, false), t = i === r.checkType ? Q_(i) : i; + if (t && t !== r.checkType) { + var o = ID(r, $d(r.root.checkType, t, r.mapper)); + if (!(o.flags & 131072)) + return o; + } + } + } + function Gv(r) { + return Kv(r) || zm(r); + } + function K1(r) { + return Wm(r) ? Gv(r) : void 0; + } + function G1(r, i) { + for (var t, o = false, s = 0, u = r; s < u.length; s++) { + var h = u[s]; + if (h.flags & 465829888) { + for (var z = Q_(h); z && z.flags & 21233664; ) + z = Q_(z); + z && (t = e.append(t, z), i && (t = e.append(t, h))); + } else + h.flags & 469892092 && (o = true); + } + if (t && (i || o)) { + if (o) + for (var me = 0, Me = r; me < Me.length; me++) { + var h = Me[me]; + h.flags & 469892092 && (t = e.append(t, h)); + } + return Do(t); + } + } + function uc(r) { + if (r.flags & 464781312) { + var i = Hv(r); + return i !== Kn && i !== Pn ? i : void 0; + } + return r.flags & 4194304 ? at : void 0; + } + function Hd(r) { + return uc(r) || r; + } + function Wm(r) { + return Hv(r) !== Pn; + } + function Hv(r) { + if (r.resolvedBaseConstraint) + return r.resolvedBaseConstraint; + var i = []; + return r.resolvedBaseConstraint = Rc(t(r), r); + function t(u) { + if (!u.immediateBaseConstraint) { + if (!yu(u, 4)) + return Pn; + var h = void 0, z = ov(u); + if ((i.length < 10 || i.length < 50 && !e.contains(i, z)) && (i.push(z), h = s(Zf(u, false)), i.pop()), !fi()) { + if (u.flags & 262144) { + var me = ox(u); + if (me) { + var Me = Xr(me, e.Diagnostics.Type_parameter_0_has_a_circular_constraint, Ot(u)); + Ie && !e.isNodeDescendantOf(me, Ie) && !e.isNodeDescendantOf(Ie, me) && e.addRelatedInfo(Me, e.createDiagnosticForNode(Ie, e.Diagnostics.Circularity_originates_in_type_at_this_location)); + } + } + h = Pn; + } + u.immediateBaseConstraint = h || Kn; + } + return u.immediateBaseConstraint; + } + function o(u) { + var h = t(u); + return h !== Kn && h !== Pn ? h : void 0; + } + function s(u) { + if (u.flags & 262144) { + var h = tm(u); + return u.isThisType || !h ? h : o(h); + } + if (u.flags & 3145728) { + for (var z = u.types, me = [], Me = false, $e = 0, tr = z; $e < tr.length; $e++) { + var dr = tr[$e], Dr = o(dr); + Dr ? (Dr !== dr && (Me = true), me.push(Dr)) : Me = true; + } + return Me ? u.flags & 1048576 && me.length === z.length ? Pa(me) : u.flags & 2097152 && me.length ? Do(me) : void 0 : u; + } + if (u.flags & 4194304) + return at; + if (u.flags & 134217728) { + var z = u.types, Qr = e.mapDefined(z, o); + return Qr.length === z.length ? Dg(u.texts, Qr) : Li; + } + if (u.flags & 268435456) { + var h = o(u.type); + return h ? Th(u.symbol, h) : Li; + } + if (u.flags & 8388608) { + if (Qv(u)) + return o(xh(u.objectType, u.indexType)); + var li = o(u.objectType), Ti = o(u.indexType), Ci = li && Ti && ep(li, Ti, u.accessFlags); + return Ci && o(Ci); + } + if (u.flags & 16777216) { + var h = Gv(u); + return h && o(h); + } + return u.flags & 33554432 ? o(u.substitute) : u; + } + } + function H1(r) { + return r.resolvedApparentType || (r.resolvedApparentType = Rc(r, r, true)); + } + function Xv(r) { + if (r.default) + r.default === eo && (r.default = Pn); + else if (r.target) { + var i = Xv(r.target); + r.default = i ? un(i, r.mapper) : Kn; + } else { + r.default = eo; + var t = r.symbol && e.forEach(r.symbol.declarations, function(s) { + return e.isTypeParameterDeclaration(s) && s.default; + }), o = t ? Va(t) : Kn; + r.default === eo && (r.default = o); + } + return r.default; + } + function D_(r) { + var i = Xv(r); + return i !== Kn && i !== Pn ? i : void 0; + } + function X1(r) { + return Xv(r) !== Pn; + } + function Q1(r) { + return !!(r.symbol && e.forEach(r.symbol.declarations, function(i) { + return e.isTypeParameterDeclaration(i) && i.default; + })); + } + function Y1(r) { + return r.resolvedApparentType || (r.resolvedApparentType = dh(r)); + } + function dh(r) { + var i = Ih(r); + if (i && !r.declaration.nameType) { + var t = Tc(i); + if (t && Pd(t)) + return un(r, $d(i, t, r.mapper)); + } + return r; + } + function Qv(r) { + var i; + return !!(r.flags & 8388608 && e.getObjectFlags(i = r.objectType) & 32 && !Bc(i) && qp(r.indexType) && !i.declaration.questionToken && !i.declaration.nameType); + } + function $s(r) { + var i = r.flags & 465829888 ? uc(r) || gr : r; + return e.getObjectFlags(i) & 32 ? Y1(i) : i.flags & 2097152 ? H1(i) : i.flags & 402653316 ? Ct : i.flags & 296 ? sa : i.flags & 2112 ? R3() : i.flags & 528 ? en : i.flags & 12288 ? Cx() : i.flags & 67108864 ? Ba : i.flags & 4194304 ? at : i.flags & 2 && !Ye ? Ba : i; + } + function Xd(r) { + return bu($s(bu(r))); + } + function Yv(r, i, t) { + for (var o, s, u, h, z, me = r.flags & 1048576, Me = me ? 0 : 16777216, $e = 4, tr = me ? 0 : 8, dr = false, Dr = 0, Qr = r.types; Dr < Qr.length; Dr++) { + var li = Qr[Dr], Ti = $s(li); + if (!(nn(Ti) || Ti.flags & 131072)) { + var Ci = bi(Ti, i, t), $i = Ci ? e.getDeclarationModifierFlagsFromSymbol(Ci) : 0; + if (Ci) { + if (me ? Me |= Ci.flags & 16777216 : Me &= Ci.flags, !u) + u = Ci; + else if (Ci !== u) { + var Zi = (jg(Ci) || Ci) === (jg(u) || u); + if (Zi && VD(u, Ci, function(Ka, cn) { + return Ka === cn ? -1 : 0; + }) === -1) + dr = !!u.parent && !!e.length(Af(u.parent)); + else { + h || (h = new e.Map(), h.set(y(u), u)); + var qt = y(Ci); + h.has(qt) || h.set(qt, Ci); + } + } + me && Zu(Ci) ? tr |= 8 : !me && !Zu(Ci) && (tr &= -9), tr |= ($i & 24 ? 0 : 256) | ($i & 16 ? 512 : 0) | ($i & 8 ? 1024 : 0) | ($i & 32 ? 2048 : 0), Bb(Ci) || ($e = 2); + } else if (me) { + var Nt = !pg(i) && Xo(Ti, i); + Nt ? (tr |= 32 | (Nt.isReadonly ? 8 : 0), z = e.append(z, Yn(Ti) ? sv(Ti) || Tr : Nt.type)) : Qp(Ti) && !(e.getObjectFlags(Ti) & 2097152) ? (tr |= 32, z = e.append(z, Tr)) : tr |= 16; + } + } + } + if (!(!u || me && (h || tr & 48) && tr & 1536)) { + if (!h && !(tr & 16) && !z) + if (dr) { + var Ra = eg(u, u.type); + return Ra.parent = (s = (o = u.valueDeclaration) === null || o === void 0 ? void 0 : o.symbol) === null || s === void 0 ? void 0 : s.parent, Ra.containingType = r, Ra.mapper = u.mapper, Ra; + } else + return u; + for (var ca = h ? e.arrayFrom(h.values()) : [u], Sn, ja, Fn, wn = [], Tn, Eo, lt = false, it = 0, Yt = ca; it < Yt.length; it++) { + var Ci = Yt[it]; + Eo ? Ci.valueDeclaration && Ci.valueDeclaration !== Eo && (lt = true) : Eo = Ci.valueDeclaration, Sn = e.addRange(Sn, Ci.declarations); + var Ti = Jt(Ci); + ja || (ja = Ti, Fn = Aa(Ci).nameType); + var Ia = Vg(Ci); + Tn || Ia !== Ti ? Tn = e.append(Tn || wn.slice(), Ia) : Ti !== ja && (tr |= 64), (Cg(Ti) || sm(Ti) || Ti === Dn) && (tr |= 128), Ti.flags & 131072 && Ti !== Dn && (tr |= 131072), wn.push(Ti); + } + e.addRange(wn, z); + var Qt = oo(4 | Me, i, $e | tr); + return Qt.containingType = r, !lt && Eo && (Qt.valueDeclaration = Eo, Eo.symbol.parent && (Qt.parent = Eo.symbol.parent)), Qt.declarations = Sn, Qt.nameType = Fn, wn.length > 2 ? (Qt.checkFlags |= 65536, Qt.deferralParent = r, Qt.deferralConstituents = wn, Qt.deferralWriteConstituents = Tn) : (Qt.type = me ? Pa(wn) : Do(wn), Tn && (Qt.writeType = me ? Pa(Tn) : Do(Tn))), Qt; + } + } + function $v(r, i, t) { + var o, s, u = ((o = r.propertyCacheWithoutObjectFunctionPropertyAugment) === null || o === void 0 ? void 0 : o.get(i)) || !t ? (s = r.propertyCache) === null || s === void 0 ? void 0 : s.get(i) : void 0; + if (!u && (u = Yv(r, i, t), u)) { + var h = t ? r.propertyCacheWithoutObjectFunctionPropertyAugment || (r.propertyCacheWithoutObjectFunctionPropertyAugment = e.createSymbolTable()) : r.propertyCache || (r.propertyCache = e.createSymbolTable()); + h.set(i, u); + } + return u; + } + function Zv(r, i, t) { + var o = $v(r, i, t); + return o && !(e.getCheckFlags(o) & 16) ? o : void 0; + } + function bu(r) { + return r.flags & 1048576 && r.objectFlags & 16777216 ? r.resolvedReducedType || (r.resolvedReducedType = $1(r)) : r.flags & 2097152 ? (r.objectFlags & 16777216 || (r.objectFlags |= 16777216 | (e.some(em(r), c) ? 33554432 : 0)), r.objectFlags & 33554432 ? ui : r) : r; + } + function $1(r) { + var i = e.sameMap(r.types, bu); + if (i === r.types) + return r; + var t = Pa(i); + return t.flags & 1048576 && (t.resolvedReducedType = t), t; + } + function c(r) { + return te(r) || xr(r); + } + function te(r) { + return !(r.flags & 16777216) && (e.getCheckFlags(r) & 131264) === 192 && !!(Jt(r).flags & 131072); + } + function xr(r) { + return !r.valueDeclaration && !!(e.getCheckFlags(r) & 1024); + } + function ei(r, i) { + if (i.flags & 2097152 && e.getObjectFlags(i) & 33554432) { + var t = e.find(em(i), te); + if (t) + return e.chainDiagnosticMessages(r, e.Diagnostics.The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituents, Ot(i, void 0, 536870912), tn(t)); + var o = e.find(em(i), xr); + if (o) + return e.chainDiagnosticMessages(r, e.Diagnostics.The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_private_in_some, Ot(i, void 0, 536870912), tn(o)); + } + return r; + } + function bi(r, i, t) { + if (r = Xd(r), r.flags & 524288) { + var o = Ru(r), s = o.members.get(i); + if (s && gc(s)) + return s; + if (t) + return; + var u = o === xn ? br : o.callSignatures.length ? Zr : o.constructSignatures.length ? Si : void 0; + if (u) { + var h = h_(u, i); + if (h) + return h; + } + return h_(qe, i); + } + if (r.flags & 3145728) + return Zv(r, i, t); + } + function Ft(r, i) { + if (r.flags & 3670016) { + var t = Ru(r); + return i === 0 ? t.callSignatures : t.constructSignatures; + } + return e.emptyArray; + } + function ot(r, i) { + return Ft(Xd(r), i); + } + function xa(r, i) { + return e.find(r, function(t) { + return t.keyType === i; + }); + } + function mn(r, i) { + for (var t, o, s, u = 0, h = r; u < h.length; u++) { + var z = h[u]; + z.keyType === Li ? t = z : an(i, z.keyType) && (o ? (s || (s = [o])).push(z) : o = z); + } + return s ? zl(gr, Do(e.map(s, function(me) { + return me.type; + })), e.reduceLeft(s, function(me, Me) { + return me && Me.isReadonly; + }, true)) : o || (t && an(i, Li) ? t : void 0); + } + function an(r, i) { + return ao(r, i) || i === Li && ao(r, nt) || i === nt && (r === $a || !!(r.flags & 128) && e.isNumericLiteralName(r.value)); + } + function To(r) { + if (r.flags & 3670016) { + var i = Ru(r); + return i.indexInfos; + } + return e.emptyArray; + } + function Hn(r) { + return To(Xd(r)); + } + function ss(r, i) { + return xa(Hn(r), i); + } + function cs(r, i) { + var t; + return (t = ss(r, i)) === null || t === void 0 ? void 0 : t.type; + } + function ws(r, i) { + return Hn(r).filter(function(t) { + return an(i, t.keyType); + }); + } + function nu(r, i) { + return mn(Hn(r), i); + } + function Xo(r, i) { + return nu(r, pg(i) ? Ki : Bu(e.unescapeLeadingUnderscores(i))); + } + function jl(r) { + for (var i, t = 0, o = e.getEffectiveTypeParameterDeclarations(r); t < o.length; t++) { + var s = o[t]; + i = e.appendIfUnique(i, Js(s.symbol)); + } + return i; + } + function Y_(r) { + var i = []; + return r.forEach(function(t, o) { + Ol(o) || i.push(t); + }), i; + } + function Cd(r) { + return e.isInJSFile(r) && (r.type && r.type.kind === 316 || e.getJSDocParameterTags(r).some(function(i) { + var t = i.isBracketed, o = i.typeExpression; + return t || !!o && o.type.kind === 316; + })); + } + function b_(r, i) { + if (!e.isExternalModuleNameRelative(r)) { + var t = qs(ii, '"' + r + '"', 512); + return t && i ? so(t) : t; + } + } + function kd(r) { + if (e.hasQuestionToken(r) || Vm(r) || Cd(r)) + return true; + if (r.initializer) { + var i = yl(r.parent), t = r.parent.parameters.indexOf(r); + return e.Debug.assert(t >= 0), t >= Hl(i, 3); + } + var o = e.getImmediatelyInvokedFunctionExpression(r.parent); + return o ? !r.type && !r.dotDotDotToken && r.parent.parameters.indexOf(r) >= o.arguments.length : false; + } + function qm(r) { + return e.isPropertyDeclaration(r) && r.questionToken; + } + function Vm(r) { + if (!e.isJSDocPropertyLikeTag(r)) + return false; + var i = r.isBracketed, t = r.typeExpression; + return i || !!t && t.type.kind === 316; + } + function vg(r, i, t, o) { + return { kind: r, parameterName: i, parameterIndex: t, type: o }; + } + function Ul(r) { + var i = 0; + if (r) + for (var t = 0; t < r.length; t++) + Q1(r[t]) || (i = t + 1); + return i; + } + function zp(r, i, t, o) { + var s = e.length(i); + if (!s) + return []; + var u = e.length(r); + if (o || u >= t && u <= s) { + for (var h = r ? r.slice() : [], z = u; z < s; z++) + h[z] = Pe; + for (var me = fb(o), z = u; z < s; z++) { + var Me = D_(i[z]); + o && Me && (wf(Me, gr) || wf(Me, Ba)) && (Me = Oe), h[z] = Me ? un(Me, Uc(i, h)) : me; + } + return h.length = i.length, h; + } + return r && r.slice(); + } + function yl(r) { + var i = va(r); + if (!i.resolvedSignature) { + var t = [], o = 0, s = 0, u = void 0, h = false, z = e.getImmediatelyInvokedFunctionExpression(r), me = e.isJSDocConstructSignature(r), Me = !z && e.isInJSFile(r) && e.isValueSignatureDeclaration(r) && !e.hasJSDocParameterTags(r) && !e.getJSDocType(r); + Me && (o |= 32); + for (var $e = me ? 1 : 0; $e < r.parameters.length; $e++) { + var tr = r.parameters[$e], dr = tr.symbol, Dr = e.isJSDocParameterTag(tr) ? tr.typeExpression && tr.typeExpression.type : tr.type; + if (dr && !!(dr.flags & 4) && !e.isBindingPattern(tr.name)) { + var Qr = es(tr, dr.escapedName, 111551, void 0, void 0, false); + dr = Qr; + } + $e === 0 && dr.escapedName === "this" ? (h = true, u = tr.symbol) : t.push(dr), Dr && Dr.kind === 196 && (o |= 2); + var li = Vm(tr) || tr.initializer || tr.questionToken || e.isRestParameter(tr) || z && t.length > z.arguments.length && !Dr || Cd(tr); + li || (s = t.length); + } + if ((r.kind === 172 || r.kind === 173) && Td(r) && (!h || !u)) { + var Ti = r.kind === 172 ? 173 : 172, Ci = e.getDeclarationOfKind(Et(r), Ti); + Ci && (u = cr(Ci)); + } + var $i = r.kind === 171 ? aa(so(r.parent.symbol)) : void 0, Zi = $i ? $i.localTypeParameters : jl(r); + (e.hasRestParameter(r) || e.isInJSFile(r) && ey(r, t)) && (o |= 1), (e.isConstructorTypeNode(r) && e.hasSyntacticModifier(r, 128) || e.isConstructorDeclaration(r) && e.hasSyntacticModifier(r.parent, 128)) && (o |= 4), i.resolvedSignature = Fu(r, Zi, u, t, void 0, void 0, s, o); + } + return i.resolvedSignature; + } + function ey(r, i) { + if (e.isJSDocSignature(r) || !Gm(r)) + return false; + var t = e.lastOrUndefined(r.parameters), o = t ? e.getJSDocParameterTags(t) : e.getJSDocTags(r).filter(e.isJSDocParameterTag), s = e.firstDefined(o, function(h) { + return h.typeExpression && e.isJSDocVariadicType(h.typeExpression.type) ? h.typeExpression.type : void 0; + }), u = oo(3, "args", 32768); + return s ? u.type = Zs(Va(s.type)) : (u.checkFlags |= 65536, u.deferralParent = ui, u.deferralConstituents = [mo], u.deferralWriteConstituents = [mo]), s && i.pop(), i.push(u), true; + } + function rm(r) { + if (!!(e.isInJSFile(r) && e.isFunctionLikeDeclaration(r))) { + var i = e.getJSDocTypeTag(r); + return (i == null ? void 0 : i.typeExpression) && ig(Va(i.typeExpression)); + } + } + function Km(r, i) { + var t = rm(r); + if (!!t) { + var o = r.parameters.indexOf(i); + return i.dotDotDotToken ? ym(t, o) : $u(t, o); + } + } + function ry(r) { + var i = rm(r); + return i && yo(i); + } + function Gm(r) { + var i = va(r); + return i.containsArgumentsReference === void 0 && (i.flags & 8192 ? i.containsArgumentsReference = true : i.containsArgumentsReference = t(r.body)), i.containsArgumentsReference; + function t(o) { + if (!o) + return false; + switch (o.kind) { + case 79: + return o.escapedText === or.escapedName && Nv(o) === or; + case 167: + case 169: + case 172: + case 173: + return o.name.kind === 162 && t(o.name); + case 206: + case 207: + return t(o.expression); + case 296: + return t(o.initializer); + default: + return !e.nodeStartsNewLexicalEnvironment(o) && !e.isPartOfTypeNode(o) && !!e.forEachChild(o, t); + } + } + } + function S_(r) { + if (!r || !r.declarations) + return e.emptyArray; + for (var i = [], t = 0; t < r.declarations.length; t++) { + var o = r.declarations[t]; + if (!!e.isFunctionLike(o)) { + if (t > 0 && o.body) { + var s = r.declarations[t - 1]; + if (o.parent === s.parent && o.kind === s.kind && o.pos === s.end) + continue; + } + i.push(yl(o)); + } + } + return i; + } + function Hm(r) { + var i = ac(r, r); + if (i) { + var t = Us(i); + if (t) + return Jt(t); + } + return Oe; + } + function T_(r) { + if (r.thisParameter) + return Jt(r.thisParameter); + } + function Yc(r) { + if (!r.resolvedTypePredicate) { + if (r.target) { + var i = Yc(r.target); + r.resolvedTypePredicate = i ? BI(i, r.mapper) : Ro; + } else if (r.compositeSignatures) + r.resolvedTypePredicate = X3(r.compositeSignatures, r.compositeKind) || Ro; + else { + var t = r.declaration && e.getEffectiveReturnTypeNode(r.declaration), o = void 0; + if (!t && e.isInJSFile(r.declaration)) { + var s = rm(r.declaration); + s && r !== s && (o = Yc(s)); + } + r.resolvedTypePredicate = t && e.isTypePredicateNode(t) ? gh(t, r) : o || Ro; + } + e.Debug.assert(!!r.resolvedTypePredicate); + } + return r.resolvedTypePredicate === Ro ? void 0 : r.resolvedTypePredicate; + } + function gh(r, i) { + var t = r.parameterName, o = r.type && Va(r.type); + return t.kind === 192 ? vg(r.assertsModifier ? 2 : 0, void 0, void 0, o) : vg(r.assertsModifier ? 3 : 1, t.escapedText, e.findIndex(i.parameters, function(s) { + return s.escapedName === t.escapedText; + }), o); + } + function iy(r, i, t) { + return i !== 2097152 ? Pa(r, t) : Do(r); + } + function yo(r) { + if (!r.resolvedReturnType) { + if (!yu(r, 3)) + return Pe; + var i = r.target ? un(yo(r.target), r.mapper) : r.compositeSignatures ? un(iy(e.map(r.compositeSignatures, yo), r.compositeKind, 2), r.mapper) : yg(r.declaration) || (e.nodeIsMissing(r.declaration.body) ? Oe : C0(r.declaration)); + if (r.flags & 8 ? i = FE(i) : r.flags & 16 && (i = i_(i)), !fi()) { + if (r.declaration) { + var t = e.getEffectiveReturnTypeNode(r.declaration); + if (t) + Xr(t, e.Diagnostics.Return_type_annotation_circularly_references_itself); + else if (n) { + var o = r.declaration, s = e.getNameOfDeclaration(o); + s ? Xr(s, e.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions, e.declarationNameToString(s)) : Xr(o, e.Diagnostics.Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions); + } + } + i = Oe; + } + r.resolvedReturnType = i; + } + return r.resolvedReturnType; + } + function yg(r) { + if (r.kind === 171) + return aa(so(r.parent.symbol)); + if (e.isJSDocConstructSignature(r)) + return Va(r.parameters[0].type); + var i = e.getEffectiveReturnTypeNode(r); + if (i) + return Va(i); + if (r.kind === 172 && Td(r)) { + var t = e.isInJSFile(r) && K_(r); + if (t) + return t; + var o = e.getDeclarationOfKind(Et(r), 173), s = Te(o); + if (s) + return s; + } + return ry(r); + } + function Z1(r) { + return !r.resolvedReturnType && v(r, 3) >= 0; + } + function _3(r) { + return ix(r) || Oe; + } + function ix(r) { + if (H(r)) { + var i = Jt(r.parameters[r.parameters.length - 1]), t = Yn(i) ? sv(i) : i; + return t && cs(t, nt); + } + } + function Xm(r, i, t, o) { + var s = eD(r, zp(i, r.typeParameters, Ul(r.typeParameters), t)); + if (o) { + var u = ok(yo(s)); + if (u) { + var h = xd(u); + h.typeParameters = o; + var z = xd(s); + return z.resolvedReturnType = im(h), z; + } + } + return s; + } + function eD(r, i) { + var t = r.instantiations || (r.instantiations = new e.Map()), o = Su(i), s = t.get(o); + return s || t.set(o, s = mh(r, i)), s; + } + function mh(r, i) { + return Tg(r, p3(r, i), true); + } + function p3(r, i) { + return Uc(r.typeParameters, i); + } + function Qm(r) { + return r.typeParameters ? r.erasedSignatureCache || (r.erasedSignatureCache = d3(r)) : r; + } + function d3(r) { + return Tg(r, sE(r.typeParameters), true); + } + function g3(r) { + return r.typeParameters ? r.canonicalSignatureCache || (r.canonicalSignatureCache = m3(r)) : r; + } + function m3(r) { + return Xm(r, e.map(r.typeParameters, function(i) { + return i.target && !Tc(i.target) ? i.target : i; + }), e.isInJSFile(r.declaration)); + } + function v3(r) { + var i = r.typeParameters; + if (i) { + if (r.baseSignatureCache) + return r.baseSignatureCache; + for (var t = sE(i), o = Uc(i, e.map(i, function(h) { + return Tc(h) || gr; + })), s = e.map(i, function(h) { + return un(h, o) || gr; + }), u = 0; u < i.length - 1; u++) + s = e_(s, o); + return s = e_(s, t), r.baseSignatureCache = Tg(r, Uc(i, s), true); + } + return r; + } + function im(r) { + var i; + if (!r.isolatedSignatureType) { + var t = (i = r.declaration) === null || i === void 0 ? void 0 : i.kind, o = t === void 0 || t === 171 || t === 175 || t === 180, s = tu(16); + s.members = we, s.properties = e.emptyArray, s.callSignatures = o ? e.emptyArray : [r], s.constructSignatures = o ? [r] : e.emptyArray, s.indexInfos = e.emptyArray, r.isolatedSignatureType = s; + } + return r.isolatedSignatureType; + } + function tx(r) { + return r.members ? rD(r.members) : void 0; + } + function rD(r) { + return r.get("__index"); + } + function zl(r, i, t, o) { + return { keyType: r, type: i, isReadonly: t, declaration: o }; + } + function ax(r) { + var i = tx(r); + return i ? nx(i) : e.emptyArray; + } + function nx(r) { + if (r.declarations) { + for (var i = [], t = function(h) { + if (h.parameters.length === 1) { + var z = h.parameters[0]; + z.type && Od(Va(z.type), function(me) { + vh(me) && !xa(i, me) && i.push(zl(me, h.type ? Va(h.type) : Oe, e.hasEffectiveModifier(h, 64), h)); + }); + } + }, o = 0, s = r.declarations; o < s.length; o++) { + var u = s[o]; + t(u); + } + return i; + } + return e.emptyArray; + } + function vh(r) { + return !!(r.flags & 4108) || sm(r) || !!(r.flags & 2097152) && !rv(r) && e.some(r.types, vh); + } + function ox(r) { + return e.mapDefined(e.filter(r.symbol && r.symbol.declarations, e.isTypeParameterDeclaration), e.getEffectiveConstraintOfTypeParameter)[0]; + } + function sx(r, i) { + var t, o; + if (!((t = r.symbol) === null || t === void 0) && t.declarations) + for (var s = 0, u = r.symbol.declarations; s < u.length; s++) { + var h = u[s]; + if (h.parent.kind === 190) { + var z = e.walkUpParenthesizedTypesAndGetParentAndChild(h.parent.parent), me = z[0], Me = me === void 0 ? h.parent : me, $e = z[1]; + if ($e.kind === 178 && !i) { + var tr = $e, dr = mS(tr); + if (dr) { + var Dr = tr.typeArguments.indexOf(Me); + if (Dr < dr.length) { + var Qr = Tc(dr[Dr]); + if (Qr) { + var li = Uc(dr, P0(tr, dr)), Ti = un(Qr, li); + Ti !== r && (o = e.append(o, Ti)); + } + } + } + } else if ($e.kind === 164 && $e.dotDotDotToken || $e.kind === 186 || $e.kind === 197 && $e.dotDotDotToken) + o = e.append(o, Zs(gr)); + else if ($e.kind === 199) + o = e.append(o, Li); + else if ($e.kind === 163 && $e.parent.kind === 195) + o = e.append(o, at); + else if ($e.kind === 195 && $e.type && e.skipParentheses($e.type) === h.parent && $e.parent.kind === 189 && $e.parent.extendsType === $e && $e.parent.checkType.kind === 195 && $e.parent.checkType.type) { + var Ci = $e.parent.checkType, $i = Va(Ci.type); + o = e.append(o, un($i, Yd(Js(Et(Ci.typeParameter)), Ci.typeParameter.constraint ? Va(Ci.typeParameter.constraint) : at))); + } + } + } + return o && Do(o); + } + function tm(r) { + if (!r.constraint) + if (r.target) { + var i = Tc(r.target); + r.constraint = i ? un(i, r.mapper) : Kn; + } else { + var t = ox(r); + if (!t) + r.constraint = sx(r) || Kn; + else { + var o = Va(t); + o.flags & 1 && !nn(o) && (o = t.parent.parent.kind === 195 ? at : gr), r.constraint = o; + } + } + return r.constraint === Kn ? void 0 : r.constraint; + } + function cx(r) { + var i = e.getDeclarationOfKind(r.symbol, 163), t = e.isJSDocTemplateTag(i.parent) ? e.getEffectiveContainerForJSDocTemplateTag(i.parent) : i.parent; + return t && Et(t); + } + function Su(r) { + var i = ""; + if (r) + for (var t = r.length, o = 0; o < t; ) { + for (var s = r[o].id, u = 1; o + u < t && r[o + u].id === s + u; ) + u++; + i.length && (i += ","), i += s, u > 1 && (i += ":" + u), o += u; + } + return i; + } + function hg(r, i) { + return r ? "@".concat(y(r)) + (i ? ":".concat(Su(i)) : "") : ""; + } + function iD(r, i) { + for (var t = 0, o = 0, s = r; o < s.length; o++) { + var u = s[o]; + u.flags & i || (t |= e.getObjectFlags(u)); + } + return t & 458752; + } + function Yf(r, i) { + var t = Su(i), o = r.instantiations.get(t); + return o || (o = tu(4, r.symbol), r.instantiations.set(t, o), o.objectFlags |= i ? iD(i, 0) : 0, o.target = r, o.resolvedTypeArguments = i), o; + } + function ux(r) { + var i = mc(r.flags); + return i.symbol = r.symbol, i.objectFlags = r.objectFlags, i.target = r.target, i.resolvedTypeArguments = r.resolvedTypeArguments, i; + } + function tD(r, i, t, o, s) { + if (!o) { + o = Qd(i); + var u = bg(o); + s = t ? e_(u, t) : u; + } + var h = tu(4, r.symbol); + return h.target = r, h.node = i, h.mapper = t, h.aliasSymbol = o, h.aliasTypeArguments = s, h; + } + function xo(r) { + var i, t; + if (!r.resolvedTypeArguments) { + if (!yu(r, 6)) + return ((i = r.target.localTypeParameters) === null || i === void 0 ? void 0 : i.map(function() { + return Pe; + })) || e.emptyArray; + var o = r.node, s = o ? o.kind === 178 ? e.concatenate(r.target.outerTypeParameters, P0(o, r.target.localTypeParameters)) : o.kind === 183 ? [Va(o.elementType)] : e.map(o.elements, Va) : e.emptyArray; + fi() ? r.resolvedTypeArguments = r.mapper ? e_(s, r.mapper) : s : (r.resolvedTypeArguments = ((t = r.target.localTypeParameters) === null || t === void 0 ? void 0 : t.map(function() { + return Pe; + })) || e.emptyArray, Xr(r.node || Ie, r.target.symbol ? e.Diagnostics.Type_arguments_for_0_circularly_reference_themselves : e.Diagnostics.Tuple_type_arguments_circularly_reference_themselves, r.target.symbol && tn(r.target.symbol))); + } + return r.resolvedTypeArguments; + } + function $_(r) { + return e.length(r.target.typeParameters); + } + function lx(r, i) { + var t = go(so(i)), o = t.localTypeParameters; + if (o) { + var s = e.length(r.typeArguments), u = Ul(o), h = e.isInJSFile(r), z = !n && h; + if (!z && (s < u || s > o.length)) { + var me = h && e.isExpressionWithTypeArguments(r) && !e.isJSDocAugmentsTag(r.parent), Me = u === o.length ? me ? e.Diagnostics.Expected_0_type_arguments_provide_these_with_an_extends_tag : e.Diagnostics.Generic_type_0_requires_1_type_argument_s : me ? e.Diagnostics.Expected_0_1_type_arguments_provide_these_with_an_extends_tag : e.Diagnostics.Generic_type_0_requires_between_1_and_2_type_arguments, $e = Ot(t, void 0, 2); + if (Xr(r, Me, $e, u, o.length), !h) + return Pe; + } + if (r.kind === 178 && wx(r, e.length(r.typeArguments) !== o.length)) + return tD(t, r, void 0); + var tr = e.concatenate(t.outerTypeParameters, zp(bh(r), o, u, h)); + return Yf(t, tr); + } + return Wp(r, i) ? t : Pe; + } + function am(r, i, t, o) { + var s = go(r); + if (s === De && x.has(r.escapedName) && i && i.length === 1) + return Th(r, i[0]); + var u = Aa(r), h = u.typeParameters, z = Su(i) + hg(t, o), me = u.instantiations.get(z); + return me || u.instantiations.set(z, me = lE(s, Uc(h, zp(i, h, Ul(h), e.isInJSFile(r.valueDeclaration))), t, o)), me; + } + function y3(r, i) { + if (e.getCheckFlags(i) & 1048576) { + var t = bh(r), o = hg(i, t), s = Ar.get(o); + return s || (s = ms(1, "error"), s.aliasSymbol = i, s.aliasTypeArguments = t, Ar.set(o, s)), s; + } + var u = go(i), h = Aa(i).typeParameters; + if (h) { + var z = e.length(r.typeArguments), me = Ul(h); + if (z < me || z > h.length) + return Xr(r, me === h.length ? e.Diagnostics.Generic_type_0_requires_1_type_argument_s : e.Diagnostics.Generic_type_0_requires_between_1_and_2_type_arguments, tn(i), me, h.length), Pe; + var Me = Qd(r), $e = Me && (fx(i) || !fx(Me)) ? Me : void 0; + return am(i, bh(r), $e, bg($e)); + } + return Wp(r, i) ? u : Pe; + } + function fx(r) { + var i, t = (i = r.declarations) === null || i === void 0 ? void 0 : i.find(e.isTypeAlias); + return !!(t && e.getContainingFunction(t)); + } + function h3(r) { + switch (r.kind) { + case 178: + return r.typeName; + case 228: + var i = r.expression; + if (e.isEntityNameExpression(i)) + return i; + } + } + function _x(r) { + return r.parent ? "".concat(_x(r.parent), ".").concat(r.escapedName) : r.escapedName; + } + function yh(r) { + var i = r.kind === 161 ? r.right : r.kind === 206 ? r.name : r, t = i.escapedText; + if (t) { + var o = r.kind === 161 ? yh(r.left) : r.kind === 206 ? yh(r.expression) : void 0, s = o ? "".concat(_x(o), ".").concat(t) : t, u = mr.get(s); + return u || (mr.set(s, u = oo(524288, t, 1048576)), u.parent = o, u.declaredType = Ue), u; + } + return xe; + } + function nm(r, i, t) { + var o = h3(r); + if (!o) + return xe; + var s = Ds(o, i, t); + return s && s !== xe ? s : t ? xe : yh(o); + } + function hh(r, i) { + if (i === xe) + return Pe; + if (i = Cc(i) || i, i.flags & 96) + return lx(r, i); + if (i.flags & 524288) + return y3(r, i); + var t = Vd(i); + if (t) + return Wp(r, i) ? jc(t) : Pe; + if (i.flags & 111551 && Dh(r)) { + var o = D3(r, i); + return o || (nm(r, 788968), Jt(i)); + } + return Pe; + } + function D3(r, i) { + var t = va(r); + if (!t.resolvedJSDocType) { + var o = Jt(i), s = o; + if (i.valueDeclaration) { + var u = r.kind === 200 && r.qualifier; + o.symbol && o.symbol !== i && u && (s = hh(r, o.symbol)); + } + t.resolvedJSDocType = s; + } + return t.resolvedJSDocType; + } + function px(r, i) { + if (i.flags & 3 || i === r) + return r; + var t = "".concat(fu(r), ">").concat(fu(i)), o = Ze.get(t); + if (o) + return o; + var s = mc(33554432); + return s.baseType = r, s.substitute = i, Ze.set(t, s), s; + } + function dx(r) { + return r.kind === 184 && r.elements.length === 1; + } + function gx(r, i, t) { + return dx(i) && dx(t) ? gx(r, i.elements[0], t.elements[0]) : rp(Va(i)) === rp(r) ? Va(t) : void 0; + } + function mx(r, i) { + for (var t, o = true; i && !e.isStatement(i) && i.kind !== 320; ) { + var s = i.parent; + if (s.kind === 164 && (o = !o), (o || r.flags & 8650752) && s.kind === 189 && i === s.trueType) { + var u = gx(r, s.checkType, s.extendsType); + u && (t = e.append(t, u)); + } else if (r.flags & 262144 && s.kind === 195 && i === s.type) { + var h = Va(s); + if (Du(h) === rp(r)) { + var z = Ih(h); + if (z) { + var u = Tc(z); + u && gf(u, Pd) && (t = e.append(t, Pa([nt, $a]))); + } + } + } + i = s; + } + return t ? px(r, Do(e.append(t, r))) : r; + } + function Dh(r) { + return !!(r.flags & 8388608) && (r.kind === 178 || r.kind === 200); + } + function Wp(r, i) { + return r.typeArguments ? (Xr(r, e.Diagnostics.Type_0_is_not_generic, i ? tn(i) : r.typeName ? e.declarationNameToString(r.typeName) : C), false) : true; + } + function vx(r) { + if (e.isIdentifier(r.typeName)) { + var i = r.typeArguments; + switch (r.typeName.escapedText) { + case "String": + return Wp(r), Li; + case "Number": + return Wp(r), nt; + case "Boolean": + return Wp(r), Ii; + case "Void": + return Wp(r), Fi; + case "Undefined": + return Wp(r), Tr; + case "Null": + return Wp(r), Wi; + case "Function": + case "function": + return Wp(r), br; + case "array": + return (!i || !i.length) && !n ? mo : void 0; + case "promise": + return (!i || !i.length) && !n ? Ny(Oe) : void 0; + case "Object": + if (i && i.length === 2) { + if (e.isJSDocIndexSignature(r)) { + var t = Va(i[0]), o = Va(i[1]), s = t === Li || t === nt ? [zl(t, o, false)] : e.emptyArray; + return rs(void 0, we, e.emptyArray, e.emptyArray, s); + } + return Oe; + } + return Wp(r), n ? void 0 : Oe; + } + } + } + function b3(r) { + var i = Va(r.type); + return Ye ? Uh(i, 65536) : i; + } + function ty(r) { + var i = va(r); + if (!i.resolvedType) { + if (e.isConstTypeReference(r) && e.isAssertionExpression(r.parent)) + return i.resolvedSymbol = xe, i.resolvedType = Os(r.parent.expression); + var t = void 0, o = void 0, s = 788968; + Dh(r) && (o = vx(r), o || (t = nm(r, s, true), t === xe ? t = nm(r, s | 111551) : nm(r, s), o = hh(r, t))), o || (t = nm(r, s), o = hh(r, t)), i.resolvedSymbol = t, i.resolvedType = o; + } + return i.resolvedType; + } + function bh(r) { + return e.map(r.typeArguments, Va); + } + function yx(r) { + var i = va(r); + if (!i.resolvedType) { + var t = kk(r); + i.resolvedType = jc($c(t)); + } + return i.resolvedType; + } + function hx(r, i) { + function t(s) { + var u = s.declarations; + if (u) + for (var h = 0, z = u; h < z.length; h++) { + var me = z[h]; + switch (me.kind) { + case 257: + case 258: + case 260: + return me; + } + } + } + if (!r) + return i ? kn : Ba; + var o = go(r); + return o.flags & 524288 ? e.length(o.typeParameters) !== i ? (Xr(t(r), e.Diagnostics.Global_type_0_must_have_1_type_parameter_s, e.symbolName(r), i), i ? kn : Ba) : o : (Xr(t(r), e.Diagnostics.Global_type_0_must_be_a_class_or_interface_type, e.symbolName(r)), i ? kn : Ba); + } + function Dx(r, i) { + return Ym(r, 111551, i ? e.Diagnostics.Cannot_find_global_value_0 : void 0); + } + function bx(r, i) { + return Ym(r, 788968, i ? e.Diagnostics.Cannot_find_global_type_0 : void 0); + } + function aD(r, i, t) { + var o = Ym(r, 788968, t ? e.Diagnostics.Cannot_find_global_type_0 : void 0); + if (o && (go(o), e.length(Aa(o).typeParameters) !== i)) { + var s = o.declarations && e.find(o.declarations, e.isTypeAliasDeclaration); + Xr(s, e.Diagnostics.Global_type_0_must_have_1_type_parameter_s, e.symbolName(o), i); + return; + } + return o; + } + function Ym(r, i, t) { + return es(void 0, r, i, t, r, false, false, false); + } + function lc(r, i, t) { + var o = bx(r, t); + return o || t ? hx(o, i) : void 0; + } + function S3() { + return Xs || (Xs = lc("TypedPropertyDescriptor", 1, true) || kn); + } + function T3() { + return pt || (pt = lc("TemplateStringsArray", 0, true) || Ba); + } + function Sx() { + return Pt || (Pt = lc("ImportMeta", 0, true) || Ba); + } + function Tx() { + if (!ga) { + var r = oo(0, "ImportMetaExpression"), i = Sx(), t = oo(4, "meta", 8); + t.parent = r, t.type = i; + var o = e.createSymbolTable([t]); + r.members = o, ga = rs(r, o, e.emptyArray, e.emptyArray, e.emptyArray); + } + return ga; + } + function xx(r) { + return ua || (ua = lc("ImportCallOptions", 0, r)) || Ba; + } + function Ex(r) { + return Pc || (Pc = Dx("Symbol", r)); + } + function x3(r) { + return Vc || (Vc = bx("SymbolConstructor", r)); + } + function Cx() { + return Kc || (Kc = lc("Symbol", 0, false)) || Ba; + } + function ay(r) { + return pc || (pc = lc("Promise", 1, r)) || kn; + } + function kx(r) { + return hs || (hs = lc("PromiseLike", 1, r)) || kn; + } + function nD(r) { + return tc || (tc = Dx("Promise", r)); + } + function E3(r) { + return ps || (ps = lc("PromiseConstructorLike", 0, r)) || Ba; + } + function C3(r) { + return yi || (yi = lc("AsyncIterable", 1, r)) || kn; + } + function k3(r) { + return qi || (qi = lc("AsyncIterator", 3, r)) || kn; + } + function A3(r) { + return je || (je = lc("AsyncIterableIterator", 1, r)) || kn; + } + function N3(r) { + return Hr || (Hr = lc("AsyncGenerator", 3, r)) || kn; + } + function Ax(r) { + return Qs || (Qs = lc("Iterable", 1, r)) || kn; + } + function P3(r) { + return js || (js = lc("Iterator", 3, r)) || kn; + } + function I3(r) { + return ds || (ds = lc("IterableIterator", 1, r)) || kn; + } + function w3(r) { + return Ji || (Ji = lc("Generator", 3, r)) || kn; + } + function O3(r) { + return ce || (ce = lc("IteratorYieldResult", 1, r)) || kn; + } + function F3(r) { + return Rr || (Rr = lc("IteratorReturnResult", 1, r)) || kn; + } + function Nx(r, i) { + i === void 0 && (i = 0); + var t = Ym(r, 788968, void 0); + return t && hx(t, i); + } + function M3() { + return Xn || (Xn = aD("Extract", 2, true) || xe), Xn === xe ? void 0 : Xn; + } + function L3() { + return jr || (jr = aD("Omit", 2, true) || xe), jr === xe ? void 0 : jr; + } + function oD(r) { + return fo || (fo = aD("Awaited", 1, r) || (r ? xe : void 0)), fo === xe ? void 0 : fo; + } + function R3() { + return xs || (xs = lc("BigInt", 0, false)) || Ba; + } + function $m(r, i) { + return r !== kn ? Yf(r, i) : Ba; + } + function Px(r) { + return $m(S3(), [r]); + } + function B3(r) { + return $m(Ax(true), [r]); + } + function Zs(r, i) { + return $m(i ? Qi : Pi, [r]); + } + function sD(r) { + switch (r.kind) { + case 185: + return 2; + case 186: + return Ix(r); + case 197: + return r.questionToken ? 2 : r.dotDotDotToken ? Ix(r) : 1; + default: + return 1; + } + } + function Ix(r) { + return sy(r.type) ? 4 : 8; + } + function J3(r) { + var i = U3(r.parent), t = sy(r); + if (t) + return i ? Qi : Pi; + var o = e.map(r.elements, sD), s = e.some(r.elements, function(u) { + return u.kind !== 197; + }); + return cD(o, i, s ? void 0 : r.elements); + } + function wx(r, i) { + return !!Qd(r) || Ox(r) && (r.kind === 183 ? x_(r.elementType) : r.kind === 184 ? e.some(r.elements, x_) : i || e.some(r.typeArguments, x_)); + } + function Ox(r) { + var i = r.parent; + switch (i.kind) { + case 191: + case 197: + case 178: + case 187: + case 188: + case 194: + case 189: + case 193: + case 183: + case 184: + return Ox(i); + case 259: + return true; + } + return false; + } + function x_(r) { + switch (r.kind) { + case 178: + return Dh(r) || !!(nm(r, 788968).flags & 524288); + case 181: + return true; + case 193: + return r.operator !== 154 && x_(r.type); + case 191: + case 185: + case 197: + case 316: + case 314: + case 315: + case 309: + return x_(r.type); + case 186: + return r.type.kind !== 183 || x_(r.type.elementType); + case 187: + case 188: + return e.some(r.types, x_); + case 194: + return x_(r.objectType) || x_(r.indexType); + case 189: + return x_(r.checkType) || x_(r.extendsType) || x_(r.trueType) || x_(r.falseType); + } + return false; + } + function j3(r) { + var i = va(r); + if (!i.resolvedType) { + var t = J3(r); + if (t === kn) + i.resolvedType = Ba; + else if (!(r.kind === 184 && e.some(r.elements, function(s) { + return !!(sD(s) & 8); + })) && wx(r)) + i.resolvedType = r.kind === 184 && r.elements.length === 0 ? t : tD(t, r, void 0); + else { + var o = r.kind === 183 ? [Va(r.elementType)] : e.map(r.elements, Va); + i.resolvedType = uD(t, o); + } + } + return i.resolvedType; + } + function U3(r) { + return e.isTypeOperatorNode(r) && r.operator === 145; + } + function Wl(r, i, t, o) { + t === void 0 && (t = false); + var s = cD(i || e.map(r, function(u) { + return 1; + }), t, o); + return s === kn ? Ba : r.length ? uD(s, r) : s; + } + function cD(r, i, t) { + if (r.length === 1 && r[0] & 4) + return i ? Qi : Pi; + var o = e.map(r, function(u) { + return u & 1 ? "#" : u & 2 ? "?" : u & 4 ? "." : "*"; + }).join() + (i ? "R" : "") + (t && t.length ? "," + e.map(t, A).join(",") : ""), s = et.get(o); + return s || et.set(o, s = z3(r, i, t)), s; + } + function z3(r, i, t) { + var o = r.length, s = e.countWhere(r, function(Ti) { + return !!(Ti & 9); + }), u, h = [], z = 0; + if (o) { + u = new Array(o); + for (var me = 0; me < o; me++) { + var Me = u[me] = Hc(), $e = r[me]; + if (z |= $e, !(z & 12)) { + var tr = oo(4 | ($e & 2 ? 16777216 : 0), "" + me, i ? 8 : 0); + tr.tupleLabelDeclaration = t == null ? void 0 : t[me], tr.type = Me, h.push(tr); + } + } + } + var dr = h.length, Dr = oo(4, "length", i ? 8 : 0); + if (z & 12) + Dr.type = nt; + else { + for (var Qr = [], me = s; me <= o; me++) + Qr.push(If(me)); + Dr.type = Pa(Qr); + } + h.push(Dr); + var li = tu(12); + return li.typeParameters = u, li.outerTypeParameters = void 0, li.localTypeParameters = u, li.instantiations = new e.Map(), li.instantiations.set(Su(li.typeParameters), li), li.target = li, li.resolvedTypeArguments = li.typeParameters, li.thisType = Hc(), li.thisType.isThisType = true, li.thisType.constraint = li, li.declaredProperties = h, li.declaredCallSignatures = e.emptyArray, li.declaredConstructSignatures = e.emptyArray, li.declaredIndexInfos = e.emptyArray, li.elementFlags = r, li.minLength = s, li.fixedLength = dr, li.hasRestElement = !!(z & 12), li.combinedFlags = z, li.readonly = i, li.labeledElementDeclarations = t, li; + } + function uD(r, i) { + return r.objectFlags & 8 ? Fx(r, i) : Yf(r, i); + } + function Fx(r, i) { + var t, o, s; + if (!(r.combinedFlags & 14)) + return Yf(r, i); + if (r.combinedFlags & 8) { + var u = e.findIndex(i, function(Ci, $i) { + return !!(r.elementFlags[$i] & 8 && Ci.flags & 1179648); + }); + if (u >= 0) + return ny(e.map(i, function(Ci, $i) { + return r.elementFlags[$i] & 8 ? Ci : gr; + })) ? Ss(i[u], function(Ci) { + return Fx(r, e.replaceElement(i, u, Ci)); + }) : Pe; + } + for (var h = [], z = [], me = [], Me = -1, $e = -1, tr = -1, dr = function(Ci) { + var $i = i[Ci], Zi = r.elementFlags[Ci]; + if (Zi & 8) + if ($i.flags & 58982400 || Bc($i)) + Ti($i, 8, (t = r.labeledElementDeclarations) === null || t === void 0 ? void 0 : t[Ci]); + else if (Yn($i)) { + var qt = xo($i); + if (qt.length + h.length >= 1e4) + return Xr(Ie, e.isPartOfTypeNode(Ie) ? e.Diagnostics.Type_produces_a_tuple_type_that_is_too_large_to_represent : e.Diagnostics.Expression_produces_a_tuple_type_that_is_too_large_to_represent), { value: Pe }; + e.forEach(qt, function(Nt, Ra) { + var ca; + return Ti(Nt, $i.target.elementFlags[Ra], (ca = $i.target.labeledElementDeclarations) === null || ca === void 0 ? void 0 : ca[Ra]); + }); + } else + Ti(sp($i) && cs($i, nt) || Pe, 4, (o = r.labeledElementDeclarations) === null || o === void 0 ? void 0 : o[Ci]); + else + Ti($i, Zi, (s = r.labeledElementDeclarations) === null || s === void 0 ? void 0 : s[Ci]); + }, Dr = 0; Dr < i.length; Dr++) { + var Qr = dr(Dr); + if (typeof Qr == "object") + return Qr.value; + } + for (var Dr = 0; Dr < Me; Dr++) + z[Dr] & 2 && (z[Dr] = 1); + $e >= 0 && $e < tr && (h[$e] = Pa(e.sameMap(h.slice($e, tr + 1), function(Ci, $i) { + return z[$e + $i] & 8 ? Jc(Ci, nt) : Ci; + })), h.splice($e + 1, tr - $e), z.splice($e + 1, tr - $e), me == null || me.splice($e + 1, tr - $e)); + var li = cD(z, r.readonly, me); + return li === kn ? Ba : z.length ? Yf(li, h) : li; + function Ti(Ci, $i, Zi) { + $i & 1 && (Me = z.length), $i & 4 && $e < 0 && ($e = z.length), $i & 6 && (tr = z.length), h.push(Ci), z.push($i), me && Zi ? me.push(Zi) : me = void 0; + } + } + function Zm(r, i, t) { + t === void 0 && (t = 0); + var o = r.target, s = $_(r) - t; + return i > o.fixedLength ? Aw(r) || Wl(e.emptyArray) : Wl(xo(r).slice(i, s), o.elementFlags.slice(i, s), false, o.labeledElementDeclarations && o.labeledElementDeclarations.slice(i, s)); + } + function Mx(r) { + return Pa(e.append(e.arrayOf(r.target.fixedLength, function(i) { + return Bu("" + i); + }), ql(r.target.readonly ? Qi : Pi))); + } + function Lx(r, i) { + var t = e.findIndex(r.elementFlags, function(o) { + return !(o & i); + }); + return t >= 0 ? t : r.elementFlags.length; + } + function Sh(r, i) { + return r.elementFlags.length - e.findLastIndex(r.elementFlags, function(t) { + return !(t & i); + }) - 1; + } + function W3(r) { + return kc(Va(r.type), true); + } + function fu(r) { + return r.id; + } + function $f(r, i) { + return e.binarySearch(r, i, fu, e.compareValues) >= 0; + } + function lD(r, i) { + var t = e.binarySearch(r, i, fu, e.compareValues); + return t < 0 ? (r.splice(~t, 0, i), true) : false; + } + function q3(r, i, t) { + var o = t.flags; + if (o & 1048576) + return Rx(r, i | (H3(t) ? 1048576 : 0), t.types); + if (!(o & 131072)) + if (i |= o & 205258751, o & 465829888 && (i |= 33554432), t === Mr && (i |= 8388608), !Ye && o & 98304) + e.getObjectFlags(t) & 65536 || (i |= 4194304); + else { + var s = r.length, u = s && t.id > r[s - 1].id ? ~s : e.binarySearch(r, t, fu, e.compareValues); + u < 0 && r.splice(~u, 0, t); + } + return i; + } + function Rx(r, i, t) { + for (var o = 0, s = t; o < s.length; o++) { + var u = s[o]; + i = q3(r, i, u); + } + return i; + } + function V3(r, i) { + if (r.length < 2) + return r; + var t = Su(r), o = Sr.get(t); + if (o) + return o; + for (var s = i && e.some(r, function(Ti) { + return !!(Ti.flags & 524288) && !Bc(Ti) && LD(Ru(Ti)); + }), u = r.length, h = u, z = 0; h > 0; ) { + h--; + var me = r[h]; + if (s || me.flags & 469499904) + for (var Me = me.flags & 61603840 ? e.find(uo(me), function(Ti) { + return Vl(Jt(Ti)); + }) : void 0, $e = Me && jc(Jt(Me)), tr = 0, dr = r; tr < dr.length; tr++) { + var Dr = dr[tr]; + if (me !== Dr) { + if (z === 1e5) { + var Qr = z / (u - h) * u; + if (Qr > 1e6) { + e.tracing === null || e.tracing === void 0 || e.tracing.instant("checkTypes", "removeSubtypes_DepthLimit", { typeIds: r.map(function(Ti) { + return Ti.id; + }) }), Xr(Ie, e.Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); + return; + } + } + if (z++, Me && Dr.flags & 61603840) { + var li = da(Dr, Me.escapedName); + if (li && Vl(li) && jc(li) !== $e) + continue; + } + if (r_(me, Dr, ki) && (!(e.getObjectFlags(bd(me)) & 1) || !(e.getObjectFlags(bd(Dr)) & 1) || xg(me, Dr))) { + e.orderedRemoveItemAt(r, h); + break; + } + } + } + } + return Sr.set(t, r), r; + } + function K3(r, i, t) { + for (var o = r.length; o > 0; ) { + o--; + var s = r[o], u = s.flags, h = u & 402653312 && i & 4 || u & 256 && i & 8 || u & 2048 && i & 64 || u & 8192 && i & 4096 || t && u & 32768 && i & 16384 || Kp(s) && $f(r, s.regularType); + h && e.orderedRemoveItemAt(r, o); + } + } + function G3(r) { + var i = e.filter(r, sm); + if (i.length) + for (var t = r.length, o = function() { + t--; + var s = r[t]; + s.flags & 128 && e.some(i, function(u) { + return VE(s, u); + }) && e.orderedRemoveItemAt(r, t); + }; t > 0; ) + o(); + } + function H3(r) { + return !!(r.flags & 1048576 && (r.aliasSymbol || r.origin)); + } + function Bx(r, i) { + for (var t = 0, o = i; t < o.length; t++) { + var s = o[t]; + if (s.flags & 1048576) { + var u = s.origin; + s.aliasSymbol || u && !(u.flags & 1048576) ? e.pushIfUnique(r, s) : u && u.flags & 1048576 && Bx(r, u.types); + } + } + } + function fD(r, i) { + var t = Ip(r); + return t.types = i, t; + } + function Pa(r, i, t, o, s) { + if (i === void 0 && (i = 1), r.length === 0) + return ui; + if (r.length === 1) + return r[0]; + var u = [], h = Rx(u, 0, r); + if (i !== 0) { + if (h & 3) + return h & 1 ? h & 8388608 ? Mr : Oe : h & 65536 || $f(u, gr) ? gr : Vr; + if (yr && h & 32768) { + var z = e.binarySearch(u, Yi, fu, e.compareValues); + z >= 0 && $f(u, Tr) && e.orderedRemoveItemAt(u, z); + } + if ((h & 402664320 || h & 16384 && h & 32768) && K3(u, h, !!(i & 2)), h & 128 && h & 134217728 && G3(u), i === 2 && (u = V3(u, !!(h & 524288)), !u)) + return Pe; + if (u.length === 0) + return h & 65536 ? h & 4194304 ? Wi : ct : h & 32768 ? h & 4194304 ? Tr : vi : ui; + } + if (!s && h & 1048576) { + var me = []; + Bx(me, r); + for (var Me = [], $e = function($i) { + e.some(me, function(Zi) { + return $f(Zi.types, $i); + }) || Me.push($i); + }, tr = 0, dr = u; tr < dr.length; tr++) { + var Dr = dr[tr]; + $e(Dr); + } + if (!t && me.length === 1 && Me.length === 0) + return me[0]; + var Qr = e.reduceLeft(me, function($i, Zi) { + return $i + Zi.types.length; + }, 0); + if (Qr + Me.length === u.length) { + for (var li = 0, Ti = me; li < Ti.length; li++) { + var Dr = Ti[li]; + lD(Me, Dr); + } + s = fD(1048576, Me); + } + } + var Ci = (h & 36323363 ? 0 : 32768) | (h & 2097152 ? 16777216 : 0); + return pD(u, Ci, t, o, s); + } + function X3(r, i) { + for (var t, o = [], s = 0, u = r; s < u.length; s++) { + var h = u[s], z = Yc(h); + if (!z || z.kind === 2 || z.kind === 3) { + if (i !== 2097152) + continue; + return; + } + if (t) { + if (!_D(t, z)) + return; + } else + t = z; + o.push(z.type); + } + if (!!t) { + var me = iy(o, i); + return vg(t.kind, t.parameterName, t.parameterIndex, me); + } + } + function _D(r, i) { + return r.kind === i.kind && r.parameterIndex === i.parameterIndex; + } + function pD(r, i, t, o, s) { + if (r.length === 0) + return ui; + if (r.length === 1) + return r[0]; + var u = s ? s.flags & 1048576 ? "|".concat(Su(s.types)) : s.flags & 2097152 ? "&".concat(Su(s.types)) : "#".concat(s.type.id, "|").concat(Su(r)) : Su(r), h = u + hg(t, o), z = Gi.get(h); + return z || (z = mc(1048576), z.objectFlags = i | iD(r, 98304), z.types = r, z.origin = s, z.aliasSymbol = t, z.aliasTypeArguments = o, r.length === 2 && r[0].flags & 512 && r[1].flags & 512 && (z.flags |= 16, z.intrinsicName = "boolean"), Gi.set(h, z)), z; + } + function Q3(r) { + var i = va(r); + if (!i.resolvedType) { + var t = Qd(r); + i.resolvedType = Pa(e.map(r.types, Va), 1, t, bg(t)); + } + return i.resolvedType; + } + function Y3(r, i, t) { + var o = t.flags; + return o & 2097152 ? Jx(r, i, t.types) : (vE(t) ? i & 16777216 || (i |= 16777216, r.set(t.id.toString(), t)) : (o & 3 ? t === Mr && (i |= 8388608) : (Ye || !(o & 98304)) && (yr && t === Yi && (i |= 262144, t = Tr), r.has(t.id.toString()) || (t.flags & 109440 && i & 109440 && (i |= 67108864), r.set(t.id.toString(), t))), i |= o & 205258751), i); + } + function Jx(r, i, t) { + for (var o = 0, s = t; o < s.length; o++) { + var u = s[o]; + i = Y3(r, i, jc(u)); + } + return i; + } + function $3(r, i) { + for (var t = r.length; t > 0; ) { + t--; + var o = r[t], s = o.flags & 4 && i & 402653312 || o.flags & 8 && i & 256 || o.flags & 64 && i & 2048 || o.flags & 4096 && i & 8192; + s && e.orderedRemoveItemAt(r, t); + } + } + function Z3(r, i) { + for (var t = 0, o = r; t < o.length; t++) { + var s = o[t]; + if (!$f(s.types, i)) { + var u = i.flags & 128 ? Li : i.flags & 256 ? nt : i.flags & 2048 ? Mt : i.flags & 8192 ? Ki : void 0; + if (!u || !$f(s.types, u)) + return false; + } + } + return true; + } + function eI(r) { + for (var i = r.length, t = e.filter(r, function(z) { + return !!(z.flags & 128); + }); i > 0; ) { + i--; + var o = r[i]; + if (!!(o.flags & 134217728)) + for (var s = 0, u = t; s < u.length; s++) { + var h = u[s]; + if (E_(h, o)) { + e.orderedRemoveItemAt(r, i); + break; + } else if (sm(o)) + return true; + } + } + return false; + } + function jx(r, i) { + return e.every(r, function(t) { + return !!(t.flags & 1048576) && e.some(t.types, function(o) { + return !!(o.flags & i); + }); + }); + } + function Ux(r, i) { + for (var t = 0; t < r.length; t++) + r[t] = ec(r[t], function(o) { + return !(o.flags & i); + }); + } + function rI(r) { + var i, t = e.findIndex(r, function(dr) { + return !!(e.getObjectFlags(dr) & 32768); + }); + if (t < 0) + return false; + for (var o = t + 1; o < r.length; ) { + var s = r[o]; + e.getObjectFlags(s) & 32768 ? ((i || (i = [r[t]])).push(s), e.orderedRemoveItemAt(r, o)) : o++; + } + if (!i) + return false; + for (var u = [], h = [], z = 0, me = i; z < me.length; z++) + for (var Me = me[z], $e = 0, tr = Me.types; $e < tr.length; $e++) { + var s = tr[$e]; + lD(u, s) && Z3(i, s) && lD(h, s); + } + return r[t] = pD(h, 32768), true; + } + function iI(r, i, t) { + var o = mc(2097152); + return o.objectFlags = iD(r, 98304), o.types = r, o.aliasSymbol = i, o.aliasTypeArguments = t, o; + } + function Do(r, i, t) { + var o = new e.Map(), s = Jx(o, 0, r), u = e.arrayFrom(o.values()); + if (s & 131072) + return e.contains(u, Bt) ? Bt : ui; + if (Ye && s & 98304 && s & 84410368 || s & 67108864 && s & 402783228 || s & 402653316 && s & 67238776 || s & 296 && s & 469891796 || s & 2112 && s & 469889980 || s & 12288 && s & 469879804 || s & 49152 && s & 469842940 || s & 134217728 && s & 128 && eI(u)) + return ui; + if (s & 1) + return s & 8388608 ? Mr : Oe; + if (!Ye && s & 98304) + return s & 32768 ? Tr : Wi; + if ((s & 4 && s & 402653312 || s & 8 && s & 256 || s & 64 && s & 2048 || s & 4096 && s & 8192) && $3(u, s), s & 16777216 && s & 524288 && e.orderedRemoveItemAt(u, e.findIndex(u, vE)), s & 262144 && (u[u.indexOf(Tr)] = Yi), u.length === 0) + return gr; + if (u.length === 1) + return u[0]; + var h = Su(u) + hg(i, t), z = Wt.get(h); + if (!z) { + if (s & 1048576) + if (rI(u)) + z = Do(u, i, t); + else if (jx(u, 32768)) { + var me = yr && e.some(u, function(tr) { + return $f(tr.types, Yi); + }) ? Yi : Tr; + Ux(u, 32768), z = Pa([Do(u), me], 1, i, t); + } else if (jx(u, 65536)) + Ux(u, 65536), z = Pa([Do(u), Wi], 1, i, t); + else { + if (!ny(u)) + return Pe; + var Me = tI(u), $e = e.some(Me, function(tr) { + return !!(tr.flags & 2097152); + }) ? fD(2097152, u) : void 0; + z = Pa(Me, 1, i, t, $e); + } + else + z = iI(u, i, t); + Wt.set(h, z); + } + return z; + } + function zx(r) { + return e.reduceLeft(r, function(i, t) { + return t.flags & 1048576 ? i * t.types.length : t.flags & 131072 ? 0 : i; + }, 1); + } + function ny(r) { + var i = zx(r); + return i >= 1e5 ? (e.tracing === null || e.tracing === void 0 || e.tracing.instant("checkTypes", "checkCrossProductUnion_DepthLimit", { typeIds: r.map(function(t) { + return t.id; + }), size: i }), Xr(Ie, e.Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent), false) : true; + } + function tI(r) { + for (var i = zx(r), t = [], o = 0; o < i; o++) { + for (var s = r.slice(), u = o, h = r.length - 1; h >= 0; h--) + if (r[h].flags & 1048576) { + var z = r[h].types, me = z.length; + s[h] = z[u % me], u = Math.floor(u / me); + } + var Me = Do(s); + Me.flags & 131072 || t.push(Me); + } + return t; + } + function aI(r) { + var i = va(r); + if (!i.resolvedType) { + var t = Qd(r); + i.resolvedType = Do(e.map(r.types, Va), t, bg(t)); + } + return i.resolvedType; + } + function Wx(r, i) { + var t = mc(4194304); + return t.type = r, t.stringsOnly = i, t; + } + function nI(r) { + var i = Ip(4194304); + return i.type = r, i; + } + function dD(r, i) { + return i ? r.resolvedStringIndexType || (r.resolvedStringIndexType = Wx(r, true)) : r.resolvedIndexType || (r.resolvedIndexType = Wx(r, false)); + } + function oI(r, i, t) { + var o = Du(r), s = Mu(r), u = Jl(r.target || r); + if (!u && !t) + return s; + var h = []; + if (mg(r)) { + if (qp(s)) + return dD(r, i); + var z = $s(Ed(r)); + Um(z, 8576, i, Me); + } else + Od(Kd(s), Me); + qp(s) && Od(s, Me); + var me = t ? ec(Pa(h), function($e) { + return !($e.flags & 5); + }) : Pa(h); + if (me.flags & 1048576 && s.flags & 1048576 && Su(me.types) === Su(s.types)) + return s; + return me; + function Me($e) { + var tr = u ? un(u, tv(r.mapper, o, $e)) : $e; + h.push(tr === Li ? ji : tr); + } + } + function sI(r) { + var i = Du(r); + return t(Jl(r) || i); + function t(o) { + return o.flags & 68157439 ? true : o.flags & 16777216 ? o.root.isDistributive && o.checkType === i : o.flags & 137363456 ? e.every(o.types, t) : o.flags & 8388608 ? t(o.objectType) && t(o.indexType) : o.flags & 33554432 ? t(o.substitute) : o.flags & 268435456 ? t(o.type) : false; + } + } + function Z_(r) { + return e.isPrivateIdentifier(r) ? ui : e.isIdentifier(r) ? Bu(e.unescapeLeadingUnderscores(r.escapedText)) : jc(e.isComputedPropertyName(r) ? t_(r) : yn(r)); + } + function om(r, i, t) { + if (t || !(e.getDeclarationModifierFlagsFromSymbol(r) & 24)) { + var o = Aa(dg(r)).nameType; + if (!o) { + var s = e.getNameOfDeclaration(r.valueDeclaration); + o = r.escapedName === "default" ? Bu("default") : s && Z_(s) || (e.isKnownSymbol(r) ? void 0 : Bu(e.symbolName(r))); + } + if (o && o.flags & i) + return o; + } + return ui; + } + function qx(r, i) { + return !!(r.flags & i || r.flags & 2097152 && e.some(r.types, function(t) { + return qx(t, i); + })); + } + function cI(r, i, t) { + var o = t && (e.getObjectFlags(r) & 7 || r.aliasSymbol) ? nI(r) : void 0, s = e.map(uo(r), function(h) { + return om(h, i); + }), u = e.map(Hn(r), function(h) { + return h !== Ko && qx(h.keyType, i) ? h.keyType === Li && i & 8 ? ji : h.keyType : ui; + }); + return Pa(e.concatenate(s, u), 1, void 0, void 0, o); + } + function uI(r) { + return e.some(r.types, function(i) { + var t = KI(i); + return bu(t) !== t; + }); + } + function ql(r, i, t) { + return i === void 0 && (i = Ge), r = bu(r), r.flags & 1048576 ? uI(r) ? dD(r, i) : Do(e.map(r.types, function(o) { + return ql(o, i, t); + })) : r.flags & 2097152 ? Pa(e.map(r.types, function(o) { + return ql(o, i, t); + })) : r.flags & 58982400 || lm(r) || Bc(r) && !sI(r) ? dD(r, i) : e.getObjectFlags(r) & 32 ? oI(r, i, t) : r === Mr ? Mr : r.flags & 2 ? ui : r.flags & 131073 ? at : cI(r, (t ? 128 : 402653316) | (i ? 0 : 12584), i === Ge && !t); + } + function Vx(r) { + if (Ge) + return r; + var i = M3(); + return i ? am(i, [r, Li]) : Li; + } + function lI(r) { + var i = Vx(ql(r)); + return i.flags & 131072 ? Li : i; + } + function fI(r) { + var i = va(r); + if (!i.resolvedType) + switch (r.operator) { + case 140: + i.resolvedType = ql(Va(r.type)); + break; + case 154: + i.resolvedType = r.type.kind === 151 ? CD(e.walkUpParenthesizedTypes(r.parent)) : Pe; + break; + case 145: + i.resolvedType = Va(r.type); + break; + default: + throw e.Debug.assertNever(r.operator); + } + return i.resolvedType; + } + function _I(r) { + var i = va(r); + return i.resolvedType || (i.resolvedType = Dg(Ve([r.head.text], e.map(r.templateSpans, function(t) { + return t.literal.text; + }), true), e.map(r.templateSpans, function(t) { + return Va(t.type); + }))), i.resolvedType; + } + function Dg(r, i) { + var t = e.findIndex(i, function(Me) { + return !!(Me.flags & 1179648); + }); + if (t >= 0) + return ny(i) ? Ss(i[t], function(Me) { + return Dg(r, e.replaceElement(i, t, Me)); + }) : Pe; + if (e.contains(i, Mr)) + return Mr; + var o = [], s = [], u = r[0]; + if (!me(r, i)) + return Li; + if (o.length === 0) + return Bu(u); + if (s.push(u), e.every(s, function(Me) { + return Me === ""; + }) && e.every(o, function(Me) { + return !!(Me.flags & 4); + })) + return Li; + var h = "".concat(Su(o), "|").concat(e.map(s, function(Me) { + return Me.length; + }).join(","), "|").concat(s.join("")), z = Jr.get(h); + return z || Jr.set(h, z = dI(s, o)), z; + function me(Me, $e) { + for (var tr = e.isArray(Me), dr = 0; dr < $e.length; dr++) { + var Dr = $e[dr], Qr = tr ? Me[dr + 1] : Me; + if (Dr.flags & 101248) { + if (u += pI(Dr) || "", u += Qr, !tr) + return true; + } else if (Dr.flags & 134217728) { + if (u += Dr.texts[0], !me(Dr.texts, Dr.types)) + return false; + if (u += Qr, !tr) + return true; + } else if (qp(Dr) || Gx(Dr)) + o.push(Dr), s.push(u), u = Qr; + else if (Dr.flags & 2097152) { + var li = me(Me[dr + 1], Dr.types); + if (!li) + return false; + } else if (tr) + return false; + } + return true; + } + } + function pI(r) { + return r.flags & 128 ? r.value : r.flags & 256 ? "" + r.value : r.flags & 2048 ? e.pseudoBigIntToString(r.value) : r.flags & 98816 ? r.intrinsicName : void 0; + } + function dI(r, i) { + var t = mc(134217728); + return t.texts = r, t.types = i, t; + } + function Th(r, i) { + return i.flags & 1179648 ? Ss(i, function(t) { + return Th(r, t); + }) : qp(i) ? mI(r, i) : i.flags & 128 ? Bu(gI(r, i.value)) : i; + } + function gI(r, i) { + switch (x.get(r.escapedName)) { + case 0: + return i.toUpperCase(); + case 1: + return i.toLowerCase(); + case 2: + return i.charAt(0).toUpperCase() + i.slice(1); + case 3: + return i.charAt(0).toLowerCase() + i.slice(1); + } + return i; + } + function mI(r, i) { + var t = "".concat(y(r), ",").concat(fu(i)), o = ti.get(t); + return o || ti.set(t, o = vI(r, i)), o; + } + function vI(r, i) { + var t = mc(268435456); + return t.symbol = r, t.type = i, t; + } + function yI(r, i, t, o, s) { + var u = mc(8388608); + return u.objectType = r, u.indexType = i, u.accessFlags = t, u.aliasSymbol = o, u.aliasTypeArguments = s, u; + } + function ev(r) { + if (n) + return false; + if (e.getObjectFlags(r) & 4096) + return true; + if (r.flags & 1048576) + return e.every(r.types, ev); + if (r.flags & 2097152) + return e.some(r.types, ev); + if (r.flags & 465829888) { + var i = Hv(r); + return i !== r && ev(i); + } + return false; + } + function gD(r, i) { + return _f(r) ? pf(r) : i && e.isPropertyName(i) ? e.getPropertyNameForPropertyNameNode(i) : void 0; + } + function mD(r, i) { + if (i.flags & 8208) { + var t = e.findAncestor(r.parent, function(o) { + return !e.isAccessExpression(o); + }) || r.parent; + return e.isCallLikeExpression(t) ? e.isCallOrNewExpression(t) && e.isIdentifier(r) && eC(t, r) : e.every(i.declarations, function(o) { + return !e.isFunctionLike(o) || !!(e.getCombinedNodeFlags(o) & 268435456); + }); + } + return true; + } + function Kx(r, i, t, o, s, u) { + var h, z = s && s.kind === 207 ? s : void 0, me = s && e.isPrivateIdentifier(s) ? void 0 : gD(t, s); + if (me !== void 0) { + if (u & 256) + return Md(i, me) || Oe; + var Me = bi(i, me); + if (Me) { + if (u & 64 && s && Me.declarations && P_(Me) && mD(s, Me)) { + var $e = (h = z == null ? void 0 : z.argumentExpression) !== null && h !== void 0 ? h : e.isIndexedAccessTypeNode(s) ? s.indexType : s; + El($e, Me.declarations, me); + } + if (z) { + if (xy(Me, z, rk(z.expression, i.symbol)), jk(z, Me, e.getAssignmentTargetKind(z))) { + Xr(z.argumentExpression, e.Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, tn(Me)); + return; + } + if (u & 8 && (va(s).resolvedSymbol = Me), HC(z, Me)) + return nr; + } + var tr = Jt(Me); + return z && e.getAssignmentTargetKind(z) !== 1 ? up(z, tr) : tr; + } + if (gf(i, Yn) && e.isNumericLiteralName(me) && +me >= 0) { + if (s && gf(i, function(Nt) { + return !Nt.target.hasRestElement; + }) && !(u & 16)) { + var dr = vD(s); + Yn(i) ? Xr(dr, e.Diagnostics.Tuple_type_0_of_length_1_has_no_element_at_index_2, Ot(i), $_(i), e.unescapeLeadingUnderscores(me)) : Xr(dr, e.Diagnostics.Property_0_does_not_exist_on_type_1, e.unescapeLeadingUnderscores(me), Ot(i)); + } + return qt(ss(i, nt)), Ss(i, function(Nt) { + var Ra = sv(Nt) || Tr; + return u & 1 ? Pa([Ra, Tr]) : Ra; + }); + } + } + if (!(t.flags & 98304) && Ns(t, 402665900)) { + if (i.flags & 131073) + return i; + var Dr = nu(i, t) || ss(i, Li); + if (Dr) { + if (u & 2 && Dr.keyType !== nt) { + z && Xr(z, e.Diagnostics.Type_0_cannot_be_used_to_index_type_1, Ot(t), Ot(r)); + return; + } + if (s && Dr.keyType === Li && !Ns(t, 12)) { + var dr = vD(s); + return Xr(dr, e.Diagnostics.Type_0_cannot_be_used_as_an_index_type, Ot(t)), u & 1 ? Pa([Dr.type, Tr]) : Dr.type; + } + return qt(Dr), u & 1 ? Pa([Dr.type, Tr]) : Dr.type; + } + if (t.flags & 131072) + return ui; + if (ev(i)) + return Oe; + if (z && !uS(i)) { + if (Qp(i)) { + if (n && t.flags & 384) + return rn.add(e.createDiagnosticForNode(z, e.Diagnostics.Property_0_does_not_exist_on_type_1, t.value, Ot(i))), Tr; + if (t.flags & 12) { + var Qr = e.map(i.properties, function(Nt) { + return Jt(Nt); + }); + return Pa(e.append(Qr, Tr)); + } + } + if (i.symbol === pe && me !== void 0 && pe.exports.has(me) && pe.exports.get(me).flags & 418) + Xr(z, e.Diagnostics.Property_0_does_not_exist_on_type_1, e.unescapeLeadingUnderscores(me), Ot(i)); + else if (n && !ye.suppressImplicitAnyIndexErrors && !(u & 128)) + if (me !== void 0 && $C(me, i)) { + var li = Ot(i); + Xr(z, e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead, me, li, li + "[" + e.getTextOfNode(z.argumentExpression) + "]"); + } else if (cs(i, nt)) + Xr(z.argumentExpression, e.Diagnostics.Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number); + else { + var Ti = void 0; + if (me !== void 0 && (Ti = Vb(me, i))) + Ti !== void 0 && Xr(z.argumentExpression, e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2, me, Ot(i), Ti); + else { + var Ci = i7(i, z, t); + if (Ci !== void 0) + Xr(z, e.Diagnostics.Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1, Ot(i), Ci); + else { + var $i = void 0; + if (t.flags & 1024) + $i = e.chainDiagnosticMessages(void 0, e.Diagnostics.Property_0_does_not_exist_on_type_1, "[" + Ot(t) + "]", Ot(i)); + else if (t.flags & 8192) { + var Zi = cl(t.symbol, z); + $i = e.chainDiagnosticMessages(void 0, e.Diagnostics.Property_0_does_not_exist_on_type_1, "[" + Zi + "]", Ot(i)); + } else + t.flags & 128 || t.flags & 256 ? $i = e.chainDiagnosticMessages(void 0, e.Diagnostics.Property_0_does_not_exist_on_type_1, t.value, Ot(i)) : t.flags & 12 && ($i = e.chainDiagnosticMessages(void 0, e.Diagnostics.No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1, Ot(t), Ot(i))); + $i = e.chainDiagnosticMessages($i, e.Diagnostics.Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1, Ot(o), Ot(i)), rn.add(e.createDiagnosticForNodeFromMessageChain(z, $i)); + } + } + } + return; + } + } + if (ev(i)) + return Oe; + if (s) { + var dr = vD(s); + t.flags & 384 ? Xr(dr, e.Diagnostics.Property_0_does_not_exist_on_type_1, "" + t.value, Ot(i)) : t.flags & 12 ? Xr(dr, e.Diagnostics.Type_0_has_no_matching_index_signature_for_type_1, Ot(i), Ot(t)) : Xr(dr, e.Diagnostics.Type_0_cannot_be_used_as_an_index_type, Ot(t)); + } + if (ta(t)) + return t; + return; + function qt(Nt) { + Nt && Nt.isReadonly && z && (e.isAssignmentTarget(z) || e.isDeleteTarget(z)) && Xr(z, e.Diagnostics.Index_signature_in_type_0_only_permits_reading, Ot(i)); + } + } + function vD(r) { + return r.kind === 207 ? r.argumentExpression : r.kind === 194 ? r.indexType : r.kind === 162 ? r.expression : r; + } + function Gx(r) { + return !!(r.flags & 77); + } + function sm(r) { + return !!(r.flags & 134217728) && e.every(r.types, Gx); + } + function rv(r) { + return !!iv(r); + } + function Ad(r) { + return !!(iv(r) & 4194304); + } + function qp(r) { + return !!(iv(r) & 8388608); + } + function iv(r) { + return r.flags & 3145728 ? (r.objectFlags & 2097152 || (r.objectFlags |= 2097152 | e.reduceLeft(r.types, function(i, t) { + return i | iv(t); + }, 0)), r.objectFlags & 12582912) : r.flags & 33554432 ? (r.objectFlags & 2097152 || (r.objectFlags |= 2097152 | iv(r.substitute) | iv(r.baseType)), r.objectFlags & 12582912) : (r.flags & 58982400 || Bc(r) || lm(r) ? 4194304 : 0) | (r.flags & 465829888 && !sm(r) ? 8388608 : 0); + } + function Zf(r, i) { + return r.flags & 8388608 ? DI(r, i) : r.flags & 16777216 ? bI(r, i) : r; + } + function Hx(r, i, t) { + if (r.flags & 3145728) { + var o = e.map(r.types, function(s) { + return Zf(Jc(s, i), t); + }); + return r.flags & 2097152 || t ? Do(o) : Pa(o); + } + } + function hI(r, i, t) { + if (i.flags & 1048576) { + var o = e.map(i.types, function(s) { + return Zf(Jc(r, s), t); + }); + return t ? Do(o) : Pa(o); + } + } + function DI(r, i) { + var t = i ? "simplifiedForWriting" : "simplifiedForReading"; + if (r[t]) + return r[t] === Pn ? r : r[t]; + r[t] = Pn; + var o = Zf(r.objectType, i), s = Zf(r.indexType, i), u = hI(o, s, i); + if (u) + return r[t] = u; + if (!(s.flags & 465829888)) { + var h = Hx(o, s, i); + if (h) + return r[t] = h; + } + if (lm(o) && s.flags & 296) { + var z = jh(o, s.flags & 8 ? 0 : o.target.fixedLength, 0, i); + if (z) + return r[t] = z; + } + if (Bc(o)) { + var me = Jl(o); + if (!me || ao(me, Du(o))) + return r[t] = Ss(xh(o, r.indexType), function(Me) { + return Zf(Me, i); + }); + } + return r[t] = r; + } + function bI(r, i) { + var t = r.checkType, o = r.extendsType, s = ip(r), u = tp(r); + if (u.flags & 131072 && rp(s) === rp(t)) { + if (t.flags & 1 || ao(Nd(t), Nd(o))) + return Zf(s, i); + if (Xx(t, o)) + return ui; + } else if (s.flags & 131072 && rp(u) === rp(t)) { + if (!(t.flags & 1) && ao(Nd(t), Nd(o))) + return ui; + if (t.flags & 1 || Xx(t, o)) + return Zf(u, i); + } + return r; + } + function Xx(r, i) { + return !!(Pa([Zg(r, i), ui]).flags & 131072); + } + function xh(r, i) { + var t = Uc([Du(r)], [i]), o = np(r.mapper, t); + return un(vl(r), o); + } + function Jc(r, i, t, o, s, u) { + return t === void 0 && (t = 0), ep(r, i, t, o, s, u) || (o ? Pe : gr); + } + function Qx(r, i) { + return gf(r, function(t) { + if (t.flags & 384) { + var o = pf(t); + if (e.isNumericLiteralName(o)) { + var s = +o; + return s >= 0 && s < i; + } + } + return false; + }); + } + function ep(r, i, t, o, s, u) { + if (t === void 0 && (t = 0), r === Mr || i === Mr) + return Mr; + if (yE(r) && !(i.flags & 98304) && Ns(i, 12) && (i = Li), ye.noUncheckedIndexedAccess && t & 32 && (t |= 1), qp(i) || (o && o.kind !== 194 ? lm(r) && !Qx(i, r.target.fixedLength) : Ad(r) && !(Yn(r) && Qx(i, r.target.fixedLength)))) { + if (r.flags & 3) + return r; + var h = t & 1, z = r.id + "," + i.id + "," + h + hg(s, u), me = Xe.get(z); + return me || Xe.set(z, me = yI(r, i, h, s, u)), me; + } + var Me = Xd(r); + if (i.flags & 1048576 && !(i.flags & 16)) { + for (var $e = [], tr = false, dr = 0, Dr = i.types; dr < Dr.length; dr++) { + var Qr = Dr[dr], li = Kx(r, Me, Qr, i, o, t | (tr ? 128 : 0)); + if (li) + $e.push(li); + else if (o) + tr = true; + else + return; + } + return tr ? void 0 : t & 4 ? Do($e, s, u) : Pa($e, 1, s, u); + } + return Kx(r, Me, i, i, o, t | 8 | 64); + } + function Yx(r) { + var i = va(r); + if (!i.resolvedType) { + var t = Va(r.objectType), o = Va(r.indexType), s = Qd(r), u = Jc(t, o, 0, r, s, bg(s)); + i.resolvedType = u.flags & 8388608 && u.objectType === t && u.indexType === o ? mx(u, r) : u; + } + return i.resolvedType; + } + function yD(r) { + var i = va(r); + if (!i.resolvedType) { + var t = tu(32, r.symbol); + t.declaration = r, t.aliasSymbol = Qd(r), t.aliasTypeArguments = bg(t.aliasSymbol), i.resolvedType = t, Mu(t); + } + return i.resolvedType; + } + function rp(r) { + return r.flags & 33554432 ? r.baseType : r.flags & 8388608 && (r.objectType.flags & 33554432 || r.indexType.flags & 33554432) ? Jc(rp(r.objectType), rp(r.indexType)) : r; + } + function SI(r) { + var i = Tc(r); + return i && (Ad(i) || qp(i)) ? kD(r) : r; + } + function $x(r) { + return !r.isDistributive && Zx(r.node.checkType) && Zx(r.node.extendsType); + } + function Zx(r) { + return e.isTupleTypeNode(r) && e.length(r.elements) === 1 && !e.isOptionalTypeNode(r.elements[0]) && !e.isRestTypeNode(r.elements[0]) && !(e.isNamedTupleMember(r.elements[0]) && (r.elements[0].questionToken || r.elements[0].dotDotDotToken)); + } + function hD(r, i) { + return $x(r) && Yn(i) ? xo(i)[0] : i; + } + function DD(r, i, t, o) { + for (var s, u, h = 0, z = function() { + if (h === 1e3) + return Xr(Ie, e.Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite), s = Pe, "break"; + var $e = $x(r), tr = un(hD(r, rp(r.checkType)), i), dr = rv(tr), Dr = un(hD(r, r.extendsType), i); + if (tr === Mr || Dr === Mr) + return { value: Mr }; + var Qr = void 0; + if (r.inferTypeParameters) { + var li = e.sameMap(r.inferTypeParameters, SI), Ti = li !== r.inferTypeParameters ? Uc(r.inferTypeParameters, li) : void 0, Ci = uv(li, void 0, 0); + if (Ti) + for (var $i = np(i, Ti), Zi = 0, qt = li; Zi < qt.length; Zi++) { + var Nt = qt[Zi]; + r.inferTypeParameters.indexOf(Nt) === -1 && (Nt.mapper = $i); + } + (!dr || !e.some(r.inferTypeParameters, function(Tn) { + return Tn === Dr; + })) && df(Ci.inferences, tr, un(Dr, Ti), 1536); + var Ra = np(Ti, Ci.mapper); + Qr = i ? np(Ra, i) : Ra; + } + var ca = Qr ? un(hD(r, r.extendsType), Qr) : Dr; + if (!dr && !rv(ca)) { + if (!(ca.flags & 3) && (tr.flags & 1 && !$e || !ao(wh(tr), wh(ca)))) { + tr.flags & 1 && !$e && (u || (u = [])).push(un(Va(r.node.trueType), Qr || i)); + var Sn = Va(r.node.falseType); + if (Sn.flags & 16777216) { + var ja = Sn.root; + if (ja.node.parent === r.node && (!ja.isDistributive || ja.checkType === r.checkType)) + return r = ja, "continue"; + if (Me(Sn, i)) + return "continue"; + } + return s = un(Sn, i), "break"; + } + if (ca.flags & 3 || ao(Nd(tr), Nd(ca))) { + var Fn = Va(r.node.trueType), wn = Qr || i; + return Me(Fn, wn) ? "continue" : (s = un(Fn, wn), "break"); + } + } + return s = mc(16777216), s.root = r, s.checkType = un(r.checkType, i), s.extendsType = un(r.extendsType, i), s.mapper = i, s.combinedMapper = Qr, s.aliasSymbol = t || r.aliasSymbol, s.aliasTypeArguments = t ? o : e_(r.aliasTypeArguments, i), "break"; + }; ; ) { + var me = z(); + if (typeof me == "object") + return me.value; + if (me === "break") + break; + } + return u ? Pa(e.append(u, s)) : s; + function Me($e, tr) { + if ($e.flags & 16777216 && tr) { + var dr = $e.root; + if (dr.outerTypeParameters) { + var Dr = np($e.mapper, tr), Qr = e.map(dr.outerTypeParameters, function(Ci) { + return ap(Ci, Dr); + }), li = Uc(dr.outerTypeParameters, Qr), Ti = dr.isDistributive ? ap(dr.checkType, li) : void 0; + if (!Ti || Ti === dr.checkType || !(Ti.flags & 1179648)) + return r = dr, i = li, t = void 0, o = void 0, dr.aliasSymbol && h++, true; + } + } + return false; + } + } + function ip(r) { + return r.resolvedTrueType || (r.resolvedTrueType = un(Va(r.root.node.trueType), r.mapper)); + } + function tp(r) { + return r.resolvedFalseType || (r.resolvedFalseType = un(Va(r.root.node.falseType), r.mapper)); + } + function TI(r) { + return r.resolvedInferredTrueType || (r.resolvedInferredTrueType = r.combinedMapper ? un(Va(r.root.node.trueType), r.combinedMapper) : ip(r)); + } + function eE(r) { + var i; + return r.locals && r.locals.forEach(function(t) { + t.flags & 262144 && (i = e.append(i, go(t))); + }), i; + } + function xI(r) { + return r.isDistributive && (Ph(r.checkType, r.node.trueType) || Ph(r.checkType, r.node.falseType)); + } + function EI(r) { + var i = va(r); + if (!i.resolvedType) { + var t = Va(r.checkType), o = Qd(r), s = bg(o), u = kf(r, true), h = s ? u : e.filter(u, function(me) { + return Ph(me, r); + }), z = { node: r, checkType: t, extendsType: Va(r.extendsType), isDistributive: !!(t.flags & 262144), inferTypeParameters: eE(r), outerTypeParameters: h, instantiations: void 0, aliasSymbol: o, aliasTypeArguments: s }; + i.resolvedType = DD(z, void 0), h && (z.instantiations = new e.Map(), z.instantiations.set(Su(h), i.resolvedType)); + } + return i.resolvedType; + } + function CI(r) { + var i = va(r); + return i.resolvedType || (i.resolvedType = Js(Et(r.typeParameter))), i.resolvedType; + } + function rE(r) { + return e.isIdentifier(r) ? [r] : e.append(rE(r.left), r.right); + } + function kI(r) { + var i = va(r); + if (!i.resolvedType) { + if (r.isTypeOf && r.typeArguments) + return Xr(r, e.Diagnostics.Type_arguments_cannot_be_used_here), i.resolvedSymbol = xe, i.resolvedType = Pe; + if (!e.isLiteralImportTypeNode(r)) + return Xr(r.argument, e.Diagnostics.String_literal_expected), i.resolvedSymbol = xe, i.resolvedType = Pe; + var t = r.isTypeOf ? 111551 : r.flags & 8388608 ? 900095 : 788968, o = ac(r, r.argument.literal); + if (!o) + return i.resolvedSymbol = xe, i.resolvedType = Pe; + var s = Us(o, false); + if (e.nodeIsMissing(r.qualifier)) + if (s.flags & t) + i.resolvedType = iE(r, i, s, t); + else { + var tr = t === 111551 ? e.Diagnostics.Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here : e.Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0; + Xr(r, tr, r.argument.literal.text), i.resolvedSymbol = xe, i.resolvedType = Pe; + } + else { + for (var u = rE(r.qualifier), h = s, z = void 0; z = u.shift(); ) { + var me = u.length ? 1920 : t, Me = so(os(h)), $e = r.isTypeOf ? bi(Jt(Me), z.escapedText) : qs(dc(Me), z.escapedText, me); + if (!$e) + return Xr(z, e.Diagnostics.Namespace_0_has_no_exported_member_1, cl(h), e.declarationNameToString(z)), i.resolvedType = Pe; + va(z).resolvedSymbol = $e, va(z.parent).resolvedSymbol = $e, h = $e; + } + i.resolvedType = iE(r, i, h, t); + } + } + return i.resolvedType; + } + function iE(r, i, t, o) { + var s = os(t); + return i.resolvedSymbol = s, o === 111551 ? Jt(t) : hh(r, s); + } + function tE(r) { + var i = va(r); + if (!i.resolvedType) { + var t = Qd(r); + if (Nf(r.symbol).size === 0 && !t) + i.resolvedType = Bi; + else { + var o = tu(16, r.symbol); + o.aliasSymbol = t, o.aliasTypeArguments = bg(t), e.isJSDocTypeLiteral(r) && r.isArrayType && (o = Zs(o)), i.resolvedType = o; + } + } + return i.resolvedType; + } + function Qd(r) { + for (var i = r.parent; e.isParenthesizedTypeNode(i) || e.isJSDocTypeExpression(i) || e.isTypeOperatorNode(i) && i.operator === 145; ) + i = i.parent; + return e.isTypeAlias(i) ? Et(i) : void 0; + } + function bg(r) { + return r ? Af(r) : void 0; + } + function bD(r) { + return !!(r.flags & 524288) && !Bc(r); + } + function SD(r) { + return Of(r) || !!(r.flags & 474058748); + } + function TD(r, i) { + if (!(r.flags & 1048576)) + return r; + if (e.every(r.types, SD)) + return e.find(r.types, Of) || Ba; + var t = e.find(r.types, function(u) { + return !SD(u); + }); + if (!t) + return r; + var o = e.find(r.types, function(u) { + return u !== t && !SD(u); + }); + if (o) + return r; + return s(t); + function s(u) { + for (var h = e.createSymbolTable(), z = 0, me = uo(u); z < me.length; z++) { + var Me = me[z]; + if (!(e.getDeclarationModifierFlagsFromSymbol(Me) & 24)) { + if (Eh(Me)) { + var $e = Me.flags & 65536 && !(Me.flags & 32768), tr = 16777220, dr = oo(tr, Me.escapedName, Gd(Me) | (i ? 8 : 0)); + dr.type = $e ? Tr : kc(Jt(Me), true), dr.declarations = Me.declarations, dr.nameType = Aa(Me).nameType, dr.syntheticOrigin = Me, h.set(Me.escapedName, dr); + } + } + } + var Dr = rs(u.symbol, h, e.emptyArray, e.emptyArray, Hn(u)); + return Dr.objectFlags |= 131200, Dr; + } + } + function Vp(r, i, t, o, s) { + if (r.flags & 1 || i.flags & 1) + return Oe; + if (r.flags & 2 || i.flags & 2) + return gr; + if (r.flags & 131072) + return i; + if (i.flags & 131072) + return r; + if (r = TD(r, s), r.flags & 1048576) + return ny([r, i]) ? Ss(r, function(Nt) { + return Vp(Nt, i, t, o, s); + }) : Pe; + if (i = TD(i, s), i.flags & 1048576) + return ny([r, i]) ? Ss(i, function(Nt) { + return Vp(r, Nt, t, o, s); + }) : Pe; + if (i.flags & 473960444) + return r; + if (Ad(r) || Ad(i)) { + if (Of(r)) + return i; + if (r.flags & 2097152) { + var u = r.types, h = u[u.length - 1]; + if (bD(h) && bD(i)) + return Do(e.concatenate(u.slice(0, u.length - 1), [Vp(h, i, t, o, s)])); + } + return Do([r, i]); + } + for (var z = e.createSymbolTable(), me = new e.Set(), Me = r === Ba ? Hn(i) : oh([r, i]), $e = 0, tr = uo(i); $e < tr.length; $e++) { + var dr = tr[$e]; + e.getDeclarationModifierFlagsFromSymbol(dr) & 24 ? me.add(dr.escapedName) : Eh(dr) && z.set(dr.escapedName, xD(dr, s)); + } + for (var Dr = 0, Qr = uo(r); Dr < Qr.length; Dr++) { + var li = Qr[Dr]; + if (!(me.has(li.escapedName) || !Eh(li))) + if (z.has(li.escapedName)) { + var dr = z.get(li.escapedName), Ti = Jt(dr); + if (dr.flags & 16777216) { + var Ci = e.concatenate(li.declarations, dr.declarations), $i = 4 | li.flags & 16777216, Zi = oo($i, li.escapedName); + Zi.type = Pa([Jt(li), $D(Ti)], 2), Zi.leftSpread = li, Zi.rightSpread = dr, Zi.declarations = Ci, Zi.nameType = Aa(li).nameType, z.set(li.escapedName, Zi); + } + } else + z.set(li.escapedName, xD(li, s)); + } + var qt = rs(t, z, e.emptyArray, e.emptyArray, e.sameMap(Me, function(Nt) { + return AI(Nt, s); + })); + return qt.objectFlags |= 2228352 | o, qt; + } + function Eh(r) { + var i; + return !e.some(r.declarations, e.isPrivateIdentifierClassElementDeclaration) && (!(r.flags & 106496) || !(!((i = r.declarations) === null || i === void 0) && i.some(function(t) { + return e.isClassLike(t.parent); + }))); + } + function xD(r, i) { + var t = r.flags & 65536 && !(r.flags & 32768); + if (!t && i === Zu(r)) + return r; + var o = 4 | r.flags & 16777216, s = oo(o, r.escapedName, Gd(r) | (i ? 8 : 0)); + return s.type = t ? Tr : Jt(r), s.declarations = r.declarations, s.nameType = Aa(r).nameType, s.syntheticOrigin = r, s; + } + function AI(r, i) { + return r.isReadonly !== i ? zl(r.keyType, r.type, i, r.declaration) : r; + } + function oy(r, i, t, o) { + var s = mc(r); + return s.symbol = t, s.value = i, s.regularType = o || s, s; + } + function Sg(r) { + if (r.flags & 2944) { + if (!r.freshType) { + var i = oy(r.flags, r.value, r.symbol, r); + i.freshType = i, r.freshType = i; + } + return r.freshType; + } + return r; + } + function jc(r) { + return r.flags & 2944 ? r.regularType : r.flags & 1048576 ? r.regularType || (r.regularType = Ss(r, jc)) : r; + } + function Kp(r) { + return !!(r.flags & 2944) && r.freshType === r; + } + function Bu(r) { + var i; + return Zt.get(r) || (Zt.set(r, i = oy(128, r)), i); + } + function If(r) { + var i; + return _r.get(r) || (_r.set(r, i = oy(256, r)), i); + } + function ED(r) { + var i, t = e.pseudoBigIntToString(r); + return pi.get(t) || (pi.set(t, i = oy(2048, r)), i); + } + function NI(r, i, t) { + var o, s = typeof r == "string" ? "@" : "#", u = i + s + r, h = 1024 | (typeof r == "string" ? 128 : 256); + return ae.get(u) || (ae.set(u, o = oy(h, r, t)), o); + } + function PI(r) { + if (r.literal.kind === 104) + return Wi; + var i = va(r); + return i.resolvedType || (i.resolvedType = jc(yn(r.literal))), i.resolvedType; + } + function II(r) { + var i = mc(8192); + return i.symbol = r, i.escapedName = "__@".concat(i.symbol.escapedName, "@").concat(y(i.symbol)), i; + } + function CD(r) { + if (e.isValidESSymbolDeclaration(r)) { + var i = e.isCommonJsExportPropertyAssignment(r) ? Et(r.left) : Et(r); + if (i) { + var t = Aa(i); + return t.uniqueESSymbolType || (t.uniqueESSymbolType = II(i)); + } + } + return Ki; + } + function wI(r) { + var i = e.getThisContainer(r, false), t = i && i.parent; + if (t && (e.isClassLike(t) || t.kind === 258) && !e.isStatic(i) && (!e.isConstructorDeclaration(i) || e.isNodeDescendantOf(r, i.body))) + return aa(Et(t)).thisType; + if (t && e.isObjectLiteralExpression(t) && e.isBinaryExpression(t.parent) && e.getAssignmentDeclarationKind(t.parent) === 6) + return aa(Et(t.parent.left).parent).thisType; + var o = r.flags & 8388608 ? e.getHostSignatureFromJSDoc(r) : void 0; + return o && e.isFunctionExpression(o) && e.isBinaryExpression(o.parent) && e.getAssignmentDeclarationKind(o.parent) === 3 ? aa(Et(o.parent.left).parent).thisType : Sl(i) && e.isNodeDescendantOf(r, i.body) ? aa(Et(i)).thisType : (Xr(r, e.Diagnostics.A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface), Pe); + } + function Ch(r) { + var i = va(r); + return i.resolvedType || (i.resolvedType = wI(r)), i.resolvedType; + } + function aE(r) { + return Va(sy(r.type) || r.type); + } + function sy(r) { + switch (r.kind) { + case 191: + return sy(r.type); + case 184: + if (r.elements.length === 1 && (r = r.elements[0], r.kind === 186 || r.kind === 197 && r.dotDotDotToken)) + return sy(r.type); + break; + case 183: + return r.elementType; + } + } + function OI(r) { + var i = va(r); + return i.resolvedType || (i.resolvedType = r.dotDotDotToken ? aE(r) : kc(Va(r.type), true, !!r.questionToken)); + } + function Va(r) { + return mx(nE(r), r); + } + function nE(r) { + switch (r.kind) { + case 130: + case 312: + case 313: + return Oe; + case 155: + return gr; + case 150: + return Li; + case 147: + return nt; + case 158: + return Mt; + case 133: + return Ii; + case 151: + return Ki; + case 114: + return Fi; + case 153: + return Tr; + case 104: + return Wi; + case 143: + return ui; + case 148: + return r.flags & 262144 && !n ? Oe : Oi; + case 138: + return De; + case 192: + case 108: + return Ch(r); + case 196: + return PI(r); + case 178: + return ty(r); + case 177: + return r.assertsModifier ? Fi : Ii; + case 228: + return ty(r); + case 181: + return yx(r); + case 183: + case 184: + return j3(r); + case 185: + return W3(r); + case 187: + return Q3(r); + case 188: + return aI(r); + case 314: + return b3(r); + case 316: + return kc(Va(r.type)); + case 197: + return OI(r); + case 191: + case 315: + case 309: + return Va(r.type); + case 186: + return aE(r); + case 318: + return KM(r); + case 179: + case 180: + case 182: + case 322: + case 317: + case 323: + return tE(r); + case 193: + return fI(r); + case 194: + return Yx(r); + case 195: + return yD(r); + case 189: + return EI(r); + case 190: + return CI(r); + case 198: + return _I(r); + case 200: + return kI(r); + case 79: + case 161: + case 206: + var i = el(r); + return i ? go(i) : Pe; + default: + return Pe; + } + } + function kh(r, i, t) { + if (r && r.length) + for (var o = 0; o < r.length; o++) { + var s = r[o], u = t(s, i); + if (s !== u) { + var h = o === 0 ? [] : r.slice(0, o); + for (h.push(u), o++; o < r.length; o++) + h.push(t(r[o], i)); + return h; + } + } + return r; + } + function e_(r, i) { + return kh(r, i, un); + } + function Ah(r, i) { + return kh(r, i, Tg); + } + function oE(r, i) { + return kh(r, i, GI); + } + function Uc(r, i) { + return r.length === 1 ? Yd(r[0], i ? i[0] : Oe) : FI(r, i); + } + function ap(r, i) { + switch (i.kind) { + case 0: + return r === i.source ? i.target : r; + case 1: + for (var t = i.sources, o = i.targets, s = 0; s < t.length; s++) + if (r === t[s]) + return o ? o[s] : Oe; + return r; + case 2: + return i.func(r); + case 3: + case 4: + var u = ap(r, i.mapper1); + return u !== r && i.kind === 3 ? un(u, i.mapper2) : ap(u, i.mapper2); + } + } + function Yd(r, i) { + return { kind: 0, source: r, target: i }; + } + function FI(r, i) { + return { kind: 1, sources: r, targets: i }; + } + function Gp(r) { + return { kind: 2, func: r }; + } + function Nh(r, i, t) { + return { kind: r, mapper1: i, mapper2: t }; + } + function sE(r) { + return Uc(r, void 0); + } + function MI(r, i) { + return Gp(function(t) { + return e.findIndex(r.inferences, function(o) { + return o.typeParameter === t; + }) >= i ? gr : t; + }); + } + function np(r, i) { + return r ? Nh(3, r, i) : i; + } + function LI(r, i) { + return r ? Nh(4, r, i) : i; + } + function $d(r, i, t) { + return t ? Nh(4, Yd(r, i), t) : Yd(r, i); + } + function tv(r, i, t) { + return r ? Nh(4, r, Yd(i, t)) : Yd(i, t); + } + function RI(r) { + return r.constraint === gr ? r : r.restrictiveInstantiation || (r.restrictiveInstantiation = Hc(r.symbol), r.restrictiveInstantiation.constraint = gr, r.restrictiveInstantiation); + } + function kD(r) { + var i = Hc(r.symbol); + return i.target = r, i; + } + function BI(r, i) { + return vg(r.kind, r.parameterName, r.parameterIndex, un(r.type, i)); + } + function Tg(r, i, t) { + var o; + if (r.typeParameters && !t) { + o = e.map(r.typeParameters, kD), i = np(Uc(r.typeParameters, o), i); + for (var s = 0, u = o; s < u.length; s++) { + var h = u[s]; + h.mapper = i; + } + } + var z = Fu(r.declaration, o, r.thisParameter && AD(r.thisParameter, i), kh(r.parameters, i, AD), void 0, void 0, r.minArgumentCount, r.flags & 39); + return z.target = r, z.mapper = i, z; + } + function AD(r, i) { + var t = Aa(r); + if (t.type && !Id(t.type)) + return r; + e.getCheckFlags(r) & 1 && (r = t.target, i = np(t.mapper, i)); + var o = oo(r.flags, r.escapedName, 1 | e.getCheckFlags(r) & 53256); + return o.declarations = r.declarations, o.parent = r.parent, o.target = r, o.mapper = i, r.valueDeclaration && (o.valueDeclaration = r.valueDeclaration), t.nameType && (o.nameType = t.nameType), o; + } + function JI(r, i, t, o) { + var s = r.objectFlags & 4 || r.objectFlags & 8388608 ? r.node : r.symbol.declarations[0], u = va(s), h = r.objectFlags & 4 ? u.resolvedType : r.objectFlags & 64 ? r.target : r, z = u.outerTypeParameters; + if (!z) { + var me = kf(s, true); + if (Sl(s)) { + var Me = jl(s); + me = e.addRange(me, Me); + } + z = me || e.emptyArray; + var $e = r.objectFlags & 8388612 ? [s] : r.symbol.declarations; + z = (h.objectFlags & 8388612 || h.symbol.flags & 8192 || h.symbol.flags & 2048) && !h.aliasTypeArguments ? e.filter(z, function($i) { + return e.some($e, function(Zi) { + return Ph($i, Zi); + }); + }) : z, u.outerTypeParameters = z; + } + if (z.length) { + var tr = np(r.mapper, i), dr = e.map(z, function($i) { + return ap($i, tr); + }), Dr = t || r.aliasSymbol, Qr = t ? o : e_(r.aliasTypeArguments, i), li = Su(dr) + hg(Dr, Qr); + h.instantiations || (h.instantiations = new e.Map(), h.instantiations.set(Su(z) + hg(h.aliasSymbol, h.aliasTypeArguments), h)); + var Ti = h.instantiations.get(li); + if (!Ti) { + var Ci = Uc(z, dr); + Ti = h.objectFlags & 4 ? tD(r.target, r.node, Ci, Dr, Qr) : h.objectFlags & 32 ? cE(h, Ci, Dr, Qr) : PD(h, Ci, Dr, Qr), h.instantiations.set(li, Ti); + } + return Ti; + } + return r; + } + function jI(r) { + return !(r.parent.kind === 178 && r.parent.typeArguments && r === r.parent.typeName || r.parent.kind === 200 && r.parent.typeArguments && r === r.parent.qualifier); + } + function Ph(r, i) { + if (r.symbol && r.symbol.declarations && r.symbol.declarations.length === 1) { + for (var t = r.symbol.declarations[0].parent, o = i; o !== t; o = o.parent) + if (!o || o.kind === 235 || o.kind === 189 && e.forEachChild(o.extendsType, s)) + return true; + return s(i); + } + return true; + function s(u) { + switch (u.kind) { + case 192: + return !!r.isThisType; + case 79: + return !r.isThisType && e.isPartOfTypeNode(u) && jI(u) && nE(u) === r; + case 181: + return true; + case 169: + case 168: + return !u.type && !!u.body || e.some(u.typeParameters, s) || e.some(u.parameters, s) || !!u.type && s(u.type); + } + return !!e.forEachChild(u, s); + } + } + function Ih(r) { + var i = Mu(r); + if (i.flags & 4194304) { + var t = rp(i.type); + if (t.flags & 262144) + return t; + } + } + function cE(r, i, t, o) { + var s = Ih(r); + if (s) { + var u = un(s, i); + if (s !== u) + return uC(bu(u), function(h) { + if (h.flags & 61603843 && h !== Mr && !nn(h)) { + if (!r.declaration.nameType) { + var z = void 0; + if (Tu(h) || h.flags & 1 && v(s, 4) < 0 && (z = Tc(s)) && gf(z, Pd)) + return zI(h, r, $d(s, h, i)); + if (lm(h)) + return UI(h, r, s, i); + if (Yn(h)) + return WI(h, r, $d(s, h, i)); + } + return PD(r, $d(s, h, i)); + } + return h; + }, t, o); + } + return un(Mu(r), i) === Mr ? Mr : PD(r, i, t, o); + } + function ND(r, i) { + return i & 1 ? true : i & 2 ? false : r; + } + function UI(r, i, t, o) { + var s = r.target.elementFlags, u = e.map(xo(r), function(z, me) { + var Me = s[me] & 8 ? z : s[me] & 4 ? Zs(z) : Wl([z], [s[me]]); + return cE(i, $d(t, Me, o)); + }), h = ND(r.target.readonly, Lu(i)); + return Wl(u, e.map(u, function(z) { + return 8; + }), h); + } + function zI(r, i, t) { + var o = uE(i, nt, true, t); + return nn(o) ? Pe : Zs(o, ND(um(r), Lu(i))); + } + function WI(r, i, t) { + var o = r.target.elementFlags, s = e.map(xo(r), function(me, Me) { + return uE(i, Bu("" + Me), !!(o[Me] & 2), t); + }), u = Lu(i), h = u & 4 ? e.map(o, function(me) { + return me & 1 ? 2 : me; + }) : u & 8 ? e.map(o, function(me) { + return me & 2 ? 1 : me; + }) : o, z = ND(r.target.readonly, u); + return e.contains(s, Pe) ? Pe : Wl(s, h, z, r.target.labeledElementDeclarations); + } + function uE(r, i, t, o) { + var s = tv(o, Du(r), i), u = un(vl(r.target || r), s), h = Lu(r); + return Ye && h & 4 && !fs5(u, 49152) ? i_(u, true) : Ye && h & 8 && t ? Ks(u, 524288) : u; + } + function PD(r, i, t, o) { + var s = tu(r.objectFlags | 64, r.symbol); + if (r.objectFlags & 32) { + s.declaration = r.declaration; + var u = Du(r), h = kD(u); + s.typeParameter = h, i = np(Yd(u, h), i), h.mapper = i; + } + return r.objectFlags & 8388608 && (s.node = r.node), s.target = r, s.mapper = i, s.aliasSymbol = t || r.aliasSymbol, s.aliasTypeArguments = t ? o : e_(r.aliasTypeArguments, i), s; + } + function ID(r, i, t, o) { + var s = r.root; + if (s.outerTypeParameters) { + var u = e.map(s.outerTypeParameters, function(tr) { + return ap(tr, i); + }), h = Su(u) + hg(t, o), z = s.instantiations.get(h); + if (!z) { + var me = Uc(s.outerTypeParameters, u), Me = s.checkType, $e = s.isDistributive ? ap(Me, me) : void 0; + z = $e && Me !== $e && $e.flags & 1179648 ? uC(bu($e), function(tr) { + return DD(s, $d(Me, tr, me)); + }, t, o) : DD(s, me, t, o), s.instantiations.set(h, z); + } + return z; + } + return r; + } + function un(r, i) { + return r && i ? lE(r, i, void 0, void 0) : r; + } + function lE(r, i, t, o) { + if (!Id(r)) + return r; + if (He === 100 || Ee >= 5e6) + return e.tracing === null || e.tracing === void 0 || e.tracing.instant("checkTypes", "instantiateType_DepthLimit", { typeId: r.id, instantiationDepth: He, instantiationCount: Ee }), Xr(Ie, e.Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite), Pe; + ze++, Ee++, He++; + var s = qI(r, i, t, o); + return He--, s; + } + function qI(r, i, t, o) { + var s = r.flags; + if (s & 262144) + return ap(r, i); + if (s & 524288) { + var u = r.objectFlags; + if (u & 52) { + if (u & 4 && !r.node) { + var h = r.resolvedTypeArguments, z = e_(h, i); + return z !== h ? uD(r.target, z) : r; + } + return u & 1024 ? VI(r, i) : JI(r, i, t, o); + } + return r; + } + if (s & 3145728) { + var me = r.flags & 1048576 ? r.origin : void 0, Me = me && me.flags & 3145728 ? me.types : r.types, $e = e_(Me, i); + if ($e === Me && t === r.aliasSymbol) + return r; + var tr = t || r.aliasSymbol, dr = t ? o : e_(r.aliasTypeArguments, i); + return s & 2097152 || me && me.flags & 2097152 ? Do($e, tr, dr) : Pa($e, 1, tr, dr); + } + if (s & 4194304) + return ql(un(r.type, i)); + if (s & 134217728) + return Dg(r.texts, e_(r.types, i)); + if (s & 268435456) + return Th(r.symbol, un(r.type, i)); + if (s & 8388608) { + var tr = t || r.aliasSymbol, dr = t ? o : e_(r.aliasTypeArguments, i); + return Jc(un(r.objectType, i), un(r.indexType, i), r.accessFlags, void 0, tr, dr); + } + if (s & 16777216) + return ID(r, np(r.mapper, i), t, o); + if (s & 33554432) { + var Dr = un(r.baseType, i); + if (Dr.flags & 8650752) + return px(Dr, un(r.substitute, i)); + var Qr = un(r.substitute, i); + return Qr.flags & 3 || ao(Nd(Dr), Nd(Qr)) ? Dr : Qr; + } + return r; + } + function VI(r, i) { + var t = un(r.mappedType, i); + if (!(e.getObjectFlags(t) & 32)) + return r; + var o = un(r.constraintType, i); + if (!(o.flags & 4194304)) + return r; + var s = UE(un(r.source, i), t, o); + return s || r; + } + function KI(r) { + return r.flags & 262143 ? r : r.uniqueLiteralFilledInstantiation || (r.uniqueLiteralFilledInstantiation = un(r, ka)); + } + function wh(r) { + return r.flags & 262143 ? r : r.permissiveInstantiation || (r.permissiveInstantiation = un(r, ai)); + } + function Nd(r) { + return r.flags & 262143 ? r : (r.restrictiveInstantiation || (r.restrictiveInstantiation = un(r, Qa), r.restrictiveInstantiation.restrictiveInstantiation = r.restrictiveInstantiation), r.restrictiveInstantiation); + } + function GI(r, i) { + return zl(r.keyType, un(r.type, i), r.isReadonly, r.declaration); + } + function Ju(r) { + switch (e.Debug.assert(r.kind !== 169 || e.isObjectLiteralMethod(r)), r.kind) { + case 213: + case 214: + case 169: + case 256: + return fE(r); + case 205: + return e.some(r.properties, Ju); + case 204: + return e.some(r.elements, Ju); + case 222: + return Ju(r.whenTrue) || Ju(r.whenFalse); + case 221: + return (r.operatorToken.kind === 56 || r.operatorToken.kind === 60) && (Ju(r.left) || Ju(r.right)); + case 296: + return Ju(r.initializer); + case 212: + return Ju(r.expression); + case 286: + return e.some(r.properties, Ju) || e.isJsxOpeningElement(r.parent) && e.some(r.parent.parent.children, Ju); + case 285: { + var i = r.initializer; + return !!i && Ju(i); + } + case 288: { + var t = r.expression; + return !!t && Ju(t); + } + } + return false; + } + function fE(r) { + return (!e.isFunctionDeclaration(r) || e.isInJSFile(r) && !!K_(r)) && (e.hasContextSensitiveParameters(r) || HI(r)); + } + function HI(r) { + return !r.typeParameters && !e.getEffectiveReturnTypeNode(r) && !!r.body && r.body.kind !== 235 && Ju(r.body); + } + function wD(r) { + return (e.isInJSFile(r) && e.isFunctionDeclaration(r) || e.isFunctionExpressionOrArrowFunction(r) || e.isObjectLiteralMethod(r)) && fE(r); + } + function _E(r) { + if (r.flags & 524288) { + var i = Ru(r); + if (i.constructSignatures.length || i.callSignatures.length) { + var t = tu(16, r.symbol); + return t.members = i.members, t.properties = i.properties, t.callSignatures = e.emptyArray, t.constructSignatures = e.emptyArray, t.indexInfos = e.emptyArray, t; + } + } else if (r.flags & 2097152) + return Do(e.map(r.types, _E)); + return r; + } + function wf(r, i) { + return r_(r, i, wa); + } + function av(r, i) { + return r_(r, i, wa) ? -1 : 0; + } + function OD(r, i) { + return r_(r, i, dt) ? -1 : 0; + } + function XI(r, i) { + return r_(r, i, Or) ? -1 : 0; + } + function E_(r, i) { + return r_(r, i, Or); + } + function ao(r, i) { + return r_(r, i, dt); + } + function xg(r, i) { + return r.flags & 1048576 ? e.every(r.types, function(t) { + return xg(t, i); + }) : i.flags & 1048576 ? e.some(i.types, function(t) { + return xg(r, t); + }) : r.flags & 58982400 ? xg(uc(r) || gr, i) : i === qe ? !!(r.flags & 67633152) : i === br ? !!(r.flags & 524288) && db(r) : lf(r, bd(i)) || Tu(i) && !um(i) && xg(r, Qi); + } + function cm(r, i) { + return r_(r, i, la); + } + function Oh(r, i) { + return cm(r, i) || cm(i, r); + } + function zc(r, i, t, o, s, u) { + return hl(r, i, dt, t, o, s, u); + } + function op(r, i, t, o, s, u) { + return FD(r, i, dt, t, o, s, u, void 0); + } + function FD(r, i, t, o, s, u, h, z) { + return r_(r, i, t) ? true : !o || !cy(s, r, i, t, u, h, z) ? hl(r, i, t, o, u, h, z) : false; + } + function pE(r) { + return !!(r.flags & 16777216 || r.flags & 2097152 && e.some(r.types, pE)); + } + function cy(r, i, t, o, s, u, h) { + if (!r || pE(t)) + return false; + if (!hl(i, t, o, void 0) && QI(r, i, t, o, s, u, h)) + return true; + switch (r.kind) { + case 288: + case 212: + return cy(r.expression, i, t, o, s, u, h); + case 221: + switch (r.operatorToken.kind) { + case 63: + case 27: + return cy(r.right, i, t, o, s, u, h); + } + break; + case 205: + return nw(r, i, t, o, u, h); + case 204: + return tw(r, i, t, o, u, h); + case 286: + return iw(r, i, t, o, u, h); + case 214: + return YI(r, i, t, o, u, h); + } + return false; + } + function QI(r, i, t, o, s, u, h) { + for (var z = ot(i, 0), me = ot(i, 1), Me = 0, $e = [me, z]; Me < $e.length; Me++) { + var tr = $e[Me]; + if (e.some(tr, function(Qr) { + var li = yo(Qr); + return !(li.flags & 131073) && hl(li, t, o, void 0); + })) { + var dr = h || {}; + zc(i, t, r, s, u, dr); + var Dr = dr.errors[dr.errors.length - 1]; + return e.addRelatedInfo(Dr, e.createDiagnosticForNode(r, tr === me ? e.Diagnostics.Did_you_mean_to_use_new_with_this_expression : e.Diagnostics.Did_you_mean_to_call_this_expression)), true; + } + } + return false; + } + function YI(r, i, t, o, s, u) { + if (e.isBlock(r.body) || e.some(r.parameters, e.hasType)) + return false; + var h = ig(i); + if (!h) + return false; + var z = ot(t, 0); + if (!e.length(z)) + return false; + var me = r.body, Me = yo(h), $e = Pa(e.map(z, yo)); + if (!hl(Me, $e, o, void 0)) { + var tr = me && cy(me, Me, $e, o, void 0, s, u); + if (tr) + return tr; + var dr = u || {}; + if (hl(Me, $e, o, me, void 0, s, dr), dr.errors) + return t.symbol && e.length(t.symbol.declarations) && e.addRelatedInfo(dr.errors[dr.errors.length - 1], e.createDiagnosticForNode(t.symbol.declarations[0], e.Diagnostics.The_expected_type_comes_from_the_return_type_of_this_signature)), (e.getFunctionFlags(r) & 2) === 0 && !da(Me, "then") && hl(Ny(Me), $e, o, void 0) && e.addRelatedInfo(dr.errors[dr.errors.length - 1], e.createDiagnosticForNode(r, e.Diagnostics.Did_you_mean_to_mark_this_function_as_async)), true; + } + return false; + } + function $I(r, i, t) { + var o = ep(i, t); + if (o) + return o; + if (i.flags & 1048576) { + var s = bE(r, i); + if (s) + return ep(s, t); + } + } + function ZI(r, i) { + r.contextualType = i; + try { + return Dm(r, 1, i); + } finally { + r.contextualType = void 0; + } + } + function nv(r, i, t, o, s, u) { + for (var h = false, z = r.next(); !z.done; z = r.next()) { + var me = z.value, Me = me.errorNode, $e = me.innerExpression, tr = me.nameType, dr = me.errorMessage, Dr = $I(i, t, tr); + if (!(!Dr || Dr.flags & 8388608)) { + var Qr = ep(i, tr); + if (!!Qr) { + var li = gD(tr, void 0); + if (!hl(Qr, Dr, o, void 0)) { + var Ti = $e && cy($e, Qr, Dr, o, void 0, s, u); + if (h = true, !Ti) { + var Ci = u || {}, $i = $e ? ZI($e, Qr) : Qr; + if (yr && jD($i, Dr)) { + var Zi = e.createDiagnosticForNode(Me, e.Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target, Ot($i), Ot(Dr)); + rn.add(Zi), Ci.errors = [Zi]; + } else { + var qt = !!(li && (bi(t, li) || xe).flags & 16777216), Nt = !!(li && (bi(i, li) || xe).flags & 16777216); + Dr = kg(Dr, qt), Qr = kg(Qr, qt && Nt); + var Ra = hl($i, Dr, o, Me, dr, s, Ci); + Ra && $i !== Qr && hl(Qr, Dr, o, Me, dr, s, Ci); + } + if (Ci.errors) { + var ca = Ci.errors[Ci.errors.length - 1], Sn = _f(tr) ? pf(tr) : void 0, ja = Sn !== void 0 ? bi(t, Sn) : void 0, Fn = false; + if (!ja) { + var wn = nu(t, tr); + wn && wn.declaration && !e.getSourceFileOfNode(wn.declaration).hasNoDefaultLib && (Fn = true, e.addRelatedInfo(ca, e.createDiagnosticForNode(wn.declaration, e.Diagnostics.The_expected_type_comes_from_this_index_signature))); + } + if (!Fn && (ja && e.length(ja.declarations) || t.symbol && e.length(t.symbol.declarations))) { + var Tn = ja && e.length(ja.declarations) ? ja.declarations[0] : t.symbol.declarations[0]; + e.getSourceFileOfNode(Tn).hasNoDefaultLib || e.addRelatedInfo(ca, e.createDiagnosticForNode(Tn, e.Diagnostics.The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1, Sn && !(tr.flags & 8192) ? e.unescapeLeadingUnderscores(Sn) : Ot(tr), Ot(t))); + } + } + } + } + } + } + } + return h; + } + function ew(r) { + var i, t, o; + return kr(this, function(s) { + switch (s.label) { + case 0: + if (!e.length(r.properties)) + return [2]; + i = 0, t = r.properties, s.label = 1; + case 1: + return i < t.length ? (o = t[i], e.isJsxSpreadAttribute(o) || Ob(e.idText(o.name)) ? [3, 3] : [4, { errorNode: o.name, innerExpression: o.initializer, nameType: Bu(e.idText(o.name)) }]) : [3, 4]; + case 2: + s.sent(), s.label = 3; + case 3: + return i++, [3, 1]; + case 4: + return [2]; + } + }); + } + function rw(r, i) { + var t, o, s, u, h; + return kr(this, function(z) { + switch (z.label) { + case 0: + if (!e.length(r.children)) + return [2]; + t = 0, o = 0, z.label = 1; + case 1: + return o < r.children.length ? (s = r.children[o], u = If(o - t), h = dE(s, u, i), h ? [4, h] : [3, 3]) : [3, 5]; + case 2: + return z.sent(), [3, 4]; + case 3: + t++, z.label = 4; + case 4: + return o++, [3, 1]; + case 5: + return [2]; + } + }); + } + function dE(r, i, t) { + switch (r.kind) { + case 288: + return { errorNode: r, innerExpression: r.expression, nameType: i }; + case 11: + if (r.containsOnlyTriviaWhiteSpaces) + break; + return { errorNode: r, innerExpression: void 0, nameType: i, errorMessage: t() }; + case 278: + case 279: + case 282: + return { errorNode: r, innerExpression: r, nameType: i }; + default: + return e.Debug.assertNever(r, "Found invalid jsx child"); + } + } + function iw(r, i, t, o, s, u) { + var h = nv(ew(r), i, t, o, s, u), z; + if (e.isJsxOpeningElement(r.parent) && e.isJsxElement(r.parent.parent)) { + var me = r.parent.parent, Me = _0(Og(r)), $e = Me === void 0 ? "children" : e.unescapeLeadingUnderscores(Me), tr = Bu($e), dr = Jc(t, tr), Dr = e.getSemanticJsxChildren(me.children); + if (!e.length(Dr)) + return h; + var Qr = e.length(Dr) > 1, li = ec(dr, AE), Ti = ec(dr, function(ca) { + return !AE(ca); + }); + if (Qr) { + if (li !== ui) { + var Ci = Wl(f0(me, 0)), $i = rw(me, Ra); + h = nv($i, Ci, li, o, s, u) || h; + } else if (!r_(Jc(i, tr), dr, o)) { + h = true; + var Zi = Xr(me.openingElement.tagName, e.Diagnostics.This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided, $e, Ot(dr)); + u && u.skipLogging && (u.errors || (u.errors = [])).push(Zi); + } + } else if (Ti !== ui) { + var qt = Dr[0], Nt = dE(qt, tr, Ra); + Nt && (h = nv(function() { + return kr(this, function(ca) { + switch (ca.label) { + case 0: + return [4, Nt]; + case 1: + return ca.sent(), [2]; + } + }); + }(), i, t, o, s, u) || h); + } else if (!r_(Jc(i, tr), dr, o)) { + h = true; + var Zi = Xr(me.openingElement.tagName, e.Diagnostics.This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided, $e, Ot(dr)); + u && u.skipLogging && (u.errors || (u.errors = [])).push(Zi); + } + } + return h; + function Ra() { + if (!z) { + var ca = e.getTextOfNode(r.parent.tagName), Sn = _0(Og(r)), ja = Sn === void 0 ? "children" : e.unescapeLeadingUnderscores(Sn), Fn = Jc(t, Bu(ja)), wn = e.Diagnostics._0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2; + z = Ke(Ke({}, wn), { key: "!!ALREADY FORMATTED!!", message: e.formatMessage(void 0, wn, ca, ja, Ot(Fn)) }); + } + return z; + } + } + function gE(r, i) { + var t, o, s, u; + return kr(this, function(h) { + switch (h.label) { + case 0: + if (t = e.length(r.elements), !t) + return [2]; + o = 0, h.label = 1; + case 1: + return o < t ? Eg(i) && !bi(i, "" + o) ? [3, 3] : (s = r.elements[o], e.isOmittedExpression(s) ? [3, 3] : (u = If(o), [4, { errorNode: s, innerExpression: s, nameType: u }])) : [3, 4]; + case 2: + h.sent(), h.label = 3; + case 3: + return o++, [3, 1]; + case 4: + return [2]; + } + }); + } + function tw(r, i, t, o, s, u) { + if (t.flags & 131068) + return false; + if (Eg(i)) + return nv(gE(r, t), i, t, o, s, u); + var h = r.contextualType; + r.contextualType = t; + try { + var z = PC(r, 1, true); + return r.contextualType = h, Eg(z) ? nv(gE(r, t), z, t, o, s, u) : false; + } finally { + r.contextualType = h; + } + } + function aw(r) { + var i, t, o, s, u; + return kr(this, function(h) { + switch (h.label) { + case 0: + if (!e.length(r.properties)) + return [2]; + i = 0, t = r.properties, h.label = 1; + case 1: + if (!(i < t.length)) + return [3, 8]; + if (o = t[i], e.isSpreadAssignment(o)) + return [3, 7]; + if (s = om(Et(o), 8576), !s || s.flags & 131072) + return [3, 7]; + switch (u = o.kind, u) { + case 173: + return [3, 2]; + case 172: + return [3, 2]; + case 169: + return [3, 2]; + case 297: + return [3, 2]; + case 296: + return [3, 4]; + } + return [3, 6]; + case 2: + return [4, { errorNode: o.name, innerExpression: void 0, nameType: s }]; + case 3: + return h.sent(), [3, 7]; + case 4: + return [4, { errorNode: o.name, innerExpression: o.initializer, nameType: s, errorMessage: e.isComputedNonLiteralName(o.name) ? e.Diagnostics.Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1 : void 0 }]; + case 5: + return h.sent(), [3, 7]; + case 6: + e.Debug.assertNever(o), h.label = 7; + case 7: + return i++, [3, 1]; + case 8: + return [2]; + } + }); + } + function nw(r, i, t, o, s, u) { + return t.flags & 131068 ? false : nv(aw(r), i, t, o, s, u); + } + function mE(r, i, t, o, s) { + return hl(r, i, la, t, o, s); + } + function ow(r, i, t) { + return MD(r, i, t ? 4 : 0, false, void 0, void 0, OD, void 0) !== 0; + } + function sw(r) { + return !r.typeParameters && (!r.thisParameter || ta(mv(r.thisParameter))) && r.parameters.length === 1 && H(r) && (mv(r.parameters[0]) === mo || ta(mv(r.parameters[0]))) && ta(yo(r)); + } + function MD(r, i, t, o, s, u, h, z) { + if (r === i || sw(i)) + return -1; + var me = Wc(i), Me = !Xl(i) && (t & 8 ? Xl(r) || Wc(r) > me : Hl(r) > me); + if (Me) + return 0; + r.typeParameters && r.typeParameters !== i.typeParameters && (i = g3(i), r = sk(r, i, void 0, h)); + var $e = Wc(r), tr = yv(r), dr = yv(i); + (tr || dr) && un(tr || dr, z); + var Dr = i.declaration ? i.declaration.kind : 0, Qr = !(t & 3) && Br && Dr !== 169 && Dr !== 168 && Dr !== 171, li = -1, Ti = T_(r); + if (Ti && Ti !== Fi) { + var Ci = T_(i); + if (Ci) { + var $i = !Qr && h(Ti, Ci, false) || h(Ci, Ti, o); + if (!$i) + return o && s(e.Diagnostics.The_this_types_of_each_signature_are_incompatible), 0; + li &= $i; + } + } + for (var Zi = tr || dr ? Math.min($e, me) : Math.max($e, me), qt = tr || dr ? Zi - 1 : -1, Nt = 0; Nt < Zi; Nt++) { + var Ra = Nt === qt ? ym(r, Nt) : Ld(r, Nt), ca = Nt === qt ? ym(i, Nt) : Ld(i, Nt); + if (Ra && ca) { + var Sn = t & 3 ? void 0 : ig(C_(Ra)), ja = t & 3 ? void 0 : ig(C_(ca)), Fn = Sn && ja && !Yc(Sn) && !Yc(ja) && (ju(Ra) & 98304) === (ju(ca) & 98304), $i = Fn ? MD(ja, Sn, t & 8 | (Qr ? 2 : 1), o, s, u, h, z) : !(t & 3) && !Qr && h(Ra, ca, false) || h(ca, Ra, o); + if ($i && t & 8 && Nt >= Hl(r) && Nt < Hl(i) && h(Ra, ca, false) && ($i = 0), !$i) + return o && s(e.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, e.unescapeLeadingUnderscores(vm(r, Nt)), e.unescapeLeadingUnderscores(vm(i, Nt))), 0; + li &= $i; + } + } + if (!(t & 4)) { + var wn = Z1(i) ? Oe : i.declaration && Sl(i.declaration) ? aa(so(i.declaration.symbol)) : yo(i); + if (wn === Fi || wn === Oe) + return li; + var Tn = Z1(r) ? Oe : r.declaration && Sl(r.declaration) ? aa(so(r.declaration.symbol)) : yo(r), Eo = Yc(i); + if (Eo) { + var lt = Yc(r); + if (lt) + li &= cw(lt, Eo, o, s, h); + else if (e.isIdentifierTypePredicate(Eo)) + return o && s(e.Diagnostics.Signature_0_must_be_a_type_predicate, Ml(r)), 0; + } else + li &= t & 1 && h(wn, Tn, false) || h(Tn, wn, o), !li && o && u && u(Tn, wn); + } + return li; + } + function cw(r, i, t, o, s) { + if (r.kind !== i.kind) + return t && (o(e.Diagnostics.A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard), o(e.Diagnostics.Type_predicate_0_is_not_assignable_to_1, Ll(r), Ll(i))), 0; + if ((r.kind === 1 || r.kind === 3) && r.parameterIndex !== i.parameterIndex) + return t && (o(e.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, r.parameterName, i.parameterName), o(e.Diagnostics.Type_predicate_0_is_not_assignable_to_1, Ll(r), Ll(i))), 0; + var u = r.type === i.type ? -1 : r.type && i.type ? s(r.type, i.type, t) : 0; + return u === 0 && t && o(e.Diagnostics.Type_predicate_0_is_not_assignable_to_1, Ll(r), Ll(i)), u; + } + function uw(r, i) { + var t = Qm(r), o = Qm(i), s = yo(t), u = yo(o); + return u === Fi || r_(u, s, dt) || r_(s, u, dt) ? ow(t, o, true) : false; + } + function LD(r) { + return r !== xn && r.properties.length === 0 && r.callSignatures.length === 0 && r.constructSignatures.length === 0 && r.indexInfos.length === 0; + } + function Of(r) { + return r.flags & 524288 ? !Bc(r) && LD(Ru(r)) : r.flags & 67108864 ? true : r.flags & 1048576 ? e.some(r.types, Of) : r.flags & 2097152 ? e.every(r.types, Of) : false; + } + function vE(r) { + return !!(e.getObjectFlags(r) & 16 && (r.members && LD(r) || r.symbol && r.symbol.flags & 2048 && Nf(r.symbol).size === 0)); + } + function yE(r) { + return r.flags & 524288 && !Bc(r) && uo(r).length === 0 && Hn(r).length === 1 && !!ss(r, Li) || r.flags & 3145728 && e.every(r.types, yE) || false; + } + function RD(r, i, t) { + if (r === i) + return true; + var o = y(r) + "," + y(i), s = On.get(o); + if (s !== void 0 && !(!(s & 4) && s & 2 && t)) + return !!(s & 1); + if (r.escapedName !== i.escapedName || !(r.flags & 256) || !(i.flags & 256)) + return On.set(o, 6), false; + for (var u = Jt(i), h = 0, z = uo(Jt(r)); h < z.length; h++) { + var me = z[h]; + if (me.flags & 8) { + var Me = bi(u, me.escapedName); + if (!Me || !(Me.flags & 8)) + return t ? (t(e.Diagnostics.Property_0_is_missing_in_type_1, e.symbolName(me), Ot(go(i), void 0, 64)), On.set(o, 6)) : On.set(o, 2), false; + } + } + return On.set(o, 1), true; + } + function uy(r, i, t, o) { + var s = r.flags, u = i.flags; + return u & 3 || s & 131072 || r === Mr ? true : u & 131072 ? false : !!(s & 402653316 && u & 4 || s & 128 && s & 1024 && u & 128 && !(u & 1024) && r.value === i.value || s & 296 && u & 8 || s & 256 && s & 1024 && u & 256 && !(u & 1024) && r.value === i.value || s & 2112 && u & 64 || s & 528 && u & 16 || s & 12288 && u & 4096 || s & 32 && u & 32 && RD(r.symbol, i.symbol, o) || s & 1024 && u & 1024 && (s & 1048576 && u & 1048576 && RD(r.symbol, i.symbol, o) || s & 2944 && u & 2944 && r.value === i.value && RD(Ys(r.symbol), Ys(i.symbol), o)) || s & 32768 && (!Ye && !(u & 3145728) || u & 49152) || s & 65536 && (!Ye && !(u & 3145728) || u & 65536) || s & 524288 && u & 67108864 || (t === dt || t === la) && (s & 1 || s & 264 && !(s & 1024) && (u & 32 || t === dt && u & 256 && u & 1024))); + } + function r_(r, i, t) { + if (Kp(r) && (r = r.regularType), Kp(i) && (i = i.regularType), r === i) + return true; + if (t !== wa) { + if (t === la && !(i.flags & 131072) && uy(i, r, t) || uy(r, i, t)) + return true; + } else if (!((r.flags | i.flags) & 61865984)) { + if (r.flags !== i.flags) + return false; + if (r.flags & 67358815) + return true; + } + if (r.flags & 524288 && i.flags & 524288) { + var o = t.get(qD(r, i, 0, t, false)); + if (o !== void 0) + return !!(o & 1); + } + return r.flags & 469499904 || i.flags & 469499904 ? hl(r, i, t, void 0) : false; + } + function hE(r, i) { + return e.getObjectFlags(r) & 2048 && Ob(i.escapedName); + } + function BD(r, i) { + for (; ; ) { + var t = Kp(r) ? r.regularType : e.getObjectFlags(r) & 4 && r.node ? Yf(r.target, xo(r)) : r.flags & 3145728 ? bu(r) : r.flags & 33554432 ? i ? r.baseType : r.substitute : r.flags & 25165824 ? Zf(r, i) : r; + if (t = GD(t) || t, t === r) + break; + r = t; + } + return r; + } + function hl(r, i, t, o, s, u, h) { + var z, me, Me, $e, tr, dr = 0, Dr = 0, Qr = 0, li = 0, Ti = false, Ci = 0, $i, Zi, qt = false; + e.Debug.assert(t !== wa || !o, "no error reporting in identity checking"); + var Nt = oa(r, i, 3, !!o, s); + if (Zi && it(), Ti) { + e.tracing === null || e.tracing === void 0 || e.tracing.instant("checkTypes", "checkTypeRelatedTo_DepthLimit", { sourceId: r.id, targetId: i.id, depth: Dr, targetDepth: Qr }); + var Ra = Xr(o || Ie, e.Diagnostics.Excessive_stack_depth_comparing_types_0_and_1, Ot(r), Ot(i)); + h && (h.errors || (h.errors = [])).push(Ra); + } else if (z) { + if (u) { + var ca = u(); + ca && (e.concatenateDiagnosticMessageChains(ca, z), z = ca); + } + var Sn = void 0; + if (s && o && !Nt && r.symbol) { + var ja = Aa(r.symbol); + if (ja.originatingImport && !e.isImportCall(ja.originatingImport)) { + var Fn = hl(Jt(ja.target), i, t, void 0); + if (Fn) { + var wn = e.createDiagnosticForNode(ja.originatingImport, e.Diagnostics.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead); + Sn = e.append(Sn, wn); + } + } + } + var Ra = e.createDiagnosticForNodeFromMessageChain(o, z, Sn); + me && e.addRelatedInfo.apply(void 0, Ve([Ra], me, false)), h && (h.errors || (h.errors = [])).push(Ra), (!h || !h.skipLogging) && rn.add(Ra); + } + return o && h && h.skipLogging && Nt === 0 && e.Debug.assert(!!h.errors, "missed opportunity to interact with error."), Nt !== 0; + function Tn($r) { + z = $r.errorInfo, $i = $r.lastSkippedInfo, Zi = $r.incompatibleStack, Ci = $r.overrideNextErrorInfo, me = $r.relatedInfo; + } + function Eo() { + return { errorInfo: z, lastSkippedInfo: $i, incompatibleStack: Zi == null ? void 0 : Zi.slice(), overrideNextErrorInfo: Ci, relatedInfo: me == null ? void 0 : me.slice() }; + } + function lt($r, hi, Ri, mt, ft) { + Ci++, $i = void 0, (Zi || (Zi = [])).push([$r, hi, Ri, mt, ft]); + } + function it() { + var $r = Zi || []; + Zi = void 0; + var hi = $i; + if ($i = void 0, $r.length === 1) { + Yt.apply(void 0, $r[0]), hi && Qt.apply(void 0, Ve([void 0], hi, false)); + return; + } + for (var Ri = "", mt = []; $r.length; ) { + var ft = $r.pop(), Ht = ft[0], vt = ft.slice(1); + switch (Ht.code) { + case e.Diagnostics.Types_of_property_0_are_incompatible.code: { + Ri.indexOf("new ") === 0 && (Ri = "(".concat(Ri, ")")); + var ht = "" + vt[0]; + Ri.length === 0 ? Ri = "".concat(ht) : e.isIdentifierText(ht, e.getEmitScriptTarget(ye)) ? Ri = "".concat(Ri, ".").concat(ht) : ht[0] === "[" && ht[ht.length - 1] === "]" ? Ri = "".concat(Ri).concat(ht) : Ri = "".concat(Ri, "[").concat(ht, "]"); + break; + } + case e.Diagnostics.Call_signature_return_types_0_and_1_are_incompatible.code: + case e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible.code: + case e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code: + case e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code: { + if (Ri.length === 0) { + var ma = Ht; + Ht.code === e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code ? ma = e.Diagnostics.Call_signature_return_types_0_and_1_are_incompatible : Ht.code === e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code && (ma = e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible), mt.unshift([ma, vt[0], vt[1]]); + } else { + var Ca = Ht.code === e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible.code || Ht.code === e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code ? "new " : "", An = Ht.code === e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code || Ht.code === e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code ? "" : "..."; + Ri = "".concat(Ca).concat(Ri, "(").concat(An, ")"); + } + break; + } + case e.Diagnostics.Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target.code: { + mt.unshift([e.Diagnostics.Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target, vt[0], vt[1]]); + break; + } + case e.Diagnostics.Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target.code: { + mt.unshift([e.Diagnostics.Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target, vt[0], vt[1], vt[2]]); + break; + } + default: + return e.Debug.fail("Unhandled Diagnostic: ".concat(Ht.code)); + } + } + Ri ? Yt(Ri[Ri.length - 1] === ")" ? e.Diagnostics.The_types_returned_by_0_are_incompatible_between_these_types : e.Diagnostics.The_types_of_0_are_incompatible_between_these_types, Ri) : mt.shift(); + for (var gn = 0, Vn = mt; gn < Vn.length; gn++) { + var zo = Vn[gn], Ht = zo[0], vt = zo.slice(1), us = Ht.elidedInCompatabilityPyramid; + Ht.elidedInCompatabilityPyramid = false, Yt.apply(void 0, Ve([Ht], vt, false)), Ht.elidedInCompatabilityPyramid = us; + } + hi && Qt.apply(void 0, Ve([void 0], hi, false)); + } + function Yt($r, hi, Ri, mt, ft) { + e.Debug.assert(!!o), Zi && it(), !$r.elidedInCompatabilityPyramid && (z = e.chainDiagnosticMessages(z, $r, hi, Ri, mt, ft)); + } + function Ia($r) { + e.Debug.assert(!!z), me ? me.push($r) : me = [$r]; + } + function Qt($r, hi, Ri) { + Zi && it(); + var mt = nf(hi, Ri), ft = mt[0], Ht = mt[1], vt = hi, ht = ft; + if (Cg(hi) && !JD(Ri) && (vt = Kl(hi), e.Debug.assert(!ao(vt, Ri), "generalized source shouldn't be assignable"), ht = q_(vt)), Ri.flags & 262144 && Ri !== Rn && Ri !== Da) { + var ma = uc(Ri), Ca = void 0; + ma && (ao(vt, ma) || (Ca = ao(hi, ma))) ? Yt(e.Diagnostics._0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_constraint_2, Ca ? ft : ht, Ht, Ot(ma)) : (z = void 0, Yt(e.Diagnostics._0_could_be_instantiated_with_an_arbitrary_type_which_could_be_unrelated_to_1, Ht, ht)); + } + if ($r) + $r === e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1 && yr && DE(hi, Ri).length && ($r = e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties); + else if (t === la) + $r = e.Diagnostics.Type_0_is_not_comparable_to_type_1; + else if (ft === Ht) + $r = e.Diagnostics.Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated; + else if (yr && DE(hi, Ri).length) + $r = e.Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties; + else { + if (hi.flags & 128 && Ri.flags & 1048576) { + var An = t7(hi, Ri); + if (An) { + Yt(e.Diagnostics.Type_0_is_not_assignable_to_type_1_Did_you_mean_2, ht, Ht, Ot(An)); + return; + } + } + $r = e.Diagnostics.Type_0_is_not_assignable_to_type_1; + } + Yt($r, ht, Ht); + } + function Ka($r, hi) { + var Ri = Kf($r.symbol) ? Ot($r, $r.symbol.valueDeclaration) : Ot($r), mt = Kf(hi.symbol) ? Ot(hi, hi.symbol.valueDeclaration) : Ot(hi); + (Ct === $r && Li === hi || sa === $r && nt === hi || en === $r && Ii === hi || Cx() === $r && Ki === hi) && Yt(e.Diagnostics._0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible, mt, Ri); + } + function cn($r, hi, Ri) { + return Yn($r) ? $r.target.readonly && Bh(hi) ? (Ri && Yt(e.Diagnostics.The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1, Ot($r), Ot(hi)), false) : Pd(hi) : um($r) && Bh(hi) ? (Ri && Yt(e.Diagnostics.The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1, Ot($r), Ot(hi)), false) : Yn(hi) ? Tu($r) : true; + } + function Un($r, hi, Ri) { + return oa($r, hi, 3, Ri); + } + function oa($r, hi, Ri, mt, ft, Ht) { + if (Ri === void 0 && (Ri = 3), mt === void 0 && (mt = false), Ht === void 0 && (Ht = 0), $r.flags & 524288 && hi.flags & 131068) + return uy($r, hi, t, mt ? Yt : void 0) ? -1 : (mt && Mn($r, hi, $r, hi, ft), 0); + var vt = BD($r, false), ht = BD(hi, true); + if (vt === ht) + return -1; + if (t === wa) + return vt.flags !== ht.flags ? 0 : vt.flags & 67358815 ? -1 : (Ln(vt, ht), _t(vt, ht, false, 0, Ri)); + if (vt.flags & 262144 && Q_(vt) === ht) + return -1; + if (vt.flags & 470302716 && ht.flags & 1048576) { + var ma = ht.types, Ca = ma.length === 2 && ma[0].flags & 98304 ? ma[1] : ma.length === 3 && ma[0].flags & 98304 && ma[1].flags & 98304 ? ma[2] : void 0; + if (Ca && !(Ca.flags & 98304) && (ht = BD(Ca, true), vt === ht)) + return -1; + } + if (t === la && !(ht.flags & 131072) && uy(ht, vt, t) || uy(vt, ht, t, mt ? Yt : void 0)) + return -1; + if (vt.flags & 469499904 || ht.flags & 469499904) { + var An = !(Ht & 2) && Qp(vt) && e.getObjectFlags(vt) & 8192; + if (An && Fr(vt, ht, mt)) + return mt && Qt(ft, vt, hi.aliasSymbol ? hi : ht), 0; + var gn = t !== la && !(Ht & 2) && vt.flags & 2752508 && vt !== qe && ht.flags & 2621440 && SE(ht) && (uo(vt).length > 0 || RS(vt)), Vn = !!(e.getObjectFlags(vt) & 2048); + if (gn && !fw(vt, ht, Vn)) { + if (mt) { + var zo = Ot($r.aliasSymbol ? $r : vt), us = Ot(hi.aliasSymbol ? hi : ht), Bo = ot(vt, 0), Io = ot(vt, 1); + Bo.length > 0 && oa(yo(Bo[0]), ht, 1, false) || Io.length > 0 && oa(yo(Io[0]), ht, 1, false) ? Yt(e.Diagnostics.Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it, zo, us) : Yt(e.Diagnostics.Type_0_has_no_properties_in_common_with_type_1, zo, us); + } + return 0; + } + Ln(vt, ht); + var Qo = vt.flags & 1048576 && vt.types.length < 4 && !(ht.flags & 1048576) || ht.flags & 1048576 && ht.types.length < 4 && !(vt.flags & 469499904), ls = Qo ? Lt(vt, ht, mt, Ht) : _t(vt, ht, mt, Ht, Ri); + if (ls && !qt && (ht.flags & 2097152 && (An || gn) || bD(ht) && !Pd(ht) && vt.flags & 2097152 && $s(vt).flags & 3670016 && !e.some(vt.types, function(gi) { + return !!(e.getObjectFlags(gi) & 262144); + })) && (qt = true, ls &= _t(vt, ht, mt, 4, Ri), qt = false), ls) + return ls; + } + return mt && Mn($r, hi, vt, ht, ft), 0; + } + function Mn($r, hi, Ri, mt, ft) { + var Ht = !!GD($r), vt = !!GD(hi); + Ri = $r.aliasSymbol || Ht ? $r : Ri, mt = hi.aliasSymbol || vt ? hi : mt; + var ht = Ci > 0; + if (ht && Ci--, Ri.flags & 524288 && mt.flags & 524288) { + var ma = z; + cn(Ri, mt, true), z !== ma && (ht = !!z); + } + if (Ri.flags & 524288 && mt.flags & 131068) + Ka(Ri, mt); + else if (Ri.symbol && Ri.flags & 524288 && qe === Ri) + Yt(e.Diagnostics.The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead); + else if (e.getObjectFlags(Ri) & 2048 && mt.flags & 2097152) { + var Ca = mt.types, An = Zp(U.IntrinsicAttributes, o), gn = Zp(U.IntrinsicClassAttributes, o); + if (!nn(An) && !nn(gn) && (e.contains(Ca, An) || e.contains(Ca, gn))) + return; + } else + z = ei(z, hi); + if (!ft && ht) { + $i = [Ri, mt]; + return; + } + Qt(ft, Ri, mt); + } + function Ln($r, hi) { + if (!!e.tracing && $r.flags & 3145728 && hi.flags & 3145728) { + var Ri = $r, mt = hi; + if (Ri.objectFlags & mt.objectFlags & 32768) + return; + var ft = Ri.types.length, Ht = mt.types.length; + ft * Ht > 1e6 && e.tracing.instant("checkTypes", "traceUnionsOrIntersectionsTooLarge_DepthLimit", { sourceId: $r.id, sourceSize: ft, targetId: hi.id, targetSize: Ht, pos: o == null ? void 0 : o.pos, end: o == null ? void 0 : o.end }); + } + } + function ci($r, hi) { + var Ri = function(mt, ft) { + var Ht; + ft = $s(ft); + var vt = ft.flags & 3145728 ? Zv(ft, hi) : h_(ft, hi), ht = vt && Jt(vt) || ((Ht = Xo(ft, hi)) === null || Ht === void 0 ? void 0 : Ht.type) || Tr; + return e.append(mt, ht); + }; + return Pa(e.reduceLeft($r, Ri, void 0) || e.emptyArray); + } + function Fr($r, hi, Ri) { + var mt; + if (!Sy(hi) || !n && e.getObjectFlags(hi) & 4096) + return false; + var ft = !!(e.getObjectFlags($r) & 2048); + if ((t === dt || t === la) && (dy(qe, hi) || !ft && Of(hi))) + return false; + var Ht = hi, vt; + hi.flags & 1048576 && (Ht = bA($r, hi, oa) || IL(hi), vt = Ht.flags & 1048576 ? Ht.types : [Ht]); + for (var ht = function(Vn) { + if (jt(Vn, $r.symbol) && !hE($r, Vn)) { + if (!Rb(Ht, Vn.escapedName, ft)) { + if (Ri) { + var zo = ec(Ht, Sy); + if (!o) + return { value: e.Debug.fail() }; + if (e.isJsxAttributes(o) || e.isJsxOpeningLikeElement(o) || e.isJsxOpeningLikeElement(o.parent)) { + Vn.valueDeclaration && e.isJsxAttribute(Vn.valueDeclaration) && e.getSourceFileOfNode(o) === e.getSourceFileOfNode(Vn.valueDeclaration.name) && (o = Vn.valueDeclaration.name); + var us = tn(Vn), Bo = ek(us, zo), Io = Bo ? tn(Bo) : void 0; + Io ? Yt(e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2, us, Ot(zo), Io) : Yt(e.Diagnostics.Property_0_does_not_exist_on_type_1, us, Ot(zo)); + } else { + var Qo = ((mt = $r.symbol) === null || mt === void 0 ? void 0 : mt.declarations) && e.firstOrUndefined($r.symbol.declarations), Io = void 0; + if (Vn.valueDeclaration && e.findAncestor(Vn.valueDeclaration, function(La) { + return La === Qo; + }) && e.getSourceFileOfNode(Qo) === e.getSourceFileOfNode(o)) { + var ls = Vn.valueDeclaration; + e.Debug.assertNode(ls, e.isObjectLiteralElementLike), o = ls; + var gi = ls.name; + e.isIdentifier(gi) && (Io = Vb(gi, zo)); + } + Io !== void 0 ? Yt(e.Diagnostics.Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_write_2, tn(Vn), Ot(zo), Io) : Yt(e.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, tn(Vn), Ot(zo)); + } + } + return { value: true }; + } + if (vt && !oa(Jt(Vn), ci(vt, Vn.escapedName), 3, Ri)) + return Ri && lt(e.Diagnostics.Types_of_property_0_are_incompatible, tn(Vn)), { value: true }; + } + }, ma = 0, Ca = uo($r); ma < Ca.length; ma++) { + var An = Ca[ma], gn = ht(An); + if (typeof gn == "object") + return gn.value; + } + return false; + } + function jt($r, hi) { + return $r.valueDeclaration && hi.valueDeclaration && $r.valueDeclaration.parent === hi.valueDeclaration; + } + function Lt($r, hi, Ri, mt) { + if ($r.flags & 1048576) + return t === la ? Ua($r, hi, Ri && !($r.flags & 131068), mt) : Ni($r, hi, Ri && !($r.flags & 131068), mt); + if (hi.flags & 1048576) + return Kt(fm($r), hi, Ri && !($r.flags & 131068) && !(hi.flags & 131068)); + if (hi.flags & 2097152) + return $t(fm($r), hi, Ri, 2); + if (t === la && hi.flags & 131068) { + var ft = e.sameMap($r.types, Hd); + if (ft !== $r.types && ($r = Do(ft), !($r.flags & 2097152))) + return oa($r, hi, 1, false); + } + return Ua($r, hi, false, 1); + } + function ea($r, hi) { + for (var Ri = -1, mt = $r.types, ft = 0, Ht = mt; ft < Ht.length; ft++) { + var vt = Ht[ft], ht = Kt(vt, hi, false); + if (!ht) + return 0; + Ri &= ht; + } + return Ri; + } + function Kt($r, hi, Ri) { + var mt = hi.types; + if (hi.flags & 1048576) { + if ($f(mt, $r)) + return -1; + var ft = $E(hi, $r); + if (ft) { + var Ht = oa($r, ft, 2, false); + if (Ht) + return Ht; + } + } + for (var vt = 0, ht = mt; vt < ht.length; vt++) { + var ma = ht[vt], Ht = oa($r, ma, 2, false); + if (Ht) + return Ht; + } + if (Ri) { + var Ca = bE($r, hi, oa); + Ca && oa($r, Ca, 2, true); + } + return 0; + } + function $t($r, hi, Ri, mt) { + for (var ft = -1, Ht = hi.types, vt = 0, ht = Ht; vt < ht.length; vt++) { + var ma = ht[vt], Ca = oa($r, ma, 2, Ri, void 0, mt); + if (!Ca) + return 0; + ft &= Ca; + } + return ft; + } + function Ua($r, hi, Ri, mt) { + var ft = $r.types; + if ($r.flags & 1048576 && $f(ft, hi)) + return -1; + for (var Ht = ft.length, vt = 0; vt < Ht; vt++) { + var ht = oa(ft[vt], hi, 1, Ri && vt === Ht - 1, void 0, mt); + if (ht) + return ht; + } + return 0; + } + function Yr($r, hi) { + return $r.flags & 1048576 && hi.flags & 1048576 && !($r.types[0].flags & 32768) && hi.types[0].flags & 32768 ? Ng(hi, -32769) : hi; + } + function Ni($r, hi, Ri, mt) { + for (var ft = -1, Ht = $r.types, vt = Yr($r, hi), ht = 0; ht < Ht.length; ht++) { + var ma = Ht[ht]; + if (vt.flags & 1048576 && Ht.length >= vt.types.length && Ht.length % vt.types.length === 0) { + var Ca = oa(ma, vt.types[ht % vt.types.length], 3, false, void 0, mt); + if (Ca) { + ft &= Ca; + continue; + } + } + var An = oa(ma, hi, 1, Ri, void 0, mt); + if (!An) + return 0; + ft &= An; + } + return ft; + } + function Hi($r, hi, Ri, mt, ft) { + if ($r === void 0 && ($r = e.emptyArray), hi === void 0 && (hi = e.emptyArray), Ri === void 0 && (Ri = e.emptyArray), $r.length !== hi.length && t === wa) + return 0; + for (var Ht = $r.length <= hi.length ? $r.length : hi.length, vt = -1, ht = 0; ht < Ht; ht++) { + var ma = ht < Ri.length ? Ri[ht] : 1, Ca = ma & 7; + if (Ca !== 4) { + var An = $r[ht], gn = hi[ht], Vn = -1; + if (ma & 8 ? Vn = t === wa ? oa(An, gn, 3, false) : av(An, gn) : Ca === 1 ? Vn = oa(An, gn, 3, mt, void 0, ft) : Ca === 2 ? Vn = oa(gn, An, 3, mt, void 0, ft) : Ca === 3 ? (Vn = oa(gn, An, 3, false), Vn || (Vn = oa(An, gn, 3, mt, void 0, ft))) : (Vn = oa(An, gn, 3, mt, void 0, ft), Vn && (Vn &= oa(gn, An, 3, mt, void 0, ft))), !Vn) + return 0; + vt &= Vn; + } + } + return vt; + } + function _t($r, hi, Ri, mt, ft) { + if (Ti) + return 0; + var Ht = mt | (qt ? 8 : 0), vt = qD($r, hi, Ht, t, false), ht = t.get(vt); + if (ht !== void 0 && !(Ri && ht & 2 && !(ht & 4))) { + if (hr) { + var ma = ht & 24; + ma & 8 && un($r, Gp(Vt)), ma & 16 && un($r, Gp(Fa)); + } + return ht & 1 ? -1 : 0; + } + if (!Me) + Me = [], $e = [], tr = []; + else { + for (var Ca = vt.startsWith("*") ? qD($r, hi, Ht, t, true) : void 0, An = 0; An < dr; An++) + if (vt === Me[An] || Ca && Ca === Me[An]) + return 3; + if (Dr === 100 || Qr === 100) + return Ti = true, 0; + } + var gn = dr; + Me[dr] = vt, dr++; + var Vn = li; + ft & 1 && ($e[Dr] = $r, Dr++, !(li & 1) && Rh($r, $e, Dr) && (li |= 1)), ft & 2 && (tr[Qr] = hi, Qr++, !(li & 2) && Rh(hi, tr, Qr) && (li |= 2)); + var zo, us = 0; + hr && (zo = hr, hr = function(Io) { + return us |= Io ? 16 : 8, zo(Io); + }); + var Bo; + if (li === 3 ? (e.tracing === null || e.tracing === void 0 || e.tracing.instant("checkTypes", "recursiveTypeRelatedTo_DepthLimit", { sourceId: $r.id, sourceIdStack: $e.map(function(Io) { + return Io.id; + }), targetId: hi.id, targetIdStack: tr.map(function(Io) { + return Io.id; + }), depth: Dr, targetDepth: Qr }), Bo = 3) : (e.tracing === null || e.tracing === void 0 || e.tracing.push("checkTypes", "structuredTypeRelatedTo", { sourceId: $r.id, targetId: hi.id }), Bo = gt($r, hi, Ri, mt), e.tracing === null || e.tracing === void 0 || e.tracing.pop()), hr && (hr = zo), ft & 1 && Dr--, ft & 2 && Qr--, li = Vn, Bo) { + if (Bo === -1 || Dr === 0 && Qr === 0) { + if (Bo === -1 || Bo === 3) + for (var An = gn; An < dr; An++) + t.set(Me[An], 1 | us); + dr = gn; + } + } else + t.set(vt, (Ri ? 4 : 0) | 2 | us), dr = gn; + return Bo; + } + function gt($r, hi, Ri, mt) { + if (mt & 4) + return Uo($r, hi, Ri, void 0, 0); + var ft, Ht, vt = false, ht = Eo(), ma = $r.flags, Ca = hi.flags; + if (t === wa) { + if (ma & 3145728) { + var An = ea($r, hi); + return An && (An &= ea(hi, $r)), An; + } + if (ma & 4194304) + return oa($r.type, hi.type, 3, false); + if (ma & 8388608 && (ft = oa($r.objectType, hi.objectType, 3, false)) && (ft &= oa($r.indexType, hi.indexType, 3, false)) || ma & 16777216 && $r.root.isDistributive === hi.root.isDistributive && (ft = oa($r.checkType, hi.checkType, 3, false)) && (ft &= oa($r.extendsType, hi.extendsType, 3, false)) && (ft &= oa(ip($r), ip(hi), 3, false)) && (ft &= oa(tp($r), tp(hi), 3, false))) + return ft; + if (ma & 33554432) + return oa($r.substitute, hi.substitute, 3, false); + if (!(ma & 524288)) + return 0; + } else if (ma & 3145728 || Ca & 3145728) { + if (ft = Lt($r, hi, Ri, mt)) + return ft; + if ($r.flags & 2097152 || $r.flags & 262144 && hi.flags & 1048576) { + var gn = G1($r.flags & 2097152 ? $r.types : [$r], !!(hi.flags & 1048576)); + if (gn && gf(gn, function(Pv) { + return Pv !== $r; + }) && (ft = oa(gn, hi, 1, false, void 0, mt))) + return Tn(ht), ft; + } + if (!(ma & 465829888 || ma & 524288 && Ca & 1048576 || ma & 2097152 && Ca & 467402752)) + return 0; + } + if (ma & 17301504 && $r.aliasSymbol && $r.aliasTypeArguments && $r.aliasSymbol === hi.aliasSymbol && !(Fh($r) || Fh(hi))) { + var Vn = TE($r.aliasSymbol); + if (Vn === e.emptyArray) + return 1; + var zo = xA($r.aliasTypeArguments, hi.aliasTypeArguments, Vn, mt); + if (zo !== void 0) + return zo; + } + if (IE($r) && !$r.target.readonly && (ft = oa(xo($r)[0], hi, 1)) || IE(hi) && (hi.target.readonly || Bh(uc($r) || $r)) && (ft = oa($r, xo(hi)[0], 2))) + return ft; + if (Ca & 262144) { + if (e.getObjectFlags($r) & 32 && !$r.declaration.nameType && oa(ql(hi), Mu($r), 3) && !(Lu($r) & 4)) { + var us = vl($r), Bo = Jc(hi, Du($r)); + if (ft = oa(us, Bo, 3, Ri)) + return ft; + } + } else if (Ca & 4194304) { + var Io = hi.type; + if (ma & 4194304 && (ft = oa(Io, $r.type, 3, false))) + return ft; + if (Yn(Io)) { + if (ft = oa($r, Mx(Io), 2, Ri)) + return ft; + } else { + var gn = Vv(Io); + if (gn) { + if (oa($r, ql(gn, hi.stringsOnly), 2, Ri) === -1) + return -1; + } else if (Bc(Io)) { + var Qo = Jl(Io), ls = Mu(Io), gi = void 0; + if (Qo && mg(Io)) { + var zt = $s(Ed(Io)), La = []; + Um(zt, 8576, false, function(Cm) { + return void La.push(un(Qo, tv(Io.mapper, Du(Io), Cm))); + }), gi = Pa(Ve(Ve([], La, true), [Qo], false)); + } else + gi = Qo || ls; + if (oa($r, gi, 2, Ri) === -1) + return -1; + } + } + } else if (Ca & 8388608) { + if (ma & 8388608) { + if ((ft = oa($r.objectType, hi.objectType, 3, Ri)) && (ft &= oa($r.indexType, hi.indexType, 3, Ri)), ft) + return Tn(ht), ft; + Ri && (Ht = z); + } + if (t === dt || t === la) { + var fa = hi.objectType, ya = hi.indexType, Nn = uc(fa) || fa, fn = uc(ya) || ya; + if (!Ad(Nn) && !qp(fn)) { + var hn = 4 | (Nn !== fa ? 2 : 0), gn = ep(Nn, fn, hn); + if (gn) { + if (Ri && Ht && Tn(ht), ft = oa($r, gn, 2, Ri)) + return ft; + Ri && Ht && z && (z = GS([Ht]) <= GS([z]) ? Ht : z); + } + } + } + Ri && (Ht = void 0); + } else if (Bc(hi) && t !== wa) { + var sn = !!hi.declaration.nameType, us = vl(hi), ln = Lu(hi); + if (!(ln & 8)) { + if (!sn && us.flags & 8388608 && us.objectType === $r && us.indexType === Du(hi)) + return -1; + if (!Bc($r)) { + var gi = sn ? Jl(hi) : Mu(hi), lo = ql($r, void 0, true), _o = ln & 4, _s = _o ? Zg(gi, lo) : void 0; + if (_o ? !(_s.flags & 131072) : oa(gi, lo, 3)) { + var Vo = vl(hi), Yo = Du(hi), Cs = Ng(Vo, -98305); + if (!sn && Cs.flags & 8388608 && Cs.indexType === Yo) { + if (ft = oa($r, Cs.objectType, 2, Ri)) + return ft; + } else { + var ic = sn ? _s || gi : _s ? Do([_s, Yo]) : Yo, Bo = Jc($r, ic); + if (ft = oa(Bo, Vo, 3, Ri)) + return ft; + } + } + Ht = z, Tn(ht); + } + } + } else if (Ca & 16777216) { + if (Rh(hi, tr, Qr, 10)) + return Tn(ht), 3; + var _c = hi; + if (!_c.root.inferTypeParameters && !xI(_c.root)) { + var il = !ao(wh(_c.checkType), wh(_c.extendsType)), n_ = !il && ao(Nd(_c.checkType), Nd(_c.extendsType)); + if ((ft = il ? -1 : oa($r, ip(_c), 2, false)) && (ft &= n_ ? -1 : oa($r, tp(_c), 2, false), ft)) + return Tn(ht), ft; + } + } else if (Ca & 134217728) { + if (ma & 134217728) { + if (t === la) + return Gw($r, hi) ? 0 : -1; + un($r, Gp(Fa)); + } + if (VE($r, hi)) + return -1; + } + if (ma & 8650752) { + if (!(ma & 8388608 && Ca & 8388608)) { + var gn = Q_($r); + if (!gn || ma & 262144 && gn.flags & 1) { + if (ft = oa(Ba, Ng(hi, -67108865), 3)) + return Tn(ht), ft; + } else { + if (ft = oa(gn, hi, 1, false, void 0, mt)) + return Tn(ht), ft; + if (ft = oa(Rc(gn, $r), hi, 1, Ri && !(Ca & ma & 262144), void 0, mt)) + return Tn(ht), ft; + } + if (Qv($r)) { + var o_ = Q_($r.indexType); + if (o_ && (ft = oa(Jc($r.objectType, o_), hi, 1, Ri))) + return Tn(ht), ft; + } + } + } else if (ma & 4194304) { + if (ft = oa(at, hi, 1, Ri)) + return Tn(ht), ft; + } else if (ma & 134217728 && !(Ca & 524288)) { + if (!(Ca & 134217728)) { + var gn = uc($r); + if (gn && gn !== $r && (ft = oa(gn, hi, 1, Ri))) + return Tn(ht), ft; + } + } else if (ma & 268435456) + if (Ca & 268435456 && $r.symbol === hi.symbol) { + if (ft = oa($r.type, hi.type, 3, Ri)) + return Tn(ht), ft; + } else { + var gn = uc($r); + if (gn && (ft = oa(gn, hi, 1, Ri))) + return Tn(ht), ft; + } + else if (ma & 16777216) { + if (Rh($r, $e, Dr, 10)) + return Tn(ht), 3; + if (Ca & 16777216) { + var og = $r.root.inferTypeParameters, _p = $r.extendsType, td = void 0; + if (og) { + var s_ = uv(og, void 0, 0, Un); + df(s_.inferences, hi.extendsType, _p, 1536), _p = un(_p, s_.mapper), td = s_.mapper; + } + if (wf(_p, hi.extendsType) && (oa($r.checkType, hi.checkType, 3) || oa(hi.checkType, $r.checkType, 3)) && ((ft = oa(un(ip($r), td), ip(hi), 3, Ri)) && (ft &= oa(tp($r), tp(hi), 3, Ri)), ft)) + return Tn(ht), ft; + } else { + var sg = Wm($r) ? Kv($r) : void 0; + if (sg && (ft = oa(sg, hi, 1, Ri))) + return Tn(ht), ft; + } + var Nc = zm($r); + if (Nc && (ft = oa(Nc, hi, 1, Ri))) + return Tn(ht), ft; + } else { + if (t !== Or && t !== ki && j1(hi) && Of($r)) + return -1; + if (Bc(hi)) + return Bc($r) && (ft = on($r, hi, Ri)) ? (Tn(ht), ft) : 0; + var pp = !!(ma & 131068); + if (t !== wa) + $r = $s($r), ma = $r.flags; + else if (Bc($r)) + return 0; + if (e.getObjectFlags($r) & 4 && e.getObjectFlags(hi) & 4 && $r.target === hi.target && !Yn($r) && !(Fh($r) || Fh(hi))) { + if (Jh($r)) + return -1; + var Vn = zD($r.target); + if (Vn === e.emptyArray) + return 1; + var zo = xA(xo($r), xo(hi), Vn, mt); + if (zo !== void 0) + return zo; + } else { + if (um(hi) ? Pd($r) : Tu(hi) && Yn($r) && !$r.target.readonly) + return t !== wa ? oa(cs($r, nt) || Oe, cs(hi, nt) || Oe, 3, Ri) : 0; + if ((t === Or || t === ki) && Of(hi) && e.getObjectFlags(hi) & 8192 && !Of($r)) + return 0; + } + if (ma & 2621440 && Ca & 524288) { + var Y0 = Ri && z === ht.errorInfo && !pp; + if (ft = Uo($r, hi, Y0, void 0, mt), ft && (ft &= Fs($r, hi, 0, Y0), ft && (ft &= Fs($r, hi, 1, Y0), ft && (ft &= fp($r, hi, pp, Y0, mt)))), vt && ft) + z = Ht || z || ht.errorInfo; + else if (ft) + return ft; + } + if (ma & 2621440 && Ca & 1048576) { + var SA = Ng(hi, 36175872); + if (SA.flags & 1048576) { + var TA = zn($r, SA); + if (TA) + return TA; + } + } + } + return 0; + function GS(Pv) { + return Pv ? e.reduceLeft(Pv, function(Cm, km) { + return Cm + 1 + GS(km.next); + }, 0) : 0; + } + function xA(Pv, Cm, km, wL) { + if (ft = Hi(Pv, Cm, km, Ri, wL)) + return ft; + if (e.some(km, function(HS) { + return !!(HS & 24); + })) { + Ht = void 0, Tn(ht); + return; + } + var EA = Cm && _w(Cm, km); + if (vt = !EA, km !== e.emptyArray && !EA) { + if (vt && !(Ri && e.some(km, function(HS) { + return (HS & 7) === 0; + }))) + return 0; + Ht = z, Tn(ht); + } + } + } + function Vt($r) { + return hr && ($r === Rn || $r === Da || $r === bo) && hr(false), $r; + } + function Fa($r) { + return hr && ($r === Rn || $r === Da || $r === bo) && hr(true), $r; + } + function on($r, hi, Ri) { + var mt = t === la || (t === wa ? Lu($r) === Lu(hi) : qv($r) <= qv(hi)); + if (mt) { + var ft, Ht = Mu(hi), vt = un(Mu($r), Gp(qv($r) < 0 ? Vt : Fa)); + if (ft = oa(Ht, vt, 3, Ri)) { + var ht = Uc([Du($r)], [Du(hi)]); + if (un(Jl($r), ht) === un(Jl(hi), ht)) + return ft & oa(un(vl($r), ht), vl(hi), 3, Ri); + } + } + return 0; + } + function zn($r, hi) { + var Ri = uo($r), mt = YE(Ri, hi); + if (!mt) + return 0; + for (var ft = 1, Ht = 0, vt = mt; Ht < vt.length; Ht++) { + var ht = vt[Ht]; + if (ft *= D8(ml(ht)), ft > 25) + return e.tracing === null || e.tracing === void 0 || e.tracing.instant("checkTypes", "typeRelatedToDiscriminatedType_DepthLimit", { sourceId: $r.id, targetId: hi.id, numCombinations: ft }), 0; + } + for (var ma = new Array(mt.length), Ca = new e.Set(), An = 0; An < mt.length; An++) { + var ht = mt[An], gn = ml(ht); + ma[An] = gn.flags & 1048576 ? gn.types : [gn], Ca.add(ht.escapedName); + } + for (var Vn = e.cartesianProduct(ma), zo = [], us = function(ya) { + var Nn = false; + e: + for (var fn = 0, hn = hi.types; fn < hn.length; fn++) { + for (var sn = hn[fn], ln = function(_s) { + var Vo = mt[_s], Yo = bi(sn, Vo.escapedName); + if (!Yo) + return "continue-outer"; + if (Vo === Yo) + return "continue"; + var Cs = wo($r, hi, Vo, Yo, function(ic) { + return ya[_s]; + }, false, 0, Ye || t === la); + if (!Cs) + return "continue-outer"; + }, lo = 0; lo < mt.length; lo++) { + var _o = ln(lo); + switch (_o) { + case "continue-outer": + continue e; + } + } + e.pushIfUnique(zo, sn, e.equateValues), Nn = true; + } + if (!Nn) + return { value: 0 }; + }, Bo = 0, Io = Vn; Bo < Io.length; Bo++) { + var Qo = Io[Bo], ls = us(Qo); + if (typeof ls == "object") + return ls.value; + } + for (var gi = -1, zt = 0, La = zo; zt < La.length; zt++) { + var fa = La[zt]; + if (gi &= Uo($r, fa, false, Ca, 0), gi && (gi &= Fs($r, fa, 0, false), gi && (gi &= Fs($r, fa, 1, false), gi && !(Yn($r) && Yn(fa)) && (gi &= fp($r, fa, false, false, 0)))), !gi) + return gi; + } + return gi; + } + function Ga($r, hi) { + if (!hi || $r.length === 0) + return $r; + for (var Ri, mt = 0; mt < $r.length; mt++) + hi.has($r[mt].escapedName) ? Ri || (Ri = $r.slice(0, mt)) : Ri && Ri.push($r[mt]); + return Ri || $r; + } + function Qn($r, hi, Ri, mt, ft) { + var Ht = Ye && !!(e.getCheckFlags(hi) & 48), vt = kc(ml(hi), false, Ht), ht = Ri($r); + return oa(ht, vt, 3, mt, void 0, ft); + } + function wo($r, hi, Ri, mt, ft, Ht, vt, ht) { + var ma = e.getDeclarationModifierFlagsFromSymbol(Ri), Ca = e.getDeclarationModifierFlagsFromSymbol(mt); + if (ma & 8 || Ca & 8) { + if (Ri.valueDeclaration !== mt.valueDeclaration) + return Ht && (ma & 8 && Ca & 8 ? Yt(e.Diagnostics.Types_have_separate_declarations_of_a_private_property_0, tn(mt)) : Yt(e.Diagnostics.Property_0_is_private_in_type_1_but_not_in_type_2, tn(mt), Ot(ma & 8 ? $r : hi), Ot(ma & 8 ? hi : $r))), 0; + } else if (Ca & 16) { + if (!vw(Ri, mt)) + return Ht && Yt(e.Diagnostics.Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2, tn(mt), Ot(Zd(Ri) || $r), Ot(Zd(mt) || hi)), 0; + } else if (ma & 16) + return Ht && Yt(e.Diagnostics.Property_0_is_protected_in_type_1_but_public_in_type_2, tn(mt), Ot($r), Ot(hi)), 0; + if (t === ki && Zu(Ri) && !Zu(mt)) + return 0; + var An = Qn(Ri, mt, ft, Ht, vt); + return An ? !ht && Ri.flags & 16777216 && !(mt.flags & 16777216) ? (Ht && Yt(e.Diagnostics.Property_0_is_optional_in_type_1_but_required_in_type_2, tn(mt), Ot($r), Ot(hi)), 0) : An : (Ht && lt(e.Diagnostics.Types_of_property_0_are_incompatible, tn(mt)), 0); + } + function Po($r, hi, Ri, mt) { + var ft = false; + if (Ri.valueDeclaration && e.isNamedDeclaration(Ri.valueDeclaration) && e.isPrivateIdentifier(Ri.valueDeclaration.name) && $r.symbol && $r.symbol.flags & 32) { + var Ht = Ri.valueDeclaration.name.escapedText, vt = e.getSymbolNameForPrivateIdentifier($r.symbol, Ht); + if (vt && bi($r, vt)) { + var ht = e.factory.getDeclarationName($r.symbol.valueDeclaration), ma = e.factory.getDeclarationName(hi.symbol.valueDeclaration); + Yt(e.Diagnostics.Property_0_in_type_1_refers_to_a_different_member_that_cannot_be_accessed_from_within_type_2, ku(Ht), ku(ht.escapedText === "" ? C : ht), ku(ma.escapedText === "" ? C : ma)); + return; + } + } + var Ca = e.arrayFrom(sb($r, hi, mt, false)); + if ((!s || s.code !== e.Diagnostics.Class_0_incorrectly_implements_interface_1.code && s.code !== e.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code) && (ft = true), Ca.length === 1) { + var An = tn(Ri); + Yt.apply(void 0, Ve([e.Diagnostics.Property_0_is_missing_in_type_1_but_required_in_type_2, An], nf($r, hi), false)), e.length(Ri.declarations) && Ia(e.createDiagnosticForNode(Ri.declarations[0], e.Diagnostics._0_is_declared_here, An)), ft && z && Ci++; + } else + cn($r, hi, false) && (Ca.length > 5 ? Yt(e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more, Ot($r), Ot(hi), e.map(Ca.slice(0, 4), function(gn) { + return tn(gn); + }).join(", "), Ca.length - 4) : Yt(e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2, Ot($r), Ot(hi), e.map(Ca, function(gn) { + return tn(gn); + }).join(", ")), ft && z && Ci++); + } + function Uo($r, hi, Ri, mt, ft) { + if (t === wa) + return Rs($r, hi, mt); + var Ht = -1; + if (Yn(hi)) { + if (Pd($r)) { + if (!hi.target.readonly && (um($r) || Yn($r) && $r.target.readonly)) + return 0; + var vt = $_($r), ht = $_(hi), ma = Yn($r) ? $r.target.combinedFlags & 4 : 4, Ca = hi.target.combinedFlags & 4, An = Yn($r) ? $r.target.minLength : 0, gn = hi.target.minLength; + if (!ma && vt < gn) + return Ri && Yt(e.Diagnostics.Source_has_0_element_s_but_target_requires_1, vt, gn), 0; + if (!Ca && ht < An) + return Ri && Yt(e.Diagnostics.Source_has_0_element_s_but_target_allows_only_1, An, ht), 0; + if (!Ca && (ma || ht < vt)) + return Ri && (An < gn ? Yt(e.Diagnostics.Target_requires_0_element_s_but_source_may_have_fewer, gn) : Yt(e.Diagnostics.Target_allows_only_0_element_s_but_source_may_have_more, ht)), 0; + for (var Vn = xo($r), zo = xo(hi), us = Math.min(Yn($r) ? Lx($r.target, 11) : 0, Lx(hi.target, 11)), Bo = Math.min(Yn($r) ? Sh($r.target, 11) : 0, Ca ? Sh(hi.target, 11) : 0), Io = !!mt, Qo = 0; Qo < ht; Qo++) { + var ls = Qo < ht - Bo ? Qo : Qo + vt - ht, gi = Yn($r) && (Qo < us || Qo >= ht - Bo) ? $r.target.elementFlags[ls] : 4, zt = hi.target.elementFlags[Qo]; + if (zt & 8 && !(gi & 8)) + return Ri && Yt(e.Diagnostics.Source_provides_no_match_for_variadic_element_at_position_0_in_target, Qo), 0; + if (gi & 8 && !(zt & 12)) + return Ri && Yt(e.Diagnostics.Variadic_element_at_position_0_in_source_does_not_match_element_at_position_1_in_target, ls, Qo), 0; + if (zt & 1 && !(gi & 1)) + return Ri && Yt(e.Diagnostics.Source_provides_no_match_for_required_element_at_position_0_in_target, Qo), 0; + if (!(Io && ((gi & 12 || zt & 12) && (Io = false), Io && (mt == null ? void 0 : mt.has("" + Qo))))) { + var La = Yn($r) ? Qo < us || Qo >= ht - Bo ? kg(Vn[ls], !!(gi & zt & 2)) : jh($r, us, Bo) || ui : Vn[0], fa = zo[Qo], ya = gi & 8 && zt & 4 ? Zs(fa) : kg(fa, !!(zt & 2)), Nn = oa(La, ya, 3, Ri, void 0, ft); + if (!Nn) + return Ri && (ht > 1 || vt > 1) && (Qo < us || Qo >= ht - Bo || vt - us - Bo === 1 ? lt(e.Diagnostics.Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target, ls, Qo) : lt(e.Diagnostics.Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target, us, vt - Bo - 1, Qo)), 0; + Ht &= Nn; + } + } + return Ht; + } + if (hi.target.combinedFlags & 12) + return 0; + } + var fn = (t === Or || t === ki) && !Qp($r) && !Jh($r) && !Yn($r), hn = cb($r, hi, fn, false); + if (hn) + return Ri && rc($r, hi) && Po($r, hi, hn, fn), 0; + if (Qp(hi)) + for (var sn = 0, ln = Ga(uo($r), mt); sn < ln.length; sn++) { + var lo = ln[sn]; + if (!h_(hi, lo.escapedName)) { + var La = Jt(lo); + if (!(La.flags & 32768)) + return Ri && Yt(e.Diagnostics.Property_0_does_not_exist_on_type_1, tn(lo), Ot(hi)), 0; + } + } + for (var _o = uo(hi), _s = Yn($r) && Yn(hi), Vo = 0, Yo = Ga(_o, mt); Vo < Yo.length; Vo++) { + var Cs = Yo[Vo], ic = Cs.escapedName; + if (!(Cs.flags & 4194304) && (!_s || e.isNumericLiteralName(ic) || ic === "length")) { + var lo = bi($r, ic); + if (lo && lo !== Cs) { + var Nn = wo($r, hi, lo, Cs, ml, Ri, ft, t === la); + if (!Nn) + return 0; + Ht &= Nn; + } + } + } + return Ht; + } + function Rs($r, hi, Ri) { + if (!($r.flags & 524288 && hi.flags & 524288)) + return 0; + var mt = Ga(Pf($r), Ri), ft = Ga(Pf(hi), Ri); + if (mt.length !== ft.length) + return 0; + for (var Ht = -1, vt = 0, ht = mt; vt < ht.length; vt++) { + var ma = ht[vt], Ca = h_(hi, ma.escapedName); + if (!Ca) + return 0; + var An = VD(ma, Ca, oa); + if (!An) + return 0; + Ht &= An; + } + return Ht; + } + function Fs($r, hi, Ri, mt) { + var ft, Ht; + if (t === wa) + return jd($r, hi, Ri); + if (hi === xn || $r === xn) + return -1; + var vt = $r.symbol && Sl($r.symbol.valueDeclaration), ht = hi.symbol && Sl(hi.symbol.valueDeclaration), ma = ot($r, vt && Ri === 1 ? 0 : Ri), Ca = ot(hi, ht && Ri === 1 ? 0 : Ri); + if (Ri === 1 && ma.length && Ca.length) { + var An = !!(ma[0].flags & 4), gn = !!(Ca[0].flags & 4); + if (An && !gn) + return mt && Yt(e.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type), 0; + if (!za(ma[0], Ca[0], mt)) + return 0; + } + var Vn = -1, zo = Ri === 1 ? Ts : xu, us = e.getObjectFlags($r), Bo = e.getObjectFlags(hi); + if (us & 64 && Bo & 64 && $r.symbol === hi.symbol || us & 4 && Bo & 4 && $r.target === hi.target) + for (var Io = 0; Io < Ca.length; Io++) { + var Qo = rl(ma[Io], Ca[Io], true, mt, zo(ma[Io], Ca[Io])); + if (!Qo) + return 0; + Vn &= Qo; + } + else if (ma.length === 1 && Ca.length === 1) { + var ls = t === la || !!ye.noStrictGenericChecks, gi = e.first(ma), zt = e.first(Ca); + if (Vn = rl(gi, zt, ls, mt, zo(gi, zt)), !Vn && mt && Ri === 1 && us & Bo && (((ft = zt.declaration) === null || ft === void 0 ? void 0 : ft.kind) === 171 || ((Ht = gi.declaration) === null || Ht === void 0 ? void 0 : Ht.kind) === 171)) { + var La = function(_o) { + return Ml(_o, void 0, 262144, Ri); + }; + return Yt(e.Diagnostics.Type_0_is_not_assignable_to_type_1, La(gi), La(zt)), Yt(e.Diagnostics.Types_of_construct_signatures_are_incompatible), Vn; + } + } else { + e: + for (var fa = 0, ya = Ca; fa < ya.length; fa++) { + for (var Nn = ya[fa], fn = Eo(), hn = mt, sn = 0, ln = ma; sn < ln.length; sn++) { + var lo = ln[sn], Qo = rl(lo, Nn, true, hn, zo(lo, Nn)); + if (Qo) { + Vn &= Qo, Tn(fn); + continue e; + } + hn = false; + } + return hn && Yt(e.Diagnostics.Type_0_provides_no_match_for_the_signature_1, Ot($r), Ml(Nn, void 0, void 0, Ri)), 0; + } + } + return Vn; + } + function rc($r, hi) { + var Ri = Ft($r, 0), mt = Ft($r, 1), ft = Pf($r); + return (Ri.length || mt.length) && !ft.length ? !!(ot(hi, 0).length && Ri.length || ot(hi, 1).length && mt.length) : true; + } + function xu($r, hi) { + return $r.parameters.length === 0 && hi.parameters.length === 0 ? function(Ri, mt) { + return lt(e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1, Ot(Ri), Ot(mt)); + } : function(Ri, mt) { + return lt(e.Diagnostics.Call_signature_return_types_0_and_1_are_incompatible, Ot(Ri), Ot(mt)); + }; + } + function Ts($r, hi) { + return $r.parameters.length === 0 && hi.parameters.length === 0 ? function(Ri, mt) { + return lt(e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1, Ot(Ri), Ot(mt)); + } : function(Ri, mt) { + return lt(e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible, Ot(Ri), Ot(mt)); + }; + } + function rl($r, hi, Ri, mt, ft) { + return MD(Ri ? Qm($r) : $r, Ri ? Qm(hi) : hi, t === ki ? 8 : 0, mt, Yt, ft, Un, Gp(Fa)); + } + function jd($r, hi, Ri) { + var mt = ot($r, Ri), ft = ot(hi, Ri); + if (mt.length !== ft.length) + return 0; + for (var Ht = -1, vt = 0; vt < mt.length; vt++) { + var ht = _y(mt[vt], ft[vt], false, false, false, oa); + if (!ht) + return 0; + Ht &= ht; + } + return Ht; + } + function lp($r, hi, Ri) { + for (var mt = -1, ft = hi.keyType, Ht = $r.flags & 2097152 ? em($r) : Pf($r), vt = 0, ht = Ht; vt < ht.length; vt++) { + var ma = ht[vt]; + if (!hE($r, ma) && an(om(ma, 8576), ft)) { + var Ca = ml(ma), An = yr || Ca.flags & 32768 || ft === nt || !(ma.flags & 16777216) ? Ca : Ks(Ca, 524288), gn = oa(An, hi.type, 3, Ri); + if (!gn) + return Ri && Yt(e.Diagnostics.Property_0_is_incompatible_with_index_signature, tn(ma)), 0; + mt &= gn; + } + } + for (var Vn = 0, zo = Hn($r); Vn < zo.length; Vn++) { + var us = zo[Vn]; + if (an(us.keyType, ft)) { + var gn = Tl(us, hi, Ri); + if (!gn) + return 0; + mt &= gn; + } + } + return mt; + } + function Tl($r, hi, Ri) { + var mt = oa($r.type, hi.type, 3, Ri); + return !mt && Ri && ($r.keyType === hi.keyType ? Yt(e.Diagnostics._0_index_signatures_are_incompatible, Ot($r.keyType)) : Yt(e.Diagnostics._0_and_1_index_signatures_are_incompatible, Ot($r.keyType), Ot(hi.keyType))), mt; + } + function fp($r, hi, Ri, mt, ft) { + if (t === wa) + return id($r, hi); + for (var Ht = Hn(hi), vt = e.some(Ht, function(Vn) { + return Vn.keyType === Li; + }), ht = -1, ma = 0, Ca = Ht; ma < Ca.length; ma++) { + var An = Ca[ma], gn = !Ri && vt && An.type.flags & 1 ? -1 : Bc($r) && vt ? oa(vl($r), An.type, 3, mt) : zg($r, An, mt, ft); + if (!gn) + return 0; + ht &= gn; + } + return ht; + } + function zg($r, hi, Ri, mt) { + var ft = nu($r, hi.keyType); + return ft ? Tl(ft, hi, Ri) : !(mt & 1) && qh($r) ? lp($r, hi, Ri) : (Ri && Yt(e.Diagnostics.Index_signature_for_type_0_is_missing_in_type_1, Ot(hi.keyType), Ot($r)), 0); + } + function id($r, hi) { + var Ri = Hn($r), mt = Hn(hi); + if (Ri.length !== mt.length) + return 0; + for (var ft = 0, Ht = mt; ft < Ht.length; ft++) { + var vt = Ht[ft], ht = ss($r, vt.keyType); + if (!(ht && oa(ht.type, vt.type, 3) && ht.isReadonly === vt.isReadonly)) + return 0; + } + return -1; + } + function za($r, hi, Ri) { + if (!$r.declaration || !hi.declaration) + return true; + var mt = e.getSelectedEffectiveModifierFlags($r.declaration, 24), ft = e.getSelectedEffectiveModifierFlags(hi.declaration, 24); + return ft === 8 || ft === 16 && mt !== 8 || ft !== 16 && !mt ? true : (Ri && Yt(e.Diagnostics.Cannot_assign_a_0_constructor_type_to_a_1_constructor_type, v_(mt), v_(ft)), false); + } + } + function JD(r) { + if (r.flags & 16) + return false; + if (r.flags & 3145728) + return !!e.forEach(r.types, JD); + if (r.flags & 465829888) { + var i = Q_(r); + if (i && i !== r) + return JD(i); + } + return Vl(r) || !!(r.flags & 134217728); + } + function DE(r, i) { + return Yn(r) && Yn(i) ? e.emptyArray : uo(i).filter(function(t) { + return jD(da(r, t.escapedName), Jt(t)); + }); + } + function jD(r, i) { + return !!r && !!i && fs5(r, 32768) && !!Wh(i); + } + function lw(r) { + return uo(r).filter(function(i) { + return Wh(Jt(i)); + }); + } + function bE(r, i, t) { + return t === void 0 && (t = OD), bA(r, i, t, true) || kL(r, i) || AL(r, i) || NL(r, i) || PL(r, i); + } + function UD(r, i, t, o, s) { + for (var u = r.types.map(function(Zi) { + }), h = 0, z = i; h < z.length; h++) { + var me = z[h], Me = me[0], $e = me[1], tr = $v(r, $e); + if (!(s && tr && e.getCheckFlags(tr) & 16)) + for (var dr = 0, Dr = 0, Qr = r.types; Dr < Qr.length; Dr++) { + var li = Qr[Dr], Ti = da(li, $e); + Ti && t(Me(), Ti) ? u[dr] = u[dr] === void 0 ? true : u[dr] : u[dr] = false, dr++; + } + } + var Ci = u.indexOf(true); + if (Ci === -1) + return o; + for (var $i = u.indexOf(true, Ci + 1); $i !== -1; ) { + if (!wf(r.types[Ci], r.types[$i])) + return o; + $i = u.indexOf(true, $i + 1); + } + return r.types[Ci]; + } + function SE(r) { + if (r.flags & 524288) { + var i = Ru(r); + return i.callSignatures.length === 0 && i.constructSignatures.length === 0 && i.indexInfos.length === 0 && i.properties.length > 0 && e.every(i.properties, function(t) { + return !!(t.flags & 16777216); + }); + } + return r.flags & 2097152 ? e.every(r.types, SE) : false; + } + function fw(r, i, t) { + for (var o = 0, s = uo(r); o < s.length; o++) { + var u = s[o]; + if (Rb(i, u.escapedName, t)) + return true; + } + return false; + } + function zD(r) { + return r === Pi || r === Qi || r.objectFlags & 8 ? de : xE(r.symbol, r.typeParameters); + } + function TE(r) { + return xE(r, Aa(r).typeParameters); + } + function xE(r, i) { + i === void 0 && (i = e.emptyArray); + var t = Aa(r); + if (!t.variances) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("checkTypes", "getVariancesWorker", { arity: i.length, id: fu(go(r)) }), t.variances = e.emptyArray; + for (var o = [], s = function(me) { + var Me = WD(me), $e = Me & 65536 ? Me & 32768 ? 0 : 1 : Me & 32768 ? 2 : void 0; + if ($e === void 0) { + var tr = false, dr = false, Dr = hr; + hr = function(Ti) { + return Ti ? dr = true : tr = true; + }; + var Qr = ly(r, me, Rn), li = ly(r, me, Da); + $e = (ao(li, Qr) ? 1 : 0) | (ao(Qr, li) ? 2 : 0), $e === 3 && ao(ly(r, me, bo), Qr) && ($e = 4), hr = Dr, (tr || dr) && (tr && ($e |= 8), dr && ($e |= 16)); + } + o.push($e); + }, u = 0, h = i; u < h.length; u++) { + var z = h[u]; + s(z); + } + t.variances = o, e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + return t.variances; + } + function ly(r, i, t) { + var o = Yd(i, t), s = go(r); + if (nn(s)) + return s; + var u = r.flags & 524288 ? am(r, e_(Aa(r).typeParameters, o)) : Yf(s, e_(s.typeParameters, o)); + return Je.add(fu(u)), u; + } + function Fh(r) { + return Je.has(fu(r)); + } + function WD(r) { + var i, t; + return (e.some((i = r.symbol) === null || i === void 0 ? void 0 : i.declarations, function(o) { + return e.hasSyntacticModifier(o, 32768); + }) ? 32768 : 0) | (e.some((t = r.symbol) === null || t === void 0 ? void 0 : t.declarations, function(o) { + return e.hasSyntacticModifier(o, 65536); + }) ? 65536 : 0); + } + function _w(r, i) { + for (var t = 0; t < i.length; t++) + if ((i[t] & 7) === 1 && r[t].flags & 16384) + return true; + return false; + } + function pw(r) { + return r.flags & 262144 && !Tc(r); + } + function dw(r) { + return !!(e.getObjectFlags(r) & 4) && !r.node; + } + function Mh(r) { + return dw(r) && e.some(xo(r), function(i) { + return !!(i.flags & 262144) || Mh(i); + }); + } + function gw(r, i, t, o) { + var s = [], u = "", h = me(r, 0), z = me(i, 0); + return "".concat(u).concat(h, ",").concat(z).concat(t); + function me(Me, $e) { + $e === void 0 && ($e = 0); + for (var tr = "" + Me.target.id, dr = 0, Dr = xo(Me); dr < Dr.length; dr++) { + var Qr = Dr[dr]; + if (Qr.flags & 262144) { + if (o || pw(Qr)) { + var li = s.indexOf(Qr); + li < 0 && (li = s.length, s.push(Qr)), tr += "=" + li; + continue; + } + u = "*"; + } else if ($e < 4 && Mh(Qr)) { + tr += "<" + me(Qr, $e + 1) + ">"; + continue; + } + tr += "-" + Qr.id; + } + return tr; + } + } + function qD(r, i, t, o, s) { + if (o === wa && r.id > i.id) { + var u = r; + r = i, i = u; + } + var h = t ? ":" + t : ""; + return Mh(r) && Mh(i) ? gw(r, i, h, s) : "".concat(r.id, ",").concat(i.id).concat(h); + } + function fy(r, i) { + if (e.getCheckFlags(r) & 6) { + for (var t = 0, o = r.containingType.types; t < o.length; t++) { + var s = o[t], u = bi(s, r.escapedName), h = u && fy(u, i); + if (h) + return h; + } + return; + } + return i(r); + } + function Zd(r) { + return r.parent && r.parent.flags & 32 ? go(Ys(r)) : void 0; + } + function Lh(r) { + var i = Zd(r), t = i && Qc(i)[0]; + return t && da(t, r.escapedName); + } + function mw(r, i) { + return fy(r, function(t) { + var o = Zd(t); + return o ? lf(o, i) : false; + }); + } + function vw(r, i) { + return !fy(i, function(t) { + return e.getDeclarationModifierFlagsFromSymbol(t) & 16 ? !mw(r, Zd(t)) : false; + }); + } + function EE(r, i, t) { + return fy(i, function(o) { + return e.getDeclarationModifierFlagsFromSymbol(o, t) & 16 ? !lf(r, Zd(o)) : false; + }) ? void 0 : r; + } + function Rh(r, i, t, o) { + if (o === void 0 && (o = 3), t >= o) + for (var s = ov(r), u = 0, h = 0, z = 0; z < t; z++) { + var me = i[z]; + if (ov(me) === s) { + if (me.id >= h && (u++, u >= o)) + return true; + h = me.id; + } + } + return false; + } + function ov(r) { + if (r.flags & 524288 && !lb(r)) { + if (e.getObjectFlags(r) && 4 && r.node) + return r.node; + if (r.symbol && !(e.getObjectFlags(r) & 16 && r.symbol.flags & 32)) + return r.symbol; + if (Yn(r)) + return r.target; + } + if (r.flags & 262144) + return r.symbol; + if (r.flags & 8388608) { + do + r = r.objectType; + while (r.flags & 8388608); + return r; + } + return r.flags & 16777216 ? r.root : r; + } + function yw(r, i) { + return VD(r, i, av) !== 0; + } + function VD(r, i, t) { + if (r === i) + return -1; + var o = e.getDeclarationModifierFlagsFromSymbol(r) & 24, s = e.getDeclarationModifierFlagsFromSymbol(i) & 24; + if (o !== s) + return 0; + if (o) { + if (jg(r) !== jg(i)) + return 0; + } else if ((r.flags & 16777216) !== (i.flags & 16777216)) + return 0; + return Zu(r) !== Zu(i) ? 0 : t(Jt(r), Jt(i)); + } + function hw(r, i, t) { + var o = Wc(r), s = Wc(i), u = Hl(r), h = Hl(i), z = Xl(r), me = Xl(i); + return !!(o === s && u === h && z === me || t && u <= h); + } + function _y(r, i, t, o, s, u) { + if (r === i) + return -1; + if (!hw(r, i, t) || e.length(r.typeParameters) !== e.length(i.typeParameters)) + return 0; + if (i.typeParameters) { + for (var h = Uc(r.typeParameters, i.typeParameters), z = 0; z < i.typeParameters.length; z++) { + var me = r.typeParameters[z], Me = i.typeParameters[z]; + if (!(me === Me || u(un(tm(me), h) || gr, tm(Me) || gr) && u(un(D_(me), h) || gr, D_(Me) || gr))) + return 0; + } + r = Tg(r, h, true); + } + var $e = -1; + if (!o) { + var tr = T_(r); + if (tr) { + var dr = T_(i); + if (dr) { + var Dr = u(tr, dr); + if (!Dr) + return 0; + $e &= Dr; + } + } + } + for (var Qr = Wc(i), z = 0; z < Qr; z++) { + var me = $u(r, z), Me = $u(i, z), Dr = u(Me, me); + if (!Dr) + return 0; + $e &= Dr; + } + if (!s) { + var li = Yc(r), Ti = Yc(i); + $e &= li || Ti ? Dw(li, Ti, u) : u(yo(r), yo(i)); + } + return $e; + } + function Dw(r, i, t) { + return r && i && _D(r, i) ? r.type === i.type ? -1 : r.type && i.type ? t(r.type, i.type) : 0 : 0; + } + function bw(r) { + for (var i, t = 0, o = r; t < o.length; t++) { + var s = o[t], u = Kl(s); + if (i || (i = u), u === s || u !== i) + return false; + } + return true; + } + function CE(r) { + return r.length === 1 ? r[0] : bw(r) ? Pa(r) : e.reduceLeft(r, function(i, t) { + return E_(i, t) ? t : i; + }); + } + function Sw(r) { + if (!Ye) + return CE(r); + var i = e.filter(r, function(t) { + return !(t.flags & 98304); + }); + return i.length ? Uh(CE(i), wE(r) & 98304) : Pa(r, 2); + } + function Tw(r) { + return e.reduceLeft(r, function(i, t) { + return E_(t, i) ? t : i; + }); + } + function Tu(r) { + return !!(e.getObjectFlags(r) & 4) && (r.target === Pi || r.target === Qi); + } + function um(r) { + return !!(e.getObjectFlags(r) & 4) && r.target === Qi; + } + function Pd(r) { + return Tu(r) || Yn(r); + } + function Bh(r) { + return Tu(r) && !um(r) || Yn(r) && !r.target.readonly; + } + function KD(r) { + return Tu(r) ? xo(r)[0] : void 0; + } + function sp(r) { + return Tu(r) || !(r.flags & 98304) && ao(r, Go); + } + function GD(r) { + if (!(!(e.getObjectFlags(r) & 4) || !(e.getObjectFlags(r.target) & 3))) { + if (e.getObjectFlags(r) & 33554432) + return e.getObjectFlags(r) & 67108864 ? r.cachedEquivalentBaseType : void 0; + r.objectFlags |= 33554432; + var i = r.target; + if (e.getObjectFlags(i) & 1) { + var t = fg(i); + if (t && t.expression.kind !== 79 && t.expression.kind !== 206) + return; + } + var o = Qc(i); + if (o.length === 1 && !Nf(r.symbol).size) { + var s = e.length(i.typeParameters) ? un(o[0], Uc(i.typeParameters, xo(r).slice(0, i.typeParameters.length))) : o[0]; + return e.length(xo(r)) > e.length(i.typeParameters) && (s = Rc(s, e.last(xo(r)))), r.objectFlags |= 67108864, r.cachedEquivalentBaseType = s; + } + } + } + function kE(r) { + return Ye ? r === na : r === vi; + } + function Jh(r) { + var i = KD(r); + return !!i && kE(i); + } + function Eg(r) { + return Yn(r) || !!bi(r, "0"); + } + function AE(r) { + return sp(r) || Eg(r); + } + function xw(r, i) { + var t = da(r, "" + i); + if (t) + return t; + if (gf(r, Yn)) + return Ss(r, function(o) { + return sv(o) || Tr; + }); + } + function Ew(r) { + return !(r.flags & 240512); + } + function Vl(r) { + return !!(r.flags & 109440); + } + function NE(r) { + return r.flags & 2097152 ? e.some(r.types, Vl) : !!(r.flags & 109440); + } + function Cw(r) { + return r.flags & 2097152 && e.find(r.types, Vl) || r; + } + function Cg(r) { + return r.flags & 16 ? true : r.flags & 1048576 ? r.flags & 1024 ? true : e.every(r.types, Vl) : Vl(r); + } + function Kl(r) { + return r.flags & 1024 ? cc(r) : r.flags & 402653312 ? Li : r.flags & 256 ? nt : r.flags & 2048 ? Mt : r.flags & 512 ? Ii : r.flags & 1048576 ? Ss(r, Kl) : r; + } + function Hp(r) { + return r.flags & 1024 && Kp(r) ? cc(r) : r.flags & 128 && Kp(r) ? Li : r.flags & 256 && Kp(r) ? nt : r.flags & 2048 && Kp(r) ? Mt : r.flags & 512 && Kp(r) ? Ii : r.flags & 1048576 ? Ss(r, Hp) : r; + } + function PE(r) { + return r.flags & 8192 ? Ki : r.flags & 1048576 ? Ss(r, PE) : r; + } + function HD(r, i) { + return N0(r, i) || (r = PE(Hp(r))), r; + } + function kw(r, i, t) { + if (r && Vl(r)) { + var o = i ? t ? Tv(i) : i : void 0; + r = HD(r, o); + } + return r; + } + function XD(r, i, t, o) { + if (r && Vl(r)) { + var s = i ? Jg(t, i, o) : void 0; + r = HD(r, s); + } + return r; + } + function Yn(r) { + return !!(e.getObjectFlags(r) & 4 && r.target.objectFlags & 8); + } + function lm(r) { + return Yn(r) && !!(r.target.combinedFlags & 8); + } + function IE(r) { + return lm(r) && r.target.elementFlags.length === 1; + } + function sv(r) { + return jh(r, r.target.fixedLength); + } + function Aw(r) { + var i = sv(r); + return i && Zs(i); + } + function jh(r, i, t, o) { + t === void 0 && (t = 0), o === void 0 && (o = false); + var s = $_(r) - t; + if (i < s) { + for (var u = xo(r), h = [], z = i; z < s; z++) { + var me = u[z]; + h.push(r.target.elementFlags[z] & 8 ? Jc(me, nt) : me); + } + return o ? Do(h) : Pa(h); + } + } + function Nw(r, i) { + return $_(r) === $_(i) && e.every(r.target.elementFlags, function(t, o) { + return (t & 12) === (i.target.elementFlags[o] & 12); + }); + } + function QD(r) { + var i = r.value; + return i.base10Value === "0"; + } + function wE(r) { + for (var i = 0, t = 0, o = r; t < o.length; t++) { + var s = o[t]; + i |= ju(s); + } + return i; + } + function ju(r) { + return r.flags & 1048576 ? wE(r.types) : r.flags & 128 ? r.value === "" ? 128 : 0 : r.flags & 256 ? r.value === 0 ? 256 : 0 : r.flags & 2048 ? QD(r) ? 2048 : 0 : r.flags & 512 ? r === xt || r === ut ? 512 : 0 : r.flags & 117724; + } + function OE(r) { + return ju(r) & 117632 ? ec(r, function(i) { + return !(ju(i) & 117632); + }) : r; + } + function Pw(r) { + return Ss(r, Iw); + } + function Iw(r) { + return r.flags & 4 ? Rf : r.flags & 8 ? al : r.flags & 64 ? Jo : r === ut || r === xt || r.flags & 114691 || r.flags & 128 && r.value === "" || r.flags & 256 && r.value === 0 || r.flags & 2048 && QD(r) ? r : ui; + } + function Uh(r, i) { + var t = i & ~r.flags & 98304; + return t === 0 ? r : Pa(t === 32768 ? [r, Tr] : t === 65536 ? [r, Wi] : [r, Tr, Wi]); + } + function i_(r, i) { + return i === void 0 && (i = false), e.Debug.assert(Ye), r.flags & 32768 ? r : Pa([r, i ? Yi : Tr]); + } + function ww(r) { + var i = Ks(r, 2097152); + return ys || (ys = Ym("NonNullable", 524288, void 0) || xe), ys !== xe ? am(ys, [i]) : i; + } + function C_(r) { + return Ye ? ww(r) : r; + } + function FE(r) { + return Ye ? Pa([r, Ui]) : r; + } + function YD(r) { + return Ye ? Zh(r, Ui) : r; + } + function zh(r, i, t) { + return t ? e.isOutermostOptionalChain(i) ? i_(r) : FE(r) : r; + } + function cv(r, i) { + return e.isExpressionOfOptionalChainRoot(i) ? C_(r) : e.isOptionalChain(i) ? YD(r) : r; + } + function kg(r, i) { + return yr && i ? Zh(r, Yi) : r; + } + function Wh(r) { + return yr && (r === Yi || r.flags & 1048576 && $f(r.types, Yi)); + } + function $D(r) { + return yr ? Zh(r, Yi) : Ks(r, 524288); + } + function Ow(r, i) { + return (r.flags & 524) !== 0 && (i.flags & 28) !== 0; + } + function qh(r) { + return r.flags & 2097152 ? e.every(r.types, qh) : !!(r.symbol && (r.symbol.flags & 7040) !== 0 && !(r.symbol.flags & 32) && !RS(r)) || !!(e.getObjectFlags(r) & 1024 && qh(r.source)); + } + function eg(r, i) { + var t = oo(r.flags, r.escapedName, e.getCheckFlags(r) & 8); + t.declarations = r.declarations, t.parent = r.parent, t.type = i, t.target = r, r.valueDeclaration && (t.valueDeclaration = r.valueDeclaration); + var o = Aa(r).nameType; + return o && (t.nameType = o), t; + } + function Fw(r, i) { + for (var t = e.createSymbolTable(), o = 0, s = Pf(r); o < s.length; o++) { + var u = s[o], h = Jt(u), z = i(h); + t.set(u.escapedName, z === h ? u : eg(u, z)); + } + return t; + } + function fm(r) { + if (!(Qp(r) && e.getObjectFlags(r) & 8192)) + return r; + var i = r.regularType; + if (i) + return i; + var t = r, o = Fw(r, fm), s = rs(t.symbol, o, t.callSignatures, t.constructSignatures, t.indexInfos); + return s.flags = t.flags, s.objectFlags |= t.objectFlags & -8193, r.regularType = s, s; + } + function ME(r, i, t) { + return { parent: r, propertyName: i, siblings: t, resolvedProperties: void 0 }; + } + function LE(r) { + if (!r.siblings) { + for (var i = [], t = 0, o = LE(r.parent); t < o.length; t++) { + var s = o[t]; + if (Qp(s)) { + var u = h_(s, r.propertyName); + u && Od(Jt(u), function(h) { + i.push(h); + }); + } + } + r.siblings = i; + } + return r.siblings; + } + function Mw(r) { + if (!r.resolvedProperties) { + for (var i = new e.Map(), t = 0, o = LE(r); t < o.length; t++) { + var s = o[t]; + if (Qp(s) && !(e.getObjectFlags(s) & 2097152)) + for (var u = 0, h = uo(s); u < h.length; u++) { + var z = h[u]; + i.set(z.escapedName, z); + } + } + r.resolvedProperties = e.arrayFrom(i.values()); + } + return r.resolvedProperties; + } + function Lw(r, i) { + if (!(r.flags & 4)) + return r; + var t = Jt(r), o = i && ME(i, r.escapedName, void 0), s = ZD(t, o); + return s === t ? r : eg(r, s); + } + function Rw(r) { + var i = Wr.get(r.escapedName); + if (i) + return i; + var t = eg(r, Yi); + return t.flags |= 16777216, Wr.set(r.escapedName, t), t; + } + function Bw(r, i) { + for (var t = e.createSymbolTable(), o = 0, s = Pf(r); o < s.length; o++) { + var u = s[o]; + t.set(u.escapedName, Lw(u, i)); + } + if (i) + for (var h = 0, z = Mw(i); h < z.length; h++) { + var u = z[h]; + t.has(u.escapedName) || t.set(u.escapedName, Rw(u)); + } + var me = rs(r.symbol, t, e.emptyArray, e.emptyArray, e.sameMap(Hn(r), function(Me) { + return zl(Me.keyType, $c(Me.type), Me.isReadonly); + })); + return me.objectFlags |= e.getObjectFlags(r) & 266240, me; + } + function $c(r) { + return ZD(r, void 0); + } + function ZD(r, i) { + if (e.getObjectFlags(r) & 196608) { + if (i === void 0 && r.widened) + return r.widened; + var t = void 0; + if (r.flags & 98305) + t = Oe; + else if (Qp(r)) + t = Bw(r, i); + else if (r.flags & 1048576) { + var o = i || ME(void 0, void 0, r.types), s = e.sameMap(r.types, function(u) { + return u.flags & 98304 ? u : ZD(u, o); + }); + t = Pa(s, e.some(s, Of) ? 2 : 1); + } else + r.flags & 2097152 ? t = Do(e.sameMap(r.types, $c)) : Pd(r) && (t = Yf(r.target, e.sameMap(xo(r), $c))); + return t && i === void 0 && (r.widened = t), t || r; + } + return r; + } + function Vh(r) { + var i = false; + if (e.getObjectFlags(r) & 65536) { + if (r.flags & 1048576) + if (e.some(r.types, Of)) + i = true; + else + for (var t = 0, o = r.types; t < o.length; t++) { + var s = o[t]; + Vh(s) && (i = true); + } + if (Pd(r)) + for (var u = 0, h = xo(r); u < h.length; u++) { + var s = h[u]; + Vh(s) && (i = true); + } + if (Qp(r)) + for (var z = 0, me = Pf(r); z < me.length; z++) { + var Me = me[z], s = Jt(Me); + e.getObjectFlags(s) & 65536 && (Vh(s) || Xr(Me.valueDeclaration, e.Diagnostics.Object_literal_s_property_0_implicitly_has_an_1_type, tn(Me), Ot($c(s))), i = true); + } + } + return i; + } + function Xp(r, i, t) { + var o = Ot($c(i)); + if (!(e.isInJSFile(r) && !e.isCheckJsEnabledForFile(e.getSourceFileOfNode(r), ye))) { + var s; + switch (r.kind) { + case 221: + case 167: + case 166: + s = n ? e.Diagnostics.Member_0_implicitly_has_an_1_type : e.Diagnostics.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage; + break; + case 164: + var u = r; + if (e.isIdentifier(u.name) && (e.isCallSignatureDeclaration(u.parent) || e.isMethodSignature(u.parent) || e.isFunctionTypeNode(u.parent)) && u.parent.parameters.indexOf(u) > -1 && (es(u, u.name.escapedText, 788968, void 0, u.name.escapedText, true) || u.name.originalKeywordKind && e.isTypeNodeKind(u.name.originalKeywordKind))) { + var h = "arg" + u.parent.parameters.indexOf(u), z = e.declarationNameToString(u.name) + (u.dotDotDotToken ? "[]" : ""); + Ic(n, r, e.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, h, z); + return; + } + s = r.dotDotDotToken ? n ? e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage : n ? e.Diagnostics.Parameter_0_implicitly_has_an_1_type : e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage; + break; + case 203: + if (s = e.Diagnostics.Binding_element_0_implicitly_has_an_1_type, !n) + return; + break; + case 317: + Xr(r, e.Diagnostics.Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, o); + return; + case 256: + case 169: + case 168: + case 172: + case 173: + case 213: + case 214: + if (n && !r.name) { + t === 3 ? Xr(r, e.Diagnostics.Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation, o) : Xr(r, e.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, o); + return; + } + s = n ? t === 3 ? e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type : e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type : e.Diagnostics._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage; + break; + case 195: + n && Xr(r, e.Diagnostics.Mapped_object_type_implicitly_has_an_any_template_type); + return; + default: + s = n ? e.Diagnostics.Variable_0_implicitly_has_an_1_type : e.Diagnostics.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage; + } + Ic(n, r, s, e.declarationNameToString(e.getNameOfDeclaration(r)), o); + } + } + function Kh(r, i, t) { + fe(function() { + n && e.getObjectFlags(i) & 65536 && (!t || !Pb(r)) && (Vh(i) || Xp(r, i, t)); + }); + } + function eb(r, i, t) { + var o = Wc(r), s = Wc(i), u = vv(r), h = vv(i), z = h ? s - 1 : s, me = u ? z : Math.min(o, z), Me = T_(r); + if (Me) { + var $e = T_(i); + $e && t(Me, $e); + } + for (var tr = 0; tr < me; tr++) + t($u(r, tr), $u(i, tr)); + h && t(ym(r, me), h); + } + function rb(r, i, t) { + var o = Yc(r), s = Yc(i); + o && s && _D(o, s) && o.type && s.type ? t(o.type, s.type) : t(yo(r), yo(i)); + } + function uv(r, i, t, o) { + return ib(r.map(tb), i, t, o || OD); + } + function Jw(r, i) { + return i === void 0 && (i = 0), r && ib(e.map(r.inferences, JE), r.signature, r.flags | i, r.compareTypes); + } + function ib(r, i, t, o) { + var s = { inferences: r, signature: i, flags: t, compareTypes: o, mapper: Gp(function(u) { + return RE(s, u, true); + }), nonFixingMapper: Gp(function(u) { + return RE(s, u, false); + }) }; + return s; + } + function RE(r, i, t) { + for (var o = r.inferences, s = 0; s < o.length; s++) { + var u = o[s]; + if (i === u.typeParameter) + return t && !u.isFixed && (jw(r), Gh(o), u.isFixed = true), GE(r, s); + } + return i; + } + function Gh(r) { + for (var i = 0, t = r; i < t.length; i++) { + var o = t[i]; + o.isFixed || (o.inferredType = void 0); + } + } + function BE(r, i, t) { + var o; + ((o = r.intraExpressionInferenceSites) !== null && o !== void 0 ? o : r.intraExpressionInferenceSites = []).push({ node: i, type: t }); + } + function jw(r) { + if (r.intraExpressionInferenceSites) { + for (var i = 0, t = r.intraExpressionInferenceSites; i < t.length; i++) { + var o = t[i], s = o.node, u = o.type, h = s.kind === 169 ? kC(s, 2) : ou(s, 2); + h && df(r.inferences, u, h); + } + r.intraExpressionInferenceSites = void 0; + } + } + function tb(r) { + return { typeParameter: r, candidates: void 0, contraCandidates: void 0, inferredType: void 0, priority: void 0, topLevel: true, isFixed: false, impliedArity: void 0 }; + } + function JE(r) { + return { typeParameter: r.typeParameter, candidates: r.candidates && r.candidates.slice(), contraCandidates: r.contraCandidates && r.contraCandidates.slice(), inferredType: r.inferredType, priority: r.priority, topLevel: r.topLevel, isFixed: r.isFixed, impliedArity: r.impliedArity }; + } + function Uw(r) { + var i = e.filter(r.inferences, tg); + return i.length ? ib(e.map(i, JE), r.signature, r.flags, r.compareTypes) : void 0; + } + function ab(r) { + return r && r.mapper; + } + function Id(r) { + var i = e.getObjectFlags(r); + if (i & 524288) + return !!(i & 1048576); + var t = !!(r.flags & 465829888 || r.flags & 524288 && !jE(r) && (i & 4 && (r.node || e.forEach(xo(r), Id)) || i & 16 && r.symbol && r.symbol.flags & 14384 && r.symbol.declarations || i & 12583968) || r.flags & 3145728 && !(r.flags & 1024) && !jE(r) && e.some(r.types, Id)); + return r.flags & 3899393 && (r.objectFlags |= 524288 | (t ? 1048576 : 0)), t; + } + function jE(r) { + if (r.aliasSymbol && !r.aliasTypeArguments) { + var i = e.getDeclarationOfKind(r.aliasSymbol, 259); + return !!(i && e.findAncestor(i.parent, function(t) { + return t.kind === 305 ? true : t.kind === 261 ? false : "quit"; + })); + } + return false; + } + function nb(r, i) { + return !!(r === i || r.flags & 3145728 && e.some(r.types, function(t) { + return nb(t, i); + }) || r.flags & 16777216 && (ip(r) === i || tp(r) === i)); + } + function zw(r) { + var i = e.createSymbolTable(); + Od(r, function(o) { + if (!!(o.flags & 128)) { + var s = e.escapeLeadingUnderscores(o.value), u = oo(4, s); + u.type = Oe, o.symbol && (u.declarations = o.symbol.declarations, u.valueDeclaration = o.symbol.valueDeclaration), i.set(s, u); + } + }); + var t = r.flags & 4 ? [zl(Li, Ba, false)] : e.emptyArray; + return rs(void 0, i, e.emptyArray, e.emptyArray, t); + } + function UE(r, i, t) { + if (!Qe) { + var o = r.id + "," + i.id + "," + t.id; + if (Jn.has(o)) + return Jn.get(o); + Qe = true; + var s = Ww(r, i, t); + return Qe = false, Jn.set(o, s), s; + } + } + function ob(r) { + return !(e.getObjectFlags(r) & 262144) || Qp(r) && e.some(uo(r), function(i) { + return ob(Jt(i)); + }) || Yn(r) && e.some(xo(r), ob); + } + function Ww(r, i, t) { + if (!!(ss(r, Li) || uo(r).length !== 0 && ob(r))) { + if (Tu(r)) + return Zs(Hh(xo(r)[0], i, t), um(r)); + if (Yn(r)) { + var o = e.map(xo(r), function(h) { + return Hh(h, i, t); + }), s = Lu(i) & 4 ? e.sameMap(r.target.elementFlags, function(h) { + return h & 2 ? 1 : h; + }) : r.target.elementFlags; + return Wl(o, s, r.target.readonly, r.target.labeledElementDeclarations); + } + var u = tu(1040, void 0); + return u.source = r, u.mappedType = i, u.constraintType = t, u; + } + } + function qw(r) { + var i = Aa(r); + return i.type || (i.type = Hh(r.propertyType, r.mappedType, r.constraintType)), i.type; + } + function Hh(r, i, t) { + var o = Jc(t.type, Du(i)), s = vl(i), u = tb(o); + return df([u], r, s), zE(u) || gr; + } + function sb(r, i, t, o) { + var s, u, h, z, me, Me, $e; + return kr(this, function(tr) { + switch (tr.label) { + case 0: + s = uo(i), u = 0, h = s, tr.label = 1; + case 1: + return u < h.length ? (z = h[u], $y(z) ? [3, 5] : t || !(z.flags & 16777216 || e.getCheckFlags(z) & 48) ? (me = bi(r, z.escapedName), me ? [3, 3] : [4, z]) : [3, 5]) : [3, 6]; + case 2: + return tr.sent(), [3, 5]; + case 3: + return o ? (Me = Jt(z), Me.flags & 109440 ? ($e = Jt(me), $e.flags & 1 || jc($e) === jc(Me) ? [3, 5] : [4, z]) : [3, 5]) : [3, 5]; + case 4: + tr.sent(), tr.label = 5; + case 5: + return u++, [3, 1]; + case 6: + return [2]; + } + }); + } + function cb(r, i, t, o) { + var s = sb(r, i, t, o).next(); + if (!s.done) + return s.value; + } + function Vw(r, i) { + return !(i.target.combinedFlags & 8) && i.target.minLength > r.target.minLength || !i.target.hasRestElement && (r.target.hasRestElement || i.target.fixedLength < r.target.fixedLength); + } + function Kw(r, i) { + return Yn(r) && Yn(i) ? Vw(r, i) : !!cb(r, i, false, true) && !!cb(i, r, false, false); + } + function zE(r) { + return r.candidates ? Pa(r.candidates, 2) : r.contraCandidates ? Do(r.contraCandidates) : void 0; + } + function ub(r) { + return !!va(r).skipDirectInference; + } + function WE(r) { + return !!(r.symbol && e.some(r.symbol.declarations, ub)); + } + function Gw(r, i) { + var t = r.texts[0], o = i.texts[0], s = r.texts[r.texts.length - 1], u = i.texts[i.texts.length - 1], h = Math.min(t.length, o.length), z = Math.min(s.length, u.length); + return t.slice(0, h) !== o.slice(0, h) || s.slice(s.length - z) !== u.slice(u.length - z); + } + function Hw(r) { + var i = e.createScanner(99, false), t = true; + i.setOnError(function() { + return t = false; + }), i.setText(r + "n"); + var o = i.scan(); + o === 40 && (o = i.scan()); + var s = i.getTokenFlags(); + return t && o === 9 && i.getTextPos() === r.length + 1 && !(s & 512); + } + function Xw(r, i) { + if (r === i || i.flags & 5) + return true; + if (r.flags & 128) { + var t = r.value; + return !!(i.flags & 8 && t !== "" && isFinite(+t) || i.flags & 64 && t !== "" && Hw(t) || i.flags & 98816 && t === i.intrinsicName); + } + if (r.flags & 134217728) { + var o = r.texts; + return o.length === 2 && o[0] === "" && o[1] === "" && ao(r.types[0], i); + } + return ao(r, i); + } + function qE(r, i) { + return r.flags & 128 ? KE([r.value], e.emptyArray, i) : r.flags & 134217728 ? e.arraysEqual(r.texts, i.texts) ? e.map(r.types, Qw) : KE(r.texts, r.types, i) : void 0; + } + function VE(r, i) { + var t = qE(r, i); + return !!t && e.every(t, function(o, s) { + return Xw(o, i.types[s]); + }); + } + function Qw(r) { + return r.flags & 402653317 ? r : Dg(["", ""], [r]); + } + function KE(r, i, t) { + var o = r.length - 1, s = r[0], u = r[o], h = t.texts, z = h.length - 1, me = h[0], Me = h[z]; + if (o === 0 && s.length < me.length + Me.length || !s.startsWith(me) || !u.endsWith(Me)) + return; + for (var $e = u.slice(0, u.length - Me.length), tr = [], dr = 0, Dr = me.length, Qr = 1; Qr < z; Qr++) { + var li = h[Qr]; + if (li.length > 0) { + for (var Ti = dr, Ci = Dr; Ci = $i(Ti).indexOf(li, Ci), !(Ci >= 0); ) { + if (Ti++, Ti === r.length) + return; + Ci = 0; + } + Zi(Ti, Ci), Dr += li.length; + } else if (Dr < $i(dr).length) + Zi(dr, Dr + 1); + else if (dr < o) + Zi(dr + 1, 0); + else + return; + } + return Zi(o, $i(o).length), tr; + function $i(qt) { + return qt < o ? r[qt] : $e; + } + function Zi(qt, Nt) { + var Ra = qt === dr ? Bu($i(qt).slice(Dr, Nt)) : Dg(Ve(Ve([r[dr].slice(Dr)], r.slice(dr + 1, qt), true), [$i(qt).slice(0, Nt)], false), i.slice(dr, qt)); + tr.push(Ra), dr = qt, Dr = Nt; + } + } + function df(r, i, t, o, s) { + o === void 0 && (o = 0), s === void 0 && (s = false); + var u = false, h, z = 2048, me = true, Me, $e, tr, dr = 0; + Dr(i, t); + function Dr(lt, it) { + if (!!Id(it)) { + if (lt === Mr) { + var Yt = h; + h = lt, Dr(it, it), h = Yt; + return; + } + if (lt.aliasSymbol && lt.aliasTypeArguments && lt.aliasSymbol === it.aliasSymbol) { + Ci(lt.aliasTypeArguments, it.aliasTypeArguments, TE(lt.aliasSymbol)); + return; + } + if (lt === it && lt.flags & 3145728) { + for (var Ia = 0, Qt = lt.types; Ia < Qt.length; Ia++) { + var Ka = Qt[Ia]; + Dr(Ka, Ka); + } + return; + } + if (it.flags & 1048576) { + var cn = Ti(lt.flags & 1048576 ? lt.types : [lt], it.types, Yw), Un = cn[0], oa = cn[1], Mn = Ti(Un, oa, $w), Ln = Mn[0], ci = Mn[1]; + if (ci.length === 0) + return; + if (it = Pa(ci), Ln.length === 0) { + Qr(lt, it, 1); + return; + } + lt = Pa(Ln); + } else if (it.flags & 2097152 && e.some(it.types, function(Fa) { + return !!Zi(Fa) || Bc(Fa) && !!Zi(Ih(Fa) || ui); + })) { + if (!(lt.flags & 1048576)) { + var Fr = Ti(lt.flags & 2097152 ? lt.types : [lt], it.types, wf), Ln = Fr[0], ci = Fr[1]; + if (Ln.length === 0 || ci.length === 0) + return; + lt = Do(Ln), it = Do(ci); + } + } else + it.flags & 41943040 && (it = rp(it)); + if (it.flags & 8650752) { + if (lt === fr || lt === Bt || o & 128 && (lt === nr || lt === So) || WE(lt)) + return; + var jt = Zi(it); + if (jt) { + if (e.getObjectFlags(lt) & 262144) + return; + if (!jt.isFixed) { + if ((jt.priority === void 0 || o < jt.priority) && (jt.candidates = void 0, jt.contraCandidates = void 0, jt.topLevel = true, jt.priority = o), o === jt.priority) { + var Lt = h || lt; + s && !u ? e.contains(jt.contraCandidates, Lt) || (jt.contraCandidates = e.append(jt.contraCandidates, Lt), Gh(r)) : e.contains(jt.candidates, Lt) || (jt.candidates = e.append(jt.candidates, Lt), Gh(r)); + } + !(o & 128) && it.flags & 262144 && jt.topLevel && !nb(t, it) && (jt.topLevel = false, Gh(r)); + } + z = Math.min(z, o); + return; + } + var ea = Zf(it, false); + if (ea !== it) + Dr(lt, ea); + else if (it.flags & 8388608) { + var Kt = Zf(it.indexType, false); + if (Kt.flags & 465829888) { + var $t = Hx(Zf(it.objectType, false), Kt, false); + $t && $t !== it && Dr(lt, $t); + } + } + } + if (e.getObjectFlags(lt) & 4 && e.getObjectFlags(it) & 4 && (lt.target === it.target || Tu(lt) && Tu(it)) && !(lt.node && it.node)) + Ci(xo(lt), xo(it), zD(lt.target)); + else if (lt.flags & 4194304 && it.flags & 4194304) + s = !s, Dr(lt.type, it.type), s = !s; + else if ((Cg(lt) || lt.flags & 4) && it.flags & 4194304) { + var Ua = zw(lt); + s = !s, Qr(Ua, it.type, 256), s = !s; + } else if (lt.flags & 8388608 && it.flags & 8388608) + Dr(lt.objectType, it.objectType), Dr(lt.indexType, it.indexType); + else if (lt.flags & 268435456 && it.flags & 268435456) + lt.symbol === it.symbol && Dr(lt.type, it.type); + else if (lt.flags & 33554432) { + Dr(lt.baseType, it); + var Yr = o; + o |= 4, Dr(lt.substitute, it), o = Yr; + } else if (it.flags & 16777216) + li(lt, it, ca); + else if (it.flags & 3145728) + Nt(lt, it.types, it.flags); + else if (lt.flags & 1048576) + for (var Ni = lt.types, Hi = 0, _t = Ni; Hi < _t.length; Hi++) { + var gt = _t[Hi]; + Dr(gt, it); + } + else if (it.flags & 134217728) + Sn(lt, it); + else { + if (lt = bu(lt), !(o & 512 && lt.flags & 467927040)) { + var Vt = $s(lt); + if (Vt !== lt && me && !(Vt.flags & 2621440)) + return me = false, Dr(Vt, it); + lt = Vt; + } + lt.flags & 2621440 && li(lt, it, ja); + } + } + } + function Qr(lt, it, Yt) { + var Ia = o; + o |= Yt, Dr(lt, it), o = Ia; + } + function li(lt, it, Yt) { + var Ia = lt.id + "," + it.id, Qt = Me && Me.get(Ia); + if (Qt !== void 0) { + z = Math.min(z, Qt); + return; + } + (Me || (Me = new e.Map())).set(Ia, -1); + var Ka = z; + z = 2048; + var cn = dr, Un = ov(lt), oa = ov(it); + e.contains($e, Un) && (dr |= 1), e.contains(tr, oa) && (dr |= 2), dr !== 3 ? (($e || ($e = [])).push(Un), (tr || (tr = [])).push(oa), Yt(lt, it), tr.pop(), $e.pop()) : z = -1, dr = cn, Me.set(Ia, z), z = Math.min(z, Ka); + } + function Ti(lt, it, Yt) { + for (var Ia, Qt, Ka = 0, cn = it; Ka < cn.length; Ka++) + for (var Un = cn[Ka], oa = 0, Mn = lt; oa < Mn.length; oa++) { + var Ln = Mn[oa]; + Yt(Ln, Un) && (Dr(Ln, Un), Ia = e.appendIfUnique(Ia, Ln), Qt = e.appendIfUnique(Qt, Un)); + } + return [Ia ? e.filter(lt, function(ci) { + return !e.contains(Ia, ci); + }) : lt, Qt ? e.filter(it, function(ci) { + return !e.contains(Qt, ci); + }) : it]; + } + function Ci(lt, it, Yt) { + for (var Ia = lt.length < it.length ? lt.length : it.length, Qt = 0; Qt < Ia; Qt++) + Qt < Yt.length && (Yt[Qt] & 7) === 2 ? $i(lt[Qt], it[Qt]) : Dr(lt[Qt], it[Qt]); + } + function $i(lt, it) { + Br || o & 1024 ? (s = !s, Dr(lt, it), s = !s) : Dr(lt, it); + } + function Zi(lt) { + if (lt.flags & 8650752) + for (var it = 0, Yt = r; it < Yt.length; it++) { + var Ia = Yt[it]; + if (lt === Ia.typeParameter) + return Ia; + } + } + function qt(lt) { + for (var it, Yt = 0, Ia = lt; Yt < Ia.length; Yt++) { + var Qt = Ia[Yt], Ka = Qt.flags & 2097152 && e.find(Qt.types, function(cn) { + return !!Zi(cn); + }); + if (!Ka || it && Ka !== it) + return; + it = Ka; + } + return it; + } + function Nt(lt, it, Yt) { + var Ia = 0; + if (Yt & 1048576) { + for (var Qt = void 0, Ka = lt.flags & 1048576 ? lt.types : [lt], cn = new Array(Ka.length), Un = false, oa = 0, Mn = it; oa < Mn.length; oa++) { + var Ln = Mn[oa]; + if (Zi(Ln)) + Qt = Ln, Ia++; + else + for (var ci = 0; ci < Ka.length; ci++) { + var Fr = z; + z = 2048, Dr(Ka[ci], Ln), z === o && (cn[ci] = true), Un = Un || z === -1, z = Math.min(z, Fr); + } + } + if (Ia === 0) { + var jt = qt(it); + jt && Qr(lt, jt, 1); + return; + } + if (Ia === 1 && !Un) { + var Lt = e.flatMap(Ka, function(Yr, Ni) { + return cn[Ni] ? void 0 : Yr; + }); + if (Lt.length) { + Dr(Pa(Lt), Qt); + return; + } + } + } else + for (var ea = 0, Kt = it; ea < Kt.length; ea++) { + var Ln = Kt[ea]; + Zi(Ln) ? Ia++ : Dr(lt, Ln); + } + if (Yt & 2097152 ? Ia === 1 : Ia > 0) + for (var $t = 0, Ua = it; $t < Ua.length; $t++) { + var Ln = Ua[$t]; + Zi(Ln) && Qr(lt, Ln, 1); + } + } + function Ra(lt, it, Yt) { + if (Yt.flags & 1048576) { + for (var Ia = false, Qt = 0, Ka = Yt.types; Qt < Ka.length; Qt++) { + var cn = Ka[Qt]; + Ia = Ra(lt, it, cn) || Ia; + } + return Ia; + } + if (Yt.flags & 4194304) { + var Un = Zi(Yt.type); + if (Un && !Un.isFixed && !WE(lt)) { + var oa = UE(lt, it, Yt); + oa && Qr(oa, Un.typeParameter, e.getObjectFlags(lt) & 262144 ? 16 : 8); + } + return true; + } + if (Yt.flags & 262144) { + Qr(ql(lt), Yt, 32); + var Mn = Q_(Yt); + if (Mn && Ra(lt, it, Mn)) + return true; + var Ln = e.map(uo(lt), Jt), ci = e.map(Hn(lt), function(Fr) { + return Fr !== Ko ? Fr.type : ui; + }); + return Dr(Pa(e.concatenate(Ln, ci)), vl(it)), true; + } + return false; + } + function ca(lt, it) { + if (lt.flags & 16777216) + Dr(lt.checkType, it.checkType), Dr(lt.extendsType, it.extendsType), Dr(ip(lt), ip(it)), Dr(tp(lt), tp(it)); + else { + var Yt = o; + o |= s ? 64 : 0; + var Ia = [ip(it), tp(it)]; + Nt(lt, Ia, it.flags), o = Yt; + } + } + function Sn(lt, it) { + var Yt = qE(lt, it), Ia = it.types; + if (Yt || e.every(it.texts, function(Ka) { + return Ka.length === 0; + })) + for (var Qt = 0; Qt < Ia.length; Qt++) + Dr(Yt ? Yt[Qt] : ui, Ia[Qt]); + } + function ja(lt, it) { + if (e.getObjectFlags(lt) & 4 && e.getObjectFlags(it) & 4 && (lt.target === it.target || Tu(lt) && Tu(it))) { + Ci(xo(lt), xo(it), zD(lt.target)); + return; + } + if (Bc(lt) && Bc(it)) { + Dr(Mu(lt), Mu(it)), Dr(vl(lt), vl(it)); + var Yt = Jl(lt), Ia = Jl(it); + Yt && Ia && Dr(Yt, Ia); + } + if (e.getObjectFlags(it) & 32 && !it.declaration.nameType) { + var Qt = Mu(it); + if (Ra(lt, it, Qt)) + return; + } + if (!Kw(lt, it)) { + if (Pd(lt)) { + if (Yn(it)) { + var Ka = $_(lt), cn = $_(it), Un = xo(it), oa = it.target.elementFlags; + if (Yn(lt) && Nw(lt, it)) { + for (var Mn = 0; Mn < cn; Mn++) + Dr(xo(lt)[Mn], Un[Mn]); + return; + } + for (var Ln = Yn(lt) ? Math.min(lt.target.fixedLength, it.target.fixedLength) : 0, ci = Math.min(Yn(lt) ? Sh(lt.target, 3) : 0, it.target.hasRestElement ? Sh(it.target, 3) : 0), Mn = 0; Mn < Ln; Mn++) + Dr(xo(lt)[Mn], Un[Mn]); + if (!Yn(lt) || Ka - Ln - ci === 1 && lt.target.elementFlags[Ln] & 4) + for (var Fr = xo(lt)[Ln], Mn = Ln; Mn < cn - ci; Mn++) + Dr(oa[Mn] & 8 ? Zs(Fr) : Fr, Un[Mn]); + else { + var jt = cn - Ln - ci; + if (jt === 2 && oa[Ln] & oa[Ln + 1] & 8 && Yn(lt)) { + var Lt = Zi(Un[Ln]); + Lt && Lt.impliedArity !== void 0 && (Dr(Zm(lt, Ln, ci + Ka - Lt.impliedArity), Un[Ln]), Dr(Zm(lt, Ln + Lt.impliedArity, ci), Un[Ln + 1])); + } else if (jt === 1 && oa[Ln] & 8) { + var ea = it.target.elementFlags[cn - 1] & 2, Kt = Yn(lt) ? Zm(lt, Ln, ci) : Zs(xo(lt)[0]); + Qr(Kt, Un[Ln], ea ? 2 : 0); + } else if (jt === 1 && oa[Ln] & 4) { + var Fr = Yn(lt) ? jh(lt, Ln, ci) : xo(lt)[0]; + Fr && Dr(Fr, Un[Ln]); + } + } + for (var Mn = 0; Mn < ci; Mn++) + Dr(xo(lt)[Ka - Mn - 1], Un[cn - Mn - 1]); + return; + } + if (Tu(it)) { + Eo(lt, it); + return; + } + } + Fn(lt, it), wn(lt, it, 0), wn(lt, it, 1), Eo(lt, it); + } + } + function Fn(lt, it) { + for (var Yt = Pf(it), Ia = 0, Qt = Yt; Ia < Qt.length; Ia++) { + var Ka = Qt[Ia], cn = bi(lt, Ka.escapedName); + cn && !e.some(cn.declarations, ub) && Dr(Jt(cn), Jt(Ka)); + } + } + function wn(lt, it, Yt) { + for (var Ia = ot(lt, Yt), Qt = ot(it, Yt), Ka = Ia.length, cn = Qt.length, Un = Ka < cn ? Ka : cn, oa = !!(e.getObjectFlags(lt) & 262144), Mn = 0; Mn < Un; Mn++) + Tn(v3(Ia[Ka - Un + Mn]), Qm(Qt[cn - Un + Mn]), oa); + } + function Tn(lt, it, Yt) { + if (!Yt) { + var Ia = u, Qt = it.declaration ? it.declaration.kind : 0; + u = u || Qt === 169 || Qt === 168 || Qt === 171, eb(lt, it, $i), u = Ia; + } + rb(lt, it, Dr); + } + function Eo(lt, it) { + var Yt = e.getObjectFlags(lt) & e.getObjectFlags(it) & 32 ? 8 : 0, Ia = Hn(it); + if (qh(lt)) + for (var Qt = 0, Ka = Ia; Qt < Ka.length; Qt++) { + for (var cn = Ka[Qt], Un = [], oa = 0, Mn = uo(lt); oa < Mn.length; oa++) { + var Ln = Mn[oa]; + if (an(om(Ln, 8576), cn.keyType)) { + var ci = Jt(Ln); + Un.push(Ln.flags & 16777216 ? $D(ci) : ci); + } + } + for (var Fr = 0, jt = Hn(lt); Fr < jt.length; Fr++) { + var Lt = jt[Fr]; + an(Lt.keyType, cn.keyType) && Un.push(Lt.type); + } + Un.length && Qr(Pa(Un), cn.type, Yt); + } + for (var ea = 0, Kt = Ia; ea < Kt.length; ea++) { + var cn = Kt[ea], $t = nu(lt, cn.keyType); + $t && Qr($t.type, cn.type, Yt); + } + } + } + function Yw(r, i) { + return yr && i === Yi ? r === i : wf(r, i) || !!(i.flags & 4 && r.flags & 128 || i.flags & 8 && r.flags & 256); + } + function $w(r, i) { + return !!(r.flags & 524288 && i.flags & 524288 && r.symbol && r.symbol === i.symbol || r.aliasSymbol && r.aliasTypeArguments && r.aliasSymbol === i.aliasSymbol); + } + function Zw(r) { + var i = Tc(r); + return !!i && fs5(i.flags & 16777216 ? zm(i) : i, 406978556); + } + function Qp(r) { + return !!(e.getObjectFlags(r) & 128); + } + function lb(r) { + return !!(e.getObjectFlags(r) & 16512); + } + function e8(r) { + if (r.length > 1) { + var i = e.filter(r, lb); + if (i.length) { + var t = Pa(i, 2); + return e.concatenate(e.filter(r, function(o) { + return !lb(o); + }), [t]); + } + } + return r; + } + function r8(r) { + return r.priority & 416 ? Do(r.contraCandidates) : Tw(r.contraCandidates); + } + function i8(r, i) { + var t = e8(r.candidates), o = Zw(r.typeParameter), s = !o && r.topLevel && (r.isFixed || !nb(yo(i), r.typeParameter)), u = o ? e.sameMap(t, jc) : s ? e.sameMap(t, Hp) : t, h = r.priority & 416 ? Pa(u, 2) : Sw(u); + return $c(h); + } + function GE(r, i) { + var t = r.inferences[i]; + if (!t.inferredType) { + var o = void 0, s = r.signature; + if (s) { + var u = t.candidates ? i8(t, s) : void 0; + if (t.contraCandidates) + o = u && !(u.flags & 131072) && e.some(t.contraCandidates, function(Me) { + return E_(u, Me); + }) ? u : r8(t); + else if (u) + o = u; + else if (r.flags & 1) + o = Bt; + else { + var h = D_(t.typeParameter); + h && (o = un(h, LI(MI(r, i), r.nonFixingMapper))); + } + } else + o = zE(t); + t.inferredType = o || fb(!!(r.flags & 2)); + var z = Tc(t.typeParameter); + if (z) { + var me = un(z, r.nonFixingMapper); + (!o || !r.compareTypes(o, Rc(me, o))) && (t.inferredType = o = me); + } + } + return t.inferredType; + } + function fb(r) { + return r ? Oe : gr; + } + function _b(r) { + for (var i = [], t = 0; t < r.inferences.length; t++) + i.push(GE(r, t)); + return i; + } + function HE(r) { + switch (r.escapedText) { + case "document": + case "console": + return e.Diagnostics.Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_include_dom; + case "$": + return ye.types ? e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig : e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery; + case "describe": + case "suite": + case "it": + case "test": + return ye.types ? e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig : e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha; + case "process": + case "require": + case "Buffer": + case "module": + return ye.types ? e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig : e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode; + case "Map": + case "Set": + case "Promise": + case "Symbol": + case "WeakMap": + case "WeakSet": + case "Iterator": + case "AsyncIterator": + case "SharedArrayBuffer": + case "Atomics": + case "AsyncIterable": + case "AsyncIterableIterator": + case "AsyncGenerator": + case "AsyncGeneratorFunction": + case "BigInt": + case "Reflect": + case "BigInt64Array": + case "BigUint64Array": + return e.Diagnostics.Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_1_or_later; + case "await": + if (e.isCallExpression(r.parent)) + return e.Diagnostics.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function; + default: + return r.parent.kind === 297 ? e.Diagnostics.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer : e.Diagnostics.Cannot_find_name_0; + } + } + function Dl(r) { + var i = va(r); + return i.resolvedSymbol || (i.resolvedSymbol = !e.nodeIsMissing(r) && es(r, r.escapedText, 1160127, HE(r), r, !e.isWriteOnlyAccess(r), false) || xe), i.resolvedSymbol; + } + function _m(r) { + return !!e.findAncestor(r, function(i) { + return i.kind === 181 ? true : i.kind === 79 || i.kind === 161 ? false : "quit"; + }); + } + function Xh(r, i, t, o) { + switch (r.kind) { + case 79: + if (!e.isThisInTypeQuery(r)) { + var s = Dl(r); + return s !== xe ? "".concat(o ? A(o) : "-1", "|").concat(fu(i), "|").concat(fu(t), "|").concat(y(s)) : void 0; + } + case 108: + return "0|".concat(o ? A(o) : "-1", "|").concat(fu(i), "|").concat(fu(t)); + case 230: + case 212: + return Xh(r.expression, i, t, o); + case 161: + var u = Xh(r.left, i, t, o); + return u && u + "." + r.right.escapedText; + case 206: + case 207: + var h = wd(r); + if (h !== void 0) { + var z = Xh(r.expression, i, t, o); + return z && z + "." + h; + } + } + } + function zs(r, i) { + switch (i.kind) { + case 212: + case 230: + return zs(r, i.expression); + case 221: + return e.isAssignmentExpression(i) && zs(r, i.left) || e.isBinaryExpression(i) && i.operatorToken.kind === 27 && zs(r, i.right); + } + switch (r.kind) { + case 231: + return i.kind === 231 && r.keywordToken === i.keywordToken && r.name.escapedText === i.name.escapedText; + case 79: + case 80: + return e.isThisInTypeQuery(r) ? i.kind === 108 : i.kind === 79 && Dl(r) === Dl(i) || (i.kind === 254 || i.kind === 203) && cu(Dl(r)) === Et(i); + case 108: + return i.kind === 108; + case 106: + return i.kind === 106; + case 230: + case 212: + return zs(r.expression, i); + case 206: + case 207: + var t = wd(r), o = e.isAccessExpression(i) ? wd(i) : void 0; + return t !== void 0 && o !== void 0 && o === t && zs(r.expression, i.expression); + case 161: + return e.isAccessExpression(i) && r.right.escapedText === wd(i) && zs(r.left, i.expression); + case 221: + return e.isBinaryExpression(r) && r.operatorToken.kind === 27 && zs(r.right, i); + } + return false; + } + function wd(r) { + if (e.isPropertyAccessExpression(r)) + return r.name.escapedText; + if (e.isElementAccessExpression(r)) + return t8(r); + if (e.isBindingElement(r)) { + var i = sf(r); + return i ? e.escapeLeadingUnderscores(i) : void 0; + } + if (e.isParameter(r)) + return "" + r.parent.parameters.indexOf(r); + } + function XE(r) { + return r.flags & 8192 ? r.escapedName : r.flags & 384 ? e.escapeLeadingUnderscores("" + r.value) : void 0; + } + function t8(r) { + if (e.isStringOrNumericLiteralLike(r.argumentExpression)) + return e.escapeLeadingUnderscores(r.argumentExpression.text); + if (e.isEntityNameExpression(r.argumentExpression)) { + var i = Ds(r.argumentExpression, 111551, true); + if (!i || !pv(i)) + return; + var t = i.valueDeclaration; + if (t === void 0) + return; + var o = Rl(t); + if (o) { + var s = XE(o); + if (s !== void 0) + return s; + } + if (e.hasOnlyExpressionInitializer(t)) { + var u = e.getEffectiveInitializer(t); + return u && XE(Gs(u)); + } + } + } + function QE(r, i) { + for (; e.isAccessExpression(r); ) + if (r = r.expression, zs(r, i)) + return true; + return false; + } + function Ag(r, i) { + for (; e.isOptionalChain(r); ) + if (r = r.expression, zs(r, i)) + return true; + return false; + } + function lv(r, i) { + if (r && r.flags & 1048576) { + var t = $v(r, i); + if (t && e.getCheckFlags(t) & 2) + return t.isDiscriminantProperty === void 0 && (t.isDiscriminantProperty = (t.checkFlags & 192) === 192 && !rv(Jt(t))), !!t.isDiscriminantProperty; + } + return false; + } + function YE(r, i) { + for (var t, o = 0, s = r; o < s.length; o++) { + var u = s[o]; + if (lv(i, u.escapedName)) { + if (t) { + t.push(u); + continue; + } + t = [u]; + } + } + return t; + } + function a8(r, i) { + for (var t = new e.Map(), o = 0, s = function(Me) { + if (Me.flags & 61603840) { + var $e = da(Me, i); + if ($e) { + if (!Cg($e)) + return { value: void 0 }; + var tr = false; + Od($e, function(dr) { + var Dr = fu(jc(dr)), Qr = t.get(Dr); + Qr ? Qr !== gr && (t.set(Dr, gr), tr = true) : t.set(Dr, Me); + }), tr || o++; + } + } + }, u = 0, h = r; u < h.length; u++) { + var z = h[u], me = s(z); + if (typeof me == "object") + return me.value; + } + return o >= 10 && o * 2 >= r.length ? t : void 0; + } + function Qh(r) { + var i = r.types; + if (!(i.length < 10 || e.getObjectFlags(r) & 32768 || e.countWhere(i, function(s) { + return !!(s.flags & 59506688); + }) < 10)) { + if (r.keyPropertyName === void 0) { + var t = e.forEach(i, function(s) { + return s.flags & 59506688 ? e.forEach(uo(s), function(u) { + return Vl(Jt(u)) ? u.escapedName : void 0; + }) : void 0; + }), o = t && a8(i, t); + r.keyPropertyName = o ? t : "", r.constituentMap = o; + } + return r.keyPropertyName.length ? r.keyPropertyName : void 0; + } + } + function Yh(r, i) { + var t, o = (t = r.constituentMap) === null || t === void 0 ? void 0 : t.get(fu(jc(i))); + return o !== gr ? o : void 0; + } + function $E(r, i) { + var t = Qh(r), o = t && da(i, t); + return o && Yh(r, o); + } + function n8(r, i) { + var t = Qh(r), o = t && e.find(i.properties, function(u) { + return u.symbol && u.kind === 296 && u.symbol.escapedName === t && hy(u.initializer); + }), s = o && Oy(o.initializer); + return s && Yh(r, s); + } + function ZE(r, i) { + return zs(r, i) || QE(r, i); + } + function eC(r, i) { + if (r.arguments) + for (var t = 0, o = r.arguments; t < o.length; t++) { + var s = o[t]; + if (ZE(i, s)) + return true; + } + return !!(r.expression.kind === 206 && ZE(i, r.expression.expression)); + } + function pb(r) { + return (!r.id || r.id < 0) && (r.id = Q, Q++), r.id; + } + function o8(r, i) { + if (!(r.flags & 1048576)) + return ao(r, i); + for (var t = 0, o = r.types; t < o.length; t++) { + var s = o[t]; + if (ao(s, i)) + return true; + } + return false; + } + function s8(r, i) { + if (r !== i) { + if (i.flags & 131072) + return i; + var t = ec(r, function(o) { + return o8(i, o); + }); + if (i.flags & 512 && Kp(i) && (t = Ss(t, Sg)), ao(i, t)) + return t; + } + return r; + } + function db(r) { + var i = Ru(r); + return !!(i.callSignatures.length || i.constructSignatures.length || i.members.get("bind") && E_(r, br)); + } + function cp(r, i) { + i === void 0 && (i = false); + var t = r.flags; + if (t & 4) + return Ye ? 16317953 : 16776705; + if (t & 128) { + var o = r.value === ""; + return Ye ? o ? 12123649 : 7929345 : o ? 12582401 : 16776705; + } + if (t & 40) + return Ye ? 16317698 : 16776450; + if (t & 256) { + var s = r.value === 0; + return Ye ? s ? 12123394 : 7929090 : s ? 12582146 : 16776450; + } + if (t & 64) + return Ye ? 16317188 : 16775940; + if (t & 2048) { + var s = QD(r); + return Ye ? s ? 12122884 : 7928580 : s ? 12581636 : 16775940; + } + return t & 16 ? Ye ? 16316168 : 16774920 : t & 528 ? Ye ? r === xt || r === ut ? 12121864 : 7927560 : r === xt || r === ut ? 12580616 : 16774920 : t & 524288 ? i ? 16768959 : e.getObjectFlags(r) & 16 && Of(r) ? Ye ? 16318463 : 16777215 : db(r) ? Ye ? 7880640 : 16728e3 : Ye ? 7888800 : 16736160 : t & 49152 ? 9830144 : t & 65536 ? 9363232 : t & 12288 ? Ye ? 7925520 : 16772880 : t & 67108864 ? Ye ? 7888800 : 16736160 : t & 131072 ? 0 : t & 465829888 ? sm(r) ? Ye ? 7929345 : 16776705 : cp(uc(r) || gr, i) : t & 1048576 ? e.reduceLeft(r.types, function(u, h) { + return u | cp(h, i); + }, 0) : t & 2097152 ? (i || (i = fs5(r, 131068)), c8(r, i)) : 16777215; + } + function c8(r, i) { + for (var t = 0, o = 16777215, s = 0, u = r.types; s < u.length; s++) { + var h = u[s], z = cp(h, i); + t |= z, o &= z; + } + return t & 8256 | o & 16768959; + } + function Ks(r, i) { + return ec(r, function(t) { + return (cp(t) & i) !== 0; + }); + } + function gb(r, i) { + return i ? Pa([uu(r), Gs(i)]) : r; + } + function rC(r, i) { + var t, o = Z_(i); + if (!_f(o)) + return Pe; + var s = pf(o); + return da(r, s) || fv((t = Xo(r, s)) === null || t === void 0 ? void 0 : t.type) || Pe; + } + function iC(r, i) { + return gf(r, Eg) && xw(r, i) || fv(N_(65, r, Tr, void 0)) || Pe; + } + function fv(r) { + return r && (ye.noUncheckedIndexedAccess ? Pa([r, Tr]) : r); + } + function tC(r) { + return Zs(N_(65, r, Tr, void 0) || Pe); + } + function u8(r) { + var i = r.parent.kind === 204 && mb(r.parent) || r.parent.kind === 296 && mb(r.parent.parent); + return i ? gb(py(r), r.right) : Gs(r.right); + } + function mb(r) { + return r.parent.kind === 221 && r.parent.left === r || r.parent.kind === 244 && r.parent.initializer === r; + } + function l8(r, i) { + return iC(py(r), r.elements.indexOf(i)); + } + function f8(r) { + return tC(py(r.parent)); + } + function aC(r) { + return rC(py(r.parent), r.name); + } + function _8(r) { + return gb(aC(r), r.objectAssignmentInitializer); + } + function py(r) { + var i = r.parent; + switch (i.kind) { + case 243: + return Li; + case 244: + return By(i) || Pe; + case 221: + return u8(i); + case 215: + return Tr; + case 204: + return l8(i, r); + case 225: + return f8(i); + case 296: + return aC(i); + case 297: + return _8(i); + } + return Pe; + } + function p8(r) { + var i = r.parent, t = oC(i.parent), o = i.kind === 201 ? rC(t, r.propertyName || r.name) : r.dotDotDotToken ? tC(t) : iC(t, i.elements.indexOf(r)); + return gb(o, r.initializer); + } + function nC(r) { + var i = va(r); + return i.resolvedType || Gs(r); + } + function d8(r) { + return r.initializer ? nC(r.initializer) : r.parent.parent.kind === 243 ? Li : r.parent.parent.kind === 244 && By(r.parent.parent) || Pe; + } + function oC(r) { + return r.kind === 254 ? d8(r) : p8(r); + } + function g8(r) { + return r.kind === 254 && r.initializer && Hf(r.initializer) || r.kind !== 203 && r.parent.kind === 221 && Hf(r.parent.right); + } + function Yp(r) { + switch (r.kind) { + case 212: + return Yp(r.expression); + case 221: + switch (r.operatorToken.kind) { + case 63: + case 75: + case 76: + case 77: + return Yp(r.left); + case 27: + return Yp(r.right); + } + } + return r; + } + function sC(r) { + var i = r.parent; + return i.kind === 212 || i.kind === 221 && i.operatorToken.kind === 63 && i.left === r || i.kind === 221 && i.operatorToken.kind === 27 && i.right === r ? sC(i) : r; + } + function m8(r) { + return r.kind === 289 ? jc(Gs(r.expression)) : ui; + } + function $h(r) { + var i = va(r); + if (!i.switchTypes) { + i.switchTypes = []; + for (var t = 0, o = r.caseBlock.clauses; t < o.length; t++) { + var s = o[t]; + i.switchTypes.push(m8(s)); + } + } + return i.switchTypes; + } + function cC(r, i) { + for (var t = [], o = 0, s = r.caseBlock.clauses; o < s.length; o++) { + var u = s[o]; + if (u.kind === 289) { + if (e.isStringLiteralLike(u.expression)) { + t.push(u.expression.text); + continue; + } + return e.emptyArray; + } + i && t.push(void 0); + } + return t; + } + function v8(r, i) { + return r.flags & 1048576 ? !e.forEach(r.types, function(t) { + return !e.contains(i, t); + }) : e.contains(i, r); + } + function dy(r, i) { + return r === i || i.flags & 1048576 && y8(r, i); + } + function y8(r, i) { + if (r.flags & 1048576) { + for (var t = 0, o = r.types; t < o.length; t++) { + var s = o[t]; + if (!$f(i.types, s)) + return false; + } + return true; + } + return r.flags & 1024 && cc(r) === i ? true : $f(i.types, r); + } + function Od(r, i) { + return r.flags & 1048576 ? e.forEach(r.types, i) : i(r); + } + function rg(r, i) { + return r.flags & 1048576 ? e.some(r.types, i) : i(r); + } + function gf(r, i) { + return r.flags & 1048576 ? e.every(r.types, i) : i(r); + } + function h8(r, i) { + return r.flags & 3145728 ? e.every(r.types, i) : i(r); + } + function ec(r, i) { + if (r.flags & 1048576) { + var t = r.types, o = e.filter(t, i); + if (o === t) + return r; + var s = r.origin, u = void 0; + if (s && s.flags & 1048576) { + var h = s.types, z = e.filter(h, function(me) { + return !!(me.flags & 1048576) || i(me); + }); + if (h.length - z.length === t.length - o.length) { + if (z.length === 1) + return z[0]; + u = fD(1048576, z); + } + } + return pD(o, r.objectFlags, void 0, void 0, u); + } + return r.flags & 131072 || i(r) ? r : ui; + } + function Zh(r, i) { + return ec(r, function(t) { + return t !== i; + }); + } + function D8(r) { + return r.flags & 1048576 ? r.types.length : 1; + } + function Ss(r, i, t) { + if (r.flags & 131072) + return r; + if (!(r.flags & 1048576)) + return i(r); + for (var o = r.origin, s = o && o.flags & 1048576 ? o.types : r.types, u, h = false, z = 0, me = s; z < me.length; z++) { + var Me = me[z], $e = Me.flags & 1048576 ? Ss(Me, i, t) : i(Me); + h || (h = Me !== $e), $e && (u ? u.push($e) : u = [$e]); + } + return h ? u && Pa(u, t ? 0 : 1) : r; + } + function uC(r, i, t, o) { + return r.flags & 1048576 && t ? Pa(e.map(r.types, i), 1, t, o) : Ss(r, i); + } + function Ng(r, i) { + return ec(r, function(t) { + return (t.flags & i) !== 0; + }); + } + function lC(r, i) { + return fs5(r, 134217804) && fs5(i, 402655616) ? Ss(r, function(t) { + return t.flags & 4 ? Ng(i, 402653316) : sm(t) && !fs5(i, 402653188) ? Ng(i, 128) : t.flags & 8 ? Ng(i, 264) : t.flags & 64 ? Ng(i, 2112) : t; + }) : r; + } + function Pg(r) { + return r.flags === 0; + } + function Fd(r) { + return r.flags === 0 ? r.type : r; + } + function Ig(r, i) { + return i ? { flags: 0, type: r.flags & 131072 ? Bt : r } : r; + } + function b8(r) { + var i = tu(256); + return i.elementType = r, i; + } + function vb(r) { + return zr[r.id] || (zr[r.id] = b8(r)); + } + function fC(r, i) { + var t = fm(Kl(Oy(i))); + return dy(t, r.elementType) ? r : vb(Pa([r.elementType, t])); + } + function S8(r) { + return r.flags & 131072 ? So : Zs(r.flags & 1048576 ? Pa(r.types, 2) : r); + } + function T8(r) { + return r.finalArrayType || (r.finalArrayType = S8(r.elementType)); + } + function e0(r) { + return e.getObjectFlags(r) & 256 ? T8(r) : r; + } + function x8(r) { + return e.getObjectFlags(r) & 256 ? r.elementType : ui; + } + function E8(r) { + for (var i = false, t = 0, o = r; t < o.length; t++) { + var s = o[t]; + if (!(s.flags & 131072)) { + if (!(e.getObjectFlags(s) & 256)) + return false; + i = true; + } + } + return i; + } + function _C(r) { + var i = sC(r), t = i.parent, o = e.isPropertyAccessExpression(t) && (t.name.escapedText === "length" || t.parent.kind === 208 && e.isIdentifier(t.name) && e.isPushOrUnshiftIdentifier(t.name)), s = t.kind === 207 && t.expression === i && t.parent.kind === 221 && t.parent.operatorToken.kind === 63 && t.parent.left === t && !e.isAssignmentTarget(t.parent) && Ns(Gs(t.argumentExpression), 296); + return o || s; + } + function C8(r) { + return (e.isVariableDeclaration(r) || e.isPropertyDeclaration(r) || e.isPropertySignature(r) || e.isParameter(r)) && !!(e.getEffectiveTypeAnnotationNode(r) || e.isInJSFile(r) && e.hasInitializer(r) && r.initializer && e.isFunctionExpressionOrArrowFunction(r.initializer) && e.getEffectiveReturnTypeNode(r.initializer)); + } + function r0(r, i) { + if (r.flags & 8752) + return Jt(r); + if (r.flags & 7) { + if (e.getCheckFlags(r) & 262144) { + var t = r.syntheticOrigin; + if (t && r0(t)) + return Jt(r); + } + var o = r.valueDeclaration; + if (o) { + if (C8(o)) + return Jt(r); + if (e.isVariableDeclaration(o) && o.parent.parent.kind === 244) { + var s = o.parent.parent, u = gy(s.expression, void 0); + if (u) { + var h = s.awaitModifier ? 15 : 13; + return N_(h, u, Tr, void 0); + } + } + i && e.addRelatedInfo(i, e.createDiagnosticForNode(o, e.Diagnostics._0_needs_an_explicit_type_annotation, tn(r))); + } + } + } + function gy(r, i) { + if (!(r.flags & 33554432)) + switch (r.kind) { + case 79: + var t = cu(Dl(r)); + return r0(t.flags & 2097152 ? Ps(t) : t, i); + case 108: + return q8(r); + case 106: + return Sb(r); + case 206: { + var o = gy(r.expression, i); + if (o) { + var s = r.name, u = void 0; + if (e.isPrivateIdentifier(s)) { + if (!o.symbol) + return; + u = bi(o, e.getSymbolNameForPrivateIdentifier(o.symbol, s.escapedText)); + } else + u = bi(o, s.escapedText); + return u && r0(u, i); + } + return; + } + case 212: + return gy(r.expression, i); + } + } + function i0(r) { + var i = va(r), t = i.effectsSignature; + if (t === void 0) { + var o = void 0; + r.parent.kind === 238 ? o = gy(r.expression, void 0) : r.expression.kind !== 106 && (e.isOptionalChain(r) ? o = bl(cv(yn(r.expression), r.expression), r.expression) : o = gm(r.expression)); + var s = ot(o && $s(o) || gr, 0), u = s.length === 1 && !s[0].typeParameters ? s[0] : e.some(s, pC) ? Mg(r) : void 0; + t = i.effectsSignature = u && pC(u) ? u : Wn; + } + return t === Wn ? void 0 : t; + } + function pC(r) { + return !!(Yc(r) || r.declaration && (yg(r.declaration) || gr).flags & 131072); + } + function k8(r, i) { + if (r.kind === 1 || r.kind === 3) + return i.arguments[r.parameterIndex]; + var t = e.skipParentheses(i.expression); + return e.isAccessExpression(t) ? e.skipParentheses(t.expression) : void 0; + } + function A8(r) { + var i = e.findAncestor(r, e.isFunctionOrModuleBlock), t = e.getSourceFileOfNode(r), o = e.getSpanOfTokenAtPosition(t, i.statements.pos); + rn.add(e.createFileDiagnostic(t, o.start, o.length, e.Diagnostics.The_containing_function_or_module_body_is_too_large_for_control_flow_analysis)); + } + function my(r) { + var i = t0(r, false); + return su = r, tl = i, i; + } + function vy(r) { + var i = e.skipParentheses(r, true); + return i.kind === 95 || i.kind === 221 && (i.operatorToken.kind === 55 && (vy(i.left) || vy(i.right)) || i.operatorToken.kind === 56 && vy(i.left) && vy(i.right)); + } + function t0(r, i) { + for (; ; ) { + if (r === su) + return tl; + var t = r.flags; + if (t & 4096) { + if (!i) { + var o = pb(r), s = bt[o]; + return s !== void 0 ? s : bt[o] = t0(r, true); + } + i = false; + } + if (t & 368) + r = r.antecedent; + else if (t & 512) { + var u = i0(r.node); + if (u) { + var h = Yc(u); + if (h && h.kind === 3 && !h.type) { + var z = r.node.arguments[h.parameterIndex]; + if (z && vy(z)) + return false; + } + if (yo(u).flags & 131072) + return false; + } + r = r.antecedent; + } else { + if (t & 4) + return e.some(r.antecedents, function(dr) { + return t0(dr, false); + }); + if (t & 8) { + var me = r.antecedents; + if (me === void 0 || me.length === 0) + return false; + r = me[0]; + } else if (t & 128) { + if (r.clauseStart === r.clauseEnd && Lk(r.switchStatement)) + return false; + r = r.antecedent; + } else if (t & 1024) { + su = void 0; + var Me = r.target, $e = Me.antecedents; + Me.antecedents = r.antecedents; + var tr = t0(r.antecedent, false); + return Me.antecedents = $e, tr; + } else + return !(t & 1); + } + } + } + function a0(r, i) { + for (; ; ) { + var t = r.flags; + if (t & 4096) { + if (!i) { + var o = pb(r), s = ia[o]; + return s !== void 0 ? s : ia[o] = a0(r, true); + } + i = false; + } + if (t & 496) + r = r.antecedent; + else if (t & 512) { + if (r.node.expression.kind === 106) + return true; + r = r.antecedent; + } else { + if (t & 4) + return e.every(r.antecedents, function(me) { + return a0(me, false); + }); + if (t & 8) + r = r.antecedents[0]; + else if (t & 1024) { + var u = r.target, h = u.antecedents; + u.antecedents = r.antecedents; + var z = a0(r.antecedent, false); + return u.antecedents = h, z; + } else + return !!(t & 1); + } + } + } + function dC(r) { + switch (r.kind) { + case 79: { + var i = Dl(r); + return pv(i) || e.isParameterOrCatchClauseVariable(i) && !n0(i); + } + case 206: + case 207: + return dC(r.expression) && Zu(va(r).resolvedSymbol || xe); + } + return false; + } + function up(r, i, t, o, s) { + t === void 0 && (t = i), s === void 0 && (s = r.flowNode); + var u, h = false, z = 0; + if (Bs) + return Pe; + if (!s) + return i; + xc++; + var me = Ms, Me = Fd(dr(s)); + Ms = me; + var $e = e.getObjectFlags(Me) & 256 && _C(r) ? So : e0(Me); + if ($e === Ai || r.parent && r.parent.kind === 230 && !($e.flags & 131072) && Ks($e, 2097152).flags & 131072) + return i; + return $e === Vr ? gr : $e; + function tr() { + return h ? u : (h = true, u = Xh(r, i, t, o)); + } + function dr(Yr) { + if (z === 2e3) + return e.tracing === null || e.tracing === void 0 || e.tracing.instant("checkTypes", "getTypeAtFlowNode_DepthLimit", { flowId: Yr.id }), Bs = true, A8(r), Pe; + z++; + for (var Ni; ; ) { + var Hi = Yr.flags; + if (Hi & 4096) { + for (var _t = me; _t < Ms; _t++) + if (tt[_t] === Yr) + return z--, kt[_t]; + Ni = Yr; + } + var gt = void 0; + if (Hi & 16) { + if (gt = Qr(Yr), !gt) { + Yr = Yr.antecedent; + continue; + } + } else if (Hi & 512) { + if (gt = Ti(Yr), !gt) { + Yr = Yr.antecedent; + continue; + } + } else if (Hi & 96) + gt = $i(Yr); + else if (Hi & 128) + gt = Zi(Yr); + else if (Hi & 12) { + if (Yr.antecedents.length === 1) { + Yr = Yr.antecedents[0]; + continue; + } + gt = Hi & 4 ? qt(Yr) : Nt(Yr); + } else if (Hi & 256) { + if (gt = Ci(Yr), !gt) { + Yr = Yr.antecedent; + continue; + } + } else if (Hi & 1024) { + var Vt = Yr.target, Fa = Vt.antecedents; + Vt.antecedents = Yr.antecedents, gt = dr(Yr.antecedent), Vt.antecedents = Fa; + } else if (Hi & 2) { + var on = Yr.node; + if (on && on !== o && r.kind !== 206 && r.kind !== 207 && r.kind !== 108) { + Yr = on.flowNode; + continue; + } + gt = t; + } else + gt = kv(i); + return Ni && (tt[Ms] = Ni, kt[Ms] = gt, Ms++), z--, gt; + } + } + function Dr(Yr) { + var Ni = Yr.node; + return yb(Ni.kind === 254 || Ni.kind === 203 ? oC(Ni) : py(Ni), r); + } + function Qr(Yr) { + var Ni = Yr.node; + if (zs(r, Ni)) { + if (!my(Yr)) + return Ai; + if (e.getAssignmentTargetKind(Ni) === 2) { + var Hi = dr(Yr.antecedent); + return Ig(Kl(Fd(Hi)), Pg(Hi)); + } + if (i === nr || i === So) { + if (g8(Ni)) + return vb(ui); + var _t = Hp(Dr(Yr)); + return ao(_t, i) ? _t : mo; + } + return i.flags & 1048576 ? s8(i, Dr(Yr)) : i; + } + if (QE(r, Ni)) { + if (!my(Yr)) + return Ai; + if (e.isVariableDeclaration(Ni) && (e.isInJSFile(Ni) || e.isVarConst(Ni))) { + var gt = e.getDeclaredExpandoInitializer(Ni); + if (gt && (gt.kind === 213 || gt.kind === 214)) + return dr(Yr.antecedent); + } + return i; + } + if (e.isVariableDeclaration(Ni) && Ni.parent.parent.kind === 243 && zs(r, Ni.parent.parent.expression)) + return jb(Fd(dr(Yr.antecedent))); + } + function li(Yr, Ni) { + var Hi = e.skipParentheses(Ni, true); + if (Hi.kind === 95) + return Ai; + if (Hi.kind === 221) { + if (Hi.operatorToken.kind === 55) + return li(li(Yr, Hi.left), Hi.right); + if (Hi.operatorToken.kind === 56) + return Pa([li(Yr, Hi.left), li(Yr, Hi.right)]); + } + return $t(Yr, Hi, true); + } + function Ti(Yr) { + var Ni = i0(Yr.node); + if (Ni) { + var Hi = Yc(Ni); + if (Hi && (Hi.kind === 2 || Hi.kind === 3)) { + var _t = dr(Yr.antecedent), gt = e0(Fd(_t)), Vt = Hi.type ? Kt(gt, Hi, Yr.node, true) : Hi.kind === 3 && Hi.parameterIndex >= 0 && Hi.parameterIndex < Yr.node.arguments.length ? li(gt, Yr.node.arguments[Hi.parameterIndex]) : gt; + return Vt === gt ? _t : Ig(Vt, Pg(_t)); + } + if (yo(Ni).flags & 131072) + return Ai; + } + } + function Ci(Yr) { + if (i === nr || i === So) { + var Ni = Yr.node, Hi = Ni.kind === 208 ? Ni.expression.expression : Ni.left.expression; + if (zs(r, Yp(Hi))) { + var _t = dr(Yr.antecedent), gt = Fd(_t); + if (e.getObjectFlags(gt) & 256) { + var Vt = gt; + if (Ni.kind === 208) + for (var Fa = 0, on = Ni.arguments; Fa < on.length; Fa++) { + var zn = on[Fa]; + Vt = fC(Vt, zn); + } + else { + var Ga = Oy(Ni.left.argumentExpression); + Ns(Ga, 296) && (Vt = fC(Vt, Ni.right)); + } + return Vt === gt ? _t : Ig(Vt, Pg(_t)); + } + return _t; + } + } + } + function $i(Yr) { + var Ni = dr(Yr.antecedent), Hi = Fd(Ni); + if (Hi.flags & 131072) + return Ni; + var _t = (Yr.flags & 32) !== 0, gt = e0(Hi), Vt = $t(gt, Yr.node, _t); + return Vt === gt ? Ni : Ig(Vt, Pg(Ni)); + } + function Zi(Yr) { + var Ni = Yr.switchStatement.expression, Hi = dr(Yr.antecedent), _t = Fd(Hi); + if (zs(r, Ni)) + _t = Un(_t, Yr.switchStatement, Yr.clauseStart, Yr.clauseEnd); + else if (Ni.kind === 216 && zs(r, Ni.expression)) + _t = Ln(_t, Yr.switchStatement, Yr.clauseStart, Yr.clauseEnd); + else { + Ye && (Ag(Ni, r) ? _t = cn(_t, Yr.switchStatement, Yr.clauseStart, Yr.clauseEnd, function(Vt) { + return !(Vt.flags & 163840); + }) : Ni.kind === 216 && Ag(Ni.expression, r) && (_t = cn(_t, Yr.switchStatement, Yr.clauseStart, Yr.clauseEnd, function(Vt) { + return !(Vt.flags & 131072 || Vt.flags & 128 && Vt.value === "undefined"); + }))); + var gt = Sn(Ni, _t); + gt && (_t = wn(_t, gt, Yr.switchStatement, Yr.clauseStart, Yr.clauseEnd)); + } + return Ig(_t, Pg(Hi)); + } + function qt(Yr) { + for (var Ni = [], Hi = false, _t = false, gt, Vt = 0, Fa = Yr.antecedents; Vt < Fa.length; Vt++) { + var on = Fa[Vt]; + if (!gt && on.flags & 128 && on.clauseStart === on.clauseEnd) { + gt = on; + continue; + } + var zn = dr(on), Ga = Fd(zn); + if (Ga === i && i === t) + return Ga; + e.pushIfUnique(Ni, Ga), dy(Ga, i) || (Hi = true), Pg(zn) && (_t = true); + } + if (gt) { + var zn = dr(gt), Ga = Fd(zn); + if (!e.contains(Ni, Ga) && !Lk(gt.switchStatement)) { + if (Ga === i && i === t) + return Ga; + Ni.push(Ga), dy(Ga, i) || (Hi = true), Pg(zn) && (_t = true); + } + } + return Ig(Ra(Ni, Hi ? 2 : 1), _t); + } + function Nt(Yr) { + var Ni = pb(Yr), Hi = vc[Ni] || (vc[Ni] = new e.Map()), _t = tr(); + if (!_t) + return i; + var gt = Hi.get(_t); + if (gt) + return gt; + for (var Vt = ko; Vt < Ao; Vt++) + if (Kr[Vt] === Yr && _i[Vt] === _t && Ei[Vt].length) + return Ig(Ra(Ei[Vt], 1), true); + for (var Fa = [], on = false, zn, Ga = 0, Qn = Yr.antecedents; Ga < Qn.length; Ga++) { + var wo = Qn[Ga], Po = void 0; + if (!zn) + Po = zn = dr(wo); + else { + Kr[Ao] = Yr, _i[Ao] = _t, Ei[Ao] = Fa, Ao++; + var Uo = Zc; + Zc = void 0, Po = dr(wo), Zc = Uo, Ao--; + var Rs = Hi.get(_t); + if (Rs) + return Rs; + } + var Fs = Fd(Po); + if (e.pushIfUnique(Fa, Fs), dy(Fs, i) || (on = true), Fs === i) + break; + } + var rc = Ra(Fa, on ? 2 : 1); + return Pg(zn) ? Ig(rc, true) : (Hi.set(_t, rc), rc); + } + function Ra(Yr, Ni) { + if (E8(Yr)) + return vb(Pa(e.map(Yr, x8))); + var Hi = Pa(e.sameMap(Yr, e0), Ni); + return Hi !== i && Hi.flags & i.flags & 1048576 && e.arraysEqual(Hi.types, i.types) ? i : Hi; + } + function ca(Yr) { + if (e.isBindingPattern(r) || e.isFunctionExpressionOrArrowFunction(r) || e.isObjectLiteralMethod(r)) { + if (e.isIdentifier(Yr)) { + var Ni = Dl(Yr), Hi = Ni.valueDeclaration; + if (Hi && (e.isBindingElement(Hi) || e.isParameter(Hi)) && r === Hi.parent && !Hi.initializer && !Hi.dotDotDotToken) + return Hi; + } + } else if (e.isAccessExpression(Yr)) { + if (zs(r, Yr.expression)) + return Yr; + } else if (e.isIdentifier(Yr)) { + var Ni = Dl(Yr); + if (pv(Ni)) { + var Hi = Ni.valueDeclaration; + if (e.isVariableDeclaration(Hi) && !Hi.type && Hi.initializer && e.isAccessExpression(Hi.initializer) && zs(r, Hi.initializer.expression)) + return Hi.initializer; + if (e.isBindingElement(Hi) && !Hi.initializer) { + var _t = Hi.parent.parent; + if (e.isVariableDeclaration(_t) && !_t.type && _t.initializer && (e.isIdentifier(_t.initializer) || e.isAccessExpression(_t.initializer)) && zs(r, _t.initializer)) + return Hi; + } + } + } + } + function Sn(Yr, Ni) { + var Hi = i.flags & 1048576 ? i : Ni; + if (Hi.flags & 1048576) { + var _t = ca(Yr); + if (_t) { + var gt = wd(_t); + if (gt && lv(Hi, gt)) + return _t; + } + } + } + function ja(Yr, Ni, Hi) { + var _t = wd(Ni); + if (_t === void 0) + return Yr; + var gt = Ye && e.isOptionalChain(Ni) && fs5(Yr, 98304), Vt = da(gt ? Ks(Yr, 2097152) : Yr, _t); + if (!Vt) + return Yr; + Vt = gt ? i_(Vt) : Vt; + var Fa = Hi(Vt); + return ec(Yr, function(on) { + var zn = Ha(on, _t); + return !(Fa.flags & 131072) && cm(Fa, zn); + }); + } + function Fn(Yr, Ni, Hi, _t, gt) { + if ((Hi === 36 || Hi === 37) && Yr.flags & 1048576) { + var Vt = Qh(Yr); + if (Vt && Vt === wd(Ni)) { + var Fa = Yh(Yr, Gs(_t)); + if (Fa) + return Hi === (gt ? 36 : 37) ? Fa : Vl(da(Fa, Vt) || gr) ? Zh(Yr, Fa) : Yr; + } + } + return ja(Yr, Ni, function(on) { + return Qt(on, Hi, _t, gt); + }); + } + function wn(Yr, Ni, Hi, _t, gt) { + if (_t < gt && Yr.flags & 1048576 && Qh(Yr) === wd(Ni)) { + var Vt = $h(Hi).slice(_t, gt), Fa = Pa(e.map(Vt, function(on) { + return Yh(Yr, on) || gr; + })); + if (Fa !== gr) + return Fa; + } + return ja(Yr, Ni, function(on) { + return Un(on, Hi, _t, gt); + }); + } + function Tn(Yr, Ni, Hi) { + if (zs(r, Ni)) + return Yr.flags & 2 && Hi ? Vr : Ks(Yr, Hi ? 4194304 : 8388608); + Ye && Hi && Ag(Ni, r) && (Yr = Ks(Yr, 2097152)); + var _t = Sn(Ni, Yr); + return _t ? ja(Yr, _t, function(gt) { + return Ks(gt, Hi ? 4194304 : 8388608); + }) : Yr; + } + function Eo(Yr, Ni, Hi) { + var _t = bi(Yr, Ni); + return _t ? _t.flags & 16777216 ? true : Hi : Xo(Yr, Ni) ? true : !Hi; + } + function lt(Yr, Ni, Hi) { + return Yr.flags & 1048576 || Yr.flags & 524288 && i !== Yr || e.isThisTypeParameter(Yr) || Yr.flags & 2097152 && e.every(Yr.types, function(_t) { + return _t.symbol !== pe; + }) ? ec(Yr, function(_t) { + return Eo(_t, Ni, Hi); + }) : Yr; + } + function it(Yr, Ni, Hi) { + switch (Ni.operatorToken.kind) { + case 63: + case 75: + case 76: + case 77: + return Tn($t(Yr, Ni.right, Hi), Ni.left, Hi); + case 34: + case 35: + case 36: + case 37: + var _t = Ni.operatorToken.kind, gt = Yp(Ni.left), Vt = Yp(Ni.right); + if (gt.kind === 216 && e.isStringLiteralLike(Vt)) + return Ka(Yr, gt, _t, Vt, Hi); + if (Vt.kind === 216 && e.isStringLiteralLike(gt)) + return Ka(Yr, Vt, _t, gt, Hi); + if (zs(r, gt)) + return Qt(Yr, _t, Vt, Hi); + if (zs(r, Vt)) + return Qt(Yr, _t, gt, Hi); + Ye && (Ag(gt, r) ? Yr = Ia(Yr, _t, Vt, Hi) : Ag(Vt, r) && (Yr = Ia(Yr, _t, gt, Hi))); + var Fa = Sn(gt, Yr); + if (Fa) + return Fn(Yr, Fa, _t, Vt, Hi); + var on = Sn(Vt, Yr); + if (on) + return Fn(Yr, on, _t, gt, Hi); + if (ci(gt)) + return Fr(Yr, _t, Vt, Hi); + if (ci(Vt)) + return Fr(Yr, _t, gt, Hi); + break; + case 102: + return jt(Yr, Ni, Hi); + case 101: + if (e.isPrivateIdentifier(Ni.left)) + return Yt(Yr, Ni, Hi); + var zn = Yp(Ni.right), Ga = Bd(Ni.left); + if (Ga.flags & 128) { + var Qn = e.escapeLeadingUnderscores(Ga.value); + if (Wh(Yr) && e.isAccessExpression(r) && zs(r.expression, zn) && wd(r) === Qn) + return Ks(Yr, Hi ? 524288 : 65536); + if (zs(r, zn)) + return lt(Yr, Qn, Hi); + } + break; + case 27: + return $t(Yr, Ni.right, Hi); + case 55: + return Hi ? $t($t(Yr, Ni.left, true), Ni.right, true) : Pa([$t(Yr, Ni.left, false), $t(Yr, Ni.right, false)]); + case 56: + return Hi ? Pa([$t(Yr, Ni.left, true), $t(Yr, Ni.right, true)]) : $t($t(Yr, Ni.left, false), Ni.right, false); + } + return Yr; + } + function Yt(Yr, Ni, Hi) { + var _t = Yp(Ni.right); + if (!zs(r, _t)) + return Yr; + e.Debug.assertNode(Ni.left, e.isPrivateIdentifier); + var gt = m0(Ni.left); + if (gt === void 0) + return Yr; + var Vt = gt.parent, Fa = e.hasStaticModifier(e.Debug.checkDefined(gt.valueDeclaration, "should always have a declaration")) ? Jt(Vt) : go(Vt); + return Lt(Yr, Fa, Hi, xg); + } + function Ia(Yr, Ni, Hi, _t) { + var gt = Ni === 34 || Ni === 36, Vt = Ni === 34 || Ni === 35 ? 98304 : 32768, Fa = Gs(Hi), on = gt !== _t && gf(Fa, function(zn) { + return !!(zn.flags & Vt); + }) || gt === _t && gf(Fa, function(zn) { + return !(zn.flags & (3 | Vt)); + }); + return on ? Ks(Yr, 2097152) : Yr; + } + function Qt(Yr, Ni, Hi, _t) { + if (Yr.flags & 1) + return Yr; + (Ni === 35 || Ni === 37) && (_t = !_t); + var gt = Gs(Hi); + if (_t && Yr.flags & 2 && (Ni === 34 || Ni === 35) && gt.flags & 65536) + return Pa([Wi, Tr]); + if (Yr.flags & 2 && _t && (Ni === 36 || Ni === 37)) + return gt.flags & 67239932 ? gt : gt.flags & 524288 ? Oi : Yr; + if (gt.flags & 98304) { + if (!Ye) + return Yr; + var Vt = Ni === 34 || Ni === 35, Fa = Vt ? _t ? 262144 : 2097152 : gt.flags & 65536 ? _t ? 131072 : 1048576 : _t ? 65536 : 524288; + return Yr.flags & 2 && Fa & 3145728 ? Vr : Ks(Yr, Fa); + } + if (_t) { + var on = Ni === 34 ? function(zn) { + return Oh(zn, gt) || Ow(zn, gt); + } : function(zn) { + return Oh(zn, gt); + }; + return lC(ec(Yr, on), gt); + } + return Vl(gt) ? ec(Yr, function(zn) { + return !(NE(zn) && Oh(zn, gt)); + }) : Yr; + } + function Ka(Yr, Ni, Hi, _t, gt) { + (Hi === 35 || Hi === 37) && (gt = !gt); + var Vt = Yp(Ni.expression); + if (!zs(r, Vt)) + return Ye && Ag(Vt, r) && gt === (_t.text !== "undefined") ? Ks(Yr, 2097152) : Yr; + if (Yr.flags & 1 && _t.text === "function") + return Yr; + if (gt && Yr.flags & 2 && _t.text === "object") + return Yr === Vr ? Oi : Pa([Oi, Wi]); + var Fa = gt ? G.get(_t.text) || 128 : oe.get(_t.text) || 32768, on = oa(Yr, _t.text); + return Ks(gt && on ? Ss(Yr, Mn(on)) : Yr, Fa); + } + function cn(Yr, Ni, Hi, _t, gt) { + var Vt = Hi !== _t && e.every($h(Ni).slice(Hi, _t), gt); + return Vt ? Ks(Yr, 2097152) : Yr; + } + function Un(Yr, Ni, Hi, _t) { + var gt = $h(Ni); + if (!gt.length) + return Yr; + var Vt = gt.slice(Hi, _t), Fa = Hi === _t || e.contains(Vt, ui); + if (Yr.flags & 2 && !Fa) { + for (var on = void 0, zn = 0; zn < Vt.length; zn += 1) { + var Ga = Vt[zn]; + if (Ga.flags & 67239932) + on !== void 0 && on.push(Ga); + else if (Ga.flags & 524288) + on === void 0 && (on = Vt.slice(0, zn)), on.push(Oi); + else + return Yr; + } + return Pa(on === void 0 ? Vt : on); + } + var Qn = Pa(Vt), wo = Qn.flags & 131072 ? ui : lC(ec(Yr, function(Uo) { + return Oh(Qn, Uo); + }), Qn); + if (!Fa) + return wo; + var Po = ec(Yr, function(Uo) { + return !(NE(Uo) && e.contains(gt, jc(Cw(Uo)))); + }); + return wo.flags & 131072 ? Po : Pa([wo, Po]); + } + function oa(Yr, Ni) { + switch (Ni) { + case "function": + return Yr.flags & 1 ? Yr : br; + case "object": + return Yr.flags & 2 ? Pa([Oi, Wi]) : Yr; + default: + return Mo.get(Ni); + } + } + function Mn(Yr) { + return function(Ni) { + if (E_(Ni, Yr)) + return Ni; + if (E_(Yr, Ni)) + return Yr; + if (Ni.flags & 465829888) { + var Hi = uc(Ni) || Oe; + if (E_(Yr, Hi)) + return Do([Ni, Yr]); + } + return Ni; + }; + } + function Ln(Yr, Ni, Hi, _t) { + var gt = cC(Ni, true); + if (!gt.length) + return Yr; + var Vt = e.findIndex(gt, function(Uo) { + return Uo === void 0; + }), Fa = Hi === _t || Vt >= Hi && Vt < _t, on, zn; + if (Vt > -1) { + var Ga = gt.filter(function(Uo) { + return Uo !== void 0; + }), Qn = Vt < Hi ? Hi - 1 : Hi, wo = Vt < _t ? _t - 1 : _t; + on = Ga.slice(Qn, wo), zn = oS(Qn, wo, Ga, Fa); + } else + on = gt.slice(Hi, _t), zn = oS(Hi, _t, gt, Fa); + if (Fa) + return ec(Yr, function(Uo) { + return (cp(Uo) & zn) === zn; + }); + var Po = Ks(Pa(on.map(function(Uo) { + return oa(Yr, Uo) || Yr; + })), zn); + return Ks(Ss(Yr, Mn(Po)), zn); + } + function ci(Yr) { + return (e.isPropertyAccessExpression(Yr) && e.idText(Yr.name) === "constructor" || e.isElementAccessExpression(Yr) && e.isStringLiteralLike(Yr.argumentExpression) && Yr.argumentExpression.text === "constructor") && zs(r, Yr.expression); + } + function Fr(Yr, Ni, Hi, _t) { + if (_t ? Ni !== 34 && Ni !== 36 : Ni !== 35 && Ni !== 37) + return Yr; + var gt = Gs(Hi); + if (!JS(gt) && !qd(gt)) + return Yr; + var Vt = bi(gt, "prototype"); + if (!Vt) + return Yr; + var Fa = Jt(Vt), on = ta(Fa) ? void 0 : Fa; + if (!on || on === qe || on === br) + return Yr; + if (ta(Yr)) + return on; + return ec(Yr, function(Ga) { + return zn(Ga, on); + }); + function zn(Ga, Qn) { + return Ga.flags & 524288 && e.getObjectFlags(Ga) & 1 || Qn.flags & 524288 && e.getObjectFlags(Qn) & 1 ? Ga.symbol === Qn.symbol : E_(Ga, Qn); + } + } + function jt(Yr, Ni, Hi) { + var _t = Yp(Ni.left); + if (!zs(r, _t)) + return Hi && Ye && Ag(_t, r) ? Ks(Yr, 2097152) : Yr; + var gt = Gs(Ni.right); + if (!xg(gt, br)) + return Yr; + var Vt, Fa = bi(gt, "prototype"); + if (Fa) { + var on = Jt(Fa); + ta(on) || (Vt = on); + } + if (ta(Yr) && (Vt === qe || Vt === br)) + return Yr; + if (!Vt) { + var zn = ot(gt, 1); + Vt = zn.length ? Pa(e.map(zn, function(Qn) { + return yo(Qm(Qn)); + })) : Ba; + } + if (!Hi && gt.flags & 1048576) { + var Ga = e.find(gt.types, function(Qn) { + return !qd(Qn); + }); + if (!Ga) + return Yr; + } + return Lt(Yr, Vt, Hi, xg); + } + function Lt(Yr, Ni, Hi, _t) { + if (!Hi) + return ec(Yr, function(Vt) { + return !_t(Vt, Ni); + }); + if (Yr.flags & 1048576) { + var gt = ec(Yr, function(Vt) { + return _t(Vt, Ni); + }); + if (!(gt.flags & 131072)) + return gt; + } + return E_(Ni, Yr) ? Ni : ao(Yr, Ni) ? Yr : ao(Ni, Yr) ? Ni : Do([Yr, Ni]); + } + function ea(Yr, Ni, Hi) { + if (eC(Ni, r)) { + var _t = Hi || !e.isCallChain(Ni) ? i0(Ni) : void 0, gt = _t && Yc(_t); + if (gt && (gt.kind === 0 || gt.kind === 1)) + return Kt(Yr, gt, Ni, Hi); + } + if (Wh(Yr) && e.isAccessExpression(r) && e.isPropertyAccessExpression(Ni.expression)) { + var Vt = Ni.expression; + if (zs(r.expression, Yp(Vt.expression)) && e.isIdentifier(Vt.name) && Vt.name.escapedText === "hasOwnProperty" && Ni.arguments.length === 1) { + var Fa = Ni.arguments[0]; + if (e.isStringLiteralLike(Fa) && wd(r) === e.escapeLeadingUnderscores(Fa.text)) + return Ks(Yr, Hi ? 524288 : 65536); + } + } + return Yr; + } + function Kt(Yr, Ni, Hi, _t) { + if (Ni.type && !(ta(Yr) && (Ni.type === qe || Ni.type === br))) { + var gt = k8(Ni, Hi); + if (gt) { + if (zs(r, gt)) + return Lt(Yr, Ni.type, _t, E_); + Ye && _t && Ag(gt, r) && !(cp(Ni.type) & 65536) && (Yr = Ks(Yr, 2097152)); + var Vt = Sn(gt, Yr); + if (Vt) + return ja(Yr, Vt, function(Fa) { + return Lt(Fa, Ni.type, _t, E_); + }); + } + } + return Yr; + } + function $t(Yr, Ni, Hi) { + if (e.isExpressionOfOptionalChainRoot(Ni) || e.isBinaryExpression(Ni.parent) && Ni.parent.operatorToken.kind === 60 && Ni.parent.left === Ni) + return Ua(Yr, Ni, Hi); + switch (Ni.kind) { + case 79: + if (!zs(r, Ni) && rr < 5) { + var _t = Dl(Ni); + if (pv(_t)) { + var gt = _t.valueDeclaration; + if (gt && e.isVariableDeclaration(gt) && !gt.type && gt.initializer && dC(r)) { + rr++; + var Vt = $t(Yr, gt.initializer, Hi); + return rr--, Vt; + } + } + } + case 108: + case 106: + case 206: + case 207: + return Tn(Yr, Ni, Hi); + case 208: + return ea(Yr, Ni, Hi); + case 212: + case 230: + return $t(Yr, Ni.expression, Hi); + case 221: + return it(Yr, Ni, Hi); + case 219: + if (Ni.operator === 53) + return $t(Yr, Ni.operand, !Hi); + break; + } + return Yr; + } + function Ua(Yr, Ni, Hi) { + if (zs(r, Ni)) + return Ks(Yr, Hi ? 2097152 : 262144); + var _t = Sn(Ni, Yr); + return _t ? ja(Yr, _t, function(gt) { + return Ks(gt, Hi ? 2097152 : 262144); + }) : Yr; + } + } + function N8(r, i) { + if (r = r.exportSymbol || r, (i.kind === 79 || i.kind === 80) && (e.isRightSideOfQualifiedNameOrPropertyAccess(i) && (i = i.parent), e.isExpressionNode(i) && (!e.isAssignmentTarget(i) || e.isWriteAccess(i)))) { + var t = Gs(i); + if (cu(va(i).resolvedSymbol) === r) + return t; + } + return e.isDeclarationName(i) && e.isSetAccessor(i.parent) && W(i.parent) ? yt(i.parent.symbol) : ml(r); + } + function _v(r) { + return e.findAncestor(r.parent, function(i) { + return e.isFunctionLike(i) && !e.getImmediatelyInvokedFunctionExpression(i) || i.kind === 262 || i.kind === 305 || i.kind === 167; + }); + } + function n0(r) { + if (!r.valueDeclaration) + return false; + var i = e.getRootDeclaration(r.valueDeclaration).parent, t = va(i); + return t.flags & 8388608 || (t.flags |= 8388608, P8(i) || gC(i)), r.isAssigned || false; + } + function P8(r) { + return !!e.findAncestor(r.parent, function(i) { + return (e.isFunctionLike(i) || e.isCatchClause(i)) && !!(va(i).flags & 8388608); + }); + } + function gC(r) { + if (r.kind === 79) { + if (e.isAssignmentTarget(r)) { + var i = Dl(r); + e.isParameterOrCatchClauseVariable(i) && (i.isAssigned = true); + } + } else + e.forEachChild(r, gC); + } + function pv(r) { + return r.flags & 3 && (p0(r) & 2) !== 0; + } + function I8(r, i) { + if (yu(i.symbol, 2)) { + var t = Ye && i.kind === 164 && i.initializer && ju(r) & 32768 && !(ju(yn(i.initializer)) & 32768); + return fi(), t ? Ks(r, 524288) : r; + } else + return lg(i.symbol), r; + } + function w8(r, i) { + var t = i.parent; + return t.kind === 206 || t.kind === 161 || t.kind === 208 && t.expression === i || t.kind === 207 && t.expression === i && !(rg(r, F8) && qp(Gs(t.argumentExpression))); + } + function O8(r) { + return !!(r.flags & 465829888 && Hd(r).flags & 1146880); + } + function F8(r) { + return !!(r.flags & 465829888 && !fs5(Hd(r), 98304)); + } + function M8(r, i) { + var t = (e.isIdentifier(r) || e.isPropertyAccessExpression(r) || e.isElementAccessExpression(r)) && !((e.isJsxOpeningElement(r.parent) || e.isJsxSelfClosingElement(r.parent)) && r.parent.tagName === r) && (i && i & 64 ? ou(r, 8) : ou(r)); + return t && !rv(t); + } + function yb(r, i, t) { + var o = !(t && t & 2) && rg(r, O8) && (w8(r, i) || M8(i, t)); + return o ? Ss(r, function(s) { + return s.flags & 465829888 ? Hd(s) : s; + }) : r; + } + function mC(r) { + return !!e.findAncestor(r, function(i) { + var t = i.parent; + return t === void 0 ? "quit" : e.isExportAssignment(t) ? t.expression === i && e.isEntityNameExpression(i) : e.isExportSpecifier(t) ? t.name === i || t.propertyName === i : false; + }); + } + function o0(r, i) { + if (Zn(r, 111551) && !_m(i) && !vu(r)) { + var t = Ps(r); + t.flags & 111551 && (ye.isolatedModules || e.shouldPreserveConstEnums(ye) && mC(i) || !Av(t) ? As(r) : vn(r)); + } + } + function L8(r, i) { + var t = r.valueDeclaration; + if (t) { + if (e.isBindingElement(t) && !t.initializer && !t.dotDotDotToken && t.parent.elements.length >= 2) { + var o = t.parent.parent; + if (o.kind === 254 && e.getCombinedNodeFlags(t) & 2 || o.kind === 164) { + var s = va(o); + if (!(s.flags & 268435456)) { + s.flags |= 268435456; + var u = Wo(o, 0); + if (s.flags &= -268435457, u && u.flags & 1048576 && !(o.kind === 164 && n0(r))) { + var h = t.parent, z = up(h, u, u, void 0, i.flowNode); + return z.flags & 131072 ? ui : uf(t, z); + } + } + } + } + if (e.isParameter(t) && !t.type && !t.initializer && !t.dotDotDotToken) { + var me = t.parent; + if (me.parameters.length >= 2 && wD(me)) { + var Me = dv(me); + if (Me && Me.parameters.length === 1 && H(Me)) { + var $e = Xd(Jt(Me.parameters[0])); + if ($e.flags & 1048576 && gf($e, Yn) && !n0(r)) { + var z = up(me, $e, $e, void 0, i.flowNode), tr = me.parameters.indexOf(t) - (e.getThisParameter(me) ? 1 : 0); + return Jc(z, If(tr)); + } + } + } + } + } + return Jt(r); + } + function R8(r, i) { + if (e.isThisInTypeQuery(r)) + return yy(r); + var t = Dl(r); + if (t === xe) + return Pe; + if (t === or) { + if (QC(r)) + return Xr(r, e.Diagnostics.arguments_cannot_be_referenced_in_property_initializers), Pe; + var o = e.getContainingFunction(r); + return Ae < 2 && (o.kind === 214 ? Xr(r, e.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression) : e.hasSyntacticModifier(o, 256) && Xr(r, e.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_using_a_standard_function_or_method)), va(o).flags |= 8192, Jt(t); + } + r.parent && e.isPropertyAccessExpression(r.parent) && r.parent.expression === r || o0(t, r); + var s = cu(t), u = W6(s, r); + P_(u) && mD(r, u) && u.declarations && El(r, u.declarations, r.escapedText); + var h = s.valueDeclaration; + if (h && s.flags & 32) { + if (h.kind === 257 && e.nodeIsDecorated(h)) + for (var o = e.getContainingClass(r); o !== void 0; ) { + if (o === h && o.name !== r) { + va(h).flags |= 16777216, va(r).flags |= 33554432; + break; + } + o = e.getContainingClass(o); + } + else if (h.kind === 226) + for (var o = e.getThisContainer(r, false); o.kind !== 305; ) { + if (o.parent === h) { + (e.isPropertyDeclaration(o) && e.isStatic(o) || e.isClassStaticBlockDeclaration(o)) && (va(h).flags |= 16777216, va(r).flags |= 33554432); + break; + } + o = e.getThisContainer(o, false); + } + } + j8(r, t); + var z = L8(s, r), me = e.getAssignmentTargetKind(r); + if (me) { + if (!(s.flags & 3) && !(e.isInJSFile(r) && s.flags & 512)) { + var Me = s.flags & 384 ? e.Diagnostics.Cannot_assign_to_0_because_it_is_an_enum : s.flags & 32 ? e.Diagnostics.Cannot_assign_to_0_because_it_is_a_class : s.flags & 1536 ? e.Diagnostics.Cannot_assign_to_0_because_it_is_a_namespace : s.flags & 16 ? e.Diagnostics.Cannot_assign_to_0_because_it_is_a_function : s.flags & 2097152 ? e.Diagnostics.Cannot_assign_to_0_because_it_is_an_import : e.Diagnostics.Cannot_assign_to_0_because_it_is_not_a_variable; + return Xr(r, Me, tn(t)), Pe; + } + if (Zu(s)) + return s.flags & 3 ? Xr(r, e.Diagnostics.Cannot_assign_to_0_because_it_is_a_constant, tn(t)) : Xr(r, e.Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, tn(t)), Pe; + } + var $e = s.flags & 2097152; + if (s.flags & 3) { + if (me === 1) + return z; + } else if ($e) + h = ru(t); + else + return z; + if (!h) + return z; + z = yb(z, r, i); + for (var tr = e.getRootDeclaration(h).kind === 164, dr = _v(h), Dr = _v(r), Qr = Dr !== dr, li = r.parent && r.parent.parent && e.isSpreadAssignment(r.parent) && mb(r.parent.parent), Ti = t.flags & 134217728; Dr !== dr && (Dr.kind === 213 || Dr.kind === 214 || e.isObjectLiteralOrClassExpressionMethodOrAccessor(Dr)) && (pv(s) && z !== So || tr && !n0(s)); ) + Dr = _v(Dr); + var Ci = tr || $e || Qr || li || Ti || e.isBindingElement(h) || z !== nr && z !== So && (!Ye || (z.flags & 16387) !== 0 || _m(r) || r.parent.kind === 275) || r.parent.kind === 230 || h.kind === 254 && h.exclamationToken || h.flags & 16777216, $i = Ci ? tr ? I8(z, h) : z : z === nr || z === So ? Tr : i_(z), Zi = up(r, z, $i, Dr); + if (!_C(r) && (z === nr || z === So)) { + if (Zi === nr || Zi === So) + return n && (Xr(e.getNameOfDeclaration(h), e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined, tn(t), Ot(Zi)), Xr(r, e.Diagnostics.Variable_0_implicitly_has_an_1_type, tn(t), Ot(Zi))), kv(Zi); + } else if (!Ci && !(ju(z) & 32768) && ju(Zi) & 32768) + return Xr(r, e.Diagnostics.Variable_0_is_used_before_being_assigned, tn(t)), z; + return me ? Kl(Zi) : Zi; + } + function B8(r, i) { + return !!e.findAncestor(r, function(t) { + return t === i ? "quit" : e.isFunctionLike(t) || t.parent && e.isPropertyDeclaration(t.parent) && !e.hasStaticModifier(t.parent) && t.parent.initializer === t; + }); + } + function J8(r, i) { + return e.findAncestor(r, function(t) { + return t === i ? "quit" : t === i.initializer || t === i.condition || t === i.incrementor || t === i.statement; + }); + } + function hb(r) { + return e.findAncestor(r, function(i) { + return !i || e.nodeStartsNewLexicalEnvironment(i) ? "quit" : e.isIterationStatement(i, false); + }); + } + function j8(r, i) { + if (!(Ae >= 2 || (i.flags & 34) === 0 || !i.valueDeclaration || e.isSourceFile(i.valueDeclaration) || i.valueDeclaration.parent.kind === 292)) { + var t = e.getEnclosingBlockScopeContainer(i.valueDeclaration), o = B8(r, t), s = hb(t); + if (s) { + if (o) { + var u = true; + if (e.isForStatement(t)) { + var h = e.getAncestor(i.valueDeclaration, 255); + if (h && h.parent === t) { + var z = J8(r.parent, t); + if (z) { + var me = va(z); + me.flags |= 131072; + var Me = me.capturedBlockScopeBindings || (me.capturedBlockScopeBindings = []); + e.pushIfUnique(Me, i), z === t.initializer && (u = false); + } + } + } + u && (va(s).flags |= 65536); + } + if (e.isForStatement(t)) { + var h = e.getAncestor(i.valueDeclaration, 255); + h && h.parent === t && z8(r, t) && (va(i.valueDeclaration).flags |= 4194304); + } + va(i.valueDeclaration).flags |= 524288; + } + o && (va(i.valueDeclaration).flags |= 262144); + } + } + function U8(r, i) { + var t = va(r); + return !!t && e.contains(t.capturedBlockScopeBindings, Et(i)); + } + function z8(r, i) { + for (var t = r; t.parent.kind === 212; ) + t = t.parent; + var o = false; + if (e.isAssignmentTarget(t)) + o = true; + else if (t.parent.kind === 219 || t.parent.kind === 220) { + var s = t.parent; + o = s.operator === 45 || s.operator === 46; + } + return o ? !!e.findAncestor(t, function(u) { + return u === i ? "quit" : u === i.statement; + }) : false; + } + function Db(r, i) { + if (va(r).flags |= 2, i.kind === 167 || i.kind === 171) { + var t = i.parent; + va(t).flags |= 4; + } else + va(i).flags |= 4; + } + function vC(r) { + return e.isSuperCall(r) ? r : e.isFunctionLike(r) ? void 0 : e.forEachChild(r, vC); + } + function yC(r) { + var i = Et(r), t = go(i), o = Bl(t); + return o === ct; + } + function hC(r, i, t) { + var o = i.parent, s = e.getClassExtendsHeritageElement(o); + s && !yC(o) && r.flowNode && !a0(r.flowNode, false) && Xr(r, t); + } + function W8(r, i) { + e.isPropertyDeclaration(i) && e.hasStaticModifier(i) && i.initializer && e.textRangeContainsPositionInclusive(i.initializer, r.pos) && e.length(i.parent.decorators) && Xr(r, e.Diagnostics.Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class); + } + function yy(r) { + var i = _m(r), t = e.getThisContainer(r, true), o = false; + switch (t.kind === 171 && hC(r, t, e.Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class), t.kind === 214 && (t = e.getThisContainer(t, false), o = true), W8(r, t), t.kind) { + case 261: + Xr(r, e.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); + break; + case 260: + Xr(r, e.Diagnostics.this_cannot_be_referenced_in_current_location); + break; + case 171: + DC(r, t) && Xr(r, e.Diagnostics.this_cannot_be_referenced_in_constructor_arguments); + break; + case 162: + Xr(r, e.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name); + break; + } + !i && o && Ae < 2 && Db(r, t); + var s = bb(r, true, t); + if (lr) { + var u = Jt(pe); + if (s === u && o) + Xr(r, e.Diagnostics.The_containing_arrow_function_captures_the_global_value_of_this); + else if (!s) { + var h = Xr(r, e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation); + if (!e.isSourceFile(t)) { + var z = bb(t); + z && z !== u && e.addRelatedInfo(h, e.createDiagnosticForNode(t, e.Diagnostics.An_outer_value_of_this_is_shadowed_by_this_container)); + } + } + } + return s || Oe; + } + function bb(r, i, t) { + i === void 0 && (i = true), t === void 0 && (t = e.getThisContainer(r, false)); + var o = e.isInJSFile(r); + if (e.isFunctionLike(t) && (!xb(r) || e.getThisParameter(t))) { + var s = ni(t) || o && K8(t); + if (!s) { + var u = V8(t); + if (o && u) { + var h = yn(u).symbol; + h && h.members && h.flags & 16 && (s = go(h).thisType); + } else + Sl(t) && (s = go(so(t.symbol)).thisType); + s || (s = SC(t)); + } + if (s) + return up(r, s); + } + if (e.isClassLike(t.parent)) { + var z = Et(t.parent), me = e.isStatic(t) ? Jt(z) : go(z).thisType; + return up(r, me); + } + if (e.isSourceFile(t)) + if (t.commonJsModuleIndicator) { + var Me = Et(t); + return Me && Jt(Me); + } else { + if (t.externalModuleIndicator) + return Tr; + if (i) + return Jt(pe); + } + } + function q8(r) { + var i = e.getThisContainer(r, false); + if (e.isFunctionLike(i)) { + var t = yl(i); + if (t.thisParameter) + return r0(t.thisParameter); + } + if (e.isClassLike(i.parent)) { + var o = Et(i.parent); + return e.isStatic(i) ? Jt(o) : go(o).thisType; + } + } + function V8(r) { + if (r.kind === 213 && e.isBinaryExpression(r.parent) && e.getAssignmentDeclarationKind(r.parent) === 3) + return r.parent.left.expression.expression; + if (r.kind === 169 && r.parent.kind === 205 && e.isBinaryExpression(r.parent.parent) && e.getAssignmentDeclarationKind(r.parent.parent) === 6) + return r.parent.parent.left.expression; + if (r.kind === 213 && r.parent.kind === 296 && r.parent.parent.kind === 205 && e.isBinaryExpression(r.parent.parent.parent) && e.getAssignmentDeclarationKind(r.parent.parent.parent) === 6) + return r.parent.parent.parent.left.expression; + if (r.kind === 213 && e.isPropertyAssignment(r.parent) && e.isIdentifier(r.parent.name) && (r.parent.name.escapedText === "value" || r.parent.name.escapedText === "get" || r.parent.name.escapedText === "set") && e.isObjectLiteralExpression(r.parent.parent) && e.isCallExpression(r.parent.parent.parent) && r.parent.parent.parent.arguments[2] === r.parent.parent && e.getAssignmentDeclarationKind(r.parent.parent.parent) === 9) + return r.parent.parent.parent.arguments[0].expression; + if (e.isMethodDeclaration(r) && e.isIdentifier(r.name) && (r.name.escapedText === "value" || r.name.escapedText === "get" || r.name.escapedText === "set") && e.isObjectLiteralExpression(r.parent) && e.isCallExpression(r.parent.parent) && r.parent.parent.arguments[2] === r.parent && e.getAssignmentDeclarationKind(r.parent.parent) === 9) + return r.parent.parent.arguments[0].expression; + } + function K8(r) { + var i = e.getJSDocType(r); + if (i && i.kind === 317) { + var t = i; + if (t.parameters.length > 0 && t.parameters[0].name && t.parameters[0].name.escapedText === "this") + return Va(t.parameters[0].type); + } + var o = e.getJSDocThisTag(r); + if (o && o.typeExpression) + return Va(o.typeExpression); + } + function DC(r, i) { + return !!e.findAncestor(r, function(t) { + return e.isFunctionLikeDeclaration(t) ? "quit" : t.kind === 164 && t.parent === i; + }); + } + function Sb(r) { + var i = r.parent.kind === 208 && r.parent.expression === r, t = e.getSuperContainer(r, true), o = t, s = false; + if (!i) + for (; o && o.kind === 214; ) + o = e.getSuperContainer(o, true), s = Ae < 2; + var u = tr(o), h = 0; + if (!u) { + var z = e.findAncestor(r, function(dr) { + return dr === o ? "quit" : dr.kind === 162; + }); + return z && z.kind === 162 ? Xr(r, e.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name) : i ? Xr(r, e.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors) : !o || !o.parent || !(e.isClassLike(o.parent) || o.parent.kind === 205) ? Xr(r, e.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions) : Xr(r, e.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class), Pe; + } + if (!i && t.kind === 171 && hC(r, o, e.Diagnostics.super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class), e.isStatic(o) || i ? (h = 512, !i && Ae >= 2 && Ae <= 8 && (e.isPropertyDeclaration(o) || e.isClassStaticBlockDeclaration(o)) && e.forEachEnclosingBlockScopeContainer(r.parent, function(dr) { + (!e.isSourceFile(dr) || e.isExternalOrCommonJsModule(dr)) && (va(dr).flags |= 134217728); + })) : h = 256, va(r).flags |= h, o.kind === 169 && e.hasSyntacticModifier(o, 256) && (e.isSuperProperty(r.parent) && e.isAssignmentTarget(r.parent) ? va(o).flags |= 4096 : va(o).flags |= 2048), s && Db(r.parent, o), o.parent.kind === 205) + return Ae < 2 ? (Xr(r, e.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher), Pe) : Oe; + var me = o.parent; + if (!e.getClassExtendsHeritageElement(me)) + return Xr(r, e.Diagnostics.super_can_only_be_referenced_in_a_derived_class), Pe; + var Me = go(Et(me)), $e = Me && Qc(Me)[0]; + if (!$e) + return Pe; + if (o.kind === 171 && DC(r, o)) + return Xr(r, e.Diagnostics.super_cannot_be_referenced_in_constructor_arguments), Pe; + return h === 512 ? Bl(Me) : Rc($e, Me.thisType); + function tr(dr) { + return dr ? i ? dr.kind === 171 : e.isClassLike(dr.parent) || dr.parent.kind === 205 ? e.isStatic(dr) ? dr.kind === 169 || dr.kind === 168 || dr.kind === 172 || dr.kind === 173 || dr.kind === 167 || dr.kind === 170 : dr.kind === 169 || dr.kind === 168 || dr.kind === 172 || dr.kind === 173 || dr.kind === 167 || dr.kind === 166 || dr.kind === 171 : false : false; + } + } + function G8(r) { + return (r.kind === 169 || r.kind === 172 || r.kind === 173) && r.parent.kind === 205 ? r.parent : r.kind === 213 && r.parent.kind === 296 ? r.parent.parent : void 0; + } + function bC(r) { + return e.getObjectFlags(r) & 4 && r.target === qn ? xo(r)[0] : void 0; + } + function H8(r) { + return Ss(r, function(i) { + return i.flags & 2097152 ? e.forEach(i.types, bC) : bC(i); + }); + } + function SC(r) { + if (r.kind !== 214) { + if (wD(r)) { + var i = dv(r); + if (i) { + var t = i.thisParameter; + if (t) + return Jt(t); + } + } + var o = e.isInJSFile(r); + if (lr || o) { + var s = G8(r); + if (s) { + for (var u = $p(s), h = s, z = u; z; ) { + var me = H8(z); + if (me) + return un(me, ab(wg(s))); + if (h.parent.kind !== 296) + break; + h = h.parent.parent, z = $p(h); + } + return $c(u ? C_(u) : Os(s)); + } + var Me = e.walkUpParenthesizedExpressions(r.parent); + if (Me.kind === 221 && Me.operatorToken.kind === 63) { + var $e = Me.left; + if (e.isAccessExpression($e)) { + var tr = $e.expression; + if (o && e.isIdentifier(tr)) { + var dr = e.getSourceFileOfNode(Me); + if (dr.commonJsModuleIndicator && Dl(tr) === dr.symbol) + return; + } + return $c(Os(tr)); + } + } + } + } + } + function TC(r) { + var i = r.parent; + if (!!wD(i)) { + var t = e.getImmediatelyInvokedFunctionExpression(i); + if (t && t.arguments) { + var o = Zb(t), s = i.parameters.indexOf(r); + if (r.dotDotDotToken) + return Yb(o, s, o.length, Oe, void 0, 0); + var u = va(t), h = u.resolvedSignature; + u.resolvedSignature = En; + var z = s < o.length ? Hp(yn(o[s])) : r.initializer ? void 0 : vi; + return u.resolvedSignature = h, z; + } + var me = dv(i); + if (me) { + var Me = i.parameters.indexOf(r) - (e.getThisParameter(i) ? 1 : 0); + return r.dotDotDotToken && e.lastOrUndefined(i.parameters) === r ? ym(me, Me) : Ld(me, Me); + } + } + } + function Tb(r) { + var i = e.getEffectiveTypeAnnotationNode(r); + if (i) + return Va(i); + switch (r.kind) { + case 164: + return TC(r); + case 203: + return X8(r); + case 167: + if (e.isStatic(r)) + return Q8(r); + } + } + function X8(r) { + var i = r.parent.parent, t = r.propertyName || r.name, o = Tb(i) || i.kind !== 203 && i.initializer && wy(i, r.dotDotDotToken ? 64 : 0); + if (!(!o || e.isBindingPattern(t) || e.isComputedNonLiteralName(t))) { + if (i.name.kind === 202) { + var s = e.indexOfNode(r.parent.elements, r); + return s < 0 ? void 0 : Ab(o, s); + } + var u = Z_(t); + if (_f(u)) { + var h = pf(u); + return da(o, h); + } + } + } + function Q8(r) { + var i = e.isExpression(r.parent) && ou(r.parent); + if (!!i) + return Md(i, Et(r).escapedName); + } + function Y8(r, i) { + var t = r.parent; + if (e.hasInitializer(t) && r === t.initializer) { + var o = Tb(t); + if (o) + return o; + if (!(i & 8) && e.isBindingPattern(t.name)) + return Qu(t.name, true, false); + } + } + function $8(r) { + var i = e.getContainingFunction(r); + if (i) { + var t = Eb(i); + if (t) { + var o = e.getFunctionFlags(i); + if (o & 1) { + var s = o & 2 ? 2 : 1, u = Jy(t, s, void 0); + if (!u) + return; + t = u.returnType; + } + if (o & 2) { + var h = Ss(t, k_); + return h && Pa([h, Ok(h)]); + } + return t; + } + } + } + function Z8(r, i) { + var t = ou(r, i); + if (t) { + var o = k_(t); + return o && Pa([o, Ok(o)]); + } + } + function e5(r) { + var i = e.getContainingFunction(r); + if (i) { + var t = e.getFunctionFlags(i), o = Eb(i); + if (o) + return r.asteriskToken ? o : Jg(0, o, (t & 2) !== 0); + } + } + function xb(r) { + for (var i = false; r.parent && !e.isFunctionLike(r.parent); ) { + if (e.isParameter(r.parent) && (i || r.parent.initializer === r)) + return true; + e.isBindingElement(r.parent) && r.parent.initializer === r && (i = true), r = r.parent; + } + return false; + } + function xC(r, i) { + var t = !!(e.getFunctionFlags(i) & 2), o = Eb(i); + if (o) + return Jg(r, o, t) || void 0; + } + function Eb(r) { + var i = yg(r); + if (i) + return i; + var t = Pb(r); + if (t && !Z1(t)) + return yo(t); + var o = e.getImmediatelyInvokedFunctionExpression(r); + if (o) + return ou(o); + } + function EC(r, i) { + var t = Zb(r), o = t.indexOf(i); + return o === -1 ? void 0 : Cb(r, o); + } + function Cb(r, i) { + if (e.isImportCall(r)) + return i === 0 ? Li : i === 1 ? xx(false) : Oe; + var t = va(r).resolvedSignature === to ? to : Mg(r); + if (e.isJsxOpeningLikeElement(r) && i === 0) + return l0(t, r); + var o = t.parameters.length - 1; + return H(t) && i >= o ? Jc(Jt(t.parameters[o]), If(i - o), 256) : $u(t, i); + } + function r5(r, i) { + if (r.parent.kind === 210) + return EC(r.parent, i); + } + function i5(r, i) { + var t = r.parent, o = t.left, s = t.operatorToken, u = t.right; + switch (s.kind) { + case 63: + case 76: + case 75: + case 77: + return r === u ? a5(t) : void 0; + case 56: + case 60: + var h = ou(t, i); + return r === u && (h && h.pattern || !h && !e.isDefaultedExpandoInitializer(t)) ? Gs(o) : h; + case 55: + case 27: + return r === u ? ou(t, i) : void 0; + default: + return; + } + } + function t5(r) { + if (r.symbol) + return r.symbol; + if (e.isIdentifier(r)) + return Dl(r); + if (e.isPropertyAccessExpression(r)) { + var i = Gs(r.expression); + return e.isPrivateIdentifier(r.name) ? t(i, r.name) : bi(i, r.name.escapedText); + } + return; + function t(o, s) { + var u = g0(s.escapedText, s); + return u && Ub(o, u); + } + } + function a5(r) { + var i, t, o = e.getAssignmentDeclarationKind(r); + switch (o) { + case 0: + case 4: + var s = t5(r.left), u = s && s.valueDeclaration; + if (u && (e.isPropertyDeclaration(u) || e.isPropertySignature(u))) { + var h = e.getEffectiveTypeAnnotationNode(u); + return h && un(Va(h), Aa(s).mapper) || u.initializer && Gs(r.left); + } + return o === 0 ? Gs(r.left) : CC(r); + case 5: + if (s0(r, o)) + return CC(r); + if (r.left.symbol) { + var z = r.left.symbol.valueDeclaration; + if (!z) + return; + var me = e.cast(r.left, e.isAccessExpression), h = e.getEffectiveTypeAnnotationNode(z); + if (h) + return Va(h); + if (e.isIdentifier(me.expression)) { + var Me = me.expression, $e = es(Me, Me.escapedText, 111551, void 0, Me.escapedText, true); + if ($e) { + var tr = $e.valueDeclaration && e.getEffectiveTypeAnnotationNode($e.valueDeclaration); + if (tr) { + var dr = e.getElementOrPropertyAccessName(me); + if (dr !== void 0) + return Md(Va(tr), dr); + } + return; + } + } + return e.isInJSFile(z) ? void 0 : Gs(r.left); + } else + return Gs(r.left); + case 1: + case 6: + case 3: + var Dr = (i = r.left.symbol) === null || i === void 0 ? void 0 : i.valueDeclaration; + case 2: + Dr || (Dr = (t = r.symbol) === null || t === void 0 ? void 0 : t.valueDeclaration); + var Qr = Dr && e.getEffectiveTypeAnnotationNode(Dr); + return Qr ? Va(Qr) : void 0; + case 7: + case 8: + case 9: + return e.Debug.fail("Does not apply"); + default: + return e.Debug.assertNever(o); + } + } + function s0(r, i) { + if (i === void 0 && (i = e.getAssignmentDeclarationKind(r)), i === 4) + return true; + if (!e.isInJSFile(r) || i !== 5 || !e.isIdentifier(r.left.expression)) + return false; + var t = r.left.expression.escapedText, o = es(r.left, t, 111551, void 0, void 0, true, true); + return e.isThisInitializedDeclaration(o == null ? void 0 : o.valueDeclaration); + } + function CC(r) { + if (!r.symbol) + return Gs(r.left); + if (r.symbol.valueDeclaration) { + var i = e.getEffectiveTypeAnnotationNode(r.symbol.valueDeclaration); + if (i) { + var t = Va(i); + if (t) + return t; + } + } + var o = e.cast(r.left, e.isAccessExpression); + if (!!e.isObjectLiteralMethod(e.getThisContainer(o.expression, false))) { + var s = yy(o.expression), u = e.getElementOrPropertyAccessName(o); + return u !== void 0 && Md(s, u) || void 0; + } + } + function n5(r) { + return !!(e.getCheckFlags(r) & 262144 && !r.type && v(r, 0) >= 0); + } + function Md(r, i, t) { + return Ss(r, function(o) { + var s; + if (Bc(o) && !o.declaration.nameType) { + var u = Mu(o), h = uc(u) || u, z = t || Bu(e.unescapeLeadingUnderscores(i)); + if (ao(z, h)) + return xh(o, z); + } else if (o.flags & 3670016) { + var me = bi(o, i); + if (me) + return n5(me) ? void 0 : Jt(me); + if (Yn(o)) { + var Me = sv(o); + if (Me && e.isNumericLiteralName(i) && +i >= 0) + return Me; + } + return (s = mn(To(o), t || Bu(e.unescapeLeadingUnderscores(i)))) === null || s === void 0 ? void 0 : s.type; + } + }, true); + } + function kC(r, i) { + if (e.Debug.assert(e.isObjectLiteralMethod(r)), !(r.flags & 33554432)) + return kb(r, i); + } + function kb(r, i) { + var t = r.parent, o = e.isPropertyAssignment(r) && Tb(r); + if (o) + return o; + var s = $p(t, i); + if (s) { + if (Td(r)) { + var u = Et(r); + return Md(s, u.escapedName, Aa(u).nameType); + } + if (r.name) { + var h = Z_(r.name); + return Ss(s, function(z) { + var me; + return (me = mn(To(z), h)) === null || me === void 0 ? void 0 : me.type; + }, true); + } + } + } + function Ab(r, i) { + return r && (Md(r, "" + i) || Ss(r, function(t) { + return xS(1, t, Tr, void 0, false); + }, true)); + } + function o5(r, i) { + var t = r.parent; + return r === t.whenTrue || r === t.whenFalse ? ou(t, i) : void 0; + } + function s5(r, i) { + var t = $p(r.openingElement.tagName), o = _0(Og(r)); + if (!!(t && !ta(t) && o && o !== "")) { + var s = e.getSemanticJsxChildren(r.children), u = s.indexOf(i), h = Md(t, o); + return h && (s.length === 1 ? h : Ss(h, function(z) { + return sp(z) ? Jc(z, If(u)) : z; + }, true)); + } + } + function c5(r) { + var i = r.parent; + return e.isJsxAttributeLike(i) ? ou(r) : e.isJsxElement(i) ? s5(i, r) : void 0; + } + function AC(r) { + if (e.isJsxAttribute(r)) { + var i = $p(r.parent); + return !i || ta(i) ? void 0 : Md(i, r.name.escapedText); + } else + return ou(r.parent); + } + function hy(r) { + switch (r.kind) { + case 10: + case 8: + case 9: + case 14: + case 110: + case 95: + case 104: + case 79: + case 153: + return true; + case 206: + case 212: + return hy(r.expression); + case 288: + return !r.expression || hy(r.expression); + } + return false; + } + function u5(r, i) { + return n8(i, r) || UD(i, e.concatenate(e.map(e.filter(r.properties, function(t) { + return !!t.symbol && t.kind === 296 && hy(t.initializer) && lv(i, t.symbol.escapedName); + }), function(t) { + return [function() { + return Oy(t.initializer); + }, t.symbol.escapedName]; + }), e.map(e.filter(uo(i), function(t) { + var o; + return !!(t.flags & 16777216) && !!(!((o = r == null ? void 0 : r.symbol) === null || o === void 0) && o.members) && !r.symbol.members.has(t.escapedName) && lv(i, t.escapedName); + }), function(t) { + return [function() { + return Tr; + }, t.escapedName]; + })), ao, i); + } + function l5(r, i) { + return UD(i, e.concatenate(e.map(e.filter(r.properties, function(t) { + return !!t.symbol && t.kind === 285 && lv(i, t.symbol.escapedName) && (!t.initializer || hy(t.initializer)); + }), function(t) { + return [t.initializer ? function() { + return Oy(t.initializer); + } : function() { + return Dt; + }, t.symbol.escapedName]; + }), e.map(e.filter(uo(i), function(t) { + var o; + return !!(t.flags & 16777216) && !!(!((o = r == null ? void 0 : r.symbol) === null || o === void 0) && o.members) && !r.symbol.members.has(t.escapedName) && lv(i, t.escapedName); + }), function(t) { + return [function() { + return Tr; + }, t.escapedName]; + })), ao, i); + } + function $p(r, i) { + var t = e.isObjectLiteralMethod(r) ? kC(r, i) : ou(r, i), o = c0(t, r, i); + if (o && !(i && i & 2 && o.flags & 8650752)) { + var s = Ss(o, $s, true); + return s.flags & 1048576 && e.isObjectLiteralExpression(r) ? u5(r, s) : s.flags & 1048576 && e.isJsxAttributes(r) ? l5(r, s) : s; + } + } + function c0(r, i, t) { + if (r && fs5(r, 465829888)) { + var o = wg(i); + if (o && e.some(o.inferences, tg)) { + if (t && t & 1) + return u0(r, o.nonFixingMapper); + if (o.returnMapper) { + var s = u0(r, o.returnMapper); + return s.flags & 1048576 && $f(s.types, ut) && $f(s.types, Rt) ? ec(s, function(u) { + return u !== ut && u !== Rt; + }) : s; + } + } + } + return r; + } + function u0(r, i) { + return r.flags & 465829888 ? un(r, i) : r.flags & 1048576 ? Pa(e.map(r.types, function(t) { + return u0(t, i); + }), 0) : r.flags & 2097152 ? Do(e.map(r.types, function(t) { + return u0(t, i); + })) : r; + } + function ou(r, i) { + if (r.flags & 33554432) + return; + if (r.contextualType) + return r.contextualType; + var t = r.parent; + switch (t.kind) { + case 254: + case 164: + case 167: + case 166: + case 203: + return Y8(r, i); + case 214: + case 247: + return $8(r); + case 224: + return e5(t); + case 218: + return Z8(t, i); + case 208: + case 209: + return EC(t, r); + case 211: + case 229: + return e.isConstTypeReference(t.type) ? h(t) : Va(t.type); + case 221: + return i5(r, i); + case 296: + case 297: + return kb(t, i); + case 298: + return ou(t.parent, i); + case 204: { + var o = t, s = $p(o, i); + return Ab(s, e.indexOfNode(o.elements, r)); + } + case 222: + return o5(r, i); + case 233: + return e.Debug.assert(t.parent.kind === 223), r5(t.parent, r); + case 212: { + var u = e.isInJSFile(t) ? e.getJSDocTypeTag(t) : void 0; + return u ? e.isJSDocTypeTag(u) && e.isConstTypeReference(u.typeExpression.type) ? h(t) : Va(u.typeExpression.type) : ou(t, i); + } + case 230: + return ou(t, i); + case 271: + return Rl(t); + case 288: + return c5(t); + case 285: + case 287: + return AC(t); + case 280: + case 279: + return f5(t, i); + } + return; + function h(z) { + return ou(z); + } + } + function wg(r) { + var i = e.findAncestor(r, function(t) { + return !!t.inferenceContext; + }); + return i && i.inferenceContext; + } + function f5(r, i) { + return e.isJsxOpeningElement(r) && r.parent.contextualType && i !== 4 ? r.parent.contextualType : Cb(r, 0); + } + function l0(r, i) { + return lk(i) !== 0 ? _5(r, i) : g5(r, i); + } + function _5(r, i) { + var t = nS(r, gr); + t = NC(i, Og(i), t); + var o = Zp(U.IntrinsicAttributes, i); + return nn(o) || (t = Zg(o, t)), t; + } + function p5(r, i) { + if (r.compositeSignatures) { + for (var t = [], o = 0, s = r.compositeSignatures; o < s.length; o++) { + var u = s[o], h = yo(u); + if (ta(h)) + return h; + var z = da(h, i); + if (!z) + return; + t.push(z); + } + return Do(t); + } + var me = yo(r); + return ta(me) ? me : da(me, i); + } + function d5(r) { + if (dm(r.tagName)) { + var i = BC(r), t = S0(r, i); + return im(t); + } + var o = Os(r.tagName); + if (o.flags & 128) { + var i = RC(o, r); + if (!i) + return Pe; + var t = S0(r, i); + return im(t); + } + return o; + } + function NC(r, i, t) { + var o = F5(i); + if (o) { + var s = go(o), u = d5(r); + if (o.flags & 524288) { + var h = Aa(o).typeParameters; + if (e.length(h) >= 2) { + var z = zp([u, t], h, 2, e.isInJSFile(r)); + return am(o, z); + } + } + if (e.length(s.typeParameters) >= 2) { + var z = zp([u, t], s.typeParameters, 2, e.isInJSFile(r)); + return Yf(s, z); + } + } + return t; + } + function g5(r, i) { + var t = Og(i), o = M5(t), s = o === void 0 ? nS(r, gr) : o === "" ? yo(r) : p5(r, o); + if (!s) + return !!o && !!e.length(i.attributes.properties) && Xr(i, e.Diagnostics.JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property, e.unescapeLeadingUnderscores(o)), gr; + if (s = NC(i, t, s), ta(s)) + return s; + var u = s, h = Zp(U.IntrinsicClassAttributes, i); + if (!nn(h)) { + var z = Af(h.symbol), me = yo(r); + u = Zg(z ? Yf(h, zp([me], z, Ul(z), e.isInJSFile(i))) : h, u); + } + var Me = Zp(U.IntrinsicAttributes, i); + return nn(Me) || (u = Zg(Me, u)), u; + } + function m5(r) { + return e.getStrictOptionValue(ye, "noImplicitAny") ? e.reduceLeft(r, function(i, t) { + return i === t || !i ? i : ah(i.typeParameters, t.typeParameters) ? h5(i, t) : void 0; + }) : void 0; + } + function v5(r, i, t) { + if (!r || !i) + return r || i; + var o = Pa([Jt(r), un(Jt(i), t)]); + return eg(r, o); + } + function y5(r, i, t) { + for (var o = Wc(r), s = Wc(i), u = o >= s ? r : i, h = u === r ? i : r, z = u === r ? o : s, me = Xl(r) || Xl(i), Me = me && !Xl(u), $e = new Array(z + (Me ? 1 : 0)), tr = 0; tr < z; tr++) { + var dr = Ld(u, tr); + u === i && (dr = un(dr, t)); + var Dr = Ld(h, tr) || gr; + h === i && (Dr = un(Dr, t)); + var Qr = Pa([dr, Dr]), li = me && !Me && tr === z - 1, Ti = tr >= Hl(u) && tr >= Hl(h), Ci = tr >= o ? void 0 : vm(r, tr), $i = tr >= s ? void 0 : vm(i, tr), Zi = Ci === $i ? Ci : Ci ? $i ? void 0 : Ci : $i, qt = oo(1 | (Ti && !li ? 16777216 : 0), Zi || "arg".concat(tr)); + qt.type = li ? Zs(Qr) : Qr, $e[tr] = qt; + } + if (Me) { + var Nt = oo(1, "args"); + Nt.type = Zs($u(h, z)), h === i && (Nt.type = un(Nt.type, t)), $e[z] = Nt; + } + return $e; + } + function h5(r, i) { + var t = r.typeParameters || i.typeParameters, o; + r.typeParameters && i.typeParameters && (o = Uc(i.typeParameters, r.typeParameters)); + var s = r.declaration, u = y5(r, i, o), h = v5(r.thisParameter, i.thisParameter, o), z = Math.max(r.minArgumentCount, i.minArgumentCount), me = Fu(s, t, h, u, void 0, void 0, z, (r.flags | i.flags) & 39); + return me.compositeKind = 2097152, me.compositeSignatures = e.concatenate(r.compositeKind === 2097152 && r.compositeSignatures || [r], [i]), o && (me.mapper = r.compositeKind === 2097152 && r.mapper && r.compositeSignatures ? np(r.mapper, o) : o), me; + } + function Nb(r, i) { + var t = ot(r, 0), o = e.filter(t, function(s) { + return !D5(s, i); + }); + return o.length === 1 ? o[0] : m5(o); + } + function D5(r, i) { + for (var t = 0; t < i.parameters.length; t++) { + var o = i.parameters[t]; + if (o.initializer || o.questionToken || o.dotDotDotToken || Cd(o)) + break; + } + return i.parameters.length && e.parameterIsThisKeyword(i.parameters[0]) && t--, !Xl(r) && Wc(r) < t; + } + function Pb(r) { + return e.isFunctionExpressionOrArrowFunction(r) || e.isObjectLiteralMethod(r) ? dv(r) : void 0; + } + function dv(r) { + e.Debug.assert(r.kind !== 169 || e.isObjectLiteralMethod(r)); + var i = rm(r); + if (i) + return i; + var t = $p(r, 1); + if (!!t) { + if (!(t.flags & 1048576)) + return Nb(t, r); + for (var o, s = t.types, u = 0, h = s; u < h.length; u++) { + var z = h[u], me = Nb(z, r); + if (me) + if (!o) + o = [me]; + else if (_y(o[0], me, false, true, true, av)) + o.push(me); + else + return; + } + if (o) + return o.length === 1 ? o[0] : Uv(o[0], o); + } + } + function b5(r, i) { + Ae < 2 && fc(r, ye.downlevelIteration ? 1536 : 1024); + var t = yn(r.expression, i); + return N_(33, t, Tr, r.expression); + } + function S5(r) { + return r.isSpread ? Jc(r.type, nt) : r.type; + } + function pm(r) { + return r.kind === 203 && !!r.initializer || r.kind === 221 && r.operatorToken.kind === 63; + } + function PC(r, i, t) { + for (var o = r.elements, s = o.length, u = [], h = [], z = $p(r), me = e.isAssignmentTarget(r), Me = hm(r), $e = false, tr = 0; tr < s; tr++) { + var dr = o[tr]; + if (dr.kind === 225) { + Ae < 2 && fc(dr, ye.downlevelIteration ? 1536 : 1024); + var Dr = yn(dr.expression, i, t); + if (sp(Dr)) + u.push(Dr), h.push(8); + else if (me) { + var Qr = cs(Dr, nt) || xS(65, Dr, Tr, void 0, false) || gr; + u.push(Qr), h.push(4); + } else + u.push(N_(33, Dr, Tr, dr.expression)), h.push(4); + } else if (yr && dr.kind === 227) + $e = true, u.push(Yi), h.push(2); + else { + var li = Ab(z, u.length), Ti = Dm(dr, i, li, t); + if (u.push(kc(Ti, true, $e)), h.push($e ? 2 : 1), z && rg(z, Eg) && i && i & 2 && !(i & 4) && Ju(dr)) { + var Ci = wg(r); + e.Debug.assert(Ci), BE(Ci, dr, Ti); + } + } + } + return me ? Wl(u, h) : t || Me || z && rg(z, Eg) ? IC(Wl(u, h, Me)) : IC(Zs(u.length ? Pa(e.sameMap(u, function($i, Zi) { + return h[Zi] & 8 ? ep($i, nt) || Oe : $i; + }), 2) : Ye ? na : vi, Me)); + } + function IC(r) { + if (!(e.getObjectFlags(r) & 4)) + return r; + var i = r.literalType; + return i || (i = r.literalType = ux(r), i.objectFlags |= 147456), i; + } + function T5(r) { + switch (r.kind) { + case 162: + return x5(r); + case 79: + return e.isNumericLiteralName(r.escapedText); + case 8: + case 10: + return e.isNumericLiteralName(r.text); + default: + return false; + } + } + function x5(r) { + return Ns(t_(r), 296); + } + function t_(r) { + var i = va(r.expression); + if (!i.resolvedType) { + if ((e.isTypeLiteralNode(r.parent.parent) || e.isClassLike(r.parent.parent) || e.isInterfaceDeclaration(r.parent.parent)) && e.isBinaryExpression(r.expression) && r.expression.operatorToken.kind === 101 && r.parent.kind !== 172 && r.parent.kind !== 173) + return i.resolvedType = Pe; + if (i.resolvedType = yn(r.expression), e.isPropertyDeclaration(r.parent) && !e.hasStaticModifier(r.parent) && e.isClassExpression(r.parent.parent)) { + var t = e.getEnclosingBlockScopeContainer(r.parent.parent), o = hb(t); + o && (va(o).flags |= 65536, va(r).flags |= 524288, va(r.parent.parent).flags |= 524288); + } + (i.resolvedType.flags & 98304 || !Ns(i.resolvedType, 402665900) && !ao(i.resolvedType, Vi)) && Xr(r, e.Diagnostics.A_computed_property_name_must_be_of_type_string_number_symbol_or_any); + } + return i.resolvedType; + } + function E5(r) { + var i, t = (i = r.declarations) === null || i === void 0 ? void 0 : i[0]; + return e.isNumericLiteralName(r.escapedName) || t && e.isNamedDeclaration(t) && T5(t.name); + } + function wC(r) { + var i, t = (i = r.declarations) === null || i === void 0 ? void 0 : i[0]; + return e.isKnownSymbol(r) || t && e.isNamedDeclaration(t) && e.isComputedPropertyName(t.name) && Ns(t_(t.name), 4096); + } + function Ib(r, i, t, o) { + for (var s = [], u = i; u < t.length; u++) { + var h = t[u]; + (o === Li && !wC(h) || o === nt && E5(h) || o === Ki && wC(h)) && s.push(Jt(t[u])); + } + var z = s.length ? Pa(s, 2) : Tr; + return zl(o, z, hm(r)); + } + function wb(r) { + e.Debug.assert((r.flags & 2097152) !== 0, "Should only get Alias here."); + var i = Aa(r); + if (!i.immediateTarget) { + var t = ru(r); + if (!t) + return e.Debug.fail(); + i.immediateTarget = Ec(t, true); + } + return i.immediateTarget; + } + function C5(r, i) { + var t = e.isAssignmentTarget(r); + eL(r, t); + for (var o = Ye ? e.createSymbolTable() : void 0, s = e.createSymbolTable(), u = [], h = Ba, z = $p(r), me = z && z.pattern && (z.pattern.kind === 201 || z.pattern.kind === 205), Me = hm(r), $e = Me ? 8 : 0, tr = e.isInJSFile(r) && !e.isInJsonFile(r), dr = e.getJSDocEnumTag(r), Dr = !z && tr && !dr, Qr = ur, li = false, Ti = false, Ci = false, $i = false, Zi = 0, qt = r.properties; Zi < qt.length; Zi++) { + var Nt = qt[Zi]; + Nt.name && e.isComputedPropertyName(Nt.name) && t_(Nt.name); + } + for (var Ra = 0, ca = 0, Sn = r.properties; ca < Sn.length; ca++) { + var ja = Sn[ca], Fn = Et(ja), wn = ja.name && ja.name.kind === 162 ? t_(ja.name) : void 0; + if (ja.kind === 296 || ja.kind === 297 || e.isObjectLiteralMethod(ja)) { + var Tn = ja.kind === 296 ? Kk(ja, i) : ja.kind === 297 ? Dm(!t && ja.objectAssignmentInitializer ? ja.objectAssignmentInitializer : ja.name, i) : Gk(ja, i); + if (tr) { + var Eo = K_(ja); + Eo ? (zc(Tn, Eo, ja), Tn = Eo) : dr && dr.typeExpression && zc(Tn, Va(dr.typeExpression), ja); + } + Qr |= e.getObjectFlags(Tn) & 458752; + var lt = wn && _f(wn) ? wn : void 0, it = lt ? oo(4 | Fn.flags, pf(lt), $e | 4096) : oo(4 | Fn.flags, Fn.escapedName, $e); + if (lt && (it.nameType = lt), t) { + var Yt = ja.kind === 296 && pm(ja.initializer) || ja.kind === 297 && ja.objectAssignmentInitializer; + Yt && (it.flags |= 16777216); + } else if (me && !(e.getObjectFlags(z) & 512)) { + var Ia = bi(z, Fn.escapedName); + Ia ? it.flags |= Ia.flags & 16777216 : !ye.suppressExcessPropertyErrors && !ss(z, Li) && Xr(ja.name, e.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, tn(Fn), Ot(z)); + } + if (it.declarations = Fn.declarations, it.parent = Fn.parent, Fn.valueDeclaration && (it.valueDeclaration = Fn.valueDeclaration), it.type = Tn, it.target = Fn, Fn = it, o == null || o.set(it.escapedName, it), z && i && i & 2 && !(i & 4) && (ja.kind === 296 || ja.kind === 169) && Ju(ja)) { + var Qt = wg(r); + e.Debug.assert(Qt); + var Ka = ja.kind === 296 ? ja.initializer : ja; + BE(Qt, Ka, Tn); + } + } else if (ja.kind === 298) { + Ae < 2 && fc(ja, 2), u.length > 0 && (h = Vp(h, Mn(), r.symbol, Qr, Me), u = [], s = e.createSymbolTable(), Ti = false, Ci = false, $i = false); + var Tn = bu(yn(ja.expression)); + if (Dy(Tn)) { + var cn = TD(Tn, Me); + if (o && FC(cn, o, ja), Ra = u.length, nn(h)) + continue; + h = Vp(h, cn, r.symbol, Qr, Me); + } else + Xr(ja, e.Diagnostics.Spread_types_may_only_be_created_from_object_types), h = Pe; + continue; + } else + e.Debug.assert(ja.kind === 172 || ja.kind === 173), xm(ja); + wn && !(wn.flags & 8576) ? ao(wn, Vi) && (ao(wn, nt) ? Ci = true : ao(wn, Ki) ? $i = true : Ti = true, t && (li = true)) : s.set(Fn.escapedName, Fn), u.push(Fn); + } + if (me && r.parent.kind !== 298) + for (var Un = 0, oa = uo(z); Un < oa.length; Un++) { + var it = oa[Un]; + !s.get(it.escapedName) && !bi(h, it.escapedName) && (it.flags & 16777216 || Xr(it.valueDeclaration || it.bindingElement, e.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value), s.set(it.escapedName, it), u.push(it)); + } + if (nn(h)) + return Pe; + if (h !== Ba) + return u.length > 0 && (h = Vp(h, Mn(), r.symbol, Qr, Me), u = [], s = e.createSymbolTable(), Ti = false, Ci = false), Ss(h, function(Ln) { + return Ln === Ba ? Mn() : Ln; + }); + return Mn(); + function Mn() { + var Ln = []; + Ti && Ln.push(Ib(r, Ra, u, Li)), Ci && Ln.push(Ib(r, Ra, u, nt)), $i && Ln.push(Ib(r, Ra, u, Ki)); + var ci = rs(r.symbol, s, e.emptyArray, e.emptyArray, Ln); + return ci.objectFlags |= Qr | 128 | 131072, Dr && (ci.objectFlags |= 4096), li && (ci.objectFlags |= 512), t && (ci.pattern = r), ci; + } + } + function Dy(r) { + var i = OE(Ss(r, Hd)); + return !!(i.flags & 126615553 || i.flags & 3145728 && e.every(i.types, Dy)); + } + function k5(r) { + Lb(r); + } + function A5(r, i) { + return xm(r), by(r) || Oe; + } + function N5(r) { + Lb(r.openingElement), dm(r.closingElement.tagName) ? Fb(r.closingElement) : yn(r.closingElement.tagName), f0(r); + } + function P5(r, i) { + return xm(r), by(r) || Oe; + } + function I5(r) { + Lb(r.openingFragment); + var i = e.getSourceFileOfNode(r); + return e.getJSXTransformEnabled(ye) && (ye.jsxFactory || i.pragmas.has("jsx")) && !ye.jsxFragmentFactory && !i.pragmas.has("jsxfrag") && Xr(r, ye.jsxFactory ? e.Diagnostics.The_jsxFragmentFactory_compiler_option_must_be_provided_to_use_JSX_fragments_with_the_jsxFactory_compiler_option : e.Diagnostics.An_jsxFrag_pragma_is_required_when_using_an_jsx_pragma_with_JSX_fragments), f0(r), by(r) || Oe; + } + function Ob(r) { + return e.stringContains(r, "-"); + } + function dm(r) { + return r.kind === 79 && e.isIntrinsicJsxName(r.escapedText); + } + function OC(r, i) { + return r.initializer ? Dm(r.initializer, i) : Dt; + } + function w5(r, i) { + for (var t = r.attributes, o = Ye ? e.createSymbolTable() : void 0, s = e.createSymbolTable(), u = pn, h = false, z, me = false, Me = 2048, $e = _0(Og(r)), tr = 0, dr = t.properties; tr < dr.length; tr++) { + var Dr = dr[tr], Qr = Dr.symbol; + if (e.isJsxAttribute(Dr)) { + var li = OC(Dr, i); + Me |= e.getObjectFlags(li) & 458752; + var Ti = oo(4 | Qr.flags, Qr.escapedName); + Ti.declarations = Qr.declarations, Ti.parent = Qr.parent, Qr.valueDeclaration && (Ti.valueDeclaration = Qr.valueDeclaration), Ti.type = li, Ti.target = Qr, s.set(Ti.escapedName, Ti), o == null || o.set(Ti.escapedName, Ti), Dr.name.escapedText === $e && (me = true); + } else { + e.Debug.assert(Dr.kind === 287), s.size > 0 && (u = Vp(u, ca(), t.symbol, Me, false), s = e.createSymbolTable()); + var li = bu(Os(Dr.expression, i)); + ta(li) && (h = true), Dy(li) ? (u = Vp(u, li, t.symbol, Me, false), o && FC(li, o, Dr)) : (Xr(Dr.expression, e.Diagnostics.Spread_types_may_only_be_created_from_object_types), z = z ? Do([z, li]) : li); + } + } + h || s.size > 0 && (u = Vp(u, ca(), t.symbol, Me, false)); + var Ci = r.parent.kind === 278 ? r.parent : void 0; + if (Ci && Ci.openingElement === r && Ci.children.length > 0) { + var $i = f0(Ci, i); + if (!h && $e && $e !== "") { + me && Xr(t, e.Diagnostics._0_are_specified_twice_The_attribute_named_0_will_be_overwritten, e.unescapeLeadingUnderscores($e)); + var Zi = $p(r.attributes), qt = Zi && Md(Zi, $e), Nt = oo(4, $e); + Nt.type = $i.length === 1 ? $i[0] : qt && rg(qt, Eg) ? Wl($i) : Zs(Pa($i)), Nt.valueDeclaration = e.factory.createPropertySignature(void 0, e.unescapeLeadingUnderscores($e), void 0, void 0), e.setParent(Nt.valueDeclaration, t), Nt.valueDeclaration.symbol = Nt; + var Ra = e.createSymbolTable(); + Ra.set($e, Nt), u = Vp(u, rs(t.symbol, Ra, e.emptyArray, e.emptyArray, e.emptyArray), t.symbol, Me, false); + } + } + if (h) + return Oe; + if (z && u !== pn) + return Do([z, u]); + return z || (u === pn ? ca() : u); + function ca() { + Me |= ur; + var Sn = rs(t.symbol, s, e.emptyArray, e.emptyArray, e.emptyArray); + return Sn.objectFlags |= Me | 128 | 131072, Sn; + } + } + function f0(r, i) { + for (var t = [], o = 0, s = r.children; o < s.length; o++) { + var u = s[o]; + if (u.kind === 11) + u.containsOnlyTriviaWhiteSpaces || t.push(Li); + else { + if (u.kind === 288 && !u.expression) + continue; + t.push(Dm(u, i)); + } + } + return t; + } + function FC(r, i, t) { + for (var o = 0, s = uo(r); o < s.length; o++) { + var u = s[o]; + if (!(u.flags & 16777216)) { + var h = i.get(u.escapedName); + if (h) { + var z = Xr(h.valueDeclaration, e.Diagnostics._0_is_specified_more_than_once_so_this_usage_will_be_overwritten, e.unescapeLeadingUnderscores(h.escapedName)); + e.addRelatedInfo(z, e.createDiagnosticForNode(t, e.Diagnostics.This_spread_always_overwrites_this_property)); + } + } + } + } + function O5(r, i) { + return w5(r.parent, i); + } + function Zp(r, i) { + var t = Og(i), o = t && dc(t), s = o && qs(o, r, 788968); + return s ? go(s) : Pe; + } + function Fb(r) { + var i = va(r); + if (!i.resolvedSymbol) { + var t = Zp(U.IntrinsicElements, r); + if (nn(t)) + return n && Xr(r, e.Diagnostics.JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists, e.unescapeLeadingUnderscores(U.IntrinsicElements)), i.resolvedSymbol = xe; + if (!e.isIdentifier(r.tagName)) + return e.Debug.fail(); + var o = bi(t, r.tagName.escapedText); + if (o) + return i.jsxFlags |= 1, i.resolvedSymbol = o; + var s = cs(t, Li); + return s ? (i.jsxFlags |= 2, i.resolvedSymbol = t.symbol) : (Xr(r, e.Diagnostics.Property_0_does_not_exist_on_type_1, e.idText(r.tagName), "JSX." + U.IntrinsicElements), i.resolvedSymbol = xe); + } + return i.resolvedSymbol; + } + function Mb(r) { + var i = r && e.getSourceFileOfNode(r), t = i && va(i); + if (!(t && t.jsxImplicitImportContainer === false)) { + if (t && t.jsxImplicitImportContainer) + return t.jsxImplicitImportContainer; + var o = e.getJSXRuntimeImport(e.getJSXImplicitImportBase(ye, i), ye); + if (!!o) { + var s = e.getEmitModuleResolutionKind(ye) === e.ModuleResolutionKind.Classic, u = s ? e.Diagnostics.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_node_or_to_add_aliases_to_the_paths_option : e.Diagnostics.Cannot_find_module_0_or_its_corresponding_type_declarations, h = Il(r, o, u, r), z = h && h !== xe ? so(os(h)) : void 0; + return t && (t.jsxImplicitImportContainer = z || false), z; + } + } + } + function Og(r) { + var i = r && va(r); + if (i && i.jsxNamespace) + return i.jsxNamespace; + if (!i || i.jsxNamespace !== false) { + var t = Mb(r); + if (!t || t === xe) { + var o = po(r); + t = es(r, o, 1920, void 0, o, false); + } + if (t) { + var s = os(qs(dc(os(t)), U.JSX, 1920)); + if (s && s !== xe) + return i && (i.jsxNamespace = s), s; + } + i && (i.jsxNamespace = false); + } + var u = os(Ym(U.JSX, 1920, void 0)); + if (u !== xe) + return u; + } + function MC(r, i) { + var t = i && qs(i.exports, r, 788968), o = t && go(t), s = o && uo(o); + if (s) { + if (s.length === 0) + return ""; + if (s.length === 1) + return s[0].escapedName; + s.length > 1 && t.declarations && Xr(t.declarations[0], e.Diagnostics.The_global_type_JSX_0_may_not_have_more_than_one_property, e.unescapeLeadingUnderscores(r)); + } + } + function F5(r) { + return r && qs(r.exports, U.LibraryManagedAttributes, 788968); + } + function M5(r) { + return MC(U.ElementAttributesPropertyNameContainer, r); + } + function _0(r) { + return MC(U.ElementChildrenAttributeNameContainer, r); + } + function LC(r, i) { + if (r.flags & 4) + return [En]; + if (r.flags & 128) { + var t = RC(r, i); + if (t) { + var o = S0(i, t); + return [o]; + } else + return Xr(i, e.Diagnostics.Property_0_does_not_exist_on_type_1, r.value, "JSX." + U.IntrinsicElements), e.emptyArray; + } + var s = $s(r), u = ot(s, 1); + return u.length === 0 && (u = ot(s, 0)), u.length === 0 && s.flags & 1048576 && (u = zv(e.map(s.types, function(h) { + return LC(h, i); + }))), u; + } + function RC(r, i) { + var t = Zp(U.IntrinsicElements, i); + if (!nn(t)) { + var o = r.value, s = bi(t, e.escapeLeadingUnderscores(o)); + if (s) + return Jt(s); + var u = cs(t, Li); + return u || void 0; + } + return Oe; + } + function L5(r, i, t) { + if (r === 1) { + var o = jC(t); + o && hl(i, o, dt, t.tagName, e.Diagnostics.Its_return_type_0_is_not_a_valid_JSX_element, h); + } else if (r === 0) { + var s = JC(t); + s && hl(i, s, dt, t.tagName, e.Diagnostics.Its_instance_type_0_is_not_a_valid_JSX_element, h); + } else { + var o = jC(t), s = JC(t); + if (!o || !s) + return; + var u = Pa([o, s]); + hl(i, u, dt, t.tagName, e.Diagnostics.Its_element_type_0_is_not_a_valid_JSX_element, h); + } + function h() { + var z = e.getTextOfNode(t.tagName); + return e.chainDiagnosticMessages(void 0, e.Diagnostics._0_cannot_be_used_as_a_JSX_component, z); + } + } + function BC(r) { + e.Debug.assert(dm(r.tagName)); + var i = va(r); + if (!i.resolvedJsxElementAttributesType) { + var t = Fb(r); + return i.jsxFlags & 1 ? i.resolvedJsxElementAttributesType = Jt(t) || Pe : i.jsxFlags & 2 ? i.resolvedJsxElementAttributesType = cs(Zp(U.IntrinsicElements, r), Li) || Pe : i.resolvedJsxElementAttributesType = Pe; + } + return i.resolvedJsxElementAttributesType; + } + function JC(r) { + var i = Zp(U.ElementClass, r); + if (!nn(i)) + return i; + } + function by(r) { + return Zp(U.Element, r); + } + function jC(r) { + var i = by(r); + if (i) + return Pa([i, Wi]); + } + function R5(r) { + var i = Zp(U.IntrinsicElements, r); + return i ? uo(i) : e.emptyArray; + } + function B5(r) { + (ye.jsx || 0) === 0 && Xr(r, e.Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided), by(r) === void 0 && n && Xr(r, e.Diagnostics.JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist); + } + function Lb(r) { + var i = e.isJsxOpeningLikeElement(r); + if (i && rL(r), B5(r), !Mb(r)) { + var t = rn && ye.jsx === 2 ? e.Diagnostics.Cannot_find_name_0 : void 0, o = po(r), s = i ? r.tagName : r, u = void 0; + if (e.isJsxOpeningFragment(r) && o === "null" || (u = es(s, o, 111551, t, o, true)), u && (u.isReferenced = 67108863, u.flags & 2097152 && !vu(u) && As(u)), e.isJsxOpeningFragment(r)) { + var h = e.getSourceFileOfNode(r), z = Gn(h); + z && es(s, z, 111551, t, z, true); + } + } + if (i) { + var me = r, Me = Mg(me); + x0(Me, r), L5(lk(me), yo(Me), me); + } + } + function Rb(r, i, t) { + if (r.flags & 524288) { + if (h_(r, i) || Xo(r, i) || pg(i) && ss(r, Li) || t && Ob(i)) + return true; + } else if (r.flags & 3145728 && Sy(r)) + for (var o = 0, s = r.types; o < s.length; o++) { + var u = s[o]; + if (Rb(u, i, t)) + return true; + } + return false; + } + function Sy(r) { + return !!(r.flags & 524288 && !(e.getObjectFlags(r) & 512) || r.flags & 67108864 || r.flags & 1048576 && e.some(r.types, Sy) || r.flags & 2097152 && e.every(r.types, Sy)); + } + function J5(r, i) { + if (tL(r), r.expression) { + var t = yn(r.expression, i); + return r.dotDotDotToken && t !== Oe && !Tu(t) && Xr(r, e.Diagnostics.JSX_spread_child_must_be_an_array_type), t; + } else + return Pe; + } + function p0(r) { + return r.valueDeclaration ? e.getCombinedNodeFlags(r.valueDeclaration) : 0; + } + function Bb(r) { + if (r.flags & 8192 || e.getCheckFlags(r) & 4) + return true; + if (e.isInJSFile(r.valueDeclaration)) { + var i = r.valueDeclaration.parent; + return i && e.isBinaryExpression(i) && e.getAssignmentDeclarationKind(i) === 3; + } + } + function Jb(r, i, t, o, s, u) { + u === void 0 && (u = true); + var h = u ? r.kind === 161 ? r.right : r.kind === 200 ? r : r.kind === 203 && r.propertyName ? r.propertyName : r.name : void 0; + return UC(r, i, t, o, s, h); + } + function UC(r, i, t, o, s, u) { + var h = e.getDeclarationModifierFlagsFromSymbol(s, t); + if (i) { + if (Ae < 2 && zC(s)) + return u && Xr(u, e.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword), false; + if (h & 128) + return u && Xr(u, e.Diagnostics.Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression, tn(s), Ot(Zd(s))), false; + } + if (h & 128 && zC(s) && (e.isThisProperty(r) || e.isThisInitializedObjectBindingExpression(r) || e.isObjectBindingPattern(r.parent) && e.isThisInitializedDeclaration(r.parent.parent))) { + var z = e.getClassLikeDeclarationOfSymbol(Ys(s)); + if (z && i9(r)) + return u && Xr(u, e.Diagnostics.Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor, tn(s), e.getTextOfIdentifierOrLiteral(z.name)), false; + } + if (!(h & 24)) + return true; + if (h & 8) { + var z = e.getClassLikeDeclarationOfSymbol(Ys(s)); + return MS(r, z) ? true : (u && Xr(u, e.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1, tn(s), Ot(Zd(s))), false); + } + if (i) + return true; + var me = Y6(r, function(Me) { + var $e = go(Et(Me)); + return EE($e, s, t); + }); + return !me && (me = j5(r), me = me && EE(me, s, t), h & 32 || !me) ? (u && Xr(u, e.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses, tn(s), Ot(Zd(s) || o)), false) : h & 32 ? true : (o.flags & 262144 && (o = o.isThisType ? Tc(o) : uc(o)), !o || !lf(o, me) ? (u && Xr(u, e.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_This_is_an_instance_of_class_2, tn(s), Ot(me), Ot(o)), false) : true); + } + function j5(r) { + var i = U5(r), t = (i == null ? void 0 : i.type) && Va(i.type); + if (t && t.flags & 262144 && (t = Tc(t)), t && e.getObjectFlags(t) & 7) + return bd(t); + } + function U5(r) { + var i = e.getThisContainer(r, false); + return i && e.isFunctionLike(i) ? e.getThisParameter(i) : void 0; + } + function zC(r) { + return !!fy(r, function(i) { + return !(i.flags & 8192); + }); + } + function gm(r) { + return bl(yn(r), r); + } + function d0(r) { + return !!((Ye ? ju(r) : r.flags) & 98304); + } + function jb(r) { + return d0(r) ? C_(r) : r; + } + function z5(r, i) { + Xr(r, i & 32768 ? i & 65536 ? e.Diagnostics.Object_is_possibly_null_or_undefined : e.Diagnostics.Object_is_possibly_undefined : e.Diagnostics.Object_is_possibly_null); + } + function W5(r, i) { + Xr(r, i & 32768 ? i & 65536 ? e.Diagnostics.Cannot_invoke_an_object_which_is_possibly_null_or_undefined : e.Diagnostics.Cannot_invoke_an_object_which_is_possibly_undefined : e.Diagnostics.Cannot_invoke_an_object_which_is_possibly_null); + } + function WC(r, i, t) { + if (Ye && r.flags & 2) + return Xr(i, e.Diagnostics.Object_is_of_type_unknown), Pe; + var o = (Ye ? ju(r) : r.flags) & 98304; + if (o) { + t(i, o); + var s = C_(r); + return s.flags & 229376 ? Pe : s; + } + return r; + } + function bl(r, i) { + return WC(r, i, z5); + } + function qC(r, i) { + var t = bl(r, i); + return t.flags & 16384 && Xr(i, e.Diagnostics.Object_is_possibly_undefined), t; + } + function VC(r, i) { + return r.flags & 32 ? q5(r, i) : zb(r, r.expression, gm(r.expression), r.name, i); + } + function q5(r, i) { + var t = yn(r.expression), o = cv(t, r.expression); + return zh(zb(r, r.expression, bl(o, r.expression), r.name, i), r, o !== t); + } + function KC(r, i) { + var t = e.isPartOfTypeQuery(r) && e.isThisIdentifier(r.left) ? bl(yy(r.left), r.left) : gm(r.left); + return zb(r, r.left, t, r.right, i); + } + function GC(r) { + for (; r.parent.kind === 212; ) + r = r.parent; + return e.isCallOrNewExpression(r.parent) && r.parent.expression === r; + } + function g0(r, i) { + for (var t = e.getContainingClass(i); t; t = e.getContainingClass(t)) { + var o = t.symbol, s = e.getSymbolNameForPrivateIdentifier(o, r), u = o.members && o.members.get(s) || o.exports && o.exports.get(s); + if (u) + return u; + } + } + function V5(r) { + if (!e.getContainingClass(r)) + return Tt(r, e.Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies); + if (!e.isForInStatement(r.parent)) { + if (!e.isExpressionNode(r)) + return Tt(r, e.Diagnostics.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression); + var i = e.isBinaryExpression(r.parent) && r.parent.operatorToken.kind === 101; + if (!m0(r) && !i) + return Tt(r, e.Diagnostics.Cannot_find_name_0, e.idText(r)); + } + return false; + } + function K5(r) { + V5(r); + var i = m0(r); + return i && xy(i, void 0, false), Oe; + } + function m0(r) { + if (!!e.isExpressionNode(r)) { + var i = va(r); + return i.resolvedSymbol === void 0 && (i.resolvedSymbol = g0(r.escapedText, r)), i.resolvedSymbol; + } + } + function Ub(r, i) { + return bi(r, i.escapedName); + } + function G5(r, i, t) { + var o, s = uo(r); + s && e.forEach(s, function(tr) { + var dr = tr.valueDeclaration; + if (dr && e.isNamedDeclaration(dr) && e.isPrivateIdentifier(dr.name) && dr.name.escapedText === i.escapedText) + return o = tr, true; + }); + var u = ku(i); + if (o) { + var h = e.Debug.checkDefined(o.valueDeclaration), z = e.Debug.checkDefined(e.getContainingClass(h)); + if (t != null && t.valueDeclaration) { + var me = t.valueDeclaration, Me = e.getContainingClass(me); + if (e.Debug.assert(!!Me), e.findAncestor(Me, function(tr) { + return z === tr; + })) { + var $e = Xr(i, e.Diagnostics.The_property_0_cannot_be_accessed_on_type_1_within_this_class_because_it_is_shadowed_by_another_private_identifier_with_the_same_spelling, u, Ot(r)); + return e.addRelatedInfo($e, e.createDiagnosticForNode(me, e.Diagnostics.The_shadowing_declaration_of_0_is_defined_here, u), e.createDiagnosticForNode(h, e.Diagnostics.The_declaration_of_0_that_you_probably_intended_to_use_is_defined_here, u)), true; + } + } + return Xr(i, e.Diagnostics.Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier, u, ku(z.name || C)), true; + } + return false; + } + function HC(r, i) { + return (Le(i) || e.isThisProperty(r) && Nr(i)) && e.getThisContainer(r, true) === ri(i); + } + function zb(r, i, t, o, s) { + var u = va(i).resolvedSymbol, h = e.getAssignmentTargetKind(r), z = $s(h !== 0 || GC(r) ? $c(t) : t), me = ta(z) || z === Bt, Me; + if (e.isPrivateIdentifier(o)) { + Ae < 99 && (h !== 0 && fc(r, 1048576), h !== 1 && fc(r, 524288)); + var $e = g0(o.escapedText, o); + if (h && $e && $e.valueDeclaration && e.isMethodDeclaration($e.valueDeclaration) && Tt(o, e.Diagnostics.Cannot_assign_to_private_method_0_Private_methods_are_not_writable, e.idText(o)), me) { + if ($e) + return nn(z) ? Pe : z; + if (!e.getContainingClass(o)) + return Tt(o, e.Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies), Oe; + } + if (Me = $e ? Ub(t, $e) : void 0, !Me && G5(t, o, $e)) + return Pe; + var tr = Me && Me.flags & 65536 && !(Me.flags & 32768); + tr && h !== 1 && Xr(r, e.Diagnostics.Private_accessor_was_defined_without_a_getter); + } else { + if (me) + return e.isIdentifier(i) && u && o0(u, r), nn(z) ? Pe : z; + Me = bi(z, o.escapedText); + } + e.isIdentifier(i) && u && (ye.isolatedModules || !(Me && (Av(Me) || Me.flags & 8 && r.parent.kind === 299)) || e.shouldPreserveConstEnums(ye) && mC(r)) && o0(u, r); + var dr; + if (Me) { + P_(Me) && mD(r, Me) && Me.declarations && El(o, Me.declarations, o.escapedText), H5(Me, r, o), xy(Me, r, rk(i, u)), va(r).resolvedSymbol = Me; + var li = e.isWriteAccess(r); + if (Jb(r, i.kind === 106, li, z, Me), jk(r, Me, h)) + return Xr(o, e.Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, e.idText(o)), Pe; + dr = HC(r, Me) ? nr : li ? Vg(Me) : Jt(Me); + } else { + var Dr = !e.isPrivateIdentifier(o) && (h === 0 || !Ad(t) || e.isThisTypeParameter(t)) ? Xo(z, o.escapedText) : void 0; + if (!(Dr && Dr.type)) { + var Qr = Wb(r, t.symbol, true); + return !Qr && ev(t) ? Oe : t.symbol === pe ? (pe.exports.has(o.escapedText) && pe.exports.get(o.escapedText).flags & 418 ? Xr(o, e.Diagnostics.Property_0_does_not_exist_on_type_1, e.unescapeLeadingUnderscores(o.escapedText), Ot(t)) : n && Xr(o, e.Diagnostics.Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature, Ot(t)), Oe) : (o.escapedText && !bp(r) && YC(o, e.isThisTypeParameter(t) ? z : t, Qr), Pe); + } + Dr.isReadonly && (e.isAssignmentTarget(r) || e.isDeleteTarget(r)) && Xr(r, e.Diagnostics.Index_signature_in_type_0_only_permits_reading, Ot(z)), dr = ye.noUncheckedIndexedAccess && !e.isAssignmentTarget(r) ? Pa([Dr.type, Tr]) : Dr.type, ye.noPropertyAccessFromIndexSignature && e.isPropertyAccessExpression(r) && Xr(o, e.Diagnostics.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0, e.unescapeLeadingUnderscores(o.escapedText)), Dr.declaration && e.getCombinedNodeFlags(Dr.declaration) & 268435456 && El(o, [Dr.declaration], o.escapedText); + } + return XC(r, Me, dr, o, s); + } + function Wb(r, i, t) { + var o = e.getSourceFileOfNode(r); + if (o && ye.checkJs === void 0 && o.checkJsDirective === void 0 && (o.scriptKind === 1 || o.scriptKind === 2)) { + var s = e.forEach(i == null ? void 0 : i.declarations, e.getSourceFileOfNode); + return !(o !== s && !!s && Cu(s)) && !(t && i && i.flags & 32) && !(!!r && t && e.isPropertyAccessExpression(r) && r.expression.kind === 108); + } + return false; + } + function XC(r, i, t, o, s) { + var u = e.getAssignmentTargetKind(r); + if (u === 1) + return kg(t, !!(i && i.flags & 16777216)); + if (i && !(i.flags & 98311) && !(i.flags & 8192 && t.flags & 1048576) && !z0(i.declarations)) + return t; + if (t === nr) + return ra(r, i); + t = yb(t, r, s); + var h = false; + if (Ye && Ne && e.isAccessExpression(r) && r.expression.kind === 108) { + var z = i && i.valueDeclaration; + if (z && J6(z) && !e.isStatic(z)) { + var me = _v(r); + me.kind === 171 && me.parent === z.parent && !(z.flags & 16777216) && (h = true); + } + } else + Ye && i && i.valueDeclaration && e.isPropertyAccessExpression(i.valueDeclaration) && e.getAssignmentDeclarationPropertyAccessKind(i.valueDeclaration) && _v(r) === _v(i.valueDeclaration) && (h = true); + var Me = up(r, t, h ? i_(t) : t); + return h && !(ju(t) & 32768) && ju(Me) & 32768 ? (Xr(o, e.Diagnostics.Property_0_is_used_before_being_assigned, tn(i)), t) : u ? Kl(Me) : Me; + } + function H5(r, i, t) { + var o = r.valueDeclaration; + if (!(!o || e.getSourceFileOfNode(i).isDeclarationFile)) { + var s, u = e.idText(t); + QC(i) && !qm(o) && !(e.isAccessExpression(i) && e.isAccessExpression(i.expression)) && !ns(o, t) && !(e.isMethodDeclaration(o) && e.getCombinedModifierFlags(o) & 32) && (ye.useDefineForClassFields || !X5(r)) ? s = Xr(t, e.Diagnostics.Property_0_is_used_before_its_initialization, u) : o.kind === 257 && i.parent.kind !== 178 && !(o.flags & 16777216) && !ns(o, t) && (s = Xr(t, e.Diagnostics.Class_0_used_before_its_declaration, u)), s && e.addRelatedInfo(s, e.createDiagnosticForNode(o, e.Diagnostics._0_is_declared_here, u)); + } + } + function QC(r) { + return !!e.findAncestor(r, function(i) { + switch (i.kind) { + case 167: + return true; + case 296: + case 169: + case 172: + case 173: + case 298: + case 162: + case 233: + case 288: + case 285: + case 286: + case 287: + case 280: + case 228: + case 291: + return false; + case 214: + case 238: + return e.isBlock(i.parent) && e.isClassStaticBlockDeclaration(i.parent.parent) ? true : "quit"; + default: + return e.isExpressionNode(i) ? false : "quit"; + } + }); + } + function X5(r) { + if (!(r.parent.flags & 32)) + return false; + for (var i = Jt(r.parent); ; ) { + if (i = i.symbol && Q5(i), !i) + return false; + var t = bi(i, r.escapedName); + if (t && t.valueDeclaration) + return true; + } + } + function Q5(r) { + var i = Qc(r); + if (i.length !== 0) + return Do(i); + } + function YC(r, i, t) { + var o, s; + if (!e.isPrivateIdentifier(r) && i.flags & 1048576 && !(i.flags & 131068)) + for (var u = 0, h = i.types; u < h.length; u++) { + var z = h[u]; + if (!bi(z, r.escapedText) && !Xo(z, r.escapedText)) { + o = e.chainDiagnosticMessages(o, e.Diagnostics.Property_0_does_not_exist_on_type_1, e.declarationNameToString(r), Ot(z)); + break; + } + } + if ($C(r.escapedText, i)) { + var me = e.declarationNameToString(r), Me = Ot(i); + o = e.chainDiagnosticMessages(o, e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead, me, Me, Me + "." + me); + } else { + var $e = Tv(i); + if ($e && bi($e, r.escapedText)) + o = e.chainDiagnosticMessages(o, e.Diagnostics.Property_0_does_not_exist_on_type_1, e.declarationNameToString(r), Ot(i)), s = e.createDiagnosticForNode(r, e.Diagnostics.Did_you_forget_to_use_await); + else { + var tr = e.declarationNameToString(r), dr = Ot(i), Dr = Z5(tr, i); + if (Dr !== void 0) + o = e.chainDiagnosticMessages(o, e.Diagnostics.Property_0_does_not_exist_on_type_1_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2_or_later, tr, dr, Dr); + else { + var Qr = qb(r, i); + if (Qr !== void 0) { + var li = e.symbolName(Qr), Ti = t ? e.Diagnostics.Property_0_may_not_exist_on_type_1_Did_you_mean_2 : e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2; + o = e.chainDiagnosticMessages(o, Ti, tr, dr, li), s = Qr.valueDeclaration && e.createDiagnosticForNode(Qr.valueDeclaration, e.Diagnostics._0_is_declared_here, li); + } else { + var Ci = Y5(i) ? e.Diagnostics.Property_0_does_not_exist_on_type_1_Try_changing_the_lib_compiler_option_to_include_dom : e.Diagnostics.Property_0_does_not_exist_on_type_1; + o = e.chainDiagnosticMessages(ei(o, i), Ci, tr, dr); + } + } + } + } + var $i = e.createDiagnosticForNodeFromMessageChain(r, o); + s && e.addRelatedInfo($i, s), Ls(!t || o.code !== e.Diagnostics.Property_0_may_not_exist_on_type_1_Did_you_mean_2.code, $i); + } + function Y5(r) { + return ye.lib && !ye.lib.includes("dom") && h8(r, function(i) { + return i.symbol && /^(EventTarget|Node|((HTML[a-zA-Z]*)?Element))$/.test(e.unescapeLeadingUnderscores(i.symbol.escapedName)); + }) && Of(r); + } + function $C(r, i) { + var t = i.symbol && bi(Jt(i.symbol), r); + return t !== void 0 && !!t.valueDeclaration && e.isStatic(t.valueDeclaration); + } + function $5(r) { + for (var i = ku(r), t = e.getScriptTargetFeatures(), o = e.getOwnKeys(t), s = 0, u = o; s < u.length; s++) { + var h = u[s], z = e.getOwnKeys(t[h]); + if (z !== void 0 && e.contains(z, i)) + return h; + } + } + function Z5(r, i) { + var t = $s(i).symbol; + if (!!t) + for (var o = e.getScriptTargetFeatures(), s = e.getOwnKeys(o), u = 0, h = s; u < h.length; u++) { + var z = h[u], me = o[z], Me = me[e.symbolName(t)]; + if (Me !== void 0 && e.contains(Me, r)) + return z; + } + } + function ZC(r, i) { + return Ty(r, uo(i), 106500); + } + function qb(r, i) { + var t = uo(i); + if (typeof r != "string") { + var o = r.parent; + e.isPropertyAccessExpression(o) && (t = e.filter(t, function(s) { + return ik(o, i, s); + })), r = e.idText(r); + } + return Ty(r, t, 111551); + } + function ek(r, i) { + var t = e.isString(r) ? r : e.idText(r), o = uo(i), s = t === "for" ? e.find(o, function(u) { + return e.symbolName(u) === "htmlFor"; + }) : t === "class" ? e.find(o, function(u) { + return e.symbolName(u) === "className"; + }) : void 0; + return s != null ? s : Ty(t, o, 111551); + } + function Vb(r, i) { + var t = qb(r, i); + return t && e.symbolName(t); + } + function Kb(r, i, t) { + e.Debug.assert(i !== void 0, "outername should always be defined"); + var o = u_(r, i, t, void 0, i, false, false, true, function(s, u, h) { + e.Debug.assertEqual(i, u, "name should equal outerName"); + var z = qs(s, u, h); + if (z) + return z; + var me; + if (s === ii) { + var Me = e.mapDefined(["string", "number", "boolean", "object", "bigint", "symbol"], function($e) { + return s.has($e.charAt(0).toUpperCase() + $e.slice(1)) ? oo(524288, $e) : void 0; + }); + me = Me.concat(e.arrayFrom(s.values())); + } else + me = e.arrayFrom(s.values()); + return Ty(e.unescapeLeadingUnderscores(u), me, h); + }); + return o; + } + function e7(r, i, t) { + var o = Kb(r, i, t); + return o && e.symbolName(o); + } + function v0(r, i) { + return i.exports && Ty(e.idText(r), J_(i), 2623475); + } + function r7(r, i) { + var t = v0(r, i); + return t && e.symbolName(t); + } + function i7(r, i, t) { + function o(h) { + var z = h_(r, h); + if (z) { + var me = ig(Jt(z)); + return !!me && Hl(me) >= 1 && ao(t, $u(me, 0)); + } + return false; + } + var s = e.isAssignmentTarget(i) ? "set" : "get"; + if (!!o(s)) { + var u = e.tryGetPropertyAccessOrIdentifierToString(i.expression); + return u === void 0 ? u = s : u += "." + s, u; + } + } + function t7(r, i) { + var t = i.types.filter(function(o) { + return !!(o.flags & 128); + }); + return e.getSpellingSuggestion(r.value, t, function(o) { + return o.value; + }); + } + function Ty(r, i, t) { + return e.getSpellingSuggestion(r, i, o); + function o(s) { + var u = e.symbolName(s); + if (!e.startsWith(u, '"')) { + if (s.flags & t) + return u; + if (s.flags & 2097152) { + var h = d_(s); + if (h && h.flags & t) + return u; + } + } + } + } + function xy(r, i, t) { + var o = r && r.flags & 106500 && r.valueDeclaration; + if (!!o) { + var s = e.hasEffectiveModifier(o, 8), u = r.valueDeclaration && e.isNamedDeclaration(r.valueDeclaration) && e.isPrivateIdentifier(r.valueDeclaration.name); + if (!(!s && !u) && !(i && e.isWriteOnlyAccess(i) && !(r.flags & 65536))) { + if (t) { + var h = e.findAncestor(i, e.isFunctionLikeDeclaration); + if (h && h.symbol === r) + return; + } + (e.getCheckFlags(r) & 1 ? Aa(r).target : r).isReferenced = 67108863; + } + } + } + function rk(r, i) { + return r.kind === 108 || !!i && e.isEntityNameExpression(r) && i === Dl(e.getFirstIdentifier(r)); + } + function a7(r, i) { + switch (r.kind) { + case 206: + return Gb(r, r.expression.kind === 106, i, $c(yn(r.expression))); + case 161: + return Gb(r, false, i, $c(yn(r.left))); + case 200: + return Gb(r, false, i, Va(r)); + } + } + function ik(r, i, t) { + return Hb(r, r.kind === 206 && r.expression.kind === 106, false, i, t); + } + function Gb(r, i, t, o) { + if (ta(o)) + return true; + var s = bi(o, t); + return !!s && Hb(r, i, false, o, s); + } + function Hb(r, i, t, o, s) { + if (ta(o)) + return true; + if (s.valueDeclaration && e.isPrivateIdentifierClassElementDeclaration(s.valueDeclaration)) { + var u = e.getContainingClass(s.valueDeclaration); + return !e.isOptionalChain(r) && !!e.findAncestor(r, function(h) { + return h === u; + }); + } + return UC(r, i, t, o, s); + } + function n7(r) { + var i = r.initializer; + if (i.kind === 255) { + var t = i.declarations[0]; + if (t && !e.isBindingPattern(t.name)) + return Et(t); + } else if (i.kind === 79) + return Dl(i); + } + function o7(r) { + return Hn(r).length === 1 && !!ss(r, nt); + } + function s7(r) { + var i = e.skipParentheses(r); + if (i.kind === 79) { + var t = Dl(i); + if (t.flags & 3) + for (var o = r, s = r.parent; s; ) { + if (s.kind === 243 && o === s.statement && n7(s) === t && o7(Gs(s.expression))) + return true; + o = s, s = s.parent; + } + } + return false; + } + function c7(r, i) { + return r.flags & 32 ? u7(r, i) : tk(r, gm(r.expression), i); + } + function u7(r, i) { + var t = yn(r.expression), o = cv(t, r.expression); + return zh(tk(r, bl(o, r.expression), i), r, o !== t); + } + function tk(r, i, t) { + var o = e.getAssignmentTargetKind(r) !== 0 || GC(r) ? $c(i) : i, s = r.argumentExpression, u = yn(s); + if (nn(o) || o === Bt) + return o; + if (uS(o) && !e.isStringLiteralLike(s)) + return Xr(s, e.Diagnostics.A_const_enum_member_can_only_be_accessed_using_a_string_literal), Pe; + var h = s7(s) ? nt : u, z = e.isAssignmentTarget(r) ? 4 | (Ad(o) && !e.isThisTypeParameter(o) ? 2 : 0) : 32, me = ep(o, h, z, r) || Pe; + return o6(XC(r, va(r).resolvedSymbol, me, s, t), r); + } + function ak(r) { + return e.isCallOrNewExpression(r) || e.isTaggedTemplateExpression(r) || e.isJsxOpeningLikeElement(r); + } + function Fg(r) { + return ak(r) && e.forEach(r.typeArguments, io), r.kind === 210 ? yn(r.template) : e.isJsxOpeningLikeElement(r) ? yn(r.attributes) : r.kind !== 165 && e.forEach(r.arguments, function(i) { + yn(i); + }), En; + } + function Gl(r) { + return Fg(r), Wn; + } + function l7(r, i, t) { + var o, s, u = 0, h, z = -1, me; + e.Debug.assert(!i.length); + for (var Me = 0, $e = r; Me < $e.length; Me++) { + var tr = $e[Me], dr = tr.declaration && Et(tr.declaration), Dr = tr.declaration && tr.declaration.parent; + !s || dr === s ? o && Dr === o ? h = h + 1 : (o = Dr, h = u) : (h = u = i.length, o = Dr), s = dr, I(tr) ? (z++, me = z, u++) : me = h, i.splice(me, 0, t ? w1(tr, t) : tr); + } + } + function y0(r) { + return !!r && (r.kind === 225 || r.kind === 232 && r.isSpread); + } + function h0(r) { + return e.findIndex(r, y0); + } + function nk(r) { + return !!(r.flags & 16384); + } + function f7(r) { + return !!(r.flags & 49155); + } + function D0(r, i, t, o) { + o === void 0 && (o = false); + var s, u = false, h = Wc(t), z = Hl(t); + if (r.kind === 210) + if (s = i.length, r.template.kind === 223) { + var me = e.last(r.template.templateSpans); + u = e.nodeIsMissing(me.literal) || !!me.literal.isUnterminated; + } else { + var Me = r.template; + e.Debug.assert(Me.kind === 14), u = !!Me.isUnterminated; + } + else if (r.kind === 165) + s = _k(r, t); + else if (e.isJsxOpeningLikeElement(r)) { + if (u = r.attributes.end === r.end, u) + return true; + s = z === 0 ? i.length : 1, h = i.length === 0 ? h : 1, z = Math.min(z, 1); + } else if (r.arguments) { + s = o ? i.length + 1 : i.length, u = r.arguments.end === r.end; + var $e = h0(i); + if ($e >= 0) + return $e >= Hl(t) && (Xl(t) || $e < Wc(t)); + } else + return e.Debug.assert(r.kind === 209), Hl(t) === 0; + if (!Xl(t) && s > h) + return false; + if (u || s >= z) + return true; + for (var tr = s; tr < z; tr++) { + var dr = $u(t, tr); + if (ec(dr, e.isInJSFile(r) && !Ye ? f7 : nk).flags & 131072) + return false; + } + return true; + } + function Xb(r, i) { + var t = e.length(r.typeParameters), o = Ul(r.typeParameters); + return !e.some(i) || i.length >= o && i.length <= t; + } + function ig(r) { + return gv(r, 0, false); + } + function ok(r) { + return gv(r, 0, false) || gv(r, 1, false); + } + function gv(r, i, t) { + if (r.flags & 524288) { + var o = Ru(r); + if (t || o.properties.length === 0 && o.indexInfos.length === 0) { + if (i === 0 && o.callSignatures.length === 1 && o.constructSignatures.length === 0) + return o.callSignatures[0]; + if (i === 1 && o.constructSignatures.length === 1 && o.callSignatures.length === 0) + return o.constructSignatures[0]; + } + } + } + function sk(r, i, t, o) { + var s = uv(r.typeParameters, r, 0, o), u = vv(i), h = t && (u && u.flags & 262144 ? t.nonFixingMapper : t.mapper), z = h ? Tg(i, h) : i; + return eb(z, r, function(me, Me) { + df(s.inferences, me, Me); + }), t || rb(i, r, function(me, Me) { + df(s.inferences, me, Me, 128); + }), Xm(r, _b(s), e.isInJSFile(i.declaration)); + } + function _7(r, i, t, o) { + var s = l0(i, r), u = Rg(r.attributes, s, o, t); + return df(o.inferences, u, s), _b(o); + } + function ck(r) { + if (!r) + return Fi; + var i = yn(r); + return e.isOptionalChainRoot(r.parent) ? C_(i) : e.isOptionalChain(r.parent) ? YD(i) : i; + } + function Qb(r, i, t, o, s) { + if (e.isJsxOpeningLikeElement(r)) + return _7(r, i, o, s); + if (r.kind !== 165) { + var u = ou(r, e.every(i.typeParameters, function(Sn) { + return !!D_(Sn); + }) ? 8 : 0); + if (u) { + var h = yo(i); + if (Id(h)) { + var z = wg(r), me = ab(Jw(z, 1)), Me = un(u, me), $e = ig(Me), tr = $e && $e.typeParameters ? im(eD($e, $e.typeParameters)) : Me; + df(s.inferences, tr, h, 128); + var dr = uv(i.typeParameters, i, s.flags), Dr = un(u, z && z.returnMapper); + df(dr.inferences, Dr, h), s.returnMapper = e.some(dr.inferences, tg) ? ab(Uw(dr)) : void 0; + } + } + } + var Qr = yv(i), li = Qr ? Math.min(Wc(i) - 1, t.length) : t.length; + if (Qr && Qr.flags & 262144) { + var Ti = e.find(s.inferences, function(Sn) { + return Sn.typeParameter === Qr; + }); + Ti && (Ti.impliedArity = e.findIndex(t, y0, li) < 0 ? t.length - li : void 0); + } + var Ci = T_(i); + if (Ci && Id(Ci)) { + var $i = fk(r); + df(s.inferences, ck($i), Ci); + } + for (var Zi = 0; Zi < li; Zi++) { + var qt = t[Zi]; + if (qt.kind !== 227 && !(o & 32 && ub(qt))) { + var Nt = $u(i, Zi); + if (Id(Nt)) { + var Ra = Rg(qt, Nt, s, o); + df(s.inferences, Ra, Nt); + } + } + } + if (Qr && Id(Qr)) { + var ca = Yb(t, li, t.length, Qr, s, o); + df(s.inferences, ca, Qr); + } + return _b(s); + } + function uk(r) { + return r.flags & 1048576 ? Ss(r, uk) : r.flags & 1 || Bh(uc(r) || r) ? r : Yn(r) ? Wl(xo(r), r.target.elementFlags, false, r.target.labeledElementDeclarations) : Wl([r], [8]); + } + function Yb(r, i, t, o, s, u) { + if (i >= t - 1) { + var h = r[t - 1]; + if (y0(h)) + return uk(h.kind === 232 ? h.type : Rg(h.expression, o, s, u)); + } + for (var z = [], me = [], Me = [], $e = i; $e < t; $e++) { + var h = r[$e]; + if (y0(h)) { + var tr = h.kind === 232 ? h.type : yn(h.expression); + sp(tr) ? (z.push(tr), me.push(8)) : (z.push(N_(33, tr, Tr, h.kind === 225 ? h.expression : h)), me.push(4)); + } else { + var dr = Jc(o, If($e - i), 256), Dr = Rg(h, dr, s, u), Qr = fs5(dr, 406978556); + z.push(Qr ? jc(Dr) : Hp(Dr)), me.push(1); + } + h.kind === 232 && h.tupleNameSource && Me.push(h.tupleNameSource); + } + return Wl(z, me, false, e.length(Me) === e.length(z) ? Me : void 0); + } + function $b(r, i, t, o) { + for (var s = e.isInJSFile(r.declaration), u = r.typeParameters, h = zp(e.map(i, Va), u, Ul(u), s), z, me = 0; me < i.length; me++) { + e.Debug.assert(u[me] !== void 0, "Should not call checkTypeArguments with too many type arguments"); + var Me = Tc(u[me]); + if (Me) { + var $e = t && o ? function() { + return e.chainDiagnosticMessages(void 0, e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + } : void 0, tr = o || e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1; + z || (z = Uc(u, h)); + var dr = h[me]; + if (!zc(dr, Rc(un(Me, z), dr), t ? i[me] : void 0, tr, $e)) + return; + } + } + return h; + } + function lk(r) { + if (dm(r.tagName)) + return 2; + var i = $s(yn(r.tagName)); + return e.length(ot(i, 1)) ? 0 : e.length(ot(i, 0)) ? 1 : 2; + } + function p7(r, i, t, o, s, u, h) { + var z = l0(i, r), me = Rg(r.attributes, z, void 0, o); + return Me() && FD(me, z, t, s ? r.tagName : void 0, r.attributes, void 0, u, h); + function Me() { + var $e; + if (Mb(r)) + return true; + var tr = e.isJsxOpeningElement(r) || e.isJsxSelfClosingElement(r) && !dm(r.tagName) ? yn(r.tagName) : void 0; + if (!tr) + return true; + var dr = ot(tr, 0); + if (!e.length(dr)) + return true; + var Dr = oA(r); + if (!Dr) + return true; + var Qr = Ds(Dr, 111551, true, false, r); + if (!Qr) + return true; + var li = Jt(Qr), Ti = ot(li, 0); + if (!e.length(Ti)) + return true; + for (var Ci = false, $i = 0, Zi = 0, qt = Ti; Zi < qt.length; Zi++) { + var Nt = qt[Zi], Ra = $u(Nt, 0), ca = ot(Ra, 0); + if (!!e.length(ca)) + for (var Sn = 0, ja = ca; Sn < ja.length; Sn++) { + var Fn = ja[Sn]; + if (Ci = true, Xl(Fn)) + return true; + var wn = Wc(Fn); + wn > $i && ($i = wn); + } + } + if (!Ci) + return true; + for (var Tn = 1 / 0, Eo = 0, lt = dr; Eo < lt.length; Eo++) { + var it = lt[Eo], Yt = Hl(it); + Yt < Tn && (Tn = Yt); + } + if (Tn <= $i) + return true; + if (s) { + var Ia = e.createDiagnosticForNode(r.tagName, e.Diagnostics.Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3, e.entityNameToString(r.tagName), Tn, e.entityNameToString(Dr), $i), Qt = ($e = el(r.tagName)) === null || $e === void 0 ? void 0 : $e.valueDeclaration; + Qt && e.addRelatedInfo(Ia, e.createDiagnosticForNode(Qt, e.Diagnostics._0_is_declared_here, e.entityNameToString(r.tagName))), h && h.skipLogging && (h.errors || (h.errors = [])).push(Ia), h.skipLogging || rn.add(Ia); + } + return false; + } + } + function Ey(r, i, t, o, s, u, h) { + var z = { errors: void 0, skipLogging: true }; + if (e.isJsxOpeningLikeElement(r)) + return p7(r, t, o, s, u, h, z) ? void 0 : (e.Debug.assert(!u || !!z.errors, "jsx should have errors when reporting errors"), z.errors || e.emptyArray); + var me = T_(t); + if (me && me !== Fi && r.kind !== 209) { + var Me = fk(r), $e = ck(Me), tr = u ? Me || r : void 0, dr = e.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; + if (!hl($e, me, o, tr, dr, h, z)) + return e.Debug.assert(!u || !!z.errors, "this parameter should have errors when reporting errors"), z.errors || e.emptyArray; + } + for (var Dr = e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1, Qr = yv(t), li = Qr ? Math.min(Wc(t) - 1, i.length) : i.length, Ti = 0; Ti < li; Ti++) { + var Ci = i[Ti]; + if (Ci.kind !== 227) { + var $i = $u(t, Ti), Zi = Rg(Ci, $i, void 0, s), qt = s & 4 ? fm(Zi) : Zi; + if (!FD(qt, $i, o, u ? Ci : void 0, Ci, Dr, h, z)) + return e.Debug.assert(!u || !!z.errors, "parameter should have errors when reporting errors"), ca(Ci, qt, $i), z.errors || e.emptyArray; + } + } + if (Qr) { + var Nt = Yb(i, li, i.length, Qr, void 0, s), Ra = i.length - li, tr = u ? Ra === 0 ? r : Ra === 1 ? i[li] : e.setTextRangePosEnd(ed(r, Nt), i[li].pos, i[i.length - 1].end) : void 0; + if (!hl(Nt, Qr, o, tr, Dr, void 0, z)) + return e.Debug.assert(!u || !!z.errors, "rest parameter should have errors when reporting errors"), ca(tr, Nt, Qr), z.errors || e.emptyArray; + } + return; + function ca(Sn, ja, Fn) { + if (Sn && u && z.errors && z.errors.length) { + if (Sv(Fn)) + return; + var wn = Sv(ja); + wn && r_(wn, Fn, o) && e.addRelatedInfo(z.errors[0], e.createDiagnosticForNode(Sn, e.Diagnostics.Did_you_forget_to_use_await)); + } + } + } + function fk(r) { + var i = r.kind === 208 ? r.expression : r.kind === 210 ? r.tag : void 0; + if (i) { + var t = e.skipOuterExpressions(i); + if (e.isAccessExpression(t)) + return t.expression; + } + } + function ed(r, i, t, o) { + var s = e.parseNodeFactory.createSyntheticExpression(i, t, o); + return e.setTextRange(s, r), e.setParent(s, r), s; + } + function Zb(r) { + if (r.kind === 210) { + var i = r.template, t = [ed(i, T3())]; + return i.kind === 223 && e.forEach(i.templateSpans, function(me) { + t.push(me.expression); + }), t; + } + if (r.kind === 165) + return d7(r); + if (e.isJsxOpeningLikeElement(r)) + return r.attributes.properties.length > 0 || e.isJsxOpeningElement(r) && r.parent.children.length > 0 ? [r.attributes] : e.emptyArray; + var o = r.arguments || e.emptyArray, s = h0(o); + if (s >= 0) { + for (var u = o.slice(0, s), h = function(me) { + var Me = o[me], $e = Me.kind === 225 && (Ao ? yn(Me.expression) : Os(Me.expression)); + $e && Yn($e) ? e.forEach(xo($e), function(tr, dr) { + var Dr, Qr = $e.target.elementFlags[dr], li = ed(Me, Qr & 4 ? Zs(tr) : tr, !!(Qr & 12), (Dr = $e.target.labeledElementDeclarations) === null || Dr === void 0 ? void 0 : Dr[dr]); + u.push(li); + }) : u.push(Me); + }, z = s; z < o.length; z++) + h(z); + return u; + } + return o; + } + function d7(r) { + var i = r.parent, t = r.expression; + switch (i.kind) { + case 257: + case 226: + return [ed(t, Jt(Et(i)))]; + case 164: + var o = i.parent; + return [ed(t, i.parent.kind === 171 ? Jt(Et(o)) : Pe), ed(t, Oe), ed(t, nt)]; + case 167: + case 169: + case 172: + case 173: + var s = i.kind !== 167 && Ae !== 0; + return [ed(t, l9(i)), ed(t, f9(i)), ed(t, s ? Px(Bd(i)) : Oe)]; + } + return e.Debug.fail(); + } + function _k(r, i) { + switch (r.parent.kind) { + case 257: + case 226: + return 1; + case 167: + return 2; + case 169: + case 172: + case 173: + return Ae === 0 || i.parameters.length <= 2 ? 2 : 3; + case 164: + return 3; + default: + return e.Debug.fail(); + } + } + function pk(r, i) { + var t, o, s = e.getSourceFileOfNode(r); + if (e.isPropertyAccessExpression(r.expression)) { + var u = e.getErrorSpanForNode(s, r.expression.name); + t = u.start, o = i ? u.length : r.end - t; + } else { + var h = e.getErrorSpanForNode(s, r.expression); + t = h.start, o = i ? h.length : r.end - t; + } + return { start: t, length: o, sourceFile: s }; + } + function Cy(r, i, t, o, s, u) { + if (e.isCallExpression(r)) { + var h = pk(r), z = h.sourceFile, me = h.start, Me = h.length; + return e.createFileDiagnostic(z, me, Me, i, t, o, s, u); + } else + return e.createDiagnosticForNode(r, i, t, o, s, u); + } + function g7(r) { + if (!e.isCallExpression(r) || !e.isIdentifier(r.expression)) + return false; + var i = es(r.expression, r.expression.escapedText, 111551, void 0, void 0, false), t = i == null ? void 0 : i.valueDeclaration; + if (!t || !e.isParameter(t) || !e.isFunctionExpressionOrArrowFunction(t.parent) || !e.isNewExpression(t.parent.parent) || !e.isIdentifier(t.parent.parent.expression)) + return false; + var o = nD(false); + if (!o) + return false; + var s = el(t.parent.parent.expression, true); + return s === o; + } + function dk(r, i, t) { + var o, s = h0(t); + if (s > -1) + return e.createDiagnosticForNode(t[s], e.Diagnostics.A_spread_argument_must_either_have_a_tuple_type_or_be_passed_to_a_rest_parameter); + for (var u = Number.POSITIVE_INFINITY, h = Number.NEGATIVE_INFINITY, z = Number.NEGATIVE_INFINITY, me = Number.POSITIVE_INFINITY, Me, $e = 0, tr = i; $e < tr.length; $e++) { + var dr = tr[$e], Dr = Hl(dr), Qr = Wc(dr); + Dr < u && (u = Dr, Me = dr), h = Math.max(h, Qr), Dr < t.length && Dr > z && (z = Dr), t.length < Qr && Qr < me && (me = Qr); + } + var li = e.some(i, Xl), Ti = li ? u : u < h ? u + "-" + h : u, Ci = !li && Ti === 1 && t.length === 0 && g7(r); + if (Ci && e.isInJSFile(r)) + return Cy(r, e.Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments); + var $i = li ? e.Diagnostics.Expected_at_least_0_arguments_but_got_1 : Ci ? e.Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise : e.Diagnostics.Expected_0_arguments_but_got_1; + if (u < t.length && t.length < h) + return Cy(r, e.Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, t.length, z, me); + if (t.length < u) { + var Zi = Cy(r, $i, Ti, t.length), qt = (o = Me == null ? void 0 : Me.declaration) === null || o === void 0 ? void 0 : o.parameters[Me.thisParameter ? t.length + 1 : t.length]; + if (qt) { + var Nt = e.createDiagnosticForNode(qt, e.isBindingPattern(qt.name) ? e.Diagnostics.An_argument_matching_this_binding_pattern_was_not_provided : e.isRestParameter(qt) ? e.Diagnostics.Arguments_for_the_rest_parameter_0_were_not_provided : e.Diagnostics.An_argument_for_0_was_not_provided, qt.name ? e.isBindingPattern(qt.name) ? void 0 : e.idText(e.getFirstIdentifier(qt.name)) : t.length); + return e.addRelatedInfo(Zi, Nt); + } + return Zi; + } else { + var Ra = e.factory.createNodeArray(t.slice(h)), ca = e.first(Ra).pos, Sn = e.last(Ra).end; + return Sn === ca && Sn++, e.setTextRangePosEnd(Ra, ca, Sn), e.createDiagnosticForNodeArray(e.getSourceFileOfNode(r), Ra, $i, Ti, t.length); + } + } + function m7(r, i, t) { + var o = t.length; + if (i.length === 1) { + var s = i[0], u = Ul(s.typeParameters), h = e.length(s.typeParameters); + return e.createDiagnosticForNodeArray(e.getSourceFileOfNode(r), t, e.Diagnostics.Expected_0_type_arguments_but_got_1, u < h ? u + "-" + h : u, o); + } + for (var z = -1 / 0, me = 1 / 0, Me = 0, $e = i; Me < $e.length; Me++) { + var s = $e[Me], tr = Ul(s.typeParameters), h = e.length(s.typeParameters); + tr > o ? me = Math.min(me, tr) : h < o && (z = Math.max(z, h)); + } + return z !== -1 / 0 && me !== 1 / 0 ? e.createDiagnosticForNodeArray(e.getSourceFileOfNode(r), t, e.Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments, o, z, me) : e.createDiagnosticForNodeArray(e.getSourceFileOfNode(r), t, e.Diagnostics.Expected_0_type_arguments_but_got_1, z === -1 / 0 ? me : z, o); + } + function mm(r, i, t, o, s, u) { + var h = r.kind === 210, z = r.kind === 165, me = e.isJsxOpeningLikeElement(r), Me = !t, $e; + z || ($e = r.typeArguments, (h || me || r.expression.kind !== 106) && e.forEach($e, io)); + var tr = t || []; + if (l7(i, tr, s), !tr.length) + return Me && rn.add(Cy(r, e.Diagnostics.Call_target_does_not_contain_any_signatures)), Gl(r); + var dr = Zb(r), Dr = tr.length === 1 && !tr[0].typeParameters, Qr = !z && !Dr && e.some(dr, Ju) ? 4 : 0; + Qr |= o & 32; + var li, Ti, Ci, $i, Zi = !!(o & 16) && r.kind === 208 && r.arguments.hasTrailingComma; + if (tr.length > 1 && ($i = ea(tr, Or, Dr, Zi)), $i || ($i = ea(tr, dt, Dr, Zi)), $i) + return $i; + if (Me) + if (li) + if (li.length === 1 || li.length > 3) { + var qt = li[li.length - 1], Nt; + li.length > 3 && (Nt = e.chainDiagnosticMessages(Nt, e.Diagnostics.The_last_overload_gave_the_following_error), Nt = e.chainDiagnosticMessages(Nt, e.Diagnostics.No_overload_matches_this_call)); + var Ra = Ey(r, dr, qt, dt, 0, true, function() { + return Nt; + }); + if (Ra) + for (var ca = 0, Sn = Ra; ca < Sn.length; ca++) { + var ja = Sn[ca]; + qt.declaration && li.length > 3 && e.addRelatedInfo(ja, e.createDiagnosticForNode(qt.declaration, e.Diagnostics.The_last_overload_is_declared_here)), Lt(qt, ja), rn.add(ja); + } + else + e.Debug.fail("No error for last overload signature"); + } else { + for (var Fn = [], wn = 0, Tn = Number.MAX_VALUE, Eo = 0, lt = 0, it = function(Kt) { + var $t = function() { + return e.chainDiagnosticMessages(void 0, e.Diagnostics.Overload_0_of_1_2_gave_the_following_error, lt + 1, tr.length, Ml(Kt)); + }, Ua = Ey(r, dr, Kt, dt, 0, true, $t); + Ua ? (Ua.length <= Tn && (Tn = Ua.length, Eo = lt), wn = Math.max(wn, Ua.length), Fn.push(Ua)) : e.Debug.fail("No error for 3 or fewer overload signatures"), lt++; + }, Yt = 0, Ia = li; Yt < Ia.length; Yt++) { + var Qt = Ia[Yt]; + it(Qt); + } + var Ka = wn > 1 ? Fn[Eo] : e.flatten(Fn); + e.Debug.assert(Ka.length > 0, "No errors reported for 3 or fewer overload signatures"); + var cn = e.chainDiagnosticMessages(e.map(Ka, e.createDiagnosticMessageChainFromDiagnostic), e.Diagnostics.No_overload_matches_this_call), Un = Ve([], e.flatMap(Ka, function(Kt) { + return Kt.relatedInformation; + }), true), oa = void 0; + if (e.every(Ka, function(Kt) { + return Kt.start === Ka[0].start && Kt.length === Ka[0].length && Kt.file === Ka[0].file; + })) { + var Mn = Ka[0], Ln = Mn.file, ci = Mn.start, Fr = Mn.length; + oa = { file: Ln, start: ci, length: Fr, code: cn.code, category: cn.category, messageText: cn, relatedInformation: Un }; + } else + oa = e.createDiagnosticForNodeFromMessageChain(r, cn, Un); + Lt(li[0], oa), rn.add(oa); + } + else if (Ti) + rn.add(dk(r, [Ti], dr)); + else if (Ci) + $b(Ci, r.typeArguments, true, u); + else { + var jt = e.filter(i, function(Kt) { + return Xb(Kt, $e); + }); + jt.length === 0 ? rn.add(m7(r, i, $e)) : z ? u && rn.add(Cy(r, u)) : rn.add(dk(r, jt, dr)); + } + return v7(r, tr, dr, !!t, o); + function Lt(Kt, $t) { + var Ua, Yr, Ni = li, Hi = Ti, _t = Ci, gt = ((Yr = (Ua = Kt.declaration) === null || Ua === void 0 ? void 0 : Ua.symbol) === null || Yr === void 0 ? void 0 : Yr.declarations) || e.emptyArray, Vt = gt.length > 1, Fa = Vt ? e.find(gt, function(Ga) { + return e.isFunctionLikeDeclaration(Ga) && e.nodeIsPresent(Ga.body); + }) : void 0; + if (Fa) { + var on = yl(Fa), zn = !on.typeParameters; + ea([on], dt, zn) && e.addRelatedInfo($t, e.createDiagnosticForNode(Fa, e.Diagnostics.The_call_would_have_succeeded_against_this_implementation_but_implementation_signatures_of_overloads_are_not_externally_visible)); + } + li = Ni, Ti = Hi, Ci = _t; + } + function ea(Kt, $t, Ua, Yr) { + if (Yr === void 0 && (Yr = false), li = void 0, Ti = void 0, Ci = void 0, Ua) { + var Ni = Kt[0]; + if (e.some($e) || !D0(r, dr, Ni, Yr)) + return; + if (Ey(r, dr, Ni, $t, 0, false, void 0)) { + li = [Ni]; + return; + } + return Ni; + } + for (var Hi = 0; Hi < Kt.length; Hi++) { + var Ni = Kt[Hi]; + if (!(!Xb(Ni, $e) || !D0(r, dr, Ni, Yr))) { + var _t = void 0, gt = void 0; + if (Ni.typeParameters) { + var Vt = void 0; + if (e.some($e)) { + if (Vt = $b(Ni, $e, false), !Vt) { + Ci = Ni; + continue; + } + } else + gt = uv(Ni.typeParameters, Ni, e.isInJSFile(r) ? 2 : 0), Vt = Qb(r, Ni, dr, Qr | 8, gt), Qr |= gt.flags & 4 ? 8 : 0; + if (_t = Xm(Ni, Vt, e.isInJSFile(Ni.declaration), gt && gt.inferredTypeParameters), yv(Ni) && !D0(r, dr, _t, Yr)) { + Ti = _t; + continue; + } + } else + _t = Ni; + if (Ey(r, dr, _t, $t, Qr, false, void 0)) { + (li || (li = [])).push(_t); + continue; + } + if (Qr) { + if (Qr = o & 32, gt) { + var Vt = Qb(r, Ni, dr, Qr, gt); + if (_t = Xm(Ni, Vt, e.isInJSFile(Ni.declaration), gt && gt.inferredTypeParameters), yv(Ni) && !D0(r, dr, _t, Yr)) { + Ti = _t; + continue; + } + } + if (Ey(r, dr, _t, $t, Qr, false, void 0)) { + (li || (li = [])).push(_t); + continue; + } + } + return Kt[Hi] = _t, _t; + } + } + } + } + function v7(r, i, t, o, s) { + return e.Debug.assert(i.length > 0), xm(r), o || i.length === 1 || i.some(function(u) { + return !!u.typeParameters; + }) ? D7(r, i, t, s) : y7(i); + } + function y7(r) { + var i = e.mapDefined(r, function(dr) { + return dr.thisParameter; + }), t; + i.length && (t = gk(i, i.map(mv))); + for (var o = e.minAndMax(r, h7), s = o.min, u = o.max, h = [], z = function(dr) { + var Dr = e.mapDefined(r, function(Qr) { + return H(Qr) ? dr < Qr.parameters.length - 1 ? Qr.parameters[dr] : e.last(Qr.parameters) : dr < Qr.parameters.length ? Qr.parameters[dr] : void 0; + }); + e.Debug.assert(Dr.length !== 0), h.push(gk(Dr, e.mapDefined(r, function(Qr) { + return Ld(Qr, dr); + }))); + }, me = 0; me < u; me++) + z(me); + var Me = e.mapDefined(r, function(dr) { + return H(dr) ? e.last(dr.parameters) : void 0; + }), $e = 0; + if (Me.length !== 0) { + var tr = Zs(Pa(e.mapDefined(r, ix), 2)); + h.push(mk(Me, tr)), $e |= 1; + } + return r.some(I) && ($e |= 2), Fu(r[0].declaration, void 0, t, h, Do(r.map(yo)), void 0, s, $e); + } + function h7(r) { + var i = r.parameters.length; + return H(r) ? i - 1 : i; + } + function gk(r, i) { + return mk(r, Pa(i, 2)); + } + function mk(r, i) { + return eg(e.first(r), i); + } + function D7(r, i, t, o) { + var s = T7(i, si === void 0 ? t.length : si), u = i[s], h = u.typeParameters; + if (!h) + return u; + var z = ak(r) ? r.typeArguments : void 0, me = z ? mh(u, b7(z, h, e.isInJSFile(r))) : S7(r, h, u, t, o); + return i[s] = me, me; + } + function b7(r, i, t) { + for (var o = r.map(Bd); o.length > i.length; ) + o.pop(); + for (; o.length < i.length; ) + o.push(D_(i[o.length]) || Tc(i[o.length]) || fb(t)); + return o; + } + function S7(r, i, t, o, s) { + var u = uv(i, t, e.isInJSFile(r) ? 2 : 0), h = Qb(r, t, o, s | 4 | 8, u); + return mh(t, h); + } + function T7(r, i) { + for (var t = -1, o = -1, s = 0; s < r.length; s++) { + var u = r[s], h = Wc(u); + if (Xl(u) || h >= i) + return s; + h > o && (o = h, t = s); + } + return t; + } + function x7(r, i, t) { + if (r.expression.kind === 106) { + var o = Sb(r.expression); + if (ta(o)) { + for (var s = 0, u = r.arguments; s < u.length; s++) { + var h = u[s]; + yn(h); + } + return En; + } + if (!nn(o)) { + var z = e.getEffectiveBaseTypeNode(e.getContainingClass(r)); + if (z) { + var me = Xg(o, z.typeArguments, z); + return mm(r, me, i, t, 0); + } + } + return Fg(r); + } + var Me, $e = yn(r.expression); + if (e.isCallChain(r)) { + var tr = cv($e, r.expression); + Me = tr === $e ? 0 : e.isOutermostOptionalChain(r) ? 16 : 8, $e = tr; + } else + Me = 0; + if ($e = WC($e, r.expression, W5), $e === Bt) + return Co; + var dr = $s($e); + if (nn(dr)) + return Gl(r); + var Dr = ot(dr, 0), Qr = ot(dr, 1).length; + if (b0($e, dr, Dr.length, Qr)) + return !nn($e) && r.typeArguments && Xr(r, e.Diagnostics.Untyped_function_calls_may_not_accept_type_arguments), Fg(r); + if (!Dr.length) { + if (Qr) + Xr(r, e.Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new, Ot($e)); + else { + var li = void 0; + if (r.arguments.length === 1) { + var Ti = e.getSourceFileOfNode(r).text; + e.isLineBreak(Ti.charCodeAt(e.skipTrivia(Ti, r.expression.end, true) - 1)) && (li = e.createDiagnosticForNode(r.expression, e.Diagnostics.Are_you_missing_a_semicolon)); + } + rS(r.expression, dr, 0, li); + } + return Gl(r); + } + return t & 8 && !r.typeArguments && Dr.some(E7) ? (Xk(r, t), to) : Dr.some(function(Ci) { + return e.isInJSFile(Ci.declaration) && !!e.getJSDocClassTag(Ci.declaration); + }) ? (Xr(r, e.Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new, Ot($e)), Gl(r)) : mm(r, Dr, i, t, Me); + } + function E7(r) { + return !!(r.typeParameters && JS(yo(r))); + } + function b0(r, i, t, o) { + return ta(r) || ta(i) && !!(r.flags & 262144) || !t && !o && !(i.flags & 1048576) && !(bu(i).flags & 131072) && ao(r, br); + } + function C7(r, i, t) { + if (r.arguments && Ae < 1) { + var o = h0(r.arguments); + o >= 0 && Xr(r.arguments[o], e.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher); + } + var s = gm(r.expression); + if (s === Bt) + return Co; + if (s = $s(s), nn(s)) + return Gl(r); + if (ta(s)) + return r.typeArguments && Xr(r, e.Diagnostics.Untyped_function_calls_may_not_accept_type_arguments), Fg(r); + var u = ot(s, 1); + if (u.length) { + if (!k7(r, u[0])) + return Gl(r); + if (vk(u, function(Me) { + return !!(Me.flags & 4); + })) + return Xr(r, e.Diagnostics.Cannot_create_an_instance_of_an_abstract_class), Gl(r); + var h = s.symbol && e.getClassLikeDeclarationOfSymbol(s.symbol); + return h && e.hasSyntacticModifier(h, 128) ? (Xr(r, e.Diagnostics.Cannot_create_an_instance_of_an_abstract_class), Gl(r)) : mm(r, u, i, t, 0); + } + var z = ot(s, 0); + if (z.length) { + var me = mm(r, z, i, t, 0); + return n || (me.declaration && !Sl(me.declaration) && yo(me) !== Fi && Xr(r, e.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword), T_(me) === Fi && Xr(r, e.Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void)), me; + } + return rS(r.expression, s, 1), Gl(r); + } + function vk(r, i) { + return e.isArray(r) ? e.some(r, function(t) { + return vk(t, i); + }) : r.compositeKind === 1048576 ? e.some(r.compositeSignatures, i) : i(r); + } + function eS(r, i) { + var t = Qc(i); + if (!e.length(t)) + return false; + var o = t[0]; + if (o.flags & 2097152) { + for (var s = o.types, u = Wv(s), h = 0, z = 0, me = o.types; z < me.length; z++) { + var Me = me[z]; + if (!u[h] && e.getObjectFlags(Me) & 3 && (Me.symbol === r || eS(r, Me))) + return true; + h++; + } + return false; + } + return o.symbol === r ? true : eS(r, o); + } + function k7(r, i) { + if (!i || !i.declaration) + return true; + var t = i.declaration, o = e.getSelectedEffectiveModifierFlags(t, 24); + if (!o || t.kind !== 171) + return true; + var s = e.getClassLikeDeclarationOfSymbol(t.parent.symbol), u = go(t.parent.symbol); + if (!MS(r, s)) { + var h = e.getContainingClass(r); + if (h && o & 16) { + var z = Bd(h); + if (eS(t.parent.symbol, z)) + return true; + } + return o & 8 && Xr(r, e.Diagnostics.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration, Ot(u)), o & 16 && Xr(r, e.Diagnostics.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration, Ot(u)), false; + } + return true; + } + function yk(r, i, t) { + var o, s = t === 0, u = ag(i), h = u && ot(u, t).length > 0; + if (i.flags & 1048576) { + for (var z = i.types, me = false, Me = 0, $e = z; Me < $e.length; Me++) { + var tr = $e[Me], dr = ot(tr, t); + if (dr.length !== 0) { + if (me = true, o) + break; + } else if (o || (o = e.chainDiagnosticMessages(o, s ? e.Diagnostics.Type_0_has_no_call_signatures : e.Diagnostics.Type_0_has_no_construct_signatures, Ot(tr)), o = e.chainDiagnosticMessages(o, s ? e.Diagnostics.Not_all_constituents_of_type_0_are_callable : e.Diagnostics.Not_all_constituents_of_type_0_are_constructable, Ot(i))), me) + break; + } + me || (o = e.chainDiagnosticMessages(void 0, s ? e.Diagnostics.No_constituent_of_type_0_is_callable : e.Diagnostics.No_constituent_of_type_0_is_constructable, Ot(i))), o || (o = e.chainDiagnosticMessages(o, s ? e.Diagnostics.Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_other : e.Diagnostics.Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_with_each_other, Ot(i))); + } else + o = e.chainDiagnosticMessages(o, s ? e.Diagnostics.Type_0_has_no_call_signatures : e.Diagnostics.Type_0_has_no_construct_signatures, Ot(i)); + var Dr = s ? e.Diagnostics.This_expression_is_not_callable : e.Diagnostics.This_expression_is_not_constructable; + if (e.isCallExpression(r.parent) && r.parent.arguments.length === 0) { + var Qr = va(r).resolvedSymbol; + Qr && Qr.flags & 32768 && (Dr = e.Diagnostics.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without); + } + return { messageChain: e.chainDiagnosticMessages(o, Dr), relatedMessage: h ? e.Diagnostics.Did_you_forget_to_use_await : void 0 }; + } + function rS(r, i, t, o) { + var s = yk(r, i, t), u = s.messageChain, h = s.relatedMessage, z = e.createDiagnosticForNodeFromMessageChain(r, u); + if (h && e.addRelatedInfo(z, e.createDiagnosticForNode(r, h)), e.isCallExpression(r.parent)) { + var me = pk(r.parent, true), Me = me.start, $e = me.length; + z.start = Me, z.length = $e; + } + rn.add(z), hk(i, t, o ? e.addRelatedInfo(z, o) : z); + } + function hk(r, i, t) { + if (!!r.symbol) { + var o = Aa(r.symbol).originatingImport; + if (o && !e.isImportCall(o)) { + var s = ot(Jt(Aa(r.symbol).target), i); + if (!s || !s.length) + return; + e.addRelatedInfo(t, e.createDiagnosticForNode(o, e.Diagnostics.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead)); + } + } + } + function A7(r, i, t) { + var o = yn(r.tag), s = $s(o); + if (nn(s)) + return Gl(r); + var u = ot(s, 0), h = ot(s, 1).length; + if (b0(o, s, u.length, h)) + return Fg(r); + if (!u.length) { + if (e.isArrayLiteralExpression(r.parent)) { + var z = e.createDiagnosticForNode(r.tag, e.Diagnostics.It_is_likely_that_you_are_missing_a_comma_to_separate_these_two_template_expressions_They_form_a_tagged_template_expression_which_cannot_be_invoked); + return rn.add(z), Gl(r); + } + return rS(r.tag, s, 0), Gl(r); + } + return mm(r, u, i, t, 0); + } + function N7(r) { + switch (r.parent.kind) { + case 257: + case 226: + return e.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; + case 164: + return e.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; + case 167: + return e.Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression; + case 169: + case 172: + case 173: + return e.Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression; + default: + return e.Debug.fail(); + } + } + function P7(r, i, t) { + var o = yn(r.expression), s = $s(o); + if (nn(s)) + return Gl(r); + var u = ot(s, 0), h = ot(s, 1).length; + if (b0(o, s, u.length, h)) + return Fg(r); + if (w7(r, u)) { + var z = e.getTextOfNode(r.expression, false); + return Xr(r, e.Diagnostics._0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0, z), Gl(r); + } + var me = N7(r); + if (!u.length) { + var Me = yk(r.expression, s, 0), $e = e.chainDiagnosticMessages(Me.messageChain, me), tr = e.createDiagnosticForNodeFromMessageChain(r.expression, $e); + return Me.relatedMessage && e.addRelatedInfo(tr, e.createDiagnosticForNode(r.expression, Me.relatedMessage)), rn.add(tr), hk(s, 0, tr), Gl(r); + } + return mm(r, u, i, t, 0, me); + } + function S0(r, i) { + var t = Og(r), o = t && dc(t), s = o && qs(o, U.Element, 788968), u = s && Ur.symbolToEntityName(s, 788968, r), h = e.factory.createFunctionTypeNode(void 0, [e.factory.createParameterDeclaration(void 0, void 0, void 0, "props", void 0, Ur.typeToTypeNode(i, r))], u ? e.factory.createTypeReferenceNode(u, void 0) : e.factory.createKeywordTypeNode(130)), z = oo(1, "props"); + return z.type = i, Fu(h, void 0, void 0, [z], s ? go(s) : Pe, void 0, 1, 0); + } + function I7(r, i, t) { + if (dm(r.tagName)) { + var o = BC(r), s = S0(r, o); + return op(Rg(r.attributes, l0(s, r), void 0, 0), o, r.tagName, r.attributes), e.length(r.typeArguments) && (e.forEach(r.typeArguments, io), rn.add(e.createDiagnosticForNodeArray(e.getSourceFileOfNode(r), r.typeArguments, e.Diagnostics.Expected_0_type_arguments_but_got_1, 0, e.length(r.typeArguments)))), s; + } + var u = yn(r.tagName), h = $s(u); + if (nn(h)) + return Gl(r); + var z = LC(u, r); + return b0(u, h, z.length, 0) ? Fg(r) : z.length === 0 ? (Xr(r.tagName, e.Diagnostics.JSX_element_type_0_does_not_have_any_construct_or_call_signatures, e.getTextOfNode(r.tagName)), Gl(r)) : mm(r, z, i, t, 0); + } + function w7(r, i) { + return i.length && e.every(i, function(t) { + return t.minArgumentCount === 0 && !H(t) && t.parameters.length < _k(r, t); + }); + } + function O7(r, i, t) { + switch (r.kind) { + case 208: + return x7(r, i, t); + case 209: + return C7(r, i, t); + case 210: + return A7(r, i, t); + case 165: + return P7(r, i, t); + case 280: + case 279: + return I7(r, i, t); + } + throw e.Debug.assertNever(r, "Branch in 'resolveSignature' should be unreachable."); + } + function Mg(r, i, t) { + var o = va(r), s = o.resolvedSignature; + if (s && s !== to && !i) + return s; + o.resolvedSignature = to; + var u = O7(r, i, t || 0); + return u !== to && (o.resolvedSignature = ko === Ao ? u : s), u; + } + function Sl(r) { + var i; + if (!r || !e.isInJSFile(r)) + return false; + var t = e.isFunctionDeclaration(r) || e.isFunctionExpression(r) ? r : e.isVariableDeclaration(r) && r.initializer && e.isFunctionExpression(r.initializer) ? r.initializer : void 0; + if (t) { + if (e.getJSDocClassTag(r)) + return true; + var o = Et(t); + return !!(!((i = o == null ? void 0 : o.members) === null || i === void 0) && i.size); + } + return false; + } + function iS(r, i) { + var t, o; + if (i) { + var s = Aa(i); + if (!s.inferredClassSymbol || !s.inferredClassSymbol.has(y(r))) { + var u = e.isTransientSymbol(r) ? r : Yl(r); + return u.exports = u.exports || e.createSymbolTable(), u.members = u.members || e.createSymbolTable(), u.flags |= i.flags & 32, !((t = i.exports) === null || t === void 0) && t.size && gu(u.exports, i.exports), !((o = i.members) === null || o === void 0) && o.size && gu(u.members, i.members), (s.inferredClassSymbol || (s.inferredClassSymbol = new e.Map())).set(y(u), u), u; + } + return s.inferredClassSymbol.get(y(r)); + } + } + function F7(r) { + var i, t = r && T0(r, true), o = (i = t == null ? void 0 : t.exports) === null || i === void 0 ? void 0 : i.get("prototype"), s = (o == null ? void 0 : o.valueDeclaration) && M7(o.valueDeclaration); + return s ? Et(s) : void 0; + } + function T0(r, i) { + if (!!r.parent) { + var t, o; + if (e.isVariableDeclaration(r.parent) && r.parent.initializer === r) { + if (!e.isInJSFile(r) && !(e.isVarConst(r.parent) && e.isFunctionLikeDeclaration(r))) + return; + t = r.parent.name, o = r.parent; + } else if (e.isBinaryExpression(r.parent)) { + var s = r.parent, u = r.parent.operatorToken.kind; + if (u === 63 && (i || s.right === r)) + t = s.left, o = t; + else if ((u === 56 || u === 60) && (e.isVariableDeclaration(s.parent) && s.parent.initializer === s ? (t = s.parent.name, o = s.parent) : e.isBinaryExpression(s.parent) && s.parent.operatorToken.kind === 63 && (i || s.parent.right === s) && (t = s.parent.left, o = t), !t || !e.isBindableStaticNameExpression(t) || !e.isSameEntityName(t, s.left))) + return; + } else + i && e.isFunctionDeclaration(r) && (t = r.name, o = r); + if (!(!o || !t || !i && !e.getExpandoInitializer(r, e.isPrototypeAccess(t)))) + return Et(o); + } + } + function M7(r) { + if (!r.parent) + return false; + for (var i = r.parent; i && i.kind === 206; ) + i = i.parent; + if (i && e.isBinaryExpression(i) && e.isPrototypeAccess(i.left) && i.operatorToken.kind === 63) { + var t = e.getInitializerOfBinaryExpression(i); + return e.isObjectLiteralExpression(t) && t; + } + } + function L7(r, i) { + var t; + Wy(r, r.typeArguments); + var o = Mg(r, void 0, i); + if (o === to) + return wt; + if (x0(o, r), r.expression.kind === 106) + return Fi; + if (r.kind === 209) { + var s = o.declaration; + if (s && s.kind !== 171 && s.kind !== 175 && s.kind !== 180 && !e.isJSDocConstructSignature(s) && !Sl(s)) + return n && Xr(r, e.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type), Oe; + } + if (e.isInJSFile(r) && xk(r)) + return Hm(r.arguments[0]); + var u = yo(o); + if (u.flags & 12288 && Dk(r)) + return CD(e.walkUpParenthesizedExpressions(r.parent)); + if (r.kind === 208 && !r.questionDotToken && r.parent.kind === 238 && u.flags & 16384 && Yc(o)) { + if (!e.isDottedName(r.expression)) + Xr(r.expression, e.Diagnostics.Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name); + else if (!i0(r)) { + var h = Xr(r.expression, e.Diagnostics.Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation); + gy(r.expression, h); + } + } + if (e.isInJSFile(r)) { + var z = T0(r, false); + if (!((t = z == null ? void 0 : z.exports) === null || t === void 0) && t.size) { + var me = rs(z, z.exports, e.emptyArray, e.emptyArray, e.emptyArray); + return me.objectFlags |= 4096, Do([u, me]); + } + } + return u; + } + function x0(r, i) { + if (r.declaration && r.declaration.flags & 268435456) { + var t = ky(i), o = e.tryGetPropertyAccessOrIdentifierToString(e.getInvokedExpression(i)); + vp(t, r.declaration, o, Ml(r)); + } + } + function ky(r) { + switch (r = e.skipParentheses(r), r.kind) { + case 208: + case 165: + case 209: + return ky(r.expression); + case 210: + return ky(r.tag); + case 280: + case 279: + return ky(r.tagName); + case 207: + return r.argumentExpression; + case 206: + return r.name; + case 178: + var i = r; + return e.isQualifiedName(i.typeName) ? i.typeName.right : i; + default: + return r; + } + } + function Dk(r) { + if (!e.isCallExpression(r)) + return false; + var i = r.expression; + if (e.isPropertyAccessExpression(i) && i.name.escapedText === "for" && (i = i.expression), !e.isIdentifier(i) || i.escapedText !== "Symbol") + return false; + var t = Ex(false); + return t ? t === es(i, "Symbol", 111551, void 0, void 0, false) : false; + } + function R7(r) { + if (CL(r), r.arguments.length === 0) + return Py(r, Oe); + for (var i = r.arguments[0], t = Os(i), o = r.arguments.length > 1 ? Os(r.arguments[1]) : void 0, s = 2; s < r.arguments.length; ++s) + Os(r.arguments[s]); + if ((t.flags & 32768 || t.flags & 65536 || !ao(t, Li)) && Xr(i, e.Diagnostics.Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0, Ot(t)), o) { + var u = xx(true); + u !== Ba && zc(o, Uh(u, 32768), r.arguments[1]); + } + var h = ac(r, i); + if (h) { + var z = Wf(h, i, true, false); + if (z) + return Py(r, Sk(Jt(z), z, h, i) || Tk(Jt(z), z, h, i)); + } + return Py(r, Oe); + } + function bk(r, i, t) { + var o = e.createSymbolTable(), s = oo(2097152, "default"); + return s.parent = i, s.nameType = Bu("default"), s.aliasTarget = os(r), o.set("default", s), rs(t, o, e.emptyArray, e.emptyArray, e.emptyArray); + } + function Sk(r, i, t, o) { + var s = Uf(o); + if (s && r && !nn(r)) { + var u = r; + if (!u.defaultOnlyType) { + var h = bk(i, t); + u.defaultOnlyType = h; + } + return u.defaultOnlyType; + } + } + function Tk(r, i, t, o) { + var s; + if (Cr && r && !nn(r)) { + var u = r; + if (!u.syntheticType) { + var h = (s = t.declarations) === null || s === void 0 ? void 0 : s.find(e.isSourceFile), z = L_(h, t, false, o); + if (z) { + var me = oo(2048, "__type"), Me = bk(i, t, me); + me.type = Me, u.syntheticType = Dy(r) ? Vp(r, Me, me, 0, false) : Me; + } else + u.syntheticType = r; + } + return u.syntheticType; + } + return r; + } + function xk(r) { + if (!e.isRequireCall(r, true)) + return false; + if (!e.isIdentifier(r.expression)) + return e.Debug.fail(); + var i = es(r.expression, r.expression.escapedText, 111551, void 0, void 0, true); + if (i === qr) + return true; + if (i.flags & 2097152) + return false; + var t = i.flags & 16 ? 256 : i.flags & 3 ? 254 : 0; + if (t !== 0) { + var o = e.getDeclarationOfKind(i, t); + return !!o && !!(o.flags & 16777216); + } + return false; + } + function B7(r) { + Y9(r) || Wy(r, r.typeArguments), Ae < 2 && fc(r, 262144); + var i = Mg(r); + return x0(i, r), yo(i); + } + function J7(r) { + if (r.kind === 211) { + var i = e.getSourceFileOfNode(r); + i && e.fileExtensionIsOneOf(i.fileName, [".cts", ".mts"]) && Tt(r, e.Diagnostics.This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Use_an_as_expression_instead); + } + return Ck(r, r.type, r.expression); + } + function Ek(r) { + switch (r.kind) { + case 10: + case 14: + case 8: + case 9: + case 110: + case 95: + case 204: + case 205: + case 223: + return true; + case 212: + return Ek(r.expression); + case 219: + var i = r.operator, t = r.operand; + return i === 40 && (t.kind === 8 || t.kind === 9) || i === 39 && t.kind === 8; + case 206: + case 207: + var o = r.expression, s = Bd(o).symbol; + return s && s.flags & 2097152 && (s = Ps(s)), !!(s && s.flags & 384 && as(s) === 1); + } + return false; + } + function Ck(r, i, t, o) { + var s = yn(t, o); + if (e.isConstTypeReference(i)) + return Ek(t) || Xr(t, e.Diagnostics.A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals), jc(s); + io(i), s = fm(Kl(s)); + var u = Va(i); + return nn(u) || fe(function() { + var h = $c(s); + cm(u, h) || mE(s, u, r, e.Diagnostics.Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first); + }), u; + } + function j7(r) { + var i = yn(r.expression), t = cv(i, r.expression); + return zh(C_(t), r, t !== i); + } + function U7(r) { + return r.flags & 32 ? j7(r) : C_(yn(r.expression)); + } + function kk(r) { + lA(r); + var i = r.kind === 228 ? yn(r.expression) : e.isThisIdentifier(r.exprName) ? yy(r.exprName) : yn(r.exprName), t = r.typeArguments; + if (i === Bt || nn(i) || !e.some(t)) + return i; + var o = false, s, u = z(i), h = o ? s : i; + return h && rn.add(e.createDiagnosticForNodeArray(e.getSourceFileOfNode(r), t, e.Diagnostics.Type_0_has_no_signatures_for_which_the_type_argument_list_is_applicable, Ot(h))), u; + function z(Me) { + var $e = false, tr = false, dr = Dr(Me); + return o || (o = tr), $e && !tr && (s != null || (s = Me)), dr; + function Dr(Qr) { + if (Qr.flags & 524288) { + var li = Ru(Qr), Ti = me(li.callSignatures), Ci = me(li.constructSignatures); + if ($e || ($e = li.callSignatures.length !== 0 || li.constructSignatures.length !== 0), tr || (tr = Ti.length !== 0 || Ci.length !== 0), Ti !== li.callSignatures || Ci !== li.constructSignatures) { + var $i = rs(void 0, li.members, Ti, Ci, li.indexInfos); + return $i.objectFlags |= 8388608, $i.node = r, $i; + } + } else if (Qr.flags & 58982400) { + var Zi = uc(Qr); + if (Zi) { + var qt = Dr(Zi); + if (qt !== Zi) + return qt; + } + } else { + if (Qr.flags & 1048576) + return Ss(Qr, z); + if (Qr.flags & 2097152) + return Do(e.sameMap(Qr.types, Dr)); + } + return Qr; + } + } + function me(Me) { + var $e = e.filter(Me, function(tr) { + return !!tr.typeParameters && Xb(tr, t); + }); + return e.sameMap($e, function(tr) { + var dr = $b(tr, t, true); + return dr ? Xm(tr, dr, e.isInJSFile(tr.declaration)) : tr; + }); + } + } + function z7(r) { + return pL(r), r.keywordToken === 103 ? tS(r) : r.keywordToken === 100 ? W7(r) : e.Debug.assertNever(r.keywordToken); + } + function Ak(r) { + switch (r.keywordToken) { + case 100: + return Tx(); + case 103: + var i = tS(r); + return nn(i) ? Pe : H7(i); + default: + e.Debug.assertNever(r.keywordToken); + } + } + function tS(r) { + var i = e.getNewTargetContainer(r); + if (i) + if (i.kind === 171) { + var t = Et(i.parent); + return Jt(t); + } else { + var t = Et(i); + return Jt(t); + } + else + return Xr(r, e.Diagnostics.Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor, "new.target"), Pe; + } + function W7(r) { + er === e.ModuleKind.Node16 || er === e.ModuleKind.NodeNext ? e.getSourceFileOfNode(r).impliedNodeFormat !== e.ModuleKind.ESNext && Xr(r, e.Diagnostics.The_import_meta_meta_property_is_not_allowed_in_files_which_will_build_into_CommonJS_output) : er < e.ModuleKind.ES2020 && er !== e.ModuleKind.System && Xr(r, e.Diagnostics.The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_es2020_es2022_esnext_system_node16_or_nodenext); + var i = e.getSourceFileOfNode(r); + return e.Debug.assert(!!(i.flags & 4194304), "Containing file is missing import meta node flag."), r.name.escapedText === "meta" ? Sx() : Pe; + } + function mv(r) { + var i = Jt(r); + if (Ye) { + var t = r.valueDeclaration; + if (t && e.hasInitializer(t)) + return i_(i); + } + return i; + } + function E0(r) { + return e.Debug.assert(e.isIdentifier(r.name)), r.name.escapedText; + } + function vm(r, i, t) { + var o = r.parameters.length - (H(r) ? 1 : 0); + if (i < o) + return r.parameters[i].escapedName; + var s = r.parameters[o] || xe, u = t || Jt(s); + if (Yn(u)) { + var h = u.target.labeledElementDeclarations, z = i - o; + return h && E0(h[z]) || s.escapedName + "_" + z; + } + return s.escapedName; + } + function q7(r, i) { + var t; + if (((t = r.declaration) === null || t === void 0 ? void 0 : t.kind) !== 317) { + var o = r.parameters.length - (H(r) ? 1 : 0); + if (i < o) { + var s = r.parameters[i]; + return Nk(s) ? [s.escapedName, false] : void 0; + } + var u = r.parameters[o] || xe; + if (!!Nk(u)) { + var h = Jt(u); + if (Yn(h)) { + var z = h.target.labeledElementDeclarations, me = i - o, Me = z == null ? void 0 : z[me], $e = !!(Me != null && Me.dotDotDotToken); + return Me ? [E0(Me), $e] : void 0; + } + if (i === o) + return [u.escapedName, true]; + } + } + } + function Nk(r) { + return r.valueDeclaration && e.isParameter(r.valueDeclaration) && e.isIdentifier(r.valueDeclaration.name); + } + function Pk(r) { + return r.kind === 197 || e.isParameter(r) && r.name && e.isIdentifier(r.name); + } + function V7(r, i) { + var t = r.parameters.length - (H(r) ? 1 : 0); + if (i < t) { + var o = r.parameters[i].valueDeclaration; + return o && Pk(o) ? o : void 0; + } + var s = r.parameters[t] || xe, u = Jt(s); + if (Yn(u)) { + var h = u.target.labeledElementDeclarations, z = i - t; + return h && h[z]; + } + return s.valueDeclaration && Pk(s.valueDeclaration) ? s.valueDeclaration : void 0; + } + function $u(r, i) { + return Ld(r, i) || Oe; + } + function Ld(r, i) { + var t = r.parameters.length - (H(r) ? 1 : 0); + if (i < t) + return mv(r.parameters[i]); + if (H(r)) { + var o = Jt(r.parameters[t]), s = i - t; + if (!Yn(o) || o.target.hasRestElement || s < o.target.fixedLength) + return Jc(o, If(s)); + } + } + function ym(r, i) { + var t = Wc(r), o = Hl(r), s = vv(r); + if (s && i >= t - 1) + return i === t - 1 ? s : Zs(Jc(s, nt)); + for (var u = [], h = [], z = [], me = i; me < t; me++) { + !s || me < t - 1 ? (u.push($u(r, me)), h.push(me < o ? 1 : 2)) : (u.push(s), h.push(8)); + var Me = V7(r, me); + Me && z.push(Me); + } + return Wl(u, h, false, e.length(z) === e.length(u) ? z : void 0); + } + function Wc(r) { + var i = r.parameters.length; + if (H(r)) { + var t = Jt(r.parameters[i - 1]); + if (Yn(t)) + return i + t.target.fixedLength - (t.target.hasRestElement ? 0 : 1); + } + return i; + } + function Hl(r, i) { + var t = i & 1, o = i & 2; + if (o || r.resolvedMinArgumentCount === void 0) { + var s = void 0; + if (H(r)) { + var u = Jt(r.parameters[r.parameters.length - 1]); + if (Yn(u)) { + var h = e.findIndex(u.target.elementFlags, function($e) { + return !($e & 1); + }), z = h < 0 ? u.target.fixedLength : h; + z > 0 && (s = r.parameters.length - 1 + z); + } + } + if (s === void 0) { + if (!t && r.flags & 32) + return 0; + s = r.minArgumentCount; + } + if (o) + return s; + for (var me = s - 1; me >= 0; me--) { + var Me = $u(r, me); + if (ec(Me, nk).flags & 131072) + break; + s = me; + } + r.resolvedMinArgumentCount = s; + } + return r.resolvedMinArgumentCount; + } + function Xl(r) { + if (H(r)) { + var i = Jt(r.parameters[r.parameters.length - 1]); + return !Yn(i) || i.target.hasRestElement; + } + return false; + } + function vv(r) { + if (H(r)) { + var i = Jt(r.parameters[r.parameters.length - 1]); + if (!Yn(i)) + return i; + if (i.target.hasRestElement) + return Zm(i, i.target.fixedLength); + } + } + function yv(r) { + var i = vv(r); + return i && !Tu(i) && !ta(i) && (bu(i).flags & 131072) === 0 ? i : void 0; + } + function aS(r) { + return nS(r, ui); + } + function nS(r, i) { + return r.parameters.length > 0 ? $u(r, 0) : i; + } + function K7(r, i, t) { + for (var o = r.parameters.length - (H(r) ? 1 : 0), s = 0; s < o; s++) { + var u = r.parameters[s].valueDeclaration; + if (u.type) { + var h = e.getEffectiveTypeAnnotationNode(u); + h && df(t.inferences, Va(h), $u(i, s)); + } + } + var z = vv(i); + if (z && z.flags & 262144) { + var me = Tg(i, t.nonFixingMapper); + Ik(r, me); + var Me = Wc(i) - 1; + df(t.inferences, ym(r, Me), z); + } + } + function Ik(r, i) { + if (i.typeParameters) + if (!r.typeParameters) + r.typeParameters = i.typeParameters; + else + return; + if (i.thisParameter) { + var t = r.thisParameter; + (!t || t.valueDeclaration && !t.valueDeclaration.type) && (t || (r.thisParameter = eg(i.thisParameter, void 0)), Ay(r.thisParameter, Jt(i.thisParameter))); + } + for (var o = r.parameters.length - (H(r) ? 1 : 0), s = 0; s < o; s++) { + var t = r.parameters[s]; + if (!e.getEffectiveTypeAnnotationNode(t.valueDeclaration)) { + var u = Ld(i, s); + Ay(t, u); + } + } + if (H(r)) { + var t = e.last(r.parameters); + if (t.valueDeclaration ? !e.getEffectiveTypeAnnotationNode(t.valueDeclaration) : !!(e.getCheckFlags(t) & 65536)) { + var u = ym(i, o); + Ay(t, u); + } + } + } + function G7(r) { + r.thisParameter && Ay(r.thisParameter); + for (var i = 0, t = r.parameters; i < t.length; i++) { + var o = t[i]; + Ay(o); + } + } + function Ay(r, i) { + var t = Aa(r); + if (t.type) + i && e.Debug.assertEqual(t.type, i, "Parameter symbol already has a cached type which differs from newly assigned type"); + else { + var o = r.valueDeclaration; + t.type = i || (o ? sc(o, true) : Jt(r)), o && o.name.kind !== 79 && (t.type === gr && (t.type = Qu(o.name)), wk(o.name, t.type)); + } + } + function wk(r, i) { + for (var t = 0, o = r.elements; t < o.length; t++) { + var s = o[t]; + if (!e.isOmittedExpression(s)) { + var u = uf(s, i); + s.name.kind === 79 ? Aa(Et(s)).type = u : wk(s.name, u); + } + } + } + function Ny(r) { + var i = ay(true); + return i !== kn ? (r = k_(Ev(r)) || gr, Yf(i, [r])) : gr; + } + function Ok(r) { + var i = kx(true); + return i !== kn ? (r = k_(Ev(r)) || gr, Yf(i, [r])) : gr; + } + function Py(r, i) { + var t = Ny(i); + return t === gr ? (Xr(r, e.isImportCall(r) ? e.Diagnostics.A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option : e.Diagnostics.An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option), Pe) : (nD(true) || Xr(r, e.isImportCall(r) ? e.Diagnostics.A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option : e.Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option), t); + } + function H7(r) { + var i = oo(0, "NewTargetExpression"), t = oo(4, "target", 8); + t.parent = i, t.type = r; + var o = e.createSymbolTable([t]); + return i.members = o, rs(i, o, e.emptyArray, e.emptyArray, e.emptyArray); + } + function C0(r, i) { + if (!r.body) + return Pe; + var t = e.getFunctionFlags(r), o = (t & 2) !== 0, s = (t & 1) !== 0, u, h, z, me = Fi; + if (r.body.kind !== 235) + u = Os(r.body, i && i & -9), o && (u = Ev(xv(u, false, r, e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member))); + else if (s) { + var Me = Bk(r, i); + Me ? Me.length > 0 && (u = Pa(Me, 2)) : me = ui; + var $e = X7(r, i), tr = $e.yieldTypes, dr = $e.nextTypes; + h = e.some(tr) ? Pa(tr, 2) : void 0, z = e.some(dr) ? Do(dr) : void 0; + } else { + var Dr = Bk(r, i); + if (!Dr) + return t & 2 ? Py(r, ui) : ui; + if (Dr.length === 0) + return t & 2 ? Py(r, Fi) : Fi; + u = Pa(Dr, 2); + } + if (u || h || z) { + if (h && Kh(r, h, 3), u && Kh(r, u, 1), z && Kh(r, z, 2), u && Vl(u) || h && Vl(h) || z && Vl(z)) { + var Qr = Pb(r), li = Qr ? Qr === yl(r) ? s ? void 0 : u : c0(yo(Qr), r) : void 0; + s ? (h = XD(h, li, 0, o), u = XD(u, li, 1, o), z = XD(z, li, 2, o)) : u = kw(u, li, o); + } + h && (h = $c(h)), u && (u = $c(u)), z && (z = $c(z)); + } + return s ? Fk(h || ui, u || me, z || xC(2, r) || gr, o) : o ? Ny(u || me) : u || me; + } + function Fk(r, i, t, o) { + var s = o ? St : pa, u = s.getGlobalGeneratorType(false); + if (r = s.resolveIterationType(r, void 0) || gr, i = s.resolveIterationType(i, void 0) || gr, t = s.resolveIterationType(t, void 0) || gr, u === kn) { + var h = s.getGlobalIterableIteratorType(false), z = h !== kn ? x6(h, s) : void 0, me = z ? z.returnType : Oe, Me = z ? z.nextType : Tr; + return ao(i, me) && ao(Me, t) ? h !== kn ? $m(h, [r]) : (s.getGlobalIterableIteratorType(true), Ba) : (s.getGlobalGeneratorType(true), Ba); + } + return $m(u, [r, i, t]); + } + function X7(r, i) { + var t = [], o = [], s = (e.getFunctionFlags(r) & 2) !== 0; + return e.forEachYieldExpression(r.body, function(u) { + var h = u.expression ? yn(u.expression, i) : vi; + e.pushIfUnique(t, Mk(u, h, Oe, s)); + var z; + if (u.asteriskToken) { + var me = Jy(h, s ? 19 : 17, u.expression); + z = me && me.nextType; + } else + z = ou(u); + z && e.pushIfUnique(o, z); + }), { yieldTypes: t, nextTypes: o }; + } + function Mk(r, i, t, o) { + var s = r.expression || r, u = r.asteriskToken ? N_(o ? 19 : 17, i, t, s) : i; + return o ? ag(u, s, r.asteriskToken ? e.Diagnostics.Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member : e.Diagnostics.Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member) : u; + } + function oS(r, i, t, o) { + var s = 0; + if (o) { + for (var u = i; u < t.length; u++) + s |= oe.get(t[u]) || 32768; + for (var u = r; u < i; u++) + s &= ~(oe.get(t[u]) || 0); + for (var u = 0; u < r; u++) + s |= oe.get(t[u]) || 32768; + } else { + for (var u = r; u < i; u++) + s |= G.get(t[u]) || 128; + for (var u = 0; u < r; u++) + s &= ~(G.get(t[u]) || 0); + } + return s; + } + function Lk(r) { + var i = va(r); + return i.isExhaustive !== void 0 ? i.isExhaustive : i.isExhaustive = Q7(r); + } + function Q7(r) { + if (r.expression.kind === 216) { + var i = Gs(r.expression.expression), t = cC(r, false), o = oS(0, 0, t, true), s = uc(i) || i; + return s.flags & 3 ? (556800 & o) === 556800 : !!(ec(s, function(z) { + return (cp(z) & o) === o; + }).flags & 131072); + } + var u = Gs(r.expression); + if (!Cg(u)) + return false; + var h = $h(r); + return !h.length || e.some(h, Ew) ? false : v8(Ss(u, jc), h); + } + function Rk(r) { + return r.endFlowNode && my(r.endFlowNode); + } + function Bk(r, i) { + var t = e.getFunctionFlags(r), o = [], s = Rk(r), u = false; + if (e.forEachReturnStatement(r.body, function(h) { + var z = h.expression; + if (z) { + var me = Os(z, i && i & -9); + t & 2 && (me = Ev(xv(me, false, r, e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member))), me.flags & 131072 && (u = true), e.pushIfUnique(o, me); + } else + s = true; + }), !(o.length === 0 && !s && (u || Y7(r)))) + return Ye && o.length && s && !(Sl(r) && o.some(function(h) { + return h.symbol === r.symbol; + })) && e.pushIfUnique(o, Tr), o; + } + function Y7(r) { + switch (r.kind) { + case 213: + case 214: + return true; + case 169: + return r.parent.kind === 205; + default: + return false; + } + } + function sS(r, i) { + fe(t); + return; + function t() { + var o = e.getFunctionFlags(r), s = i && B0(i, o); + if (!(s && fs5(s, 16385)) && !(r.kind === 168 || e.nodeIsMissing(r.body) || r.body.kind !== 235 || !Rk(r))) { + var u = r.flags & 512, h = e.getEffectiveReturnTypeNode(r) || r; + if (s && s.flags & 131072) + Xr(h, e.Diagnostics.A_function_returning_never_cannot_have_a_reachable_end_point); + else if (s && !u) + Xr(h, e.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); + else if (s && Ye && !ao(Tr, s)) + Xr(h, e.Diagnostics.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined); + else if (ye.noImplicitReturns) { + if (!s) { + if (!u) + return; + var z = yo(yl(r)); + if (I6(r, z)) + return; + } + Xr(h, e.Diagnostics.Not_all_code_paths_return_a_value); + } + } + } + } + function Jk(r, i) { + if (e.Debug.assert(r.kind !== 169 || e.isObjectLiteralMethod(r)), xm(r), e.isFunctionExpression(r) && Sm(r, r.name), i && i & 4 && Ju(r)) { + if (!e.getEffectiveReturnTypeNode(r) && !e.hasContextSensitiveParameters(r)) { + var t = dv(r); + if (t && Id(yo(t))) { + var o = va(r); + if (o.contextFreeType) + return o.contextFreeType; + var s = C0(r, i), u = Fu(void 0, void 0, void 0, e.emptyArray, s, void 0, 0, 0), h = rs(r.symbol, we, [u], e.emptyArray, e.emptyArray); + return h.objectFlags |= 262144, o.contextFreeType = h; + } + } + return xn; + } + var z = X0(r); + return !z && r.kind === 213 && WS(r), $7(r, i), Jt(Et(r)); + } + function $7(r, i) { + var t = va(r); + if (!(t.flags & 1024)) { + var o = dv(r); + if (!(t.flags & 1024)) { + t.flags |= 1024; + var s = e.firstOrUndefined(ot(Jt(Et(r)), 0)); + if (!s) + return; + if (Ju(r)) + if (o) { + var u = wg(r); + i && i & 2 && K7(s, o, u); + var h = u ? Tg(o, u.mapper) : o; + Ik(s, h); + } else + G7(s); + if (o && !yg(r) && !s.resolvedReturnType) { + var z = C0(r, i); + s.resolvedReturnType || (s.resolvedReturnType = z); + } + Dv(r); + } + } + } + function Z7(r) { + e.Debug.assert(r.kind !== 169 || e.isObjectLiteralMethod(r)); + var i = e.getFunctionFlags(r), t = yg(r); + if (sS(r, t), r.body) + if (e.getEffectiveReturnTypeNode(r) || yo(yl(r)), r.body.kind === 235) + io(r.body); + else { + var o = yn(r.body), s = t && B0(t, i); + if (s) + if ((i & 3) === 2) { + var u = xv(o, false, r.body, e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); + op(u, s, r.body, r.body); + } else + op(o, s, r.body, r.body); + } + } + function k0(r, i, t, o) { + if (o === void 0 && (o = false), !ao(i, At)) { + var s = o && Sv(i); + return zu(r, !!s && ao(s, At), t), false; + } + return true; + } + function eO(r) { + if (!e.isCallExpression(r) || !e.isBindableObjectDefinePropertyCall(r)) + return false; + var i = Os(r.arguments[2]), t = da(i, "value"); + if (t) { + var o = bi(i, "writable"), s = o && Jt(o); + if (!s || s === xt || s === ut) + return true; + if (o && o.valueDeclaration && e.isPropertyAssignment(o.valueDeclaration)) { + var u = o.valueDeclaration.initializer, h = yn(u); + if (h === xt || h === ut) + return true; + } + return false; + } + var z = bi(i, "set"); + return !z; + } + function Zu(r) { + return !!(e.getCheckFlags(r) & 8 || r.flags & 4 && e.getDeclarationModifierFlagsFromSymbol(r) & 64 || r.flags & 3 && p0(r) & 2 || r.flags & 98304 && !(r.flags & 65536) || r.flags & 8 || e.some(r.declarations, eO)); + } + function jk(r, i, t) { + var o, s; + if (t === 0) + return false; + if (Zu(i)) { + if (i.flags & 4 && e.isAccessExpression(r) && r.expression.kind === 108) { + var u = e.getContainingFunction(r); + if (!(u && (u.kind === 171 || Sl(u)))) + return true; + if (i.valueDeclaration) { + var h = e.isBinaryExpression(i.valueDeclaration), z = u.parent === i.valueDeclaration.parent, me = u === i.valueDeclaration.parent, Me = h && ((o = i.parent) === null || o === void 0 ? void 0 : o.valueDeclaration) === u.parent, $e = h && ((s = i.parent) === null || s === void 0 ? void 0 : s.valueDeclaration) === u, tr = z || me || Me || $e; + return !tr; + } + } + return true; + } + if (e.isAccessExpression(r)) { + var dr = e.skipParentheses(r.expression); + if (dr.kind === 79) { + var Dr = va(dr).resolvedSymbol; + if (Dr.flags & 2097152) { + var Qr = ru(Dr); + return !!Qr && Qr.kind === 268; + } + } + } + return false; + } + function hv(r, i, t) { + var o = e.skipOuterExpressions(r, 7); + return o.kind !== 79 && !e.isAccessExpression(o) ? (Xr(r, i), false) : o.flags & 32 ? (Xr(r, t), false) : true; + } + function rO(r) { + yn(r.expression); + var i = e.skipParentheses(r.expression); + if (!e.isAccessExpression(i)) + return Xr(i, e.Diagnostics.The_operand_of_a_delete_operator_must_be_a_property_reference), Ii; + e.isPropertyAccessExpression(i) && e.isPrivateIdentifier(i.name) && Xr(i, e.Diagnostics.The_operand_of_a_delete_operator_cannot_be_a_private_identifier); + var t = va(i), o = cu(t.resolvedSymbol); + return o && (Zu(o) && Xr(i, e.Diagnostics.The_operand_of_a_delete_operator_cannot_be_a_read_only_property), iO(i, o)), Ii; + } + function iO(r, i) { + var t = Jt(i); + Ye && !(t.flags & 131075) && !(yr ? i.flags & 16777216 : ju(t) & 32768) && Xr(r, e.Diagnostics.The_operand_of_a_delete_operator_must_be_optional); + } + function tO(r) { + return yn(r.expression), ho; + } + function aO(r) { + return yn(r.expression), vi; + } + function nO(r) { + var i = e.getContainingFunctionOrClassStaticBlock(r); + if (i && e.isClassStaticBlockDeclaration(i)) + Xr(r, e.Diagnostics.Await_expression_cannot_be_used_inside_a_class_static_block); + else if (!(r.flags & 32768)) + if (e.isInTopLevelContext(r)) { + var t = e.getSourceFileOfNode(r); + if (!Jd(t)) { + var o = void 0; + if (!e.isEffectiveExternalModule(t, ye)) { + o != null || (o = e.getSpanOfTokenAtPosition(t, r.pos)); + var s = e.createFileDiagnostic(t, o.start, o.length, e.Diagnostics.await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module); + rn.add(s); + } + switch (er) { + case e.ModuleKind.Node16: + case e.ModuleKind.NodeNext: + if (t.impliedNodeFormat === e.ModuleKind.CommonJS) { + o != null || (o = e.getSpanOfTokenAtPosition(t, r.pos)), rn.add(e.createFileDiagnostic(t, o.start, o.length, e.Diagnostics.The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level)); + break; + } + case e.ModuleKind.ES2022: + case e.ModuleKind.ESNext: + case e.ModuleKind.System: + if (Ae >= 4) + break; + default: + o != null || (o = e.getSpanOfTokenAtPosition(t, r.pos)), rn.add(e.createFileDiagnostic(t, o.start, o.length, e.Diagnostics.Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher)); + break; + } + } + } else { + var t = e.getSourceFileOfNode(r); + if (!Jd(t)) { + var o = e.getSpanOfTokenAtPosition(t, r.pos), s = e.createFileDiagnostic(t, o.start, o.length, e.Diagnostics.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules); + if (i && i.kind !== 171 && (e.getFunctionFlags(i) & 2) === 0) { + var u = e.createDiagnosticForNode(i, e.Diagnostics.Did_you_mean_to_mark_this_function_as_async); + e.addRelatedInfo(s, u); + } + rn.add(s); + } + } + xb(r) && Xr(r, e.Diagnostics.await_expressions_cannot_be_used_in_a_parameter_initializer); + } + function oO(r) { + fe(function() { + return nO(r); + }); + var i = yn(r.expression), t = xv(i, true, r, e.Diagnostics.Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); + return t === i && !nn(t) && !(i.flags & 3) && Ls(false, e.createDiagnosticForNode(r, e.Diagnostics.await_has_no_effect_on_the_type_of_this_expression)), t; + } + function sO(r) { + var i = yn(r.operand); + if (i === Bt) + return Bt; + switch (r.operand.kind) { + case 8: + switch (r.operator) { + case 40: + return Sg(If(-r.operand.text)); + case 39: + return Sg(If(+r.operand.text)); + } + break; + case 9: + if (r.operator === 40) + return Sg(ED({ negative: true, base10Value: e.parsePseudoBigInt(r.operand.text) })); + } + switch (r.operator) { + case 39: + case 40: + case 54: + return bl(i, r.operand), A0(i, 12288) && Xr(r.operand, e.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol, e.tokenToString(r.operator)), r.operator === 39 ? (fs5(i, 2112) && Xr(r.operand, e.Diagnostics.Operator_0_cannot_be_applied_to_type_1, e.tokenToString(r.operator), Ot(Kl(i))), nt) : cS(i); + case 53: + Bg(r.operand); + var t = cp(i) & 12582912; + return t === 4194304 ? xt : t === 8388608 ? Dt : Ii; + case 45: + case 46: + var o = k0(r.operand, bl(i, r.operand), e.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type); + return o && hv(r.operand, e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access, e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access), cS(i); + } + return Pe; + } + function cO(r) { + var i = yn(r.operand); + if (i === Bt) + return Bt; + var t = k0(r.operand, bl(i, r.operand), e.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type); + return t && hv(r.operand, e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access, e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access), cS(i); + } + function cS(r) { + return fs5(r, 2112) ? Ns(r, 3) || fs5(r, 296) ? At : Mt : nt; + } + function A0(r, i) { + if (fs5(r, i)) + return true; + var t = Hd(r); + return !!t && fs5(t, i); + } + function fs5(r, i) { + if (r.flags & i) + return true; + if (r.flags & 3145728) + for (var t = r.types, o = 0, s = t; o < s.length; o++) { + var u = s[o]; + if (fs5(u, i)) + return true; + } + return false; + } + function Ns(r, i, t) { + return r.flags & i ? true : t && r.flags & 114691 ? false : !!(i & 296) && ao(r, nt) || !!(i & 2112) && ao(r, Mt) || !!(i & 402653316) && ao(r, Li) || !!(i & 528) && ao(r, Ii) || !!(i & 16384) && ao(r, Fi) || !!(i & 131072) && ao(r, ui) || !!(i & 65536) && ao(r, Wi) || !!(i & 32768) && ao(r, Tr) || !!(i & 4096) && ao(r, Ki) || !!(i & 67108864) && ao(r, Oi); + } + function Lg(r, i, t) { + return r.flags & 1048576 ? e.every(r.types, function(o) { + return Lg(o, i, t); + }) : Ns(r, i, t); + } + function uS(r) { + return !!(e.getObjectFlags(r) & 16) && !!r.symbol && lS(r.symbol); + } + function lS(r) { + return (r.flags & 128) !== 0; + } + function uO(r, i, t, o) { + return t === Bt || o === Bt ? Bt : (!ta(t) && Lg(t, 131068) && Xr(r, e.Diagnostics.The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter), ta(o) || RS(o) || E_(o, br) || Xr(i, e.Diagnostics.The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type), Ii); + } + function lO(r, i, t, o) { + if (t === Bt || o === Bt) + return Bt; + if (e.isPrivateIdentifier(r)) { + if (Ae < 99 && fc(r, 2097152), !va(r).resolvedSymbol && e.getContainingClass(r)) { + var s = Wb(r, o.symbol, true); + YC(r, o, s); + } + } else + t = bl(t, r), Lg(t, 402665900) || Ns(t, 407109632) || Xr(r, e.Diagnostics.The_left_hand_side_of_an_in_expression_must_be_a_private_identifier_or_of_type_any_string_number_or_symbol); + o = bl(o, i); + var u = Q_(o); + return (!Lg(o, 126091264) || u && (Ns(o, 3145728) && !Lg(u, 126091264) || !fs5(u, 126615552))) && Xr(i, e.Diagnostics.The_right_hand_side_of_an_in_expression_must_not_be_a_primitive), Ii; + } + function fO(r, i, t) { + var o = r.properties; + if (Ye && o.length === 0) + return bl(i, r); + for (var s = 0; s < o.length; s++) + Uk(r, i, s, o, t); + return i; + } + function Uk(r, i, t, o, s) { + s === void 0 && (s = false); + var u = r.properties, h = u[t]; + if (h.kind === 296 || h.kind === 297) { + var z = h.name, me = Z_(z); + if (_f(me)) { + var Me = pf(me), $e = bi(i, Me); + $e && (xy($e, h, s), Jb(h, false, true, i, $e)); + } + var tr = Jc(i, me, 32, z), dr = is(h, tr); + return Rd(h.kind === 297 ? h : h.initializer, dr); + } else if (h.kind === 298) + if (t < u.length - 1) + Xr(h, e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern); + else { + Ae < 99 && fc(h, 4); + var Dr = []; + if (o) + for (var Qr = 0, li = o; Qr < li.length; Qr++) { + var Ti = li[Qr]; + e.isSpreadAssignment(Ti) || Dr.push(Ti.name); + } + var dr = Lo(i, Dr, i.symbol); + return ng(o, e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma), Rd(h.expression, dr); + } + else + Xr(h, e.Diagnostics.Property_assignment_expected); + } + function _O(r, i, t) { + var o = r.elements; + Ae < 2 && ye.downlevelIteration && fc(r, 512); + for (var s = N_(193, i, Tr, r) || Pe, u = ye.noUncheckedIndexedAccess ? void 0 : s, h = 0; h < o.length; h++) { + var z = s; + r.elements[h].kind === 225 && (z = u = u != null ? u : N_(65, i, Tr, r) || Pe), zk(r, i, h, z, t); + } + return i; + } + function zk(r, i, t, o, s) { + var u = r.elements, h = u[t]; + if (h.kind !== 227) { + if (h.kind !== 225) { + var z = If(t); + if (sp(i)) { + var me = 32 | (pm(h) ? 16 : 0), Me = ep(i, z, me, ed(h, z)) || Pe, $e = pm(h) ? Ks(Me, 524288) : Me, tr = is(h, $e); + return Rd(h, tr, s); + } + return Rd(h, o, s); + } + if (t < u.length - 1) + Xr(h, e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern); + else { + var dr = h.expression; + if (dr.kind === 221 && dr.operatorToken.kind === 63) + Xr(dr.operatorToken, e.Diagnostics.A_rest_element_cannot_have_an_initializer); + else { + ng(r.elements, e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma); + var tr = gf(i, Yn) ? Ss(i, function(Qr) { + return Zm(Qr, t); + }) : Zs(o); + return Rd(dr, tr, s); + } + } + } + } + function Rd(r, i, t, o) { + var s; + if (r.kind === 297) { + var u = r; + u.objectAssignmentInitializer && (Ye && !(ju(yn(u.objectAssignmentInitializer)) & 32768) && (i = Ks(i, 524288)), mO(u.name, u.equalsToken, u.objectAssignmentInitializer, t)), s = r.name; + } else + s = r; + return s.kind === 221 && s.operatorToken.kind === 63 && (Ir(s, t), s = s.left), s.kind === 205 ? fO(s, i, o) : s.kind === 204 ? _O(s, i, t) : pO(s, i, t); + } + function pO(r, i, t) { + var o = yn(r, t), s = r.parent.kind === 298 ? e.Diagnostics.The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access : e.Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access, u = r.parent.kind === 298 ? e.Diagnostics.The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access : e.Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access; + return hv(r, s, u) && op(i, o, r, r), e.isPrivateIdentifierPropertyAccessExpression(r) && fc(r.parent, 1048576), i; + } + function Iy(r) { + switch (r = e.skipParentheses(r), r.kind) { + case 79: + case 10: + case 13: + case 210: + case 223: + case 14: + case 8: + case 9: + case 110: + case 95: + case 104: + case 153: + case 213: + case 226: + case 214: + case 204: + case 205: + case 216: + case 230: + case 279: + case 278: + return true; + case 222: + return Iy(r.whenTrue) && Iy(r.whenFalse); + case 221: + return e.isAssignmentOperator(r.operatorToken.kind) ? false : Iy(r.left) && Iy(r.right); + case 219: + case 220: + switch (r.operator) { + case 53: + case 39: + case 40: + case 54: + return true; + } + return false; + case 217: + case 211: + case 229: + default: + return false; + } + } + function fS(r, i) { + return (i.flags & 98304) !== 0 || cm(r, i); + } + function dO() { + var r = e.createBinaryExpressionTrampoline(i, t, o, s, u, h); + return function(dr, Dr) { + var Qr = r(dr, Dr); + return e.Debug.assertIsDefined(Qr), Qr; + }; + function i(dr, Dr, Qr) { + if (Dr ? (Dr.stackIndex++, Dr.skip = false, Me(Dr, void 0), tr(Dr, void 0)) : Dr = { checkMode: Qr, skip: false, stackIndex: 0, typeStack: [void 0, void 0] }, e.isInJSFile(dr) && e.getAssignedExpandoInitializer(dr)) + return Dr.skip = true, tr(Dr, yn(dr.right, Qr)), Dr; + gO(dr); + var li = dr.operatorToken.kind; + return li === 63 && (dr.left.kind === 205 || dr.left.kind === 204) && (Dr.skip = true, tr(Dr, Rd(dr.left, yn(dr.right, Qr), Qr, dr.right.kind === 108))), Dr; + } + function t(dr, Dr, Qr) { + if (!Dr.skip) + return z(Dr, dr); + } + function o(dr, Dr, Qr) { + if (!Dr.skip) { + var li = $e(Dr); + e.Debug.assertIsDefined(li), Me(Dr, li), tr(Dr, void 0); + var Ti = dr.kind; + if (Ti === 55 || Ti === 56 || Ti === 60) { + if (Ti === 55) { + var Ci = e.walkUpParenthesizedExpressions(Qr.parent); + TS(Qr.left, e.isIfStatement(Ci) ? Ci.thenStatement : void 0); + } + h6(li, Qr.left); + } + } + } + function s(dr, Dr, Qr) { + if (!Dr.skip) + return z(Dr, dr); + } + function u(dr, Dr) { + var Qr; + if (Dr.skip) + Qr = $e(Dr); + else { + var li = me(Dr); + e.Debug.assertIsDefined(li); + var Ti = $e(Dr); + e.Debug.assertIsDefined(Ti), Qr = Wk(dr.left, dr.operatorToken, dr.right, li, Ti, dr); + } + return Dr.skip = false, Me(Dr, void 0), tr(Dr, void 0), Dr.stackIndex--, Qr; + } + function h(dr, Dr, Qr) { + return tr(dr, Dr), dr; + } + function z(dr, Dr) { + if (e.isBinaryExpression(Dr)) + return Dr; + tr(dr, yn(Dr, dr.checkMode)); + } + function me(dr) { + return dr.typeStack[dr.stackIndex]; + } + function Me(dr, Dr) { + dr.typeStack[dr.stackIndex] = Dr; + } + function $e(dr) { + return dr.typeStack[dr.stackIndex + 1]; + } + function tr(dr, Dr) { + dr.typeStack[dr.stackIndex + 1] = Dr; + } + } + function gO(r) { + var i = r.left, t = r.operatorToken, o = r.right; + t.kind === 60 && (e.isBinaryExpression(i) && (i.operatorToken.kind === 56 || i.operatorToken.kind === 55) && Tt(i, e.Diagnostics._0_and_1_operations_cannot_be_mixed_without_parentheses, e.tokenToString(i.operatorToken.kind), e.tokenToString(t.kind)), e.isBinaryExpression(o) && (o.operatorToken.kind === 56 || o.operatorToken.kind === 55) && Tt(o, e.Diagnostics._0_and_1_operations_cannot_be_mixed_without_parentheses, e.tokenToString(o.operatorToken.kind), e.tokenToString(t.kind))); + } + function mO(r, i, t, o, s) { + var u = i.kind; + if (u === 63 && (r.kind === 205 || r.kind === 204)) + return Rd(r, yn(t, o), o, t.kind === 108); + var h; + u === 55 || u === 56 || u === 60 ? h = Bg(r, o) : h = yn(r, o); + var z = yn(t, o); + return Wk(r, i, t, h, z, s); + } + function Wk(r, i, t, o, s, u) { + var h = i.kind; + switch (h) { + case 41: + case 42: + case 66: + case 67: + case 43: + case 68: + case 44: + case 69: + case 40: + case 65: + case 47: + case 70: + case 48: + case 71: + case 49: + case 72: + case 51: + case 74: + case 52: + case 78: + case 50: + case 73: + if (o === Bt || s === Bt) + return Bt; + o = bl(o, r), s = bl(s, t); + var z = void 0; + if (o.flags & 528 && s.flags & 528 && (z = ja(i.kind)) !== void 0) + return Xr(u || i, e.Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead, e.tokenToString(i.kind), e.tokenToString(z)), nt; + var me = k0(r, o, e.Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type, true), Me = k0(t, s, e.Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type, true), $e; + if (Ns(o, 3) && Ns(s, 3) || !(fs5(o, 2112) || fs5(s, 2112))) + $e = nt; + else if (Nt(o, s)) { + switch (h) { + case 49: + case 72: + Eo(); + break; + case 42: + case 67: + Ae < 3 && Xr(u, e.Diagnostics.Exponentiation_cannot_be_performed_on_bigint_values_unless_the_target_option_is_set_to_es2016_or_later); + } + $e = Mt; + } else + Eo(Nt), $e = Pe; + return me && Me && Fn($e), $e; + case 39: + case 64: + if (o === Bt || s === Bt) + return Bt; + !Ns(o, 402653316) && !Ns(s, 402653316) && (o = bl(o, r), s = bl(s, t)); + var tr = void 0; + if (Ns(o, 296, true) && Ns(s, 296, true) ? tr = nt : Ns(o, 2112, true) && Ns(s, 2112, true) ? tr = Mt : Ns(o, 402653316, true) || Ns(s, 402653316, true) ? tr = Li : (ta(o) || ta(s)) && (tr = nn(o) || nn(s) ? Pe : Oe), tr && !Sn(h)) + return tr; + if (!tr) { + var dr = 402655727; + return Eo(function(it, Yt) { + return Ns(it, dr) && Ns(Yt, dr); + }), Oe; + } + return h === 64 && Fn(tr), tr; + case 29: + case 31: + case 32: + case 33: + return Sn(h) && (o = Kl(bl(o, r)), s = Kl(bl(s, t)), Tn(function(it, Yt) { + return cm(it, Yt) || cm(Yt, it) || ao(it, At) && ao(Yt, At); + })), Ii; + case 34: + case 35: + case 36: + case 37: + return Tn(function(it, Yt) { + return fS(it, Yt) || fS(Yt, it); + }), Ii; + case 102: + return uO(r, t, o, s); + case 101: + return lO(r, t, o, s); + case 55: + case 76: { + var Dr = cp(o) & 4194304 ? Pa([Pw(Ye ? o : Kl(s)), s]) : o; + return h === 76 && Fn(s), Dr; + } + case 56: + case 75: { + var Qr = cp(o) & 8388608 ? Pa([OE(o), s], 2) : o; + return h === 75 && Fn(s), Qr; + } + case 60: + case 77: { + var li = cp(o) & 262144 ? Pa([C_(o), s], 2) : o; + return h === 77 && Fn(s), li; + } + case 63: + var Ti = e.isBinaryExpression(r.parent) ? e.getAssignmentDeclarationKind(r.parent) : 0; + return Ra(Ti, s), wn(Ti) ? ((!(s.flags & 524288) || Ti !== 2 && Ti !== 6 && !Of(s) && !db(s) && !(e.getObjectFlags(s) & 1)) && Fn(s), o) : (Fn(s), fm(s)); + case 27: + if (!ye.allowUnreachableCode && Iy(r) && !ca(t)) { + var Ci = e.getSourceFileOfNode(r), $i = Ci.text, Zi = e.skipTrivia($i, r.pos), qt = Ci.parseDiagnostics.some(function(it) { + return it.code !== e.Diagnostics.JSX_expressions_must_have_one_parent_element.code ? false : e.textSpanContainsPosition(it, Zi); + }); + qt || Xr(r, e.Diagnostics.Left_side_of_comma_operator_is_unused_and_has_no_side_effects); + } + return s; + default: + return e.Debug.fail(); + } + function Nt(it, Yt) { + return Ns(it, 2112) && Ns(Yt, 2112); + } + function Ra(it, Yt) { + if (it === 2) + for (var Ia = 0, Qt = Pf(Yt); Ia < Qt.length; Ia++) { + var Ka = Qt[Ia], cn = Jt(Ka); + if (cn.symbol && cn.symbol.flags & 32) { + var Un = Ka.escapedName, oa = es(Ka.valueDeclaration, Un, 788968, void 0, Un, false); + (oa == null ? void 0 : oa.declarations) && oa.declarations.some(e.isJSDocTypedefTag) && (Cl(oa, e.Diagnostics.Duplicate_identifier_0, e.unescapeLeadingUnderscores(Un), Ka), Cl(Ka, e.Diagnostics.Duplicate_identifier_0, e.unescapeLeadingUnderscores(Un), oa)); + } + } + } + function ca(it) { + return it.kind === 79 && it.escapedText === "eval"; + } + function Sn(it) { + var Yt = A0(o, 12288) ? r : A0(s, 12288) ? t : void 0; + return Yt ? (Xr(Yt, e.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol, e.tokenToString(it)), false) : true; + } + function ja(it) { + switch (it) { + case 51: + case 74: + return 56; + case 52: + case 78: + return 37; + case 50: + case 73: + return 55; + default: + return; + } + } + function Fn(it) { + e.isAssignmentOperator(h) && fe(Yt); + function Yt() { + if (hv(r, e.Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access, e.Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access) && (!e.isIdentifier(r) || e.unescapeLeadingUnderscores(r.escapedText) !== "exports")) { + var Ia = void 0; + if (yr && e.isPropertyAccessExpression(r) && fs5(it, 32768)) { + var Qt = da(Gs(r.expression), r.name.escapedText); + jD(it, Qt) && (Ia = e.Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target); + } + op(it, o, r, t, Ia); + } + } + } + function wn(it) { + var Yt; + switch (it) { + case 2: + return true; + case 1: + case 5: + case 6: + case 3: + case 4: + var Ia = Et(r), Qt = e.getAssignedExpandoInitializer(t); + return !!Qt && e.isObjectLiteralExpression(Qt) && !!(!((Yt = Ia == null ? void 0 : Ia.exports) === null || Yt === void 0) && Yt.size); + default: + return false; + } + } + function Tn(it) { + return it(o, s) ? false : (Eo(it), true); + } + function Eo(it) { + var Yt, Ia = false, Qt = u || i; + if (it) { + var Ka = k_(o), cn = k_(s); + Ia = !(Ka === o && cn === s) && !!(Ka && cn) && it(Ka, cn); + } + var Un = o, oa = s; + !Ia && it && (Yt = vO(o, s, it), Un = Yt[0], oa = Yt[1]); + var Mn = nf(Un, oa), Ln = Mn[0], ci = Mn[1]; + lt(Qt, Ia, Ln, ci) || zu(Qt, Ia, e.Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2, e.tokenToString(i.kind), Ln, ci); + } + function lt(it, Yt, Ia, Qt) { + var Ka; + switch (i.kind) { + case 36: + case 34: + Ka = "false"; + break; + case 37: + case 35: + Ka = "true"; + } + if (Ka) + return zu(it, Yt, e.Diagnostics.This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap, Ka, Ia, Qt); + } + } + function vO(r, i, t) { + var o = r, s = i, u = Kl(r), h = Kl(i); + return t(u, h) || (o = u, s = h), [o, s]; + } + function yO(r) { + fe(Dr); + var i = e.getContainingFunction(r); + if (!i) + return Oe; + var t = e.getFunctionFlags(i); + if (!(t & 1)) + return Oe; + var o = (t & 2) !== 0; + r.asteriskToken && (o && Ae < 99 && fc(r, 26624), !o && Ae < 2 && ye.downlevelIteration && fc(r, 256)); + var s = yg(i), u = s && P6(s, o), h = u && u.yieldType || Oe, z = u && u.nextType || Oe, me = o ? ag(z) || Oe : z, Me = r.expression ? yn(r.expression) : vi, $e = Mk(r, Me, me, o); + if (s && $e && op($e, h, r.expression || r, r.expression), r.asteriskToken) { + var tr = o ? 19 : 17; + return b6(tr, 1, Me, r.expression) || Oe; + } else if (s) + return Jg(2, s, o) || Oe; + var dr = xC(2, i); + return dr || (dr = Oe, fe(function() { + if (n && !e.expressionResultIsUnused(r)) { + var Qr = ou(r); + (!Qr || ta(Qr)) && Xr(r, e.Diagnostics.yield_expression_implicitly_results_in_an_any_type_because_its_containing_generator_lacks_a_return_type_annotation); + } + })), dr; + function Dr() { + r.flags & 8192 || Hs(r, e.Diagnostics.A_yield_expression_is_only_allowed_in_a_generator_body), xb(r) && Xr(r, e.Diagnostics.yield_expressions_cannot_be_used_in_a_parameter_initializer); + } + } + function hO(r, i) { + Bg(r.condition), TS(r.condition, r.whenTrue); + var t = yn(r.whenTrue, i), o = yn(r.whenFalse, i); + return Pa([t, o], 2); + } + function qk(r) { + var i = r.parent; + return e.isParenthesizedExpression(i) && qk(i) || e.isElementAccessExpression(i) && i.argumentExpression === r; + } + function DO(r) { + for (var i = [r.head.text], t = [], o = 0, s = r.templateSpans; o < s.length; o++) { + var u = s[o], h = yn(u.expression); + A0(h, 12288) && Xr(u.expression, e.Diagnostics.Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_in_String), i.push(u.literal.text), t.push(ao(h, ba) ? h : Li); + } + return hm(r) || qk(r) || rg(ou(r) || gr, bO) ? Dg(i, t) : Li; + } + function bO(r) { + return !!(r.flags & 134217856 || r.flags & 58982400 && fs5(uc(r) || gr, 402653316)); + } + function SO(r) { + return r.kind === 286 && !e.isJsxSelfClosingElement(r.parent) ? r.parent.parent : r; + } + function Rg(r, i, t, o) { + var s = SO(r), u = s.contextualType, h = s.inferenceContext; + try { + s.contextualType = i, s.inferenceContext = t; + var z = yn(r, o | 1 | (t ? 2 : 0)); + t && t.intraExpressionInferenceSites && (t.intraExpressionInferenceSites = void 0); + var me = fs5(z, 2944) && N0(z, c0(i, r)) ? jc(z) : z; + return me; + } finally { + s.contextualType = u, s.inferenceContext = h; + } + } + function Os(r, i) { + if (i && i !== 0) + return yn(r, i); + var t = va(r); + if (!t.resolvedType) { + var o = ko, s = Zc; + ko = Ao, Zc = void 0, t.resolvedType = yn(r, i), Zc = s, ko = o; + } + return t.resolvedType; + } + function Vk(r) { + return r = e.skipParentheses(r, true), r.kind === 211 || r.kind === 229 || e.isJSDocTypeAssertion(r); + } + function wy(r, i, t) { + var o = e.getEffectiveInitializer(r), s = Yk(o) || (t ? Rg(o, t, void 0, i || 0) : Os(o, i)); + return e.isParameter(r) && r.name.kind === 202 && Yn(s) && !s.target.hasRestElement && $_(s) < r.name.elements.length ? TO(s, r.name) : s; + } + function TO(r, i) { + for (var t = i.elements, o = xo(r).slice(), s = r.target.elementFlags.slice(), u = $_(r); u < t.length; u++) { + var h = t[u]; + (u < t.length - 1 || !(h.kind === 203 && h.dotDotDotToken)) && (o.push(!e.isOmittedExpression(h) && pm(h) ? vs(h, false, false) : Oe), s.push(2), !e.isOmittedExpression(h) && !pm(h) && Xp(h, Oe)); + } + return Wl(o, s, r.target.readonly); + } + function _S(r, i) { + var t = e.getCombinedNodeFlags(r) & 2 || e.isDeclarationReadonly(r) ? i : Hp(i); + if (e.isInJSFile(r)) { + if (kE(t)) + return Xp(r, Oe), Oe; + if (Jh(t)) + return Xp(r, mo), mo; + } + return t; + } + function N0(r, i) { + if (i) { + if (i.flags & 3145728) { + var t = i.types; + return e.some(t, function(s) { + return N0(r, s); + }); + } + if (i.flags & 58982400) { + var o = uc(i) || gr; + return fs5(o, 4) && fs5(r, 128) || fs5(o, 8) && fs5(r, 256) || fs5(o, 64) && fs5(r, 2048) || fs5(o, 4096) && fs5(r, 8192) || N0(r, o); + } + return !!(i.flags & 406847616 && fs5(r, 128) || i.flags & 256 && fs5(r, 256) || i.flags & 2048 && fs5(r, 2048) || i.flags & 512 && fs5(r, 512) || i.flags & 8192 && fs5(r, 8192)); + } + return false; + } + function hm(r) { + var i = r.parent; + return e.isAssertionExpression(i) && e.isConstTypeReference(i.type) || e.isJSDocTypeAssertion(i) && e.isConstTypeReference(e.getJSDocTypeAssertionType(i)) || (e.isParenthesizedExpression(i) || e.isArrayLiteralExpression(i) || e.isSpreadElement(i)) && hm(i) || (e.isPropertyAssignment(i) || e.isShorthandPropertyAssignment(i) || e.isTemplateSpan(i)) && hm(i.parent); + } + function Dm(r, i, t, o) { + var s = yn(r, i, o); + return hm(r) || e.isCommonJsExportedExpression(r) ? jc(s) : Vk(r) ? s : HD(s, c0(arguments.length === 2 ? ou(r) : t, r)); + } + function Kk(r, i) { + return r.name.kind === 162 && t_(r.name), Dm(r.initializer, i); + } + function Gk(r, i) { + dA(r), r.name.kind === 162 && t_(r.name); + var t = Jk(r, i); + return Hk(r, t, i); + } + function Hk(r, i, t) { + if (t && t & 10) { + var o = gv(i, 0, true), s = gv(i, 1, true), u = o || s; + if (u && u.typeParameters) { + var h = $p(r, 2); + if (h) { + var z = gv(C_(h), o ? 0 : 1, false); + if (z && !z.typeParameters) { + if (t & 8) + return Xk(r, t), xn; + var me = wg(r), Me = me.signature && yo(me.signature), $e = Me && ok(Me); + if ($e && !$e.typeParameters && !e.every(me.inferences, tg)) { + var tr = CO(me, u.typeParameters), dr = eD(u, tr), Dr = e.map(me.inferences, function(Qr) { + return tb(Qr.typeParameter); + }); + if (eb(dr, z, function(Qr, li) { + df(Dr, Qr, li, 0, true); + }), e.some(Dr, tg) && (rb(dr, z, function(Qr, li) { + df(Dr, Qr, li); + }), !xO(me.inferences, Dr))) + return EO(me.inferences, Dr), me.inferredTypeParameters = e.concatenate(me.inferredTypeParameters, tr), im(dr); + } + return im(sk(u, z, me)); + } + } + } + } + return i; + } + function Xk(r, i) { + if (i & 2) { + var t = wg(r); + t.flags |= 4; + } + } + function tg(r) { + return !!(r.candidates || r.contraCandidates); + } + function xO(r, i) { + for (var t = 0; t < r.length; t++) + if (tg(r[t]) && tg(i[t])) + return true; + return false; + } + function EO(r, i) { + for (var t = 0; t < r.length; t++) + !tg(r[t]) && tg(i[t]) && (r[t] = i[t]); + } + function CO(r, i) { + for (var t = [], o, s, u = 0, h = i; u < h.length; u++) { + var z = h[u], me = z.symbol.escapedName; + if (pS(r.inferredTypeParameters, me) || pS(t, me)) { + var Me = kO(e.concatenate(r.inferredTypeParameters, t), me), $e = oo(262144, Me), tr = Hc($e); + tr.target = z, o = e.append(o, z), s = e.append(s, tr), t.push(tr); + } else + t.push(z); + } + if (s) + for (var dr = Uc(o, s), Dr = 0, Qr = s; Dr < Qr.length; Dr++) { + var z = Qr[Dr]; + z.mapper = dr; + } + return t; + } + function pS(r, i) { + return e.some(r, function(t) { + return t.symbol.escapedName === i; + }); + } + function kO(r, i) { + for (var t = i.length; t > 1 && i.charCodeAt(t - 1) >= 48 && i.charCodeAt(t - 1) <= 57; ) + t--; + for (var o = i.slice(0, t), s = 1; ; s++) { + var u = o + s; + if (!pS(r, u)) + return u; + } + } + function Qk(r) { + var i = ig(r); + if (i && !i.typeParameters) + return yo(i); + } + function AO(r) { + var i = yn(r.expression), t = cv(i, r.expression), o = Qk(i); + return o && zh(o, r, t !== i); + } + function Gs(r) { + var i = Yk(r); + if (i) + return i; + if (r.flags & 134217728 && Zc) { + var t = Zc[A(r)]; + if (t) + return t; + } + var o = xc, s = yn(r); + if (xc !== o) { + var u = Zc || (Zc = []); + u[A(r)] = s, e.setNodeFlags(r, r.flags | 134217728); + } + return s; + } + function Yk(r) { + var i = e.skipParentheses(r, true); + if (e.isJSDocTypeAssertion(i)) { + var t = e.getJSDocTypeAssertionType(i); + if (!e.isConstTypeReference(t)) + return Va(t); + } + if (i = e.skipParentheses(r), e.isCallExpression(i) && i.expression.kind !== 106 && !e.isRequireCall(i, true) && !Dk(i)) { + var t = e.isCallChain(i) ? AO(i) : Qk(gm(i.expression)); + if (t) + return t; + } else { + if (e.isAssertionExpression(i) && !e.isConstTypeReference(i.type)) + return Va(i.type); + if (r.kind === 8 || r.kind === 10 || r.kind === 110 || r.kind === 95) + return yn(r); + } + } + function Oy(r) { + var i = va(r); + if (i.contextFreeType) + return i.contextFreeType; + var t = r.contextualType; + r.contextualType = Oe; + try { + var o = i.contextFreeType = yn(r, 4); + return o; + } finally { + r.contextualType = t; + } + } + function yn(r, i, t) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("check", "checkExpression", { kind: r.kind, pos: r.pos, end: r.end, path: r.tracingPath }); + var o = Ie; + Ie = r, Ee = 0; + var s = IO(r, i, t), u = Hk(r, s, i); + return uS(u) && NO(r, u), Ie = o, e.tracing === null || e.tracing === void 0 || e.tracing.pop(), u; + } + function NO(r, i) { + var t = r.parent.kind === 206 && r.parent.expression === r || r.parent.kind === 207 && r.parent.expression === r || (r.kind === 79 || r.kind === 161) && W0(r) || r.parent.kind === 181 && r.parent.exprName === r || r.parent.kind === 275; + if (t || Xr(r, e.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query), ye.isolatedModules) { + e.Debug.assert(!!(i.symbol.flags & 128)); + var o = i.symbol.valueDeclaration; + o.flags & 16777216 && Xr(r, e.Diagnostics.Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided); + } + } + function PO(r, i) { + if (e.hasJSDocNodes(r) && e.isJSDocTypeAssertion(r)) { + var t = e.getJSDocTypeAssertionType(r); + return Ck(t, t, r.expression, i); + } + return yn(r.expression, i); + } + function IO(r, i, t) { + var o = r.kind; + if (g) + switch (o) { + case 226: + case 213: + case 214: + g.throwIfCancellationRequested(); + } + switch (o) { + case 79: + return R8(r, i); + case 80: + return K5(r); + case 108: + return yy(r); + case 106: + return Sb(r); + case 104: + return ct; + case 14: + case 10: + return Sg(Bu(r.text)); + case 8: + return KS(r), Sg(If(+r.text)); + case 9: + return SL(r), Sg(ED({ negative: false, base10Value: e.parsePseudoBigInt(r.text) })); + case 110: + return Dt; + case 95: + return xt; + case 223: + return DO(r); + case 13: + return Wa; + case 204: + return PC(r, i, t); + case 205: + return C5(r, i); + case 206: + return VC(r, i); + case 161: + return KC(r, i); + case 207: + return c7(r, i); + case 208: + if (r.expression.kind === 100) + return R7(r); + case 209: + return L7(r, i); + case 210: + return B7(r); + case 212: + return PO(r, i); + case 226: + return uM(r); + case 213: + case 214: + return Jk(r, i); + case 216: + return tO(r); + case 211: + case 229: + return J7(r); + case 230: + return U7(r); + case 228: + return kk(r); + case 231: + return z7(r); + case 215: + return rO(r); + case 217: + return aO(r); + case 218: + return oO(r); + case 219: + return sO(r); + case 220: + return cO(r); + case 221: + return Ir(r, i); + case 222: + return hO(r, i); + case 225: + return b5(r, i); + case 227: + return vi; + case 224: + return yO(r); + case 232: + return S5(r); + case 288: + return J5(r, i); + case 278: + return P5(r, i); + case 279: + return A5(r, i); + case 282: + return I5(r); + case 286: + return O5(r, i); + case 280: + e.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); + } + return Pe; + } + function $k(r) { + sA(r), r.expression && Hs(r.expression, e.Diagnostics.Type_expected), io(r.constraint), io(r.default); + var i = Js(Et(r)); + uc(i), X1(i) || Xr(r.default, e.Diagnostics.Type_parameter_0_has_a_circular_default, Ot(i)); + var t = Tc(i), o = D_(i); + t && o && zc(o, Rc(un(t, Yd(i, o)), o), r.default, e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1), xm(r), fe(function() { + return Tm(r.name, e.Diagnostics.Type_parameter_name_cannot_be_0); + }); + } + function wO(r) { + if (e.isInterfaceDeclaration(r.parent) || e.isClassLike(r.parent) || e.isTypeAliasDeclaration(r.parent)) { + var i = Js(Et(r)), t = WD(i); + if (t) { + var o = Et(r.parent); + if (e.isTypeAliasDeclaration(r.parent) && !(e.getObjectFlags(go(o)) & 48)) + Xr(r, e.Diagnostics.Variance_annotations_are_only_supported_in_type_aliases_for_object_function_constructor_and_mapped_types); + else if (t === 32768 || t === 65536) { + var s = ly(o, i, t === 65536 ? Da : Rn), u = ly(o, i, t === 65536 ? Rn : Da), h = i; + _e = i, zc(s, u, r, e.Diagnostics.Type_0_is_not_assignable_to_type_1_as_implied_by_variance_annotation), _e = h; + } + } + } + } + function Zk(r) { + Ff(r), L0(r); + var i = e.getContainingFunction(r); + e.hasSyntacticModifier(r, 16476) && (i.kind === 171 && e.nodeIsPresent(i.body) || Xr(r, e.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation), i.kind === 171 && e.isIdentifier(r.name) && r.name.escapedText === "constructor" && Xr(r.name, e.Diagnostics.constructor_cannot_be_used_as_a_parameter_property_name)), r.questionToken && e.isBindingPattern(r.name) && i.body && Xr(r, e.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature), r.name && e.isIdentifier(r.name) && (r.name.escapedText === "this" || r.name.escapedText === "new") && (i.parameters.indexOf(r) !== 0 && Xr(r, e.Diagnostics.A_0_parameter_must_be_the_first_parameter, r.name.escapedText), (i.kind === 171 || i.kind === 175 || i.kind === 180) && Xr(r, e.Diagnostics.A_constructor_cannot_have_a_this_parameter), i.kind === 214 && Xr(r, e.Diagnostics.An_arrow_function_cannot_have_a_this_parameter), (i.kind === 172 || i.kind === 173) && Xr(r, e.Diagnostics.get_and_set_accessors_cannot_declare_this_parameters)), r.dotDotDotToken && !e.isBindingPattern(r.name) && !ao(bu(Jt(r.symbol)), Go) && Xr(r, e.Diagnostics.A_rest_parameter_must_be_of_an_array_type); + } + function OO(r) { + var i = FO(r); + if (!i) { + Xr(r, e.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); + return; + } + var t = yl(i), o = Yc(t); + if (!!o) { + io(r.type); + var s = r.parameterName; + if (o.kind === 0 || o.kind === 2) + Ch(s); + else if (o.parameterIndex >= 0) { + if (H(t) && o.parameterIndex === t.parameters.length - 1) + Xr(s, e.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); + else if (o.type) { + var u = function() { + return e.chainDiagnosticMessages(void 0, e.Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type); + }; + zc(o.type, Jt(t.parameters[o.parameterIndex]), r.type, void 0, u); + } + } else if (s) { + for (var h = false, z = 0, me = i.parameters; z < me.length; z++) { + var Me = me[z].name; + if (e.isBindingPattern(Me) && e6(Me, s, o.parameterName)) { + h = true; + break; + } + } + h || Xr(r.parameterName, e.Diagnostics.Cannot_find_parameter_0, o.parameterName); + } + } + } + function FO(r) { + switch (r.parent.kind) { + case 214: + case 174: + case 256: + case 213: + case 179: + case 169: + case 168: + var i = r.parent; + if (r === i.type) + return i; + } + } + function e6(r, i, t) { + for (var o = 0, s = r.elements; o < s.length; o++) { + var u = s[o]; + if (!e.isOmittedExpression(u)) { + var h = u.name; + if (h.kind === 79 && h.escapedText === t) + return Xr(i, e.Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern, t), true; + if ((h.kind === 202 || h.kind === 201) && e6(h, i, t)) + return true; + } + } + } + function Dv(r) { + r.kind === 176 ? X9(r) : (r.kind === 179 || r.kind === 256 || r.kind === 180 || r.kind === 174 || r.kind === 171 || r.kind === 175) && X0(r); + var i = e.getFunctionFlags(r); + i & 4 || ((i & 3) === 3 && Ae < 99 && fc(r, 6144), (i & 3) === 2 && Ae < 4 && fc(r, 64), (i & 3) !== 0 && Ae < 2 && fc(r, 128)), jy(e.getEffectiveTypeParameterDeclarations(r)), sM(r), e.forEach(r.parameters, Zk), r.type && io(r.type), fe(t); + function t() { + EF(r); + var o = e.getEffectiveReturnTypeNode(r); + if (n && !o) + switch (r.kind) { + case 175: + Xr(r, e.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); + break; + case 174: + Xr(r, e.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type); + break; + } + if (o) { + var s = e.getFunctionFlags(r); + if ((s & 5) === 1) { + var u = Va(o); + if (u === Fi) + Xr(o, e.Diagnostics.A_generator_cannot_have_a_void_type_annotation); + else { + var h = Jg(0, u, (s & 2) !== 0) || Oe, z = Jg(1, u, (s & 2) !== 0) || h, me = Jg(2, u, (s & 2) !== 0) || gr, Me = Fk(h, z, me, !!(s & 2)); + zc(Me, u, o); + } + } else + (s & 3) === 2 && cF(r, o); + } + r.kind !== 176 && r.kind !== 317 && A_(r); + } + } + function MO(r) { + for (var i = new e.Map(), t = new e.Map(), o = new e.Map(), s = 0, u = r.members; s < u.length; s++) { + var h = u[s]; + if (h.kind === 171) + for (var z = 0, me = h.parameters; z < me.length; z++) { + var Me = me[z]; + e.isParameterPropertyDeclaration(Me, h) && !e.isBindingPattern(Me.name) && Ti(i, Me.name, Me.name.escapedText, 3); + } + else { + var $e = e.isStatic(h), tr = h.name; + if (!tr) + continue; + var dr = e.isPrivateIdentifier(tr), Dr = dr && $e ? 16 : 0, Qr = dr ? o : $e ? t : i, li = tr && e.getPropertyNameForPropertyNameNode(tr); + if (li) + switch (h.kind) { + case 172: + Ti(Qr, tr, li, 1 | Dr); + break; + case 173: + Ti(Qr, tr, li, 2 | Dr); + break; + case 167: + Ti(Qr, tr, li, 3 | Dr); + break; + case 169: + Ti(Qr, tr, li, 8 | Dr); + break; + } + } + } + function Ti(Ci, $i, Zi, qt) { + var Nt = Ci.get(Zi); + if (Nt) + if ((Nt & 16) !== (qt & 16)) + Xr($i, e.Diagnostics.Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name, e.getTextOfNode($i)); + else { + var Ra = !!(Nt & 8), ca = !!(qt & 8); + Ra || ca ? Ra !== ca && Xr($i, e.Diagnostics.Duplicate_identifier_0, e.getTextOfNode($i)) : Nt & qt & -17 ? Xr($i, e.Diagnostics.Duplicate_identifier_0, e.getTextOfNode($i)) : Ci.set(Zi, Nt | qt); + } + else + Ci.set(Zi, qt); + } + } + function LO(r) { + for (var i = 0, t = r.members; i < t.length; i++) { + var o = t[i], s = o.name, u = e.isStatic(o); + if (u && s) { + var h = e.getPropertyNameForPropertyNameNode(s); + switch (h) { + case "name": + case "length": + case "caller": + case "arguments": + case "prototype": + var z = e.Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1, me = of(Et(r)); + Xr(s, z, h, me); + break; + } + } + } + } + function r6(r) { + for (var i = new e.Map(), t = 0, o = r.members; t < o.length; t++) { + var s = o[t]; + if (s.kind === 166) { + var u = void 0, h = s.name; + switch (h.kind) { + case 10: + case 8: + u = h.text; + break; + case 79: + u = e.idText(h); + break; + default: + continue; + } + i.get(u) ? (Xr(e.getNameOfDeclaration(s.symbol.valueDeclaration), e.Diagnostics.Duplicate_identifier_0, u), Xr(s.name, e.Diagnostics.Duplicate_identifier_0, u)) : i.set(u, true); + } + } + } + function dS(r) { + if (r.kind === 258) { + var i = Et(r); + if (i.declarations && i.declarations.length > 0 && i.declarations[0] !== r) + return; + } + var t = tx(Et(r)); + if (t != null && t.declarations) { + for (var o = new e.Map(), s = function(me) { + me.parameters.length === 1 && me.parameters[0].type && Od(Va(me.parameters[0].type), function(Me) { + var $e = o.get(fu(Me)); + $e ? $e.declarations.push(me) : o.set(fu(Me), { type: Me, declarations: [me] }); + }); + }, u = 0, h = t.declarations; u < h.length; u++) { + var z = h[u]; + s(z); + } + o.forEach(function(me) { + if (me.declarations.length > 1) + for (var Me = 0, $e = me.declarations; Me < $e.length; Me++) { + var tr = $e[Me]; + Xr(tr, e.Diagnostics.Duplicate_index_signature_for_type_0, Ot(me.type)); + } + }); + } + } + function i6(r) { + !Ff(r) && !vL(r) && Q0(r.name), L0(r), gS(r), e.hasSyntacticModifier(r, 128) && r.kind === 167 && r.initializer && Xr(r, e.Diagnostics.Property_0_cannot_have_an_initializer_because_it_is_marked_abstract, e.declarationNameToString(r.name)); + } + function RO(r) { + return e.isPrivateIdentifier(r.name) && Xr(r, e.Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies), i6(r); + } + function BO(r) { + dA(r) || Q0(r.name), f6(r), e.hasSyntacticModifier(r, 128) && r.kind === 169 && r.body && Xr(r, e.Diagnostics.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract, e.declarationNameToString(r.name)), e.isPrivateIdentifier(r.name) && !e.getContainingClass(r) && Xr(r, e.Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies), gS(r); + } + function gS(r) { + if (e.isPrivateIdentifier(r.name) && Ae < 99) { + for (var i = e.getEnclosingBlockScopeContainer(r); i; i = e.getEnclosingBlockScopeContainer(i)) + va(i).flags |= 67108864; + if (e.isClassExpression(r.parent)) { + var t = hb(r.parent); + t && (va(r.name).flags |= 524288, va(t).flags |= 65536); + } + } + } + function JO(r) { + Ff(r), e.forEachChild(r, io); + } + function jO(r) { + Dv(r), gL(r) || mL(r), io(r.body); + var i = Et(r), t = e.getDeclarationOfKind(i, r.kind); + if (r === t && O0(i), e.nodeIsMissing(r.body)) + return; + fe(s); + return; + function o(u) { + return e.isPrivateIdentifierClassElementDeclaration(u) ? true : u.kind === 167 && !e.isStatic(u) && !!u.initializer; + } + function s() { + var u = r.parent; + if (e.getClassExtendsHeritageElement(u)) { + Db(r.parent, u); + var h = yC(u), z = vC(r.body); + if (z) { + h && Xr(z, e.Diagnostics.A_constructor_cannot_contain_a_super_call_when_its_class_extends_null); + var me = (e.getEmitScriptTarget(ye) !== 99 || !ir) && (e.some(r.parent.members, o) || e.some(r.parameters, function(Dr) { + return e.hasSyntacticModifier(Dr, 16476); + })); + if (me) + if (!UO(z, r.body)) + Xr(z, e.Diagnostics.A_super_call_must_be_a_root_level_statement_within_a_constructor_of_a_derived_class_that_contains_initialized_properties_parameter_properties_or_private_identifiers); + else { + for (var Me = void 0, $e = 0, tr = r.body.statements; $e < tr.length; $e++) { + var dr = tr[$e]; + if (e.isExpressionStatement(dr) && e.isSuperCall(e.skipOuterExpressions(dr.expression))) { + Me = dr; + break; + } + if (t6(dr)) + break; + } + Me === void 0 && Xr(r, e.Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_to_refer_to_super_or_this_when_a_derived_class_contains_initialized_properties_parameter_properties_or_private_identifiers); + } + } else + h || Xr(r, e.Diagnostics.Constructors_for_derived_classes_must_contain_a_super_call); + } + } + } + function UO(r, i) { + var t = e.walkUpParenthesizedExpressions(r.parent); + return e.isExpressionStatement(t) && t.parent === i; + } + function t6(r) { + return r.kind === 106 || r.kind === 108 ? true : e.isThisContainerOrFunctionBlock(r) ? false : !!e.forEachChild(r, t6); + } + function a6(r) { + fe(i), io(r.body), gS(r); + function i() { + if (!X0(r) && !aL(r) && Q0(r.name), Fy(r), Dv(r), r.kind === 172 && !(r.flags & 16777216) && e.nodeIsPresent(r.body) && r.flags & 256 && (r.flags & 512 || Xr(r.name, e.Diagnostics.A_get_accessor_must_return_a_value)), r.name.kind === 162 && t_(r.name), Td(r)) { + var t = Et(r), o = e.getDeclarationOfKind(t, 172), s = e.getDeclarationOfKind(t, 173); + if (o && s && !(Ug(o) & 1)) { + va(o).flags |= 1; + var u = e.getEffectiveModifierFlags(o), h = e.getEffectiveModifierFlags(s); + (u & 128) !== (h & 128) && (Xr(o.name, e.Diagnostics.Accessors_must_both_be_abstract_or_non_abstract), Xr(s.name, e.Diagnostics.Accessors_must_both_be_abstract_or_non_abstract)), (u & 16 && !(h & 24) || u & 8 && !(h & 8)) && (Xr(o.name, e.Diagnostics.A_get_accessor_must_be_at_least_as_accessible_as_the_setter), Xr(s.name, e.Diagnostics.A_get_accessor_must_be_at_least_as_accessible_as_the_setter)); + var z = Te(o), me = Te(s); + z && me && zc(z, me, o, e.Diagnostics.The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type); + } + } + var Me = rt(Et(r)); + r.kind === 172 && sS(r, Me); + } + } + function zO(r) { + Fy(r); + } + function P0(r, i) { + return zp(e.map(r.typeArguments, Va), i, Ul(i), e.isInJSFile(r)); + } + function n6(r, i) { + for (var t, o, s = true, u = 0; u < i.length; u++) { + var h = Tc(i[u]); + h && (t || (t = P0(r, i), o = Uc(i, t)), s = s && zc(t[u], un(h, o), r.typeArguments[u], e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1)); + } + return s; + } + function mS(r) { + var i = ty(r); + if (!nn(i)) { + var t = va(r).resolvedSymbol; + if (t) + return t.flags & 524288 && Aa(t).typeParameters || (e.getObjectFlags(i) & 4 ? i.target.localTypeParameters : void 0); + } + } + function vS(r) { + Wy(r, r.typeArguments), r.kind === 178 && r.typeName.jsdocDotPos !== void 0 && !e.isInJSFile(r) && !e.isInJSDoc(r) && rd(r, r.typeName.jsdocDotPos, 1, e.Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments), e.forEach(r.typeArguments, io); + var i = ty(r); + if (!nn(i)) { + r.typeArguments && fe(function() { + var o = mS(r); + o && n6(r, o); + }); + var t = va(r).resolvedSymbol; + t && (e.some(t.declarations, function(o) { + return zy(o) && !!(o.flags & 268435456); + }) && El(ky(r), t.declarations, t.escapedName), i.flags & 32 && t.flags & 8 && Xr(r, e.Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals, Ot(i))); + } + } + function WO(r) { + var i = e.tryCast(r.parent, e.isTypeReferenceType); + if (!!i) { + var t = mS(i); + if (!!t) { + var o = Tc(t[i.typeArguments.indexOf(r)]); + return o && un(o, Uc(t, P0(i, t))); + } + } + } + function qO(r) { + yx(r); + } + function VO(r) { + e.forEach(r.members, io), fe(i); + function i() { + var t = tE(r); + J0(t, t.symbol), dS(r), r6(r); + } + } + function KO(r) { + io(r.elementType); + } + function GO(r) { + for (var i = r.elements, t = false, o = false, s = e.some(i, e.isNamedTupleMember), u = 0, h = i; u < h.length; u++) { + var z = h[u]; + if (z.kind !== 197 && s) { + Tt(z, e.Diagnostics.Tuple_members_must_all_have_names_or_all_not_have_names); + break; + } + var me = sD(z); + if (me & 8) { + var Me = Va(z.type); + if (!sp(Me)) { + Xr(z, e.Diagnostics.A_rest_element_type_must_be_an_array_type); + break; + } + (Tu(Me) || Yn(Me) && Me.target.combinedFlags & 4) && (o = true); + } else if (me & 4) { + if (o) { + Tt(z, e.Diagnostics.A_rest_element_cannot_follow_another_rest_element); + break; + } + o = true; + } else if (me & 2) { + if (o) { + Tt(z, e.Diagnostics.An_optional_element_cannot_follow_a_rest_element); + break; + } + t = true; + } else if (t) { + Tt(z, e.Diagnostics.A_required_element_cannot_follow_an_optional_element); + break; + } + } + e.forEach(r.elements, io), Va(r); + } + function HO(r) { + e.forEach(r.types, io), Va(r); + } + function o6(r, i) { + if (!(r.flags & 8388608)) + return r; + var t = r.objectType, o = r.indexType; + if (ao(o, ql(t, false))) + return i.kind === 207 && e.isAssignmentTarget(i) && e.getObjectFlags(t) & 32 && Lu(t) & 1 && Xr(i, e.Diagnostics.Index_signature_in_type_0_only_permits_reading, Ot(t)), r; + var s = $s(t); + if (ss(s, nt) && Ns(o, 296)) + return r; + if (Ad(t)) { + var u = gD(o, i); + if (u) { + var h = Od(s, function(z) { + return bi(z, u); + }); + if (h && e.getDeclarationModifierFlagsFromSymbol(h) & 24) + return Xr(i, e.Diagnostics.Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter, e.unescapeLeadingUnderscores(u)), Pe; + } + } + return Xr(i, e.Diagnostics.Type_0_cannot_be_used_to_index_type_1, Ot(o), Ot(t)), Pe; + } + function XO(r) { + io(r.objectType), io(r.indexType), o6(Yx(r), r); + } + function QO(r) { + YO(r), io(r.typeParameter), io(r.nameType), io(r.type), r.type || Xp(r, Oe); + var i = yD(r), t = Jl(i); + if (t) + zc(t, at, r.nameType); + else { + var o = Mu(i); + zc(o, at, e.getEffectiveConstraintOfTypeParameter(r.typeParameter)); + } + } + function YO(r) { + var i; + if (!((i = r.members) === null || i === void 0) && i.length) + return Tt(r.members[0], e.Diagnostics.A_mapped_type_may_not_declare_properties_or_methods); + } + function $O(r) { + Ch(r); + } + function ZO(r) { + oL(r), io(r.type); + } + function eF(r) { + e.forEachChild(r, io); + } + function rF(r) { + e.findAncestor(r, function(Me) { + return Me.parent && Me.parent.kind === 189 && Me.parent.extendsType === Me; + }) || Tt(r, e.Diagnostics.infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type), io(r.typeParameter); + var i = Et(r.typeParameter); + if (i.declarations && i.declarations.length > 1) { + var t = Aa(i); + if (!t.typeParametersChecked) { + t.typeParametersChecked = true; + var o = Js(i), s = e.getDeclarationsOfKind(i, 163); + if (!F6(s, [o], function(Me) { + return [Me]; + })) + for (var u = tn(i), h = 0, z = s; h < z.length; h++) { + var me = z[h]; + Xr(me.name, e.Diagnostics.All_declarations_of_0_must_have_identical_constraints, u); + } + } + } + A_(r); + } + function iF(r) { + for (var i = 0, t = r.templateSpans; i < t.length; i++) { + var o = t[i]; + io(o.type); + var s = Va(o.type); + zc(s, ba, o.type); + } + Va(r); + } + function tF(r) { + if (io(r.argument), r.assertions) { + var i = e.getResolutionModeOverrideForClause(r.assertions.assertClause, Tt); + i && e.getEmitModuleResolutionKind(ye) !== e.ModuleResolutionKind.Node16 && e.getEmitModuleResolutionKind(ye) !== e.ModuleResolutionKind.NodeNext && Tt(r.assertions.assertClause, e.Diagnostics.Resolution_modes_are_only_supported_when_moduleResolution_is_node16_or_nodenext); + } + Va(r); + } + function aF(r) { + r.dotDotDotToken && r.questionToken && Tt(r, e.Diagnostics.A_tuple_member_cannot_be_both_optional_and_rest), r.type.kind === 185 && Tt(r.type, e.Diagnostics.A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_colon_rather_than_after_the_type), r.type.kind === 186 && Tt(r.type, e.Diagnostics.A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type), io(r.type), Va(r); + } + function I0(r) { + return (e.hasEffectiveModifier(r, 8) || e.isPrivateIdentifierClassElementDeclaration(r)) && !!(r.flags & 16777216); + } + function w0(r, i) { + var t = e.getCombinedModifierFlags(r); + return r.parent.kind !== 258 && r.parent.kind !== 257 && r.parent.kind !== 226 && r.flags & 16777216 && (!(t & 2) && !(e.isModuleBlock(r.parent) && e.isModuleDeclaration(r.parent.parent) && e.isGlobalScopeAugmentation(r.parent.parent)) && (t |= 1), t |= 2), t & i; + } + function O0(r) { + fe(function() { + return nF(r); + }); + } + function nF(r) { + function i(Qt, Ka) { + var cn = Ka !== void 0 && Ka.parent === Qt[0].parent; + return cn ? Ka : Qt[0]; + } + function t(Qt, Ka, cn, Un, oa) { + var Mn = Un ^ oa; + if (Mn !== 0) { + var Ln = w0(i(Qt, Ka), cn); + e.forEach(Qt, function(ci) { + var Fr = w0(ci, cn) ^ Ln; + Fr & 1 ? Xr(e.getNameOfDeclaration(ci), e.Diagnostics.Overload_signatures_must_all_be_exported_or_non_exported) : Fr & 2 ? Xr(e.getNameOfDeclaration(ci), e.Diagnostics.Overload_signatures_must_all_be_ambient_or_non_ambient) : Fr & 24 ? Xr(e.getNameOfDeclaration(ci) || ci, e.Diagnostics.Overload_signatures_must_all_be_public_private_or_protected) : Fr & 128 && Xr(e.getNameOfDeclaration(ci), e.Diagnostics.Overload_signatures_must_all_be_abstract_or_non_abstract); + }); + } + } + function o(Qt, Ka, cn, Un) { + if (cn !== Un) { + var oa = e.hasQuestionToken(i(Qt, Ka)); + e.forEach(Qt, function(Mn) { + var Ln = e.hasQuestionToken(Mn) !== oa; + Ln && Xr(e.getNameOfDeclaration(Mn), e.Diagnostics.Overload_signatures_must_all_be_optional_or_required); + }); + } + } + var s = 155, u = 0, h = s, z = false, me = true, Me = false, $e, tr, dr, Dr = r.declarations, Qr = (r.flags & 16384) !== 0; + function li(Qt) { + if (!(Qt.name && e.nodeIsMissing(Qt.name))) { + var Ka = false, cn = e.forEachChild(Qt.parent, function(Fr) { + if (Ka) + return Fr; + Ka = Fr === Qt; + }); + if (cn && cn.pos === Qt.end && cn.kind === Qt.kind) { + var Un = cn.name || cn, oa = cn.name; + if (Qt.name && oa && (e.isPrivateIdentifier(Qt.name) && e.isPrivateIdentifier(oa) && Qt.name.escapedText === oa.escapedText || e.isComputedPropertyName(Qt.name) && e.isComputedPropertyName(oa) || e.isPropertyNameLiteral(Qt.name) && e.isPropertyNameLiteral(oa) && e.getEscapedTextOfIdentifierOrLiteral(Qt.name) === e.getEscapedTextOfIdentifierOrLiteral(oa))) { + var Mn = (Qt.kind === 169 || Qt.kind === 168) && e.isStatic(Qt) !== e.isStatic(cn); + if (Mn) { + var Ln = e.isStatic(Qt) ? e.Diagnostics.Function_overload_must_be_static : e.Diagnostics.Function_overload_must_not_be_static; + Xr(Un, Ln); + } + return; + } + if (e.nodeIsPresent(cn.body)) { + Xr(Un, e.Diagnostics.Function_implementation_name_must_be_0, e.declarationNameToString(Qt.name)); + return; + } + } + var ci = Qt.name || Qt; + Qr ? Xr(ci, e.Diagnostics.Constructor_implementation_is_missing) : e.hasSyntacticModifier(Qt, 128) ? Xr(ci, e.Diagnostics.All_declarations_of_an_abstract_method_must_be_consecutive) : Xr(ci, e.Diagnostics.Function_implementation_is_missing_or_not_immediately_following_the_declaration); + } + } + var Ti = false, Ci = false, $i = false, Zi = []; + if (Dr) + for (var qt = 0, Nt = Dr; qt < Nt.length; qt++) { + var Ra = Nt[qt], ca = Ra, Sn = ca.flags & 16777216, ja = ca.parent && (ca.parent.kind === 258 || ca.parent.kind === 182) || Sn; + if (ja && (dr = void 0), (ca.kind === 257 || ca.kind === 226) && !Sn && ($i = true), ca.kind === 256 || ca.kind === 169 || ca.kind === 168 || ca.kind === 171) { + Zi.push(ca); + var Fn = w0(ca, s); + u |= Fn, h &= Fn, z = z || e.hasQuestionToken(ca), me = me && e.hasQuestionToken(ca); + var wn = e.nodeIsPresent(ca.body); + wn && $e ? Qr ? Ci = true : Ti = true : (dr == null ? void 0 : dr.parent) === ca.parent && dr.end !== ca.pos && li(dr), wn ? $e || ($e = ca) : Me = true, dr = ca, ja || (tr = ca); + } + } + if (Ci && e.forEach(Zi, function(Qt) { + Xr(Qt, e.Diagnostics.Multiple_constructor_implementations_are_not_allowed); + }), Ti && e.forEach(Zi, function(Qt) { + Xr(e.getNameOfDeclaration(Qt) || Qt, e.Diagnostics.Duplicate_function_implementation); + }), $i && !Qr && r.flags & 16 && Dr) { + var Tn = e.filter(Dr, function(Qt) { + return Qt.kind === 257; + }).map(function(Qt) { + return e.createDiagnosticForNode(Qt, e.Diagnostics.Consider_adding_a_declare_modifier_to_this_class); + }); + e.forEach(Dr, function(Qt) { + var Ka = Qt.kind === 257 ? e.Diagnostics.Class_declaration_cannot_implement_overload_list_for_0 : Qt.kind === 256 ? e.Diagnostics.Function_with_bodies_can_only_merge_with_classes_that_are_ambient : void 0; + Ka && e.addRelatedInfo.apply(void 0, Ve([Xr(e.getNameOfDeclaration(Qt) || Qt, Ka, e.symbolName(r))], Tn, false)); + }); + } + if (tr && !tr.body && !e.hasSyntacticModifier(tr, 128) && !tr.questionToken && li(tr), Me && (Dr && (t(Dr, $e, s, u, h), o(Dr, $e, z, me)), $e)) + for (var Eo = S_(r), lt = yl($e), it = 0, Yt = Eo; it < Yt.length; it++) { + var Ia = Yt[it]; + if (!uw(lt, Ia)) { + e.addRelatedInfo(Xr(Ia.declaration, e.Diagnostics.This_overload_signature_is_not_compatible_with_its_implementation_signature), e.createDiagnosticForNode($e, e.Diagnostics.The_implementation_signature_is_declared_here)); + break; + } + } + } + function bv(r) { + fe(function() { + return oF(r); + }); + } + function oF(r) { + var i = r.localSymbol; + if (!i && (i = Et(r), !i.exportSymbol) || e.getDeclarationOfKind(i, r.kind) !== r) + return; + for (var t = 0, o = 0, s = 0, u = 0, h = i.declarations; u < h.length; u++) { + var z = h[u], me = Ti(z), Me = w0(z, 513); + Me & 1 ? Me & 512 ? s |= me : t |= me : o |= me; + } + var $e = t | o, tr = t & o, dr = s & $e; + if (tr || dr) + for (var Dr = 0, Qr = i.declarations; Dr < Qr.length; Dr++) { + var z = Qr[Dr], me = Ti(z), li = e.getNameOfDeclaration(z); + me & dr ? Xr(li, e.Diagnostics.Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead, e.declarationNameToString(li)) : me & tr && Xr(li, e.Diagnostics.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local, e.declarationNameToString(li)); + } + function Ti(Ci) { + var $i = Ci; + switch ($i.kind) { + case 258: + case 259: + case 345: + case 338: + case 339: + return 2; + case 261: + return e.isAmbientModule($i) || e.getModuleInstanceState($i) !== 0 ? 5 : 4; + case 257: + case 260: + case 299: + return 3; + case 305: + return 7; + case 271: + case 221: + var Zi = $i, qt = e.isExportAssignment(Zi) ? Zi.expression : Zi.right; + if (!e.isEntityNameExpression(qt)) + return 1; + $i = qt; + case 265: + case 268: + case 267: + var Nt = 0, Ra = Ps(Et($i)); + return e.forEach(Ra.declarations, function(ca) { + Nt |= Ti(ca); + }), Nt; + case 254: + case 203: + case 256: + case 270: + case 79: + return 1; + default: + return e.Debug.failBadSyntaxKind($i); + } + } + } + function Sv(r, i, t, o) { + var s = Tv(r, i); + return s && ag(s, i, t, o); + } + function Tv(r, i) { + if (!ta(r)) { + var t = r; + if (t.promisedTypeOfPromise) + return t.promisedTypeOfPromise; + if (Xf(r, ay(false))) + return t.promisedTypeOfPromise = xo(r)[0]; + if (!Lg(r, 262140)) { + var o = da(r, "then"); + if (!ta(o)) { + var s = o ? ot(o, 0) : e.emptyArray; + if (s.length === 0) { + i && Xr(i, e.Diagnostics.A_promise_must_have_a_then_method); + return; + } + var u = Ks(Pa(e.map(s, aS)), 2097152); + if (!ta(u)) { + var h = ot(u, 0); + if (h.length === 0) { + i && Xr(i, e.Diagnostics.The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback); + return; + } + return t.promisedTypeOfPromise = Pa(e.map(h, aS), 2); + } + } + } + } + } + function xv(r, i, t, o, s) { + var u = i ? ag(r, t, o, s) : k_(r, t, o, s); + return u || Pe; + } + function s6(r) { + if (Lg(r, 262140)) + return false; + var i = da(r, "then"); + return !!i && ot(Ks(i, 2097152), 0).length > 0; + } + function yS(r) { + var i; + if (r.flags & 16777216) { + var t = oD(false); + return !!t && r.aliasSymbol === t && ((i = r.aliasTypeArguments) === null || i === void 0 ? void 0 : i.length) === 1; + } + return false; + } + function Ev(r) { + return r.flags & 1048576 ? Ss(r, Ev) : yS(r) ? r.aliasTypeArguments[0] : r; + } + function sF(r) { + if (ta(r) || yS(r)) + return r; + if (Ad(r)) { + var i = uc(r); + if (!i || i.flags & 3 || Of(i) || s6(i)) { + var t = oD(true); + if (t) + return am(t, [Ev(r)]); + } + } + return e.Debug.assert(Tv(r) === void 0, "type provided should not be a non-generic 'promise'-like."), r; + } + function ag(r, i, t, o) { + var s = k_(r, i, t, o); + return s && sF(s); + } + function k_(r, i, t, o) { + if (ta(r) || yS(r)) + return r; + var s = r; + if (s.awaitedTypeOfType) + return s.awaitedTypeOfType; + if (r.flags & 1048576) { + var u = i ? function(me) { + return k_(me, i, t, o); + } : k_; + return s.awaitedTypeOfType = Ss(r, u); + } + var h = Tv(r); + if (h) { + if (r.id === h.id || qa.lastIndexOf(h.id) >= 0) { + i && Xr(i, e.Diagnostics.Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method); + return; + } + qa.push(r.id); + var z = k_(h, i, t, o); + return qa.pop(), z ? s.awaitedTypeOfType = z : void 0; + } + if (s6(r)) { + i && (e.Debug.assertIsDefined(t), Xr(i, t, o)); + return; + } + return s.awaitedTypeOfType = r; + } + function cF(r, i) { + var t = Va(i); + if (Ae >= 2) { + if (nn(t)) + return; + var o = ay(true); + if (o !== kn && !Xf(t, o)) { + Xr(i, e.Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, Ot(k_(t) || Fi)); + return; + } + } else { + if (lF(i), nn(t)) + return; + var s = e.getEntityNameFromTypeNode(i); + if (s === void 0) { + Xr(i, e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, Ot(t)); + return; + } + var u = Ds(s, 111551, true), h = u ? Jt(u) : Pe; + if (nn(h)) { + s.kind === 79 && s.escapedText === "Promise" && bd(t) === ay(false) ? Xr(i, e.Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option) : Xr(i, e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, e.entityNameToString(s)); + return; + } + var z = E3(true); + if (z === Ba) { + Xr(i, e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, e.entityNameToString(s)); + return; + } + if (!zc(h, z, i, e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value)) + return; + var me = s && e.getFirstIdentifier(s), Me = qs(r.locals, me.escapedText, 111551); + if (Me) { + Xr(Me.valueDeclaration, e.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, e.idText(me), e.entityNameToString(s)); + return; + } + } + xv(t, false, r, e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); + } + function uF(r) { + var i = Mg(r); + x0(i, r); + var t = yo(i); + if (!(t.flags & 1)) { + var o, s; + switch (r.parent.kind) { + case 257: + o = e.Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; + var u = Et(r.parent), h = Jt(u); + s = Pa([h, Fi]); + break; + case 167: + case 164: + o = e.Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any, s = Fi; + break; + case 169: + case 172: + case 173: + o = e.Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; + var z = Bd(r.parent), me = Px(z); + s = Pa([me, Fi]); + break; + default: + return e.Debug.fail(); + } + zc(t, s, r, o); + } + } + function lF(r) { + c6(r && e.getEntityNameFromTypeNode(r), false); + } + function c6(r, i) { + if (!!r) { + var t = e.getFirstIdentifier(r), o = (r.kind === 79 ? 788968 : 1920) | 2097152, s = es(t, t.escapedText, o, void 0, void 0, true); + if (s && s.flags & 2097152) { + if (gc(s) && !Av(Ps(s)) && !vu(s)) + As(s); + else if (i && ye.isolatedModules && e.getEmitModuleKind(ye) >= e.ModuleKind.ES2015 && !gc(s) && !e.some(s.declarations, e.isTypeOnlyImportOrExportDeclaration)) { + var u = Xr(r, e.Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled), h = e.find(s.declarations || e.emptyArray, yf); + h && e.addRelatedInfo(u, e.createDiagnosticForNode(h, e.Diagnostics._0_was_imported_here, e.idText(t))); + } + } + } + } + function bm(r) { + var i = hS(r); + i && e.isEntityName(i) && c6(i, true); + } + function hS(r) { + if (r) + switch (r.kind) { + case 188: + case 187: + return u6(r.types); + case 189: + return u6([r.trueType, r.falseType]); + case 191: + case 197: + return hS(r.type); + case 178: + return r.typeName; + } + } + function u6(r) { + for (var i, t = 0, o = r; t < o.length; t++) { + for (var s = o[t]; s.kind === 191 || s.kind === 197; ) + s = s.type; + if (s.kind !== 143 && !(!Ye && (s.kind === 196 && s.literal.kind === 104 || s.kind === 153))) { + var u = hS(s); + if (!u) + return; + if (i) { + if (!e.isIdentifier(i) || !e.isIdentifier(u) || i.escapedText !== u.escapedText) + return; + } else + i = u; + } + } + return i; + } + function F0(r) { + var i = e.getEffectiveTypeAnnotationNode(r); + return e.isRestParameter(r) ? e.getRestParameterElementType(i) : i; + } + function Fy(r) { + if (!!r.decorators && !!e.nodeCanBeDecorated(r, r.parent, r.parent.parent)) { + ye.experimentalDecorators || Xr(r, e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning); + var i = r.decorators[0]; + if (fc(i, 8), r.kind === 164 && fc(i, 32), ye.emitDecoratorMetadata) + switch (fc(i, 16), r.kind) { + case 257: + var t = e.getFirstConstructorWithBody(r); + if (t) + for (var o = 0, s = t.parameters; o < s.length; o++) { + var u = s[o]; + bm(F0(u)); + } + break; + case 172: + case 173: + var h = r.kind === 172 ? 173 : 172, z = e.getDeclarationOfKind(Et(r), h); + bm(W(r) || z && W(z)); + break; + case 169: + for (var me = 0, Me = r.parameters; me < Me.length; me++) { + var u = Me[me]; + bm(F0(u)); + } + bm(e.getEffectiveReturnTypeNode(r)); + break; + case 167: + bm(e.getEffectiveTypeAnnotationNode(r)); + break; + case 164: + bm(F0(r)); + for (var $e = r.parent, tr = 0, dr = $e.parameters; tr < dr.length; tr++) { + var u = dr[tr]; + bm(F0(u)); + } + break; + } + e.forEach(r.decorators, uF); + } + } + function fF(r) { + fe(i); + function i() { + f6(r), WS(r), Sm(r, r.name); + } + } + function _F(r) { + r.typeExpression || Xr(r.name, e.Diagnostics.JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags), r.name && Tm(r.name, e.Diagnostics.Type_alias_name_cannot_be_0), io(r.typeExpression), jy(e.getEffectiveTypeParameterDeclarations(r)); + } + function pF(r) { + io(r.constraint); + for (var i = 0, t = r.typeParameters; i < t.length; i++) { + var o = t[i]; + io(o); + } + } + function dF(r) { + io(r.typeExpression); + } + function gF(r) { + io(r.typeExpression); + } + function mF(r) { + io(r.typeExpression); + } + function vF(r) { + fe(i), Dv(r); + function i() { + !r.type && !e.isJSDocConstructSignature(r) && Xp(r, Oe); + } + } + function yF(r) { + var i = e.getEffectiveJSDocHost(r); + (!i || !e.isClassDeclaration(i) && !e.isClassExpression(i)) && Xr(i, e.Diagnostics.JSDoc_0_is_not_attached_to_a_class, e.idText(r.tagName)); + } + function hF(r) { + var i = e.getEffectiveJSDocHost(r); + if (!i || !e.isClassDeclaration(i) && !e.isClassExpression(i)) { + Xr(i, e.Diagnostics.JSDoc_0_is_not_attached_to_a_class, e.idText(r.tagName)); + return; + } + var t = e.getJSDocTags(i).filter(e.isJSDocAugmentsTag); + e.Debug.assert(t.length > 0), t.length > 1 && Xr(t[1], e.Diagnostics.Class_declarations_cannot_have_more_than_one_augments_or_extends_tag); + var o = l6(r.class.expression), s = e.getClassExtendsHeritageElement(i); + if (s) { + var u = l6(s.expression); + u && o.escapedText !== u.escapedText && Xr(o, e.Diagnostics.JSDoc_0_1_does_not_match_the_extends_2_clause, e.idText(r.tagName), e.idText(o), e.idText(u)); + } + } + function DF(r) { + var i = e.getJSDocHost(r); + i && e.isPrivateIdentifierClassElementDeclaration(i) && Xr(r, e.Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); + } + function l6(r) { + switch (r.kind) { + case 79: + return r; + case 206: + return r.name; + default: + return; + } + } + function f6(r) { + var i; + Fy(r), Dv(r); + var t = e.getFunctionFlags(r); + if (r.name && r.name.kind === 162 && t_(r.name), Td(r)) { + var o = Et(r), s = r.localSymbol || o, u = (i = s.declarations) === null || i === void 0 ? void 0 : i.find(function(Me) { + return Me.kind === r.kind && !(Me.flags & 262144); + }); + r === u && O0(s), o.parent && O0(o); + } + var h = r.kind === 168 ? void 0 : r.body; + if (io(h), sS(r, yg(r)), fe(me), e.isInJSFile(r)) { + var z = e.getJSDocTypeTag(r); + z && z.typeExpression && !Nb(Va(z.typeExpression), r) && Xr(z.typeExpression.type, e.Diagnostics.The_type_of_a_function_declaration_must_match_the_function_s_signature); + } + function me() { + e.getEffectiveReturnTypeNode(r) || (e.nodeIsMissing(h) && !I0(r) && Xp(r, Oe), t & 1 && e.nodeIsPresent(h) && yo(yl(r))); + } + } + function A_(r) { + fe(i); + function i() { + var t = e.getSourceFileOfNode(r), o = Fo.get(t.path); + o || (o = [], Fo.set(t.path, o)), o.push(r); + } + } + function _6(r, i) { + for (var t = 0, o = r; t < o.length; t++) { + var s = o[t]; + switch (s.kind) { + case 257: + case 226: + bF(s, i), DS(s, i); + break; + case 305: + case 261: + case 235: + case 263: + case 242: + case 243: + case 244: + g6(s, i); + break; + case 171: + case 213: + case 256: + case 214: + case 169: + case 172: + case 173: + s.body && g6(s, i), DS(s, i); + break; + case 168: + case 174: + case 175: + case 179: + case 180: + case 259: + case 258: + DS(s, i); + break; + case 190: + SF(s, i); + break; + default: + e.Debug.assertNever(s, "Node should not have been registered for unused identifiers check"); + } + } + } + function p6(r, i, t) { + var o = e.getNameOfDeclaration(r) || r, s = zy(r) ? e.Diagnostics._0_is_declared_but_never_used : e.Diagnostics._0_is_declared_but_its_value_is_never_read; + t(r, 0, e.createDiagnosticForNode(o, s, i)); + } + function My(r) { + return e.isIdentifier(r) && e.idText(r).charCodeAt(0) === 95; + } + function bF(r, i) { + for (var t = 0, o = r.members; t < o.length; t++) { + var s = o[t]; + switch (s.kind) { + case 169: + case 167: + case 172: + case 173: + if (s.kind === 173 && s.symbol.flags & 32768) + break; + var u = Et(s); + !u.isReferenced && (e.hasEffectiveModifier(s, 8) || e.isNamedDeclaration(s) && e.isPrivateIdentifier(s.name)) && !(s.flags & 16777216) && i(s, 0, e.createDiagnosticForNode(s.name, e.Diagnostics._0_is_declared_but_its_value_is_never_read, tn(u))); + break; + case 171: + for (var h = 0, z = s.parameters; h < z.length; h++) { + var me = z[h]; + !me.symbol.isReferenced && e.hasSyntacticModifier(me, 8) && i(me, 0, e.createDiagnosticForNode(me.name, e.Diagnostics.Property_0_is_declared_but_its_value_is_never_read, e.symbolName(me.symbol))); + } + break; + case 176: + case 234: + case 170: + break; + default: + e.Debug.fail("Unexpected class member"); + } + } + } + function SF(r, i) { + var t = r.typeParameter; + bS(t) && i(r, 1, e.createDiagnosticForNode(r, e.Diagnostics._0_is_declared_but_its_value_is_never_read, e.idText(t.name))); + } + function DS(r, i) { + var t = Et(r).declarations; + if (!(!t || e.last(t) !== r)) + for (var o = e.getEffectiveTypeParameterDeclarations(r), s = new e.Set(), u = 0, h = o; u < h.length; u++) { + var z = h[u]; + if (!!bS(z)) { + var me = e.idText(z.name), Me = z.parent; + if (Me.kind !== 190 && Me.typeParameters.every(bS)) { + if (e.tryAddToSet(s, Me)) { + var $e = e.getSourceFileOfNode(Me), tr = e.isJSDocTemplateTag(Me) ? e.rangeOfNode(Me) : e.rangeOfTypeParameters($e, Me.typeParameters), dr = Me.typeParameters.length === 1, Dr = dr ? e.Diagnostics._0_is_declared_but_its_value_is_never_read : e.Diagnostics.All_type_parameters_are_unused, Qr = dr ? me : void 0; + i(z, 1, e.createFileDiagnostic($e, tr.pos, tr.end - tr.pos, Dr, Qr)); + } + } else + i(z, 1, e.createDiagnosticForNode(z, e.Diagnostics._0_is_declared_but_its_value_is_never_read, me)); + } + } + } + function bS(r) { + return !(so(r.symbol).isReferenced & 262144) && !My(r.name); + } + function Ly(r, i, t, o) { + var s = String(o(i)), u = r.get(s); + u ? u[1].push(t) : r.set(s, [i, [t]]); + } + function d6(r) { + return e.tryCast(e.getRootDeclaration(r), e.isParameter); + } + function TF(r) { + return e.isBindingElement(r) ? e.isObjectBindingPattern(r.parent) ? !!(r.propertyName && My(r.name)) : My(r.name) : e.isAmbientModule(r) || (e.isVariableDeclaration(r) && e.isForInOrOfStatement(r.parent.parent) || m6(r)) && My(r.name); + } + function g6(r, i) { + var t = new e.Map(), o = new e.Map(), s = new e.Map(); + r.locals.forEach(function(u) { + if (!(u.flags & 262144 ? !(u.flags & 3 && !(u.isReferenced & 3)) : u.isReferenced || u.exportSymbol) && u.declarations) + for (var h = 0, z = u.declarations; h < z.length; h++) { + var me = z[h]; + if (!TF(me)) + if (m6(me)) + Ly(t, xF(me), me, A); + else if (e.isBindingElement(me) && e.isObjectBindingPattern(me.parent)) { + var Me = e.last(me.parent.elements); + (me === Me || !e.last(me.parent.elements).dotDotDotToken) && Ly(o, me.parent, me, A); + } else if (e.isVariableDeclaration(me)) + Ly(s, me.parent, me, A); + else { + var $e = u.valueDeclaration && d6(u.valueDeclaration), tr = u.valueDeclaration && e.getNameOfDeclaration(u.valueDeclaration); + $e && tr ? !e.isParameterPropertyDeclaration($e, $e.parent) && !e.parameterIsThisKeyword($e) && !My(tr) && (e.isBindingElement(me) && e.isArrayBindingPattern(me.parent) ? Ly(o, me.parent, me, A) : i($e, 1, e.createDiagnosticForNode(tr, e.Diagnostics._0_is_declared_but_its_value_is_never_read, e.symbolName(u)))) : p6(me, e.symbolName(u), i); + } + } + }), t.forEach(function(u) { + var h = u[0], z = u[1], me = h.parent, Me = (h.name ? 1 : 0) + (h.namedBindings ? h.namedBindings.kind === 268 ? 1 : h.namedBindings.elements.length : 0); + if (Me === z.length) + i(me, 0, z.length === 1 ? e.createDiagnosticForNode(me, e.Diagnostics._0_is_declared_but_its_value_is_never_read, e.idText(e.first(z).name)) : e.createDiagnosticForNode(me, e.Diagnostics.All_imports_in_import_declaration_are_unused)); + else + for (var $e = 0, tr = z; $e < tr.length; $e++) { + var dr = tr[$e]; + p6(dr, e.idText(dr.name), i); + } + }), o.forEach(function(u) { + var h = u[0], z = u[1], me = d6(h.parent) ? 1 : 0; + if (h.elements.length === z.length) + z.length === 1 && h.parent.kind === 254 && h.parent.parent.kind === 255 ? Ly(s, h.parent.parent, h.parent, A) : i(h, me, z.length === 1 ? e.createDiagnosticForNode(h, e.Diagnostics._0_is_declared_but_its_value_is_never_read, Ry(e.first(z).name)) : e.createDiagnosticForNode(h, e.Diagnostics.All_destructured_elements_are_unused)); + else + for (var Me = 0, $e = z; Me < $e.length; Me++) { + var tr = $e[Me]; + i(tr, me, e.createDiagnosticForNode(tr, e.Diagnostics._0_is_declared_but_its_value_is_never_read, Ry(tr.name))); + } + }), s.forEach(function(u) { + var h = u[0], z = u[1]; + if (h.declarations.length === z.length) + i(h, 0, z.length === 1 ? e.createDiagnosticForNode(e.first(z).name, e.Diagnostics._0_is_declared_but_its_value_is_never_read, Ry(e.first(z).name)) : e.createDiagnosticForNode(h.parent.kind === 237 ? h.parent : h, e.Diagnostics.All_variables_are_unused)); + else + for (var me = 0, Me = z; me < Me.length; me++) { + var $e = Me[me]; + i($e, 0, e.createDiagnosticForNode($e, e.Diagnostics._0_is_declared_but_its_value_is_never_read, Ry($e.name))); + } + }); + } + function Ry(r) { + switch (r.kind) { + case 79: + return e.idText(r); + case 202: + case 201: + return Ry(e.cast(e.first(r.elements), e.isBindingElement).name); + default: + return e.Debug.assertNever(r); + } + } + function m6(r) { + return r.kind === 267 || r.kind === 270 || r.kind === 268; + } + function xF(r) { + return r.kind === 267 ? r : r.kind === 268 ? r.parent : r.parent.parent; + } + function M0(r) { + if (r.kind === 235 && Mf(r), e.isFunctionOrModuleBlock(r)) { + var i = Bs; + e.forEach(r.statements, io), Bs = i; + } else + e.forEach(r.statements, io); + r.locals && A_(r); + } + function EF(r) { + Ae >= 2 || !e.hasRestParameter(r) || r.flags & 16777216 || e.nodeIsMissing(r.body) || e.forEach(r.parameters, function(i) { + i.name && !e.isBindingPattern(i.name) && i.name.escapedText === or.escapedName && Es("noEmit", i, e.Diagnostics.Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters); + }); + } + function Cv(r, i, t) { + if ((i == null ? void 0 : i.escapedText) !== t || r.kind === 167 || r.kind === 166 || r.kind === 169 || r.kind === 168 || r.kind === 172 || r.kind === 173 || r.kind === 296 || r.flags & 16777216 || (e.isImportClause(r) || e.isImportEqualsDeclaration(r) || e.isImportSpecifier(r)) && e.isTypeOnlyImportOrExportDeclaration(r)) + return false; + var o = e.getRootDeclaration(r); + return !(e.isParameter(o) && e.nodeIsMissing(o.parent.body)); + } + function CF(r) { + e.findAncestor(r, function(i) { + if (Ug(i) & 4) { + var t = r.kind !== 79; + return t ? Xr(e.getNameOfDeclaration(r), e.Diagnostics.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference) : Xr(r, e.Diagnostics.Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference), true; + } + return false; + }); + } + function kF(r) { + e.findAncestor(r, function(i) { + if (Ug(i) & 8) { + var t = r.kind !== 79; + return t ? Xr(e.getNameOfDeclaration(r), e.Diagnostics.Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_meta_property_reference) : Xr(r, e.Diagnostics.Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta_property_reference), true; + } + return false; + }); + } + function AF(r, i) { + if (!(er >= e.ModuleKind.ES2015 && !(er >= e.ModuleKind.Node16 && e.getSourceFileOfNode(r).impliedNodeFormat === e.ModuleKind.CommonJS)) && !(!i || !Cv(r, i, "require") && !Cv(r, i, "exports")) && !(e.isModuleDeclaration(r) && e.getModuleInstanceState(r) !== 1)) { + var t = zi(r); + t.kind === 305 && e.isExternalOrCommonJsModule(t) && Es("noEmit", i, e.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, e.declarationNameToString(i), e.declarationNameToString(i)); + } + } + function NF(r, i) { + if (!(!i || Ae >= 4 || !Cv(r, i, "Promise")) && !(e.isModuleDeclaration(r) && e.getModuleInstanceState(r) !== 1)) { + var t = zi(r); + t.kind === 305 && e.isExternalOrCommonJsModule(t) && t.flags & 2048 && Es("noEmit", i, e.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions, e.declarationNameToString(i), e.declarationNameToString(i)); + } + } + function PF(r, i) { + Ae <= 8 && (Cv(r, i, "WeakMap") || Cv(r, i, "WeakSet")) && bn.push(r); + } + function IF(r) { + var i = e.getEnclosingBlockScopeContainer(r); + Ug(i) & 67108864 && (e.Debug.assert(e.isNamedDeclaration(r) && e.isIdentifier(r.name) && typeof r.name.escapedText == "string", "The target of a WeakMap/WeakSet collision check should be an identifier"), Es("noEmit", r, e.Diagnostics.Compiler_reserves_name_0_when_emitting_private_identifier_downlevel, r.name.escapedText)); + } + function wF(r, i) { + i && Ae >= 2 && Ae <= 8 && Cv(r, i, "Reflect") && _a.push(r); + } + function OF(r) { + var i = false; + if (e.isClassExpression(r)) + for (var t = 0, o = r.members; t < o.length; t++) { + var s = o[t]; + if (Ug(s) & 134217728) { + i = true; + break; + } + } + else if (e.isFunctionExpression(r)) + Ug(r) & 134217728 && (i = true); + else { + var u = e.getEnclosingBlockScopeContainer(r); + u && Ug(u) & 134217728 && (i = true); + } + i && (e.Debug.assert(e.isNamedDeclaration(r) && e.isIdentifier(r.name), "The target of a Reflect collision check should be an identifier"), Es("noEmit", r, e.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_when_emitting_super_references_in_static_initializers, e.declarationNameToString(r.name), "Reflect")); + } + function Sm(r, i) { + !i || (AF(r, i), NF(r, i), PF(r, i), wF(r, i), e.isClassLike(r) ? (Tm(i, e.Diagnostics.Class_name_cannot_be_0), r.flags & 16777216 || oM(i)) : e.isEnumDeclaration(r) && Tm(i, e.Diagnostics.Enum_name_cannot_be_0)); + } + function FF(r) { + if (!((e.getCombinedNodeFlags(r) & 3) !== 0 || e.isParameterDeclaration(r)) && !(r.kind === 254 && !r.initializer)) { + var i = Et(r); + if (i.flags & 1) { + if (!e.isIdentifier(r.name)) + return e.Debug.fail(); + var t = es(r, r.name.escapedText, 3, void 0, void 0, false); + if (t && t !== i && t.flags & 2 && p0(t) & 3) { + var o = e.getAncestor(t.valueDeclaration, 255), s = o.parent.kind === 237 && o.parent.parent ? o.parent.parent : void 0, u = s && (s.kind === 235 && e.isFunctionLike(s.parent) || s.kind === 262 || s.kind === 261 || s.kind === 305); + if (!u) { + var h = tn(t); + Xr(r, e.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, h, h); + } + } + } + } + } + function kv(r) { + return r === nr ? Oe : r === So ? mo : r; + } + function L0(r) { + var i; + if (Fy(r), e.isBindingElement(r) || io(r.type), !!r.name) { + if (r.name.kind === 162 && (t_(r.name), r.initializer && Os(r.initializer)), e.isBindingElement(r)) { + e.isObjectBindingPattern(r.parent) && r.dotDotDotToken && Ae < 5 && fc(r, 4), r.propertyName && r.propertyName.kind === 162 && t_(r.propertyName); + var t = r.parent.parent, o = r.dotDotDotToken ? 64 : 0, s = Wo(t, o), u = r.propertyName || r.name; + if (s && !e.isBindingPattern(u)) { + var h = Z_(u); + if (_f(h)) { + var z = pf(h), me = bi(s, z); + me && (xy(me, void 0, false), Jb(r, !!t.initializer && t.initializer.kind === 106, false, s, me)); + } + } + } + if (e.isBindingPattern(r.name) && (r.name.kind === 202 && Ae < 2 && ye.downlevelIteration && fc(r, 512), e.forEach(r.name.elements, io)), r.initializer && e.isParameterDeclaration(r) && e.nodeIsMissing(e.getContainingFunction(r).body)) { + Xr(r, e.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation); + return; + } + if (e.isBindingPattern(r.name)) { + var Me = r.initializer && r.parent.parent.kind !== 243, $e = r.name.elements.length === 0; + if (Me || $e) { + var tr = sc(r); + if (Me) { + var dr = Os(r.initializer); + Ye && $e ? qC(dr, r) : op(dr, sc(r), r, r.initializer); + } + $e && (e.isArrayBindingPattern(r.name) ? N_(65, tr, Tr, r) : Ye && qC(tr, r)); + } + return; + } + var Dr = Et(r); + if (Dr.flags & 2097152 && e.isVariableDeclarationInitializedToBareOrAccessedRequire(r)) { + j0(r); + return; + } + var Qr = kv(Jt(Dr)); + if (r === Dr.valueDeclaration) { + var li = e.getEffectiveInitializer(r); + if (li) { + var Ti = e.isInJSFile(r) && e.isObjectLiteralExpression(li) && (li.properties.length === 0 || e.isPrototypeAccess(r.name)) && !!(!((i = Dr.exports) === null || i === void 0) && i.size); + !Ti && r.parent.parent.kind !== 243 && op(Os(li), Qr, r, li, void 0); + } + Dr.declarations && Dr.declarations.length > 1 && e.some(Dr.declarations, function($i) { + return $i !== r && e.isVariableLike($i) && !y6($i, r); + }) && Xr(r.name, e.Diagnostics.All_declarations_of_0_must_have_identical_modifiers, e.declarationNameToString(r.name)); + } else { + var Ci = kv(sc(r)); + !nn(Qr) && !nn(Ci) && !wf(Qr, Ci) && !(Dr.flags & 67108864) && v6(Dr.valueDeclaration, Qr, r, Ci), r.initializer && op(Os(r.initializer), Ci, r, r.initializer, void 0), Dr.valueDeclaration && !y6(r, Dr.valueDeclaration) && Xr(r.name, e.Diagnostics.All_declarations_of_0_must_have_identical_modifiers, e.declarationNameToString(r.name)); + } + r.kind !== 167 && r.kind !== 166 && (bv(r), (r.kind === 254 || r.kind === 203) && FF(r), Sm(r, r.name)); + } + } + function v6(r, i, t, o) { + var s = e.getNameOfDeclaration(t), u = t.kind === 167 || t.kind === 166 ? e.Diagnostics.Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_type_2 : e.Diagnostics.Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2, h = e.declarationNameToString(s), z = Xr(s, u, h, Ot(i), Ot(o)); + r && e.addRelatedInfo(z, e.createDiagnosticForNode(r, e.Diagnostics._0_was_also_declared_here, h)); + } + function y6(r, i) { + if (r.kind === 164 && i.kind === 254 || r.kind === 254 && i.kind === 164) + return true; + if (e.hasQuestionToken(r) !== e.hasQuestionToken(i)) + return false; + var t = 504; + return e.getSelectedEffectiveModifierFlags(r, t) === e.getSelectedEffectiveModifierFlags(i, t); + } + function SS(r) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("check", "checkVariableDeclaration", { kind: r.kind, pos: r.pos, end: r.end, path: r.tracingPath }), fL(r), L0(r), e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + function MF(r) { + return cL(r), L0(r); + } + function LF(r) { + !Ff(r) && !VS(r.declarationList) && _L(r), e.forEach(r.declarationList.declarations, io); + } + function RF(r) { + Mf(r), yn(r.expression); + } + function BF(r) { + Mf(r), Bg(r.expression), TS(r.expression, r.thenStatement), io(r.thenStatement), r.thenStatement.kind === 236 && Xr(r.thenStatement, e.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement), io(r.elseStatement); + } + function TS(r, i) { + if (!Ye) + return; + for (t(r, i); e.isBinaryExpression(r) && r.operatorToken.kind === 56; ) + r = r.left, t(r, i); + function t(o, s) { + var u = e.isBinaryExpression(o) && (o.operatorToken.kind === 56 || o.operatorToken.kind === 55) ? o.right : o; + if (!e.isModuleExportsAccessExpression(u)) { + var h = Bg(u), z = e.isPropertyAccessExpression(u) && Vk(u.expression); + if (!(ju(h) || z)) { + var me = ot(h, 0), Me = !!Sv(h); + if (!(me.length === 0 && !Me)) { + var $e = e.isIdentifier(u) ? u : e.isPropertyAccessExpression(u) ? u.name : e.isBinaryExpression(u) && e.isIdentifier(u.right) ? u.right : void 0, tr = $e && el($e); + if (!(!tr && !Me)) { + var dr = tr && e.isBinaryExpression(o.parent) && jF(o.parent, tr) || tr && s && JF(o, s, $e, tr); + dr || (Me ? zu(u, true, e.Diagnostics.This_condition_will_always_return_true_since_this_0_is_always_defined, q_(h)) : Xr(u, e.Diagnostics.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead)); + } + } + } + } + } + } + function JF(r, i, t, o) { + return !!e.forEachChild(i, function s(u) { + if (e.isIdentifier(u)) { + var h = el(u); + if (h && h === o) { + if (e.isIdentifier(r) || e.isIdentifier(t) && e.isBinaryExpression(t.parent)) + return true; + for (var z = t.parent, me = u.parent; z && me; ) { + if (e.isIdentifier(z) && e.isIdentifier(me) || z.kind === 108 && me.kind === 108) + return el(z) === el(me); + if (e.isPropertyAccessExpression(z) && e.isPropertyAccessExpression(me)) { + if (el(z.name) !== el(me.name)) + return false; + me = me.expression, z = z.expression; + } else if (e.isCallExpression(z) && e.isCallExpression(me)) + me = me.expression, z = z.expression; + else + return false; + } + } + } + return e.forEachChild(u, s); + }); + } + function jF(r, i) { + for (; e.isBinaryExpression(r) && r.operatorToken.kind === 55; ) { + var t = e.forEachChild(r.right, function o(s) { + if (e.isIdentifier(s)) { + var u = el(s); + if (u && u === i) + return true; + } + return e.forEachChild(s, o); + }); + if (t) + return true; + r = r.parent; + } + return false; + } + function UF(r) { + Mf(r), io(r.statement), Bg(r.expression); + } + function zF(r) { + Mf(r), Bg(r.expression), io(r.statement); + } + function h6(r, i) { + return r.flags & 16384 && Xr(i, e.Diagnostics.An_expression_of_type_void_cannot_be_tested_for_truthiness), r; + } + function Bg(r, i) { + return h6(yn(r, i), r); + } + function WF(r) { + Mf(r) || r.initializer && r.initializer.kind === 255 && VS(r.initializer), r.initializer && (r.initializer.kind === 255 ? e.forEach(r.initializer.declarations, SS) : yn(r.initializer)), r.condition && Bg(r.condition), r.incrementor && yn(r.incrementor), io(r.statement), r.locals && A_(r); + } + function qF(r) { + pA(r); + var i = e.getContainingFunctionOrClassStaticBlock(r); + if (r.awaitModifier) + if (i && e.isClassStaticBlockDeclaration(i)) + Tt(r.awaitModifier, e.Diagnostics.For_await_loops_cannot_be_used_inside_a_class_static_block); + else { + var t = e.getFunctionFlags(i); + (t & 6) === 2 && Ae < 99 && fc(r, 16384); + } + else + ye.downlevelIteration && Ae < 2 && fc(r, 256); + if (r.initializer.kind === 255) + D6(r); + else { + var o = r.initializer, s = By(r); + if (o.kind === 204 || o.kind === 205) + Rd(o, s || Pe); + else { + var u = yn(o); + hv(o, e.Diagnostics.The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access, e.Diagnostics.The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access), s && op(s, u, o, r.expression); + } + } + io(r.statement), r.locals && A_(r); + } + function VF(r) { + pA(r); + var i = jb(yn(r.expression)); + if (r.initializer.kind === 255) { + var t = r.initializer.declarations[0]; + t && e.isBindingPattern(t.name) && Xr(t.name, e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern), D6(r); + } else { + var o = r.initializer, s = yn(o); + o.kind === 204 || o.kind === 205 ? Xr(o, e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern) : ao(lI(i), s) ? hv(o, e.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access, e.Diagnostics.The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access) : Xr(o, e.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any); + } + (i === ui || !Ns(i, 126091264)) && Xr(r.expression, e.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_here_has_type_0, Ot(i)), io(r.statement), r.locals && A_(r); + } + function D6(r) { + var i = r.initializer; + if (i.declarations.length >= 1) { + var t = i.declarations[0]; + SS(t); + } + } + function By(r) { + var i = r.awaitModifier ? 15 : 13; + return N_(i, gm(r.expression), Tr, r.expression); + } + function N_(r, i, t, o) { + return ta(i) ? i : xS(r, i, t, o, true) || Oe; + } + function xS(r, i, t, o, s) { + var u = (r & 2) !== 0; + if (i === ui) { + AS(o, i, u); + return; + } + var h = Ae >= 2, z = !h && ye.downlevelIteration, me = ye.noUncheckedIndexedAccess && !!(r & 128); + if (h || z || u) { + var Me = Jy(i, r, h ? o : void 0); + if (s && Me) { + var $e = r & 8 ? e.Diagnostics.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_send_0 : r & 32 ? e.Diagnostics.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_always_send_0 : r & 64 ? e.Diagnostics.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring_will_always_send_0 : r & 16 ? e.Diagnostics.Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_containing_generator_will_always_send_0 : void 0; + $e && zc(t, Me.nextType, o, $e); + } + if (Me || h) + return me ? fv(Me && Me.yieldType) : Me && Me.yieldType; + } + var tr = i, dr = false, Dr = false; + if (r & 4) { + if (tr.flags & 1048576) { + var Qr = i.types, li = e.filter(Qr, function(Ra) { + return !(Ra.flags & 402653316); + }); + li !== Qr && (tr = Pa(li, 2)); + } else + tr.flags & 402653316 && (tr = ui); + if (Dr = tr !== i, Dr && (Ae < 1 && o && (Xr(o, e.Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher), dr = true), tr.flags & 131072)) + return me ? fv(Li) : Li; + } + if (!sp(tr)) { + if (o && !dr) { + var Ti = !!(r & 4) && !Dr, Ci = Nt(Ti, z), $i = Ci[0], Zi = Ci[1]; + zu(o, Zi && !!Sv(tr), $i, Ot(tr)); + } + return Dr ? me ? fv(Li) : Li : void 0; + } + var qt = cs(tr, nt); + if (Dr && qt) + return qt.flags & 402653316 && !ye.noUncheckedIndexedAccess ? Li : Pa(me ? [qt, Li, Tr] : [qt, Li], 2); + return r & 128 ? fv(qt) : qt; + function Nt(Ra, ca) { + var Sn; + if (ca) + return Ra ? [e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator, true] : [e.Diagnostics.Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator, true]; + var ja = b6(r, 0, i, void 0); + return ja ? [e.Diagnostics.Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher, false] : KF((Sn = i.symbol) === null || Sn === void 0 ? void 0 : Sn.escapedName) ? [e.Diagnostics.Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher, true] : Ra ? [e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type, true] : [e.Diagnostics.Type_0_is_not_an_array_type, true]; + } + } + function KF(r) { + switch (r) { + case "Float32Array": + case "Float64Array": + case "Int16Array": + case "Int32Array": + case "Int8Array": + case "NodeList": + case "Uint16Array": + case "Uint32Array": + case "Uint8Array": + case "Uint8ClampedArray": + return true; + } + return false; + } + function b6(r, i, t, o) { + if (!ta(t)) { + var s = Jy(t, r, o); + return s && s[j(i)]; + } + } + function a_(r, i, t) { + if (r === void 0 && (r = ui), i === void 0 && (i = ui), t === void 0 && (t = gr), r.flags & 67359327 && i.flags & 180227 && t.flags & 180227) { + var o = Su([r, i, t]), s = Oo.get(o); + return s || (s = { yieldType: r, returnType: i, nextType: t }, Oo.set(o, s)), s; + } + return { yieldType: r, returnType: i, nextType: t }; + } + function S6(r) { + for (var i, t, o, s = 0, u = r; s < u.length; s++) { + var h = u[s]; + if (!(h === void 0 || h === no)) { + if (h === $o) + return $o; + i = e.append(i, h.yieldType), t = e.append(t, h.returnType), o = e.append(o, h.nextType); + } + } + return i || t || o ? a_(i && Pa(i), t && Pa(t), o && Do(o)) : no; + } + function R0(r, i) { + return r[i]; + } + function mf(r, i, t) { + return r[i] = t; + } + function Jy(r, i, t) { + if (ta(r)) + return $o; + if (!(r.flags & 1048576)) { + var o = T6(r, i, t); + if (o === no) { + t && AS(t, r, !!(i & 2)); + return; + } + return o; + } + var s = i & 2 ? "iterationTypesOfAsyncIterable" : "iterationTypesOfIterable", u = R0(r, s); + if (u) + return u === no ? void 0 : u; + for (var h, z = 0, me = r.types; z < me.length; z++) { + var Me = me[z], $e = T6(Me, i, t); + if ($e === no) { + t && AS(t, r, !!(i & 2)), mf(r, s, no); + return; + } else + h = e.append(h, $e); + } + var tr = h ? S6(h) : no; + return mf(r, s, tr), tr === no ? void 0 : tr; + } + function ES(r, i) { + if (r === no) + return no; + if (r === $o) + return $o; + var t = r.yieldType, o = r.returnType, s = r.nextType; + return i && oD(true), a_(ag(t, i) || Oe, ag(o, i) || Oe, s); + } + function T6(r, i, t) { + if (ta(r)) + return $o; + if (i & 2) { + var o = CS(r, St) || E6(r, St); + if (o) + return i & 8 ? ES(o, t) : o; + } + if (i & 1) { + var o = CS(r, pa) || E6(r, pa); + if (o) + if (i & 2) { + if (o !== no) + return mf(r, "iterationTypesOfAsyncIterable", ES(o, t)); + } else + return o; + } + if (i & 2) { + var o = kS(r, St, t); + if (o !== no) + return o; + } + if (i & 1) { + var o = kS(r, pa, t); + if (o !== no) + return i & 2 ? mf(r, "iterationTypesOfAsyncIterable", o ? ES(o, t) : no) : o; + } + return no; + } + function CS(r, i) { + return R0(r, i.iterableCacheKey); + } + function x6(r, i) { + var t = CS(r, i) || kS(r, i, void 0); + return t === no ? xi : t; + } + function E6(r, i) { + var t; + if (Xf(r, t = i.getGlobalIterableType(false)) || Xf(r, t = i.getGlobalIterableIteratorType(false))) { + var o = xo(r)[0], s = x6(t, i), u = s.returnType, h = s.nextType; + return mf(r, i.iterableCacheKey, a_(i.resolveIterationType(o, void 0) || o, i.resolveIterationType(u, void 0) || u, h)); + } + if (Xf(r, i.getGlobalGeneratorType(false))) { + var z = xo(r), o = z[0], u = z[1], h = z[2]; + return mf(r, i.iterableCacheKey, a_(i.resolveIterationType(o, void 0) || o, i.resolveIterationType(u, void 0) || u, h)); + } + } + function GF(r) { + var i = Ex(false), t = i && da(Jt(i), e.escapeLeadingUnderscores(r)); + return t && _f(t) ? pf(t) : "__@".concat(r); + } + function kS(r, i, t) { + var o, s = bi(r, GF(i.iteratorSymbolName)), u = s && !(s.flags & 16777216) ? Jt(s) : void 0; + if (ta(u)) + return mf(r, i.iterableCacheKey, $o); + var h = u ? ot(u, 0) : void 0; + if (!e.some(h)) + return mf(r, i.iterableCacheKey, no); + var z = Do(e.map(h, yo)), me = (o = C6(z, i, t)) !== null && o !== void 0 ? o : no; + return mf(r, i.iterableCacheKey, me); + } + function AS(r, i, t) { + var o = t ? e.Diagnostics.Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator : e.Diagnostics.Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator; + zu(r, !!Sv(i), o, Ot(i)); + } + function C6(r, i, t) { + if (ta(r)) + return $o; + var o = k6(r, i) || HF(r, i) || N6(r, i, t); + return o === no ? void 0 : o; + } + function k6(r, i) { + return R0(r, i.iteratorCacheKey); + } + function HF(r, i) { + var t = i.getGlobalIterableIteratorType(false); + if (Xf(r, t)) { + var o = xo(r)[0], s = k6(t, i) || N6(t, i, void 0), u = s === no ? xi : s, h = u.returnType, z = u.nextType; + return mf(r, i.iteratorCacheKey, a_(o, h, z)); + } + if (Xf(r, i.getGlobalIteratorType(false)) || Xf(r, i.getGlobalGeneratorType(false))) { + var me = xo(r), o = me[0], h = me[1], z = me[2]; + return mf(r, i.iteratorCacheKey, a_(o, h, z)); + } + } + function A6(r, i) { + var t = da(r, "done") || xt; + return ao(i === 0 ? xt : Dt, t); + } + function XF(r) { + return A6(r, 0); + } + function QF(r) { + return A6(r, 1); + } + function YF(r) { + if (ta(r)) + return $o; + var i = R0(r, "iterationTypesOfIteratorResult"); + if (i) + return i; + if (Xf(r, O3(false))) { + var t = xo(r)[0]; + return mf(r, "iterationTypesOfIteratorResult", a_(t, void 0, void 0)); + } + if (Xf(r, F3(false))) { + var o = xo(r)[0]; + return mf(r, "iterationTypesOfIteratorResult", a_(void 0, o, void 0)); + } + var s = ec(r, XF), u = s !== ui ? da(s, "value") : void 0, h = ec(r, QF), z = h !== ui ? da(h, "value") : void 0; + return !u && !z ? mf(r, "iterationTypesOfIteratorResult", no) : mf(r, "iterationTypesOfIteratorResult", a_(u, z || Fi, void 0)); + } + function NS(r, i, t, o) { + var s, u, h, z, me = bi(r, t); + if (!(!me && t !== "next")) { + var Me = me && !(t === "next" && me.flags & 16777216) ? t === "next" ? Jt(me) : Ks(Jt(me), 2097152) : void 0; + if (ta(Me)) + return t === "next" ? $o : Pr; + var $e = Me ? ot(Me, 0) : e.emptyArray; + if ($e.length === 0) { + if (o) { + var tr = t === "next" ? i.mustHaveANextMethodDiagnostic : i.mustBeAMethodDiagnostic; + Xr(o, tr, t); + } + return t === "next" ? $o : void 0; + } + if ((Me == null ? void 0 : Me.symbol) && $e.length === 1) { + var dr = i.getGlobalGeneratorType(false), Dr = i.getGlobalIteratorType(false), Qr = ((u = (s = dr.symbol) === null || s === void 0 ? void 0 : s.members) === null || u === void 0 ? void 0 : u.get(t)) === Me.symbol, li = !Qr && ((z = (h = Dr.symbol) === null || h === void 0 ? void 0 : h.members) === null || z === void 0 ? void 0 : z.get(t)) === Me.symbol; + if (Qr || li) { + var Ti = Qr ? dr : Dr, Ci = Me.mapper; + return a_(ap(Ti.typeParameters[0], Ci), ap(Ti.typeParameters[1], Ci), t === "next" ? ap(Ti.typeParameters[2], Ci) : void 0); + } + } + for (var $i, Zi, qt = 0, Nt = $e; qt < Nt.length; qt++) { + var Ra = Nt[qt]; + t !== "throw" && e.some(Ra.parameters) && ($i = e.append($i, $u(Ra, 0))), Zi = e.append(Zi, yo(Ra)); + } + var ca, Sn; + if (t !== "throw") { + var ja = $i ? Pa($i) : gr; + if (t === "next") + Sn = ja; + else if (t === "return") { + var Fn = i.resolveIterationType(ja, o) || Oe; + ca = e.append(ca, Fn); + } + } + var wn, Tn = Zi ? Do(Zi) : ui, Eo = i.resolveIterationType(Tn, o) || Oe, lt = YF(Eo); + return lt === no ? (o && Xr(o, i.mustHaveAValueDiagnostic, t), wn = Oe, ca = e.append(ca, Oe)) : (wn = lt.yieldType, ca = e.append(ca, lt.returnType)), a_(wn, Pa(ca), Sn); + } + } + function N6(r, i, t) { + var o = S6([NS(r, i, "next", t), NS(r, i, "return", t), NS(r, i, "throw", t)]); + return mf(r, i.iteratorCacheKey, o); + } + function Jg(r, i, t) { + if (!ta(i)) { + var o = P6(i, t); + return o && o[j(r)]; + } + } + function P6(r, i) { + if (ta(r)) + return $o; + var t = i ? 2 : 1, o = i ? St : pa; + return Jy(r, t, void 0) || C6(r, o, void 0); + } + function $F(r) { + Mf(r) || sL(r); + } + function B0(r, i) { + var t = !!(i & 1), o = !!(i & 2); + return t ? Jg(1, r, o) || Pe : o ? k_(r) || Pe : r; + } + function I6(r, i) { + var t = B0(i, e.getFunctionFlags(r)); + return !!t && fs5(t, 16387); + } + function ZF(r) { + var i; + if (!Mf(r)) { + var t = e.getContainingFunctionOrClassStaticBlock(r); + if (t && e.isClassStaticBlockDeclaration(t)) { + Hs(r, e.Diagnostics.A_return_statement_cannot_be_used_inside_a_class_static_block); + return; + } + if (!t) { + Hs(r, e.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); + return; + } + var o = yl(t), s = yo(o), u = e.getFunctionFlags(t); + if (Ye || r.expression || s.flags & 131072) { + var h = r.expression ? Os(r.expression) : Tr; + if (t.kind === 173) + r.expression && Xr(r, e.Diagnostics.Setters_cannot_return_a_value); + else if (t.kind === 171) + r.expression && !op(h, s, r, r.expression) && Xr(r, e.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); + else if (yg(t)) { + var z = (i = B0(s, u)) !== null && i !== void 0 ? i : s, me = u & 2 ? xv(h, false, r, e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member) : h; + z && op(me, z, r, r.expression); + } + } else + t.kind !== 171 && ye.noImplicitReturns && !I6(t, s) && Xr(r, e.Diagnostics.Not_all_code_paths_return_a_value); + } + } + function eM(r) { + Mf(r) || r.flags & 32768 && Hs(r, e.Diagnostics.with_statements_are_not_allowed_in_an_async_function_block), yn(r.expression); + var i = e.getSourceFileOfNode(r); + if (!Jd(i)) { + var t = e.getSpanOfTokenAtPosition(i, r.pos).start, o = r.statement.pos; + rd(i, t, o - t, e.Diagnostics.The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any); + } + } + function rM(r) { + Mf(r); + var i, t = false, o = yn(r.expression), s = Cg(o); + e.forEach(r.caseBlock.clauses, function(u) { + u.kind === 290 && !t && (i === void 0 ? i = u : (Tt(u, e.Diagnostics.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement), t = true)), u.kind === 289 && fe(h(u)), e.forEach(u.statements, io), ye.noFallthroughCasesInSwitch && u.fallthroughFlowNode && my(u.fallthroughFlowNode) && Xr(u, e.Diagnostics.Fallthrough_case_in_switch); + function h(z) { + return function() { + var me = yn(z.expression), Me = Cg(me), $e = o; + (!Me || !s) && (me = Me ? Kl(me) : me, $e = Kl(o)), fS($e, me) || mE(me, $e, z.expression, void 0); + }; + } + }), r.caseBlock.locals && A_(r.caseBlock); + } + function iM(r) { + Mf(r) || e.findAncestor(r.parent, function(i) { + return e.isFunctionLike(i) ? "quit" : i.kind === 250 && i.label.escapedText === r.label.escapedText ? (Tt(r.label, e.Diagnostics.Duplicate_label_0, e.getTextOfNode(r.label)), true) : false; + }), io(r.statement); + } + function tM(r) { + Mf(r) || e.isIdentifier(r.expression) && !r.expression.escapedText && TL(r, e.Diagnostics.Line_break_not_permitted_here), r.expression && yn(r.expression); + } + function aM(r) { + Mf(r), M0(r.tryBlock); + var i = r.catchClause; + if (i) { + if (i.variableDeclaration) { + var t = i.variableDeclaration, o = e.getEffectiveTypeAnnotationNode(e.getRootDeclaration(t)); + if (o) { + var s = G_(t, false, 0); + s && !(s.flags & 3) && Hs(o, e.Diagnostics.Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified); + } else if (t.initializer) + Hs(t.initializer, e.Diagnostics.Catch_clause_variable_cannot_have_an_initializer); + else { + var u = i.block.locals; + u && e.forEachKey(i.locals, function(h) { + var z = u.get(h); + (z == null ? void 0 : z.valueDeclaration) && (z.flags & 2) !== 0 && Tt(z.valueDeclaration, e.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause, h); + }); + } + } + M0(i.block); + } + r.finallyBlock && M0(r.finallyBlock); + } + function J0(r, i, t) { + var o = Hn(r); + if (o.length !== 0) { + for (var s = 0, u = Pf(r); s < u.length; s++) { + var h = u[s]; + t && h.flags & 4194304 || w6(r, h, om(h, 8576, true), ml(h)); + } + var z = i.valueDeclaration; + if (z && e.isClassLike(z)) + for (var me = 0, Me = z.members; me < Me.length; me++) { + var $e = Me[me]; + if (!e.isStatic($e) && !Td($e)) { + var tr = Et($e); + w6(r, tr, Gs($e.name.expression), ml(tr)); + } + } + if (o.length > 1) + for (var dr = 0, Dr = o; dr < Dr.length; dr++) { + var Qr = Dr[dr]; + nM(r, Qr); + } + } + } + function w6(r, i, t, o) { + var s = i.valueDeclaration, u = e.getNameOfDeclaration(s); + if (!(u && e.isPrivateIdentifier(u))) + for (var h = ws(r, t), z = e.getObjectFlags(r) & 2 ? e.getDeclarationOfKind(r.symbol, 258) : void 0, me = s && s.kind === 221 || u && u.kind === 162 || Ys(i) === r.symbol ? s : void 0, Me = function(Dr) { + var Qr = Dr.declaration && Ys(Et(Dr.declaration)) === r.symbol ? Dr.declaration : void 0, li = me || Qr || (z && !e.some(Qc(r), function(Ti) { + return !!h_(Ti, i.escapedName) && !!cs(Ti, Dr.keyType); + }) ? z : void 0); + li && !ao(o, Dr.type) && Xr(li, e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_2_index_type_3, tn(i), Ot(o), Ot(Dr.keyType), Ot(Dr.type)); + }, $e = 0, tr = h; $e < tr.length; $e++) { + var dr = tr[$e]; + Me(dr); + } + } + function nM(r, i) { + for (var t = i.declaration, o = ws(r, i.keyType), s = e.getObjectFlags(r) & 2 ? e.getDeclarationOfKind(r.symbol, 258) : void 0, u = t && Ys(Et(t)) === r.symbol ? t : void 0, h = function($e) { + if ($e === i) + return "continue"; + var tr = $e.declaration && Ys(Et($e.declaration)) === r.symbol ? $e.declaration : void 0, dr = u || tr || (s && !e.some(Qc(r), function(Dr) { + return !!ss(Dr, i.keyType) && !!cs(Dr, $e.keyType); + }) ? s : void 0); + dr && !ao(i.type, $e.type) && Xr(dr, e.Diagnostics._0_index_type_1_is_not_assignable_to_2_index_type_3, Ot(i.keyType), Ot(i.type), Ot($e.keyType), Ot($e.type)); + }, z = 0, me = o; z < me.length; z++) { + var Me = me[z]; + h(Me); + } + } + function Tm(r, i) { + switch (r.escapedText) { + case "any": + case "unknown": + case "never": + case "number": + case "bigint": + case "boolean": + case "string": + case "symbol": + case "void": + case "object": + Xr(r, i, r.escapedText); + } + } + function oM(r) { + Ae >= 1 && r.escapedText === "Object" && (er < e.ModuleKind.ES2015 || e.getSourceFileOfNode(r).impliedNodeFormat === e.ModuleKind.CommonJS) && Xr(r, e.Diagnostics.Class_name_cannot_be_Object_when_targeting_ES5_with_module_0, e.ModuleKind[er]); + } + function sM(r) { + var i = e.filter(e.getJSDocTags(r), e.isJSDocParameterTag); + if (!!e.length(i)) { + var t = e.isInJSFile(r), o = new e.Set(), s = new e.Set(); + e.forEach(r.parameters, function(z, me) { + var Me = z.name; + e.isIdentifier(Me) && o.add(Me.escapedText), e.isBindingPattern(Me) && s.add(me); + }); + var u = Gm(r); + if (u) { + var h = e.lastOrUndefined(i); + t && h && e.isIdentifier(h.name) && h.typeExpression && h.typeExpression.type && !o.has(h.name.escapedText) && !Tu(Va(h.typeExpression.type)) && Xr(h.name, e.Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type, e.idText(h.name)); + } else + e.forEach(i, function(z, me) { + var Me = z.name; + s.has(me) || e.isIdentifier(Me) && o.has(Me.escapedText) || (e.isQualifiedName(Me) ? t && Xr(Me, e.Diagnostics.Qualified_name_0_is_not_allowed_without_a_leading_param_object_1, e.entityNameToString(Me), e.entityNameToString(Me.left)) : Ic(t, Me, e.Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name, e.idText(Me))); + }); + } + } + function jy(r) { + var i = false; + if (r) + for (var t = 0; t < r.length; t++) { + var o = r[t]; + $k(o), fe(s(o, t)); + } + function s(u, h) { + return function() { + u.default ? (i = true, cM(u.default, r, h)) : i && Xr(u, e.Diagnostics.Required_type_parameters_may_not_follow_optional_type_parameters); + for (var z = 0; z < h; z++) + r[z].symbol === u.symbol && Xr(u.name, e.Diagnostics.Duplicate_identifier_0, e.declarationNameToString(u.name)); + }; + } + } + function cM(r, i, t) { + o(r); + function o(s) { + if (s.kind === 178) { + var u = ty(s); + if (u.flags & 262144) + for (var h = t; h < i.length; h++) + u.symbol === Et(i[h]) && Xr(s, e.Diagnostics.Type_parameter_defaults_can_only_reference_previously_declared_type_parameters); + } + e.forEachChild(s, o); + } + } + function O6(r) { + if (!(r.declarations && r.declarations.length === 1)) { + var i = Aa(r); + if (!i.typeParametersChecked) { + i.typeParametersChecked = true; + var t = gM(r); + if (!t || t.length <= 1) + return; + var o = go(r); + if (!F6(t, o.localTypeParameters, e.getEffectiveTypeParameterDeclarations)) + for (var s = tn(r), u = 0, h = t; u < h.length; u++) { + var z = h[u]; + Xr(z.name, e.Diagnostics.All_declarations_of_0_must_have_identical_type_parameters, s); + } + } + } + } + function F6(r, i, t) { + for (var o = e.length(i), s = Ul(i), u = 0, h = r; u < h.length; u++) { + var z = h[u], me = t(z), Me = me.length; + if (Me < s || Me > o) + return false; + for (var $e = 0; $e < Me; $e++) { + var tr = me[$e], dr = i[$e]; + if (tr.name.escapedText !== dr.symbol.escapedName) + return false; + var Dr = e.getEffectiveConstraintOfTypeParameter(tr), Qr = Dr && Va(Dr), li = Tc(dr); + if (Qr && li && !wf(Qr, li)) + return false; + var Ti = tr.default && Va(tr.default), Ci = D_(dr); + if (Ti && Ci && !wf(Ti, Ci)) + return false; + } + } + return true; + } + function uM(r) { + return M6(r), xm(r), Jt(Et(r)); + } + function lM(r) { + e.forEach(r.members, io), A_(r); + } + function fM(r) { + e.some(r.decorators) && e.some(r.members, function(i) { + return e.hasStaticModifier(i) && e.isPrivateIdentifierClassElementDeclaration(i); + }) && Tt(r.decorators[0], e.Diagnostics.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator), !r.name && !e.hasSyntacticModifier(r, 512) && Hs(r, e.Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name), M6(r), e.forEach(r.members, io), A_(r); + } + function M6(r) { + K9(r), Fy(r), Sm(r, r.name), jy(e.getEffectiveTypeParameterDeclarations(r)), bv(r); + var i = Et(r), t = go(i), o = Rc(t), s = Jt(i); + O6(i), O0(i), MO(r); + var u = !!(r.flags & 16777216); + u || LO(r); + var h = e.getEffectiveBaseTypeNode(r); + if (h) { + e.forEach(h.typeArguments, io), Ae < 2 && fc(h.parent, 1); + var z = e.getClassExtendsHeritageElement(r); + z && z !== h && yn(z.expression); + var me = Qc(t); + me.length && fe(function() { + var Qr = me[0], li = Bl(t), Ti = $s(li); + if (pM(Ti, h), io(h.expression), e.some(h.typeArguments)) { + e.forEach(h.typeArguments, io); + for (var Ci = 0, $i = Mm(Ti, h.typeArguments, h); Ci < $i.length; Ci++) { + var Zi = $i[Ci]; + if (!n6(h, Zi.typeParameters)) + break; + } + } + var qt = Rc(Qr, t.thisType); + if (zc(o, qt, void 0) ? zc(s, _E(Ti), r.name || r, e.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1) : B6(r, o, qt, e.Diagnostics.Class_0_incorrectly_extends_base_class_1), li.flags & 8650752) + if (!Wd(s)) + Xr(r.name || r, e.Diagnostics.A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any); + else { + var Nt = ot(li, 1); + Nt.some(function(ca) { + return ca.flags & 4; + }) && !e.hasSyntacticModifier(r, 128) && Xr(r.name || r, e.Diagnostics.A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_be_declared_abstract); + } + if (!(Ti.symbol && Ti.symbol.flags & 32) && !(li.flags & 8650752)) { + var Ra = Xg(Ti, h.typeArguments, h); + e.forEach(Ra, function(ca) { + return !Sl(ca.declaration) && !wf(yo(ca), Qr); + }) && Xr(h.expression, e.Diagnostics.Base_constructors_must_all_have_the_same_return_type); + } + mM(t, Qr); + }); + } + _M(r, t, o, s); + var Me = e.getEffectiveImplementsTypeNodes(r); + if (Me) + for (var $e = 0, tr = Me; $e < tr.length; $e++) { + var dr = tr[$e]; + (!e.isEntityNameExpression(dr.expression) || e.isOptionalChain(dr.expression)) && Xr(dr.expression, e.Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments), vS(dr), fe(Dr(dr)); + } + fe(function() { + J0(t, i), J0(s, i, true), dS(r), hM(r); + }); + function Dr(Qr) { + return function() { + var li = bu(Va(Qr)); + if (!nn(li)) + if (ff(li)) { + var Ti = li.symbol && li.symbol.flags & 32 ? e.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass : e.Diagnostics.Class_0_incorrectly_implements_interface_1, Ci = Rc(li, t.thisType); + zc(o, Ci, void 0) || B6(r, o, Ci, Ti); + } else + Xr(Qr, e.Diagnostics.A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members); + }; + } + } + function _M(r, i, t, o) { + for (var s = e.getEffectiveBaseTypeNode(r), u = s && Qc(i), h = u != null && u.length ? Rc(e.first(u), i.thisType) : void 0, z = Bl(i), me = function(dr) { + if (e.hasAmbientModifier(dr)) + return "continue"; + e.isConstructorDeclaration(dr) && e.forEach(dr.parameters, function(Dr) { + e.isParameterPropertyDeclaration(Dr, dr) && L6(r, o, z, h, i, t, Dr, true); + }), L6(r, o, z, h, i, t, dr, false); + }, Me = 0, $e = r.members; Me < $e.length; Me++) { + var tr = $e[Me]; + me(tr); + } + } + function L6(r, i, t, o, s, u, h, z, me) { + me === void 0 && (me = true); + var Me = h.name && el(h.name) || el(h); + return Me ? R6(r, i, t, o, s, u, e.hasOverrideModifier(h), e.hasAbstractModifier(h), e.isStatic(h), z, e.symbolName(Me), me ? h : void 0) : 0; + } + function R6(r, i, t, o, s, u, h, z, me, Me, $e, tr) { + var dr = e.isInJSFile(r), Dr = !!(r.flags & 16777216); + if (o && (h || ye.noImplicitOverride)) { + var Qr = e.escapeLeadingUnderscores($e), li = me ? i : u, Ti = me ? t : o, Ci = bi(li, Qr), $i = bi(Ti, Qr), Zi = Ot(o); + if (Ci && !$i && h) { + if (tr) { + var qt = ZC($e, Ti); + qt ? Xr(tr, dr ? e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1 : e.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1, Zi, tn(qt)) : Xr(tr, dr ? e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0 : e.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0, Zi); + } + return 2; + } else if (Ci && ($i == null ? void 0 : $i.declarations) && ye.noImplicitOverride && !Dr) { + var Nt = e.some($i.declarations, e.hasAbstractModifier); + if (h) + return 0; + if (Nt) { + if (z && Nt) + return tr && Xr(tr, e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0, Zi), 1; + } else { + if (tr) { + var Ra = Me ? dr ? e.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 : e.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0 : dr ? e.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 : e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0; + Xr(tr, Ra, Zi); + } + return 1; + } + } + } else if (h) { + if (tr) { + var ca = Ot(s); + Xr(tr, dr ? e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class : e.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class, ca); + } + return 2; + } + return 0; + } + function B6(r, i, t, o) { + for (var s = false, u = function(Me) { + if (e.isStatic(Me)) + return "continue"; + var $e = Me.name && el(Me.name) || el(Me); + if ($e) { + var tr = bi(i, $e.escapedName), dr = bi(t, $e.escapedName); + if (tr && dr) { + var Dr = function() { + return e.chainDiagnosticMessages(void 0, e.Diagnostics.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2, tn($e), Ot(i), Ot(t)); + }; + zc(Jt(tr), Jt(dr), Me.name || Me, void 0, Dr) || (s = true); + } + } + }, h = 0, z = r.members; h < z.length; h++) { + var me = z[h]; + u(me); + } + s || zc(i, t, r.name || r, o); + } + function pM(r, i) { + var t = ot(r, 1); + if (t.length) { + var o = t[0].declaration; + if (o && e.hasEffectiveModifier(o, 8)) { + var s = e.getClassLikeDeclarationOfSymbol(r.symbol); + MS(i, s) || Xr(i, e.Diagnostics.Cannot_extend_a_class_0_Class_constructor_is_marked_as_private, cl(r.symbol)); + } + } + } + function dM(r, i) { + if (!i.name) + return 0; + var t = Et(r), o = go(t), s = Rc(o), u = Jt(t), h = e.getEffectiveBaseTypeNode(r), z = h && Qc(o), me = z != null && z.length ? Rc(e.first(z), o.thisType) : void 0, Me = Bl(o), $e = i.parent ? e.hasOverrideModifier(i) : e.hasSyntacticModifier(i, 16384), tr = e.unescapeLeadingUnderscores(e.getTextOfPropertyName(i.name)); + return R6(r, u, Me, me, o, s, $e, e.hasAbstractModifier(i), e.isStatic(i), false, tr); + } + function jg(r) { + return e.getCheckFlags(r) & 1 ? r.target : r; + } + function gM(r) { + return e.filter(r.declarations, function(i) { + return i.kind === 257 || i.kind === 258; + }); + } + function mM(r, i) { + var t, o, s = uo(i); + e: + for (var u = 0, h = s; u < h.length; u++) { + var z = h[u], me = jg(z); + if (!(me.flags & 4194304)) { + var Me = h_(r, me.escapedName); + if (!!Me) { + var $e = jg(Me), tr = e.getDeclarationModifierFlagsFromSymbol(me); + if (e.Debug.assert(!!$e, "derived should point to something, even if it is the base class' declaration."), $e === me) { + var dr = e.getClassLikeDeclarationOfSymbol(r.symbol); + if (tr & 128 && (!dr || !e.hasSyntacticModifier(dr, 128))) { + for (var Dr = 0, Qr = Qc(r); Dr < Qr.length; Dr++) { + var li = Qr[Dr]; + if (li !== i) { + var Ti = h_(li, me.escapedName), Ci = Ti && jg(Ti); + if (Ci && Ci !== me) + continue e; + } + } + dr.kind === 226 ? Xr(dr, e.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, tn(z), Ot(i)) : Xr(dr, e.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, Ot(r), tn(z), Ot(i)); + } + } else { + var $i = e.getDeclarationModifierFlagsFromSymbol($e); + if (tr & 8 || $i & 8) + continue; + var Zi = void 0, qt = me.flags & 98308, Nt = $e.flags & 98308; + if (qt && Nt) { + if (tr & 128 && !(me.valueDeclaration && e.isPropertyDeclaration(me.valueDeclaration) && me.valueDeclaration.initializer) || me.valueDeclaration && me.valueDeclaration.parent.kind === 258 || $e.valueDeclaration && e.isBinaryExpression($e.valueDeclaration)) + continue; + var Ra = qt !== 4 && Nt === 4, ca = qt === 4 && Nt !== 4; + if (Ra || ca) { + var Sn = Ra ? e.Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property : e.Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor; + Xr(e.getNameOfDeclaration($e.valueDeclaration) || $e.valueDeclaration, Sn, tn(me), Ot(i), Ot(r)); + } else if (ir) { + var ja = (t = $e.declarations) === null || t === void 0 ? void 0 : t.find(function(Eo) { + return Eo.kind === 167 && !Eo.initializer; + }); + if (ja && !($e.flags & 33554432) && !(tr & 128) && !($i & 128) && !(!((o = $e.declarations) === null || o === void 0) && o.some(function(Eo) { + return !!(Eo.flags & 16777216); + }))) { + var Fn = Tf(e.getClassLikeDeclarationOfSymbol(r.symbol)), wn = ja.name; + if (ja.exclamationToken || !Fn || !e.isIdentifier(wn) || !Ye || !j6(wn, r, Fn)) { + var Tn = e.Diagnostics.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration; + Xr(e.getNameOfDeclaration($e.valueDeclaration) || $e.valueDeclaration, Tn, tn(me), Ot(i)); + } + } + } + continue; + } else if (Bb(me)) { + if (Bb($e) || $e.flags & 4) + continue; + e.Debug.assert(!!($e.flags & 98304)), Zi = e.Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor; + } else + me.flags & 98304 ? Zi = e.Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function : Zi = e.Diagnostics.Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function; + Xr(e.getNameOfDeclaration($e.valueDeclaration) || $e.valueDeclaration, Zi, Ot(i), tn(me), Ot(r)); + } + } + } + } + } + function vM(r, i, t) { + if (!e.length(i)) + return t; + var o = new e.Map(); + e.forEach(t, function(dr) { + o.set(dr.escapedName, dr); + }); + for (var s = 0, u = i; s < u.length; s++) + for (var h = u[s], z = uo(Rc(h, r.thisType)), me = 0, Me = z; me < Me.length; me++) { + var $e = Me[me], tr = o.get($e.escapedName); + tr && $e.parent === tr.parent && o.delete($e.escapedName); + } + return e.arrayFrom(o.values()); + } + function yM(r, i) { + var t = Qc(r); + if (t.length < 2) + return true; + var o = new e.Map(); + e.forEach(Lv(r).declaredProperties, function(Ci) { + o.set(Ci.escapedName, { prop: Ci, containingType: r }); + }); + for (var s = true, u = 0, h = t; u < h.length; u++) + for (var z = h[u], me = uo(Rc(z, r.thisType)), Me = 0, $e = me; Me < $e.length; Me++) { + var tr = $e[Me], dr = o.get(tr.escapedName); + if (!dr) + o.set(tr.escapedName, { prop: tr, containingType: z }); + else { + var Dr = dr.containingType !== r; + if (Dr && !yw(dr.prop, tr)) { + s = false; + var Qr = Ot(dr.containingType), li = Ot(z), Ti = e.chainDiagnosticMessages(void 0, e.Diagnostics.Named_property_0_of_types_1_and_2_are_not_identical, tn(tr), Qr, li); + Ti = e.chainDiagnosticMessages(Ti, e.Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2, Ot(r), Qr, li), rn.add(e.createDiagnosticForNodeFromMessageChain(i, Ti)); + } + } + } + return s; + } + function hM(r) { + if (!(!Ye || !Ne || r.flags & 16777216)) + for (var i = Tf(r), t = 0, o = r.members; t < o.length; t++) { + var s = o[t]; + if (!(e.getEffectiveModifierFlags(s) & 2) && !e.isStatic(s) && J6(s)) { + var u = s.name; + if (e.isIdentifier(u) || e.isPrivateIdentifier(u) || e.isComputedPropertyName(u)) { + var h = Jt(Et(s)); + h.flags & 3 || ju(h) & 32768 || (!i || !j6(u, h, i)) && Xr(s.name, e.Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor, e.declarationNameToString(u)); + } + } + } + } + function J6(r) { + return r.kind === 167 && !e.hasAbstractModifier(r) && !r.exclamationToken && !r.initializer; + } + function DM(r, i, t, o, s) { + for (var u = 0, h = t; u < h.length; u++) { + var z = h[u]; + if (z.pos >= o && z.pos <= s) { + var me = e.factory.createPropertyAccessExpression(e.factory.createThis(), r); + e.setParent(me.expression, me), e.setParent(me, z), me.flowNode = z.returnFlowNode; + var Me = up(me, i, i_(i)); + if (!(ju(Me) & 32768)) + return true; + } + } + return false; + } + function j6(r, i, t) { + var o = e.isComputedPropertyName(r) ? e.factory.createElementAccessExpression(e.factory.createThis(), r.expression) : e.factory.createPropertyAccessExpression(e.factory.createThis(), r); + e.setParent(o.expression, o), e.setParent(o, t), o.flowNode = t.returnFlowNode; + var s = up(o, i, i_(i)); + return !(ju(s) & 32768); + } + function bM(r) { + Ff(r) || Z9(r), jy(r.typeParameters), fe(function() { + Tm(r.name, e.Diagnostics.Interface_name_cannot_be_0), bv(r); + var i = Et(r); + O6(i); + var t = e.getDeclarationOfKind(i, 258); + if (r === t) { + var o = go(i), s = Rc(o); + if (yM(o, r.name)) { + for (var u = 0, h = Qc(o); u < h.length; u++) { + var z = h[u]; + zc(s, Rc(z, o.thisType), r.name, e.Diagnostics.Interface_0_incorrectly_extends_interface_1); + } + J0(o, i); + } + } + r6(r); + }), e.forEach(e.getInterfaceBaseTypeNodes(r), function(i) { + (!e.isEntityNameExpression(i.expression) || e.isOptionalChain(i.expression)) && Xr(i.expression, e.Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments), vS(i); + }), e.forEach(r.members, io), fe(function() { + dS(r), A_(r); + }); + } + function SM(r) { + Ff(r), Tm(r.name, e.Diagnostics.Type_alias_name_cannot_be_0), bv(r), jy(r.typeParameters), r.type.kind === 138 ? (!x.has(r.name.escapedText) || e.length(r.typeParameters) !== 1) && Xr(r.type, e.Diagnostics.The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types) : (io(r.type), A_(r)); + } + function U6(r) { + var i = va(r); + if (!(i.flags & 16384)) { + i.flags |= 16384; + for (var t = 0, o = 0, s = r.members; o < s.length; o++) { + var u = s[o], h = TM(u, t); + va(u).enumMemberValue = h, t = typeof h == "number" ? h + 1 : void 0; + } + } + } + function TM(r, i) { + if (e.isComputedNonLiteralName(r.name)) + Xr(r.name, e.Diagnostics.Computed_property_names_are_not_allowed_in_enums); + else { + var t = e.getTextOfPropertyName(r.name); + e.isNumericLiteralName(t) && !e.isInfinityOrNaNString(t) && Xr(r.name, e.Diagnostics.An_enum_member_cannot_have_a_numeric_name); + } + if (r.initializer) + return xM(r); + if (!(r.parent.flags & 16777216 && !e.isEnumConst(r.parent) && as(Et(r.parent)) === 0)) { + if (i !== void 0) + return i; + Xr(r.name, e.Diagnostics.Enum_member_must_have_initializer); + } + } + function xM(r) { + var i = as(Et(r.parent)), t = e.isEnumConst(r.parent), o = r.initializer, s = i === 1 && !ro(r) ? void 0 : h(o); + if (s !== void 0) + t && typeof s == "number" && !isFinite(s) && Xr(o, isNaN(s) ? e.Diagnostics.const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN : e.Diagnostics.const_enum_member_initializer_was_evaluated_to_a_non_finite_value); + else { + if (i === 1) + return Xr(o, e.Diagnostics.Computed_values_are_not_permitted_in_an_enum_with_string_valued_members), 0; + if (t) + Xr(o, e.Diagnostics.const_enum_member_initializers_can_only_contain_literal_values_and_other_computed_enum_values); + else if (r.parent.flags & 16777216) + Xr(o, e.Diagnostics.In_ambient_enum_declarations_member_initializer_must_be_constant_expression); + else { + var u = yn(o); + Ns(u, 296) ? zc(u, go(Et(r.parent)), o, void 0) : Xr(o, e.Diagnostics.Only_numeric_enums_can_have_computed_members_but_this_expression_has_type_0_If_you_do_not_need_exhaustiveness_checks_consider_using_an_object_literal_instead, Ot(u)); + } + } + return s; + function h(me) { + switch (me.kind) { + case 219: + var Me = h(me.operand); + if (typeof Me == "number") + switch (me.operator) { + case 39: + return Me; + case 40: + return -Me; + case 54: + return ~Me; + } + break; + case 221: + var $e = h(me.left), tr = h(me.right); + if (typeof $e == "number" && typeof tr == "number") + switch (me.operatorToken.kind) { + case 51: + return $e | tr; + case 50: + return $e & tr; + case 48: + return $e >> tr; + case 49: + return $e >>> tr; + case 47: + return $e << tr; + case 52: + return $e ^ tr; + case 41: + return $e * tr; + case 43: + return $e / tr; + case 39: + return $e + tr; + case 40: + return $e - tr; + case 44: + return $e % tr; + case 42: + return Math.pow($e, tr); + } + else if (typeof $e == "string" && typeof tr == "string" && me.operatorToken.kind === 39) + return $e + tr; + break; + case 10: + case 14: + return me.text; + case 8: + return KS(me), +me.text; + case 212: + return h(me.expression); + case 79: + var dr = me; + return e.isInfinityOrNaNString(dr.escapedText) ? +dr.escapedText : e.nodeIsMissing(me) ? 0 : z(me, Et(r.parent), dr.escapedText); + case 207: + case 206: + if (PS(me)) { + var Dr = Gs(me.expression); + if (Dr.symbol && Dr.symbol.flags & 384) { + var Qr = void 0; + return me.kind === 206 ? Qr = me.name.escapedText : Qr = e.escapeLeadingUnderscores(e.cast(me.argumentExpression, e.isLiteralExpression).text), z(me, Dr.symbol, Qr); + } + } + break; + } + } + function z(me, Me, $e) { + var tr = Me.exports.get($e); + if (tr) { + var dr = tr.valueDeclaration; + if (dr !== r) + return dr && ns(dr, r) && e.isEnumDeclaration(dr.parent) ? H0(dr) : (Xr(me, e.Diagnostics.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums), 0); + Xr(me, e.Diagnostics.Property_0_is_used_before_being_assigned, tn(tr)); + } + } + } + function PS(r) { + var i = Gs(r); + return i === Pe ? false : r.kind === 79 || r.kind === 206 && PS(r.expression) || r.kind === 207 && PS(r.expression) && e.isStringLiteralLike(r.argumentExpression); + } + function EM(r) { + fe(function() { + return CM(r); + }); + } + function CM(r) { + Ff(r), Sm(r, r.name), bv(r), r.members.forEach(kM), U6(r); + var i = Et(r), t = e.getDeclarationOfKind(i, r.kind); + if (r === t) { + if (i.declarations && i.declarations.length > 1) { + var o = e.isEnumConst(r); + e.forEach(i.declarations, function(u) { + e.isEnumDeclaration(u) && e.isEnumConst(u) !== o && Xr(e.getNameOfDeclaration(u), e.Diagnostics.Enum_declarations_must_all_be_const_or_non_const); + }); + } + var s = false; + e.forEach(i.declarations, function(u) { + if (u.kind !== 260) + return false; + var h = u; + if (!h.members.length) + return false; + var z = h.members[0]; + z.initializer || (s ? Xr(z.name, e.Diagnostics.In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element) : s = true); + }); + } + } + function kM(r) { + e.isPrivateIdentifier(r.name) && Xr(r, e.Diagnostics.An_enum_member_cannot_be_named_with_a_private_identifier); + } + function AM(r) { + var i = r.declarations; + if (i) + for (var t = 0, o = i; t < o.length; t++) { + var s = o[t]; + if ((s.kind === 257 || s.kind === 256 && e.nodeIsPresent(s.body)) && !(s.flags & 16777216)) + return s; + } + } + function NM(r, i) { + var t = e.getEnclosingBlockScopeContainer(r), o = e.getEnclosingBlockScopeContainer(i); + return Cu(t) ? Cu(o) : Cu(o) ? false : t === o; + } + function PM(r) { + r.body && (io(r.body), e.isGlobalScopeAugmentation(r) || A_(r)), fe(i); + function i() { + var t = e.isGlobalScopeAugmentation(r), o = r.flags & 16777216; + t && !o && Xr(r.name, e.Diagnostics.Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambient_context); + var s = e.isAmbientModule(r), u = s ? e.Diagnostics.An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file : e.Diagnostics.A_namespace_declaration_is_only_allowed_at_the_top_level_of_a_namespace_or_module; + if (!Uy(r, u)) { + Ff(r) || !o && r.name.kind === 10 && Tt(r.name, e.Diagnostics.Only_ambient_modules_can_use_quoted_names), e.isIdentifier(r.name) && Sm(r, r.name), bv(r); + var h = Et(r); + if (h.flags & 512 && !o && h.declarations && h.declarations.length > 1 && V(r, e.shouldPreserveConstEnums(ye))) { + var z = AM(h); + z && (e.getSourceFileOfNode(r) !== e.getSourceFileOfNode(z) ? Xr(r.name, e.Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged) : r.pos < z.pos && Xr(r.name, e.Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged)); + var me = e.getDeclarationOfKind(h, 257); + me && NM(r, me) && (va(r).flags |= 32768); + } + if (s) + if (e.isExternalModuleAugmentation(r)) { + var Me = t || Et(r).flags & 33554432; + if (Me && r.body) + for (var $e = 0, tr = r.body.statements; $e < tr.length; $e++) { + var dr = tr[$e]; + IS(dr, t); + } + } else + Cu(r.parent) ? t ? Xr(r.name, e.Diagnostics.Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations) : e.isExternalModuleNameRelative(e.getTextOfIdentifierOrLiteral(r.name)) && Xr(r.name, e.Diagnostics.Ambient_module_declaration_cannot_specify_relative_module_name) : t ? Xr(r.name, e.Diagnostics.Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations) : Xr(r.name, e.Diagnostics.Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces); + } + } + } + function IS(r, i) { + var t; + switch (r.kind) { + case 237: + for (var o = 0, s = r.declarationList.declarations; o < s.length; o++) { + var u = s[o]; + IS(u, i); + } + break; + case 271: + case 272: + Hs(r, e.Diagnostics.Exports_and_export_assignments_are_not_permitted_in_module_augmentations); + break; + case 265: + case 266: + Hs(r, e.Diagnostics.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module); + break; + case 203: + case 254: + var h = r.name; + if (e.isBindingPattern(h)) { + for (var z = 0, me = h.elements; z < me.length; z++) { + var Me = me[z]; + IS(Me, i); + } + break; + } + case 257: + case 260: + case 256: + case 258: + case 261: + case 259: + if (i) + return; + var $e = Et(r); + if ($e) { + var tr = !($e.flags & 33554432); + tr || (tr = !!(!((t = $e.parent) === null || t === void 0) && t.declarations) && e.isExternalModuleAugmentation($e.parent.declarations[0])); + } + break; + } + } + function IM(r) { + switch (r.kind) { + case 79: + return r; + case 161: + do + r = r.left; + while (r.kind !== 79); + return r; + case 206: + do { + if (e.isModuleExportsAccessExpression(r.expression) && !e.isPrivateIdentifier(r.name)) + return r.name; + r = r.expression; + } while (r.kind !== 79); + return r; + } + } + function wS(r) { + var i = e.getExternalModuleName(r); + if (!i || e.nodeIsMissing(i)) + return false; + if (!e.isStringLiteral(i)) + return Xr(i, e.Diagnostics.String_literal_expected), false; + var t = r.parent.kind === 262 && e.isAmbientModule(r.parent.parent); + if (r.parent.kind !== 305 && !t) + return Xr(i, r.kind === 272 ? e.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : e.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module), false; + if (t && e.isExternalModuleNameRelative(i.text) && !Xu(r)) + return Xr(r, e.Diagnostics.Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name), false; + if (!e.isImportEqualsDeclaration(r) && r.assertClause) { + for (var o = false, s = 0, u = r.assertClause.elements; s < u.length; s++) { + var h = u[s]; + e.isStringLiteral(h.value) || (o = true, Xr(h.value, e.Diagnostics.Import_assertion_values_must_be_string_literal_expressions)); + } + return !o; + } + return true; + } + function j0(r) { + var i = Et(r), t = Ps(i); + if (t !== xe) { + i = so(i.exportSymbol || i); + var o = (i.flags & 1160127 ? 111551 : 0) | (i.flags & 788968 ? 788968 : 0) | (i.flags & 1920 ? 1920 : 0); + if (t.flags & o) { + var s = r.kind === 275 ? e.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : e.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; + Xr(r, s, tn(i)); + } + if (ye.isolatedModules && !e.isTypeOnlyImportOrExportDeclaration(r) && !(r.flags & 16777216)) { + var u = vu(i), h = !(t.flags & 111551); + if (h || u) + switch (r.kind) { + case 267: + case 270: + case 265: { + if (ye.preserveValueImports) { + e.Debug.assertIsDefined(r.name, "An ImportClause with a symbol should have a name"); + var s = h ? e.Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled : e.Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled, z = e.idText(r.kind === 270 && r.propertyName || r.name); + Jf(Xr(r, s, z), h ? void 0 : u, z); + } + h && r.kind === 265 && e.hasEffectiveModifier(r, 1) && Xr(r, e.Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided); + break; + } + case 275: + if (e.getSourceFileOfNode(u) !== e.getSourceFileOfNode(r)) { + var s = h ? e.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type : e.Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_isolatedModules_is_enabled, z = e.idText(r.propertyName || r.name); + Jf(Xr(r, s, z), h ? void 0 : u, z); + return; + } + } + } + if (e.isImportSpecifier(r)) { + var me = W6(i, r); + z6(me) && me.declarations && El(r, me.declarations, me.escapedName); + } + } + } + function z6(r) { + return !!r.declarations && e.every(r.declarations, function(i) { + return !!(e.getCombinedNodeFlags(i) & 268435456); + }); + } + function W6(r, i) { + if (!(r.flags & 2097152)) + return r; + var t = Ps(r); + if (t === xe) + return t; + for (; r.flags & 2097152; ) { + var o = wb(r); + if (o) { + if (o === t) + break; + if (o.declarations && e.length(o.declarations)) + if (z6(o)) { + El(i, o.declarations, o.escapedName); + break; + } else { + if (r === t) + break; + r = o; + } + } else + break; + } + return t; + } + function U0(r) { + Sm(r, r.name), j0(r), r.kind === 270 && e.idText(r.propertyName || r.name) === "default" && e.getESModuleInterop(ye) && er !== e.ModuleKind.System && (er < e.ModuleKind.ES2015 || e.getSourceFileOfNode(r).impliedNodeFormat === e.ModuleKind.CommonJS) && fc(r, 131072); + } + function q6(r) { + var i; + if (r.assertClause) { + var t = e.isExclusivelyTypeOnlyImportOrExport(r), o = e.getResolutionModeOverrideForClause(r.assertClause, t ? Tt : void 0); + if (t && o) + return e.isNightly() || Tt(r.assertClause, e.Diagnostics.Resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next), e.getEmitModuleResolutionKind(ye) !== e.ModuleResolutionKind.Node16 && e.getEmitModuleResolutionKind(ye) !== e.ModuleResolutionKind.NodeNext ? Tt(r.assertClause, e.Diagnostics.Resolution_modes_are_only_supported_when_moduleResolution_is_node16_or_nodenext) : void 0; + var s = er === e.ModuleKind.NodeNext && r.moduleSpecifier && hf(r.moduleSpecifier); + if (s !== e.ModuleKind.ESNext && er !== e.ModuleKind.ESNext) + return Tt(r.assertClause, er === e.ModuleKind.NodeNext ? e.Diagnostics.Import_assertions_are_not_allowed_on_statements_that_transpile_to_commonjs_require_calls : e.Diagnostics.Import_assertions_are_only_supported_when_the_module_option_is_set_to_esnext_or_nodenext); + if (e.isImportDeclaration(r) ? (i = r.importClause) === null || i === void 0 ? void 0 : i.isTypeOnly : r.isTypeOnly) + return Tt(r.assertClause, e.Diagnostics.Import_assertions_cannot_be_used_with_type_only_imports_or_exports); + if (o) + return Tt(r.assertClause, e.Diagnostics.resolution_mode_can_only_be_set_for_type_only_imports); + } + } + function wM(r) { + if (!Uy(r, e.isInJSFile(r) ? e.Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : e.Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { + if (!Ff(r) && e.hasEffectiveModifiers(r) && Hs(r, e.Diagnostics.An_import_declaration_cannot_have_modifiers), wS(r)) { + var i = r.importClause; + if (i && !EL(i) && (i.name && U0(i), i.namedBindings)) + if (i.namedBindings.kind === 268) + U0(i.namedBindings), er !== e.ModuleKind.System && (er < e.ModuleKind.ES2015 || e.getSourceFileOfNode(r).impliedNodeFormat === e.ModuleKind.CommonJS) && e.getESModuleInterop(ye) && fc(r, 65536); + else { + var t = ac(r, r.moduleSpecifier); + t && e.forEach(i.namedBindings.elements, U0); + } + } + q6(r); + } + } + function OM(r) { + if (!Uy(r, e.isInJSFile(r) ? e.Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : e.Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module) && (Ff(r), e.isInternalModuleImportEqualsDeclaration(r) || wS(r))) + if (U0(r), e.hasSyntacticModifier(r, 1) && Gt(r), r.moduleReference.kind !== 277) { + var i = Ps(Et(r)); + if (i !== xe) { + if (i.flags & 111551) { + var t = e.getFirstIdentifier(r.moduleReference); + Ds(t, 112575).flags & 1920 || Xr(t, e.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name, e.declarationNameToString(t)); + } + i.flags & 788968 && Tm(r.name, e.Diagnostics.Import_name_cannot_be_0); + } + r.isTypeOnly && Tt(r, e.Diagnostics.An_import_alias_cannot_use_import_type); + } else + er >= e.ModuleKind.ES2015 && e.getSourceFileOfNode(r).impliedNodeFormat === void 0 && !r.isTypeOnly && !(r.flags & 16777216) && Tt(r, e.Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead); + } + function FM(r) { + if (!Uy(r, e.isInJSFile(r) ? e.Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module : e.Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { + if (!Ff(r) && e.hasSyntacticModifiers(r) && Hs(r, e.Diagnostics.An_export_declaration_cannot_have_modifiers), r.moduleSpecifier && r.exportClause && e.isNamedExports(r.exportClause) && e.length(r.exportClause.elements) && Ae === 0 && fc(r, 4194304), MM(r), !r.moduleSpecifier || wS(r)) + if (r.exportClause && !e.isNamespaceExport(r.exportClause)) { + e.forEach(r.exportClause.elements, UM); + var i = r.parent.kind === 262 && e.isAmbientModule(r.parent.parent), t = !i && r.parent.kind === 262 && !r.moduleSpecifier && r.flags & 16777216; + r.parent.kind !== 305 && !i && !t && Xr(r, e.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); + } else { + var o = ac(r, r.moduleSpecifier); + o && ll(o) ? Xr(r.moduleSpecifier, e.Diagnostics.Module_0_uses_export_and_cannot_be_used_with_export_Asterisk, tn(o)) : r.exportClause && j0(r.exportClause), er !== e.ModuleKind.System && (er < e.ModuleKind.ES2015 || e.getSourceFileOfNode(r).impliedNodeFormat === e.ModuleKind.CommonJS) && (r.exportClause ? e.getESModuleInterop(ye) && fc(r, 65536) : fc(r, 32768)); + } + q6(r); + } + } + function MM(r) { + var i; + return r.isTypeOnly ? ((i = r.exportClause) === null || i === void 0 ? void 0 : i.kind) === 273 ? DA(r.exportClause) : Tt(r, e.Diagnostics.Only_named_exports_may_use_export_type) : false; + } + function Uy(r, i) { + var t = r.parent.kind === 305 || r.parent.kind === 262 || r.parent.kind === 261; + return t || Hs(r, i), !t; + } + function LM(r) { + return e.forEachImportClauseDeclaration(r, function(i) { + return !!Et(i).isReferenced; + }); + } + function RM(r) { + return e.forEachImportClauseDeclaration(r, function(i) { + return !!Aa(Et(i)).constEnumReferenced; + }); + } + function BM(r) { + return e.isImportDeclaration(r) && r.importClause && !r.importClause.isTypeOnly && LM(r.importClause) && !G0(r.importClause, true) && !RM(r.importClause); + } + function JM(r) { + return e.isImportEqualsDeclaration(r) && e.isExternalModuleReference(r.moduleReference) && !r.isTypeOnly && Et(r).isReferenced && !G0(r, false) && !Aa(Et(r)).constEnumReferenced; + } + function jM(r) { + for (var i = 0, t = r.statements; i < t.length; i++) { + var o = t[i]; + (BM(o) || JM(o)) && Xr(o, e.Diagnostics.This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error); + } + } + function UM(r) { + if (j0(r), e.getEmitDeclarations(ye) && V_(r.propertyName || r.name, true), r.parent.parent.moduleSpecifier) + e.getESModuleInterop(ye) && er !== e.ModuleKind.System && (er < e.ModuleKind.ES2015 || e.getSourceFileOfNode(r).impliedNodeFormat === e.ModuleKind.CommonJS) && e.idText(r.propertyName || r.name) === "default" && fc(r, 131072); + else { + var i = r.propertyName || r.name, t = es(i, i.escapedText, 2998271, void 0, void 0, true); + if (t && (t === mi || t === pe || t.declarations && Cu(zi(t.declarations[0])))) + Xr(i, e.Diagnostics.Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module, e.idText(i)); + else { + Gt(r); + var o = t && (t.flags & 2097152 ? Ps(t) : t); + (!o || o === xe || o.flags & 111551) && Os(r.propertyName || r.name); + } + } + } + function zM(r) { + var i = r.isExportEquals ? e.Diagnostics.An_export_assignment_must_be_at_the_top_level_of_a_file_or_module_declaration : e.Diagnostics.A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration; + if (!Uy(r, i)) { + var t = r.parent.kind === 305 ? r.parent : r.parent.parent; + if (t.kind === 261 && !e.isAmbientModule(t)) { + r.isExportEquals ? Xr(r, e.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace) : Xr(r, e.Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + return; + } + !Ff(r) && e.hasEffectiveModifiers(r) && Hs(r, e.Diagnostics.An_export_assignment_cannot_have_modifiers); + var o = e.getEffectiveTypeAnnotationNode(r); + if (o && zc(Os(r.expression), Va(o), r.expression), r.expression.kind === 79) { + var s = r.expression, u = Ds(s, 67108863, true, true, r); + if (u) { + o0(u, s); + var h = u.flags & 2097152 ? Ps(u) : u; + (h === xe || h.flags & 111551) && Os(r.expression); + } else + Os(r.expression); + e.getEmitDeclarations(ye) && V_(r.expression, true); + } else + Os(r.expression); + V6(t), r.flags & 16777216 && !e.isEntityNameExpression(r.expression) && Tt(r.expression, e.Diagnostics.The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context), r.isExportEquals && !(r.flags & 16777216) && (er >= e.ModuleKind.ES2015 && e.getSourceFileOfNode(r).impliedNodeFormat !== e.ModuleKind.CommonJS ? Tt(r, e.Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead) : er === e.ModuleKind.System && Tt(r, e.Diagnostics.Export_assignment_is_not_supported_when_module_flag_is_system)); + } + } + function WM(r) { + return e.forEachEntry(r.exports, function(i, t) { + return t !== "export="; + }); + } + function V6(r) { + var i = Et(r), t = Aa(i); + if (!t.exportsChecked) { + var o = i.exports.get("export="); + if (o && WM(i)) { + var s = ru(o) || o.valueDeclaration; + s && !Xu(s) && !e.isInJSFile(s) && Xr(s, e.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); + } + var u = Pu(i); + u && u.forEach(function(h, z) { + var me = h.declarations, Me = h.flags; + if (z !== "__export" && !(Me & 1920)) { + var $e = e.countWhere(me, e.and(O, e.not(e.isInterfaceDeclaration))); + if (!(Me & 524288 && $e <= 2) && $e > 1 && !z0(me)) + for (var tr = 0, dr = me; tr < dr.length; tr++) { + var Dr = dr[tr]; + k(Dr) && rn.add(e.createDiagnosticForNode(Dr, e.Diagnostics.Cannot_redeclare_exported_variable_0, e.unescapeLeadingUnderscores(z))); + } + } + }), t.exportsChecked = true; + } + } + function z0(r) { + return r && r.length > 1 && r.every(function(i) { + return e.isInJSFile(i) && e.isAccessExpression(i) && (e.isExportsIdentifier(i.expression) || e.isModuleExportsAccessExpression(i.expression)); + }); + } + function io(r) { + if (r) { + var i = Ie; + Ie = r, Ee = 0, qM(r), Ie = i; + } + } + function qM(r) { + e.isInJSFile(r) && e.forEach(r.jsDoc, function(t) { + var o = t.tags; + return e.forEach(o, io); + }); + var i = r.kind; + if (g) + switch (i) { + case 261: + case 257: + case 258: + case 256: + g.throwIfCancellationRequested(); + } + switch (i >= 237 && i <= 253 && r.flowNode && !my(r.flowNode) && Ic(ye.allowUnreachableCode === false, r, e.Diagnostics.Unreachable_code_detected), i) { + case 163: + return $k(r); + case 164: + return Zk(r); + case 167: + return i6(r); + case 166: + return RO(r); + case 180: + case 179: + case 174: + case 175: + case 176: + return Dv(r); + case 169: + case 168: + return BO(r); + case 170: + return JO(r); + case 171: + return jO(r); + case 172: + case 173: + return a6(r); + case 178: + return vS(r); + case 177: + return OO(r); + case 181: + return qO(r); + case 182: + return VO(r); + case 183: + return KO(r); + case 184: + return GO(r); + case 187: + case 188: + return HO(r); + case 191: + case 185: + case 186: + return io(r.type); + case 192: + return $O(r); + case 193: + return ZO(r); + case 189: + return eF(r); + case 190: + return rF(r); + case 198: + return iF(r); + case 200: + return tF(r); + case 197: + return aF(r); + case 328: + return hF(r); + case 329: + return yF(r); + case 345: + case 338: + case 339: + return _F(r); + case 344: + return pF(r); + case 343: + return dF(r); + case 340: + return gF(r); + case 347: + return mF(r); + case 317: + vF(r); + case 315: + case 314: + case 312: + case 313: + case 322: + K6(r), e.forEachChild(r, io); + return; + case 318: + VM(r); + return; + case 309: + return io(r.type); + case 333: + case 335: + case 334: + return DF(r); + case 194: + return XO(r); + case 195: + return QO(r); + case 256: + return fF(r); + case 235: + case 262: + return M0(r); + case 237: + return LF(r); + case 238: + return RF(r); + case 239: + return BF(r); + case 240: + return UF(r); + case 241: + return zF(r); + case 242: + return WF(r); + case 243: + return VF(r); + case 244: + return qF(r); + case 245: + case 246: + return $F(r); + case 247: + return ZF(r); + case 248: + return eM(r); + case 249: + return rM(r); + case 250: + return iM(r); + case 251: + return tM(r); + case 252: + return aM(r); + case 254: + return SS(r); + case 203: + return MF(r); + case 257: + return fM(r); + case 258: + return bM(r); + case 259: + return SM(r); + case 260: + return EM(r); + case 261: + return PM(r); + case 266: + return wM(r); + case 265: + return OM(r); + case 272: + return FM(r); + case 271: + return zM(r); + case 236: + case 253: + Mf(r); + return; + case 276: + return zO(r); + } + } + function K6(r) { + e.isInJSFile(r) || Tt(r, e.Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); + } + function VM(r) { + K6(r), io(r.type); + var i = r.parent; + if (e.isParameter(i) && e.isJSDocFunctionType(i.parent)) { + e.last(i.parent.parameters) !== i && Xr(r, e.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list); + return; + } + e.isJSDocTypeExpression(i) || Xr(r, e.Diagnostics.JSDoc_may_only_appear_in_the_last_parameter_of_a_signature); + var t = r.parent.parent; + if (!e.isJSDocParameterTag(t)) { + Xr(r, e.Diagnostics.JSDoc_may_only_appear_in_the_last_parameter_of_a_signature); + return; + } + var o = e.getParameterSymbolFromJSDoc(t); + if (!!o) { + var s = e.getHostSignatureFromJSDoc(t); + (!s || e.last(s.parameters).symbol !== o) && Xr(r, e.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list); + } + } + function KM(r) { + var i = Va(r.type), t = r.parent, o = r.parent.parent; + if (e.isJSDocTypeExpression(r.parent) && e.isJSDocParameterTag(o)) { + var s = e.getHostSignatureFromJSDoc(o), u = e.isJSDocCallbackTag(o.parent.parent); + if (s || u) { + var h = u ? e.lastOrUndefined(o.parent.parent.typeExpression.parameters) : e.lastOrUndefined(s.parameters), z = e.getParameterSymbolFromJSDoc(o); + if (!h || z && h.symbol === z && e.isRestParameter(h)) + return Zs(i); + } + } + return e.isParameter(t) && e.isJSDocFunctionType(t.parent) ? Zs(i) : kc(i); + } + function xm(r) { + var i = e.getSourceFileOfNode(r), t = va(i); + t.flags & 1 || (t.deferredNodes || (t.deferredNodes = new e.Set()), t.deferredNodes.add(r)); + } + function GM(r) { + var i = va(r); + i.deferredNodes && i.deferredNodes.forEach(HM); + } + function HM(r) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("check", "checkDeferredNode", { kind: r.kind, pos: r.pos, end: r.end, path: r.tracingPath }); + var i = Ie; + switch (Ie = r, Ee = 0, r.kind) { + case 208: + case 209: + case 210: + case 165: + case 280: + Fg(r); + break; + case 213: + case 214: + case 169: + case 168: + Z7(r); + break; + case 172: + case 173: + a6(r); + break; + case 226: + lM(r); + break; + case 163: + wO(r); + break; + case 279: + k5(r); + break; + case 278: + N5(r); + break; + } + Ie = i, e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + function XM(r) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("check", "checkSourceFile", { path: r.path }, true), e.performance.mark("beforeCheck"), QM(r), e.performance.mark("afterCheck"), e.performance.measure("Check", "beforeCheck", "afterCheck"), e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + function G6(r, i) { + if (i) + return false; + switch (r) { + case 0: + return !!ye.noUnusedLocals; + case 1: + return !!ye.noUnusedParameters; + default: + return e.Debug.assertNever(r); + } + } + function H6(r) { + return Fo.get(r.path) || e.emptyArray; + } + function QM(r) { + var i = va(r); + if (!(i.flags & 1)) { + if (e.skipTypeChecking(r, ye, l)) + return; + DL(r), e.clear(Xt), e.clear(Za), e.clear(bn), e.clear(_a), e.forEach(r.statements, io), io(r.endOfFileToken), GM(r), e.isExternalOrCommonJsModule(r) && A_(r), fe(function() { + !r.isDeclarationFile && (ye.noUnusedLocals || ye.noUnusedParameters) && _6(H6(r), function(t, o, s) { + !e.containsParseError(t) && G6(o, !!(t.flags & 16777216)) && rn.add(s); + }); + }), ye.importsNotUsedAsValues === 2 && !r.isDeclarationFile && e.isExternalModule(r) && jM(r), e.isExternalOrCommonJsModule(r) && V6(r), Xt.length && (e.forEach(Xt, CF), e.clear(Xt)), Za.length && (e.forEach(Za, kF), e.clear(Za)), bn.length && (e.forEach(bn, IF), e.clear(bn)), _a.length && (e.forEach(_a, OF), e.clear(_a)), i.flags |= 1; + } + } + function X6(r, i) { + try { + return g = i, YM(r); + } finally { + g = void 0; + } + } + function OS() { + for (var r = 0, i = D; r < i.length; r++) { + var t = i[r]; + t(); + } + D = []; + } + function FS(r) { + OS(); + var i = fe; + fe = function(t) { + return t(); + }, XM(r), fe = i; + } + function YM(r) { + if (r) { + OS(); + var i = rn.getGlobalDiagnostics(), t = i.length; + FS(r); + var o = rn.getDiagnostics(r.fileName), s = rn.getGlobalDiagnostics(); + if (s !== i) { + var u = e.relativeComplement(i, s, e.compareDiagnostics); + return e.concatenate(u, o); + } else if (t === 0 && s.length > 0) + return e.concatenate(s, o); + return o; + } + return e.forEach(l.getSourceFiles(), FS), rn.getDiagnostics(); + } + function $M() { + return OS(), rn.getGlobalDiagnostics(); + } + function ZM(r, i) { + if (r.flags & 33554432) + return []; + var t = e.createSymbolTable(), o = false; + return s(), t.delete("this"), Y_(t); + function s() { + for (; r; ) { + switch (r.locals && !Cu(r) && h(r.locals, i), r.kind) { + case 305: + if (!e.isExternalModule(r)) + break; + case 261: + z(Et(r).exports, i & 2623475); + break; + case 260: + h(Et(r).exports, i & 8); + break; + case 226: + var me = r.name; + me && u(r.symbol, i); + case 257: + case 258: + o || h(Nf(Et(r)), i & 788968); + break; + case 213: + var Me = r.name; + Me && u(r.symbol, i); + break; + } + e.introducesArgumentsExoticObject(r) && u(or, i), o = e.isStatic(r), r = r.parent; + } + h(ii, i); + } + function u(me, Me) { + if (e.getCombinedLocalAndExportSymbolFlags(me) & Me) { + var $e = me.escapedName; + t.has($e) || t.set($e, me); + } + } + function h(me, Me) { + Me && me.forEach(function($e) { + u($e, Me); + }); + } + function z(me, Me) { + Me && me.forEach(function($e) { + !e.getDeclarationOfKind($e, 275) && !e.getDeclarationOfKind($e, 274) && u($e, Me); + }); + } + } + function e9(r) { + return r.kind === 79 && zy(r.parent) && e.getNameOfDeclaration(r.parent) === r; + } + function zy(r) { + switch (r.kind) { + case 163: + case 257: + case 258: + case 259: + case 260: + case 345: + case 338: + case 339: + return true; + case 267: + return r.isTypeOnly; + case 270: + case 275: + return r.parent.parent.isTypeOnly; + default: + return false; + } + } + function Q6(r) { + for (; r.parent.kind === 161; ) + r = r.parent; + return r.parent.kind === 178; + } + function r9(r) { + for (; r.parent.kind === 206; ) + r = r.parent; + return r.parent.kind === 228; + } + function Y6(r, i) { + for (var t; r = e.getContainingClass(r), !(!r || (t = i(r))); ) + ; + return t; + } + function i9(r) { + return !!e.findAncestor(r, function(i) { + return e.isConstructorDeclaration(i) && e.nodeIsPresent(i.body) || e.isPropertyDeclaration(i) ? true : e.isClassLike(i) || e.isFunctionLikeDeclaration(i) ? "quit" : false; + }); + } + function MS(r, i) { + return !!Y6(r, function(t) { + return t === i; + }); + } + function t9(r) { + for (; r.parent.kind === 161; ) + r = r.parent; + if (r.parent.kind === 265) + return r.parent.moduleReference === r ? r.parent : void 0; + if (r.parent.kind === 271) + return r.parent.expression === r ? r.parent : void 0; + } + function W0(r) { + return t9(r) !== void 0; + } + function a9(r) { + var i = e.getAssignmentDeclarationKind(r.parent.parent); + switch (i) { + case 1: + case 3: + return Et(r.parent); + case 4: + case 2: + case 5: + return Et(r.parent.parent); + } + } + function n9(r) { + for (var i = r.parent; e.isQualifiedName(i); ) + r = i, i = i.parent; + if (i && i.kind === 200 && i.qualifier === r) + return i; + } + function $6(r) { + if (e.isDeclarationName(r)) + return Et(r.parent); + if (e.isInJSFile(r) && r.parent.kind === 206 && r.parent === r.parent.parent.left && !e.isPrivateIdentifier(r) && !e.isJSDocMemberName(r)) { + var i = a9(r); + if (i) + return i; + } + if (r.parent.kind === 271 && e.isEntityNameExpression(r)) { + var t = Ds(r, 2998271, true); + if (t && t !== xe) + return t; + } else if (e.isEntityName(r) && W0(r)) { + var o = e.getAncestor(r, 265); + return e.Debug.assert(o !== void 0), Nl(r, true); + } + if (e.isEntityName(r)) { + var s = n9(r); + if (s) { + Va(s); + var u = va(r).resolvedSymbol; + return u === xe ? void 0 : u; + } + } + for (; e.isRightSideOfQualifiedNameOrPropertyAccessOrJSDocMemberName(r); ) + r = r.parent; + if (r9(r)) { + var h = 0; + r.parent.kind === 228 ? (h = 788968, e.isExpressionWithTypeArgumentsInClassExtendsClause(r.parent) && (h |= 111551)) : h = 1920, h |= 2097152; + var z = e.isEntityNameExpression(r) ? Ds(r, h) : void 0; + if (z) + return z; + } + if (r.parent.kind === 340) + return e.getParameterSymbolFromJSDoc(r.parent); + if (r.parent.kind === 163 && r.parent.parent.kind === 344) { + e.Debug.assert(!e.isInJSFile(r)); + var me = e.getTypeParameterFromJsDoc(r.parent); + return me && me.symbol; + } + if (e.isExpressionNode(r)) { + if (e.nodeIsMissing(r)) + return; + var Me = e.findAncestor(r, e.or(e.isJSDocLinkLike, e.isJSDocNameReference, e.isJSDocMemberName)), h = Me ? 901119 : 111551; + if (r.kind === 79) { + if (e.isJSXTagName(r) && dm(r)) { + var $e = Fb(r.parent); + return $e === xe ? void 0 : $e; + } + var tr = Ds(r, h, false, true, e.getHostSignatureFromJSDoc(r)); + if (!tr && Me) { + var dr = e.findAncestor(r, e.or(e.isClassLike, e.isInterfaceDeclaration)); + if (dr) + return q0(r, Et(dr)); + } + return tr; + } else { + if (e.isPrivateIdentifier(r)) + return m0(r); + if (r.kind === 206 || r.kind === 161) { + var Dr = va(r); + return Dr.resolvedSymbol ? Dr.resolvedSymbol : (r.kind === 206 ? VC(r, 0) : KC(r, 0), !Dr.resolvedSymbol && Me && e.isQualifiedName(r) ? q0(r) : Dr.resolvedSymbol); + } else if (e.isJSDocMemberName(r)) + return q0(r); + } + } else if (Q6(r)) { + var h = r.parent.kind === 178 ? 788968 : 1920, $e = Ds(r, h, false, true); + return $e && $e !== xe ? $e : yh(r); + } + if (r.parent.kind === 177) + return Ds(r, 1); + } + function q0(r, i) { + if (e.isEntityName(r)) { + var t = 901119, o = Ds(r, t, false, true, e.getHostSignatureFromJSDoc(r)); + if (!o && e.isIdentifier(r) && i && (o = so(qs(dc(i), r.escapedText, t))), o) + return o; + } + var s = e.isIdentifier(r) ? i : q0(r.left), u = e.isIdentifier(r) ? r.escapedText : r.right.escapedText; + if (s) { + var h = s.flags & 111551 && bi(Jt(s), "prototype"), z = h ? Jt(h) : go(s); + return bi(z, u); + } + } + function el(r, i) { + if (r.kind === 305) + return e.isExternalModule(r) ? so(r.symbol) : void 0; + var t = r.parent, o = t.parent; + if (!(r.flags & 33554432)) { + if (Y(r)) { + var s = Et(t); + return e.isImportOrExportSpecifier(r.parent) && r.parent.propertyName === r ? wb(s) : s; + } else if (e.isLiteralComputedPropertyDeclarationName(r)) + return Et(t.parent); + if (r.kind === 79) { + if (W0(r)) + return $6(r); + if (t.kind === 203 && o.kind === 201 && r === t.propertyName) { + var u = Bd(o), h = bi(u, r.escapedText); + if (h) + return h; + } else if (e.isMetaProperty(t) && t.name === r) + return t.keywordToken === 103 && e.idText(r) === "target" ? tS(t).symbol : t.keywordToken === 100 && e.idText(r) === "meta" ? Tx().members.get("meta") : void 0; + } + switch (r.kind) { + case 79: + case 80: + case 206: + case 161: + if (!e.isThisInTypeQuery(r)) + return $6(r); + case 108: + var z = e.getThisContainer(r, false); + if (e.isFunctionLike(z)) { + var me = yl(z); + if (me.thisParameter) + return me.thisParameter; + } + if (e.isInExpressionContext(r)) + return yn(r).symbol; + case 192: + return Ch(r).symbol; + case 106: + return yn(r).symbol; + case 134: + var Me = r.parent; + return Me && Me.kind === 171 ? Me.parent.symbol : void 0; + case 10: + case 14: + if (e.isExternalModuleImportEqualsDeclaration(r.parent.parent) && e.getExternalModuleImportEqualsDeclarationExpression(r.parent.parent) === r || (r.parent.kind === 266 || r.parent.kind === 272) && r.parent.moduleSpecifier === r || e.isInJSFile(r) && e.isRequireCall(r.parent, false) || e.isImportCall(r.parent) || e.isLiteralTypeNode(r.parent) && e.isLiteralImportTypeNode(r.parent.parent) && r.parent.parent.argument === r.parent) + return ac(r, r, i); + if (e.isCallExpression(t) && e.isBindableObjectDefinePropertyCall(t) && t.arguments[1] === r) + return Et(t); + case 8: + var $e = e.isElementAccessExpression(t) ? t.argumentExpression === r ? Gs(t.expression) : void 0 : e.isLiteralTypeNode(t) && e.isIndexedAccessTypeNode(o) ? Va(o.objectType) : void 0; + return $e && bi($e, e.escapeLeadingUnderscores(r.text)); + case 88: + case 98: + case 38: + case 84: + return Et(r.parent); + case 200: + return e.isLiteralImportTypeNode(r) ? el(r.argument.literal, i) : void 0; + case 93: + return e.isExportAssignment(r.parent) ? e.Debug.checkDefined(r.parent.symbol) : void 0; + case 100: + case 103: + return e.isMetaProperty(r.parent) ? Ak(r.parent).symbol : void 0; + case 231: + return yn(r).symbol; + default: + return; + } + } + } + function o9(r) { + if (e.isIdentifier(r) && e.isPropertyAccessExpression(r.parent) && r.parent.name === r) { + var i = Z_(r), t = Gs(r.parent.expression), o = t.flags & 1048576 ? t.types : [t]; + return e.flatMap(o, function(s) { + return e.filter(Hn(s), function(u) { + return an(i, u.keyType); + }); + }); + } + } + function s9(r) { + if (r && r.kind === 297) + return Ds(r.name, 2208703); + } + function c9(r) { + return e.isExportSpecifier(r) ? r.parent.parent.moduleSpecifier ? kl(r.parent.parent, r) : Ds(r.propertyName || r.name, 2998271) : Ds(r, 2998271); + } + function Bd(r) { + if (e.isSourceFile(r) && !e.isExternalModule(r) || r.flags & 33554432) + return Pe; + var i = e.tryGetClassImplementingOrExtendingExpressionWithTypeArguments(r), t = i && aa(Et(i.class)); + if (e.isPartOfTypeNode(r)) { + var o = Va(r); + return t ? Rc(o, t.thisType) : o; + } + if (e.isExpressionNode(r)) + return Z6(r); + if (t && !i.isImplements) { + var s = e.firstOrUndefined(Qc(t)); + return s ? Rc(s, t.thisType) : Pe; + } + if (zy(r)) { + var u = Et(r); + return go(u); + } + if (e9(r)) { + var u = el(r); + return u ? go(u) : Pe; + } + if (e.isDeclaration(r)) { + var u = Et(r); + return u ? Jt(u) : Pe; + } + if (Y(r)) { + var u = el(r); + return u ? Jt(u) : Pe; + } + if (e.isBindingPattern(r)) + return G_(r.parent, true, 0) || Pe; + if (W0(r)) { + var u = el(r); + if (u) { + var h = go(u); + return nn(h) ? Jt(u) : h; + } + } + return e.isMetaProperty(r.parent) && r.parent.keywordToken === r.kind ? Ak(r.parent) : Pe; + } + function V0(r) { + if (e.Debug.assert(r.kind === 205 || r.kind === 204), r.parent.kind === 244) { + var i = By(r.parent); + return Rd(r, i || Pe); + } + if (r.parent.kind === 221) { + var i = Gs(r.parent.right); + return Rd(r, i || Pe); + } + if (r.parent.kind === 296) { + var t = e.cast(r.parent.parent, e.isObjectLiteralExpression), o = V0(t) || Pe, s = e.indexOfNode(t.properties, r.parent); + return Uk(t, o, s); + } + var u = e.cast(r.parent, e.isArrayLiteralExpression), h = V0(u) || Pe, z = N_(65, h, Tr, r.parent) || Pe; + return zk(u, h, u.elements.indexOf(r), z); + } + function u9(r) { + var i = V0(e.cast(r.parent.parent, e.isAssignmentPattern)); + return i && bi(i, r.escapedText); + } + function Z6(r) { + return e.isRightSideOfQualifiedNameOrPropertyAccess(r) && (r = r.parent), jc(Gs(r)); + } + function l9(r) { + var i = Et(r.parent); + return e.isStatic(r) ? Jt(i) : go(i); + } + function f9(r) { + var i = r.name; + switch (i.kind) { + case 79: + return Bu(e.idText(i)); + case 8: + case 10: + return Bu(i.text); + case 162: + var t = t_(i); + return Ns(t, 12288) ? t : Li; + default: + return e.Debug.fail("Unsupported property name."); + } + } + function LS(r) { + r = $s(r); + var i = e.createSymbolTable(uo(r)), t = ot(r, 0).length ? Zr : ot(r, 1).length ? Si : void 0; + return t && e.forEach(uo(t), function(o) { + i.has(o.escapedName) || i.set(o.escapedName, o); + }), tf(i); + } + function RS(r) { + return e.typeHasCallOrConstructSignatures(r, Di); + } + function eA(r) { + var i = _9(r); + return i ? e.flatMap(i, eA) : [r]; + } + function _9(r) { + if (e.getCheckFlags(r) & 6) + return e.mapDefined(Aa(r).containingType.types, function(u) { + return bi(u, r.escapedName); + }); + if (r.flags & 33554432) { + var i = r, t = i.leftSpread, o = i.rightSpread, s = i.syntheticOrigin; + return t ? [t, o] : s ? [s] : e.singleElementArray(p9(r)); + } + } + function p9(r) { + for (var i, t = r; t = Aa(t).target; ) + i = t; + return i; + } + function d9(r) { + if (e.isGeneratedIdentifier(r)) + return false; + var i = e.getParseTreeNode(r, e.isIdentifier); + if (!i) + return false; + var t = i.parent; + if (!t) + return false; + var o = (e.isPropertyAccessExpression(t) || e.isPropertyAssignment(t)) && t.name === i; + return !o && Nv(i) === or; + } + function g9(r) { + var i = ac(r.parent, r); + if (!i || e.isShorthandAmbientModuleSymbol(i)) + return true; + var t = ll(i); + i = Us(i); + var o = Aa(i); + return o.exportsSomeValue === void 0 && (o.exportsSomeValue = t ? !!(i.flags & 111551) : e.forEachEntry(Pu(i), s)), o.exportsSomeValue; + function s(u) { + return u = os(u), u && !!(u.flags & 111551); + } + } + function m9(r) { + return e.isModuleOrEnumDeclaration(r.parent) && r === r.parent.name; + } + function v9(r, i) { + var t, o = e.getParseTreeNode(r, e.isIdentifier); + if (o) { + var s = Nv(o, m9(o)); + if (s) { + if (s.flags & 1048576) { + var u = so(s.exportSymbol); + if (!i && u.flags & 944 && !(u.flags & 3)) + return; + s = u; + } + var h = Ys(s); + if (h) { + if (h.flags & 512 && ((t = h.valueDeclaration) === null || t === void 0 ? void 0 : t.kind) === 305) { + var z = h.valueDeclaration, me = e.getSourceFileOfNode(o), Me = z !== me; + return Me ? void 0 : z; + } + return e.findAncestor(o.parent, function($e) { + return e.isModuleOrEnumDeclaration($e) && Et($e) === h; + }); + } + } + } + } + function y9(r) { + if (r.generatedImportReference) + return r.generatedImportReference; + var i = e.getParseTreeNode(r, e.isIdentifier); + if (i) { + var t = Nv(i); + if (Zn(t, 111551) && !vu(t)) + return ru(t); + } + } + function h9(r) { + return r.valueDeclaration && e.isBindingElement(r.valueDeclaration) && e.walkUpBindingElementsAndPatterns(r.valueDeclaration).parent.kind === 292; + } + function rA(r) { + if (r.flags & 418 && r.valueDeclaration && !e.isSourceFile(r.valueDeclaration)) { + var i = Aa(r); + if (i.isDeclarationWithCollidingName === void 0) { + var t = e.getEnclosingBlockScopeContainer(r.valueDeclaration); + if (e.isStatementWithLocals(t) || h9(r)) { + var o = va(r.valueDeclaration); + if (es(t.parent, r.escapedName, 111551, void 0, void 0, false)) + i.isDeclarationWithCollidingName = true; + else if (o.flags & 262144) { + var s = o.flags & 524288, u = e.isIterationStatement(t, false), h = t.kind === 235 && e.isIterationStatement(t.parent, false); + i.isDeclarationWithCollidingName = !e.isBlockScopedContainerTopLevel(t) && (!s || !u && !h); + } else + i.isDeclarationWithCollidingName = false; + } + } + return i.isDeclarationWithCollidingName; + } + return false; + } + function D9(r) { + if (!e.isGeneratedIdentifier(r)) { + var i = e.getParseTreeNode(r, e.isIdentifier); + if (i) { + var t = Nv(i); + if (t && rA(t)) + return t.valueDeclaration; + } + } + } + function b9(r) { + var i = e.getParseTreeNode(r, e.isDeclaration); + if (i) { + var t = Et(i); + if (t) + return rA(t); + } + return false; + } + function iA(r) { + switch (r.kind) { + case 265: + return K0(Et(r)); + case 267: + case 268: + case 270: + case 275: + var i = Et(r); + return !!i && K0(i) && !vu(i); + case 272: + var t = r.exportClause; + return !!t && (e.isNamespaceExport(t) || e.some(t.elements, iA)); + case 271: + return r.expression && r.expression.kind === 79 ? K0(Et(r)) : true; + } + return false; + } + function S9(r) { + var i = e.getParseTreeNode(r, e.isImportEqualsDeclaration); + if (i === void 0 || i.parent.kind !== 305 || !e.isInternalModuleImportEqualsDeclaration(i)) + return false; + var t = K0(Et(i)); + return t && i.moduleReference && !e.nodeIsMissing(i.moduleReference); + } + function K0(r) { + if (!r) + return false; + var i = cu(Ps(r)); + return i === xe ? true : !!(i.flags & 111551) && (e.shouldPreserveConstEnums(ye) || !Av(i)); + } + function Av(r) { + return lS(r) || !!r.constEnumOnlyModule; + } + function G0(r, i) { + if (yf(r)) { + var t = Et(r), o = t && Aa(t); + if (o != null && o.referenced) + return true; + var s = Aa(t).aliasTarget; + if (s && e.getEffectiveModifierFlags(r) & 1 && s.flags & 111551 && (e.shouldPreserveConstEnums(ye) || !Av(s))) + return true; + } + return i ? !!e.forEachChild(r, function(u) { + return G0(u, i); + }) : false; + } + function tA(r) { + if (e.nodeIsPresent(r.body)) { + if (e.isGetAccessor(r) || e.isSetAccessor(r)) + return false; + var i = Et(r), t = S_(i); + return t.length > 1 || t.length === 1 && t[0].declaration !== r; + } + return false; + } + function aA(r) { + return !!Ye && !kd(r) && !e.isJSDocParameterTag(r) && !!r.initializer && !e.hasSyntacticModifier(r, 16476); + } + function T9(r) { + return Ye && kd(r) && !r.initializer && e.hasSyntacticModifier(r, 16476); + } + function x9(r) { + var i = e.getParseTreeNode(r, e.isFunctionDeclaration); + if (!i) + return false; + var t = Et(i); + return !t || !(t.flags & 16) ? false : !!e.forEachEntry(dc(t), function(o) { + return o.flags & 111551 && o.valueDeclaration && e.isPropertyAccessExpression(o.valueDeclaration); + }); + } + function E9(r) { + var i = e.getParseTreeNode(r, e.isFunctionDeclaration); + if (!i) + return e.emptyArray; + var t = Et(i); + return t && uo(Jt(t)) || e.emptyArray; + } + function Ug(r) { + var i, t = r.id || 0; + return t < 0 || t >= du.length ? 0 : ((i = du[t]) === null || i === void 0 ? void 0 : i.flags) || 0; + } + function H0(r) { + return U6(r.parent), va(r).enumMemberValue; + } + function nA(r) { + switch (r.kind) { + case 299: + case 206: + case 207: + return true; + } + return false; + } + function BS(r) { + if (r.kind === 299) + return H0(r); + var i = va(r).resolvedSymbol; + if (i && i.flags & 8) { + var t = i.valueDeclaration; + if (e.isEnumConst(t.parent)) + return H0(t); + } + } + function JS(r) { + return !!(r.flags & 524288) && ot(r, 0).length > 0; + } + function C9(r, i) { + var t, o, s = e.getParseTreeNode(r, e.isEntityName); + if (!s || i && (i = e.getParseTreeNode(i), !i)) + return e.TypeReferenceSerializationKind.Unknown; + var u = false; + if (e.isQualifiedName(s)) { + var h = Ds(e.getFirstIdentifier(s), 111551, true, true, i); + u = !!(!((t = h == null ? void 0 : h.declarations) === null || t === void 0) && t.every(e.isTypeOnlyImportOrExportDeclaration)); + } + var z = Ds(s, 111551, true, true, i), me = z && z.flags & 2097152 ? Ps(z) : z; + u || (u = !!(!((o = z == null ? void 0 : z.declarations) === null || o === void 0) && o.every(e.isTypeOnlyImportOrExportDeclaration))); + var Me = Ds(s, 788968, true, false, i); + if (me && me === Me) { + var $e = nD(false); + if ($e && me === $e) + return e.TypeReferenceSerializationKind.Promise; + var tr = Jt(me); + if (tr && qd(tr)) + return u ? e.TypeReferenceSerializationKind.TypeWithCallSignature : e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue; + } + if (!Me) + return u ? e.TypeReferenceSerializationKind.ObjectType : e.TypeReferenceSerializationKind.Unknown; + var dr = go(Me); + return nn(dr) ? u ? e.TypeReferenceSerializationKind.ObjectType : e.TypeReferenceSerializationKind.Unknown : dr.flags & 3 ? e.TypeReferenceSerializationKind.ObjectType : Ns(dr, 245760) ? e.TypeReferenceSerializationKind.VoidNullableOrNeverType : Ns(dr, 528) ? e.TypeReferenceSerializationKind.BooleanType : Ns(dr, 296) ? e.TypeReferenceSerializationKind.NumberLikeType : Ns(dr, 2112) ? e.TypeReferenceSerializationKind.BigIntLikeType : Ns(dr, 402653316) ? e.TypeReferenceSerializationKind.StringLikeType : Yn(dr) ? e.TypeReferenceSerializationKind.ArrayLikeType : Ns(dr, 12288) ? e.TypeReferenceSerializationKind.ESSymbolType : JS(dr) ? e.TypeReferenceSerializationKind.TypeWithCallSignature : Tu(dr) ? e.TypeReferenceSerializationKind.ArrayLikeType : e.TypeReferenceSerializationKind.ObjectType; + } + function k9(r, i, t, o, s) { + var u = e.getParseTreeNode(r, e.isVariableLikeOrAccessor); + if (!u) + return e.factory.createToken(130); + var h = Et(u), z = h && !(h.flags & 133120) ? Hp(Jt(h)) : Pe; + return z.flags & 8192 && z.symbol === h && (t |= 1048576), s && (z = i_(z)), Ur.typeToTypeNode(z, i, t | 1024, o); + } + function A9(r, i, t, o) { + var s = e.getParseTreeNode(r, e.isFunctionLike); + if (!s) + return e.factory.createToken(130); + var u = yl(s); + return Ur.typeToTypeNode(yo(u), i, t | 1024, o); + } + function N9(r, i, t, o) { + var s = e.getParseTreeNode(r, e.isExpression); + if (!s) + return e.factory.createToken(130); + var u = $c(Z6(s)); + return Ur.typeToTypeNode(u, i, t | 1024, o); + } + function P9(r) { + return ii.has(e.escapeLeadingUnderscores(r)); + } + function Nv(r, i) { + var t = va(r).resolvedSymbol; + if (t) + return t; + var o = r; + if (i) { + var s = r.parent; + e.isDeclaration(s) && r === s.name && (o = zi(s)); + } + return es(o, r.escapedText, 3257279, void 0, void 0, true); + } + function I9(r) { + if (!e.isGeneratedIdentifier(r)) { + var i = e.getParseTreeNode(r, e.isIdentifier); + if (i) { + var t = Nv(i); + if (t) + return cu(t).valueDeclaration; + } + } + } + function w9(r) { + return e.isDeclarationReadonly(r) || e.isVariableDeclaration(r) && e.isVarConst(r) ? Kp(Jt(Et(r))) : false; + } + function O9(r, i, t) { + var o = r.flags & 1024 ? Ur.symbolToExpression(r.symbol, 111551, i, void 0, t) : r === Dt ? e.factory.createTrue() : r === xt && e.factory.createFalse(); + if (o) + return o; + var s = r.value; + return typeof s == "object" ? e.factory.createBigIntLiteral(s) : typeof s == "number" ? e.factory.createNumericLiteral(s) : e.factory.createStringLiteral(s); + } + function F9(r, i) { + var t = Jt(Et(r)); + return O9(t, r, i); + } + function oA(r) { + return r ? (po(r), e.getSourceFileOfNode(r).localJsxFactory || Se) : Se; + } + function jS(r) { + if (r) { + var i = e.getSourceFileOfNode(r); + if (i) { + if (i.localJsxFragmentFactory) + return i.localJsxFragmentFactory; + var t = i.pragmas.get("jsxfrag"), o = e.isArray(t) ? t[0] : t; + if (o) + return i.localJsxFragmentFactory = e.parseIsolatedEntityName(o.arguments.factory, Ae), i.localJsxFragmentFactory; + } + } + if (ye.jsxFragmentFactory) + return e.parseIsolatedEntityName(ye.jsxFragmentFactory, Ae); + } + function M9() { + var r = l.getResolvedTypeReferenceDirectives(), i; + return r && (i = new e.Map(), r.forEach(function(me, Me, $e) { + if (!(!me || !me.resolvedFileName)) { + var tr = l.getSourceFile(me.resolvedFileName); + tr && z(tr, Me, $e); + } + })), { getReferencedExportContainer: v9, getReferencedImportDeclaration: y9, getReferencedDeclarationWithCollidingName: D9, isDeclarationWithCollidingName: b9, isValueAliasDeclaration: function(me) { + var Me = e.getParseTreeNode(me); + return Me ? iA(Me) : true; + }, hasGlobalName: P9, isReferencedAliasDeclaration: function(me, Me) { + var $e = e.getParseTreeNode(me); + return $e ? G0($e, Me) : true; + }, getNodeCheckFlags: function(me) { + var Me = e.getParseTreeNode(me); + return Me ? Ug(Me) : 0; + }, isTopLevelValueImportEqualsWithEntityName: S9, isDeclarationVisible: wu, isImplementationOfOverload: tA, isRequiredInitializedParameter: aA, isOptionalUninitializedParameterProperty: T9, isExpandoFunctionDeclaration: x9, getPropertiesOfContainerFunction: E9, createTypeOfDeclaration: k9, createReturnTypeOfSignatureDeclaration: A9, createTypeOfExpression: N9, createLiteralConstValue: F9, isSymbolAccessible: g_, isEntityNameVisible: af, getConstantValue: function(me) { + var Me = e.getParseTreeNode(me, nA); + return Me ? BS(Me) : void 0; + }, collectLinkedAliases: V_, getReferencedValueDeclaration: I9, getTypeReferenceSerializationKind: C9, isOptionalParameter: kd, moduleExportsSomeValue: g9, isArgumentsLocalBinding: d9, getExternalModuleFileFromDeclaration: function(me) { + var Me = e.getParseTreeNode(me, e.hasPossibleExternalModuleReference); + return Me && US(Me); + }, getTypeReferenceDirectivesForEntityName: s, getTypeReferenceDirectivesForSymbol: u, isLiteralConstDeclaration: w9, isLateBound: function(me) { + var Me = e.getParseTreeNode(me, e.isDeclaration), $e = Me && Et(Me); + return !!($e && e.getCheckFlags($e) & 4096); + }, getJsxFactoryEntity: oA, getJsxFragmentFactoryEntity: jS, getAllAccessorDeclarations: function(me) { + me = e.getParseTreeNode(me, e.isGetOrSetAccessorDeclaration); + var Me = me.kind === 173 ? 172 : 173, $e = e.getDeclarationOfKind(Et(me), Me), tr = $e && $e.pos < me.pos ? $e : me, dr = $e && $e.pos < me.pos ? me : $e, Dr = me.kind === 173 ? me : $e, Qr = me.kind === 172 ? me : $e; + return { firstAccessor: tr, secondAccessor: dr, setAccessor: Dr, getAccessor: Qr }; + }, getSymbolOfExternalModuleSpecifier: function(me) { + return Pl(me, me, void 0); + }, isBindingCapturedByNode: function(me, Me) { + var $e = e.getParseTreeNode(me), tr = e.getParseTreeNode(Me); + return !!$e && !!tr && (e.isVariableDeclaration(tr) || e.isBindingElement(tr)) && U8($e, tr); + }, getDeclarationStatementsForSourceFile: function(me, Me, $e, tr) { + var dr = e.getParseTreeNode(me); + e.Debug.assert(dr && dr.kind === 305, "Non-sourcefile node passed into getDeclarationsForSourceFile"); + var Dr = Et(me); + return Dr ? Dr.exports ? Ur.symbolTableToDeclarationStatements(Dr.exports, me, Me, $e, tr) : [] : me.locals ? Ur.symbolTableToDeclarationStatements(me.locals, me, Me, $e, tr) : []; + }, isImportRequiredByAugmentation: t }; + function t(me) { + var Me = e.getSourceFileOfNode(me); + if (!Me.symbol) + return false; + var $e = US(me); + if (!$e || $e === Me) + return false; + for (var tr = Pu(Me.symbol), dr = 0, Dr = e.arrayFrom(tr.values()); dr < Dr.length; dr++) { + var Qr = Dr[dr]; + if (Qr.mergeId) { + var li = so(Qr); + if (li.declarations) + for (var Ti = 0, Ci = li.declarations; Ti < Ci.length; Ti++) { + var $i = Ci[Ti], Zi = e.getSourceFileOfNode($i); + if (Zi === $e) + return true; + } + } + } + return false; + } + function o(me) { + return me.parent && me.parent.kind === 228 && me.parent.parent && me.parent.parent.kind === 291; + } + function s(me) { + if (!!i) { + var Me = 790504; + (me.kind === 79 && _m(me) || me.kind === 206 && !o(me)) && (Me = 1160127); + var $e = Ds(me, Me, true); + return $e && $e !== xe ? u($e, Me) : void 0; + } + } + function u(me, Me) { + if (!(!i || !h(me))) { + for (var $e, tr = 0, dr = me.declarations; tr < dr.length; tr++) { + var Dr = dr[tr]; + if (Dr.symbol && Dr.symbol.flags & Me) { + var Qr = e.getSourceFileOfNode(Dr), li = i.get(Qr.path); + if (li) + ($e || ($e = [])).push(li); + else + return; + } + } + return $e; + } + } + function h(me) { + if (!me.declarations) + return false; + for (var Me = me; ; ) { + var $e = Ys(Me); + if ($e) + Me = $e; + else + break; + } + if (Me.valueDeclaration && Me.valueDeclaration.kind === 305 && Me.flags & 512) + return false; + for (var tr = 0, dr = me.declarations; tr < dr.length; tr++) { + var Dr = dr[tr], Qr = e.getSourceFileOfNode(Dr); + if (i.has(Qr.path)) + return true; + } + return false; + } + function z(me, Me, $e) { + if (!i.has(me.path)) { + i.set(me.path, [Me, $e]); + for (var tr = 0, dr = me.referencedFiles; tr < dr.length; tr++) { + var Dr = dr[tr], Qr = Dr.fileName, li = Dr.resolutionMode, Ti = e.resolveTripleslashReference(Qr, me.fileName), Ci = l.getSourceFile(Ti); + Ci && z(Ci, Me, li || me.impliedNodeFormat); + } + } + } + } + function US(r) { + var i = r.kind === 261 ? e.tryCast(r.name, e.isStringLiteral) : e.getExternalModuleName(r), t = Pl(i, i, void 0); + if (!!t) + return e.getDeclarationOfKind(t, 305); + } + function L9() { + for (var r = 0, i = l.getSourceFiles(); r < i.length; r++) { + var t = i[r]; + e.bindSourceFile(t, ye); + } + dn = new e.Map(); + for (var o, s = 0, u = l.getSourceFiles(); s < u.length; s++) { + var t = u[s]; + if (!t.redirectInfo) { + if (!e.isExternalOrCommonJsModule(t)) { + var h = t.locals.get("globalThis"); + if (h != null && h.declarations) + for (var z = 0, me = h.declarations; z < me.length; z++) { + var Me = me[z]; + rn.add(e.createDiagnosticForNode(Me, e.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0, "globalThis")); + } + gu(ii, t.locals); + } + if (t.jsGlobalAugmentations && gu(ii, t.jsGlobalAugmentations), t.patternAmbientModules && t.patternAmbientModules.length && (S = e.concatenate(S, t.patternAmbientModules)), t.moduleAugmentations.length && (o || (o = [])).push(t.moduleAugmentations), t.symbol && t.symbol.globalExports) { + var $e = t.symbol.globalExports; + $e.forEach(function(Ra, ca) { + ii.has(ca) || ii.set(ca, Ra); + }); + } + } + } + if (o) + for (var tr = 0, dr = o; tr < dr.length; tr++) + for (var Dr = dr[tr], Qr = 0, li = Dr; Qr < li.length; Qr++) { + var Ti = li[Qr]; + !e.isGlobalScopeAugmentation(Ti.parent) || Dp(Ti); + } + if (sd(ii, No, e.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0), Aa(mi).type = vi, Aa(or).type = lc("IArguments", 0, true), Aa(xe).type = Pe, Aa(pe).type = tu(16, pe), Pi = lc("Array", 1, true), qe = lc("Object", 0, true), br = lc("Function", 0, true), Zr = Er && lc("CallableFunction", 0, true) || br, Si = Er && lc("NewableFunction", 0, true) || br, Ct = lc("String", 0, true), sa = lc("Number", 0, true), en = lc("Boolean", 0, true), Wa = lc("RegExp", 0, true), mo = Zs(Oe), So = Zs(nr), So === Ba && (So = rs(void 0, we, e.emptyArray, e.emptyArray, e.emptyArray)), Qi = Nx("ReadonlyArray", 1) || Pi, Go = Qi ? $m(Qi, [Oe]) : mo, qn = Nx("ThisType", 1), o) + for (var Ci = 0, $i = o; Ci < $i.length; Ci++) + for (var Dr = $i[Ci], Zi = 0, qt = Dr; Zi < qt.length; Zi++) { + var Ti = qt[Zi]; + e.isGlobalScopeAugmentation(Ti.parent) || Dp(Ti); + } + dn.forEach(function(Nt) { + var Ra = Nt.firstFile, ca = Nt.secondFile, Sn = Nt.conflictingSymbols; + if (Sn.size < 8) + Sn.forEach(function(Fn, wn) { + for (var Tn = Fn.isBlockScoped, Eo = Fn.firstFileLocations, lt = Fn.secondFileLocations, it = Tn ? e.Diagnostics.Cannot_redeclare_block_scoped_variable_0 : e.Diagnostics.Duplicate_identifier_0, Yt = 0, Ia = Eo; Yt < Ia.length; Yt++) { + var Qt = Ia[Yt]; + c_(Qt, it, wn, lt); + } + for (var Ka = 0, cn = lt; Ka < cn.length; Ka++) { + var Qt = cn[Ka]; + c_(Qt, it, wn, Eo); + } + }); + else { + var ja = e.arrayFrom(Sn.keys()).join(", "); + rn.add(e.addRelatedInfo(e.createDiagnosticForNode(Ra, e.Diagnostics.Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0, ja), e.createDiagnosticForNode(ca, e.Diagnostics.Conflicts_are_in_this_file))), rn.add(e.addRelatedInfo(e.createDiagnosticForNode(ca, e.Diagnostics.Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0, ja), e.createDiagnosticForNode(Ra, e.Diagnostics.Conflicts_are_in_this_file))); + } + }), dn = void 0; + } + function fc(r, i) { + if ((ne & i) !== i && ye.importHelpers) { + var t = e.getSourceFileOfNode(r); + if (e.isEffectiveExternalModule(t, ye) && !(r.flags & 16777216)) { + var o = B9(t, r); + if (o !== xe) { + for (var s = i & ~ne, u = 1; u <= 4194304; u <<= 1) + if (s & u) { + var h = R9(u), z = qs(o.exports, e.escapeLeadingUnderscores(h), 111551); + z ? u & 524288 ? e.some(S_(z), function(me) { + return Wc(me) > 3; + }) || Xr(r, e.Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, e.externalHelpersModuleNameText, h, 4) : u & 1048576 ? e.some(S_(z), function(me) { + return Wc(me) > 4; + }) || Xr(r, e.Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, e.externalHelpersModuleNameText, h, 5) : u & 1024 && (e.some(S_(z), function(me) { + return Wc(me) > 2; + }) || Xr(r, e.Diagnostics.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0, e.externalHelpersModuleNameText, h, 3)) : Xr(r, e.Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, e.externalHelpersModuleNameText, h); + } + } + ne |= i; + } + } + } + function R9(r) { + switch (r) { + case 1: + return "__extends"; + case 2: + return "__assign"; + case 4: + return "__rest"; + case 8: + return "__decorate"; + case 16: + return "__metadata"; + case 32: + return "__param"; + case 64: + return "__awaiter"; + case 128: + return "__generator"; + case 256: + return "__values"; + case 512: + return "__read"; + case 1024: + return "__spreadArray"; + case 2048: + return "__await"; + case 4096: + return "__asyncGenerator"; + case 8192: + return "__asyncDelegator"; + case 16384: + return "__asyncValues"; + case 32768: + return "__exportStar"; + case 65536: + return "__importStar"; + case 131072: + return "__importDefault"; + case 262144: + return "__makeTemplateObject"; + case 524288: + return "__classPrivateFieldGet"; + case 1048576: + return "__classPrivateFieldSet"; + case 2097152: + return "__classPrivateFieldIn"; + case 4194304: + return "__createBinding"; + default: + return e.Debug.fail("Unrecognized helper"); + } + } + function B9(r, i) { + return ue || (ue = Il(r, e.externalHelpersModuleNameText, e.Diagnostics.This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found, i) || xe), ue; + } + function Ff(r) { + return J9(r) || sA(r); + } + function J9(r) { + if (!r.decorators) + return false; + if (e.nodeCanBeDecorated(r, r.parent, r.parent.parent)) { + if (r.kind === 172 || r.kind === 173) { + var i = e.getAllAccessorDeclarations(r.parent.members, r); + if (i.firstAccessor.decorators && r === i.secondAccessor) + return Hs(r, e.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name); + } + } else + return r.kind === 169 && !e.nodeIsPresent(r.body) ? Hs(r, e.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload) : Hs(r, e.Diagnostics.Decorators_are_not_valid_here); + return false; + } + function sA(r) { + var i = j9(r); + if (i !== void 0) + return i; + for (var t, o, s, u, h = 0, z = 0, me = r.modifiers; z < me.length; z++) { + var Me = me[z]; + if (Me.kind !== 145) { + if (r.kind === 166 || r.kind === 168) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_type_member, e.tokenToString(Me.kind)); + if (r.kind === 176 && (Me.kind !== 124 || !e.isClassLike(r.parent))) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_an_index_signature, e.tokenToString(Me.kind)); + } + if (Me.kind !== 101 && Me.kind !== 144 && r.kind === 163) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, e.tokenToString(Me.kind)); + switch (Me.kind) { + case 85: + if (r.kind !== 260) + return Tt(r, e.Diagnostics.A_class_member_cannot_have_the_0_keyword, e.tokenToString(85)); + break; + case 159: + if (h & 16384) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, "override"); + if (h & 2) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); + if (h & 64) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); + if (h & 256) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); + h |= 16384, u = Me; + break; + case 123: + case 122: + case 121: + var $e = v_(e.modifierToFlag(Me.kind)); + if (h & 28) + return Tt(Me, e.Diagnostics.Accessibility_modifier_already_seen); + if (h & 16384) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, $e, "override"); + if (h & 32) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, $e, "static"); + if (h & 64) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, $e, "readonly"); + if (h & 256) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, $e, "async"); + if (r.parent.kind === 262 || r.parent.kind === 305) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, $e); + if (h & 128) + return Me.kind === 121 ? Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, $e, "abstract") : Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, $e, "abstract"); + if (e.isPrivateIdentifierClassElementDeclaration(r)) + return Tt(Me, e.Diagnostics.An_accessibility_modifier_cannot_be_used_with_a_private_identifier); + h |= e.modifierToFlag(Me.kind); + break; + case 124: + if (h & 32) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, "static"); + if (h & 64) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); + if (h & 256) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); + if (r.parent.kind === 262 || r.parent.kind === 305) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element, "static"); + if (r.kind === 164) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "static"); + if (h & 128) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + if (h & 16384) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "static", "override"); + h |= 32, t = Me; + break; + case 145: + if (h & 64) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, "readonly"); + if (r.kind !== 167 && r.kind !== 166 && r.kind !== 176 && r.kind !== 164) + return Tt(Me, e.Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature); + h |= 64; + break; + case 93: + if (h & 1) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, "export"); + if (h & 2) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "export", "declare"); + if (h & 128) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "export", "abstract"); + if (h & 256) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); + if (e.isClassLike(r.parent)) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "export"); + if (r.kind === 164) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "export"); + h |= 1; + break; + case 88: + var tr = r.parent.kind === 305 ? r.parent : r.parent.parent; + if (tr.kind === 261 && !e.isAmbientModule(tr)) + return Tt(Me, e.Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + if (!(h & 1)) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "export", "default"); + h |= 512; + break; + case 135: + if (h & 2) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, "declare"); + if (h & 256) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + if (h & 16384) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); + if (e.isClassLike(r.parent) && !e.isPropertyDeclaration(r)) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind, "declare"); + if (r.kind === 164) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); + if (r.parent.flags & 16777216 && r.parent.kind === 262) + return Tt(Me, e.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); + if (e.isPrivateIdentifierClassElementDeclaration(r)) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "declare"); + h |= 2, o = Me; + break; + case 126: + if (h & 128) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, "abstract"); + if (r.kind !== 257 && r.kind !== 180) { + if (r.kind !== 169 && r.kind !== 167 && r.kind !== 172 && r.kind !== 173) + return Tt(Me, e.Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration); + if (!(r.parent.kind === 257 && e.hasSyntacticModifier(r.parent, 128))) + return Tt(Me, e.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); + if (h & 32) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "abstract"); + if (h & 8) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "private", "abstract"); + if (h & 256 && s) + return Tt(s, e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + if (h & 16384) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "abstract", "override"); + } + if (e.isNamedDeclaration(r) && r.name.kind === 80) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_a_private_identifier, "abstract"); + h |= 128; + break; + case 131: + if (h & 256) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, "async"); + if (h & 2 || r.parent.flags & 16777216) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); + if (r.kind === 164) + return Tt(Me, e.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "async"); + if (h & 128) + return Tt(Me, e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "async", "abstract"); + h |= 256, s = Me; + break; + case 101: + case 144: + var dr = Me.kind === 101 ? 32768 : 65536, Dr = Me.kind === 101 ? "in" : "out"; + if (r.kind !== 163 || !(e.isInterfaceDeclaration(r.parent) || e.isClassLike(r.parent) || e.isTypeAliasDeclaration(r.parent))) + return Tt(Me, e.Diagnostics._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias, Dr); + if (h & dr) + return Tt(Me, e.Diagnostics._0_modifier_already_seen, Dr); + if (dr & 32768 && h & 65536) + return Tt(Me, e.Diagnostics._0_modifier_must_precede_1_modifier, "in", "out"); + h |= dr; + break; + } + } + return r.kind === 171 ? h & 32 ? Tt(t, e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "static") : h & 16384 ? Tt(u, e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "override") : h & 256 ? Tt(s, e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "async") : false : (r.kind === 266 || r.kind === 265) && h & 2 ? Tt(o, e.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare") : r.kind === 164 && h & 16476 && e.isBindingPattern(r.name) ? Tt(r, e.Diagnostics.A_parameter_property_may_not_be_declared_using_a_binding_pattern) : r.kind === 164 && h & 16476 && r.dotDotDotToken ? Tt(r, e.Diagnostics.A_parameter_property_cannot_be_declared_using_a_rest_parameter) : h & 256 ? z9(r, s) : false; + } + function j9(r) { + return r.modifiers ? U9(r) ? Hs(r, e.Diagnostics.Modifiers_cannot_appear_here) : void 0 : false; + } + function U9(r) { + switch (r.kind) { + case 172: + case 173: + case 171: + case 167: + case 166: + case 169: + case 168: + case 176: + case 261: + case 266: + case 265: + case 272: + case 271: + case 213: + case 214: + case 164: + case 163: + return false; + default: + if (r.parent.kind === 262 || r.parent.kind === 305) + return false; + switch (r.kind) { + case 256: + return zS(r, 131); + case 257: + case 180: + return zS(r, 126); + case 258: + case 237: + case 259: + case 170: + return true; + case 260: + return zS(r, 85); + default: + e.Debug.fail(); + } + } + } + function zS(r, i) { + return r.modifiers.length > 1 || r.modifiers[0].kind !== i; + } + function z9(r, i) { + switch (r.kind) { + case 169: + case 256: + case 213: + case 214: + return false; + } + return Tt(i, e.Diagnostics._0_modifier_cannot_be_used_here, "async"); + } + function ng(r, i) { + return i === void 0 && (i = e.Diagnostics.Trailing_comma_not_allowed), r && r.hasTrailingComma ? rd(r[0], r.end - 1, 1, i) : false; + } + function cA(r, i) { + if (r && r.length === 0) { + var t = r.pos - 1, o = e.skipTrivia(i.text, r.end) + 1; + return rd(i, t, o - t, e.Diagnostics.Type_parameter_list_cannot_be_empty); + } + return false; + } + function W9(r) { + for (var i = false, t = r.length, o = 0; o < t; o++) { + var s = r[o]; + if (s.dotDotDotToken) { + if (o !== t - 1) + return Tt(s.dotDotDotToken, e.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list); + if (s.flags & 16777216 || ng(r, e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma), s.questionToken) + return Tt(s.questionToken, e.Diagnostics.A_rest_parameter_cannot_be_optional); + if (s.initializer) + return Tt(s.name, e.Diagnostics.A_rest_parameter_cannot_have_an_initializer); + } else if (kd(s)) { + if (i = true, s.questionToken && s.initializer) + return Tt(s.name, e.Diagnostics.Parameter_cannot_have_question_mark_and_initializer); + } else if (i && !s.initializer) + return Tt(s.name, e.Diagnostics.A_required_parameter_cannot_follow_an_optional_parameter); + } + } + function q9(r) { + return e.filter(r, function(i) { + return !!i.initializer || e.isBindingPattern(i.name) || e.isRestParameter(i); + }); + } + function V9(r) { + if (Ae >= 3) { + var i = r.body && e.isBlock(r.body) && e.findUseStrictPrologue(r.body.statements); + if (i) { + var t = q9(r.parameters); + if (e.length(t)) { + e.forEach(t, function(s) { + e.addRelatedInfo(Xr(s, e.Diagnostics.This_parameter_is_not_allowed_with_use_strict_directive), e.createDiagnosticForNode(i, e.Diagnostics.use_strict_directive_used_here)); + }); + var o = t.map(function(s, u) { + return u === 0 ? e.createDiagnosticForNode(s, e.Diagnostics.Non_simple_parameter_declared_here) : e.createDiagnosticForNode(s, e.Diagnostics.and_here); + }); + return e.addRelatedInfo.apply(void 0, Ve([Xr(i, e.Diagnostics.use_strict_directive_cannot_be_used_with_non_simple_parameter_list)], o, false)), true; + } + } + } + return false; + } + function X0(r) { + var i = e.getSourceFileOfNode(r); + return Ff(r) || cA(r.typeParameters, i) || W9(r.parameters) || G9(r, i) || e.isFunctionLikeDeclaration(r) && V9(r); + } + function K9(r) { + var i = e.getSourceFileOfNode(r); + return $9(r) || cA(r.typeParameters, i); + } + function G9(r, i) { + if (!e.isArrowFunction(r)) + return false; + r.typeParameters && !(e.length(r.typeParameters) > 1 || r.typeParameters.hasTrailingComma || r.typeParameters[0].constraint) && i && e.fileExtensionIsOneOf(i.fileName, [".mts", ".cts"]) && Tt(r.typeParameters[0], e.Diagnostics.This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Add_a_trailing_comma_or_explicit_constraint); + var t = r.equalsGreaterThanToken, o = e.getLineAndCharacterOfPosition(i, t.pos).line, s = e.getLineAndCharacterOfPosition(i, t.end).line; + return o !== s && Tt(t, e.Diagnostics.Line_terminator_not_permitted_before_arrow); + } + function H9(r) { + var i = r.parameters[0]; + if (r.parameters.length !== 1) + return Tt(i ? i.name : r, e.Diagnostics.An_index_signature_must_have_exactly_one_parameter); + if (ng(r.parameters, e.Diagnostics.An_index_signature_cannot_have_a_trailing_comma), i.dotDotDotToken) + return Tt(i.dotDotDotToken, e.Diagnostics.An_index_signature_cannot_have_a_rest_parameter); + if (e.hasEffectiveModifiers(i)) + return Tt(i.name, e.Diagnostics.An_index_signature_parameter_cannot_have_an_accessibility_modifier); + if (i.questionToken) + return Tt(i.questionToken, e.Diagnostics.An_index_signature_parameter_cannot_have_a_question_mark); + if (i.initializer) + return Tt(i.name, e.Diagnostics.An_index_signature_parameter_cannot_have_an_initializer); + if (!i.type) + return Tt(i.name, e.Diagnostics.An_index_signature_parameter_must_have_a_type_annotation); + var t = Va(i.type); + return rg(t, function(o) { + return !!(o.flags & 8576); + }) || rv(t) ? Tt(i.name, e.Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead) : gf(t, vh) ? r.type ? false : Tt(r, e.Diagnostics.An_index_signature_must_have_a_type_annotation) : Tt(i.name, e.Diagnostics.An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type); + } + function X9(r) { + return Ff(r) || H9(r); + } + function Q9(r, i) { + if (i && i.length === 0) { + var t = e.getSourceFileOfNode(r), o = i.pos - 1, s = e.skipTrivia(t.text, i.end) + 1; + return rd(t, o, s - o, e.Diagnostics.Type_argument_list_cannot_be_empty); + } + return false; + } + function Wy(r, i) { + return ng(i) || Q9(r, i); + } + function Y9(r) { + return r.questionDotToken || r.flags & 32 ? Tt(r.template, e.Diagnostics.Tagged_template_expressions_are_not_permitted_in_an_optional_chain) : false; + } + function uA(r) { + var i = r.types; + if (ng(i)) + return true; + if (i && i.length === 0) { + var t = e.tokenToString(r.token); + return rd(r, i.pos, 0, e.Diagnostics._0_list_cannot_be_empty, t); + } + return e.some(i, lA); + } + function lA(r) { + return e.isExpressionWithTypeArguments(r) && e.isImportKeyword(r.expression) && r.typeArguments ? Tt(r, e.Diagnostics.This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot_have_type_arguments) : Wy(r, r.typeArguments); + } + function $9(r) { + var i = false, t = false; + if (!Ff(r) && r.heritageClauses) + for (var o = 0, s = r.heritageClauses; o < s.length; o++) { + var u = s[o]; + if (u.token === 94) { + if (i) + return Hs(u, e.Diagnostics.extends_clause_already_seen); + if (t) + return Hs(u, e.Diagnostics.extends_clause_must_precede_implements_clause); + if (u.types.length > 1) + return Hs(u.types[1], e.Diagnostics.Classes_can_only_extend_a_single_class); + i = true; + } else { + if (e.Debug.assert(u.token === 117), t) + return Hs(u, e.Diagnostics.implements_clause_already_seen); + t = true; + } + uA(u); + } + } + function Z9(r) { + var i = false; + if (r.heritageClauses) + for (var t = 0, o = r.heritageClauses; t < o.length; t++) { + var s = o[t]; + if (s.token === 94) { + if (i) + return Hs(s, e.Diagnostics.extends_clause_already_seen); + i = true; + } else + return e.Debug.assert(s.token === 117), Hs(s, e.Diagnostics.Interface_declaration_cannot_have_implements_clause); + uA(s); + } + return false; + } + function Q0(r) { + if (r.kind !== 162) + return false; + var i = r; + return i.expression.kind === 221 && i.expression.operatorToken.kind === 27 ? Tt(i.expression, e.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name) : false; + } + function WS(r) { + if (r.asteriskToken) { + if (e.Debug.assert(r.kind === 256 || r.kind === 213 || r.kind === 169), r.flags & 16777216) + return Tt(r.asteriskToken, e.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); + if (!r.body) + return Tt(r.asteriskToken, e.Diagnostics.An_overload_signature_cannot_be_declared_as_a_generator); + } + } + function fA(r, i) { + return !!r && Tt(r, i); + } + function _A(r, i) { + return !!r && Tt(r, i); + } + function eL(r, i) { + for (var t = new e.Map(), o = 0, s = r.properties; o < s.length; o++) { + var u = s[o]; + if (u.kind === 298) { + if (i) { + var h = e.skipParentheses(u.expression); + if (e.isArrayLiteralExpression(h) || e.isObjectLiteralExpression(h)) + return Tt(u.expression, e.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); + } + continue; + } + var z = u.name; + if (z.kind === 162 && Q0(z), u.kind === 297 && !i && u.objectAssignmentInitializer && Tt(u.equalsToken, e.Diagnostics.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern), z.kind === 80 && Tt(z, e.Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies), u.modifiers) + for (var me = 0, Me = u.modifiers; me < Me.length; me++) { + var $e = Me[me]; + ($e.kind !== 131 || u.kind !== 169) && Tt($e, e.Diagnostics._0_modifier_cannot_be_used_here, e.getTextOfNode($e)); + } + var tr = void 0; + switch (u.kind) { + case 297: + _A(u.exclamationToken, e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context); + case 296: + fA(u.questionToken, e.Diagnostics.An_object_member_cannot_be_declared_optional), z.kind === 8 && KS(z), tr = 4; + break; + case 169: + tr = 8; + break; + case 172: + tr = 1; + break; + case 173: + tr = 2; + break; + default: + throw e.Debug.assertNever(u, "Unexpected syntax kind:" + u.kind); + } + if (!i) { + var dr = e.getPropertyNameForPropertyNameNode(z); + if (dr === void 0) + continue; + var Dr = t.get(dr); + if (!Dr) + t.set(dr, tr); + else if (tr & 8 && Dr & 8) + Tt(z, e.Diagnostics.Duplicate_identifier_0, e.getTextOfNode(z)); + else if (tr & 4 && Dr & 4) + Tt(z, e.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name, e.getTextOfNode(z)); + else if (tr & 3 && Dr & 3) + if (Dr !== 3 && tr !== Dr) + t.set(dr, tr | Dr); + else + return Tt(z, e.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + else + return Tt(z, e.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + } + } + } + function rL(r) { + iL(r.tagName), Wy(r, r.typeArguments); + for (var i = new e.Map(), t = 0, o = r.attributes.properties; t < o.length; t++) { + var s = o[t]; + if (s.kind !== 287) { + var u = s.name, h = s.initializer; + if (!i.get(u.escapedText)) + i.set(u.escapedText, true); + else + return Tt(u, e.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); + if (h && h.kind === 288 && !h.expression) + return Tt(h, e.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); + } + } + } + function iL(r) { + if (e.isPropertyAccessExpression(r)) { + var i = r; + do { + var t = s(i.name); + if (t) + return t; + i = i.expression; + } while (e.isPropertyAccessExpression(i)); + var o = s(i); + if (o) + return o; + } + function s(u) { + if (e.isIdentifier(u) && e.idText(u).indexOf(":") !== -1) + return Tt(u, e.Diagnostics.JSX_property_access_expressions_cannot_include_JSX_namespace_names); + } + } + function tL(r) { + if (r.expression && e.isCommaSequence(r.expression)) + return Tt(r.expression, e.Diagnostics.JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array); + } + function pA(r) { + if (Mf(r)) + return true; + if (r.kind === 244 && r.awaitModifier && !(r.flags & 32768)) { + var i = e.getSourceFileOfNode(r); + if (e.isInTopLevelContext(r)) { + if (!Jd(i)) + switch (e.isEffectiveExternalModule(i, ye) || rn.add(e.createDiagnosticForNode(r.awaitModifier, e.Diagnostics.for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module)), er) { + case e.ModuleKind.Node16: + case e.ModuleKind.NodeNext: + if (i.impliedNodeFormat === e.ModuleKind.CommonJS) { + rn.add(e.createDiagnosticForNode(r.awaitModifier, e.Diagnostics.The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level)); + break; + } + case e.ModuleKind.ES2022: + case e.ModuleKind.ESNext: + case e.ModuleKind.System: + if (Ae >= 4) + break; + default: + rn.add(e.createDiagnosticForNode(r.awaitModifier, e.Diagnostics.Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher)); + break; + } + } else if (!Jd(i)) { + var t = e.createDiagnosticForNode(r.awaitModifier, e.Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules), o = e.getContainingFunction(r); + if (o && o.kind !== 171) { + e.Debug.assert((e.getFunctionFlags(o) & 2) === 0, "Enclosing function should never be an async function."); + var s = e.createDiagnosticForNode(o, e.Diagnostics.Did_you_mean_to_mark_this_function_as_async); + e.addRelatedInfo(t, s); + } + return rn.add(t), true; + } + return false; + } + if (e.isForOfStatement(r) && !(r.flags & 32768) && e.isIdentifier(r.initializer) && r.initializer.escapedText === "async") + return Tt(r.initializer, e.Diagnostics.The_left_hand_side_of_a_for_of_statement_may_not_be_async), false; + if (r.initializer.kind === 255) { + var u = r.initializer; + if (!VS(u)) { + var h = u.declarations; + if (!h.length) + return false; + if (h.length > 1) { + var t = r.kind === 243 ? e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; + return Hs(u.declarations[1], t); + } + var z = h[0]; + if (z.initializer) { + var t = r.kind === 243 ? e.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : e.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; + return Tt(z.name, t); + } + if (z.type) { + var t = r.kind === 243 ? e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : e.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; + return Tt(z, t); + } + } + } + return false; + } + function aL(r) { + if (!(r.flags & 16777216) && r.parent.kind !== 182 && r.parent.kind !== 258) { + if (Ae < 1) + return Tt(r.name, e.Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher); + if (Ae < 2 && e.isPrivateIdentifier(r.name)) + return Tt(r.name, e.Diagnostics.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher); + if (r.body === void 0 && !e.hasSyntacticModifier(r, 128)) + return rd(r, r.end - 1, 1, e.Diagnostics._0_expected, "{"); + } + if (r.body) { + if (e.hasSyntacticModifier(r, 128)) + return Tt(r, e.Diagnostics.An_abstract_accessor_cannot_have_an_implementation); + if (r.parent.kind === 182 || r.parent.kind === 258) + return Tt(r.body, e.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); + } + if (r.typeParameters) + return Tt(r.name, e.Diagnostics.An_accessor_cannot_have_type_parameters); + if (!nL(r)) + return Tt(r.name, r.kind === 172 ? e.Diagnostics.A_get_accessor_cannot_have_parameters : e.Diagnostics.A_set_accessor_must_have_exactly_one_parameter); + if (r.kind === 173) { + if (r.type) + return Tt(r.name, e.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation); + var i = e.Debug.checkDefined(e.getSetAccessorValueParameter(r), "Return value does not match parameter count assertion."); + if (i.dotDotDotToken) + return Tt(i.dotDotDotToken, e.Diagnostics.A_set_accessor_cannot_have_rest_parameter); + if (i.questionToken) + return Tt(i.questionToken, e.Diagnostics.A_set_accessor_cannot_have_an_optional_parameter); + if (i.initializer) + return Tt(r.name, e.Diagnostics.A_set_accessor_parameter_cannot_have_an_initializer); + } + return false; + } + function nL(r) { + return qS(r) || r.parameters.length === (r.kind === 172 ? 0 : 1); + } + function qS(r) { + if (r.parameters.length === (r.kind === 172 ? 1 : 2)) + return e.getThisParameter(r); + } + function oL(r) { + if (r.operator === 154) { + if (r.type.kind !== 151) + return Tt(r.type, e.Diagnostics._0_expected, e.tokenToString(151)); + var i = e.walkUpParenthesizedTypes(r.parent); + if (e.isInJSFile(i) && e.isJSDocTypeExpression(i)) { + var t = e.getJSDocHost(i); + t && (i = e.getSingleVariableOfVariableStatement(t) || t); + } + switch (i.kind) { + case 254: + var o = i; + if (o.name.kind !== 79) + return Tt(r, e.Diagnostics.unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name); + if (!e.isVariableDeclarationInVariableStatement(o)) + return Tt(r, e.Diagnostics.unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement); + if (!(o.parent.flags & 2)) + return Tt(i.name, e.Diagnostics.A_variable_whose_type_is_a_unique_symbol_type_must_be_const); + break; + case 167: + if (!e.isStatic(i) || !e.hasEffectiveReadonlyModifier(i)) + return Tt(i.name, e.Diagnostics.A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly); + break; + case 166: + if (!e.hasSyntacticModifier(i, 64)) + return Tt(i.name, e.Diagnostics.A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly); + break; + default: + return Tt(r, e.Diagnostics.unique_symbol_types_are_not_allowed_here); + } + } else if (r.operator === 145 && r.type.kind !== 183 && r.type.kind !== 184) + return Hs(r, e.Diagnostics.readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types, e.tokenToString(151)); + } + function Em(r, i) { + if (I1(r)) + return Tt(r, i); + } + function dA(r) { + if (X0(r)) + return true; + if (r.kind === 169) { + if (r.parent.kind === 205) { + if (r.modifiers && !(r.modifiers.length === 1 && e.first(r.modifiers).kind === 131)) + return Hs(r, e.Diagnostics.Modifiers_cannot_appear_here); + if (fA(r.questionToken, e.Diagnostics.An_object_member_cannot_be_declared_optional)) + return true; + if (_A(r.exclamationToken, e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context)) + return true; + if (r.body === void 0) + return rd(r, r.end - 1, 1, e.Diagnostics._0_expected, "{"); + } + if (WS(r)) + return true; + } + if (e.isClassLike(r.parent)) { + if (Ae < 2 && e.isPrivateIdentifier(r.name)) + return Tt(r.name, e.Diagnostics.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher); + if (r.flags & 16777216) + return Em(r.name, e.Diagnostics.A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type); + if (r.kind === 169 && !r.body) + return Em(r.name, e.Diagnostics.A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type); + } else { + if (r.parent.kind === 258) + return Em(r.name, e.Diagnostics.A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type); + if (r.parent.kind === 182) + return Em(r.name, e.Diagnostics.A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type); + } + } + function sL(r) { + for (var i = r; i; ) { + if (e.isFunctionLikeOrClassStaticBlockDeclaration(i)) + return Tt(r, e.Diagnostics.Jump_target_cannot_cross_function_boundary); + switch (i.kind) { + case 250: + if (r.label && i.label.escapedText === r.label.escapedText) { + var t = r.kind === 245 && !e.isIterationStatement(i.statement, true); + return t ? Tt(r, e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement) : false; + } + break; + case 249: + if (r.kind === 246 && !r.label) + return false; + break; + default: + if (e.isIterationStatement(i, false) && !r.label) + return false; + break; + } + i = i.parent; + } + if (r.label) { + var o = r.kind === 246 ? e.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; + return Tt(r, o); + } else { + var o = r.kind === 246 ? e.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : e.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; + return Tt(r, o); + } + } + function cL(r) { + if (r.dotDotDotToken) { + var i = r.parent.elements; + if (r !== e.last(i)) + return Tt(r, e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern); + if (ng(i, e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma), r.propertyName) + return Tt(r.name, e.Diagnostics.A_rest_element_cannot_have_a_property_name); + } + if (r.dotDotDotToken && r.initializer) + return rd(r, r.initializer.pos - 1, 1, e.Diagnostics.A_rest_element_cannot_have_an_initializer); + } + function gA(r) { + return e.isStringOrNumericLiteralLike(r) || r.kind === 219 && r.operator === 40 && r.operand.kind === 8; + } + function uL(r) { + return r.kind === 9 || r.kind === 219 && r.operator === 40 && r.operand.kind === 9; + } + function lL(r) { + if ((e.isPropertyAccessExpression(r) || e.isElementAccessExpression(r) && gA(r.argumentExpression)) && e.isEntityNameExpression(r.expression)) + return !!(Os(r).flags & 1024); + } + function mA(r) { + var i = r.initializer; + if (i) { + var t = !(gA(i) || lL(i) || i.kind === 110 || i.kind === 95 || uL(i)), o = e.isDeclarationReadonly(r) || e.isVariableDeclaration(r) && e.isVarConst(r); + if (o && !r.type) { + if (t) + return Tt(i, e.Diagnostics.A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_reference); + } else + return Tt(i, e.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + if (!o || t) + return Tt(i, e.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); + } + } + function fL(r) { + if (r.parent.parent.kind !== 243 && r.parent.parent.kind !== 244) { + if (r.flags & 16777216) + mA(r); + else if (!r.initializer) { + if (e.isBindingPattern(r.name) && !e.isBindingPattern(r.parent)) + return Tt(r, e.Diagnostics.A_destructuring_declaration_must_have_an_initializer); + if (e.isVarConst(r)) + return Tt(r, e.Diagnostics.const_declarations_must_be_initialized); + } + } + if (r.exclamationToken && (r.parent.parent.kind !== 237 || !r.type || r.initializer || r.flags & 16777216)) { + var i = r.initializer ? e.Diagnostics.Declarations_with_initializers_cannot_also_have_definite_assignment_assertions : r.type ? e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context : e.Diagnostics.Declarations_with_definite_assignment_assertions_must_also_have_type_annotations; + return Tt(r.exclamationToken, i); + } + (er < e.ModuleKind.ES2015 || e.getSourceFileOfNode(r).impliedNodeFormat === e.ModuleKind.CommonJS) && er !== e.ModuleKind.System && !(r.parent.parent.flags & 16777216) && e.hasSyntacticModifier(r.parent.parent, 1) && vA(r.name); + var t = e.isLet(r) || e.isVarConst(r); + return t && yA(r.name); + } + function vA(r) { + if (r.kind === 79) { + if (e.idText(r) === "__esModule") + return dL("noEmit", r, e.Diagnostics.Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules); + } else + for (var i = r.elements, t = 0, o = i; t < o.length; t++) { + var s = o[t]; + if (!e.isOmittedExpression(s)) + return vA(s.name); + } + return false; + } + function yA(r) { + if (r.kind === 79) { + if (r.originalKeywordKind === 119) + return Tt(r, e.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); + } else + for (var i = r.elements, t = 0, o = i; t < o.length; t++) { + var s = o[t]; + e.isOmittedExpression(s) || yA(s.name); + } + return false; + } + function VS(r) { + var i = r.declarations; + return ng(r.declarations) ? true : r.declarations.length ? false : rd(r, i.pos, i.end - i.pos, e.Diagnostics.Variable_declaration_list_cannot_be_empty); + } + function hA(r) { + switch (r.kind) { + case 239: + case 240: + case 241: + case 248: + case 242: + case 243: + case 244: + return false; + case 250: + return hA(r.parent); + } + return true; + } + function _L(r) { + if (!hA(r.parent)) { + if (e.isLet(r.declarationList)) + return Tt(r, e.Diagnostics.let_declarations_can_only_be_declared_inside_a_block); + if (e.isVarConst(r.declarationList)) + return Tt(r, e.Diagnostics.const_declarations_can_only_be_declared_inside_a_block); + } + } + function pL(r) { + var i = r.name.escapedText; + switch (r.keywordToken) { + case 103: + if (i !== "target") + return Tt(r.name, e.Diagnostics._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2, r.name.escapedText, e.tokenToString(r.keywordToken), "target"); + break; + case 100: + if (i !== "meta") + return Tt(r.name, e.Diagnostics._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2, r.name.escapedText, e.tokenToString(r.keywordToken), "meta"); + break; + } + } + function Jd(r) { + return r.parseDiagnostics.length > 0; + } + function Hs(r, i, t, o, s) { + var u = e.getSourceFileOfNode(r); + if (!Jd(u)) { + var h = e.getSpanOfTokenAtPosition(u, r.pos); + return rn.add(e.createFileDiagnostic(u, h.start, h.length, i, t, o, s)), true; + } + return false; + } + function rd(r, i, t, o, s, u, h) { + var z = e.getSourceFileOfNode(r); + return Jd(z) ? false : (rn.add(e.createFileDiagnostic(z, i, t, o, s, u, h)), true); + } + function dL(r, i, t, o, s, u) { + var h = e.getSourceFileOfNode(i); + return Jd(h) ? false : (Es(r, i, t, o, s, u), true); + } + function Tt(r, i, t, o, s) { + var u = e.getSourceFileOfNode(r); + return Jd(u) ? false : (rn.add(e.createDiagnosticForNode(r, i, t, o, s)), true); + } + function gL(r) { + var i = e.isInJSFile(r) ? e.getJSDocTypeParameterDeclarations(r) : void 0, t = r.typeParameters || i && e.firstOrUndefined(i); + if (t) { + var o = t.pos === t.end ? t.pos : e.skipTrivia(e.getSourceFileOfNode(r).text, t.pos); + return rd(r, o, t.end - o, e.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration); + } + } + function mL(r) { + var i = e.getEffectiveReturnTypeNode(r); + if (i) + return Tt(i, e.Diagnostics.Type_annotation_cannot_appear_on_a_constructor_declaration); + } + function vL(r) { + if (e.isComputedPropertyName(r.name) && e.isBinaryExpression(r.name.expression) && r.name.expression.operatorToken.kind === 101) + return Tt(r.parent.members[0], e.Diagnostics.A_mapped_type_may_not_declare_properties_or_methods); + if (e.isClassLike(r.parent)) { + if (e.isStringLiteral(r.name) && r.name.text === "constructor") + return Tt(r.name, e.Diagnostics.Classes_may_not_have_a_field_named_constructor); + if (Em(r.name, e.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_have_a_simple_literal_type_or_a_unique_symbol_type)) + return true; + if (Ae < 2 && e.isPrivateIdentifier(r.name)) + return Tt(r.name, e.Diagnostics.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher); + } else if (r.parent.kind === 258) { + if (Em(r.name, e.Diagnostics.A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type)) + return true; + if (r.initializer) + return Tt(r.initializer, e.Diagnostics.An_interface_property_cannot_have_an_initializer); + } else if (e.isTypeLiteralNode(r.parent)) { + if (Em(r.name, e.Diagnostics.A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type)) + return true; + if (r.initializer) + return Tt(r.initializer, e.Diagnostics.A_type_literal_property_cannot_have_an_initializer); + } + if (r.flags & 16777216 && mA(r), e.isPropertyDeclaration(r) && r.exclamationToken && (!e.isClassLike(r.parent) || !r.type || r.initializer || r.flags & 16777216 || e.isStatic(r) || e.hasAbstractModifier(r))) { + var i = r.initializer ? e.Diagnostics.Declarations_with_initializers_cannot_also_have_definite_assignment_assertions : r.type ? e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context : e.Diagnostics.Declarations_with_definite_assignment_assertions_must_also_have_type_annotations; + return Tt(r.exclamationToken, i); + } + } + function yL(r) { + return r.kind === 258 || r.kind === 259 || r.kind === 266 || r.kind === 265 || r.kind === 272 || r.kind === 271 || r.kind === 264 || e.hasSyntacticModifier(r, 515) ? false : Hs(r, e.Diagnostics.Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier); + } + function hL(r) { + for (var i = 0, t = r.statements; i < t.length; i++) { + var o = t[i]; + if ((e.isDeclaration(o) || o.kind === 237) && yL(o)) + return true; + } + return false; + } + function DL(r) { + return !!(r.flags & 16777216) && hL(r); + } + function Mf(r) { + if (r.flags & 16777216) { + var i = va(r); + if (!i.hasReportedStatementInAmbientContext && (e.isFunctionLike(r.parent) || e.isAccessor(r.parent))) + return va(r).hasReportedStatementInAmbientContext = Hs(r, e.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); + if (r.parent.kind === 235 || r.parent.kind === 262 || r.parent.kind === 305) { + var t = va(r.parent); + if (!t.hasReportedStatementInAmbientContext) + return t.hasReportedStatementInAmbientContext = Hs(r, e.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); + } + } + return false; + } + function KS(r) { + if (r.numericLiteralFlags & 32) { + var i = void 0; + if (Ae >= 1 ? i = e.Diagnostics.Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0 : e.isChildOfNodeWithKind(r, 196) ? i = e.Diagnostics.Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0 : e.isChildOfNodeWithKind(r, 299) && (i = e.Diagnostics.Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0), i) { + var t = e.isPrefixUnaryExpression(r.parent) && r.parent.operator === 40, o = (t ? "-" : "") + "0o" + r.text; + return Tt(t ? r.parent : r, i, o); + } + } + return bL(r), false; + } + function bL(r) { + var i = e.getTextOfNode(r).indexOf(".") !== -1, t = r.numericLiteralFlags & 16; + if (!(i || t)) { + var o = +r.text; + o <= Math.pow(2, 53) - 1 || Ls(false, e.createDiagnosticForNode(r, e.Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers)); + } + } + function SL(r) { + var i = e.isLiteralTypeNode(r.parent) || e.isPrefixUnaryExpression(r.parent) && e.isLiteralTypeNode(r.parent.parent); + return !!(!i && Ae < 7 && Tt(r, e.Diagnostics.BigInt_literals_are_not_available_when_targeting_lower_than_ES2020)); + } + function TL(r, i, t, o, s) { + var u = e.getSourceFileOfNode(r); + if (!Jd(u)) { + var h = e.getSpanOfTokenAtPosition(u, r.pos); + return rn.add(e.createFileDiagnostic(u, e.textSpanEnd(h), 0, i, t, o, s)), true; + } + return false; + } + function xL() { + return Gr || (Gr = [], ii.forEach(function(r, i) { + a.test(i) && Gr.push(r); + })), Gr; + } + function EL(r) { + var i; + return r.isTypeOnly && r.name && r.namedBindings ? Tt(r, e.Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both) : r.isTypeOnly && ((i = r.namedBindings) === null || i === void 0 ? void 0 : i.kind) === 269 ? DA(r.namedBindings) : false; + } + function DA(r) { + return !!e.forEach(r.elements, function(i) { + if (i.isTypeOnly) + return Hs(i, i.kind === 270 ? e.Diagnostics.The_type_modifier_cannot_be_used_on_a_named_import_when_import_type_is_used_on_its_import_statement : e.Diagnostics.The_type_modifier_cannot_be_used_on_a_named_export_when_export_type_is_used_on_its_export_statement); + }); + } + function CL(r) { + if (er === e.ModuleKind.ES2015) + return Tt(r, e.Diagnostics.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext); + if (r.typeArguments) + return Tt(r, e.Diagnostics.This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot_have_type_arguments); + var i = r.arguments; + if (er !== e.ModuleKind.ESNext && er !== e.ModuleKind.NodeNext && (ng(i), i.length > 1)) { + var t = i[1]; + return Tt(t, e.Diagnostics.Dynamic_imports_only_support_a_second_argument_when_the_module_option_is_set_to_esnext_node16_or_nodenext); + } + if (i.length === 0 || i.length > 2) + return Tt(r, e.Diagnostics.Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments); + var o = e.find(i, e.isSpreadElement); + return o ? Tt(o, e.Diagnostics.Argument_of_dynamic_import_cannot_be_spread_element) : false; + } + function kL(r, i) { + var t = e.getObjectFlags(r); + if (t & 20 && i.flags & 1048576) + return e.find(i.types, function(o) { + if (o.flags & 524288) { + var s = t & e.getObjectFlags(o); + if (s & 4) + return r.target === o.target; + if (s & 16) + return !!r.aliasSymbol && r.aliasSymbol === o.aliasSymbol; + } + return false; + }); + } + function AL(r, i) { + if (e.getObjectFlags(r) & 128 && rg(i, sp)) + return e.find(i.types, function(t) { + return !sp(t); + }); + } + function NL(r, i) { + var t = 0, o = ot(r, t).length > 0 || (t = 1, ot(r, t).length > 0); + if (o) + return e.find(i.types, function(s) { + return ot(s, t).length > 0; + }); + } + function PL(r, i) { + var t; + if (!(r.flags & 406978556)) + for (var o = 0, s = 0, u = i.types; s < u.length; s++) { + var h = u[s]; + if (!(h.flags & 406978556)) { + var z = Do([ql(r), ql(h)]); + if (z.flags & 4194304) + return h; + if (Vl(z) || z.flags & 1048576) { + var me = z.flags & 1048576 ? e.countWhere(z.types, Vl) : 1; + me >= o && (t = h, o = me); + } + } + } + return t; + } + function IL(r) { + if (fs5(r, 67108864)) { + var i = ec(r, function(t) { + return !(t.flags & 131068); + }); + if (!(i.flags & 131072)) + return i; + } + return r; + } + function bA(r, i, t, o) { + if (i.flags & 1048576 && r.flags & 2621440) { + var s = $E(i, r); + if (s) + return s; + var u = uo(r); + if (u) { + var h = YE(u, i); + if (h) + return UD(i, e.map(h, function(z) { + return [function() { + return Jt(z); + }, z.escapedName]; + }), t, void 0, o); + } + } + } + } + e.createTypeChecker = L; + function P(l) { + return !e.isAccessor(l); + } + function k(l) { + return l.kind !== 256 && l.kind !== 169 || !!l.body; + } + function Y(l) { + switch (l.parent.kind) { + case 270: + case 275: + return e.isIdentifier(l); + default: + return e.isDeclarationName(l); + } + } + var U; + (function(l) { + l.JSX = "JSX", l.IntrinsicElements = "IntrinsicElements", l.ElementClass = "ElementClass", l.ElementAttributesPropertyNameContainer = "ElementAttributesProperty", l.ElementChildrenAttributeNameContainer = "ElementChildrenAttribute", l.Element = "Element", l.IntrinsicAttributes = "IntrinsicAttributes", l.IntrinsicClassAttributes = "IntrinsicClassAttributes", l.LibraryManagedAttributes = "LibraryManagedAttributes"; + })(U || (U = {})); + function j(l) { + switch (l) { + case 0: + return "yieldType"; + case 1: + return "returnType"; + case 2: + return "nextType"; + } + } + function H(l) { + return !!(l.flags & 1); + } + e.signatureHasRestParameter = H; + function I(l) { + return !!(l.flags & 2); + } + e.signatureHasLiteralTypes = I; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(f, T, K, b) { + if (f === void 0 || T === void 0) + return f; + var se = T(f); + if (se === f) + return f; + var J; + if (se !== void 0) + return e.isArray(se) ? J = (b || oe)(se) : J = se, e.Debug.assertNode(J, K), J; + } + e.visitNode = a; + function C(f, T, K, b, se) { + if (f === void 0 || T === void 0) + return f; + var J, ie = f.length; + (b === void 0 || b < 0) && (b = 0), (se === void 0 || se > ie - b) && (se = ie - b); + var R, q = -1, O = -1; + (b > 0 || se < ie) && (J = [], R = f.hasTrailingComma && b + se === ie); + for (var ve = 0; ve < se; ve++) { + var ee = f[ve + b], he = ee !== void 0 ? T(ee) : void 0; + if ((J !== void 0 || he === void 0 || he !== ee) && (J === void 0 && (J = f.slice(0, ve), R = f.hasTrailingComma, q = f.pos, O = f.end), he)) + if (e.isArray(he)) + for (var F = 0, x = he; F < x.length; F++) { + var X = x[F]; + e.Debug.assertNode(X, K), J.push(X); + } + else + e.Debug.assertNode(he, K), J.push(he); + } + if (J) { + var $ = e.factory.createNodeArray(J, R); + return e.setTextRangePosEnd($, q, O), $; + } + return f; + } + e.visitNodes = C; + function w(f, T, K, b, se, J) { + return J === void 0 && (J = C), K.startLexicalEnvironment(), f = J(f, T, e.isStatement, b), se && (f = K.factory.ensureUseStrict(f)), e.factory.mergeLexicalEnvironment(f, K.endLexicalEnvironment()); + } + e.visitLexicalEnvironment = w; + function B(f, T, K, b) { + b === void 0 && (b = C); + var se; + return K.startLexicalEnvironment(), f && (K.setLexicalEnvironmentFlags(1, true), se = b(f, T, e.isParameterDeclaration), K.getLexicalEnvironmentFlags() & 2 && e.getEmitScriptTarget(K.getCompilerOptions()) >= 2 && (se = E(se, K)), K.setLexicalEnvironmentFlags(1, false)), K.suspendLexicalEnvironment(), se; + } + e.visitParameterList = B; + function E(f, T) { + for (var K, b = 0; b < f.length; b++) { + var se = f[b], J = Q(se, T); + (K || J !== se) && (K || (K = f.slice(0, b)), K[b] = J); + } + return K ? e.setTextRange(T.factory.createNodeArray(K, f.hasTrailingComma), f) : f; + } + function Q(f, T) { + return f.dotDotDotToken ? f : e.isBindingPattern(f.name) ? le(f, T) : f.initializer ? N(f, f.name, f.initializer, T) : f; + } + function le(f, T) { + var K = T.factory; + return T.addInitializationStatement(K.createVariableStatement(void 0, K.createVariableDeclarationList([K.createVariableDeclaration(f.name, void 0, f.type, f.initializer ? K.createConditionalExpression(K.createStrictEquality(K.getGeneratedNameForNode(f), K.createVoidZero()), void 0, f.initializer, void 0, K.getGeneratedNameForNode(f)) : K.getGeneratedNameForNode(f))]))), K.updateParameterDeclaration(f, f.decorators, f.modifiers, f.dotDotDotToken, K.getGeneratedNameForNode(f), f.questionToken, f.type, void 0); + } + function N(f, T, K, b) { + var se = b.factory; + return b.addInitializationStatement(se.createIfStatement(se.createTypeCheck(se.cloneNode(T), "undefined"), e.setEmitFlags(e.setTextRange(se.createBlock([se.createExpressionStatement(e.setEmitFlags(e.setTextRange(se.createAssignment(e.setEmitFlags(se.cloneNode(T), 48), e.setEmitFlags(K, 48 | e.getEmitFlags(K) | 1536)), f), 1536))]), f), 1953))), se.updateParameterDeclaration(f, f.decorators, f.modifiers, f.dotDotDotToken, f.name, f.questionToken, f.type, void 0); + } + function p(f, T, K, b) { + b === void 0 && (b = a), K.resumeLexicalEnvironment(); + var se = b(f, T, e.isConciseBody), J = K.endLexicalEnvironment(); + if (e.some(J)) { + if (!se) + return K.factory.createBlock(J); + var ie = K.factory.converters.convertToFunctionBlock(se), R = e.factory.mergeLexicalEnvironment(ie.statements, J); + return K.factory.updateBlock(ie, R); + } + return se; + } + e.visitFunctionBody = p; + function m(f, T, K) { + K.startBlockScope(); + var b = a(f, T, e.isStatement, K.factory.liftToBlock), se = K.endBlockScope(); + return e.some(se) ? e.isBlock(b) ? (se.push.apply(se, b.statements), K.factory.updateBlock(b, se)) : (se.push(b), K.factory.createBlock(se)) : b; + } + e.visitIterationBody = m; + function G(f, T, K, b, se, J) { + if (b === void 0 && (b = C), J === void 0 && (J = a), f !== void 0) { + var ie = f.kind; + if (ie > 0 && ie <= 160 || ie === 192) + return f; + var R = K.factory; + switch (ie) { + case 79: + return e.Debug.type(f), R.updateIdentifier(f, b(f.typeArguments, T, e.isTypeNodeOrTypeParameterDeclaration)); + case 161: + return e.Debug.type(f), R.updateQualifiedName(f, J(f.left, T, e.isEntityName), J(f.right, T, e.isIdentifier)); + case 162: + return e.Debug.type(f), R.updateComputedPropertyName(f, J(f.expression, T, e.isExpression)); + case 163: + return e.Debug.type(f), R.updateTypeParameterDeclaration(f, b(f.modifiers, T, e.isModifier), J(f.name, T, e.isIdentifier), J(f.constraint, T, e.isTypeNode), J(f.default, T, e.isTypeNode)); + case 164: + return e.Debug.type(f), R.updateParameterDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.dotDotDotToken, se, e.isDotDotDotToken), J(f.name, T, e.isBindingName), J(f.questionToken, se, e.isQuestionToken), J(f.type, T, e.isTypeNode), J(f.initializer, T, e.isExpression)); + case 165: + return e.Debug.type(f), R.updateDecorator(f, J(f.expression, T, e.isExpression)); + case 166: + return e.Debug.type(f), R.updatePropertySignature(f, b(f.modifiers, T, e.isModifier), J(f.name, T, e.isPropertyName), J(f.questionToken, se, e.isToken), J(f.type, T, e.isTypeNode)); + case 167: + return e.Debug.type(f), R.updatePropertyDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isPropertyName), J(f.questionToken || f.exclamationToken, se, e.isQuestionOrExclamationToken), J(f.type, T, e.isTypeNode), J(f.initializer, T, e.isExpression)); + case 168: + return e.Debug.type(f), R.updateMethodSignature(f, b(f.modifiers, T, e.isModifier), J(f.name, T, e.isPropertyName), J(f.questionToken, se, e.isQuestionToken), b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.parameters, T, e.isParameterDeclaration), J(f.type, T, e.isTypeNode)); + case 169: + return e.Debug.type(f), R.updateMethodDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.asteriskToken, se, e.isAsteriskToken), J(f.name, T, e.isPropertyName), J(f.questionToken, se, e.isQuestionToken), b(f.typeParameters, T, e.isTypeParameterDeclaration), B(f.parameters, T, K, b), J(f.type, T, e.isTypeNode), p(f.body, T, K, J)); + case 171: + return e.Debug.type(f), R.updateConstructorDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), B(f.parameters, T, K, b), p(f.body, T, K, J)); + case 172: + return e.Debug.type(f), R.updateGetAccessorDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isPropertyName), B(f.parameters, T, K, b), J(f.type, T, e.isTypeNode), p(f.body, T, K, J)); + case 173: + return e.Debug.type(f), R.updateSetAccessorDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isPropertyName), B(f.parameters, T, K, b), p(f.body, T, K, J)); + case 170: + return e.Debug.type(f), K.startLexicalEnvironment(), K.suspendLexicalEnvironment(), R.updateClassStaticBlockDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), p(f.body, T, K, J)); + case 174: + return e.Debug.type(f), R.updateCallSignature(f, b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.parameters, T, e.isParameterDeclaration), J(f.type, T, e.isTypeNode)); + case 175: + return e.Debug.type(f), R.updateConstructSignature(f, b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.parameters, T, e.isParameterDeclaration), J(f.type, T, e.isTypeNode)); + case 176: + return e.Debug.type(f), R.updateIndexSignature(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), b(f.parameters, T, e.isParameterDeclaration), J(f.type, T, e.isTypeNode)); + case 177: + return e.Debug.type(f), R.updateTypePredicateNode(f, J(f.assertsModifier, T, e.isAssertsKeyword), J(f.parameterName, T, e.isIdentifierOrThisTypeNode), J(f.type, T, e.isTypeNode)); + case 178: + return e.Debug.type(f), R.updateTypeReferenceNode(f, J(f.typeName, T, e.isEntityName), b(f.typeArguments, T, e.isTypeNode)); + case 179: + return e.Debug.type(f), R.updateFunctionTypeNode(f, b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.parameters, T, e.isParameterDeclaration), J(f.type, T, e.isTypeNode)); + case 180: + return e.Debug.type(f), R.updateConstructorTypeNode(f, b(f.modifiers, T, e.isModifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.parameters, T, e.isParameterDeclaration), J(f.type, T, e.isTypeNode)); + case 181: + return e.Debug.type(f), R.updateTypeQueryNode(f, J(f.exprName, T, e.isEntityName), b(f.typeArguments, T, e.isTypeNode)); + case 182: + return e.Debug.type(f), R.updateTypeLiteralNode(f, b(f.members, T, e.isTypeElement)); + case 183: + return e.Debug.type(f), R.updateArrayTypeNode(f, J(f.elementType, T, e.isTypeNode)); + case 184: + return e.Debug.type(f), R.updateTupleTypeNode(f, b(f.elements, T, e.isTypeNode)); + case 185: + return e.Debug.type(f), R.updateOptionalTypeNode(f, J(f.type, T, e.isTypeNode)); + case 186: + return e.Debug.type(f), R.updateRestTypeNode(f, J(f.type, T, e.isTypeNode)); + case 187: + return e.Debug.type(f), R.updateUnionTypeNode(f, b(f.types, T, e.isTypeNode)); + case 188: + return e.Debug.type(f), R.updateIntersectionTypeNode(f, b(f.types, T, e.isTypeNode)); + case 189: + return e.Debug.type(f), R.updateConditionalTypeNode(f, J(f.checkType, T, e.isTypeNode), J(f.extendsType, T, e.isTypeNode), J(f.trueType, T, e.isTypeNode), J(f.falseType, T, e.isTypeNode)); + case 190: + return e.Debug.type(f), R.updateInferTypeNode(f, J(f.typeParameter, T, e.isTypeParameterDeclaration)); + case 200: + return e.Debug.type(f), R.updateImportTypeNode(f, J(f.argument, T, e.isTypeNode), J(f.assertions, T, e.isNode), J(f.qualifier, T, e.isEntityName), C(f.typeArguments, T, e.isTypeNode), f.isTypeOf); + case 295: + return e.Debug.type(f), R.updateImportTypeAssertionContainer(f, J(f.assertClause, T, e.isNode), f.multiLine); + case 197: + return e.Debug.type(f), R.updateNamedTupleMember(f, a(f.dotDotDotToken, T, e.isDotDotDotToken), a(f.name, T, e.isIdentifier), a(f.questionToken, T, e.isQuestionToken), a(f.type, T, e.isTypeNode)); + case 191: + return e.Debug.type(f), R.updateParenthesizedType(f, J(f.type, T, e.isTypeNode)); + case 193: + return e.Debug.type(f), R.updateTypeOperatorNode(f, J(f.type, T, e.isTypeNode)); + case 194: + return e.Debug.type(f), R.updateIndexedAccessTypeNode(f, J(f.objectType, T, e.isTypeNode), J(f.indexType, T, e.isTypeNode)); + case 195: + return e.Debug.type(f), R.updateMappedTypeNode(f, J(f.readonlyToken, se, e.isReadonlyKeywordOrPlusOrMinusToken), J(f.typeParameter, T, e.isTypeParameterDeclaration), J(f.nameType, T, e.isTypeNode), J(f.questionToken, se, e.isQuestionOrPlusOrMinusToken), J(f.type, T, e.isTypeNode), b(f.members, T, e.isTypeElement)); + case 196: + return e.Debug.type(f), R.updateLiteralTypeNode(f, J(f.literal, T, e.isExpression)); + case 198: + return e.Debug.type(f), R.updateTemplateLiteralType(f, J(f.head, T, e.isTemplateHead), b(f.templateSpans, T, e.isTemplateLiteralTypeSpan)); + case 199: + return e.Debug.type(f), R.updateTemplateLiteralTypeSpan(f, J(f.type, T, e.isTypeNode), J(f.literal, T, e.isTemplateMiddleOrTemplateTail)); + case 201: + return e.Debug.type(f), R.updateObjectBindingPattern(f, b(f.elements, T, e.isBindingElement)); + case 202: + return e.Debug.type(f), R.updateArrayBindingPattern(f, b(f.elements, T, e.isArrayBindingElement)); + case 203: + return e.Debug.type(f), R.updateBindingElement(f, J(f.dotDotDotToken, se, e.isDotDotDotToken), J(f.propertyName, T, e.isPropertyName), J(f.name, T, e.isBindingName), J(f.initializer, T, e.isExpression)); + case 204: + return e.Debug.type(f), R.updateArrayLiteralExpression(f, b(f.elements, T, e.isExpression)); + case 205: + return e.Debug.type(f), R.updateObjectLiteralExpression(f, b(f.properties, T, e.isObjectLiteralElementLike)); + case 206: + return f.flags & 32 ? (e.Debug.type(f), R.updatePropertyAccessChain(f, J(f.expression, T, e.isExpression), J(f.questionDotToken, se, e.isQuestionDotToken), J(f.name, T, e.isMemberName))) : (e.Debug.type(f), R.updatePropertyAccessExpression(f, J(f.expression, T, e.isExpression), J(f.name, T, e.isMemberName))); + case 207: + return f.flags & 32 ? (e.Debug.type(f), R.updateElementAccessChain(f, J(f.expression, T, e.isExpression), J(f.questionDotToken, se, e.isQuestionDotToken), J(f.argumentExpression, T, e.isExpression))) : (e.Debug.type(f), R.updateElementAccessExpression(f, J(f.expression, T, e.isExpression), J(f.argumentExpression, T, e.isExpression))); + case 208: + return f.flags & 32 ? (e.Debug.type(f), R.updateCallChain(f, J(f.expression, T, e.isExpression), J(f.questionDotToken, se, e.isQuestionDotToken), b(f.typeArguments, T, e.isTypeNode), b(f.arguments, T, e.isExpression))) : (e.Debug.type(f), R.updateCallExpression(f, J(f.expression, T, e.isExpression), b(f.typeArguments, T, e.isTypeNode), b(f.arguments, T, e.isExpression))); + case 209: + return e.Debug.type(f), R.updateNewExpression(f, J(f.expression, T, e.isExpression), b(f.typeArguments, T, e.isTypeNode), b(f.arguments, T, e.isExpression)); + case 210: + return e.Debug.type(f), R.updateTaggedTemplateExpression(f, J(f.tag, T, e.isExpression), C(f.typeArguments, T, e.isTypeNode), J(f.template, T, e.isTemplateLiteral)); + case 211: + return e.Debug.type(f), R.updateTypeAssertion(f, J(f.type, T, e.isTypeNode), J(f.expression, T, e.isExpression)); + case 212: + return e.Debug.type(f), R.updateParenthesizedExpression(f, J(f.expression, T, e.isExpression)); + case 213: + return e.Debug.type(f), R.updateFunctionExpression(f, b(f.modifiers, T, e.isModifier), J(f.asteriskToken, se, e.isAsteriskToken), J(f.name, T, e.isIdentifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), B(f.parameters, T, K, b), J(f.type, T, e.isTypeNode), p(f.body, T, K, J)); + case 214: + return e.Debug.type(f), R.updateArrowFunction(f, b(f.modifiers, T, e.isModifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), B(f.parameters, T, K, b), J(f.type, T, e.isTypeNode), J(f.equalsGreaterThanToken, se, e.isEqualsGreaterThanToken), p(f.body, T, K, J)); + case 215: + return e.Debug.type(f), R.updateDeleteExpression(f, J(f.expression, T, e.isExpression)); + case 216: + return e.Debug.type(f), R.updateTypeOfExpression(f, J(f.expression, T, e.isExpression)); + case 217: + return e.Debug.type(f), R.updateVoidExpression(f, J(f.expression, T, e.isExpression)); + case 218: + return e.Debug.type(f), R.updateAwaitExpression(f, J(f.expression, T, e.isExpression)); + case 219: + return e.Debug.type(f), R.updatePrefixUnaryExpression(f, J(f.operand, T, e.isExpression)); + case 220: + return e.Debug.type(f), R.updatePostfixUnaryExpression(f, J(f.operand, T, e.isExpression)); + case 221: + return e.Debug.type(f), R.updateBinaryExpression(f, J(f.left, T, e.isExpression), J(f.operatorToken, se, e.isBinaryOperatorToken), J(f.right, T, e.isExpression)); + case 222: + return e.Debug.type(f), R.updateConditionalExpression(f, J(f.condition, T, e.isExpression), J(f.questionToken, se, e.isQuestionToken), J(f.whenTrue, T, e.isExpression), J(f.colonToken, se, e.isColonToken), J(f.whenFalse, T, e.isExpression)); + case 223: + return e.Debug.type(f), R.updateTemplateExpression(f, J(f.head, T, e.isTemplateHead), b(f.templateSpans, T, e.isTemplateSpan)); + case 224: + return e.Debug.type(f), R.updateYieldExpression(f, J(f.asteriskToken, se, e.isAsteriskToken), J(f.expression, T, e.isExpression)); + case 225: + return e.Debug.type(f), R.updateSpreadElement(f, J(f.expression, T, e.isExpression)); + case 226: + return e.Debug.type(f), R.updateClassExpression(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isIdentifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.heritageClauses, T, e.isHeritageClause), b(f.members, T, e.isClassElement)); + case 228: + return e.Debug.type(f), R.updateExpressionWithTypeArguments(f, J(f.expression, T, e.isExpression), b(f.typeArguments, T, e.isTypeNode)); + case 229: + return e.Debug.type(f), R.updateAsExpression(f, J(f.expression, T, e.isExpression), J(f.type, T, e.isTypeNode)); + case 230: + return f.flags & 32 ? (e.Debug.type(f), R.updateNonNullChain(f, J(f.expression, T, e.isExpression))) : (e.Debug.type(f), R.updateNonNullExpression(f, J(f.expression, T, e.isExpression))); + case 231: + return e.Debug.type(f), R.updateMetaProperty(f, J(f.name, T, e.isIdentifier)); + case 233: + return e.Debug.type(f), R.updateTemplateSpan(f, J(f.expression, T, e.isExpression), J(f.literal, T, e.isTemplateMiddleOrTemplateTail)); + case 235: + return e.Debug.type(f), R.updateBlock(f, b(f.statements, T, e.isStatement)); + case 237: + return e.Debug.type(f), R.updateVariableStatement(f, b(f.modifiers, T, e.isModifier), J(f.declarationList, T, e.isVariableDeclarationList)); + case 238: + return e.Debug.type(f), R.updateExpressionStatement(f, J(f.expression, T, e.isExpression)); + case 239: + return e.Debug.type(f), R.updateIfStatement(f, J(f.expression, T, e.isExpression), J(f.thenStatement, T, e.isStatement, R.liftToBlock), J(f.elseStatement, T, e.isStatement, R.liftToBlock)); + case 240: + return e.Debug.type(f), R.updateDoStatement(f, m(f.statement, T, K), J(f.expression, T, e.isExpression)); + case 241: + return e.Debug.type(f), R.updateWhileStatement(f, J(f.expression, T, e.isExpression), m(f.statement, T, K)); + case 242: + return e.Debug.type(f), R.updateForStatement(f, J(f.initializer, T, e.isForInitializer), J(f.condition, T, e.isExpression), J(f.incrementor, T, e.isExpression), m(f.statement, T, K)); + case 243: + return e.Debug.type(f), R.updateForInStatement(f, J(f.initializer, T, e.isForInitializer), J(f.expression, T, e.isExpression), m(f.statement, T, K)); + case 244: + return e.Debug.type(f), R.updateForOfStatement(f, J(f.awaitModifier, se, e.isAwaitKeyword), J(f.initializer, T, e.isForInitializer), J(f.expression, T, e.isExpression), m(f.statement, T, K)); + case 245: + return e.Debug.type(f), R.updateContinueStatement(f, J(f.label, T, e.isIdentifier)); + case 246: + return e.Debug.type(f), R.updateBreakStatement(f, J(f.label, T, e.isIdentifier)); + case 247: + return e.Debug.type(f), R.updateReturnStatement(f, J(f.expression, T, e.isExpression)); + case 248: + return e.Debug.type(f), R.updateWithStatement(f, J(f.expression, T, e.isExpression), J(f.statement, T, e.isStatement, R.liftToBlock)); + case 249: + return e.Debug.type(f), R.updateSwitchStatement(f, J(f.expression, T, e.isExpression), J(f.caseBlock, T, e.isCaseBlock)); + case 250: + return e.Debug.type(f), R.updateLabeledStatement(f, J(f.label, T, e.isIdentifier), J(f.statement, T, e.isStatement, R.liftToBlock)); + case 251: + return e.Debug.type(f), R.updateThrowStatement(f, J(f.expression, T, e.isExpression)); + case 252: + return e.Debug.type(f), R.updateTryStatement(f, J(f.tryBlock, T, e.isBlock), J(f.catchClause, T, e.isCatchClause), J(f.finallyBlock, T, e.isBlock)); + case 254: + return e.Debug.type(f), R.updateVariableDeclaration(f, J(f.name, T, e.isBindingName), J(f.exclamationToken, se, e.isExclamationToken), J(f.type, T, e.isTypeNode), J(f.initializer, T, e.isExpression)); + case 255: + return e.Debug.type(f), R.updateVariableDeclarationList(f, b(f.declarations, T, e.isVariableDeclaration)); + case 256: + return e.Debug.type(f), R.updateFunctionDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.asteriskToken, se, e.isAsteriskToken), J(f.name, T, e.isIdentifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), B(f.parameters, T, K, b), J(f.type, T, e.isTypeNode), p(f.body, T, K, J)); + case 257: + return e.Debug.type(f), R.updateClassDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isIdentifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.heritageClauses, T, e.isHeritageClause), b(f.members, T, e.isClassElement)); + case 258: + return e.Debug.type(f), R.updateInterfaceDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isIdentifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), b(f.heritageClauses, T, e.isHeritageClause), b(f.members, T, e.isTypeElement)); + case 259: + return e.Debug.type(f), R.updateTypeAliasDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isIdentifier), b(f.typeParameters, T, e.isTypeParameterDeclaration), J(f.type, T, e.isTypeNode)); + case 260: + return e.Debug.type(f), R.updateEnumDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isIdentifier), b(f.members, T, e.isEnumMember)); + case 261: + return e.Debug.type(f), R.updateModuleDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.name, T, e.isModuleName), J(f.body, T, e.isModuleBody)); + case 262: + return e.Debug.type(f), R.updateModuleBlock(f, b(f.statements, T, e.isStatement)); + case 263: + return e.Debug.type(f), R.updateCaseBlock(f, b(f.clauses, T, e.isCaseOrDefaultClause)); + case 264: + return e.Debug.type(f), R.updateNamespaceExportDeclaration(f, J(f.name, T, e.isIdentifier)); + case 265: + return e.Debug.type(f), R.updateImportEqualsDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), f.isTypeOnly, J(f.name, T, e.isIdentifier), J(f.moduleReference, T, e.isModuleReference)); + case 266: + return e.Debug.type(f), R.updateImportDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.importClause, T, e.isImportClause), J(f.moduleSpecifier, T, e.isExpression), J(f.assertClause, T, e.isAssertClause)); + case 293: + return e.Debug.type(f), R.updateAssertClause(f, b(f.elements, T, e.isAssertEntry), f.multiLine); + case 294: + return e.Debug.type(f), R.updateAssertEntry(f, J(f.name, T, e.isAssertionKey), J(f.value, T, e.isExpressionNode)); + case 267: + return e.Debug.type(f), R.updateImportClause(f, f.isTypeOnly, J(f.name, T, e.isIdentifier), J(f.namedBindings, T, e.isNamedImportBindings)); + case 268: + return e.Debug.type(f), R.updateNamespaceImport(f, J(f.name, T, e.isIdentifier)); + case 274: + return e.Debug.type(f), R.updateNamespaceExport(f, J(f.name, T, e.isIdentifier)); + case 269: + return e.Debug.type(f), R.updateNamedImports(f, b(f.elements, T, e.isImportSpecifier)); + case 270: + return e.Debug.type(f), R.updateImportSpecifier(f, f.isTypeOnly, J(f.propertyName, T, e.isIdentifier), J(f.name, T, e.isIdentifier)); + case 271: + return e.Debug.type(f), R.updateExportAssignment(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), J(f.expression, T, e.isExpression)); + case 272: + return e.Debug.type(f), R.updateExportDeclaration(f, b(f.decorators, T, e.isDecorator), b(f.modifiers, T, e.isModifier), f.isTypeOnly, J(f.exportClause, T, e.isNamedExportBindings), J(f.moduleSpecifier, T, e.isExpression), J(f.assertClause, T, e.isAssertClause)); + case 273: + return e.Debug.type(f), R.updateNamedExports(f, b(f.elements, T, e.isExportSpecifier)); + case 275: + return e.Debug.type(f), R.updateExportSpecifier(f, f.isTypeOnly, J(f.propertyName, T, e.isIdentifier), J(f.name, T, e.isIdentifier)); + case 277: + return e.Debug.type(f), R.updateExternalModuleReference(f, J(f.expression, T, e.isExpression)); + case 278: + return e.Debug.type(f), R.updateJsxElement(f, J(f.openingElement, T, e.isJsxOpeningElement), b(f.children, T, e.isJsxChild), J(f.closingElement, T, e.isJsxClosingElement)); + case 279: + return e.Debug.type(f), R.updateJsxSelfClosingElement(f, J(f.tagName, T, e.isJsxTagNameExpression), b(f.typeArguments, T, e.isTypeNode), J(f.attributes, T, e.isJsxAttributes)); + case 280: + return e.Debug.type(f), R.updateJsxOpeningElement(f, J(f.tagName, T, e.isJsxTagNameExpression), b(f.typeArguments, T, e.isTypeNode), J(f.attributes, T, e.isJsxAttributes)); + case 281: + return e.Debug.type(f), R.updateJsxClosingElement(f, J(f.tagName, T, e.isJsxTagNameExpression)); + case 282: + return e.Debug.type(f), R.updateJsxFragment(f, J(f.openingFragment, T, e.isJsxOpeningFragment), b(f.children, T, e.isJsxChild), J(f.closingFragment, T, e.isJsxClosingFragment)); + case 285: + return e.Debug.type(f), R.updateJsxAttribute(f, J(f.name, T, e.isIdentifier), J(f.initializer, T, e.isStringLiteralOrJsxExpression)); + case 286: + return e.Debug.type(f), R.updateJsxAttributes(f, b(f.properties, T, e.isJsxAttributeLike)); + case 287: + return e.Debug.type(f), R.updateJsxSpreadAttribute(f, J(f.expression, T, e.isExpression)); + case 288: + return e.Debug.type(f), R.updateJsxExpression(f, J(f.expression, T, e.isExpression)); + case 289: + return e.Debug.type(f), R.updateCaseClause(f, J(f.expression, T, e.isExpression), b(f.statements, T, e.isStatement)); + case 290: + return e.Debug.type(f), R.updateDefaultClause(f, b(f.statements, T, e.isStatement)); + case 291: + return e.Debug.type(f), R.updateHeritageClause(f, b(f.types, T, e.isExpressionWithTypeArguments)); + case 292: + return e.Debug.type(f), R.updateCatchClause(f, J(f.variableDeclaration, T, e.isVariableDeclaration), J(f.block, T, e.isBlock)); + case 296: + return e.Debug.type(f), R.updatePropertyAssignment(f, J(f.name, T, e.isPropertyName), J(f.initializer, T, e.isExpression)); + case 297: + return e.Debug.type(f), R.updateShorthandPropertyAssignment(f, J(f.name, T, e.isIdentifier), J(f.objectAssignmentInitializer, T, e.isExpression)); + case 298: + return e.Debug.type(f), R.updateSpreadAssignment(f, J(f.expression, T, e.isExpression)); + case 299: + return e.Debug.type(f), R.updateEnumMember(f, J(f.name, T, e.isPropertyName), J(f.initializer, T, e.isExpression)); + case 305: + return e.Debug.type(f), R.updateSourceFile(f, w(f.statements, T, K)); + case 350: + return e.Debug.type(f), R.updatePartiallyEmittedExpression(f, J(f.expression, T, e.isExpression)); + case 351: + return e.Debug.type(f), R.updateCommaListExpression(f, b(f.elements, T, e.isExpression)); + default: + return f; + } + } + } + e.visitEachChild = G; + function oe(f) { + return e.Debug.assert(f.length <= 1, "Too many nodes written to output."), e.singleOrUndefined(f); + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(q, O, ve, ee, he) { + var F = he.extendedDiagnostics ? e.performance.createTimer("Source Map", "beforeSourcemap", "afterSourcemap") : e.performance.nullTimer, x = F.enter, X = F.exit, $ = [], A = [], y = new e.Map(), V, L = [], P, k = [], Y = "", U = 0, j = 0, H = 0, I = 0, l = 0, d = 0, D = false, fe = 0, g = 0, ne = 0, ue = 0, We = 0, Fe = 0, Z = false, Be = false, ge = false; + return { getSources: function() { + return $; + }, addSource: Re, setSourceContent: ze, addName: Ee, addMapping: Ie, appendSourceMap: _e, toJSON: er, toString: function() { + return JSON.stringify(er()); + } }; + function Re(Cr) { + x(); + var Ye = e.getRelativePathToDirectoryOrUrl(ee, Cr, q.getCurrentDirectory(), q.getCanonicalFileName, true), Br = y.get(Ye); + return Br === void 0 && (Br = A.length, A.push(Ye), $.push(Cr), y.set(Ye, Br)), X(), Br; + } + function ze(Cr, Ye) { + if (x(), Ye !== null) { + for (V || (V = []); V.length < Cr; ) + V.push(null); + V[Cr] = Ye; + } + X(); + } + function Ee(Cr) { + x(), P || (P = new e.Map()); + var Ye = P.get(Cr); + return Ye === void 0 && (Ye = L.length, L.push(Cr), P.set(Cr, Ye)), X(), Ye; + } + function He(Cr, Ye) { + return !Z || fe !== Cr || g !== Ye; + } + function rr(Cr, Ye, Br) { + return Cr !== void 0 && Ye !== void 0 && Br !== void 0 && ne === Cr && (ue > Ye || ue === Ye && We > Br); + } + function Ie(Cr, Ye, Br, Er, Ne, n) { + e.Debug.assert(Cr >= fe, "generatedLine cannot backtrack"), e.Debug.assert(Ye >= 0, "generatedCharacter cannot be negative"), e.Debug.assert(Br === void 0 || Br >= 0, "sourceIndex cannot be negative"), e.Debug.assert(Er === void 0 || Er >= 0, "sourceLine cannot be negative"), e.Debug.assert(Ne === void 0 || Ne >= 0, "sourceCharacter cannot be negative"), x(), (He(Cr, Ye) || rr(Br, Er, Ne)) && (ye(), fe = Cr, g = Ye, Be = false, ge = false, Z = true), Br !== void 0 && Er !== void 0 && Ne !== void 0 && (ne = Br, ue = Er, We = Ne, Be = true, n !== void 0 && (Fe = n, ge = true)), X(); + } + function _e(Cr, Ye, Br, Er, Ne, n) { + e.Debug.assert(Cr >= fe, "generatedLine cannot backtrack"), e.Debug.assert(Ye >= 0, "generatedCharacter cannot be negative"), x(); + for (var lr = [], be, Ge = p(Br.mappings), ur = Ge.next(); !ur.done; ur = Ge.next()) { + var yr = ur.value; + if (n && (yr.generatedLine > n.line || yr.generatedLine === n.line && yr.generatedCharacter > n.character)) + break; + if (!(Ne && (yr.generatedLine < Ne.line || Ne.line === yr.generatedLine && yr.generatedCharacter < Ne.character))) { + var Ir = void 0, wr = void 0, Ur = void 0, ii = void 0; + if (yr.sourceIndex !== void 0) { + if (Ir = lr[yr.sourceIndex], Ir === void 0) { + var mi = Br.sources[yr.sourceIndex], pe = Br.sourceRoot ? e.combinePaths(Br.sourceRoot, mi) : mi, or = e.combinePaths(e.getDirectoryPath(Er), pe); + lr[yr.sourceIndex] = Ir = Re(or), Br.sourcesContent && typeof Br.sourcesContent[yr.sourceIndex] == "string" && ze(Ir, Br.sourcesContent[yr.sourceIndex]); + } + wr = yr.sourceLine, Ur = yr.sourceCharacter, Br.names && yr.nameIndex !== void 0 && (be || (be = []), ii = be[yr.nameIndex], ii === void 0 && (be[yr.nameIndex] = ii = Ee(Br.names[yr.nameIndex]))); + } + var qr = yr.generatedLine - (Ne ? Ne.line : 0), si = qr + Cr, Di = Ne && Ne.line === yr.generatedLine ? yr.generatedCharacter - Ne.character : yr.generatedCharacter, wi = qr === 0 ? Di + Ye : Di; + Ie(si, wi, Ir, wr, Ur, ii); + } + } + X(); + } + function we() { + return !D || U !== fe || j !== g || H !== ne || I !== ue || l !== We || d !== Fe; + } + function de(Cr) { + k.push(Cr), k.length >= 1024 && Ae(); + } + function ye() { + if (!(!Z || !we())) { + if (x(), U < fe) { + do + de(59), U++; + while (U < fe); + j = 0; + } else + e.Debug.assertEqual(U, fe, "generatedLine cannot backtrack"), D && de(44); + ir(g - j), j = g, Be && (ir(ne - H), H = ne, ir(ue - I), I = ue, ir(We - l), l = We, ge && (ir(Fe - d), d = Fe)), D = true, X(); + } + } + function Ae() { + k.length > 0 && (Y += String.fromCharCode.apply(void 0, k), k.length = 0); + } + function er() { + return ye(), Ae(), { version: 3, file: O, sourceRoot: ve, sources: A, names: L, mappings: Y, sourcesContent: V }; + } + function ir(Cr) { + Cr < 0 ? Cr = (-Cr << 1) + 1 : Cr = Cr << 1; + do { + var Ye = Cr & 31; + Cr = Cr >> 5, Cr > 0 && (Ye = Ye | 32), de(oe(Ye)); + } while (Cr > 0); + } + } + e.createSourceMapGenerator = a; + var C = /^\/\/[@#] source[M]appingURL=(.+)\r?\n?$/, w = /^\s*(\/\/[@#] .*)?$/; + function B(q, O) { + return { getLineCount: function() { + return O.length; + }, getLineText: function(ve) { + return q.substring(O[ve], O[ve + 1]); + } }; + } + e.getLineInfo = B; + function E(q) { + for (var O = q.getLineCount() - 1; O >= 0; O--) { + var ve = q.getLineText(O), ee = C.exec(ve); + if (ee) + return e.trimStringEnd(ee[1]); + if (!ve.match(w)) + break; + } + } + e.tryGetSourceMappingURL = E; + function Q(q) { + return typeof q == "string" || q === null; + } + function le(q) { + return q !== null && typeof q == "object" && q.version === 3 && typeof q.file == "string" && typeof q.mappings == "string" && e.isArray(q.sources) && e.every(q.sources, e.isString) && (q.sourceRoot === void 0 || q.sourceRoot === null || typeof q.sourceRoot == "string") && (q.sourcesContent === void 0 || q.sourcesContent === null || e.isArray(q.sourcesContent) && e.every(q.sourcesContent, Q)) && (q.names === void 0 || q.names === null || e.isArray(q.names) && e.every(q.names, e.isString)); + } + e.isRawSourceMap = le; + function N(q) { + try { + var O = JSON.parse(q); + if (le(O)) + return O; + } catch { + } + } + e.tryParseRawSourceMap = N; + function p(q) { + var O = false, ve = 0, ee = 0, he = 0, F = 0, x = 0, X = 0, $ = 0, A; + return { get pos() { + return ve; + }, get error() { + return A; + }, get state() { + return y(true, true); + }, next: function() { + for (; !O && ve < q.length; ) { + var j = q.charCodeAt(ve); + if (j === 59) { + ee++, he = 0, ve++; + continue; + } + if (j === 44) { + ve++; + continue; + } + var H = false, I = false; + if (he += U(), k()) + return V(); + if (he < 0) + return P("Invalid generatedCharacter found"); + if (!Y()) { + if (H = true, F += U(), k()) + return V(); + if (F < 0) + return P("Invalid sourceIndex found"); + if (Y()) + return P("Unsupported Format: No entries after sourceIndex"); + if (x += U(), k()) + return V(); + if (x < 0) + return P("Invalid sourceLine found"); + if (Y()) + return P("Unsupported Format: No entries after sourceLine"); + if (X += U(), k()) + return V(); + if (X < 0) + return P("Invalid sourceCharacter found"); + if (!Y()) { + if (I = true, $ += U(), k()) + return V(); + if ($ < 0) + return P("Invalid nameIndex found"); + if (!Y()) + return P("Unsupported Error Format: Entries after nameIndex"); + } + } + return { value: y(H, I), done: O }; + } + return V(); + } }; + function y(j, H) { + return { generatedLine: ee, generatedCharacter: he, sourceIndex: j ? F : void 0, sourceLine: j ? x : void 0, sourceCharacter: j ? X : void 0, nameIndex: H ? $ : void 0 }; + } + function V() { + return O = true, { value: void 0, done: true }; + } + function L(j) { + A === void 0 && (A = j); + } + function P(j) { + return L(j), V(); + } + function k() { + return A !== void 0; + } + function Y() { + return ve === q.length || q.charCodeAt(ve) === 44 || q.charCodeAt(ve) === 59; + } + function U() { + for (var j = true, H = 0, I = 0; j; ve++) { + if (ve >= q.length) + return L("Error in decoding base64VLQFormatDecode, past the mapping string"), -1; + var l = f(q.charCodeAt(ve)); + if (l === -1) + return L("Invalid character in VLQ"), -1; + j = (l & 32) !== 0, I = I | (l & 31) << H, H += 5; + } + return (I & 1) === 0 ? I = I >> 1 : (I = I >> 1, I = -I), I; + } + } + e.decodeMappings = p; + function m(q, O) { + return q === O || q.generatedLine === O.generatedLine && q.generatedCharacter === O.generatedCharacter && q.sourceIndex === O.sourceIndex && q.sourceLine === O.sourceLine && q.sourceCharacter === O.sourceCharacter && q.nameIndex === O.nameIndex; + } + e.sameMapping = m; + function G(q) { + return q.sourceIndex !== void 0 && q.sourceLine !== void 0 && q.sourceCharacter !== void 0; + } + e.isSourceMapping = G; + function oe(q) { + return q >= 0 && q < 26 ? 65 + q : q >= 26 && q < 52 ? 97 + q - 26 : q >= 52 && q < 62 ? 48 + q - 52 : q === 62 ? 43 : q === 63 ? 47 : e.Debug.fail("".concat(q, ": not a base64 value")); + } + function f(q) { + return q >= 65 && q <= 90 ? q - 65 : q >= 97 && q <= 122 ? q - 97 + 26 : q >= 48 && q <= 57 ? q - 48 + 52 : q === 43 ? 62 : q === 47 ? 63 : -1; + } + function T(q) { + return q.sourceIndex !== void 0 && q.sourcePosition !== void 0; + } + function K(q, O) { + return q.generatedPosition === O.generatedPosition && q.sourceIndex === O.sourceIndex && q.sourcePosition === O.sourcePosition; + } + function b(q, O) { + return e.Debug.assert(q.sourceIndex === O.sourceIndex), e.compareValues(q.sourcePosition, O.sourcePosition); + } + function se(q, O) { + return e.compareValues(q.generatedPosition, O.generatedPosition); + } + function J(q) { + return q.sourcePosition; + } + function ie(q) { + return q.generatedPosition; + } + function R(q, O, ve) { + var ee = e.getDirectoryPath(ve), he = O.sourceRoot ? e.getNormalizedAbsolutePath(O.sourceRoot, ee) : ee, F = e.getNormalizedAbsolutePath(O.file, ee), x = q.getSourceFileLike(F), X = O.sources.map(function(H) { + return e.getNormalizedAbsolutePath(H, he); + }), $ = new e.Map(X.map(function(H, I) { + return [q.getCanonicalFileName(H), I]; + })), A, y, V; + return { getSourcePosition: j, getGeneratedPosition: U }; + function L(H) { + var I = x !== void 0 ? e.getPositionOfLineAndCharacter(x, H.generatedLine, H.generatedCharacter, true) : -1, l, d; + if (G(H)) { + var D = q.getSourceFileLike(X[H.sourceIndex]); + l = O.sources[H.sourceIndex], d = D !== void 0 ? e.getPositionOfLineAndCharacter(D, H.sourceLine, H.sourceCharacter, true) : -1; + } + return { generatedPosition: I, source: l, sourceIndex: H.sourceIndex, sourcePosition: d, nameIndex: H.nameIndex }; + } + function P() { + if (A === void 0) { + var H = p(O.mappings), I = e.arrayFrom(H, L); + H.error !== void 0 ? (q.log && q.log("Encountered error while decoding sourcemap: ".concat(H.error)), A = e.emptyArray) : A = I; + } + return A; + } + function k(H) { + if (V === void 0) { + for (var I = [], l = 0, d = P(); l < d.length; l++) { + var D = d[l]; + if (!!T(D)) { + var fe = I[D.sourceIndex]; + fe || (I[D.sourceIndex] = fe = []), fe.push(D); + } + } + V = I.map(function(g) { + return e.sortAndDeduplicate(g, b, K); + }); + } + return V[H]; + } + function Y() { + if (y === void 0) { + for (var H = [], I = 0, l = P(); I < l.length; I++) { + var d = l[I]; + H.push(d); + } + y = e.sortAndDeduplicate(H, se, K); + } + return y; + } + function U(H) { + var I = $.get(q.getCanonicalFileName(H.fileName)); + if (I === void 0) + return H; + var l = k(I); + if (!e.some(l)) + return H; + var d = e.binarySearchKey(l, H.pos, J, e.compareValues); + d < 0 && (d = ~d); + var D = l[d]; + return D === void 0 || D.sourceIndex !== I ? H : { fileName: F, pos: D.generatedPosition }; + } + function j(H) { + var I = Y(); + if (!e.some(I)) + return H; + var l = e.binarySearchKey(I, H.pos, ie, e.compareValues); + l < 0 && (l = ~l); + var d = I[l]; + return d === void 0 || !T(d) ? H : { fileName: X[d.sourceIndex], pos: d.sourcePosition }; + } + } + e.createDocumentPositionMapper = R, e.identitySourceMapConsumer = { getSourcePosition: e.identity, getGeneratedPosition: e.identity }; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(ee) { + return ee = e.getOriginalNode(ee), ee ? e.getNodeId(ee) : 0; + } + e.getOriginalNodeId = a; + function C(ee) { + return !ee || !e.isNamedImports(ee) ? false : e.some(ee.elements, w); + } + function w(ee) { + return ee.propertyName !== void 0 && ee.propertyName.escapedText === "default"; + } + function B(ee, he) { + return F; + function F(X) { + return X.kind === 305 ? he(X) : x(X); + } + function x(X) { + return ee.factory.createBundle(e.map(X.sourceFiles, he), X.prepends); + } + } + e.chainBundle = B; + function E(ee) { + return !!e.getNamespaceDeclarationNode(ee); + } + e.getExportNeedsImportStarHelper = E; + function Q(ee) { + if (e.getNamespaceDeclarationNode(ee)) + return true; + var he = ee.importClause && ee.importClause.namedBindings; + if (!he || !e.isNamedImports(he)) + return false; + for (var F = 0, x = 0, X = he.elements; x < X.length; x++) { + var $ = X[x]; + w($) && F++; + } + return F > 0 && F !== he.elements.length || !!(he.elements.length - F) && e.isDefaultImport(ee); + } + e.getImportNeedsImportStarHelper = Q; + function le(ee) { + return !Q(ee) && (e.isDefaultImport(ee) || !!ee.importClause && e.isNamedImports(ee.importClause.namedBindings) && C(ee.importClause.namedBindings)); + } + e.getImportNeedsImportDefaultHelper = le; + function N(ee, he, F, x) { + for (var X = [], $ = e.createMultiMap(), A = [], y = new e.Map(), V, L = false, P, k = false, Y = false, U = false, j = 0, H = he.statements; j < H.length; j++) { + var I = H[j]; + switch (I.kind) { + case 266: + X.push(I), !Y && Q(I) && (Y = true), !U && le(I) && (U = true); + break; + case 265: + I.moduleReference.kind === 277 && X.push(I); + break; + case 272: + if (I.moduleSpecifier) + if (!I.exportClause) + X.push(I), k = true; + else if (X.push(I), e.isNamedExports(I.exportClause)) + ne(I); + else { + var l = I.exportClause.name; + y.get(e.idText(l)) || (m(A, a(I), l), y.set(e.idText(l), true), V = e.append(V, l)), Y = true; + } + else + ne(I); + break; + case 271: + I.isExportEquals && !P && (P = I); + break; + case 237: + if (e.hasSyntacticModifier(I, 1)) + for (var d = 0, D = I.declarationList.declarations; d < D.length; d++) { + var fe = D[d]; + V = p(fe, y, V); + } + break; + case 256: + if (e.hasSyntacticModifier(I, 1)) + if (e.hasSyntacticModifier(I, 512)) + L || (m(A, a(I), ee.factory.getDeclarationName(I)), L = true); + else { + var l = I.name; + y.get(e.idText(l)) || (m(A, a(I), l), y.set(e.idText(l), true), V = e.append(V, l)); + } + break; + case 257: + if (e.hasSyntacticModifier(I, 1)) + if (e.hasSyntacticModifier(I, 512)) + L || (m(A, a(I), ee.factory.getDeclarationName(I)), L = true); + else { + var l = I.name; + l && !y.get(e.idText(l)) && (m(A, a(I), l), y.set(e.idText(l), true), V = e.append(V, l)); + } + break; + } + } + var g = e.createExternalHelpersImportDeclarationIfNeeded(ee.factory, ee.getEmitHelperFactory(), he, x, k, Y, U); + return g && X.unshift(g), { externalImports: X, exportSpecifiers: $, exportEquals: P, hasExportStarsToExportValues: k, exportedBindings: A, exportedNames: V, externalHelpersImportDeclaration: g }; + function ne(ue) { + for (var We = 0, Fe = e.cast(ue.exportClause, e.isNamedExports).elements; We < Fe.length; We++) { + var Z = Fe[We]; + if (!y.get(e.idText(Z.name))) { + var Be = Z.propertyName || Z.name; + ue.moduleSpecifier || $.add(e.idText(Be), Z); + var ge = F.getReferencedImportDeclaration(Be) || F.getReferencedValueDeclaration(Be); + ge && m(A, a(ge), Z.name), y.set(e.idText(Z.name), true), V = e.append(V, Z.name); + } + } + } + } + e.collectExternalModuleInfo = N; + function p(ee, he, F) { + if (e.isBindingPattern(ee.name)) + for (var x = 0, X = ee.name.elements; x < X.length; x++) { + var $ = X[x]; + e.isOmittedExpression($) || (F = p($, he, F)); + } + else if (!e.isGeneratedIdentifier(ee.name)) { + var A = e.idText(ee.name); + he.get(A) || (he.set(A, true), F = e.append(F, ee.name)); + } + return F; + } + function m(ee, he, F) { + var x = ee[he]; + return x ? x.push(F) : ee[he] = x = [F], x; + } + function G(ee) { + return e.isStringLiteralLike(ee) || ee.kind === 8 || e.isKeyword(ee.kind) || e.isIdentifier(ee); + } + e.isSimpleCopiableExpression = G; + function oe(ee) { + return !e.isIdentifier(ee) && G(ee); + } + e.isSimpleInlineableExpression = oe; + function f(ee) { + return ee >= 64 && ee <= 78; + } + e.isCompoundAssignment = f; + function T(ee) { + switch (ee) { + case 64: + return 39; + case 65: + return 40; + case 66: + return 41; + case 67: + return 42; + case 68: + return 43; + case 69: + return 44; + case 70: + return 47; + case 71: + return 48; + case 72: + return 49; + case 73: + return 50; + case 74: + return 51; + case 78: + return 52; + case 75: + return 56; + case 76: + return 55; + case 77: + return 60; + } + } + e.getNonAssignmentOperatorForCompoundAssignment = T; + function K(ee) { + if (!!e.isExpressionStatement(ee)) { + var he = e.skipParentheses(ee.expression); + return e.isSuperCall(he) ? he : void 0; + } + } + e.getSuperCallFromStatement = K; + function b(ee, he) { + for (var F = he; F < ee.length; F += 1) { + var x = ee[F]; + if (K(x)) + return F; + } + return -1; + } + e.findSuperStatementIndex = b; + function se(ee, he, F) { + return e.filter(ee.members, function(x) { + return R(x, he, F); + }); + } + e.getProperties = se; + function J(ee) { + return q(ee) || e.isClassStaticBlockDeclaration(ee); + } + function ie(ee) { + return e.filter(ee.members, J); + } + e.getStaticPropertiesAndClassStaticBlock = ie; + function R(ee, he, F) { + return e.isPropertyDeclaration(ee) && (!!ee.initializer || !he) && e.hasStaticModifier(ee) === F; + } + function q(ee) { + return e.isPropertyDeclaration(ee) && e.hasStaticModifier(ee); + } + function O(ee) { + return ee.kind === 167 && ee.initializer !== void 0; + } + e.isInitializedProperty = O; + function ve(ee) { + return !e.isStatic(ee) && e.isMethodOrAccessor(ee) && e.isPrivateIdentifier(ee.name); + } + e.isNonStaticMethodOrAccessorWithPrivateName = ve; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(q) { + q[q.All = 0] = "All", q[q.ObjectRest = 1] = "ObjectRest"; + })(a = e.FlattenLevel || (e.FlattenLevel = {})); + function C(q, O, ve, ee, he, F) { + var x = q, X; + if (e.isDestructuringAssignment(q)) + for (X = q.right; e.isEmptyArrayLiteral(q.left) || e.isEmptyObjectLiteral(q.left); ) + if (e.isDestructuringAssignment(X)) + x = q = X, X = q.right; + else + return e.visitNode(X, O, e.isExpression); + var $, A = { context: ve, level: ee, downlevelIteration: !!ve.getCompilerOptions().downlevelIteration, hoistTempVariables: true, emitExpression: y, emitBindingOrAssignment: V, createArrayBindingOrAssignmentPattern: function(L) { + return b(ve.factory, L); + }, createObjectBindingOrAssignmentPattern: function(L) { + return J(ve.factory, L); + }, createArrayBindingOrAssignmentElement: R, visitor: O }; + if (X && (X = e.visitNode(X, O, e.isExpression), e.isIdentifier(X) && w(q, X.escapedText) || E(q) ? X = T(A, X, false, x) : he ? X = T(A, X, true, x) : e.nodeIsSynthesized(q) && (x = X)), N(A, q, X, x, e.isDestructuringAssignment(q)), X && he) { + if (!e.some($)) + return X; + $.push(X); + } + return ve.factory.inlineExpressions($) || ve.factory.createOmittedExpression(); + function y(L) { + $ = e.append($, L); + } + function V(L, P, k, Y) { + e.Debug.assertNode(L, F ? e.isIdentifier : e.isExpression); + var U = F ? F(L, P, k) : e.setTextRange(ve.factory.createAssignment(e.visitNode(L, O, e.isExpression), P), k); + U.original = Y, y(U); + } + } + e.flattenDestructuringAssignment = C; + function w(q, O) { + var ve = e.getTargetOfBindingOrAssignmentElement(q); + return e.isBindingOrAssignmentPattern(ve) ? B(ve, O) : e.isIdentifier(ve) ? ve.escapedText === O : false; + } + function B(q, O) { + for (var ve = e.getElementsOfBindingOrAssignmentPattern(q), ee = 0, he = ve; ee < he.length; ee++) { + var F = he[ee]; + if (w(F, O)) + return true; + } + return false; + } + function E(q) { + var O = e.tryGetPropertyNameOfBindingOrAssignmentElement(q); + if (O && e.isComputedPropertyName(O) && !e.isLiteralExpression(O.expression)) + return true; + var ve = e.getTargetOfBindingOrAssignmentElement(q); + return !!ve && e.isBindingOrAssignmentPattern(ve) && Q(ve); + } + function Q(q) { + return !!e.forEach(e.getElementsOfBindingOrAssignmentPattern(q), E); + } + function le(q, O, ve, ee, he, F, x) { + F === void 0 && (F = false); + var X, $ = [], A = [], y = { context: ve, level: ee, downlevelIteration: !!ve.getCompilerOptions().downlevelIteration, hoistTempVariables: F, emitExpression: fe, emitBindingOrAssignment: g, createArrayBindingOrAssignmentPattern: function(ne) { + return K(ve.factory, ne); + }, createObjectBindingOrAssignmentPattern: function(ne) { + return se(ve.factory, ne); + }, createArrayBindingOrAssignmentElement: function(ne) { + return ie(ve.factory, ne); + }, visitor: O }; + if (e.isVariableDeclaration(q)) { + var V = e.getInitializerOfBindingOrAssignmentElement(q); + V && (e.isIdentifier(V) && w(q, V.escapedText) || E(q)) && (V = T(y, e.visitNode(V, y.visitor), false, V), q = ve.factory.updateVariableDeclaration(q, q.name, void 0, void 0, V)); + } + if (N(y, q, he, q, x), X) { + var L = ve.factory.createTempVariable(void 0); + if (F) { + var P = ve.factory.inlineExpressions(X); + X = void 0, g(L, P, void 0, void 0); + } else { + ve.hoistVariableDeclaration(L); + var k = e.last($); + k.pendingExpressions = e.append(k.pendingExpressions, ve.factory.createAssignment(L, k.value)), e.addRange(k.pendingExpressions, X), k.value = L; + } + } + for (var Y = 0, U = $; Y < U.length; Y++) { + var j = U[Y], H = j.pendingExpressions, I = j.name, P = j.value, l = j.location, d = j.original, D = ve.factory.createVariableDeclaration(I, void 0, void 0, H ? ve.factory.inlineExpressions(e.append(H, P)) : P); + D.original = d, e.setTextRange(D, l), A.push(D); + } + return A; + function fe(ne) { + X = e.append(X, ne); + } + function g(ne, ue, We, Fe) { + e.Debug.assertNode(ne, e.isBindingName), X && (ue = ve.factory.inlineExpressions(e.append(X, ue)), X = void 0), $.push({ pendingExpressions: X, name: ne, value: ue, location: We, original: Fe }); + } + } + e.flattenDestructuringBinding = le; + function N(q, O, ve, ee, he) { + var F = e.getTargetOfBindingOrAssignmentElement(O); + if (!he) { + var x = e.visitNode(e.getInitializerOfBindingOrAssignmentElement(O), q.visitor, e.isExpression); + x ? ve ? (ve = oe(q, ve, x, ee), !e.isSimpleInlineableExpression(x) && e.isBindingOrAssignmentPattern(F) && (ve = T(q, ve, true, ee))) : ve = x : ve || (ve = q.context.factory.createVoidZero()); + } + e.isObjectBindingOrAssignmentPattern(F) ? p(q, O, F, ve, ee) : e.isArrayBindingOrAssignmentPattern(F) ? m(q, O, F, ve, ee) : q.emitBindingOrAssignment(F, ve, ee, O); + } + function p(q, O, ve, ee, he) { + var F = e.getElementsOfBindingOrAssignmentPattern(ve), x = F.length; + if (x !== 1) { + var X = !e.isDeclarationBindingElement(O) || x !== 0; + ee = T(q, ee, X, he); + } + for (var $, A, y = 0; y < x; y++) { + var V = F[y]; + if (e.getRestIndicatorOfBindingOrAssignmentElement(V)) { + if (y === x - 1) { + $ && (q.emitBindingOrAssignment(q.createObjectBindingOrAssignmentPattern($), ee, he, ve), $ = void 0); + var P = q.context.getEmitHelperFactory().createRestHelper(ee, F, A, ve); + N(q, V, P, V); + } + } else { + var L = e.getPropertyNameOfBindingOrAssignmentElement(V); + if (q.level >= 1 && !(V.transformFlags & 49152) && !(e.getTargetOfBindingOrAssignmentElement(V).transformFlags & 49152) && !e.isComputedPropertyName(L)) + $ = e.append($, e.visitNode(V, q.visitor)); + else { + $ && (q.emitBindingOrAssignment(q.createObjectBindingOrAssignmentPattern($), ee, he, ve), $ = void 0); + var P = f(q, ee, L); + e.isComputedPropertyName(L) && (A = e.append(A, P.argumentExpression)), N(q, V, P, V); + } + } + } + $ && q.emitBindingOrAssignment(q.createObjectBindingOrAssignmentPattern($), ee, he, ve); + } + function m(q, O, ve, ee, he) { + var F = e.getElementsOfBindingOrAssignmentPattern(ve), x = F.length; + if (q.level < 1 && q.downlevelIteration) + ee = T(q, e.setTextRange(q.context.getEmitHelperFactory().createReadHelper(ee, x > 0 && e.getRestIndicatorOfBindingOrAssignmentElement(F[x - 1]) ? void 0 : x), he), false, he); + else if (x !== 1 && (q.level < 1 || x === 0) || e.every(F, e.isOmittedExpression)) { + var X = !e.isDeclarationBindingElement(O) || x !== 0; + ee = T(q, ee, X, he); + } + for (var $, A, y = 0; y < x; y++) { + var V = F[y]; + if (q.level >= 1) + if (V.transformFlags & 32768 || q.hasTransformedPriorElement && !G(V)) { + q.hasTransformedPriorElement = true; + var L = q.context.factory.createTempVariable(void 0); + q.hoistTempVariables && q.context.hoistVariableDeclaration(L), A = e.append(A, [L, V]), $ = e.append($, q.createArrayBindingOrAssignmentElement(L)); + } else + $ = e.append($, V); + else { + if (e.isOmittedExpression(V)) + continue; + if (e.getRestIndicatorOfBindingOrAssignmentElement(V)) { + if (y === x - 1) { + var P = q.context.factory.createArraySliceCall(ee, y); + N(q, V, P, V); + } + } else { + var P = q.context.factory.createElementAccessExpression(ee, y); + N(q, V, P, V); + } + } + } + if ($ && q.emitBindingOrAssignment(q.createArrayBindingOrAssignmentPattern($), ee, he, ve), A) + for (var k = 0, Y = A; k < Y.length; k++) { + var U = Y[k], j = U[0], V = U[1]; + N(q, V, j, V); + } + } + function G(q) { + var O = e.getTargetOfBindingOrAssignmentElement(q); + if (!O || e.isOmittedExpression(O)) + return true; + var ve = e.tryGetPropertyNameOfBindingOrAssignmentElement(q); + if (ve && !e.isPropertyNameLiteral(ve)) + return false; + var ee = e.getInitializerOfBindingOrAssignmentElement(q); + return ee && !e.isSimpleInlineableExpression(ee) ? false : e.isBindingOrAssignmentPattern(O) ? e.every(e.getElementsOfBindingOrAssignmentPattern(O), G) : e.isIdentifier(O); + } + function oe(q, O, ve, ee) { + return O = T(q, O, true, ee), q.context.factory.createConditionalExpression(q.context.factory.createTypeCheck(O, "undefined"), void 0, ve, void 0, O); + } + function f(q, O, ve) { + if (e.isComputedPropertyName(ve)) { + var ee = T(q, e.visitNode(ve.expression, q.visitor), false, ve); + return q.context.factory.createElementAccessExpression(O, ee); + } else if (e.isStringOrNumericLiteralLike(ve)) { + var ee = e.factory.cloneNode(ve); + return q.context.factory.createElementAccessExpression(O, ee); + } else { + var he = q.context.factory.createIdentifier(e.idText(ve)); + return q.context.factory.createPropertyAccessExpression(O, he); + } + } + function T(q, O, ve, ee) { + if (e.isIdentifier(O) && ve) + return O; + var he = q.context.factory.createTempVariable(void 0); + return q.hoistTempVariables ? (q.context.hoistVariableDeclaration(he), q.emitExpression(e.setTextRange(q.context.factory.createAssignment(he, O), ee))) : q.emitBindingOrAssignment(he, O, ee, void 0), he; + } + function K(q, O) { + return e.Debug.assertEachNode(O, e.isArrayBindingElement), q.createArrayBindingPattern(O); + } + function b(q, O) { + return q.createArrayLiteralExpression(e.map(O, q.converters.convertToArrayAssignmentElement)); + } + function se(q, O) { + return e.Debug.assertEachNode(O, e.isBindingElement), q.createObjectBindingPattern(O); + } + function J(q, O) { + return q.createObjectLiteralExpression(e.map(O, q.converters.convertToObjectAssignmentElement)); + } + function ie(q, O) { + return q.createBindingElement(void 0, void 0, O); + } + function R(q) { + return q; + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(E) { + E[E.LiftRestriction = 0] = "LiftRestriction", E[E.All = 1] = "All"; + })(a = e.ProcessLevel || (e.ProcessLevel = {})); + function C(E, Q, le, N, p, m) { + var G = e.visitNode(Q.tag, le, e.isExpression), oe = [void 0], f = [], T = [], K = Q.template; + if (m === a.LiftRestriction && !e.hasInvalidEscape(K)) + return e.visitEachChild(Q, le, E); + if (e.isNoSubstitutionTemplateLiteral(K)) + f.push(w(K)), T.push(B(K, N)); + else { + f.push(w(K.head)), T.push(B(K.head, N)); + for (var b = 0, se = K.templateSpans; b < se.length; b++) { + var J = se[b]; + f.push(w(J.literal)), T.push(B(J.literal, N)), oe.push(e.visitNode(J.expression, le, e.isExpression)); + } + } + var ie = E.getEmitHelperFactory().createTemplateObjectHelper(e.factory.createArrayLiteralExpression(f), e.factory.createArrayLiteralExpression(T)); + if (e.isExternalModule(N)) { + var R = e.factory.createUniqueName("templateObject"); + p(R), oe[0] = e.factory.createLogicalOr(R, e.factory.createAssignment(R, ie)); + } else + oe[0] = ie; + return e.factory.createCallExpression(G, void 0, oe); + } + e.processTaggedTemplateExpression = C; + function w(E) { + return E.templateFlags ? e.factory.createVoidZero() : e.factory.createStringLiteral(E.text); + } + function B(E, Q) { + var le = E.rawText; + if (le === void 0) { + e.Debug.assertIsDefined(Q, "Template literal node is missing 'rawText' and does not have a source file. Possibly bad transform."), le = e.getSourceTextOfNodeFromSourceFile(Q, E); + var N = E.kind === 14 || E.kind === 17; + le = le.substring(1, le.length - (N ? 1 : 2)); + } + return le = le.replace(/\r\n?/g, ` +`), e.setTextRange(e.factory.createStringLiteral(le), E); + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a = false, C; + (function(E) { + E[E.ClassAliases = 1] = "ClassAliases", E[E.NamespaceExports = 2] = "NamespaceExports", E[E.NonQualifiedEnumMembers = 8] = "NonQualifiedEnumMembers"; + })(C || (C = {})); + var w; + (function(E) { + E[E.None = 0] = "None", E[E.HasStaticInitializedProperties = 1] = "HasStaticInitializedProperties", E[E.HasConstructorDecorators = 2] = "HasConstructorDecorators", E[E.HasMemberDecorators = 4] = "HasMemberDecorators", E[E.IsExportOfNamespace = 8] = "IsExportOfNamespace", E[E.IsNamedExternalExport = 16] = "IsNamedExternalExport", E[E.IsDefaultExternalExport = 32] = "IsDefaultExternalExport", E[E.IsDerivedClass = 64] = "IsDerivedClass", E[E.UseImmediatelyInvokedFunctionExpression = 128] = "UseImmediatelyInvokedFunctionExpression", E[E.HasAnyDecorators = 6] = "HasAnyDecorators", E[E.NeedsName = 5] = "NeedsName", E[E.MayNeedImmediatelyInvokedFunctionExpression = 7] = "MayNeedImmediatelyInvokedFunctionExpression", E[E.IsExported = 56] = "IsExported"; + })(w || (w = {})); + function B(E) { + var Q = E.factory, le = E.getEmitHelperFactory, N = E.startLexicalEnvironment, p = E.resumeLexicalEnvironment, m = E.endLexicalEnvironment, G = E.hoistVariableDeclaration, oe = E.getEmitResolver(), f = E.getCompilerOptions(), T = e.getStrictOptionValue(f, "strictNullChecks"), K = e.getEmitScriptTarget(f), b = e.getEmitModuleKind(f), se = E.onEmitNode, J = E.onSubstituteNode; + E.onEmitNode = Co, E.onSubstituteNode = Ko, E.enableSubstitution(206), E.enableSubstitution(207); + var ie, R, q, O, ve, ee, he, F, x, X; + return $; + function $(S) { + return S.kind === 306 ? A(S) : y(S); + } + function A(S) { + return Q.createBundle(S.sourceFiles.map(y), e.mapDefined(S.prepends, function(Ce) { + return Ce.kind === 308 ? e.createUnparsedSourceFile(Ce, "js") : Ce; + })); + } + function y(S) { + if (S.isDeclarationFile) + return S; + ie = S; + var Ce = V(S, g); + return e.addEmitHelpers(Ce, E.readEmitHelpers()), ie = void 0, Ce; + } + function V(S, Ce) { + var qe = O, br = ve, Zr = ee, Si = he; + L(S); + var Pi = Ce(S); + return O !== qe && (ee = Zr), O = qe, ve = br, he = Si, Pi; + } + function L(S) { + switch (S.kind) { + case 305: + case 263: + case 262: + case 235: + O = S, ve = void 0, ee = void 0; + break; + case 257: + case 256: + if (e.hasSyntacticModifier(S, 2)) + break; + S.name ? ut(S) : e.Debug.assert(S.kind === 257 || e.hasSyntacticModifier(S, 512)), e.isClassDeclaration(S) && (ve = S); + break; + } + } + function P(S) { + return V(S, k); + } + function k(S) { + return S.transformFlags & 1 ? fe(S) : S; + } + function Y(S) { + return V(S, U); + } + function U(S) { + switch (S.kind) { + case 266: + case 265: + case 271: + case 272: + return j(S); + default: + return k(S); + } + } + function j(S) { + var Ce = e.getParseTreeNode(S); + if (Ce !== S) + return S.transformFlags & 1 ? e.visitEachChild(S, P, E) : S; + switch (S.kind) { + case 266: + return Bt(S); + case 265: + return Qa(S); + case 271: + return Oi(S); + case 272: + return ji(S); + default: + e.Debug.fail("Unhandled ellided statement"); + } + } + function H(S) { + return V(S, I); + } + function I(S) { + if (!(S.kind === 272 || S.kind === 266 || S.kind === 267 || S.kind === 265 && S.moduleReference.kind === 277)) + return S.transformFlags & 1 || e.hasSyntacticModifier(S, 1) ? fe(S) : S; + } + function l(S) { + return V(S, d); + } + function d(S) { + switch (S.kind) { + case 171: + return ti(S); + case 167: + return Jr(S); + case 176: + case 172: + case 173: + case 169: + case 170: + return k(S); + case 234: + return S; + default: + return e.Debug.failBadSyntaxKind(S); + } + } + function D(S) { + if (!(e.modifierToFlag(S.kind) & 116958) && !(R && S.kind === 93)) + return S; + } + function fe(S) { + if (e.isStatement(S) && e.hasSyntacticModifier(S, 2)) + return Q.createNotEmittedStatement(S); + switch (S.kind) { + case 93: + case 88: + return R ? void 0 : S; + case 123: + case 121: + case 122: + case 126: + case 159: + case 85: + case 135: + case 145: + case 101: + case 144: + case 183: + case 184: + case 185: + case 186: + case 182: + case 177: + case 163: + case 130: + case 155: + case 133: + case 150: + case 147: + case 143: + case 114: + case 151: + case 180: + case 179: + case 181: + case 178: + case 187: + case 188: + case 189: + case 191: + case 192: + case 193: + case 194: + case 195: + case 196: + case 176: + case 165: + return; + case 259: + return Q.createNotEmittedStatement(S); + case 167: + return Jr(S); + case 264: + return; + case 171: + return ti(S); + case 258: + return Q.createNotEmittedStatement(S); + case 257: + return Fe(S); + case 226: + return ge(S); + case 291: + return pi(S); + case 228: + return ae(S); + case 169: + return zr(S); + case 172: + return Je(S); + case 173: + return xe(S); + case 256: + return vr(S); + case 213: + return mr(S); + case 214: + return Ar(S); + case 164: + return Oe(S); + case 212: + return Ue(S); + case 211: + case 229: + return fr(S); + case 208: + return gr(S); + case 209: + return Vr(S); + case 210: + return Tr(S); + case 230: + return De(S); + case 260: + return Wi(S); + case 237: + return nr(S); + case 254: + return Pe(S); + case 261: + return Ki(S); + case 265: + return Qa(S); + case 279: + return vi(S); + case 280: + return Ui(S); + default: + return e.visitEachChild(S, P, E); + } + } + function g(S) { + var Ce = e.getStrictOptionValue(f, "alwaysStrict") && !(e.isExternalModule(S) && b >= e.ModuleKind.ES2015) && !e.isJsonSourceFile(S); + return Q.updateSourceFile(S, e.visitLexicalEnvironment(S.statements, Y, E, 0, Ce)); + } + function ne(S, Ce) { + var qe = 0; + e.some(Ce) && (qe |= 1); + var br = e.getEffectiveBaseTypeNode(S); + return br && e.skipOuterExpressions(br.expression).kind !== 104 && (qe |= 64), e.classOrConstructorParameterIsDecorated(S) && (qe |= 2), e.childIsDecorated(S) && (qe |= 4), ai(S) ? qe |= 8 : Ba(S) ? qe |= 32 : ka(S) && (qe |= 16), K <= 1 && qe & 7 && (qe |= 128), qe; + } + function ue(S) { + return !!(S.transformFlags & 4096); + } + function We(S) { + return e.some(S.decorators) || e.some(S.typeParameters) || e.some(S.heritageClauses, ue) || e.some(S.members, ue); + } + function Fe(S) { + if (!We(S) && !(R && e.hasSyntacticModifier(S, 1))) + return e.visitEachChild(S, P, E); + var Ce = e.getProperties(S, true, true), qe = ne(S, Ce); + qe & 128 && E.startLexicalEnvironment(); + var br = S.name || (qe & 5 ? Q.getGeneratedNameForNode(S) : void 0), Zr = qe & 2 ? Be(S, br) : Z(S, br, qe), Si = [Zr]; + if (ir(Si, S, false), ir(Si, S, true), Br(Si, S), qe & 128) { + var Pi = e.createTokenRange(e.skipTrivia(ie.text, S.members.end), 19), Qi = Q.getInternalName(S), Ct = Q.createPartiallyEmittedExpression(Qi); + e.setTextRangeEnd(Ct, Pi.end), e.setEmitFlags(Ct, 1536); + var sa = Q.createReturnStatement(Ct); + e.setTextRangePos(sa, Pi.pos), e.setEmitFlags(sa, 1920), Si.push(sa), e.insertStatementsAfterStandardPrologue(Si, E.endLexicalEnvironment()); + var en = Q.createImmediatelyInvokedArrowFunction(Si); + e.setEmitFlags(en, 33554432); + var Wa = Q.createVariableStatement(void 0, Q.createVariableDeclarationList([Q.createVariableDeclaration(Q.getLocalName(S, false, false), void 0, void 0, en)])); + e.setOriginalNode(Wa, S), e.setCommentRange(Wa, S), e.setSourceMapRange(Wa, e.moveRangePastDecorators(S)), e.startOnNewLine(Wa), Si = [Wa]; + } + return qe & 8 ? Cn(Si, S) : (qe & 128 || qe & 2) && (qe & 32 ? Si.push(Q.createExportDefault(Q.getLocalName(S, false, true))) : qe & 16 && Si.push(Q.createExternalModuleExport(Q.getLocalName(S, false, true)))), Si.length > 1 && (Si.push(Q.createEndOfDeclarationMarker(S)), e.setEmitFlags(Zr, e.getEmitFlags(Zr) | 4194304)), e.singleOrMany(Si); + } + function Z(S, Ce, qe) { + var br = qe & 128 ? void 0 : e.visitNodes(S.modifiers, D, e.isModifier), Zr = Q.createClassDeclaration(void 0, br, Ce, void 0, e.visitNodes(S.heritageClauses, P, e.isHeritageClause), Re(S)), Si = e.getEmitFlags(S); + return qe & 1 && (Si |= 32), e.setTextRange(Zr, S), e.setOriginalNode(Zr, S), e.setEmitFlags(Zr, Si), Zr; + } + function Be(S, Ce) { + var qe = e.moveRangePastDecorators(S), br = eo(S), Zr = K <= 2 ? Q.getInternalName(S, false, true) : Q.getLocalName(S, false, true), Si = e.visitNodes(S.heritageClauses, P, e.isHeritageClause), Pi = Re(S), Qi = Q.createClassExpression(void 0, void 0, Ce, void 0, Si, Pi); + e.setOriginalNode(Qi, S), e.setTextRange(Qi, qe); + var Ct = Q.createVariableStatement(void 0, Q.createVariableDeclarationList([Q.createVariableDeclaration(Zr, void 0, void 0, br ? Q.createAssignment(br, Qi) : Qi)], 1)); + return e.setOriginalNode(Ct, S), e.setTextRange(Ct, qe), e.setCommentRange(Ct, S), Ct; + } + function ge(S) { + if (!We(S)) + return e.visitEachChild(S, P, E); + var Ce = Q.createClassExpression(void 0, void 0, S.name, void 0, e.visitNodes(S.heritageClauses, P, e.isHeritageClause), Re(S)); + return e.setOriginalNode(Ce, S), e.setTextRange(Ce, S), Ce; + } + function Re(S) { + var Ce = [], qe = e.getFirstConstructorWithBody(S), br = qe && e.filter(qe.parameters, function(Qi) { + return e.isParameterPropertyDeclaration(Qi, qe); + }); + if (br) + for (var Zr = 0, Si = br; Zr < Si.length; Zr++) { + var Pi = Si[Zr]; + e.isIdentifier(Pi.name) && Ce.push(e.setOriginalNode(Q.createPropertyDeclaration(void 0, void 0, Pi.name, void 0, void 0, void 0), Pi)); + } + return e.addRange(Ce, e.visitNodes(S.members, l, e.isClassElement)), e.setTextRange(Q.createNodeArray(Ce), S.members); + } + function ze(S, Ce) { + return e.filter(S.members, Ce ? function(qe) { + return Ee(qe, S); + } : function(qe) { + return He(qe, S); + }); + } + function Ee(S, Ce) { + return rr(S, true, Ce); + } + function He(S, Ce) { + return rr(S, false, Ce); + } + function rr(S, Ce, qe) { + return e.nodeOrChildIsDecorated(S, qe) && Ce === e.isStatic(S); + } + function Ie(S) { + var Ce; + if (S) + for (var qe = S.parameters, br = qe.length > 0 && e.parameterIsThisKeyword(qe[0]), Zr = br ? 1 : 0, Si = br ? qe.length - 1 : qe.length, Pi = 0; Pi < Si; Pi++) { + var Qi = qe[Pi + Zr]; + (Ce || Qi.decorators) && (Ce || (Ce = new Array(Si)), Ce[Pi] = Qi.decorators); + } + return Ce; + } + function _e(S) { + var Ce = S.decorators, qe = Ie(e.getFirstConstructorWithBody(S)); + if (!(!Ce && !qe)) + return { decorators: Ce, parameters: qe }; + } + function we(S, Ce) { + switch (Ce.kind) { + case 172: + case 173: + return de(S, Ce); + case 169: + return ye(Ce); + case 167: + return Ae(Ce); + default: + return; + } + } + function de(S, Ce) { + if (!!Ce.body) { + var qe = e.getAllAccessorDeclarations(S.members, Ce), br = qe.firstAccessor, Zr = qe.secondAccessor, Si = qe.setAccessor, Pi = br.decorators ? br : Zr && Zr.decorators ? Zr : void 0; + if (!(!Pi || Ce !== Pi)) { + var Qi = Pi.decorators, Ct = Ie(Si); + if (!(!Qi && !Ct)) + return { decorators: Qi, parameters: Ct }; + } + } + } + function ye(S) { + if (!!S.body) { + var Ce = S.decorators, qe = Ie(S); + if (!(!Ce && !qe)) + return { decorators: Ce, parameters: qe }; + } + } + function Ae(S) { + var Ce = S.decorators; + if (!!Ce) + return { decorators: Ce }; + } + function er(S, Ce, qe) { + if (!!qe) { + var br = []; + return e.addRange(br, e.map(qe.decorators, Ne)), e.addRange(br, e.flatMap(qe.parameters, n)), lr(S, Ce, br), br; + } + } + function ir(S, Ce, qe) { + e.addRange(S, e.map(Cr(Ce, qe), pn)); + } + function Cr(S, Ce) { + for (var qe = ze(S, Ce), br, Zr = 0, Si = qe; Zr < Si.length; Zr++) { + var Pi = Si[Zr], Qi = Ye(S, Pi); + Qi && (br ? br.push(Qi) : br = [Qi]); + } + return br; + } + function Ye(S, Ce) { + var qe = we(S, Ce), br = er(Ce, S, qe); + if (!!br) { + var Zr = Da(S, Ce), Si = Zt(Ce, !e.hasSyntacticModifier(Ce, 2)), Pi = K > 0 ? Ce.kind === 167 ? Q.createVoidZero() : Q.createNull() : void 0, Qi = le().createDecorateHelper(br, Zr, Si, Pi); + return e.setTextRange(Qi, e.moveRangePastDecorators(Ce)), e.setEmitFlags(Qi, 1536), Qi; + } + } + function Br(S, Ce) { + var qe = Er(Ce); + qe && S.push(e.setOriginalNode(Q.createExpressionStatement(qe), Ce)); + } + function Er(S) { + var Ce = _e(S), qe = er(S, S, Ce); + if (!!qe) { + var br = x && x[e.getOriginalNodeId(S)], Zr = K <= 2 ? Q.getInternalName(S, false, true) : Q.getLocalName(S, false, true), Si = le().createDecorateHelper(qe, Zr), Pi = Q.createAssignment(Zr, br ? Q.createAssignment(br, Si) : Si); + return e.setEmitFlags(Pi, 1536), e.setSourceMapRange(Pi, e.moveRangePastDecorators(S)), Pi; + } + } + function Ne(S) { + return e.visitNode(S.expression, P, e.isExpression); + } + function n(S, Ce) { + var qe; + if (S) { + qe = []; + for (var br = 0, Zr = S; br < Zr.length; br++) { + var Si = Zr[br], Pi = le().createParamHelper(Ne(Si), Ce); + e.setTextRange(Pi, Si.expression), e.setEmitFlags(Pi, 1536), qe.push(Pi); + } + } + return qe; + } + function lr(S, Ce, qe) { + a ? Ge(S, Ce, qe) : be(S, Ce, qe); + } + function be(S, Ce, qe) { + f.emitDecoratorMetadata && (ur(S) && qe.push(le().createMetadataHelper("design:type", Ur(S))), Ir(S) && qe.push(le().createMetadataHelper("design:paramtypes", ii(S, Ce))), yr(S) && qe.push(le().createMetadataHelper("design:returntype", pe(S)))); + } + function Ge(S, Ce, qe) { + if (f.emitDecoratorMetadata) { + var br = void 0; + ur(S) && (br || (br = [])).push(Q.createPropertyAssignment("type", Q.createArrowFunction(void 0, void 0, [], void 0, Q.createToken(38), Ur(S)))), Ir(S) && (br || (br = [])).push(Q.createPropertyAssignment("paramTypes", Q.createArrowFunction(void 0, void 0, [], void 0, Q.createToken(38), ii(S, Ce)))), yr(S) && (br || (br = [])).push(Q.createPropertyAssignment("returnType", Q.createArrowFunction(void 0, void 0, [], void 0, Q.createToken(38), pe(S)))), br && qe.push(le().createMetadataHelper("design:typeinfo", Q.createObjectLiteralExpression(br, true))); + } + } + function ur(S) { + var Ce = S.kind; + return Ce === 169 || Ce === 172 || Ce === 173 || Ce === 167; + } + function yr(S) { + return S.kind === 169; + } + function Ir(S) { + switch (S.kind) { + case 257: + case 226: + return e.getFirstConstructorWithBody(S) !== void 0; + case 169: + case 172: + case 173: + return true; + } + return false; + } + function wr(S) { + var Ce = oe.getAllAccessorDeclarations(S); + return Ce.setAccessor && e.getSetAccessorTypeAnnotationNode(Ce.setAccessor) || Ce.getAccessor && e.getEffectiveReturnTypeNode(Ce.getAccessor); + } + function Ur(S) { + switch (S.kind) { + case 167: + case 164: + return or(S.type); + case 173: + case 172: + return or(wr(S)); + case 257: + case 226: + case 169: + return Q.createIdentifier("Function"); + default: + return Q.createVoidZero(); + } + } + function ii(S, Ce) { + var qe = e.isClassLike(S) ? e.getFirstConstructorWithBody(S) : e.isFunctionLike(S) && e.nodeIsPresent(S.body) ? S : void 0, br = []; + if (qe) + for (var Zr = mi(qe, Ce), Si = Zr.length, Pi = 0; Pi < Si; Pi++) { + var Qi = Zr[Pi]; + Pi === 0 && e.isIdentifier(Qi.name) && Qi.name.escapedText === "this" || (Qi.dotDotDotToken ? br.push(or(e.getRestParameterElementType(Qi.type))) : br.push(Ur(Qi))); + } + return Q.createArrayLiteralExpression(br); + } + function mi(S, Ce) { + if (Ce && S.kind === 172) { + var qe = e.getAllAccessorDeclarations(Ce.members, S).setAccessor; + if (qe) + return qe.parameters; + } + return S.parameters; + } + function pe(S) { + return e.isFunctionLike(S) && S.type ? or(S.type) : e.isAsyncFunction(S) ? Q.createIdentifier("Promise") : Q.createVoidZero(); + } + function or(S) { + if (S === void 0) + return Q.createIdentifier("Object"); + switch (S.kind) { + case 114: + case 153: + case 143: + return Q.createVoidZero(); + case 191: + return or(S.type); + case 179: + case 180: + return Q.createIdentifier("Function"); + case 183: + case 184: + return Q.createIdentifier("Array"); + case 177: + case 133: + return Q.createIdentifier("Boolean"); + case 198: + case 150: + return Q.createIdentifier("String"); + case 148: + return Q.createIdentifier("Object"); + case 196: + switch (S.literal.kind) { + case 10: + case 14: + return Q.createIdentifier("String"); + case 219: + case 8: + return Q.createIdentifier("Number"); + case 9: + return Wt(); + case 110: + case 95: + return Q.createIdentifier("Boolean"); + case 104: + return Q.createVoidZero(); + default: + return e.Debug.failBadSyntaxKind(S.literal); + } + case 147: + return Q.createIdentifier("Number"); + case 158: + return Wt(); + case 151: + return K < 2 ? Gi() : Q.createIdentifier("Symbol"); + case 178: + return si(S); + case 188: + case 187: + return qr(S.types); + case 189: + return qr([S.trueType, S.falseType]); + case 193: + if (S.operator === 145) + return or(S.type); + break; + case 181: + case 194: + case 195: + case 182: + case 130: + case 155: + case 192: + case 200: + break; + case 312: + case 313: + case 317: + case 318: + case 319: + break; + case 314: + case 315: + case 316: + return or(S.type); + default: + return e.Debug.failBadSyntaxKind(S); + } + return Q.createIdentifier("Object"); + } + function qr(S) { + for (var Ce, qe = 0, br = S; qe < br.length; qe++) { + for (var Zr = br[qe]; Zr.kind === 191; ) + Zr = Zr.type; + if (Zr.kind !== 143 && !(!T && (Zr.kind === 196 && Zr.literal.kind === 104 || Zr.kind === 153))) { + var Si = or(Zr); + if (e.isIdentifier(Si) && Si.escapedText === "Object") + return Si; + if (Ce) { + if (!e.isIdentifier(Ce) || !e.isIdentifier(Si) || Ce.escapedText !== Si.escapedText) + return Q.createIdentifier("Object"); + } else + Ce = Si; + } + } + return Ce || Q.createVoidZero(); + } + function si(S) { + var Ce = oe.getTypeReferenceSerializationKind(S.typeName, ve || O); + switch (Ce) { + case e.TypeReferenceSerializationKind.Unknown: + if (e.findAncestor(S, function(Zr) { + return Zr.parent && e.isConditionalTypeNode(Zr.parent) && (Zr.parent.trueType === Zr || Zr.parent.falseType === Zr); + })) + return Q.createIdentifier("Object"); + var qe = wi(S.typeName), br = Q.createTempVariable(G); + return Q.createConditionalExpression(Q.createTypeCheck(Q.createAssignment(br, qe), "function"), void 0, br, void 0, Q.createIdentifier("Object")); + case e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue: + return Xi(S.typeName); + case e.TypeReferenceSerializationKind.VoidNullableOrNeverType: + return Q.createVoidZero(); + case e.TypeReferenceSerializationKind.BigIntLikeType: + return Wt(); + case e.TypeReferenceSerializationKind.BooleanType: + return Q.createIdentifier("Boolean"); + case e.TypeReferenceSerializationKind.NumberLikeType: + return Q.createIdentifier("Number"); + case e.TypeReferenceSerializationKind.StringLikeType: + return Q.createIdentifier("String"); + case e.TypeReferenceSerializationKind.ArrayLikeType: + return Q.createIdentifier("Array"); + case e.TypeReferenceSerializationKind.ESSymbolType: + return K < 2 ? Gi() : Q.createIdentifier("Symbol"); + case e.TypeReferenceSerializationKind.TypeWithCallSignature: + return Q.createIdentifier("Function"); + case e.TypeReferenceSerializationKind.Promise: + return Q.createIdentifier("Promise"); + case e.TypeReferenceSerializationKind.ObjectType: + return Q.createIdentifier("Object"); + default: + return e.Debug.assertNever(Ce); + } + } + function Di(S, Ce) { + return Q.createLogicalAnd(Q.createStrictInequality(Q.createTypeOfExpression(S), Q.createStringLiteral("undefined")), Ce); + } + function wi(S) { + if (S.kind === 79) { + var Ce = Xi(S); + return Di(Ce, Ce); + } + if (S.left.kind === 79) + return Di(Xi(S.left), Xi(S)); + var qe = wi(S.left), br = Q.createTempVariable(G); + return Q.createLogicalAnd(Q.createLogicalAnd(qe.left, Q.createStrictInequality(Q.createAssignment(br, qe.right), Q.createVoidZero())), Q.createPropertyAccessExpression(br, S.right)); + } + function Xi(S) { + switch (S.kind) { + case 79: + var Ce = e.setParent(e.setTextRange(e.parseNodeFactory.cloneNode(S), S), S.parent); + return Ce.original = void 0, e.setParent(Ce, e.getParseTreeNode(O)), Ce; + case 161: + return et(S); + } + } + function et(S) { + return Q.createPropertyAccessExpression(Xi(S.left), S.right); + } + function Gi() { + return Q.createConditionalExpression(Q.createTypeCheck(Q.createIdentifier("Symbol"), "function"), void 0, Q.createIdentifier("Symbol"), void 0, Q.createIdentifier("Object")); + } + function Wt() { + return K < 99 ? Q.createConditionalExpression(Q.createTypeCheck(Q.createIdentifier("BigInt"), "function"), void 0, Q.createIdentifier("BigInt"), void 0, Q.createIdentifier("Object")) : Q.createIdentifier("BigInt"); + } + function Zt(S, Ce) { + var qe = S.name; + return e.isPrivateIdentifier(qe) ? Q.createIdentifier("") : e.isComputedPropertyName(qe) ? Ce && !e.isSimpleInlineableExpression(qe.expression) ? Q.getGeneratedNameForNode(qe) : qe.expression : e.isIdentifier(qe) ? Q.createStringLiteral(e.idText(qe)) : Q.cloneNode(qe); + } + function _r(S) { + var Ce = S.name; + if (e.isComputedPropertyName(Ce) && (!e.hasStaticModifier(S) && he || e.some(S.decorators))) { + var qe = e.visitNode(Ce.expression, P, e.isExpression), br = e.skipPartiallyEmittedExpressions(qe); + if (!e.isSimpleInlineableExpression(br)) { + var Zr = Q.getGeneratedNameForNode(Ce); + return G(Zr), Q.updateComputedPropertyName(Ce, Q.createAssignment(Zr, qe)); + } + } + return e.visitNode(Ce, P, e.isPropertyName); + } + function pi(S) { + if (S.token !== 117) + return e.visitEachChild(S, P, E); + } + function ae(S) { + return Q.updateExpressionWithTypeArguments(S, e.visitNode(S.expression, P, e.isLeftHandSideExpression), void 0); + } + function Xe(S) { + return !e.nodeIsMissing(S.body); + } + function Jr(S) { + if (!(S.flags & 16777216 || e.hasSyntacticModifier(S, 128))) { + var Ce = Q.updatePropertyDeclaration(S, void 0, e.visitNodes(S.modifiers, P, e.isModifier), _r(S), void 0, void 0, e.visitNode(S.initializer, P)); + return Ce !== S && (e.setCommentRange(Ce, S), e.setSourceMapRange(Ce, e.moveRangePastDecorators(S))), Ce; + } + } + function ti(S) { + if (!!Xe(S)) + return Q.updateConstructorDeclaration(S, void 0, void 0, e.visitParameterList(S.parameters, P, E), Ze(S.body, S)); + } + function Ze(S, Ce) { + var qe = Ce && e.filter(Ce.parameters, function(Ct) { + return e.isParameterPropertyDeclaration(Ct, Ce); + }); + if (!e.some(qe)) + return e.visitFunctionBody(S, P, E); + var br = []; + p(); + var Zr = Q.copyPrologue(S.statements, br, false, P), Si = e.findSuperStatementIndex(S.statements, Zr); + Si >= 0 && e.addRange(br, e.visitNodes(S.statements, P, e.isStatement, Zr, Si + 1 - Zr)); + var Pi = e.mapDefined(qe, Sr); + Si >= 0 ? e.addRange(br, Pi) : br = Ve(Ve(Ve([], br.slice(0, Zr), true), Pi, true), br.slice(Zr), true), e.addRange(br, e.visitNodes(S.statements, P, e.isStatement, Si + 1 + Zr)), br = Q.mergeLexicalEnvironment(br, m()); + var Qi = Q.createBlock(e.setTextRange(Q.createNodeArray(br), S.statements), true); + return e.setTextRange(Qi, S), e.setOriginalNode(Qi, S), Qi; + } + function Sr(S) { + var Ce = S.name; + if (!!e.isIdentifier(Ce)) { + var qe = e.setParent(e.setTextRange(Q.cloneNode(Ce), Ce), Ce.parent); + e.setEmitFlags(qe, 1584); + var br = e.setParent(e.setTextRange(Q.cloneNode(Ce), Ce), Ce.parent); + return e.setEmitFlags(br, 1536), e.startOnNewLine(e.removeAllComments(e.setTextRange(e.setOriginalNode(Q.createExpressionStatement(Q.createAssignment(e.setTextRange(Q.createPropertyAccessExpression(Q.createThis(), qe), S.name), br)), S), e.moveRangePos(S, -1)))); + } + } + function zr(S) { + if (!!Xe(S)) { + var Ce = Q.updateMethodDeclaration(S, void 0, e.visitNodes(S.modifiers, D, e.isModifier), S.asteriskToken, _r(S), void 0, void 0, e.visitParameterList(S.parameters, P, E), void 0, e.visitFunctionBody(S.body, P, E)); + return Ce !== S && (e.setCommentRange(Ce, S), e.setSourceMapRange(Ce, e.moveRangePastDecorators(S))), Ce; + } + } + function Wr(S) { + return !(e.nodeIsMissing(S.body) && e.hasSyntacticModifier(S, 128)); + } + function Je(S) { + if (!!Wr(S)) { + var Ce = Q.updateGetAccessorDeclaration(S, void 0, e.visitNodes(S.modifiers, D, e.isModifier), _r(S), e.visitParameterList(S.parameters, P, E), void 0, e.visitFunctionBody(S.body, P, E) || Q.createBlock([])); + return Ce !== S && (e.setCommentRange(Ce, S), e.setSourceMapRange(Ce, e.moveRangePastDecorators(S))), Ce; + } + } + function xe(S) { + if (!!Wr(S)) { + var Ce = Q.updateSetAccessorDeclaration(S, void 0, e.visitNodes(S.modifiers, D, e.isModifier), _r(S), e.visitParameterList(S.parameters, P, E), e.visitFunctionBody(S.body, P, E) || Q.createBlock([])); + return Ce !== S && (e.setCommentRange(Ce, S), e.setSourceMapRange(Ce, e.moveRangePastDecorators(S))), Ce; + } + } + function vr(S) { + if (!Xe(S)) + return Q.createNotEmittedStatement(S); + var Ce = Q.updateFunctionDeclaration(S, void 0, e.visitNodes(S.modifiers, D, e.isModifier), S.asteriskToken, S.name, void 0, e.visitParameterList(S.parameters, P, E), void 0, e.visitFunctionBody(S.body, P, E) || Q.createBlock([])); + if (ai(S)) { + var qe = [Ce]; + return Cn(qe, S), qe; + } + return Ce; + } + function mr(S) { + if (!Xe(S)) + return Q.createOmittedExpression(); + var Ce = Q.updateFunctionExpression(S, e.visitNodes(S.modifiers, D, e.isModifier), S.asteriskToken, S.name, void 0, e.visitParameterList(S.parameters, P, E), void 0, e.visitFunctionBody(S.body, P, E) || Q.createBlock([])); + return Ce; + } + function Ar(S) { + var Ce = Q.updateArrowFunction(S, e.visitNodes(S.modifiers, D, e.isModifier), void 0, e.visitParameterList(S.parameters, P, E), void 0, S.equalsGreaterThanToken, e.visitFunctionBody(S.body, P, E)); + return Ce; + } + function Oe(S) { + if (!e.parameterIsThisKeyword(S)) { + var Ce = Q.updateParameterDeclaration(S, void 0, void 0, S.dotDotDotToken, e.visitNode(S.name, P, e.isBindingName), void 0, void 0, e.visitNode(S.initializer, P, e.isExpression)); + return Ce !== S && (e.setCommentRange(Ce, S), e.setTextRange(Ce, e.moveRangePastModifiers(S)), e.setSourceMapRange(Ce, e.moveRangePastModifiers(S)), e.setEmitFlags(Ce.name, 32)), Ce; + } + } + function nr(S) { + if (ai(S)) { + var Ce = e.getInitializedVariables(S.declarationList); + return Ce.length === 0 ? void 0 : e.setTextRange(Q.createExpressionStatement(Q.inlineExpressions(e.map(Ce, Mr))), S); + } else + return e.visitEachChild(S, P, E); + } + function Mr(S) { + var Ce = S.name; + return e.isBindingPattern(Ce) ? e.flattenDestructuringAssignment(S, P, E, 0, false, kn) : e.setTextRange(Q.createAssignment(xn(Ce), e.visitNode(S.initializer, P, e.isExpression)), S); + } + function Pe(S) { + var Ce = Q.updateVariableDeclaration(S, e.visitNode(S.name, P, e.isBindingName), void 0, void 0, e.visitNode(S.initializer, P, e.isExpression)); + return S.type && e.setTypeNode(Ce.name, S.type), Ce; + } + function Ue(S) { + var Ce = e.skipOuterExpressions(S.expression, -7); + if (e.isAssertionExpression(Ce)) { + var qe = e.visitNode(S.expression, P, e.isExpression); + return Q.createPartiallyEmittedExpression(qe, S); + } + return e.visitEachChild(S, P, E); + } + function fr(S) { + var Ce = e.visitNode(S.expression, P, e.isExpression); + return Q.createPartiallyEmittedExpression(Ce, S); + } + function De(S) { + var Ce = e.visitNode(S.expression, P, e.isLeftHandSideExpression); + return Q.createPartiallyEmittedExpression(Ce, S); + } + function gr(S) { + return Q.updateCallExpression(S, e.visitNode(S.expression, P, e.isExpression), void 0, e.visitNodes(S.arguments, P, e.isExpression)); + } + function Vr(S) { + return Q.updateNewExpression(S, e.visitNode(S.expression, P, e.isExpression), void 0, e.visitNodes(S.arguments, P, e.isExpression)); + } + function Tr(S) { + return Q.updateTaggedTemplateExpression(S, e.visitNode(S.tag, P, e.isExpression), void 0, e.visitNode(S.template, P, e.isExpression)); + } + function vi(S) { + return Q.updateJsxSelfClosingElement(S, e.visitNode(S.tagName, P, e.isJsxTagNameExpression), void 0, e.visitNode(S.attributes, P, e.isJsxAttributes)); + } + function Ui(S) { + return Q.updateJsxOpeningElement(S, e.visitNode(S.tagName, P, e.isJsxTagNameExpression), void 0, e.visitNode(S.attributes, P, e.isJsxAttributes)); + } + function Yi(S) { + return !e.isEnumConst(S) || e.shouldPreserveConstEnums(f); + } + function Wi(S) { + if (!Yi(S)) + return Q.createNotEmittedStatement(S); + var Ce = [], qe = 2, br = Ii(Ce, S); + br && (b !== e.ModuleKind.System || O !== ie) && (qe |= 512); + var Zr = Kn(S), Si = Pn(S), Pi = e.hasSyntacticModifier(S, 1) ? Q.getExternalModuleOrNamespaceExportName(q, S, false, true) : Q.getLocalName(S, false, true), Qi = Q.createLogicalOr(Pi, Q.createAssignment(Pi, Q.createObjectLiteralExpression())); + if (xt(S)) { + var Ct = Q.getLocalName(S, false, true); + Qi = Q.createAssignment(Ct, Qi); + } + var sa = Q.createExpressionStatement(Q.createCallExpression(Q.createFunctionExpression(void 0, void 0, void 0, void 0, [Q.createParameterDeclaration(void 0, void 0, void 0, Zr)], void 0, ct(S, Si)), void 0, [Qi])); + return e.setOriginalNode(sa, S), br && (e.setSyntheticLeadingComments(sa, void 0), e.setSyntheticTrailingComments(sa, void 0)), e.setTextRange(sa, S), e.addEmitFlags(sa, qe), Ce.push(sa), Ce.push(Q.createEndOfDeclarationMarker(S)), Ce; + } + function ct(S, Ce) { + var qe = q; + q = Ce; + var br = []; + N(); + var Zr = e.map(S.members, Li); + return e.insertStatementsAfterStandardPrologue(br, m()), e.addRange(br, Zr), q = qe, Q.createBlock(e.setTextRange(Q.createNodeArray(br), S.members), true); + } + function Li(S) { + var Ce = Zt(S, false), qe = nt(S), br = Q.createAssignment(Q.createElementAccessExpression(q, Ce), qe), Zr = qe.kind === 10 ? br : Q.createAssignment(Q.createElementAccessExpression(q, br), Ce); + return e.setTextRange(Q.createExpressionStatement(e.setTextRange(Zr, S)), S); + } + function nt(S) { + var Ce = oe.getConstantValue(S); + return Ce !== void 0 ? typeof Ce == "string" ? Q.createStringLiteral(Ce) : Q.createNumericLiteral(Ce) : (bo(), S.initializer ? e.visitNode(S.initializer, P, e.isExpression) : Q.createVoidZero()); + } + function Mt(S) { + var Ce = e.getParseTreeNode(S, e.isModuleDeclaration); + return Ce ? e.isInstantiatedModule(Ce, e.shouldPreserveConstEnums(f)) : true; + } + function xt(S) { + return ai(S) || Dn(S) && b !== e.ModuleKind.ES2015 && b !== e.ModuleKind.ES2020 && b !== e.ModuleKind.ES2022 && b !== e.ModuleKind.ESNext && b !== e.ModuleKind.System; + } + function ut(S) { + ee || (ee = new e.Map()); + var Ce = Rt(S); + ee.has(Ce) || ee.set(Ce, S); + } + function Dt(S) { + if (ee) { + var Ce = Rt(S); + return ee.get(Ce) === S; + } + return true; + } + function Rt(S) { + return e.Debug.assertNode(S.name, e.isIdentifier), S.name.escapedText; + } + function Ii(S, Ce) { + var qe = Q.createVariableStatement(e.visitNodes(Ce.modifiers, D, e.isModifier), Q.createVariableDeclarationList([Q.createVariableDeclaration(Q.getLocalName(Ce, false, true))], O.kind === 305 ? 0 : 1)); + if (e.setOriginalNode(qe, Ce), ut(Ce), Dt(Ce)) + return Ce.kind === 260 ? e.setSourceMapRange(qe.declarationList, Ce) : e.setSourceMapRange(qe, Ce), e.setCommentRange(qe, Ce), e.addEmitFlags(qe, 4195328), S.push(qe), true; + var br = Q.createMergeDeclarationMarker(qe); + return e.setEmitFlags(br, 4195840), S.push(br), false; + } + function Ki(S) { + if (!Mt(S)) + return Q.createNotEmittedStatement(S); + e.Debug.assertNode(S.name, e.isIdentifier, "A TypeScript namespace should have an Identifier name."), En(); + var Ce = [], qe = 2, br = Ii(Ce, S); + br && (b !== e.ModuleKind.System || O !== ie) && (qe |= 512); + var Zr = Kn(S), Si = Pn(S), Pi = e.hasSyntacticModifier(S, 1) ? Q.getExternalModuleOrNamespaceExportName(q, S, false, true) : Q.getLocalName(S, false, true), Qi = Q.createLogicalOr(Pi, Q.createAssignment(Pi, Q.createObjectLiteralExpression())); + if (xt(S)) { + var Ct = Q.getLocalName(S, false, true); + Qi = Q.createAssignment(Ct, Qi); + } + var sa = Q.createExpressionStatement(Q.createCallExpression(Q.createFunctionExpression(void 0, void 0, void 0, void 0, [Q.createParameterDeclaration(void 0, void 0, void 0, Zr)], void 0, Fi(S, Si)), void 0, [Qi])); + return e.setOriginalNode(sa, S), br && (e.setSyntheticLeadingComments(sa, void 0), e.setSyntheticTrailingComments(sa, void 0)), e.setTextRange(sa, S), e.addEmitFlags(sa, qe), Ce.push(sa), Ce.push(Q.createEndOfDeclarationMarker(S)), Ce; + } + function Fi(S, Ce) { + var qe = q, br = R, Zr = ee; + q = Ce, R = S, ee = void 0; + var Si = []; + N(); + var Pi, Qi; + if (S.body) + if (S.body.kind === 262) + V(S.body, function(Wa) { + return e.addRange(Si, e.visitNodes(Wa.statements, H, e.isStatement)); + }), Pi = S.body.statements, Qi = S.body; + else { + var Ct = Ki(S.body); + Ct && (e.isArray(Ct) ? e.addRange(Si, Ct) : Si.push(Ct)); + var sa = ui(S).body; + Pi = e.moveRangePos(sa.statements, -1); + } + e.insertStatementsAfterStandardPrologue(Si, m()), q = qe, R = br, ee = Zr; + var en = Q.createBlock(e.setTextRange(Q.createNodeArray(Si), Pi), true); + return e.setTextRange(en, Qi), (!S.body || S.body.kind !== 262) && e.setEmitFlags(en, e.getEmitFlags(en) | 1536), en; + } + function ui(S) { + if (S.body.kind === 261) { + var Ce = ui(S.body); + return Ce || S.body; + } + } + function Bt(S) { + if (!S.importClause) + return S; + if (!S.importClause.isTypeOnly) { + var Ce = e.visitNode(S.importClause, wt, e.isImportClause); + return Ce || f.importsNotUsedAsValues === 1 || f.importsNotUsedAsValues === 2 ? Q.updateImportDeclaration(S, void 0, void 0, Ce, S.moduleSpecifier, S.assertClause) : void 0; + } + } + function wt(S) { + e.Debug.assert(!S.isTypeOnly); + var Ce = Gr(S) ? S.name : void 0, qe = e.visitNode(S.namedBindings, na, e.isNamedImportBindings); + return Ce || qe ? Q.updateImportClause(S, false, Ce, qe) : void 0; + } + function na(S) { + if (S.kind === 268) + return Gr(S) ? S : void 0; + var Ce = f.preserveValueImports && (f.importsNotUsedAsValues === 1 || f.importsNotUsedAsValues === 2), qe = e.visitNodes(S.elements, Ai, e.isImportSpecifier); + return Ce || e.some(qe) ? Q.updateNamedImports(S, qe) : void 0; + } + function Ai(S) { + return !S.isTypeOnly && Gr(S) ? S : void 0; + } + function Oi(S) { + return oe.isValueAliasDeclaration(S) ? e.visitEachChild(S, P, E) : void 0; + } + function ji(S) { + if (!S.isTypeOnly) { + if (!S.exportClause || e.isNamespaceExport(S.exportClause)) + return S; + var Ce = !!S.moduleSpecifier && (f.importsNotUsedAsValues === 1 || f.importsNotUsedAsValues === 2), qe = e.visitNode(S.exportClause, function(br) { + return At(br, Ce); + }, e.isNamedExportBindings); + return qe ? Q.updateExportDeclaration(S, void 0, void 0, S.isTypeOnly, qe, S.moduleSpecifier, S.assertClause) : void 0; + } + } + function Vi(S, Ce) { + var qe = e.visitNodes(S.elements, ba, e.isExportSpecifier); + return Ce || e.some(qe) ? Q.updateNamedExports(S, qe) : void 0; + } + function at(S) { + return Q.updateNamespaceExport(S, e.visitNode(S.name, P, e.isIdentifier)); + } + function At(S, Ce) { + return e.isNamespaceExport(S) ? at(S) : Vi(S, Ce); + } + function ba(S) { + return !S.isTypeOnly && oe.isValueAliasDeclaration(S) ? S : void 0; + } + function $a(S) { + return Gr(S) || !e.isExternalModule(ie) && oe.isTopLevelValueImportEqualsWithEntityName(S); + } + function Qa(S) { + if (!S.isTypeOnly) { + if (e.isExternalModuleImportEqualsDeclaration(S)) { + var Ce = Gr(S); + return !Ce && f.importsNotUsedAsValues === 1 ? e.setOriginalNode(e.setTextRange(Q.createImportDeclaration(void 0, void 0, void 0, S.moduleReference.expression, void 0), S), S) : Ce ? e.visitEachChild(S, P, E) : void 0; + } + if (!!$a(S)) { + var qe = e.createExpressionFromEntityName(Q, S.moduleReference); + return e.setEmitFlags(qe, 3584), ka(S) || !ai(S) ? e.setOriginalNode(e.setTextRange(Q.createVariableStatement(e.visitNodes(S.modifiers, D, e.isModifier), Q.createVariableDeclarationList([e.setOriginalNode(Q.createVariableDeclaration(S.name, void 0, void 0, qe), S)])), S), S) : e.setOriginalNode(Bi(S.name, qe, S), S); + } + } + } + function ai(S) { + return R !== void 0 && e.hasSyntacticModifier(S, 1); + } + function Dn(S) { + return R === void 0 && e.hasSyntacticModifier(S, 1); + } + function ka(S) { + return Dn(S) && !e.hasSyntacticModifier(S, 512); + } + function Ba(S) { + return Dn(S) && e.hasSyntacticModifier(S, 512); + } + function pn(S) { + return Q.createExpressionStatement(S); + } + function Cn(S, Ce) { + var qe = Q.createAssignment(Q.getExternalModuleOrNamespaceExportName(q, Ce, false, true), Q.getLocalName(Ce)); + e.setSourceMapRange(qe, e.createRange(Ce.name ? Ce.name.pos : Ce.pos, Ce.end)); + var br = Q.createExpressionStatement(qe); + e.setSourceMapRange(br, e.createRange(-1, Ce.end)), S.push(br); + } + function Bi(S, Ce, qe) { + return e.setTextRange(Q.createExpressionStatement(Q.createAssignment(Q.getNamespaceMemberName(q, S, false, true), Ce)), qe); + } + function kn(S, Ce, qe) { + return e.setTextRange(Q.createAssignment(xn(S), Ce), qe); + } + function xn(S) { + return Q.getNamespaceMemberName(q, S, false, true); + } + function Kn(S) { + var Ce = Q.getGeneratedNameForNode(S); + return e.setSourceMapRange(Ce, S.name), Ce; + } + function Pn(S) { + return Q.getGeneratedNameForNode(S); + } + function eo(S) { + if (oe.getNodeCheckFlags(S) & 16777216) { + Ro(); + var Ce = Q.createUniqueName(S.name && !e.isGeneratedIdentifier(S.name) ? e.idText(S.name) : "default"); + return x[e.getOriginalNodeId(S)] = Ce, G(Ce), Ce; + } + } + function Rn(S) { + return Q.createPropertyAccessExpression(Q.getDeclarationName(S), "prototype"); + } + function Da(S, Ce) { + return e.isStatic(Ce) ? Q.getDeclarationName(S) : Rn(S); + } + function bo() { + (F & 8) === 0 && (F |= 8, E.enableSubstitution(79)); + } + function Ro() { + (F & 1) === 0 && (F |= 1, E.enableSubstitution(79), x = []); + } + function En() { + (F & 2) === 0 && (F |= 2, E.enableSubstitution(79), E.enableSubstitution(297), E.enableEmitNotification(261)); + } + function Wn(S) { + return e.getOriginalNode(S).kind === 261; + } + function to(S) { + return e.getOriginalNode(S).kind === 260; + } + function Co(S, Ce, qe) { + var br = X, Zr = ie; + e.isSourceFile(Ce) && (ie = Ce), F & 2 && Wn(Ce) && (X |= 2), F & 8 && to(Ce) && (X |= 8), se(S, Ce, qe), X = br, ie = Zr; + } + function Ko(S, Ce) { + return Ce = J(S, Ce), S === 1 ? no(Ce) : e.isShorthandPropertyAssignment(Ce) ? Oo(Ce) : Ce; + } + function Oo(S) { + if (F & 2) { + var Ce = S.name, qe = xi(Ce); + if (qe) { + if (S.objectAssignmentInitializer) { + var br = Q.createAssignment(qe, S.objectAssignmentInitializer); + return e.setTextRange(Q.createPropertyAssignment(Ce, br), S); + } + return e.setTextRange(Q.createPropertyAssignment(Ce, qe), S); + } + } + return S; + } + function no(S) { + switch (S.kind) { + case 79: + return $o(S); + case 206: + return St(S); + case 207: + return pa(S); + } + return S; + } + function $o(S) { + return Pr(S) || xi(S) || S; + } + function Pr(S) { + if (F & 1 && oe.getNodeCheckFlags(S) & 33554432) { + var Ce = oe.getReferencedValueDeclaration(S); + if (Ce) { + var qe = x[Ce.id]; + if (qe) { + var br = Q.cloneNode(qe); + return e.setSourceMapRange(br, S), e.setCommentRange(br, S), br; + } + } + } + } + function xi(S) { + if (F & X && !e.isGeneratedIdentifier(S) && !e.isLocalName(S)) { + var Ce = oe.getReferencedExportContainer(S, false); + if (Ce && Ce.kind !== 305) { + var qe = X & 2 && Ce.kind === 261 || X & 8 && Ce.kind === 260; + if (qe) + return e.setTextRange(Q.createPropertyAccessExpression(Q.getGeneratedNameForNode(Ce), S), S); + } + } + } + function St(S) { + return Jn(S); + } + function pa(S) { + return Jn(S); + } + function dn(S) { + return S.replace(/\*\//g, "*_/"); + } + function Jn(S) { + var Ce = Qe(S); + if (Ce !== void 0) { + e.setConstantValue(S, Ce); + var qe = typeof Ce == "string" ? Q.createStringLiteral(Ce) : Q.createNumericLiteral(Ce); + if (!f.removeComments) { + var br = e.getOriginalNode(S, e.isAccessExpression); + e.addSyntheticTrailingComment(qe, 3, " ".concat(dn(e.getTextOfNode(br)), " ")); + } + return qe; + } + return S; + } + function Qe(S) { + if (!f.isolatedModules) + return e.isPropertyAccessExpression(S) || e.isElementAccessExpression(S) ? oe.getConstantValue(S) : void 0; + } + function Gr(S) { + return f.preserveValueImports ? oe.isValueAliasDeclaration(S) : oe.isReferencedAliasDeclaration(S); + } + } + e.transformTypeScript = B; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(p) { + p[p.ClassAliases = 1] = "ClassAliases", p[p.ClassStaticThisOrSuperReference = 2] = "ClassStaticThisOrSuperReference"; + })(a || (a = {})); + var C; + (function(p) { + p.Field = "f", p.Method = "m", p.Accessor = "a"; + })(C = e.PrivateIdentifierKind || (e.PrivateIdentifierKind = {})); + var w; + (function(p) { + p[p.None = 0] = "None", p[p.ClassWasDecorated = 1] = "ClassWasDecorated", p[p.NeedsClassConstructorReference = 2] = "NeedsClassConstructorReference", p[p.NeedsClassSuperReference = 4] = "NeedsClassSuperReference", p[p.NeedsSubstitutionForThisInClassStaticField = 8] = "NeedsSubstitutionForThisInClassStaticField"; + })(w || (w = {})); + function B(p) { + var m = p.factory, G = p.hoistVariableDeclaration, oe = p.endLexicalEnvironment, f = p.startLexicalEnvironment, T = p.resumeLexicalEnvironment, K = p.addBlockScopedVariable, b = p.getEmitResolver(), se = p.getCompilerOptions(), J = e.getEmitScriptTarget(se), ie = e.getUseDefineForClassFields(se), R = J < 9, q = J < 9, O = q && J >= 2, ve = p.onSubstituteNode; + p.onSubstituteNode = qr; + var ee = p.onEmitNode; + p.onEmitNode = or; + var he, F, x, X, $ = [], A = new e.Map(), y, V, L; + return e.chainBundle(p, P); + function P(Je) { + var xe = p.getCompilerOptions(); + if (Je.isDeclarationFile || ie && e.getEmitScriptTarget(xe) >= 9) + return Je; + var vr = e.visitEachChild(Je, U, p); + return e.addEmitHelpers(vr, p.readEmitHelpers()), vr; + } + function k(Je, xe) { + if (Je.transformFlags & 8388608) + switch (Je.kind) { + case 226: + case 257: + return de(Je); + case 167: + return ue(Je); + case 237: + return D(Je); + case 80: + return I(Je); + case 170: + return Br(Je); + } + if (Je.transformFlags & 8388608 || Je.transformFlags & 33554432 && O && L && y) + switch (Je.kind) { + case 219: + case 220: + return ge(Je, xe); + case 221: + return _e(Je, xe); + case 208: + return He(Je); + case 210: + return rr(Je); + case 206: + return Z(Je); + case 207: + return Be(Je); + case 238: + return ze(Je); + case 242: + return Re(Je); + case 256: + case 213: + case 171: + case 169: + case 172: + case 173: { + var vr = L; + L = void 0; + var mr = e.visitEachChild(Je, U, p); + return L = vr, mr; + } + } + return e.visitEachChild(Je, U, p); + } + function Y(Je) { + return k(Je, true); + } + function U(Je) { + return k(Je, false); + } + function j(Je) { + switch (Je.kind) { + case 291: + return e.visitEachChild(Je, j, p); + case 228: + return ir(Je); + } + return U(Je); + } + function H(Je) { + switch (Je.kind) { + case 205: + case 204: + return Wr(Je); + default: + return U(Je); + } + } + function I(Je) { + return !R || e.isStatement(Je.parent) ? Je : e.setOriginalNode(m.createIdentifier(""), Je); + } + function l(Je) { + if (!R) + return Je; + var xe = Je.left; + e.Debug.assertNode(xe, e.isPrivateIdentifier), e.Debug.assert(Je.operatorToken.kind === 101); + var vr = ti(xe); + if (vr) { + var mr = e.visitNode(Je.right, U, e.isExpression); + return e.setOriginalNode(p.getEmitHelperFactory().createClassPrivateFieldInHelper(vr.brandCheckIdentifier, mr), Je); + } + return e.visitEachChild(Je, U, p); + } + function d(Je) { + switch (Je.kind) { + case 171: + return; + case 172: + case 173: + case 169: + return g(Je); + case 167: + return ue(Je); + case 162: + return fe(Je); + case 234: + return Je; + default: + return U(Je); + } + } + function D(Je) { + var xe = X; + X = []; + var vr = e.visitEachChild(Je, U, p), mr = e.some(X) ? Ve([vr], X, true) : vr; + return X = xe, mr; + } + function fe(Je) { + var xe = e.visitEachChild(Je, U, p); + if (e.some(x)) { + var vr = x; + vr.push(xe.expression), x = [], xe = m.updateComputedPropertyName(xe, m.inlineExpressions(vr)); + } + return xe; + } + function g(Je) { + if (e.Debug.assert(!e.some(Je.decorators)), !R || !e.isPrivateIdentifier(Je.name)) + return e.visitEachChild(Je, d, p); + var xe = ti(Je.name); + if (e.Debug.assert(xe, "Undeclared private name for property declaration."), !xe.isValid) + return Je; + var vr = ne(Je); + vr && pi().push(m.createAssignment(vr, m.createFunctionExpression(e.filter(Je.modifiers, function(mr) { + return !e.isStaticModifier(mr); + }), Je.asteriskToken, vr, void 0, e.visitParameterList(Je.parameters, d, p), void 0, e.visitFunctionBody(Je.body, d, p)))); + } + function ne(Je) { + e.Debug.assert(e.isPrivateIdentifier(Je.name)); + var xe = ti(Je.name); + if (e.Debug.assert(xe, "Undeclared private name for property declaration."), xe.kind === "m") + return xe.methodName; + if (xe.kind === "a") { + if (e.isGetAccessor(Je)) + return xe.getterName; + if (e.isSetAccessor(Je)) + return xe.setterName; + } + } + function ue(Je) { + if (e.Debug.assert(!e.some(Je.decorators)), e.isPrivateIdentifier(Je.name)) { + if (!R) + return e.isStatic(Je) ? e.visitEachChild(Je, U, p) : m.updatePropertyDeclaration(Je, void 0, e.visitNodes(Je.modifiers, U, e.isModifier), Je.name, void 0, void 0, void 0); + var xe = ti(Je.name); + if (e.Debug.assert(xe, "Undeclared private name for property declaration."), !xe.isValid) + return Je; + } + var vr = et(Je.name, !!Je.initializer || ie); + if (vr && !e.isSimpleInlineableExpression(vr) && pi().push(vr), e.isStatic(Je) && !R && !ie) { + var mr = ur(Je, m.createThis()); + if (mr) { + var Ar = m.createClassStaticBlockDeclaration(void 0, void 0, m.createBlock([mr])); + return e.setOriginalNode(Ar, Je), e.setCommentRange(Ar, Je), e.setCommentRange(mr, { pos: -1, end: -1 }), e.setSyntheticLeadingComments(mr, void 0), e.setSyntheticTrailingComments(mr, void 0), Ar; + } + } + } + function We(Je, xe) { + return Fe(Je, e.visitNode(xe, U, e.isExpression)); + } + function Fe(Je, xe) { + switch (e.setCommentRange(xe, e.moveRangePos(xe, -1)), Je.kind) { + case "a": + return p.getEmitHelperFactory().createClassPrivateFieldGetHelper(xe, Je.brandCheckIdentifier, Je.kind, Je.getterName); + case "m": + return p.getEmitHelperFactory().createClassPrivateFieldGetHelper(xe, Je.brandCheckIdentifier, Je.kind, Je.methodName); + case "f": + return p.getEmitHelperFactory().createClassPrivateFieldGetHelper(xe, Je.brandCheckIdentifier, Je.kind, Je.variableName); + default: + e.Debug.assertNever(Je, "Unknown private element type"); + } + } + function Z(Je) { + if (R && e.isPrivateIdentifier(Je.name)) { + var xe = ti(Je.name); + if (xe) + return e.setTextRange(e.setOriginalNode(We(xe, Je.expression), Je), Je); + } + if (O && e.isSuperProperty(Je) && e.isIdentifier(Je.name) && L && y) { + var vr = y.classConstructor, mr = y.superClassReference, Ar = y.facts; + if (Ar & 1) + return pe(Je); + if (vr && mr) { + var Oe = m.createReflectGetCall(mr, m.createStringLiteralFromNode(Je.name), vr); + return e.setOriginalNode(Oe, Je.expression), e.setTextRange(Oe, Je.expression), Oe; + } + } + return e.visitEachChild(Je, U, p); + } + function Be(Je) { + if (O && e.isSuperProperty(Je) && L && y) { + var xe = y.classConstructor, vr = y.superClassReference, mr = y.facts; + if (mr & 1) + return pe(Je); + if (xe && vr) { + var Ar = m.createReflectGetCall(vr, e.visitNode(Je.argumentExpression, U, e.isExpression), xe); + return e.setOriginalNode(Ar, Je.expression), e.setTextRange(Ar, Je.expression), Ar; + } + } + return e.visitEachChild(Je, U, p); + } + function ge(Je, xe) { + if (Je.operator === 45 || Je.operator === 46) { + if (R && e.isPrivateIdentifierPropertyAccessExpression(Je.operand)) { + var vr = void 0; + if (vr = ti(Je.operand.name)) { + var mr = e.visitNode(Je.operand.expression, U, e.isExpression), Ar = Ee(mr), Oe = Ar.readExpression, nr = Ar.initializeExpression, Mr = We(vr, Oe), Pe = e.isPrefixUnaryExpression(Je) || xe ? void 0 : m.createTempVariable(G); + return Mr = e.expandPreOrPostfixIncrementOrDecrementExpression(m, Je, Mr, G, Pe), Mr = we(vr, nr || Oe, Mr, 63), e.setOriginalNode(Mr, Je), e.setTextRange(Mr, Je), Pe && (Mr = m.createComma(Mr, Pe), e.setTextRange(Mr, Je)), Mr; + } + } else if (O && e.isSuperProperty(Je.operand) && L && y) { + var Ue = y.classConstructor, fr = y.superClassReference, De = y.facts; + if (De & 1) { + var gr = pe(Je.operand); + return e.isPrefixUnaryExpression(Je) ? m.updatePrefixUnaryExpression(Je, gr) : m.updatePostfixUnaryExpression(Je, gr); + } + if (Ue && fr) { + var Vr = void 0, Tr = void 0; + if (e.isPropertyAccessExpression(Je.operand) ? e.isIdentifier(Je.operand.name) && (Tr = Vr = m.createStringLiteralFromNode(Je.operand.name)) : e.isSimpleInlineableExpression(Je.operand.argumentExpression) ? Tr = Vr = Je.operand.argumentExpression : (Tr = m.createTempVariable(G), Vr = m.createAssignment(Tr, e.visitNode(Je.operand.argumentExpression, U, e.isExpression))), Vr && Tr) { + var Mr = m.createReflectGetCall(fr, Tr, Ue); + e.setTextRange(Mr, Je.operand); + var Pe = xe ? void 0 : m.createTempVariable(G); + return Mr = e.expandPreOrPostfixIncrementOrDecrementExpression(m, Je, Mr, G, Pe), Mr = m.createReflectSetCall(fr, Vr, Mr, Ue), e.setOriginalNode(Mr, Je), e.setTextRange(Mr, Je), Pe && (Mr = m.createComma(Mr, Pe), e.setTextRange(Mr, Je)), Mr; + } + } + } + } + return e.visitEachChild(Je, U, p); + } + function Re(Je) { + return m.updateForStatement(Je, e.visitNode(Je.initializer, Y, e.isForInitializer), e.visitNode(Je.condition, U, e.isExpression), e.visitNode(Je.incrementor, Y, e.isExpression), e.visitIterationBody(Je.statement, U, p)); + } + function ze(Je) { + return m.updateExpressionStatement(Je, e.visitNode(Je.expression, Y, e.isExpression)); + } + function Ee(Je) { + var xe = e.nodeIsSynthesized(Je) ? Je : m.cloneNode(Je); + if (e.isSimpleInlineableExpression(Je)) + return { readExpression: xe, initializeExpression: void 0 }; + var vr = m.createTempVariable(G), mr = m.createAssignment(vr, xe); + return { readExpression: vr, initializeExpression: mr }; + } + function He(Je) { + if (R && e.isPrivateIdentifierPropertyAccessExpression(Je.expression)) { + var xe = m.createCallBinding(Je.expression, G, J), vr = xe.thisArg, mr = xe.target; + return e.isCallChain(Je) ? m.updateCallChain(Je, m.createPropertyAccessChain(e.visitNode(mr, U), Je.questionDotToken, "call"), void 0, void 0, Ve([e.visitNode(vr, U, e.isExpression)], e.visitNodes(Je.arguments, U, e.isExpression), true)) : m.updateCallExpression(Je, m.createPropertyAccessExpression(e.visitNode(mr, U), "call"), void 0, Ve([e.visitNode(vr, U, e.isExpression)], e.visitNodes(Je.arguments, U, e.isExpression), true)); + } + if (O && e.isSuperProperty(Je.expression) && L && (y == null ? void 0 : y.classConstructor)) { + var Ar = m.createFunctionCallCall(e.visitNode(Je.expression, U, e.isExpression), y.classConstructor, e.visitNodes(Je.arguments, U, e.isExpression)); + return e.setOriginalNode(Ar, Je), e.setTextRange(Ar, Je), Ar; + } + return e.visitEachChild(Je, U, p); + } + function rr(Je) { + if (R && e.isPrivateIdentifierPropertyAccessExpression(Je.tag)) { + var xe = m.createCallBinding(Je.tag, G, J), vr = xe.thisArg, mr = xe.target; + return m.updateTaggedTemplateExpression(Je, m.createCallExpression(m.createPropertyAccessExpression(e.visitNode(mr, U), "bind"), void 0, [e.visitNode(vr, U, e.isExpression)]), void 0, e.visitNode(Je.template, U, e.isTemplateLiteral)); + } + if (O && e.isSuperProperty(Je.tag) && L && (y == null ? void 0 : y.classConstructor)) { + var Ar = m.createFunctionBindCall(e.visitNode(Je.tag, U, e.isExpression), y.classConstructor, []); + return e.setOriginalNode(Ar, Je), e.setTextRange(Ar, Je), m.updateTaggedTemplateExpression(Je, Ar, void 0, e.visitNode(Je.template, U, e.isTemplateLiteral)); + } + return e.visitEachChild(Je, U, p); + } + function Ie(Je) { + if (R) { + y && A.set(e.getOriginalNodeId(Je), y), f(); + var xe = L; + L = Je; + var vr = e.visitNodes(Je.body.statements, U, e.isStatement); + vr = m.mergeLexicalEnvironment(vr, oe()), L = xe; + var mr = m.createImmediatelyInvokedArrowFunction(vr); + return e.setOriginalNode(mr, Je), e.setTextRange(mr, Je), e.addEmitFlags(mr, 2), mr; + } + } + function _e(Je, xe) { + if (e.isDestructuringAssignment(Je)) { + var vr = x; + x = void 0, Je = m.updateBinaryExpression(Je, e.visitNode(Je.left, H), Je.operatorToken, e.visitNode(Je.right, U)); + var mr = e.some(x) ? m.inlineExpressions(e.compact(Ve(Ve([], x, true), [Je], false))) : Je; + return x = vr, mr; + } + if (e.isAssignmentExpression(Je)) { + if (R && e.isPrivateIdentifierPropertyAccessExpression(Je.left)) { + var Ar = ti(Je.left.name); + if (Ar) + return e.setTextRange(e.setOriginalNode(we(Ar, Je.left.expression, Je.right, Je.operatorToken.kind), Je), Je); + } else if (O && e.isSuperProperty(Je.left) && L && y) { + var Oe = y.classConstructor, nr = y.superClassReference, Mr = y.facts; + if (Mr & 1) + return m.updateBinaryExpression(Je, pe(Je.left), Je.operatorToken, e.visitNode(Je.right, U, e.isExpression)); + if (Oe && nr) { + var Pe = e.isElementAccessExpression(Je.left) ? e.visitNode(Je.left.argumentExpression, U, e.isExpression) : e.isIdentifier(Je.left.name) ? m.createStringLiteralFromNode(Je.left.name) : void 0; + if (Pe) { + var Ue = e.visitNode(Je.right, U, e.isExpression); + if (e.isCompoundAssignment(Je.operatorToken.kind)) { + var fr = Pe; + e.isSimpleInlineableExpression(Pe) || (fr = m.createTempVariable(G), Pe = m.createAssignment(fr, Pe)); + var De = m.createReflectGetCall(nr, fr, Oe); + e.setOriginalNode(De, Je.left), e.setTextRange(De, Je.left), Ue = m.createBinaryExpression(De, e.getNonAssignmentOperatorForCompoundAssignment(Je.operatorToken.kind), Ue), e.setTextRange(Ue, Je); + } + var gr = xe ? void 0 : m.createTempVariable(G); + return gr && (Ue = m.createAssignment(gr, Ue), e.setTextRange(gr, Je)), Ue = m.createReflectSetCall(nr, Pe, Ue, Oe), e.setOriginalNode(Ue, Je), e.setTextRange(Ue, Je), gr && (Ue = m.createComma(Ue, gr), e.setTextRange(Ue, Je)), Ue; + } + } + } + } + return Je.operatorToken.kind === 101 && e.isPrivateIdentifier(Je.left) ? l(Je) : e.visitEachChild(Je, U, p); + } + function we(Je, xe, vr, mr) { + if (xe = e.visitNode(xe, U, e.isExpression), vr = e.visitNode(vr, U, e.isExpression), e.isCompoundAssignment(mr)) { + var Ar = Ee(xe), Oe = Ar.readExpression, nr = Ar.initializeExpression; + xe = nr || Oe, vr = m.createBinaryExpression(Fe(Je, Oe), e.getNonAssignmentOperatorForCompoundAssignment(mr), vr); + } + switch (e.setCommentRange(xe, e.moveRangePos(xe, -1)), Je.kind) { + case "a": + return p.getEmitHelperFactory().createClassPrivateFieldSetHelper(xe, Je.brandCheckIdentifier, vr, Je.kind, Je.setterName); + case "m": + return p.getEmitHelperFactory().createClassPrivateFieldSetHelper(xe, Je.brandCheckIdentifier, vr, Je.kind, void 0); + case "f": + return p.getEmitHelperFactory().createClassPrivateFieldSetHelper(xe, Je.brandCheckIdentifier, vr, Je.kind, Je.variableName); + default: + e.Debug.assertNever(Je, "Unknown private element type"); + } + } + function de(Je) { + if (!e.forEach(Je.members, ye)) + return e.visitEachChild(Je, U, p); + var xe = x; + if (x = void 0, Gi(), R) { + var vr = e.getNameOfDeclaration(Je); + vr && e.isIdentifier(vr) && (_r().className = e.idText(vr)); + var mr = Ae(Je); + e.some(mr) && (_r().weakSetName = Xe("instances", mr[0].name)); + } + var Ar = e.isClassDeclaration(Je) ? Cr(Je) : Ye(Je); + return Wt(), x = xe, Ar; + } + function ye(Je) { + return e.isPropertyDeclaration(Je) || e.isClassStaticBlockDeclaration(Je) || R && Je.name && e.isPrivateIdentifier(Je.name); + } + function Ae(Je) { + return e.filter(Je.members, e.isNonStaticMethodOrAccessorWithPrivateName); + } + function er(Je) { + var xe = 0, vr = e.getOriginalNode(Je); + e.isClassDeclaration(vr) && e.classOrConstructorParameterIsDecorated(vr) && (xe |= 1); + for (var mr = 0, Ar = Je.members; mr < Ar.length; mr++) { + var Oe = Ar[mr]; + !e.isStatic(Oe) || (Oe.name && e.isPrivateIdentifier(Oe.name) && R && (xe |= 2), (e.isPropertyDeclaration(Oe) || e.isClassStaticBlockDeclaration(Oe)) && (q && Oe.transformFlags & 8192 && (xe |= 8, xe & 1 || (xe |= 2)), O && Oe.transformFlags & 33554432 && (xe & 1 || (xe |= 6)))); + } + return xe; + } + function ir(Je) { + var xe = (y == null ? void 0 : y.facts) || 0; + if (xe & 4) { + var vr = m.createTempVariable(G, true); + return Zt().superClassReference = vr, m.updateExpressionWithTypeArguments(Je, m.createAssignment(vr, e.visitNode(Je.expression, U, e.isExpression)), void 0); + } + return e.visitEachChild(Je, U, p); + } + function Cr(Je) { + var xe = er(Je); + xe && (Zt().facts = xe), xe & 8 && ii(); + var vr; + if (xe & 2) { + var mr = m.createTempVariable(G, true); + Zt().classConstructor = m.cloneNode(mr), vr = m.createAssignment(mr, m.getInternalName(Je)); + } + var Ar = e.getEffectiveBaseTypeNode(Je), Oe = !!(Ar && e.skipOuterExpressions(Ar.expression).kind !== 104), nr = [m.updateClassDeclaration(Je, void 0, Je.modifiers, Je.name, void 0, e.visitNodes(Je.heritageClauses, j, e.isHeritageClause), Er(Je, Oe))]; + vr && pi().unshift(vr), e.some(x) && nr.push(m.createExpressionStatement(m.inlineExpressions(x))); + var Mr = e.getStaticPropertiesAndClassStaticBlock(Je); + return e.some(Mr) && Ge(nr, Mr, m.getInternalName(Je)), nr; + } + function Ye(Je) { + var xe = er(Je); + xe && (Zt().facts = xe), xe & 8 && ii(); + var vr = !!(xe & 1), mr = e.getStaticPropertiesAndClassStaticBlock(Je), Ar = e.getEffectiveBaseTypeNode(Je), Oe = !!(Ar && e.skipOuterExpressions(Ar.expression).kind !== 104), nr = b.getNodeCheckFlags(Je) & 16777216, Mr; + function Pe() { + var Vr = b.getNodeCheckFlags(Je), Tr = Vr & 16777216, vi = Vr & 524288; + return m.createTempVariable(vi ? K : G, !!Tr); + } + xe & 2 && (Mr = Pe(), Zt().classConstructor = m.cloneNode(Mr)); + var Ue = m.updateClassExpression(Je, e.visitNodes(Je.decorators, U, e.isDecorator), Je.modifiers, Je.name, void 0, e.visitNodes(Je.heritageClauses, j, e.isHeritageClause), Er(Je, Oe)), fr = R && e.some(mr, function(Vr) { + return e.isClassStaticBlockDeclaration(Vr) || !!Vr.initializer || e.isPrivateIdentifier(Vr.name); + }); + if (fr || e.some(x)) { + if (vr) + return e.Debug.assertIsDefined(X, "Decorated classes transformed by TypeScript are expected to be within a variable declaration."), X && x && e.some(x) && X.push(m.createExpressionStatement(m.inlineExpressions(x))), X && e.some(mr) && Ge(X, mr, m.getInternalName(Je)), Mr ? m.inlineExpressions([m.createAssignment(Mr, Ue), Mr]) : Ue; + var De = []; + if (Mr || (Mr = Pe()), nr) { + Ur(); + var gr = m.cloneNode(Mr); + gr.autoGenerateFlags &= -9, F[e.getOriginalNodeId(Je)] = gr; + } + return e.setEmitFlags(Ue, 65536 | e.getEmitFlags(Ue)), De.push(e.startOnNewLine(m.createAssignment(Mr, Ue))), e.addRange(De, e.map(x, e.startOnNewLine)), e.addRange(De, yr(mr, Mr)), De.push(e.startOnNewLine(Mr)), m.inlineExpressions(De); + } + return Ue; + } + function Br(Je) { + if (!R) + return e.visitEachChild(Je, d, p); + } + function Er(Je, xe) { + var vr = []; + if (R) { + for (var mr = 0, Ar = Je.members; mr < Ar.length; mr++) { + var Oe = Ar[mr]; + e.isPrivateIdentifierClassElementDeclaration(Oe) && ae(Oe); + } + e.some(Ae(Je)) && Ne(); + } + var nr = lr(Je, xe), Mr = e.visitNodes(Je.members, d, e.isClassElement); + return nr && vr.push(nr), !R && e.some(x) && (vr.push(m.createClassStaticBlockDeclaration(void 0, void 0, m.createBlock([m.createExpressionStatement(m.inlineExpressions(x))]))), x = void 0), e.addRange(vr, Mr), e.setTextRange(m.createNodeArray(vr), Je.members); + } + function Ne() { + var Je = _r().weakSetName; + e.Debug.assert(Je, "weakSetName should be set in private identifier environment"), pi().push(m.createAssignment(Je, m.createNewExpression(m.createIdentifier("WeakSet"), void 0, []))); + } + function n(Je) { + return e.isStatic(Je) || e.hasSyntacticModifier(e.getOriginalNode(Je), 128) ? false : ie ? J < 9 : e.isInitializedProperty(Je) || R && e.isPrivateIdentifierClassElementDeclaration(Je); + } + function lr(Je, xe) { + var vr = e.visitNode(e.getFirstConstructorWithBody(Je), U, e.isConstructorDeclaration), mr = Je.members.filter(n); + if (!e.some(mr)) + return vr; + var Ar = e.visitParameterList(vr ? vr.parameters : void 0, U, p), Oe = be(Je, vr, xe); + if (!!Oe) + return e.startOnNewLine(e.setOriginalNode(e.setTextRange(m.createConstructorDeclaration(void 0, void 0, Ar != null ? Ar : [], Oe), vr || Je), vr)); + } + function be(Je, xe, vr) { + var mr, Ar = e.getProperties(Je, false, false); + ie || (Ar = e.filter(Ar, function(Li) { + return !!Li.initializer || e.isPrivateIdentifier(Li.name); + })); + var Oe = Ae(Je), nr = e.some(Ar) || e.some(Oe); + if (!xe && !nr) + return e.visitFunctionBody(void 0, U, p); + T(); + var Mr = !xe && vr, Pe = 0, Ue = 0, fr = -1, De = []; + !((mr = xe == null ? void 0 : xe.body) === null || mr === void 0) && mr.statements && (Ue = m.copyPrologue(xe.body.statements, De, false, U), fr = e.findSuperStatementIndex(xe.body.statements, Ue), fr >= 0 ? (Pe = fr + 1, De = Ve(Ve(Ve([], De.slice(0, Ue), true), e.visitNodes(xe.body.statements, U, e.isStatement, Ue, Pe - Ue), true), De.slice(Ue), true)) : Ue >= 0 && (Pe = Ue)), Mr && De.push(m.createExpressionStatement(m.createCallExpression(m.createSuper(), void 0, [m.createSpreadElement(m.createIdentifier("arguments"))]))); + var gr = 0; + if (xe != null && xe.body) + if (ie) + De = De.filter(function(Li) { + return !e.isParameterPropertyDeclaration(e.getOriginalNode(Li), xe); + }); + else { + for (var Vr = 0, Tr = xe.body.statements; Vr < Tr.length; Vr++) { + var vi = Tr[Vr]; + e.isParameterPropertyDeclaration(e.getOriginalNode(vi), xe) && gr++; + } + if (gr > 0) { + var Ui = e.visitNodes(xe.body.statements, U, e.isStatement, Pe, gr); + if (fr >= 0) + e.addRange(De, Ui); + else { + var Yi = Ue; + Mr && Yi++, De = Ve(Ve(Ve([], De.slice(0, Yi), true), Ui, true), De.slice(Yi), true); + } + Pe += gr; + } + } + var Wi = m.createThis(); + return mi(De, Oe, Wi), Ge(De, Ar, Wi), xe && e.addRange(De, e.visitNodes(xe.body.statements, ct, e.isStatement, Pe)), De = m.mergeLexicalEnvironment(De, oe()), e.setTextRange(m.createBlock(e.setTextRange(m.createNodeArray(De), xe ? xe.body.statements : Je.members), true), xe ? xe.body : void 0); + function ct(Li) { + if (!(ie && e.isParameterPropertyDeclaration(e.getOriginalNode(Li), xe))) + return U(Li); + } + } + function Ge(Je, xe, vr) { + for (var mr = 0, Ar = xe; mr < Ar.length; mr++) { + var Oe = Ar[mr]; + if (!(e.isStatic(Oe) && !R && !ie)) { + var nr = ur(Oe, vr); + !nr || Je.push(nr); + } + } + } + function ur(Je, xe) { + var vr = e.isClassStaticBlockDeclaration(Je) ? Ie(Je) : Ir(Je, xe); + if (!!vr) { + var mr = m.createExpressionStatement(vr); + return e.setSourceMapRange(mr, e.moveRangePastModifiers(Je)), e.setCommentRange(mr, Je), e.setOriginalNode(mr, Je), e.setSyntheticLeadingComments(vr, void 0), e.setSyntheticTrailingComments(vr, void 0), mr; + } + } + function yr(Je, xe) { + for (var vr = [], mr = 0, Ar = Je; mr < Ar.length; mr++) { + var Oe = Ar[mr], nr = e.isClassStaticBlockDeclaration(Oe) ? Ie(Oe) : Ir(Oe, xe); + !nr || (e.startOnNewLine(nr), e.setSourceMapRange(nr, e.moveRangePastModifiers(Oe)), e.setCommentRange(nr, Oe), e.setOriginalNode(nr, Oe), vr.push(nr)); + } + return vr; + } + function Ir(Je, xe) { + var vr = L, mr = wr(Je, xe); + return mr && e.hasStaticModifier(Je) && (y == null ? void 0 : y.facts) && (e.setOriginalNode(mr, Je), e.addEmitFlags(mr, 2), A.set(e.getOriginalNodeId(mr), y)), L = vr, mr; + } + function wr(Je, xe) { + var vr, mr = !ie, Ar = e.isComputedPropertyName(Je.name) && !e.isSimpleInlineableExpression(Je.name.expression) ? m.updateComputedPropertyName(Je.name, m.getGeneratedNameForNode(Je.name)) : Je.name; + if (e.hasStaticModifier(Je) && (L = Je), R && e.isPrivateIdentifier(Ar)) { + var Oe = ti(Ar); + if (Oe) + return Oe.kind === "f" ? Oe.isStatic ? E(Oe.variableName, e.visitNode(Je.initializer, U, e.isExpression)) : Q(xe, e.visitNode(Je.initializer, U, e.isExpression), Oe.brandCheckIdentifier) : void 0; + e.Debug.fail("Undeclared private name for property declaration."); + } + if (!((e.isPrivateIdentifier(Ar) || e.hasStaticModifier(Je)) && !Je.initializer)) { + var nr = e.getOriginalNode(Je); + if (!e.hasSyntacticModifier(nr, 128)) { + var Mr = Je.initializer || mr ? (vr = e.visitNode(Je.initializer, U, e.isExpression)) !== null && vr !== void 0 ? vr : m.createVoidZero() : e.isParameterPropertyDeclaration(nr, nr.parent) && e.isIdentifier(Ar) ? Ar : m.createVoidZero(); + if (mr || e.isPrivateIdentifier(Ar)) { + var Pe = e.createMemberAccessForPropertyName(m, xe, Ar, Ar); + return m.createAssignment(Pe, Mr); + } else { + var Ue = e.isComputedPropertyName(Ar) ? Ar.expression : e.isIdentifier(Ar) ? m.createStringLiteral(e.unescapeLeadingUnderscores(Ar.escapedText)) : Ar, fr = m.createPropertyDescriptor({ value: Mr, configurable: true, writable: true, enumerable: true }); + return m.createObjectDefinePropertyCall(xe, Ue, fr); + } + } + } + } + function Ur() { + (he & 1) === 0 && (he |= 1, p.enableSubstitution(79), F = []); + } + function ii() { + (he & 2) === 0 && (he |= 2, p.enableSubstitution(108), p.enableEmitNotification(256), p.enableEmitNotification(213), p.enableEmitNotification(171), p.enableEmitNotification(172), p.enableEmitNotification(173), p.enableEmitNotification(169), p.enableEmitNotification(167), p.enableEmitNotification(162)); + } + function mi(Je, xe, vr) { + if (!(!R || !e.some(xe))) { + var mr = _r().weakSetName; + e.Debug.assert(mr, "weakSetName should be set in private identifier environment"), Je.push(m.createExpressionStatement(le(vr, mr))); + } + } + function pe(Je) { + return e.isPropertyAccessExpression(Je) ? m.updatePropertyAccessExpression(Je, m.createVoidZero(), Je.name) : m.updateElementAccessExpression(Je, m.createVoidZero(), e.visitNode(Je.argumentExpression, U, e.isExpression)); + } + function or(Je, xe, vr) { + var mr = e.getOriginalNode(xe); + if (mr.id) { + var Ar = A.get(mr.id); + if (Ar) { + var Oe = y, nr = V; + y = Ar, V = Ar, ee(Je, xe, vr), y = Oe, V = nr; + return; + } + } + switch (xe.kind) { + case 213: + if (e.isArrowFunction(mr) || e.getEmitFlags(xe) & 262144) + break; + case 256: + case 171: { + var Oe = y, nr = V; + y = void 0, V = void 0, ee(Je, xe, vr), y = Oe, V = nr; + return; + } + case 172: + case 173: + case 169: + case 167: { + var Oe = y, nr = V; + V = y, y = void 0, ee(Je, xe, vr), y = Oe, V = nr; + return; + } + case 162: { + var Oe = y, nr = V; + y = V, V = void 0, ee(Je, xe, vr), y = Oe, V = nr; + return; + } + } + ee(Je, xe, vr); + } + function qr(Je, xe) { + return xe = ve(Je, xe), Je === 1 ? si(xe) : xe; + } + function si(Je) { + switch (Je.kind) { + case 79: + return wi(Je); + case 108: + return Di(Je); + } + return Je; + } + function Di(Je) { + if (he & 2 && y) { + var xe = y.facts, vr = y.classConstructor; + if (xe & 1) + return m.createParenthesizedExpression(m.createVoidZero()); + if (vr) + return e.setTextRange(e.setOriginalNode(m.cloneNode(vr), Je), Je); + } + return Je; + } + function wi(Je) { + return Xi(Je) || Je; + } + function Xi(Je) { + if (he & 1 && b.getNodeCheckFlags(Je) & 33554432) { + var xe = b.getReferencedValueDeclaration(Je); + if (xe) { + var vr = F[xe.id]; + if (vr) { + var mr = m.cloneNode(vr); + return e.setSourceMapRange(mr, Je), e.setCommentRange(mr, Je), mr; + } + } + } + } + function et(Je, xe) { + if (e.isComputedPropertyName(Je)) { + var vr = e.visitNode(Je.expression, U, e.isExpression), mr = e.skipPartiallyEmittedExpressions(vr), Ar = e.isSimpleInlineableExpression(mr), Oe = e.isAssignmentExpression(mr) && e.isGeneratedIdentifier(mr.left); + if (!Oe && !Ar && xe) { + var nr = m.getGeneratedNameForNode(Je); + return b.getNodeCheckFlags(Je) & 524288 ? K(nr) : G(nr), m.createAssignment(nr, vr); + } + return Ar || e.isIdentifier(mr) ? void 0 : vr; + } + } + function Gi() { + $.push(y), y = void 0; + } + function Wt() { + y = $.pop(); + } + function Zt() { + return y || (y = { facts: 0, classConstructor: void 0, superClassReference: void 0, privateIdentifierEnvironment: void 0 }); + } + function _r() { + var Je = Zt(); + return Je.privateIdentifierEnvironment || (Je.privateIdentifierEnvironment = { className: "", identifiers: new e.Map() }), Je.privateIdentifierEnvironment; + } + function pi() { + return x || (x = []); + } + function ae(Je) { + var xe, vr = e.getTextOfPropertyName(Je.name), mr = Zt(), Ar = mr.classConstructor, Oe = _r(), nr = Oe.weakSetName, Mr = [], Pe = Je.name.escapedText, Ue = Oe.identifiers.get(Pe), fr = !N(Je.name) && Ue === void 0; + if (e.hasStaticModifier(Je)) + if (e.Debug.assert(Ar, "weakSetName should be set in private identifier environment"), e.isPropertyDeclaration(Je)) { + var De = Jr(vr, Je); + Oe.identifiers.set(Pe, { kind: "f", variableName: De, brandCheckIdentifier: Ar, isStatic: true, isValid: fr }); + } else if (e.isMethodDeclaration(Je)) { + var gr = Jr(vr, Je); + Oe.identifiers.set(Pe, { kind: "m", methodName: gr, brandCheckIdentifier: Ar, isStatic: true, isValid: fr }); + } else if (e.isGetAccessorDeclaration(Je)) { + var Vr = Jr(vr + "_get", Je); + (Ue == null ? void 0 : Ue.kind) === "a" && Ue.isStatic && !Ue.getterName ? Ue.getterName = Vr : Oe.identifiers.set(Pe, { kind: "a", getterName: Vr, setterName: void 0, brandCheckIdentifier: Ar, isStatic: true, isValid: fr }); + } else if (e.isSetAccessorDeclaration(Je)) { + var Tr = Jr(vr + "_set", Je); + (Ue == null ? void 0 : Ue.kind) === "a" && Ue.isStatic && !Ue.setterName ? Ue.setterName = Tr : Oe.identifiers.set(Pe, { kind: "a", getterName: void 0, setterName: Tr, brandCheckIdentifier: Ar, isStatic: true, isValid: fr }); + } else + e.Debug.assertNever(Je, "Unknown class element type."); + else if (e.isPropertyDeclaration(Je)) { + var vi = Jr(vr, Je); + Oe.identifiers.set(Pe, { kind: "f", brandCheckIdentifier: vi, isStatic: false, variableName: void 0, isValid: fr }), Mr.push(m.createAssignment(vi, m.createNewExpression(m.createIdentifier("WeakMap"), void 0, []))); + } else if (e.isMethodDeclaration(Je)) + e.Debug.assert(nr, "weakSetName should be set in private identifier environment"), Oe.identifiers.set(Pe, { kind: "m", methodName: Jr(vr, Je), brandCheckIdentifier: nr, isStatic: false, isValid: fr }); + else if (e.isAccessor(Je)) + if (e.Debug.assert(nr, "weakSetName should be set in private identifier environment"), e.isGetAccessor(Je)) { + var Vr = Jr(vr + "_get", Je); + (Ue == null ? void 0 : Ue.kind) === "a" && !Ue.isStatic && !Ue.getterName ? Ue.getterName = Vr : Oe.identifiers.set(Pe, { kind: "a", getterName: Vr, setterName: void 0, brandCheckIdentifier: nr, isStatic: false, isValid: fr }); + } else { + var Tr = Jr(vr + "_set", Je); + (Ue == null ? void 0 : Ue.kind) === "a" && !Ue.isStatic && !Ue.setterName ? Ue.setterName = Tr : Oe.identifiers.set(Pe, { kind: "a", getterName: void 0, setterName: Tr, brandCheckIdentifier: nr, isStatic: false, isValid: fr }); + } + else + e.Debug.assertNever(Je, "Unknown class element type."); + (xe = pi()).push.apply(xe, Mr); + } + function Xe(Je, xe) { + var vr = _r().className, mr = vr ? "_".concat(vr) : "", Ar = m.createUniqueName("".concat(mr, "_").concat(Je), 16); + return b.getNodeCheckFlags(xe) & 524288 ? K(Ar) : G(Ar), Ar; + } + function Jr(Je, xe) { + return Xe(Je.substring(1), xe.name); + } + function ti(Je) { + var xe; + if (y != null && y.privateIdentifierEnvironment) { + var vr = y.privateIdentifierEnvironment.identifiers.get(Je.escapedText); + if (vr) + return vr; + } + for (var mr = $.length - 1; mr >= 0; --mr) { + var Ar = $[mr]; + if (!!Ar) { + var vr = (xe = Ar.privateIdentifierEnvironment) === null || xe === void 0 ? void 0 : xe.identifiers.get(Je.escapedText); + if (vr) + return vr; + } + } + } + function Ze(Je) { + var xe = m.getGeneratedNameForNode(Je), vr = ti(Je.name); + if (!vr) + return e.visitEachChild(Je, U, p); + var mr = Je.expression; + return (e.isThisProperty(Je) || e.isSuperProperty(Je) || !e.isSimpleCopiableExpression(Je.expression)) && (mr = m.createTempVariable(G, true), pi().push(m.createBinaryExpression(mr, 63, e.visitNode(Je.expression, U, e.isExpression)))), m.createAssignmentTargetWrapper(xe, we(vr, mr, xe, 63)); + } + function Sr(Je) { + var xe = e.getTargetOfBindingOrAssignmentElement(Je); + if (xe) { + var vr = void 0; + if (e.isPrivateIdentifierPropertyAccessExpression(xe)) + vr = Ze(xe); + else if (O && e.isSuperProperty(xe) && L && y) { + var mr = y.classConstructor, Ar = y.superClassReference, Oe = y.facts; + if (Oe & 1) + vr = pe(xe); + else if (mr && Ar) { + var nr = e.isElementAccessExpression(xe) ? e.visitNode(xe.argumentExpression, U, e.isExpression) : e.isIdentifier(xe.name) ? m.createStringLiteralFromNode(xe.name) : void 0; + if (nr) { + var Mr = m.createTempVariable(void 0); + vr = m.createAssignmentTargetWrapper(Mr, m.createReflectSetCall(Ar, nr, Mr, mr)); + } + } + } + if (vr) + return e.isAssignmentExpression(Je) ? m.updateBinaryExpression(Je, vr, Je.operatorToken, e.visitNode(Je.right, U, e.isExpression)) : e.isSpreadElement(Je) ? m.updateSpreadElement(Je, vr) : vr; + } + return e.visitNode(Je, H); + } + function zr(Je) { + if (e.isObjectBindingOrAssignmentElement(Je) && !e.isShorthandPropertyAssignment(Je)) { + var xe = e.getTargetOfBindingOrAssignmentElement(Je), vr = void 0; + if (xe) { + if (e.isPrivateIdentifierPropertyAccessExpression(xe)) + vr = Ze(xe); + else if (O && e.isSuperProperty(xe) && L && y) { + var mr = y.classConstructor, Ar = y.superClassReference, Oe = y.facts; + if (Oe & 1) + vr = pe(xe); + else if (mr && Ar) { + var nr = e.isElementAccessExpression(xe) ? e.visitNode(xe.argumentExpression, U, e.isExpression) : e.isIdentifier(xe.name) ? m.createStringLiteralFromNode(xe.name) : void 0; + if (nr) { + var Mr = m.createTempVariable(void 0); + vr = m.createAssignmentTargetWrapper(Mr, m.createReflectSetCall(Ar, nr, Mr, mr)); + } + } + } + } + if (e.isPropertyAssignment(Je)) { + var Pe = e.getInitializerOfBindingOrAssignmentElement(Je); + return m.updatePropertyAssignment(Je, e.visitNode(Je.name, U, e.isPropertyName), vr ? Pe ? m.createAssignment(vr, e.visitNode(Pe, U)) : vr : e.visitNode(Je.initializer, H, e.isExpression)); + } + if (e.isSpreadAssignment(Je)) + return m.updateSpreadAssignment(Je, vr || e.visitNode(Je.expression, H, e.isExpression)); + e.Debug.assert(vr === void 0, "Should not have generated a wrapped target"); + } + return e.visitNode(Je, U); + } + function Wr(Je) { + return e.isArrayLiteralExpression(Je) ? m.updateArrayLiteralExpression(Je, e.visitNodes(Je.elements, Sr, e.isExpression)) : m.updateObjectLiteralExpression(Je, e.visitNodes(Je.properties, zr, e.isObjectLiteralElementLike)); + } + } + e.transformClassFields = B; + function E(p, m) { + return e.factory.createAssignment(p, e.factory.createObjectLiteralExpression([e.factory.createPropertyAssignment("value", m || e.factory.createVoidZero())])); + } + function Q(p, m, G) { + return e.factory.createCallExpression(e.factory.createPropertyAccessExpression(G, "set"), void 0, [p, m || e.factory.createVoidZero()]); + } + function le(p, m) { + return e.factory.createCallExpression(e.factory.createPropertyAccessExpression(m, "add"), void 0, [p]); + } + function N(p) { + return p.escapedText === "#constructor"; + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(E) { + E[E.AsyncMethodsWithSuper = 1] = "AsyncMethodsWithSuper"; + })(a || (a = {})); + var C; + (function(E) { + E[E.NonTopLevel = 1] = "NonTopLevel", E[E.HasLexicalThis = 2] = "HasLexicalThis"; + })(C || (C = {})); + function w(E) { + var Q = E.factory, le = E.getEmitHelperFactory, N = E.resumeLexicalEnvironment, p = E.endLexicalEnvironment, m = E.hoistVariableDeclaration, G = E.getEmitResolver(), oe = E.getCompilerOptions(), f = e.getEmitScriptTarget(oe), T, K = 0, b, se, J, ie = [], R = 0, q = E.onEmitNode, O = E.onSubstituteNode; + return E.onEmitNode = Re, E.onSubstituteNode = ze, e.chainBundle(E, ve); + function ve(de) { + if (de.isDeclarationFile) + return de; + ee(1, false), ee(2, !e.isEffectiveStrictModeSourceFile(de, oe)); + var ye = e.visitEachChild(de, A, E); + return e.addEmitHelpers(ye, E.readEmitHelpers()), ye; + } + function ee(de, ye) { + R = ye ? R | de : R & ~de; + } + function he(de) { + return (R & de) !== 0; + } + function F() { + return !he(1); + } + function x() { + return he(2); + } + function X(de, ye, Ae) { + var er = de & ~R; + if (er) { + ee(er, true); + var ir = ye(Ae); + return ee(er, false), ir; + } + return ye(Ae); + } + function $(de) { + return e.visitEachChild(de, A, E); + } + function A(de) { + if ((de.transformFlags & 256) === 0) + return de; + switch (de.kind) { + case 131: + return; + case 218: + return U(de); + case 169: + return X(3, j, de); + case 256: + return X(3, H, de); + case 213: + return X(3, I, de); + case 214: + return X(1, l, de); + case 206: + return se && e.isPropertyAccessExpression(de) && de.expression.kind === 106 && se.add(de.name.escapedText), e.visitEachChild(de, A, E); + case 207: + return se && de.expression.kind === 106 && (J = true), e.visitEachChild(de, A, E); + case 172: + case 173: + case 171: + case 257: + case 226: + return X(3, $, de); + default: + return e.visitEachChild(de, A, E); + } + } + function y(de) { + if (e.isNodeWithPossibleHoistedDeclaration(de)) + switch (de.kind) { + case 237: + return L(de); + case 242: + return Y(de); + case 243: + return P(de); + case 244: + return k(de); + case 292: + return V(de); + case 235: + case 249: + case 263: + case 289: + case 290: + case 252: + case 240: + case 241: + case 239: + case 248: + case 250: + return e.visitEachChild(de, y, E); + default: + return e.Debug.assertNever(de, "Unhandled node."); + } + return A(de); + } + function V(de) { + var ye = new e.Set(); + d(de.variableDeclaration, ye); + var Ae; + if (ye.forEach(function(Cr, Ye) { + b.has(Ye) && (Ae || (Ae = new e.Set(b)), Ae.delete(Ye)); + }), Ae) { + var er = b; + b = Ae; + var ir = e.visitEachChild(de, y, E); + return b = er, ir; + } else + return e.visitEachChild(de, y, E); + } + function L(de) { + if (D(de.declarationList)) { + var ye = fe(de.declarationList, false); + return ye ? Q.createExpressionStatement(ye) : void 0; + } + return e.visitEachChild(de, A, E); + } + function P(de) { + return Q.updateForInStatement(de, D(de.initializer) ? fe(de.initializer, true) : e.visitNode(de.initializer, A, e.isForInitializer), e.visitNode(de.expression, A, e.isExpression), e.visitIterationBody(de.statement, y, E)); + } + function k(de) { + return Q.updateForOfStatement(de, e.visitNode(de.awaitModifier, A, e.isToken), D(de.initializer) ? fe(de.initializer, true) : e.visitNode(de.initializer, A, e.isForInitializer), e.visitNode(de.expression, A, e.isExpression), e.visitIterationBody(de.statement, y, E)); + } + function Y(de) { + var ye = de.initializer; + return Q.updateForStatement(de, D(ye) ? fe(ye, false) : e.visitNode(de.initializer, A, e.isForInitializer), e.visitNode(de.condition, A, e.isExpression), e.visitNode(de.incrementor, A, e.isExpression), e.visitIterationBody(de.statement, y, E)); + } + function U(de) { + return F() ? e.visitEachChild(de, A, E) : e.setOriginalNode(e.setTextRange(Q.createYieldExpression(void 0, e.visitNode(de.expression, A, e.isExpression)), de), de); + } + function j(de) { + return Q.updateMethodDeclaration(de, void 0, e.visitNodes(de.modifiers, A, e.isModifier), de.asteriskToken, de.name, void 0, void 0, e.visitParameterList(de.parameters, A, E), void 0, e.getFunctionFlags(de) & 2 ? Fe(de) : e.visitFunctionBody(de.body, A, E)); + } + function H(de) { + return Q.updateFunctionDeclaration(de, void 0, e.visitNodes(de.modifiers, A, e.isModifier), de.asteriskToken, de.name, void 0, e.visitParameterList(de.parameters, A, E), void 0, e.getFunctionFlags(de) & 2 ? Fe(de) : e.visitFunctionBody(de.body, A, E)); + } + function I(de) { + return Q.updateFunctionExpression(de, e.visitNodes(de.modifiers, A, e.isModifier), de.asteriskToken, de.name, void 0, e.visitParameterList(de.parameters, A, E), void 0, e.getFunctionFlags(de) & 2 ? Fe(de) : e.visitFunctionBody(de.body, A, E)); + } + function l(de) { + return Q.updateArrowFunction(de, e.visitNodes(de.modifiers, A, e.isModifier), void 0, e.visitParameterList(de.parameters, A, E), void 0, de.equalsGreaterThanToken, e.getFunctionFlags(de) & 2 ? Fe(de) : e.visitFunctionBody(de.body, A, E)); + } + function d(de, ye) { + var Ae = de.name; + if (e.isIdentifier(Ae)) + ye.add(Ae.escapedText); + else + for (var er = 0, ir = Ae.elements; er < ir.length; er++) { + var Cr = ir[er]; + e.isOmittedExpression(Cr) || d(Cr, ye); + } + } + function D(de) { + return !!de && e.isVariableDeclarationList(de) && !(de.flags & 3) && de.declarations.some(We); + } + function fe(de, ye) { + g(de); + var Ae = e.getInitializedVariables(de); + return Ae.length === 0 ? ye ? e.visitNode(Q.converters.convertToAssignmentElementTarget(de.declarations[0].name), A, e.isExpression) : void 0 : Q.inlineExpressions(e.map(Ae, ue)); + } + function g(de) { + e.forEach(de.declarations, ne); + } + function ne(de) { + var ye = de.name; + if (e.isIdentifier(ye)) + m(ye); + else + for (var Ae = 0, er = ye.elements; Ae < er.length; Ae++) { + var ir = er[Ae]; + e.isOmittedExpression(ir) || ne(ir); + } + } + function ue(de) { + var ye = e.setSourceMapRange(Q.createAssignment(Q.converters.convertToAssignmentElementTarget(de.name), de.initializer), de); + return e.visitNode(ye, A, e.isExpression); + } + function We(de) { + var ye = de.name; + if (e.isIdentifier(ye)) + return b.has(ye.escapedText); + for (var Ae = 0, er = ye.elements; Ae < er.length; Ae++) { + var ir = er[Ae]; + if (!e.isOmittedExpression(ir) && We(ir)) + return true; + } + return false; + } + function Fe(de) { + N(); + var ye = e.getOriginalNode(de, e.isFunctionLike), Ae = ye.type, er = f < 2 ? Be(Ae) : void 0, ir = de.kind === 214, Cr = (G.getNodeCheckFlags(de) & 8192) !== 0, Ye = b; + b = new e.Set(); + for (var Br = 0, Er = de.parameters; Br < Er.length; Br++) { + var Ne = Er[Br]; + d(Ne, b); + } + var n = se, lr = J; + ir || (se = new e.Set(), J = false); + var be; + if (ir) { + var Ur = le().createAwaiterHelper(x(), Cr, er, Z(de.body)), ii = p(); + if (e.some(ii)) { + var wr = Q.converters.convertToFunctionBlock(Ur); + be = Q.updateBlock(wr, e.setTextRange(Q.createNodeArray(e.concatenate(ii, wr.statements)), wr.statements)); + } else + be = Ur; + } else { + var Ge = [], ur = Q.copyPrologue(de.body.statements, Ge, false, A); + Ge.push(Q.createReturnStatement(le().createAwaiterHelper(x(), Cr, er, Z(de.body, ur)))), e.insertStatementsAfterStandardPrologue(Ge, p()); + var yr = f >= 2 && G.getNodeCheckFlags(de) & 6144; + if (yr && (ge(), se.size)) { + var Ir = B(Q, G, de, se); + ie[e.getNodeId(Ir)] = true, e.insertStatementsAfterStandardPrologue(Ge, [Ir]); + } + var wr = Q.createBlock(Ge, true); + e.setTextRange(wr, de.body), yr && J && (G.getNodeCheckFlags(de) & 4096 ? e.addEmitHelper(wr, e.advancedAsyncSuperHelper) : G.getNodeCheckFlags(de) & 2048 && e.addEmitHelper(wr, e.asyncSuperHelper)), be = wr; + } + return b = Ye, ir || (se = n, J = lr), be; + } + function Z(de, ye) { + return e.isBlock(de) ? Q.updateBlock(de, e.visitNodes(de.statements, y, e.isStatement, ye)) : Q.converters.convertToFunctionBlock(e.visitNode(de, y, e.isConciseBody)); + } + function Be(de) { + var ye = de && e.getEntityNameFromTypeNode(de); + if (ye && e.isEntityName(ye)) { + var Ae = G.getTypeReferenceSerializationKind(ye); + if (Ae === e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue || Ae === e.TypeReferenceSerializationKind.Unknown) + return ye; + } + } + function ge() { + (T & 1) === 0 && (T |= 1, E.enableSubstitution(208), E.enableSubstitution(206), E.enableSubstitution(207), E.enableEmitNotification(257), E.enableEmitNotification(169), E.enableEmitNotification(172), E.enableEmitNotification(173), E.enableEmitNotification(171), E.enableEmitNotification(237)); + } + function Re(de, ye, Ae) { + if (T & 1 && _e(ye)) { + var er = G.getNodeCheckFlags(ye) & 6144; + if (er !== K) { + var ir = K; + K = er, q(de, ye, Ae), K = ir; + return; + } + } else if (T && ie[e.getNodeId(ye)]) { + var ir = K; + K = 0, q(de, ye, Ae), K = ir; + return; + } + q(de, ye, Ae); + } + function ze(de, ye) { + return ye = O(de, ye), de === 1 && K ? Ee(ye) : ye; + } + function Ee(de) { + switch (de.kind) { + case 206: + return He(de); + case 207: + return rr(de); + case 208: + return Ie(de); + } + return de; + } + function He(de) { + return de.expression.kind === 106 ? e.setTextRange(Q.createPropertyAccessExpression(Q.createUniqueName("_super", 48), de.name), de) : de; + } + function rr(de) { + return de.expression.kind === 106 ? we(de.argumentExpression, de) : de; + } + function Ie(de) { + var ye = de.expression; + if (e.isSuperProperty(ye)) { + var Ae = e.isPropertyAccessExpression(ye) ? He(ye) : rr(ye); + return Q.createCallExpression(Q.createPropertyAccessExpression(Ae, "call"), void 0, Ve([Q.createThis()], de.arguments, true)); + } + return de; + } + function _e(de) { + var ye = de.kind; + return ye === 257 || ye === 171 || ye === 169 || ye === 172 || ye === 173; + } + function we(de, ye) { + return K & 4096 ? e.setTextRange(Q.createPropertyAccessExpression(Q.createCallExpression(Q.createUniqueName("_superIndex", 48), void 0, [de]), "value"), ye) : e.setTextRange(Q.createCallExpression(Q.createUniqueName("_superIndex", 48), void 0, [de]), ye); + } + } + e.transformES2017 = w; + function B(E, Q, le, N) { + var p = (Q.getNodeCheckFlags(le) & 4096) !== 0, m = []; + return N.forEach(function(G, oe) { + var f = e.unescapeLeadingUnderscores(oe), T = []; + T.push(E.createPropertyAssignment("get", E.createArrowFunction(void 0, void 0, [], void 0, void 0, e.setEmitFlags(E.createPropertyAccessExpression(e.setEmitFlags(E.createSuper(), 4), f), 4)))), p && T.push(E.createPropertyAssignment("set", E.createArrowFunction(void 0, void 0, [E.createParameterDeclaration(void 0, void 0, void 0, "v", void 0, void 0, void 0)], void 0, void 0, E.createAssignment(e.setEmitFlags(E.createPropertyAccessExpression(e.setEmitFlags(E.createSuper(), 4), f), 4), E.createIdentifier("v"))))), m.push(E.createPropertyAssignment(f, E.createObjectLiteralExpression(T))); + }), E.createVariableStatement(void 0, E.createVariableDeclarationList([E.createVariableDeclaration(E.createUniqueName("_super", 48), void 0, void 0, E.createCallExpression(E.createPropertyAccessExpression(E.createIdentifier("Object"), "create"), void 0, [E.createNull(), E.createObjectLiteralExpression(m, true)]))], 2)); + } + e.createSuperAccessVariableStatement = B; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(B) { + B[B.AsyncMethodsWithSuper = 1] = "AsyncMethodsWithSuper"; + })(a || (a = {})); + var C; + (function(B) { + B[B.None = 0] = "None", B[B.HasLexicalThis = 1] = "HasLexicalThis", B[B.IterationContainer = 2] = "IterationContainer", B[B.AncestorFactsMask = 3] = "AncestorFactsMask", B[B.SourceFileIncludes = 1] = "SourceFileIncludes", B[B.SourceFileExcludes = 2] = "SourceFileExcludes", B[B.StrictModeSourceFileIncludes = 0] = "StrictModeSourceFileIncludes", B[B.ClassOrFunctionIncludes = 1] = "ClassOrFunctionIncludes", B[B.ClassOrFunctionExcludes = 2] = "ClassOrFunctionExcludes", B[B.ArrowFunctionIncludes = 0] = "ArrowFunctionIncludes", B[B.ArrowFunctionExcludes = 2] = "ArrowFunctionExcludes", B[B.IterationStatementIncludes = 2] = "IterationStatementIncludes", B[B.IterationStatementExcludes = 0] = "IterationStatementExcludes"; + })(C || (C = {})); + function w(B) { + var E = B.factory, Q = B.getEmitHelperFactory, le = B.resumeLexicalEnvironment, N = B.endLexicalEnvironment, p = B.hoistVariableDeclaration, m = B.getEmitResolver(), G = B.getCompilerOptions(), oe = e.getEmitScriptTarget(G), f = B.onEmitNode; + B.onEmitNode = Ge; + var T = B.onSubstituteNode; + B.onSubstituteNode = ur; + var K = false, b, se, J, ie = 0, R = 0, q, O, ve, ee, he = []; + return e.chainBundle(B, A); + function F(pe, or) { + return R !== (R & ~pe | or); + } + function x(pe, or) { + var qr = R; + return R = (R & ~pe | or) & 3, qr; + } + function X(pe) { + R = pe; + } + function $(pe) { + O = e.append(O, E.createVariableDeclaration(pe)); + } + function A(pe) { + if (pe.isDeclarationFile) + return pe; + q = pe; + var or = g(pe); + return e.addEmitHelpers(or, B.readEmitHelpers()), q = void 0, O = void 0, or; + } + function y(pe) { + return Y(pe, false); + } + function V(pe) { + return Y(pe, true); + } + function L(pe) { + if (pe.kind !== 131) + return pe; + } + function P(pe, or, qr, si) { + if (F(qr, si)) { + var Di = x(qr, si), wi = pe(or); + return X(Di), wi; + } + return pe(or); + } + function k(pe) { + return e.visitEachChild(pe, y, B); + } + function Y(pe, or) { + if ((pe.transformFlags & 128) === 0) + return pe; + switch (pe.kind) { + case 218: + return U(pe); + case 224: + return j(pe); + case 247: + return H(pe); + case 250: + return I(pe); + case 205: + return d(pe); + case 221: + return ue(pe, or); + case 351: + return We(pe, or); + case 292: + return Fe(pe); + case 237: + return Z(pe); + case 254: + return Be(pe); + case 240: + case 241: + case 243: + return P(k, pe, 0, 2); + case 244: + return Ee(pe, void 0); + case 242: + return P(Re, pe, 0, 2); + case 217: + return ze(pe); + case 171: + return P(Ae, pe, 2, 1); + case 169: + return P(Cr, pe, 2, 1); + case 172: + return P(er, pe, 2, 1); + case 173: + return P(ir, pe, 2, 1); + case 256: + return P(Ye, pe, 2, 1); + case 213: + return P(Er, pe, 2, 1); + case 214: + return P(Br, pe, 2, 0); + case 164: + return de(pe); + case 238: + return D(pe); + case 212: + return fe(pe, or); + case 210: + return ne(pe); + case 206: + return ve && e.isPropertyAccessExpression(pe) && pe.expression.kind === 106 && ve.add(pe.name.escapedText), e.visitEachChild(pe, y, B); + case 207: + return ve && pe.expression.kind === 106 && (ee = true), e.visitEachChild(pe, y, B); + case 257: + case 226: + return P(k, pe, 2, 1); + default: + return e.visitEachChild(pe, y, B); + } + } + function U(pe) { + return se & 2 && se & 1 ? e.setOriginalNode(e.setTextRange(E.createYieldExpression(void 0, Q().createAwaitHelper(e.visitNode(pe.expression, y, e.isExpression))), pe), pe) : e.visitEachChild(pe, y, B); + } + function j(pe) { + if (se & 2 && se & 1) { + if (pe.asteriskToken) { + var or = e.visitNode(e.Debug.checkDefined(pe.expression), y, e.isExpression); + return e.setOriginalNode(e.setTextRange(E.createYieldExpression(void 0, Q().createAwaitHelper(E.updateYieldExpression(pe, pe.asteriskToken, e.setTextRange(Q().createAsyncDelegatorHelper(e.setTextRange(Q().createAsyncValuesHelper(or), or)), or)))), pe), pe); + } + return e.setOriginalNode(e.setTextRange(E.createYieldExpression(void 0, Ie(pe.expression ? e.visitNode(pe.expression, y, e.isExpression) : E.createVoidZero())), pe), pe); + } + return e.visitEachChild(pe, y, B); + } + function H(pe) { + return se & 2 && se & 1 ? E.updateReturnStatement(pe, Ie(pe.expression ? e.visitNode(pe.expression, y, e.isExpression) : E.createVoidZero())) : e.visitEachChild(pe, y, B); + } + function I(pe) { + if (se & 2) { + var or = e.unwrapInnermostStatementOfLabel(pe); + return or.kind === 244 && or.awaitModifier ? Ee(or, pe) : E.restoreEnclosingLabel(e.visitNode(or, y, e.isStatement, E.liftToBlock), pe); + } + return e.visitEachChild(pe, y, B); + } + function l(pe) { + for (var or, qr = [], si = 0, Di = pe; si < Di.length; si++) { + var wi = Di[si]; + if (wi.kind === 298) { + or && (qr.push(E.createObjectLiteralExpression(or)), or = void 0); + var Xi = wi.expression; + qr.push(e.visitNode(Xi, y, e.isExpression)); + } else + or = e.append(or, wi.kind === 296 ? E.createPropertyAssignment(wi.name, e.visitNode(wi.initializer, y, e.isExpression)) : e.visitNode(wi, y, e.isObjectLiteralElementLike)); + } + return or && qr.push(E.createObjectLiteralExpression(or)), qr; + } + function d(pe) { + if (pe.transformFlags & 32768) { + var or = l(pe.properties); + or.length && or[0].kind !== 205 && or.unshift(E.createObjectLiteralExpression()); + var qr = or[0]; + if (or.length > 1) { + for (var si = 1; si < or.length; si++) + qr = Q().createAssignHelper([qr, or[si]]); + return qr; + } else + return Q().createAssignHelper(or); + } + return e.visitEachChild(pe, y, B); + } + function D(pe) { + return e.visitEachChild(pe, V, B); + } + function fe(pe, or) { + return e.visitEachChild(pe, or ? V : y, B); + } + function g(pe) { + var or = x(2, e.isEffectiveStrictModeSourceFile(pe, G) ? 0 : 1); + K = false; + var qr = e.visitEachChild(pe, y, B), si = e.concatenate(qr.statements, O && [E.createVariableStatement(void 0, E.createVariableDeclarationList(O))]), Di = E.updateSourceFile(qr, e.setTextRange(E.createNodeArray(si), pe.statements)); + return X(or), Di; + } + function ne(pe) { + return e.processTaggedTemplateExpression(B, pe, y, q, $, e.ProcessLevel.LiftRestriction); + } + function ue(pe, or) { + return e.isDestructuringAssignment(pe) && pe.left.transformFlags & 32768 ? e.flattenDestructuringAssignment(pe, y, B, 1, !or) : pe.operatorToken.kind === 27 ? E.updateBinaryExpression(pe, e.visitNode(pe.left, V, e.isExpression), pe.operatorToken, e.visitNode(pe.right, or ? V : y, e.isExpression)) : e.visitEachChild(pe, y, B); + } + function We(pe, or) { + if (or) + return e.visitEachChild(pe, V, B); + for (var qr, si = 0; si < pe.elements.length; si++) { + var Di = pe.elements[si], wi = e.visitNode(Di, si < pe.elements.length - 1 ? V : y, e.isExpression); + (qr || wi !== Di) && (qr || (qr = pe.elements.slice(0, si)), qr.push(wi)); + } + var Xi = qr ? e.setTextRange(E.createNodeArray(qr), pe.elements) : pe.elements; + return E.updateCommaListExpression(pe, Xi); + } + function Fe(pe) { + if (pe.variableDeclaration && e.isBindingPattern(pe.variableDeclaration.name) && pe.variableDeclaration.name.transformFlags & 32768) { + var or = E.getGeneratedNameForNode(pe.variableDeclaration.name), qr = E.updateVariableDeclaration(pe.variableDeclaration, pe.variableDeclaration.name, void 0, void 0, or), si = e.flattenDestructuringBinding(qr, y, B, 1), Di = e.visitNode(pe.block, y, e.isBlock); + return e.some(si) && (Di = E.updateBlock(Di, Ve([E.createVariableStatement(void 0, si)], Di.statements, true))), E.updateCatchClause(pe, E.updateVariableDeclaration(pe.variableDeclaration, or, void 0, void 0, void 0), Di); + } + return e.visitEachChild(pe, y, B); + } + function Z(pe) { + if (e.hasSyntacticModifier(pe, 1)) { + var or = K; + K = true; + var qr = e.visitEachChild(pe, y, B); + return K = or, qr; + } + return e.visitEachChild(pe, y, B); + } + function Be(pe) { + if (K) { + var or = K; + K = false; + var qr = ge(pe, true); + return K = or, qr; + } + return ge(pe, false); + } + function ge(pe, or) { + return e.isBindingPattern(pe.name) && pe.name.transformFlags & 32768 ? e.flattenDestructuringBinding(pe, y, B, 1, void 0, or) : e.visitEachChild(pe, y, B); + } + function Re(pe) { + return E.updateForStatement(pe, e.visitNode(pe.initializer, V, e.isForInitializer), e.visitNode(pe.condition, y, e.isExpression), e.visitNode(pe.incrementor, V, e.isExpression), e.visitIterationBody(pe.statement, y, B)); + } + function ze(pe) { + return e.visitEachChild(pe, V, B); + } + function Ee(pe, or) { + var qr = x(0, 2); + pe.initializer.transformFlags & 32768 && (pe = He(pe)); + var si = pe.awaitModifier ? _e(pe, or, qr) : E.restoreEnclosingLabel(e.visitEachChild(pe, y, B), or); + return X(qr), si; + } + function He(pe) { + var or = e.skipParentheses(pe.initializer); + if (e.isVariableDeclarationList(or) || e.isAssignmentPattern(or)) { + var qr = void 0, si = void 0, Di = E.createTempVariable(void 0), wi = [e.createForOfBindingStatement(E, or, Di)]; + return e.isBlock(pe.statement) ? (e.addRange(wi, pe.statement.statements), qr = pe.statement, si = pe.statement.statements) : pe.statement && (e.append(wi, pe.statement), qr = pe.statement, si = pe.statement), E.updateForOfStatement(pe, pe.awaitModifier, e.setTextRange(E.createVariableDeclarationList([e.setTextRange(E.createVariableDeclaration(Di), pe.initializer)], 1), pe.initializer), pe.expression, e.setTextRange(E.createBlock(e.setTextRange(E.createNodeArray(wi), si), true), qr)); + } + return pe; + } + function rr(pe, or) { + var qr = e.createForOfBindingStatement(E, pe.initializer, or), si, Di, wi = [e.visitNode(qr, y, e.isStatement)], Xi = e.visitIterationBody(pe.statement, y, B); + return e.isBlock(Xi) ? (e.addRange(wi, Xi.statements), si = Xi, Di = Xi.statements) : wi.push(Xi), e.setEmitFlags(e.setTextRange(E.createBlock(e.setTextRange(E.createNodeArray(wi), Di), true), si), 432); + } + function Ie(pe) { + return se & 1 ? E.createYieldExpression(void 0, Q().createAwaitHelper(pe)) : E.createAwaitExpression(pe); + } + function _e(pe, or, qr) { + var si = e.visitNode(pe.expression, y, e.isExpression), Di = e.isIdentifier(si) ? E.getGeneratedNameForNode(si) : E.createTempVariable(void 0), wi = e.isIdentifier(si) ? E.getGeneratedNameForNode(Di) : E.createTempVariable(void 0), Xi = E.createUniqueName("e"), et = E.getGeneratedNameForNode(Xi), Gi = E.createTempVariable(void 0), Wt = e.setTextRange(Q().createAsyncValuesHelper(si), pe.expression), Zt = E.createCallExpression(E.createPropertyAccessExpression(Di, "next"), void 0, []), _r = E.createPropertyAccessExpression(wi, "done"), pi = E.createPropertyAccessExpression(wi, "value"), ae = E.createFunctionCallCall(Gi, Di, []); + p(Xi), p(Gi); + var Xe = qr & 2 ? E.inlineExpressions([E.createAssignment(Xi, E.createVoidZero()), Wt]) : Wt, Jr = e.setEmitFlags(e.setTextRange(E.createForStatement(e.setEmitFlags(e.setTextRange(E.createVariableDeclarationList([e.setTextRange(E.createVariableDeclaration(Di, void 0, void 0, Xe), pe.expression), E.createVariableDeclaration(wi)]), pe.expression), 2097152), E.createComma(E.createAssignment(wi, Ie(Zt)), E.createLogicalNot(_r)), void 0, rr(pe, pi)), pe), 256); + return e.setOriginalNode(Jr, pe), E.createTryStatement(E.createBlock([E.restoreEnclosingLabel(Jr, or)]), E.createCatchClause(E.createVariableDeclaration(et), e.setEmitFlags(E.createBlock([E.createExpressionStatement(E.createAssignment(Xi, E.createObjectLiteralExpression([E.createPropertyAssignment("error", et)])))]), 1)), E.createBlock([E.createTryStatement(E.createBlock([e.setEmitFlags(E.createIfStatement(E.createLogicalAnd(E.createLogicalAnd(wi, E.createLogicalNot(_r)), E.createAssignment(Gi, E.createPropertyAccessExpression(Di, "return"))), E.createExpressionStatement(Ie(ae))), 1)]), void 0, e.setEmitFlags(E.createBlock([e.setEmitFlags(E.createIfStatement(Xi, E.createThrowStatement(E.createPropertyAccessExpression(Xi, "error"))), 1)]), 1))])); + } + function we(pe) { + return e.Debug.assertNode(pe, e.isParameter), de(pe); + } + function de(pe) { + return J != null && J.has(pe) ? E.updateParameterDeclaration(pe, void 0, void 0, pe.dotDotDotToken, e.isBindingPattern(pe.name) ? E.getGeneratedNameForNode(pe) : pe.name, void 0, void 0, void 0) : pe.transformFlags & 32768 ? E.updateParameterDeclaration(pe, void 0, void 0, pe.dotDotDotToken, E.getGeneratedNameForNode(pe), void 0, void 0, e.visitNode(pe.initializer, y, e.isExpression)) : e.visitEachChild(pe, y, B); + } + function ye(pe) { + for (var or, qr = 0, si = pe.parameters; qr < si.length; qr++) { + var Di = si[qr]; + or ? or.add(Di) : Di.transformFlags & 32768 && (or = new e.Set()); + } + return or; + } + function Ae(pe) { + var or = se, qr = J; + se = e.getFunctionFlags(pe), J = ye(pe); + var si = E.updateConstructorDeclaration(pe, void 0, pe.modifiers, e.visitParameterList(pe.parameters, we, B), n(pe)); + return se = or, J = qr, si; + } + function er(pe) { + var or = se, qr = J; + se = e.getFunctionFlags(pe), J = ye(pe); + var si = E.updateGetAccessorDeclaration(pe, void 0, pe.modifiers, e.visitNode(pe.name, y, e.isPropertyName), e.visitParameterList(pe.parameters, we, B), void 0, n(pe)); + return se = or, J = qr, si; + } + function ir(pe) { + var or = se, qr = J; + se = e.getFunctionFlags(pe), J = ye(pe); + var si = E.updateSetAccessorDeclaration(pe, void 0, pe.modifiers, e.visitNode(pe.name, y, e.isPropertyName), e.visitParameterList(pe.parameters, we, B), n(pe)); + return se = or, J = qr, si; + } + function Cr(pe) { + var or = se, qr = J; + se = e.getFunctionFlags(pe), J = ye(pe); + var si = E.updateMethodDeclaration(pe, void 0, se & 1 ? e.visitNodes(pe.modifiers, L, e.isModifier) : pe.modifiers, se & 2 ? void 0 : pe.asteriskToken, e.visitNode(pe.name, y, e.isPropertyName), e.visitNode(void 0, y, e.isToken), void 0, e.visitParameterList(pe.parameters, we, B), void 0, se & 2 && se & 1 ? Ne(pe) : n(pe)); + return se = or, J = qr, si; + } + function Ye(pe) { + var or = se, qr = J; + se = e.getFunctionFlags(pe), J = ye(pe); + var si = E.updateFunctionDeclaration(pe, void 0, se & 1 ? e.visitNodes(pe.modifiers, L, e.isModifier) : pe.modifiers, se & 2 ? void 0 : pe.asteriskToken, pe.name, void 0, e.visitParameterList(pe.parameters, we, B), void 0, se & 2 && se & 1 ? Ne(pe) : n(pe)); + return se = or, J = qr, si; + } + function Br(pe) { + var or = se, qr = J; + se = e.getFunctionFlags(pe), J = ye(pe); + var si = E.updateArrowFunction(pe, pe.modifiers, void 0, e.visitParameterList(pe.parameters, we, B), void 0, pe.equalsGreaterThanToken, n(pe)); + return se = or, J = qr, si; + } + function Er(pe) { + var or = se, qr = J; + se = e.getFunctionFlags(pe), J = ye(pe); + var si = E.updateFunctionExpression(pe, se & 1 ? e.visitNodes(pe.modifiers, L, e.isModifier) : pe.modifiers, se & 2 ? void 0 : pe.asteriskToken, pe.name, void 0, e.visitParameterList(pe.parameters, we, B), void 0, se & 2 && se & 1 ? Ne(pe) : n(pe)); + return se = or, J = qr, si; + } + function Ne(pe) { + le(); + var or = [], qr = E.copyPrologue(pe.body.statements, or, false, y); + lr(or, pe); + var si = ve, Di = ee; + ve = new e.Set(), ee = false; + var wi = E.createReturnStatement(Q().createAsyncGeneratorHelper(E.createFunctionExpression(void 0, E.createToken(41), pe.name && E.getGeneratedNameForNode(pe.name), void 0, [], void 0, E.updateBlock(pe.body, e.visitLexicalEnvironment(pe.body.statements, y, B, qr))), !!(R & 1))), Xi = oe >= 2 && m.getNodeCheckFlags(pe) & 6144; + if (Xi) { + be(); + var et = e.createSuperAccessVariableStatement(E, m, pe, ve); + he[e.getNodeId(et)] = true, e.insertStatementsAfterStandardPrologue(or, [et]); + } + or.push(wi), e.insertStatementsAfterStandardPrologue(or, N()); + var Gi = E.updateBlock(pe.body, or); + return Xi && ee && (m.getNodeCheckFlags(pe) & 4096 ? e.addEmitHelper(Gi, e.advancedAsyncSuperHelper) : m.getNodeCheckFlags(pe) & 2048 && e.addEmitHelper(Gi, e.asyncSuperHelper)), ve = si, ee = Di, Gi; + } + function n(pe) { + var or; + le(); + var qr = 0, si = [], Di = (or = e.visitNode(pe.body, y, e.isConciseBody)) !== null && or !== void 0 ? or : E.createBlock([]); + e.isBlock(Di) && (qr = E.copyPrologue(Di.statements, si, false, y)), e.addRange(si, lr(void 0, pe)); + var wi = N(); + if (qr > 0 || e.some(si) || e.some(wi)) { + var Xi = E.converters.convertToFunctionBlock(Di, true); + return e.insertStatementsAfterStandardPrologue(si, wi), e.addRange(si, Xi.statements.slice(qr)), E.updateBlock(Xi, e.setTextRange(E.createNodeArray(si), Xi.statements)); + } + return Di; + } + function lr(pe, or) { + for (var qr = false, si = 0, Di = or.parameters; si < Di.length; si++) { + var wi = Di[si]; + if (qr) { + if (e.isBindingPattern(wi.name)) { + if (wi.name.elements.length > 0) { + var Xi = e.flattenDestructuringBinding(wi, y, B, 0, E.getGeneratedNameForNode(wi)); + if (e.some(Xi)) { + var et = E.createVariableDeclarationList(Xi), Gi = E.createVariableStatement(void 0, et); + e.setEmitFlags(Gi, 1048576), pe = e.append(pe, Gi); + } + } else if (wi.initializer) { + var Wt = E.getGeneratedNameForNode(wi), Zt = e.visitNode(wi.initializer, y, e.isExpression), _r = E.createAssignment(Wt, Zt), Gi = E.createExpressionStatement(_r); + e.setEmitFlags(Gi, 1048576), pe = e.append(pe, Gi); + } + } else if (wi.initializer) { + var Wt = E.cloneNode(wi.name); + e.setTextRange(Wt, wi.name), e.setEmitFlags(Wt, 48); + var Zt = e.visitNode(wi.initializer, y, e.isExpression); + e.addEmitFlags(Zt, 1584); + var _r = E.createAssignment(Wt, Zt); + e.setTextRange(_r, wi), e.setEmitFlags(_r, 1536); + var pi = E.createBlock([E.createExpressionStatement(_r)]); + e.setTextRange(pi, wi), e.setEmitFlags(pi, 1953); + var ae = E.createTypeCheck(E.cloneNode(wi.name), "undefined"), Gi = E.createIfStatement(ae, pi); + e.startOnNewLine(Gi), e.setTextRange(Gi, wi), e.setEmitFlags(Gi, 1050528), pe = e.append(pe, Gi); + } + } else if (wi.transformFlags & 32768) { + qr = true; + var Xi = e.flattenDestructuringBinding(wi, y, B, 1, E.getGeneratedNameForNode(wi), false, true); + if (e.some(Xi)) { + var et = E.createVariableDeclarationList(Xi), Gi = E.createVariableStatement(void 0, et); + e.setEmitFlags(Gi, 1048576), pe = e.append(pe, Gi); + } + } + } + return pe; + } + function be() { + (b & 1) === 0 && (b |= 1, B.enableSubstitution(208), B.enableSubstitution(206), B.enableSubstitution(207), B.enableEmitNotification(257), B.enableEmitNotification(169), B.enableEmitNotification(172), B.enableEmitNotification(173), B.enableEmitNotification(171), B.enableEmitNotification(237)); + } + function Ge(pe, or, qr) { + if (b & 1 && ii(or)) { + var si = m.getNodeCheckFlags(or) & 6144; + if (si !== ie) { + var Di = ie; + ie = si, f(pe, or, qr), ie = Di; + return; + } + } else if (b && he[e.getNodeId(or)]) { + var Di = ie; + ie = 0, f(pe, or, qr), ie = Di; + return; + } + f(pe, or, qr); + } + function ur(pe, or) { + return or = T(pe, or), pe === 1 && ie ? yr(or) : or; + } + function yr(pe) { + switch (pe.kind) { + case 206: + return Ir(pe); + case 207: + return wr(pe); + case 208: + return Ur(pe); + } + return pe; + } + function Ir(pe) { + return pe.expression.kind === 106 ? e.setTextRange(E.createPropertyAccessExpression(E.createUniqueName("_super", 48), pe.name), pe) : pe; + } + function wr(pe) { + return pe.expression.kind === 106 ? mi(pe.argumentExpression, pe) : pe; + } + function Ur(pe) { + var or = pe.expression; + if (e.isSuperProperty(or)) { + var qr = e.isPropertyAccessExpression(or) ? Ir(or) : wr(or); + return E.createCallExpression(E.createPropertyAccessExpression(qr, "call"), void 0, Ve([E.createThis()], pe.arguments, true)); + } + return pe; + } + function ii(pe) { + var or = pe.kind; + return or === 257 || or === 171 || or === 169 || or === 172 || or === 173; + } + function mi(pe, or) { + return ie & 4096 ? e.setTextRange(E.createPropertyAccessExpression(E.createCallExpression(E.createIdentifier("_superIndex"), void 0, [pe]), "value"), or) : e.setTextRange(E.createCallExpression(E.createIdentifier("_superIndex"), void 0, [pe]), or); + } + } + e.transformES2018 = w; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.factory; + return e.chainBundle(C, B); + function B(le) { + return le.isDeclarationFile ? le : e.visitEachChild(le, E, C); + } + function E(le) { + if ((le.transformFlags & 64) === 0) + return le; + switch (le.kind) { + case 292: + return Q(le); + default: + return e.visitEachChild(le, E, C); + } + } + function Q(le) { + return le.variableDeclaration ? e.visitEachChild(le, E, C) : w.updateCatchClause(le, w.createVariableDeclaration(w.createTempVariable(void 0)), e.visitNode(le.block, E, e.isBlock)); + } + } + e.transformES2019 = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.factory, B = C.hoistVariableDeclaration; + return e.chainBundle(C, E); + function E(b) { + return b.isDeclarationFile ? b : e.visitEachChild(b, Q, C); + } + function Q(b) { + if ((b.transformFlags & 32) === 0) + return b; + switch (b.kind) { + case 208: { + var se = m(b, false); + return e.Debug.assertNotNode(se, e.isSyntheticReference), se; + } + case 206: + case 207: + if (e.isOptionalChain(b)) { + var se = oe(b, false, false); + return e.Debug.assertNotNode(se, e.isSyntheticReference), se; + } + return e.visitEachChild(b, Q, C); + case 221: + return b.operatorToken.kind === 60 ? T(b) : e.visitEachChild(b, Q, C); + case 215: + return K(b); + default: + return e.visitEachChild(b, Q, C); + } + } + function le(b) { + e.Debug.assertNotNode(b, e.isNonNullChain); + for (var se = [b]; !b.questionDotToken && !e.isTaggedTemplateExpression(b); ) + b = e.cast(e.skipPartiallyEmittedExpressions(b.expression), e.isOptionalChain), e.Debug.assertNotNode(b, e.isNonNullChain), se.unshift(b); + return { expression: b.expression, chain: se }; + } + function N(b, se, J) { + var ie = G(b.expression, se, J); + return e.isSyntheticReference(ie) ? w.createSyntheticReferenceExpression(w.updateParenthesizedExpression(b, ie.expression), ie.thisArg) : w.updateParenthesizedExpression(b, ie); + } + function p(b, se, J) { + if (e.isOptionalChain(b)) + return oe(b, se, J); + var ie = e.visitNode(b.expression, Q, e.isExpression); + e.Debug.assertNotNode(ie, e.isSyntheticReference); + var R; + return se && (e.isSimpleCopiableExpression(ie) ? R = ie : (R = w.createTempVariable(B), ie = w.createAssignment(R, ie))), ie = b.kind === 206 ? w.updatePropertyAccessExpression(b, ie, e.visitNode(b.name, Q, e.isIdentifier)) : w.updateElementAccessExpression(b, ie, e.visitNode(b.argumentExpression, Q, e.isExpression)), R ? w.createSyntheticReferenceExpression(ie, R) : ie; + } + function m(b, se) { + if (e.isOptionalChain(b)) + return oe(b, se, false); + if (e.isParenthesizedExpression(b.expression) && e.isOptionalChain(e.skipParentheses(b.expression))) { + var J = N(b.expression, true, false), ie = e.visitNodes(b.arguments, Q, e.isExpression); + return e.isSyntheticReference(J) ? e.setTextRange(w.createFunctionCallCall(J.expression, J.thisArg, ie), b) : w.updateCallExpression(b, J, void 0, ie); + } + return e.visitEachChild(b, Q, C); + } + function G(b, se, J) { + switch (b.kind) { + case 212: + return N(b, se, J); + case 206: + case 207: + return p(b, se, J); + case 208: + return m(b, se); + default: + return e.visitNode(b, Q, e.isExpression); + } + } + function oe(b, se, J) { + var ie = le(b), R = ie.expression, q = ie.chain, O = G(e.skipPartiallyEmittedExpressions(R), e.isCallChain(q[0]), false), ve = e.isSyntheticReference(O) ? O.thisArg : void 0, ee = e.isSyntheticReference(O) ? O.expression : O, he = w.restoreOuterExpressions(R, ee, 8); + e.isSimpleCopiableExpression(ee) || (ee = w.createTempVariable(B), he = w.createAssignment(ee, he)); + for (var F = ee, x, X = 0; X < q.length; X++) { + var $ = q[X]; + switch ($.kind) { + case 206: + case 207: + X === q.length - 1 && se && (e.isSimpleCopiableExpression(F) ? x = F : (x = w.createTempVariable(B), F = w.createAssignment(x, F))), F = $.kind === 206 ? w.createPropertyAccessExpression(F, e.visitNode($.name, Q, e.isIdentifier)) : w.createElementAccessExpression(F, e.visitNode($.argumentExpression, Q, e.isExpression)); + break; + case 208: + X === 0 && ve ? (e.isGeneratedIdentifier(ve) || (ve = w.cloneNode(ve), e.addEmitFlags(ve, 1536)), F = w.createFunctionCallCall(F, ve.kind === 106 ? w.createThis() : ve, e.visitNodes($.arguments, Q, e.isExpression))) : F = w.createCallExpression(F, void 0, e.visitNodes($.arguments, Q, e.isExpression)); + break; + } + e.setOriginalNode(F, $); + } + var A = J ? w.createConditionalExpression(f(he, ee, true), void 0, w.createTrue(), void 0, w.createDeleteExpression(F)) : w.createConditionalExpression(f(he, ee, true), void 0, w.createVoidZero(), void 0, F); + return e.setTextRange(A, b), x ? w.createSyntheticReferenceExpression(A, x) : A; + } + function f(b, se, J) { + return w.createBinaryExpression(w.createBinaryExpression(b, w.createToken(J ? 36 : 37), w.createNull()), w.createToken(J ? 56 : 55), w.createBinaryExpression(se, w.createToken(J ? 36 : 37), w.createVoidZero())); + } + function T(b) { + var se = e.visitNode(b.left, Q, e.isExpression), J = se; + return e.isSimpleCopiableExpression(se) || (J = w.createTempVariable(B), se = w.createAssignment(J, se)), e.setTextRange(w.createConditionalExpression(f(se, J), void 0, J, void 0, e.visitNode(b.right, Q, e.isExpression)), b); + } + function K(b) { + return e.isOptionalChain(e.skipParentheses(b.expression)) ? e.setOriginalNode(G(b.expression, false, true), b) : w.updateDeleteExpression(b, e.visitNode(b.expression, Q, e.isExpression)); + } + } + e.transformES2020 = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.hoistVariableDeclaration, B = C.factory; + return e.chainBundle(C, E); + function E(N) { + return N.isDeclarationFile ? N : e.visitEachChild(N, Q, C); + } + function Q(N) { + if ((N.transformFlags & 16) === 0) + return N; + switch (N.kind) { + case 221: + var p = N; + if (e.isLogicalOrCoalescingAssignmentExpression(p)) + return le(p); + default: + return e.visitEachChild(N, Q, C); + } + } + function le(N) { + var p = N.operatorToken, m = e.getNonAssignmentOperatorForCompoundAssignment(p.kind), G = e.skipParentheses(e.visitNode(N.left, Q, e.isLeftHandSideExpression)), oe = G, f = e.skipParentheses(e.visitNode(N.right, Q, e.isExpression)); + if (e.isAccessExpression(G)) { + var T = e.isSimpleCopiableExpression(G.expression), K = T ? G.expression : B.createTempVariable(w), b = T ? G.expression : B.createAssignment(K, G.expression); + if (e.isPropertyAccessExpression(G)) + oe = B.createPropertyAccessExpression(K, G.name), G = B.createPropertyAccessExpression(b, G.name); + else { + var se = e.isSimpleCopiableExpression(G.argumentExpression), J = se ? G.argumentExpression : B.createTempVariable(w); + oe = B.createElementAccessExpression(K, J), G = B.createElementAccessExpression(b, se ? G.argumentExpression : B.createAssignment(J, G.argumentExpression)); + } + } + return B.createBinaryExpression(G, m, B.createParenthesizedExpression(B.createAssignment(oe, f))); + } + } + e.transformES2021 = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + return e.chainBundle(C, w); + function w(E) { + return E.isDeclarationFile ? E : e.visitEachChild(E, B, C); + } + function B(E) { + if ((E.transformFlags & 4) === 0) + return E; + switch (E.kind) { + default: + return e.visitEachChild(E, B, C); + } + } + } + e.transformESNext = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(w) { + var B = w.factory, E = w.getEmitHelperFactory, Q = w.getCompilerOptions(), le, N; + return e.chainBundle(w, T); + function p() { + if (N.filenameDeclaration) + return N.filenameDeclaration.name; + var g = B.createVariableDeclaration(B.createUniqueName("_jsxFileName", 48), void 0, void 0, B.createStringLiteral(le.fileName)); + return N.filenameDeclaration = g, N.filenameDeclaration.name; + } + function m(g) { + return Q.jsx === 5 ? "jsxDEV" : g ? "jsxs" : "jsx"; + } + function G(g) { + var ne = m(g); + return f(ne); + } + function oe() { + return f("Fragment"); + } + function f(g) { + var ne, ue, We = g === "createElement" ? N.importSpecifier : e.getJSXRuntimeImport(N.importSpecifier, Q), Fe = (ue = (ne = N.utilizedImplicitRuntimeImports) === null || ne === void 0 ? void 0 : ne.get(We)) === null || ue === void 0 ? void 0 : ue.get(g); + if (Fe) + return Fe.name; + N.utilizedImplicitRuntimeImports || (N.utilizedImplicitRuntimeImports = new e.Map()); + var Z = N.utilizedImplicitRuntimeImports.get(We); + Z || (Z = new e.Map(), N.utilizedImplicitRuntimeImports.set(We, Z)); + var Be = B.createUniqueName("_".concat(g), 112), ge = B.createImportSpecifier(false, B.createIdentifier(g), Be); + return Be.generatedImportReference = ge, Z.set(g, ge), Be; + } + function T(g) { + if (g.isDeclarationFile) + return g; + le = g, N = {}, N.importSpecifier = e.getJSXImplicitImportBase(Q, g); + var ne = e.visitEachChild(g, K, w); + e.addEmitHelpers(ne, w.readEmitHelpers()); + var ue = ne.statements; + if (N.filenameDeclaration && (ue = e.insertStatementAfterCustomPrologue(ue.slice(), B.createVariableStatement(void 0, B.createVariableDeclarationList([N.filenameDeclaration], 2)))), N.utilizedImplicitRuntimeImports) + for (var We = 0, Fe = e.arrayFrom(N.utilizedImplicitRuntimeImports.entries()); We < Fe.length; We++) { + var Z = Fe[We], Be = Z[0], ge = Z[1]; + if (e.isExternalModule(g)) { + var Re = B.createImportDeclaration(void 0, void 0, B.createImportClause(false, void 0, B.createNamedImports(e.arrayFrom(ge.values()))), B.createStringLiteral(Be), void 0); + e.setParentRecursive(Re, false), ue = e.insertStatementAfterCustomPrologue(ue.slice(), Re); + } else if (e.isExternalOrCommonJsModule(g)) { + var ze = B.createVariableStatement(void 0, B.createVariableDeclarationList([B.createVariableDeclaration(B.createObjectBindingPattern(e.map(e.arrayFrom(ge.values()), function(Ee) { + return B.createBindingElement(void 0, Ee.propertyName, Ee.name); + })), void 0, void 0, B.createCallExpression(B.createIdentifier("require"), void 0, [B.createStringLiteral(Be)]))], 2)); + e.setParentRecursive(ze, false), ue = e.insertStatementAfterCustomPrologue(ue.slice(), ze); + } + } + return ue !== ne.statements && (ne = B.updateSourceFile(ne, ue)), N = void 0, ne; + } + function K(g) { + return g.transformFlags & 2 ? b(g) : g; + } + function b(g) { + switch (g.kind) { + case 278: + return R(g, false); + case 279: + return q(g, false); + case 282: + return O(g, false); + case 288: + return fe(g); + default: + return e.visitEachChild(g, K, w); + } + } + function se(g) { + switch (g.kind) { + case 11: + return U(g); + case 288: + return fe(g); + case 278: + return R(g, true); + case 279: + return q(g, true); + case 282: + return O(g, true); + default: + return e.Debug.failBadSyntaxKind(g); + } + } + function J(g) { + for (var ne = false, ue = 0, We = g.attributes.properties; ue < We.length; ue++) { + var Fe = We[ue]; + if (e.isJsxSpreadAttribute(Fe)) + ne = true; + else if (ne && e.isJsxAttribute(Fe) && Fe.name.escapedText === "key") + return true; + } + return false; + } + function ie(g) { + return N.importSpecifier === void 0 || J(g); + } + function R(g, ne) { + var ue = ie(g.openingElement) ? x : he; + return ue(g.openingElement, g.children, ne, g); + } + function q(g, ne) { + var ue = ie(g) ? x : he; + return ue(g, void 0, ne, g); + } + function O(g, ne) { + var ue = N.importSpecifier === void 0 ? $ : X; + return ue(g.openingFragment, g.children, ne, g); + } + function ve(g) { + var ne = ee(g); + return ne && B.createObjectLiteralExpression([ne]); + } + function ee(g) { + var ne = e.getSemanticJsxChildren(g); + if (e.length(ne) === 1 && !ne[0].dotDotDotToken) { + var ue = se(ne[0]); + return ue && B.createPropertyAssignment("children", ue); + } + var We = e.mapDefined(g, se); + return e.length(We) ? B.createPropertyAssignment("children", B.createArrayLiteralExpression(We)) : void 0; + } + function he(g, ne, ue, We) { + var Fe = d(g), Z = ne && ne.length ? ee(ne) : void 0, Be = e.find(g.attributes.properties, function(ze) { + return !!ze.name && e.isIdentifier(ze.name) && ze.name.escapedText === "key"; + }), ge = Be ? e.filter(g.attributes.properties, function(ze) { + return ze !== Be; + }) : g.attributes.properties, Re = e.length(ge) ? y(ge, Z) : B.createObjectLiteralExpression(Z ? [Z] : e.emptyArray); + return F(Fe, Re, Be, ne || e.emptyArray, ue, We); + } + function F(g, ne, ue, We, Fe, Z) { + var Be, ge = e.getSemanticJsxChildren(We), Re = e.length(ge) > 1 || !!(!((Be = ge[0]) === null || Be === void 0) && Be.dotDotDotToken), ze = [g, ne]; + if (ue && ze.push(Y(ue.initializer)), Q.jsx === 5) { + var Ee = e.getOriginalNode(le); + if (Ee && e.isSourceFile(Ee)) { + ue === void 0 && ze.push(B.createVoidZero()), ze.push(Re ? B.createTrue() : B.createFalse()); + var He = e.getLineAndCharacterOfPosition(Ee, Z.pos); + ze.push(B.createObjectLiteralExpression([B.createPropertyAssignment("fileName", p()), B.createPropertyAssignment("lineNumber", B.createNumericLiteral(He.line + 1)), B.createPropertyAssignment("columnNumber", B.createNumericLiteral(He.character + 1))])), ze.push(B.createThis()); + } + } + var rr = e.setTextRange(B.createCallExpression(G(Re), void 0, ze), Z); + return Fe && e.startOnNewLine(rr), rr; + } + function x(g, ne, ue, We) { + var Fe = d(g), Z = g.attributes.properties, Be = e.length(Z) ? y(Z) : B.createNull(), ge = N.importSpecifier === void 0 ? e.createJsxFactoryExpression(B, w.getEmitResolver().getJsxFactoryEntity(le), Q.reactNamespace, g) : f("createElement"), Re = e.createExpressionForJsxElement(B, ge, Fe, Be, e.mapDefined(ne, se), We); + return ue && e.startOnNewLine(Re), Re; + } + function X(g, ne, ue, We) { + var Fe; + if (ne && ne.length) { + var Z = ve(ne); + Z && (Fe = Z); + } + return F(oe(), Fe || B.createObjectLiteralExpression([]), void 0, ne, ue, We); + } + function $(g, ne, ue, We) { + var Fe = e.createExpressionForJsxFragment(B, w.getEmitResolver().getJsxFactoryEntity(le), w.getEmitResolver().getJsxFragmentFactoryEntity(le), Q.reactNamespace, e.mapDefined(ne, se), g, We); + return ue && e.startOnNewLine(Fe), Fe; + } + function A(g) { + return B.createSpreadAssignment(e.visitNode(g.expression, K, e.isExpression)); + } + function y(g, ne) { + var ue = e.getEmitScriptTarget(Q); + return ue && ue >= 5 ? B.createObjectLiteralExpression(V(g, ne)) : L(g, ne); + } + function V(g, ne) { + var ue = e.flatten(e.spanMap(g, e.isJsxSpreadAttribute, function(We, Fe) { + return e.map(We, function(Z) { + return Fe ? A(Z) : k(Z); + }); + })); + return ne && ue.push(ne), ue; + } + function L(g, ne) { + var ue = e.flatten(e.spanMap(g, e.isJsxSpreadAttribute, function(We, Fe) { + return Fe ? e.map(We, P) : B.createObjectLiteralExpression(e.map(We, k)); + })); + return e.isJsxSpreadAttribute(g[0]) && ue.unshift(B.createObjectLiteralExpression()), ne && ue.push(B.createObjectLiteralExpression([ne])), e.singleOrUndefined(ue) || E().createAssignHelper(ue); + } + function P(g) { + return e.visitNode(g.expression, K, e.isExpression); + } + function k(g) { + var ne = D(g), ue = Y(g.initializer); + return B.createPropertyAssignment(ne, ue); + } + function Y(g) { + if (g === void 0) + return B.createTrue(); + if (g.kind === 10) { + var ne = g.singleQuote !== void 0 ? g.singleQuote : !e.isStringDoubleQuoted(g, le), ue = B.createStringLiteral(l(g.text) || g.text, ne); + return e.setTextRange(ue, g); + } else + return g.kind === 288 ? g.expression === void 0 ? B.createTrue() : e.visitNode(g.expression, K, e.isExpression) : e.Debug.failBadSyntaxKind(g); + } + function U(g) { + var ne = j(g.text); + return ne === void 0 ? void 0 : B.createStringLiteral(ne); + } + function j(g) { + for (var ne, ue = 0, We = -1, Fe = 0; Fe < g.length; Fe++) { + var Z = g.charCodeAt(Fe); + e.isLineBreak(Z) ? (ue !== -1 && We !== -1 && (ne = H(ne, g.substr(ue, We - ue + 1))), ue = -1) : e.isWhiteSpaceSingleLine(Z) || (We = Fe, ue === -1 && (ue = Fe)); + } + return ue !== -1 ? H(ne, g.substr(ue)) : ne; + } + function H(g, ne) { + var ue = I(ne); + return g === void 0 ? ue : g + " " + ue; + } + function I(g) { + return g.replace(/&((#((\d+)|x([\da-fA-F]+)))|(\w+));/g, function(ne, ue, We, Fe, Z, Be, ge) { + if (Z) + return e.utf16EncodeAsString(parseInt(Z, 10)); + if (Be) + return e.utf16EncodeAsString(parseInt(Be, 16)); + var Re = C.get(ge); + return Re ? e.utf16EncodeAsString(Re) : ne; + }); + } + function l(g) { + var ne = I(g); + return ne === g ? void 0 : ne; + } + function d(g) { + if (g.kind === 278) + return d(g.openingElement); + var ne = g.tagName; + return e.isIdentifier(ne) && e.isIntrinsicJsxName(ne.escapedText) ? B.createStringLiteral(e.idText(ne)) : e.createExpressionFromEntityName(B, ne); + } + function D(g) { + var ne = g.name, ue = e.idText(ne); + return /^[A-Za-z_]\w*$/.test(ue) ? ne : B.createStringLiteral(ue); + } + function fe(g) { + var ne = e.visitNode(g.expression, K, e.isExpression); + return g.dotDotDotToken ? B.createSpreadElement(ne) : ne; + } + } + e.transformJsx = a; + var C = new e.Map(e.getEntries({ quot: 34, amp: 38, apos: 39, lt: 60, gt: 62, nbsp: 160, iexcl: 161, cent: 162, pound: 163, curren: 164, yen: 165, brvbar: 166, sect: 167, uml: 168, copy: 169, ordf: 170, laquo: 171, not: 172, shy: 173, reg: 174, macr: 175, deg: 176, plusmn: 177, sup2: 178, sup3: 179, acute: 180, micro: 181, para: 182, middot: 183, cedil: 184, sup1: 185, ordm: 186, raquo: 187, frac14: 188, frac12: 189, frac34: 190, iquest: 191, Agrave: 192, Aacute: 193, Acirc: 194, Atilde: 195, Auml: 196, Aring: 197, AElig: 198, Ccedil: 199, Egrave: 200, Eacute: 201, Ecirc: 202, Euml: 203, Igrave: 204, Iacute: 205, Icirc: 206, Iuml: 207, ETH: 208, Ntilde: 209, Ograve: 210, Oacute: 211, Ocirc: 212, Otilde: 213, Ouml: 214, times: 215, Oslash: 216, Ugrave: 217, Uacute: 218, Ucirc: 219, Uuml: 220, Yacute: 221, THORN: 222, szlig: 223, agrave: 224, aacute: 225, acirc: 226, atilde: 227, auml: 228, aring: 229, aelig: 230, ccedil: 231, egrave: 232, eacute: 233, ecirc: 234, euml: 235, igrave: 236, iacute: 237, icirc: 238, iuml: 239, eth: 240, ntilde: 241, ograve: 242, oacute: 243, ocirc: 244, otilde: 245, ouml: 246, divide: 247, oslash: 248, ugrave: 249, uacute: 250, ucirc: 251, uuml: 252, yacute: 253, thorn: 254, yuml: 255, OElig: 338, oelig: 339, Scaron: 352, scaron: 353, Yuml: 376, fnof: 402, circ: 710, tilde: 732, Alpha: 913, Beta: 914, Gamma: 915, Delta: 916, Epsilon: 917, Zeta: 918, Eta: 919, Theta: 920, Iota: 921, Kappa: 922, Lambda: 923, Mu: 924, Nu: 925, Xi: 926, Omicron: 927, Pi: 928, Rho: 929, Sigma: 931, Tau: 932, Upsilon: 933, Phi: 934, Chi: 935, Psi: 936, Omega: 937, alpha: 945, beta: 946, gamma: 947, delta: 948, epsilon: 949, zeta: 950, eta: 951, theta: 952, iota: 953, kappa: 954, lambda: 955, mu: 956, nu: 957, xi: 958, omicron: 959, pi: 960, rho: 961, sigmaf: 962, sigma: 963, tau: 964, upsilon: 965, phi: 966, chi: 967, psi: 968, omega: 969, thetasym: 977, upsih: 978, piv: 982, ensp: 8194, emsp: 8195, thinsp: 8201, zwnj: 8204, zwj: 8205, lrm: 8206, rlm: 8207, ndash: 8211, mdash: 8212, lsquo: 8216, rsquo: 8217, sbquo: 8218, ldquo: 8220, rdquo: 8221, bdquo: 8222, dagger: 8224, Dagger: 8225, bull: 8226, hellip: 8230, permil: 8240, prime: 8242, Prime: 8243, lsaquo: 8249, rsaquo: 8250, oline: 8254, frasl: 8260, euro: 8364, image: 8465, weierp: 8472, real: 8476, trade: 8482, alefsym: 8501, larr: 8592, uarr: 8593, rarr: 8594, darr: 8595, harr: 8596, crarr: 8629, lArr: 8656, uArr: 8657, rArr: 8658, dArr: 8659, hArr: 8660, forall: 8704, part: 8706, exist: 8707, empty: 8709, nabla: 8711, isin: 8712, notin: 8713, ni: 8715, prod: 8719, sum: 8721, minus: 8722, lowast: 8727, radic: 8730, prop: 8733, infin: 8734, ang: 8736, and: 8743, or: 8744, cap: 8745, cup: 8746, int: 8747, there4: 8756, sim: 8764, cong: 8773, asymp: 8776, ne: 8800, equiv: 8801, le: 8804, ge: 8805, sub: 8834, sup: 8835, nsub: 8836, sube: 8838, supe: 8839, oplus: 8853, otimes: 8855, perp: 8869, sdot: 8901, lceil: 8968, rceil: 8969, lfloor: 8970, rfloor: 8971, lang: 9001, rang: 9002, loz: 9674, spades: 9824, clubs: 9827, hearts: 9829, diams: 9830 })); + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.factory, B = C.hoistVariableDeclaration; + return e.chainBundle(C, E); + function E(m) { + return m.isDeclarationFile ? m : e.visitEachChild(m, Q, C); + } + function Q(m) { + if ((m.transformFlags & 512) === 0) + return m; + switch (m.kind) { + case 221: + return le(m); + default: + return e.visitEachChild(m, Q, C); + } + } + function le(m) { + switch (m.operatorToken.kind) { + case 67: + return N(m); + case 42: + return p(m); + default: + return e.visitEachChild(m, Q, C); + } + } + function N(m) { + var G, oe, f = e.visitNode(m.left, Q, e.isExpression), T = e.visitNode(m.right, Q, e.isExpression); + if (e.isElementAccessExpression(f)) { + var K = w.createTempVariable(B), b = w.createTempVariable(B); + G = e.setTextRange(w.createElementAccessExpression(e.setTextRange(w.createAssignment(K, f.expression), f.expression), e.setTextRange(w.createAssignment(b, f.argumentExpression), f.argumentExpression)), f), oe = e.setTextRange(w.createElementAccessExpression(K, b), f); + } else if (e.isPropertyAccessExpression(f)) { + var K = w.createTempVariable(B); + G = e.setTextRange(w.createPropertyAccessExpression(e.setTextRange(w.createAssignment(K, f.expression), f.expression), f.name), f), oe = e.setTextRange(w.createPropertyAccessExpression(K, f.name), f); + } else + G = f, oe = f; + return e.setTextRange(w.createAssignment(G, e.setTextRange(w.createGlobalMethodCall("Math", "pow", [oe, T]), m)), m); + } + function p(m) { + var G = e.visitNode(m.left, Q, e.isExpression), oe = e.visitNode(m.right, Q, e.isExpression); + return e.setTextRange(w.createGlobalMethodCall("Math", "pow", [G, oe]), m); + } + } + e.transformES2016 = a; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(p) { + p[p.CapturedThis = 1] = "CapturedThis", p[p.BlockScopedBindings = 2] = "BlockScopedBindings"; + })(a || (a = {})); + var C; + (function(p) { + p[p.Body = 1] = "Body", p[p.Initializer = 2] = "Initializer"; + })(C || (C = {})); + var w; + (function(p) { + p[p.ToOriginal = 0] = "ToOriginal", p[p.ToOutParameter = 1] = "ToOutParameter"; + })(w || (w = {})); + var B; + (function(p) { + p[p.Break = 2] = "Break", p[p.Continue = 4] = "Continue", p[p.Return = 8] = "Return"; + })(B || (B = {})); + var E; + (function(p) { + p[p.None = 0] = "None", p[p.Function = 1] = "Function", p[p.ArrowFunction = 2] = "ArrowFunction", p[p.AsyncFunctionBody = 4] = "AsyncFunctionBody", p[p.NonStaticClassElement = 8] = "NonStaticClassElement", p[p.CapturesThis = 16] = "CapturesThis", p[p.ExportedVariableStatement = 32] = "ExportedVariableStatement", p[p.TopLevel = 64] = "TopLevel", p[p.Block = 128] = "Block", p[p.IterationStatement = 256] = "IterationStatement", p[p.IterationStatementBlock = 512] = "IterationStatementBlock", p[p.IterationContainer = 1024] = "IterationContainer", p[p.ForStatement = 2048] = "ForStatement", p[p.ForInOrForOfStatement = 4096] = "ForInOrForOfStatement", p[p.ConstructorWithCapturedSuper = 8192] = "ConstructorWithCapturedSuper", p[p.StaticInitializer = 16384] = "StaticInitializer", p[p.AncestorFactsMask = 32767] = "AncestorFactsMask", p[p.BlockScopeIncludes = 0] = "BlockScopeIncludes", p[p.BlockScopeExcludes = 7104] = "BlockScopeExcludes", p[p.SourceFileIncludes = 64] = "SourceFileIncludes", p[p.SourceFileExcludes = 8064] = "SourceFileExcludes", p[p.FunctionIncludes = 65] = "FunctionIncludes", p[p.FunctionExcludes = 32670] = "FunctionExcludes", p[p.AsyncFunctionBodyIncludes = 69] = "AsyncFunctionBodyIncludes", p[p.AsyncFunctionBodyExcludes = 32662] = "AsyncFunctionBodyExcludes", p[p.ArrowFunctionIncludes = 66] = "ArrowFunctionIncludes", p[p.ArrowFunctionExcludes = 15232] = "ArrowFunctionExcludes", p[p.ConstructorIncludes = 73] = "ConstructorIncludes", p[p.ConstructorExcludes = 32662] = "ConstructorExcludes", p[p.DoOrWhileStatementIncludes = 1280] = "DoOrWhileStatementIncludes", p[p.DoOrWhileStatementExcludes = 0] = "DoOrWhileStatementExcludes", p[p.ForStatementIncludes = 3328] = "ForStatementIncludes", p[p.ForStatementExcludes = 5056] = "ForStatementExcludes", p[p.ForInOrForOfStatementIncludes = 5376] = "ForInOrForOfStatementIncludes", p[p.ForInOrForOfStatementExcludes = 3008] = "ForInOrForOfStatementExcludes", p[p.BlockIncludes = 128] = "BlockIncludes", p[p.BlockExcludes = 6976] = "BlockExcludes", p[p.IterationStatementBlockIncludes = 512] = "IterationStatementBlockIncludes", p[p.IterationStatementBlockExcludes = 7104] = "IterationStatementBlockExcludes", p[p.StaticInitializerIncludes = 16449] = "StaticInitializerIncludes", p[p.StaticInitializerExcludes = 32670] = "StaticInitializerExcludes", p[p.NewTarget = 32768] = "NewTarget", p[p.CapturedLexicalThis = 65536] = "CapturedLexicalThis", p[p.SubtreeFactsMask = -32768] = "SubtreeFactsMask", p[p.ArrowFunctionSubtreeExcludes = 0] = "ArrowFunctionSubtreeExcludes", p[p.FunctionSubtreeExcludes = 98304] = "FunctionSubtreeExcludes"; + })(E || (E = {})); + var Q; + (function(p) { + p[p.None = 0] = "None", p[p.UnpackedSpread = 1] = "UnpackedSpread", p[p.PackedSpread = 2] = "PackedSpread"; + })(Q || (Q = {})); + function le(p, m) { + return { kind: p, expression: m }; + } + function N(p) { + var m = p.factory, G = p.getEmitHelperFactory, oe = p.startLexicalEnvironment, f = p.resumeLexicalEnvironment, T = p.endLexicalEnvironment, K = p.hoistVariableDeclaration, b = p.getCompilerOptions(), se = p.getEmitResolver(), J = p.onSubstituteNode, ie = p.onEmitNode; + p.onEmitNode = to, p.onSubstituteNode = Oo; + var R, q, O, ve; + function ee(Qe) { + ve = e.append(ve, m.createVariableDeclaration(Qe)); + } + var he, F; + return e.chainBundle(p, x); + function x(Qe) { + if (Qe.isDeclarationFile) + return Qe; + R = Qe, q = Qe.text; + var Gr = j(Qe); + return e.addEmitHelpers(Gr, p.readEmitHelpers()), R = void 0, q = void 0, ve = void 0, O = 0, Gr; + } + function X(Qe, Gr) { + var S = O; + return O = (O & ~Qe | Gr) & 32767, S; + } + function $(Qe, Gr, S) { + O = (O & ~Gr | S) & -32768 | Qe; + } + function A(Qe) { + return (O & 8192) !== 0 && Qe.kind === 247 && !Qe.expression; + } + function y(Qe) { + return Qe.transformFlags & 2097152 && (e.isReturnStatement(Qe) || e.isIfStatement(Qe) || e.isWithStatement(Qe) || e.isSwitchStatement(Qe) || e.isCaseBlock(Qe) || e.isCaseClause(Qe) || e.isDefaultClause(Qe) || e.isTryStatement(Qe) || e.isCatchClause(Qe) || e.isLabeledStatement(Qe) || e.isIterationStatement(Qe, false) || e.isBlock(Qe)); + } + function V(Qe) { + return (Qe.transformFlags & 1024) !== 0 || he !== void 0 || O & 8192 && y(Qe) || e.isIterationStatement(Qe, false) && Ue(Qe) || (e.getEmitFlags(Qe) & 33554432) !== 0; + } + function L(Qe) { + return V(Qe) ? U(Qe, false) : Qe; + } + function P(Qe) { + return V(Qe) ? U(Qe, true) : Qe; + } + function k(Qe) { + if (V(Qe)) { + var Gr = e.getOriginalNode(Qe); + if (e.isPropertyDeclaration(Gr) && e.hasStaticModifier(Gr)) { + var S = X(32670, 16449), Ce = U(Qe, false); + return $(S, 98304, 0), Ce; + } + return U(Qe, false); + } + return Qe; + } + function Y(Qe) { + return Qe.kind === 106 ? En(true) : L(Qe); + } + function U(Qe, Gr) { + switch (Qe.kind) { + case 124: + return; + case 257: + return ue(Qe); + case 226: + return We(Qe); + case 164: + return we(Qe); + case 256: + return wr(Qe); + case 214: + return yr(Qe); + case 213: + return Ir(Qe); + case 254: + return Zt(Qe); + case 79: + return g(Qe); + case 255: + return Xi(Qe); + case 249: + return H(Qe); + case 263: + return I(Qe); + case 235: + return mi(Qe, false); + case 246: + case 245: + return ne(Qe); + case 250: + return ae(Qe); + case 240: + case 241: + return ti(Qe, void 0); + case 242: + return Ze(Qe, void 0); + case 243: + return zr(Qe, void 0); + case 244: + return Wr(Qe, void 0); + case 238: + return pe(Qe); + case 205: + return Ar(Qe); + case 292: + return Oi(Qe); + case 297: + return At(Qe); + case 162: + return ba(Qe); + case 204: + return Qa(Qe); + case 208: + return ai(Qe); + case 209: + return pn(Qe); + case 212: + return or(Qe, Gr); + case 221: + return qr(Qe, Gr); + case 351: + return si(Qe, Gr); + case 14: + case 15: + case 16: + case 17: + return eo(Qe); + case 10: + return Rn(Qe); + case 8: + return Da(Qe); + case 210: + return bo(Qe); + case 223: + return Ro(Qe); + case 224: + return $a(Qe); + case 225: + return Pn(Qe); + case 106: + return En(false); + case 108: + return D(Qe); + case 231: + return Wn(Qe); + case 169: + return Vi(Qe); + case 172: + case 173: + return at(Qe); + case 237: + return wi(Qe); + case 247: + return d(Qe); + case 217: + return fe(Qe); + default: + return e.visitEachChild(Qe, L, p); + } + } + function j(Qe) { + var Gr = X(8064, 64), S = [], Ce = []; + oe(); + var qe = m.copyPrologue(Qe.statements, S, false, L); + return e.addRange(Ce, e.visitNodes(Qe.statements, L, e.isStatement, qe)), ve && Ce.push(m.createVariableStatement(void 0, m.createVariableDeclarationList(ve))), m.mergeLexicalEnvironment(S, T()), Ye(S, Qe), $(Gr, 0, 0), m.updateSourceFile(Qe, e.setTextRange(m.createNodeArray(e.concatenate(S, Ce)), Qe.statements)); + } + function H(Qe) { + if (he !== void 0) { + var Gr = he.allowedNonLabeledJumps; + he.allowedNonLabeledJumps |= 2; + var S = e.visitEachChild(Qe, L, p); + return he.allowedNonLabeledJumps = Gr, S; + } + return e.visitEachChild(Qe, L, p); + } + function I(Qe) { + var Gr = X(7104, 0), S = e.visitEachChild(Qe, L, p); + return $(Gr, 0, 0), S; + } + function l(Qe) { + return e.setOriginalNode(m.createReturnStatement(m.createUniqueName("_this", 48)), Qe); + } + function d(Qe) { + return he ? (he.nonLocalJumps |= 8, A(Qe) && (Qe = l(Qe)), m.createReturnStatement(m.createObjectLiteralExpression([m.createPropertyAssignment(m.createIdentifier("value"), Qe.expression ? e.visitNode(Qe.expression, L, e.isExpression) : m.createVoidZero())]))) : A(Qe) ? l(Qe) : e.visitEachChild(Qe, L, p); + } + function D(Qe) { + return O & 2 && !(O & 16384) && (O |= 65536), he ? O & 2 ? (he.containsLexicalThis = true, Qe) : he.thisName || (he.thisName = m.createUniqueName("this")) : Qe; + } + function fe(Qe) { + return e.visitEachChild(Qe, P, p); + } + function g(Qe) { + return he && se.isArgumentsLocalBinding(Qe) ? he.argumentsName || (he.argumentsName = m.createUniqueName("arguments")) : Qe; + } + function ne(Qe) { + if (he) { + var Gr = Qe.kind === 246 ? 2 : 4, S = Qe.label && he.labels && he.labels.get(e.idText(Qe.label)) || !Qe.label && he.allowedNonLabeledJumps & Gr; + if (!S) { + var Ce = void 0, qe = Qe.label; + qe ? Qe.kind === 246 ? (Ce = "break-".concat(qe.escapedText), Ki(he, true, e.idText(qe), Ce)) : (Ce = "continue-".concat(qe.escapedText), Ki(he, false, e.idText(qe), Ce)) : Qe.kind === 246 ? (he.nonLocalJumps |= 2, Ce = "break") : (he.nonLocalJumps |= 4, Ce = "continue"); + var br = m.createStringLiteral(Ce); + if (he.loopOutParameters.length) { + for (var Zr = he.loopOutParameters, Si = void 0, Pi = 0; Pi < Zr.length; Pi++) { + var Qi = ut(Zr[Pi], 1); + Pi === 0 ? Si = Qi : Si = m.createBinaryExpression(Si, 27, Qi); + } + br = m.createBinaryExpression(Si, 27, br); + } + return m.createReturnStatement(br); + } + } + return e.visitEachChild(Qe, L, p); + } + function ue(Qe) { + var Gr = m.createVariableDeclaration(m.getLocalName(Qe, true), void 0, void 0, Fe(Qe)); + e.setOriginalNode(Gr, Qe); + var S = [], Ce = m.createVariableStatement(void 0, m.createVariableDeclarationList([Gr])); + if (e.setOriginalNode(Ce, Qe), e.setTextRange(Ce, Qe), e.startOnNewLine(Ce), S.push(Ce), e.hasSyntacticModifier(Qe, 1)) { + var qe = e.hasSyntacticModifier(Qe, 512) ? m.createExportDefault(m.getLocalName(Qe)) : m.createExternalModuleExport(m.getLocalName(Qe)); + e.setOriginalNode(qe, Ce), S.push(qe); + } + var br = e.getEmitFlags(Qe); + return (br & 4194304) === 0 && (S.push(m.createEndOfDeclarationMarker(Qe)), e.setEmitFlags(Ce, br | 4194304)), e.singleOrMany(S); + } + function We(Qe) { + return Fe(Qe); + } + function Fe(Qe) { + Qe.name && Co(); + var Gr = e.getClassExtendsHeritageElement(Qe), S = m.createFunctionExpression(void 0, void 0, void 0, void 0, Gr ? [m.createParameterDeclaration(void 0, void 0, void 0, m.createUniqueName("_super", 48))] : [], void 0, Z(Qe, Gr)); + e.setEmitFlags(S, e.getEmitFlags(Qe) & 65536 | 524288); + var Ce = m.createPartiallyEmittedExpression(S); + e.setTextRangeEnd(Ce, Qe.end), e.setEmitFlags(Ce, 1536); + var qe = m.createPartiallyEmittedExpression(Ce); + e.setTextRangeEnd(qe, e.skipTrivia(q, Qe.pos)), e.setEmitFlags(qe, 1536); + var br = m.createParenthesizedExpression(m.createCallExpression(qe, void 0, Gr ? [e.visitNode(Gr.expression, L, e.isExpression)] : [])); + return e.addSyntheticLeadingComment(br, 3, "* @class "), br; + } + function Z(Qe, Gr) { + var S = [], Ce = m.getInternalName(Qe), qe = e.isIdentifierANonContextualKeyword(Ce) ? m.getGeneratedNameForNode(Ce) : Ce; + oe(), Be(S, Qe, Gr), ge(S, Qe, qe, Gr), n(S, Qe); + var br = e.createTokenRange(e.skipTrivia(q, Qe.members.end), 19), Zr = m.createPartiallyEmittedExpression(qe); + e.setTextRangeEnd(Zr, br.end), e.setEmitFlags(Zr, 1536); + var Si = m.createReturnStatement(Zr); + e.setTextRangePos(Si, br.pos), e.setEmitFlags(Si, 1920), S.push(Si), e.insertStatementsAfterStandardPrologue(S, T()); + var Pi = m.createBlock(e.setTextRange(m.createNodeArray(S), Qe.members), true); + return e.setEmitFlags(Pi, 1536), Pi; + } + function Be(Qe, Gr, S) { + S && Qe.push(e.setTextRange(m.createExpressionStatement(G().createExtendsHelper(m.getInternalName(Gr))), S)); + } + function ge(Qe, Gr, S, Ce) { + var qe = he; + he = void 0; + var br = X(32662, 73), Zr = e.getFirstConstructorWithBody(Gr), Si = Jn(Zr, Ce !== void 0), Pi = m.createFunctionDeclaration(void 0, void 0, void 0, S, void 0, Re(Zr, Si), void 0, Ee(Zr, Gr, Ce, Si)); + e.setTextRange(Pi, Zr || Gr), Ce && e.setEmitFlags(Pi, 8), Qe.push(Pi), $(br, 98304, 0), he = qe; + } + function Re(Qe, Gr) { + return e.visitParameterList(Qe && !Gr ? Qe.parameters : void 0, L, p) || []; + } + function ze(Qe, Gr) { + var S = []; + f(), m.mergeLexicalEnvironment(S, T()), Gr && S.push(m.createReturnStatement(_e())); + var Ce = m.createNodeArray(S); + e.setTextRange(Ce, Qe.members); + var qe = m.createBlock(Ce, true); + return e.setTextRange(qe, Qe), e.setEmitFlags(qe, 1536), qe; + } + function Ee(Qe, Gr, S, Ce) { + var qe = !!S && e.skipOuterExpressions(S.expression).kind !== 104; + if (!Qe) + return ze(Gr, qe); + var br = [], Zr = []; + f(); + var Si = e.takeWhile(Qe.body.statements, e.isPrologueDirective), Pi = He(Qe.body.statements, Si), Qi = Pi.superCall, Ct = Pi.superStatementIndex, sa = Ct === -1 ? Si.length : Ct + 1, en = sa; + Ce || (en = m.copyStandardPrologue(Qe.body.statements, br, en, false)), Ce || (en = m.copyCustomPrologue(Qe.body.statements, Zr, en, L, void 0)); + var Wa; + if (Ce ? Wa = _e() : Qi && (Wa = ka(Qi)), Wa && (O |= 8192), ye(br, Qe), Cr(br, Qe, Ce), e.addRange(Zr, e.visitNodes(Qe.body.statements, L, e.isStatement, en)), m.mergeLexicalEnvironment(br, T()), Ne(br, Qe, false), qe || Wa) + if (Wa && sa === Qe.body.statements.length && !(Qe.body.transformFlags & 8192)) { + var qn = e.cast(e.cast(Wa, e.isBinaryExpression).left, e.isCallExpression), mo = m.createReturnStatement(Wa); + e.setCommentRange(mo, e.getCommentRange(qn)), e.setEmitFlags(qn, 1536), Zr.push(mo); + } else + Ct <= Si.length ? Er(Zr, Qe, Wa || Ie()) : (Er(br, Qe, Ie()), Wa && Br(Zr, Wa)), rr(Qe.body) || Zr.push(m.createReturnStatement(m.createUniqueName("_this", 48))); + else + Ye(br, Qe); + var So = m.createBlock(e.setTextRange(m.createNodeArray(Ve(Ve(Ve(Ve([], Si, true), br, true), Ct <= Si.length ? e.emptyArray : e.visitNodes(Qe.body.statements, L, e.isStatement, Si.length, Ct - Si.length), true), Zr, true)), Qe.body.statements), true); + return e.setTextRange(So, Qe.body), So; + } + function He(Qe, Gr) { + for (var S = Gr.length; S < Qe.length; S += 1) { + var Ce = e.getSuperCallFromStatement(Qe[S]); + if (Ce) + return { superCall: Ce, superStatementIndex: S }; + } + return { superStatementIndex: -1 }; + } + function rr(Qe) { + if (Qe.kind === 247) + return true; + if (Qe.kind === 239) { + var Gr = Qe; + if (Gr.elseStatement) + return rr(Gr.thenStatement) && rr(Gr.elseStatement); + } else if (Qe.kind === 235) { + var S = e.lastOrUndefined(Qe.statements); + if (S && rr(S)) + return true; + } + return false; + } + function Ie() { + return e.setEmitFlags(m.createThis(), 4); + } + function _e() { + return m.createLogicalOr(m.createLogicalAnd(m.createStrictInequality(m.createUniqueName("_super", 48), m.createNull()), m.createFunctionApplyCall(m.createUniqueName("_super", 48), Ie(), m.createIdentifier("arguments"))), Ie()); + } + function we(Qe) { + if (!Qe.dotDotDotToken) + return e.isBindingPattern(Qe.name) ? e.setOriginalNode(e.setTextRange(m.createParameterDeclaration(void 0, void 0, void 0, m.getGeneratedNameForNode(Qe), void 0, void 0, void 0), Qe), Qe) : Qe.initializer ? e.setOriginalNode(e.setTextRange(m.createParameterDeclaration(void 0, void 0, void 0, Qe.name, void 0, void 0, void 0), Qe), Qe) : Qe; + } + function de(Qe) { + return Qe.initializer !== void 0 || e.isBindingPattern(Qe.name); + } + function ye(Qe, Gr) { + if (!e.some(Gr.parameters, de)) + return false; + for (var S = false, Ce = 0, qe = Gr.parameters; Ce < qe.length; Ce++) { + var br = qe[Ce], Zr = br.name, Si = br.initializer, Pi = br.dotDotDotToken; + Pi || (e.isBindingPattern(Zr) ? S = Ae(Qe, br, Zr, Si) || S : Si && (er(Qe, br, Zr, Si), S = true)); + } + return S; + } + function Ae(Qe, Gr, S, Ce) { + return S.elements.length > 0 ? (e.insertStatementAfterCustomPrologue(Qe, e.setEmitFlags(m.createVariableStatement(void 0, m.createVariableDeclarationList(e.flattenDestructuringBinding(Gr, L, p, 0, m.getGeneratedNameForNode(Gr)))), 1048576)), true) : Ce ? (e.insertStatementAfterCustomPrologue(Qe, e.setEmitFlags(m.createExpressionStatement(m.createAssignment(m.getGeneratedNameForNode(Gr), e.visitNode(Ce, L, e.isExpression))), 1048576)), true) : false; + } + function er(Qe, Gr, S, Ce) { + Ce = e.visitNode(Ce, L, e.isExpression); + var qe = m.createIfStatement(m.createTypeCheck(m.cloneNode(S), "undefined"), e.setEmitFlags(e.setTextRange(m.createBlock([m.createExpressionStatement(e.setEmitFlags(e.setTextRange(m.createAssignment(e.setEmitFlags(e.setParent(e.setTextRange(m.cloneNode(S), S), S.parent), 48), e.setEmitFlags(Ce, 48 | e.getEmitFlags(Ce) | 1536)), Gr), 1536))]), Gr), 1953)); + e.startOnNewLine(qe), e.setTextRange(qe, Gr), e.setEmitFlags(qe, 1050528), e.insertStatementAfterCustomPrologue(Qe, qe); + } + function ir(Qe, Gr) { + return !!(Qe && Qe.dotDotDotToken && !Gr); + } + function Cr(Qe, Gr, S) { + var Ce = [], qe = e.lastOrUndefined(Gr.parameters); + if (!ir(qe, S)) + return false; + var br = qe.name.kind === 79 ? e.setParent(e.setTextRange(m.cloneNode(qe.name), qe.name), qe.name.parent) : m.createTempVariable(void 0); + e.setEmitFlags(br, 48); + var Zr = qe.name.kind === 79 ? m.cloneNode(qe.name) : br, Si = Gr.parameters.length - 1, Pi = m.createLoopVariable(); + Ce.push(e.setEmitFlags(e.setTextRange(m.createVariableStatement(void 0, m.createVariableDeclarationList([m.createVariableDeclaration(br, void 0, void 0, m.createArrayLiteralExpression([]))])), qe), 1048576)); + var Qi = m.createForStatement(e.setTextRange(m.createVariableDeclarationList([m.createVariableDeclaration(Pi, void 0, void 0, m.createNumericLiteral(Si))]), qe), e.setTextRange(m.createLessThan(Pi, m.createPropertyAccessExpression(m.createIdentifier("arguments"), "length")), qe), e.setTextRange(m.createPostfixIncrement(Pi), qe), m.createBlock([e.startOnNewLine(e.setTextRange(m.createExpressionStatement(m.createAssignment(m.createElementAccessExpression(Zr, Si === 0 ? Pi : m.createSubtract(Pi, m.createNumericLiteral(Si))), m.createElementAccessExpression(m.createIdentifier("arguments"), Pi))), qe))])); + return e.setEmitFlags(Qi, 1048576), e.startOnNewLine(Qi), Ce.push(Qi), qe.name.kind !== 79 && Ce.push(e.setEmitFlags(e.setTextRange(m.createVariableStatement(void 0, m.createVariableDeclarationList(e.flattenDestructuringBinding(qe, L, p, 0, Zr))), qe), 1048576)), e.insertStatementsAfterCustomPrologue(Qe, Ce), true; + } + function Ye(Qe, Gr) { + return O & 65536 && Gr.kind !== 214 ? (Er(Qe, Gr, m.createThis()), true) : false; + } + function Br(Qe, Gr) { + Ko(); + var S = m.createExpressionStatement(m.createBinaryExpression(m.createThis(), 63, Gr)); + e.insertStatementAfterCustomPrologue(Qe, S), e.setCommentRange(S, e.getOriginalNode(Gr).parent); + } + function Er(Qe, Gr, S) { + Ko(); + var Ce = m.createVariableStatement(void 0, m.createVariableDeclarationList([m.createVariableDeclaration(m.createUniqueName("_this", 48), void 0, void 0, S)])); + e.setEmitFlags(Ce, 1050112), e.setSourceMapRange(Ce, Gr), e.insertStatementAfterCustomPrologue(Qe, Ce); + } + function Ne(Qe, Gr, S) { + if (O & 32768) { + var Ce = void 0; + switch (Gr.kind) { + case 214: + return Qe; + case 169: + case 172: + case 173: + Ce = m.createVoidZero(); + break; + case 171: + Ce = m.createPropertyAccessExpression(e.setEmitFlags(m.createThis(), 4), "constructor"); + break; + case 256: + case 213: + Ce = m.createConditionalExpression(m.createLogicalAnd(e.setEmitFlags(m.createThis(), 4), m.createBinaryExpression(e.setEmitFlags(m.createThis(), 4), 102, m.getLocalName(Gr))), void 0, m.createPropertyAccessExpression(e.setEmitFlags(m.createThis(), 4), "constructor"), void 0, m.createVoidZero()); + break; + default: + return e.Debug.failBadSyntaxKind(Gr); + } + var qe = m.createVariableStatement(void 0, m.createVariableDeclarationList([m.createVariableDeclaration(m.createUniqueName("_newTarget", 48), void 0, void 0, Ce)])); + e.setEmitFlags(qe, 1050112), S && (Qe = Qe.slice()), e.insertStatementAfterCustomPrologue(Qe, qe); + } + return Qe; + } + function n(Qe, Gr) { + for (var S = 0, Ce = Gr.members; S < Ce.length; S++) { + var qe = Ce[S]; + switch (qe.kind) { + case 234: + Qe.push(lr(qe)); + break; + case 169: + Qe.push(be(dn(Gr, qe), qe, Gr)); + break; + case 172: + case 173: + var br = e.getAllAccessorDeclarations(Gr.members, qe); + qe === br.firstAccessor && Qe.push(Ge(dn(Gr, qe), br, Gr)); + break; + case 171: + case 170: + break; + default: + e.Debug.failBadSyntaxKind(qe, R && R.fileName); + break; + } + } + } + function lr(Qe) { + return e.setTextRange(m.createEmptyStatement(), Qe); + } + function be(Qe, Gr, S) { + var Ce = e.getCommentRange(Gr), qe = e.getSourceMapRange(Gr), br = Ur(Gr, Gr, void 0, S), Zr = e.visitNode(Gr.name, L, e.isPropertyName), Si; + if (!e.isPrivateIdentifier(Zr) && e.getUseDefineForClassFields(p.getCompilerOptions())) { + var Pi = e.isComputedPropertyName(Zr) ? Zr.expression : e.isIdentifier(Zr) ? m.createStringLiteral(e.unescapeLeadingUnderscores(Zr.escapedText)) : Zr; + Si = m.createObjectDefinePropertyCall(Qe, Pi, m.createPropertyDescriptor({ value: br, enumerable: false, writable: true, configurable: true })); + } else { + var Qi = e.createMemberAccessForPropertyName(m, Qe, Zr, Gr.name); + Si = m.createAssignment(Qi, br); + } + e.setEmitFlags(br, 1536), e.setSourceMapRange(br, qe); + var Ct = e.setTextRange(m.createExpressionStatement(Si), Gr); + return e.setOriginalNode(Ct, Gr), e.setCommentRange(Ct, Ce), e.setEmitFlags(Ct, 48), Ct; + } + function Ge(Qe, Gr, S) { + var Ce = m.createExpressionStatement(ur(Qe, Gr, S, false)); + return e.setEmitFlags(Ce, 1536), e.setSourceMapRange(Ce, e.getSourceMapRange(Gr.firstAccessor)), Ce; + } + function ur(Qe, Gr, S, Ce) { + var qe = Gr.firstAccessor, br = Gr.getAccessor, Zr = Gr.setAccessor, Si = e.setParent(e.setTextRange(m.cloneNode(Qe), Qe), Qe.parent); + e.setEmitFlags(Si, 1568), e.setSourceMapRange(Si, qe.name); + var Pi = e.visitNode(qe.name, L, e.isPropertyName); + if (e.isPrivateIdentifier(Pi)) + return e.Debug.failBadSyntaxKind(Pi, "Encountered unhandled private identifier while transforming ES2015."); + var Qi = e.createExpressionForPropertyName(m, Pi); + e.setEmitFlags(Qi, 1552), e.setSourceMapRange(Qi, qe.name); + var Ct = []; + if (br) { + var sa = Ur(br, void 0, void 0, S); + e.setSourceMapRange(sa, e.getSourceMapRange(br)), e.setEmitFlags(sa, 512); + var en = m.createPropertyAssignment("get", sa); + e.setCommentRange(en, e.getCommentRange(br)), Ct.push(en); + } + if (Zr) { + var Wa = Ur(Zr, void 0, void 0, S); + e.setSourceMapRange(Wa, e.getSourceMapRange(Zr)), e.setEmitFlags(Wa, 512); + var qn = m.createPropertyAssignment("set", Wa); + e.setCommentRange(qn, e.getCommentRange(Zr)), Ct.push(qn); + } + Ct.push(m.createPropertyAssignment("enumerable", br || Zr ? m.createFalse() : m.createTrue()), m.createPropertyAssignment("configurable", m.createTrue())); + var mo = m.createCallExpression(m.createPropertyAccessExpression(m.createIdentifier("Object"), "defineProperty"), void 0, [Si, Qi, m.createObjectLiteralExpression(Ct, true)]); + return Ce && e.startOnNewLine(mo), mo; + } + function yr(Qe) { + Qe.transformFlags & 8192 && !(O & 16384) && (O |= 65536); + var Gr = he; + he = void 0; + var S = X(15232, 66), Ce = m.createFunctionExpression(void 0, void 0, void 0, void 0, e.visitParameterList(Qe.parameters, L, p), void 0, ii(Qe)); + return e.setTextRange(Ce, Qe), e.setOriginalNode(Ce, Qe), e.setEmitFlags(Ce, 8), $(S, 0, 0), he = Gr, Ce; + } + function Ir(Qe) { + var Gr = e.getEmitFlags(Qe) & 262144 ? X(32662, 69) : X(32670, 65), S = he; + he = void 0; + var Ce = e.visitParameterList(Qe.parameters, L, p), qe = ii(Qe), br = O & 32768 ? m.getLocalName(Qe) : Qe.name; + return $(Gr, 98304, 0), he = S, m.updateFunctionExpression(Qe, void 0, Qe.asteriskToken, br, void 0, Ce, void 0, qe); + } + function wr(Qe) { + var Gr = he; + he = void 0; + var S = X(32670, 65), Ce = e.visitParameterList(Qe.parameters, L, p), qe = ii(Qe), br = O & 32768 ? m.getLocalName(Qe) : Qe.name; + return $(S, 98304, 0), he = Gr, m.updateFunctionDeclaration(Qe, void 0, e.visitNodes(Qe.modifiers, L, e.isModifier), Qe.asteriskToken, br, void 0, Ce, void 0, qe); + } + function Ur(Qe, Gr, S, Ce) { + var qe = he; + he = void 0; + var br = Ce && e.isClassLike(Ce) && !e.isStatic(Qe) ? X(32670, 73) : X(32670, 65), Zr = e.visitParameterList(Qe.parameters, L, p), Si = ii(Qe); + return O & 32768 && !S && (Qe.kind === 256 || Qe.kind === 213) && (S = m.getGeneratedNameForNode(Qe)), $(br, 98304, 0), he = qe, e.setOriginalNode(e.setTextRange(m.createFunctionExpression(void 0, Qe.asteriskToken, S, void 0, Zr, void 0, Si), Gr), Qe); + } + function ii(Qe) { + var Gr = false, S = false, Ce, qe, br = [], Zr = [], Si = Qe.body, Pi; + if (f(), e.isBlock(Si) && (Pi = m.copyStandardPrologue(Si.statements, br, 0, false), Pi = m.copyCustomPrologue(Si.statements, Zr, Pi, L, e.isHoistedFunction), Pi = m.copyCustomPrologue(Si.statements, Zr, Pi, L, e.isHoistedVariableStatement)), Gr = ye(Zr, Qe) || Gr, Gr = Cr(Zr, Qe, false) || Gr, e.isBlock(Si)) + Pi = m.copyCustomPrologue(Si.statements, Zr, Pi, L), Ce = Si.statements, e.addRange(Zr, e.visitNodes(Si.statements, L, e.isStatement, Pi)), !Gr && Si.multiLine && (Gr = true); + else { + e.Debug.assert(Qe.kind === 214), Ce = e.moveRangeEnd(Si, -1); + var Qi = Qe.equalsGreaterThanToken; + !e.nodeIsSynthesized(Qi) && !e.nodeIsSynthesized(Si) && (e.rangeEndIsOnSameLineAsRangeStart(Qi, Si, R) ? S = true : Gr = true); + var Ct = e.visitNode(Si, L, e.isExpression), sa = m.createReturnStatement(Ct); + e.setTextRange(sa, Si), e.moveSyntheticComments(sa, Si), e.setEmitFlags(sa, 1440), Zr.push(sa), qe = Si; + } + if (m.mergeLexicalEnvironment(br, T()), Ne(br, Qe, false), Ye(br, Qe), e.some(br) && (Gr = true), Zr.unshift.apply(Zr, br), e.isBlock(Si) && e.arrayIsEqualTo(Zr, Si.statements)) + return Si; + var en = m.createBlock(e.setTextRange(m.createNodeArray(Zr), Ce), Gr); + return e.setTextRange(en, Qe.body), !Gr && S && e.setEmitFlags(en, 1), qe && e.setTokenSourceMapRange(en, 19, qe), e.setOriginalNode(en, Qe.body), en; + } + function mi(Qe, Gr) { + if (Gr) + return e.visitEachChild(Qe, L, p); + var S = O & 256 ? X(7104, 512) : X(6976, 128), Ce = e.visitEachChild(Qe, L, p); + return $(S, 0, 0), Ce; + } + function pe(Qe) { + return e.visitEachChild(Qe, P, p); + } + function or(Qe, Gr) { + return e.visitEachChild(Qe, Gr ? P : L, p); + } + function qr(Qe, Gr) { + return e.isDestructuringAssignment(Qe) ? e.flattenDestructuringAssignment(Qe, L, p, 0, !Gr) : Qe.operatorToken.kind === 27 ? m.updateBinaryExpression(Qe, e.visitNode(Qe.left, P, e.isExpression), Qe.operatorToken, e.visitNode(Qe.right, Gr ? P : L, e.isExpression)) : e.visitEachChild(Qe, L, p); + } + function si(Qe, Gr) { + if (Gr) + return e.visitEachChild(Qe, P, p); + for (var S, Ce = 0; Ce < Qe.elements.length; Ce++) { + var qe = Qe.elements[Ce], br = e.visitNode(qe, Ce < Qe.elements.length - 1 ? P : L, e.isExpression); + (S || br !== qe) && (S || (S = Qe.elements.slice(0, Ce)), S.push(br)); + } + var Zr = S ? e.setTextRange(m.createNodeArray(S), Qe.elements) : Qe.elements; + return m.updateCommaListExpression(Qe, Zr); + } + function Di(Qe) { + return Qe.declarationList.declarations.length === 1 && !!Qe.declarationList.declarations[0].initializer && !!(e.getEmitFlags(Qe.declarationList.declarations[0].initializer) & 33554432); + } + function wi(Qe) { + var Gr = X(0, e.hasSyntacticModifier(Qe, 1) ? 32 : 0), S; + if (he && (Qe.declarationList.flags & 3) === 0 && !Di(Qe)) { + for (var Ce = void 0, qe = 0, br = Qe.declarationList.declarations; qe < br.length; qe++) { + var Zr = br[qe]; + if (De(he, Zr), Zr.initializer) { + var Si = void 0; + e.isBindingPattern(Zr.name) ? Si = e.flattenDestructuringAssignment(Zr, L, p, 0) : (Si = m.createBinaryExpression(Zr.name, 63, e.visitNode(Zr.initializer, L, e.isExpression)), e.setTextRange(Si, Zr)), Ce = e.append(Ce, Si); + } + } + Ce ? S = e.setTextRange(m.createExpressionStatement(m.inlineExpressions(Ce)), Qe) : S = void 0; + } else + S = e.visitEachChild(Qe, L, p); + return $(Gr, 0, 0), S; + } + function Xi(Qe) { + if (Qe.flags & 3 || Qe.transformFlags & 262144) { + Qe.flags & 3 && Co(); + var Gr = e.flatMap(Qe.declarations, Qe.flags & 1 ? Wt : Zt), S = m.createVariableDeclarationList(Gr); + return e.setOriginalNode(S, Qe), e.setTextRange(S, Qe), e.setCommentRange(S, Qe), Qe.transformFlags & 262144 && (e.isBindingPattern(Qe.declarations[0].name) || e.isBindingPattern(e.last(Qe.declarations).name)) && e.setSourceMapRange(S, et(Gr)), S; + } + return e.visitEachChild(Qe, L, p); + } + function et(Qe) { + for (var Gr = -1, S = -1, Ce = 0, qe = Qe; Ce < qe.length; Ce++) { + var br = qe[Ce]; + Gr = Gr === -1 ? br.pos : br.pos === -1 ? Gr : Math.min(Gr, br.pos), S = Math.max(S, br.end); + } + return e.createRange(Gr, S); + } + function Gi(Qe) { + var Gr = se.getNodeCheckFlags(Qe), S = Gr & 262144, Ce = Gr & 524288, qe = (O & 64) !== 0 || S && Ce && (O & 512) !== 0, br = !qe && (O & 4096) === 0 && (!se.isDeclarationWithCollidingName(Qe) || Ce && !S && (O & 6144) === 0); + return br; + } + function Wt(Qe) { + var Gr = Qe.name; + return e.isBindingPattern(Gr) ? Zt(Qe) : !Qe.initializer && Gi(Qe) ? m.updateVariableDeclaration(Qe, Qe.name, void 0, void 0, m.createVoidZero()) : e.visitEachChild(Qe, L, p); + } + function Zt(Qe) { + var Gr = X(32, 0), S; + return e.isBindingPattern(Qe.name) ? S = e.flattenDestructuringBinding(Qe, L, p, 0, void 0, (Gr & 32) !== 0) : S = e.visitEachChild(Qe, L, p), $(Gr, 0, 0), S; + } + function _r(Qe) { + he.labels.set(e.idText(Qe.label), true); + } + function pi(Qe) { + he.labels.set(e.idText(Qe.label), false); + } + function ae(Qe) { + he && !he.labels && (he.labels = new e.Map()); + var Gr = e.unwrapInnermostStatementOfLabel(Qe, he && _r); + return e.isIterationStatement(Gr, false) ? Xe(Gr, Qe) : m.restoreEnclosingLabel(e.visitNode(Gr, L, e.isStatement, m.liftToBlock), Qe, he && pi); + } + function Xe(Qe, Gr) { + switch (Qe.kind) { + case 240: + case 241: + return ti(Qe, Gr); + case 242: + return Ze(Qe, Gr); + case 243: + return zr(Qe, Gr); + case 244: + return Wr(Qe, Gr); + } + } + function Jr(Qe, Gr, S, Ce, qe) { + var br = X(Qe, Gr), Zr = gr(S, Ce, br, qe); + return $(br, 0, 0), Zr; + } + function ti(Qe, Gr) { + return Jr(0, 1280, Qe, Gr); + } + function Ze(Qe, Gr) { + return Jr(5056, 3328, Qe, Gr); + } + function Sr(Qe) { + return m.updateForStatement(Qe, e.visitNode(Qe.initializer, P, e.isForInitializer), e.visitNode(Qe.condition, L, e.isExpression), e.visitNode(Qe.incrementor, P, e.isExpression), e.visitNode(Qe.statement, L, e.isStatement, m.liftToBlock)); + } + function zr(Qe, Gr) { + return Jr(3008, 5376, Qe, Gr); + } + function Wr(Qe, Gr) { + return Jr(3008, 5376, Qe, Gr, b.downlevelIteration ? mr : vr); + } + function Je(Qe, Gr, S) { + var Ce = [], qe = Qe.initializer; + if (e.isVariableDeclarationList(qe)) { + Qe.initializer.flags & 3 && Co(); + var br = e.firstOrUndefined(qe.declarations); + if (br && e.isBindingPattern(br.name)) { + var Zr = e.flattenDestructuringBinding(br, L, p, 0, Gr), Si = e.setTextRange(m.createVariableDeclarationList(Zr), Qe.initializer); + e.setOriginalNode(Si, Qe.initializer), e.setSourceMapRange(Si, e.createRange(Zr[0].pos, e.last(Zr).end)), Ce.push(m.createVariableStatement(void 0, Si)); + } else + Ce.push(e.setTextRange(m.createVariableStatement(void 0, e.setOriginalNode(e.setTextRange(m.createVariableDeclarationList([m.createVariableDeclaration(br ? br.name : m.createTempVariable(void 0), void 0, void 0, Gr)]), e.moveRangePos(qe, -1)), qe)), e.moveRangeEnd(qe, -1))); + } else { + var Pi = m.createAssignment(qe, Gr); + e.isDestructuringAssignment(Pi) ? Ce.push(m.createExpressionStatement(qr(Pi, true))) : (e.setTextRangeEnd(Pi, qe.end), Ce.push(e.setTextRange(m.createExpressionStatement(e.visitNode(Pi, L, e.isExpression)), e.moveRangeEnd(qe, -1)))); + } + if (S) + return xe(e.addRange(Ce, S)); + var Qi = e.visitNode(Qe.statement, L, e.isStatement, m.liftToBlock); + return e.isBlock(Qi) ? m.updateBlock(Qi, e.setTextRange(m.createNodeArray(e.concatenate(Ce, Qi.statements)), Qi.statements)) : (Ce.push(Qi), xe(Ce)); + } + function xe(Qe) { + return e.setEmitFlags(m.createBlock(m.createNodeArray(Qe), true), 432); + } + function vr(Qe, Gr, S) { + var Ce = e.visitNode(Qe.expression, L, e.isExpression), qe = m.createLoopVariable(), br = e.isIdentifier(Ce) ? m.getGeneratedNameForNode(Ce) : m.createTempVariable(void 0); + e.setEmitFlags(Ce, 48 | e.getEmitFlags(Ce)); + var Zr = e.setTextRange(m.createForStatement(e.setEmitFlags(e.setTextRange(m.createVariableDeclarationList([e.setTextRange(m.createVariableDeclaration(qe, void 0, void 0, m.createNumericLiteral(0)), e.moveRangePos(Qe.expression, -1)), e.setTextRange(m.createVariableDeclaration(br, void 0, void 0, Ce), Qe.expression)]), Qe.expression), 2097152), e.setTextRange(m.createLessThan(qe, m.createPropertyAccessExpression(br, "length")), Qe.expression), e.setTextRange(m.createPostfixIncrement(qe), Qe.expression), Je(Qe, m.createElementAccessExpression(br, qe), S)), Qe); + return e.setEmitFlags(Zr, 256), e.setTextRange(Zr, Qe), m.restoreEnclosingLabel(Zr, Gr, he && pi); + } + function mr(Qe, Gr, S, Ce) { + var qe = e.visitNode(Qe.expression, L, e.isExpression), br = e.isIdentifier(qe) ? m.getGeneratedNameForNode(qe) : m.createTempVariable(void 0), Zr = e.isIdentifier(qe) ? m.getGeneratedNameForNode(br) : m.createTempVariable(void 0), Si = m.createUniqueName("e"), Pi = m.getGeneratedNameForNode(Si), Qi = m.createTempVariable(void 0), Ct = e.setTextRange(G().createValuesHelper(qe), Qe.expression), sa = m.createCallExpression(m.createPropertyAccessExpression(br, "next"), void 0, []); + K(Si), K(Qi); + var en = Ce & 1024 ? m.inlineExpressions([m.createAssignment(Si, m.createVoidZero()), Ct]) : Ct, Wa = e.setEmitFlags(e.setTextRange(m.createForStatement(e.setEmitFlags(e.setTextRange(m.createVariableDeclarationList([e.setTextRange(m.createVariableDeclaration(br, void 0, void 0, en), Qe.expression), m.createVariableDeclaration(Zr, void 0, void 0, sa)]), Qe.expression), 2097152), m.createLogicalNot(m.createPropertyAccessExpression(Zr, "done")), m.createAssignment(Zr, sa), Je(Qe, m.createPropertyAccessExpression(Zr, "value"), S)), Qe), 256); + return m.createTryStatement(m.createBlock([m.restoreEnclosingLabel(Wa, Gr, he && pi)]), m.createCatchClause(m.createVariableDeclaration(Pi), e.setEmitFlags(m.createBlock([m.createExpressionStatement(m.createAssignment(Si, m.createObjectLiteralExpression([m.createPropertyAssignment("error", Pi)])))]), 1)), m.createBlock([m.createTryStatement(m.createBlock([e.setEmitFlags(m.createIfStatement(m.createLogicalAnd(m.createLogicalAnd(Zr, m.createLogicalNot(m.createPropertyAccessExpression(Zr, "done"))), m.createAssignment(Qi, m.createPropertyAccessExpression(br, "return"))), m.createExpressionStatement(m.createFunctionCallCall(Qi, br, []))), 1)]), void 0, e.setEmitFlags(m.createBlock([e.setEmitFlags(m.createIfStatement(Si, m.createThrowStatement(m.createPropertyAccessExpression(Si, "error"))), 1)]), 1))])); + } + function Ar(Qe) { + for (var Gr = Qe.properties, S = -1, Ce = false, qe = 0; qe < Gr.length; qe++) { + var br = Gr[qe]; + if (br.transformFlags & 524288 && O & 4 || (Ce = e.Debug.checkDefined(br.name).kind === 162)) { + S = qe; + break; + } + } + if (S < 0) + return e.visitEachChild(Qe, L, p); + var Zr = m.createTempVariable(K), Si = [], Pi = m.createAssignment(Zr, e.setEmitFlags(m.createObjectLiteralExpression(e.visitNodes(Gr, L, e.isObjectLiteralElementLike, 0, S), Qe.multiLine), Ce ? 65536 : 0)); + return Qe.multiLine && e.startOnNewLine(Pi), Si.push(Pi), Bt(Si, Qe, Zr, S), Si.push(Qe.multiLine ? e.startOnNewLine(e.setParent(e.setTextRange(m.cloneNode(Zr), Zr), Zr.parent)) : Zr), m.inlineExpressions(Si); + } + function Oe(Qe) { + return (se.getNodeCheckFlags(Qe) & 131072) !== 0; + } + function nr(Qe) { + return e.isForStatement(Qe) && !!Qe.initializer && Oe(Qe.initializer); + } + function Mr(Qe) { + return e.isForStatement(Qe) && !!Qe.condition && Oe(Qe.condition); + } + function Pe(Qe) { + return e.isForStatement(Qe) && !!Qe.incrementor && Oe(Qe.incrementor); + } + function Ue(Qe) { + return fr(Qe) || nr(Qe); + } + function fr(Qe) { + return (se.getNodeCheckFlags(Qe) & 65536) !== 0; + } + function De(Qe, Gr) { + Qe.hoistedLocalVariables || (Qe.hoistedLocalVariables = []), S(Gr.name); + function S(Ce) { + if (Ce.kind === 79) + Qe.hoistedLocalVariables.push(Ce); + else + for (var qe = 0, br = Ce.elements; qe < br.length; qe++) { + var Zr = br[qe]; + e.isOmittedExpression(Zr) || S(Zr.name); + } + } + } + function gr(Qe, Gr, S, Ce) { + if (!Ue(Qe)) { + var qe = void 0; + he && (qe = he.allowedNonLabeledJumps, he.allowedNonLabeledJumps = 6); + var br = Ce ? Ce(Qe, Gr, void 0, S) : m.restoreEnclosingLabel(e.isForStatement(Qe) ? Sr(Qe) : e.visitEachChild(Qe, L, p), Gr, he && pi); + return he && (he.allowedNonLabeledJumps = qe), br; + } + var Zr = ct(Qe), Si = [], Pi = he; + he = Zr; + var Qi = nr(Qe) ? Mt(Qe, Zr) : void 0, Ct = fr(Qe) ? xt(Qe, Zr, Pi) : void 0; + he = Pi, Qi && Si.push(Qi.functionDeclaration), Ct && Si.push(Ct.functionDeclaration), Li(Si, Zr, Pi), Qi && Si.push(Rt(Qi.functionName, Qi.containsYield)); + var sa; + if (Ct) + if (Ce) + sa = Ce(Qe, Gr, Ct.part, S); + else { + var en = Vr(Qe, Qi, m.createBlock(Ct.part, true)); + sa = m.restoreEnclosingLabel(en, Gr, he && pi); + } + else { + var Wa = Vr(Qe, Qi, e.visitNode(Qe.statement, L, e.isStatement, m.liftToBlock)); + sa = m.restoreEnclosingLabel(Wa, Gr, he && pi); + } + return Si.push(sa), Si; + } + function Vr(Qe, Gr, S) { + switch (Qe.kind) { + case 242: + return Tr(Qe, Gr, S); + case 243: + return Ui(Qe, S); + case 244: + return vi(Qe, S); + case 240: + return Yi(Qe, S); + case 241: + return Wi(Qe, S); + default: + return e.Debug.failBadSyntaxKind(Qe, "IterationStatement expected"); + } + } + function Tr(Qe, Gr, S) { + var Ce = Qe.condition && Oe(Qe.condition), qe = Ce || Qe.incrementor && Oe(Qe.incrementor); + return m.updateForStatement(Qe, e.visitNode(Gr ? Gr.part : Qe.initializer, P, e.isForInitializer), e.visitNode(Ce ? void 0 : Qe.condition, L, e.isExpression), e.visitNode(qe ? void 0 : Qe.incrementor, P, e.isExpression), S); + } + function vi(Qe, Gr) { + return m.updateForOfStatement(Qe, void 0, e.visitNode(Qe.initializer, L, e.isForInitializer), e.visitNode(Qe.expression, L, e.isExpression), Gr); + } + function Ui(Qe, Gr) { + return m.updateForInStatement(Qe, e.visitNode(Qe.initializer, L, e.isForInitializer), e.visitNode(Qe.expression, L, e.isExpression), Gr); + } + function Yi(Qe, Gr) { + return m.updateDoStatement(Qe, Gr, e.visitNode(Qe.expression, L, e.isExpression)); + } + function Wi(Qe, Gr) { + return m.updateWhileStatement(Qe, e.visitNode(Qe.expression, L, e.isExpression), Gr); + } + function ct(Qe) { + var Gr; + switch (Qe.kind) { + case 242: + case 243: + case 244: + var S = Qe.initializer; + S && S.kind === 255 && (Gr = S); + break; + } + var Ce = [], qe = []; + if (Gr && e.getCombinedNodeFlags(Gr) & 3) + for (var br = nr(Qe) || Mr(Qe) || Pe(Qe), Zr = 0, Si = Gr.declarations; Zr < Si.length; Zr++) { + var Pi = Si[Zr]; + ui(Qe, Pi, Ce, qe, br); + } + var Qi = { loopParameters: Ce, loopOutParameters: qe }; + return he && (he.argumentsName && (Qi.argumentsName = he.argumentsName), he.thisName && (Qi.thisName = he.thisName), he.hoistedLocalVariables && (Qi.hoistedLocalVariables = he.hoistedLocalVariables)), Qi; + } + function Li(Qe, Gr, S) { + var Ce; + if (Gr.argumentsName && (S ? S.argumentsName = Gr.argumentsName : (Ce || (Ce = [])).push(m.createVariableDeclaration(Gr.argumentsName, void 0, void 0, m.createIdentifier("arguments")))), Gr.thisName && (S ? S.thisName = Gr.thisName : (Ce || (Ce = [])).push(m.createVariableDeclaration(Gr.thisName, void 0, void 0, m.createIdentifier("this")))), Gr.hoistedLocalVariables) + if (S) + S.hoistedLocalVariables = Gr.hoistedLocalVariables; + else { + Ce || (Ce = []); + for (var qe = 0, br = Gr.hoistedLocalVariables; qe < br.length; qe++) { + var Zr = br[qe]; + Ce.push(m.createVariableDeclaration(Zr)); + } + } + if (Gr.loopOutParameters.length) { + Ce || (Ce = []); + for (var Si = 0, Pi = Gr.loopOutParameters; Si < Pi.length; Si++) { + var Qi = Pi[Si]; + Ce.push(m.createVariableDeclaration(Qi.outParamName)); + } + } + Gr.conditionVariable && (Ce || (Ce = []), Ce.push(m.createVariableDeclaration(Gr.conditionVariable, void 0, void 0, m.createFalse()))), Ce && Qe.push(m.createVariableStatement(void 0, m.createVariableDeclarationList(Ce))); + } + function nt(Qe) { + return m.createVariableDeclaration(Qe.originalName, void 0, void 0, Qe.outParamName); + } + function Mt(Qe, Gr) { + var S = m.createUniqueName("_loop_init"), Ce = (Qe.initializer.transformFlags & 524288) !== 0, qe = 0; + Gr.containsLexicalThis && (qe |= 8), Ce && O & 4 && (qe |= 262144); + var br = []; + br.push(m.createVariableStatement(void 0, Qe.initializer)), Dt(Gr.loopOutParameters, 2, 1, br); + var Zr = m.createVariableStatement(void 0, e.setEmitFlags(m.createVariableDeclarationList([m.createVariableDeclaration(S, void 0, void 0, e.setEmitFlags(m.createFunctionExpression(void 0, Ce ? m.createToken(41) : void 0, void 0, void 0, void 0, void 0, e.visitNode(m.createBlock(br, true), L, e.isBlock)), qe))]), 2097152)), Si = m.createVariableDeclarationList(e.map(Gr.loopOutParameters, nt)); + return { functionName: S, containsYield: Ce, functionDeclaration: Zr, part: Si }; + } + function xt(Qe, Gr, S) { + var Ce = m.createUniqueName("_loop"); + oe(); + var qe = e.visitNode(Qe.statement, L, e.isStatement, m.liftToBlock), br = T(), Zr = []; + (Mr(Qe) || Pe(Qe)) && (Gr.conditionVariable = m.createUniqueName("inc"), Qe.incrementor ? Zr.push(m.createIfStatement(Gr.conditionVariable, m.createExpressionStatement(e.visitNode(Qe.incrementor, L, e.isExpression)), m.createExpressionStatement(m.createAssignment(Gr.conditionVariable, m.createTrue())))) : Zr.push(m.createIfStatement(m.createLogicalNot(Gr.conditionVariable), m.createExpressionStatement(m.createAssignment(Gr.conditionVariable, m.createTrue())))), Mr(Qe) && Zr.push(m.createIfStatement(m.createPrefixUnaryExpression(53, e.visitNode(Qe.condition, L, e.isExpression)), e.visitNode(m.createBreakStatement(), L, e.isStatement)))), e.isBlock(qe) ? e.addRange(Zr, qe.statements) : Zr.push(qe), Dt(Gr.loopOutParameters, 1, 1, Zr), e.insertStatementsAfterStandardPrologue(Zr, br); + var Si = m.createBlock(Zr, true); + e.isBlock(qe) && e.setOriginalNode(Si, qe); + var Pi = (Qe.statement.transformFlags & 524288) !== 0, Qi = 524288; + Gr.containsLexicalThis && (Qi |= 8), Pi && (O & 4) !== 0 && (Qi |= 262144); + var Ct = m.createVariableStatement(void 0, e.setEmitFlags(m.createVariableDeclarationList([m.createVariableDeclaration(Ce, void 0, void 0, e.setEmitFlags(m.createFunctionExpression(void 0, Pi ? m.createToken(41) : void 0, void 0, void 0, Gr.loopParameters, void 0, Si), Qi))]), 2097152)), sa = Ii(Ce, Gr, S, Pi); + return { functionName: Ce, containsYield: Pi, functionDeclaration: Ct, part: sa }; + } + function ut(Qe, Gr) { + var S = Gr === 0 ? Qe.outParamName : Qe.originalName, Ce = Gr === 0 ? Qe.originalName : Qe.outParamName; + return m.createBinaryExpression(Ce, 63, S); + } + function Dt(Qe, Gr, S, Ce) { + for (var qe = 0, br = Qe; qe < br.length; qe++) { + var Zr = br[qe]; + Zr.flags & Gr && Ce.push(m.createExpressionStatement(ut(Zr, S))); + } + } + function Rt(Qe, Gr) { + var S = m.createCallExpression(Qe, void 0, []), Ce = Gr ? m.createYieldExpression(m.createToken(41), e.setEmitFlags(S, 8388608)) : S; + return m.createExpressionStatement(Ce); + } + function Ii(Qe, Gr, S, Ce) { + var qe = [], br = !(Gr.nonLocalJumps & -5) && !Gr.labeledNonLocalBreaks && !Gr.labeledNonLocalContinues, Zr = m.createCallExpression(Qe, void 0, e.map(Gr.loopParameters, function(en) { + return en.name; + })), Si = Ce ? m.createYieldExpression(m.createToken(41), e.setEmitFlags(Zr, 8388608)) : Zr; + if (br) + qe.push(m.createExpressionStatement(Si)), Dt(Gr.loopOutParameters, 1, 0, qe); + else { + var Pi = m.createUniqueName("state"), Qi = m.createVariableStatement(void 0, m.createVariableDeclarationList([m.createVariableDeclaration(Pi, void 0, void 0, Si)])); + if (qe.push(Qi), Dt(Gr.loopOutParameters, 1, 0, qe), Gr.nonLocalJumps & 8) { + var Ct = void 0; + S ? (S.nonLocalJumps |= 8, Ct = m.createReturnStatement(Pi)) : Ct = m.createReturnStatement(m.createPropertyAccessExpression(Pi, "value")), qe.push(m.createIfStatement(m.createTypeCheck(Pi, "object"), Ct)); + } + if (Gr.nonLocalJumps & 2 && qe.push(m.createIfStatement(m.createStrictEquality(Pi, m.createStringLiteral("break")), m.createBreakStatement())), Gr.labeledNonLocalBreaks || Gr.labeledNonLocalContinues) { + var sa = []; + Fi(Gr.labeledNonLocalBreaks, true, Pi, S, sa), Fi(Gr.labeledNonLocalContinues, false, Pi, S, sa), qe.push(m.createSwitchStatement(Pi, m.createCaseBlock(sa))); + } + } + return qe; + } + function Ki(Qe, Gr, S, Ce) { + Gr ? (Qe.labeledNonLocalBreaks || (Qe.labeledNonLocalBreaks = new e.Map()), Qe.labeledNonLocalBreaks.set(S, Ce)) : (Qe.labeledNonLocalContinues || (Qe.labeledNonLocalContinues = new e.Map()), Qe.labeledNonLocalContinues.set(S, Ce)); + } + function Fi(Qe, Gr, S, Ce, qe) { + !Qe || Qe.forEach(function(br, Zr) { + var Si = []; + if (!Ce || Ce.labels && Ce.labels.get(Zr)) { + var Pi = m.createIdentifier(Zr); + Si.push(Gr ? m.createBreakStatement(Pi) : m.createContinueStatement(Pi)); + } else + Ki(Ce, Gr, Zr, br), Si.push(m.createReturnStatement(S)); + qe.push(m.createCaseClause(m.createStringLiteral(br), Si)); + }); + } + function ui(Qe, Gr, S, Ce, qe) { + var br = Gr.name; + if (e.isBindingPattern(br)) + for (var Zr = 0, Si = br.elements; Zr < Si.length; Zr++) { + var Pi = Si[Zr]; + e.isOmittedExpression(Pi) || ui(Qe, Pi, S, Ce, qe); + } + else { + S.push(m.createParameterDeclaration(void 0, void 0, void 0, br)); + var Qi = se.getNodeCheckFlags(Gr); + if (Qi & 4194304 || qe) { + var Ct = m.createUniqueName("out_" + e.idText(br)), sa = 0; + Qi & 4194304 && (sa |= 1), e.isForStatement(Qe) && (Qe.initializer && se.isBindingCapturedByNode(Qe.initializer, Gr) && (sa |= 2), (Qe.condition && se.isBindingCapturedByNode(Qe.condition, Gr) || Qe.incrementor && se.isBindingCapturedByNode(Qe.incrementor, Gr)) && (sa |= 1)), Ce.push({ flags: sa, originalName: br, outParamName: Ct }); + } + } + } + function Bt(Qe, Gr, S, Ce) { + for (var qe = Gr.properties, br = qe.length, Zr = Ce; Zr < br; Zr++) { + var Si = qe[Zr]; + switch (Si.kind) { + case 172: + case 173: + var Pi = e.getAllAccessorDeclarations(Gr.properties, Si); + Si === Pi.firstAccessor && Qe.push(ur(S, Pi, Gr, !!Gr.multiLine)); + break; + case 169: + Qe.push(Ai(Si, S, Gr, Gr.multiLine)); + break; + case 296: + Qe.push(wt(Si, S, Gr.multiLine)); + break; + case 297: + Qe.push(na(Si, S, Gr.multiLine)); + break; + default: + e.Debug.failBadSyntaxKind(Gr); + break; + } + } + } + function wt(Qe, Gr, S) { + var Ce = m.createAssignment(e.createMemberAccessForPropertyName(m, Gr, e.visitNode(Qe.name, L, e.isPropertyName)), e.visitNode(Qe.initializer, L, e.isExpression)); + return e.setTextRange(Ce, Qe), S && e.startOnNewLine(Ce), Ce; + } + function na(Qe, Gr, S) { + var Ce = m.createAssignment(e.createMemberAccessForPropertyName(m, Gr, e.visitNode(Qe.name, L, e.isPropertyName)), m.cloneNode(Qe.name)); + return e.setTextRange(Ce, Qe), S && e.startOnNewLine(Ce), Ce; + } + function Ai(Qe, Gr, S, Ce) { + var qe = m.createAssignment(e.createMemberAccessForPropertyName(m, Gr, e.visitNode(Qe.name, L, e.isPropertyName)), Ur(Qe, Qe, void 0, S)); + return e.setTextRange(qe, Qe), Ce && e.startOnNewLine(qe), qe; + } + function Oi(Qe) { + var Gr = X(7104, 0), S; + if (e.Debug.assert(!!Qe.variableDeclaration, "Catch clause variable should always be present when downleveling ES2015."), e.isBindingPattern(Qe.variableDeclaration.name)) { + var Ce = m.createTempVariable(void 0), qe = m.createVariableDeclaration(Ce); + e.setTextRange(qe, Qe.variableDeclaration); + var br = e.flattenDestructuringBinding(Qe.variableDeclaration, L, p, 0, Ce), Zr = m.createVariableDeclarationList(br); + e.setTextRange(Zr, Qe.variableDeclaration); + var Si = m.createVariableStatement(void 0, Zr); + S = m.updateCatchClause(Qe, qe, ji(Qe.block, Si)); + } else + S = e.visitEachChild(Qe, L, p); + return $(Gr, 0, 0), S; + } + function ji(Qe, Gr) { + var S = e.visitNodes(Qe.statements, L, e.isStatement); + return m.updateBlock(Qe, Ve([Gr], S, true)); + } + function Vi(Qe) { + e.Debug.assert(!e.isComputedPropertyName(Qe.name)); + var Gr = Ur(Qe, e.moveRangePos(Qe, -1), void 0, void 0); + return e.setEmitFlags(Gr, 512 | e.getEmitFlags(Gr)), e.setTextRange(m.createPropertyAssignment(Qe.name, Gr), Qe); + } + function at(Qe) { + e.Debug.assert(!e.isComputedPropertyName(Qe.name)); + var Gr = he; + he = void 0; + var S = X(32670, 65), Ce, qe = e.visitParameterList(Qe.parameters, L, p), br = ii(Qe); + return Qe.kind === 172 ? Ce = m.updateGetAccessorDeclaration(Qe, Qe.decorators, Qe.modifiers, Qe.name, qe, Qe.type, br) : Ce = m.updateSetAccessorDeclaration(Qe, Qe.decorators, Qe.modifiers, Qe.name, qe, br), $(S, 98304, 0), he = Gr, Ce; + } + function At(Qe) { + return e.setTextRange(m.createPropertyAssignment(Qe.name, g(m.cloneNode(Qe.name))), Qe); + } + function ba(Qe) { + return e.visitEachChild(Qe, L, p); + } + function $a(Qe) { + return e.visitEachChild(Qe, L, p); + } + function Qa(Qe) { + return e.some(Qe.elements, e.isSpreadElement) ? Cn(Qe.elements, false, !!Qe.multiLine, !!Qe.elements.hasTrailingComma) : e.visitEachChild(Qe, L, p); + } + function ai(Qe) { + if (e.getEmitFlags(Qe) & 33554432) + return Dn(Qe); + var Gr = e.skipOuterExpressions(Qe.expression); + return Gr.kind === 106 || e.isSuperProperty(Gr) || e.some(Qe.arguments, e.isSpreadElement) ? Ba(Qe, true) : m.updateCallExpression(Qe, e.visitNode(Qe.expression, Y, e.isExpression), void 0, e.visitNodes(Qe.arguments, L, e.isExpression)); + } + function Dn(Qe) { + var Gr = e.cast(e.cast(e.skipOuterExpressions(Qe.expression), e.isArrowFunction).body, e.isBlock), S = function(ys) { + return e.isVariableStatement(ys) && !!e.first(ys.declarationList.declarations).initializer; + }, Ce = he; + he = void 0; + var qe = e.visitNodes(Gr.statements, k, e.isStatement); + he = Ce; + var br = e.filter(qe, S), Zr = e.filter(qe, function(ys) { + return !S(ys); + }), Si = e.cast(e.first(br), e.isVariableStatement), Pi = Si.declarationList.declarations[0], Qi = e.skipOuterExpressions(Pi.initializer), Ct = e.tryCast(Qi, e.isAssignmentExpression); + !Ct && e.isBinaryExpression(Qi) && Qi.operatorToken.kind === 27 && (Ct = e.tryCast(Qi.left, e.isAssignmentExpression)); + var sa = e.cast(Ct ? e.skipOuterExpressions(Ct.right) : Qi, e.isCallExpression), en = e.cast(e.skipOuterExpressions(sa.expression), e.isFunctionExpression), Wa = en.body.statements, qn = 0, mo = -1, So = []; + if (Ct) { + var Go = e.tryCast(Wa[qn], e.isExpressionStatement); + Go && (So.push(Go), qn++), So.push(Wa[qn]), qn++, So.push(m.createExpressionStatement(m.createAssignment(Ct.left, e.cast(Pi.name, e.isIdentifier)))); + } + for (; !e.isReturnStatement(e.elementAt(Wa, mo)); ) + mo--; + return e.addRange(So, Wa, qn, mo), mo < -1 && e.addRange(So, Wa, mo + 1), e.addRange(So, Zr), e.addRange(So, br, 1), m.restoreOuterExpressions(Qe.expression, m.restoreOuterExpressions(Pi.initializer, m.restoreOuterExpressions(Ct && Ct.right, m.updateCallExpression(sa, m.restoreOuterExpressions(sa.expression, m.updateFunctionExpression(en, void 0, void 0, void 0, void 0, en.parameters, void 0, m.updateBlock(en.body, So))), void 0, sa.arguments)))); + } + function ka(Qe) { + return Ba(Qe, false); + } + function Ba(Qe, Gr) { + if (Qe.transformFlags & 16384 || Qe.expression.kind === 106 || e.isSuperProperty(e.skipOuterExpressions(Qe.expression))) { + var S = m.createCallBinding(Qe.expression, K), Ce = S.target, qe = S.thisArg; + Qe.expression.kind === 106 && e.setEmitFlags(qe, 4); + var br = void 0; + if (Qe.transformFlags & 16384 ? br = m.createFunctionApplyCall(e.visitNode(Ce, Y, e.isExpression), Qe.expression.kind === 106 ? qe : e.visitNode(qe, L, e.isExpression), Cn(Qe.arguments, true, false, false)) : br = e.setTextRange(m.createFunctionCallCall(e.visitNode(Ce, Y, e.isExpression), Qe.expression.kind === 106 ? qe : e.visitNode(qe, L, e.isExpression), e.visitNodes(Qe.arguments, L, e.isExpression)), Qe), Qe.expression.kind === 106) { + var Zr = m.createLogicalOr(br, Ie()); + br = Gr ? m.createAssignment(m.createUniqueName("_this", 48), Zr) : Zr; + } + return e.setOriginalNode(br, Qe); + } + return e.visitEachChild(Qe, L, p); + } + function pn(Qe) { + if (e.some(Qe.arguments, e.isSpreadElement)) { + var Gr = m.createCallBinding(m.createPropertyAccessExpression(Qe.expression, "bind"), K), S = Gr.target, Ce = Gr.thisArg; + return m.createNewExpression(m.createFunctionApplyCall(e.visitNode(S, L, e.isExpression), Ce, Cn(m.createNodeArray(Ve([m.createVoidZero()], Qe.arguments, true)), true, false, false)), void 0, []); + } + return e.visitEachChild(Qe, L, p); + } + function Cn(Qe, Gr, S, Ce) { + var qe = Qe.length, br = e.flatten(e.spanMap(Qe, Bi, function(en, Wa, qn, mo) { + return Wa(en, S, Ce && mo === qe); + })); + if (br.length === 1) { + var Zr = br[0]; + if (Gr && !b.downlevelIteration || e.isPackedArrayLiteral(Zr.expression) || e.isCallToHelper(Zr.expression, "___spreadArray")) + return Zr.expression; + } + for (var Si = G(), Pi = br[0].kind !== 0, Qi = Pi ? m.createArrayLiteralExpression() : br[0].expression, Ct = Pi ? 0 : 1; Ct < br.length; Ct++) { + var sa = br[Ct]; + Qi = Si.createSpreadArrayHelper(Qi, sa.expression, sa.kind === 1 && !Gr); + } + return Qi; + } + function Bi(Qe) { + return e.isSpreadElement(Qe) ? kn : Kn; + } + function kn(Qe) { + return e.map(Qe, xn); + } + function xn(Qe) { + var Gr = e.visitNode(Qe.expression, L, e.isExpression), S = e.isCallToHelper(Gr, "___read"), Ce = S || e.isPackedArrayLiteral(Gr) ? 2 : 1; + return b.downlevelIteration && Ce === 1 && !e.isArrayLiteralExpression(Gr) && !S && (Gr = G().createReadHelper(Gr, void 0), Ce = 2), le(Ce, Gr); + } + function Kn(Qe, Gr, S) { + var Ce = m.createArrayLiteralExpression(e.visitNodes(m.createNodeArray(Qe, S), L, e.isExpression), Gr); + return le(0, Ce); + } + function Pn(Qe) { + return e.visitNode(Qe.expression, L, e.isExpression); + } + function eo(Qe) { + return e.setTextRange(m.createStringLiteral(Qe.text), Qe); + } + function Rn(Qe) { + return Qe.hasExtendedUnicodeEscape ? e.setTextRange(m.createStringLiteral(Qe.text), Qe) : Qe; + } + function Da(Qe) { + return Qe.numericLiteralFlags & 384 ? e.setTextRange(m.createNumericLiteral(Qe.text), Qe) : Qe; + } + function bo(Qe) { + return e.processTaggedTemplateExpression(p, Qe, L, R, ee, e.ProcessLevel.All); + } + function Ro(Qe) { + for (var Gr = m.createStringLiteral(Qe.head.text), S = 0, Ce = Qe.templateSpans; S < Ce.length; S++) { + var qe = Ce[S], br = [e.visitNode(qe.expression, L, e.isExpression)]; + qe.literal.text.length > 0 && br.push(m.createStringLiteral(qe.literal.text)), Gr = m.createCallExpression(m.createPropertyAccessExpression(Gr, "concat"), void 0, br); + } + return e.setTextRange(Gr, Qe); + } + function En(Qe) { + return O & 8 && !Qe ? m.createPropertyAccessExpression(m.createUniqueName("_super", 48), "prototype") : m.createUniqueName("_super", 48); + } + function Wn(Qe) { + return Qe.keywordToken === 103 && Qe.name.escapedText === "target" ? (O |= 32768, m.createUniqueName("_newTarget", 48)) : Qe; + } + function to(Qe, Gr, S) { + if (F & 1 && e.isFunctionLike(Gr)) { + var Ce = X(32670, e.getEmitFlags(Gr) & 8 ? 81 : 65); + ie(Qe, Gr, S), $(Ce, 0, 0); + return; + } + ie(Qe, Gr, S); + } + function Co() { + (F & 2) === 0 && (F |= 2, p.enableSubstitution(79)); + } + function Ko() { + (F & 1) === 0 && (F |= 1, p.enableSubstitution(108), p.enableEmitNotification(171), p.enableEmitNotification(169), p.enableEmitNotification(172), p.enableEmitNotification(173), p.enableEmitNotification(214), p.enableEmitNotification(213), p.enableEmitNotification(256)); + } + function Oo(Qe, Gr) { + return Gr = J(Qe, Gr), Qe === 1 ? Pr(Gr) : e.isIdentifier(Gr) ? no(Gr) : Gr; + } + function no(Qe) { + if (F & 2 && !e.isInternalName(Qe)) { + var Gr = e.getParseTreeNode(Qe, e.isIdentifier); + if (Gr && $o(Gr)) + return e.setTextRange(m.getGeneratedNameForNode(Gr), Qe); + } + return Qe; + } + function $o(Qe) { + switch (Qe.parent.kind) { + case 203: + case 257: + case 260: + case 254: + return Qe.parent.name === Qe && se.isDeclarationWithCollidingName(Qe.parent); + } + return false; + } + function Pr(Qe) { + switch (Qe.kind) { + case 79: + return xi(Qe); + case 108: + return pa(Qe); + } + return Qe; + } + function xi(Qe) { + if (F & 2 && !e.isInternalName(Qe)) { + var Gr = se.getReferencedDeclarationWithCollidingName(Qe); + if (Gr && !(e.isClassLike(Gr) && St(Gr, Qe))) + return e.setTextRange(m.getGeneratedNameForNode(e.getNameOfDeclaration(Gr)), Qe); + } + return Qe; + } + function St(Qe, Gr) { + var S = e.getParseTreeNode(Gr); + if (!S || S === Qe || S.end <= Qe.pos || S.pos >= Qe.end) + return false; + for (var Ce = e.getEnclosingBlockScopeContainer(Qe); S; ) { + if (S === Ce || S === Qe) + return false; + if (e.isClassElement(S) && S.parent === Qe) + return true; + S = S.parent; + } + return false; + } + function pa(Qe) { + return F & 1 && O & 16 ? e.setTextRange(m.createUniqueName("_this", 48), Qe) : Qe; + } + function dn(Qe, Gr) { + return e.isStatic(Gr) ? m.getInternalName(Qe) : m.createPropertyAccessExpression(m.getInternalName(Qe), "prototype"); + } + function Jn(Qe, Gr) { + if (!Qe || !Gr || e.some(Qe.parameters)) + return false; + var S = e.firstOrUndefined(Qe.body.statements); + if (!S || !e.nodeIsSynthesized(S) || S.kind !== 238) + return false; + var Ce = S.expression; + if (!e.nodeIsSynthesized(Ce) || Ce.kind !== 208) + return false; + var qe = Ce.expression; + if (!e.nodeIsSynthesized(qe) || qe.kind !== 106) + return false; + var br = e.singleOrUndefined(Ce.arguments); + if (!br || !e.nodeIsSynthesized(br) || br.kind !== 225) + return false; + var Zr = br.expression; + return e.isIdentifier(Zr) && Zr.escapedText === "arguments"; + } + } + e.transformES2015 = N; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.factory, B = C.getCompilerOptions(), E, Q; + (B.jsx === 1 || B.jsx === 3) && (E = C.onEmitNode, C.onEmitNode = p, C.enableEmitNotification(280), C.enableEmitNotification(281), C.enableEmitNotification(279), Q = []); + var le = C.onSubstituteNode; + return C.onSubstituteNode = m, C.enableSubstitution(206), C.enableSubstitution(296), e.chainBundle(C, N); + function N(T) { + return T; + } + function p(T, K, b) { + switch (K.kind) { + case 280: + case 281: + case 279: + var se = K.tagName; + Q[e.getOriginalNodeId(se)] = true; + break; + } + E(T, K, b); + } + function m(T, K) { + return K.id && Q && Q[K.id] ? le(T, K) : (K = le(T, K), e.isPropertyAccessExpression(K) ? G(K) : e.isPropertyAssignment(K) ? oe(K) : K); + } + function G(T) { + if (e.isPrivateIdentifier(T.name)) + return T; + var K = f(T.name); + return K ? e.setTextRange(w.createElementAccessExpression(T.expression, K), T) : T; + } + function oe(T) { + var K = e.isIdentifier(T.name) && f(T.name); + return K ? w.updatePropertyAssignment(T, K, T.initializer) : T; + } + function f(T) { + var K = T.originalKeywordKind || (e.nodeIsSynthesized(T) ? e.stringToToken(e.idText(T)) : void 0); + if (K !== void 0 && K >= 81 && K <= 116) + return e.setTextRange(w.createStringLiteralFromNode(T), T); + } + } + e.transformES5 = a; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(N) { + N[N.Nop = 0] = "Nop", N[N.Statement = 1] = "Statement", N[N.Assign = 2] = "Assign", N[N.Break = 3] = "Break", N[N.BreakWhenTrue = 4] = "BreakWhenTrue", N[N.BreakWhenFalse = 5] = "BreakWhenFalse", N[N.Yield = 6] = "Yield", N[N.YieldStar = 7] = "YieldStar", N[N.Return = 8] = "Return", N[N.Throw = 9] = "Throw", N[N.Endfinally = 10] = "Endfinally"; + })(a || (a = {})); + var C; + (function(N) { + N[N.Open = 0] = "Open", N[N.Close = 1] = "Close"; + })(C || (C = {})); + var w; + (function(N) { + N[N.Exception = 0] = "Exception", N[N.With = 1] = "With", N[N.Switch = 2] = "Switch", N[N.Loop = 3] = "Loop", N[N.Labeled = 4] = "Labeled"; + })(w || (w = {})); + var B; + (function(N) { + N[N.Try = 0] = "Try", N[N.Catch = 1] = "Catch", N[N.Finally = 2] = "Finally", N[N.Done = 3] = "Done"; + })(B || (B = {})); + var E; + (function(N) { + N[N.Next = 0] = "Next", N[N.Throw = 1] = "Throw", N[N.Return = 2] = "Return", N[N.Break = 3] = "Break", N[N.Yield = 4] = "Yield", N[N.YieldStar = 5] = "YieldStar", N[N.Catch = 6] = "Catch", N[N.Endfinally = 7] = "Endfinally"; + })(E || (E = {})); + function Q(N) { + switch (N) { + case 2: + return "return"; + case 3: + return "break"; + case 4: + return "yield"; + case 5: + return "yield*"; + case 7: + return "endfinally"; + default: + return; + } + } + function le(N) { + var p = N.factory, m = N.getEmitHelperFactory, G = N.resumeLexicalEnvironment, oe = N.endLexicalEnvironment, f = N.hoistFunctionDeclaration, T = N.hoistVariableDeclaration, K = N.getCompilerOptions(), b = e.getEmitScriptTarget(K), se = N.getEmitResolver(), J = N.onSubstituteNode; + N.onSubstituteNode = zr; + var ie, R, q, O, ve, ee, he, F, x, X, $ = 1, A, y, V, L, P = 0, k = 0, Y, U, j, H, I, l, d, D; + return e.chainBundle(N, fe); + function fe(Pr) { + if (Pr.isDeclarationFile || (Pr.transformFlags & 2048) === 0) + return Pr; + var xi = e.visitEachChild(Pr, g, N); + return e.addEmitHelpers(xi, N.readEmitHelpers()), xi; + } + function g(Pr) { + var xi = Pr.transformFlags; + return O ? ne(Pr) : q ? ue(Pr) : e.isFunctionLikeDeclaration(Pr) && Pr.asteriskToken ? Fe(Pr) : xi & 2048 ? e.visitEachChild(Pr, g, N) : Pr; + } + function ne(Pr) { + switch (Pr.kind) { + case 240: + return Ur(Pr); + case 241: + return mi(Pr); + case 249: + return pi(Pr); + case 250: + return Xe(Pr); + default: + return ue(Pr); + } + } + function ue(Pr) { + switch (Pr.kind) { + case 256: + return Z(Pr); + case 213: + return Be(Pr); + case 172: + case 173: + return ge(Pr); + case 237: + return ze(Pr); + case 242: + return or(Pr); + case 243: + return si(Pr); + case 246: + return et(Pr); + case 245: + return wi(Pr); + case 247: + return Wt(Pr); + default: + return Pr.transformFlags & 524288 ? We(Pr) : Pr.transformFlags & 2099200 ? e.visitEachChild(Pr, g, N) : Pr; + } + } + function We(Pr) { + switch (Pr.kind) { + case 221: + return Ee(Pr); + case 351: + return _e(Pr); + case 222: + return de(Pr); + case 224: + return ye(Pr); + case 204: + return Ae(Pr); + case 205: + return ir(Pr); + case 207: + return Cr(Pr); + case 208: + return Ye(Pr); + case 209: + return Br(Pr); + default: + return e.visitEachChild(Pr, g, N); + } + } + function Fe(Pr) { + switch (Pr.kind) { + case 256: + return Z(Pr); + case 213: + return Be(Pr); + default: + return e.Debug.failBadSyntaxKind(Pr); + } + } + function Z(Pr) { + if (Pr.asteriskToken) + Pr = e.setOriginalNode(e.setTextRange(p.createFunctionDeclaration(void 0, Pr.modifiers, void 0, Pr.name, void 0, e.visitParameterList(Pr.parameters, g, N), void 0, Re(Pr.body)), Pr), Pr); + else { + var xi = q, St = O; + q = false, O = false, Pr = e.visitEachChild(Pr, g, N), q = xi, O = St; + } + if (q) { + f(Pr); + return; + } else + return Pr; + } + function Be(Pr) { + if (Pr.asteriskToken) + Pr = e.setOriginalNode(e.setTextRange(p.createFunctionExpression(void 0, void 0, Pr.name, void 0, e.visitParameterList(Pr.parameters, g, N), void 0, Re(Pr.body)), Pr), Pr); + else { + var xi = q, St = O; + q = false, O = false, Pr = e.visitEachChild(Pr, g, N), q = xi, O = St; + } + return Pr; + } + function ge(Pr) { + var xi = q, St = O; + return q = false, O = false, Pr = e.visitEachChild(Pr, g, N), q = xi, O = St, Pr; + } + function Re(Pr) { + var xi = [], St = q, pa = O, dn = ve, Jn = ee, Qe = he, Gr = F, S = x, Ce = X, qe = $, br = A, Zr = y, Si = V, Pi = L; + q = true, O = false, ve = void 0, ee = void 0, he = void 0, F = void 0, x = void 0, X = void 0, $ = 1, A = void 0, y = void 0, V = void 0, L = p.createTempVariable(void 0), G(); + var Qi = p.copyPrologue(Pr.statements, xi, false, g); + Er(Pr.statements, Qi); + var Ct = pn(); + return e.insertStatementsAfterStandardPrologue(xi, oe()), xi.push(p.createReturnStatement(Ct)), q = St, O = pa, ve = dn, ee = Jn, he = Qe, F = Gr, x = S, X = Ce, $ = qe, A = br, y = Zr, V = Si, L = Pi, e.setTextRange(p.createBlock(xi, Pr.multiLine), Pr); + } + function ze(Pr) { + if (Pr.transformFlags & 524288) { + ur(Pr.declarationList); + return; + } else { + if (e.getEmitFlags(Pr) & 1048576) + return Pr; + for (var xi = 0, St = Pr.declarationList.declarations; xi < St.length; xi++) { + var pa = St[xi]; + T(pa.name); + } + var dn = e.getInitializedVariables(Pr.declarationList); + return dn.length === 0 ? void 0 : e.setSourceMapRange(p.createExpressionStatement(p.inlineExpressions(e.map(dn, yr))), Pr); + } + } + function Ee(Pr) { + var xi = e.getExpressionAssociativity(Pr); + switch (xi) { + case 0: + return rr(Pr); + case 1: + return He(Pr); + default: + return e.Debug.assertNever(xi); + } + } + function He(Pr) { + var xi = Pr.left, St = Pr.right; + if (Ze(St)) { + var pa = void 0; + switch (xi.kind) { + case 206: + pa = p.updatePropertyAccessExpression(xi, xe(e.visitNode(xi.expression, g, e.isLeftHandSideExpression)), xi.name); + break; + case 207: + pa = p.updateElementAccessExpression(xi, xe(e.visitNode(xi.expression, g, e.isLeftHandSideExpression)), xe(e.visitNode(xi.argumentExpression, g, e.isExpression))); + break; + default: + pa = e.visitNode(xi, g, e.isExpression); + break; + } + var dn = Pr.operatorToken.kind; + return e.isCompoundAssignment(dn) ? e.setTextRange(p.createAssignment(pa, e.setTextRange(p.createBinaryExpression(xe(pa), e.getNonAssignmentOperatorForCompoundAssignment(dn), e.visitNode(St, g, e.isExpression)), Pr)), Pr) : p.updateBinaryExpression(Pr, pa, Pr.operatorToken, e.visitNode(St, g, e.isExpression)); + } + return e.visitEachChild(Pr, g, N); + } + function rr(Pr) { + return Ze(Pr.right) ? e.isLogicalOperator(Pr.operatorToken.kind) ? we(Pr) : Pr.operatorToken.kind === 27 ? Ie(Pr) : p.updateBinaryExpression(Pr, xe(e.visitNode(Pr.left, g, e.isExpression)), Pr.operatorToken, e.visitNode(Pr.right, g, e.isExpression)) : e.visitEachChild(Pr, g, N); + } + function Ie(Pr) { + var xi = []; + return St(Pr.left), St(Pr.right), p.inlineExpressions(xi); + function St(pa) { + e.isBinaryExpression(pa) && pa.operatorToken.kind === 27 ? (St(pa.left), St(pa.right)) : (Ze(pa) && xi.length > 0 && (Ba(1, [p.createExpressionStatement(p.inlineExpressions(xi))]), xi = []), xi.push(e.visitNode(pa, g, e.isExpression))); + } + } + function _e(Pr) { + for (var xi = [], St = 0, pa = Pr.elements; St < pa.length; St++) { + var dn = pa[St]; + e.isBinaryExpression(dn) && dn.operatorToken.kind === 27 ? xi.push(Ie(dn)) : (Ze(dn) && xi.length > 0 && (Ba(1, [p.createExpressionStatement(p.inlineExpressions(xi))]), xi = []), xi.push(e.visitNode(dn, g, e.isExpression))); + } + return p.inlineExpressions(xi); + } + function we(Pr) { + var xi = mr(), St = vr(); + return Vi(St, e.visitNode(Pr.left, g, e.isExpression), Pr.left), Pr.operatorToken.kind === 55 ? ba(xi, St, Pr.left) : At(xi, St, Pr.left), Vi(St, e.visitNode(Pr.right, g, e.isExpression), Pr.right), Ar(xi), St; + } + function de(Pr) { + if (Ze(Pr.whenTrue) || Ze(Pr.whenFalse)) { + var xi = mr(), St = mr(), pa = vr(); + return ba(xi, e.visitNode(Pr.condition, g, e.isExpression), Pr.condition), Vi(pa, e.visitNode(Pr.whenTrue, g, e.isExpression), Pr.whenTrue), at(St), Ar(xi), Vi(pa, e.visitNode(Pr.whenFalse, g, e.isExpression), Pr.whenFalse), Ar(St), pa; + } + return e.visitEachChild(Pr, g, N); + } + function ye(Pr) { + var xi = mr(), St = e.visitNode(Pr.expression, g, e.isExpression); + if (Pr.asteriskToken) { + var pa = (e.getEmitFlags(Pr.expression) & 8388608) === 0 ? e.setTextRange(m().createValuesHelper(St), Pr) : St; + $a(pa, Pr); + } else + Qa(St, Pr); + return Ar(xi), Ai(Pr); + } + function Ae(Pr) { + return er(Pr.elements, void 0, void 0, Pr.multiLine); + } + function er(Pr, xi, St, pa) { + var dn = Sr(Pr), Jn; + if (dn > 0) { + Jn = vr(); + var Qe = e.visitNodes(Pr, g, e.isExpression, 0, dn); + Vi(Jn, p.createArrayLiteralExpression(xi ? Ve([xi], Qe, true) : Qe)), xi = void 0; + } + var Gr = e.reduceLeft(Pr, S, [], dn); + return Jn ? p.createArrayConcatCall(Jn, [p.createArrayLiteralExpression(Gr, pa)]) : e.setTextRange(p.createArrayLiteralExpression(xi ? Ve([xi], Gr, true) : Gr, pa), St); + function S(Ce, qe) { + if (Ze(qe) && Ce.length > 0) { + var br = Jn !== void 0; + Jn || (Jn = vr()), Vi(Jn, br ? p.createArrayConcatCall(Jn, [p.createArrayLiteralExpression(Ce, pa)]) : p.createArrayLiteralExpression(xi ? Ve([xi], Ce, true) : Ce, pa)), xi = void 0, Ce = []; + } + return Ce.push(e.visitNode(qe, g, e.isExpression)), Ce; + } + } + function ir(Pr) { + var xi = Pr.properties, St = Pr.multiLine, pa = Sr(xi), dn = vr(); + Vi(dn, p.createObjectLiteralExpression(e.visitNodes(xi, g, e.isObjectLiteralElementLike, 0, pa), St)); + var Jn = e.reduceLeft(xi, Qe, [], pa); + return Jn.push(St ? e.startOnNewLine(e.setParent(e.setTextRange(p.cloneNode(dn), dn), dn.parent)) : dn), p.inlineExpressions(Jn); + function Qe(Gr, S) { + Ze(S) && Gr.length > 0 && (ji(p.createExpressionStatement(p.inlineExpressions(Gr))), Gr = []); + var Ce = e.createExpressionForObjectLiteralElementLike(p, Pr, S, dn), qe = e.visitNode(Ce, g, e.isExpression); + return qe && (St && e.startOnNewLine(qe), Gr.push(qe)), Gr; + } + } + function Cr(Pr) { + return Ze(Pr.argumentExpression) ? p.updateElementAccessExpression(Pr, xe(e.visitNode(Pr.expression, g, e.isLeftHandSideExpression)), e.visitNode(Pr.argumentExpression, g, e.isExpression)) : e.visitEachChild(Pr, g, N); + } + function Ye(Pr) { + if (!e.isImportCall(Pr) && e.forEach(Pr.arguments, Ze)) { + var xi = p.createCallBinding(Pr.expression, T, b, true), St = xi.target, pa = xi.thisArg; + return e.setOriginalNode(e.setTextRange(p.createFunctionApplyCall(xe(e.visitNode(St, g, e.isLeftHandSideExpression)), pa, er(Pr.arguments)), Pr), Pr); + } + return e.visitEachChild(Pr, g, N); + } + function Br(Pr) { + if (e.forEach(Pr.arguments, Ze)) { + var xi = p.createCallBinding(p.createPropertyAccessExpression(Pr.expression, "bind"), T), St = xi.target, pa = xi.thisArg; + return e.setOriginalNode(e.setTextRange(p.createNewExpression(p.createFunctionApplyCall(xe(e.visitNode(St, g, e.isExpression)), pa, er(Pr.arguments, p.createVoidZero())), void 0, []), Pr), Pr); + } + return e.visitEachChild(Pr, g, N); + } + function Er(Pr, xi) { + xi === void 0 && (xi = 0); + for (var St = Pr.length, pa = xi; pa < St; pa++) + n(Pr[pa]); + } + function Ne(Pr) { + e.isBlock(Pr) ? Er(Pr.statements) : n(Pr); + } + function n(Pr) { + var xi = O; + O || (O = Ze(Pr)), lr(Pr), O = xi; + } + function lr(Pr) { + switch (Pr.kind) { + case 235: + return be(Pr); + case 238: + return Ge(Pr); + case 239: + return Ir(Pr); + case 240: + return wr(Pr); + case 241: + return ii(Pr); + case 242: + return pe(Pr); + case 243: + return qr(Pr); + case 245: + return Di(Pr); + case 246: + return Xi(Pr); + case 247: + return Gi(Pr); + case 248: + return Zt(Pr); + case 249: + return _r(Pr); + case 250: + return ae(Pr); + case 251: + return Jr(Pr); + case 252: + return ti(Pr); + default: + return ji(e.visitNode(Pr, g, e.isStatement)); + } + } + function be(Pr) { + Ze(Pr) ? Er(Pr.statements) : ji(e.visitNode(Pr, g, e.isStatement)); + } + function Ge(Pr) { + ji(e.visitNode(Pr, g, e.isStatement)); + } + function ur(Pr) { + for (var xi = 0, St = Pr.declarations; xi < St.length; xi++) { + var pa = St[xi], dn = p.cloneNode(pa.name); + e.setCommentRange(dn, pa.name), T(dn); + } + for (var Jn = e.getInitializedVariables(Pr), Qe = Jn.length, Gr = 0, S = []; Gr < Qe; ) { + for (var Ce = Gr; Ce < Qe; Ce++) { + var pa = Jn[Ce]; + if (Ze(pa.initializer) && S.length > 0) + break; + S.push(yr(pa)); + } + S.length && (ji(p.createExpressionStatement(p.inlineExpressions(S))), Gr += S.length, S = []); + } + } + function yr(Pr) { + return e.setSourceMapRange(p.createAssignment(e.setSourceMapRange(p.cloneNode(Pr.name), Pr.name), e.visitNode(Pr.initializer, g, e.isExpression)), Pr); + } + function Ir(Pr) { + if (Ze(Pr)) + if (Ze(Pr.thenStatement) || Ze(Pr.elseStatement)) { + var xi = mr(), St = Pr.elseStatement ? mr() : void 0; + ba(Pr.elseStatement ? St : xi, e.visitNode(Pr.expression, g, e.isExpression), Pr.expression), Ne(Pr.thenStatement), Pr.elseStatement && (at(xi), Ar(St), Ne(Pr.elseStatement)), Ar(xi); + } else + ji(e.visitNode(Pr, g, e.isStatement)); + else + ji(e.visitNode(Pr, g, e.isStatement)); + } + function wr(Pr) { + if (Ze(Pr)) { + var xi = mr(), St = mr(); + Ui(xi), Ar(St), Ne(Pr.statement), Ar(xi), At(St, e.visitNode(Pr.expression, g, e.isExpression)), Yi(); + } else + ji(e.visitNode(Pr, g, e.isStatement)); + } + function Ur(Pr) { + return O ? (vi(), Pr = e.visitEachChild(Pr, g, N), Yi(), Pr) : e.visitEachChild(Pr, g, N); + } + function ii(Pr) { + if (Ze(Pr)) { + var xi = mr(), St = Ui(xi); + Ar(xi), ba(St, e.visitNode(Pr.expression, g, e.isExpression)), Ne(Pr.statement), at(xi), Yi(); + } else + ji(e.visitNode(Pr, g, e.isStatement)); + } + function mi(Pr) { + return O ? (vi(), Pr = e.visitEachChild(Pr, g, N), Yi(), Pr) : e.visitEachChild(Pr, g, N); + } + function pe(Pr) { + if (Ze(Pr)) { + var xi = mr(), St = mr(), pa = Ui(St); + if (Pr.initializer) { + var dn = Pr.initializer; + e.isVariableDeclarationList(dn) ? ur(dn) : ji(e.setTextRange(p.createExpressionStatement(e.visitNode(dn, g, e.isExpression)), dn)); + } + Ar(xi), Pr.condition && ba(pa, e.visitNode(Pr.condition, g, e.isExpression)), Ne(Pr.statement), Ar(St), Pr.incrementor && ji(e.setTextRange(p.createExpressionStatement(e.visitNode(Pr.incrementor, g, e.isExpression)), Pr.incrementor)), at(xi), Yi(); + } else + ji(e.visitNode(Pr, g, e.isStatement)); + } + function or(Pr) { + O && vi(); + var xi = Pr.initializer; + if (xi && e.isVariableDeclarationList(xi)) { + for (var St = 0, pa = xi.declarations; St < pa.length; St++) { + var dn = pa[St]; + T(dn.name); + } + var Jn = e.getInitializedVariables(xi); + Pr = p.updateForStatement(Pr, Jn.length > 0 ? p.inlineExpressions(e.map(Jn, yr)) : void 0, e.visitNode(Pr.condition, g, e.isExpression), e.visitNode(Pr.incrementor, g, e.isExpression), e.visitIterationBody(Pr.statement, g, N)); + } else + Pr = e.visitEachChild(Pr, g, N); + return O && Yi(), Pr; + } + function qr(Pr) { + if (Ze(Pr)) { + var xi = vr(), St = vr(), pa = p.createLoopVariable(), dn = Pr.initializer; + T(pa), Vi(xi, p.createArrayLiteralExpression()), ji(p.createForInStatement(St, e.visitNode(Pr.expression, g, e.isExpression), p.createExpressionStatement(p.createCallExpression(p.createPropertyAccessExpression(xi, "push"), void 0, [St])))), Vi(pa, p.createNumericLiteral(0)); + var Jn = mr(), Qe = mr(), Gr = Ui(Qe); + Ar(Jn), ba(Gr, p.createLessThan(pa, p.createPropertyAccessExpression(xi, "length"))); + var S = void 0; + if (e.isVariableDeclarationList(dn)) { + for (var Ce = 0, qe = dn.declarations; Ce < qe.length; Ce++) { + var br = qe[Ce]; + T(br.name); + } + S = p.cloneNode(dn.declarations[0].name); + } else + S = e.visitNode(dn, g, e.isExpression), e.Debug.assert(e.isLeftHandSideExpression(S)); + Vi(S, p.createElementAccessExpression(xi, pa)), Ne(Pr.statement), Ar(Qe), ji(p.createExpressionStatement(p.createPostfixIncrement(pa))), at(Jn), Yi(); + } else + ji(e.visitNode(Pr, g, e.isStatement)); + } + function si(Pr) { + O && vi(); + var xi = Pr.initializer; + if (e.isVariableDeclarationList(xi)) { + for (var St = 0, pa = xi.declarations; St < pa.length; St++) { + var dn = pa[St]; + T(dn.name); + } + Pr = p.updateForInStatement(Pr, xi.declarations[0].name, e.visitNode(Pr.expression, g, e.isExpression), e.visitNode(Pr.statement, g, e.isStatement, p.liftToBlock)); + } else + Pr = e.visitEachChild(Pr, g, N); + return O && Yi(), Pr; + } + function Di(Pr) { + var xi = Fi(Pr.label ? e.idText(Pr.label) : void 0); + xi > 0 ? at(xi, Pr) : ji(Pr); + } + function wi(Pr) { + if (O) { + var xi = Fi(Pr.label && e.idText(Pr.label)); + if (xi > 0) + return wt(xi, Pr); + } + return e.visitEachChild(Pr, g, N); + } + function Xi(Pr) { + var xi = Ki(Pr.label ? e.idText(Pr.label) : void 0); + xi > 0 ? at(xi, Pr) : ji(Pr); + } + function et(Pr) { + if (O) { + var xi = Ki(Pr.label && e.idText(Pr.label)); + if (xi > 0) + return wt(xi, Pr); + } + return e.visitEachChild(Pr, g, N); + } + function Gi(Pr) { + ai(e.visitNode(Pr.expression, g, e.isExpression), Pr); + } + function Wt(Pr) { + return na(e.visitNode(Pr.expression, g, e.isExpression), Pr); + } + function Zt(Pr) { + Ze(Pr) ? (Ue(xe(e.visitNode(Pr.expression, g, e.isExpression))), Ne(Pr.statement), fr()) : ji(e.visitNode(Pr, g, e.isStatement)); + } + function _r(Pr) { + if (Ze(Pr.caseBlock)) { + for (var xi = Pr.caseBlock, St = xi.clauses.length, pa = ct(), dn = xe(e.visitNode(Pr.expression, g, e.isExpression)), Jn = [], Qe = -1, Gr = 0; Gr < St; Gr++) { + var S = xi.clauses[Gr]; + Jn.push(mr()), S.kind === 290 && Qe === -1 && (Qe = Gr); + } + for (var Ce = 0, qe = []; Ce < St; ) { + for (var br = 0, Gr = Ce; Gr < St; Gr++) { + var S = xi.clauses[Gr]; + if (S.kind === 289) { + if (Ze(S.expression) && qe.length > 0) + break; + qe.push(p.createCaseClause(e.visitNode(S.expression, g, e.isExpression), [wt(Jn[Gr], S.expression)])); + } else + br++; + } + qe.length && (ji(p.createSwitchStatement(dn, p.createCaseBlock(qe))), Ce += qe.length, qe = []), br > 0 && (Ce += br, br = 0); + } + Qe >= 0 ? at(Jn[Qe]) : at(pa); + for (var Gr = 0; Gr < St; Gr++) + Ar(Jn[Gr]), Er(xi.clauses[Gr].statements); + Li(); + } else + ji(e.visitNode(Pr, g, e.isStatement)); + } + function pi(Pr) { + return O && Wi(), Pr = e.visitEachChild(Pr, g, N), O && Li(), Pr; + } + function ae(Pr) { + Ze(Pr) ? (Mt(e.idText(Pr.label)), Ne(Pr.statement), xt()) : ji(e.visitNode(Pr, g, e.isStatement)); + } + function Xe(Pr) { + return O && nt(e.idText(Pr.label)), Pr = e.visitEachChild(Pr, g, N), O && xt(), Pr; + } + function Jr(Pr) { + var xi; + Dn(e.visitNode((xi = Pr.expression) !== null && xi !== void 0 ? xi : p.createVoidZero(), g, e.isExpression), Pr); + } + function ti(Pr) { + Ze(Pr) ? (De(), Ne(Pr.tryBlock), Pr.catchClause && (gr(Pr.catchClause.variableDeclaration), Ne(Pr.catchClause.block)), Pr.finallyBlock && (Vr(), Ne(Pr.finallyBlock)), Tr()) : ji(e.visitEachChild(Pr, g, N)); + } + function Ze(Pr) { + return !!Pr && (Pr.transformFlags & 524288) !== 0; + } + function Sr(Pr) { + for (var xi = Pr.length, St = 0; St < xi; St++) + if (Ze(Pr[St])) + return St; + return -1; + } + function zr(Pr, xi) { + return xi = J(Pr, xi), Pr === 1 ? Wr(xi) : xi; + } + function Wr(Pr) { + return e.isIdentifier(Pr) ? Je(Pr) : Pr; + } + function Je(Pr) { + if (!e.isGeneratedIdentifier(Pr) && ie && ie.has(e.idText(Pr))) { + var xi = e.getOriginalNode(Pr); + if (e.isIdentifier(xi) && xi.parent) { + var St = se.getReferencedValueDeclaration(xi); + if (St) { + var pa = R[e.getOriginalNodeId(St)]; + if (pa) { + var dn = e.setParent(e.setTextRange(p.cloneNode(pa), pa), pa.parent); + return e.setSourceMapRange(dn, Pr), e.setCommentRange(dn, Pr), dn; + } + } + } + } + return Pr; + } + function xe(Pr) { + if (e.isGeneratedIdentifier(Pr) || e.getEmitFlags(Pr) & 4096) + return Pr; + var xi = p.createTempVariable(T); + return Vi(xi, Pr, Pr), xi; + } + function vr(Pr) { + var xi = Pr ? p.createUniqueName(Pr) : p.createTempVariable(void 0); + return T(xi), xi; + } + function mr() { + x || (x = []); + var Pr = $; + return $++, x[Pr] = -1, Pr; + } + function Ar(Pr) { + e.Debug.assert(x !== void 0, "No labels were defined."), x[Pr] = A ? A.length : 0; + } + function Oe(Pr) { + ve || (ve = [], he = [], ee = [], F = []); + var xi = he.length; + return he[xi] = 0, ee[xi] = A ? A.length : 0, ve[xi] = Pr, F.push(Pr), xi; + } + function nr() { + var Pr = Mr(); + if (Pr === void 0) + return e.Debug.fail("beginBlock was never called."); + var xi = he.length; + return he[xi] = 1, ee[xi] = A ? A.length : 0, ve[xi] = Pr, F.pop(), Pr; + } + function Mr() { + return e.lastOrUndefined(F); + } + function Pe() { + var Pr = Mr(); + return Pr && Pr.kind; + } + function Ue(Pr) { + var xi = mr(), St = mr(); + Ar(xi), Oe({ kind: 1, expression: Pr, startLabel: xi, endLabel: St }); + } + function fr() { + e.Debug.assert(Pe() === 1); + var Pr = nr(); + Ar(Pr.endLabel); + } + function De() { + var Pr = mr(), xi = mr(); + return Ar(Pr), Oe({ kind: 0, state: 0, startLabel: Pr, endLabel: xi }), Oi(), xi; + } + function gr(Pr) { + e.Debug.assert(Pe() === 0); + var xi; + if (e.isGeneratedIdentifier(Pr.name)) + xi = Pr.name, T(Pr.name); + else { + var St = e.idText(Pr.name); + xi = vr(St), ie || (ie = new e.Map(), R = [], N.enableSubstitution(79)), ie.set(St, true), R[e.getOriginalNodeId(Pr)] = xi; + } + var pa = Mr(); + e.Debug.assert(pa.state < 1); + var dn = pa.endLabel; + at(dn); + var Jn = mr(); + Ar(Jn), pa.state = 1, pa.catchVariable = xi, pa.catchLabel = Jn, Vi(xi, p.createCallExpression(p.createPropertyAccessExpression(L, "sent"), void 0, [])), Oi(); + } + function Vr() { + e.Debug.assert(Pe() === 0); + var Pr = Mr(); + e.Debug.assert(Pr.state < 2); + var xi = Pr.endLabel; + at(xi); + var St = mr(); + Ar(St), Pr.state = 2, Pr.finallyLabel = St; + } + function Tr() { + e.Debug.assert(Pe() === 0); + var Pr = nr(), xi = Pr.state; + xi < 2 ? at(Pr.endLabel) : ka(), Ar(Pr.endLabel), Oi(), Pr.state = 3; + } + function vi() { + Oe({ kind: 3, isScript: true, breakLabel: -1, continueLabel: -1 }); + } + function Ui(Pr) { + var xi = mr(); + return Oe({ kind: 3, isScript: false, breakLabel: xi, continueLabel: Pr }), xi; + } + function Yi() { + e.Debug.assert(Pe() === 3); + var Pr = nr(), xi = Pr.breakLabel; + Pr.isScript || Ar(xi); + } + function Wi() { + Oe({ kind: 2, isScript: true, breakLabel: -1 }); + } + function ct() { + var Pr = mr(); + return Oe({ kind: 2, isScript: false, breakLabel: Pr }), Pr; + } + function Li() { + e.Debug.assert(Pe() === 2); + var Pr = nr(), xi = Pr.breakLabel; + Pr.isScript || Ar(xi); + } + function nt(Pr) { + Oe({ kind: 4, isScript: true, labelText: Pr, breakLabel: -1 }); + } + function Mt(Pr) { + var xi = mr(); + Oe({ kind: 4, isScript: false, labelText: Pr, breakLabel: xi }); + } + function xt() { + e.Debug.assert(Pe() === 4); + var Pr = nr(); + Pr.isScript || Ar(Pr.breakLabel); + } + function ut(Pr) { + return Pr.kind === 2 || Pr.kind === 3; + } + function Dt(Pr) { + return Pr.kind === 4; + } + function Rt(Pr) { + return Pr.kind === 3; + } + function Ii(Pr, xi) { + for (var St = xi; St >= 0; St--) { + var pa = F[St]; + if (Dt(pa)) { + if (pa.labelText === Pr) + return true; + } else + break; + } + return false; + } + function Ki(Pr) { + if (F) + if (Pr) + for (var xi = F.length - 1; xi >= 0; xi--) { + var St = F[xi]; + if (Dt(St) && St.labelText === Pr) + return St.breakLabel; + if (ut(St) && Ii(Pr, xi - 1)) + return St.breakLabel; + } + else + for (var xi = F.length - 1; xi >= 0; xi--) { + var St = F[xi]; + if (ut(St)) + return St.breakLabel; + } + return 0; + } + function Fi(Pr) { + if (F) + if (Pr) + for (var xi = F.length - 1; xi >= 0; xi--) { + var St = F[xi]; + if (Rt(St) && Ii(Pr, xi - 1)) + return St.continueLabel; + } + else + for (var xi = F.length - 1; xi >= 0; xi--) { + var St = F[xi]; + if (Rt(St)) + return St.continueLabel; + } + return 0; + } + function ui(Pr) { + if (Pr !== void 0 && Pr > 0) { + X === void 0 && (X = []); + var xi = p.createNumericLiteral(-1); + return X[Pr] === void 0 ? X[Pr] = [xi] : X[Pr].push(xi), xi; + } + return p.createOmittedExpression(); + } + function Bt(Pr) { + var xi = p.createNumericLiteral(Pr); + return e.addSyntheticTrailingComment(xi, 3, Q(Pr)), xi; + } + function wt(Pr, xi) { + return e.Debug.assertLessThan(0, Pr, "Invalid label"), e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression([Bt(3), ui(Pr)])), xi); + } + function na(Pr, xi) { + return e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression(Pr ? [Bt(2), Pr] : [Bt(2)])), xi); + } + function Ai(Pr) { + return e.setTextRange(p.createCallExpression(p.createPropertyAccessExpression(L, "sent"), void 0, []), Pr); + } + function Oi() { + Ba(0); + } + function ji(Pr) { + Pr ? Ba(1, [Pr]) : Oi(); + } + function Vi(Pr, xi, St) { + Ba(2, [Pr, xi], St); + } + function at(Pr, xi) { + Ba(3, [Pr], xi); + } + function At(Pr, xi, St) { + Ba(4, [Pr, xi], St); + } + function ba(Pr, xi, St) { + Ba(5, [Pr, xi], St); + } + function $a(Pr, xi) { + Ba(7, [Pr], xi); + } + function Qa(Pr, xi) { + Ba(6, [Pr], xi); + } + function ai(Pr, xi) { + Ba(8, [Pr], xi); + } + function Dn(Pr, xi) { + Ba(9, [Pr], xi); + } + function ka() { + Ba(10); + } + function Ba(Pr, xi, St) { + A === void 0 && (A = [], y = [], V = []), x === void 0 && Ar(mr()); + var pa = A.length; + A[pa] = Pr, y[pa] = xi, V[pa] = St; + } + function pn() { + P = 0, k = 0, Y = void 0, U = false, j = false, H = void 0, I = void 0, l = void 0, d = void 0, D = void 0; + var Pr = Cn(); + return m().createGeneratorHelper(e.setEmitFlags(p.createFunctionExpression(void 0, void 0, void 0, void 0, [p.createParameterDeclaration(void 0, void 0, void 0, L)], void 0, p.createBlock(Pr, Pr.length > 0)), 524288)); + } + function Cn() { + if (A) { + for (var Pr = 0; Pr < A.length; Pr++) + Da(Pr); + kn(A.length); + } else + kn(0); + if (H) { + var xi = p.createPropertyAccessExpression(L, "label"), St = p.createSwitchStatement(xi, p.createCaseBlock(H)); + return [e.startOnNewLine(St)]; + } + return I || []; + } + function Bi() { + !I || (Kn(!U), U = false, j = false, k++); + } + function kn(Pr) { + xn(Pr) && (Pn(Pr), D = void 0, Wn(void 0, void 0)), I && H && Kn(false), eo(); + } + function xn(Pr) { + if (!j) + return true; + if (!x || !X) + return false; + for (var xi = 0; xi < x.length; xi++) + if (x[xi] === Pr && X[xi]) + return true; + return false; + } + function Kn(Pr) { + if (H || (H = []), I) { + if (D) + for (var xi = D.length - 1; xi >= 0; xi--) { + var St = D[xi]; + I = [p.createWithStatement(St.expression, p.createBlock(I))]; + } + if (d) { + var pa = d.startLabel, dn = d.catchLabel, Jn = d.finallyLabel, Qe = d.endLabel; + I.unshift(p.createExpressionStatement(p.createCallExpression(p.createPropertyAccessExpression(p.createPropertyAccessExpression(L, "trys"), "push"), void 0, [p.createArrayLiteralExpression([ui(pa), ui(dn), ui(Jn), ui(Qe)])]))), d = void 0; + } + Pr && I.push(p.createExpressionStatement(p.createAssignment(p.createPropertyAccessExpression(L, "label"), p.createNumericLiteral(k + 1)))); + } + H.push(p.createCaseClause(p.createNumericLiteral(k), I || [])), I = void 0; + } + function Pn(Pr) { + if (!!x) + for (var xi = 0; xi < x.length; xi++) + x[xi] === Pr && (Bi(), Y === void 0 && (Y = []), Y[k] === void 0 ? Y[k] = [xi] : Y[k].push(xi)); + } + function eo() { + if (X !== void 0 && Y !== void 0) + for (var Pr = 0; Pr < Y.length; Pr++) { + var xi = Y[Pr]; + if (xi !== void 0) + for (var St = 0, pa = xi; St < pa.length; St++) { + var dn = pa[St], Jn = X[dn]; + if (Jn !== void 0) + for (var Qe = 0, Gr = Jn; Qe < Gr.length; Qe++) { + var S = Gr[Qe]; + S.text = String(Pr); + } + } + } + } + function Rn(Pr) { + if (ve) + for (; P < he.length && ee[P] <= Pr; P++) { + var xi = ve[P], St = he[P]; + switch (xi.kind) { + case 0: + St === 0 ? (l || (l = []), I || (I = []), l.push(d), d = xi) : St === 1 && (d = l.pop()); + break; + case 1: + St === 0 ? (D || (D = []), D.push(xi)) : St === 1 && D.pop(); + break; + } + } + } + function Da(Pr) { + if (Pn(Pr), Rn(Pr), !U) { + U = false, j = false; + var xi = A[Pr]; + if (xi !== 0) { + if (xi === 10) + return $o(); + var St = y[Pr]; + if (xi === 1) + return bo(St[0]); + var pa = V[Pr]; + switch (xi) { + case 2: + return Ro(St[0], St[1], pa); + case 3: + return to(St[0], pa); + case 4: + return Co(St[0], St[1], pa); + case 5: + return Ko(St[0], St[1], pa); + case 6: + return Oo(St[0], pa); + case 7: + return no(St[0], pa); + case 8: + return Wn(St[0], pa); + case 9: + return En(St[0], pa); + } + } + } + } + function bo(Pr) { + Pr && (I ? I.push(Pr) : I = [Pr]); + } + function Ro(Pr, xi, St) { + bo(e.setTextRange(p.createExpressionStatement(p.createAssignment(Pr, xi)), St)); + } + function En(Pr, xi) { + U = true, j = true, bo(e.setTextRange(p.createThrowStatement(Pr), xi)); + } + function Wn(Pr, xi) { + U = true, j = true, bo(e.setEmitFlags(e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression(Pr ? [Bt(2), Pr] : [Bt(2)])), xi), 384)); + } + function to(Pr, xi) { + U = true, bo(e.setEmitFlags(e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression([Bt(3), ui(Pr)])), xi), 384)); + } + function Co(Pr, xi, St) { + bo(e.setEmitFlags(p.createIfStatement(xi, e.setEmitFlags(e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression([Bt(3), ui(Pr)])), St), 384)), 1)); + } + function Ko(Pr, xi, St) { + bo(e.setEmitFlags(p.createIfStatement(p.createLogicalNot(xi), e.setEmitFlags(e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression([Bt(3), ui(Pr)])), St), 384)), 1)); + } + function Oo(Pr, xi) { + U = true, bo(e.setEmitFlags(e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression(Pr ? [Bt(4), Pr] : [Bt(4)])), xi), 384)); + } + function no(Pr, xi) { + U = true, bo(e.setEmitFlags(e.setTextRange(p.createReturnStatement(p.createArrayLiteralExpression([Bt(5), Pr])), xi), 384)); + } + function $o() { + U = true, bo(p.createReturnStatement(p.createArrayLiteralExpression([Bt(7)]))); + } + } + e.transformGenerators = le; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(w) { + function B(pe) { + switch (pe) { + case e.ModuleKind.AMD: + return F; + case e.ModuleKind.UMD: + return x; + default: + return he; + } + } + var E = w.factory, Q = w.getEmitHelperFactory, le = w.startLexicalEnvironment, N = w.endLexicalEnvironment, p = w.hoistVariableDeclaration, m = w.getCompilerOptions(), G = w.getEmitResolver(), oe = w.getEmitHost(), f = e.getEmitScriptTarget(m), T = e.getEmitModuleKind(m), K = w.onSubstituteNode, b = w.onEmitNode; + w.onSubstituteNode = Ge, w.onEmitNode = be, w.enableSubstitution(208), w.enableSubstitution(210), w.enableSubstitution(79), w.enableSubstitution(221), w.enableSubstitution(297), w.enableEmitNotification(305); + var se = [], J = [], ie, R, q = [], O; + return e.chainBundle(w, ve); + function ve(pe) { + if (pe.isDeclarationFile || !(e.isEffectiveExternalModule(pe, m) || pe.transformFlags & 4194304 || e.isJsonSourceFile(pe) && e.hasJsonModuleEmitEnabled(m) && e.outFile(m))) + return pe; + ie = pe, R = e.collectExternalModuleInfo(w, pe, G, m), se[e.getOriginalNodeId(pe)] = R; + var or = B(T), qr = or(pe); + return ie = void 0, R = void 0, O = false, qr; + } + function ee() { + return !!(!R.exportEquals && e.isExternalModule(ie)); + } + function he(pe) { + le(); + var or = [], qr = e.getStrictOptionValue(m, "alwaysStrict") || !m.noImplicitUseStrict && e.isExternalModule(ie), si = E.copyPrologue(pe.statements, or, qr && !e.isJsonSourceFile(pe), V); + if (ee() && e.append(or, Er()), e.length(R.exportedNames)) + for (var Di = 50, wi = 0; wi < R.exportedNames.length; wi += Di) + e.append(or, E.createExpressionStatement(e.reduceLeft(R.exportedNames.slice(wi, wi + Di), function(et, Gi) { + return E.createAssignment(E.createPropertyAccessExpression(E.createIdentifier("exports"), E.createIdentifier(e.idText(Gi))), et); + }, E.createVoidZero()))); + e.append(or, e.visitNode(R.externalHelpersImportDeclaration, V, e.isStatement)), e.addRange(or, e.visitNodes(pe.statements, V, e.isStatement, si)), y(or, false), e.insertStatementsAfterStandardPrologue(or, N()); + var Xi = E.updateSourceFile(pe, e.setTextRange(E.createNodeArray(or), pe.statements)); + return e.addEmitHelpers(Xi, w.readEmitHelpers()), Xi; + } + function F(pe) { + var or = E.createIdentifier("define"), qr = e.tryGetModuleNameFromFile(E, pe, oe, m), si = e.isJsonSourceFile(pe) && pe, Di = X(pe, true), wi = Di.aliasedModuleNames, Xi = Di.unaliasedModuleNames, et = Di.importAliasNames, Gi = E.updateSourceFile(pe, e.setTextRange(E.createNodeArray([E.createExpressionStatement(E.createCallExpression(or, void 0, Ve(Ve([], qr ? [qr] : [], true), [E.createArrayLiteralExpression(si ? e.emptyArray : Ve(Ve([E.createStringLiteral("require"), E.createStringLiteral("exports")], wi, true), Xi, true)), si ? si.statements.length ? si.statements[0].expression : E.createObjectLiteralExpression() : E.createFunctionExpression(void 0, void 0, void 0, void 0, Ve([E.createParameterDeclaration(void 0, void 0, void 0, "require"), E.createParameterDeclaration(void 0, void 0, void 0, "exports")], et, true), void 0, A(pe))], false)))]), pe.statements)); + return e.addEmitHelpers(Gi, w.readEmitHelpers()), Gi; + } + function x(pe) { + var or = X(pe, false), qr = or.aliasedModuleNames, si = or.unaliasedModuleNames, Di = or.importAliasNames, wi = e.tryGetModuleNameFromFile(E, pe, oe, m), Xi = E.createFunctionExpression(void 0, void 0, void 0, void 0, [E.createParameterDeclaration(void 0, void 0, void 0, "factory")], void 0, e.setTextRange(E.createBlock([E.createIfStatement(E.createLogicalAnd(E.createTypeCheck(E.createIdentifier("module"), "object"), E.createTypeCheck(E.createPropertyAccessExpression(E.createIdentifier("module"), "exports"), "object")), E.createBlock([E.createVariableStatement(void 0, [E.createVariableDeclaration("v", void 0, void 0, E.createCallExpression(E.createIdentifier("factory"), void 0, [E.createIdentifier("require"), E.createIdentifier("exports")]))]), e.setEmitFlags(E.createIfStatement(E.createStrictInequality(E.createIdentifier("v"), E.createIdentifier("undefined")), E.createExpressionStatement(E.createAssignment(E.createPropertyAccessExpression(E.createIdentifier("module"), "exports"), E.createIdentifier("v")))), 1)]), E.createIfStatement(E.createLogicalAnd(E.createTypeCheck(E.createIdentifier("define"), "function"), E.createPropertyAccessExpression(E.createIdentifier("define"), "amd")), E.createBlock([E.createExpressionStatement(E.createCallExpression(E.createIdentifier("define"), void 0, Ve(Ve([], wi ? [wi] : [], true), [E.createArrayLiteralExpression(Ve(Ve([E.createStringLiteral("require"), E.createStringLiteral("exports")], qr, true), si, true)), E.createIdentifier("factory")], false)))])))], true), void 0)), et = E.updateSourceFile(pe, e.setTextRange(E.createNodeArray([E.createExpressionStatement(E.createCallExpression(Xi, void 0, [E.createFunctionExpression(void 0, void 0, void 0, void 0, Ve([E.createParameterDeclaration(void 0, void 0, void 0, "require"), E.createParameterDeclaration(void 0, void 0, void 0, "exports")], Di, true), void 0, A(pe))]))]), pe.statements)); + return e.addEmitHelpers(et, w.readEmitHelpers()), et; + } + function X(pe, or) { + for (var qr = [], si = [], Di = [], wi = 0, Xi = pe.amdDependencies; wi < Xi.length; wi++) { + var et = Xi[wi]; + et.name ? (qr.push(E.createStringLiteral(et.path)), Di.push(E.createParameterDeclaration(void 0, void 0, void 0, et.name))) : si.push(E.createStringLiteral(et.path)); + } + for (var Gi = 0, Wt = R.externalImports; Gi < Wt.length; Gi++) { + var Zt = Wt[Gi], _r = e.getExternalModuleNameLiteral(E, Zt, ie, oe, G, m), pi = e.getLocalNameForExternalImport(E, Zt, ie); + _r && (or && pi ? (e.setEmitFlags(pi, 4), qr.push(_r), Di.push(E.createParameterDeclaration(void 0, void 0, void 0, pi))) : si.push(_r)); + } + return { aliasedModuleNames: qr, unaliasedModuleNames: si, importAliasNames: Di }; + } + function $(pe) { + if (!(e.isImportEqualsDeclaration(pe) || e.isExportDeclaration(pe) || !e.getExternalModuleNameLiteral(E, pe, ie, oe, G, m))) { + var or = e.getLocalNameForExternalImport(E, pe, ie), qr = We(pe, or); + if (qr !== or) + return E.createExpressionStatement(E.createAssignment(or, qr)); + } + } + function A(pe) { + le(); + var or = [], qr = E.copyPrologue(pe.statements, or, !m.noImplicitUseStrict, V); + ee() && e.append(or, Er()), e.length(R.exportedNames) && e.append(or, E.createExpressionStatement(e.reduceLeft(R.exportedNames, function(Di, wi) { + return E.createAssignment(E.createPropertyAccessExpression(E.createIdentifier("exports"), E.createIdentifier(e.idText(wi))), Di); + }, E.createVoidZero()))), e.append(or, e.visitNode(R.externalHelpersImportDeclaration, V, e.isStatement)), T === e.ModuleKind.AMD && e.addRange(or, e.mapDefined(R.externalImports, $)), e.addRange(or, e.visitNodes(pe.statements, V, e.isStatement, qr)), y(or, true), e.insertStatementsAfterStandardPrologue(or, N()); + var si = E.createBlock(or, true); + return O && e.addEmitHelper(si, C), si; + } + function y(pe, or) { + if (R.exportEquals) { + var qr = e.visitNode(R.exportEquals.expression, P); + if (qr) + if (or) { + var si = E.createReturnStatement(qr); + e.setTextRange(si, R.exportEquals), e.setEmitFlags(si, 1920), pe.push(si); + } else { + var si = E.createExpressionStatement(E.createAssignment(E.createPropertyAccessExpression(E.createIdentifier("module"), "exports"), qr)); + e.setTextRange(si, R.exportEquals), e.setEmitFlags(si, 1536), pe.push(si); + } + } + } + function V(pe) { + switch (pe.kind) { + case 266: + return Fe(pe); + case 265: + return Be(pe); + case 272: + return ge(pe); + case 271: + return Re(pe); + case 237: + return He(pe); + case 256: + return ze(pe); + case 257: + return Ee(pe); + case 352: + return _e(pe); + case 353: + return de(pe); + default: + return P(pe); + } + } + function L(pe, or) { + if (!(pe.transformFlags & 71307264)) + return pe; + switch (pe.kind) { + case 242: + return j(pe); + case 238: + return H(pe); + case 212: + return I(pe, or); + case 350: + return l(pe, or); + case 208: + if (e.isImportCall(pe) && ie.impliedNodeFormat === void 0) + return D(pe); + break; + case 221: + if (e.isDestructuringAssignment(pe)) + return U(pe, or); + break; + case 219: + case 220: + return d(pe, or); + } + return e.visitEachChild(pe, P, w); + } + function P(pe) { + return L(pe, false); + } + function k(pe) { + return L(pe, true); + } + function Y(pe) { + if (e.isObjectLiteralExpression(pe)) + for (var or = 0, qr = pe.properties; or < qr.length; or++) { + var si = qr[or]; + switch (si.kind) { + case 296: + if (Y(si.initializer)) + return true; + break; + case 297: + if (Y(si.name)) + return true; + break; + case 298: + if (Y(si.expression)) + return true; + break; + case 169: + case 172: + case 173: + return false; + default: + e.Debug.assertNever(si, "Unhandled object member kind"); + } + } + else if (e.isArrayLiteralExpression(pe)) + for (var Di = 0, wi = pe.elements; Di < wi.length; Di++) { + var si = wi[Di]; + if (e.isSpreadElement(si)) { + if (Y(si.expression)) + return true; + } else if (Y(si)) + return true; + } + else if (e.isIdentifier(pe)) + return e.length(mi(pe)) > (e.isExportName(pe) ? 1 : 0); + return false; + } + function U(pe, or) { + return Y(pe.left) ? e.flattenDestructuringAssignment(pe, P, w, 0, !or, rr) : e.visitEachChild(pe, P, w); + } + function j(pe) { + return E.updateForStatement(pe, e.visitNode(pe.initializer, k, e.isForInitializer), e.visitNode(pe.condition, P, e.isExpression), e.visitNode(pe.incrementor, k, e.isExpression), e.visitIterationBody(pe.statement, P, w)); + } + function H(pe) { + return E.updateExpressionStatement(pe, e.visitNode(pe.expression, k, e.isExpression)); + } + function I(pe, or) { + return E.updateParenthesizedExpression(pe, e.visitNode(pe.expression, or ? k : P, e.isExpression)); + } + function l(pe, or) { + return E.updatePartiallyEmittedExpression(pe, e.visitNode(pe.expression, or ? k : P, e.isExpression)); + } + function d(pe, or) { + if ((pe.operator === 45 || pe.operator === 46) && e.isIdentifier(pe.operand) && !e.isGeneratedIdentifier(pe.operand) && !e.isLocalName(pe.operand) && !e.isDeclarationNameOfEnumOrNamespace(pe.operand)) { + var qr = mi(pe.operand); + if (qr) { + var si = void 0, Di = e.visitNode(pe.operand, P, e.isExpression); + e.isPrefixUnaryExpression(pe) ? Di = E.updatePrefixUnaryExpression(pe, Di) : (Di = E.updatePostfixUnaryExpression(pe, Di), or || (si = E.createTempVariable(p), Di = E.createAssignment(si, Di), e.setTextRange(Di, pe)), Di = E.createComma(Di, E.cloneNode(pe.operand)), e.setTextRange(Di, pe)); + for (var wi = 0, Xi = qr; wi < Xi.length; wi++) { + var et = Xi[wi]; + q[e.getNodeId(Di)] = true, Di = n(et, Di), e.setTextRange(Di, pe); + } + return si && (q[e.getNodeId(Di)] = true, Di = E.createComma(Di, si), e.setTextRange(Di, pe)), Di; + } + } + return e.visitEachChild(pe, P, w); + } + function D(pe) { + var or = e.getExternalModuleNameLiteral(E, pe, ie, oe, G, m), qr = e.visitNode(e.firstOrUndefined(pe.arguments), P), si = or && (!qr || !e.isStringLiteral(qr) || qr.text !== or.text) ? or : qr, Di = !!(pe.transformFlags & 8192); + switch (m.module) { + case e.ModuleKind.AMD: + return g(si, Di); + case e.ModuleKind.UMD: + return fe(si != null ? si : E.createVoidZero(), Di); + case e.ModuleKind.CommonJS: + default: + return ne(si, Di); + } + } + function fe(pe, or) { + if (O = true, e.isSimpleCopiableExpression(pe)) { + var qr = e.isGeneratedIdentifier(pe) ? pe : e.isStringLiteral(pe) ? E.createStringLiteralFromNode(pe) : e.setEmitFlags(e.setTextRange(E.cloneNode(pe), pe), 1536); + return E.createConditionalExpression(E.createIdentifier("__syncRequire"), void 0, ne(pe, or), void 0, g(qr, or)); + } else { + var si = E.createTempVariable(p); + return E.createComma(E.createAssignment(si, pe), E.createConditionalExpression(E.createIdentifier("__syncRequire"), void 0, ne(si, or), void 0, g(si, or))); + } + } + function g(pe, or) { + var qr = E.createUniqueName("resolve"), si = E.createUniqueName("reject"), Di = [E.createParameterDeclaration(void 0, void 0, void 0, qr), E.createParameterDeclaration(void 0, void 0, void 0, si)], wi = E.createBlock([E.createExpressionStatement(E.createCallExpression(E.createIdentifier("require"), void 0, [E.createArrayLiteralExpression([pe || E.createOmittedExpression()]), qr, si]))]), Xi; + f >= 2 ? Xi = E.createArrowFunction(void 0, void 0, Di, void 0, void 0, wi) : (Xi = E.createFunctionExpression(void 0, void 0, void 0, void 0, Di, void 0, wi), or && e.setEmitFlags(Xi, 8)); + var et = E.createNewExpression(E.createIdentifier("Promise"), void 0, [Xi]); + return e.getESModuleInterop(m) ? E.createCallExpression(E.createPropertyAccessExpression(et, E.createIdentifier("then")), void 0, [Q().createImportStarCallbackHelper()]) : et; + } + function ne(pe, or) { + var qr = E.createCallExpression(E.createPropertyAccessExpression(E.createIdentifier("Promise"), "resolve"), void 0, []), si = E.createCallExpression(E.createIdentifier("require"), void 0, pe ? [pe] : []); + e.getESModuleInterop(m) && (si = Q().createImportStarHelper(si)); + var Di; + return f >= 2 ? Di = E.createArrowFunction(void 0, void 0, [], void 0, void 0, si) : (Di = E.createFunctionExpression(void 0, void 0, void 0, void 0, [], void 0, E.createBlock([E.createReturnStatement(si)])), or && e.setEmitFlags(Di, 8)), E.createCallExpression(E.createPropertyAccessExpression(qr, "then"), void 0, [Di]); + } + function ue(pe, or) { + return !e.getESModuleInterop(m) || e.getEmitFlags(pe) & 67108864 ? or : e.getExportNeedsImportStarHelper(pe) ? Q().createImportStarHelper(or) : or; + } + function We(pe, or) { + return !e.getESModuleInterop(m) || e.getEmitFlags(pe) & 67108864 ? or : e.getImportNeedsImportStarHelper(pe) ? Q().createImportStarHelper(or) : e.getImportNeedsImportDefaultHelper(pe) ? Q().createImportDefaultHelper(or) : or; + } + function Fe(pe) { + var or, qr = e.getNamespaceDeclarationNode(pe); + if (T !== e.ModuleKind.AMD) + if (pe.importClause) { + var si = []; + qr && !e.isDefaultImport(pe) ? si.push(E.createVariableDeclaration(E.cloneNode(qr.name), void 0, void 0, We(pe, Z(pe)))) : (si.push(E.createVariableDeclaration(E.getGeneratedNameForNode(pe), void 0, void 0, We(pe, Z(pe)))), qr && e.isDefaultImport(pe) && si.push(E.createVariableDeclaration(E.cloneNode(qr.name), void 0, void 0, E.getGeneratedNameForNode(pe)))), or = e.append(or, e.setOriginalNode(e.setTextRange(E.createVariableStatement(void 0, E.createVariableDeclarationList(si, f >= 2 ? 2 : 0)), pe), pe)); + } else + return e.setOriginalNode(e.setTextRange(E.createExpressionStatement(Z(pe)), pe), pe); + else + qr && e.isDefaultImport(pe) && (or = e.append(or, E.createVariableStatement(void 0, E.createVariableDeclarationList([e.setOriginalNode(e.setTextRange(E.createVariableDeclaration(E.cloneNode(qr.name), void 0, void 0, E.getGeneratedNameForNode(pe)), pe), pe)], f >= 2 ? 2 : 0)))); + if (we(pe)) { + var Di = e.getOriginalNodeId(pe); + J[Di] = ye(J[Di], pe); + } else + or = ye(or, pe); + return e.singleOrMany(or); + } + function Z(pe) { + var or = e.getExternalModuleNameLiteral(E, pe, ie, oe, G, m), qr = []; + return or && qr.push(or), E.createCallExpression(E.createIdentifier("require"), void 0, qr); + } + function Be(pe) { + e.Debug.assert(e.isExternalModuleImportEqualsDeclaration(pe), "import= for internal module references should be handled in an earlier transformer."); + var or; + if (T !== e.ModuleKind.AMD ? e.hasSyntacticModifier(pe, 1) ? or = e.append(or, e.setOriginalNode(e.setTextRange(E.createExpressionStatement(n(pe.name, Z(pe))), pe), pe)) : or = e.append(or, e.setOriginalNode(e.setTextRange(E.createVariableStatement(void 0, E.createVariableDeclarationList([E.createVariableDeclaration(E.cloneNode(pe.name), void 0, void 0, Z(pe))], f >= 2 ? 2 : 0)), pe), pe)) : e.hasSyntacticModifier(pe, 1) && (or = e.append(or, e.setOriginalNode(e.setTextRange(E.createExpressionStatement(n(E.getExportName(pe), E.getLocalName(pe))), pe), pe))), we(pe)) { + var qr = e.getOriginalNodeId(pe); + J[qr] = Ae(J[qr], pe); + } else + or = Ae(or, pe); + return e.singleOrMany(or); + } + function ge(pe) { + if (!!pe.moduleSpecifier) { + var or = E.getGeneratedNameForNode(pe); + if (pe.exportClause && e.isNamedExports(pe.exportClause)) { + var qr = []; + T !== e.ModuleKind.AMD && qr.push(e.setOriginalNode(e.setTextRange(E.createVariableStatement(void 0, E.createVariableDeclarationList([E.createVariableDeclaration(or, void 0, void 0, Z(pe))])), pe), pe)); + for (var si = 0, Di = pe.exportClause.elements; si < Di.length; si++) { + var wi = Di[si]; + if (f === 0) + qr.push(e.setOriginalNode(e.setTextRange(E.createExpressionStatement(Q().createCreateBindingHelper(or, E.createStringLiteralFromNode(wi.propertyName || wi.name), wi.propertyName ? E.createStringLiteralFromNode(wi.name) : void 0)), wi), wi)); + else { + var Xi = !!e.getESModuleInterop(m) && !(e.getEmitFlags(pe) & 67108864) && e.idText(wi.propertyName || wi.name) === "default", et = E.createPropertyAccessExpression(Xi ? Q().createImportDefaultHelper(or) : or, wi.propertyName || wi.name); + qr.push(e.setOriginalNode(e.setTextRange(E.createExpressionStatement(n(E.getExportName(wi), et, void 0, true)), wi), wi)); + } + } + return e.singleOrMany(qr); + } else if (pe.exportClause) { + var qr = []; + return qr.push(e.setOriginalNode(e.setTextRange(E.createExpressionStatement(n(E.cloneNode(pe.exportClause.name), ue(pe, T !== e.ModuleKind.AMD ? Z(pe) : e.isExportNamespaceAsDefaultDeclaration(pe) ? or : E.createIdentifier(e.idText(pe.exportClause.name))))), pe), pe)), e.singleOrMany(qr); + } else + return e.setOriginalNode(e.setTextRange(E.createExpressionStatement(Q().createExportStarHelper(T !== e.ModuleKind.AMD ? Z(pe) : or)), pe), pe); + } + } + function Re(pe) { + if (!pe.isExportEquals) { + var or, qr = pe.original; + if (qr && we(qr)) { + var si = e.getOriginalNodeId(pe); + J[si] = Br(J[si], E.createIdentifier("default"), e.visitNode(pe.expression, P), pe, true); + } else + or = Br(or, E.createIdentifier("default"), e.visitNode(pe.expression, P), pe, true); + return e.singleOrMany(or); + } + } + function ze(pe) { + var or; + if (e.hasSyntacticModifier(pe, 1) ? or = e.append(or, e.setOriginalNode(e.setTextRange(E.createFunctionDeclaration(void 0, e.visitNodes(pe.modifiers, lr, e.isModifier), pe.asteriskToken, E.getDeclarationName(pe, true, true), void 0, e.visitNodes(pe.parameters, P), void 0, e.visitEachChild(pe.body, P, w)), pe), pe)) : or = e.append(or, e.visitEachChild(pe, P, w)), we(pe)) { + var qr = e.getOriginalNodeId(pe); + J[qr] = Cr(J[qr], pe); + } else + or = Cr(or, pe); + return e.singleOrMany(or); + } + function Ee(pe) { + var or; + if (e.hasSyntacticModifier(pe, 1) ? or = e.append(or, e.setOriginalNode(e.setTextRange(E.createClassDeclaration(void 0, e.visitNodes(pe.modifiers, lr, e.isModifier), E.getDeclarationName(pe, true, true), void 0, e.visitNodes(pe.heritageClauses, P), e.visitNodes(pe.members, P)), pe), pe)) : or = e.append(or, e.visitEachChild(pe, P, w)), we(pe)) { + var qr = e.getOriginalNodeId(pe); + J[qr] = Cr(J[qr], pe); + } else + or = Cr(or, pe); + return e.singleOrMany(or); + } + function He(pe) { + var or, qr, si; + if (e.hasSyntacticModifier(pe, 1)) { + for (var Di = void 0, wi = false, Xi = 0, et = pe.declarationList.declarations; Xi < et.length; Xi++) { + var Gi = et[Xi]; + if (e.isIdentifier(Gi.name) && e.isLocalName(Gi.name)) + Di || (Di = e.visitNodes(pe.modifiers, lr, e.isModifier)), qr = e.append(qr, Gi); + else if (Gi.initializer) + if (!e.isBindingPattern(Gi.name) && (e.isArrowFunction(Gi.initializer) || e.isFunctionExpression(Gi.initializer) || e.isClassExpression(Gi.initializer))) { + var Wt = E.createAssignment(e.setTextRange(E.createPropertyAccessExpression(E.createIdentifier("exports"), Gi.name), Gi.name), E.createIdentifier(e.getTextOfIdentifierOrLiteral(Gi.name))), Zt = E.createVariableDeclaration(Gi.name, Gi.exclamationToken, Gi.type, e.visitNode(Gi.initializer, P)); + qr = e.append(qr, Zt), si = e.append(si, Wt), wi = true; + } else + si = e.append(si, Ie(Gi)); + } + if (qr && (or = e.append(or, E.updateVariableStatement(pe, Di, E.updateVariableDeclarationList(pe.declarationList, qr)))), si) { + var _r = e.setOriginalNode(e.setTextRange(E.createExpressionStatement(E.inlineExpressions(si)), pe), pe); + wi && e.removeAllComments(_r), or = e.append(or, _r); + } + } else + or = e.append(or, e.visitEachChild(pe, P, w)); + if (we(pe)) { + var pi = e.getOriginalNodeId(pe); + J[pi] = er(J[pi], pe); + } else + or = er(or, pe); + return e.singleOrMany(or); + } + function rr(pe, or, qr) { + var si = mi(pe); + if (si) { + for (var Di = e.isExportName(pe) ? or : E.createAssignment(pe, or), wi = 0, Xi = si; wi < Xi.length; wi++) { + var et = Xi[wi]; + e.setEmitFlags(Di, 4), Di = n(et, Di, qr); + } + return Di; + } + return E.createAssignment(pe, or); + } + function Ie(pe) { + return e.isBindingPattern(pe.name) ? e.flattenDestructuringAssignment(e.visitNode(pe, P), void 0, w, 0, false, rr) : E.createAssignment(e.setTextRange(E.createPropertyAccessExpression(E.createIdentifier("exports"), pe.name), pe.name), pe.initializer ? e.visitNode(pe.initializer, P) : E.createVoidZero()); + } + function _e(pe) { + if (we(pe) && pe.original.kind === 237) { + var or = e.getOriginalNodeId(pe); + J[or] = er(J[or], pe.original); + } + return pe; + } + function we(pe) { + return (e.getEmitFlags(pe) & 4194304) !== 0; + } + function de(pe) { + var or = e.getOriginalNodeId(pe), qr = J[or]; + return qr ? (delete J[or], e.append(qr, pe)) : pe; + } + function ye(pe, or) { + if (R.exportEquals) + return pe; + var qr = or.importClause; + if (!qr) + return pe; + qr.name && (pe = Ye(pe, qr)); + var si = qr.namedBindings; + if (si) + switch (si.kind) { + case 268: + pe = Ye(pe, si); + break; + case 269: + for (var Di = 0, wi = si.elements; Di < wi.length; Di++) { + var Xi = wi[Di]; + pe = Ye(pe, Xi, true); + } + break; + } + return pe; + } + function Ae(pe, or) { + return R.exportEquals ? pe : Ye(pe, or); + } + function er(pe, or) { + if (R.exportEquals) + return pe; + for (var qr = 0, si = or.declarationList.declarations; qr < si.length; qr++) { + var Di = si[qr]; + pe = ir(pe, Di); + } + return pe; + } + function ir(pe, or) { + if (R.exportEquals) + return pe; + if (e.isBindingPattern(or.name)) + for (var qr = 0, si = or.name.elements; qr < si.length; qr++) { + var Di = si[qr]; + e.isOmittedExpression(Di) || (pe = ir(pe, Di)); + } + else + e.isGeneratedIdentifier(or.name) || (pe = Ye(pe, or)); + return pe; + } + function Cr(pe, or) { + if (R.exportEquals) + return pe; + if (e.hasSyntacticModifier(or, 1)) { + var qr = e.hasSyntacticModifier(or, 512) ? E.createIdentifier("default") : E.getDeclarationName(or); + pe = Br(pe, qr, E.getLocalName(or), or); + } + return or.name && (pe = Ye(pe, or)), pe; + } + function Ye(pe, or, qr) { + var si = E.getDeclarationName(or), Di = R.exportSpecifiers.get(e.idText(si)); + if (Di) + for (var wi = 0, Xi = Di; wi < Xi.length; wi++) { + var et = Xi[wi]; + pe = Br(pe, et.name, si, et.name, void 0, qr); + } + return pe; + } + function Br(pe, or, qr, si, Di, wi) { + return pe = e.append(pe, Ne(or, qr, si, Di, wi)), pe; + } + function Er() { + var pe; + return f === 0 ? pe = E.createExpressionStatement(n(E.createIdentifier("__esModule"), E.createTrue())) : pe = E.createExpressionStatement(E.createCallExpression(E.createPropertyAccessExpression(E.createIdentifier("Object"), "defineProperty"), void 0, [E.createIdentifier("exports"), E.createStringLiteral("__esModule"), E.createObjectLiteralExpression([E.createPropertyAssignment("value", E.createTrue())])])), e.setEmitFlags(pe, 1048576), pe; + } + function Ne(pe, or, qr, si, Di) { + var wi = e.setTextRange(E.createExpressionStatement(n(pe, or, void 0, Di)), qr); + return e.startOnNewLine(wi), si || e.setEmitFlags(wi, 1536), wi; + } + function n(pe, or, qr, si) { + return e.setTextRange(si && f !== 0 ? E.createCallExpression(E.createPropertyAccessExpression(E.createIdentifier("Object"), "defineProperty"), void 0, [E.createIdentifier("exports"), E.createStringLiteralFromNode(pe), E.createObjectLiteralExpression([E.createPropertyAssignment("enumerable", E.createTrue()), E.createPropertyAssignment("get", E.createFunctionExpression(void 0, void 0, void 0, void 0, [], void 0, E.createBlock([E.createReturnStatement(or)])))])]) : E.createAssignment(E.createPropertyAccessExpression(E.createIdentifier("exports"), E.cloneNode(pe)), or), qr); + } + function lr(pe) { + switch (pe.kind) { + case 93: + case 88: + return; + } + return pe; + } + function be(pe, or, qr) { + or.kind === 305 ? (ie = or, R = se[e.getOriginalNodeId(ie)], b(pe, or, qr), ie = void 0, R = void 0) : b(pe, or, qr); + } + function Ge(pe, or) { + return or = K(pe, or), or.id && q[or.id] ? or : pe === 1 ? yr(or) : e.isShorthandPropertyAssignment(or) ? ur(or) : or; + } + function ur(pe) { + var or = pe.name, qr = Ur(or); + if (qr !== or) { + if (pe.objectAssignmentInitializer) { + var si = E.createAssignment(qr, pe.objectAssignmentInitializer); + return e.setTextRange(E.createPropertyAssignment(or, si), pe); + } + return e.setTextRange(E.createPropertyAssignment(or, qr), pe); + } + return pe; + } + function yr(pe) { + switch (pe.kind) { + case 79: + return Ur(pe); + case 208: + return Ir(pe); + case 210: + return wr(pe); + case 221: + return ii(pe); + } + return pe; + } + function Ir(pe) { + if (e.isIdentifier(pe.expression)) { + var or = Ur(pe.expression); + if (q[e.getNodeId(or)] = true, !e.isIdentifier(or) && !(e.getEmitFlags(pe.expression) & 4096)) + return e.addEmitFlags(E.updateCallExpression(pe, or, void 0, pe.arguments), 536870912); + } + return pe; + } + function wr(pe) { + if (e.isIdentifier(pe.tag)) { + var or = Ur(pe.tag); + if (q[e.getNodeId(or)] = true, !e.isIdentifier(or) && !(e.getEmitFlags(pe.tag) & 4096)) + return e.addEmitFlags(E.updateTaggedTemplateExpression(pe, or, void 0, pe.template), 536870912); + } + return pe; + } + function Ur(pe) { + var or, qr; + if (e.getEmitFlags(pe) & 4096) { + var si = e.getExternalHelpersModuleName(ie); + return si ? E.createPropertyAccessExpression(si, pe) : pe; + } else if (!(e.isGeneratedIdentifier(pe) && !(pe.autoGenerateFlags & 64)) && !e.isLocalName(pe)) { + var Di = G.getReferencedExportContainer(pe, e.isExportName(pe)); + if (Di && Di.kind === 305) + return e.setTextRange(E.createPropertyAccessExpression(E.createIdentifier("exports"), E.cloneNode(pe)), pe); + var wi = G.getReferencedImportDeclaration(pe); + if (wi) { + if (e.isImportClause(wi)) + return e.setTextRange(E.createPropertyAccessExpression(E.getGeneratedNameForNode(wi.parent), E.createIdentifier("default")), pe); + if (e.isImportSpecifier(wi)) { + var Xi = wi.propertyName || wi.name; + return e.setTextRange(E.createPropertyAccessExpression(E.getGeneratedNameForNode(((qr = (or = wi.parent) === null || or === void 0 ? void 0 : or.parent) === null || qr === void 0 ? void 0 : qr.parent) || wi), E.cloneNode(Xi)), pe); + } + } + } + return pe; + } + function ii(pe) { + if (e.isAssignmentOperator(pe.operatorToken.kind) && e.isIdentifier(pe.left) && !e.isGeneratedIdentifier(pe.left) && !e.isLocalName(pe.left) && !e.isDeclarationNameOfEnumOrNamespace(pe.left)) { + var or = mi(pe.left); + if (or) { + for (var qr = pe, si = 0, Di = or; si < Di.length; si++) { + var wi = Di[si]; + q[e.getNodeId(qr)] = true, qr = n(wi, qr, pe); + } + return qr; + } + } + return pe; + } + function mi(pe) { + if (!e.isGeneratedIdentifier(pe)) { + var or = G.getReferencedImportDeclaration(pe) || G.getReferencedValueDeclaration(pe); + if (or) + return R && R.exportedBindings[e.getOriginalNodeId(or)]; + } + } + } + e.transformModule = a; + var C = { name: "typescript:dynamicimport-sync-require", scoped: true, text: ` + var __syncRequire = typeof module === "object" && typeof module.exports === "object";` }; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.factory, B = C.startLexicalEnvironment, E = C.endLexicalEnvironment, Q = C.hoistVariableDeclaration, le = C.getCompilerOptions(), N = C.getEmitResolver(), p = C.getEmitHost(), m = C.onSubstituteNode, G = C.onEmitNode; + C.onSubstituteNode = si, C.onEmitNode = qr, C.enableSubstitution(79), C.enableSubstitution(297), C.enableSubstitution(221), C.enableSubstitution(231), C.enableEmitNotification(305); + var oe = [], f = [], T = [], K = [], b = [], se, J, ie, R, q, O, ve; + return e.chainBundle(C, ee); + function ee(ae) { + if (ae.isDeclarationFile || !(e.isEffectiveExternalModule(ae, le) || ae.transformFlags & 4194304)) + return ae; + var Xe = e.getOriginalNodeId(ae); + se = ae, O = ae, J = oe[Xe] = e.collectExternalModuleInfo(C, ae, N, le), ie = w.createUniqueName("exports"), T[Xe] = ie, R = b[Xe] = w.createUniqueName("context"); + var Jr = he(J.externalImports), ti = F(ae, Jr), Ze = w.createFunctionExpression(void 0, void 0, void 0, void 0, [w.createParameterDeclaration(void 0, void 0, void 0, ie), w.createParameterDeclaration(void 0, void 0, void 0, R)], void 0, ti), Sr = e.tryGetModuleNameFromFile(w, ae, p, le), zr = w.createArrayLiteralExpression(e.map(Jr, function(Je) { + return Je.name; + })), Wr = e.setEmitFlags(w.updateSourceFile(ae, e.setTextRange(w.createNodeArray([w.createExpressionStatement(w.createCallExpression(w.createPropertyAccessExpression(w.createIdentifier("System"), "register"), void 0, Sr ? [Sr, zr, Ze] : [zr, Ze]))]), ae.statements)), 1024); + return e.outFile(le) || e.moveEmitHelpers(Wr, ti, function(Je) { + return !Je.scoped; + }), ve && (K[Xe] = ve, ve = void 0), se = void 0, J = void 0, ie = void 0, R = void 0, q = void 0, O = void 0, Wr; + } + function he(ae) { + for (var Xe = new e.Map(), Jr = [], ti = 0, Ze = ae; ti < Ze.length; ti++) { + var Sr = Ze[ti], zr = e.getExternalModuleNameLiteral(w, Sr, se, p, N, le); + if (zr) { + var Wr = zr.text, Je = Xe.get(Wr); + Je !== void 0 ? Jr[Je].externalImports.push(Sr) : (Xe.set(Wr, Jr.length), Jr.push({ name: zr, externalImports: [Sr] })); + } + } + return Jr; + } + function F(ae, Xe) { + var Jr = []; + B(); + var ti = e.getStrictOptionValue(le, "alwaysStrict") || !le.noImplicitUseStrict && e.isExternalModule(se), Ze = w.copyPrologue(ae.statements, Jr, ti, A); + Jr.push(w.createVariableStatement(void 0, w.createVariableDeclarationList([w.createVariableDeclaration("__moduleName", void 0, void 0, w.createLogicalAnd(R, w.createPropertyAccessExpression(R, "id")))]))), e.visitNode(J.externalHelpersImportDeclaration, A, e.isStatement); + var Sr = e.visitNodes(ae.statements, A, e.isStatement, Ze); + e.addRange(Jr, q), e.insertStatementsAfterStandardPrologue(Jr, E()); + var zr = x(Jr), Wr = ae.transformFlags & 1048576 ? w.createModifiersFromModifierFlags(256) : void 0, Je = w.createObjectLiteralExpression([w.createPropertyAssignment("setters", $(zr, Xe)), w.createPropertyAssignment("execute", w.createFunctionExpression(Wr, void 0, void 0, void 0, [], void 0, w.createBlock(Sr, true)))], true); + return Jr.push(w.createReturnStatement(Je)), w.createBlock(Jr, true); + } + function x(ae) { + if (!!J.hasExportStarsToExportValues) { + if (!J.exportedNames && J.exportSpecifiers.size === 0) { + for (var Xe = false, Jr = 0, ti = J.externalImports; Jr < ti.length; Jr++) { + var Ze = ti[Jr]; + if (Ze.kind === 272 && Ze.exportClause) { + Xe = true; + break; + } + } + if (!Xe) { + var Sr = X(void 0); + return ae.push(Sr), Sr.name; + } + } + var zr = []; + if (J.exportedNames) + for (var Wr = 0, Je = J.exportedNames; Wr < Je.length; Wr++) { + var xe = Je[Wr]; + xe.escapedText !== "default" && zr.push(w.createPropertyAssignment(w.createStringLiteralFromNode(xe), w.createTrue())); + } + var vr = w.createUniqueName("exportedNames"); + ae.push(w.createVariableStatement(void 0, w.createVariableDeclarationList([w.createVariableDeclaration(vr, void 0, void 0, w.createObjectLiteralExpression(zr, true))]))); + var mr = X(vr); + return ae.push(mr), mr.name; + } + } + function X(ae) { + var Xe = w.createUniqueName("exportStar"), Jr = w.createIdentifier("m"), ti = w.createIdentifier("n"), Ze = w.createIdentifier("exports"), Sr = w.createStrictInequality(ti, w.createStringLiteral("default")); + return ae && (Sr = w.createLogicalAnd(Sr, w.createLogicalNot(w.createCallExpression(w.createPropertyAccessExpression(ae, "hasOwnProperty"), void 0, [ti])))), w.createFunctionDeclaration(void 0, void 0, void 0, Xe, void 0, [w.createParameterDeclaration(void 0, void 0, void 0, Jr)], void 0, w.createBlock([w.createVariableStatement(void 0, w.createVariableDeclarationList([w.createVariableDeclaration(Ze, void 0, void 0, w.createObjectLiteralExpression([]))])), w.createForInStatement(w.createVariableDeclarationList([w.createVariableDeclaration(ti)]), Jr, w.createBlock([e.setEmitFlags(w.createIfStatement(Sr, w.createExpressionStatement(w.createAssignment(w.createElementAccessExpression(Ze, ti), w.createElementAccessExpression(Jr, ti)))), 1)])), w.createExpressionStatement(w.createCallExpression(ie, void 0, [Ze]))], true)); + } + function $(ae, Xe) { + for (var Jr = [], ti = 0, Ze = Xe; ti < Ze.length; ti++) { + for (var Sr = Ze[ti], zr = e.forEach(Sr.externalImports, function(Ue) { + return e.getLocalNameForExternalImport(w, Ue, se); + }), Wr = zr ? w.getGeneratedNameForNode(zr) : w.createUniqueName(""), Je = [], xe = 0, vr = Sr.externalImports; xe < vr.length; xe++) { + var mr = vr[xe], Ar = e.getLocalNameForExternalImport(w, mr, se); + switch (mr.kind) { + case 266: + if (!mr.importClause) + break; + case 265: + e.Debug.assert(Ar !== void 0), Je.push(w.createExpressionStatement(w.createAssignment(Ar, Wr))); + break; + case 272: + if (e.Debug.assert(Ar !== void 0), mr.exportClause) + if (e.isNamedExports(mr.exportClause)) { + for (var Oe = [], nr = 0, Mr = mr.exportClause.elements; nr < Mr.length; nr++) { + var Pe = Mr[nr]; + Oe.push(w.createPropertyAssignment(w.createStringLiteral(e.idText(Pe.name)), w.createElementAccessExpression(Wr, w.createStringLiteral(e.idText(Pe.propertyName || Pe.name))))); + } + Je.push(w.createExpressionStatement(w.createCallExpression(ie, void 0, [w.createObjectLiteralExpression(Oe, true)]))); + } else + Je.push(w.createExpressionStatement(w.createCallExpression(ie, void 0, [w.createStringLiteral(e.idText(mr.exportClause.name)), Wr]))); + else + Je.push(w.createExpressionStatement(w.createCallExpression(ae, void 0, [Wr]))); + break; + } + } + Jr.push(w.createFunctionExpression(void 0, void 0, void 0, void 0, [w.createParameterDeclaration(void 0, void 0, void 0, Wr)], void 0, w.createBlock(Je, true))); + } + return w.createArrayLiteralExpression(Jr, true); + } + function A(ae) { + switch (ae.kind) { + case 266: + return y(ae); + case 265: + return L(ae); + case 272: + return V(ae); + case 271: + return P(ae); + default: + return He(ae); + } + } + function y(ae) { + var Xe; + if (ae.importClause && Q(e.getLocalNameForExternalImport(w, ae, se)), g(ae)) { + var Jr = e.getOriginalNodeId(ae); + f[Jr] = ue(f[Jr], ae); + } else + Xe = ue(Xe, ae); + return e.singleOrMany(Xe); + } + function V(ae) { + e.Debug.assertIsDefined(ae); + } + function L(ae) { + e.Debug.assert(e.isExternalModuleImportEqualsDeclaration(ae), "import= for internal module references should be handled in an earlier transformer."); + var Xe; + if (Q(e.getLocalNameForExternalImport(w, ae, se)), g(ae)) { + var Jr = e.getOriginalNodeId(ae); + f[Jr] = We(f[Jr], ae); + } else + Xe = We(Xe, ae); + return e.singleOrMany(Xe); + } + function P(ae) { + if (!ae.isExportEquals) { + var Xe = e.visitNode(ae.expression, Ge, e.isExpression), Jr = ae.original; + if (Jr && g(Jr)) { + var ti = e.getOriginalNodeId(ae); + f[ti] = Re(f[ti], w.createIdentifier("default"), Xe, true); + } else + return ze(w.createIdentifier("default"), Xe, true); + } + } + function k(ae) { + if (e.hasSyntacticModifier(ae, 1) ? q = e.append(q, w.updateFunctionDeclaration(ae, ae.decorators, e.visitNodes(ae.modifiers, or, e.isModifier), ae.asteriskToken, w.getDeclarationName(ae, true, true), void 0, e.visitNodes(ae.parameters, Ge, e.isParameterDeclaration), void 0, e.visitNode(ae.body, Ge, e.isBlock))) : q = e.append(q, e.visitEachChild(ae, Ge, C)), g(ae)) { + var Xe = e.getOriginalNodeId(ae); + f[Xe] = Be(f[Xe], ae); + } else + q = Be(q, ae); + } + function Y(ae) { + var Xe, Jr = w.getLocalName(ae); + if (Q(Jr), Xe = e.append(Xe, e.setTextRange(w.createExpressionStatement(w.createAssignment(Jr, e.setTextRange(w.createClassExpression(e.visitNodes(ae.decorators, Ge, e.isDecorator), void 0, ae.name, void 0, e.visitNodes(ae.heritageClauses, Ge, e.isHeritageClause), e.visitNodes(ae.members, Ge, e.isClassElement)), ae))), ae)), g(ae)) { + var ti = e.getOriginalNodeId(ae); + f[ti] = Be(f[ti], ae); + } else + Xe = Be(Xe, ae); + return e.singleOrMany(Xe); + } + function U(ae) { + if (!H(ae.declarationList)) + return e.visitNode(ae, Ge, e.isStatement); + for (var Xe, Jr = e.hasSyntacticModifier(ae, 1), ti = g(ae), Ze = 0, Sr = ae.declarationList.declarations; Ze < Sr.length; Ze++) { + var zr = Sr[Ze]; + zr.initializer ? Xe = e.append(Xe, I(zr, Jr && !ti)) : j(zr); + } + var Wr; + if (Xe && (Wr = e.append(Wr, e.setTextRange(w.createExpressionStatement(w.inlineExpressions(Xe)), ae))), ti) { + var Je = e.getOriginalNodeId(ae); + f[Je] = Fe(f[Je], ae, Jr); + } else + Wr = Fe(Wr, ae, false); + return e.singleOrMany(Wr); + } + function j(ae) { + if (e.isBindingPattern(ae.name)) + for (var Xe = 0, Jr = ae.name.elements; Xe < Jr.length; Xe++) { + var ti = Jr[Xe]; + e.isOmittedExpression(ti) || j(ti); + } + else + Q(w.cloneNode(ae.name)); + } + function H(ae) { + return (e.getEmitFlags(ae) & 2097152) === 0 && (O.kind === 305 || (e.getOriginalNode(ae).flags & 3) === 0); + } + function I(ae, Xe) { + var Jr = Xe ? l : d; + return e.isBindingPattern(ae.name) ? e.flattenDestructuringAssignment(ae, Ge, C, 0, false, Jr) : ae.initializer ? Jr(ae.name, e.visitNode(ae.initializer, Ge, e.isExpression)) : ae.name; + } + function l(ae, Xe, Jr) { + return D(ae, Xe, Jr, true); + } + function d(ae, Xe, Jr) { + return D(ae, Xe, Jr, false); + } + function D(ae, Xe, Jr, ti) { + return Q(w.cloneNode(ae)), ti ? Ee(ae, _r(e.setTextRange(w.createAssignment(ae, Xe), Jr))) : _r(e.setTextRange(w.createAssignment(ae, Xe), Jr)); + } + function fe(ae) { + if (g(ae) && ae.original.kind === 237) { + var Xe = e.getOriginalNodeId(ae), Jr = e.hasSyntacticModifier(ae.original, 1); + f[Xe] = Fe(f[Xe], ae.original, Jr); + } + return ae; + } + function g(ae) { + return (e.getEmitFlags(ae) & 4194304) !== 0; + } + function ne(ae) { + var Xe = e.getOriginalNodeId(ae), Jr = f[Xe]; + if (Jr) + return delete f[Xe], e.append(Jr, ae); + var ti = e.getOriginalNode(ae); + return e.isModuleOrEnumDeclaration(ti) ? e.append(ge(Jr, ti), ae) : ae; + } + function ue(ae, Xe) { + if (J.exportEquals) + return ae; + var Jr = Xe.importClause; + if (!Jr) + return ae; + Jr.name && (ae = ge(ae, Jr)); + var ti = Jr.namedBindings; + if (ti) + switch (ti.kind) { + case 268: + ae = ge(ae, ti); + break; + case 269: + for (var Ze = 0, Sr = ti.elements; Ze < Sr.length; Ze++) { + var zr = Sr[Ze]; + ae = ge(ae, zr); + } + break; + } + return ae; + } + function We(ae, Xe) { + return J.exportEquals ? ae : ge(ae, Xe); + } + function Fe(ae, Xe, Jr) { + if (J.exportEquals) + return ae; + for (var ti = 0, Ze = Xe.declarationList.declarations; ti < Ze.length; ti++) { + var Sr = Ze[ti]; + (Sr.initializer || Jr) && (ae = Z(ae, Sr, Jr)); + } + return ae; + } + function Z(ae, Xe, Jr) { + if (J.exportEquals) + return ae; + if (e.isBindingPattern(Xe.name)) + for (var ti = 0, Ze = Xe.name.elements; ti < Ze.length; ti++) { + var Sr = Ze[ti]; + e.isOmittedExpression(Sr) || (ae = Z(ae, Sr, Jr)); + } + else if (!e.isGeneratedIdentifier(Xe.name)) { + var zr = void 0; + Jr && (ae = Re(ae, Xe.name, w.getLocalName(Xe)), zr = e.idText(Xe.name)), ae = ge(ae, Xe, zr); + } + return ae; + } + function Be(ae, Xe) { + if (J.exportEquals) + return ae; + var Jr; + if (e.hasSyntacticModifier(Xe, 1)) { + var ti = e.hasSyntacticModifier(Xe, 512) ? w.createStringLiteral("default") : Xe.name; + ae = Re(ae, ti, w.getLocalName(Xe)), Jr = e.getTextOfIdentifierOrLiteral(ti); + } + return Xe.name && (ae = ge(ae, Xe, Jr)), ae; + } + function ge(ae, Xe, Jr) { + if (J.exportEquals) + return ae; + var ti = w.getDeclarationName(Xe), Ze = J.exportSpecifiers.get(e.idText(ti)); + if (Ze) + for (var Sr = 0, zr = Ze; Sr < zr.length; Sr++) { + var Wr = zr[Sr]; + Wr.name.escapedText !== Jr && (ae = Re(ae, Wr.name, ti)); + } + return ae; + } + function Re(ae, Xe, Jr, ti) { + return ae = e.append(ae, ze(Xe, Jr, ti)), ae; + } + function ze(ae, Xe, Jr) { + var ti = w.createExpressionStatement(Ee(ae, Xe)); + return e.startOnNewLine(ti), Jr || e.setEmitFlags(ti, 1536), ti; + } + function Ee(ae, Xe) { + var Jr = e.isIdentifier(ae) ? w.createStringLiteralFromNode(ae) : ae; + return e.setEmitFlags(Xe, e.getEmitFlags(Xe) | 1536), e.setCommentRange(w.createCallExpression(ie, void 0, [Jr, Xe]), Xe); + } + function He(ae) { + switch (ae.kind) { + case 237: + return U(ae); + case 256: + return k(ae); + case 257: + return Y(ae); + case 242: + return rr(ae, true); + case 243: + return Ie(ae); + case 244: + return _e(ae); + case 240: + return ye(ae); + case 241: + return Ae(ae); + case 250: + return er(ae); + case 248: + return ir(ae); + case 249: + return Cr(ae); + case 263: + return Ye(ae); + case 289: + return Br(ae); + case 290: + return Er(ae); + case 252: + return Ne(ae); + case 292: + return n(ae); + case 235: + return lr(ae); + case 352: + return fe(ae); + case 353: + return ne(ae); + default: + return Ge(ae); + } + } + function rr(ae, Xe) { + var Jr = O; + return O = ae, ae = w.updateForStatement(ae, e.visitNode(ae.initializer, Xe ? de : ur, e.isForInitializer), e.visitNode(ae.condition, Ge, e.isExpression), e.visitNode(ae.incrementor, ur, e.isExpression), e.visitIterationBody(ae.statement, Xe ? He : Ge, C)), O = Jr, ae; + } + function Ie(ae) { + var Xe = O; + return O = ae, ae = w.updateForInStatement(ae, de(ae.initializer), e.visitNode(ae.expression, Ge, e.isExpression), e.visitIterationBody(ae.statement, He, C)), O = Xe, ae; + } + function _e(ae) { + var Xe = O; + return O = ae, ae = w.updateForOfStatement(ae, ae.awaitModifier, de(ae.initializer), e.visitNode(ae.expression, Ge, e.isExpression), e.visitIterationBody(ae.statement, He, C)), O = Xe, ae; + } + function we(ae) { + return e.isVariableDeclarationList(ae) && H(ae); + } + function de(ae) { + if (we(ae)) { + for (var Xe = void 0, Jr = 0, ti = ae.declarations; Jr < ti.length; Jr++) { + var Ze = ti[Jr]; + Xe = e.append(Xe, I(Ze, false)), Ze.initializer || j(Ze); + } + return Xe ? w.inlineExpressions(Xe) : w.createOmittedExpression(); + } else + return e.visitNode(ae, ur, e.isExpression); + } + function ye(ae) { + return w.updateDoStatement(ae, e.visitIterationBody(ae.statement, He, C), e.visitNode(ae.expression, Ge, e.isExpression)); + } + function Ae(ae) { + return w.updateWhileStatement(ae, e.visitNode(ae.expression, Ge, e.isExpression), e.visitIterationBody(ae.statement, He, C)); + } + function er(ae) { + return w.updateLabeledStatement(ae, ae.label, e.visitNode(ae.statement, He, e.isStatement, w.liftToBlock)); + } + function ir(ae) { + return w.updateWithStatement(ae, e.visitNode(ae.expression, Ge, e.isExpression), e.visitNode(ae.statement, He, e.isStatement, w.liftToBlock)); + } + function Cr(ae) { + return w.updateSwitchStatement(ae, e.visitNode(ae.expression, Ge, e.isExpression), e.visitNode(ae.caseBlock, He, e.isCaseBlock)); + } + function Ye(ae) { + var Xe = O; + return O = ae, ae = w.updateCaseBlock(ae, e.visitNodes(ae.clauses, He, e.isCaseOrDefaultClause)), O = Xe, ae; + } + function Br(ae) { + return w.updateCaseClause(ae, e.visitNode(ae.expression, Ge, e.isExpression), e.visitNodes(ae.statements, He, e.isStatement)); + } + function Er(ae) { + return e.visitEachChild(ae, He, C); + } + function Ne(ae) { + return e.visitEachChild(ae, He, C); + } + function n(ae) { + var Xe = O; + return O = ae, ae = w.updateCatchClause(ae, ae.variableDeclaration, e.visitNode(ae.block, He, e.isBlock)), O = Xe, ae; + } + function lr(ae) { + var Xe = O; + return O = ae, ae = e.visitEachChild(ae, He, C), O = Xe, ae; + } + function be(ae, Xe) { + if (!(ae.transformFlags & 71307264)) + return ae; + switch (ae.kind) { + case 242: + return rr(ae, false); + case 238: + return yr(ae); + case 212: + return Ir(ae, Xe); + case 350: + return wr(ae, Xe); + case 221: + if (e.isDestructuringAssignment(ae)) + return ii(ae, Xe); + break; + case 208: + if (e.isImportCall(ae)) + return Ur(ae); + break; + case 219: + case 220: + return pe(ae, Xe); + } + return e.visitEachChild(ae, Ge, C); + } + function Ge(ae) { + return be(ae, false); + } + function ur(ae) { + return be(ae, true); + } + function yr(ae) { + return w.updateExpressionStatement(ae, e.visitNode(ae.expression, ur, e.isExpression)); + } + function Ir(ae, Xe) { + return w.updateParenthesizedExpression(ae, e.visitNode(ae.expression, Xe ? ur : Ge, e.isExpression)); + } + function wr(ae, Xe) { + return w.updatePartiallyEmittedExpression(ae, e.visitNode(ae.expression, Xe ? ur : Ge, e.isExpression)); + } + function Ur(ae) { + var Xe = e.getExternalModuleNameLiteral(w, ae, se, p, N, le), Jr = e.visitNode(e.firstOrUndefined(ae.arguments), Ge), ti = Xe && (!Jr || !e.isStringLiteral(Jr) || Jr.text !== Xe.text) ? Xe : Jr; + return w.createCallExpression(w.createPropertyAccessExpression(R, w.createIdentifier("import")), void 0, ti ? [ti] : []); + } + function ii(ae, Xe) { + return mi(ae.left) ? e.flattenDestructuringAssignment(ae, Ge, C, 0, !Xe) : e.visitEachChild(ae, Ge, C); + } + function mi(ae) { + if (e.isAssignmentExpression(ae, true)) + return mi(ae.left); + if (e.isSpreadElement(ae)) + return mi(ae.expression); + if (e.isObjectLiteralExpression(ae)) + return e.some(ae.properties, mi); + if (e.isArrayLiteralExpression(ae)) + return e.some(ae.elements, mi); + if (e.isShorthandPropertyAssignment(ae)) + return mi(ae.name); + if (e.isPropertyAssignment(ae)) + return mi(ae.initializer); + if (e.isIdentifier(ae)) { + var Xe = N.getReferencedExportContainer(ae); + return Xe !== void 0 && Xe.kind === 305; + } else + return false; + } + function pe(ae, Xe) { + if ((ae.operator === 45 || ae.operator === 46) && e.isIdentifier(ae.operand) && !e.isGeneratedIdentifier(ae.operand) && !e.isLocalName(ae.operand) && !e.isDeclarationNameOfEnumOrNamespace(ae.operand)) { + var Jr = Zt(ae.operand); + if (Jr) { + var ti = void 0, Ze = e.visitNode(ae.operand, Ge, e.isExpression); + e.isPrefixUnaryExpression(ae) ? Ze = w.updatePrefixUnaryExpression(ae, Ze) : (Ze = w.updatePostfixUnaryExpression(ae, Ze), Xe || (ti = w.createTempVariable(Q), Ze = w.createAssignment(ti, Ze), e.setTextRange(Ze, ae)), Ze = w.createComma(Ze, w.cloneNode(ae.operand)), e.setTextRange(Ze, ae)); + for (var Sr = 0, zr = Jr; Sr < zr.length; Sr++) { + var Wr = zr[Sr]; + Ze = Ee(Wr, _r(Ze)); + } + return ti && (Ze = w.createComma(Ze, ti), e.setTextRange(Ze, ae)), Ze; + } + } + return e.visitEachChild(ae, Ge, C); + } + function or(ae) { + switch (ae.kind) { + case 93: + case 88: + return; + } + return ae; + } + function qr(ae, Xe, Jr) { + if (Xe.kind === 305) { + var ti = e.getOriginalNodeId(Xe); + se = Xe, J = oe[ti], ie = T[ti], ve = K[ti], R = b[ti], ve && delete K[ti], G(ae, Xe, Jr), se = void 0, J = void 0, ie = void 0, R = void 0, ve = void 0; + } else + G(ae, Xe, Jr); + } + function si(ae, Xe) { + return Xe = m(ae, Xe), pi(Xe) ? Xe : ae === 1 ? Xi(Xe) : ae === 4 ? Di(Xe) : Xe; + } + function Di(ae) { + switch (ae.kind) { + case 297: + return wi(ae); + } + return ae; + } + function wi(ae) { + var Xe, Jr, ti = ae.name; + if (!e.isGeneratedIdentifier(ti) && !e.isLocalName(ti)) { + var Ze = N.getReferencedImportDeclaration(ti); + if (Ze) { + if (e.isImportClause(Ze)) + return e.setTextRange(w.createPropertyAssignment(w.cloneNode(ti), w.createPropertyAccessExpression(w.getGeneratedNameForNode(Ze.parent), w.createIdentifier("default"))), ae); + if (e.isImportSpecifier(Ze)) + return e.setTextRange(w.createPropertyAssignment(w.cloneNode(ti), w.createPropertyAccessExpression(w.getGeneratedNameForNode(((Jr = (Xe = Ze.parent) === null || Xe === void 0 ? void 0 : Xe.parent) === null || Jr === void 0 ? void 0 : Jr.parent) || Ze), w.cloneNode(Ze.propertyName || Ze.name))), ae); + } + } + return ae; + } + function Xi(ae) { + switch (ae.kind) { + case 79: + return et(ae); + case 221: + return Gi(ae); + case 231: + return Wt(ae); + } + return ae; + } + function et(ae) { + var Xe, Jr; + if (e.getEmitFlags(ae) & 4096) { + var ti = e.getExternalHelpersModuleName(se); + return ti ? w.createPropertyAccessExpression(ti, ae) : ae; + } + if (!e.isGeneratedIdentifier(ae) && !e.isLocalName(ae)) { + var Ze = N.getReferencedImportDeclaration(ae); + if (Ze) { + if (e.isImportClause(Ze)) + return e.setTextRange(w.createPropertyAccessExpression(w.getGeneratedNameForNode(Ze.parent), w.createIdentifier("default")), ae); + if (e.isImportSpecifier(Ze)) + return e.setTextRange(w.createPropertyAccessExpression(w.getGeneratedNameForNode(((Jr = (Xe = Ze.parent) === null || Xe === void 0 ? void 0 : Xe.parent) === null || Jr === void 0 ? void 0 : Jr.parent) || Ze), w.cloneNode(Ze.propertyName || Ze.name)), ae); + } + } + return ae; + } + function Gi(ae) { + if (e.isAssignmentOperator(ae.operatorToken.kind) && e.isIdentifier(ae.left) && !e.isGeneratedIdentifier(ae.left) && !e.isLocalName(ae.left) && !e.isDeclarationNameOfEnumOrNamespace(ae.left)) { + var Xe = Zt(ae.left); + if (Xe) { + for (var Jr = ae, ti = 0, Ze = Xe; ti < Ze.length; ti++) { + var Sr = Ze[ti]; + Jr = Ee(Sr, _r(Jr)); + } + return Jr; + } + } + return ae; + } + function Wt(ae) { + return e.isImportMeta(ae) ? w.createPropertyAccessExpression(R, w.createIdentifier("meta")) : ae; + } + function Zt(ae) { + var Xe; + if (!e.isGeneratedIdentifier(ae)) { + var Jr = N.getReferencedImportDeclaration(ae) || N.getReferencedValueDeclaration(ae); + if (Jr) { + var ti = N.getReferencedExportContainer(ae, false); + ti && ti.kind === 305 && (Xe = e.append(Xe, w.getDeclarationName(Jr))), Xe = e.addRange(Xe, J && J.exportedBindings[e.getOriginalNodeId(Jr)]); + } + } + return Xe; + } + function _r(ae) { + return ve === void 0 && (ve = []), ve[e.getNodeId(ae)] = true, ae; + } + function pi(ae) { + return ve && ae.id && ve[ae.id]; + } + } + e.transformSystemModule = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.factory, B = C.getEmitHelperFactory, E = C.getEmitHost(), Q = C.getEmitResolver(), le = C.getCompilerOptions(), N = e.getEmitScriptTarget(le), p = C.onEmitNode, m = C.onSubstituteNode; + C.onEmitNode = O, C.onSubstituteNode = ve, C.enableEmitNotification(305), C.enableSubstitution(79); + var G, oe, f; + return e.chainBundle(C, T); + function T(he) { + if (he.isDeclarationFile) + return he; + if (e.isExternalModule(he) || le.isolatedModules) { + oe = he, f = void 0; + var F = K(he); + return oe = void 0, f && (F = w.updateSourceFile(F, e.setTextRange(w.createNodeArray(e.insertStatementsAfterCustomPrologue(F.statements.slice(), f)), F.statements))), !e.isExternalModule(he) || e.some(F.statements, e.isExternalModuleIndicator) ? F : w.updateSourceFile(F, e.setTextRange(w.createNodeArray(Ve(Ve([], F.statements, true), [e.createEmptyExports(w)], false)), F.statements)); + } + return he; + } + function K(he) { + var F = e.createExternalHelpersImportDeclarationIfNeeded(w, B(), he, le); + if (F) { + var x = [], X = w.copyPrologue(he.statements, x); + return e.append(x, F), e.addRange(x, e.visitNodes(he.statements, b, e.isStatement, X)), w.updateSourceFile(he, e.setTextRange(w.createNodeArray(x), he.statements)); + } else + return e.visitEachChild(he, b, C); + } + function b(he) { + switch (he.kind) { + case 265: + return e.getEmitScriptTarget(le) >= e.ModuleKind.ES2020 ? J(he) : void 0; + case 271: + return R(he); + case 272: + var F = he; + return q(F); + } + return he; + } + function se(he) { + var F = e.getExternalModuleNameLiteral(w, he, e.Debug.checkDefined(oe), E, Q, le), x = []; + if (F && x.push(F), !f) { + var X = w.createUniqueName("_createRequire", 48), $ = w.createImportDeclaration(void 0, void 0, w.createImportClause(false, void 0, w.createNamedImports([w.createImportSpecifier(false, w.createIdentifier("createRequire"), X)])), w.createStringLiteral("module")), A = w.createUniqueName("__require", 48), y = w.createVariableStatement(void 0, w.createVariableDeclarationList([w.createVariableDeclaration(A, void 0, void 0, w.createCallExpression(w.cloneNode(X), void 0, [w.createPropertyAccessExpression(w.createMetaProperty(100, w.createIdentifier("meta")), w.createIdentifier("url"))]))], N >= 2 ? 2 : 0)); + f = [$, y]; + } + var V = f[1].declarationList.declarations[0].name; + return e.Debug.assertNode(V, e.isIdentifier), w.createCallExpression(w.cloneNode(V), void 0, x); + } + function J(he) { + e.Debug.assert(e.isExternalModuleImportEqualsDeclaration(he), "import= for internal module references should be handled in an earlier transformer."); + var F; + return F = e.append(F, e.setOriginalNode(e.setTextRange(w.createVariableStatement(void 0, w.createVariableDeclarationList([w.createVariableDeclaration(w.cloneNode(he.name), void 0, void 0, se(he))], N >= 2 ? 2 : 0)), he), he)), F = ie(F, he), e.singleOrMany(F); + } + function ie(he, F) { + return e.hasSyntacticModifier(F, 1) && (he = e.append(he, w.createExportDeclaration(void 0, void 0, F.isTypeOnly, w.createNamedExports([w.createExportSpecifier(false, void 0, e.idText(F.name))])))), he; + } + function R(he) { + return he.isExportEquals ? void 0 : he; + } + function q(he) { + if (le.module !== void 0 && le.module > e.ModuleKind.ES2015 || !he.exportClause || !e.isNamespaceExport(he.exportClause) || !he.moduleSpecifier) + return he; + var F = he.exportClause.name, x = w.getGeneratedNameForNode(F), X = w.createImportDeclaration(void 0, void 0, w.createImportClause(false, void 0, w.createNamespaceImport(x)), he.moduleSpecifier, he.assertClause); + e.setOriginalNode(X, he.exportClause); + var $ = e.isExportNamespaceAsDefaultDeclaration(he) ? w.createExportDefault(x) : w.createExportDeclaration(void 0, void 0, false, w.createNamedExports([w.createExportSpecifier(false, x, F)])); + return e.setOriginalNode($, he), [X, $]; + } + function O(he, F, x) { + e.isSourceFile(F) ? ((e.isExternalModule(F) || le.isolatedModules) && le.importHelpers && (G = new e.Map()), p(he, F, x), G = void 0) : p(he, F, x); + } + function ve(he, F) { + return F = m(he, F), G && e.isIdentifier(F) && e.getEmitFlags(F) & 4096 ? ee(F) : F; + } + function ee(he) { + var F = e.idText(he), x = G.get(F); + return x || G.set(F, x = w.createUniqueName(F, 48)), x; + } + } + e.transformECMAScriptModule = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C) { + var w = C.onSubstituteNode, B = C.onEmitNode, E = e.transformECMAScriptModule(C), Q = C.onSubstituteNode, le = C.onEmitNode; + C.onSubstituteNode = w, C.onEmitNode = B; + var N = e.transformModule(C), p = C.onSubstituteNode, m = C.onEmitNode; + C.onSubstituteNode = oe, C.onEmitNode = f, C.enableSubstitution(305), C.enableEmitNotification(305); + var G; + return b; + function oe(J, ie) { + return e.isSourceFile(ie) ? (G = ie, w(J, ie)) : G ? G.impliedNodeFormat === e.ModuleKind.ESNext ? Q(J, ie) : p(J, ie) : w(J, ie); + } + function f(J, ie, R) { + return e.isSourceFile(ie) && (G = ie), G ? G.impliedNodeFormat === e.ModuleKind.ESNext ? le(J, ie, R) : m(J, ie, R) : B(J, ie, R); + } + function T(J) { + return J.impliedNodeFormat === e.ModuleKind.ESNext ? E : N; + } + function K(J) { + if (J.isDeclarationFile) + return J; + G = J; + var ie = T(J)(J); + return G = void 0, e.Debug.assert(e.isSourceFile(ie)), ie; + } + function b(J) { + return J.kind === 305 ? K(J) : se(J); + } + function se(J) { + return C.factory.createBundle(e.map(J.sourceFiles, K), J.prepends); + } + } + e.transformNodeModule = a; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(B) { + return e.isVariableDeclaration(B) || e.isPropertyDeclaration(B) || e.isPropertySignature(B) || e.isBindingElement(B) || e.isSetAccessor(B) || e.isGetAccessor(B) || e.isConstructSignatureDeclaration(B) || e.isCallSignatureDeclaration(B) || e.isMethodDeclaration(B) || e.isMethodSignature(B) || e.isFunctionDeclaration(B) || e.isParameter(B) || e.isTypeParameterDeclaration(B) || e.isExpressionWithTypeArguments(B) || e.isImportEqualsDeclaration(B) || e.isTypeAliasDeclaration(B) || e.isConstructorDeclaration(B) || e.isIndexSignatureDeclaration(B) || e.isPropertyAccessExpression(B) || e.isJSDocTypeAlias(B); + } + e.canProduceDiagnostics = a; + function C(B) { + if (e.isSetAccessor(B) || e.isGetAccessor(B)) + return E; + return e.isMethodSignature(B) || e.isMethodDeclaration(B) ? le : w(B); + function E(p) { + var m = Q(p); + return m !== void 0 ? { diagnosticMessage: m, errorNode: B, typeName: B.name } : void 0; + } + function Q(p) { + return e.isStatic(B) ? p.errorModuleName ? p.accessibility === 2 ? e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1 : B.parent.kind === 257 ? p.errorModuleName ? p.accessibility === 2 ? e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1 : p.errorModuleName ? e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; + } + function le(p) { + var m = N(p); + return m !== void 0 ? { diagnosticMessage: m, errorNode: B, typeName: B.name } : void 0; + } + function N(p) { + return e.isStatic(B) ? p.errorModuleName ? p.accessibility === 2 ? e.Diagnostics.Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Public_static_method_0_of_exported_class_has_or_is_using_private_name_1 : B.parent.kind === 257 ? p.errorModuleName ? p.accessibility === 2 ? e.Diagnostics.Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Public_method_0_of_exported_class_has_or_is_using_private_name_1 : p.errorModuleName ? e.Diagnostics.Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Method_0_of_exported_interface_has_or_is_using_private_name_1; + } + } + e.createGetSymbolAccessibilityDiagnosticForNodeName = C; + function w(B) { + if (e.isVariableDeclaration(B) || e.isPropertyDeclaration(B) || e.isPropertySignature(B) || e.isPropertyAccessExpression(B) || e.isBindingElement(B) || e.isConstructorDeclaration(B)) + return Q; + return e.isSetAccessor(B) || e.isGetAccessor(B) ? le : e.isConstructSignatureDeclaration(B) || e.isCallSignatureDeclaration(B) || e.isMethodDeclaration(B) || e.isMethodSignature(B) || e.isFunctionDeclaration(B) || e.isIndexSignatureDeclaration(B) ? N : e.isParameter(B) ? e.isParameterPropertyDeclaration(B, B.parent) && e.hasSyntacticModifier(B.parent, 8) ? Q : p : e.isTypeParameterDeclaration(B) ? G : e.isExpressionWithTypeArguments(B) ? oe : e.isImportEqualsDeclaration(B) ? f : e.isTypeAliasDeclaration(B) || e.isJSDocTypeAlias(B) ? T : e.Debug.assertNever(B, "Attempted to set a declaration diagnostic context for unhandled node kind: ".concat(e.SyntaxKind[B.kind])); + function E(K) { + if (B.kind === 254 || B.kind === 203) + return K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1; + if (B.kind === 167 || B.kind === 206 || B.kind === 166 || B.kind === 164 && e.hasSyntacticModifier(B.parent, 8)) + return e.isStatic(B) ? K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1 : B.parent.kind === 257 || B.kind === 164 ? K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1 : K.errorModuleName ? e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1; + } + function Q(K) { + var b = E(K); + return b !== void 0 ? { diagnosticMessage: b, errorNode: B, typeName: B.name } : void 0; + } + function le(K) { + var b; + return B.kind === 173 ? e.isStatic(B) ? b = K.errorModuleName ? e.Diagnostics.Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1 : b = K.errorModuleName ? e.Diagnostics.Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1 : e.isStatic(B) ? b = K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1 : b = K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1, { diagnosticMessage: b, errorNode: B.name, typeName: B.name }; + } + function N(K) { + var b; + switch (B.kind) { + case 175: + b = K.errorModuleName ? e.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : e.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 174: + b = K.errorModuleName ? e.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : e.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 176: + b = K.errorModuleName ? e.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : e.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0; + break; + case 169: + case 168: + e.isStatic(B) ? b = K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0 : B.parent.kind === 257 ? b = K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0 : b = K.errorModuleName ? e.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1 : e.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; + break; + case 256: + b = K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : e.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1 : e.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0; + break; + default: + return e.Debug.fail("This is unknown kind for signature: " + B.kind); + } + return { diagnosticMessage: b, errorNode: B.name || B }; + } + function p(K) { + var b = m(K); + return b !== void 0 ? { diagnosticMessage: b, errorNode: B, typeName: B.name } : void 0; + } + function m(K) { + switch (B.parent.kind) { + case 171: + return K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1; + case 175: + case 180: + return K.errorModuleName ? e.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + case 174: + return K.errorModuleName ? e.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + case 176: + return K.errorModuleName ? e.Diagnostics.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1; + case 169: + case 168: + return e.isStatic(B.parent) ? K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1 : B.parent.parent.kind === 257 ? K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1 : K.errorModuleName ? e.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + case 256: + case 179: + return K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1; + case 173: + case 172: + return K.errorModuleName ? K.accessibility === 2 ? e.Diagnostics.Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : e.Diagnostics.Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2 : e.Diagnostics.Parameter_0_of_accessor_has_or_is_using_private_name_1; + default: + return e.Debug.fail("Unknown parent for parameter: ".concat(e.SyntaxKind[B.parent.kind])); + } + } + function G() { + var K; + switch (B.parent.kind) { + case 257: + K = e.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; + break; + case 258: + K = e.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; + break; + case 195: + K = e.Diagnostics.Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1; + break; + case 180: + case 175: + K = e.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; + break; + case 174: + K = e.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1; + break; + case 169: + case 168: + e.isStatic(B.parent) ? K = e.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1 : B.parent.parent.kind === 257 ? K = e.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1 : K = e.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; + break; + case 179: + case 256: + K = e.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; + break; + case 259: + K = e.Diagnostics.Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1; + break; + default: + return e.Debug.fail("This is unknown parent for type parameter: " + B.parent.kind); + } + return { diagnosticMessage: K, errorNode: B, typeName: B.name }; + } + function oe() { + var K; + return e.isClassDeclaration(B.parent.parent) ? K = e.isHeritageClause(B.parent) && B.parent.token === 117 ? e.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : B.parent.parent.name ? e.Diagnostics.extends_clause_of_exported_class_0_has_or_is_using_private_name_1 : e.Diagnostics.extends_clause_of_exported_class_has_or_is_using_private_name_0 : K = e.Diagnostics.extends_clause_of_exported_interface_0_has_or_is_using_private_name_1, { diagnosticMessage: K, errorNode: B, typeName: e.getNameOfDeclaration(B.parent.parent) }; + } + function f() { + return { diagnosticMessage: e.Diagnostics.Import_declaration_0_is_using_private_name_1, errorNode: B, typeName: B.name }; + } + function T(K) { + return { diagnosticMessage: K.errorModuleName ? e.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1_from_module_2 : e.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, errorNode: e.isJSDocTypeAlias(B) ? e.Debug.checkDefined(B.typeExpression) : B.type, typeName: e.isJSDocTypeAlias(B) ? e.getNameOfDeclaration(B) : B.name }; + } + } + e.createGetSymbolAccessibilityDiagnosticForNode = w; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(f, T, K) { + var b = f.getCompilerOptions(), se = e.transformNodes(T, f, e.factory, b, K ? [K] : e.filter(f.getSourceFiles(), e.isSourceFileNotJson), [E], false); + return se.diagnostics; + } + e.getDeclarationDiagnostics = a; + function C(f, T) { + var K = T.text.substring(f.pos, f.end); + return e.stringContains(K, "@internal"); + } + function w(f, T) { + var K = e.getParseTreeNode(f); + if (K && K.kind === 164) { + var b = K.parent.parameters.indexOf(K), se = b > 0 ? K.parent.parameters[b - 1] : void 0, J = T.text, ie = se ? e.concatenate(e.getTrailingCommentRanges(J, e.skipTrivia(J, se.end + 1, false, true)), e.getLeadingCommentRanges(J, f.pos)) : e.getTrailingCommentRanges(J, e.skipTrivia(J, f.pos, false, true)); + return ie && ie.length && C(e.last(ie), T); + } + var R = K && e.getLeadingCommentRangesOfNode(K, T); + return !!e.forEach(R, function(q) { + return C(q, T); + }); + } + e.isInternalDeclaration = w; + var B = 531469; + function E(f) { + var T = function() { + return e.Debug.fail("Diagnostic emitted without context"); + }, K = T, b = true, se = false, J = false, ie = false, R = false, q, O, ve, ee, he, F, x = f.factory, X = f.getEmitHost(), $ = { trackSymbol: fe, reportInaccessibleThisError: Fe, reportInaccessibleUniqueSymbolError: ue, reportCyclicStructureError: We, reportPrivateInBaseOfClassExpression: g, reportLikelyUnsafeImportRequiredError: Z, reportTruncationError: Be, moduleResolverHost: X, trackReferencedAmbientModule: l, trackExternalModuleSymbolOfImportTypeNode: D, reportNonlocalAugmentation: ge, reportNonSerializableProperty: Re }, A, y, V, L, P, k, Y = f.getEmitResolver(), U = f.getCompilerOptions(), j = U.noResolve, H = U.stripInternal; + return Ee; + function I(_r) { + if (!!_r) { + O = O || new e.Set(); + for (var pi = 0, ae = _r; pi < ae.length; pi++) { + var Xe = ae[pi]; + O.add(Xe); + } + } + } + function l(_r, pi) { + var ae = Y.getTypeReferenceDirectivesForSymbol(pi, 67108863); + if (e.length(ae)) + return I(ae); + var Xe = e.getSourceFileOfNode(_r); + L.set(e.getOriginalNodeId(Xe), Xe); + } + function d(_r) { + if (_r.accessibility === 0) { + if (_r && _r.aliasesToMakeVisible) + if (!ve) + ve = _r.aliasesToMakeVisible; + else + for (var pi = 0, ae = _r.aliasesToMakeVisible; pi < ae.length; pi++) { + var Xe = ae[pi]; + e.pushIfUnique(ve, Xe); + } + } else { + var Jr = K(_r); + if (Jr) + return Jr.typeName ? f.addDiagnostic(e.createDiagnosticForNode(_r.errorNode || Jr.errorNode, Jr.diagnosticMessage, e.getTextOfNode(Jr.typeName), _r.errorSymbolName, _r.errorModuleName)) : f.addDiagnostic(e.createDiagnosticForNode(_r.errorNode || Jr.errorNode, Jr.diagnosticMessage, _r.errorSymbolName, _r.errorModuleName)), true; + } + return false; + } + function D(_r) { + se || (F || (F = [])).push(_r); + } + function fe(_r, pi, ae) { + if (_r.flags & 262144) + return false; + var Xe = d(Y.isSymbolAccessible(_r, pi, ae, true)); + return I(Y.getTypeReferenceDirectivesForSymbol(_r, ae)), Xe; + } + function g(_r) { + (A || y) && f.addDiagnostic(e.createDiagnosticForNode(A || y, e.Diagnostics.Property_0_of_exported_class_expression_may_not_be_private_or_protected, _r)); + } + function ne() { + return A ? e.declarationNameToString(A) : y && e.getNameOfDeclaration(y) ? e.declarationNameToString(e.getNameOfDeclaration(y)) : y && e.isExportAssignment(y) ? y.isExportEquals ? "export=" : "default" : "(Missing)"; + } + function ue() { + (A || y) && f.addDiagnostic(e.createDiagnosticForNode(A || y, e.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary, ne(), "unique symbol")); + } + function We() { + (A || y) && f.addDiagnostic(e.createDiagnosticForNode(A || y, e.Diagnostics.The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary, ne())); + } + function Fe() { + (A || y) && f.addDiagnostic(e.createDiagnosticForNode(A || y, e.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary, ne(), "this")); + } + function Z(_r) { + (A || y) && f.addDiagnostic(e.createDiagnosticForNode(A || y, e.Diagnostics.The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_annotation_is_necessary, ne(), _r)); + } + function Be() { + (A || y) && f.addDiagnostic(e.createDiagnosticForNode(A || y, e.Diagnostics.The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed)); + } + function ge(_r, pi, ae) { + var Xe, Jr = (Xe = pi.declarations) === null || Xe === void 0 ? void 0 : Xe.find(function(Wr) { + return e.getSourceFileOfNode(Wr) === _r; + }), ti = e.filter(ae.declarations, function(Wr) { + return e.getSourceFileOfNode(Wr) !== _r; + }); + if (ti) + for (var Ze = 0, Sr = ti; Ze < Sr.length; Ze++) { + var zr = Sr[Ze]; + f.addDiagnostic(e.addRelatedInfo(e.createDiagnosticForNode(zr, e.Diagnostics.Declaration_augments_declaration_in_another_file_This_cannot_be_serialized), e.createDiagnosticForNode(Jr, e.Diagnostics.This_is_the_declaration_being_augmented_Consider_moving_the_augmenting_declaration_into_the_same_file))); + } + } + function Re(_r) { + (A || y) && f.addDiagnostic(e.createDiagnosticForNode(A || y, e.Diagnostics.The_type_of_this_node_cannot_be_serialized_because_its_property_0_cannot_be_serialized, _r)); + } + function ze(_r, pi) { + var ae = K; + K = function(Jr) { + return Jr.errorNode && e.canProduceDiagnostics(Jr.errorNode) ? e.createGetSymbolAccessibilityDiagnosticForNode(Jr.errorNode)(Jr) : { diagnosticMessage: Jr.errorModuleName ? e.Diagnostics.Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit : e.Diagnostics.Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit, errorNode: Jr.errorNode || _r }; + }; + var Xe = Y.getDeclarationStatementsForSourceFile(_r, B, $, pi); + return K = ae, Xe; + } + function Ee(_r) { + if (_r.kind === 305 && _r.isDeclarationFile) + return _r; + if (_r.kind === 306) { + se = true, L = new e.Map(), P = new e.Map(); + var pi = false, ae = x.createBundle(e.map(_r.sourceFiles, function(Oe) { + if (!Oe.isDeclarationFile) { + if (pi = pi || Oe.hasNoDefaultLib, V = Oe, q = Oe, ve = void 0, he = false, ee = new e.Map(), K = T, ie = false, R = false, He(Oe, L), rr(Oe, P), e.isExternalOrCommonJsModule(Oe) || e.isJsonSourceFile(Oe)) { + J = false, b = false; + var nr = e.isSourceFileJS(Oe) ? x.createNodeArray(ze(Oe, true)) : e.visitNodes(Oe.statements, Ur), Mr = x.updateSourceFile(Oe, [x.createModuleDeclaration([], [x.createModifier(135)], x.createStringLiteral(e.getResolvedExternalModuleName(f.getEmitHost(), Oe)), x.createModuleBlock(e.setTextRange(x.createNodeArray(yr(nr)), Oe.statements)))], true, [], [], false, []); + return Mr; + } + b = true; + var Pe = e.isSourceFileJS(Oe) ? x.createNodeArray(ze(Oe)) : e.visitNodes(Oe.statements, Ur); + return x.updateSourceFile(Oe, yr(Pe), true, [], [], false, []); + } + }), e.mapDefined(_r.prepends, function(Oe) { + if (Oe.kind === 308) { + var nr = e.createUnparsedSourceFile(Oe, "dts", H); + return pi = pi || !!nr.hasNoDefaultLib, He(nr, L), I(e.map(nr.typeReferenceDirectives, function(Mr) { + return [Mr.fileName, Mr.resolutionMode]; + })), rr(nr, P), nr; + } + return Oe; + })); + ae.syntheticFileReferences = [], ae.syntheticTypeReferences = vr(), ae.syntheticLibReferences = xe(), ae.hasNoDefaultLib = pi; + var Xe = e.getDirectoryPath(e.normalizeSlashes(e.getOutputPathsFor(_r, X, true).declarationFilePath)), Jr = Ar(ae.syntheticFileReferences, Xe); + return L.forEach(Jr), ae; + } + b = true, ie = false, R = false, q = _r, V = _r, K = T, se = false, J = false, he = false, ve = void 0, ee = new e.Map(), O = void 0, L = He(V, new e.Map()), P = rr(V, new e.Map()); + var ti = [], Ze = e.getDirectoryPath(e.normalizeSlashes(e.getOutputPathsFor(_r, X, true).declarationFilePath)), Sr = Ar(ti, Ze), zr; + if (e.isSourceFileJS(V)) + zr = x.createNodeArray(ze(_r)), L.forEach(Sr), k = e.filter(zr, e.isAnyImportSyntax); + else { + var Wr = e.visitNodes(_r.statements, Ur); + zr = e.setTextRange(x.createNodeArray(yr(Wr)), _r.statements), L.forEach(Sr), k = e.filter(zr, e.isAnyImportSyntax), e.isExternalModule(_r) && (!J || ie && !R) && (zr = e.setTextRange(x.createNodeArray(Ve(Ve([], zr, true), [e.createEmptyExports(x)], false)), zr)); + } + var Je = x.updateSourceFile(_r, zr, true, ti, vr(), _r.hasNoDefaultLib, xe()); + return Je.exportedModulesFromDeclarationEmit = F, Je; + function xe() { + return e.map(e.arrayFrom(P.keys()), function(Oe) { + return { fileName: Oe, pos: -1, end: -1 }; + }); + } + function vr() { + return O ? e.mapDefined(e.arrayFrom(O.keys()), mr) : []; + } + function mr(Oe) { + var nr = Oe[0], Mr = Oe[1]; + if (k) + for (var Pe = 0, Ue = k; Pe < Ue.length; Pe++) { + var fr = Ue[Pe]; + if (e.isImportEqualsDeclaration(fr) && e.isExternalModuleReference(fr.moduleReference)) { + var De = fr.moduleReference.expression; + if (e.isStringLiteralLike(De) && De.text === nr) + return; + } else if (e.isImportDeclaration(fr) && e.isStringLiteral(fr.moduleSpecifier) && fr.moduleSpecifier.text === nr) + return; + } + return Ke({ fileName: nr, pos: -1, end: -1 }, Mr ? { resolutionMode: Mr } : void 0); + } + function Ar(Oe, nr) { + return function(Mr) { + var Pe; + if (Mr.isDeclarationFile) + Pe = Mr.fileName; + else { + if (se && e.contains(_r.sourceFiles, Mr)) + return; + var Ue = e.getOutputPathsFor(Mr, X, true); + Pe = Ue.declarationFilePath || Ue.jsFilePath || Mr.fileName; + } + if (Pe) { + var fr = e.moduleSpecifiers.getModuleSpecifier(U, V, e.toPath(nr, X.getCurrentDirectory(), X.getCanonicalFileName), e.toPath(Pe, X.getCurrentDirectory(), X.getCanonicalFileName), X); + if (!e.pathIsRelative(fr)) { + I([[fr, void 0]]); + return; + } + var De = e.getRelativePathToDirectoryOrUrl(nr, Pe, X.getCurrentDirectory(), X.getCanonicalFileName, false); + if (e.startsWith(De, "./") && e.hasExtension(De) && (De = De.substring(2)), e.startsWith(De, "node_modules/") || e.pathContainsNodeModules(De)) + return; + Oe.push({ pos: -1, end: -1, fileName: De }); + } + }; + } + } + function He(_r, pi) { + return j || !e.isUnparsedSource(_r) && e.isSourceFileJS(_r) || e.forEach(_r.referencedFiles, function(ae) { + var Xe = X.getSourceFileFromReference(_r, ae); + Xe && pi.set(e.getOriginalNodeId(Xe), Xe); + }), pi; + } + function rr(_r, pi) { + return e.forEach(_r.libReferenceDirectives, function(ae) { + var Xe = X.getLibFileFromReference(ae); + Xe && pi.set(e.toFileNameLowerCase(ae.fileName), true); + }), pi; + } + function Ie(_r) { + if (_r.kind === 79) + return _r; + return _r.kind === 202 ? x.updateArrayBindingPattern(_r, e.visitNodes(_r.elements, pi)) : x.updateObjectBindingPattern(_r, e.visitNodes(_r.elements, pi)); + function pi(ae) { + return ae.kind === 227 ? ae : x.updateBindingElement(ae, ae.dotDotDotToken, ae.propertyName, Ie(ae.name), we(ae) ? ae.initializer : void 0); + } + } + function _e(_r, pi, ae) { + var Xe; + he || (Xe = K, K = e.createGetSymbolAccessibilityDiagnosticForNode(_r)); + var Jr = x.updateParameterDeclaration(_r, void 0, le(_r, pi), _r.dotDotDotToken, Ie(_r.name), Y.isOptionalParameter(_r) ? _r.questionToken || x.createToken(57) : void 0, ye(_r, ae || _r.type, true), de(_r)); + return he || (K = Xe), Jr; + } + function we(_r) { + return m(_r) && Y.isLiteralConstDeclaration(e.getParseTreeNode(_r)); + } + function de(_r) { + if (we(_r)) + return Y.createLiteralConstValue(e.getParseTreeNode(_r), $); + } + function ye(_r, pi, ae) { + if (!ae && e.hasEffectiveModifier(_r, 8) || we(_r)) + return; + var Xe = _r.kind === 164 && (Y.isRequiredInitializedParameter(_r) || Y.isOptionalUninitializedParameterProperty(_r)); + if (pi && !Xe) + return e.visitNode(pi, Ir); + if (!e.getParseTreeNode(_r)) + return pi ? e.visitNode(pi, Ir) : x.createKeywordTypeNode(130); + if (_r.kind === 173) + return x.createKeywordTypeNode(130); + A = _r.name; + var Jr; + if (he || (Jr = K, K = e.createGetSymbolAccessibilityDiagnosticForNode(_r)), _r.kind === 254 || _r.kind === 203) + return ti(Y.createTypeOfDeclaration(_r, q, B, $)); + if (_r.kind === 164 || _r.kind === 167 || _r.kind === 166) + return _r.initializer ? ti(Y.createTypeOfDeclaration(_r, q, B, $, Xe) || Y.createTypeOfExpression(_r.initializer, q, B, $)) : ti(Y.createTypeOfDeclaration(_r, q, B, $, Xe)); + return ti(Y.createReturnTypeOfSignatureDeclaration(_r, q, B, $)); + function ti(Ze) { + return A = void 0, he || (K = Jr), Ze || x.createKeywordTypeNode(130); + } + } + function Ae(_r) { + switch (_r = e.getParseTreeNode(_r), _r.kind) { + case 256: + case 261: + case 258: + case 257: + case 259: + case 260: + return !Y.isDeclarationVisible(_r); + case 254: + return !ir(_r); + case 265: + case 266: + case 272: + case 271: + return false; + case 170: + return true; + } + return false; + } + function er(_r) { + var pi; + if (_r.body) + return true; + var ae = (pi = _r.symbol.declarations) === null || pi === void 0 ? void 0 : pi.filter(function(Xe) { + return e.isFunctionDeclaration(Xe) && !Xe.body; + }); + return !ae || ae.indexOf(_r) === ae.length - 1; + } + function ir(_r) { + return e.isOmittedExpression(_r) ? false : e.isBindingPattern(_r.name) ? e.some(_r.name.elements, ir) : Y.isDeclarationVisible(_r); + } + function Cr(_r, pi, ae) { + if (!e.hasEffectiveModifier(_r, 8)) { + var Xe = e.map(pi, function(Jr) { + return _e(Jr, ae); + }); + if (!!Xe) + return x.createNodeArray(Xe, pi.hasTrailingComma); + } + } + function Ye(_r, pi) { + var ae; + if (!pi) { + var Xe = e.getThisParameter(_r); + Xe && (ae = [_e(Xe)]); + } + if (e.isSetAccessorDeclaration(_r)) { + var Jr = void 0; + if (!pi) { + var ti = e.getSetAccessorValueParameter(_r); + if (ti) { + var Ze = Wt(_r, Y.getAllAccessorDeclarations(_r)); + Jr = _e(ti, void 0, Ze); + } + } + Jr || (Jr = x.createParameterDeclaration(void 0, void 0, void 0, "value")), ae = e.append(ae, Jr); + } + return x.createNodeArray(ae || e.emptyArray); + } + function Br(_r, pi) { + return e.hasEffectiveModifier(_r, 8) ? void 0 : e.visitNodes(pi, Ir); + } + function Er(_r) { + return e.isSourceFile(_r) || e.isTypeAliasDeclaration(_r) || e.isModuleDeclaration(_r) || e.isClassDeclaration(_r) || e.isInterfaceDeclaration(_r) || e.isFunctionLike(_r) || e.isIndexSignatureDeclaration(_r) || e.isMappedTypeNode(_r); + } + function Ne(_r, pi) { + var ae = Y.isEntityNameVisible(_r, pi); + d(ae), I(Y.getTypeReferenceDirectivesForEntityName(_r)); + } + function n(_r, pi) { + return e.hasJSDocNodes(_r) && e.hasJSDocNodes(pi) && (_r.jsDoc = pi.jsDoc), e.setCommentRange(_r, e.getCommentRange(pi)); + } + function lr(_r, pi) { + if (!!pi) { + if (J = J || _r.kind !== 261 && _r.kind !== 200, e.isStringLiteralLike(pi)) + if (se) { + var ae = e.getExternalModuleNameFromDeclaration(f.getEmitHost(), Y, _r); + if (ae) + return x.createStringLiteral(ae); + } else { + var Xe = Y.getSymbolOfExternalModuleSpecifier(pi); + Xe && (F || (F = [])).push(Xe); + } + return pi; + } + } + function be(_r) { + if (!!Y.isDeclarationVisible(_r)) + if (_r.moduleReference.kind === 277) { + var pi = e.getExternalModuleImportEqualsDeclarationExpression(_r); + return x.updateImportEqualsDeclaration(_r, void 0, _r.modifiers, _r.isTypeOnly, _r.name, x.updateExternalModuleReference(_r.moduleReference, lr(_r, pi))); + } else { + var ae = K; + return K = e.createGetSymbolAccessibilityDiagnosticForNode(_r), Ne(_r.moduleReference, q), K = ae, _r; + } + } + function Ge(_r) { + if (!_r.importClause) + return x.updateImportDeclaration(_r, void 0, _r.modifiers, _r.importClause, lr(_r, _r.moduleSpecifier), ur(_r.assertClause)); + var pi = _r.importClause && _r.importClause.name && Y.isDeclarationVisible(_r.importClause) ? _r.importClause.name : void 0; + if (!_r.importClause.namedBindings) + return pi && x.updateImportDeclaration(_r, void 0, _r.modifiers, x.updateImportClause(_r.importClause, _r.importClause.isTypeOnly, pi, void 0), lr(_r, _r.moduleSpecifier), ur(_r.assertClause)); + if (_r.importClause.namedBindings.kind === 268) { + var ae = Y.isDeclarationVisible(_r.importClause.namedBindings) ? _r.importClause.namedBindings : void 0; + return pi || ae ? x.updateImportDeclaration(_r, void 0, _r.modifiers, x.updateImportClause(_r.importClause, _r.importClause.isTypeOnly, pi, ae), lr(_r, _r.moduleSpecifier), ur(_r.assertClause)) : void 0; + } + var Xe = e.mapDefined(_r.importClause.namedBindings.elements, function(Jr) { + return Y.isDeclarationVisible(Jr) ? Jr : void 0; + }); + if (Xe && Xe.length || pi) + return x.updateImportDeclaration(_r, void 0, _r.modifiers, x.updateImportClause(_r.importClause, _r.importClause.isTypeOnly, pi, Xe && Xe.length ? x.updateNamedImports(_r.importClause.namedBindings, Xe) : void 0), lr(_r, _r.moduleSpecifier), ur(_r.assertClause)); + if (Y.isImportRequiredByAugmentation(_r)) + return x.updateImportDeclaration(_r, void 0, _r.modifiers, void 0, lr(_r, _r.moduleSpecifier), ur(_r.assertClause)); + } + function ur(_r) { + var pi = e.getResolutionModeOverrideForClause(_r); + if (pi !== void 0) + return e.isNightly() || f.addDiagnostic(e.createDiagnosticForNode(_r, e.Diagnostics.Resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next)), _r; + } + function yr(_r) { + for (; e.length(ve); ) { + var pi = ve.shift(); + if (!e.isLateVisibilityPaintedStatement(pi)) + return e.Debug.fail("Late replaced statement was found which is not handled by the declaration transformer!: ".concat(e.SyntaxKind ? e.SyntaxKind[pi.kind] : pi.kind)); + var ae = b; + b = pi.parent && e.isSourceFile(pi.parent) && !(e.isExternalModule(pi.parent) && se); + var Xe = mi(pi); + b = ae, ee.set(e.getOriginalNodeId(pi), Xe); + } + return e.visitNodes(_r, Jr); + function Jr(ti) { + if (e.isLateVisibilityPaintedStatement(ti)) { + var Ze = e.getOriginalNodeId(ti); + if (ee.has(Ze)) { + var Sr = ee.get(Ze); + return ee.delete(Ze), Sr && ((e.isArray(Sr) ? e.some(Sr, e.needsScopeMarker) : e.needsScopeMarker(Sr)) && (ie = true), e.isSourceFile(ti.parent) && (e.isArray(Sr) ? e.some(Sr, e.isExternalModuleIndicator) : e.isExternalModuleIndicator(Sr)) && (J = true)), Sr; + } + } + return ti; + } + } + function Ir(_r) { + if (Di(_r) || e.isDeclaration(_r) && (Ae(_r) || e.hasDynamicName(_r) && !Y.isLateBound(e.getParseTreeNode(_r))) || e.isFunctionLike(_r) && Y.isImplementationOfOverload(_r) || e.isSemicolonClassElement(_r)) + return; + var pi; + Er(_r) && (pi = q, q = _r); + var ae = K, Xe = e.canProduceDiagnostics(_r), Jr = he, ti = (_r.kind === 182 || _r.kind === 195) && _r.parent.kind !== 259; + if ((e.isMethodDeclaration(_r) || e.isMethodSignature(_r)) && e.hasEffectiveModifier(_r, 8)) + return _r.symbol && _r.symbol.declarations && _r.symbol.declarations[0] !== _r ? void 0 : Oe(x.createPropertyDeclaration(void 0, et(_r), _r.name, void 0, void 0, void 0)); + if (Xe && !he && (K = e.createGetSymbolAccessibilityDiagnosticForNode(_r)), e.isTypeQueryNode(_r) && Ne(_r.exprName, q), ti && (he = true), oe(_r)) + switch (_r.kind) { + case 228: { + (e.isEntityName(_r.expression) || e.isEntityNameExpression(_r.expression)) && Ne(_r.expression, q); + var Ze = e.visitEachChild(_r, Ir, f); + return Oe(x.updateExpressionWithTypeArguments(Ze, Ze.expression, Ze.typeArguments)); + } + case 178: { + Ne(_r.typeName, q); + var Ze = e.visitEachChild(_r, Ir, f); + return Oe(x.updateTypeReferenceNode(Ze, Ze.typeName, Ze.typeArguments)); + } + case 175: + return Oe(x.updateConstructSignature(_r, Br(_r, _r.typeParameters), Cr(_r, _r.parameters), ye(_r, _r.type))); + case 171: { + var Sr = x.createConstructorDeclaration(void 0, et(_r), Cr(_r, _r.parameters, 0), void 0); + return Oe(Sr); + } + case 169: { + if (e.isPrivateIdentifier(_r.name)) + return Oe(void 0); + var zr = x.createMethodDeclaration(void 0, et(_r), void 0, _r.name, _r.questionToken, Br(_r, _r.typeParameters), Cr(_r, _r.parameters), ye(_r, _r.type), void 0); + return Oe(zr); + } + case 172: { + if (e.isPrivateIdentifier(_r.name)) + return Oe(void 0); + var Wr = Wt(_r, Y.getAllAccessorDeclarations(_r)); + return Oe(x.updateGetAccessorDeclaration(_r, void 0, et(_r), _r.name, Ye(_r, e.hasEffectiveModifier(_r, 8)), ye(_r, Wr), void 0)); + } + case 173: + return e.isPrivateIdentifier(_r.name) ? Oe(void 0) : Oe(x.updateSetAccessorDeclaration(_r, void 0, et(_r), _r.name, Ye(_r, e.hasEffectiveModifier(_r, 8)), void 0)); + case 167: + return e.isPrivateIdentifier(_r.name) ? Oe(void 0) : Oe(x.updatePropertyDeclaration(_r, void 0, et(_r), _r.name, _r.questionToken, ye(_r, _r.type), de(_r))); + case 166: + return e.isPrivateIdentifier(_r.name) ? Oe(void 0) : Oe(x.updatePropertySignature(_r, et(_r), _r.name, _r.questionToken, ye(_r, _r.type))); + case 168: + return e.isPrivateIdentifier(_r.name) ? Oe(void 0) : Oe(x.updateMethodSignature(_r, et(_r), _r.name, _r.questionToken, Br(_r, _r.typeParameters), Cr(_r, _r.parameters), ye(_r, _r.type))); + case 174: + return Oe(x.updateCallSignature(_r, Br(_r, _r.typeParameters), Cr(_r, _r.parameters), ye(_r, _r.type))); + case 176: + return Oe(x.updateIndexSignature(_r, void 0, et(_r), Cr(_r, _r.parameters), e.visitNode(_r.type, Ir) || x.createKeywordTypeNode(130))); + case 254: + return e.isBindingPattern(_r.name) ? or(_r.name) : (ti = true, he = true, Oe(x.updateVariableDeclaration(_r, _r.name, void 0, ye(_r, _r.type), de(_r)))); + case 163: + return wr(_r) && (_r.default || _r.constraint) ? Oe(x.updateTypeParameterDeclaration(_r, _r.modifiers, _r.name, void 0, void 0)) : Oe(e.visitEachChild(_r, Ir, f)); + case 189: { + var Je = e.visitNode(_r.checkType, Ir), xe = e.visitNode(_r.extendsType, Ir), vr = q; + q = _r.trueType; + var mr = e.visitNode(_r.trueType, Ir); + q = vr; + var Ar = e.visitNode(_r.falseType, Ir); + return Oe(x.updateConditionalTypeNode(_r, Je, xe, mr, Ar)); + } + case 179: + return Oe(x.updateFunctionTypeNode(_r, e.visitNodes(_r.typeParameters, Ir), Cr(_r, _r.parameters), e.visitNode(_r.type, Ir))); + case 180: + return Oe(x.updateConstructorTypeNode(_r, et(_r), e.visitNodes(_r.typeParameters, Ir), Cr(_r, _r.parameters), e.visitNode(_r.type, Ir))); + case 200: + return e.isLiteralImportTypeNode(_r) ? Oe(x.updateImportTypeNode(_r, x.updateLiteralTypeNode(_r.argument, lr(_r, _r.argument.literal)), _r.assertions, _r.qualifier, e.visitNodes(_r.typeArguments, Ir, e.isTypeNode), _r.isTypeOf)) : Oe(_r); + default: + e.Debug.assertNever(_r, "Attempted to process unhandled node kind: ".concat(e.SyntaxKind[_r.kind])); + } + return e.isTupleTypeNode(_r) && e.getLineAndCharacterOfPosition(V, _r.pos).line === e.getLineAndCharacterOfPosition(V, _r.end).line && e.setEmitFlags(_r, 1), Oe(e.visitEachChild(_r, Ir, f)); + function Oe(nr) { + return nr && Xe && e.hasDynamicName(_r) && si(_r), Er(_r) && (q = pi), Xe && !he && (K = ae), ti && (he = Jr), nr === _r ? nr : nr && e.setOriginalNode(n(nr, _r), _r); + } + } + function wr(_r) { + return _r.parent.kind === 169 && e.hasEffectiveModifier(_r.parent, 8); + } + function Ur(_r) { + if (!!G(_r) && !Di(_r)) { + switch (_r.kind) { + case 272: + return e.isSourceFile(_r.parent) && (J = true), R = true, x.updateExportDeclaration(_r, void 0, _r.modifiers, _r.isTypeOnly, _r.exportClause, lr(_r, _r.moduleSpecifier), e.getResolutionModeOverrideForClause(_r.assertClause) ? _r.assertClause : void 0); + case 271: { + if (e.isSourceFile(_r.parent) && (J = true), R = true, _r.expression.kind === 79) + return _r; + var pi = x.createUniqueName("_default", 16); + K = function() { + return { diagnosticMessage: e.Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, errorNode: _r }; + }, y = _r; + var ae = x.createVariableDeclaration(pi, void 0, Y.createTypeOfExpression(_r.expression, _r, B, $), void 0); + y = void 0; + var Xe = x.createVariableStatement(b ? [x.createModifier(135)] : [], x.createVariableDeclarationList([ae], 2)); + return n(Xe, _r), e.removeAllComments(_r), [Xe, x.updateExportAssignment(_r, _r.decorators, _r.modifiers, pi)]; + } + } + var Jr = mi(_r); + return ee.set(e.getOriginalNodeId(_r), Jr), _r; + } + } + function ii(_r) { + if (e.isImportEqualsDeclaration(_r) || e.hasEffectiveModifier(_r, 512) || !e.canHaveModifiers(_r)) + return _r; + var pi = x.createModifiersFromModifierFlags(e.getEffectiveModifierFlags(_r) & 125950); + return x.updateModifiers(_r, pi); + } + function mi(_r) { + if (ve) + for (; e.orderedRemoveItem(ve, _r); ) + ; + if (Di(_r)) + return; + switch (_r.kind) { + case 265: + return be(_r); + case 266: + return Ge(_r); + } + if (e.isDeclaration(_r) && Ae(_r) || e.isFunctionLike(_r) && Y.isImplementationOfOverload(_r)) + return; + var pi; + Er(_r) && (pi = q, q = _r); + var ae = e.canProduceDiagnostics(_r), Xe = K; + ae && (K = e.createGetSymbolAccessibilityDiagnosticForNode(_r)); + var Jr = b; + switch (_r.kind) { + case 259: + return Ii(x.updateTypeAliasDeclaration(_r, void 0, et(_r), _r.name, e.visitNodes(_r.typeParameters, Ir, e.isTypeParameterDeclaration), e.visitNode(_r.type, Ir, e.isTypeNode))); + case 258: + return Ii(x.updateInterfaceDeclaration(_r, void 0, et(_r), _r.name, Br(_r, _r.typeParameters), Zt(_r.heritageClauses), e.visitNodes(_r.members, Ir))); + case 256: { + var ti = Ii(x.updateFunctionDeclaration(_r, void 0, et(_r), void 0, _r.name, Br(_r, _r.typeParameters), Cr(_r, _r.parameters), ye(_r, _r.type), void 0)); + if (ti && Y.isExpandoFunctionDeclaration(_r) && er(_r)) { + var Ze = Y.getPropertiesOfContainerFunction(_r), Sr = e.parseNodeFactory.createModuleDeclaration(void 0, void 0, ti.name || x.createIdentifier("_default"), x.createModuleBlock([]), 16); + e.setParent(Sr, q), Sr.locals = e.createSymbolTable(Ze), Sr.symbol = Ze[0].parent; + var zr = [], Wr = e.mapDefined(Ze, function(Ki) { + if (!(!Ki.valueDeclaration || !e.isPropertyAccessExpression(Ki.valueDeclaration))) { + K = e.createGetSymbolAccessibilityDiagnosticForNode(Ki.valueDeclaration); + var Fi = Y.createTypeOfDeclaration(Ki.valueDeclaration, Sr, B, $); + K = Xe; + var ui = e.unescapeLeadingUnderscores(Ki.escapedName), Bt = e.isStringANonContextualKeyword(ui), wt = Bt ? x.getGeneratedNameForNode(Ki.valueDeclaration) : x.createIdentifier(ui); + Bt && zr.push([wt, ui]); + var na = x.createVariableDeclaration(wt, void 0, Fi, void 0); + return x.createVariableStatement(Bt ? void 0 : [x.createToken(93)], x.createVariableDeclarationList([na])); + } + }); + zr.length ? Wr.push(x.createExportDeclaration(void 0, void 0, false, x.createNamedExports(e.map(zr, function(Ki) { + var Fi = Ki[0], ui = Ki[1]; + return x.createExportSpecifier(false, Fi, ui); + })))) : Wr = e.mapDefined(Wr, function(Ki) { + return x.updateModifiers(Ki, 0); + }); + var Je = x.createModuleDeclaration(void 0, et(_r), _r.name, x.createModuleBlock(Wr), 16); + if (!e.hasEffectiveModifier(ti, 512)) + return [ti, Je]; + var xe = x.createModifiersFromModifierFlags(e.getEffectiveModifierFlags(ti) & -514 | 2), vr = x.updateFunctionDeclaration(ti, void 0, xe, void 0, ti.name, ti.typeParameters, ti.parameters, ti.type, void 0), mr = x.updateModuleDeclaration(Je, void 0, xe, Je.name, Je.body), Ar = x.createExportAssignment(void 0, void 0, false, Je.name); + return e.isSourceFile(_r.parent) && (J = true), R = true, [vr, mr, Ar]; + } else + return ti; + } + case 261: { + b = false; + var Oe = _r.body; + if (Oe && Oe.kind === 262) { + var nr = ie, Mr = R; + R = false, ie = false; + var Pe = e.visitNodes(Oe.statements, Ur), Ue = yr(Pe); + _r.flags & 16777216 && (ie = false), !e.isGlobalScopeAugmentation(_r) && !Xi(Ue) && !R && (ie ? Ue = x.createNodeArray(Ve(Ve([], Ue, true), [e.createEmptyExports(x)], false)) : Ue = e.visitNodes(Ue, ii)); + var fr = x.updateModuleBlock(Oe, Ue); + b = Jr, ie = nr, R = Mr; + var De = et(_r); + return Ii(x.updateModuleDeclaration(_r, void 0, De, e.isExternalModuleAugmentation(_r) ? lr(_r, _r.name) : _r.name, fr)); + } else { + b = Jr; + var De = et(_r); + b = false, e.visitNode(Oe, Ur); + var gr = e.getOriginalNodeId(Oe), fr = ee.get(gr); + return ee.delete(gr), Ii(x.updateModuleDeclaration(_r, void 0, De, _r.name, fr)); + } + } + case 257: { + A = _r.name, y = _r; + var xe = x.createNodeArray(et(_r)), Vr = Br(_r, _r.typeParameters), Tr = e.getFirstConstructorWithBody(_r), vi = void 0; + if (Tr) { + var Ui = K; + vi = e.compact(e.flatMap(Tr.parameters, function(Fi) { + if (!e.hasSyntacticModifier(Fi, 16476) || Di(Fi)) + return; + if (K = e.createGetSymbolAccessibilityDiagnosticForNode(Fi), Fi.name.kind === 79) + return n(x.createPropertyDeclaration(void 0, et(Fi), Fi.name, Fi.questionToken, ye(Fi, Fi.type), de(Fi)), Fi); + return ui(Fi.name); + function ui(Bt) { + for (var wt, na = 0, Ai = Bt.elements; na < Ai.length; na++) { + var Oi = Ai[na]; + e.isOmittedExpression(Oi) || (e.isBindingPattern(Oi.name) && (wt = e.concatenate(wt, ui(Oi.name))), wt = wt || [], wt.push(x.createPropertyDeclaration(void 0, et(Fi), Oi.name, void 0, ye(Oi, void 0), void 0))); + } + return wt; + } + })), K = Ui; + } + var Yi = e.some(_r.members, function(Fi) { + return !!Fi.name && e.isPrivateIdentifier(Fi.name); + }), Wi = Yi ? [x.createPropertyDeclaration(void 0, void 0, x.createPrivateIdentifier("#private"), void 0, void 0, void 0)] : void 0, ct = e.concatenate(e.concatenate(Wi, vi), e.visitNodes(_r.members, Ir)), Li = x.createNodeArray(ct), nt = e.getEffectiveBaseTypeNode(_r); + if (nt && !e.isEntityNameExpression(nt.expression) && nt.expression.kind !== 104) { + var Mt = _r.name ? e.unescapeLeadingUnderscores(_r.name.escapedText) : "default", xt = x.createUniqueName("".concat(Mt, "_base"), 16); + K = function() { + return { diagnosticMessage: e.Diagnostics.extends_clause_of_exported_class_0_has_or_is_using_private_name_1, errorNode: nt, typeName: _r.name }; + }; + var ut = x.createVariableDeclaration(xt, void 0, Y.createTypeOfExpression(nt.expression, _r, B, $), void 0), Dt = x.createVariableStatement(b ? [x.createModifier(135)] : [], x.createVariableDeclarationList([ut], 2)), Rt = x.createNodeArray(e.map(_r.heritageClauses, function(Fi) { + if (Fi.token === 94) { + var ui = K; + K = e.createGetSymbolAccessibilityDiagnosticForNode(Fi.types[0]); + var Bt = x.updateHeritageClause(Fi, e.map(Fi.types, function(wt) { + return x.updateExpressionWithTypeArguments(wt, xt, e.visitNodes(wt.typeArguments, Ir)); + })); + return K = ui, Bt; + } + return x.updateHeritageClause(Fi, e.visitNodes(x.createNodeArray(e.filter(Fi.types, function(wt) { + return e.isEntityNameExpression(wt.expression) || wt.expression.kind === 104; + })), Ir)); + })); + return [Dt, Ii(x.updateClassDeclaration(_r, void 0, xe, _r.name, Vr, Rt, Li))]; + } else { + var Rt = Zt(_r.heritageClauses); + return Ii(x.updateClassDeclaration(_r, void 0, xe, _r.name, Vr, Rt, Li)); + } + } + case 237: + return Ii(pe(_r)); + case 260: + return Ii(x.updateEnumDeclaration(_r, void 0, x.createNodeArray(et(_r)), _r.name, x.createNodeArray(e.mapDefined(_r.members, function(Ki) { + if (!Di(Ki)) { + var Fi = Y.getConstantValue(Ki); + return n(x.updateEnumMember(Ki, Ki.name, Fi !== void 0 ? typeof Fi == "string" ? x.createStringLiteral(Fi) : x.createNumericLiteral(Fi) : void 0), Ki); + } + })))); + } + return e.Debug.assertNever(_r, "Unhandled top-level node in declaration emit: ".concat(e.SyntaxKind[_r.kind])); + function Ii(Ki) { + return Er(_r) && (q = pi), ae && (K = Xe), _r.kind === 261 && (b = Jr), Ki === _r ? Ki : (y = void 0, A = void 0, Ki && e.setOriginalNode(n(Ki, _r), _r)); + } + } + function pe(_r) { + if (!!e.forEach(_r.declarationList.declarations, ir)) { + var pi = e.visitNodes(_r.declarationList.declarations, Ir); + if (!!e.length(pi)) + return x.updateVariableStatement(_r, x.createNodeArray(et(_r)), x.updateVariableDeclarationList(_r.declarationList, pi)); + } + } + function or(_r) { + return e.flatten(e.mapDefined(_r.elements, function(pi) { + return qr(pi); + })); + } + function qr(_r) { + if (_r.kind !== 227 && _r.name) + return ir(_r) ? e.isBindingPattern(_r.name) ? or(_r.name) : x.createVariableDeclaration(_r.name, void 0, ye(_r, void 0), void 0) : void 0; + } + function si(_r) { + var pi; + he || (pi = K, K = e.createGetSymbolAccessibilityDiagnosticForNodeName(_r)), A = _r.name, e.Debug.assert(Y.isLateBound(e.getParseTreeNode(_r))); + var ae = _r, Xe = ae.name.expression; + Ne(Xe, q), he || (K = pi), A = void 0; + } + function Di(_r) { + return !!H && !!_r && w(_r, V); + } + function wi(_r) { + return e.isExportAssignment(_r) || e.isExportDeclaration(_r); + } + function Xi(_r) { + return e.some(_r, wi); + } + function et(_r) { + var pi = e.getEffectiveModifierFlags(_r), ae = Gi(_r); + return pi === ae ? _r.modifiers : x.createModifiersFromModifierFlags(ae); + } + function Gi(_r) { + var pi = 109307, ae = b && !Q(_r) ? 2 : 0, Xe = _r.parent.kind === 305; + return (!Xe || se && Xe && e.isExternalModule(_r.parent)) && (pi ^= 2, ae = 0), N(_r, pi, ae); + } + function Wt(_r, pi) { + var ae = p(_r); + return !ae && _r !== pi.firstAccessor && (ae = p(pi.firstAccessor), K = e.createGetSymbolAccessibilityDiagnosticForNode(pi.firstAccessor)), !ae && pi.secondAccessor && _r !== pi.secondAccessor && (ae = p(pi.secondAccessor), K = e.createGetSymbolAccessibilityDiagnosticForNode(pi.secondAccessor)), ae; + } + function Zt(_r) { + return x.createNodeArray(e.filter(e.map(_r, function(pi) { + return x.updateHeritageClause(pi, e.visitNodes(x.createNodeArray(e.filter(pi.types, function(ae) { + return e.isEntityNameExpression(ae.expression) || pi.token === 94 && ae.expression.kind === 104; + })), Ir)); + }), function(pi) { + return pi.types && !!pi.types.length; + })); + } + } + e.transformDeclarations = E; + function Q(f) { + return f.kind === 258; + } + function le(f, T, K) { + return e.factory.createModifiersFromModifierFlags(N(f, T, K)); + } + function N(f, T, K) { + T === void 0 && (T = 125947), K === void 0 && (K = 0); + var b = e.getEffectiveModifierFlags(f) & T | K; + return b & 512 && !(b & 1) && (b ^= 1), b & 512 && b & 2 && (b ^= 2), b; + } + function p(f) { + if (f) + return f.kind === 172 ? f.type : f.parameters.length > 0 ? f.parameters[0].type : void 0; + } + function m(f) { + switch (f.kind) { + case 167: + case 166: + return !e.hasEffectiveModifier(f, 8); + case 164: + case 254: + return true; + } + return false; + } + function G(f) { + switch (f.kind) { + case 256: + case 261: + case 265: + case 258: + case 257: + case 259: + case 260: + case 237: + case 266: + case 272: + case 271: + return true; + } + return false; + } + function oe(f) { + switch (f.kind) { + case 175: + case 171: + case 169: + case 172: + case 173: + case 167: + case 166: + case 168: + case 174: + case 176: + case 254: + case 163: + case 228: + case 178: + case 189: + case 179: + case 180: + case 200: + return true; + } + return false; + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(T) { + switch (T) { + case e.ModuleKind.ESNext: + case e.ModuleKind.ES2022: + case e.ModuleKind.ES2020: + case e.ModuleKind.ES2015: + return e.transformECMAScriptModule; + case e.ModuleKind.System: + return e.transformSystemModule; + case e.ModuleKind.Node16: + case e.ModuleKind.NodeNext: + return e.transformNodeModule; + default: + return e.transformModule; + } + } + var C; + (function(T) { + T[T.Uninitialized = 0] = "Uninitialized", T[T.Initialized = 1] = "Initialized", T[T.Completed = 2] = "Completed", T[T.Disposed = 3] = "Disposed"; + })(C || (C = {})); + var w; + (function(T) { + T[T.Substitution = 1] = "Substitution", T[T.EmitNotifications = 2] = "EmitNotifications"; + })(w || (w = {})), e.noTransformers = { scriptTransformers: e.emptyArray, declarationTransformers: e.emptyArray }; + function B(T, K, b) { + return { scriptTransformers: E(T, K, b), declarationTransformers: Q(K) }; + } + e.getTransformers = B; + function E(T, K, b) { + if (b) + return e.emptyArray; + var se = e.getEmitScriptTarget(T), J = e.getEmitModuleKind(T), ie = []; + return e.addRange(ie, K && e.map(K.before, p)), ie.push(e.transformTypeScript), ie.push(e.transformClassFields), e.getJSXTransformEnabled(T) && ie.push(e.transformJsx), se < 99 && ie.push(e.transformESNext), se < 8 && ie.push(e.transformES2021), se < 7 && ie.push(e.transformES2020), se < 6 && ie.push(e.transformES2019), se < 5 && ie.push(e.transformES2018), se < 4 && ie.push(e.transformES2017), se < 3 && ie.push(e.transformES2016), se < 2 && (ie.push(e.transformES2015), ie.push(e.transformGenerators)), ie.push(a(J)), se < 1 && ie.push(e.transformES5), e.addRange(ie, K && e.map(K.after, p)), ie; + } + function Q(T) { + var K = []; + return K.push(e.transformDeclarations), e.addRange(K, T && e.map(T.afterDeclarations, m)), K; + } + function le(T) { + return function(K) { + return e.isBundle(K) ? T.transformBundle(K) : T.transformSourceFile(K); + }; + } + function N(T, K) { + return function(b) { + var se = T(b); + return typeof se == "function" ? K(b, se) : le(se); + }; + } + function p(T) { + return N(T, e.chainBundle); + } + function m(T) { + return N(T, function(K, b) { + return b; + }); + } + function G(T, K) { + return K; + } + e.noEmitSubstitution = G; + function oe(T, K, b) { + b(T, K); + } + e.noEmitNotification = oe; + function f(T, K, b, se, J, ie, R) { + for (var q = new Array(355), O, ve, ee, he = 0, F = [], x = [], X = [], $ = [], A = 0, y = false, V = [], L = 0, P, k, Y = G, U = oe, j = 0, H = [], I = { factory: b, getCompilerOptions: function() { + return se; + }, getEmitResolver: function() { + return T; + }, getEmitHost: function() { + return K; + }, getEmitHelperFactory: e.memoize(function() { + return e.createEmitHelperFactory(I); + }), startLexicalEnvironment: _e, suspendLexicalEnvironment: we, resumeLexicalEnvironment: de, endLexicalEnvironment: ye, setLexicalEnvironmentFlags: Ae, getLexicalEnvironmentFlags: er, hoistVariableDeclaration: He, hoistFunctionDeclaration: rr, addInitializationStatement: Ie, startBlockScope: ir, endBlockScope: Cr, addBlockScopedVariable: Ye, requestEmitHelper: Br, readEmitHelpers: Er, enableSubstitution: Z, enableEmitNotification: Re, isSubstitutionEnabled: Be, isEmitNotificationEnabled: ze, get onSubstituteNode() { + return Y; + }, set onSubstituteNode(n) { + e.Debug.assert(j < 1, "Cannot modify transformation hooks after initialization has completed."), e.Debug.assert(n !== void 0, "Value must not be 'undefined'"), Y = n; + }, get onEmitNode() { + return U; + }, set onEmitNode(n) { + e.Debug.assert(j < 1, "Cannot modify transformation hooks after initialization has completed."), e.Debug.assert(n !== void 0, "Value must not be 'undefined'"), U = n; + }, addDiagnostic: function(n) { + H.push(n); + } }, l = 0, d = J; l < d.length; l++) { + var D = d[l]; + e.disposeEmitNodes(e.getSourceFileOfNode(e.getParseTreeNode(D))); + } + e.performance.mark("beforeTransform"); + var fe = ie.map(function(n) { + return n(I); + }), g = function(n) { + for (var lr = 0, be = fe; lr < be.length; lr++) { + var Ge = be[lr]; + n = Ge(n); + } + return n; + }; + j = 1; + for (var ne = [], ue = 0, We = J; ue < We.length; ue++) { + var D = We[ue]; + e.tracing === null || e.tracing === void 0 || e.tracing.push("emit", "transformNodes", D.kind === 305 ? { path: D.path } : { kind: D.kind, pos: D.pos, end: D.end }), ne.push((R ? g : Fe)(D)), e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + return j = 2, e.performance.mark("afterTransform"), e.performance.measure("transformTime", "beforeTransform", "afterTransform"), { transformed: ne, substituteNode: ge, emitNodeWithNotification: Ee, isEmitNotificationEnabled: ze, dispose: Ne, diagnostics: H }; + function Fe(n) { + return n && (!e.isSourceFile(n) || !n.isDeclarationFile) ? g(n) : n; + } + function Z(n) { + e.Debug.assert(j < 2, "Cannot modify the transformation context after transformation has completed."), q[n] |= 1; + } + function Be(n) { + return (q[n.kind] & 1) !== 0 && (e.getEmitFlags(n) & 4) === 0; + } + function ge(n, lr) { + return e.Debug.assert(j < 3, "Cannot substitute a node after the result is disposed."), lr && Be(lr) && Y(n, lr) || lr; + } + function Re(n) { + e.Debug.assert(j < 2, "Cannot modify the transformation context after transformation has completed."), q[n] |= 2; + } + function ze(n) { + return (q[n.kind] & 2) !== 0 || (e.getEmitFlags(n) & 2) !== 0; + } + function Ee(n, lr, be) { + e.Debug.assert(j < 3, "Cannot invoke TransformationResult callbacks after the result is disposed."), lr && (ze(lr) ? U(n, lr, be) : be(n, lr)); + } + function He(n) { + e.Debug.assert(j > 0, "Cannot modify the lexical environment during initialization."), e.Debug.assert(j < 2, "Cannot modify the lexical environment after transformation has completed."); + var lr = e.setEmitFlags(b.createVariableDeclaration(n), 64); + O ? O.push(lr) : O = [lr], he & 1 && (he |= 2); + } + function rr(n) { + e.Debug.assert(j > 0, "Cannot modify the lexical environment during initialization."), e.Debug.assert(j < 2, "Cannot modify the lexical environment after transformation has completed."), e.setEmitFlags(n, 1048576), ve ? ve.push(n) : ve = [n]; + } + function Ie(n) { + e.Debug.assert(j > 0, "Cannot modify the lexical environment during initialization."), e.Debug.assert(j < 2, "Cannot modify the lexical environment after transformation has completed."), e.setEmitFlags(n, 1048576), ee ? ee.push(n) : ee = [n]; + } + function _e() { + e.Debug.assert(j > 0, "Cannot modify the lexical environment during initialization."), e.Debug.assert(j < 2, "Cannot modify the lexical environment after transformation has completed."), e.Debug.assert(!y, "Lexical environment is suspended."), F[A] = O, x[A] = ve, X[A] = ee, $[A] = he, A++, O = void 0, ve = void 0, ee = void 0, he = 0; + } + function we() { + e.Debug.assert(j > 0, "Cannot modify the lexical environment during initialization."), e.Debug.assert(j < 2, "Cannot modify the lexical environment after transformation has completed."), e.Debug.assert(!y, "Lexical environment is already suspended."), y = true; + } + function de() { + e.Debug.assert(j > 0, "Cannot modify the lexical environment during initialization."), e.Debug.assert(j < 2, "Cannot modify the lexical environment after transformation has completed."), e.Debug.assert(y, "Lexical environment is not suspended."), y = false; + } + function ye() { + e.Debug.assert(j > 0, "Cannot modify the lexical environment during initialization."), e.Debug.assert(j < 2, "Cannot modify the lexical environment after transformation has completed."), e.Debug.assert(!y, "Lexical environment is suspended."); + var n; + if (O || ve || ee) { + if (ve && (n = Ve([], ve, true)), O) { + var lr = b.createVariableStatement(void 0, b.createVariableDeclarationList(O)); + e.setEmitFlags(lr, 1048576), n ? n.push(lr) : n = [lr]; + } + ee && (n ? n = Ve(Ve([], n, true), ee, true) : n = Ve([], ee, true)); + } + return A--, O = F[A], ve = x[A], ee = X[A], he = $[A], A === 0 && (F = [], x = [], X = [], $ = []), n; + } + function Ae(n, lr) { + he = lr ? he | n : he & ~n; + } + function er() { + return he; + } + function ir() { + e.Debug.assert(j > 0, "Cannot start a block scope during initialization."), e.Debug.assert(j < 2, "Cannot start a block scope after transformation has completed."), V[L] = P, L++, P = void 0; + } + function Cr() { + e.Debug.assert(j > 0, "Cannot end a block scope during initialization."), e.Debug.assert(j < 2, "Cannot end a block scope after transformation has completed."); + var n = e.some(P) ? [b.createVariableStatement(void 0, b.createVariableDeclarationList(P.map(function(lr) { + return b.createVariableDeclaration(lr); + }), 1))] : void 0; + return L--, P = V[L], L === 0 && (V = []), n; + } + function Ye(n) { + e.Debug.assert(L > 0, "Cannot add a block scoped variable outside of an iteration body."), (P || (P = [])).push(n); + } + function Br(n) { + if (e.Debug.assert(j > 0, "Cannot modify the transformation context during initialization."), e.Debug.assert(j < 2, "Cannot modify the transformation context after transformation has completed."), e.Debug.assert(!n.scoped, "Cannot request a scoped emit helper."), n.dependencies) + for (var lr = 0, be = n.dependencies; lr < be.length; lr++) { + var Ge = be[lr]; + Br(Ge); + } + k = e.append(k, n); + } + function Er() { + e.Debug.assert(j > 0, "Cannot modify the transformation context during initialization."), e.Debug.assert(j < 2, "Cannot modify the transformation context after transformation has completed."); + var n = k; + return k = void 0, n; + } + function Ne() { + if (j < 3) { + for (var n = 0, lr = J; n < lr.length; n++) { + var be = lr[n]; + e.disposeEmitNodes(e.getSourceFileOfNode(e.getParseTreeNode(be))); + } + O = void 0, F = void 0, ve = void 0, x = void 0, Y = void 0, U = void 0, k = void 0, j = 3; + } + } + } + e.transformNodes = f, e.nullTransformationContext = { factory: e.factory, getCompilerOptions: function() { + return {}; + }, getEmitResolver: e.notImplemented, getEmitHost: e.notImplemented, getEmitHelperFactory: e.notImplemented, startLexicalEnvironment: e.noop, resumeLexicalEnvironment: e.noop, suspendLexicalEnvironment: e.noop, endLexicalEnvironment: e.returnUndefined, setLexicalEnvironmentFlags: e.noop, getLexicalEnvironmentFlags: function() { + return 0; + }, hoistVariableDeclaration: e.noop, hoistFunctionDeclaration: e.noop, addInitializationStatement: e.noop, startBlockScope: e.noop, endBlockScope: e.returnUndefined, addBlockScopedVariable: e.noop, requestEmitHelper: e.noop, readEmitHelpers: e.notImplemented, enableSubstitution: e.noop, enableEmitNotification: e.noop, isSubstitutionEnabled: e.notImplemented, isEmitNotificationEnabled: e.notImplemented, onSubstituteNode: G, onEmitNode: oe, addDiagnostic: e.noop }; + })(ke || (ke = {})); + var ke; + (function(e) { + var a = x(); + function C(k) { + return e.fileExtensionIs(k, ".tsbuildinfo"); + } + e.isBuildInfoFile = C; + function w(k, Y, U, j, H, I) { + j === void 0 && (j = false); + var l = e.isArray(U) ? U : e.getSourceFilesToEmit(k, U, j), d = k.getCompilerOptions(); + if (e.outFile(d)) { + var D = k.getPrependNodes(); + if (l.length || D.length) { + var fe = e.factory.createBundle(l, D), g = Y(Q(fe, k, j), fe); + if (g) + return g; + } + } else { + if (!H) + for (var ne = 0, ue = l; ne < ue.length; ne++) { + var We = ue[ne], g = Y(Q(We, k, j), We); + if (g) + return g; + } + if (I) { + var Fe = B(d); + if (Fe) + return Y({ buildInfoPath: Fe }, void 0); + } + } + } + e.forEachEmittedFile = w; + function B(k) { + var Y = k.configFilePath; + if (!!e.isIncrementalCompilation(k)) { + if (k.tsBuildInfoFile) + return k.tsBuildInfoFile; + var U = e.outFile(k), j; + if (U) + j = e.removeFileExtension(U); + else { + if (!Y) + return; + var H = e.removeFileExtension(Y); + j = k.outDir ? k.rootDir ? e.resolvePath(k.outDir, e.getRelativePathFromDirectory(k.rootDir, H, true)) : e.combinePaths(k.outDir, e.getBaseFileName(H)) : H; + } + return j + ".tsbuildinfo"; + } + } + e.getTsBuildInfoEmitOutputFilePath = B; + function E(k, Y) { + var U = e.outFile(k), j = k.emitDeclarationOnly ? void 0 : U, H = j && le(j, k), I = Y || e.getEmitDeclarations(k) ? e.removeFileExtension(U) + ".d.ts" : void 0, l = I && e.getAreDeclarationMapsEnabled(k) ? I + ".map" : void 0, d = B(k); + return { jsFilePath: j, sourceMapFilePath: H, declarationFilePath: I, declarationMapPath: l, buildInfoPath: d }; + } + e.getOutputPathsForBundle = E; + function Q(k, Y, U) { + var j = Y.getCompilerOptions(); + if (k.kind === 306) + return E(j, U); + var H = e.getOwnEmitOutputFilePath(k.fileName, Y, N(k.fileName, j)), I = e.isJsonSourceFile(k), l = I && e.comparePaths(k.fileName, H, Y.getCurrentDirectory(), !Y.useCaseSensitiveFileNames()) === 0, d = j.emitDeclarationOnly || l ? void 0 : H, D = !d || e.isJsonSourceFile(k) ? void 0 : le(d, j), fe = U || e.getEmitDeclarations(j) && !I ? e.getDeclarationEmitOutputFilePath(k.fileName, Y) : void 0, g = fe && e.getAreDeclarationMapsEnabled(j) ? fe + ".map" : void 0; + return { jsFilePath: d, sourceMapFilePath: D, declarationFilePath: fe, declarationMapPath: g, buildInfoPath: void 0 }; + } + e.getOutputPathsFor = Q; + function le(k, Y) { + return Y.sourceMap && !Y.inlineSourceMap ? k + ".map" : void 0; + } + function N(k, Y) { + return e.fileExtensionIs(k, ".json") ? ".json" : Y.jsx === 1 && e.fileExtensionIsOneOf(k, [".jsx", ".tsx"]) ? ".jsx" : e.fileExtensionIsOneOf(k, [".mts", ".mjs"]) ? ".mjs" : e.fileExtensionIsOneOf(k, [".cts", ".cjs"]) ? ".cjs" : ".js"; + } + e.getOutputExtension = N; + function p(k, Y, U, j, H) { + return j ? e.resolvePath(j, e.getRelativePathFromDirectory(H ? H() : b(Y, U), k, U)) : k; + } + function m(k, Y, U, j) { + return e.changeExtension(p(k, Y, U, Y.options.declarationDir || Y.options.outDir, j), e.getDeclarationEmitExtensionForPath(k)); + } + e.getOutputDeclarationFileName = m; + function G(k, Y, U, j) { + if (!Y.options.emitDeclarationOnly) { + var H = e.fileExtensionIs(k, ".json"), I = e.changeExtension(p(k, Y, U, Y.options.outDir, j), N(k, Y.options)); + return !H || e.comparePaths(k, I, e.Debug.checkDefined(Y.options.configFilePath), U) !== 0 ? I : void 0; + } + } + function oe() { + var k; + return { addOutput: Y, getOutputs: U }; + function Y(j) { + j && (k || (k = [])).push(j); + } + function U() { + return k || e.emptyArray; + } + } + function f(k, Y) { + var U = E(k.options, false), j = U.jsFilePath, H = U.sourceMapFilePath, I = U.declarationFilePath, l = U.declarationMapPath, d = U.buildInfoPath; + Y(j), Y(H), Y(I), Y(l), Y(d); + } + function T(k, Y, U, j, H) { + if (!e.isDeclarationFileName(Y)) { + var I = G(Y, k, U, H); + if (j(I), !e.fileExtensionIs(Y, ".json") && (I && k.options.sourceMap && j("".concat(I, ".map")), e.getEmitDeclarations(k.options))) { + var l = m(Y, k, U, H); + j(l), k.options.declarationMap && j("".concat(l, ".map")); + } + } + } + function K(k, Y, U, j, H) { + var I; + return k.rootDir ? (I = e.getNormalizedAbsolutePath(k.rootDir, U), H == null || H(k.rootDir)) : k.composite && k.configFilePath ? (I = e.getDirectoryPath(e.normalizeSlashes(k.configFilePath)), H == null || H(I)) : I = e.computeCommonSourceDirectoryOfFilenames(Y(), U, j), I && I[I.length - 1] !== e.directorySeparator && (I += e.directorySeparator), I; + } + e.getCommonSourceDirectory = K; + function b(k, Y) { + var U = k.options, j = k.fileNames; + return K(U, function() { + return e.filter(j, function(H) { + return !(U.noEmitForJsFiles && e.fileExtensionIsOneOf(H, e.supportedJSExtensionsFlat)) && !e.isDeclarationFileName(H); + }); + }, e.getDirectoryPath(e.normalizeSlashes(e.Debug.checkDefined(U.configFilePath))), e.createGetCanonicalFileName(!Y)); + } + e.getCommonSourceDirectoryOfConfig = b; + function se(k, Y) { + var U = oe(), j = U.addOutput, H = U.getOutputs; + if (e.outFile(k.options)) + f(k, j); + else { + for (var I = e.memoize(function() { + return b(k, Y); + }), l = 0, d = k.fileNames; l < d.length; l++) { + var D = d[l]; + T(k, D, Y, j, I); + } + j(B(k.options)); + } + return H(); + } + e.getAllProjectOutputs = se; + function J(k, Y, U) { + Y = e.normalizePath(Y), e.Debug.assert(e.contains(k.fileNames, Y), "Expected fileName to be present in command line"); + var j = oe(), H = j.addOutput, I = j.getOutputs; + return e.outFile(k.options) ? f(k, H) : T(k, Y, U, H), I(); + } + e.getOutputFileNames = J; + function ie(k, Y) { + if (e.outFile(k.options)) { + var U = E(k.options, false).jsFilePath; + return e.Debug.checkDefined(U, "project ".concat(k.options.configFilePath, " expected to have at least one output")); + } + for (var j = e.memoize(function() { + return b(k, Y); + }), H = 0, I = k.fileNames; H < I.length; H++) { + var l = I[H]; + if (!e.isDeclarationFileName(l)) { + var U = G(l, k, Y, j); + if (U) + return U; + if (!e.fileExtensionIs(l, ".json") && e.getEmitDeclarations(k.options)) + return m(l, k, Y, j); + } + } + var d = B(k.options); + return d || e.Debug.fail("project ".concat(k.options.configFilePath, " expected to have at least one output")); + } + e.getFirstProjectOutput = ie; + function R(k, Y, U, j, H, I, l) { + var d = j.scriptTransformers, D = j.declarationTransformers, fe = Y.getCompilerOptions(), g = fe.sourceMap || fe.inlineSourceMap || e.getAreDeclarationMapsEnabled(fe) ? [] : void 0, ne = fe.listEmittedFiles ? [] : void 0, ue = e.createDiagnosticCollection(), We = e.getNewLineCharacter(fe, function() { + return Y.getNewLine(); + }), Fe = e.createTextWriter(We), Z = e.performance.createTimer("printTime", "beforePrint", "afterPrint"), Be = Z.enter, ge = Z.exit, Re, ze = false, Ee; + return Be(), w(Y, He, e.getSourceFilesToEmit(Y, U, l), l, I, !U), ge(), { emitSkipped: ze, diagnostics: ue.getDiagnostics(), emittedFiles: ne, sourceMaps: g, exportedModulesFromDeclarationEmit: Ee }; + function He(Cr, Ye) { + var Br = Cr.jsFilePath, Er = Cr.sourceMapFilePath, Ne = Cr.declarationFilePath, n = Cr.declarationMapPath, lr = Cr.buildInfoPath, be; + lr && Ye && e.isBundle(Ye) && (be = e.getDirectoryPath(e.getNormalizedAbsolutePath(lr, Y.getCurrentDirectory())), Re = { commonSourceDirectory: Ge(Y.getCommonSourceDirectory()), sourceFiles: Ye.sourceFiles.map(function(ur) { + return Ge(e.getNormalizedAbsolutePath(ur.fileName, Y.getCurrentDirectory())); + }) }), e.tracing === null || e.tracing === void 0 || e.tracing.push("emit", "emitJsFileOrBundle", { jsFilePath: Br }), Ie(Ye, Br, Er, Ge), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), e.tracing === null || e.tracing === void 0 || e.tracing.push("emit", "emitDeclarationFileOrBundle", { declarationFilePath: Ne }), _e(Ye, Ne, n, Ge), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), e.tracing === null || e.tracing === void 0 || e.tracing.push("emit", "emitBuildInfo", { buildInfoPath: lr }), rr(Re, lr), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), !ze && ne && (H || (Br && ne.push(Br), Er && ne.push(Er), lr && ne.push(lr)), Ne && ne.push(Ne), n && ne.push(n)); + function Ge(ur) { + return e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(be, ur, Y.getCanonicalFileName)); + } + } + function rr(Cr, Ye) { + if (!(!Ye || U || ze)) { + var Br = Y.getProgramBuildInfo(); + if (Y.isEmitBlocked(Ye)) { + ze = true; + return; + } + var Er = e.version; + e.writeFile(Y, ue, Ye, q({ bundle: Cr, program: Br, version: Er }), false); + } + } + function Ie(Cr, Ye, Br, Er) { + if (!(!Cr || H || !Ye)) { + if (Ye && Y.isEmitBlocked(Ye) || fe.noEmit) { + ze = true; + return; + } + var Ne = e.transformNodes(k, Y, e.factory, fe, [Cr], d, false), n = { removeComments: fe.removeComments, newLine: fe.newLine, noEmitHelpers: fe.noEmitHelpers, module: fe.module, target: fe.target, sourceMap: fe.sourceMap, inlineSourceMap: fe.inlineSourceMap, inlineSources: fe.inlineSources, extendedDiagnostics: fe.extendedDiagnostics, writeBundleFileInfo: !!Re, relativeToBuildInfo: Er }, lr = F(n, { hasGlobalName: k.hasGlobalName, onEmitNode: Ne.emitNodeWithNotification, isEmitNotificationEnabled: Ne.isEmitNotificationEnabled, substituteNode: Ne.substituteNode }); + e.Debug.assert(Ne.transformed.length === 1, "Should only see one output from the transform"), de(Ye, Br, Ne.transformed[0], lr, fe), Ne.dispose(), Re && (Re.js = lr.bundleFileInfo); + } + } + function _e(Cr, Ye, Br, Er) { + if (!!Cr) { + if (!Ye) { + (H || fe.emitDeclarationOnly) && (ze = true); + return; + } + var Ne = e.isSourceFile(Cr) ? [Cr] : Cr.sourceFiles, n = l ? Ne : e.filter(Ne, e.isSourceFileNotJson), lr = e.outFile(fe) ? [e.factory.createBundle(n, e.isSourceFile(Cr) ? void 0 : Cr.prepends)] : n; + H && !e.getEmitDeclarations(fe) && n.forEach(we); + var be = e.transformNodes(k, Y, e.factory, fe, lr, D, false); + if (e.length(be.diagnostics)) + for (var Ge = 0, ur = be.diagnostics; Ge < ur.length; Ge++) { + var yr = ur[Ge]; + ue.add(yr); + } + var Ir = { removeComments: fe.removeComments, newLine: fe.newLine, noEmitHelpers: true, module: fe.module, target: fe.target, sourceMap: fe.sourceMap, inlineSourceMap: fe.inlineSourceMap, extendedDiagnostics: fe.extendedDiagnostics, onlyPrintJsDocStyle: true, writeBundleFileInfo: !!Re, recordInternalSection: !!Re, relativeToBuildInfo: Er }, wr = F(Ir, { hasGlobalName: k.hasGlobalName, onEmitNode: be.emitNodeWithNotification, isEmitNotificationEnabled: be.isEmitNotificationEnabled, substituteNode: be.substituteNode }), Ur = !!be.diagnostics && !!be.diagnostics.length || !!Y.isEmitBlocked(Ye) || !!fe.noEmit; + if (ze = ze || Ur, (!Ur || l) && (e.Debug.assert(be.transformed.length === 1, "Should only see one output from the decl transform"), de(Ye, Br, be.transformed[0], wr, { sourceMap: !l && fe.declarationMap, sourceRoot: fe.sourceRoot, mapRoot: fe.mapRoot, extendedDiagnostics: fe.extendedDiagnostics }), l && be.transformed[0].kind === 305)) { + var ii = be.transformed[0]; + Ee = ii.exportedModulesFromDeclarationEmit; + } + be.dispose(), Re && (Re.dts = wr.bundleFileInfo); + } + } + function we(Cr) { + if (e.isExportAssignment(Cr)) { + Cr.expression.kind === 79 && k.collectLinkedAliases(Cr.expression, true); + return; + } else if (e.isExportSpecifier(Cr)) { + k.collectLinkedAliases(Cr.propertyName || Cr.name, true); + return; + } + e.forEachChild(Cr, we); + } + function de(Cr, Ye, Br, Er, Ne) { + var n = Br.kind === 306 ? Br : void 0, lr = Br.kind === 305 ? Br : void 0, be = n ? n.sourceFiles : [lr], Ge; + ye(Ne, Br) && (Ge = e.createSourceMapGenerator(Y, e.getBaseFileName(e.normalizeSlashes(Cr)), Ae(Ne), er(Ne, Cr, lr), Ne)), n ? Er.writeBundle(n, Fe, Ge) : Er.writeFile(lr, Fe, Ge); + var ur; + if (Ge) { + g && g.push({ inputSourceFileNames: Ge.getSources(), sourceMap: Ge.toJSON() }); + var yr = ir(Ne, Ge, Cr, Ye, lr); + if (yr && (Fe.isAtStartOfLine() || Fe.rawWrite(We), ur = Fe.getTextPos(), Fe.writeComment("//# ".concat("sourceMappingURL", "=").concat(yr))), Ye) { + var Ir = Ge.toString(); + e.writeFile(Y, ue, Ye, Ir, false, be); + } + } else + Fe.writeLine(); + e.writeFile(Y, ue, Cr, Fe.getText(), !!fe.emitBOM, be, { sourceMapUrlPos: ur }), Fe.clear(); + } + function ye(Cr, Ye) { + return (Cr.sourceMap || Cr.inlineSourceMap) && (Ye.kind !== 305 || !e.fileExtensionIs(Ye.fileName, ".json")); + } + function Ae(Cr) { + var Ye = e.normalizeSlashes(Cr.sourceRoot || ""); + return Ye && e.ensureTrailingDirectorySeparator(Ye); + } + function er(Cr, Ye, Br) { + if (Cr.sourceRoot) + return Y.getCommonSourceDirectory(); + if (Cr.mapRoot) { + var Er = e.normalizeSlashes(Cr.mapRoot); + return Br && (Er = e.getDirectoryPath(e.getSourceFilePathInNewDir(Br.fileName, Y, Er))), e.getRootLength(Er) === 0 && (Er = e.combinePaths(Y.getCommonSourceDirectory(), Er)), Er; + } + return e.getDirectoryPath(e.normalizePath(Ye)); + } + function ir(Cr, Ye, Br, Er, Ne) { + if (Cr.inlineSourceMap) { + var n = Ye.toString(), lr = e.base64encode(e.sys, n); + return "data:application/json;base64,".concat(lr); + } + var be = e.getBaseFileName(e.normalizeSlashes(e.Debug.checkDefined(Er))); + if (Cr.mapRoot) { + var Ge = e.normalizeSlashes(Cr.mapRoot); + return Ne && (Ge = e.getDirectoryPath(e.getSourceFilePathInNewDir(Ne.fileName, Y, Ge))), e.getRootLength(Ge) === 0 ? (Ge = e.combinePaths(Y.getCommonSourceDirectory(), Ge), encodeURI(e.getRelativePathToDirectoryOrUrl(e.getDirectoryPath(e.normalizePath(Br)), e.combinePaths(Ge, be), Y.getCurrentDirectory(), Y.getCanonicalFileName, true))) : encodeURI(e.combinePaths(Ge, be)); + } + return encodeURI(be); + } + } + e.emitFiles = R; + function q(k) { + return JSON.stringify(k); + } + e.getBuildInfoText = q; + function O(k) { + return JSON.parse(k); + } + e.getBuildInfo = O, e.notImplementedResolver = { hasGlobalName: e.notImplemented, getReferencedExportContainer: e.notImplemented, getReferencedImportDeclaration: e.notImplemented, getReferencedDeclarationWithCollidingName: e.notImplemented, isDeclarationWithCollidingName: e.notImplemented, isValueAliasDeclaration: e.notImplemented, isReferencedAliasDeclaration: e.notImplemented, isTopLevelValueImportEqualsWithEntityName: e.notImplemented, getNodeCheckFlags: e.notImplemented, isDeclarationVisible: e.notImplemented, isLateBound: function(k) { + return false; + }, collectLinkedAliases: e.notImplemented, isImplementationOfOverload: e.notImplemented, isRequiredInitializedParameter: e.notImplemented, isOptionalUninitializedParameterProperty: e.notImplemented, isExpandoFunctionDeclaration: e.notImplemented, getPropertiesOfContainerFunction: e.notImplemented, createTypeOfDeclaration: e.notImplemented, createReturnTypeOfSignatureDeclaration: e.notImplemented, createTypeOfExpression: e.notImplemented, createLiteralConstValue: e.notImplemented, isSymbolAccessible: e.notImplemented, isEntityNameVisible: e.notImplemented, getConstantValue: e.notImplemented, getReferencedValueDeclaration: e.notImplemented, getTypeReferenceSerializationKind: e.notImplemented, isOptionalParameter: e.notImplemented, moduleExportsSomeValue: e.notImplemented, isArgumentsLocalBinding: e.notImplemented, getExternalModuleFileFromDeclaration: e.notImplemented, getTypeReferenceDirectivesForEntityName: e.notImplemented, getTypeReferenceDirectivesForSymbol: e.notImplemented, isLiteralConstDeclaration: e.notImplemented, getJsxFactoryEntity: e.notImplemented, getJsxFragmentFactoryEntity: e.notImplemented, getAllAccessorDeclarations: e.notImplemented, getSymbolOfExternalModuleSpecifier: e.notImplemented, isBindingCapturedByNode: e.notImplemented, getDeclarationStatementsForSourceFile: e.notImplemented, isImportRequiredByAugmentation: e.notImplemented }; + function ve(k, Y, U) { + var j, H = e.Debug.checkDefined(k.js), I = ((j = H.sources) === null || j === void 0 ? void 0 : j.prologues) && e.arrayToMap(H.sources.prologues, function(l) { + return l.file; + }); + return k.sourceFiles.map(function(l, d) { + var D, fe, g = I == null ? void 0 : I.get(d), ne = g == null ? void 0 : g.directives.map(function(Fe) { + var Z = e.setTextRange(e.factory.createStringLiteral(Fe.expression.text), Fe.expression), Be = e.setTextRange(e.factory.createExpressionStatement(Z), Fe); + return e.setParent(Z, Be), Be; + }), ue = e.factory.createToken(1), We = e.factory.createSourceFile(ne != null ? ne : [], ue, 0); + return We.fileName = e.getRelativePathFromDirectory(U.getCurrentDirectory(), e.getNormalizedAbsolutePath(l, Y), !U.useCaseSensitiveFileNames()), We.text = (D = g == null ? void 0 : g.text) !== null && D !== void 0 ? D : "", e.setTextRangePosWidth(We, 0, (fe = g == null ? void 0 : g.text.length) !== null && fe !== void 0 ? fe : 0), e.setEachParent(We.statements, We), e.setTextRangePosWidth(ue, We.end, 0), e.setParent(ue, We), We; + }); + } + function ee(k, Y, U, j) { + var H = E(k.options, false), I = H.buildInfoPath, l = H.jsFilePath, d = H.sourceMapFilePath, D = H.declarationFilePath, fe = H.declarationMapPath, g = Y.readFile(e.Debug.checkDefined(I)); + if (!g) + return I; + var ne = Y.readFile(e.Debug.checkDefined(l)); + if (!ne) + return l; + var ue = d && Y.readFile(d); + if (d && !ue || k.options.inlineSourceMap) + return d || "inline sourcemap decoding"; + var We = D && Y.readFile(D); + if (D && !We) + return D; + var Fe = fe && Y.readFile(fe); + if (fe && !Fe || k.options.inlineSourceMap) + return fe || "inline sourcemap decoding"; + var Z = O(g); + if (!Z.bundle || !Z.bundle.js || We && !Z.bundle.dts) + return I; + var Be = e.getDirectoryPath(e.getNormalizedAbsolutePath(I, Y.getCurrentDirectory())), ge = e.createInputFiles(ne, We, d, ue, fe, Fe, l, D, I, Z, true), Re = [], ze = e.createPrependNodes(k.projectReferences, U, function(rr) { + return Y.readFile(rr); + }), Ee = ve(Z.bundle, Be, Y), He = { getPrependNodes: e.memoize(function() { + return Ve(Ve([], ze, true), [ge], false); + }), getCanonicalFileName: Y.getCanonicalFileName, getCommonSourceDirectory: function() { + return e.getNormalizedAbsolutePath(Z.bundle.commonSourceDirectory, Be); + }, getCompilerOptions: function() { + return k.options; + }, getCurrentDirectory: function() { + return Y.getCurrentDirectory(); + }, getNewLine: function() { + return Y.getNewLine(); + }, getSourceFile: e.returnUndefined, getSourceFileByPath: e.returnUndefined, getSourceFiles: function() { + return Ee; + }, getLibFileFromReference: e.notImplemented, isSourceFileFromExternalLibrary: e.returnFalse, getResolvedProjectReferenceToRedirect: e.returnUndefined, getProjectReferenceRedirect: e.returnUndefined, isSourceOfProjectReferenceRedirect: e.returnFalse, writeFile: function(rr, Ie, _e) { + switch (rr) { + case l: + if (ne === Ie) + return; + break; + case d: + if (ue === Ie) + return; + break; + case I: + var we = O(Ie); + we.program = Z.program; + var de = Z.bundle, ye = de.js, Ae = de.dts, er = de.sourceFiles; + we.bundle.js.sources = ye.sources, Ae && (we.bundle.dts.sources = Ae.sources), we.bundle.sourceFiles = er, Re.push({ name: rr, text: q(we), writeByteOrderMark: _e }); + return; + case D: + if (We === Ie) + return; + break; + case fe: + if (Fe === Ie) + return; + break; + default: + e.Debug.fail("Unexpected path: ".concat(rr)); + } + Re.push({ name: rr, text: Ie, writeByteOrderMark: _e }); + }, isEmitBlocked: e.returnFalse, readFile: function(rr) { + return Y.readFile(rr); + }, fileExists: function(rr) { + return Y.fileExists(rr); + }, useCaseSensitiveFileNames: function() { + return Y.useCaseSensitiveFileNames(); + }, getProgramBuildInfo: e.returnUndefined, getSourceFileFromReference: e.returnUndefined, redirectTargetsMap: e.createMultiMap(), getFileIncludeReasons: e.notImplemented }; + return R(e.notImplementedResolver, He, void 0, e.getTransformers(k.options, j)), Re; + } + e.emitUsingBuildInfo = ee; + var he; + (function(k) { + k[k.Notification = 0] = "Notification", k[k.Substitution = 1] = "Substitution", k[k.Comments = 2] = "Comments", k[k.SourceMaps = 3] = "SourceMaps", k[k.Emit = 4] = "Emit"; + })(he || (he = {})); + function F(k, Y) { + k === void 0 && (k = {}), Y === void 0 && (Y = {}); + var U = Y.hasGlobalName, j = Y.onEmitNode, H = j === void 0 ? e.noEmitNotification : j, I = Y.isEmitNotificationEnabled, l = Y.substituteNode, d = l === void 0 ? e.noEmitSubstitution : l, D = Y.onBeforeEmitNode, fe = Y.onAfterEmitNode, g = Y.onBeforeEmitNodeArray, ne = Y.onAfterEmitNodeArray, ue = Y.onBeforeEmitToken, We = Y.onAfterEmitToken, Fe = !!k.extendedDiagnostics, Z = e.getNewLineCharacter(k), Be = e.getEmitModuleKind(k), ge = new e.Map(), Re, ze, Ee, He, rr, Ie, _e, we, de = k.preserveSourceNewlines, ye, Ae, er, ir = B_, Cr, Ye = k.writeBundleFileInfo ? { sections: [] } : void 0, Br = Ye ? e.Debug.checkDefined(k.relativeToBuildInfo) : void 0, Er = k.recordInternalSection, Ne = 0, n = "text", lr = true, be, Ge, ur = -1, yr, Ir = -1, wr = -1, Ur = -1, ii = -1, mi, pe, or = false, qr = !!k.removeComments, si, Di, wi = e.performance.createTimerIf(Fe, "commentTime", "beforeComment", "afterComment"), Xi = wi.enter, et = wi.exit, Gi = e.factory.parenthesizer, Wt = { select: function(v) { + return v === 0 ? Gi.parenthesizeLeadingTypeArgument : void 0; + } }, Zt = pt(); + return fr(), { printNode: _r, printList: pi, printFile: Xe, printBundle: ae, writeNode: ti, writeList: Ze, writeFile: Ar, writeBundle: vr, bundleFileInfo: Ye }; + function _r(v, sr, fi) { + switch (v) { + case 0: + e.Debug.assert(e.isSourceFile(sr), "Expected a SourceFile node."); + break; + case 2: + e.Debug.assert(e.isIdentifier(sr), "Expected an Identifier node."); + break; + case 1: + e.Debug.assert(e.isExpression(sr), "Expected an Expression node."); + break; + } + switch (sr.kind) { + case 305: + return Xe(sr); + case 306: + return ae(sr); + case 307: + return Jr(sr); + } + return ti(v, sr, fi, Oe()), nr(); + } + function pi(v, sr, fi) { + return Ze(v, sr, fi, Oe()), nr(); + } + function ae(v) { + return vr(v, Oe(), void 0), nr(); + } + function Xe(v) { + return Ar(v, Oe(), void 0), nr(); + } + function Jr(v) { + return mr(v, Oe()), nr(); + } + function ti(v, sr, fi, zi) { + var Sa = Ae; + Ue(zi, void 0), Mr(v, sr, fi), fr(), Ae = Sa; + } + function Ze(v, sr, fi, zi) { + var Sa = Ae; + Ue(zi, void 0), fi && Pe(fi), Zn(void 0, sr, v), fr(), Ae = Sa; + } + function Sr() { + return Ae.getTextPosWithWriteLine ? Ae.getTextPosWithWriteLine() : Ae.getTextPos(); + } + function zr(v, sr, fi) { + var zi = e.lastOrUndefined(Ye.sections); + zi && zi.kind === fi ? zi.end = sr : Ye.sections.push({ pos: v, end: sr, kind: fi }); + } + function Wr(v) { + if (Er && Ye && Re && (e.isDeclaration(v) || e.isVariableStatement(v)) && e.isInternalDeclaration(v, Re) && n !== "internal") { + var sr = n; + return xe(Ae.getTextPos()), Ne = Sr(), n = "internal", sr; + } + } + function Je(v) { + v && (xe(Ae.getTextPos()), Ne = Sr(), n = v); + } + function xe(v) { + return Ne < v ? (zr(Ne, v, n), true) : false; + } + function vr(v, sr, fi) { + var zi; + Cr = false; + var Sa = Ae; + Ue(sr, fi), f_(v), L_(v), Fi(v), Cp(v); + for (var da = 0, Ha = v.prepends; da < Ha.length; da++) { + var ta = Ha[da]; + bs(); + var nn = Ae.getTextPos(), Wo = Ye && Ye.sections; + if (Wo && (Ye.sections = []), Mr(4, ta, void 0), Ye) { + var Lo = Ye.sections; + Ye.sections = Wo, ta.oldFileOfCurrentEmit ? (zi = Ye.sections).push.apply(zi, Lo) : (Lo.forEach(function(lu) { + return e.Debug.assert(e.isBundleFileTextLike(lu)); + }), Ye.sections.push({ pos: nn, end: Ae.getTextPos(), kind: "prepend", data: Br(ta.fileName), texts: Lo })); + } + } + Ne = Sr(); + for (var oc = 0, uu = v.sourceFiles; oc < uu.length; oc++) { + var is = uu[oc]; + Mr(0, is, is); + } + if (Ye && v.sourceFiles.length) { + var au = Ae.getTextPos(); + if (xe(au)) { + var Ou = l_(v); + Ou && (Ye.sources || (Ye.sources = {}), Ye.sources.prologues = Ou); + var sf = Ki(v); + sf && (Ye.sources || (Ye.sources = {}), Ye.sources.helpers = sf); + } + } + fr(), Ae = Sa; + } + function mr(v, sr) { + var fi = Ae; + Ue(sr, void 0), Mr(4, v, void 0), fr(), Ae = fi; + } + function Ar(v, sr, fi) { + Cr = true; + var zi = Ae; + Ue(sr, fi), f_(v), L_(v), Mr(0, v, v), fr(), Ae = zi; + } + function Oe() { + return er || (er = e.createTextWriter(Z)); + } + function nr() { + var v = er.getText(); + return er.clear(), v; + } + function Mr(v, sr, fi) { + fi && Pe(fi), Wi(v, sr, void 0); + } + function Pe(v) { + Re = v, mi = void 0, pe = void 0, v && wu(v); + } + function Ue(v, sr) { + v && k.omitTrailingSemicolon && (v = e.getTrailingSemicolonDeferringWriter(v)), Ae = v, be = sr, lr = !Ae || !be; + } + function fr() { + ze = [], Ee = [], He = new e.Set(), rr = [], Ie = 0, _e = [], Re = void 0, mi = void 0, pe = void 0, Ue(void 0, void 0); + } + function De() { + return mi || (mi = e.getLineStarts(e.Debug.checkDefined(Re))); + } + function gr(v, sr) { + if (v !== void 0) { + var fi = Wr(v); + Wi(4, v, sr), Je(fi); + } + } + function Vr(v) { + v !== void 0 && Wi(2, v, void 0); + } + function Tr(v, sr) { + v !== void 0 && Wi(1, v, sr); + } + function vi(v) { + Wi(e.isStringLiteral(v) ? 6 : 4, v); + } + function Ui(v) { + de && e.getEmitFlags(v) & 134217728 && (de = false); + } + function Yi(v) { + de = v; + } + function Wi(v, sr, fi) { + Di = fi; + var zi = nt(0, v, sr); + zi(v, sr), Di = void 0; + } + function ct(v) { + return !qr && !e.isSourceFile(v); + } + function Li(v) { + return !lr && !e.isSourceFile(v) && !e.isInJsonFile(v) && !e.isUnparsedSource(v) && !e.isUnparsedPrepend(v); + } + function nt(v, sr, fi) { + switch (v) { + case 0: + if (H !== e.noEmitNotification && (!I || I(fi))) + return xt; + case 1: + if (d !== e.noEmitSubstitution && (si = d(sr, fi) || fi) !== fi) + return Di && (si = Di(si)), Ii; + case 2: + if (ct(fi)) + return xf; + case 3: + if (Li(fi)) + return hd; + case 4: + return ut; + default: + return e.Debug.assertNever(v); + } + } + function Mt(v, sr, fi) { + return nt(v + 1, sr, fi); + } + function xt(v, sr) { + var fi = Mt(0, v, sr); + H(v, sr, fi); + } + function ut(v, sr) { + if (D == null || D(sr), de) { + var fi = de; + Ui(sr), Dt(v, sr), Yi(fi); + } else + Dt(v, sr); + fe == null || fe(sr), Di = void 0; + } + function Dt(v, sr, fi) { + if (fi === void 0 && (fi = true), fi) { + var zi = e.getSnippetElement(sr); + if (zi) + return Vi(v, sr, zi); + } + if (v === 0) + return yf(e.cast(sr, e.isSourceFile)); + if (v === 2) + return ba(e.cast(sr, e.isIdentifier)); + if (v === 6) + return wt(e.cast(sr, e.isStringLiteral), true); + if (v === 3) + return Rt(e.cast(sr, e.isTypeParameterDeclaration)); + if (v === 5) + return e.Debug.assertNode(sr, e.isEmptyStatement), su(true); + if (v === 4) { + switch (sr.kind) { + case 15: + case 16: + case 17: + return wt(sr, false); + case 79: + return ba(sr); + case 80: + return $a(sr); + case 161: + return Qa(sr); + case 162: + return Dn(sr); + case 163: + return ka(sr); + case 164: + return Ba(sr); + case 165: + return pn(sr); + case 166: + return Cn(sr); + case 167: + return Bi(sr); + case 168: + return kn(sr); + case 169: + return xn(sr); + case 170: + return Kn(sr); + case 171: + return Pn(sr); + case 172: + case 173: + return eo(sr); + case 174: + return Rn(sr); + case 175: + return Da(sr); + case 176: + return bo(sr); + case 177: + return Wn(sr); + case 178: + return to(sr); + case 179: + return Co(sr); + case 180: + return Pr(sr); + case 181: + return xi(sr); + case 182: + return St(sr); + case 183: + return pa(sr); + case 184: + return Jn(sr); + case 185: + return Gr(sr); + case 187: + return S(sr); + case 188: + return Ce(sr); + case 189: + return qe(sr); + case 190: + return br(sr); + case 191: + return Zr(sr); + case 228: + return fo(sr); + case 192: + return Si(); + case 193: + return Pi(sr); + case 194: + return Qi(sr); + case 195: + return Ct(sr); + case 196: + return sa(sr); + case 197: + return Qe(sr); + case 198: + return en(sr); + case 199: + return Ro(sr); + case 200: + return Wa(sr); + case 201: + return qn(sr); + case 202: + return mo(sr); + case 203: + return So(sr); + case 233: + return Ao(sr); + case 234: + return En(); + case 235: + return Ms(sr); + case 237: + return xc(sr); + case 236: + return su(false); + case 238: + return tl(sr); + case 239: + return Zc(sr); + case 240: + return al(sr); + case 241: + return Jo(sr); + case 242: + return eu(sr); + case 243: + return Ws(sr); + case 244: + return pu(sr); + case 245: + return Ql(sr); + case 246: + return xl(sr); + case 247: + return Ei(sr); + case 248: + return tt(sr); + case 249: + return kt(sr); + case 250: + return bt(sr); + case 251: + return ia(sr); + case 252: + return Xt(sr); + case 253: + return Za(sr); + case 254: + return bn(sr); + case 255: + return _a(sr); + case 256: + return qa(sr); + case 257: + return Or(sr); + case 258: + return dt(sr); + case 259: + return la(sr); + case 260: + return wa(sr); + case 261: + return On(sr); + case 262: + return No(sr); + case 263: + return jo(sr); + case 264: + return vf(sr); + case 265: + return po(sr); + case 266: + return $n(sr); + case 267: + return Ho(sr); + case 268: + return Zo(sr); + case 274: + return P_(sr); + case 269: + return Es(sr); + case 270: + return yc(sr); + case 271: + return Xr(sr); + case 272: + return Ls(sr); + case 273: + return El(sr); + case 275: + return vp(sr); + case 293: + return Ic(sr); + case 294: + return zu(sr); + case 276: + return; + case 277: + return yp(sr); + case 11: + return hp(sr); + case 280: + case 283: + return c_(sr); + case 281: + case 284: + return gu(sr); + case 285: + return sd(sr); + case 286: + return Dp(sr); + case 287: + return Aa(sr); + case 288: + return cd(sr); + case 289: + return nl(sr); + case 290: + return hc(sr); + case 291: + return u_(sr); + case 292: + return Jf(sr); + case 296: + return w_(sr); + case 297: + return ud(sr); + case 298: + return ku(sr); + case 299: + return ld(sr); + case 300: + return Ai(sr); + case 307: + case 301: + return na(sr); + case 302: + case 303: + return Oi(sr); + case 304: + return ji(sr); + case 305: + return yf(sr); + case 306: + return e.Debug.fail("Bundles should be printed using printBundle"); + case 308: + return e.Debug.fail("InputFiles should not be printed"); + case 309: + return ru(sr); + case 310: + return Tp(sr); + case 312: + return Gt("*"); + case 313: + return Gt("?"); + case 314: + return Oo(sr); + case 315: + return no(sr); + case 316: + return $o(sr); + case 317: + return Ko(sr); + case 186: + case 318: + return dn(sr); + case 319: + return; + case 320: + return fd(sr); + case 322: + return xp(sr); + case 323: + return M_(sr); + case 327: + case 332: + case 337: + return pd(sr); + case 328: + case 329: + return _d(sr); + case 330: + case 331: + return; + case 333: + case 334: + case 335: + case 336: + return; + case 338: + return F_(sr); + case 340: + case 347: + return Ep(sr); + case 339: + case 341: + case 342: + case 343: + return bp(sr); + case 344: + return jf(sr); + case 345: + return O_(sr); + case 346: + return Sp(sr); + case 349: + case 353: + case 352: + return; + } + if (e.isExpression(sr) && (v = 1, d !== e.noEmitSubstitution)) { + var Sa = d(v, sr) || sr; + Sa !== sr && (sr = Sa, Di && (sr = Di(sr))); + } + } + if (v === 1) + switch (sr.kind) { + case 8: + case 9: + return Bt(sr); + case 10: + case 13: + case 14: + return wt(sr, false); + case 79: + return ba(sr); + case 80: + return $a(sr); + case 204: + return Go(sr); + case 205: + return ys(sr); + case 206: + return Pc(sr); + case 207: + return Kc(sr); + case 208: + return Xs(sr); + case 209: + return pc(sr); + case 210: + return hs(sr); + case 211: + return tc(sr); + case 212: + return ps(sr); + case 213: + return Qs(sr); + case 214: + return js(sr); + case 215: + return Ji(sr); + case 216: + return ce(sr); + case 217: + return Rr(sr); + case 218: + return yi(sr); + case 219: + return qi(sr); + case 220: + return Hr(sr); + case 221: + return Zt(sr); + case 222: + return Pt(sr); + case 223: + return ga(sr); + case 224: + return ua(sr); + case 225: + return Xn(sr); + case 226: + return jr(sr); + case 227: + return; + case 229: + return xs(sr); + case 230: + return Fo(sr); + case 228: + return fo(sr); + case 231: + return ko(sr); + case 232: + return e.Debug.fail("SyntheticExpression should never be printed."); + case 278: + return Yl(sr); + case 279: + return Bf(sr); + case 282: + return Cl(sr); + case 348: + return e.Debug.fail("SyntaxList should not be printed"); + case 349: + return; + case 350: + return gd(sr); + case 351: + return hf(sr); + case 352: + case 353: + return; + case 354: + return e.Debug.fail("SyntheticReferenceExpression should not be printed"); + } + if (e.isKeyword(sr.kind)) + return Pl(sr, vn); + if (e.isTokenKind(sr.kind)) + return Pl(sr, Gt); + e.Debug.fail("Unhandled SyntaxKind: ".concat(e.Debug.formatSyntaxKind(sr.kind), ".")); + } + function Rt(v) { + gr(v.name), Ut(), vn("in"), Ut(), gr(v.constraint); + } + function Ii(v, sr) { + var fi = Mt(1, v, sr); + e.Debug.assertIsDefined(si), sr = si, si = void 0, fi(v, sr); + } + function Ki(v) { + var sr; + if (!(Be === e.ModuleKind.None || k.noEmitHelpers)) { + for (var fi = new e.Map(), zi = 0, Sa = v.sourceFiles; zi < Sa.length; zi++) { + var da = Sa[zi], Ha = e.getExternalHelpersModuleName(da) !== void 0, ta = ui(da); + if (!!ta) + for (var nn = 0, Wo = ta; nn < Wo.length; nn++) { + var Lo = Wo[nn]; + !Lo.scoped && !Ha && !fi.get(Lo.name) && (fi.set(Lo.name, true), (sr || (sr = [])).push(Lo.name)); + } + } + return sr; + } + } + function Fi(v) { + var sr = false, fi = v.kind === 306 ? v : void 0; + if (!(fi && Be === e.ModuleKind.None)) { + for (var zi = fi ? fi.prepends.length : 0, Sa = fi ? fi.sourceFiles.length + zi : 1, da = 0; da < Sa; da++) { + var Ha = fi ? da < zi ? fi.prepends[da] : fi.sourceFiles[da - zi] : v, ta = e.isSourceFile(Ha) ? Ha : e.isUnparsedSource(Ha) ? void 0 : Re, nn = k.noEmitHelpers || !!ta && e.hasRecordedExternalHelpers(ta), Wo = (e.isSourceFile(Ha) || e.isUnparsedSource(Ha)) && !Cr, Lo = e.isUnparsedSource(Ha) ? Ha.helpers : ui(Ha); + if (Lo) + for (var oc = 0, uu = Lo; oc < uu.length; oc++) { + var is = uu[oc]; + if (is.scoped) { + if (fi) + continue; + } else { + if (nn) + continue; + if (Wo) { + if (ge.get(is.name)) + continue; + ge.set(is.name, true); + } + } + var au = Sr(); + typeof is.text == "string" ? ul(is.text) : ul(is.text(Tf)), Ye && Ye.sections.push({ pos: au, end: Ae.getTextPos(), kind: "emitHelpers", data: is.name }), sr = true; + } + } + return sr; + } + } + function ui(v) { + var sr = e.getEmitHelpers(v); + return sr && e.stableSort(sr, e.compareEmitHelpers); + } + function Bt(v) { + wt(v, false); + } + function wt(v, sr) { + var fi = Pu(v, k.neverAsciiEscape, sr); + (k.sourceMap || k.inlineSourceMap) && (v.kind === 10 || e.isTemplateLiteralKind(v.kind)) ? d_(fi) : Gc(fi); + } + function na(v) { + for (var sr = 0, fi = v.texts; sr < fi.length; sr++) { + var zi = fi[sr]; + bs(), gr(zi); + } + } + function Ai(v) { + Ae.rawWrite(v.parent.text.substring(v.pos, v.end)); + } + function Oi(v) { + var sr = Sr(); + Ai(v), Ye && zr(sr, Ae.getTextPos(), v.kind === 302 ? "text" : "internal"); + } + function ji(v) { + var sr = Sr(); + if (Ai(v), Ye) { + var fi = e.clone(v.section); + fi.pos = sr, fi.end = Ae.getTextPos(), Ye.sections.push(fi); + } + } + function Vi(v, sr, fi) { + switch (fi.kind) { + case 1: + at(v, sr, fi); + break; + case 0: + At(v, sr, fi); + break; + } + } + function at(v, sr, fi) { + bf("${".concat(fi.order, ":")), Dt(v, sr, false), bf("}"); + } + function At(v, sr, fi) { + e.Debug.assert(sr.kind === 236, "A tab stop cannot be attached to a node of kind ".concat(e.Debug.formatSyntaxKind(sr.kind), ".")), e.Debug.assert(v !== 5, "A tab stop cannot be attached to an embedded statement."), bf("$".concat(fi.order)); + } + function ba(v) { + var sr = v.symbol ? vu : ir; + sr(dc(v, false), v.symbol), Zn(v, v.typeArguments, 53776); + } + function $a(v) { + var sr = v.symbol ? vu : ir; + sr(dc(v, false), v.symbol); + } + function Qa(v) { + ai(v.left), Gt("."), gr(v.right); + } + function ai(v) { + v.kind === 79 ? Tr(v) : gr(v); + } + function Dn(v) { + Gt("["), Tr(v.expression, Gi.parenthesizeExpressionOfComputedPropertyName), Gt("]"); + } + function ka(v) { + ks(v, v.modifiers), gr(v.name), v.constraint && (Ut(), vn("extends"), Ut(), gr(v.constraint)), v.default && (Ut(), Nl("="), Ut(), gr(v.default)); + } + function Ba(v) { + wc(v, v.decorators), ks(v, v.modifiers), gr(v.dotDotDotToken), md(v.name, cl), gr(v.questionToken), v.parent && v.parent.kind === 317 && !v.name ? gr(v.type) : Wu(v.type), Zl(v.initializer, v.type ? v.type.end : v.questionToken ? v.questionToken.end : v.name ? v.name.end : v.modifiers ? v.modifiers.end : v.decorators ? v.decorators.end : v.pos, v, Gi.parenthesizeExpressionForDisallowedComma); + } + function pn(v) { + Gt("@"), Tr(v.expression, Gi.parenthesizeLeftSideOfAccess); + } + function Cn(v) { + wc(v, v.decorators), ks(v, v.modifiers), md(v.name, Ds), gr(v.questionToken), Wu(v.type), As(); + } + function Bi(v) { + wc(v, v.decorators), ks(v, v.modifiers), gr(v.name), gr(v.questionToken), gr(v.exclamationToken), Wu(v.type), Zl(v.initializer, v.type ? v.type.end : v.questionToken ? v.questionToken.end : v.name.end, v), As(); + } + function kn(v) { + wl(v), wc(v, v.decorators), ks(v, v.modifiers), gr(v.name), gr(v.questionToken), Vu(v, v.typeParameters), ef(v, v.parameters), Wu(v.type), As(), Iu(v); + } + function xn(v) { + wc(v, v.decorators), ks(v, v.modifiers), gr(v.asteriskToken), gr(v.name), gr(v.questionToken), jn(v, Mo); + } + function Kn(v) { + wc(v, v.decorators), ks(v, v.modifiers), vn("static"), gs(v.body); + } + function Pn(v) { + ks(v, v.modifiers), vn("constructor"), jn(v, Mo); + } + function eo(v) { + wc(v, v.decorators), ks(v, v.modifiers), vn(v.kind === 172 ? "get" : "set"), Ut(), gr(v.name), jn(v, Mo); + } + function Rn(v) { + wl(v), wc(v, v.decorators), ks(v, v.modifiers), Vu(v, v.typeParameters), ef(v, v.parameters), Wu(v.type), As(), Iu(v); + } + function Da(v) { + wl(v), wc(v, v.decorators), ks(v, v.modifiers), vn("new"), Ut(), Vu(v, v.typeParameters), ef(v, v.parameters), Wu(v.type), As(), Iu(v); + } + function bo(v) { + wc(v, v.decorators), ks(v, v.modifiers), Df(v, v.parameters), Wu(v.type), As(); + } + function Ro(v) { + gr(v.type), gr(v.literal); + } + function En() { + As(); + } + function Wn(v) { + v.assertsModifier && (gr(v.assertsModifier), Ut()), gr(v.parameterName), v.type && (Ut(), vn("is"), Ut(), gr(v.type)); + } + function to(v) { + gr(v.typeName), qu(v, v.typeArguments); + } + function Co(v) { + wl(v), Vu(v, v.typeParameters), p_(v, v.parameters), Ut(), Gt("=>"), Ut(), gr(v.type), Iu(v); + } + function Ko(v) { + vn("function"), ef(v, v.parameters), Gt(":"), gr(v.type); + } + function Oo(v) { + Gt("?"), gr(v.type); + } + function no(v) { + Gt("!"), gr(v.type); + } + function $o(v) { + gr(v.type), Gt("="); + } + function Pr(v) { + wl(v), ks(v, v.modifiers), vn("new"), Ut(), Vu(v, v.typeParameters), ef(v, v.parameters), Ut(), Gt("=>"), Ut(), gr(v.type), Iu(v); + } + function xi(v) { + vn("typeof"), Ut(), gr(v.exprName), qu(v, v.typeArguments); + } + function St(v) { + Gt("{"); + var sr = e.getEmitFlags(v) & 1 ? 768 : 32897; + Zn(v, v.members, sr | 524288), Gt("}"); + } + function pa(v) { + gr(v.elementType, Gi.parenthesizeNonArrayTypeOfPostfixType), Gt("["), Gt("]"); + } + function dn(v) { + Gt("..."), gr(v.type); + } + function Jn(v) { + Ya(22, v.pos, Gt, v); + var sr = e.getEmitFlags(v) & 1 ? 528 : 657; + Zn(v, v.elements, sr | 524288, Gi.parenthesizeElementTypeOfTupleType), Ya(23, v.elements.end, Gt, v); + } + function Qe(v) { + gr(v.dotDotDotToken), gr(v.name), gr(v.questionToken), Ya(58, v.name.end, Gt, v), Ut(), gr(v.type); + } + function Gr(v) { + gr(v.type, Gi.parenthesizeTypeOfOptionalType), Gt("?"); + } + function S(v) { + Zn(v, v.types, 516, Gi.parenthesizeConstituentTypeOfUnionType); + } + function Ce(v) { + Zn(v, v.types, 520, Gi.parenthesizeConstituentTypeOfIntersectionType); + } + function qe(v) { + gr(v.checkType, Gi.parenthesizeCheckTypeOfConditionalType), Ut(), vn("extends"), Ut(), gr(v.extendsType, Gi.parenthesizeExtendsTypeOfConditionalType), Ut(), Gt("?"), Ut(), gr(v.trueType), Ut(), Gt(":"), Ut(), gr(v.falseType); + } + function br(v) { + vn("infer"), Ut(), gr(v.typeParameter); + } + function Zr(v) { + Gt("("), gr(v.type), Gt(")"); + } + function Si() { + vn("this"); + } + function Pi(v) { + Il(v.operator, vn), Ut(); + var sr = v.operator === 145 ? Gi.parenthesizeOperandOfReadonlyTypeOperator : Gi.parenthesizeOperandOfTypeOperator; + gr(v.type, sr); + } + function Qi(v) { + gr(v.objectType, Gi.parenthesizeNonArrayTypeOfPostfixType), Gt("["), gr(v.indexType), Gt("]"); + } + function Ct(v) { + var sr = e.getEmitFlags(v); + Gt("{"), sr & 1 ? Ut() : (bs(), Dc()), v.readonlyToken && (gr(v.readonlyToken), v.readonlyToken.kind !== 145 && vn("readonly"), Ut()), Gt("["), Wi(3, v.typeParameter), v.nameType && (Ut(), vn("as"), Ut(), gr(v.nameType)), Gt("]"), v.questionToken && (gr(v.questionToken), v.questionToken.kind !== 57 && Gt("?")), Gt(":"), Ut(), gr(v.type), As(), sr & 1 ? Ut() : (bs(), Cc()), Zn(v, v.members, 2), Gt("}"); + } + function sa(v) { + Tr(v.literal); + } + function en(v) { + gr(v.head), Zn(v, v.templateSpans, 262144); + } + function Wa(v) { + if (v.isTypeOf && (vn("typeof"), Ut()), vn("import"), Gt("("), gr(v.argument), v.assertions) { + Gt(","), Ut(), Gt("{"), Ut(), vn("assert"), Gt(":"), Ut(); + var sr = v.assertions.assertClause.elements; + Zn(v.assertions.assertClause, sr, 526226), Ut(), Gt("}"); + } + Gt(")"), v.qualifier && (Gt("."), gr(v.qualifier)), qu(v, v.typeArguments); + } + function qn(v) { + Gt("{"), Zn(v, v.elements, 525136), Gt("}"); + } + function mo(v) { + Gt("["), Zn(v, v.elements, 524880), Gt("]"); + } + function So(v) { + gr(v.dotDotDotToken), v.propertyName && (gr(v.propertyName), Gt(":"), Ut()), gr(v.name), Zl(v.initializer, v.name.end, v, Gi.parenthesizeExpressionForDisallowedComma); + } + function Go(v) { + var sr = v.elements, fi = v.multiLine ? 65536 : 0; + os(v, sr, 8914 | fi, Gi.parenthesizeExpressionForDisallowedComma); + } + function ys(v) { + e.forEach(v.properties, Ys); + var sr = e.getEmitFlags(v) & 65536; + sr && Dc(); + var fi = v.multiLine ? 65536 : 0, zi = Re && Re.languageVersion >= 1 && !e.isJsonSourceFile(Re) ? 64 : 0; + Zn(v, v.properties, 526226 | zi | fi), sr && Cc(); + } + function Pc(v) { + Tr(v.expression, Gi.parenthesizeLeftSideOfAccess); + var sr = v.questionDotToken || e.setTextRangePosEnd(e.factory.createToken(24), v.expression.end, v.name.pos), fi = iu(v, v.expression, sr), zi = iu(v, sr, v.name); + Nu(fi, false); + var Sa = sr.kind !== 28 && Vc(v.expression) && !Ae.hasTrailingComment() && !Ae.hasTrailingWhitespace(); + Sa && Gt("."), v.questionDotToken ? gr(sr) : Ya(sr.kind, v.expression.end, Gt, v), Nu(zi, false), gr(v.name), Us(fi, zi); + } + function Vc(v) { + if (v = e.skipPartiallyEmittedExpressions(v), e.isNumericLiteral(v)) { + var sr = Pu(v, true, false); + return !v.numericLiteralFlags && !e.stringContains(sr, e.tokenToString(24)); + } else if (e.isAccessExpression(v)) { + var fi = e.getConstantValue(v); + return typeof fi == "number" && isFinite(fi) && Math.floor(fi) === fi; + } + } + function Kc(v) { + Tr(v.expression, Gi.parenthesizeLeftSideOfAccess), gr(v.questionDotToken), Ya(22, v.expression.end, Gt, v), Tr(v.argumentExpression), Ya(23, v.argumentExpression.end, Gt, v); + } + function Xs(v) { + var sr = e.getEmitFlags(v) & 536870912; + sr && (Gt("("), d_("0"), Gt(","), Ut()), Tr(v.expression, Gi.parenthesizeLeftSideOfAccess), sr && Gt(")"), gr(v.questionDotToken), qu(v, v.typeArguments), os(v, v.arguments, 2576, Gi.parenthesizeExpressionForDisallowedComma); + } + function pc(v) { + Ya(103, v.pos, vn, v), Ut(), Tr(v.expression, Gi.parenthesizeExpressionOfNew), qu(v, v.typeArguments), os(v, v.arguments, 18960, Gi.parenthesizeExpressionForDisallowedComma); + } + function hs(v) { + var sr = e.getEmitFlags(v) & 536870912; + sr && (Gt("("), d_("0"), Gt(","), Ut()), Tr(v.tag, Gi.parenthesizeLeftSideOfAccess), sr && Gt(")"), qu(v, v.typeArguments), Ut(), Tr(v.template); + } + function tc(v) { + Gt("<"), gr(v.type), Gt(">"), Tr(v.expression, Gi.parenthesizeOperandOfPrefixUnary); + } + function ps(v) { + var sr = Ya(20, v.pos, Gt, v), fi = J_(v.expression, v); + Tr(v.expression, void 0), j_(v.expression, v), Us(fi), Ya(21, v.expression ? v.expression.end : sr, Gt, v); + } + function Qs(v) { + Ku(v.name), rn(v); + } + function js(v) { + wc(v, v.decorators), ks(v, v.modifiers), jn(v, ds); + } + function ds(v) { + Vu(v, v.typeParameters), p_(v, v.parameters), Wu(v.type), Ut(), gr(v.equalsGreaterThanToken); + } + function Ji(v) { + Ya(89, v.pos, vn, v), Ut(), Tr(v.expression, Gi.parenthesizeOperandOfPrefixUnary); + } + function ce(v) { + Ya(112, v.pos, vn, v), Ut(), Tr(v.expression, Gi.parenthesizeOperandOfPrefixUnary); + } + function Rr(v) { + Ya(114, v.pos, vn, v), Ut(), Tr(v.expression, Gi.parenthesizeOperandOfPrefixUnary); + } + function yi(v) { + Ya(132, v.pos, vn, v), Ut(), Tr(v.expression, Gi.parenthesizeOperandOfPrefixUnary); + } + function qi(v) { + Il(v.operator, Nl), je(v) && Ut(), Tr(v.operand, Gi.parenthesizeOperandOfPrefixUnary); + } + function je(v) { + var sr = v.operand; + return sr.kind === 219 && (v.operator === 39 && (sr.operator === 39 || sr.operator === 45) || v.operator === 40 && (sr.operator === 40 || sr.operator === 46)); + } + function Hr(v) { + Tr(v.operand, Gi.parenthesizeOperandOfPostfixUnary), Il(v.operator, Nl); + } + function pt() { + return e.createBinaryExpressionTrampoline(v, sr, fi, zi, Sa, void 0); + function v(Ha, ta) { + if (ta) { + ta.stackIndex++, ta.preserveSourceNewlinesStack[ta.stackIndex] = de, ta.containerPosStack[ta.stackIndex] = wr, ta.containerEndStack[ta.stackIndex] = Ur, ta.declarationListContainerEndStack[ta.stackIndex] = ii; + var nn = ta.shouldEmitCommentsStack[ta.stackIndex] = ct(Ha), Wo = ta.shouldEmitSourceMapsStack[ta.stackIndex] = Li(Ha); + D == null || D(Ha), nn && z_(Ha), Wo && v_(Ha), Ui(Ha); + } else + ta = { stackIndex: 0, preserveSourceNewlinesStack: [void 0], containerPosStack: [-1], containerEndStack: [-1], declarationListContainerEndStack: [-1], shouldEmitCommentsStack: [false], shouldEmitSourceMapsStack: [false] }; + return ta; + } + function sr(Ha, ta, nn) { + return da(Ha, nn, "left"); + } + function fi(Ha, ta, nn) { + var Wo = Ha.kind !== 27, Lo = iu(nn, nn.left, Ha), oc = iu(nn, Ha, nn.right); + Nu(Lo, Wo), Vf(Ha.pos), Pl(Ha, Ha.kind === 101 ? vn : Nl), af(Ha.end, true), Nu(oc, true); + } + function zi(Ha, ta, nn) { + return da(Ha, nn, "right"); + } + function Sa(Ha, ta) { + var nn = iu(Ha, Ha.left, Ha.operatorToken), Wo = iu(Ha, Ha.operatorToken, Ha.right); + if (Us(nn, Wo), ta.stackIndex > 0) { + var Lo = ta.preserveSourceNewlinesStack[ta.stackIndex], oc = ta.containerPosStack[ta.stackIndex], uu = ta.containerEndStack[ta.stackIndex], is = ta.declarationListContainerEndStack[ta.stackIndex], au = ta.shouldEmitCommentsStack[ta.stackIndex], Ou = ta.shouldEmitSourceMapsStack[ta.stackIndex]; + Yi(Lo), Ou && Bp(Ha), au && Oc(Ha, oc, uu, is), fe == null || fe(Ha), ta.stackIndex--; + } + } + function da(Ha, ta, nn) { + var Wo = nn === "left" ? Gi.getParenthesizeLeftSideOfBinaryForOperator(ta.operatorToken.kind) : Gi.getParenthesizeRightSideOfBinaryForOperator(ta.operatorToken.kind), Lo = nt(0, 1, Ha); + if (Lo === Ii && (e.Debug.assertIsDefined(si), Ha = Wo(e.cast(si, e.isExpression)), Lo = Mt(1, 1, Ha), si = void 0), (Lo === xf || Lo === hd || Lo === ut) && e.isBinaryExpression(Ha)) + return Ha; + Di = Wo, Lo(1, Ha); + } + } + function Pt(v) { + var sr = iu(v, v.condition, v.questionToken), fi = iu(v, v.questionToken, v.whenTrue), zi = iu(v, v.whenTrue, v.colonToken), Sa = iu(v, v.colonToken, v.whenFalse); + Tr(v.condition, Gi.parenthesizeConditionOfConditionalExpression), Nu(sr, true), gr(v.questionToken), Nu(fi, true), Tr(v.whenTrue, Gi.parenthesizeBranchOfConditionalExpression), Us(sr, fi), Nu(zi, true), gr(v.colonToken), Nu(Sa, true), Tr(v.whenFalse, Gi.parenthesizeBranchOfConditionalExpression), Us(zi, Sa); + } + function ga(v) { + gr(v.head), Zn(v, v.templateSpans, 262144); + } + function ua(v) { + Ya(125, v.pos, vn, v), gr(v.asteriskToken), __(v.expression && Kr(v.expression), _i); + } + function Xn(v) { + Ya(25, v.pos, Gt, v), Tr(v.expression, Gi.parenthesizeExpressionForDisallowedComma); + } + function jr(v) { + Ku(v.name), ki(v); + } + function fo(v) { + Tr(v.expression, Gi.parenthesizeLeftSideOfAccess), qu(v, v.typeArguments); + } + function xs(v) { + Tr(v.expression, void 0), v.type && (Ut(), vn("as"), Ut(), gr(v.type)); + } + function Fo(v) { + Tr(v.expression, Gi.parenthesizeLeftSideOfAccess), Nl("!"); + } + function ko(v) { + ac(v.keywordToken, v.pos, Gt), Gt("."), gr(v.name); + } + function Ao(v) { + Tr(v.expression), gr(v.literal); + } + function Ms(v) { + Bs(v, !v.multiLine && vd(v)); + } + function Bs(v, sr) { + Ya(18, v.pos, Gt, v); + var fi = sr || e.getEmitFlags(v) & 1 ? 768 : 129; + Zn(v, v.statements, fi), Ya(19, v.statements.end, Gt, v, !!(fi & 1)); + } + function xc(v) { + ks(v, v.modifiers), gr(v.declarationList), As(); + } + function su(v) { + v ? Gt(";") : As(); + } + function tl(v) { + Tr(v.expression, Gi.parenthesizeExpressionOfExpressionStatement), (!Re || !e.isJsonSourceFile(Re) || e.nodeIsSynthesized(v.expression)) && As(); + } + function Zc(v) { + var sr = Ya(99, v.pos, vn, v); + Ut(), Ya(20, sr, Gt, v), Tr(v.expression), Ya(21, v.expression.end, Gt, v), Al(v, v.thenStatement), v.elseStatement && (zf(v, v.thenStatement, v.elseStatement), Ya(91, v.thenStatement.end, vn, v), v.elseStatement.kind === 239 ? (Ut(), gr(v.elseStatement)) : Al(v, v.elseStatement)); + } + function Rf(v, sr) { + var fi = Ya(115, sr, vn, v); + Ut(), Ya(20, fi, Gt, v), Tr(v.expression), Ya(21, v.expression.end, Gt, v); + } + function al(v) { + Ya(90, v.pos, vn, v), Al(v, v.statement), e.isBlock(v.statement) && !de ? Ut() : zf(v, v.statement, v.expression), Rf(v, v.statement.end), As(); + } + function Jo(v) { + Rf(v, v.pos), Al(v, v.statement); + } + function eu(v) { + var sr = Ya(97, v.pos, vn, v); + Ut(); + var fi = Ya(20, sr, Gt, v); + Uu(v.initializer), fi = Ya(26, v.initializer ? v.initializer.end : fi, Gt, v), __(v.condition), fi = Ya(26, v.condition ? v.condition.end : fi, Gt, v), __(v.incrementor), Ya(21, v.incrementor ? v.incrementor.end : fi, Gt, v), Al(v, v.statement); + } + function Ws(v) { + var sr = Ya(97, v.pos, vn, v); + Ut(), Ya(20, sr, Gt, v), Uu(v.initializer), Ut(), Ya(101, v.initializer.end, vn, v), Ut(), Tr(v.expression), Ya(21, v.expression.end, Gt, v), Al(v, v.statement); + } + function pu(v) { + var sr = Ya(97, v.pos, vn, v); + Ut(), zd(v.awaitModifier), Ya(20, sr, Gt, v), Uu(v.initializer), Ut(), Ya(160, v.initializer.end, vn, v), Ut(), Tr(v.expression), Ya(21, v.expression.end, Gt, v), Al(v, v.statement); + } + function Uu(v) { + v !== void 0 && (v.kind === 255 ? gr(v) : Tr(v)); + } + function Ql(v) { + Ya(86, v.pos, vn, v), kl(v.label), As(); + } + function xl(v) { + Ya(81, v.pos, vn, v), kl(v.label), As(); + } + function Ya(v, sr, fi, zi, Sa) { + var da = e.getParseTreeNode(zi), Ha = da && da.kind === zi.kind, ta = sr; + if (Ha && Re && (sr = e.skipTrivia(Re.text, sr)), Ha && zi.pos !== ta) { + var nn = Sa && Re && !e.positionsAreOnSameLine(ta, sr, Re); + nn && Dc(), Vf(ta), nn && Cc(); + } + if (sr = Il(v, fi, sr), Ha && zi.end !== sr) { + var Wo = zi.kind === 288; + af(sr, !Wo, Wo); + } + return sr; + } + function du(v) { + return v.kind === 2 || !!v.hasTrailingNewLine; + } + function vc(v) { + return Re ? e.some(e.getLeadingCommentRanges(Re.text, v.pos), du) || e.some(e.getSyntheticLeadingComments(v), du) ? true : e.isPartiallyEmittedExpression(v) ? v.pos !== v.expression.pos && e.some(e.getTrailingCommentRanges(Re.text, v.expression.pos), du) ? true : vc(v.expression) : false : false; + } + function Kr(v) { + if (!qr && e.isPartiallyEmittedExpression(v) && vc(v)) { + var sr = e.getParseTreeNode(v); + if (sr && e.isParenthesizedExpression(sr)) { + var fi = e.factory.createParenthesizedExpression(v.expression); + return e.setOriginalNode(fi, v), e.setTextRange(fi, sr), fi; + } + return e.factory.createParenthesizedExpression(v); + } + return v; + } + function _i(v) { + return Kr(Gi.parenthesizeExpressionForDisallowedComma(v)); + } + function Ei(v) { + Ya(105, v.pos, vn, v), __(v.expression && Kr(v.expression), Kr), As(); + } + function tt(v) { + var sr = Ya(116, v.pos, vn, v); + Ut(), Ya(20, sr, Gt, v), Tr(v.expression), Ya(21, v.expression.end, Gt, v), Al(v, v.statement); + } + function kt(v) { + var sr = Ya(107, v.pos, vn, v); + Ut(), Ya(20, sr, Gt, v), Tr(v.expression), Ya(21, v.expression.end, Gt, v), Ut(), gr(v.caseBlock); + } + function bt(v) { + gr(v.label), Ya(58, v.label.end, Gt, v), Ut(), gr(v.statement); + } + function ia(v) { + Ya(109, v.pos, vn, v), __(Kr(v.expression), Kr), As(); + } + function Xt(v) { + Ya(111, v.pos, vn, v), Ut(), gr(v.tryBlock), v.catchClause && (zf(v, v.tryBlock, v.catchClause), gr(v.catchClause)), v.finallyBlock && (zf(v, v.catchClause || v.tryBlock, v.finallyBlock), Ya(96, (v.catchClause || v.tryBlock).end, vn, v), Ut(), gr(v.finallyBlock)); + } + function Za(v) { + ac(87, v.pos, vn), As(); + } + function bn(v) { + var sr, fi, zi, Sa, da; + gr(v.name), gr(v.exclamationToken), Wu(v.type), Zl(v.initializer, (da = (fi = (sr = v.type) === null || sr === void 0 ? void 0 : sr.end) !== null && fi !== void 0 ? fi : (Sa = (zi = v.name.emitNode) === null || zi === void 0 ? void 0 : zi.typeNode) === null || Sa === void 0 ? void 0 : Sa.end) !== null && da !== void 0 ? da : v.name.end, v, Gi.parenthesizeExpressionForDisallowedComma); + } + function _a(v) { + vn(e.isLet(v) ? "let" : e.isVarConst(v) ? "const" : "var"), Ut(), Zn(v, v.declarations, 528); + } + function qa(v) { + rn(v); + } + function rn(v) { + wc(v, v.decorators), ks(v, v.modifiers), vn("function"), gr(v.asteriskToken), Ut(), Vr(v.name), jn(v, Mo); + } + function jn(v, sr) { + var fi = v.body; + if (fi) + if (e.isBlock(fi)) { + var zi = e.getEmitFlags(v) & 65536; + zi && Dc(), wl(v), e.forEach(v.parameters, Et), Et(v.body), sr(v), gs(fi), Iu(v), zi && Cc(); + } else + sr(v), Ut(), Tr(fi, Gi.parenthesizeConciseBodyOfArrowFunction); + else + sr(v), As(); + } + function Mo(v) { + Vu(v, v.typeParameters), ef(v, v.parameters), Wu(v.type); + } + function ho(v) { + if (e.getEmitFlags(v) & 1) + return true; + if (v.multiLine || !e.nodeIsSynthesized(v) && Re && !e.rangeIsOnSingleLine(v, Re) || Ap(v, v.statements, 2) || Sf(v, v.statements, 2)) + return false; + for (var sr, fi = 0, zi = v.statements; fi < zi.length; fi++) { + var Sa = zi[fi]; + if (Wf(sr, Sa, 2) > 0) + return false; + sr = Sa; + } + return true; + } + function gs(v) { + D == null || D(v), Ut(), Gt("{"), Dc(); + var sr = ho(v) ? Se : hr; + Mp(v, v.statements, sr), Cc(), ac(19, v.statements.end, Gt, v), fe == null || fe(v); + } + function Se(v) { + hr(v, true); + } + function hr(v, sr) { + var fi = $l(v.statements), zi = Ae.getTextPos(); + Fi(v), fi === 0 && zi === Ae.getTextPos() && sr ? (Cc(), Zn(v, v.statements, 768), Dc()) : Zn(v, v.statements, 1, void 0, fi); + } + function Or(v) { + ki(v); + } + function ki(v) { + e.forEach(v.members, Ys), wc(v, v.decorators), ks(v, v.modifiers), vn("class"), v.name && (Ut(), Vr(v.name)); + var sr = e.getEmitFlags(v) & 65536; + sr && Dc(), Vu(v, v.typeParameters), Zn(v, v.heritageClauses, 0), Ut(), Gt("{"), Zn(v, v.members, 129), Gt("}"), sr && Cc(); + } + function dt(v) { + wc(v, v.decorators), ks(v, v.modifiers), vn("interface"), Ut(), gr(v.name), Vu(v, v.typeParameters), Zn(v, v.heritageClauses, 512), Ut(), Gt("{"), Zn(v, v.members, 129), Gt("}"); + } + function la(v) { + wc(v, v.decorators), ks(v, v.modifiers), vn("type"), Ut(), gr(v.name), Vu(v, v.typeParameters), Ut(), Gt("="), Ut(), gr(v.type), As(); + } + function wa(v) { + ks(v, v.modifiers), vn("enum"), Ut(), gr(v.name), Ut(), Gt("{"), Zn(v, v.members, 145), Gt("}"); + } + function On(v) { + ks(v, v.modifiers), ~v.flags & 1024 && (vn(v.flags & 16 ? "namespace" : "module"), Ut()), gr(v.name); + var sr = v.body; + if (!sr) + return As(); + for (; sr && e.isModuleDeclaration(sr); ) + Gt("."), gr(sr.name), sr = sr.body; + Ut(), gr(sr); + } + function No(v) { + wl(v), e.forEach(v.statements, Et), Bs(v, vd(v)), Iu(v); + } + function jo(v) { + Ya(18, v.pos, Gt, v), Zn(v, v.clauses, 129), Ya(19, v.clauses.end, Gt, v, true); + } + function po(v) { + ks(v, v.modifiers), Ya(100, v.modifiers ? v.modifiers.end : v.pos, vn, v), Ut(), v.isTypeOnly && (Ya(152, v.pos, vn, v), Ut()), gr(v.name), Ut(), Ya(63, v.name.end, Gt, v), Ut(), Gn(v.moduleReference), As(); + } + function Gn(v) { + v.kind === 79 ? Tr(v) : gr(v); + } + function $n(v) { + ks(v, v.modifiers), Ya(100, v.modifiers ? v.modifiers.end : v.pos, vn, v), Ut(), v.importClause && (gr(v.importClause), Ut(), Ya(156, v.importClause.end, vn, v), Ut()), Tr(v.moduleSpecifier), v.assertClause && kl(v.assertClause), As(); + } + function Ho(v) { + v.isTypeOnly && (Ya(152, v.pos, vn, v), Ut()), gr(v.name), v.name && v.namedBindings && (Ya(27, v.name.end, Gt, v), Ut()), gr(v.namedBindings); + } + function Zo(v) { + var sr = Ya(41, v.pos, Gt, v); + Ut(), Ya(127, sr, vn, v), Ut(), gr(v.name); + } + function Es(v) { + oo(v); + } + function yc(v) { + I_(v); + } + function Xr(v) { + var sr = Ya(93, v.pos, vn, v); + Ut(), v.isExportEquals ? Ya(63, sr, Nl, v) : Ya(88, sr, vn, v), Ut(), Tr(v.expression, v.isExportEquals ? Gi.getParenthesizeRightSideOfBinaryForOperator(63) : Gi.parenthesizeExpressionOfExportDefault), As(); + } + function Ls(v) { + var sr = Ya(93, v.pos, vn, v); + if (Ut(), v.isTypeOnly && (sr = Ya(152, sr, vn, v), Ut()), v.exportClause ? gr(v.exportClause) : sr = Ya(41, sr, Gt, v), v.moduleSpecifier) { + Ut(); + var fi = v.exportClause ? v.exportClause.end : sr; + Ya(156, fi, vn, v), Ut(), Tr(v.moduleSpecifier); + } + v.assertClause && kl(v.assertClause), As(); + } + function Ic(v) { + Ya(129, v.pos, vn, v), Ut(); + var sr = v.elements; + Zn(v, sr, 526226); + } + function zu(v) { + gr(v.name), Gt(":"), Ut(); + var sr = v.value; + if ((e.getEmitFlags(sr) & 512) === 0) { + var fi = e.getCommentRange(sr); + af(fi.pos); + } + gr(sr); + } + function vf(v) { + var sr = Ya(93, v.pos, vn, v); + Ut(), sr = Ya(127, sr, vn, v), Ut(), sr = Ya(142, sr, vn, v), Ut(), gr(v.name), As(); + } + function P_(v) { + var sr = Ya(41, v.pos, Gt, v); + Ut(), Ya(127, sr, vn, v), Ut(), gr(v.name); + } + function El(v) { + oo(v); + } + function vp(v) { + I_(v); + } + function oo(v) { + Gt("{"), Zn(v, v.elements, 525136), Gt("}"); + } + function I_(v) { + v.isTypeOnly && (vn("type"), Ut()), v.propertyName && (gr(v.propertyName), Ut(), Ya(127, v.propertyName.end, vn, v), Ut()), gr(v.name); + } + function yp(v) { + vn("require"), Gt("("), Tr(v.expression), Gt(")"); + } + function Yl(v) { + gr(v.openingElement), Zn(v, v.children, 262144), gr(v.closingElement); + } + function Bf(v) { + Gt("<"), ns(v.tagName), qu(v, v.typeArguments), Ut(), gr(v.attributes), Gt("/>"); + } + function Cl(v) { + gr(v.openingFragment), Zn(v, v.children, 262144), gr(v.closingFragment); + } + function c_(v) { + if (Gt("<"), e.isJsxOpeningElement(v)) { + var sr = J_(v.tagName, v); + ns(v.tagName), qu(v, v.typeArguments), v.attributes.properties && v.attributes.properties.length > 0 && Ut(), gr(v.attributes), j_(v.attributes, v), Us(sr); + } + Gt(">"); + } + function hp(v) { + Ae.writeLiteral(v.text); + } + function gu(v) { + Gt(""); + } + function Dp(v) { + Zn(v, v.properties, 262656); + } + function sd(v) { + gr(v.name), R_("=", Gt, v.initializer, vi); + } + function Aa(v) { + Gt("{..."), Tr(v.expression), Gt("}"); + } + function va(v) { + var sr = false; + return e.forEachTrailingCommentRange((Re == null ? void 0 : Re.text) || "", v + 1, function() { + return sr = true; + }), sr; + } + function Cu(v) { + var sr = false; + return e.forEachLeadingCommentRange((Re == null ? void 0 : Re.text) || "", v + 1, function() { + return sr = true; + }), sr; + } + function qs(v) { + return va(v) || Cu(v); + } + function cd(v) { + var sr; + if (v.expression || !qr && !e.nodeIsSynthesized(v) && qs(v.pos)) { + var fi = Re && !e.nodeIsSynthesized(v) && e.getLineAndCharacterOfPosition(Re, v.pos).line !== e.getLineAndCharacterOfPosition(Re, v.end).line; + fi && Ae.increaseIndent(); + var zi = Ya(18, v.pos, Gt, v); + gr(v.dotDotDotToken), Tr(v.expression), Ya(19, ((sr = v.expression) === null || sr === void 0 ? void 0 : sr.end) || zi, Gt, v), fi && Ae.decreaseIndent(); + } + } + function ns(v) { + v.kind === 79 ? Tr(v) : gr(v); + } + function nl(v) { + Ya(82, v.pos, vn, v), Ut(), Tr(v.expression, Gi.parenthesizeExpressionForDisallowedComma), es(v, v.statements, v.expression.end); + } + function hc(v) { + var sr = Ya(88, v.pos, vn, v); + es(v, v.statements, sr); + } + function es(v, sr, fi) { + var zi = sr.length === 1 && (!Re || e.nodeIsSynthesized(v) || e.nodeIsSynthesized(sr[0]) || e.rangeStartPositionsAreOnSameLine(v, sr[0], Re)), Sa = 163969; + zi ? (ac(58, fi, Gt, v), Ut(), Sa &= -130) : Ya(58, fi, Gt, v), Zn(v, sr, Sa); + } + function u_(v) { + Ut(), Il(v.token, vn), Ut(), Zn(v, v.types, 528); + } + function Jf(v) { + var sr = Ya(83, v.pos, vn, v); + Ut(), v.variableDeclaration && (Ya(20, sr, Gt, v), gr(v.variableDeclaration), Ya(21, v.variableDeclaration.end, Gt, v), Ut()), gr(v.block); + } + function w_(v) { + gr(v.name), Gt(":"), Ut(); + var sr = v.initializer; + if ((e.getEmitFlags(sr) & 512) === 0) { + var fi = e.getCommentRange(sr); + af(fi.pos); + } + Tr(sr, Gi.parenthesizeExpressionForDisallowedComma); + } + function ud(v) { + gr(v.name), v.objectAssignmentInitializer && (Ut(), Gt("="), Ut(), Tr(v.objectAssignmentInitializer, Gi.parenthesizeExpressionForDisallowedComma)); + } + function ku(v) { + v.expression && (Ya(25, v.pos, Gt, v), Tr(v.expression, Gi.parenthesizeExpressionForDisallowedComma)); + } + function ld(v) { + gr(v.name), Zl(v.initializer, v.name.end, v, Gi.parenthesizeExpressionForDisallowedComma); + } + function fd(v) { + if (ir("/**"), v.comment) { + var sr = e.getTextOfJSDocComment(v.comment); + if (sr) + for (var fi = sr.split(/\r\n?|\n/g), zi = 0, Sa = fi; zi < Sa.length; zi++) { + var da = Sa[zi]; + bs(), Ut(), Gt("*"), Ut(), ir(da); + } + } + v.tags && (v.tags.length === 1 && v.tags[0].kind === 343 && !v.comment ? (Ut(), gr(v.tags[0])) : Zn(v, v.tags, 33)), Ut(), ir("*/"); + } + function bp(v) { + ol(v.tagName), ru(v.typeExpression), Au(v.comment); + } + function Sp(v) { + ol(v.tagName), gr(v.name), Au(v.comment); + } + function Tp(v) { + Ut(), Gt("{"), gr(v.name), Gt("}"); + } + function _d(v) { + ol(v.tagName), Ut(), Gt("{"), gr(v.class), Gt("}"), Au(v.comment); + } + function jf(v) { + ol(v.tagName), ru(v.constraint), Ut(), Zn(v, v.typeParameters, 528), Au(v.comment); + } + function O_(v) { + ol(v.tagName), v.typeExpression && (v.typeExpression.kind === 309 ? ru(v.typeExpression) : (Ut(), Gt("{"), ir("Object"), v.typeExpression.isArrayType && (Gt("["), Gt("]")), Gt("}"))), v.fullName && (Ut(), gr(v.fullName)), Au(v.comment), v.typeExpression && v.typeExpression.kind === 322 && xp(v.typeExpression); + } + function F_(v) { + ol(v.tagName), v.name && (Ut(), gr(v.name)), Au(v.comment), M_(v.typeExpression); + } + function pd(v) { + ol(v.tagName), Au(v.comment); + } + function xp(v) { + Zn(v, e.factory.createNodeArray(v.jsDocPropertyTags), 33); + } + function M_(v) { + v.typeParameters && Zn(v, e.factory.createNodeArray(v.typeParameters), 33), v.parameters && Zn(v, e.factory.createNodeArray(v.parameters), 33), v.type && (bs(), Ut(), Gt("*"), Ut(), gr(v.type)); + } + function Ep(v) { + ol(v.tagName), ru(v.typeExpression), Ut(), v.isBracketed && Gt("["), gr(v.name), v.isBracketed && Gt("]"), Au(v.comment); + } + function ol(v) { + Gt("@"), gr(v); + } + function Au(v) { + var sr = e.getTextOfJSDocComment(v); + sr && (Ut(), ir(sr)); + } + function ru(v) { + v && (Ut(), Gt("{"), gr(v.type), Gt("}")); + } + function yf(v) { + bs(); + var sr = v.statements, fi = sr.length === 0 || !e.isPrologueDirective(sr[0]) || e.nodeIsSynthesized(sr[0]); + if (fi) { + Mp(v, sr, mu); + return; + } + mu(v); + } + function Cp(v) { + kp(!!v.hasNoDefaultLib, v.syntheticFileReferences || [], v.syntheticTypeReferences || [], v.syntheticLibReferences || []); + for (var sr = 0, fi = v.prepends; sr < fi.length; sr++) { + var zi = fi[sr]; + if (e.isUnparsedSource(zi) && zi.syntheticReferences) + for (var Sa = 0, da = zi.syntheticReferences; Sa < da.length; Sa++) { + var Ha = da[Sa]; + gr(Ha), bs(); + } + } + } + function dd(v) { + v.isDeclarationFile && kp(v.hasNoDefaultLib, v.referencedFiles, v.typeReferenceDirectives, v.libReferenceDirectives); + } + function kp(v, sr, fi, zi) { + if (v) { + var Sa = Ae.getTextPos(); + rf('/// '), Ye && Ye.sections.push({ pos: Sa, end: Ae.getTextPos(), kind: "no-default-lib" }), bs(); + } + if (Re && Re.moduleName && (rf('/// ')), bs()), Re && Re.amdDependencies) + for (var da = 0, Ha = Re.amdDependencies; da < Ha.length; da++) { + var ta = Ha[da]; + ta.name ? rf('/// ')) : rf('/// ')), bs(); + } + for (var nn = 0, Wo = sr; nn < Wo.length; nn++) { + var Lo = Wo[nn], Sa = Ae.getTextPos(); + rf('/// ')), Ye && Ye.sections.push({ pos: Sa, end: Ae.getTextPos(), kind: "reference", data: Lo.fileName }), bs(); + } + for (var oc = 0, uu = fi; oc < uu.length; oc++) { + var Lo = uu[oc], Sa = Ae.getTextPos(), is = Lo.resolutionMode && Lo.resolutionMode !== (Re == null ? void 0 : Re.impliedNodeFormat) ? 'resolution-mode="'.concat(Lo.resolutionMode === e.ModuleKind.ESNext ? "import" : "require", '"') : ""; + rf('/// ")), Ye && Ye.sections.push({ pos: Sa, end: Ae.getTextPos(), kind: Lo.resolutionMode ? Lo.resolutionMode === e.ModuleKind.ESNext ? "type-import" : "type-require" : "type", data: Lo.fileName }), bs(); + } + for (var au = 0, Ou = zi; au < Ou.length; au++) { + var Lo = Ou[au], Sa = Ae.getTextPos(); + rf('/// ')), Ye && Ye.sections.push({ pos: Sa, end: Ae.getTextPos(), kind: "lib", data: Lo.fileName }), bs(); + } + } + function mu(v) { + var sr = v.statements; + wl(v), e.forEach(v.statements, Et), Fi(v); + var fi = e.findIndex(sr, function(zi) { + return !e.isPrologueDirective(zi); + }); + dd(v), Zn(v, sr, 1, void 0, fi === -1 ? sr.length : fi), Iu(v); + } + function gd(v) { + var sr = e.getEmitFlags(v); + !(sr & 512) && v.pos !== v.expression.pos && af(v.expression.pos), Tr(v.expression), !(sr & 1024) && v.end !== v.expression.end && Vf(v.expression.end); + } + function hf(v) { + os(v, v.elements, 528, void 0); + } + function $l(v, sr, fi, zi) { + for (var Sa = !!sr, da = 0; da < v.length; da++) { + var Ha = v[da]; + if (e.isPrologueDirective(Ha)) { + var ta = fi ? !fi.has(Ha.expression.text) : true; + if (ta) { + Sa && (Sa = false, Pe(sr)), bs(); + var nn = Ae.getTextPos(); + gr(Ha), zi && Ye && Ye.sections.push({ pos: nn, end: Ae.getTextPos(), kind: "prologue", data: Ha.expression.text }), fi && fi.add(Ha.expression.text); + } + } else + return da; + } + return v.length; + } + function Uf(v, sr) { + for (var fi = 0, zi = v; fi < zi.length; fi++) { + var Sa = zi[fi]; + if (!sr.has(Sa.data)) { + bs(); + var da = Ae.getTextPos(); + gr(Sa), Ye && Ye.sections.push({ pos: da, end: Ae.getTextPos(), kind: "prologue", data: Sa.data }), sr && sr.add(Sa.data); + } + } + } + function L_(v) { + if (e.isSourceFile(v)) + $l(v.statements, v); + else { + for (var sr = new e.Set(), fi = 0, zi = v.prepends; fi < zi.length; fi++) { + var Sa = zi[fi]; + Uf(Sa.prologues, sr); + } + for (var da = 0, Ha = v.sourceFiles; da < Ha.length; da++) { + var ta = Ha[da]; + $l(ta.statements, ta, sr, true); + } + Pe(void 0); + } + } + function l_(v) { + for (var sr = new e.Set(), fi, zi = 0; zi < v.sourceFiles.length; zi++) { + for (var Sa = v.sourceFiles[zi], da = void 0, Ha = 0, ta = 0, nn = Sa.statements; ta < nn.length; ta++) { + var Wo = nn[ta]; + if (!e.isPrologueDirective(Wo)) + break; + sr.has(Wo.expression.text) || (sr.add(Wo.expression.text), (da || (da = [])).push({ pos: Wo.pos, end: Wo.end, expression: { pos: Wo.expression.pos, end: Wo.expression.end, text: Wo.expression.text } }), Ha = Ha < Wo.end ? Wo.end : Ha); + } + da && (fi || (fi = [])).push({ file: zi, text: Sa.text.substring(0, Ha), directives: da }); + } + return fi; + } + function f_(v) { + if (e.isSourceFile(v) || e.isUnparsedSource(v)) { + var sr = e.getShebang(v.text); + if (sr) + return rf(sr), bs(), true; + } else { + for (var fi = 0, zi = v.prepends; fi < zi.length; fi++) { + var Sa = zi[fi]; + if (e.Debug.assertNode(Sa, e.isUnparsedSource), f_(Sa)) + return true; + } + for (var da = 0, Ha = v.sourceFiles; da < Ha.length; da++) { + var ta = Ha[da]; + if (f_(ta)) + return true; + } + } + } + function md(v, sr) { + if (!!v) { + var fi = ir; + ir = sr, gr(v), ir = fi; + } + } + function ks(v, sr) { + sr && sr.length && (Zn(v, sr, 262656), Ut()); + } + function Wu(v) { + v && (Gt(":"), Ut(), gr(v)); + } + function Zl(v, sr, fi, zi) { + v && (Ut(), Ya(63, sr, Nl, fi), Ut(), Tr(v, zi)); + } + function R_(v, sr, fi, zi) { + fi && (sr(v), zi(fi)); + } + function kl(v) { + v && (Ut(), gr(v)); + } + function __(v, sr) { + v && (Ut(), Tr(v, sr)); + } + function zd(v) { + v && (gr(v), Ut()); + } + function Al(v, sr) { + e.isBlock(sr) || e.getEmitFlags(v) & 1 ? (Ut(), gr(sr)) : (bs(), Dc(), e.isEmptyStatement(sr) ? Wi(5, sr) : gr(sr), Cc()); + } + function wc(v, sr) { + Zn(v, sr, 2146305); + } + function qu(v, sr) { + Zn(v, sr, 53776, Wt); + } + function Vu(v, sr) { + if (e.isFunctionLike(v) && v.typeArguments) + return qu(v, v.typeArguments); + Zn(v, sr, 53776); + } + function ef(v, sr) { + Zn(v, sr, 2576); + } + function sl(v, sr) { + var fi = e.singleOrUndefined(sr); + return fi && fi.pos === v.pos && e.isArrowFunction(v) && !v.type && !e.some(v.decorators) && !e.some(v.modifiers) && !e.some(v.typeParameters) && !e.some(fi.decorators) && !e.some(fi.modifiers) && !fi.dotDotDotToken && !fi.questionToken && !fi.type && !fi.initializer && e.isIdentifier(fi.name); + } + function p_(v, sr) { + sl(v, sr) ? Zn(v, sr, 528) : ef(v, sr); + } + function Df(v, sr) { + Zn(v, sr, 8848); + } + function Ec(v) { + switch (v & 60) { + case 0: + break; + case 16: + Gt(","); + break; + case 4: + Ut(), Gt("|"); + break; + case 32: + Ut(), Gt("*"), Ut(); + break; + case 8: + Ut(), Gt("&"); + break; + } + } + function Zn(v, sr, fi, zi, Sa, da) { + Ps(gr, v, sr, fi, zi, Sa, da); + } + function os(v, sr, fi, zi, Sa, da) { + Ps(Tr, v, sr, fi, zi, Sa, da); + } + function Ps(v, sr, fi, zi, Sa, da, Ha) { + da === void 0 && (da = 0), Ha === void 0 && (Ha = fi ? fi.length - da : 0); + var ta = fi === void 0; + if (!(ta && zi & 16384)) { + var nn = fi === void 0 || da >= fi.length || Ha === 0; + if (nn && zi & 32768) { + g && g(fi), ne && ne(fi); + return; + } + if (zi & 15360 && (Gt(X(zi)), nn && fi && af(fi.pos, true)), g && g(fi), nn) + zi & 1 && !(de && (!sr || Re && e.rangeIsOnSingleLine(sr, Re))) ? bs() : zi & 256 && !(zi & 524288) && Ut(); + else { + e.Debug.type(fi); + var Wo = (zi & 262144) === 0, Lo = Wo, oc = Ap(sr, fi, zi); + oc ? (bs(oc), Lo = false) : zi & 256 && Ut(), zi & 128 && Dc(); + for (var uu = P(v, Sa), is = void 0, au = void 0, Ou = false, sf = 0; sf < Ha; sf++) { + var lu = fi[da + sf]; + if (zi & 32) + bs(), Ec(zi); + else if (is) { + zi & 60 && is.end !== (sr ? sr.end : -1) && Vf(is.end), Ec(zi), Je(au); + var cf = Wf(is, lu, zi); + cf > 0 ? ((zi & 131) === 0 && (Dc(), Ou = true), bs(cf), Lo = false) : is && zi & 512 && Ut(); + } + if (au = Wr(lu), Lo) { + var uf = e.getCommentRange(lu); + af(uf.pos); + } else + Lo = Wo; + ye = lu.pos, uu(lu, v, Sa, sf), Ou && (Cc(), Ou = false), is = lu; + } + var K_ = is ? e.getEmitFlags(is) : 0, Jp = qr || !!(K_ & 1024), Hf = (fi == null ? void 0 : fi.hasTrailingComma) && zi & 64 && zi & 16; + Hf && (is && !Jp ? Ya(27, is.end, Gt, is) : Gt(",")), is && (sr ? sr.end : -1) !== is.end && zi & 60 && !Jp && Vf(Hf && (fi == null ? void 0 : fi.end) ? fi.end : is.end), zi & 128 && Cc(), Je(au); + var kc = Sf(sr, fi, zi); + kc ? bs(kc) : zi & 2097408 && Ut(); + } + ne && ne(fi), zi & 15360 && (nn && fi && Vf(fi.end), Gt($(zi))); + } + } + function d_(v) { + Ae.writeLiteral(v); + } + function Gc(v) { + Ae.writeStringLiteral(v); + } + function B_(v) { + Ae.write(v); + } + function vu(v, sr) { + Ae.writeSymbol(v, sr); + } + function Gt(v) { + Ae.writePunctuation(v); + } + function As() { + Ae.writeTrailingSemicolon(";"); + } + function vn(v) { + Ae.writeKeyword(v); + } + function Nl(v) { + Ae.writeOperator(v); + } + function cl(v) { + Ae.writeParameter(v); + } + function rf(v) { + Ae.writeComment(v); + } + function Ut() { + Ae.writeSpace(" "); + } + function Ds(v) { + Ae.writeProperty(v); + } + function bf(v) { + Ae.nonEscapingWrite ? Ae.nonEscapingWrite(v) : Ae.write(v); + } + function bs(v) { + v === void 0 && (v = 1); + for (var sr = 0; sr < v; sr++) + Ae.writeLine(sr > 0); + } + function Dc() { + Ae.increaseIndent(); + } + function Cc() { + Ae.decreaseIndent(); + } + function ac(v, sr, fi, zi) { + return lr ? Il(v, fi, sr) : of(zi, v, fi, sr, Il); + } + function Pl(v, sr) { + ue && ue(v), sr(e.tokenToString(v.kind)), We && We(v); + } + function Il(v, sr, fi) { + var zi = e.tokenToString(v); + return sr(zi), fi < 0 ? fi : fi + zi.length; + } + function zf(v, sr, fi) { + if (e.getEmitFlags(v) & 1) + Ut(); + else if (de) { + var zi = iu(v, sr, fi); + zi ? bs(zi) : Ut(); + } else + bs(); + } + function ul(v) { + for (var sr = v.split(/\r\n?|\n/g), fi = e.guessIndentation(sr), zi = 0, Sa = sr; zi < Sa.length; zi++) { + var da = Sa[zi], Ha = fi ? da.slice(fi) : da; + Ha.length && (bs(), ir(Ha)); + } + } + function Nu(v, sr) { + v ? (Dc(), bs(v)) : sr && Ut(); + } + function Us(v, sr) { + v && Cc(), sr && Cc(); + } + function Ap(v, sr, fi) { + if (fi & 2 || de) { + if (fi & 65536) + return 1; + var zi = sr[0]; + if (zi === void 0) + return !v || Re && e.rangeIsOnSingleLine(v, Re) ? 0 : 1; + if (zi.pos === ye || zi.kind === 11) + return 0; + if (Re && v && !e.positionIsSynthesized(v.pos) && !e.nodeIsSynthesized(zi) && (!zi.parent || e.getOriginalNode(zi.parent) === e.getOriginalNode(v))) + return de ? ll(function(Sa) { + return e.getLinesBetweenPositionAndPrecedingNonWhitespaceCharacter(zi.pos, v.pos, Re, Sa); + }) : e.rangeStartPositionsAreOnSameLine(v, zi, Re) ? 0 : 1; + if (U_(zi, fi)) + return 1; + } + return fi & 1 ? 1 : 0; + } + function Wf(v, sr, fi) { + if (fi & 2 || de) { + if (v === void 0 || sr === void 0 || sr.kind === 11) + return 0; + if (Re && !e.nodeIsSynthesized(v) && !e.nodeIsSynthesized(sr)) + return de && Lp(v, sr) ? ll(function(zi) { + return e.getLinesBetweenRangeEndAndRangeStart(v, sr, Re, zi); + }) : !de && Gu(v, sr) ? e.rangeEndIsOnSameLineAsRangeStart(v, sr, Re) ? 0 : 1 : fi & 65536 ? 1 : 0; + if (U_(v, fi) || U_(sr, fi)) + return 1; + } else if (e.getStartsOnNewLine(sr)) + return 1; + return fi & 1 ? 1 : 0; + } + function Sf(v, sr, fi) { + if (fi & 2 || de) { + if (fi & 65536) + return 1; + var zi = e.lastOrUndefined(sr); + if (zi === void 0) + return !v || Re && e.rangeIsOnSingleLine(v, Re) ? 0 : 1; + if (Re && v && !e.positionIsSynthesized(v.pos) && !e.nodeIsSynthesized(zi) && (!zi.parent || zi.parent === v)) { + if (de) { + var Sa = e.isNodeArray(sr) && !e.positionIsSynthesized(sr.end) ? sr.end : zi.end; + return ll(function(da) { + return e.getLinesBetweenPositionAndNextNonWhitespaceCharacter(Sa, v.end, Re, da); + }); + } + return e.rangeEndPositionsAreOnSameLine(v, zi, Re) ? 0 : 1; + } + if (U_(zi, fi)) + return 1; + } + return fi & 1 && !(fi & 131072) ? 1 : 0; + } + function ll(v) { + e.Debug.assert(!!de); + var sr = v(true); + return sr === 0 ? v(false) : sr; + } + function J_(v, sr) { + var fi = de && Ap(sr, [v], 0); + return fi && Nu(fi, false), !!fi; + } + function j_(v, sr) { + var fi = de && Sf(sr, [v], 0); + fi && bs(fi); + } + function U_(v, sr) { + if (e.nodeIsSynthesized(v)) { + var fi = e.getStartsOnNewLine(v); + return fi === void 0 ? (sr & 65536) !== 0 : fi; + } + return (sr & 65536) !== 0; + } + function iu(v, sr, fi) { + return e.getEmitFlags(v) & 131072 ? 0 : (v = qf(v), sr = qf(sr), fi = qf(fi), e.getStartsOnNewLine(fi) ? 1 : Re && !e.nodeIsSynthesized(v) && !e.nodeIsSynthesized(sr) && !e.nodeIsSynthesized(fi) ? de ? ll(function(zi) { + return e.getLinesBetweenRangeEndAndRangeStart(sr, fi, Re, zi); + }) : e.rangeEndIsOnSameLineAsRangeStart(sr, fi, Re) ? 0 : 1 : 0); + } + function vd(v) { + return v.statements.length === 0 && (!Re || e.rangeEndIsOnSameLineAsRangeStart(v, v, Re)); + } + function qf(v) { + for (; v.kind === 212 && e.nodeIsSynthesized(v); ) + v = v.expression; + return v; + } + function dc(v, sr) { + if (e.isGeneratedIdentifier(v)) + return Np(v); + if (e.isStringLiteral(v) && v.textSourceNode) + return dc(v.textSourceNode, sr); + var fi = Re, zi = !!fi && !!v.parent && !e.nodeIsSynthesized(v); + if (e.isMemberName(v)) { + if (!zi || e.getSourceFileOfNode(v) !== e.getOriginalNode(fi)) + return e.idText(v); + } else if (e.Debug.assertNode(v, e.isLiteralExpression), !zi) + return v.text; + return e.getSourceTextOfNodeFromSourceFile(fi, v, sr); + } + function Pu(v, sr, fi) { + if (v.kind === 10 && v.textSourceNode) { + var zi = v.textSourceNode; + if (e.isIdentifier(zi) || e.isNumericLiteral(zi)) { + var Sa = e.isNumericLiteral(zi) ? zi.text : dc(zi); + return fi ? '"'.concat(e.escapeJsxAttributeString(Sa), '"') : sr || e.getEmitFlags(v) & 16777216 ? '"'.concat(e.escapeString(Sa), '"') : '"'.concat(e.escapeNonAsciiString(Sa), '"'); + } else + return Pu(zi, sr, fi); + } + var da = (sr ? 1 : 0) | (fi ? 2 : 0) | (k.terminateUnterminatedLiterals ? 4 : 0) | (k.target && k.target === 99 ? 8 : 0); + return e.getLiteralText(v, Re, da); + } + function wl(v) { + v && e.getEmitFlags(v) & 524288 || (rr.push(Ie), Ie = 0, _e.push(we)); + } + function Iu(v) { + v && e.getEmitFlags(v) & 524288 || (Ie = rr.pop(), we = _e.pop()); + } + function so(v) { + (!we || we === e.lastOrUndefined(_e)) && (we = new e.Set()), we.add(v); + } + function Et(v) { + if (!!v) + switch (v.kind) { + case 235: + e.forEach(v.statements, Et); + break; + case 250: + case 248: + case 240: + case 241: + Et(v.statement); + break; + case 239: + Et(v.thenStatement), Et(v.elseStatement); + break; + case 242: + case 244: + case 243: + Et(v.initializer), Et(v.statement); + break; + case 249: + Et(v.caseBlock); + break; + case 263: + e.forEach(v.clauses, Et); + break; + case 289: + case 290: + e.forEach(v.statements, Et); + break; + case 252: + Et(v.tryBlock), Et(v.catchClause), Et(v.finallyBlock); + break; + case 292: + Et(v.variableDeclaration), Et(v.block); + break; + case 237: + Et(v.declarationList); + break; + case 255: + e.forEach(v.declarations, Et); + break; + case 254: + case 164: + case 203: + case 257: + Ku(v.name); + break; + case 256: + Ku(v.name), e.getEmitFlags(v) & 524288 && (e.forEach(v.parameters, Et), Et(v.body)); + break; + case 201: + case 202: + e.forEach(v.elements, Et); + break; + case 266: + Et(v.importClause); + break; + case 267: + Ku(v.name), Et(v.namedBindings); + break; + case 268: + Ku(v.name); + break; + case 274: + Ku(v.name); + break; + case 269: + e.forEach(v.elements, Et); + break; + case 270: + Ku(v.propertyName || v.name); + break; + } + } + function Ys(v) { + if (!!v) + switch (v.kind) { + case 296: + case 297: + case 167: + case 169: + case 172: + case 173: + Ku(v.name); + break; + } + } + function Ku(v) { + v && (e.isGeneratedIdentifier(v) ? Np(v) : e.isBindingPattern(v) && Et(v)); + } + function Np(v) { + if ((v.autoGenerateFlags & 7) === 4) + return Pp(tf(v), v.autoGenerateFlags); + var sr = v.autoGenerateId; + return Ee[sr] || (Ee[sr] = Ol(v)); + } + function Pp(v, sr) { + var fi = e.getNodeId(v); + return ze[fi] || (ze[fi] = Hc(v, sr)); + } + function nc(v) { + return fl(v) && !He.has(v) && !(we && we.has(v)); + } + function fl(v) { + return Re ? e.isFileLevelUniqueName(Re, v, U) : true; + } + function _l(v, sr) { + for (var fi = sr; e.isNodeDescendantOf(fi, sr); fi = fi.nextContainer) + if (fi.locals) { + var zi = fi.locals.get(e.escapeLeadingUnderscores(v)); + if (zi && zi.flags & 3257279) + return false; + } + return true; + } + function cu(v, sr) { + if (v && !(Ie & v)) { + var fi = v === 268435456 ? "_i" : "_n"; + if (nc(fi)) + return Ie |= v, sr && so(fi), fi; + } + for (; ; ) { + var zi = Ie & 268435455; + if (Ie++, zi !== 8 && zi !== 13) { + var fi = zi < 26 ? "_" + String.fromCharCode(97 + zi) : "_" + (zi - 26); + if (nc(fi)) + return sr && so(fi), fi; + } + } + } + function gc(v, sr, fi, zi) { + if (sr === void 0 && (sr = nc), fi && sr(v)) + return zi ? so(v) : He.add(v), v; + v.charCodeAt(v.length - 1) !== 95 && (v += "_"); + for (var Sa = 1; ; ) { + var da = v + Sa; + if (sr(da)) + return zi ? so(da) : He.add(da), da; + Sa++; + } + } + function Tf(v) { + return gc(v, fl, true); + } + function mc(v) { + var sr = dc(v.name); + return _l(sr, v) ? sr : gc(sr); + } + function Ip(v) { + var sr = e.getExternalModuleName(v), fi = e.isStringLiteral(sr) ? e.makeIdentifierFromModuleName(sr.text) : "module"; + return gc(fi); + } + function ms() { + return gc("default"); + } + function tu() { + return gc("class"); + } + function wp(v) { + return e.isIdentifier(v.name) ? Pp(v.name) : cu(0); + } + function Hc(v, sr) { + switch (v.kind) { + case 79: + return gc(dc(v), nc, !!(sr & 16), !!(sr & 8)); + case 261: + case 260: + return mc(v); + case 266: + case 272: + return Ip(v); + case 256: + case 257: + case 271: + return ms(); + case 226: + return tu(); + case 169: + case 172: + case 173: + return wp(v); + case 162: + return cu(0, true); + default: + return cu(0); + } + } + function Ol(v) { + switch (v.autoGenerateFlags & 7) { + case 1: + return cu(0, !!(v.autoGenerateFlags & 8)); + case 2: + return cu(268435456, !!(v.autoGenerateFlags & 8)); + case 3: + return gc(e.idText(v), v.autoGenerateFlags & 32 ? fl : nc, !!(v.autoGenerateFlags & 16), !!(v.autoGenerateFlags & 8)); + } + return e.Debug.fail("Unsupported GeneratedIdentifierKind."); + } + function tf(v) { + for (var sr = v.autoGenerateId, fi = v, zi = fi.original; zi && (fi = zi, !(e.isIdentifier(fi) && !!(fi.autoGenerateFlags & 4) && fi.autoGenerateId !== sr)); ) + zi = fi.original; + return fi; + } + function xf(v, sr) { + var fi = Mt(2, v, sr), zi = wr, Sa = Ur, da = ii; + z_(sr), fi(v, sr), Oc(sr, zi, Sa, da); + } + function z_(v) { + var sr = e.getEmitFlags(v), fi = e.getCommentRange(v); + rs(v, sr, fi.pos, fi.end), sr & 2048 && (qr = true); + } + function Oc(v, sr, fi, zi) { + var Sa = e.getEmitFlags(v), da = e.getCommentRange(v); + Sa & 2048 && (qr = false), Op(v, Sa, da.pos, da.end, sr, fi, zi); + var Ha = e.getTypeNode(v); + Ha && Op(v, Sa, Ha.pos, Ha.end, sr, fi, zi); + } + function rs(v, sr, fi, zi) { + Xi(), or = false; + var Sa = fi < 0 || (sr & 512) !== 0 || v.kind === 11, da = zi < 0 || (sr & 1024) !== 0 || v.kind === 11; + (fi > 0 || zi > 0) && fi !== zi && (Sa || Cf(fi, v.kind !== 349), (!Sa || fi >= 0 && (sr & 512) !== 0) && (wr = fi), (!da || zi >= 0 && (sr & 1024) !== 0) && (Ur = zi, v.kind === 255 && (ii = zi))), e.forEach(e.getSyntheticLeadingComments(v), Ef), et(); + } + function Op(v, sr, fi, zi, Sa, da, Ha) { + Xi(); + var ta = zi < 0 || (sr & 1024) !== 0 || v.kind === 11; + e.forEach(e.getSyntheticTrailingComments(v), Fl), (fi > 0 || zi > 0) && fi !== zi && (wr = Sa, Ur = da, ii = Ha, !ta && v.kind !== 349 && Fc(zi)), et(); + } + function Ef(v) { + (v.hasLeadingNewline || v.kind === 2) && Ae.writeLine(), pl(v), v.hasTrailingNewLine || v.kind === 2 ? Ae.writeLine() : Ae.writeSpace(" "); + } + function Fl(v) { + Ae.isAtStartOfLine() || Ae.writeSpace(" "), pl(v), v.hasTrailingNewLine && Ae.writeLine(); + } + function pl(v) { + var sr = Fp(v), fi = v.kind === 3 ? e.computeLineStarts(sr) : void 0; + e.writeCommentRange(sr, fi, Ae, 0, sr.length, Z); + } + function Fp(v) { + return v.kind === 3 ? "/*".concat(v.text, "*/") : "//".concat(v.text); + } + function Mp(v, sr, fi) { + Xi(); + var zi = sr.pos, Sa = sr.end, da = e.getEmitFlags(v), Ha = zi < 0 || (da & 512) !== 0, ta = qr || Sa < 0 || (da & 1024) !== 0; + Ha || Rp(sr), et(), da & 2048 && !qr ? (qr = true, fi(v), qr = false) : fi(v), Xi(), ta || (Cf(sr.end, true), or && !Ae.isAtStartOfLine() && Ae.writeLine()), et(); + } + function Gu(v, sr) { + return v = e.getOriginalNode(v), v.parent && v.parent === e.getOriginalNode(sr).parent; + } + function Lp(v, sr) { + if (sr.pos < v.end) + return false; + v = e.getOriginalNode(v), sr = e.getOriginalNode(sr); + var fi = v.parent; + if (!fi || fi !== sr.parent) + return false; + var zi = e.getContainingNodeArray(v), Sa = zi == null ? void 0 : zi.indexOf(v); + return Sa !== void 0 && Sa > -1 && zi.indexOf(sr) === Sa + 1; + } + function Cf(v, sr) { + or = false, sr ? v === 0 && (Re == null ? void 0 : Re.isDeclarationFile) ? Ot(v, g_) : Ot(v, gl) : v === 0 && Ot(v, W_); + } + function W_(v, sr, fi, zi, Sa) { + m_(v, sr) && gl(v, sr, fi, zi, Sa); + } + function g_(v, sr, fi, zi, Sa) { + m_(v, sr) || gl(v, sr, fi, zi, Sa); + } + function dl(v, sr) { + return k.onlyPrintJsDocStyle ? e.isJSDocLikeText(v, sr) || e.isPinnedComment(v, sr) : true; + } + function gl(v, sr, fi, zi, Sa) { + !Re || !dl(Re.text, v) || (or || (e.emitNewLineBeforeLeadingCommentOfPosition(De(), Ae, Sa, v), or = true), Xc(v), e.writeCommentRange(Re.text, De(), Ae, v, sr, Z), Xc(sr), zi ? Ae.writeLine() : fi === 3 && Ae.writeSpace(" ")); + } + function Vf(v) { + qr || v === -1 || Cf(v, true); + } + function Fc(v) { + nf(v, Hu); + } + function Hu(v, sr, fi, zi) { + !Re || !dl(Re.text, v) || (Ae.isAtStartOfLine() || Ae.writeSpace(" "), Xc(v), e.writeCommentRange(Re.text, De(), Ae, v, sr, Z), Xc(sr), zi && Ae.writeLine()); + } + function af(v, sr, fi) { + qr || (Xi(), nf(v, sr ? Hu : fi ? tn : Ml), et()); + } + function tn(v, sr, fi) { + !Re || (Xc(v), e.writeCommentRange(Re.text, De(), Ae, v, sr, Z), Xc(sr), fi === 2 && Ae.writeLine()); + } + function Ml(v, sr, fi, zi) { + !Re || (Xc(v), e.writeCommentRange(Re.text, De(), Ae, v, sr, Z), Xc(sr), zi ? Ae.writeLine() : Ae.writeSpace(" ")); + } + function Ot(v, sr) { + Re && (wr === -1 || v !== wr) && (q_(v) ? Kf(sr) : e.forEachLeadingCommentRange(Re.text, v, sr, v)); + } + function nf(v, sr) { + Re && (Ur === -1 || v !== Ur && v !== ii) && e.forEachTrailingCommentRange(Re.text, v, sr); + } + function q_(v) { + return pe !== void 0 && e.last(pe).nodePos === v; + } + function Kf(v) { + if (!!Re) { + var sr = e.last(pe).detachedCommentEndPos; + pe.length - 1 ? pe.pop() : pe = void 0, e.forEachLeadingCommentRange(Re.text, sr, v, sr); + } + } + function Rp(v) { + var sr = Re && e.emitDetachedComments(Re.text, De(), Ae, yd, v, Z, qr); + sr && (pe ? pe.push(sr) : pe = [sr]); + } + function yd(v, sr, fi, zi, Sa, da) { + !Re || !dl(Re.text, zi) || (Xc(zi), e.writeCommentRange(v, sr, fi, zi, Sa, da), Xc(Sa)); + } + function m_(v, sr) { + return !!Re && e.isRecognizedTripleSlashComment(Re.text, v, sr); + } + function Ll(v) { + return v.parsedSourceMap === void 0 && v.sourceMapText !== void 0 && (v.parsedSourceMap = e.tryParseRawSourceMap(v.sourceMapText) || false), v.parsedSourceMap || void 0; + } + function hd(v, sr) { + var fi = Mt(3, v, sr); + v_(sr), fi(v, sr), Bp(sr); + } + function v_(v) { + var sr = e.getEmitFlags(v), fi = e.getSourceMapRange(v); + if (e.isUnparsedNode(v)) { + e.Debug.assertIsDefined(v.parent, "UnparsedNodes must have parent pointers"); + var zi = Ll(v.parent); + zi && be && be.appendSourceMap(Ae.getLine(), Ae.getColumn(), zi, v.parent.sourceMapPath, v.parent.getLineAndCharacterOfPosition(v.pos), v.parent.getLineAndCharacterOfPosition(v.end)); + } else { + var Sa = fi.source || Ge; + v.kind !== 349 && (sr & 16) === 0 && fi.pos >= 0 && Gf(fi.source || Ge, Xu(Sa, fi.pos)), sr & 64 && (lr = true); + } + } + function Bp(v) { + var sr = e.getEmitFlags(v), fi = e.getSourceMapRange(v); + e.isUnparsedNode(v) || (sr & 64 && (lr = false), v.kind !== 349 && (sr & 32) === 0 && fi.end >= 0 && Gf(fi.source || Ge, fi.end)); + } + function Xu(v, sr) { + return v.skipTrivia ? v.skipTrivia(sr) : e.skipTrivia(v.text, sr); + } + function Xc(v) { + if (!(lr || e.positionIsSynthesized(v) || yu(Ge))) { + var sr = e.getLineAndCharacterOfPosition(Ge, v), fi = sr.line, zi = sr.character; + be.addMapping(Ae.getLine(), Ae.getColumn(), ur, fi, zi, void 0); + } + } + function Gf(v, sr) { + if (v !== Ge) { + var fi = Ge, zi = ur; + wu(v), Xc(sr), V_(fi, zi); + } else + Xc(sr); + } + function of(v, sr, fi, zi, Sa) { + if (lr || v && e.isInJsonFile(v)) + return Sa(sr, fi, zi); + var da = v && v.emitNode, Ha = da && da.flags || 0, ta = da && da.tokenSourceMapRanges && da.tokenSourceMapRanges[sr], nn = ta && ta.source || Ge; + return zi = Xu(nn, ta ? ta.pos : zi), (Ha & 128) === 0 && zi >= 0 && Gf(nn, zi), zi = Sa(sr, fi, zi), ta && (zi = ta.end), (Ha & 256) === 0 && zi >= 0 && Gf(nn, zi), zi; + } + function wu(v) { + if (!lr) { + if (Ge = v, v === yr) { + ur = Ir; + return; + } + yu(v) || (ur = be.addSource(v.fileName), k.inlineSources && be.setSourceContent(ur, v.text), yr = v, Ir = ur); + } + } + function V_(v, sr) { + Ge = v, ur = sr; + } + function yu(v) { + return e.fileExtensionIs(v.fileName, ".json"); + } + } + e.createPrinter = F; + function x() { + var k = []; + return k[1024] = ["{", "}"], k[2048] = ["(", ")"], k[4096] = ["<", ">"], k[8192] = ["[", "]"], k; + } + function X(k) { + return a[k & 15360][0]; + } + function $(k) { + return a[k & 15360][1]; + } + var A; + (function(k) { + k[k.Auto = 0] = "Auto", k[k.CountMask = 268435455] = "CountMask", k[k._i = 268435456] = "_i"; + })(A || (A = {})); + function y(k, Y, U, j) { + Y(k); + } + function V(k, Y, U, j) { + Y(k, U.select(j)); + } + function L(k, Y, U, j) { + Y(k, U); + } + function P(k, Y) { + return k.length === 1 ? y : typeof Y == "object" ? V : L; + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(b, se, J) { + if (!b.getDirectories || !b.readDirectory) + return; + var ie = new e.Map(), R = e.createGetCanonicalFileName(J); + return { useCaseSensitiveFileNames: J, fileExists: y, readFile: function(l, d) { + return b.readFile(l, d); + }, directoryExists: b.directoryExists && V, getDirectories: P, readDirectory: k, createDirectory: b.createDirectory && L, writeFile: b.writeFile && A, addOrDeleteFileOrDirectory: U, addOrDeleteFile: j, clearCache: I, realpath: b.realpath && Y }; + function q(l) { + return e.toPath(l, se, R); + } + function O(l) { + return ie.get(e.ensureTrailingDirectorySeparator(l)); + } + function ve(l) { + return O(e.getDirectoryPath(l)); + } + function ee(l) { + return e.getBaseFileName(e.normalizePath(l)); + } + function he(l, d) { + var D; + if (!b.realpath || e.ensureTrailingDirectorySeparator(q(b.realpath(l))) === d) { + var fe = { files: e.map(b.readDirectory(l, void 0, void 0, ["*.*"]), ee) || [], directories: b.getDirectories(l) || [] }; + return ie.set(e.ensureTrailingDirectorySeparator(d), fe), fe; + } + if (!((D = b.directoryExists) === null || D === void 0) && D.call(b, l)) + return ie.set(d, false), false; + } + function F(l, d) { + d = e.ensureTrailingDirectorySeparator(d); + var D = O(d); + if (D) + return D; + try { + return he(l, d); + } catch { + e.Debug.assert(!ie.has(e.ensureTrailingDirectorySeparator(d))); + return; + } + } + function x(l, d) { + return R(l) === R(d); + } + function X(l, d) { + return e.some(l, function(D) { + return x(D, d); + }); + } + function $(l, d, D) { + if (X(l, d)) { + if (!D) + return e.filterMutate(l, function(fe) { + return !x(fe, d); + }); + } else if (D) + return l.push(d); + } + function A(l, d, D) { + var fe = q(l), g = ve(fe); + return g && H(g, ee(l), true), b.writeFile(l, d, D); + } + function y(l) { + var d = q(l), D = ve(d); + return D && X(D.files, ee(l)) || b.fileExists(l); + } + function V(l) { + var d = q(l); + return ie.has(e.ensureTrailingDirectorySeparator(d)) || b.directoryExists(l); + } + function L(l) { + var d = q(l), D = ve(d), fe = ee(l); + D && $(D.directories, fe, true), b.createDirectory(l); + } + function P(l) { + var d = q(l), D = F(l, d); + return D ? D.directories.slice() : b.getDirectories(l); + } + function k(l, d, D, fe, g) { + var ne = q(l), ue = F(l, ne), We; + if (ue !== void 0) + return e.matchFiles(l, d, D, fe, J, se, g, Fe, Y); + return b.readDirectory(l, d, D, fe, g); + function Fe(Be) { + var ge = q(Be); + if (ge === ne) + return ue || Z(Be, ge); + var Re = F(Be, ge); + return Re !== void 0 ? Re || Z(Be, ge) : e.emptyFileSystemEntries; + } + function Z(Be, ge) { + if (We && ge === ne) + return We; + var Re = { files: e.map(b.readDirectory(Be, void 0, void 0, ["*.*"]), ee) || e.emptyArray, directories: b.getDirectories(Be) || e.emptyArray }; + return ge === ne && (We = Re), Re; + } + } + function Y(l) { + return b.realpath ? b.realpath(l) : l; + } + function U(l, d) { + var D = O(d); + if (D !== void 0) { + I(); + return; + } + var fe = ve(d); + if (!!fe) { + if (!b.directoryExists) { + I(); + return; + } + var g = ee(l), ne = { fileExists: b.fileExists(d), directoryExists: b.directoryExists(d) }; + return ne.directoryExists || X(fe.directories, g) ? I() : H(fe, g, ne.fileExists), ne; + } + } + function j(l, d, D) { + if (D !== e.FileWatcherEventKind.Changed) { + var fe = ve(d); + fe && H(fe, ee(l), D === e.FileWatcherEventKind.Created); + } + } + function H(l, d, D) { + $(l.files, d, D); + } + function I() { + ie.clear(); + } + } + e.createCachedDirectoryStructureHost = a; + var C; + (function(b) { + b[b.None = 0] = "None", b[b.Partial = 1] = "Partial", b[b.Full = 2] = "Full"; + })(C = e.ConfigFileProgramReloadLevel || (e.ConfigFileProgramReloadLevel = {})); + function w(b, se, J, ie, R) { + var q, O = e.arrayToMap(((q = se == null ? void 0 : se.configFile) === null || q === void 0 ? void 0 : q.extendedSourceFiles) || e.emptyArray, R); + J.forEach(function(ve, ee) { + O.has(ee) || (ve.projects.delete(b), ve.close()); + }), O.forEach(function(ve, ee) { + var he = J.get(ee); + he ? he.projects.add(b) : J.set(ee, { projects: new e.Set([b]), watcher: ie(ve, ee), close: function() { + var F = J.get(ee); + !F || F.projects.size !== 0 || (F.watcher.close(), J.delete(ee)); + } }); + }); + } + e.updateSharedExtendedConfigFileWatcher = w; + function B(b, se) { + se.forEach(function(J) { + J.projects.delete(b) && J.close(); + }); + } + e.clearSharedExtendedConfigFileWatcher = B; + function E(b, se, J) { + !b.delete(se) || b.forEach(function(ie, R) { + var q, O = ie.extendedResult; + !((q = O.extendedSourceFiles) === null || q === void 0) && q.some(function(ve) { + return J(ve) === se; + }) && E(b, R, J); + }); + } + e.cleanExtendedConfigCache = E; + function Q(b, se, J) { + var ie = new e.Map(b); + e.mutateMap(se, ie, { createNewValue: J, onDeleteValue: e.closeFileWatcher }); + } + e.updatePackageJsonWatch = Q; + function le(b, se, J) { + var ie = b.getMissingFilePaths(), R = e.arrayToMap(ie, e.identity, e.returnTrue); + e.mutateMap(se, R, { createNewValue: J, onDeleteValue: e.closeFileWatcher }); + } + e.updateMissingFilePathsWatch = le; + function N(b, se, J) { + e.mutateMap(b, se, { createNewValue: ie, onDeleteValue: K, onExistingValue: R }); + function ie(q, O) { + return { watcher: J(q, O), flags: O }; + } + function R(q, O, ve) { + q.flags !== O && (q.watcher.close(), b.set(ve, ie(ve, O))); + } + } + e.updateWatchingWildcardDirectories = N; + function p(b) { + var se = b.watchedDirPath, J = b.fileOrDirectory, ie = b.fileOrDirectoryPath, R = b.configFileName, q = b.options, O = b.program, ve = b.extraFileExtensions, ee = b.currentDirectory, he = b.useCaseSensitiveFileNames, F = b.writeLog, x = b.toPath, X = e.removeIgnoredPath(ie); + if (!X) + return F("Project: ".concat(R, " Detected ignored path: ").concat(J)), true; + if (ie = X, ie === se) + return false; + if (e.hasExtension(ie) && !e.isSupportedSourceFileName(J, q, ve)) + return F("Project: ".concat(R, " Detected file add/remove of non supported extension: ").concat(J)), true; + if (e.isExcludedFile(J, q.configFile.configFileSpecs, e.getNormalizedAbsolutePath(e.getDirectoryPath(R), ee), he, ee)) + return F("Project: ".concat(R, " Detected excluded file: ").concat(J)), true; + if (!O || e.outFile(q) || q.outDir) + return false; + if (e.isDeclarationFileName(ie)) { + if (q.declarationDir) + return false; + } else if (!e.fileExtensionIsOneOf(ie, e.supportedJSExtensionsFlat)) + return false; + var $ = e.removeFileExtension(ie), A = e.isArray(O) ? void 0 : m(O) ? O.getProgramOrUndefined() : O, y = !A && !e.isArray(O) ? O : void 0; + if (V($ + ".ts") || V($ + ".tsx")) + return F("Project: ".concat(R, " Detected output file: ").concat(J)), true; + return false; + function V(L) { + return A ? !!A.getSourceFileByPath(L) : y ? y.getState().fileInfos.has(L) : !!e.find(O, function(P) { + return x(P) === L; + }); + } + } + e.isIgnoredFileFromWildCardWatching = p; + function m(b) { + return !!b.getState; + } + function G(b, se) { + return b ? b.isEmittedFile(se) : false; + } + e.isEmittedFileOfProgram = G; + var oe; + (function(b) { + b[b.None = 0] = "None", b[b.TriggerOnly = 1] = "TriggerOnly", b[b.Verbose = 2] = "Verbose"; + })(oe = e.WatchLogLevel || (e.WatchLogLevel = {})); + function f(b, se, J, ie) { + e.setSysLog(se === oe.Verbose ? J : e.noop); + var R = { watchFile: function(y, V, L, P) { + return b.watchFile(y, V, L, P); + }, watchDirectory: function(y, V, L, P) { + return b.watchDirectory(y, V, (L & 1) !== 0, P); + } }, q = se !== oe.None ? { watchFile: $("watchFile"), watchDirectory: $("watchDirectory") } : void 0, O = se === oe.Verbose ? { watchFile: x, watchDirectory: X } : q || R, ve = se === oe.Verbose ? F : e.returnNoopFileWatcher; + return { watchFile: ee("watchFile"), watchDirectory: ee("watchDirectory") }; + function ee(y) { + return function(V, L, P, k, Y, U) { + var j; + return e.matchesExclude(V, y === "watchFile" ? k == null ? void 0 : k.excludeFiles : k == null ? void 0 : k.excludeDirectories, he(), ((j = b.getCurrentDirectory) === null || j === void 0 ? void 0 : j.call(b)) || "") ? ve(V, P, k, Y, U) : O[y].call(void 0, V, L, P, k, Y, U); + }; + } + function he() { + return typeof b.useCaseSensitiveFileNames == "boolean" ? b.useCaseSensitiveFileNames : b.useCaseSensitiveFileNames(); + } + function F(y, V, L, P, k) { + return J("ExcludeWatcher:: Added:: ".concat(A(y, V, L, P, k, ie))), { close: function() { + return J("ExcludeWatcher:: Close:: ".concat(A(y, V, L, P, k, ie))); + } }; + } + function x(y, V, L, P, k, Y) { + J("FileWatcher:: Added:: ".concat(A(y, L, P, k, Y, ie))); + var U = q.watchFile(y, V, L, P, k, Y); + return { close: function() { + J("FileWatcher:: Close:: ".concat(A(y, L, P, k, Y, ie))), U.close(); + } }; + } + function X(y, V, L, P, k, Y) { + var U = "DirectoryWatcher:: Added:: ".concat(A(y, L, P, k, Y, ie)); + J(U); + var j = e.timestamp(), H = q.watchDirectory(y, V, L, P, k, Y), I = e.timestamp() - j; + return J("Elapsed:: ".concat(I, "ms ").concat(U)), { close: function() { + var l = "DirectoryWatcher:: Close:: ".concat(A(y, L, P, k, Y, ie)); + J(l); + var d = e.timestamp(); + H.close(); + var D = e.timestamp() - d; + J("Elapsed:: ".concat(D, "ms ").concat(l)); + } }; + } + function $(y) { + return function(V, L, P, k, Y, U) { + return R[y].call(void 0, V, function() { + for (var j = [], H = 0; H < arguments.length; H++) + j[H] = arguments[H]; + var I = "".concat(y === "watchFile" ? "FileWatcher" : "DirectoryWatcher", ":: Triggered with ").concat(j[0], " ").concat(j[1] !== void 0 ? j[1] : "", ":: ").concat(A(V, P, k, Y, U, ie)); + J(I); + var l = e.timestamp(); + L.call.apply(L, Ve([void 0], j, false)); + var d = e.timestamp() - l; + J("Elapsed:: ".concat(d, "ms ").concat(I)); + }, P, k, Y, U); + }; + } + function A(y, V, L, P, k, Y) { + return "WatchInfo: ".concat(y, " ").concat(V, " ").concat(JSON.stringify(L), " ").concat(Y ? Y(P, k) : k === void 0 ? P : "".concat(P, " ").concat(k)); + } + } + e.getWatchFactory = f; + function T(b) { + var se = b == null ? void 0 : b.fallbackPolling; + return { watchFile: se !== void 0 ? se : e.WatchFileKind.PriorityPollingInterval }; + } + e.getFallbackOptions = T; + function K(b) { + b.watcher.close(); + } + e.closeFileWatcherOf = K; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(Z, Be, ge) { + return ge === void 0 && (ge = "tsconfig.json"), e.forEachAncestorDirectory(Z, function(Re) { + var ze = e.combinePaths(Re, ge); + return Be(ze) ? ze : void 0; + }); + } + e.findConfigFile = a; + function C(Z, Be) { + var ge = e.getDirectoryPath(Be), Re = e.isRootedDiskPath(Z) ? Z : e.combinePaths(ge, Z); + return e.normalizePath(Re); + } + e.resolveTripleslashReference = C; + function w(Z, Be, ge) { + var Re, ze = e.forEach(Z, function(Ee) { + var He = e.getNormalizedPathComponents(Ee, Be); + if (He.pop(), !Re) { + Re = He; + return; + } + for (var rr = Math.min(Re.length, He.length), Ie = 0; Ie < rr; Ie++) + if (ge(Re[Ie]) !== ge(He[Ie])) { + if (Ie === 0) + return true; + Re.length = Ie; + break; + } + He.length < Re.length && (Re.length = He.length); + }); + return ze ? "" : Re ? e.getPathFromPathComponents(Re) : Be; + } + e.computeCommonSourceDirectoryOfFilenames = w; + function B(Z, Be) { + return E(Z, Be); + } + e.createCompilerHost = B; + function E(Z, Be, ge) { + ge === void 0 && (ge = e.sys); + var Re = new e.Map(), ze = e.createGetCanonicalFileName(ge.useCaseSensitiveFileNames), Ee = e.maybeBind(ge, ge.createHash) || e.generateDjb2Hash; + function He(ir, Cr, Ye) { + var Br; + try { + e.performance.mark("beforeIORead"), Br = er.readFile(ir), e.performance.mark("afterIORead"), e.performance.measure("I/O Read", "beforeIORead", "afterIORead"); + } catch (Er) { + Ye && Ye(Er.message), Br = ""; + } + return Br !== void 0 ? e.createSourceFile(ir, Br, Cr, Be) : void 0; + } + function rr(ir) { + return Re.has(ir) ? true : (er.directoryExists || ge.directoryExists)(ir) ? (Re.set(ir, true), true) : false; + } + function Ie(ir, Cr, Ye, Br) { + try { + e.performance.mark("beforeIOWrite"), e.writeFileEnsuringDirectories(ir, Cr, Ye, function(Er, Ne, n) { + return we(Er, Ne, n); + }, function(Er) { + return (er.createDirectory || ge.createDirectory)(Er); + }, function(Er) { + return rr(Er); + }), e.performance.mark("afterIOWrite"), e.performance.measure("I/O Write", "beforeIOWrite", "afterIOWrite"); + } catch (Er) { + Br && Br(Er.message); + } + } + var _e; + function we(ir, Cr, Ye) { + if (!e.isWatchSet(Z) || !ge.getModifiedTime) { + ge.writeFile(ir, Cr, Ye); + return; + } + _e || (_e = new e.Map()); + var Br = Ee(Cr), Er = ge.getModifiedTime(ir); + if (Er) { + var Ne = _e.get(ir); + if (Ne && Ne.byteOrderMark === Ye && Ne.hash === Br && Ne.mtime.getTime() === Er.getTime()) + return; + } + ge.writeFile(ir, Cr, Ye); + var n = ge.getModifiedTime(ir) || e.missingFileModifiedTime; + _e.set(ir, { hash: Br, byteOrderMark: Ye, mtime: n }); + } + function de() { + return e.getDirectoryPath(e.normalizePath(ge.getExecutingFilePath())); + } + var ye = e.getNewLineCharacter(Z, function() { + return ge.newLine; + }), Ae = ge.realpath && function(ir) { + return ge.realpath(ir); + }, er = { getSourceFile: He, getDefaultLibLocation: de, getDefaultLibFileName: function(ir) { + return e.combinePaths(de(), e.getDefaultLibFileName(ir)); + }, writeFile: Ie, getCurrentDirectory: e.memoize(function() { + return ge.getCurrentDirectory(); + }), useCaseSensitiveFileNames: function() { + return ge.useCaseSensitiveFileNames; + }, getCanonicalFileName: ze, getNewLine: function() { + return ye; + }, fileExists: function(ir) { + return ge.fileExists(ir); + }, readFile: function(ir) { + return ge.readFile(ir); + }, trace: function(ir) { + return ge.write(ir + ye); + }, directoryExists: function(ir) { + return ge.directoryExists(ir); + }, getEnvironmentVariable: function(ir) { + return ge.getEnvironmentVariable ? ge.getEnvironmentVariable(ir) : ""; + }, getDirectories: function(ir) { + return ge.getDirectories(ir); + }, realpath: Ae, readDirectory: function(ir, Cr, Ye, Br, Er) { + return ge.readDirectory(ir, Cr, Ye, Br, Er); + }, createDirectory: function(ir) { + return ge.createDirectory(ir); + }, createHash: e.maybeBind(ge, ge.createHash) }; + return er; + } + e.createCompilerHostWorker = E; + function Q(Z, Be, ge) { + var Re = Z.readFile, ze = Z.fileExists, Ee = Z.directoryExists, He = Z.createDirectory, rr = Z.writeFile, Ie = new e.Map(), _e = new e.Map(), we = new e.Map(), de = new e.Map(), ye = function(ir) { + var Cr = Be(ir), Ye = Ie.get(Cr); + return Ye !== void 0 ? Ye !== false ? Ye : void 0 : Ae(Cr, ir); + }, Ae = function(ir, Cr) { + var Ye = Re.call(Z, Cr); + return Ie.set(ir, Ye !== void 0 ? Ye : false), Ye; + }; + Z.readFile = function(ir) { + var Cr = Be(ir), Ye = Ie.get(Cr); + return Ye !== void 0 ? Ye !== false ? Ye : void 0 : !e.fileExtensionIs(ir, ".json") && !e.isBuildInfoFile(ir) ? Re.call(Z, ir) : Ae(Cr, ir); + }; + var er = ge ? function(ir, Cr, Ye, Br) { + var Er = Be(ir), Ne = de.get(Er); + if (Ne) + return Ne; + var n = ge(ir, Cr, Ye, Br); + return n && (e.isDeclarationFileName(ir) || e.fileExtensionIs(ir, ".json")) && de.set(Er, n), n; + } : void 0; + return Z.fileExists = function(ir) { + var Cr = Be(ir), Ye = _e.get(Cr); + if (Ye !== void 0) + return Ye; + var Br = ze.call(Z, ir); + return _e.set(Cr, !!Br), Br; + }, rr && (Z.writeFile = function(ir, Cr) { + for (var Ye = [], Br = 2; Br < arguments.length; Br++) + Ye[Br - 2] = arguments[Br]; + var Er = Be(ir); + _e.delete(Er); + var Ne = Ie.get(Er); + if (Ne !== void 0 && Ne !== Cr) + Ie.delete(Er), de.delete(Er); + else if (er) { + var n = de.get(Er); + n && n.text !== Cr && de.delete(Er); + } + rr.call.apply(rr, Ve([Z, ir, Cr], Ye, false)); + }), Ee && He && (Z.directoryExists = function(ir) { + var Cr = Be(ir), Ye = we.get(Cr); + if (Ye !== void 0) + return Ye; + var Br = Ee.call(Z, ir); + return we.set(Cr, !!Br), Br; + }, Z.createDirectory = function(ir) { + var Cr = Be(ir); + we.delete(Cr), He.call(Z, ir); + }), { originalReadFile: Re, originalFileExists: ze, originalDirectoryExists: Ee, originalCreateDirectory: He, originalWriteFile: rr, getSourceFileWithCache: er, readFileWithCache: ye }; + } + e.changeCompilerHostLikeToUseCache = Q; + function le(Z, Be, ge) { + var Re; + return Re = e.addRange(Re, Z.getConfigFileParsingDiagnostics()), Re = e.addRange(Re, Z.getOptionsDiagnostics(ge)), Re = e.addRange(Re, Z.getSyntacticDiagnostics(Be, ge)), Re = e.addRange(Re, Z.getGlobalDiagnostics(ge)), Re = e.addRange(Re, Z.getSemanticDiagnostics(Be, ge)), e.getEmitDeclarations(Z.getCompilerOptions()) && (Re = e.addRange(Re, Z.getDeclarationDiagnostics(Be, ge))), e.sortAndDeduplicateDiagnostics(Re || e.emptyArray); + } + e.getPreEmitDiagnostics = le; + function N(Z, Be) { + for (var ge = "", Re = 0, ze = Z; Re < ze.length; Re++) { + var Ee = ze[Re]; + ge += p(Ee, Be); + } + return ge; + } + e.formatDiagnostics = N; + function p(Z, Be) { + var ge = "".concat(e.diagnosticCategoryName(Z), " TS").concat(Z.code, ": ").concat(O(Z.messageText, Be.getNewLine())).concat(Be.getNewLine()); + if (Z.file) { + var Re = e.getLineAndCharacterOfPosition(Z.file, Z.start), ze = Re.line, Ee = Re.character, He = Z.file.fileName, rr = e.convertToRelativePath(He, Be.getCurrentDirectory(), function(Ie) { + return Be.getCanonicalFileName(Ie); + }); + return "".concat(rr, "(").concat(ze + 1, ",").concat(Ee + 1, "): ") + ge; + } + return ge; + } + e.formatDiagnostic = p; + var m; + (function(Z) { + Z.Grey = "\x1B[90m", Z.Red = "\x1B[91m", Z.Yellow = "\x1B[93m", Z.Blue = "\x1B[94m", Z.Cyan = "\x1B[96m"; + })(m = e.ForegroundColorEscapeSequences || (e.ForegroundColorEscapeSequences = {})); + var G = "\x1B[7m", oe = " ", f = "\x1B[0m", T = "...", K = " ", b = " "; + function se(Z) { + switch (Z) { + case e.DiagnosticCategory.Error: + return m.Red; + case e.DiagnosticCategory.Warning: + return m.Yellow; + case e.DiagnosticCategory.Suggestion: + return e.Debug.fail("Should never get an Info diagnostic on the command line."); + case e.DiagnosticCategory.Message: + return m.Blue; + } + } + function J(Z, Be) { + return Be + Z + f; + } + e.formatColorAndReset = J; + function ie(Z, Be, ge, Re, ze, Ee) { + var He = e.getLineAndCharacterOfPosition(Z, Be), rr = He.line, Ie = He.character, _e = e.getLineAndCharacterOfPosition(Z, Be + ge), we = _e.line, de = _e.character, ye = e.getLineAndCharacterOfPosition(Z, Z.text.length).line, Ae = we - rr >= 4, er = (we + 1 + "").length; + Ae && (er = Math.max(T.length, er)); + for (var ir = "", Cr = rr; Cr <= we; Cr++) { + ir += Ee.getNewLine(), Ae && rr + 1 < Cr && Cr < we - 1 && (ir += Re + J(e.padLeft(T, er), G) + oe + Ee.getNewLine(), Cr = we - 1); + var Ye = e.getPositionOfLineAndCharacter(Z, Cr, 0), Br = Cr < ye ? e.getPositionOfLineAndCharacter(Z, Cr + 1, 0) : Z.text.length, Er = Z.text.slice(Ye, Br); + if (Er = e.trimStringEnd(Er), Er = Er.replace(/\t/g, " "), ir += Re + J(e.padLeft(Cr + 1 + "", er), G) + oe, ir += Er + Ee.getNewLine(), ir += Re + J(e.padLeft("", er), G) + oe, ir += ze, Cr === rr) { + var Ne = Cr === we ? de : void 0; + ir += Er.slice(0, Ie).replace(/\S/g, " "), ir += Er.slice(Ie, Ne).replace(/./g, "~"); + } else + Cr === we ? ir += Er.slice(0, de).replace(/./g, "~") : ir += Er.replace(/./g, "~"); + ir += f; + } + return ir; + } + function R(Z, Be, ge, Re) { + Re === void 0 && (Re = J); + var ze = e.getLineAndCharacterOfPosition(Z, Be), Ee = ze.line, He = ze.character, rr = ge ? e.convertToRelativePath(Z.fileName, ge.getCurrentDirectory(), function(_e) { + return ge.getCanonicalFileName(_e); + }) : Z.fileName, Ie = ""; + return Ie += Re(rr, m.Cyan), Ie += ":", Ie += Re("".concat(Ee + 1), m.Yellow), Ie += ":", Ie += Re("".concat(He + 1), m.Yellow), Ie; + } + e.formatLocation = R; + function q(Z, Be) { + for (var ge = "", Re = 0, ze = Z; Re < ze.length; Re++) { + var Ee = ze[Re]; + if (Ee.file) { + var He = Ee.file, rr = Ee.start; + ge += R(He, rr, Be), ge += " - "; + } + if (ge += J(e.diagnosticCategoryName(Ee), se(Ee.category)), ge += J(" TS".concat(Ee.code, ": "), m.Grey), ge += O(Ee.messageText, Be.getNewLine()), Ee.file && (ge += Be.getNewLine(), ge += ie(Ee.file, Ee.start, Ee.length, "", se(Ee.category), Be)), Ee.relatedInformation) { + ge += Be.getNewLine(); + for (var Ie = 0, _e = Ee.relatedInformation; Ie < _e.length; Ie++) { + var we = _e[Ie], He = we.file, rr = we.start, de = we.length, ye = we.messageText; + He && (ge += Be.getNewLine(), ge += K + R(He, rr, Be), ge += ie(He, rr, de, b, m.Cyan, Be)), ge += Be.getNewLine(), ge += b + O(ye, Be.getNewLine()); + } + } + ge += Be.getNewLine(); + } + return ge; + } + e.formatDiagnosticsWithColorAndContext = q; + function O(Z, Be, ge) { + if (ge === void 0 && (ge = 0), e.isString(Z)) + return Z; + if (Z === void 0) + return ""; + var Re = ""; + if (ge) { + Re += Be; + for (var ze = 0; ze < ge; ze++) + Re += " "; + } + if (Re += Z.messageText, ge++, Z.next) + for (var Ee = 0, He = Z.next; Ee < He.length; Ee++) { + var rr = He[Ee]; + Re += O(rr, Be, ge); + } + return Re; + } + e.flattenDiagnosticMessageText = O; + function ve(Z, Be, ge, Re, ze) { + if (Z.length === 0) + return []; + for (var Ee = [], He = new e.Map(), rr = 0, Ie = Z; rr < Ie.length; rr++) { + var _e = Ie[rr], we = void 0, de = ee(_e, Re), ye = e.isString(_e) ? _e : _e.fileName.toLowerCase(), Ae = de !== void 0 ? "".concat(de, "|").concat(ye) : ye; + He.has(Ae) ? we = He.get(Ae) : He.set(Ae, we = ze(ye, Be, ge, de)), Ee.push(we); + } + return Ee; + } + e.loadWithTypeDirectiveCache = ve; + function ee(Z, Be) { + return (e.isString(Z) ? Be : Z.resolutionMode) || Be; + } + e.getModeForFileReference = ee; + function he(Z, Be) { + if (Z.impliedNodeFormat !== void 0) + return x(Z, Fe(Z, Be)); + } + e.getModeForResolutionAtIndex = he; + function F(Z) { + var Be; + return e.isExportDeclaration(Z) ? Z.isTypeOnly : !!(!((Be = Z.importClause) === null || Be === void 0) && Be.isTypeOnly); + } + e.isExclusivelyTypeOnlyImportOrExport = F; + function x(Z, Be) { + var ge, Re; + if (Z.impliedNodeFormat !== void 0) { + if (e.isImportDeclaration(Be.parent) || e.isExportDeclaration(Be.parent)) { + var ze = F(Be.parent); + if (ze) { + var Ee = X(Be.parent.assertClause); + if (Ee) + return Ee; + } + } + if (Be.parent.parent && e.isImportTypeNode(Be.parent.parent)) { + var Ee = X((ge = Be.parent.parent.assertions) === null || ge === void 0 ? void 0 : ge.assertClause); + if (Ee) + return Ee; + } + if (Z.impliedNodeFormat !== e.ModuleKind.ESNext) + return e.isImportCall(e.walkUpParenthesizedExpressions(Be.parent)) ? e.ModuleKind.ESNext : e.ModuleKind.CommonJS; + var He = (Re = e.walkUpParenthesizedExpressions(Be.parent)) === null || Re === void 0 ? void 0 : Re.parent; + return He && e.isImportEqualsDeclaration(He) ? e.ModuleKind.CommonJS : e.ModuleKind.ESNext; + } + } + e.getModeForUsageLocation = x; + function X(Z, Be) { + if (!!Z) { + if (e.length(Z.elements) !== 1) { + Be == null || Be(Z, e.Diagnostics.Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require); + return; + } + var ge = Z.elements[0]; + if (!!e.isStringLiteralLike(ge.name)) { + if (ge.name.text !== "resolution-mode") { + Be == null || Be(ge.name, e.Diagnostics.resolution_mode_is_the_only_valid_key_for_type_import_assertions); + return; + } + if (!!e.isStringLiteralLike(ge.value)) { + if (ge.value.text !== "import" && ge.value.text !== "require") { + Be == null || Be(ge.value, e.Diagnostics.resolution_mode_should_be_either_require_or_import); + return; + } + return ge.value.text === "import" ? e.ModuleKind.ESNext : e.ModuleKind.CommonJS; + } + } + } + } + e.getResolutionModeOverrideForClause = X; + function $(Z, Be, ge, Re, ze) { + if (Z.length === 0) + return []; + for (var Ee = [], He = new e.Map(), rr = 0, Ie = 0, _e = Z; Ie < _e.length; Ie++) { + var we = _e[Ie], de = void 0, ye = he(Be, rr); + rr++; + var Ae = ye !== void 0 ? "".concat(ye, "|").concat(we) : we; + He.has(Ae) ? de = He.get(Ae) : He.set(Ae, de = ze(we, ye, ge, Re)), Ee.push(de); + } + return Ee; + } + e.loadWithModeAwareCache = $; + function A(Z, Be) { + return y(void 0, Z, function(ge, Re) { + return ge && Be(ge, Re); + }); + } + e.forEachResolvedProjectReference = A; + function y(Z, Be, ge, Re) { + var ze; + return Ee(Z, Be, void 0); + function Ee(He, rr, Ie) { + if (Re) { + var _e = Re(He, Ie); + if (_e) + return _e; + } + return e.forEach(rr, function(we, de) { + if (!(we && (ze == null ? void 0 : ze.has(we.sourceFile.path)))) { + var ye = ge(we, Ie, de); + return ye || !we ? ye : ((ze || (ze = new e.Set())).add(we.sourceFile.path), Ee(we.commandLine.projectReferences, we.references, we)); + } + }); + } + } + e.inferredTypesContainingFile = "__inferred type names__.ts"; + function V(Z) { + switch (Z == null ? void 0 : Z.kind) { + case e.FileIncludeKind.Import: + case e.FileIncludeKind.ReferenceFile: + case e.FileIncludeKind.TypeReferenceDirective: + case e.FileIncludeKind.LibReferenceDirective: + return true; + default: + return false; + } + } + e.isReferencedFile = V; + function L(Z) { + return Z.pos !== void 0; + } + e.isReferenceFileLocation = L; + function P(Z, Be) { + var ge, Re, ze, Ee, He, rr, Ie, _e = e.Debug.checkDefined(Z(Be.file)), we = Be.kind, de = Be.index, ye, Ae, er, ir; + switch (we) { + case e.FileIncludeKind.Import: + var Cr = Fe(_e, de); + if (er = (He = (Ee = _e.resolvedModules) === null || Ee === void 0 ? void 0 : Ee.get(Cr.text, he(_e, de))) === null || He === void 0 ? void 0 : He.packageId, Cr.pos === -1) + return { file: _e, packageId: er, text: Cr.text }; + ye = e.skipTrivia(_e.text, Cr.pos), Ae = Cr.end; + break; + case e.FileIncludeKind.ReferenceFile: + ge = _e.referencedFiles[de], ye = ge.pos, Ae = ge.end; + break; + case e.FileIncludeKind.TypeReferenceDirective: + Re = _e.typeReferenceDirectives[de], ye = Re.pos, Ae = Re.end, ir = Re.resolutionMode, er = (Ie = (rr = _e.resolvedTypeReferenceDirectiveNames) === null || rr === void 0 ? void 0 : rr.get(e.toFileNameLowerCase(_e.typeReferenceDirectives[de].fileName), ir || _e.impliedNodeFormat)) === null || Ie === void 0 ? void 0 : Ie.packageId; + break; + case e.FileIncludeKind.LibReferenceDirective: + ze = _e.libReferenceDirectives[de], ye = ze.pos, Ae = ze.end; + break; + default: + return e.Debug.assertNever(we); + } + return { file: _e, pos: ye, end: Ae, packageId: er }; + } + e.getReferencedFileLocation = P; + function k(Z, Be, ge, Re, ze, Ee, He, rr, Ie) { + if (!Z || (He == null ? void 0 : He()) || !e.arrayIsEqualTo(Z.getRootFileNames(), Be)) + return false; + var _e; + if (!e.arrayIsEqualTo(Z.getProjectReferences(), Ie, Ae) || Z.getSourceFiles().some(de) || Z.getMissingFilePaths().some(ze)) + return false; + var we = Z.getCompilerOptions(); + if (!e.compareDataObjects(we, ge)) + return false; + if (we.configFile && ge.configFile) + return we.configFile.text === ge.configFile.text; + return true; + function de(ir) { + return !ye(ir) || Ee(ir.path); + } + function ye(ir) { + return ir.version === Re(ir.resolvedPath, ir.fileName); + } + function Ae(ir, Cr, Ye) { + return e.projectReferenceIsEqualTo(ir, Cr) && er(Z.getResolvedProjectReferences()[Ye], ir); + } + function er(ir, Cr) { + if (ir) { + if (e.contains(_e, ir)) + return true; + var Ye = ne(Cr), Br = rr(Ye); + return !Br || ir.commandLine.options.configFile !== Br.options.configFile || !e.arrayIsEqualTo(ir.commandLine.fileNames, Br.fileNames) ? false : ((_e || (_e = [])).push(ir), !e.forEach(ir.references, function(Ne, n) { + return !er(Ne, ir.commandLine.projectReferences[n]); + })); + } + var Er = ne(Cr); + return !rr(Er); + } + } + e.isProgramUptoDate = k; + function Y(Z) { + return Z.options.configFile ? Ve(Ve([], Z.options.configFile.parseDiagnostics, true), Z.errors, true) : Z.errors; + } + e.getConfigFileParsingDiagnostics = Y; + function U(Z, Be, ge, Re) { + switch (e.getEmitModuleResolutionKind(Re)) { + case e.ModuleResolutionKind.Node16: + case e.ModuleResolutionKind.NodeNext: + return e.fileExtensionIsOneOf(Z, [".d.mts", ".mts", ".mjs"]) ? e.ModuleKind.ESNext : e.fileExtensionIsOneOf(Z, [".d.cts", ".cts", ".cjs"]) ? e.ModuleKind.CommonJS : e.fileExtensionIsOneOf(Z, [".d.ts", ".ts", ".tsx", ".js", ".jsx"]) ? ze() : void 0; + default: + return; + } + function ze() { + var Ee = e.getPackageScopeForPath(Z, Be, ge, Re); + return (Ee == null ? void 0 : Ee.packageJsonContent.type) === "module" ? e.ModuleKind.ESNext : e.ModuleKind.CommonJS; + } + } + e.getImpliedNodeFormatForFile = U, e.plainJSErrors = new e.Set([e.Diagnostics.Cannot_redeclare_block_scoped_variable_0.code, e.Diagnostics.A_module_cannot_have_multiple_default_exports.code, e.Diagnostics.Another_export_default_is_here.code, e.Diagnostics.The_first_export_default_is_here.code, e.Diagnostics.Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module.code, e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode.code, e.Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here.code, e.Diagnostics.constructor_is_a_reserved_word.code, e.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode.code, e.Diagnostics.Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode.code, e.Diagnostics.Invalid_use_of_0_Modules_are_automatically_in_strict_mode.code, e.Diagnostics.Invalid_use_of_0_in_strict_mode.code, e.Diagnostics.A_label_is_not_allowed_here.code, e.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode.code, e.Diagnostics.with_statements_are_not_allowed_in_strict_mode.code, e.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement.code, e.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement.code, e.Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name.code, e.Diagnostics.A_class_member_cannot_have_the_0_keyword.code, e.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name.code, e.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement.code, e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement.code, e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement.code, e.Diagnostics.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement.code, e.Diagnostics.A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration.code, e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context.code, e.Diagnostics.A_destructuring_declaration_must_have_an_initializer.code, e.Diagnostics.A_get_accessor_cannot_have_parameters.code, e.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern.code, e.Diagnostics.A_rest_element_cannot_have_a_property_name.code, e.Diagnostics.A_rest_element_cannot_have_an_initializer.code, e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern.code, e.Diagnostics.A_rest_parameter_cannot_have_an_initializer.code, e.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list.code, e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma.code, e.Diagnostics.A_return_statement_cannot_be_used_inside_a_class_static_block.code, e.Diagnostics.A_set_accessor_cannot_have_rest_parameter.code, e.Diagnostics.A_set_accessor_must_have_exactly_one_parameter.code, e.Diagnostics.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module.code, e.Diagnostics.An_export_declaration_cannot_have_modifiers.code, e.Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module.code, e.Diagnostics.An_import_declaration_cannot_have_modifiers.code, e.Diagnostics.An_object_member_cannot_be_declared_optional.code, e.Diagnostics.Argument_of_dynamic_import_cannot_be_spread_element.code, e.Diagnostics.Cannot_assign_to_private_method_0_Private_methods_are_not_writable.code, e.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause.code, e.Diagnostics.Catch_clause_variable_cannot_have_an_initializer.code, e.Diagnostics.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator.code, e.Diagnostics.Classes_can_only_extend_a_single_class.code, e.Diagnostics.Classes_may_not_have_a_field_named_constructor.code, e.Diagnostics.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code, e.Diagnostics.Duplicate_label_0.code, e.Diagnostics.Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments.code, e.Diagnostics.For_await_loops_cannot_be_used_inside_a_class_static_block.code, e.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression.code, e.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name.code, e.Diagnostics.JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array.code, e.Diagnostics.JSX_property_access_expressions_cannot_include_JSX_namespace_names.code, e.Diagnostics.Jump_target_cannot_cross_function_boundary.code, e.Diagnostics.Line_terminator_not_permitted_before_arrow.code, e.Diagnostics.Modifiers_cannot_appear_here.code, e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement.code, e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement.code, e.Diagnostics.Private_identifiers_are_not_allowed_outside_class_bodies.code, e.Diagnostics.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code, e.Diagnostics.Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier.code, e.Diagnostics.Tagged_template_expressions_are_not_permitted_in_an_optional_chain.code, e.Diagnostics.The_left_hand_side_of_a_for_of_statement_may_not_be_async.code, e.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer.code, e.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer.code, e.Diagnostics.Trailing_comma_not_allowed.code, e.Diagnostics.Variable_declaration_list_cannot_be_empty.code, e.Diagnostics._0_and_1_operations_cannot_be_mixed_without_parentheses.code, e.Diagnostics._0_expected.code, e.Diagnostics._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2.code, e.Diagnostics._0_list_cannot_be_empty.code, e.Diagnostics._0_modifier_already_seen.code, e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration.code, e.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element.code, e.Diagnostics._0_modifier_cannot_appear_on_a_parameter.code, e.Diagnostics._0_modifier_cannot_appear_on_class_elements_of_this_kind.code, e.Diagnostics._0_modifier_cannot_be_used_here.code, e.Diagnostics._0_modifier_must_precede_1_modifier.code, e.Diagnostics.const_declarations_can_only_be_declared_inside_a_block.code, e.Diagnostics.const_declarations_must_be_initialized.code, e.Diagnostics.extends_clause_already_seen.code, e.Diagnostics.let_declarations_can_only_be_declared_inside_a_block.code, e.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations.code]); + function j(Z, Be) { + return Z ? e.optionsHaveChanges(Z.getCompilerOptions(), Be, e.sourceFileAffectingCompilerOptions) : false; + } + function H(Z, Be, ge, Re, ze) { + return { rootNames: Z, options: Be, host: ge, oldProgram: Re, configFileParsingDiagnostics: ze }; + } + function I(Z, Be, ge, Re, ze) { + var Ee, He, rr, Ie, _e = e.isArray(Z) ? H(Z, Be, ge, Re, ze) : Z, we = _e.rootNames, de = _e.options, ye = _e.configFileParsingDiagnostics, Ae = _e.projectReferences, er = _e.oldProgram, ir, Cr, Ye, Br, Er, Ne, n, lr = new e.Map(), be = e.createMultiMap(), Ge = {}, ur = {}, yr = e.createModeAwareCache(), Ir, wr = typeof de.maxNodeModuleJsDepth == "number" ? de.maxNodeModuleJsDepth : 0, Ur = 0, ii = new e.Map(), mi = new e.Map(); + e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "createProgram", { configFilePath: de.configFilePath, rootDir: de.rootDir }, true), e.performance.mark("beforeProgram"); + var pe = _e.host || B(de), or = fe(pe), qr = de.noLib, si = e.memoize(function() { + return pe.getDefaultLibFileName(de); + }), Di = pe.getDefaultLibLocation ? pe.getDefaultLibLocation() : e.getDirectoryPath(si()), wi = e.createDiagnosticCollection(), Xi = pe.getCurrentDirectory(), et = e.getSupportedExtensions(de), Gi = e.getSupportedExtensionsWithJsonIfResolveJsonModule(de, et), Wt = new e.Map(), Zt, _r, pi, ae, Xe = pe.hasInvalidatedResolution || e.returnFalse; + if (pe.resolveModuleNames) + ae = function(Kr, _i, Ei, tt, kt) { + return pe.resolveModuleNames(e.Debug.checkEachDefined(Kr), Ei, tt, kt, de, _i).map(function(bt) { + if (!bt || bt.extension !== void 0) + return bt; + var ia = e.clone(bt); + return ia.extension = e.extensionFromPath(bt.resolvedFileName), ia; + }); + }, _r = (Ee = pe.getModuleResolutionCache) === null || Ee === void 0 ? void 0 : Ee.call(pe); + else { + _r = e.createModuleResolutionCache(Xi, ua, de); + var Jr = function(Kr, _i, Ei, tt) { + return e.resolveModuleName(Kr, Ei, de, pe, _r, tt, _i).resolvedModule; + }; + ae = function(Kr, _i, Ei, tt, kt) { + return $(e.Debug.checkEachDefined(Kr), _i, Ei, kt, Jr); + }; + } + var ti; + if (pe.resolveTypeReferenceDirectives) + ti = function(Kr, _i, Ei, tt) { + return pe.resolveTypeReferenceDirectives(e.Debug.checkEachDefined(Kr), _i, Ei, de, tt); + }; + else { + pi = e.createTypeReferenceDirectiveResolutionCache(Xi, ua, void 0, _r == null ? void 0 : _r.getPackageJsonInfoCache()); + var Ze = function(Kr, _i, Ei, tt) { + return e.resolveTypeReferenceDirective(Kr, _i, de, pe, Ei, pi, tt).resolvedTypeReferenceDirective; + }; + ti = function(Kr, _i, Ei, tt) { + return ve(e.Debug.checkEachDefined(Kr), _i, Ei, tt, Ze); + }; + } + var Sr = new e.Map(), zr = new e.Map(), Wr = e.createMultiMap(), Je = false, xe = new e.Map(), vr, mr = pe.useCaseSensitiveFileNames() ? new e.Map() : void 0, Ar, Oe, nr, Mr, Pe = !!(!((He = pe.useSourceOfProjectReferenceRedirect) === null || He === void 0) && He.call(pe)) && !de.disableSourceOfProjectReferenceRedirect, Ue = l({ compilerHost: pe, getSymlinkCache: vc, useSourceOfProjectReferenceRedirect: Pe, toPath: Vi, getResolvedProjectReferences: Ba, getSourceOfProjectReferenceRedirect: ce, forEachResolvedProjectReference: Ji }), fr = Ue.onProgramCreateComplete, De = Ue.fileExists, gr = Ue.directoryExists, Vr = pe.readFile.bind(pe); + e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "shouldProgramCreateNewSourceFiles", { hasOldProgram: !!er }); + var Tr = j(er, de); + e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + var vi; + if (e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "tryReuseStructureFromOldProgram", {}), vi = Qa(), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), vi !== 2) { + ir = [], Cr = [], Ae && (Ar || (Ar = Ae.map(fo)), we.length && (Ar == null || Ar.forEach(function(Kr, _i) { + if (!!Kr) { + var Ei = e.outFile(Kr.commandLine.options); + if (Pe) { + if (Ei || e.getEmitModuleKind(Kr.commandLine.options) === e.ModuleKind.None) + for (var tt = 0, kt = Kr.commandLine.fileNames; tt < kt.length; tt++) { + var bt = kt[tt]; + ys(bt, { kind: e.FileIncludeKind.SourceFromProjectReference, index: _i }); + } + } else if (Ei) + ys(e.changeExtension(Ei, ".d.ts"), { kind: e.FileIncludeKind.OutputFromProjectReference, index: _i }); + else if (e.getEmitModuleKind(Kr.commandLine.options) === e.ModuleKind.None) + for (var ia = e.memoize(function() { + return e.getCommonSourceDirectoryOfConfig(Kr.commandLine, !pe.useCaseSensitiveFileNames()); + }), Xt = 0, Za = Kr.commandLine.fileNames; Xt < Za.length; Xt++) { + var bt = Za[Xt]; + !e.isDeclarationFileName(bt) && !e.fileExtensionIs(bt, ".json") && ys(e.getOutputDeclarationFileName(bt, Kr.commandLine, !pe.useCaseSensitiveFileNames(), ia), { kind: e.FileIncludeKind.OutputFromProjectReference, index: _i }); + } + } + }))), e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "processRootFiles", { count: we.length }), e.forEach(we, function(Kr, _i) { + return Qi(Kr, false, false, { kind: e.FileIncludeKind.RootFile, index: _i }); + }), e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + var Ui = we.length ? e.getAutomaticTypeDirectiveNames(de, pe) : e.emptyArray; + if (Ui.length) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "processTypeReferences", { count: Ui.length }); + for (var Yi = de.configFilePath ? e.getDirectoryPath(de.configFilePath) : pe.getCurrentDirectory(), Wi = e.combinePaths(Yi, e.inferredTypesContainingFile), ct = Bt(Ui, Wi), Li = 0; Li < Ui.length; Li++) + Hr(Ui[Li], void 0, ct[Li], { kind: e.FileIncludeKind.AutomaticTypeDirectiveFile, typeReference: Ui[Li], packageId: (rr = ct[Li]) === null || rr === void 0 ? void 0 : rr.packageId }); + e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + if (we.length && !qr) { + var nt = si(); + !de.lib && nt ? Qi(nt, true, false, { kind: e.FileIncludeKind.LibFile }) : e.forEach(de.lib, function(Kr, _i) { + Qi(Pt(Kr), true, false, { kind: e.FileIncludeKind.LibFile, index: _i }); + }); + } + vr = e.arrayFrom(e.mapDefinedIterator(xe.entries(), function(Kr) { + var _i = Kr[0], Ei = Kr[1]; + return Ei === void 0 ? _i : void 0; + })), Ye = e.stableSort(ir, Ai).concat(Cr), ir = void 0, Cr = void 0; + } + if (e.Debug.assert(!!vr), er && pe.onReleaseOldSourceFile) { + for (var Mt = er.getSourceFiles(), xt = 0, ut = Mt; xt < ut.length; xt++) { + var Dt = ut[xt], Rt = Da(Dt.resolvedPath); + (Tr || !Rt || Dt.resolvedPath === Dt.path && Rt.resolvedPath !== Dt.path) && pe.onReleaseOldSourceFile(Dt, er.getCompilerOptions(), !!Da(Dt.path)); + } + pe.getParsedCommandLine || er.forEachResolvedProjectReference(function(Kr) { + yi(Kr.sourceFile.path) || pe.onReleaseOldSourceFile(Kr.sourceFile, er.getCompilerOptions(), false); + }); + } + er && pe.onReleaseParsedCommandLine && y(er.getProjectReferences(), er.getResolvedProjectReferences(), function(Kr, _i, Ei) { + var tt = (_i == null ? void 0 : _i.commandLine.projectReferences[Ei]) || er.getProjectReferences()[Ei], kt = ne(tt); + Oe != null && Oe.has(Vi(kt)) || pe.onReleaseParsedCommandLine(kt, Kr, er.getCompilerOptions()); + }), pi = void 0, er = void 0; + var Ii = { getRootFileNames: function() { + return we; + }, getSourceFile: Rn, getSourceFileByPath: Da, getSourceFiles: function() { + return Ye; + }, getMissingFilePaths: function() { + return vr; + }, getModuleResolutionCache: function() { + return _r; + }, getFilesByNameMap: function() { + return xe; + }, getCompilerOptions: function() { + return de; + }, getSyntacticDiagnostics: Ro, getOptionsDiagnostics: br, getGlobalDiagnostics: Si, getSemanticDiagnostics: En, getCachedSemanticDiagnostics: Wn, getSuggestionDiagnostics: dn, getDeclarationDiagnostics: Ko, getBindAndCheckDiagnostics: to, getProgramDiagnostics: Co, getTypeChecker: xn, getClassifiableNames: At, getCommonSourceDirectory: at, emit: Kn, getCurrentDirectory: function() { + return Xi; + }, getNodeCount: function() { + return xn().getNodeCount(); + }, getIdentifierCount: function() { + return xn().getIdentifierCount(); + }, getSymbolCount: function() { + return xn().getSymbolCount(); + }, getTypeCount: function() { + return xn().getTypeCount(); + }, getInstantiationCount: function() { + return xn().getInstantiationCount(); + }, getRelationCacheSizes: function() { + return xn().getRelationCacheSizes(); + }, getFileProcessingDiagnostics: function() { + return Ir; + }, getResolvedTypeReferenceDirectives: function() { + return yr; + }, isSourceFileFromExternalLibrary: Bi, isSourceFileDefaultLibrary: kn, getSourceFileFromReference: mo, getLibFileFromReference: qn, sourceFileToPackageName: zr, redirectTargetsMap: Wr, usesUriStyleNodeCoreModules: Je, isEmittedFile: Ya, getConfigFileParsingDiagnostics: Pi, getResolvedModuleWithFailedLookupLocationsFromCache: ji, getProjectReferences: pn, getResolvedProjectReferences: Ba, getProjectReferenceRedirect: ps, getResolvedProjectReferenceToRedirect: ds, getResolvedProjectReferenceByPath: yi, forEachResolvedProjectReference: Ji, isSourceOfProjectReferenceRedirect: Rr, emitBuildInfo: ka, fileExists: De, readFile: Vr, directoryExists: gr, getSymlinkCache: vc, realpath: (Ie = pe.realpath) === null || Ie === void 0 ? void 0 : Ie.bind(pe), useCaseSensitiveFileNames: function() { + return pe.useCaseSensitiveFileNames(); + }, getFileIncludeReasons: function() { + return be; + }, structureIsReused: vi, writeFile: Dn }; + return fr(), Ir == null || Ir.forEach(function(Kr) { + switch (Kr.kind) { + case 1: + return wi.add(Fo(Kr.file && Da(Kr.file), Kr.fileProcessingReason, Kr.diagnostic, Kr.args || e.emptyArray)); + case 0: + var _i = P(Da, Kr.reason), Ei = _i.file, tt = _i.pos, kt = _i.end; + return wi.add(e.createFileDiagnostic.apply(void 0, Ve([Ei, e.Debug.checkDefined(tt), e.Debug.checkDefined(kt) - tt, Kr.diagnostic], Kr.args || e.emptyArray, false))); + default: + e.Debug.assertNever(Kr); + } + }), xs(), e.performance.mark("afterProgram"), e.performance.measure("Program", "beforeProgram", "afterProgram"), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), Ii; + function Ki(Kr) { + if (!!Kr) + for (var _i = 0, Ei = Kr; _i < Ei.length; _i++) { + var tt = Ei[_i]; + wi.add(tt); + } + } + function Fi(Kr, _i) { + var Ei; + if (!!_r) + for (var tt = e.getNormalizedAbsolutePath(_i.originalFileName, Xi), kt = e.isString(_i) ? void 0 : _i.impliedNodeFormat, bt = e.getDirectoryPath(tt), ia = wt(_i), Xt = 0, Za = 0, bn = Kr; Za < bn.length; Za++) { + var _a = bn[Za], qa = typeof _a == "string" ? he(_i, Xt) : ee(_a, kt), rn = typeof _a == "string" ? _a : _a.fileName; + if (Xt++, !e.isExternalModuleNameRelative(rn)) { + var jn = (Ei = _r.getOrCreateCacheForModuleName(rn, qa, ia).get(bt)) === null || Ei === void 0 ? void 0 : Ei.resolutionDiagnostics; + Ki(jn); + } + } + } + function ui(Kr, _i, Ei) { + if (!Kr.length) + return e.emptyArray; + var tt = e.getNormalizedAbsolutePath(_i.originalFileName, Xi), kt = wt(_i); + e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "resolveModuleNamesWorker", { containingFileName: tt }), e.performance.mark("beforeResolveModule"); + var bt = ae(Kr, _i, tt, Ei, kt); + return e.performance.mark("afterResolveModule"), e.performance.measure("ResolveModule", "beforeResolveModule", "afterResolveModule"), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), Fi(Kr, _i), bt; + } + function Bt(Kr, _i) { + if (!Kr.length) + return []; + var Ei = e.isString(_i) ? _i : e.getNormalizedAbsolutePath(_i.originalFileName, Xi), tt = e.isString(_i) ? void 0 : wt(_i), kt = e.isString(_i) ? void 0 : _i.impliedNodeFormat; + e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "resolveTypeReferenceDirectiveNamesWorker", { containingFileName: Ei }), e.performance.mark("beforeResolveTypeReference"); + var bt = ti(Kr, Ei, tt, kt); + return e.performance.mark("afterResolveTypeReference"), e.performance.measure("ResolveTypeReference", "beforeResolveTypeReference", "afterResolveTypeReference"), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), bt; + } + function wt(Kr) { + var _i = ds(Kr.originalFileName); + if (_i || !e.isDeclarationFileName(Kr.originalFileName)) + return _i; + var Ei = na(Kr.path); + if (Ei) + return Ei; + if (!(!pe.realpath || !de.preserveSymlinks || !e.stringContains(Kr.originalFileName, e.nodeModulesPathPart))) { + var tt = Vi(pe.realpath(Kr.originalFileName)); + return tt === Kr.path ? void 0 : na(tt); + } + } + function na(Kr) { + var _i = ce(Kr); + if (e.isString(_i)) + return ds(_i); + if (!!_i) + return Ji(function(Ei) { + var tt = e.outFile(Ei.commandLine.options); + if (!!tt) + return Vi(tt) === Kr ? Ei : void 0; + }); + } + function Ai(Kr, _i) { + return e.compareValues(Oi(Kr), Oi(_i)); + } + function Oi(Kr) { + if (e.containsPath(Di, Kr.fileName, false)) { + var _i = e.getBaseFileName(Kr.fileName); + if (_i === "lib.d.ts" || _i === "lib.es6.d.ts") + return 0; + var Ei = e.removeSuffix(e.removePrefix(_i, "lib."), ".d.ts"), tt = e.libs.indexOf(Ei); + if (tt !== -1) + return tt + 1; + } + return e.libs.length + 2; + } + function ji(Kr, _i, Ei) { + return _r && e.resolveModuleNameFromCache(Kr, _i, _r, Ei); + } + function Vi(Kr) { + return e.toPath(Kr, Xi, ua); + } + function at() { + if (Er === void 0) { + var Kr = e.filter(Ye, function(_i) { + return e.sourceFileMayBeEmitted(_i, Ii); + }); + Er = e.getCommonSourceDirectory(de, function() { + return e.mapDefined(Kr, function(_i) { + return _i.isDeclarationFile ? void 0 : _i.fileName; + }); + }, Xi, ua, function(_i) { + return jr(Kr, _i); + }); + } + return Er; + } + function At() { + var Kr; + if (!n) { + xn(), n = new e.Set(); + for (var _i = 0, Ei = Ye; _i < Ei.length; _i++) { + var tt = Ei[_i]; + (Kr = tt.classifiableNames) === null || Kr === void 0 || Kr.forEach(function(kt) { + return n.add(kt); + }); + } + } + return n; + } + function ba(Kr, _i) { + if (vi === 0 && !_i.ambientModuleNames.length) + return ui(Kr, _i, void 0); + var Ei = er && er.getSourceFile(_i.fileName); + if (Ei !== _i && _i.resolvedModules) { + for (var tt = [], kt = 0, bt = 0, ia = Kr; bt < ia.length; bt++) { + var Xt = ia[bt], Za = _i.resolvedModules.get(Xt, he(_i, kt)); + kt++, tt.push(Za); + } + return tt; + } + for (var bn, _a, qa, rn = {}, kt = 0; kt < Kr.length; kt++) { + var Xt = Kr[kt]; + if (_i === Ei && !Xe(Ei.path)) { + var jn = e.getResolvedModule(Ei, Xt, he(Ei, kt)); + if (jn) { + e.isTraceEnabled(de, pe) && e.trace(pe, jn.packageId ? e.Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3 : e.Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2, Xt, e.getNormalizedAbsolutePath(_i.originalFileName, Xi), jn.resolvedFileName, jn.packageId && e.packageIdToString(jn.packageId)), (_a || (_a = new Array(Kr.length)))[kt] = jn, (qa || (qa = [])).push(Xt); + continue; + } + } + var Mo = false; + e.contains(_i.ambientModuleNames, Xt) ? (Mo = true, e.isTraceEnabled(de, pe) && e.trace(pe, e.Diagnostics.Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1, Xt, e.getNormalizedAbsolutePath(_i.originalFileName, Xi))) : Mo = Se(Xt, kt), Mo ? (_a || (_a = new Array(Kr.length)))[kt] = rn : (bn || (bn = [])).push(Xt); + } + var ho = bn && bn.length ? ui(bn, _i, qa) : e.emptyArray; + if (!_a) + return e.Debug.assert(ho.length === Kr.length), ho; + for (var gs = 0, kt = 0; kt < _a.length; kt++) + _a[kt] ? _a[kt] === rn && (_a[kt] = void 0) : (_a[kt] = ho[gs], gs++); + return e.Debug.assert(gs === ho.length), _a; + function Se(hr, Or) { + if (Or >= e.length(Ei == null ? void 0 : Ei.imports) + e.length(Ei == null ? void 0 : Ei.moduleAugmentations)) + return false; + var ki = e.getResolvedModule(Ei, hr, Ei && he(Ei, Or)), dt = ki && er.getSourceFile(ki.resolvedFileName); + if (ki && dt) + return false; + var la = lr.get(hr); + return la ? (e.isTraceEnabled(de, pe) && e.trace(pe, e.Diagnostics.Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified, hr, la), true) : false; + } + } + function $a() { + return !y(er.getProjectReferences(), er.getResolvedProjectReferences(), function(Kr, _i, Ei) { + var tt = (_i ? _i.commandLine.projectReferences : Ae)[Ei], kt = fo(tt); + return Kr ? !kt || kt.sourceFile !== Kr.sourceFile || !e.arrayIsEqualTo(Kr.commandLine.fileNames, kt.commandLine.fileNames) : kt !== void 0; + }, function(Kr, _i) { + var Ei = _i ? yi(_i.sourceFile.path).commandLine.projectReferences : Ae; + return !e.arrayIsEqualTo(Kr, Ei, e.projectReferenceIsEqualTo); + }); + } + function Qa() { + var Kr; + if (!er) + return 0; + var _i = er.getCompilerOptions(); + if (e.changesAffectModuleResolution(_i, de)) + return 0; + var Ei = er.getRootFileNames(); + if (!e.arrayIsEqualTo(Ei, we) || !$a()) + return 0; + Ae && (Ar = Ae.map(fo)); + var tt = [], kt = []; + if (vi = 2, er.getMissingFilePaths().some(function(Ls) { + return pe.fileExists(Ls); + })) + return 0; + var bt = er.getSourceFiles(), ia; + (function(Ls) { + Ls[Ls.Exists = 0] = "Exists", Ls[Ls.Modified = 1] = "Modified"; + })(ia || (ia = {})); + for (var Xt = new e.Map(), Za = 0, bn = bt; Za < bn.length; Za++) { + var _a = bn[Za], qa = pe.getSourceFileByPath ? pe.getSourceFileByPath(_a.fileName, _a.resolvedPath, Xs(_a.fileName, _r, pe, de), void 0, Tr) : pe.getSourceFile(_a.fileName, Xs(_a.fileName, _r, pe, de), void 0, Tr); + if (!qa) + return 0; + e.Debug.assert(!qa.redirectInfo, "Host should not return a redirect source file from `getSourceFile`"); + var rn = void 0; + if (_a.redirectInfo) { + if (qa !== _a.redirectInfo.unredirected) + return 0; + rn = false, qa = _a; + } else if (er.redirectTargetsMap.has(_a.path)) { + if (qa !== _a) + return 0; + rn = false; + } else + rn = qa !== _a; + qa.path = _a.path, qa.originalFileName = _a.originalFileName, qa.resolvedPath = _a.resolvedPath, qa.fileName = _a.fileName; + var jn = er.sourceFileToPackageName.get(_a.path); + if (jn !== void 0) { + var Mo = Xt.get(jn), ho = rn ? 1 : 0; + if (Mo !== void 0 && ho === 1 || Mo === 1) + return 0; + Xt.set(jn, ho); + } + rn ? (e.arrayIsEqualTo(_a.libReferenceDirectives, qa.libReferenceDirectives, Ct) || (vi = 1), _a.hasNoDefaultLib !== qa.hasNoDefaultLib && (vi = 1), e.arrayIsEqualTo(_a.referencedFiles, qa.referencedFiles, Ct) || (vi = 1), Wa(qa), e.arrayIsEqualTo(_a.imports, qa.imports, sa) || (vi = 1), e.arrayIsEqualTo(_a.moduleAugmentations, qa.moduleAugmentations, sa) || (vi = 1), (_a.flags & 6291456) !== (qa.flags & 6291456) && (vi = 1), e.arrayIsEqualTo(_a.typeReferenceDirectives, qa.typeReferenceDirectives, Ct) || (vi = 1), kt.push({ oldFile: _a, newFile: qa })) : Xe(_a.path) && (vi = 1, kt.push({ oldFile: _a, newFile: qa })), tt.push(qa); + } + if (vi !== 2) + return vi; + for (var gs = kt.map(function(Ls) { + return Ls.oldFile; + }), Se = 0, hr = bt; Se < hr.length; Se++) { + var Or = hr[Se]; + if (!e.contains(gs, Or)) + for (var ki = 0, dt = Or.ambientModuleNames; ki < dt.length; ki++) { + var la = dt[ki]; + lr.set(la, Or.fileName); + } + } + for (var wa = 0, On = kt; wa < On.length; wa++) { + var No = On[wa], _a = No.oldFile, qa = No.newFile, jo = We(qa), po = ba(jo, qa), Gn = e.hasChangesInResolutions(jo, po, _a.resolvedModules, _a, e.moduleResolutionIsEqualTo); + Gn ? (vi = 1, qa.resolvedModules = e.zipToModeAwareCache(qa, jo, po)) : qa.resolvedModules = _a.resolvedModules; + var $n = qa.typeReferenceDirectives, Ho = Bt($n, qa), Zo = e.hasChangesInResolutions($n, Ho, _a.resolvedTypeReferenceDirectiveNames, _a, e.typeDirectiveIsEqualTo); + Zo ? (vi = 1, qa.resolvedTypeReferenceDirectiveNames = e.zipToModeAwareCache(qa, $n, Ho)) : qa.resolvedTypeReferenceDirectiveNames = _a.resolvedTypeReferenceDirectiveNames; + } + if (vi !== 2) + return vi; + if (e.changesAffectingProgramStructure(_i, de) || ((Kr = pe.hasChangedAutomaticTypeDirectiveNames) === null || Kr === void 0 ? void 0 : Kr.call(pe))) + return 1; + vr = er.getMissingFilePaths(), e.Debug.assert(tt.length === er.getSourceFiles().length); + for (var Es = 0, yc = tt; Es < yc.length; Es++) { + var qa = yc[Es]; + xe.set(qa.path, qa); + } + var Xr = er.getFilesByNameMap(); + return Xr.forEach(function(Ls, Ic) { + if (!Ls) { + xe.set(Ic, Ls); + return; + } + if (Ls.path === Ic) { + er.isSourceFileFromExternalLibrary(Ls) && mi.set(Ls.path, true); + return; + } + xe.set(Ic, xe.get(Ls.path)); + }), Ye = tt, be = er.getFileIncludeReasons(), Ir = er.getFileProcessingDiagnostics(), yr = er.getResolvedTypeReferenceDirectives(), zr = er.sourceFileToPackageName, Wr = er.redirectTargetsMap, Je = er.usesUriStyleNodeCoreModules, 2; + } + function ai(Kr) { + return { getPrependNodes: Cn, getCanonicalFileName: ua, getCommonSourceDirectory: Ii.getCommonSourceDirectory, getCompilerOptions: Ii.getCompilerOptions, getCurrentDirectory: function() { + return Xi; + }, getNewLine: function() { + return pe.getNewLine(); + }, getSourceFile: Ii.getSourceFile, getSourceFileByPath: Ii.getSourceFileByPath, getSourceFiles: Ii.getSourceFiles, getLibFileFromReference: Ii.getLibFileFromReference, isSourceFileFromExternalLibrary: Bi, getResolvedProjectReferenceToRedirect: ds, getProjectReferenceRedirect: ps, isSourceOfProjectReferenceRedirect: Rr, getSymlinkCache: vc, writeFile: Kr || Dn, isEmitBlocked: Pn, readFile: function(_i) { + return pe.readFile(_i); + }, fileExists: function(_i) { + var Ei = Vi(_i); + return Da(Ei) ? true : e.contains(vr, Ei) ? false : pe.fileExists(_i); + }, useCaseSensitiveFileNames: function() { + return pe.useCaseSensitiveFileNames(); + }, getProgramBuildInfo: function() { + return Ii.getProgramBuildInfo && Ii.getProgramBuildInfo(); + }, getSourceFileFromReference: function(_i, Ei) { + return Ii.getSourceFileFromReference(_i, Ei); + }, redirectTargetsMap: Wr, getFileIncludeReasons: Ii.getFileIncludeReasons }; + } + function Dn(Kr, _i, Ei, tt, kt, bt) { + pe.writeFile(Kr, _i, Ei, tt, kt, bt); + } + function ka(Kr) { + e.Debug.assert(!e.outFile(de)), e.tracing === null || e.tracing === void 0 || e.tracing.push("emit", "emitBuildInfo", {}, true), e.performance.mark("beforeEmit"); + var _i = e.emitFiles(e.notImplementedResolver, ai(Kr), void 0, e.noTransformers, false, true); + return e.performance.mark("afterEmit"), e.performance.measure("Emit", "beforeEmit", "afterEmit"), e.tracing === null || e.tracing === void 0 || e.tracing.pop(), _i; + } + function Ba() { + return Ar; + } + function pn() { + return Ae; + } + function Cn() { + return g(Ae, function(Kr, _i) { + var Ei; + return (Ei = Ar[_i]) === null || Ei === void 0 ? void 0 : Ei.commandLine; + }, function(Kr) { + var _i = Vi(Kr), Ei = Da(_i); + return Ei ? Ei.text : xe.has(_i) ? void 0 : pe.readFile(_i); + }); + } + function Bi(Kr) { + return !!mi.get(Kr.path); + } + function kn(Kr) { + if (!Kr.isDeclarationFile) + return false; + if (Kr.hasNoDefaultLib) + return true; + if (!de.noLib) + return false; + var _i = pe.useCaseSensitiveFileNames() ? e.equateStringsCaseSensitive : e.equateStringsCaseInsensitive; + return de.lib ? e.some(de.lib, function(Ei) { + return _i(Kr.fileName, Pt(Ei)); + }) : _i(Kr.fileName, si()); + } + function xn() { + return Ne || (Ne = e.createTypeChecker(Ii)); + } + function Kn(Kr, _i, Ei, tt, kt, bt) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("emit", "emit", { path: Kr == null ? void 0 : Kr.path }, true); + var ia = no(function() { + return eo(Ii, Kr, _i, Ei, tt, kt, bt); + }); + return e.tracing === null || e.tracing === void 0 || e.tracing.pop(), ia; + } + function Pn(Kr) { + return Wt.has(Vi(Kr)); + } + function eo(Kr, _i, Ei, tt, kt, bt, ia) { + if (!ia) { + var Xt = d(Kr, _i, Ei, tt); + if (Xt) + return Xt; + } + var Za = xn().getEmitResolver(e.outFile(de) ? void 0 : _i, tt); + e.performance.mark("beforeEmit"); + var bn = e.emitFiles(Za, ai(Ei), _i, e.getTransformers(de, bt, kt), kt, false, ia); + return e.performance.mark("afterEmit"), e.performance.measure("Emit", "beforeEmit", "afterEmit"), bn; + } + function Rn(Kr) { + return Da(Vi(Kr)); + } + function Da(Kr) { + return xe.get(Kr) || void 0; + } + function bo(Kr, _i, Ei) { + return Kr ? _i(Kr, Ei) : e.sortAndDeduplicateDiagnostics(e.flatMap(Ii.getSourceFiles(), function(tt) { + return Ei && Ei.throwIfCancellationRequested(), _i(tt, Ei); + })); + } + function Ro(Kr, _i) { + return bo(Kr, Oo, _i); + } + function En(Kr, _i) { + return bo(Kr, $o, _i); + } + function Wn(Kr) { + var _i; + return Kr ? (_i = Ge.perFile) === null || _i === void 0 ? void 0 : _i.get(Kr.path) : Ge.allDiagnostics; + } + function to(Kr, _i) { + return Pr(Kr, _i); + } + function Co(Kr) { + var _i; + if (e.skipTypeChecking(Kr, de, Ii)) + return e.emptyArray; + var Ei = wi.getDiagnostics(Kr.fileName); + return !((_i = Kr.commentDirectives) === null || _i === void 0) && _i.length ? pa(Kr, Kr.commentDirectives, Ei).diagnostics : Ei; + } + function Ko(Kr, _i) { + var Ei = Ii.getCompilerOptions(); + return !Kr || e.outFile(Ei) ? Gr(Kr, _i) : bo(Kr, qe, _i); + } + function Oo(Kr) { + return e.isSourceFileJS(Kr) ? (Kr.additionalSyntacticDiagnostics || (Kr.additionalSyntacticDiagnostics = Qe(Kr)), e.concatenate(Kr.additionalSyntacticDiagnostics, Kr.parseDiagnostics)) : Kr.parseDiagnostics; + } + function no(Kr) { + try { + return Kr(); + } catch (_i) { + throw _i instanceof e.OperationCanceledException && (Ne = void 0), _i; + } + } + function $o(Kr, _i) { + return e.concatenate(D(Pr(Kr, _i), de), Co(Kr)); + } + function Pr(Kr, _i) { + return Ce(Kr, _i, Ge, xi); + } + function xi(Kr, _i) { + return no(function() { + if (e.skipTypeChecking(Kr, de, Ii)) + return e.emptyArray; + var Ei = xn(); + e.Debug.assert(!!Kr.bindDiagnostics); + var tt = Kr.scriptKind === 1 || Kr.scriptKind === 2, kt = tt && e.isCheckJsEnabledForFile(Kr, de), bt = e.isPlainJsFile(Kr, de.checkJs), ia = !!Kr.checkJsDirective && Kr.checkJsDirective.enabled === false, Xt = !ia && (Kr.scriptKind === 3 || Kr.scriptKind === 4 || Kr.scriptKind === 5 || bt || kt || Kr.scriptKind === 7), Za = Xt ? Kr.bindDiagnostics : e.emptyArray, bn = Xt ? Ei.getDiagnostics(Kr, _i) : e.emptyArray; + return bt && (Za = e.filter(Za, function(_a) { + return e.plainJSErrors.has(_a.code); + }), bn = e.filter(bn, function(_a) { + return e.plainJSErrors.has(_a.code); + })), St(Kr, Xt && !bt, Za, bn, kt ? Kr.jsDocDiagnostics : void 0); + }); + } + function St(Kr, _i) { + for (var Ei, tt = [], kt = 2; kt < arguments.length; kt++) + tt[kt - 2] = arguments[kt]; + var bt = e.flatten(tt); + if (!_i || !(!((Ei = Kr.commentDirectives) === null || Ei === void 0) && Ei.length)) + return bt; + for (var ia = pa(Kr, Kr.commentDirectives, bt), Xt = ia.diagnostics, Za = ia.directives, bn = 0, _a = Za.getUnusedExpectations(); bn < _a.length; bn++) { + var qa = _a[bn]; + Xt.push(e.createDiagnosticForRange(Kr, qa.range, e.Diagnostics.Unused_ts_expect_error_directive)); + } + return Xt; + } + function pa(Kr, _i, Ei) { + var tt = e.createCommentDirectivesMap(Kr, _i), kt = Ei.filter(function(bt) { + return Jn(bt, tt) === -1; + }); + return { diagnostics: kt, directives: tt }; + } + function dn(Kr, _i) { + return no(function() { + return xn().getSuggestionDiagnostics(Kr, _i); + }); + } + function Jn(Kr, _i) { + var Ei = Kr.file, tt = Kr.start; + if (!Ei) + return -1; + for (var kt = e.getLineStarts(Ei), bt = e.computeLineAndCharacterOfPosition(kt, tt).line - 1; bt >= 0; ) { + if (_i.markUsed(bt)) + return bt; + var ia = Ei.text.slice(kt[bt], kt[bt + 1]).trim(); + if (ia !== "" && !/^(\s*)\/\/(.*)$/.test(ia)) + return -1; + bt--; + } + return -1; + } + function Qe(Kr) { + return no(function() { + var _i = []; + return Ei(Kr, Kr), e.forEachChildRecursively(Kr, Ei, tt), _i; + function Ei(Xt, Za) { + switch (Za.kind) { + case 164: + case 167: + case 169: + if (Za.questionToken === Xt) + return _i.push(ia(Xt, e.Diagnostics.The_0_modifier_can_only_be_used_in_TypeScript_files, "?")), "skip"; + case 168: + case 171: + case 172: + case 173: + case 213: + case 256: + case 214: + case 254: + if (Za.type === Xt) + return _i.push(ia(Xt, e.Diagnostics.Type_annotations_can_only_be_used_in_TypeScript_files)), "skip"; + } + switch (Xt.kind) { + case 267: + if (Xt.isTypeOnly) + return _i.push(ia(Za, e.Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, "import type")), "skip"; + break; + case 272: + if (Xt.isTypeOnly) + return _i.push(ia(Xt, e.Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, "export type")), "skip"; + break; + case 270: + case 275: + if (Xt.isTypeOnly) + return _i.push(ia(Xt, e.Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, e.isImportSpecifier(Xt) ? "import...type" : "export...type")), "skip"; + break; + case 265: + return _i.push(ia(Xt, e.Diagnostics.import_can_only_be_used_in_TypeScript_files)), "skip"; + case 271: + if (Xt.isExportEquals) + return _i.push(ia(Xt, e.Diagnostics.export_can_only_be_used_in_TypeScript_files)), "skip"; + break; + case 291: + var bn = Xt; + if (bn.token === 117) + return _i.push(ia(Xt, e.Diagnostics.implements_clauses_can_only_be_used_in_TypeScript_files)), "skip"; + break; + case 258: + var _a = e.tokenToString(118); + return e.Debug.assertIsDefined(_a), _i.push(ia(Xt, e.Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, _a)), "skip"; + case 261: + var qa = Xt.flags & 16 ? e.tokenToString(142) : e.tokenToString(141); + return e.Debug.assertIsDefined(qa), _i.push(ia(Xt, e.Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, qa)), "skip"; + case 259: + return _i.push(ia(Xt, e.Diagnostics.Type_aliases_can_only_be_used_in_TypeScript_files)), "skip"; + case 260: + var rn = e.Debug.checkDefined(e.tokenToString(92)); + return _i.push(ia(Xt, e.Diagnostics._0_declarations_can_only_be_used_in_TypeScript_files, rn)), "skip"; + case 230: + return _i.push(ia(Xt, e.Diagnostics.Non_null_assertions_can_only_be_used_in_TypeScript_files)), "skip"; + case 229: + return _i.push(ia(Xt.type, e.Diagnostics.Type_assertion_expressions_can_only_be_used_in_TypeScript_files)), "skip"; + case 211: + e.Debug.fail(); + } + } + function tt(Xt, Za) { + switch (Za.decorators === Xt && !de.experimentalDecorators && _i.push(ia(Za, e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning)), Za.kind) { + case 257: + case 226: + case 169: + case 171: + case 172: + case 173: + case 213: + case 256: + case 214: + if (Xt === Za.typeParameters) + return _i.push(bt(Xt, e.Diagnostics.Type_parameter_declarations_can_only_be_used_in_TypeScript_files)), "skip"; + case 237: + if (Xt === Za.modifiers) + return kt(Za.modifiers, Za.kind === 237), "skip"; + break; + case 167: + if (Xt === Za.modifiers) { + for (var bn = 0, _a = Xt; bn < _a.length; bn++) { + var qa = _a[bn]; + qa.kind !== 124 && _i.push(ia(qa, e.Diagnostics.The_0_modifier_can_only_be_used_in_TypeScript_files, e.tokenToString(qa.kind))); + } + return "skip"; + } + break; + case 164: + if (Xt === Za.modifiers) + return _i.push(bt(Xt, e.Diagnostics.Parameter_modifiers_can_only_be_used_in_TypeScript_files)), "skip"; + break; + case 208: + case 209: + case 228: + case 279: + case 280: + case 210: + if (Xt === Za.typeArguments) + return _i.push(bt(Xt, e.Diagnostics.Type_arguments_can_only_be_used_in_TypeScript_files)), "skip"; + break; + } + } + function kt(Xt, Za) { + for (var bn = 0, _a = Xt; bn < _a.length; bn++) { + var qa = _a[bn]; + switch (qa.kind) { + case 85: + if (Za) + continue; + case 123: + case 121: + case 122: + case 145: + case 135: + case 126: + case 159: + case 101: + case 144: + _i.push(ia(qa, e.Diagnostics.The_0_modifier_can_only_be_used_in_TypeScript_files, e.tokenToString(qa.kind))); + break; + case 124: + case 93: + case 88: + } + } + } + function bt(Xt, Za, bn, _a, qa) { + var rn = Xt.pos; + return e.createFileDiagnostic(Kr, rn, Xt.end - rn, Za, bn, _a, qa); + } + function ia(Xt, Za, bn, _a, qa) { + return e.createDiagnosticForNodeInSourceFile(Kr, Xt, Za, bn, _a, qa); + } + }); + } + function Gr(Kr, _i) { + return Ce(Kr, _i, ur, S); + } + function S(Kr, _i) { + return no(function() { + var Ei = xn().getEmitResolver(Kr, _i); + return e.getDeclarationDiagnostics(ai(e.noop), Ei, Kr) || e.emptyArray; + }); + } + function Ce(Kr, _i, Ei, tt) { + var kt, bt = Kr ? (kt = Ei.perFile) === null || kt === void 0 ? void 0 : kt.get(Kr.path) : Ei.allDiagnostics; + if (bt) + return bt; + var ia = tt(Kr, _i); + return Kr ? (Ei.perFile || (Ei.perFile = new e.Map())).set(Kr.path, ia) : Ei.allDiagnostics = ia, ia; + } + function qe(Kr, _i) { + return Kr.isDeclarationFile ? [] : Gr(Kr, _i); + } + function br() { + return e.sortAndDeduplicateDiagnostics(e.concatenate(wi.getGlobalDiagnostics(), Zr())); + } + function Zr() { + if (!de.configFile) + return e.emptyArray; + var Kr = wi.getDiagnostics(de.configFile.fileName); + return Ji(function(_i) { + Kr = e.concatenate(Kr, wi.getDiagnostics(_i.sourceFile.fileName)); + }), Kr; + } + function Si() { + return we.length ? e.sortAndDeduplicateDiagnostics(xn().getGlobalDiagnostics().slice()) : e.emptyArray; + } + function Pi() { + return ye || e.emptyArray; + } + function Qi(Kr, _i, Ei, tt) { + Go(e.normalizePath(Kr), _i, Ei, void 0, tt); + } + function Ct(Kr, _i) { + return Kr.fileName === _i.fileName; + } + function sa(Kr, _i) { + return Kr.kind === 79 ? _i.kind === 79 && Kr.escapedText === _i.escapedText : _i.kind === 10 && Kr.text === _i.text; + } + function en(Kr, _i) { + var Ei = e.factory.createStringLiteral(Kr), tt = e.factory.createImportDeclaration(void 0, void 0, void 0, Ei, void 0); + return e.addEmitFlags(tt, 67108864), e.setParent(Ei, tt), e.setParent(tt, _i), Ei.flags &= -9, tt.flags &= -9, Ei; + } + function Wa(Kr) { + if (Kr.imports) + return; + var _i = e.isSourceFileJS(Kr), Ei = e.isExternalModule(Kr), tt, kt, bt; + if ((de.isolatedModules || Ei) && !Kr.isDeclarationFile) { + de.importHelpers && (tt = [en(e.externalHelpersModuleNameText, Kr)]); + var ia = e.getJSXRuntimeImport(e.getJSXImplicitImportBase(de, Kr), de); + ia && (tt || (tt = [])).push(en(ia, Kr)); + } + for (var Xt = 0, Za = Kr.statements; Xt < Za.length; Xt++) { + var bn = Za[Xt]; + _a(bn, false); + } + (Kr.flags & 2097152 || _i) && qa(Kr), Kr.imports = tt || e.emptyArray, Kr.moduleAugmentations = kt || e.emptyArray, Kr.ambientModuleNames = bt || e.emptyArray; + return; + function _a(jn, Mo) { + if (e.isAnyImportOrReExport(jn)) { + var ho = e.getExternalModuleName(jn); + ho && e.isStringLiteral(ho) && ho.text && (!Mo || !e.isExternalModuleNameRelative(ho.text)) && (e.setParentRecursive(jn, false), tt = e.append(tt, ho), !Je && Ur === 0 && !Kr.isDeclarationFile && (Je = e.startsWith(ho.text, "node:"))); + } else if (e.isModuleDeclaration(jn) && e.isAmbientModule(jn) && (Mo || e.hasSyntacticModifier(jn, 2) || Kr.isDeclarationFile)) { + jn.name.parent = jn; + var gs = e.getTextOfIdentifierOrLiteral(jn.name); + if (Ei || Mo && !e.isExternalModuleNameRelative(gs)) + (kt || (kt = [])).push(jn.name); + else if (!Mo) { + Kr.isDeclarationFile && (bt || (bt = [])).push(gs); + var Se = jn.body; + if (Se) + for (var hr = 0, Or = Se.statements; hr < Or.length; hr++) { + var ki = Or[hr]; + _a(ki, true); + } + } + } + } + function qa(jn) { + for (var Mo = /import|require/g; Mo.exec(jn.text) !== null; ) { + var ho = rn(jn, Mo.lastIndex); + _i && e.isRequireCall(ho, true) || e.isImportCall(ho) && ho.arguments.length >= 1 && e.isStringLiteralLike(ho.arguments[0]) ? (e.setParentRecursive(ho, false), tt = e.append(tt, ho.arguments[0])) : e.isLiteralImportTypeNode(ho) && (e.setParentRecursive(ho, false), tt = e.append(tt, ho.argument.literal)); + } + } + function rn(jn, Mo) { + for (var ho = jn, gs = function(hr) { + if (hr.pos <= Mo && (Mo < hr.end || Mo === hr.end && hr.kind === 1)) + return hr; + }; ; ) { + var Se = _i && e.hasJSDocNodes(ho) && e.forEach(ho.jsDoc, gs) || e.forEachChild(ho, gs); + if (!Se) + return ho; + ho = Se; + } + } + } + function qn(Kr) { + var _i = e.toFileNameLowerCase(Kr.fileName), Ei = e.libMap.get(_i); + if (Ei) + return Rn(Pt(Ei)); + } + function mo(Kr, _i) { + return So(C(_i.fileName, Kr.fileName), Rn); + } + function So(Kr, _i, Ei, tt) { + if (e.hasExtension(Kr)) { + var kt = pe.getCanonicalFileName(Kr); + if (!de.allowNonTsExtensions && !e.forEach(e.flatten(Gi), function(bn) { + return e.fileExtensionIs(kt, bn); + })) { + Ei && (e.hasJSFileExtension(kt) ? Ei(e.Diagnostics.File_0_is_a_JavaScript_file_Did_you_mean_to_enable_the_allowJs_option, Kr) : Ei(e.Diagnostics.File_0_has_an_unsupported_extension_The_only_supported_extensions_are_1, Kr, "'" + e.flatten(et).join("', '") + "'")); + return; + } + var bt = _i(Kr); + if (Ei) + if (bt) + V(tt) && kt === pe.getCanonicalFileName(Da(tt.file).fileName) && Ei(e.Diagnostics.A_file_cannot_have_a_reference_to_itself); + else { + var ia = ps(Kr); + ia ? Ei(e.Diagnostics.Output_file_0_has_not_been_built_from_source_file_1, ia, Kr) : Ei(e.Diagnostics.File_0_not_found, Kr); + } + return bt; + } else { + var Xt = de.allowNonTsExtensions && _i(Kr); + if (Xt) + return Xt; + if (Ei && de.allowNonTsExtensions) { + Ei(e.Diagnostics.File_0_not_found, Kr); + return; + } + var Za = e.forEach(et[0], function(bn) { + return _i(Kr + bn); + }); + return Ei && !Za && Ei(e.Diagnostics.Could_not_resolve_the_path_0_with_the_extensions_Colon_1, Kr, "'" + e.flatten(et).join("', '") + "'"), Za; + } + } + function Go(Kr, _i, Ei, tt, kt) { + So(Kr, function(bt) { + return Kc(bt, _i, Ei, kt, tt); + }, function(bt) { + for (var ia = [], Xt = 1; Xt < arguments.length; Xt++) + ia[Xt - 1] = arguments[Xt]; + return ko(void 0, kt, bt, ia); + }, kt); + } + function ys(Kr, _i) { + return Go(Kr, false, false, void 0, _i); + } + function Pc(Kr, _i, Ei) { + var tt = !V(Ei) && e.some(be.get(_i.path), V); + tt ? ko(_i, Ei, e.Diagnostics.Already_included_file_name_0_differs_from_file_name_1_only_in_casing, [_i.fileName, Kr]) : ko(_i, Ei, e.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, [Kr, _i.fileName]); + } + function Vc(Kr, _i, Ei, tt, kt, bt) { + var ia = Object.create(Kr); + return ia.fileName = Ei, ia.path = tt, ia.resolvedPath = kt, ia.originalFileName = bt, ia.redirectInfo = { redirectTarget: Kr, unredirected: _i }, mi.set(tt, Ur > 0), Object.defineProperties(ia, { id: { get: function() { + return this.redirectInfo.redirectTarget.id; + }, set: function(Xt) { + this.redirectInfo.redirectTarget.id = Xt; + } }, symbol: { get: function() { + return this.redirectInfo.redirectTarget.symbol; + }, set: function(Xt) { + this.redirectInfo.redirectTarget.symbol = Xt; + } } }), ia; + } + function Kc(Kr, _i, Ei, tt, kt) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "findSourceFile", { fileName: Kr, isDefaultLib: _i || void 0, fileIncludeKind: e.FileIncludeKind[tt.kind] }); + var bt = pc(Kr, _i, Ei, tt, kt); + return e.tracing === null || e.tracing === void 0 || e.tracing.pop(), bt; + } + function Xs(Kr, _i, Ei, tt) { + var kt = U(Vi(Kr), _i == null ? void 0 : _i.getPackageJsonInfoCache(), Ei, tt); + return { languageVersion: e.getEmitScriptTarget(tt), impliedNodeFormat: kt, setExternalModuleIndicator: e.getSetExternalModuleIndicator(tt) }; + } + function pc(Kr, _i, Ei, tt, kt) { + var bt = Vi(Kr); + if (Pe) { + var ia = ce(bt); + if (!ia && pe.realpath && de.preserveSymlinks && e.isDeclarationFileName(Kr) && e.stringContains(Kr, e.nodeModulesPathPart)) { + var Xt = Vi(pe.realpath(Kr)); + Xt !== bt && (ia = ce(Xt)); + } + if (ia) { + var Za = e.isString(ia) ? Kc(ia, _i, Ei, tt, kt) : void 0; + return Za && tc(Za, bt, void 0), Za; + } + } + var bn = Kr; + if (xe.has(bt)) { + var _a = xe.get(bt); + if (hs(_a || void 0, tt), _a && de.forceConsistentCasingInFileNames) { + var qa = _a.fileName, rn = Vi(qa) !== Vi(Kr); + rn && (Kr = ps(Kr) || Kr); + var jn = e.getNormalizedAbsolutePathWithoutRoot(qa, Xi), Mo = e.getNormalizedAbsolutePathWithoutRoot(Kr, Xi); + jn !== Mo && Pc(Kr, _a, tt); + } + return _a && mi.get(_a.path) && Ur === 0 ? (mi.set(_a.path, false), de.noResolve || (qi(_a, _i), je(_a)), de.noLib || ga(_a), ii.set(_a.path, false), Xn(_a)) : _a && ii.get(_a.path) && Ur < wr && (ii.set(_a.path, false), Xn(_a)), _a || void 0; + } + var ho; + if (V(tt) && !Pe) { + var gs = Qs(Kr); + if (gs) { + if (e.outFile(gs.commandLine.options)) + return; + var Se = js(gs, Kr); + Kr = Se, ho = Vi(Se); + } + } + var hr = pe.getSourceFile(Kr, Xs(Kr, _r, pe, de), function(On) { + return ko(void 0, tt, e.Diagnostics.Cannot_read_file_0_Colon_1, [Kr, On]); + }, Tr); + if (kt) { + var Or = e.packageIdToString(kt), ki = Sr.get(Or); + if (ki) { + var dt = Vc(ki, hr, Kr, bt, Vi(Kr), bn); + return Wr.add(ki.path, Kr), tc(dt, bt, ho), hs(dt, tt), zr.set(bt, e.packageIdToPackageName(kt)), Cr.push(dt), dt; + } else + hr && (Sr.set(Or, hr), zr.set(bt, e.packageIdToPackageName(kt))); + } + if (tc(hr, bt, ho), hr) { + if (mi.set(bt, Ur > 0), hr.fileName = Kr, hr.path = bt, hr.resolvedPath = Vi(Kr), hr.originalFileName = bn, hs(hr, tt), pe.useCaseSensitiveFileNames()) { + var la = e.toFileNameLowerCase(bt), wa = mr.get(la); + wa ? Pc(Kr, wa, tt) : mr.set(la, hr); + } + qr = qr || hr.hasNoDefaultLib && !Ei, de.noResolve || (qi(hr, _i), je(hr)), de.noLib || ga(hr), Xn(hr), _i ? ir.push(hr) : Cr.push(hr); + } + return hr; + } + function hs(Kr, _i) { + Kr && be.add(Kr.path, _i); + } + function tc(Kr, _i, Ei) { + Ei ? (xe.set(Ei, Kr), xe.set(_i, Kr || false)) : xe.set(_i, Kr); + } + function ps(Kr) { + var _i = Qs(Kr); + return _i && js(_i, Kr); + } + function Qs(Kr) { + if (!(!Ar || !Ar.length || e.isDeclarationFileName(Kr) || e.fileExtensionIs(Kr, ".json"))) + return ds(Kr); + } + function js(Kr, _i) { + var Ei = e.outFile(Kr.commandLine.options); + return Ei ? e.changeExtension(Ei, ".d.ts") : e.getOutputDeclarationFileName(_i, Kr.commandLine, !pe.useCaseSensitiveFileNames()); + } + function ds(Kr) { + nr === void 0 && (nr = new e.Map(), Ji(function(Ei) { + Vi(de.configFilePath) !== Ei.sourceFile.path && Ei.commandLine.fileNames.forEach(function(tt) { + return nr.set(Vi(tt), Ei.sourceFile.path); + }); + })); + var _i = nr.get(Vi(Kr)); + return _i && yi(_i); + } + function Ji(Kr) { + return e.forEachResolvedProjectReference(Ar, Kr); + } + function ce(Kr) { + if (!!e.isDeclarationFileName(Kr)) + return Mr === void 0 && (Mr = new e.Map(), Ji(function(_i) { + var Ei = e.outFile(_i.commandLine.options); + if (Ei) { + var tt = e.changeExtension(Ei, ".d.ts"); + Mr.set(Vi(tt), true); + } else { + var kt = e.memoize(function() { + return e.getCommonSourceDirectoryOfConfig(_i.commandLine, !pe.useCaseSensitiveFileNames()); + }); + e.forEach(_i.commandLine.fileNames, function(bt) { + if (!e.isDeclarationFileName(bt) && !e.fileExtensionIs(bt, ".json")) { + var ia = e.getOutputDeclarationFileName(bt, _i.commandLine, !pe.useCaseSensitiveFileNames(), kt); + Mr.set(Vi(ia), bt); + } + }); + } + })), Mr.get(Kr); + } + function Rr(Kr) { + return Pe && !!ds(Kr); + } + function yi(Kr) { + if (!!Oe) + return Oe.get(Kr) || void 0; + } + function qi(Kr, _i) { + e.forEach(Kr.referencedFiles, function(Ei, tt) { + Go(C(Ei.fileName, Kr.fileName), _i, false, void 0, { kind: e.FileIncludeKind.ReferenceFile, file: Kr.path, index: tt }); + }); + } + function je(Kr) { + var _i = Kr.typeReferenceDirectives; + if (!!_i) + for (var Ei = Bt(_i, Kr), tt = 0; tt < _i.length; tt++) { + var kt = Kr.typeReferenceDirectives[tt], bt = Ei[tt], ia = e.toFileNameLowerCase(kt.fileName); + e.setResolvedTypeReferenceDirective(Kr, ia, bt); + var Xt = kt.resolutionMode || Kr.impliedNodeFormat; + Xt && e.getEmitModuleResolutionKind(de) !== e.ModuleResolutionKind.Node16 && e.getEmitModuleResolutionKind(de) !== e.ModuleResolutionKind.NodeNext && wi.add(e.createDiagnosticForRange(Kr, kt, e.Diagnostics.Resolution_modes_are_only_supported_when_moduleResolution_is_node16_or_nodenext)), Hr(ia, Xt, bt, { kind: e.FileIncludeKind.TypeReferenceDirective, file: Kr.path, index: tt }); + } + } + function Hr(Kr, _i, Ei, tt) { + e.tracing === null || e.tracing === void 0 || e.tracing.push("program", "processTypeReferenceDirective", { directive: Kr, hasResolved: !!ba, refKind: tt.kind, refPath: V(tt) ? tt.file : void 0 }), pt(Kr, _i, Ei, tt), e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + function pt(Kr, _i, Ei, tt) { + var kt = yr.get(Kr, _i); + if (!(kt && kt.primary)) { + var bt = true; + if (Ei) { + if (Ei.isExternalLibraryImport && Ur++, Ei.primary) + Go(Ei.resolvedFileName, false, false, Ei.packageId, tt); + else if (kt) { + if (Ei.resolvedFileName !== kt.resolvedFileName) { + var ia = pe.readFile(Ei.resolvedFileName), Xt = Rn(kt.resolvedFileName); + ia !== Xt.text && ko(Xt, tt, e.Diagnostics.Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict, [Kr, Ei.resolvedFileName, kt.resolvedFileName]); + } + bt = false; + } else + Go(Ei.resolvedFileName, false, false, Ei.packageId, tt); + Ei.isExternalLibraryImport && Ur--; + } else + ko(void 0, tt, e.Diagnostics.Cannot_find_type_definition_file_for_0, [Kr]); + bt && yr.set(Kr, _i, Ei); + } + } + function Pt(Kr) { + for (var _i = Kr.split("."), Ei = _i[1], tt = 2; _i[tt] && _i[tt] !== "d"; ) + Ei += (tt === 2 ? "/" : "-") + _i[tt], tt++; + var kt = e.combinePaths(Xi, "__lib_node_modules_lookup_".concat(Kr, "__.ts")), bt = e.resolveModuleName("@typescript/lib-" + Ei, kt, { moduleResolution: e.ModuleResolutionKind.NodeJs }, pe, _r); + return bt != null && bt.resolvedModule ? bt.resolvedModule.resolvedFileName : e.combinePaths(Di, Kr); + } + function ga(Kr) { + e.forEach(Kr.libReferenceDirectives, function(_i, Ei) { + var tt = e.toFileNameLowerCase(_i.fileName), kt = e.libMap.get(tt); + if (kt) + Qi(Pt(kt), true, true, { kind: e.FileIncludeKind.LibReferenceDirective, file: Kr.path, index: Ei }); + else { + var bt = e.removeSuffix(e.removePrefix(tt, "lib."), ".d.ts"), ia = e.getSpellingSuggestion(bt, e.libs, e.identity), Xt = ia ? e.Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1 : e.Diagnostics.Cannot_find_lib_definition_for_0; + (Ir || (Ir = [])).push({ kind: 0, reason: { kind: e.FileIncludeKind.LibReferenceDirective, file: Kr.path, index: Ei }, diagnostic: Xt, args: [tt, ia] }); + } + }); + } + function ua(Kr) { + return pe.getCanonicalFileName(Kr); + } + function Xn(Kr) { + var _i; + if (Wa(Kr), Kr.imports.length || Kr.moduleAugmentations.length) { + var Ei = We(Kr), tt = ba(Ei, Kr); + e.Debug.assert(tt.length === Ei.length); + for (var kt = (Pe ? (_i = wt(Kr)) === null || _i === void 0 ? void 0 : _i.commandLine.options : void 0) || de, bt = 0; bt < Ei.length; bt++) { + var ia = tt[bt]; + if (e.setResolvedModule(Kr, Ei[bt], ia, he(Kr, bt)), !!ia) { + var Xt = ia.isExternalLibraryImport, Za = !e.resolutionExtensionIsTSOrJson(ia.extension), bn = Xt && Za, _a = ia.resolvedFileName; + Xt && Ur++; + var qa = bn && Ur > wr, rn = _a && !ue(kt, ia) && !kt.noResolve && bt < Kr.imports.length && !qa && !(Za && !e.getAllowJSCompilerOption(kt)) && (e.isInJSFile(Kr.imports[bt]) || !(Kr.imports[bt].flags & 8388608)); + qa ? ii.set(Kr.path, true) : rn && Kc(_a, false, false, { kind: e.FileIncludeKind.Import, file: Kr.path, index: bt }, ia.packageId), Xt && Ur--; + } + } + } else + Kr.resolvedModules = void 0; + } + function jr(Kr, _i) { + for (var Ei = true, tt = pe.getCanonicalFileName(e.getNormalizedAbsolutePath(_i, Xi)), kt = 0, bt = Kr; kt < bt.length; kt++) { + var ia = bt[kt]; + if (!ia.isDeclarationFile) { + var Xt = pe.getCanonicalFileName(e.getNormalizedAbsolutePath(ia.fileName, Xi)); + Xt.indexOf(tt) !== 0 && (Ao(ia, e.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files, [ia.fileName, _i]), Ei = false); + } + } + return Ei; + } + function fo(Kr) { + Oe || (Oe = new e.Map()); + var _i = ne(Kr), Ei = Vi(_i), tt = Oe.get(Ei); + if (tt !== void 0) + return tt || void 0; + var kt, bt; + if (pe.getParsedCommandLine) { + if (kt = pe.getParsedCommandLine(_i), !kt) { + tc(void 0, Ei, void 0), Oe.set(Ei, false); + return; + } + bt = e.Debug.checkDefined(kt.options.configFile), e.Debug.assert(!bt.path || bt.path === Ei), tc(bt, Ei, void 0); + } else { + var ia = e.getNormalizedAbsolutePath(e.getDirectoryPath(_i), pe.getCurrentDirectory()); + if (bt = pe.getSourceFile(_i, 100), tc(bt, Ei, void 0), bt === void 0) { + Oe.set(Ei, false); + return; + } + kt = e.parseJsonSourceFileConfigFileContent(bt, or, ia, void 0, _i); + } + bt.fileName = _i, bt.path = Ei, bt.resolvedPath = Ei, bt.originalFileName = _i; + var Xt = { commandLine: kt, sourceFile: bt }; + return Oe.set(Ei, Xt), kt.projectReferences && (Xt.references = kt.projectReferences.map(fo)), Xt; + } + function xs() { + de.strictPropertyInitialization && !e.getStrictOptionValue(de, "strictNullChecks") && Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "strictPropertyInitialization", "strictNullChecks"), de.exactOptionalPropertyTypes && !e.getStrictOptionValue(de, "strictNullChecks") && Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "exactOptionalPropertyTypes", "strictNullChecks"), de.isolatedModules && (de.out && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "isolatedModules"), de.outFile && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "outFile", "isolatedModules")), de.inlineSourceMap && (de.sourceMap && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceMap", "inlineSourceMap"), de.mapRoot && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")), de.composite && (de.declaration === false && Jo(e.Diagnostics.Composite_projects_may_not_disable_declaration_emit, "declaration"), de.incremental === false && Jo(e.Diagnostics.Composite_projects_may_not_disable_incremental_compilation, "declaration")); + var Kr = e.outFile(de); + if (de.tsBuildInfoFile ? e.isIncrementalCompilation(de) || Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2, "tsBuildInfoFile", "incremental", "composite") : de.incremental && !Kr && !de.configFilePath && wi.add(e.createCompilerDiagnostic(e.Diagnostics.Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBuildInfoFile_is_specified)), Bs(), de.composite) + for (var _i = new e.Set(we.map(Vi)), Ei = 0, tt = Ye; Ei < tt.length; Ei++) { + var kt = tt[Ei]; + e.sourceFileMayBeEmitted(kt, Ii) && !_i.has(kt.path) && Ao(kt, e.Diagnostics.File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern, [kt.fileName, de.configFilePath || ""]); + } + if (de.paths) { + for (var bt in de.paths) + if (!!e.hasProperty(de.paths, bt)) + if (e.hasZeroOrOneAsteriskCharacter(bt) || su(true, bt, e.Diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character, bt), e.isArray(de.paths[bt])) { + var ia = de.paths[bt].length; + ia === 0 && su(false, bt, e.Diagnostics.Substitutions_for_pattern_0_shouldn_t_be_an_empty_array, bt); + for (var Xt = 0; Xt < ia; Xt++) { + var Za = de.paths[bt][Xt], bn = typeof Za; + bn === "string" ? (e.hasZeroOrOneAsteriskCharacter(Za) || xc(bt, Xt, e.Diagnostics.Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character, Za, bt), !de.baseUrl && !e.pathIsRelative(Za) && !e.pathIsAbsolute(Za) && xc(bt, Xt, e.Diagnostics.Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash)) : xc(bt, Xt, e.Diagnostics.Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2, Za, bt, bn); + } + } else + su(false, bt, e.Diagnostics.Substitutions_for_pattern_0_should_be_an_array, bt); + } + !de.sourceMap && !de.inlineSourceMap && (de.inlineSources && Jo(e.Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided, "inlineSources"), de.sourceRoot && Jo(e.Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided, "sourceRoot")), de.out && de.outFile && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile"), de.mapRoot && !(de.sourceMap || de.declarationMap) && Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2, "mapRoot", "sourceMap", "declarationMap"), de.declarationDir && (e.getEmitDeclarations(de) || Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2, "declarationDir", "declaration", "composite"), Kr && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "declarationDir", de.out ? "out" : "outFile")), de.declarationMap && !e.getEmitDeclarations(de) && Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2, "declarationMap", "declaration", "composite"), de.lib && de.noLib && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "lib", "noLib"), de.noImplicitUseStrict && e.getStrictOptionValue(de, "alwaysStrict") && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noImplicitUseStrict", "alwaysStrict"); + var _a = e.getEmitScriptTarget(de), qa = e.find(Ye, function(hr) { + return e.isExternalModule(hr) && !hr.isDeclarationFile; + }); + if (de.isolatedModules) { + de.module === e.ModuleKind.None && _a < 2 && Jo(e.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher, "isolatedModules", "target"), de.preserveConstEnums === false && Jo(e.Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled, "preserveConstEnums", "isolatedModules"); + var rn = e.find(Ye, function(hr) { + return !e.isExternalModule(hr) && !e.isSourceFileJS(hr) && !hr.isDeclarationFile && hr.scriptKind !== 6; + }); + if (rn) { + var jn = e.getErrorSpanForNode(rn, rn); + wi.add(e.createFileDiagnostic(rn, jn.start, jn.length, e.Diagnostics._0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module, e.getBaseFileName(rn.fileName))); + } + } else if (qa && _a < 2 && de.module === e.ModuleKind.None) { + var jn = e.getErrorSpanForNode(qa, typeof qa.externalModuleIndicator == "boolean" ? qa : qa.externalModuleIndicator); + wi.add(e.createFileDiagnostic(qa, jn.start, jn.length, e.Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none)); + } + if (Kr && !de.emitDeclarationOnly) { + if (de.module && !(de.module === e.ModuleKind.AMD || de.module === e.ModuleKind.System)) + Jo(e.Diagnostics.Only_amd_and_system_modules_are_supported_alongside_0, de.out ? "out" : "outFile", "module"); + else if (de.module === void 0 && qa) { + var jn = e.getErrorSpanForNode(qa, typeof qa.externalModuleIndicator == "boolean" ? qa : qa.externalModuleIndicator); + wi.add(e.createFileDiagnostic(qa, jn.start, jn.length, e.Diagnostics.Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system, de.out ? "out" : "outFile")); + } + } + if (de.resolveJsonModule && (e.getEmitModuleResolutionKind(de) !== e.ModuleResolutionKind.NodeJs && e.getEmitModuleResolutionKind(de) !== e.ModuleResolutionKind.Node16 && e.getEmitModuleResolutionKind(de) !== e.ModuleResolutionKind.NodeNext ? Jo(e.Diagnostics.Option_resolveJsonModule_cannot_be_specified_without_node_module_resolution_strategy, "resolveJsonModule") : e.hasJsonModuleEmitEnabled(de) || Jo(e.Diagnostics.Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_esNext, "resolveJsonModule", "module")), de.outDir || de.rootDir || de.sourceRoot || de.mapRoot) { + var Mo = at(); + de.outDir && Mo === "" && Ye.some(function(hr) { + return e.getRootLength(hr.fileName) > 1; + }) && Jo(e.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files, "outDir"); + } + if (de.useDefineForClassFields && _a === 0 && Jo(e.Diagnostics.Option_0_cannot_be_specified_when_option_target_is_ES3, "useDefineForClassFields"), de.checkJs && !e.getAllowJSCompilerOption(de) && wi.add(e.createCompilerDiagnostic(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "checkJs", "allowJs")), de.emitDeclarationOnly && (e.getEmitDeclarations(de) || Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2, "emitDeclarationOnly", "declaration", "composite"), de.noEmit && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "emitDeclarationOnly", "noEmit")), de.emitDecoratorMetadata && !de.experimentalDecorators && Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators"), de.jsxFactory ? (de.reactNamespace && Jo(e.Diagnostics.Option_0_cannot_be_specified_with_option_1, "reactNamespace", "jsxFactory"), (de.jsx === 4 || de.jsx === 5) && Jo(e.Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1, "jsxFactory", e.inverseJsxOptionMap.get("" + de.jsx)), e.parseIsolatedEntityName(de.jsxFactory, _a) || eu("jsxFactory", e.Diagnostics.Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name, de.jsxFactory)) : de.reactNamespace && !e.isIdentifierText(de.reactNamespace, _a) && eu("reactNamespace", e.Diagnostics.Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier, de.reactNamespace), de.jsxFragmentFactory && (de.jsxFactory || Jo(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "jsxFragmentFactory", "jsxFactory"), (de.jsx === 4 || de.jsx === 5) && Jo(e.Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1, "jsxFragmentFactory", e.inverseJsxOptionMap.get("" + de.jsx)), e.parseIsolatedEntityName(de.jsxFragmentFactory, _a) || eu("jsxFragmentFactory", e.Diagnostics.Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name, de.jsxFragmentFactory)), de.reactNamespace && (de.jsx === 4 || de.jsx === 5) && Jo(e.Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1, "reactNamespace", e.inverseJsxOptionMap.get("" + de.jsx)), de.jsxImportSource && de.jsx === 2 && Jo(e.Diagnostics.Option_0_cannot_be_specified_when_option_jsx_is_1, "jsxImportSource", e.inverseJsxOptionMap.get("" + de.jsx)), de.preserveValueImports && e.getEmitModuleKind(de) < e.ModuleKind.ES2015 && eu("importsNotUsedAsValues", e.Diagnostics.Option_preserveValueImports_can_only_be_used_when_module_is_set_to_es2015_or_later), !de.noEmit && !de.suppressOutputPathCheck) { + var ho = ai(), gs = new e.Set(); + e.forEachEmittedFile(ho, function(hr) { + de.emitDeclarationOnly || Se(hr.jsFilePath, gs), Se(hr.declarationFilePath, gs); + }); + } + function Se(hr, Or) { + if (hr) { + var ki = Vi(hr); + if (xe.has(ki)) { + var dt = void 0; + de.configFilePath || (dt = e.chainDiagnosticMessages(void 0, e.Diagnostics.Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig)), dt = e.chainDiagnosticMessages(dt, e.Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file, hr), xl(hr, e.createCompilerDiagnosticFromMessageChain(dt)); + } + var la = pe.useCaseSensitiveFileNames() ? ki : e.toFileNameLowerCase(ki); + Or.has(la) ? xl(hr, e.createCompilerDiagnostic(e.Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files, hr)) : Or.add(la); + } + } + } + function Fo(Kr, _i, Ei, tt) { + var kt, bt, ia, Xt = V(_i) ? _i : void 0; + Kr && ((kt = be.get(Kr.path)) === null || kt === void 0 || kt.forEach(rn)), _i && rn(_i), Xt && (bt == null ? void 0 : bt.length) === 1 && (bt = void 0); + var Za = Xt && P(Da, Xt), bn = bt && e.chainDiagnosticMessages(bt, e.Diagnostics.The_file_is_in_the_program_because_Colon), _a = Kr && e.explainIfFileIsRedirect(Kr), qa = e.chainDiagnosticMessages.apply(void 0, Ve([_a ? bn ? Ve([bn], _a, true) : _a : bn, Ei], tt || e.emptyArray, false)); + return Za && L(Za) ? e.createFileDiagnosticFromMessageChain(Za.file, Za.pos, Za.end - Za.pos, qa, ia) : e.createCompilerDiagnosticFromMessageChain(qa, ia); + function rn(jn) { + (bt || (bt = [])).push(e.fileIncludeReasonToDiagnostics(Ii, jn)), !Xt && V(jn) ? Xt = jn : Xt !== jn && (ia = e.append(ia, Ms(jn))), jn === _i && (_i = void 0); + } + } + function ko(Kr, _i, Ei, tt) { + (Ir || (Ir = [])).push({ kind: 1, file: Kr && Kr.path, fileProcessingReason: _i, diagnostic: Ei, args: tt }); + } + function Ao(Kr, _i, Ei) { + wi.add(Fo(Kr, void 0, _i, Ei)); + } + function Ms(Kr) { + if (V(Kr)) { + var _i = P(Da, Kr), Ei; + switch (Kr.kind) { + case e.FileIncludeKind.Import: + Ei = e.Diagnostics.File_is_included_via_import_here; + break; + case e.FileIncludeKind.ReferenceFile: + Ei = e.Diagnostics.File_is_included_via_reference_here; + break; + case e.FileIncludeKind.TypeReferenceDirective: + Ei = e.Diagnostics.File_is_included_via_type_library_reference_here; + break; + case e.FileIncludeKind.LibReferenceDirective: + Ei = e.Diagnostics.File_is_included_via_library_reference_here; + break; + default: + e.Debug.assertNever(Kr); + } + return L(_i) ? e.createFileDiagnostic(_i.file, _i.pos, _i.end - _i.pos, Ei) : void 0; + } + if (!!de.configFile) { + var tt, kt; + switch (Kr.kind) { + case e.FileIncludeKind.RootFile: + if (!de.configFile.configFileSpecs) + return; + var bt = e.getNormalizedAbsolutePath(we[Kr.index], Xi), ia = e.getMatchedFileSpec(Ii, bt); + if (ia) { + tt = e.getTsConfigPropArrayElementValue(de.configFile, "files", ia), kt = e.Diagnostics.File_is_matched_by_files_list_specified_here; + break; + } + var Xt = e.getMatchedIncludeSpec(Ii, bt); + if (!Xt) + return; + tt = e.getTsConfigPropArrayElementValue(de.configFile, "include", Xt), kt = e.Diagnostics.File_is_matched_by_include_pattern_specified_here; + break; + case e.FileIncludeKind.SourceFromProjectReference: + case e.FileIncludeKind.OutputFromProjectReference: + var Za = e.Debug.checkDefined(Ar == null ? void 0 : Ar[Kr.index]), bn = y(Ae, Ar, function(Mo, ho, gs) { + return Mo === Za ? { sourceFile: (ho == null ? void 0 : ho.sourceFile) || de.configFile, index: gs } : void 0; + }); + if (!bn) + return; + var _a = bn.sourceFile, qa = bn.index, rn = e.firstDefined(e.getTsConfigPropArray(_a, "references"), function(Mo) { + return e.isArrayLiteralExpression(Mo.initializer) ? Mo.initializer : void 0; + }); + return rn && rn.elements.length > qa ? e.createDiagnosticForNodeInSourceFile(_a, rn.elements[qa], Kr.kind === e.FileIncludeKind.OutputFromProjectReference ? e.Diagnostics.File_is_output_from_referenced_project_specified_here : e.Diagnostics.File_is_source_from_referenced_project_specified_here) : void 0; + case e.FileIncludeKind.AutomaticTypeDirectiveFile: + if (!de.types) + return; + tt = al("types", Kr.typeReference), kt = e.Diagnostics.File_is_entry_point_of_type_library_specified_here; + break; + case e.FileIncludeKind.LibFile: + if (Kr.index !== void 0) { + tt = al("lib", de.lib[Kr.index]), kt = e.Diagnostics.File_is_library_specified_here; + break; + } + var jn = e.forEachEntry(e.targetOptionDeclaration.type, function(Mo, ho) { + return Mo === e.getEmitScriptTarget(de) ? ho : void 0; + }); + tt = jn ? Rf("target", jn) : void 0, kt = e.Diagnostics.File_is_default_library_for_target_specified_here; + break; + default: + e.Debug.assertNever(Kr); + } + return tt && e.createDiagnosticForNodeInSourceFile(de.configFile, tt, kt); + } + } + function Bs() { + var Kr = de.suppressOutputPathCheck ? void 0 : e.getTsBuildInfoEmitOutputFilePath(de); + y(Ae, Ar, function(_i, Ei, tt) { + var kt = (Ei ? Ei.commandLine.projectReferences : Ae)[tt], bt = Ei && Ei.sourceFile; + if (!_i) { + Ws(bt, tt, e.Diagnostics.File_0_not_found, kt.path); + return; + } + var ia = _i.commandLine.options; + if (!ia.composite || ia.noEmit) { + var Xt = Ei ? Ei.commandLine.fileNames : we; + Xt.length && (ia.composite || Ws(bt, tt, e.Diagnostics.Referenced_project_0_must_have_setting_composite_Colon_true, kt.path), ia.noEmit && Ws(bt, tt, e.Diagnostics.Referenced_project_0_may_not_disable_emit, kt.path)); + } + if (kt.prepend) { + var Za = e.outFile(ia); + Za ? pe.fileExists(Za) || Ws(bt, tt, e.Diagnostics.Output_file_0_from_project_1_does_not_exist, Za, kt.path) : Ws(bt, tt, e.Diagnostics.Cannot_prepend_project_0_because_it_does_not_have_outFile_set, kt.path); + } + !Ei && Kr && Kr === e.getTsBuildInfoEmitOutputFilePath(ia) && (Ws(bt, tt, e.Diagnostics.Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1, Kr, kt.path), Wt.set(Vi(Kr), true)); + }); + } + function xc(Kr, _i, Ei, tt, kt, bt) { + for (var ia = true, Xt = Zc(), Za = 0, bn = Xt; Za < bn.length; Za++) { + var _a = bn[Za]; + if (e.isObjectLiteralExpression(_a.initializer)) + for (var qa = 0, rn = e.getPropertyAssignment(_a.initializer, Kr); qa < rn.length; qa++) { + var jn = rn[qa], Mo = jn.initializer; + e.isArrayLiteralExpression(Mo) && Mo.elements.length > _i && (wi.add(e.createDiagnosticForNodeInSourceFile(de.configFile, Mo.elements[_i], Ei, tt, kt, bt)), ia = false); + } + } + ia && wi.add(e.createCompilerDiagnostic(Ei, tt, kt, bt)); + } + function su(Kr, _i, Ei, tt) { + for (var kt = true, bt = Zc(), ia = 0, Xt = bt; ia < Xt.length; ia++) { + var Za = Xt[ia]; + e.isObjectLiteralExpression(Za.initializer) && Ql(Za.initializer, Kr, _i, void 0, Ei, tt) && (kt = false); + } + kt && wi.add(e.createCompilerDiagnostic(Ei, tt)); + } + function tl(Kr) { + var _i = Uu(); + return _i && e.getPropertyAssignment(_i, Kr); + } + function Zc() { + return tl("paths") || e.emptyArray; + } + function Rf(Kr, _i) { + var Ei = tl(Kr); + return Ei && e.firstDefined(Ei, function(tt) { + return e.isStringLiteral(tt.initializer) && tt.initializer.text === _i ? tt.initializer : void 0; + }); + } + function al(Kr, _i) { + var Ei = Uu(); + return Ei && e.getPropertyArrayElementValue(Ei, Kr, _i); + } + function Jo(Kr, _i, Ei, tt) { + pu(true, _i, Ei, Kr, _i, Ei, tt); + } + function eu(Kr, _i, Ei, tt) { + pu(false, Kr, void 0, _i, Ei, tt); + } + function Ws(Kr, _i, Ei, tt, kt) { + var bt = e.firstDefined(e.getTsConfigPropArray(Kr || de.configFile, "references"), function(ia) { + return e.isArrayLiteralExpression(ia.initializer) ? ia.initializer : void 0; + }); + bt && bt.elements.length > _i ? wi.add(e.createDiagnosticForNodeInSourceFile(Kr || de.configFile, bt.elements[_i], Ei, tt, kt)) : wi.add(e.createCompilerDiagnostic(Ei, tt, kt)); + } + function pu(Kr, _i, Ei, tt, kt, bt, ia) { + var Xt = Uu(), Za = !Xt || !Ql(Xt, Kr, _i, Ei, tt, kt, bt, ia); + Za && wi.add(e.createCompilerDiagnostic(tt, kt, bt, ia)); + } + function Uu() { + if (Zt === void 0) { + Zt = false; + var Kr = e.getTsConfigObjectLiteralExpression(de.configFile); + if (Kr) + for (var _i = 0, Ei = e.getPropertyAssignment(Kr, "compilerOptions"); _i < Ei.length; _i++) { + var tt = Ei[_i]; + if (e.isObjectLiteralExpression(tt.initializer)) { + Zt = tt.initializer; + break; + } + } + } + return Zt || void 0; + } + function Ql(Kr, _i, Ei, tt, kt, bt, ia, Xt) { + for (var Za = e.getPropertyAssignment(Kr, Ei, tt), bn = 0, _a = Za; bn < _a.length; bn++) { + var qa = _a[bn]; + wi.add(e.createDiagnosticForNodeInSourceFile(de.configFile, _i ? qa.name : qa.initializer, kt, bt, ia, Xt)); + } + return !!Za.length; + } + function xl(Kr, _i) { + Wt.set(Vi(Kr), true), wi.add(_i); + } + function Ya(Kr) { + if (de.noEmit) + return false; + var _i = Vi(Kr); + if (Da(_i)) + return false; + var Ei = e.outFile(de); + if (Ei) + return du(_i, Ei) || du(_i, e.removeFileExtension(Ei) + ".d.ts"); + if (de.declarationDir && e.containsPath(de.declarationDir, _i, Xi, !pe.useCaseSensitiveFileNames())) + return true; + if (de.outDir) + return e.containsPath(de.outDir, _i, Xi, !pe.useCaseSensitiveFileNames()); + if (e.fileExtensionIsOneOf(_i, e.supportedJSExtensionsFlat) || e.isDeclarationFileName(_i)) { + var tt = e.removeFileExtension(_i); + return !!Da(tt + ".ts") || !!Da(tt + ".tsx"); + } + return false; + } + function du(Kr, _i) { + return e.comparePaths(Kr, _i, Xi, !pe.useCaseSensitiveFileNames()) === 0; + } + function vc() { + return pe.getSymlinkCache ? pe.getSymlinkCache() : (Br || (Br = e.createSymlinkCache(Xi, ua)), Ye && yr && !Br.hasProcessedResolutions() && Br.setSymlinksFromResolutions(Ye, yr), Br); + } + } + e.createProgram = I; + function l(Z) { + var Be, ge = Z.compilerHost.fileExists, Re = Z.compilerHost.directoryExists, ze = Z.compilerHost.getDirectories, Ee = Z.compilerHost.realpath; + if (!Z.useSourceOfProjectReferenceRedirect) + return { onProgramCreateComplete: e.noop, fileExists: Ie }; + Z.compilerHost.fileExists = Ie; + var He; + return Re && (He = Z.compilerHost.directoryExists = function(Ae) { + return Re.call(Z.compilerHost, Ae) ? (de(Ae), true) : Z.getResolvedProjectReferences() ? (Be || (Be = new e.Set(), Z.forEachResolvedProjectReference(function(er) { + var ir = e.outFile(er.commandLine.options); + if (ir) + Be.add(e.getDirectoryPath(Z.toPath(ir))); + else { + var Cr = er.commandLine.options.declarationDir || er.commandLine.options.outDir; + Cr && Be.add(Z.toPath(Cr)); + } + })), ye(Ae, false)) : false; + }), ze && (Z.compilerHost.getDirectories = function(Ae) { + return !Z.getResolvedProjectReferences() || Re && Re.call(Z.compilerHost, Ae) ? ze.call(Z.compilerHost, Ae) : []; + }), Ee && (Z.compilerHost.realpath = function(Ae) { + var er; + return ((er = Z.getSymlinkCache().getSymlinkedFiles()) === null || er === void 0 ? void 0 : er.get(Z.toPath(Ae))) || Ee.call(Z.compilerHost, Ae); + }), { onProgramCreateComplete: rr, fileExists: Ie, directoryExists: He }; + function rr() { + Z.compilerHost.fileExists = ge, Z.compilerHost.directoryExists = Re, Z.compilerHost.getDirectories = ze; + } + function Ie(Ae) { + return ge.call(Z.compilerHost, Ae) ? true : !Z.getResolvedProjectReferences() || !e.isDeclarationFileName(Ae) ? false : ye(Ae, true); + } + function _e(Ae) { + var er = Z.getSourceOfProjectReferenceRedirect(Z.toPath(Ae)); + return er !== void 0 ? e.isString(er) ? ge.call(Z.compilerHost, er) : true : void 0; + } + function we(Ae) { + var er = Z.toPath(Ae), ir = "".concat(er).concat(e.directorySeparator); + return e.forEachKey(Be, function(Cr) { + return er === Cr || e.startsWith(Cr, ir) || e.startsWith(er, "".concat(Cr, "/")); + }); + } + function de(Ae) { + var er; + if (!(!Z.getResolvedProjectReferences() || e.containsIgnoredPath(Ae)) && !(!Ee || !e.stringContains(Ae, e.nodeModulesPathPart))) { + var ir = Z.getSymlinkCache(), Cr = e.ensureTrailingDirectorySeparator(Z.toPath(Ae)); + if (!(!((er = ir.getSymlinkedDirectories()) === null || er === void 0) && er.has(Cr))) { + var Ye = e.normalizePath(Ee.call(Z.compilerHost, Ae)), Br; + if (Ye === Ae || (Br = e.ensureTrailingDirectorySeparator(Z.toPath(Ye))) === Cr) { + ir.setSymlinkedDirectory(Cr, false); + return; + } + ir.setSymlinkedDirectory(Ae, { real: e.ensureTrailingDirectorySeparator(Ye), realPath: Br }); + } + } + } + function ye(Ae, er) { + var ir, Cr = er ? function(n) { + return _e(n); + } : function(n) { + return we(n); + }, Ye = Cr(Ae); + if (Ye !== void 0) + return Ye; + var Br = Z.getSymlinkCache(), Er = Br.getSymlinkedDirectories(); + if (!Er) + return false; + var Ne = Z.toPath(Ae); + return e.stringContains(Ne, e.nodeModulesPathPart) ? er && ((ir = Br.getSymlinkedFiles()) === null || ir === void 0 ? void 0 : ir.has(Ne)) ? true : e.firstDefinedIterator(Er.entries(), function(n) { + var lr = n[0], be = n[1]; + if (!(!be || !e.startsWith(Ne, lr))) { + var Ge = Cr(Ne.replace(lr, be.realPath)); + if (er && Ge) { + var ur = e.getNormalizedAbsolutePath(Ae, Z.compilerHost.getCurrentDirectory()); + Br.setSymlinkedFile(Ne, "".concat(be.real).concat(ur.replace(new RegExp(lr, "i"), ""))); + } + return Ge; + } + }) || false : false; + } + } + e.emitSkippedWithNoDiagnostics = { diagnostics: e.emptyArray, sourceMaps: void 0, emittedFiles: void 0, emitSkipped: true }; + function d(Z, Be, ge, Re) { + var ze = Z.getCompilerOptions(); + if (ze.noEmit) + return Z.getSemanticDiagnostics(Be, Re), Be || e.outFile(ze) ? e.emitSkippedWithNoDiagnostics : Z.emitBuildInfo(ge, Re); + if (!!ze.noEmitOnError) { + var Ee = Ve(Ve(Ve(Ve([], Z.getOptionsDiagnostics(Re), true), Z.getSyntacticDiagnostics(Be, Re), true), Z.getGlobalDiagnostics(Re), true), Z.getSemanticDiagnostics(Be, Re), true); + if (Ee.length === 0 && e.getEmitDeclarations(Z.getCompilerOptions()) && (Ee = Z.getDeclarationDiagnostics(void 0, Re)), !!Ee.length) { + var He; + if (!Be && !e.outFile(ze)) { + var rr = Z.emitBuildInfo(ge, Re); + rr.diagnostics && (Ee = Ve(Ve([], Ee, true), rr.diagnostics, true)), He = rr.emittedFiles; + } + return { diagnostics: Ee, sourceMaps: void 0, emittedFiles: He, emitSkipped: true }; + } + } + } + e.handleNoEmitOptions = d; + function D(Z, Be) { + return e.filter(Z, function(ge) { + return !ge.skippedOn || !Be[ge.skippedOn]; + }); + } + e.filterSemanticDiagnostics = D; + function fe(Z, Be) { + return Be === void 0 && (Be = Z), { fileExists: function(ge) { + return Be.fileExists(ge); + }, readDirectory: function(ge, Re, ze, Ee, He) { + return e.Debug.assertIsDefined(Be.readDirectory, "'CompilerHost.readDirectory' must be implemented to correctly process 'projectReferences'"), Be.readDirectory(ge, Re, ze, Ee, He); + }, readFile: function(ge) { + return Be.readFile(ge); + }, useCaseSensitiveFileNames: Z.useCaseSensitiveFileNames(), getCurrentDirectory: function() { + return Z.getCurrentDirectory(); + }, onUnRecoverableConfigFileDiagnostic: Z.onUnRecoverableConfigFileDiagnostic || e.returnUndefined, trace: Z.trace ? function(ge) { + return Z.trace(ge); + } : void 0 }; + } + e.parseConfigHostFromCompilerHostLike = fe; + function g(Z, Be, ge) { + if (!Z) + return e.emptyArray; + for (var Re, ze = 0; ze < Z.length; ze++) { + var Ee = Z[ze], He = Be(Ee, ze); + if (Ee.prepend && He && He.options) { + var rr = e.outFile(He.options); + if (!rr) + continue; + var Ie = e.getOutputPathsForBundle(He.options, true), _e = Ie.jsFilePath, we = Ie.sourceMapFilePath, de = Ie.declarationFilePath, ye = Ie.declarationMapPath, Ae = Ie.buildInfoPath, er = e.createInputFiles(ge, _e, we, de, ye, Ae); + (Re || (Re = [])).push(er); + } + } + return Re || e.emptyArray; + } + e.createPrependNodes = g; + function ne(Z, Be) { + var ge = Be || Z; + return e.resolveConfigFileProjectName(ge.path); + } + e.resolveProjectReferencePath = ne; + function ue(Z, Be) { + var ge = Be.extension; + switch (ge) { + case ".ts": + case ".d.ts": + return; + case ".tsx": + return Re(); + case ".jsx": + return Re() || ze(); + case ".js": + return ze(); + case ".json": + return Ee(); + } + function Re() { + return Z.jsx ? void 0 : e.Diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set; + } + function ze() { + return e.getAllowJSCompilerOption(Z) || !e.getStrictOptionValue(Z, "noImplicitAny") ? void 0 : e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type; + } + function Ee() { + return Z.resolveJsonModule ? void 0 : e.Diagnostics.Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used; + } + } + e.getResolutionDiagnostic = ue; + function We(Z) { + for (var Be = Z.imports, ge = Z.moduleAugmentations, Re = Be.map(function(rr) { + return rr.text; + }), ze = 0, Ee = ge; ze < Ee.length; ze++) { + var He = Ee[ze]; + He.kind === 10 && Re.push(He.text); + } + return Re; + } + function Fe(Z, Be) { + var ge = Z.imports, Re = Z.moduleAugmentations; + if (Be < ge.length) + return ge[Be]; + for (var ze = ge.length, Ee = 0, He = Re; Ee < He.length; Ee++) { + var rr = He[Ee]; + if (rr.kind === 10) { + if (Be === ze) + return rr; + ze++; + } + } + e.Debug.fail("should never ask for module name at index higher than possible module name"); + } + e.getModuleNameStringLiteralAt = Fe; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(w, B, E, Q, le, N) { + var p = [], m = w.emit(B, T, Q, E, le, N), G = m.emitSkipped, oe = m.diagnostics, f = m.exportedModulesFromDeclarationEmit; + return { outputFiles: p, emitSkipped: G, diagnostics: oe, exportedModulesFromDeclarationEmit: f }; + function T(K, b, se) { + p.push({ name: K, writeByteOrderMark: se, text: b }); + } + } + e.getFileEmitOutput = a; + var C; + (function(w) { + function B() { + function A(y, V, L) { + var P = { clone: function() { + return A(new e.Map(y), new e.Map(V), L && new e.Set(L)); + }, forEach: function(k) { + return y.forEach(k); + }, getKeys: function(k) { + return V.get(k); + }, getValues: function(k) { + return y.get(k); + }, hasKey: function(k) { + return y.has(k); + }, keys: function() { + return y.keys(); + }, deletedKeys: function() { + return L; + }, deleteKey: function(k) { + (L || (L = new e.Set())).add(k); + var Y = y.get(k); + return Y ? (Y.forEach(function(U) { + return Q(V, U, k); + }), y.delete(k), true) : false; + }, set: function(k, Y) { + L == null || L.delete(k); + var U = y.get(k); + return y.set(k, Y), U == null || U.forEach(function(j) { + Y.has(j) || Q(V, j, k); + }), Y.forEach(function(j) { + U != null && U.has(j) || E(V, j, k); + }), P; + }, clear: function() { + y.clear(), V.clear(), L == null || L.clear(); + } }; + return P; + } + return A(new e.Map(), new e.Map(), void 0); + } + w.createManyToManyPathMap = B; + function E(A, y, V) { + var L = A.get(y); + L || (L = new e.Set(), A.set(y, L)), L.add(V); + } + function Q(A, y, V) { + var L = A.get(y); + return L != null && L.delete(V) ? (L.size || A.delete(y), true) : false; + } + function le(A) { + return e.mapDefined(A.declarations, function(y) { + var V; + return (V = e.getSourceFileOfNode(y)) === null || V === void 0 ? void 0 : V.resolvedPath; + }); + } + function N(A, y) { + var V = A.getSymbolAtLocation(y); + return V && le(V); + } + function p(A, y, V, L) { + return e.toPath(A.getProjectReferenceRedirect(y) || y, V, L); + } + function m(A, y, V) { + var L; + if (y.imports && y.imports.length > 0) + for (var P = A.getTypeChecker(), k = 0, Y = y.imports; k < Y.length; k++) { + var U = Y[k], j = N(P, U); + j == null || j.forEach(ge); + } + var H = e.getDirectoryPath(y.resolvedPath); + if (y.referencedFiles && y.referencedFiles.length > 0) + for (var I = 0, l = y.referencedFiles; I < l.length; I++) { + var d = l[I], D = p(A, d.fileName, H, V); + ge(D); + } + if (y.resolvedTypeReferenceDirectiveNames && y.resolvedTypeReferenceDirectiveNames.forEach(function(Re) { + if (!!Re) { + var ze = Re.resolvedFileName, Ee = p(A, ze, H, V); + ge(Ee); + } + }), y.moduleAugmentations.length) + for (var P = A.getTypeChecker(), fe = 0, g = y.moduleAugmentations; fe < g.length; fe++) { + var ne = g[fe]; + if (!!e.isStringLiteral(ne)) { + var ue = P.getSymbolAtLocation(ne); + !ue || Be(ue); + } + } + for (var We = 0, Fe = A.getTypeChecker().getAmbientModules(); We < Fe.length; We++) { + var Z = Fe[We]; + Z.declarations && Z.declarations.length > 1 && Be(Z); + } + return L; + function Be(Re) { + if (!!Re.declarations) + for (var ze = 0, Ee = Re.declarations; ze < Ee.length; ze++) { + var He = Ee[ze], rr = e.getSourceFileOfNode(He); + rr && rr !== y && ge(rr.resolvedPath); + } + } + function ge(Re) { + (L || (L = new e.Set())).add(Re); + } + } + function G(A, y) { + return y && !y.referencedMap == !A; + } + w.canReuseOldState = G; + function oe(A, y, V, L) { + var P = new e.Map(), k = A.getCompilerOptions().module !== e.ModuleKind.None ? B() : void 0, Y = k ? B() : void 0, U = new e.Set(), j = G(k, V); + A.getTypeChecker(); + for (var H = 0, I = A.getSourceFiles(); H < I.length; H++) { + var l = I[H], d = e.Debug.checkDefined(l.version, "Program intended to be used with Builder should have source files with versions set"), D = j ? V.fileInfos.get(l.resolvedPath) : void 0; + if (k) { + var fe = m(A, l, y); + if (fe && k.set(l.resolvedPath, fe), j) { + var g = V.exportedModulesMap.getValues(l.resolvedPath); + g && Y.set(l.resolvedPath, g); + } + } + P.set(l.resolvedPath, { version: d, signature: D && D.signature, affectsGlobalScope: F(l) || void 0, impliedFormat: l.impliedNodeFormat }); + } + return { fileInfos: P, referencedMap: k, exportedModulesMap: Y, hasCalledUpdateShapeSignature: U, useFileVersionAsSignature: !L && !j }; + } + w.create = oe; + function f(A) { + A.allFilesExcludingDefaultLibraryFile = void 0, A.allFileNames = void 0; + } + w.releaseCache = f; + function T(A) { + var y, V; + return { fileInfos: new e.Map(A.fileInfos), referencedMap: (y = A.referencedMap) === null || y === void 0 ? void 0 : y.clone(), exportedModulesMap: (V = A.exportedModulesMap) === null || V === void 0 ? void 0 : V.clone(), hasCalledUpdateShapeSignature: new e.Set(A.hasCalledUpdateShapeSignature), useFileVersionAsSignature: A.useFileVersionAsSignature }; + } + w.clone = T; + function K(A, y, V, L, P, k, Y) { + var U = k || new e.Map(), j = y.getSourceFileByPath(V); + if (!j) + return e.emptyArray; + if (!J(A, y, j, U, L, P, Y)) + return [j]; + var H = (A.referencedMap ? $ : X)(A, y, j, U, L, P, Y); + return k || b(A, U), H; + } + w.getFilesAffectedBy = K; + function b(A, y) { + y.forEach(function(V, L) { + return se(A, V, L); + }); + } + w.updateSignaturesFromCache = b; + function se(A, y, V) { + A.fileInfos.get(V).signature = y, A.hasCalledUpdateShapeSignature.add(V); + } + w.updateSignatureOfFile = se; + function J(A, y, V, L, P, k, Y, U) { + if (U === void 0 && (U = A.useFileVersionAsSignature), e.Debug.assert(!!V), e.Debug.assert(!Y || !!A.exportedModulesMap, "Compute visible to outside map only if visibleToOutsideReferencedMap present in the state"), A.hasCalledUpdateShapeSignature.has(V.resolvedPath) || L.has(V.resolvedPath)) + return false; + var j = A.fileInfos.get(V.resolvedPath); + if (!j) + return e.Debug.fail(); + var H = j.signature, I; + if (!V.isDeclarationFile && !U) { + var l = a(y, V, true, P, void 0, true), d = e.firstOrUndefined(l.outputFiles); + d && (e.Debug.assert(e.isDeclarationFileName(d.name), "File extension for signature expected to be dts", function() { + return "Found: ".concat(e.getAnyExtensionFromPath(d.name), " for ").concat(d.name, ":: All output files: ").concat(JSON.stringify(l.outputFiles.map(function(fe) { + return fe.name; + }))); + }), I = (k || e.generateDjb2Hash)(d.text), Y && I !== H && ie(V, l.exportedModulesFromDeclarationEmit, Y)); + } + if (I === void 0 && (I = V.version, Y && I !== H)) { + var D = A.referencedMap ? A.referencedMap.getValues(V.resolvedPath) : void 0; + D ? Y.set(V.resolvedPath, D) : Y.deleteKey(V.resolvedPath); + } + return L.set(V.resolvedPath, I), I !== H; + } + w.updateShapeSignature = J; + function ie(A, y, V) { + if (!y) { + V.deleteKey(A.resolvedPath); + return; + } + var L; + y.forEach(function(k) { + return P(le(k)); + }), L ? V.set(A.resolvedPath, L) : V.deleteKey(A.resolvedPath); + function P(k) { + k != null && k.length && (L || (L = new e.Set()), k.forEach(function(Y) { + return L.add(Y); + })); + } + } + w.updateExportedModules = ie; + function R(A, y) { + var V; + y && (e.Debug.assert(!!A.exportedModulesMap), (V = y.deletedKeys()) === null || V === void 0 || V.forEach(function(L) { + return A.exportedModulesMap.deleteKey(L); + }), y.forEach(function(L, P) { + return A.exportedModulesMap.set(P, L); + })); + } + w.updateExportedFilesMapFromCache = R; + function q(A, y, V) { + var L = y.getCompilerOptions(); + if (e.outFile(L) || !A.referencedMap || F(V)) + return O(A, y); + for (var P = new e.Set(), k = [V.resolvedPath]; k.length; ) { + var Y = k.pop(); + if (!P.has(Y)) { + P.add(Y); + var U = A.referencedMap.getValues(Y); + if (U) + for (var j = U.keys(), H = j.next(); !H.done; H = j.next()) + k.push(H.value); + } + } + return e.arrayFrom(e.mapDefinedIterator(P.keys(), function(I) { + var l, d; + return (d = (l = y.getSourceFileByPath(I)) === null || l === void 0 ? void 0 : l.fileName) !== null && d !== void 0 ? d : I; + })); + } + w.getAllDependencies = q; + function O(A, y) { + if (!A.allFileNames) { + var V = y.getSourceFiles(); + A.allFileNames = V === e.emptyArray ? e.emptyArray : V.map(function(L) { + return L.fileName; + }); + } + return A.allFileNames; + } + function ve(A, y) { + var V = A.referencedMap.getKeys(y); + return V ? e.arrayFrom(V.keys()) : []; + } + w.getReferencedByPaths = ve; + function ee(A) { + for (var y = 0, V = A.statements; y < V.length; y++) { + var L = V[y]; + if (!e.isModuleWithStringLiteralName(L)) + return false; + } + return true; + } + function he(A) { + return e.some(A.moduleAugmentations, function(y) { + return e.isGlobalScopeAugmentation(y.parent); + }); + } + function F(A) { + return he(A) || !e.isExternalOrCommonJsModule(A) && !e.isJsonSourceFile(A) && !ee(A); + } + function x(A, y, V) { + if (A.allFilesExcludingDefaultLibraryFile) + return A.allFilesExcludingDefaultLibraryFile; + var L; + V && U(V); + for (var P = 0, k = y.getSourceFiles(); P < k.length; P++) { + var Y = k[P]; + Y !== V && U(Y); + } + return A.allFilesExcludingDefaultLibraryFile = L || e.emptyArray, A.allFilesExcludingDefaultLibraryFile; + function U(j) { + y.isSourceFileDefaultLibrary(j) || (L || (L = [])).push(j); + } + } + w.getAllFilesExcludingDefaultLibraryFile = x; + function X(A, y, V) { + var L = y.getCompilerOptions(); + return L && e.outFile(L) ? [V] : x(A, y, V); + } + function $(A, y, V, L, P, k, Y) { + if (F(V)) + return x(A, y, V); + var U = y.getCompilerOptions(); + if (U && (U.isolatedModules || e.outFile(U))) + return [V]; + var j = new e.Map(); + j.set(V.resolvedPath, V); + for (var H = ve(A, V.resolvedPath); H.length > 0; ) { + var I = H.pop(); + if (!j.has(I)) { + var l = y.getSourceFileByPath(I); + j.set(I, l), l && J(A, y, l, L, P, k, Y) && H.push.apply(H, ve(A, l.resolvedPath)); + } + } + return e.arrayFrom(e.mapDefinedIterator(j.values(), function(d) { + return d; + })); + } + })(C = e.BuilderState || (e.BuilderState = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(j) { + j[j.DtsOnly = 0] = "DtsOnly", j[j.Full = 1] = "Full"; + })(a = e.BuilderFileEmit || (e.BuilderFileEmit = {})); + function C(j, H) { + return j === H || j !== void 0 && H !== void 0 && j.size === H.size && !e.forEachKey(j, function(I) { + return !H.has(I); + }); + } + function w(j, H, I, l) { + var d = e.BuilderState.create(j, H, I, l); + d.program = j; + var D = j.getCompilerOptions(); + d.compilerOptions = D, e.outFile(D) || (d.semanticDiagnosticsPerFile = new e.Map()), d.changedFilesSet = new e.Set(); + var fe = e.BuilderState.canReuseOldState(d.referencedMap, I), g = fe ? I.compilerOptions : void 0, ne = fe && I.semanticDiagnosticsPerFile && !!d.semanticDiagnosticsPerFile && !e.compilerOptionsAffectSemanticDiagnostics(D, g); + if (fe) { + if (!I.currentChangedFilePath) { + var ue = I.currentAffectedFilesSignatures; + e.Debug.assert(!I.affectedFiles && (!ue || !ue.size), "Cannot reuse if only few affected files of currentChangedFile were iterated"); + } + var We = I.changedFilesSet; + ne && e.Debug.assert(!We || !e.forEachKey(We, function(Re) { + return I.semanticDiagnosticsPerFile.has(Re); + }), "Semantic diagnostics shouldnt be available for changed files"), We == null || We.forEach(function(Re) { + return d.changedFilesSet.add(Re); + }), !e.outFile(D) && I.affectedFilesPendingEmit && (d.affectedFilesPendingEmit = I.affectedFilesPendingEmit.slice(), d.affectedFilesPendingEmitKind = I.affectedFilesPendingEmitKind && new e.Map(I.affectedFilesPendingEmitKind), d.affectedFilesPendingEmitIndex = I.affectedFilesPendingEmitIndex, d.seenAffectedFiles = new e.Set()); + } + var Fe = d.referencedMap, Z = fe ? I.referencedMap : void 0, Be = ne && !D.skipLibCheck == !g.skipLibCheck, ge = Be && !D.skipDefaultLibCheck == !g.skipDefaultLibCheck; + return d.fileInfos.forEach(function(Re, ze) { + var Ee, He; + if (!fe || !(Ee = I.fileInfos.get(ze)) || Ee.version !== Re.version || !C(He = Fe && Fe.getValues(ze), Z && Z.getValues(ze)) || He && e.forEachKey(He, function(_e) { + return !d.fileInfos.has(_e) && I.fileInfos.has(_e); + })) + d.changedFilesSet.add(ze); + else if (ne) { + var rr = j.getSourceFileByPath(ze); + if (rr.isDeclarationFile && !Be || rr.hasNoDefaultLib && !ge) + return; + var Ie = I.semanticDiagnosticsPerFile.get(ze); + Ie && (d.semanticDiagnosticsPerFile.set(ze, I.hasReusableDiagnostic ? B(Ie, j, H) : Ie), d.semanticDiagnosticsFromOldState || (d.semanticDiagnosticsFromOldState = new e.Set()), d.semanticDiagnosticsFromOldState.add(ze)); + } + }), fe && e.forEachEntry(I.fileInfos, function(Re, ze) { + return Re.affectsGlobalScope && !d.fileInfos.has(ze); + }) ? e.BuilderState.getAllFilesExcludingDefaultLibraryFile(d, j, void 0).forEach(function(Re) { + return d.changedFilesSet.add(Re.resolvedPath); + }) : g && !e.outFile(D) && e.compilerOptionsAffectEmit(D, g) && (j.getSourceFiles().forEach(function(Re) { + return P(d, Re.resolvedPath, 1); + }), e.Debug.assert(!d.seenAffectedFiles || !d.seenAffectedFiles.size), d.seenAffectedFiles = d.seenAffectedFiles || new e.Set()), fe && e.forEachEntry(I.fileInfos, function(Re, ze) { + d.fileInfos.has(ze) && d.fileInfos.get(ze).impliedFormat !== Re.impliedFormat && d.changedFilesSet.add(ze); + }), d.buildInfoEmitPending = !!d.changedFilesSet.size, d; + } + function B(j, H, I) { + if (!j.length) + return e.emptyArray; + var l = e.getDirectoryPath(e.getNormalizedAbsolutePath(e.getTsBuildInfoEmitOutputFilePath(H.getCompilerOptions()), H.getCurrentDirectory())); + return j.map(function(D) { + var fe = E(D, H, d); + fe.reportsUnnecessary = D.reportsUnnecessary, fe.reportsDeprecated = D.reportDeprecated, fe.source = D.source, fe.skippedOn = D.skippedOn; + var g = D.relatedInformation; + return fe.relatedInformation = g ? g.length ? g.map(function(ne) { + return E(ne, H, d); + }) : [] : void 0, fe; + }); + function d(D) { + return e.toPath(D, l, I); + } + } + function E(j, H, I) { + var l = j.file; + return Ke(Ke({}, j), { file: l ? H.getSourceFileByPath(I(l)) : void 0 }); + } + function Q(j) { + e.BuilderState.releaseCache(j), j.program = void 0; + } + function le(j) { + var H, I = e.BuilderState.clone(j); + return I.semanticDiagnosticsPerFile = j.semanticDiagnosticsPerFile && new e.Map(j.semanticDiagnosticsPerFile), I.changedFilesSet = new e.Set(j.changedFilesSet), I.affectedFiles = j.affectedFiles, I.affectedFilesIndex = j.affectedFilesIndex, I.currentChangedFilePath = j.currentChangedFilePath, I.currentAffectedFilesSignatures = j.currentAffectedFilesSignatures && new e.Map(j.currentAffectedFilesSignatures), I.currentAffectedFilesExportedModulesMap = (H = j.currentAffectedFilesExportedModulesMap) === null || H === void 0 ? void 0 : H.clone(), I.seenAffectedFiles = j.seenAffectedFiles && new e.Set(j.seenAffectedFiles), I.cleanedDiagnosticsOfLibFiles = j.cleanedDiagnosticsOfLibFiles, I.semanticDiagnosticsFromOldState = j.semanticDiagnosticsFromOldState && new e.Set(j.semanticDiagnosticsFromOldState), I.program = j.program, I.compilerOptions = j.compilerOptions, I.affectedFilesPendingEmit = j.affectedFilesPendingEmit && j.affectedFilesPendingEmit.slice(), I.affectedFilesPendingEmitKind = j.affectedFilesPendingEmitKind && new e.Map(j.affectedFilesPendingEmitKind), I.affectedFilesPendingEmitIndex = j.affectedFilesPendingEmitIndex, I.seenEmittedFiles = j.seenEmittedFiles && new e.Map(j.seenEmittedFiles), I.programEmitComplete = j.programEmitComplete, I; + } + function N(j, H) { + e.Debug.assert(!H || !j.affectedFiles || j.affectedFiles[j.affectedFilesIndex - 1] !== H || !j.semanticDiagnosticsPerFile.has(H.resolvedPath)); + } + function p(j, H, I, l) { + for (var d; ; ) { + var D = j.affectedFiles; + if (D) { + for (var fe = j.seenAffectedFiles, g = j.affectedFilesIndex; g < D.length; ) { + var ne = D[g]; + if (!fe.has(ne.resolvedPath)) + return j.affectedFilesIndex = g, f(j, ne, H, I, l), ne; + g++; + } + j.changedFilesSet.delete(j.currentChangedFilePath), j.currentChangedFilePath = void 0, e.BuilderState.updateSignaturesFromCache(j, j.currentAffectedFilesSignatures), j.currentAffectedFilesSignatures.clear(), e.BuilderState.updateExportedFilesMapFromCache(j, j.currentAffectedFilesExportedModulesMap), (d = j.currentAffectedFilesExportedModulesMap) === null || d === void 0 || d.clear(), j.affectedFiles = void 0; + } + var ue = j.changedFilesSet.keys().next(); + if (ue.done) + return; + var We = e.Debug.checkDefined(j.program), Fe = We.getCompilerOptions(); + if (e.outFile(Fe)) + return e.Debug.assert(!j.semanticDiagnosticsPerFile), We; + j.currentAffectedFilesSignatures || (j.currentAffectedFilesSignatures = new e.Map()), j.exportedModulesMap && (j.currentAffectedFilesExportedModulesMap || (j.currentAffectedFilesExportedModulesMap = e.BuilderState.createManyToManyPathMap())), j.affectedFiles = e.BuilderState.getFilesAffectedBy(j, We, ue.value, H, I, j.currentAffectedFilesSignatures, j.currentAffectedFilesExportedModulesMap), j.currentChangedFilePath = ue.value, j.affectedFilesIndex = 0, j.seenAffectedFiles || (j.seenAffectedFiles = new e.Set()); + } + } + function m(j) { + j.affectedFilesPendingEmit = void 0, j.affectedFilesPendingEmitKind = void 0, j.affectedFilesPendingEmitIndex = void 0; + } + function G(j) { + var H = j.affectedFilesPendingEmit; + if (H) { + for (var I = j.seenEmittedFiles || (j.seenEmittedFiles = new e.Map()), l = j.affectedFilesPendingEmitIndex; l < H.length; l++) { + var d = e.Debug.checkDefined(j.program).getSourceFileByPath(H[l]); + if (d) { + var D = I.get(d.resolvedPath), fe = e.Debug.checkDefined(e.Debug.checkDefined(j.affectedFilesPendingEmitKind).get(d.resolvedPath)); + if (D === void 0 || D < fe) + return j.affectedFilesPendingEmitIndex = l, { affectedFile: d, emitKind: fe }; + } + } + m(j); + } + } + function oe(j) { + if (!j.cleanedDiagnosticsOfLibFiles) { + j.cleanedDiagnosticsOfLibFiles = true; + var H = e.Debug.checkDefined(j.program), I = H.getCompilerOptions(); + e.forEach(H.getSourceFiles(), function(l) { + return H.isSourceFileDefaultLibrary(l) && !e.skipTypeChecking(l, I, H) && K(j, l.resolvedPath); + }); + } + } + function f(j, H, I, l, d) { + var D; + if (K(j, H.resolvedPath), j.allFilesExcludingDefaultLibraryFile === j.affectedFiles) { + oe(j), e.BuilderState.updateShapeSignature(j, e.Debug.checkDefined(j.program), H, e.Debug.checkDefined(j.currentAffectedFilesSignatures), I, l, j.currentAffectedFilesExportedModulesMap); + return; + } + e.Debug.assert(j.hasCalledUpdateShapeSignature.has(H.resolvedPath) || ((D = j.currentAffectedFilesSignatures) === null || D === void 0 ? void 0 : D.has(H.resolvedPath)), "Signature not updated for affected file: ".concat(H.fileName)), !j.compilerOptions.assumeChangesOnlyAffectDirectDependencies && ie(j, H, I, l, d); + } + function T(j, H, I, l, d) { + if (K(j, H), !j.changedFilesSet.has(H)) { + var D = e.Debug.checkDefined(j.program), fe = D.getSourceFileByPath(H); + fe && (e.BuilderState.updateShapeSignature(j, D, fe, e.Debug.checkDefined(j.currentAffectedFilesSignatures), I, l, j.currentAffectedFilesExportedModulesMap, !d.disableUseFileVersionAsSignature), e.getEmitDeclarations(j.compilerOptions) && P(j, H, 0)); + } + } + function K(j, H) { + return j.semanticDiagnosticsFromOldState ? (j.semanticDiagnosticsFromOldState.delete(H), j.semanticDiagnosticsPerFile.delete(H), !j.semanticDiagnosticsFromOldState.size) : true; + } + function b(j, H) { + var I = e.Debug.checkDefined(j.currentAffectedFilesSignatures).get(H), l = e.Debug.checkDefined(j.fileInfos.get(H)).signature; + return I !== l; + } + function se(j, H, I) { + var l = j.currentAffectedFilesExportedModulesMap.getKeys(H), d = l && e.forEachKey(l, I); + return d || (l = j.exportedModulesMap.getKeys(H), l && e.forEachKey(l, function(D) { + var fe; + return !j.currentAffectedFilesExportedModulesMap.hasKey(D) && !(!((fe = j.currentAffectedFilesExportedModulesMap.deletedKeys()) === null || fe === void 0) && fe.has(D)) ? I(D) : void 0; + })); + } + function J(j, H, I, l, d) { + var D; + return !((D = j.fileInfos.get(H)) === null || D === void 0) && D.affectsGlobalScope ? (e.BuilderState.getAllFilesExcludingDefaultLibraryFile(j, j.program, void 0).forEach(function(fe) { + return T(j, fe.resolvedPath, I, l, d); + }), oe(j), true) : false; + } + function ie(j, H, I, l, d) { + if (!(!j.exportedModulesMap || !j.changedFilesSet.has(H.resolvedPath)) && !!b(j, H.resolvedPath)) { + if (j.compilerOptions.isolatedModules) { + var D = new e.Map(); + D.set(H.resolvedPath, true); + for (var fe = e.BuilderState.getReferencedByPaths(j, H.resolvedPath); fe.length > 0; ) { + var g = fe.pop(); + if (!D.has(g)) { + if (D.set(g, true), J(j, g, I, l, d)) + return; + if (T(j, g, I, l, d), b(j, g)) { + var ne = e.Debug.checkDefined(j.program).getSourceFileByPath(g); + fe.push.apply(fe, e.BuilderState.getReferencedByPaths(j, ne.resolvedPath)); + } + } + } + } + e.Debug.assert(!!j.currentAffectedFilesExportedModulesMap); + var ue = new e.Set(); + se(j, H.resolvedPath, function(We) { + if (J(j, We, I, l, d)) + return true; + var Fe = j.referencedMap.getKeys(We); + return Fe && e.forEachKey(Fe, function(Z) { + return R(j, Z, ue, I, l, d); + }); + }); + } + } + function R(j, H, I, l, d, D) { + var fe; + if (!!e.tryAddToSet(I, H)) { + if (J(j, H, l, d, D)) + return true; + T(j, H, l, d, D), e.Debug.assert(!!j.currentAffectedFilesExportedModulesMap), se(j, H, function(g) { + return R(j, g, I, l, d, D); + }), (fe = j.referencedMap.getKeys(H)) === null || fe === void 0 || fe.forEach(function(g) { + return !I.has(g) && T(j, g, l, d, D); + }); + } + } + function q(j, H, I, l, d) { + d ? j.buildInfoEmitPending = false : H === j.program ? (j.changedFilesSet.clear(), j.programEmitComplete = true) : (j.seenAffectedFiles.add(H.resolvedPath), I !== void 0 && (j.seenEmittedFiles || (j.seenEmittedFiles = new e.Map())).set(H.resolvedPath, I), l ? (j.affectedFilesPendingEmitIndex++, j.buildInfoEmitPending = true) : j.affectedFilesIndex++); + } + function O(j, H, I) { + return q(j, I), { result: H, affected: I }; + } + function ve(j, H, I, l, d, D) { + return q(j, I, l, d, D), { result: H, affected: I }; + } + function ee(j, H, I) { + return e.concatenate(he(j, H, I), e.Debug.checkDefined(j.program).getProgramDiagnostics(H)); + } + function he(j, H, I) { + var l = H.resolvedPath; + if (j.semanticDiagnosticsPerFile) { + var d = j.semanticDiagnosticsPerFile.get(l); + if (d) + return e.filterSemanticDiagnostics(d, j.compilerOptions); + } + var D = e.Debug.checkDefined(j.program).getBindAndCheckDiagnostics(H, I); + return j.semanticDiagnosticsPerFile && j.semanticDiagnosticsPerFile.set(l, D), e.filterSemanticDiagnostics(D, j.compilerOptions); + } + function F(j, H) { + if (e.outFile(j.compilerOptions)) + return; + var I = e.Debug.checkDefined(j.program).getCurrentDirectory(), l = e.getDirectoryPath(e.getNormalizedAbsolutePath(e.getTsBuildInfoEmitOutputFilePath(j.compilerOptions), I)), d = [], D = new e.Map(), fe, g, ne = e.arrayFrom(j.fileInfos.entries(), function(Ae) { + var er = Ae[0], ir = Ae[1], Cr = de(er); + e.Debug.assert(d[Cr - 1] === we(er)); + var Ye = j.currentAffectedFilesSignatures && j.currentAffectedFilesSignatures.get(er), Br = Ye != null ? Ye : ir.signature; + return ir.version === Br ? ir.affectsGlobalScope || ir.impliedFormat ? { version: ir.version, signature: void 0, affectsGlobalScope: ir.affectsGlobalScope, impliedFormat: ir.impliedFormat } : ir.version : Br !== void 0 ? Ye === void 0 ? ir : { version: ir.version, signature: Ye, affectsGlobalScope: ir.affectsGlobalScope, impliedFormat: ir.impliedFormat } : { version: ir.version, signature: false, affectsGlobalScope: ir.affectsGlobalScope, impliedFormat: ir.impliedFormat }; + }), ue; + j.referencedMap && (ue = e.arrayFrom(j.referencedMap.keys()).sort(e.compareStringsCaseSensitive).map(function(Ae) { + return [de(Ae), ye(j.referencedMap.getValues(Ae))]; + })); + var We; + j.exportedModulesMap && (We = e.mapDefined(e.arrayFrom(j.exportedModulesMap.keys()).sort(e.compareStringsCaseSensitive), function(Ae) { + var er; + if (j.currentAffectedFilesExportedModulesMap) { + if (!((er = j.currentAffectedFilesExportedModulesMap.deletedKeys()) === null || er === void 0) && er.has(Ae)) + return; + var ir = j.currentAffectedFilesExportedModulesMap.getValues(Ae); + if (ir) + return [de(Ae), ye(ir)]; + } + return [de(Ae), ye(j.exportedModulesMap.getValues(Ae))]; + })); + var Fe; + if (j.semanticDiagnosticsPerFile) + for (var Z = 0, Be = e.arrayFrom(j.semanticDiagnosticsPerFile.keys()).sort(e.compareStringsCaseSensitive); Z < Be.length; Z++) { + var ge = Be[Z], Re = j.semanticDiagnosticsPerFile.get(ge); + (Fe || (Fe = [])).push(Re.length ? [de(ge), j.hasReusableDiagnostic ? Re : $(Re, we)] : de(ge)); + } + var ze; + if (j.affectedFilesPendingEmit) + for (var Ee = new e.Set(), He = 0, rr = j.affectedFilesPendingEmit.slice(j.affectedFilesPendingEmitIndex).sort(e.compareStringsCaseSensitive); He < rr.length; He++) { + var Ie = rr[He]; + e.tryAddToSet(Ee, Ie) && (ze || (ze = [])).push([de(Ie), j.affectedFilesPendingEmitKind.get(Ie)]); + } + return { fileNames: d, fileInfos: ne, options: x(j.compilerOptions, _e), fileIdsList: fe, referencedMap: ue, exportedModulesMap: We, semanticDiagnosticsPerFile: Fe, affectedFilesPendingEmit: ze }; + function _e(Ae) { + return we(e.getNormalizedAbsolutePath(Ae, I)); + } + function we(Ae) { + return e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(l, Ae, H)); + } + function de(Ae) { + var er = D.get(Ae); + return er === void 0 && (d.push(we(Ae)), D.set(Ae, er = d.length)), er; + } + function ye(Ae) { + var er = e.arrayFrom(Ae.keys(), de).sort(e.compareValues), ir = er.join(), Cr = g == null ? void 0 : g.get(ir); + return Cr === void 0 && ((fe || (fe = [])).push(er), (g || (g = new e.Map())).set(ir, Cr = fe.length)), Cr; + } + } + function x(j, H) { + for (var I, l = e.getOptionsNameMap().optionsNameMap, d = 0, D = e.getOwnKeys(j).sort(e.compareStringsCaseSensitive); d < D.length; d++) { + var fe = D[d], g = fe.toLowerCase(), ne = l.get(g); + ((ne == null ? void 0 : ne.affectsEmit) || (ne == null ? void 0 : ne.affectsSemanticDiagnostics) || g === "strict" || g === "skiplibcheck" || g === "skipdefaultlibcheck") && ((I || (I = {}))[fe] = X(ne, j[fe], H)); + } + return I; + } + function X(j, H, I) { + if (j) { + if (j.type === "list") { + var l = H; + if (j.element.isFilePath && l.length) + return l.map(I); + } else if (j.isFilePath) + return I(H); + } + return H; + } + function $(j, H) { + return e.Debug.assert(!!j.length), j.map(function(I) { + var l = A(I, H); + l.reportsUnnecessary = I.reportsUnnecessary, l.reportDeprecated = I.reportsDeprecated, l.source = I.source, l.skippedOn = I.skippedOn; + var d = I.relatedInformation; + return l.relatedInformation = d ? d.length ? d.map(function(D) { + return A(D, H); + }) : [] : void 0, l; + }); + } + function A(j, H) { + var I = j.file; + return Ke(Ke({}, j), { file: I ? H(I.resolvedPath) : void 0 }); + } + var y; + (function(j) { + j[j.SemanticDiagnosticsBuilderProgram = 0] = "SemanticDiagnosticsBuilderProgram", j[j.EmitAndSemanticDiagnosticsBuilderProgram = 1] = "EmitAndSemanticDiagnosticsBuilderProgram"; + })(y = e.BuilderProgramKind || (e.BuilderProgramKind = {})); + function V(j, H, I, l, d, D) { + var fe, g, ne; + return j === void 0 ? (e.Debug.assert(H === void 0), fe = I, ne = l, e.Debug.assert(!!ne), g = ne.getProgram()) : e.isArray(j) ? (ne = l, g = e.createProgram({ rootNames: j, options: H, host: I, oldProgram: ne && ne.getProgramOrUndefined(), configFileParsingDiagnostics: d, projectReferences: D }), fe = I) : (g = j, fe = H, ne = I, d = l), { host: fe, newProgram: g, oldProgram: ne, configFileParsingDiagnostics: d || e.emptyArray }; + } + e.getBuilderCreationParameters = V; + function L(j, H) { + var I = H.newProgram, l = H.host, d = H.oldProgram, D = H.configFileParsingDiagnostics, fe = d && d.getState(); + if (fe && I === fe.program && D === I.getConfigFileParsingDiagnostics()) + return I = void 0, fe = void 0, d; + var g = e.createGetCanonicalFileName(l.useCaseSensitiveFileNames()), ne = e.maybeBind(l, l.createHash), ue = w(I, g, fe, l.disableUseFileVersionAsSignature), We; + I.getProgramBuildInfo = function() { + return F(ue, g); + }, I = void 0, d = void 0, fe = void 0; + var Fe = function() { + return ue; + }, Z = U(Fe, D); + return Z.getState = Fe, Z.backupState = function() { + e.Debug.assert(We === void 0), We = le(ue); + }, Z.restoreState = function() { + ue = e.Debug.checkDefined(We), We = void 0; + }, Z.getAllDependencies = function(rr) { + return e.BuilderState.getAllDependencies(ue, e.Debug.checkDefined(ue.program), rr); + }, Z.getSemanticDiagnostics = He, Z.emit = ze, Z.releaseProgram = function() { + Q(ue), We = void 0; + }, j === y.SemanticDiagnosticsBuilderProgram ? Z.getSemanticDiagnosticsOfNextAffectedFile = Ee : j === y.EmitAndSemanticDiagnosticsBuilderProgram ? (Z.getSemanticDiagnosticsOfNextAffectedFile = Ee, Z.emitNextAffectedFile = ge, Z.emitBuildInfo = Be) : e.notImplemented(), Z; + function Be(rr, Ie) { + if (ue.buildInfoEmitPending) { + var _e = e.Debug.checkDefined(ue.program).emitBuildInfo(rr || e.maybeBind(l, l.writeFile), Ie); + return ue.buildInfoEmitPending = false, _e; + } + return e.emitSkippedWithNoDiagnostics; + } + function ge(rr, Ie, _e, we) { + var de = p(ue, Ie, ne, l), ye = 1, Ae = false; + if (!de) + if (e.outFile(ue.compilerOptions)) { + var Cr = e.Debug.checkDefined(ue.program); + if (ue.programEmitComplete) + return; + de = Cr; + } else { + var er = G(ue); + if (!er) { + if (!ue.buildInfoEmitPending) + return; + var ir = e.Debug.checkDefined(ue.program); + return ve(ue, ir.emitBuildInfo(rr || e.maybeBind(l, l.writeFile), Ie), ir, 1, false, true); + } + de = er.affectedFile, ye = er.emitKind, Ae = true; + } + return ve(ue, e.Debug.checkDefined(ue.program).emit(de === ue.program ? void 0 : de, de !== ue.program && e.getEmitDeclarations(ue.compilerOptions) && !we ? Re(rr) : rr || e.maybeBind(l, l.writeFile), Ie, _e || ye === 0, we), de, ye, Ae); + } + function Re(rr) { + return function(Ie, _e, we, de, ye, Ae) { + var er; + if (e.isDeclarationFileName(Ie)) { + e.Debug.assert((ye == null ? void 0 : ye.length) === 1); + var ir = ye[0], Cr = ue.fileInfos.get(ir.resolvedPath), Ye = ((er = ue.currentAffectedFilesSignatures) === null || er === void 0 ? void 0 : er.get(ir.resolvedPath)) || Cr.signature; + if (Ye === ir.version) { + var Br = (ne || e.generateDjb2Hash)((Ae == null ? void 0 : Ae.sourceMapUrlPos) !== void 0 ? _e.substring(0, Ae.sourceMapUrlPos) : _e); + Br !== ir.version && (l.storeFilesChangingSignatureDuringEmit && (ue.filesChangingSignature || (ue.filesChangingSignature = new e.Set())).add(ir.resolvedPath), ue.exportedModulesMap && e.BuilderState.updateExportedModules(ir, ir.exportedModulesFromDeclarationEmit, ue.currentAffectedFilesExportedModulesMap || (ue.currentAffectedFilesExportedModulesMap = e.BuilderState.createManyToManyPathMap())), ue.affectedFiles && ue.affectedFilesIndex < ue.affectedFiles.length ? ue.currentAffectedFilesSignatures.set(ir.resolvedPath, Br) : (Cr.signature = Br, ue.exportedModulesMap && e.BuilderState.updateExportedFilesMapFromCache(ue, ue.currentAffectedFilesExportedModulesMap))); + } + } + rr ? rr(Ie, _e, we, de, ye, Ae) : l.writeFile ? l.writeFile(Ie, _e, we, de, ye, Ae) : ue.program.writeFile(Ie, _e, we, de, ye, Ae); + }; + } + function ze(rr, Ie, _e, we, de) { + var ye; + j === y.EmitAndSemanticDiagnosticsBuilderProgram && N(ue, rr); + var Ae = e.handleNoEmitOptions(Z, rr, Ie, _e); + if (Ae) + return Ae; + if (!rr) + if (j === y.EmitAndSemanticDiagnosticsBuilderProgram) { + for (var er = [], ir = false, Cr = void 0, Ye = [], Br = void 0; Br = ge(Ie, _e, we, de); ) + ir = ir || Br.result.emitSkipped, Cr = e.addRange(Cr, Br.result.diagnostics), Ye = e.addRange(Ye, Br.result.emittedFiles), er = e.addRange(er, Br.result.sourceMaps); + return { emitSkipped: ir, diagnostics: Cr || e.emptyArray, emittedFiles: Ye, sourceMaps: er }; + } else + !((ye = ue.affectedFilesPendingEmitKind) === null || ye === void 0) && ye.size && (e.Debug.assert(j === y.SemanticDiagnosticsBuilderProgram), (!we || e.every(ue.affectedFilesPendingEmit, function(Er, Ne) { + return Ne < ue.affectedFilesPendingEmitIndex || ue.affectedFilesPendingEmitKind.get(Er) === 0; + })) && m(ue)); + return e.Debug.checkDefined(ue.program).emit(rr, !e.outFile(ue.compilerOptions) && e.getEmitDeclarations(ue.compilerOptions) && !de ? Re(Ie) : Ie || e.maybeBind(l, l.writeFile), _e, we, de); + } + function Ee(rr, Ie) { + for (; ; ) { + var _e = p(ue, rr, ne, l); + if (_e) { + if (_e === ue.program) + return O(ue, ue.program.getSemanticDiagnostics(void 0, rr), _e); + } else + return; + if ((j === y.EmitAndSemanticDiagnosticsBuilderProgram || ue.compilerOptions.noEmit || ue.compilerOptions.noEmitOnError) && P(ue, _e.resolvedPath, 1), Ie && Ie(_e)) { + q(ue, _e); + continue; + } + return O(ue, ee(ue, _e, rr), _e); + } + } + function He(rr, Ie) { + N(ue, rr); + var _e = e.Debug.checkDefined(ue.program).getCompilerOptions(); + if (e.outFile(_e)) + return e.Debug.assert(!ue.semanticDiagnosticsPerFile), e.Debug.checkDefined(ue.program).getSemanticDiagnostics(rr, Ie); + if (rr) + return ee(ue, rr, Ie); + for (; Ee(Ie); ) + ; + for (var we, de = 0, ye = e.Debug.checkDefined(ue.program).getSourceFiles(); de < ye.length; de++) { + var Ae = ye[de]; + we = e.addRange(we, ee(ue, Ae, Ie)); + } + return we || e.emptyArray; + } + } + e.createBuilderProgram = L; + function P(j, H, I) { + j.affectedFilesPendingEmit || (j.affectedFilesPendingEmit = []), j.affectedFilesPendingEmitKind || (j.affectedFilesPendingEmitKind = new e.Map()); + var l = j.affectedFilesPendingEmitKind.get(H); + j.affectedFilesPendingEmit.push(H), j.affectedFilesPendingEmitKind.set(H, l || I), j.affectedFilesPendingEmitIndex === void 0 && (j.affectedFilesPendingEmitIndex = 0); + } + function k(j) { + return e.isString(j) ? { version: j, signature: j, affectsGlobalScope: void 0, impliedFormat: void 0 } : e.isString(j.signature) ? j : { version: j.version, signature: j.signature === false ? void 0 : j.version, affectsGlobalScope: j.affectsGlobalScope, impliedFormat: j.impliedFormat }; + } + e.toBuilderStateFileInfo = k; + function Y(j, H, I) { + var l, d = e.getDirectoryPath(e.getNormalizedAbsolutePath(H, I.getCurrentDirectory())), D = e.createGetCanonicalFileName(I.useCaseSensitiveFileNames()), fe = j.fileNames.map(We), g = (l = j.fileIdsList) === null || l === void 0 ? void 0 : l.map(function(Re) { + return new e.Set(Re.map(Z)); + }), ne = new e.Map(); + j.fileInfos.forEach(function(Re, ze) { + return ne.set(Z(ze + 1), k(Re)); + }); + var ue = { fileInfos: ne, compilerOptions: j.options ? e.convertToOptionsWithAbsolutePaths(j.options, Fe) : {}, referencedMap: ge(j.referencedMap), exportedModulesMap: ge(j.exportedModulesMap), semanticDiagnosticsPerFile: j.semanticDiagnosticsPerFile && e.arrayToMap(j.semanticDiagnosticsPerFile, function(Re) { + return Z(e.isNumber(Re) ? Re : Re[0]); + }, function(Re) { + return e.isNumber(Re) ? e.emptyArray : Re[1]; + }), hasReusableDiagnostic: true, affectedFilesPendingEmit: e.map(j.affectedFilesPendingEmit, function(Re) { + return Z(Re[0]); + }), affectedFilesPendingEmitKind: j.affectedFilesPendingEmit && e.arrayToMap(j.affectedFilesPendingEmit, function(Re) { + return Z(Re[0]); + }, function(Re) { + return Re[1]; + }), affectedFilesPendingEmitIndex: j.affectedFilesPendingEmit && 0 }; + return { getState: function() { + return ue; + }, backupState: e.noop, restoreState: e.noop, getProgram: e.notImplemented, getProgramOrUndefined: e.returnUndefined, releaseProgram: e.noop, getCompilerOptions: function() { + return ue.compilerOptions; + }, getSourceFile: e.notImplemented, getSourceFiles: e.notImplemented, getOptionsDiagnostics: e.notImplemented, getGlobalDiagnostics: e.notImplemented, getConfigFileParsingDiagnostics: e.notImplemented, getSyntacticDiagnostics: e.notImplemented, getDeclarationDiagnostics: e.notImplemented, getSemanticDiagnostics: e.notImplemented, emit: e.notImplemented, getAllDependencies: e.notImplemented, getCurrentDirectory: e.notImplemented, emitNextAffectedFile: e.notImplemented, getSemanticDiagnosticsOfNextAffectedFile: e.notImplemented, emitBuildInfo: e.notImplemented, close: e.noop }; + function We(Re) { + return e.toPath(Re, d, D); + } + function Fe(Re) { + return e.getNormalizedAbsolutePath(Re, d); + } + function Z(Re) { + return fe[Re - 1]; + } + function Be(Re) { + return g[Re - 1]; + } + function ge(Re) { + if (!!Re) { + var ze = e.BuilderState.createManyToManyPathMap(); + return Re.forEach(function(Ee) { + var He = Ee[0], rr = Ee[1]; + return ze.set(Z(He), Be(rr)); + }), ze; + } + } + } + e.createBuildProgramUsingProgramBuildInfo = Y; + function U(j, H) { + return { getState: e.notImplemented, backupState: e.noop, restoreState: e.noop, getProgram: I, getProgramOrUndefined: function() { + return j().program; + }, releaseProgram: function() { + return j().program = void 0; + }, getCompilerOptions: function() { + return j().compilerOptions; + }, getSourceFile: function(l) { + return I().getSourceFile(l); + }, getSourceFiles: function() { + return I().getSourceFiles(); + }, getOptionsDiagnostics: function(l) { + return I().getOptionsDiagnostics(l); + }, getGlobalDiagnostics: function(l) { + return I().getGlobalDiagnostics(l); + }, getConfigFileParsingDiagnostics: function() { + return H; + }, getSyntacticDiagnostics: function(l, d) { + return I().getSyntacticDiagnostics(l, d); + }, getDeclarationDiagnostics: function(l, d) { + return I().getDeclarationDiagnostics(l, d); + }, getSemanticDiagnostics: function(l, d) { + return I().getSemanticDiagnostics(l, d); + }, emit: function(l, d, D, fe, g) { + return I().emit(l, d, D, fe, g); + }, emitBuildInfo: function(l, d) { + return I().emitBuildInfo(l, d); + }, getAllDependencies: e.notImplemented, getCurrentDirectory: function() { + return I().getCurrentDirectory(); + }, close: e.noop }; + function I() { + return e.Debug.checkDefined(j().program); + } + } + e.createRedirectedBuilderProgram = U; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(B, E, Q, le, N, p) { + return e.createBuilderProgram(e.BuilderProgramKind.SemanticDiagnosticsBuilderProgram, e.getBuilderCreationParameters(B, E, Q, le, N, p)); + } + e.createSemanticDiagnosticsBuilderProgram = a; + function C(B, E, Q, le, N, p) { + return e.createBuilderProgram(e.BuilderProgramKind.EmitAndSemanticDiagnosticsBuilderProgram, e.getBuilderCreationParameters(B, E, Q, le, N, p)); + } + e.createEmitAndSemanticDiagnosticsBuilderProgram = C; + function w(B, E, Q, le, N, p) { + var m = e.getBuilderCreationParameters(B, E, Q, le, N, p), G = m.newProgram, oe = m.configFileParsingDiagnostics; + return e.createRedirectedBuilderProgram(function() { + return { program: G, compilerOptions: G.getCompilerOptions() }; + }, oe); + } + e.createAbstractBuilder = w; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(E) { + return e.endsWith(E, "/node_modules/.staging") ? e.removeSuffix(E, "/.staging") : e.some(e.ignoredPaths, function(Q) { + return e.stringContains(E, Q); + }) ? void 0 : E; + } + e.removeIgnoredPath = a; + function C(E) { + var Q = e.getRootLength(E); + if (E.length === Q) + return false; + var le = E.indexOf(e.directorySeparator, Q); + if (le === -1) + return false; + var N = E.substring(Q, le + 1), p = Q > 1 || E.charCodeAt(0) !== 47; + if (p && E.search(/[a-zA-Z]:/) !== 0 && N.search(/[a-zA-z]\$\//) === 0) { + if (le = E.indexOf(e.directorySeparator, le + 1), le === -1) + return false; + N = E.substring(Q + N.length, le + 1); + } + if (p && N.search(/users\//i) !== 0) + return true; + for (var m = le + 1, G = 2; G > 0; G--) + if (m = E.indexOf(e.directorySeparator, m) + 1, m === 0) + return false; + return true; + } + e.canWatchDirectory = C; + function w(E, Q, le) { + var N, p, m, G = e.createMultiMap(), oe = [], f = e.createMultiMap(), T = false, K, b, se, J = e.memoize(function() { + return E.getCurrentDirectory(); + }), ie = E.getCachedDirectoryStructureHost(), R = new e.Map(), q = e.createCacheWithRedirects(), O = e.createCacheWithRedirects(), ve = e.createModuleResolutionCache(J(), E.getCanonicalFileName, void 0, q, O), ee = new e.Map(), he = e.createCacheWithRedirects(), F = e.createTypeReferenceDirectiveResolutionCache(J(), E.getCanonicalFileName, void 0, ve.getPackageJsonInfoCache(), he), x = [".ts", ".tsx", ".js", ".jsx", ".json"], X = new e.Map(), $ = new e.Map(), A = Q && e.removeTrailingDirectorySeparator(e.getNormalizedAbsolutePath(Q, J())), y = A && E.toPath(A), V = y !== void 0 ? y.split(e.directorySeparator).length : 0, L = new e.Map(); + return { getModuleResolutionCache: function() { + return ve; + }, startRecordingFilesWithChangedResolutions: j, finishRecordingFilesWithChangedResolutions: H, startCachingPerDirectoryResolution: d, finishCachingPerDirectoryResolution: D, resolveModuleNames: We, getResolvedModuleWithFailedLookupLocationsFromCache: Fe, resolveTypeReferenceDirectives: ue, removeResolutionsFromProjectReferenceRedirects: ye, removeResolutionsOfFile: Ae, hasChangedAutomaticTypeDirectiveNames: function() { + return T; + }, invalidateResolutionOfFile: ir, invalidateResolutionsOfFailedLookupLocations: Br, setFilesWithInvalidatedNonRelativeUnresolvedImports: Cr, createHasInvalidatedResolution: l, isFileWithInvalidatedNonRelativeUnresolvedImports: I, updateTypeRootsWatch: be, closeTypeRootsWatch: Ne, clear: U }; + function P(ur) { + return ur.resolvedModule; + } + function k(ur) { + return ur.resolvedTypeReferenceDirective; + } + function Y(ur, yr) { + return ur === void 0 || yr.length <= ur.length ? false : e.startsWith(yr, ur) && yr[ur.length] === e.directorySeparator; + } + function U() { + e.clearMap($, e.closeFileWatcherOf), X.clear(), G.clear(), Ne(), R.clear(), ee.clear(), f.clear(), oe.length = 0, K = void 0, b = void 0, se = void 0, d(), T = false; + } + function j() { + N = []; + } + function H() { + var ur = N; + return N = void 0, ur; + } + function I(ur) { + if (!m) + return false; + var yr = m.get(ur); + return !!yr && !!yr.length; + } + function l(ur) { + if (Br(), ur) + return p = void 0, e.returnTrue; + var yr = p; + return p = void 0, function(Ir) { + return !!yr && yr.has(Ir) || I(Ir); + }; + } + function d() { + ve.clear(), F.clear(), G.forEach(He), G.clear(); + } + function D() { + m = void 0, d(), $.forEach(function(ur, yr) { + ur.refCount === 0 && ($.delete(yr), ur.watcher.close()); + }), T = false; + } + function fe(ur, yr, Ir, wr, Ur, ii, mi) { + var pe, or = e.resolveModuleName(ur, yr, Ir, wr, ve, Ur, mi); + if (!E.getGlobalCache) + return or; + var qr = E.getGlobalCache(); + if (qr !== void 0 && !e.isExternalModuleNameRelative(ur) && !(or.resolvedModule && e.extensionIsTS(or.resolvedModule.extension))) { + var si = e.loadModuleFromGlobalCache(e.Debug.checkDefined(E.globalCacheResolutionModuleName)(ur), E.projectName, Ir, wr, qr, ve), Di = si.resolvedModule, wi = si.failedLookupLocations; + if (Di) + return or.resolvedModule = Di, (pe = or.failedLookupLocations).push.apply(pe, wi), or; + } + return or; + } + function g(ur, yr, Ir, wr, Ur, ii, mi) { + return e.resolveTypeReferenceDirective(ur, yr, Ir, wr, Ur, F, mi); + } + function ne(ur) { + var yr, Ir, wr, Ur = ur.names, ii = ur.containingFile, mi = ur.redirectedReference, pe = ur.cache, or = ur.perDirectoryCacheWithRedirects, qr = ur.loader, si = ur.getResolutionWithResolvedFileName, Di = ur.shouldRetryResolution, wi = ur.reusedNames, Xi = ur.logChanges, et = ur.containingSourceFile, Gi = ur.containingSourceFileMode, Wt = E.toPath(ii), Zt = pe.get(Wt) || pe.set(Wt, e.createModeAwareCache()).get(Wt), _r = e.getDirectoryPath(Wt), pi = or.getOrCreateMapOfCacheRedirects(mi), ae = pi.get(_r); + ae || (ae = e.createModeAwareCache(), pi.set(_r, ae)); + for (var Xe = [], Jr = E.getCompilationSettings(), ti = Xi && I(Wt), Ze = E.getCurrentProgram(), Sr = Ze && Ze.getResolvedProjectReferenceToRedirect(ii), zr = Sr ? !mi || mi.sourceFile.path !== Sr.sourceFile.path : !!mi, Wr = e.createModeAwareCache(), Je = 0, xe = 0, vr = Ur; xe < vr.length; xe++) { + var mr = vr[xe], Ar = e.isString(mr) ? mr : mr.fileName.toLowerCase(), Oe = e.isString(mr) ? et ? e.getModeForResolutionAtIndex(et, Je) : void 0 : e.getModeForFileReference(mr, Gi); + Je++; + var nr = Zt.get(Ar, Oe); + if (!Wr.has(Ar, Oe) && zr || !nr || nr.isInvalidated || ti && !e.isExternalModuleNameRelative(Ar) && Di(nr)) { + var Mr = nr, Pe = ae.get(Ar, Oe); + if (Pe) { + nr = Pe; + var Ue = ((yr = E.getCompilerHost) === null || yr === void 0 ? void 0 : yr.call(E)) || E; + if (e.isTraceEnabled(Jr, Ue)) { + var fr = si(nr); + e.trace(Ue, qr === fe ? fr != null && fr.resolvedFileName ? fr.packagetId ? e.Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4 : e.Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3 : e.Diagnostics.Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_not_resolved : fr != null && fr.resolvedFileName ? fr.packagetId ? e.Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4 : e.Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3 : e.Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_not_resolved, Ar, ii, e.getDirectoryPath(ii), fr == null ? void 0 : fr.resolvedFileName, (fr == null ? void 0 : fr.packagetId) && e.packageIdToString(fr.packagetId)); + } + } else + nr = qr(Ar, ii, Jr, ((Ir = E.getCompilerHost) === null || Ir === void 0 ? void 0 : Ir.call(E)) || E, mi, et, Oe), ae.set(Ar, Oe, nr), E.onDiscoveredSymlink && B(nr) && E.onDiscoveredSymlink(); + Zt.set(Ar, Oe, nr), ze(Ar, nr, Wt, si), Mr && Ie(Mr, Wt, si), Xi && N && !De(Mr, nr) && (N.push(Wt), Xi = false); + } else { + var Ue = ((wr = E.getCompilerHost) === null || wr === void 0 ? void 0 : wr.call(E)) || E; + if (e.isTraceEnabled(Jr, Ue) && !Wr.has(Ar, Oe)) { + var fr = si(nr); + e.trace(Ue, qr === fe ? fr != null && fr.resolvedFileName ? fr.packagetId ? e.Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3 : e.Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2 : e.Diagnostics.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_not_resolved : fr != null && fr.resolvedFileName ? fr.packagetId ? e.Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3 : e.Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2 : e.Diagnostics.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_not_resolved, Ar, ii, fr == null ? void 0 : fr.resolvedFileName, (fr == null ? void 0 : fr.packagetId) && e.packageIdToString(fr.packagetId)); + } + } + e.Debug.assert(nr !== void 0 && !nr.isInvalidated), Wr.set(Ar, Oe, true), Xe.push(si(nr)); + } + return Zt.forEach(function(gr, Vr, Tr) { + !Wr.has(Vr, Tr) && !e.contains(wi, Vr) && (Ie(gr, Wt, si), Zt.delete(Vr, Tr)); + }), Xe; + function De(gr, Vr) { + if (gr === Vr) + return true; + if (!gr || !Vr) + return false; + var Tr = si(gr), vi = si(Vr); + return Tr === vi ? true : !Tr || !vi ? false : Tr.resolvedFileName === vi.resolvedFileName; + } + } + function ue(ur, yr, Ir, wr) { + return ne({ names: ur, containingFile: yr, redirectedReference: Ir, cache: ee, perDirectoryCacheWithRedirects: he, loader: g, getResolutionWithResolvedFileName: k, shouldRetryResolution: function(Ur) { + return Ur.resolvedTypeReferenceDirective === void 0; + }, containingSourceFileMode: wr }); + } + function We(ur, yr, Ir, wr, Ur) { + return ne({ names: ur, containingFile: yr, redirectedReference: wr, cache: R, perDirectoryCacheWithRedirects: q, loader: fe, getResolutionWithResolvedFileName: P, shouldRetryResolution: function(ii) { + return !ii.resolvedModule || !e.resolutionExtensionIsTSOrJson(ii.resolvedModule.extension); + }, reusedNames: Ir, logChanges: le, containingSourceFile: Ur }); + } + function Fe(ur, yr, Ir) { + var wr = R.get(E.toPath(yr)); + if (!!wr) + return wr.get(ur, Ir); + } + function Z(ur) { + return e.endsWith(ur, "/node_modules/@types"); + } + function Be(ur, yr) { + if (Y(y, yr)) { + ur = e.isRootedDiskPath(ur) ? e.normalizePath(ur) : e.getNormalizedAbsolutePath(ur, J()); + var Ir = yr.split(e.directorySeparator), wr = ur.split(e.directorySeparator); + return e.Debug.assert(wr.length === Ir.length, "FailedLookup: ".concat(ur, " failedLookupLocationPath: ").concat(yr)), Ir.length > V + 1 ? { dir: wr.slice(0, V + 1).join(e.directorySeparator), dirPath: Ir.slice(0, V + 1).join(e.directorySeparator) } : { dir: A, dirPath: y, nonRecursive: false }; + } + return ge(e.getDirectoryPath(e.getNormalizedAbsolutePath(ur, J())), e.getDirectoryPath(yr)); + } + function ge(ur, yr) { + for (; e.pathContainsNodeModules(yr); ) + ur = e.getDirectoryPath(ur), yr = e.getDirectoryPath(yr); + if (e.isNodeModulesDirectory(yr)) + return C(e.getDirectoryPath(yr)) ? { dir: ur, dirPath: yr } : void 0; + var Ir = true, wr, Ur; + if (y !== void 0) + for (; !Y(yr, y); ) { + var ii = e.getDirectoryPath(yr); + if (ii === yr) + break; + Ir = false, wr = yr, Ur = ur, yr = ii, ur = e.getDirectoryPath(ur); + } + return C(yr) ? { dir: Ur || ur, dirPath: wr || yr, nonRecursive: Ir } : void 0; + } + function Re(ur) { + return e.fileExtensionIsOneOf(ur, x); + } + function ze(ur, yr, Ir, wr) { + if (yr.refCount) + yr.refCount++, e.Debug.assertIsDefined(yr.files); + else { + yr.refCount = 1, e.Debug.assert(e.length(yr.files) === 0), e.isExternalModuleNameRelative(ur) ? Ee(yr) : G.add(ur, yr); + var Ur = wr(yr); + Ur && Ur.resolvedFileName && f.add(E.toPath(Ur.resolvedFileName), yr); + } + (yr.files || (yr.files = [])).push(Ir); + } + function Ee(ur) { + e.Debug.assert(!!ur.refCount); + var yr = ur.failedLookupLocations; + if (!!yr.length) { + oe.push(ur); + for (var Ir = false, wr = 0, Ur = yr; wr < Ur.length; wr++) { + var ii = Ur[wr], mi = E.toPath(ii), pe = Be(ii, mi); + if (pe) { + var or = pe.dir, qr = pe.dirPath, si = pe.nonRecursive; + if (!Re(mi)) { + var Di = X.get(mi) || 0; + X.set(mi, Di + 1); + } + qr === y ? (e.Debug.assert(!si), Ir = true) : rr(or, qr, si); + } + } + Ir && rr(A, y, true); + } + } + function He(ur, yr) { + var Ir = E.getCurrentProgram(); + (!Ir || !Ir.getTypeChecker().tryFindAmbientModuleWithoutAugmentations(yr)) && ur.forEach(Ee); + } + function rr(ur, yr, Ir) { + var wr = $.get(yr); + wr ? (e.Debug.assert(!!Ir == !!wr.nonRecursive), wr.refCount++) : $.set(yr, { watcher: we(ur, yr, Ir), refCount: 1, nonRecursive: Ir }); + } + function Ie(ur, yr, Ir) { + if (e.unorderedRemoveItem(e.Debug.checkDefined(ur.files), yr), ur.refCount--, !ur.refCount) { + var wr = Ir(ur); + if (wr && wr.resolvedFileName && f.remove(E.toPath(wr.resolvedFileName), ur), !!e.unorderedRemoveItem(oe, ur)) { + for (var Ur = ur.failedLookupLocations, ii = false, mi = 0, pe = Ur; mi < pe.length; mi++) { + var or = pe[mi], qr = E.toPath(or), si = Be(or, qr); + if (si) { + var Di = si.dirPath, wi = X.get(qr); + wi && (wi === 1 ? X.delete(qr) : (e.Debug.assert(wi > 1), X.set(qr, wi - 1))), Di === y ? ii = true : _e(Di); + } + } + ii && _e(y); + } + } + } + function _e(ur) { + var yr = $.get(ur); + yr.refCount--; + } + function we(ur, yr, Ir) { + return E.watchDirectoryOfFailedLookupLocation(ur, function(wr) { + var Ur = E.toPath(wr); + ie && ie.addOrDeleteFileOrDirectory(wr, Ur), Ye(Ur, yr === Ur); + }, Ir ? 0 : 1); + } + function de(ur, yr, Ir) { + var wr = ur.get(yr); + wr && (wr.forEach(function(Ur) { + return Ie(Ur, yr, Ir); + }), ur.delete(yr)); + } + function ye(ur) { + if (!!e.fileExtensionIs(ur, ".json")) { + var yr = E.getCurrentProgram(); + if (!!yr) { + var Ir = yr.getResolvedProjectReferenceByPath(ur); + !Ir || Ir.commandLine.fileNames.forEach(function(wr) { + return Ae(E.toPath(wr)); + }); + } + } + } + function Ae(ur) { + de(R, ur, P), de(ee, ur, k); + } + function er(ur, yr) { + if (!ur) + return false; + for (var Ir = false, wr = 0, Ur = ur; wr < Ur.length; wr++) { + var ii = Ur[wr]; + if (!(ii.isInvalidated || !yr(ii))) { + ii.isInvalidated = Ir = true; + for (var mi = 0, pe = e.Debug.checkDefined(ii.files); mi < pe.length; mi++) { + var or = pe[mi]; + (p || (p = new e.Set())).add(or), T = T || e.endsWith(or, e.inferredTypesContainingFile); + } + } + } + return Ir; + } + function ir(ur) { + Ae(ur); + var yr = T; + er(f.get(ur), e.returnTrue) && T && !yr && E.onChangedAutomaticTypeDirectiveNames(); + } + function Cr(ur) { + e.Debug.assert(m === ur || m === void 0), m = ur; + } + function Ye(ur, yr) { + if (yr) + (se || (se = [])).push(ur); + else { + var Ir = a(ur); + if (!Ir || (ur = Ir, E.fileIsOpen(ur))) + return false; + var wr = e.getDirectoryPath(ur); + if (Z(ur) || e.isNodeModulesDirectory(ur) || Z(wr) || e.isNodeModulesDirectory(wr)) + (K || (K = [])).push(ur), (b || (b = new e.Set())).add(ur); + else { + if (!Re(ur) && !X.has(ur) || e.isEmittedFileOfProgram(E.getCurrentProgram(), ur)) + return false; + (K || (K = [])).push(ur); + var Ur = e.parseNodeModuleFromPath(ur); + Ur && (b || (b = new e.Set())).add(Ur); + } + } + E.scheduleInvalidateResolutionsOfFailedLookupLocations(); + } + function Br() { + if (!K && !b && !se) + return false; + var ur = er(oe, Er); + return K = void 0, b = void 0, se = void 0, ur; + } + function Er(ur) { + return ur.failedLookupLocations.some(function(yr) { + var Ir = E.toPath(yr); + return e.contains(K, Ir) || e.firstDefinedIterator((b == null ? void 0 : b.keys()) || e.emptyIterator, function(wr) { + return e.startsWith(Ir, wr) ? true : void 0; + }) || (se == null ? void 0 : se.some(function(wr) { + return Y(wr, Ir); + })); + }); + } + function Ne() { + e.clearMap(L, e.closeFileWatcher); + } + function n(ur, yr) { + if (Y(y, yr)) + return y; + var Ir = ge(ur, yr); + return Ir && $.has(Ir.dirPath) ? Ir.dirPath : void 0; + } + function lr(ur, yr) { + return E.watchTypeRootsDirectory(yr, function(Ir) { + var wr = E.toPath(Ir); + ie && ie.addOrDeleteFileOrDirectory(Ir, wr), T = true, E.onChangedAutomaticTypeDirectiveNames(); + var Ur = n(yr, ur); + Ur && Ye(wr, Ur === wr); + }, 1); + } + function be() { + var ur = E.getCompilationSettings(); + if (ur.types) { + Ne(); + return; + } + var yr = e.getEffectiveTypeRoots(ur, { directoryExists: Ge, getCurrentDirectory: J }); + yr ? e.mutateMap(L, e.arrayToMap(yr, function(Ir) { + return E.toPath(Ir); + }), { createNewValue: lr, onDeleteValue: e.closeFileWatcher }) : Ne(); + } + function Ge(ur) { + var yr = e.getDirectoryPath(e.getDirectoryPath(ur)), Ir = E.toPath(yr); + return Ir === y || C(Ir); + } + } + e.createResolutionCache = w; + function B(E) { + var Q, le; + return !!(((Q = E.resolvedModule) === null || Q === void 0 ? void 0 : Q.originalPath) || ((le = E.resolvedTypeReferenceDirective) === null || le === void 0 ? void 0 : le.originalPath)); + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(I) { + I[I.Relative = 0] = "Relative", I[I.NonRelative = 1] = "NonRelative", I[I.Shortest = 2] = "Shortest", I[I.ExternalNonRelative = 3] = "ExternalNonRelative"; + })(w || (w = {})); + var B; + (function(I) { + I[I.Minimal = 0] = "Minimal", I[I.Index = 1] = "Index", I[I.JsExtension = 2] = "JsExtension"; + })(B || (B = {})); + function E(I, l, d, D) { + var fe = l.importModuleSpecifierPreference, g = l.importModuleSpecifierEnding; + return { relativePreference: fe === "relative" ? 0 : fe === "non-relative" ? 1 : fe === "project-relative" ? 3 : 2, ending: ne() }; + function ne() { + switch (g) { + case "minimal": + return 0; + case "index": + return 1; + case "js": + return 2; + default: + return q(D) || le(d, D.path, I) ? 2 : e.getEmitModuleResolutionKind(d) !== e.ModuleResolutionKind.NodeJs ? 1 : 0; + } + } + } + function Q(I, l, d, D) { + return { relativePreference: e.isExternalModuleNameRelative(l) ? 0 : 1, ending: e.hasJSFileExtension(l) || le(I, d, D) ? 2 : e.getEmitModuleResolutionKind(I) !== e.ModuleResolutionKind.NodeJs || e.endsWith(l, "index") ? 1 : 0 }; + } + function le(I, l, d) { + var D; + return e.getEmitModuleResolutionKind(I) !== e.ModuleResolutionKind.Node16 && e.getEmitModuleResolutionKind(I) !== e.ModuleResolutionKind.NodeNext ? false : e.getImpliedNodeFormatForFile(l, (D = d.getPackageJsonInfoCache) === null || D === void 0 ? void 0 : D.call(d), N(d), I) !== e.ModuleKind.CommonJS; + } + function N(I) { + var l; + return { fileExists: I.fileExists, readFile: e.Debug.checkDefined(I.readFile), directoryExists: I.directoryExists, getCurrentDirectory: I.getCurrentDirectory, realpath: I.realpath, useCaseSensitiveFileNames: (l = I.useCaseSensitiveFileNames) === null || l === void 0 ? void 0 : l.call(I) }; + } + function p(I, l, d, D, fe, g, ne) { + ne === void 0 && (ne = {}); + var ue = oe(I, l, d, D, fe, Q(I, g, d, fe), {}, ne); + if (ue !== g) + return ue; + } + C.updateModuleSpecifier = p; + function m(I, l, d, D, fe, g) { + return g === void 0 && (g = {}), oe(I, l, d, D, fe, E(fe, {}, I, l), {}, g); + } + C.getModuleSpecifier = m; + function G(I, l, d, D, fe, g) { + g === void 0 && (g = {}); + var ne = J(l.path, D), ue = he(l.path, d, D, fe, g); + return e.firstDefined(ue, function(We) { + return V(We, ne, l, D, I, fe, true, g.overrideImportMode); + }); + } + C.getNodeModulesPackageName = G; + function oe(I, l, d, D, fe, g, ne, ue) { + ue === void 0 && (ue = {}); + var We = J(d, fe), Fe = he(d, D, fe, ne, ue); + return e.firstDefined(Fe, function(Z) { + return V(Z, We, l, fe, I, ne, void 0, ue.overrideImportMode); + }) || ie(D, We, I, fe, g); + } + function f(I, l, d, D, fe) { + return fe === void 0 && (fe = {}), T(I, l, d, D, fe)[0]; + } + C.tryGetModuleSpecifiersFromCache = f; + function T(I, l, d, D, fe) { + var g; + fe === void 0 && (fe = {}); + var ne = e.getSourceFileOfModule(I); + if (!ne) + return e.emptyArray; + var ue = (g = d.getModuleSpecifierCache) === null || g === void 0 ? void 0 : g.call(d), We = ue == null ? void 0 : ue.get(l.path, ne.path, D, fe); + return [We == null ? void 0 : We.moduleSpecifiers, ne, We == null ? void 0 : We.modulePaths, ue]; + } + function K(I, l, d, D, fe, g, ne) { + return ne === void 0 && (ne = {}), b(I, l, d, D, fe, g, ne).moduleSpecifiers; + } + C.getModuleSpecifiers = K; + function b(I, l, d, D, fe, g, ne) { + ne === void 0 && (ne = {}); + var ue = false, We = x(I, l); + if (We) + return { moduleSpecifiers: [We], computedWithoutCache: ue }; + var Fe = T(I, D, fe, g, ne), Z = Fe[0], Be = Fe[1], ge = Fe[2], Re = Fe[3]; + if (Z) + return { moduleSpecifiers: Z, computedWithoutCache: ue }; + if (!Be) + return { moduleSpecifiers: e.emptyArray, computedWithoutCache: ue }; + ue = true, ge || (ge = F(D.path, Be.originalFileName, fe)); + var ze = se(ge, d, D, fe, g, ne); + return Re == null || Re.set(D.path, Be.path, g, ne, ge, ze), { moduleSpecifiers: ze, computedWithoutCache: ue }; + } + C.getModuleSpecifiersWithCacheInfo = b; + function se(I, l, d, D, fe, g) { + g === void 0 && (g = {}); + var ne = J(d.path, D), ue = E(D, fe, l, d), We = e.forEach(I, function(_e) { + return e.forEach(D.getFileIncludeReasons().get(e.toPath(_e.path, D.getCurrentDirectory(), ne.getCanonicalFileName)), function(we) { + if (!(we.kind !== e.FileIncludeKind.Import || we.file !== d.path) && !(d.impliedNodeFormat && d.impliedNodeFormat !== e.getModeForResolutionAtIndex(d, we.index))) { + var de = e.getModuleNameStringLiteralAt(d, we.index).text; + return ue.relativePreference !== 1 || !e.pathIsRelative(de) ? de : void 0; + } + }); + }); + if (We) { + var Fe = [We]; + return Fe; + } + for (var Z = e.some(I, function(_e) { + return _e.isInNodeModules; + }), Be, ge, Re, ze = 0, Ee = I; ze < Ee.length; ze++) { + var He = Ee[ze], rr = V(He, ne, d, D, l, fe, void 0, g.overrideImportMode); + if (Be = e.append(Be, rr), rr && He.isRedirect) + return Be; + if (!rr && !He.isRedirect) { + var Ie = ie(He.path, ne, l, D, ue); + e.pathIsBareSpecifier(Ie) ? ge = e.append(ge, Ie) : (!Z || He.isInNodeModules) && (Re = e.append(Re, Ie)); + } + } + return ge != null && ge.length ? ge : Be != null && Be.length ? Be : e.Debug.checkDefined(Re); + } + function J(I, l) { + var d = e.createGetCanonicalFileName(l.useCaseSensitiveFileNames ? l.useCaseSensitiveFileNames() : true), D = e.getDirectoryPath(I); + return { getCanonicalFileName: d, importingSourceFileName: I, sourceDirectory: D }; + } + function ie(I, l, d, D, fe) { + var g = fe.ending, ne = fe.relativePreference, ue = d.baseUrl, We = d.paths, Fe = d.rootDirs, Z = l.sourceDirectory, Be = l.getCanonicalFileName, ge = Fe && y(Fe, I, Z, Be, g, d) || k(e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(Z, I, Be)), g, d); + if (!ue && !We || ne === 0) + return ge; + var Re = e.getNormalizedAbsolutePath(e.getPathsBasePath(d, D) || ue, D.getCurrentDirectory()), ze = j(I, Re, Be); + if (!ze) + return ge; + var Ee = k(ze, g, d), He = We && X(e.removeFileExtension(ze), Ee, We), rr = He === void 0 && ue !== void 0 ? Ee : He; + if (!rr) + return ge; + if (ne === 1) + return rr; + if (ne === 3) { + var Ie = d.configFilePath ? e.toPath(e.getDirectoryPath(d.configFilePath), D.getCurrentDirectory(), l.getCanonicalFileName) : l.getCanonicalFileName(D.getCurrentDirectory()), _e = e.toPath(I, Ie, Be), we = e.startsWith(Z, Ie), de = e.startsWith(_e, Ie); + if (we && !de || !we && de) + return rr; + var ye = ve(D, e.getDirectoryPath(_e)), Ae = ve(D, Z); + return Ae !== ye ? rr : ge; + } + return ne !== 2 && e.Debug.assertNever(ne), H(rr) || R(ge) < R(rr) ? ge : rr; + } + function R(I) { + for (var l = 0, d = e.startsWith(I, "./") ? 2 : 0; d < I.length; d++) + I.charCodeAt(d) === 47 && l++; + return l; + } + C.countPathComponents = R; + function q(I) { + var l = I.imports; + return e.firstDefined(l, function(d) { + var D = d.text; + return e.pathIsRelative(D) ? e.hasJSFileExtension(D) : void 0; + }) || false; + } + function O(I, l) { + return e.compareBooleans(l.isRedirect, I.isRedirect) || e.compareNumberOfDirectorySeparators(I.path, l.path); + } + function ve(I, l) { + return I.getNearestAncestorDirectoryWithPackageJson ? I.getNearestAncestorDirectoryWithPackageJson(l) : !!e.forEachAncestorDirectory(l, function(d) { + return I.fileExists(e.combinePaths(d, "package.json")) ? true : void 0; + }); + } + function ee(I, l, d, D, fe) { + var g, ne = e.hostGetCanonicalFileName(d), ue = d.getCurrentDirectory(), We = d.isSourceOfProjectReferenceRedirect(l) ? d.getProjectReferenceRedirect(l) : void 0, Fe = e.toPath(l, ue, ne), Z = d.redirectTargetsMap.get(Fe) || e.emptyArray, Be = Ve(Ve(Ve([], We ? [We] : e.emptyArray, true), [l], false), Z, true), ge = Be.map(function(Ie) { + return e.getNormalizedAbsolutePath(Ie, ue); + }), Re = !e.every(ge, e.containsIgnoredPath); + if (!D) { + var ze = e.forEach(ge, function(Ie) { + return !(Re && e.containsIgnoredPath(Ie)) && fe(Ie, We === Ie); + }); + if (ze) + return ze; + } + var Ee = (g = d.getSymlinkCache) === null || g === void 0 ? void 0 : g.call(d).getSymlinkedDirectoriesByRealpath(), He = e.getNormalizedAbsolutePath(l, ue), rr = Ee && e.forEachAncestorDirectory(e.getDirectoryPath(He), function(Ie) { + var _e = Ee.get(e.ensureTrailingDirectorySeparator(e.toPath(Ie, ue, ne))); + if (!!_e) + return e.startsWithDirectory(I, Ie, ne) ? false : e.forEach(ge, function(we) { + if (!!e.startsWithDirectory(we, Ie, ne)) + for (var de = e.getRelativePathFromDirectory(Ie, we, ne), ye = 0, Ae = _e; ye < Ae.length; ye++) { + var er = Ae[ye], ir = e.resolvePath(er, de), Cr = fe(ir, we === We); + if (Re = true, Cr) + return Cr; + } + }); + }); + return rr || (D ? e.forEach(ge, function(Ie) { + return Re && e.containsIgnoredPath(Ie) ? void 0 : fe(Ie, Ie === We); + }) : void 0); + } + C.forEachFileNameOfModule = ee; + function he(I, l, d, D, fe) { + var g; + fe === void 0 && (fe = {}); + var ne = e.toPath(l, d.getCurrentDirectory(), e.hostGetCanonicalFileName(d)), ue = (g = d.getModuleSpecifierCache) === null || g === void 0 ? void 0 : g.call(d); + if (ue) { + var We = ue.get(I, ne, D, fe); + if (We != null && We.modulePaths) + return We.modulePaths; + } + var Fe = F(I, l, d); + return ue && ue.setModulePaths(I, ne, D, fe, Fe), Fe; + } + function F(I, l, d) { + var D = e.hostGetCanonicalFileName(d), fe = new e.Map(), g = false; + ee(I, l, d, true, function(ge, Re) { + var ze = e.pathContainsNodeModules(ge); + fe.set(ge, { path: D(ge), isRedirect: Re, isInNodeModules: ze }), g = g || ze; + }); + for (var ne = [], ue = function(ge) { + var Re = e.ensureTrailingDirectorySeparator(ge), ze; + fe.forEach(function(He, rr) { + var Ie = He.path, _e = He.isRedirect, we = He.isInNodeModules; + e.startsWith(Ie, Re) && ((ze || (ze = [])).push({ path: rr, isRedirect: _e, isInNodeModules: we }), fe.delete(rr)); + }), ze && (ze.length > 1 && ze.sort(O), ne.push.apply(ne, ze)); + var Ee = e.getDirectoryPath(ge); + if (Ee === ge) + return We = ge, "break"; + ge = Ee, We = ge; + }, We, Fe = e.getDirectoryPath(I); fe.size !== 0; ) { + var Z = ue(Fe); + if (Fe = We, Z === "break") + break; + } + if (fe.size) { + var Be = e.arrayFrom(fe.values()); + Be.length > 1 && Be.sort(O), ne.push.apply(ne, Be); + } + return ne; + } + function x(I, l) { + var d, D = (d = I.declarations) === null || d === void 0 ? void 0 : d.find(function(ne) { + return e.isNonGlobalAmbientModule(ne) && (!e.isExternalModuleAugmentation(ne) || !e.isExternalModuleNameRelative(e.getTextOfIdentifierOrLiteral(ne.name))); + }); + if (D) + return D.name.text; + var fe = e.mapDefined(I.declarations, function(ne) { + var ue, We, Fe, Z; + if (!e.isModuleDeclaration(ne)) + return; + var Be = Ee(ne); + if (!(((ue = Be == null ? void 0 : Be.parent) === null || ue === void 0 ? void 0 : ue.parent) && e.isModuleBlock(Be.parent) && e.isAmbientModule(Be.parent.parent) && e.isSourceFile(Be.parent.parent.parent))) + return; + var ge = (Z = (Fe = (We = Be.parent.parent.symbol.exports) === null || We === void 0 ? void 0 : We.get("export=")) === null || Fe === void 0 ? void 0 : Fe.valueDeclaration) === null || Z === void 0 ? void 0 : Z.expression; + if (!ge) + return; + var Re = l.getSymbolAtLocation(ge); + if (!Re) + return; + var ze = (Re == null ? void 0 : Re.flags) & 2097152 ? l.getAliasedSymbol(Re) : Re; + if (ze === ne.symbol) + return Be.parent.parent; + function Ee(He) { + for (; He.flags & 4; ) + He = He.parent; + return He; + } + }), g = fe[0]; + if (g) + return g.name.text; + } + function X(I, l, d) { + for (var D in d) + for (var fe = 0, g = d[D]; fe < g.length; fe++) { + var ne = g[fe], ue = e.removeFileExtension(e.normalizePath(ne)), We = ue.indexOf("*"); + if (We !== -1) { + var Fe = ue.substr(0, We), Z = ue.substr(We + 1); + if (l.length >= Fe.length + Z.length && e.startsWith(l, Fe) && e.endsWith(l, Z) || !Z && l === e.removeTrailingDirectorySeparator(Fe)) { + var Be = l.substr(Fe.length, l.length - Z.length - Fe.length); + return D.replace("*", Be); + } + } else if (ue === l || ue === I) + return D; + } + } + var $; + (function(I) { + I[I.Exact = 0] = "Exact", I[I.Directory = 1] = "Directory", I[I.Pattern = 2] = "Pattern"; + })($ || ($ = {})); + function A(I, l, d, D, fe, g, ne) { + if (ne === void 0 && (ne = 0), typeof fe == "string") { + var ue = e.getNormalizedAbsolutePath(e.combinePaths(d, fe), void 0), We = e.hasTSFileExtension(l) ? e.removeFileExtension(l) + U(l, I) : void 0; + switch (ne) { + case 0: + if (e.comparePaths(l, ue) === 0 || We && e.comparePaths(We, ue) === 0) + return { moduleFileToTry: D }; + break; + case 1: + if (e.containsPath(ue, l)) { + var Fe = e.getRelativePathFromDirectory(ue, l, false); + return { moduleFileToTry: e.getNormalizedAbsolutePath(e.combinePaths(e.combinePaths(D, fe), Fe), void 0) }; + } + break; + case 2: + var Z = ue.indexOf("*"), Be = ue.slice(0, Z), ge = ue.slice(Z + 1); + if (e.startsWith(l, Be) && e.endsWith(l, ge)) { + var Re = l.slice(Be.length, l.length - ge.length); + return { moduleFileToTry: D.replace("*", Re) }; + } + if (We && e.startsWith(We, Be) && e.endsWith(We, ge)) { + var Re = We.slice(Be.length, We.length - ge.length); + return { moduleFileToTry: D.replace("*", Re) }; + } + break; + } + } else { + if (Array.isArray(fe)) + return e.forEach(fe, function(_e) { + return A(I, l, d, D, _e, g); + }); + if (typeof fe == "object" && fe !== null) { + if (e.allKeysStartWithDot(fe)) + return e.forEach(e.getOwnKeys(fe), function(_e) { + var we = e.getNormalizedAbsolutePath(e.combinePaths(D, _e), void 0), de = e.endsWith(_e, "/") ? 1 : e.stringContains(_e, "*") ? 2 : 0; + return A(I, l, d, we, fe[_e], g, de); + }); + for (var ze = 0, Ee = e.getOwnKeys(fe); ze < Ee.length; ze++) { + var He = Ee[ze]; + if (He === "default" || g.indexOf(He) >= 0 || e.isApplicableVersionedTypesKey(g, He)) { + var rr = fe[He], Ie = A(I, l, d, D, rr, g); + if (Ie) + return Ie; + } + } + } + } + } + function y(I, l, d, D, fe, g) { + var ne = P(l, I, D); + if (ne !== void 0) { + var ue = P(d, I, D), We = ue !== void 0 ? e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(ue, ne, D)) : ne; + return e.getEmitModuleResolutionKind(g) === e.ModuleResolutionKind.NodeJs ? k(We, fe, g) : e.removeFileExtension(We); + } + } + function V(I, l, d, D, fe, g, ne, ue) { + var We = I.path, Fe = I.isRedirect, Z = l.getCanonicalFileName, Be = l.sourceDirectory; + if (!D.fileExists || !D.readFile) + return; + var ge = e.getNodeModulePathParts(We); + if (!ge) + return; + var Re = We, ze = false; + if (!ne) + for (var Ee = E(D, g, fe, d), He = ge.packageRootIndex, rr = void 0; ; ) { + var Ie = Ye(He), _e = Ie.moduleFileToTry, we = Ie.packageRootPath, de = Ie.blockedByExports, ye = Ie.verbatimFromExports; + if (e.getEmitModuleResolutionKind(fe) !== e.ModuleResolutionKind.Classic) { + if (de) + return; + if (ye) + return _e; + } + if (we) { + Re = we, ze = true; + break; + } + if (rr || (rr = _e), He = We.indexOf(e.directorySeparator, He + 1), He === -1) { + Re = k(rr, Ee.ending, fe, D); + break; + } + } + if (Fe && !ze) + return; + var Ae = D.getGlobalTypingsCacheLocation && D.getGlobalTypingsCacheLocation(), er = Z(Re.substring(0, ge.topLevelNodeModulesIndex)); + if (!(e.startsWith(Be, er) || Ae && e.startsWith(Z(Ae), er))) + return; + var ir = Re.substring(ge.topLevelPackageNameIndex + 1), Cr = e.getPackageNameFromTypesPackageName(ir); + return e.getEmitModuleResolutionKind(fe) === e.ModuleResolutionKind.Classic && Cr === ir ? void 0 : Cr; + function Ye(Br) { + var Er, Ne, n = We.substring(0, Br), lr = e.combinePaths(n, "package.json"), be = We, Ge = (Ne = (Er = D.getPackageJsonInfoCache) === null || Er === void 0 ? void 0 : Er.call(D)) === null || Ne === void 0 ? void 0 : Ne.getPackageJsonInfo(lr); + if (typeof Ge == "object" || Ge === void 0 && D.fileExists(lr)) { + var ur = (Ge == null ? void 0 : Ge.packageJsonContent) || JSON.parse(D.readFile(lr)); + if (e.getEmitModuleResolutionKind(fe) === e.ModuleResolutionKind.Node16 || e.getEmitModuleResolutionKind(fe) === e.ModuleResolutionKind.NodeNext) { + var yr = ["node", ue || d.impliedNodeFormat === e.ModuleKind.ESNext ? "import" : "require", "types"], Ir = ur.exports && typeof ur.name == "string" ? A(fe, We, n, e.getPackageNameFromTypesPackageName(ur.name), ur.exports, yr) : void 0; + if (Ir) { + var wr = e.hasTSFileExtension(Ir.moduleFileToTry) ? { moduleFileToTry: e.removeFileExtension(Ir.moduleFileToTry) + U(Ir.moduleFileToTry, fe) } : Ir; + return Ke(Ke({}, wr), { verbatimFromExports: true }); + } + if (ur.exports) + return { moduleFileToTry: We, blockedByExports: true }; + } + var Ur = ur.typesVersions ? e.getPackageJsonTypesVersionsPaths(ur.typesVersions) : void 0; + if (Ur) { + var ii = We.slice(n.length + 1), mi = X(e.removeFileExtension(ii), k(ii, 0, fe), Ur.paths); + mi !== void 0 && (be = e.combinePaths(n, mi)); + } + var pe = ur.typings || ur.types || ur.main || "index.js"; + if (e.isString(pe)) { + var or = e.toPath(pe, n, Z); + if (e.removeFileExtension(or) === e.removeFileExtension(Z(be))) + return { packageRootPath: n, moduleFileToTry: be }; + } + } else { + var qr = Z(be.substring(ge.packageRootIndex + 1)); + if (qr === "index.d.ts" || qr === "index.js" || qr === "index.ts" || qr === "index.tsx") + return { moduleFileToTry: be, packageRootPath: n }; + } + return { moduleFileToTry: be }; + } + } + function L(I, l) { + if (!!I.fileExists) + for (var d = e.flatten(e.getSupportedExtensions({ allowJs: true }, [{ extension: "node", isMixedContent: false }, { extension: "json", isMixedContent: false, scriptKind: 6 }])), D = 0, fe = d; D < fe.length; D++) { + var g = fe[D], ne = l + g; + if (I.fileExists(ne)) + return ne; + } + } + function P(I, l, d) { + return e.firstDefined(l, function(D) { + var fe = j(I, D, d); + return fe !== void 0 && H(fe) ? void 0 : fe; + }); + } + function k(I, l, d, D) { + if (e.fileExtensionIsOneOf(I, [".json", ".mjs", ".cjs"])) + return I; + var fe = e.removeFileExtension(I); + if (I === fe) + return I; + if (e.fileExtensionIsOneOf(I, [".d.mts", ".mts", ".d.cts", ".cts"])) + return fe + Y(I, d); + switch (l) { + case 0: + var g = e.removeSuffix(fe, "/index"); + return D && g !== fe && L(D, g) ? fe : g; + case 1: + return fe; + case 2: + return fe + Y(I, d); + default: + return e.Debug.assertNever(l); + } + } + function Y(I, l) { + var d; + return (d = U(I, l)) !== null && d !== void 0 ? d : e.Debug.fail("Extension ".concat(e.extensionFromPath(I), " is unsupported:: FileName:: ").concat(I)); + } + function U(I, l) { + var d = e.tryGetExtensionFromPath(I); + switch (d) { + case ".ts": + case ".d.ts": + return ".js"; + case ".tsx": + return l.jsx === 1 ? ".jsx" : ".js"; + case ".js": + case ".jsx": + case ".json": + return d; + case ".d.mts": + case ".mts": + case ".mjs": + return ".mjs"; + case ".d.cts": + case ".cts": + case ".cjs": + return ".cjs"; + default: + return; + } + } + C.tryGetJSExtensionForFile = U; + function j(I, l, d) { + var D = e.getRelativePathToDirectoryOrUrl(l, I, l, d, false); + return e.isRootedDiskPath(D) ? void 0 : D; + } + function H(I) { + return e.startsWith(I, ".."); + } + })(a = e.moduleSpecifiers || (e.moduleSpecifiers = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a = e.sys ? { getCurrentDirectory: function() { + return e.sys.getCurrentDirectory(); + }, getNewLine: function() { + return e.sys.newLine; + }, getCanonicalFileName: e.createGetCanonicalFileName(e.sys.useCaseSensitiveFileNames) } : void 0; + function C(P, k) { + var Y = P === e.sys && a ? a : { getCurrentDirectory: function() { + return P.getCurrentDirectory(); + }, getNewLine: function() { + return P.newLine; + }, getCanonicalFileName: e.createGetCanonicalFileName(P.useCaseSensitiveFileNames) }; + if (!k) + return function(j) { + return P.write(e.formatDiagnostic(j, Y)); + }; + var U = new Array(1); + return function(j) { + U[0] = j, P.write(e.formatDiagnosticsWithColorAndContext(U, Y) + Y.getNewLine()), U[0] = void 0; + }; + } + e.createDiagnosticReporter = C; + function w(P, k, Y) { + return P.clearScreen && !Y.preserveWatchOutput && !Y.extendedDiagnostics && !Y.diagnostics && e.contains(e.screenStartingMessageCodes, k.code) ? (P.clearScreen(), true) : false; + } + e.screenStartingMessageCodes = [e.Diagnostics.Starting_compilation_in_watch_mode.code, e.Diagnostics.File_change_detected_Starting_incremental_compilation.code]; + function B(P, k) { + return e.contains(e.screenStartingMessageCodes, P.code) ? k + k : k; + } + function E(P) { + return P.now ? P.now().toLocaleTimeString("en-US", { timeZone: "UTC" }) : new Date().toLocaleTimeString(); + } + e.getLocaleTimeString = E; + function Q(P, k) { + return k ? function(Y, U, j) { + w(P, Y, j); + var H = "[".concat(e.formatColorAndReset(E(P), e.ForegroundColorEscapeSequences.Grey), "] "); + H += "".concat(e.flattenDiagnosticMessageText(Y.messageText, P.newLine)).concat(U + U), P.write(H); + } : function(Y, U, j) { + var H = ""; + w(P, Y, j) || (H += U), H += "".concat(E(P), " - "), H += "".concat(e.flattenDiagnosticMessageText(Y.messageText, P.newLine)).concat(B(Y, U)), P.write(H); + }; + } + e.createWatchStatusReporter = Q; + function le(P, k, Y, U, j, H) { + var I = j; + I.onUnRecoverableConfigFileDiagnostic = function(d) { + return A(j, H, d); + }; + var l = e.getParsedCommandLineOfConfigFile(P, k, I, Y, U); + return I.onUnRecoverableConfigFileDiagnostic = void 0, l; + } + e.parseConfigFileWithSystem = le; + function N(P) { + return e.countWhere(P, function(k) { + return k.category === e.DiagnosticCategory.Error; + }); + } + e.getErrorCountForSummary = N; + function p(P) { + var k = e.filter(P, function(Y) { + return Y.category === e.DiagnosticCategory.Error; + }).map(function(Y) { + if (Y.file !== void 0) + return "".concat(Y.file.fileName); + }); + return k.map(function(Y) { + var U = e.find(P, function(H) { + return H.file !== void 0 && H.file.fileName === Y; + }); + if (U !== void 0) { + var j = e.getLineAndCharacterOfPosition(U.file, U.start).line; + return { fileName: Y, line: j + 1 }; + } + }); + } + e.getFilesInErrorForSummary = p; + function m(P) { + return P === 1 ? e.Diagnostics.Found_1_error_Watching_for_file_changes : e.Diagnostics.Found_0_errors_Watching_for_file_changes; + } + e.getWatchErrorSummaryDiagnosticMessage = m; + function G(P, k) { + var Y = e.formatColorAndReset(":" + P.line, e.ForegroundColorEscapeSequences.Grey); + return e.pathIsAbsolute(P.fileName) && e.pathIsAbsolute(k) ? e.getRelativePathFromDirectory(k, P.fileName, false) + Y : P.fileName + Y; + } + function oe(P, k, Y, U) { + if (P === 0) + return ""; + var j = k.filter(function(D) { + return D !== void 0; + }), H = j.map(function(D) { + return "".concat(D.fileName, ":").concat(D.line); + }).filter(function(D, fe, g) { + return g.indexOf(D) === fe; + }), I = j[0] && G(j[0], U.getCurrentDirectory()), l = P === 1 ? e.createCompilerDiagnostic(k[0] !== void 0 ? e.Diagnostics.Found_1_error_in_1 : e.Diagnostics.Found_1_error, P, I) : e.createCompilerDiagnostic(H.length === 0 ? e.Diagnostics.Found_0_errors : H.length === 1 ? e.Diagnostics.Found_0_errors_in_the_same_file_starting_at_Colon_1 : e.Diagnostics.Found_0_errors_in_1_files, P, H.length === 1 ? I : H.length), d = H.length > 1 ? f(j, U) : ""; + return "".concat(Y).concat(e.flattenDiagnosticMessageText(l.messageText, Y)).concat(Y).concat(Y).concat(d); + } + e.getErrorSummaryText = oe; + function f(P, k) { + var Y = P.filter(function(g, ne, ue) { + return ne === ue.findIndex(function(We) { + return (We == null ? void 0 : We.fileName) === (g == null ? void 0 : g.fileName); + }); + }); + if (Y.length === 0) + return ""; + var U = function(g) { + return Math.log(g) * Math.LOG10E + 1; + }, j = Y.map(function(g) { + return [g, e.countWhere(P, function(ne) { + return ne.fileName === g.fileName; + })]; + }), H = j.reduce(function(g, ne) { + return Math.max(g, ne[1] || 0); + }, 0), I = e.Diagnostics.Errors_Files.message, l = I.split(" ")[0].length, d = Math.max(l, U(H)), D = Math.max(U(H) - l, 0), fe = ""; + return fe += " ".repeat(D) + I + ` +`, j.forEach(function(g) { + var ne = g[0], ue = g[1], We = Math.log(ue) * Math.LOG10E + 1 | 0, Fe = We < d ? " ".repeat(d - We) : "", Z = G(ne, k.getCurrentDirectory()); + fe += "".concat(Fe).concat(ue, " ").concat(Z, ` +`); + }), fe; + } + function T(P) { + return !!P.getState; + } + e.isBuilderProgram = T; + function K(P, k) { + var Y = P.getCompilerOptions(); + Y.explainFiles ? b(T(P) ? P.getProgram() : P, k) : (Y.listFiles || Y.listFilesOnly) && e.forEach(P.getSourceFiles(), function(U) { + k(U.fileName); + }); + } + e.listFiles = K; + function b(P, k) { + for (var Y, U, j = P.getFileIncludeReasons(), H = e.createGetCanonicalFileName(P.useCaseSensitiveFileNames()), I = function(fe) { + return e.convertToRelativePath(fe, P.getCurrentDirectory(), H); + }, l = 0, d = P.getSourceFiles(); l < d.length; l++) { + var D = d[l]; + k("".concat(q(D, I))), (Y = j.get(D.path)) === null || Y === void 0 || Y.forEach(function(fe) { + return k(" ".concat(R(P, fe, I).messageText)); + }), (U = se(D, I)) === null || U === void 0 || U.forEach(function(fe) { + return k(" ".concat(fe.messageText)); + }); + } + } + e.explainFiles = b; + function se(P, k) { + var Y; + return P.path !== P.resolvedPath && (Y || (Y = [])).push(e.chainDiagnosticMessages(void 0, e.Diagnostics.File_is_output_of_project_reference_source_0, q(P.originalFileName, k))), P.redirectInfo && (Y || (Y = [])).push(e.chainDiagnosticMessages(void 0, e.Diagnostics.File_redirects_to_file_0, q(P.redirectInfo.redirectTarget, k))), Y; + } + e.explainIfFileIsRedirect = se; + function J(P, k) { + var Y, U = P.getCompilerOptions().configFile; + if (!!(!((Y = U == null ? void 0 : U.configFileSpecs) === null || Y === void 0) && Y.validatedFilesSpec)) { + var j = e.createGetCanonicalFileName(P.useCaseSensitiveFileNames()), H = j(k), I = e.getDirectoryPath(e.getNormalizedAbsolutePath(U.fileName, P.getCurrentDirectory())); + return e.find(U.configFileSpecs.validatedFilesSpec, function(l) { + return j(e.getNormalizedAbsolutePath(l, I)) === H; + }); + } + } + e.getMatchedFileSpec = J; + function ie(P, k) { + var Y, U, j = P.getCompilerOptions().configFile; + if (!!(!((Y = j == null ? void 0 : j.configFileSpecs) === null || Y === void 0) && Y.validatedIncludeSpecs)) { + var H = e.fileExtensionIs(k, ".json"), I = e.getDirectoryPath(e.getNormalizedAbsolutePath(j.fileName, P.getCurrentDirectory())), l = P.useCaseSensitiveFileNames(); + return e.find((U = j == null ? void 0 : j.configFileSpecs) === null || U === void 0 ? void 0 : U.validatedIncludeSpecs, function(d) { + if (H && !e.endsWith(d, ".json")) + return false; + var D = e.getPatternFromSpec(d, I, "files"); + return !!D && e.getRegexFromPattern("(".concat(D, ")$"), l).test(k); + }); + } + } + e.getMatchedIncludeSpec = ie; + function R(P, k, Y) { + var U, j, H = P.getCompilerOptions(); + if (e.isReferencedFile(k)) { + var I = e.getReferencedFileLocation(function(Fe) { + return P.getSourceFileByPath(Fe); + }, k), l = e.isReferenceFileLocation(I) ? I.file.text.substring(I.pos, I.end) : '"'.concat(I.text, '"'), d = void 0; + switch (e.Debug.assert(e.isReferenceFileLocation(I) || k.kind === e.FileIncludeKind.Import, "Only synthetic references are imports"), k.kind) { + case e.FileIncludeKind.Import: + e.isReferenceFileLocation(I) ? d = I.packageId ? e.Diagnostics.Imported_via_0_from_file_1_with_packageId_2 : e.Diagnostics.Imported_via_0_from_file_1 : I.text === e.externalHelpersModuleNameText ? d = I.packageId ? e.Diagnostics.Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions : e.Diagnostics.Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions : d = I.packageId ? e.Diagnostics.Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions : e.Diagnostics.Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions; + break; + case e.FileIncludeKind.ReferenceFile: + e.Debug.assert(!I.packageId), d = e.Diagnostics.Referenced_via_0_from_file_1; + break; + case e.FileIncludeKind.TypeReferenceDirective: + d = I.packageId ? e.Diagnostics.Type_library_referenced_via_0_from_file_1_with_packageId_2 : e.Diagnostics.Type_library_referenced_via_0_from_file_1; + break; + case e.FileIncludeKind.LibReferenceDirective: + e.Debug.assert(!I.packageId), d = e.Diagnostics.Library_referenced_via_0_from_file_1; + break; + default: + e.Debug.assertNever(k); + } + return e.chainDiagnosticMessages(void 0, d, l, q(I.file, Y), I.packageId && e.packageIdToString(I.packageId)); + } + switch (k.kind) { + case e.FileIncludeKind.RootFile: + if (!(!((U = H.configFile) === null || U === void 0) && U.configFileSpecs)) + return e.chainDiagnosticMessages(void 0, e.Diagnostics.Root_file_specified_for_compilation); + var D = e.getNormalizedAbsolutePath(P.getRootFileNames()[k.index], P.getCurrentDirectory()), fe = J(P, D); + if (fe) + return e.chainDiagnosticMessages(void 0, e.Diagnostics.Part_of_files_list_in_tsconfig_json); + var g = ie(P, D); + return g ? e.chainDiagnosticMessages(void 0, e.Diagnostics.Matched_by_include_pattern_0_in_1, g, q(H.configFile, Y)) : e.chainDiagnosticMessages(void 0, e.Diagnostics.Root_file_specified_for_compilation); + case e.FileIncludeKind.SourceFromProjectReference: + case e.FileIncludeKind.OutputFromProjectReference: + var ne = k.kind === e.FileIncludeKind.OutputFromProjectReference, ue = e.Debug.checkDefined((j = P.getResolvedProjectReferences()) === null || j === void 0 ? void 0 : j[k.index]); + return e.chainDiagnosticMessages(void 0, e.outFile(H) ? ne ? e.Diagnostics.Output_from_referenced_project_0_included_because_1_specified : e.Diagnostics.Source_from_referenced_project_0_included_because_1_specified : ne ? e.Diagnostics.Output_from_referenced_project_0_included_because_module_is_specified_as_none : e.Diagnostics.Source_from_referenced_project_0_included_because_module_is_specified_as_none, q(ue.sourceFile.fileName, Y), H.outFile ? "--outFile" : "--out"); + case e.FileIncludeKind.AutomaticTypeDirectiveFile: + return e.chainDiagnosticMessages(void 0, H.types ? k.packageId ? e.Diagnostics.Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1 : e.Diagnostics.Entry_point_of_type_library_0_specified_in_compilerOptions : k.packageId ? e.Diagnostics.Entry_point_for_implicit_type_library_0_with_packageId_1 : e.Diagnostics.Entry_point_for_implicit_type_library_0, k.typeReference, k.packageId && e.packageIdToString(k.packageId)); + case e.FileIncludeKind.LibFile: + if (k.index !== void 0) + return e.chainDiagnosticMessages(void 0, e.Diagnostics.Library_0_specified_in_compilerOptions, H.lib[k.index]); + var We = e.forEachEntry(e.targetOptionDeclaration.type, function(Fe, Z) { + return Fe === e.getEmitScriptTarget(H) ? Z : void 0; + }); + return e.chainDiagnosticMessages(void 0, We ? e.Diagnostics.Default_library_for_target_0 : e.Diagnostics.Default_library, We); + default: + e.Debug.assertNever(k); + } + } + e.fileIncludeReasonToDiagnostics = R; + function q(P, k) { + var Y = e.isString(P) ? P : P.fileName; + return k ? k(Y) : Y; + } + function O(P, k, Y, U, j, H, I, l) { + var d = !!P.getCompilerOptions().listFilesOnly, D = P.getConfigFileParsingDiagnostics().slice(), fe = D.length; + e.addRange(D, P.getSyntacticDiagnostics(void 0, H)), D.length === fe && (e.addRange(D, P.getOptionsDiagnostics(H)), d || (e.addRange(D, P.getGlobalDiagnostics(H)), D.length === fe && e.addRange(D, P.getSemanticDiagnostics(void 0, H)))); + var g = d ? { emitSkipped: true, diagnostics: e.emptyArray } : P.emit(void 0, j, H, I, l), ne = g.emittedFiles, ue = g.diagnostics; + e.addRange(D, ue); + var We = e.sortAndDeduplicateDiagnostics(D); + if (We.forEach(k), Y) { + var Fe = P.getCurrentDirectory(); + e.forEach(ne, function(Z) { + var Be = e.getNormalizedAbsolutePath(Z, Fe); + Y("TSFILE: ".concat(Be)); + }), K(P, Y); + } + return U && U(N(We), p(We)), { emitResult: g, diagnostics: We }; + } + e.emitFilesAndReportErrors = O; + function ve(P, k, Y, U, j, H, I, l) { + var d = O(P, k, Y, U, j, H, I, l), D = d.emitResult, fe = d.diagnostics; + return D.emitSkipped && fe.length > 0 ? e.ExitStatus.DiagnosticsPresent_OutputsSkipped : fe.length > 0 ? e.ExitStatus.DiagnosticsPresent_OutputsGenerated : e.ExitStatus.Success; + } + e.emitFilesAndReportErrorsAndGetExitStatus = ve, e.noopFileWatcher = { close: e.noop }, e.returnNoopFileWatcher = function() { + return e.noopFileWatcher; + }; + function ee(P, k) { + P === void 0 && (P = e.sys); + var Y = k || Q(P); + return { onWatchStatusChange: Y, watchFile: e.maybeBind(P, P.watchFile) || e.returnNoopFileWatcher, watchDirectory: e.maybeBind(P, P.watchDirectory) || e.returnNoopFileWatcher, setTimeout: e.maybeBind(P, P.setTimeout) || e.noop, clearTimeout: e.maybeBind(P, P.clearTimeout) || e.noop }; + } + e.createWatchHost = ee, e.WatchType = { ConfigFile: "Config file", ExtendedConfigFile: "Extended config file", SourceFile: "Source file", MissingFile: "Missing file", WildcardDirectory: "Wild card directory", FailedLookupLocations: "Failed Lookup Locations", TypeRoots: "Type roots", ConfigFileOfReferencedProject: "Config file of referened project", ExtendedConfigOfReferencedProject: "Extended config file of referenced project", WildcardDirectoryOfReferencedProject: "Wild card directory of referenced project", PackageJson: "package.json file" }; + function he(P, k) { + var Y = P.trace ? k.extendedDiagnostics ? e.WatchLogLevel.Verbose : k.diagnostics ? e.WatchLogLevel.TriggerOnly : e.WatchLogLevel.None : e.WatchLogLevel.None, U = Y !== e.WatchLogLevel.None ? function(H) { + return P.trace(H); + } : e.noop, j = e.getWatchFactory(P, Y, U); + return j.writeLog = U, j; + } + e.createWatchFactory = he; + function F(P, k, Y) { + Y === void 0 && (Y = P); + var U = P.useCaseSensitiveFileNames(), j = e.memoize(function() { + return P.getNewLine(); + }); + return { getSourceFile: function(I, l, d) { + var D; + try { + e.performance.mark("beforeIORead"), D = P.readFile(I, k().charset), e.performance.mark("afterIORead"), e.performance.measure("I/O Read", "beforeIORead", "afterIORead"); + } catch (fe) { + d && d(fe.message), D = ""; + } + return D !== void 0 ? e.createSourceFile(I, D, l) : void 0; + }, getDefaultLibLocation: e.maybeBind(P, P.getDefaultLibLocation), getDefaultLibFileName: function(I) { + return P.getDefaultLibFileName(I); + }, writeFile: H, getCurrentDirectory: e.memoize(function() { + return P.getCurrentDirectory(); + }), useCaseSensitiveFileNames: function() { + return U; + }, getCanonicalFileName: e.createGetCanonicalFileName(U), getNewLine: function() { + return e.getNewLineCharacter(k(), j); + }, fileExists: function(I) { + return P.fileExists(I); + }, readFile: function(I) { + return P.readFile(I); + }, trace: e.maybeBind(P, P.trace), directoryExists: e.maybeBind(Y, Y.directoryExists), getDirectories: e.maybeBind(Y, Y.getDirectories), realpath: e.maybeBind(P, P.realpath), getEnvironmentVariable: e.maybeBind(P, P.getEnvironmentVariable) || function() { + return ""; + }, createHash: e.maybeBind(P, P.createHash), readDirectory: e.maybeBind(P, P.readDirectory), disableUseFileVersionAsSignature: P.disableUseFileVersionAsSignature, storeFilesChangingSignatureDuringEmit: P.storeFilesChangingSignatureDuringEmit }; + function H(I, l, d, D) { + try { + e.performance.mark("beforeIOWrite"), e.writeFileEnsuringDirectories(I, l, d, function(fe, g, ne) { + return P.writeFile(fe, g, ne); + }, function(fe) { + return P.createDirectory(fe); + }, function(fe) { + return P.directoryExists(fe); + }), e.performance.mark("afterIOWrite"), e.performance.measure("I/O Write", "beforeIOWrite", "afterIOWrite"); + } catch (fe) { + D && D(fe.message); + } + } + } + e.createCompilerHostFromProgramHost = F; + function x(P, k) { + var Y = P.getSourceFile, U = e.maybeBind(k, k.createHash) || e.generateDjb2Hash; + P.getSourceFile = function() { + for (var j = [], H = 0; H < arguments.length; H++) + j[H] = arguments[H]; + var I = Y.call.apply(Y, Ve([P], j, false)); + return I && (I.version = U(I.text)), I; + }; + } + e.setGetSourceFileAsHashVersioned = x; + function X(P, k) { + var Y = e.memoize(function() { + return e.getDirectoryPath(e.normalizePath(P.getExecutingFilePath())); + }); + return { useCaseSensitiveFileNames: function() { + return P.useCaseSensitiveFileNames; + }, getNewLine: function() { + return P.newLine; + }, getCurrentDirectory: e.memoize(function() { + return P.getCurrentDirectory(); + }), getDefaultLibLocation: Y, getDefaultLibFileName: function(U) { + return e.combinePaths(Y(), e.getDefaultLibFileName(U)); + }, fileExists: function(U) { + return P.fileExists(U); + }, readFile: function(U, j) { + return P.readFile(U, j); + }, directoryExists: function(U) { + return P.directoryExists(U); + }, getDirectories: function(U) { + return P.getDirectories(U); + }, readDirectory: function(U, j, H, I, l) { + return P.readDirectory(U, j, H, I, l); + }, realpath: e.maybeBind(P, P.realpath), getEnvironmentVariable: e.maybeBind(P, P.getEnvironmentVariable), trace: function(U) { + return P.write(U + P.newLine); + }, createDirectory: function(U) { + return P.createDirectory(U); + }, writeFile: function(U, j, H) { + return P.writeFile(U, j, H); + }, createHash: e.maybeBind(P, P.createHash), createProgram: k || e.createEmitAndSemanticDiagnosticsBuilderProgram, disableUseFileVersionAsSignature: P.disableUseFileVersionAsSignature, storeFilesChangingSignatureDuringEmit: P.storeFilesChangingSignatureDuringEmit }; + } + e.createProgramHost = X; + function $(P, k, Y, U) { + P === void 0 && (P = e.sys); + var j = function(I) { + return P.write(I + P.newLine); + }, H = X(P, k); + return e.copyProperties(H, ee(P, U)), H.afterProgramCreate = function(I) { + var l = I.getCompilerOptions(), d = e.getNewLineCharacter(l, function() { + return P.newLine; + }); + O(I, Y, j, function(D) { + return H.onWatchStatusChange(e.createCompilerDiagnostic(m(D), D), d, l, D); + }); + }, H; + } + function A(P, k, Y) { + k(Y), P.exit(e.ExitStatus.DiagnosticsPresent_OutputsSkipped); + } + function y(P) { + var k = P.configFileName, Y = P.optionsToExtend, U = P.watchOptionsToExtend, j = P.extraFileExtensions, H = P.system, I = P.createProgram, l = P.reportDiagnostic, d = P.reportWatchStatus, D = l || C(H), fe = $(H, I, D, d); + return fe.onUnRecoverableConfigFileDiagnostic = function(g) { + return A(H, D, g); + }, fe.configFileName = k, fe.optionsToExtend = Y, fe.watchOptionsToExtend = U, fe.extraFileExtensions = j, fe; + } + e.createWatchCompilerHostOfConfigFile = y; + function V(P) { + var k = P.rootFiles, Y = P.options, U = P.watchOptions, j = P.projectReferences, H = P.system, I = P.createProgram, l = P.reportDiagnostic, d = P.reportWatchStatus, D = $(H, I, l || C(H), d); + return D.rootFiles = k, D.options = Y, D.watchOptions = U, D.projectReferences = j, D; + } + e.createWatchCompilerHostOfFilesAndCompilerOptions = V; + function L(P) { + var k = P.system || e.sys, Y = P.host || (P.host = e.createIncrementalCompilerHost(P.options, k)), U = e.createIncrementalProgram(P), j = ve(U, P.reportDiagnostic || C(k), function(H) { + return Y.trace && Y.trace(H); + }, P.reportErrorSummary || P.options.pretty ? function(H, I) { + return k.write(oe(H, I, k.newLine, Y)); + } : void 0); + return P.afterProgramEmitAndDiagnostics && P.afterProgramEmitAndDiagnostics(U), j; + } + e.performIncrementalCompilation = L; + })(ke || (ke = {})); + var ke; + (function(e) { + function a(Q, le) { + if (!e.outFile(Q)) { + var N = e.getTsBuildInfoEmitOutputFilePath(Q); + if (!!N) { + var p = le.readFile(N); + if (!!p) { + var m = e.getBuildInfo(p); + if (m.version === e.version && !!m.program) + return e.createBuildProgramUsingProgramBuildInfo(m.program, N, le); + } + } + } + } + e.readBuilderProgram = a; + function C(Q, le) { + le === void 0 && (le = e.sys); + var N = e.createCompilerHostWorker(Q, void 0, le); + return N.createHash = e.maybeBind(le, le.createHash), N.disableUseFileVersionAsSignature = le.disableUseFileVersionAsSignature, N.storeFilesChangingSignatureDuringEmit = le.storeFilesChangingSignatureDuringEmit, e.setGetSourceFileAsHashVersioned(N, le), e.changeCompilerHostLikeToUseCache(N, function(p) { + return e.toPath(p, N.getCurrentDirectory(), N.getCanonicalFileName); + }), N; + } + e.createIncrementalCompilerHost = C; + function w(Q) { + var le = Q.rootNames, N = Q.options, p = Q.configFileParsingDiagnostics, m = Q.projectReferences, G = Q.host, oe = Q.createProgram; + G = G || C(N), oe = oe || e.createEmitAndSemanticDiagnosticsBuilderProgram; + var f = a(N, G); + return oe(le, N, G, f, p, m); + } + e.createIncrementalProgram = w; + function B(Q, le, N, p, m, G, oe, f) { + return e.isArray(Q) ? e.createWatchCompilerHostOfFilesAndCompilerOptions({ rootFiles: Q, options: le, watchOptions: f, projectReferences: oe, system: N, createProgram: p, reportDiagnostic: m, reportWatchStatus: G }) : e.createWatchCompilerHostOfConfigFile({ configFileName: Q, optionsToExtend: le, watchOptionsToExtend: oe, extraFileExtensions: f, system: N, createProgram: p, reportDiagnostic: m, reportWatchStatus: G }); + } + e.createWatchCompilerHost = B; + function E(Q) { + var le, N, p, m, G, oe, f, T, K, b = Q.extendedConfigCache, se = false, J = false, ie = new e.Map(), R, q = false, O = Q.useCaseSensitiveFileNames(), ve = Q.getCurrentDirectory(), ee = Q.configFileName, he = Q.optionsToExtend, F = he === void 0 ? {} : he, x = Q.watchOptionsToExtend, X = Q.extraFileExtensions, $ = Q.createProgram, A = Q.rootFiles, y = Q.options, V = Q.watchOptions, L = Q.projectReferences, P, k, Y = false, U = false, j = ee === void 0 ? void 0 : e.createCachedDirectoryStructureHost(Q, ve, O), H = j || Q, I = e.parseConfigHostFromCompilerHostLike(Q, H), l = Ie(); + ee && Q.configFileParsingResult && (Ur(Q.configFileParsingResult), l = Ie()), Ye(e.Diagnostics.Starting_compilation_in_watch_mode), ee && !Q.configFileParsingResult && (l = e.getNewLineCharacter(F, function() { + return Q.getNewLine(); + }), e.Debug.assert(!A), wr(), l = Ie()); + var d = e.createWatchFactory(Q, y), D = d.watchFile, fe = d.watchDirectory, g = d.writeLog, ne = e.createGetCanonicalFileName(O); + g("Current directory: ".concat(ve, " CaseSensitiveFileNames: ").concat(O)); + var ue; + ee && (ue = D(ee, be, e.PollingInterval.High, V, e.WatchType.ConfigFile)); + var We = e.createCompilerHostFromProgramHost(Q, function() { + return y; + }, H); + e.setGetSourceFileAsHashVersioned(We, Q); + var Fe = We.getSourceFile; + We.getSourceFile = function(pi) { + for (var ae = [], Xe = 1; Xe < arguments.length; Xe++) + ae[Xe - 1] = arguments[Xe]; + return Ae.apply(void 0, Ve([pi, _e(pi)], ae, false)); + }, We.getSourceFileByPath = Ae, We.getNewLine = function() { + return l; + }, We.fileExists = ye, We.onReleaseOldSourceFile = Cr, We.onReleaseParsedCommandLine = pe, We.toPath = _e, We.getCompilationSettings = function() { + return y; + }, We.useSourceOfProjectReferenceRedirect = e.maybeBind(Q, Q.useSourceOfProjectReferenceRedirect), We.watchDirectoryOfFailedLookupLocation = function(pi, ae, Xe) { + return fe(pi, ae, Xe, V, e.WatchType.FailedLookupLocations); + }, We.watchTypeRootsDirectory = function(pi, ae, Xe) { + return fe(pi, ae, Xe, V, e.WatchType.TypeRoots); + }, We.getCachedDirectoryStructureHost = function() { + return j; + }, We.scheduleInvalidateResolutionsOfFailedLookupLocations = Ne, We.onInvalidatedResolution = lr, We.onChangedAutomaticTypeDirectiveNames = lr, We.fileIsOpen = e.returnFalse, We.getCurrentProgram = ze, We.writeLog = g, We.getParsedCommandLine = ii; + var Z = e.createResolutionCache(We, ee ? e.getDirectoryPath(e.getNormalizedAbsolutePath(ee, ve)) : ve, false); + We.resolveModuleNames = Q.resolveModuleNames ? function() { + for (var pi = [], ae = 0; ae < arguments.length; ae++) + pi[ae] = arguments[ae]; + return Q.resolveModuleNames.apply(Q, pi); + } : function(pi, ae, Xe, Jr, ti, Ze) { + return Z.resolveModuleNames(pi, ae, Xe, Jr, Ze); + }, We.resolveTypeReferenceDirectives = Q.resolveTypeReferenceDirectives ? function() { + for (var pi = [], ae = 0; ae < arguments.length; ae++) + pi[ae] = arguments[ae]; + return Q.resolveTypeReferenceDirectives.apply(Q, pi); + } : function(pi, ae, Xe, Jr, ti) { + return Z.resolveTypeReferenceDirectives(pi, ae, Xe, ti); + }; + var Be = !!Q.resolveModuleNames || !!Q.resolveTypeReferenceDirectives; + return le = a(y, We), Ee(), Gi(), ee && Zt(_e(ee), y, V, e.WatchType.ExtendedConfigFile), ee ? { getCurrentProgram: Re, getProgram: ur, close: ge } : { getCurrentProgram: Re, getProgram: ur, updateRootFileNames: rr, close: ge }; + function ge() { + Er(), Z.clear(), e.clearMap(ie, function(pi) { + pi && pi.fileWatcher && (pi.fileWatcher.close(), pi.fileWatcher = void 0); + }), ue && (ue.close(), ue = void 0), b == null || b.clear(), b = void 0, K && (e.clearMap(K, e.closeFileWatcherOf), K = void 0), G && (e.clearMap(G, e.closeFileWatcherOf), G = void 0), p && (e.clearMap(p, e.closeFileWatcher), p = void 0), T && (e.clearMap(T, function(pi) { + var ae; + (ae = pi.watcher) === null || ae === void 0 || ae.close(), pi.watcher = void 0, pi.watchedDirectories && e.clearMap(pi.watchedDirectories, e.closeFileWatcherOf), pi.watchedDirectories = void 0; + }), T = void 0), m && (e.clearMap(m, e.closeFileWatcher), m = void 0); + } + function Re() { + return le; + } + function ze() { + return le && le.getProgramOrUndefined(); + } + function Ee() { + g("Synchronizing program"), Er(); + var pi = Re(); + q && (l = Ie(), pi && (se || e.changesAffectModuleResolution(pi.getCompilerOptions(), y)) && Z.clear()); + var ae = Z.createHasInvalidatedResolution(Be || se); + return e.isProgramUptoDate(ze(), A, y, ir, ye, ae, Br, ii, L) ? U && (J && Ye(e.Diagnostics.File_change_detected_Starting_incremental_compilation), le = $(void 0, void 0, We, le, k, L), U = false) : (J && Ye(e.Diagnostics.File_change_detected_Starting_incremental_compilation), He(ae)), se = false, J = false, Q.afterProgramCreate && pi !== le && Q.afterProgramCreate(le), le; + } + function He(pi) { + g("CreatingProgramWith::"), g(" roots: ".concat(JSON.stringify(A))), g(" options: ".concat(JSON.stringify(y))), L && g(" projectReferences: ".concat(JSON.stringify(L))); + var ae = q || !ze(); + q = false, U = false, Z.startCachingPerDirectoryResolution(), We.hasInvalidatedResolution = pi, We.hasChangedAutomaticTypeDirectiveNames = Br, le = $(A, y, We, le, k, L); + var Xe = e.map(Z.getModuleResolutionCache().getPackageJsonInfoCache().entries(), function(Sr) { + var zr = Sr[0], Wr = Sr[1]; + return [We.realpath ? _e(We.realpath(zr)) : zr, Wr]; + }); + if (Z.finishCachingPerDirectoryResolution(), e.updateMissingFilePathsWatch(le.getProgram(), p || (p = new e.Map()), Di), e.updatePackageJsonWatch(Xe, m || (m = new e.Map()), wi), ae && Z.updateTypeRootsWatch(), R) { + for (var Jr = 0, ti = R; Jr < ti.length; Jr++) { + var Ze = ti[Jr]; + p.has(Ze) || ie.delete(Ze); + } + R = void 0; + } + } + function rr(pi) { + e.Debug.assert(!ee, "Cannot update root file names with config file watch mode"), A = pi, lr(); + } + function Ie() { + return e.getNewLineCharacter(y || F, function() { + return Q.getNewLine(); + }); + } + function _e(pi) { + return e.toPath(pi, ve, ne); + } + function we(pi) { + return typeof pi == "boolean"; + } + function de(pi) { + return typeof pi.version == "boolean"; + } + function ye(pi) { + var ae = _e(pi); + return we(ie.get(ae)) ? false : H.fileExists(pi); + } + function Ae(pi, ae, Xe, Jr, ti) { + var Ze = ie.get(ae); + if (!we(Ze)) { + if (Ze === void 0 || ti || de(Ze)) { + var Sr = Fe(pi, Xe, Jr); + if (Ze) + Sr ? (Ze.sourceFile = Sr, Ze.version = Sr.version, Ze.fileWatcher || (Ze.fileWatcher = or(ae, pi, qr, e.PollingInterval.Low, V, e.WatchType.SourceFile))) : (Ze.fileWatcher && Ze.fileWatcher.close(), ie.set(ae, false)); + else if (Sr) { + var zr = or(ae, pi, qr, e.PollingInterval.Low, V, e.WatchType.SourceFile); + ie.set(ae, { sourceFile: Sr, version: Sr.version, fileWatcher: zr }); + } else + ie.set(ae, false); + return Sr && (Sr.impliedNodeFormat = e.getImpliedNodeFormatForFile(ae, Z.getModuleResolutionCache().getPackageJsonInfoCache(), We, We.getCompilationSettings())), Sr; + } + return Ze.sourceFile; + } + } + function er(pi) { + var ae = ie.get(pi); + ae !== void 0 && (we(ae) ? ie.set(pi, { version: false }) : ae.version = false); + } + function ir(pi) { + var ae = ie.get(pi); + return !ae || !ae.version ? void 0 : ae.version; + } + function Cr(pi, ae, Xe) { + var Jr = ie.get(pi.resolvedPath); + Jr !== void 0 && (we(Jr) ? (R || (R = [])).push(pi.path) : Jr.sourceFile === pi && (Jr.fileWatcher && Jr.fileWatcher.close(), ie.delete(pi.resolvedPath), Xe || Z.removeResolutionsOfFile(pi.path))); + } + function Ye(pi) { + Q.onWatchStatusChange && Q.onWatchStatusChange(e.createCompilerDiagnostic(pi), l, y || F); + } + function Br() { + return Z.hasChangedAutomaticTypeDirectiveNames(); + } + function Er() { + return f ? (Q.clearTimeout(f), f = void 0, true) : false; + } + function Ne() { + if (!Q.setTimeout || !Q.clearTimeout) + return Z.invalidateResolutionsOfFailedLookupLocations(); + var pi = Er(); + g("Scheduling invalidateFailedLookup".concat(pi ? ", Cancelled earlier one" : "")), f = Q.setTimeout(n, 250); + } + function n() { + f = void 0, Z.invalidateResolutionsOfFailedLookupLocations() && lr(); + } + function lr() { + !Q.setTimeout || !Q.clearTimeout || (oe && Q.clearTimeout(oe), g("Scheduling update"), oe = Q.setTimeout(Ge, 250)); + } + function be() { + e.Debug.assert(!!ee), N = e.ConfigFileProgramReloadLevel.Full, lr(); + } + function Ge() { + oe = void 0, J = true, ur(); + } + function ur() { + switch (N) { + case e.ConfigFileProgramReloadLevel.Partial: + e.perfLogger.logStartUpdateProgram("PartialConfigReload"), yr(); + break; + case e.ConfigFileProgramReloadLevel.Full: + e.perfLogger.logStartUpdateProgram("FullConfigReload"), Ir(); + break; + default: + e.perfLogger.logStartUpdateProgram("SynchronizeProgram"), Ee(); + break; + } + return e.perfLogger.logStopUpdateProgram("Done"), Re(); + } + function yr() { + g("Reloading new file names and options"), A = e.getFileNamesFromConfigSpecs(y.configFile.configFileSpecs, e.getNormalizedAbsolutePath(e.getDirectoryPath(ee), ve), y, I, X), e.updateErrorForNoInputFiles(A, e.getNormalizedAbsolutePath(ee, ve), y.configFile.configFileSpecs, k, Y) && (U = true), Ee(); + } + function Ir() { + g("Reloading config file: ".concat(ee)), N = e.ConfigFileProgramReloadLevel.None, j && j.clearCache(), wr(), q = true, Ee(), Gi(), Zt(_e(ee), y, V, e.WatchType.ExtendedConfigFile); + } + function wr() { + Ur(e.getParsedCommandLineOfConfigFile(ee, F, I, b || (b = new e.Map()), x, X)); + } + function Ur(pi) { + A = pi.fileNames, y = pi.options, V = pi.watchOptions, L = pi.projectReferences, P = pi.wildcardDirectories, k = e.getConfigFileParsingDiagnostics(pi).slice(), Y = e.canJsonReportNoInputFiles(pi.raw), U = true; + } + function ii(pi) { + var ae = _e(pi), Xe = T == null ? void 0 : T.get(ae); + if (Xe) { + if (!Xe.reloadLevel) + return Xe.parsedCommandLine; + if (Xe.parsedCommandLine && Xe.reloadLevel === e.ConfigFileProgramReloadLevel.Partial && !Q.getParsedCommandLine) { + g("Reloading new file names and options"); + var Jr = e.getFileNamesFromConfigSpecs(Xe.parsedCommandLine.options.configFile.configFileSpecs, e.getNormalizedAbsolutePath(e.getDirectoryPath(pi), ve), y, I); + return Xe.parsedCommandLine = Ke(Ke({}, Xe.parsedCommandLine), { fileNames: Jr }), Xe.reloadLevel = void 0, Xe.parsedCommandLine; + } + } + g("Loading config file: ".concat(pi)); + var ti = Q.getParsedCommandLine ? Q.getParsedCommandLine(pi) : mi(pi); + return Xe ? (Xe.parsedCommandLine = ti, Xe.reloadLevel = void 0) : (T || (T = new e.Map())).set(ae, Xe = { parsedCommandLine: ti }), _r(pi, ae, Xe), ti; + } + function mi(pi) { + var ae = I.onUnRecoverableConfigFileDiagnostic; + I.onUnRecoverableConfigFileDiagnostic = e.noop; + var Xe = e.getParsedCommandLineOfConfigFile(pi, void 0, I, b || (b = new e.Map()), x); + return I.onUnRecoverableConfigFileDiagnostic = ae, Xe; + } + function pe(pi) { + var ae, Xe = _e(pi), Jr = T == null ? void 0 : T.get(Xe); + !Jr || (T.delete(Xe), Jr.watchedDirectories && e.clearMap(Jr.watchedDirectories, e.closeFileWatcherOf), (ae = Jr.watcher) === null || ae === void 0 || ae.close(), e.clearSharedExtendedConfigFileWatcher(Xe, K)); + } + function or(pi, ae, Xe, Jr, ti, Ze) { + return D(ae, function(Sr, zr) { + return Xe(Sr, zr, pi); + }, Jr, ti, Ze); + } + function qr(pi, ae, Xe) { + si(pi, Xe, ae), ae === e.FileWatcherEventKind.Deleted && ie.has(Xe) && Z.invalidateResolutionOfFile(Xe), er(Xe), lr(); + } + function si(pi, ae, Xe) { + j && j.addOrDeleteFile(pi, ae, Xe); + } + function Di(pi) { + return T != null && T.has(pi) ? e.noopFileWatcher : or(pi, pi, et, e.PollingInterval.Medium, V, e.WatchType.MissingFile); + } + function wi(pi) { + return ie.has(pi) ? e.noopFileWatcher : or(pi, pi, Xi, e.PollingInterval.High, V, e.WatchType.PackageJson); + } + function Xi(pi, ae, Xe) { + si(pi, Xe, ae), N = e.ConfigFileProgramReloadLevel.Full, se = true, lr(); + } + function et(pi, ae, Xe) { + si(pi, Xe, ae), ae === e.FileWatcherEventKind.Created && p.has(Xe) && (p.get(Xe).close(), p.delete(Xe), er(Xe), lr()); + } + function Gi() { + P ? e.updateWatchingWildcardDirectories(G || (G = new e.Map()), new e.Map(e.getEntries(P)), Wt) : G && e.clearMap(G, e.closeFileWatcherOf); + } + function Wt(pi, ae) { + return fe(pi, function(Xe) { + e.Debug.assert(!!ee); + var Jr = _e(Xe); + j && j.addOrDeleteFileOrDirectory(Xe, Jr), er(Jr), !e.isIgnoredFileFromWildCardWatching({ watchedDirPath: _e(pi), fileOrDirectory: Xe, fileOrDirectoryPath: Jr, configFileName: ee, extraFileExtensions: X, options: y, program: Re() || A, currentDirectory: ve, useCaseSensitiveFileNames: O, writeLog: g, toPath: _e }) && N !== e.ConfigFileProgramReloadLevel.Full && (N = e.ConfigFileProgramReloadLevel.Partial, lr()); + }, ae, V, e.WatchType.WildcardDirectory); + } + function Zt(pi, ae, Xe, Jr) { + e.updateSharedExtendedConfigFileWatcher(pi, ae, K || (K = new e.Map()), function(ti, Ze) { + return D(ti, function(Sr, zr) { + var Wr; + si(ti, Ze, zr), b && e.cleanExtendedConfigCache(b, Ze, _e); + var Je = (Wr = K.get(Ze)) === null || Wr === void 0 ? void 0 : Wr.projects; + !(Je != null && Je.size) || Je.forEach(function(xe) { + if (_e(ee) === xe) + N = e.ConfigFileProgramReloadLevel.Full; + else { + var vr = T == null ? void 0 : T.get(xe); + vr && (vr.reloadLevel = e.ConfigFileProgramReloadLevel.Full), Z.removeResolutionsFromProjectReferenceRedirects(xe); + } + lr(); + }); + }, e.PollingInterval.High, Xe, Jr); + }, _e); + } + function _r(pi, ae, Xe) { + var Jr, ti, Ze, Sr, zr; + Xe.watcher || (Xe.watcher = D(pi, function(Wr, Je) { + si(pi, ae, Je); + var xe = T == null ? void 0 : T.get(ae); + xe && (xe.reloadLevel = e.ConfigFileProgramReloadLevel.Full), Z.removeResolutionsFromProjectReferenceRedirects(ae), lr(); + }, e.PollingInterval.High, ((Jr = Xe.parsedCommandLine) === null || Jr === void 0 ? void 0 : Jr.watchOptions) || V, e.WatchType.ConfigFileOfReferencedProject)), !((ti = Xe.parsedCommandLine) === null || ti === void 0) && ti.wildcardDirectories ? e.updateWatchingWildcardDirectories(Xe.watchedDirectories || (Xe.watchedDirectories = new e.Map()), new e.Map(e.getEntries((Ze = Xe.parsedCommandLine) === null || Ze === void 0 ? void 0 : Ze.wildcardDirectories)), function(Wr, Je) { + var xe; + return fe(Wr, function(vr) { + var mr = _e(vr); + j && j.addOrDeleteFileOrDirectory(vr, mr), er(mr); + var Ar = T == null ? void 0 : T.get(ae); + !(Ar != null && Ar.parsedCommandLine) || e.isIgnoredFileFromWildCardWatching({ watchedDirPath: _e(Wr), fileOrDirectory: vr, fileOrDirectoryPath: mr, configFileName: pi, options: Ar.parsedCommandLine.options, program: Ar.parsedCommandLine.fileNames, currentDirectory: ve, useCaseSensitiveFileNames: O, writeLog: g, toPath: _e }) || Ar.reloadLevel !== e.ConfigFileProgramReloadLevel.Full && (Ar.reloadLevel = e.ConfigFileProgramReloadLevel.Partial, lr()); + }, Je, ((xe = Xe.parsedCommandLine) === null || xe === void 0 ? void 0 : xe.watchOptions) || V, e.WatchType.WildcardDirectoryOfReferencedProject); + }) : Xe.watchedDirectories && (e.clearMap(Xe.watchedDirectories, e.closeFileWatcherOf), Xe.watchedDirectories = void 0), Zt(ae, (Sr = Xe.parsedCommandLine) === null || Sr === void 0 ? void 0 : Sr.options, ((zr = Xe.parsedCommandLine) === null || zr === void 0 ? void 0 : zr.watchOptions) || V, e.WatchType.ExtendedConfigOfReferencedProject); + } + } + e.createWatchProgram = E; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(w) { + w[w.Unbuildable = 0] = "Unbuildable", w[w.UpToDate = 1] = "UpToDate", w[w.UpToDateWithUpstreamTypes = 2] = "UpToDateWithUpstreamTypes", w[w.OutOfDateWithPrepend = 3] = "OutOfDateWithPrepend", w[w.OutputMissing = 4] = "OutputMissing", w[w.OutOfDateWithSelf = 5] = "OutOfDateWithSelf", w[w.OutOfDateWithUpstream = 6] = "OutOfDateWithUpstream", w[w.UpstreamOutOfDate = 7] = "UpstreamOutOfDate", w[w.UpstreamBlocked = 8] = "UpstreamBlocked", w[w.ComputingUpstream = 9] = "ComputingUpstream", w[w.TsVersionOutputOfDate = 10] = "TsVersionOutputOfDate", w[w.ContainerOnly = 11] = "ContainerOnly"; + })(a = e.UpToDateStatusType || (e.UpToDateStatusType = {})); + function C(w) { + return e.fileExtensionIs(w, ".json") ? w : e.combinePaths(w, "tsconfig.json"); + } + e.resolveConfigFileProjectName = C; + })(ke || (ke = {})); + var ke; + (function(e) { + var a = new Date(-864e13), C = new Date(864e13), w; + (function(be) { + be[be.None = 0] = "None", be[be.Success = 1] = "Success", be[be.DeclarationOutputUnchanged = 2] = "DeclarationOutputUnchanged", be[be.ConfigFileErrors = 4] = "ConfigFileErrors", be[be.SyntaxErrors = 8] = "SyntaxErrors", be[be.TypeErrors = 16] = "TypeErrors", be[be.DeclarationEmitErrors = 32] = "DeclarationEmitErrors", be[be.EmitErrors = 64] = "EmitErrors", be[be.AnyErrors = 124] = "AnyErrors"; + })(w || (w = {})); + function B(be, Ge, ur) { + var yr = be.get(Ge), Ir; + return yr || (Ir = ur(), be.set(Ge, Ir)), yr || Ir; + } + function E(be, Ge) { + return B(be, Ge, function() { + return new e.Map(); + }); + } + function Q(be, Ge) { + return Ge > be ? Ge : be; + } + function le(be) { + return !!be && !!be.buildOrder; + } + e.isCircularBuildOrder = le; + function N(be) { + return le(be) ? be.buildOrder : be; + } + e.getBuildOrderFromAnyBuildOrder = N; + function p(be, Ge) { + return function(ur) { + var yr = Ge ? "[".concat(e.formatColorAndReset(e.getLocaleTimeString(be), e.ForegroundColorEscapeSequences.Grey), "] ") : "".concat(e.getLocaleTimeString(be), " - "); + yr += "".concat(e.flattenDiagnosticMessageText(ur.messageText, be.newLine)).concat(be.newLine + be.newLine), be.write(yr); + }; + } + e.createBuilderStatusReporter = p; + function m(be, Ge, ur, yr) { + var Ir = e.createProgramHost(be, Ge); + return Ir.getModifiedTime = be.getModifiedTime ? function(wr) { + return be.getModifiedTime(wr); + } : e.returnUndefined, Ir.setModifiedTime = be.setModifiedTime ? function(wr, Ur) { + return be.setModifiedTime(wr, Ur); + } : e.noop, Ir.deleteFile = be.deleteFile ? function(wr) { + return be.deleteFile(wr); + } : e.noop, Ir.reportDiagnostic = ur || e.createDiagnosticReporter(be), Ir.reportSolutionBuilderStatus = yr || p(be), Ir.now = e.maybeBind(be, be.now), Ir; + } + function G(be, Ge, ur, yr, Ir) { + be === void 0 && (be = e.sys); + var wr = m(be, Ge, ur, yr); + return wr.reportErrorSummary = Ir, wr; + } + e.createSolutionBuilderHost = G; + function oe(be, Ge, ur, yr, Ir) { + be === void 0 && (be = e.sys); + var wr = m(be, Ge, ur, yr), Ur = e.createWatchHost(be, Ir); + return e.copyProperties(wr, Ur), wr; + } + e.createSolutionBuilderWithWatchHost = oe; + function f(be) { + var Ge = {}; + return e.commonOptionsWithBuild.forEach(function(ur) { + e.hasProperty(be, ur.name) && (Ge[ur.name] = be[ur.name]); + }), Ge; + } + function T(be, Ge, ur) { + return ye(false, be, Ge, ur); + } + e.createSolutionBuilder = T; + function K(be, Ge, ur, yr) { + return ye(true, be, Ge, ur, yr); + } + e.createSolutionBuilderWithWatch = K; + function b(be, Ge, ur, yr, Ir) { + var wr = Ge, Ur = Ge, ii = wr.getCurrentDirectory(), mi = e.createGetCanonicalFileName(wr.useCaseSensitiveFileNames()), pe = f(yr), or = e.createCompilerHostFromProgramHost(wr, function() { + return Zt.projectCompilerOptions; + }); + e.setGetSourceFileAsHashVersioned(or, wr), or.getParsedCommandLine = function(_r) { + return q(Zt, _r, J(Zt, _r)); + }, or.resolveModuleNames = e.maybeBind(wr, wr.resolveModuleNames), or.resolveTypeReferenceDirectives = e.maybeBind(wr, wr.resolveTypeReferenceDirectives); + var qr = or.resolveModuleNames ? void 0 : e.createModuleResolutionCache(ii, mi), si = or.resolveTypeReferenceDirectives ? void 0 : e.createTypeReferenceDirectiveResolutionCache(ii, mi, void 0, qr == null ? void 0 : qr.getPackageJsonInfoCache()); + if (!or.resolveModuleNames) { + var Di = function(_r, pi, ae, Xe) { + return e.resolveModuleName(_r, ae, Zt.projectCompilerOptions, or, qr, Xe, pi).resolvedModule; + }; + or.resolveModuleNames = function(_r, pi, ae, Xe, Jr, ti) { + return e.loadWithModeAwareCache(e.Debug.checkEachDefined(_r), e.Debug.checkDefined(ti), pi, Xe, Di); + }, or.getModuleResolutionCache = function() { + return qr; + }; + } + if (!or.resolveTypeReferenceDirectives) { + var wi = function(_r, pi, ae, Xe) { + return e.resolveTypeReferenceDirective(_r, pi, Zt.projectCompilerOptions, or, ae, Zt.typeReferenceDirectiveResolutionCache, Xe).resolvedTypeReferenceDirective; + }; + or.resolveTypeReferenceDirectives = function(_r, pi, ae, Xe, Jr) { + return e.loadWithTypeDirectiveCache(e.Debug.checkEachDefined(_r), pi, ae, Jr, wi); + }; + } + var Xi = e.createWatchFactory(Ur, yr), et = Xi.watchFile, Gi = Xi.watchDirectory, Wt = Xi.writeLog, Zt = { host: wr, hostWithWatch: Ur, currentDirectory: ii, getCanonicalFileName: mi, parseConfigFileHost: e.parseConfigHostFromCompilerHostLike(wr), write: e.maybeBind(wr, wr.trace), options: yr, baseCompilerOptions: pe, rootNames: ur, baseWatchOptions: Ir, resolvedConfigFilePaths: new e.Map(), configFileCache: new e.Map(), projectStatus: new e.Map(), buildInfoChecked: new e.Map(), extendedConfigCache: new e.Map(), builderPrograms: new e.Map(), diagnostics: new e.Map(), projectPendingBuild: new e.Map(), projectErrorsReported: new e.Map(), compilerHost: or, moduleResolutionCache: qr, typeReferenceDirectiveResolutionCache: si, buildOrder: void 0, readFileWithCache: function(_r) { + return wr.readFile(_r); + }, projectCompilerOptions: pe, cache: void 0, allProjectBuildPending: true, needsSummary: true, watchAllProjectsPending: be, currentInvalidatedProject: void 0, watch: be, allWatchedWildcardDirectories: new e.Map(), allWatchedInputFiles: new e.Map(), allWatchedConfigFiles: new e.Map(), allWatchedExtendedConfigFiles: new e.Map(), allWatchedPackageJsonFiles: new e.Map(), lastCachedPackageJsonLookups: new e.Map(), timerToBuildInvalidatedProject: void 0, reportFileChangeDetected: false, watchFile: et, watchDirectory: Gi, writeLog: Wt }; + return Zt; + } + function se(be, Ge) { + return e.toPath(Ge, be.currentDirectory, be.getCanonicalFileName); + } + function J(be, Ge) { + var ur = be.resolvedConfigFilePaths, yr = ur.get(Ge); + if (yr !== void 0) + return yr; + var Ir = se(be, Ge); + return ur.set(Ge, Ir), Ir; + } + function ie(be) { + return !!be.options; + } + function R(be, Ge) { + var ur = be.configFileCache.get(Ge); + return ur && ie(ur) ? ur : void 0; + } + function q(be, Ge, ur) { + var yr = be.configFileCache, Ir = yr.get(ur); + if (Ir) + return ie(Ir) ? Ir : void 0; + var wr, Ur = be.parseConfigFileHost, ii = be.baseCompilerOptions, mi = be.baseWatchOptions, pe = be.extendedConfigCache, or = be.host, qr; + return or.getParsedCommandLine ? (qr = or.getParsedCommandLine(Ge), qr || (wr = e.createCompilerDiagnostic(e.Diagnostics.File_0_not_found, Ge))) : (Ur.onUnRecoverableConfigFileDiagnostic = function(si) { + return wr = si; + }, qr = e.getParsedCommandLineOfConfigFile(Ge, ii, Ur, pe, mi), Ur.onUnRecoverableConfigFileDiagnostic = e.noop), yr.set(ur, qr || wr), qr; + } + function O(be, Ge) { + return e.resolveConfigFileProjectName(e.resolvePath(be.currentDirectory, Ge)); + } + function ve(be, Ge) { + for (var ur = new e.Map(), yr = new e.Map(), Ir = [], wr, Ur, ii = 0, mi = Ge; ii < mi.length; ii++) { + var pe = mi[ii]; + or(pe); + } + return Ur ? { buildOrder: wr || e.emptyArray, circularDiagnostics: Ur } : wr || e.emptyArray; + function or(qr, si) { + var Di = J(be, qr); + if (!yr.has(Di)) { + if (ur.has(Di)) { + si || (Ur || (Ur = [])).push(e.createCompilerDiagnostic(e.Diagnostics.Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0, Ir.join(`\r +`))); + return; + } + ur.set(Di, true), Ir.push(qr); + var wi = q(be, qr, Di); + if (wi && wi.projectReferences) + for (var Xi = 0, et = wi.projectReferences; Xi < et.length; Xi++) { + var Gi = et[Xi], Wt = O(be, Gi.path); + or(Wt, si || Gi.circular); + } + Ir.pop(), yr.set(Di, true), (wr || (wr = [])).push(qr); + } + } + } + function ee(be) { + return be.buildOrder || he(be); + } + function he(be) { + var Ge = ve(be, be.rootNames.map(function(Ir) { + return O(be, Ir); + })); + be.resolvedConfigFilePaths.clear(); + var ur = new e.Map(N(Ge).map(function(Ir) { + return [J(be, Ir), true]; + })), yr = { onDeleteValue: e.noop }; + return e.mutateMapSkippingNewValues(be.configFileCache, ur, yr), e.mutateMapSkippingNewValues(be.projectStatus, ur, yr), e.mutateMapSkippingNewValues(be.buildInfoChecked, ur, yr), e.mutateMapSkippingNewValues(be.builderPrograms, ur, yr), e.mutateMapSkippingNewValues(be.diagnostics, ur, yr), e.mutateMapSkippingNewValues(be.projectPendingBuild, ur, yr), e.mutateMapSkippingNewValues(be.projectErrorsReported, ur, yr), be.watch && (e.mutateMapSkippingNewValues(be.allWatchedConfigFiles, ur, { onDeleteValue: e.closeFileWatcher }), be.allWatchedExtendedConfigFiles.forEach(function(Ir) { + Ir.projects.forEach(function(wr) { + ur.has(wr) || Ir.projects.delete(wr); + }), Ir.close(); + }), e.mutateMapSkippingNewValues(be.allWatchedWildcardDirectories, ur, { onDeleteValue: function(Ir) { + return Ir.forEach(e.closeFileWatcherOf); + } }), e.mutateMapSkippingNewValues(be.allWatchedInputFiles, ur, { onDeleteValue: function(Ir) { + return Ir.forEach(e.closeFileWatcher); + } }), e.mutateMapSkippingNewValues(be.allWatchedPackageJsonFiles, ur, { onDeleteValue: function(Ir) { + return Ir.forEach(e.closeFileWatcher); + } })), be.buildOrder = Ge; + } + function F(be, Ge, ur) { + var yr = Ge && O(be, Ge), Ir = ee(be); + if (le(Ir)) + return Ir; + if (yr) { + var wr = J(be, yr), Ur = e.findIndex(Ir, function(mi) { + return J(be, mi) === wr; + }); + if (Ur === -1) + return; + } + var ii = yr ? ve(be, [yr]) : Ir; + return e.Debug.assert(!le(ii)), e.Debug.assert(!ur || yr !== void 0), e.Debug.assert(!ur || ii[ii.length - 1] === yr), ur ? ii.slice(0, ii.length - 1) : ii; + } + function x(be) { + be.cache && X(be); + var Ge = be.compilerHost, ur = be.host, yr = be.readFileWithCache, Ir = Ge.getSourceFile, wr = e.changeCompilerHostLikeToUseCache(ur, function(Di) { + return se(be, Di); + }, function() { + for (var Di = [], wi = 0; wi < arguments.length; wi++) + Di[wi] = arguments[wi]; + return Ir.call.apply(Ir, Ve([Ge], Di, false)); + }), Ur = wr.originalReadFile, ii = wr.originalFileExists, mi = wr.originalDirectoryExists, pe = wr.originalCreateDirectory, or = wr.originalWriteFile, qr = wr.getSourceFileWithCache, si = wr.readFileWithCache; + be.readFileWithCache = si, Ge.getSourceFile = qr, be.cache = { originalReadFile: Ur, originalFileExists: ii, originalDirectoryExists: mi, originalCreateDirectory: pe, originalWriteFile: or, originalReadFileWithCache: yr, originalGetSourceFile: Ir }; + } + function X(be) { + if (!!be.cache) { + var Ge = be.cache, ur = be.host, yr = be.compilerHost, Ir = be.extendedConfigCache, wr = be.moduleResolutionCache, Ur = be.typeReferenceDirectiveResolutionCache; + ur.readFile = Ge.originalReadFile, ur.fileExists = Ge.originalFileExists, ur.directoryExists = Ge.originalDirectoryExists, ur.createDirectory = Ge.originalCreateDirectory, ur.writeFile = Ge.originalWriteFile, yr.getSourceFile = Ge.originalGetSourceFile, be.readFileWithCache = Ge.originalReadFileWithCache, Ir.clear(), wr == null || wr.clear(), Ur == null || Ur.clear(), be.cache = void 0; + } + } + function $(be, Ge) { + be.projectStatus.delete(Ge), be.diagnostics.delete(Ge); + } + function A(be, Ge, ur) { + var yr = be.projectPendingBuild, Ir = yr.get(Ge); + (Ir === void 0 || Ir < ur) && yr.set(Ge, ur); + } + function y(be, Ge) { + if (!!be.allProjectBuildPending) { + be.allProjectBuildPending = false, be.options.watch && ir(be, e.Diagnostics.Starting_compilation_in_watch_mode), x(be); + var ur = N(ee(be)); + ur.forEach(function(yr) { + return be.projectPendingBuild.set(J(be, yr), e.ConfigFileProgramReloadLevel.None); + }), Ge && Ge.throwIfCancellationRequested(); + } + } + var V; + (function(be) { + be[be.Build = 0] = "Build", be[be.UpdateBundle = 1] = "UpdateBundle", be[be.UpdateOutputFileStamps = 2] = "UpdateOutputFileStamps"; + })(V = e.InvalidatedProjectKind || (e.InvalidatedProjectKind = {})); + function L(be, Ge) { + return be.projectPendingBuild.delete(Ge), be.currentInvalidatedProject = void 0, be.diagnostics.has(Ge) ? e.ExitStatus.DiagnosticsPresent_OutputsSkipped : e.ExitStatus.Success; + } + function P(be, Ge, ur, yr, Ir) { + var wr = true; + return { kind: V.UpdateOutputFileStamps, project: Ge, projectPath: ur, buildOrder: Ir, getCompilerOptions: function() { + return yr.options; + }, getCurrentDirectory: function() { + return be.currentDirectory; + }, updateOutputFileStatmps: function() { + ue(be, yr, ur), wr = false; + }, done: function() { + return wr && ue(be, yr, ur), L(be, ur); + } }; + } + var k; + (function(be) { + be[be.CreateProgram = 0] = "CreateProgram", be[be.SyntaxDiagnostics = 1] = "SyntaxDiagnostics", be[be.SemanticDiagnostics = 2] = "SemanticDiagnostics", be[be.Emit = 3] = "Emit", be[be.EmitBundle = 4] = "EmitBundle", be[be.EmitBuildInfo = 5] = "EmitBuildInfo", be[be.BuildInvalidatedProjectOfBundle = 6] = "BuildInvalidatedProjectOfBundle", be[be.QueueReferencingProjects = 7] = "QueueReferencingProjects", be[be.Done = 8] = "Done"; + })(k || (k = {})); + function Y(be, Ge, ur, yr, Ir, wr, Ur) { + var ii = be === V.Build ? k.CreateProgram : k.EmitBundle, mi, pe, or; + return be === V.Build ? { kind: be, project: ur, projectPath: yr, buildOrder: Ur, getCompilerOptions: function() { + return wr.options; + }, getCurrentDirectory: function() { + return Ge.currentDirectory; + }, getBuilderProgram: function() { + return si(e.identity); + }, getProgram: function() { + return si(function(Xe) { + return Xe.getProgramOrUndefined(); + }); + }, getSourceFile: function(Xe) { + return si(function(Jr) { + return Jr.getSourceFile(Xe); + }); + }, getSourceFiles: function() { + return Di(function(Xe) { + return Xe.getSourceFiles(); + }); + }, getOptionsDiagnostics: function(Xe) { + return Di(function(Jr) { + return Jr.getOptionsDiagnostics(Xe); + }); + }, getGlobalDiagnostics: function(Xe) { + return Di(function(Jr) { + return Jr.getGlobalDiagnostics(Xe); + }); + }, getConfigFileParsingDiagnostics: function() { + return Di(function(Xe) { + return Xe.getConfigFileParsingDiagnostics(); + }); + }, getSyntacticDiagnostics: function(Xe, Jr) { + return Di(function(ti) { + return ti.getSyntacticDiagnostics(Xe, Jr); + }); + }, getAllDependencies: function(Xe) { + return Di(function(Jr) { + return Jr.getAllDependencies(Xe); + }); + }, getSemanticDiagnostics: function(Xe, Jr) { + return Di(function(ti) { + return ti.getSemanticDiagnostics(Xe, Jr); + }); + }, getSemanticDiagnosticsOfNextAffectedFile: function(Xe, Jr) { + return si(function(ti) { + return ti.getSemanticDiagnosticsOfNextAffectedFile && ti.getSemanticDiagnosticsOfNextAffectedFile(Xe, Jr); + }); + }, emit: function(Xe, Jr, ti, Ze, Sr) { + if (Xe || Ze) + return si(function(zr) { + var Wr, Je; + return zr.emit(Xe, Jr, ti, Ze, Sr || ((Je = (Wr = Ge.host).getCustomTransformers) === null || Je === void 0 ? void 0 : Je.call(Wr, ur))); + }); + if (ae(k.SemanticDiagnostics, ti), ii === k.EmitBuildInfo) + return Zt(Jr, ti); + if (ii === k.Emit) + return Wt(Jr, ti, Sr); + }, done: qr } : { kind: be, project: ur, projectPath: yr, buildOrder: Ur, getCompilerOptions: function() { + return wr.options; + }, getCurrentDirectory: function() { + return Ge.currentDirectory; + }, emit: function(Xe, Jr) { + return ii !== k.EmitBundle ? or : pi(Xe, Jr); + }, done: qr }; + function qr(Xe, Jr, ti) { + return ae(k.Done, Xe, Jr, ti), L(Ge, yr); + } + function si(Xe) { + return ae(k.CreateProgram), mi && Xe(mi); + } + function Di(Xe) { + return si(Xe) || e.emptyArray; + } + function wi() { + var Xe, Jr; + if (e.Debug.assert(mi === void 0), Ge.options.dry) { + er(Ge, e.Diagnostics.A_non_dry_build_would_build_project_0, ur), pe = w.Success, ii = k.QueueReferencingProjects; + return; + } + if (Ge.options.verbose && er(Ge, e.Diagnostics.Building_project_0, ur), wr.fileNames.length === 0) { + Ye(Ge, yr, e.getConfigFileParsingDiagnostics(wr)), pe = w.None, ii = k.QueueReferencingProjects; + return; + } + var ti = Ge.host, Ze = Ge.compilerHost; + Ge.projectCompilerOptions = wr.options, (Xe = Ge.moduleResolutionCache) === null || Xe === void 0 || Xe.update(wr.options), (Jr = Ge.typeReferenceDirectiveResolutionCache) === null || Jr === void 0 || Jr.update(wr.options), mi = ti.createProgram(wr.fileNames, wr.options, Ze, I(Ge, yr, wr), e.getConfigFileParsingDiagnostics(wr), wr.projectReferences), Ge.watch && (Ge.lastCachedPackageJsonLookups.set(yr, Ge.moduleResolutionCache && e.map(Ge.moduleResolutionCache.getPackageJsonInfoCache().entries(), function(Sr) { + var zr = Sr[0], Wr = Sr[1]; + return [Ge.host.realpath && Wr ? se(Ge, Ge.host.realpath(zr)) : zr, Wr]; + })), Ge.builderPrograms.set(yr, mi)), ii++; + } + function Xi(Xe, Jr, ti) { + var Ze; + Xe.length ? (Ze = d(Ge, yr, mi, wr, Xe, Jr, ti), pe = Ze.buildResult, ii = Ze.step) : ii++; + } + function et(Xe) { + e.Debug.assertIsDefined(mi), Xi(Ve(Ve(Ve(Ve([], mi.getConfigFileParsingDiagnostics(), true), mi.getOptionsDiagnostics(Xe), true), mi.getGlobalDiagnostics(Xe), true), mi.getSyntacticDiagnostics(void 0, Xe), true), w.SyntaxErrors, "Syntactic"); + } + function Gi(Xe) { + Xi(e.Debug.checkDefined(mi).getSemanticDiagnostics(void 0, Xe), w.TypeErrors, "Semantic"); + } + function Wt(Xe, Jr, ti) { + var Ze, Sr, zr; + e.Debug.assertIsDefined(mi), e.Debug.assert(ii === k.Emit), mi.backupState(); + var Wr, Je = function(fr) { + return (Wr || (Wr = [])).push(fr); + }, xe = [], vr = e.emitFilesAndReportErrors(mi, Je, void 0, void 0, function(fr, De, gr) { + return xe.push({ name: fr, text: De, writeByteOrderMark: gr }); + }, Jr, false, ti || ((zr = (Sr = Ge.host).getCustomTransformers) === null || zr === void 0 ? void 0 : zr.call(Sr, ur))).emitResult; + if (Wr) + return mi.restoreState(), Ze = d(Ge, yr, mi, wr, Wr, w.DeclarationEmitErrors, "Declaration file"), pe = Ze.buildResult, ii = Ze.step, { emitSkipped: true, diagnostics: vr.diagnostics }; + var mr = Ge.host, Ar = Ge.compilerHost, Oe = w.DeclarationOutputUnchanged, nr = a, Mr = false, Pe = e.createDiagnosticCollection(), Ue = new e.Map(); + return xe.forEach(function(fr) { + var De = fr.name, gr = fr.text, Vr = fr.writeByteOrderMark, Tr; + !Mr && e.isDeclarationFileName(De) && (mr.fileExists(De) && Ge.readFileWithCache(De) === gr ? Tr = mr.getModifiedTime(De) : (Oe &= ~w.DeclarationOutputUnchanged, Mr = true)), Ue.set(se(Ge, De), De), e.writeFile(Xe ? { writeFile: Xe } : Ar, Pe, De, gr, Vr), Tr !== void 0 && (nr = Q(Tr, nr)); + }), _r(Pe, Ue, nr, Mr, xe.length ? xe[0].name : e.getFirstProjectOutput(wr, !mr.useCaseSensitiveFileNames()), Oe), vr; + } + function Zt(Xe, Jr) { + e.Debug.assertIsDefined(mi), e.Debug.assert(ii === k.EmitBuildInfo); + var ti = mi.emitBuildInfo(Xe, Jr); + return ti.diagnostics.length && (Cr(Ge, ti.diagnostics), Ge.diagnostics.set(yr, Ve(Ve([], Ge.diagnostics.get(yr), true), ti.diagnostics, true)), pe = w.EmitErrors & pe), ti.emittedFiles && Ge.write && ti.emittedFiles.forEach(function(Ze) { + return H(Ge, wr, Ze); + }), l(Ge, mi, wr), ii = k.QueueReferencingProjects, ti; + } + function _r(Xe, Jr, ti, Ze, Sr, zr) { + var Wr, Je = Xe.getDiagnostics(); + if (Je.length) + return Wr = d(Ge, yr, mi, wr, Je, w.EmitErrors, "Emit"), pe = Wr.buildResult, ii = Wr.step, Je; + Ge.write && Jr.forEach(function(vr) { + return H(Ge, wr, vr); + }); + var xe = ne(Ge, wr, ti, e.Diagnostics.Updating_unchanged_output_timestamps_of_project_0, Jr); + return Ge.diagnostics.delete(yr), Ge.projectStatus.set(yr, { type: e.UpToDateStatusType.UpToDate, newestDeclarationFileContentChangedTime: Ze ? C : xe, oldestOutputFileName: Sr }), l(Ge, mi, wr), ii = k.QueueReferencingProjects, pe = zr, Je; + } + function pi(Xe, Jr) { + var ti, Ze; + if (e.Debug.assert(be === V.UpdateBundle), Ge.options.dry) { + er(Ge, e.Diagnostics.A_non_dry_build_would_update_output_of_project_0, ur), pe = w.Success, ii = k.QueueReferencingProjects; + return; + } + Ge.options.verbose && er(Ge, e.Diagnostics.Updating_output_of_project_0, ur); + var Sr = Ge.compilerHost; + Ge.projectCompilerOptions = wr.options; + var zr = e.emitUsingBuildInfo(wr, Sr, function(vr) { + var mr = O(Ge, vr.path); + return q(Ge, mr, J(Ge, mr)); + }, Jr || ((Ze = (ti = Ge.host).getCustomTransformers) === null || Ze === void 0 ? void 0 : Ze.call(ti, ur))); + if (e.isString(zr)) + return er(Ge, e.Diagnostics.Cannot_update_output_of_project_0_because_there_was_error_reading_file_1, ur, Ae(Ge, zr)), ii = k.BuildInvalidatedProjectOfBundle, or = Y(V.Build, Ge, ur, yr, Ir, wr, Ur); + e.Debug.assert(!!zr.length); + var Wr = e.createDiagnosticCollection(), Je = new e.Map(); + zr.forEach(function(vr) { + var mr = vr.name, Ar = vr.text, Oe = vr.writeByteOrderMark; + Je.set(se(Ge, mr), mr), e.writeFile(Xe ? { writeFile: Xe } : Sr, Wr, mr, Ar, Oe); + }); + var xe = _r(Wr, Je, a, false, zr[0].name, w.DeclarationOutputUnchanged); + return { emitSkipped: false, diagnostics: xe }; + } + function ae(Xe, Jr, ti, Ze) { + for (; ii <= Xe && ii < k.Done; ) { + var Sr = ii; + switch (ii) { + case k.CreateProgram: + wi(); + break; + case k.SyntaxDiagnostics: + et(Jr); + break; + case k.SemanticDiagnostics: + Gi(Jr); + break; + case k.Emit: + Wt(ti, Jr, Ze); + break; + case k.EmitBuildInfo: + Zt(ti, Jr); + break; + case k.EmitBundle: + pi(ti, Ze); + break; + case k.BuildInvalidatedProjectOfBundle: + e.Debug.checkDefined(or).done(Jr, ti, Ze), ii = k.Done; + break; + case k.QueueReferencingProjects: + We(Ge, ur, yr, Ir, wr, Ur, e.Debug.checkDefined(pe)), ii++; + break; + case k.Done: + default: + e.assertType(ii); + } + e.Debug.assert(ii > Sr); + } + } + } + function U(be, Ge, ur) { + var yr = be.options; + return Ge.type !== e.UpToDateStatusType.OutOfDateWithPrepend || yr.force ? true : ur.fileNames.length === 0 || !!e.getConfigFileParsingDiagnostics(ur).length || !e.isIncrementalCompilation(ur.options); + } + function j(be, Ge, ur) { + if (!!be.projectPendingBuild.size && !le(Ge)) { + if (be.currentInvalidatedProject) + return e.arrayIsEqualTo(be.currentInvalidatedProject.buildOrder, Ge) ? be.currentInvalidatedProject : void 0; + for (var yr = be.options, Ir = be.projectPendingBuild, wr = 0; wr < Ge.length; wr++) { + var Ur = Ge[wr], ii = J(be, Ur), mi = be.projectPendingBuild.get(ii); + if (mi !== void 0) { + ur && (ur = false, Ne(be, Ge)); + var pe = q(be, Ur, ii); + if (!pe) { + Br(be, ii), Ir.delete(ii); + continue; + } + mi === e.ConfigFileProgramReloadLevel.Full ? (Ee(be, Ur, ii, pe), He(be, ii, pe), rr(be, Ur, ii, pe), Ie(be, Ur, ii, pe), _e(be, Ur, ii, pe)) : mi === e.ConfigFileProgramReloadLevel.Partial && (pe.fileNames = e.getFileNamesFromConfigSpecs(pe.options.configFile.configFileSpecs, e.getDirectoryPath(Ur), pe.options, be.parseConfigFileHost), e.updateErrorForNoInputFiles(pe.fileNames, Ur, pe.options.configFile.configFileSpecs, pe.errors, e.canJsonReportNoInputFiles(pe.raw)), Ie(be, Ur, ii, pe), _e(be, Ur, ii, pe)); + var or = g(be, pe, ii); + if (lr(be, Ur, or), !yr.force) { + if (or.type === e.UpToDateStatusType.UpToDate) { + Ye(be, ii, e.getConfigFileParsingDiagnostics(pe)), Ir.delete(ii), yr.dry && er(be, e.Diagnostics.Project_0_is_up_to_date, Ur); + continue; + } + if (or.type === e.UpToDateStatusType.UpToDateWithUpstreamTypes) + return Ye(be, ii, e.getConfigFileParsingDiagnostics(pe)), P(be, Ur, ii, pe, Ge); + } + if (or.type === e.UpToDateStatusType.UpstreamBlocked) { + Ye(be, ii, e.getConfigFileParsingDiagnostics(pe)), Ir.delete(ii), yr.verbose && er(be, or.upstreamProjectBlocked ? e.Diagnostics.Skipping_build_of_project_0_because_its_dependency_1_was_not_built : e.Diagnostics.Skipping_build_of_project_0_because_its_dependency_1_has_errors, Ur, or.upstreamProjectName); + continue; + } + if (or.type === e.UpToDateStatusType.ContainerOnly) { + Ye(be, ii, e.getConfigFileParsingDiagnostics(pe)), Ir.delete(ii); + continue; + } + return Y(U(be, or, pe) ? V.Build : V.UpdateBundle, be, Ur, ii, wr, pe, Ge); + } + } + } + } + function H(be, Ge, ur) { + var yr = be.write; + yr && Ge.options.listEmittedFiles && yr("TSFILE: ".concat(ur)); + } + function I(be, Ge, ur) { + var yr = be.options, Ir = be.builderPrograms, wr = be.compilerHost; + if (!yr.force) { + var Ur = Ir.get(Ge); + return Ur || e.readBuilderProgram(ur.options, wr); + } + } + function l(be, Ge, ur) { + Ge ? (Ge && be.write && e.listFiles(Ge, be.write), be.host.afterProgramEmitAndDiagnostics && be.host.afterProgramEmitAndDiagnostics(Ge), Ge.releaseProgram()) : be.host.afterEmitBundle && be.host.afterEmitBundle(ur), be.projectCompilerOptions = be.baseCompilerOptions; + } + function d(be, Ge, ur, yr, Ir, wr, Ur) { + var ii = !(wr & w.SyntaxErrors) && ur && !e.outFile(ur.getCompilerOptions()); + return Ye(be, Ge, Ir), be.projectStatus.set(Ge, { type: e.UpToDateStatusType.Unbuildable, reason: "".concat(Ur, " errors") }), ii ? { buildResult: wr, step: k.EmitBuildInfo } : (l(be, ur, yr), { buildResult: wr, step: k.QueueReferencingProjects }); + } + function D(be, Ge, ur, yr) { + var Ir = e.getModifiedTime(be.host, Ge); + if (ur < Ir) + return { type: e.UpToDateStatusType.OutOfDateWithSelf, outOfDateOutputFileName: yr, newerInputFileName: Ge }; + } + function fe(be, Ge, ur) { + for (var yr = !!be.options.force, Ir = void 0, wr = a, Ur = be.host, ii = 0, mi = Ge.fileNames; ii < mi.length; ii++) { + var pe = mi[ii]; + if (!Ur.fileExists(pe)) + return { type: e.UpToDateStatusType.Unbuildable, reason: "".concat(pe, " does not exist") }; + if (!yr) { + var or = e.getModifiedTime(Ur, pe); + or > wr && (Ir = pe, wr = or); + } + } + if (!Ge.fileNames.length && !e.canJsonReportNoInputFiles(Ge.raw)) + return { type: e.UpToDateStatusType.ContainerOnly }; + var qr = e.getAllProjectOutputs(Ge, !Ur.useCaseSensitiveFileNames()), si = "(none)", Di = C, wi = "(none)", Xi = a, et, Gi = a, Wt = false; + if (!yr) + for (var Zt = 0, _r = qr; Zt < _r.length; Zt++) { + var pi = _r[Zt]; + if (!Ur.fileExists(pi)) { + et = pi; + break; + } + var ae = e.getModifiedTime(Ur, pi); + if (ae < Di && (Di = ae, si = pi), ae < wr) { + Wt = true; + break; + } + if (ae > Xi && (Xi = ae, wi = pi), e.isDeclarationFileName(pi)) { + var Xe = e.getModifiedTime(Ur, pi); + Gi = Q(Gi, Xe); + } + } + var Jr = false, ti = false, Ze; + if (Ge.projectReferences) { + be.projectStatus.set(ur, { type: e.UpToDateStatusType.ComputingUpstream }); + for (var Sr = 0, zr = Ge.projectReferences; Sr < zr.length; Sr++) { + var Wr = zr[Sr]; + ti = ti || !!Wr.prepend; + var Je = e.resolveProjectReferencePath(Wr), xe = J(be, Je), vr = g(be, q(be, Je, xe), xe); + if (!(vr.type === e.UpToDateStatusType.ComputingUpstream || vr.type === e.UpToDateStatusType.ContainerOnly)) { + if (vr.type === e.UpToDateStatusType.Unbuildable || vr.type === e.UpToDateStatusType.UpstreamBlocked) + return { type: e.UpToDateStatusType.UpstreamBlocked, upstreamProjectName: Wr.path, upstreamProjectBlocked: vr.type === e.UpToDateStatusType.UpstreamBlocked }; + if (vr.type !== e.UpToDateStatusType.UpToDate) + return { type: e.UpToDateStatusType.UpstreamOutOfDate, upstreamProjectName: Wr.path }; + if (!yr && !et) { + if (vr.newestInputFileTime && vr.newestInputFileTime <= Di) + continue; + if (vr.newestDeclarationFileContentChangedTime && vr.newestDeclarationFileContentChangedTime <= Di) { + Jr = true, Ze = Wr.path; + continue; + } + return e.Debug.assert(si !== void 0, "Should have an oldest output filename here"), { type: e.UpToDateStatusType.OutOfDateWithUpstream, outOfDateOutputFileName: si, newerProjectName: Wr.path }; + } + } + } + } + if (et !== void 0) + return { type: e.UpToDateStatusType.OutputMissing, missingOutputFileName: et }; + if (Wt) + return { type: e.UpToDateStatusType.OutOfDateWithSelf, outOfDateOutputFileName: si, newerInputFileName: Ir }; + var mr = D(be, Ge.options.configFilePath, Di, si); + if (mr) + return mr; + var Ar = e.forEach(Ge.options.configFile.extendedSourceFiles || e.emptyArray, function(Ue) { + return D(be, Ue, Di, si); + }); + if (Ar) + return Ar; + var Oe = e.forEach(be.lastCachedPackageJsonLookups.get(ur) || e.emptyArray, function(Ue) { + var fr = Ue[0]; + return D(be, fr, Di, si); + }); + if (Oe) + return Oe; + if (!yr && !be.buildInfoChecked.has(ur)) { + be.buildInfoChecked.set(ur, true); + var nr = e.getTsBuildInfoEmitOutputFilePath(Ge.options); + if (nr) { + var Mr = be.readFileWithCache(nr), Pe = Mr && e.getBuildInfo(Mr); + if (Pe && (Pe.bundle || Pe.program) && Pe.version !== e.version) + return { type: e.UpToDateStatusType.TsVersionOutputOfDate, version: Pe.version }; + } + } + return ti && Jr ? { type: e.UpToDateStatusType.OutOfDateWithPrepend, outOfDateOutputFileName: si, newerProjectName: Ze } : { type: Jr ? e.UpToDateStatusType.UpToDateWithUpstreamTypes : e.UpToDateStatusType.UpToDate, newestDeclarationFileContentChangedTime: Gi, newestInputFileTime: wr, newestOutputFileTime: Xi, newestInputFileName: Ir, newestOutputFileName: wi, oldestOutputFileName: si }; + } + function g(be, Ge, ur) { + if (Ge === void 0) + return { type: e.UpToDateStatusType.Unbuildable, reason: "File deleted mid-build" }; + var yr = be.projectStatus.get(ur); + if (yr !== void 0) + return yr; + var Ir = fe(be, Ge, ur); + return be.projectStatus.set(ur, Ir), Ir; + } + function ne(be, Ge, ur, yr, Ir) { + if (Ge.options.noEmit) + return ur; + var wr = be.host, Ur = e.getAllProjectOutputs(Ge, !wr.useCaseSensitiveFileNames()); + if (!Ir || Ur.length !== Ir.size) + for (var ii = !!be.options.verbose, mi = wr.now ? wr.now() : new Date(), pe = 0, or = Ur; pe < or.length; pe++) { + var qr = or[pe]; + Ir && Ir.has(se(be, qr)) || (ii && (ii = false, er(be, yr, Ge.options.configFilePath)), e.isDeclarationFileName(qr) && (ur = Q(ur, e.getModifiedTime(wr, qr))), wr.setModifiedTime(qr, mi)); + } + return ur; + } + function ue(be, Ge, ur) { + if (be.options.dry) + return er(be, e.Diagnostics.A_non_dry_build_would_update_timestamps_for_output_of_project_0, Ge.options.configFilePath); + var yr = ne(be, Ge, a, e.Diagnostics.Updating_output_timestamps_of_project_0); + be.projectStatus.set(ur, { type: e.UpToDateStatusType.UpToDate, newestDeclarationFileContentChangedTime: yr, oldestOutputFileName: e.getFirstProjectOutput(Ge, !be.host.useCaseSensitiveFileNames()) }); + } + function We(be, Ge, ur, yr, Ir, wr, Ur) { + if (!(Ur & w.AnyErrors) && !!Ir.options.composite) + for (var ii = yr + 1; ii < wr.length; ii++) { + var mi = wr[ii], pe = J(be, mi); + if (!be.projectPendingBuild.has(pe)) { + var or = q(be, mi, pe); + if (!(!or || !or.projectReferences)) + for (var qr = 0, si = or.projectReferences; qr < si.length; qr++) { + var Di = si[qr], wi = O(be, Di.path); + if (J(be, wi) === ur) { + var Xi = be.projectStatus.get(pe); + if (Xi) + switch (Xi.type) { + case e.UpToDateStatusType.UpToDate: + if (Ur & w.DeclarationOutputUnchanged) { + Di.prepend ? be.projectStatus.set(pe, { type: e.UpToDateStatusType.OutOfDateWithPrepend, outOfDateOutputFileName: Xi.oldestOutputFileName, newerProjectName: Ge }) : Xi.type = e.UpToDateStatusType.UpToDateWithUpstreamTypes; + break; + } + case e.UpToDateStatusType.UpToDateWithUpstreamTypes: + case e.UpToDateStatusType.OutOfDateWithPrepend: + Ur & w.DeclarationOutputUnchanged || be.projectStatus.set(pe, { type: e.UpToDateStatusType.OutOfDateWithUpstream, outOfDateOutputFileName: Xi.type === e.UpToDateStatusType.OutOfDateWithPrepend ? Xi.outOfDateOutputFileName : Xi.oldestOutputFileName, newerProjectName: Ge }); + break; + case e.UpToDateStatusType.UpstreamBlocked: + J(be, O(be, Xi.upstreamProjectName)) === ur && $(be, pe); + break; + } + A(be, pe, e.ConfigFileProgramReloadLevel.None); + break; + } + } + } + } + } + function Fe(be, Ge, ur, yr, Ir, wr) { + var Ur = F(be, Ge, wr); + if (!Ur) + return e.ExitStatus.InvalidProject_OutputsSkipped; + y(be, ur); + for (var ii = true, mi = 0; ; ) { + var pe = j(be, Ur, ii); + if (!pe) + break; + ii = false, pe.done(ur, yr, Ir == null ? void 0 : Ir(pe.project)), be.diagnostics.has(pe.projectPath) || mi++; + } + return X(be), Er(be, Ur), we(be, Ur), le(Ur) ? e.ExitStatus.ProjectReferenceCycle_OutputsSkipped : Ur.some(function(or) { + return be.diagnostics.has(J(be, or)); + }) ? mi ? e.ExitStatus.DiagnosticsPresent_OutputsGenerated : e.ExitStatus.DiagnosticsPresent_OutputsSkipped : e.ExitStatus.Success; + } + function Z(be, Ge, ur) { + var yr = F(be, Ge, ur); + if (!yr) + return e.ExitStatus.InvalidProject_OutputsSkipped; + if (le(yr)) + return Cr(be, yr.circularDiagnostics), e.ExitStatus.ProjectReferenceCycle_OutputsSkipped; + for (var Ir = be.options, wr = be.host, Ur = Ir.dry ? [] : void 0, ii = 0, mi = yr; ii < mi.length; ii++) { + var pe = mi[ii], or = J(be, pe), qr = q(be, pe, or); + if (qr === void 0) { + Br(be, or); + continue; + } + var si = e.getAllProjectOutputs(qr, !wr.useCaseSensitiveFileNames()); + if (!!si.length) + for (var Di = new e.Set(qr.fileNames.map(function(Gi) { + return se(be, Gi); + })), wi = 0, Xi = si; wi < Xi.length; wi++) { + var et = Xi[wi]; + Di.has(se(be, et)) || wr.fileExists(et) && (Ur ? Ur.push(et) : (wr.deleteFile(et), Be(be, or, e.ConfigFileProgramReloadLevel.None))); + } + } + return Ur && er(be, e.Diagnostics.A_non_dry_build_would_delete_the_following_files_Colon_0, Ur.map(function(Gi) { + return `\r + * `.concat(Gi); + }).join("")), e.ExitStatus.Success; + } + function Be(be, Ge, ur) { + be.host.getParsedCommandLine && ur === e.ConfigFileProgramReloadLevel.Partial && (ur = e.ConfigFileProgramReloadLevel.Full), ur === e.ConfigFileProgramReloadLevel.Full && (be.configFileCache.delete(Ge), be.buildOrder = void 0), be.needsSummary = true, $(be, Ge), A(be, Ge, ur), x(be); + } + function ge(be, Ge, ur) { + be.reportFileChangeDetected = true, Be(be, Ge, ur), Re(be); + } + function Re(be) { + var Ge = be.hostWithWatch; + !Ge.setTimeout || !Ge.clearTimeout || (be.timerToBuildInvalidatedProject && Ge.clearTimeout(be.timerToBuildInvalidatedProject), be.timerToBuildInvalidatedProject = Ge.setTimeout(ze, 250, be)); + } + function ze(be) { + be.timerToBuildInvalidatedProject = void 0, be.reportFileChangeDetected && (be.reportFileChangeDetected = false, be.projectErrorsReported.clear(), ir(be, e.Diagnostics.File_change_detected_Starting_incremental_compilation)); + var Ge = ee(be), ur = j(be, Ge, false); + if (ur && (ur.done(), be.projectPendingBuild.size)) { + be.watch && !be.timerToBuildInvalidatedProject && Re(be); + return; + } + X(be), Er(be, Ge); + } + function Ee(be, Ge, ur, yr) { + !be.watch || be.allWatchedConfigFiles.has(ur) || be.allWatchedConfigFiles.set(ur, be.watchFile(Ge, function() { + ge(be, ur, e.ConfigFileProgramReloadLevel.Full); + }, e.PollingInterval.High, yr == null ? void 0 : yr.watchOptions, e.WatchType.ConfigFile, Ge)); + } + function He(be, Ge, ur) { + e.updateSharedExtendedConfigFileWatcher(Ge, ur == null ? void 0 : ur.options, be.allWatchedExtendedConfigFiles, function(yr, Ir) { + return be.watchFile(yr, function() { + var wr; + return (wr = be.allWatchedExtendedConfigFiles.get(Ir)) === null || wr === void 0 ? void 0 : wr.projects.forEach(function(Ur) { + return ge(be, Ur, e.ConfigFileProgramReloadLevel.Full); + }); + }, e.PollingInterval.High, ur == null ? void 0 : ur.watchOptions, e.WatchType.ExtendedConfigFile); + }, function(yr) { + return se(be, yr); + }); + } + function rr(be, Ge, ur, yr) { + !be.watch || e.updateWatchingWildcardDirectories(E(be.allWatchedWildcardDirectories, ur), new e.Map(e.getEntries(yr.wildcardDirectories)), function(Ir, wr) { + return be.watchDirectory(Ir, function(Ur) { + var ii; + e.isIgnoredFileFromWildCardWatching({ watchedDirPath: se(be, Ir), fileOrDirectory: Ur, fileOrDirectoryPath: se(be, Ur), configFileName: Ge, currentDirectory: be.currentDirectory, options: yr.options, program: be.builderPrograms.get(ur) || ((ii = R(be, ur)) === null || ii === void 0 ? void 0 : ii.fileNames), useCaseSensitiveFileNames: be.parseConfigFileHost.useCaseSensitiveFileNames, writeLog: function(mi) { + return be.writeLog(mi); + }, toPath: function(mi) { + return se(be, mi); + } }) || ge(be, ur, e.ConfigFileProgramReloadLevel.Partial); + }, wr, yr == null ? void 0 : yr.watchOptions, e.WatchType.WildcardDirectory, Ge); + }); + } + function Ie(be, Ge, ur, yr) { + !be.watch || e.mutateMap(E(be.allWatchedInputFiles, ur), e.arrayToMap(yr.fileNames, function(Ir) { + return se(be, Ir); + }), { createNewValue: function(Ir, wr) { + return be.watchFile(wr, function() { + return ge(be, ur, e.ConfigFileProgramReloadLevel.None); + }, e.PollingInterval.Low, yr == null ? void 0 : yr.watchOptions, e.WatchType.SourceFile, Ge); + }, onDeleteValue: e.closeFileWatcher }); + } + function _e(be, Ge, ur, yr) { + !be.watch || !be.lastCachedPackageJsonLookups || e.mutateMap(E(be.allWatchedPackageJsonFiles, ur), new e.Map(be.lastCachedPackageJsonLookups.get(ur)), { createNewValue: function(Ir, wr) { + return be.watchFile(Ir, function() { + return ge(be, ur, e.ConfigFileProgramReloadLevel.None); + }, e.PollingInterval.High, yr == null ? void 0 : yr.watchOptions, e.WatchType.PackageJson, Ge); + }, onDeleteValue: e.closeFileWatcher }); + } + function we(be, Ge) { + if (!!be.watchAllProjectsPending) { + be.watchAllProjectsPending = false; + for (var ur = 0, yr = N(Ge); ur < yr.length; ur++) { + var Ir = yr[ur], wr = J(be, Ir), Ur = q(be, Ir, wr); + Ee(be, Ir, wr, Ur), He(be, wr, Ur), Ur && (rr(be, Ir, wr, Ur), Ie(be, Ir, wr, Ur), _e(be, Ir, wr, Ur)); + } + } + } + function de(be) { + e.clearMap(be.allWatchedConfigFiles, e.closeFileWatcher), e.clearMap(be.allWatchedExtendedConfigFiles, e.closeFileWatcherOf), e.clearMap(be.allWatchedWildcardDirectories, function(Ge) { + return e.clearMap(Ge, e.closeFileWatcherOf); + }), e.clearMap(be.allWatchedInputFiles, function(Ge) { + return e.clearMap(Ge, e.closeFileWatcher); + }), e.clearMap(be.allWatchedPackageJsonFiles, function(Ge) { + return e.clearMap(Ge, e.closeFileWatcher); + }); + } + function ye(be, Ge, ur, yr, Ir) { + var wr = b(be, Ge, ur, yr, Ir); + return { build: function(Ur, ii, mi, pe) { + return Fe(wr, Ur, ii, mi, pe); + }, clean: function(Ur) { + return Z(wr, Ur); + }, buildReferences: function(Ur, ii, mi, pe) { + return Fe(wr, Ur, ii, mi, pe, true); + }, cleanReferences: function(Ur) { + return Z(wr, Ur, true); + }, getNextInvalidatedProject: function(Ur) { + return y(wr, Ur), j(wr, ee(wr), false); + }, getBuildOrder: function() { + return ee(wr); + }, getUpToDateStatusOfProject: function(Ur) { + var ii = O(wr, Ur), mi = J(wr, ii); + return g(wr, q(wr, ii, mi), mi); + }, invalidateProject: function(Ur, ii) { + return Be(wr, Ur, ii || e.ConfigFileProgramReloadLevel.None); + }, buildNextInvalidatedProject: function() { + return ze(wr); + }, getAllParsedConfigs: function() { + return e.arrayFrom(e.mapDefinedIterator(wr.configFileCache.values(), function(Ur) { + return ie(Ur) ? Ur : void 0; + })); + }, close: function() { + return de(wr); + } }; + } + function Ae(be, Ge) { + return e.convertToRelativePath(Ge, be.currentDirectory, function(ur) { + return be.getCanonicalFileName(ur); + }); + } + function er(be, Ge) { + for (var ur = [], yr = 2; yr < arguments.length; yr++) + ur[yr - 2] = arguments[yr]; + be.host.reportSolutionBuilderStatus(e.createCompilerDiagnostic.apply(void 0, Ve([Ge], ur, false))); + } + function ir(be, Ge) { + for (var ur, yr, Ir = [], wr = 2; wr < arguments.length; wr++) + Ir[wr - 2] = arguments[wr]; + (yr = (ur = be.hostWithWatch).onWatchStatusChange) === null || yr === void 0 || yr.call(ur, e.createCompilerDiagnostic.apply(void 0, Ve([Ge], Ir, false)), be.host.getNewLine(), be.baseCompilerOptions); + } + function Cr(be, Ge) { + var ur = be.host; + Ge.forEach(function(yr) { + return ur.reportDiagnostic(yr); + }); + } + function Ye(be, Ge, ur) { + Cr(be, ur), be.projectErrorsReported.set(Ge, true), ur.length && be.diagnostics.set(Ge, ur); + } + function Br(be, Ge) { + Ye(be, Ge, [be.configFileCache.get(Ge)]); + } + function Er(be, Ge) { + if (!!be.needsSummary) { + be.needsSummary = false; + var ur = be.watch || !!be.host.reportErrorSummary, yr = be.diagnostics, Ir = 0, wr = []; + le(Ge) ? (Ne(be, Ge.buildOrder), Cr(be, Ge.circularDiagnostics), ur && (Ir += e.getErrorCountForSummary(Ge.circularDiagnostics)), ur && (wr = Ve(Ve([], wr, true), e.getFilesInErrorForSummary(Ge.circularDiagnostics), true))) : (Ge.forEach(function(Ur) { + var ii = J(be, Ur); + be.projectErrorsReported.has(ii) || Cr(be, yr.get(ii) || e.emptyArray); + }), ur && yr.forEach(function(Ur) { + return Ir += e.getErrorCountForSummary(Ur); + }), ur && yr.forEach(function(Ur) { + return Ve(Ve([], wr, true), e.getFilesInErrorForSummary(Ur), true); + })), be.watch ? ir(be, e.getWatchErrorSummaryDiagnosticMessage(Ir), Ir) : be.host.reportErrorSummary && be.host.reportErrorSummary(Ir, wr); + } + } + function Ne(be, Ge) { + be.options.verbose && er(be, e.Diagnostics.Projects_in_this_build_Colon_0, Ge.map(function(ur) { + return `\r + * ` + Ae(be, ur); + }).join("")); + } + function n(be, Ge, ur) { + if (be.options.force && (ur.type === e.UpToDateStatusType.UpToDate || ur.type === e.UpToDateStatusType.UpToDateWithUpstreamTypes)) + return er(be, e.Diagnostics.Project_0_is_being_forcibly_rebuilt, Ae(be, Ge)); + switch (ur.type) { + case e.UpToDateStatusType.OutOfDateWithSelf: + return er(be, e.Diagnostics.Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2, Ae(be, Ge), Ae(be, ur.outOfDateOutputFileName), Ae(be, ur.newerInputFileName)); + case e.UpToDateStatusType.OutOfDateWithUpstream: + return er(be, e.Diagnostics.Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2, Ae(be, Ge), Ae(be, ur.outOfDateOutputFileName), Ae(be, ur.newerProjectName)); + case e.UpToDateStatusType.OutputMissing: + return er(be, e.Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, Ae(be, Ge), Ae(be, ur.missingOutputFileName)); + case e.UpToDateStatusType.UpToDate: + if (ur.newestInputFileTime !== void 0) + return er(be, e.Diagnostics.Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2, Ae(be, Ge), Ae(be, ur.newestInputFileName || ""), Ae(be, ur.oldestOutputFileName || "")); + break; + case e.UpToDateStatusType.OutOfDateWithPrepend: + return er(be, e.Diagnostics.Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed, Ae(be, Ge), Ae(be, ur.newerProjectName)); + case e.UpToDateStatusType.UpToDateWithUpstreamTypes: + return er(be, e.Diagnostics.Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies, Ae(be, Ge)); + case e.UpToDateStatusType.UpstreamOutOfDate: + return er(be, e.Diagnostics.Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date, Ae(be, Ge), Ae(be, ur.upstreamProjectName)); + case e.UpToDateStatusType.UpstreamBlocked: + return er(be, ur.upstreamProjectBlocked ? e.Diagnostics.Project_0_can_t_be_built_because_its_dependency_1_was_not_built : e.Diagnostics.Project_0_can_t_be_built_because_its_dependency_1_has_errors, Ae(be, Ge), Ae(be, ur.upstreamProjectName)); + case e.UpToDateStatusType.Unbuildable: + return er(be, e.Diagnostics.Failed_to_parse_file_0_Colon_1, Ae(be, Ge), ur.reason); + case e.UpToDateStatusType.TsVersionOutputOfDate: + return er(be, e.Diagnostics.Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_current_version_2, Ae(be, Ge), ur.version, e.version); + case e.UpToDateStatusType.ContainerOnly: + case e.UpToDateStatusType.ComputingUpstream: + break; + default: + e.assertType(ur); + } + } + function lr(be, Ge, ur) { + be.options.verbose && n(be, Ge, ur); + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + C.ActionSet = "action::set", C.ActionInvalidate = "action::invalidate", C.ActionPackageInstalled = "action::packageInstalled", C.EventTypesRegistry = "event::typesRegistry", C.EventBeginInstallTypes = "event::beginInstallTypes", C.EventEndInstallTypes = "event::endInstallTypes", C.EventInitializationFailed = "event::initializationFailed"; + var w; + (function(le) { + le.GlobalCacheLocation = "--globalTypingsCacheLocation", le.LogFile = "--logFile", le.EnableTelemetry = "--enableTelemetry", le.TypingSafeListLocation = "--typingSafeListLocation", le.TypesMapLocation = "--typesMapLocation", le.NpmLocation = "--npmLocation", le.ValidateDefaultNpmLocation = "--validateDefaultNpmLocation"; + })(w = C.Arguments || (C.Arguments = {})); + function B(le) { + return e.sys.args.indexOf(le) >= 0; + } + C.hasArgument = B; + function E(le) { + var N = e.sys.args.indexOf(le); + return N >= 0 && N < e.sys.args.length - 1 ? e.sys.args[N + 1] : void 0; + } + C.findArgument = E; + function Q() { + var le = new Date(); + return "".concat(e.padLeft(le.getHours().toString(), 2, "0"), ":").concat(e.padLeft(le.getMinutes().toString(), 2, "0"), ":").concat(e.padLeft(le.getSeconds().toString(), 2, "0"), ".").concat(e.padLeft(le.getMilliseconds().toString(), 3, "0")); + } + C.nowString = Q; + })(a = e.server || (e.server = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(K, b) { + var se = new e.Version(e.getProperty(b, "ts".concat(e.versionMajorMinor)) || e.getProperty(b, "latest")); + return se.compareTo(K.version) <= 0; + } + C.isTypingUpToDate = w; + var B = ["assert", "assert/strict", "async_hooks", "buffer", "child_process", "cluster", "console", "constants", "crypto", "dgram", "diagnostics_channel", "dns", "dns/promises", "domain", "events", "fs", "fs/promises", "http", "https", "http2", "inspector", "module", "net", "os", "path", "perf_hooks", "process", "punycode", "querystring", "readline", "repl", "stream", "stream/promises", "string_decoder", "timers", "timers/promises", "tls", "trace_events", "tty", "url", "util", "util/types", "v8", "vm", "wasi", "worker_threads", "zlib"]; + C.prefixedNodeCoreModuleList = B.map(function(K) { + return "node:".concat(K); + }), C.nodeCoreModuleList = Ve(Ve([], B, true), C.prefixedNodeCoreModuleList, true), C.nodeCoreModules = new e.Set(C.nodeCoreModuleList); + function E(K) { + return C.nodeCoreModules.has(K) ? "node" : K; + } + C.nonRelativeModuleNameForTypingCache = E; + function Q(K, b) { + var se = e.readConfigFile(b, function(J) { + return K.readFile(J); + }); + return new e.Map(e.getEntries(se.config)); + } + C.loadSafeList = Q; + function le(K, b) { + var se = e.readConfigFile(b, function(J) { + return K.readFile(J); + }); + if (se.config) + return new e.Map(e.getEntries(se.config.simpleMap)); + } + C.loadTypesMap = le; + function N(K, b, se, J, ie, R, q, O, ve) { + if (!q || !q.enable) + return { cachedTypingPaths: [], newTypingNames: [], filesToWatch: [] }; + var ee = new e.Map(); + se = e.mapDefined(se, function(I) { + var l = e.normalizePath(I); + if (e.hasJSFileExtension(l)) + return l; + }); + var he = []; + q.include && U(q.include, "Explicitly included types"); + var F = q.exclude || [], x = new e.Set(se.map(e.getDirectoryPath)); + if (x.add(J), x.forEach(function(I) { + j(I, "bower.json", "bower_components", he), j(I, "package.json", "node_modules", he); + }), q.disableFilenameBasedTypeAcquisition || H(se), O) { + var X = e.deduplicate(O.map(E), e.equateStringsCaseSensitive, e.compareStringsCaseSensitive); + U(X, "Inferred typings from unresolved imports"); + } + R.forEach(function(I, l) { + var d = ve.get(l); + ee.has(l) && ee.get(l) === void 0 && d !== void 0 && w(I, d) && ee.set(l, I.typingLocation); + }); + for (var $ = 0, A = F; $ < A.length; $++) { + var y = A[$], V = ee.delete(y); + V && b && b("Typing for ".concat(y, " is in exclude list, will be ignored.")); + } + var L = [], P = []; + ee.forEach(function(I, l) { + I !== void 0 ? P.push(I) : L.push(l); + }); + var k = { cachedTypingPaths: P, newTypingNames: L, filesToWatch: he }; + return b && b("Result: ".concat(JSON.stringify(k))), k; + function Y(I) { + ee.has(I) || ee.set(I, void 0); + } + function U(I, l) { + b && b("".concat(l, ": ").concat(JSON.stringify(I))), e.forEach(I, Y); + } + function j(I, l, d, D) { + var fe = e.combinePaths(I, l), g, ne; + K.fileExists(fe) && (D.push(fe), g = e.readConfigFile(fe, function(Ie) { + return K.readFile(Ie); + }).config, ne = e.flatMap([g.dependencies, g.devDependencies, g.optionalDependencies, g.peerDependencies], e.getOwnKeys), U(ne, "Typing names in '".concat(fe, "' dependencies"))); + var ue = e.combinePaths(I, d); + if (D.push(ue), !!K.directoryExists(ue)) { + var We = [], Fe = ne ? ne.map(function(Ie) { + return e.combinePaths(ue, Ie, l); + }) : K.readDirectory(ue, [".json"], void 0, void 0, 3).filter(function(Ie) { + if (e.getBaseFileName(Ie) !== l) + return false; + var _e = e.getPathComponents(e.normalizePath(Ie)), we = _e[_e.length - 3][0] === "@"; + return we && _e[_e.length - 4].toLowerCase() === d || !we && _e[_e.length - 3].toLowerCase() === d; + }); + b && b("Searching for typing names in ".concat(ue, "; all files: ").concat(JSON.stringify(Fe))); + for (var Z = 0, Be = Fe; Z < Be.length; Z++) { + var ge = Be[Z], Re = e.normalizePath(ge), ze = e.readConfigFile(Re, function(Ie) { + return K.readFile(Ie); + }), Ee = ze.config; + if (!!Ee.name) { + var He = Ee.types || Ee.typings; + if (He) { + var rr = e.getNormalizedAbsolutePath(He, e.getDirectoryPath(Re)); + K.fileExists(rr) ? (b && b(" Package '".concat(Ee.name, "' provides its own types.")), ee.set(Ee.name, rr)) : b && b(" Package '".concat(Ee.name, "' provides its own types but they are missing.")); + } else + We.push(Ee.name); + } + } + U(We, " Found package names"); + } + } + function H(I) { + var l = e.mapDefined(I, function(D) { + if (!!e.hasJSFileExtension(D)) { + var fe = e.removeFileExtension(e.getBaseFileName(D.toLowerCase())), g = e.removeMinAndVersionNumbers(fe); + return ie.get(g); + } + }); + l.length && U(l, "Inferred typings from file names"); + var d = e.some(I, function(D) { + return e.fileExtensionIs(D, ".jsx"); + }); + d && (b && b("Inferred 'react' typings due to presence of '.jsx' extension"), Y("react")); + } + } + C.discoverTypings = N; + var p; + (function(K) { + K[K.Ok = 0] = "Ok", K[K.EmptyName = 1] = "EmptyName", K[K.NameTooLong = 2] = "NameTooLong", K[K.NameStartsWithDot = 3] = "NameStartsWithDot", K[K.NameStartsWithUnderscore = 4] = "NameStartsWithUnderscore", K[K.NameContainsNonURISafeCharacters = 5] = "NameContainsNonURISafeCharacters"; + })(p = C.NameValidationResult || (C.NameValidationResult = {})); + var m = 214; + function G(K) { + return oe(K, true); + } + C.validatePackageName = G; + function oe(K, b) { + if (!K) + return 1; + if (K.length > m) + return 2; + if (K.charCodeAt(0) === 46) + return 3; + if (K.charCodeAt(0) === 95) + return 4; + if (b) { + var se = /^@([^/]+)\/([^/]+)$/.exec(K); + if (se) { + var J = oe(se[1], false); + if (J !== 0) + return { name: se[1], isScopeName: true, result: J }; + var ie = oe(se[2], false); + return ie !== 0 ? { name: se[2], isScopeName: false, result: ie } : 0; + } + } + return encodeURIComponent(K) !== K ? 5 : 0; + } + function f(K, b) { + return typeof K == "object" ? T(b, K.result, K.name, K.isScopeName) : T(b, K, b, false); + } + C.renderPackageNameValidationFailure = f; + function T(K, b, se, J) { + var ie = J ? "Scope" : "Package"; + switch (b) { + case 1: + return "'".concat(K, "':: ").concat(ie, " name '").concat(se, "' cannot be empty"); + case 2: + return "'".concat(K, "':: ").concat(ie, " name '").concat(se, "' should be less than ").concat(m, " characters"); + case 3: + return "'".concat(K, "':: ").concat(ie, " name '").concat(se, "' cannot start with '.'"); + case 4: + return "'".concat(K, "':: ").concat(ie, " name '").concat(se, "' cannot start with '_'"); + case 5: + return "'".concat(K, "':: ").concat(ie, " name '").concat(se, "' contains non URI safe characters"); + case 0: + return e.Debug.fail(); + default: + throw e.Debug.assertNever(b); + } + } + })(a = e.JsTyping || (e.JsTyping = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(O) { + var ve = function() { + function he(F) { + this.text = F; + } + return he.prototype.getText = function(F, x) { + return F === 0 && x === this.text.length ? this.text : this.text.substring(F, x); + }, he.prototype.getLength = function() { + return this.text.length; + }, he.prototype.getChangeRange = function() { + }, he; + }(); + function ee(he) { + return new ve(he); + } + O.fromString = ee; + })(a = e.ScriptSnapshot || (e.ScriptSnapshot = {})); + var C; + (function(O) { + O[O.Dependencies = 1] = "Dependencies", O[O.DevDependencies = 2] = "DevDependencies", O[O.PeerDependencies = 4] = "PeerDependencies", O[O.OptionalDependencies = 8] = "OptionalDependencies", O[O.All = 15] = "All"; + })(C = e.PackageJsonDependencyGroup || (e.PackageJsonDependencyGroup = {})); + var w; + (function(O) { + O[O.Off = 0] = "Off", O[O.On = 1] = "On", O[O.Auto = 2] = "Auto"; + })(w = e.PackageJsonAutoImportPreference || (e.PackageJsonAutoImportPreference = {})); + var B; + (function(O) { + O[O.Semantic = 0] = "Semantic", O[O.PartialSemantic = 1] = "PartialSemantic", O[O.Syntactic = 2] = "Syntactic"; + })(B = e.LanguageServiceMode || (e.LanguageServiceMode = {})), e.emptyOptions = {}; + var E; + (function(O) { + O.Original = "original", O.TwentyTwenty = "2020"; + })(E = e.SemanticClassificationFormat || (e.SemanticClassificationFormat = {})); + var Q; + (function(O) { + O[O.Invoked = 1] = "Invoked", O[O.TriggerCharacter = 2] = "TriggerCharacter", O[O.TriggerForIncompleteCompletions = 3] = "TriggerForIncompleteCompletions"; + })(Q = e.CompletionTriggerKind || (e.CompletionTriggerKind = {})); + var le; + (function(O) { + O.Type = "Type", O.Parameter = "Parameter", O.Enum = "Enum"; + })(le = e.InlayHintKind || (e.InlayHintKind = {})); + var N; + (function(O) { + O.none = "none", O.definition = "definition", O.reference = "reference", O.writtenReference = "writtenReference"; + })(N = e.HighlightSpanKind || (e.HighlightSpanKind = {})); + var p; + (function(O) { + O[O.None = 0] = "None", O[O.Block = 1] = "Block", O[O.Smart = 2] = "Smart"; + })(p = e.IndentStyle || (e.IndentStyle = {})); + var m; + (function(O) { + O.Ignore = "ignore", O.Insert = "insert", O.Remove = "remove"; + })(m = e.SemicolonPreference || (e.SemicolonPreference = {})); + function G(O) { + return { indentSize: 4, tabSize: 4, newLineCharacter: O || ` +`, convertTabsToSpaces: true, indentStyle: p.Smart, insertSpaceAfterConstructor: false, insertSpaceAfterCommaDelimiter: true, insertSpaceAfterSemicolonInForStatements: true, insertSpaceBeforeAndAfterBinaryOperators: true, insertSpaceAfterKeywordsInControlFlowStatements: true, insertSpaceAfterFunctionKeywordForAnonymousFunctions: false, insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true, insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: false, insertSpaceBeforeFunctionParenthesis: false, placeOpenBraceOnNewLineForFunctions: false, placeOpenBraceOnNewLineForControlBlocks: false, semicolons: m.Ignore, trimTrailingWhitespace: true }; + } + e.getDefaultFormatCodeSettings = G, e.testFormatSettings = G(` +`); + var oe; + (function(O) { + O[O.aliasName = 0] = "aliasName", O[O.className = 1] = "className", O[O.enumName = 2] = "enumName", O[O.fieldName = 3] = "fieldName", O[O.interfaceName = 4] = "interfaceName", O[O.keyword = 5] = "keyword", O[O.lineBreak = 6] = "lineBreak", O[O.numericLiteral = 7] = "numericLiteral", O[O.stringLiteral = 8] = "stringLiteral", O[O.localName = 9] = "localName", O[O.methodName = 10] = "methodName", O[O.moduleName = 11] = "moduleName", O[O.operator = 12] = "operator", O[O.parameterName = 13] = "parameterName", O[O.propertyName = 14] = "propertyName", O[O.punctuation = 15] = "punctuation", O[O.space = 16] = "space", O[O.text = 17] = "text", O[O.typeParameterName = 18] = "typeParameterName", O[O.enumMemberName = 19] = "enumMemberName", O[O.functionName = 20] = "functionName", O[O.regularExpressionLiteral = 21] = "regularExpressionLiteral", O[O.link = 22] = "link", O[O.linkName = 23] = "linkName", O[O.linkText = 24] = "linkText"; + })(oe = e.SymbolDisplayPartKind || (e.SymbolDisplayPartKind = {})); + var f; + (function(O) { + O[O.None = 0] = "None", O[O.MayIncludeAutoImports = 1] = "MayIncludeAutoImports", O[O.IsImportStatementCompletion = 2] = "IsImportStatementCompletion", O[O.IsContinuation = 4] = "IsContinuation", O[O.ResolvedModuleSpecifiers = 8] = "ResolvedModuleSpecifiers", O[O.ResolvedModuleSpecifiersBeyondLimit = 16] = "ResolvedModuleSpecifiersBeyondLimit", O[O.MayIncludeMethodSnippets = 32] = "MayIncludeMethodSnippets"; + })(f = e.CompletionInfoFlags || (e.CompletionInfoFlags = {})); + var T; + (function(O) { + O.Comment = "comment", O.Region = "region", O.Code = "code", O.Imports = "imports"; + })(T = e.OutliningSpanKind || (e.OutliningSpanKind = {})); + var K; + (function(O) { + O[O.JavaScript = 0] = "JavaScript", O[O.SourceMap = 1] = "SourceMap", O[O.Declaration = 2] = "Declaration"; + })(K = e.OutputFileType || (e.OutputFileType = {})); + var b; + (function(O) { + O[O.None = 0] = "None", O[O.InMultiLineCommentTrivia = 1] = "InMultiLineCommentTrivia", O[O.InSingleQuoteStringLiteral = 2] = "InSingleQuoteStringLiteral", O[O.InDoubleQuoteStringLiteral = 3] = "InDoubleQuoteStringLiteral", O[O.InTemplateHeadOrNoSubstitutionTemplate = 4] = "InTemplateHeadOrNoSubstitutionTemplate", O[O.InTemplateMiddleOrTail = 5] = "InTemplateMiddleOrTail", O[O.InTemplateSubstitutionPosition = 6] = "InTemplateSubstitutionPosition"; + })(b = e.EndOfLineState || (e.EndOfLineState = {})); + var se; + (function(O) { + O[O.Punctuation = 0] = "Punctuation", O[O.Keyword = 1] = "Keyword", O[O.Operator = 2] = "Operator", O[O.Comment = 3] = "Comment", O[O.Whitespace = 4] = "Whitespace", O[O.Identifier = 5] = "Identifier", O[O.NumberLiteral = 6] = "NumberLiteral", O[O.BigIntLiteral = 7] = "BigIntLiteral", O[O.StringLiteral = 8] = "StringLiteral", O[O.RegExpLiteral = 9] = "RegExpLiteral"; + })(se = e.TokenClass || (e.TokenClass = {})); + var J; + (function(O) { + O.unknown = "", O.warning = "warning", O.keyword = "keyword", O.scriptElement = "script", O.moduleElement = "module", O.classElement = "class", O.localClassElement = "local class", O.interfaceElement = "interface", O.typeElement = "type", O.enumElement = "enum", O.enumMemberElement = "enum member", O.variableElement = "var", O.localVariableElement = "local var", O.functionElement = "function", O.localFunctionElement = "local function", O.memberFunctionElement = "method", O.memberGetAccessorElement = "getter", O.memberSetAccessorElement = "setter", O.memberVariableElement = "property", O.constructorImplementationElement = "constructor", O.callSignatureElement = "call", O.indexSignatureElement = "index", O.constructSignatureElement = "construct", O.parameterElement = "parameter", O.typeParameterElement = "type parameter", O.primitiveType = "primitive type", O.label = "label", O.alias = "alias", O.constElement = "const", O.letElement = "let", O.directory = "directory", O.externalModuleName = "external module name", O.jsxAttribute = "JSX attribute", O.string = "string", O.link = "link", O.linkName = "link name", O.linkText = "link text"; + })(J = e.ScriptElementKind || (e.ScriptElementKind = {})); + var ie; + (function(O) { + O.none = "", O.publicMemberModifier = "public", O.privateMemberModifier = "private", O.protectedMemberModifier = "protected", O.exportedModifier = "export", O.ambientModifier = "declare", O.staticModifier = "static", O.abstractModifier = "abstract", O.optionalModifier = "optional", O.deprecatedModifier = "deprecated", O.dtsModifier = ".d.ts", O.tsModifier = ".ts", O.tsxModifier = ".tsx", O.jsModifier = ".js", O.jsxModifier = ".jsx", O.jsonModifier = ".json", O.dmtsModifier = ".d.mts", O.mtsModifier = ".mts", O.mjsModifier = ".mjs", O.dctsModifier = ".d.cts", O.ctsModifier = ".cts", O.cjsModifier = ".cjs"; + })(ie = e.ScriptElementKindModifier || (e.ScriptElementKindModifier = {})); + var R; + (function(O) { + O.comment = "comment", O.identifier = "identifier", O.keyword = "keyword", O.numericLiteral = "number", O.bigintLiteral = "bigint", O.operator = "operator", O.stringLiteral = "string", O.whiteSpace = "whitespace", O.text = "text", O.punctuation = "punctuation", O.className = "class name", O.enumName = "enum name", O.interfaceName = "interface name", O.moduleName = "module name", O.typeParameterName = "type parameter name", O.typeAliasName = "type alias name", O.parameterName = "parameter name", O.docCommentTagName = "doc comment tag name", O.jsxOpenTagName = "jsx open tag name", O.jsxCloseTagName = "jsx close tag name", O.jsxSelfClosingTagName = "jsx self closing tag name", O.jsxAttribute = "jsx attribute", O.jsxText = "jsx text", O.jsxAttributeStringLiteralValue = "jsx attribute string literal value"; + })(R = e.ClassificationTypeNames || (e.ClassificationTypeNames = {})); + var q; + (function(O) { + O[O.comment = 1] = "comment", O[O.identifier = 2] = "identifier", O[O.keyword = 3] = "keyword", O[O.numericLiteral = 4] = "numericLiteral", O[O.operator = 5] = "operator", O[O.stringLiteral = 6] = "stringLiteral", O[O.regularExpressionLiteral = 7] = "regularExpressionLiteral", O[O.whiteSpace = 8] = "whiteSpace", O[O.text = 9] = "text", O[O.punctuation = 10] = "punctuation", O[O.className = 11] = "className", O[O.enumName = 12] = "enumName", O[O.interfaceName = 13] = "interfaceName", O[O.moduleName = 14] = "moduleName", O[O.typeParameterName = 15] = "typeParameterName", O[O.typeAliasName = 16] = "typeAliasName", O[O.parameterName = 17] = "parameterName", O[O.docCommentTagName = 18] = "docCommentTagName", O[O.jsxOpenTagName = 19] = "jsxOpenTagName", O[O.jsxCloseTagName = 20] = "jsxCloseTagName", O[O.jsxSelfClosingTagName = 21] = "jsxSelfClosingTagName", O[O.jsxAttribute = 22] = "jsxAttribute", O[O.jsxText = 23] = "jsxText", O[O.jsxAttributeStringLiteralValue = 24] = "jsxAttributeStringLiteralValue", O[O.bigintLiteral = 25] = "bigintLiteral"; + })(q = e.ClassificationType || (e.ClassificationType = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + e.scanner = e.createScanner(99, true); + var a; + (function(Se) { + Se[Se.None = 0] = "None", Se[Se.Value = 1] = "Value", Se[Se.Type = 2] = "Type", Se[Se.Namespace = 4] = "Namespace", Se[Se.All = 7] = "All"; + })(a = e.SemanticMeaning || (e.SemanticMeaning = {})); + function C(Se) { + switch (Se.kind) { + case 254: + return e.isInJSFile(Se) && e.getJSDocEnumTag(Se) ? 7 : 1; + case 164: + case 203: + case 167: + case 166: + case 296: + case 297: + case 169: + case 168: + case 171: + case 172: + case 173: + case 256: + case 213: + case 214: + case 292: + case 285: + return 1; + case 163: + case 258: + case 259: + case 182: + return 2; + case 345: + return Se.name === void 0 ? 3 : 2; + case 299: + case 257: + return 3; + case 261: + return e.isAmbientModule(Se) || e.getModuleInstanceState(Se) === 1 ? 5 : 4; + case 260: + case 269: + case 270: + case 265: + case 266: + case 271: + case 272: + return 7; + case 305: + return 5; + } + return 7; + } + e.getMeaningFromDeclaration = C; + function w(Se) { + Se = Br(Se); + var hr = Se.parent; + return Se.kind === 305 ? 1 : e.isExportAssignment(hr) || e.isExportSpecifier(hr) || e.isExternalModuleReference(hr) || e.isImportSpecifier(hr) || e.isImportClause(hr) || e.isImportEqualsDeclaration(hr) && Se === hr.name ? 7 : E(Se) ? B(Se) : e.isDeclarationName(Se) ? C(hr) : e.isEntityName(Se) && e.findAncestor(Se, e.or(e.isJSDocNameReference, e.isJSDocLinkLike, e.isJSDocMemberName)) ? 7 : p(Se) ? 2 : Q(Se) ? 4 : e.isTypeParameterDeclaration(hr) ? (e.Debug.assert(e.isJSDocTemplateTag(hr.parent)), 2) : e.isLiteralTypeNode(hr) ? 3 : 1; + } + e.getMeaningFromLocation = w; + function B(Se) { + var hr = Se.kind === 161 ? Se : e.isQualifiedName(Se.parent) && Se.parent.right === Se ? Se.parent : void 0; + return hr && hr.parent.kind === 265 ? 7 : 4; + } + function E(Se) { + for (; Se.parent.kind === 161; ) + Se = Se.parent; + return e.isInternalModuleImportEqualsDeclaration(Se.parent) && Se.parent.moduleReference === Se; + } + e.isInRightSideOfInternalImportEqualsDeclaration = E; + function Q(Se) { + return le(Se) || N(Se); + } + function le(Se) { + var hr = Se, Or = true; + if (hr.parent.kind === 161) { + for (; hr.parent && hr.parent.kind === 161; ) + hr = hr.parent; + Or = hr.right === Se; + } + return hr.parent.kind === 178 && !Or; + } + function N(Se) { + var hr = Se, Or = true; + if (hr.parent.kind === 206) { + for (; hr.parent && hr.parent.kind === 206; ) + hr = hr.parent; + Or = hr.name === Se; + } + if (!Or && hr.parent.kind === 228 && hr.parent.parent.kind === 291) { + var ki = hr.parent.parent.parent; + return ki.kind === 257 && hr.parent.parent.token === 117 || ki.kind === 258 && hr.parent.parent.token === 94; + } + return false; + } + function p(Se) { + switch (e.isRightSideOfQualifiedNameOrPropertyAccess(Se) && (Se = Se.parent), Se.kind) { + case 108: + return !e.isExpressionNode(Se); + case 192: + return true; + } + switch (Se.parent.kind) { + case 178: + return true; + case 200: + return !Se.parent.isTypeOf; + case 228: + return e.isPartOfTypeNode(Se.parent); + } + return false; + } + function m(Se, hr, Or) { + return hr === void 0 && (hr = false), Or === void 0 && (Or = false), ie(Se, e.isCallExpression, b, hr, Or); + } + e.isCallExpressionTarget = m; + function G(Se, hr, Or) { + return hr === void 0 && (hr = false), Or === void 0 && (Or = false), ie(Se, e.isNewExpression, b, hr, Or); + } + e.isNewExpressionTarget = G; + function oe(Se, hr, Or) { + return hr === void 0 && (hr = false), Or === void 0 && (Or = false), ie(Se, e.isCallOrNewExpression, b, hr, Or); + } + e.isCallOrNewExpressionTarget = oe; + function f(Se, hr, Or) { + return hr === void 0 && (hr = false), Or === void 0 && (Or = false), ie(Se, e.isTaggedTemplateExpression, se, hr, Or); + } + e.isTaggedTemplateTag = f; + function T(Se, hr, Or) { + return hr === void 0 && (hr = false), Or === void 0 && (Or = false), ie(Se, e.isDecorator, b, hr, Or); + } + e.isDecoratorTarget = T; + function K(Se, hr, Or) { + return hr === void 0 && (hr = false), Or === void 0 && (Or = false), ie(Se, e.isJsxOpeningLikeElement, J, hr, Or); + } + e.isJsxOpeningLikeElementTagName = K; + function b(Se) { + return Se.expression; + } + function se(Se) { + return Se.tag; + } + function J(Se) { + return Se.tagName; + } + function ie(Se, hr, Or, ki, dt) { + var la = ki ? q(Se) : R(Se); + return dt && (la = e.skipOuterExpressions(la)), !!la && !!la.parent && hr(la.parent) && Or(la.parent) === la; + } + function R(Se) { + return $(Se) ? Se.parent : Se; + } + e.climbPastPropertyAccess = R; + function q(Se) { + return $(Se) || A(Se) ? Se.parent : Se; + } + e.climbPastPropertyOrElementAccess = q; + function O(Se, hr) { + for (; Se; ) { + if (Se.kind === 250 && Se.label.escapedText === hr) + return Se.label; + Se = Se.parent; + } + } + e.getTargetLabel = O; + function ve(Se, hr) { + return e.isPropertyAccessExpression(Se.expression) ? Se.expression.name.text === hr : false; + } + e.hasPropertyAccessExpressionWithName = ve; + function ee(Se) { + var hr; + return e.isIdentifier(Se) && ((hr = e.tryCast(Se.parent, e.isBreakOrContinueStatement)) === null || hr === void 0 ? void 0 : hr.label) === Se; + } + e.isJumpStatementTarget = ee; + function he(Se) { + var hr; + return e.isIdentifier(Se) && ((hr = e.tryCast(Se.parent, e.isLabeledStatement)) === null || hr === void 0 ? void 0 : hr.label) === Se; + } + e.isLabelOfLabeledStatement = he; + function F(Se) { + return he(Se) || ee(Se); + } + e.isLabelName = F; + function x(Se) { + var hr; + return ((hr = e.tryCast(Se.parent, e.isJSDocTag)) === null || hr === void 0 ? void 0 : hr.tagName) === Se; + } + e.isTagName = x; + function X(Se) { + var hr; + return ((hr = e.tryCast(Se.parent, e.isQualifiedName)) === null || hr === void 0 ? void 0 : hr.right) === Se; + } + e.isRightSideOfQualifiedName = X; + function $(Se) { + var hr; + return ((hr = e.tryCast(Se.parent, e.isPropertyAccessExpression)) === null || hr === void 0 ? void 0 : hr.name) === Se; + } + e.isRightSideOfPropertyAccess = $; + function A(Se) { + var hr; + return ((hr = e.tryCast(Se.parent, e.isElementAccessExpression)) === null || hr === void 0 ? void 0 : hr.argumentExpression) === Se; + } + e.isArgumentExpressionOfElementAccess = A; + function y(Se) { + var hr; + return ((hr = e.tryCast(Se.parent, e.isModuleDeclaration)) === null || hr === void 0 ? void 0 : hr.name) === Se; + } + e.isNameOfModuleDeclaration = y; + function V(Se) { + var hr; + return e.isIdentifier(Se) && ((hr = e.tryCast(Se.parent, e.isFunctionLike)) === null || hr === void 0 ? void 0 : hr.name) === Se; + } + e.isNameOfFunctionDeclaration = V; + function L(Se) { + switch (Se.parent.kind) { + case 167: + case 166: + case 296: + case 299: + case 169: + case 168: + case 172: + case 173: + case 261: + return e.getNameOfDeclaration(Se.parent) === Se; + case 207: + return Se.parent.argumentExpression === Se; + case 162: + return true; + case 196: + return Se.parent.parent.kind === 194; + default: + return false; + } + } + e.isLiteralNameOfPropertyDeclarationOrIndexAccess = L; + function P(Se) { + return e.isExternalModuleImportEqualsDeclaration(Se.parent.parent) && e.getExternalModuleImportEqualsDeclarationExpression(Se.parent.parent) === Se; + } + e.isExpressionOfExternalModuleImportEqualsDeclaration = P; + function k(Se) { + for (e.isJSDocTypeAlias(Se) && (Se = Se.parent.parent); ; ) { + if (Se = Se.parent, !Se) + return; + switch (Se.kind) { + case 305: + case 169: + case 168: + case 256: + case 213: + case 172: + case 173: + case 257: + case 258: + case 260: + case 261: + return Se; + } + } + } + e.getContainerNode = k; + function Y(Se) { + switch (Se.kind) { + case 305: + return e.isExternalModule(Se) ? "module" : "script"; + case 261: + return "module"; + case 257: + case 226: + return "class"; + case 258: + return "interface"; + case 259: + case 338: + case 345: + return "type"; + case 260: + return "enum"; + case 254: + return wa(Se); + case 203: + return wa(e.getRootDeclaration(Se)); + case 214: + case 256: + case 213: + return "function"; + case 172: + return "getter"; + case 173: + return "setter"; + case 169: + case 168: + return "method"; + case 296: + var hr = Se.initializer; + return e.isFunctionLike(hr) ? "method" : "property"; + case 167: + case 166: + case 297: + case 298: + return "property"; + case 176: + return "index"; + case 175: + return "construct"; + case 174: + return "call"; + case 171: + case 170: + return "constructor"; + case 163: + return "type parameter"; + case 299: + return "enum member"; + case 164: + return e.hasSyntacticModifier(Se, 16476) ? "property" : "parameter"; + case 265: + case 270: + case 275: + case 268: + case 274: + return "alias"; + case 221: + var Or = e.getAssignmentDeclarationKind(Se), ki = Se.right; + switch (Or) { + case 7: + case 8: + case 9: + case 0: + return ""; + case 1: + case 2: + var dt = Y(ki); + return dt === "" ? "const" : dt; + case 3: + return e.isFunctionExpression(ki) ? "method" : "property"; + case 4: + return "property"; + case 5: + return e.isFunctionExpression(ki) ? "method" : "property"; + case 6: + return "local class"; + default: + return e.assertType(Or), ""; + } + case 79: + return e.isImportClause(Se.parent) ? "alias" : ""; + case 271: + var la = Y(Se.expression); + return la === "" ? "const" : la; + default: + return ""; + } + function wa(On) { + return e.isVarConst(On) ? "const" : e.isLet(On) ? "let" : "var"; + } + } + e.getNodeKind = Y; + function U(Se) { + switch (Se.kind) { + case 108: + return true; + case 79: + return e.identifierIsThisKeyword(Se) && Se.parent.kind === 164; + default: + return false; + } + } + e.isThis = U; + var j = /^\/\/\/\s*= Or.end; + } + e.startEndContainsRange = fe; + function g(Se, hr, Or) { + return Se.pos <= hr && Se.end >= Or; + } + e.rangeContainsStartEnd = g; + function ne(Se, hr, Or) { + return We(Se.pos, Se.end, hr, Or); + } + e.rangeOverlapsWithStartEnd = ne; + function ue(Se, hr, Or, ki) { + return We(Se.getStart(hr), Se.end, Or, ki); + } + e.nodeOverlapsWithStartEnd = ue; + function We(Se, hr, Or, ki) { + var dt = Math.max(Se, Or), la = Math.min(hr, ki); + return dt < la; + } + e.startEndOverlapsWithStartEnd = We; + function Fe(Se, hr, Or) { + return e.Debug.assert(Se.pos <= hr), hr < Se.end || !Z(Se, Or); + } + e.positionBelongsToNode = Fe; + function Z(Se, hr) { + if (Se === void 0 || e.nodeIsMissing(Se)) + return false; + switch (Se.kind) { + case 257: + case 258: + case 260: + case 205: + case 201: + case 182: + case 235: + case 262: + case 263: + case 269: + case 273: + return Be(Se, 19, hr); + case 292: + return Z(Se.block, hr); + case 209: + if (!Se.arguments) + return true; + case 208: + case 212: + case 191: + return Be(Se, 21, hr); + case 179: + case 180: + return Z(Se.type, hr); + case 171: + case 172: + case 173: + case 256: + case 213: + case 169: + case 168: + case 175: + case 174: + case 214: + return Se.body ? Z(Se.body, hr) : Se.type ? Z(Se.type, hr) : Re(Se, 21, hr); + case 261: + return !!Se.body && Z(Se.body, hr); + case 239: + return Se.elseStatement ? Z(Se.elseStatement, hr) : Z(Se.thenStatement, hr); + case 238: + return Z(Se.expression, hr) || Re(Se, 26, hr); + case 204: + case 202: + case 207: + case 162: + case 184: + return Be(Se, 23, hr); + case 176: + return Se.type ? Z(Se.type, hr) : Re(Se, 23, hr); + case 289: + case 290: + return false; + case 242: + case 243: + case 244: + case 241: + return Z(Se.statement, hr); + case 240: + return Re(Se, 115, hr) ? Be(Se, 21, hr) : Z(Se.statement, hr); + case 181: + return Z(Se.exprName, hr); + case 216: + case 215: + case 217: + case 224: + case 225: + var Or = Se; + return Z(Or.expression, hr); + case 210: + return Z(Se.template, hr); + case 223: + var ki = e.lastOrUndefined(Se.templateSpans); + return Z(ki, hr); + case 233: + return e.nodeIsPresent(Se.literal); + case 272: + case 266: + return e.nodeIsPresent(Se.moduleSpecifier); + case 219: + return Z(Se.operand, hr); + case 221: + return Z(Se.right, hr); + case 222: + return Z(Se.whenFalse, hr); + default: + return true; + } + } + function Be(Se, hr, Or) { + var ki = Se.getChildren(Or); + if (ki.length) { + var dt = e.last(ki); + if (dt.kind === hr) + return true; + if (dt.kind === 26 && ki.length !== 1) + return ki[ki.length - 2].kind === hr; + } + return false; + } + function ge(Se) { + var hr = Ee(Se); + if (!!hr) { + var Or = hr.getChildren(), ki = e.indexOfNode(Or, Se); + return { listItemIndex: ki, list: hr }; + } + } + e.findListItemInfo = ge; + function Re(Se, hr, Or) { + return !!ze(Se, hr, Or); + } + e.hasChildOfKind = Re; + function ze(Se, hr, Or) { + return e.find(Se.getChildren(Or), function(ki) { + return ki.kind === hr; + }); + } + e.findChildOfKind = ze; + function Ee(Se) { + var hr = e.find(Se.parent.getChildren(), function(Or) { + return e.isSyntaxList(Or) && I(Or, Se); + }); + return e.Debug.assert(!hr || e.contains(hr.getChildren(), Se)), hr; + } + e.findContainingList = Ee; + function He(Se) { + return Se.kind === 88; + } + function rr(Se) { + return Se.kind === 84; + } + function Ie(Se) { + return Se.kind === 98; + } + function _e(Se) { + if (e.isNamedDeclaration(Se)) + return Se.name; + if (e.isClassDeclaration(Se)) { + var hr = Se.modifiers && e.find(Se.modifiers, He); + if (hr) + return hr; + } + if (e.isClassExpression(Se)) { + var Or = e.find(Se.getChildren(), rr); + if (Or) + return Or; + } + } + function we(Se) { + if (e.isNamedDeclaration(Se)) + return Se.name; + if (e.isFunctionDeclaration(Se)) { + var hr = e.find(Se.modifiers, He); + if (hr) + return hr; + } + if (e.isFunctionExpression(Se)) { + var Or = e.find(Se.getChildren(), Ie); + if (Or) + return Or; + } + } + function de(Se) { + var hr; + return e.findAncestor(Se, function(Or) { + return e.isTypeNode(Or) && (hr = Or), !e.isQualifiedName(Or.parent) && !e.isTypeNode(Or.parent) && !e.isTypeElement(Or.parent); + }), hr; + } + function ye(Se, hr) { + var Or = yi(Se, hr); + if (Or) + return Or; + var ki = de(Se); + return ki && hr.getTypeAtLocation(ki); + } + e.getContextualTypeFromParentOrAncestorTypeNode = ye; + function Ae(Se, hr) { + if (!hr) + switch (Se.kind) { + case 257: + case 226: + return _e(Se); + case 256: + case 213: + return we(Se); + } + if (e.isNamedDeclaration(Se)) + return Se.name; + } + function er(Se, hr) { + if (Se.importClause) { + if (Se.importClause.name && Se.importClause.namedBindings) + return; + if (Se.importClause.name) + return Se.importClause.name; + if (Se.importClause.namedBindings) { + if (e.isNamedImports(Se.importClause.namedBindings)) { + var Or = e.singleOrUndefined(Se.importClause.namedBindings.elements); + return Or ? Or.name : void 0; + } else if (e.isNamespaceImport(Se.importClause.namedBindings)) + return Se.importClause.namedBindings.name; + } + } + if (!hr) + return Se.moduleSpecifier; + } + function ir(Se, hr) { + if (Se.exportClause) { + if (e.isNamedExports(Se.exportClause)) { + var Or = e.singleOrUndefined(Se.exportClause.elements); + return Or ? Se.exportClause.elements[0].name : void 0; + } else if (e.isNamespaceExport(Se.exportClause)) + return Se.exportClause.name; + } + if (!hr) + return Se.moduleSpecifier; + } + function Cr(Se) { + if (Se.types.length === 1) + return Se.types[0].expression; + } + function Ye(Se, hr) { + var Or = Se.parent; + if (e.isModifier(Se) && (hr || Se.kind !== 88) ? e.contains(Or.modifiers, Se) : Se.kind === 84 ? e.isClassDeclaration(Or) || e.isClassExpression(Se) : Se.kind === 98 ? e.isFunctionDeclaration(Or) || e.isFunctionExpression(Se) : Se.kind === 118 ? e.isInterfaceDeclaration(Or) : Se.kind === 92 ? e.isEnumDeclaration(Or) : Se.kind === 152 ? e.isTypeAliasDeclaration(Or) : Se.kind === 142 || Se.kind === 141 ? e.isModuleDeclaration(Or) : Se.kind === 100 ? e.isImportEqualsDeclaration(Or) : Se.kind === 136 ? e.isGetAccessorDeclaration(Or) : Se.kind === 149 && e.isSetAccessorDeclaration(Or)) { + var ki = Ae(Or, hr); + if (ki) + return ki; + } + if ((Se.kind === 113 || Se.kind === 85 || Se.kind === 119) && e.isVariableDeclarationList(Or) && Or.declarations.length === 1) { + var dt = Or.declarations[0]; + if (e.isIdentifier(dt.name)) + return dt.name; + } + if (Se.kind === 152) { + if (e.isImportClause(Or) && Or.isTypeOnly) { + var ki = er(Or.parent, hr); + if (ki) + return ki; + } + if (e.isExportDeclaration(Or) && Or.isTypeOnly) { + var ki = ir(Or, hr); + if (ki) + return ki; + } + } + if (Se.kind === 127) { + if (e.isImportSpecifier(Or) && Or.propertyName || e.isExportSpecifier(Or) && Or.propertyName || e.isNamespaceImport(Or) || e.isNamespaceExport(Or)) + return Or.name; + if (e.isExportDeclaration(Or) && Or.exportClause && e.isNamespaceExport(Or.exportClause)) + return Or.exportClause.name; + } + if (Se.kind === 100 && e.isImportDeclaration(Or)) { + var ki = er(Or, hr); + if (ki) + return ki; + } + if (Se.kind === 93) { + if (e.isExportDeclaration(Or)) { + var ki = ir(Or, hr); + if (ki) + return ki; + } + if (e.isExportAssignment(Or)) + return e.skipOuterExpressions(Or.expression); + } + if (Se.kind === 146 && e.isExternalModuleReference(Or)) + return Or.expression; + if (Se.kind === 156 && (e.isImportDeclaration(Or) || e.isExportDeclaration(Or)) && Or.moduleSpecifier) + return Or.moduleSpecifier; + if ((Se.kind === 94 || Se.kind === 117) && e.isHeritageClause(Or) && Or.token === Se.kind) { + var ki = Cr(Or); + if (ki) + return ki; + } + if (Se.kind === 94) { + if (e.isTypeParameterDeclaration(Or) && Or.constraint && e.isTypeReferenceNode(Or.constraint)) + return Or.constraint.typeName; + if (e.isConditionalTypeNode(Or) && e.isTypeReferenceNode(Or.extendsType)) + return Or.extendsType.typeName; + } + if (Se.kind === 137 && e.isInferTypeNode(Or)) + return Or.typeParameter.name; + if (Se.kind === 101 && e.isTypeParameterDeclaration(Or) && e.isMappedTypeNode(Or.parent)) + return Or.name; + if (Se.kind === 140 && e.isTypeOperatorNode(Or) && Or.operator === 140 && e.isTypeReferenceNode(Or.type)) + return Or.type.typeName; + if (Se.kind === 145 && e.isTypeOperatorNode(Or) && Or.operator === 145 && e.isArrayTypeNode(Or.type) && e.isTypeReferenceNode(Or.type.elementType)) + return Or.type.elementType.typeName; + if (!hr) { + if ((Se.kind === 103 && e.isNewExpression(Or) || Se.kind === 114 && e.isVoidExpression(Or) || Se.kind === 112 && e.isTypeOfExpression(Or) || Se.kind === 132 && e.isAwaitExpression(Or) || Se.kind === 125 && e.isYieldExpression(Or) || Se.kind === 89 && e.isDeleteExpression(Or)) && Or.expression) + return e.skipOuterExpressions(Or.expression); + if ((Se.kind === 101 || Se.kind === 102) && e.isBinaryExpression(Or) && Or.operatorToken === Se) + return e.skipOuterExpressions(Or.right); + if (Se.kind === 127 && e.isAsExpression(Or) && e.isTypeReferenceNode(Or.type)) + return Or.type.typeName; + if (Se.kind === 101 && e.isForInStatement(Or) || Se.kind === 160 && e.isForOfStatement(Or)) + return e.skipOuterExpressions(Or.expression); + } + return Se; + } + function Br(Se) { + return Ye(Se, false); + } + e.getAdjustedReferenceLocation = Br; + function Er(Se) { + return Ye(Se, true); + } + e.getAdjustedRenameLocation = Er; + function Ne(Se, hr) { + return n(Se, hr, function(Or) { + return e.isPropertyNameLiteral(Or) || e.isKeyword(Or.kind) || e.isPrivateIdentifier(Or); + }); + } + e.getTouchingPropertyName = Ne; + function n(Se, hr, Or) { + return be(Se, hr, false, Or, false); + } + e.getTouchingToken = n; + function lr(Se, hr) { + return be(Se, hr, true, void 0, false); + } + e.getTokenAtPosition = lr; + function be(Se, hr, Or, ki, dt) { + var la = Se, wa, On = function() { + var po = la.getChildren(Se), Gn = e.binarySearchKey(po, hr, function($n, Ho) { + return Ho; + }, function($n, Ho) { + var Zo = Or ? po[$n].getFullStart() : po[$n].getStart(Se, true); + return Zo > hr ? 1 : jo(po[$n]) ? po[$n - 1] && jo(po[$n - 1]) ? 1 : 0 : ki && Zo === hr && po[$n - 1] && po[$n - 1].getEnd() === hr && jo(po[$n - 1]) ? 1 : -1; + }); + return wa ? { value: wa } : Gn >= 0 && po[Gn] ? (la = po[Gn], "continue-outer") : { value: la }; + }; + e: + for (; ; ) { + var No = On(); + if (typeof No == "object") + return No.value; + switch (No) { + case "continue-outer": + continue e; + } + } + function jo(po) { + var Gn = Or ? po.getFullStart() : po.getStart(Se, true); + if (Gn > hr) + return false; + var $n = po.getEnd(); + if (hr < $n || hr === $n && (po.kind === 1 || dt)) + return true; + if (ki && $n === hr) { + var Ho = Ir(hr, Se, po); + if (Ho && ki(Ho)) + return wa = Ho, true; + } + return false; + } + } + function Ge(Se, hr) { + for (var Or = lr(Se, hr); or(Or); ) { + var ki = yr(Or, Or.parent, Se); + if (!ki) + return; + Or = ki; + } + return Or; + } + e.findFirstNonJsxWhitespaceToken = Ge; + function ur(Se, hr) { + var Or = lr(Se, hr); + return e.isToken(Or) && hr > Or.getStart(Se) && hr < Or.getEnd() ? Or : Ir(hr, Se); + } + e.findTokenOnLeftOfPosition = ur; + function yr(Se, hr, Or) { + return ki(hr); + function ki(dt) { + return e.isToken(dt) && dt.pos === Se.end ? dt : e.firstDefined(dt.getChildren(Or), function(la) { + var wa = la.pos <= Se.pos && la.end > Se.end || la.pos === Se.end; + return wa && pi(la, Or) ? ki(la) : void 0; + }); + } + } + e.findNextToken = yr; + function Ir(Se, hr, Or, ki) { + var dt = la(Or || hr); + return e.Debug.assert(!(dt && or(dt))), dt; + function la(wa) { + if (wr(wa) && wa.kind !== 1) + return wa; + var On = wa.getChildren(hr), No = e.binarySearchKey(On, Se, function(Zo, Es) { + return Es; + }, function(Zo, Es) { + return Se < On[Zo].end ? !On[Zo - 1] || Se >= On[Zo - 1].end ? 0 : 1 : -1; + }); + if (No >= 0 && On[No]) { + var jo = On[No]; + if (Se < jo.end) { + var po = jo.getStart(hr, !ki), Gn = po >= Se || !pi(jo, hr) || or(jo); + if (Gn) { + var $n = ii(On, No, hr, wa.kind); + return $n && Ur($n, hr); + } else + return la(jo); + } + } + e.Debug.assert(Or !== void 0 || wa.kind === 305 || wa.kind === 1 || e.isJSDocCommentContainingNode(wa)); + var Ho = ii(On, On.length, hr, wa.kind); + return Ho && Ur(Ho, hr); + } + } + e.findPrecedingToken = Ir; + function wr(Se) { + return e.isToken(Se) && !or(Se); + } + function Ur(Se, hr) { + if (wr(Se)) + return Se; + var Or = Se.getChildren(hr); + if (Or.length === 0) + return Se; + var ki = ii(Or, Or.length, hr, Se.kind); + return ki && Ur(ki, hr); + } + function ii(Se, hr, Or, ki) { + for (var dt = hr - 1; dt >= 0; dt--) { + var la = Se[dt]; + if (or(la)) + dt === 0 && (ki === 11 || ki === 279) && e.Debug.fail("`JsxText` tokens should not be the first child of `JsxElement | JsxSelfClosingElement`"); + else if (pi(Se[dt], Or)) + return Se[dt]; + } + } + function mi(Se, hr, Or) { + if (Or === void 0 && (Or = Ir(hr, Se)), Or && e.isStringTextContainingNode(Or)) { + var ki = Or.getStart(Se), dt = Or.getEnd(); + if (ki < hr && hr < dt) + return true; + if (hr === dt) + return !!Or.isUnterminated; + } + return false; + } + e.isInString = mi; + function pe(Se, hr) { + var Or = lr(Se, hr); + return Or ? !!(Or.kind === 11 || Or.kind === 29 && Or.parent.kind === 11 || Or.kind === 29 && Or.parent.kind === 288 || Or && Or.kind === 19 && Or.parent.kind === 288 || Or.kind === 29 && Or.parent.kind === 281) : false; + } + e.isInsideJsxElementOrAttribute = pe; + function or(Se) { + return e.isJsxText(Se) && Se.containsOnlyTriviaWhiteSpaces; + } + function qr(Se, hr) { + var Or = lr(Se, hr); + return e.isTemplateLiteralKind(Or.kind) && hr > Or.getStart(Se); + } + e.isInTemplateString = qr; + function si(Se, hr) { + var Or = lr(Se, hr); + return !!(e.isJsxText(Or) || Or.kind === 18 && e.isJsxExpression(Or.parent) && e.isJsxElement(Or.parent.parent) || Or.kind === 29 && e.isJsxOpeningLikeElement(Or.parent) && e.isJsxElement(Or.parent.parent)); + } + e.isInJSXText = si; + function Di(Se, hr) { + function Or(ki) { + for (; ki; ) + if (ki.kind >= 279 && ki.kind <= 288 || ki.kind === 11 || ki.kind === 29 || ki.kind === 31 || ki.kind === 79 || ki.kind === 19 || ki.kind === 18 || ki.kind === 43) + ki = ki.parent; + else if (ki.kind === 278) { + if (hr > ki.getStart(Se)) + return true; + ki = ki.parent; + } else + return false; + return false; + } + return Or(lr(Se, hr)); + } + e.isInsideJsxElement = Di; + function wi(Se, hr, Or) { + var ki = e.tokenToString(Se.kind), dt = e.tokenToString(hr), la = Se.getFullStart(), wa = Or.text.lastIndexOf(dt, la); + if (wa !== -1) { + if (Or.text.lastIndexOf(ki, la - 1) < wa) { + var On = Ir(wa + 1, Or); + if (On && On.kind === hr) + return On; + } + for (var No = Se.kind, jo = 0; ; ) { + var po = Ir(Se.getFullStart(), Or); + if (!po) + return; + if (Se = po, Se.kind === hr) { + if (jo === 0) + return Se; + jo--; + } else + Se.kind === No && jo++; + } + } + } + e.findPrecedingMatchingToken = wi; + function Xi(Se, hr, Or) { + return hr ? Se.getNonNullableType() : Or ? Se.getNonOptionalType() : Se; + } + e.removeOptionality = Xi; + function et(Se, hr, Or) { + var ki = Wt(Se, hr); + return ki !== void 0 && (e.isPartOfTypeNode(ki.called) || Gi(ki.called, ki.nTypeArguments, Or).length !== 0 || et(ki.called, hr, Or)); + } + e.isPossiblyTypeArgumentPosition = et; + function Gi(Se, hr, Or) { + var ki = Or.getTypeAtLocation(Se); + e.isOptionalChain(Se.parent) && (ki = Xi(ki, e.isOptionalChainRoot(Se.parent), true)); + var dt = e.isNewExpression(Se.parent) ? ki.getConstructSignatures() : ki.getCallSignatures(); + return dt.filter(function(la) { + return !!la.typeParameters && la.typeParameters.length >= hr; + }); + } + e.getPossibleGenericSignatures = Gi; + function Wt(Se, hr) { + if (hr.text.lastIndexOf("<", Se ? Se.pos : hr.text.length) !== -1) + for (var Or = Se, ki = 0, dt = 0; Or; ) { + switch (Or.kind) { + case 29: + if (Or = Ir(Or.getFullStart(), hr), Or && Or.kind === 28 && (Or = Ir(Or.getFullStart(), hr)), !Or || !e.isIdentifier(Or)) + return; + if (!ki) + return e.isDeclarationName(Or) ? void 0 : { called: Or, nTypeArguments: dt }; + ki--; + break; + case 49: + ki = 3; + break; + case 48: + ki = 2; + break; + case 31: + ki++; + break; + case 19: + if (Or = wi(Or, 18, hr), !Or) + return; + break; + case 21: + if (Or = wi(Or, 20, hr), !Or) + return; + break; + case 23: + if (Or = wi(Or, 22, hr), !Or) + return; + break; + case 27: + dt++; + break; + case 38: + case 79: + case 10: + case 8: + case 9: + case 110: + case 95: + case 112: + case 94: + case 140: + case 24: + case 51: + case 57: + case 58: + break; + default: + if (e.isTypeNode(Or)) + break; + return; + } + Or = Ir(Or.getFullStart(), hr); + } + } + e.getPossibleTypeArgumentsInfo = Wt; + function Zt(Se, hr, Or) { + return e.formatting.getRangeOfEnclosingComment(Se, hr, void 0, Or); + } + e.isInComment = Zt; + function _r(Se, hr) { + var Or = lr(Se, hr); + return !!e.findAncestor(Or, e.isJSDoc); + } + e.hasDocComment = _r; + function pi(Se, hr) { + return Se.kind === 1 ? !!Se.jsDoc : Se.getWidth(hr) !== 0; + } + function ae(Se, hr) { + hr === void 0 && (hr = 0); + var Or = [], ki = e.isDeclaration(Se) ? e.getCombinedNodeFlagsAlwaysIncludeJSDoc(Se) & ~hr : 0; + return ki & 8 && Or.push("private"), ki & 16 && Or.push("protected"), ki & 4 && Or.push("public"), (ki & 32 || e.isClassStaticBlockDeclaration(Se)) && Or.push("static"), ki & 128 && Or.push("abstract"), ki & 1 && Or.push("export"), ki & 8192 && Or.push("deprecated"), Se.flags & 16777216 && Or.push("declare"), Se.kind === 271 && Or.push("export"), Or.length > 0 ? Or.join(",") : ""; + } + e.getNodeModifiers = ae; + function Xe(Se) { + if (Se.kind === 178 || Se.kind === 208) + return Se.typeArguments; + if (e.isFunctionLike(Se) || Se.kind === 257 || Se.kind === 258) + return Se.typeParameters; + } + e.getTypeArgumentOrTypeParameterList = Xe; + function Jr(Se) { + return Se === 2 || Se === 3; + } + e.isComment = Jr; + function ti(Se) { + return !!(Se === 10 || Se === 13 || e.isTemplateLiteralKind(Se)); + } + e.isStringOrRegularExpressionOrTemplateLiteral = ti; + function Ze(Se) { + return 18 <= Se && Se <= 78; + } + e.isPunctuation = Ze; + function Sr(Se, hr, Or) { + return e.isTemplateLiteralKind(Se.kind) && Se.getStart(Or) < hr && hr < Se.end || !!Se.isUnterminated && hr === Se.end; + } + e.isInsideTemplateLiteral = Sr; + function zr(Se) { + switch (Se) { + case 123: + case 121: + case 122: + return true; + } + return false; + } + e.isAccessibilityModifier = zr; + function Wr(Se) { + var hr = e.clone(Se); + return e.setConfigFileInOptions(hr, Se && Se.configFile), hr; + } + e.cloneCompilerOptions = Wr; + function Je(Se) { + return !!((Se.kind === 204 || Se.kind === 205) && (Se.parent.kind === 221 && Se.parent.left === Se && Se.parent.operatorToken.kind === 63 || Se.parent.kind === 244 && Se.parent.initializer === Se || Je(Se.parent.kind === 296 ? Se.parent.parent : Se.parent))); + } + e.isArrayLiteralOrObjectLiteralDestructuringPattern = Je; + function xe(Se, hr) { + return mr(Se, hr, true); + } + e.isInReferenceComment = xe; + function vr(Se, hr) { + return mr(Se, hr, false); + } + e.isInNonReferenceComment = vr; + function mr(Se, hr, Or) { + var ki = Zt(Se, hr, void 0); + return !!ki && Or === j.test(Se.text.substring(ki.pos, ki.end)); + } + function Ar(Se) { + if (!!Se) + switch (Se.kind) { + case 10: + case 14: + return nr(Se); + default: + return Oe(Se); + } + } + e.getReplacementSpanForContextToken = Ar; + function Oe(Se, hr, Or) { + return e.createTextSpanFromBounds(Se.getStart(hr), (Or || Se).getEnd()); + } + e.createTextSpanFromNode = Oe; + function nr(Se) { + if (!Se.isUnterminated) + return e.createTextSpanFromBounds(Se.getStart() + 1, Se.getEnd() - 1); + } + e.createTextSpanFromStringLiteralLikeContent = nr; + function Mr(Se, hr) { + return e.createRange(Se.getStart(hr), Se.end); + } + e.createTextRangeFromNode = Mr; + function Pe(Se) { + return e.createTextSpanFromBounds(Se.pos, Se.end); + } + e.createTextSpanFromRange = Pe; + function Ue(Se) { + return e.createRange(Se.start, Se.start + Se.length); + } + e.createTextRangeFromSpan = Ue; + function fr(Se, hr, Or) { + return De(e.createTextSpan(Se, hr), Or); + } + e.createTextChangeFromStartLength = fr; + function De(Se, hr) { + return { span: Se, newText: hr }; + } + e.createTextChange = De, e.typeKeywords = [130, 128, 158, 133, 95, 137, 140, 143, 104, 147, 148, 145, 150, 151, 110, 114, 153, 154, 155]; + function gr(Se) { + return e.contains(e.typeKeywords, Se); + } + e.isTypeKeyword = gr; + function Vr(Se) { + return Se.kind === 152; + } + e.isTypeKeywordToken = Vr; + function Tr(Se) { + return Vr(Se) || e.isIdentifier(Se) && Se.text === "type"; + } + e.isTypeKeywordTokenOrIdentifier = Tr; + function vi(Se) { + return !!(Se.flags & 1536) && Se.name.charCodeAt(0) === 34; + } + e.isExternalModuleSymbol = vi; + function Ui() { + var Se = []; + return function(hr) { + var Or = e.getNodeId(hr); + return !Se[Or] && (Se[Or] = true); + }; + } + e.nodeSeenTracker = Ui; + function Yi(Se) { + return Se.getText(0, Se.getLength()); + } + e.getSnapshotText = Yi; + function Wi(Se, hr) { + for (var Or = "", ki = 0; ki < hr; ki++) + Or += Se; + return Or; + } + e.repeatString = Wi; + function ct(Se) { + return Se.isTypeParameter() && Se.getConstraint() || Se; + } + e.skipConstraint = ct; + function Li(Se) { + return Se.kind === 162 ? e.isStringOrNumericLiteralLike(Se.expression) ? Se.expression.text : void 0 : e.isPrivateIdentifier(Se) ? e.idText(Se) : e.getTextOfIdentifierOrLiteral(Se); + } + e.getNameFromPropertyName = Li; + function nt(Se) { + return Se.getSourceFiles().some(function(hr) { + return !hr.isDeclarationFile && !Se.isSourceFileFromExternalLibrary(hr) && !!(hr.externalModuleIndicator || hr.commonJsModuleIndicator); + }); + } + e.programContainsModules = nt; + function Mt(Se) { + return Se.getSourceFiles().some(function(hr) { + return !hr.isDeclarationFile && !Se.isSourceFileFromExternalLibrary(hr) && !!hr.externalModuleIndicator; + }); + } + e.programContainsEsModules = Mt; + function xt(Se) { + return !!Se.module || e.getEmitScriptTarget(Se) >= 2 || !!Se.noEmit; + } + e.compilerOptionsIndicateEsModules = xt; + function ut(Se, hr) { + return { fileExists: function(Or) { + return Se.fileExists(Or); + }, getCurrentDirectory: function() { + return hr.getCurrentDirectory(); + }, readFile: e.maybeBind(hr, hr.readFile), useCaseSensitiveFileNames: e.maybeBind(hr, hr.useCaseSensitiveFileNames), getSymlinkCache: e.maybeBind(hr, hr.getSymlinkCache) || Se.getSymlinkCache, getModuleSpecifierCache: e.maybeBind(hr, hr.getModuleSpecifierCache), getPackageJsonInfoCache: function() { + var Or; + return (Or = Se.getModuleResolutionCache()) === null || Or === void 0 ? void 0 : Or.getPackageJsonInfoCache(); + }, getGlobalTypingsCacheLocation: e.maybeBind(hr, hr.getGlobalTypingsCacheLocation), redirectTargetsMap: Se.redirectTargetsMap, getProjectReferenceRedirect: function(Or) { + return Se.getProjectReferenceRedirect(Or); + }, isSourceOfProjectReferenceRedirect: function(Or) { + return Se.isSourceOfProjectReferenceRedirect(Or); + }, getNearestAncestorDirectoryWithPackageJson: e.maybeBind(hr, hr.getNearestAncestorDirectoryWithPackageJson), getFileIncludeReasons: function() { + return Se.getFileIncludeReasons(); + } }; + } + e.createModuleSpecifierResolutionHost = ut; + function Dt(Se, hr) { + return Ke(Ke({}, ut(Se, hr)), { getCommonSourceDirectory: function() { + return Se.getCommonSourceDirectory(); + } }); + } + e.getModuleSpecifierResolverHost = Dt; + function Rt(Se) { + return Se >= e.ModuleResolutionKind.Node16 && Se <= e.ModuleResolutionKind.NodeNext; + } + e.moduleResolutionRespectsExports = Rt; + function Ii(Se) { + return Se === e.ModuleResolutionKind.NodeJs || Se >= e.ModuleResolutionKind.Node16 && Se <= e.ModuleResolutionKind.NodeNext; + } + e.moduleResolutionUsesNodeModules = Ii; + function Ki(Se, hr, Or, ki) { + return Se || hr && hr.length ? Fi(Se, hr, Or, ki) : void 0; + } + e.makeImportIfNecessary = Ki; + function Fi(Se, hr, Or, ki, dt) { + return e.factory.createImportDeclaration(void 0, void 0, Se || hr ? e.factory.createImportClause(!!dt, Se, hr && hr.length ? e.factory.createNamedImports(hr) : void 0) : void 0, typeof Or == "string" ? ui(Or, ki) : Or, void 0); + } + e.makeImport = Fi; + function ui(Se, hr) { + return e.factory.createStringLiteral(Se, hr === 0); + } + e.makeStringLiteral = ui; + var Bt; + (function(Se) { + Se[Se.Single = 0] = "Single", Se[Se.Double = 1] = "Double"; + })(Bt = e.QuotePreference || (e.QuotePreference = {})); + function wt(Se, hr) { + return e.isStringDoubleQuoted(Se, hr) ? 1 : 0; + } + e.quotePreferenceFromString = wt; + function na(Se, hr) { + if (hr.quotePreference && hr.quotePreference !== "auto") + return hr.quotePreference === "single" ? 0 : 1; + var Or = Se.imports && e.find(Se.imports, function(ki) { + return e.isStringLiteral(ki) && !e.nodeIsSynthesized(ki.parent); + }); + return Or ? wt(Or, Se) : 1; + } + e.getQuotePreference = na; + function Ai(Se) { + switch (Se) { + case 0: + return "'"; + case 1: + return '"'; + default: + return e.Debug.assertNever(Se); + } + } + e.getQuoteFromPreference = Ai; + function Oi(Se) { + var hr = ji(Se); + return hr === void 0 ? void 0 : e.unescapeLeadingUnderscores(hr); + } + e.symbolNameNoDefault = Oi; + function ji(Se) { + return Se.escapedName !== "default" ? Se.escapedName : e.firstDefined(Se.declarations, function(hr) { + var Or = e.getNameOfDeclaration(hr); + return Or && Or.kind === 79 ? Or.escapedText : void 0; + }); + } + e.symbolEscapedNameNoDefault = ji; + function Vi(Se) { + return e.isStringLiteralLike(Se) && (e.isExternalModuleReference(Se.parent) || e.isImportDeclaration(Se.parent) || e.isRequireCall(Se.parent, false) && Se.parent.arguments[0] === Se || e.isImportCall(Se.parent) && Se.parent.arguments[0] === Se); + } + e.isModuleSpecifierLike = Vi; + function at(Se) { + return e.isBindingElement(Se) && e.isObjectBindingPattern(Se.parent) && e.isIdentifier(Se.name) && !Se.propertyName; + } + e.isObjectBindingElementWithoutPropertyName = at; + function At(Se, hr) { + var Or = Se.getTypeAtLocation(hr.parent); + return Or && Se.getPropertyOfType(Or, hr.name.text); + } + e.getPropertySymbolFromBindingElement = At; + function ba(Se, hr, Or) { + if (!!Se) + for (; Se.parent; ) { + if (e.isSourceFile(Se.parent) || !$a(Or, Se.parent, hr)) + return Se; + Se = Se.parent; + } + } + e.getParentNodeInSpan = ba; + function $a(Se, hr, Or) { + return e.textSpanContainsPosition(Se, hr.getStart(Or)) && hr.getEnd() <= e.textSpanEnd(Se); + } + function Qa(Se, hr) { + return Se.modifiers && e.find(Se.modifiers, function(Or) { + return Or.kind === hr; + }); + } + e.findModifier = Qa; + function ai(Se, hr, Or, ki) { + var dt = e.isArray(Or) ? Or[0] : Or, la = dt.kind === 237 ? e.isRequireVariableStatement : e.isAnyImportSyntax, wa = e.filter(hr.statements, la), On = e.isArray(Or) ? e.stableSort(Or, e.OrganizeImports.compareImportsOrRequireStatements) : [Or]; + if (!wa.length) + Se.insertNodesAtTopOfFile(hr, On, ki); + else if (wa && e.OrganizeImports.importsAreSorted(wa)) + for (var No = 0, jo = On; No < jo.length; No++) { + var po = jo[No], Gn = e.OrganizeImports.getImportDeclarationInsertionIndex(wa, po); + if (Gn === 0) { + var $n = wa[0] === hr.statements[0] ? { leadingTriviaOption: e.textChanges.LeadingTriviaOption.Exclude } : {}; + Se.insertNodeBefore(hr, wa[0], po, false, $n); + } else { + var Ho = wa[Gn - 1]; + Se.insertNodeAfter(hr, Ho, po); + } + } + else { + var Zo = e.lastOrUndefined(wa); + Zo ? Se.insertNodesAfter(hr, Zo, On) : Se.insertNodesAtTopOfFile(hr, On, ki); + } + } + e.insertImports = ai; + function Dn(Se, hr) { + return e.Debug.assert(Se.isTypeOnly), e.cast(Se.getChildAt(0, hr), Vr); + } + e.getTypeKeywordOfTypeOnlyImport = Dn; + function ka(Se, hr) { + return !!Se && !!hr && Se.start === hr.start && Se.length === hr.length; + } + e.textSpansEqual = ka; + function Ba(Se, hr) { + return Se.fileName === hr.fileName && ka(Se.textSpan, hr.textSpan); + } + e.documentSpansEqual = Ba; + function pn(Se, hr) { + if (Se) { + for (var Or = 0; Or < Se.length; Or++) + if (Se.indexOf(Se[Or]) === Or) { + var ki = hr(Se[Or], Or); + if (ki) + return ki; + } + } + } + e.forEachUnique = pn; + function Cn(Se, hr, Or) { + for (var ki = hr; ki < Or; ki++) + if (!e.isWhiteSpaceLike(Se.charCodeAt(ki))) + return false; + return true; + } + e.isTextWhiteSpaceLike = Cn; + function Bi(Se) { + var hr = Se.declarations ? e.firstOrUndefined(Se.declarations) : void 0; + return !!e.findAncestor(hr, function(Or) { + return e.isParameter(Or) ? true : e.isBindingElement(Or) || e.isObjectBindingPattern(Or) || e.isArrayBindingPattern(Or) ? false : "quit"; + }); + } + e.isFirstDeclarationOfSymbolParameter = Bi; + var kn = xn(); + function xn() { + var Se = e.defaultMaximumTruncationLength * 10, hr, Or, ki, dt; + po(); + var la = function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.text); + }; + return { displayParts: function() { + var Gn = hr.length && hr[hr.length - 1].text; + return dt > Se && Gn && Gn !== "..." && (e.isWhiteSpaceLike(Gn.charCodeAt(Gn.length - 1)) || hr.push(Pn(" ", e.SymbolDisplayPartKind.space)), hr.push(Pn("...", e.SymbolDisplayPartKind.punctuation))), hr; + }, writeKeyword: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.keyword); + }, writeOperator: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.operator); + }, writePunctuation: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.punctuation); + }, writeTrailingSemicolon: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.punctuation); + }, writeSpace: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.space); + }, writeStringLiteral: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.stringLiteral); + }, writeParameter: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.parameterName); + }, writeProperty: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.propertyName); + }, writeLiteral: function(Gn) { + return On(Gn, e.SymbolDisplayPartKind.stringLiteral); + }, writeSymbol: No, writeLine: jo, write: la, writeComment: la, getText: function() { + return ""; + }, getTextPos: function() { + return 0; + }, getColumn: function() { + return 0; + }, getLine: function() { + return 0; + }, isAtStartOfLine: function() { + return false; + }, hasTrailingWhitespace: function() { + return false; + }, hasTrailingComment: function() { + return false; + }, rawWrite: e.notImplemented, getIndent: function() { + return ki; + }, increaseIndent: function() { + ki++; + }, decreaseIndent: function() { + ki--; + }, clear: po, trackSymbol: function() { + return false; + }, reportInaccessibleThisError: e.noop, reportInaccessibleUniqueSymbolError: e.noop, reportPrivateInBaseOfClassExpression: e.noop }; + function wa() { + if (!(dt > Se) && Or) { + var Gn = e.getIndentString(ki); + Gn && (dt += Gn.length, hr.push(Pn(Gn, e.SymbolDisplayPartKind.space))), Or = false; + } + } + function On(Gn, $n) { + dt > Se || (wa(), dt += Gn.length, hr.push(Pn(Gn, $n))); + } + function No(Gn, $n) { + dt > Se || (wa(), dt += Gn.length, hr.push(Kn(Gn, $n))); + } + function jo() { + dt > Se || (dt += 1, hr.push(Jn()), Or = true); + } + function po() { + hr = [], Or = true, ki = 0, dt = 0; + } + } + function Kn(Se, hr) { + return Pn(Se, Or(hr)); + function Or(ki) { + var dt = ki.flags; + return dt & 3 ? Bi(ki) ? e.SymbolDisplayPartKind.parameterName : e.SymbolDisplayPartKind.localName : dt & 4 || dt & 32768 || dt & 65536 ? e.SymbolDisplayPartKind.propertyName : dt & 8 ? e.SymbolDisplayPartKind.enumMemberName : dt & 16 ? e.SymbolDisplayPartKind.functionName : dt & 32 ? e.SymbolDisplayPartKind.className : dt & 64 ? e.SymbolDisplayPartKind.interfaceName : dt & 384 ? e.SymbolDisplayPartKind.enumName : dt & 1536 ? e.SymbolDisplayPartKind.moduleName : dt & 8192 ? e.SymbolDisplayPartKind.methodName : dt & 262144 ? e.SymbolDisplayPartKind.typeParameterName : dt & 524288 || dt & 2097152 ? e.SymbolDisplayPartKind.aliasName : e.SymbolDisplayPartKind.text; + } + } + e.symbolPart = Kn; + function Pn(Se, hr) { + return { text: Se, kind: e.SymbolDisplayPartKind[hr] }; + } + e.displayPart = Pn; + function eo() { + return Pn(" ", e.SymbolDisplayPartKind.space); + } + e.spacePart = eo; + function Rn(Se) { + return Pn(e.tokenToString(Se), e.SymbolDisplayPartKind.keyword); + } + e.keywordPart = Rn; + function Da(Se) { + return Pn(e.tokenToString(Se), e.SymbolDisplayPartKind.punctuation); + } + e.punctuationPart = Da; + function bo(Se) { + return Pn(e.tokenToString(Se), e.SymbolDisplayPartKind.operator); + } + e.operatorPart = bo; + function Ro(Se) { + return Pn(Se, e.SymbolDisplayPartKind.parameterName); + } + e.parameterNamePart = Ro; + function En(Se) { + return Pn(Se, e.SymbolDisplayPartKind.propertyName); + } + e.propertyNamePart = En; + function Wn(Se) { + var hr = e.stringToToken(Se); + return hr === void 0 ? to(Se) : Rn(hr); + } + e.textOrKeywordPart = Wn; + function to(Se) { + return Pn(Se, e.SymbolDisplayPartKind.text); + } + e.textPart = to; + function Co(Se) { + return Pn(Se, e.SymbolDisplayPartKind.aliasName); + } + e.typeAliasNamePart = Co; + function Ko(Se) { + return Pn(Se, e.SymbolDisplayPartKind.typeParameterName); + } + e.typeParameterNamePart = Ko; + function Oo(Se) { + return Pn(Se, e.SymbolDisplayPartKind.linkText); + } + e.linkTextPart = Oo; + function no(Se, hr) { + return { text: Se, kind: e.SymbolDisplayPartKind[e.SymbolDisplayPartKind.linkName], target: { fileName: e.getSourceFileOfNode(hr).fileName, textSpan: Oe(hr) } }; + } + e.linkNamePart = no; + function $o(Se) { + return Pn(Se, e.SymbolDisplayPartKind.link); + } + e.linkPart = $o; + function Pr(Se, hr) { + var Or, ki = e.isJSDocLink(Se) ? "link" : e.isJSDocLinkCode(Se) ? "linkcode" : "linkplain", dt = [$o("{@".concat(ki, " "))]; + if (!Se.name) + Se.text && dt.push(Oo(Se.text)); + else { + var la = hr == null ? void 0 : hr.getSymbolAtLocation(Se.name), wa = St(Se.text), On = e.getTextOfNode(Se.name) + Se.text.slice(0, wa), No = xi(Se.text.slice(wa)), jo = (la == null ? void 0 : la.valueDeclaration) || ((Or = la == null ? void 0 : la.declarations) === null || Or === void 0 ? void 0 : Or[0]); + jo ? (dt.push(no(On, jo)), No && dt.push(Oo(No))) : dt.push(Oo(On + (wa || No.indexOf("://") === 0 ? "" : " ") + No)); + } + return dt.push($o("}")), dt; + } + e.buildLinkParts = Pr; + function xi(Se) { + var hr = 0; + if (Se.charCodeAt(hr++) === 124) { + for (; hr < Se.length && Se.charCodeAt(hr) === 32; ) + hr++; + return Se.slice(hr); + } + return Se; + } + function St(Se) { + if (Se.indexOf("()") === 0) + return 2; + if (Se[0] !== "<") + return 0; + for (var hr = 0, Or = 0; Or < Se.length; ) + if (Se[Or] === "<" && hr++, Se[Or] === ">" && hr--, Or++, !hr) + return Or; + return 0; + } + var pa = `\r +`; + function dn(Se, hr) { + var Or; + return (hr == null ? void 0 : hr.newLineCharacter) || ((Or = Se.getNewLine) === null || Or === void 0 ? void 0 : Or.call(Se)) || pa; + } + e.getNewLineOrDefaultFromHost = dn; + function Jn() { + return Pn(` +`, e.SymbolDisplayPartKind.lineBreak); + } + e.lineBreakPart = Jn; + function Qe(Se) { + try { + return Se(kn), kn.displayParts(); + } finally { + kn.clear(); + } + } + e.mapToDisplayParts = Qe; + function Gr(Se, hr, Or, ki) { + return ki === void 0 && (ki = 0), Qe(function(dt) { + Se.writeType(hr, Or, ki | 1024 | 16384, dt); + }); + } + e.typeToDisplayParts = Gr; + function S(Se, hr, Or, ki, dt) { + return dt === void 0 && (dt = 0), Qe(function(la) { + Se.writeSymbol(hr, Or, ki, dt | 8, la); + }); + } + e.symbolToDisplayParts = S; + function Ce(Se, hr, Or, ki) { + return ki === void 0 && (ki = 0), ki |= 25632, Qe(function(dt) { + Se.writeSignature(hr, Or, ki, void 0, dt); + }); + } + e.signatureToDisplayParts = Ce; + function qe(Se, hr) { + var Or = hr.getSourceFile(); + return Qe(function(ki) { + var dt = e.createPrinter({ removeComments: true, omitTrailingSemicolon: true }); + dt.writeNode(4, Se, Or, ki); + }); + } + e.nodeToDisplayParts = qe; + function br(Se) { + return !!Se.parent && e.isImportOrExportSpecifier(Se.parent) && Se.parent.propertyName === Se; + } + e.isImportOrExportSpecifierName = br; + function Zr(Se, hr) { + return e.ensureScriptKind(Se, hr.getScriptKind && hr.getScriptKind(Se)); + } + e.getScriptKind = Zr; + function Si(Se, hr) { + for (var Or = Se; Qi(Or) || Pi(Or) && Or.target; ) + Pi(Or) && Or.target ? Or = Or.target : Or = e.skipAlias(Or, hr); + return Or; + } + e.getSymbolTarget = Si; + function Pi(Se) { + return (Se.flags & 33554432) !== 0; + } + function Qi(Se) { + return (Se.flags & 2097152) !== 0; + } + function Ct(Se, hr) { + return e.getSymbolId(e.skipAlias(Se, hr)); + } + e.getUniqueSymbolId = Ct; + function sa(Se, hr) { + for (; e.isWhiteSpaceLike(Se.charCodeAt(hr)); ) + hr += 1; + return hr; + } + e.getFirstNonSpaceCharacterPosition = sa; + function en(Se, hr) { + for (; hr > -1 && e.isWhiteSpaceSingleLine(Se.charCodeAt(hr)); ) + hr -= 1; + return hr + 1; + } + e.getPrecedingNonSpaceCharacterPosition = en; + function Wa(Se, hr) { + hr === void 0 && (hr = true); + var Or = Se && mo(Se); + return Or && !hr && ys(Or), Or; + } + e.getSynthesizedDeepClone = Wa; + function qn(Se, hr, Or) { + var ki = Or(Se); + return ki ? e.setOriginalNode(ki, Se) : ki = mo(Se, Or), ki && !hr && ys(ki), ki; + } + e.getSynthesizedDeepCloneWithReplacements = qn; + function mo(Se, hr) { + var Or = hr ? function(wa) { + return qn(wa, true, hr); + } : Wa, ki = hr ? function(wa) { + return wa && Go(wa, true, hr); + } : function(wa) { + return wa && So(wa); + }, dt = e.visitEachChild(Se, Or, e.nullTransformationContext, ki, Or); + if (dt === Se) { + var la = e.isStringLiteral(Se) ? e.setOriginalNode(e.factory.createStringLiteralFromNode(Se), Se) : e.isNumericLiteral(Se) ? e.setOriginalNode(e.factory.createNumericLiteral(Se.text, Se.numericLiteralFlags), Se) : e.factory.cloneNode(Se); + return e.setTextRange(la, Se); + } + return dt.parent = void 0, dt; + } + function So(Se, hr) { + return hr === void 0 && (hr = true), Se && e.factory.createNodeArray(Se.map(function(Or) { + return Wa(Or, hr); + }), Se.hasTrailingComma); + } + e.getSynthesizedDeepClones = So; + function Go(Se, hr, Or) { + return e.factory.createNodeArray(Se.map(function(ki) { + return qn(ki, hr, Or); + }), Se.hasTrailingComma); + } + e.getSynthesizedDeepClonesWithReplacements = Go; + function ys(Se) { + Pc(Se), Vc(Se); + } + e.suppressLeadingAndTrailingTrivia = ys; + function Pc(Se) { + pc(Se, 512, hs); + } + e.suppressLeadingTrivia = Pc; + function Vc(Se) { + pc(Se, 1024, e.getLastChild); + } + e.suppressTrailingTrivia = Vc; + function Kc(Se, hr) { + var Or = Se.getSourceFile(), ki = Or.text; + Xs(Se, ki) ? Qs(Se, hr, Or) : ds(Se, hr, Or), js(Se, hr, Or); + } + e.copyComments = Kc; + function Xs(Se, hr) { + for (var Or = Se.getFullStart(), ki = Se.getStart(), dt = Or; dt < ki; dt++) + if (hr.charCodeAt(dt) === 10) + return true; + return false; + } + function pc(Se, hr, Or) { + e.addEmitFlags(Se, hr); + var ki = Or(Se); + ki && pc(ki, hr, Or); + } + function hs(Se) { + return Se.forEachChild(function(hr) { + return hr; + }); + } + function tc(Se, hr) { + for (var Or = Se, ki = 1; !e.isFileLevelUniqueName(hr, Or); ki++) + Or = "".concat(Se, "_").concat(ki); + return Or; + } + e.getUniqueName = tc; + function ps(Se, hr, Or, ki) { + for (var dt = 0, la = -1, wa = 0, On = Se; wa < On.length; wa++) { + var No = On[wa], jo = No.fileName, po = No.textChanges; + e.Debug.assert(jo === hr); + for (var Gn = 0, $n = po; Gn < $n.length; Gn++) { + var Ho = $n[Gn], Zo = Ho.span, Es = Ho.newText, yc = ce(Es, Or); + if (yc !== -1 && (la = Zo.start + dt + yc, !ki)) + return la; + dt += Es.length - Zo.length; + } + } + return e.Debug.assert(ki), e.Debug.assert(la >= 0), la; + } + e.getRenameLocation = ps; + function Qs(Se, hr, Or, ki, dt) { + e.forEachLeadingCommentRange(Or.text, Se.pos, Ji(hr, Or, ki, dt, e.addSyntheticLeadingComment)); + } + e.copyLeadingComments = Qs; + function js(Se, hr, Or, ki, dt) { + e.forEachTrailingCommentRange(Or.text, Se.end, Ji(hr, Or, ki, dt, e.addSyntheticTrailingComment)); + } + e.copyTrailingComments = js; + function ds(Se, hr, Or, ki, dt) { + e.forEachTrailingCommentRange(Or.text, Se.pos, Ji(hr, Or, ki, dt, e.addSyntheticLeadingComment)); + } + e.copyTrailingAsLeadingComments = ds; + function Ji(Se, hr, Or, ki, dt) { + return function(la, wa, On, No) { + On === 3 ? (la += 2, wa -= 2) : la += 2, dt(Se, Or || On, hr.text.slice(la, wa), ki !== void 0 ? ki : No); + }; + } + function ce(Se, hr) { + if (e.startsWith(Se, hr)) + return 0; + var Or = Se.indexOf(" " + hr); + return Or === -1 && (Or = Se.indexOf("." + hr)), Or === -1 && (Or = Se.indexOf('"' + hr)), Or === -1 ? -1 : Or + 1; + } + function Rr(Se) { + return e.isBinaryExpression(Se) && Se.operatorToken.kind === 27 || e.isObjectLiteralExpression(Se) || e.isAsExpression(Se) && e.isObjectLiteralExpression(Se.expression); + } + e.needsParentheses = Rr; + function yi(Se, hr) { + var Or = Se.parent; + switch (Or.kind) { + case 209: + return hr.getContextualType(Or); + case 221: { + var ki = Or, dt = ki.left, la = ki.operatorToken, wa = ki.right; + return je(la.kind) ? hr.getTypeAtLocation(Se === wa ? dt : wa) : hr.getContextualType(Se); + } + case 289: + return Or.expression === Se ? Pt(Or, hr) : void 0; + default: + return hr.getContextualType(Se); + } + } + e.getContextualTypeFromParent = yi; + function qi(Se, hr, Or) { + var ki = na(Se, hr), dt = JSON.stringify(Or); + return ki === 0 ? "'".concat(e.stripQuotes(dt).replace(/'/g, "\\'").replace(/\\"/g, '"'), "'") : dt; + } + e.quote = qi; + function je(Se) { + switch (Se) { + case 36: + case 34: + case 37: + case 35: + return true; + default: + return false; + } + } + e.isEqualityOperatorKind = je; + function Hr(Se) { + switch (Se.kind) { + case 10: + case 14: + case 223: + case 210: + return true; + default: + return false; + } + } + e.isStringLiteralOrTemplate = Hr; + function pt(Se) { + return !!Se.getStringIndexType() || !!Se.getNumberIndexType(); + } + e.hasIndexSignature = pt; + function Pt(Se, hr) { + return hr.getTypeAtLocation(Se.parent.parent.expression); + } + e.getSwitchedType = Pt, e.ANONYMOUS = "anonymous function"; + function ga(Se, hr, Or, ki) { + var dt = Or.getTypeChecker(), la = true, wa = function() { + return la = false; + }, On = dt.typeToTypeNode(Se, hr, 1, { trackSymbol: function(No, jo, po) { + return la = la && dt.isSymbolAccessible(No, jo, po, false).accessibility === 0, !la; + }, reportInaccessibleThisError: wa, reportPrivateInBaseOfClassExpression: wa, reportInaccessibleUniqueSymbolError: wa, moduleResolverHost: Dt(Or, ki) }); + return la ? On : void 0; + } + e.getTypeNodeIfAccessible = ga; + function ua(Se) { + return Se === 174 || Se === 175 || Se === 176 || Se === 166 || Se === 168; + } + function Xn(Se) { + return Se === 256 || Se === 171 || Se === 169 || Se === 172 || Se === 173; + } + function jr(Se) { + return Se === 261; + } + function fo(Se) { + return Se === 237 || Se === 238 || Se === 240 || Se === 245 || Se === 246 || Se === 247 || Se === 251 || Se === 253 || Se === 167 || Se === 259 || Se === 266 || Se === 265 || Se === 272 || Se === 264 || Se === 271; + } + e.syntaxRequiresTrailingSemicolonOrASI = fo, e.syntaxMayBeASICandidate = e.or(ua, Xn, jr, fo); + function xs(Se, hr) { + var Or = Se.getLastToken(hr); + if (Or && Or.kind === 26) + return false; + if (ua(Se.kind)) { + if (Or && Or.kind === 27) + return false; + } else if (jr(Se.kind)) { + var ki = e.last(Se.getChildren(hr)); + if (ki && e.isModuleBlock(ki)) + return false; + } else if (Xn(Se.kind)) { + var ki = e.last(Se.getChildren(hr)); + if (ki && e.isFunctionBlock(ki)) + return false; + } else if (!fo(Se.kind)) + return false; + if (Se.kind === 240) + return true; + var dt = e.findAncestor(Se, function(No) { + return !No.parent; + }), la = yr(Se, dt, hr); + if (!la || la.kind === 19) + return true; + var wa = hr.getLineAndCharacterOfPosition(Se.getEnd()).line, On = hr.getLineAndCharacterOfPosition(la.getStart(hr)).line; + return wa !== On; + } + function Fo(Se, hr, Or) { + var ki = e.findAncestor(hr, function(dt) { + return dt.end !== Se ? "quit" : e.syntaxMayBeASICandidate(dt.kind); + }); + return !!ki && xs(ki, Or); + } + e.positionIsASICandidate = Fo; + function ko(Se) { + var hr = 0, Or = 0, ki = 5; + return e.forEachChild(Se, function dt(la) { + if (fo(la.kind)) { + var wa = la.getLastToken(Se); + (wa == null ? void 0 : wa.kind) === 26 ? hr++ : Or++; + } else if (ua(la.kind)) { + var wa = la.getLastToken(Se); + if ((wa == null ? void 0 : wa.kind) === 26) + hr++; + else if (wa && wa.kind !== 27) { + var On = e.getLineAndCharacterOfPosition(Se, wa.getStart(Se)).line, No = e.getLineAndCharacterOfPosition(Se, e.getSpanOfTokenAtPosition(Se, wa.end).start).line; + On !== No && Or++; + } + } + return hr + Or >= ki ? true : e.forEachChild(la, dt); + }), hr === 0 && Or <= 1 ? true : hr / Or > 1 / ki; + } + e.probablyUsesSemicolons = ko; + function Ao(Se, hr) { + return tl(Se, Se.getDirectories, hr) || []; + } + e.tryGetDirectories = Ao; + function Ms(Se, hr, Or, ki, dt) { + return tl(Se, Se.readDirectory, hr, Or, ki, dt) || e.emptyArray; + } + e.tryReadDirectory = Ms; + function Bs(Se, hr) { + return tl(Se, Se.fileExists, hr); + } + e.tryFileExists = Bs; + function xc(Se, hr) { + return su(function() { + return e.directoryProbablyExists(hr, Se); + }) || false; + } + e.tryDirectoryExists = xc; + function su(Se) { + try { + return Se(); + } catch { + return; + } + } + e.tryAndIgnoreErrors = su; + function tl(Se, hr) { + for (var Or = [], ki = 2; ki < arguments.length; ki++) + Or[ki - 2] = arguments[ki]; + return su(function() { + return hr && hr.apply(Se, Or); + }); + } + e.tryIOAndConsumeErrors = tl; + function Zc(Se, hr, Or) { + var ki = []; + return e.forEachAncestorDirectory(Se, function(dt) { + if (dt === Or) + return true; + var la = e.combinePaths(dt, "package.json"); + Bs(hr, la) && ki.push(la); + }), ki; + } + e.findPackageJsons = Zc; + function Rf(Se, hr) { + var Or; + return e.forEachAncestorDirectory(Se, function(ki) { + if (ki === "node_modules" || (Or = e.findConfigFile(ki, function(dt) { + return Bs(hr, dt); + }, "package.json"), Or)) + return true; + }), Or; + } + e.findPackageJson = Rf; + function al(Se, hr) { + if (!hr.fileExists) + return []; + var Or = []; + return e.forEachAncestorDirectory(e.getDirectoryPath(Se), function(ki) { + var dt = e.combinePaths(ki, "package.json"); + if (hr.fileExists(dt)) { + var la = Jo(dt, hr); + la && Or.push(la); + } + }), Or; + } + e.getPackageJsonsVisibleToFile = al; + function Jo(Se, hr) { + if (!hr.readFile) + return; + var Or = ["dependencies", "devDependencies", "optionalDependencies", "peerDependencies"], ki = hr.readFile(Se) || "", dt = Ws(ki), la = {}; + if (dt) + for (var wa = 0, On = Or; wa < On.length; wa++) { + var No = On[wa], jo = dt[No]; + if (!!jo) { + var po = new e.Map(); + for (var Gn in jo) + po.set(Gn, jo[Gn]); + la[No] = po; + } + } + var $n = [[1, la.dependencies], [2, la.devDependencies], [8, la.optionalDependencies], [4, la.peerDependencies]]; + return Ke(Ke({}, la), { parseable: !!dt, fileName: Se, get: Ho, has: function(Zo, Es) { + return !!Ho(Zo, Es); + } }); + function Ho(Zo, Es) { + Es === void 0 && (Es = 15); + for (var yc = 0, Xr = $n; yc < Xr.length; yc++) { + var Ls = Xr[yc], Ic = Ls[0], zu = Ls[1]; + if (zu && Es & Ic) { + var vf = zu.get(Zo); + if (vf !== void 0) + return vf; + } + } + } + } + e.createPackageJsonInfo = Jo; + function eu(Se, hr, Or) { + var ki = (Or.getPackageJsonsVisibleToFile && Or.getPackageJsonsVisibleToFile(Se.fileName) || al(Se.fileName, Or)).filter(function($n) { + return $n.parseable; + }), dt; + return { allowsImportingAmbientModule: wa, allowsImportingSourceFile: On, allowsImportingSpecifier: No }; + function la($n) { + for (var Ho = Gn($n), Zo = 0, Es = ki; Zo < Es.length; Zo++) { + var yc = Es[Zo]; + if (yc.has(Ho) || yc.has(e.getTypesPackageName(Ho))) + return true; + } + return false; + } + function wa($n, Ho) { + if (!ki.length || !$n.valueDeclaration) + return true; + var Zo = $n.valueDeclaration.getSourceFile(), Es = po(Zo.fileName, Ho); + if (typeof Es > "u") + return true; + var yc = e.stripQuotes($n.getName()); + return jo(yc) ? true : la(Es) || la(yc); + } + function On($n, Ho) { + if (!ki.length) + return true; + var Zo = po($n.fileName, Ho); + return Zo ? la(Zo) : true; + } + function No($n) { + return !ki.length || jo($n) || e.pathIsRelative($n) || e.isRootedDiskPath($n) ? true : la($n); + } + function jo($n) { + return !!(e.isSourceFileJS(Se) && e.JsTyping.nodeCoreModules.has($n) && (dt === void 0 && (dt = pu(Se)), dt)); + } + function po($n, Ho) { + if (!!e.stringContains($n, "node_modules")) { + var Zo = e.moduleSpecifiers.getNodeModulesPackageName(Or.getCompilationSettings(), Se, $n, Ho, hr); + if (!!Zo && !e.pathIsRelative(Zo) && !e.isRootedDiskPath(Zo)) + return Gn(Zo); + } + } + function Gn($n) { + var Ho = e.getPathComponents(e.getPackageNameFromTypesPackageName($n)).slice(1); + return e.startsWith(Ho[0], "@") ? "".concat(Ho[0], "/").concat(Ho[1]) : Ho[0]; + } + } + e.createPackageJsonImportFilter = eu; + function Ws(Se) { + try { + return JSON.parse(Se); + } catch { + return; + } + } + function pu(Se) { + return e.some(Se.imports, function(hr) { + var Or = hr.text; + return e.JsTyping.nodeCoreModules.has(Or); + }); + } + e.consumesNodeCoreModules = pu; + function Uu(Se) { + return e.contains(e.getPathComponents(Se), "node_modules"); + } + e.isInsideNodeModules = Uu; + function Ql(Se) { + return Se.file !== void 0 && Se.start !== void 0 && Se.length !== void 0; + } + e.isDiagnosticWithLocation = Ql; + function xl(Se, hr) { + var Or = Oe(Se), ki = e.binarySearchKey(hr, Or, e.identity, e.compareTextSpans); + if (ki >= 0) { + var dt = hr[ki]; + return e.Debug.assertEqual(dt.file, Se.getSourceFile(), "Diagnostics proided to 'findDiagnosticForNode' must be from a single SourceFile"), e.cast(dt, Ql); + } + } + e.findDiagnosticForNode = xl; + function Ya(Se, hr) { + var Or, ki = e.binarySearchKey(hr, Se.start, function(On) { + return On.start; + }, e.compareValues); + for (ki < 0 && (ki = ~ki); ((Or = hr[ki - 1]) === null || Or === void 0 ? void 0 : Or.start) === Se.start; ) + ki--; + for (var dt = [], la = e.textSpanEnd(Se); ; ) { + var wa = e.tryCast(hr[ki], Ql); + if (!wa || wa.start > la) + break; + e.textSpanContainsTextSpan(Se, wa) && dt.push(wa), ki++; + } + return dt; + } + e.getDiagnosticsWithinSpan = Ya; + function du(Se) { + var hr = Se.startPosition, Or = Se.endPosition; + return e.createTextSpanFromBounds(hr, Or === void 0 ? hr : Or); + } + e.getRefactorContextSpan = du; + function vc(Se, hr) { + var Or = lr(Se, hr.start), ki = e.findAncestor(Or, function(dt) { + return dt.getStart(Se) < hr.start || dt.getEnd() > e.textSpanEnd(hr) ? "quit" : e.isExpression(dt) && ka(hr, Oe(dt, Se)); + }); + return ki; + } + e.getFixableErrorSpanExpression = vc; + function Kr(Se, hr, Or) { + return Or === void 0 && (Or = e.identity), Se ? e.isArray(Se) ? Or(e.map(Se, hr)) : hr(Se, 0) : void 0; + } + e.mapOneOrMany = Kr; + function _i(Se) { + return e.isArray(Se) ? e.first(Se) : Se; + } + e.firstOrOnly = _i; + function Ei(Se, hr) { + if (kt(Se)) { + var Or = bt(Se); + if (Or) + return Or; + var ki = e.codefix.moduleSymbolToValidIdentifier(ia(Se), hr, false), dt = e.codefix.moduleSymbolToValidIdentifier(ia(Se), hr, true); + return ki === dt ? ki : [ki, dt]; + } + return Se.name; + } + e.getNamesForExportedSymbol = Ei; + function tt(Se, hr, Or) { + return kt(Se) ? bt(Se) || e.codefix.moduleSymbolToValidIdentifier(ia(Se), hr, !!Or) : Se.name; + } + e.getNameForExportedSymbol = tt; + function kt(Se) { + return !(Se.flags & 33554432) && (Se.escapedName === "export=" || Se.escapedName === "default"); + } + function bt(Se) { + return e.firstDefined(Se.declarations, function(hr) { + var Or; + return e.isExportAssignment(hr) ? (Or = e.tryCast(e.skipOuterExpressions(hr.expression), e.isIdentifier)) === null || Or === void 0 ? void 0 : Or.text : void 0; + }); + } + function ia(Se) { + var hr; + return e.Debug.checkDefined(Se.parent, "Symbol parent was undefined. Flags: ".concat(e.Debug.formatSymbolFlags(Se.flags), ". ") + "Declarations: ".concat((hr = Se.declarations) === null || hr === void 0 ? void 0 : hr.map(function(Or) { + var ki = e.Debug.formatSyntaxKind(Or.kind), dt = e.isInJSFile(Or), la = Or.expression; + return (dt ? "[JS]" : "") + ki + (la ? " (expression: ".concat(e.Debug.formatSyntaxKind(la.kind), ")") : ""); + }).join(", "), ".")); + } + function Xt(Se, hr, Or) { + var ki = hr.length; + if (ki + Or > Se.length) + return false; + for (var dt = 0; dt < ki; dt++) + if (hr.charCodeAt(dt) !== Se.charCodeAt(dt + Or)) + return false; + return true; + } + e.stringContainsAt = Xt; + function Za(Se) { + return Se.charCodeAt(0) === 95; + } + e.startsWithUnderscore = Za; + function bn(Se) { + return !_a(Se); + } + e.isGlobalDeclaration = bn; + function _a(Se) { + var hr = Se.getSourceFile(); + return !hr.externalModuleIndicator && !hr.commonJsModuleIndicator ? false : e.isInJSFile(Se) || !e.findAncestor(Se, e.isGlobalScopeAugmentation); + } + e.isNonGlobalDeclaration = _a; + function qa(Se) { + return !!(e.getCombinedNodeFlagsAlwaysIncludeJSDoc(Se) & 8192); + } + e.isDeprecatedDeclaration = qa; + function rn(Se, hr) { + var Or = e.firstDefined(Se.imports, function(ki) { + if (e.JsTyping.nodeCoreModules.has(ki.text)) + return e.startsWith(ki.text, "node:"); + }); + return Or != null ? Or : hr.usesUriStyleNodeCoreModules; + } + e.shouldUseUriStyleNodeCoreModules = rn; + function jn(Se) { + return Se === ` +` ? 1 : 0; + } + e.getNewLineKind = jn; + function Mo(Se) { + return e.isArray(Se) ? e.formatStringFromArgs(e.getLocaleSpecificMessage(Se[0]), Se.slice(1)) : e.getLocaleSpecificMessage(Se); + } + e.diagnosticToString = Mo; + function ho(Se, hr) { + var Or = Se.options, ki = !Or.semicolons || Or.semicolons === e.SemicolonPreference.Ignore, dt = Or.semicolons === e.SemicolonPreference.Remove || ki && !ko(hr); + return Ke(Ke({}, Or), { semicolons: dt ? e.SemicolonPreference.Remove : e.SemicolonPreference.Ignore }); + } + e.getFormatCodeSettingsForWriting = ho; + function gs(Se) { + return Se === 2 || Se === 3; + } + e.jsxModeNeedsExplicitImport = gs; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(T) { + T[T.Named = 0] = "Named", T[T.Default = 1] = "Default", T[T.Namespace = 2] = "Namespace", T[T.CommonJS = 3] = "CommonJS"; + })(a = e.ImportKind || (e.ImportKind = {})); + var C; + (function(T) { + T[T.Named = 0] = "Named", T[T.Default = 1] = "Default", T[T.ExportEquals = 2] = "ExportEquals", T[T.UMD = 3] = "UMD"; + })(C = e.ExportKind || (e.ExportKind = {})); + function w(T) { + var K = 1, b = e.createMultiMap(), se = new e.Map(), J = new e.Map(), ie, R = { isUsableByFile: function(x) { + return x === ie; + }, isEmpty: function() { + return !b.size; + }, clear: function() { + b.clear(), se.clear(), ie = void 0; + }, add: function(x, X, $, A, y, V, L, P) { + x !== ie && (R.clear(), ie = x); + var k; + if (y) { + var Y = e.getNodeModulePathParts(y.fileName); + if (Y) { + var U = Y.topLevelNodeModulesIndex, j = Y.topLevelPackageNameIndex, H = Y.packageRootIndex; + if (k = e.unmangleScopedPackageName(e.getPackageNameFromTypesPackageName(y.fileName.substring(j + 1, H))), e.startsWith(x, y.path.substring(0, U))) { + var I = J.get(k), l = y.fileName.substring(0, j + 1); + if (I) { + var d = I.indexOf(e.nodeModulesPathPart); + U > d && J.set(k, l); + } else + J.set(k, l); + } + } + } + var D = V === 1, fe = D && e.getLocalSymbolForExportDefault(X) || X, g = V === 0 || e.isExternalModuleSymbol(fe) ? e.unescapeLeadingUnderscores($) : e.getNamesForExportedSymbol(fe, void 0), ne = typeof g == "string" ? g : g[0], ue = typeof g == "string" ? void 0 : g[1], We = e.stripQuotes(A.name), Fe = K++, Z = e.skipAlias(X, P), Be = X.flags & 33554432 ? void 0 : X, ge = A.flags & 33554432 ? void 0 : A; + (!Be || !ge) && se.set(Fe, [X, A]), b.add(O(ne, X, e.isExternalModuleNameRelative(We) ? void 0 : We, P), { id: Fe, symbolTableKey: $, symbolName: ne, capitalizedSymbolName: ue, moduleName: We, moduleFile: y, moduleFileName: y == null ? void 0 : y.fileName, packageName: k, exportKind: V, targetFlags: Z.flags, isFromPackageJson: L, symbol: Be, moduleSymbol: ge }); + }, get: function(x, X) { + if (x === ie) { + var $ = b.get(X); + return $ == null ? void 0 : $.map(q); + } + }, search: function(x, X, $, A) { + x === ie && b.forEach(function(y, V) { + var L = ve(V), P = L.symbolName, k = L.ambientModuleName, Y = X && y[0].capitalizedSymbolName || P; + if ($(Y, y[0].targetFlags)) { + var U = y.map(q), j = U.filter(function(H, I) { + return F(H, y[I].packageName); + }); + j.length && A(j, Y, !!k, V); + } + }); + }, releaseSymbols: function() { + se.clear(); + }, onFileChanged: function(x, X, $) { + return ee(x) && ee(X) ? false : ie && ie !== X.path || $ && e.consumesNodeCoreModules(x) !== e.consumesNodeCoreModules(X) || !e.arrayIsEqualTo(x.moduleAugmentations, X.moduleAugmentations) || !he(x, X) ? (R.clear(), true) : (ie = X.path, false); + } }; + return e.Debug.isDebugging && Object.defineProperty(R, "__cache", { get: function() { + return b; + } }), R; + function q(x) { + if (x.symbol && x.moduleSymbol) + return x; + var X = x.id, $ = x.exportKind, A = x.targetFlags, y = x.isFromPackageJson, V = x.moduleFileName, L = se.get(X) || e.emptyArray, P = L[0], k = L[1]; + if (P && k) + return { symbol: P, moduleSymbol: k, moduleFileName: V, exportKind: $, targetFlags: A, isFromPackageJson: y }; + var Y = (y ? T.getPackageJsonAutoImportProvider() : T.getCurrentProgram()).getTypeChecker(), U = x.moduleSymbol || k || e.Debug.checkDefined(x.moduleFile ? Y.getMergedSymbol(x.moduleFile.symbol) : Y.tryFindAmbientModule(x.moduleName)), j = x.symbol || P || e.Debug.checkDefined($ === 2 ? Y.resolveExternalModuleSymbol(U) : Y.tryGetMemberInModuleExportsAndProperties(e.unescapeLeadingUnderscores(x.symbolTableKey), U), "Could not find symbol '".concat(x.symbolName, "' by key '").concat(x.symbolTableKey, "' in module ").concat(U.name)); + return se.set(X, [j, U]), { symbol: j, moduleSymbol: U, moduleFileName: V, exportKind: $, targetFlags: A, isFromPackageJson: y }; + } + function O(x, X, $, A) { + var y = $ || ""; + return "".concat(x, "|").concat(e.getSymbolId(e.skipAlias(X, A)), "|").concat(y); + } + function ve(x) { + var X = x.substring(0, x.indexOf("|")), $ = x.substring(x.lastIndexOf("|") + 1), A = $ === "" ? void 0 : $; + return { symbolName: X, ambientModuleName: A }; + } + function ee(x) { + return !x.commonJsModuleIndicator && !x.externalModuleIndicator && !x.moduleAugmentations && !x.ambientModuleNames; + } + function he(x, X) { + if (!e.arrayIsEqualTo(x.ambientModuleNames, X.ambientModuleNames)) + return false; + for (var $ = -1, A = -1, y = function(Y) { + var U = function(j) { + return e.isNonGlobalAmbientModule(j) && j.name.text === Y; + }; + if ($ = e.findIndex(x.statements, U, $ + 1), A = e.findIndex(X.statements, U, A + 1), x.statements[$] !== X.statements[A]) + return { value: false }; + }, V = 0, L = X.ambientModuleNames; V < L.length; V++) { + var P = L[V], k = y(P); + if (typeof k == "object") + return k.value; + } + return true; + } + function F(x, X) { + if (!X || !x.moduleFileName) + return true; + var $ = T.getGlobalTypingsCacheLocation(); + if ($ && e.startsWith(x.moduleFileName, $)) + return true; + var A = J.get(X); + return !A || e.startsWith(x.moduleFileName, A); + } + } + e.createCacheableExportInfoMap = w; + function B(T, K, b, se, J, ie, R) { + var q; + if (K === b) + return false; + var O = R == null ? void 0 : R.get(K.path, b.path, se, {}); + if ((O == null ? void 0 : O.isBlockedByPackageJsonDependencies) !== void 0) + return !O.isBlockedByPackageJsonDependencies; + var ve = e.hostGetCanonicalFileName(ie), ee = (q = ie.getGlobalTypingsCacheLocation) === null || q === void 0 ? void 0 : q.call(ie), he = !!e.moduleSpecifiers.forEachFileNameOfModule(K.fileName, b.fileName, ie, false, function(x) { + var X = T.getSourceFile(x); + return (X === b || !X) && E(K.fileName, x, ve, ee); + }); + if (J) { + var F = he && J.allowsImportingSourceFile(b, ie); + return R == null || R.setBlockedByPackageJsonDependencies(K.path, b.path, se, {}, !F), F; + } + return he; + } + e.isImportableFile = B; + function E(T, K, b, se) { + var J = e.forEachAncestorDirectory(K, function(R) { + return e.getBaseFileName(R) === "node_modules" ? R : void 0; + }), ie = J && e.getDirectoryPath(b(J)); + return ie === void 0 || e.startsWith(b(T), ie) || !!se && e.startsWith(b(se), ie); + } + function Q(T, K, b, se) { + var J, ie; + le(T.getTypeChecker(), T.getSourceFiles(), function(O, ve) { + return se(O, ve, T, false); + }); + var R = b && ((J = K.getPackageJsonAutoImportProvider) === null || J === void 0 ? void 0 : J.call(K)); + if (R) { + var q = e.timestamp(); + le(R.getTypeChecker(), R.getSourceFiles(), function(O, ve) { + return se(O, ve, R, true); + }), (ie = K.log) === null || ie === void 0 || ie.call(K, "forEachExternalModuleToImportFrom autoImportProvider: ".concat(e.timestamp() - q)); + } + } + e.forEachExternalModuleToImportFrom = Q; + function le(T, K, b) { + for (var se = 0, J = T.getAmbientModules(); se < J.length; se++) { + var ie = J[se]; + e.stringContains(ie.name, "*") || b(ie, void 0); + } + for (var R = 0, q = K; R < q.length; R++) { + var O = q[R]; + e.isExternalOrCommonJsModule(O) && b(T.getMergedSymbol(O.symbol), O); + } + } + function N(T, K, b, se) { + var J, ie, R, q, O, ve = e.timestamp(); + (J = K.getPackageJsonAutoImportProvider) === null || J === void 0 || J.call(K); + var ee = ((ie = K.getCachedExportInfoMap) === null || ie === void 0 ? void 0 : ie.call(K)) || w({ getCurrentProgram: function() { + return b; + }, getPackageJsonAutoImportProvider: function() { + var x; + return (x = K.getPackageJsonAutoImportProvider) === null || x === void 0 ? void 0 : x.call(K); + }, getGlobalTypingsCacheLocation: function() { + var x; + return (x = K.getGlobalTypingsCacheLocation) === null || x === void 0 ? void 0 : x.call(K); + } }); + if (ee.isUsableByFile(T.path)) + return (R = K.log) === null || R === void 0 || R.call(K, "getExportInfoMap: cache hit"), ee; + (q = K.log) === null || q === void 0 || q.call(K, "getExportInfoMap: cache miss or empty; calculating new results"); + var he = b.getCompilerOptions(), F = 0; + try { + Q(b, K, true, function(x, X, $, A) { + ++F % 100 === 0 && (se == null || se.throwIfCancellationRequested()); + var y = new e.Map(), V = $.getTypeChecker(), L = p(x, V, he); + L && m(L.symbol, V) && ee.add(T.path, L.symbol, L.exportKind === 1 ? "default" : "export=", x, X, L.exportKind, A, V), V.forEachExportAndPropertyOfModule(x, function(P, k) { + P !== (L == null ? void 0 : L.symbol) && m(P, V) && e.addToSeen(y, k) && ee.add(T.path, P, k, x, X, 0, A, V); + }); + }); + } catch (x) { + throw ee.clear(), x; + } + return (O = K.log) === null || O === void 0 || O.call(K, "getExportInfoMap: done in ".concat(e.timestamp() - ve, " ms")), ee; + } + e.getExportInfoMap = N; + function p(T, K, b) { + var se = G(T, K); + if (!!se) { + var J = se.symbol, ie = se.exportKind, R = oe(J, K, b); + return R && Ke({ symbol: J, exportKind: ie }, R); + } + } + e.getDefaultLikeExportInfo = p; + function m(T, K) { + return !K.isUndefinedSymbol(T) && !K.isUnknownSymbol(T) && !e.isKnownSymbol(T) && !e.isPrivateIdentifierSymbol(T); + } + function G(T, K) { + var b = K.resolveExternalModuleSymbol(T); + if (b !== T) + return { symbol: b, exportKind: 2 }; + var se = K.tryGetMemberInModuleExports("default", T); + if (se) + return { symbol: se, exportKind: 1 }; + } + function oe(T, K, b) { + var se = e.getLocalSymbolForExportDefault(T); + if (se) + return { symbolForMeaning: se, name: se.name }; + var J = f(T); + if (J !== void 0) + return { symbolForMeaning: T, name: J }; + if (T.flags & 2097152) { + var ie = K.getImmediateAliasedSymbol(T); + if (ie && ie.parent) + return oe(ie, K, b); + } + return T.escapedName !== "default" && T.escapedName !== "export=" ? { symbolForMeaning: T, name: T.getName() } : { symbolForMeaning: T, name: e.getNameForExportedSymbol(T, b.target) }; + } + function f(T) { + return T.declarations && e.firstDefined(T.declarations, function(K) { + var b; + if (e.isExportAssignment(K)) + return (b = e.tryCast(e.skipOuterExpressions(K.expression), e.isIdentifier)) === null || b === void 0 ? void 0 : b.text; + if (e.isExportSpecifier(K)) + return e.Debug.assert(K.name.text === "default", "Expected the specifier to be a default export"), K.propertyName && K.propertyName.text; + }); + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a() { + var q = e.createScanner(99, false); + function O(ee, he, F) { + return E(ve(ee, he, F), ee); + } + function ve(ee, he, F) { + var x = 0, X = 0, $ = [], A = N(he), y = A.prefix, V = A.pushTemplate; + ee = y + ee; + var L = y.length; + V && $.push(15), q.setText(ee); + var P = 0, k = [], Y = 0; + do { + x = q.scan(), e.isTrivia(x) || (H(), X = x); + var U = q.getTextPos(); + if (B(q.getTokenPos(), U, L, G(x), k), U >= ee.length) { + var j = w(q, x, e.lastOrUndefined($)); + j !== void 0 && (P = j); + } + } while (x !== 1); + function H() { + switch (x) { + case 43: + case 68: + !C[X] && q.reScanSlashToken() === 13 && (x = 13); + break; + case 29: + X === 79 && Y++; + break; + case 31: + Y > 0 && Y--; + break; + case 130: + case 150: + case 147: + case 133: + case 151: + Y > 0 && !F && (x = 79); + break; + case 15: + $.push(x); + break; + case 18: + $.length > 0 && $.push(x); + break; + case 19: + if ($.length > 0) { + var I = e.lastOrUndefined($); + I === 15 ? (x = q.reScanTemplateToken(false), x === 17 ? $.pop() : e.Debug.assertEqual(x, 16, "Should have been a template middle.")) : (e.Debug.assertEqual(I, 18, "Should have been an open brace"), $.pop()); + } + break; + default: + if (!e.isKeyword(x)) + break; + (X === 24 || e.isKeyword(X) && e.isKeyword(x) && !le(X, x)) && (x = 79); + } + } + return { endOfLineState: P, spans: k }; + } + return { getClassificationsForLine: O, getEncodedLexicalClassifications: ve }; + } + e.createClassifier = a; + var C = e.arrayToNumericMap([79, 10, 8, 9, 13, 108, 45, 46, 21, 23, 19, 110, 95], function(q) { + return q; + }, function() { + return true; + }); + function w(q, O, ve) { + switch (O) { + case 10: { + if (!q.isUnterminated()) + return; + for (var ee = q.getTokenText(), he = ee.length - 1, F = 0; ee.charCodeAt(he - F) === 92; ) + F++; + return (F & 1) === 0 ? void 0 : ee.charCodeAt(0) === 34 ? 3 : 2; + } + case 3: + return q.isUnterminated() ? 1 : void 0; + default: + if (e.isTemplateLiteralKind(O)) { + if (!q.isUnterminated()) + return; + switch (O) { + case 17: + return 5; + case 14: + return 4; + default: + return e.Debug.fail("Only 'NoSubstitutionTemplateLiteral's and 'TemplateTail's can be unterminated; got SyntaxKind #" + O); + } + } + return ve === 15 ? 6 : void 0; + } + } + function B(q, O, ve, ee, he) { + if (ee !== 8) { + q === 0 && ve > 0 && (q += ve); + var F = O - q; + F > 0 && he.push(q - ve, F, ee); + } + } + function E(q, O) { + for (var ve = [], ee = q.spans, he = 0, F = 0; F < ee.length; F += 3) { + var x = ee[F], X = ee[F + 1], $ = ee[F + 2]; + if (he >= 0) { + var A = x - he; + A > 0 && ve.push({ length: A, classification: e.TokenClass.Whitespace }); + } + ve.push({ length: X, classification: Q($) }), he = x + X; + } + var y = O.length - he; + return y > 0 && ve.push({ length: y, classification: e.TokenClass.Whitespace }), { entries: ve, finalLexState: q.endOfLineState }; + } + function Q(q) { + switch (q) { + case 1: + return e.TokenClass.Comment; + case 3: + return e.TokenClass.Keyword; + case 4: + return e.TokenClass.NumberLiteral; + case 25: + return e.TokenClass.BigIntLiteral; + case 5: + return e.TokenClass.Operator; + case 6: + return e.TokenClass.StringLiteral; + case 8: + return e.TokenClass.Whitespace; + case 10: + return e.TokenClass.Punctuation; + case 2: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 9: + case 17: + return e.TokenClass.Identifier; + default: + return; + } + } + function le(q, O) { + if (!e.isAccessibilityModifier(q)) + return true; + switch (O) { + case 136: + case 149: + case 134: + case 124: + return true; + default: + return false; + } + } + function N(q) { + switch (q) { + case 3: + return { prefix: `"\\ +` }; + case 2: + return { prefix: `'\\ +` }; + case 1: + return { prefix: `/* +` }; + case 4: + return { prefix: "`\n" }; + case 5: + return { prefix: `} +`, pushTemplate: true }; + case 6: + return { prefix: "", pushTemplate: true }; + case 0: + return { prefix: "" }; + default: + return e.Debug.assertNever(q); + } + } + function p(q) { + switch (q) { + case 41: + case 43: + case 44: + case 39: + case 40: + case 47: + case 48: + case 49: + case 29: + case 31: + case 32: + case 33: + case 102: + case 101: + case 127: + case 34: + case 35: + case 36: + case 37: + case 50: + case 52: + case 51: + case 55: + case 56: + case 74: + case 73: + case 78: + case 70: + case 71: + case 72: + case 64: + case 65: + case 66: + case 68: + case 69: + case 63: + case 27: + case 60: + case 75: + case 76: + case 77: + return true; + default: + return false; + } + } + function m(q) { + switch (q) { + case 39: + case 40: + case 54: + case 53: + case 45: + case 46: + return true; + default: + return false; + } + } + function G(q) { + if (e.isKeyword(q)) + return 3; + if (p(q) || m(q)) + return 5; + if (q >= 18 && q <= 78) + return 10; + switch (q) { + case 8: + return 4; + case 9: + return 25; + case 10: + return 6; + case 13: + return 7; + case 7: + case 3: + case 2: + return 1; + case 5: + case 4: + return 8; + case 79: + default: + return e.isTemplateLiteralKind(q) ? 6 : 2; + } + } + function oe(q, O, ve, ee, he) { + return J(T(q, O, ve, ee, he)); + } + e.getSemanticClassifications = oe; + function f(q, O) { + switch (O) { + case 261: + case 257: + case 258: + case 256: + case 226: + case 213: + case 214: + q.throwIfCancellationRequested(); + } + } + function T(q, O, ve, ee, he) { + var F = []; + return ve.forEachChild(function X($) { + if (!(!$ || !e.textSpanIntersectsWith(he, $.pos, $.getFullWidth()))) { + if (f(O, $.kind), e.isIdentifier($) && !e.nodeIsMissing($) && ee.has($.escapedText)) { + var A = q.getSymbolAtLocation($), y = A && K(A, e.getMeaningFromLocation($), q); + y && x($.getStart(ve), $.getEnd(), y); + } + $.forEachChild(X); + } + }), { spans: F, endOfLineState: 0 }; + function x(X, $, A) { + var y = $ - X; + e.Debug.assert(y > 0, "Classification had non-positive length of ".concat(y)), F.push(X), F.push(y), F.push(A); + } + } + e.getEncodedSemanticClassifications = T; + function K(q, O, ve) { + var ee = q.getFlags(); + if ((ee & 2885600) !== 0) + return ee & 32 ? 11 : ee & 384 ? 12 : ee & 524288 ? 16 : ee & 1536 ? O & 4 || O & 1 && b(q) ? 14 : void 0 : ee & 2097152 ? K(ve.getAliasedSymbol(q), O, ve) : O & 2 ? ee & 64 ? 13 : ee & 262144 ? 15 : void 0 : void 0; + } + function b(q) { + return e.some(q.declarations, function(O) { + return e.isModuleDeclaration(O) && e.getModuleInstanceState(O) === 1; + }); + } + function se(q) { + switch (q) { + case 1: + return "comment"; + case 2: + return "identifier"; + case 3: + return "keyword"; + case 4: + return "number"; + case 25: + return "bigint"; + case 5: + return "operator"; + case 6: + return "string"; + case 8: + return "whitespace"; + case 9: + return "text"; + case 10: + return "punctuation"; + case 11: + return "class name"; + case 12: + return "enum name"; + case 13: + return "interface name"; + case 14: + return "module name"; + case 15: + return "type parameter name"; + case 16: + return "type alias name"; + case 17: + return "parameter name"; + case 18: + return "doc comment tag name"; + case 19: + return "jsx open tag name"; + case 20: + return "jsx close tag name"; + case 21: + return "jsx self closing tag name"; + case 22: + return "jsx attribute"; + case 23: + return "jsx text"; + case 24: + return "jsx attribute string literal value"; + default: + return; + } + } + function J(q) { + e.Debug.assert(q.spans.length % 3 === 0); + for (var O = q.spans, ve = [], ee = 0; ee < O.length; ee += 3) + ve.push({ textSpan: e.createTextSpan(O[ee], O[ee + 1]), classificationType: se(O[ee + 2]) }); + return ve; + } + function ie(q, O, ve) { + return J(R(q, O, ve)); + } + e.getSyntacticClassifications = ie; + function R(q, O, ve) { + var ee = ve.start, he = ve.length, F = e.createScanner(99, false, O.languageVariant, O.text), x = e.createScanner(99, false, O.languageVariant, O.text), X = []; + return l(O), { spans: X, endOfLineState: 0 }; + function $(d, D, fe) { + X.push(d), X.push(D), X.push(fe); + } + function A(d) { + for (F.setTextPos(d.pos); ; ) { + var D = F.getTextPos(); + if (!e.couldStartTrivia(O.text, D)) + return D; + var fe = F.scan(), g = F.getTextPos(), ne = g - D; + if (!e.isTrivia(fe)) + return D; + switch (fe) { + case 4: + case 5: + continue; + case 2: + case 3: + y(d, fe, D, ne), F.setTextPos(g); + continue; + case 7: + var ue = O.text, We = ue.charCodeAt(D); + if (We === 60 || We === 62) { + $(D, ne, 1); + continue; + } + e.Debug.assert(We === 124 || We === 61), Y(ue, D, g); + break; + case 6: + break; + default: + e.Debug.assertNever(fe); + } + } + } + function y(d, D, fe, g) { + if (D === 3) { + var ne = e.parseIsolatedJSDocComment(O.text, fe, g); + if (ne && ne.jsDoc) { + e.setParent(ne.jsDoc, d), L(ne.jsDoc); + return; + } + } else if (D === 2 && P(fe, g)) + return; + V(fe, g); + } + function V(d, D) { + $(d, D, 1); + } + function L(d) { + var D, fe, g, ne, ue, We, Fe, Z = d.pos; + if (d.tags) + for (var Be = 0, ge = d.tags; Be < ge.length; Be++) { + var Re = ge[Be]; + Re.pos !== Z && V(Z, Re.pos - Z), $(Re.pos, 1, 10), $(Re.tagName.pos, Re.tagName.end - Re.tagName.pos, 18), Z = Re.tagName.end; + var ze = Re.tagName.end; + switch (Re.kind) { + case 340: + var Ee = Re; + Ie(Ee), ze = Ee.isNameFirst && ((D = Ee.typeExpression) === null || D === void 0 ? void 0 : D.end) || Ee.name.end; + break; + case 347: + var He = Re; + ze = He.isNameFirst && ((fe = He.typeExpression) === null || fe === void 0 ? void 0 : fe.end) || He.name.end; + break; + case 344: + k(Re), Z = Re.end, ze = Re.typeParameters.end; + break; + case 345: + var rr = Re; + ze = ((g = rr.typeExpression) === null || g === void 0 ? void 0 : g.kind) === 309 && ((ne = rr.fullName) === null || ne === void 0 ? void 0 : ne.end) || ((ue = rr.typeExpression) === null || ue === void 0 ? void 0 : ue.end) || ze; + break; + case 338: + ze = Re.typeExpression.end; + break; + case 343: + l(Re.typeExpression), Z = Re.end, ze = Re.typeExpression.end; + break; + case 342: + case 339: + ze = Re.typeExpression.end; + break; + case 341: + l(Re.typeExpression), Z = Re.end, ze = ((We = Re.typeExpression) === null || We === void 0 ? void 0 : We.end) || ze; + break; + case 346: + ze = ((Fe = Re.name) === null || Fe === void 0 ? void 0 : Fe.end) || ze; + break; + case 328: + case 329: + ze = Re.class.end; + break; + } + typeof Re.comment == "object" ? V(Re.comment.pos, Re.comment.end - Re.comment.pos) : typeof Re.comment == "string" && V(ze, Re.end - ze); + } + Z !== d.end && V(Z, d.end - Z); + return; + function Ie(_e) { + _e.isNameFirst && (V(Z, _e.name.pos - Z), $(_e.name.pos, _e.name.end - _e.name.pos, 17), Z = _e.name.end), _e.typeExpression && (V(Z, _e.typeExpression.pos - Z), l(_e.typeExpression), Z = _e.typeExpression.end), _e.isNameFirst || (V(Z, _e.name.pos - Z), $(_e.name.pos, _e.name.end - _e.name.pos, 17), Z = _e.name.end); + } + } + function P(d, D) { + var fe = /^(\/\/\/\s*)(<)(?:(\S+)((?:[^/]|\/[^>])*)(\/>)?)?/im, g = /(\s)(\S+)(\s*)(=)(\s*)('[^']+'|"[^"]+")/img, ne = O.text.substr(d, D), ue = fe.exec(ne); + if (!ue || !ue[3] || !(ue[3] in e.commentPragmas)) + return false; + var We = d; + V(We, ue[1].length), We += ue[1].length, $(We, ue[2].length, 10), We += ue[2].length, $(We, ue[3].length, 21), We += ue[3].length; + for (var Fe = ue[4], Z = We; ; ) { + var Be = g.exec(Fe); + if (!Be) + break; + var ge = We + Be.index + Be[1].length; + ge > Z && (V(Z, ge - Z), Z = ge), $(Z, Be[2].length, 22), Z += Be[2].length, Be[3].length && (V(Z, Be[3].length), Z += Be[3].length), $(Z, Be[4].length, 5), Z += Be[4].length, Be[5].length && (V(Z, Be[5].length), Z += Be[5].length), $(Z, Be[6].length, 24), Z += Be[6].length; + } + We += ue[4].length, We > Z && V(Z, We - Z), ue[5] && ($(We, ue[5].length, 10), We += ue[5].length); + var Re = d + D; + return We < Re && V(We, Re - We), true; + } + function k(d) { + for (var D = 0, fe = d.getChildren(); D < fe.length; D++) { + var g = fe[D]; + l(g); + } + } + function Y(d, D, fe) { + var g; + for (g = D; g < fe && !e.isLineBreak(d.charCodeAt(g)); g++) + ; + for ($(D, g - D, 1), x.setTextPos(g); x.getTextPos() < fe; ) + U(); + } + function U() { + var d = x.getTextPos(), D = x.scan(), fe = x.getTextPos(), g = I(D); + g && $(d, fe - d, g); + } + function j(d) { + if (e.isJSDoc(d) || e.nodeIsMissing(d)) + return true; + var D = H(d); + if (!e.isToken(d) && d.kind !== 11 && D === void 0) + return false; + var fe = d.kind === 11 ? d.pos : A(d), g = d.end - fe; + if (e.Debug.assert(g >= 0), g > 0) { + var ne = D || I(d.kind, d); + ne && $(fe, g, ne); + } + return true; + } + function H(d) { + switch (d.parent && d.parent.kind) { + case 280: + if (d.parent.tagName === d) + return 19; + break; + case 281: + if (d.parent.tagName === d) + return 20; + break; + case 279: + if (d.parent.tagName === d) + return 21; + break; + case 285: + if (d.parent.name === d) + return 22; + break; + } + } + function I(d, D) { + if (e.isKeyword(d)) + return 3; + if ((d === 29 || d === 31) && D && e.getTypeArgumentOrTypeParameterList(D.parent)) + return 10; + if (e.isPunctuation(d)) { + if (D) { + var fe = D.parent; + if (d === 63 && (fe.kind === 254 || fe.kind === 167 || fe.kind === 164 || fe.kind === 285) || fe.kind === 221 || fe.kind === 219 || fe.kind === 220 || fe.kind === 222) + return 5; + } + return 10; + } else { + if (d === 8) + return 4; + if (d === 9) + return 25; + if (d === 10) + return D && D.parent.kind === 285 ? 24 : 6; + if (d === 13) + return 6; + if (e.isTemplateLiteralKind(d)) + return 6; + if (d === 11) + return 23; + if (d === 79) { + if (D) { + switch (D.parent.kind) { + case 257: + return D.parent.name === D ? 11 : void 0; + case 163: + return D.parent.name === D ? 15 : void 0; + case 258: + return D.parent.name === D ? 13 : void 0; + case 260: + return D.parent.name === D ? 12 : void 0; + case 261: + return D.parent.name === D ? 14 : void 0; + case 164: + return D.parent.name === D ? e.isThisIdentifier(D) ? 3 : 17 : void 0; + } + if (e.isConstTypeReference(D.parent)) + return 3; + } + return 2; + } + } + } + function l(d) { + if (!!d && e.decodedTextSpanIntersectsWith(ee, he, d.pos, d.getFullWidth())) { + f(q, d.kind); + for (var D = 0, fe = d.getChildren(O); D < fe.length; D++) { + var g = fe[D]; + j(g) || l(g); + } + } + } + } + e.getEncodedSyntacticClassifications = R; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E; + (function(R) { + R[R.typeOffset = 8] = "typeOffset", R[R.modifierMask = 255] = "modifierMask"; + })(E = B.TokenEncodingConsts || (B.TokenEncodingConsts = {})); + var Q; + (function(R) { + R[R.class = 0] = "class", R[R.enum = 1] = "enum", R[R.interface = 2] = "interface", R[R.namespace = 3] = "namespace", R[R.typeParameter = 4] = "typeParameter", R[R.type = 5] = "type", R[R.parameter = 6] = "parameter", R[R.variable = 7] = "variable", R[R.enumMember = 8] = "enumMember", R[R.property = 9] = "property", R[R.function = 10] = "function", R[R.member = 11] = "member"; + })(Q = B.TokenType || (B.TokenType = {})); + var le; + (function(R) { + R[R.declaration = 0] = "declaration", R[R.static = 1] = "static", R[R.async = 2] = "async", R[R.readonly = 3] = "readonly", R[R.defaultLibrary = 4] = "defaultLibrary", R[R.local = 5] = "local"; + })(le = B.TokenModifier || (B.TokenModifier = {})); + function N(R, q, O, ve) { + var ee = p(R, q, O, ve); + e.Debug.assert(ee.spans.length % 3 === 0); + for (var he = ee.spans, F = [], x = 0; x < he.length; x += 3) + F.push({ textSpan: e.createTextSpan(he[x], he[x + 1]), classificationType: he[x + 2] }); + return F; + } + B.getSemanticClassifications = N; + function p(R, q, O, ve) { + return { spans: m(R, O, ve, q), endOfLineState: 0 }; + } + B.getEncodedSemanticClassifications = p; + function m(R, q, O, ve) { + var ee = [], he = function(F, x, X) { + ee.push(F.getStart(q), F.getWidth(q), (x + 1 << 8) + X); + }; + return R && q && G(R, q, O, he, ve), ee; + } + function G(R, q, O, ve, ee) { + var he = R.getTypeChecker(), F = false; + function x(X) { + switch (X.kind) { + case 261: + case 257: + case 258: + case 256: + case 226: + case 213: + case 214: + ee.throwIfCancellationRequested(); + } + if (!(!X || !e.textSpanIntersectsWith(O, X.pos, X.getFullWidth()) || X.getFullWidth() === 0)) { + var $ = F; + if ((e.isJsxElement(X) || e.isJsxSelfClosingElement(X)) && (F = true), e.isJsxExpression(X) && (F = false), e.isIdentifier(X) && !F && !b(X) && !e.isInfinityOrNaNString(X.escapedText)) { + var A = he.getSymbolAtLocation(X); + if (A) { + A.flags & 2097152 && (A = he.getAliasedSymbol(A)); + var y = oe(A, e.getMeaningFromLocation(X)); + if (y !== void 0) { + var V = 0; + if (X.parent) { + var L = e.isBindingElement(X.parent) || ie.get(X.parent.kind) === y; + L && X.parent.name === X && (V = 1 << 0); + } + y === 6 && J(X) && (y = 9), y = f(he, X, y); + var P = A.valueDeclaration; + if (P) { + var k = e.getCombinedModifierFlags(P), Y = e.getCombinedNodeFlags(P); + k & 32 && (V |= 1 << 1), k & 256 && (V |= 1 << 2), y !== 0 && y !== 2 && (k & 64 || Y & 2 || A.getFlags() & 8) && (V |= 1 << 3), (y === 7 || y === 10) && T(P, q) && (V |= 1 << 5), R.isSourceFileDefaultLibrary(P.getSourceFile()) && (V |= 1 << 4); + } else + A.declarations && A.declarations.some(function(U) { + return R.isSourceFileDefaultLibrary(U.getSourceFile()); + }) && (V |= 1 << 4); + ve(X, y, V); + } + } + } + e.forEachChild(X, x), F = $; + } + } + x(q); + } + function oe(R, q) { + var O = R.getFlags(); + if (O & 32) + return 0; + if (O & 384) + return 1; + if (O & 524288) + return 5; + if (O & 64) { + if (q & 2) + return 2; + } else if (O & 262144) + return 4; + var ve = R.valueDeclaration || R.declarations && R.declarations[0]; + return ve && e.isBindingElement(ve) && (ve = K(ve)), ve && ie.get(ve.kind); + } + function f(R, q, O) { + if (O === 7 || O === 9 || O === 6) { + var ve = R.getTypeAtLocation(q); + if (ve) { + var ee = function(he) { + return he(ve) || ve.isUnion() && ve.types.some(he); + }; + if (O !== 6 && ee(function(he) { + return he.getConstructSignatures().length > 0; + })) + return 0; + if (ee(function(he) { + return he.getCallSignatures().length > 0; + }) && !ee(function(he) { + return he.getProperties().length > 0; + }) || se(q)) + return O === 9 ? 11 : 10; + } + } + return O; + } + function T(R, q) { + return e.isBindingElement(R) && (R = K(R)), e.isVariableDeclaration(R) ? (!e.isSourceFile(R.parent.parent.parent) || e.isCatchClause(R.parent)) && R.getSourceFile() === q : e.isFunctionDeclaration(R) ? !e.isSourceFile(R.parent) && R.getSourceFile() === q : false; + } + function K(R) { + for (; ; ) + if (e.isBindingElement(R.parent.parent)) + R = R.parent.parent; + else + return R.parent.parent; + } + function b(R) { + var q = R.parent; + return q && (e.isImportClause(q) || e.isImportSpecifier(q) || e.isNamespaceImport(q)); + } + function se(R) { + for (; J(R); ) + R = R.parent; + return e.isCallExpression(R.parent) && R.parent.expression === R; + } + function J(R) { + return e.isQualifiedName(R.parent) && R.parent.right === R || e.isPropertyAccessExpression(R.parent) && R.parent.name === R; + } + var ie = new e.Map([[254, 7], [164, 6], [167, 9], [261, 3], [260, 1], [299, 8], [257, 0], [169, 11], [256, 10], [213, 10], [168, 11], [172, 9], [173, 9], [166, 9], [258, 2], [259, 5], [163, 4], [296, 9], [297, 9]]); + })(w = C.v2020 || (C.v2020 = {})); + })(a = e.classifier || (e.classifier = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + function E(Z, Be, ge, Re, ze, Ee, He, rr) { + if (e.isInReferenceComment(Z, Be)) { + var Ie = l(Z, Be, Re, ze); + return Ie && p(Ie); + } + if (e.isInString(Z, Be, ge)) { + if (!ge || !e.isStringLiteralLike(ge)) + return; + var Ie = oe(Z, ge, Be, Ee.getTypeChecker(), Re, ze, rr); + return Q(Ie, ge, Z, ze, Ee, He, Re, rr); + } + } + B.getStringLiteralCompletions = E; + function Q(Z, Be, ge, Re, ze, Ee, He, rr) { + if (Z !== void 0) { + var Ie = e.createTextSpanFromStringLiteralLikeContent(Be); + switch (Z.kind) { + case 0: + return p(Z.paths); + case 1: { + var _e = e.createSortedArray(); + return C.getCompletionEntriesFromSymbols(Z.symbols, _e, Be, Be, ge, ge, Re, ze, 99, Ee, 4, rr, He, void 0), { isGlobalCompletion: false, isMemberCompletion: true, isNewIdentifierLocation: Z.hasIndexSignature, optionalReplacementSpan: Ie, entries: _e }; + } + case 2: { + var _e = Z.types.map(function(de) { + return { name: de.value, kindModifiers: "", kind: "string", sortText: C.SortText.LocationPriority, replacementSpan: e.getReplacementSpanForContextToken(Be) }; + }); + return { isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: Z.isNewIdentifier, optionalReplacementSpan: Ie, entries: _e }; + } + default: + return e.Debug.assertNever(Z); + } + } + } + function le(Z, Be, ge, Re, ze, Ee, He, rr, Ie) { + if (!(!Re || !e.isStringLiteralLike(Re))) { + var _e = oe(Be, Re, ge, ze, Ee, He, Ie); + return _e && N(Z, Re, _e, Be, ze, rr); + } + } + B.getStringLiteralCompletionDetails = le; + function N(Z, Be, ge, Re, ze, Ee) { + switch (ge.kind) { + case 0: { + var He = e.find(ge.paths, function(rr) { + return rr.name === Z; + }); + return He && C.createCompletionDetails(Z, m(He.extension), He.kind, [e.textPart(Z)]); + } + case 1: { + var He = e.find(ge.symbols, function(Ie) { + return Ie.name === Z; + }); + return He && C.createCompletionDetailsForSymbol(He, ze, Re, Be, Ee); + } + case 2: + return e.find(ge.types, function(rr) { + return rr.value === Z; + }) ? C.createCompletionDetails(Z, "", "type", [e.textPart(Z)]) : void 0; + default: + return e.Debug.assertNever(ge); + } + } + function p(Z) { + var Be = false, ge = true, Re = Z.map(function(ze) { + var Ee = ze.name, He = ze.kind, rr = ze.span, Ie = ze.extension; + return { name: Ee, kind: He, kindModifiers: m(Ie), sortText: C.SortText.LocationPriority, replacementSpan: rr }; + }); + return { isGlobalCompletion: Be, isMemberCompletion: false, isNewIdentifierLocation: ge, entries: Re }; + } + function m(Z) { + switch (Z) { + case ".d.ts": + return ".d.ts"; + case ".js": + return ".js"; + case ".json": + return ".json"; + case ".jsx": + return ".jsx"; + case ".ts": + return ".ts"; + case ".tsx": + return ".tsx"; + case ".d.mts": + return ".d.mts"; + case ".mjs": + return ".mjs"; + case ".mts": + return ".mts"; + case ".d.cts": + return ".d.cts"; + case ".cjs": + return ".cjs"; + case ".cts": + return ".cts"; + case ".tsbuildinfo": + return e.Debug.fail("Extension ".concat(".tsbuildinfo", " is unsupported.")); + case void 0: + return ""; + default: + return e.Debug.assertNever(Z); + } + } + var G; + (function(Z) { + Z[Z.Paths = 0] = "Paths", Z[Z.Properties = 1] = "Properties", Z[Z.Types = 2] = "Types"; + })(G || (G = {})); + function oe(Z, Be, ge, Re, ze, Ee, He) { + var rr = f(Be.parent); + switch (rr.kind) { + case 196: { + var Ie = f(rr.parent); + switch (Ie.kind) { + case 178: { + var _e = Ie, we = e.findAncestor(rr, function(n) { + return n.parent === _e; + }); + return we ? { kind: 2, types: J(Re.getTypeArgumentConstraint(we)), isNewIdentifier: false } : void 0; + } + case 194: + var de = Ie, ye = de.indexType, Ae = de.objectType; + return e.rangeContainsPosition(ye, ge) ? b(Re.getTypeFromTypeNode(Ae)) : void 0; + case 200: + return { kind: 0, paths: O(Z, Be, ze, Ee, Re, He) }; + case 187: { + if (!e.isTypeReferenceNode(Ie.parent)) + return; + var er = T(Ie, rr), ir = J(Re.getTypeArgumentConstraint(Ie)).filter(function(n) { + return !e.contains(er, n.value); + }); + return { kind: 2, types: ir, isNewIdentifier: false }; + } + default: + return; + } + } + case 296: + return e.isObjectLiteralExpression(rr.parent) && rr.name === Be ? se(Re, rr.parent) : Ne(); + case 207: { + var Cr = rr, Ye = Cr.expression, Br = Cr.argumentExpression; + return Be === e.skipParentheses(Br) ? b(Re.getTypeAtLocation(Ye)) : void 0; + } + case 208: + case 209: + case 285: + if (!Fe(Be) && !e.isImportCall(rr)) { + var Er = e.SignatureHelp.getArgumentInfoForCompletions(rr.kind === 285 ? rr.parent : Be, ge, Z); + return Er ? K(Er.invocation, Be, Er, Re) : Ne(); + } + case 266: + case 272: + case 277: + return { kind: 0, paths: O(Z, Be, ze, Ee, Re, He) }; + default: + return Ne(); + } + function Ne() { + return { kind: 2, types: J(e.getContextualTypeFromParent(Be, Re)), isNewIdentifier: false }; + } + } + function f(Z) { + switch (Z.kind) { + case 191: + return e.walkUpParenthesizedTypes(Z); + case 212: + return e.walkUpParenthesizedExpressions(Z); + default: + return Z; + } + } + function T(Z, Be) { + return e.mapDefined(Z.types, function(ge) { + return ge !== Be && e.isLiteralTypeNode(ge) && e.isStringLiteral(ge.literal) ? ge.literal.text : void 0; + }); + } + function K(Z, Be, ge, Re) { + var ze = false, Ee = new e.Map(), He = [], rr = e.isJsxOpeningLikeElement(Z) ? e.Debug.checkDefined(e.findAncestor(Be.parent, e.isJsxAttribute)) : Be; + Re.getResolvedSignatureForStringLiteralCompletions(Z, rr, He); + var Ie = e.flatMap(He, function(_e) { + if (!(!e.signatureHasRestParameter(_e) && ge.argumentCount > _e.parameters.length)) { + var we = _e.getTypeParameterAtPosition(ge.argumentIndex); + if (e.isJsxOpeningLikeElement(Z)) { + var de = Re.getTypeOfPropertyOfType(we, rr.name.text); + de && (we = de); + } + return ze = ze || !!(we.flags & 4), J(we, Ee); + } + }); + return { kind: 2, types: Ie, isNewIdentifier: ze }; + } + function b(Z) { + return Z && { kind: 1, symbols: e.filter(Z.getApparentProperties(), function(Be) { + return !(Be.valueDeclaration && e.isPrivateIdentifierClassElementDeclaration(Be.valueDeclaration)); + }), hasIndexSignature: e.hasIndexSignature(Z) }; + } + function se(Z, Be) { + var ge = Z.getContextualType(Be); + if (!!ge) { + var Re = Z.getContextualType(Be, 4), ze = C.getPropertiesForObjectExpression(ge, Re, Be, Z); + return { kind: 1, symbols: ze, hasIndexSignature: e.hasIndexSignature(ge) }; + } + } + function J(Z, Be) { + return Be === void 0 && (Be = new e.Map()), Z ? (Z = e.skipConstraint(Z), Z.isUnion() ? e.flatMap(Z.types, function(ge) { + return J(ge, Be); + }) : Z.isStringLiteral() && !(Z.flags & 1024) && e.addToSeen(Be, Z.value) ? [Z] : e.emptyArray) : e.emptyArray; + } + function ie(Z, Be, ge) { + return { name: Z, kind: Be, extension: ge }; + } + function R(Z) { + return ie(Z, "directory", void 0); + } + function q(Z, Be, ge) { + var Re = fe(Z, Be), ze = Z.length === 0 ? void 0 : e.createTextSpan(Be, Z.length); + return ge.map(function(Ee) { + var He = Ee.name, rr = Ee.kind, Ie = Ee.extension; + return Math.max(He.indexOf(e.directorySeparator), He.indexOf(e.altDirectorySeparator)) !== -1 ? { name: He, kind: rr, extension: Ie, span: ze } : { name: He, kind: rr, extension: Ie, span: Re }; + }); + } + function O(Z, Be, ge, Re, ze, Ee) { + return q(Be.text, Be.getStart(Z) + 1, ve(Z, Be, ge, Re, ze, Ee)); + } + function ve(Z, Be, ge, Re, ze, Ee) { + var He = e.normalizeSlashes(Be.text), rr = Z.path, Ie = e.getDirectoryPath(rr); + return g(He) || !ge.baseUrl && (e.isRootedDiskPath(He) || e.isUrl(He)) ? he(He, Ie, ge, Re, rr, _e()) : P(He, Ie, ge, Re, ze); + function _e() { + var we = e.isStringLiteralLike(Be) ? e.getModeForUsageLocation(Z, Be) : void 0; + return Ee.importModuleSpecifierEnding === "js" || we === e.ModuleKind.ESNext ? 2 : 0; + } + } + function ee(Z, Be) { + return Be === void 0 && (Be = 0), { extensions: e.flatten(X(Z)), includeExtensionsOption: Be }; + } + function he(Z, Be, ge, Re, ze, Ee) { + var He = ee(ge, Ee); + return ge.rootDirs ? A(ge.rootDirs, Z, Be, He, ge, Re, ze) : V(Z, Be, He, Re, ze); + } + function F(Z) { + return e.getEmitModuleResolutionKind(Z) === e.ModuleResolutionKind.NodeJs || e.getEmitModuleResolutionKind(Z) === e.ModuleResolutionKind.Node16 || e.getEmitModuleResolutionKind(Z) === e.ModuleResolutionKind.NodeNext; + } + function x(Z) { + return e.getEmitModuleResolutionKind(Z) === e.ModuleResolutionKind.Node16 || e.getEmitModuleResolutionKind(Z) === e.ModuleResolutionKind.NodeNext; + } + function X(Z) { + var Be = e.getSupportedExtensions(Z); + return F(Z) ? e.getSupportedExtensionsWithJsonIfResolveJsonModule(Z, Be) : Be; + } + function $(Z, Be, ge, Re) { + Z = Z.map(function(Ee) { + return e.normalizePath(e.isRootedDiskPath(Ee) ? Ee : e.combinePaths(Be, Ee)); + }); + var ze = e.firstDefined(Z, function(Ee) { + return e.containsPath(Ee, ge, Be, Re) ? ge.substr(Ee.length) : void 0; + }); + return e.deduplicate(Ve(Ve([], Z.map(function(Ee) { + return e.combinePaths(Ee, ze); + }), true), [ge], false), e.equateStringsCaseSensitive, e.compareStringsCaseSensitive); + } + function A(Z, Be, ge, Re, ze, Ee, He) { + var rr = ze.project || Ee.getCurrentDirectory(), Ie = !(Ee.useCaseSensitiveFileNames && Ee.useCaseSensitiveFileNames()), _e = $(Z, rr, ge, Ie); + return e.flatMap(_e, function(we) { + return V(Be, we, Re, Ee, He); + }); + } + var y; + (function(Z) { + Z[Z.Exclude = 0] = "Exclude", Z[Z.Include = 1] = "Include", Z[Z.ModuleSpecifierCompletion = 2] = "ModuleSpecifierCompletion"; + })(y || (y = {})); + function V(Z, Be, ge, Re, ze, Ee) { + var He = ge.extensions, rr = ge.includeExtensionsOption; + Ee === void 0 && (Ee = []), Z === void 0 && (Z = ""), Z = e.normalizeSlashes(Z), e.hasTrailingDirectorySeparator(Z) || (Z = e.getDirectoryPath(Z)), Z === "" && (Z = "." + e.directorySeparator), Z = e.ensureTrailingDirectorySeparator(Z); + var Ie = e.resolvePath(Be, Z), _e = e.hasTrailingDirectorySeparator(Ie) ? Ie : e.getDirectoryPath(Ie), we = !(Re.useCaseSensitiveFileNames && Re.useCaseSensitiveFileNames()); + if (!e.tryDirectoryExists(Re, _e)) + return Ee; + var de = e.tryReadDirectory(Re, _e, He, void 0, ["./*"]); + if (de) { + for (var ye = new e.Map(), Ae = 0, er = de; Ae < er.length; Ae++) { + var ir = er[Ae]; + if (ir = e.normalizePath(ir), !(ze && e.comparePaths(ir, ze, Be, we) === 0)) { + var Cr = void 0, Ye = e.moduleSpecifiers.tryGetJSExtensionForFile(ir, Re.getCompilationSettings()); + rr === 0 && !e.fileExtensionIsOneOf(ir, [".json", ".mts", ".cts", ".d.mts", ".d.cts", ".mjs", ".cjs"]) ? (Cr = e.removeFileExtension(e.getBaseFileName(ir)), ye.set(Cr, e.tryGetExtensionFromPath(ir))) : (e.fileExtensionIsOneOf(ir, [".mts", ".cts", ".d.mts", ".d.cts", ".mjs", ".cjs"]) || rr === 2) && Ye ? (Cr = e.changeExtension(e.getBaseFileName(ir), Ye), ye.set(Cr, Ye)) : (Cr = e.getBaseFileName(ir), ye.set(Cr, e.tryGetExtensionFromPath(ir))); + } + } + ye.forEach(function(Ur, ii) { + Ee.push(ie(ii, "script", Ur)); + }); + } + var Br = e.tryGetDirectories(Re, _e); + if (Br) + for (var Er = 0, Ne = Br; Er < Ne.length; Er++) { + var n = Ne[Er], lr = e.getBaseFileName(e.normalizePath(n)); + lr !== "@types" && Ee.push(R(lr)); + } + var be = e.findPackageJson(_e, Re); + if (be) { + var Ge = e.readJson(be, Re), ur = Ge.typesVersions; + if (typeof ur == "object") { + var yr = e.getPackageJsonTypesVersionsPaths(ur), Ir = yr && yr.paths, wr = Ie.slice(e.ensureTrailingDirectorySeparator(_e).length); + Ir && L(Ee, wr, _e, He, Ir, Re); + } + } + return Ee; + } + function L(Z, Be, ge, Re, ze, Ee) { + for (var He in ze) + if (!!e.hasProperty(ze, He)) { + var rr = ze[He]; + if (rr) + for (var Ie = function(ir, Cr, Ye) { + Z.some(function(Br) { + return Br.name === ir; + }) || Z.push(ie(ir, Cr, Ye)); + }, _e = 0, we = Y(He, rr, Be, ge, Re, Ee); _e < we.length; _e++) { + var de = we[_e], ye = de.name, Ae = de.kind, er = de.extension; + Ie(ye, Ae, er); + } + } + } + function P(Z, Be, ge, Re, ze) { + var Ee = ge.baseUrl, He = ge.paths, rr = [], Ie = ee(ge); + if (Ee) { + var _e = ge.project || Re.getCurrentDirectory(), we = e.normalizePath(e.combinePaths(_e, Ee)); + V(Z, we, Ie, Re, void 0, rr), He && L(rr, Z, we, Ie.extensions, He, Re); + } + for (var de = k(Z), ye = 0, Ae = I(Z, de, ze); ye < Ae.length; ye++) { + var er = Ae[ye]; + rr.push(ie(er, "external module name", void 0)); + } + if (d(Re, ge, Be, de, Ie, rr), F(ge)) { + var ir = false; + if (de === void 0) + for (var Cr = function(lr) { + rr.some(function(be) { + return be.name === lr; + }) || (ir = true, rr.push(ie(lr, "external module name", void 0))); + }, Ye = 0, Br = D(Re, Be); Ye < Br.length; Ye++) { + var Er = Br[Ye]; + Cr(Er); + } + if (!ir) { + var Ne = function(lr) { + var be = e.combinePaths(lr, "node_modules"); + e.tryDirectoryExists(Re, be) && V(Z, be, Ie, Re, void 0, rr); + }; + if (de && x(ge)) { + var n = Ne; + Ne = function(lr) { + var be = e.getPathComponents(Z); + be.shift(); + var Ge = be.shift(); + if (!Ge) + return n(lr); + if (e.startsWith(Ge, "@")) { + var ur = be.shift(); + if (!ur) + return n(lr); + Ge = e.combinePaths(Ge, ur); + } + var yr = e.combinePaths(lr, "node_modules", Ge, "package.json"); + if (e.tryFileExists(Re, yr)) { + var Ir = e.readJson(yr, Re), wr = Ir.exports; + if (wr) { + if (typeof wr != "object" || wr === null) + return; + var Ur = e.getOwnKeys(wr), ii = be.join("/"), mi = e.mapDefined(Ur, function(pe) { + if (pe !== "." && !!e.startsWith(pe, "./")) { + var or = pe.substring(2); + if (!!e.startsWith(or, ii)) + return e.stringContains(or, "*") ? or.slice(0, or.indexOf("*")) : or; + } + }); + e.forEach(mi, function(pe) { + pe && rr.push(ie(pe, "external module name", void 0)); + }); + return; + } + } + return n(lr); + }; + } + e.forEachAncestorDirectory(Be, Ne); + } + } + return rr; + } + function k(Z) { + return We(Z) ? e.hasTrailingDirectorySeparator(Z) ? Z : e.getDirectoryPath(Z) : void 0; + } + function Y(Z, Be, ge, Re, ze, Ee) { + if (!e.endsWith(Z, "*")) + return e.stringContains(Z, "*") ? e.emptyArray : Ie(Z); + var He = Z.slice(0, Z.length - 1), rr = e.tryRemovePrefix(ge, He); + return rr === void 0 ? Ie(He) : e.flatMap(Be, function(_e) { + return U(rr, Re, _e, ze, Ee); + }); + function Ie(_e) { + return e.startsWith(_e, ge) ? [R(_e)] : e.emptyArray; + } + } + function U(Z, Be, ge, Re, ze) { + if (!ze.readDirectory) + return; + var Ee = e.tryParsePattern(ge); + if (Ee === void 0 || e.isString(Ee)) + return; + var He = e.resolvePath(Ee.prefix), rr = e.hasTrailingDirectorySeparator(Ee.prefix) ? He : e.getDirectoryPath(He), Ie = e.hasTrailingDirectorySeparator(Ee.prefix) ? "" : e.getBaseFileName(He), _e = We(Z), we = _e ? e.hasTrailingDirectorySeparator(Z) ? Z : e.getDirectoryPath(Z) : void 0, de = _e ? e.combinePaths(rr, Ie + we) : rr, ye = e.normalizePath(Ee.suffix), Ae = e.normalizePath(e.combinePaths(Be, de)), er = _e ? Ae : e.ensureTrailingDirectorySeparator(Ae) + Ie, ir = ye ? "**/*" : "./*", Cr = e.mapDefined(e.tryReadDirectory(ze, Ae, Re, void 0, [ir]), function(Er) { + var Ne = e.tryGetExtensionFromPath(Er), n = Br(Er); + return n === void 0 ? void 0 : ie(e.removeFileExtension(n), "script", Ne); + }), Ye = e.mapDefined(e.tryGetDirectories(ze, Ae).map(function(Er) { + return e.combinePaths(Ae, Er); + }), function(Er) { + var Ne = Br(Er); + return Ne === void 0 ? void 0 : R(Ne); + }); + return Ve(Ve([], Cr, true), Ye, true); + function Br(Er) { + var Ne = j(e.normalizePath(Er), er, ye); + return Ne === void 0 ? void 0 : H(Ne); + } + } + function j(Z, Be, ge) { + return e.startsWith(Z, Be) && e.endsWith(Z, ge) ? Z.slice(Be.length, Z.length - ge.length) : void 0; + } + function H(Z) { + return Z[0] === e.directorySeparator ? Z.slice(1) : Z; + } + function I(Z, Be, ge) { + var Re = ge.getAmbientModules().map(function(He) { + return e.stripQuotes(He.name); + }), ze = Re.filter(function(He) { + return e.startsWith(He, Z); + }); + if (Be !== void 0) { + var Ee = e.ensureTrailingDirectorySeparator(Be); + return ze.map(function(He) { + return e.removePrefix(He, Ee); + }); + } + return ze; + } + function l(Z, Be, ge, Re) { + var ze = e.getTokenAtPosition(Z, Be), Ee = e.getLeadingCommentRanges(Z.text, ze.pos), He = Ee && e.find(Ee, function(er) { + return Be >= er.pos && Be <= er.end; + }); + if (!!He) { + var rr = Z.text.slice(He.pos, Be), Ie = ne.exec(rr); + if (!!Ie) { + var _e = Ie[1], we = Ie[2], de = Ie[3], ye = e.getDirectoryPath(Z.path), Ae = we === "path" ? V(de, ye, ee(ge, 1), Re, Z.path) : we === "types" ? d(Re, ge, ye, k(de), ee(ge)) : e.Debug.fail(); + return q(de, He.pos + _e.length, Ae); + } + } + } + function d(Z, Be, ge, Re, ze, Ee) { + Ee === void 0 && (Ee = []); + for (var He = new e.Map(), rr = e.tryAndIgnoreErrors(function() { + return e.getEffectiveTypeRoots(Be, Z); + }) || e.emptyArray, Ie = 0, _e = rr; Ie < _e.length; Ie++) { + var we = _e[Ie]; + ir(we); + } + for (var de = 0, ye = e.findPackageJsons(ge, Z); de < ye.length; de++) { + var Ae = ye[de], er = e.combinePaths(e.getDirectoryPath(Ae), "node_modules/@types"); + ir(er); + } + return Ee; + function ir(Cr) { + if (!!e.tryDirectoryExists(Z, Cr)) + for (var Ye = 0, Br = e.tryGetDirectories(Z, Cr); Ye < Br.length; Ye++) { + var Er = Br[Ye], Ne = e.unmangleScopedPackageName(Er); + if (!(Be.types && !e.contains(Be.types, Ne))) + if (Re === void 0) + He.has(Ne) || (Ee.push(ie(Ne, "external module name", void 0)), He.set(Ne, true)); + else { + var n = e.combinePaths(Cr, Er), lr = e.tryRemoveDirectoryPrefix(Re, Ne, e.hostGetCanonicalFileName(Z)); + lr !== void 0 && V(lr, n, ze, Z, void 0, Ee); + } + } + } + } + function D(Z, Be) { + if (!Z.readFile || !Z.fileExists) + return e.emptyArray; + for (var ge = [], Re = 0, ze = e.findPackageJsons(Be, Z); Re < ze.length; Re++) + for (var Ee = ze[Re], He = e.readJson(Ee, Z), rr = 0, Ie = ue; rr < Ie.length; rr++) { + var _e = Ie[rr], we = He[_e]; + if (!!we) + for (var de in we) + we.hasOwnProperty(de) && !e.startsWith(de, "@types/") && ge.push(de); + } + return ge; + } + function fe(Z, Be) { + var ge = Math.max(Z.lastIndexOf(e.directorySeparator), Z.lastIndexOf(e.altDirectorySeparator)), Re = ge !== -1 ? ge + 1 : 0, ze = Z.length - Re; + return ze === 0 || e.isIdentifierText(Z.substr(Re, ze), 99) ? void 0 : e.createTextSpan(Be + Re, ze); + } + function g(Z) { + if (Z && Z.length >= 2 && Z.charCodeAt(0) === 46) { + var Be = Z.length >= 3 && Z.charCodeAt(1) === 46 ? 2 : 1, ge = Z.charCodeAt(Be); + return ge === 47 || ge === 92; + } + return false; + } + var ne = /^(\/\/\/\s* 0; + }, resolvedBeyondLimit: function() { + return Wi > C.moduleSpecifierResolutionLimit; + } }), Mt = Li ? " (".concat((ct / Li * 100).toFixed(1), "% hit rate)") : ""; + return (fr = vr.log) === null || fr === void 0 || fr.call(vr, "".concat(xe, ": resolved ").concat(Wi, " module specifiers, plus ").concat(Yi, " ambient and ").concat(ct, " from cache").concat(Mt)), (De = vr.log) === null || De === void 0 || De.call(vr, "".concat(xe, ": response is ").concat(Ui ? "incomplete" : "complete")), (gr = vr.log) === null || gr === void 0 || gr.call(vr, "".concat(xe, ": ").concat(e.timestamp() - Vr)), nt; + function xt(ut, Dt, Rt) { + if (Rt) { + var Ii = e.codefix.getModuleSpecifierForBestExportInfo(ut, Dt, Oe, Pe, Ar, mr, vr, nr); + return Ii && Yi++, Ii || "failed"; + } + var Ki = vi || nr.allowIncompleteCompletions && Wi < C.moduleSpecifierResolutionLimit, Fi = !Ki && nr.allowIncompleteCompletions && Li < C.moduleSpecifierResolutionCacheAttemptLimit, ui = Ki || Fi ? e.codefix.getModuleSpecifierForBestExportInfo(ut, Dt, Oe, Pe, Ar, mr, vr, nr, Tr, Fi) : void 0; + return (!Ki && !Fi || Fi && !ui) && (Ui = true), Wi += (ui == null ? void 0 : ui.computedWithoutCacheCount) || 0, ct += ut.length - ((ui == null ? void 0 : ui.computedWithoutCacheCount) || 0), Fi && Li++, ui || (vi ? "failed" : "skipped"); + } + } + function J(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue, fr) { + var De, gr = Ye(Oe, Ar).previousToken; + if (!(Mr && !e.isInString(Ar, Oe, gr) && !et(Ar, Mr, gr, Oe))) { + if (Mr === " ") + return nr.includeCompletionsForImportStatements && nr.includeCompletionsWithInsertText ? { isGlobalCompletion: true, isMemberCompletion: false, isNewIdentifierLocation: true, isIncomplete: true, entries: [] } : void 0; + var Vr = vr.getCompilerOptions(), Tr = nr.allowIncompleteCompletions ? (De = xe.getIncompleteCompletionsCache) === null || De === void 0 ? void 0 : De.call(xe) : void 0; + if (Tr && Pe === 3 && gr && e.isIdentifier(gr)) { + var vi = q(Tr, Ar, gr, vr, xe, nr, Ue); + if (vi) + return vi; + } else + Tr == null || Tr.clear(); + var Ui = C.StringCompletions.getStringLiteralCompletions(Ar, Oe, gr, Vr, xe, vr, mr, nr); + if (Ui) + return Ui; + if (gr && e.isBreakOrContinueStatement(gr.parent) && (gr.kind === 81 || gr.kind === 86 || gr.kind === 79)) + return Z(gr.parent); + var Yi = ir(vr, mr, Ar, Vr, Oe, nr, void 0, xe, fr, Ue); + if (!!Yi) + switch (Yi.kind) { + case 0: + var Wi = X(Ar, xe, vr, Vr, mr, Yi, nr, fr, Oe); + return Wi != null && Wi.isIncomplete && (Tr == null || Tr.set(Wi)), Wi; + case 1: + return O(e.JsDoc.getJSDocTagNameCompletions()); + case 2: + return O(e.JsDoc.getJSDocTagCompletions()); + case 3: + return O(e.JsDoc.getJSDocParameterNameCompletions(Yi.tag)); + case 4: + return ee(Yi.keywordCompletions, Yi.isNewIdentifierLocation); + default: + return e.Debug.assertNever(Yi); + } + } + } + C.getCompletionsAtPosition = J; + function ie(xe, vr) { + var mr, Ar, Oe = e.compareStringsCaseSensitiveUI(xe.sortText, vr.sortText); + return Oe === 0 && (Oe = e.compareStringsCaseSensitiveUI(xe.name, vr.name)), Oe === 0 && ((mr = xe.data) === null || mr === void 0 ? void 0 : mr.moduleSpecifier) && ((Ar = vr.data) === null || Ar === void 0 ? void 0 : Ar.moduleSpecifier) && (Oe = e.compareNumberOfDirectorySeparators(xe.data.moduleSpecifier, vr.data.moduleSpecifier)), Oe === 0 ? -1 : Oe; + } + function R(xe) { + return !!(xe != null && xe.moduleSpecifier); + } + function q(xe, vr, mr, Ar, Oe, nr, Mr) { + var Pe = xe.get(); + if (!!Pe) { + var Ue = mr.text.toLowerCase(), fr = e.getExportInfoMap(vr, Oe, Ar, Mr), De = se("continuePreviousIncompleteResponse", Oe, Ar, vr, mr.getStart(), nr, false, e.isValidTypeOnlyAliasUseSite(mr), function(gr) { + var Vr = e.mapDefined(Pe.entries, function(Tr) { + var vi; + if (!Tr.hasAction || !Tr.source || !Tr.data || R(Tr.data)) + return Tr; + if (!!Wr(Tr.name, Ue)) { + var Ui = e.Debug.checkDefined(Br(Tr.name, Tr.data, Ar, Oe)).origin, Yi = fr.get(vr.path, Tr.data.exportMapKey), Wi = Yi && gr.tryResolve(Yi, Tr.name, !e.isExternalModuleNameRelative(e.stripQuotes(Ui.moduleSymbol.name))); + if (Wi === "skipped") + return Tr; + if (!Wi || Wi === "failed") { + (vi = Oe.log) === null || vi === void 0 || vi.call(Oe, "Unexpected failure resolving auto import for '".concat(Tr.name, "' from '").concat(Tr.source, "'")); + return; + } + var ct = Ke(Ke({}, Ui), { kind: 32, moduleSpecifier: Wi.moduleSpecifier }); + return Tr.data = D(ct), Tr.source = We(ct), Tr.sourceDisplay = [e.textPart(ct.moduleSpecifier)], Tr; + } + }); + return gr.skippedAny() || (Pe.isIncomplete = void 0), Vr; + }); + return Pe.entries = De, Pe.flags = (Pe.flags || 0) | 4, Pe; + } + } + function O(xe) { + return { isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: false, entries: xe }; + } + function ve(xe) { + return { name: e.tokenToString(xe), kind: "keyword", kindModifiers: "", sortText: C.SortText.GlobalsOrKeywords }; + } + function ee(xe, vr) { + return { isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: vr, entries: xe.slice() }; + } + function he(xe, vr, mr) { + return { kind: 4, keywordCompletions: lr(xe, vr), isNewIdentifierLocation: mr }; + } + function F(xe) { + switch (xe) { + case 152: + return 8; + default: + e.Debug.fail("Unknown mapping from SyntaxKind to KeywordCompletionFilters"); + } + } + function x(xe) { + return (xe == null ? void 0 : xe.kind) === 79 ? e.createTextSpanFromNode(xe) : void 0; + } + function X(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue) { + var fr = nr.symbols, De = nr.contextToken, gr = nr.completionKind, Vr = nr.isInSnippetScope, Tr = nr.isNewIdentifierLocation, vi = nr.location, Ui = nr.propertyAccessToConvert, Yi = nr.keywordFilters, Wi = nr.literals, ct = nr.symbolToOriginInfoMap, Li = nr.recommendedCompletion, nt = nr.isJsxInitializer, Mt = nr.isTypeOnlyLocation, xt = nr.isJsxIdentifierExpected, ut = nr.isRightOfOpenTag, Dt = nr.importCompletionNode, Rt = nr.insideJsDocTagTypeExpression, Ii = nr.symbolToSortTextMap, Ki = nr.hasUnresolvedAutoImports; + if (e.getLanguageVariant(xe.scriptKind) === 1) { + var Fi = y(vi, xe); + if (Fi) + return Fi; + } + var ui = e.createSortedArray(); + if ($(xe, Ar)) { + var Bt = Fe(fr, ui, void 0, De, vi, xe, vr, mr, e.getEmitScriptTarget(Ar), Oe, gr, Mr, Ar, Pe, Mt, Ui, xt, nt, Dt, Li, ct, Ii, xt, ut); + V(xe, vi.pos, Bt, e.getEmitScriptTarget(Ar), ui); + } else { + if (!Tr && (!fr || fr.length === 0) && Yi === 0) + return; + Fe(fr, ui, void 0, De, vi, xe, vr, mr, e.getEmitScriptTarget(Ar), Oe, gr, Mr, Ar, Pe, Mt, Ui, xt, nt, Dt, Li, ct, Ii, xt, ut); + } + if (Yi !== 0) + for (var wt = new e.Set(ui.map(function(Qa) { + return Qa.name; + })), na = 0, Ai = lr(Yi, !Rt && e.isSourceFileJS(xe)); na < Ai.length; na++) { + var Oi = Ai[na]; + (Mt && e.isTypeKeyword(e.stringToToken(Oi.name)) || !wt.has(Oi.name)) && e.insertSorted(ui, Oi, ie, true); + } + for (var ji = new e.Set(ui.map(function(Qa) { + return Qa.name; + })), Vi = 0, at = Ur(De, Ue); Vi < at.length; Vi++) { + var Oi = at[Vi]; + ji.has(Oi.name) || e.insertSorted(ui, Oi, ie, true); + } + for (var At = 0, ba = Wi; At < ba.length; At++) { + var $a = ba[At]; + e.insertSorted(ui, P(xe, Mr, $a), ie, true); + } + return { flags: nr.flags, isGlobalCompletion: Vr, isIncomplete: Mr.allowIncompleteCompletions && Ki ? true : void 0, isMemberCompletion: A(gr), isNewIdentifierLocation: Tr, optionalReplacementSpan: x(vi), entries: ui }; + } + function $(xe, vr) { + return e.isSourceFileJS(xe) && !e.isCheckJsEnabledForFile(xe, vr); + } + function A(xe) { + switch (xe) { + case 0: + case 3: + case 2: + return true; + default: + return false; + } + } + function y(xe, vr) { + var mr = e.findAncestor(xe, function(fr) { + switch (fr.kind) { + case 281: + return true; + case 43: + case 31: + case 79: + case 206: + return false; + default: + return "quit"; + } + }); + if (mr) { + var Ar = !!e.findChildOfKind(mr, 31, vr), Oe = mr.parent.openingElement.tagName, nr = Oe.getText(vr), Mr = nr + (Ar ? "" : ">"), Pe = e.createTextSpanFromNode(mr.tagName), Ue = { name: Mr, kind: "class", kindModifiers: void 0, sortText: C.SortText.LocationPriority }; + return { isGlobalCompletion: false, isMemberCompletion: true, isNewIdentifierLocation: false, optionalReplacementSpan: Pe, entries: [Ue] }; + } + } + function V(xe, vr, mr, Ar, Oe) { + e.getNameTable(xe).forEach(function(nr, Mr) { + if (nr !== vr) { + var Pe = e.unescapeLeadingUnderscores(Mr); + !mr.has(Pe) && e.isIdentifierText(Pe, Ar) && (mr.add(Pe), e.insertSorted(Oe, { name: Pe, kind: "warning", kindModifiers: "", sortText: C.SortText.JavascriptIdentifiers, isFromUncheckedFile: true }, ie)); + } + }); + } + function L(xe, vr, mr) { + return typeof mr == "object" ? e.pseudoBigIntToString(mr) + "n" : e.isString(mr) ? e.quote(xe, vr, mr) : JSON.stringify(mr); + } + function P(xe, vr, mr) { + return { name: L(xe, vr, mr), kind: "string", kindModifiers: "", sortText: C.SortText.LocationPriority }; + } + function k(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue, fr, De, gr, Vr, Tr, vi, Ui, Yi, Wi, ct, Li, nt, Mt) { + var xt, ut, Dt, Rt = e.getReplacementSpanForContextToken(mr), Ii, Ki, Fi = We(De), ui, Bt, wt, na = Pe.getTypeChecker(), Ai = De && oe(De), Oi = De && Q(De) || fr; + if (De && E(De)) + Dt = fr ? "this".concat(Ai ? "?." : "", "[").concat(ne(nr, Wi, Ue), "]") : "this".concat(Ai ? "?." : ".").concat(Ue); + else if ((Oi || Ai) && Vr) { + Dt = Oi ? fr ? "[".concat(ne(nr, Wi, Ue), "]") : "[".concat(Ue, "]") : Ue, (Ai || Vr.questionDotToken) && (Dt = "?.".concat(Dt)); + var ji = e.findChildOfKind(Vr, 24, nr) || e.findChildOfKind(Vr, 28, nr); + if (!ji) + return; + var Vi = e.startsWith(Ue, Vr.name.text) ? Vr.name.end : ji.end; + Rt = e.createTextSpanFromBounds(ji.getStart(nr), Vi); + } + if (Tr && (Dt === void 0 && (Dt = Ue), Dt = "{".concat(Dt, "}"), typeof Tr != "boolean" && (Rt = e.createTextSpanFromNode(Tr, nr))), De && G(De) && Vr) { + Dt === void 0 && (Dt = Ue); + var at = e.findPrecedingToken(Vr.pos, nr), At = ""; + at && e.positionIsASICandidate(at.end, at.parent, nr) && (At = ";"), At += "(await ".concat(Vr.expression.getText(), ")"), Dt = fr ? "".concat(At).concat(Dt) : "".concat(At).concat(Ai ? "?." : ".").concat(Dt), Rt = e.createTextSpanFromBounds(Vr.getStart(nr), Vr.end); + } + if (N(De) && (ui = [e.textPart(De.moduleSpecifier)], vi && (xt = g(Ue, vi, Ar, De, Ui, Yi, Wi), Dt = xt.insertText, Rt = xt.replacementSpan, Ki = Wi.includeCompletionsWithSnippetText ? true : void 0)), (De == null ? void 0 : De.kind) === 64 && (Bt = true), Wi.includeCompletionsWithClassMemberSnippets && Wi.includeCompletionsWithInsertText && ct === 3 && Y(xe, Oe)) { + var ba = void 0; + ut = U(Mr, Pe, Yi, Wi, Ue, xe, Oe, Ar, Li), Dt = ut.insertText, Ki = ut.isSnippet, ba = ut.importAdder, Rt = ut.replacementSpan, vr = C.SortText.ClassMemberSnippets, ba != null && ba.hasFixes() && (Bt = true, Fi = w.ClassMemberSnippet); + } + if (De && T(De) && (Dt = De.insertText, Ki = De.isSnippet, wt = De.labelDetails, Wi.useLabelDetailsInCompletionEntries || (Ue = Ue + wt.detail, wt = void 0), Fi = w.ObjectLiteralMethodSnippet, vr = C.SortText.SortBelow(vr)), nt && !Mt && Wi.includeCompletionsWithSnippetText && Wi.jsxAttributeCompletionStyle && Wi.jsxAttributeCompletionStyle !== "none") { + var $a = Wi.jsxAttributeCompletionStyle === "braces", Qa = na.getTypeOfSymbolAtLocation(xe, Oe); + Wi.jsxAttributeCompletionStyle === "auto" && !(Qa.flags & 528) && !(Qa.flags & 1048576 && e.find(Qa.types, function(ai) { + return !!(ai.flags & 528); + })) && (Qa.flags & 402653316 || Qa.flags & 1048576 && e.every(Qa.types, function(ai) { + return !!(ai.flags & 402686084); + }) ? (Dt = "".concat(e.escapeSnippetText(Ue), "=").concat(e.quote(nr, Wi, "$1")), Ki = true) : $a = true), $a && (Dt = "".concat(e.escapeSnippetText(Ue), "={$1}"), Ki = true); + } + if (!(Dt !== void 0 && !Wi.includeCompletionsWithInsertText)) + return (le(De) || N(De)) && (Ii = D(De), Bt = !vi), { name: Ue, kind: e.SymbolDisplay.getSymbolKind(na, xe, Oe), kindModifiers: e.SymbolDisplay.getSymbolModifiers(na, xe), sortText: vr, source: Fi, hasAction: Bt ? true : void 0, isRecommended: ue(xe, gr, na) || void 0, insertText: Dt, replacementSpan: Rt, sourceDisplay: ui, labelDetails: wt, isSnippet: Ki, isPackageJsonImport: m(De) || void 0, isImportStatementCompletion: !!vi || void 0, data: Ii }; + } + function Y(xe, vr) { + if (e.isInJSFile(vr)) + return false; + var mr = 106500; + return !!(xe.flags & mr) && (e.isClassLike(vr) || vr.parent && vr.parent.parent && e.isClassElement(vr.parent) && vr === vr.parent.name && e.isClassLike(vr.parent.parent) || vr.parent && e.isSyntaxList(vr) && e.isClassLike(vr.parent)); + } + function U(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue) { + var fr = e.findAncestor(Mr, e.isClassLike); + if (!fr) + return { insertText: Oe }; + var De, gr, Vr = Oe, Tr = vr.getTypeChecker(), vi = Mr.getSourceFile(), Ui = d({ removeComments: true, module: mr.module, target: mr.target, omitTrailingSemicolon: false, newLine: e.getNewLineKind(e.getNewLineCharacter(mr, e.maybeBind(xe, xe.getNewLine))) }), Yi = e.codefix.createImportAdder(vi, vr, Ar, xe), Wi; + if (Ar.includeCompletionsWithSnippetText) { + De = true; + var ct = e.factory.createEmptyStatement(); + Wi = e.factory.createBlock([ct], true), e.setSnippetElement(ct, { kind: 0, order: 0 }); + } else + Wi = e.factory.createBlock([], true); + var Li = 0, nt = j(Pe), Mt = nt.modifiers, xt = nt.span, ut = !!(Mt & 128), Dt = []; + if (e.codefix.addNewNodeForMemberSymbol(nr, fr, vi, { program: vr, host: xe }, Ar, Yi, function(Ii) { + var Ki = 0; + ut && (Ki |= 128), e.isClassElement(Ii) && Tr.getMemberOverrideModifierStatus(fr, Ii) === 1 && (Ki |= 16384), Dt.length || (Li = Ii.modifierFlagsCache | Ki | Mt), Ii = e.factory.updateModifiers(Ii, Li), Dt.push(Ii); + }, Wi, 2, ut), Dt.length) { + var Rt = 131073; + gr = xt, Ue ? Vr = Ui.printAndFormatSnippetList(Rt, e.factory.createNodeArray(Dt), vi, Ue) : Vr = Ui.printSnippetList(Rt, e.factory.createNodeArray(Dt), vi); + } + return { insertText: Vr, isSnippet: De, importAdder: Yi, replacementSpan: gr }; + } + function j(xe) { + if (!xe) + return { modifiers: 0 }; + var vr = 0, mr, Ar; + return (Ar = H(xe)) && (vr |= e.modifierToFlag(Ar), mr = e.createTextSpanFromNode(xe)), e.isPropertyDeclaration(xe.parent) && (vr |= e.modifiersToFlags(xe.parent.modifiers), mr = e.createTextSpanFromNode(xe.parent)), { modifiers: vr, span: mr }; + } + function H(xe) { + if (e.isModifier(xe)) + return xe.kind; + if (e.isIdentifier(xe) && xe.originalKeywordKind && e.isModifierKind(xe.originalKeywordKind)) + return xe.originalKeywordKind; + } + function I(xe, vr, mr, Ar, Oe, nr, Mr, Pe) { + var Ue = Mr.includeCompletionsWithSnippetText || void 0, fr = vr, De = mr.getSourceFile(), gr = l(xe, mr, De, Ar, Oe, Mr); + if (!!gr) { + var Vr = d({ removeComments: true, module: nr.module, target: nr.target, omitTrailingSemicolon: false, newLine: e.getNewLineKind(e.getNewLineCharacter(nr, e.maybeBind(Oe, Oe.getNewLine))) }); + Pe ? fr = Vr.printAndFormatSnippetList(80, e.factory.createNodeArray([gr], true), De, Pe) : fr = Vr.printSnippetList(80, e.factory.createNodeArray([gr], true), De); + var Tr = e.createPrinter({ removeComments: true, module: nr.module, target: nr.target, omitTrailingSemicolon: true }), vi = e.factory.createMethodSignature(void 0, "", gr.questionToken, gr.typeParameters, gr.parameters, gr.type), Ui = { detail: Tr.printNode(4, vi, De) }; + return { isSnippet: Ue, insertText: fr, labelDetails: Ui }; + } + } + function l(xe, vr, mr, Ar, Oe, nr) { + var Mr = xe.getDeclarations(); + if (!!(Mr && Mr.length)) { + var Pe = Ar.getTypeChecker(), Ue = Mr[0], fr = e.getSynthesizedDeepClone(e.getNameOfDeclaration(Ue), false), De = Pe.getWidenedType(Pe.getTypeOfSymbolAtLocation(xe, vr)), gr = e.getQuotePreference(mr, nr), Vr = gr === 0 ? 268435456 : void 0; + switch (Ue.kind) { + case 166: + case 167: + case 168: + case 169: { + var Tr = De.flags & 1048576 && De.types.length < 10 ? Pe.getUnionType(De.types, 2) : De; + if (Tr.flags & 1048576) { + var vi = e.filter(Tr.types, function(nt) { + return Pe.getSignaturesOfType(nt, 0).length > 0; + }); + if (vi.length === 1) + Tr = vi[0]; + else + return; + } + var Ui = Pe.getSignaturesOfType(Tr, 0); + if (Ui.length !== 1) + return; + var Yi = Pe.typeToTypeNode(Tr, vr, Vr, e.codefix.getNoopSymbolTrackerWithResolver({ program: Ar, host: Oe })); + if (!Yi || !e.isFunctionTypeNode(Yi)) + return; + var Wi = void 0; + if (nr.includeCompletionsWithSnippetText) { + var ct = e.factory.createEmptyStatement(); + Wi = e.factory.createBlock([ct], true), e.setSnippetElement(ct, { kind: 0, order: 0 }); + } else + Wi = e.factory.createBlock([], true); + var Li = Yi.parameters.map(function(nt) { + return e.factory.createParameterDeclaration(void 0, void 0, nt.dotDotDotToken, nt.name, nt.questionToken, void 0, nt.initializer); + }); + return e.factory.createMethodDeclaration(void 0, void 0, void 0, fr, void 0, void 0, Li, void 0, Wi); + } + default: + return; + } + } + } + function d(xe) { + var vr, mr = e.textChanges.createWriter(e.getNewLineCharacter(xe)), Ar = e.createPrinter(xe, mr), Oe = Ke(Ke({}, mr), { write: function(fr) { + return nr(fr, function() { + return mr.write(fr); + }); + }, nonEscapingWrite: mr.write, writeLiteral: function(fr) { + return nr(fr, function() { + return mr.writeLiteral(fr); + }); + }, writeStringLiteral: function(fr) { + return nr(fr, function() { + return mr.writeStringLiteral(fr); + }); + }, writeSymbol: function(fr, De) { + return nr(fr, function() { + return mr.writeSymbol(fr, De); + }); + }, writeParameter: function(fr) { + return nr(fr, function() { + return mr.writeParameter(fr); + }); + }, writeComment: function(fr) { + return nr(fr, function() { + return mr.writeComment(fr); + }); + }, writeProperty: function(fr) { + return nr(fr, function() { + return mr.writeProperty(fr); + }); + } }); + return { printSnippetList: Mr, printAndFormatSnippetList: Ue }; + function nr(fr, De) { + var gr = e.escapeSnippetText(fr); + if (gr !== fr) { + var Vr = mr.getTextPos(); + De(); + var Tr = mr.getTextPos(); + vr = e.append(vr || (vr = []), { newText: gr, span: { start: Vr, length: Tr - Vr } }); + } else + De(); + } + function Mr(fr, De, gr) { + var Vr = Pe(fr, De, gr); + return vr ? e.textChanges.applyChanges(Vr, vr) : Vr; + } + function Pe(fr, De, gr) { + return vr = void 0, Oe.clear(), Ar.writeList(fr, De, gr, Oe), Oe.getText(); + } + function Ue(fr, De, gr, Vr) { + var Tr = { text: Pe(fr, De, gr), getLineAndCharacterOfPosition: function(Wi) { + return e.getLineAndCharacterOfPosition(this, Wi); + } }, vi = e.getFormatCodeSettingsForWriting(Vr, gr), Ui = e.flatMap(De, function(Wi) { + var ct = e.textChanges.assignPositionsToNode(Wi); + return e.formatting.formatNodeGivenIndentation(ct, Tr, gr.languageVariant, 0, 0, Ke(Ke({}, Vr), { options: vi })); + }), Yi = vr ? e.stableSort(e.concatenate(Ui, vr), function(Wi, ct) { + return e.compareTextSpans(Wi.span, ct.span); + }) : Ui; + return e.textChanges.applyChanges(Tr.text, Yi); + } + } + function D(xe) { + var vr = xe.fileName ? void 0 : e.stripQuotes(xe.moduleSymbol.name), mr = xe.isFromPackageJson ? true : void 0; + if (N(xe)) { + var Ar = { exportName: xe.exportName, moduleSpecifier: xe.moduleSpecifier, ambientModuleName: vr, fileName: xe.fileName, isPackageJsonImport: mr }; + return Ar; + } + var Oe = { exportName: xe.exportName, exportMapKey: xe.exportMapKey, fileName: xe.fileName, ambientModuleName: xe.fileName ? void 0 : e.stripQuotes(xe.moduleSymbol.name), isPackageJsonImport: xe.isFromPackageJson ? true : void 0 }; + return Oe; + } + function fe(xe, vr, mr) { + var Ar = xe.exportName === "default", Oe = !!xe.isPackageJsonImport; + if (R(xe)) { + var nr = { kind: 32, exportName: xe.exportName, moduleSpecifier: xe.moduleSpecifier, symbolName: vr, fileName: xe.fileName, moduleSymbol: mr, isDefaultExport: Ar, isFromPackageJson: Oe }; + return nr; + } + var Mr = { kind: 4, exportName: xe.exportName, exportMapKey: xe.exportMapKey, symbolName: vr, fileName: xe.fileName, moduleSymbol: mr, isDefaultExport: Ar, isFromPackageJson: Oe }; + return Mr; + } + function g(xe, vr, mr, Ar, Oe, nr, Mr) { + var Pe, Ue, fr, De = vr.getSourceFile(), gr = e.createTextSpanFromNode(e.findAncestor(vr, e.or(e.isImportDeclaration, e.isImportEqualsDeclaration)) || vr, De), Vr = e.quote(De, Mr, Ar.moduleSpecifier), Tr = Ar.isDefaultExport ? 1 : Ar.exportName === "export=" ? 2 : 0, vi = Mr.includeCompletionsWithSnippetText ? "$1" : "", Ui = e.codefix.getImportKind(De, Tr, nr, true), Yi = ((Ue = (Pe = e.tryCast(vr, e.isImportDeclaration)) === null || Pe === void 0 ? void 0 : Pe.importClause) === null || Ue === void 0 ? void 0 : Ue.isTypeOnly) || ((fr = e.tryCast(vr, e.isImportEqualsDeclaration)) === null || fr === void 0 ? void 0 : fr.isTypeOnly), Wi = ae(vr, mr), ct = Yi ? " ".concat(e.tokenToString(152), " ") : " ", Li = Wi ? "".concat(e.tokenToString(152), " ") : "", nt = Oe ? ";" : ""; + switch (Ui) { + case 3: + return { replacementSpan: gr, insertText: "import".concat(ct).concat(e.escapeSnippetText(xe)).concat(vi, " = require(").concat(Vr, ")").concat(nt) }; + case 1: + return { replacementSpan: gr, insertText: "import".concat(ct).concat(e.escapeSnippetText(xe)).concat(vi, " from ").concat(Vr).concat(nt) }; + case 2: + return { replacementSpan: gr, insertText: "import".concat(ct, "* as ").concat(e.escapeSnippetText(xe), " from ").concat(Vr).concat(nt) }; + case 0: + return { replacementSpan: gr, insertText: "import".concat(ct, "{ ").concat(Li).concat(e.escapeSnippetText(xe)).concat(vi, " } from ").concat(Vr).concat(nt) }; + } + } + function ne(xe, vr, mr) { + return /^\d+$/.test(mr) ? mr : e.quote(xe, vr, mr); + } + function ue(xe, vr, mr) { + return xe === vr || !!(xe.flags & 1048576) && mr.getExportSymbolOfSymbol(xe) === vr; + } + function We(xe) { + if (le(xe)) + return e.stripQuotes(xe.moduleSymbol.name); + if (N(xe)) + return xe.moduleSpecifier; + if ((xe == null ? void 0 : xe.kind) === 1) + return w.ThisProperty; + if ((xe == null ? void 0 : xe.kind) === 64) + return w.TypeOnlyAlias; + } + function Fe(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue, fr, De, gr, Vr, Tr, vi, Ui, Yi, Wi, ct, Li, nt, Mt, xt, ut) { + for (var Dt, Rt = e.timestamp(), Ii = ti(Oe), Ki = e.probablyUsesSemicolons(nr), Fi = Pe.getTypeChecker(), ui = new e.Map(), Bt = 0; Bt < xe.length; Bt++) { + var wt = xe[Bt], na = nt == null ? void 0 : nt[Bt], Ai = Er(wt, Ue, na, De, !!Yi); + if (!(!Ai || ui.get(Ai.name) && (!na || !T(na)) || De === 1 && Mt && !$a(wt, Mt))) { + var Oi = Ai.name, ji = Ai.needsConvertPropertyAccess, Vi = (Dt = Mt == null ? void 0 : Mt[e.getSymbolId(wt)]) !== null && Dt !== void 0 ? Dt : C.SortText.LocationPriority, at = zr(wt, Fi) ? C.SortText.Deprecated(Vi) : Vi, At = k(wt, at, mr, Ar, Oe, nr, Mr, Pe, Oi, ji, na, Li, Ui, Wi, ct, Ki, Vr, gr, De, Tr, xt, ut); + if (!!At) { + var ba = (!na || f(na)) && !(wt.parent === void 0 && !e.some(wt.declarations, function(Qa) { + return Qa.getSourceFile() === Oe.getSourceFile(); + })); + ui.set(Oi, ba), e.insertSorted(vr, At, ie, true); + } + } + } + return fr("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (e.timestamp() - Rt)), { has: function(Qa) { + return ui.has(Qa); + }, add: function(Qa) { + return ui.set(Qa, true); + } }; + function $a(Qa, ai) { + var Dn = Qa.flags; + if (!e.isSourceFile(Oe)) { + if (e.isExportAssignment(Oe.parent)) + return true; + if (Ii && Qa.valueDeclaration === Ii) + return false; + var ka = e.skipAlias(Qa, Fi); + if (!!nr.externalModuleIndicator && !Vr.allowUmdGlobalAccess && ai[e.getSymbolId(Qa)] === C.SortText.GlobalsOrKeywords && (ai[e.getSymbolId(ka)] === C.SortText.AutoImportSuggestions || ai[e.getSymbolId(ka)] === C.SortText.LocationPriority)) + return false; + if (Dn |= e.getCombinedLocalAndExportSymbolFlags(ka), e.isInRightSideOfInternalImportEqualsDeclaration(Oe)) + return !!(Dn & 1920); + if (vi) + return Sr(Qa, Fi); + } + return !!(Dn & 111551); + } + } + C.getCompletionEntriesFromSymbols = Fe; + function Z(xe) { + var vr = Be(xe); + if (vr.length) + return { isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: false, entries: vr }; + } + function Be(xe) { + for (var vr = [], mr = new e.Map(), Ar = xe; Ar && !e.isFunctionLike(Ar); ) { + if (e.isLabeledStatement(Ar)) { + var Oe = Ar.label.text; + mr.has(Oe) || (mr.set(Oe, true), vr.push({ name: Oe, kindModifiers: "", kind: "label", sortText: C.SortText.LocationPriority })); + } + Ar = Ar.parent; + } + return vr; + } + function ge(xe, vr, mr, Ar, Oe, nr, Mr) { + if (Oe.data) { + var Pe = Br(Oe.name, Oe.data, xe, nr); + if (Pe) { + var Ue = Ye(Ar, mr), fr = Ue.contextToken, De = Ue.previousToken; + return { type: "symbol", symbol: Pe.symbol, location: e.getTouchingPropertyName(mr, Ar), previousToken: De, contextToken: fr, isJsxInitializer: false, isTypeOnlyLocation: false, origin: Pe.origin }; + } + } + var gr = xe.getCompilerOptions(), Vr = ir(xe, vr, mr, gr, Ar, { includeCompletionsForModuleExports: true, includeCompletionsWithInsertText: true }, Oe, nr, void 0); + if (!Vr) + return { type: "none" }; + if (Vr.kind !== 0) + return { type: "request", request: Vr }; + var Tr = Vr.symbols, vi = Vr.literals, Ui = Vr.location, Yi = Vr.completionKind, Wi = Vr.symbolToOriginInfoMap, ct = Vr.contextToken, Li = Vr.previousToken, nt = Vr.isJsxInitializer, Mt = Vr.isTypeOnlyLocation, xt = e.find(vi, function(ut) { + return L(mr, Mr, ut) === Oe.name; + }); + return xt !== void 0 ? { type: "literal", literal: xt } : e.firstDefined(Tr, function(ut, Dt) { + var Rt = Wi[Dt], Ii = Er(ut, e.getEmitScriptTarget(gr), Rt, Yi, Vr.isJsxIdentifierExpected); + return Ii && Ii.name === Oe.name && (Oe.source === w.ClassMemberSnippet && ut.flags & 106500 || Oe.source === w.ObjectLiteralMethodSnippet && ut.flags & 8196 || We(Rt) === Oe.source) ? { type: "symbol", symbol: ut, location: Ui, origin: Rt, contextToken: ct, previousToken: Li, isJsxInitializer: nt, isTypeOnlyLocation: Mt } : void 0; + }) || { type: "none" }; + } + function Re(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue) { + var fr = xe.getTypeChecker(), De = xe.getCompilerOptions(), gr = Oe.name, Vr = Oe.source, Tr = Oe.data, vi = e.findPrecedingToken(Ar, mr); + if (e.isInString(mr, Ar, vi)) + return C.StringCompletions.getStringLiteralCompletionDetails(gr, mr, Ar, vi, fr, De, nr, Ue, Pe); + var Ui = ge(xe, vr, mr, Ar, Oe, nr, Pe); + switch (Ui.type) { + case "request": { + var Yi = Ui.request; + switch (Yi.kind) { + case 1: + return e.JsDoc.getJSDocTagNameCompletionDetails(gr); + case 2: + return e.JsDoc.getJSDocTagCompletionDetails(gr); + case 3: + return e.JsDoc.getJSDocParameterNameCompletionDetails(gr); + case 4: + return e.some(Yi.keywordCompletions, function(Ii) { + return Ii.name === gr; + }) ? ze(gr, "keyword", e.SymbolDisplayPartKind.keyword) : void 0; + default: + return e.Debug.assertNever(Yi); + } + } + case "symbol": { + var Wi = Ui.symbol, ct = Ui.location, Li = Ui.contextToken, nt = Ui.origin, Mt = Ui.previousToken, xt = rr(gr, ct, Li, nt, Wi, xe, nr, De, mr, Ar, Mt, Mr, Pe, Tr, Vr), ut = xt.codeActions, Dt = xt.sourceDisplay; + return Ee(Wi, fr, mr, ct, Ue, ut, Dt); + } + case "literal": { + var Rt = Ui.literal; + return ze(L(mr, Pe, Rt), "string", typeof Rt == "string" ? e.SymbolDisplayPartKind.stringLiteral : e.SymbolDisplayPartKind.numericLiteral); + } + case "none": + return n().some(function(Ii) { + return Ii.name === gr; + }) ? ze(gr, "keyword", e.SymbolDisplayPartKind.keyword) : void 0; + default: + e.Debug.assertNever(Ui); + } + } + C.getCompletionEntryDetails = Re; + function ze(xe, vr, mr) { + return He(xe, "", vr, [e.displayPart(xe, mr)]); + } + function Ee(xe, vr, mr, Ar, Oe, nr, Mr) { + var Pe = vr.runWithCancellationToken(Oe, function(Vr) { + return e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(Vr, xe, mr, Ar, Ar, 7); + }), Ue = Pe.displayParts, fr = Pe.documentation, De = Pe.symbolKind, gr = Pe.tags; + return He(xe.name, e.SymbolDisplay.getSymbolModifiers(vr, xe), De, Ue, fr, gr, nr, Mr); + } + C.createCompletionDetailsForSymbol = Ee; + function He(xe, vr, mr, Ar, Oe, nr, Mr, Pe) { + return { name: xe, kindModifiers: vr, kind: mr, displayParts: Ar, documentation: Oe, tags: nr, codeActions: Mr, source: Pe, sourceDisplay: Pe }; + } + C.createCompletionDetails = He; + function rr(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue, fr, De, gr, Vr, Tr, vi) { + if (Tr != null && Tr.moduleSpecifier && De && pi(mr || De).replacementNode) + return { codeActions: void 0, sourceDisplay: [e.textPart(Tr.moduleSpecifier)] }; + if (vi === w.ClassMemberSnippet) { + var Ui = U(Mr, nr, Pe, Vr, xe, Oe, vr, mr, gr).importAdder; + if (Ui) { + var Yi = e.textChanges.ChangeTracker.with({ host: Mr, formatContext: gr, preferences: Vr }, Ui.writeFixes); + return { sourceDisplay: void 0, codeActions: [{ changes: Yi, description: e.diagnosticToString([e.Diagnostics.Includes_imports_of_types_referenced_by_0, xe]) }] }; + } + } + if (f(Ar)) { + var Wi = e.codefix.getPromoteTypeOnlyCompletionAction(Ue, Ar.declaration.name, nr, Mr, gr, Vr); + return e.Debug.assertIsDefined(Wi, "Expected to have a code action for promoting type-only alias"), { codeActions: [Wi], sourceDisplay: void 0 }; + } + if (!Ar || !(le(Ar) || N(Ar))) + return { codeActions: void 0, sourceDisplay: void 0 }; + var ct = Ar.isFromPackageJson ? Mr.getPackageJsonAutoImportProvider().getTypeChecker() : nr.getTypeChecker(), Li = Ar.moduleSymbol, nt = ct.getMergedSymbol(e.skipAlias(Oe.exportSymbol || Oe, ct)), Mt = (mr == null ? void 0 : mr.kind) === 29 && e.isJsxOpeningLikeElement(mr.parent), xt = e.codefix.getImportCompletionAction(nt, Li, Ue, e.getNameForExportedSymbol(Oe, e.getEmitScriptTarget(Pe), Mt), Mt, Mr, nr, gr, De && e.isIdentifier(De) ? De.getStart(Ue) : fr, Vr), ut = xt.moduleSpecifier, Dt = xt.codeAction; + return e.Debug.assert(!(Tr != null && Tr.moduleSpecifier) || ut === Tr.moduleSpecifier), { sourceDisplay: [e.textPart(ut)], codeActions: [Dt] }; + } + function Ie(xe, vr, mr, Ar, Oe, nr, Mr) { + var Pe = ge(xe, vr, mr, Ar, Oe, nr, Mr); + return Pe.type === "symbol" ? Pe.symbol : void 0; + } + C.getCompletionEntrySymbol = Ie; + var _e; + (function(xe) { + xe[xe.Data = 0] = "Data", xe[xe.JsDocTagName = 1] = "JsDocTagName", xe[xe.JsDocTag = 2] = "JsDocTag", xe[xe.JsDocParameterName = 3] = "JsDocParameterName", xe[xe.Keywords = 4] = "Keywords"; + })(_e || (_e = {})); + var we; + (function(xe) { + xe[xe.ObjectPropertyDeclaration = 0] = "ObjectPropertyDeclaration", xe[xe.Global = 1] = "Global", xe[xe.PropertyAccess = 2] = "PropertyAccess", xe[xe.MemberLike = 3] = "MemberLike", xe[xe.String = 4] = "String", xe[xe.None = 5] = "None"; + })(we = C.CompletionKind || (C.CompletionKind = {})); + function de(xe, vr, mr) { + return e.firstDefined(vr && (vr.isUnion() ? vr.types : [vr]), function(Ar) { + var Oe = Ar && Ar.symbol; + return Oe && Oe.flags & 424 && !e.isAbstractConstructorSymbol(Oe) ? Ae(Oe, xe, mr) : void 0; + }); + } + function ye(xe, vr, mr, Ar) { + var Oe = xe.parent; + switch (xe.kind) { + case 79: + return e.getContextualTypeFromParent(xe, Ar); + case 63: + switch (Oe.kind) { + case 254: + return Ar.getContextualType(Oe.initializer); + case 221: + return Ar.getTypeAtLocation(Oe.left); + case 285: + return Ar.getContextualTypeForJsxAttribute(Oe); + default: + return; + } + case 103: + return Ar.getContextualType(Oe); + case 82: + var nr = e.tryCast(Oe, e.isCaseClause); + return nr ? e.getSwitchedType(nr, Ar) : void 0; + case 18: + return e.isJsxExpression(Oe) && !e.isJsxElement(Oe.parent) && !e.isJsxFragment(Oe.parent) ? Ar.getContextualTypeForJsxAttribute(Oe.parent) : void 0; + default: + var Mr = e.SignatureHelp.getArgumentInfoForCompletions(xe, vr, mr); + return Mr ? Ar.getContextualTypeForArgumentAtIndex(Mr.invocation, Mr.argumentIndex + (xe.kind === 27 ? 1 : 0)) : e.isEqualityOperatorKind(xe.kind) && e.isBinaryExpression(Oe) && e.isEqualityOperatorKind(Oe.operatorToken.kind) ? Ar.getTypeAtLocation(Oe.left) : Ar.getContextualType(xe); + } + } + function Ae(xe, vr, mr) { + var Ar = mr.getAccessibleSymbolChain(xe, vr, 67108863, false); + return Ar ? e.first(Ar) : xe.parent && (er(xe.parent) ? xe : Ae(xe.parent, vr, mr)); + } + function er(xe) { + var vr; + return !!(!((vr = xe.declarations) === null || vr === void 0) && vr.some(function(mr) { + return mr.kind === 305; + })); + } + function ir(xe, vr, mr, Ar, Oe, nr, Mr, Pe, Ue, fr) { + var De = xe.getTypeChecker(), gr = $(mr, Ar), Vr = e.timestamp(), Tr = e.getTokenAtPosition(mr, Oe); + vr("getCompletionData: Get current token: " + (e.timestamp() - Vr)), Vr = e.timestamp(); + var vi = e.isInComment(mr, Oe, Tr); + vr("getCompletionData: Is inside comment: " + (e.timestamp() - Vr)); + var Ui = false, Yi = false; + if (vi) { + if (e.hasDocComment(mr, Oe)) { + if (mr.text.charCodeAt(Oe - 1) === 64) + return { kind: 1 }; + var Wi = e.getLineStartPositionForPosition(Oe, mr); + if (!/[^\*|\s(/)]/.test(mr.text.substring(Wi, Oe))) + return { kind: 2 }; + } + var ct = ii(Tr, Oe); + if (ct) { + if (ct.tagName.pos <= Oe && Oe <= ct.tagName.end) + return { kind: 1 }; + var Li = bo(ct); + if (Li && (Tr = e.getTokenAtPosition(mr, Oe), (!Tr || !e.isDeclarationName(Tr) && (Tr.parent.kind !== 347 || Tr.parent.name !== Tr)) && (Ui = ds(Li))), !Ui && e.isJSDocParameterTag(ct) && (e.nodeIsMissing(ct.name) || ct.name.pos <= Oe && Oe <= ct.name.end)) + return { kind: 3, tag: ct }; + } + if (!Ui) { + vr("Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment."); + return; + } + } + Vr = e.timestamp(); + var nt = !Ui && e.isSourceFileJS(mr), Mt = Ye(Oe, mr), xt = Mt.previousToken, ut = Mt.contextToken; + vr("getCompletionData: Get previous token: " + (e.timestamp() - Vr)); + var Dt = Tr, Rt, Ii = false, Ki = false, Fi = false, ui = false, Bt = false, wt = false, na, Ai = e.getTouchingPropertyName(mr, Oe), Oi = 0, ji = false, Vi = 0; + if (ut) { + var at = pi(ut); + if (ji = at.isNewIdentifierLocation, at.keywordCompletion) { + if (at.isKeywordOnlyCompletion) + return { kind: 4, keywordCompletions: [ve(at.keywordCompletion)], isNewIdentifierLocation: ji }; + Oi = F(at.keywordCompletion); + } + if (at.replacementNode && nr.includeCompletionsForImportStatements && nr.includeCompletionsWithInsertText && (na = at.replacementNode, Vi |= 2), !na && qe(ut)) + return vr("Returning an empty list because completion was requested in an invalid position."), Oi ? he(Oi, nt, Zr()) : void 0; + var At = ut.parent; + if (ut.kind === 24 || ut.kind === 28) + switch (Ii = ut.kind === 24, Ki = ut.kind === 28, At.kind) { + case 206: + Rt = At, Dt = Rt.expression; + var ba = e.getLeftmostAccessExpression(Rt); + if (e.nodeIsMissing(ba) || (e.isCallExpression(Dt) || e.isFunctionLike(Dt)) && Dt.end === ut.pos && Dt.getChildCount(mr) && e.last(Dt.getChildren(mr)).kind !== 21) + return; + break; + case 161: + Dt = At.left; + break; + case 261: + Dt = At.name; + break; + case 200: + Dt = At; + break; + case 231: + Dt = At.getFirstToken(mr), e.Debug.assert(Dt.kind === 100 || Dt.kind === 103); + break; + default: + return; + } + else if (!na && mr.languageVariant === 1) { + if (At && At.kind === 206 && (ut = At, At = At.parent), Tr.parent === Ai) + switch (Tr.kind) { + case 31: + (Tr.parent.kind === 278 || Tr.parent.kind === 280) && (Ai = Tr); + break; + case 43: + Tr.parent.kind === 279 && (Ai = Tr); + break; + } + switch (At.kind) { + case 281: + ut.kind === 43 && (ui = true, Ai = ut); + break; + case 221: + if (!Gi(At)) + break; + case 279: + case 278: + case 280: + wt = true, ut.kind === 29 && (Fi = true, Ai = ut); + break; + case 288: + case 287: + xt.kind === 19 && Tr.kind === 31 && (wt = true); + break; + case 285: + if (At.initializer === xt && xt.end < Oe) { + wt = true; + break; + } + switch (xt.kind) { + case 63: + Bt = true; + break; + case 79: + wt = true, At !== xt.parent && !At.initializer && e.findChildOfKind(At, 63, mr) && (Bt = xt); + } + break; + } + } + } + var $a = e.timestamp(), Qa = 5, ai = false, Dn = false, ka = [], Ba = [], pn = [], Cn = new e.Map(), Bi = St(), kn = e.memoizeOne(function(Ji) { + return e.createModuleSpecifierResolutionHost(Ji ? Pe.getPackageJsonAutoImportProvider() : xe, Pe); + }); + if (Ii || Ki) + Ro(); + else if (Fi) + ka = De.getJsxIntrinsicTagNamesAt(Ai), e.Debug.assertEachIsDefined(ka, "getJsxIntrinsicTagNames() should all be defined"), Co(), Qa = 1, Oi = 0; + else if (ui) { + var xn = ut.parent.parent.openingElement.tagName, Kn = De.getSymbolAtLocation(xn); + Kn && (ka = [Kn]), Qa = 1, Oi = 0; + } else if (!Co()) + return Oi ? he(Oi, nt, ji) : void 0; + vr("getCompletionData: Semantic work: " + (e.timestamp() - $a)); + var Pn = xt && ye(xt, Oe, mr, De), eo = e.mapDefined(Pn && (Pn.isUnion() ? Pn.types : [Pn]), function(Ji) { + return Ji.isLiteral() && !(Ji.flags & 1024) ? Ji.value : void 0; + }), Rn = xt && Pn && de(xt, Pn, De); + return { kind: 0, symbols: ka, completionKind: Qa, isInSnippetScope: Yi, propertyAccessToConvert: Rt, isNewIdentifierLocation: ji, location: Ai, keywordFilters: Oi, literals: eo, symbolToOriginInfoMap: Ba, recommendedCompletion: Rn, previousToken: xt, contextToken: ut, isJsxInitializer: Bt, insideJsDocTagTypeExpression: Ui, symbolToSortTextMap: pn, isTypeOnlyLocation: Bi, isJsxIdentifierExpected: wt, isRightOfOpenTag: Fi, importCompletionNode: na, hasUnresolvedAutoImports: Dn, flags: Vi }; + function Da(Ji) { + switch (Ji.kind) { + case 340: + case 347: + case 341: + case 343: + case 345: + return true; + case 344: + return !!Ji.constraint; + default: + return false; + } + } + function bo(Ji) { + if (Da(Ji)) { + var ce = e.isJSDocTemplateTag(Ji) ? Ji.constraint : Ji.typeExpression; + return ce && ce.kind === 309 ? ce : void 0; + } + } + function Ro() { + Qa = 2; + var Ji = e.isLiteralImportTypeNode(Dt), ce = Ui || Ji && !Dt.isTypeOf || e.isPartOfTypeNode(Dt.parent) || e.isPossiblyTypeArgumentPosition(ut, mr, De), Rr = e.isInRightSideOfInternalImportEqualsDeclaration(Dt); + if (e.isEntityName(Dt) || Ji || e.isPropertyAccessExpression(Dt)) { + var yi = e.isModuleDeclaration(Dt.parent); + yi && (ji = true); + var qi = De.getSymbolAtLocation(Dt); + if (qi && (qi = e.skipAlias(qi, De), qi.flags & 1920)) { + var je = De.getExportsOfModule(qi); + e.Debug.assertEachIsDefined(je, "getExportsOfModule() should all be defined"); + for (var Hr = function(Fo) { + return De.isValidPropertyAccess(Ji ? Dt : Dt.parent, Fo.name); + }, pt = function(Fo) { + return Sr(Fo, De); + }, Pt = yi ? function(Fo) { + var ko; + return !!(Fo.flags & 1920) && !(!((ko = Fo.declarations) === null || ko === void 0) && ko.every(function(Ao) { + return Ao.parent === Dt.parent; + })); + } : Rr ? function(Fo) { + return pt(Fo) || Hr(Fo); + } : ce ? pt : Hr, ga = 0, ua = je; ga < ua.length; ga++) { + var Xn = ua[ga]; + Pt(Xn) && ka.push(Xn); + } + if (!ce && qi.declarations && qi.declarations.some(function(Fo) { + return Fo.kind !== 305 && Fo.kind !== 261 && Fo.kind !== 260; + })) { + var jr = De.getTypeOfSymbolAtLocation(qi, Dt).getNonOptionalType(), fo = false; + if (jr.isNullableType()) { + var xs = Ii && !Ki && nr.includeAutomaticOptionalChainCompletions !== false; + (xs || Ki) && (jr = jr.getNonNullableType(), xs && (fo = true)); + } + En(jr, !!(Dt.flags & 32768), fo); + } + return; + } + } + if (!ce) { + De.tryGetThisTypeAt(Dt, false); + var jr = De.getTypeAtLocation(Dt).getNonOptionalType(), fo = false; + if (jr.isNullableType()) { + var xs = Ii && !Ki && nr.includeAutomaticOptionalChainCompletions !== false; + (xs || Ki) && (jr = jr.getNonNullableType(), xs && (fo = true)); + } + En(jr, !!(Dt.flags & 32768), fo); + } + } + function En(Ji, ce, Rr) { + ji = !!Ji.getStringIndexType(), Ki && e.some(Ji.getCallSignatures()) && (ji = true); + var yi = Dt.kind === 200 ? Dt : Dt.parent; + if (gr) + ka.push.apply(ka, e.filter(qr(Ji, De), function(ua) { + return De.isValidPropertyAccessForCompletions(yi, Ji, ua); + })); + else + for (var qi = 0, je = Ji.getApparentProperties(); qi < je.length; qi++) { + var Hr = je[qi]; + De.isValidPropertyAccessForCompletions(yi, Ji, Hr) && Wn(Hr, false, Rr); + } + if (ce && nr.includeCompletionsWithInsertText) { + var pt = De.getPromisedTypeOfPromise(Ji); + if (pt) + for (var Pt = 0, ga = pt.getApparentProperties(); Pt < ga.length; Pt++) { + var Hr = ga[Pt]; + De.isValidPropertyAccessForCompletions(yi, pt, Hr) && Wn(Hr, true, Rr); + } + } + } + function Wn(Ji, ce, Rr) { + var yi, qi = e.firstDefined(Ji.declarations, function(ko) { + return e.tryCast(e.getNameOfDeclaration(ko), e.isComputedPropertyName); + }); + if (qi) { + var je = to(qi.expression), Hr = je && De.getSymbolAtLocation(je), pt = Hr && Ae(Hr, ut, De); + if (pt && e.addToSeen(Cn, e.getSymbolId(pt))) { + var Pt = ka.length; + ka.push(pt); + var ga = pt.parent; + if (!ga || !e.isExternalModuleSymbol(ga) || De.tryGetMemberInModuleExportsAndProperties(pt.name, ga) !== pt) + Ba[Pt] = { kind: Fo(2) }; + else { + var ua = e.isExternalModuleNameRelative(e.stripQuotes(ga.name)) ? (yi = e.getSourceFileOfModule(ga)) === null || yi === void 0 ? void 0 : yi.fileName : void 0, Xn = (e.codefix.getModuleSpecifierForBestExportInfo([{ exportKind: 0, moduleFileName: ua, isFromPackageJson: false, moduleSymbol: ga, symbol: pt, targetFlags: e.skipAlias(pt, De).flags }], pt.name, Oe, e.isValidTypeOnlyAliasUseSite(Ai), mr, xe, Pe, nr) || {}).moduleSpecifier; + if (Xn) { + var jr = { kind: Fo(6), moduleSymbol: ga, isDefaultExport: false, symbolName: pt.name, exportName: pt.name, fileName: ua, moduleSpecifier: Xn }; + Ba[Pt] = jr; + } + } + } else + nr.includeCompletionsWithInsertText && (xs(Ji), fo(Ji), ka.push(Ji)); + } else + xs(Ji), fo(Ji), ka.push(Ji); + function fo(ko) { + Zt(ko) && (pn[e.getSymbolId(ko)] = C.SortText.LocalDeclarationPriority); + } + function xs(ko) { + nr.includeCompletionsWithInsertText && (ce && e.addToSeen(Cn, e.getSymbolId(ko)) ? Ba[ka.length] = { kind: Fo(8) } : Rr && (Ba[ka.length] = { kind: 16 })); + } + function Fo(ko) { + return Rr ? ko | 16 : ko; + } + } + function to(Ji) { + return e.isIdentifier(Ji) ? Ji : e.isPropertyAccessExpression(Ji) ? to(Ji.expression) : void 0; + } + function Co() { + var Ji = Pi() || Qi() || no() || Ct() || sa() || Ko() || en() || Oo() || ($o(), 1); + return Ji === 1; + } + function Ko() { + return qn(ut) ? (Qa = 5, ji = true, Oi = 4, 1) : 0; + } + function Oo() { + var Ji = So(ut), ce = Ji && De.getContextualType(Ji.attributes); + if (!ce) + return 0; + var Rr = Ji && De.getContextualType(Ji.attributes, 4); + return ka = e.concatenate(ka, js(mi(ce, Rr, Ji.attributes, De), Ji.attributes.properties)), hs(), Qa = 3, ji = false, 1; + } + function no() { + return na ? (ji = true, Jn(), 1) : 0; + } + function $o() { + Oi = mo(ut) ? 5 : 1, Qa = 1, ji = Zr(), xt !== ut && e.Debug.assert(!!xt, "Expected 'contextToken' to be defined when different from 'previousToken'."); + var Ji = xt !== ut ? xt.getStart() : Oe, ce = Ce(ut, Ji, mr) || mr; + Yi = xi(ce); + var Rr = (Bi ? 0 : 111551) | 788968 | 1920 | 2097152, yi = xt && !e.isValidTypeOnlyAliasUseSite(xt); + ka = e.concatenate(ka, De.getSymbolsInScope(ce, Rr)), e.Debug.assertEachIsDefined(ka, "getSymbolsInScope() should all be defined"); + for (var qi = 0; qi < ka.length; qi++) { + var je = ka[qi]; + if (!De.isArgumentsSymbol(je) && !e.some(je.declarations, function(Xn) { + return Xn.getSourceFile() === mr; + }) && (pn[e.getSymbolId(je)] = C.SortText.GlobalsOrKeywords), yi && !(je.flags & 111551)) { + var Hr = je.declarations && e.find(je.declarations, e.isTypeOnlyImportOrExportDeclaration); + if (Hr) { + var pt = { kind: 64, declaration: Hr }; + Ba[qi] = pt; + } + } + } + if (nr.includeCompletionsWithInsertText && ce.kind !== 305) { + var Pt = De.tryGetThisTypeAt(ce, false); + if (Pt && !Wt(Pt, mr, De)) + for (var ga = 0, ua = qr(Pt, De); ga < ua.length; ga++) { + var je = ua[ga]; + Ba[ka.length] = { kind: 1 }, ka.push(je), pn[e.getSymbolId(je)] = C.SortText.SuggestedClassMembers; + } + } + Jn(), Bi && (Oi = ut && e.isAssertionExpression(ut.parent) ? 6 : 7); + } + function Pr() { + return na ? true : ai || !nr.includeCompletionsForModuleExports ? false : mr.externalModuleIndicator || mr.commonJsModuleIndicator || e.compilerOptionsIndicateEsModules(xe.getCompilerOptions()) ? true : e.programContainsModules(xe); + } + function xi(Ji) { + switch (Ji.kind) { + case 305: + case 223: + case 288: + case 235: + return true; + default: + return e.isStatement(Ji); + } + } + function St() { + return Ui || !!na && e.isTypeOnlyImportOrExportDeclaration(Ai.parent) || !pa(ut) && (e.isPossiblyTypeArgumentPosition(ut, mr, De) || e.isPartOfTypeNode(Ai) || dn(ut)); + } + function pa(Ji) { + return Ji && (Ji.kind === 112 && (Ji.parent.kind === 181 || e.isTypeOfExpression(Ji.parent)) || Ji.kind === 128 && Ji.parent.kind === 177); + } + function dn(Ji) { + if (Ji) { + var ce = Ji.parent.kind; + switch (Ji.kind) { + case 58: + return ce === 167 || ce === 166 || ce === 164 || ce === 254 || e.isFunctionLikeKind(ce); + case 63: + return ce === 259; + case 127: + return ce === 229; + case 29: + return ce === 178 || ce === 211; + case 94: + return ce === 163; + } + } + return false; + } + function Jn() { + var Ji, ce; + if (!Pr() || (e.Debug.assert(!(Mr != null && Mr.data), "Should not run 'collectAutoImports' when faster path is available via `data`"), Mr && !Mr.source)) + return; + Vi |= 1; + var Rr = xt === ut && na && ae(na, ut), yi = Rr ? "" : xt && e.isIdentifier(xt) ? xt.text.toLowerCase() : "", qi = (Ji = Pe.getModuleSpecifierCache) === null || Ji === void 0 ? void 0 : Ji.call(Pe), je = e.getExportInfoMap(mr, Pe, xe, fr), Hr = (ce = Pe.getPackageJsonAutoImportProvider) === null || ce === void 0 ? void 0 : ce.call(Pe), pt = Mr ? void 0 : e.createPackageJsonImportFilter(mr, nr, Pe); + se("collectAutoImports", Pe, xe, mr, Oe, nr, !!na, e.isValidTypeOnlyAliasUseSite(Ai), function(ga) { + je.search(mr.path, Fi, function(ua, Xn) { + if (!e.isIdentifierText(ua, e.getEmitScriptTarget(Pe.getCompilationSettings())) || !Mr && e.isStringANonContextualKeyword(ua) || !Bi && !na && !(Xn & 111551) || Bi && !(Xn & 790504)) + return false; + var jr = ua.charCodeAt(0); + return Fi && (jr < 65 || jr > 90) ? false : Mr ? true : Wr(ua, yi); + }, function(ua, Xn, jr, fo) { + var xs; + if (!(Mr && !e.some(ua, function(su) { + return Mr.source === e.stripQuotes(su.moduleSymbol.name); + }))) { + var Fo = e.find(ua, Pt); + if (!!Fo) { + var ko = ga.tryResolve(ua, Xn, jr) || {}; + if (ko !== "failed") { + var Ao = Fo, Ms; + ko !== "skipped" && (xs = ko.exportInfo, Ao = xs === void 0 ? Fo : xs, Ms = ko.moduleSpecifier); + var Bs = Ao.exportKind === 1, xc = Bs && e.getLocalSymbolForExportDefault(Ao.symbol) || Ao.symbol; + Qe(xc, { kind: Ms ? 32 : 4, moduleSpecifier: Ms, symbolName: Xn, exportMapKey: fo, exportName: Ao.exportKind === 2 ? "export=" : Ao.symbol.name, fileName: Ao.moduleFileName, isDefaultExport: Bs, moduleSymbol: Ao.moduleSymbol, isFromPackageJson: Ao.isFromPackageJson }); + } + } + } + }), Dn = ga.skippedAny(), Vi |= ga.resolvedAny() ? 8 : 0, Vi |= ga.resolvedBeyondLimit() ? 16 : 0; + }); + function Pt(ga) { + var ua = e.tryCast(ga.moduleSymbol.valueDeclaration, e.isSourceFile); + if (!ua) { + var Xn = e.stripQuotes(ga.moduleSymbol.name); + return e.JsTyping.nodeCoreModules.has(Xn) && e.startsWith(Xn, "node:") !== e.shouldUseUriStyleNodeCoreModules(mr, xe) ? false : pt ? pt.allowsImportingAmbientModule(ga.moduleSymbol, kn(ga.isFromPackageJson)) : true; + } + return e.isImportableFile(ga.isFromPackageJson ? Hr : xe, mr, ua, nr, pt, kn(ga.isFromPackageJson), qi); + } + } + function Qe(Ji, ce) { + var Rr = e.getSymbolId(Ji); + pn[Rr] !== C.SortText.GlobalsOrKeywords && (Ba[ka.length] = ce, pn[Rr] = na ? C.SortText.LocationPriority : C.SortText.AutoImportSuggestions, ka.push(Ji)); + } + function Gr(Ji, ce) { + e.isInJSFile(Ai) || Ji.forEach(function(Rr) { + if (!!S(Rr)) { + var yi = Er(Rr, e.getEmitScriptTarget(Ar), void 0, 0, false); + if (!!yi) { + var qi = yi.name, je = I(Rr, qi, ce, xe, Pe, Ar, nr, Ue); + if (!!je) { + var Hr = Ke({ kind: 128 }, je); + Vi |= 32, Ba[ka.length] = Hr, ka.push(Rr); + } + } + } + }); + } + function S(Ji) { + return !!(Ji.flags & 8196); + } + function Ce(Ji, ce, Rr) { + for (var yi = Ji; yi && !e.positionBelongsToNode(yi, ce, Rr); ) + yi = yi.parent; + return yi; + } + function qe(Ji) { + var ce = e.timestamp(), Rr = Si(Ji) || Go(Ji) || Vc(Ji) || br(Ji) || e.isBigIntLiteral(Ji); + return vr("getCompletionsAtPosition: isCompletionListBlocker: " + (e.timestamp() - ce)), Rr; + } + function br(Ji) { + if (Ji.kind === 11) + return true; + if (Ji.kind === 31 && Ji.parent) { + if (Ai === Ji.parent && (Ai.kind === 280 || Ai.kind === 279)) + return false; + if (Ji.parent.kind === 280) + return Ai.parent.kind !== 280; + if (Ji.parent.kind === 281 || Ji.parent.kind === 279) + return !!Ji.parent.parent && Ji.parent.parent.kind === 278; + } + return false; + } + function Zr() { + if (ut) { + var Ji = ut.parent.kind, ce = wr(ut); + switch (ce) { + case 27: + return Ji === 208 || Ji === 171 || Ji === 209 || Ji === 204 || Ji === 221 || Ji === 179 || Ji === 205; + case 20: + return Ji === 208 || Ji === 171 || Ji === 209 || Ji === 212 || Ji === 191; + case 22: + return Ji === 204 || Ji === 176 || Ji === 162; + case 141: + case 142: + case 100: + return true; + case 24: + return Ji === 261; + case 18: + return Ji === 257 || Ji === 205; + case 63: + return Ji === 254 || Ji === 221; + case 15: + return Ji === 223; + case 16: + return Ji === 233; + case 131: + return Ji === 169 || Ji === 297; + case 41: + return Ji === 169; + } + if (yr(ce)) + return true; + } + return false; + } + function Si(Ji) { + return (e.isRegularExpressionLiteral(Ji) || e.isStringTextContainingNode(Ji)) && (e.rangeContainsPositionExclusive(e.createTextRangeFromSpan(e.createTextSpanFromNode(Ji)), Oe) || Oe === Ji.end && (!!Ji.isUnterminated || e.isRegularExpressionLiteral(Ji))); + } + function Pi() { + var Ji = Di(ut); + if (!Ji) + return 0; + var ce = e.isIntersectionTypeNode(Ji.parent) ? Ji.parent : void 0, Rr = ce || Ji, yi = wi(Rr, De); + if (!yi) + return 0; + var qi = De.getTypeFromTypeNode(Rr), je = qr(yi, De), Hr = qr(qi, De), pt = new e.Set(); + return Hr.forEach(function(Pt) { + return pt.add(Pt.escapedName); + }), ka = e.concatenate(ka, e.filter(je, function(Pt) { + return !pt.has(Pt.escapedName); + })), Qa = 0, ji = true, 1; + } + function Qi() { + var Ji = ka.length, ce = Cr(ut); + if (!ce) + return 0; + Qa = 0; + var Rr, yi; + if (ce.kind === 205) { + var qi = _r(ce, De); + if (qi === void 0) + return ce.flags & 33554432 ? 2 : (ai = true, 0); + var je = De.getContextualType(ce, 4), Hr = (je || qi).getStringIndexType(), pt = (je || qi).getNumberIndexType(); + if (ji = !!Hr || !!pt, Rr = mi(qi, je, ce, De), yi = ce.properties, Rr.length === 0 && !pt) + return ai = true, 0; + } else { + e.Debug.assert(ce.kind === 201), ji = false; + var Pt = e.getRootDeclaration(ce.parent); + if (!e.isVariableLike(Pt)) + return e.Debug.fail("Root declaration is not variable-like."); + var ga = e.hasInitializer(Pt) || !!e.getEffectiveTypeAnnotationNode(Pt) || Pt.parent.parent.kind === 244; + if (!ga && Pt.kind === 164 && (e.isExpression(Pt.parent) ? ga = !!De.getContextualType(Pt.parent) : (Pt.parent.kind === 169 || Pt.parent.kind === 173) && (ga = e.isExpression(Pt.parent.parent) && !!De.getContextualType(Pt.parent.parent))), ga) { + var ua = De.getTypeAtLocation(ce); + if (!ua) + return 2; + Rr = De.getPropertiesOfType(ua).filter(function(jr) { + return De.isPropertyAccessible(ce, false, false, ua, jr); + }), yi = ce.elements; + } + } + if (Rr && Rr.length > 0) { + var Xn = Xs(Rr, e.Debug.checkDefined(yi)); + ka = e.concatenate(ka, Xn), hs(), ce.kind === 205 && nr.includeCompletionsWithObjectLiteralMethodSnippets && nr.includeCompletionsWithInsertText && (ps(Ji), Gr(Xn, ce)); + } + return 1; + } + function Ct() { + if (!ut) + return 0; + var Ji = ut.kind === 18 || ut.kind === 27 ? e.tryCast(ut.parent, e.isNamedImportsOrExports) : e.isTypeKeywordTokenOrIdentifier(ut) ? e.tryCast(ut.parent.parent, e.isNamedImportsOrExports) : void 0; + if (!Ji) + return 0; + e.isTypeKeywordTokenOrIdentifier(ut) || (Oi = 8); + var ce = (Ji.kind === 269 ? Ji.parent.parent : Ji.parent).moduleSpecifier; + if (!ce) + return ji = true, Ji.kind === 269 ? 2 : 0; + var Rr = De.getSymbolAtLocation(ce); + if (!Rr) + return ji = true, 2; + Qa = 3, ji = false; + var yi = De.getExportsAndPropertiesOfModule(Rr), qi = new e.Set(Ji.elements.filter(function(Hr) { + return !ds(Hr); + }).map(function(Hr) { + return (Hr.propertyName || Hr.name).escapedText; + })), je = yi.filter(function(Hr) { + return Hr.escapedName !== "default" && !qi.has(Hr.escapedName); + }); + return ka = e.concatenate(ka, je), je.length || (Oi = 0), 1; + } + function sa() { + var Ji, ce = ut && (ut.kind === 18 || ut.kind === 27) ? e.tryCast(ut.parent, e.isNamedExports) : void 0; + if (!ce) + return 0; + var Rr = e.findAncestor(ce, e.or(e.isSourceFile, e.isModuleDeclaration)); + return Qa = 5, ji = false, (Ji = Rr.locals) === null || Ji === void 0 || Ji.forEach(function(yi, qi) { + var je, Hr; + ka.push(yi), !((Hr = (je = Rr.symbol) === null || je === void 0 ? void 0 : je.exports) === null || Hr === void 0) && Hr.has(qi) && (pn[e.getSymbolId(yi)] = C.SortText.OptionalMember); + }), 1; + } + function en() { + var Ji = si(mr, ut, Ai, Oe); + if (!Ji) + return 0; + if (Qa = 3, ji = true, Oi = ut.kind === 41 ? 0 : e.isClassLike(Ji) ? 2 : 3, !e.isClassLike(Ji)) + return 1; + var ce = ut.kind === 26 ? ut.parent.parent : ut.parent, Rr = e.isClassElement(ce) ? e.getEffectiveModifierFlags(ce) : 0; + if (ut.kind === 79 && !ds(ut)) + switch (ut.getText()) { + case "private": + Rr = Rr | 8; + break; + case "static": + Rr = Rr | 32; + break; + case "override": + Rr = Rr | 16384; + break; + } + if (e.isClassStaticBlockDeclaration(ce) && (Rr |= 32), !(Rr & 8)) { + var yi = e.isClassLike(Ji) && Rr & 16384 ? e.singleElementArray(e.getEffectiveBaseTypeNode(Ji)) : e.getAllSuperTypeNodes(Ji), qi = e.flatMap(yi, function(je) { + var Hr = De.getTypeAtLocation(je); + return Rr & 32 ? (Hr == null ? void 0 : Hr.symbol) && De.getPropertiesOfType(De.getTypeOfSymbolAtLocation(Hr.symbol, Ji)) : Hr && De.getPropertiesOfType(Hr); + }); + ka = e.concatenate(ka, Qs(qi, Ji.members, Rr)); + } + return 1; + } + function Wa(Ji) { + return !!Ji.parent && e.isParameter(Ji.parent) && e.isConstructorDeclaration(Ji.parent.parent) && (e.isParameterPropertyModifier(Ji.kind) || e.isDeclarationName(Ji)); + } + function qn(Ji) { + if (Ji) { + var ce = Ji.parent; + switch (Ji.kind) { + case 20: + case 27: + return e.isConstructorDeclaration(Ji.parent) ? Ji.parent : void 0; + default: + if (Wa(Ji)) + return ce.parent; + } + } + } + function mo(Ji) { + if (Ji) { + var ce, Rr = e.findAncestor(Ji.parent, function(yi) { + return e.isClassLike(yi) ? "quit" : e.isFunctionLikeDeclaration(yi) && ce === yi.body ? true : (ce = yi, false); + }); + return Rr && Rr; + } + } + function So(Ji) { + if (Ji) { + var ce = Ji.parent; + switch (Ji.kind) { + case 31: + case 30: + case 43: + case 79: + case 206: + case 286: + case 285: + case 287: + if (ce && (ce.kind === 279 || ce.kind === 280)) { + if (Ji.kind === 31) { + var Rr = e.findPrecedingToken(Ji.pos, mr, void 0); + if (!ce.typeArguments || Rr && Rr.kind === 43) + break; + } + return ce; + } else if (ce.kind === 285) + return ce.parent.parent; + break; + case 10: + if (ce && (ce.kind === 285 || ce.kind === 287)) + return ce.parent.parent; + break; + case 19: + if (ce && ce.kind === 288 && ce.parent && ce.parent.kind === 285) + return ce.parent.parent.parent; + if (ce && ce.kind === 287) + return ce.parent.parent; + break; + } + } + } + function Go(Ji) { + var ce = Ji.parent, Rr = ce.kind; + switch (Ji.kind) { + case 27: + return Rr === 254 || Kc(Ji) || Rr === 237 || Rr === 260 || Pc(Rr) || Rr === 258 || Rr === 202 || Rr === 259 || e.isClassLike(ce) && !!ce.typeParameters && ce.typeParameters.end >= Ji.pos; + case 24: + return Rr === 202; + case 58: + return Rr === 203; + case 22: + return Rr === 202; + case 20: + return Rr === 292 || Pc(Rr); + case 18: + return Rr === 260; + case 29: + return Rr === 257 || Rr === 226 || Rr === 258 || Rr === 259 || e.isFunctionLikeKind(Rr); + case 124: + return Rr === 167 && !e.isClassLike(ce.parent); + case 25: + return Rr === 164 || !!ce.parent && ce.parent.kind === 202; + case 123: + case 121: + case 122: + return Rr === 164 && !e.isConstructorDeclaration(ce.parent); + case 127: + return Rr === 270 || Rr === 275 || Rr === 268; + case 136: + case 149: + return !Xi(Ji); + case 79: + if (Rr === 270 && Ji === ce.name && Ji.text === "type") + return false; + break; + case 84: + case 92: + case 118: + case 98: + case 113: + case 100: + case 119: + case 85: + case 137: + return true; + case 152: + return Rr !== 270; + case 41: + return e.isFunctionLike(Ji.parent) && !e.isMethodDeclaration(Ji.parent); + } + if (yr(wr(Ji)) && Xi(Ji) || Wa(Ji) && (!e.isIdentifier(Ji) || e.isParameterPropertyModifier(wr(Ji)) || ds(Ji))) + return false; + switch (wr(Ji)) { + case 126: + case 84: + case 85: + case 135: + case 92: + case 98: + case 118: + case 119: + case 121: + case 122: + case 123: + case 124: + case 113: + return true; + case 131: + return e.isPropertyDeclaration(Ji.parent); + } + var yi = e.findAncestor(Ji.parent, e.isClassLike); + if (yi && Ji === xt && ys(Ji, Oe)) + return false; + var qi = e.getAncestor(Ji.parent, 167); + if (qi && Ji !== xt && e.isClassLike(xt.parent.parent) && Oe <= xt.end) { + if (ys(Ji, xt.end)) + return false; + if (Ji.kind !== 63 && (e.isInitializedProperty(qi) || e.hasType(qi))) + return true; + } + return e.isDeclarationName(Ji) && !e.isShorthandPropertyAssignment(Ji.parent) && !e.isJsxAttribute(Ji.parent) && !(e.isClassLike(Ji.parent) && (Ji !== xt || Oe > xt.end)); + } + function ys(Ji, ce) { + return Ji.kind !== 63 && (Ji.kind === 26 || !e.positionsAreOnSameLine(Ji.end, ce, mr)); + } + function Pc(Ji) { + return e.isFunctionLikeKind(Ji) && Ji !== 171; + } + function Vc(Ji) { + if (Ji.kind === 8) { + var ce = Ji.getFullText(); + return ce.charAt(ce.length - 1) === "."; + } + return false; + } + function Kc(Ji) { + return Ji.parent.kind === 255 && !e.isPossiblyTypeArgumentPosition(Ji, mr, De); + } + function Xs(Ji, ce) { + if (ce.length === 0) + return Ji; + for (var Rr = new e.Set(), yi = new e.Set(), qi = 0, je = ce; qi < je.length; qi++) { + var Hr = je[qi]; + if (!(Hr.kind !== 296 && Hr.kind !== 297 && Hr.kind !== 203 && Hr.kind !== 169 && Hr.kind !== 172 && Hr.kind !== 173 && Hr.kind !== 298) && !ds(Hr)) { + var pt = void 0; + if (e.isSpreadAssignment(Hr)) + pc(Hr, Rr); + else if (e.isBindingElement(Hr) && Hr.propertyName) + Hr.propertyName.kind === 79 && (pt = Hr.propertyName.escapedText); + else { + var Pt = e.getNameOfDeclaration(Hr); + pt = Pt && e.isPropertyNameLiteral(Pt) ? e.getEscapedTextOfIdentifierOrLiteral(Pt) : void 0; + } + pt !== void 0 && yi.add(pt); + } + } + var ga = Ji.filter(function(ua) { + return !yi.has(ua.escapedName); + }); + return tc(Rr, ga), ga; + } + function pc(Ji, ce) { + var Rr = Ji.expression, yi = De.getSymbolAtLocation(Rr), qi = yi && De.getTypeOfSymbolAtLocation(yi, Rr), je = qi && qi.properties; + je && je.forEach(function(Hr) { + ce.add(Hr.name); + }); + } + function hs() { + ka.forEach(function(Ji) { + var ce; + if (Ji.flags & 16777216) { + var Rr = e.getSymbolId(Ji); + pn[Rr] = (ce = pn[Rr]) !== null && ce !== void 0 ? ce : C.SortText.OptionalMember; + } + }); + } + function tc(Ji, ce) { + if (Ji.size !== 0) + for (var Rr = 0, yi = ce; Rr < yi.length; Rr++) { + var qi = yi[Rr]; + Ji.has(qi.name) && (pn[e.getSymbolId(qi)] = C.SortText.MemberDeclaredBySpreadAssignment); + } + } + function ps(Ji) { + for (var ce, Rr = Ji; Rr < ka.length; Rr++) { + var yi = ka[Rr], qi = e.getSymbolId(yi), je = Ba == null ? void 0 : Ba[Rr], Hr = e.getEmitScriptTarget(Ar), pt = Er(yi, Hr, je, 0, false); + if (pt) { + var Pt = (ce = pn[qi]) !== null && ce !== void 0 ? ce : C.SortText.LocationPriority, ga = pt.name; + pn[qi] = C.SortText.ObjectLiteralProperty(Pt, ga); + } + } + } + function Qs(Ji, ce, Rr) { + for (var yi = new e.Set(), qi = 0, je = ce; qi < je.length; qi++) { + var Hr = je[qi]; + if (!(Hr.kind !== 167 && Hr.kind !== 169 && Hr.kind !== 172 && Hr.kind !== 173) && !ds(Hr) && !e.hasEffectiveModifier(Hr, 8) && e.isStatic(Hr) === !!(Rr & 32)) { + var pt = e.getPropertyNameForPropertyNameNode(Hr.name); + pt && yi.add(pt); + } + } + return Ji.filter(function(Pt) { + return !yi.has(Pt.escapedName) && !!Pt.declarations && !(e.getDeclarationModifierFlagsFromSymbol(Pt) & 8) && !(Pt.valueDeclaration && e.isPrivateIdentifierClassElementDeclaration(Pt.valueDeclaration)); + }); + } + function js(Ji, ce) { + for (var Rr = new e.Set(), yi = new e.Set(), qi = 0, je = ce; qi < je.length; qi++) { + var Hr = je[qi]; + ds(Hr) || (Hr.kind === 285 ? Rr.add(Hr.name.escapedText) : e.isJsxSpreadAttribute(Hr) && pc(Hr, yi)); + } + var pt = Ji.filter(function(Pt) { + return !Rr.has(Pt.escapedName); + }); + return tc(yi, pt), pt; + } + function ds(Ji) { + return Ji.getStart(mr) <= Oe && Oe <= Ji.getEnd(); + } + } + function Cr(xe) { + if (xe) { + var vr = xe.parent; + switch (xe.kind) { + case 18: + case 27: + if (e.isObjectLiteralExpression(vr) || e.isObjectBindingPattern(vr)) + return vr; + break; + case 41: + return e.isMethodDeclaration(vr) ? e.tryCast(vr.parent, e.isObjectLiteralExpression) : void 0; + case 79: + return xe.text === "async" && e.isShorthandPropertyAssignment(xe.parent) ? xe.parent.parent : void 0; + } + } + } + function Ye(xe, vr) { + var mr = e.findPrecedingToken(xe, vr); + if (mr && xe <= mr.end && (e.isMemberName(mr) || e.isKeyword(mr.kind))) { + var Ar = e.findPrecedingToken(mr.getFullStart(), vr, void 0); + return { contextToken: Ar, previousToken: mr }; + } + return { contextToken: mr, previousToken: mr }; + } + function Br(xe, vr, mr, Ar) { + var Oe = vr.isPackageJsonImport ? Ar.getPackageJsonAutoImportProvider() : mr, nr = Oe.getTypeChecker(), Mr = vr.ambientModuleName ? nr.tryFindAmbientModule(vr.ambientModuleName) : vr.fileName ? nr.getMergedSymbol(e.Debug.checkDefined(Oe.getSourceFile(vr.fileName)).symbol) : void 0; + if (!!Mr) { + var Pe = vr.exportName === "export=" ? nr.resolveExternalModuleSymbol(Mr) : nr.tryGetMemberInModuleExportsAndProperties(vr.exportName, Mr); + if (!!Pe) { + var Ue = vr.exportName === "default"; + return Pe = Ue && e.getLocalSymbolForExportDefault(Pe) || Pe, { symbol: Pe, origin: fe(vr, xe, Mr) }; + } + } + } + function Er(xe, vr, mr, Ar, Oe) { + var nr = p(mr) ? mr.symbolName : xe.name; + if (!(nr === void 0 || xe.flags & 1536 && e.isSingleOrDoubleQuote(nr.charCodeAt(0)) || e.isKnownSymbol(xe))) { + var Mr = { name: nr, needsConvertPropertyAccess: false }; + if (e.isIdentifierText(nr, vr, Oe ? 1 : 0) || xe.valueDeclaration && e.isPrivateIdentifierClassElementDeclaration(xe.valueDeclaration)) + return Mr; + switch (Ar) { + case 3: + return; + case 0: + return { name: JSON.stringify(nr), needsConvertPropertyAccess: false }; + case 2: + case 1: + return nr.charCodeAt(0) === 32 ? void 0 : { name: nr, needsConvertPropertyAccess: true }; + case 5: + case 4: + return Mr; + default: + e.Debug.assertNever(Ar); + } + } + } + var Ne = [], n = e.memoize(function() { + for (var xe = [], vr = 81; vr <= 160; vr++) + xe.push({ name: e.tokenToString(vr), kind: "keyword", kindModifiers: "", sortText: C.SortText.GlobalsOrKeywords }); + return xe; + }); + function lr(xe, vr) { + if (!vr) + return be(xe); + var mr = xe + 8 + 1; + return Ne[mr] || (Ne[mr] = be(xe).filter(function(Ar) { + return !Ge(e.stringToToken(Ar.name)); + })); + } + function be(xe) { + return Ne[xe] || (Ne[xe] = n().filter(function(vr) { + var mr = e.stringToToken(vr.name); + switch (xe) { + case 0: + return false; + case 1: + return Ir(mr) || mr === 135 || mr === 141 || mr === 152 || mr === 142 || mr === 126 || e.isTypeKeyword(mr) && mr !== 153; + case 5: + return Ir(mr); + case 2: + return yr(mr); + case 3: + return ur(mr); + case 4: + return e.isParameterPropertyModifier(mr); + case 6: + return e.isTypeKeyword(mr) || mr === 85; + case 7: + return e.isTypeKeyword(mr); + case 8: + return mr === 152; + default: + return e.Debug.assertNever(xe); + } + })); + } + function Ge(xe) { + switch (xe) { + case 126: + case 130: + case 158: + case 133: + case 135: + case 92: + case 157: + case 117: + case 137: + case 118: + case 139: + case 140: + case 141: + case 142: + case 143: + case 147: + case 148: + case 159: + case 121: + case 122: + case 123: + case 145: + case 150: + case 151: + case 152: + case 154: + case 155: + return true; + default: + return false; + } + } + function ur(xe) { + return xe === 145; + } + function yr(xe) { + switch (xe) { + case 126: + case 134: + case 136: + case 149: + case 131: + case 135: + case 159: + return true; + default: + return e.isClassMemberModifier(xe); + } + } + function Ir(xe) { + return xe === 131 || xe === 132 || xe === 127 || !e.isContextualKeyword(xe) && !yr(xe); + } + function wr(xe) { + return e.isIdentifier(xe) ? xe.originalKeywordKind || 0 : xe.kind; + } + function Ur(xe, vr) { + var mr = []; + if (xe) { + var Ar = xe.getSourceFile(), Oe = xe.parent, nr = Ar.getLineAndCharacterOfPosition(xe.end).line, Mr = Ar.getLineAndCharacterOfPosition(vr).line; + (e.isImportDeclaration(Oe) || e.isExportDeclaration(Oe) && Oe.moduleSpecifier) && xe === Oe.moduleSpecifier && nr === Mr && mr.push({ name: e.tokenToString(129), kind: "keyword", kindModifiers: "", sortText: C.SortText.GlobalsOrKeywords }); + } + return mr; + } + function ii(xe, vr) { + return e.findAncestor(xe, function(mr) { + return e.isJSDocTag(mr) && e.rangeContainsPosition(mr, vr) ? true : e.isJSDoc(mr) ? "quit" : false; + }); + } + function mi(xe, vr, mr, Ar) { + var Oe = vr && vr !== xe, nr = Oe && !(vr.flags & 3) ? Ar.getUnionType([xe, vr]) : xe, Mr = pe(nr, mr, Ar); + return nr.isClass() && or(Mr) ? [] : Oe ? e.filter(Mr, Pe) : Mr; + function Pe(Ue) { + return e.length(Ue.declarations) ? e.some(Ue.declarations, function(fr) { + return fr.parent !== mr; + }) : true; + } + } + C.getPropertiesForObjectExpression = mi; + function pe(xe, vr, mr) { + return xe.isUnion() ? mr.getAllPossiblePropertiesOfTypes(e.filter(xe.types, function(Ar) { + return !(Ar.flags & 131068 || mr.isArrayLikeType(Ar) || mr.isTypeInvalidDueToUnionDiscriminant(Ar, vr) || e.typeHasCallOrConstructSignatures(Ar, mr) || Ar.isClass() && or(Ar.getApparentProperties())); + })) : xe.getApparentProperties(); + } + function or(xe) { + return e.some(xe, function(vr) { + return !!(e.getDeclarationModifierFlagsFromSymbol(vr) & 24); + }); + } + function qr(xe, vr) { + return xe.isUnion() ? e.Debug.checkEachDefined(vr.getAllPossiblePropertiesOfTypes(xe.types), "getAllPossiblePropertiesOfTypes() should all be defined") : e.Debug.checkEachDefined(xe.getApparentProperties(), "getApparentProperties() should all be defined"); + } + function si(xe, vr, mr, Ar) { + switch (mr.kind) { + case 348: + return e.tryCast(mr.parent, e.isObjectTypeDeclaration); + case 1: + var Oe = e.tryCast(e.lastOrUndefined(e.cast(mr.parent, e.isSourceFile).statements), e.isObjectTypeDeclaration); + if (Oe && !e.findChildOfKind(Oe, 19, xe)) + return Oe; + break; + case 79: { + if (e.isPropertyDeclaration(mr.parent) && mr.parent.initializer === mr) + return; + if (Xi(mr)) + return e.findAncestor(mr, e.isObjectTypeDeclaration); + } + } + if (!!vr) { + if (mr.kind === 134 || e.isIdentifier(vr) && e.isPropertyDeclaration(vr.parent) && e.isClassLike(mr)) + return e.findAncestor(vr, e.isClassLike); + switch (vr.kind) { + case 63: + return; + case 26: + case 19: + return Xi(mr) && mr.parent.name === mr ? mr.parent.parent : e.tryCast(mr, e.isObjectTypeDeclaration); + case 18: + case 27: + return e.tryCast(vr.parent, e.isObjectTypeDeclaration); + default: + if (!Xi(vr)) + return e.getLineAndCharacterOfPosition(xe, vr.getEnd()).line !== e.getLineAndCharacterOfPosition(xe, Ar).line && e.isObjectTypeDeclaration(mr) ? mr : void 0; + var nr = e.isClassLike(vr.parent.parent) ? yr : ur; + return nr(vr.kind) || vr.kind === 41 || e.isIdentifier(vr) && nr(e.stringToToken(vr.text)) ? vr.parent.parent : void 0; + } + } + } + function Di(xe) { + if (!!xe) { + var vr = xe.parent; + switch (xe.kind) { + case 18: + if (e.isTypeLiteralNode(vr)) + return vr; + break; + case 26: + case 27: + case 79: + if (vr.kind === 166 && e.isTypeLiteralNode(vr.parent)) + return vr.parent; + break; + } + } + } + function wi(xe, vr) { + if (!!xe) { + if (e.isTypeNode(xe) && e.isTypeReferenceType(xe.parent)) + return vr.getTypeArgumentConstraint(xe); + var mr = wi(xe.parent, vr); + if (!!mr) + switch (xe.kind) { + case 166: + return vr.getTypeOfPropertyOfContextualType(mr, xe.symbol.escapedName); + case 188: + case 182: + case 187: + return mr; + } + } + } + function Xi(xe) { + return xe.parent && e.isClassOrTypeElement(xe.parent) && e.isObjectTypeDeclaration(xe.parent.parent); + } + function et(xe, vr, mr, Ar) { + switch (vr) { + case ".": + case "@": + return true; + case '"': + case "'": + case "`": + return !!mr && e.isStringLiteralOrTemplate(mr) && Ar === mr.getStart(xe) + 1; + case "#": + return !!mr && e.isPrivateIdentifier(mr) && !!e.getContainingClass(mr); + case "<": + return !!mr && mr.kind === 29 && (!e.isBinaryExpression(mr.parent) || Gi(mr.parent)); + case "/": + return !!mr && (e.isStringLiteralLike(mr) ? !!e.tryGetImportFromModuleSpecifier(mr) : mr.kind === 43 && e.isJsxClosingElement(mr.parent)); + case " ": + return !!mr && e.isImportKeyword(mr) && mr.parent.kind === 305; + default: + return e.Debug.assertNever(vr); + } + } + function Gi(xe) { + var vr = xe.left; + return e.nodeIsMissing(vr); + } + function Wt(xe, vr, mr) { + var Ar = mr.resolveName("self", void 0, 111551, false); + if (Ar && mr.getTypeOfSymbolAtLocation(Ar, vr) === xe) + return true; + var Oe = mr.resolveName("global", void 0, 111551, false); + if (Oe && mr.getTypeOfSymbolAtLocation(Oe, vr) === xe) + return true; + var nr = mr.resolveName("globalThis", void 0, 111551, false); + return !!(nr && mr.getTypeOfSymbolAtLocation(nr, vr) === xe); + } + function Zt(xe) { + return !!(xe.valueDeclaration && e.getEffectiveModifierFlags(xe.valueDeclaration) & 32 && e.isClassLike(xe.valueDeclaration.parent)); + } + function _r(xe, vr) { + var mr = vr.getContextualType(xe); + if (mr) + return mr; + var Ar = e.walkUpParenthesizedExpressions(xe.parent); + if (e.isBinaryExpression(Ar) && Ar.operatorToken.kind === 63 && xe === Ar.left) + return vr.getTypeAtLocation(Ar); + if (e.isExpression(Ar)) + return vr.getContextualType(Ar); + } + function pi(xe) { + var vr, mr = false, Ar = Oe(); + return { isKeywordOnlyCompletion: mr, keywordCompletion: vr, isNewIdentifierLocation: !!(Ar || vr === 152), replacementNode: Ar && e.rangeIsOnSingleLine(Ar, Ar.getSourceFile()) ? Ar : void 0 }; + function Oe() { + var nr = xe.parent; + if (e.isImportEqualsDeclaration(nr)) + return vr = xe.kind === 152 ? void 0 : 152, Jr(nr.moduleReference) ? nr : void 0; + if (ae(nr, xe) && Xe(nr.parent)) + return nr; + if (e.isNamedImports(nr) || e.isNamespaceImport(nr)) { + if (!nr.parent.isTypeOnly && (xe.kind === 18 || xe.kind === 100 || xe.kind === 27) && (vr = 152), Xe(nr)) + if (xe.kind === 19 || xe.kind === 79) + mr = true, vr = 156; + else + return nr.parent.parent; + return; + } + if (e.isImportKeyword(xe) && e.isSourceFile(nr)) + return vr = 152, xe; + if (e.isImportKeyword(xe) && e.isImportDeclaration(nr)) + return vr = 152, Jr(nr.moduleSpecifier) ? nr : void 0; + } + } + function ae(xe, vr) { + return e.isImportSpecifier(xe) && (xe.isTypeOnly || vr === xe.name && e.isTypeKeywordTokenOrIdentifier(vr)); + } + function Xe(xe) { + return Jr(xe.parent.parent.moduleSpecifier) && (e.isNamespaceImport(xe) || xe.elements.length < 2) && !xe.parent.name; + } + function Jr(xe) { + var vr; + return e.nodeIsMissing(xe) ? true : !(!((vr = e.tryCast(e.isExternalModuleReference(xe) ? xe.expression : xe, e.isStringLiteralLike)) === null || vr === void 0) && vr.text); + } + function ti(xe) { + var vr = e.findAncestor(xe, function(mr) { + return e.isFunctionBlock(mr) || Ze(mr) || e.isBindingPattern(mr) ? "quit" : e.isVariableDeclaration(mr); + }); + return vr; + } + function Ze(xe) { + return xe.parent && e.isArrowFunction(xe.parent) && xe.parent.body === xe; + } + function Sr(xe, vr, mr) { + return mr === void 0 && (mr = new e.Map()), Ar(xe) || Ar(e.skipAlias(xe.exportSymbol || xe, vr)); + function Ar(Oe) { + return !!(Oe.flags & 788968) || vr.isUnknownSymbol(Oe) || !!(Oe.flags & 1536) && e.addToSeen(mr, e.getSymbolId(Oe)) && vr.getExportsOfModule(Oe).some(function(nr) { + return Sr(nr, vr, mr); + }); + } + } + function zr(xe, vr) { + var mr = e.skipAlias(xe, vr).declarations; + return !!e.length(mr) && e.every(mr, e.isDeprecatedDeclaration); + } + function Wr(xe, vr) { + if (vr.length === 0) + return true; + for (var mr = false, Ar, Oe = 0, nr = xe.length, Mr = 0; Mr < nr; Mr++) { + var Pe = xe.charCodeAt(Mr), Ue = vr.charCodeAt(Oe); + if ((Pe === Ue || Pe === Je(Ue)) && (mr || (mr = Ar === void 0 || 97 <= Ar && Ar <= 122 && 65 <= Pe && Pe <= 90 || Ar === 95 && Pe !== 95), mr && Oe++, Oe === vr.length)) + return true; + Ar = Pe; + } + return false; + } + function Je(xe) { + return 97 <= xe && xe <= 122 ? xe - 32 : xe; + } + })(a = e.Completions || (e.Completions = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w($, A, y, V, L) { + var P = e.getTouchingPropertyName(y, V); + if (P.parent && (e.isJsxOpeningElement(P.parent) && P.parent.tagName === P || e.isJsxClosingElement(P.parent))) { + var k = P.parent.parent, Y = k.openingElement, U = k.closingElement, j = [Y, U].map(function(H) { + var I = H.tagName; + return B(I, y); + }); + return [{ fileName: y.fileName, highlightSpans: j }]; + } + return E(V, P, $, A, L) || Q(P, y); + } + C.getDocumentHighlights = w; + function B($, A) { + return { fileName: A.fileName, textSpan: e.createTextSpanFromNode($, A), kind: "none" }; + } + function E($, A, y, V, L) { + var P = new e.Set(L.map(function(j) { + return j.fileName; + })), k = e.FindAllReferences.getReferenceEntriesForNode($, A, y, L, V, void 0, P); + if (!!k) { + var Y = e.arrayToMultiMap(k.map(e.FindAllReferences.toHighlightSpan), function(j) { + return j.fileName; + }, function(j) { + return j.span; + }), U = e.createGetCanonicalFileName(y.useCaseSensitiveFileNames()); + return e.mapDefined(e.arrayFrom(Y.entries()), function(j) { + var H = j[0], I = j[1]; + if (!P.has(H)) { + if (!y.redirectTargetsMap.has(e.toPath(H, y.getCurrentDirectory(), U))) + return; + var l = y.getSourceFile(H), d = e.find(L, function(D) { + return !!D.redirectInfo && D.redirectInfo.redirectTarget === l; + }); + H = d.fileName, e.Debug.assert(P.has(H)); + } + return { fileName: H, highlightSpans: I }; + }); + } + } + function Q($, A) { + var y = le($, A); + return y && [{ fileName: A.fileName, highlightSpans: y }]; + } + function le($, A) { + switch ($.kind) { + case 99: + case 91: + return e.isIfStatement($.parent) ? F($.parent, A) : void 0; + case 105: + return L($.parent, e.isReturnStatement, O); + case 109: + return L($.parent, e.isThrowStatement, q); + case 111: + case 83: + case 96: + var y = $.kind === 83 ? $.parent.parent : $.parent; + return L(y, e.isTryStatement, R); + case 107: + return L($.parent, e.isSwitchStatement, ie); + case 82: + case 88: + return e.isDefaultClause($.parent) || e.isCaseClause($.parent) ? L($.parent.parent.parent, e.isSwitchStatement, ie) : void 0; + case 81: + case 86: + return L($.parent, e.isBreakOrContinueStatement, J); + case 97: + case 115: + case 90: + return L($.parent, function(k) { + return e.isIterationStatement(k, true); + }, se); + case 134: + return V(e.isConstructorDeclaration, [134]); + case 136: + case 149: + return V(e.isAccessor, [136, 149]); + case 132: + return L($.parent, e.isAwaitExpression, ve); + case 131: + return P(ve($)); + case 125: + return P(ee($)); + case 101: + return; + default: + return e.isModifierKind($.kind) && (e.isDeclaration($.parent) || e.isVariableStatement($.parent)) ? P(T($.kind, $.parent)) : void 0; + } + function V(k, Y) { + return L($.parent, k, function(U) { + return e.mapDefined(U.symbol.declarations, function(j) { + return k(j) ? e.find(j.getChildren(A), function(H) { + return e.contains(Y, H.kind); + }) : void 0; + }); + }); + } + function L(k, Y, U) { + return Y(k) ? P(U(k, A)) : void 0; + } + function P(k) { + return k && k.map(function(Y) { + return B(Y, A); + }); + } + } + function N($) { + return e.isThrowStatement($) ? [$] : e.isTryStatement($) ? e.concatenate($.catchClause ? N($.catchClause) : $.tryBlock && N($.tryBlock), $.finallyBlock && N($.finallyBlock)) : e.isFunctionLike($) ? void 0 : G($, N); + } + function p($) { + for (var A = $; A.parent; ) { + var y = A.parent; + if (e.isFunctionBlock(y) || y.kind === 305) + return y; + if (e.isTryStatement(y) && y.tryBlock === A && y.catchClause) + return A; + A = y; + } + } + function m($) { + return e.isBreakOrContinueStatement($) ? [$] : e.isFunctionLike($) ? void 0 : G($, m); + } + function G($, A) { + var y = []; + return $.forEachChild(function(V) { + var L = A(V); + L !== void 0 && y.push.apply(y, e.toArray(L)); + }), y; + } + function oe($, A) { + var y = f(A); + return !!y && y === $; + } + function f($) { + return e.findAncestor($, function(A) { + switch (A.kind) { + case 249: + if ($.kind === 245) + return false; + case 242: + case 243: + case 244: + case 241: + case 240: + return !$.label || X(A, $.label.escapedText); + default: + return e.isFunctionLike(A) && "quit"; + } + }); + } + function T($, A) { + return e.mapDefined(K(A, e.modifierToFlag($)), function(y) { + return e.findModifier(y, $); + }); + } + function K($, A) { + var y = $.parent; + switch (y.kind) { + case 262: + case 305: + case 235: + case 289: + case 290: + return A & 128 && e.isClassDeclaration($) ? Ve(Ve([], $.members, true), [$], false) : y.statements; + case 171: + case 169: + case 256: + return Ve(Ve([], y.parameters, true), e.isClassLike(y.parent) ? y.parent.members : [], true); + case 257: + case 226: + case 258: + case 182: + var V = y.members; + if (A & 92) { + var L = e.find(y.members, e.isConstructorDeclaration); + if (L) + return Ve(Ve([], V, true), L.parameters, true); + } else if (A & 128) + return Ve(Ve([], V, true), [y], false); + return V; + case 205: + return; + default: + e.Debug.assertNever(y, "Invalid container kind."); + } + } + function b($, A) { + for (var y = [], V = 2; V < arguments.length; V++) + y[V - 2] = arguments[V]; + return A && e.contains(y, A.kind) ? ($.push(A), true) : false; + } + function se($) { + var A = []; + if (b(A, $.getFirstToken(), 97, 115, 90) && $.kind === 240) + for (var y = $.getChildren(), V = y.length - 1; V >= 0 && !b(A, y[V], 115); V--) + ; + return e.forEach(m($.statement), function(L) { + oe($, L) && b(A, L.getFirstToken(), 81, 86); + }), A; + } + function J($) { + var A = f($); + if (A) + switch (A.kind) { + case 242: + case 243: + case 244: + case 240: + case 241: + return se(A); + case 249: + return ie(A); + } + } + function ie($) { + var A = []; + return b(A, $.getFirstToken(), 107), e.forEach($.caseBlock.clauses, function(y) { + b(A, y.getFirstToken(), 82, 88), e.forEach(m(y), function(V) { + oe($, V) && b(A, V.getFirstToken(), 81); + }); + }), A; + } + function R($, A) { + var y = []; + if (b(y, $.getFirstToken(), 111), $.catchClause && b(y, $.catchClause.getFirstToken(), 83), $.finallyBlock) { + var V = e.findChildOfKind($, 96, A); + b(y, V, 96); + } + return y; + } + function q($, A) { + var y = p($); + if (!!y) { + var V = []; + return e.forEach(N(y), function(L) { + V.push(e.findChildOfKind(L, 109, A)); + }), e.isFunctionBlock(y) && e.forEachReturnStatement(y, function(L) { + V.push(e.findChildOfKind(L, 105, A)); + }), V; + } + } + function O($, A) { + var y = e.getContainingFunction($); + if (!!y) { + var V = []; + return e.forEachReturnStatement(e.cast(y.body, e.isBlock), function(L) { + V.push(e.findChildOfKind(L, 105, A)); + }), e.forEach(N(y.body), function(L) { + V.push(e.findChildOfKind(L, 109, A)); + }), V; + } + } + function ve($) { + var A = e.getContainingFunction($); + if (!!A) { + var y = []; + return A.modifiers && A.modifiers.forEach(function(V) { + b(y, V, 131); + }), e.forEachChild(A, function(V) { + he(V, function(L) { + e.isAwaitExpression(L) && b(y, L.getFirstToken(), 132); + }); + }), y; + } + } + function ee($) { + var A = e.getContainingFunction($); + if (!!A) { + var y = []; + return e.forEachChild(A, function(V) { + he(V, function(L) { + e.isYieldExpression(L) && b(y, L.getFirstToken(), 125); + }); + }), y; + } + } + function he($, A) { + A($), !e.isFunctionLike($) && !e.isClassLike($) && !e.isInterfaceDeclaration($) && !e.isModuleDeclaration($) && !e.isTypeAliasDeclaration($) && !e.isTypeNode($) && e.forEachChild($, function(y) { + return he(y, A); + }); + } + function F($, A) { + for (var y = x($, A), V = [], L = 0; L < y.length; L++) { + if (y[L].kind === 91 && L < y.length - 1) { + for (var P = y[L], k = y[L + 1], Y = true, U = k.getStart(A) - 1; U >= P.end; U--) + if (!e.isWhiteSpaceSingleLine(A.text.charCodeAt(U))) { + Y = false; + break; + } + if (Y) { + V.push({ fileName: A.fileName, textSpan: e.createTextSpanFromBounds(P.getStart(), k.end), kind: "reference" }), L++; + continue; + } + } + V.push(B(y[L], A)); + } + return V; + } + function x($, A) { + for (var y = []; e.isIfStatement($.parent) && $.parent.elseStatement === $; ) + $ = $.parent; + for (; ; ) { + var V = $.getChildren(A); + b(y, V[0], 99); + for (var L = V.length - 1; L >= 0 && !b(y, V[L], 91); L--) + ; + if (!$.elseStatement || !e.isIfStatement($.elseStatement)) + break; + $ = $.elseStatement; + } + return y; + } + function X($, A) { + return !!e.findAncestor($.parent, function(y) { + return e.isLabeledStatement(y) ? y.label.escapedText === A : "quit"; + }); + } + })(a = e.DocumentHighlights || (e.DocumentHighlights = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + function a(Q) { + return !!Q.sourceFile; + } + function C(Q, le) { + return w(Q, le); + } + e.createDocumentRegistry = C; + function w(Q, le, N) { + le === void 0 && (le = ""); + var p = new e.Map(), m = e.createGetCanonicalFileName(!!Q); + function G() { + var O = e.arrayFrom(p.keys()).filter(function(ve) { + return ve && ve.charAt(0) === "_"; + }).map(function(ve) { + var ee = p.get(ve), he = []; + return ee.forEach(function(F, x) { + a(F) ? he.push({ name: x, scriptKind: F.sourceFile.scriptKind, refCount: F.languageServiceRefCount }) : F.forEach(function(X, $) { + return he.push({ name: x, scriptKind: $, refCount: X.languageServiceRefCount }); + }); + }), he.sort(function(F, x) { + return x.refCount - F.refCount; + }), { bucket: ve, sourceFiles: he }; + }); + return JSON.stringify(O, void 0, 2); + } + function oe(O) { + return typeof O.getCompilationSettings == "function" ? O.getCompilationSettings() : O; + } + function f(O, ve, ee, he, F) { + var x = e.toPath(O, le, m), X = E(oe(ve)); + return T(O, x, ve, X, ee, he, F); + } + function T(O, ve, ee, he, F, x, X) { + return J(O, ve, ee, he, F, x, true, X); + } + function K(O, ve, ee, he, F) { + var x = e.toPath(O, le, m), X = E(oe(ve)); + return b(O, x, ve, X, ee, he, F); + } + function b(O, ve, ee, he, F, x, X) { + return J(O, ve, oe(ee), he, F, x, false, X); + } + function se(O, ve) { + var ee = a(O) ? O : O.get(e.Debug.checkDefined(ve, "If there are more than one scriptKind's for same document the scriptKind should be provided")); + return e.Debug.assert(ve === void 0 || !ee || ee.sourceFile.scriptKind === ve, "Script kind should match provided ScriptKind:".concat(ve, " and sourceFile.scriptKind: ").concat(ee == null ? void 0 : ee.sourceFile.scriptKind, ", !entry: ").concat(!ee)), ee; + } + function J(O, ve, ee, he, F, x, X, $) { + var A, y, V, L; + $ = e.ensureScriptKind(O, $); + var P = oe(ee), k = ee === P ? void 0 : ee, Y = $ === 6 ? 100 : e.getEmitScriptTarget(P), U = { languageVersion: Y, impliedNodeFormat: k && e.getImpliedNodeFormatForFile(ve, (L = (V = (y = (A = k.getCompilerHost) === null || A === void 0 ? void 0 : A.call(k)) === null || y === void 0 ? void 0 : y.getModuleResolutionCache) === null || V === void 0 ? void 0 : V.call(y)) === null || L === void 0 ? void 0 : L.getPackageJsonInfoCache(), k, P), setExternalModuleIndicator: e.getSetExternalModuleIndicator(P) }, j = p.size, H = e.getOrUpdate(p, he, function() { + return new e.Map(); + }); + if (e.tracing) { + p.size > j && e.tracing.instant("session", "createdDocumentRegistryBucket", { configFilePath: P.configFilePath, key: he }); + var I = !e.isDeclarationFileName(ve) && e.forEachEntry(p, function(g, ne) { + return ne !== he && g.has(ve) && ne; + }); + I && e.tracing.instant("session", "documentRegistryBucketOverlap", { path: ve, key1: I, key2: he }); + } + var l = H.get(ve), d = l && se(l, $); + if (!d && N) { + var D = N.getDocument(he, ve); + D && (e.Debug.assert(X), d = { sourceFile: D, languageServiceRefCount: 0 }, fe()); + } + if (d) + d.sourceFile.version !== x && (d.sourceFile = e.updateLanguageServiceSourceFile(d.sourceFile, F, x, F.getChangeRange(d.sourceFile.scriptSnapshot)), N && N.setDocument(he, ve, d.sourceFile)), X && d.languageServiceRefCount++; + else { + var D = e.createLanguageServiceSourceFile(O, F, U, x, false, $); + N && N.setDocument(he, ve, D), d = { sourceFile: D, languageServiceRefCount: 1 }, fe(); + } + return e.Debug.assert(d.languageServiceRefCount !== 0), d.sourceFile; + function fe() { + if (!l) + H.set(ve, d); + else if (a(l)) { + var g = new e.Map(); + g.set(l.sourceFile.scriptKind, l), g.set($, d), H.set(ve, g); + } else + l.set($, d); + } + } + function ie(O, ve, ee) { + var he = e.toPath(O, le, m), F = E(ve); + return R(he, F, ee); + } + function R(O, ve, ee) { + var he = e.Debug.checkDefined(p.get(ve)), F = he.get(O), x = se(F, ee); + x.languageServiceRefCount--, e.Debug.assert(x.languageServiceRefCount >= 0), x.languageServiceRefCount === 0 && (a(F) ? he.delete(O) : (F.delete(ee), F.size === 1 && he.set(O, e.firstDefinedIterator(F.values(), e.identity)))); + } + function q(O, ve) { + return e.arrayFrom(p.entries(), function(ee) { + var he = ee[0], F = ee[1], x = F.get(O), X = x && se(x, ve); + return [he, X && X.languageServiceRefCount]; + }); + } + return { acquireDocument: f, acquireDocumentWithKey: T, updateDocument: K, updateDocumentWithKey: b, releaseDocument: ie, releaseDocumentWithKey: R, getLanguageServiceRefCounts: q, reportStats: G, getKeyForCompilationSettings: E }; + } + e.createDocumentRegistryInternal = w; + function B(Q) { + var le; + if (Q === null || typeof Q != "object") + return "" + Q; + if (e.isArray(Q)) + return "[".concat((le = e.map(Q, function(m) { + return B(m); + })) === null || le === void 0 ? void 0 : le.join(","), "]"); + var N = "{"; + for (var p in Q) + e.hasOwnProperty.call(Q, p) && (N += "".concat(p, ": ").concat(B(Q[p]))); + return N + "}"; + } + function E(Q) { + return e.sourceFileAffectingCompilerOptions.map(function(le) { + return B(e.getCompilerOptionValue(Q, le)); + }).join("|") + (Q.pathsBasePath ? "|".concat(Q.pathsBasePath) : void 0); + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(ve, ee, he, F) { + var x = m(ve, he, F); + return function(X, $, A) { + var y = Q(ve, ee, x, $, he, F), V = y.directImports, L = y.indirectUsers; + return Ke({ indirectUsers: L }, le(V, X, $.exportKind, he, A)); + }; + } + C.createImportTracker = w; + var B; + (function(ve) { + ve[ve.Named = 0] = "Named", ve[ve.Default = 1] = "Default", ve[ve.ExportEquals = 2] = "ExportEquals"; + })(B = C.ExportKind || (C.ExportKind = {})); + var E; + (function(ve) { + ve[ve.Import = 0] = "Import", ve[ve.Export = 1] = "Export"; + })(E = C.ImportExport || (C.ImportExport = {})); + function Q(ve, ee, he, F, x, X) { + var $ = F.exportingModuleSymbol, A = F.exportKind, y = e.nodeSeenTracker(), V = e.nodeSeenTracker(), L = [], P = !!$.globalExports, k = P ? void 0 : []; + return U($), { directImports: L, indirectUsers: Y() }; + function Y() { + if (P) + return ve; + if ($.declarations) + for (var D = 0, fe = $.declarations; D < fe.length; D++) { + var g = fe[D]; + e.isExternalModuleAugmentation(g) && ee.has(g.getSourceFile().fileName) && l(g); + } + return k.map(e.getSourceFileOfNode); + } + function U(D) { + var fe = d(D); + if (fe) + for (var g = 0, ne = fe; g < ne.length; g++) { + var ue = ne[g]; + if (!!y(ue)) + switch (X && X.throwIfCancellationRequested(), ue.kind) { + case 208: + if (e.isImportCall(ue)) { + j(ue); + break; + } + if (!P) { + var We = ue.parent; + if (A === 2 && We.kind === 254) { + var Fe = We.name; + if (Fe.kind === 79) { + L.push(Fe); + break; + } + } + } + break; + case 79: + break; + case 265: + I(ue, ue.name, e.hasSyntacticModifier(ue, 1), false); + break; + case 266: + L.push(ue); + var Z = ue.importClause && ue.importClause.namedBindings; + Z && Z.kind === 268 ? I(ue, Z.name, false, true) : !P && e.isDefaultImport(ue) && l(R(ue)); + break; + case 272: + ue.exportClause ? ue.exportClause.kind === 274 ? l(R(ue), true) : L.push(ue) : U(ie(ue, x)); + break; + case 200: + ue.isTypeOf && !ue.qualifier && H(ue) && l(ue.getSourceFile(), true), L.push(ue); + break; + default: + e.Debug.failBadSyntaxKind(ue, "Unexpected import kind."); + } + } + } + function j(D) { + var fe = e.findAncestor(D, q) || D.getSourceFile(); + l(fe, !!H(D, true)); + } + function H(D, fe) { + return fe === void 0 && (fe = false), e.findAncestor(D, function(g) { + return fe && q(g) ? "quit" : e.some(g.modifiers, function(ne) { + return ne.kind === 93; + }); + }); + } + function I(D, fe, g, ne) { + if (A === 2) + ne || L.push(D); + else if (!P) { + var ue = R(D); + e.Debug.assert(ue.kind === 305 || ue.kind === 261), g || N(ue, fe, x) ? l(ue, true) : l(ue); + } + } + function l(D, fe) { + fe === void 0 && (fe = false), e.Debug.assert(!P); + var g = V(D); + if (!!g && (k.push(D), !!fe)) { + var ne = x.getMergedSymbol(D.symbol); + if (!!ne) { + e.Debug.assert(!!(ne.flags & 1536)); + var ue = d(ne); + if (ue) + for (var We = 0, Fe = ue; We < Fe.length; We++) { + var Z = Fe[We]; + e.isImportTypeNode(Z) || l(R(Z), true); + } + } + } + } + function d(D) { + return he.get(e.getSymbolId(D).toString()); + } + } + function le(ve, ee, he, F, x) { + var X = [], $ = []; + function A(j, H) { + X.push([j, H]); + } + if (ve) + for (var y = 0, V = ve; y < V.length; y++) { + var L = V[y]; + P(L); + } + return { importSearches: X, singleReferences: $ }; + function P(j) { + if (j.kind === 265) { + O(j) && k(j.name); + return; + } + if (j.kind === 79) { + k(j); + return; + } + if (j.kind === 200) { + if (j.qualifier) { + var H = e.getFirstIdentifier(j.qualifier); + H.escapedText === e.symbolName(ee) && $.push(H); + } else + he === 2 && $.push(j.argument.literal); + return; + } + if (j.moduleSpecifier.kind === 10) { + if (j.kind === 272) { + j.exportClause && e.isNamedExports(j.exportClause) && Y(j.exportClause); + return; + } + var I = j.importClause || { name: void 0, namedBindings: void 0 }, l = I.name, d = I.namedBindings; + if (d) + switch (d.kind) { + case 268: + k(d.name); + break; + case 269: + (he === 0 || he === 1) && Y(d); + break; + default: + e.Debug.assertNever(d); + } + if (l && (he === 1 || he === 2) && (!x || l.escapedText === e.symbolEscapedNameNoDefault(ee))) { + var D = F.getSymbolAtLocation(l); + A(l, D); + } + } + } + function k(j) { + he === 2 && (!x || U(j.escapedText)) && A(j, F.getSymbolAtLocation(j)); + } + function Y(j) { + if (!!j) + for (var H = 0, I = j.elements; H < I.length; H++) { + var l = I[H], d = l.name, D = l.propertyName; + if (!!U((D || d).escapedText)) + if (D) + $.push(D), (!x || d.escapedText === ee.escapedName) && A(d, F.getSymbolAtLocation(d)); + else { + var fe = l.kind === 275 && l.propertyName ? F.getExportSpecifierLocalTargetSymbol(l) : F.getSymbolAtLocation(d); + A(d, fe); + } + } + } + function U(j) { + return j === ee.escapedName || he !== 0 && j === "default"; + } + } + function N(ve, ee, he) { + var F = he.getSymbolAtLocation(ee); + return !!G(ve, function(x) { + if (!!e.isExportDeclaration(x)) { + var X = x.exportClause, $ = x.moduleSpecifier; + return !$ && X && e.isNamedExports(X) && X.elements.some(function(A) { + return he.getExportSpecifierLocalTargetSymbol(A) === F; + }); + } + }); + } + function p(ve, ee, he) { + for (var F = [], x = ve.getTypeChecker(), X = 0, $ = ee; X < $.length; X++) { + var A = $[X], y = he.valueDeclaration; + if ((y == null ? void 0 : y.kind) === 305) { + for (var V = 0, L = A.referencedFiles; V < L.length; V++) { + var P = L[V]; + ve.getSourceFileFromReference(A, P) === y && F.push({ kind: "reference", referencingFile: A, ref: P }); + } + for (var k = 0, Y = A.typeReferenceDirectives; k < Y.length; k++) { + var P = Y[k], U = ve.getResolvedTypeReferenceDirectives().get(P.fileName, P.resolutionMode || A.impliedNodeFormat); + U !== void 0 && U.resolvedFileName === y.fileName && F.push({ kind: "reference", referencingFile: A, ref: P }); + } + } + oe(A, function(j, H) { + var I = x.getSymbolAtLocation(H); + I === he && F.push({ kind: "import", literal: H }); + }); + } + return F; + } + C.findModuleReferences = p; + function m(ve, ee, he) { + for (var F = new e.Map(), x = 0, X = ve; x < X.length; x++) { + var $ = X[x]; + he && he.throwIfCancellationRequested(), oe($, function(A, y) { + var V = ee.getSymbolAtLocation(y); + if (V) { + var L = e.getSymbolId(V).toString(), P = F.get(L); + P || F.set(L, P = []), P.push(A); + } + }); + } + return F; + } + function G(ve, ee) { + return e.forEach(ve.kind === 305 ? ve.statements : ve.body.statements, function(he) { + return ee(he) || q(he) && e.forEach(he.body && he.body.statements, ee); + }); + } + function oe(ve, ee) { + if (ve.externalModuleIndicator || ve.imports !== void 0) + for (var he = 0, F = ve.imports; he < F.length; he++) { + var x = F[he]; + ee(e.importFromModuleSpecifier(x), x); + } + else + G(ve, function(X) { + switch (X.kind) { + case 272: + case 266: { + var $ = X; + $.moduleSpecifier && e.isStringLiteral($.moduleSpecifier) && ee($, $.moduleSpecifier); + break; + } + case 265: { + var $ = X; + O($) && ee($, $.moduleReference.expression); + break; + } + } + }); + } + function f(ve, ee, he, F) { + return F ? x() : x() || X(); + function x() { + var y, V = ve.parent, L = V.parent; + if (ee.exportSymbol) + return V.kind === 206 ? ((y = ee.declarations) === null || y === void 0 ? void 0 : y.some(function(j) { + return j === V; + })) && e.isBinaryExpression(L) ? U(L, false) : void 0 : $(ee.exportSymbol, A(V)); + var P = K(V, ve); + if (P && e.hasSyntacticModifier(P, 1)) + if (e.isImportEqualsDeclaration(P) && P.moduleReference === ve) { + if (F) + return; + var k = he.getSymbolAtLocation(P.name); + return { kind: 0, symbol: k }; + } else + return $(ee, A(P)); + else { + if (e.isNamespaceExport(V)) + return $(ee, 0); + if (e.isExportAssignment(V)) + return Y(V); + if (e.isExportAssignment(L)) + return Y(L); + if (e.isBinaryExpression(V)) + return U(V, true); + if (e.isBinaryExpression(L)) + return U(L, true); + if (e.isJSDocTypedefTag(V)) + return $(ee, 0); + } + function Y(j) { + if (!!j.symbol.parent) { + var H = j.isExportEquals ? 2 : 1; + return { kind: 1, symbol: ee, exportInfo: { exportingModuleSymbol: j.symbol.parent, exportKind: H } }; + } + } + function U(j, H) { + var I; + switch (e.getAssignmentDeclarationKind(j)) { + case 1: + I = 0; + break; + case 2: + I = 2; + break; + default: + return; + } + var l = H ? he.getSymbolAtLocation(e.getNameOfAccessExpression(e.cast(j.left, e.isAccessExpression))) : ee; + return l && $(l, I); + } + } + function X() { + var y = b(ve); + if (!!y) { + var V = he.getImmediateAliasedSymbol(ee); + if (!!V) { + V = J(V, he), V.escapedName === "export=" && (V = T(V, he)); + var L = e.symbolEscapedNameNoDefault(V); + if (L === void 0 || L === "default" || L === ee.escapedName) + return { kind: 0, symbol: V }; + } + } + } + function $(y, V) { + var L = se(y, V, he); + return L && { kind: 1, symbol: y, exportInfo: L }; + } + function A(y) { + return e.hasSyntacticModifier(y, 512) ? 1 : 0; + } + } + C.getImportOrExportSymbol = f; + function T(ve, ee) { + if (ve.flags & 2097152) + return e.Debug.checkDefined(ee.getImmediateAliasedSymbol(ve)); + var he = e.Debug.checkDefined(ve.valueDeclaration); + return e.isExportAssignment(he) ? e.Debug.checkDefined(he.expression.symbol) : e.isBinaryExpression(he) ? e.Debug.checkDefined(he.right.symbol) : e.isSourceFile(he) ? e.Debug.checkDefined(he.symbol) : e.Debug.fail(); + } + function K(ve, ee) { + var he = e.isVariableDeclaration(ve) ? ve : e.isBindingElement(ve) ? e.walkUpBindingElementsAndPatterns(ve) : void 0; + return he ? ve.name !== ee || e.isCatchClause(he.parent) ? void 0 : e.isVariableStatement(he.parent.parent) ? he.parent.parent : void 0 : ve; + } + function b(ve) { + var ee = ve.parent; + switch (ee.kind) { + case 265: + return ee.name === ve && O(ee); + case 270: + return !ee.propertyName; + case 267: + case 268: + return e.Debug.assert(ee.name === ve), true; + case 203: + return e.isInJSFile(ve) && e.isVariableDeclarationInitializedToBareOrAccessedRequire(ee); + default: + return false; + } + } + function se(ve, ee, he) { + var F = ve.parent; + if (!!F) { + var x = he.getMergedSymbol(F); + return e.isExternalModuleSymbol(x) ? { exportingModuleSymbol: x, exportKind: ee } : void 0; + } + } + C.getExportInfo = se; + function J(ve, ee) { + if (ve.declarations) + for (var he = 0, F = ve.declarations; he < F.length; he++) { + var x = F[he]; + if (e.isExportSpecifier(x) && !x.propertyName && !x.parent.parent.moduleSpecifier) + return ee.getExportSpecifierLocalTargetSymbol(x); + if (e.isPropertyAccessExpression(x) && e.isModuleExportsAccessExpression(x.expression) && !e.isPrivateIdentifier(x.name)) + return ee.getSymbolAtLocation(x); + if (e.isShorthandPropertyAssignment(x) && e.isBinaryExpression(x.parent.parent) && e.getAssignmentDeclarationKind(x.parent.parent) === 2) + return ee.getExportSpecifierLocalTargetSymbol(x.name); + } + return ve; + } + function ie(ve, ee) { + return ee.getMergedSymbol(R(ve).symbol); + } + function R(ve) { + if (ve.kind === 208) + return ve.getSourceFile(); + var ee = ve.parent; + return ee.kind === 305 ? ee : (e.Debug.assert(ee.kind === 262), e.cast(ee.parent, q)); + } + function q(ve) { + return ve.kind === 261 && ve.name.kind === 10; + } + function O(ve) { + return ve.moduleReference.kind === 277 && ve.moduleReference.expression.kind === 10; + } + })(a = e.FindAllReferences || (e.FindAllReferences = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(k) { + k[k.Symbol = 0] = "Symbol", k[k.Label = 1] = "Label", k[k.Keyword = 2] = "Keyword", k[k.This = 3] = "This", k[k.String = 4] = "String", k[k.TripleSlashReference = 5] = "TripleSlashReference"; + })(w = C.DefinitionKind || (C.DefinitionKind = {})); + var B; + (function(k) { + k[k.Span = 0] = "Span", k[k.Node = 1] = "Node", k[k.StringLiteral = 2] = "StringLiteral", k[k.SearchedLocalFoundProperty = 3] = "SearchedLocalFoundProperty", k[k.SearchedPropertyFoundLocal = 4] = "SearchedPropertyFoundLocal"; + })(B = C.EntryKind || (C.EntryKind = {})); + function E(k, Y) { + return Y === void 0 && (Y = 1), { kind: Y, node: k.name || k, context: le(k) }; + } + C.nodeEntry = E; + function Q(k) { + return k && k.kind === void 0; + } + C.isContextWithStartAndEndNode = Q; + function le(k) { + if (e.isDeclaration(k)) + return N(k); + if (!!k.parent) { + if (!e.isDeclaration(k.parent) && !e.isExportAssignment(k.parent)) { + if (e.isInJSFile(k)) { + var Y = e.isBinaryExpression(k.parent) ? k.parent : e.isAccessExpression(k.parent) && e.isBinaryExpression(k.parent.parent) && k.parent.parent.left === k.parent ? k.parent.parent : void 0; + if (Y && e.getAssignmentDeclarationKind(Y) !== 0) + return N(Y); + } + if (e.isJsxOpeningElement(k.parent) || e.isJsxClosingElement(k.parent)) + return k.parent.parent; + if (e.isJsxSelfClosingElement(k.parent) || e.isLabeledStatement(k.parent) || e.isBreakOrContinueStatement(k.parent)) + return k.parent; + if (e.isStringLiteralLike(k)) { + var U = e.tryGetImportFromModuleSpecifier(k); + if (U) { + var j = e.findAncestor(U, function(I) { + return e.isDeclaration(I) || e.isStatement(I) || e.isJSDocTag(I); + }); + return e.isDeclaration(j) ? N(j) : j; + } + } + var H = e.findAncestor(k, e.isComputedPropertyName); + return H ? N(H.parent) : void 0; + } + if (k.parent.name === k || e.isConstructorDeclaration(k.parent) || e.isExportAssignment(k.parent) || (e.isImportOrExportSpecifier(k.parent) || e.isBindingElement(k.parent)) && k.parent.propertyName === k || k.kind === 88 && e.hasSyntacticModifier(k.parent, 513)) + return N(k.parent); + } + } + function N(k) { + if (!!k) + switch (k.kind) { + case 254: + return !e.isVariableDeclarationList(k.parent) || k.parent.declarations.length !== 1 ? k : e.isVariableStatement(k.parent.parent) ? k.parent.parent : e.isForInOrOfStatement(k.parent.parent) ? N(k.parent.parent) : k.parent; + case 203: + return N(k.parent.parent); + case 270: + return k.parent.parent.parent; + case 275: + case 268: + return k.parent.parent; + case 267: + case 274: + return k.parent; + case 221: + return e.isExpressionStatement(k.parent) ? k.parent : k; + case 244: + case 243: + return { start: k.initializer, end: k.expression }; + case 296: + case 297: + return e.isArrayLiteralOrObjectLiteralDestructuringPattern(k.parent) ? N(e.findAncestor(k.parent, function(Y) { + return e.isBinaryExpression(Y) || e.isForInOrOfStatement(Y); + })) : k; + default: + return k; + } + } + C.getContextNode = N; + function p(k, Y, U) { + if (!!U) { + var j = Q(U) ? $(U.start, Y, U.end) : $(U, Y); + return j.start !== k.start || j.length !== k.length ? { contextSpan: j } : void 0; + } + } + C.toContextSpan = p; + var m; + (function(k) { + k[k.Other = 0] = "Other", k[k.References = 1] = "References", k[k.Rename = 2] = "Rename"; + })(m = C.FindReferencesUse || (C.FindReferencesUse = {})); + function G(k, Y, U, j, H) { + var I = e.getTouchingPropertyName(j, H), l = { use: 1 }, d = P.getReferencedSymbolsForNode(H, I, k, U, Y, l), D = k.getTypeChecker(), fe = P.getAdjustedNode(I, l), g = oe(fe) ? D.getSymbolAtLocation(fe) : void 0; + return !d || !d.length ? void 0 : e.mapDefined(d, function(ne) { + var ue = ne.definition, We = ne.references; + return ue && { definition: D.runWithCancellationToken(Y, function(Fe) { + return J(ue, Fe, I); + }), references: We.map(function(Fe) { + return O(Fe, g); + }) }; + }); + } + C.findReferencedSymbols = G; + function oe(k) { + return k.kind === 88 || !!e.getDeclarationFromName(k) || e.isLiteralComputedPropertyDeclarationName(k) || k.kind === 134 && e.isConstructorDeclaration(k.parent); + } + function f(k, Y, U, j, H) { + var I = e.getTouchingPropertyName(j, H), l, d = T(k, Y, U, I, H); + if (I.parent.kind === 206 || I.parent.kind === 203 || I.parent.kind === 207 || I.kind === 106) + l = d && Ve([], d, true); + else + for (var D = d && Ve([], d, true), fe = new e.Map(); D && D.length; ) { + var g = D.shift(); + if (!!e.addToSeen(fe, e.getNodeId(g.node))) { + l = e.append(l, g); + var ne = T(k, Y, U, g.node, g.node.pos); + ne && D.push.apply(D, ne); + } + } + var ue = k.getTypeChecker(); + return e.map(l, function(We) { + return F(We, ue); + }); + } + C.getImplementationsAtPosition = f; + function T(k, Y, U, j, H) { + if (j.kind !== 305) { + var I = k.getTypeChecker(); + if (j.parent.kind === 297) { + var l = []; + return P.getReferenceEntriesForShorthandPropertyAssignment(j, I, function(D) { + return l.push(E(D)); + }), l; + } else if (j.kind === 106 || e.isSuperProperty(j.parent)) { + var d = I.getSymbolAtLocation(j); + return d.valueDeclaration && [E(d.valueDeclaration)]; + } else + return b(H, j, k, U, Y, { implementations: true, use: 1 }); + } + } + function K(k, Y, U, j, H, I, l) { + return e.map(se(P.getReferencedSymbolsForNode(H, j, k, U, Y, I)), function(d) { + return l(d, j, k.getTypeChecker()); + }); + } + C.findReferenceOrRenameEntries = K; + function b(k, Y, U, j, H, I, l) { + return I === void 0 && (I = {}), l === void 0 && (l = new e.Set(j.map(function(d) { + return d.fileName; + }))), se(P.getReferencedSymbolsForNode(k, Y, U, j, H, I, l)); + } + C.getReferenceEntriesForNode = b; + function se(k) { + return k && e.flatMap(k, function(Y) { + return Y.references; + }); + } + function J(k, Y, U) { + var j = function() { + switch (k.type) { + case 0: { + var g = k.symbol, ne = R(g, Y, U), ue = ne.displayParts, We = ne.kind, Fe = ue.map(function(ze) { + return ze.text; + }).join(""), Z = g.declarations && e.firstOrUndefined(g.declarations), Be = Z ? e.getNameOfDeclaration(Z) || Z : U; + return Ke(Ke({}, ie(Be)), { name: Fe, kind: We, displayParts: ue, context: N(Z) }); + } + case 1: { + var Be = k.node; + return Ke(Ke({}, ie(Be)), { name: Be.text, kind: "label", displayParts: [e.displayPart(Be.text, e.SymbolDisplayPartKind.text)] }); + } + case 2: { + var Be = k.node, ge = e.tokenToString(Be.kind); + return Ke(Ke({}, ie(Be)), { name: ge, kind: "keyword", displayParts: [{ text: ge, kind: "keyword" }] }); + } + case 3: { + var Be = k.node, g = Y.getSymbolAtLocation(Be), Re = g && e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(Y, g, Be.getSourceFile(), e.getContainerNode(Be), Be).displayParts || [e.textPart("this")]; + return Ke(Ke({}, ie(Be)), { name: "this", kind: "var", displayParts: Re }); + } + case 4: { + var Be = k.node; + return Ke(Ke({}, ie(Be)), { name: Be.text, kind: "var", displayParts: [e.displayPart(e.getTextOfNode(Be), e.SymbolDisplayPartKind.stringLiteral)] }); + } + case 5: + return { textSpan: e.createTextSpanFromRange(k.reference), sourceFile: k.file, name: k.reference.fileName, kind: "string", displayParts: [e.displayPart('"'.concat(k.reference.fileName, '"'), e.SymbolDisplayPartKind.stringLiteral)] }; + default: + return e.Debug.assertNever(k); + } + }(), H = j.sourceFile, I = j.textSpan, l = j.name, d = j.kind, D = j.displayParts, fe = j.context; + return Ke({ containerKind: "", containerName: "", fileName: H.fileName, kind: d, name: l, textSpan: I, displayParts: D }, p(I, H, fe)); + } + function ie(k) { + var Y = k.getSourceFile(); + return { sourceFile: Y, textSpan: $(e.isComputedPropertyName(k) ? k.expression : k, Y) }; + } + function R(k, Y, U) { + var j = P.getIntersectingMeaningFromDeclarations(U, k), H = k.declarations && e.firstOrUndefined(k.declarations) || U, I = e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(Y, k, H.getSourceFile(), H, H, j), l = I.displayParts, d = I.symbolKind; + return { displayParts: l, kind: d }; + } + function q(k, Y, U, j) { + return Ke(Ke({}, ee(k)), j && he(k, Y, U)); + } + C.toRenameLocation = q; + function O(k, Y) { + var U = ve(k); + return Y ? Ke(Ke({}, U), { isDefinition: k.kind !== 0 && V(k.node, Y) }) : U; + } + function ve(k) { + var Y = ee(k); + if (k.kind === 0) + return Ke(Ke({}, Y), { isWriteAccess: false }); + var U = k.kind, j = k.node; + return Ke(Ke({}, Y), { isWriteAccess: y(j), isInString: U === 2 ? true : void 0 }); + } + C.toReferenceEntry = ve; + function ee(k) { + if (k.kind === 0) + return { textSpan: k.textSpan, fileName: k.fileName }; + var Y = k.node.getSourceFile(), U = $(k.node, Y); + return Ke({ textSpan: U, fileName: Y.fileName }, p(U, Y, k.context)); + } + function he(k, Y, U) { + if (k.kind !== 0 && e.isIdentifier(Y)) { + var j = k.node, H = k.kind, I = j.parent, l = Y.text, d = e.isShorthandPropertyAssignment(I); + if (d || e.isObjectBindingElementWithoutPropertyName(I) && I.name === j && I.dotDotDotToken === void 0) { + var D = { prefixText: l + ": " }, fe = { suffixText: ": " + l }; + if (H === 3) + return D; + if (H === 4) + return fe; + if (d) { + var g = I.parent; + return e.isObjectLiteralExpression(g) && e.isBinaryExpression(g.parent) && e.isModuleExportsAccessExpression(g.parent.left) ? D : fe; + } else + return D; + } else if (e.isImportSpecifier(I) && !I.propertyName) { + var ne = e.isExportSpecifier(Y.parent) ? U.getExportSpecifierLocalTargetSymbol(Y.parent) : U.getSymbolAtLocation(Y); + return e.contains(ne.declarations, I) ? { prefixText: l + " as " } : e.emptyOptions; + } else if (e.isExportSpecifier(I) && !I.propertyName) + return Y === k.node || U.getSymbolAtLocation(Y) === U.getSymbolAtLocation(k.node) ? { prefixText: l + " as " } : { suffixText: " as " + l }; + } + return e.emptyOptions; + } + function F(k, Y) { + var U = ee(k); + if (k.kind !== 0) { + var j = k.node; + return Ke(Ke({}, U), x(j, Y)); + } else + return Ke(Ke({}, U), { kind: "", displayParts: [] }); + } + function x(k, Y) { + var U = Y.getSymbolAtLocation(e.isDeclaration(k) && k.name ? k.name : k); + return U ? R(U, Y, k) : k.kind === 205 ? { kind: "interface", displayParts: [e.punctuationPart(20), e.textPart("object literal"), e.punctuationPart(21)] } : k.kind === 226 ? { kind: "local class", displayParts: [e.punctuationPart(20), e.textPart("anonymous local class"), e.punctuationPart(21)] } : { kind: e.getNodeKind(k), displayParts: [] }; + } + function X(k) { + var Y = ee(k); + if (k.kind === 0) + return { fileName: Y.fileName, span: { textSpan: Y.textSpan, kind: "reference" } }; + var U = y(k.node), j = Ke({ textSpan: Y.textSpan, kind: U ? "writtenReference" : "reference", isInString: k.kind === 2 ? true : void 0 }, Y.contextSpan && { contextSpan: Y.contextSpan }); + return { fileName: Y.fileName, span: j }; + } + C.toHighlightSpan = X; + function $(k, Y, U) { + var j = k.getStart(Y), H = (U || k).getEnd(); + return e.isStringLiteralLike(k) && H - j > 2 && (e.Debug.assert(U === void 0), j += 1, H -= 1), e.createTextSpanFromBounds(j, H); + } + function A(k) { + return k.kind === 0 ? k.textSpan : $(k.node, k.node.getSourceFile()); + } + C.getTextSpanOfEntry = A; + function y(k) { + var Y = e.getDeclarationFromName(k); + return !!Y && L(Y) || k.kind === 88 || e.isWriteAccess(k); + } + function V(k, Y) { + var U; + if (!Y) + return false; + var j = e.getDeclarationFromName(k) || (k.kind === 88 ? k.parent : e.isLiteralComputedPropertyDeclarationName(k) || k.kind === 134 && e.isConstructorDeclaration(k.parent) ? k.parent.parent : void 0), H = j && e.isBinaryExpression(j) ? j.left : void 0; + return !!(j && ((U = Y.declarations) === null || U === void 0 ? void 0 : U.some(function(I) { + return I === j || I === H; + }))); + } + function L(k) { + if (k.flags & 16777216) + return true; + switch (k.kind) { + case 221: + case 203: + case 257: + case 226: + case 88: + case 260: + case 299: + case 275: + case 267: + case 265: + case 270: + case 258: + case 338: + case 345: + case 285: + case 261: + case 264: + case 268: + case 274: + case 164: + case 297: + case 259: + case 163: + return true; + case 296: + return !e.isArrayLiteralOrObjectLiteralDestructuringPattern(k.parent); + case 256: + case 213: + case 171: + case 169: + case 172: + case 173: + return !!k.body; + case 254: + case 167: + return !!k.initializer || e.isCatchClause(k.parent); + case 168: + case 166: + case 347: + case 340: + return false; + default: + return e.Debug.failBadSyntaxKind(k); + } + } + var P; + (function(k) { + function Y(Oe, nr, Mr, Pe, Ue, fr, De) { + var gr, Vr; + if (fr === void 0 && (fr = {}), De === void 0 && (De = new e.Set(Pe.map(function(Rt) { + return Rt.fileName; + }))), nr = U(nr, fr), e.isSourceFile(nr)) { + var Tr = e.GoToDefinition.getReferenceAtPosition(nr, Oe, Mr); + if (!(Tr != null && Tr.file)) + return; + var vi = Mr.getTypeChecker().getMergedSymbol(Tr.file.symbol); + if (vi) + return fe(Mr, vi, false, Pe, De); + var Ui = Mr.getFileIncludeReasons(); + return Ui ? [{ definition: { type: 5, reference: Tr.reference, file: nr }, references: H(Tr.file, Ui, Mr) || e.emptyArray }] : void 0; + } + if (!fr.implementations) { + var Yi = ne(nr, Pe, Ue); + if (Yi) + return Yi; + } + var Wi = Mr.getTypeChecker(), ct = Wi.getSymbolAtLocation(e.isConstructorDeclaration(nr) && nr.parent.name || nr); + if (!ct) { + if (!fr.implementations && e.isStringLiteralLike(nr)) { + if (e.isModuleSpecifierLike(nr)) { + var Ui = Mr.getFileIncludeReasons(), Li = (Vr = (gr = nr.getSourceFile().resolvedModules) === null || gr === void 0 ? void 0 : gr.get(nr.text, e.getModeForUsageLocation(nr.getSourceFile(), nr))) === null || Vr === void 0 ? void 0 : Vr.resolvedFileName, nt = Li ? Mr.getSourceFile(Li) : void 0; + if (nt) + return [{ definition: { type: 4, node: nr }, references: H(nt, Ui, Mr) || e.emptyArray }]; + } + return ae(nr, Pe, Wi, Ue); + } + return; + } + if (ct.escapedName === "export=") + return fe(Mr, ct.parent, false, Pe, De); + var Mt = l(ct, Mr, Pe, Ue, fr, De); + if (Mt && !(ct.flags & 33554432)) + return Mt; + var xt = I(nr, ct, Wi), ut = xt && l(xt, Mr, Pe, Ue, fr, De), Dt = ue(ct, nr, Pe, De, Wi, Ue, fr); + return d(Mr, Mt, Dt, ut); + } + k.getReferencedSymbolsForNode = Y; + function U(Oe, nr) { + return nr.use === 1 ? Oe = e.getAdjustedReferenceLocation(Oe) : nr.use === 2 && (Oe = e.getAdjustedRenameLocation(Oe)), Oe; + } + k.getAdjustedNode = U; + function j(Oe, nr, Mr, Pe) { + var Ue, fr; + Pe === void 0 && (Pe = new e.Set(Mr.map(function(Tr) { + return Tr.fileName; + }))); + var De = (Ue = nr.getSourceFile(Oe)) === null || Ue === void 0 ? void 0 : Ue.symbol; + if (De) + return ((fr = fe(nr, De, false, Mr, Pe)[0]) === null || fr === void 0 ? void 0 : fr.references) || e.emptyArray; + var gr = nr.getFileIncludeReasons(), Vr = nr.getSourceFile(Oe); + return Vr && gr && H(Vr, gr, nr) || e.emptyArray; + } + k.getReferencesForFileName = j; + function H(Oe, nr, Mr) { + for (var Pe, Ue = nr.get(Oe.path) || e.emptyArray, fr = 0, De = Ue; fr < De.length; fr++) { + var gr = De[fr]; + if (e.isReferencedFile(gr)) { + var Vr = Mr.getSourceFileByPath(gr.file), Tr = e.getReferencedFileLocation(Mr.getSourceFileByPath, gr); + e.isReferenceFileLocation(Tr) && (Pe = e.append(Pe, { kind: 0, fileName: Vr.fileName, textSpan: e.createTextSpanFromRange(Tr) })); + } + } + return Pe; + } + function I(Oe, nr, Mr) { + if (Oe.parent && e.isNamespaceExportDeclaration(Oe.parent)) { + var Pe = Mr.getAliasedSymbol(nr), Ue = Mr.getMergedSymbol(Pe); + if (Pe !== Ue) + return Ue; + } + } + function l(Oe, nr, Mr, Pe, Ue, fr) { + var De = Oe.flags & 1536 && Oe.declarations && e.find(Oe.declarations, e.isSourceFile); + if (!!De) { + var gr = Oe.exports.get("export="), Vr = fe(nr, Oe, !!gr, Mr, fr); + if (!gr || !fr.has(De.fileName)) + return Vr; + var Tr = nr.getTypeChecker(); + return Oe = e.skipAlias(gr, Tr), d(nr, Vr, ue(Oe, void 0, Mr, fr, Tr, Pe, Ue)); + } + } + function d(Oe) { + for (var nr = [], Mr = 1; Mr < arguments.length; Mr++) + nr[Mr - 1] = arguments[Mr]; + for (var Pe, Ue = 0, fr = nr; Ue < fr.length; Ue++) { + var De = fr[Ue]; + if (!(!De || !De.length)) { + if (!Pe) { + Pe = De; + continue; + } + for (var gr = function(Ui) { + if (!Ui.definition || Ui.definition.type !== 0) + return Pe.push(Ui), "continue"; + var Yi = Ui.definition.symbol, Wi = e.findIndex(Pe, function(Li) { + return !!Li.definition && Li.definition.type === 0 && Li.definition.symbol === Yi; + }); + if (Wi === -1) + return Pe.push(Ui), "continue"; + var ct = Pe[Wi]; + Pe[Wi] = { definition: ct.definition, references: ct.references.concat(Ui.references).sort(function(Li, nt) { + var Mt = D(Oe, Li), xt = D(Oe, nt); + if (Mt !== xt) + return e.compareValues(Mt, xt); + var ut = A(Li), Dt = A(nt); + return ut.start !== Dt.start ? e.compareValues(ut.start, Dt.start) : e.compareValues(ut.length, Dt.length); + }) }; + }, Vr = 0, Tr = De; Vr < Tr.length; Vr++) { + var vi = Tr[Vr]; + gr(vi); + } + } + } + return Pe; + } + function D(Oe, nr) { + var Mr = nr.kind === 0 ? Oe.getSourceFile(nr.fileName) : nr.node.getSourceFile(); + return Oe.getSourceFiles().indexOf(Mr); + } + function fe(Oe, nr, Mr, Pe, Ue) { + e.Debug.assert(!!nr.valueDeclaration); + var fr = e.mapDefined(C.findModuleReferences(Oe, Pe, nr), function(ct) { + if (ct.kind === "import") { + var Li = ct.literal.parent; + if (e.isLiteralTypeNode(Li)) { + var nt = e.cast(Li.parent, e.isImportTypeNode); + if (Mr && !nt.qualifier) + return; + } + return E(ct.literal); + } else + return { kind: 0, fileName: ct.referencingFile.fileName, textSpan: e.createTextSpanFromRange(ct.ref) }; + }); + if (nr.declarations) + for (var De = 0, gr = nr.declarations; De < gr.length; De++) { + var Vr = gr[De]; + switch (Vr.kind) { + case 305: + break; + case 261: + Ue.has(Vr.getSourceFile().fileName) && fr.push(E(Vr.name)); + break; + default: + e.Debug.assert(!!(nr.flags & 33554432), "Expected a module symbol to be declared by a SourceFile or ModuleDeclaration."); + } + } + var Tr = nr.exports.get("export="); + if (Tr != null && Tr.declarations) + for (var vi = 0, Ui = Tr.declarations; vi < Ui.length; vi++) { + var Vr = Ui[vi], Yi = Vr.getSourceFile(); + if (Ue.has(Yi.fileName)) { + var Wi = e.isBinaryExpression(Vr) && e.isPropertyAccessExpression(Vr.left) ? Vr.left.expression : e.isExportAssignment(Vr) ? e.Debug.checkDefined(e.findChildOfKind(Vr, 93, Yi)) : e.getNameOfDeclaration(Vr) || Vr; + fr.push(E(Wi)); + } + } + return fr.length ? [{ definition: { type: 0, symbol: nr }, references: fr }] : e.emptyArray; + } + function g(Oe) { + return Oe.kind === 145 && e.isTypeOperatorNode(Oe.parent) && Oe.parent.operator === 145; + } + function ne(Oe, nr, Mr) { + if (e.isTypeKeyword(Oe.kind)) + return Oe.kind === 114 && e.isVoidExpression(Oe.parent) || Oe.kind === 145 && !g(Oe) ? void 0 : Ne(nr, Oe.kind, Mr, Oe.kind === 145 ? g : void 0); + if (e.isImportMeta(Oe.parent) && Oe.parent.name === Oe) + return Er(nr, Mr); + if (e.isStaticModifier(Oe) && e.isClassStaticBlockDeclaration(Oe.parent)) + return [{ definition: { type: 2, node: Oe }, references: [E(Oe)] }]; + if (e.isJumpStatementTarget(Oe)) { + var Pe = e.getTargetLabel(Oe.parent, Oe.text); + return Pe && Ye(Pe.parent, Pe); + } else if (e.isLabelOfLabeledStatement(Oe)) + return Ye(Oe.parent, Oe); + if (e.isThis(Oe)) + return pi(Oe, nr, Mr); + if (Oe.kind === 106) + return Zt(Oe); + } + function ue(Oe, nr, Mr, Pe, Ue, fr, De) { + var gr = nr && Z(Oe, nr, Ue, !Ar(De)) || Oe, Vr = nr ? zr(nr, gr) : 7, Tr = [], vi = new Re(Mr, Pe, nr ? Fe(nr) : 0, Ue, fr, Vr, De, Tr), Ui = !Ar(De) || !gr.declarations ? void 0 : e.find(gr.declarations, e.isExportSpecifier); + if (Ui) + ur(Ui.name, gr, Ui, vi.createSearch(nr, Oe, void 0), vi, true, true); + else if (nr && nr.kind === 88 && gr.escapedName === "default" && gr.parent) + ii(nr, gr, vi), ze(nr, gr, { exportingModuleSymbol: gr.parent, exportKind: 1 }, vi); + else { + var Yi = vi.createSearch(nr, gr, void 0, { allSearchSymbols: nr ? Xe(gr, nr, Ue, De.use === 2, !!De.providePrefixAndSuffixTextForRename, !!De.implementations) : [gr] }); + We(gr, vi, Yi); + } + return Tr; + } + function We(Oe, nr, Mr) { + var Pe = we(Oe); + if (Pe) + lr(Pe, Pe.getSourceFile(), Mr, nr, !(e.isSourceFile(Pe) && !e.contains(nr.sourceFiles, Pe))); + else + for (var Ue = 0, fr = nr.sourceFiles; Ue < fr.length; Ue++) { + var De = fr[Ue]; + nr.cancellationToken.throwIfCancellationRequested(), Ie(De, Mr, nr); + } + } + function Fe(Oe) { + switch (Oe.kind) { + case 171: + case 134: + return 1; + case 79: + if (e.isClassLike(Oe.parent)) + return e.Debug.assert(Oe.parent.name === Oe), 2; + default: + return 0; + } + } + function Z(Oe, nr, Mr, Pe) { + var Ue = nr.parent; + return e.isExportSpecifier(Ue) && Pe ? yr(nr, Oe, Ue, Mr) : e.firstDefined(Oe.declarations, function(fr) { + if (!fr.parent) { + if (Oe.flags & 33554432) + return; + e.Debug.fail("Unexpected symbol at ".concat(e.Debug.formatSyntaxKind(nr.kind), ": ").concat(e.Debug.formatSymbol(Oe))); + } + return e.isTypeLiteralNode(fr.parent) && e.isUnionTypeNode(fr.parent.parent) ? Mr.getPropertyOfType(Mr.getTypeFromTypeNode(fr.parent.parent), Oe.name) : void 0; + }); + } + var Be; + (function(Oe) { + Oe[Oe.None = 0] = "None", Oe[Oe.Constructor = 1] = "Constructor", Oe[Oe.Class = 2] = "Class"; + })(Be || (Be = {})); + function ge(Oe) { + if (!!(Oe.flags & 33555968)) { + var nr = Oe.declarations && e.find(Oe.declarations, function(Mr) { + return !e.isSourceFile(Mr) && !e.isModuleDeclaration(Mr); + }); + return nr && nr.symbol; + } + } + var Re = function() { + function Oe(nr, Mr, Pe, Ue, fr, De, gr, Vr) { + this.sourceFiles = nr, this.sourceFilesSet = Mr, this.specialSearchKind = Pe, this.checker = Ue, this.cancellationToken = fr, this.searchMeaning = De, this.options = gr, this.result = Vr, this.inheritsFromCache = new e.Map(), this.markSeenContainingTypeReference = e.nodeSeenTracker(), this.markSeenReExportRHS = e.nodeSeenTracker(), this.symbolIdToReferences = [], this.sourceFileToSeenSymbols = []; + } + return Oe.prototype.includesSourceFile = function(nr) { + return this.sourceFilesSet.has(nr.fileName); + }, Oe.prototype.getImportSearches = function(nr, Mr) { + return this.importTracker || (this.importTracker = C.createImportTracker(this.sourceFiles, this.sourceFilesSet, this.checker, this.cancellationToken)), this.importTracker(nr, Mr, this.options.use === 2); + }, Oe.prototype.createSearch = function(nr, Mr, Pe, Ue) { + Ue === void 0 && (Ue = {}); + var fr = Ue.text, De = fr === void 0 ? e.stripQuotes(e.symbolName(e.getLocalSymbolForExportDefault(Mr) || ge(Mr) || Mr)) : fr, gr = Ue.allSearchSymbols, Vr = gr === void 0 ? [Mr] : gr, Tr = e.escapeLeadingUnderscores(De), vi = this.options.implementations && nr ? mr(nr, Mr, this.checker) : void 0; + return { symbol: Mr, comingFrom: Pe, text: De, escapedText: Tr, parents: vi, allSearchSymbols: Vr, includes: function(Ui) { + return e.contains(Vr, Ui); + } }; + }, Oe.prototype.referenceAdder = function(nr) { + var Mr = e.getSymbolId(nr), Pe = this.symbolIdToReferences[Mr]; + return Pe || (Pe = this.symbolIdToReferences[Mr] = [], this.result.push({ definition: { type: 0, symbol: nr }, references: Pe })), function(Ue, fr) { + return Pe.push(E(Ue, fr)); + }; + }, Oe.prototype.addStringOrCommentReference = function(nr, Mr) { + this.result.push({ definition: void 0, references: [{ kind: 0, fileName: nr, textSpan: Mr }] }); + }, Oe.prototype.markSearchedSymbols = function(nr, Mr) { + for (var Pe = e.getNodeId(nr), Ue = this.sourceFileToSeenSymbols[Pe] || (this.sourceFileToSeenSymbols[Pe] = new e.Set()), fr = false, De = 0, gr = Mr; De < gr.length; De++) { + var Vr = gr[De]; + fr = e.tryAddToSet(Ue, e.getSymbolId(Vr)) || fr; + } + return fr; + }, Oe; + }(); + function ze(Oe, nr, Mr, Pe) { + var Ue = Pe.getImportSearches(nr, Mr), fr = Ue.importSearches, De = Ue.singleReferences, gr = Ue.indirectUsers; + if (De.length) + for (var Vr = Pe.referenceAdder(nr), Tr = 0, vi = De; Tr < vi.length; Tr++) { + var Ui = vi[Tr]; + He(Ui, Pe) && Vr(Ui); + } + for (var Yi = 0, Wi = fr; Yi < Wi.length; Yi++) { + var ct = Wi[Yi], Li = ct[0], nt = ct[1]; + n(Li.getSourceFile(), Pe.createSearch(Li, nt, 1), Pe); + } + if (gr.length) { + var Mt = void 0; + switch (Mr.exportKind) { + case 0: + Mt = Pe.createSearch(Oe, nr, 1); + break; + case 1: + Mt = Pe.options.use === 2 ? void 0 : Pe.createSearch(Oe, nr, 1, { text: "default" }); + break; + case 2: + break; + } + if (Mt) + for (var xt = 0, ut = gr; xt < ut.length; xt++) { + var Dt = ut[xt]; + Ie(Dt, Mt, Pe); + } + } + } + function Ee(Oe, nr, Mr, Pe, Ue, fr, De, gr) { + for (var Vr = C.createImportTracker(Oe, new e.Set(Oe.map(function(wt) { + return wt.fileName; + })), nr, Mr), Tr = Vr(Pe, { exportKind: De ? 1 : 0, exportingModuleSymbol: Ue }, false), vi = Tr.importSearches, Ui = Tr.indirectUsers, Yi = Tr.singleReferences, Wi = 0, ct = vi; Wi < ct.length; Wi++) { + var Li = ct[Wi][0]; + gr(Li); + } + for (var nt = 0, Mt = Yi; nt < Mt.length; nt++) { + var xt = Mt[nt]; + e.isIdentifier(xt) && e.isImportTypeNode(xt.parent) && gr(xt); + } + for (var ut = 0, Dt = Ui; ut < Dt.length; ut++) + for (var Rt = Dt[ut], Ii = 0, Ki = ir(Rt, De ? "default" : fr); Ii < Ki.length; Ii++) { + var Fi = Ki[Ii], ui = nr.getSymbolAtLocation(Fi), Bt = e.some(ui == null ? void 0 : ui.declarations, function(wt) { + return !!e.tryCast(wt, e.isExportAssignment); + }); + e.isIdentifier(Fi) && !e.isImportOrExportSpecifier(Fi.parent) && (ui === Pe || Bt) && gr(Fi); + } + } + k.eachExportReference = Ee; + function He(Oe, nr) { + return be(Oe, nr) ? nr.options.use !== 2 ? true : e.isIdentifier(Oe) ? !(e.isImportOrExportSpecifier(Oe.parent) && Oe.escapedText === "default") : false : false; + } + function rr(Oe, nr) { + if (!!Oe.declarations) + for (var Mr = 0, Pe = Oe.declarations; Mr < Pe.length; Mr++) { + var Ue = Pe[Mr], fr = Ue.getSourceFile(); + n(fr, nr.createSearch(Ue, Oe, 0), nr, nr.includesSourceFile(fr)); + } + } + function Ie(Oe, nr, Mr) { + e.getNameTable(Oe).get(nr.escapedText) !== void 0 && n(Oe, nr, Mr); + } + function _e(Oe, nr) { + return e.isArrayLiteralOrObjectLiteralDestructuringPattern(Oe.parent.parent) ? nr.getPropertySymbolOfDestructuringAssignment(Oe) : void 0; + } + function we(Oe) { + var nr = Oe.declarations, Mr = Oe.flags, Pe = Oe.parent, Ue = Oe.valueDeclaration; + if (Ue && (Ue.kind === 213 || Ue.kind === 226)) + return Ue; + if (!!nr) { + if (Mr & 8196) { + var fr = e.find(nr, function(Wi) { + return e.hasEffectiveModifier(Wi, 8) || e.isPrivateIdentifierClassElementDeclaration(Wi); + }); + return fr ? e.getAncestor(fr, 257) : void 0; + } + if (!nr.some(e.isObjectBindingElementWithoutPropertyName)) { + var De = Pe && !(Oe.flags & 262144); + if (!(De && !(e.isExternalModuleSymbol(Pe) && !Pe.globalExports))) { + for (var gr, Vr = 0, Tr = nr; Vr < Tr.length; Vr++) { + var vi = Tr[Vr], Ui = e.getContainerNode(vi); + if (gr && gr !== Ui || !Ui || Ui.kind === 305 && !e.isExternalOrCommonJsModule(Ui)) + return; + if (gr = Ui, e.isFunctionExpression(gr)) + for (var Yi = void 0; Yi = e.getNextJSDocCommentLocation(gr); ) + gr = Yi; + } + return De ? gr.getSourceFile() : gr; + } + } + } + } + function de(Oe, nr, Mr, Pe) { + return Pe === void 0 && (Pe = Mr), ye(Oe, nr, Mr, function() { + return true; + }, Pe) || false; + } + k.isSymbolReferencedInFile = de; + function ye(Oe, nr, Mr, Pe, Ue) { + Ue === void 0 && (Ue = Mr); + var fr = e.isParameterPropertyDeclaration(Oe.parent, Oe.parent.parent) ? e.first(nr.getSymbolsOfParameterPropertyDeclaration(Oe.parent, Oe.text)) : nr.getSymbolAtLocation(Oe); + if (!!fr) + for (var De = 0, gr = ir(Mr, fr.name, Ue); De < gr.length; De++) { + var Vr = gr[De]; + if (!(!e.isIdentifier(Vr) || Vr === Oe || Vr.escapedText !== Oe.escapedText)) { + var Tr = nr.getSymbolAtLocation(Vr); + if (Tr === fr || nr.getShorthandAssignmentValueSymbol(Vr.parent) === fr || e.isExportSpecifier(Vr.parent) && yr(Vr, Tr, Vr.parent, nr) === fr) { + var vi = Pe(Vr); + if (vi) + return vi; + } + } + } + } + k.eachSymbolReferenceInFile = ye; + function Ae(Oe, nr) { + var Mr = e.filter(ir(nr, Oe), function(Ue) { + return !!e.getDeclarationFromName(Ue); + }); + return Mr.reduce(function(Ue, fr) { + var De = Pe(fr); + return !e.some(Ue.declarationNames) || De === Ue.depth ? (Ue.declarationNames.push(fr), Ue.depth = De) : De < Ue.depth && (Ue.declarationNames = [fr], Ue.depth = De), Ue; + }, { depth: 1 / 0, declarationNames: [] }).declarationNames; + function Pe(Ue) { + for (var fr = 0; Ue; ) + Ue = e.getContainerNode(Ue), fr++; + return fr; + } + } + k.getTopMostDeclarationNamesInFile = Ae; + function er(Oe, nr, Mr, Pe) { + if (!Oe.name || !e.isIdentifier(Oe.name)) + return false; + for (var Ue = e.Debug.checkDefined(Mr.getSymbolAtLocation(Oe.name)), fr = 0, De = nr; fr < De.length; fr++) + for (var gr = De[fr], Vr = 0, Tr = ir(gr, Ue.name); Vr < Tr.length; Vr++) { + var vi = Tr[Vr]; + if (!(!e.isIdentifier(vi) || vi === Oe.name || vi.escapedText !== Oe.name.escapedText)) { + var Ui = e.climbPastPropertyAccess(vi), Yi = e.isCallExpression(Ui.parent) && Ui.parent.expression === Ui ? Ui.parent : void 0, Wi = Mr.getSymbolAtLocation(vi); + if (Wi && Mr.getRootSymbols(Wi).some(function(ct) { + return ct === Ue; + }) && Pe(vi, Yi)) + return true; + } + } + return false; + } + k.someSignatureUsage = er; + function ir(Oe, nr, Mr) { + return Mr === void 0 && (Mr = Oe), Cr(Oe, nr, Mr).map(function(Pe) { + return e.getTouchingPropertyName(Oe, Pe); + }); + } + function Cr(Oe, nr, Mr) { + Mr === void 0 && (Mr = Oe); + var Pe = []; + if (!nr || !nr.length) + return Pe; + for (var Ue = Oe.text, fr = Ue.length, De = nr.length, gr = Ue.indexOf(nr, Mr.pos); gr >= 0 && !(gr > Mr.end); ) { + var Vr = gr + De; + (gr === 0 || !e.isIdentifierPart(Ue.charCodeAt(gr - 1), 99)) && (Vr === fr || !e.isIdentifierPart(Ue.charCodeAt(Vr), 99)) && Pe.push(gr), gr = Ue.indexOf(nr, gr + De + 1); + } + return Pe; + } + function Ye(Oe, nr) { + var Mr = Oe.getSourceFile(), Pe = nr.text, Ue = e.mapDefined(ir(Mr, Pe, Oe), function(fr) { + return fr === nr || e.isJumpStatementTarget(fr) && e.getTargetLabel(fr, Pe) === nr ? E(fr) : void 0; + }); + return [{ definition: { type: 1, node: nr }, references: Ue }]; + } + function Br(Oe, nr) { + switch (Oe.kind) { + case 80: + if (e.isJSDocMemberName(Oe.parent)) + return true; + case 79: + return Oe.text.length === nr.length; + case 14: + case 10: { + var Mr = Oe; + return (e.isLiteralNameOfPropertyDeclarationOrIndexAccess(Mr) || e.isNameOfModuleDeclaration(Oe) || e.isExpressionOfExternalModuleImportEqualsDeclaration(Oe) || e.isCallExpression(Oe.parent) && e.isBindableObjectDefinePropertyCall(Oe.parent) && Oe.parent.arguments[1] === Oe) && Mr.text.length === nr.length; + } + case 8: + return e.isLiteralNameOfPropertyDeclarationOrIndexAccess(Oe) && Oe.text.length === nr.length; + case 88: + return nr.length === 7; + default: + return false; + } + } + function Er(Oe, nr) { + var Mr = e.flatMap(Oe, function(Pe) { + return nr.throwIfCancellationRequested(), e.mapDefined(ir(Pe, "meta", Pe), function(Ue) { + var fr = Ue.parent; + if (e.isImportMeta(fr)) + return E(fr); + }); + }); + return Mr.length ? [{ definition: { type: 2, node: Mr[0].node }, references: Mr }] : void 0; + } + function Ne(Oe, nr, Mr, Pe) { + var Ue = e.flatMap(Oe, function(fr) { + return Mr.throwIfCancellationRequested(), e.mapDefined(ir(fr, e.tokenToString(nr), fr), function(De) { + if (De.kind === nr && (!Pe || Pe(De))) + return E(De); + }); + }); + return Ue.length ? [{ definition: { type: 2, node: Ue[0].node }, references: Ue }] : void 0; + } + function n(Oe, nr, Mr, Pe) { + return Pe === void 0 && (Pe = true), Mr.cancellationToken.throwIfCancellationRequested(), lr(Oe, Oe, nr, Mr, Pe); + } + function lr(Oe, nr, Mr, Pe, Ue) { + if (!!Pe.markSearchedSymbols(nr, Mr.allSearchSymbols)) + for (var fr = 0, De = Cr(nr, Mr.text, Oe); fr < De.length; fr++) { + var gr = De[fr]; + Ge(nr, gr, Mr, Pe, Ue); + } + } + function be(Oe, nr) { + return !!(e.getMeaningFromLocation(Oe) & nr.searchMeaning); + } + function Ge(Oe, nr, Mr, Pe, Ue) { + var fr = e.getTouchingPropertyName(Oe, nr); + if (!Br(fr, Mr.text)) { + !Pe.options.implementations && (Pe.options.findInStrings && e.isInString(Oe, nr) || Pe.options.findInComments && e.isInNonReferenceComment(Oe, nr)) && Pe.addStringOrCommentReference(Oe.fileName, e.createTextSpan(nr, Mr.text.length)); + return; + } + if (!!be(fr, Pe)) { + var De = Pe.checker.getSymbolAtLocation(fr); + if (!!De) { + var gr = fr.parent; + if (!(e.isImportSpecifier(gr) && gr.propertyName === fr)) { + if (e.isExportSpecifier(gr)) { + e.Debug.assert(fr.kind === 79), ur(fr, De, gr, Mr, Pe, Ue); + return; + } + var Vr = Sr(Mr, De, fr, Pe); + if (!Vr) { + Ur(De, Mr, Pe); + return; + } + switch (Pe.specialSearchKind) { + case 0: + Ue && ii(fr, Vr, Pe); + break; + case 1: + mi(fr, Oe, Mr, Pe); + break; + case 2: + pe(fr, Mr, Pe); + break; + default: + e.Debug.assertNever(Pe.specialSearchKind); + } + e.isInJSFile(fr) && fr.parent.kind === 203 && e.isVariableDeclarationInitializedToBareOrAccessedRequire(fr.parent) && (De = fr.parent.symbol, !De) || wr(fr, De, Mr, Pe); + } + } + } + } + function ur(Oe, nr, Mr, Pe, Ue, fr, De) { + e.Debug.assert(!De || !!Ue.options.providePrefixAndSuffixTextForRename, "If alwaysGetReferences is true, then prefix/suffix text must be enabled"); + var gr = Mr.parent, Vr = Mr.propertyName, Tr = Mr.name, vi = gr.parent, Ui = yr(Oe, nr, Mr, Ue.checker); + if (!De && !Pe.includes(Ui)) + return; + if (Vr ? Oe === Vr ? (vi.moduleSpecifier || Mt(), fr && Ue.options.use !== 2 && Ue.markSeenReExportRHS(Tr) && ii(Tr, e.Debug.checkDefined(Mr.symbol), Ue)) : Ue.markSeenReExportRHS(Oe) && Mt() : Ue.options.use === 2 && Tr.escapedText === "default" || Mt(), !Ar(Ue.options) || De) { + var Yi = Oe.originalKeywordKind === 88 || Mr.name.originalKeywordKind === 88, Wi = Yi ? 1 : 0, ct = e.Debug.checkDefined(Mr.symbol), Li = C.getExportInfo(ct, Wi, Ue.checker); + Li && ze(Oe, ct, Li, Ue); + } + if (Pe.comingFrom !== 1 && vi.moduleSpecifier && !Vr && !Ar(Ue.options)) { + var nt = Ue.checker.getExportSpecifierLocalTargetSymbol(Mr); + nt && rr(nt, Ue); + } + function Mt() { + fr && ii(Oe, Ui, Ue); + } + } + function yr(Oe, nr, Mr, Pe) { + return Ir(Oe, Mr) && Pe.getExportSpecifierLocalTargetSymbol(Mr) || nr; + } + function Ir(Oe, nr) { + var Mr = nr.parent, Pe = nr.propertyName, Ue = nr.name; + return e.Debug.assert(Pe === Oe || Ue === Oe), Pe ? Pe === Oe : !Mr.parent.moduleSpecifier; + } + function wr(Oe, nr, Mr, Pe) { + var Ue = C.getImportOrExportSymbol(Oe, nr, Pe.checker, Mr.comingFrom === 1); + if (!!Ue) { + var fr = Ue.symbol; + Ue.kind === 0 ? Ar(Pe.options) || rr(fr, Pe) : ze(Oe, fr, Ue.exportInfo, Pe); + } + } + function Ur(Oe, nr, Mr) { + var Pe = Oe.flags, Ue = Oe.valueDeclaration, fr = Mr.checker.getShorthandAssignmentValueSymbol(Ue), De = Ue && e.getNameOfDeclaration(Ue); + !(Pe & 33554432) && De && nr.includes(fr) && ii(De, fr, Mr); + } + function ii(Oe, nr, Mr) { + var Pe = "kind" in nr ? nr : { kind: void 0, symbol: nr }, Ue = Pe.kind, fr = Pe.symbol; + if (!(Mr.options.use === 2 && Oe.kind === 88)) { + var De = Mr.referenceAdder(fr); + Mr.options.implementations ? Xi(Oe, De, Mr) : De(Oe, Ue); + } + } + function mi(Oe, nr, Mr, Pe) { + e.isNewExpressionTarget(Oe) && ii(Oe, Mr.symbol, Pe); + var Ue = function() { + return Pe.referenceAdder(Mr.symbol); + }; + if (e.isClassLike(Oe.parent)) + e.Debug.assert(Oe.kind === 88 || Oe.parent.name === Oe), or(Mr.symbol, nr, Ue()); + else { + var fr = vr(Oe); + fr && (si(fr, Ue()), wi(fr, Pe)); + } + } + function pe(Oe, nr, Mr) { + ii(Oe, nr.symbol, Mr); + var Pe = Oe.parent; + if (!(Mr.options.use === 2 || !e.isClassLike(Pe))) { + e.Debug.assert(Pe.name === Oe); + for (var Ue = Mr.referenceAdder(nr.symbol), fr = 0, De = Pe.members; fr < De.length; fr++) { + var gr = De[fr]; + !(e.isMethodOrAccessor(gr) && e.isStatic(gr)) || gr.body && gr.body.forEachChild(function Vr(Tr) { + Tr.kind === 108 ? Ue(Tr) : !e.isFunctionLike(Tr) && !e.isClassLike(Tr) && Tr.forEachChild(Vr); + }); + } + } + } + function or(Oe, nr, Mr) { + var Pe = qr(Oe); + if (Pe && Pe.declarations) + for (var Ue = 0, fr = Pe.declarations; Ue < fr.length; Ue++) { + var De = fr[Ue], gr = e.findChildOfKind(De, 134, nr); + e.Debug.assert(De.kind === 171 && !!gr), Mr(gr); + } + Oe.exports && Oe.exports.forEach(function(Vr) { + var Tr = Vr.valueDeclaration; + if (Tr && Tr.kind === 169) { + var vi = Tr.body; + vi && xe(vi, 108, function(Ui) { + e.isNewExpressionTarget(Ui) && Mr(Ui); + }); + } + }); + } + function qr(Oe) { + return Oe.members && Oe.members.get("__constructor"); + } + function si(Oe, nr) { + var Mr = qr(Oe.symbol); + if (!!(Mr && Mr.declarations)) + for (var Pe = 0, Ue = Mr.declarations; Pe < Ue.length; Pe++) { + var fr = Ue[Pe]; + e.Debug.assert(fr.kind === 171); + var De = fr.body; + De && xe(De, 106, function(gr) { + e.isCallExpressionTarget(gr) && nr(gr); + }); + } + } + function Di(Oe) { + return !!qr(Oe.symbol); + } + function wi(Oe, nr) { + if (!Di(Oe)) { + var Mr = Oe.symbol, Pe = nr.createSearch(void 0, Mr, void 0); + We(Mr, nr, Pe); + } + } + function Xi(Oe, nr, Mr) { + if (e.isDeclarationName(Oe) && Wr(Oe.parent)) { + nr(Oe); + return; + } + if (Oe.kind !== 79) + return; + Oe.parent.kind === 297 && Je(Oe, Mr.checker, nr); + var Pe = et(Oe); + if (Pe) { + nr(Pe); + return; + } + var Ue = e.findAncestor(Oe, function(Vr) { + return !e.isQualifiedName(Vr.parent) && !e.isTypeNode(Vr.parent) && !e.isTypeElement(Vr.parent); + }), fr = Ue.parent; + if (e.hasType(fr) && fr.type === Ue && Mr.markSeenContainingTypeReference(fr)) + if (e.hasInitializer(fr)) + gr(fr.initializer); + else if (e.isFunctionLike(fr) && fr.body) { + var De = fr.body; + De.kind === 235 ? e.forEachReturnStatement(De, function(Vr) { + Vr.expression && gr(Vr.expression); + }) : gr(De); + } else + e.isAssertionExpression(fr) && gr(fr.expression); + function gr(Vr) { + Gi(Vr) && nr(Vr); + } + } + function et(Oe) { + return e.isIdentifier(Oe) || e.isPropertyAccessExpression(Oe) ? et(Oe.parent) : e.isExpressionWithTypeArguments(Oe) ? e.tryCast(Oe.parent.parent, e.isClassLike) : void 0; + } + function Gi(Oe) { + switch (Oe.kind) { + case 212: + return Gi(Oe.expression); + case 214: + case 213: + case 205: + case 226: + case 204: + return true; + default: + return false; + } + } + function Wt(Oe, nr, Mr, Pe) { + if (Oe === nr) + return true; + var Ue = e.getSymbolId(Oe) + "," + e.getSymbolId(nr), fr = Mr.get(Ue); + if (fr !== void 0) + return fr; + Mr.set(Ue, false); + var De = !!Oe.declarations && Oe.declarations.some(function(gr) { + return e.getAllSuperTypeNodes(gr).some(function(Vr) { + var Tr = Pe.getTypeAtLocation(Vr); + return !!Tr && !!Tr.symbol && Wt(Tr.symbol, nr, Mr, Pe); + }); + }); + return Mr.set(Ue, De), De; + } + function Zt(Oe) { + var nr = e.getSuperContainer(Oe, false); + if (!!nr) { + var Mr = 32; + switch (nr.kind) { + case 167: + case 166: + case 169: + case 168: + case 171: + case 172: + case 173: + Mr &= e.getSyntacticModifierFlags(nr), nr = nr.parent; + break; + default: + return; + } + var Pe = nr.getSourceFile(), Ue = e.mapDefined(ir(Pe, "super", nr), function(fr) { + if (fr.kind === 106) { + var De = e.getSuperContainer(fr, false); + return De && e.isStatic(De) === !!Mr && De.parent.symbol === nr.symbol ? E(fr) : void 0; + } + }); + return [{ definition: { type: 0, symbol: nr.symbol }, references: Ue }]; + } + } + function _r(Oe) { + return Oe.kind === 79 && Oe.parent.kind === 164 && Oe.parent.name === Oe; + } + function pi(Oe, nr, Mr) { + var Pe = e.getThisContainer(Oe, false), Ue = 32; + switch (Pe.kind) { + case 169: + case 168: + if (e.isObjectLiteralMethod(Pe)) { + Ue &= e.getSyntacticModifierFlags(Pe), Pe = Pe.parent; + break; + } + case 167: + case 166: + case 171: + case 172: + case 173: + Ue &= e.getSyntacticModifierFlags(Pe), Pe = Pe.parent; + break; + case 305: + if (e.isExternalModule(Pe) || _r(Oe)) + return; + case 256: + case 213: + break; + default: + return; + } + var fr = e.flatMap(Pe.kind === 305 ? nr : [Pe.getSourceFile()], function(gr) { + return Mr.throwIfCancellationRequested(), ir(gr, "this", e.isSourceFile(Pe) ? gr : Pe).filter(function(Vr) { + if (!e.isThis(Vr)) + return false; + var Tr = e.getThisContainer(Vr, false); + switch (Pe.kind) { + case 213: + case 256: + return Pe.symbol === Tr.symbol; + case 169: + case 168: + return e.isObjectLiteralMethod(Pe) && Pe.symbol === Tr.symbol; + case 226: + case 257: + case 205: + return Tr.parent && Pe.symbol === Tr.parent.symbol && e.isStatic(Tr) === !!Ue; + case 305: + return Tr.kind === 305 && !e.isExternalModule(Tr) && !_r(Vr); + } + }); + }).map(function(gr) { + return E(gr); + }), De = e.firstDefined(fr, function(gr) { + return e.isParameter(gr.node.parent) ? gr.node : void 0; + }); + return [{ definition: { type: 3, node: De || Oe }, references: fr }]; + } + function ae(Oe, nr, Mr, Pe) { + var Ue = e.getContextualTypeFromParentOrAncestorTypeNode(Oe, Mr), fr = e.flatMap(nr, function(De) { + return Pe.throwIfCancellationRequested(), e.mapDefined(ir(De, Oe.text), function(gr) { + if (e.isStringLiteralLike(gr) && gr.text === Oe.text) + if (Ue) { + var Vr = e.getContextualTypeFromParentOrAncestorTypeNode(gr, Mr); + if (Ue !== Mr.getStringType() && Ue === Vr) + return E(gr, 2); + } else + return e.isNoSubstitutionTemplateLiteral(gr) && !e.rangeIsOnSingleLine(gr, De) ? void 0 : E(gr, 2); + }); + }); + return [{ definition: { type: 4, node: Oe }, references: fr }]; + } + function Xe(Oe, nr, Mr, Pe, Ue, fr) { + var De = []; + return Jr(Oe, nr, Mr, Pe, !(Pe && Ue), function(gr, Vr, Tr) { + Tr && Ze(Oe) !== Ze(Tr) && (Tr = void 0), De.push(Tr || Vr || gr); + }, function() { + return !fr; + }), De; + } + function Jr(Oe, nr, Mr, Pe, Ue, fr, De) { + var gr = e.getContainingObjectLiteralElement(nr); + if (gr) { + var Vr = Mr.getShorthandAssignmentValueSymbol(nr.parent); + if (Vr && Pe) + return fr(Vr, void 0, void 0, 3); + var Tr = Mr.getContextualType(gr.parent), vi = Tr && e.firstDefined(e.getPropertySymbolsFromContextualType(gr, Mr, Tr, true), function(ui) { + return Ki(ui, 4); + }); + if (vi) + return vi; + var Ui = _e(nr, Mr), Yi = Ui && fr(Ui, void 0, void 0, 4); + if (Yi) + return Yi; + var Wi = Vr && fr(Vr, void 0, void 0, 3); + if (Wi) + return Wi; + } + var ct = I(nr, Oe, Mr); + if (ct) { + var Li = fr(ct, void 0, void 0, 1); + if (Li) + return Li; + } + var nt = Ki(Oe); + if (nt) + return nt; + if (Oe.valueDeclaration && e.isParameterPropertyDeclaration(Oe.valueDeclaration, Oe.valueDeclaration.parent)) { + var Mt = Mr.getSymbolsOfParameterPropertyDeclaration(e.cast(Oe.valueDeclaration, e.isParameter), Oe.name); + return e.Debug.assert(Mt.length === 2 && !!(Mt[0].flags & 1) && !!(Mt[1].flags & 4)), Ki(Oe.flags & 1 ? Mt[1] : Mt[0]); + } + var xt = e.getDeclarationOfKind(Oe, 275); + if (!Pe || xt && !xt.propertyName) { + var ut = xt && Mr.getExportSpecifierLocalTargetSymbol(xt); + if (ut) { + var Dt = fr(ut, void 0, void 0, 1); + if (Dt) + return Dt; + } + } + if (!Pe) { + var Rt = void 0; + return Ue ? Rt = e.isObjectBindingElementWithoutPropertyName(nr.parent) ? e.getPropertySymbolFromBindingElement(Mr, nr.parent) : void 0 : Rt = Fi(Oe, Mr), Rt && Ki(Rt, 4); + } + e.Debug.assert(Pe); + var Ii = Ue; + if (Ii) { + var Rt = Fi(Oe, Mr); + return Rt && Ki(Rt, 4); + } + function Ki(ui, Bt) { + return e.firstDefined(Mr.getRootSymbols(ui), function(wt) { + return fr(ui, wt, void 0, Bt) || (wt.parent && wt.parent.flags & 96 && De(wt) ? ti(wt.parent, wt.name, Mr, function(na) { + return fr(ui, wt, na, Bt); + }) : void 0); + }); + } + function Fi(ui, Bt) { + var wt = e.getDeclarationOfKind(ui, 203); + if (wt && e.isObjectBindingElementWithoutPropertyName(wt)) + return e.getPropertySymbolFromBindingElement(Bt, wt); + } + } + function ti(Oe, nr, Mr, Pe) { + var Ue = new e.Map(); + return fr(Oe); + function fr(De) { + if (!(!(De.flags & 96) || !e.addToSeen(Ue, e.getSymbolId(De)))) + return e.firstDefined(De.declarations, function(gr) { + return e.firstDefined(e.getAllSuperTypeNodes(gr), function(Vr) { + var Tr = Mr.getTypeAtLocation(Vr), vi = Tr && Tr.symbol && Mr.getPropertyOfType(Tr, nr); + return Tr && vi && (e.firstDefined(Mr.getRootSymbols(vi), Pe) || fr(Tr.symbol)); + }); + }); + } + } + function Ze(Oe) { + if (!Oe.valueDeclaration) + return false; + var nr = e.getEffectiveModifierFlags(Oe.valueDeclaration); + return !!(nr & 32); + } + function Sr(Oe, nr, Mr, Pe) { + var Ue = Pe.checker; + return Jr(nr, Mr, Ue, false, Pe.options.use !== 2 || !!Pe.options.providePrefixAndSuffixTextForRename, function(fr, De, gr, Vr) { + return gr && Ze(nr) !== Ze(gr) && (gr = void 0), Oe.includes(gr || De || fr) ? { symbol: De && !(e.getCheckFlags(fr) & 6) ? De : fr, kind: Vr } : void 0; + }, function(fr) { + return !(Oe.parents && !Oe.parents.some(function(De) { + return Wt(fr.parent, De, Pe.inheritsFromCache, Ue); + })); + }); + } + function zr(Oe, nr) { + var Mr = e.getMeaningFromLocation(Oe), Pe = nr.declarations; + if (Pe) { + var Ue = void 0; + do { + Ue = Mr; + for (var fr = 0, De = Pe; fr < De.length; fr++) { + var gr = De[fr], Vr = e.getMeaningFromDeclaration(gr); + Vr & Mr && (Mr |= Vr); + } + } while (Mr !== Ue); + } + return Mr; + } + k.getIntersectingMeaningFromDeclarations = zr; + function Wr(Oe) { + return Oe.flags & 16777216 ? !(e.isInterfaceDeclaration(Oe) || e.isTypeAliasDeclaration(Oe)) : e.isVariableLike(Oe) ? e.hasInitializer(Oe) : e.isFunctionLikeDeclaration(Oe) ? !!Oe.body : e.isClassLike(Oe) || e.isModuleOrEnumDeclaration(Oe); + } + function Je(Oe, nr, Mr) { + var Pe = nr.getSymbolAtLocation(Oe), Ue = nr.getShorthandAssignmentValueSymbol(Pe.valueDeclaration); + if (Ue) + for (var fr = 0, De = Ue.getDeclarations(); fr < De.length; fr++) { + var gr = De[fr]; + e.getMeaningFromDeclaration(gr) & 1 && Mr(gr); + } + } + k.getReferenceEntriesForShorthandPropertyAssignment = Je; + function xe(Oe, nr, Mr) { + e.forEachChild(Oe, function(Pe) { + Pe.kind === nr && Mr(Pe), xe(Pe, nr, Mr); + }); + } + function vr(Oe) { + return e.tryGetClassExtendingExpressionWithTypeArguments(e.climbPastPropertyAccess(Oe).parent); + } + function mr(Oe, nr, Mr) { + var Pe = e.isRightSideOfPropertyAccess(Oe) ? Oe.parent : void 0, Ue = Pe && Mr.getTypeAtLocation(Pe.expression), fr = e.mapDefined(Ue && (Ue.isUnionOrIntersection() ? Ue.types : Ue.symbol === nr.parent ? void 0 : [Ue]), function(De) { + return De.symbol && De.symbol.flags & 96 ? De.symbol : void 0; + }); + return fr.length === 0 ? void 0 : fr; + } + function Ar(Oe) { + return Oe.use === 2 && Oe.providePrefixAndSuffixTextForRename; + } + })(P = C.Core || (C.Core = {})); + })(a = e.FindAllReferences || (e.FindAllReferences = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(L) { + return (e.isFunctionExpression(L) || e.isClassExpression(L)) && e.isNamedDeclaration(L); + } + function B(L) { + return (e.isFunctionExpression(L) || e.isArrowFunction(L) || e.isClassExpression(L)) && e.isVariableDeclaration(L.parent) && L === L.parent.initializer && e.isIdentifier(L.parent.name) && !!(e.getCombinedNodeFlags(L.parent) & 2); + } + function E(L) { + return e.isSourceFile(L) || e.isModuleDeclaration(L) || e.isFunctionDeclaration(L) || e.isFunctionExpression(L) || e.isClassDeclaration(L) || e.isClassExpression(L) || e.isClassStaticBlockDeclaration(L) || e.isMethodDeclaration(L) || e.isMethodSignature(L) || e.isGetAccessorDeclaration(L) || e.isSetAccessorDeclaration(L); + } + function Q(L) { + return e.isSourceFile(L) || e.isModuleDeclaration(L) && e.isIdentifier(L.name) || e.isFunctionDeclaration(L) || e.isClassDeclaration(L) || e.isClassStaticBlockDeclaration(L) || e.isMethodDeclaration(L) || e.isMethodSignature(L) || e.isGetAccessorDeclaration(L) || e.isSetAccessorDeclaration(L) || w(L) || B(L); + } + function le(L) { + return e.isSourceFile(L) ? L : e.isNamedDeclaration(L) ? L.name : B(L) ? L.parent.name : e.Debug.checkDefined(L.modifiers && e.find(L.modifiers, N)); + } + function N(L) { + return L.kind === 88; + } + function p(L, P) { + var k = le(P); + return k && L.getSymbolAtLocation(k); + } + function m(L, P) { + if (e.isSourceFile(P)) + return { text: P.fileName, pos: 0, end: 0 }; + if ((e.isFunctionDeclaration(P) || e.isClassDeclaration(P)) && !e.isNamedDeclaration(P)) { + var k = P.modifiers && e.find(P.modifiers, N); + if (k) + return { text: "default", pos: k.getStart(), end: k.getEnd() }; + } + if (e.isClassStaticBlockDeclaration(P)) { + var Y = P.getSourceFile(), U = e.skipTrivia(Y.text, e.moveRangePastModifiers(P).pos), j = U + 6, H = L.getTypeChecker(), I = H.getSymbolAtLocation(P.parent), l = I ? "".concat(H.symbolToString(I, P.parent), " ") : ""; + return { text: "".concat(l, "static {}"), pos: U, end: j }; + } + var d = B(P) ? P.parent.name : e.Debug.checkDefined(e.getNameOfDeclaration(P), "Expected call hierarchy item to have a name"), D = e.isIdentifier(d) ? e.idText(d) : e.isStringOrNumericLiteralLike(d) ? d.text : e.isComputedPropertyName(d) && e.isStringOrNumericLiteralLike(d.expression) ? d.expression.text : void 0; + if (D === void 0) { + var H = L.getTypeChecker(), I = H.getSymbolAtLocation(d); + I && (D = H.symbolToString(I, P)); + } + if (D === void 0) { + var fe = e.createPrinter({ removeComments: true, omitTrailingSemicolon: true }); + D = e.usingSingleLineStringWriter(function(g) { + return fe.writeNode(4, P, P.getSourceFile(), g); + }); + } + return { text: D, pos: d.getStart(), end: d.getEnd() }; + } + function G(L) { + var P, k; + if (B(L)) + return e.isModuleBlock(L.parent.parent.parent.parent) && e.isIdentifier(L.parent.parent.parent.parent.parent.name) ? L.parent.parent.parent.parent.parent.name.getText() : void 0; + switch (L.kind) { + case 172: + case 173: + case 169: + return L.parent.kind === 205 ? (P = e.getAssignedName(L.parent)) === null || P === void 0 ? void 0 : P.getText() : (k = e.getNameOfDeclaration(L.parent)) === null || k === void 0 ? void 0 : k.getText(); + case 256: + case 257: + case 261: + if (e.isModuleBlock(L.parent) && e.isIdentifier(L.parent.parent.name)) + return L.parent.parent.name.getText(); + } + } + function oe(L, P) { + if (P.body) + return P; + if (e.isConstructorDeclaration(P)) + return e.getFirstConstructorWithBody(P.parent); + if (e.isFunctionDeclaration(P) || e.isMethodDeclaration(P)) { + var k = p(L, P); + return k && k.valueDeclaration && e.isFunctionLikeDeclaration(k.valueDeclaration) && k.valueDeclaration.body ? k.valueDeclaration : void 0; + } + return P; + } + function f(L, P) { + var k = p(L, P), Y; + if (k && k.declarations) { + var U = e.indicesOf(k.declarations), j = e.map(k.declarations, function(fe) { + return { file: fe.getSourceFile().fileName, pos: fe.pos }; + }); + U.sort(function(fe, g) { + return e.compareStringsCaseSensitive(j[fe].file, j[g].file) || j[fe].pos - j[g].pos; + }); + for (var H = e.map(U, function(fe) { + return k.declarations[fe]; + }), I = void 0, l = 0, d = H; l < d.length; l++) { + var D = d[l]; + Q(D) && ((!I || I.parent !== D.parent || I.end !== D.pos) && (Y = e.append(Y, D)), I = D); + } + } + return Y; + } + function T(L, P) { + var k, Y, U; + return e.isClassStaticBlockDeclaration(P) ? P : e.isFunctionLikeDeclaration(P) ? (Y = (k = oe(L, P)) !== null && k !== void 0 ? k : f(L, P)) !== null && Y !== void 0 ? Y : P : (U = f(L, P)) !== null && U !== void 0 ? U : P; + } + function K(L, P) { + for (var k = L.getTypeChecker(), Y = false; ; ) { + if (Q(P)) + return T(k, P); + if (E(P)) { + var U = e.findAncestor(P, Q); + return U && T(k, U); + } + if (e.isDeclarationName(P)) { + if (Q(P.parent)) + return T(k, P.parent); + if (E(P.parent)) { + var U = e.findAncestor(P.parent, Q); + return U && T(k, U); + } + return e.isVariableDeclaration(P.parent) && P.parent.initializer && B(P.parent.initializer) ? P.parent.initializer : void 0; + } + if (e.isConstructorDeclaration(P)) + return Q(P.parent) ? P.parent : void 0; + if (P.kind === 124 && e.isClassStaticBlockDeclaration(P.parent)) { + P = P.parent; + continue; + } + if (e.isVariableDeclaration(P) && P.initializer && B(P.initializer)) + return P.initializer; + if (!Y) { + var j = k.getSymbolAtLocation(P); + if (j && (j.flags & 2097152 && (j = k.getAliasedSymbol(j)), j.valueDeclaration)) { + Y = true, P = j.valueDeclaration; + continue; + } + } + return; + } + } + C.resolveCallHierarchyDeclaration = K; + function b(L, P) { + var k = P.getSourceFile(), Y = m(L, P), U = G(P), j = e.getNodeKind(P), H = e.getNodeModifiers(P), I = e.createTextSpanFromBounds(e.skipTrivia(k.text, P.getFullStart(), false, true), P.getEnd()), l = e.createTextSpanFromBounds(Y.pos, Y.end); + return { file: k.fileName, kind: j, kindModifiers: H, name: Y.text, containerName: U, span: I, selectionSpan: l }; + } + C.createCallHierarchyItem = b; + function se(L) { + return L !== void 0; + } + function J(L) { + if (L.kind === 1) { + var P = L.node; + if (e.isCallOrNewExpressionTarget(P, true, true) || e.isTaggedTemplateTag(P, true, true) || e.isDecoratorTarget(P, true, true) || e.isJsxOpeningLikeElementTagName(P, true, true) || e.isRightSideOfPropertyAccess(P) || e.isArgumentExpressionOfElementAccess(P)) { + var k = P.getSourceFile(), Y = e.findAncestor(P, Q) || k; + return { declaration: Y, range: e.createTextRangeFromNode(P, k) }; + } + } + } + function ie(L) { + return e.getNodeId(L.declaration); + } + function R(L, P) { + return { from: L, fromSpans: P }; + } + function q(L, P) { + return R(b(L, P[0].declaration), e.map(P, function(k) { + return e.createTextSpanFromRange(k.range); + })); + } + function O(L, P, k) { + if (e.isSourceFile(P) || e.isModuleDeclaration(P) || e.isClassStaticBlockDeclaration(P)) + return []; + var Y = le(P), U = e.filter(e.FindAllReferences.findReferenceOrRenameEntries(L, k, L.getSourceFiles(), Y, 0, { use: 1 }, J), se); + return U ? e.group(U, ie, function(j) { + return q(L, j); + }) : []; + } + C.getIncomingCalls = O; + function ve(L, P) { + function k(U) { + var j = e.isTaggedTemplateExpression(U) ? U.tag : e.isJsxOpeningLikeElement(U) ? U.tagName : e.isAccessExpression(U) || e.isClassStaticBlockDeclaration(U) ? U : U.expression, H = K(L, j); + if (H) { + var I = e.createTextRangeFromNode(j, U.getSourceFile()); + if (e.isArray(H)) + for (var l = 0, d = H; l < d.length; l++) { + var D = d[l]; + P.push({ declaration: D, range: I }); + } + else + P.push({ declaration: H, range: I }); + } + } + function Y(U) { + if (!!U && !(U.flags & 16777216)) { + if (Q(U)) { + if (e.isClassLike(U)) + for (var j = 0, H = U.members; j < H.length; j++) { + var I = H[j]; + I.name && e.isComputedPropertyName(I.name) && Y(I.name.expression); + } + return; + } + switch (U.kind) { + case 79: + case 265: + case 266: + case 272: + case 258: + case 259: + return; + case 170: + k(U); + return; + case 211: + case 229: + Y(U.expression); + return; + case 254: + case 164: + Y(U.name), Y(U.initializer); + return; + case 208: + k(U), Y(U.expression), e.forEach(U.arguments, Y); + return; + case 209: + k(U), Y(U.expression), e.forEach(U.arguments, Y); + return; + case 210: + k(U), Y(U.tag), Y(U.template); + return; + case 280: + case 279: + k(U), Y(U.tagName), Y(U.attributes); + return; + case 165: + k(U), Y(U.expression); + return; + case 206: + case 207: + k(U), e.forEachChild(U, Y); + break; + } + e.isPartOfTypeNode(U) || e.forEachChild(U, Y); + } + } + return Y; + } + function ee(L, P) { + e.forEach(L.statements, P); + } + function he(L, P) { + !e.hasSyntacticModifier(L, 2) && L.body && e.isModuleBlock(L.body) && e.forEach(L.body.statements, P); + } + function F(L, P, k) { + var Y = oe(L, P); + Y && (e.forEach(Y.parameters, k), k(Y.body)); + } + function x(L, P) { + P(L.body); + } + function X(L, P) { + e.forEach(L.decorators, P); + var k = e.getClassExtendsHeritageElement(L); + k && P(k.expression); + for (var Y = 0, U = L.members; Y < U.length; Y++) { + var j = U[Y]; + e.forEach(j.decorators, P), e.isPropertyDeclaration(j) ? P(j.initializer) : e.isConstructorDeclaration(j) && j.body ? (e.forEach(j.parameters, P), P(j.body)) : e.isClassStaticBlockDeclaration(j) && P(j); + } + } + function $(L, P) { + var k = [], Y = ve(L, k); + switch (P.kind) { + case 305: + ee(P, Y); + break; + case 261: + he(P, Y); + break; + case 256: + case 213: + case 214: + case 169: + case 172: + case 173: + F(L.getTypeChecker(), P, Y); + break; + case 257: + case 226: + X(P, Y); + break; + case 170: + x(P, Y); + break; + default: + e.Debug.assertNever(P); + } + return k; + } + function A(L, P) { + return { to: L, fromSpans: P }; + } + function y(L, P) { + return A(b(L, P[0].declaration), e.map(P, function(k) { + return e.createTextSpanFromRange(k.range); + })); + } + function V(L, P) { + return P.flags & 16777216 || e.isMethodSignature(P) ? [] : e.group($(L, P), ie, function(k) { + return y(L, k); + }); + } + C.getOutgoingCalls = V; + })(a = e.CallHierarchy || (e.CallHierarchy = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + function a(f, T, K, b, se, J, ie) { + var R = e.hostUsesCaseSensitiveFileNames(b), q = e.createGetCanonicalFileName(R), O = C(T, K, q, ie), ve = C(K, T, q, ie); + return e.textChanges.ChangeTracker.with({ host: b, formatContext: se, preferences: J }, function(ee) { + B(f, ee, O, T, K, b.getCurrentDirectory(), R), E(f, ee, O, ve, b, q); + }); + } + e.getEditsForFileRename = a; + function C(f, T, K, b) { + var se = K(f); + return function(ie) { + var R = b && b.tryGetSourcePosition({ fileName: ie, pos: 0 }), q = J(R ? R.fileName : ie); + return R ? q === void 0 ? void 0 : w(R.fileName, q, ie, K) : q; + }; + function J(ie) { + if (K(ie) === se) + return T; + var R = e.tryRemoveDirectoryPrefix(ie, se, K); + return R === void 0 ? void 0 : T + "/" + R; + } + } + e.getPathUpdater = C; + function w(f, T, K, b) { + var se = e.getRelativePathFromFile(f, T, b); + return le(e.getDirectoryPath(K), se); + } + function B(f, T, K, b, se, J, ie) { + var R = f.getCompilerOptions().configFile; + if (!R) + return; + var q = e.getDirectoryPath(R.fileName), O = e.getTsConfigObjectLiteralExpression(R); + if (!O) + return; + oe(O, function(F, x) { + switch (x) { + case "files": + case "include": + case "exclude": { + var X = ve(F); + if (X || x !== "include" || !e.isArrayLiteralExpression(F.initializer)) + return; + var $ = e.mapDefined(F.initializer.elements, function(y) { + return e.isStringLiteral(y) ? y.text : void 0; + }); + if ($.length === 0) + return; + var A = e.getFileMatcherPatterns(q, [], $, ie, J); + e.getRegexFromPattern(e.Debug.checkDefined(A.includeFilePattern), ie).test(b) && !e.getRegexFromPattern(e.Debug.checkDefined(A.includeFilePattern), ie).test(se) && T.insertNodeAfter(R, e.last(F.initializer.elements), e.factory.createStringLiteral(he(se))); + return; + } + case "compilerOptions": + oe(F.initializer, function(y, V) { + var L = e.getOptionFromName(V); + L && (L.isFilePath || L.type === "list" && L.element.isFilePath) ? ve(y) : V === "paths" && oe(y.initializer, function(P) { + if (!!e.isArrayLiteralExpression(P.initializer)) + for (var k = 0, Y = P.initializer.elements; k < Y.length; k++) { + var U = Y[k]; + ee(U); + } + }); + }); + return; + } + }); + function ve(F) { + for (var x = e.isArrayLiteralExpression(F.initializer) ? F.initializer.elements : [F.initializer], X = false, $ = 0, A = x; $ < A.length; $++) { + var y = A[$]; + X = ee(y) || X; + } + return X; + } + function ee(F) { + if (!e.isStringLiteral(F)) + return false; + var x = le(q, F.text), X = K(x); + return X !== void 0 ? (T.replaceRangeWithText(R, G(F, R), he(X)), true) : false; + } + function he(F) { + return e.getRelativePathFromDirectory(q, F, !ie); + } + } + function E(f, T, K, b, se, J) { + for (var ie = f.getSourceFiles(), R = function(ee) { + var he = K(ee.fileName), F = he != null ? he : ee.fileName, x = e.getDirectoryPath(F), X = b(ee.fileName), $ = X || ee.fileName, A = e.getDirectoryPath($), y = he !== void 0 || X !== void 0; + m(ee, T, function(V) { + if (!!e.pathIsRelative(V)) { + var L = le(A, V), P = K(L); + return P === void 0 ? void 0 : e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(x, P, J)); + } + }, function(V) { + var L = f.getTypeChecker().getSymbolAtLocation(V); + if (!((L == null ? void 0 : L.declarations) && L.declarations.some(function(k) { + return e.isAmbientModule(k); + }))) { + var P = X !== void 0 ? p(V, e.resolveModuleName(V.text, $, f.getCompilerOptions(), se), K, ie) : N(L, V, ee, f, se, K); + return P !== void 0 && (P.updated || y && e.pathIsRelative(V.text)) ? e.moduleSpecifiers.updateModuleSpecifier(f.getCompilerOptions(), ee, J(F), P.newFileName, e.createModuleSpecifierResolutionHost(f, se), V.text) : void 0; + } + }); + }, q = 0, O = ie; q < O.length; q++) { + var ve = O[q]; + R(ve); + } + } + function Q(f, T) { + return e.normalizePath(e.combinePaths(f, T)); + } + function le(f, T) { + return e.ensurePathIsNonModuleName(Q(f, T)); + } + function N(f, T, K, b, se, J) { + if (f) { + var ie = e.find(f.declarations, e.isSourceFile).fileName, R = J(ie); + return R === void 0 ? { newFileName: ie, updated: false } : { newFileName: R, updated: true }; + } else { + var q = e.getModeForUsageLocation(K, T), O = se.resolveModuleNames ? se.getResolvedModuleWithFailedLookupLocationsFromCache && se.getResolvedModuleWithFailedLookupLocationsFromCache(T.text, K.fileName, q) : b.getResolvedModuleWithFailedLookupLocationsFromCache(T.text, K.fileName, q); + return p(T, O, J, b.getSourceFiles()); + } + } + function p(f, T, K, b) { + if (!T) + return; + if (T.resolvedModule) { + var se = q(T.resolvedModule.resolvedFileName); + if (se) + return se; + } + var J = e.forEach(T.failedLookupLocations, ie) || e.pathIsRelative(f.text) && e.forEach(T.failedLookupLocations, R); + if (J) + return J; + return T.resolvedModule && { newFileName: T.resolvedModule.resolvedFileName, updated: false }; + function ie(O) { + var ve = K(O); + return ve && e.find(b, function(ee) { + return ee.fileName === ve; + }) ? R(O) : void 0; + } + function R(O) { + return e.endsWith(O, "/package.json") ? void 0 : q(O); + } + function q(O) { + var ve = K(O); + return ve && { newFileName: ve, updated: true }; + } + } + function m(f, T, K, b) { + for (var se = 0, J = f.referencedFiles || e.emptyArray; se < J.length; se++) { + var ie = J[se], R = K(ie.fileName); + R !== void 0 && R !== f.text.slice(ie.pos, ie.end) && T.replaceRangeWithText(f, ie, R); + } + for (var q = 0, O = f.imports; q < O.length; q++) { + var ve = O[q], R = b(ve); + R !== void 0 && R !== ve.text && T.replaceRangeWithText(f, G(ve, f), R); + } + } + function G(f, T) { + return e.createRange(f.getStart(T) + 1, f.end - 1); + } + function oe(f, T) { + if (!!e.isObjectLiteralExpression(f)) + for (var K = 0, b = f.properties; K < b.length; K++) { + var se = b[K]; + e.isPropertyAssignment(se) && e.isStringLiteral(se.name) && T(se, se.name.text); + } + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(F, x, X, $, A) { + var y, V, L = le(x, X, F), P = L && [O(L.reference.fileName, L.fileName, L.unverified)] || e.emptyArray; + if (L != null && L.file) + return P; + var k = e.getTouchingPropertyName(x, X); + if (k !== x) { + var Y = k.parent, U = F.getTypeChecker(); + if (k.kind === 159 || e.isJSDocOverrideTag(k) && e.rangeContainsPosition(k.tagName, X)) + return Q(U, k) || e.emptyArray; + if (e.isJumpStatementTarget(k)) { + var j = e.getTargetLabel(k.parent, k.text); + return j ? [J(U, j, "label", k.text, void 0)] : void 0; + } + if (e.isStaticModifier(k) && e.isClassStaticBlockDeclaration(k.parent)) { + var H = k.parent.parent, I = f(H, U, A), l = I.symbol, d = I.failedAliasResolution, D = e.filter(H.members, e.isClassStaticBlockDeclaration), fe = l ? U.symbolToString(l, H) : "", g = k.getSourceFile(); + return e.map(D, function(we) { + var de = e.moveRangePastModifiers(we).pos; + return de = e.skipTrivia(g.text, de), J(U, we, "constructor", "static {}", fe, false, d, { start: de, length: 6 }); + }); + } + var ne = f(k, U, A), ue = ne.symbol, We = ne.failedAliasResolution, Fe = k; + if ($ && We) { + var Z = e.forEach(Ve([k], (ue == null ? void 0 : ue.declarations) || e.emptyArray, true), function(we) { + return e.findAncestor(we, e.isAnyImportOrBareOrAccessedRequire); + }), Be = Z && e.tryGetModuleSpecifierFromDeclaration(Z); + Be && (y = f(Be, U, A), ue = y.symbol, We = y.failedAliasResolution, Fe = Be); + } + if (!ue && e.isModuleSpecifierLike(Fe)) { + var ge = (V = x.resolvedModules) === null || V === void 0 ? void 0 : V.get(Fe.text, e.getModeForUsageLocation(x, Fe)); + if (ge) + return [{ name: Fe.text, fileName: ge.resolvedFileName, containerName: void 0, containerKind: void 0, kind: "script", textSpan: e.createTextSpan(0, 0), failedAliasResolution: We, isAmbient: e.isDeclarationFileName(ge.resolvedFileName), unverified: Fe !== k }]; + } + if (!ue) + return e.concatenate(P, oe(k, U)); + if (!($ && e.every(ue.declarations, function(we) { + return we.getSourceFile().fileName === x.fileName; + }))) { + var Re = ee(U, k); + if (Re && !(e.isJsxOpeningLikeElement(k.parent) && he(Re))) { + var ze = R(U, Re, We); + if (U.getRootSymbols(ue).some(function(we) { + return B(we, Re); + })) + return [ze]; + var Ee = b(U, ue, k, We, Re) || e.emptyArray; + return k.kind === 106 ? Ve([ze], Ee, true) : Ve(Ve([], Ee, true), [ze], false); + } + if (k.parent.kind === 297) { + var He = U.getShorthandAssignmentValueSymbol(ue.valueDeclaration), rr = He != null && He.declarations ? He.declarations.map(function(we) { + return se(we, U, He, k, false, We); + }) : e.emptyArray; + return e.concatenate(rr, E(U, k) || e.emptyArray); + } + if (e.isPropertyName(k) && e.isBindingElement(Y) && e.isObjectBindingPattern(Y.parent) && k === (Y.propertyName || Y.name)) { + var Ie = e.getNameFromPropertyName(k), _e = U.getTypeAtLocation(Y.parent); + return Ie === void 0 ? e.emptyArray : e.flatMap(_e.isUnion() ? _e.types : [_e], function(we) { + var de = we.getProperty(Ie); + return de && b(U, de, k); + }); + } + return e.concatenate(P, E(U, k) || b(U, ue, k, We)); + } + } + } + C.getDefinitionAtPosition = w; + function B(F, x) { + return F === x.symbol || F === x.symbol.parent || e.isAssignmentExpression(x.parent) || !e.isCallLikeExpression(x.parent) && F === x.parent.symbol; + } + function E(F, x) { + var X = e.getContainingObjectLiteralElement(x); + if (X) { + var $ = X && F.getContextualType(X.parent); + if ($) + return e.flatMap(e.getPropertySymbolsFromContextualType(X, F, $, false), function(A) { + return b(F, A, x); + }); + } + } + function Q(F, x) { + var X = e.findAncestor(x, e.isClassElement); + if (!!(X && X.name)) { + var $ = e.findAncestor(X, e.isClassLike); + if (!!$) { + var A = e.getEffectiveBaseTypeNode($), y = A ? F.getTypeAtLocation(A) : void 0; + if (!!y) { + var V = e.unescapeLeadingUnderscores(e.getTextOfPropertyName(X.name)), L = e.hasStaticModifier(X) ? F.getPropertyOfType(F.getTypeOfSymbolAtLocation(y.symbol, $), V) : F.getPropertyOfType(y, V); + if (!!L) + return b(F, L, x); + } + } + } + } + function le(F, x, X) { + var $, A, y = q(F.referencedFiles, x); + if (y) { + var V = X.getSourceFileFromReference(F, y); + return V && { reference: y, fileName: V.fileName, file: V, unverified: false }; + } + var L = q(F.typeReferenceDirectives, x); + if (L) { + var P = X.getResolvedTypeReferenceDirectives().get(L.fileName, L.resolutionMode || F.impliedNodeFormat), V = P && X.getSourceFile(P.resolvedFileName); + return V && { reference: L, fileName: V.fileName, file: V, unverified: false }; + } + var k = q(F.libReferenceDirectives, x); + if (k) { + var V = X.getLibFileFromReference(k); + return V && { reference: k, fileName: V.fileName, file: V, unverified: false }; + } + if (!(($ = F.resolvedModules) === null || $ === void 0) && $.size()) { + var Y = e.getTouchingToken(F, x); + if (e.isModuleSpecifierLike(Y) && e.isExternalModuleNameRelative(Y.text) && F.resolvedModules.has(Y.text, e.getModeForUsageLocation(F, Y))) { + var U = (A = F.resolvedModules.get(Y.text, e.getModeForUsageLocation(F, Y))) === null || A === void 0 ? void 0 : A.resolvedFileName, j = U || e.resolvePath(e.getDirectoryPath(F.fileName), Y.text); + return { file: X.getSourceFile(j), fileName: j, reference: { pos: Y.getStart(), end: Y.getEnd(), fileName: Y.text }, unverified: !U }; + } + } + } + C.getReferenceAtPosition = le; + function N(F, x, X) { + var $ = e.getTouchingPropertyName(x, X); + if ($ !== x) { + if (e.isImportMeta($.parent) && $.parent.name === $) + return p(F.getTypeAtLocation($.parent), F, $.parent, false); + var A = f($, F, false), y = A.symbol, V = A.failedAliasResolution; + if (!!y) { + var L = F.getTypeOfSymbolAtLocation(y, $), P = m(y, L, F), k = P && p(P, F, $, V), Y = k && k.length !== 0 ? k : p(L, F, $, V); + return Y.length ? Y : !(y.flags & 111551) && y.flags & 788968 ? b(F, e.skipAlias(y, F), $, V) : void 0; + } + } + } + C.getTypeDefinitionAtPosition = N; + function p(F, x, X, $) { + return e.flatMap(F.isUnion() && !(F.flags & 32) ? F.types : [F], function(A) { + return A.symbol && b(x, A.symbol, X, $); + }); + } + function m(F, x, X) { + if (x.symbol === F || F.valueDeclaration && x.symbol && e.isVariableDeclaration(F.valueDeclaration) && F.valueDeclaration.initializer === x.symbol.valueDeclaration) { + var $ = x.getCallSignatures(); + if ($.length === 1) + return X.getReturnTypeOfSignature(e.first($)); + } + } + function G(F, x, X) { + var $ = w(F, x, X); + if (!(!$ || $.length === 0)) { + var A = q(x.referencedFiles, X) || q(x.typeReferenceDirectives, X) || q(x.libReferenceDirectives, X); + if (A) + return { definitions: $, textSpan: e.createTextSpanFromRange(A) }; + var y = e.getTouchingPropertyName(x, X), V = e.createTextSpan(y.getStart(), y.getWidth()); + return { definitions: $, textSpan: V }; + } + } + C.getDefinitionAndBoundSpan = G; + function oe(F, x) { + return e.mapDefined(x.getIndexInfosAtLocation(F), function(X) { + return X.declaration && R(x, X.declaration); + }); + } + function f(F, x, X) { + var $ = x.getSymbolAtLocation(F), A = false; + if (($ == null ? void 0 : $.declarations) && $.flags & 2097152 && !X && T(F, $.declarations[0])) { + var y = x.getAliasedSymbol($); + if (y.declarations) + return { symbol: y }; + A = true; + } + return { symbol: $, failedAliasResolution: A }; + } + function T(F, x) { + return F.kind !== 79 ? false : F.parent === x ? true : x.kind !== 268; + } + function K(F) { + if (!e.isAssignmentDeclaration(F)) + return false; + var x = e.findAncestor(F, function(X) { + return e.isAssignmentExpression(X) ? true : e.isAssignmentDeclaration(X) ? false : "quit"; + }); + return !!x && e.getAssignmentDeclarationKind(x) === 5; + } + function b(F, x, X, $, A) { + var y = e.filter(x.declarations, function(U) { + return U !== A; + }), V = e.filter(y, function(U) { + return !K(U); + }), L = e.some(V) ? V : y; + return P() || k() || e.map(L, function(U) { + return se(U, F, x, X, false, $); + }); + function P() { + if (x.flags & 32 && !(x.flags & 19) && (e.isNewExpressionTarget(X) || X.kind === 134)) { + var U = e.find(y, e.isClassLike) || e.Debug.fail("Expected declaration to have at least one class-like declaration"); + return Y(U.members, true); + } + } + function k() { + return e.isCallOrNewExpressionTarget(X) || e.isNameOfFunctionDeclaration(X) ? Y(y, false) : void 0; + } + function Y(U, j) { + if (!!U) { + var H = U.filter(j ? e.isConstructorDeclaration : e.isFunctionLike), I = H.filter(function(l) { + return !!l.body; + }); + return H.length ? I.length !== 0 ? I.map(function(l) { + return se(l, F, x, X); + }) : [se(e.last(H), F, x, X, false, $)] : void 0; + } + } + } + function se(F, x, X, $, A, y) { + var V = x.symbolToString(X), L = e.SymbolDisplay.getSymbolKind(x, X, $), P = X.parent ? x.symbolToString(X.parent, $) : ""; + return J(x, F, L, V, P, A, y); + } + C.createDefinitionInfo = se; + function J(F, x, X, $, A, y, V, L) { + var P = x.getSourceFile(); + if (!L) { + var k = e.getNameOfDeclaration(x) || x; + L = e.createTextSpanFromNode(k, P); + } + return Ke(Ke({ fileName: P.fileName, textSpan: L, kind: X, name: $, containerKind: void 0, containerName: A }, e.FindAllReferences.toContextSpan(L, P, e.FindAllReferences.getContextNode(x))), { isLocal: !ie(F, x), isAmbient: !!(x.flags & 16777216), unverified: y, failedAliasResolution: V }); + } + function ie(F, x) { + if (F.isDeclarationVisible(x)) + return true; + if (!x.parent) + return false; + if (e.hasInitializer(x.parent) && x.parent.initializer === x) + return ie(F, x.parent); + switch (x.kind) { + case 167: + case 172: + case 173: + case 169: + if (e.hasEffectiveModifier(x, 8)) + return false; + case 171: + case 296: + case 297: + case 205: + case 226: + case 214: + case 213: + return ie(F, x.parent); + default: + return false; + } + } + function R(F, x, X) { + return se(x, F, x.symbol, x, false, X); + } + function q(F, x) { + return e.find(F, function(X) { + return e.textRangeContainsPositionInclusive(X, x); + }); + } + C.findReferenceInPosition = q; + function O(F, x, X) { + return { fileName: x, textSpan: e.createTextSpanFromBounds(0, 0), kind: "script", name: F, containerName: void 0, containerKind: void 0, unverified: X }; + } + function ve(F) { + var x = e.findAncestor(F, function($) { + return !e.isRightSideOfPropertyAccess($); + }), X = x == null ? void 0 : x.parent; + return X && e.isCallLikeExpression(X) && e.getInvokedExpression(X) === x ? X : void 0; + } + function ee(F, x) { + var X = ve(x), $ = X && F.getResolvedSignature(X); + return e.tryCast($ && $.declaration, function(A) { + return e.isFunctionLike(A) && !e.isFunctionTypeNode(A); + }); + } + function he(F) { + switch (F.kind) { + case 171: + case 180: + case 175: + return true; + default: + return false; + } + } + })(a = e.GoToDefinition || (e.GoToDefinition = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = ["abstract", "access", "alias", "argument", "async", "augments", "author", "borrows", "callback", "class", "classdesc", "constant", "constructor", "constructs", "copyright", "default", "deprecated", "description", "emits", "enum", "event", "example", "exports", "extends", "external", "field", "file", "fileoverview", "fires", "function", "generator", "global", "hideconstructor", "host", "ignore", "implements", "inheritdoc", "inner", "instance", "interface", "kind", "lends", "license", "link", "listens", "member", "memberof", "method", "mixes", "module", "name", "namespace", "override", "package", "param", "private", "property", "protected", "public", "readonly", "requires", "returns", "see", "since", "static", "summary", "template", "this", "throws", "todo", "tutorial", "type", "typedef", "var", "variation", "version", "virtual", "yields"], B, E; + function Q(F, x) { + var X = []; + return e.forEachUnique(F, function($) { + for (var A = 0, y = N($); A < y.length; A++) { + var V = y[A]; + if (!(V.comment === void 0 || e.isJSDoc(V) && $.kind !== 345 && $.kind !== 338 && V.tags && V.tags.some(function(P) { + return P.kind === 345 || P.kind === 338; + }) && !V.tags.some(function(P) { + return P.kind === 340 || P.kind === 341; + }))) { + var L = m(V.comment, x); + e.contains(X, L, le) || X.push(L); + } + } + }), e.flatten(e.intersperse(X, [e.lineBreakPart()])); + } + C.getJsDocCommentsFromDeclarations = Q; + function le(F, x) { + return e.arraysEqual(F, x, function(X, $) { + return X.kind === $.kind && X.text === $.text; + }); + } + function N(F) { + switch (F.kind) { + case 340: + case 347: + return [F]; + case 338: + case 345: + return [F, F.parent]; + default: + return e.getJSDocCommentsAndTags(F); + } + } + function p(F, x) { + var X = []; + return e.forEachUnique(F, function($) { + var A = e.getJSDocTags($); + if (!(A.some(function(P) { + return P.kind === 345 || P.kind === 338; + }) && !A.some(function(P) { + return P.kind === 340 || P.kind === 341; + }))) + for (var y = 0, V = A; y < V.length; y++) { + var L = V[y]; + X.push({ name: L.tagName.text, text: G(L, x) }); + } + }), X; + } + C.getJsDocTagsFromDeclarations = p; + function m(F, x) { + return typeof F == "string" ? [e.textPart(F)] : e.flatMap(F, function(X) { + return X.kind === 321 ? [e.textPart(X.text)] : e.buildLinkParts(X, x); + }); + } + function G(F, x) { + var X = F.comment, $ = F.kind, A = oe($); + switch ($) { + case 329: + return k(F.class); + case 328: + return k(F.class); + case 344: + var y = F, V = []; + if (y.constraint && V.push(e.textPart(y.constraint.getText())), e.length(y.typeParameters)) { + e.length(V) && V.push(e.spacePart()); + var L = y.typeParameters[y.typeParameters.length - 1]; + e.forEach(y.typeParameters, function(U) { + V.push(A(U.getText())), L !== U && V.push.apply(V, [e.punctuationPart(27), e.spacePart()]); + }); + } + return X && V.push.apply(V, Ve([e.spacePart()], m(X, x), true)), V; + case 343: + return k(F.typeExpression); + case 345: + case 338: + case 347: + case 340: + case 346: + var P = F.name; + return P ? k(P) : X === void 0 ? void 0 : m(X, x); + default: + return X === void 0 ? void 0 : m(X, x); + } + function k(U) { + return Y(U.getText()); + } + function Y(U) { + return X ? U.match(/^https?$/) ? Ve([e.textPart(U)], m(X, x), true) : Ve([A(U), e.spacePart()], m(X, x), true) : [e.textPart(U)]; + } + } + function oe(F) { + switch (F) { + case 340: + return e.parameterNamePart; + case 347: + return e.propertyNamePart; + case 344: + return e.typeParameterNamePart; + case 345: + case 338: + return e.typeAliasNamePart; + default: + return e.textPart; + } + } + function f() { + return B || (B = e.map(w, function(F) { + return { name: F, kind: "keyword", kindModifiers: "", sortText: e.Completions.SortText.LocationPriority }; + })); + } + C.getJSDocTagNameCompletions = f, C.getJSDocTagNameCompletionDetails = K; + function T() { + return E || (E = e.map(w, function(F) { + return { name: "@".concat(F), kind: "keyword", kindModifiers: "", sortText: e.Completions.SortText.LocationPriority }; + })); + } + C.getJSDocTagCompletions = T; + function K(F) { + return { name: F, kind: "", kindModifiers: "", displayParts: [e.textPart(F)], documentation: e.emptyArray, tags: void 0, codeActions: void 0 }; + } + C.getJSDocTagCompletionDetails = K; + function b(F) { + if (!e.isIdentifier(F.name)) + return e.emptyArray; + var x = F.name.text, X = F.parent, $ = X.parent; + return e.isFunctionLike($) ? e.mapDefined($.parameters, function(A) { + if (!!e.isIdentifier(A.name)) { + var y = A.name.text; + if (!(X.tags.some(function(V) { + return V !== F && e.isJSDocParameterTag(V) && e.isIdentifier(V.name) && V.name.escapedText === y; + }) || x !== void 0 && !e.startsWith(y, x))) + return { name: y, kind: "parameter", kindModifiers: "", sortText: e.Completions.SortText.LocationPriority }; + } + }) : []; + } + C.getJSDocParameterNameCompletions = b; + function se(F) { + return { name: F, kind: "parameter", kindModifiers: "", displayParts: [e.textPart(F)], documentation: e.emptyArray, tags: void 0, codeActions: void 0 }; + } + C.getJSDocParameterNameCompletionDetails = se; + function J(F, x, X, $) { + var A = e.getTokenAtPosition(x, X), y = e.findAncestor(A, e.isJSDoc); + if (!(y && (y.comment !== void 0 || e.length(y.tags)))) { + var V = A.getStart(x); + if (!(!y && V < X)) { + var L = O(A, $); + if (!!L) { + var P = L.commentOwner, k = L.parameters, Y = L.hasReturn, U = e.hasJSDocNodes(P) && P.jsDoc ? e.lastOrUndefined(P.jsDoc) : void 0; + if (!(P.getStart(x) < X || U && U !== y)) { + var j = ie(x, X), H = e.hasJSFileExtension(x.fileName), I = (k ? R(k || [], H, j, F) : "") + (Y ? q(j, F) : ""), l = "/**", d = " */"; + if (I) { + var D = l + F + j + " * ", fe = V === X ? F + j : "", g = D + F + I + j + d + fe; + return { newText: g, caretOffset: D.length }; + } + return { newText: l + d, caretOffset: 3 }; + } + } + } + } + } + C.getDocCommentTemplateAtPosition = J; + function ie(F, x) { + for (var X = F.text, $ = e.getLineStartPositionForPosition(x, F), A = $; A <= x && e.isWhiteSpaceSingleLine(X.charCodeAt(A)); A++) + ; + return X.slice($, A); + } + function R(F, x, X, $) { + return F.map(function(A, y) { + var V = A.name, L = A.dotDotDotToken, P = V.kind === 79 ? V.text : "param" + y, k = x ? L ? "{...any} " : "{any} " : ""; + return "".concat(X, " * @param ").concat(k).concat(P).concat($); + }).join(""); + } + function q(F, x) { + return "".concat(F, " * @returns").concat(x); + } + function O(F, x) { + return e.forEachAncestor(F, function(X) { + return ve(X, x); + }); + } + function ve(F, x) { + switch (F.kind) { + case 256: + case 213: + case 169: + case 171: + case 168: + case 214: + var X = F; + return { commentOwner: F, parameters: X.parameters, hasReturn: ee(X, x) }; + case 296: + return ve(F.initializer, x); + case 257: + case 258: + case 166: + case 260: + case 299: + case 259: + return { commentOwner: F }; + case 237: { + var $ = F, A = $.declarationList.declarations, y = A.length === 1 && A[0].initializer ? he(A[0].initializer) : void 0; + return y ? { commentOwner: F, parameters: y.parameters, hasReturn: ee(y, x) } : { commentOwner: F }; + } + case 305: + return "quit"; + case 261: + return F.parent.kind === 261 ? void 0 : { commentOwner: F }; + case 238: + return ve(F.expression, x); + case 221: { + var V = F; + return e.getAssignmentDeclarationKind(V) === 0 ? "quit" : e.isFunctionLike(V.right) ? { commentOwner: F, parameters: V.right.parameters, hasReturn: ee(V.right, x) } : { commentOwner: F }; + } + case 167: + var L = F.initializer; + if (L && (e.isFunctionExpression(L) || e.isArrowFunction(L))) + return { commentOwner: F, parameters: L.parameters, hasReturn: ee(L, x) }; + } + } + function ee(F, x) { + return !!(x != null && x.generateReturnInDocTemplate) && (e.isArrowFunction(F) && e.isExpression(F.body) || e.isFunctionLikeDeclaration(F) && F.body && e.isBlock(F.body) && !!e.forEachReturnStatement(F.body, function(X) { + return X; + })); + } + function he(F) { + for (; F.kind === 212; ) + F = F.expression; + switch (F.kind) { + case 213: + case 214: + return F; + case 226: + return e.find(F.members, e.isConstructorDeclaration); + } + } + })(a = e.JsDoc || (e.JsDoc = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(oe, f, T, K, b, se) { + var J = e.createPatternMatcher(K); + if (!J) + return e.emptyArray; + for (var ie = [], R = function(ee) { + if (T.throwIfCancellationRequested(), se && ee.isDeclarationFile) + return "continue"; + ee.getNamedDeclarations().forEach(function(he, F) { + B(J, F, he, f, ee.fileName, ie); + }); + }, q = 0, O = oe; q < O.length; q++) { + var ve = O[q]; + R(ve); + } + return ie.sort(m), (b === void 0 ? ie : ie.slice(0, b)).map(G); + } + C.getNavigateToItems = w; + function B(oe, f, T, K, b, se) { + var J = oe.getMatchForLastSegmentOfPattern(f); + if (!!J) + for (var ie = 0, R = T; ie < R.length; ie++) { + var q = R[ie]; + if (!!E(q, K)) + if (oe.patternContainsDots) { + var O = oe.getFullMatch(p(q), f); + O && se.push({ name: f, fileName: b, matchKind: O.kind, isCaseSensitive: O.isCaseSensitive, declaration: q }); + } else + se.push({ name: f, fileName: b, matchKind: J.kind, isCaseSensitive: J.isCaseSensitive, declaration: q }); + } + } + function E(oe, f) { + switch (oe.kind) { + case 267: + case 270: + case 265: + var T = f.getSymbolAtLocation(oe.name), K = f.getAliasedSymbol(T); + return T.escapedName !== K.escapedName; + default: + return true; + } + } + function Q(oe, f) { + var T = e.getNameOfDeclaration(oe); + return !!T && (N(T, f) || T.kind === 162 && le(T.expression, f)); + } + function le(oe, f) { + return N(oe, f) || e.isPropertyAccessExpression(oe) && (f.push(oe.name.text), true) && le(oe.expression, f); + } + function N(oe, f) { + return e.isPropertyNameLiteral(oe) && (f.push(e.getTextOfIdentifierOrLiteral(oe)), true); + } + function p(oe) { + var f = [], T = e.getNameOfDeclaration(oe); + if (T && T.kind === 162 && !le(T.expression, f)) + return e.emptyArray; + f.shift(); + for (var K = e.getContainerNode(oe); K; ) { + if (!Q(K, f)) + return e.emptyArray; + K = e.getContainerNode(K); + } + return f.reverse(); + } + function m(oe, f) { + return e.compareValues(oe.matchKind, f.matchKind) || e.compareStringsCaseSensitiveUI(oe.name, f.name); + } + function G(oe) { + var f = oe.declaration, T = e.getContainerNode(f), K = T && e.getNameOfDeclaration(T); + return { name: oe.name, kind: e.getNodeKind(f), kindModifiers: e.getNodeModifiers(f), matchKind: e.PatternMatchKind[oe.matchKind], isCaseSensitive: oe.isCaseSensitive, fileName: oe.fileName, textSpan: e.createTextSpanFromNode(f), containerName: K ? K.text : "", containerKind: K ? e.getNodeKind(T) : "" }; + } + })(a = e.NavigateTo || (e.NavigateTo = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w, B = /\s+/g, E = 150, Q, le, N = [], p, m = [], G, oe = []; + function f(Ie, _e) { + Q = _e, le = Ie; + try { + return e.map(fe(ie(Ie)), ne); + } finally { + K(); + } + } + C.getNavigationBarItems = f; + function T(Ie, _e) { + Q = _e, le = Ie; + try { + return g(ie(Ie)); + } finally { + K(); + } + } + C.getNavigationTree = T; + function K() { + le = void 0, Q = void 0, N = [], p = void 0, oe = []; + } + function b(Ie) { + return rr(Ie.getText(le)); + } + function se(Ie) { + return Ie.node.kind; + } + function J(Ie, _e) { + Ie.children ? Ie.children.push(_e) : Ie.children = [_e]; + } + function ie(Ie) { + e.Debug.assert(!N.length); + var _e = { node: Ie, name: void 0, additionalNodes: void 0, parent: void 0, children: void 0, indent: 0 }; + p = _e; + for (var we = 0, de = Ie.statements; we < de.length; we++) { + var ye = de[we]; + A(ye); + } + return F(), e.Debug.assert(!p && !N.length), _e; + } + function R(Ie, _e) { + J(p, q(Ie, _e)); + } + function q(Ie, _e) { + return { node: Ie, name: _e || (e.isDeclaration(Ie) || e.isExpression(Ie) ? e.getNameOfDeclaration(Ie) : void 0), additionalNodes: void 0, parent: p, children: void 0, indent: p.indent + 1 }; + } + function O(Ie) { + G || (G = new e.Map()), G.set(Ie, true); + } + function ve(Ie) { + for (var _e = 0; _e < Ie; _e++) + F(); + } + function ee(Ie, _e) { + for (var we = []; !e.isPropertyNameLiteral(_e); ) { + var de = e.getNameOrArgument(_e), ye = e.getElementOrPropertyAccessName(_e); + _e = _e.expression, !(ye === "prototype" || e.isPrivateIdentifier(de)) && we.push(de); + } + we.push(_e); + for (var Ae = we.length - 1; Ae > 0; Ae--) { + var de = we[Ae]; + he(Ie, de); + } + return [we.length - 1, we[0]]; + } + function he(Ie, _e) { + var we = q(Ie, _e); + J(p, we), N.push(p), m.push(G), G = void 0, p = we; + } + function F() { + p.children && (y(p.children, p), I(p.children)), p = N.pop(), G = m.pop(); + } + function x(Ie, _e, we) { + he(Ie, we), A(_e), F(); + } + function X(Ie) { + Ie.initializer && He(Ie.initializer) ? (he(Ie), e.forEachChild(Ie.initializer, A), F()) : x(Ie, Ie.initializer); + } + function $(Ie) { + return !e.hasDynamicName(Ie) || Ie.kind !== 221 && e.isPropertyAccessExpression(Ie.name.expression) && e.isIdentifier(Ie.name.expression.expression) && e.idText(Ie.name.expression.expression) === "Symbol"; + } + function A(Ie) { + var _e; + if (Q.throwIfCancellationRequested(), !(!Ie || e.isToken(Ie))) + switch (Ie.kind) { + case 171: + var we = Ie; + x(we, we.body); + for (var de = 0, ye = we.parameters; de < ye.length; de++) { + var Ae = ye[de]; + e.isParameterPropertyDeclaration(Ae, we) && R(Ae); + } + break; + case 169: + case 172: + case 173: + case 168: + $(Ie) && x(Ie, Ie.body); + break; + case 167: + $(Ie) && X(Ie); + break; + case 166: + $(Ie) && R(Ie); + break; + case 267: + var er = Ie; + er.name && R(er.name); + var ir = er.namedBindings; + if (ir) + if (ir.kind === 268) + R(ir); + else + for (var Cr = 0, Ye = ir.elements; Cr < Ye.length; Cr++) { + var Br = Ye[Cr]; + R(Br); + } + break; + case 297: + x(Ie, Ie.name); + break; + case 298: + var Er = Ie.expression; + e.isIdentifier(Er) ? R(Ie, Er) : R(Ie); + break; + case 203: + case 296: + case 254: { + var Ne = Ie; + e.isBindingPattern(Ne.name) ? A(Ne.name) : X(Ne); + break; + } + case 256: + var n = Ie.name; + n && e.isIdentifier(n) && O(n.text), x(Ie, Ie.body); + break; + case 214: + case 213: + x(Ie, Ie.body); + break; + case 260: + he(Ie); + for (var lr = 0, be = Ie.members; lr < be.length; lr++) { + var Ge = be[lr]; + Be(Ge) || R(Ge); + } + F(); + break; + case 257: + case 226: + case 258: + he(Ie); + for (var ur = 0, yr = Ie.members; ur < yr.length; ur++) { + var Ge = yr[ur]; + A(Ge); + } + F(); + break; + case 261: + x(Ie, Z(Ie).body); + break; + case 271: { + var Ir = Ie.expression, Ne = e.isObjectLiteralExpression(Ir) || e.isCallExpression(Ir) ? Ir : e.isArrowFunction(Ir) || e.isFunctionExpression(Ir) ? Ir.body : void 0; + Ne ? (he(Ie), A(Ne), F()) : R(Ie); + break; + } + case 275: + case 265: + case 176: + case 174: + case 175: + case 259: + R(Ie); + break; + case 208: + case 221: { + var wr = e.getAssignmentDeclarationKind(Ie); + switch (wr) { + case 1: + case 2: + x(Ie, Ie.right); + return; + case 6: + case 3: { + var Ur = Ie, ii = Ur.left, mi = wr === 3 ? ii.expression : ii, pe = 0, or = void 0; + e.isIdentifier(mi.expression) ? (O(mi.expression.text), or = mi.expression) : (_e = ee(Ur, mi.expression), pe = _e[0], or = _e[1]), wr === 6 ? e.isObjectLiteralExpression(Ur.right) && Ur.right.properties.length > 0 && (he(Ur, or), e.forEachChild(Ur.right, A), F()) : e.isFunctionExpression(Ur.right) || e.isArrowFunction(Ur.right) ? x(Ie, Ur.right, or) : (he(Ur, or), x(Ie, Ur.right, ii.name), F()), ve(pe); + return; + } + case 7: + case 9: { + var qr = Ie, or = wr === 7 ? qr.arguments[0] : qr.arguments[0].expression, si = qr.arguments[1], Di = ee(Ie, or), pe = Di[0], wi = Di[1]; + he(Ie, wi), he(Ie, e.setTextRange(e.factory.createIdentifier(si.text), si)), A(Ie.arguments[2]), F(), F(), ve(pe); + return; + } + case 5: { + var Ur = Ie, ii = Ur.left, Xi = ii.expression; + if (e.isIdentifier(Xi) && e.getElementOrPropertyAccessName(ii) !== "prototype" && G && G.has(Xi.text)) { + e.isFunctionExpression(Ur.right) || e.isArrowFunction(Ur.right) ? x(Ie, Ur.right, Xi) : e.isBindableStaticAccessExpression(ii) && (he(Ur, Xi), x(Ur.left, Ur.right, e.getNameOrArgument(ii)), F()); + return; + } + break; + } + case 4: + case 0: + case 8: + break; + default: + e.Debug.assertNever(wr); + } + } + default: + e.hasJSDocNodes(Ie) && e.forEach(Ie.jsDoc, function(et) { + e.forEach(et.tags, function(Gi) { + e.isJSDocTypeAlias(Gi) && R(Gi); + }); + }), e.forEachChild(Ie, A); + } + } + function y(Ie, _e) { + var we = new e.Map(); + e.filterMutate(Ie, function(de, ye) { + var Ae = de.name || e.getNameOfDeclaration(de.node), er = Ae && b(Ae); + if (!er) + return true; + var ir = we.get(er); + if (!ir) + return we.set(er, de), true; + if (ir instanceof Array) { + for (var Cr = 0, Ye = ir; Cr < Ye.length; Cr++) { + var Br = Ye[Cr]; + if (P(Br, de, ye, _e)) + return false; + } + return ir.push(de), true; + } else { + var Br = ir; + return P(Br, de, ye, _e) ? false : (we.set(er, [Br, de]), true); + } + }); + } + var V = (w = {}, w[5] = true, w[3] = true, w[7] = true, w[9] = true, w[0] = false, w[1] = false, w[2] = false, w[8] = false, w[6] = true, w[4] = false, w); + function L(Ie, _e, we, de) { + function ye(Ne) { + return e.isFunctionExpression(Ne) || e.isFunctionDeclaration(Ne) || e.isVariableDeclaration(Ne); + } + var Ae = e.isBinaryExpression(_e.node) || e.isCallExpression(_e.node) ? e.getAssignmentDeclarationKind(_e.node) : 0, er = e.isBinaryExpression(Ie.node) || e.isCallExpression(Ie.node) ? e.getAssignmentDeclarationKind(Ie.node) : 0; + if (V[Ae] && V[er] || ye(Ie.node) && V[Ae] || ye(_e.node) && V[er] || e.isClassDeclaration(Ie.node) && Y(Ie.node) && V[Ae] || e.isClassDeclaration(_e.node) && V[er] || e.isClassDeclaration(Ie.node) && Y(Ie.node) && ye(_e.node) || e.isClassDeclaration(_e.node) && ye(Ie.node) && Y(Ie.node)) { + var ir = Ie.additionalNodes && e.lastOrUndefined(Ie.additionalNodes) || Ie.node; + if (!e.isClassDeclaration(Ie.node) && !e.isClassDeclaration(_e.node) || ye(Ie.node) || ye(_e.node)) { + var Cr = ye(Ie.node) ? Ie.node : ye(_e.node) ? _e.node : void 0; + if (Cr !== void 0) { + var Ye = e.setTextRange(e.factory.createConstructorDeclaration(void 0, void 0, [], void 0), Cr), Br = q(Ye); + Br.indent = Ie.indent + 1, Br.children = Ie.node === Cr ? Ie.children : _e.children, Ie.children = Ie.node === Cr ? e.concatenate([Br], _e.children || [_e]) : e.concatenate(Ie.children || [Ke({}, Ie)], [Br]); + } else + (Ie.children || _e.children) && (Ie.children = e.concatenate(Ie.children || [Ke({}, Ie)], _e.children || [_e]), Ie.children && (y(Ie.children, Ie), I(Ie.children))); + ir = Ie.node = e.setTextRange(e.factory.createClassDeclaration(void 0, void 0, Ie.name || e.factory.createIdentifier("__class__"), void 0, void 0, []), Ie.node); + } else + Ie.children = e.concatenate(Ie.children, _e.children), Ie.children && y(Ie.children, Ie); + var Er = _e.node; + return de.children[we - 1].node.end === ir.end ? e.setTextRange(ir, { pos: ir.pos, end: Er.end }) : (Ie.additionalNodes || (Ie.additionalNodes = []), Ie.additionalNodes.push(e.setTextRange(e.factory.createClassDeclaration(void 0, void 0, Ie.name || e.factory.createIdentifier("__class__"), void 0, void 0, []), _e.node))), true; + } + return Ae !== 0; + } + function P(Ie, _e, we, de) { + return L(Ie, _e, we, de) ? true : k(Ie.node, _e.node, de) ? (H(Ie, _e), true) : false; + } + function k(Ie, _e, we) { + if (Ie.kind !== _e.kind || Ie.parent !== _e.parent && !(U(Ie, we) && U(_e, we))) + return false; + switch (Ie.kind) { + case 167: + case 169: + case 172: + case 173: + return e.isStatic(Ie) === e.isStatic(_e); + case 261: + return j(Ie, _e) && Fe(Ie) === Fe(_e); + default: + return true; + } + } + function Y(Ie) { + return !!(Ie.flags & 8); + } + function U(Ie, _e) { + var we = e.isModuleBlock(Ie.parent) ? Ie.parent.parent : Ie.parent; + return we === _e.node || e.contains(_e.additionalNodes, we); + } + function j(Ie, _e) { + return !Ie.body || !_e.body ? Ie.body === _e.body : Ie.body.kind === _e.body.kind && (Ie.body.kind !== 261 || j(Ie.body, _e.body)); + } + function H(Ie, _e) { + var we; + Ie.additionalNodes = Ie.additionalNodes || [], Ie.additionalNodes.push(_e.node), _e.additionalNodes && (we = Ie.additionalNodes).push.apply(we, _e.additionalNodes), Ie.children = e.concatenate(Ie.children, _e.children), Ie.children && (y(Ie.children, Ie), I(Ie.children)); + } + function I(Ie) { + Ie.sort(l); + } + function l(Ie, _e) { + return e.compareStringsCaseSensitiveUI(d(Ie.node), d(_e.node)) || e.compareValues(se(Ie), se(_e)); + } + function d(Ie) { + if (Ie.kind === 261) + return We(Ie); + var _e = e.getNameOfDeclaration(Ie); + if (_e && e.isPropertyName(_e)) { + var we = e.getPropertyNameForPropertyNameNode(_e); + return we && e.unescapeLeadingUnderscores(we); + } + switch (Ie.kind) { + case 213: + case 214: + case 226: + return ze(Ie); + default: + return; + } + } + function D(Ie, _e) { + if (Ie.kind === 261) + return rr(We(Ie)); + if (_e) { + var we = e.isIdentifier(_e) ? _e.text : e.isElementAccessExpression(_e) ? "[".concat(b(_e.argumentExpression), "]") : b(_e); + if (we.length > 0) + return rr(we); + } + switch (Ie.kind) { + case 305: + var de = Ie; + return e.isExternalModule(de) ? '"'.concat(e.escapeString(e.getBaseFileName(e.removeFileExtension(e.normalizePath(de.fileName)))), '"') : ""; + case 271: + return e.isExportAssignment(Ie) && Ie.isExportEquals ? "export=" : "default"; + case 214: + case 256: + case 213: + case 257: + case 226: + return e.getSyntacticModifierFlags(Ie) & 512 ? "default" : ze(Ie); + case 171: + return "constructor"; + case 175: + return "new()"; + case 174: + return "()"; + case 176: + return "[]"; + default: + return ""; + } + } + function fe(Ie) { + var _e = []; + function we(ye) { + if (de(ye) && (_e.push(ye), ye.children)) + for (var Ae = 0, er = ye.children; Ae < er.length; Ae++) { + var ir = er[Ae]; + we(ir); + } + } + return we(Ie), _e; + function de(ye) { + if (ye.children) + return true; + switch (se(ye)) { + case 257: + case 226: + case 260: + case 258: + case 261: + case 305: + case 259: + case 345: + case 338: + return true; + case 214: + case 256: + case 213: + return Ae(ye); + default: + return false; + } + function Ae(er) { + if (!er.node.body) + return false; + switch (se(er.parent)) { + case 262: + case 305: + case 169: + case 171: + return true; + default: + return false; + } + } + } + } + function g(Ie) { + return { text: D(Ie.node, Ie.name), kind: e.getNodeKind(Ie.node), kindModifiers: Re(Ie.node), spans: ue(Ie), nameSpan: Ie.name && ge(Ie.name), childItems: e.map(Ie.children, g) }; + } + function ne(Ie) { + return { text: D(Ie.node, Ie.name), kind: e.getNodeKind(Ie.node), kindModifiers: Re(Ie.node), spans: ue(Ie), childItems: e.map(Ie.children, _e) || oe, indent: Ie.indent, bolded: false, grayed: false }; + function _e(we) { + return { text: D(we.node, we.name), kind: e.getNodeKind(we.node), kindModifiers: e.getNodeModifiers(we.node), spans: ue(we), childItems: oe, indent: 0, bolded: false, grayed: false }; + } + } + function ue(Ie) { + var _e = [ge(Ie.node)]; + if (Ie.additionalNodes) + for (var we = 0, de = Ie.additionalNodes; we < de.length; we++) { + var ye = de[we]; + _e.push(ge(ye)); + } + return _e; + } + function We(Ie) { + return e.isAmbientModule(Ie) ? e.getTextOfNode(Ie.name) : Fe(Ie); + } + function Fe(Ie) { + for (var _e = [e.getTextOfIdentifierOrLiteral(Ie.name)]; Ie.body && Ie.body.kind === 261; ) + Ie = Ie.body, _e.push(e.getTextOfIdentifierOrLiteral(Ie.name)); + return _e.join("."); + } + function Z(Ie) { + return Ie.body && e.isModuleDeclaration(Ie.body) ? Z(Ie.body) : Ie; + } + function Be(Ie) { + return !Ie.name || Ie.name.kind === 162; + } + function ge(Ie) { + return Ie.kind === 305 ? e.createTextSpanFromRange(Ie) : e.createTextSpanFromNode(Ie, le); + } + function Re(Ie) { + return Ie.parent && Ie.parent.kind === 254 && (Ie = Ie.parent), e.getNodeModifiers(Ie); + } + function ze(Ie) { + var _e = Ie.parent; + if (Ie.name && e.getFullWidth(Ie.name) > 0) + return rr(e.declarationNameToString(Ie.name)); + if (e.isVariableDeclaration(_e)) + return rr(e.declarationNameToString(_e.name)); + if (e.isBinaryExpression(_e) && _e.operatorToken.kind === 63) + return b(_e.left).replace(B, ""); + if (e.isPropertyAssignment(_e)) + return b(_e.name); + if (e.getSyntacticModifierFlags(Ie) & 512) + return "default"; + if (e.isClassLike(Ie)) + return ""; + if (e.isCallExpression(_e)) { + var we = Ee(_e.expression); + if (we !== void 0) { + if (we = rr(we), we.length > E) + return "".concat(we, " callback"); + var de = rr(e.mapDefined(_e.arguments, function(ye) { + return e.isStringLiteralLike(ye) ? ye.getText(le) : void 0; + }).join(", ")); + return "".concat(we, "(").concat(de, ") callback"); + } + } + return ""; + } + function Ee(Ie) { + if (e.isIdentifier(Ie)) + return Ie.text; + if (e.isPropertyAccessExpression(Ie)) { + var _e = Ee(Ie.expression), we = Ie.name.text; + return _e === void 0 ? we : "".concat(_e, ".").concat(we); + } else + return; + } + function He(Ie) { + switch (Ie.kind) { + case 214: + case 213: + case 226: + return true; + default: + return false; + } + } + function rr(Ie) { + return Ie = Ie.length > E ? Ie.substring(0, E) + "..." : Ie, Ie.replace(/\\?(\r?\n|\r|\u2028|\u2029)/g, ""); + } + })(a = e.NavigationBar || (e.NavigationBar = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(x, X, $, A, y, V) { + var L = e.textChanges.ChangeTracker.fromContext({ host: $, formatContext: X, preferences: y }), P = function(D) { + return e.stableSort(p(Q(D, x, A, V)), function(fe, g) { + return O(fe, g); + }); + }, k = B(x, x.statements.filter(e.isImportDeclaration)); + k.forEach(function(D) { + return d(D, P); + }); + var Y = x.statements.filter(e.isExportDeclaration); + d(Y, G); + for (var U = 0, j = x.statements.filter(e.isAmbientModule); U < j.length; U++) { + var H = j[U]; + if (!!H.body) { + var I = B(x, H.body.statements.filter(e.isImportDeclaration)); + I.forEach(function(D) { + return d(D, P); + }); + var l = H.body.statements.filter(e.isExportDeclaration); + d(l, G); + } + } + return L.getChanges(); + function d(D, fe) { + if (e.length(D) !== 0) { + e.suppressLeadingTrivia(D[0]); + var g = e.group(D, function(Z) { + return N(Z.moduleSpecifier); + }), ne = e.stableSort(g, function(Z, Be) { + return K(Z[0].moduleSpecifier, Be[0].moduleSpecifier); + }), ue = e.flatMap(ne, function(Z) { + return N(Z[0].moduleSpecifier) ? fe(Z) : Z; + }); + if (ue.length === 0) + L.deleteNodes(x, D, { trailingTriviaOption: e.textChanges.TrailingTriviaOption.Include }, true); + else { + var We = { leadingTriviaOption: e.textChanges.LeadingTriviaOption.Exclude, trailingTriviaOption: e.textChanges.TrailingTriviaOption.Include, suffix: e.getNewLineOrDefaultFromHost($, X.options) }; + L.replaceNodeWithNodes(x, D[0], ue, We); + var Fe = L.nodeHasTrailingComment(x, D[0], We); + L.deleteNodes(x, D.slice(1), { trailingTriviaOption: e.textChanges.TrailingTriviaOption.Include }, Fe); + } + } + } + } + C.organizeImports = w; + function B(x, X) { + for (var $ = e.createScanner(x.languageVersion, false, x.languageVariant), A = [], y = 0, V = 0, L = X; V < L.length; V++) { + var P = L[V]; + E(x, P, $) && y++, A[y] || (A[y] = []), A[y].push(P); + } + return A; + } + function E(x, X, $) { + var A = X.getFullStart(), y = X.getStart(); + $.setText(x.text, A, y - A); + for (var V = 0; $.getTokenPos() < y; ) { + var L = $.scan(); + if (L === 4 && (V++, V >= 2)) + return true; + } + return false; + } + function Q(x, X, $, A) { + if (A) + return x; + for (var y = $.getTypeChecker(), V = $.getCompilerOptions(), L = y.getJsxNamespace(X), P = y.getJsxFragmentFactory(X), k = !!(X.transformFlags & 2), Y = [], U = 0, j = x; U < j.length; U++) { + var H = j[U], I = H.importClause, l = H.moduleSpecifier; + if (!I) { + Y.push(H); + continue; + } + var d = I.name, D = I.namedBindings; + if (d && !g(d) && (d = void 0), D) + if (e.isNamespaceImport(D)) + g(D.name) || (D = void 0); + else { + var fe = D.elements.filter(function(ne) { + return g(ne.name); + }); + fe.length < D.elements.length && (D = fe.length ? e.factory.updateNamedImports(D, fe) : void 0); + } + d || D ? Y.push(oe(H, d, D)) : le(X, l) && (X.isDeclarationFile ? Y.push(e.factory.createImportDeclaration(H.decorators, H.modifiers, void 0, l, void 0)) : Y.push(H)); + } + return Y; + function g(ne) { + return k && (ne.text === L || P && ne.text === P) && e.jsxModeNeedsExplicitImport(V.jsx) || e.FindAllReferences.Core.isSymbolReferencedInFile(ne, y, X); + } + } + function le(x, X) { + var $ = e.isStringLiteral(X) && X.text; + return e.isString($) && e.some(x.moduleAugmentations, function(A) { + return e.isStringLiteral(A) && A.text === $; + }); + } + function N(x) { + return x !== void 0 && e.isStringLiteralLike(x) ? x.text : void 0; + } + function p(x) { + var X; + if (x.length === 0) + return x; + var $ = m(x), A = $.importWithoutClause, y = $.typeOnlyImports, V = $.regularImports, L = []; + A && L.push(A); + for (var P = 0, k = [V, y]; P < k.length; P++) { + var Y = k[P], U = Y === y, j = Y.defaultImports, H = Y.namespaceImports, I = Y.namedImports; + if (!U && j.length === 1 && H.length === 1 && I.length === 0) { + var l = j[0]; + L.push(oe(l, l.importClause.name, H[0].importClause.namedBindings)); + continue; + } + for (var d = e.stableSort(H, function(Re, ze) { + return b(Re.importClause.namedBindings.name, ze.importClause.namedBindings.name); + }), D = 0, fe = d; D < fe.length; D++) { + var g = fe[D]; + L.push(oe(g, void 0, g.importClause.namedBindings)); + } + if (!(j.length === 0 && I.length === 0)) { + var ne = void 0, ue = []; + if (j.length === 1) + ne = j[0].importClause.name; + else + for (var We = 0, Fe = j; We < Fe.length; We++) { + var l = Fe[We]; + ue.push(e.factory.createImportSpecifier(false, e.factory.createIdentifier("default"), l.importClause.name)); + } + ue.push.apply(ue, he(I)); + var Z = f(ue), Be = j.length > 0 ? j[0] : I[0], ge = Z.length === 0 ? ne ? void 0 : e.factory.createNamedImports(e.emptyArray) : I.length === 0 ? e.factory.createNamedImports(Z) : e.factory.updateNamedImports(I[0].importClause.namedBindings, Z); + U && ne && ge ? (L.push(oe(Be, ne, void 0)), L.push(oe((X = I[0]) !== null && X !== void 0 ? X : Be, void 0, ge))) : L.push(oe(Be, ne, ge)); + } + } + return L; + } + C.coalesceImports = p; + function m(x) { + for (var X, $ = { defaultImports: [], namespaceImports: [], namedImports: [] }, A = { defaultImports: [], namespaceImports: [], namedImports: [] }, y = 0, V = x; y < V.length; y++) { + var L = V[y]; + if (L.importClause === void 0) { + X = X || L; + continue; + } + var P = L.importClause.isTypeOnly ? $ : A, k = L.importClause, Y = k.name, U = k.namedBindings; + Y && P.defaultImports.push(L), U && (e.isNamespaceImport(U) ? P.namespaceImports.push(L) : P.namedImports.push(L)); + } + return { importWithoutClause: X, typeOnlyImports: $, regularImports: A }; + } + function G(x) { + if (x.length === 0) + return x; + var X = H(x), $ = X.exportWithoutClause, A = X.namedExports, y = X.typeOnlyExports, V = []; + $ && V.push($); + for (var L = 0, P = [A, y]; L < P.length; L++) { + var k = P[L]; + if (k.length !== 0) { + var Y = []; + Y.push.apply(Y, e.flatMap(k, function(I) { + return I.exportClause && e.isNamedExports(I.exportClause) ? I.exportClause.elements : e.emptyArray; + })); + var U = f(Y), j = k[0]; + V.push(e.factory.updateExportDeclaration(j, j.decorators, j.modifiers, j.isTypeOnly, j.exportClause && (e.isNamedExports(j.exportClause) ? e.factory.updateNamedExports(j.exportClause, U) : e.factory.updateNamespaceExport(j.exportClause, j.exportClause.name)), j.moduleSpecifier, j.assertClause)); + } + } + return V; + function H(I) { + for (var l, d = [], D = [], fe = 0, g = I; fe < g.length; fe++) { + var ne = g[fe]; + ne.exportClause === void 0 ? l = l || ne : ne.isTypeOnly ? D.push(ne) : d.push(ne); + } + return { exportWithoutClause: l, namedExports: d, typeOnlyExports: D }; + } + } + C.coalesceExports = G; + function oe(x, X, $) { + return e.factory.updateImportDeclaration(x, x.decorators, x.modifiers, e.factory.updateImportClause(x.importClause, x.importClause.isTypeOnly, X, $), x.moduleSpecifier, x.assertClause); + } + function f(x) { + return e.stableSort(x, T); + } + function T(x, X) { + return e.compareBooleans(x.isTypeOnly, X.isTypeOnly) || b(x.propertyName || x.name, X.propertyName || X.name) || b(x.name, X.name); + } + C.compareImportOrExportSpecifiers = T; + function K(x, X) { + var $ = x === void 0 ? void 0 : N(x), A = X === void 0 ? void 0 : N(X); + return e.compareBooleans($ === void 0, A === void 0) || e.compareBooleans(e.isExternalModuleNameRelative($), e.isExternalModuleNameRelative(A)) || e.compareStringsCaseInsensitive($, A); + } + C.compareModuleSpecifiers = K; + function b(x, X) { + return e.compareStringsCaseInsensitive(x.text, X.text); + } + function se(x) { + var X; + switch (x.kind) { + case 265: + return (X = e.tryCast(x.moduleReference, e.isExternalModuleReference)) === null || X === void 0 ? void 0 : X.expression; + case 266: + return x.moduleSpecifier; + case 237: + return x.declarationList.declarations[0].initializer.arguments[0]; + } + } + function J(x) { + return e.arrayIsSorted(x, O); + } + C.importsAreSorted = J; + function ie(x) { + return e.arrayIsSorted(x, T); + } + C.importSpecifiersAreSorted = ie; + function R(x, X) { + var $ = e.binarySearch(x, X, e.identity, O); + return $ < 0 ? ~$ : $; + } + C.getImportDeclarationInsertionIndex = R; + function q(x, X) { + var $ = e.binarySearch(x, X, e.identity, T); + return $ < 0 ? ~$ : $; + } + C.getImportSpecifierInsertionIndex = q; + function O(x, X) { + return K(se(x), se(X)) || ve(x, X); + } + C.compareImportsOrRequireStatements = O; + function ve(x, X) { + return e.compareValues(ee(x), ee(X)); + } + function ee(x) { + var X; + switch (x.kind) { + case 266: + return x.importClause ? x.importClause.isTypeOnly ? 1 : ((X = x.importClause.namedBindings) === null || X === void 0 ? void 0 : X.kind) === 268 ? 2 : x.importClause.name ? 3 : 4 : 0; + case 265: + return 5; + case 237: + return 6; + } + } + function he(x) { + return e.flatMap(x, function(X) { + return e.map(F(X), function($) { + return $.name && $.propertyName && $.name.escapedText === $.propertyName.escapedText ? e.factory.updateImportSpecifier($, $.isTypeOnly, void 0, $.name) : $; + }); + }); + } + function F(x) { + var X; + return ((X = x.importClause) === null || X === void 0 ? void 0 : X.namedBindings) && e.isNamedImports(x.importClause.namedBindings) ? x.importClause.namedBindings.elements : void 0; + } + })(a = e.OrganizeImports || (e.OrganizeImports = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(b, se) { + var J = []; + return B(b, se, J), E(b, J), J.sort(function(ie, R) { + return ie.textSpan.start - R.textSpan.start; + }); + } + C.collectElements = w; + function B(b, se, J) { + for (var ie = 40, R = 0, q = Ve(Ve([], b.statements, true), [b.endOfFileToken], false), O = q.length; R < O; ) { + for (; R < O && !e.isAnyImportSyntax(q[R]); ) + he(q[R]), R++; + if (R === O) + break; + for (var ve = R; R < O && e.isAnyImportSyntax(q[R]); ) + p(q[R], b, se, J), R++; + var ee = R - 1; + ee !== ve && J.push(m(e.findChildOfKind(q[ve], 100, b).getStart(b), q[ee].getEnd(), "imports")); + } + function he(F) { + var x; + if (ie !== 0) { + se.throwIfCancellationRequested(), (e.isDeclaration(F) || e.isVariableStatement(F) || e.isReturnStatement(F) || e.isCallOrNewExpression(F) || F.kind === 1) && p(F, b, se, J), e.isFunctionLike(F) && e.isBinaryExpression(F.parent) && e.isPropertyAccessExpression(F.parent.left) && p(F.parent.left, b, se, J), (e.isBlock(F) || e.isModuleBlock(F)) && N(F.statements.end, b, se, J), (e.isClassLike(F) || e.isInterfaceDeclaration(F)) && N(F.members.end, b, se, J); + var X = G(F, b); + X && J.push(X), ie--, e.isCallExpression(F) ? (ie++, he(F.expression), ie--, F.arguments.forEach(he), (x = F.typeArguments) === null || x === void 0 || x.forEach(he)) : e.isIfStatement(F) && F.elseStatement && e.isIfStatement(F.elseStatement) ? (he(F.expression), he(F.thenStatement), ie++, he(F.elseStatement), ie--) : F.forEachChild(he), ie++; + } + } + } + function E(b, se) { + for (var J = [], ie = b.getLineStarts(), R = 0, q = ie; R < q.length; R++) { + var O = q[R], ve = b.getLineEndOfPosition(O), ee = b.text.substring(O, ve), he = le(ee); + if (!(!he || e.isInComment(b, O))) + if (he[1]) { + var x = J.pop(); + x && (x.textSpan.length = ve - x.textSpan.start, x.hintSpan.length = ve - x.textSpan.start, se.push(x)); + } else { + var F = e.createTextSpanFromBounds(b.text.indexOf("//", O), ve); + J.push(T(F, "region", F, false, he[2] || "#region")); + } + } + } + var Q = /^#(end)?region(?:\s+(.*))?(?:\r)?$/; + function le(b) { + return b = e.trimStringStart(b), e.startsWith(b, "//") ? (b = e.trimString(b.slice(2)), Q.exec(b)) : null; + } + function N(b, se, J, ie) { + var R = e.getLeadingCommentRanges(se.text, b); + if (!R) + return; + for (var q = -1, O = -1, ve = 0, ee = se.getFullText(), he = 0, F = R; he < F.length; he++) { + var x = F[he], X = x.kind, $ = x.pos, A = x.end; + switch (J.throwIfCancellationRequested(), X) { + case 2: + var y = ee.slice($, A); + if (le(y)) { + V(), ve = 0; + break; + } + ve === 0 && (q = $), O = A, ve++; + break; + case 3: + V(), ie.push(m($, A, "comment")), ve = 0; + break; + default: + e.Debug.assertNever(X); + } + } + V(); + function V() { + ve > 1 && ie.push(m(q, O, "comment")); + } + } + function p(b, se, J, ie) { + e.isJsxText(b) || N(b.pos, se, J, ie); + } + function m(b, se, J) { + return T(e.createTextSpanFromBounds(b, se), J); + } + function G(b, se) { + switch (b.kind) { + case 235: + if (e.isFunctionLike(b.parent)) + return oe(b.parent, b, se); + switch (b.parent.kind) { + case 240: + case 243: + case 244: + case 242: + case 239: + case 241: + case 248: + case 292: + return x(b.parent); + case 252: + var J = b.parent; + if (J.tryBlock === b) + return x(b.parent); + if (J.finallyBlock === b) { + var ie = e.findChildOfKind(J, 96, se); + if (ie) + return x(ie); + } + default: + return T(e.createTextSpanFromNode(b, se), "code"); + } + case 262: + return x(b.parent); + case 257: + case 226: + case 258: + case 260: + case 263: + case 182: + case 201: + return x(b); + case 184: + return x(b, false, !e.isTupleTypeNode(b.parent), 22); + case 289: + case 290: + return X(b.statements); + case 205: + return F(b); + case 204: + return F(b, 22); + case 278: + return O(b); + case 282: + return ve(b); + case 279: + case 280: + return ee(b.attributes); + case 223: + case 14: + return he(b); + case 202: + return x(b, false, !e.isBindingElement(b.parent), 22); + case 214: + return q(b); + case 208: + return R(b); + case 212: + return $(b); + } + function R(A) { + if (!!A.arguments.length) { + var y = e.findChildOfKind(A, 20, se), V = e.findChildOfKind(A, 21, se); + if (!(!y || !V || e.positionsAreOnSameLine(y.pos, V.pos, se))) + return f(y, V, A, se, false, true); + } + } + function q(A) { + if (!(e.isBlock(A.body) || e.isParenthesizedExpression(A.body) || e.positionsAreOnSameLine(A.body.getFullStart(), A.body.getEnd(), se))) { + var y = e.createTextSpanFromBounds(A.body.getFullStart(), A.body.getEnd()); + return T(y, "code", e.createTextSpanFromNode(A)); + } + } + function O(A) { + var y = e.createTextSpanFromBounds(A.openingElement.getStart(se), A.closingElement.getEnd()), V = A.openingElement.tagName.getText(se), L = "<" + V + ">..."; + return T(y, "code", y, false, L); + } + function ve(A) { + var y = e.createTextSpanFromBounds(A.openingFragment.getStart(se), A.closingFragment.getEnd()), V = "<>..."; + return T(y, "code", y, false, V); + } + function ee(A) { + if (A.properties.length !== 0) + return m(A.getStart(se), A.getEnd(), "code"); + } + function he(A) { + if (!(A.kind === 14 && A.text.length === 0)) + return m(A.getStart(se), A.getEnd(), "code"); + } + function F(A, y) { + return y === void 0 && (y = 18), x(A, false, !e.isArrayLiteralExpression(A.parent) && !e.isCallExpression(A.parent), y); + } + function x(A, y, V, L, P) { + y === void 0 && (y = false), V === void 0 && (V = true), L === void 0 && (L = 18), P === void 0 && (P = L === 18 ? 19 : 23); + var k = e.findChildOfKind(b, L, se), Y = e.findChildOfKind(b, P, se); + return k && Y && f(k, Y, A, se, y, V); + } + function X(A) { + return A.length ? T(e.createTextSpanFromRange(A), "code") : void 0; + } + function $(A) { + if (!e.positionsAreOnSameLine(A.getStart(), A.getEnd(), se)) { + var y = e.createTextSpanFromBounds(A.getStart(), A.getEnd()); + return T(y, "code", e.createTextSpanFromNode(A)); + } + } + } + function oe(b, se, J) { + var ie = K(b, se, J), R = e.findChildOfKind(se, 19, J); + return ie && R && f(ie, R, b, J, b.kind !== 214); + } + function f(b, se, J, ie, R, q) { + R === void 0 && (R = false), q === void 0 && (q = true); + var O = e.createTextSpanFromBounds(q ? b.getFullStart() : b.getStart(ie), se.getEnd()); + return T(O, "code", e.createTextSpanFromNode(J, ie), R); + } + function T(b, se, J, ie, R) { + return J === void 0 && (J = b), ie === void 0 && (ie = false), R === void 0 && (R = "..."), { textSpan: b, kind: se, hintSpan: J, bannerText: R, autoCollapse: ie }; + } + function K(b, se, J) { + if (e.isNodeArrayMultiLine(b.parameters, J)) { + var ie = e.findChildOfKind(b, 20, J); + if (ie) + return ie; + } + return e.findChildOfKind(se, 18, J); + } + })(a = e.OutliningElementsCollector || (e.OutliningElementsCollector = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(y) { + y[y.exact = 0] = "exact", y[y.prefix = 1] = "prefix", y[y.substring = 2] = "substring", y[y.camelCase = 3] = "camelCase"; + })(a = e.PatternMatchKind || (e.PatternMatchKind = {})); + function C(y, V) { + return { kind: y, isCaseSensitive: V }; + } + function w(y) { + var V = new e.Map(), L = y.trim().split(".").map(function(P) { + return f(P.trim()); + }); + if (!L.some(function(P) { + return !P.subWordTextChunks.length; + })) + return { getFullMatch: function(P, k) { + return B(P, k, L, V); + }, getMatchForLastSegmentOfPattern: function(P) { + return le(P, e.last(L), V); + }, patternContainsDots: L.length > 1 }; + } + e.createPatternMatcher = w; + function B(y, V, L, P) { + var k = le(V, e.last(L), P); + if (!!k && !(L.length - 1 > y.length)) { + for (var Y, U = L.length - 2, j = y.length - 1; U >= 0; U -= 1, j -= 1) + Y = N(Y, le(y[j], L[U], P)); + return Y; + } + } + function E(y, V) { + var L = V.get(y); + return L || V.set(y, L = ve(y)), L; + } + function Q(y, V, L) { + var P = b(y, V.textLowerCase); + if (P === 0) + return C(V.text.length === y.length ? a.exact : a.prefix, e.startsWith(y, V.text)); + if (V.isLowerCase) { + if (P === -1) + return; + for (var k = E(y, L), Y = 0, U = k; Y < U.length; Y++) { + var j = U[Y]; + if (m(y, j, V.text, true)) + return C(a.substring, m(y, j, V.text, false)); + } + if (V.text.length < y.length && T(y.charCodeAt(P))) + return C(a.substring, false); + } else { + if (y.indexOf(V.text) > 0) + return C(a.substring, true); + if (V.characterSpans.length > 0) { + var H = E(y, L), I = oe(y, H, V, false) ? true : oe(y, H, V, true) ? false : void 0; + if (I !== void 0) + return C(a.camelCase, I); + } + } + } + function le(y, V, L) { + if (A(V.totalTextChunk.text, function(I) { + return I !== 32 && I !== 42; + })) { + var P = Q(y, V.totalTextChunk, L); + if (P) + return P; + } + for (var k = V.subWordTextChunks, Y, U = 0, j = k; U < j.length; U++) { + var H = j[U]; + Y = N(Y, Q(y, H, L)); + } + return Y; + } + function N(y, V) { + return e.min(y, V, p); + } + function p(y, V) { + return y === void 0 ? 1 : V === void 0 ? -1 : e.compareValues(y.kind, V.kind) || e.compareBooleans(!y.isCaseSensitive, !V.isCaseSensitive); + } + function m(y, V, L, P, k) { + return k === void 0 && (k = { start: 0, length: L.length }), k.length <= V.length && $(0, k.length, function(Y) { + return G(L.charCodeAt(k.start + Y), y.charCodeAt(V.start + Y), P); + }); + } + function G(y, V, L) { + return L ? se(y) === se(V) : y === V; + } + function oe(y, V, L, P) { + for (var k = L.characterSpans, Y = 0, U = 0, j, H; ; ) { + if (U === k.length) + return true; + if (Y === V.length) + return false; + for (var I = V[Y], l = false; U < k.length; U++) { + var d = k[U]; + if (l && (!T(L.text.charCodeAt(k[U - 1].start)) || !T(L.text.charCodeAt(k[U].start))) || !m(y, I, L.text, P, d)) + break; + l = true, j = j === void 0 ? Y : j, H = H === void 0 ? true : H, I = e.createTextSpan(I.start + d.length, I.length - d.length); + } + !l && H !== void 0 && (H = false), Y++; + } + } + function f(y) { + return { totalTextChunk: q(y), subWordTextChunks: R(y) }; + } + function T(y) { + if (y >= 65 && y <= 90) + return true; + if (y < 127 || !e.isUnicodeIdentifierStart(y, 99)) + return false; + var V = String.fromCharCode(y); + return V === V.toUpperCase(); + } + function K(y) { + if (y >= 97 && y <= 122) + return true; + if (y < 127 || !e.isUnicodeIdentifierStart(y, 99)) + return false; + var V = String.fromCharCode(y); + return V === V.toLowerCase(); + } + function b(y, V) { + for (var L = y.length - V.length, P = function(U) { + if (A(V, function(j, H) { + return se(y.charCodeAt(H + U)) === j; + })) + return { value: U }; + }, k = 0; k <= L; k++) { + var Y = P(k); + if (typeof Y == "object") + return Y.value; + } + return -1; + } + function se(y) { + return y >= 65 && y <= 90 ? 97 + (y - 65) : y < 127 ? y : String.fromCharCode(y).toLowerCase().charCodeAt(0); + } + function J(y) { + return y >= 48 && y <= 57; + } + function ie(y) { + return T(y) || K(y) || J(y) || y === 95 || y === 36; + } + function R(y) { + for (var V = [], L = 0, P = 0, k = 0; k < y.length; k++) { + var Y = y.charCodeAt(k); + ie(Y) ? (P === 0 && (L = k), P++) : P > 0 && (V.push(q(y.substr(L, P))), P = 0); + } + return P > 0 && V.push(q(y.substr(L, P))), V; + } + function q(y) { + var V = y.toLowerCase(); + return { text: y, textLowerCase: V, isLowerCase: y === V, characterSpans: O(y) }; + } + function O(y) { + return ee(y, false); + } + e.breakIntoCharacterSpans = O; + function ve(y) { + return ee(y, true); + } + e.breakIntoWordSpans = ve; + function ee(y, V) { + for (var L = [], P = 0, k = 1; k < y.length; k++) { + var Y = J(y.charCodeAt(k - 1)), U = J(y.charCodeAt(k)), j = X(y, V, k), H = V && x(y, k, P); + (he(y.charCodeAt(k - 1)) || he(y.charCodeAt(k)) || Y !== U || j || H) && (F(y, P, k) || L.push(e.createTextSpan(P, k - P)), P = k); + } + return F(y, P, y.length) || L.push(e.createTextSpan(P, y.length - P)), L; + } + function he(y) { + switch (y) { + case 33: + case 34: + case 35: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 44: + case 45: + case 46: + case 47: + case 58: + case 59: + case 63: + case 64: + case 91: + case 92: + case 93: + case 95: + case 123: + case 125: + return true; + } + return false; + } + function F(y, V, L) { + return A(y, function(P) { + return he(P) && P !== 95; + }, V, L); + } + function x(y, V, L) { + return V !== L && V + 1 < y.length && T(y.charCodeAt(V)) && K(y.charCodeAt(V + 1)) && A(y, T, L, V); + } + function X(y, V, L) { + var P = T(y.charCodeAt(L - 1)), k = T(y.charCodeAt(L)); + return k && (!V || !P); + } + function $(y, V, L) { + for (var P = y; P < V; P++) + if (!L(P)) + return false; + return true; + } + function A(y, V, L, P) { + return L === void 0 && (L = 0), P === void 0 && (P = y.length), $(L, P, function(k) { + return V(y.charCodeAt(k), k); + }); + } + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C, w, B) { + w === void 0 && (w = true), B === void 0 && (B = false); + var E = { languageVersion: 1, pragmas: void 0, checkJsDirective: void 0, referencedFiles: [], typeReferenceDirectives: [], libReferenceDirectives: [], amdDependencies: [], hasNoDefaultLib: void 0, moduleName: void 0 }, Q = [], le, N, p, m = 0, G = false; + function oe() { + return N = p, p = e.scanner.scan(), p === 18 ? m++ : p === 19 && m--, p; + } + function f() { + var $ = e.scanner.getTokenValue(), A = e.scanner.getTokenPos(); + return { fileName: $, pos: A, end: A + $.length }; + } + function T() { + le || (le = []), le.push({ ref: f(), depth: m }); + } + function K() { + Q.push(f()), b(); + } + function b() { + m === 0 && (G = true); + } + function se() { + var $ = e.scanner.getToken(); + return $ === 135 ? ($ = oe(), $ === 141 && ($ = oe(), $ === 10 && T()), true) : false; + } + function J() { + if (N === 24) + return false; + var $ = e.scanner.getToken(); + if ($ === 100) { + if ($ = oe(), $ === 20) { + if ($ = oe(), $ === 10 || $ === 14) + return K(), true; + } else { + if ($ === 10) + return K(), true; + if ($ === 152) { + var A = e.scanner.lookAhead(function() { + var y = e.scanner.scan(); + return y !== 156 && (y === 41 || y === 18 || y === 79 || e.isKeyword(y)); + }); + A && ($ = oe()); + } + if ($ === 79 || e.isKeyword($)) + if ($ = oe(), $ === 156) { + if ($ = oe(), $ === 10) + return K(), true; + } else if ($ === 63) { + if (R(true)) + return true; + } else if ($ === 27) + $ = oe(); + else + return true; + if ($ === 18) { + for ($ = oe(); $ !== 19 && $ !== 1; ) + $ = oe(); + $ === 19 && ($ = oe(), $ === 156 && ($ = oe(), $ === 10 && K())); + } else + $ === 41 && ($ = oe(), $ === 127 && ($ = oe(), ($ === 79 || e.isKeyword($)) && ($ = oe(), $ === 156 && ($ = oe(), $ === 10 && K())))); + } + return true; + } + return false; + } + function ie() { + var $ = e.scanner.getToken(); + if ($ === 93) { + if (b(), $ = oe(), $ === 152) { + var A = e.scanner.lookAhead(function() { + var y = e.scanner.scan(); + return y === 41 || y === 18; + }); + A && ($ = oe()); + } + if ($ === 18) { + for ($ = oe(); $ !== 19 && $ !== 1; ) + $ = oe(); + $ === 19 && ($ = oe(), $ === 156 && ($ = oe(), $ === 10 && K())); + } else if ($ === 41) + $ = oe(), $ === 156 && ($ = oe(), $ === 10 && K()); + else if ($ === 100) { + if ($ = oe(), $ === 152) { + var A = e.scanner.lookAhead(function() { + var V = e.scanner.scan(); + return V === 79 || e.isKeyword(V); + }); + A && ($ = oe()); + } + if (($ === 79 || e.isKeyword($)) && ($ = oe(), $ === 63 && R(true))) + return true; + } + return true; + } + return false; + } + function R($, A) { + A === void 0 && (A = false); + var y = $ ? oe() : e.scanner.getToken(); + return y === 146 ? (y = oe(), y === 20 && (y = oe(), (y === 10 || A && y === 14) && K()), true) : false; + } + function q() { + var $ = e.scanner.getToken(); + if ($ === 79 && e.scanner.getTokenValue() === "define") { + if ($ = oe(), $ !== 20) + return true; + if ($ = oe(), $ === 10 || $ === 14) + if ($ = oe(), $ === 27) + $ = oe(); + else + return true; + if ($ !== 22) + return true; + for ($ = oe(); $ !== 23 && $ !== 1; ) + ($ === 10 || $ === 14) && K(), $ = oe(); + return true; + } + return false; + } + function O() { + for (e.scanner.setText(C), oe(); e.scanner.getToken() !== 1; ) { + if (e.scanner.getToken() === 15) { + var $ = [e.scanner.getToken()], A = e.scanner.scan(); + e: + for (; e.length($); ) { + switch (A) { + case 1: + break e; + case 100: + J(); + break; + case 15: + $.push(A); + break; + case 18: + e.length($) && $.push(A); + break; + case 19: + e.length($) && (e.lastOrUndefined($) === 15 ? e.scanner.reScanTemplateToken(false) === 17 && $.pop() : $.pop()); + break; + } + A = e.scanner.scan(); + } + oe(); + } + se() || J() || ie() || B && (R(false, true) || q()) || oe(); + } + e.scanner.setText(void 0); + } + if (w && O(), e.processCommentPragmas(E, C), e.processPragmasIntoFields(E, e.noop), G) { + if (le) + for (var ve = 0, ee = le; ve < ee.length; ve++) { + var he = ee[ve]; + Q.push(he.ref); + } + return { referencedFiles: E.referencedFiles, typeReferenceDirectives: E.typeReferenceDirectives, libReferenceDirectives: E.libReferenceDirectives, importedFiles: Q, isLibFile: !!E.hasNoDefaultLib, ambientExternalModules: void 0 }; + } else { + var F = void 0; + if (le) + for (var x = 0, X = le; x < X.length; x++) { + var he = X[x]; + he.depth === 0 ? (F || (F = []), F.push(he.ref.fileName)) : Q.push(he.ref); + } + return { referencedFiles: E.referencedFiles, typeReferenceDirectives: E.typeReferenceDirectives, libReferenceDirectives: E.libReferenceDirectives, importedFiles: Q, isLibFile: !!E.hasNoDefaultLib, ambientExternalModules: F }; + } + } + e.preProcessFile = a; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(G, oe, f, T) { + var K = e.getAdjustedRenameLocation(e.getTouchingPropertyName(oe, f)); + if (m(K)) { + var b = B(K, G.getTypeChecker(), oe, G, T); + if (b) + return b; + } + return N(e.Diagnostics.You_cannot_rename_this_element); + } + C.getRenameInfo = w; + function B(G, oe, f, T, K) { + var b = oe.getSymbolAtLocation(G); + if (!b) { + if (e.isStringLiteralLike(G)) { + var se = e.getContextualTypeFromParentOrAncestorTypeNode(G, oe); + if (se && (se.flags & 128 || se.flags & 1048576 && e.every(se.types, function(ee) { + return !!(ee.flags & 128); + }))) + return le(G.text, G.text, "string", "", G, f); + } else if (e.isLabelName(G)) { + var J = e.getTextOfNode(G); + return le(J, J, "label", "", G, f); + } + return; + } + var ie = b.declarations; + if (!(!ie || ie.length === 0)) { + if (ie.some(function(ee) { + return E(T, ee); + })) + return N(e.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library); + if (!(e.isIdentifier(G) && G.originalKeywordKind === 88 && b.parent && b.parent.flags & 1536)) { + if (e.isStringLiteralLike(G) && e.tryGetImportFromModuleSpecifier(G)) + return K && K.allowRenameOfImportPath ? Q(G, f, b) : void 0; + var R = e.SymbolDisplay.getSymbolKind(oe, b, G), q = e.isImportOrExportSpecifierName(G) || e.isStringOrNumericLiteralLike(G) && G.parent.kind === 162 ? e.stripQuotes(e.getTextOfIdentifierOrLiteral(G)) : void 0, O = q || oe.symbolToString(b), ve = q || oe.getFullyQualifiedName(b); + return le(O, ve, R, e.SymbolDisplay.getSymbolModifiers(oe, b), G, f); + } + } + } + function E(G, oe) { + var f = oe.getSourceFile(); + return G.isSourceFileDefaultLibrary(f) && e.fileExtensionIs(f.fileName, ".d.ts"); + } + function Q(G, oe, f) { + if (!e.isExternalModuleNameRelative(G.text)) + return N(e.Diagnostics.You_cannot_rename_a_module_via_a_global_import); + var T = f.declarations && e.find(f.declarations, e.isSourceFile); + if (!!T) { + var K = e.endsWith(G.text, "/index") || e.endsWith(G.text, "/index.js") ? void 0 : e.tryRemoveSuffix(e.removeFileExtension(T.fileName), "/index"), b = K === void 0 ? T.fileName : K, se = K === void 0 ? "module" : "directory", J = G.text.lastIndexOf("/") + 1, ie = e.createTextSpan(G.getStart(oe) + 1 + J, G.text.length - J); + return { canRename: true, fileToRename: b, kind: se, displayName: b, fullDisplayName: b, kindModifiers: "", triggerSpan: ie }; + } + } + function le(G, oe, f, T, K, b) { + return { canRename: true, fileToRename: void 0, kind: f, displayName: G, fullDisplayName: oe, kindModifiers: T, triggerSpan: p(K, b) }; + } + function N(G) { + return { canRename: false, localizedErrorMessage: e.getLocaleSpecificMessage(G) }; + } + function p(G, oe) { + var f = G.getStart(oe), T = G.getWidth(oe); + return e.isStringLiteralLike(G) && (f += 1, T -= 2), e.createTextSpan(f, T); + } + function m(G) { + switch (G.kind) { + case 79: + case 80: + case 10: + case 14: + case 108: + return true; + case 8: + return e.isLiteralNameOfPropertyDeclarationOrIndexAccess(G); + default: + return false; + } + } + C.nodeIsEligibleForRename = m; + })(a = e.Rename || (e.Rename = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(f, T) { + var K, b = { textSpan: e.createTextSpanFromBounds(T.getFullStart(), T.getEnd()) }, se = T; + e: + for (; ; ) { + var J = Q(se); + if (!J.length) + break; + for (var ie = 0; ie < J.length; ie++) { + var R = J[ie - 1], q = J[ie], O = J[ie + 1]; + if (e.getTokenPosOfNode(q, T, true) > f) + break e; + var ve = e.singleOrUndefined(e.getTrailingCommentRanges(T.text, q.end)); + if (ve && ve.kind === 2 && A(ve.pos, ve.end), B(T, f, q)) { + if (e.isBlock(q) || e.isTemplateSpan(q) || e.isTemplateHead(q) || e.isTemplateTail(q) || R && e.isTemplateHead(R) || e.isVariableDeclarationList(q) && e.isVariableStatement(se) || e.isSyntaxList(q) && e.isVariableDeclarationList(se) || e.isVariableDeclaration(q) && e.isSyntaxList(se) && J.length === 1 || e.isJSDocTypeExpression(q) || e.isJSDocSignature(q) || e.isJSDocTypeLiteral(q)) { + se = q; + break; + } + if (e.isTemplateSpan(se) && O && e.isTemplateMiddleOrTemplateTail(O)) { + var ee = q.getFullStart() - 2, he = O.getStart() + 1; + $(ee, he); + } + var F = e.isSyntaxList(q) && m(R) && G(O) && !e.positionsAreOnSameLine(R.getStart(), O.getStart(), T), x = F ? R.getEnd() : q.getStart(), X = F ? O.getStart() : oe(T, q); + e.hasJSDocNodes(q) && ((K = q.jsDoc) === null || K === void 0 ? void 0 : K.length) && $(e.first(q.jsDoc).getStart(), X), $(x, X), (e.isStringLiteral(q) || e.isTemplateLiteral(q)) && $(x + 1, X - 1), se = q; + break; + } + if (ie === J.length - 1) + break e; + } + } + return b; + function $(y, V) { + if (y !== V) { + var L = e.createTextSpanFromBounds(y, V); + (!b || !e.textSpansEqual(L, b.textSpan) && e.textSpanIntersectsWithPosition(L, f)) && (b = Ke({ textSpan: L }, b && { parent: b })); + } + } + function A(y, V) { + $(y, V); + for (var L = y; T.text.charCodeAt(L) === 47; ) + L++; + $(L, V); + } + } + C.getSmartSelectionRange = w; + function B(f, T, K) { + if (e.Debug.assert(K.pos <= T), T < K.end) + return true; + var b = K.getEnd(); + return b === T ? e.getTouchingPropertyName(f, T).pos < K.end : false; + } + var E = e.or(e.isImportDeclaration, e.isImportEqualsDeclaration); + function Q(f) { + if (e.isSourceFile(f)) + return le(f.getChildAt(0).getChildren(), E); + if (e.isMappedTypeNode(f)) { + var T = f.getChildren(), K = T[0], b = T.slice(1), se = e.Debug.checkDefined(b.pop()); + e.Debug.assertEqual(K.kind, 18), e.Debug.assertEqual(se.kind, 19); + var J = le(b, function(O) { + return O === f.readonlyToken || O.kind === 145 || O === f.questionToken || O.kind === 57; + }), ie = le(J, function(O) { + var ve = O.kind; + return ve === 22 || ve === 163 || ve === 23; + }); + return [K, p(N(ie, function(O) { + var ve = O.kind; + return ve === 58; + })), se]; + } + if (e.isPropertySignature(f)) { + var b = le(f.getChildren(), function(ve) { + return ve === f.name || e.contains(f.modifiers, ve); + }); + return N(b, function(ve) { + var ee = ve.kind; + return ee === 58; + }); + } + if (e.isParameter(f)) { + var R = le(f.getChildren(), function(O) { + return O === f.dotDotDotToken || O === f.name; + }), q = le(R, function(O) { + return O === R[0] || O === f.questionToken; + }); + return N(q, function(O) { + var ve = O.kind; + return ve === 63; + }); + } + return e.isBindingElement(f) ? N(f.getChildren(), function(O) { + var ve = O.kind; + return ve === 63; + }) : f.getChildren(); + } + function le(f, T) { + for (var K = [], b, se = 0, J = f; se < J.length; se++) { + var ie = J[se]; + T(ie) ? (b = b || [], b.push(ie)) : (b && (K.push(p(b)), b = void 0), K.push(ie)); + } + return b && K.push(p(b)), K; + } + function N(f, T, K) { + if (K === void 0 && (K = true), f.length < 2) + return f; + var b = e.findIndex(f, T); + if (b === -1) + return f; + var se = f.slice(0, b), J = f[b], ie = e.last(f), R = K && ie.kind === 26, q = f.slice(b + 1, R ? f.length - 1 : void 0), O = e.compact([se.length ? p(se) : void 0, J, q.length ? p(q) : void 0]); + return R ? O.concat(ie) : O; + } + function p(f) { + return e.Debug.assertGreaterThanOrEqual(f.length, 1), e.setTextRangePosEnd(e.parseNodeFactory.createSyntaxList(f), f[0].pos, e.last(f).end); + } + function m(f) { + var T = f && f.kind; + return T === 18 || T === 22 || T === 20 || T === 280; + } + function G(f) { + var T = f && f.kind; + return T === 19 || T === 23 || T === 21 || T === 281; + } + function oe(f, T) { + switch (T.kind) { + case 340: + case 338: + case 347: + case 345: + case 342: + return f.getLineEndOfPosition(T.getStart()); + default: + return T.getEnd(); + } + } + })(a = e.SmartSelectionRange || (e.SmartSelectionRange = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(l) { + l[l.Call = 0] = "Call", l[l.TypeArgs = 1] = "TypeArgs", l[l.Contextual = 2] = "Contextual"; + })(w || (w = {})); + function B(l, d, D, fe, g) { + var ne = l.getTypeChecker(), ue = e.findTokenOnLeftOfPosition(d, D); + if (!!ue) { + var We = !!fe && fe.kind === "characterTyped"; + if (!(We && (e.isInString(d, D, ue) || e.isInComment(d, D)))) { + var Fe = !!fe && fe.kind === "invoked", Z = F(ue, D, d, ne, Fe); + if (!!Z) { + g.throwIfCancellationRequested(); + var Be = Q(Z, ne, d, ue, We); + return g.throwIfCancellationRequested(), Be ? ne.runWithCancellationToken(g, function(ge) { + return Be.kind === 0 ? y(Be.candidates, Be.resolvedSignature, Z, d, ge) : V(Be.symbol, Z, d, ge); + }) : e.isSourceFileJS(d) ? N(Z, l, g) : void 0; + } + } + } + } + C.getSignatureHelpItems = B; + var E; + (function(l) { + l[l.Candidate = 0] = "Candidate", l[l.Type = 1] = "Type"; + })(E || (E = {})); + function Q(l, d, D, fe, g) { + var ne = l.invocation, ue = l.argumentCount; + switch (ne.kind) { + case 0: { + if (g && !le(fe, ne.node, D)) + return; + var We = [], Fe = d.getResolvedSignatureForSignatureHelp(ne.node, We, ue); + return We.length === 0 ? void 0 : { kind: 0, candidates: We, resolvedSignature: Fe }; + } + case 1: { + var Z = ne.called; + if (g && !p(fe, D, e.isIdentifier(Z) ? Z.parent : Z)) + return; + var We = e.getPossibleGenericSignatures(Z, ue, d); + if (We.length !== 0) + return { kind: 0, candidates: We, resolvedSignature: e.first(We) }; + var Be = d.getSymbolAtLocation(Z); + return Be && { kind: 1, symbol: Be }; + } + case 2: + return { kind: 0, candidates: [ne.signature], resolvedSignature: ne.signature }; + default: + return e.Debug.assertNever(ne); + } + } + function le(l, d, D) { + if (!e.isCallOrNewExpression(d)) + return false; + var fe = d.getChildren(D); + switch (l.kind) { + case 20: + return e.contains(fe, l); + case 27: { + var g = e.findContainingList(l); + return !!g && e.contains(fe, g); + } + case 29: + return p(l, D, d.expression); + default: + return false; + } + } + function N(l, d, D) { + if (l.invocation.kind !== 2) { + var fe = X(l.invocation), g = e.isPropertyAccessExpression(fe) ? fe.name.text : void 0, ne = d.getTypeChecker(); + return g === void 0 ? void 0 : e.firstDefined(d.getSourceFiles(), function(ue) { + return e.firstDefined(ue.getNamedDeclarations().get(g), function(We) { + var Fe = We.symbol && ne.getTypeOfSymbolAtLocation(We.symbol, We), Z = Fe && Fe.getCallSignatures(); + if (Z && Z.length) + return ne.runWithCancellationToken(D, function(Be) { + return y(Z, Z[0], l, ue, Be, true); + }); + }); + }); + } + } + function p(l, d, D) { + for (var fe = l.getFullStart(), g = l.parent; g; ) { + var ne = e.findPrecedingToken(fe, d, g, true); + if (ne) + return e.rangeContainsRange(D, ne); + g = g.parent; + } + return e.Debug.fail("Could not find preceding token"); + } + function m(l, d, D) { + var fe = f(l, d, D); + return !fe || fe.isTypeParameterList || fe.invocation.kind !== 0 ? void 0 : { invocation: fe.invocation.node, argumentCount: fe.argumentCount, argumentIndex: fe.argumentIndex }; + } + C.getArgumentInfoForCompletions = m; + function G(l, d, D) { + var fe = oe(l, D); + if (!!fe) { + var g = fe.list, ne = fe.argumentIndex, ue = q(g, e.isInString(D, d, l)); + ne !== 0 && e.Debug.assertLessThan(ne, ue); + var We = ee(g, D); + return { list: g, argumentIndex: ne, argumentCount: ue, argumentsSpan: We }; + } + } + function oe(l, d) { + if (l.kind === 29 || l.kind === 20) + return { list: x(l.parent, l, d), argumentIndex: 0 }; + var D = e.findContainingList(l); + return D && { list: D, argumentIndex: R(D, l) }; + } + function f(l, d, D) { + var fe = l.parent; + if (e.isCallOrNewExpression(fe)) { + var g = fe, ne = G(l, d, D); + if (!ne) + return; + var ue = ne.list, We = ne.argumentIndex, Fe = ne.argumentCount, Z = ne.argumentsSpan, Be = !!fe.typeArguments && fe.typeArguments.pos === ue.pos; + return { isTypeParameterList: Be, invocation: { kind: 0, node: g }, argumentsSpan: Z, argumentIndex: We, argumentCount: Fe }; + } else { + if (e.isNoSubstitutionTemplateLiteral(l) && e.isTaggedTemplateExpression(fe)) + return e.isInsideTemplateLiteral(l, d, D) ? ve(fe, 0, D) : void 0; + if (e.isTemplateHead(l) && fe.parent.kind === 210) { + var ge = fe, Re = ge.parent; + e.Debug.assert(ge.kind === 223); + var We = e.isInsideTemplateLiteral(l, d, D) ? 0 : 1; + return ve(Re, We, D); + } else if (e.isTemplateSpan(fe) && e.isTaggedTemplateExpression(fe.parent.parent)) { + var ze = fe, Re = fe.parent.parent; + if (e.isTemplateTail(l) && !e.isInsideTemplateLiteral(l, d, D)) + return; + var Ee = ze.parent.templateSpans.indexOf(ze), We = O(Ee, l, d, D); + return ve(Re, We, D); + } else if (e.isJsxOpeningLikeElement(fe)) { + var He = fe.attributes.pos, rr = e.skipTrivia(D.text, fe.attributes.end, false); + return { isTypeParameterList: false, invocation: { kind: 0, node: fe }, argumentsSpan: e.createTextSpan(He, rr - He), argumentIndex: 0, argumentCount: 1 }; + } else { + var Ie = e.getPossibleTypeArgumentsInfo(l, D); + if (Ie) { + var _e = Ie.called, we = Ie.nTypeArguments, g = { kind: 1, called: _e }, Z = e.createTextSpanFromBounds(_e.getStart(D), l.end); + return { isTypeParameterList: true, invocation: g, argumentsSpan: Z, argumentIndex: we, argumentCount: we + 1 }; + } + return; + } + } + } + function T(l, d, D, fe) { + return se(l, d, D, fe) || f(l, d, D); + } + function K(l) { + return e.isBinaryExpression(l.parent) ? K(l.parent) : l; + } + function b(l) { + return e.isBinaryExpression(l.left) ? b(l.left) + 1 : 2; + } + function se(l, d, D, fe) { + var g = J(l, D, d, fe); + if (!!g) { + var ne = g.contextualType, ue = g.argumentIndex, We = g.argumentCount, Fe = g.argumentsSpan, Z = ne.getNonNullableType(), Be = Z.symbol; + if (Be !== void 0) { + var ge = e.lastOrUndefined(Z.getCallSignatures()); + if (ge !== void 0) { + var Re = { kind: 2, signature: ge, node: l, symbol: ie(Be) }; + return { isTypeParameterList: false, invocation: Re, argumentsSpan: Fe, argumentIndex: ue, argumentCount: We }; + } + } + } + } + function J(l, d, D, fe) { + if (!(l.kind !== 20 && l.kind !== 27)) { + var g = l.parent; + switch (g.kind) { + case 212: + case 169: + case 213: + case 214: + var ne = G(l, D, d); + if (!ne) + return; + var ue = ne.argumentIndex, We = ne.argumentCount, Fe = ne.argumentsSpan, Z = e.isMethodDeclaration(g) ? fe.getContextualTypeForObjectLiteralElement(g) : fe.getContextualType(g); + return Z && { contextualType: Z, argumentIndex: ue, argumentCount: We, argumentsSpan: Fe }; + case 221: { + var Be = K(g), ge = fe.getContextualType(Be), Re = l.kind === 20 ? 0 : b(g) - 1, ze = b(Be); + return ge && { contextualType: ge, argumentIndex: Re, argumentCount: ze, argumentsSpan: e.createTextSpanFromNode(g) }; + } + default: + return; + } + } + } + function ie(l) { + return l.name === "__type" && e.firstDefined(l.declarations, function(d) { + return e.isFunctionTypeNode(d) ? d.parent.symbol : void 0; + }) || l; + } + function R(l, d) { + for (var D = 0, fe = 0, g = l.getChildren(); fe < g.length; fe++) { + var ne = g[fe]; + if (ne === d) + break; + ne.kind !== 27 && D++; + } + return D; + } + function q(l, d) { + var D = l.getChildren(), fe = e.countWhere(D, function(g) { + return g.kind !== 27; + }); + return !d && D.length > 0 && e.last(D).kind === 27 && fe++, fe; + } + function O(l, d, D, fe) { + return e.Debug.assert(D >= d.getStart(), "Assumed 'position' could not occur before node."), e.isTemplateLiteralToken(d) ? e.isInsideTemplateLiteral(d, D, fe) ? 0 : l + 2 : l + 1; + } + function ve(l, d, D) { + var fe = e.isNoSubstitutionTemplateLiteral(l.template) ? 1 : l.template.templateSpans.length + 1; + return d !== 0 && e.Debug.assertLessThan(d, fe), { isTypeParameterList: false, invocation: { kind: 0, node: l }, argumentsSpan: he(l, D), argumentIndex: d, argumentCount: fe }; + } + function ee(l, d) { + var D = l.getFullStart(), fe = e.skipTrivia(d.text, l.getEnd(), false); + return e.createTextSpan(D, fe - D); + } + function he(l, d) { + var D = l.template, fe = D.getStart(), g = D.getEnd(); + if (D.kind === 223) { + var ne = e.last(D.templateSpans); + ne.literal.getFullWidth() === 0 && (g = e.skipTrivia(d.text, g, false)); + } + return e.createTextSpan(fe, g - fe); + } + function F(l, d, D, fe, g) { + for (var ne = function(Fe) { + e.Debug.assert(e.rangeContainsRange(Fe.parent, Fe), "Not a subspan", function() { + return "Child: ".concat(e.Debug.formatSyntaxKind(Fe.kind), ", parent: ").concat(e.Debug.formatSyntaxKind(Fe.parent.kind)); + }); + var Z = T(Fe, d, D, fe); + if (Z) + return { value: Z }; + }, ue = l; !e.isSourceFile(ue) && (g || !e.isBlock(ue)); ue = ue.parent) { + var We = ne(ue); + if (typeof We == "object") + return We.value; + } + } + function x(l, d, D) { + var fe = l.getChildren(D), g = fe.indexOf(d); + return e.Debug.assert(g >= 0 && fe.length > g + 1), fe[g + 1]; + } + function X(l) { + return l.kind === 0 ? e.getInvokedExpression(l.node) : l.called; + } + function $(l) { + return l.kind === 0 ? l.node : l.kind === 1 ? l.called : l.node; + } + var A = 70246400; + function y(l, d, D, fe, g, ne) { + var ue, We = D.isTypeParameterList, Fe = D.argumentCount, Z = D.argumentsSpan, Be = D.invocation, ge = D.argumentIndex, Re = $(Be), ze = Be.kind === 2 ? Be.symbol : g.getSymbolAtLocation(X(Be)) || ne && ((ue = d.declaration) === null || ue === void 0 ? void 0 : ue.symbol), Ee = ze ? e.symbolToDisplayParts(g, ze, ne ? fe : void 0, void 0) : e.emptyArray, He = e.map(l, function(Br) { + return k(Br, Ee, We, g, Re, fe); + }); + ge !== 0 && e.Debug.assertLessThan(ge, Fe); + for (var rr = 0, Ie = 0, _e = 0; _e < He.length; _e++) { + var we = He[_e]; + if (l[_e] === d && (rr = Ie, we.length > 1)) + for (var de = 0, ye = 0, Ae = we; ye < Ae.length; ye++) { + var er = Ae[ye]; + if (er.isVariadic || er.parameters.length >= Fe) { + rr = Ie + de; + break; + } + de++; + } + Ie += we.length; + } + e.Debug.assert(rr !== -1); + var ir = { items: e.flatMapToMutable(He, e.identity), applicableSpan: Z, selectedItemIndex: rr, argumentIndex: ge, argumentCount: Fe }, Cr = ir.items[rr]; + if (Cr.isVariadic) { + var Ye = e.findIndex(Cr.parameters, function(Br) { + return !!Br.isRest; + }); + -1 < Ye && Ye < Cr.parameters.length - 1 ? ir.argumentIndex = Cr.parameters.length : ir.argumentIndex = Math.min(ir.argumentIndex, Cr.parameters.length - 1); + } + return ir; + } + function V(l, d, D, fe) { + var g = d.argumentCount, ne = d.argumentsSpan, ue = d.invocation, We = d.argumentIndex, Fe = fe.getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(l); + if (!!Fe) { + var Z = [L(l, Fe, fe, $(ue), D)]; + return { items: Z, applicableSpan: ne, selectedItemIndex: 0, argumentIndex: We, argumentCount: g }; + } + } + function L(l, d, D, fe, g) { + var ne = e.symbolToDisplayParts(D, l), ue = e.createPrinter({ removeComments: true }), We = d.map(function(ge) { + return I(ge, D, fe, g, ue); + }), Fe = l.getDocumentationComment(D), Z = l.getJsDocTags(D), Be = Ve(Ve([], ne, true), [e.punctuationPart(29)], false); + return { isVariadic: false, prefixDisplayParts: Be, suffixDisplayParts: [e.punctuationPart(31)], separatorDisplayParts: P, parameters: We, documentation: Fe, tags: Z }; + } + var P = [e.punctuationPart(27), e.spacePart()]; + function k(l, d, D, fe, g, ne) { + var ue = (D ? U : j)(l, fe, g, ne); + return e.map(ue, function(We) { + var Fe = We.isVariadic, Z = We.parameters, Be = We.prefix, ge = We.suffix, Re = Ve(Ve([], d, true), Be, true), ze = Ve(Ve([], ge, true), Y(l, g, fe), true), Ee = l.getDocumentationComment(fe), He = l.getJsDocTags(); + return { isVariadic: Fe, prefixDisplayParts: Re, suffixDisplayParts: ze, separatorDisplayParts: P, parameters: Z, documentation: Ee, tags: He }; + }); + } + function Y(l, d, D) { + return e.mapToDisplayParts(function(fe) { + fe.writePunctuation(":"), fe.writeSpace(" "); + var g = D.getTypePredicateOfSignature(l); + g ? D.writeTypePredicate(g, d, void 0, fe) : D.writeType(D.getReturnTypeOfSignature(l), d, void 0, fe); + }); + } + function U(l, d, D, fe) { + var g = (l.target || l).typeParameters, ne = e.createPrinter({ removeComments: true }), ue = (g || e.emptyArray).map(function(Fe) { + return I(Fe, d, D, fe, ne); + }), We = l.thisParameter ? [d.symbolToParameterDeclaration(l.thisParameter, D, A)] : []; + return d.getExpandedParameters(l).map(function(Fe) { + var Z = e.factory.createNodeArray(Ve(Ve([], We, true), e.map(Fe, function(ge) { + return d.symbolToParameterDeclaration(ge, D, A); + }), true)), Be = e.mapToDisplayParts(function(ge) { + ne.writeList(2576, Z, fe, ge); + }); + return { isVariadic: false, parameters: ue, prefix: [e.punctuationPart(29)], suffix: Ve([e.punctuationPart(31)], Be, true) }; + }); + } + function j(l, d, D, fe) { + var g = e.createPrinter({ removeComments: true }), ne = e.mapToDisplayParts(function(Fe) { + if (l.typeParameters && l.typeParameters.length) { + var Z = e.factory.createNodeArray(l.typeParameters.map(function(Be) { + return d.typeParameterToDeclaration(Be, D, A); + })); + g.writeList(53776, Z, fe, Fe); + } + }), ue = d.getExpandedParameters(l), We = d.hasEffectiveRestParameter(l) ? ue.length === 1 ? function(Fe) { + return true; + } : function(Fe) { + return !!(Fe.length && Fe[Fe.length - 1].checkFlags & 32768); + } : function(Fe) { + return false; + }; + return ue.map(function(Fe) { + return { isVariadic: We(Fe), parameters: Fe.map(function(Z) { + return H(Z, d, D, fe, g); + }), prefix: Ve(Ve([], ne, true), [e.punctuationPart(20)], false), suffix: [e.punctuationPart(21)] }; + }); + } + function H(l, d, D, fe, g) { + var ne = e.mapToDisplayParts(function(Fe) { + var Z = d.symbolToParameterDeclaration(l, D, A); + g.writeNode(4, Z, fe, Fe); + }), ue = d.isOptionalParameter(l.valueDeclaration), We = !!(l.checkFlags & 32768); + return { name: l.name, documentation: l.getDocumentationComment(d), displayParts: ne, isOptional: ue, isRest: We }; + } + function I(l, d, D, fe, g) { + var ne = e.mapToDisplayParts(function(ue) { + var We = d.typeParameterToDeclaration(l, D, A); + g.writeNode(4, We, fe, ue); + }); + return { name: l.symbol.name, documentation: l.symbol.getDocumentationComment(d), displayParts: ne, isOptional: false, isRest: false }; + } + })(a = e.SignatureHelp || (e.SignatureHelp = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = 30, B = function(N) { + return new RegExp("^\\s?/\\*\\*?\\s?".concat(N, "\\s?\\*\\/\\s?$")); + }; + function E(N) { + return N.includeInlayParameterNameHints === "literals" || N.includeInlayParameterNameHints === "all"; + } + function Q(N) { + return N.includeInlayParameterNameHints === "literals"; + } + function le(N) { + var p = N.file, m = N.program, G = N.span, oe = N.cancellationToken, f = N.preferences, T = p.text, K = m.getCompilerOptions(), b = m.getTypeChecker(), se = []; + return J(p), se; + function J(U) { + if (!(!U || U.getFullWidth() === 0)) { + switch (U.kind) { + case 261: + case 257: + case 258: + case 256: + case 226: + case 213: + case 169: + case 214: + oe.throwIfCancellationRequested(); + } + if (!!e.textSpanIntersectsWith(G, U.pos, U.getFullWidth()) && !e.isTypeNode(U)) + return f.includeInlayVariableTypeHints && e.isVariableDeclaration(U) || f.includeInlayPropertyDeclarationTypeHints && e.isPropertyDeclaration(U) ? he(U) : f.includeInlayEnumMemberValueHints && e.isEnumMember(U) ? ve(U) : E(f) && (e.isCallExpression(U) || e.isNewExpression(U)) ? F(U) : (f.includeInlayFunctionParameterTypeHints && e.isFunctionLikeDeclaration(U) && e.hasContextSensitiveParameters(U) && V(U), f.includeInlayFunctionLikeReturnTypeHints && ie(U) && A(U)), e.forEachChild(U, J); + } + } + function ie(U) { + return e.isArrowFunction(U) || e.isFunctionExpression(U) || e.isFunctionDeclaration(U) || e.isMethodDeclaration(U) || e.isGetAccessorDeclaration(U); + } + function R(U, j, H) { + se.push({ text: "".concat(H ? "..." : "").concat(P(U, w), ":"), position: j, kind: "Parameter", whitespaceAfter: true }); + } + function q(U, j) { + se.push({ text: ": ".concat(P(U, w)), position: j, kind: "Type", whitespaceBefore: true }); + } + function O(U, j) { + se.push({ text: "= ".concat(P(U, w)), position: j, kind: "Enum", whitespaceBefore: true }); + } + function ve(U) { + if (!U.initializer) { + var j = b.getConstantValue(U); + j !== void 0 && O(j.toString(), U.end); + } + } + function ee(U) { + return U.symbol && U.symbol.flags & 1536; + } + function he(U) { + if (!(!U.initializer || e.isBindingPattern(U.name))) { + var j = e.getEffectiveTypeAnnotationNode(U); + if (!j) { + var H = b.getTypeAtLocation(U); + if (!ee(H)) { + var I = k(H); + I && q(I, U.name.end); + } + } + } + } + function F(U) { + var j = U.arguments; + if (!(!j || !j.length)) { + var H = [], I = b.getResolvedSignatureForSignatureHelp(U, H); + if (!(!I || !H.length)) + for (var l = 0; l < j.length; ++l) { + var d = j[l], D = e.skipParentheses(d); + if (!(Q(f) && !$(D))) { + var fe = b.getParameterIdentifierNameAtPosition(I, l); + if (fe) { + var g = fe[0], ne = fe[1], ue = f.includeInlayParameterNameHintsWhenArgumentMatchesName || !x(D, g); + if (!ue && !ne) + continue; + var We = e.unescapeLeadingUnderscores(g); + if (X(D, We)) + continue; + R(We, d.getStart(), ne); + } + } + } + } + } + function x(U, j) { + return e.isIdentifier(U) ? U.text === j : e.isPropertyAccessExpression(U) ? U.name.text === j : false; + } + function X(U, j) { + if (!e.isIdentifierText(j, K.target, e.getLanguageVariant(p.scriptKind))) + return false; + var H = e.getLeadingCommentRanges(T, U.pos); + if (!(H != null && H.length)) + return false; + var I = B(j); + return e.some(H, function(l) { + return I.test(T.substring(l.pos, l.end)); + }); + } + function $(U) { + switch (U.kind) { + case 219: { + var j = U.operand; + return e.isLiteralExpression(j) || e.isIdentifier(j) && e.isInfinityOrNaNString(j.escapedText); + } + case 110: + case 95: + case 104: + case 14: + case 223: + return true; + case 79: { + var H = U.escapedText; + return Y(H) || e.isInfinityOrNaNString(H); + } + } + return e.isLiteralExpression(U); + } + function A(U) { + if (!(e.isArrowFunction(U) && !e.findChildOfKind(U, 20, p))) { + var j = e.getEffectiveReturnTypeNode(U); + if (!(j || !U.body)) { + var H = b.getSignatureFromDeclaration(U); + if (!!H) { + var I = b.getReturnTypeOfSignature(H); + if (!ee(I)) { + var l = k(I); + !l || q(l, y(U)); + } + } + } + } + } + function y(U) { + var j = e.findChildOfKind(U, 21, p); + return j ? j.end : U.parameters.end; + } + function V(U) { + var j = b.getSignatureFromDeclaration(U); + if (!!j) + for (var H = 0; H < U.parameters.length && H < j.parameters.length; ++H) { + var I = U.parameters[H], l = e.getEffectiveTypeAnnotationNode(I); + if (!l) { + var d = L(j.parameters[H]); + !d || q(d, I.questionToken ? I.questionToken.end : I.name.end); + } + } + } + function L(U) { + var j = U.valueDeclaration; + if (!(!j || !e.isParameter(j))) { + var H = b.getTypeOfSymbolAtLocation(U, j); + if (!ee(H)) + return k(H); + } + } + function P(U, j) { + return U.length > j ? U.substr(0, j - 3) + "..." : U; + } + function k(U) { + var j = 71286784, H = { removeComments: true }, I = e.createPrinter(H); + return e.usingSingleLineStringWriter(function(l) { + var d = b.typeToTypeNode(U, void 0, j, l); + e.Debug.assertIsDefined(d, "should always get typenode"), I.writeNode(4, d, p, l); + }); + } + function Y(U) { + return U === "undefined"; + } + } + C.provideInlayHints = le; + })(a = e.InlayHints || (e.InlayHints = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a = /^data:(?:application\/json(?:;charset=[uU][tT][fF]-8);base64,([A-Za-z0-9+\/=]+)$)?/; + function C(Q) { + var le = e.createGetCanonicalFileName(Q.useCaseSensitiveFileNames()), N = Q.getCurrentDirectory(), p = new e.Map(), m = new e.Map(); + return { tryGetSourcePosition: f, tryGetGeneratedPosition: T, toLineColumnOffset: J, clearCache: ie }; + function G(R) { + return e.toPath(R, N, le); + } + function oe(R, q) { + var O = G(R), ve = m.get(O); + if (ve) + return ve; + var ee; + if (Q.getDocumentPositionMapper) + ee = Q.getDocumentPositionMapper(R, q); + else if (Q.readFile) { + var he = se(R); + ee = he && e.getDocumentPositionMapper({ getSourceFileLike: se, getCanonicalFileName: le, log: function(F) { + return Q.log(F); + } }, R, e.getLineInfo(he.text, e.getLineStarts(he)), function(F) { + return !Q.fileExists || Q.fileExists(F) ? Q.readFile(F) : void 0; + }); + } + return m.set(O, ee || e.identitySourceMapConsumer), ee || e.identitySourceMapConsumer; + } + function f(R) { + if (!!e.isDeclarationFileName(R.fileName)) { + var q = K(R.fileName); + if (!!q) { + var O = oe(R.fileName).getSourcePosition(R); + return !O || O === R ? void 0 : f(O) || O; + } + } + } + function T(R) { + if (!e.isDeclarationFileName(R.fileName)) { + var q = K(R.fileName); + if (!!q) { + var O = Q.getProgram(); + if (!O.isSourceOfProjectReferenceRedirect(q.fileName)) { + var ve = O.getCompilerOptions(), ee = e.outFile(ve), he = ee ? e.removeFileExtension(ee) + ".d.ts" : e.getDeclarationEmitOutputFilePathWorker(R.fileName, O.getCompilerOptions(), N, O.getCommonSourceDirectory(), le); + if (he !== void 0) { + var F = oe(he, R.fileName).getGeneratedPosition(R); + return F === R ? void 0 : F; + } + } + } + } + } + function K(R) { + var q = Q.getProgram(); + if (!!q) { + var O = G(R), ve = q.getSourceFileByPath(O); + return ve && ve.resolvedPath === O ? ve : void 0; + } + } + function b(R) { + var q = G(R), O = p.get(q); + if (O !== void 0) + return O || void 0; + if (!Q.readFile || Q.fileExists && !Q.fileExists(q)) { + p.set(q, false); + return; + } + var ve = Q.readFile(q), ee = ve ? E(ve) : false; + return p.set(q, ee), ee || void 0; + } + function se(R) { + return Q.getSourceFileLike ? Q.getSourceFileLike(R) : K(R) || b(R); + } + function J(R, q) { + var O = se(R); + return O.getLineAndCharacterOfPosition(q); + } + function ie() { + p.clear(), m.clear(); + } + } + e.getSourceMapper = C; + function w(Q, le, N, p) { + var m = e.tryGetSourceMappingURL(N); + if (m) { + var G = a.exec(m); + if (G) { + if (G[1]) { + var oe = G[1]; + return B(Q, e.base64decode(e.sys, oe), le); + } + m = void 0; + } + } + var f = []; + m && f.push(m), f.push(le + ".map"); + for (var T = m && e.getNormalizedAbsolutePath(m, e.getDirectoryPath(le)), K = 0, b = f; K < b.length; K++) { + var se = b[K], J = e.getNormalizedAbsolutePath(se, e.getDirectoryPath(le)), ie = p(J, T); + if (e.isString(ie)) + return B(Q, ie, J); + if (ie !== void 0) + return ie || void 0; + } + } + e.getDocumentPositionMapper = w; + function B(Q, le, N) { + var p = e.tryParseRawSourceMap(le); + if (!(!p || !p.sources || !p.file || !p.mappings) && !(p.sourcesContent && p.sourcesContent.some(e.isString))) + return e.createDocumentPositionMapper(Q, p, N); + } + function E(Q, le) { + return { text: Q, lineMap: le, getLineAndCharacterOfPosition: function(N) { + return e.computeLineAndCharacterOfPosition(e.getLineStarts(this), N); + } }; + } + })(ke || (ke = {})); + var ke; + (function(e) { + var a = new e.Map(); + function C(ie, R, q) { + R.getSemanticDiagnostics(ie, q); + var O = [], ve = R.getTypeChecker(), ee = ie.impliedNodeFormat === e.ModuleKind.CommonJS || e.fileExtensionIsOneOf(ie.fileName, [".cts", ".cjs"]); + !ee && ie.commonJsModuleIndicator && (e.programContainsEsModules(R) || e.compilerOptionsIndicateEsModules(R.getCompilerOptions())) && w(ie) && O.push(e.createDiagnosticForNode(p(ie.commonJsModuleIndicator), e.Diagnostics.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module)); + var he = e.isSourceFileJS(ie); + if (a.clear(), L(ie), e.getAllowSyntheticDefaultImports(R.getCompilerOptions())) + for (var F = 0, x = ie.imports; F < x.length; F++) { + var X = x[F], $ = e.importFromModuleSpecifier(X), A = E($); + if (!!A) { + var y = e.getResolvedModule(ie, X.text, e.getModeForUsageLocation(ie, X)), V = y && R.getSourceFile(y.resolvedFileName); + V && V.externalModuleIndicator && V.externalModuleIndicator !== true && e.isExportAssignment(V.externalModuleIndicator) && V.externalModuleIndicator.isExportEquals && O.push(e.createDiagnosticForNode(A, e.Diagnostics.Import_may_be_converted_to_a_default_import)); + } + } + return e.addRange(O, ie.bindSuggestionDiagnostics), e.addRange(O, R.getSuggestionDiagnostics(ie, q)), O.sort(function(P, k) { + return P.start - k.start; + }); + function L(P) { + if (he) + se(P, ve) && O.push(e.createDiagnosticForNode(e.isVariableDeclaration(P.parent) ? P.parent.name : P, e.Diagnostics.This_constructor_function_may_be_converted_to_a_class_declaration)); + else { + if (e.isVariableStatement(P) && P.parent === ie && P.declarationList.flags & 2 && P.declarationList.declarations.length === 1) { + var k = P.declarationList.declarations[0].initializer; + k && e.isRequireCall(k, true) && O.push(e.createDiagnosticForNode(k, e.Diagnostics.require_call_may_be_converted_to_an_import)); + } + e.codefix.parameterShouldGetTypeFromJSDoc(P) && O.push(e.createDiagnosticForNode(P.name || P, e.Diagnostics.JSDoc_types_may_be_moved_to_TypeScript_types)); + } + J(P) && Q(P, ve, O), P.forEachChild(L); + } + } + e.computeSuggestionDiagnostics = C; + function w(ie) { + return ie.statements.some(function(R) { + switch (R.kind) { + case 237: + return R.declarationList.declarations.some(function(ve) { + return !!ve.initializer && e.isRequireCall(B(ve.initializer), true); + }); + case 238: { + var q = R.expression; + if (!e.isBinaryExpression(q)) + return e.isRequireCall(q, true); + var O = e.getAssignmentDeclarationKind(q); + return O === 1 || O === 2; + } + default: + return false; + } + }); + } + function B(ie) { + return e.isPropertyAccessExpression(ie) ? B(ie.expression) : ie; + } + function E(ie) { + switch (ie.kind) { + case 266: + var R = ie.importClause, q = ie.moduleSpecifier; + return R && !R.name && R.namedBindings && R.namedBindings.kind === 268 && e.isStringLiteral(q) ? R.namedBindings.name : void 0; + case 265: + return ie.name; + default: + return; + } + } + function Q(ie, R, q) { + le(ie, R) && !a.has(b(ie)) && q.push(e.createDiagnosticForNode(!ie.name && e.isVariableDeclaration(ie.parent) && e.isIdentifier(ie.parent.name) ? ie.parent.name : ie, e.Diagnostics.This_may_be_converted_to_an_async_function)); + } + function le(ie, R) { + return !e.isAsyncFunction(ie) && ie.body && e.isBlock(ie.body) && m(ie.body, R) && N(ie, R); + } + function N(ie, R) { + var q = R.getSignatureFromDeclaration(ie), O = q ? R.getReturnTypeOfSignature(q) : void 0; + return !!O && !!R.getPromisedTypeOfPromise(O); + } + e.returnsPromise = N; + function p(ie) { + return e.isBinaryExpression(ie) ? ie.left : ie; + } + function m(ie, R) { + return !!e.forEachReturnStatement(ie, function(q) { + return G(q, R); + }); + } + function G(ie, R) { + return e.isReturnStatement(ie) && !!ie.expression && oe(ie.expression, R); + } + e.isReturnStatementWithFixablePromiseHandler = G; + function oe(ie, R) { + if (!f(ie) || !T(ie) || !ie.arguments.every(function(O) { + return K(O, R); + })) + return false; + for (var q = ie.expression.expression; f(q) || e.isPropertyAccessExpression(q); ) + if (e.isCallExpression(q)) { + if (!T(q) || !q.arguments.every(function(O) { + return K(O, R); + })) + return false; + q = q.expression.expression; + } else + q = q.expression; + return true; + } + e.isFixablePromiseHandler = oe; + function f(ie) { + return e.isCallExpression(ie) && (e.hasPropertyAccessExpressionWithName(ie, "then") || e.hasPropertyAccessExpressionWithName(ie, "catch") || e.hasPropertyAccessExpressionWithName(ie, "finally")); + } + function T(ie) { + var R = ie.expression.name.text, q = R === "then" ? 2 : R === "catch" || R === "finally" ? 1 : 0; + return ie.arguments.length > q ? false : ie.arguments.length < q ? true : q === 1 || e.some(ie.arguments, function(O) { + return O.kind === 104 || e.isIdentifier(O) && O.text === "undefined"; + }); + } + function K(ie, R) { + switch (ie.kind) { + case 256: + case 213: + var q = e.getFunctionFlags(ie); + if (q & 1) + return false; + case 214: + a.set(b(ie), true); + case 104: + return true; + case 79: + case 206: { + var O = R.getSymbolAtLocation(ie); + return O ? R.isUndefinedSymbol(O) || e.some(e.skipAlias(O, R).declarations, function(ve) { + return e.isFunctionLike(ve) || e.hasInitializer(ve) && !!ve.initializer && e.isFunctionLike(ve.initializer); + }) : false; + } + default: + return false; + } + } + function b(ie) { + return "".concat(ie.pos.toString(), ":").concat(ie.end.toString()); + } + function se(ie, R) { + var q, O, ve, ee; + if (ie.kind === 213) { + if (e.isVariableDeclaration(ie.parent) && ((q = ie.symbol.members) === null || q === void 0 ? void 0 : q.size)) + return true; + var he = R.getSymbolOfExpando(ie, false); + return !!(he && (((O = he.exports) === null || O === void 0 ? void 0 : O.size) || ((ve = he.members) === null || ve === void 0 ? void 0 : ve.size))); + } + return ie.kind === 256 ? !!(!((ee = ie.symbol.members) === null || ee === void 0) && ee.size) : false; + } + function J(ie) { + switch (ie.kind) { + case 256: + case 169: + case 213: + case 214: + return true; + default: + return false; + } + } + e.canBeConvertedToAsync = J; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = 70246400; + function B(m, G, oe) { + var f = E(m, G, oe); + if (f !== "") + return f; + var T = e.getCombinedLocalAndExportSymbolFlags(G); + return T & 32 ? e.getDeclarationOfKind(G, 226) ? "local class" : "class" : T & 384 ? "enum" : T & 524288 ? "type" : T & 64 ? "interface" : T & 262144 ? "type parameter" : T & 8 ? "enum member" : T & 2097152 ? "alias" : T & 1536 ? "module" : f; + } + C.getSymbolKind = B; + function E(m, G, oe) { + var f = m.getRootSymbols(G); + if (f.length === 1 && e.first(f).flags & 8192 && m.getTypeOfSymbolAtLocation(G, oe).getNonNullableType().getCallSignatures().length !== 0) + return "method"; + if (m.isUndefinedSymbol(G)) + return "var"; + if (m.isArgumentsSymbol(G)) + return "local var"; + if (oe.kind === 108 && e.isExpression(oe) || e.isThisInTypeQuery(oe)) + return "parameter"; + var T = e.getCombinedLocalAndExportSymbolFlags(G); + if (T & 3) + return e.isFirstDeclarationOfSymbolParameter(G) ? "parameter" : G.valueDeclaration && e.isVarConst(G.valueDeclaration) ? "const" : e.forEach(G.declarations, e.isLet) ? "let" : p(G) ? "local var" : "var"; + if (T & 16) + return p(G) ? "local function" : "function"; + if (T & 32768) + return "getter"; + if (T & 65536) + return "setter"; + if (T & 8192) + return "method"; + if (T & 16384) + return "constructor"; + if (T & 4) { + if (T & 33554432 && G.checkFlags & 6) { + var K = e.forEach(m.getRootSymbols(G), function(se) { + var J = se.getFlags(); + if (J & 98311) + return "property"; + }); + if (!K) { + var b = m.getTypeOfSymbolAtLocation(G, oe); + return b.getCallSignatures().length ? "method" : "property"; + } + return K; + } + return "property"; + } + return ""; + } + function Q(m) { + if (m.declarations && m.declarations.length) { + var G = m.declarations, oe = G[0], f = G.slice(1), T = e.length(f) && e.isDeprecatedDeclaration(oe) && e.some(f, function(b) { + return !e.isDeprecatedDeclaration(b); + }) ? 8192 : 0, K = e.getNodeModifiers(oe, T); + if (K) + return K.split(","); + } + return []; + } + function le(m, G) { + if (!G) + return ""; + var oe = new e.Set(Q(G)); + if (G.flags & 2097152) { + var f = m.getAliasedSymbol(G); + f !== G && e.forEach(Q(f), function(T) { + oe.add(T); + }); + } + return G.flags & 16777216 && oe.add("optional"), oe.size > 0 ? e.arrayFrom(oe.values()).join(",") : ""; + } + C.getSymbolModifiers = le; + function N(m, G, oe, f, T, K, b) { + var se; + K === void 0 && (K = e.getMeaningFromLocation(T)); + var J = [], ie = [], R = [], q = e.getCombinedLocalAndExportSymbolFlags(G), O = K & 1 ? E(m, G, T) : "", ve = false, ee = T.kind === 108 && e.isInExpressionContext(T) || e.isThisInTypeQuery(T), he, F, x, X, $ = false; + if (T.kind === 108 && !ee) + return { displayParts: [e.keywordPart(108)], documentation: [], symbolKind: "primitive type", tags: void 0 }; + if (O !== "" || q & 32 || q & 2097152) { + if (O === "getter" || O === "setter") { + var A = e.find(G.declarations, function(er) { + return er.name === T; + }); + if (A) + switch (A.kind) { + case 172: + O = "getter"; + break; + case 173: + O = "setter"; + break; + default: + e.Debug.assertNever(A); + } + else + O = "property"; + } + var y = void 0; + if (he = ee ? m.getTypeAtLocation(T) : m.getTypeOfSymbolAtLocation(G, T), T.parent && T.parent.kind === 206) { + var V = T.parent.name; + (V === T || V && V.getFullWidth() === 0) && (T = T.parent); + } + var L = void 0; + if (e.isCallOrNewExpression(T) ? L = T : (e.isCallExpressionTarget(T) || e.isNewExpressionTarget(T) || T.parent && (e.isJsxOpeningLikeElement(T.parent) || e.isTaggedTemplateExpression(T.parent)) && e.isFunctionLike(G.valueDeclaration)) && (L = T.parent), L) { + y = m.getResolvedSignature(L); + var P = L.kind === 209 || e.isCallExpression(L) && L.expression.kind === 106, k = P ? he.getConstructSignatures() : he.getCallSignatures(); + if (y && !e.contains(k, y.target) && !e.contains(k, y) && (y = k.length ? k[0] : void 0), y) { + switch (P && q & 32 ? (O = "constructor", we(he.symbol, O)) : q & 2097152 ? (O = "alias", de(O), J.push(e.spacePart()), P && (y.flags & 4 && (J.push(e.keywordPart(126)), J.push(e.spacePart())), J.push(e.keywordPart(103)), J.push(e.spacePart())), _e(G)) : we(G, O), O) { + case "JSX attribute": + case "property": + case "var": + case "const": + case "let": + case "parameter": + case "local var": + J.push(e.punctuationPart(58)), J.push(e.spacePart()), !(e.getObjectFlags(he) & 16) && he.symbol && (e.addRange(J, e.symbolToDisplayParts(m, he.symbol, f, void 0, 5)), J.push(e.lineBreakPart())), P && (y.flags & 4 && (J.push(e.keywordPart(126)), J.push(e.spacePart())), J.push(e.keywordPart(103)), J.push(e.spacePart())), ye(y, k, 262144); + break; + default: + ye(y, k); + } + ve = true, $ = k.length > 1; + } + } else if (e.isNameOfFunctionDeclaration(T) && !(q & 98304) || T.kind === 134 && T.parent.kind === 171) { + var Y = T.parent, U = G.declarations && e.find(G.declarations, function(er) { + return er === (T.kind === 134 ? Y.parent : Y); + }); + if (U) { + var k = Y.kind === 171 ? he.getNonNullableType().getConstructSignatures() : he.getNonNullableType().getCallSignatures(); + m.isImplementationOfOverload(Y) ? y = k[0] : y = m.getSignatureFromDeclaration(Y), Y.kind === 171 ? (O = "constructor", we(he.symbol, O)) : we(Y.kind === 174 && !(he.symbol.flags & 2048 || he.symbol.flags & 4096) ? he.symbol : G, O), y && ye(y, k), ve = true, $ = k.length > 1; + } + } + } + if (q & 32 && !ve && !ee && (rr(), e.getDeclarationOfKind(G, 226) ? de("local class") : J.push(e.keywordPart(84)), J.push(e.spacePart()), _e(G), Ae(G, oe)), q & 64 && K & 2 && (He(), J.push(e.keywordPart(118)), J.push(e.spacePart()), _e(G), Ae(G, oe)), q & 524288 && K & 2 && (He(), J.push(e.keywordPart(152)), J.push(e.spacePart()), _e(G), Ae(G, oe), J.push(e.spacePart()), J.push(e.operatorPart(63)), J.push(e.spacePart()), e.addRange(J, e.typeToDisplayParts(m, e.isConstTypeReference(T.parent) ? m.getTypeAtLocation(T.parent) : m.getDeclaredTypeOfSymbol(G), f, 8388608))), q & 384 && (He(), e.some(G.declarations, function(er) { + return e.isEnumDeclaration(er) && e.isEnumConst(er); + }) && (J.push(e.keywordPart(85)), J.push(e.spacePart())), J.push(e.keywordPart(92)), J.push(e.spacePart()), _e(G)), q & 1536 && !ee) { + He(); + var A = e.getDeclarationOfKind(G, 261), j = A && A.name && A.name.kind === 79; + J.push(e.keywordPart(j ? 142 : 141)), J.push(e.spacePart()), _e(G); + } + if (q & 262144 && K & 2) + if (He(), J.push(e.punctuationPart(20)), J.push(e.textPart("type parameter")), J.push(e.punctuationPart(21)), J.push(e.spacePart()), _e(G), G.parent) + Ie(), _e(G.parent, f), Ae(G.parent, f); + else { + var H = e.getDeclarationOfKind(G, 163); + if (H === void 0) + return e.Debug.fail(); + var A = H.parent; + if (A) + if (e.isFunctionLikeKind(A.kind)) { + Ie(); + var y = m.getSignatureFromDeclaration(A); + A.kind === 175 ? (J.push(e.keywordPart(103)), J.push(e.spacePart())) : A.kind !== 174 && A.name && _e(A.symbol), e.addRange(J, e.signatureToDisplayParts(m, y, oe, 32)); + } else + A.kind === 259 && (Ie(), J.push(e.keywordPart(152)), J.push(e.spacePart()), _e(A.symbol), Ae(A.symbol, oe)); + } + if (q & 8) { + O = "enum member", we(G, "enum member"); + var A = (se = G.declarations) === null || se === void 0 ? void 0 : se[0]; + if ((A == null ? void 0 : A.kind) === 299) { + var I = m.getConstantValue(A); + I !== void 0 && (J.push(e.spacePart()), J.push(e.operatorPart(63)), J.push(e.spacePart()), J.push(e.displayPart(e.getTextOfConstantValue(I), typeof I == "number" ? e.SymbolDisplayPartKind.numericLiteral : e.SymbolDisplayPartKind.stringLiteral))); + } + } + if (G.flags & 2097152) { + if (He(), !ve) { + var l = m.getAliasedSymbol(G); + if (l !== G && l.declarations && l.declarations.length > 0) { + var d = l.declarations[0], D = e.getNameOfDeclaration(d); + if (D) { + var fe = e.isModuleWithStringLiteralName(d) && e.hasSyntacticModifier(d, 2), g = G.name !== "default" && !fe, ne = N(m, l, e.getSourceFileOfNode(d), d, D, K, g ? G : l); + J.push.apply(J, ne.displayParts), J.push(e.lineBreakPart()), x = ne.documentation, X = ne.tags; + } else + x = l.getContextualDocumentationComment(d, m), X = l.getJsDocTags(m); + } + } + if (G.declarations) + switch (G.declarations[0].kind) { + case 264: + J.push(e.keywordPart(93)), J.push(e.spacePart()), J.push(e.keywordPart(142)); + break; + case 271: + J.push(e.keywordPart(93)), J.push(e.spacePart()), J.push(e.keywordPart(G.declarations[0].isExportEquals ? 63 : 88)); + break; + case 275: + J.push(e.keywordPart(93)); + break; + default: + J.push(e.keywordPart(100)); + } + J.push(e.spacePart()), _e(G), e.forEach(G.declarations, function(er) { + if (er.kind === 265) { + var ir = er; + if (e.isExternalModuleImportEqualsDeclaration(ir)) + J.push(e.spacePart()), J.push(e.operatorPart(63)), J.push(e.spacePart()), J.push(e.keywordPart(146)), J.push(e.punctuationPart(20)), J.push(e.displayPart(e.getTextOfNode(e.getExternalModuleImportEqualsDeclarationExpression(ir)), e.SymbolDisplayPartKind.stringLiteral)), J.push(e.punctuationPart(21)); + else { + var Cr = m.getSymbolAtLocation(ir.moduleReference); + Cr && (J.push(e.spacePart()), J.push(e.operatorPart(63)), J.push(e.spacePart()), _e(Cr, f)); + } + return true; + } + }); + } + if (!ve) + if (O !== "") { + if (he) { + if (ee ? (He(), J.push(e.keywordPart(108))) : we(G, O), O === "property" || O === "getter" || O === "setter" || O === "JSX attribute" || q & 3 || O === "local var" || ee) { + if (J.push(e.punctuationPart(58)), J.push(e.spacePart()), he.symbol && he.symbol.flags & 262144) { + var ue = e.mapToDisplayParts(function(er) { + var ir = m.typeParameterToDeclaration(he, f, w); + Ee().writeNode(4, ir, e.getSourceFileOfNode(e.getParseTreeNode(f)), er); + }); + e.addRange(J, ue); + } else + e.addRange(J, e.typeToDisplayParts(m, he, f)); + if (G.target && G.target.tupleLabelDeclaration) { + var We = G.target.tupleLabelDeclaration; + e.Debug.assertNode(We.name, e.isIdentifier), J.push(e.spacePart()), J.push(e.punctuationPart(20)), J.push(e.textPart(e.idText(We.name))), J.push(e.punctuationPart(21)); + } + } else if (q & 16 || q & 8192 || q & 16384 || q & 131072 || q & 98304 || O === "method") { + var k = he.getNonNullableType().getCallSignatures(); + k.length && (ye(k[0], k), $ = k.length > 1); + } + } + } else + O = B(m, G, T); + if (ie.length === 0 && !$ && (ie = G.getContextualDocumentationComment(f, m)), ie.length === 0 && q & 4 && G.parent && G.declarations && e.forEach(G.parent.declarations, function(er) { + return er.kind === 305; + })) + for (var Fe = 0, Z = G.declarations; Fe < Z.length; Fe++) { + var A = Z[Fe]; + if (!(!A.parent || A.parent.kind !== 221)) { + var Be = m.getSymbolAtLocation(A.parent.right); + if (!!Be && (ie = Be.getDocumentationComment(m), R = Be.getJsDocTags(m), ie.length > 0)) + break; + } + } + if (ie.length === 0 && e.isIdentifier(T) && G.valueDeclaration && e.isBindingElement(G.valueDeclaration)) { + var A = G.valueDeclaration, ge = A.parent; + if (e.isIdentifier(A.name) && e.isObjectBindingPattern(ge)) { + var Re = e.getTextOfIdentifierOrLiteral(A.name), ze = m.getTypeAtLocation(ge); + ie = e.firstDefined(ze.isUnion() ? ze.types : [ze], function(ir) { + var Cr = ir.getProperty(Re); + return Cr ? Cr.getDocumentationComment(m) : void 0; + }) || e.emptyArray; + } + } + return R.length === 0 && !$ && (R = G.getContextualJsDocTags(f, m)), ie.length === 0 && x && (ie = x), R.length === 0 && X && (R = X), { displayParts: J, documentation: ie, symbolKind: O, tags: R.length === 0 ? void 0 : R }; + function Ee() { + return F || (F = e.createPrinter({ removeComments: true })), F; + } + function He() { + J.length && J.push(e.lineBreakPart()), rr(); + } + function rr() { + b && (de("alias"), J.push(e.spacePart())); + } + function Ie() { + J.push(e.spacePart()), J.push(e.keywordPart(101)), J.push(e.spacePart()); + } + function _e(er, ir) { + b && er === G && (er = b); + var Cr = e.symbolToDisplayParts(m, er, ir || oe, void 0, 7); + e.addRange(J, Cr), G.flags & 16777216 && J.push(e.punctuationPart(57)); + } + function we(er, ir) { + He(), ir && (de(ir), er && !e.some(er.declarations, function(Cr) { + return e.isArrowFunction(Cr) || (e.isFunctionExpression(Cr) || e.isClassExpression(Cr)) && !Cr.name; + }) && (J.push(e.spacePart()), _e(er))); + } + function de(er) { + switch (er) { + case "var": + case "function": + case "let": + case "const": + case "constructor": + J.push(e.textOrKeywordPart(er)); + return; + default: + J.push(e.punctuationPart(20)), J.push(e.textOrKeywordPart(er)), J.push(e.punctuationPart(21)); + return; + } + } + function ye(er, ir, Cr) { + Cr === void 0 && (Cr = 0), e.addRange(J, e.signatureToDisplayParts(m, er, f, Cr | 32)), ir.length > 1 && (J.push(e.spacePart()), J.push(e.punctuationPart(20)), J.push(e.operatorPart(39)), J.push(e.displayPart((ir.length - 1).toString(), e.SymbolDisplayPartKind.numericLiteral)), J.push(e.spacePart()), J.push(e.textPart(ir.length === 2 ? "overload" : "overloads")), J.push(e.punctuationPart(21))), ie = er.getDocumentationComment(m), R = er.getJsDocTags(), ir.length > 1 && ie.length === 0 && R.length === 0 && (ie = ir[0].getDocumentationComment(m), R = ir[0].getJsDocTags()); + } + function Ae(er, ir) { + var Cr = e.mapToDisplayParts(function(Ye) { + var Br = m.symbolToTypeParameterDeclarations(er, ir, w); + Ee().writeList(53776, Br, e.getSourceFileOfNode(e.getParseTreeNode(ir)), Ye); + }); + e.addRange(J, Cr); + } + } + C.getSymbolDisplayPartsDocumentationAndSymbolKind = N; + function p(m) { + return m.parent ? false : e.forEach(m.declarations, function(G) { + if (G.kind === 213) + return true; + if (G.kind !== 254 && G.kind !== 256) + return false; + for (var oe = G.parent; !e.isFunctionBlock(oe); oe = oe.parent) + if (oe.kind === 305 || oe.kind === 262) + return false; + return true; + }); + } + })(a = e.SymbolDisplay || (e.SymbolDisplay = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + function a(E, Q) { + var le = [], N = Q.compilerOptions ? B(Q.compilerOptions, le) : {}, p = e.getDefaultCompilerOptions(); + for (var m in p) + e.hasProperty(p, m) && N[m] === void 0 && (N[m] = p[m]); + for (var G = 0, oe = e.transpileOptionValueCompilerOptions; G < oe.length; G++) { + var f = oe[G]; + N[f.name] = f.transpileOptionValue; + } + N.suppressOutputPathCheck = true, N.allowNonTsExtensions = true; + var T = e.getNewLineCharacter(N), K = { getSourceFile: function(q) { + return q === e.normalizePath(b) ? se : void 0; + }, writeFile: function(q, O) { + e.fileExtensionIs(q, ".map") ? (e.Debug.assertEqual(ie, void 0, "Unexpected multiple source map outputs, file:", q), ie = O) : (e.Debug.assertEqual(J, void 0, "Unexpected multiple outputs, file:", q), J = O); + }, getDefaultLibFileName: function() { + return "lib.d.ts"; + }, useCaseSensitiveFileNames: function() { + return false; + }, getCanonicalFileName: function(q) { + return q; + }, getCurrentDirectory: function() { + return ""; + }, getNewLine: function() { + return T; + }, fileExists: function(q) { + return q === b; + }, readFile: function() { + return ""; + }, directoryExists: function() { + return true; + }, getDirectories: function() { + return []; + } }, b = Q.fileName || (Q.compilerOptions && Q.compilerOptions.jsx ? "module.tsx" : "module.ts"), se = e.createSourceFile(b, E, { languageVersion: e.getEmitScriptTarget(N), impliedNodeFormat: e.getImpliedNodeFormatForFile(e.toPath(b, "", K.getCanonicalFileName), void 0, K, N), setExternalModuleIndicator: e.getSetExternalModuleIndicator(N) }); + Q.moduleName && (se.moduleName = Q.moduleName), Q.renamedDependencies && (se.renamedDependencies = new e.Map(e.getEntries(Q.renamedDependencies))); + var J, ie, R = e.createProgram([b], N, K); + return Q.reportDiagnostics && (e.addRange(le, R.getSyntacticDiagnostics(se)), e.addRange(le, R.getOptionsDiagnostics())), R.emit(void 0, void 0, void 0, void 0, Q.transformers), J === void 0 ? e.Debug.fail("Output generation failed") : { outputText: J, diagnostics: le, sourceMapText: ie }; + } + e.transpileModule = a; + function C(E, Q, le, N, p) { + var m = a(E, { compilerOptions: Q, fileName: le, reportDiagnostics: !!N, moduleName: p }); + return e.addRange(N, m.diagnostics), m.outputText; + } + e.transpile = C; + var w; + function B(E, Q) { + w = w || e.filter(e.optionDeclarations, function(G) { + return typeof G.type == "object" && !e.forEachEntry(G.type, function(oe) { + return typeof oe != "number"; + }); + }), E = e.cloneCompilerOptions(E); + for (var le = function(G) { + if (!e.hasProperty(E, G.name)) + return "continue"; + var oe = E[G.name]; + e.isString(oe) ? E[G.name] = e.parseCustomTypeOption(G, oe, Q) : e.forEachEntry(G.type, function(f) { + return f === oe; + }) || Q.push(e.createCompilerDiagnosticForInvalidCustomType(G)); + }, N = 0, p = w; N < p.length; N++) { + var m = p[N]; + le(m); + } + return E; + } + e.fixupCompilerOptions = B; + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(E) { + E[E.FormatDocument = 0] = "FormatDocument", E[E.FormatSelection = 1] = "FormatSelection", E[E.FormatOnEnter = 2] = "FormatOnEnter", E[E.FormatOnSemicolon = 3] = "FormatOnSemicolon", E[E.FormatOnOpeningCurlyBrace = 4] = "FormatOnOpeningCurlyBrace", E[E.FormatOnClosingCurlyBrace = 5] = "FormatOnClosingCurlyBrace"; + })(w = C.FormattingRequestKind || (C.FormattingRequestKind = {})); + var B = function() { + function E(Q, le, N) { + this.sourceFile = Q, this.formattingRequestKind = le, this.options = N; + } + return E.prototype.updateContext = function(Q, le, N, p, m) { + this.currentTokenSpan = e.Debug.checkDefined(Q), this.currentTokenParent = e.Debug.checkDefined(le), this.nextTokenSpan = e.Debug.checkDefined(N), this.nextTokenParent = e.Debug.checkDefined(p), this.contextNode = e.Debug.checkDefined(m), this.contextNodeAllOnSameLine = void 0, this.nextNodeAllOnSameLine = void 0, this.tokensAreOnSameLine = void 0, this.contextNodeBlockIsOnOneLine = void 0, this.nextNodeBlockIsOnOneLine = void 0; + }, E.prototype.ContextNodeAllOnSameLine = function() { + return this.contextNodeAllOnSameLine === void 0 && (this.contextNodeAllOnSameLine = this.NodeIsOnOneLine(this.contextNode)), this.contextNodeAllOnSameLine; + }, E.prototype.NextNodeAllOnSameLine = function() { + return this.nextNodeAllOnSameLine === void 0 && (this.nextNodeAllOnSameLine = this.NodeIsOnOneLine(this.nextTokenParent)), this.nextNodeAllOnSameLine; + }, E.prototype.TokensAreOnSameLine = function() { + if (this.tokensAreOnSameLine === void 0) { + var Q = this.sourceFile.getLineAndCharacterOfPosition(this.currentTokenSpan.pos).line, le = this.sourceFile.getLineAndCharacterOfPosition(this.nextTokenSpan.pos).line; + this.tokensAreOnSameLine = Q === le; + } + return this.tokensAreOnSameLine; + }, E.prototype.ContextNodeBlockIsOnOneLine = function() { + return this.contextNodeBlockIsOnOneLine === void 0 && (this.contextNodeBlockIsOnOneLine = this.BlockIsOnOneLine(this.contextNode)), this.contextNodeBlockIsOnOneLine; + }, E.prototype.NextNodeBlockIsOnOneLine = function() { + return this.nextNodeBlockIsOnOneLine === void 0 && (this.nextNodeBlockIsOnOneLine = this.BlockIsOnOneLine(this.nextTokenParent)), this.nextNodeBlockIsOnOneLine; + }, E.prototype.NodeIsOnOneLine = function(Q) { + var le = this.sourceFile.getLineAndCharacterOfPosition(Q.getStart(this.sourceFile)).line, N = this.sourceFile.getLineAndCharacterOfPosition(Q.getEnd()).line; + return le === N; + }, E.prototype.BlockIsOnOneLine = function(Q) { + var le = e.findChildOfKind(Q, 18, this.sourceFile), N = e.findChildOfKind(Q, 19, this.sourceFile); + if (le && N) { + var p = this.sourceFile.getLineAndCharacterOfPosition(le.getEnd()).line, m = this.sourceFile.getLineAndCharacterOfPosition(N.getStart(this.sourceFile)).line; + return p === m; + } + return false; + }, E; + }(); + C.FormattingContext = B; + })(a = e.formatting || (e.formatting = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = e.createScanner(99, false, 0), B = e.createScanner(99, false, 1), E; + (function(le) { + le[le.Scan = 0] = "Scan", le[le.RescanGreaterThanToken = 1] = "RescanGreaterThanToken", le[le.RescanSlashToken = 2] = "RescanSlashToken", le[le.RescanTemplateToken = 3] = "RescanTemplateToken", le[le.RescanJsxIdentifier = 4] = "RescanJsxIdentifier", le[le.RescanJsxText = 5] = "RescanJsxText", le[le.RescanJsxAttributeValue = 6] = "RescanJsxAttributeValue"; + })(E || (E = {})); + function Q(le, N, p, m, G) { + var oe = N === 1 ? B : w; + oe.setText(le), oe.setTextPos(p); + var f = true, T, K, b, se, J, ie = G({ advance: R, readTokenInfo: X, readEOFTokenRange: A, isOnToken: y, isOnEOF: V, getCurrentLeadingTrivia: function() { + return T; + }, lastTrailingTriviaWasNewLine: function() { + return f; + }, skipToEndOf: P, skipToStartOf: k, getStartPos: function() { + var Y; + return (Y = J == null ? void 0 : J.token.pos) !== null && Y !== void 0 ? Y : oe.getTokenPos(); + } }); + return J = void 0, oe.setText(void 0), ie; + function R() { + J = void 0; + var Y = oe.getStartPos() !== p; + Y ? f = !!K && e.last(K).kind === 4 : oe.scan(), T = void 0, K = void 0; + for (var U = oe.getStartPos(); U < m; ) { + var j = oe.getToken(); + if (!e.isTrivia(j)) + break; + oe.scan(); + var H = { pos: U, end: oe.getStartPos(), kind: j }; + U = oe.getStartPos(), T = e.append(T, H); + } + b = oe.getStartPos(); + } + function q(Y) { + switch (Y.kind) { + case 33: + case 71: + case 72: + case 49: + case 48: + return true; + } + return false; + } + function O(Y) { + if (Y.parent) + switch (Y.parent.kind) { + case 285: + case 280: + case 281: + case 279: + return e.isKeyword(Y.kind) || Y.kind === 79; + } + return false; + } + function ve(Y) { + return e.isJsxText(Y); + } + function ee(Y) { + return Y.kind === 13; + } + function he(Y) { + return Y.kind === 16 || Y.kind === 17; + } + function F(Y) { + return Y.parent && e.isJsxAttribute(Y.parent) && Y.parent.initializer === Y; + } + function x(Y) { + return Y === 43 || Y === 68; + } + function X(Y) { + e.Debug.assert(y()); + var U = q(Y) ? 1 : ee(Y) ? 2 : he(Y) ? 3 : O(Y) ? 4 : ve(Y) ? 5 : F(Y) ? 6 : 0; + if (J && U === se) + return L(J, Y); + oe.getStartPos() !== b && (e.Debug.assert(J !== void 0), oe.setTextPos(b), oe.scan()); + var j = $(Y, U), H = C.createTextRangeWithKind(oe.getStartPos(), oe.getTextPos(), j); + for (K && (K = void 0); oe.getStartPos() < m && (j = oe.scan(), !!e.isTrivia(j)); ) { + var I = C.createTextRangeWithKind(oe.getStartPos(), oe.getTextPos(), j); + if (K || (K = []), K.push(I), j === 4) { + oe.scan(); + break; + } + } + return J = { leadingTrivia: T, trailingTrivia: K, token: H }, L(J, Y); + } + function $(Y, U) { + var j = oe.getToken(); + switch (se = 0, U) { + case 1: + if (j === 31) { + se = 1; + var H = oe.reScanGreaterToken(); + return e.Debug.assert(Y.kind === H), H; + } + break; + case 2: + if (x(j)) { + se = 2; + var H = oe.reScanSlashToken(); + return e.Debug.assert(Y.kind === H), H; + } + break; + case 3: + if (j === 19) + return se = 3, oe.reScanTemplateToken(false); + break; + case 4: + return se = 4, oe.scanJsxIdentifier(); + case 5: + return se = 5, oe.reScanJsxToken(false); + case 6: + return se = 6, oe.reScanJsxAttributeValue(); + case 0: + break; + default: + e.Debug.assertNever(U); + } + return j; + } + function A() { + return e.Debug.assert(V()), C.createTextRangeWithKind(oe.getStartPos(), oe.getTextPos(), 1); + } + function y() { + var Y = J ? J.token.kind : oe.getToken(); + return Y !== 1 && !e.isTrivia(Y); + } + function V() { + var Y = J ? J.token.kind : oe.getToken(); + return Y === 1; + } + function L(Y, U) { + return e.isToken(U) && Y.token.kind !== U.kind && (Y.token.kind = U.kind), Y; + } + function P(Y) { + oe.setTextPos(Y.end), b = oe.getStartPos(), se = void 0, J = void 0, f = false, T = void 0, K = void 0; + } + function k(Y) { + oe.setTextPos(Y.pos), b = oe.getStartPos(), se = void 0, J = void 0, f = false, T = void 0, K = void 0; + } + } + C.getFormattingScanner = Q; + })(a = e.formatting || (e.formatting = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + C.anyContext = e.emptyArray; + var w; + (function(E) { + E[E.StopProcessingSpaceActions = 1] = "StopProcessingSpaceActions", E[E.StopProcessingTokenActions = 2] = "StopProcessingTokenActions", E[E.InsertSpace = 4] = "InsertSpace", E[E.InsertNewLine = 8] = "InsertNewLine", E[E.DeleteSpace = 16] = "DeleteSpace", E[E.DeleteToken = 32] = "DeleteToken", E[E.InsertTrailingSemicolon = 64] = "InsertTrailingSemicolon", E[E.StopAction = 3] = "StopAction", E[E.ModifySpaceAction = 28] = "ModifySpaceAction", E[E.ModifyTokenAction = 96] = "ModifyTokenAction"; + })(w = C.RuleAction || (C.RuleAction = {})); + var B; + (function(E) { + E[E.None = 0] = "None", E[E.CanDeleteNewLines = 1] = "CanDeleteNewLines"; + })(B = C.RuleFlags || (C.RuleFlags = {})); + })(a = e.formatting || (e.formatting = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w() { + for (var Ne = [], n = 0; n <= 160; n++) + n !== 1 && Ne.push(n); + function lr() { + for (var _r = [], pi = 0; pi < arguments.length; pi++) + _r[pi] = arguments[pi]; + return { tokens: Ne.filter(function(ae) { + return !_r.some(function(Xe) { + return Xe === ae; + }); + }), isSpecific: false }; + } + var be = { tokens: Ne, isSpecific: false }, Ge = E(Ve(Ve([], Ne, true), [3], false)), ur = E(Ve(Ve([], Ne, true), [1], false)), yr = le(81, 160), Ir = le(29, 78), wr = [101, 102, 160, 127, 139], Ur = [45, 46, 54, 53], ii = [8, 9, 79, 20, 22, 18, 108, 103], mi = [79, 20, 108, 103], pe = [79, 21, 23, 103], or = [79, 20, 108, 103], qr = [79, 21, 23, 103], si = [2, 3], Di = Ve([79], e.typeKeywords, true), wi = Ge, Xi = E([79, 3, 84, 93, 100]), et = E([21, 3, 90, 111, 96, 91]), Gi = [B("IgnoreBeforeComment", be, si, C.anyContext, 1), B("IgnoreAfterLineComment", 2, be, C.anyContext, 1), B("NotSpaceBeforeColon", be, 58, [g, se, J], 16), B("SpaceAfterColon", 58, be, [g, se], 4), B("NoSpaceBeforeQuestionMark", be, 57, [g, se, J], 16), B("SpaceAfterQuestionMarkInConditionalOperator", 57, be, [g, R], 4), B("NoSpaceAfterQuestionMark", 57, be, [g], 16), B("NoSpaceBeforeDot", be, [24, 28], [g], 16), B("NoSpaceAfterDot", [24, 28], be, [g], 16), B("NoSpaceBetweenImportParenInImportType", 100, 20, [g, fe], 16), B("NoSpaceAfterUnaryPrefixOperator", Ur, ii, [g, se], 16), B("NoSpaceAfterUnaryPreincrementOperator", 45, mi, [g], 16), B("NoSpaceAfterUnaryPredecrementOperator", 46, or, [g], 16), B("NoSpaceBeforeUnaryPostincrementOperator", pe, 45, [g, Cr], 16), B("NoSpaceBeforeUnaryPostdecrementOperator", qr, 46, [g, Cr], 16), B("SpaceAfterPostincrementWhenFollowedByAdd", 45, 39, [g, b], 4), B("SpaceAfterAddWhenFollowedByUnaryPlus", 39, 39, [g, b], 4), B("SpaceAfterAddWhenFollowedByPreincrement", 39, 45, [g, b], 4), B("SpaceAfterPostdecrementWhenFollowedBySubtract", 46, 40, [g, b], 4), B("SpaceAfterSubtractWhenFollowedByUnaryMinus", 40, 40, [g, b], 4), B("SpaceAfterSubtractWhenFollowedByPredecrement", 40, 46, [g, b], 4), B("NoSpaceAfterCloseBrace", 19, [27, 26], [g], 16), B("NewLineBeforeCloseBraceInBlockContext", Ge, 19, [ee], 8), B("SpaceAfterCloseBrace", 19, lr(21), [g, P], 4), B("SpaceBetweenCloseBraceAndElse", 19, 91, [g], 4), B("SpaceBetweenCloseBraceAndWhile", 19, 115, [g], 4), B("NoSpaceBetweenEmptyBraceBrackets", 18, 19, [g, Y], 16), B("SpaceAfterConditionalClosingParen", 21, 22, [k], 4), B("NoSpaceBetweenFunctionKeywordAndStar", 98, 41, [y], 16), B("SpaceAfterStarInGeneratorDeclaration", 41, 79, [y], 4), B("SpaceAfterFunctionInFuncDecl", 98, be, [$], 4), B("NewLineAfterOpenBraceInBlockContext", 18, be, [ee], 8), B("SpaceAfterGetSetInMember", [136, 149], 79, [$], 4), B("NoSpaceBetweenYieldKeywordAndStar", 125, 41, [g, er], 16), B("SpaceBetweenYieldOrYieldStarAndOperand", [125, 41], be, [g, er], 4), B("NoSpaceBetweenReturnAndSemicolon", 105, 26, [g], 16), B("SpaceAfterCertainKeywords", [113, 109, 103, 89, 105, 112, 132], be, [g], 4), B("SpaceAfterLetConstInVariableDeclaration", [119, 85], be, [g, Ee], 4), B("NoSpaceBeforeOpenParenInFuncCall", be, 20, [g, H, I], 16), B("SpaceBeforeBinaryKeywordOperator", be, wr, [g, b], 4), B("SpaceAfterBinaryKeywordOperator", wr, be, [g, b], 4), B("SpaceAfterVoidOperator", 114, be, [g, Ae], 4), B("SpaceBetweenAsyncAndOpenParen", 131, 20, [D, g], 4), B("SpaceBetweenAsyncAndFunctionKeyword", 131, [98, 79], [g], 4), B("NoSpaceBetweenTagAndTemplateString", [79, 21], [14, 15], [g], 16), B("SpaceBeforeJsxAttribute", be, 79, [Fe, g], 4), B("SpaceBeforeSlashInJsxOpeningElement", be, 43, [Be, g], 4), B("NoSpaceBeforeGreaterThanTokenInJsxOpeningElement", 43, 31, [Be, g], 16), B("NoSpaceBeforeEqualInJsxAttribute", be, 63, [Z, g], 16), B("NoSpaceAfterEqualInJsxAttribute", 63, be, [Z, g], 16), B("NoSpaceAfterModuleImport", [141, 146], 20, [g], 16), B("SpaceAfterCertainTypeScriptKeywords", [126, 84, 135, 88, 92, 93, 94, 136, 117, 100, 118, 141, 142, 121, 123, 122, 145, 149, 124, 152, 156, 140, 137], be, [g], 4), B("SpaceBeforeCertainTypeScriptKeywords", be, [94, 117, 156], [g], 4), B("SpaceAfterModuleName", 10, 18, [rr], 4), B("SpaceBeforeArrow", be, 38, [g], 4), B("SpaceAfterArrow", 38, be, [g], 4), B("NoSpaceAfterEllipsis", 25, 79, [g], 16), B("NoSpaceAfterOptionalParameters", 57, [21, 27], [g, se], 16), B("NoSpaceBetweenEmptyInterfaceBraceBrackets", 18, 19, [g, Ie], 16), B("NoSpaceBeforeOpenAngularBracket", Di, 29, [g, de], 16), B("NoSpaceBetweenCloseParenAndAngularBracket", 21, 29, [g, de], 16), B("NoSpaceAfterOpenAngularBracket", 29, be, [g, de], 16), B("NoSpaceBeforeCloseAngularBracket", be, 31, [g, de], 16), B("NoSpaceAfterCloseAngularBracket", 31, [20, 22, 31, 27], [g, de, A], 16), B("SpaceBeforeAt", [21, 79], 59, [g], 4), B("NoSpaceAfterAt", 59, be, [g], 16), B("SpaceAfterDecorator", be, [126, 79, 93, 88, 84, 124, 123, 121, 122, 136, 149, 22, 41], [Re], 4), B("NoSpaceBeforeNonNullAssertionOperator", be, 53, [g, ir], 16), B("NoSpaceAfterNewKeywordOnConstructorSignature", 103, 20, [g, _e], 16), B("SpaceLessThanAndNonJSXTypeAnnotation", 29, 29, [g], 4)], Wt = [B("SpaceAfterConstructor", 134, 20, [p("insertSpaceAfterConstructor"), g], 4), B("NoSpaceAfterConstructor", 134, 20, [G("insertSpaceAfterConstructor"), g], 16), B("SpaceAfterComma", 27, be, [p("insertSpaceAfterCommaDelimiter"), g, ue, l, d], 4), B("NoSpaceAfterComma", 27, be, [G("insertSpaceAfterCommaDelimiter"), g, ue], 16), B("SpaceAfterAnonymousFunctionKeyword", [98, 41], 20, [p("insertSpaceAfterFunctionKeywordForAnonymousFunctions"), $], 4), B("NoSpaceAfterAnonymousFunctionKeyword", [98, 41], 20, [G("insertSpaceAfterFunctionKeywordForAnonymousFunctions"), $], 16), B("SpaceAfterKeywordInControl", yr, 20, [p("insertSpaceAfterKeywordsInControlFlowStatements"), k], 4), B("NoSpaceAfterKeywordInControl", yr, 20, [G("insertSpaceAfterKeywordsInControlFlowStatements"), k], 16), B("SpaceAfterOpenParen", 20, be, [p("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"), g], 4), B("SpaceBeforeCloseParen", be, 21, [p("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"), g], 4), B("SpaceBetweenOpenParens", 20, 20, [p("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"), g], 4), B("NoSpaceBetweenParens", 20, 21, [g], 16), B("NoSpaceAfterOpenParen", 20, be, [G("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"), g], 16), B("NoSpaceBeforeCloseParen", be, 21, [G("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"), g], 16), B("SpaceAfterOpenBracket", 22, be, [p("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"), g], 4), B("SpaceBeforeCloseBracket", be, 23, [p("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"), g], 4), B("NoSpaceBetweenBrackets", 22, 23, [g], 16), B("NoSpaceAfterOpenBracket", 22, be, [G("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"), g], 16), B("NoSpaceBeforeCloseBracket", be, 23, [G("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"), g], 16), B("SpaceAfterOpenBrace", 18, be, [f("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), O], 4), B("SpaceBeforeCloseBrace", be, 19, [f("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), O], 4), B("NoSpaceBetweenEmptyBraceBrackets", 18, 19, [g, Y], 16), B("NoSpaceAfterOpenBrace", 18, be, [m("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), g], 16), B("NoSpaceBeforeCloseBrace", be, 19, [m("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), g], 16), B("SpaceBetweenEmptyBraceBrackets", 18, 19, [p("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces")], 4), B("NoSpaceBetweenEmptyBraceBrackets", 18, 19, [m("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces"), g], 16), B("SpaceAfterTemplateHeadAndMiddle", [15, 16], be, [p("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"), ne], 4, 1), B("SpaceBeforeTemplateMiddleAndTail", be, [16, 17], [p("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"), g], 4), B("NoSpaceAfterTemplateHeadAndMiddle", [15, 16], be, [G("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"), ne], 16, 1), B("NoSpaceBeforeTemplateMiddleAndTail", be, [16, 17], [G("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"), g], 16), B("SpaceAfterOpenBraceInJsxExpression", 18, be, [p("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"), g, We], 4), B("SpaceBeforeCloseBraceInJsxExpression", be, 19, [p("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"), g, We], 4), B("NoSpaceAfterOpenBraceInJsxExpression", 18, be, [G("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"), g, We], 16), B("NoSpaceBeforeCloseBraceInJsxExpression", be, 19, [G("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"), g, We], 16), B("SpaceAfterSemicolonInFor", 26, be, [p("insertSpaceAfterSemicolonInForStatements"), g, T], 4), B("NoSpaceAfterSemicolonInFor", 26, be, [G("insertSpaceAfterSemicolonInForStatements"), g, T], 16), B("SpaceBeforeBinaryOperator", be, Ir, [p("insertSpaceBeforeAndAfterBinaryOperators"), g, b], 4), B("SpaceAfterBinaryOperator", Ir, be, [p("insertSpaceBeforeAndAfterBinaryOperators"), g, b], 4), B("NoSpaceBeforeBinaryOperator", be, Ir, [G("insertSpaceBeforeAndAfterBinaryOperators"), g, b], 16), B("NoSpaceAfterBinaryOperator", Ir, be, [G("insertSpaceBeforeAndAfterBinaryOperators"), g, b], 16), B("SpaceBeforeOpenParenInFuncDecl", be, 20, [p("insertSpaceBeforeFunctionParenthesis"), g, $], 4), B("NoSpaceBeforeOpenParenInFuncDecl", be, 20, [G("insertSpaceBeforeFunctionParenthesis"), g, $], 16), B("NewLineBeforeOpenBraceInControl", et, 18, [p("placeOpenBraceOnNewLineForControlBlocks"), k, ve], 8, 1), B("NewLineBeforeOpenBraceInFunction", wi, 18, [p("placeOpenBraceOnNewLineForFunctions"), $, ve], 8, 1), B("NewLineBeforeOpenBraceInTypeScriptDeclWithBlock", Xi, 18, [p("placeOpenBraceOnNewLineForFunctions"), V, ve], 8, 1), B("SpaceAfterTypeAssertion", 31, be, [p("insertSpaceAfterTypeAssertion"), g, ye], 4), B("NoSpaceAfterTypeAssertion", 31, be, [G("insertSpaceAfterTypeAssertion"), g, ye], 16), B("SpaceBeforeTypeAnnotation", be, [57, 58], [p("insertSpaceBeforeTypeAnnotation"), g, ie], 4), B("NoSpaceBeforeTypeAnnotation", be, [57, 58], [G("insertSpaceBeforeTypeAnnotation"), g, ie], 16), B("NoOptionalSemicolon", 26, ur, [N("semicolons", e.SemicolonPreference.Remove), Br], 32), B("OptionalSemicolon", be, ur, [N("semicolons", e.SemicolonPreference.Insert), Er], 64)], Zt = [B("NoSpaceBeforeSemicolon", be, 26, [g], 16), B("SpaceBeforeOpenBraceInControl", et, 18, [oe("placeOpenBraceOnNewLineForControlBlocks"), k, He, q], 4, 1), B("SpaceBeforeOpenBraceInFunction", wi, 18, [oe("placeOpenBraceOnNewLineForFunctions"), $, x, He, q], 4, 1), B("SpaceBeforeOpenBraceInTypeScriptDeclWithBlock", Xi, 18, [oe("placeOpenBraceOnNewLineForFunctions"), V, He, q], 4, 1), B("NoSpaceBeforeComma", be, 27, [g], 16), B("NoSpaceBeforeOpenBracket", lr(131, 82), 22, [g], 16), B("NoSpaceAfterCloseBracket", 23, be, [g, ge], 16), B("SpaceAfterSemicolon", 26, be, [g], 4), B("SpaceBetweenForAndAwaitKeyword", 97, 132, [g], 4), B("SpaceBetweenStatements", [21, 90, 91, 82], be, [g, ue, K], 4), B("SpaceAfterTryCatchFinally", [111, 83, 96], 18, [g], 4)]; + return Ve(Ve(Ve([], Gi, true), Wt, true), Zt, true); + } + C.getAllRules = w; + function B(Ne, n, lr, be, Ge, ur) { + return ur === void 0 && (ur = 0), { leftTokenRange: Q(n), rightTokenRange: Q(lr), rule: { debugName: Ne, context: be, action: Ge, flags: ur } }; + } + function E(Ne) { + return { tokens: Ne, isSpecific: true }; + } + function Q(Ne) { + return typeof Ne == "number" ? E([Ne]) : e.isArray(Ne) ? E(Ne) : Ne; + } + function le(Ne, n, lr) { + lr === void 0 && (lr = []); + for (var be = [], Ge = Ne; Ge <= n; Ge++) + e.contains(lr, Ge) || be.push(Ge); + return E(be); + } + function N(Ne, n) { + return function(lr) { + return lr.options && lr.options[Ne] === n; + }; + } + function p(Ne) { + return function(n) { + return n.options && n.options.hasOwnProperty(Ne) && !!n.options[Ne]; + }; + } + function m(Ne) { + return function(n) { + return n.options && n.options.hasOwnProperty(Ne) && !n.options[Ne]; + }; + } + function G(Ne) { + return function(n) { + return !n.options || !n.options.hasOwnProperty(Ne) || !n.options[Ne]; + }; + } + function oe(Ne) { + return function(n) { + return !n.options || !n.options.hasOwnProperty(Ne) || !n.options[Ne] || n.TokensAreOnSameLine(); + }; + } + function f(Ne) { + return function(n) { + return !n.options || !n.options.hasOwnProperty(Ne) || !!n.options[Ne]; + }; + } + function T(Ne) { + return Ne.contextNode.kind === 242; + } + function K(Ne) { + return !T(Ne); + } + function b(Ne) { + switch (Ne.contextNode.kind) { + case 221: + return Ne.contextNode.operatorToken.kind !== 27; + case 222: + case 189: + case 229: + case 275: + case 270: + case 177: + case 187: + case 188: + return true; + case 203: + case 259: + case 265: + case 271: + case 254: + case 164: + case 299: + case 167: + case 166: + return Ne.currentTokenSpan.kind === 63 || Ne.nextTokenSpan.kind === 63; + case 243: + case 163: + return Ne.currentTokenSpan.kind === 101 || Ne.nextTokenSpan.kind === 101 || Ne.currentTokenSpan.kind === 63 || Ne.nextTokenSpan.kind === 63; + case 244: + return Ne.currentTokenSpan.kind === 160 || Ne.nextTokenSpan.kind === 160; + } + return false; + } + function se(Ne) { + return !b(Ne); + } + function J(Ne) { + return !ie(Ne); + } + function ie(Ne) { + var n = Ne.contextNode.kind; + return n === 167 || n === 166 || n === 164 || n === 254 || e.isFunctionLikeKind(n); + } + function R(Ne) { + return Ne.contextNode.kind === 222 || Ne.contextNode.kind === 189; + } + function q(Ne) { + return Ne.TokensAreOnSameLine() || x(Ne); + } + function O(Ne) { + return Ne.contextNode.kind === 201 || Ne.contextNode.kind === 195 || he(Ne); + } + function ve(Ne) { + return x(Ne) && !(Ne.NextNodeAllOnSameLine() || Ne.NextNodeBlockIsOnOneLine()); + } + function ee(Ne) { + return F(Ne) && !(Ne.ContextNodeAllOnSameLine() || Ne.ContextNodeBlockIsOnOneLine()); + } + function he(Ne) { + return F(Ne) && (Ne.ContextNodeAllOnSameLine() || Ne.ContextNodeBlockIsOnOneLine()); + } + function F(Ne) { + return X(Ne.contextNode); + } + function x(Ne) { + return X(Ne.nextTokenParent); + } + function X(Ne) { + if (L(Ne)) + return true; + switch (Ne.kind) { + case 235: + case 263: + case 205: + case 262: + return true; + } + return false; + } + function $(Ne) { + switch (Ne.contextNode.kind) { + case 256: + case 169: + case 168: + case 172: + case 173: + case 174: + case 213: + case 171: + case 214: + case 258: + return true; + } + return false; + } + function A(Ne) { + return !$(Ne); + } + function y(Ne) { + return Ne.contextNode.kind === 256 || Ne.contextNode.kind === 213; + } + function V(Ne) { + return L(Ne.contextNode); + } + function L(Ne) { + switch (Ne.kind) { + case 257: + case 226: + case 258: + case 260: + case 182: + case 261: + case 272: + case 273: + case 266: + case 269: + return true; + } + return false; + } + function P(Ne) { + switch (Ne.currentTokenParent.kind) { + case 257: + case 261: + case 260: + case 292: + case 262: + case 249: + return true; + case 235: { + var n = Ne.currentTokenParent.parent; + if (!n || n.kind !== 214 && n.kind !== 213) + return true; + } + } + return false; + } + function k(Ne) { + switch (Ne.contextNode.kind) { + case 239: + case 249: + case 242: + case 243: + case 244: + case 241: + case 252: + case 240: + case 248: + case 292: + return true; + default: + return false; + } + } + function Y(Ne) { + return Ne.contextNode.kind === 205; + } + function U(Ne) { + return Ne.contextNode.kind === 208; + } + function j(Ne) { + return Ne.contextNode.kind === 209; + } + function H(Ne) { + return U(Ne) || j(Ne); + } + function I(Ne) { + return Ne.currentTokenSpan.kind !== 27; + } + function l(Ne) { + return Ne.nextTokenSpan.kind !== 23; + } + function d(Ne) { + return Ne.nextTokenSpan.kind !== 21; + } + function D(Ne) { + return Ne.contextNode.kind === 214; + } + function fe(Ne) { + return Ne.contextNode.kind === 200; + } + function g(Ne) { + return Ne.TokensAreOnSameLine() && Ne.contextNode.kind !== 11; + } + function ne(Ne) { + return Ne.contextNode.kind !== 11; + } + function ue(Ne) { + return Ne.contextNode.kind !== 278 && Ne.contextNode.kind !== 282; + } + function We(Ne) { + return Ne.contextNode.kind === 288 || Ne.contextNode.kind === 287; + } + function Fe(Ne) { + return Ne.nextTokenParent.kind === 285; + } + function Z(Ne) { + return Ne.contextNode.kind === 285; + } + function Be(Ne) { + return Ne.contextNode.kind === 279; + } + function ge(Ne) { + return !$(Ne) && !x(Ne); + } + function Re(Ne) { + return Ne.TokensAreOnSameLine() && !!Ne.contextNode.decorators && ze(Ne.currentTokenParent) && !ze(Ne.nextTokenParent); + } + function ze(Ne) { + for (; e.isExpressionNode(Ne); ) + Ne = Ne.parent; + return Ne.kind === 165; + } + function Ee(Ne) { + return Ne.currentTokenParent.kind === 255 && Ne.currentTokenParent.getStart(Ne.sourceFile) === Ne.currentTokenSpan.pos; + } + function He(Ne) { + return Ne.formattingRequestKind !== 2; + } + function rr(Ne) { + return Ne.contextNode.kind === 261; + } + function Ie(Ne) { + return Ne.contextNode.kind === 182; + } + function _e(Ne) { + return Ne.contextNode.kind === 175; + } + function we(Ne, n) { + if (Ne.kind !== 29 && Ne.kind !== 31) + return false; + switch (n.kind) { + case 178: + case 211: + case 259: + case 257: + case 226: + case 258: + case 256: + case 213: + case 214: + case 169: + case 168: + case 174: + case 175: + case 208: + case 209: + case 228: + return true; + default: + return false; + } + } + function de(Ne) { + return we(Ne.currentTokenSpan, Ne.currentTokenParent) || we(Ne.nextTokenSpan, Ne.nextTokenParent); + } + function ye(Ne) { + return Ne.contextNode.kind === 211; + } + function Ae(Ne) { + return Ne.currentTokenSpan.kind === 114 && Ne.currentTokenParent.kind === 217; + } + function er(Ne) { + return Ne.contextNode.kind === 224 && Ne.contextNode.expression !== void 0; + } + function ir(Ne) { + return Ne.contextNode.kind === 230; + } + function Cr(Ne) { + return !Ye(Ne); + } + function Ye(Ne) { + switch (Ne.contextNode.kind) { + case 239: + case 242: + case 243: + case 244: + case 240: + case 241: + return true; + default: + return false; + } + } + function Br(Ne) { + var n = Ne.nextTokenSpan.kind, lr = Ne.nextTokenSpan.pos; + if (e.isTrivia(n)) { + var be = Ne.nextTokenParent === Ne.currentTokenParent ? e.findNextToken(Ne.currentTokenParent, e.findAncestor(Ne.currentTokenParent, function(yr) { + return !yr.parent; + }), Ne.sourceFile) : Ne.nextTokenParent.getFirstToken(Ne.sourceFile); + if (!be) + return true; + n = be.kind, lr = be.getStart(Ne.sourceFile); + } + var Ge = Ne.sourceFile.getLineAndCharacterOfPosition(Ne.currentTokenSpan.pos).line, ur = Ne.sourceFile.getLineAndCharacterOfPosition(lr).line; + return Ge === ur ? n === 19 || n === 1 : n === 234 || n === 26 ? false : Ne.contextNode.kind === 258 || Ne.contextNode.kind === 259 ? !e.isPropertySignature(Ne.currentTokenParent) || !!Ne.currentTokenParent.type || n !== 20 : e.isPropertyDeclaration(Ne.currentTokenParent) ? !Ne.currentTokenParent.initializer : Ne.currentTokenParent.kind !== 242 && Ne.currentTokenParent.kind !== 236 && Ne.currentTokenParent.kind !== 234 && n !== 22 && n !== 20 && n !== 39 && n !== 40 && n !== 43 && n !== 13 && n !== 27 && n !== 223 && n !== 15 && n !== 14 && n !== 24; + } + function Er(Ne) { + return e.positionIsASICandidate(Ne.currentTokenSpan.end, Ne.currentTokenParent, Ne.sourceFile); + } + })(a = e.formatting || (e.formatting = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(se, J) { + return { options: se, getRules: E(), host: J }; + } + C.getFormatContext = w; + var B; + function E() { + return B === void 0 && (B = le(C.getAllRules())), B; + } + function Q(se) { + var J = 0; + return se & 1 && (J |= 28), se & 2 && (J |= 96), se & 28 && (J |= 28), se & 96 && (J |= 96), J; + } + function le(se) { + var J = N(se); + return function(ie) { + var R = J[p(ie.currentTokenSpan.kind, ie.nextTokenSpan.kind)]; + if (R) { + for (var q = [], O = 0, ve = 0, ee = R; ve < ee.length; ve++) { + var he = ee[ve], F = ~Q(O); + he.action & F && e.every(he.context, function(x) { + return x(ie); + }) && (q.push(he), O |= he.action); + } + if (q.length) + return q; + } + }; + } + function N(se) { + for (var J = new Array(oe * oe), ie = new Array(J.length), R = 0, q = se; R < q.length; R++) + for (var O = q[R], ve = O.leftTokenRange.isSpecific && O.rightTokenRange.isSpecific, ee = 0, he = O.leftTokenRange.tokens; ee < he.length; ee++) + for (var F = he[ee], x = 0, X = O.rightTokenRange.tokens; x < X.length; x++) { + var $ = X[x], A = p(F, $), y = J[A]; + y === void 0 && (y = J[A] = []), T(y, O.rule, ve, ie, A); + } + return J; + } + function p(se, J) { + return e.Debug.assert(se <= 160 && J <= 160, "Must compute formatting context from tokens"), se * oe + J; + } + var m = 5, G = 31, oe = 160 + 1, f; + (function(se) { + se[se.StopRulesSpecific = 0] = "StopRulesSpecific", se[se.StopRulesAny = m * 1] = "StopRulesAny", se[se.ContextRulesSpecific = m * 2] = "ContextRulesSpecific", se[se.ContextRulesAny = m * 3] = "ContextRulesAny", se[se.NoContextRulesSpecific = m * 4] = "NoContextRulesSpecific", se[se.NoContextRulesAny = m * 5] = "NoContextRulesAny"; + })(f || (f = {})); + function T(se, J, ie, R, q) { + var O = J.action & 3 ? ie ? f.StopRulesSpecific : f.StopRulesAny : J.context !== C.anyContext ? ie ? f.ContextRulesSpecific : f.ContextRulesAny : ie ? f.NoContextRulesSpecific : f.NoContextRulesAny, ve = R[q] || 0; + se.splice(K(ve, O), 0, J), R[q] = b(ve, O); + } + function K(se, J) { + for (var ie = 0, R = 0; R <= J; R += m) + ie += se & G, se >>= m; + return ie; + } + function b(se, J) { + var ie = (se >> J & G) + 1; + return e.Debug.assert((ie & G) === ie, "Adding more rules into the sub-bucket than allowed. Maximum allowed is 32 rules."), se & ~(G << J) | ie << J; + } + })(a = e.formatting || (e.formatting = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(A, y, V) { + var L = { pos: A, end: y, kind: V }; + return e.Debug.isDebugging && Object.defineProperty(L, "__debugKind", { get: function() { + return e.Debug.formatSyntaxKind(V); + } }), L; + } + C.createTextRangeWithKind = w; + var B; + (function(A) { + A[A.Unknown = -1] = "Unknown"; + })(B || (B = {})); + function E(A, y, V) { + var L = y.getLineAndCharacterOfPosition(A).line; + if (L === 0) + return []; + for (var P = e.getEndLinePosition(L, y); e.isWhiteSpaceSingleLine(y.text.charCodeAt(P)); ) + P--; + e.isLineBreak(y.text.charCodeAt(P)) && P--; + var k = { pos: e.getStartPositionOfLine(L - 1, y), end: P + 1 }; + return R(k, y, V, 2); + } + C.formatOnEnter = E; + function Q(A, y, V) { + var L = G(A, 26, y); + return ie(oe(L), y, V, 3); + } + C.formatOnSemicolon = Q; + function le(A, y, V) { + var L = G(A, 18, y); + if (!L) + return []; + var P = L.parent, k = oe(P), Y = { pos: e.getLineStartPositionForPosition(k.getStart(y), y), end: A }; + return R(Y, y, V, 4); + } + C.formatOnOpeningCurly = le; + function N(A, y, V) { + var L = G(A, 19, y); + return ie(oe(L), y, V, 5); + } + C.formatOnClosingCurly = N; + function p(A, y) { + var V = { pos: 0, end: A.text.length }; + return R(V, A, y, 0); + } + C.formatDocument = p; + function m(A, y, V, L) { + var P = { pos: e.getLineStartPositionForPosition(A, V), end: y }; + return R(P, V, L, 1); + } + C.formatSelection = m; + function G(A, y, V) { + var L = e.findPrecedingToken(A, V); + return L && L.kind === y && A === L.getEnd() ? L : void 0; + } + function oe(A) { + for (var y = A; y && y.parent && y.parent.end === A.end && !f(y.parent, y); ) + y = y.parent; + return y; + } + function f(A, y) { + switch (A.kind) { + case 257: + case 258: + return e.rangeContainsRange(A.members, y); + case 261: + var V = A.body; + return !!V && V.kind === 262 && e.rangeContainsRange(V.statements, y); + case 305: + case 235: + case 262: + return e.rangeContainsRange(A.statements, y); + case 292: + return e.rangeContainsRange(A.block.statements, y); + } + return false; + } + function T(A, y) { + return V(y); + function V(L) { + var P = e.forEachChild(L, function(Y) { + return e.startEndContainsRange(Y.getStart(y), Y.end, A) && Y; + }); + if (P) { + var k = V(P); + if (k) + return k; + } + return L; + } + } + function K(A, y) { + if (!A.length) + return P; + var V = A.filter(function(k) { + return e.rangeOverlapsWithStartEnd(y, k.start, k.start + k.length); + }).sort(function(k, Y) { + return k.start - Y.start; + }); + if (!V.length) + return P; + var L = 0; + return function(k) { + for (; ; ) { + if (L >= V.length) + return false; + var Y = V[L]; + if (k.end <= Y.start) + return false; + if (e.startEndOverlapsWithStartEnd(k.pos, k.end, Y.start, Y.start + Y.length)) + return true; + L++; + } + }; + function P() { + return false; + } + } + function b(A, y, V) { + var L = A.getStart(V); + if (L === y.pos && A.end === y.end) + return L; + var P = e.findPrecedingToken(y.pos, V); + return !P || P.end >= y.pos ? A.pos : P.end; + } + function se(A, y, V) { + for (var L = -1, P; A; ) { + var k = V.getLineAndCharacterOfPosition(A.getStart(V)).line; + if (L !== -1 && k !== L) + break; + if (C.SmartIndenter.shouldIndentChildNode(y, A, P, V)) + return y.indentSize; + L = k, P = A, A = A.parent; + } + return 0; + } + function J(A, y, V, L, P, k) { + var Y = { pos: A.pos, end: A.end }; + return C.getFormattingScanner(y.text, V, Y.pos, Y.end, function(U) { + return q(Y, A, L, P, U, k, 1, function(j) { + return false; + }, y); + }); + } + C.formatNodeGivenIndentation = J; + function ie(A, y, V, L) { + if (!A) + return []; + var P = { pos: e.getLineStartPositionForPosition(A.getStart(y), y), end: A.end }; + return R(P, y, V, L); + } + function R(A, y, V, L) { + var P = T(A, y); + return C.getFormattingScanner(y.text, y.languageVariant, b(P, A, y), A.end, function(k) { + return q(A, P, C.SmartIndenter.getIndentationForNode(P, A, y, V.options), se(P, V.options, y), k, V, L, K(y.parseDiagnostics, A), y); + }); + } + function q(A, y, V, L, P, k, Y, U, j) { + var H, I = k.options, l = k.getRules, d = k.host, D = new C.FormattingContext(j, Y, I), fe, g, ne, ue, We = -1, Fe = []; + if (P.advance(), P.isOnToken()) { + var Z = j.getLineAndCharacterOfPosition(y.getStart(j)).line, Be = Z; + y.decorators && (Be = j.getLineAndCharacterOfPosition(e.getNonDecoratorTokenPosOfNode(y, j)).line), we(y, y, Z, Be, V, L); + } + if (!P.isOnToken()) { + var ge = C.SmartIndenter.nodeWillIndentChild(I, y, void 0, j, false) ? V + I.indentSize : V, Re = P.getCurrentLeadingTrivia(); + Re && (de(Re, ge, false, function(Ir) { + return Ae(Ir, j.getLineAndCharacterOfPosition(Ir.pos), y, y, void 0); + }), I.trimTrailingWhitespace !== false && n(Re)); + } + if (fe && P.getStartPos() >= A.end) { + var ze = P.isOnEOF() ? P.readEOFTokenRange() : P.isOnToken() ? P.readTokenInfo(y).token : void 0; + if (ze) { + var Ee = ((H = e.findPrecedingToken(ze.end, j, y)) === null || H === void 0 ? void 0 : H.parent) || g; + er(ze, j.getLineAndCharacterOfPosition(ze.pos).line, Ee, fe, ne, g, Ee, void 0); + } + } + return Fe; + function He(Ir, wr, Ur, ii, mi) { + if (e.rangeOverlapsWithStartEnd(ii, Ir, wr) || e.rangeContainsStartEnd(ii, Ir, wr)) { + if (mi !== -1) + return mi; + } else { + var pe = j.getLineAndCharacterOfPosition(Ir).line, or = e.getLineStartPositionForPosition(Ir, j), qr = C.SmartIndenter.findFirstNonWhitespaceColumn(or, Ir, j, I); + if (pe !== Ur || Ir === qr) { + var si = C.SmartIndenter.getBaseIndentation(I); + return si > qr ? si : qr; + } + } + return -1; + } + function rr(Ir, wr, Ur, ii, mi, pe) { + var or = C.SmartIndenter.shouldIndentChildNode(I, Ir) ? I.indentSize : 0; + return pe === wr ? { indentation: wr === ue ? We : mi.getIndentation(), delta: Math.min(I.indentSize, mi.getDelta(Ir) + or) } : Ur === -1 ? Ir.kind === 20 && wr === ue ? { indentation: We, delta: mi.getDelta(Ir) } : C.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(ii, Ir, wr, j) || C.SmartIndenter.childIsUnindentedBranchOfConditionalExpression(ii, Ir, wr, j) || C.SmartIndenter.argumentStartsOnSameLineAsPreviousArgument(ii, Ir, wr, j) ? { indentation: mi.getIndentation(), delta: or } : { indentation: mi.getIndentation() + mi.getDelta(Ir), delta: or } : { indentation: Ur, delta: or }; + } + function Ie(Ir) { + if (Ir.modifiers && Ir.modifiers.length) + return Ir.modifiers[0].kind; + switch (Ir.kind) { + case 257: + return 84; + case 258: + return 118; + case 256: + return 98; + case 260: + return 260; + case 172: + return 136; + case 173: + return 149; + case 169: + if (Ir.asteriskToken) + return 41; + case 167: + case 164: + var wr = e.getNameOfDeclaration(Ir); + if (wr) + return wr.kind; + } + } + function _e(Ir, wr, Ur, ii) { + return { getIndentationForComment: function(or, qr, si) { + switch (or) { + case 19: + case 23: + case 21: + return Ur + pe(si); + } + return qr !== -1 ? qr : Ur; + }, getIndentationForToken: function(or, qr, si, Di) { + return !Di && mi(or, qr, si) ? Ur + pe(si) : Ur; + }, getIndentation: function() { + return Ur; + }, getDelta: pe, recomputeIndentation: function(or, qr) { + C.SmartIndenter.shouldIndentChildNode(I, qr, Ir, j) && (Ur += or ? I.indentSize : -I.indentSize, ii = C.SmartIndenter.shouldIndentChildNode(I, Ir) ? I.indentSize : 0); + } }; + function mi(or, qr, si) { + switch (qr) { + case 18: + case 19: + case 21: + case 91: + case 115: + case 59: + return false; + case 43: + case 31: + switch (si.kind) { + case 280: + case 281: + case 279: + case 228: + return false; + } + break; + case 22: + case 23: + if (si.kind !== 195) + return false; + break; + } + return wr !== or && !(Ir.decorators && qr === Ie(Ir)); + } + function pe(or) { + return C.SmartIndenter.nodeWillIndentChild(I, Ir, or, j, true) ? ii : 0; + } + } + function we(Ir, wr, Ur, ii, mi, pe) { + if (!e.rangeOverlapsWithStartEnd(A, Ir.getStart(j), Ir.getEnd())) + return; + var or = _e(Ir, Ur, mi, pe), qr = wr; + for (e.forEachChild(Ir, function(et) { + Di(et, -1, Ir, or, Ur, ii, false); + }, function(et) { + wi(et, Ir, Ur, or); + }); P.isOnToken() && P.getStartPos() < A.end; ) { + var si = P.readTokenInfo(Ir); + if (si.token.end > Math.min(Ir.end, A.end)) + break; + Xi(si, Ir, or, Ir); + } + function Di(et, Gi, Wt, Zt, _r, pi, ae, Xe) { + if (e.nodeIsMissing(et)) + return Gi; + var Jr = et.getStart(j), ti = j.getLineAndCharacterOfPosition(Jr).line, Ze = ti; + et.decorators && (Ze = j.getLineAndCharacterOfPosition(e.getNonDecoratorTokenPosOfNode(et, j)).line); + var Sr = -1; + if (ae && e.rangeContainsRange(A, Wt) && (Sr = He(Jr, et.end, _r, A, Gi), Sr !== -1 && (Gi = Sr)), !e.rangeOverlapsWithStartEnd(A, et.pos, et.end)) + return et.end < A.pos && P.skipToEndOf(et), Gi; + if (et.getFullWidth() === 0) + return Gi; + for (; P.isOnToken() && P.getStartPos() < A.end; ) { + var zr = P.readTokenInfo(Ir); + if (zr.token.end > A.end) + return Gi; + if (zr.token.end > Jr) { + zr.token.pos > Jr && P.skipToStartOf(et); + break; + } + Xi(zr, Ir, Zt, Ir); + } + if (!P.isOnToken() || P.getStartPos() >= A.end) + return Gi; + if (e.isToken(et)) { + var zr = P.readTokenInfo(et); + if (et.kind !== 11) + return e.Debug.assert(zr.token.end === et.end, "Token end is child end"), Xi(zr, Ir, Zt, et), Gi; + } + var Wr = et.kind === 165 ? ti : pi, Je = rr(et, ti, Sr, Ir, Zt, Wr); + return we(et, qr, ti, Ze, Je.indentation, Je.delta), qr = Ir, Xe && Wt.kind === 204 && Gi === -1 && (Gi = Je.indentation), Gi; + } + function wi(et, Gi, Wt, Zt) { + e.Debug.assert(e.isNodeArray(et)); + var _r = ee(Gi, et), pi = Zt, ae = Wt; + if (!e.rangeOverlapsWithStartEnd(A, et.pos, et.end)) { + et.end < A.pos && P.skipToEndOf(et); + return; + } + if (_r !== 0) + for (; P.isOnToken() && P.getStartPos() < A.end; ) { + var Xe = P.readTokenInfo(Gi); + if (Xe.token.end > et.pos) + break; + if (Xe.token.kind === _r) { + ae = j.getLineAndCharacterOfPosition(Xe.token.pos).line, Xi(Xe, Gi, Zt, Gi); + var Jr = void 0; + if (We !== -1) + Jr = We; + else { + var ti = e.getLineStartPositionForPosition(Xe.token.pos, j); + Jr = C.SmartIndenter.findFirstNonWhitespaceColumn(ti, Xe.token.pos, j, I); + } + pi = _e(Gi, Wt, Jr, I.indentSize); + } else + Xi(Xe, Gi, Zt, Gi); + } + for (var Ze = -1, Sr = 0; Sr < et.length; Sr++) { + var zr = et[Sr]; + Ze = Di(zr, Ze, Ir, pi, ae, ae, true, Sr === 0); + } + var Wr = he(_r); + if (Wr !== 0 && P.isOnToken() && P.getStartPos() < A.end) { + var Xe = P.readTokenInfo(Gi); + if (Xe.token.kind === 27 && e.isCallLikeExpression(Gi)) { + var Je = j.getLineAndCharacterOfPosition(Xe.token.pos).line; + ae !== Je && (P.advance(), Xe = P.isOnToken() ? P.readTokenInfo(Gi) : void 0); + } + Xe && Xe.token.kind === Wr && e.rangeContainsRange(Gi, Xe.token) && Xi(Xe, Gi, pi, Gi, true); + } + } + function Xi(et, Gi, Wt, Zt, _r) { + e.Debug.assert(e.rangeContainsRange(Gi, et.token)); + var pi = P.lastTrailingTriviaWasNewLine(), ae = false; + et.leadingTrivia && ye(et.leadingTrivia, Gi, qr, Wt); + var Xe = 0, Jr = e.rangeContainsRange(A, et.token), ti = j.getLineAndCharacterOfPosition(et.token.pos); + if (Jr) { + var Ze = U(et.token), Sr = fe; + if (Xe = Ae(et.token, ti, Gi, qr, Wt), !Ze) + if (Xe === 0) { + var zr = Sr && j.getLineAndCharacterOfPosition(Sr.end).line; + ae = pi && ti.line !== zr; + } else + ae = Xe === 1; + } + if (et.trailingTrivia && ye(et.trailingTrivia, Gi, qr, Wt), ae) { + var Wr = Jr && !U(et.token) ? Wt.getIndentationForToken(ti.line, et.token.kind, Zt, !!_r) : -1, Je = true; + if (et.leadingTrivia) { + var xe = Wt.getIndentationForComment(et.token.kind, Wr, Zt); + Je = de(et.leadingTrivia, xe, Je, function(vr) { + return ir(vr.pos, xe, false); + }); + } + Wr !== -1 && Je && (ir(et.token.pos, Wr, Xe === 1), ue = ti.line, We = Wr); + } + P.advance(), qr = Gi; + } + } + function de(Ir, wr, Ur, ii) { + for (var mi = 0, pe = Ir; mi < pe.length; mi++) { + var or = pe[mi], qr = e.rangeContainsRange(A, or); + switch (or.kind) { + case 3: + qr && Br(or, wr, !Ur), Ur = false; + break; + case 2: + Ur && qr && ii(or), Ur = false; + break; + case 4: + Ur = true; + break; + } + } + return Ur; + } + function ye(Ir, wr, Ur, ii) { + for (var mi = 0, pe = Ir; mi < pe.length; mi++) { + var or = pe[mi]; + if (e.isComment(or.kind) && e.rangeContainsRange(A, or)) { + var qr = j.getLineAndCharacterOfPosition(or.pos); + Ae(or, qr, wr, Ur, ii); + } + } + } + function Ae(Ir, wr, Ur, ii, mi) { + var pe = U(Ir), or = 0; + if (!pe) + if (fe) + or = er(Ir, wr.line, Ur, fe, ne, g, ii, mi); + else { + var qr = j.getLineAndCharacterOfPosition(A.pos); + Er(qr.line, wr.line); + } + return fe = Ir, g = Ur, ne = wr.line, or; + } + function er(Ir, wr, Ur, ii, mi, pe, or, qr) { + D.updateContext(ii, pe, Ir, Ur, or); + var si = l(D), Di = D.options.trimTrailingWhitespace !== false, wi = 0; + return si ? e.forEachRight(si, function(Xi) { + if (wi = yr(Xi, ii, mi, Ir, wr), qr) + switch (wi) { + case 2: + Ur.getStart(j) === Ir.pos && qr.recomputeIndentation(false, or); + break; + case 1: + Ur.getStart(j) === Ir.pos && qr.recomputeIndentation(true, or); + break; + default: + e.Debug.assert(wi === 0); + } + Di = Di && !(Xi.action & 16) && Xi.flags !== 1; + }) : Di = Di && Ir.kind !== 1, wr !== mi && Di && Er(mi, wr, ii), wi; + } + function ir(Ir, wr, Ur) { + var ii = $(wr, I); + if (Ur) + Ge(Ir, 0, ii); + else { + var mi = j.getLineAndCharacterOfPosition(Ir), pe = e.getStartPositionOfLine(mi.line, j); + (wr !== Cr(pe, mi.character) || Ye(ii, pe)) && Ge(pe, mi.character, ii); + } + } + function Cr(Ir, wr) { + for (var Ur = 0, ii = 0; ii < wr; ii++) + j.text.charCodeAt(Ir + ii) === 9 ? Ur += I.tabSize - Ur % I.tabSize : Ur++; + return Ur; + } + function Ye(Ir, wr) { + return Ir !== j.text.substr(wr, Ir.length); + } + function Br(Ir, wr, Ur, ii) { + ii === void 0 && (ii = true); + var mi = j.getLineAndCharacterOfPosition(Ir.pos).line, pe = j.getLineAndCharacterOfPosition(Ir.end).line; + if (mi === pe) { + Ur || ir(Ir.pos, wr, false); + return; + } + for (var or = [], qr = Ir.pos, si = mi; si < pe; si++) { + var Di = e.getEndLinePosition(si, j); + or.push({ pos: qr, end: Di }), qr = e.getStartPositionOfLine(si + 1, j); + } + if (ii && or.push({ pos: qr, end: Ir.end }), or.length !== 0) { + var wi = e.getStartPositionOfLine(mi, j), Xi = C.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(wi, or[0].pos, j, I), et = 0; + Ur && (et = 1, mi++); + for (var Gi = wr - Xi.column, Wt = et; Wt < or.length; Wt++, mi++) { + var Zt = e.getStartPositionOfLine(mi, j), _r = Wt === 0 ? Xi : C.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(or[Wt].pos, or[Wt].end, j, I), pi = _r.column + Gi; + if (pi > 0) { + var ae = $(pi, I); + Ge(Zt, _r.character, ae); + } else + be(Zt, _r.character); + } + } + } + function Er(Ir, wr, Ur) { + for (var ii = Ir; ii < wr; ii++) { + var mi = e.getStartPositionOfLine(ii, j), pe = e.getEndLinePosition(ii, j); + if (!(Ur && (e.isComment(Ur.kind) || e.isStringOrRegularExpressionOrTemplateLiteral(Ur.kind)) && Ur.pos <= pe && Ur.end > pe)) { + var or = Ne(mi, pe); + or !== -1 && (e.Debug.assert(or === mi || !e.isWhiteSpaceSingleLine(j.text.charCodeAt(or - 1))), be(or, pe + 1 - or)); + } + } + } + function Ne(Ir, wr) { + for (var Ur = wr; Ur >= Ir && e.isWhiteSpaceSingleLine(j.text.charCodeAt(Ur)); ) + Ur--; + return Ur !== wr ? Ur + 1 : -1; + } + function n(Ir) { + for (var wr = fe ? fe.end : A.pos, Ur = 0, ii = Ir; Ur < ii.length; Ur++) { + var mi = ii[Ur]; + e.isComment(mi.kind) && (wr < mi.pos && lr(wr, mi.pos - 1, fe), wr = mi.end + 1); + } + wr < A.end && lr(wr, A.end, fe); + } + function lr(Ir, wr, Ur) { + var ii = j.getLineAndCharacterOfPosition(Ir).line, mi = j.getLineAndCharacterOfPosition(wr).line; + Er(ii, mi + 1, Ur); + } + function be(Ir, wr) { + wr && Fe.push(e.createTextChangeFromStartLength(Ir, wr, "")); + } + function Ge(Ir, wr, Ur) { + (wr || Ur) && Fe.push(e.createTextChangeFromStartLength(Ir, wr, Ur)); + } + function ur(Ir, wr) { + wr && Fe.push(e.createTextChangeFromStartLength(Ir, 0, wr)); + } + function yr(Ir, wr, Ur, ii, mi) { + var pe = mi !== Ur; + switch (Ir.action) { + case 1: + return 0; + case 16: + if (wr.end !== ii.pos) + return be(wr.end, ii.pos - wr.end), pe ? 2 : 0; + break; + case 32: + be(wr.pos, wr.end - wr.pos); + break; + case 8: + if (Ir.flags !== 1 && Ur !== mi) + return 0; + var or = mi - Ur; + if (or !== 1) + return Ge(wr.end, ii.pos - wr.end, e.getNewLineOrDefaultFromHost(d, I)), pe ? 0 : 1; + break; + case 4: + if (Ir.flags !== 1 && Ur !== mi) + return 0; + var qr = ii.pos - wr.end; + if (qr !== 1 || j.text.charCodeAt(wr.end) !== 32) + return Ge(wr.end, ii.pos - wr.end, " "), pe ? 2 : 0; + break; + case 64: + ur(wr.end, ";"); + } + return 0; + } + } + var O; + (function(A) { + A[A.None = 0] = "None", A[A.LineAdded = 1] = "LineAdded", A[A.LineRemoved = 2] = "LineRemoved"; + })(O || (O = {})); + function ve(A, y, V, L) { + L === void 0 && (L = e.getTokenAtPosition(A, y)); + var P = e.findAncestor(L, e.isJSDoc); + P && (L = P.parent); + var k = L.getStart(A); + if (!(k <= y && y < L.getEnd())) { + V = V === null ? void 0 : V === void 0 ? e.findPrecedingToken(y, A) : V; + var Y = V && e.getTrailingCommentRanges(A.text, V.end), U = e.getLeadingCommentRangesOfNode(L, A), j = e.concatenate(Y, U); + return j && e.find(j, function(H) { + return e.rangeContainsPositionExclusive(H, y) || y === H.end && (H.kind === 2 || y === A.getFullWidth()); + }); + } + } + C.getRangeOfEnclosingComment = ve; + function ee(A, y) { + switch (A.kind) { + case 171: + case 256: + case 213: + case 169: + case 168: + case 214: + if (A.typeParameters === y) + return 29; + if (A.parameters === y) + return 20; + break; + case 208: + case 209: + if (A.typeArguments === y) + return 29; + if (A.arguments === y) + return 20; + break; + case 178: + if (A.typeArguments === y) + return 29; + break; + case 182: + return 18; + } + return 0; + } + function he(A) { + switch (A) { + case 20: + return 21; + case 29: + return 31; + case 18: + return 19; + } + return 0; + } + var F, x, X; + function $(A, y) { + var V = !F || F.tabSize !== y.tabSize || F.indentSize !== y.indentSize; + if (V && (F = { tabSize: y.tabSize, indentSize: y.indentSize }, x = X = void 0), y.convertTabsToSpaces) { + var Y = void 0, U = Math.floor(A / y.indentSize), j = A % y.indentSize; + return X || (X = []), X[U] === void 0 ? (Y = e.repeatString(" ", y.indentSize * U), X[U] = Y) : Y = X[U], j ? Y + e.repeatString(" ", j) : Y; + } else { + var L = Math.floor(A / y.tabSize), P = A - L * y.tabSize, k = void 0; + return x || (x = []), x[L] === void 0 ? x[L] = k = e.repeatString(" ", L) : k = x[L], P ? k + e.repeatString(" ", P) : k; + } + } + C.getIndentationString = $; + })(a = e.formatting || (e.formatting = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E; + (function(U) { + U[U.Unknown = -1] = "Unknown"; + })(E || (E = {})); + function Q(U, j, H, I) { + if (I === void 0 && (I = false), U > j.text.length) + return G(H); + if (H.indentStyle === e.IndentStyle.None) + return 0; + var l = e.findPrecedingToken(U, j, void 0, true), d = C.getRangeOfEnclosingComment(j, U, l || null); + if (d && d.kind === 3) + return le(j, U, H, d); + if (!l) + return G(H); + var D = e.isStringOrRegularExpressionOrTemplateLiteral(l.kind); + if (D && l.getStart(j) <= U && U < l.end) + return 0; + var fe = j.getLineAndCharacterOfPosition(U).line, g = e.getTokenAtPosition(j, U), ne = g.kind === 18 && g.parent.kind === 205; + if (H.indentStyle === e.IndentStyle.Block || ne) + return N(j, U, H); + if (l.kind === 27 && l.parent.kind !== 221) { + var ue = T(l, j, H); + if (ue !== -1) + return ue; + } + var We = ee(U, l.parent, j); + if (We && !e.rangeContainsRange(We, l)) { + var Fe = [213, 214].indexOf(g.parent.kind) !== -1, Z = Fe ? 0 : H.indentSize; + return x(We, j, H) + Z; + } + return p(j, U, l, fe, I, H); + } + B.getIndentation = Q; + function le(U, j, H, I) { + var l = e.getLineAndCharacterOfPosition(U, j).line - 1, d = e.getLineAndCharacterOfPosition(U, I.pos).line; + if (e.Debug.assert(d >= 0), l <= d) + return V(e.getStartPositionOfLine(d, U), j, U, H); + var D = e.getStartPositionOfLine(l, U), fe = y(D, j, U, H), g = fe.column, ne = fe.character; + if (g === 0) + return g; + var ue = U.text.charCodeAt(D + ne); + return ue === 42 ? g - 1 : g; + } + function N(U, j, H) { + for (var I = j; I > 0; ) { + var l = U.text.charCodeAt(I); + if (!e.isWhiteSpaceLike(l)) + break; + I--; + } + var d = e.getLineStartPositionForPosition(I, U); + return V(d, I, U, H); + } + function p(U, j, H, I, l, d) { + for (var D, fe = H; fe; ) { + if (e.positionBelongsToNode(fe, j, U) && k(d, fe, D, U, true)) { + var g = J(fe, U), ne = se(H, fe, I, U), ue = ne !== 0 ? l && ne === 2 ? d.indentSize : 0 : I !== g.line ? d.indentSize : 0; + return oe(fe, g, void 0, ue, U, true, d); + } + var We = X(fe, U, d, true); + if (We !== -1) + return We; + D = fe, fe = fe.parent; + } + return G(d); + } + function m(U, j, H, I) { + var l = H.getLineAndCharacterOfPosition(U.getStart(H)); + return oe(U, l, j, 0, H, false, I); + } + B.getIndentationForNode = m; + function G(U) { + return U.baseIndentSize || 0; + } + B.getBaseIndentation = G; + function oe(U, j, H, I, l, d, D) { + for (var fe, g = U.parent; g; ) { + var ne = true; + if (H) { + var ue = U.getStart(l); + ne = ue < H.pos || ue > H.end; + } + var We = f(g, U, l), Fe = We.line === j.line || R(g, U, j.line, l); + if (ne) { + var Z = (fe = ve(U, l)) === null || fe === void 0 ? void 0 : fe[0], Be = !!Z && J(Z, l).line > We.line, ge = X(U, l, D, Be); + if (ge !== -1 || (ge = K(U, g, j, Fe, l, D), ge !== -1)) + return ge + I; + } + k(D, g, U, l, d) && !Fe && (I += D.indentSize); + var Re = ie(g, U, j.line, l); + U = g, g = U.parent, j = Re ? l.getLineAndCharacterOfPosition(U.getStart(l)) : We; + } + return I + G(D); + } + function f(U, j, H) { + var I = ve(j, H), l = I ? I.pos : U.getStart(H); + return H.getLineAndCharacterOfPosition(l); + } + function T(U, j, H) { + var I = e.findListItemInfo(U); + return I && I.listItemIndex > 0 ? $(I.list.getChildren(), I.listItemIndex - 1, j, H) : -1; + } + function K(U, j, H, I, l, d) { + var D = (e.isDeclaration(U) || e.isStatementButNotDeclaration(U)) && (j.kind === 305 || !I); + return D ? A(H, l, d) : -1; + } + var b; + (function(U) { + U[U.Unknown = 0] = "Unknown", U[U.OpenBrace = 1] = "OpenBrace", U[U.CloseBrace = 2] = "CloseBrace"; + })(b || (b = {})); + function se(U, j, H, I) { + var l = e.findNextToken(U, j, I); + if (!l) + return 0; + if (l.kind === 18) + return 1; + if (l.kind === 19) { + var d = J(l, I).line; + return H === d ? 2 : 0; + } + return 0; + } + function J(U, j) { + return j.getLineAndCharacterOfPosition(U.getStart(j)); + } + function ie(U, j, H, I) { + if (!(e.isCallExpression(U) && e.contains(U.arguments, j))) + return false; + var l = U.expression.getEnd(), d = e.getLineAndCharacterOfPosition(I, l).line; + return d === H; + } + B.isArgumentAndStartLineOverlapsExpressionBeingCalled = ie; + function R(U, j, H, I) { + if (U.kind === 239 && U.elseStatement === j) { + var l = e.findChildOfKind(U, 91, I); + e.Debug.assert(l !== void 0); + var d = J(l, I).line; + return d === H; + } + return false; + } + B.childStartsOnTheSameLineWithElseInIfStatement = R; + function q(U, j, H, I) { + if (e.isConditionalExpression(U) && (j === U.whenTrue || j === U.whenFalse)) { + var l = e.getLineAndCharacterOfPosition(I, U.condition.end).line; + if (j === U.whenTrue) + return H === l; + var d = J(U.whenTrue, I).line, D = e.getLineAndCharacterOfPosition(I, U.whenTrue.end).line; + return l === d && D === H; + } + return false; + } + B.childIsUnindentedBranchOfConditionalExpression = q; + function O(U, j, H, I) { + if (e.isCallOrNewExpression(U)) { + if (!U.arguments) + return false; + var l = e.find(U.arguments, function(g) { + return g.pos === j.pos; + }); + if (!l) + return false; + var d = U.arguments.indexOf(l); + if (d === 0) + return false; + var D = U.arguments[d - 1], fe = e.getLineAndCharacterOfPosition(I, D.getEnd()).line; + if (H === fe) + return true; + } + return false; + } + B.argumentStartsOnSameLineAsPreviousArgument = O; + function ve(U, j) { + return U.parent && he(U.getStart(j), U.getEnd(), U.parent, j); + } + B.getContainingList = ve; + function ee(U, j, H) { + return j && he(U, U, j, H); + } + function he(U, j, H, I) { + switch (H.kind) { + case 178: + return l(H.typeArguments); + case 205: + return l(H.properties); + case 204: + return l(H.elements); + case 182: + return l(H.members); + case 256: + case 213: + case 214: + case 169: + case 168: + case 174: + case 171: + case 180: + case 175: + return l(H.typeParameters) || l(H.parameters); + case 172: + return l(H.parameters); + case 257: + case 226: + case 258: + case 259: + case 344: + return l(H.typeParameters); + case 209: + case 208: + return l(H.typeArguments) || l(H.arguments); + case 255: + return l(H.declarations); + case 269: + case 273: + return l(H.elements); + case 201: + case 202: + return l(H.elements); + } + function l(d) { + return d && e.rangeContainsStartEnd(F(H, d, I), U, j) ? d : void 0; + } + } + function F(U, j, H) { + for (var I = U.getChildren(H), l = 1; l < I.length - 1; l++) + if (I[l].pos === j.pos && I[l].end === j.end) + return { pos: I[l - 1].end, end: I[l + 1].getStart(H) }; + return j; + } + function x(U, j, H) { + return U ? A(j.getLineAndCharacterOfPosition(U.pos), j, H) : -1; + } + function X(U, j, H, I) { + if (U.parent && U.parent.kind === 255) + return -1; + var l = ve(U, j); + if (l) { + var d = l.indexOf(U); + if (d !== -1) { + var D = $(l, d, j, H); + if (D !== -1) + return D; + } + return x(l, j, H) + (I ? H.indentSize : 0); + } + return -1; + } + function $(U, j, H, I) { + e.Debug.assert(j >= 0 && j < U.length); + for (var l = U[j], d = J(l, H), D = j - 1; D >= 0; D--) + if (U[D].kind !== 27) { + var fe = H.getLineAndCharacterOfPosition(U[D].end).line; + if (fe !== d.line) + return A(d, H, I); + d = J(U[D], H); + } + return -1; + } + function A(U, j, H) { + var I = j.getPositionOfLineAndCharacter(U.line, 0); + return V(I, I + U.character, j, H); + } + function y(U, j, H, I) { + for (var l = 0, d = 0, D = U; D < j; D++) { + var fe = H.text.charCodeAt(D); + if (!e.isWhiteSpaceSingleLine(fe)) + break; + fe === 9 ? d += I.tabSize + d % I.tabSize : d++, l++; + } + return { column: d, character: l }; + } + B.findFirstNonWhitespaceCharacterAndColumn = y; + function V(U, j, H, I) { + return y(U, j, H, I).column; + } + B.findFirstNonWhitespaceColumn = V; + function L(U, j, H, I, l) { + var d = H ? H.kind : 0; + switch (j.kind) { + case 238: + case 257: + case 226: + case 258: + case 260: + case 259: + case 204: + case 235: + case 262: + case 205: + case 182: + case 195: + case 184: + case 263: + case 290: + case 289: + case 212: + case 206: + case 208: + case 209: + case 237: + case 271: + case 247: + case 222: + case 202: + case 201: + case 280: + case 283: + case 279: + case 288: + case 168: + case 174: + case 175: + case 164: + case 179: + case 180: + case 191: + case 210: + case 218: + case 273: + case 269: + case 275: + case 270: + case 167: + return true; + case 254: + case 296: + case 221: + if (!U.indentMultiLineObjectLiteralBeginningOnBlankLine && I && d === 205) + return Y(I, H); + if (j.kind === 221 && I && H && d === 278) { + var D = I.getLineAndCharacterOfPosition(e.skipTrivia(I.text, j.pos)).line, fe = I.getLineAndCharacterOfPosition(e.skipTrivia(I.text, H.pos)).line; + return D !== fe; + } + if (j.kind !== 221) + return true; + break; + case 240: + case 241: + case 243: + case 244: + case 242: + case 239: + case 256: + case 213: + case 169: + case 171: + case 172: + case 173: + return d !== 235; + case 214: + return I && d === 212 ? Y(I, H) : d !== 235; + case 272: + return d !== 273; + case 266: + return d !== 267 || !!H.namedBindings && H.namedBindings.kind !== 269; + case 278: + return d !== 281; + case 282: + return d !== 284; + case 188: + case 187: + if (d === 182 || d === 184) + return false; + break; + } + return l; + } + B.nodeWillIndentChild = L; + function P(U, j) { + switch (U) { + case 247: + case 251: + case 245: + case 246: + return j.kind !== 235; + default: + return false; + } + } + function k(U, j, H, I, l) { + return l === void 0 && (l = false), L(U, j, H, I, false) && !(l && H && P(H.kind, j)); + } + B.shouldIndentChildNode = k; + function Y(U, j) { + var H = e.skipTrivia(U.text, j.pos), I = U.getLineAndCharacterOfPosition(H).line, l = U.getLineAndCharacterOfPosition(j.end).line; + return I === l; + } + })(w = C.SmartIndenter || (C.SmartIndenter = {})); + })(a = e.formatting || (e.formatting = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(H) { + var I = H.__pos; + return e.Debug.assert(typeof I == "number"), I; + } + function B(H, I) { + e.Debug.assert(typeof I == "number"), H.__pos = I; + } + function E(H) { + var I = H.__end; + return e.Debug.assert(typeof I == "number"), I; + } + function Q(H, I) { + e.Debug.assert(typeof I == "number"), H.__end = I; + } + var le; + (function(H) { + H[H.Exclude = 0] = "Exclude", H[H.IncludeAll = 1] = "IncludeAll", H[H.JSDoc = 2] = "JSDoc", H[H.StartLine = 3] = "StartLine"; + })(le = C.LeadingTriviaOption || (C.LeadingTriviaOption = {})); + var N; + (function(H) { + H[H.Exclude = 0] = "Exclude", H[H.ExcludeWhitespace = 1] = "ExcludeWhitespace", H[H.Include = 2] = "Include"; + })(N = C.TrailingTriviaOption || (C.TrailingTriviaOption = {})); + function p(H, I) { + return e.skipTrivia(H, I, false, true); + } + function m(H, I) { + for (var l = I; l < H.length; ) { + var d = H.charCodeAt(l); + if (e.isWhiteSpaceSingleLine(d)) { + l++; + continue; + } + return d === 47; + } + return false; + } + var G = { leadingTriviaOption: le.Exclude, trailingTriviaOption: N.Exclude }, oe; + (function(H) { + H[H.Remove = 0] = "Remove", H[H.ReplaceWithSingleNode = 1] = "ReplaceWithSingleNode", H[H.ReplaceWithMultipleNodes = 2] = "ReplaceWithMultipleNodes", H[H.Text = 3] = "Text"; + })(oe || (oe = {})); + function f(H, I, l, d) { + return { pos: T(H, I, d), end: b(H, l, d) }; + } + function T(H, I, l, d) { + var D, fe; + d === void 0 && (d = false); + var g = l.leadingTriviaOption; + if (g === le.Exclude) + return I.getStart(H); + if (g === le.StartLine) { + var ne = I.getStart(H), ue = e.getLineStartPositionForPosition(ne, H); + return e.rangeContainsPosition(I, ue) ? ue : ne; + } + if (g === le.JSDoc) { + var We = e.getJSDocCommentRanges(I, H.text); + if (We != null && We.length) + return e.getLineStartPositionForPosition(We[0].pos, H); + } + var Fe = I.getFullStart(), Z = I.getStart(H); + if (Fe === Z) + return Z; + var Be = e.getLineStartPositionForPosition(Fe, H), ge = e.getLineStartPositionForPosition(Z, H); + if (ge === Be) + return g === le.IncludeAll ? Fe : Z; + if (d) { + var Re = ((D = e.getLeadingCommentRanges(H.text, Fe)) === null || D === void 0 ? void 0 : D[0]) || ((fe = e.getTrailingCommentRanges(H.text, Fe)) === null || fe === void 0 ? void 0 : fe[0]); + if (Re) + return e.skipTrivia(H.text, Re.end, true, true); + } + var ze = Fe > 0 ? 1 : 0, Ee = e.getStartPositionOfLine(e.getLineOfLocalPosition(H, Be) + ze, H); + return Ee = p(H.text, Ee), e.getStartPositionOfLine(e.getLineOfLocalPosition(H, Ee), H); + } + function K(H, I, l) { + var d = I.end, D = l.trailingTriviaOption; + if (D === N.Include) { + var fe = e.getTrailingCommentRanges(H.text, d); + if (fe) + for (var g = e.getLineOfLocalPosition(H, I.end), ne = 0, ue = fe; ne < ue.length; ne++) { + var We = ue[ne]; + if (We.kind === 2 || e.getLineOfLocalPosition(H, We.pos) > g) + break; + var Fe = e.getLineOfLocalPosition(H, We.end); + if (Fe > g) + return e.skipTrivia(H.text, We.end, true, true); + } + } + } + function b(H, I, l) { + var d, D = I.end, fe = l.trailingTriviaOption; + if (fe === N.Exclude) + return D; + if (fe === N.ExcludeWhitespace) { + var g = e.concatenate(e.getTrailingCommentRanges(H.text, D), e.getLeadingCommentRanges(H.text, D)), ne = (d = g == null ? void 0 : g[g.length - 1]) === null || d === void 0 ? void 0 : d.end; + return ne || D; + } + var ue = K(H, I, l); + if (ue) + return ue; + var We = e.skipTrivia(H.text, D, true); + return We !== D && (fe === N.Include || e.isLineBreak(H.text.charCodeAt(We - 1))) ? We : D; + } + function se(H, I) { + return !!I && !!H.parent && (I.kind === 27 || I.kind === 26 && H.parent.kind === 205); + } + function J(H) { + return e.isFunctionExpression(H) || e.isFunctionDeclaration(H); + } + C.isThisTypeAnnotatable = J; + var ie = function() { + function H(I, l) { + this.newLineCharacter = I, this.formatContext = l, this.changes = [], this.newFiles = [], this.classesWithNodesInsertedAtStart = new e.Map(), this.deletedNodes = []; + } + return H.fromContext = function(I) { + return new H(e.getNewLineOrDefaultFromHost(I.host, I.formatContext.options), I.formatContext); + }, H.with = function(I, l) { + var d = H.fromContext(I); + return l(d), d.getChanges(); + }, H.prototype.pushRaw = function(I, l) { + e.Debug.assertEqual(I.fileName, l.fileName); + for (var d = 0, D = l.textChanges; d < D.length; d++) { + var fe = D[d]; + this.changes.push({ kind: oe.Text, sourceFile: I, text: fe.newText, range: e.createTextRangeFromSpan(fe.span) }); + } + }, H.prototype.deleteRange = function(I, l) { + this.changes.push({ kind: oe.Remove, sourceFile: I, range: l }); + }, H.prototype.delete = function(I, l) { + this.deletedNodes.push({ sourceFile: I, node: l }); + }, H.prototype.deleteNode = function(I, l, d) { + d === void 0 && (d = { leadingTriviaOption: le.IncludeAll }), this.deleteRange(I, f(I, l, l, d)); + }, H.prototype.deleteNodes = function(I, l, d, D) { + d === void 0 && (d = { leadingTriviaOption: le.IncludeAll }); + for (var fe = 0, g = l; fe < g.length; fe++) { + var ne = g[fe], ue = T(I, ne, d, D), We = b(I, ne, d); + this.deleteRange(I, { pos: ue, end: We }), D = !!K(I, ne, d); + } + }, H.prototype.deleteModifier = function(I, l) { + this.deleteRange(I, { pos: l.getStart(I), end: e.skipTrivia(I.text, l.end, true) }); + }, H.prototype.deleteNodeRange = function(I, l, d, D) { + D === void 0 && (D = { leadingTriviaOption: le.IncludeAll }); + var fe = T(I, l, D), g = b(I, d, D); + this.deleteRange(I, { pos: fe, end: g }); + }, H.prototype.deleteNodeRangeExcludingEnd = function(I, l, d, D) { + D === void 0 && (D = { leadingTriviaOption: le.IncludeAll }); + var fe = T(I, l, D), g = d === void 0 ? I.text.length : T(I, d, D); + this.deleteRange(I, { pos: fe, end: g }); + }, H.prototype.replaceRange = function(I, l, d, D) { + D === void 0 && (D = {}), this.changes.push({ kind: oe.ReplaceWithSingleNode, sourceFile: I, range: l, options: D, node: d }); + }, H.prototype.replaceNode = function(I, l, d, D) { + D === void 0 && (D = G), this.replaceRange(I, f(I, l, l, D), d, D); + }, H.prototype.replaceNodeRange = function(I, l, d, D, fe) { + fe === void 0 && (fe = G), this.replaceRange(I, f(I, l, d, fe), D, fe); + }, H.prototype.replaceRangeWithNodes = function(I, l, d, D) { + D === void 0 && (D = {}), this.changes.push({ kind: oe.ReplaceWithMultipleNodes, sourceFile: I, range: l, options: D, nodes: d }); + }, H.prototype.replaceNodeWithNodes = function(I, l, d, D) { + D === void 0 && (D = G), this.replaceRangeWithNodes(I, f(I, l, l, D), d, D); + }, H.prototype.replaceNodeWithText = function(I, l, d) { + this.replaceRangeWithText(I, f(I, l, l, G), d); + }, H.prototype.replaceNodeRangeWithNodes = function(I, l, d, D, fe) { + fe === void 0 && (fe = G), this.replaceRangeWithNodes(I, f(I, l, d, fe), D, fe); + }, H.prototype.nodeHasTrailingComment = function(I, l, d) { + return d === void 0 && (d = G), !!K(I, l, d); + }, H.prototype.nextCommaToken = function(I, l) { + var d = e.findNextToken(l, l.parent, I); + return d && d.kind === 27 ? d : void 0; + }, H.prototype.replacePropertyAssignment = function(I, l, d) { + var D = this.nextCommaToken(I, l) ? "" : "," + this.newLineCharacter; + this.replaceNode(I, l, d, { suffix: D }); + }, H.prototype.insertNodeAt = function(I, l, d, D) { + D === void 0 && (D = {}), this.replaceRange(I, e.createRange(l), d, D); + }, H.prototype.insertNodesAt = function(I, l, d, D) { + D === void 0 && (D = {}), this.replaceRangeWithNodes(I, e.createRange(l), d, D); + }, H.prototype.insertNodeAtTopOfFile = function(I, l, d) { + this.insertAtTopOfFile(I, l, d); + }, H.prototype.insertNodesAtTopOfFile = function(I, l, d) { + this.insertAtTopOfFile(I, l, d); + }, H.prototype.insertAtTopOfFile = function(I, l, d) { + var D = L(I), fe = { prefix: D === 0 ? void 0 : this.newLineCharacter, suffix: (e.isLineBreak(I.text.charCodeAt(D)) ? "" : this.newLineCharacter) + (d ? this.newLineCharacter : "") }; + e.isArray(l) ? this.insertNodesAt(I, D, l, fe) : this.insertNodeAt(I, D, l, fe); + }, H.prototype.insertFirstParameter = function(I, l, d) { + var D = e.firstOrUndefined(l); + D ? this.insertNodeBefore(I, D, d) : this.insertNodeAt(I, l.pos, d); + }, H.prototype.insertNodeBefore = function(I, l, d, D, fe) { + D === void 0 && (D = false), fe === void 0 && (fe = {}), this.insertNodeAt(I, T(I, l, fe), d, this.getOptionsForInsertNodeBefore(l, d, D)); + }, H.prototype.insertModifierAt = function(I, l, d, D) { + D === void 0 && (D = {}), this.insertNodeAt(I, l, e.factory.createToken(d), D); + }, H.prototype.insertModifierBefore = function(I, l, d) { + return this.insertModifierAt(I, d.getStart(I), l, { suffix: " " }); + }, H.prototype.insertCommentBeforeLine = function(I, l, d, D) { + var fe = e.getStartPositionOfLine(l, I), g = e.getFirstNonSpaceCharacterPosition(I.text, fe), ne = P(I, g), ue = e.getTouchingToken(I, ne ? g : d), We = I.text.slice(fe, g), Fe = "".concat(ne ? "" : this.newLineCharacter, "//").concat(D).concat(this.newLineCharacter).concat(We); + this.insertText(I, ue.getStart(I), Fe); + }, H.prototype.insertJsdocCommentBefore = function(I, l, d) { + var D = l.getStart(I); + if (l.jsDoc) + for (var fe = 0, g = l.jsDoc; fe < g.length; fe++) { + var ne = g[fe]; + this.deleteRange(I, { pos: e.getLineStartPositionForPosition(ne.getStart(I), I), end: b(I, ne, {}) }); + } + var ue = e.getPrecedingNonSpaceCharacterPosition(I.text, D - 1), We = I.text.slice(ue, D); + this.insertNodeAt(I, D, d, { suffix: this.newLineCharacter + We }); + }, H.prototype.createJSDocText = function(I, l) { + var d = e.flatMap(l.jsDoc, function(fe) { + return e.isString(fe.comment) ? e.factory.createJSDocText(fe.comment) : fe.comment; + }), D = e.singleOrUndefined(l.jsDoc); + return D && e.positionsAreOnSameLine(D.pos, D.end, I) && e.length(d) === 0 ? void 0 : e.factory.createNodeArray(e.intersperse(d, e.factory.createJSDocText(` +`))); + }, H.prototype.replaceJSDocComment = function(I, l, d) { + this.insertJsdocCommentBefore(I, R(l), e.factory.createJSDocComment(this.createJSDocText(I, l), e.factory.createNodeArray(d))); + }, H.prototype.addJSDocTags = function(I, l, d) { + var D = e.flatMapToMutable(l.jsDoc, function(g) { + return g.tags; + }), fe = d.filter(function(g) { + return !D.some(function(ne, ue) { + var We = q(ne, g); + return We && (D[ue] = We), !!We; + }); + }); + this.replaceJSDocComment(I, l, Ve(Ve([], D, true), fe, true)); + }, H.prototype.filterJSDocTags = function(I, l, d) { + this.replaceJSDocComment(I, l, e.filter(e.flatMapToMutable(l.jsDoc, function(D) { + return D.tags; + }), d)); + }, H.prototype.replaceRangeWithText = function(I, l, d) { + this.changes.push({ kind: oe.Text, sourceFile: I, range: l, text: d }); + }, H.prototype.insertText = function(I, l, d) { + this.replaceRangeWithText(I, e.createRange(l), d); + }, H.prototype.tryInsertTypeAnnotation = function(I, l, d) { + var D, fe; + if (e.isFunctionLike(l)) { + if (fe = e.findChildOfKind(l, 21, I), !fe) { + if (!e.isArrowFunction(l)) + return false; + fe = e.first(l.parameters); + } + } else + fe = (D = l.kind === 254 ? l.exclamationToken : l.questionToken) !== null && D !== void 0 ? D : l.name; + return this.insertNodeAt(I, fe.end, d, { prefix: ": " }), true; + }, H.prototype.tryInsertThisTypeAnnotation = function(I, l, d) { + var D = e.findChildOfKind(l, 20, I).getStart(I) + 1, fe = l.parameters.length ? ", " : ""; + this.insertNodeAt(I, D, d, { prefix: "this: ", suffix: fe }); + }, H.prototype.insertTypeParameters = function(I, l, d) { + var D = (e.findChildOfKind(l, 20, I) || e.first(l.parameters)).getStart(I); + this.insertNodesAt(I, D, d, { prefix: "<", suffix: ">", joiner: ", " }); + }, H.prototype.getOptionsForInsertNodeBefore = function(I, l, d) { + return e.isStatement(I) || e.isClassElement(I) ? { suffix: d ? this.newLineCharacter + this.newLineCharacter : this.newLineCharacter } : e.isVariableDeclaration(I) ? { suffix: ", " } : e.isParameter(I) ? e.isParameter(l) ? { suffix: ", " } : {} : e.isStringLiteral(I) && e.isImportDeclaration(I.parent) || e.isNamedImports(I) ? { suffix: ", " } : e.isImportSpecifier(I) ? { suffix: "," + (d ? this.newLineCharacter : " ") } : e.Debug.failBadSyntaxKind(I); + }, H.prototype.insertNodeAtConstructorStart = function(I, l, d) { + var D = e.firstOrUndefined(l.body.statements); + !D || !l.body.multiLine ? this.replaceConstructorBody(I, l, Ve([d], l.body.statements, true)) : this.insertNodeBefore(I, D, d); + }, H.prototype.insertNodeAtConstructorStartAfterSuperCall = function(I, l, d) { + var D = e.find(l.body.statements, function(fe) { + return e.isExpressionStatement(fe) && e.isSuperCall(fe.expression); + }); + !D || !l.body.multiLine ? this.replaceConstructorBody(I, l, Ve(Ve([], l.body.statements, true), [d], false)) : this.insertNodeAfter(I, D, d); + }, H.prototype.insertNodeAtConstructorEnd = function(I, l, d) { + var D = e.lastOrUndefined(l.body.statements); + !D || !l.body.multiLine ? this.replaceConstructorBody(I, l, Ve(Ve([], l.body.statements, true), [d], false)) : this.insertNodeAfter(I, D, d); + }, H.prototype.replaceConstructorBody = function(I, l, d) { + this.replaceNode(I, l.body, e.factory.createBlock(d, true)); + }, H.prototype.insertNodeAtEndOfScope = function(I, l, d) { + var D = T(I, l.getLastToken(), {}); + this.insertNodeAt(I, D, d, { prefix: e.isLineBreak(I.text.charCodeAt(l.getLastToken().pos)) ? this.newLineCharacter : this.newLineCharacter + this.newLineCharacter, suffix: this.newLineCharacter }); + }, H.prototype.insertMemberAtStart = function(I, l, d) { + this.insertNodeAtStartWorker(I, l, d); + }, H.prototype.insertNodeAtObjectStart = function(I, l, d) { + this.insertNodeAtStartWorker(I, l, d); + }, H.prototype.insertNodeAtStartWorker = function(I, l, d) { + var D, fe = (D = this.guessIndentationFromExistingMembers(I, l)) !== null && D !== void 0 ? D : this.computeIndentationForNewMember(I, l); + this.insertNodeAt(I, ee(l).pos, d, this.getInsertNodeAtStartInsertOptions(I, l, fe)); + }, H.prototype.guessIndentationFromExistingMembers = function(I, l) { + for (var d, D = l, fe = 0, g = ee(l); fe < g.length; fe++) { + var ne = g[fe]; + if (e.rangeStartPositionsAreOnSameLine(D, ne, I)) + return; + var ue = ne.getStart(I), We = e.formatting.SmartIndenter.findFirstNonWhitespaceColumn(e.getLineStartPositionForPosition(ue, I), ue, I, this.formatContext.options); + if (d === void 0) + d = We; + else if (We !== d) + return; + D = ne; + } + return d; + }, H.prototype.computeIndentationForNewMember = function(I, l) { + var d, D = l.getStart(I); + return e.formatting.SmartIndenter.findFirstNonWhitespaceColumn(e.getLineStartPositionForPosition(D, I), D, I, this.formatContext.options) + ((d = this.formatContext.options.indentSize) !== null && d !== void 0 ? d : 4); + }, H.prototype.getInsertNodeAtStartInsertOptions = function(I, l, d) { + var D = ee(l), fe = D.length === 0, g = e.addToSeen(this.classesWithNodesInsertedAtStart, e.getNodeId(l), { node: l, sourceFile: I }), ne = e.isObjectLiteralExpression(l) && (!e.isJsonSourceFile(I) || !fe), ue = e.isObjectLiteralExpression(l) && e.isJsonSourceFile(I) && fe && !g; + return { indentation: d, prefix: (ue ? "," : "") + this.newLineCharacter, suffix: ne ? "," : "" }; + }, H.prototype.insertNodeAfterComma = function(I, l, d) { + var D = this.insertNodeAfterWorker(I, this.nextCommaToken(I, l) || l, d); + this.insertNodeAt(I, D, d, this.getInsertNodeAfterOptions(I, l)); + }, H.prototype.insertNodeAfter = function(I, l, d) { + var D = this.insertNodeAfterWorker(I, l, d); + this.insertNodeAt(I, D, d, this.getInsertNodeAfterOptions(I, l)); + }, H.prototype.insertNodeAtEndOfList = function(I, l, d) { + this.insertNodeAt(I, l.end, d, { prefix: ", " }); + }, H.prototype.insertNodesAfter = function(I, l, d) { + var D = this.insertNodeAfterWorker(I, l, e.first(d)); + this.insertNodesAt(I, D, d, this.getInsertNodeAfterOptions(I, l)); + }, H.prototype.insertNodeAfterWorker = function(I, l, d) { + k(l, d) && I.text.charCodeAt(l.end - 1) !== 59 && this.replaceRange(I, e.createRange(l.end), e.factory.createToken(26)); + var D = b(I, l, {}); + return D; + }, H.prototype.getInsertNodeAfterOptions = function(I, l) { + var d = this.getInsertNodeAfterOptionsWorker(l); + return Ke(Ke({}, d), { prefix: l.end === I.end && e.isStatement(l) ? d.prefix ? ` +`.concat(d.prefix) : ` +` : d.prefix }); + }, H.prototype.getInsertNodeAfterOptionsWorker = function(I) { + switch (I.kind) { + case 257: + case 261: + return { prefix: this.newLineCharacter, suffix: this.newLineCharacter }; + case 254: + case 10: + case 79: + return { prefix: ", " }; + case 296: + return { suffix: "," + this.newLineCharacter }; + case 93: + return { prefix: " " }; + case 164: + return {}; + default: + return e.Debug.assert(e.isStatement(I) || e.isClassOrTypeElement(I)), { suffix: this.newLineCharacter }; + } + }, H.prototype.insertName = function(I, l, d) { + if (e.Debug.assert(!l.name), l.kind === 214) { + var D = e.findChildOfKind(l, 38, I), fe = e.findChildOfKind(l, 20, I); + fe ? (this.insertNodesAt(I, fe.getStart(I), [e.factory.createToken(98), e.factory.createIdentifier(d)], { joiner: " " }), U(this, I, D)) : (this.insertText(I, e.first(l.parameters).getStart(I), "function ".concat(d, "(")), this.replaceRange(I, D, e.factory.createToken(21))), l.body.kind !== 235 && (this.insertNodesAt(I, l.body.getStart(I), [e.factory.createToken(18), e.factory.createToken(105)], { joiner: " ", suffix: " " }), this.insertNodesAt(I, l.body.end, [e.factory.createToken(26), e.factory.createToken(19)], { joiner: " " })); + } else { + var g = e.findChildOfKind(l, l.kind === 213 ? 98 : 84, I).end; + this.insertNodeAt(I, g, e.factory.createIdentifier(d), { prefix: " " }); + } + }, H.prototype.insertExportModifier = function(I, l) { + this.insertText(I, l.getStart(I), "export "); + }, H.prototype.insertImportSpecifierAtIndex = function(I, l, d, D) { + var fe = d.elements[D - 1]; + fe ? this.insertNodeInListAfter(I, fe, l) : this.insertNodeBefore(I, d.elements[0], l, !e.positionsAreOnSameLine(d.elements[0].getStart(), d.parent.parent.getStart(), I)); + }, H.prototype.insertNodeInListAfter = function(I, l, d, D) { + if (D === void 0 && (D = e.formatting.SmartIndenter.getContainingList(l, I)), !D) { + e.Debug.fail("node is not a list element"); + return; + } + var fe = e.indexOfNode(D, l); + if (!(fe < 0)) { + var g = l.getEnd(); + if (fe !== D.length - 1) { + var ne = e.getTokenAtPosition(I, l.end); + if (ne && se(l, ne)) { + var ue = D[fe + 1], We = p(I.text, ue.getFullStart()), Fe = "".concat(e.tokenToString(ne.kind)).concat(I.text.substring(ne.end, We)); + this.insertNodesAt(I, We, [d], { suffix: Fe }); + } + } else { + var Z = l.getStart(I), Be = e.getLineStartPositionForPosition(Z, I), ge = void 0, Re = false; + if (D.length === 1) + ge = 27; + else { + var ze = e.findPrecedingToken(l.pos, I); + ge = se(l, ze) ? ze.kind : 27; + var Ee = e.getLineStartPositionForPosition(D[fe - 1].getStart(I), I); + Re = Ee !== Be; + } + if (m(I.text, l.end) && (Re = true), Re) { + this.replaceRange(I, e.createRange(g), e.factory.createToken(ge)); + for (var He = e.formatting.SmartIndenter.findFirstNonWhitespaceColumn(Be, Z, I, this.formatContext.options), rr = e.skipTrivia(I.text, g, true, false); rr !== g && e.isLineBreak(I.text.charCodeAt(rr - 1)); ) + rr--; + this.replaceRange(I, e.createRange(rr), d, { indentation: He, prefix: this.newLineCharacter }); + } else + this.replaceRange(I, e.createRange(g), d, { prefix: "".concat(e.tokenToString(ge), " ") }); + } + } + }, H.prototype.parenthesizeExpression = function(I, l) { + this.replaceRange(I, e.rangeOfNode(l), e.factory.createParenthesizedExpression(l)); + }, H.prototype.finishClassesWithNodesInsertedAtStart = function() { + var I = this; + this.classesWithNodesInsertedAtStart.forEach(function(l) { + var d = l.node, D = l.sourceFile, fe = ve(d, D), g = fe[0], ne = fe[1]; + if (g !== void 0 && ne !== void 0) { + var ue = ee(d).length === 0, We = e.positionsAreOnSameLine(g, ne, D); + ue && We && g !== ne - 1 && I.deleteRange(D, e.createRange(g, ne - 1)), We && I.insertText(D, ne - 1, I.newLineCharacter); + } + }); + }, H.prototype.finishDeleteDeclarations = function() { + for (var I = this, l = new e.Set(), d = function(Fe, Z) { + D.deletedNodes.some(function(Be) { + return Be.sourceFile === Fe && e.rangeContainsRangeExclusive(Be.node, Z); + }) || (e.isArray(Z) ? D.deleteRange(Fe, e.rangeOfTypeParameters(Fe, Z)) : Y.deleteDeclaration(D, l, Fe, Z)); + }, D = this, fe = 0, g = this.deletedNodes; fe < g.length; fe++) { + var ne = g[fe], ue = ne.sourceFile, We = ne.node; + d(ue, We); + } + l.forEach(function(Fe) { + var Z = Fe.getSourceFile(), Be = e.formatting.SmartIndenter.getContainingList(Fe, Z); + if (Fe === e.last(Be)) { + var ge = e.findLastIndex(Be, function(Re) { + return !l.has(Re); + }, Be.length - 2); + ge !== -1 && I.deleteRange(Z, { pos: Be[ge].end, end: O(Z, Be[ge + 1]) }); + } + }); + }, H.prototype.getChanges = function(I) { + this.finishDeleteDeclarations(), this.finishClassesWithNodesInsertedAtStart(); + for (var l = F.getTextChangesFromChanges(this.changes, this.newLineCharacter, this.formatContext, I), d = 0, D = this.newFiles; d < D.length; d++) { + var fe = D[d], g = fe.oldFile, ne = fe.fileName, ue = fe.statements; + l.push(F.newFileChanges(g, ne, ue, this.newLineCharacter, this.formatContext)); + } + return l; + }, H.prototype.createNewFile = function(I, l, d) { + this.newFiles.push({ oldFile: I, fileName: l, statements: d }); + }, H; + }(); + C.ChangeTracker = ie; + function R(H) { + if (H.kind !== 214) + return H; + var I = H.parent.kind === 167 ? H.parent : H.parent.parent; + return I.jsDoc = H.jsDoc, I.jsDocCache = H.jsDocCache, I; + } + function q(H, I) { + if (H.kind === I.kind) + switch (H.kind) { + case 340: { + var l = H, d = I; + return e.isIdentifier(l.name) && e.isIdentifier(d.name) && l.name.escapedText === d.name.escapedText ? e.factory.createJSDocParameterTag(void 0, d.name, false, d.typeExpression, d.isNameFirst, l.comment) : void 0; + } + case 341: + return e.factory.createJSDocReturnTag(void 0, I.typeExpression, H.comment); + case 343: + return e.factory.createJSDocTypeTag(void 0, I.typeExpression, H.comment); + } + } + function O(H, I) { + return e.skipTrivia(H.text, T(H, I, { leadingTriviaOption: le.IncludeAll }), false, true); + } + function ve(H, I) { + var l = e.findChildOfKind(H, 18, I), d = e.findChildOfKind(H, 19, I); + return [l == null ? void 0 : l.end, d == null ? void 0 : d.end]; + } + function ee(H) { + return e.isObjectLiteralExpression(H) ? H.properties : H.members; + } + function he(H, I, l, d) { + return F.newFileChangesWorker(void 0, I, H, l, d); + } + C.getNewFileText = he; + var F; + (function(H) { + function I(ne, ue, We, Fe) { + return e.mapDefined(e.group(ne, function(Z) { + return Z.sourceFile.path; + }), function(Z) { + for (var Be = Z[0].sourceFile, ge = e.stableSort(Z, function(He, rr) { + return He.range.pos - rr.range.pos || He.range.end - rr.range.end; + }), Re = function(He) { + e.Debug.assert(ge[He].range.end <= ge[He + 1].range.pos, "Changes overlap", function() { + return "".concat(JSON.stringify(ge[He].range), " and ").concat(JSON.stringify(ge[He + 1].range)); + }); + }, ze = 0; ze < ge.length - 1; ze++) + Re(ze); + var Ee = e.mapDefined(ge, function(He) { + var rr = e.createTextSpanFromRange(He.range), Ie = D(He, Be, ue, We, Fe); + if (!(rr.length === Ie.length && e.stringContainsAt(Be.text, Ie, rr.start))) + return e.createTextChange(rr, Ie); + }); + return Ee.length > 0 ? { fileName: Be.fileName, textChanges: Ee } : void 0; + }); + } + H.getTextChangesFromChanges = I; + function l(ne, ue, We, Fe, Z) { + var Be = d(ne, e.getScriptKindFromFileName(ue), We, Fe, Z); + return { fileName: ue, textChanges: [e.createTextChange(e.createTextSpan(0, 0), Be)], isNewFile: true }; + } + H.newFileChanges = l; + function d(ne, ue, We, Fe, Z) { + var Be = We.map(function(ze) { + return ze === 4 ? "" : g(ze, ne, Fe).text; + }).join(Fe), ge = e.createSourceFile("any file name", Be, 99, true, ue), Re = e.formatting.formatDocument(ge, Z); + return x(Be, Re) + Fe; + } + H.newFileChangesWorker = d; + function D(ne, ue, We, Fe, Z) { + var Be; + if (ne.kind === oe.Remove) + return ""; + if (ne.kind === oe.Text) + return ne.text; + var ge = ne.options, Re = ge === void 0 ? {} : ge, ze = ne.range.pos, Ee = function(Ie) { + return fe(Ie, ue, ze, Re, We, Fe, Z); + }, He = ne.kind === oe.ReplaceWithMultipleNodes ? ne.nodes.map(function(Ie) { + return e.removeSuffix(Ee(Ie), We); + }).join(((Be = ne.options) === null || Be === void 0 ? void 0 : Be.joiner) || We) : Ee(ne.node), rr = Re.indentation !== void 0 || e.getLineStartPositionForPosition(ze, ue) === ze ? He : He.replace(/^\s+/, ""); + return (Re.prefix || "") + rr + (!Re.suffix || e.endsWith(rr, Re.suffix) ? "" : Re.suffix); + } + function fe(ne, ue, We, Fe, Z, Be, ge) { + var Re = Fe.indentation, ze = Fe.prefix, Ee = Fe.delta, He = g(ne, ue, Z), rr = He.node, Ie = He.text; + ge && ge(rr, Ie); + var _e = e.getFormatCodeSettingsForWriting(Be, ue), we = Re !== void 0 ? Re : e.formatting.SmartIndenter.getIndentation(We, ue, _e, ze === Z || e.getLineStartPositionForPosition(We, ue) === We); + Ee === void 0 && (Ee = e.formatting.SmartIndenter.shouldIndentChildNode(_e, ne) && _e.indentSize || 0); + var de = { text: Ie, getLineAndCharacterOfPosition: function(Ae) { + return e.getLineAndCharacterOfPosition(this, Ae); + } }, ye = e.formatting.formatNodeGivenIndentation(rr, de, ue.languageVariant, we, Ee, Ke(Ke({}, Be), { options: _e })); + return x(Ie, ye); + } + function g(ne, ue, We) { + var Fe = V(We), Z = e.getNewLineKind(We); + return e.createPrinter({ newLine: Z, neverAsciiEscape: true, preserveSourceNewlines: true, terminateUnterminatedLiterals: true }, Fe).writeNode(4, ne, ue, Fe), { text: Fe.getText(), node: A(ne) }; + } + H.getNonformattedText = g; + })(F || (F = {})); + function x(H, I) { + for (var l = I.length - 1; l >= 0; l--) { + var d = I[l], D = d.span, fe = d.newText; + H = "".concat(H.substring(0, D.start)).concat(fe).concat(H.substring(e.textSpanEnd(D))); + } + return H; + } + C.applyChanges = x; + function X(H) { + return e.skipTrivia(H, 0) === H.length; + } + var $ = Ke(Ke({}, e.nullTransformationContext), { factory: e.createNodeFactory(e.nullTransformationContext.factory.flags | 1, e.nullTransformationContext.factory.baseFactory) }); + function A(H) { + var I = e.visitEachChild(H, A, $, y, A), l = e.nodeIsSynthesized(I) ? I : Object.create(I); + return e.setTextRangePosEnd(l, w(H), E(H)), l; + } + C.assignPositionsToNode = A; + function y(H, I, l, d, D) { + var fe = e.visitNodes(H, I, l, d, D); + if (!fe) + return fe; + var g = fe === H ? e.factory.createNodeArray(fe.slice(0)) : fe; + return e.setTextRangePosEnd(g, w(H), E(H)), g; + } + function V(H) { + var I = 0, l = e.createTextWriter(H), d = function(lr) { + lr && B(lr, I); + }, D = function(lr) { + lr && Q(lr, I); + }, fe = function(lr) { + lr && B(lr, I); + }, g = function(lr) { + lr && Q(lr, I); + }, ne = function(lr) { + lr && B(lr, I); + }, ue = function(lr) { + lr && Q(lr, I); + }; + function We(lr, be) { + if (be || !X(lr)) { + I = l.getTextPos(); + for (var Ge = 0; e.isWhiteSpaceLike(lr.charCodeAt(lr.length - Ge - 1)); ) + Ge++; + I -= Ge; + } + } + function Fe(lr) { + l.write(lr), We(lr, false); + } + function Z(lr) { + l.writeComment(lr); + } + function Be(lr) { + l.writeKeyword(lr), We(lr, false); + } + function ge(lr) { + l.writeOperator(lr), We(lr, false); + } + function Re(lr) { + l.writePunctuation(lr), We(lr, false); + } + function ze(lr) { + l.writeTrailingSemicolon(lr), We(lr, false); + } + function Ee(lr) { + l.writeParameter(lr), We(lr, false); + } + function He(lr) { + l.writeProperty(lr), We(lr, false); + } + function rr(lr) { + l.writeSpace(lr), We(lr, false); + } + function Ie(lr) { + l.writeStringLiteral(lr), We(lr, false); + } + function _e(lr, be) { + l.writeSymbol(lr, be), We(lr, false); + } + function we(lr) { + l.writeLine(lr); + } + function de() { + l.increaseIndent(); + } + function ye() { + l.decreaseIndent(); + } + function Ae() { + return l.getText(); + } + function er(lr) { + l.rawWrite(lr), We(lr, false); + } + function ir(lr) { + l.writeLiteral(lr), We(lr, true); + } + function Cr() { + return l.getTextPos(); + } + function Ye() { + return l.getLine(); + } + function Br() { + return l.getColumn(); + } + function Er() { + return l.getIndent(); + } + function Ne() { + return l.isAtStartOfLine(); + } + function n() { + l.clear(), I = 0; + } + return { onBeforeEmitNode: d, onAfterEmitNode: D, onBeforeEmitNodeArray: fe, onAfterEmitNodeArray: g, onBeforeEmitToken: ne, onAfterEmitToken: ue, write: Fe, writeComment: Z, writeKeyword: Be, writeOperator: ge, writePunctuation: Re, writeTrailingSemicolon: ze, writeParameter: Ee, writeProperty: He, writeSpace: rr, writeStringLiteral: Ie, writeSymbol: _e, writeLine: we, increaseIndent: de, decreaseIndent: ye, getText: Ae, rawWrite: er, writeLiteral: ir, getTextPos: Cr, getLine: Ye, getColumn: Br, getIndent: Er, isAtStartOfLine: Ne, hasTrailingComment: function() { + return l.hasTrailingComment(); + }, hasTrailingWhitespace: function() { + return l.hasTrailingWhitespace(); + }, clear: n }; + } + C.createWriter = V; + function L(H) { + for (var I, l = 0, d = H.statements; l < d.length; l++) { + var D = d[l]; + if (e.isPrologueDirective(D)) + I = D; + else + break; + } + var fe = 0, g = H.text; + if (I) + return fe = I.end, He(), fe; + var ne = e.getShebang(g); + ne !== void 0 && (fe = ne.length, He()); + var ue = e.getLeadingCommentRanges(g, fe); + if (!ue) + return fe; + for (var We, Fe, Z = 0, Be = ue; Z < Be.length; Z++) { + var ge = Be[Z]; + if (ge.kind === 3) { + if (e.isPinnedComment(g, ge.pos)) { + We = { range: ge, pinnedOrTripleSlash: true }; + continue; + } + } else if (e.isRecognizedTripleSlashComment(g, ge.pos, ge.end)) { + We = { range: ge, pinnedOrTripleSlash: true }; + continue; + } + if (We) { + if (We.pinnedOrTripleSlash) + break; + var Re = H.getLineAndCharacterOfPosition(ge.pos).line, ze = H.getLineAndCharacterOfPosition(We.range.end).line; + if (Re >= ze + 2) + break; + } + if (H.statements.length) { + Fe === void 0 && (Fe = H.getLineAndCharacterOfPosition(H.statements[0].getStart()).line); + var Ee = H.getLineAndCharacterOfPosition(ge.end).line; + if (Fe < Ee + 2) + break; + } + We = { range: ge, pinnedOrTripleSlash: false }; + } + return We && (fe = We.range.end, He()), fe; + function He() { + if (fe < g.length) { + var rr = g.charCodeAt(fe); + e.isLineBreak(rr) && (fe++, fe < g.length && rr === 13 && g.charCodeAt(fe) === 10 && fe++); + } + } + } + function P(H, I) { + return !e.isInComment(H, I) && !e.isInString(H, I) && !e.isInTemplateString(H, I) && !e.isInJSXText(H, I); + } + C.isValidLocationToAddComment = P; + function k(H, I) { + return (e.isPropertySignature(H) || e.isPropertyDeclaration(H)) && e.isClassOrTypeElement(I) && I.name.kind === 162 || e.isStatementButNotDeclaration(H) && e.isStatementButNotDeclaration(I); + } + var Y; + (function(H) { + function I(fe, g, ne, ue) { + switch (ue.kind) { + case 164: { + var We = ue.parent; + e.isArrowFunction(We) && We.parameters.length === 1 && !e.findChildOfKind(We, 20, ne) ? fe.replaceNodeWithText(ne, ue, "()") : j(fe, g, ne, ue); + break; + } + case 266: + case 265: + var Fe = ne.imports.length && ue === e.first(ne.imports).parent || ue === e.find(ne.statements, e.isAnyImportSyntax); + U(fe, ne, ue, { leadingTriviaOption: Fe ? le.Exclude : e.hasJSDocNodes(ue) ? le.JSDoc : le.StartLine }); + break; + case 203: + var Z = ue.parent, Be = Z.kind === 202 && ue !== e.last(Z.elements); + Be ? U(fe, ne, ue) : j(fe, g, ne, ue); + break; + case 254: + D(fe, g, ne, ue); + break; + case 163: + j(fe, g, ne, ue); + break; + case 270: + var ge = ue.parent; + ge.elements.length === 1 ? d(fe, ne, ge) : j(fe, g, ne, ue); + break; + case 268: + d(fe, ne, ue); + break; + case 26: + U(fe, ne, ue, { trailingTriviaOption: N.Exclude }); + break; + case 98: + U(fe, ne, ue, { leadingTriviaOption: le.Exclude }); + break; + case 257: + case 256: + U(fe, ne, ue, { leadingTriviaOption: e.hasJSDocNodes(ue) ? le.JSDoc : le.StartLine }); + break; + default: + ue.parent ? e.isImportClause(ue.parent) && ue.parent.name === ue ? l(fe, ne, ue.parent) : e.isCallExpression(ue.parent) && e.contains(ue.parent.arguments, ue) ? j(fe, g, ne, ue) : U(fe, ne, ue) : U(fe, ne, ue); + } + } + H.deleteDeclaration = I; + function l(fe, g, ne) { + if (!ne.namedBindings) + U(fe, g, ne.parent); + else { + var ue = ne.name.getStart(g), We = e.getTokenAtPosition(g, ne.name.end); + if (We && We.kind === 27) { + var Fe = e.skipTrivia(g.text, We.end, false, true); + fe.deleteRange(g, { pos: ue, end: Fe }); + } else + U(fe, g, ne.name); + } + } + function d(fe, g, ne) { + if (ne.parent.name) { + var ue = e.Debug.checkDefined(e.getTokenAtPosition(g, ne.pos - 1)); + fe.deleteRange(g, { pos: ue.getStart(g), end: ne.end }); + } else { + var We = e.getAncestor(ne, 266); + U(fe, g, We); + } + } + function D(fe, g, ne, ue) { + var We = ue.parent; + if (We.kind === 292) { + fe.deleteNodeRange(ne, e.findChildOfKind(We, 20, ne), e.findChildOfKind(We, 21, ne)); + return; + } + if (We.declarations.length !== 1) { + j(fe, g, ne, ue); + return; + } + var Fe = We.parent; + switch (Fe.kind) { + case 244: + case 243: + fe.replaceNode(ne, ue, e.factory.createObjectLiteralExpression()); + break; + case 242: + U(fe, ne, We); + break; + case 237: + U(fe, ne, Fe, { leadingTriviaOption: e.hasJSDocNodes(Fe) ? le.JSDoc : le.StartLine }); + break; + default: + e.Debug.assertNever(Fe); + } + } + })(Y || (Y = {})); + function U(H, I, l, d) { + d === void 0 && (d = { leadingTriviaOption: le.IncludeAll }); + var D = T(I, l, d), fe = b(I, l, d); + H.deleteRange(I, { pos: D, end: fe }); + } + C.deleteNode = U; + function j(H, I, l, d) { + var D = e.Debug.checkDefined(e.formatting.SmartIndenter.getContainingList(d, l)), fe = e.indexOfNode(D, d); + if (e.Debug.assert(fe !== -1), D.length === 1) { + U(H, l, d); + return; + } + e.Debug.assert(!I.has(d), "Deleting a node twice"), I.add(d), H.deleteRange(l, { pos: O(l, d), end: fe === D.length - 1 ? b(l, d, {}) : O(l, D[fe + 1]) }); + } + })(a = e.textChanges || (e.textChanges = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = e.createMultiMap(), B = new e.Map(); + function E(ie, R, q) { + return N(ie, e.diagnosticToString(q), R, void 0, void 0); + } + C.createCodeFixActionWithoutFixAll = E; + function Q(ie, R, q, O, ve, ee) { + return N(ie, e.diagnosticToString(q), R, O, e.diagnosticToString(ve), ee); + } + C.createCodeFixAction = Q; + function le(ie, R, q, O, ve, ee) { + return N(ie, e.diagnosticToString(q), R, O, ve && e.diagnosticToString(ve), ee); + } + C.createCodeFixActionMaybeFixAll = le; + function N(ie, R, q, O, ve, ee) { + return { fixName: ie, description: R, changes: q, fixId: O, fixAllDescription: ve, commands: ee ? [ee] : void 0 }; + } + function p(ie) { + for (var R = 0, q = ie.errorCodes; R < q.length; R++) { + var O = q[R]; + w.add(String(O), ie); + } + if (ie.fixIds) + for (var ve = 0, ee = ie.fixIds; ve < ee.length; ve++) { + var he = ee[ve]; + e.Debug.assert(!B.has(he)), B.set(he, ie); + } + } + C.registerCodeFix = p; + function m() { + return e.arrayFrom(w.keys()); + } + C.getSupportedErrorCodes = m; + function G(ie, R) { + for (var q = ie.errorCodes, O = 0, ve = 0, ee = R; ve < ee.length; ve++) { + var he = ee[ve]; + if (e.contains(q, he.code) && O++, O > 1) + break; + } + var F = O < 2; + return function(x) { + var X = x.fixId, $ = x.fixAllDescription, A = pr(x, ["fixId", "fixAllDescription"]); + return F ? A : Ke(Ke({}, A), { fixId: X, fixAllDescription: $ }); + }; + } + function oe(ie) { + var R = J(ie), q = w.get(String(ie.errorCode)); + return e.flatMap(q, function(O) { + return e.map(O.getCodeActions(ie), G(O, R)); + }); + } + C.getFixes = oe; + function f(ie) { + return B.get(e.cast(ie.fixId, e.isString)).getAllCodeActions(ie); + } + C.getAllFixes = f; + function T(ie, R) { + return { changes: ie, commands: R }; + } + C.createCombinedCodeActions = T; + function K(ie, R) { + return { fileName: ie, textChanges: R }; + } + C.createFileTextChanges = K; + function b(ie, R, q) { + var O = [], ve = e.textChanges.ChangeTracker.with(ie, function(ee) { + return se(ie, R, function(he) { + return q(ee, he, O); + }); + }); + return T(ve, O.length === 0 ? void 0 : O); + } + C.codeFixAll = b; + function se(ie, R, q) { + for (var O = 0, ve = J(ie); O < ve.length; O++) { + var ee = ve[O]; + e.contains(R, ee.code) && q(ee); + } + } + C.eachDiagnostic = se; + function J(ie) { + var R = ie.program, q = ie.sourceFile, O = ie.cancellationToken; + return Ve(Ve(Ve([], R.getSemanticDiagnostics(q, O), true), R.getSyntacticDiagnostics(q, O), true), e.computeSuggestionDiagnostics(q, R, O), true); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = new e.Map(); + function B(le, N) { + w.set(le, N); + } + C.registerRefactor = B; + function E(le) { + return e.arrayFrom(e.flatMapIterator(w.values(), function(N) { + var p; + return le.cancellationToken && le.cancellationToken.isCancellationRequested() || !(!((p = N.kinds) === null || p === void 0) && p.some(function(m) { + return C.refactorKindBeginsWith(m, le.kind); + })) ? void 0 : N.getAvailableActions(le); + })); + } + C.getApplicableRefactors = E; + function Q(le, N, p) { + var m = w.get(N); + return m && m.getEditsForAction(le, p); + } + C.getEditsForRefactor = Q; + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addConvertToUnknownForNonOverlappingTypes", B = [e.Diagnostics.Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = Q(N.sourceFile, N.span.start); + if (p !== void 0) { + var m = e.textChanges.ChangeTracker.with(N, function(G) { + return E(G, N.sourceFile, p); + }); + return [C.createCodeFixAction(w, m, e.Diagnostics.Add_unknown_conversion_for_non_overlapping_types, w, e.Diagnostics.Add_unknown_to_all_conversions_of_non_overlapping_types)]; + } + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + var m = Q(p.file, p.start); + m && E(N, p.file, m); + }); + } }); + function E(le, N, p) { + var m = e.isAsExpression(p) ? e.factory.createAsExpression(p.expression, e.factory.createKeywordTypeNode(155)) : e.factory.createTypeAssertion(e.factory.createKeywordTypeNode(155), p.expression); + le.replaceNode(N, p.expression, m); + } + function Q(le, N) { + if (!e.isInJSFile(le)) + return e.findAncestor(e.getTokenAtPosition(le, N), function(p) { + return e.isAsExpression(p) || e.isTypeAssertionExpression(p); + }); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + C.registerCodeFix({ errorCodes: [e.Diagnostics.await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module.code, e.Diagnostics.for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module.code], getCodeActions: function(B) { + var E = B.sourceFile, Q = e.textChanges.ChangeTracker.with(B, function(le) { + var N = e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports([]), void 0); + le.insertNodeAtEndOfScope(E, E, N); + }); + return [C.createCodeFixActionWithoutFixAll("addEmptyExportDeclaration", Q, e.Diagnostics.Add_export_to_make_this_file_into_a_module)]; + } }); + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addMissingAsync", B = [e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code, e.Diagnostics.Type_0_is_not_assignable_to_type_1.code, e.Diagnostics.Type_0_is_not_comparable_to_type_1.code]; + C.registerCodeFix({ fixIds: [w], errorCodes: B, getCodeActions: function(m) { + var G = m.sourceFile, oe = m.errorCode, f = m.cancellationToken, T = m.program, K = m.span, b = e.find(T.getTypeChecker().getDiagnostics(G, f), N(K, oe)), se = b && b.relatedInformation && e.find(b.relatedInformation, function(R) { + return R.code === e.Diagnostics.Did_you_mean_to_mark_this_function_as_async.code; + }), J = le(G, se); + if (!!J) { + var ie = function(R) { + return e.textChanges.ChangeTracker.with(m, R); + }; + return [E(m, J, ie)]; + } + }, getAllCodeActions: function(p) { + var m = p.sourceFile, G = new e.Set(); + return C.codeFixAll(p, B, function(oe, f) { + var T = f.relatedInformation && e.find(f.relatedInformation, function(se) { + return se.code === e.Diagnostics.Did_you_mean_to_mark_this_function_as_async.code; + }), K = le(m, T); + if (!!K) { + var b = function(se) { + return se(oe), []; + }; + return E(p, K, b, G); + } + }); + } }); + function E(p, m, G, oe) { + var f = G(function(T) { + return Q(T, p.sourceFile, m, oe); + }); + return C.createCodeFixAction(w, f, e.Diagnostics.Add_async_modifier_to_containing_function, w, e.Diagnostics.Add_all_missing_async_modifiers); + } + function Q(p, m, G, oe) { + if (!(oe && oe.has(e.getNodeId(G)))) { + oe == null || oe.add(e.getNodeId(G)); + var f = e.factory.updateModifiers(e.getSynthesizedDeepClone(G, true), e.factory.createNodeArray(e.factory.createModifiersFromModifierFlags(e.getSyntacticModifierFlags(G) | 256))); + p.replaceNode(m, G, f); + } + } + function le(p, m) { + if (!!m) { + var G = e.getTokenAtPosition(p, m.start), oe = e.findAncestor(G, function(f) { + return f.getStart(p) < m.start || f.getEnd() > e.textSpanEnd(m) ? "quit" : (e.isArrowFunction(f) || e.isMethodDeclaration(f) || e.isFunctionExpression(f) || e.isFunctionDeclaration(f)) && e.textSpansEqual(m, e.createTextSpanFromNode(f, p)); + }); + return oe; + } + } + function N(p, m) { + return function(G) { + var oe = G.start, f = G.length, T = G.relatedInformation, K = G.code; + return e.isNumber(oe) && e.isNumber(f) && e.textSpansEqual({ start: oe, length: f }, p) && K === m && !!T && e.some(T, function(b) { + return b.code === e.Diagnostics.Did_you_mean_to_mark_this_function_as_async.code; + }); + }; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addMissingAwait", B = e.Diagnostics.Property_0_does_not_exist_on_type_1.code, E = [e.Diagnostics.This_expression_is_not_callable.code, e.Diagnostics.This_expression_is_not_constructable.code], Q = Ve([e.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type.code, e.Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type.code, e.Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type.code, e.Diagnostics.Operator_0_cannot_be_applied_to_type_1.code, e.Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code, e.Diagnostics.This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap.code, e.Diagnostics.This_condition_will_always_return_true_since_this_0_is_always_defined.code, e.Diagnostics.Type_0_is_not_an_array_type.code, e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type.code, e.Diagnostics.Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher.code, e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator.code, e.Diagnostics.Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator.code, e.Diagnostics.Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator.code, e.Diagnostics.Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator.code, e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code, B], E, true); + C.registerCodeFix({ fixIds: [w], errorCodes: Q, getCodeActions: function(J) { + var ie = J.sourceFile, R = J.errorCode, q = J.span, O = J.cancellationToken, ve = J.program, ee = le(ie, R, q, O, ve); + if (!!ee) { + var he = J.program.getTypeChecker(), F = function(x) { + return e.textChanges.ChangeTracker.with(J, x); + }; + return e.compact([N(J, ee, R, he, F), p(J, ee, R, he, F)]); + } + }, getAllCodeActions: function(se) { + var J = se.sourceFile, ie = se.program, R = se.cancellationToken, q = se.program.getTypeChecker(), O = new e.Set(); + return C.codeFixAll(se, Q, function(ve, ee) { + var he = le(J, ee.code, ee, R, ie); + if (!!he) { + var F = function(x) { + return x(ve), []; + }; + return N(se, he, ee.code, q, F, O) || p(se, he, ee.code, q, F, O); + } + }); + } }); + function le(se, J, ie, R, q) { + var O = e.getFixableErrorSpanExpression(se, ie); + return O && m(se, J, ie, R, q) && T(O) ? O : void 0; + } + function N(se, J, ie, R, q, O) { + var ve = se.sourceFile, ee = se.program, he = se.cancellationToken, F = G(J, ve, he, ee, R); + if (F) { + var x = q(function(X) { + e.forEach(F.initializers, function($) { + var A = $.expression; + return K(X, ie, ve, R, A, O); + }), O && F.needsSecondPassForFixAll && K(X, ie, ve, R, J, O); + }); + return C.createCodeFixActionWithoutFixAll("addMissingAwaitToInitializer", x, F.initializers.length === 1 ? [e.Diagnostics.Add_await_to_initializer_for_0, F.initializers[0].declarationSymbol.name] : e.Diagnostics.Add_await_to_initializers); + } + } + function p(se, J, ie, R, q, O) { + var ve = q(function(ee) { + return K(ee, ie, se.sourceFile, R, J, O); + }); + return C.createCodeFixAction(w, ve, e.Diagnostics.Add_await, w, e.Diagnostics.Fix_all_expressions_possibly_missing_await); + } + function m(se, J, ie, R, q) { + var O = q.getTypeChecker(), ve = O.getDiagnostics(se, R); + return e.some(ve, function(ee) { + var he = ee.start, F = ee.length, x = ee.relatedInformation, X = ee.code; + return e.isNumber(he) && e.isNumber(F) && e.textSpansEqual({ start: he, length: F }, ie) && X === J && !!x && e.some(x, function($) { + return $.code === e.Diagnostics.Did_you_forget_to_use_await.code; + }); + }); + } + function G(se, J, ie, R, q) { + var O = oe(se, q); + if (!!O) { + for (var ve = O.isCompleteFix, ee, he = function($) { + var A = q.getSymbolAtLocation($); + if (!A) + return "continue"; + var y = e.tryCast(A.valueDeclaration, e.isVariableDeclaration), V = y && e.tryCast(y.name, e.isIdentifier), L = e.getAncestor(y, 237); + if (!y || !L || y.type || !y.initializer || L.getSourceFile() !== J || e.hasSyntacticModifier(L, 1) || !V || !T(y.initializer)) + return ve = false, "continue"; + var P = R.getSemanticDiagnostics(J, ie), k = e.FindAllReferences.Core.eachSymbolReferenceInFile(V, q, J, function(Y) { + return $ !== Y && !f(Y, P, J, q); + }); + if (k) + return ve = false, "continue"; + (ee || (ee = [])).push({ expression: y.initializer, declarationSymbol: A }); + }, F = 0, x = O.identifiers; F < x.length; F++) { + var X = x[F]; + he(X); + } + return ee && { initializers: ee, needsSecondPassForFixAll: !ve }; + } + } + function oe(se, J) { + if (e.isPropertyAccessExpression(se.parent) && e.isIdentifier(se.parent.expression)) + return { identifiers: [se.parent.expression], isCompleteFix: true }; + if (e.isIdentifier(se)) + return { identifiers: [se], isCompleteFix: true }; + if (e.isBinaryExpression(se)) { + for (var ie = void 0, R = true, q = 0, O = [se.left, se.right]; q < O.length; q++) { + var ve = O[q], ee = J.getTypeAtLocation(ve); + if (J.getPromisedTypeOfPromise(ee)) { + if (!e.isIdentifier(ve)) { + R = false; + continue; + } + (ie || (ie = [])).push(ve); + } + } + return ie && { identifiers: ie, isCompleteFix: R }; + } + } + function f(se, J, ie, R) { + var q = e.isPropertyAccessExpression(se.parent) ? se.parent.name : e.isBinaryExpression(se.parent) ? se.parent : se, O = e.find(J, function(ve) { + return ve.start === q.getStart(ie) && ve.start + ve.length === q.getEnd(); + }); + return O && e.contains(Q, O.code) || R.getTypeAtLocation(q).flags & 1; + } + function T(se) { + return se.kind & 32768 || !!e.findAncestor(se, function(J) { + return J.parent && e.isArrowFunction(J.parent) && J.parent.body === J || e.isBlock(J) && (J.parent.kind === 256 || J.parent.kind === 213 || J.parent.kind === 214 || J.parent.kind === 169); + }); + } + function K(se, J, ie, R, q, O) { + if (e.isBinaryExpression(q)) + for (var ve = 0, ee = [q.left, q.right]; ve < ee.length; ve++) { + var he = ee[ve]; + if (O && e.isIdentifier(he)) { + var F = R.getSymbolAtLocation(he); + if (F && O.has(e.getSymbolId(F))) + continue; + } + var x = R.getTypeAtLocation(he), X = R.getPromisedTypeOfPromise(x) ? e.factory.createAwaitExpression(he) : he; + se.replaceNode(ie, he, X); + } + else if (J === B && e.isPropertyAccessExpression(q.parent)) { + if (O && e.isIdentifier(q.parent.expression)) { + var F = R.getSymbolAtLocation(q.parent.expression); + if (F && O.has(e.getSymbolId(F))) + return; + } + se.replaceNode(ie, q.parent.expression, e.factory.createParenthesizedExpression(e.factory.createAwaitExpression(q.parent.expression))), b(se, q.parent.expression, ie); + } else if (e.contains(E, J) && e.isCallOrNewExpression(q.parent)) { + if (O && e.isIdentifier(q)) { + var F = R.getSymbolAtLocation(q); + if (F && O.has(e.getSymbolId(F))) + return; + } + se.replaceNode(ie, q, e.factory.createParenthesizedExpression(e.factory.createAwaitExpression(q))), b(se, q, ie); + } else { + if (O && e.isVariableDeclaration(q.parent) && e.isIdentifier(q.parent.name)) { + var F = R.getSymbolAtLocation(q.parent.name); + if (F && !e.tryAddToSet(O, e.getSymbolId(F))) + return; + } + se.replaceNode(ie, q, e.factory.createAwaitExpression(q)); + } + } + function b(se, J, ie) { + var R = e.findPrecedingToken(J.pos, ie); + R && e.positionIsASICandidate(R.end, R.parent, ie) && se.insertText(ie, J.getStart(ie), ";"); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addMissingConst", B = [e.Diagnostics.Cannot_find_name_0.code, e.Diagnostics.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(oe) { + var f = e.textChanges.ChangeTracker.with(oe, function(T) { + return E(T, oe.sourceFile, oe.span.start, oe.program); + }); + if (f.length > 0) + return [C.createCodeFixAction(w, f, e.Diagnostics.Add_const_to_unresolved_variable, w, e.Diagnostics.Add_const_to_all_unresolved_variables)]; + }, fixIds: [w], getAllCodeActions: function(G) { + var oe = new e.Set(); + return C.codeFixAll(G, B, function(f, T) { + return E(f, T.file, T.start, G.program, oe); + }); + } }); + function E(G, oe, f, T, K) { + var b = e.getTokenAtPosition(oe, f), se = e.findAncestor(b, function(O) { + return e.isForInOrOfStatement(O.parent) ? O.parent.initializer === O : le(O) ? false : "quit"; + }); + if (se) + return Q(G, se, oe, K); + var J = b.parent; + if (e.isBinaryExpression(J) && J.operatorToken.kind === 63 && e.isExpressionStatement(J.parent)) + return Q(G, b, oe, K); + if (e.isArrayLiteralExpression(J)) { + var ie = T.getTypeChecker(); + return e.every(J.elements, function(O) { + return N(O, ie); + }) ? Q(G, J, oe, K) : void 0; + } + var R = e.findAncestor(b, function(O) { + return e.isExpressionStatement(O.parent) ? true : p(O) ? false : "quit"; + }); + if (R) { + var q = T.getTypeChecker(); + return m(R, q) ? Q(G, R, oe, K) : void 0; + } + } + function Q(G, oe, f, T) { + (!T || e.tryAddToSet(T, oe)) && G.insertModifierBefore(f, 85, oe); + } + function le(G) { + switch (G.kind) { + case 79: + case 204: + case 205: + case 296: + case 297: + return true; + default: + return false; + } + } + function N(G, oe) { + var f = e.isIdentifier(G) ? G : e.isAssignmentExpression(G, true) && e.isIdentifier(G.left) ? G.left : void 0; + return !!f && !oe.getSymbolAtLocation(f); + } + function p(G) { + switch (G.kind) { + case 79: + case 221: + case 27: + return true; + default: + return false; + } + } + function m(G, oe) { + return e.isBinaryExpression(G) ? G.operatorToken.kind === 27 ? e.every([G.left, G.right], function(f) { + return m(f, oe); + }) : G.operatorToken.kind === 63 && e.isIdentifier(G.left) && !oe.getSymbolAtLocation(G.left) : false; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addMissingDeclareProperty", B = [e.Diagnostics.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = e.textChanges.ChangeTracker.with(le, function(p) { + return E(p, le.sourceFile, le.span.start); + }); + if (N.length > 0) + return [C.createCodeFixAction(w, N, e.Diagnostics.Prefix_with_declare, w, e.Diagnostics.Prefix_all_incorrect_property_declarations_with_declare)]; + }, fixIds: [w], getAllCodeActions: function(Q) { + var le = new e.Set(); + return C.codeFixAll(Q, B, function(N, p) { + return E(N, p.file, p.start, le); + }); + } }); + function E(Q, le, N, p) { + var m = e.getTokenAtPosition(le, N); + if (!!e.isIdentifier(m)) { + var G = m.parent; + G.kind === 167 && (!p || e.tryAddToSet(p, G)) && Q.insertModifierBefore(le, 135, G); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addMissingInvocationForDecorator", B = [e.Diagnostics._0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = e.textChanges.ChangeTracker.with(le, function(p) { + return E(p, le.sourceFile, le.span.start); + }); + return [C.createCodeFixAction(w, N, e.Diagnostics.Call_decorator_expression, w, e.Diagnostics.Add_to_all_uncalled_decorators)]; + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le, N) { + return E(le, N.file, N.start); + }); + } }); + function E(Q, le, N) { + var p = e.getTokenAtPosition(le, N), m = e.findAncestor(p, e.isDecorator); + e.Debug.assert(!!m, "Expected position to be owned by a decorator."); + var G = e.factory.createCallExpression(m.expression, void 0, void 0); + Q.replaceNode(le, m.expression, G); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addNameToNamelessParameter", B = [e.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = e.textChanges.ChangeTracker.with(le, function(p) { + return E(p, le.sourceFile, le.span.start); + }); + return [C.createCodeFixAction(w, N, e.Diagnostics.Add_parameter_name, w, e.Diagnostics.Add_names_to_all_parameters_without_names)]; + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le, N) { + return E(le, N.file, N.start); + }); + } }); + function E(Q, le, N) { + var p = e.getTokenAtPosition(le, N), m = p.parent; + if (!e.isParameter(m)) + return e.Debug.fail("Tried to add a parameter name to a non-parameter: " + e.Debug.formatSyntaxKind(p.kind)); + var G = m.parent.parameters.indexOf(m); + e.Debug.assert(!m.type, "Tried to add a parameter name to a parameter that already had one."), e.Debug.assert(G > -1, "Parameter not found in parent parameter list."); + var oe = e.factory.createTypeReferenceNode(m.name, void 0), f = e.factory.createParameterDeclaration(void 0, m.modifiers, m.dotDotDotToken, "arg" + G, m.questionToken, m.dotDotDotToken ? e.factory.createArrayTypeNode(oe) : oe, m.initializer); + Q.replaceNode(le, m, f); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addOptionalPropertyUndefined", B = [e.Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target.code, e.Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code, e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(p) { + var m = p.program.getTypeChecker(), G = E(p.sourceFile, p.span, m); + if (!!G.length) { + var oe = e.textChanges.ChangeTracker.with(p, function(f) { + return N(f, G); + }); + return [C.createCodeFixActionWithoutFixAll(w, oe, e.Diagnostics.Add_undefined_to_optional_property_type)]; + } + }, fixIds: [w] }); + function E(p, m, G) { + var oe, f, T = le(e.getFixableErrorSpanExpression(p, m), G); + if (!T) + return e.emptyArray; + var K = T.source, b = T.target, se = Q(K, b, G) ? G.getTypeAtLocation(b.expression) : G.getTypeAtLocation(b); + return !((f = (oe = se.symbol) === null || oe === void 0 ? void 0 : oe.declarations) === null || f === void 0) && f.some(function(J) { + return e.getSourceFileOfNode(J).fileName.match(/\.d\.ts$/); + }) ? e.emptyArray : G.getExactOptionalProperties(se); + } + function Q(p, m, G) { + return e.isPropertyAccessExpression(m) && !!G.getExactOptionalProperties(G.getTypeAtLocation(m.expression)).length && G.getTypeAtLocation(p) === G.getUndefinedType(); + } + function le(p, m) { + var G; + if (p) { + if (e.isBinaryExpression(p.parent) && p.parent.operatorToken.kind === 63) + return { source: p.parent.right, target: p.parent.left }; + if (e.isVariableDeclaration(p.parent) && p.parent.initializer) + return { source: p.parent.initializer, target: p.parent.name }; + if (e.isCallExpression(p.parent)) { + var oe = m.getSymbolAtLocation(p.parent.expression); + if (!(oe != null && oe.valueDeclaration) || !e.isFunctionLikeKind(oe.valueDeclaration.kind) || !e.isExpression(p)) + return; + var f = p.parent.arguments.indexOf(p); + if (f === -1) + return; + var T = oe.valueDeclaration.parameters[f].name; + if (e.isIdentifier(T)) + return { source: p, target: T }; + } else if (e.isPropertyAssignment(p.parent) && e.isIdentifier(p.parent.name) || e.isShorthandPropertyAssignment(p.parent)) { + var K = le(p.parent.parent, m); + if (!K) + return; + var b = m.getPropertyOfType(m.getTypeAtLocation(K.target), p.parent.name.text), se = (G = b == null ? void 0 : b.declarations) === null || G === void 0 ? void 0 : G[0]; + return se ? { source: e.isPropertyAssignment(p.parent) ? p.parent.initializer : p.parent.name, target: se } : void 0; + } + } else + return; + } + function N(p, m) { + for (var G = 0, oe = m; G < oe.length; G++) { + var f = oe[G], T = f.valueDeclaration; + if (T && (e.isPropertySignature(T) || e.isPropertyDeclaration(T)) && T.type) { + var K = e.factory.createUnionTypeNode(Ve(Ve([], T.type.kind === 187 ? T.type.types : [T.type], true), [e.factory.createTypeReferenceNode("undefined")], false)); + p.replaceNode(T.getSourceFile(), T.type, K); + } + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "annotateWithTypeFromJSDoc", B = [e.Diagnostics.JSDoc_types_may_be_moved_to_TypeScript_types.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(J) { + var ie = E(J.sourceFile, J.span.start); + if (!!ie) { + var R = e.textChanges.ChangeTracker.with(J, function(q) { + return N(q, J.sourceFile, ie); + }); + return [C.createCodeFixAction(w, R, e.Diagnostics.Annotate_with_type_from_JSDoc, w, e.Diagnostics.Annotate_everything_with_types_from_JSDoc)]; + } + }, fixIds: [w], getAllCodeActions: function(J) { + return C.codeFixAll(J, B, function(ie, R) { + var q = E(R.file, R.start); + q && N(ie, R.file, q); + }); + } }); + function E(J, ie) { + var R = e.getTokenAtPosition(J, ie); + return e.tryCast(e.isParameter(R.parent) ? R.parent.parent : R.parent, Q); + } + function Q(J) { + return p(J) && le(J); + } + C.parameterShouldGetTypeFromJSDoc = Q; + function le(J) { + return e.isFunctionLikeDeclaration(J) ? J.parameters.some(le) || !J.type && !!e.getJSDocReturnType(J) : !J.type && !!e.getJSDocType(J); + } + function N(J, ie, R) { + if (e.isFunctionLikeDeclaration(R) && (e.getJSDocReturnType(R) || R.parameters.some(function($) { + return !!e.getJSDocType($); + }))) { + if (!R.typeParameters) { + var q = e.getJSDocTypeParameterDeclarations(R); + q.length && J.insertTypeParameters(ie, R, q); + } + var O = e.isArrowFunction(R) && !e.findChildOfKind(R, 20, ie); + O && J.insertNodeBefore(ie, e.first(R.parameters), e.factory.createToken(20)); + for (var ve = 0, ee = R.parameters; ve < ee.length; ve++) { + var he = ee[ve]; + if (!he.type) { + var F = e.getJSDocType(he); + F && J.tryInsertTypeAnnotation(ie, he, m(F)); + } + } + if (O && J.insertNodeAfter(ie, e.last(R.parameters), e.factory.createToken(21)), !R.type) { + var x = e.getJSDocReturnType(R); + x && J.tryInsertTypeAnnotation(ie, R, m(x)); + } + } else { + var X = e.Debug.checkDefined(e.getJSDocType(R), "A JSDocType for this declaration should exist"); + e.Debug.assert(!R.type, "The JSDocType decl should have a type"), J.tryInsertTypeAnnotation(ie, R, m(X)); + } + } + function p(J) { + return e.isFunctionLikeDeclaration(J) || J.kind === 254 || J.kind === 166 || J.kind === 167; + } + function m(J) { + switch (J.kind) { + case 312: + case 313: + return e.factory.createTypeReferenceNode("any", e.emptyArray); + case 316: + return G(J); + case 315: + return m(J.type); + case 314: + return oe(J); + case 318: + return f(J); + case 317: + return T(J); + case 178: + return b(J); + default: + var ie = e.visitEachChild(J, m, e.nullTransformationContext); + return e.setEmitFlags(ie, 1), ie; + } + } + function G(J) { + return e.factory.createUnionTypeNode([e.visitNode(J.type, m), e.factory.createTypeReferenceNode("undefined", e.emptyArray)]); + } + function oe(J) { + return e.factory.createUnionTypeNode([e.visitNode(J.type, m), e.factory.createTypeReferenceNode("null", e.emptyArray)]); + } + function f(J) { + return e.factory.createArrayTypeNode(e.visitNode(J.type, m)); + } + function T(J) { + var ie; + return e.factory.createFunctionTypeNode(e.emptyArray, J.parameters.map(K), (ie = J.type) !== null && ie !== void 0 ? ie : e.factory.createKeywordTypeNode(130)); + } + function K(J) { + var ie = J.parent.parameters.indexOf(J), R = J.type.kind === 318 && ie === J.parent.parameters.length - 1, q = J.name || (R ? "rest" : "arg" + ie), O = R ? e.factory.createToken(25) : J.dotDotDotToken; + return e.factory.createParameterDeclaration(J.decorators, J.modifiers, O, q, J.questionToken, e.visitNode(J.type, m), J.initializer); + } + function b(J) { + var ie = J.typeName, R = J.typeArguments; + if (e.isIdentifier(J.typeName)) { + if (e.isJSDocIndexSignature(J)) + return se(J); + var q = J.typeName.text; + switch (J.typeName.text) { + case "String": + case "Boolean": + case "Object": + case "Number": + q = q.toLowerCase(); + break; + case "array": + case "date": + case "promise": + q = q[0].toUpperCase() + q.slice(1); + break; + } + ie = e.factory.createIdentifier(q), (q === "Array" || q === "Promise") && !J.typeArguments ? R = e.factory.createNodeArray([e.factory.createTypeReferenceNode("any", e.emptyArray)]) : R = e.visitNodes(J.typeArguments, m); + } + return e.factory.createTypeReferenceNode(ie, R); + } + function se(J) { + var ie = e.factory.createParameterDeclaration(void 0, void 0, void 0, J.typeArguments[0].kind === 147 ? "n" : "s", void 0, e.factory.createTypeReferenceNode(J.typeArguments[0].kind === 147 ? "number" : "string", []), void 0), R = e.factory.createTypeLiteralNode([e.factory.createIndexSignature(void 0, void 0, [ie], J.typeArguments[1])]); + return e.setEmitFlags(R, 1), R; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "convertFunctionToEs6Class", B = [e.Diagnostics.This_constructor_function_may_be_converted_to_a_class_declaration.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(p) { + var m = e.textChanges.ChangeTracker.with(p, function(G) { + return E(G, p.sourceFile, p.span.start, p.program.getTypeChecker(), p.preferences, p.program.getCompilerOptions()); + }); + return [C.createCodeFixAction(w, m, e.Diagnostics.Convert_function_to_an_ES2015_class, w, e.Diagnostics.Convert_all_constructor_functions_to_classes)]; + }, fixIds: [w], getAllCodeActions: function(p) { + return C.codeFixAll(p, B, function(m, G) { + return E(m, G.file, G.start, p.program.getTypeChecker(), p.preferences, p.program.getCompilerOptions()); + }); + } }); + function E(p, m, G, oe, f, T) { + var K = oe.getSymbolAtLocation(e.getTokenAtPosition(m, G)); + if (!K || !K.valueDeclaration || !(K.flags & 19)) + return; + var b = K.valueDeclaration; + if (e.isFunctionDeclaration(b)) + p.replaceNode(m, b, q(b)); + else if (e.isVariableDeclaration(b)) { + var se = R(b); + if (!se) + return; + var J = b.parent.parent; + e.isVariableDeclarationList(b.parent) && b.parent.declarations.length > 1 ? (p.delete(m, b), p.insertNodeAfter(m, J, se)) : p.replaceNode(m, J, se); + } + function ie(O) { + var ve = []; + return O.exports && O.exports.forEach(function(F) { + if (F.name === "prototype" && F.declarations) { + var x = F.declarations[0]; + if (F.declarations.length === 1 && e.isPropertyAccessExpression(x) && e.isBinaryExpression(x.parent) && x.parent.operatorToken.kind === 63 && e.isObjectLiteralExpression(x.parent.right)) { + var X = x.parent.right; + he(X.symbol, void 0, ve); + } + } else + he(F, [e.factory.createToken(124)], ve); + }), O.members && O.members.forEach(function(F, x) { + var X, $, A, y; + if (x === "constructor" && F.valueDeclaration) { + var V = (y = (A = ($ = (X = O.exports) === null || X === void 0 ? void 0 : X.get("prototype")) === null || $ === void 0 ? void 0 : $.declarations) === null || A === void 0 ? void 0 : A[0]) === null || y === void 0 ? void 0 : y.parent; + V && e.isBinaryExpression(V) && e.isObjectLiteralExpression(V.right) && e.some(V.right.properties, le) || p.delete(m, F.valueDeclaration.parent); + return; + } + he(F, void 0, ve); + }), ve; + function ee(F, x) { + return e.isAccessExpression(F) ? e.isPropertyAccessExpression(F) && le(F) ? true : e.isFunctionLike(x) : e.every(F.properties, function(X) { + return !!(e.isMethodDeclaration(X) || e.isGetOrSetAccessorDeclaration(X) || e.isPropertyAssignment(X) && e.isFunctionExpression(X.initializer) && !!X.name || le(X)); + }); + } + function he(F, x, X) { + if (!(F.flags & 8192) && !(F.flags & 4096)) + return; + var $ = F.valueDeclaration, A = $.parent, y = A.right; + if (!ee($, y) || e.some(X, function(H) { + var I = e.getNameOfDeclaration(H); + return !!(I && e.isIdentifier(I) && e.idText(I) === e.symbolName(F)); + })) + return; + var V = A.parent && A.parent.kind === 238 ? A.parent : A; + if (p.delete(m, V), !y) { + X.push(e.factory.createPropertyDeclaration([], x, F.name, void 0, void 0, void 0)); + return; + } + if (e.isAccessExpression($) && (e.isFunctionExpression(y) || e.isArrowFunction(y))) { + var L = e.getQuotePreference(m, f), P = N($, T, L); + P && Y(X, y, P); + return; + } else if (e.isObjectLiteralExpression(y)) { + e.forEach(y.properties, function(H) { + (e.isMethodDeclaration(H) || e.isGetOrSetAccessorDeclaration(H)) && X.push(H), e.isPropertyAssignment(H) && e.isFunctionExpression(H.initializer) && Y(X, H.initializer, H.name), le(H); + }); + return; + } else { + if (e.isSourceFileJS(m) || !e.isPropertyAccessExpression($)) + return; + var k = e.factory.createPropertyDeclaration(void 0, x, $.name, void 0, void 0, y); + e.copyLeadingComments(A.parent, k, m), X.push(k); + return; + } + function Y(H, I, l) { + return e.isFunctionExpression(I) ? U(H, I, l) : j(H, I, l); + } + function U(H, I, l) { + var d = e.concatenate(x, Q(I, 131)), D = e.factory.createMethodDeclaration(void 0, d, void 0, l, void 0, void 0, I.parameters, void 0, I.body); + e.copyLeadingComments(A, D, m), H.push(D); + } + function j(H, I, l) { + var d = I.body, D; + d.kind === 235 ? D = d : D = e.factory.createBlock([e.factory.createReturnStatement(d)]); + var fe = e.concatenate(x, Q(I, 131)), g = e.factory.createMethodDeclaration(void 0, fe, void 0, l, void 0, void 0, I.parameters, void 0, D); + e.copyLeadingComments(A, g, m), H.push(g); + } + } + } + function R(O) { + var ve = O.initializer; + if (!(!ve || !e.isFunctionExpression(ve) || !e.isIdentifier(O.name))) { + var ee = ie(O.symbol); + ve.body && ee.unshift(e.factory.createConstructorDeclaration(void 0, void 0, ve.parameters, ve.body)); + var he = Q(O.parent.parent, 93), F = e.factory.createClassDeclaration(void 0, he, O.name, void 0, void 0, ee); + return F; + } + } + function q(O) { + var ve = ie(K); + O.body && ve.unshift(e.factory.createConstructorDeclaration(void 0, void 0, O.parameters, O.body)); + var ee = Q(O, 93), he = e.factory.createClassDeclaration(void 0, ee, O.name, void 0, void 0, ve); + return he; + } + } + function Q(p, m) { + return e.filter(p.modifiers, function(G) { + return G.kind === m; + }); + } + function le(p) { + return p.name ? !!(e.isIdentifier(p.name) && p.name.text === "constructor") : false; + } + function N(p, m, G) { + if (e.isPropertyAccessExpression(p)) + return p.name; + var oe = p.argumentExpression; + if (e.isNumericLiteral(oe)) + return oe; + if (e.isStringLiteralLike(oe)) + return e.isIdentifierText(oe.text, e.getEmitScriptTarget(m)) ? e.factory.createIdentifier(oe.text) : e.isNoSubstitutionTemplateLiteral(oe) ? e.factory.createStringLiteral(oe.text, G === 0) : oe; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "convertToAsyncFunction", B = [e.Diagnostics.This_may_be_converted_to_an_async_function.code], E = true; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(g) { + E = true; + var ne = e.textChanges.ChangeTracker.with(g, function(ue) { + return le(ue, g.sourceFile, g.span.start, g.program.getTypeChecker()); + }); + return E ? [C.createCodeFixAction(w, ne, e.Diagnostics.Convert_to_async_function, w, e.Diagnostics.Convert_all_to_async_functions)] : []; + }, fixIds: [w], getAllCodeActions: function(g) { + return C.codeFixAll(g, B, function(ne, ue) { + return le(ne, ue.file, ue.start, g.program.getTypeChecker()); + }); + } }); + var Q; + (function(g) { + g[g.Identifier = 0] = "Identifier", g[g.BindingPattern = 1] = "BindingPattern"; + })(Q || (Q = {})); + function le(g, ne, ue, We) { + var Fe = e.getTokenAtPosition(ne, ue), Z; + if (e.isIdentifier(Fe) && e.isVariableDeclaration(Fe.parent) && Fe.parent.initializer && e.isFunctionLikeDeclaration(Fe.parent.initializer) ? Z = Fe.parent.initializer : Z = e.tryCast(e.getContainingFunction(e.getTokenAtPosition(ne, ue)), e.canBeConvertedToAsync), !!Z) { + var Be = new e.Map(), ge = e.isInJSFile(Z), Re = p(Z, We), ze = T(Z, We, Be); + if (!!e.returnsPromise(ze, We)) { + var Ee = ze.body && e.isBlock(ze.body) ? N(ze.body, We) : e.emptyArray, He = { checker: We, synthNamesMap: Be, setOfExpressionsToReturn: Re, isInJSFile: ge }; + if (!!Ee.length) { + var rr = Z.modifiers ? Z.modifiers.end : Z.decorators ? e.skipTrivia(ne.text, Z.decorators.end) : Z.getStart(ne), Ie = Z.modifiers ? { prefix: " " } : { suffix: " " }; + g.insertModifierAt(ne, rr, 131, Ie); + for (var _e = function(er) { + if (e.forEachChild(er, function ir(Cr) { + if (e.isCallExpression(Cr)) { + var Ye = J(Cr, Cr, He, false); + if (b()) + return true; + g.replaceNodeWithNodes(ne, er, Ye); + } else if (!e.isFunctionLike(Cr) && (e.forEachChild(Cr, ir), b())) + return true; + }), b()) + return { value: void 0 }; + }, we = 0, de = Ee; we < de.length; we++) { + var ye = de[we], Ae = _e(ye); + if (typeof Ae == "object") + return Ae.value; + } + } + } + } + } + function N(g, ne) { + var ue = []; + return e.forEachReturnStatement(g, function(We) { + e.isReturnStatementWithFixablePromiseHandler(We, ne) && ue.push(We); + }), ue; + } + function p(g, ne) { + if (!g.body) + return new e.Set(); + var ue = new e.Set(); + return e.forEachChild(g.body, function We(Fe) { + m(Fe, ne, "then") ? (ue.add(e.getNodeId(Fe)), e.forEach(Fe.arguments, We)) : m(Fe, ne, "catch") || m(Fe, ne, "finally") ? (ue.add(e.getNodeId(Fe)), e.forEachChild(Fe, We)) : f(Fe, ne) ? ue.add(e.getNodeId(Fe)) : e.forEachChild(Fe, We); + }), ue; + } + function m(g, ne, ue) { + if (!e.isCallExpression(g)) + return false; + var We = e.hasPropertyAccessExpressionWithName(g, ue), Fe = We && ne.getTypeAtLocation(g); + return !!(Fe && ne.getPromisedTypeOfPromise(Fe)); + } + function G(g, ne) { + return (e.getObjectFlags(g) & 4) !== 0 && g.target === ne; + } + function oe(g, ne, ue) { + if (g.expression.name.escapedText !== "finally") { + var We = ue.getTypeAtLocation(g.expression.expression); + if (G(We, ue.getPromiseType()) || G(We, ue.getPromiseLikeType())) + if (g.expression.name.escapedText === "then") { + if (ne === e.elementAt(g.arguments, 0)) + return e.elementAt(g.typeArguments, 0); + if (ne === e.elementAt(g.arguments, 1)) + return e.elementAt(g.typeArguments, 1); + } else + return e.elementAt(g.typeArguments, 0); + } + } + function f(g, ne) { + return e.isExpression(g) ? !!ne.getPromisedTypeOfPromise(ne.getTypeAtLocation(g)) : false; + } + function T(g, ne, ue) { + var We = new e.Map(), Fe = e.createMultiMap(); + return e.forEachChild(g, function Z(Be) { + if (!e.isIdentifier(Be)) { + e.forEachChild(Be, Z); + return; + } + var ge = ne.getSymbolAtLocation(Be); + if (ge) { + var Re = ne.getTypeAtLocation(Be), ze = y(Re, ne), Ee = e.getSymbolId(ge).toString(); + if (ze && !e.isParameter(Be.parent) && !e.isFunctionLikeDeclaration(Be.parent) && !ue.has(Ee)) { + var He = e.firstOrUndefined(ze.parameters), rr = (He == null ? void 0 : He.valueDeclaration) && e.isParameter(He.valueDeclaration) && e.tryCast(He.valueDeclaration.name, e.isIdentifier) || e.factory.createUniqueName("result", 16), Ie = K(rr, Fe); + ue.set(Ee, Ie), Fe.add(rr.text, ge); + } else if (Be.parent && (e.isParameter(Be.parent) || e.isVariableDeclaration(Be.parent) || e.isBindingElement(Be.parent))) { + var _e = Be.text, we = Fe.get(_e); + if (we && we.some(function(Ae) { + return Ae !== ge; + })) { + var de = K(Be, Fe); + We.set(Ee, de.identifier), ue.set(Ee, de), Fe.add(_e, ge); + } else { + var ye = e.getSynthesizedDeepClone(Be); + ue.set(Ee, Y(ye)), Fe.add(_e, ge); + } + } + } + }), e.getSynthesizedDeepCloneWithReplacements(g, true, function(Z) { + if (e.isBindingElement(Z) && e.isIdentifier(Z.name) && e.isObjectBindingPattern(Z.parent)) { + var Be = ne.getSymbolAtLocation(Z.name), ge = Be && We.get(String(e.getSymbolId(Be))); + if (ge && ge.text !== (Z.name || Z.propertyName).getText()) + return e.factory.createBindingElement(Z.dotDotDotToken, Z.propertyName || Z.name, ge, Z.initializer); + } else if (e.isIdentifier(Z)) { + var Be = ne.getSymbolAtLocation(Z), ge = Be && We.get(String(e.getSymbolId(Be))); + if (ge) + return e.factory.createIdentifier(ge.text); + } + }); + } + function K(g, ne) { + var ue = (ne.get(g.text) || e.emptyArray).length, We = ue === 0 ? g : e.factory.createIdentifier(g.text + "_" + ue); + return Y(We); + } + function b() { + return !E; + } + function se() { + return E = false, e.emptyArray; + } + function J(g, ne, ue, We, Fe) { + if (m(ne, ue.checker, "then")) + return he(ne, e.elementAt(ne.arguments, 0), e.elementAt(ne.arguments, 1), ue, We, Fe); + if (m(ne, ue.checker, "catch")) + return ee(ne, e.elementAt(ne.arguments, 0), ue, We, Fe); + if (m(ne, ue.checker, "finally")) + return ve(ne, e.elementAt(ne.arguments, 0), ue, We, Fe); + if (e.isPropertyAccessExpression(ne)) + return J(g, ne.expression, ue, We, Fe); + var Z = ue.checker.getTypeAtLocation(ne); + return Z && ue.checker.getPromisedTypeOfPromise(Z) ? (e.Debug.assertNode(e.getOriginalNode(ne).parent, e.isPropertyAccessExpression), F(g, ne, ue, We, Fe)) : se(); + } + function ie(g, ne) { + var ue = g.checker; + if (ne.kind === 104) + return true; + if (e.isIdentifier(ne) && !e.isGeneratedIdentifier(ne) && e.idText(ne) === "undefined") { + var We = ue.getSymbolAtLocation(ne); + return !We || ue.isUndefinedSymbol(We); + } + return false; + } + function R(g) { + var ne = e.factory.createUniqueName(g.identifier.text, 16); + return Y(ne); + } + function q(g, ne, ue) { + var We; + return ue && !fe(g, ne) && (d(ue) ? (We = ue, ne.synthNamesMap.forEach(function(Fe, Z) { + if (Fe.identifier.text === ue.identifier.text) { + var Be = R(ue); + ne.synthNamesMap.set(Z, Be); + } + })) : We = Y(e.factory.createUniqueName("result", 16), ue.types), l(We)), We; + } + function O(g, ne, ue, We, Fe) { + var Z = [], Be; + if (We && !fe(g, ne)) { + Be = e.getSynthesizedDeepClone(l(We)); + var ge = We.types, Re = ne.checker.getUnionType(ge, 2), ze = ne.isInJSFile ? void 0 : ne.checker.typeToTypeNode(Re, void 0, void 0), Ee = [e.factory.createVariableDeclaration(Be, void 0, ze)], He = e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList(Ee, 1)); + Z.push(He); + } + return Z.push(ue), Fe && Be && D(Fe) && Z.push(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(e.getSynthesizedDeepClone(I(Fe)), void 0, void 0, Be)], 2))), Z; + } + function ve(g, ne, ue, We, Fe) { + if (!ne || ie(ue, ne)) + return J(g, g.expression.expression, ue, We, Fe); + var Z = q(g, ue, Fe), Be = J(g, g.expression.expression, ue, true, Z); + if (b()) + return se(); + var ge = $(ne, We, void 0, void 0, g, ue); + if (b()) + return se(); + var Re = e.factory.createBlock(Be), ze = e.factory.createBlock(ge), Ee = e.factory.createTryStatement(Re, void 0, ze); + return O(g, ue, Ee, Z, Fe); + } + function ee(g, ne, ue, We, Fe) { + if (!ne || ie(ue, ne)) + return J(g, g.expression.expression, ue, We, Fe); + var Z = P(ne, ue), Be = q(g, ue, Fe), ge = J(g, g.expression.expression, ue, true, Be); + if (b()) + return se(); + var Re = $(ne, We, Be, Z, g, ue); + if (b()) + return se(); + var ze = e.factory.createBlock(ge), Ee = e.factory.createCatchClause(Z && e.getSynthesizedDeepClone(H(Z)), e.factory.createBlock(Re)), He = e.factory.createTryStatement(ze, Ee, void 0); + return O(g, ue, He, Be, Fe); + } + function he(g, ne, ue, We, Fe, Z) { + if (!ne || ie(We, ne)) + return ee(g, ue, We, Fe, Z); + if (ue && !ie(We, ue)) + return se(); + var Be = P(ne, We), ge = J(g.expression.expression, g.expression.expression, We, true, Be); + if (b()) + return se(); + var Re = $(ne, Fe, Z, Be, g, We); + return b() ? se() : e.concatenate(ge, Re); + } + function F(g, ne, ue, We, Fe) { + if (fe(g, ue)) { + var Z = e.getSynthesizedDeepClone(ne); + return We && (Z = e.factory.createAwaitExpression(Z)), [e.factory.createReturnStatement(Z)]; + } + return x(Fe, e.factory.createAwaitExpression(ne), void 0); + } + function x(g, ne, ue) { + return !g || k(g) ? [e.factory.createExpressionStatement(ne)] : d(g) && g.hasBeenDeclared ? [e.factory.createExpressionStatement(e.factory.createAssignment(e.getSynthesizedDeepClone(j(g)), ne))] : [e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(e.getSynthesizedDeepClone(H(g)), void 0, ue, ne)], 2))]; + } + function X(g, ne) { + if (ne && g) { + var ue = e.factory.createUniqueName("result", 16); + return Ve(Ve([], x(Y(ue), g, ne), true), [e.factory.createReturnStatement(ue)], false); + } + return [e.factory.createReturnStatement(g)]; + } + function $(g, ne, ue, We, Fe, Z) { + var Be; + switch (g.kind) { + case 104: + break; + case 206: + case 79: + if (!We) + break; + var ge = e.factory.createCallExpression(e.getSynthesizedDeepClone(g), void 0, d(We) ? [j(We)] : []); + if (fe(Fe, Z)) + return X(ge, oe(Fe, g, Z.checker)); + var Re = Z.checker.getTypeAtLocation(g), ze = Z.checker.getSignaturesOfType(Re, 0); + if (!ze.length) + return se(); + var Ee = ze[0].getReturnType(), He = x(ue, e.factory.createAwaitExpression(ge), oe(Fe, g, Z.checker)); + return ue && ue.types.push(Z.checker.getAwaitedType(Ee) || Ee), He; + case 213: + case 214: { + var rr = g.body, Ie = (Be = y(Z.checker.getTypeAtLocation(g), Z.checker)) === null || Be === void 0 ? void 0 : Be.getReturnType(); + if (e.isBlock(rr)) { + for (var _e = [], we = false, de = 0, ye = rr.statements; de < ye.length; de++) { + var Ae = ye[de]; + if (e.isReturnStatement(Ae)) + if (we = true, e.isReturnStatementWithFixablePromiseHandler(Ae, Z.checker)) + _e = _e.concat(L(Z, Ae, ne, ue)); + else { + var er = Ie && Ae.expression ? A(Z.checker, Ie, Ae.expression) : Ae.expression; + _e.push.apply(_e, X(er, oe(Fe, g, Z.checker))); + } + else { + if (ne && e.forEachReturnStatement(Ae, e.returnTrue)) + return se(); + _e.push(Ae); + } + } + return fe(Fe, Z) ? _e.map(function(Ye) { + return e.getSynthesizedDeepClone(Ye); + }) : V(_e, ue, Z, we); + } else { + var ir = e.isFixablePromiseHandler(rr, Z.checker) ? L(Z, e.factory.createReturnStatement(rr), ne, ue) : e.emptyArray; + if (ir.length > 0) + return ir; + if (Ie) { + var er = A(Z.checker, Ie, rr); + if (fe(Fe, Z)) + return X(er, oe(Fe, g, Z.checker)); + var Cr = x(ue, er, void 0); + return ue && ue.types.push(Z.checker.getAwaitedType(Ie) || Ie), Cr; + } else + return se(); + } + } + default: + return se(); + } + return e.emptyArray; + } + function A(g, ne, ue) { + var We = e.getSynthesizedDeepClone(ue); + return g.getPromisedTypeOfPromise(ne) ? e.factory.createAwaitExpression(We) : We; + } + function y(g, ne) { + var ue = ne.getSignaturesOfType(g, 0); + return e.lastOrUndefined(ue); + } + function V(g, ne, ue, We) { + for (var Fe = [], Z = 0, Be = g; Z < Be.length; Z++) { + var ge = Be[Z]; + if (e.isReturnStatement(ge)) { + if (ge.expression) { + var Re = f(ge.expression, ue.checker) ? e.factory.createAwaitExpression(ge.expression) : ge.expression; + ne === void 0 ? Fe.push(e.factory.createExpressionStatement(Re)) : d(ne) && ne.hasBeenDeclared ? Fe.push(e.factory.createExpressionStatement(e.factory.createAssignment(j(ne), Re))) : Fe.push(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(H(ne), void 0, void 0, Re)], 2))); + } + } else + Fe.push(e.getSynthesizedDeepClone(ge)); + } + return !We && ne !== void 0 && Fe.push(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(H(ne), void 0, void 0, e.factory.createIdentifier("undefined"))], 2))), Fe; + } + function L(g, ne, ue, We) { + var Fe = []; + return e.forEachChild(ne, function Z(Be) { + if (e.isCallExpression(Be)) { + var ge = J(Be, Be, g, ue, We); + if (Fe = Fe.concat(ge), Fe.length > 0) + return; + } else + e.isFunctionLike(Be) || e.forEachChild(Be, Z); + }), Fe; + } + function P(g, ne) { + var ue = [], We; + if (e.isFunctionLikeDeclaration(g)) { + if (g.parameters.length > 0) { + var Fe = g.parameters[0].name; + We = Z(Fe); + } + } else + e.isIdentifier(g) ? We = Be(g) : e.isPropertyAccessExpression(g) && e.isIdentifier(g.name) && (We = Be(g.name)); + if (!We || "identifier" in We && We.identifier.text === "undefined") + return; + return We; + function Z(ze) { + if (e.isIdentifier(ze)) + return Be(ze); + var Ee = e.flatMap(ze.elements, function(He) { + return e.isOmittedExpression(He) ? [] : [Z(He.name)]; + }); + return U(ze, Ee); + } + function Be(ze) { + var Ee = Re(ze), He = ge(Ee); + if (!He) + return Y(ze, ue); + var rr = ne.synthNamesMap.get(e.getSymbolId(He).toString()); + return rr || Y(ze, ue); + } + function ge(ze) { + return ze.symbol ? ze.symbol : ne.checker.getSymbolAtLocation(ze); + } + function Re(ze) { + return ze.original ? ze.original : ze; + } + } + function k(g) { + return g ? d(g) ? !g.identifier.text : e.every(g.elements, k) : true; + } + function Y(g, ne) { + return ne === void 0 && (ne = []), { kind: 0, identifier: g, types: ne, hasBeenDeclared: false, hasBeenReferenced: false }; + } + function U(g, ne, ue) { + return ne === void 0 && (ne = e.emptyArray), ue === void 0 && (ue = []), { kind: 1, bindingPattern: g, elements: ne, types: ue }; + } + function j(g) { + return g.hasBeenReferenced = true, g.identifier; + } + function H(g) { + return d(g) ? l(g) : I(g); + } + function I(g) { + for (var ne = 0, ue = g.elements; ne < ue.length; ne++) { + var We = ue[ne]; + H(We); + } + return g.bindingPattern; + } + function l(g) { + return g.hasBeenDeclared = true, g.identifier; + } + function d(g) { + return g.kind === 0; + } + function D(g) { + return g.kind === 1; + } + function fe(g, ne) { + return !!g.original && ne.setOfExpressionsToReturn.has(e.getNodeId(g.original)); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + C.registerCodeFix({ errorCodes: [e.Diagnostics.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module.code], getCodeActions: function(L) { + var P = L.sourceFile, k = L.program, Y = L.preferences, U = e.textChanges.ChangeTracker.with(L, function(j) { + var H = B(P, k.getTypeChecker(), j, e.getEmitScriptTarget(k.getCompilerOptions()), e.getQuotePreference(P, Y)); + if (H) + for (var I = 0, l = k.getSourceFiles(); I < l.length; I++) { + var d = l[I]; + w(d, P, j, e.getQuotePreference(d, Y)); + } + }); + return [C.createCodeFixActionWithoutFixAll("convertToEsModule", U, e.Diagnostics.Convert_to_ES_module)]; + } }); + function w(L, P, k, Y) { + for (var U = 0, j = L.imports; U < j.length; U++) { + var H = j[U], I = e.getResolvedModule(L, H.text, e.getModeForUsageLocation(L, H)); + if (!(!I || I.resolvedFileName !== P.fileName)) { + var l = e.importFromModuleSpecifier(H); + switch (l.kind) { + case 265: + k.replaceNode(L, l, e.makeImport(l.name, void 0, H, Y)); + break; + case 208: + e.isRequireCall(l, false) && k.replaceNode(L, l, e.factory.createPropertyAccessExpression(e.getSynthesizedDeepClone(l), "default")); + break; + } + } + } + } + function B(L, P, k, Y, U) { + var j = { original: ve(L), additional: new e.Set() }, H = E(L, P, j); + Q(L, H, k); + for (var I = false, l, d = 0, D = e.filter(L.statements, e.isVariableStatement); d < D.length; d++) { + var fe = D[d], g = p(L, fe, k, P, j, Y, U); + g && e.copyEntries(g, l != null ? l : l = new e.Map()); + } + for (var ne = 0, ue = e.filter(L.statements, function(Fe) { + return !e.isVariableStatement(Fe); + }); ne < ue.length; ne++) { + var fe = ue[ne], We = N(L, fe, P, k, j, Y, H, l, U); + I = I || We; + } + return l == null || l.forEach(function(Fe, Z) { + k.replaceNode(L, Z, Fe); + }), I; + } + function E(L, P, k) { + var Y = new e.Map(); + return le(L, function(U) { + var j = U.name, H = j.text, I = j.originalKeywordKind; + !Y.has(H) && (I !== void 0 && e.isNonContextualKeyword(I) || P.resolveName(H, U, 111551, true)) && Y.set(H, O("_".concat(H), k)); + }), Y; + } + function Q(L, P, k) { + le(L, function(Y, U) { + if (!U) { + var j = Y.name.text; + k.replaceNode(L, Y, e.factory.createIdentifier(P.get(j) || j)); + } + }); + } + function le(L, P) { + L.forEachChild(function k(Y) { + if (e.isPropertyAccessExpression(Y) && e.isExportsOrModuleExportsOrAlias(L, Y.expression) && e.isIdentifier(Y.name)) { + var U = Y.parent; + P(Y, e.isBinaryExpression(U) && U.left === Y && U.operatorToken.kind === 63); + } + Y.forEachChild(k); + }); + } + function N(L, P, k, Y, U, j, H, I, l) { + switch (P.kind) { + case 237: + return p(L, P, Y, k, U, j, l), false; + case 238: { + var d = P.expression; + switch (d.kind) { + case 208: + return e.isRequireCall(d, true) && Y.replaceNode(L, P, e.makeImport(void 0, void 0, d.arguments[0], l)), false; + case 221: { + var D = d.operatorToken; + return D.kind === 63 && G(L, k, d, Y, H, I); + } + } + } + default: + return false; + } + } + function p(L, P, k, Y, U, j, H) { + var I = P.declarationList, l = false, d = e.map(I.declarations, function(fe) { + var g = fe.name, ne = fe.initializer; + if (ne) { + if (e.isExportsOrModuleExportsOrAlias(L, ne)) + return l = true, V([]); + if (e.isRequireCall(ne, true)) + return l = true, R(g, ne.arguments[0], Y, U, j, H); + if (e.isPropertyAccessExpression(ne) && e.isRequireCall(ne.expression, true)) + return l = true, m(g, ne.name.text, ne.expression.arguments[0], U, H); + } + return V([e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([fe], I.flags))]); + }); + if (l) { + k.replaceNodeWithNodes(L, P, e.flatMap(d, function(fe) { + return fe.newImports; + })); + var D; + return e.forEach(d, function(fe) { + fe.useSitesToUnqualify && e.copyEntries(fe.useSitesToUnqualify, D != null ? D : D = new e.Map()); + }), D; + } + } + function m(L, P, k, Y, U) { + switch (L.kind) { + case 201: + case 202: { + var j = O(P, Y); + return V([X(j, P, k, U), A(void 0, L, e.factory.createIdentifier(j))]); + } + case 79: + return V([X(L.text, P, k, U)]); + default: + return e.Debug.assertNever(L, "Convert to ES module got invalid syntax form ".concat(L.kind)); + } + } + function G(L, P, k, Y, U, j) { + var H = k.left, I = k.right; + if (!e.isPropertyAccessExpression(H)) + return false; + if (e.isExportsOrModuleExportsOrAlias(L, H)) + if (e.isExportsOrModuleExportsOrAlias(L, I)) + Y.delete(L, k.parent); + else { + var l = e.isObjectLiteralExpression(I) ? oe(I, j) : e.isRequireCall(I, true) ? T(I.arguments[0], P) : void 0; + return l ? (Y.replaceNodeWithNodes(L, k.parent, l[0]), l[1]) : (Y.replaceRangeWithText(L, e.createRange(H.getStart(L), I.pos), "export default"), true); + } + else + e.isExportsOrModuleExportsOrAlias(L, H.expression) && f(L, k, Y, U); + return false; + } + function oe(L, P) { + var k = e.mapAllOrFail(L.properties, function(Y) { + switch (Y.kind) { + case 172: + case 173: + case 297: + case 298: + return; + case 296: + return e.isIdentifier(Y.name) ? J(Y.name.text, Y.initializer, P) : void 0; + case 169: + return e.isIdentifier(Y.name) ? F(Y.name.text, [e.factory.createToken(93)], Y, P) : void 0; + default: + e.Debug.assertNever(Y, "Convert to ES6 got invalid prop kind ".concat(Y.kind)); + } + }); + return k && [k, false]; + } + function f(L, P, k, Y) { + var U = P.left.name.text, j = Y.get(U); + if (j !== void 0) { + var H = [A(void 0, j, P.right), y([e.factory.createExportSpecifier(false, j, U)])]; + k.replaceNodeWithNodes(L, P.parent, H); + } else + se(P, L, k); + } + function T(L, P) { + var k = L.text, Y = P.getSymbolAtLocation(L), U = Y ? Y.exports : e.emptyMap; + return U.has("export=") ? [[b(k)], true] : U.has("default") ? U.size > 1 ? [[K(k), b(k)], true] : [[b(k)], true] : [[K(k)], false]; + } + function K(L) { + return y(void 0, L); + } + function b(L) { + return y([e.factory.createExportSpecifier(false, void 0, "default")], L); + } + function se(L, P, k) { + var Y = L.left, U = L.right, j = L.parent, H = Y.name.text; + if ((e.isFunctionExpression(U) || e.isArrowFunction(U) || e.isClassExpression(U)) && (!U.name || U.name.text === H)) { + k.replaceRange(P, { pos: Y.getStart(P), end: U.getStart(P) }, e.factory.createToken(93), { suffix: " " }), U.name || k.insertName(P, U, H); + var I = e.findChildOfKind(j, 26, P); + I && k.delete(P, I); + } else + k.replaceNodeRangeWithNodes(P, Y.expression, e.findChildOfKind(Y, 24, P), [e.factory.createToken(93), e.factory.createToken(85)], { joiner: " ", suffix: " " }); + } + function J(L, P, k) { + var Y = [e.factory.createToken(93)]; + switch (P.kind) { + case 213: { + var U = P.name; + if (U && U.text !== L) + return j(); + } + case 214: + return F(L, Y, P, k); + case 226: + return x(L, Y, P, k); + default: + return j(); + } + function j() { + return A(Y, e.factory.createIdentifier(L), ie(P, k)); + } + } + function ie(L, P) { + if (!P || !e.some(e.arrayFrom(P.keys()), function(Y) { + return e.rangeContainsRange(L, Y); + })) + return L; + return e.isArray(L) ? e.getSynthesizedDeepClonesWithReplacements(L, true, k) : e.getSynthesizedDeepCloneWithReplacements(L, true, k); + function k(Y) { + if (Y.kind === 206) { + var U = P.get(Y); + return P.delete(Y), U; + } + } + } + function R(L, P, k, Y, U, j) { + switch (L.kind) { + case 201: { + var H = e.mapAllOrFail(L.elements, function(l) { + return l.dotDotDotToken || l.initializer || l.propertyName && !e.isIdentifier(l.propertyName) || !e.isIdentifier(l.name) ? void 0 : $(l.propertyName && l.propertyName.text, l.name.text); + }); + if (H) + return V([e.makeImport(void 0, H, P, j)]); + } + case 202: { + var I = O(C.moduleSpecifierToValidIdentifier(P.text, U), Y); + return V([e.makeImport(e.factory.createIdentifier(I), void 0, P, j), A(void 0, e.getSynthesizedDeepClone(L), e.factory.createIdentifier(I))]); + } + case 79: + return q(L, P, k, Y, j); + default: + return e.Debug.assertNever(L, "Convert to ES module got invalid name kind ".concat(L.kind)); + } + } + function q(L, P, k, Y, U) { + for (var j = k.getSymbolAtLocation(L), H = new e.Map(), I = false, l, d = 0, D = Y.original.get(L.text); d < D.length; d++) { + var fe = D[d]; + if (!(k.getSymbolAtLocation(fe) !== j || fe === L)) { + var g = fe.parent; + if (e.isPropertyAccessExpression(g)) { + var ne = g.name.text; + if (ne === "default") { + I = true; + var ue = fe.getText(); + (l != null ? l : l = new e.Map()).set(g, e.factory.createIdentifier(ue)); + } else { + e.Debug.assert(g.expression === fe, "Didn't expect expression === use"); + var We = H.get(ne); + We === void 0 && (We = O(ne, Y), H.set(ne, We)), (l != null ? l : l = new e.Map()).set(g, e.factory.createIdentifier(We)); + } + } else + I = true; + } + } + var Fe = H.size === 0 ? void 0 : e.arrayFrom(e.mapIterator(H.entries(), function(Z) { + var Be = Z[0], ge = Z[1]; + return e.factory.createImportSpecifier(false, Be === ge ? void 0 : e.factory.createIdentifier(Be), e.factory.createIdentifier(ge)); + })); + return Fe || (I = true), V([e.makeImport(I ? e.getSynthesizedDeepClone(L) : void 0, Fe, P, U)], l); + } + function O(L, P) { + for (; P.original.has(L) || P.additional.has(L); ) + L = "_".concat(L); + return P.additional.add(L), L; + } + function ve(L) { + var P = e.createMultiMap(); + return ee(L, function(k) { + return P.add(k.text, k); + }), P; + } + function ee(L, P) { + e.isIdentifier(L) && he(L) && P(L), L.forEachChild(function(k) { + return ee(k, P); + }); + } + function he(L) { + var P = L.parent; + switch (P.kind) { + case 206: + return P.name !== L; + case 203: + return P.propertyName !== L; + case 270: + return P.propertyName !== L; + default: + return true; + } + } + function F(L, P, k, Y) { + return e.factory.createFunctionDeclaration(e.getSynthesizedDeepClones(k.decorators), e.concatenate(P, e.getSynthesizedDeepClones(k.modifiers)), e.getSynthesizedDeepClone(k.asteriskToken), L, e.getSynthesizedDeepClones(k.typeParameters), e.getSynthesizedDeepClones(k.parameters), e.getSynthesizedDeepClone(k.type), e.factory.converters.convertToFunctionBlock(ie(k.body, Y))); + } + function x(L, P, k, Y) { + return e.factory.createClassDeclaration(e.getSynthesizedDeepClones(k.decorators), e.concatenate(P, e.getSynthesizedDeepClones(k.modifiers)), L, e.getSynthesizedDeepClones(k.typeParameters), e.getSynthesizedDeepClones(k.heritageClauses), ie(k.members, Y)); + } + function X(L, P, k, Y) { + return P === "default" ? e.makeImport(e.factory.createIdentifier(L), void 0, k, Y) : e.makeImport(void 0, [$(P, L)], k, Y); + } + function $(L, P) { + return e.factory.createImportSpecifier(false, L !== void 0 && L !== P ? e.factory.createIdentifier(L) : void 0, e.factory.createIdentifier(P)); + } + function A(L, P, k) { + return e.factory.createVariableStatement(L, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(P, void 0, void 0, k)], 2)); + } + function y(L, P) { + return e.factory.createExportDeclaration(void 0, void 0, false, L && e.factory.createNamedExports(L), P === void 0 ? void 0 : e.factory.createStringLiteral(P)); + } + function V(L, P) { + return { newImports: L, useSitesToUnqualify: P }; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "correctQualifiedNameToIndexedAccessType", B = [e.Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = E(le.sourceFile, le.span.start); + if (!!N) { + var p = e.textChanges.ChangeTracker.with(le, function(G) { + return Q(G, le.sourceFile, N); + }), m = "".concat(N.left.text, '["').concat(N.right.text, '"]'); + return [C.createCodeFixAction(w, p, [e.Diagnostics.Rewrite_as_the_indexed_access_type_0, m], w, e.Diagnostics.Rewrite_all_as_indexed_access_types)]; + } + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + var m = E(p.file, p.start); + m && Q(N, p.file, m); + }); + } }); + function E(le, N) { + var p = e.findAncestor(e.getTokenAtPosition(le, N), e.isQualifiedName); + return e.Debug.assert(!!p, "Expected position to be owned by a qualified name."), e.isIdentifier(p.left) ? p : void 0; + } + function Q(le, N, p) { + var m = p.right.text, G = e.factory.createIndexedAccessTypeNode(e.factory.createTypeReferenceNode(p.left, void 0), e.factory.createLiteralTypeNode(e.factory.createStringLiteral(m))); + le.replaceNode(N, p, G); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = [e.Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type.code], B = "convertToTypeOnlyExport"; + C.registerCodeFix({ errorCodes: w, getCodeActions: function(p) { + var m = e.textChanges.ChangeTracker.with(p, function(G) { + return Q(G, E(p.span, p.sourceFile), p); + }); + if (m.length) + return [C.createCodeFixAction(B, m, e.Diagnostics.Convert_to_type_only_export, B, e.Diagnostics.Convert_all_re_exported_types_to_type_only_exports)]; + }, fixIds: [B], getAllCodeActions: function(p) { + var m = new e.Map(); + return C.codeFixAll(p, w, function(G, oe) { + var f = E(oe, p.sourceFile); + f && e.addToSeen(m, e.getNodeId(f.parent.parent)) && Q(G, f, p); + }); + } }); + function E(N, p) { + return e.tryCast(e.getTokenAtPosition(p, N.start).parent, e.isExportSpecifier); + } + function Q(N, p, m) { + if (!!p) { + var G = p.parent, oe = G.parent, f = le(p, m); + if (f.length === G.elements.length) + N.insertModifierBefore(m.sourceFile, 152, G); + else { + var T = e.factory.updateExportDeclaration(oe, oe.decorators, oe.modifiers, false, e.factory.updateNamedExports(G, e.filter(G.elements, function(b) { + return !e.contains(f, b); + })), oe.moduleSpecifier, void 0), K = e.factory.createExportDeclaration(void 0, void 0, true, e.factory.createNamedExports(f), oe.moduleSpecifier, void 0); + N.replaceNode(m.sourceFile, oe, T, { leadingTriviaOption: e.textChanges.LeadingTriviaOption.IncludeAll, trailingTriviaOption: e.textChanges.TrailingTriviaOption.Exclude }), N.insertNodeAfter(m.sourceFile, oe, K); + } + } + } + function le(N, p) { + var m = N.parent; + if (m.elements.length === 1) + return m.elements; + var G = e.getDiagnosticsWithinSpan(e.createTextSpanFromNode(m), p.program.getSemanticDiagnostics(p.sourceFile, p.cancellationToken)); + return e.filter(m.elements, function(oe) { + var f; + return oe === N || ((f = e.findDiagnosticForNode(oe, G)) === null || f === void 0 ? void 0 : f.code) === w[0]; + }); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = [e.Diagnostics.This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error.code], B = "convertToTypeOnlyImport"; + C.registerCodeFix({ errorCodes: w, getCodeActions: function(N) { + var p = e.textChanges.ChangeTracker.with(N, function(m) { + var G = E(N.span, N.sourceFile); + Q(m, G, N); + }); + if (p.length) + return [C.createCodeFixAction(B, p, e.Diagnostics.Convert_to_type_only_import, B, e.Diagnostics.Convert_all_imports_not_used_as_a_value_to_type_only_imports)]; + }, fixIds: [B], getAllCodeActions: function(N) { + return C.codeFixAll(N, w, function(p, m) { + var G = E(m, N.sourceFile); + Q(p, G, N); + }); + } }); + function E(le, N) { + return e.tryCast(e.getTokenAtPosition(N, le.start).parent, e.isImportDeclaration); + } + function Q(le, N, p) { + if (!!(N != null && N.importClause)) { + var m = N.importClause; + le.insertText(p.sourceFile, N.getStart() + 6, " type"), m.name && m.namedBindings && (le.deleteNodeRangeExcludingEnd(p.sourceFile, m.name, N.importClause.namedBindings), le.insertNodeBefore(p.sourceFile, N, e.factory.updateImportDeclaration(N, void 0, void 0, e.factory.createImportClause(true, m.name, void 0), N.moduleSpecifier, void 0))); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "convertLiteralTypeToMappedType", B = [e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = N.sourceFile, m = N.span, G = E(p, m.start); + if (!!G) { + var oe = G.name, f = G.constraint, T = e.textChanges.ChangeTracker.with(N, function(K) { + return Q(K, p, G); + }); + return [C.createCodeFixAction(w, T, [e.Diagnostics.Convert_0_to_1_in_0, f, oe], w, e.Diagnostics.Convert_all_type_literals_to_mapped_type)]; + } + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + var m = E(p.file, p.start); + m && Q(N, p.file, m); + }); + } }); + function E(le, N) { + var p = e.getTokenAtPosition(le, N); + if (e.isIdentifier(p)) { + var m = e.cast(p.parent.parent, e.isPropertySignature), G = p.getText(le); + return { container: e.cast(m.parent, e.isTypeLiteralNode), typeNode: m.type, constraint: G, name: G === "K" ? "P" : "K" }; + } + } + function Q(le, N, p) { + var m = p.container, G = p.typeNode, oe = p.constraint, f = p.name; + le.replaceNode(N, m, e.factory.createMappedTypeNode(void 0, e.factory.createTypeParameterDeclaration(void 0, f, e.factory.createTypeReferenceNode(oe)), void 0, void 0, G, void 0)); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = [e.Diagnostics.Class_0_incorrectly_implements_interface_1.code, e.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code], B = "fixClassIncorrectlyImplementsInterface"; + C.registerCodeFix({ errorCodes: w, getCodeActions: function(p) { + var m = p.sourceFile, G = p.span, oe = E(m, G.start); + return e.mapDefined(e.getEffectiveImplementsTypeNodes(oe), function(f) { + var T = e.textChanges.ChangeTracker.with(p, function(K) { + return le(p, f, m, oe, K, p.preferences); + }); + return T.length === 0 ? void 0 : C.createCodeFixAction(B, T, [e.Diagnostics.Implement_interface_0, f.getText(m)], B, e.Diagnostics.Implement_all_unimplemented_interfaces); + }); + }, fixIds: [B], getAllCodeActions: function(p) { + var m = new e.Map(); + return C.codeFixAll(p, w, function(G, oe) { + var f = E(oe.file, oe.start); + if (e.addToSeen(m, e.getNodeId(f))) + for (var T = 0, K = e.getEffectiveImplementsTypeNodes(f); T < K.length; T++) { + var b = K[T]; + le(p, b, oe.file, f, G, p.preferences); + } + }); + } }); + function E(p, m) { + return e.Debug.checkDefined(e.getContainingClass(e.getTokenAtPosition(p, m)), "There should be a containing class"); + } + function Q(p) { + return !p.valueDeclaration || !(e.getEffectiveModifierFlags(p.valueDeclaration) & 8); + } + function le(p, m, G, oe, f, T) { + var K = p.program.getTypeChecker(), b = N(oe, K), se = K.getTypeAtLocation(m), J = K.getPropertiesOfType(se), ie = J.filter(e.and(Q, function(he) { + return !b.has(he.escapedName); + })), R = K.getTypeAtLocation(oe), q = e.find(oe.members, function(he) { + return e.isConstructorDeclaration(he); + }); + R.getNumberIndexType() || ve(se, 1), R.getStringIndexType() || ve(se, 0); + var O = C.createImportAdder(G, p.program, T, p.host); + C.createMissingMemberNodes(oe, ie, G, p, T, O, function(he) { + return ee(G, oe, he); + }), O.writeFixes(f); + function ve(he, F) { + var x = K.getIndexInfoOfType(he, F); + x && ee(G, oe, K.indexInfoToIndexSignatureDeclaration(x, oe, void 0, C.getNoopSymbolTrackerWithResolver(p))); + } + function ee(he, F, x) { + q ? f.insertNodeAfter(he, q, x) : f.insertMemberAtStart(he, F, x); + } + } + function N(p, m) { + var G = e.getEffectiveBaseTypeNode(p); + if (!G) + return e.createSymbolTable(); + var oe = m.getTypeAtLocation(G), f = m.getPropertiesOfType(oe); + return e.createSymbolTable(f.filter(Q)); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + C.importFixName = "import"; + var w = "fixMissingImport", B = [e.Diagnostics.Cannot_find_name_0.code, e.Diagnostics.Cannot_find_name_0_Did_you_mean_1.code, e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code, e.Diagnostics.Cannot_find_namespace_0.code, e.Diagnostics._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead.code, e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here.code, e.Diagnostics.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer.code, e.Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(_e) { + var we = _e.errorCode, de = _e.preferences, ye = _e.sourceFile, Ae = _e.span, er = _e.program, ir = x(_e, we, Ae.start, true); + if (!!ir) { + var Cr = ir.fixes, Ye = ir.symbolName, Br = ir.errorIdentifierText, Er = e.getQuotePreference(ye, de); + return Cr.map(function(Ne) { + return fe(_e, ye, Ye, Ne, Ye !== Br, Er, er.getCompilerOptions()); + }); + } + }, fixIds: [w], getAllCodeActions: function(_e) { + var we = _e.sourceFile, de = _e.program, ye = _e.preferences, Ae = _e.host, er = Q(we, de, true, ye, Ae); + return C.eachDiagnostic(_e, B, function(ir) { + return er.addImportFromDiagnostic(ir, _e); + }), C.createCombinedCodeActions(e.textChanges.ChangeTracker.with(_e, er.writeFixes)); + } }); + function E(_e, we, de, ye) { + return Q(_e, we, false, de, ye); + } + C.createImportAdder = E; + function Q(_e, we, de, ye, Ae) { + var er = we.getCompilerOptions(), ir = [], Cr = [], Ye = new e.Map(), Br = new e.Map(); + return { addImportFromDiagnostic: Er, addImportFromExportedSymbol: Ne, writeFixes: lr, hasFixes: be }; + function Er(Ge, ur) { + var yr = x(ur, Ge.code, Ge.start, de); + !yr || !yr.fixes.length || n(yr); + } + function Ne(Ge, ur) { + var yr = e.Debug.checkDefined(Ge.parent), Ir = e.getNameForExportedSymbol(Ge, e.getEmitScriptTarget(er)), wr = we.getTypeChecker(), Ur = wr.getMergedSymbol(e.skipAlias(Ge, wr)), ii = T(_e, Ur, yr, Ir, false, Ae, we, ye, de), mi = ve(_e, we), pe = G(_e, ii, yr, we, void 0, !!ur, mi, Ae, ye); + pe && n({ fixes: [pe], symbolName: Ir, errorIdentifierText: void 0 }); + } + function n(Ge) { + var ur, yr, Ir = Ge.fixes, wr = Ge.symbolName, Ur = e.first(Ir); + switch (Ur.kind) { + case 0: + ir.push(Ur); + break; + case 1: + Cr.push(Ur); + break; + case 2: { + var ii = Ur.importClauseOrBindingPattern, mi = Ur.importKind, pe = Ur.addAsTypeOnly, or = String(e.getNodeId(ii)), qr = Ye.get(or); + if (qr || Ye.set(or, qr = { importClauseOrBindingPattern: ii, defaultImport: void 0, namedImports: new e.Map() }), mi === 0) { + var si = qr == null ? void 0 : qr.namedImports.get(wr); + qr.namedImports.set(wr, Xi(si, pe)); + } else + e.Debug.assert(qr.defaultImport === void 0 || qr.defaultImport.name === wr, "(Add to Existing) Default import should be missing or match symbolName"), qr.defaultImport = { name: wr, addAsTypeOnly: Xi((ur = qr.defaultImport) === null || ur === void 0 ? void 0 : ur.addAsTypeOnly, pe) }; + break; + } + case 3: { + var Di = Ur.moduleSpecifier, mi = Ur.importKind, wi = Ur.useRequire, pe = Ur.addAsTypeOnly, qr = et(Di, mi, wi, pe); + switch (e.Debug.assert(qr.useRequire === wi, "(Add new) Tried to add an `import` and a `require` for the same module"), mi) { + case 1: + e.Debug.assert(qr.defaultImport === void 0 || qr.defaultImport.name === wr, "(Add new) Default import should be missing or match symbolName"), qr.defaultImport = { name: wr, addAsTypeOnly: Xi((yr = qr.defaultImport) === null || yr === void 0 ? void 0 : yr.addAsTypeOnly, pe) }; + break; + case 0: + var si = (qr.namedImports || (qr.namedImports = new e.Map())).get(wr); + qr.namedImports.set(wr, Xi(si, pe)); + break; + case 3: + case 2: + e.Debug.assert(qr.namespaceLikeImport === void 0 || qr.namespaceLikeImport.name === wr, "Namespacelike import shoudl be missing or match symbolName"), qr.namespaceLikeImport = { importKind: mi, name: wr, addAsTypeOnly: pe }; + break; + } + break; + } + case 4: + break; + default: + e.Debug.assertNever(Ur, "fix wasn't never - got kind ".concat(Ur.kind)); + } + function Xi(Wt, Zt) { + return Math.max(Wt != null ? Wt : 0, Zt); + } + function et(Wt, Zt, _r, pi) { + var ae = Gi(Wt, true), Xe = Gi(Wt, false), Jr = Br.get(ae), ti = Br.get(Xe), Ze = { defaultImport: void 0, namedImports: void 0, namespaceLikeImport: void 0, useRequire: _r }; + return Zt === 1 && pi === 2 ? Jr || (Br.set(ae, Ze), Ze) : pi === 1 && (Jr || ti) ? Jr || ti : ti || (Br.set(Xe, Ze), Ze); + } + function Gi(Wt, Zt) { + return "".concat(Zt ? 1 : 0, "|").concat(Wt); + } + } + function lr(Ge) { + for (var ur = e.getQuotePreference(_e, ye), yr = 0, Ir = ir; yr < Ir.length; yr++) { + var wr = Ir[yr]; + Fe(Ge, _e, wr); + } + for (var Ur = 0, ii = Cr; Ur < ii.length; Ur++) { + var wr = ii[Ur]; + Z(Ge, _e, wr, ur); + } + Ye.forEach(function(pe) { + var or = pe.importClauseOrBindingPattern, qr = pe.defaultImport, si = pe.namedImports; + We(Ge, _e, or, qr, e.arrayFrom(si.entries(), function(Di) { + var wi = Di[0], Xi = Di[1]; + return { addAsTypeOnly: Xi, name: wi }; + }), er); + }); + var mi; + Br.forEach(function(pe, or) { + var qr = pe.useRequire, si = pe.defaultImport, Di = pe.namedImports, wi = pe.namespaceLikeImport, Xi = or.slice(2), et = qr ? ze : Re, Gi = et(Xi, ur, si, Di && e.arrayFrom(Di.entries(), function(Wt) { + var Zt = Wt[0], _r = Wt[1]; + return { addAsTypeOnly: _r, name: Zt }; + }), wi); + mi = e.combine(mi, Gi); + }), mi && e.insertImports(Ge, _e, mi, true); + } + function be() { + return ir.length > 0 || Cr.length > 0 || Ye.size > 0 || Br.size > 0; + } + } + var le; + (function(_e) { + _e[_e.UseNamespace = 0] = "UseNamespace", _e[_e.JsdocTypeImport = 1] = "JsdocTypeImport", _e[_e.AddToExisting = 2] = "AddToExisting", _e[_e.AddNew = 3] = "AddNew", _e[_e.PromoteTypeOnly = 4] = "PromoteTypeOnly"; + })(le || (le = {})); + var N; + (function(_e) { + _e[_e.Allowed = 1] = "Allowed", _e[_e.Required = 2] = "Required", _e[_e.NotAllowed = 4] = "NotAllowed"; + })(N || (N = {})); + function p(_e, we, de, ye, Ae, er, ir, Cr, Ye, Br) { + var Er = ir.getCompilerOptions(), Ne = e.pathIsBareSpecifier(e.stripQuotes(we.name)) ? [f(_e, we, ir, er)] : T(de, _e, we, ye, Ae, er, ir, Br, true), n = ve(de, ir), lr = e.isValidTypeOnlyAliasUseSite(e.getTokenAtPosition(de, Ye)), be = e.Debug.checkDefined(G(de, Ne, we, ir, { symbolName: ye, position: Ye }, lr, n, er, Br)); + return { moduleSpecifier: be.moduleSpecifier, codeAction: oe(fe({ host: er, formatContext: Cr, preferences: Br }, de, ye, be, false, e.getQuotePreference(de, Br), Er)) }; + } + C.getImportCompletionAction = p; + function m(_e, we, de, ye, Ae, er) { + var ir = de.getCompilerOptions(), Cr = I(_e, de.getTypeChecker(), we, ir), Ye = H(_e, we, Cr, de), Br = Cr !== we.text; + return Ye && oe(fe({ host: ye, formatContext: Ae, preferences: er }, _e, Cr, Ye, Br, 1, ir)); + } + C.getPromoteTypeOnlyCompletionAction = m; + function G(_e, we, de, ye, Ae, er, ir, Cr, Ye) { + e.Debug.assert(we.some(function(Er) { + return Er.moduleSymbol === de || Er.symbol.parent === de; + }), "Some exportInfo should match the specified moduleSymbol"); + var Br = e.createPackageJsonImportFilter(_e, Ye, Cr); + return $(b(we, Ae, er, ir, ye, _e, Cr, Ye).fixes, _e, ye, Br, Cr); + } + function oe(_e) { + var we = _e.description, de = _e.changes, ye = _e.commands; + return { description: we, changes: de, commands: ye }; + } + function f(_e, we, de, ye) { + var Ae, er, ir = de.getCompilerOptions(), Cr = Br(de.getTypeChecker(), false); + if (Cr) + return Cr; + var Ye = (er = (Ae = ye.getPackageJsonAutoImportProvider) === null || Ae === void 0 ? void 0 : Ae.call(ye)) === null || er === void 0 ? void 0 : er.getTypeChecker(); + return e.Debug.checkDefined(Ye && Br(Ye, true), "Could not find symbol in specified module for code actions"); + function Br(Er, Ne) { + var n = e.getDefaultLikeExportInfo(we, Er, ir); + if (n && e.skipAlias(n.symbol, Er) === _e) + return { symbol: n.symbol, moduleSymbol: we, moduleFileName: void 0, exportKind: n.exportKind, targetFlags: e.skipAlias(_e, Er).flags, isFromPackageJson: Ne }; + var lr = Er.tryGetMemberInModuleExportsAndProperties(_e.name, we); + if (lr && e.skipAlias(lr, Er) === _e) + return { symbol: lr, moduleSymbol: we, moduleFileName: void 0, exportKind: 0, targetFlags: e.skipAlias(_e, Er).flags, isFromPackageJson: Ne }; + } + } + function T(_e, we, de, ye, Ae, er, ir, Cr, Ye) { + var Br = [], Er = ir.getCompilerOptions(), Ne = e.memoizeOne(function(lr) { + return e.createModuleSpecifierResolutionHost(lr ? er.getPackageJsonAutoImportProvider() : ir, er); + }); + return e.forEachExternalModuleToImportFrom(ir, er, Ye, function(lr, be, Ge, ur) { + var yr = Ge.getTypeChecker(); + if (!(be && lr !== de && e.startsWith(_e.fileName, e.getDirectoryPath(be.fileName)))) { + var Ir = e.getDefaultLikeExportInfo(lr, yr, Er); + Ir && (Ir.name === ye || rr(lr, e.getEmitScriptTarget(Er), Ae) === ye) && e.skipAlias(Ir.symbol, yr) === we && n(Ge, be, ur) && Br.push({ symbol: Ir.symbol, moduleSymbol: lr, moduleFileName: be == null ? void 0 : be.fileName, exportKind: Ir.exportKind, targetFlags: e.skipAlias(Ir.symbol, yr).flags, isFromPackageJson: ur }); + for (var wr = 0, Ur = yr.getExportsAndPropertiesOfModule(lr); wr < Ur.length; wr++) { + var ii = Ur[wr]; + ii.name === ye && yr.getMergedSymbol(e.skipAlias(ii, yr)) === we && n(Ge, be, ur) && Br.push({ symbol: ii, moduleSymbol: lr, moduleFileName: be == null ? void 0 : be.fileName, exportKind: 0, targetFlags: e.skipAlias(ii, yr).flags, isFromPackageJson: ur }); + } + } + }), Br; + function n(lr, be, Ge) { + var ur; + return !be || e.isImportableFile(lr, _e, be, Cr, void 0, Ne(Ge), (ur = er.getModuleSpecifierCache) === null || ur === void 0 ? void 0 : ur.call(er)); + } + } + function K(_e, we, de, ye, Ae, er, ir, Cr, Ye, Br) { + var Er = b(_e, { symbolName: we, position: de }, ye, false, er, Ae, ir, Cr, Br), Ne = Er.fixes, n = Er.computedWithoutCacheCount, lr = $(Ne, Ae, er, Ye || e.createPackageJsonImportFilter(Ae, Cr, ir), ir); + return lr && Ke(Ke({}, lr), { computedWithoutCacheCount: n }); + } + C.getModuleSpecifierForBestExportInfo = K; + function b(_e, we, de, ye, Ae, er, ir, Cr, Ye) { + var Br = Ae.getTypeChecker(), Er = e.flatMap(_e, function(yr) { + return O(yr, Br, er, Ae.getCompilerOptions()); + }), Ne = we && se(Er, we.symbolName, we.position, Br), n = q(Er, de, Br, Ae.getCompilerOptions()); + if (n) + return { computedWithoutCacheCount: 0, fixes: Ve(Ve([], Ne ? [Ne] : e.emptyArray, true), [n], false) }; + var lr = he(_e, Er, Ae, er, we == null ? void 0 : we.position, de, ye, ir, Cr, Ye), be = lr.fixes, Ge = lr.computedWithoutCacheCount, ur = Ge === void 0 ? 0 : Ge; + return { computedWithoutCacheCount: ur, fixes: Ve(Ve([], Ne ? [Ne] : e.emptyArray, true), be, true) }; + } + function se(_e, we, de, ye) { + return e.firstDefined(_e, function(Ae) { + var er, ir = Ae.declaration, Cr = ie(ir), Ye = (er = e.tryGetModuleSpecifierFromDeclaration(ir)) === null || er === void 0 ? void 0 : er.text; + if (Cr && Ye) { + var Br = J(ir, ye); + if (Br && Br.exports.has(e.escapeLeadingUnderscores(we))) + return { kind: 0, namespacePrefix: Cr, position: de, moduleSpecifier: Ye }; + } + }); + } + function J(_e, we) { + var de; + switch (_e.kind) { + case 254: + return we.resolveExternalModuleName(_e.initializer.arguments[0]); + case 265: + return we.getAliasedSymbol(_e.symbol); + case 266: + var ye = e.tryCast((de = _e.importClause) === null || de === void 0 ? void 0 : de.namedBindings, e.isNamespaceImport); + return ye && we.getAliasedSymbol(ye.symbol); + default: + return e.Debug.assertNever(_e); + } + } + function ie(_e) { + var we, de, ye; + switch (_e.kind) { + case 254: + return (we = e.tryCast(_e.name, e.isIdentifier)) === null || we === void 0 ? void 0 : we.text; + case 265: + return _e.name.text; + case 266: + return (ye = e.tryCast((de = _e.importClause) === null || de === void 0 ? void 0 : de.namedBindings, e.isNamespaceImport)) === null || ye === void 0 ? void 0 : ye.name.text; + default: + return e.Debug.assertNever(_e); + } + } + function R(_e, we, de, ye, Ae, er) { + return _e ? we && er.importsNotUsedAsValues === 2 || er.isolatedModules && er.preserveValueImports && (!(ye & 111551) || !!Ae.getTypeOnlyAliasDeclaration(de)) ? 2 : 1 : 4; + } + function q(_e, we, de, ye) { + return e.firstDefined(_e, function(Ae) { + var er = Ae.declaration, ir = Ae.importKind, Cr = Ae.symbol, Ye = Ae.targetFlags; + if (!(ir === 3 || ir === 2 || er.kind === 265)) { + if (er.kind === 254) + return (ir === 0 || ir === 1) && er.name.kind === 201 ? { kind: 2, importClauseOrBindingPattern: er.name, importKind: ir, moduleSpecifier: er.initializer.arguments[0].text, addAsTypeOnly: 4 } : void 0; + var Br = er.importClause; + if (!(!Br || !e.isStringLiteralLike(er.moduleSpecifier))) { + var Er = Br.name, Ne = Br.namedBindings; + if (!(Br.isTypeOnly && !(ir === 0 && Ne))) { + var n = R(we, false, Cr, Ye, de, ye); + if (!(ir === 1 && (Er || n === 2 && Ne)) && !(ir === 0 && (Ne == null ? void 0 : Ne.kind) === 268)) + return { kind: 2, importClauseOrBindingPattern: Br, importKind: ir, moduleSpecifier: er.moduleSpecifier.text, addAsTypeOnly: n }; + } + } + } + }); + } + function O(_e, we, de, ye) { + var Ae = _e.moduleSymbol, er = _e.exportKind, ir = _e.targetFlags, Cr = _e.symbol; + if (!(ir & 111551) && e.isSourceFileJS(de)) + return e.emptyArray; + var Ye = Y(de, er, ye); + return e.mapDefined(de.imports, function(Br) { + var Er = e.importFromModuleSpecifier(Br); + if (e.isVariableDeclarationInitializedToRequire(Er.parent)) + return we.resolveExternalModuleName(Br) === Ae ? { declaration: Er.parent, importKind: Ye, symbol: Cr, targetFlags: ir } : void 0; + if (Er.kind === 266 || Er.kind === 265) + return we.getSymbolAtLocation(Br) === Ae ? { declaration: Er, importKind: Ye, symbol: Cr, targetFlags: ir } : void 0; + }); + } + function ve(_e, we) { + if (!e.isSourceFileJS(_e)) + return false; + if (_e.commonJsModuleIndicator && !_e.externalModuleIndicator) + return true; + if (_e.externalModuleIndicator && !_e.commonJsModuleIndicator) + return false; + var de = we.getCompilerOptions(); + if (de.configFile) + return e.getEmitModuleKind(de) < e.ModuleKind.ES2015; + for (var ye = 0, Ae = we.getSourceFiles(); ye < Ae.length; ye++) { + var er = Ae[ye]; + if (!(er === _e || !e.isSourceFileJS(er) || we.isSourceFileFromExternalLibrary(er))) { + if (er.commonJsModuleIndicator && !er.externalModuleIndicator) + return true; + if (er.externalModuleIndicator && !er.commonJsModuleIndicator) + return false; + } + } + return true; + } + function ee(_e, we, de, ye, Ae, er, ir, Cr, Ye) { + var Br = e.isSourceFileJS(we), Er = _e.getCompilerOptions(), Ne = e.createModuleSpecifierResolutionHost(_e, ir), n = e.memoizeOne(function(yr) { + return yr ? ir.getPackageJsonAutoImportProvider().getTypeChecker() : _e.getTypeChecker(); + }), lr = e.moduleResolutionUsesNodeModules(e.getEmitModuleResolutionKind(Er)), be = Ye ? function(yr) { + return { moduleSpecifiers: e.moduleSpecifiers.tryGetModuleSpecifiersFromCache(yr, we, Ne, Cr), computedWithoutCache: false }; + } : function(yr, Ir) { + return e.moduleSpecifiers.getModuleSpecifiersWithCacheInfo(yr, Ir, Er, we, Ne, Cr); + }, Ge = 0, ur = e.flatMap(er, function(yr, Ir) { + var wr = n(yr.isFromPackageJson), Ur = be(yr.moduleSymbol, wr), ii = Ur.computedWithoutCache, mi = Ur.moduleSpecifiers, pe = !!(yr.targetFlags & 111551), or = R(ye, true, yr.symbol, yr.targetFlags, wr, Er); + return Ge += ii ? 1 : 0, e.mapDefined(mi, function(qr) { + return lr && e.pathContainsNodeModules(qr) ? void 0 : !pe && Br && de !== void 0 ? { kind: 1, moduleSpecifier: qr, position: de, exportInfo: yr, isReExport: Ir > 0 } : { kind: 3, moduleSpecifier: qr, importKind: Y(we, yr.exportKind, Er), useRequire: Ae, addAsTypeOnly: or, exportInfo: yr, isReExport: Ir > 0 }; + }); + }); + return { computedWithoutCacheCount: Ge, fixes: ur }; + } + function he(_e, we, de, ye, Ae, er, ir, Cr, Ye, Br) { + var Er = e.firstDefined(we, function(Ne) { + return F(Ne, er, ir, de.getTypeChecker(), de.getCompilerOptions()); + }); + return Er ? { fixes: [Er] } : ee(de, ye, Ae, er, ir, _e, Cr, Ye, Br); + } + function F(_e, we, de, ye, Ae) { + var er, ir = _e.declaration, Cr = _e.importKind, Ye = _e.symbol, Br = _e.targetFlags, Er = (er = e.tryGetModuleSpecifierFromDeclaration(ir)) === null || er === void 0 ? void 0 : er.text; + if (Er) { + var Ne = de ? 4 : R(we, true, Ye, Br, ye, Ae); + return { kind: 3, moduleSpecifier: Er, importKind: Cr, addAsTypeOnly: Ne, useRequire: de }; + } + } + function x(_e, we, de, ye) { + var Ae = e.getTokenAtPosition(_e.sourceFile, de), er; + if (we === e.Diagnostics._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead.code) + er = P(_e, Ae); + else if (e.isIdentifier(Ae)) + if (we === e.Diagnostics._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type.code) { + var ir = I(_e.sourceFile, _e.program.getTypeChecker(), Ae, _e.program.getCompilerOptions()), Cr = H(_e.sourceFile, Ae, ir, _e.program); + return Cr && { fixes: [Cr], symbolName: ir, errorIdentifierText: Ae.text }; + } else + er = j(_e, Ae, ye); + else + return; + var Ye = e.createPackageJsonImportFilter(_e.sourceFile, _e.preferences, _e.host); + return er && Ke(Ke({}, er), { fixes: X(er.fixes, _e.sourceFile, _e.program, Ye, _e.host) }); + } + function X(_e, we, de, ye, Ae) { + var er = function(ir) { + return e.toPath(ir, Ae.getCurrentDirectory(), e.hostGetCanonicalFileName(Ae)); + }; + return e.sort(_e, function(ir, Cr) { + return e.compareValues(ir.kind, Cr.kind) || A(ir, Cr, we, de, ye.allowsImportingSpecifier, er); + }); + } + function $(_e, we, de, ye, Ae) { + if (!!e.some(_e)) + return _e[0].kind === 0 || _e[0].kind === 2 ? _e[0] : _e.reduce(function(er, ir) { + return A(ir, er, we, de, ye.allowsImportingSpecifier, function(Cr) { + return e.toPath(Cr, Ae.getCurrentDirectory(), e.hostGetCanonicalFileName(Ae)); + }) === -1 ? ir : er; + }); + } + function A(_e, we, de, ye, Ae, er) { + return _e.kind !== 0 && we.kind !== 0 ? e.compareBooleans(Ae(we.moduleSpecifier), Ae(_e.moduleSpecifier)) || L(_e.moduleSpecifier, we.moduleSpecifier, de, ye) || e.compareBooleans(y(_e, de, ye.getCompilerOptions(), er), y(we, de, ye.getCompilerOptions(), er)) || e.compareNumberOfDirectorySeparators(_e.moduleSpecifier, we.moduleSpecifier) : 0; + } + function y(_e, we, de, ye) { + var Ae; + if (_e.isReExport && ((Ae = _e.exportInfo) === null || Ae === void 0 ? void 0 : Ae.moduleFileName) && e.getEmitModuleResolutionKind(de) === e.ModuleResolutionKind.NodeJs && V(_e.exportInfo.moduleFileName)) { + var er = ye(e.getDirectoryPath(_e.exportInfo.moduleFileName)); + return e.startsWith(we.path, er); + } + return false; + } + function V(_e) { + return e.getBaseFileName(_e, [".js", ".jsx", ".d.ts", ".ts", ".tsx"], true) === "index"; + } + function L(_e, we, de, ye) { + return e.startsWith(_e, "node:") && !e.startsWith(we, "node:") ? e.shouldUseUriStyleNodeCoreModules(de, ye) ? -1 : 1 : e.startsWith(we, "node:") && !e.startsWith(_e, "node:") ? e.shouldUseUriStyleNodeCoreModules(de, ye) ? 1 : -1 : 0; + } + function P(_e, we) { + var de, ye = _e.sourceFile, Ae = _e.program, er = _e.host, ir = _e.preferences, Cr = Ae.getTypeChecker(), Ye = k(we, Cr); + if (!!Ye) { + var Br = Cr.getAliasedSymbol(Ye), Er = Ye.name, Ne = [{ symbol: Ye, moduleSymbol: Br, moduleFileName: void 0, exportKind: 3, targetFlags: Br.flags, isFromPackageJson: false }], n = ve(ye, Ae), lr = e.isIdentifier(we) ? we.getStart(ye) : void 0, be = b(Ne, lr ? { position: lr, symbolName: Er } : void 0, false, n, Ae, ye, er, ir).fixes; + return { fixes: be, symbolName: Er, errorIdentifierText: (de = e.tryCast(we, e.isIdentifier)) === null || de === void 0 ? void 0 : de.text }; + } + } + function k(_e, we) { + var de = e.isIdentifier(_e) ? we.getSymbolAtLocation(_e) : void 0; + if (e.isUMDExportSymbol(de)) + return de; + var ye = _e.parent; + return e.isJsxOpeningLikeElement(ye) && ye.tagName === _e || e.isJsxOpeningFragment(ye) ? e.tryCast(we.resolveName(we.getJsxNamespace(ye), e.isJsxOpeningLikeElement(ye) ? _e : ye, 111551, false), e.isUMDExportSymbol) : void 0; + } + function Y(_e, we, de, ye) { + switch (we) { + case 0: + return 0; + case 1: + return 1; + case 2: + return D(_e, de, !!ye); + case 3: + return U(_e, de, !!ye); + default: + return e.Debug.assertNever(we); + } + } + C.getImportKind = Y; + function U(_e, we, de) { + if (e.getAllowSyntheticDefaultImports(we)) + return 1; + var ye = e.getEmitModuleKind(we); + switch (ye) { + case e.ModuleKind.AMD: + case e.ModuleKind.CommonJS: + case e.ModuleKind.UMD: + return e.isInJSFile(_e) && (e.isExternalModule(_e) || de) ? 2 : 3; + case e.ModuleKind.System: + case e.ModuleKind.ES2015: + case e.ModuleKind.ES2020: + case e.ModuleKind.ES2022: + case e.ModuleKind.ESNext: + case e.ModuleKind.None: + return 2; + case e.ModuleKind.Node16: + case e.ModuleKind.NodeNext: + return _e.impliedNodeFormat === e.ModuleKind.ESNext ? 2 : 3; + default: + return e.Debug.assertNever(ye, "Unexpected moduleKind ".concat(ye)); + } + } + function j(_e, we, de) { + var ye = _e.sourceFile, Ae = _e.program, er = _e.cancellationToken, ir = _e.host, Cr = _e.preferences, Ye = Ae.getTypeChecker(), Br = Ae.getCompilerOptions(), Er = I(ye, Ye, we, Br); + if (Er !== "default") { + var Ne = e.isValidTypeOnlyAliasUseSite(we), n = ve(ye, Ae), lr = d(Er, e.isJSXTagName(we), e.getMeaningFromLocation(we), er, ye, Ae, de, ir, Cr), be = e.arrayFrom(e.flatMapIterator(lr.entries(), function(Ge) { + var ur = Ge[0], yr = Ge[1]; + return b(yr, { symbolName: Er, position: we.getStart(ye) }, Ne, n, Ae, ye, ir, Cr).fixes; + })); + return { fixes: be, symbolName: Er, errorIdentifierText: we.text }; + } + } + function H(_e, we, de, ye) { + var Ae = ye.getTypeChecker(), er = Ae.resolveName(de, we, 111551, true); + if (!!er) { + var ir = Ae.getTypeOnlyAliasDeclaration(er); + if (!(!ir || e.getSourceFileOfNode(ir) !== _e)) + return { kind: 4, typeOnlyAliasDeclaration: ir }; + } + } + function I(_e, we, de, ye) { + var Ae = de.parent; + if ((e.isJsxOpeningLikeElement(Ae) || e.isJsxClosingElement(Ae)) && Ae.tagName === de && e.jsxModeNeedsExplicitImport(ye.jsx)) { + var er = we.getJsxNamespace(_e); + if (l(er, de, we)) + return er; + } + return de.text; + } + function l(_e, we, de) { + if (e.isIntrinsicJsxName(we.text)) + return true; + var ye = de.resolveName(_e, we, 111551, true); + return !ye || e.some(ye.declarations, e.isTypeOnlyImportOrExportDeclaration) && !(ye.flags & 111551); + } + function d(_e, we, de, ye, Ae, er, ir, Cr, Ye) { + var Br, Er = e.createMultiMap(), Ne = e.createPackageJsonImportFilter(Ae, Ye, Cr), n = (Br = Cr.getModuleSpecifierCache) === null || Br === void 0 ? void 0 : Br.call(Cr), lr = e.memoizeOne(function(Ge) { + return e.createModuleSpecifierResolutionHost(Ge ? Cr.getPackageJsonAutoImportProvider() : er, Cr); + }); + function be(Ge, ur, yr, Ir, wr, Ur) { + var ii = lr(Ur); + if (ur && e.isImportableFile(wr, Ae, ur, Ye, Ne, ii, n) || !ur && Ne.allowsImportingAmbientModule(Ge, ii)) { + var mi = wr.getTypeChecker(); + Er.add(e.getUniqueSymbolId(yr, mi).toString(), { symbol: yr, moduleSymbol: Ge, moduleFileName: ur == null ? void 0 : ur.fileName, exportKind: Ir, targetFlags: e.skipAlias(yr, mi).flags, isFromPackageJson: Ur }); + } + } + return e.forEachExternalModuleToImportFrom(er, Cr, ir, function(Ge, ur, yr, Ir) { + var wr = yr.getTypeChecker(); + ye.throwIfCancellationRequested(); + var Ur = yr.getCompilerOptions(), ii = e.getDefaultLikeExportInfo(Ge, wr, Ur); + ii && (ii.name === _e || rr(Ge, e.getEmitScriptTarget(Ur), we) === _e) && He(ii.symbolForMeaning, de) && be(Ge, ur, ii.symbol, ii.exportKind, yr, Ir); + var mi = wr.tryGetMemberInModuleExportsAndProperties(_e, Ge); + mi && He(mi, de) && be(Ge, ur, mi, 0, yr, Ir); + }), Er; + } + function D(_e, we, de) { + var ye = e.getAllowSyntheticDefaultImports(we), Ae = e.isInJSFile(_e); + if (!Ae && e.getEmitModuleKind(we) >= e.ModuleKind.ES2015) + return ye ? 1 : 2; + if (Ae) + return e.isExternalModule(_e) || de ? ye ? 1 : 2 : 3; + for (var er = 0, ir = _e.statements; er < ir.length; er++) { + var Cr = ir[er]; + if (e.isImportEqualsDeclaration(Cr) && !e.nodeIsMissing(Cr.moduleReference)) + return 3; + } + return ye ? 1 : 3; + } + function fe(_e, we, de, ye, Ae, er, ir) { + var Cr, Ye = e.textChanges.ChangeTracker.with(_e, function(Br) { + Cr = g(Br, we, de, ye, Ae, er, ir); + }); + return C.createCodeFixAction(C.importFixName, Ye, Cr, w, e.Diagnostics.Add_all_missing_imports); + } + function g(_e, we, de, ye, Ae, er, ir) { + switch (ye.kind) { + case 0: + return Fe(_e, we, ye), [e.Diagnostics.Change_0_to_1, de, "".concat(ye.namespacePrefix, ".").concat(de)]; + case 1: + return Z(_e, we, ye, er), [e.Diagnostics.Change_0_to_1, de, Be(ye.moduleSpecifier, er) + de]; + case 2: { + var Cr = ye.importClauseOrBindingPattern, Ye = ye.importKind, Br = ye.addAsTypeOnly, Er = ye.moduleSpecifier; + We(_e, we, Cr, Ye === 1 ? { name: de, addAsTypeOnly: Br } : void 0, Ye === 0 ? [{ name: de, addAsTypeOnly: Br }] : e.emptyArray, ir); + var Ne = e.stripQuotes(Er); + return Ae ? [e.Diagnostics.Import_0_from_1, de, Ne] : [e.Diagnostics.Update_import_from_0, Ne]; + } + case 3: { + var Ye = ye.importKind, Er = ye.moduleSpecifier, Br = ye.addAsTypeOnly, n = ye.useRequire, lr = n ? ze : Re, be = Ye === 1 ? { name: de, addAsTypeOnly: Br } : void 0, Ge = Ye === 0 ? [{ name: de, addAsTypeOnly: Br }] : void 0, ur = Ye === 2 || Ye === 3 ? { importKind: Ye, name: de, addAsTypeOnly: Br } : void 0; + return e.insertImports(_e, we, lr(Er, er, be, Ge, ur), true), Ae ? [e.Diagnostics.Import_0_from_1, de, Er] : [e.Diagnostics.Add_import_from_0, Er]; + } + case 4: { + var yr = ye.typeOnlyAliasDeclaration, Ir = ue(_e, yr, ir, we); + return Ir.kind === 270 ? [e.Diagnostics.Remove_type_from_import_of_0_from_1, de, ne(Ir.parent.parent)] : [e.Diagnostics.Remove_type_from_import_declaration_from_0, ne(Ir)]; + } + default: + return e.Debug.assertNever(ye, "Unexpected fix kind ".concat(ye.kind)); + } + } + function ne(_e) { + var we, de; + return _e.kind === 265 ? ((de = e.tryCast((we = e.tryCast(_e.moduleReference, e.isExternalModuleReference)) === null || we === void 0 ? void 0 : we.expression, e.isStringLiteralLike)) === null || de === void 0 ? void 0 : de.text) || _e.moduleReference.getText() : e.cast(_e.parent.moduleSpecifier, e.isStringLiteral).text; + } + function ue(_e, we, de, ye) { + var Ae = de.preserveValueImports && de.isolatedModules; + switch (we.kind) { + case 270: + if (we.isTypeOnly) { + if (we.parent.elements.length > 1 && e.OrganizeImports.importSpecifiersAreSorted(we.parent.elements)) { + _e.delete(ye, we); + var er = e.factory.updateImportSpecifier(we, false, we.propertyName, we.name), ir = e.OrganizeImports.getImportSpecifierInsertionIndex(we.parent.elements, er); + _e.insertImportSpecifierAtIndex(ye, er, we.parent, ir); + } else + _e.deleteRange(ye, we.getFirstToken()); + return we; + } else + return e.Debug.assert(we.parent.parent.isTypeOnly), Cr(we.parent.parent), we.parent.parent; + case 267: + return Cr(we), we; + case 268: + return Cr(we.parent), we.parent; + case 265: + return _e.deleteRange(ye, we.getChildAt(1)), we; + default: + e.Debug.failBadSyntaxKind(we); + } + function Cr(Ye) { + if (_e.delete(ye, e.getTypeKeywordOfTypeOnlyImport(Ye, ye)), Ae) { + var Br = e.tryCast(Ye.namedBindings, e.isNamedImports); + if (Br && Br.elements.length > 1) { + e.OrganizeImports.importSpecifiersAreSorted(Br.elements) && we.kind === 270 && Br.elements.indexOf(we) !== 0 && (_e.delete(ye, we), _e.insertImportSpecifierAtIndex(ye, we, Br, 0)); + for (var Er = 0, Ne = Br.elements; Er < Ne.length; Er++) { + var n = Ne[Er]; + n !== we && !n.isTypeOnly && _e.insertModifierBefore(ye, 152, n); + } + } + } + } + } + function We(_e, we, de, ye, Ae, er) { + var ir; + if (de.kind === 201) { + ye && pe(de, ye.name, "default"); + for (var Cr = 0, Ye = Ae; Cr < Ye.length; Cr++) { + var Br = Ye[Cr]; + pe(de, Br.name, void 0); + } + return; + } + var Er = de.isTypeOnly && e.some(Ve([ye], Ae, true), function(or) { + return (or == null ? void 0 : or.addAsTypeOnly) === 4; + }), Ne = de.namedBindings && ((ir = e.tryCast(de.namedBindings, e.isNamedImports)) === null || ir === void 0 ? void 0 : ir.elements), n = Er && er.preserveValueImports && er.isolatedModules; + if (ye && (e.Debug.assert(!de.name, "Cannot add a default import to an import clause that already has one"), _e.insertNodeAt(we, de.getStart(we), e.factory.createIdentifier(ye.name), { suffix: ", " })), Ae.length) { + var lr = e.stableSort(Ae.map(function(or) { + return e.factory.createImportSpecifier((!de.isTypeOnly || Er) && ge(or), void 0, e.factory.createIdentifier(or.name)); + }), e.OrganizeImports.compareImportOrExportSpecifiers); + if ((Ne == null ? void 0 : Ne.length) && e.OrganizeImports.importSpecifiersAreSorted(Ne)) + for (var be = 0, Ge = lr; be < Ge.length; be++) { + var ur = Ge[be], yr = n && !ur.isTypeOnly ? 0 : e.OrganizeImports.getImportSpecifierInsertionIndex(Ne, ur); + _e.insertImportSpecifierAtIndex(we, ur, de.namedBindings, yr); + } + else if (Ne != null && Ne.length) + for (var Ir = 0, wr = lr; Ir < wr.length; Ir++) { + var ur = wr[Ir]; + _e.insertNodeInListAfter(we, e.last(Ne), ur, Ne); + } + else if (lr.length) { + var Ur = e.factory.createNamedImports(lr); + de.namedBindings ? _e.replaceNode(we, de.namedBindings, Ur) : _e.insertNodeAfter(we, e.Debug.checkDefined(de.name, "Import clause must have either named imports or a default import"), Ur); + } + } + if (Er && (_e.delete(we, e.getTypeKeywordOfTypeOnlyImport(de, we)), n && Ne)) + for (var ii = 0, mi = Ne; ii < mi.length; ii++) { + var Br = mi[ii]; + _e.insertModifierBefore(we, 152, Br); + } + function pe(or, qr, si) { + var Di = e.factory.createBindingElement(void 0, si, qr); + or.elements.length ? _e.insertNodeInListAfter(we, e.last(or.elements), Di) : _e.replaceNode(we, or, e.factory.createObjectBindingPattern([Di])); + } + } + function Fe(_e, we, de) { + var ye = de.namespacePrefix, Ae = de.position; + _e.insertText(we, Ae, ye + "."); + } + function Z(_e, we, de, ye) { + var Ae = de.moduleSpecifier, er = de.position; + _e.insertText(we, er, Be(Ae, ye)); + } + function Be(_e, we) { + var de = e.getQuoteFromPreference(we); + return "import(".concat(de).concat(_e).concat(de, ")."); + } + function ge(_e) { + var we = _e.addAsTypeOnly; + return we === 2; + } + function Re(_e, we, de, ye, Ae) { + var er = e.makeStringLiteral(_e, we), ir; + if (de !== void 0 || (ye == null ? void 0 : ye.length)) { + var Cr = (!de || ge(de)) && e.every(ye, ge); + ir = e.combine(ir, e.makeImport(de && e.factory.createIdentifier(de.name), ye == null ? void 0 : ye.map(function(Br) { + var Er = Br.addAsTypeOnly, Ne = Br.name; + return e.factory.createImportSpecifier(!Cr && Er === 2, void 0, e.factory.createIdentifier(Ne)); + }), _e, we, Cr)); + } + if (Ae) { + var Ye = Ae.importKind === 3 ? e.factory.createImportEqualsDeclaration(void 0, void 0, ge(Ae), e.factory.createIdentifier(Ae.name), e.factory.createExternalModuleReference(er)) : e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(ge(Ae), void 0, e.factory.createNamespaceImport(e.factory.createIdentifier(Ae.name))), er, void 0); + ir = e.combine(ir, Ye); + } + return e.Debug.checkDefined(ir); + } + function ze(_e, we, de, ye, Ae) { + var er = e.makeStringLiteral(_e, we), ir; + if (de || (ye == null ? void 0 : ye.length)) { + var Cr = (ye == null ? void 0 : ye.map(function(Br) { + var Er = Br.name; + return e.factory.createBindingElement(void 0, void 0, Er); + })) || []; + de && Cr.unshift(e.factory.createBindingElement(void 0, "default", de.name)); + var Ye = Ee(e.factory.createObjectBindingPattern(Cr), er); + ir = e.combine(ir, Ye); + } + if (Ae) { + var Ye = Ee(Ae.name, er); + ir = e.combine(ir, Ye); + } + return e.Debug.checkDefined(ir); + } + function Ee(_e, we) { + return e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(typeof _e == "string" ? e.factory.createIdentifier(_e) : _e, void 0, void 0, e.factory.createCallExpression(e.factory.createIdentifier("require"), void 0, [we]))], 2)); + } + function He(_e, we) { + var de = _e.declarations; + return e.some(de, function(ye) { + return !!(e.getMeaningFromDeclaration(ye) & we); + }); + } + function rr(_e, we, de) { + return Ie(e.removeFileExtension(e.stripQuotes(_e.name)), we, de); + } + C.moduleSymbolToValidIdentifier = rr; + function Ie(_e, we, de) { + var ye = e.getBaseFileName(e.removeSuffix(_e, "/index")), Ae = "", er = true, ir = ye.charCodeAt(0); + e.isIdentifierStart(ir, we) ? (Ae += String.fromCharCode(ir), de && (Ae = Ae.toUpperCase())) : er = false; + for (var Cr = 1; Cr < ye.length; Cr++) { + var Ye = ye.charCodeAt(Cr), Br = e.isIdentifierPart(Ye, we); + if (Br) { + var Er = String.fromCharCode(Ye); + er || (Er = Er.toUpperCase()), Ae += Er; + } + er = Br; + } + return e.isStringANonContextualKeyword(Ae) ? "_".concat(Ae) : Ae || "_"; + } + C.moduleSpecifierToValidIdentifier = Ie; + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w, B = "fixOverrideModifier", E = "fixAddOverrideModifier", Q = "fixRemoveOverrideModifier", le = [e.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code, e.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code, e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code, e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code, e.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code, e.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code, e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code, e.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code, e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code], N = (w = {}, w[e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code] = { descriptions: e.Diagnostics.Add_override_modifier, fixId: E, fixAllDescriptions: e.Diagnostics.Add_all_missing_override_modifiers }, w[e.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code] = { descriptions: e.Diagnostics.Add_override_modifier, fixId: E, fixAllDescriptions: e.Diagnostics.Add_all_missing_override_modifiers }, w[e.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code] = { descriptions: e.Diagnostics.Remove_override_modifier, fixId: Q, fixAllDescriptions: e.Diagnostics.Remove_all_unnecessary_override_modifiers }, w[e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code] = { descriptions: e.Diagnostics.Remove_override_modifier, fixId: Q, fixAllDescriptions: e.Diagnostics.Remove_override_modifier }, w[e.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code] = { descriptions: e.Diagnostics.Add_override_modifier, fixId: E, fixAllDescriptions: e.Diagnostics.Add_all_missing_override_modifiers }, w[e.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code] = { descriptions: e.Diagnostics.Add_override_modifier, fixId: E, fixAllDescriptions: e.Diagnostics.Add_all_missing_override_modifiers }, w[e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code] = { descriptions: e.Diagnostics.Add_override_modifier, fixId: E, fixAllDescriptions: e.Diagnostics.Remove_all_unnecessary_override_modifiers }, w[e.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code] = { descriptions: e.Diagnostics.Remove_override_modifier, fixId: Q, fixAllDescriptions: e.Diagnostics.Remove_all_unnecessary_override_modifiers }, w[e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code] = { descriptions: e.Diagnostics.Remove_override_modifier, fixId: Q, fixAllDescriptions: e.Diagnostics.Remove_all_unnecessary_override_modifiers }, w); + C.registerCodeFix({ errorCodes: le, getCodeActions: function(K) { + var b = K.errorCode, se = K.span, J = N[b]; + if (!J) + return e.emptyArray; + var ie = J.descriptions, R = J.fixId, q = J.fixAllDescriptions, O = e.textChanges.ChangeTracker.with(K, function(ve) { + return p(ve, K, b, se.start); + }); + return [C.createCodeFixActionMaybeFixAll(B, O, ie, R, q)]; + }, fixIds: [B, E, Q], getAllCodeActions: function(T) { + return C.codeFixAll(T, le, function(K, b) { + var se = b.code, J = b.start, ie = N[se]; + !ie || ie.fixId !== T.fixId || p(K, T, se, J); + }); + } }); + function p(T, K, b, se) { + switch (b) { + case e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code: + case e.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code: + case e.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code: + case e.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code: + case e.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code: + return m(T, K.sourceFile, se); + case e.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code: + case e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code: + case e.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code: + case e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code: + return G(T, K.sourceFile, se); + default: + e.Debug.fail("Unexpected error code: " + b); + } + } + function m(T, K, b) { + var se = f(K, b); + if (e.isSourceFileJS(K)) { + T.addJSDocTags(K, se, [e.factory.createJSDocOverrideTag(e.factory.createIdentifier("override"))]); + return; + } + var J = se.modifiers || e.emptyArray, ie = e.find(J, e.isStaticModifier), R = e.find(J, e.isAbstractModifier), q = e.find(J, function(ee) { + return e.isAccessibilityModifier(ee.kind); + }), O = R ? R.end : ie ? ie.end : q ? q.end : se.decorators ? e.skipTrivia(K.text, se.decorators.end) : se.getStart(K), ve = q || ie || R ? { prefix: " " } : { suffix: " " }; + T.insertModifierAt(K, O, 159, ve); + } + function G(T, K, b) { + var se = f(K, b); + if (e.isSourceFileJS(K)) { + T.filterJSDocTags(K, se, e.not(e.isJSDocOverrideTag)); + return; + } + var J = se.modifiers && e.find(se.modifiers, function(ie) { + return ie.kind === 159; + }); + e.Debug.assertIsDefined(J), T.deleteModifier(K, J); + } + function oe(T) { + switch (T.kind) { + case 171: + case 167: + case 169: + case 172: + case 173: + return true; + case 164: + return e.isParameterPropertyDeclaration(T, T.parent); + default: + return false; + } + } + function f(T, K) { + var b = e.getTokenAtPosition(T, K), se = e.findAncestor(b, function(J) { + return e.isClassLike(J) ? "quit" : oe(J); + }); + return e.Debug.assert(se && oe(se)), se; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixNoPropertyAccessFromIndexSignature", B = [e.Diagnostics.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0.code]; + C.registerCodeFix({ errorCodes: B, fixIds: [w], getCodeActions: function(le) { + var N = le.sourceFile, p = le.span, m = le.preferences, G = Q(N, p.start), oe = e.textChanges.ChangeTracker.with(le, function(f) { + return E(f, le.sourceFile, G, m); + }); + return [C.createCodeFixAction(w, oe, [e.Diagnostics.Use_element_access_for_0, G.name.text], w, e.Diagnostics.Use_element_access_for_all_undeclared_properties)]; + }, getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + return E(N, p.file, Q(p.file, p.start), le.preferences); + }); + } }); + function E(le, N, p, m) { + var G = e.getQuotePreference(N, m), oe = e.factory.createStringLiteral(p.name.text, G === 0); + le.replaceNode(N, p, e.isPropertyAccessChain(p) ? e.factory.createElementAccessChain(p.expression, p.questionDotToken, oe) : e.factory.createElementAccessExpression(p.expression, oe)); + } + function Q(le, N) { + return e.cast(e.getTokenAtPosition(le, N).parent, e.isPropertyAccessExpression); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixImplicitThis", B = [e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.sourceFile, p = le.program, m = le.span, G, oe = e.textChanges.ChangeTracker.with(le, function(f) { + G = E(f, N, m.start, p.getTypeChecker()); + }); + return G ? [C.createCodeFixAction(w, oe, G, w, e.Diagnostics.Fix_all_implicit_this_errors)] : e.emptyArray; + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le, N) { + E(le, N.file, N.start, Q.program.getTypeChecker()); + }); + } }); + function E(Q, le, N, p) { + var m = e.getTokenAtPosition(le, N); + if (!!e.isThis(m)) { + var G = e.getThisContainer(m, false); + if (!(!e.isFunctionDeclaration(G) && !e.isFunctionExpression(G)) && !e.isSourceFile(e.getThisContainer(G, false))) { + var oe = e.Debug.checkDefined(e.findChildOfKind(G, 98, le)), f = G.name, T = e.Debug.checkDefined(G.body); + return e.isFunctionExpression(G) ? f && e.FindAllReferences.Core.isSymbolReferencedInFile(f, p, le, T) ? void 0 : (Q.delete(le, oe), f && Q.delete(le, f), Q.insertText(le, T.pos, " =>"), [e.Diagnostics.Convert_function_expression_0_to_arrow_function, f ? f.text : e.ANONYMOUS]) : (Q.replaceNode(le, oe, e.factory.createToken(85)), Q.insertText(le, f.end, " = "), Q.insertText(le, T.pos, " =>"), [e.Diagnostics.Convert_function_declaration_0_to_arrow_function, f.text]); + } + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixIncorrectNamedTupleSyntax", B = [e.Diagnostics.A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_colon_rather_than_after_the_type.code, e.Diagnostics.A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = N.sourceFile, m = N.span, G = E(p, m.start), oe = e.textChanges.ChangeTracker.with(N, function(f) { + return Q(f, p, G); + }); + return [C.createCodeFixAction(w, oe, e.Diagnostics.Move_labeled_tuple_element_modifiers_to_labels, w, e.Diagnostics.Move_labeled_tuple_element_modifiers_to_labels)]; + }, fixIds: [w] }); + function E(le, N) { + var p = e.getTokenAtPosition(le, N); + return e.findAncestor(p, function(m) { + return m.kind === 197; + }); + } + function Q(le, N, p) { + if (!!p) { + for (var m = p.type, G = false, oe = false; m.kind === 185 || m.kind === 186 || m.kind === 191; ) + m.kind === 185 ? G = true : m.kind === 186 && (oe = true), m = m.type; + var f = e.factory.updateNamedTupleMember(p, p.dotDotDotToken || (oe ? e.factory.createToken(25) : void 0), p.name, p.questionToken || (G ? e.factory.createToken(57) : void 0), m); + f !== p && le.replaceNode(N, p, f); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixSpelling", B = [e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code, e.Diagnostics.Property_0_may_not_exist_on_type_1_Did_you_mean_2.code, e.Diagnostics.Cannot_find_name_0_Did_you_mean_1.code, e.Diagnostics.Could_not_find_name_0_Did_you_mean_1.code, e.Diagnostics.Cannot_find_namespace_0_Did_you_mean_1.code, e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code, e.Diagnostics._0_has_no_exported_member_named_1_Did_you_mean_2.code, e.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1.code, e.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1.code, e.Diagnostics.No_overload_matches_this_call.code, e.Diagnostics.Type_0_is_not_assignable_to_type_1.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(p) { + var m = p.sourceFile, G = p.errorCode, oe = E(m, p.span.start, p, G); + if (!!oe) { + var f = oe.node, T = oe.suggestedSymbol, K = e.getEmitScriptTarget(p.host.getCompilationSettings()), b = e.textChanges.ChangeTracker.with(p, function(se) { + return Q(se, m, f, T, K); + }); + return [C.createCodeFixAction("spelling", b, [e.Diagnostics.Change_spelling_to_0, e.symbolName(T)], w, e.Diagnostics.Fix_all_detected_spelling_errors)]; + } + }, fixIds: [w], getAllCodeActions: function(p) { + return C.codeFixAll(p, B, function(m, G) { + var oe = E(G.file, G.start, p, G.code), f = e.getEmitScriptTarget(p.host.getCompilationSettings()); + oe && Q(m, p.sourceFile, oe.node, oe.suggestedSymbol, f); + }); + } }); + function E(p, m, G, oe) { + var f = e.getTokenAtPosition(p, m), T = f.parent; + if (!((oe === e.Diagnostics.No_overload_matches_this_call.code || oe === e.Diagnostics.Type_0_is_not_assignable_to_type_1.code) && !e.isJsxAttribute(T))) { + var K = G.program.getTypeChecker(), b; + if (e.isPropertyAccessExpression(T) && T.name === f) { + e.Debug.assert(e.isMemberName(f), "Expected an identifier for spelling (property access)"); + var se = K.getTypeAtLocation(T.expression); + T.flags & 32 && (se = K.getNonNullableType(se)), b = K.getSuggestedSymbolForNonexistentProperty(f, se); + } else if (e.isBinaryExpression(T) && T.operatorToken.kind === 101 && T.left === f && e.isPrivateIdentifier(f)) { + var J = K.getTypeAtLocation(T.right); + b = K.getSuggestedSymbolForNonexistentProperty(f, J); + } else if (e.isQualifiedName(T) && T.right === f) { + var ie = K.getSymbolAtLocation(T.left); + ie && ie.flags & 1536 && (b = K.getSuggestedSymbolForNonexistentModule(T.right, ie)); + } else if (e.isImportSpecifier(T) && T.name === f) { + e.Debug.assertNode(f, e.isIdentifier, "Expected an identifier for spelling (import)"); + var R = e.findAncestor(f, e.isImportDeclaration), q = N(p, G, R); + q && q.symbol && (b = K.getSuggestedSymbolForNonexistentModule(f, q.symbol)); + } else if (e.isJsxAttribute(T) && T.name === f) { + e.Debug.assertNode(f, e.isIdentifier, "Expected an identifier for JSX attribute"); + var O = e.findAncestor(f, e.isJsxOpeningLikeElement), ve = K.getContextualTypeForArgumentAtIndex(O, 0); + b = K.getSuggestedSymbolForNonexistentJSXAttribute(f, ve); + } else if (e.hasSyntacticModifier(T, 16384) && e.isClassElement(T) && T.name === f) { + var ee = e.findAncestor(f, e.isClassLike), he = ee ? e.getEffectiveBaseTypeNode(ee) : void 0, F = he ? K.getTypeAtLocation(he) : void 0; + F && (b = K.getSuggestedSymbolForNonexistentClassMember(e.getTextOfNode(f), F)); + } else { + var x = e.getMeaningFromLocation(f), X = e.getTextOfNode(f); + e.Debug.assert(X !== void 0, "name should be defined"), b = K.getSuggestedSymbolForNonexistentSymbol(f, X, le(x)); + } + return b === void 0 ? void 0 : { node: f, suggestedSymbol: b }; + } + } + function Q(p, m, G, oe, f) { + var T = e.symbolName(oe); + if (!e.isIdentifierText(T, f) && e.isPropertyAccessExpression(G.parent)) { + var K = oe.valueDeclaration; + K && e.isNamedDeclaration(K) && e.isPrivateIdentifier(K.name) ? p.replaceNode(m, G, e.factory.createIdentifier(T)) : p.replaceNode(m, G.parent, e.factory.createElementAccessExpression(G.parent.expression, e.factory.createStringLiteral(T))); + } else + p.replaceNode(m, G, e.factory.createIdentifier(T)); + } + function le(p) { + var m = 0; + return p & 4 && (m |= 1920), p & 2 && (m |= 788968), p & 1 && (m |= 111551), m; + } + function N(p, m, G) { + if (!(!G || !e.isStringLiteralLike(G.moduleSpecifier))) { + var oe = e.getResolvedModule(p, G.moduleSpecifier.text, e.getModeForUsageLocation(p, G.moduleSpecifier)); + if (!!oe) + return m.program.getSourceFile(oe.resolvedFileName); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "returnValueCorrect", B = "fixAddReturnStatement", E = "fixRemoveBracesFromArrowFunctionBody", Q = "fixWrapTheBlockWithParen", le = [e.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value.code, e.Diagnostics.Type_0_is_not_assignable_to_type_1.code, e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code], N; + (function(R) { + R[R.MissingReturnStatement = 0] = "MissingReturnStatement", R[R.MissingParentheses = 1] = "MissingParentheses"; + })(N || (N = {})), C.registerCodeFix({ errorCodes: le, fixIds: [B, E, Q], getCodeActions: function(q) { + var O = q.program, ve = q.sourceFile, ee = q.span.start, he = q.errorCode, F = oe(O.getTypeChecker(), ve, ee, he); + if (!!F) + return F.kind === N.MissingReturnStatement ? e.append([se(q, F.expression, F.statement)], e.isArrowFunction(F.declaration) ? J(q, F.declaration, F.expression, F.commentSource) : void 0) : [ie(q, F.declaration, F.expression)]; + }, getAllCodeActions: function(R) { + return C.codeFixAll(R, le, function(q, O) { + var ve = oe(R.program.getTypeChecker(), O.file, O.start, O.code); + if (!!ve) + switch (R.fixId) { + case B: + T(q, O.file, ve.expression, ve.statement); + break; + case E: + if (!e.isArrowFunction(ve.declaration)) + return; + K(q, O.file, ve.declaration, ve.expression, ve.commentSource, false); + break; + case Q: + if (!e.isArrowFunction(ve.declaration)) + return; + b(q, O.file, ve.declaration, ve.expression); + break; + default: + e.Debug.fail(JSON.stringify(R.fixId)); + } + }); + } }); + function p(R, q, O) { + var ve = R.createSymbol(4, q.escapedText); + ve.type = R.getTypeAtLocation(O); + var ee = e.createSymbolTable([ve]); + return R.createAnonymousType(void 0, ee, [], [], []); + } + function m(R, q, O, ve) { + if (!(!q.body || !e.isBlock(q.body) || e.length(q.body.statements) !== 1)) { + var ee = e.first(q.body.statements); + if (e.isExpressionStatement(ee) && G(R, q, R.getTypeAtLocation(ee.expression), O, ve)) + return { declaration: q, kind: N.MissingReturnStatement, expression: ee.expression, statement: ee, commentSource: ee.expression }; + if (e.isLabeledStatement(ee) && e.isExpressionStatement(ee.statement)) { + var he = e.factory.createObjectLiteralExpression([e.factory.createPropertyAssignment(ee.label, ee.statement.expression)]), F = p(R, ee.label, ee.statement.expression); + if (G(R, q, F, O, ve)) + return e.isArrowFunction(q) ? { declaration: q, kind: N.MissingParentheses, expression: he, statement: ee, commentSource: ee.statement.expression } : { declaration: q, kind: N.MissingReturnStatement, expression: he, statement: ee, commentSource: ee.statement.expression }; + } else if (e.isBlock(ee) && e.length(ee.statements) === 1) { + var x = e.first(ee.statements); + if (e.isLabeledStatement(x) && e.isExpressionStatement(x.statement)) { + var he = e.factory.createObjectLiteralExpression([e.factory.createPropertyAssignment(x.label, x.statement.expression)]), F = p(R, x.label, x.statement.expression); + if (G(R, q, F, O, ve)) + return { declaration: q, kind: N.MissingReturnStatement, expression: he, statement: ee, commentSource: x }; + } + } + } + } + function G(R, q, O, ve, ee) { + if (ee) { + var he = R.getSignatureFromDeclaration(q); + if (he) { + e.hasSyntacticModifier(q, 256) && (O = R.createPromiseType(O)); + var F = R.createSignature(q, he.typeParameters, he.thisParameter, he.parameters, O, void 0, he.minArgumentCount, he.flags); + O = R.createAnonymousType(void 0, e.createSymbolTable(), [F], [], []); + } else + O = R.getAnyType(); + } + return R.isTypeAssignableTo(O, ve); + } + function oe(R, q, O, ve) { + var ee = e.getTokenAtPosition(q, O); + if (!!ee.parent) { + var he = e.findAncestor(ee.parent, e.isFunctionLikeDeclaration); + switch (ve) { + case e.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value.code: + return !he || !he.body || !he.type || !e.rangeContainsRange(he.type, ee) ? void 0 : m(R, he, R.getTypeFromTypeNode(he.type), false); + case e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code: + if (!he || !e.isCallExpression(he.parent) || !he.body) + return; + var F = he.parent.arguments.indexOf(he), x = R.getContextualTypeForArgumentAtIndex(he.parent, F); + return x ? m(R, he, x, true) : void 0; + case e.Diagnostics.Type_0_is_not_assignable_to_type_1.code: + if (!e.isDeclarationName(ee) || !e.isVariableLike(ee.parent) && !e.isJsxAttribute(ee.parent)) + return; + var X = f(ee.parent); + return !X || !e.isFunctionLikeDeclaration(X) || !X.body ? void 0 : m(R, X, R.getTypeAtLocation(ee.parent), true); + } + } + } + function f(R) { + switch (R.kind) { + case 254: + case 164: + case 203: + case 167: + case 296: + return R.initializer; + case 285: + return R.initializer && (e.isJsxExpression(R.initializer) ? R.initializer.expression : void 0); + case 297: + case 166: + case 299: + case 347: + case 340: + return; + } + } + function T(R, q, O, ve) { + e.suppressLeadingAndTrailingTrivia(O); + var ee = e.probablyUsesSemicolons(q); + R.replaceNode(q, ve, e.factory.createReturnStatement(O), { leadingTriviaOption: e.textChanges.LeadingTriviaOption.Exclude, trailingTriviaOption: e.textChanges.TrailingTriviaOption.Exclude, suffix: ee ? ";" : void 0 }); + } + function K(R, q, O, ve, ee, he) { + var F = he || e.needsParentheses(ve) ? e.factory.createParenthesizedExpression(ve) : ve; + e.suppressLeadingAndTrailingTrivia(ee), e.copyComments(ee, F), R.replaceNode(q, O.body, F); + } + function b(R, q, O, ve) { + R.replaceNode(q, O.body, e.factory.createParenthesizedExpression(ve)); + } + function se(R, q, O) { + var ve = e.textChanges.ChangeTracker.with(R, function(ee) { + return T(ee, R.sourceFile, q, O); + }); + return C.createCodeFixAction(w, ve, e.Diagnostics.Add_a_return_statement, B, e.Diagnostics.Add_all_missing_return_statement); + } + function J(R, q, O, ve) { + var ee = e.textChanges.ChangeTracker.with(R, function(he) { + return K(he, R.sourceFile, q, O, ve, false); + }); + return C.createCodeFixAction(w, ee, e.Diagnostics.Remove_braces_from_arrow_function_body, E, e.Diagnostics.Remove_braces_from_all_arrow_function_bodies_with_relevant_issues); + } + function ie(R, q, O) { + var ve = e.textChanges.ChangeTracker.with(R, function(ee) { + return b(ee, R.sourceFile, q, O); + }); + return C.createCodeFixAction(w, ve, e.Diagnostics.Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal, Q, e.Diagnostics.Wrap_all_object_literal_with_parentheses); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixMissingMember", B = "fixMissingProperties", E = "fixMissingAttributes", Q = "fixMissingFunctionDeclaration", le = [e.Diagnostics.Property_0_does_not_exist_on_type_1.code, e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code, e.Diagnostics.Property_0_is_missing_in_type_1_but_required_in_type_2.code, e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2.code, e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more.code, e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code, e.Diagnostics.Cannot_find_name_0.code]; + C.registerCodeFix({ errorCodes: le, getCodeActions: function(y) { + var V = y.program.getTypeChecker(), L = p(y.sourceFile, y.span.start, y.errorCode, V, y.program); + if (!!L) { + if (L.kind === 3) { + var P = e.textChanges.ChangeTracker.with(y, function(k) { + return he(k, y, L); + }); + return [C.createCodeFixAction(B, P, e.Diagnostics.Add_missing_properties, B, e.Diagnostics.Add_all_missing_properties)]; + } + if (L.kind === 4) { + var P = e.textChanges.ChangeTracker.with(y, function(Y) { + return ee(Y, y, L); + }); + return [C.createCodeFixAction(E, P, e.Diagnostics.Add_missing_attributes, E, e.Diagnostics.Add_all_missing_attributes)]; + } + if (L.kind === 2) { + var P = e.textChanges.ChangeTracker.with(y, function(Y) { + return ve(Y, y, L); + }); + return [C.createCodeFixAction(Q, P, [e.Diagnostics.Add_missing_function_declaration_0, L.token.text], Q, e.Diagnostics.Add_all_missing_function_declarations)]; + } + if (L.kind === 1) { + var P = e.textChanges.ChangeTracker.with(y, function(Y) { + return O(Y, y.program.getTypeChecker(), L); + }); + return [C.createCodeFixAction(w, P, [e.Diagnostics.Add_missing_enum_member_0, L.token.text], w, e.Diagnostics.Add_all_missing_members)]; + } + return e.concatenate(R(y, L), G(y, L)); + } + }, fixIds: [w, Q, B, E], getAllCodeActions: function(y) { + var V = y.program, L = y.fixId, P = V.getTypeChecker(), k = new e.Map(), Y = new e.Map(); + return C.createCombinedCodeActions(e.textChanges.ChangeTracker.with(y, function(U) { + C.eachDiagnostic(y, le, function(j) { + var H = p(j.file, j.start, j.code, P, y.program); + if (!(!H || !e.addToSeen(k, e.getNodeId(H.parentDeclaration) + "#" + H.token.text))) { + if (L === Q && H.kind === 2) + ve(U, y, H); + else if (L === B && H.kind === 3) + he(U, y, H); + else if (L === E && H.kind === 4) + ee(U, y, H); + else if (H.kind === 1 && O(U, P, H), H.kind === 0) { + var I = H.parentDeclaration, l = H.token, d = e.getOrUpdate(Y, I, function() { + return []; + }); + d.some(function(D) { + return D.token.text === l.text; + }) || d.push(H); + } + } + }), Y.forEach(function(j, H) { + for (var I = e.isTypeLiteralNode(H) ? void 0 : C.getAllSupers(H, P), l = function(g) { + if (I != null && I.some(function(Re) { + var ze = Y.get(Re); + return !!ze && ze.some(function(Ee) { + var He = Ee.token; + return He.text === g.token.text; + }); + })) + return "continue"; + var ne = g.parentDeclaration, ue = g.declSourceFile, We = g.modifierFlags, Fe = g.token, Z = g.call, Be = g.isJSFile; + if (Z && !e.isPrivateIdentifier(Fe)) + q(y, U, Z, Fe, We & 32, ne, ue); + else if (Be && !e.isInterfaceDeclaration(ne) && !e.isTypeLiteralNode(ne)) + f(U, ue, ne, Fe, !!(We & 32)); + else { + var ge = b(P, ne, Fe); + se(U, ue, ne, Fe.text, ge, We & 32); + } + }, d = 0, D = j; d < D.length; d++) { + var fe = D[d]; + l(fe); + } + }); + })); + } }); + var N; + (function(y) { + y[y.TypeLikeDeclaration = 0] = "TypeLikeDeclaration", y[y.Enum = 1] = "Enum", y[y.Function = 2] = "Function", y[y.ObjectLiteral = 3] = "ObjectLiteral", y[y.JsxAttributes = 4] = "JsxAttributes"; + })(N || (N = {})); + function p(y, V, L, P, k) { + var Y = e.getTokenAtPosition(y, V), U = Y.parent; + if (L === e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code) { + if (!(Y.kind === 18 && e.isObjectLiteralExpression(U) && e.isCallExpression(U.parent))) + return; + var j = e.findIndex(U.parent.arguments, function(rr) { + return rr === U; + }); + if (j < 0) + return; + var H = e.singleOrUndefined(P.getSignaturesOfType(P.getTypeAtLocation(U.parent.expression), 0)); + if (!(H && H.declaration && H.parameters[j])) + return; + var I = H.parameters[j].valueDeclaration; + if (!(I && e.isParameter(I) && e.isIdentifier(I.name))) + return; + var l = e.arrayFrom(P.getUnmatchedProperties(P.getTypeAtLocation(U), P.getParameterType(H, j), false, false)); + return e.length(l) ? { kind: 3, token: I.name, properties: l, parentDeclaration: U } : void 0; + } + if (!!e.isMemberName(Y)) { + if (e.isIdentifier(Y) && e.hasInitializer(U) && U.initializer && e.isObjectLiteralExpression(U.initializer)) { + var l = e.arrayFrom(P.getUnmatchedProperties(P.getTypeAtLocation(U.initializer), P.getTypeAtLocation(Y), false, false)); + return e.length(l) ? { kind: 3, token: Y, properties: l, parentDeclaration: U.initializer } : void 0; + } + if (e.isIdentifier(Y) && e.isJsxOpeningLikeElement(Y.parent)) { + var d = e.getEmitScriptTarget(k.getCompilerOptions()), D = $(P, d, Y.parent); + return e.length(D) ? { kind: 4, token: Y, attributes: D, parentDeclaration: Y.parent } : void 0; + } + if (e.isIdentifier(Y) && e.isCallExpression(U)) + return { kind: 2, token: Y, call: U, sourceFile: y, modifierFlags: 0, parentDeclaration: y }; + if (!!e.isPropertyAccessExpression(U)) { + var fe = e.skipConstraint(P.getTypeAtLocation(U.expression)), g = fe.symbol; + if (!(!g || !g.declarations)) { + if (e.isIdentifier(Y) && e.isCallExpression(U.parent)) { + var ne = e.find(g.declarations, e.isModuleDeclaration), ue = ne == null ? void 0 : ne.getSourceFile(); + if (ne && ue && !m(k, ue)) + return { kind: 2, token: Y, call: U.parent, sourceFile: y, modifierFlags: 1, parentDeclaration: ne }; + var We = e.find(g.declarations, e.isSourceFile); + if (y.commonJsModuleIndicator) + return; + if (We && !m(k, We)) + return { kind: 2, token: Y, call: U.parent, sourceFile: We, modifierFlags: 1, parentDeclaration: We }; + } + var Fe = e.find(g.declarations, e.isClassLike); + if (!(!Fe && e.isPrivateIdentifier(Y))) { + var Z = Fe || e.find(g.declarations, function(rr) { + return e.isInterfaceDeclaration(rr) || e.isTypeLiteralNode(rr); + }); + if (Z && !m(k, Z.getSourceFile())) { + var Be = !e.isTypeLiteralNode(Z) && (fe.target || fe) !== P.getDeclaredTypeOfSymbol(g); + if (Be && (e.isPrivateIdentifier(Y) || e.isInterfaceDeclaration(Z))) + return; + var ge = Z.getSourceFile(), Re = e.isTypeLiteralNode(Z) ? 0 : (Be ? 32 : 0) | (e.startsWithUnderscore(Y.text) ? 8 : 0), ze = e.isSourceFileJS(ge), Ee = e.tryCast(U.parent, e.isCallExpression); + return { kind: 0, token: Y, call: Ee, modifierFlags: Re, parentDeclaration: Z, declSourceFile: ge, isJSFile: ze }; + } + var He = e.find(g.declarations, e.isEnumDeclaration); + if (He && !e.isPrivateIdentifier(Y) && !m(k, He.getSourceFile())) + return { kind: 1, token: Y, parentDeclaration: He }; + } + } + } + } + } + function m(y, V) { + return y.isSourceFileFromExternalLibrary(V) || y.isSourceFileDefaultLibrary(V); + } + function G(y, V) { + return V.isJSFile ? e.singleElementArray(oe(y, V)) : K(y, V); + } + function oe(y, V) { + var L = V.parentDeclaration, P = V.declSourceFile, k = V.modifierFlags, Y = V.token; + if (!(e.isInterfaceDeclaration(L) || e.isTypeLiteralNode(L))) { + var U = e.textChanges.ChangeTracker.with(y, function(H) { + return f(H, P, L, Y, !!(k & 32)); + }); + if (U.length !== 0) { + var j = k & 32 ? e.Diagnostics.Initialize_static_property_0 : e.isPrivateIdentifier(Y) ? e.Diagnostics.Declare_a_private_field_named_0 : e.Diagnostics.Initialize_property_0_in_the_constructor; + return C.createCodeFixAction(w, U, [j, Y.text], w, e.Diagnostics.Add_all_missing_members); + } + } + } + function f(y, V, L, P, k) { + var Y = P.text; + if (k) { + if (L.kind === 226) + return; + var U = L.name.getText(), j = T(e.factory.createIdentifier(U), Y); + y.insertNodeAfter(V, L, j); + } else if (e.isPrivateIdentifier(P)) { + var H = e.factory.createPropertyDeclaration(void 0, void 0, Y, void 0, void 0, void 0), I = J(L); + I ? y.insertNodeAfter(V, I, H) : y.insertMemberAtStart(V, L, H); + } else { + var l = e.getFirstConstructorWithBody(L); + if (!l) + return; + var d = T(e.factory.createThis(), Y); + y.insertNodeAtConstructorEnd(V, l, d); + } + } + function T(y, V) { + return e.factory.createExpressionStatement(e.factory.createAssignment(e.factory.createPropertyAccessExpression(y, V), x())); + } + function K(y, V) { + var L = V.parentDeclaration, P = V.declSourceFile, k = V.modifierFlags, Y = V.token, U = Y.text, j = k & 32, H = b(y.program.getTypeChecker(), L, Y), I = function(d) { + return e.textChanges.ChangeTracker.with(y, function(D) { + return se(D, P, L, U, H, d); + }); + }, l = [C.createCodeFixAction(w, I(k & 32), [j ? e.Diagnostics.Declare_static_property_0 : e.Diagnostics.Declare_property_0, U], w, e.Diagnostics.Add_all_missing_members)]; + return j || e.isPrivateIdentifier(Y) || (k & 8 && l.unshift(C.createCodeFixActionWithoutFixAll(w, I(8), [e.Diagnostics.Declare_private_property_0, U])), l.push(ie(y, P, L, Y.text, H))), l; + } + function b(y, V, L) { + var P; + if (L.parent.parent.kind === 221) { + var k = L.parent.parent, Y = L.parent === k.left ? k.right : k.left, U = y.getWidenedType(y.getBaseTypeOfLiteralType(y.getTypeAtLocation(Y))); + P = y.typeToTypeNode(U, V, 1); + } else { + var j = y.getContextualType(L.parent); + P = j ? y.typeToTypeNode(j, void 0, 1) : void 0; + } + return P || e.factory.createKeywordTypeNode(130); + } + function se(y, V, L, P, k, Y) { + var U = Y ? e.factory.createNodeArray(e.factory.createModifiersFromModifierFlags(Y)) : void 0, j = e.isClassLike(L) ? e.factory.createPropertyDeclaration(void 0, U, P, void 0, k, void 0) : e.factory.createPropertySignature(void 0, P, void 0, k), H = J(L); + H ? y.insertNodeAfter(V, H, j) : y.insertMemberAtStart(V, L, j); + } + function J(y) { + for (var V, L = 0, P = y.members; L < P.length; L++) { + var k = P[L]; + if (!e.isPropertyDeclaration(k)) + break; + V = k; + } + return V; + } + function ie(y, V, L, P, k) { + var Y = e.factory.createKeywordTypeNode(150), U = e.factory.createParameterDeclaration(void 0, void 0, void 0, "x", void 0, Y, void 0), j = e.factory.createIndexSignature(void 0, void 0, [U], k), H = e.textChanges.ChangeTracker.with(y, function(I) { + return I.insertMemberAtStart(V, L, j); + }); + return C.createCodeFixActionWithoutFixAll(w, H, [e.Diagnostics.Add_index_signature_for_property_0, P]); + } + function R(y, V) { + var L = V.parentDeclaration, P = V.declSourceFile, k = V.modifierFlags, Y = V.token, U = V.call; + if (U !== void 0 && !e.isPrivateIdentifier(Y)) { + var j = Y.text, H = function(l) { + return e.textChanges.ChangeTracker.with(y, function(d) { + return q(y, d, U, Y, l, L, P); + }); + }, I = [C.createCodeFixAction(w, H(k & 32), [k & 32 ? e.Diagnostics.Declare_static_method_0 : e.Diagnostics.Declare_method_0, j], w, e.Diagnostics.Add_all_missing_members)]; + return k & 8 && I.unshift(C.createCodeFixActionWithoutFixAll(w, H(8), [e.Diagnostics.Declare_private_method_0, j])), I; + } + } + function q(y, V, L, P, k, Y, U) { + var j = C.createImportAdder(U, y.program, y.preferences, y.host), H = e.isClassLike(Y) ? 169 : 168, I = C.createSignatureDeclarationFromCallExpression(H, y, j, L, P, k, Y), l = A(Y, L); + l ? V.insertNodeAfter(U, l, I) : V.insertMemberAtStart(U, Y, I), j.writeFixes(V); + } + function O(y, V, L) { + var P = L.token, k = L.parentDeclaration, Y = e.some(k.members, function(j) { + var H = V.getTypeAtLocation(j); + return !!(H && H.flags & 402653316); + }), U = e.factory.createEnumMember(P, Y ? e.factory.createStringLiteral(P.text) : void 0); + y.replaceNode(k.getSourceFile(), k, e.factory.updateEnumDeclaration(k, k.decorators, k.modifiers, k.name, e.concatenate(k.members, e.singleElementArray(U))), { leadingTriviaOption: e.textChanges.LeadingTriviaOption.IncludeAll, trailingTriviaOption: e.textChanges.TrailingTriviaOption.Exclude }); + } + function ve(y, V, L) { + var P = C.createImportAdder(V.sourceFile, V.program, V.preferences, V.host), k = C.createSignatureDeclarationFromCallExpression(256, V, P, L.call, e.idText(L.token), L.modifierFlags, L.parentDeclaration); + y.insertNodeAtEndOfScope(L.sourceFile, L.parentDeclaration, k); + } + function ee(y, V, L) { + var P = C.createImportAdder(V.sourceFile, V.program, V.preferences, V.host), k = e.getQuotePreference(V.sourceFile, V.preferences), Y = V.program.getTypeChecker(), U = L.parentDeclaration.attributes, j = e.some(U.properties, e.isJsxSpreadAttribute), H = e.map(L.attributes, function(d) { + var D = F(V, Y, P, k, Y.getTypeOfSymbol(d)), fe = e.factory.createIdentifier(d.name), g = e.factory.createJsxAttribute(fe, e.factory.createJsxExpression(void 0, D)); + return e.setParent(fe, g), g; + }), I = e.factory.createJsxAttributes(j ? Ve(Ve([], H, true), U.properties, true) : Ve(Ve([], U.properties, true), H, true)), l = { prefix: U.pos === U.end ? " " : void 0 }; + y.replaceNode(V.sourceFile, U, I, l); + } + function he(y, V, L) { + var P = C.createImportAdder(V.sourceFile, V.program, V.preferences, V.host), k = e.getQuotePreference(V.sourceFile, V.preferences), Y = e.getEmitScriptTarget(V.program.getCompilerOptions()), U = V.program.getTypeChecker(), j = e.map(L.properties, function(I) { + var l = F(V, U, P, k, U.getTypeOfSymbol(I)); + return e.factory.createPropertyAssignment(e.createPropertyNameNodeForIdentifierOrLiteral(I.name, Y, k === 0), l); + }), H = { leadingTriviaOption: e.textChanges.LeadingTriviaOption.Exclude, trailingTriviaOption: e.textChanges.TrailingTriviaOption.Exclude, indentation: L.indentation }; + y.replaceNode(V.sourceFile, L.parentDeclaration, e.factory.createObjectLiteralExpression(Ve(Ve([], L.parentDeclaration.properties, true), j, true), true), H); + } + function F(y, V, L, P, k) { + if (k.flags & 3) + return x(); + if (k.flags & 134217732) + return e.factory.createStringLiteral("", P === 0); + if (k.flags & 8) + return e.factory.createNumericLiteral(0); + if (k.flags & 64) + return e.factory.createBigIntLiteral("0n"); + if (k.flags & 16) + return e.factory.createFalse(); + if (k.flags & 1056) { + var Y = k.symbol.exports ? e.firstOrUndefined(e.arrayFrom(k.symbol.exports.values())) : k.symbol, U = V.symbolToExpression(k.symbol.parent ? k.symbol.parent : k.symbol, 111551, void 0, void 0); + return Y === void 0 || U === void 0 ? e.factory.createNumericLiteral(0) : e.factory.createPropertyAccessExpression(U, V.symbolToString(Y)); + } + if (k.flags & 256) + return e.factory.createNumericLiteral(k.value); + if (k.flags & 2048) + return e.factory.createBigIntLiteral(k.value); + if (k.flags & 128) + return e.factory.createStringLiteral(k.value, P === 0); + if (k.flags & 512) + return k === V.getFalseType() || k === V.getFalseType(true) ? e.factory.createFalse() : e.factory.createTrue(); + if (k.flags & 65536) + return e.factory.createNull(); + if (k.flags & 1048576) { + var j = e.firstDefined(k.types, function(g) { + return F(y, V, L, P, g); + }); + return j != null ? j : x(); + } + if (V.isArrayLikeType(k)) + return e.factory.createArrayLiteralExpression(); + if (X(k)) { + var H = e.map(V.getPropertiesOfType(k), function(g) { + var ne = g.valueDeclaration ? F(y, V, L, P, V.getTypeAtLocation(g.valueDeclaration)) : x(); + return e.factory.createPropertyAssignment(g.name, ne); + }); + return e.factory.createObjectLiteralExpression(H, true); + } + if (e.getObjectFlags(k) & 16) { + var I = e.find(k.symbol.declarations || e.emptyArray, e.or(e.isFunctionTypeNode, e.isMethodSignature, e.isMethodDeclaration)); + if (I === void 0) + return x(); + var l = V.getSignaturesOfType(k, 0); + if (l === void 0) + return x(); + var d = C.createSignatureDeclarationFromSignature(213, y, P, l[0], C.createStubbedBody(e.Diagnostics.Function_not_implemented.message, P), void 0, void 0, void 0, void 0, L); + return d != null ? d : x(); + } + if (e.getObjectFlags(k) & 1) { + var D = e.getClassLikeDeclarationOfSymbol(k.symbol); + if (D === void 0 || e.hasAbstractModifier(D)) + return x(); + var fe = e.getFirstConstructorWithBody(D); + return fe && e.length(fe.parameters) ? x() : e.factory.createNewExpression(e.factory.createIdentifier(k.symbol.name), void 0, void 0); + } + return x(); + } + function x() { + return e.factory.createIdentifier("undefined"); + } + function X(y) { + return y.flags & 524288 && (e.getObjectFlags(y) & 128 || y.symbol && e.tryCast(e.singleOrUndefined(y.symbol.declarations), e.isTypeLiteralNode)); + } + function $(y, V, L) { + var P = y.getContextualType(L.attributes); + if (P === void 0) + return e.emptyArray; + var k = P.getProperties(); + if (!e.length(k)) + return e.emptyArray; + for (var Y = new e.Set(), U = 0, j = L.attributes.properties; U < j.length; U++) { + var H = j[U]; + if (e.isJsxAttribute(H) && Y.add(H.name.escapedText), e.isJsxSpreadAttribute(H)) + for (var I = y.getTypeAtLocation(H.expression), l = 0, d = I.getProperties(); l < d.length; l++) { + var D = d[l]; + Y.add(D.escapedName); + } + } + return e.filter(k, function(fe) { + return e.isIdentifierText(fe.name, V, 1) && !(fe.flags & 16777216 || e.getCheckFlags(fe) & 48 || Y.has(fe.escapedName)); + }); + } + function A(y, V) { + if (!e.isTypeLiteralNode(y)) { + var L = e.findAncestor(V, function(P) { + return e.isMethodDeclaration(P) || e.isConstructorDeclaration(P); + }); + return L && L.parent === y ? L : void 0; + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addMissingNewOperator", B = [e.Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.sourceFile, p = le.span, m = e.textChanges.ChangeTracker.with(le, function(G) { + return E(G, N, p); + }); + return [C.createCodeFixAction(w, m, e.Diagnostics.Add_missing_new_operator_to_call, w, e.Diagnostics.Add_missing_new_operator_to_all_calls)]; + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + return E(N, le.sourceFile, p); + }); + } }); + function E(le, N, p) { + var m = e.cast(Q(N, p), e.isCallExpression), G = e.factory.createNewExpression(m.expression, m.typeArguments, m.arguments); + le.replaceNode(N, m, G); + } + function Q(le, N) { + for (var p = e.getTokenAtPosition(le, N.start), m = e.textSpanEnd(N); p.end < m; ) + p = p.parent; + return p; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixCannotFindModule", B = "installTypesPackage", E = e.Diagnostics.Cannot_find_module_0_or_its_corresponding_type_declarations.code, Q = [E, e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type.code]; + C.registerCodeFix({ errorCodes: Q, getCodeActions: function(G) { + var oe = G.host, f = G.sourceFile, T = G.span.start, K = N(f, T); + if (K !== void 0) { + var b = p(K, oe, G.errorCode); + return b === void 0 ? [] : [C.createCodeFixAction(w, [], [e.Diagnostics.Install_0, b], B, e.Diagnostics.Install_all_missing_types_packages, le(f.fileName, b))]; + } + }, fixIds: [B], getAllCodeActions: function(m) { + return C.codeFixAll(m, Q, function(G, oe, f) { + var T = N(oe.file, oe.start); + if (T !== void 0) + switch (m.fixId) { + case B: { + var K = p(T, m.host, oe.code); + K && f.push(le(oe.file.fileName, K)); + break; + } + default: + e.Debug.fail("Bad fixId: ".concat(m.fixId)); + } + }); + } }); + function le(m, G) { + return { type: "install package", file: m, packageName: G }; + } + function N(m, G) { + var oe = e.tryCast(e.getTokenAtPosition(m, G), e.isStringLiteral); + if (!!oe) { + var f = oe.text, T = e.parsePackageName(f).packageName; + return e.isExternalModuleNameRelative(T) ? void 0 : T; + } + } + function p(m, G, oe) { + var f; + return oe === E ? e.JsTyping.nodeCoreModules.has(m) ? "@types/node" : void 0 : !((f = G.isKnownTypesPackageName) === null || f === void 0) && f.call(G, m) ? e.getTypesPackageName(m) : void 0; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = [e.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2.code, e.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1.code], B = "fixClassDoesntImplementInheritedAbstractMember"; + C.registerCodeFix({ errorCodes: w, getCodeActions: function(p) { + var m = p.sourceFile, G = p.span, oe = e.textChanges.ChangeTracker.with(p, function(f) { + return Q(E(m, G.start), m, p, f, p.preferences); + }); + return oe.length === 0 ? void 0 : [C.createCodeFixAction(B, oe, e.Diagnostics.Implement_inherited_abstract_class, B, e.Diagnostics.Implement_all_inherited_abstract_classes)]; + }, fixIds: [B], getAllCodeActions: function(p) { + var m = new e.Map(); + return C.codeFixAll(p, w, function(G, oe) { + var f = E(oe.file, oe.start); + e.addToSeen(m, e.getNodeId(f)) && Q(f, p.sourceFile, p, G, p.preferences); + }); + } }); + function E(N, p) { + var m = e.getTokenAtPosition(N, p); + return e.cast(m.parent, e.isClassLike); + } + function Q(N, p, m, G, oe) { + var f = e.getEffectiveBaseTypeNode(N), T = m.program.getTypeChecker(), K = T.getTypeAtLocation(f), b = T.getPropertiesOfType(K).filter(le), se = C.createImportAdder(p, m.program, oe, m.host); + C.createMissingMemberNodes(N, b, p, m, oe, se, function(J) { + return G.insertMemberAtStart(p, N, J); + }), se.writeFixes(G); + } + function le(N) { + var p = e.getSyntacticModifierFlags(e.first(N.getDeclarations())); + return !(p & 8) && !!(p & 128); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "classSuperMustPrecedeThisAccess", B = [e.Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = N.sourceFile, m = N.span, G = Q(p, m.start); + if (!!G) { + var oe = G.constructor, f = G.superCall, T = e.textChanges.ChangeTracker.with(N, function(K) { + return E(K, p, oe, f); + }); + return [C.createCodeFixAction(w, T, e.Diagnostics.Make_super_call_the_first_statement_in_the_constructor, w, e.Diagnostics.Make_all_super_calls_the_first_statement_in_their_constructor)]; + } + }, fixIds: [w], getAllCodeActions: function(N) { + var p = N.sourceFile, m = new e.Map(); + return C.codeFixAll(N, B, function(G, oe) { + var f = Q(oe.file, oe.start); + if (!!f) { + var T = f.constructor, K = f.superCall; + e.addToSeen(m, e.getNodeId(T.parent)) && E(G, p, T, K); + } + }); + } }); + function E(N, p, m, G) { + N.insertNodeAtConstructorStart(p, m, G), N.delete(p, G); + } + function Q(N, p) { + var m = e.getTokenAtPosition(N, p); + if (m.kind === 108) { + var G = e.getContainingFunction(m), oe = le(G.body); + return oe && !oe.expression.arguments.some(function(f) { + return e.isPropertyAccessExpression(f) && f.expression === m; + }) ? { constructor: G, superCall: oe } : void 0; + } + } + function le(N) { + return e.isExpressionStatement(N) && e.isSuperCall(N.expression) ? N : e.isFunctionLike(N) ? void 0 : e.forEachChild(N, le); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "constructorForDerivedNeedSuperCall", B = [e.Diagnostics.Constructors_for_derived_classes_must_contain_a_super_call.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.sourceFile, p = le.span, m = E(N, p.start), G = e.textChanges.ChangeTracker.with(le, function(oe) { + return Q(oe, N, m); + }); + return [C.createCodeFixAction(w, G, e.Diagnostics.Add_missing_super_call, w, e.Diagnostics.Add_all_missing_super_calls)]; + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + return Q(N, le.sourceFile, E(p.file, p.start)); + }); + } }); + function E(le, N) { + var p = e.getTokenAtPosition(le, N); + return e.Debug.assert(e.isConstructorDeclaration(p.parent), "token should be at the constructor declaration"), p.parent; + } + function Q(le, N, p) { + var m = e.factory.createExpressionStatement(e.factory.createCallExpression(e.factory.createSuper(), void 0, e.emptyArray)); + le.insertNodeAtConstructorStart(N, p, m); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "enableExperimentalDecorators", B = [e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.program.getCompilerOptions().configFile; + if (N !== void 0) { + var p = e.textChanges.ChangeTracker.with(le, function(m) { + return E(m, N); + }); + return [C.createCodeFixActionWithoutFixAll(w, p, e.Diagnostics.Enable_the_experimentalDecorators_option_in_your_configuration_file)]; + } + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le) { + var N = Q.program.getCompilerOptions().configFile; + N !== void 0 && E(le, N); + }); + } }); + function E(Q, le) { + C.setJsonCompilerOptionValue(Q, le, "experimentalDecorators", e.factory.createTrue()); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixEnableJsxFlag", B = [e.Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.program.getCompilerOptions().configFile; + if (N !== void 0) { + var p = e.textChanges.ChangeTracker.with(le, function(m) { + return E(m, N); + }); + return [C.createCodeFixActionWithoutFixAll(w, p, e.Diagnostics.Enable_the_jsx_flag_in_your_configuration_file)]; + } + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le) { + var N = Q.program.getCompilerOptions().configFile; + N !== void 0 && E(le, N); + }); + } }); + function E(Q, le) { + C.setJsonCompilerOptionValue(Q, le, "jsx", e.factory.createStringLiteral("react")); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + C.registerCodeFix({ errorCodes: [e.Diagnostics.Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher.code, e.Diagnostics.Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher.code], getCodeActions: function(B) { + var E = B.program.getCompilerOptions(), Q = E.configFile; + if (Q !== void 0) { + var le = [], N = e.getEmitModuleKind(E), p = N >= e.ModuleKind.ES2015 && N < e.ModuleKind.ESNext; + if (p) { + var m = e.textChanges.ChangeTracker.with(B, function(f) { + C.setJsonCompilerOptionValue(f, Q, "module", e.factory.createStringLiteral("esnext")); + }); + le.push(C.createCodeFixActionWithoutFixAll("fixModuleOption", m, [e.Diagnostics.Set_the_module_option_in_your_configuration_file_to_0, "esnext"])); + } + var G = e.getEmitScriptTarget(E), oe = G < 4 || G > 99; + if (oe) { + var m = e.textChanges.ChangeTracker.with(B, function(T) { + var K = e.getTsConfigObjectLiteralExpression(Q); + if (!!K) { + var b = [["target", e.factory.createStringLiteral("es2017")]]; + N === e.ModuleKind.CommonJS && b.push(["module", e.factory.createStringLiteral("commonjs")]), C.setJsonCompilerOptionValues(T, Q, b); + } + }); + le.push(C.createCodeFixActionWithoutFixAll("fixTargetOption", m, [e.Diagnostics.Set_the_target_option_in_your_configuration_file_to_0, "es2017"])); + } + return le.length ? le : void 0; + } + } }); + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixPropertyAssignment", B = [e.Diagnostics.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code]; + C.registerCodeFix({ errorCodes: B, fixIds: [w], getCodeActions: function(le) { + var N = le.sourceFile, p = le.span, m = Q(N, p.start), G = e.textChanges.ChangeTracker.with(le, function(oe) { + return E(oe, le.sourceFile, m); + }); + return [C.createCodeFixAction(w, G, [e.Diagnostics.Change_0_to_1, "=", ":"], w, [e.Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; + }, getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + return E(N, p.file, Q(p.file, p.start)); + }); + } }); + function E(le, N, p) { + le.replaceNode(N, p, e.factory.createPropertyAssignment(p.name, p.objectAssignmentInitializer)); + } + function Q(le, N) { + return e.cast(e.getTokenAtPosition(le, N).parent, e.isShorthandPropertyAssignment); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "extendsInterfaceBecomesImplements", B = [e.Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.sourceFile, p = E(N, le.span.start); + if (!!p) { + var m = p.extendsToken, G = p.heritageClauses, oe = e.textChanges.ChangeTracker.with(le, function(f) { + return Q(f, N, m, G); + }); + return [C.createCodeFixAction(w, oe, e.Diagnostics.Change_extends_to_implements, w, e.Diagnostics.Change_all_extended_interfaces_to_implements)]; + } + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + var m = E(p.file, p.start); + m && Q(N, p.file, m.extendsToken, m.heritageClauses); + }); + } }); + function E(le, N) { + var p = e.getTokenAtPosition(le, N), m = e.getContainingClass(p).heritageClauses, G = m[0].getFirstToken(); + return G.kind === 94 ? { extendsToken: G, heritageClauses: m } : void 0; + } + function Q(le, N, p, m) { + if (le.replaceNode(N, p, e.factory.createToken(117)), m.length === 2 && m[0].token === 94 && m[1].token === 117) { + var G = m[1].getFirstToken(), oe = G.getFullStart(); + le.replaceRange(N, { pos: oe, end: oe }, e.factory.createToken(27)); + for (var f = N.text, T = G.end; T < f.length && e.isWhiteSpaceSingleLine(f.charCodeAt(T)); ) + T++; + le.deleteRange(N, { pos: G.getStart(), end: T }); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "forgottenThisPropertyAccess", B = e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code, E = [e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, e.Diagnostics.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code, B]; + C.registerCodeFix({ errorCodes: E, getCodeActions: function(N) { + var p = N.sourceFile, m = Q(p, N.span.start, N.errorCode); + if (!!m) { + var G = e.textChanges.ChangeTracker.with(N, function(oe) { + return le(oe, p, m); + }); + return [C.createCodeFixAction(w, G, [e.Diagnostics.Add_0_to_unresolved_variable, m.className || "this"], w, e.Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; + } + }, fixIds: [w], getAllCodeActions: function(N) { + return C.codeFixAll(N, E, function(p, m) { + var G = Q(m.file, m.start, m.code); + G && le(p, N.sourceFile, G); + }); + } }); + function Q(N, p, m) { + var G = e.getTokenAtPosition(N, p); + if (e.isIdentifier(G) || e.isPrivateIdentifier(G)) + return { node: G, className: m === B ? e.getContainingClass(G).name.text : void 0 }; + } + function le(N, p, m) { + var G = m.node, oe = m.className; + e.suppressLeadingAndTrailingTrivia(G), N.replaceNode(p, G, e.factory.createPropertyAccessExpression(oe ? e.factory.createIdentifier(oe) : e.factory.createThis(), G)); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixInvalidJsxCharacters_expression", B = "fixInvalidJsxCharacters_htmlEntity", E = [e.Diagnostics.Unexpected_token_Did_you_mean_or_gt.code, e.Diagnostics.Unexpected_token_Did_you_mean_or_rbrace.code]; + C.registerCodeFix({ errorCodes: E, fixIds: [w, B], getCodeActions: function(p) { + var m = p.sourceFile, G = p.preferences, oe = p.span, f = e.textChanges.ChangeTracker.with(p, function(K) { + return N(K, G, m, oe.start, false); + }), T = e.textChanges.ChangeTracker.with(p, function(K) { + return N(K, G, m, oe.start, true); + }); + return [C.createCodeFixAction(w, f, e.Diagnostics.Wrap_invalid_character_in_an_expression_container, w, e.Diagnostics.Wrap_all_invalid_characters_in_an_expression_container), C.createCodeFixAction(B, T, e.Diagnostics.Convert_invalid_character_to_its_html_entity_code, B, e.Diagnostics.Convert_all_invalid_characters_to_HTML_entity_code)]; + }, getAllCodeActions: function(p) { + return C.codeFixAll(p, E, function(m, G) { + return N(m, p.preferences, G.file, G.start, p.fixId === B); + }); + } }); + var Q = { ">": ">", "}": "}" }; + function le(p) { + return e.hasProperty(Q, p); + } + function N(p, m, G, oe, f) { + var T = G.getText()[oe]; + if (!!le(T)) { + var K = f ? Q[T] : "{".concat(e.quote(G, m, T), "}"); + p.replaceRangeWithText(G, { pos: oe, end: oe + 1 }, K); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "deleteUnmatchedParameter", B = "renameUnmatchedParameter", E = [e.Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name.code]; + C.registerCodeFix({ fixIds: [w, B], errorCodes: E, getCodeActions: function(m) { + var G = m.sourceFile, oe = m.span, f = [], T = N(G, oe.start); + if (T) + return e.append(f, Q(m, T)), e.append(f, le(m, T)), f; + }, getAllCodeActions: function(m) { + var G = new e.Map(); + return C.createCombinedCodeActions(e.textChanges.ChangeTracker.with(m, function(oe) { + C.eachDiagnostic(m, E, function(f) { + var T = f.file, K = f.start, b = N(T, K); + b && G.set(b.signature, e.append(G.get(b.signature), b.jsDocParameterTag)); + }), G.forEach(function(f, T) { + if (m.fixId === w) { + var K = new e.Set(f); + oe.filterJSDocTags(T.getSourceFile(), T, function(b) { + return !K.has(b); + }); + } + }); + })); + } }); + function Q(p, m) { + var G = m.name, oe = m.signature, f = m.jsDocParameterTag, T = e.textChanges.ChangeTracker.with(p, function(K) { + return K.filterJSDocTags(p.sourceFile, oe, function(b) { + return b !== f; + }); + }); + return C.createCodeFixAction(w, T, [e.Diagnostics.Delete_unused_param_tag_0, G.getText(p.sourceFile)], w, e.Diagnostics.Delete_all_unused_param_tags); + } + function le(p, m) { + var G = m.name, oe = m.signature, f = m.jsDocParameterTag; + if (!!e.length(oe.parameters)) { + for (var T = p.sourceFile, K = e.getJSDocTags(oe), b = new e.Set(), se = 0, J = K; se < J.length; se++) { + var ie = J[se]; + e.isJSDocParameterTag(ie) && e.isIdentifier(ie.name) && b.add(ie.name.escapedText); + } + var R = e.firstDefined(oe.parameters, function(ve) { + return e.isIdentifier(ve.name) && !b.has(ve.name.escapedText) ? ve.name.getText(T) : void 0; + }); + if (R !== void 0) { + var q = e.factory.updateJSDocParameterTag(f, f.tagName, e.factory.createIdentifier(R), f.isBracketed, f.typeExpression, f.isNameFirst, f.comment), O = e.textChanges.ChangeTracker.with(p, function(ve) { + return ve.replaceJSDocComment(T, oe, e.map(K, function(ee) { + return ee === f ? q : ee; + })); + }); + return C.createCodeFixActionWithoutFixAll(B, O, [e.Diagnostics.Rename_param_tag_name_0_to_1, G.getText(T), R]); + } + } + } + function N(p, m) { + var G = e.getTokenAtPosition(p, m); + if (G.parent && e.isJSDocParameterTag(G.parent) && e.isIdentifier(G.parent.name)) { + var oe = G.parent, f = e.getHostSignatureFromJSDoc(oe); + if (f) + return { signature: f, name: G.parent.name, jsDocParameterTag: oe }; + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixUnreferenceableDecoratorMetadata", B = [e.Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = E(N.sourceFile, N.program, N.span.start); + if (!!p) { + var m = e.textChanges.ChangeTracker.with(N, function(f) { + return p.kind === 270 && le(f, N.sourceFile, p, N.program); + }), G = e.textChanges.ChangeTracker.with(N, function(f) { + return Q(f, N.sourceFile, p, N.program); + }), oe; + return m.length && (oe = e.append(oe, C.createCodeFixActionWithoutFixAll(w, m, e.Diagnostics.Convert_named_imports_to_namespace_import))), G.length && (oe = e.append(oe, C.createCodeFixActionWithoutFixAll(w, G, e.Diagnostics.Convert_to_type_only_import))), oe; + } + }, fixIds: [w] }); + function E(N, p, m) { + var G = e.tryCast(e.getTokenAtPosition(N, m), e.isIdentifier); + if (!(!G || G.parent.kind !== 178)) { + var oe = p.getTypeChecker(), f = oe.getSymbolAtLocation(G); + return e.find((f == null ? void 0 : f.declarations) || e.emptyArray, e.or(e.isImportClause, e.isImportSpecifier, e.isImportEqualsDeclaration)); + } + } + function Q(N, p, m, G) { + if (m.kind === 265) { + N.insertModifierBefore(p, 152, m.name); + return; + } + var oe = m.kind === 267 ? m : m.parent.parent; + if (!(oe.name && oe.namedBindings)) { + var f = G.getTypeChecker(), T = !!e.forEachImportClauseDeclaration(oe, function(K) { + if (e.skipAlias(K.symbol, f).flags & 111551) + return true; + }); + T || N.insertModifierBefore(p, 152, oe); + } + } + function le(N, p, m, G) { + e.refactor.doChangeNamedToNamespaceOrDefault(p, G, N, m.parent); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "unusedIdentifier", B = "unusedIdentifier_prefix", E = "unusedIdentifier_delete", Q = "unusedIdentifier_deleteImports", le = "unusedIdentifier_infer", N = [e.Diagnostics._0_is_declared_but_its_value_is_never_read.code, e.Diagnostics._0_is_declared_but_never_used.code, e.Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code, e.Diagnostics.All_imports_in_import_declaration_are_unused.code, e.Diagnostics.All_destructured_elements_are_unused.code, e.Diagnostics.All_variables_are_unused.code, e.Diagnostics.All_type_parameters_are_unused.code]; + C.registerCodeFix({ errorCodes: N, getCodeActions: function(x) { + var X = x.errorCode, $ = x.sourceFile, A = x.program, y = x.cancellationToken, V = A.getTypeChecker(), L = A.getSourceFiles(), P = e.getTokenAtPosition($, x.span.start); + if (e.isJSDocTemplateTag(P)) + return [m(e.textChanges.ChangeTracker.with(x, function(D) { + return D.delete($, P); + }), e.Diagnostics.Remove_template_tag)]; + if (P.kind === 29) { + var k = e.textChanges.ChangeTracker.with(x, function(D) { + return G(D, $, P); + }); + return [m(k, e.Diagnostics.Remove_type_parameters)]; + } + var Y = f(P); + if (Y) { + var k = e.textChanges.ChangeTracker.with(x, function(fe) { + return fe.delete($, Y); + }); + return [C.createCodeFixAction(w, k, [e.Diagnostics.Remove_import_from_0, e.showModuleSpecifier(Y)], Q, e.Diagnostics.Delete_all_unused_imports)]; + } else if (oe(P)) { + var U = e.textChanges.ChangeTracker.with(x, function(D) { + return ie($, P, D, V, L, A, y, false); + }); + if (U.length) + return [C.createCodeFixAction(w, U, [e.Diagnostics.Remove_unused_declaration_for_Colon_0, P.getText($)], Q, e.Diagnostics.Delete_all_unused_imports)]; + } + if (e.isObjectBindingPattern(P.parent) || e.isArrayBindingPattern(P.parent)) { + if (e.isParameter(P.parent.parent)) { + var j = P.parent.elements, H = [j.length > 1 ? e.Diagnostics.Remove_unused_declarations_for_Colon_0 : e.Diagnostics.Remove_unused_declaration_for_Colon_0, e.map(j, function(D) { + return D.getText($); + }).join(", ")]; + return [m(e.textChanges.ChangeTracker.with(x, function(D) { + return b(D, $, P.parent); + }), H)]; + } + return [m(e.textChanges.ChangeTracker.with(x, function(D) { + return D.delete($, P.parent.parent); + }), e.Diagnostics.Remove_unused_destructuring_declaration)]; + } + if (T($, P)) + return [m(e.textChanges.ChangeTracker.with(x, function(D) { + return K(D, $, P.parent); + }), e.Diagnostics.Remove_variable_statement)]; + var I = []; + if (P.kind === 137) { + var k = e.textChanges.ChangeTracker.with(x, function(fe) { + return p(fe, $, P); + }), l = e.cast(P.parent, e.isInferTypeNode).typeParameter.name.text; + I.push(C.createCodeFixAction(w, k, [e.Diagnostics.Replace_infer_0_with_unknown, l], le, e.Diagnostics.Replace_all_unused_infer_with_unknown)); + } else { + var U = e.textChanges.ChangeTracker.with(x, function(fe) { + return ie($, P, fe, V, L, A, y, false); + }); + if (U.length) { + var l = e.isComputedPropertyName(P.parent) ? P.parent : P; + I.push(m(U, [e.Diagnostics.Remove_unused_declaration_for_Colon_0, l.getText($)])); + } + } + var d = e.textChanges.ChangeTracker.with(x, function(D) { + return se(D, X, $, P); + }); + return d.length && I.push(C.createCodeFixAction(w, d, [e.Diagnostics.Prefix_0_with_an_underscore, P.getText($)], B, e.Diagnostics.Prefix_all_unused_declarations_with_where_possible)), I; + }, fixIds: [B, E, Q, le], getAllCodeActions: function(x) { + var X = x.sourceFile, $ = x.program, A = x.cancellationToken, y = $.getTypeChecker(), V = $.getSourceFiles(); + return C.codeFixAll(x, N, function(L, P) { + var k = e.getTokenAtPosition(X, P.start); + switch (x.fixId) { + case B: + se(L, P.code, X, k); + break; + case Q: { + var Y = f(k); + Y ? L.delete(X, Y) : oe(k) && ie(X, k, L, y, V, $, A, true); + break; + } + case E: { + if (k.kind === 137 || oe(k)) + break; + if (e.isJSDocTemplateTag(k)) + L.delete(X, k); + else if (k.kind === 29) + G(L, X, k); + else if (e.isObjectBindingPattern(k.parent)) { + if (k.parent.parent.initializer) + break; + (!e.isParameter(k.parent.parent) || O(k.parent.parent, y, V)) && L.delete(X, k.parent.parent); + } else { + if (e.isArrayBindingPattern(k.parent.parent) && k.parent.parent.parent.initializer) + break; + T(X, k) ? K(L, X, k.parent) : ie(X, k, L, y, V, $, A, true); + } + break; + } + case le: + k.kind === 137 && p(L, X, k); + break; + default: + e.Debug.fail(JSON.stringify(x.fixId)); + } + }); + } }); + function p(x, X, $) { + x.replaceNode(X, $.parent, e.factory.createKeywordTypeNode(155)); + } + function m(x, X) { + return C.createCodeFixAction(w, x, X, E, e.Diagnostics.Delete_all_unused_declarations); + } + function G(x, X, $) { + x.delete(X, e.Debug.checkDefined(e.cast($.parent, e.isDeclarationWithTypeParameterChildren).typeParameters, "The type parameter to delete should exist")); + } + function oe(x) { + return x.kind === 100 || x.kind === 79 && (x.parent.kind === 270 || x.parent.kind === 267); + } + function f(x) { + return x.kind === 100 ? e.tryCast(x.parent, e.isImportDeclaration) : void 0; + } + function T(x, X) { + return e.isVariableDeclarationList(X.parent) && e.first(X.parent.getChildren(x)) === X; + } + function K(x, X, $) { + x.delete(X, $.parent.kind === 237 ? $.parent : $); + } + function b(x, X, $) { + e.forEach($.elements, function(A) { + return x.delete(X, A); + }); + } + function se(x, X, $, A) { + X !== e.Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code && (A.kind === 137 && (A = e.cast(A.parent, e.isInferTypeNode).typeParameter.name), e.isIdentifier(A) && J(A) && (x.replaceNode($, A, e.factory.createIdentifier("_".concat(A.text))), e.isParameter(A.parent) && e.getJSDocParameterTags(A.parent).forEach(function(y) { + e.isIdentifier(y.name) && x.replaceNode($, y.name, e.factory.createIdentifier("_".concat(y.name.text))); + }))); + } + function J(x) { + switch (x.parent.kind) { + case 164: + case 163: + return true; + case 254: { + var X = x.parent; + switch (X.parent.parent.kind) { + case 244: + case 243: + return true; + } + } + } + return false; + } + function ie(x, X, $, A, y, V, L, P) { + R(X, $, x, A, y, V, L, P), e.isIdentifier(X) && e.FindAllReferences.Core.eachSymbolReferenceInFile(X, A, x, function(k) { + e.isPropertyAccessExpression(k.parent) && k.parent.name === k && (k = k.parent), !P && F(k) && $.delete(x, k.parent.parent); + }); + } + function R(x, X, $, A, y, V, L, P) { + var k = x.parent; + if (e.isParameter(k)) + q(X, $, k, A, y, V, L, P); + else if (!(P && e.isIdentifier(x) && e.FindAllReferences.Core.isSymbolReferencedInFile(x, A, $))) { + var Y = e.isImportClause(k) ? x : e.isComputedPropertyName(k) ? k.parent : k; + e.Debug.assert(Y !== $, "should not delete whole source file"), X.delete($, Y); + } + } + function q(x, X, $, A, y, V, L, P) { + P === void 0 && (P = false), ve(A, X, $, y, V, L, P) && ($.modifiers && $.modifiers.length > 0 && (!e.isIdentifier($.name) || e.FindAllReferences.Core.isSymbolReferencedInFile($.name, A, X)) ? $.modifiers.forEach(function(k) { + return x.deleteModifier(X, k); + }) : !$.initializer && O($, A, y) && x.delete(X, $)); + } + function O(x, X, $) { + var A = x.parent.parameters.indexOf(x); + return !e.FindAllReferences.Core.someSignatureUsage(x.parent, $, X, function(y, V) { + return !V || V.arguments.length > A; + }); + } + function ve(x, X, $, A, y, V, L) { + var P = $.parent; + switch (P.kind) { + case 169: + case 171: + var k = P.parameters.indexOf($), Y = e.isMethodDeclaration(P) ? P.name : P, U = e.FindAllReferences.Core.getReferencedSymbolsForNode(P.pos, Y, y, A, V); + if (U) + for (var j = 0, H = U; j < H.length; j++) + for (var I = H[j], l = 0, d = I.references; l < d.length; l++) { + var D = d[l]; + if (D.kind === 1) { + var fe = e.isSuperKeyword(D.node) && e.isCallExpression(D.node.parent) && D.node.parent.arguments.length > k, g = e.isPropertyAccessExpression(D.node.parent) && e.isSuperKeyword(D.node.parent.expression) && e.isCallExpression(D.node.parent.parent) && D.node.parent.parent.arguments.length > k, ne = (e.isMethodDeclaration(D.node.parent) || e.isMethodSignature(D.node.parent)) && D.node.parent !== $.parent && D.node.parent.parameters.length > k; + if (fe || g || ne) + return false; + } + } + return true; + case 256: + return P.name && ee(x, X, P.name) ? he(P, $, L) : true; + case 213: + case 214: + return he(P, $, L); + case 173: + return false; + case 172: + return true; + default: + return e.Debug.failBadSyntaxKind(P); + } + } + function ee(x, X, $) { + return !!e.FindAllReferences.Core.eachSymbolReferenceInFile($, x, X, function(A) { + return e.isIdentifier(A) && e.isCallExpression(A.parent) && A.parent.arguments.indexOf(A) >= 0; + }); + } + function he(x, X, $) { + var A = x.parameters, y = A.indexOf(X); + return e.Debug.assert(y !== -1, "The parameter should already be in the list"), $ ? A.slice(y + 1).every(function(V) { + return e.isIdentifier(V.name) && !V.symbol.isReferenced; + }) : y === A.length - 1; + } + function F(x) { + return (e.isBinaryExpression(x.parent) && x.parent.left === x || (e.isPostfixUnaryExpression(x.parent) || e.isPrefixUnaryExpression(x.parent)) && x.parent.operand === x) && e.isExpressionStatement(x.parent.parent); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixUnreachableCode", B = [e.Diagnostics.Unreachable_code_detected.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.program.getSyntacticDiagnostics(le.sourceFile, le.cancellationToken); + if (!N.length) { + var p = e.textChanges.ChangeTracker.with(le, function(m) { + return E(m, le.sourceFile, le.span.start, le.span.length, le.errorCode); + }); + return [C.createCodeFixAction(w, p, e.Diagnostics.Remove_unreachable_code, w, e.Diagnostics.Remove_all_unreachable_code)]; + } + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + return E(N, p.file, p.start, p.length, p.code); + }); + } }); + function E(le, N, p, m, G) { + var oe = e.getTokenAtPosition(N, p), f = e.findAncestor(oe, e.isStatement); + if (f.getStart(N) !== oe.getStart(N)) { + var T = JSON.stringify({ statementKind: e.Debug.formatSyntaxKind(f.kind), tokenKind: e.Debug.formatSyntaxKind(oe.kind), errorCode: G, start: p, length: m }); + e.Debug.fail("Token and statement should start at the same point. " + T); + } + var K = (e.isBlock(f.parent) ? f.parent : f).parent; + if (!e.isBlock(f.parent) || f === e.first(f.parent.statements)) + switch (K.kind) { + case 239: + if (K.elseStatement) { + if (e.isBlock(f.parent)) + break; + le.replaceNode(N, f, e.factory.createBlock(e.emptyArray)); + return; + } + case 241: + case 242: + le.delete(N, K); + return; + } + if (e.isBlock(f.parent)) { + var b = p + m, se = e.Debug.checkDefined(Q(e.sliceAfter(f.parent.statements, f), function(J) { + return J.pos < b; + }), "Some statement should be last"); + le.deleteNodeRange(N, f, se); + } else + le.delete(N, f); + } + function Q(le, N) { + for (var p, m = 0, G = le; m < G.length; m++) { + var oe = G[m]; + if (!N(oe)) + break; + p = oe; + } + return p; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixUnusedLabel", B = [e.Diagnostics.Unused_label.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(Q) { + var le = e.textChanges.ChangeTracker.with(Q, function(N) { + return E(N, Q.sourceFile, Q.span.start); + }); + return [C.createCodeFixAction(w, le, e.Diagnostics.Remove_unused_label, w, e.Diagnostics.Remove_all_unused_labels)]; + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le, N) { + return E(le, N.file, N.start); + }); + } }); + function E(Q, le, N) { + var p = e.getTokenAtPosition(le, N), m = e.cast(p.parent, e.isLabeledStatement), G = p.getStart(le), oe = m.statement.getStart(le), f = e.positionsAreOnSameLine(G, oe, le) ? oe : e.skipTrivia(le.text, e.findChildOfKind(m, 58, le).end, true); + Q.deleteRange(le, { pos: G, end: f }); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixJSDocTypes_plain", B = "fixJSDocTypes_nullable", E = [e.Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments.code]; + C.registerCodeFix({ errorCodes: E, getCodeActions: function(p) { + var m = p.sourceFile, G = p.program.getTypeChecker(), oe = le(m, p.span.start, G); + if (!oe) + return; + var f = oe.typeNode, T = oe.type, K = f.getText(m), b = [se(T, w, e.Diagnostics.Change_all_jsdoc_style_types_to_TypeScript)]; + return f.kind === 314 && b.push(se(G.getNullableType(T, 32768), B, e.Diagnostics.Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types)), b; + function se(J, ie, R) { + var q = e.textChanges.ChangeTracker.with(p, function(O) { + return Q(O, m, f, J, G); + }); + return C.createCodeFixAction("jdocTypes", q, [e.Diagnostics.Change_0_to_1, K, G.typeToString(J)], ie, R); + } + }, fixIds: [w, B], getAllCodeActions: function(p) { + var m = p.fixId, G = p.program, oe = p.sourceFile, f = G.getTypeChecker(); + return C.codeFixAll(p, E, function(T, K) { + var b = le(K.file, K.start, f); + if (!!b) { + var se = b.typeNode, J = b.type, ie = se.kind === 314 && m === B ? f.getNullableType(J, 32768) : J; + Q(T, oe, se, ie, f); + } + }); + } }); + function Q(p, m, G, oe, f) { + p.replaceNode(m, G, f.typeToTypeNode(oe, G, void 0)); + } + function le(p, m, G) { + var oe = e.findAncestor(e.getTokenAtPosition(p, m), N), f = oe && oe.type; + return f && { typeNode: f, type: G.getTypeFromTypeNode(f) }; + } + function N(p) { + switch (p.kind) { + case 229: + case 174: + case 175: + case 256: + case 172: + case 176: + case 195: + case 169: + case 168: + case 164: + case 167: + case 166: + case 173: + case 259: + case 211: + case 254: + return true; + default: + return false; + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixMissingCallParentheses", B = [e.Diagnostics.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead.code]; + C.registerCodeFix({ errorCodes: B, fixIds: [w], getCodeActions: function(le) { + var N = le.sourceFile, p = le.span, m = Q(N, p.start); + if (!!m) { + var G = e.textChanges.ChangeTracker.with(le, function(oe) { + return E(oe, le.sourceFile, m); + }); + return [C.createCodeFixAction(w, G, e.Diagnostics.Add_missing_call_parentheses, w, e.Diagnostics.Add_all_missing_call_parentheses)]; + } + }, getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + var m = Q(p.file, p.start); + m && E(N, p.file, m); + }); + } }); + function E(le, N, p) { + le.replaceNodeWithText(N, p, "".concat(p.text, "()")); + } + function Q(le, N) { + var p = e.getTokenAtPosition(le, N); + if (e.isPropertyAccessExpression(p.parent)) { + for (var m = p.parent; e.isPropertyAccessExpression(m.parent); ) + m = m.parent; + return m.name; + } + if (e.isIdentifier(p)) + return p; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixAwaitInSyncFunction", B = [e.Diagnostics.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, e.Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, e.Diagnostics.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = N.sourceFile, m = N.span, G = Q(p, m.start); + if (!!G) { + var oe = e.textChanges.ChangeTracker.with(N, function(f) { + return le(f, p, G); + }); + return [C.createCodeFixAction(w, oe, e.Diagnostics.Add_async_modifier_to_containing_function, w, e.Diagnostics.Add_all_missing_async_modifiers)]; + } + }, fixIds: [w], getAllCodeActions: function(p) { + var m = new e.Map(); + return C.codeFixAll(p, B, function(G, oe) { + var f = Q(oe.file, oe.start); + !f || !e.addToSeen(m, e.getNodeId(f.insertBefore)) || le(G, p.sourceFile, f); + }); + } }); + function E(N) { + if (N.type) + return N.type; + if (e.isVariableDeclaration(N.parent) && N.parent.type && e.isFunctionTypeNode(N.parent.type)) + return N.parent.type.type; + } + function Q(N, p) { + var m = e.getTokenAtPosition(N, p), G = e.getContainingFunction(m); + if (!!G) { + var oe; + switch (G.kind) { + case 169: + oe = G.name; + break; + case 256: + case 213: + oe = e.findChildOfKind(G, 98, N); + break; + case 214: + var f = G.typeParameters ? 29 : 20; + oe = e.findChildOfKind(G, f, N) || e.first(G.parameters); + break; + default: + return; + } + return oe && { insertBefore: oe, returnType: E(G) }; + } + } + function le(N, p, m) { + var G = m.insertBefore, oe = m.returnType; + if (oe) { + var f = e.getEntityNameFromTypeNode(oe); + (!f || f.kind !== 79 || f.text !== "Promise") && N.replaceNode(p, oe, e.factory.createTypeReferenceNode("Promise", e.factory.createNodeArray([oe]))); + } + N.insertModifierBefore(p, 131, G); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = [e.Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code, e.Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code], B = "fixPropertyOverrideAccessor"; + C.registerCodeFix({ errorCodes: w, getCodeActions: function(Q) { + var le = E(Q.sourceFile, Q.span.start, Q.span.length, Q.errorCode, Q); + if (le) + return [C.createCodeFixAction(B, le, e.Diagnostics.Generate_get_and_set_accessors, B, e.Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; + }, fixIds: [B], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, w, function(le, N) { + var p = E(N.file, N.start, N.length, N.code, Q); + if (p) + for (var m = 0, G = p; m < G.length; m++) { + var oe = G[m]; + le.pushRaw(Q.sourceFile, oe); + } + }); + } }); + function E(Q, le, N, p, m) { + var G, oe; + if (p === e.Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code) + G = le, oe = le + N; + else if (p === e.Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code) { + var f = m.program.getTypeChecker(), T = e.getTokenAtPosition(Q, le).parent; + e.Debug.assert(e.isAccessor(T), "error span of fixPropertyOverrideAccessor should only be on an accessor"); + var K = T.parent; + e.Debug.assert(e.isClassLike(K), "erroneous accessors should only be inside classes"); + var b = e.singleOrUndefined(C.getAllSupers(K, f)); + if (!b) + return []; + var se = e.unescapeLeadingUnderscores(e.getTextOfPropertyName(T.name)), J = f.getPropertyOfType(f.getTypeAtLocation(b), se); + if (!J || !J.valueDeclaration) + return []; + G = J.valueDeclaration.pos, oe = J.valueDeclaration.end, Q = e.getSourceFileOfNode(J.valueDeclaration); + } else + e.Debug.fail("fixPropertyOverrideAccessor codefix got unexpected error code " + p); + return C.generateAccessorFromProperty(Q, m.program, G, oe, m, e.Diagnostics.Generate_get_and_set_accessors.message); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "inferFromUsage", B = [e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code, e.Diagnostics.Variable_0_implicitly_has_an_1_type.code, e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code, e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code, e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code, e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code, e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code, e.Diagnostics.Member_0_implicitly_has_an_1_type.code, e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage.code, e.Diagnostics.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code, e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code, e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code, e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage.code, e.Diagnostics._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage.code, e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage.code, e.Diagnostics.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code, e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(q) { + var O = q.sourceFile, ve = q.program, ee = q.span.start, he = q.errorCode, F = q.cancellationToken, x = q.host, X = q.preferences, $ = e.getTokenAtPosition(O, ee), A, y = e.textChanges.ChangeTracker.with(q, function(L) { + A = le(L, O, $, he, ve, F, e.returnTrue, x, X); + }), V = A && e.getNameOfDeclaration(A); + return !V || y.length === 0 ? void 0 : [C.createCodeFixAction(w, y, [E(he, $), e.getTextOfNode(V)], w, e.Diagnostics.Infer_all_types_from_usage)]; + }, fixIds: [w], getAllCodeActions: function(q) { + var O = q.sourceFile, ve = q.program, ee = q.cancellationToken, he = q.host, F = q.preferences, x = e.nodeSeenTracker(); + return C.codeFixAll(q, B, function(X, $) { + le(X, O, e.getTokenAtPosition($.file, $.start), $.code, ve, ee, x, he, F); + }); + } }); + function E(q, O) { + switch (q) { + case e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code: + case e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code: + return e.isSetAccessorDeclaration(e.getContainingFunction(O)) ? e.Diagnostics.Infer_type_of_0_from_usage : e.Diagnostics.Infer_parameter_types_from_usage; + case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code: + case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code: + return e.Diagnostics.Infer_parameter_types_from_usage; + case e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code: + return e.Diagnostics.Infer_this_type_of_0_from_usage; + default: + return e.Diagnostics.Infer_type_of_0_from_usage; + } + } + function Q(q) { + switch (q) { + case e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage.code: + return e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code; + case e.Diagnostics.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code: + return e.Diagnostics.Variable_0_implicitly_has_an_1_type.code; + case e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code: + return e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code; + case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code: + return e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code; + case e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage.code: + return e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code; + case e.Diagnostics._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage.code: + return e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code; + case e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage.code: + return e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code; + case e.Diagnostics.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code: + return e.Diagnostics.Member_0_implicitly_has_an_1_type.code; + } + return q; + } + function le(q, O, ve, ee, he, F, x, X, $) { + if (!(!e.isParameterPropertyModifier(ve.kind) && ve.kind !== 79 && ve.kind !== 25 && ve.kind !== 108)) { + var A = ve.parent, y = C.createImportAdder(O, he, $, X); + switch (ee = Q(ee), ee) { + case e.Diagnostics.Member_0_implicitly_has_an_1_type.code: + case e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code: + if (e.isVariableDeclaration(A) && x(A) || e.isPropertyDeclaration(A) || e.isPropertySignature(A)) + return N(q, y, O, A, he, X, F), y.writeFixes(q), A; + if (e.isPropertyAccessExpression(A)) { + var V = se(A.name, he, F), L = e.getTypeNodeIfAccessible(V, A, he, X); + if (L) { + var P = e.factory.createJSDocTypeTag(void 0, e.factory.createJSDocTypeExpression(L), void 0); + q.addJSDocTags(O, e.cast(A.parent.parent, e.isExpressionStatement), [P]); + } + return y.writeFixes(q), A; + } + return; + case e.Diagnostics.Variable_0_implicitly_has_an_1_type.code: { + var k = he.getTypeChecker().getSymbolAtLocation(ve); + return k && k.valueDeclaration && e.isVariableDeclaration(k.valueDeclaration) && x(k.valueDeclaration) ? (N(q, y, e.getSourceFileOfNode(k.valueDeclaration), k.valueDeclaration, he, X, F), y.writeFixes(q), k.valueDeclaration) : void 0; + } + } + var Y = e.getContainingFunction(ve); + if (Y !== void 0) { + var U; + switch (ee) { + case e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code: + if (e.isSetAccessorDeclaration(Y)) { + oe(q, y, O, Y, he, X, F), U = Y; + break; + } + case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code: + if (x(Y)) { + var j = e.cast(A, e.isParameter); + p(q, y, O, j, Y, he, X, F), U = j; + } + break; + case e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code: + case e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code: + e.isGetAccessorDeclaration(Y) && e.isIdentifier(Y.name) && (f(q, y, O, Y, se(Y.name, he, F), he, X), U = Y); + break; + case e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code: + e.isSetAccessorDeclaration(Y) && (oe(q, y, O, Y, he, X, F), U = Y); + break; + case e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code: + e.textChanges.isThisTypeAnnotatable(Y) && x(Y) && (m(q, O, Y, he, X, F), U = Y); + break; + default: + return e.Debug.fail(String(ee)); + } + return y.writeFixes(q), U; + } + } + } + function N(q, O, ve, ee, he, F, x) { + e.isIdentifier(ee.name) && f(q, O, ve, ee, se(ee.name, he, x), he, F); + } + function p(q, O, ve, ee, he, F, x, X) { + if (!!e.isIdentifier(ee.name)) { + var $ = J(he, ve, F, X); + if (e.Debug.assert(he.parameters.length === $.length, "Parameter count and inference count should match"), e.isInJSFile(he)) + K(q, ve, $, F, x); + else { + var A = e.isArrowFunction(he) && !e.findChildOfKind(he, 20, ve); + A && q.insertNodeBefore(ve, e.first(he.parameters), e.factory.createToken(20)); + for (var y = 0, V = $; y < V.length; y++) { + var L = V[y], P = L.declaration, k = L.type; + P && !P.type && !P.initializer && f(q, O, ve, P, k, F, x); + } + A && q.insertNodeAfter(ve, e.last(he.parameters), e.factory.createToken(21)); + } + } + } + function m(q, O, ve, ee, he, F) { + var x = ie(ve, O, ee, F); + if (!(!x || !x.length)) { + var X = R(ee, x, F).thisParameter(), $ = e.getTypeNodeIfAccessible(X, ve, ee, he); + !$ || (e.isInJSFile(ve) ? G(q, O, ve, $) : q.tryInsertThisTypeAnnotation(O, ve, $)); + } + } + function G(q, O, ve, ee) { + q.addJSDocTags(O, ve, [e.factory.createJSDocThisTag(void 0, e.factory.createJSDocTypeExpression(ee))]); + } + function oe(q, O, ve, ee, he, F, x) { + var X = e.firstOrUndefined(ee.parameters); + if (X && e.isIdentifier(ee.name) && e.isIdentifier(X.name)) { + var $ = se(ee.name, he, x); + $ === he.getTypeChecker().getAnyType() && ($ = se(X.name, he, x)), e.isInJSFile(ee) ? K(q, ve, [{ declaration: X, type: $ }], he, F) : f(q, O, ve, X, $, he, F); + } + } + function f(q, O, ve, ee, he, F, x) { + var X = e.getTypeNodeIfAccessible(he, ee, F, x); + if (X) + if (e.isInJSFile(ve) && ee.kind !== 166) { + var $ = e.isVariableDeclaration(ee) ? e.tryCast(ee.parent.parent, e.isVariableStatement) : ee; + if (!$) + return; + var A = e.factory.createJSDocTypeExpression(X), y = e.isGetAccessorDeclaration(ee) ? e.factory.createJSDocReturnTag(void 0, A, void 0) : e.factory.createJSDocTypeTag(void 0, A, void 0); + q.addJSDocTags(ve, $, [y]); + } else + T(X, ee, ve, q, O, e.getEmitScriptTarget(F.getCompilerOptions())) || q.tryInsertTypeAnnotation(ve, ee, X); + } + function T(q, O, ve, ee, he, F) { + var x = C.tryGetAutoImportableReferenceFromTypeNode(q, F); + return x && ee.tryInsertTypeAnnotation(ve, O, x.typeNode) ? (e.forEach(x.symbols, function(X) { + return he.addImportFromExportedSymbol(X, true); + }), true) : false; + } + function K(q, O, ve, ee, he) { + var F = ve.length && ve[0].declaration.parent; + if (!!F) { + var x = e.mapDefined(ve, function(A) { + var y = A.declaration; + if (!(y.initializer || e.getJSDocType(y) || !e.isIdentifier(y.name))) { + var V = A.type && e.getTypeNodeIfAccessible(A.type, y, ee, he); + if (V) { + var L = e.factory.cloneNode(y.name); + return e.setEmitFlags(L, 3584), { name: e.factory.cloneNode(y.name), param: y, isOptional: !!A.isOptional, typeNode: V }; + } + } + }); + if (!!x.length) + if (e.isArrowFunction(F) || e.isFunctionExpression(F)) { + var X = e.isArrowFunction(F) && !e.findChildOfKind(F, 20, O); + X && q.insertNodeBefore(O, e.first(F.parameters), e.factory.createToken(20)), e.forEach(x, function(A) { + var y = A.typeNode, V = A.param, L = e.factory.createJSDocTypeTag(void 0, e.factory.createJSDocTypeExpression(y)), P = e.factory.createJSDocComment(void 0, [L]); + q.insertNodeAt(O, V.getStart(O), P, { suffix: " " }); + }), X && q.insertNodeAfter(O, e.last(F.parameters), e.factory.createToken(21)); + } else { + var $ = e.map(x, function(A) { + var y = A.name, V = A.typeNode, L = A.isOptional; + return e.factory.createJSDocParameterTag(void 0, y, !!L, e.factory.createJSDocTypeExpression(V), false, void 0); + }); + q.addJSDocTags(O, F, $); + } + } + } + function b(q, O, ve) { + return e.mapDefined(e.FindAllReferences.getReferenceEntriesForNode(-1, q, O, O.getSourceFiles(), ve), function(ee) { + return ee.kind !== 0 ? e.tryCast(ee.node, e.isIdentifier) : void 0; + }); + } + function se(q, O, ve) { + var ee = b(q, O, ve); + return R(O, ee, ve).single(); + } + function J(q, O, ve, ee) { + var he = ie(q, O, ve, ee); + return he && R(ve, he, ee).parameters(q) || q.parameters.map(function(F) { + return { declaration: F, type: e.isIdentifier(F.name) ? se(F.name, ve, ee) : ve.getTypeChecker().getAnyType() }; + }); + } + function ie(q, O, ve, ee) { + var he; + switch (q.kind) { + case 171: + he = e.findChildOfKind(q, 134, O); + break; + case 214: + case 213: + var F = q.parent; + he = (e.isVariableDeclaration(F) || e.isPropertyDeclaration(F)) && e.isIdentifier(F.name) ? F.name : q.name; + break; + case 256: + case 169: + case 168: + he = q.name; + break; + } + if (!!he) + return b(he, ve, ee); + } + function R(q, O, ve) { + var ee = q.getTypeChecker(), he = { string: function() { + return ee.getStringType(); + }, number: function() { + return ee.getNumberType(); + }, Array: function(_e) { + return ee.createArrayType(_e); + }, Promise: function(_e) { + return ee.createPromiseType(_e); + } }, F = [ee.getStringType(), ee.getNumberType(), ee.createArrayType(ee.getAnyType()), ee.createPromiseType(ee.getAnyType())]; + return { single: $, parameters: A, thisParameter: y }; + function x() { + return { isNumber: void 0, isString: void 0, isNumberOrString: void 0, candidateTypes: void 0, properties: void 0, calls: void 0, constructs: void 0, numberIndex: void 0, stringIndex: void 0, candidateThisTypes: void 0, inferredTypes: void 0 }; + } + function X(_e) { + for (var we = new e.Map(), de = 0, ye = _e; de < ye.length; de++) { + var Ae = ye[de]; + Ae.properties && Ae.properties.forEach(function(ir, Cr) { + we.has(Cr) || we.set(Cr, []), we.get(Cr).push(ir); + }); + } + var er = new e.Map(); + return we.forEach(function(ir, Cr) { + er.set(Cr, X(ir)); + }), { isNumber: _e.some(function(ir) { + return ir.isNumber; + }), isString: _e.some(function(ir) { + return ir.isString; + }), isNumberOrString: _e.some(function(ir) { + return ir.isNumberOrString; + }), candidateTypes: e.flatMap(_e, function(ir) { + return ir.candidateTypes; + }), properties: er, calls: e.flatMap(_e, function(ir) { + return ir.calls; + }), constructs: e.flatMap(_e, function(ir) { + return ir.constructs; + }), numberIndex: e.forEach(_e, function(ir) { + return ir.numberIndex; + }), stringIndex: e.forEach(_e, function(ir) { + return ir.stringIndex; + }), candidateThisTypes: e.flatMap(_e, function(ir) { + return ir.candidateThisTypes; + }), inferredTypes: void 0 }; + } + function $() { + return ne(V(O)); + } + function A(_e) { + if (!(O.length === 0 || !_e.parameters)) { + for (var we = x(), de = 0, ye = O; de < ye.length; de++) { + var Ae = ye[de]; + ve.throwIfCancellationRequested(), L(Ae, we); + } + var er = Ve(Ve([], we.constructs || [], true), we.calls || [], true); + return _e.parameters.map(function(ir, Cr) { + for (var Ye = [], Br = e.isRestParameter(ir), Er = false, Ne = 0, n = er; Ne < n.length; Ne++) { + var lr = n[Ne]; + if (lr.argumentTypes.length <= Cr) + Er = e.isInJSFile(_e), Ye.push(ee.getUndefinedType()); + else if (Br) + for (var be = Cr; be < lr.argumentTypes.length; be++) + Ye.push(ee.getBaseTypeOfLiteralType(lr.argumentTypes[be])); + else + Ye.push(ee.getBaseTypeOfLiteralType(lr.argumentTypes[Cr])); + } + if (e.isIdentifier(ir.name)) { + var Ge = V(b(ir.name, q, ve)); + Ye.push.apply(Ye, Br ? e.mapDefined(Ge, ee.getElementTypeOfArrayType) : Ge); + } + var ur = ne(Ye); + return { type: Br ? ee.createArrayType(ur) : ur, isOptional: Er && !Br, declaration: ir }; + }); + } + } + function y() { + for (var _e = x(), we = 0, de = O; we < de.length; we++) { + var ye = de[we]; + ve.throwIfCancellationRequested(), L(ye, _e); + } + return ne(_e.candidateThisTypes || e.emptyArray); + } + function V(_e) { + for (var we = x(), de = 0, ye = _e; de < ye.length; de++) { + var Ae = ye[de]; + ve.throwIfCancellationRequested(), L(Ae, we); + } + return We(we); + } + function L(_e, we) { + for (; e.isRightSideOfQualifiedNameOrPropertyAccess(_e); ) + _e = _e.parent; + switch (_e.parent.kind) { + case 238: + k(_e, we); + break; + case 220: + we.isNumber = true; + break; + case 219: + Y(_e.parent, we); + break; + case 221: + U(_e, _e.parent, we); + break; + case 289: + case 290: + j(_e.parent, we); + break; + case 208: + case 209: + _e.parent.expression === _e ? H(_e.parent, we) : P(_e, we); + break; + case 206: + I(_e.parent, we); + break; + case 207: + l(_e.parent, _e, we); + break; + case 296: + case 297: + d(_e.parent, we); + break; + case 167: + D(_e.parent, we); + break; + case 254: { + var de = _e.parent, ye = de.name, Ae = de.initializer; + if (_e === ye) { + Ae && rr(we, ee.getTypeAtLocation(Ae)); + break; + } + } + default: + return P(_e, we); + } + } + function P(_e, we) { + e.isExpressionNode(_e) && rr(we, ee.getContextualType(_e)); + } + function k(_e, we) { + rr(we, e.isCallExpression(_e) ? ee.getVoidType() : ee.getAnyType()); + } + function Y(_e, we) { + switch (_e.operator) { + case 45: + case 46: + case 40: + case 54: + we.isNumber = true; + break; + case 39: + we.isNumberOrString = true; + break; + } + } + function U(_e, we, de) { + switch (we.operatorToken.kind) { + case 42: + case 41: + case 43: + case 44: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 65: + case 67: + case 66: + case 68: + case 69: + case 73: + case 74: + case 78: + case 70: + case 72: + case 71: + case 40: + case 29: + case 32: + case 31: + case 33: + var ye = ee.getTypeAtLocation(we.left === _e ? we.right : we.left); + ye.flags & 1056 ? rr(de, ye) : de.isNumber = true; + break; + case 64: + case 39: + var Ae = ee.getTypeAtLocation(we.left === _e ? we.right : we.left); + Ae.flags & 1056 ? rr(de, Ae) : Ae.flags & 296 ? de.isNumber = true : Ae.flags & 402653316 ? de.isString = true : Ae.flags & 1 || (de.isNumberOrString = true); + break; + case 63: + case 34: + case 36: + case 37: + case 35: + rr(de, ee.getTypeAtLocation(we.left === _e ? we.right : we.left)); + break; + case 101: + _e === we.left && (de.isString = true); + break; + case 56: + case 60: + _e === we.left && (_e.parent.parent.kind === 254 || e.isAssignmentExpression(_e.parent.parent, true)) && rr(de, ee.getTypeAtLocation(we.right)); + break; + case 55: + case 27: + case 102: + break; + } + } + function j(_e, we) { + rr(we, ee.getTypeAtLocation(_e.parent.parent.expression)); + } + function H(_e, we) { + var de = { argumentTypes: [], return_: x() }; + if (_e.arguments) + for (var ye = 0, Ae = _e.arguments; ye < Ae.length; ye++) { + var er = Ae[ye]; + de.argumentTypes.push(ee.getTypeAtLocation(er)); + } + L(_e, de.return_), _e.kind === 208 ? (we.calls || (we.calls = [])).push(de) : (we.constructs || (we.constructs = [])).push(de); + } + function I(_e, we) { + var de = e.escapeLeadingUnderscores(_e.name.text); + we.properties || (we.properties = new e.Map()); + var ye = we.properties.get(de) || x(); + L(_e, ye), we.properties.set(de, ye); + } + function l(_e, we, de) { + if (we === _e.argumentExpression) { + de.isNumberOrString = true; + return; + } else { + var ye = ee.getTypeAtLocation(_e.argumentExpression), Ae = x(); + L(_e, Ae), ye.flags & 296 ? de.numberIndex = Ae : de.stringIndex = Ae; + } + } + function d(_e, we) { + var de = e.isVariableDeclaration(_e.parent.parent) ? _e.parent.parent : _e.parent; + Ie(we, ee.getTypeAtLocation(de)); + } + function D(_e, we) { + Ie(we, ee.getTypeAtLocation(_e.parent)); + } + function fe(_e, we) { + for (var de = [], ye = 0, Ae = _e; ye < Ae.length; ye++) + for (var er = Ae[ye], ir = 0, Cr = we; ir < Cr.length; ir++) { + var Ye = Cr[ir], Br = Ye.high, Er = Ye.low; + Br(er) && (e.Debug.assert(!Er(er), "Priority can't have both low and high"), de.push(Er)); + } + return _e.filter(function(Ne) { + return de.every(function(n) { + return !n(Ne); + }); + }); + } + function g(_e) { + return ne(We(_e)); + } + function ne(_e) { + if (!_e.length) + return ee.getAnyType(); + var we = ee.getUnionType([ee.getStringType(), ee.getNumberType()]), de = [{ high: function(er) { + return er === ee.getStringType() || er === ee.getNumberType(); + }, low: function(er) { + return er === we; + } }, { high: function(er) { + return !(er.flags & 16385); + }, low: function(er) { + return !!(er.flags & 16385); + } }, { high: function(er) { + return !(er.flags & 114689) && !(e.getObjectFlags(er) & 16); + }, low: function(er) { + return !!(e.getObjectFlags(er) & 16); + } }], ye = fe(_e, de), Ae = ye.filter(function(er) { + return e.getObjectFlags(er) & 16; + }); + return Ae.length && (ye = ye.filter(function(er) { + return !(e.getObjectFlags(er) & 16); + }), ye.push(ue(Ae))), ee.getWidenedType(ee.getUnionType(ye.map(ee.getBaseTypeOfLiteralType), 2)); + } + function ue(_e) { + if (_e.length === 1) + return _e[0]; + for (var we = [], de = [], ye = [], Ae = [], er = false, ir = false, Cr = e.createMultiMap(), Ye = 0, Br = _e; Ye < Br.length; Ye++) { + for (var Er = Br[Ye], Ne = 0, n = ee.getPropertiesOfType(Er); Ne < n.length; Ne++) { + var lr = n[Ne]; + Cr.add(lr.name, lr.valueDeclaration ? ee.getTypeOfSymbolAtLocation(lr, lr.valueDeclaration) : ee.getAnyType()); + } + we.push.apply(we, ee.getSignaturesOfType(Er, 0)), de.push.apply(de, ee.getSignaturesOfType(Er, 1)); + var be = ee.getIndexInfoOfType(Er, 0); + be && (ye.push(be.type), er = er || be.isReadonly); + var Ge = ee.getIndexInfoOfType(Er, 1); + Ge && (Ae.push(Ge.type), ir = ir || Ge.isReadonly); + } + var ur = e.mapEntries(Cr, function(Ir, wr) { + var Ur = wr.length < _e.length ? 16777216 : 0, ii = ee.createSymbol(4 | Ur, Ir); + return ii.type = ee.getUnionType(wr), [Ir, ii]; + }), yr = []; + return ye.length && yr.push(ee.createIndexInfo(ee.getStringType(), ee.getUnionType(ye), er)), Ae.length && yr.push(ee.createIndexInfo(ee.getNumberType(), ee.getUnionType(Ae), ir)), ee.createAnonymousType(_e[0].symbol, ur, we, de, yr); + } + function We(_e) { + var we, de, ye, Ae = []; + _e.isNumber && Ae.push(ee.getNumberType()), _e.isString && Ae.push(ee.getStringType()), _e.isNumberOrString && Ae.push(ee.getUnionType([ee.getStringType(), ee.getNumberType()])), _e.numberIndex && Ae.push(ee.createArrayType(g(_e.numberIndex))), (((we = _e.properties) === null || we === void 0 ? void 0 : we.size) || ((de = _e.constructs) === null || de === void 0 ? void 0 : de.length) || _e.stringIndex) && Ae.push(Fe(_e)); + var er = (_e.candidateTypes || []).map(function(Cr) { + return ee.getBaseTypeOfLiteralType(Cr); + }), ir = !((ye = _e.calls) === null || ye === void 0) && ye.length ? Fe(_e) : void 0; + return ir && er ? Ae.push(ee.getUnionType(Ve([ir], er, true), 2)) : (ir && Ae.push(ir), e.length(er) && Ae.push.apply(Ae, er)), Ae.push.apply(Ae, Z(_e)), Ae; + } + function Fe(_e) { + var we = new e.Map(); + _e.properties && _e.properties.forEach(function(er, ir) { + var Cr = ee.createSymbol(4, ir); + Cr.type = g(er), we.set(ir, Cr); + }); + var de = _e.calls ? [He(_e.calls)] : [], ye = _e.constructs ? [He(_e.constructs)] : [], Ae = _e.stringIndex ? [ee.createIndexInfo(ee.getStringType(), g(_e.stringIndex), false)] : []; + return ee.createAnonymousType(void 0, we, de, ye, Ae); + } + function Z(_e) { + if (!_e.properties || !_e.properties.size) + return []; + var we = F.filter(function(de) { + return Be(de, _e); + }); + return 0 < we.length && we.length < 3 ? we.map(function(de) { + return ge(de, _e); + }) : []; + } + function Be(_e, we) { + return we.properties ? !e.forEachEntry(we.properties, function(de, ye) { + var Ae = ee.getTypeOfPropertyOfType(_e, ye); + if (!Ae) + return true; + if (de.calls) { + var er = ee.getSignaturesOfType(Ae, 0); + return !er.length || !ee.isTypeAssignableTo(Ae, Ee(de.calls)); + } else + return !ee.isTypeAssignableTo(Ae, g(de)); + }) : false; + } + function ge(_e, we) { + if (!(e.getObjectFlags(_e) & 4) || !we.properties) + return _e; + var de = _e.target, ye = e.singleOrUndefined(de.typeParameters); + if (!ye) + return _e; + var Ae = []; + return we.properties.forEach(function(er, ir) { + var Cr = ee.getTypeOfPropertyOfType(de, ir); + e.Debug.assert(!!Cr, "generic should have all the properties of its reference."), Ae.push.apply(Ae, Re(Cr, g(er), ye)); + }), he[_e.symbol.escapedName](ne(Ae)); + } + function Re(_e, we, de) { + if (_e === de) + return [we]; + if (_e.flags & 3145728) + return e.flatMap(_e.types, function(Br) { + return Re(Br, we, de); + }); + if (e.getObjectFlags(_e) & 4 && e.getObjectFlags(we) & 4) { + var ye = ee.getTypeArguments(_e), Ae = ee.getTypeArguments(we), er = []; + if (ye && Ae) + for (var ir = 0; ir < ye.length; ir++) + Ae[ir] && er.push.apply(er, Re(ye[ir], Ae[ir], de)); + return er; + } + var Cr = ee.getSignaturesOfType(_e, 0), Ye = ee.getSignaturesOfType(we, 0); + return Cr.length === 1 && Ye.length === 1 ? ze(Cr[0], Ye[0], de) : []; + } + function ze(_e, we, de) { + for (var ye = [], Ae = 0; Ae < _e.parameters.length; Ae++) { + var er = _e.parameters[Ae], ir = we.parameters[Ae], Cr = _e.declaration && e.isRestParameter(_e.declaration.parameters[Ae]); + if (!ir) + break; + var Ye = er.valueDeclaration ? ee.getTypeOfSymbolAtLocation(er, er.valueDeclaration) : ee.getAnyType(), Br = Cr && ee.getElementTypeOfArrayType(Ye); + Br && (Ye = Br); + var Er = ir.type || (ir.valueDeclaration ? ee.getTypeOfSymbolAtLocation(ir, ir.valueDeclaration) : ee.getAnyType()); + ye.push.apply(ye, Re(Ye, Er, de)); + } + var Ne = ee.getReturnTypeOfSignature(_e), n = ee.getReturnTypeOfSignature(we); + return ye.push.apply(ye, Re(Ne, n, de)), ye; + } + function Ee(_e) { + return ee.createAnonymousType(void 0, e.createSymbolTable(), [He(_e)], e.emptyArray, e.emptyArray); + } + function He(_e) { + for (var we = [], de = Math.max.apply(Math, _e.map(function(ir) { + return ir.argumentTypes.length; + })), ye = function(ir) { + var Cr = ee.createSymbol(1, e.escapeLeadingUnderscores("arg".concat(ir))); + Cr.type = ne(_e.map(function(Ye) { + return Ye.argumentTypes[ir] || ee.getUndefinedType(); + })), _e.some(function(Ye) { + return Ye.argumentTypes[ir] === void 0; + }) && (Cr.flags |= 16777216), we.push(Cr); + }, Ae = 0; Ae < de; Ae++) + ye(Ae); + var er = g(X(_e.map(function(ir) { + return ir.return_; + }))); + return ee.createSignature(void 0, void 0, void 0, we, er, void 0, de, 0); + } + function rr(_e, we) { + we && !(we.flags & 1) && !(we.flags & 131072) && (_e.candidateTypes || (_e.candidateTypes = [])).push(we); + } + function Ie(_e, we) { + we && !(we.flags & 1) && !(we.flags & 131072) && (_e.candidateThisTypes || (_e.candidateThisTypes = [])).push(we); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixReturnTypeInAsyncFunction", B = [e.Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0.code]; + C.registerCodeFix({ errorCodes: B, fixIds: [w], getCodeActions: function(N) { + var p = N.sourceFile, m = N.program, G = N.span, oe = m.getTypeChecker(), f = E(p, m.getTypeChecker(), G.start); + if (!!f) { + var T = f.returnTypeNode, K = f.returnType, b = f.promisedTypeNode, se = f.promisedType, J = e.textChanges.ChangeTracker.with(N, function(ie) { + return Q(ie, p, T, b); + }); + return [C.createCodeFixAction(w, J, [e.Diagnostics.Replace_0_with_Promise_1, oe.typeToString(K), oe.typeToString(se)], w, e.Diagnostics.Fix_all_incorrect_return_type_of_an_async_functions)]; + } + }, getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + var m = E(p.file, le.program.getTypeChecker(), p.start); + m && Q(N, p.file, m.returnTypeNode, m.promisedTypeNode); + }); + } }); + function E(le, N, p) { + if (!e.isInJSFile(le)) { + var m = e.getTokenAtPosition(le, p), G = e.findAncestor(m, e.isFunctionLikeDeclaration), oe = G == null ? void 0 : G.type; + if (!!oe) { + var f = N.getTypeFromTypeNode(oe), T = N.getAwaitedType(f) || N.getVoidType(), K = N.typeToTypeNode(T, oe, void 0); + if (K) + return { returnTypeNode: oe, returnType: f, promisedTypeNode: K, promisedType: T }; + } + } + } + function Q(le, N, p, m) { + le.replaceNode(N, p, e.factory.createTypeReferenceNode("Promise", [m])); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "disableJsDiagnostics", B = "disableJsDiagnostics", E = e.mapDefined(Object.keys(e.Diagnostics), function(le) { + var N = e.Diagnostics[le]; + return N.category === e.DiagnosticCategory.Error ? N.code : void 0; + }); + C.registerCodeFix({ errorCodes: E, getCodeActions: function(N) { + var p = N.sourceFile, m = N.program, G = N.span, oe = N.host, f = N.formatContext; + if (!(!e.isInJSFile(p) || !e.isCheckJsEnabledForFile(p, m.getCompilerOptions()))) { + var T = p.checkJsDirective ? "" : e.getNewLineOrDefaultFromHost(oe, f.options), K = [C.createCodeFixActionWithoutFixAll(w, [C.createFileTextChanges(p.fileName, [e.createTextChange(p.checkJsDirective ? e.createTextSpanFromBounds(p.checkJsDirective.pos, p.checkJsDirective.end) : e.createTextSpan(0, 0), "// @ts-nocheck".concat(T))])], e.Diagnostics.Disable_checking_for_this_file)]; + return e.textChanges.isValidLocationToAddComment(p, G.start) && K.unshift(C.createCodeFixAction(w, e.textChanges.ChangeTracker.with(N, function(b) { + return Q(b, p, G.start); + }), e.Diagnostics.Ignore_this_error_message, B, e.Diagnostics.Add_ts_ignore_to_all_error_messages)), K; + } + }, fixIds: [B], getAllCodeActions: function(le) { + var N = new e.Set(); + return C.codeFixAll(le, E, function(p, m) { + e.textChanges.isValidLocationToAddComment(m.file, m.start) && Q(p, m.file, m.start, N); + }); + } }); + function Q(le, N, p, m) { + var G = e.getLineAndCharacterOfPosition(N, p).line; + (!m || e.tryAddToSet(m, G)) && le.insertCommentBeforeLine(N, G, p, " @ts-ignore"); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(ee, he, F, x, X, $, A) { + for (var y = ee.symbol.members, V = 0, L = he; V < L.length; V++) { + var P = L[V]; + y.has(P.escapedName) || Q(P, ee, F, x, X, $, A, void 0); + } + } + C.createMissingMemberNodes = w; + function B(ee) { + return { trackSymbol: function() { + return false; + }, moduleResolverHost: e.getModuleSpecifierResolverHost(ee.program, ee.host) }; + } + C.getNoopSymbolTrackerWithResolver = B; + var E; + (function(ee) { + ee[ee.Method = 1] = "Method", ee[ee.Property = 2] = "Property", ee[ee.All = 3] = "All"; + })(E = C.PreserveOptionalFlags || (C.PreserveOptionalFlags = {})); + function Q(ee, he, F, x, X, $, A, y, V, L) { + V === void 0 && (V = 3), L === void 0 && (L = false); + var P = ee.getDeclarations(); + if (!(P && P.length)) + return; + var k = x.program.getTypeChecker(), Y = e.getEmitScriptTarget(x.program.getCompilerOptions()), U = P[0], j = e.getSynthesizedDeepClone(e.getNameOfDeclaration(U), false), H = b(e.getEffectiveModifierFlags(U)), I = H ? e.factory.createNodeArray([H]) : void 0, l = k.getWidenedType(k.getTypeOfSymbolAtLocation(ee, he)), d = !!(ee.flags & 16777216), D = !!(he.flags & 16777216) || L, fe = e.getQuotePreference(F, X); + switch (U.kind) { + case 166: + case 167: + var g = fe === 0 ? 268435456 : void 0, ne = k.typeToTypeNode(l, he, g, B(x)); + if ($) { + var ue = q(ne, Y); + ue && (ne = ue.typeNode, ve($, ue.symbols)); + } + A(e.factory.createPropertyDeclaration(void 0, I, j, d && V & 2 ? e.factory.createToken(57) : void 0, ne, void 0)); + break; + case 172: + case 173: { + var We = k.typeToTypeNode(l, he, void 0, B(x)), Fe = e.getAllAccessorDeclarations(P, U), Z = Fe.secondAccessor ? [Fe.firstAccessor, Fe.secondAccessor] : [Fe.firstAccessor]; + if ($) { + var ue = q(We, Y); + ue && (We = ue.typeNode, ve($, ue.symbols)); + } + for (var Be = 0, ge = Z; Be < ge.length; Be++) { + var Re = ge[Be]; + if (e.isGetAccessorDeclaration(Re)) + A(e.factory.createGetAccessorDeclaration(void 0, I, j, e.emptyArray, We, D ? void 0 : y || T(fe))); + else { + e.Debug.assertNode(Re, e.isSetAccessorDeclaration, "The counterpart to a getter should be a setter"); + var ze = e.getSetAccessorValueParameter(Re), Ee = ze && e.isIdentifier(ze.name) ? e.idText(ze.name) : void 0; + A(e.factory.createSetAccessorDeclaration(void 0, I, j, m(1, [Ee], [We], 1, false), D ? void 0 : y || T(fe))); + } + } + break; + } + case 168: + case 169: + var He = k.getSignaturesOfType(l, 0); + if (!e.some(He)) + break; + if (P.length === 1) { + e.Debug.assert(He.length === 1, "One declaration implies one signature"); + var rr = He[0]; + we(fe, rr, I, j, D ? void 0 : y || T(fe)); + break; + } + for (var Ie = 0, _e = He; Ie < _e.length; Ie++) { + var rr = _e[Ie]; + we(fe, rr, e.getSynthesizedDeepClones(I, false), e.getSynthesizedDeepClone(j, false)); + } + if (!D) + if (P.length > He.length) { + var rr = k.getSignatureFromDeclaration(P[P.length - 1]); + we(fe, rr, I, j, y || T(fe)); + } else + e.Debug.assert(P.length === He.length, "Declarations and signatures should match count"), A(G(k, x, he, He, j, d && !!(V & 1), I, fe, y)); + break; + } + function we(de, ye, Ae, er, ir) { + var Cr = le(169, x, de, ye, ir, er, Ae, d && !!(V & 1), he, $); + Cr && A(Cr); + } + } + C.addNewNodeForMemberSymbol = Q; + function le(ee, he, F, x, X, $, A, y, V, L) { + var P = he.program, k = P.getTypeChecker(), Y = e.getEmitScriptTarget(P.getCompilerOptions()), U = 524545 | (F === 0 ? 268435456 : 0), j = k.signatureToSignatureDeclaration(x, ee, V, U, B(he)); + if (!!j) { + var H = j.typeParameters, I = j.parameters, l = j.type; + if (L) { + if (H) { + var d = e.sameMap(H, function(ue) { + var We = ue.constraint, Fe = ue.default; + if (We) { + var Z = q(We, Y); + Z && (We = Z.typeNode, ve(L, Z.symbols)); + } + if (Fe) { + var Z = q(Fe, Y); + Z && (Fe = Z.typeNode, ve(L, Z.symbols)); + } + return e.factory.updateTypeParameterDeclaration(ue, ue.modifiers, ue.name, We, Fe); + }); + H !== d && (H = e.setTextRange(e.factory.createNodeArray(d, H.hasTrailingComma), H)); + } + var D = e.sameMap(I, function(ue) { + var We = q(ue.type, Y), Fe = ue.type; + return We && (Fe = We.typeNode, ve(L, We.symbols)), e.factory.updateParameterDeclaration(ue, ue.decorators, ue.modifiers, ue.dotDotDotToken, ue.name, ue.questionToken, Fe, ue.initializer); + }); + if (I !== D && (I = e.setTextRange(e.factory.createNodeArray(D, I.hasTrailingComma), I)), l) { + var fe = q(l, Y); + fe && (l = fe.typeNode, ve(L, fe.symbols)); + } + } + var g = y ? e.factory.createToken(57) : void 0, ne = j.asteriskToken; + if (e.isFunctionExpression(j)) + return e.factory.updateFunctionExpression(j, A, j.asteriskToken, e.tryCast($, e.isIdentifier), H, I, l, X != null ? X : j.body); + if (e.isArrowFunction(j)) + return e.factory.updateArrowFunction(j, A, H, I, l, j.equalsGreaterThanToken, X != null ? X : j.body); + if (e.isMethodDeclaration(j)) + return e.factory.updateMethodDeclaration(j, void 0, A, ne, $ != null ? $ : e.factory.createIdentifier(""), g, H, I, l, X); + } + } + C.createSignatureDeclarationFromSignature = le; + function N(ee, he, F, x, X, $, A) { + var y = e.getQuotePreference(he.sourceFile, he.preferences), V = e.getEmitScriptTarget(he.program.getCompilerOptions()), L = B(he), P = he.program.getTypeChecker(), k = e.isInJSFile(A), Y = x.typeArguments, U = x.arguments, j = x.parent, H = k ? void 0 : P.getContextualType(x), I = e.map(U, function(ue) { + return e.isIdentifier(ue) ? ue.text : e.isPropertyAccessExpression(ue) && e.isIdentifier(ue.name) ? ue.name.text : void 0; + }), l = k ? [] : e.map(U, function(ue) { + return p(P, F, P.getBaseTypeOfLiteralType(P.getTypeAtLocation(ue)), A, V, void 0, L); + }), d = $ ? e.factory.createNodeArray(e.factory.createModifiersFromModifierFlags($)) : void 0, D = e.isYieldExpression(j) ? e.factory.createToken(41) : void 0, fe = k || Y === void 0 ? void 0 : e.map(Y, function(ue, We) { + return e.factory.createTypeParameterDeclaration(void 0, 84 + Y.length - 1 <= 90 ? String.fromCharCode(84 + We) : "T".concat(We)); + }), g = m(U.length, I, l, void 0, k), ne = k || H === void 0 ? void 0 : P.typeToTypeNode(H, A, void 0, L); + switch (ee) { + case 169: + return e.factory.createMethodDeclaration(void 0, d, D, X, void 0, fe, g, ne, T(y)); + case 168: + return e.factory.createMethodSignature(d, X, void 0, fe, g, ne); + case 256: + return e.factory.createFunctionDeclaration(void 0, d, D, X, fe, g, ne, K(e.Diagnostics.Function_not_implemented.message, y)); + default: + e.Debug.fail("Unexpected kind"); + } + } + C.createSignatureDeclarationFromCallExpression = N; + function p(ee, he, F, x, X, $, A) { + var y = ee.typeToTypeNode(F, x, $, A); + if (y && e.isImportTypeNode(y)) { + var V = q(y, X); + V && (ve(he, V.symbols), y = V.typeNode); + } + return e.getSynthesizedDeepClone(y); + } + C.typeToAutoImportableTypeNode = p; + function m(ee, he, F, x, X) { + for (var $ = [], A = 0; A < ee; A++) { + var y = e.factory.createParameterDeclaration(void 0, void 0, void 0, he && he[A] || "arg".concat(A), x !== void 0 && A >= x ? e.factory.createToken(57) : void 0, X ? void 0 : F && F[A] || e.factory.createKeywordTypeNode(155), void 0); + $.push(y); + } + return $; + } + function G(ee, he, F, x, X, $, A, y, V) { + for (var L = x[0], P = x[0].minArgumentCount, k = false, Y = 0, U = x; Y < U.length; Y++) { + var j = U[Y]; + P = Math.min(j.minArgumentCount, P), e.signatureHasRestParameter(j) && (k = true), j.parameters.length >= L.parameters.length && (!e.signatureHasRestParameter(j) || e.signatureHasRestParameter(L)) && (L = j); + } + var H = L.parameters.length - (e.signatureHasRestParameter(L) ? 1 : 0), I = L.parameters.map(function(D) { + return D.name; + }), l = m(H, I, void 0, P, false); + if (k) { + var d = e.factory.createParameterDeclaration(void 0, void 0, e.factory.createToken(25), I[H] || "rest", H >= P ? e.factory.createToken(57) : void 0, e.factory.createArrayTypeNode(e.factory.createKeywordTypeNode(155)), void 0); + l.push(d); + } + return f(A, X, $, void 0, l, oe(x, ee, he, F), y, V); + } + function oe(ee, he, F, x) { + if (e.length(ee)) { + var X = he.getUnionType(e.map(ee, he.getReturnTypeOfSignature)); + return he.typeToTypeNode(X, x, void 0, B(F)); + } + } + function f(ee, he, F, x, X, $, A, y) { + return e.factory.createMethodDeclaration(void 0, ee, void 0, he, F ? e.factory.createToken(57) : void 0, x, X, $, y || T(A)); + } + function T(ee) { + return K(e.Diagnostics.Method_not_implemented.message, ee); + } + function K(ee, he) { + return e.factory.createBlock([e.factory.createThrowStatement(e.factory.createNewExpression(e.factory.createIdentifier("Error"), void 0, [e.factory.createStringLiteral(ee, he === 0)]))], true); + } + C.createStubbedBody = K; + function b(ee) { + if (ee & 4) + return e.factory.createToken(123); + if (ee & 16) + return e.factory.createToken(122); + } + function se(ee, he, F) { + var x = e.getTsConfigObjectLiteralExpression(he); + if (!!x) { + var X = R(x, "compilerOptions"); + if (X === void 0) { + ee.insertNodeAtObjectStart(he, x, ie("compilerOptions", e.factory.createObjectLiteralExpression(F.map(function(Y) { + var U = Y[0], j = Y[1]; + return ie(U, j); + }), true))); + return; + } + var $ = X.initializer; + if (!!e.isObjectLiteralExpression($)) + for (var A = 0, y = F; A < y.length; A++) { + var V = y[A], L = V[0], P = V[1], k = R($, L); + k === void 0 ? ee.insertNodeAtObjectStart(he, $, ie(L, P)) : ee.replaceNode(he, k.initializer, P); + } + } + } + C.setJsonCompilerOptionValues = se; + function J(ee, he, F, x) { + se(ee, he, [[F, x]]); + } + C.setJsonCompilerOptionValue = J; + function ie(ee, he) { + return e.factory.createPropertyAssignment(e.factory.createStringLiteral(ee), he); + } + C.createJsonPropertyAssignment = ie; + function R(ee, he) { + return e.find(ee.properties, function(F) { + return e.isPropertyAssignment(F) && !!F.name && e.isStringLiteral(F.name) && F.name.text === he; + }); + } + C.findJsonProperty = R; + function q(ee, he) { + var F, x = e.visitNode(ee, X); + if (F && x) + return { typeNode: x, symbols: F }; + function X($) { + var A; + if (e.isLiteralImportTypeNode($) && $.qualifier) { + var y = e.getFirstIdentifier($.qualifier), V = e.getNameForExportedSymbol(y.symbol, he), L = V !== y.text ? O($.qualifier, e.factory.createIdentifier(V)) : $.qualifier; + F = e.append(F, y.symbol); + var P = (A = $.typeArguments) === null || A === void 0 ? void 0 : A.map(X); + return e.factory.createTypeReferenceNode(L, P); + } + return e.visitEachChild($, X, e.nullTransformationContext); + } + } + C.tryGetAutoImportableReferenceFromTypeNode = q; + function O(ee, he) { + return ee.kind === 79 ? he : e.factory.createQualifiedName(O(ee.left, he), ee.right); + } + function ve(ee, he) { + he.forEach(function(F) { + return ee.addImportFromExportedSymbol(F, true); + }); + } + C.importSymbols = ve; + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(R, q, O, ve, ee, he) { + var F = m(R, q, O, ve); + if (!(!F || e.refactor.isRefactorErrorInfo(F))) { + var x = e.textChanges.ChangeTracker.fromContext(ee), X = F.isStatic, $ = F.isReadonly, A = F.fieldName, y = F.accessorName, V = F.originalName, L = F.type, P = F.container, k = F.declaration; + e.suppressLeadingAndTrailingTrivia(A), e.suppressLeadingAndTrailingTrivia(y), e.suppressLeadingAndTrailingTrivia(k), e.suppressLeadingAndTrailingTrivia(P); + var Y, U; + if (e.isClassLike(P)) { + var j = e.getEffectiveModifierFlags(k); + if (e.isSourceFileJS(R)) { + var H = e.createModifiers(j); + Y = H, U = H; + } else + Y = e.createModifiers(N(j)), U = e.createModifiers(p(j)); + } + K(x, R, k, L, A, U); + var I = G(A, y, L, Y, X, P); + if (e.suppressLeadingAndTrailingTrivia(I), b(x, R, I, k, P), $) { + var l = e.getFirstConstructorWithBody(P); + l && se(x, R, l, A.text, V); + } else { + var d = oe(A, y, L, Y, X, P); + e.suppressLeadingAndTrailingTrivia(d), b(x, R, d, k, P); + } + return x.getChanges(); + } + } + C.generateAccessorFromProperty = w; + function B(R) { + return e.isIdentifier(R) || e.isStringLiteral(R); + } + function E(R) { + return e.isParameterPropertyDeclaration(R, R.parent) || e.isPropertyDeclaration(R) || e.isPropertyAssignment(R); + } + function Q(R, q) { + return e.isIdentifier(q) ? e.factory.createIdentifier(R) : e.factory.createStringLiteral(R); + } + function le(R, q, O) { + var ve = q ? O.name : e.factory.createThis(); + return e.isIdentifier(R) ? e.factory.createPropertyAccessExpression(ve, R) : e.factory.createElementAccessExpression(ve, e.factory.createStringLiteralFromNode(R)); + } + function N(R) { + return R &= -65, R &= -9, R & 16 || (R |= 4), R; + } + function p(R) { + return R &= -5, R &= -17, R |= 8, R; + } + function m(R, q, O, ve, ee) { + ee === void 0 && (ee = true); + var he = e.getTokenAtPosition(R, O), F = O === ve && ee, x = e.findAncestor(he.parent, E), X = 124; + if (!x || !(e.nodeOverlapsWithStartEnd(x.name, R, O, ve) || F)) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_property_for_which_to_generate_accessor) }; + if (!B(x.name)) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Name_is_not_valid) }; + if ((e.getEffectiveModifierFlags(x) | X) !== X) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Can_only_convert_property_with_modifier) }; + var $ = x.name.text, A = e.startsWithUnderscore($), y = Q(A ? $ : e.getUniqueName("_".concat($), R), x.name), V = Q(A ? e.getUniqueName($.substring(1), R) : $, x.name); + return { isStatic: e.hasStaticModifier(x), isReadonly: e.hasEffectiveReadonlyModifier(x), type: J(x, q), container: x.kind === 164 ? x.parent.parent : x.parent, originalName: x.name.text, declaration: x, fieldName: y, accessorName: V, renameAccessor: A }; + } + C.getAccessorConvertiblePropertyAtPosition = m; + function G(R, q, O, ve, ee, he) { + return e.factory.createGetAccessorDeclaration(void 0, ve, q, void 0, O, e.factory.createBlock([e.factory.createReturnStatement(le(R, ee, he))], true)); + } + function oe(R, q, O, ve, ee, he) { + return e.factory.createSetAccessorDeclaration(void 0, ve, q, [e.factory.createParameterDeclaration(void 0, void 0, void 0, e.factory.createIdentifier("value"), void 0, O)], e.factory.createBlock([e.factory.createExpressionStatement(e.factory.createAssignment(le(R, ee, he), e.factory.createIdentifier("value")))], true)); + } + function f(R, q, O, ve, ee, he) { + var F = e.factory.updatePropertyDeclaration(O, O.decorators, he, ee, O.questionToken || O.exclamationToken, ve, O.initializer); + R.replaceNode(q, O, F); + } + function T(R, q, O, ve) { + var ee = e.factory.updatePropertyAssignment(O, ve, O.initializer); + R.replacePropertyAssignment(q, O, ee); + } + function K(R, q, O, ve, ee, he) { + e.isPropertyDeclaration(O) ? f(R, q, O, ve, ee, he) : e.isPropertyAssignment(O) ? T(R, q, O, ee) : R.replaceNode(q, O, e.factory.updateParameterDeclaration(O, O.decorators, he, O.dotDotDotToken, e.cast(ee, e.isIdentifier), O.questionToken, O.type, O.initializer)); + } + function b(R, q, O, ve, ee) { + e.isParameterPropertyDeclaration(ve, ve.parent) ? R.insertMemberAtStart(q, ee, O) : e.isPropertyAssignment(ve) ? R.insertNodeAfterComma(q, ve, O) : R.insertNodeAfter(q, ve, O); + } + function se(R, q, O, ve, ee) { + !O.body || O.body.forEachChild(function he(F) { + e.isElementAccessExpression(F) && F.expression.kind === 108 && e.isStringLiteral(F.argumentExpression) && F.argumentExpression.text === ee && e.isWriteAccess(F) && R.replaceNode(q, F.argumentExpression, e.factory.createStringLiteral(ve)), e.isPropertyAccessExpression(F) && F.expression.kind === 108 && F.name.text === ee && e.isWriteAccess(F) && R.replaceNode(q, F.name, e.factory.createIdentifier(ve)), !e.isFunctionLike(F) && !e.isClassLike(F) && F.forEachChild(he); + }); + } + function J(R, q) { + var O = e.getTypeAnnotationNode(R); + if (e.isPropertyDeclaration(R) && O && R.questionToken) { + var ve = q.getTypeChecker(), ee = ve.getTypeFromTypeNode(O); + if (!ve.isTypeAssignableTo(ve.getUndefinedType(), ee)) { + var he = e.isUnionTypeNode(O) ? O.types : [O]; + return e.factory.createUnionTypeNode(Ve(Ve([], he, true), [e.factory.createKeywordTypeNode(153)], false)); + } + } + return O; + } + function ie(R, q) { + for (var O = []; R; ) { + var ve = e.getClassExtendsHeritageElement(R), ee = ve && q.getSymbolAtLocation(ve.expression); + if (!ee) + break; + var he = ee.flags & 2097152 ? q.getAliasedSymbol(ee) : ee, F = he.declarations && e.find(he.declarations, e.isClassLike); + if (!F) + break; + O.push(F), R = F; + } + return O; + } + C.getAllSupers = ie; + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "invalidImportSyntax"; + function B(p, m) { + var G = e.getSourceFileOfNode(m), oe = e.getNamespaceDeclarationNode(m), f = p.program.getCompilerOptions(), T = []; + return T.push(E(p, G, m, e.makeImport(oe.name, void 0, m.moduleSpecifier, e.getQuotePreference(G, p.preferences)))), e.getEmitModuleKind(f) === e.ModuleKind.CommonJS && T.push(E(p, G, m, e.factory.createImportEqualsDeclaration(void 0, void 0, false, oe.name, e.factory.createExternalModuleReference(m.moduleSpecifier)))), T; + } + function E(p, m, G, oe) { + var f = e.textChanges.ChangeTracker.with(p, function(T) { + return T.replaceNode(m, G, oe); + }); + return C.createCodeFixActionWithoutFixAll(w, f, [e.Diagnostics.Replace_import_with_0, f[0].textChanges[0].newText]); + } + C.registerCodeFix({ errorCodes: [e.Diagnostics.This_expression_is_not_callable.code, e.Diagnostics.This_expression_is_not_constructable.code], getCodeActions: Q }); + function Q(p) { + var m = p.sourceFile, G = e.Diagnostics.This_expression_is_not_callable.code === p.errorCode ? 208 : 209, oe = e.findAncestor(e.getTokenAtPosition(m, p.span.start), function(T) { + return T.kind === G; + }); + if (!oe) + return []; + var f = oe.expression; + return N(p, f); + } + C.registerCodeFix({ errorCodes: [e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code, e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1.code, e.Diagnostics.Type_0_is_not_assignable_to_type_1.code, e.Diagnostics.Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated.code, e.Diagnostics.Type_predicate_0_is_not_assignable_to_1.code, e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_2_index_type_3.code, e.Diagnostics._0_index_type_1_is_not_assignable_to_2_index_type_3.code, e.Diagnostics.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2.code, e.Diagnostics.Property_0_in_type_1_is_not_assignable_to_type_2.code, e.Diagnostics.Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property.code, e.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1.code], getCodeActions: le }); + function le(p) { + var m = p.sourceFile, G = e.findAncestor(e.getTokenAtPosition(m, p.span.start), function(oe) { + return oe.getStart() === p.span.start && oe.getEnd() === p.span.start + p.span.length; + }); + return G ? N(p, G) : []; + } + function N(p, m) { + var G = p.program.getTypeChecker().getTypeAtLocation(m); + if (!(G.symbol && G.symbol.originatingImport)) + return []; + var oe = [], f = G.symbol.originatingImport; + if (e.isImportCall(f) || e.addRange(oe, B(p, f)), e.isExpression(m) && !(e.isNamedDeclaration(m.parent) && m.parent.name === m)) { + var T = p.sourceFile, K = e.textChanges.ChangeTracker.with(p, function(b) { + return b.replaceNode(T, m, e.factory.createPropertyAccessExpression(m, "default"), {}); + }); + oe.push(C.createCodeFixActionWithoutFixAll(w, K, e.Diagnostics.Use_synthetic_default_member)); + } + return oe; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "strictClassInitialization", B = "addMissingPropertyDefiniteAssignmentAssertions", E = "addMissingPropertyUndefinedType", Q = "addMissingPropertyInitializer", le = [e.Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; + C.registerCodeFix({ errorCodes: le, getCodeActions: function(J) { + var ie = N(J.sourceFile, J.span.start); + if (!!ie) { + var R = []; + return e.append(R, G(J, ie)), e.append(R, p(J, ie)), e.append(R, f(J, ie)), R; + } + }, fixIds: [B, E, Q], getAllCodeActions: function(se) { + return C.codeFixAll(se, le, function(J, ie) { + var R = N(ie.file, ie.start); + if (!!R) + switch (se.fixId) { + case B: + m(J, ie.file, R.prop); + break; + case E: + oe(J, ie.file, R); + break; + case Q: + var q = se.program.getTypeChecker(), O = K(q, R.prop); + if (!O) + return; + T(J, ie.file, R.prop, O); + break; + default: + e.Debug.fail(JSON.stringify(se.fixId)); + } + }); + } }); + function N(se, J) { + var ie = e.getTokenAtPosition(se, J); + if (e.isIdentifier(ie) && e.isPropertyDeclaration(ie.parent)) { + var R = e.getEffectiveTypeAnnotationNode(ie.parent); + if (R) + return { type: R, prop: ie.parent, isJs: e.isInJSFile(ie.parent) }; + } + } + function p(se, J) { + if (!J.isJs) { + var ie = e.textChanges.ChangeTracker.with(se, function(R) { + return m(R, se.sourceFile, J.prop); + }); + return C.createCodeFixAction(w, ie, [e.Diagnostics.Add_definite_assignment_assertion_to_property_0, J.prop.getText()], B, e.Diagnostics.Add_definite_assignment_assertions_to_all_uninitialized_properties); + } + } + function m(se, J, ie) { + e.suppressLeadingAndTrailingTrivia(ie); + var R = e.factory.updatePropertyDeclaration(ie, ie.decorators, ie.modifiers, ie.name, e.factory.createToken(53), ie.type, ie.initializer); + se.replaceNode(J, ie, R); + } + function G(se, J) { + var ie = e.textChanges.ChangeTracker.with(se, function(R) { + return oe(R, se.sourceFile, J); + }); + return C.createCodeFixAction(w, ie, [e.Diagnostics.Add_undefined_type_to_property_0, J.prop.name.getText()], E, e.Diagnostics.Add_undefined_type_to_all_uninitialized_properties); + } + function oe(se, J, ie) { + var R = e.factory.createKeywordTypeNode(153), q = e.isUnionTypeNode(ie.type) ? ie.type.types.concat(R) : [ie.type, R], O = e.factory.createUnionTypeNode(q); + ie.isJs ? se.addJSDocTags(J, ie.prop, [e.factory.createJSDocTypeTag(void 0, e.factory.createJSDocTypeExpression(O))]) : se.replaceNode(J, ie.type, O); + } + function f(se, J) { + if (!J.isJs) { + var ie = se.program.getTypeChecker(), R = K(ie, J.prop); + if (!!R) { + var q = e.textChanges.ChangeTracker.with(se, function(O) { + return T(O, se.sourceFile, J.prop, R); + }); + return C.createCodeFixAction(w, q, [e.Diagnostics.Add_initializer_to_property_0, J.prop.name.getText()], Q, e.Diagnostics.Add_initializers_to_all_uninitialized_properties); + } + } + } + function T(se, J, ie, R) { + e.suppressLeadingAndTrailingTrivia(ie); + var q = e.factory.updatePropertyDeclaration(ie, ie.decorators, ie.modifiers, ie.name, ie.questionToken, ie.type, R); + se.replaceNode(J, ie, q); + } + function K(se, J) { + return b(se, se.getTypeFromTypeNode(J.type)); + } + function b(se, J) { + if (J.flags & 512) + return J === se.getFalseType() || J === se.getFalseType(true) ? e.factory.createFalse() : e.factory.createTrue(); + if (J.isStringLiteral()) + return e.factory.createStringLiteral(J.value); + if (J.isNumberLiteral()) + return e.factory.createNumericLiteral(J.value); + if (J.flags & 2048) + return e.factory.createBigIntLiteral(J.value); + if (J.isUnion()) + return e.firstDefined(J.types, function(q) { + return b(se, q); + }); + if (J.isClass()) { + var ie = e.getClassLikeDeclarationOfSymbol(J.symbol); + if (!ie || e.hasSyntacticModifier(ie, 128)) + return; + var R = e.getFirstConstructorWithBody(ie); + return R && R.parameters.length ? void 0 : e.factory.createNewExpression(e.factory.createIdentifier(J.symbol.name), void 0, void 0); + } else if (se.isArrayLikeType(J)) + return e.factory.createArrayLiteralExpression(); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "requireInTs", B = [e.Diagnostics.require_call_may_be_converted_to_an_import.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = Q(N.sourceFile, N.program, N.span.start); + if (!!p) { + var m = e.textChanges.ChangeTracker.with(N, function(G) { + return E(G, N.sourceFile, p); + }); + return [C.createCodeFixAction(w, m, e.Diagnostics.Convert_require_to_import, w, e.Diagnostics.Convert_all_require_to_import)]; + } + }, fixIds: [w], getAllCodeActions: function(N) { + return C.codeFixAll(N, B, function(p, m) { + var G = Q(m.file, N.program, m.start); + G && E(p, N.sourceFile, G); + }); + } }); + function E(N, p, m) { + var G = m.allowSyntheticDefaults, oe = m.defaultImportName, f = m.namedImports, T = m.statement, K = m.required; + N.replaceNode(p, T, oe && !G ? e.factory.createImportEqualsDeclaration(void 0, void 0, false, oe, e.factory.createExternalModuleReference(K)) : e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, oe, f), K, void 0)); + } + function Q(N, p, m) { + var G = e.getTokenAtPosition(N, m).parent; + if (!e.isRequireCall(G, true)) + throw e.Debug.failBadSyntaxKind(G); + var oe = e.cast(G.parent, e.isVariableDeclaration), f = e.tryCast(oe.name, e.isIdentifier), T = e.isObjectBindingPattern(oe.name) ? le(oe.name) : void 0; + if (f || T) + return { allowSyntheticDefaults: e.getAllowSyntheticDefaultImports(p.getCompilerOptions()), defaultImportName: f, namedImports: T, statement: e.cast(oe.parent.parent, e.isVariableStatement), required: e.first(G.arguments) }; + } + function le(N) { + for (var p = [], m = 0, G = N.elements; m < G.length; m++) { + var oe = G[m]; + if (!e.isIdentifier(oe.name) || oe.initializer) + return; + p.push(e.factory.createImportSpecifier(false, e.tryCast(oe.propertyName, e.isIdentifier), oe.name)); + } + if (p.length) + return e.factory.createNamedImports(p); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "useDefaultImport", B = [e.Diagnostics.Import_may_be_converted_to_a_default_import.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = le.sourceFile, p = le.span.start, m = E(N, p); + if (!!m) { + var G = e.textChanges.ChangeTracker.with(le, function(oe) { + return Q(oe, N, m, le.preferences); + }); + return [C.createCodeFixAction(w, G, e.Diagnostics.Convert_to_default_import, w, e.Diagnostics.Convert_all_to_default_imports)]; + } + }, fixIds: [w], getAllCodeActions: function(le) { + return C.codeFixAll(le, B, function(N, p) { + var m = E(p.file, p.start); + m && Q(N, p.file, m, le.preferences); + }); + } }); + function E(le, N) { + var p = e.getTokenAtPosition(le, N); + if (!!e.isIdentifier(p)) { + var m = p.parent; + if (e.isImportEqualsDeclaration(m) && e.isExternalModuleReference(m.moduleReference)) + return { importNode: m, name: p, moduleSpecifier: m.moduleReference.expression }; + if (e.isNamespaceImport(m)) { + var G = m.parent.parent; + return { importNode: G, name: p, moduleSpecifier: G.moduleSpecifier }; + } + } + } + function Q(le, N, p, m) { + le.replaceNode(N, p.importNode, e.makeImport(p.name, void 0, p.moduleSpecifier, e.getQuotePreference(N, m))); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "useBigintLiteral", B = [e.Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = e.textChanges.ChangeTracker.with(le, function(p) { + return E(p, le.sourceFile, le.span); + }); + if (N.length > 0) + return [C.createCodeFixAction(w, N, e.Diagnostics.Convert_to_a_bigint_numeric_literal, w, e.Diagnostics.Convert_all_to_bigint_numeric_literals)]; + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le, N) { + return E(le, N.file, N); + }); + } }); + function E(Q, le, N) { + var p = e.tryCast(e.getTokenAtPosition(le, N.start), e.isNumericLiteral); + if (!!p) { + var m = p.getText(le) + "n"; + Q.replaceNode(le, p, e.factory.createBigIntLiteral(m)); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixAddModuleReferTypeMissingTypeof", B = w, E = [e.Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; + C.registerCodeFix({ errorCodes: E, getCodeActions: function(p) { + var m = p.sourceFile, G = p.span, oe = Q(m, G.start), f = e.textChanges.ChangeTracker.with(p, function(T) { + return le(T, m, oe); + }); + return [C.createCodeFixAction(B, f, e.Diagnostics.Add_missing_typeof, B, e.Diagnostics.Add_missing_typeof)]; + }, fixIds: [B], getAllCodeActions: function(N) { + return C.codeFixAll(N, E, function(p, m) { + return le(p, N.sourceFile, Q(m.file, m.start)); + }); + } }); + function Q(N, p) { + var m = e.getTokenAtPosition(N, p); + return e.Debug.assert(m.kind === 100, "This token should be an ImportKeyword"), e.Debug.assert(m.parent.kind === 200, "Token parent should be an ImportType"), m.parent; + } + function le(N, p, m) { + var G = e.factory.updateImportTypeNode(m, m.argument, m.qualifier, m.typeArguments, true); + N.replaceNode(p, m, G); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "wrapJsxInFragment", B = [e.Diagnostics.JSX_expressions_must_have_one_parent_element.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(p) { + var m = p.sourceFile, G = p.span, oe = E(m, G.start); + if (!!oe) { + var f = e.textChanges.ChangeTracker.with(p, function(T) { + return Q(T, m, oe); + }); + return [C.createCodeFixAction(w, f, e.Diagnostics.Wrap_in_JSX_fragment, w, e.Diagnostics.Wrap_all_unparented_JSX_in_JSX_fragment)]; + } + }, fixIds: [w], getAllCodeActions: function(N) { + return C.codeFixAll(N, B, function(p, m) { + var G = E(N.sourceFile, m.start); + !G || Q(p, N.sourceFile, G); + }); + } }); + function E(N, p) { + var m = e.getTokenAtPosition(N, p), G = m.parent, oe = G.parent; + if (!(!e.isBinaryExpression(oe) && (oe = oe.parent, !e.isBinaryExpression(oe))) && !!e.nodeIsMissing(oe.operatorToken)) + return oe; + } + function Q(N, p, m) { + var G = le(m); + G && N.replaceNode(p, m, e.factory.createJsxFragment(e.factory.createJsxOpeningFragment(), G, e.factory.createJsxJsxClosingFragment())); + } + function le(N) { + for (var p = [], m = N; ; ) + if (e.isBinaryExpression(m) && e.nodeIsMissing(m.operatorToken) && m.operatorToken.kind === 27) { + if (p.push(m.left), e.isJsxChild(m.right)) + return p.push(m.right), p; + if (e.isBinaryExpression(m.right)) { + m = m.right; + continue; + } else + return; + } else + return; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixConvertToMappedObjectType", B = [e.Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(p) { + var m = p.sourceFile, G = p.span, oe = E(m, G.start); + if (!!oe) { + var f = e.textChanges.ChangeTracker.with(p, function(K) { + return le(K, m, oe); + }), T = e.idText(oe.container.name); + return [C.createCodeFixAction(w, f, [e.Diagnostics.Convert_0_to_mapped_object_type, T], w, [e.Diagnostics.Convert_0_to_mapped_object_type, T])]; + } + }, fixIds: [w], getAllCodeActions: function(N) { + return C.codeFixAll(N, B, function(p, m) { + var G = E(m.file, m.start); + G && le(p, m.file, G); + }); + } }); + function E(N, p) { + var m = e.getTokenAtPosition(N, p), G = e.tryCast(m.parent.parent, e.isIndexSignatureDeclaration); + if (!!G) { + var oe = e.isInterfaceDeclaration(G.parent) ? G.parent : e.tryCast(G.parent.parent, e.isTypeAliasDeclaration); + if (!!oe) + return { indexSignature: G, container: oe }; + } + } + function Q(N, p) { + return e.factory.createTypeAliasDeclaration(N.decorators, N.modifiers, N.name, N.typeParameters, p); + } + function le(N, p, m) { + var G = m.indexSignature, oe = m.container, f = e.isInterfaceDeclaration(oe) ? oe.members : oe.type.members, T = f.filter(function(ie) { + return !e.isIndexSignatureDeclaration(ie); + }), K = e.first(G.parameters), b = e.factory.createTypeParameterDeclaration(void 0, e.cast(K.name, e.isIdentifier), K.type), se = e.factory.createMappedTypeNode(e.hasEffectiveReadonlyModifier(G) ? e.factory.createModifier(145) : void 0, b, void 0, G.questionToken, G.type, void 0), J = e.factory.createIntersectionTypeNode(Ve(Ve(Ve([], e.getAllSuperTypeNodes(oe), true), [se], false), T.length ? [e.factory.createTypeLiteralNode(T)] : e.emptyArray, true)); + N.replaceNode(p, oe, Q(oe, J)); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "removeAccidentalCallParentheses", B = [e.Diagnostics.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(E) { + var Q = e.findAncestor(e.getTokenAtPosition(E.sourceFile, E.span.start), e.isCallExpression); + if (!!Q) { + var le = e.textChanges.ChangeTracker.with(E, function(N) { + N.deleteRange(E.sourceFile, { pos: Q.expression.end, end: Q.end }); + }); + return [C.createCodeFixActionWithoutFixAll(w, le, e.Diagnostics.Remove_parentheses)]; + } + }, fixIds: [w] }); + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "removeUnnecessaryAwait", B = [e.Diagnostics.await_has_no_effect_on_the_type_of_this_expression.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(le) { + var N = e.textChanges.ChangeTracker.with(le, function(p) { + return E(p, le.sourceFile, le.span); + }); + if (N.length > 0) + return [C.createCodeFixAction(w, N, e.Diagnostics.Remove_unnecessary_await, w, e.Diagnostics.Remove_all_unnecessary_uses_of_await)]; + }, fixIds: [w], getAllCodeActions: function(Q) { + return C.codeFixAll(Q, B, function(le, N) { + return E(le, N.file, N); + }); + } }); + function E(Q, le, N) { + var p = e.tryCast(e.getTokenAtPosition(le, N.start), function(K) { + return K.kind === 132; + }), m = p && e.tryCast(p.parent, e.isAwaitExpression); + if (!!m) { + var G = m, oe = e.isParenthesizedExpression(m.parent); + if (oe) { + var f = e.getLeftmostExpression(m.expression, false); + if (e.isIdentifier(f)) { + var T = e.findPrecedingToken(m.parent.pos, le); + T && T.kind !== 103 && (G = m.parent); + } + } + Q.replaceNode(le, G, m.expression); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = [e.Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code], B = "splitTypeOnlyImport"; + C.registerCodeFix({ errorCodes: w, fixIds: [B], getCodeActions: function(N) { + var p = e.textChanges.ChangeTracker.with(N, function(m) { + return Q(m, E(N.sourceFile, N.span), N); + }); + if (p.length) + return [C.createCodeFixAction(B, p, e.Diagnostics.Split_into_two_separate_import_declarations, B, e.Diagnostics.Split_all_invalid_type_only_imports)]; + }, getAllCodeActions: function(le) { + return C.codeFixAll(le, w, function(N, p) { + Q(N, E(le.sourceFile, p), le); + }); + } }); + function E(le, N) { + return e.findAncestor(e.getTokenAtPosition(le, N.start), e.isImportDeclaration); + } + function Q(le, N, p) { + if (!!N) { + var m = e.Debug.checkDefined(N.importClause); + le.replaceNode(p.sourceFile, N, e.factory.updateImportDeclaration(N, N.decorators, N.modifiers, e.factory.updateImportClause(m, m.isTypeOnly, m.name, void 0), N.moduleSpecifier, N.assertClause)), le.insertNodeAfter(p.sourceFile, N, e.factory.createImportDeclaration(void 0, void 0, e.factory.updateImportClause(m, m.isTypeOnly, void 0, m.namedBindings), N.moduleSpecifier, N.assertClause)); + } + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixConvertConstToLet", B = [e.Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; + C.registerCodeFix({ errorCodes: B, getCodeActions: function(N) { + var p = N.sourceFile, m = N.span, G = N.program, oe = E(p, m.start, G); + if (oe !== void 0) { + var f = e.textChanges.ChangeTracker.with(N, function(T) { + return Q(T, p, oe); + }); + return [C.createCodeFixAction(w, f, e.Diagnostics.Convert_const_to_let, w, e.Diagnostics.Convert_const_to_let)]; + } + }, fixIds: [w] }); + function E(le, N, p) { + var m, G = p.getTypeChecker(), oe = G.getSymbolAtLocation(e.getTokenAtPosition(le, N)), f = e.tryCast((m = oe == null ? void 0 : oe.valueDeclaration) === null || m === void 0 ? void 0 : m.parent, e.isVariableDeclarationList); + if (f !== void 0) { + var T = e.findChildOfKind(f, 85, le); + if (T !== void 0) + return e.createRange(T.pos, T.end); + } + } + function Q(le, N, p) { + le.replaceRangeWithText(N, p, "let"); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "fixExpectedComma", B = e.Diagnostics._0_expected.code, E = [B]; + C.registerCodeFix({ errorCodes: E, getCodeActions: function(N) { + var p = N.sourceFile, m = Q(p, N.span.start, N.errorCode); + if (!!m) { + var G = e.textChanges.ChangeTracker.with(N, function(oe) { + return le(oe, p, m); + }); + return [C.createCodeFixAction(w, G, [e.Diagnostics.Change_0_to_1, ";", ","], w, [e.Diagnostics.Change_0_to_1, ";", ","])]; + } + }, fixIds: [w], getAllCodeActions: function(N) { + return C.codeFixAll(N, E, function(p, m) { + var G = Q(m.file, m.start, m.code); + G && le(p, N.sourceFile, G); + }); + } }); + function Q(N, p, m) { + var G = e.getTokenAtPosition(N, p); + return G.kind === 26 && G.parent && (e.isObjectLiteralExpression(G.parent) || e.isArrayLiteralExpression(G.parent)) ? { node: G } : void 0; + } + function le(N, p, m) { + var G = m.node, oe = e.factory.createToken(27); + N.replaceNode(p, G, oe); + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "addVoidToPromise", B = "addVoidToPromise", E = [e.Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments.code, e.Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise.code]; + C.registerCodeFix({ errorCodes: E, fixIds: [B], getCodeActions: function(N) { + var p = e.textChanges.ChangeTracker.with(N, function(m) { + return Q(m, N.sourceFile, N.span, N.program); + }); + if (p.length > 0) + return [C.createCodeFixAction(w, p, e.Diagnostics.Add_void_to_Promise_resolved_without_a_value, B, e.Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; + }, getAllCodeActions: function(N) { + return C.codeFixAll(N, E, function(p, m) { + return Q(p, m.file, m, N.program, new e.Set()); + }); + } }); + function Q(N, p, m, G, oe) { + var f = e.getTokenAtPosition(p, m.start); + if (!(!e.isIdentifier(f) || !e.isCallExpression(f.parent) || f.parent.expression !== f || f.parent.arguments.length !== 0)) { + var T = G.getTypeChecker(), K = T.getSymbolAtLocation(f), b = K == null ? void 0 : K.valueDeclaration; + if (!(!b || !e.isParameter(b) || !e.isNewExpression(b.parent.parent)) && !(oe != null && oe.has(b))) { + oe == null || oe.add(b); + var se = le(b.parent.parent); + if (e.some(se)) { + var J = se[0], ie = !e.isUnionTypeNode(J) && !e.isParenthesizedTypeNode(J) && e.isParenthesizedTypeNode(e.factory.createUnionTypeNode([J, e.factory.createKeywordTypeNode(114)]).types[0]); + ie && N.insertText(p, J.pos, "("), N.insertText(p, J.end, ie ? ") | void" : " | void"); + } else { + var R = T.getResolvedSignature(f.parent), q = R == null ? void 0 : R.parameters[0], O = q && T.getTypeOfSymbolAtLocation(q, b.parent.parent); + e.isInJSFile(b) ? (!O || O.flags & 3) && (N.insertText(p, b.parent.parent.end, ")"), N.insertText(p, e.skipTrivia(p.text, b.parent.parent.pos), "/** @type {Promise} */(")) : (!O || O.flags & 2) && N.insertText(p, b.parent.parent.expression.end, ""); + } + } + } + } + function le(N) { + var p; + if (e.isInJSFile(N)) { + if (e.isParenthesizedExpression(N.parent)) { + var m = (p = e.getJSDocTypeTag(N.parent)) === null || p === void 0 ? void 0 : p.typeExpression.type; + if (m && e.isTypeReferenceNode(m) && e.isIdentifier(m.typeName) && e.idText(m.typeName) === "Promise") + return m.typeArguments; + } + } else + return N.typeArguments; + } + })(a = e.codefix || (e.codefix = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "Convert export", B = { name: "Convert default export to named export", description: e.Diagnostics.Convert_default_export_to_named_export.message, kind: "refactor.rewrite.export.named" }, E = { name: "Convert named export to default export", description: e.Diagnostics.Convert_named_export_to_default_export.message, kind: "refactor.rewrite.export.default" }; + C.registerRefactor(w, { kinds: [B.kind, E.kind], getAvailableActions: function(K) { + var b = Q(K, K.triggerReason === "invoked"); + if (!b) + return e.emptyArray; + if (!C.isRefactorErrorInfo(b)) { + var se = b.wasDefault ? B : E; + return [{ name: w, description: se.description, actions: [se] }]; + } + return K.preferences.provideRefactorNotApplicableReason ? [{ name: w, description: e.Diagnostics.Convert_default_export_to_named_export.message, actions: [Ke(Ke({}, B), { notApplicableReason: b.error }), Ke(Ke({}, E), { notApplicableReason: b.error })] }] : e.emptyArray; + }, getEditsForAction: function(K, b) { + e.Debug.assert(b === B.name || b === E.name, "Unexpected action name"); + var se = Q(K); + e.Debug.assert(se && !C.isRefactorErrorInfo(se), "Expected applicable refactor info"); + var J = e.textChanges.ChangeTracker.with(K, function(ie) { + return le(K.file, K.program, se, ie, K.cancellationToken); + }); + return { edits: J, renameFilename: void 0, renameLocation: void 0 }; + } }); + function Q(T, K) { + K === void 0 && (K = true); + var b = T.file, se = T.program, J = e.getRefactorContextSpan(T), ie = e.getTokenAtPosition(b, J.start), R = !!(ie.parent && e.getSyntacticModifierFlags(ie.parent) & 1) && K ? ie.parent : e.getParentNodeInSpan(ie, b, J); + if (!R || !e.isSourceFile(R.parent) && !(e.isModuleBlock(R.parent) && e.isAmbientModule(R.parent.parent))) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_export_statement) }; + var q = e.isSourceFile(R.parent) ? R.parent.symbol : R.parent.parent.symbol, O = e.getSyntacticModifierFlags(R) || (e.isExportAssignment(R) && !R.isExportEquals ? 513 : 0), ve = !!(O & 512); + if (!(O & 1) || !ve && q.exports.has("default")) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.This_file_already_has_a_default_export) }; + var ee = se.getTypeChecker(), he = function($) { + return e.isIdentifier($) && ee.getSymbolAtLocation($) ? void 0 : { error: e.getLocaleSpecificMessage(e.Diagnostics.Can_only_convert_named_export) }; + }; + switch (R.kind) { + case 256: + case 257: + case 258: + case 260: + case 259: + case 261: { + var F = R; + return F.name ? he(F.name) || { exportNode: F, exportName: F.name, wasDefault: ve, exportingModuleSymbol: q } : void 0; + } + case 237: { + var x = R; + if (!(x.declarationList.flags & 2) || x.declarationList.declarations.length !== 1) + return; + var X = e.first(x.declarationList.declarations); + return X.initializer ? (e.Debug.assert(!ve, "Can't have a default flag here"), he(X.name) || { exportNode: x, exportName: X.name, wasDefault: ve, exportingModuleSymbol: q }) : void 0; + } + case 271: { + var F = R; + return F.isExportEquals ? void 0 : he(F.expression) || { exportNode: F, exportName: F.expression, wasDefault: ve, exportingModuleSymbol: q }; + } + default: + return; + } + } + function le(T, K, b, se, J) { + N(T, b, se, K.getTypeChecker()), p(K, b, se, J); + } + function N(T, K, b, se) { + var J = K.wasDefault, ie = K.exportNode, R = K.exportName; + if (J) + if (e.isExportAssignment(ie) && !ie.isExportEquals) { + var q = ie.expression, O = f(q.text, q.text); + b.replaceNode(T, ie, e.factory.createExportDeclaration(void 0, void 0, false, e.factory.createNamedExports([O]))); + } else + b.delete(T, e.Debug.checkDefined(e.findModifier(ie, 88), "Should find a default keyword in modifier list")); + else { + var ve = e.Debug.checkDefined(e.findModifier(ie, 93), "Should find an export keyword in modifier list"); + switch (ie.kind) { + case 256: + case 257: + case 258: + b.insertNodeAfter(T, ve, e.factory.createToken(88)); + break; + case 237: + var ee = e.first(ie.declarationList.declarations); + if (!e.FindAllReferences.Core.isSymbolReferencedInFile(R, se, T) && !ee.type) { + b.replaceNode(T, ie, e.factory.createExportDefault(e.Debug.checkDefined(ee.initializer, "Initializer was previously known to be present"))); + break; + } + case 260: + case 259: + case 261: + b.deleteModifier(T, ve), b.insertNodeAfter(T, ie, e.factory.createExportDefault(e.factory.createIdentifier(R.text))); + break; + default: + e.Debug.fail("Unexpected exportNode kind ".concat(ie.kind)); + } + } + } + function p(T, K, b, se) { + var J = K.wasDefault, ie = K.exportName, R = K.exportingModuleSymbol, q = T.getTypeChecker(), O = e.Debug.checkDefined(q.getSymbolAtLocation(ie), "Export name should resolve to a symbol"); + e.FindAllReferences.Core.eachExportReference(T.getSourceFiles(), q, se, O, R, ie.text, J, function(ve) { + var ee = ve.getSourceFile(); + J ? m(ee, ve, b, ie.text) : G(ee, ve, b); + }); + } + function m(T, K, b, se) { + var J = K.parent; + switch (J.kind) { + case 206: + b.replaceNode(T, K, e.factory.createIdentifier(se)); + break; + case 270: + case 275: { + var ie = J; + b.replaceNode(T, ie, oe(se, ie.name.text)); + break; + } + case 267: { + var R = J; + e.Debug.assert(R.name === K, "Import clause name should match provided ref"); + var ie = oe(se, K.text), q = R.namedBindings; + if (!q) + b.replaceNode(T, K, e.factory.createNamedImports([ie])); + else if (q.kind === 268) { + b.deleteRange(T, { pos: K.getStart(T), end: q.getStart(T) }); + var O = e.isStringLiteral(R.parent.moduleSpecifier) ? e.quotePreferenceFromString(R.parent.moduleSpecifier, T) : 1, ve = e.makeImport(void 0, [oe(se, K.text)], R.parent.moduleSpecifier, O); + b.insertNodeAfter(T, R.parent, ve); + } else + b.delete(T, K), b.insertNodeAtEndOfList(T, q.elements, ie); + break; + } + case 200: + var ee = J; + b.replaceNode(T, J, e.factory.createImportTypeNode(ee.argument, e.factory.createIdentifier(se), ee.typeArguments, ee.isTypeOf)); + break; + default: + e.Debug.failBadSyntaxKind(J); + } + } + function G(T, K, b) { + var se = K.parent; + switch (se.kind) { + case 206: + b.replaceNode(T, K, e.factory.createIdentifier("default")); + break; + case 270: { + var J = e.factory.createIdentifier(se.name.text); + se.parent.elements.length === 1 ? b.replaceNode(T, se.parent, J) : (b.delete(T, se), b.insertNodeBefore(T, se.parent, J)); + break; + } + case 275: { + b.replaceNode(T, se, f("default", se.name.text)); + break; + } + default: + e.Debug.assertNever(se, "Unexpected parent kind ".concat(se.kind)); + } + } + function oe(T, K) { + return e.factory.createImportSpecifier(false, T === K ? void 0 : e.factory.createIdentifier(T), e.factory.createIdentifier(K)); + } + function f(T, K) { + return e.factory.createExportSpecifier(false, T === K ? void 0 : e.factory.createIdentifier(T), e.factory.createIdentifier(K)); + } + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w, B = "Convert import", E = (w = {}, w[0] = { name: "Convert namespace import to named imports", description: e.Diagnostics.Convert_namespace_import_to_named_imports.message, kind: "refactor.rewrite.import.named" }, w[2] = { name: "Convert named imports to namespace import", description: e.Diagnostics.Convert_named_imports_to_namespace_import.message, kind: "refactor.rewrite.import.namespace" }, w[1] = { name: "Convert named imports to default import", description: e.Diagnostics.Convert_named_imports_to_default_import.message, kind: "refactor.rewrite.import.default" }, w); + C.registerRefactor(B, { kinds: e.getOwnValues(E).map(function(K) { + return K.kind; + }), getAvailableActions: function(b) { + var se = Q(b, b.triggerReason === "invoked"); + if (!se) + return e.emptyArray; + if (!C.isRefactorErrorInfo(se)) { + var J = E[se.convertTo]; + return [{ name: B, description: J.description, actions: [J] }]; + } + return b.preferences.provideRefactorNotApplicableReason ? e.getOwnValues(E).map(function(ie) { + return { name: B, description: ie.description, actions: [Ke(Ke({}, ie), { notApplicableReason: se.error })] }; + }) : e.emptyArray; + }, getEditsForAction: function(b, se) { + e.Debug.assert(e.some(e.getOwnValues(E), function(R) { + return R.name === se; + }), "Unexpected action name"); + var J = Q(b); + e.Debug.assert(J && !C.isRefactorErrorInfo(J), "Expected applicable refactor info"); + var ie = e.textChanges.ChangeTracker.with(b, function(R) { + return N(b.file, b.program, R, J); + }); + return { edits: ie, renameFilename: void 0, renameLocation: void 0 }; + } }); + function Q(K, b) { + b === void 0 && (b = true); + var se = K.file, J = e.getRefactorContextSpan(K), ie = e.getTokenAtPosition(se, J.start), R = b ? e.findAncestor(ie, e.isImportDeclaration) : e.getParentNodeInSpan(ie, se, J); + if (!R || !e.isImportDeclaration(R)) + return { error: "Selection is not an import declaration." }; + var q = J.start + J.length, O = e.findNextToken(R, R.parent, se); + if (!(O && q > O.getStart())) { + var ve = R.importClause; + if (!ve) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_import_clause) }; + if (!ve.namedBindings) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_namespace_import_or_named_imports) }; + if (ve.namedBindings.kind === 268) + return { convertTo: 0, import: ve.namedBindings }; + var ee = le(K.program, ve); + return ee ? { convertTo: 1, import: ve.namedBindings } : { convertTo: 2, import: ve.namedBindings }; + } + } + function le(K, b) { + return e.getAllowSyntheticDefaultImports(K.getCompilerOptions()) && f(b.parent.moduleSpecifier, K.getTypeChecker()); + } + function N(K, b, se, J) { + var ie = b.getTypeChecker(); + J.convertTo === 0 ? p(K, ie, se, J.import, e.getAllowSyntheticDefaultImports(b.getCompilerOptions())) : oe(K, b, se, J.import, J.convertTo === 1); + } + function p(K, b, se, J, ie) { + var R = false, q = [], O = new e.Map(); + e.FindAllReferences.Core.eachSymbolReferenceInFile(J.name, b, K, function(y) { + if (!e.isPropertyAccessOrQualifiedName(y.parent)) + R = true; + else { + var V = m(y.parent).text; + b.resolveName(V, y, 67108863, true) && O.set(V, true), e.Debug.assert(G(y.parent) === y, "Parent expression should match id"), q.push(y.parent); + } + }); + for (var ve = new e.Map(), ee = 0, he = q; ee < he.length; ee++) { + var F = he[ee], x = m(F).text, X = ve.get(x); + X === void 0 && ve.set(x, X = O.has(x) ? e.getUniqueName(x, K) : x), se.replaceNode(K, F, e.factory.createIdentifier(X)); + } + var $ = []; + ve.forEach(function(y, V) { + $.push(e.factory.createImportSpecifier(false, y === V ? void 0 : e.factory.createIdentifier(V), e.factory.createIdentifier(y))); + }); + var A = J.parent.parent; + R && !ie ? se.insertNodeAfter(K, A, T(A, void 0, $)) : se.replaceNode(K, A, T(A, R ? e.factory.createIdentifier(J.name.text) : void 0, $)); + } + function m(K) { + return e.isPropertyAccessExpression(K) ? K.name : K.right; + } + function G(K) { + return e.isPropertyAccessExpression(K) ? K.expression : K.left; + } + function oe(K, b, se, J, ie) { + ie === void 0 && (ie = le(b, J.parent)); + var R = b.getTypeChecker(), q = J.parent.parent, O = q.moduleSpecifier, ve = new e.Set(); + J.elements.forEach(function(P) { + var k = R.getSymbolAtLocation(P.name); + k && ve.add(k); + }); + var ee = O && e.isStringLiteral(O) ? e.codefix.moduleSpecifierToValidIdentifier(O.text, 99) : "module"; + function he(P) { + return !!e.FindAllReferences.Core.eachSymbolReferenceInFile(P.name, R, K, function(k) { + var Y = R.resolveName(ee, k, 67108863, true); + return Y ? ve.has(Y) ? e.isExportSpecifier(k.parent) : true : false; + }); + } + for (var F = J.elements.some(he), x = F ? e.getUniqueName(ee, K) : ee, X = new e.Set(), $ = function(P) { + var k = (P.propertyName || P.name).text; + e.FindAllReferences.Core.eachSymbolReferenceInFile(P.name, R, K, function(Y) { + var U = e.factory.createPropertyAccessExpression(e.factory.createIdentifier(x), k); + e.isShorthandPropertyAssignment(Y.parent) ? se.replaceNode(K, Y.parent, e.factory.createPropertyAssignment(Y.text, U)) : e.isExportSpecifier(Y.parent) ? X.add(P) : se.replaceNode(K, Y, U); + }); + }, A = 0, y = J.elements; A < y.length; A++) { + var V = y[A]; + $(V); + } + if (se.replaceNode(K, J, ie ? e.factory.createIdentifier(x) : e.factory.createNamespaceImport(e.factory.createIdentifier(x))), X.size) { + var L = e.arrayFrom(X.values()).map(function(P) { + return e.factory.createImportSpecifier(P.isTypeOnly, P.propertyName && e.factory.createIdentifier(P.propertyName.text), e.factory.createIdentifier(P.name.text)); + }); + se.insertNodeAfter(K, J.parent.parent, T(q, void 0, L)); + } + } + C.doChangeNamedToNamespaceOrDefault = oe; + function f(K, b) { + var se = b.resolveExternalModuleName(K); + if (!se) + return false; + var J = b.resolveExternalModuleSymbol(se); + return se !== J; + } + function T(K, b, se) { + return e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, b, se && se.length ? e.factory.createNamedImports(se) : void 0), K.moduleSpecifier, void 0); + } + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Convert to optional chain expression", Q = e.getLocaleSpecificMessage(e.Diagnostics.Convert_to_optional_chain_expression), le = { name: E, description: Q, kind: "refactor.rewrite.expression.optionalChain" }; + C.registerRefactor(E, { kinds: [le.kind], getEditsForAction: p, getAvailableActions: N }); + function N(F) { + var x = f(F, F.triggerReason === "invoked"); + return x ? C.isRefactorErrorInfo(x) ? F.preferences.provideRefactorNotApplicableReason ? [{ name: E, description: Q, actions: [Ke(Ke({}, le), { notApplicableReason: x.error })] }] : e.emptyArray : [{ name: E, description: Q, actions: [le] }] : e.emptyArray; + } + function p(F, x) { + var X = f(F); + e.Debug.assert(X && !C.isRefactorErrorInfo(X), "Expected applicable refactor info"); + var $ = e.textChanges.ChangeTracker.with(F, function(A) { + return he(F.file, F.program.getTypeChecker(), A, X, x); + }); + return { edits: $, renameFilename: void 0, renameLocation: void 0 }; + } + function m(F) { + return e.isBinaryExpression(F) || e.isConditionalExpression(F); + } + function G(F) { + return e.isExpressionStatement(F) || e.isReturnStatement(F) || e.isVariableStatement(F); + } + function oe(F) { + return m(F) || G(F); + } + function f(F, x) { + x === void 0 && (x = true); + var X = F.file, $ = F.program, A = e.getRefactorContextSpan(F), y = A.length === 0; + if (!(y && !x)) { + var V = e.getTokenAtPosition(X, A.start), L = e.findTokenOnLeftOfPosition(X, A.start + A.length), P = e.createTextSpanFromBounds(V.pos, L && L.end >= V.pos ? L.getEnd() : V.getEnd()), k = y ? q(V) : R(V, P), Y = k && oe(k) ? O(k) : void 0; + if (!Y) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_convertible_access_expression) }; + var U = $.getTypeChecker(); + return e.isConditionalExpression(Y) ? T(Y, U) : K(Y); + } + } + function T(F, x) { + var X = F.condition, $ = ve(F.whenTrue); + if (!$ || x.isNullableType(x.getTypeAtLocation($))) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_convertible_access_expression) }; + if ((e.isPropertyAccessExpression(X) || e.isIdentifier(X)) && se(X, $.expression)) + return { finalExpression: $, occurrences: [X], expression: F }; + if (e.isBinaryExpression(X)) { + var A = b($.expression, X); + return A ? { finalExpression: $, occurrences: A, expression: F } : { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_matching_access_expressions) }; + } + } + function K(F) { + if (F.operatorToken.kind !== 55) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Can_only_convert_logical_AND_access_chains) }; + var x = ve(F.right); + if (!x) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_convertible_access_expression) }; + var X = b(x.expression, F.left); + return X ? { finalExpression: x, occurrences: X, expression: F } : { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_matching_access_expressions) }; + } + function b(F, x) { + for (var X = []; e.isBinaryExpression(x) && x.operatorToken.kind === 55; ) { + var $ = se(e.skipParentheses(F), e.skipParentheses(x.right)); + if (!$) + break; + X.push($), F = $, x = x.left; + } + var A = se(F, x); + return A && X.push(A), X.length > 0 ? X : void 0; + } + function se(F, x) { + if (!(!e.isIdentifier(x) && !e.isPropertyAccessExpression(x) && !e.isElementAccessExpression(x))) + return J(F, x) ? x : void 0; + } + function J(F, x) { + for (; (e.isCallExpression(F) || e.isPropertyAccessExpression(F) || e.isElementAccessExpression(F)) && ie(F) !== ie(x); ) + F = F.expression; + for (; e.isPropertyAccessExpression(F) && e.isPropertyAccessExpression(x) || e.isElementAccessExpression(F) && e.isElementAccessExpression(x); ) { + if (ie(F) !== ie(x)) + return false; + F = F.expression, x = x.expression; + } + return e.isIdentifier(F) && e.isIdentifier(x) && F.getText() === x.getText(); + } + function ie(F) { + if (e.isIdentifier(F) || e.isStringOrNumericLiteralLike(F)) + return F.getText(); + if (e.isPropertyAccessExpression(F)) + return ie(F.name); + if (e.isElementAccessExpression(F)) + return ie(F.argumentExpression); + } + function R(F, x) { + for (; F.parent; ) { + if (oe(F) && x.length !== 0 && F.end >= x.start + x.length) + return F; + F = F.parent; + } + } + function q(F) { + for (; F.parent; ) { + if (oe(F) && !oe(F.parent)) + return F; + F = F.parent; + } + } + function O(F) { + if (m(F)) + return F; + if (e.isVariableStatement(F)) { + var x = e.getSingleVariableOfVariableStatement(F), X = x == null ? void 0 : x.initializer; + return X && m(X) ? X : void 0; + } + return F.expression && m(F.expression) ? F.expression : void 0; + } + function ve(F) { + if (F = e.skipParentheses(F), e.isBinaryExpression(F)) + return ve(F.left); + if ((e.isPropertyAccessExpression(F) || e.isElementAccessExpression(F) || e.isCallExpression(F)) && !e.isOptionalChain(F)) + return F; + } + function ee(F, x, X) { + if (e.isPropertyAccessExpression(x) || e.isElementAccessExpression(x) || e.isCallExpression(x)) { + var $ = ee(F, x.expression, X), A = X.length > 0 ? X[X.length - 1] : void 0, y = (A == null ? void 0 : A.getText()) === x.expression.getText(); + if (y && X.pop(), e.isCallExpression(x)) + return y ? e.factory.createCallChain($, e.factory.createToken(28), x.typeArguments, x.arguments) : e.factory.createCallChain($, x.questionDotToken, x.typeArguments, x.arguments); + if (e.isPropertyAccessExpression(x)) + return y ? e.factory.createPropertyAccessChain($, e.factory.createToken(28), x.name) : e.factory.createPropertyAccessChain($, x.questionDotToken, x.name); + if (e.isElementAccessExpression(x)) + return y ? e.factory.createElementAccessChain($, e.factory.createToken(28), x.argumentExpression) : e.factory.createElementAccessChain($, x.questionDotToken, x.argumentExpression); + } + return x; + } + function he(F, x, X, $, A) { + var y = $.finalExpression, V = $.occurrences, L = $.expression, P = V[V.length - 1], k = ee(x, y, V); + k && (e.isPropertyAccessExpression(k) || e.isElementAccessExpression(k) || e.isCallExpression(k)) && (e.isBinaryExpression(L) ? X.replaceNodeRange(F, P, y, k) : e.isConditionalExpression(L) && X.replaceNode(F, L, e.factory.createBinaryExpression(k, e.factory.createToken(60), L.whenFalse))); + } + })(w = C.convertToOptionalChainExpression || (C.convertToOptionalChainExpression = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Convert overload list to single signature", Q = e.Diagnostics.Convert_overload_list_to_single_signature.message, le = { name: E, description: Q, kind: "refactor.rewrite.function.overloadList" }; + C.registerRefactor(E, { kinds: [le.kind], getEditsForAction: p, getAvailableActions: N }); + function N(oe) { + var f = oe.file, T = oe.startPosition, K = oe.program, b = G(f, T, K); + return b ? [{ name: E, description: Q, actions: [le] }] : e.emptyArray; + } + function p(oe) { + var f = oe.file, T = oe.startPosition, K = oe.program, b = G(f, T, K); + if (!b) + return; + var se = K.getTypeChecker(), J = b[b.length - 1], ie = J; + switch (J.kind) { + case 168: { + ie = e.factory.updateMethodSignature(J, J.modifiers, J.name, J.questionToken, J.typeParameters, q(b), J.type); + break; + } + case 169: { + ie = e.factory.updateMethodDeclaration(J, J.decorators, J.modifiers, J.asteriskToken, J.name, J.questionToken, J.typeParameters, q(b), J.type, J.body); + break; + } + case 174: { + ie = e.factory.updateCallSignature(J, J.typeParameters, q(b), J.type); + break; + } + case 171: { + ie = e.factory.updateConstructorDeclaration(J, J.decorators, J.modifiers, q(b), J.body); + break; + } + case 175: { + ie = e.factory.updateConstructSignature(J, J.typeParameters, q(b), J.type); + break; + } + case 256: { + ie = e.factory.updateFunctionDeclaration(J, J.decorators, J.modifiers, J.asteriskToken, J.name, J.typeParameters, q(b), J.type, J.body); + break; + } + default: + return e.Debug.failBadSyntaxKind(J, "Unhandled signature kind in overload list conversion refactoring"); + } + if (ie === J) + return; + var R = e.textChanges.ChangeTracker.with(oe, function(ee) { + ee.replaceNodeRange(f, b[0], b[b.length - 1], ie); + }); + return { renameFilename: void 0, renameLocation: void 0, edits: R }; + function q(ee) { + var he = ee[ee.length - 1]; + return e.isFunctionLikeDeclaration(he) && he.body && (ee = ee.slice(0, ee.length - 1)), e.factory.createNodeArray([e.factory.createParameterDeclaration(void 0, void 0, e.factory.createToken(25), "args", void 0, e.factory.createUnionTypeNode(e.map(ee, O)))]); + } + function O(ee) { + var he = e.map(ee.parameters, ve); + return e.setEmitFlags(e.factory.createTupleTypeNode(he), e.some(he, function(F) { + return !!e.length(e.getSyntheticLeadingComments(F)); + }) ? 0 : 1); + } + function ve(ee) { + e.Debug.assert(e.isIdentifier(ee.name)); + var he = e.setTextRange(e.factory.createNamedTupleMember(ee.dotDotDotToken, ee.name, ee.questionToken, ee.type || e.factory.createKeywordTypeNode(130)), ee), F = ee.symbol && ee.symbol.getDocumentationComment(se); + if (F) { + var x = e.displayPartsToString(F); + x.length && e.setSyntheticLeadingComments(he, [{ text: `* +`.concat(x.split(` +`).map(function(X) { + return " * ".concat(X); + }).join(` +`), ` + `), kind: 3, pos: -1, end: -1, hasTrailingNewLine: true, hasLeadingNewline: true }]); + } + return he; + } + } + function m(oe) { + switch (oe.kind) { + case 168: + case 169: + case 174: + case 171: + case 175: + case 256: + return true; + } + return false; + } + function G(oe, f, T) { + var K = e.getTokenAtPosition(oe, f), b = e.findAncestor(K, m); + if (!!b) { + var se = T.getTypeChecker(), J = b.symbol; + if (!!J) { + var ie = J.declarations; + if (!(e.length(ie) <= 1) && !!e.every(ie, function(ee) { + return e.getSourceFileOfNode(ee) === oe; + }) && !!m(ie[0])) { + var R = ie[0].kind; + if (!!e.every(ie, function(ee) { + return ee.kind === R; + })) { + var q = ie; + if (!e.some(q, function(ee) { + return !!ee.typeParameters || e.some(ee.parameters, function(he) { + return !!he.decorators || !!he.modifiers || !e.isIdentifier(he.name); + }); + })) { + var O = e.mapDefined(q, function(ee) { + return se.getSignatureFromDeclaration(ee); + }); + if (e.length(O) === e.length(ie)) { + var ve = se.getReturnTypeOfSignature(O[0]); + if (!!e.every(O, function(ee) { + return se.getReturnTypeOfSignature(ee) === ve; + })) + return q; + } + } + } + } + } + } + } + })(w = C.addOrRemoveBracesToArrowFunction || (C.addOrRemoveBracesToArrowFunction = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Extract Symbol", Q = { name: "Extract Constant", description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_constant), kind: "refactor.extract.constant" }, le = { name: "Extract Function", description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_function), kind: "refactor.extract.function" }; + C.registerRefactor(E, { kinds: [Q.kind, le.kind], getEditsForAction: p, getAvailableActions: N }); + function N(Fe) { + var Z = Fe.kind, Be = oe(Fe.file, e.getRefactorContextSpan(Fe), Fe.triggerReason === "invoked"), ge = Be.targetRange; + if (ge === void 0) { + if (!Be.errors || Be.errors.length === 0 || !Fe.preferences.provideRefactorNotApplicableReason) + return e.emptyArray; + var Re = []; + return C.refactorKindBeginsWith(le.kind, Z) && Re.push({ name: E, description: le.description, actions: [Ke(Ke({}, le), { notApplicableReason: Ne(Be.errors) })] }), C.refactorKindBeginsWith(Q.kind, Z) && Re.push({ name: E, description: Q.description, actions: [Ke(Ke({}, Q), { notApplicableReason: Ne(Be.errors) })] }), Re; + } + var ze = ie(ge, Fe); + if (ze === void 0) + return e.emptyArray; + for (var Ee = [], He = new e.Map(), rr, Ie = [], _e = new e.Map(), we, de = 0, ye = 0, Ae = ze; ye < Ae.length; ye++) { + var er = Ae[ye], ir = er.functionExtraction, Cr = er.constantExtraction, Ye = ir.description; + if (C.refactorKindBeginsWith(le.kind, Z) && (ir.errors.length === 0 ? He.has(Ye) || (He.set(Ye, true), Ee.push({ description: Ye, name: "function_scope_".concat(de), kind: le.kind })) : rr || (rr = { description: Ye, name: "function_scope_".concat(de), notApplicableReason: Ne(ir.errors), kind: le.kind })), C.refactorKindBeginsWith(Q.kind, Z)) + if (Cr.errors.length === 0) { + var Br = Cr.description; + _e.has(Br) || (_e.set(Br, true), Ie.push({ description: Br, name: "constant_scope_".concat(de), kind: Q.kind })); + } else + we || (we = { description: Ye, name: "constant_scope_".concat(de), notApplicableReason: Ne(Cr.errors), kind: Q.kind }); + de++; + } + var Er = []; + return Ee.length ? Er.push({ name: E, description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_function), actions: Ee }) : Fe.preferences.provideRefactorNotApplicableReason && rr && Er.push({ name: E, description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_function), actions: [rr] }), Ie.length ? Er.push({ name: E, description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_constant), actions: Ie }) : Fe.preferences.provideRefactorNotApplicableReason && we && Er.push({ name: E, description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_constant), actions: [we] }), Er.length ? Er : e.emptyArray; + function Ne(n) { + var lr = n[0].messageText; + return typeof lr != "string" && (lr = lr.messageText), lr; + } + } + B.getRefactorActionsToExtractSymbol = N; + function p(Fe, Z) { + var Be = oe(Fe.file, e.getRefactorContextSpan(Fe)), ge = Be.targetRange, Re = /^function_scope_(\d+)$/.exec(Z); + if (Re) { + var ze = +Re[1]; + return e.Debug.assert(isFinite(ze), "Expected to parse a finite number from the function scope index"), se(ge, Fe, ze); + } + var Ee = /^constant_scope_(\d+)$/.exec(Z); + if (Ee) { + var ze = +Ee[1]; + return e.Debug.assert(isFinite(ze), "Expected to parse a finite number from the constant scope index"), J(ge, Fe, ze); + } + e.Debug.fail("Unrecognized action name"); + } + B.getRefactorEditsToExtractSymbol = p; + var m; + (function(Fe) { + function Z(Be) { + return { message: Be, code: 0, category: e.DiagnosticCategory.Message, key: Be }; + } + Fe.cannotExtractRange = Z("Cannot extract range."), Fe.cannotExtractImport = Z("Cannot extract import statement."), Fe.cannotExtractSuper = Z("Cannot extract super call."), Fe.cannotExtractJSDoc = Z("Cannot extract JSDoc."), Fe.cannotExtractEmpty = Z("Cannot extract empty range."), Fe.expressionExpected = Z("expression expected."), Fe.uselessConstantType = Z("No reason to extract constant of type."), Fe.statementOrExpressionExpected = Z("Statement or expression expected."), Fe.cannotExtractRangeContainingConditionalBreakOrContinueStatements = Z("Cannot extract range containing conditional break or continue statements."), Fe.cannotExtractRangeContainingConditionalReturnStatement = Z("Cannot extract range containing conditional return statement."), Fe.cannotExtractRangeContainingLabeledBreakOrContinueStatementWithTargetOutsideOfTheRange = Z("Cannot extract range containing labeled break or continue with target outside of the range."), Fe.cannotExtractRangeThatContainsWritesToReferencesLocatedOutsideOfTheTargetRangeInGenerators = Z("Cannot extract range containing writes to references located outside of the target range in generators."), Fe.typeWillNotBeVisibleInTheNewScope = Z("Type will not visible in the new scope."), Fe.functionWillNotBeVisibleInTheNewScope = Z("Function will not visible in the new scope."), Fe.cannotExtractIdentifier = Z("Select more than a single identifier."), Fe.cannotExtractExportedEntity = Z("Cannot extract exported declaration"), Fe.cannotWriteInExpression = Z("Cannot write back side-effects when extracting an expression"), Fe.cannotExtractReadonlyPropertyInitializerOutsideConstructor = Z("Cannot move initialization of read-only class property outside of the constructor"), Fe.cannotExtractAmbientBlock = Z("Cannot extract code from ambient contexts"), Fe.cannotAccessVariablesFromNestedScopes = Z("Cannot access variables from nested scopes"), Fe.cannotExtractToJSClass = Z("Cannot extract constant to a class scope in JS"), Fe.cannotExtractToExpressionArrowFunction = Z("Cannot extract constant to an arrow function without a block"), Fe.cannotExtractFunctionsContainingThisToMethod = Z("Cannot extract functions containing this to method"); + })(m = B.Messages || (B.Messages = {})); + var G; + (function(Fe) { + Fe[Fe.None = 0] = "None", Fe[Fe.HasReturn = 1] = "HasReturn", Fe[Fe.IsGenerator = 2] = "IsGenerator", Fe[Fe.IsAsyncFunction = 4] = "IsAsyncFunction", Fe[Fe.UsesThis = 8] = "UsesThis", Fe[Fe.UsesThisInFunction = 16] = "UsesThisInFunction", Fe[Fe.InStaticRegion = 32] = "InStaticRegion"; + })(G || (G = {})); + function oe(Fe, Z, Be) { + Be === void 0 && (Be = true); + var ge = Z.length; + if (ge === 0 && !Be) + return { errors: [e.createFileDiagnostic(Fe, Z.start, ge, m.cannotExtractEmpty)] }; + var Re = ge === 0 && Be, ze = e.findFirstNonJsxWhitespaceToken(Fe, Z.start), Ee = e.findTokenOnLeftOfPosition(Fe, e.textSpanEnd(Z)), He = ze && Ee && Be ? f(ze, Ee, Fe) : Z, rr = Re ? fe(ze) : e.getParentNodeInSpan(ze, Fe, He), Ie = Re ? rr : e.getParentNodeInSpan(Ee, Fe, He), _e = [], we = G.None, de; + if (!rr || !Ie) + return { errors: [e.createFileDiagnostic(Fe, Z.start, ge, m.cannotExtractRange)] }; + if (rr.flags & 8388608) + return { errors: [e.createFileDiagnostic(Fe, Z.start, ge, m.cannotExtractJSDoc)] }; + if (rr.parent !== Ie.parent) + return { errors: [e.createFileDiagnostic(Fe, Z.start, ge, m.cannotExtractRange)] }; + if (rr !== Ie) { + if (!ne(rr.parent)) + return { errors: [e.createFileDiagnostic(Fe, Z.start, ge, m.cannotExtractRange)] }; + for (var ye = [], Ae = 0, er = rr.parent.statements; Ae < er.length; Ae++) { + var ir = er[Ae]; + if (ir === rr || ye.length) { + var Cr = lr(ir); + if (Cr) + return { errors: Cr }; + ye.push(ir); + } + if (ir === Ie) + break; + } + return ye.length ? { targetRange: { range: ye, facts: we, declarations: _e, thisNode: de } } : { errors: [e.createFileDiagnostic(Fe, Z.start, ge, m.cannotExtractRange)] }; + } + if (e.isReturnStatement(rr) && !rr.expression) + return { errors: [e.createFileDiagnostic(Fe, Z.start, ge, m.cannotExtractRange)] }; + var Ye = Er(rr), Br = Ne(Ye) || lr(Ye); + if (Br) + return { errors: Br }; + return { targetRange: { range: T(Ye), facts: we, declarations: _e, thisNode: de } }; + function Er(be) { + if (e.isReturnStatement(be)) { + if (be.expression) + return be.expression; + } else if (e.isVariableStatement(be) || e.isVariableDeclarationList(be)) { + for (var Ge = e.isVariableStatement(be) ? be.declarationList.declarations : be.declarations, ur = 0, yr = void 0, Ir = 0, wr = Ge; Ir < wr.length; Ir++) { + var Ur = wr[Ir]; + Ur.initializer && (ur++, yr = Ur.initializer); + } + if (ur === 1) + return yr; + } else if (e.isVariableDeclaration(be) && be.initializer) + return be.initializer; + return be; + } + function Ne(be) { + if (e.isIdentifier(e.isExpressionStatement(be) ? be.expression : be)) + return [e.createDiagnosticForNode(be, m.cannotExtractIdentifier)]; + } + function n(be, Ge) { + for (var ur = be; ur !== Ge; ) { + if (ur.kind === 167) { + e.isStatic(ur) && (we |= G.InStaticRegion); + break; + } else if (ur.kind === 164) { + var yr = e.getContainingFunction(ur); + yr.kind === 171 && (we |= G.InStaticRegion); + break; + } else + ur.kind === 169 && e.isStatic(ur) && (we |= G.InStaticRegion); + ur = ur.parent; + } + } + function lr(be) { + var Ge; + if (function(mi) { + mi[mi.None = 0] = "None", mi[mi.Break = 1] = "Break", mi[mi.Continue = 2] = "Continue", mi[mi.Return = 4] = "Return"; + }(Ge || (Ge = {})), e.Debug.assert(be.pos <= be.end, "This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809 (1)"), e.Debug.assert(!e.positionIsSynthesized(be.pos), "This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809 (2)"), !e.isStatement(be) && !(e.isExpressionNode(be) && g(be)) && !We(be)) + return [e.createDiagnosticForNode(be, m.statementOrExpressionExpected)]; + if (be.flags & 16777216) + return [e.createDiagnosticForNode(be, m.cannotExtractAmbientBlock)]; + var ur = e.getContainingClass(be); + ur && n(be, ur); + var yr, Ir = 4, wr; + if (ii(be), we & G.UsesThis) { + var Ur = e.getThisContainer(be, false); + (Ur.kind === 256 || Ur.kind === 169 && Ur.parent.kind === 205 || Ur.kind === 213) && (we |= G.UsesThisInFunction); + } + return yr; + function ii(mi) { + if (yr) + return true; + if (e.isDeclaration(mi)) { + var pe = mi.kind === 254 ? mi.parent.parent : mi; + if (e.hasSyntacticModifier(pe, 1)) + return (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.cannotExtractExportedEntity)), true; + _e.push(mi.symbol); + } + switch (mi.kind) { + case 266: + return (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.cannotExtractImport)), true; + case 271: + return (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.cannotExtractExportedEntity)), true; + case 106: + if (mi.parent.kind === 208) { + var or = e.getContainingClass(mi); + if (or === void 0 || or.pos < Z.start || or.end >= Z.start + Z.length) + return (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.cannotExtractSuper)), true; + } else + we |= G.UsesThis, de = mi; + break; + case 214: + e.forEachChild(mi, function Di(wi) { + if (e.isThis(wi)) + we |= G.UsesThis, de = mi; + else { + if (e.isClassLike(wi) || e.isFunctionLike(wi) && !e.isArrowFunction(wi)) + return false; + e.forEachChild(wi, Di); + } + }); + case 257: + case 256: + e.isSourceFile(mi.parent) && mi.parent.externalModuleIndicator === void 0 && (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.functionWillNotBeVisibleInTheNewScope)); + case 226: + case 213: + case 169: + case 171: + case 172: + case 173: + return false; + } + var qr = Ir; + switch (mi.kind) { + case 239: + Ir = 0; + break; + case 252: + Ir = 0; + break; + case 235: + mi.parent && mi.parent.kind === 252 && mi.parent.finallyBlock === mi && (Ir = 4); + break; + case 290: + case 289: + Ir |= 1; + break; + default: + e.isIterationStatement(mi, false) && (Ir |= 3); + break; + } + switch (mi.kind) { + case 192: + case 108: + we |= G.UsesThis, de = mi; + break; + case 250: { + var si = mi.label; + (wr || (wr = [])).push(si.escapedText), e.forEachChild(mi, ii), wr.pop(); + break; + } + case 246: + case 245: { + var si = mi.label; + si ? e.contains(wr, si.escapedText) || (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.cannotExtractRangeContainingLabeledBreakOrContinueStatementWithTargetOutsideOfTheRange)) : Ir & (mi.kind === 246 ? 1 : 2) || (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.cannotExtractRangeContainingConditionalBreakOrContinueStatements)); + break; + } + case 218: + we |= G.IsAsyncFunction; + break; + case 224: + we |= G.IsGenerator; + break; + case 247: + Ir & 4 ? we |= G.HasReturn : (yr || (yr = [])).push(e.createDiagnosticForNode(mi, m.cannotExtractRangeContainingConditionalReturnStatement)); + break; + default: + e.forEachChild(mi, ii); + break; + } + Ir = qr; + } + } + } + B.getRangeToExtract = oe; + function f(Fe, Z, Be) { + var ge = Fe.getStart(Be), Re = Z.getEnd(); + return Be.text.charCodeAt(Re) === 59 && Re++, { start: ge, length: Re - ge }; + } + function T(Fe) { + if (e.isStatement(Fe)) + return [Fe]; + if (e.isExpressionNode(Fe)) + return e.isExpressionStatement(Fe.parent) ? [Fe.parent] : Fe; + if (We(Fe)) + return Fe; + } + function K(Fe) { + return e.isArrowFunction(Fe) ? e.isFunctionBody(Fe.body) : e.isFunctionLikeDeclaration(Fe) || e.isSourceFile(Fe) || e.isModuleBlock(Fe) || e.isClassLike(Fe); + } + function b(Fe) { + var Z = I(Fe.range) ? e.first(Fe.range) : Fe.range; + if (Fe.facts & G.UsesThis && !(Fe.facts & G.UsesThisInFunction)) { + var Be = e.getContainingClass(Z); + if (Be) { + var ge = e.findAncestor(Z, e.isFunctionLikeDeclaration); + return ge ? [ge, Be] : [Be]; + } + } + for (var Re = []; ; ) + if (Z = Z.parent, Z.kind === 164 && (Z = e.findAncestor(Z, function(ze) { + return e.isFunctionLikeDeclaration(ze); + }).parent), K(Z) && (Re.push(Z), Z.kind === 305)) + return Re; + } + function se(Fe, Z, Be) { + var ge = R(Fe, Z), Re = ge.scopes, ze = ge.readsAndWrites, Ee = ze.target, He = ze.usagesPerScope, rr = ze.functionErrorsPerScope, Ie = ze.exposedVariableDeclarations; + return e.Debug.assert(!rr[Be].length, "The extraction went missing? How?"), Z.cancellationToken.throwIfCancellationRequested(), x(Ee, Re[Be], He[Be], Ie, Fe, Z); + } + function J(Fe, Z, Be) { + var ge = R(Fe, Z), Re = ge.scopes, ze = ge.readsAndWrites, Ee = ze.target, He = ze.usagesPerScope, rr = ze.constantErrorsPerScope, Ie = ze.exposedVariableDeclarations; + e.Debug.assert(!rr[Be].length, "The extraction went missing? How?"), e.Debug.assert(Ie.length === 0, "Extract constant accepted a range containing a variable declaration?"), Z.cancellationToken.throwIfCancellationRequested(); + var _e = e.isExpression(Ee) ? Ee : Ee.statements[0].expression; + return X(_e, Re[Be], He[Be], Fe.facts, Z); + } + function ie(Fe, Z) { + var Be = R(Fe, Z), ge = Be.scopes, Re = Be.readsAndWrites, ze = Re.functionErrorsPerScope, Ee = Re.constantErrorsPerScope, He = ge.map(function(rr, Ie) { + var _e = q(rr), we = O(rr), de = e.isFunctionLikeDeclaration(rr) ? ve(rr) : e.isClassLike(rr) ? ee(rr) : he(rr), ye, Ae; + return de === 1 ? (ye = e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope), [_e, "global"]), Ae = e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope), [we, "global"])) : de === 0 ? (ye = e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope), [_e, "module"]), Ae = e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope), [we, "module"])) : (ye = e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1), [_e, de]), Ae = e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1), [we, de])), Ie === 0 && !e.isClassLike(rr) && (Ae = e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_enclosing_scope), [we])), { functionExtraction: { description: ye, errors: ze[Ie] }, constantExtraction: { description: Ae, errors: Ee[Ie] } }; + }); + return He; + } + function R(Fe, Z) { + var Be = Z.file, ge = b(Fe), Re = l(Fe, Be), ze = D(Fe, ge, Re, Be, Z.program.getTypeChecker(), Z.cancellationToken); + return { scopes: ge, readsAndWrites: ze }; + } + function q(Fe) { + return e.isFunctionLikeDeclaration(Fe) ? "inner function" : e.isClassLike(Fe) ? "method" : "function"; + } + function O(Fe) { + return e.isClassLike(Fe) ? "readonly field" : "constant"; + } + function ve(Fe) { + switch (Fe.kind) { + case 171: + return "constructor"; + case 213: + case 256: + return Fe.name ? "function '".concat(Fe.name.text, "'") : e.ANONYMOUS; + case 214: + return "arrow function"; + case 169: + return "method '".concat(Fe.name.getText(), "'"); + case 172: + return "'get ".concat(Fe.name.getText(), "'"); + case 173: + return "'set ".concat(Fe.name.getText(), "'"); + default: + throw e.Debug.assertNever(Fe, "Unexpected scope kind ".concat(Fe.kind)); + } + } + function ee(Fe) { + return Fe.kind === 257 ? Fe.name ? "class '".concat(Fe.name.text, "'") : "anonymous class declaration" : Fe.name ? "class expression '".concat(Fe.name.text, "'") : "anonymous class expression"; + } + function he(Fe) { + return Fe.kind === 262 ? "namespace '".concat(Fe.parent.name.getText(), "'") : Fe.externalModuleIndicator ? 0 : 1; + } + var F; + (function(Fe) { + Fe[Fe.Module = 0] = "Module", Fe[Fe.Global = 1] = "Global"; + })(F || (F = {})); + function x(Fe, Z, Be, ge, Re, ze) { + var Ee = Be.usages, He = Be.typeParameterUsages, rr = Be.substitutions, Ie = ze.program.getTypeChecker(), _e = e.getEmitScriptTarget(ze.program.getCompilerOptions()), we = e.codefix.createImportAdder(ze.file, ze.program, ze.preferences, ze.host), de = Z.getSourceFile(), ye = e.getUniqueName(e.isClassLike(Z) ? "newMethod" : "newFunction", de), Ae = e.isInJSFile(Z), er = e.factory.createIdentifier(ye), ir, Cr = [], Ye = [], Br; + Ee.forEach(function(xe, vr) { + var mr; + if (!Ae) { + var Ar = Ie.getTypeOfSymbolAtLocation(xe.symbol, xe.node); + Ar = Ie.getBaseTypeOfLiteralType(Ar), mr = e.codefix.typeToAutoImportableTypeNode(Ie, we, Ar, Z, _e, 1); + } + var Oe = e.factory.createParameterDeclaration(void 0, void 0, void 0, vr, void 0, mr); + Cr.push(Oe), xe.usage === 2 && (Br || (Br = [])).push(xe), Ye.push(e.factory.createIdentifier(vr)); + }); + var Er = e.arrayFrom(He.values()).map(function(xe) { + return { type: xe, declaration: A(xe) }; + }), Ne = Er.sort(y), n = Ne.length === 0 ? void 0 : Ne.map(function(xe) { + return xe.declaration; + }), lr = n !== void 0 ? n.map(function(xe) { + return e.factory.createTypeReferenceNode(xe.name, void 0); + }) : void 0; + if (e.isExpression(Fe) && !Ae) { + var be = Ie.getContextualType(Fe); + ir = Ie.typeToTypeNode(be, Z, 1); + } + var Ge = L(Fe, ge, Br, rr, !!(Re.facts & G.HasReturn)), ur = Ge.body, yr = Ge.returnValueProperty; + e.suppressLeadingAndTrailingTrivia(ur); + var Ir, wr = !!(Re.facts & G.UsesThisInFunction); + if (e.isClassLike(Z)) { + var Ur = Ae ? [] : [e.factory.createModifier(121)]; + Re.facts & G.InStaticRegion && Ur.push(e.factory.createModifier(124)), Re.facts & G.IsAsyncFunction && Ur.push(e.factory.createModifier(131)), Ir = e.factory.createMethodDeclaration(void 0, Ur.length ? Ur : void 0, Re.facts & G.IsGenerator ? e.factory.createToken(41) : void 0, er, void 0, n, Cr, ir, ur); + } else + wr && Cr.unshift(e.factory.createParameterDeclaration(void 0, void 0, void 0, "this", void 0, Ie.typeToTypeNode(Ie.getTypeAtLocation(Re.thisNode), Z, 1), void 0)), Ir = e.factory.createFunctionDeclaration(void 0, Re.facts & G.IsAsyncFunction ? [e.factory.createToken(131)] : void 0, Re.facts & G.IsGenerator ? e.factory.createToken(41) : void 0, er, n, Cr, ir, ur); + var ii = e.textChanges.ChangeTracker.fromContext(ze), mi = (I(Re.range) ? e.last(Re.range) : Re.range).end, pe = Y(mi, Z); + pe ? ii.insertNodeBefore(ze.file, pe, Ir, true) : ii.insertNodeAtEndOfScope(ze.file, Z, Ir), we.writeFixes(ii); + var or = [], qr = V(Z, Re, ye); + wr && Ye.unshift(e.factory.createIdentifier("this")); + var si = e.factory.createCallExpression(wr ? e.factory.createPropertyAccessExpression(qr, "call") : qr, lr, Ye); + if (Re.facts & G.IsGenerator && (si = e.factory.createYieldExpression(e.factory.createToken(41), si)), Re.facts & G.IsAsyncFunction && (si = e.factory.createAwaitExpression(si)), ue(Fe) && (si = e.factory.createJsxExpression(void 0, si)), ge.length && !Br) + if (e.Debug.assert(!yr, "Expected no returnValueProperty"), e.Debug.assert(!(Re.facts & G.HasReturn), "Expected RangeFacts.HasReturn flag to be unset"), ge.length === 1) { + var Di = ge[0]; + or.push(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(e.getSynthesizedDeepClone(Di.name), void 0, e.getSynthesizedDeepClone(Di.type), si)], Di.parent.flags))); + } else { + for (var wi = [], Xi = [], et = ge[0].parent.flags, Gi = false, Wt = 0, Zt = ge; Wt < Zt.length; Wt++) { + var Di = Zt[Wt]; + wi.push(e.factory.createBindingElement(void 0, void 0, e.getSynthesizedDeepClone(Di.name))); + var _r = Ie.typeToTypeNode(Ie.getBaseTypeOfLiteralType(Ie.getTypeAtLocation(Di)), Z, 1); + Xi.push(e.factory.createPropertySignature(void 0, Di.symbol.name, void 0, _r)), Gi = Gi || Di.type !== void 0, et = et & Di.parent.flags; + } + var pi = Gi ? e.factory.createTypeLiteralNode(Xi) : void 0; + pi && e.setEmitFlags(pi, 1), or.push(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(e.factory.createObjectBindingPattern(wi), void 0, pi, si)], et))); + } + else if (ge.length || Br) { + if (ge.length) + for (var ae = 0, Xe = ge; ae < Xe.length; ae++) { + var Di = Xe[ae], Jr = Di.parent.flags; + Jr & 2 && (Jr = Jr & -3 | 1), or.push(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(Di.symbol.name, void 0, Je(Di.type))], Jr))); + } + yr && or.push(e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(yr, void 0, Je(ir))], 1))); + var ti = H(ge, Br); + yr && ti.unshift(e.factory.createShorthandPropertyAssignment(yr)), ti.length === 1 ? (e.Debug.assert(!yr, "Shouldn't have returnValueProperty here"), or.push(e.factory.createExpressionStatement(e.factory.createAssignment(ti[0].name, si))), Re.facts & G.HasReturn && or.push(e.factory.createReturnStatement())) : (or.push(e.factory.createExpressionStatement(e.factory.createAssignment(e.factory.createObjectLiteralExpression(ti), si))), yr && or.push(e.factory.createReturnStatement(e.factory.createIdentifier(yr)))); + } else + Re.facts & G.HasReturn ? or.push(e.factory.createReturnStatement(si)) : I(Re.range) ? or.push(e.factory.createExpressionStatement(si)) : or.push(si); + I(Re.range) ? ii.replaceNodeRangeWithNodes(ze.file, e.first(Re.range), e.last(Re.range), or) : ii.replaceNodeWithNodes(ze.file, Re.range, or); + var Ze = ii.getChanges(), Sr = I(Re.range) ? e.first(Re.range) : Re.range, zr = Sr.getSourceFile().fileName, Wr = e.getRenameLocation(Ze, zr, ye, false); + return { renameFilename: zr, renameLocation: Wr, edits: Ze }; + function Je(xe) { + if (xe !== void 0) { + for (var vr = e.getSynthesizedDeepClone(xe), mr = vr; e.isParenthesizedTypeNode(mr); ) + mr = mr.type; + return e.isUnionTypeNode(mr) && e.find(mr.types, function(Ar) { + return Ar.kind === 153; + }) ? vr : e.factory.createUnionTypeNode([vr, e.factory.createKeywordTypeNode(153)]); + } + } + } + function X(Fe, Z, Be, ge, Re) { + var ze, Ee = Be.substitutions, He = Re.program.getTypeChecker(), rr = Z.getSourceFile(), Ie = e.isPropertyAccessExpression(Fe) && !e.isClassLike(Z) && !He.resolveName(Fe.name.text, Fe, 111551, false) && !e.isPrivateIdentifier(Fe.name) && !e.isKeyword(Fe.name.originalKeywordKind) ? Fe.name.text : e.getUniqueName(e.isClassLike(Z) ? "newProperty" : "newLocal", rr), _e = e.isInJSFile(Z), we = _e || !He.isContextSensitive(Fe) ? void 0 : He.typeToTypeNode(He.getContextualType(Fe), Z, 1), de = P(e.skipParentheses(Fe), Ee); + ze = Ge(we, de), we = ze.variableType, de = ze.initializer, e.suppressLeadingAndTrailingTrivia(de); + var ye = e.textChanges.ChangeTracker.fromContext(Re); + if (e.isClassLike(Z)) { + e.Debug.assert(!_e, "Cannot extract to a JS class"); + var Ae = []; + Ae.push(e.factory.createModifier(121)), ge & G.InStaticRegion && Ae.push(e.factory.createModifier(124)), Ae.push(e.factory.createModifier(145)); + var er = e.factory.createPropertyDeclaration(void 0, Ae, Ie, void 0, we, de), ir = e.factory.createPropertyAccessExpression(ge & G.InStaticRegion ? e.factory.createIdentifier(Z.name.getText()) : e.factory.createThis(), e.factory.createIdentifier(Ie)); + ue(Fe) && (ir = e.factory.createJsxExpression(void 0, ir)); + var Cr = Fe.pos, Ye = U(Cr, Z); + ye.insertNodeBefore(Re.file, Ye, er, true), ye.replaceNode(Re.file, Fe, ir); + } else { + var Br = e.factory.createVariableDeclaration(Ie, void 0, we, de), Er = $(Fe, Z); + if (Er) { + ye.insertNodeBefore(Re.file, Er, Br); + var ir = e.factory.createIdentifier(Ie); + ye.replaceNode(Re.file, Fe, ir); + } else if (Fe.parent.kind === 238 && Z === e.findAncestor(Fe, K)) { + var Ne = e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([Br], 2)); + ye.replaceNode(Re.file, Fe.parent, Ne); + } else { + var Ne = e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([Br], 2)), Ye = j(Fe, Z); + if (Ye.pos === 0 ? ye.insertNodeAtTopOfFile(Re.file, Ne, false) : ye.insertNodeBefore(Re.file, Ye, Ne, false), Fe.parent.kind === 238) + ye.delete(Re.file, Fe.parent); + else { + var ir = e.factory.createIdentifier(Ie); + ue(Fe) && (ir = e.factory.createJsxExpression(void 0, ir)), ye.replaceNode(Re.file, Fe, ir); + } + } + } + var n = ye.getChanges(), lr = Fe.getSourceFile().fileName, be = e.getRenameLocation(n, lr, Ie, true); + return { renameFilename: lr, renameLocation: be, edits: n }; + function Ge(ur, yr) { + if (ur === void 0) + return { variableType: ur, initializer: yr }; + if (!e.isFunctionExpression(yr) && !e.isArrowFunction(yr) || !!yr.typeParameters) + return { variableType: ur, initializer: yr }; + var Ir = He.getTypeAtLocation(Fe), wr = e.singleOrUndefined(He.getSignaturesOfType(Ir, 0)); + if (!wr) + return { variableType: ur, initializer: yr }; + if (wr.getTypeParameters()) + return { variableType: ur, initializer: yr }; + for (var Ur = [], ii = false, mi = 0, pe = yr.parameters; mi < pe.length; mi++) { + var or = pe[mi]; + if (or.type) + Ur.push(or); + else { + var qr = He.getTypeAtLocation(or); + qr === He.getAnyType() && (ii = true), Ur.push(e.factory.updateParameterDeclaration(or, or.decorators, or.modifiers, or.dotDotDotToken, or.name, or.questionToken, or.type || He.typeToTypeNode(qr, Z, 1), or.initializer)); + } + } + if (ii) + return { variableType: ur, initializer: yr }; + if (ur = void 0, e.isArrowFunction(yr)) + yr = e.factory.updateArrowFunction(yr, Fe.modifiers, yr.typeParameters, Ur, yr.type || He.typeToTypeNode(wr.getReturnType(), Z, 1), yr.equalsGreaterThanToken, yr.body); + else { + if (wr && !!wr.thisParameter) { + var si = e.firstOrUndefined(Ur); + if (!si || e.isIdentifier(si.name) && si.name.escapedText !== "this") { + var Di = He.getTypeOfSymbolAtLocation(wr.thisParameter, Fe); + Ur.splice(0, 0, e.factory.createParameterDeclaration(void 0, void 0, void 0, "this", void 0, He.typeToTypeNode(Di, Z, 1))); + } + } + yr = e.factory.updateFunctionExpression(yr, Fe.modifiers, yr.asteriskToken, yr.name, yr.typeParameters, Ur, yr.type || He.typeToTypeNode(wr.getReturnType(), Z, 1), yr.body); + } + return { variableType: ur, initializer: yr }; + } + } + function $(Fe, Z) { + for (var Be; Fe !== void 0 && Fe !== Z; ) { + if (e.isVariableDeclaration(Fe) && Fe.initializer === Be && e.isVariableDeclarationList(Fe.parent) && Fe.parent.declarations.length > 1) + return Fe; + Be = Fe, Fe = Fe.parent; + } + } + function A(Fe) { + var Z, Be = Fe.symbol; + if (Be && Be.declarations) + for (var ge = 0, Re = Be.declarations; ge < Re.length; ge++) { + var ze = Re[ge]; + (Z === void 0 || ze.pos < Z.pos) && (Z = ze); + } + return Z; + } + function y(Fe, Z) { + var Be = Fe.type, ge = Fe.declaration, Re = Z.type, ze = Z.declaration; + return e.compareProperties(ge, ze, "pos", e.compareValues) || e.compareStringsCaseSensitive(Be.symbol ? Be.symbol.getName() : "", Re.symbol ? Re.symbol.getName() : "") || e.compareValues(Be.id, Re.id); + } + function V(Fe, Z, Be) { + var ge = e.factory.createIdentifier(Be); + if (e.isClassLike(Fe)) { + var Re = Z.facts & G.InStaticRegion ? e.factory.createIdentifier(Fe.name.text) : e.factory.createThis(); + return e.factory.createPropertyAccessExpression(Re, ge); + } else + return ge; + } + function L(Fe, Z, Be, ge, Re) { + var ze = Be !== void 0 || Z.length > 0; + if (e.isBlock(Fe) && !ze && ge.size === 0) + return { body: e.factory.createBlock(Fe.statements, true), returnValueProperty: void 0 }; + var Ee, He = false, rr = e.factory.createNodeArray(e.isBlock(Fe) ? Fe.statements.slice(0) : [e.isStatement(Fe) ? Fe : e.factory.createReturnStatement(e.skipParentheses(Fe))]); + if (ze || ge.size) { + var Ie = e.visitNodes(rr, we).slice(); + if (ze && !Re && e.isStatement(Fe)) { + var _e = H(Z, Be); + _e.length === 1 ? Ie.push(e.factory.createReturnStatement(_e[0].name)) : Ie.push(e.factory.createReturnStatement(e.factory.createObjectLiteralExpression(_e))); + } + return { body: e.factory.createBlock(Ie, true), returnValueProperty: Ee }; + } else + return { body: e.factory.createBlock(rr, true), returnValueProperty: void 0 }; + function we(de) { + if (!He && e.isReturnStatement(de) && ze) { + var ye = H(Z, Be); + return de.expression && (Ee || (Ee = "__return"), ye.unshift(e.factory.createPropertyAssignment(Ee, e.visitNode(de.expression, we)))), ye.length === 1 ? e.factory.createReturnStatement(ye[0].name) : e.factory.createReturnStatement(e.factory.createObjectLiteralExpression(ye)); + } else { + var Ae = He; + He = He || e.isFunctionLikeDeclaration(de) || e.isClassLike(de); + var er = ge.get(e.getNodeId(de).toString()), ir = er ? e.getSynthesizedDeepClone(er) : e.visitEachChild(de, we, e.nullTransformationContext); + return He = Ae, ir; + } + } + } + function P(Fe, Z) { + return Z.size ? Be(Fe) : Fe; + function Be(ge) { + var Re = Z.get(e.getNodeId(ge).toString()); + return Re ? e.getSynthesizedDeepClone(Re) : e.visitEachChild(ge, Be, e.nullTransformationContext); + } + } + function k(Fe) { + if (e.isFunctionLikeDeclaration(Fe)) { + var Z = Fe.body; + if (e.isBlock(Z)) + return Z.statements; + } else { + if (e.isModuleBlock(Fe) || e.isSourceFile(Fe)) + return Fe.statements; + if (e.isClassLike(Fe)) + return Fe.members; + e.assertType(Fe); + } + return e.emptyArray; + } + function Y(Fe, Z) { + return e.find(k(Z), function(Be) { + return Be.pos >= Fe && e.isFunctionLikeDeclaration(Be) && !e.isConstructorDeclaration(Be); + }); + } + function U(Fe, Z) { + var Be = Z.members; + e.Debug.assert(Be.length > 0, "Found no members"); + for (var ge, Re = true, ze = 0, Ee = Be; ze < Ee.length; ze++) { + var He = Ee[ze]; + if (He.pos > Fe) + return ge || Be[0]; + if (Re && !e.isPropertyDeclaration(He)) { + if (ge !== void 0) + return He; + Re = false; + } + ge = He; + } + return ge === void 0 ? e.Debug.fail() : ge; + } + function j(Fe, Z) { + e.Debug.assert(!e.isClassLike(Z)); + for (var Be, ge = Fe; ge !== Z; ge = ge.parent) + K(ge) && (Be = ge); + for (var ge = (Be || Fe).parent; ; ge = ge.parent) { + if (ne(ge)) { + for (var Re = void 0, ze = 0, Ee = ge.statements; ze < Ee.length; ze++) { + var He = Ee[ze]; + if (He.pos > Fe.pos) + break; + Re = He; + } + return !Re && e.isCaseClause(ge) ? (e.Debug.assert(e.isSwitchStatement(ge.parent.parent), "Grandparent isn't a switch statement"), ge.parent.parent) : e.Debug.checkDefined(Re, "prevStatement failed to get set"); + } + e.Debug.assert(ge !== Z, "Didn't encounter a block-like before encountering scope"); + } + } + function H(Fe, Z) { + var Be = e.map(Fe, function(Re) { + return e.factory.createShorthandPropertyAssignment(Re.symbol.name); + }), ge = e.map(Z, function(Re) { + return e.factory.createShorthandPropertyAssignment(Re.symbol.name); + }); + return Be === void 0 ? ge : ge === void 0 ? Be : Be.concat(ge); + } + function I(Fe) { + return e.isArray(Fe); + } + function l(Fe, Z) { + return I(Fe.range) ? { pos: e.first(Fe.range).getStart(Z), end: e.last(Fe.range).getEnd() } : Fe.range; + } + var d; + (function(Fe) { + Fe[Fe.Read = 1] = "Read", Fe[Fe.Write = 2] = "Write"; + })(d || (d = {})); + function D(Fe, Z, Be, ge, Re, ze) { + var Ee = new e.Map(), He = [], rr = [], Ie = [], _e = [], we = [], de = new e.Map(), ye = [], Ae, er = I(Fe.range) ? Fe.range.length === 1 && e.isExpressionStatement(Fe.range[0]) ? Fe.range[0].expression : void 0 : Fe.range, ir; + if (er === void 0) { + var Cr = Fe.range, Ye = e.first(Cr).getStart(), Br = e.last(Cr).end; + ir = e.createFileDiagnostic(ge, Ye, Br - Ye, m.expressionExpected); + } else + Re.getTypeAtLocation(er).flags & 147456 && (ir = e.createDiagnosticForNode(er, m.uselessConstantType)); + for (var Er = 0, Ne = Z; Er < Ne.length; Er++) { + var n = Ne[Er]; + He.push({ usages: new e.Map(), typeParameterUsages: new e.Map(), substitutions: new e.Map() }), rr.push(new e.Map()), Ie.push([]); + var lr = []; + ir && lr.push(ir), e.isClassLike(n) && e.isInJSFile(n) && lr.push(e.createDiagnosticForNode(n, m.cannotExtractToJSClass)), e.isArrowFunction(n) && !e.isBlock(n.body) && lr.push(e.createDiagnosticForNode(n, m.cannotExtractToExpressionArrowFunction)), _e.push(lr); + } + var be = new e.Map(), Ge = I(Fe.range) ? e.factory.createBlock(Fe.range) : Fe.range, ur = I(Fe.range) ? e.first(Fe.range) : Fe.range, yr = Xi(ur); + if (Gi(Ge), yr && !I(Fe.range) && !e.isJsxAttribute(Fe.range)) { + var Ir = Re.getContextualType(Fe.range); + et(Ir); + } + if (Ee.size > 0) { + for (var wr = new e.Map(), Ur = 0, ii = ur; ii !== void 0 && Ur < Z.length; ii = ii.parent) + if (ii === Z[Ur] && (wr.forEach(function(Xe, Jr) { + He[Ur].typeParameterUsages.set(Jr, Xe); + }), Ur++), e.isDeclarationWithTypeParameters(ii)) + for (var mi = 0, pe = e.getEffectiveTypeParameterDeclarations(ii); mi < pe.length; mi++) { + var or = pe[mi], qr = Re.getTypeAtLocation(or); + Ee.has(qr.id.toString()) && wr.set(qr.id.toString(), qr); + } + e.Debug.assert(Ur === Z.length, "Should have iterated all scopes"); + } + if (we.length) { + var si = e.isBlockScope(Z[0], Z[0].parent) ? Z[0] : e.getEnclosingBlockScopeContainer(Z[0]); + e.forEachChild(si, _r); + } + for (var Di = function(Xe) { + var Jr = He[Xe]; + if (Xe > 0 && (Jr.usages.size > 0 || Jr.typeParameterUsages.size > 0)) { + var ti = I(Fe.range) ? Fe.range[0] : Fe.range; + _e[Xe].push(e.createDiagnosticForNode(ti, m.cannotAccessVariablesFromNestedScopes)); + } + Fe.facts & G.UsesThisInFunction && e.isClassLike(Z[Xe]) && Ie[Xe].push(e.createDiagnosticForNode(Fe.thisNode, m.cannotExtractFunctionsContainingThisToMethod)); + var Ze = false, Sr; + if (He[Xe].usages.forEach(function(Wr) { + Wr.usage === 2 && (Ze = true, Wr.symbol.flags & 106500 && Wr.symbol.valueDeclaration && e.hasEffectiveModifier(Wr.symbol.valueDeclaration, 64) && (Sr = Wr.symbol.valueDeclaration)); + }), e.Debug.assert(I(Fe.range) || ye.length === 0, "No variable declarations expected if something was extracted"), Ze && !I(Fe.range)) { + var zr = e.createDiagnosticForNode(Fe.range, m.cannotWriteInExpression); + Ie[Xe].push(zr), _e[Xe].push(zr); + } else if (Sr && Xe > 0) { + var zr = e.createDiagnosticForNode(Sr, m.cannotExtractReadonlyPropertyInitializerOutsideConstructor); + Ie[Xe].push(zr), _e[Xe].push(zr); + } else if (Ae) { + var zr = e.createDiagnosticForNode(Ae, m.cannotExtractExportedEntity); + Ie[Xe].push(zr), _e[Xe].push(zr); + } + }, wi = 0; wi < Z.length; wi++) + Di(wi); + return { target: Ge, usagesPerScope: He, functionErrorsPerScope: Ie, constantErrorsPerScope: _e, exposedVariableDeclarations: ye }; + function Xi(Xe) { + return !!e.findAncestor(Xe, function(Jr) { + return e.isDeclarationWithTypeParameters(Jr) && e.getEffectiveTypeParameterDeclarations(Jr).length !== 0; + }); + } + function et(Xe) { + for (var Jr = Re.getSymbolWalker(function() { + return ze.throwIfCancellationRequested(), true; + }), ti = Jr.walkType(Xe).visitedTypes, Ze = 0, Sr = ti; Ze < Sr.length; Ze++) { + var zr = Sr[Ze]; + zr.isTypeParameter() && Ee.set(zr.id.toString(), zr); + } + } + function Gi(Xe, Jr) { + if (Jr === void 0 && (Jr = 1), yr) { + var ti = Re.getTypeAtLocation(Xe); + et(ti); + } + if (e.isDeclaration(Xe) && Xe.symbol && we.push(Xe), e.isAssignmentExpression(Xe)) + Gi(Xe.left, 2), Gi(Xe.right); + else if (e.isUnaryExpressionWithWrite(Xe)) + Gi(Xe.operand, 2); + else if (e.isPropertyAccessExpression(Xe) || e.isElementAccessExpression(Xe)) + e.forEachChild(Xe, Gi); + else if (e.isIdentifier(Xe)) { + if (!Xe.parent || e.isQualifiedName(Xe.parent) && Xe !== Xe.parent.left || e.isPropertyAccessExpression(Xe.parent) && Xe !== Xe.parent.expression) + return; + Wt(Xe, Jr, e.isPartOfTypeNode(Xe)); + } else + e.forEachChild(Xe, Gi); + } + function Wt(Xe, Jr, ti) { + var Ze = Zt(Xe, Jr, ti); + if (Ze) + for (var Sr = 0; Sr < Z.length; Sr++) { + var zr = rr[Sr].get(Ze); + zr && He[Sr].substitutions.set(e.getNodeId(Xe).toString(), zr); + } + } + function Zt(Xe, Jr, ti) { + var Ze = pi(Xe); + if (!!Ze) { + var Sr = e.getSymbolId(Ze).toString(), zr = be.get(Sr); + if (zr && zr >= Jr) + return Sr; + if (be.set(Sr, Jr), zr) { + for (var Wr = 0, Je = He; Wr < Je.length; Wr++) { + var xe = Je[Wr], vr = xe.usages.get(Xe.text); + vr && xe.usages.set(Xe.text, { usage: Jr, symbol: Ze, node: Xe }); + } + return Sr; + } + var mr = Ze.getDeclarations(), Ar = mr && e.find(mr, function(vi) { + return vi.getSourceFile() === ge; + }); + if (!!Ar && !e.rangeContainsStartEnd(Be, Ar.getStart(), Ar.end)) { + if (Fe.facts & G.IsGenerator && Jr === 2) { + for (var Oe = e.createDiagnosticForNode(Xe, m.cannotExtractRangeThatContainsWritesToReferencesLocatedOutsideOfTheTargetRangeInGenerators), nr = 0, Mr = Ie; nr < Mr.length; nr++) { + var Pe = Mr[nr]; + Pe.push(Oe); + } + for (var Ue = 0, fr = _e; Ue < fr.length; Ue++) { + var Pe = fr[Ue]; + Pe.push(Oe); + } + } + for (var De = 0; De < Z.length; De++) { + var gr = Z[De], Vr = Re.resolveName(Ze.name, gr, Ze.flags, false); + if (Vr !== Ze && !rr[De].has(Sr)) { + var Tr = ae(Ze.exportSymbol || Ze, gr, ti); + if (Tr) + rr[De].set(Sr, Tr); + else if (ti) { + if (!(Ze.flags & 262144)) { + var Oe = e.createDiagnosticForNode(Xe, m.typeWillNotBeVisibleInTheNewScope); + Ie[De].push(Oe), _e[De].push(Oe); + } + } else + He[De].usages.set(Xe.text, { usage: Jr, symbol: Ze, node: Xe }); + } + } + return Sr; + } + } + } + function _r(Xe) { + if (!(Xe === Fe.range || I(Fe.range) && Fe.range.indexOf(Xe) >= 0)) { + var Jr = e.isIdentifier(Xe) ? pi(Xe) : Re.getSymbolAtLocation(Xe); + if (Jr) { + var ti = e.find(we, function(Sr) { + return Sr.symbol === Jr; + }); + if (ti) + if (e.isVariableDeclaration(ti)) { + var Ze = ti.symbol.id.toString(); + de.has(Ze) || (ye.push(ti), de.set(Ze, true)); + } else + Ae = Ae || ti; + } + e.forEachChild(Xe, _r); + } + } + function pi(Xe) { + return Xe.parent && e.isShorthandPropertyAssignment(Xe.parent) && Xe.parent.name === Xe ? Re.getShorthandAssignmentValueSymbol(Xe.parent) : Re.getSymbolAtLocation(Xe); + } + function ae(Xe, Jr, ti) { + if (!!Xe) { + var Ze = Xe.getDeclarations(); + if (Ze && Ze.some(function(zr) { + return zr.parent === Jr; + })) + return e.factory.createIdentifier(Xe.name); + var Sr = ae(Xe.parent, Jr, ti); + if (Sr !== void 0) + return ti ? e.factory.createQualifiedName(Sr, e.factory.createIdentifier(Xe.name)) : e.factory.createPropertyAccessExpression(Sr, Xe.name); + } + } + } + function fe(Fe) { + return e.findAncestor(Fe, function(Z) { + return Z.parent && g(Z) && !e.isBinaryExpression(Z.parent); + }); + } + function g(Fe) { + var Z = Fe.parent; + switch (Z.kind) { + case 299: + return false; + } + switch (Fe.kind) { + case 10: + return Z.kind !== 266 && Z.kind !== 270; + case 225: + case 201: + case 203: + return false; + case 79: + return Z.kind !== 203 && Z.kind !== 270 && Z.kind !== 275; + } + return true; + } + function ne(Fe) { + switch (Fe.kind) { + case 235: + case 305: + case 262: + case 289: + return true; + default: + return false; + } + } + function ue(Fe) { + return We(Fe) || (e.isJsxElement(Fe) || e.isJsxSelfClosingElement(Fe) || e.isJsxFragment(Fe)) && (e.isJsxElement(Fe.parent) || e.isJsxFragment(Fe.parent)); + } + function We(Fe) { + return e.isStringLiteral(Fe) && Fe.parent && e.isJsxAttribute(Fe.parent); + } + })(w = C.extractSymbol || (C.extractSymbol = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "Extract type", B = { name: "Extract to type alias", description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_type_alias), kind: "refactor.extract.type" }, E = { name: "Extract to interface", description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_interface), kind: "refactor.extract.interface" }, Q = { name: "Extract to typedef", description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_typedef), kind: "refactor.extract.typedef" }; + C.registerRefactor(w, { kinds: [B.kind, E.kind, Q.kind], getAvailableActions: function(K) { + var b = le(K, K.triggerReason === "invoked"); + return b ? C.isRefactorErrorInfo(b) ? K.preferences.provideRefactorNotApplicableReason ? [{ name: w, description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_type), actions: [Ke(Ke({}, Q), { notApplicableReason: b.error }), Ke(Ke({}, B), { notApplicableReason: b.error }), Ke(Ke({}, E), { notApplicableReason: b.error })] }] : e.emptyArray : [{ name: w, description: e.getLocaleSpecificMessage(e.Diagnostics.Extract_type), actions: b.isJS ? [Q] : e.append([B], b.typeElements && E) }] : e.emptyArray; + }, getEditsForAction: function(K, b) { + var se = K.file, J = le(K); + e.Debug.assert(J && !C.isRefactorErrorInfo(J), "Expected to find a range to extract"); + var ie = e.getUniqueName("NewType", se), R = e.textChanges.ChangeTracker.with(K, function(ve) { + switch (b) { + case B.name: + return e.Debug.assert(!J.isJS, "Invalid actionName/JS combo"), G(ve, se, ie, J); + case Q.name: + return e.Debug.assert(J.isJS, "Invalid actionName/JS combo"), f(ve, se, ie, J); + case E.name: + return e.Debug.assert(!J.isJS && !!J.typeElements, "Invalid actionName/JS combo"), oe(ve, se, ie, J); + default: + e.Debug.fail("Unexpected action name"); + } + }), q = se.fileName, O = e.getRenameLocation(R, q, ie, false); + return { edits: R, renameFilename: q, renameLocation: O }; + } }); + function le(T, K) { + K === void 0 && (K = true); + var b = T.file, se = T.startPosition, J = e.isSourceFileJS(b), ie = e.getTokenAtPosition(b, se), R = e.createTextRangeFromSpan(e.getRefactorContextSpan(T)), q = R.pos === R.end && K, O = e.findAncestor(ie, function(x) { + return x.parent && e.isTypeNode(x) && !p(R, x.parent, b) && (q || e.nodeOverlapsWithStartEnd(ie, b, R.pos, R.end)); + }); + if (!O || !e.isTypeNode(O)) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Selection_is_not_a_valid_type_node) }; + var ve = T.program.getTypeChecker(), ee = e.Debug.checkDefined(e.findAncestor(O, e.isStatement), "Should find a statement"), he = m(ve, O, ee, b); + if (!he) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.No_type_could_be_extracted_from_this_type_node) }; + var F = N(ve, O); + return { isJS: J, selection: O, firstStatement: ee, typeParameters: he, typeElements: F }; + } + function N(T, K) { + if (!!K) + if (e.isIntersectionTypeNode(K)) { + for (var b = [], se = new e.Map(), J = 0, ie = K.types; J < ie.length; J++) { + var R = ie[J], q = N(T, R); + if (!q || !q.every(function(O) { + return O.name && e.addToSeen(se, e.getNameFromPropertyName(O.name)); + })) + return; + e.addRange(b, q); + } + return b; + } else { + if (e.isParenthesizedTypeNode(K)) + return N(T, K.type); + if (e.isTypeLiteralNode(K)) + return K.members; + } + } + function p(T, K, b) { + return e.rangeContainsStartEnd(T, e.skipTrivia(b.text, K.pos), K.end); + } + function m(T, K, b, se) { + var J = []; + return ie(K) ? void 0 : J; + function ie(R) { + if (e.isTypeReferenceNode(R)) { + if (e.isIdentifier(R.typeName)) + for (var q = R.typeName, O = T.resolveName(q.text, q, 262144, true), ve = 0, ee = (O == null ? void 0 : O.declarations) || e.emptyArray; ve < ee.length; ve++) { + var he = ee[ve]; + if (e.isTypeParameterDeclaration(he) && he.getSourceFile() === se) { + if (he.name.escapedText === q.escapedText && p(he, K, se)) + return true; + if (p(b, he, se) && !p(K, he, se)) { + e.pushIfUnique(J, he); + break; + } + } + } + } else if (e.isInferTypeNode(R)) { + var F = e.findAncestor(R, function(X) { + return e.isConditionalTypeNode(X) && p(X.extendsType, R, se); + }); + if (!F || !p(K, F, se)) + return true; + } else if (e.isTypePredicateNode(R) || e.isThisTypeNode(R)) { + var x = e.findAncestor(R.parent, e.isFunctionLike); + if (x && x.type && p(x.type, R, se) && !p(K, x, se)) + return true; + } else if (e.isTypeQueryNode(R)) { + if (e.isIdentifier(R.exprName)) { + var O = T.resolveName(R.exprName.text, R.exprName, 111551, false); + if ((O == null ? void 0 : O.valueDeclaration) && p(b, O.valueDeclaration, se) && !p(K, O.valueDeclaration, se)) + return true; + } else if (e.isThisIdentifier(R.exprName.left) && !p(K, R.parent, se)) + return true; + } + return se && e.isTupleTypeNode(R) && e.getLineAndCharacterOfPosition(se, R.pos).line === e.getLineAndCharacterOfPosition(se, R.end).line && e.setEmitFlags(R, 1), e.forEachChild(R, ie); + } + } + function G(T, K, b, se) { + var J = se.firstStatement, ie = se.selection, R = se.typeParameters, q = e.factory.createTypeAliasDeclaration(void 0, void 0, b, R.map(function(O) { + return e.factory.updateTypeParameterDeclaration(O, O.modifiers, O.name, O.constraint, void 0); + }), ie); + T.insertNodeBefore(K, J, e.ignoreSourceNewlines(q), true), T.replaceNode(K, ie, e.factory.createTypeReferenceNode(b, R.map(function(O) { + return e.factory.createTypeReferenceNode(O.name, void 0); + })), { leadingTriviaOption: e.textChanges.LeadingTriviaOption.Exclude, trailingTriviaOption: e.textChanges.TrailingTriviaOption.ExcludeWhitespace }); + } + function oe(T, K, b, se) { + var J, ie = se.firstStatement, R = se.selection, q = se.typeParameters, O = se.typeElements, ve = e.factory.createInterfaceDeclaration(void 0, void 0, b, q, void 0, O); + e.setTextRange(ve, (J = O[0]) === null || J === void 0 ? void 0 : J.parent), T.insertNodeBefore(K, ie, e.ignoreSourceNewlines(ve), true), T.replaceNode(K, R, e.factory.createTypeReferenceNode(b, q.map(function(ee) { + return e.factory.createTypeReferenceNode(ee.name, void 0); + })), { leadingTriviaOption: e.textChanges.LeadingTriviaOption.Exclude, trailingTriviaOption: e.textChanges.TrailingTriviaOption.ExcludeWhitespace }); + } + function f(T, K, b, se) { + var J = se.firstStatement, ie = se.selection, R = se.typeParameters; + e.setEmitFlags(ie, 3584); + var q = e.factory.createJSDocTypedefTag(e.factory.createIdentifier("typedef"), e.factory.createJSDocTypeExpression(ie), e.factory.createIdentifier(b)), O = []; + e.forEach(R, function(ve) { + var ee = e.getEffectiveConstraintOfTypeParameter(ve), he = e.factory.createTypeParameterDeclaration(void 0, ve.name), F = e.factory.createJSDocTemplateTag(e.factory.createIdentifier("template"), ee && e.cast(ee, e.isJSDocTypeExpression), [he]); + O.push(F); + }), T.insertNodeBefore(K, J, e.factory.createJSDocComment(void 0, e.factory.createNodeArray(e.concatenate(O, [q]))), true), T.replaceNode(K, ie, e.factory.createTypeReferenceNode(b, R.map(function(ve) { + return e.factory.createTypeReferenceNode(ve.name, void 0); + }))); + } + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Generate 'get' and 'set' accessors", Q = e.Diagnostics.Generate_get_and_set_accessors.message, le = { name: E, description: Q, kind: "refactor.rewrite.property.generateAccessors" }; + C.registerRefactor(E, { kinds: [le.kind], getEditsForAction: function(p, m) { + if (!!p.endPosition) { + var G = e.codefix.getAccessorConvertiblePropertyAtPosition(p.file, p.program, p.startPosition, p.endPosition); + e.Debug.assert(G && !C.isRefactorErrorInfo(G), "Expected applicable refactor info"); + var oe = e.codefix.generateAccessorFromProperty(p.file, p.program, p.startPosition, p.endPosition, p, m); + if (!!oe) { + var f = p.file.fileName, T = G.renameAccessor ? G.accessorName : G.fieldName, K = e.isIdentifier(T) ? 0 : -1, b = K + e.getRenameLocation(oe, f, T.text, e.isParameter(G.declaration)); + return { renameFilename: f, renameLocation: b, edits: oe }; + } + } + }, getAvailableActions: function(N) { + if (!N.endPosition) + return e.emptyArray; + var p = e.codefix.getAccessorConvertiblePropertyAtPosition(N.file, N.program, N.startPosition, N.endPosition, N.triggerReason === "invoked"); + return p ? C.isRefactorErrorInfo(p) ? N.preferences.provideRefactorNotApplicableReason ? [{ name: E, description: Q, actions: [Ke(Ke({}, le), { notApplicableReason: p.error })] }] : e.emptyArray : [{ name: E, description: Q, actions: [le] }] : e.emptyArray; + } }); + })(w = C.generateGetAccessorAndSetAccessor || (C.generateGetAccessorAndSetAccessor = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(E) { + return E.error !== void 0; + } + C.isRefactorErrorInfo = w; + function B(E, Q) { + return Q ? E.substr(0, Q.length) === Q : true; + } + C.refactorKindBeginsWith = B; + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w = "Move to a new file", B = e.getLocaleSpecificMessage(e.Diagnostics.Move_to_a_new_file), E = { name: w, description: B, kind: "refactor.move.newFile" }; + C.registerRefactor(w, { kinds: [E.kind], getAvailableActions: function(He) { + var rr = N(He); + return He.preferences.allowTextChangesInNewFiles && rr ? [{ name: w, description: B, actions: [E] }] : He.preferences.provideRefactorNotApplicableReason ? [{ name: w, description: B, actions: [Ke(Ke({}, E), { notApplicableReason: e.getLocaleSpecificMessage(e.Diagnostics.Selection_is_not_a_valid_statement_or_statements) })] }] : e.emptyArray; + }, getEditsForAction: function(He, rr) { + e.Debug.assert(rr === w, "Wrong refactor invoked"); + var Ie = e.Debug.checkDefined(N(He)), _e = e.textChanges.ChangeTracker.with(He, function(we) { + return le(He.file, He.program, Ie, we, He.host, He.preferences); + }); + return { edits: _e, renameFilename: void 0, renameLocation: void 0 }; + } }); + function Q(Ee) { + var He = Ee.file, rr = e.createTextRangeFromSpan(e.getRefactorContextSpan(Ee)), Ie = He.statements, _e = e.findIndex(Ie, function(ye) { + return ye.end > rr.pos; + }); + if (_e !== -1) { + var we = Ie[_e]; + if (e.isNamedDeclaration(we) && we.name && e.rangeContainsRange(we.name, rr)) + return { toMove: [Ie[_e]], afterLast: Ie[_e + 1] }; + if (!(rr.pos > we.getStart(He))) { + var de = e.findIndex(Ie, function(ye) { + return ye.end > rr.end; + }, _e); + if (!(de !== -1 && (de === 0 || Ie[de].getStart(He) < rr.end))) + return { toMove: Ie.slice(_e, de === -1 ? Ie.length : de), afterLast: de === -1 ? void 0 : Ie[de] }; + } + } + } + function le(Ee, He, rr, Ie, _e, we) { + var de = He.getTypeChecker(), ye = V(Ee, rr.all, de), Ae = e.getDirectoryPath(Ee.fileName), er = e.extensionFromPath(Ee.fileName), ir = A(y(ye.movedSymbols), er, Ae, _e), Cr = ir + er; + Ie.createNewFile(Ee, e.combinePaths(Ae, Cr), oe(Ee, ye, Ie, rr, He, ir, we)), G(He, Ie, Ee.fileName, Cr, e.hostGetCanonicalFileName(_e)); + } + function N(Ee) { + var He = Q(Ee); + if (He !== void 0) { + var rr = [], Ie = [], _e = He.toMove, we = He.afterLast; + return e.getRangesWhere(_e, p, function(de, ye) { + for (var Ae = de; Ae < ye; Ae++) + rr.push(_e[Ae]); + Ie.push({ first: _e[de], afterLast: we }); + }), rr.length === 0 ? void 0 : { all: rr, ranges: Ie }; + } + } + function p(Ee) { + return !m(Ee) && !e.isPrologueDirective(Ee); + } + function m(Ee) { + switch (Ee.kind) { + case 266: + return true; + case 265: + return !e.hasSyntacticModifier(Ee, 1); + case 237: + return Ee.declarationList.declarations.every(function(He) { + return !!He.initializer && e.isRequireCall(He.initializer, true); + }); + default: + return false; + } + } + function G(Ee, He, rr, Ie, _e) { + var we = Ee.getCompilerOptions().configFile; + if (!!we) { + var de = e.normalizePath(e.combinePaths(rr, "..", Ie)), ye = e.getRelativePathFromFile(we.fileName, de, _e), Ae = we.statements[0] && e.tryCast(we.statements[0].expression, e.isObjectLiteralExpression), er = Ae && e.find(Ae.properties, function(ir) { + return e.isPropertyAssignment(ir) && e.isStringLiteral(ir.name) && ir.name.text === "files"; + }); + er && e.isArrayLiteralExpression(er.initializer) && He.insertNodeInListAfter(we, e.last(er.initializer.elements), e.factory.createStringLiteral(ye), er.initializer.elements); + } + } + function oe(Ee, He, rr, Ie, _e, we, de) { + var ye = _e.getTypeChecker(), Ae = e.takeWhile(Ee.statements, e.isPrologueDirective); + if (!Ee.externalModuleIndicator && !Ee.commonJsModuleIndicator) + return f(Ee, Ie.ranges, rr), Ve(Ve([], Ae, true), Ie.all, true); + var er = !!Ee.externalModuleIndicator, ir = e.getQuotePreference(Ee, de), Cr = q(He.oldFileImportsFromNewFile, we, er, ir); + Cr && e.insertImports(rr, Ee, Cr, true), T(Ee, Ie.all, rr, He.unusedImportsFromOldFile, ye), f(Ee, Ie.ranges, rr), K(rr, _e, Ee, He.movedSymbols, we); + var Ye = $(Ee, He.oldImportsNeededByNewFile, He.newFileImportsFromOldFile, rr, ye, er, ir), Br = he(Ee, Ie.all, He.oldFileImportsFromNewFile, er); + return Ye.length && Br.length ? Ve(Ve(Ve(Ve([], Ae, true), Ye, true), [4], false), Br, true) : Ve(Ve(Ve([], Ae, true), Ye, true), Br, true); + } + function f(Ee, He, rr) { + for (var Ie = 0, _e = He; Ie < _e.length; Ie++) { + var we = _e[Ie], de = we.first, ye = we.afterLast; + rr.deleteNodeRangeExcludingEnd(Ee, de, ye); + } + } + function T(Ee, He, rr, Ie, _e) { + for (var we = 0, de = Ee.statements; we < de.length; we++) { + var ye = de[we]; + e.contains(He, ye) || R(ye, function(Ae) { + return F(Ee, Ae, rr, function(er) { + return Ie.has(_e.getSymbolAtLocation(er)); + }); + }); + } + } + function K(Ee, He, rr, Ie, _e) { + for (var we = He.getTypeChecker(), de = function(ir) { + if (ir === rr) + return "continue"; + for (var Cr = function(Ne) { + R(Ne, function(n) { + if (we.getSymbolAtLocation(ie(n)) === rr.symbol) { + var lr = function(yr) { + var Ir = e.isBindingElement(yr.parent) ? e.getPropertySymbolFromBindingElement(we, yr.parent) : e.skipAlias(we.getSymbolAtLocation(yr), we); + return !!Ir && Ie.has(Ir); + }; + F(ir, n, Ee, lr); + var be = e.combinePaths(e.getDirectoryPath(ie(n).text), _e), Ge = k(n, e.factory.createStringLiteral(be), lr); + Ge && Ee.insertNodeAfter(ir, Ne, Ge); + var ur = b(n); + ur && se(Ee, ir, we, Ie, _e, be, ur, n); + } + }); + }, Ye = 0, Br = ir.statements; Ye < Br.length; Ye++) { + var Er = Br[Ye]; + Cr(Er); + } + }, ye = 0, Ae = He.getSourceFiles(); ye < Ae.length; ye++) { + var er = Ae[ye]; + de(er); + } + } + function b(Ee) { + switch (Ee.kind) { + case 266: + return Ee.importClause && Ee.importClause.namedBindings && Ee.importClause.namedBindings.kind === 268 ? Ee.importClause.namedBindings.name : void 0; + case 265: + return Ee.name; + case 254: + return e.tryCast(Ee.name, e.isIdentifier); + default: + return e.Debug.assertNever(Ee, "Unexpected node kind ".concat(Ee.kind)); + } + } + function se(Ee, He, rr, Ie, _e, we, de, ye) { + var Ae = e.codefix.moduleSpecifierToValidIdentifier(_e, 99), er = false, ir = []; + if (e.FindAllReferences.Core.eachSymbolReferenceInFile(de, rr, He, function(Ne) { + !e.isPropertyAccessExpression(Ne.parent) || (er = er || !!rr.resolveName(Ae, Ne, 67108863, true), Ie.has(rr.getSymbolAtLocation(Ne.parent.name)) && ir.push(Ne)); + }), ir.length) { + for (var Cr = er ? e.getUniqueName(Ae, He) : Ae, Ye = 0, Br = ir; Ye < Br.length; Ye++) { + var Er = Br[Ye]; + Ee.replaceNode(He, Er, e.factory.createIdentifier(Cr)); + } + Ee.insertNodeAfter(He, ye, J(ye, _e, we)); + } + } + function J(Ee, He, rr) { + var Ie = e.factory.createIdentifier(He), _e = e.factory.createStringLiteral(rr); + switch (Ee.kind) { + case 266: + return e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, void 0, e.factory.createNamespaceImport(Ie)), _e, void 0); + case 265: + return e.factory.createImportEqualsDeclaration(void 0, void 0, false, Ie, e.factory.createExternalModuleReference(_e)); + case 254: + return e.factory.createVariableDeclaration(Ie, void 0, void 0, ee(_e)); + default: + return e.Debug.assertNever(Ee, "Unexpected node kind ".concat(Ee.kind)); + } + } + function ie(Ee) { + return Ee.kind === 266 ? Ee.moduleSpecifier : Ee.kind === 265 ? Ee.moduleReference.expression : Ee.initializer.arguments[0]; + } + function R(Ee, He) { + if (e.isImportDeclaration(Ee)) + e.isStringLiteral(Ee.moduleSpecifier) && He(Ee); + else if (e.isImportEqualsDeclaration(Ee)) + e.isExternalModuleReference(Ee.moduleReference) && e.isStringLiteralLike(Ee.moduleReference.expression) && He(Ee); + else if (e.isVariableStatement(Ee)) + for (var rr = 0, Ie = Ee.declarationList.declarations; rr < Ie.length; rr++) { + var _e = Ie[rr]; + _e.initializer && e.isRequireCall(_e.initializer, true) && He(_e); + } + } + function q(Ee, He, rr, Ie) { + var _e, we = []; + return Ee.forEach(function(de) { + de.escapedName === "default" ? _e = e.factory.createIdentifier(e.symbolNameNoDefault(de)) : we.push(de.name); + }), O(_e, we, He, rr, Ie); + } + function O(Ee, He, rr, Ie, _e) { + if (rr = e.ensurePathIsNonModuleName(rr), Ie) { + var we = He.map(function(ye) { + return e.factory.createImportSpecifier(false, void 0, e.factory.createIdentifier(ye)); + }); + return e.makeImportIfNecessary(Ee, we, rr, _e); + } else { + e.Debug.assert(!Ee, "No default import should exist"); + var de = He.map(function(ye) { + return e.factory.createBindingElement(void 0, void 0, ye); + }); + return de.length ? ve(e.factory.createObjectBindingPattern(de), void 0, ee(e.factory.createStringLiteral(rr))) : void 0; + } + } + function ve(Ee, He, rr, Ie) { + return Ie === void 0 && (Ie = 2), e.factory.createVariableStatement(void 0, e.factory.createVariableDeclarationList([e.factory.createVariableDeclaration(Ee, void 0, He, rr)], Ie)); + } + function ee(Ee) { + return e.factory.createCallExpression(e.factory.createIdentifier("require"), void 0, [Ee]); + } + function he(Ee, He, rr, Ie) { + return e.flatMap(He, function(_e) { + if (d(_e) && !Fe(Ee, _e, Ie) && fe(_e, function(de) { + return rr.has(e.Debug.checkDefined(de.symbol)); + })) { + var we = Z(_e, Ie); + if (we) + return we; + } + return _e; + }); + } + function F(Ee, He, rr, Ie) { + switch (He.kind) { + case 266: + x(Ee, He, rr, Ie); + break; + case 265: + Ie(He.name) && rr.delete(Ee, He); + break; + case 254: + X(Ee, He, rr, Ie); + break; + default: + e.Debug.assertNever(He, "Unexpected import decl kind ".concat(He.kind)); + } + } + function x(Ee, He, rr, Ie) { + if (!!He.importClause) { + var _e = He.importClause, we = _e.name, de = _e.namedBindings, ye = !we || Ie(we), Ae = !de || (de.kind === 268 ? Ie(de.name) : de.elements.length !== 0 && de.elements.every(function(Ye) { + return Ie(Ye.name); + })); + if (ye && Ae) + rr.delete(Ee, He); + else if (we && ye && rr.delete(Ee, we), de) { + if (Ae) + rr.replaceNode(Ee, He.importClause, e.factory.updateImportClause(He.importClause, He.importClause.isTypeOnly, we, void 0)); + else if (de.kind === 269) + for (var er = 0, ir = de.elements; er < ir.length; er++) { + var Cr = ir[er]; + Ie(Cr.name) && rr.delete(Ee, Cr); + } + } + } + } + function X(Ee, He, rr, Ie) { + var _e = He.name; + switch (_e.kind) { + case 79: + Ie(_e) && rr.delete(Ee, _e); + break; + case 202: + break; + case 201: + if (_e.elements.every(function(Ae) { + return e.isIdentifier(Ae.name) && Ie(Ae.name); + })) + rr.delete(Ee, e.isVariableDeclarationList(He.parent) && He.parent.declarations.length === 1 ? He.parent.parent : He); + else + for (var we = 0, de = _e.elements; we < de.length; we++) { + var ye = de[we]; + e.isIdentifier(ye.name) && Ie(ye.name) && rr.delete(Ee, ye.name); + } + break; + } + } + function $(Ee, He, rr, Ie, _e, we, de) { + for (var ye = [], Ae = 0, er = Ee.statements; Ae < er.length; Ae++) { + var ir = er[Ae]; + R(ir, function(Er) { + e.append(ye, k(Er, ie(Er), function(Ne) { + return He.has(_e.getSymbolAtLocation(Ne)); + })); + }); + } + var Cr, Ye = [], Br = e.nodeSeenTracker(); + return rr.forEach(function(Er) { + if (!!Er.declarations) + for (var Ne = 0, n = Er.declarations; Ne < n.length; Ne++) { + var lr = n[Ne]; + if (!!I(lr)) { + var be = ne(lr); + if (!!be) { + var Ge = ue(lr); + Br(Ge) && We(Ee, Ge, be, Ie, we), e.hasSyntacticModifier(lr, 512) ? Cr = be : Ye.push(be.text); + } + } + } + }), e.append(ye, O(Cr, Ye, e.removeFileExtension(e.getBaseFileName(Ee.fileName)), we, de)), ye; + } + function A(Ee, He, rr, Ie) { + for (var _e = Ee, we = 1; ; we++) { + var de = e.combinePaths(rr, _e + He); + if (!Ie.fileExists(de)) + return _e; + _e = "".concat(Ee, ".").concat(we); + } + } + function y(Ee) { + return Ee.forEachEntry(e.symbolNameNoDefault) || "newFile"; + } + function V(Ee, He, rr) { + var Ie = new H(), _e = new H(), we = new H(), de = e.find(He, function(be) { + return !!(be.transformFlags & 2); + }), ye = lr(de); + ye && _e.add(ye); + for (var Ae = 0, er = He; Ae < er.length; Ae++) { + var ir = er[Ae]; + fe(ir, function(be) { + Ie.add(e.Debug.checkDefined(e.isExpressionStatement(be) ? rr.getSymbolAtLocation(be.expression.left) : be.symbol, "Need a symbol here")); + }); + } + for (var Cr = 0, Ye = He; Cr < Ye.length; Cr++) { + var ir = Ye[Cr]; + j(ir, rr, function(Ge) { + if (!!Ge.declarations) + for (var ur = 0, yr = Ge.declarations; ur < yr.length; ur++) { + var Ir = yr[ur]; + L(Ir) ? _e.add(Ge) : I(Ir) && l(Ir) === Ee && !Ie.has(Ge) && we.add(Ge); + } + }); + } + for (var Br = _e.clone(), Er = new H(), Ne = 0, n = Ee.statements; Ne < n.length; Ne++) { + var ir = n[Ne]; + e.contains(He, ir) || (ye && !!(ir.transformFlags & 2) && Br.delete(ye), j(ir, rr, function(Ge) { + Ie.has(Ge) && Er.add(Ge), Br.delete(Ge); + })); + } + return { movedSymbols: Ie, newFileImportsFromOldFile: we, oldFileImportsFromNewFile: Er, oldImportsNeededByNewFile: _e, unusedImportsFromOldFile: Br }; + function lr(be) { + if (be !== void 0) { + var Ge = rr.getJsxNamespace(be), ur = rr.resolveName(Ge, be, 1920, true); + return !!ur && e.some(ur.declarations, L) ? ur : void 0; + } + } + } + function L(Ee) { + switch (Ee.kind) { + case 265: + case 270: + case 267: + case 268: + return true; + case 254: + return P(Ee); + case 203: + return e.isVariableDeclaration(Ee.parent.parent) && P(Ee.parent.parent); + default: + return false; + } + } + function P(Ee) { + return e.isSourceFile(Ee.parent.parent.parent) && !!Ee.initializer && e.isRequireCall(Ee.initializer, true); + } + function k(Ee, He, rr) { + switch (Ee.kind) { + case 266: { + var Ie = Ee.importClause; + if (!Ie) + return; + var _e = Ie.name && rr(Ie.name) ? Ie.name : void 0, we = Ie.namedBindings && Y(Ie.namedBindings, rr); + return _e || we ? e.factory.createImportDeclaration(void 0, void 0, e.factory.createImportClause(false, _e, we), He, void 0) : void 0; + } + case 265: + return rr(Ee.name) ? Ee : void 0; + case 254: { + var de = U(Ee.name, rr); + return de ? ve(de, Ee.type, ee(He), Ee.parent.flags) : void 0; + } + default: + return e.Debug.assertNever(Ee, "Unexpected import kind ".concat(Ee.kind)); + } + } + function Y(Ee, He) { + if (Ee.kind === 268) + return He(Ee.name) ? Ee : void 0; + var rr = Ee.elements.filter(function(Ie) { + return He(Ie.name); + }); + return rr.length ? e.factory.createNamedImports(rr) : void 0; + } + function U(Ee, He) { + switch (Ee.kind) { + case 79: + return He(Ee) ? Ee : void 0; + case 202: + return Ee; + case 201: { + var rr = Ee.elements.filter(function(Ie) { + return Ie.propertyName || !e.isIdentifier(Ie.name) || He(Ie.name); + }); + return rr.length ? e.factory.createObjectBindingPattern(rr) : void 0; + } + } + } + function j(Ee, He, rr) { + Ee.forEachChild(function Ie(_e) { + if (e.isIdentifier(_e) && !e.isDeclarationName(_e)) { + var we = He.getSymbolAtLocation(_e); + we && rr(we); + } else + _e.forEachChild(Ie); + }); + } + var H = function() { + function Ee() { + this.map = new e.Map(); + } + return Ee.prototype.add = function(He) { + this.map.set(String(e.getSymbolId(He)), He); + }, Ee.prototype.has = function(He) { + return this.map.has(String(e.getSymbolId(He))); + }, Ee.prototype.delete = function(He) { + this.map.delete(String(e.getSymbolId(He))); + }, Ee.prototype.forEach = function(He) { + this.map.forEach(He); + }, Ee.prototype.forEachEntry = function(He) { + return e.forEachEntry(this.map, He); + }, Ee.prototype.clone = function() { + var He = new Ee(); + return e.copyEntries(this.map, He.map), He; + }, Ee; + }(); + function I(Ee) { + return D(Ee) && e.isSourceFile(Ee.parent) || e.isVariableDeclaration(Ee) && e.isSourceFile(Ee.parent.parent.parent); + } + function l(Ee) { + return e.isVariableDeclaration(Ee) ? Ee.parent.parent.parent : Ee.parent; + } + function d(Ee) { + return e.Debug.assert(e.isSourceFile(Ee.parent), "Node parent should be a SourceFile"), D(Ee) || e.isVariableStatement(Ee); + } + function D(Ee) { + switch (Ee.kind) { + case 256: + case 257: + case 261: + case 260: + case 259: + case 258: + case 265: + return true; + default: + return false; + } + } + function fe(Ee, He) { + switch (Ee.kind) { + case 256: + case 257: + case 261: + case 260: + case 259: + case 258: + case 265: + return He(Ee); + case 237: + return e.firstDefined(Ee.declarationList.declarations, function(Ie) { + return g(Ie.name, He); + }); + case 238: { + var rr = Ee.expression; + return e.isBinaryExpression(rr) && e.getAssignmentDeclarationKind(rr) === 1 ? He(Ee) : void 0; + } + } + } + function g(Ee, He) { + switch (Ee.kind) { + case 79: + return He(e.cast(Ee.parent, function(rr) { + return e.isVariableDeclaration(rr) || e.isBindingElement(rr); + })); + case 202: + case 201: + return e.firstDefined(Ee.elements, function(rr) { + return e.isOmittedExpression(rr) ? void 0 : g(rr.name, He); + }); + default: + return e.Debug.assertNever(Ee, "Unexpected name kind ".concat(Ee.kind)); + } + } + function ne(Ee) { + return e.isExpressionStatement(Ee) ? e.tryCast(Ee.expression.left.name, e.isIdentifier) : e.tryCast(Ee.name, e.isIdentifier); + } + function ue(Ee) { + switch (Ee.kind) { + case 254: + return Ee.parent.parent; + case 203: + return ue(e.cast(Ee.parent.parent, function(He) { + return e.isVariableDeclaration(He) || e.isBindingElement(He); + })); + default: + return Ee; + } + } + function We(Ee, He, rr, Ie, _e) { + if (!Fe(Ee, He, _e, rr)) + if (_e) + e.isExpressionStatement(He) || Ie.insertExportModifier(Ee, He); + else { + var we = Re(He); + we.length !== 0 && Ie.insertNodesAfter(Ee, He, we.map(ze)); + } + } + function Fe(Ee, He, rr, Ie) { + var _e; + return rr ? !e.isExpressionStatement(He) && e.hasSyntacticModifier(He, 1) || !!(Ie && ((_e = Ee.symbol.exports) === null || _e === void 0 ? void 0 : _e.has(Ie.escapedText))) : Re(He).some(function(we) { + return Ee.symbol.exports.has(e.escapeLeadingUnderscores(we)); + }); + } + function Z(Ee, He) { + return He ? [Be(Ee)] : ge(Ee); + } + function Be(Ee) { + var He = e.concatenate([e.factory.createModifier(93)], Ee.modifiers); + switch (Ee.kind) { + case 256: + return e.factory.updateFunctionDeclaration(Ee, Ee.decorators, He, Ee.asteriskToken, Ee.name, Ee.typeParameters, Ee.parameters, Ee.type, Ee.body); + case 257: + return e.factory.updateClassDeclaration(Ee, Ee.decorators, He, Ee.name, Ee.typeParameters, Ee.heritageClauses, Ee.members); + case 237: + return e.factory.updateVariableStatement(Ee, He, Ee.declarationList); + case 261: + return e.factory.updateModuleDeclaration(Ee, Ee.decorators, He, Ee.name, Ee.body); + case 260: + return e.factory.updateEnumDeclaration(Ee, Ee.decorators, He, Ee.name, Ee.members); + case 259: + return e.factory.updateTypeAliasDeclaration(Ee, Ee.decorators, He, Ee.name, Ee.typeParameters, Ee.type); + case 258: + return e.factory.updateInterfaceDeclaration(Ee, Ee.decorators, He, Ee.name, Ee.typeParameters, Ee.heritageClauses, Ee.members); + case 265: + return e.factory.updateImportEqualsDeclaration(Ee, Ee.decorators, He, Ee.isTypeOnly, Ee.name, Ee.moduleReference); + case 238: + return e.Debug.fail(); + default: + return e.Debug.assertNever(Ee, "Unexpected declaration kind ".concat(Ee.kind)); + } + } + function ge(Ee) { + return Ve([Ee], Re(Ee).map(ze), true); + } + function Re(Ee) { + switch (Ee.kind) { + case 256: + case 257: + return [Ee.name.text]; + case 237: + return e.mapDefined(Ee.declarationList.declarations, function(He) { + return e.isIdentifier(He.name) ? He.name.text : void 0; + }); + case 261: + case 260: + case 259: + case 258: + case 265: + return e.emptyArray; + case 238: + return e.Debug.fail("Can't export an ExpressionStatement"); + default: + return e.Debug.assertNever(Ee, "Unexpected decl kind ".concat(Ee.kind)); + } + } + function ze(Ee) { + return e.factory.createExpressionStatement(e.factory.createBinaryExpression(e.factory.createPropertyAccessExpression(e.factory.createIdentifier("exports"), e.factory.createIdentifier(Ee)), 63, e.factory.createIdentifier(Ee))); + } + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Add or remove braces in an arrow function", Q = e.Diagnostics.Add_or_remove_braces_in_an_arrow_function.message, le = { name: "Add braces to arrow function", description: e.Diagnostics.Add_braces_to_arrow_function.message, kind: "refactor.rewrite.arrow.braces.add" }, N = { name: "Remove braces from arrow function", description: e.Diagnostics.Remove_braces_from_arrow_function.message, kind: "refactor.rewrite.arrow.braces.remove" }; + C.registerRefactor(E, { kinds: [N.kind], getEditsForAction: m, getAvailableActions: p }); + function p(oe) { + var f = oe.file, T = oe.startPosition, K = oe.triggerReason, b = G(f, T, K === "invoked"); + return b ? C.isRefactorErrorInfo(b) ? oe.preferences.provideRefactorNotApplicableReason ? [{ name: E, description: Q, actions: [Ke(Ke({}, le), { notApplicableReason: b.error }), Ke(Ke({}, N), { notApplicableReason: b.error })] }] : e.emptyArray : [{ name: E, description: Q, actions: [b.addBraces ? le : N] }] : e.emptyArray; + } + function m(oe, f) { + var T = oe.file, K = oe.startPosition, b = G(T, K); + e.Debug.assert(b && !C.isRefactorErrorInfo(b), "Expected applicable refactor info"); + var se = b.expression, J = b.returnStatement, ie = b.func, R; + if (f === le.name) { + var q = e.factory.createReturnStatement(se); + R = e.factory.createBlock([q], true), e.copyLeadingComments(se, q, T, 3, true); + } else if (f === N.name && J) { + var O = se || e.factory.createVoidZero(); + R = e.needsParentheses(O) ? e.factory.createParenthesizedExpression(O) : O, e.copyTrailingAsLeadingComments(J, R, T, 3, false), e.copyLeadingComments(J, R, T, 3, false), e.copyTrailingComments(J, R, T, 3, false); + } else + e.Debug.fail("invalid action"); + var ve = e.textChanges.ChangeTracker.with(oe, function(ee) { + ee.replaceNode(T, ie.body, R); + }); + return { renameFilename: void 0, renameLocation: void 0, edits: ve }; + } + function G(oe, f, T, K) { + T === void 0 && (T = true); + var b = e.getTokenAtPosition(oe, f), se = e.getContainingFunction(b); + if (!se) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_find_a_containing_arrow_function) }; + if (!e.isArrowFunction(se)) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Containing_function_is_not_an_arrow_function) }; + if (!(!e.rangeContainsRange(se, b) || e.rangeContainsRange(se.body, b) && !T)) { + if (C.refactorKindBeginsWith(le.kind, K) && e.isExpression(se.body)) + return { func: se, addBraces: true, expression: se.body }; + if (C.refactorKindBeginsWith(N.kind, K) && e.isBlock(se.body) && se.body.statements.length === 1) { + var J = e.first(se.body.statements); + if (e.isReturnStatement(J)) + return { func: se, addBraces: false, expression: J.expression, returnStatement: J }; + } + } + } + })(w = C.addOrRemoveBracesToArrowFunction || (C.addOrRemoveBracesToArrowFunction = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Convert parameters to destructured object", Q = 1, le = e.getLocaleSpecificMessage(e.Diagnostics.Convert_parameters_to_destructured_object), N = { name: E, description: le, kind: "refactor.rewrite.parameters.toDestructured" }; + C.registerRefactor(E, { kinds: [N.kind], getEditsForAction: m, getAvailableActions: p }); + function p(U) { + var j = U.file, H = U.startPosition, I = e.isSourceFileJS(j); + if (I) + return e.emptyArray; + var l = ie(j, H, U.program.getTypeChecker()); + return l ? [{ name: E, description: le, actions: [N] }] : e.emptyArray; + } + function m(U, j) { + e.Debug.assert(j === E, "Unexpected action name"); + var H = U.file, I = U.startPosition, l = U.program, d = U.cancellationToken, D = U.host, fe = ie(H, I, l.getTypeChecker()); + if (!(!fe || !d)) { + var g = oe(fe, l, d); + if (g.valid) { + var ne = e.textChanges.ChangeTracker.with(U, function(ue) { + return G(H, l, D, ue, fe, g); + }); + return { renameFilename: void 0, renameLocation: void 0, edits: ne }; + } + return { edits: [] }; + } + } + function G(U, j, H, I, l, d) { + var D = d.signature, fe = e.map(L(l, j, H), function(ge) { + return e.getSynthesizedDeepClone(ge); + }); + if (D) { + var g = e.map(L(D, j, H), function(ge) { + return e.getSynthesizedDeepClone(ge); + }); + Be(D, g); + } + Be(l, fe); + for (var ne = e.sortAndDeduplicate(d.functionCalls, function(ge, Re) { + return e.compareValues(ge.pos, Re.pos); + }), ue = 0, We = ne; ue < We.length; ue++) { + var Fe = We[ue]; + if (Fe.arguments && Fe.arguments.length) { + var Z = e.getSynthesizedDeepClone(V(l, Fe.arguments), true); + I.replaceNodeRange(e.getSourceFileOfNode(Fe), e.first(Fe.arguments), e.last(Fe.arguments), Z, { leadingTriviaOption: e.textChanges.LeadingTriviaOption.IncludeAll, trailingTriviaOption: e.textChanges.TrailingTriviaOption.Include }); + } + } + function Be(ge, Re) { + I.replaceNodeRangeWithNodes(U, e.first(ge.parameters), e.last(ge.parameters), Re, { joiner: ", ", indentation: 0, leadingTriviaOption: e.textChanges.LeadingTriviaOption.IncludeAll, trailingTriviaOption: e.textChanges.TrailingTriviaOption.Include }); + } + } + function oe(U, j, H) { + var I = Y(U), l = e.isConstructorDeclaration(U) ? k(U) : [], d = e.deduplicate(Ve(Ve([], I, true), l, true), e.equateValues), D = j.getTypeChecker(), fe = e.flatMap(d, function(We) { + return e.FindAllReferences.getReferenceEntriesForNode(-1, We, j, j.getSourceFiles(), H); + }), g = ne(fe); + return e.every(g.declarations, function(We) { + return e.contains(d, We); + }) || (g.valid = false), g; + function ne(We) { + for (var Fe = { accessExpressions: [], typeUsages: [] }, Z = { functionCalls: [], declarations: [], classReferences: Fe, valid: true }, Be = e.map(I, ue), ge = e.map(l, ue), Re = e.isConstructorDeclaration(U), ze = e.map(I, function(er) { + return f(er, D); + }), Ee = 0, He = We; Ee < He.length; Ee++) { + var rr = He[Ee]; + if (rr.kind === 0) { + Z.valid = false; + continue; + } + if (e.contains(ze, ue(rr.node))) { + if (q(rr.node.parent)) { + Z.signature = rr.node.parent; + continue; + } + var Ie = b(rr); + if (Ie) { + Z.functionCalls.push(Ie); + continue; + } + } + var _e = f(rr.node, D); + if (_e && e.contains(ze, _e)) { + var we = K(rr); + if (we) { + Z.declarations.push(we); + continue; + } + } + if (e.contains(Be, ue(rr.node)) || e.isNewExpressionTarget(rr.node)) { + var de = T(rr); + if (de) + continue; + var we = K(rr); + if (we) { + Z.declarations.push(we); + continue; + } + var Ie = b(rr); + if (Ie) { + Z.functionCalls.push(Ie); + continue; + } + } + if (Re && e.contains(ge, ue(rr.node))) { + var de = T(rr); + if (de) + continue; + var we = K(rr); + if (we) { + Z.declarations.push(we); + continue; + } + var ye = se(rr); + if (ye) { + Fe.accessExpressions.push(ye); + continue; + } + if (e.isClassDeclaration(U.parent)) { + var Ae = J(rr); + if (Ae) { + Fe.typeUsages.push(Ae); + continue; + } + } + } + Z.valid = false; + } + return Z; + } + function ue(We) { + var Fe = D.getSymbolAtLocation(We); + return Fe && e.getSymbolTarget(Fe, D); + } + } + function f(U, j) { + var H = e.getContainingObjectLiteralElement(U); + if (H) { + var I = j.getContextualTypeForObjectLiteralElement(H), l = I == null ? void 0 : I.getSymbol(); + if (l && !(e.getCheckFlags(l) & 6)) + return l; + } + } + function T(U) { + var j = U.node; + if (e.isImportSpecifier(j.parent) || e.isImportClause(j.parent) || e.isImportEqualsDeclaration(j.parent) || e.isNamespaceImport(j.parent) || e.isExportSpecifier(j.parent) || e.isExportAssignment(j.parent)) + return j; + } + function K(U) { + if (e.isDeclaration(U.node.parent)) + return U.node; + } + function b(U) { + if (U.node.parent) { + var j = U.node, H = j.parent; + switch (H.kind) { + case 208: + case 209: + var I = e.tryCast(H, e.isCallOrNewExpression); + if (I && I.expression === j) + return I; + break; + case 206: + var l = e.tryCast(H, e.isPropertyAccessExpression); + if (l && l.parent && l.name === j) { + var d = e.tryCast(l.parent, e.isCallOrNewExpression); + if (d && d.expression === l) + return d; + } + break; + case 207: + var D = e.tryCast(H, e.isElementAccessExpression); + if (D && D.parent && D.argumentExpression === j) { + var fe = e.tryCast(D.parent, e.isCallOrNewExpression); + if (fe && fe.expression === D) + return fe; + } + break; + } + } + } + function se(U) { + if (U.node.parent) { + var j = U.node, H = j.parent; + switch (H.kind) { + case 206: + var I = e.tryCast(H, e.isPropertyAccessExpression); + if (I && I.expression === j) + return I; + break; + case 207: + var l = e.tryCast(H, e.isElementAccessExpression); + if (l && l.expression === j) + return l; + break; + } + } + } + function J(U) { + var j = U.node; + if (e.getMeaningFromLocation(j) === 2 || e.isExpressionWithTypeArgumentsInClassExtendsClause(j.parent)) + return j; + } + function ie(U, j, H) { + var I = e.getTouchingToken(U, j), l = e.getContainingFunctionDeclaration(I); + if (!R(I) && l && O(l, H) && e.rangeContainsRange(l, I) && !(l.body && e.rangeContainsRange(l.body, I))) + return l; + } + function R(U) { + var j = e.findAncestor(U, e.isJSDocNode); + if (j) { + var H = e.findAncestor(j, function(I) { + return !e.isJSDocNode(I); + }); + return !!H && e.isFunctionLikeDeclaration(H); + } + return false; + } + function q(U) { + return e.isMethodSignature(U) && (e.isInterfaceDeclaration(U.parent) || e.isTypeLiteralNode(U.parent)); + } + function O(U, j) { + var H; + if (!he(U.parameters, j)) + return false; + switch (U.kind) { + case 256: + return ee(U) && ve(U, j); + case 169: + if (e.isObjectLiteralExpression(U.parent)) { + var I = f(U.name, j); + return ((H = I == null ? void 0 : I.declarations) === null || H === void 0 ? void 0 : H.length) === 1 && ve(U, j); + } + return ve(U, j); + case 171: + return e.isClassDeclaration(U.parent) ? ee(U.parent) && ve(U, j) : x(U.parent.parent) && ve(U, j); + case 213: + case 214: + return x(U.parent); + } + return false; + } + function ve(U, j) { + return !!U.body && !j.isImplementationOfOverload(U); + } + function ee(U) { + if (!U.name) { + var j = e.findModifier(U, 88); + return !!j; + } + return true; + } + function he(U, j) { + return $(U) >= Q && e.every(U, function(H) { + return F(H, j); + }); + } + function F(U, j) { + if (e.isRestParameter(U)) { + var H = j.getTypeAtLocation(U); + if (!j.isArrayType(H) && !j.isTupleType(H)) + return false; + } + return !U.modifiers && !U.decorators && e.isIdentifier(U.name); + } + function x(U) { + return e.isVariableDeclaration(U) && e.isVarConst(U) && e.isIdentifier(U.name) && !U.type; + } + function X(U) { + return U.length > 0 && e.isThis(U[0].name); + } + function $(U) { + return X(U) ? U.length - 1 : U.length; + } + function A(U) { + return X(U) && (U = e.factory.createNodeArray(U.slice(1), U.hasTrailingComma)), U; + } + function y(U, j) { + return e.isIdentifier(j) && e.getTextOfIdentifierOrLiteral(j) === U ? e.factory.createShorthandPropertyAssignment(U) : e.factory.createPropertyAssignment(U, j); + } + function V(U, j) { + var H = A(U.parameters), I = e.isRestParameter(e.last(H)), l = I ? j.slice(0, H.length - 1) : j, d = e.map(l, function(ne, ue) { + var We = P(H[ue]), Fe = y(We, ne); + return e.suppressLeadingAndTrailingTrivia(Fe.name), e.isPropertyAssignment(Fe) && e.suppressLeadingAndTrailingTrivia(Fe.initializer), e.copyComments(ne, Fe), Fe; + }); + if (I && j.length >= H.length) { + var D = j.slice(H.length - 1), fe = e.factory.createPropertyAssignment(P(e.last(H)), e.factory.createArrayLiteralExpression(D)); + d.push(fe); + } + var g = e.factory.createObjectLiteralExpression(d, false); + return g; + } + function L(U, j, H) { + var I = j.getTypeChecker(), l = A(U.parameters), d = e.map(l, Fe), D = e.factory.createObjectBindingPattern(d), fe = Z(l), g; + e.every(l, Re) && (g = e.factory.createObjectLiteralExpression()); + var ne = e.factory.createParameterDeclaration(void 0, void 0, void 0, D, void 0, fe, g); + if (X(U.parameters)) { + var ue = U.parameters[0], We = e.factory.createParameterDeclaration(void 0, void 0, void 0, ue.name, void 0, ue.type); + return e.suppressLeadingAndTrailingTrivia(We.name), e.copyComments(ue.name, We.name), ue.type && (e.suppressLeadingAndTrailingTrivia(We.type), e.copyComments(ue.type, We.type)), e.factory.createNodeArray([We, ne]); + } + return e.factory.createNodeArray([ne]); + function Fe(ze) { + var Ee = e.factory.createBindingElement(void 0, void 0, P(ze), e.isRestParameter(ze) && Re(ze) ? e.factory.createArrayLiteralExpression() : ze.initializer); + return e.suppressLeadingAndTrailingTrivia(Ee), ze.initializer && Ee.initializer && e.copyComments(ze.initializer, Ee.initializer), Ee; + } + function Z(ze) { + var Ee = e.map(ze, Be), He = e.addEmitFlags(e.factory.createTypeLiteralNode(Ee), 1); + return He; + } + function Be(ze) { + var Ee = ze.type; + !Ee && (ze.initializer || e.isRestParameter(ze)) && (Ee = ge(ze)); + var He = e.factory.createPropertySignature(void 0, P(ze), Re(ze) ? e.factory.createToken(57) : ze.questionToken, Ee); + return e.suppressLeadingAndTrailingTrivia(He), e.copyComments(ze.name, He.name), ze.type && He.type && e.copyComments(ze.type, He.type), He; + } + function ge(ze) { + var Ee = I.getTypeAtLocation(ze); + return e.getTypeNodeIfAccessible(Ee, ze, j, H); + } + function Re(ze) { + if (e.isRestParameter(ze)) { + var Ee = I.getTypeAtLocation(ze); + return !I.isTupleType(Ee); + } + return I.isOptionalParameter(ze); + } + } + function P(U) { + return e.getTextOfIdentifierOrLiteral(U.name); + } + function k(U) { + switch (U.parent.kind) { + case 257: + var j = U.parent; + if (j.name) + return [j.name]; + var H = e.Debug.checkDefined(e.findModifier(j, 88), "Nameless class declaration should be a default export"); + return [H]; + case 226: + var I = U.parent, l = U.parent.parent, d = I.name; + return d ? [d, l.name] : [l.name]; + } + } + function Y(U) { + switch (U.kind) { + case 256: + if (U.name) + return [U.name]; + var j = e.Debug.checkDefined(e.findModifier(U, 88), "Nameless function declaration should be a default export"); + return [j]; + case 169: + return [U.name]; + case 171: + var H = e.Debug.checkDefined(e.findChildOfKind(U, 134, U.getSourceFile()), "Constructor declaration should have constructor keyword"); + if (U.parent.kind === 226) { + var I = U.parent.parent; + return [I.name, H]; + } + return [H]; + case 214: + return [U.parent.name]; + case 213: + return U.name ? [U.name, U.parent.name] : [U.parent.name]; + default: + return e.Debug.assertNever(U, "Unexpected function declaration kind ".concat(U.kind)); + } + } + })(w = C.convertParamsToDestructuredObject || (C.convertParamsToDestructuredObject = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Convert to template string", Q = e.getLocaleSpecificMessage(e.Diagnostics.Convert_to_template_string), le = { name: E, description: Q, kind: "refactor.rewrite.string" }; + C.registerRefactor(E, { kinds: [le.kind], getEditsForAction: m, getAvailableActions: N }); + function N(ve) { + var ee = ve.file, he = ve.startPosition, F = p(ee, he), x = f(F), X = { name: E, description: Q, actions: [] }; + return e.isBinaryExpression(x) && T(x).isValidConcatenation ? (X.actions.push(le), [X]) : ve.preferences.provideRefactorNotApplicableReason ? (X.actions.push(Ke(Ke({}, le), { notApplicableReason: e.getLocaleSpecificMessage(e.Diagnostics.Can_only_convert_string_concatenation) })), [X]) : e.emptyArray; + } + function p(ve, ee) { + var he = e.getTokenAtPosition(ve, ee), F = f(he), x = !T(F).isValidConcatenation; + return x && e.isParenthesizedExpression(F.parent) && e.isBinaryExpression(F.parent.parent) ? F.parent.parent : he; + } + function m(ve, ee) { + var he = ve.file, F = ve.startPosition, x = p(he, F); + switch (ee) { + case Q: + return { edits: G(ve, x) }; + default: + return e.Debug.fail("invalid action"); + } + } + function G(ve, ee) { + var he = f(ee), F = ve.file, x = R(T(he), F), X = e.getTrailingCommentRanges(F.text, he.end); + if (X) { + var $ = X[X.length - 1], A = { pos: X[0].pos, end: $.end }; + return e.textChanges.ChangeTracker.with(ve, function(y) { + y.deleteRange(F, A), y.replaceNode(F, he, x); + }); + } else + return e.textChanges.ChangeTracker.with(ve, function(y) { + return y.replaceNode(F, he, x); + }); + } + function oe(ve) { + return ve.operatorToken.kind !== 63; + } + function f(ve) { + var ee = e.findAncestor(ve.parent, function(he) { + switch (he.kind) { + case 206: + case 207: + return false; + case 223: + case 221: + return !(e.isBinaryExpression(he.parent) && oe(he.parent)); + default: + return "quit"; + } + }); + return ee || ve; + } + function T(ve) { + var ee = function(A) { + if (!e.isBinaryExpression(A)) + return { nodes: [A], operators: [], validOperators: true, hasString: e.isStringLiteral(A) || e.isNoSubstitutionTemplateLiteral(A) }; + var y = ee(A.left), V = y.nodes, L = y.operators, P = y.hasString, k = y.validOperators; + if (!(P || e.isStringLiteral(A.right) || e.isTemplateExpression(A.right))) + return { nodes: [A], operators: [], hasString: false, validOperators: true }; + var Y = A.operatorToken.kind === 39, U = k && Y; + return V.push(A.right), L.push(A.operatorToken), { nodes: V, operators: L, hasString: true, validOperators: U }; + }, he = ee(ve), F = he.nodes, x = he.operators, X = he.validOperators, $ = he.hasString; + return { nodes: F, operators: x, isValidConcatenation: X && $ }; + } + var K = function(ve, ee) { + return function(he, F) { + he < ve.length && e.copyTrailingComments(ve[he], F, ee, 3, false); + }; + }, b = function(ve, ee, he) { + return function(F, x) { + for (; F.length > 0; ) { + var X = F.shift(); + e.copyTrailingComments(ve[X], x, ee, 3, false), he(X, x); + } + }; + }; + function se(ve) { + return ve.replace(/\\.|[$`]/g, function(ee) { + return ee[0] === "\\" ? ee : "\\" + ee; + }); + } + function J(ve) { + var ee = e.isTemplateHead(ve) || e.isTemplateMiddle(ve) ? -2 : -1; + return e.getTextOfNode(ve).slice(1, ee); + } + function ie(ve, ee) { + for (var he = [], F = "", x = ""; ve < ee.length; ) { + var X = ee[ve]; + if (e.isStringLiteralLike(X)) + F += X.text, x += se(e.getTextOfNode(X).slice(1, -1)), he.push(ve), ve++; + else if (e.isTemplateExpression(X)) { + F += X.head.text, x += J(X.head); + break; + } else + break; + } + return [ve, F, x, he]; + } + function R(ve, ee) { + var he = ve.nodes, F = ve.operators, x = K(F, ee), X = b(he, ee, x), $ = ie(0, he), A = $[0], y = $[1], V = $[2], L = $[3]; + if (A === he.length) { + var P = e.factory.createNoSubstitutionTemplateLiteral(y, V); + return X(L, P), P; + } + var k = [], Y = e.factory.createTemplateHead(y, V); + X(L, Y); + for (var U = function(I) { + var l = O(he[I]); + x(I, l); + var d = ie(I + 1, he), D = d[0], fe = d[1], g = d[2], ne = d[3]; + I = D - 1; + var ue = I === he.length - 1; + if (e.isTemplateExpression(l)) { + var We = e.map(l.templateSpans, function(Z, Be) { + q(Z); + var ge = Be === l.templateSpans.length - 1, Re = Z.literal.text + (ge ? fe : ""), ze = J(Z.literal) + (ge ? g : ""); + return e.factory.createTemplateSpan(Z.expression, ue && ge ? e.factory.createTemplateTail(Re, ze) : e.factory.createTemplateMiddle(Re, ze)); + }); + k.push.apply(k, We); + } else { + var Fe = ue ? e.factory.createTemplateTail(fe, g) : e.factory.createTemplateMiddle(fe, g); + X(ne, Fe), k.push(e.factory.createTemplateSpan(l, Fe)); + } + j = I; + }, j, H = A; H < he.length; H++) + U(H), H = j; + return e.factory.createTemplateExpression(Y, k); + } + function q(ve) { + var ee = ve.getSourceFile(); + e.copyTrailingComments(ve, ve.expression, ee, 3, false), e.copyTrailingAsLeadingComments(ve.expression, ve.expression, ee, 3, false); + } + function O(ve) { + return e.isParenthesizedExpression(ve) && (q(ve), ve = ve.expression), ve; + } + })(w = C.convertStringOrTemplateLiteral || (C.convertStringOrTemplateLiteral = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Convert arrow function or function expression", Q = e.getLocaleSpecificMessage(e.Diagnostics.Convert_arrow_function_or_function_expression), le = { name: "Convert to anonymous function", description: e.getLocaleSpecificMessage(e.Diagnostics.Convert_to_anonymous_function), kind: "refactor.rewrite.function.anonymous" }, N = { name: "Convert to named function", description: e.getLocaleSpecificMessage(e.Diagnostics.Convert_to_named_function), kind: "refactor.rewrite.function.named" }, p = { name: "Convert to arrow function", description: e.getLocaleSpecificMessage(e.Diagnostics.Convert_to_arrow_function), kind: "refactor.rewrite.function.arrow" }; + C.registerRefactor(E, { kinds: [le.kind, N.kind, p.kind], getEditsForAction: G, getAvailableActions: m }); + function m(ve) { + var ee = ve.file, he = ve.startPosition, F = ve.program, x = ve.kind, X = f(ee, he, F); + if (!X) + return e.emptyArray; + var $ = X.selectedVariableDeclaration, A = X.func, y = [], V = []; + if (C.refactorKindBeginsWith(N.kind, x)) { + var L = $ || e.isArrowFunction(A) && e.isVariableDeclaration(A.parent) ? void 0 : e.getLocaleSpecificMessage(e.Diagnostics.Could_not_convert_to_named_function); + L ? V.push(Ke(Ke({}, N), { notApplicableReason: L })) : y.push(N); + } + if (C.refactorKindBeginsWith(le.kind, x)) { + var L = !$ && e.isArrowFunction(A) ? void 0 : e.getLocaleSpecificMessage(e.Diagnostics.Could_not_convert_to_anonymous_function); + L ? V.push(Ke(Ke({}, le), { notApplicableReason: L })) : y.push(le); + } + if (C.refactorKindBeginsWith(p.kind, x)) { + var L = e.isFunctionExpression(A) ? void 0 : e.getLocaleSpecificMessage(e.Diagnostics.Could_not_convert_to_arrow_function); + L ? V.push(Ke(Ke({}, p), { notApplicableReason: L })) : y.push(p); + } + return [{ name: E, description: Q, actions: y.length === 0 && ve.preferences.provideRefactorNotApplicableReason ? V : y }]; + } + function G(ve, ee) { + var he = ve.file, F = ve.startPosition, x = ve.program, X = f(he, F, x); + if (!!X) { + var $ = X.func, A = []; + switch (ee) { + case le.name: + A.push.apply(A, J(ve, $)); + break; + case N.name: + var y = se($); + if (!y) + return; + A.push.apply(A, ie(ve, $, y)); + break; + case p.name: + if (!e.isFunctionExpression($)) + return; + A.push.apply(A, R(ve, $)); + break; + default: + return e.Debug.fail("invalid action"); + } + return { renameFilename: void 0, renameLocation: void 0, edits: A }; + } + } + function oe(ve) { + var ee = false; + return ve.forEachChild(function he(F) { + if (e.isThis(F)) { + ee = true; + return; + } + !e.isClassLike(F) && !e.isFunctionDeclaration(F) && !e.isFunctionExpression(F) && e.forEachChild(F, he); + }), ee; + } + function f(ve, ee, he) { + var F = e.getTokenAtPosition(ve, ee), x = he.getTypeChecker(), X = K(ve, x, F.parent); + if (X && !oe(X.body) && !x.containsArgumentsReference(X)) + return { selectedVariableDeclaration: true, func: X }; + var $ = e.getContainingFunction(F); + if ($ && (e.isFunctionExpression($) || e.isArrowFunction($)) && !e.rangeContainsRange($.body, F) && !oe($.body) && !x.containsArgumentsReference($)) + return e.isFunctionExpression($) && O(ve, x, $) ? void 0 : { selectedVariableDeclaration: false, func: $ }; + } + function T(ve) { + return e.isVariableDeclaration(ve) || e.isVariableDeclarationList(ve) && ve.declarations.length === 1; + } + function K(ve, ee, he) { + if (!!T(he)) { + var F = e.isVariableDeclaration(he) ? he : e.first(he.declarations), x = F.initializer; + if (x && (e.isArrowFunction(x) || e.isFunctionExpression(x) && !O(ve, ee, x))) + return x; + } + } + function b(ve) { + if (e.isExpression(ve)) { + var ee = e.factory.createReturnStatement(ve), he = ve.getSourceFile(); + return e.suppressLeadingAndTrailingTrivia(ee), e.copyTrailingAsLeadingComments(ve, ee, he, void 0, true), e.factory.createBlock([ee], true); + } else + return ve; + } + function se(ve) { + var ee = ve.parent; + if (!(!e.isVariableDeclaration(ee) || !e.isVariableDeclarationInVariableStatement(ee))) { + var he = ee.parent, F = he.parent; + if (!(!e.isVariableDeclarationList(he) || !e.isVariableStatement(F) || !e.isIdentifier(ee.name))) + return { variableDeclaration: ee, variableDeclarationList: he, statement: F, name: ee.name }; + } + } + function J(ve, ee) { + var he = ve.file, F = b(ee.body), x = e.factory.createFunctionExpression(ee.modifiers, ee.asteriskToken, void 0, ee.typeParameters, ee.parameters, ee.type, F); + return e.textChanges.ChangeTracker.with(ve, function(X) { + return X.replaceNode(he, ee, x); + }); + } + function ie(ve, ee, he) { + var F = ve.file, x = b(ee.body), X = he.variableDeclaration, $ = he.variableDeclarationList, A = he.statement, y = he.name; + e.suppressLeadingTrivia(A); + var V = e.getCombinedModifierFlags(X) & 1 | e.getEffectiveModifierFlags(ee), L = e.factory.createModifiersFromModifierFlags(V), P = e.factory.createFunctionDeclaration(ee.decorators, e.length(L) ? L : void 0, ee.asteriskToken, y, ee.typeParameters, ee.parameters, ee.type, x); + return $.declarations.length === 1 ? e.textChanges.ChangeTracker.with(ve, function(k) { + return k.replaceNode(F, A, P); + }) : e.textChanges.ChangeTracker.with(ve, function(k) { + k.delete(F, X), k.insertNodeAfter(F, A, P); + }); + } + function R(ve, ee) { + var he = ve.file, F = ee.body.statements, x = F[0], X; + q(ee.body, x) ? (X = x.expression, e.suppressLeadingAndTrailingTrivia(X), e.copyComments(x, X)) : X = ee.body; + var $ = e.factory.createArrowFunction(ee.modifiers, ee.typeParameters, ee.parameters, ee.type, e.factory.createToken(38), X); + return e.textChanges.ChangeTracker.with(ve, function(A) { + return A.replaceNode(he, ee, $); + }); + } + function q(ve, ee) { + return ve.statements.length === 1 && e.isReturnStatement(ee) && !!ee.expression; + } + function O(ve, ee, he) { + return !!he.name && e.FindAllReferences.Core.isSymbolReferencedInFile(he.name, ee, ve); + } + })(w = C.convertArrowFunctionOrFunctionExpression || (C.convertArrowFunctionOrFunctionExpression = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + var w; + (function(B) { + var E = "Infer function return type", Q = e.Diagnostics.Infer_function_return_type.message, le = { name: E, description: Q, kind: "refactor.rewrite.function.returnType" }; + C.registerRefactor(E, { kinds: [le.kind], getEditsForAction: N, getAvailableActions: p }); + function N(T) { + var K = G(T); + if (K && !C.isRefactorErrorInfo(K)) { + var b = e.textChanges.ChangeTracker.with(T, function(se) { + return m(T.file, se, K.declaration, K.returnTypeNode); + }); + return { renameFilename: void 0, renameLocation: void 0, edits: b }; + } + } + function p(T) { + var K = G(T); + return K ? C.isRefactorErrorInfo(K) ? T.preferences.provideRefactorNotApplicableReason ? [{ name: E, description: Q, actions: [Ke(Ke({}, le), { notApplicableReason: K.error })] }] : e.emptyArray : [{ name: E, description: Q, actions: [le] }] : e.emptyArray; + } + function m(T, K, b, se) { + var J = e.findChildOfKind(b, 21, T), ie = e.isArrowFunction(b) && J === void 0, R = ie ? e.first(b.parameters) : J; + R && (ie && (K.insertNodeBefore(T, R, e.factory.createToken(20)), K.insertNodeAfter(T, R, e.factory.createToken(21))), K.insertNodeAt(T, R.end, se, { prefix: ": " })); + } + function G(T) { + if (!(e.isInJSFile(T.file) || !C.refactorKindBeginsWith(le.kind, T.kind))) { + var K = e.getTokenAtPosition(T.file, T.startPosition), b = e.findAncestor(K, function(R) { + return e.isBlock(R) || R.parent && e.isArrowFunction(R.parent) && (R.kind === 38 || R.parent.body === R) ? "quit" : oe(R); + }); + if (!b || !b.body || b.type) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Return_type_must_be_inferred_from_a_function) }; + var se = T.program.getTypeChecker(), J = f(se, b); + if (!J) + return { error: e.getLocaleSpecificMessage(e.Diagnostics.Could_not_determine_function_return_type) }; + var ie = se.typeToTypeNode(J, b, 1); + if (ie) + return { declaration: b, returnTypeNode: ie }; + } + } + function oe(T) { + switch (T.kind) { + case 256: + case 213: + case 214: + case 169: + return true; + default: + return false; + } + } + function f(T, K) { + if (T.isImplementationOfOverload(K)) { + var b = T.getTypeAtLocation(K).getCallSignatures(); + if (b.length > 1) + return T.getUnionType(e.mapDefined(b, function(J) { + return J.getReturnType(); + })); + } + var se = T.getSignatureFromDeclaration(K); + if (se) + return T.getReturnTypeOfSignature(se); + } + })(w = C.inferFunctionReturnType || (C.inferFunctionReturnType = {})); + })(a = e.refactor || (e.refactor = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + e.servicesVersion = "0.8"; + function a(g, ne, ue, We) { + var Fe = e.isNodeKind(g) ? new C(g, ne, ue) : g === 79 ? new p(79, ne, ue) : g === 80 ? new m(80, ne, ue) : new N(g, ne, ue); + return Fe.parent = We, Fe.flags = We.flags & 50720768, Fe; + } + var C = function() { + function g(ne, ue, We) { + this.pos = ue, this.end = We, this.flags = 0, this.modifierFlagsCache = 0, this.transformFlags = 0, this.parent = void 0, this.kind = ne; + } + return g.prototype.assertHasRealPosition = function(ne) { + e.Debug.assert(!e.positionIsSynthesized(this.pos) && !e.positionIsSynthesized(this.end), ne || "Node must have a real position for this operation"); + }, g.prototype.getSourceFile = function() { + return e.getSourceFileOfNode(this); + }, g.prototype.getStart = function(ne, ue) { + return this.assertHasRealPosition(), e.getTokenPosOfNode(this, ne, ue); + }, g.prototype.getFullStart = function() { + return this.assertHasRealPosition(), this.pos; + }, g.prototype.getEnd = function() { + return this.assertHasRealPosition(), this.end; + }, g.prototype.getWidth = function(ne) { + return this.assertHasRealPosition(), this.getEnd() - this.getStart(ne); + }, g.prototype.getFullWidth = function() { + return this.assertHasRealPosition(), this.end - this.pos; + }, g.prototype.getLeadingTriviaWidth = function(ne) { + return this.assertHasRealPosition(), this.getStart(ne) - this.pos; + }, g.prototype.getFullText = function(ne) { + return this.assertHasRealPosition(), (ne || this.getSourceFile()).text.substring(this.pos, this.end); + }, g.prototype.getText = function(ne) { + return this.assertHasRealPosition(), ne || (ne = this.getSourceFile()), ne.text.substring(this.getStart(ne), this.getEnd()); + }, g.prototype.getChildCount = function(ne) { + return this.getChildren(ne).length; + }, g.prototype.getChildAt = function(ne, ue) { + return this.getChildren(ue)[ne]; + }, g.prototype.getChildren = function(ne) { + return this.assertHasRealPosition("Node without a real position cannot be scanned and thus has no token nodes - use forEachChild and collect the result if that's fine"), this._children || (this._children = w(this, ne)); + }, g.prototype.getFirstToken = function(ne) { + this.assertHasRealPosition(); + var ue = this.getChildren(ne); + if (!!ue.length) { + var We = e.find(ue, function(Fe) { + return Fe.kind < 309 || Fe.kind > 347; + }); + return We.kind < 161 ? We : We.getFirstToken(ne); + } + }, g.prototype.getLastToken = function(ne) { + this.assertHasRealPosition(); + var ue = this.getChildren(ne), We = e.lastOrUndefined(ue); + if (!!We) + return We.kind < 161 ? We : We.getLastToken(ne); + }, g.prototype.forEachChild = function(ne, ue) { + return e.forEachChild(this, ne, ue); + }, g; + }(); + function w(g, ne) { + if (!e.isNodeKind(g.kind)) + return e.emptyArray; + var ue = []; + if (e.isJSDocCommentContainingNode(g)) + return g.forEachChild(function(Be) { + ue.push(Be); + }), ue; + e.scanner.setText((ne || g.getSourceFile()).text); + var We = g.pos, Fe = function(Be) { + B(ue, We, Be.pos, g), ue.push(Be), We = Be.end; + }, Z = function(Be) { + B(ue, We, Be.pos, g), ue.push(E(Be, g)), We = Be.end; + }; + return e.forEach(g.jsDoc, Fe), We = g.pos, g.forEachChild(Fe, Z), B(ue, We, g.end, g), e.scanner.setText(void 0), ue; + } + function B(g, ne, ue, We) { + for (e.scanner.setTextPos(ne); ne < ue; ) { + var Fe = e.scanner.scan(), Z = e.scanner.getTextPos(); + if (Z <= ue && (Fe === 79 && e.Debug.fail("Did not expect ".concat(e.Debug.formatSyntaxKind(We.kind), " to have an Identifier in its trivia")), g.push(a(Fe, ne, Z, We))), ne = Z, Fe === 1) + break; + } + } + function E(g, ne) { + var ue = a(348, g.pos, g.end, ne); + ue._children = []; + for (var We = g.pos, Fe = 0, Z = g; Fe < Z.length; Fe++) { + var Be = Z[Fe]; + B(ue._children, We, Be.pos, ne), ue._children.push(Be), We = Be.end; + } + return B(ue._children, We, g.end, ne), ue; + } + var Q = function() { + function g(ne, ue) { + this.pos = ne, this.end = ue, this.flags = 0, this.modifierFlagsCache = 0, this.transformFlags = 0, this.parent = void 0; + } + return g.prototype.getSourceFile = function() { + return e.getSourceFileOfNode(this); + }, g.prototype.getStart = function(ne, ue) { + return e.getTokenPosOfNode(this, ne, ue); + }, g.prototype.getFullStart = function() { + return this.pos; + }, g.prototype.getEnd = function() { + return this.end; + }, g.prototype.getWidth = function(ne) { + return this.getEnd() - this.getStart(ne); + }, g.prototype.getFullWidth = function() { + return this.end - this.pos; + }, g.prototype.getLeadingTriviaWidth = function(ne) { + return this.getStart(ne) - this.pos; + }, g.prototype.getFullText = function(ne) { + return (ne || this.getSourceFile()).text.substring(this.pos, this.end); + }, g.prototype.getText = function(ne) { + return ne || (ne = this.getSourceFile()), ne.text.substring(this.getStart(ne), this.getEnd()); + }, g.prototype.getChildCount = function() { + return this.getChildren().length; + }, g.prototype.getChildAt = function(ne) { + return this.getChildren()[ne]; + }, g.prototype.getChildren = function() { + return this.kind === 1 && this.jsDoc || e.emptyArray; + }, g.prototype.getFirstToken = function() { + }, g.prototype.getLastToken = function() { + }, g.prototype.forEachChild = function() { + }, g; + }(), le = function() { + function g(ne, ue) { + this.flags = ne, this.escapedName = ue; + } + return g.prototype.getFlags = function() { + return this.flags; + }, Object.defineProperty(g.prototype, "name", { get: function() { + return e.symbolName(this); + }, enumerable: false, configurable: true }), g.prototype.getEscapedName = function() { + return this.escapedName; + }, g.prototype.getName = function() { + return this.name; + }, g.prototype.getDeclarations = function() { + return this.declarations; + }, g.prototype.getDocumentationComment = function(ne) { + if (!this.documentationComment) + if (this.documentationComment = e.emptyArray, !this.declarations && this.target && this.target.tupleLabelDeclaration) { + var ue = this.target.tupleLabelDeclaration; + this.documentationComment = K([ue], ne); + } else + this.documentationComment = K(this.declarations, ne); + return this.documentationComment; + }, g.prototype.getContextualDocumentationComment = function(ne, ue) { + switch (ne == null ? void 0 : ne.kind) { + case 172: + return this.contextualGetAccessorDocumentationComment || (this.contextualGetAccessorDocumentationComment = K(e.filter(this.declarations, e.isGetAccessor), ue)), this.contextualGetAccessorDocumentationComment; + case 173: + return this.contextualSetAccessorDocumentationComment || (this.contextualSetAccessorDocumentationComment = K(e.filter(this.declarations, e.isSetAccessor), ue)), this.contextualSetAccessorDocumentationComment; + default: + return this.getDocumentationComment(ue); + } + }, g.prototype.getJsDocTags = function(ne) { + return this.tags === void 0 && (this.tags = T(this.declarations, ne)), this.tags; + }, g.prototype.getContextualJsDocTags = function(ne, ue) { + switch (ne == null ? void 0 : ne.kind) { + case 172: + return this.contextualGetAccessorTags || (this.contextualGetAccessorTags = T(e.filter(this.declarations, e.isGetAccessor), ue)), this.contextualGetAccessorTags; + case 173: + return this.contextualSetAccessorTags || (this.contextualSetAccessorTags = T(e.filter(this.declarations, e.isSetAccessor), ue)), this.contextualSetAccessorTags; + default: + return this.getJsDocTags(ue); + } + }, g; + }(), N = function(g) { + Lr(ne, g); + function ne(ue, We, Fe) { + var Z = g.call(this, We, Fe) || this; + return Z.kind = ue, Z; + } + return ne; + }(Q), p = function(g) { + Lr(ne, g); + function ne(ue, We, Fe) { + var Z = g.call(this, We, Fe) || this; + return Z.kind = 79, Z; + } + return Object.defineProperty(ne.prototype, "text", { get: function() { + return e.idText(this); + }, enumerable: false, configurable: true }), ne; + }(Q); + p.prototype.kind = 79; + var m = function(g) { + Lr(ne, g); + function ne(ue, We, Fe) { + return g.call(this, We, Fe) || this; + } + return Object.defineProperty(ne.prototype, "text", { get: function() { + return e.idText(this); + }, enumerable: false, configurable: true }), ne; + }(Q); + m.prototype.kind = 80; + var G = function() { + function g(ne, ue) { + this.checker = ne, this.flags = ue; + } + return g.prototype.getFlags = function() { + return this.flags; + }, g.prototype.getSymbol = function() { + return this.symbol; + }, g.prototype.getProperties = function() { + return this.checker.getPropertiesOfType(this); + }, g.prototype.getProperty = function(ne) { + return this.checker.getPropertyOfType(this, ne); + }, g.prototype.getApparentProperties = function() { + return this.checker.getAugmentedPropertiesOfType(this); + }, g.prototype.getCallSignatures = function() { + return this.checker.getSignaturesOfType(this, 0); + }, g.prototype.getConstructSignatures = function() { + return this.checker.getSignaturesOfType(this, 1); + }, g.prototype.getStringIndexType = function() { + return this.checker.getIndexTypeOfType(this, 0); + }, g.prototype.getNumberIndexType = function() { + return this.checker.getIndexTypeOfType(this, 1); + }, g.prototype.getBaseTypes = function() { + return this.isClassOrInterface() ? this.checker.getBaseTypes(this) : void 0; + }, g.prototype.isNullableType = function() { + return this.checker.isNullableType(this); + }, g.prototype.getNonNullableType = function() { + return this.checker.getNonNullableType(this); + }, g.prototype.getNonOptionalType = function() { + return this.checker.getNonOptionalType(this); + }, g.prototype.getConstraint = function() { + return this.checker.getBaseConstraintOfType(this); + }, g.prototype.getDefault = function() { + return this.checker.getDefaultFromTypeParameter(this); + }, g.prototype.isUnion = function() { + return !!(this.flags & 1048576); + }, g.prototype.isIntersection = function() { + return !!(this.flags & 2097152); + }, g.prototype.isUnionOrIntersection = function() { + return !!(this.flags & 3145728); + }, g.prototype.isLiteral = function() { + return !!(this.flags & 384); + }, g.prototype.isStringLiteral = function() { + return !!(this.flags & 128); + }, g.prototype.isNumberLiteral = function() { + return !!(this.flags & 256); + }, g.prototype.isTypeParameter = function() { + return !!(this.flags & 262144); + }, g.prototype.isClassOrInterface = function() { + return !!(e.getObjectFlags(this) & 3); + }, g.prototype.isClass = function() { + return !!(e.getObjectFlags(this) & 1); + }, g.prototype.isIndexType = function() { + return !!(this.flags & 4194304); + }, Object.defineProperty(g.prototype, "typeArguments", { get: function() { + if (e.getObjectFlags(this) & 4) + return this.checker.getTypeArguments(this); + }, enumerable: false, configurable: true }), g; + }(), oe = function() { + function g(ne, ue) { + this.checker = ne, this.flags = ue; + } + return g.prototype.getDeclaration = function() { + return this.declaration; + }, g.prototype.getTypeParameters = function() { + return this.typeParameters; + }, g.prototype.getParameters = function() { + return this.parameters; + }, g.prototype.getReturnType = function() { + return this.checker.getReturnTypeOfSignature(this); + }, g.prototype.getTypeParameterAtPosition = function(ne) { + var ue = this.checker.getParameterType(this, ne); + if (ue.isIndexType() && e.isThisTypeParameter(ue.type)) { + var We = ue.type.getConstraint(); + if (We) + return this.checker.getIndexType(We); + } + return ue; + }, g.prototype.getDocumentationComment = function() { + return this.documentationComment || (this.documentationComment = K(e.singleElementArray(this.declaration), this.checker)); + }, g.prototype.getJsDocTags = function() { + return this.jsDocTags || (this.jsDocTags = T(e.singleElementArray(this.declaration), this.checker)); + }, g; + }(); + function f(g) { + return e.getJSDocTags(g).some(function(ne) { + return ne.tagName.text === "inheritDoc"; + }); + } + function T(g, ne) { + if (!g) + return e.emptyArray; + var ue = e.JsDoc.getJsDocTagsFromDeclarations(g, ne); + if (ne && (ue.length === 0 || g.some(f))) + for (var We = new e.Set(), Fe = function(Re) { + var ze = b(ne, Re, function(Ee) { + var He; + if (!We.has(Ee)) + return We.add(Ee), Re.kind === 172 || Re.kind === 173 ? Ee.getContextualJsDocTags(Re, ne) : ((He = Ee.declarations) === null || He === void 0 ? void 0 : He.length) === 1 ? Ee.getJsDocTags() : void 0; + }); + ze && (ue = Ve(Ve([], ze, true), ue, true)); + }, Z = 0, Be = g; Z < Be.length; Z++) { + var ge = Be[Z]; + Fe(ge); + } + return ue; + } + function K(g, ne) { + if (!g) + return e.emptyArray; + var ue = e.JsDoc.getJsDocCommentsFromDeclarations(g, ne); + if (ne && (ue.length === 0 || g.some(f))) + for (var We = new e.Set(), Fe = function(Re) { + var ze = b(ne, Re, function(Ee) { + if (!We.has(Ee)) + return We.add(Ee), Re.kind === 172 || Re.kind === 173 ? Ee.getContextualDocumentationComment(Re, ne) : Ee.getDocumentationComment(ne); + }); + ze && (ue = ue.length === 0 ? ze.slice() : ze.concat(e.lineBreakPart(), ue)); + }, Z = 0, Be = g; Z < Be.length; Z++) { + var ge = Be[Z]; + Fe(ge); + } + return ue; + } + function b(g, ne, ue) { + var We; + if (!e.hasStaticModifier(ne)) { + var Fe = ((We = ne.parent) === null || We === void 0 ? void 0 : We.kind) === 171 ? ne.parent.parent : ne.parent; + if (!!Fe) + return e.firstDefined(e.getAllSuperTypeNodes(Fe), function(Z) { + var Be = g.getPropertyOfType(g.getTypeAtLocation(Z), ne.symbol.name); + return Be ? ue(Be) : void 0; + }); + } + } + var se = function(g) { + Lr(ne, g); + function ne(ue, We, Fe) { + var Z = g.call(this, ue, We, Fe) || this; + return Z.kind = 305, Z; + } + return ne.prototype.update = function(ue, We) { + return e.updateSourceFile(this, ue, We); + }, ne.prototype.getLineAndCharacterOfPosition = function(ue) { + return e.getLineAndCharacterOfPosition(this, ue); + }, ne.prototype.getLineStarts = function() { + return e.getLineStarts(this); + }, ne.prototype.getPositionOfLineAndCharacter = function(ue, We, Fe) { + return e.computePositionOfLineAndCharacter(e.getLineStarts(this), ue, We, this.text, Fe); + }, ne.prototype.getLineEndOfPosition = function(ue) { + var We = this.getLineAndCharacterOfPosition(ue).line, Fe = this.getLineStarts(), Z; + We + 1 >= Fe.length && (Z = this.getEnd()), Z || (Z = Fe[We + 1] - 1); + var Be = this.getFullText(); + return Be[Z] === ` +` && Be[Z - 1] === "\r" ? Z - 1 : Z; + }, ne.prototype.getNamedDeclarations = function() { + return this.namedDeclarations || (this.namedDeclarations = this.computeNamedDeclarations()), this.namedDeclarations; + }, ne.prototype.computeNamedDeclarations = function() { + var ue = e.createMultiMap(); + return this.forEachChild(Be), ue; + function We(ge) { + var Re = Z(ge); + Re && ue.add(Re, ge); + } + function Fe(ge) { + var Re = ue.get(ge); + return Re || ue.set(ge, Re = []), Re; + } + function Z(ge) { + var Re = e.getNonAssignedNameOfDeclaration(ge); + return Re && (e.isComputedPropertyName(Re) && e.isPropertyAccessExpression(Re.expression) ? Re.expression.name.text : e.isPropertyName(Re) ? e.getNameFromPropertyName(Re) : void 0); + } + function Be(ge) { + switch (ge.kind) { + case 256: + case 213: + case 169: + case 168: + var Re = ge, ze = Z(Re); + if (ze) { + var Ee = Fe(ze), He = e.lastOrUndefined(Ee); + He && Re.parent === He.parent && Re.symbol === He.symbol ? Re.body && !He.body && (Ee[Ee.length - 1] = Re) : Ee.push(Re); + } + e.forEachChild(ge, Be); + break; + case 257: + case 226: + case 258: + case 259: + case 260: + case 261: + case 265: + case 275: + case 270: + case 267: + case 268: + case 172: + case 173: + case 182: + We(ge), e.forEachChild(ge, Be); + break; + case 164: + if (!e.hasSyntacticModifier(ge, 16476)) + break; + case 254: + case 203: { + var rr = ge; + if (e.isBindingPattern(rr.name)) { + e.forEachChild(rr.name, Be); + break; + } + rr.initializer && Be(rr.initializer); + } + case 299: + case 167: + case 166: + We(ge); + break; + case 272: + var Ie = ge; + Ie.exportClause && (e.isNamedExports(Ie.exportClause) ? e.forEach(Ie.exportClause.elements, Be) : Be(Ie.exportClause.name)); + break; + case 266: + var _e = ge.importClause; + _e && (_e.name && We(_e.name), _e.namedBindings && (_e.namedBindings.kind === 268 ? We(_e.namedBindings) : e.forEach(_e.namedBindings.elements, Be))); + break; + case 221: + e.getAssignmentDeclarationKind(ge) !== 0 && We(ge); + default: + e.forEachChild(ge, Be); + } + } + }, ne; + }(C), J = function() { + function g(ne, ue, We) { + this.fileName = ne, this.text = ue, this.skipTrivia = We; + } + return g.prototype.getLineAndCharacterOfPosition = function(ne) { + return e.getLineAndCharacterOfPosition(this, ne); + }, g; + }(); + function ie() { + return { getNodeConstructor: function() { + return C; + }, getTokenConstructor: function() { + return N; + }, getIdentifierConstructor: function() { + return p; + }, getPrivateIdentifierConstructor: function() { + return m; + }, getSourceFileConstructor: function() { + return se; + }, getSymbolConstructor: function() { + return le; + }, getTypeConstructor: function() { + return G; + }, getSignatureConstructor: function() { + return oe; + }, getSourceMapSourceConstructor: function() { + return J; + } }; + } + function R(g) { + var ne = true; + for (var ue in g) + if (e.hasProperty(g, ue) && !q(ue)) { + ne = false; + break; + } + if (ne) + return g; + var We = {}; + for (var ue in g) + if (e.hasProperty(g, ue)) { + var Fe = q(ue) ? ue : ue.charAt(0).toLowerCase() + ue.substr(1); + We[Fe] = g[ue]; + } + return We; + } + e.toEditorSettings = R; + function q(g) { + return !g.length || g.charAt(0) === g.charAt(0).toLowerCase(); + } + function O(g) { + return g ? e.map(g, function(ne) { + return ne.text; + }).join("") : ""; + } + e.displayPartsToString = O; + function ve() { + return { target: 1, jsx: 1 }; + } + e.getDefaultCompilerOptions = ve; + function ee() { + return e.codefix.getSupportedErrorCodes(); + } + e.getSupportedCodeFixes = ee; + var he = function() { + function g(ne, ue) { + this.host = ne, this.currentDirectory = ne.getCurrentDirectory(), this.fileNameToEntry = new e.Map(); + var We = ne.getScriptFileNames(); + e.tracing === null || e.tracing === void 0 || e.tracing.push("session", "initializeHostCache", { count: We.length }); + for (var Fe = 0, Z = We; Fe < Z.length; Fe++) { + var Be = Z[Fe]; + this.createEntry(Be, e.toPath(Be, this.currentDirectory, ue)); + } + e.tracing === null || e.tracing === void 0 || e.tracing.pop(); + } + return g.prototype.createEntry = function(ne, ue) { + var We, Fe = this.host.getScriptSnapshot(ne); + return Fe ? We = { hostFileName: ne, version: this.host.getScriptVersion(ne), scriptSnapshot: Fe, scriptKind: e.getScriptKind(ne, this.host) } : We = ne, this.fileNameToEntry.set(ue, We), We; + }, g.prototype.getEntryByPath = function(ne) { + return this.fileNameToEntry.get(ne); + }, g.prototype.getHostFileInformation = function(ne) { + var ue = this.fileNameToEntry.get(ne); + return e.isString(ue) ? void 0 : ue; + }, g.prototype.getOrCreateEntryByPath = function(ne, ue) { + var We = this.getEntryByPath(ue) || this.createEntry(ne, ue); + return e.isString(We) ? void 0 : We; + }, g.prototype.getRootFileNames = function() { + var ne = []; + return this.fileNameToEntry.forEach(function(ue) { + e.isString(ue) ? ne.push(ue) : ne.push(ue.hostFileName); + }), ne; + }, g.prototype.getScriptSnapshot = function(ne) { + var ue = this.getHostFileInformation(ne); + return ue && ue.scriptSnapshot; + }, g; + }(), F = function() { + function g(ne) { + this.host = ne; + } + return g.prototype.getCurrentSourceFile = function(ne) { + var ue, We, Fe, Z, Be, ge, Re, ze, Ee = this.host.getScriptSnapshot(ne); + if (!Ee) + throw new Error("Could not find file: '" + ne + "'."); + var He = e.getScriptKind(ne, this.host), rr = this.host.getScriptVersion(ne), Ie; + if (this.currentFileName !== ne) { + var _e = { languageVersion: 99, impliedNodeFormat: e.getImpliedNodeFormatForFile(e.toPath(ne, this.host.getCurrentDirectory(), ((Fe = (We = (ue = this.host).getCompilerHost) === null || We === void 0 ? void 0 : We.call(ue)) === null || Fe === void 0 ? void 0 : Fe.getCanonicalFileName) || e.hostGetCanonicalFileName(this.host)), (ze = (Re = (ge = (Be = (Z = this.host).getCompilerHost) === null || Be === void 0 ? void 0 : Be.call(Z)) === null || ge === void 0 ? void 0 : ge.getModuleResolutionCache) === null || Re === void 0 ? void 0 : Re.call(ge)) === null || ze === void 0 ? void 0 : ze.getPackageJsonInfoCache(), this.host, this.host.getCompilationSettings()), setExternalModuleIndicator: e.getSetExternalModuleIndicator(this.host.getCompilationSettings()) }; + Ie = X(ne, Ee, _e, rr, true, He); + } else if (this.currentFileVersion !== rr) { + var we = Ee.getChangeRange(this.currentFileScriptSnapshot); + Ie = $(this.currentSourceFile, Ee, rr, we); + } + return Ie && (this.currentFileVersion = rr, this.currentFileName = ne, this.currentFileScriptSnapshot = Ee, this.currentSourceFile = Ie), this.currentSourceFile; + }, g; + }(); + function x(g, ne, ue) { + g.version = ue, g.scriptSnapshot = ne; + } + function X(g, ne, ue, We, Fe, Z) { + var Be = e.createSourceFile(g, e.getSnapshotText(ne), ue, Fe, Z); + return x(Be, ne, We), Be; + } + e.createLanguageServiceSourceFile = X; + function $(g, ne, ue, We, Fe) { + if (We && ue !== g.version) { + var Z = void 0, Be = We.span.start !== 0 ? g.text.substr(0, We.span.start) : "", ge = e.textSpanEnd(We.span) !== g.text.length ? g.text.substr(e.textSpanEnd(We.span)) : ""; + if (We.newLength === 0) + Z = Be && ge ? Be + ge : Be || ge; + else { + var Re = ne.getText(We.span.start, We.span.start + We.newLength); + Z = Be && ge ? Be + Re + ge : Be ? Be + Re : Re + ge; + } + var ze = e.updateSourceFile(g, Z, We, Fe); + return x(ze, ne, ue), ze.nameTable = void 0, g !== ze && g.scriptSnapshot && (g.scriptSnapshot.dispose && g.scriptSnapshot.dispose(), g.scriptSnapshot = void 0), ze; + } + var Ee = { languageVersion: g.languageVersion, impliedNodeFormat: g.impliedNodeFormat, setExternalModuleIndicator: g.setExternalModuleIndicator }; + return X(g.fileName, ne, Ee, ue, true, g.scriptKind); + } + e.updateLanguageServiceSourceFile = $; + var A = { isCancellationRequested: e.returnFalse, throwIfCancellationRequested: e.noop }, y = function() { + function g(ne) { + this.cancellationToken = ne; + } + return g.prototype.isCancellationRequested = function() { + return this.cancellationToken.isCancellationRequested(); + }, g.prototype.throwIfCancellationRequested = function() { + if (this.isCancellationRequested()) + throw e.tracing === null || e.tracing === void 0 || e.tracing.instant("session", "cancellationThrown", { kind: "CancellationTokenObject" }), new e.OperationCanceledException(); + }, g; + }(), V = function() { + function g(ne, ue) { + ue === void 0 && (ue = 20), this.hostCancellationToken = ne, this.throttleWaitMilliseconds = ue, this.lastCancellationCheckTime = 0; + } + return g.prototype.isCancellationRequested = function() { + var ne = e.timestamp(), ue = Math.abs(ne - this.lastCancellationCheckTime); + return ue >= this.throttleWaitMilliseconds ? (this.lastCancellationCheckTime = ne, this.hostCancellationToken.isCancellationRequested()) : false; + }, g.prototype.throwIfCancellationRequested = function() { + if (this.isCancellationRequested()) + throw e.tracing === null || e.tracing === void 0 || e.tracing.instant("session", "cancellationThrown", { kind: "ThrottledCancellationToken" }), new e.OperationCanceledException(); + }, g; + }(); + e.ThrottledCancellationToken = V; + var L = ["getSemanticDiagnostics", "getSuggestionDiagnostics", "getCompilerOptionsDiagnostics", "getSemanticClassifications", "getEncodedSemanticClassifications", "getCodeFixesAtPosition", "getCombinedCodeFix", "applyCodeActionCommand", "organizeImports", "getEditsForFileRename", "getEmitOutput", "getApplicableRefactors", "getEditsForRefactor", "prepareCallHierarchy", "provideCallHierarchyIncomingCalls", "provideCallHierarchyOutgoingCalls", "provideInlayHints"], P = Ve(Ve([], L, true), ["getCompletionsAtPosition", "getCompletionEntryDetails", "getCompletionEntrySymbol", "getSignatureHelpItems", "getQuickInfoAtPosition", "getDefinitionAtPosition", "getDefinitionAndBoundSpan", "getImplementationAtPosition", "getTypeDefinitionAtPosition", "getReferencesAtPosition", "findReferences", "getOccurrencesAtPosition", "getDocumentHighlights", "getNavigateToItems", "getRenameInfo", "findRenameLocations", "getApplicableRefactors"], false); + function k(g, ne, ue) { + var We, Fe; + ne === void 0 && (ne = e.createDocumentRegistry(g.useCaseSensitiveFileNames && g.useCaseSensitiveFileNames(), g.getCurrentDirectory())); + var Z; + ue === void 0 ? Z = e.LanguageServiceMode.Semantic : typeof ue == "boolean" ? Z = ue ? e.LanguageServiceMode.Syntactic : e.LanguageServiceMode.Semantic : Z = ue; + var Be = new F(g), ge, Re, ze = 0, Ee = g.getCancellationToken ? new y(g.getCancellationToken()) : A, He = g.getCurrentDirectory(); + e.maybeSetLocalizedDiagnosticMessages((Fe = g.getLocalizedDiagnosticMessages) === null || Fe === void 0 ? void 0 : Fe.bind(g)); + function rr(Ai) { + g.log && g.log(Ai); + } + var Ie = e.hostUsesCaseSensitiveFileNames(g), _e = e.createGetCanonicalFileName(Ie), we = e.getSourceMapper({ useCaseSensitiveFileNames: function() { + return Ie; + }, getCurrentDirectory: function() { + return He; + }, getProgram: Ae, fileExists: e.maybeBind(g, g.fileExists), readFile: e.maybeBind(g, g.readFile), getDocumentPositionMapper: e.maybeBind(g, g.getDocumentPositionMapper), getSourceFileLike: e.maybeBind(g, g.getSourceFileLike), log: rr }); + function de(Ai) { + var Oi = ge.getSourceFile(Ai); + if (!Oi) { + var ji = new Error("Could not find source file: '".concat(Ai, "'.")); + throw ji.ProgramFiles = ge.getSourceFiles().map(function(Vi) { + return Vi.fileName; + }), ji; + } + return Oi; + } + function ye() { + var Ai, Oi, ji; + if (e.Debug.assert(Z !== e.LanguageServiceMode.Syntactic), g.getProjectVersion) { + var Vi = g.getProjectVersion(); + if (Vi) { + if (Re === Vi && !(!((Ai = g.hasChangedAutomaticTypeDirectiveNames) === null || Ai === void 0) && Ai.call(g))) + return; + Re = Vi; + } + } + var at = g.getTypeRootsVersion ? g.getTypeRootsVersion() : 0; + ze !== at && (rr("TypeRoots version has changed; provide new program"), ge = void 0, ze = at); + var At = new he(g, _e), ba = At.getRootFileNames(), $a = g.getCompilationSettings() || ve(), Qa = g.hasInvalidatedResolution || e.returnFalse, ai = e.maybeBind(g, g.hasChangedAutomaticTypeDirectiveNames), Dn = (Oi = g.getProjectReferences) === null || Oi === void 0 ? void 0 : Oi.call(g), ka, Ba = { useCaseSensitiveFileNames: Ie, fileExists: Pn, readFile: eo, readDirectory: Rn, trace: e.maybeBind(g, g.trace), getCurrentDirectory: function() { + return He; + }, onUnRecoverableConfigFileDiagnostic: e.noop }; + if (e.isProgramUptoDate(ge, ba, $a, function(En, Wn) { + return g.getScriptVersion(Wn); + }, Pn, Qa, ai, kn, Dn)) + return; + var pn = { getSourceFile: bo, getSourceFileByPath: Ro, getCancellationToken: function() { + return Ee; + }, getCanonicalFileName: _e, useCaseSensitiveFileNames: function() { + return Ie; + }, getNewLine: function() { + return e.getNewLineCharacter($a, function() { + return e.getNewLineOrDefaultFromHost(g); + }); + }, getDefaultLibFileName: function(En) { + return g.getDefaultLibFileName(En); + }, writeFile: e.noop, getCurrentDirectory: function() { + return He; + }, fileExists: Pn, readFile: eo, getSymlinkCache: e.maybeBind(g, g.getSymlinkCache), realpath: e.maybeBind(g, g.realpath), directoryExists: function(En) { + return e.directoryProbablyExists(En, g); + }, getDirectories: function(En) { + return g.getDirectories ? g.getDirectories(En) : []; + }, readDirectory: Rn, onReleaseOldSourceFile: Da, onReleaseParsedCommandLine: Kn, hasInvalidatedResolution: Qa, hasChangedAutomaticTypeDirectiveNames: ai, trace: Ba.trace, resolveModuleNames: e.maybeBind(g, g.resolveModuleNames), getModuleResolutionCache: e.maybeBind(g, g.getModuleResolutionCache), resolveTypeReferenceDirectives: e.maybeBind(g, g.resolveTypeReferenceDirectives), useSourceOfProjectReferenceRedirect: e.maybeBind(g, g.useSourceOfProjectReferenceRedirect), getParsedCommandLine: kn }; + (ji = g.setCompilerHost) === null || ji === void 0 || ji.call(g, pn); + var Cn = ne.getKeyForCompilationSettings($a), Bi = { rootNames: ba, options: $a, host: pn, oldProgram: ge, projectReferences: Dn }; + ge = e.createProgram(Bi), At = void 0, ka = void 0, we.clearCache(), ge.getTypeChecker(); + return; + function kn(En) { + var Wn = e.toPath(En, He, _e), to = ka == null ? void 0 : ka.get(Wn); + if (to !== void 0) + return to || void 0; + var Co = g.getParsedCommandLine ? g.getParsedCommandLine(En) : xn(En); + return (ka || (ka = new e.Map())).set(Wn, Co || false), Co; + } + function xn(En) { + var Wn = bo(En, 100); + if (!!Wn) + return Wn.path = e.toPath(En, He, _e), Wn.resolvedPath = Wn.path, Wn.originalFileName = Wn.fileName, e.parseJsonSourceFileConfigFileContent(Wn, Ba, e.getNormalizedAbsolutePath(e.getDirectoryPath(En), He), void 0, e.getNormalizedAbsolutePath(En, He)); + } + function Kn(En, Wn, to) { + var Co; + g.getParsedCommandLine ? (Co = g.onReleaseParsedCommandLine) === null || Co === void 0 || Co.call(g, En, Wn, to) : Wn && Da(Wn.sourceFile, to); + } + function Pn(En) { + var Wn = e.toPath(En, He, _e), to = At && At.getEntryByPath(Wn); + return to ? !e.isString(to) : !!g.fileExists && g.fileExists(En); + } + function eo(En) { + var Wn = e.toPath(En, He, _e), to = At && At.getEntryByPath(Wn); + return to ? e.isString(to) ? void 0 : e.getSnapshotText(to.scriptSnapshot) : g.readFile && g.readFile(En); + } + function Rn(En, Wn, to, Co, Ko) { + return e.Debug.checkDefined(g.readDirectory, "'LanguageServiceHost.readDirectory' must be implemented to correctly process 'projectReferences'"), g.readDirectory(En, Wn, to, Co, Ko); + } + function Da(En, Wn) { + var to = ne.getKeyForCompilationSettings(Wn); + ne.releaseDocumentWithKey(En.resolvedPath, to, En.scriptKind); + } + function bo(En, Wn, to, Co) { + return Ro(En, e.toPath(En, He, _e), Wn, to, Co); + } + function Ro(En, Wn, to, Co, Ko) { + e.Debug.assert(At !== void 0, "getOrCreateSourceFileByPath called after typical CompilerHost lifetime, check the callstack something with a reference to an old host."); + var Oo = At && At.getOrCreateEntryByPath(En, Wn); + if (!!Oo) { + if (!Ko) { + var no = ge && ge.getSourceFileByPath(Wn); + if (no) { + if (Oo.scriptKind === no.scriptKind) + return ne.updateDocumentWithKey(En, Wn, g, Cn, Oo.scriptSnapshot, Oo.version, Oo.scriptKind); + ne.releaseDocumentWithKey(no.resolvedPath, ne.getKeyForCompilationSettings(ge.getCompilerOptions()), no.scriptKind); + } + } + return ne.acquireDocumentWithKey(En, Wn, g, Cn, Oo.scriptSnapshot, Oo.version, Oo.scriptKind); + } + } + } + function Ae() { + if (Z === e.LanguageServiceMode.Syntactic) { + e.Debug.assert(ge === void 0); + return; + } + return ye(), ge; + } + function er() { + var Ai; + return (Ai = g.getPackageJsonAutoImportProvider) === null || Ai === void 0 ? void 0 : Ai.call(g); + } + function ir() { + ge = void 0; + } + function Cr() { + if (ge) { + var Ai = ne.getKeyForCompilationSettings(ge.getCompilerOptions()); + e.forEach(ge.getSourceFiles(), function(Oi) { + return ne.releaseDocumentWithKey(Oi.resolvedPath, Ai, Oi.scriptKind); + }), ge = void 0; + } + g = void 0; + } + function Ye(Ai) { + return ye(), ge.getSyntacticDiagnostics(de(Ai), Ee).slice(); + } + function Br(Ai) { + ye(); + var Oi = de(Ai), ji = ge.getSemanticDiagnostics(Oi, Ee); + if (!e.getEmitDeclarations(ge.getCompilerOptions())) + return ji.slice(); + var Vi = ge.getDeclarationDiagnostics(Oi, Ee); + return Ve(Ve([], ji, true), Vi, true); + } + function Er(Ai) { + return ye(), e.computeSuggestionDiagnostics(de(Ai), ge, Ee); + } + function Ne() { + return ye(), Ve(Ve([], ge.getOptionsDiagnostics(Ee), true), ge.getGlobalDiagnostics(Ee), true); + } + function n(Ai, Oi, ji, Vi) { + ji === void 0 && (ji = e.emptyOptions); + var at = Ke(Ke({}, e.identity(ji)), { includeCompletionsForModuleExports: ji.includeCompletionsForModuleExports || ji.includeExternalModuleExports, includeCompletionsWithInsertText: ji.includeCompletionsWithInsertText || ji.includeInsertTextCompletions }); + return ye(), e.Completions.getCompletionsAtPosition(g, ge, rr, de(Ai), Oi, at, ji.triggerCharacter, ji.triggerKind, Ee, Vi && e.formatting.getFormatContext(Vi, g)); + } + function lr(Ai, Oi, ji, Vi, at, At, ba) { + return At === void 0 && (At = e.emptyOptions), ye(), e.Completions.getCompletionEntryDetails(ge, rr, de(Ai), Oi, { name: ji, source: at, data: ba }, g, Vi && e.formatting.getFormatContext(Vi, g), At, Ee); + } + function be(Ai, Oi, ji, Vi, at) { + return at === void 0 && (at = e.emptyOptions), ye(), e.Completions.getCompletionEntrySymbol(ge, rr, de(Ai), Oi, { name: ji, source: Vi }, g, at); + } + function Ge(Ai, Oi) { + ye(); + var ji = de(Ai), Vi = e.getTouchingPropertyName(ji, Oi); + if (Vi !== ji) { + var at = ge.getTypeChecker(), At = ur(Vi), ba = l(At, at); + if (!ba || at.isUnknownSymbol(ba)) { + var $a = yr(ji, At, Oi) ? at.getTypeAtLocation(At) : void 0; + return $a && { kind: "", kindModifiers: "", textSpan: e.createTextSpanFromNode(At, ji), displayParts: at.runWithCancellationToken(Ee, function(pn) { + return e.typeToDisplayParts(pn, $a, e.getContainerNode(At)); + }), documentation: $a.symbol ? $a.symbol.getDocumentationComment(at) : void 0, tags: $a.symbol ? $a.symbol.getJsDocTags(at) : void 0 }; + } + var Qa = at.runWithCancellationToken(Ee, function(pn) { + return e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(pn, ba, ji, e.getContainerNode(At), At); + }), ai = Qa.symbolKind, Dn = Qa.displayParts, ka = Qa.documentation, Ba = Qa.tags; + return { kind: ai, kindModifiers: e.SymbolDisplay.getSymbolModifiers(at, ba), textSpan: e.createTextSpanFromNode(At, ji), displayParts: Dn, documentation: ka, tags: Ba }; + } + } + function ur(Ai) { + return e.isNewExpression(Ai.parent) && Ai.pos === Ai.parent.pos ? Ai.parent.expression : e.isNamedTupleMember(Ai.parent) && Ai.pos === Ai.parent.pos || e.isImportMeta(Ai.parent) && Ai.parent.name === Ai ? Ai.parent : Ai; + } + function yr(Ai, Oi, ji) { + switch (Oi.kind) { + case 79: + return !e.isLabelName(Oi) && !e.isTagName(Oi) && !e.isConstTypeReference(Oi.parent); + case 206: + case 161: + return !e.isInComment(Ai, ji); + case 108: + case 192: + case 106: + case 197: + return true; + case 231: + return e.isImportMeta(Oi); + default: + return false; + } + } + function Ir(Ai, Oi, ji, Vi) { + return ye(), e.GoToDefinition.getDefinitionAtPosition(ge, de(Ai), Oi, ji, Vi); + } + function wr(Ai, Oi) { + return ye(), e.GoToDefinition.getDefinitionAndBoundSpan(ge, de(Ai), Oi); + } + function Ur(Ai, Oi) { + return ye(), e.GoToDefinition.getTypeDefinitionAtPosition(ge.getTypeChecker(), de(Ai), Oi); + } + function ii(Ai, Oi) { + return ye(), e.FindAllReferences.getImplementationsAtPosition(ge, Ee, ge.getSourceFiles(), de(Ai), Oi); + } + function mi(Ai, Oi) { + return e.flatMap(pe(Ai, Oi, [Ai]), function(ji) { + return ji.highlightSpans.map(function(Vi) { + return Ke(Ke({ fileName: ji.fileName, textSpan: Vi.textSpan, isWriteAccess: Vi.kind === "writtenReference" }, Vi.isInString && { isInString: true }), Vi.contextSpan && { contextSpan: Vi.contextSpan }); + }); + }); + } + function pe(Ai, Oi, ji) { + var Vi = e.normalizePath(Ai); + e.Debug.assert(ji.some(function(ba) { + return e.normalizePath(ba) === Vi; + })), ye(); + var at = e.mapDefined(ji, function(ba) { + return ge.getSourceFile(ba); + }), At = de(Ai); + return e.DocumentHighlights.getDocumentHighlights(ge, Ee, At, Oi, at); + } + function or(Ai, Oi, ji, Vi, at) { + ye(); + var At = de(Ai), ba = e.getAdjustedRenameLocation(e.getTouchingPropertyName(At, Oi)); + if (!!e.Rename.nodeIsEligibleForRename(ba)) + if (e.isIdentifier(ba) && (e.isJsxOpeningElement(ba.parent) || e.isJsxClosingElement(ba.parent)) && e.isIntrinsicJsxName(ba.escapedText)) { + var $a = ba.parent.parent, Qa = $a.openingElement, ai = $a.closingElement; + return [Qa, ai].map(function(Dn) { + var ka = e.createTextSpanFromNode(Dn.tagName, At); + return Ke({ fileName: At.fileName, textSpan: ka }, e.FindAllReferences.toContextSpan(ka, At, Dn.parent)); + }); + } else + return si(ba, Oi, { findInStrings: ji, findInComments: Vi, providePrefixAndSuffixTextForRename: at, use: 2 }, function(Dn, ka, Ba) { + return e.FindAllReferences.toRenameLocation(Dn, ka, Ba, at || false); + }); + } + function qr(Ai, Oi) { + return ye(), si(e.getTouchingPropertyName(de(Ai), Oi), Oi, { use: 1 }, e.FindAllReferences.toReferenceEntry); + } + function si(Ai, Oi, ji, Vi) { + ye(); + var at = ji && ji.use === 2 ? ge.getSourceFiles().filter(function(At) { + return !ge.isSourceFileDefaultLibrary(At); + }) : ge.getSourceFiles(); + return e.FindAllReferences.findReferenceOrRenameEntries(ge, Ee, at, Ai, Oi, ji, Vi); + } + function Di(Ai, Oi) { + return ye(), e.FindAllReferences.findReferencedSymbols(ge, Ee, ge.getSourceFiles(), de(Ai), Oi); + } + function wi(Ai) { + return ye(), e.FindAllReferences.Core.getReferencesForFileName(Ai, ge, ge.getSourceFiles()).map(e.FindAllReferences.toReferenceEntry); + } + function Xi(Ai, Oi, ji, Vi) { + Vi === void 0 && (Vi = false), ye(); + var at = ji ? [de(ji)] : ge.getSourceFiles(); + return e.NavigateTo.getNavigateToItems(at, ge.getTypeChecker(), Ee, Ai, Oi, Vi); + } + function et(Ai, Oi, ji) { + ye(); + var Vi = de(Ai), at = g.getCustomTransformers && g.getCustomTransformers(); + return e.getFileEmitOutput(ge, Vi, !!Oi, Ee, at, ji); + } + function Gi(Ai, Oi, ji) { + var Vi = ji === void 0 ? e.emptyOptions : ji, at = Vi.triggerReason; + ye(); + var At = de(Ai); + return e.SignatureHelp.getSignatureHelpItems(ge, At, Oi, at, Ee); + } + function Wt(Ai) { + return Be.getCurrentSourceFile(Ai); + } + function Zt(Ai, Oi, ji) { + var Vi = Be.getCurrentSourceFile(Ai), at = e.getTouchingPropertyName(Vi, Oi); + if (at !== Vi) { + switch (at.kind) { + case 206: + case 161: + case 10: + case 95: + case 110: + case 104: + case 106: + case 108: + case 192: + case 79: + break; + default: + return; + } + for (var At = at; ; ) + if (e.isRightSideOfPropertyAccess(At) || e.isRightSideOfQualifiedName(At)) + At = At.parent; + else if (e.isNameOfModuleDeclaration(At)) + if (At.parent.parent.kind === 261 && At.parent.parent.body === At.parent) + At = At.parent.parent.name; + else + break; + else + break; + return e.createTextSpanFromBounds(At.getStart(), at.getEnd()); + } + } + function _r(Ai, Oi) { + var ji = Be.getCurrentSourceFile(Ai); + return e.BreakpointResolver.spanInSourceFileAtLocation(ji, Oi); + } + function pi(Ai) { + return e.NavigationBar.getNavigationBarItems(Be.getCurrentSourceFile(Ai), Ee); + } + function ae(Ai) { + return e.NavigationBar.getNavigationTree(Be.getCurrentSourceFile(Ai), Ee); + } + function Xe(Ai, Oi, ji) { + ye(); + var Vi = ji || "original"; + return Vi === "2020" ? e.classifier.v2020.getSemanticClassifications(ge, Ee, de(Ai), Oi) : e.getSemanticClassifications(ge.getTypeChecker(), Ee, de(Ai), ge.getClassifiableNames(), Oi); + } + function Jr(Ai, Oi, ji) { + ye(); + var Vi = ji || "original"; + return Vi === "original" ? e.getEncodedSemanticClassifications(ge.getTypeChecker(), Ee, de(Ai), ge.getClassifiableNames(), Oi) : e.classifier.v2020.getEncodedSemanticClassifications(ge, Ee, de(Ai), Oi); + } + function ti(Ai, Oi) { + return e.getSyntacticClassifications(Ee, Be.getCurrentSourceFile(Ai), Oi); + } + function Ze(Ai, Oi) { + return e.getEncodedSyntacticClassifications(Ee, Be.getCurrentSourceFile(Ai), Oi); + } + function Sr(Ai) { + var Oi = Be.getCurrentSourceFile(Ai); + return e.OutliningElementsCollector.collectElements(Oi, Ee); + } + var zr = new e.Map(e.getEntries((We = {}, We[18] = 19, We[20] = 21, We[22] = 23, We[31] = 29, We))); + zr.forEach(function(Ai, Oi) { + return zr.set(Ai.toString(), Number(Oi)); + }); + function Wr(Ai, Oi) { + var ji = Be.getCurrentSourceFile(Ai), Vi = e.getTouchingToken(ji, Oi), at = Vi.getStart(ji) === Oi ? zr.get(Vi.kind.toString()) : void 0, At = at && e.findChildOfKind(Vi.parent, at, ji); + return At ? [e.createTextSpanFromNode(Vi, ji), e.createTextSpanFromNode(At, ji)].sort(function(ba, $a) { + return ba.start - $a.start; + }) : e.emptyArray; + } + function Je(Ai, Oi, ji) { + var Vi = e.timestamp(), at = R(ji), At = Be.getCurrentSourceFile(Ai); + rr("getIndentationAtPosition: getCurrentSourceFile: " + (e.timestamp() - Vi)), Vi = e.timestamp(); + var ba = e.formatting.SmartIndenter.getIndentation(Oi, At, at); + return rr("getIndentationAtPosition: computeIndentation : " + (e.timestamp() - Vi)), ba; + } + function xe(Ai, Oi, ji, Vi) { + var at = Be.getCurrentSourceFile(Ai); + return e.formatting.formatSelection(Oi, ji, at, e.formatting.getFormatContext(R(Vi), g)); + } + function vr(Ai, Oi) { + return e.formatting.formatDocument(Be.getCurrentSourceFile(Ai), e.formatting.getFormatContext(R(Oi), g)); + } + function mr(Ai, Oi, ji, Vi) { + var at = Be.getCurrentSourceFile(Ai), At = e.formatting.getFormatContext(R(Vi), g); + if (!e.isInComment(at, Oi)) + switch (ji) { + case "{": + return e.formatting.formatOnOpeningCurly(Oi, at, At); + case "}": + return e.formatting.formatOnClosingCurly(Oi, at, At); + case ";": + return e.formatting.formatOnSemicolon(Oi, at, At); + case ` +`: + return e.formatting.formatOnEnter(Oi, at, At); + } + return []; + } + function Ar(Ai, Oi, ji, Vi, at, At) { + At === void 0 && (At = e.emptyOptions), ye(); + var ba = de(Ai), $a = e.createTextSpanFromBounds(Oi, ji), Qa = e.formatting.getFormatContext(at, g); + return e.flatMap(e.deduplicate(Vi, e.equateValues, e.compareValues), function(ai) { + return Ee.throwIfCancellationRequested(), e.codefix.getFixes({ errorCode: ai, sourceFile: ba, span: $a, program: ge, host: g, cancellationToken: Ee, formatContext: Qa, preferences: At }); + }); + } + function Oe(Ai, Oi, ji, Vi) { + Vi === void 0 && (Vi = e.emptyOptions), ye(), e.Debug.assert(Ai.type === "file"); + var at = de(Ai.fileName), At = e.formatting.getFormatContext(ji, g); + return e.codefix.getAllFixes({ fixId: Oi, sourceFile: at, program: ge, host: g, cancellationToken: Ee, formatContext: At, preferences: Vi }); + } + function nr(Ai, Oi, ji) { + ji === void 0 && (ji = e.emptyOptions), ye(), e.Debug.assert(Ai.type === "file"); + var Vi = de(Ai.fileName), at = e.formatting.getFormatContext(Oi, g); + return e.OrganizeImports.organizeImports(Vi, at, g, ge, ji, Ai.skipDestructiveCodeActions); + } + function Mr(Ai, Oi, ji, Vi) { + return Vi === void 0 && (Vi = e.emptyOptions), e.getEditsForFileRename(Ae(), Ai, Oi, g, e.formatting.getFormatContext(ji, g), Vi, we); + } + function Pe(Ai, Oi) { + var ji = typeof Ai == "string" ? Oi : Ai; + return e.isArray(ji) ? Promise.all(ji.map(function(Vi) { + return Ue(Vi); + })) : Ue(ji); + } + function Ue(Ai) { + var Oi = function(ji) { + return e.toPath(ji, He, _e); + }; + return e.Debug.assertEqual(Ai.type, "install package"), g.installPackage ? g.installPackage({ fileName: Oi(Ai.file), packageName: Ai.packageName }) : Promise.reject("Host does not implement `installPackage`"); + } + function fr(Ai, Oi, ji) { + return e.JsDoc.getDocCommentTemplateAtPosition(e.getNewLineOrDefaultFromHost(g), Be.getCurrentSourceFile(Ai), Oi, ji); + } + function De(Ai, Oi, ji) { + if (ji === 60) + return false; + var Vi = Be.getCurrentSourceFile(Ai); + if (e.isInString(Vi, Oi)) + return false; + if (e.isInsideJsxElementOrAttribute(Vi, Oi)) + return ji === 123; + if (e.isInTemplateString(Vi, Oi)) + return false; + switch (ji) { + case 39: + case 34: + case 96: + return !e.isInComment(Vi, Oi); + } + return true; + } + function gr(Ai, Oi) { + var ji = Be.getCurrentSourceFile(Ai), Vi = e.findPrecedingToken(Oi, ji); + if (!!Vi) { + var at = Vi.kind === 31 && e.isJsxOpeningElement(Vi.parent) ? Vi.parent.parent : e.isJsxText(Vi) && e.isJsxElement(Vi.parent) ? Vi.parent : void 0; + if (at && Wi(at)) + return { newText: "") }; + var At = Vi.kind === 31 && e.isJsxOpeningFragment(Vi.parent) ? Vi.parent.parent : e.isJsxText(Vi) && e.isJsxFragment(Vi.parent) ? Vi.parent : void 0; + if (At && ct(At)) + return { newText: "" }; + } + } + function Vr(Ai, Oi) { + return { lineStarts: Ai.getLineStarts(), firstLine: Ai.getLineAndCharacterOfPosition(Oi.pos).line, lastLine: Ai.getLineAndCharacterOfPosition(Oi.end).line }; + } + function Tr(Ai, Oi, ji) { + for (var Vi = Be.getCurrentSourceFile(Ai), at = [], At = Vr(Vi, Oi), ba = At.lineStarts, $a = At.firstLine, Qa = At.lastLine, ai = ji || false, Dn = Number.MAX_VALUE, ka = new e.Map(), Ba = new RegExp(/\S/), pn = e.isInsideJsxElement(Vi, ba[$a]), Cn = pn ? "{/*" : "//", Bi = $a; Bi <= Qa; Bi++) { + var kn = Vi.text.substring(ba[Bi], Vi.getLineEndOfPosition(ba[Bi])), xn = Ba.exec(kn); + xn && (Dn = Math.min(Dn, xn.index), ka.set(Bi.toString(), xn.index), kn.substr(xn.index, Cn.length) !== Cn && (ai = ji === void 0 || ji)); + } + for (var Bi = $a; Bi <= Qa; Bi++) + if (!($a !== Qa && ba[Bi] === Oi.end)) { + var Kn = ka.get(Bi.toString()); + Kn !== void 0 && (pn ? at.push.apply(at, vi(Ai, { pos: ba[Bi] + Dn, end: Vi.getLineEndOfPosition(ba[Bi]) }, ai, pn)) : ai ? at.push({ newText: Cn, span: { length: 0, start: ba[Bi] + Dn } }) : Vi.text.substr(ba[Bi] + Kn, Cn.length) === Cn && at.push({ newText: "", span: { length: Cn.length, start: ba[Bi] + Kn } })); + } + return at; + } + function vi(Ai, Oi, ji, Vi) { + for (var at, At = Be.getCurrentSourceFile(Ai), ba = [], $a = At.text, Qa = false, ai = ji || false, Dn = [], ka = Oi.pos, Ba = Vi !== void 0 ? Vi : e.isInsideJsxElement(At, ka), pn = Ba ? "{/*" : "/*", Cn = Ba ? "*/}" : "*/", Bi = Ba ? "\\{\\/\\*" : "\\/\\*", kn = Ba ? "\\*\\/\\}" : "\\*\\/"; ka <= Oi.end; ) { + var xn = $a.substr(ka, pn.length) === pn ? pn.length : 0, Kn = e.isInComment(At, ka + xn); + if (Kn) + Ba && (Kn.pos--, Kn.end++), Dn.push(Kn.pos), Kn.kind === 3 && Dn.push(Kn.end), Qa = true, ka = Kn.end + 1; + else { + var Pn = $a.substring(ka, Oi.end).search("(".concat(Bi, ")|(").concat(kn, ")")); + ai = ji !== void 0 ? ji : ai || !e.isTextWhiteSpaceLike($a, ka, Pn === -1 ? Oi.end : ka + Pn), ka = Pn === -1 ? Oi.end + 1 : ka + Pn + Cn.length; + } + } + if (ai || !Qa) { + ((at = e.isInComment(At, Oi.pos)) === null || at === void 0 ? void 0 : at.kind) !== 2 && e.insertSorted(Dn, Oi.pos, e.compareValues), e.insertSorted(Dn, Oi.end, e.compareValues); + var eo = Dn[0]; + $a.substr(eo, pn.length) !== pn && ba.push({ newText: pn, span: { length: 0, start: eo } }); + for (var Rn = 1; Rn < Dn.length - 1; Rn++) + $a.substr(Dn[Rn] - Cn.length, Cn.length) !== Cn && ba.push({ newText: Cn, span: { length: 0, start: Dn[Rn] } }), $a.substr(Dn[Rn], pn.length) !== pn && ba.push({ newText: pn, span: { length: 0, start: Dn[Rn] } }); + ba.length % 2 !== 0 && ba.push({ newText: Cn, span: { length: 0, start: Dn[Dn.length - 1] } }); + } else + for (var Da = 0, bo = Dn; Da < bo.length; Da++) { + var Ro = bo[Da], En = Ro - Cn.length > 0 ? Ro - Cn.length : 0, xn = $a.substr(En, Cn.length) === Cn ? Cn.length : 0; + ba.push({ newText: "", span: { length: pn.length, start: Ro - xn } }); + } + return ba; + } + function Ui(Ai, Oi) { + var ji = Be.getCurrentSourceFile(Ai), Vi = Vr(ji, Oi), at = Vi.firstLine, At = Vi.lastLine; + return at === At && Oi.pos !== Oi.end ? vi(Ai, Oi, true) : Tr(Ai, Oi, true); + } + function Yi(Ai, Oi) { + var ji = Be.getCurrentSourceFile(Ai), Vi = [], at = Oi.pos, At = Oi.end; + at === At && (At += e.isInsideJsxElement(ji, at) ? 2 : 1); + for (var ba = at; ba <= At; ba++) { + var $a = e.isInComment(ji, ba); + if ($a) { + switch ($a.kind) { + case 2: + Vi.push.apply(Vi, Tr(Ai, { end: $a.end, pos: $a.pos + 1 }, false)); + break; + case 3: + Vi.push.apply(Vi, vi(Ai, { end: $a.end, pos: $a.pos + 1 }, false)); + } + ba = $a.end + 1; + } + } + return Vi; + } + function Wi(Ai) { + var Oi = Ai.openingElement, ji = Ai.closingElement, Vi = Ai.parent; + return !e.tagNamesAreEquivalent(Oi.tagName, ji.tagName) || e.isJsxElement(Vi) && e.tagNamesAreEquivalent(Oi.tagName, Vi.openingElement.tagName) && Wi(Vi); + } + function ct(Ai) { + var Oi = Ai.closingFragment, ji = Ai.parent; + return !!(Oi.flags & 131072) || e.isJsxFragment(ji) && ct(ji); + } + function Li(Ai, Oi, ji) { + var Vi = Be.getCurrentSourceFile(Ai), at = e.formatting.getRangeOfEnclosingComment(Vi, Oi); + return at && (!ji || at.kind === 3) ? e.createTextSpanFromRange(at) : void 0; + } + function nt(Ai, Oi) { + ye(); + var ji = de(Ai); + Ee.throwIfCancellationRequested(); + var Vi = ji.text, at = []; + if (Oi.length > 0 && !kn(ji.fileName)) + for (var At = Cn(), ba = void 0; ba = At.exec(Vi); ) { + Ee.throwIfCancellationRequested(); + var $a = 3; + e.Debug.assert(ba.length === Oi.length + $a); + var Qa = ba[1], ai = ba.index + Qa.length; + if (!!e.isInComment(ji, ai)) { + for (var Dn = void 0, ka = 0; ka < Oi.length; ka++) + ba[ka + $a] && (Dn = Oi[ka]); + if (Dn === void 0) + return e.Debug.fail(); + if (!Bi(Vi.charCodeAt(ai + Dn.text.length))) { + var Ba = ba[2]; + at.push({ descriptor: Dn, message: Ba, position: ai }); + } + } + } + return at; + function pn(xn) { + return xn.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + function Cn() { + var xn = /(?:\/\/+\s*)/.source, Kn = /(?:\/\*+\s*)/.source, Pn = /(?:^(?:\s|\*)*)/.source, eo = "(" + Pn + "|" + xn + "|" + Kn + ")", Rn = "(?:" + e.map(Oi, function(Wn) { + return "(" + pn(Wn.text) + ")"; + }).join("|") + ")", Da = /(?:$|\*\/)/.source, bo = /(?:.*?)/.source, Ro = "(" + Rn + bo + ")", En = eo + Ro + Da; + return new RegExp(En, "gim"); + } + function Bi(xn) { + return xn >= 97 && xn <= 122 || xn >= 65 && xn <= 90 || xn >= 48 && xn <= 57; + } + function kn(xn) { + return e.stringContains(xn, "/node_modules/"); + } + } + function Mt(Ai, Oi, ji) { + return ye(), e.Rename.getRenameInfo(ge, de(Ai), Oi, ji); + } + function xt(Ai, Oi, ji, Vi, at, At) { + var ba = typeof Oi == "number" ? [Oi, void 0] : [Oi.pos, Oi.end], $a = ba[0], Qa = ba[1]; + return { file: Ai, startPosition: $a, endPosition: Qa, program: Ae(), host: g, formatContext: e.formatting.getFormatContext(Vi, g), cancellationToken: Ee, preferences: ji, triggerReason: at, kind: At }; + } + function ut(Ai, Oi, ji) { + return { file: Ai, program: Ae(), host: g, span: Oi, preferences: ji, cancellationToken: Ee }; + } + function Dt(Ai, Oi) { + return e.SmartSelectionRange.getSmartSelectionRange(Oi, Be.getCurrentSourceFile(Ai)); + } + function Rt(Ai, Oi, ji, Vi, at) { + ji === void 0 && (ji = e.emptyOptions), ye(); + var At = de(Ai); + return e.refactor.getApplicableRefactors(xt(At, Oi, ji, e.emptyOptions, Vi, at)); + } + function Ii(Ai, Oi, ji, Vi, at, At) { + At === void 0 && (At = e.emptyOptions), ye(); + var ba = de(Ai); + return e.refactor.getEditsForRefactor(xt(ba, ji, At, Oi), Vi, at); + } + function Ki(Ai, Oi) { + return Oi === 0 ? { line: 0, character: 0 } : we.toLineColumnOffset(Ai, Oi); + } + function Fi(Ai, Oi) { + ye(); + var ji = e.CallHierarchy.resolveCallHierarchyDeclaration(ge, e.getTouchingPropertyName(de(Ai), Oi)); + return ji && e.mapOneOrMany(ji, function(Vi) { + return e.CallHierarchy.createCallHierarchyItem(ge, Vi); + }); + } + function ui(Ai, Oi) { + ye(); + var ji = de(Ai), Vi = e.firstOrOnly(e.CallHierarchy.resolveCallHierarchyDeclaration(ge, Oi === 0 ? ji : e.getTouchingPropertyName(ji, Oi))); + return Vi ? e.CallHierarchy.getIncomingCalls(ge, Vi, Ee) : []; + } + function Bt(Ai, Oi) { + ye(); + var ji = de(Ai), Vi = e.firstOrOnly(e.CallHierarchy.resolveCallHierarchyDeclaration(ge, Oi === 0 ? ji : e.getTouchingPropertyName(ji, Oi))); + return Vi ? e.CallHierarchy.getOutgoingCalls(ge, Vi) : []; + } + function wt(Ai, Oi, ji) { + ji === void 0 && (ji = e.emptyOptions), ye(); + var Vi = de(Ai); + return e.InlayHints.provideInlayHints(ut(Vi, Oi, ji)); + } + var na = { dispose: Cr, cleanupSemanticCache: ir, getSyntacticDiagnostics: Ye, getSemanticDiagnostics: Br, getSuggestionDiagnostics: Er, getCompilerOptionsDiagnostics: Ne, getSyntacticClassifications: ti, getSemanticClassifications: Xe, getEncodedSyntacticClassifications: Ze, getEncodedSemanticClassifications: Jr, getCompletionsAtPosition: n, getCompletionEntryDetails: lr, getCompletionEntrySymbol: be, getSignatureHelpItems: Gi, getQuickInfoAtPosition: Ge, getDefinitionAtPosition: Ir, getDefinitionAndBoundSpan: wr, getImplementationAtPosition: ii, getTypeDefinitionAtPosition: Ur, getReferencesAtPosition: qr, findReferences: Di, getFileReferences: wi, getOccurrencesAtPosition: mi, getDocumentHighlights: pe, getNameOrDottedNameSpan: Zt, getBreakpointStatementAtPosition: _r, getNavigateToItems: Xi, getRenameInfo: Mt, getSmartSelectionRange: Dt, findRenameLocations: or, getNavigationBarItems: pi, getNavigationTree: ae, getOutliningSpans: Sr, getTodoComments: nt, getBraceMatchingAtPosition: Wr, getIndentationAtPosition: Je, getFormattingEditsForRange: xe, getFormattingEditsForDocument: vr, getFormattingEditsAfterKeystroke: mr, getDocCommentTemplateAtPosition: fr, isValidBraceCompletionAtPosition: De, getJsxClosingTagAtPosition: gr, getSpanOfEnclosingComment: Li, getCodeFixesAtPosition: Ar, getCombinedCodeFix: Oe, applyCodeActionCommand: Pe, organizeImports: nr, getEditsForFileRename: Mr, getEmitOutput: et, getNonBoundSourceFile: Wt, getProgram: Ae, getAutoImportProvider: er, getApplicableRefactors: Rt, getEditsForRefactor: Ii, toLineColumnOffset: Ki, getSourceMapper: function() { + return we; + }, clearSourceMapperCache: function() { + return we.clearCache(); + }, prepareCallHierarchy: Fi, provideCallHierarchyIncomingCalls: ui, provideCallHierarchyOutgoingCalls: Bt, toggleLineComment: Tr, toggleMultilineComment: vi, commentSelection: Ui, uncommentSelection: Yi, provideInlayHints: wt }; + switch (Z) { + case e.LanguageServiceMode.Semantic: + break; + case e.LanguageServiceMode.PartialSemantic: + L.forEach(function(Ai) { + return na[Ai] = function() { + throw new Error("LanguageService Operation: ".concat(Ai, " not allowed in LanguageServiceMode.PartialSemantic")); + }; + }); + break; + case e.LanguageServiceMode.Syntactic: + P.forEach(function(Ai) { + return na[Ai] = function() { + throw new Error("LanguageService Operation: ".concat(Ai, " not allowed in LanguageServiceMode.Syntactic")); + }; + }); + break; + default: + e.Debug.assertNever(Z); + } + return na; + } + e.createLanguageService = k; + function Y(g) { + return g.nameTable || U(g), g.nameTable; + } + e.getNameTable = Y; + function U(g) { + var ne = g.nameTable = new e.Map(); + g.forEachChild(function ue(We) { + if (e.isIdentifier(We) && !e.isTagName(We) && We.escapedText || e.isStringOrNumericLiteralLike(We) && j(We)) { + var Fe = e.getEscapedTextOfIdentifierOrLiteral(We); + ne.set(Fe, ne.get(Fe) === void 0 ? We.pos : -1); + } else if (e.isPrivateIdentifier(We)) { + var Fe = We.escapedText; + ne.set(Fe, ne.get(Fe) === void 0 ? We.pos : -1); + } + if (e.forEachChild(We, ue), e.hasJSDocNodes(We)) + for (var Z = 0, Be = We.jsDoc; Z < Be.length; Z++) { + var ge = Be[Z]; + e.forEachChild(ge, ue); + } + }); + } + function j(g) { + return e.isDeclarationName(g) || g.parent.kind === 277 || D(g) || e.isLiteralComputedPropertyDeclarationName(g); + } + function H(g) { + var ne = I(g); + return ne && (e.isObjectLiteralExpression(ne.parent) || e.isJsxAttributes(ne.parent)) ? ne : void 0; + } + e.getContainingObjectLiteralElement = H; + function I(g) { + switch (g.kind) { + case 10: + case 14: + case 8: + if (g.parent.kind === 162) + return e.isObjectLiteralElement(g.parent.parent) ? g.parent.parent : void 0; + case 79: + return e.isObjectLiteralElement(g.parent) && (g.parent.parent.kind === 205 || g.parent.parent.kind === 286) && g.parent.name === g ? g.parent : void 0; + } + } + function l(g, ne) { + var ue = H(g); + if (ue) { + var We = ne.getContextualType(ue.parent), Fe = We && d(ue, ne, We, false); + if (Fe && Fe.length === 1) + return e.first(Fe); + } + return ne.getSymbolAtLocation(g); + } + function d(g, ne, ue, We) { + var Fe = e.getNameFromPropertyName(g.name); + if (!Fe) + return e.emptyArray; + if (!ue.isUnion()) { + var Z = ue.getProperty(Fe); + return Z ? [Z] : e.emptyArray; + } + var Be = e.mapDefined(ue.types, function(ge) { + return (e.isObjectLiteralExpression(g.parent) || e.isJsxAttributes(g.parent)) && ne.isTypeInvalidDueToUnionDiscriminant(ge, g.parent) ? void 0 : ge.getProperty(Fe); + }); + if (We && (Be.length === 0 || Be.length === ue.types.length)) { + var Z = ue.getProperty(Fe); + if (Z) + return [Z]; + } + return Be.length === 0 ? e.mapDefined(ue.types, function(ge) { + return ge.getProperty(Fe); + }) : Be; + } + e.getPropertySymbolsFromContextualType = d; + function D(g) { + return g && g.parent && g.parent.kind === 207 && g.parent.argumentExpression === g; + } + function fe(g) { + return "/prettier-security-dirname-placeholder" + e.directorySeparator + e.getDefaultLibFileName(g); + } + e.getDefaultLibFilePath = fe, e.setObjectAllocator(ie()); + })(ke || (ke = {})); + var ke; + (function(e) { + var a; + (function(C) { + function w(B, E) { + if (B.isDeclarationFile) + return; + var Q = e.getTokenAtPosition(B, E), le = B.getLineAndCharacterOfPosition(E).line; + if (B.getLineAndCharacterOfPosition(Q.getStart(B)).line > le) { + var N = e.findPrecedingToken(Q.pos, B); + if (!N || B.getLineAndCharacterOfPosition(N.getEnd()).line !== le) + return; + Q = N; + } + if (Q.flags & 16777216) + return; + return K(Q); + function p(b, se) { + var J = b.decorators ? e.skipTrivia(B.text, b.decorators.end) : b.getStart(B); + return e.createTextSpanFromBounds(J, (se || b).getEnd()); + } + function m(b, se) { + return p(b, e.findNextToken(se, se.parent, B)); + } + function G(b, se) { + return b && le === B.getLineAndCharacterOfPosition(b.getStart(B)).line ? K(b) : K(se); + } + function oe(b) { + return e.createTextSpanFromBounds(e.skipTrivia(B.text, b.pos), b.end); + } + function f(b) { + return K(e.findPrecedingToken(b.pos, B)); + } + function T(b) { + return K(e.findNextToken(b, b.parent, B)); + } + function K(b) { + if (b) { + var se = b.parent; + switch (b.kind) { + case 237: + return he(b.declarationList.declarations[0]); + case 254: + case 167: + case 166: + return he(b); + case 164: + return x(b); + case 256: + case 169: + case 168: + case 172: + case 173: + case 171: + case 213: + case 214: + return $(b); + case 235: + if (e.isFunctionBlock(b)) + return A(b); + case 262: + return y(b); + case 292: + return y(b.block); + case 238: + return p(b.expression); + case 247: + return p(b.getChildAt(0), b.expression); + case 241: + return m(b, b.expression); + case 240: + return K(b.statement); + case 253: + return p(b.getChildAt(0)); + case 239: + return m(b, b.expression); + case 250: + return K(b.statement); + case 246: + case 245: + return p(b.getChildAt(0), b.label); + case 242: + return L(b); + case 243: + return m(b, b.expression); + case 244: + return V(b); + case 249: + return m(b, b.expression); + case 289: + case 290: + return K(b.statements[0]); + case 252: + return y(b.tryBlock); + case 251: + return p(b, b.expression); + case 271: + return p(b, b.expression); + case 265: + return p(b, b.moduleReference); + case 266: + return p(b, b.moduleSpecifier); + case 272: + return p(b, b.moduleSpecifier); + case 261: + if (e.getModuleInstanceState(b) !== 1) + return; + case 257: + case 260: + case 299: + case 203: + return p(b); + case 248: + return K(b.statement); + case 165: + return oe(se.decorators); + case 201: + case 202: + return P(b); + case 258: + case 259: + return; + case 26: + case 1: + return G(e.findPrecedingToken(b.pos, B)); + case 27: + return f(b); + case 18: + return Y(b); + case 19: + return U(b); + case 23: + return j(b); + case 20: + return H(b); + case 21: + return I(b); + case 58: + return l(b); + case 31: + case 29: + return d(b); + case 115: + return D(b); + case 91: + case 83: + case 96: + return T(b); + case 160: + return fe(b); + default: + if (e.isArrayLiteralOrObjectLiteralDestructuringPattern(b)) + return k(b); + if ((b.kind === 79 || b.kind === 225 || b.kind === 296 || b.kind === 297) && e.isArrayLiteralOrObjectLiteralDestructuringPattern(se)) + return p(b); + if (b.kind === 221) { + var J = b, ie = J.left, R = J.operatorToken; + if (e.isArrayLiteralOrObjectLiteralDestructuringPattern(ie)) + return k(ie); + if (R.kind === 63 && e.isArrayLiteralOrObjectLiteralDestructuringPattern(b.parent)) + return p(b); + if (R.kind === 27) + return K(ie); + } + if (e.isExpressionNode(b)) + switch (se.kind) { + case 240: + return f(b); + case 165: + return K(b.parent); + case 242: + case 244: + return p(b); + case 221: + if (b.parent.operatorToken.kind === 27) + return p(b); + break; + case 214: + if (b.parent.body === b) + return p(b); + break; + } + switch (b.parent.kind) { + case 296: + if (b.parent.name === b && !e.isArrayLiteralOrObjectLiteralDestructuringPattern(b.parent.parent)) + return K(b.parent.initializer); + break; + case 211: + if (b.parent.type === b) + return T(b.parent.type); + break; + case 254: + case 164: { + var q = b.parent, O = q.initializer, ve = q.type; + if (O === b || ve === b || e.isAssignmentOperator(b.kind)) + return f(b); + break; + } + case 221: { + var ie = b.parent.left; + if (e.isArrayLiteralOrObjectLiteralDestructuringPattern(ie) && b !== ie) + return f(b); + break; + } + default: + if (e.isFunctionLike(b.parent) && b.parent.type === b) + return f(b); + } + return K(b.parent); + } + } + function ee(g) { + return e.isVariableDeclarationList(g.parent) && g.parent.declarations[0] === g ? p(e.findPrecedingToken(g.pos, B, g.parent), g) : p(g); + } + function he(g) { + if (g.parent.parent.kind === 243) + return K(g.parent.parent); + var ne = g.parent; + if (e.isBindingPattern(g.name)) + return P(g.name); + if (g.initializer || e.hasSyntacticModifier(g, 1) || ne.parent.kind === 244) + return ee(g); + if (e.isVariableDeclarationList(g.parent) && g.parent.declarations[0] !== g) + return K(e.findPrecedingToken(g.pos, B, g.parent)); + } + function F(g) { + return !!g.initializer || g.dotDotDotToken !== void 0 || e.hasSyntacticModifier(g, 12); + } + function x(g) { + if (e.isBindingPattern(g.name)) + return P(g.name); + if (F(g)) + return p(g); + var ne = g.parent, ue = ne.parameters.indexOf(g); + return e.Debug.assert(ue !== -1), ue !== 0 ? x(ne.parameters[ue - 1]) : K(ne.body); + } + function X(g) { + return e.hasSyntacticModifier(g, 1) || g.parent.kind === 257 && g.kind !== 171; + } + function $(g) { + if (!!g.body) + return X(g) ? p(g) : K(g.body); + } + function A(g) { + var ne = g.statements.length ? g.statements[0] : g.getLastToken(); + return X(g.parent) ? G(g.parent, ne) : K(ne); + } + function y(g) { + switch (g.parent.kind) { + case 261: + if (e.getModuleInstanceState(g.parent) !== 1) + return; + case 241: + case 239: + case 243: + return G(g.parent, g.statements[0]); + case 242: + case 244: + return G(e.findPrecedingToken(g.pos, B, g.parent), g.statements[0]); + } + return K(g.statements[0]); + } + function V(g) { + if (g.initializer.kind === 255) { + var ne = g.initializer; + if (ne.declarations.length > 0) + return K(ne.declarations[0]); + } else + return K(g.initializer); + } + function L(g) { + if (g.initializer) + return V(g); + if (g.condition) + return p(g.condition); + if (g.incrementor) + return p(g.incrementor); + } + function P(g) { + var ne = e.forEach(g.elements, function(ue) { + return ue.kind !== 227 ? ue : void 0; + }); + return ne ? K(ne) : g.parent.kind === 203 ? p(g.parent) : ee(g.parent); + } + function k(g) { + e.Debug.assert(g.kind !== 202 && g.kind !== 201); + var ne = g.kind === 204 ? g.elements : g.properties, ue = e.forEach(ne, function(We) { + return We.kind !== 227 ? We : void 0; + }); + return ue ? K(ue) : p(g.parent.kind === 221 ? g.parent : g); + } + function Y(g) { + switch (g.parent.kind) { + case 260: + var ne = g.parent; + return G(e.findPrecedingToken(g.pos, B, g.parent), ne.members.length ? ne.members[0] : ne.getLastToken(B)); + case 257: + var ue = g.parent; + return G(e.findPrecedingToken(g.pos, B, g.parent), ue.members.length ? ue.members[0] : ue.getLastToken(B)); + case 263: + return G(g.parent.parent, g.parent.clauses[0]); + } + return K(g.parent); + } + function U(g) { + switch (g.parent.kind) { + case 262: + if (e.getModuleInstanceState(g.parent.parent) !== 1) + return; + case 260: + case 257: + return p(g); + case 235: + if (e.isFunctionBlock(g.parent)) + return p(g); + case 292: + return K(e.lastOrUndefined(g.parent.statements)); + case 263: + var ne = g.parent, ue = e.lastOrUndefined(ne.clauses); + return ue ? K(e.lastOrUndefined(ue.statements)) : void 0; + case 201: + var We = g.parent; + return K(e.lastOrUndefined(We.elements) || We); + default: + if (e.isArrayLiteralOrObjectLiteralDestructuringPattern(g.parent)) { + var Fe = g.parent; + return p(e.lastOrUndefined(Fe.properties) || Fe); + } + return K(g.parent); + } + } + function j(g) { + switch (g.parent.kind) { + case 202: + var ne = g.parent; + return p(e.lastOrUndefined(ne.elements) || ne); + default: + if (e.isArrayLiteralOrObjectLiteralDestructuringPattern(g.parent)) { + var ue = g.parent; + return p(e.lastOrUndefined(ue.elements) || ue); + } + return K(g.parent); + } + } + function H(g) { + return g.parent.kind === 240 || g.parent.kind === 208 || g.parent.kind === 209 ? f(g) : g.parent.kind === 212 ? T(g) : K(g.parent); + } + function I(g) { + switch (g.parent.kind) { + case 213: + case 256: + case 214: + case 169: + case 168: + case 172: + case 173: + case 171: + case 241: + case 240: + case 242: + case 244: + case 208: + case 209: + case 212: + return f(g); + default: + return K(g.parent); + } + } + function l(g) { + return e.isFunctionLike(g.parent) || g.parent.kind === 296 || g.parent.kind === 164 ? f(g) : K(g.parent); + } + function d(g) { + return g.parent.kind === 211 ? T(g) : K(g.parent); + } + function D(g) { + return g.parent.kind === 240 ? m(g, g.parent.expression) : K(g.parent); + } + function fe(g) { + return g.parent.kind === 244 ? T(g) : K(g.parent); + } + } + } + C.spanInSourceFileAtLocation = w; + })(a = e.BreakpointResolver || (e.BreakpointResolver = {})); + })(ke || (ke = {})); + var ke; + (function(e) { + function a(C, w, B) { + var E = []; + B = e.fixupCompilerOptions(B, E); + var Q = e.isArray(C) ? C : [C], le = e.transformNodes(void 0, void 0, e.factory, B, Q, w, true); + return le.diagnostics = e.concatenate(le.diagnostics, E), le; + } + e.transform = a; + })(ke || (ke = {})); + var ar = function() { + return this; + }(), ke; + (function(e) { + function a(m, G) { + m && m.log("*INTERNAL ERROR* - Exception in typescript services: " + G.message); + } + var C = void 0, w = void 0; + e.LanguageServiceShimHostAdapter = w; + var B = void 0; + e.CoreServicesShimHostAdapter = B; + var E = void 0; + e.realizeDiagnostics = void 0; + var Q = void 0, le = void 0, N = void 0, p = void 0; + e.TypeScriptServicesFactory = void 0; + })(ke || (ke = {})), function() { + return; + try { + Object.defineProperty(Object.prototype, "__magic__", { get: function() { + return this; + }, configurable: true }), __magic__.globalThis = __magic__, typeof globalThis > "u" && (window.globalThis = window), delete Object.prototype.__magic__; + } catch { + window.globalThis = window; + } + }(), typeof re < "u" && re.exports && (re.exports = ke); + var ke; + (function(e) { + var a = { since: "4.0", warnAfter: "4.1", message: "Use the appropriate method on 'ts.factory' or the 'factory' supplied by your transformation context instead." }; + e.createNodeArray = e.Debug.deprecate(e.factory.createNodeArray, a), e.createNumericLiteral = e.Debug.deprecate(e.factory.createNumericLiteral, a), e.createBigIntLiteral = e.Debug.deprecate(e.factory.createBigIntLiteral, a), e.createStringLiteral = e.Debug.deprecate(e.factory.createStringLiteral, a), e.createStringLiteralFromNode = e.Debug.deprecate(e.factory.createStringLiteralFromNode, a), e.createRegularExpressionLiteral = e.Debug.deprecate(e.factory.createRegularExpressionLiteral, a), e.createLoopVariable = e.Debug.deprecate(e.factory.createLoopVariable, a), e.createUniqueName = e.Debug.deprecate(e.factory.createUniqueName, a), e.createPrivateIdentifier = e.Debug.deprecate(e.factory.createPrivateIdentifier, a), e.createSuper = e.Debug.deprecate(e.factory.createSuper, a), e.createThis = e.Debug.deprecate(e.factory.createThis, a), e.createNull = e.Debug.deprecate(e.factory.createNull, a), e.createTrue = e.Debug.deprecate(e.factory.createTrue, a), e.createFalse = e.Debug.deprecate(e.factory.createFalse, a), e.createModifier = e.Debug.deprecate(e.factory.createModifier, a), e.createModifiersFromModifierFlags = e.Debug.deprecate(e.factory.createModifiersFromModifierFlags, a), e.createQualifiedName = e.Debug.deprecate(e.factory.createQualifiedName, a), e.updateQualifiedName = e.Debug.deprecate(e.factory.updateQualifiedName, a), e.createComputedPropertyName = e.Debug.deprecate(e.factory.createComputedPropertyName, a), e.updateComputedPropertyName = e.Debug.deprecate(e.factory.updateComputedPropertyName, a), e.createTypeParameterDeclaration = e.Debug.deprecate(e.factory.createTypeParameterDeclaration, a), e.updateTypeParameterDeclaration = e.Debug.deprecate(e.factory.updateTypeParameterDeclaration, a), e.createParameter = e.Debug.deprecate(e.factory.createParameterDeclaration, a), e.updateParameter = e.Debug.deprecate(e.factory.updateParameterDeclaration, a), e.createDecorator = e.Debug.deprecate(e.factory.createDecorator, a), e.updateDecorator = e.Debug.deprecate(e.factory.updateDecorator, a), e.createProperty = e.Debug.deprecate(e.factory.createPropertyDeclaration, a), e.updateProperty = e.Debug.deprecate(e.factory.updatePropertyDeclaration, a), e.createMethod = e.Debug.deprecate(e.factory.createMethodDeclaration, a), e.updateMethod = e.Debug.deprecate(e.factory.updateMethodDeclaration, a), e.createConstructor = e.Debug.deprecate(e.factory.createConstructorDeclaration, a), e.updateConstructor = e.Debug.deprecate(e.factory.updateConstructorDeclaration, a), e.createGetAccessor = e.Debug.deprecate(e.factory.createGetAccessorDeclaration, a), e.updateGetAccessor = e.Debug.deprecate(e.factory.updateGetAccessorDeclaration, a), e.createSetAccessor = e.Debug.deprecate(e.factory.createSetAccessorDeclaration, a), e.updateSetAccessor = e.Debug.deprecate(e.factory.updateSetAccessorDeclaration, a), e.createCallSignature = e.Debug.deprecate(e.factory.createCallSignature, a), e.updateCallSignature = e.Debug.deprecate(e.factory.updateCallSignature, a), e.createConstructSignature = e.Debug.deprecate(e.factory.createConstructSignature, a), e.updateConstructSignature = e.Debug.deprecate(e.factory.updateConstructSignature, a), e.updateIndexSignature = e.Debug.deprecate(e.factory.updateIndexSignature, a), e.createKeywordTypeNode = e.Debug.deprecate(e.factory.createKeywordTypeNode, a), e.createTypePredicateNodeWithModifier = e.Debug.deprecate(e.factory.createTypePredicateNode, a), e.updateTypePredicateNodeWithModifier = e.Debug.deprecate(e.factory.updateTypePredicateNode, a), e.createTypeReferenceNode = e.Debug.deprecate(e.factory.createTypeReferenceNode, a), e.updateTypeReferenceNode = e.Debug.deprecate(e.factory.updateTypeReferenceNode, a), e.createFunctionTypeNode = e.Debug.deprecate(e.factory.createFunctionTypeNode, a), e.updateFunctionTypeNode = e.Debug.deprecate(e.factory.updateFunctionTypeNode, a), e.createConstructorTypeNode = e.Debug.deprecate(function(C, w, B) { + return e.factory.createConstructorTypeNode(void 0, C, w, B); + }, a), e.updateConstructorTypeNode = e.Debug.deprecate(function(C, w, B, E) { + return e.factory.updateConstructorTypeNode(C, C.modifiers, w, B, E); + }, a), e.createTypeQueryNode = e.Debug.deprecate(e.factory.createTypeQueryNode, a), e.updateTypeQueryNode = e.Debug.deprecate(e.factory.updateTypeQueryNode, a), e.createTypeLiteralNode = e.Debug.deprecate(e.factory.createTypeLiteralNode, a), e.updateTypeLiteralNode = e.Debug.deprecate(e.factory.updateTypeLiteralNode, a), e.createArrayTypeNode = e.Debug.deprecate(e.factory.createArrayTypeNode, a), e.updateArrayTypeNode = e.Debug.deprecate(e.factory.updateArrayTypeNode, a), e.createTupleTypeNode = e.Debug.deprecate(e.factory.createTupleTypeNode, a), e.updateTupleTypeNode = e.Debug.deprecate(e.factory.updateTupleTypeNode, a), e.createOptionalTypeNode = e.Debug.deprecate(e.factory.createOptionalTypeNode, a), e.updateOptionalTypeNode = e.Debug.deprecate(e.factory.updateOptionalTypeNode, a), e.createRestTypeNode = e.Debug.deprecate(e.factory.createRestTypeNode, a), e.updateRestTypeNode = e.Debug.deprecate(e.factory.updateRestTypeNode, a), e.createUnionTypeNode = e.Debug.deprecate(e.factory.createUnionTypeNode, a), e.updateUnionTypeNode = e.Debug.deprecate(e.factory.updateUnionTypeNode, a), e.createIntersectionTypeNode = e.Debug.deprecate(e.factory.createIntersectionTypeNode, a), e.updateIntersectionTypeNode = e.Debug.deprecate(e.factory.updateIntersectionTypeNode, a), e.createConditionalTypeNode = e.Debug.deprecate(e.factory.createConditionalTypeNode, a), e.updateConditionalTypeNode = e.Debug.deprecate(e.factory.updateConditionalTypeNode, a), e.createInferTypeNode = e.Debug.deprecate(e.factory.createInferTypeNode, a), e.updateInferTypeNode = e.Debug.deprecate(e.factory.updateInferTypeNode, a), e.createImportTypeNode = e.Debug.deprecate(e.factory.createImportTypeNode, a), e.updateImportTypeNode = e.Debug.deprecate(e.factory.updateImportTypeNode, a), e.createParenthesizedType = e.Debug.deprecate(e.factory.createParenthesizedType, a), e.updateParenthesizedType = e.Debug.deprecate(e.factory.updateParenthesizedType, a), e.createThisTypeNode = e.Debug.deprecate(e.factory.createThisTypeNode, a), e.updateTypeOperatorNode = e.Debug.deprecate(e.factory.updateTypeOperatorNode, a), e.createIndexedAccessTypeNode = e.Debug.deprecate(e.factory.createIndexedAccessTypeNode, a), e.updateIndexedAccessTypeNode = e.Debug.deprecate(e.factory.updateIndexedAccessTypeNode, a), e.createMappedTypeNode = e.Debug.deprecate(e.factory.createMappedTypeNode, a), e.updateMappedTypeNode = e.Debug.deprecate(e.factory.updateMappedTypeNode, a), e.createLiteralTypeNode = e.Debug.deprecate(e.factory.createLiteralTypeNode, a), e.updateLiteralTypeNode = e.Debug.deprecate(e.factory.updateLiteralTypeNode, a), e.createObjectBindingPattern = e.Debug.deprecate(e.factory.createObjectBindingPattern, a), e.updateObjectBindingPattern = e.Debug.deprecate(e.factory.updateObjectBindingPattern, a), e.createArrayBindingPattern = e.Debug.deprecate(e.factory.createArrayBindingPattern, a), e.updateArrayBindingPattern = e.Debug.deprecate(e.factory.updateArrayBindingPattern, a), e.createBindingElement = e.Debug.deprecate(e.factory.createBindingElement, a), e.updateBindingElement = e.Debug.deprecate(e.factory.updateBindingElement, a), e.createArrayLiteral = e.Debug.deprecate(e.factory.createArrayLiteralExpression, a), e.updateArrayLiteral = e.Debug.deprecate(e.factory.updateArrayLiteralExpression, a), e.createObjectLiteral = e.Debug.deprecate(e.factory.createObjectLiteralExpression, a), e.updateObjectLiteral = e.Debug.deprecate(e.factory.updateObjectLiteralExpression, a), e.createPropertyAccess = e.Debug.deprecate(e.factory.createPropertyAccessExpression, a), e.updatePropertyAccess = e.Debug.deprecate(e.factory.updatePropertyAccessExpression, a), e.createPropertyAccessChain = e.Debug.deprecate(e.factory.createPropertyAccessChain, a), e.updatePropertyAccessChain = e.Debug.deprecate(e.factory.updatePropertyAccessChain, a), e.createElementAccess = e.Debug.deprecate(e.factory.createElementAccessExpression, a), e.updateElementAccess = e.Debug.deprecate(e.factory.updateElementAccessExpression, a), e.createElementAccessChain = e.Debug.deprecate(e.factory.createElementAccessChain, a), e.updateElementAccessChain = e.Debug.deprecate(e.factory.updateElementAccessChain, a), e.createCall = e.Debug.deprecate(e.factory.createCallExpression, a), e.updateCall = e.Debug.deprecate(e.factory.updateCallExpression, a), e.createCallChain = e.Debug.deprecate(e.factory.createCallChain, a), e.updateCallChain = e.Debug.deprecate(e.factory.updateCallChain, a), e.createNew = e.Debug.deprecate(e.factory.createNewExpression, a), e.updateNew = e.Debug.deprecate(e.factory.updateNewExpression, a), e.createTypeAssertion = e.Debug.deprecate(e.factory.createTypeAssertion, a), e.updateTypeAssertion = e.Debug.deprecate(e.factory.updateTypeAssertion, a), e.createParen = e.Debug.deprecate(e.factory.createParenthesizedExpression, a), e.updateParen = e.Debug.deprecate(e.factory.updateParenthesizedExpression, a), e.createFunctionExpression = e.Debug.deprecate(e.factory.createFunctionExpression, a), e.updateFunctionExpression = e.Debug.deprecate(e.factory.updateFunctionExpression, a), e.createDelete = e.Debug.deprecate(e.factory.createDeleteExpression, a), e.updateDelete = e.Debug.deprecate(e.factory.updateDeleteExpression, a), e.createTypeOf = e.Debug.deprecate(e.factory.createTypeOfExpression, a), e.updateTypeOf = e.Debug.deprecate(e.factory.updateTypeOfExpression, a), e.createVoid = e.Debug.deprecate(e.factory.createVoidExpression, a), e.updateVoid = e.Debug.deprecate(e.factory.updateVoidExpression, a), e.createAwait = e.Debug.deprecate(e.factory.createAwaitExpression, a), e.updateAwait = e.Debug.deprecate(e.factory.updateAwaitExpression, a), e.createPrefix = e.Debug.deprecate(e.factory.createPrefixUnaryExpression, a), e.updatePrefix = e.Debug.deprecate(e.factory.updatePrefixUnaryExpression, a), e.createPostfix = e.Debug.deprecate(e.factory.createPostfixUnaryExpression, a), e.updatePostfix = e.Debug.deprecate(e.factory.updatePostfixUnaryExpression, a), e.createBinary = e.Debug.deprecate(e.factory.createBinaryExpression, a), e.updateConditional = e.Debug.deprecate(e.factory.updateConditionalExpression, a), e.createTemplateExpression = e.Debug.deprecate(e.factory.createTemplateExpression, a), e.updateTemplateExpression = e.Debug.deprecate(e.factory.updateTemplateExpression, a), e.createTemplateHead = e.Debug.deprecate(e.factory.createTemplateHead, a), e.createTemplateMiddle = e.Debug.deprecate(e.factory.createTemplateMiddle, a), e.createTemplateTail = e.Debug.deprecate(e.factory.createTemplateTail, a), e.createNoSubstitutionTemplateLiteral = e.Debug.deprecate(e.factory.createNoSubstitutionTemplateLiteral, a), e.updateYield = e.Debug.deprecate(e.factory.updateYieldExpression, a), e.createSpread = e.Debug.deprecate(e.factory.createSpreadElement, a), e.updateSpread = e.Debug.deprecate(e.factory.updateSpreadElement, a), e.createOmittedExpression = e.Debug.deprecate(e.factory.createOmittedExpression, a), e.createAsExpression = e.Debug.deprecate(e.factory.createAsExpression, a), e.updateAsExpression = e.Debug.deprecate(e.factory.updateAsExpression, a), e.createNonNullExpression = e.Debug.deprecate(e.factory.createNonNullExpression, a), e.updateNonNullExpression = e.Debug.deprecate(e.factory.updateNonNullExpression, a), e.createNonNullChain = e.Debug.deprecate(e.factory.createNonNullChain, a), e.updateNonNullChain = e.Debug.deprecate(e.factory.updateNonNullChain, a), e.createMetaProperty = e.Debug.deprecate(e.factory.createMetaProperty, a), e.updateMetaProperty = e.Debug.deprecate(e.factory.updateMetaProperty, a), e.createTemplateSpan = e.Debug.deprecate(e.factory.createTemplateSpan, a), e.updateTemplateSpan = e.Debug.deprecate(e.factory.updateTemplateSpan, a), e.createSemicolonClassElement = e.Debug.deprecate(e.factory.createSemicolonClassElement, a), e.createBlock = e.Debug.deprecate(e.factory.createBlock, a), e.updateBlock = e.Debug.deprecate(e.factory.updateBlock, a), e.createVariableStatement = e.Debug.deprecate(e.factory.createVariableStatement, a), e.updateVariableStatement = e.Debug.deprecate(e.factory.updateVariableStatement, a), e.createEmptyStatement = e.Debug.deprecate(e.factory.createEmptyStatement, a), e.createExpressionStatement = e.Debug.deprecate(e.factory.createExpressionStatement, a), e.updateExpressionStatement = e.Debug.deprecate(e.factory.updateExpressionStatement, a), e.createStatement = e.Debug.deprecate(e.factory.createExpressionStatement, a), e.updateStatement = e.Debug.deprecate(e.factory.updateExpressionStatement, a), e.createIf = e.Debug.deprecate(e.factory.createIfStatement, a), e.updateIf = e.Debug.deprecate(e.factory.updateIfStatement, a), e.createDo = e.Debug.deprecate(e.factory.createDoStatement, a), e.updateDo = e.Debug.deprecate(e.factory.updateDoStatement, a), e.createWhile = e.Debug.deprecate(e.factory.createWhileStatement, a), e.updateWhile = e.Debug.deprecate(e.factory.updateWhileStatement, a), e.createFor = e.Debug.deprecate(e.factory.createForStatement, a), e.updateFor = e.Debug.deprecate(e.factory.updateForStatement, a), e.createForIn = e.Debug.deprecate(e.factory.createForInStatement, a), e.updateForIn = e.Debug.deprecate(e.factory.updateForInStatement, a), e.createForOf = e.Debug.deprecate(e.factory.createForOfStatement, a), e.updateForOf = e.Debug.deprecate(e.factory.updateForOfStatement, a), e.createContinue = e.Debug.deprecate(e.factory.createContinueStatement, a), e.updateContinue = e.Debug.deprecate(e.factory.updateContinueStatement, a), e.createBreak = e.Debug.deprecate(e.factory.createBreakStatement, a), e.updateBreak = e.Debug.deprecate(e.factory.updateBreakStatement, a), e.createReturn = e.Debug.deprecate(e.factory.createReturnStatement, a), e.updateReturn = e.Debug.deprecate(e.factory.updateReturnStatement, a), e.createWith = e.Debug.deprecate(e.factory.createWithStatement, a), e.updateWith = e.Debug.deprecate(e.factory.updateWithStatement, a), e.createSwitch = e.Debug.deprecate(e.factory.createSwitchStatement, a), e.updateSwitch = e.Debug.deprecate(e.factory.updateSwitchStatement, a), e.createLabel = e.Debug.deprecate(e.factory.createLabeledStatement, a), e.updateLabel = e.Debug.deprecate(e.factory.updateLabeledStatement, a), e.createThrow = e.Debug.deprecate(e.factory.createThrowStatement, a), e.updateThrow = e.Debug.deprecate(e.factory.updateThrowStatement, a), e.createTry = e.Debug.deprecate(e.factory.createTryStatement, a), e.updateTry = e.Debug.deprecate(e.factory.updateTryStatement, a), e.createDebuggerStatement = e.Debug.deprecate(e.factory.createDebuggerStatement, a), e.createVariableDeclarationList = e.Debug.deprecate(e.factory.createVariableDeclarationList, a), e.updateVariableDeclarationList = e.Debug.deprecate(e.factory.updateVariableDeclarationList, a), e.createFunctionDeclaration = e.Debug.deprecate(e.factory.createFunctionDeclaration, a), e.updateFunctionDeclaration = e.Debug.deprecate(e.factory.updateFunctionDeclaration, a), e.createClassDeclaration = e.Debug.deprecate(e.factory.createClassDeclaration, a), e.updateClassDeclaration = e.Debug.deprecate(e.factory.updateClassDeclaration, a), e.createInterfaceDeclaration = e.Debug.deprecate(e.factory.createInterfaceDeclaration, a), e.updateInterfaceDeclaration = e.Debug.deprecate(e.factory.updateInterfaceDeclaration, a), e.createTypeAliasDeclaration = e.Debug.deprecate(e.factory.createTypeAliasDeclaration, a), e.updateTypeAliasDeclaration = e.Debug.deprecate(e.factory.updateTypeAliasDeclaration, a), e.createEnumDeclaration = e.Debug.deprecate(e.factory.createEnumDeclaration, a), e.updateEnumDeclaration = e.Debug.deprecate(e.factory.updateEnumDeclaration, a), e.createModuleDeclaration = e.Debug.deprecate(e.factory.createModuleDeclaration, a), e.updateModuleDeclaration = e.Debug.deprecate(e.factory.updateModuleDeclaration, a), e.createModuleBlock = e.Debug.deprecate(e.factory.createModuleBlock, a), e.updateModuleBlock = e.Debug.deprecate(e.factory.updateModuleBlock, a), e.createCaseBlock = e.Debug.deprecate(e.factory.createCaseBlock, a), e.updateCaseBlock = e.Debug.deprecate(e.factory.updateCaseBlock, a), e.createNamespaceExportDeclaration = e.Debug.deprecate(e.factory.createNamespaceExportDeclaration, a), e.updateNamespaceExportDeclaration = e.Debug.deprecate(e.factory.updateNamespaceExportDeclaration, a), e.createImportEqualsDeclaration = e.Debug.deprecate(e.factory.createImportEqualsDeclaration, a), e.updateImportEqualsDeclaration = e.Debug.deprecate(e.factory.updateImportEqualsDeclaration, a), e.createImportDeclaration = e.Debug.deprecate(e.factory.createImportDeclaration, a), e.updateImportDeclaration = e.Debug.deprecate(e.factory.updateImportDeclaration, a), e.createNamespaceImport = e.Debug.deprecate(e.factory.createNamespaceImport, a), e.updateNamespaceImport = e.Debug.deprecate(e.factory.updateNamespaceImport, a), e.createNamedImports = e.Debug.deprecate(e.factory.createNamedImports, a), e.updateNamedImports = e.Debug.deprecate(e.factory.updateNamedImports, a), e.createImportSpecifier = e.Debug.deprecate(e.factory.createImportSpecifier, a), e.updateImportSpecifier = e.Debug.deprecate(e.factory.updateImportSpecifier, a), e.createExportAssignment = e.Debug.deprecate(e.factory.createExportAssignment, a), e.updateExportAssignment = e.Debug.deprecate(e.factory.updateExportAssignment, a), e.createNamedExports = e.Debug.deprecate(e.factory.createNamedExports, a), e.updateNamedExports = e.Debug.deprecate(e.factory.updateNamedExports, a), e.createExportSpecifier = e.Debug.deprecate(e.factory.createExportSpecifier, a), e.updateExportSpecifier = e.Debug.deprecate(e.factory.updateExportSpecifier, a), e.createExternalModuleReference = e.Debug.deprecate(e.factory.createExternalModuleReference, a), e.updateExternalModuleReference = e.Debug.deprecate(e.factory.updateExternalModuleReference, a), e.createJSDocTypeExpression = e.Debug.deprecate(e.factory.createJSDocTypeExpression, a), e.createJSDocTypeTag = e.Debug.deprecate(e.factory.createJSDocTypeTag, a), e.createJSDocReturnTag = e.Debug.deprecate(e.factory.createJSDocReturnTag, a), e.createJSDocThisTag = e.Debug.deprecate(e.factory.createJSDocThisTag, a), e.createJSDocComment = e.Debug.deprecate(e.factory.createJSDocComment, a), e.createJSDocParameterTag = e.Debug.deprecate(e.factory.createJSDocParameterTag, a), e.createJSDocClassTag = e.Debug.deprecate(e.factory.createJSDocClassTag, a), e.createJSDocAugmentsTag = e.Debug.deprecate(e.factory.createJSDocAugmentsTag, a), e.createJSDocEnumTag = e.Debug.deprecate(e.factory.createJSDocEnumTag, a), e.createJSDocTemplateTag = e.Debug.deprecate(e.factory.createJSDocTemplateTag, a), e.createJSDocTypedefTag = e.Debug.deprecate(e.factory.createJSDocTypedefTag, a), e.createJSDocCallbackTag = e.Debug.deprecate(e.factory.createJSDocCallbackTag, a), e.createJSDocSignature = e.Debug.deprecate(e.factory.createJSDocSignature, a), e.createJSDocPropertyTag = e.Debug.deprecate(e.factory.createJSDocPropertyTag, a), e.createJSDocTypeLiteral = e.Debug.deprecate(e.factory.createJSDocTypeLiteral, a), e.createJSDocImplementsTag = e.Debug.deprecate(e.factory.createJSDocImplementsTag, a), e.createJSDocAuthorTag = e.Debug.deprecate(e.factory.createJSDocAuthorTag, a), e.createJSDocPublicTag = e.Debug.deprecate(e.factory.createJSDocPublicTag, a), e.createJSDocPrivateTag = e.Debug.deprecate(e.factory.createJSDocPrivateTag, a), e.createJSDocProtectedTag = e.Debug.deprecate(e.factory.createJSDocProtectedTag, a), e.createJSDocReadonlyTag = e.Debug.deprecate(e.factory.createJSDocReadonlyTag, a), e.createJSDocTag = e.Debug.deprecate(e.factory.createJSDocUnknownTag, a), e.createJsxElement = e.Debug.deprecate(e.factory.createJsxElement, a), e.updateJsxElement = e.Debug.deprecate(e.factory.updateJsxElement, a), e.createJsxSelfClosingElement = e.Debug.deprecate(e.factory.createJsxSelfClosingElement, a), e.updateJsxSelfClosingElement = e.Debug.deprecate(e.factory.updateJsxSelfClosingElement, a), e.createJsxOpeningElement = e.Debug.deprecate(e.factory.createJsxOpeningElement, a), e.updateJsxOpeningElement = e.Debug.deprecate(e.factory.updateJsxOpeningElement, a), e.createJsxClosingElement = e.Debug.deprecate(e.factory.createJsxClosingElement, a), e.updateJsxClosingElement = e.Debug.deprecate(e.factory.updateJsxClosingElement, a), e.createJsxFragment = e.Debug.deprecate(e.factory.createJsxFragment, a), e.createJsxText = e.Debug.deprecate(e.factory.createJsxText, a), e.updateJsxText = e.Debug.deprecate(e.factory.updateJsxText, a), e.createJsxOpeningFragment = e.Debug.deprecate(e.factory.createJsxOpeningFragment, a), e.createJsxJsxClosingFragment = e.Debug.deprecate(e.factory.createJsxJsxClosingFragment, a), e.updateJsxFragment = e.Debug.deprecate(e.factory.updateJsxFragment, a), e.createJsxAttribute = e.Debug.deprecate(e.factory.createJsxAttribute, a), e.updateJsxAttribute = e.Debug.deprecate(e.factory.updateJsxAttribute, a), e.createJsxAttributes = e.Debug.deprecate(e.factory.createJsxAttributes, a), e.updateJsxAttributes = e.Debug.deprecate(e.factory.updateJsxAttributes, a), e.createJsxSpreadAttribute = e.Debug.deprecate(e.factory.createJsxSpreadAttribute, a), e.updateJsxSpreadAttribute = e.Debug.deprecate(e.factory.updateJsxSpreadAttribute, a), e.createJsxExpression = e.Debug.deprecate(e.factory.createJsxExpression, a), e.updateJsxExpression = e.Debug.deprecate(e.factory.updateJsxExpression, a), e.createCaseClause = e.Debug.deprecate(e.factory.createCaseClause, a), e.updateCaseClause = e.Debug.deprecate(e.factory.updateCaseClause, a), e.createDefaultClause = e.Debug.deprecate(e.factory.createDefaultClause, a), e.updateDefaultClause = e.Debug.deprecate(e.factory.updateDefaultClause, a), e.createHeritageClause = e.Debug.deprecate(e.factory.createHeritageClause, a), e.updateHeritageClause = e.Debug.deprecate(e.factory.updateHeritageClause, a), e.createCatchClause = e.Debug.deprecate(e.factory.createCatchClause, a), e.updateCatchClause = e.Debug.deprecate(e.factory.updateCatchClause, a), e.createPropertyAssignment = e.Debug.deprecate(e.factory.createPropertyAssignment, a), e.updatePropertyAssignment = e.Debug.deprecate(e.factory.updatePropertyAssignment, a), e.createShorthandPropertyAssignment = e.Debug.deprecate(e.factory.createShorthandPropertyAssignment, a), e.updateShorthandPropertyAssignment = e.Debug.deprecate(e.factory.updateShorthandPropertyAssignment, a), e.createSpreadAssignment = e.Debug.deprecate(e.factory.createSpreadAssignment, a), e.updateSpreadAssignment = e.Debug.deprecate(e.factory.updateSpreadAssignment, a), e.createEnumMember = e.Debug.deprecate(e.factory.createEnumMember, a), e.updateEnumMember = e.Debug.deprecate(e.factory.updateEnumMember, a), e.updateSourceFileNode = e.Debug.deprecate(e.factory.updateSourceFile, a), e.createNotEmittedStatement = e.Debug.deprecate(e.factory.createNotEmittedStatement, a), e.createPartiallyEmittedExpression = e.Debug.deprecate(e.factory.createPartiallyEmittedExpression, a), e.updatePartiallyEmittedExpression = e.Debug.deprecate(e.factory.updatePartiallyEmittedExpression, a), e.createCommaList = e.Debug.deprecate(e.factory.createCommaListExpression, a), e.updateCommaList = e.Debug.deprecate(e.factory.updateCommaListExpression, a), e.createBundle = e.Debug.deprecate(e.factory.createBundle, a), e.updateBundle = e.Debug.deprecate(e.factory.updateBundle, a), e.createImmediatelyInvokedFunctionExpression = e.Debug.deprecate(e.factory.createImmediatelyInvokedFunctionExpression, a), e.createImmediatelyInvokedArrowFunction = e.Debug.deprecate(e.factory.createImmediatelyInvokedArrowFunction, a), e.createVoidZero = e.Debug.deprecate(e.factory.createVoidZero, a), e.createExportDefault = e.Debug.deprecate(e.factory.createExportDefault, a), e.createExternalModuleExport = e.Debug.deprecate(e.factory.createExternalModuleExport, a), e.createNamespaceExport = e.Debug.deprecate(e.factory.createNamespaceExport, a), e.updateNamespaceExport = e.Debug.deprecate(e.factory.updateNamespaceExport, a), e.createToken = e.Debug.deprecate(function(w) { + return e.factory.createToken(w); + }, a), e.createIdentifier = e.Debug.deprecate(function(w) { + return e.factory.createIdentifier(w, void 0, void 0); + }, a), e.createTempVariable = e.Debug.deprecate(function(w) { + return e.factory.createTempVariable(w, void 0); + }, a), e.getGeneratedNameForNode = e.Debug.deprecate(function(w) { + return e.factory.getGeneratedNameForNode(w, void 0); + }, a), e.createOptimisticUniqueName = e.Debug.deprecate(function(w) { + return e.factory.createUniqueName(w, 16); + }, a), e.createFileLevelUniqueName = e.Debug.deprecate(function(w) { + return e.factory.createUniqueName(w, 48); + }, a), e.createIndexSignature = e.Debug.deprecate(function(w, B, E, Q) { + return e.factory.createIndexSignature(w, B, E, Q); + }, a), e.createTypePredicateNode = e.Debug.deprecate(function(w, B) { + return e.factory.createTypePredicateNode(void 0, w, B); + }, a), e.updateTypePredicateNode = e.Debug.deprecate(function(w, B, E) { + return e.factory.updateTypePredicateNode(w, void 0, B, E); + }, a), e.createLiteral = e.Debug.deprecate(function(w) { + return typeof w == "number" ? e.factory.createNumericLiteral(w) : typeof w == "object" && "base10Value" in w ? e.factory.createBigIntLiteral(w) : typeof w == "boolean" ? w ? e.factory.createTrue() : e.factory.createFalse() : typeof w == "string" ? e.factory.createStringLiteral(w, void 0) : e.factory.createStringLiteralFromNode(w); + }, { since: "4.0", warnAfter: "4.1", message: "Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead." }), e.createMethodSignature = e.Debug.deprecate(function(w, B, E, Q, le) { + return e.factory.createMethodSignature(void 0, Q, le, w, B, E); + }, a), e.updateMethodSignature = e.Debug.deprecate(function(w, B, E, Q, le, N) { + return e.factory.updateMethodSignature(w, w.modifiers, le, N, B, E, Q); + }, a), e.createTypeOperatorNode = e.Debug.deprecate(function(w, B) { + var E; + return B ? E = w : (B = w, E = 140), e.factory.createTypeOperatorNode(E, B); + }, a), e.createTaggedTemplate = e.Debug.deprecate(function(w, B, E) { + var Q; + return E ? Q = B : E = B, e.factory.createTaggedTemplateExpression(w, Q, E); + }, a), e.updateTaggedTemplate = e.Debug.deprecate(function(w, B, E, Q) { + var le; + return Q ? le = E : Q = E, e.factory.updateTaggedTemplateExpression(w, B, le, Q); + }, a), e.updateBinary = e.Debug.deprecate(function(w, B, E, Q) { + return Q === void 0 && (Q = w.operatorToken), typeof Q == "number" && (Q = Q === w.operatorToken.kind ? w.operatorToken : e.factory.createToken(Q)), e.factory.updateBinaryExpression(w, B, Q, E); + }, a), e.createConditional = e.Debug.deprecate(function(w, B, E, Q, le) { + return arguments.length === 5 ? e.factory.createConditionalExpression(w, B, E, Q, le) : arguments.length === 3 ? e.factory.createConditionalExpression(w, e.factory.createToken(57), B, e.factory.createToken(58), E) : e.Debug.fail("Argument count mismatch"); + }, a), e.createYield = e.Debug.deprecate(function(w, B) { + var E; + return B ? E = w : B = w, e.factory.createYieldExpression(E, B); + }, a), e.createClassExpression = e.Debug.deprecate(function(w, B, E, Q, le) { + return e.factory.createClassExpression(void 0, w, B, E, Q, le); + }, a), e.updateClassExpression = e.Debug.deprecate(function(w, B, E, Q, le, N) { + return e.factory.updateClassExpression(w, void 0, B, E, Q, le, N); + }, a), e.createPropertySignature = e.Debug.deprecate(function(w, B, E, Q, le) { + var N = e.factory.createPropertySignature(w, B, E, Q); + return N.initializer = le, N; + }, a), e.updatePropertySignature = e.Debug.deprecate(function(w, B, E, Q, le, N) { + var p = e.factory.updatePropertySignature(w, B, E, Q, le); + return w.initializer !== N && (p === w && (p = e.factory.cloneNode(w)), p.initializer = N), p; + }, a), e.createExpressionWithTypeArguments = e.Debug.deprecate(function(w, B) { + return e.factory.createExpressionWithTypeArguments(B, w); + }, a), e.updateExpressionWithTypeArguments = e.Debug.deprecate(function(w, B, E) { + return e.factory.updateExpressionWithTypeArguments(w, E, B); + }, a), e.createArrowFunction = e.Debug.deprecate(function(w, B, E, Q, le, N) { + return arguments.length === 6 ? e.factory.createArrowFunction(w, B, E, Q, le, N) : arguments.length === 5 ? e.factory.createArrowFunction(w, B, E, Q, void 0, le) : e.Debug.fail("Argument count mismatch"); + }, a), e.updateArrowFunction = e.Debug.deprecate(function(w, B, E, Q, le, N, p) { + return arguments.length === 7 ? e.factory.updateArrowFunction(w, B, E, Q, le, N, p) : arguments.length === 6 ? e.factory.updateArrowFunction(w, B, E, Q, le, w.equalsGreaterThanToken, N) : e.Debug.fail("Argument count mismatch"); + }, a), e.createVariableDeclaration = e.Debug.deprecate(function(w, B, E, Q) { + return arguments.length === 4 ? e.factory.createVariableDeclaration(w, B, E, Q) : arguments.length >= 1 && arguments.length <= 3 ? e.factory.createVariableDeclaration(w, void 0, B, E) : e.Debug.fail("Argument count mismatch"); + }, a), e.updateVariableDeclaration = e.Debug.deprecate(function(w, B, E, Q, le) { + return arguments.length === 5 ? e.factory.updateVariableDeclaration(w, B, E, Q, le) : arguments.length === 4 ? e.factory.updateVariableDeclaration(w, B, w.exclamationToken, E, Q) : e.Debug.fail("Argument count mismatch"); + }, a), e.createImportClause = e.Debug.deprecate(function(w, B, E) { + return E === void 0 && (E = false), e.factory.createImportClause(E, w, B); + }, a), e.updateImportClause = e.Debug.deprecate(function(w, B, E, Q) { + return e.factory.updateImportClause(w, Q, B, E); + }, a), e.createExportDeclaration = e.Debug.deprecate(function(w, B, E, Q, le) { + return le === void 0 && (le = false), e.factory.createExportDeclaration(w, B, le, E, Q); + }, a), e.updateExportDeclaration = e.Debug.deprecate(function(w, B, E, Q, le, N) { + return e.factory.updateExportDeclaration(w, B, E, N, Q, le, w.assertClause); + }, a), e.createJSDocParamTag = e.Debug.deprecate(function(w, B, E, Q) { + return e.factory.createJSDocParameterTag(void 0, w, B, E, false, Q ? e.factory.createNodeArray([e.factory.createJSDocText(Q)]) : void 0); + }, a), e.createComma = e.Debug.deprecate(function(w, B) { + return e.factory.createComma(w, B); + }, a), e.createLessThan = e.Debug.deprecate(function(w, B) { + return e.factory.createLessThan(w, B); + }, a), e.createAssignment = e.Debug.deprecate(function(w, B) { + return e.factory.createAssignment(w, B); + }, a), e.createStrictEquality = e.Debug.deprecate(function(w, B) { + return e.factory.createStrictEquality(w, B); + }, a), e.createStrictInequality = e.Debug.deprecate(function(w, B) { + return e.factory.createStrictInequality(w, B); + }, a), e.createAdd = e.Debug.deprecate(function(w, B) { + return e.factory.createAdd(w, B); + }, a), e.createSubtract = e.Debug.deprecate(function(w, B) { + return e.factory.createSubtract(w, B); + }, a), e.createLogicalAnd = e.Debug.deprecate(function(w, B) { + return e.factory.createLogicalAnd(w, B); + }, a), e.createLogicalOr = e.Debug.deprecate(function(w, B) { + return e.factory.createLogicalOr(w, B); + }, a), e.createPostfixIncrement = e.Debug.deprecate(function(w) { + return e.factory.createPostfixIncrement(w); + }, a), e.createLogicalNot = e.Debug.deprecate(function(w) { + return e.factory.createLogicalNot(w); + }, a), e.createNode = e.Debug.deprecate(function(w, B, E) { + return B === void 0 && (B = 0), E === void 0 && (E = 0), e.setTextRangePosEnd(w === 305 ? e.parseBaseNodeFactory.createBaseSourceFileNode(w) : w === 79 ? e.parseBaseNodeFactory.createBaseIdentifierNode(w) : w === 80 ? e.parseBaseNodeFactory.createBasePrivateIdentifierNode(w) : e.isNodeKind(w) ? e.parseBaseNodeFactory.createBaseNode(w) : e.parseBaseNodeFactory.createBaseTokenNode(w), B, E); + }, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory` method instead." }), e.getMutableClone = e.Debug.deprecate(function(w) { + var B = e.factory.cloneNode(w); + return e.setTextRange(B, w), e.setParent(B, w.parent), B; + }, { since: "4.0", warnAfter: "4.1", message: "Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`." }), e.isTypeAssertion = e.Debug.deprecate(function(w) { + return w.kind === 211; + }, { since: "4.0", warnAfter: "4.1", message: "Use `isTypeAssertionExpression` instead." }), e.isIdentifierOrPrivateIdentifier = e.Debug.deprecate(function(w) { + return e.isMemberName(w); + }, { since: "4.2", warnAfter: "4.3", message: "Use `isMemberName` instead." }); + })(ke || (ke = {})); + } }), $4 = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.AST_TOKEN_TYPES = M.AST_NODE_TYPES = void 0; + var re; + (function(Ke) { + Ke.ArrayExpression = "ArrayExpression", Ke.ArrayPattern = "ArrayPattern", Ke.ArrowFunctionExpression = "ArrowFunctionExpression", Ke.AssignmentExpression = "AssignmentExpression", Ke.AssignmentPattern = "AssignmentPattern", Ke.AwaitExpression = "AwaitExpression", Ke.BinaryExpression = "BinaryExpression", Ke.BlockStatement = "BlockStatement", Ke.BreakStatement = "BreakStatement", Ke.CallExpression = "CallExpression", Ke.CatchClause = "CatchClause", Ke.ChainExpression = "ChainExpression", Ke.ClassBody = "ClassBody", Ke.ClassDeclaration = "ClassDeclaration", Ke.ClassExpression = "ClassExpression", Ke.ConditionalExpression = "ConditionalExpression", Ke.ContinueStatement = "ContinueStatement", Ke.DebuggerStatement = "DebuggerStatement", Ke.Decorator = "Decorator", Ke.DoWhileStatement = "DoWhileStatement", Ke.EmptyStatement = "EmptyStatement", Ke.ExportAllDeclaration = "ExportAllDeclaration", Ke.ExportDefaultDeclaration = "ExportDefaultDeclaration", Ke.ExportNamedDeclaration = "ExportNamedDeclaration", Ke.ExportSpecifier = "ExportSpecifier", Ke.ExpressionStatement = "ExpressionStatement", Ke.ForInStatement = "ForInStatement", Ke.ForOfStatement = "ForOfStatement", Ke.ForStatement = "ForStatement", Ke.FunctionDeclaration = "FunctionDeclaration", Ke.FunctionExpression = "FunctionExpression", Ke.Identifier = "Identifier", Ke.IfStatement = "IfStatement", Ke.ImportAttribute = "ImportAttribute", Ke.ImportDeclaration = "ImportDeclaration", Ke.ImportDefaultSpecifier = "ImportDefaultSpecifier", Ke.ImportExpression = "ImportExpression", Ke.ImportNamespaceSpecifier = "ImportNamespaceSpecifier", Ke.ImportSpecifier = "ImportSpecifier", Ke.JSXAttribute = "JSXAttribute", Ke.JSXClosingElement = "JSXClosingElement", Ke.JSXClosingFragment = "JSXClosingFragment", Ke.JSXElement = "JSXElement", Ke.JSXEmptyExpression = "JSXEmptyExpression", Ke.JSXExpressionContainer = "JSXExpressionContainer", Ke.JSXFragment = "JSXFragment", Ke.JSXIdentifier = "JSXIdentifier", Ke.JSXMemberExpression = "JSXMemberExpression", Ke.JSXNamespacedName = "JSXNamespacedName", Ke.JSXOpeningElement = "JSXOpeningElement", Ke.JSXOpeningFragment = "JSXOpeningFragment", Ke.JSXSpreadAttribute = "JSXSpreadAttribute", Ke.JSXSpreadChild = "JSXSpreadChild", Ke.JSXText = "JSXText", Ke.LabeledStatement = "LabeledStatement", Ke.Literal = "Literal", Ke.LogicalExpression = "LogicalExpression", Ke.MemberExpression = "MemberExpression", Ke.MetaProperty = "MetaProperty", Ke.MethodDefinition = "MethodDefinition", Ke.NewExpression = "NewExpression", Ke.ObjectExpression = "ObjectExpression", Ke.ObjectPattern = "ObjectPattern", Ke.PrivateIdentifier = "PrivateIdentifier", Ke.Program = "Program", Ke.Property = "Property", Ke.PropertyDefinition = "PropertyDefinition", Ke.RestElement = "RestElement", Ke.ReturnStatement = "ReturnStatement", Ke.SequenceExpression = "SequenceExpression", Ke.SpreadElement = "SpreadElement", Ke.StaticBlock = "StaticBlock", Ke.Super = "Super", Ke.SwitchCase = "SwitchCase", Ke.SwitchStatement = "SwitchStatement", Ke.TaggedTemplateExpression = "TaggedTemplateExpression", Ke.TemplateElement = "TemplateElement", Ke.TemplateLiteral = "TemplateLiteral", Ke.ThisExpression = "ThisExpression", Ke.ThrowStatement = "ThrowStatement", Ke.TryStatement = "TryStatement", Ke.UnaryExpression = "UnaryExpression", Ke.UpdateExpression = "UpdateExpression", Ke.VariableDeclaration = "VariableDeclaration", Ke.VariableDeclarator = "VariableDeclarator", Ke.WhileStatement = "WhileStatement", Ke.WithStatement = "WithStatement", Ke.YieldExpression = "YieldExpression", Ke.TSAbstractKeyword = "TSAbstractKeyword", Ke.TSAbstractMethodDefinition = "TSAbstractMethodDefinition", Ke.TSAbstractPropertyDefinition = "TSAbstractPropertyDefinition", Ke.TSAnyKeyword = "TSAnyKeyword", Ke.TSArrayType = "TSArrayType", Ke.TSAsExpression = "TSAsExpression", Ke.TSAsyncKeyword = "TSAsyncKeyword", Ke.TSBigIntKeyword = "TSBigIntKeyword", Ke.TSBooleanKeyword = "TSBooleanKeyword", Ke.TSCallSignatureDeclaration = "TSCallSignatureDeclaration", Ke.TSClassImplements = "TSClassImplements", Ke.TSConditionalType = "TSConditionalType", Ke.TSConstructorType = "TSConstructorType", Ke.TSConstructSignatureDeclaration = "TSConstructSignatureDeclaration", Ke.TSDeclareFunction = "TSDeclareFunction", Ke.TSDeclareKeyword = "TSDeclareKeyword", Ke.TSEmptyBodyFunctionExpression = "TSEmptyBodyFunctionExpression", Ke.TSEnumDeclaration = "TSEnumDeclaration", Ke.TSEnumMember = "TSEnumMember", Ke.TSExportAssignment = "TSExportAssignment", Ke.TSExportKeyword = "TSExportKeyword", Ke.TSExternalModuleReference = "TSExternalModuleReference", Ke.TSFunctionType = "TSFunctionType", Ke.TSInstantiationExpression = "TSInstantiationExpression", Ke.TSImportEqualsDeclaration = "TSImportEqualsDeclaration", Ke.TSImportType = "TSImportType", Ke.TSIndexedAccessType = "TSIndexedAccessType", Ke.TSIndexSignature = "TSIndexSignature", Ke.TSInferType = "TSInferType", Ke.TSInterfaceBody = "TSInterfaceBody", Ke.TSInterfaceDeclaration = "TSInterfaceDeclaration", Ke.TSInterfaceHeritage = "TSInterfaceHeritage", Ke.TSIntersectionType = "TSIntersectionType", Ke.TSIntrinsicKeyword = "TSIntrinsicKeyword", Ke.TSLiteralType = "TSLiteralType", Ke.TSMappedType = "TSMappedType", Ke.TSMethodSignature = "TSMethodSignature", Ke.TSModuleBlock = "TSModuleBlock", Ke.TSModuleDeclaration = "TSModuleDeclaration", Ke.TSNamedTupleMember = "TSNamedTupleMember", Ke.TSNamespaceExportDeclaration = "TSNamespaceExportDeclaration", Ke.TSNeverKeyword = "TSNeverKeyword", Ke.TSNonNullExpression = "TSNonNullExpression", Ke.TSNullKeyword = "TSNullKeyword", Ke.TSNumberKeyword = "TSNumberKeyword", Ke.TSObjectKeyword = "TSObjectKeyword", Ke.TSOptionalType = "TSOptionalType", Ke.TSParameterProperty = "TSParameterProperty", Ke.TSPrivateKeyword = "TSPrivateKeyword", Ke.TSPropertySignature = "TSPropertySignature", Ke.TSProtectedKeyword = "TSProtectedKeyword", Ke.TSPublicKeyword = "TSPublicKeyword", Ke.TSQualifiedName = "TSQualifiedName", Ke.TSReadonlyKeyword = "TSReadonlyKeyword", Ke.TSRestType = "TSRestType", Ke.TSStaticKeyword = "TSStaticKeyword", Ke.TSStringKeyword = "TSStringKeyword", Ke.TSSymbolKeyword = "TSSymbolKeyword", Ke.TSTemplateLiteralType = "TSTemplateLiteralType", Ke.TSThisType = "TSThisType", Ke.TSTupleType = "TSTupleType", Ke.TSTypeAliasDeclaration = "TSTypeAliasDeclaration", Ke.TSTypeAnnotation = "TSTypeAnnotation", Ke.TSTypeAssertion = "TSTypeAssertion", Ke.TSTypeLiteral = "TSTypeLiteral", Ke.TSTypeOperator = "TSTypeOperator", Ke.TSTypeParameter = "TSTypeParameter", Ke.TSTypeParameterDeclaration = "TSTypeParameterDeclaration", Ke.TSTypeParameterInstantiation = "TSTypeParameterInstantiation", Ke.TSTypePredicate = "TSTypePredicate", Ke.TSTypeQuery = "TSTypeQuery", Ke.TSTypeReference = "TSTypeReference", Ke.TSUndefinedKeyword = "TSUndefinedKeyword", Ke.TSUnionType = "TSUnionType", Ke.TSUnknownKeyword = "TSUnknownKeyword", Ke.TSVoidKeyword = "TSVoidKeyword"; + })(re = M.AST_NODE_TYPES || (M.AST_NODE_TYPES = {})); + var Ve; + (function(Ke) { + Ke.Boolean = "Boolean", Ke.Identifier = "Identifier", Ke.JSXIdentifier = "JSXIdentifier", Ke.JSXText = "JSXText", Ke.Keyword = "Keyword", Ke.Null = "Null", Ke.Numeric = "Numeric", Ke.Punctuator = "Punctuator", Ke.RegularExpression = "RegularExpression", Ke.String = "String", Ke.Template = "Template", Ke.Block = "Block", Ke.Line = "Line"; + })(Ve = M.AST_TOKEN_TYPES || (M.AST_TOKEN_TYPES = {})); + } }), DU = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types/dist/lib.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + } }), bU = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types/dist/parser-options.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + } }), SU = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types/dist/ts-estree.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(oi, kr, pr, Lr) { + Lr === void 0 && (Lr = pr); + var ar = Object.getOwnPropertyDescriptor(kr, pr); + (!ar || ("get" in ar ? !kr.__esModule : ar.writable || ar.configurable)) && (ar = { enumerable: true, get: function() { + return kr[pr]; + } }), Object.defineProperty(oi, Lr, ar); + } : function(oi, kr, pr, Lr) { + Lr === void 0 && (Lr = pr), oi[Lr] = kr[pr]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(oi, kr) { + Object.defineProperty(oi, "default", { enumerable: true, value: kr }); + } : function(oi, kr) { + oi.default = kr; + }), Ke = M && M.__importStar || function(oi) { + if (oi && oi.__esModule) + return oi; + var kr = {}; + if (oi != null) + for (var pr in oi) + pr !== "default" && Object.prototype.hasOwnProperty.call(oi, pr) && re(kr, oi, pr); + return Ve(kr, oi), kr; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.TSESTree = void 0, M.TSESTree = Ke($4()); + } }), Z4 = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types/dist/index.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(oi, kr, pr, Lr) { + Lr === void 0 && (Lr = pr); + var ar = Object.getOwnPropertyDescriptor(kr, pr); + (!ar || ("get" in ar ? !kr.__esModule : ar.writable || ar.configurable)) && (ar = { enumerable: true, get: function() { + return kr[pr]; + } }), Object.defineProperty(oi, Lr, ar); + } : function(oi, kr, pr, Lr) { + Lr === void 0 && (Lr = pr), oi[Lr] = kr[pr]; + }), Ve = M && M.__exportStar || function(oi, kr) { + for (var pr in oi) + pr !== "default" && !Object.prototype.hasOwnProperty.call(kr, pr) && re(kr, oi, pr); + }; + Object.defineProperty(M, "__esModule", { value: true }), M.AST_TOKEN_TYPES = M.AST_NODE_TYPES = void 0; + var Ke = $4(); + Object.defineProperty(M, "AST_NODE_TYPES", { enumerable: true, get: function() { + return Ke.AST_NODE_TYPES; + } }), Object.defineProperty(M, "AST_TOKEN_TYPES", { enumerable: true, get: function() { + return Ke.AST_TOKEN_TYPES; + } }), Ve(DU(), M), Ve(bU(), M), Ve(SU(), M); + } }), TU = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + } }), xU = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + var re = Z4(); + } }), k1 = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/index.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(oi, kr, pr, Lr) { + Lr === void 0 && (Lr = pr); + var ar = Object.getOwnPropertyDescriptor(kr, pr); + (!ar || ("get" in ar ? !kr.__esModule : ar.writable || ar.configurable)) && (ar = { enumerable: true, get: function() { + return kr[pr]; + } }), Object.defineProperty(oi, Lr, ar); + } : function(oi, kr, pr, Lr) { + Lr === void 0 && (Lr = pr), oi[Lr] = kr[pr]; + }), Ve = M && M.__exportStar || function(oi, kr) { + for (var pr in oi) + pr !== "default" && !Object.prototype.hasOwnProperty.call(kr, pr) && re(kr, oi, pr); + }; + Object.defineProperty(M, "__esModule", { value: true }), M.TSESTree = M.AST_TOKEN_TYPES = M.AST_NODE_TYPES = void 0; + var Ke = Z4(); + Object.defineProperty(M, "AST_NODE_TYPES", { enumerable: true, get: function() { + return Ke.AST_NODE_TYPES; + } }), Object.defineProperty(M, "AST_TOKEN_TYPES", { enumerable: true, get: function() { + return Ke.AST_TOKEN_TYPES; + } }), Object.defineProperty(M, "TSESTree", { enumerable: true, get: function() { + return Ke.TSESTree; + } }), Ve(TU(), M), Ve(xU(), M); + } }), EU = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/jsx/xhtml-entities.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.xhtmlEntities = void 0, M.xhtmlEntities = { quot: '"', amp: "&", apos: "'", lt: "<", gt: ">", nbsp: "\xA0", iexcl: "\xA1", cent: "\xA2", pound: "\xA3", curren: "\xA4", yen: "\xA5", brvbar: "\xA6", sect: "\xA7", uml: "\xA8", copy: "\xA9", ordf: "\xAA", laquo: "\xAB", not: "\xAC", shy: "\xAD", reg: "\xAE", macr: "\xAF", deg: "\xB0", plusmn: "\xB1", sup2: "\xB2", sup3: "\xB3", acute: "\xB4", micro: "\xB5", para: "\xB6", middot: "\xB7", cedil: "\xB8", sup1: "\xB9", ordm: "\xBA", raquo: "\xBB", frac14: "\xBC", frac12: "\xBD", frac34: "\xBE", iquest: "\xBF", Agrave: "\xC0", Aacute: "\xC1", Acirc: "\xC2", Atilde: "\xC3", Auml: "\xC4", Aring: "\xC5", AElig: "\xC6", Ccedil: "\xC7", Egrave: "\xC8", Eacute: "\xC9", Ecirc: "\xCA", Euml: "\xCB", Igrave: "\xCC", Iacute: "\xCD", Icirc: "\xCE", Iuml: "\xCF", ETH: "\xD0", Ntilde: "\xD1", Ograve: "\xD2", Oacute: "\xD3", Ocirc: "\xD4", Otilde: "\xD5", Ouml: "\xD6", times: "\xD7", Oslash: "\xD8", Ugrave: "\xD9", Uacute: "\xDA", Ucirc: "\xDB", Uuml: "\xDC", Yacute: "\xDD", THORN: "\xDE", szlig: "\xDF", agrave: "\xE0", aacute: "\xE1", acirc: "\xE2", atilde: "\xE3", auml: "\xE4", aring: "\xE5", aelig: "\xE6", ccedil: "\xE7", egrave: "\xE8", eacute: "\xE9", ecirc: "\xEA", euml: "\xEB", igrave: "\xEC", iacute: "\xED", icirc: "\xEE", iuml: "\xEF", eth: "\xF0", ntilde: "\xF1", ograve: "\xF2", oacute: "\xF3", ocirc: "\xF4", otilde: "\xF5", ouml: "\xF6", divide: "\xF7", oslash: "\xF8", ugrave: "\xF9", uacute: "\xFA", ucirc: "\xFB", uuml: "\xFC", yacute: "\xFD", thorn: "\xFE", yuml: "\xFF", OElig: "\u0152", oelig: "\u0153", Scaron: "\u0160", scaron: "\u0161", Yuml: "\u0178", fnof: "\u0192", circ: "\u02C6", tilde: "\u02DC", Alpha: "\u0391", Beta: "\u0392", Gamma: "\u0393", Delta: "\u0394", Epsilon: "\u0395", Zeta: "\u0396", Eta: "\u0397", Theta: "\u0398", Iota: "\u0399", Kappa: "\u039A", Lambda: "\u039B", Mu: "\u039C", Nu: "\u039D", Xi: "\u039E", Omicron: "\u039F", Pi: "\u03A0", Rho: "\u03A1", Sigma: "\u03A3", Tau: "\u03A4", Upsilon: "\u03A5", Phi: "\u03A6", Chi: "\u03A7", Psi: "\u03A8", Omega: "\u03A9", alpha: "\u03B1", beta: "\u03B2", gamma: "\u03B3", delta: "\u03B4", epsilon: "\u03B5", zeta: "\u03B6", eta: "\u03B7", theta: "\u03B8", iota: "\u03B9", kappa: "\u03BA", lambda: "\u03BB", mu: "\u03BC", nu: "\u03BD", xi: "\u03BE", omicron: "\u03BF", pi: "\u03C0", rho: "\u03C1", sigmaf: "\u03C2", sigma: "\u03C3", tau: "\u03C4", upsilon: "\u03C5", phi: "\u03C6", chi: "\u03C7", psi: "\u03C8", omega: "\u03C9", thetasym: "\u03D1", upsih: "\u03D2", piv: "\u03D6", ensp: "\u2002", emsp: "\u2003", thinsp: "\u2009", zwnj: "\u200C", zwj: "\u200D", lrm: "\u200E", rlm: "\u200F", ndash: "\u2013", mdash: "\u2014", lsquo: "\u2018", rsquo: "\u2019", sbquo: "\u201A", ldquo: "\u201C", rdquo: "\u201D", bdquo: "\u201E", dagger: "\u2020", Dagger: "\u2021", bull: "\u2022", hellip: "\u2026", permil: "\u2030", prime: "\u2032", Prime: "\u2033", lsaquo: "\u2039", rsaquo: "\u203A", oline: "\u203E", frasl: "\u2044", euro: "\u20AC", image: "\u2111", weierp: "\u2118", real: "\u211C", trade: "\u2122", alefsym: "\u2135", larr: "\u2190", uarr: "\u2191", rarr: "\u2192", darr: "\u2193", harr: "\u2194", crarr: "\u21B5", lArr: "\u21D0", uArr: "\u21D1", rArr: "\u21D2", dArr: "\u21D3", hArr: "\u21D4", forall: "\u2200", part: "\u2202", exist: "\u2203", empty: "\u2205", nabla: "\u2207", isin: "\u2208", notin: "\u2209", ni: "\u220B", prod: "\u220F", sum: "\u2211", minus: "\u2212", lowast: "\u2217", radic: "\u221A", prop: "\u221D", infin: "\u221E", ang: "\u2220", and: "\u2227", or: "\u2228", cap: "\u2229", cup: "\u222A", int: "\u222B", there4: "\u2234", sim: "\u223C", cong: "\u2245", asymp: "\u2248", ne: "\u2260", equiv: "\u2261", le: "\u2264", ge: "\u2265", sub: "\u2282", sup: "\u2283", nsub: "\u2284", sube: "\u2286", supe: "\u2287", oplus: "\u2295", otimes: "\u2297", perp: "\u22A5", sdot: "\u22C5", lceil: "\u2308", rceil: "\u2309", lfloor: "\u230A", rfloor: "\u230B", lang: "\u2329", rang: "\u232A", loz: "\u25CA", spades: "\u2660", clubs: "\u2663", hearts: "\u2665", diams: "\u2666" }; + } }), A1 = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/node-utils.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(V, L, P, k) { + k === void 0 && (k = P); + var Y = Object.getOwnPropertyDescriptor(L, P); + (!Y || ("get" in Y ? !L.__esModule : Y.writable || Y.configurable)) && (Y = { enumerable: true, get: function() { + return L[P]; + } }), Object.defineProperty(V, k, Y); + } : function(V, L, P, k) { + k === void 0 && (k = P), V[k] = L[P]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(V, L) { + Object.defineProperty(V, "default", { enumerable: true, value: L }); + } : function(V, L) { + V.default = L; + }), Ke = M && M.__importStar || function(V) { + if (V && V.__esModule) + return V; + var L = {}; + if (V != null) + for (var P in V) + P !== "default" && Object.prototype.hasOwnProperty.call(V, P) && re(L, V, P); + return Ve(L, V), L; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.firstDefined = M.nodeHasTokens = M.createError = M.TSError = M.convertTokens = M.convertToken = M.getTokenType = M.isChildUnwrappableOptionalChain = M.isChainExpression = M.isOptional = M.isComputedProperty = M.unescapeStringLiteralText = M.hasJSXAncestor = M.findFirstMatchingAncestor = M.findNextToken = M.getTSNodeAccessibility = M.getDeclarationKind = M.isJSXToken = M.isToken = M.getRange = M.canContainDirective = M.getLocFor = M.getLineAndCharacterFor = M.getBinaryExpressionType = M.isJSDocComment = M.isComment = M.isComma = M.getLastModifier = M.hasModifier = M.isESTreeClassMember = M.getTextForTokenKind = M.isLogicalOperator = M.isAssignmentOperator = void 0; + var oi = Ke(_u()), kr = k1(), pr = EU(), Lr = oi.SyntaxKind, ar = [Lr.BarBarToken, Lr.AmpersandAmpersandToken, Lr.QuestionQuestionToken]; + function ke(V) { + return V.kind >= Lr.FirstAssignment && V.kind <= Lr.LastAssignment; + } + M.isAssignmentOperator = ke; + function e(V) { + return ar.includes(V.kind); + } + M.isLogicalOperator = e; + function a(V) { + return oi.tokenToString(V); + } + M.getTextForTokenKind = a; + function C(V) { + return V.kind !== Lr.SemicolonClassElement; + } + M.isESTreeClassMember = C; + function w(V, L) { + return !!L.modifiers && !!L.modifiers.length && L.modifiers.some((P) => P.kind === V); + } + M.hasModifier = w; + function B(V) { + return !!V.modifiers && !!V.modifiers.length && V.modifiers[V.modifiers.length - 1] || null; + } + M.getLastModifier = B; + function E(V) { + return V.kind === Lr.CommaToken; + } + M.isComma = E; + function Q(V) { + return V.kind === Lr.SingleLineCommentTrivia || V.kind === Lr.MultiLineCommentTrivia; + } + M.isComment = Q; + function le(V) { + return V.kind === Lr.JSDocComment; + } + M.isJSDocComment = le; + function N(V) { + return ke(V) ? kr.AST_NODE_TYPES.AssignmentExpression : e(V) ? kr.AST_NODE_TYPES.LogicalExpression : kr.AST_NODE_TYPES.BinaryExpression; + } + M.getBinaryExpressionType = N; + function p(V, L) { + let P = L.getLineAndCharacterOfPosition(V); + return { line: P.line + 1, column: P.character }; + } + M.getLineAndCharacterFor = p; + function m(V, L, P) { + return { start: p(V, P), end: p(L, P) }; + } + M.getLocFor = m; + function G(V) { + if (V.kind === oi.SyntaxKind.Block) + switch (V.parent.kind) { + case oi.SyntaxKind.Constructor: + case oi.SyntaxKind.GetAccessor: + case oi.SyntaxKind.SetAccessor: + case oi.SyntaxKind.ArrowFunction: + case oi.SyntaxKind.FunctionExpression: + case oi.SyntaxKind.FunctionDeclaration: + case oi.SyntaxKind.MethodDeclaration: + return true; + default: + return false; + } + return true; + } + M.canContainDirective = G; + function oe(V, L) { + return [V.getStart(L), V.getEnd()]; + } + M.getRange = oe; + function f(V) { + return V.kind >= Lr.FirstToken && V.kind <= Lr.LastToken; + } + M.isToken = f; + function T(V) { + return V.kind >= Lr.JsxElement && V.kind <= Lr.JsxAttribute; + } + M.isJSXToken = T; + function K(V) { + return V.flags & oi.NodeFlags.Let ? "let" : V.flags & oi.NodeFlags.Const ? "const" : "var"; + } + M.getDeclarationKind = K; + function b(V) { + let L = V.modifiers; + if (!L) + return null; + for (let P of L) + switch (P.kind) { + case Lr.PublicKeyword: + return "public"; + case Lr.ProtectedKeyword: + return "protected"; + case Lr.PrivateKeyword: + return "private"; + default: + break; + } + return null; + } + M.getTSNodeAccessibility = b; + function se(V, L, P) { + return k(L); + function k(Y) { + return oi.isToken(Y) && Y.pos === V.end ? Y : y(Y.getChildren(P), (U) => (U.pos <= V.pos && U.end > V.end || U.pos === V.end) && A(U, P) ? k(U) : void 0); + } + } + M.findNextToken = se; + function J(V, L) { + for (; V; ) { + if (L(V)) + return V; + V = V.parent; + } + } + M.findFirstMatchingAncestor = J; + function ie(V) { + return !!J(V, T); + } + M.hasJSXAncestor = ie; + function R(V) { + return V.replace(/&(?:#\d+|#x[\da-fA-F]+|[0-9a-zA-Z]+);/g, (L) => { + let P = L.slice(1, -1); + if (P[0] === "#") { + let k = P[1] === "x" ? parseInt(P.slice(2), 16) : parseInt(P.slice(1), 10); + return k > 1114111 ? L : String.fromCodePoint(k); + } + return pr.xhtmlEntities[P] || L; + }); + } + M.unescapeStringLiteralText = R; + function q(V) { + return V.kind === Lr.ComputedPropertyName; + } + M.isComputedProperty = q; + function O(V) { + return V.questionToken ? V.questionToken.kind === Lr.QuestionToken : false; + } + M.isOptional = O; + function ve(V) { + return V.type === kr.AST_NODE_TYPES.ChainExpression; + } + M.isChainExpression = ve; + function ee(V, L) { + return ve(L) && V.expression.kind !== oi.SyntaxKind.ParenthesizedExpression; + } + M.isChildUnwrappableOptionalChain = ee; + function he(V) { + if ("originalKeywordKind" in V && V.originalKeywordKind) + return V.originalKeywordKind === Lr.NullKeyword ? kr.AST_TOKEN_TYPES.Null : V.originalKeywordKind >= Lr.FirstFutureReservedWord && V.originalKeywordKind <= Lr.LastKeyword ? kr.AST_TOKEN_TYPES.Identifier : kr.AST_TOKEN_TYPES.Keyword; + if (V.kind >= Lr.FirstKeyword && V.kind <= Lr.LastFutureReservedWord) + return V.kind === Lr.FalseKeyword || V.kind === Lr.TrueKeyword ? kr.AST_TOKEN_TYPES.Boolean : kr.AST_TOKEN_TYPES.Keyword; + if (V.kind >= Lr.FirstPunctuation && V.kind <= Lr.LastPunctuation) + return kr.AST_TOKEN_TYPES.Punctuator; + if (V.kind >= Lr.NoSubstitutionTemplateLiteral && V.kind <= Lr.TemplateTail) + return kr.AST_TOKEN_TYPES.Template; + switch (V.kind) { + case Lr.NumericLiteral: + return kr.AST_TOKEN_TYPES.Numeric; + case Lr.JsxText: + return kr.AST_TOKEN_TYPES.JSXText; + case Lr.StringLiteral: + return V.parent && (V.parent.kind === Lr.JsxAttribute || V.parent.kind === Lr.JsxElement) ? kr.AST_TOKEN_TYPES.JSXText : kr.AST_TOKEN_TYPES.String; + case Lr.RegularExpressionLiteral: + return kr.AST_TOKEN_TYPES.RegularExpression; + case Lr.Identifier: + case Lr.ConstructorKeyword: + case Lr.GetKeyword: + case Lr.SetKeyword: + default: + } + return V.parent && V.kind === Lr.Identifier && (T(V.parent) || V.parent.kind === Lr.PropertyAccessExpression && ie(V)) ? kr.AST_TOKEN_TYPES.JSXIdentifier : kr.AST_TOKEN_TYPES.Identifier; + } + M.getTokenType = he; + function F(V, L) { + let P = V.kind === Lr.JsxText ? V.getFullStart() : V.getStart(L), k = V.getEnd(), Y = L.text.slice(P, k), U = he(V); + return U === kr.AST_TOKEN_TYPES.RegularExpression ? { type: U, value: Y, range: [P, k], loc: m(P, k, L), regex: { pattern: Y.slice(1, Y.lastIndexOf("/")), flags: Y.slice(Y.lastIndexOf("/") + 1) } } : { type: U, value: Y, range: [P, k], loc: m(P, k, L) }; + } + M.convertToken = F; + function x(V) { + let L = []; + function P(k) { + if (!(Q(k) || le(k))) + if (f(k) && k.kind !== Lr.EndOfFileToken) { + let Y = F(k, V); + Y && L.push(Y); + } else + k.getChildren(V).forEach(P); + } + return P(V), L; + } + M.convertTokens = x; + var X = class extends Error { + constructor(V, L, P, k, Y) { + super(V), this.fileName = L, this.index = P, this.lineNumber = k, this.column = Y, Object.defineProperty(this, "name", { value: new.target.name, enumerable: false, configurable: true }); + } + }; + M.TSError = X; + function $(V, L, P) { + let k = V.getLineAndCharacterOfPosition(L); + return new X(P, V.fileName, L, k.line + 1, k.character); + } + M.createError = $; + function A(V, L) { + return V.kind === Lr.EndOfFileToken ? !!V.jsDoc : V.getWidth(L) !== 0; + } + M.nodeHasTokens = A; + function y(V, L) { + if (V !== void 0) + for (let P = 0; P < V.length; P++) { + let k = L(V[P], P); + if (k !== void 0) + return k; + } + } + M.firstDefined = y; + } }), CU = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/version-check.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(ar, ke, e, a) { + a === void 0 && (a = e); + var C = Object.getOwnPropertyDescriptor(ke, e); + (!C || ("get" in C ? !ke.__esModule : C.writable || C.configurable)) && (C = { enumerable: true, get: function() { + return ke[e]; + } }), Object.defineProperty(ar, a, C); + } : function(ar, ke, e, a) { + a === void 0 && (a = e), ar[a] = ke[e]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(ar, ke) { + Object.defineProperty(ar, "default", { enumerable: true, value: ke }); + } : function(ar, ke) { + ar.default = ke; + }), Ke = M && M.__importStar || function(ar) { + if (ar && ar.__esModule) + return ar; + var ke = {}; + if (ar != null) + for (var e in ar) + e !== "default" && Object.prototype.hasOwnProperty.call(ar, e) && re(ke, ar, e); + return Ve(ke, ar), ke; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.typescriptVersionIsAtLeast = void 0; + var oi = Ke(QT()), kr = Ke(_u()), pr = ["3.7", "3.8", "3.9", "4.0"], Lr = {}; + M.typescriptVersionIsAtLeast = Lr; + for (let ar of pr) + Lr[ar] = true; + } }), e3 = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/convert.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(a, C, w, B) { + B === void 0 && (B = w); + var E = Object.getOwnPropertyDescriptor(C, w); + (!E || ("get" in E ? !C.__esModule : E.writable || E.configurable)) && (E = { enumerable: true, get: function() { + return C[w]; + } }), Object.defineProperty(a, B, E); + } : function(a, C, w, B) { + B === void 0 && (B = w), a[B] = C[w]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(a, C) { + Object.defineProperty(a, "default", { enumerable: true, value: C }); + } : function(a, C) { + a.default = C; + }), Ke = M && M.__importStar || function(a) { + if (a && a.__esModule) + return a; + var C = {}; + if (a != null) + for (var w in a) + w !== "default" && Object.prototype.hasOwnProperty.call(a, w) && re(C, a, w); + return Ve(C, a), C; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.Converter = M.convertError = void 0; + var oi = Ke(_u()), kr = A1(), pr = k1(), Lr = CU(), ar = oi.SyntaxKind; + function ke(a) { + return (0, kr.createError)(a.file, a.start, "message" in a && a.message || a.messageText); + } + M.convertError = ke; + var e = class { + constructor(a, C) { + this.esTreeNodeToTSNodeMap = /* @__PURE__ */ new WeakMap(), this.tsNodeToESTreeNodeMap = /* @__PURE__ */ new WeakMap(), this.allowPattern = false, this.inTypeMode = false, this.ast = a, this.options = Object.assign({}, C); + } + getASTMaps() { + return { esTreeNodeToTSNodeMap: this.esTreeNodeToTSNodeMap, tsNodeToESTreeNodeMap: this.tsNodeToESTreeNodeMap }; + } + convertProgram() { + return this.converter(this.ast); + } + converter(a, C, w, B) { + if (!a) + return null; + let E = this.inTypeMode, Q = this.allowPattern; + w !== void 0 && (this.inTypeMode = w), B !== void 0 && (this.allowPattern = B); + let le = this.convertNode(a, C != null ? C : a.parent); + return this.registerTSNodeInNodeMap(a, le), this.inTypeMode = E, this.allowPattern = Q, le; + } + fixExports(a, C) { + if (a.modifiers && a.modifiers[0].kind === ar.ExportKeyword) { + this.registerTSNodeInNodeMap(a, C); + let w = a.modifiers[0], B = a.modifiers[1], E = B && B.kind === ar.DefaultKeyword, Q = E ? (0, kr.findNextToken)(B, this.ast, this.ast) : (0, kr.findNextToken)(w, this.ast, this.ast); + if (C.range[0] = Q.getStart(this.ast), C.loc = (0, kr.getLocFor)(C.range[0], C.range[1], this.ast), E) + return this.createNode(a, { type: pr.AST_NODE_TYPES.ExportDefaultDeclaration, declaration: C, range: [w.getStart(this.ast), C.range[1]], exportKind: "value" }); + { + let le = C.type === pr.AST_NODE_TYPES.TSInterfaceDeclaration || C.type === pr.AST_NODE_TYPES.TSTypeAliasDeclaration, N = "declare" in C && C.declare === true; + return this.createNode(a, { type: pr.AST_NODE_TYPES.ExportNamedDeclaration, declaration: C, specifiers: [], source: null, exportKind: le || N ? "type" : "value", range: [w.getStart(this.ast), C.range[1]], assertions: [] }); + } + } + return C; + } + registerTSNodeInNodeMap(a, C) { + C && this.options.shouldPreserveNodeMaps && (this.tsNodeToESTreeNodeMap.has(a) || this.tsNodeToESTreeNodeMap.set(a, C)); + } + convertPattern(a, C) { + return this.converter(a, C, this.inTypeMode, true); + } + convertChild(a, C) { + return this.converter(a, C, this.inTypeMode, false); + } + convertType(a, C) { + return this.converter(a, C, true, false); + } + createNode(a, C) { + let w = C; + return w.range || (w.range = (0, kr.getRange)(a, this.ast)), w.loc || (w.loc = (0, kr.getLocFor)(w.range[0], w.range[1], this.ast)), w && this.options.shouldPreserveNodeMaps && this.esTreeNodeToTSNodeMap.set(w, a), w; + } + convertBindingNameWithTypeAnnotation(a, C, w) { + let B = this.convertPattern(a); + return C && (B.typeAnnotation = this.convertTypeAnnotation(C, w), this.fixParentLocation(B, B.typeAnnotation.range)), B; + } + convertTypeAnnotation(a, C) { + let w = (C == null ? void 0 : C.kind) === ar.FunctionType || (C == null ? void 0 : C.kind) === ar.ConstructorType ? 2 : 1, B = a.getFullStart() - w, E = (0, kr.getLocFor)(B, a.end, this.ast); + return { type: pr.AST_NODE_TYPES.TSTypeAnnotation, loc: E, range: [B, a.end], typeAnnotation: this.convertType(a) }; + } + convertBodyExpressions(a, C) { + let w = (0, kr.canContainDirective)(C); + return a.map((B) => { + let E = this.convertChild(B); + if (w) + if ((E == null ? void 0 : E.expression) && oi.isExpressionStatement(B) && oi.isStringLiteral(B.expression)) { + let Q = E.expression.raw; + return E.directive = Q.slice(1, -1), E; + } else + w = false; + return E; + }).filter((B) => B); + } + convertTypeArgumentsToTypeParameters(a, C) { + let w = (0, kr.findNextToken)(a, this.ast, this.ast); + return this.createNode(C, { type: pr.AST_NODE_TYPES.TSTypeParameterInstantiation, range: [a.pos - 1, w.end], params: a.map((B) => this.convertType(B)) }); + } + convertTSTypeParametersToTypeParametersDeclaration(a) { + let C = (0, kr.findNextToken)(a, this.ast, this.ast); + return { type: pr.AST_NODE_TYPES.TSTypeParameterDeclaration, range: [a.pos - 1, C.end], loc: (0, kr.getLocFor)(a.pos - 1, C.end, this.ast), params: a.map((w) => this.convertType(w)) }; + } + convertParameters(a) { + return !a || !a.length ? [] : a.map((C) => { + var w; + let B = this.convertChild(C); + return !((w = C.decorators) === null || w === void 0) && w.length && (B.decorators = C.decorators.map((E) => this.convertChild(E))), B; + }); + } + convertChainExpression(a, C) { + let { child: w, isOptional: B } = (() => a.type === pr.AST_NODE_TYPES.MemberExpression ? { child: a.object, isOptional: a.optional } : a.type === pr.AST_NODE_TYPES.CallExpression ? { child: a.callee, isOptional: a.optional } : { child: a.expression, isOptional: false })(), E = (0, kr.isChildUnwrappableOptionalChain)(C, w); + if (!E && !B) + return a; + if (E && (0, kr.isChainExpression)(w)) { + let Q = w.expression; + a.type === pr.AST_NODE_TYPES.MemberExpression ? a.object = Q : a.type === pr.AST_NODE_TYPES.CallExpression ? a.callee = Q : a.expression = Q; + } + return this.createNode(C, { type: pr.AST_NODE_TYPES.ChainExpression, expression: a }); + } + deeplyCopy(a) { + if (a.kind === oi.SyntaxKind.JSDocFunctionType) + throw (0, kr.createError)(this.ast, a.pos, "JSDoc types can only be used inside documentation comments."); + let C = "TS".concat(ar[a.kind]); + if (this.options.errorOnUnknownASTType && !pr.AST_NODE_TYPES[C]) + throw new Error('Unknown AST_NODE_TYPE: "'.concat(C, '"')); + let w = this.createNode(a, { type: C }); + return "type" in a && (w.typeAnnotation = a.type && "kind" in a.type && oi.isTypeNode(a.type) ? this.convertTypeAnnotation(a.type, a) : null), "typeArguments" in a && (w.typeParameters = a.typeArguments && "pos" in a.typeArguments ? this.convertTypeArgumentsToTypeParameters(a.typeArguments, a) : null), "typeParameters" in a && (w.typeParameters = a.typeParameters && "pos" in a.typeParameters ? this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters) : null), "decorators" in a && a.decorators && a.decorators.length && (w.decorators = a.decorators.map((B) => this.convertChild(B))), Object.entries(a).filter((B) => { + let [E] = B; + return !/^(?:_children|kind|parent|pos|end|flags|modifierFlagsCache|jsDoc|type|typeArguments|typeParameters|decorators|transformFlags)$/.test(E); + }).forEach((B) => { + let [E, Q] = B; + Array.isArray(Q) ? w[E] = Q.map((le) => this.convertChild(le)) : Q && typeof Q == "object" && Q.kind ? w[E] = this.convertChild(Q) : w[E] = Q; + }), w; + } + convertJSXIdentifier(a) { + let C = this.createNode(a, { type: pr.AST_NODE_TYPES.JSXIdentifier, name: a.getText() }); + return this.registerTSNodeInNodeMap(a, C), C; + } + convertJSXNamespaceOrIdentifier(a) { + let C = a.getText(), w = C.indexOf(":"); + if (w > 0) { + let B = (0, kr.getRange)(a, this.ast), E = this.createNode(a, { type: pr.AST_NODE_TYPES.JSXNamespacedName, namespace: this.createNode(a, { type: pr.AST_NODE_TYPES.JSXIdentifier, name: C.slice(0, w), range: [B[0], B[0] + w] }), name: this.createNode(a, { type: pr.AST_NODE_TYPES.JSXIdentifier, name: C.slice(w + 1), range: [B[0] + w + 1, B[1]] }), range: B }); + return this.registerTSNodeInNodeMap(a, E), E; + } + return this.convertJSXIdentifier(a); + } + convertJSXTagName(a, C) { + let w; + switch (a.kind) { + case ar.PropertyAccessExpression: + if (a.name.kind === ar.PrivateIdentifier) + throw new Error("Non-private identifier expected."); + w = this.createNode(a, { type: pr.AST_NODE_TYPES.JSXMemberExpression, object: this.convertJSXTagName(a.expression, C), property: this.convertJSXIdentifier(a.name) }); + break; + case ar.ThisKeyword: + case ar.Identifier: + default: + return this.convertJSXNamespaceOrIdentifier(a); + } + return this.registerTSNodeInNodeMap(a, w), w; + } + convertMethodSignature(a) { + let C = this.createNode(a, { type: pr.AST_NODE_TYPES.TSMethodSignature, computed: (0, kr.isComputedProperty)(a.name), key: this.convertChild(a.name), params: this.convertParameters(a.parameters), kind: (() => { + switch (a.kind) { + case ar.GetAccessor: + return "get"; + case ar.SetAccessor: + return "set"; + case ar.MethodSignature: + return "method"; + } + })() }); + (0, kr.isOptional)(a) && (C.optional = true), a.type && (C.returnType = this.convertTypeAnnotation(a.type, a)), (0, kr.hasModifier)(ar.ReadonlyKeyword, a) && (C.readonly = true), a.typeParameters && (C.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)); + let w = (0, kr.getTSNodeAccessibility)(a); + return w && (C.accessibility = w), (0, kr.hasModifier)(ar.ExportKeyword, a) && (C.export = true), (0, kr.hasModifier)(ar.StaticKeyword, a) && (C.static = true), C; + } + convertAssertClasue(a) { + return a === void 0 ? [] : a.elements.map((C) => this.convertChild(C)); + } + applyModifiersToResult(a, C) { + if (!C || !C.length) + return; + let w = []; + for (let B of C) + switch (B.kind) { + case ar.ExportKeyword: + case ar.DefaultKeyword: + break; + case ar.ConstKeyword: + a.const = true; + break; + case ar.DeclareKeyword: + a.declare = true; + break; + default: + w.push(this.convertChild(B)); + break; + } + w.length && (a.modifiers = w); + } + fixParentLocation(a, C) { + C[0] < a.range[0] && (a.range[0] = C[0], a.loc.start = (0, kr.getLineAndCharacterFor)(a.range[0], this.ast)), C[1] > a.range[1] && (a.range[1] = C[1], a.loc.end = (0, kr.getLineAndCharacterFor)(a.range[1], this.ast)); + } + assertModuleSpecifier(a, C) { + var w; + if (!C && a.moduleSpecifier == null) + throw (0, kr.createError)(this.ast, a.pos, "Module specifier must be a string literal."); + if (a.moduleSpecifier && ((w = a.moduleSpecifier) === null || w === void 0 ? void 0 : w.kind) !== ar.StringLiteral) + throw (0, kr.createError)(this.ast, a.moduleSpecifier.pos, "Module specifier must be a string literal."); + } + convertNode(a, C) { + var w, B, E, Q, le, N, p, m, G, oe; + switch (a.kind) { + case ar.SourceFile: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Program, body: this.convertBodyExpressions(a.statements, a), sourceType: a.externalModuleIndicator ? "module" : "script", range: [a.getStart(this.ast), a.endOfFileToken.end] }); + case ar.Block: + return this.createNode(a, { type: pr.AST_NODE_TYPES.BlockStatement, body: this.convertBodyExpressions(a.statements, a) }); + case ar.Identifier: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Identifier, name: a.text }); + case ar.PrivateIdentifier: + return this.createNode(a, { type: pr.AST_NODE_TYPES.PrivateIdentifier, name: a.text.slice(1) }); + case ar.WithStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.WithStatement, object: this.convertChild(a.expression), body: this.convertChild(a.statement) }); + case ar.ReturnStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ReturnStatement, argument: this.convertChild(a.expression) }); + case ar.LabeledStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.LabeledStatement, label: this.convertChild(a.label), body: this.convertChild(a.statement) }); + case ar.ContinueStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ContinueStatement, label: this.convertChild(a.label) }); + case ar.BreakStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.BreakStatement, label: this.convertChild(a.label) }); + case ar.IfStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.IfStatement, test: this.convertChild(a.expression), consequent: this.convertChild(a.thenStatement), alternate: this.convertChild(a.elseStatement) }); + case ar.SwitchStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.SwitchStatement, discriminant: this.convertChild(a.expression), cases: a.caseBlock.clauses.map((f) => this.convertChild(f)) }); + case ar.CaseClause: + case ar.DefaultClause: + return this.createNode(a, { type: pr.AST_NODE_TYPES.SwitchCase, test: a.kind === ar.CaseClause ? this.convertChild(a.expression) : null, consequent: a.statements.map((f) => this.convertChild(f)) }); + case ar.ThrowStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ThrowStatement, argument: this.convertChild(a.expression) }); + case ar.TryStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TryStatement, block: this.convertChild(a.tryBlock), handler: this.convertChild(a.catchClause), finalizer: this.convertChild(a.finallyBlock) }); + case ar.CatchClause: + return this.createNode(a, { type: pr.AST_NODE_TYPES.CatchClause, param: a.variableDeclaration ? this.convertBindingNameWithTypeAnnotation(a.variableDeclaration.name, a.variableDeclaration.type) : null, body: this.convertChild(a.block) }); + case ar.WhileStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.WhileStatement, test: this.convertChild(a.expression), body: this.convertChild(a.statement) }); + case ar.DoStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.DoWhileStatement, test: this.convertChild(a.expression), body: this.convertChild(a.statement) }); + case ar.ForStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ForStatement, init: this.convertChild(a.initializer), test: this.convertChild(a.condition), update: this.convertChild(a.incrementor), body: this.convertChild(a.statement) }); + case ar.ForInStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ForInStatement, left: this.convertPattern(a.initializer), right: this.convertChild(a.expression), body: this.convertChild(a.statement) }); + case ar.ForOfStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ForOfStatement, left: this.convertPattern(a.initializer), right: this.convertChild(a.expression), body: this.convertChild(a.statement), await: Boolean(a.awaitModifier && a.awaitModifier.kind === ar.AwaitKeyword) }); + case ar.FunctionDeclaration: { + let f = (0, kr.hasModifier)(ar.DeclareKeyword, a), T = this.createNode(a, { type: f || !a.body ? pr.AST_NODE_TYPES.TSDeclareFunction : pr.AST_NODE_TYPES.FunctionDeclaration, id: this.convertChild(a.name), generator: !!a.asteriskToken, expression: false, async: (0, kr.hasModifier)(ar.AsyncKeyword, a), params: this.convertParameters(a.parameters), body: this.convertChild(a.body) || void 0 }); + return a.type && (T.returnType = this.convertTypeAnnotation(a.type, a)), a.typeParameters && (T.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), f && (T.declare = true), this.fixExports(a, T); + } + case ar.VariableDeclaration: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.VariableDeclarator, id: this.convertBindingNameWithTypeAnnotation(a.name, a.type, a), init: this.convertChild(a.initializer) }); + return a.exclamationToken && (f.definite = true), f; + } + case ar.VariableStatement: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.VariableDeclaration, declarations: a.declarationList.declarations.map((T) => this.convertChild(T)), kind: (0, kr.getDeclarationKind)(a.declarationList) }); + return a.decorators && (f.decorators = a.decorators.map((T) => this.convertChild(T))), (0, kr.hasModifier)(ar.DeclareKeyword, a) && (f.declare = true), this.fixExports(a, f); + } + case ar.VariableDeclarationList: + return this.createNode(a, { type: pr.AST_NODE_TYPES.VariableDeclaration, declarations: a.declarations.map((f) => this.convertChild(f)), kind: (0, kr.getDeclarationKind)(a) }); + case ar.ExpressionStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ExpressionStatement, expression: this.convertChild(a.expression) }); + case ar.ThisKeyword: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ThisExpression }); + case ar.ArrayLiteralExpression: + return this.allowPattern ? this.createNode(a, { type: pr.AST_NODE_TYPES.ArrayPattern, elements: a.elements.map((f) => this.convertPattern(f)) }) : this.createNode(a, { type: pr.AST_NODE_TYPES.ArrayExpression, elements: a.elements.map((f) => this.convertChild(f)) }); + case ar.ObjectLiteralExpression: + return this.allowPattern ? this.createNode(a, { type: pr.AST_NODE_TYPES.ObjectPattern, properties: a.properties.map((f) => this.convertPattern(f)) }) : this.createNode(a, { type: pr.AST_NODE_TYPES.ObjectExpression, properties: a.properties.map((f) => this.convertChild(f)) }); + case ar.PropertyAssignment: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Property, key: this.convertChild(a.name), value: this.converter(a.initializer, a, this.inTypeMode, this.allowPattern), computed: (0, kr.isComputedProperty)(a.name), method: false, shorthand: false, kind: "init" }); + case ar.ShorthandPropertyAssignment: + return a.objectAssignmentInitializer ? this.createNode(a, { type: pr.AST_NODE_TYPES.Property, key: this.convertChild(a.name), value: this.createNode(a, { type: pr.AST_NODE_TYPES.AssignmentPattern, left: this.convertPattern(a.name), right: this.convertChild(a.objectAssignmentInitializer) }), computed: false, method: false, shorthand: true, kind: "init" }) : this.createNode(a, { type: pr.AST_NODE_TYPES.Property, key: this.convertChild(a.name), value: this.convertChild(a.name), computed: false, method: false, shorthand: true, kind: "init" }); + case ar.ComputedPropertyName: + return this.convertChild(a.expression); + case ar.PropertyDeclaration: { + let f = (0, kr.hasModifier)(ar.AbstractKeyword, a), T = this.createNode(a, { type: f ? pr.AST_NODE_TYPES.TSAbstractPropertyDefinition : pr.AST_NODE_TYPES.PropertyDefinition, key: this.convertChild(a.name), value: f ? null : this.convertChild(a.initializer), computed: (0, kr.isComputedProperty)(a.name), static: (0, kr.hasModifier)(ar.StaticKeyword, a), readonly: (0, kr.hasModifier)(ar.ReadonlyKeyword, a) || void 0, declare: (0, kr.hasModifier)(ar.DeclareKeyword, a), override: (0, kr.hasModifier)(ar.OverrideKeyword, a) }); + a.type && (T.typeAnnotation = this.convertTypeAnnotation(a.type, a)), a.decorators && (T.decorators = a.decorators.map((b) => this.convertChild(b))); + let K = (0, kr.getTSNodeAccessibility)(a); + return K && (T.accessibility = K), (a.name.kind === ar.Identifier || a.name.kind === ar.ComputedPropertyName || a.name.kind === ar.PrivateIdentifier) && a.questionToken && (T.optional = true), a.exclamationToken && (T.definite = true), T.key.type === pr.AST_NODE_TYPES.Literal && a.questionToken && (T.optional = true), T; + } + case ar.GetAccessor: + case ar.SetAccessor: + if (a.parent.kind === ar.InterfaceDeclaration || a.parent.kind === ar.TypeLiteral) + return this.convertMethodSignature(a); + case ar.MethodDeclaration: { + let f = this.createNode(a, { type: a.body ? pr.AST_NODE_TYPES.FunctionExpression : pr.AST_NODE_TYPES.TSEmptyBodyFunctionExpression, id: null, generator: !!a.asteriskToken, expression: false, async: (0, kr.hasModifier)(ar.AsyncKeyword, a), body: this.convertChild(a.body), range: [a.parameters.pos - 1, a.end], params: [] }); + a.type && (f.returnType = this.convertTypeAnnotation(a.type, a)), a.typeParameters && (f.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters), this.fixParentLocation(f, f.typeParameters.range)); + let T; + if (C.kind === ar.ObjectLiteralExpression) + f.params = a.parameters.map((K) => this.convertChild(K)), T = this.createNode(a, { type: pr.AST_NODE_TYPES.Property, key: this.convertChild(a.name), value: f, computed: (0, kr.isComputedProperty)(a.name), method: a.kind === ar.MethodDeclaration, shorthand: false, kind: "init" }); + else { + f.params = this.convertParameters(a.parameters); + let K = (0, kr.hasModifier)(ar.AbstractKeyword, a) ? pr.AST_NODE_TYPES.TSAbstractMethodDefinition : pr.AST_NODE_TYPES.MethodDefinition; + T = this.createNode(a, { type: K, key: this.convertChild(a.name), value: f, computed: (0, kr.isComputedProperty)(a.name), static: (0, kr.hasModifier)(ar.StaticKeyword, a), kind: "method", override: (0, kr.hasModifier)(ar.OverrideKeyword, a) }), a.decorators && (T.decorators = a.decorators.map((se) => this.convertChild(se))); + let b = (0, kr.getTSNodeAccessibility)(a); + b && (T.accessibility = b); + } + return a.questionToken && (T.optional = true), a.kind === ar.GetAccessor ? T.kind = "get" : a.kind === ar.SetAccessor ? T.kind = "set" : !T.static && a.name.kind === ar.StringLiteral && a.name.text === "constructor" && T.type !== pr.AST_NODE_TYPES.Property && (T.kind = "constructor"), T; + } + case ar.Constructor: { + let f = (0, kr.getLastModifier)(a), T = f && (0, kr.findNextToken)(f, a, this.ast) || a.getFirstToken(), K = this.createNode(a, { type: a.body ? pr.AST_NODE_TYPES.FunctionExpression : pr.AST_NODE_TYPES.TSEmptyBodyFunctionExpression, id: null, params: this.convertParameters(a.parameters), generator: false, expression: false, async: false, body: this.convertChild(a.body), range: [a.parameters.pos - 1, a.end] }); + a.typeParameters && (K.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters), this.fixParentLocation(K, K.typeParameters.range)), a.type && (K.returnType = this.convertTypeAnnotation(a.type, a)); + let b = this.createNode(a, { type: pr.AST_NODE_TYPES.Identifier, name: "constructor", range: [T.getStart(this.ast), T.end] }), se = (0, kr.hasModifier)(ar.StaticKeyword, a), J = this.createNode(a, { type: (0, kr.hasModifier)(ar.AbstractKeyword, a) ? pr.AST_NODE_TYPES.TSAbstractMethodDefinition : pr.AST_NODE_TYPES.MethodDefinition, key: b, value: K, computed: false, static: se, kind: se ? "method" : "constructor", override: false }), ie = (0, kr.getTSNodeAccessibility)(a); + return ie && (J.accessibility = ie), J; + } + case ar.FunctionExpression: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.FunctionExpression, id: this.convertChild(a.name), generator: !!a.asteriskToken, params: this.convertParameters(a.parameters), body: this.convertChild(a.body), async: (0, kr.hasModifier)(ar.AsyncKeyword, a), expression: false }); + return a.type && (f.returnType = this.convertTypeAnnotation(a.type, a)), a.typeParameters && (f.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), f; + } + case ar.SuperKeyword: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Super }); + case ar.ArrayBindingPattern: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ArrayPattern, elements: a.elements.map((f) => this.convertPattern(f)) }); + case ar.OmittedExpression: + return null; + case ar.ObjectBindingPattern: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ObjectPattern, properties: a.elements.map((f) => this.convertPattern(f)) }); + case ar.BindingElement: + if (C.kind === ar.ArrayBindingPattern) { + let f = this.convertChild(a.name, C); + return a.initializer ? this.createNode(a, { type: pr.AST_NODE_TYPES.AssignmentPattern, left: f, right: this.convertChild(a.initializer) }) : a.dotDotDotToken ? this.createNode(a, { type: pr.AST_NODE_TYPES.RestElement, argument: f }) : f; + } else { + let f; + return a.dotDotDotToken ? f = this.createNode(a, { type: pr.AST_NODE_TYPES.RestElement, argument: this.convertChild((w = a.propertyName) !== null && w !== void 0 ? w : a.name) }) : f = this.createNode(a, { type: pr.AST_NODE_TYPES.Property, key: this.convertChild((B = a.propertyName) !== null && B !== void 0 ? B : a.name), value: this.convertChild(a.name), computed: Boolean(a.propertyName && a.propertyName.kind === ar.ComputedPropertyName), method: false, shorthand: !a.propertyName, kind: "init" }), a.initializer && (f.value = this.createNode(a, { type: pr.AST_NODE_TYPES.AssignmentPattern, left: this.convertChild(a.name), right: this.convertChild(a.initializer), range: [a.name.getStart(this.ast), a.initializer.end] })), f; + } + case ar.ArrowFunction: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.ArrowFunctionExpression, generator: false, id: null, params: this.convertParameters(a.parameters), body: this.convertChild(a.body), async: (0, kr.hasModifier)(ar.AsyncKeyword, a), expression: a.body.kind !== ar.Block }); + return a.type && (f.returnType = this.convertTypeAnnotation(a.type, a)), a.typeParameters && (f.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), f; + } + case ar.YieldExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.YieldExpression, delegate: !!a.asteriskToken, argument: this.convertChild(a.expression) }); + case ar.AwaitExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.AwaitExpression, argument: this.convertChild(a.expression) }); + case ar.NoSubstitutionTemplateLiteral: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TemplateLiteral, quasis: [this.createNode(a, { type: pr.AST_NODE_TYPES.TemplateElement, value: { raw: this.ast.text.slice(a.getStart(this.ast) + 1, a.end - 1), cooked: a.text }, tail: true })], expressions: [] }); + case ar.TemplateExpression: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TemplateLiteral, quasis: [this.convertChild(a.head)], expressions: [] }); + return a.templateSpans.forEach((T) => { + f.expressions.push(this.convertChild(T.expression)), f.quasis.push(this.convertChild(T.literal)); + }), f; + } + case ar.TaggedTemplateExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TaggedTemplateExpression, typeParameters: a.typeArguments ? this.convertTypeArgumentsToTypeParameters(a.typeArguments, a) : void 0, tag: this.convertChild(a.tag), quasi: this.convertChild(a.template) }); + case ar.TemplateHead: + case ar.TemplateMiddle: + case ar.TemplateTail: { + let f = a.kind === ar.TemplateTail; + return this.createNode(a, { type: pr.AST_NODE_TYPES.TemplateElement, value: { raw: this.ast.text.slice(a.getStart(this.ast) + 1, a.end - (f ? 1 : 2)), cooked: a.text }, tail: f }); + } + case ar.SpreadAssignment: + case ar.SpreadElement: + return this.allowPattern ? this.createNode(a, { type: pr.AST_NODE_TYPES.RestElement, argument: this.convertPattern(a.expression) }) : this.createNode(a, { type: pr.AST_NODE_TYPES.SpreadElement, argument: this.convertChild(a.expression) }); + case ar.Parameter: { + let f, T; + return a.dotDotDotToken ? f = T = this.createNode(a, { type: pr.AST_NODE_TYPES.RestElement, argument: this.convertChild(a.name) }) : a.initializer ? (f = this.convertChild(a.name), T = this.createNode(a, { type: pr.AST_NODE_TYPES.AssignmentPattern, left: f, right: this.convertChild(a.initializer) }), a.modifiers && (T.range[0] = f.range[0], T.loc = (0, kr.getLocFor)(T.range[0], T.range[1], this.ast))) : f = T = this.convertChild(a.name, C), a.type && (f.typeAnnotation = this.convertTypeAnnotation(a.type, a), this.fixParentLocation(f, f.typeAnnotation.range)), a.questionToken && (a.questionToken.end > f.range[1] && (f.range[1] = a.questionToken.end, f.loc.end = (0, kr.getLineAndCharacterFor)(f.range[1], this.ast)), f.optional = true), a.modifiers ? this.createNode(a, { type: pr.AST_NODE_TYPES.TSParameterProperty, accessibility: (E = (0, kr.getTSNodeAccessibility)(a)) !== null && E !== void 0 ? E : void 0, readonly: (0, kr.hasModifier)(ar.ReadonlyKeyword, a) || void 0, static: (0, kr.hasModifier)(ar.StaticKeyword, a) || void 0, export: (0, kr.hasModifier)(ar.ExportKeyword, a) || void 0, override: (0, kr.hasModifier)(ar.OverrideKeyword, a) || void 0, parameter: T }) : T; + } + case ar.ClassDeclaration: + case ar.ClassExpression: { + let f = (Q = a.heritageClauses) !== null && Q !== void 0 ? Q : [], T = a.kind === ar.ClassDeclaration ? pr.AST_NODE_TYPES.ClassDeclaration : pr.AST_NODE_TYPES.ClassExpression, K = f.find((ie) => ie.token === ar.ExtendsKeyword), b = f.find((ie) => ie.token === ar.ImplementsKeyword), se = this.createNode(a, { type: T, id: this.convertChild(a.name), body: this.createNode(a, { type: pr.AST_NODE_TYPES.ClassBody, body: [], range: [a.members.pos - 1, a.end] }), superClass: K != null && K.types[0] ? this.convertChild(K.types[0].expression) : null }); + if (K) { + if (K.types.length > 1) + throw (0, kr.createError)(this.ast, K.types[1].pos, "Classes can only extend a single class."); + !((le = K.types[0]) === null || le === void 0) && le.typeArguments && (se.superTypeParameters = this.convertTypeArgumentsToTypeParameters(K.types[0].typeArguments, K.types[0])); + } + a.typeParameters && (se.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), b && (se.implements = b.types.map((ie) => this.convertChild(ie))), (0, kr.hasModifier)(ar.AbstractKeyword, a) && (se.abstract = true), (0, kr.hasModifier)(ar.DeclareKeyword, a) && (se.declare = true), a.decorators && (se.decorators = a.decorators.map((ie) => this.convertChild(ie))); + let J = a.members.filter(kr.isESTreeClassMember); + return J.length && (se.body.body = J.map((ie) => this.convertChild(ie))), this.fixExports(a, se); + } + case ar.ModuleBlock: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSModuleBlock, body: this.convertBodyExpressions(a.statements, a) }); + case ar.ImportDeclaration: { + this.assertModuleSpecifier(a, false); + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.ImportDeclaration, source: this.convertChild(a.moduleSpecifier), specifiers: [], importKind: "value", assertions: this.convertAssertClasue(a.assertClause) }); + if (a.importClause && (a.importClause.isTypeOnly && (f.importKind = "type"), a.importClause.name && f.specifiers.push(this.convertChild(a.importClause)), a.importClause.namedBindings)) + switch (a.importClause.namedBindings.kind) { + case ar.NamespaceImport: + f.specifiers.push(this.convertChild(a.importClause.namedBindings)); + break; + case ar.NamedImports: + f.specifiers = f.specifiers.concat(a.importClause.namedBindings.elements.map((T) => this.convertChild(T))); + break; + } + return f; + } + case ar.NamespaceImport: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ImportNamespaceSpecifier, local: this.convertChild(a.name) }); + case ar.ImportSpecifier: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ImportSpecifier, local: this.convertChild(a.name), imported: this.convertChild((N = a.propertyName) !== null && N !== void 0 ? N : a.name), importKind: a.isTypeOnly ? "type" : "value" }); + case ar.ImportClause: { + let f = this.convertChild(a.name); + return this.createNode(a, { type: pr.AST_NODE_TYPES.ImportDefaultSpecifier, local: f, range: f.range }); + } + case ar.ExportDeclaration: + return ((p = a.exportClause) === null || p === void 0 ? void 0 : p.kind) === ar.NamedExports ? (this.assertModuleSpecifier(a, true), this.createNode(a, { type: pr.AST_NODE_TYPES.ExportNamedDeclaration, source: this.convertChild(a.moduleSpecifier), specifiers: a.exportClause.elements.map((f) => this.convertChild(f)), exportKind: a.isTypeOnly ? "type" : "value", declaration: null, assertions: this.convertAssertClasue(a.assertClause) })) : (this.assertModuleSpecifier(a, false), this.createNode(a, { type: pr.AST_NODE_TYPES.ExportAllDeclaration, source: this.convertChild(a.moduleSpecifier), exportKind: a.isTypeOnly ? "type" : "value", exported: a.exportClause && a.exportClause.kind === ar.NamespaceExport ? this.convertChild(a.exportClause.name) : null, assertions: this.convertAssertClasue(a.assertClause) })); + case ar.ExportSpecifier: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ExportSpecifier, local: this.convertChild((m = a.propertyName) !== null && m !== void 0 ? m : a.name), exported: this.convertChild(a.name), exportKind: a.isTypeOnly ? "type" : "value" }); + case ar.ExportAssignment: + return a.isExportEquals ? this.createNode(a, { type: pr.AST_NODE_TYPES.TSExportAssignment, expression: this.convertChild(a.expression) }) : this.createNode(a, { type: pr.AST_NODE_TYPES.ExportDefaultDeclaration, declaration: this.convertChild(a.expression), exportKind: "value" }); + case ar.PrefixUnaryExpression: + case ar.PostfixUnaryExpression: { + let f = (0, kr.getTextForTokenKind)(a.operator); + return f === "++" || f === "--" ? this.createNode(a, { type: pr.AST_NODE_TYPES.UpdateExpression, operator: f, prefix: a.kind === ar.PrefixUnaryExpression, argument: this.convertChild(a.operand) }) : this.createNode(a, { type: pr.AST_NODE_TYPES.UnaryExpression, operator: f, prefix: a.kind === ar.PrefixUnaryExpression, argument: this.convertChild(a.operand) }); + } + case ar.DeleteExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.UnaryExpression, operator: "delete", prefix: true, argument: this.convertChild(a.expression) }); + case ar.VoidExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.UnaryExpression, operator: "void", prefix: true, argument: this.convertChild(a.expression) }); + case ar.TypeOfExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.UnaryExpression, operator: "typeof", prefix: true, argument: this.convertChild(a.expression) }); + case ar.TypeOperator: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypeOperator, operator: (0, kr.getTextForTokenKind)(a.operator), typeAnnotation: this.convertChild(a.type) }); + case ar.BinaryExpression: + if ((0, kr.isComma)(a.operatorToken)) { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.SequenceExpression, expressions: [] }), T = this.convertChild(a.left); + return T.type === pr.AST_NODE_TYPES.SequenceExpression && a.left.kind !== ar.ParenthesizedExpression ? f.expressions = f.expressions.concat(T.expressions) : f.expressions.push(T), f.expressions.push(this.convertChild(a.right)), f; + } else { + let f = (0, kr.getBinaryExpressionType)(a.operatorToken); + return this.allowPattern && f === pr.AST_NODE_TYPES.AssignmentExpression ? this.createNode(a, { type: pr.AST_NODE_TYPES.AssignmentPattern, left: this.convertPattern(a.left, a), right: this.convertChild(a.right) }) : this.createNode(a, { type: f, operator: (0, kr.getTextForTokenKind)(a.operatorToken.kind), left: this.converter(a.left, a, this.inTypeMode, f === pr.AST_NODE_TYPES.AssignmentExpression), right: this.convertChild(a.right) }); + } + case ar.PropertyAccessExpression: { + let f = this.convertChild(a.expression), T = this.convertChild(a.name), K = false, b = this.createNode(a, { type: pr.AST_NODE_TYPES.MemberExpression, object: f, property: T, computed: K, optional: a.questionDotToken !== void 0 }); + return this.convertChainExpression(b, a); + } + case ar.ElementAccessExpression: { + let f = this.convertChild(a.expression), T = this.convertChild(a.argumentExpression), K = true, b = this.createNode(a, { type: pr.AST_NODE_TYPES.MemberExpression, object: f, property: T, computed: K, optional: a.questionDotToken !== void 0 }); + return this.convertChainExpression(b, a); + } + case ar.CallExpression: { + if (a.expression.kind === ar.ImportKeyword) { + if (a.arguments.length !== 1 && a.arguments.length !== 2) + throw (0, kr.createError)(this.ast, a.arguments.pos, "Dynamic import requires exactly one or two arguments."); + return this.createNode(a, { type: pr.AST_NODE_TYPES.ImportExpression, source: this.convertChild(a.arguments[0]), attributes: a.arguments[1] ? this.convertChild(a.arguments[1]) : null }); + } + let f = this.convertChild(a.expression), T = a.arguments.map((b) => this.convertChild(b)), K = this.createNode(a, { type: pr.AST_NODE_TYPES.CallExpression, callee: f, arguments: T, optional: a.questionDotToken !== void 0 }); + return a.typeArguments && (K.typeParameters = this.convertTypeArgumentsToTypeParameters(a.typeArguments, a)), this.convertChainExpression(K, a); + } + case ar.NewExpression: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.NewExpression, callee: this.convertChild(a.expression), arguments: a.arguments ? a.arguments.map((T) => this.convertChild(T)) : [] }); + return a.typeArguments && (f.typeParameters = this.convertTypeArgumentsToTypeParameters(a.typeArguments, a)), f; + } + case ar.ConditionalExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ConditionalExpression, test: this.convertChild(a.condition), consequent: this.convertChild(a.whenTrue), alternate: this.convertChild(a.whenFalse) }); + case ar.MetaProperty: + return this.createNode(a, { type: pr.AST_NODE_TYPES.MetaProperty, meta: this.createNode(a.getFirstToken(), { type: pr.AST_NODE_TYPES.Identifier, name: (0, kr.getTextForTokenKind)(a.keywordToken) }), property: this.convertChild(a.name) }); + case ar.Decorator: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Decorator, expression: this.convertChild(a.expression) }); + case ar.StringLiteral: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Literal, value: C.kind === ar.JsxAttribute ? (0, kr.unescapeStringLiteralText)(a.text) : a.text, raw: a.getText() }); + case ar.NumericLiteral: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Literal, value: Number(a.text), raw: a.getText() }); + case ar.BigIntLiteral: { + let f = (0, kr.getRange)(a, this.ast), T = this.ast.text.slice(f[0], f[1]), K = T.slice(0, -1).replace(/_/g, ""), b = typeof BigInt < "u" ? BigInt(K) : null; + return this.createNode(a, { type: pr.AST_NODE_TYPES.Literal, raw: T, value: b, bigint: b === null ? K : String(b), range: f }); + } + case ar.RegularExpressionLiteral: { + let f = a.text.slice(1, a.text.lastIndexOf("/")), T = a.text.slice(a.text.lastIndexOf("/") + 1), K = null; + try { + K = new RegExp(f, T); + } catch { + K = null; + } + return this.createNode(a, { type: pr.AST_NODE_TYPES.Literal, value: K, raw: a.text, regex: { pattern: f, flags: T } }); + } + case ar.TrueKeyword: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Literal, value: true, raw: "true" }); + case ar.FalseKeyword: + return this.createNode(a, { type: pr.AST_NODE_TYPES.Literal, value: false, raw: "false" }); + case ar.NullKeyword: + return !Lr.typescriptVersionIsAtLeast["4.0"] && this.inTypeMode ? this.createNode(a, { type: pr.AST_NODE_TYPES.TSNullKeyword }) : this.createNode(a, { type: pr.AST_NODE_TYPES.Literal, value: null, raw: "null" }); + case ar.EmptyStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.EmptyStatement }); + case ar.DebuggerStatement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.DebuggerStatement }); + case ar.JsxElement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXElement, openingElement: this.convertChild(a.openingElement), closingElement: this.convertChild(a.closingElement), children: a.children.map((f) => this.convertChild(f)) }); + case ar.JsxFragment: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXFragment, openingFragment: this.convertChild(a.openingFragment), closingFragment: this.convertChild(a.closingFragment), children: a.children.map((f) => this.convertChild(f)) }); + case ar.JsxSelfClosingElement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXElement, openingElement: this.createNode(a, { type: pr.AST_NODE_TYPES.JSXOpeningElement, typeParameters: a.typeArguments ? this.convertTypeArgumentsToTypeParameters(a.typeArguments, a) : void 0, selfClosing: true, name: this.convertJSXTagName(a.tagName, a), attributes: a.attributes.properties.map((f) => this.convertChild(f)), range: (0, kr.getRange)(a, this.ast) }), closingElement: null, children: [] }); + case ar.JsxOpeningElement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXOpeningElement, typeParameters: a.typeArguments ? this.convertTypeArgumentsToTypeParameters(a.typeArguments, a) : void 0, selfClosing: false, name: this.convertJSXTagName(a.tagName, a), attributes: a.attributes.properties.map((f) => this.convertChild(f)) }); + case ar.JsxClosingElement: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXClosingElement, name: this.convertJSXTagName(a.tagName, a) }); + case ar.JsxOpeningFragment: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXOpeningFragment }); + case ar.JsxClosingFragment: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXClosingFragment }); + case ar.JsxExpression: { + let f = a.expression ? this.convertChild(a.expression) : this.createNode(a, { type: pr.AST_NODE_TYPES.JSXEmptyExpression, range: [a.getStart(this.ast) + 1, a.getEnd() - 1] }); + return a.dotDotDotToken ? this.createNode(a, { type: pr.AST_NODE_TYPES.JSXSpreadChild, expression: f }) : this.createNode(a, { type: pr.AST_NODE_TYPES.JSXExpressionContainer, expression: f }); + } + case ar.JsxAttribute: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXAttribute, name: this.convertJSXNamespaceOrIdentifier(a.name), value: this.convertChild(a.initializer) }); + case ar.JsxText: { + let f = a.getFullStart(), T = a.getEnd(), K = this.ast.text.slice(f, T); + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXText, value: (0, kr.unescapeStringLiteralText)(K), raw: K, range: [f, T] }); + } + case ar.JsxSpreadAttribute: + return this.createNode(a, { type: pr.AST_NODE_TYPES.JSXSpreadAttribute, argument: this.convertChild(a.expression) }); + case ar.QualifiedName: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSQualifiedName, left: this.convertChild(a.left), right: this.convertChild(a.right) }); + case ar.TypeReference: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypeReference, typeName: this.convertType(a.typeName), typeParameters: a.typeArguments ? this.convertTypeArgumentsToTypeParameters(a.typeArguments, a) : void 0 }); + case ar.TypeParameter: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypeParameter, name: this.convertType(a.name), constraint: a.constraint ? this.convertType(a.constraint) : void 0, default: a.default ? this.convertType(a.default) : void 0, in: (0, kr.hasModifier)(ar.InKeyword, a), out: (0, kr.hasModifier)(ar.OutKeyword, a) }); + case ar.ThisType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSThisType }); + case ar.AnyKeyword: + case ar.BigIntKeyword: + case ar.BooleanKeyword: + case ar.NeverKeyword: + case ar.NumberKeyword: + case ar.ObjectKeyword: + case ar.StringKeyword: + case ar.SymbolKeyword: + case ar.UnknownKeyword: + case ar.VoidKeyword: + case ar.UndefinedKeyword: + case ar.IntrinsicKeyword: + return this.createNode(a, { type: pr.AST_NODE_TYPES["TS".concat(ar[a.kind])] }); + case ar.NonNullExpression: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSNonNullExpression, expression: this.convertChild(a.expression) }); + return this.convertChainExpression(f, a); + } + case ar.TypeLiteral: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypeLiteral, members: a.members.map((f) => this.convertChild(f)) }); + case ar.ArrayType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSArrayType, elementType: this.convertType(a.elementType) }); + case ar.IndexedAccessType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSIndexedAccessType, objectType: this.convertType(a.objectType), indexType: this.convertType(a.indexType) }); + case ar.ConditionalType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSConditionalType, checkType: this.convertType(a.checkType), extendsType: this.convertType(a.extendsType), trueType: this.convertType(a.trueType), falseType: this.convertType(a.falseType) }); + case ar.TypeQuery: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypeQuery, exprName: this.convertType(a.exprName), typeParameters: a.typeArguments && this.convertTypeArgumentsToTypeParameters(a.typeArguments, a) }); + case ar.MappedType: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSMappedType, typeParameter: this.convertType(a.typeParameter), nameType: (G = this.convertType(a.nameType)) !== null && G !== void 0 ? G : null }); + return a.readonlyToken && (a.readonlyToken.kind === ar.ReadonlyKeyword ? f.readonly = true : f.readonly = (0, kr.getTextForTokenKind)(a.readonlyToken.kind)), a.questionToken && (a.questionToken.kind === ar.QuestionToken ? f.optional = true : f.optional = (0, kr.getTextForTokenKind)(a.questionToken.kind)), a.type && (f.typeAnnotation = this.convertType(a.type)), f; + } + case ar.ParenthesizedExpression: + return this.convertChild(a.expression, C); + case ar.TypeAliasDeclaration: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypeAliasDeclaration, id: this.convertChild(a.name), typeAnnotation: this.convertType(a.type) }); + return (0, kr.hasModifier)(ar.DeclareKeyword, a) && (f.declare = true), a.typeParameters && (f.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), this.fixExports(a, f); + } + case ar.MethodSignature: + return this.convertMethodSignature(a); + case ar.PropertySignature: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSPropertySignature, optional: (0, kr.isOptional)(a) || void 0, computed: (0, kr.isComputedProperty)(a.name), key: this.convertChild(a.name), typeAnnotation: a.type ? this.convertTypeAnnotation(a.type, a) : void 0, initializer: this.convertChild(a.initializer) || void 0, readonly: (0, kr.hasModifier)(ar.ReadonlyKeyword, a) || void 0, static: (0, kr.hasModifier)(ar.StaticKeyword, a) || void 0, export: (0, kr.hasModifier)(ar.ExportKeyword, a) || void 0 }), T = (0, kr.getTSNodeAccessibility)(a); + return T && (f.accessibility = T), f; + } + case ar.IndexSignature: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSIndexSignature, parameters: a.parameters.map((K) => this.convertChild(K)) }); + a.type && (f.typeAnnotation = this.convertTypeAnnotation(a.type, a)), (0, kr.hasModifier)(ar.ReadonlyKeyword, a) && (f.readonly = true); + let T = (0, kr.getTSNodeAccessibility)(a); + return T && (f.accessibility = T), (0, kr.hasModifier)(ar.ExportKeyword, a) && (f.export = true), (0, kr.hasModifier)(ar.StaticKeyword, a) && (f.static = true), f; + } + case ar.ConstructorType: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSConstructorType, params: this.convertParameters(a.parameters), abstract: (0, kr.hasModifier)(ar.AbstractKeyword, a) }); + return a.type && (f.returnType = this.convertTypeAnnotation(a.type, a)), a.typeParameters && (f.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), f; + } + case ar.FunctionType: + case ar.ConstructSignature: + case ar.CallSignature: { + let f = a.kind === ar.ConstructSignature ? pr.AST_NODE_TYPES.TSConstructSignatureDeclaration : a.kind === ar.CallSignature ? pr.AST_NODE_TYPES.TSCallSignatureDeclaration : pr.AST_NODE_TYPES.TSFunctionType, T = this.createNode(a, { type: f, params: this.convertParameters(a.parameters) }); + return a.type && (T.returnType = this.convertTypeAnnotation(a.type, a)), a.typeParameters && (T.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), T; + } + case ar.ExpressionWithTypeArguments: { + let f = C.kind, T = f === ar.InterfaceDeclaration ? pr.AST_NODE_TYPES.TSInterfaceHeritage : f === ar.HeritageClause ? pr.AST_NODE_TYPES.TSClassImplements : pr.AST_NODE_TYPES.TSInstantiationExpression, K = this.createNode(a, { type: T, expression: this.convertChild(a.expression) }); + return a.typeArguments && (K.typeParameters = this.convertTypeArgumentsToTypeParameters(a.typeArguments, a)), K; + } + case ar.InterfaceDeclaration: { + let f = (oe = a.heritageClauses) !== null && oe !== void 0 ? oe : [], T = this.createNode(a, { type: pr.AST_NODE_TYPES.TSInterfaceDeclaration, body: this.createNode(a, { type: pr.AST_NODE_TYPES.TSInterfaceBody, body: a.members.map((K) => this.convertChild(K)), range: [a.members.pos - 1, a.end] }), id: this.convertChild(a.name) }); + if (a.typeParameters && (T.typeParameters = this.convertTSTypeParametersToTypeParametersDeclaration(a.typeParameters)), f.length > 0) { + let K = [], b = []; + for (let se of f) + if (se.token === ar.ExtendsKeyword) + for (let J of se.types) + K.push(this.convertChild(J, a)); + else + for (let J of se.types) + b.push(this.convertChild(J, a)); + K.length && (T.extends = K), b.length && (T.implements = b); + } + return (0, kr.hasModifier)(ar.AbstractKeyword, a) && (T.abstract = true), (0, kr.hasModifier)(ar.DeclareKeyword, a) && (T.declare = true), this.fixExports(a, T); + } + case ar.TypePredicate: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypePredicate, asserts: a.assertsModifier !== void 0, parameterName: this.convertChild(a.parameterName), typeAnnotation: null }); + return a.type && (f.typeAnnotation = this.convertTypeAnnotation(a.type, a), f.typeAnnotation.loc = f.typeAnnotation.typeAnnotation.loc, f.typeAnnotation.range = f.typeAnnotation.typeAnnotation.range), f; + } + case ar.ImportType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSImportType, isTypeOf: !!a.isTypeOf, parameter: this.convertChild(a.argument), qualifier: this.convertChild(a.qualifier), typeParameters: a.typeArguments ? this.convertTypeArgumentsToTypeParameters(a.typeArguments, a) : null }); + case ar.EnumDeclaration: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSEnumDeclaration, id: this.convertChild(a.name), members: a.members.map((T) => this.convertChild(T)) }); + return this.applyModifiersToResult(f, a.modifiers), this.fixExports(a, f); + } + case ar.EnumMember: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSEnumMember, id: this.convertChild(a.name) }); + return a.initializer && (f.initializer = this.convertChild(a.initializer)), a.name.kind === oi.SyntaxKind.ComputedPropertyName && (f.computed = true), f; + } + case ar.ModuleDeclaration: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSModuleDeclaration, id: this.convertChild(a.name) }); + return a.body && (f.body = this.convertChild(a.body)), this.applyModifiersToResult(f, a.modifiers), a.flags & oi.NodeFlags.GlobalAugmentation && (f.global = true), this.fixExports(a, f); + } + case ar.ParenthesizedType: + return this.convertType(a.type); + case ar.UnionType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSUnionType, types: a.types.map((f) => this.convertType(f)) }); + case ar.IntersectionType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSIntersectionType, types: a.types.map((f) => this.convertType(f)) }); + case ar.AsExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSAsExpression, expression: this.convertChild(a.expression), typeAnnotation: this.convertType(a.type) }); + case ar.InferType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSInferType, typeParameter: this.convertType(a.typeParameter) }); + case ar.LiteralType: + return Lr.typescriptVersionIsAtLeast["4.0"] && a.literal.kind === ar.NullKeyword ? this.createNode(a.literal, { type: pr.AST_NODE_TYPES.TSNullKeyword }) : this.createNode(a, { type: pr.AST_NODE_TYPES.TSLiteralType, literal: this.convertType(a.literal) }); + case ar.TypeAssertionExpression: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSTypeAssertion, typeAnnotation: this.convertType(a.type), expression: this.convertChild(a.expression) }); + case ar.ImportEqualsDeclaration: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSImportEqualsDeclaration, id: this.convertChild(a.name), moduleReference: this.convertChild(a.moduleReference), importKind: a.isTypeOnly ? "type" : "value", isExport: (0, kr.hasModifier)(ar.ExportKeyword, a) }); + case ar.ExternalModuleReference: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSExternalModuleReference, expression: this.convertChild(a.expression) }); + case ar.NamespaceExportDeclaration: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSNamespaceExportDeclaration, id: this.convertChild(a.name) }); + case ar.AbstractKeyword: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSAbstractKeyword }); + case ar.TupleType: { + let f = "elementTypes" in a ? a.elementTypes.map((T) => this.convertType(T)) : a.elements.map((T) => this.convertType(T)); + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSTupleType, elementTypes: f }); + } + case ar.NamedTupleMember: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSNamedTupleMember, elementType: this.convertType(a.type, a), label: this.convertChild(a.name, a), optional: a.questionToken != null }); + return a.dotDotDotToken ? (f.range[0] = f.label.range[0], f.loc.start = f.label.loc.start, this.createNode(a, { type: pr.AST_NODE_TYPES.TSRestType, typeAnnotation: f })) : f; + } + case ar.OptionalType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSOptionalType, typeAnnotation: this.convertType(a.type) }); + case ar.RestType: + return this.createNode(a, { type: pr.AST_NODE_TYPES.TSRestType, typeAnnotation: this.convertType(a.type) }); + case ar.TemplateLiteralType: { + let f = this.createNode(a, { type: pr.AST_NODE_TYPES.TSTemplateLiteralType, quasis: [this.convertChild(a.head)], types: [] }); + return a.templateSpans.forEach((T) => { + f.types.push(this.convertChild(T.type)), f.quasis.push(this.convertChild(T.literal)); + }), f; + } + case ar.ClassStaticBlockDeclaration: + return this.createNode(a, { type: pr.AST_NODE_TYPES.StaticBlock, body: this.convertBodyExpressions(a.body.statements, a) }); + case ar.AssertEntry: + return this.createNode(a, { type: pr.AST_NODE_TYPES.ImportAttribute, key: this.convertChild(a.name), value: this.convertChild(a.value) }); + default: + return this.deeplyCopy(a); + } + } + }; + M.Converter = e; + } }), Ud = {}; + h1(Ud, { __assign: () => v1, __asyncDelegator: () => JU, __asyncGenerator: () => BU, __asyncValues: () => jU, __await: () => Xy, __awaiter: () => wU, __classPrivateFieldGet: () => qU, __classPrivateFieldSet: () => VU, __createBinding: () => FU, __decorate: () => NU, __exportStar: () => MU, __extends: () => kU, __generator: () => OU, __importDefault: () => WU, __importStar: () => zU, __makeTemplateObject: () => UU, __metadata: () => IU, __param: () => PU, __read: () => r3, __rest: () => AU, __spread: () => LU, __spreadArrays: () => RU, __values: () => UT }); + function kU(M, re) { + m1(M, re); + function Ve() { + this.constructor = M; + } + M.prototype = re === null ? Object.create(re) : (Ve.prototype = re.prototype, new Ve()); + } + function AU(M, re) { + var Ve = {}; + for (var Ke in M) + Object.prototype.hasOwnProperty.call(M, Ke) && re.indexOf(Ke) < 0 && (Ve[Ke] = M[Ke]); + if (M != null && typeof Object.getOwnPropertySymbols == "function") + for (var oi = 0, Ke = Object.getOwnPropertySymbols(M); oi < Ke.length; oi++) + re.indexOf(Ke[oi]) < 0 && Object.prototype.propertyIsEnumerable.call(M, Ke[oi]) && (Ve[Ke[oi]] = M[Ke[oi]]); + return Ve; + } + function NU(M, re, Ve, Ke) { + var oi = arguments.length, kr = oi < 3 ? re : Ke === null ? Ke = Object.getOwnPropertyDescriptor(re, Ve) : Ke, pr; + if (typeof Reflect == "object" && typeof Reflect.decorate == "function") + kr = Reflect.decorate(M, re, Ve, Ke); + else + for (var Lr = M.length - 1; Lr >= 0; Lr--) + (pr = M[Lr]) && (kr = (oi < 3 ? pr(kr) : oi > 3 ? pr(re, Ve, kr) : pr(re, Ve)) || kr); + return oi > 3 && kr && Object.defineProperty(re, Ve, kr), kr; + } + function PU(M, re) { + return function(Ve, Ke) { + re(Ve, Ke, M); + }; + } + function IU(M, re) { + if (typeof Reflect == "object" && typeof Reflect.metadata == "function") + return Reflect.metadata(M, re); + } + function wU(M, re, Ve, Ke) { + function oi(kr) { + return kr instanceof Ve ? kr : new Ve(function(pr) { + pr(kr); + }); + } + return new (Ve || (Ve = Promise))(function(kr, pr) { + function Lr(e) { + try { + ke(Ke.next(e)); + } catch (a) { + pr(a); + } + } + function ar(e) { + try { + ke(Ke.throw(e)); + } catch (a) { + pr(a); + } + } + function ke(e) { + e.done ? kr(e.value) : oi(e.value).then(Lr, ar); + } + ke((Ke = Ke.apply(M, re || [])).next()); + }); + } + function OU(M, re) { + var Ve = { label: 0, sent: function() { + if (kr[0] & 1) + throw kr[1]; + return kr[1]; + }, trys: [], ops: [] }, Ke, oi, kr, pr; + return pr = { next: Lr(0), throw: Lr(1), return: Lr(2) }, typeof Symbol == "function" && (pr[Symbol.iterator] = function() { + return this; + }), pr; + function Lr(ke) { + return function(e) { + return ar([ke, e]); + }; + } + function ar(ke) { + if (Ke) + throw new TypeError("Generator is already executing."); + for (; Ve; ) + try { + if (Ke = 1, oi && (kr = ke[0] & 2 ? oi.return : ke[0] ? oi.throw || ((kr = oi.return) && kr.call(oi), 0) : oi.next) && !(kr = kr.call(oi, ke[1])).done) + return kr; + switch (oi = 0, kr && (ke = [ke[0] & 2, kr.value]), ke[0]) { + case 0: + case 1: + kr = ke; + break; + case 4: + return Ve.label++, { value: ke[1], done: false }; + case 5: + Ve.label++, oi = ke[1], ke = [0]; + continue; + case 7: + ke = Ve.ops.pop(), Ve.trys.pop(); + continue; + default: + if (kr = Ve.trys, !(kr = kr.length > 0 && kr[kr.length - 1]) && (ke[0] === 6 || ke[0] === 2)) { + Ve = 0; + continue; + } + if (ke[0] === 3 && (!kr || ke[1] > kr[0] && ke[1] < kr[3])) { + Ve.label = ke[1]; + break; + } + if (ke[0] === 6 && Ve.label < kr[1]) { + Ve.label = kr[1], kr = ke; + break; + } + if (kr && Ve.label < kr[2]) { + Ve.label = kr[2], Ve.ops.push(ke); + break; + } + kr[2] && Ve.ops.pop(), Ve.trys.pop(); + continue; + } + ke = re.call(M, Ve); + } catch (e) { + ke = [6, e], oi = 0; + } finally { + Ke = kr = 0; + } + if (ke[0] & 5) + throw ke[1]; + return { value: ke[0] ? ke[1] : void 0, done: true }; + } + } + function FU(M, re, Ve, Ke) { + Ke === void 0 && (Ke = Ve), M[Ke] = re[Ve]; + } + function MU(M, re) { + for (var Ve in M) + Ve !== "default" && !re.hasOwnProperty(Ve) && (re[Ve] = M[Ve]); + } + function UT(M) { + var re = typeof Symbol == "function" && Symbol.iterator, Ve = re && M[re], Ke = 0; + if (Ve) + return Ve.call(M); + if (M && typeof M.length == "number") + return { next: function() { + return M && Ke >= M.length && (M = void 0), { value: M && M[Ke++], done: !M }; + } }; + throw new TypeError(re ? "Object is not iterable." : "Symbol.iterator is not defined."); + } + function r3(M, re) { + var Ve = typeof Symbol == "function" && M[Symbol.iterator]; + if (!Ve) + return M; + var Ke = Ve.call(M), oi, kr = [], pr; + try { + for (; (re === void 0 || re-- > 0) && !(oi = Ke.next()).done; ) + kr.push(oi.value); + } catch (Lr) { + pr = { error: Lr }; + } finally { + try { + oi && !oi.done && (Ve = Ke.return) && Ve.call(Ke); + } finally { + if (pr) + throw pr.error; + } + } + return kr; + } + function LU() { + for (var M = [], re = 0; re < arguments.length; re++) + M = M.concat(r3(arguments[re])); + return M; + } + function RU() { + for (var M = 0, re = 0, Ve = arguments.length; re < Ve; re++) + M += arguments[re].length; + for (var Ke = Array(M), oi = 0, re = 0; re < Ve; re++) + for (var kr = arguments[re], pr = 0, Lr = kr.length; pr < Lr; pr++, oi++) + Ke[oi] = kr[pr]; + return Ke; + } + function Xy(M) { + return this instanceof Xy ? (this.v = M, this) : new Xy(M); + } + function BU(M, re, Ve) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var Ke = Ve.apply(M, re || []), oi, kr = []; + return oi = {}, pr("next"), pr("throw"), pr("return"), oi[Symbol.asyncIterator] = function() { + return this; + }, oi; + function pr(C) { + Ke[C] && (oi[C] = function(w) { + return new Promise(function(B, E) { + kr.push([C, w, B, E]) > 1 || Lr(C, w); + }); + }); + } + function Lr(C, w) { + try { + ar(Ke[C](w)); + } catch (B) { + a(kr[0][3], B); + } + } + function ar(C) { + C.value instanceof Xy ? Promise.resolve(C.value.v).then(ke, e) : a(kr[0][2], C); + } + function ke(C) { + Lr("next", C); + } + function e(C) { + Lr("throw", C); + } + function a(C, w) { + C(w), kr.shift(), kr.length && Lr(kr[0][0], kr[0][1]); + } + } + function JU(M) { + var re, Ve; + return re = {}, Ke("next"), Ke("throw", function(oi) { + throw oi; + }), Ke("return"), re[Symbol.iterator] = function() { + return this; + }, re; + function Ke(oi, kr) { + re[oi] = M[oi] ? function(pr) { + return (Ve = !Ve) ? { value: Xy(M[oi](pr)), done: oi === "return" } : kr ? kr(pr) : pr; + } : kr; + } + } + function jU(M) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var re = M[Symbol.asyncIterator], Ve; + return re ? re.call(M) : (M = typeof UT == "function" ? UT(M) : M[Symbol.iterator](), Ve = {}, Ke("next"), Ke("throw"), Ke("return"), Ve[Symbol.asyncIterator] = function() { + return this; + }, Ve); + function Ke(kr) { + Ve[kr] = M[kr] && function(pr) { + return new Promise(function(Lr, ar) { + pr = M[kr](pr), oi(Lr, ar, pr.done, pr.value); + }); + }; + } + function oi(kr, pr, Lr, ar) { + Promise.resolve(ar).then(function(ke) { + kr({ value: ke, done: Lr }); + }, pr); + } + } + function UU(M, re) { + return Object.defineProperty ? Object.defineProperty(M, "raw", { value: re }) : M.raw = re, M; + } + function zU(M) { + if (M && M.__esModule) + return M; + var re = {}; + if (M != null) + for (var Ve in M) + Object.hasOwnProperty.call(M, Ve) && (re[Ve] = M[Ve]); + return re.default = M, re; + } + function WU(M) { + return M && M.__esModule ? M : { default: M }; + } + function qU(M, re) { + if (!re.has(M)) + throw new TypeError("attempted to get private field on non-instance"); + return re.get(M); + } + function VU(M, re, Ve) { + if (!re.has(M)) + throw new TypeError("attempted to set private field on non-instance"); + return re.set(M, Ve), Ve; + } + var m1, v1, ug = Qy({ "node_modules/tslib/tslib.es6.js"() { + Ea(), m1 = function(M, re) { + return m1 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(Ve, Ke) { + Ve.__proto__ = Ke; + } || function(Ve, Ke) { + for (var oi in Ke) + Ke.hasOwnProperty(oi) && (Ve[oi] = Ke[oi]); + }, m1(M, re); + }, v1 = function() { + return v1 = Object.assign || function(re) { + for (var Ve, Ke = 1, oi = arguments.length; Ke < oi; Ke++) { + Ve = arguments[Ke]; + for (var kr in Ve) + Object.prototype.hasOwnProperty.call(Ve, kr) && (re[kr] = Ve[kr]); + } + return re; + }, v1.apply(this, arguments); + }; + } }), KU = Oa({ "node_modules/tsutils/typeguard/2.8/node.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.isExpressionStatement = M.isExpression = M.isExportSpecifier = M.isExportDeclaration = M.isExportAssignment = M.isEnumMember = M.isEnumDeclaration = M.isEntityNameExpression = M.isEntityName = M.isEmptyStatement = M.isElementAccessExpression = M.isDoStatement = M.isDeleteExpression = M.isDefaultClause = M.isDecorator = M.isDebuggerStatement = M.isComputedPropertyName = M.isContinueStatement = M.isConstructSignatureDeclaration = M.isConstructorTypeNode = M.isConstructorDeclaration = M.isConditionalTypeNode = M.isConditionalExpression = M.isCommaListExpression = M.isClassLikeDeclaration = M.isClassExpression = M.isClassDeclaration = M.isCatchClause = M.isCaseOrDefaultClause = M.isCaseClause = M.isCaseBlock = M.isCallSignatureDeclaration = M.isCallLikeExpression = M.isCallExpression = M.isBreakStatement = M.isBreakOrContinueStatement = M.isBooleanLiteral = M.isBlockLike = M.isBlock = M.isBindingPattern = M.isBindingElement = M.isBinaryExpression = M.isAwaitExpression = M.isAssertionExpression = M.isAsExpression = M.isArrowFunction = M.isArrayTypeNode = M.isArrayLiteralExpression = M.isArrayBindingPattern = M.isAccessorDeclaration = void 0, M.isNamespaceImport = M.isNamespaceDeclaration = M.isNamedImports = M.isNamedExports = M.isModuleDeclaration = M.isModuleBlock = M.isMethodSignature = M.isMethodDeclaration = M.isMetaProperty = M.isMappedTypeNode = M.isLiteralTypeNode = M.isLiteralExpression = M.isLabeledStatement = M.isJsxText = M.isJsxSpreadAttribute = M.isJsxSelfClosingElement = M.isJsxOpeningLikeElement = M.isJsxOpeningFragment = M.isJsxOpeningElement = M.isJsxFragment = M.isJsxExpression = M.isJsxElement = M.isJsxClosingFragment = M.isJsxClosingElement = M.isJsxAttributes = M.isJsxAttributeLike = M.isJsxAttribute = M.isJsDoc = M.isIterationStatement = M.isIntersectionTypeNode = M.isInterfaceDeclaration = M.isInferTypeNode = M.isIndexSignatureDeclaration = M.isIndexedAccessTypeNode = M.isImportSpecifier = M.isImportEqualsDeclaration = M.isImportDeclaration = M.isImportClause = M.isIfStatement = M.isIdentifier = M.isGetAccessorDeclaration = M.isFunctionTypeNode = M.isFunctionExpression = M.isFunctionDeclaration = M.isForStatement = M.isForOfStatement = M.isForInOrOfStatement = M.isForInStatement = M.isExternalModuleReference = M.isExpressionWithTypeArguments = void 0, M.isVariableStatement = M.isVariableDeclaration = M.isUnionTypeNode = M.isTypeQueryNode = M.isTypeReferenceNode = M.isTypePredicateNode = M.isTypeParameterDeclaration = M.isTypeOperatorNode = M.isTypeOfExpression = M.isTypeLiteralNode = M.isTypeAssertion = M.isTypeAliasDeclaration = M.isTupleTypeNode = M.isTryStatement = M.isThrowStatement = M.isTextualLiteral = M.isTemplateLiteral = M.isTemplateExpression = M.isTaggedTemplateExpression = M.isSyntaxList = M.isSwitchStatement = M.isStringLiteral = M.isSpreadElement = M.isSpreadAssignment = M.isSourceFile = M.isSignatureDeclaration = M.isShorthandPropertyAssignment = M.isSetAccessorDeclaration = M.isReturnStatement = M.isRegularExpressionLiteral = M.isQualifiedName = M.isPropertySignature = M.isPropertyDeclaration = M.isPropertyAssignment = M.isPropertyAccessExpression = M.isPrefixUnaryExpression = M.isPostfixUnaryExpression = M.isParenthesizedTypeNode = M.isParenthesizedExpression = M.isParameterDeclaration = M.isOmittedExpression = M.isObjectLiteralExpression = M.isObjectBindingPattern = M.isNumericOrStringLikeLiteral = M.isNumericLiteral = M.isNullLiteral = M.isNoSubstitutionTemplateLiteral = M.isNonNullExpression = M.isNewExpression = M.isNamespaceExportDeclaration = void 0, M.isWithStatement = M.isWhileStatement = M.isVoidExpression = M.isVariableDeclarationList = void 0; + var re = _u(); + function Ve(ai) { + return ai.kind === re.SyntaxKind.GetAccessor || ai.kind === re.SyntaxKind.SetAccessor; + } + M.isAccessorDeclaration = Ve; + function Ke(ai) { + return ai.kind === re.SyntaxKind.ArrayBindingPattern; + } + M.isArrayBindingPattern = Ke; + function oi(ai) { + return ai.kind === re.SyntaxKind.ArrayLiteralExpression; + } + M.isArrayLiteralExpression = oi; + function kr(ai) { + return ai.kind === re.SyntaxKind.ArrayType; + } + M.isArrayTypeNode = kr; + function pr(ai) { + return ai.kind === re.SyntaxKind.ArrowFunction; + } + M.isArrowFunction = pr; + function Lr(ai) { + return ai.kind === re.SyntaxKind.AsExpression; + } + M.isAsExpression = Lr; + function ar(ai) { + return ai.kind === re.SyntaxKind.AsExpression || ai.kind === re.SyntaxKind.TypeAssertionExpression; + } + M.isAssertionExpression = ar; + function ke(ai) { + return ai.kind === re.SyntaxKind.AwaitExpression; + } + M.isAwaitExpression = ke; + function e(ai) { + return ai.kind === re.SyntaxKind.BinaryExpression; + } + M.isBinaryExpression = e; + function a(ai) { + return ai.kind === re.SyntaxKind.BindingElement; + } + M.isBindingElement = a; + function C(ai) { + return ai.kind === re.SyntaxKind.ArrayBindingPattern || ai.kind === re.SyntaxKind.ObjectBindingPattern; + } + M.isBindingPattern = C; + function w(ai) { + return ai.kind === re.SyntaxKind.Block; + } + M.isBlock = w; + function B(ai) { + return ai.statements !== void 0; + } + M.isBlockLike = B; + function E(ai) { + return ai.kind === re.SyntaxKind.TrueKeyword || ai.kind === re.SyntaxKind.FalseKeyword; + } + M.isBooleanLiteral = E; + function Q(ai) { + return ai.kind === re.SyntaxKind.BreakStatement || ai.kind === re.SyntaxKind.ContinueStatement; + } + M.isBreakOrContinueStatement = Q; + function le(ai) { + return ai.kind === re.SyntaxKind.BreakStatement; + } + M.isBreakStatement = le; + function N(ai) { + return ai.kind === re.SyntaxKind.CallExpression; + } + M.isCallExpression = N; + function p(ai) { + switch (ai.kind) { + case re.SyntaxKind.CallExpression: + case re.SyntaxKind.Decorator: + case re.SyntaxKind.JsxOpeningElement: + case re.SyntaxKind.JsxSelfClosingElement: + case re.SyntaxKind.NewExpression: + case re.SyntaxKind.TaggedTemplateExpression: + return true; + default: + return false; + } + } + M.isCallLikeExpression = p; + function m(ai) { + return ai.kind === re.SyntaxKind.CallSignature; + } + M.isCallSignatureDeclaration = m; + function G(ai) { + return ai.kind === re.SyntaxKind.CaseBlock; + } + M.isCaseBlock = G; + function oe(ai) { + return ai.kind === re.SyntaxKind.CaseClause; + } + M.isCaseClause = oe; + function f(ai) { + return ai.kind === re.SyntaxKind.CaseClause || ai.kind === re.SyntaxKind.DefaultClause; + } + M.isCaseOrDefaultClause = f; + function T(ai) { + return ai.kind === re.SyntaxKind.CatchClause; + } + M.isCatchClause = T; + function K(ai) { + return ai.kind === re.SyntaxKind.ClassDeclaration; + } + M.isClassDeclaration = K; + function b(ai) { + return ai.kind === re.SyntaxKind.ClassExpression; + } + M.isClassExpression = b; + function se(ai) { + return ai.kind === re.SyntaxKind.ClassDeclaration || ai.kind === re.SyntaxKind.ClassExpression; + } + M.isClassLikeDeclaration = se; + function J(ai) { + return ai.kind === re.SyntaxKind.CommaListExpression; + } + M.isCommaListExpression = J; + function ie(ai) { + return ai.kind === re.SyntaxKind.ConditionalExpression; + } + M.isConditionalExpression = ie; + function R(ai) { + return ai.kind === re.SyntaxKind.ConditionalType; + } + M.isConditionalTypeNode = R; + function q(ai) { + return ai.kind === re.SyntaxKind.Constructor; + } + M.isConstructorDeclaration = q; + function O(ai) { + return ai.kind === re.SyntaxKind.ConstructorType; + } + M.isConstructorTypeNode = O; + function ve(ai) { + return ai.kind === re.SyntaxKind.ConstructSignature; + } + M.isConstructSignatureDeclaration = ve; + function ee(ai) { + return ai.kind === re.SyntaxKind.ContinueStatement; + } + M.isContinueStatement = ee; + function he(ai) { + return ai.kind === re.SyntaxKind.ComputedPropertyName; + } + M.isComputedPropertyName = he; + function F(ai) { + return ai.kind === re.SyntaxKind.DebuggerStatement; + } + M.isDebuggerStatement = F; + function x(ai) { + return ai.kind === re.SyntaxKind.Decorator; + } + M.isDecorator = x; + function X(ai) { + return ai.kind === re.SyntaxKind.DefaultClause; + } + M.isDefaultClause = X; + function $(ai) { + return ai.kind === re.SyntaxKind.DeleteExpression; + } + M.isDeleteExpression = $; + function A(ai) { + return ai.kind === re.SyntaxKind.DoStatement; + } + M.isDoStatement = A; + function y(ai) { + return ai.kind === re.SyntaxKind.ElementAccessExpression; + } + M.isElementAccessExpression = y; + function V(ai) { + return ai.kind === re.SyntaxKind.EmptyStatement; + } + M.isEmptyStatement = V; + function L(ai) { + return ai.kind === re.SyntaxKind.Identifier || Pe(ai); + } + M.isEntityName = L; + function P(ai) { + return ai.kind === re.SyntaxKind.Identifier || Ar(ai) && P(ai.expression); + } + M.isEntityNameExpression = P; + function k(ai) { + return ai.kind === re.SyntaxKind.EnumDeclaration; + } + M.isEnumDeclaration = k; + function Y(ai) { + return ai.kind === re.SyntaxKind.EnumMember; + } + M.isEnumMember = Y; + function U(ai) { + return ai.kind === re.SyntaxKind.ExportAssignment; + } + M.isExportAssignment = U; + function j(ai) { + return ai.kind === re.SyntaxKind.ExportDeclaration; + } + M.isExportDeclaration = j; + function H(ai) { + return ai.kind === re.SyntaxKind.ExportSpecifier; + } + M.isExportSpecifier = H; + function I(ai) { + switch (ai.kind) { + case re.SyntaxKind.ArrayLiteralExpression: + case re.SyntaxKind.ArrowFunction: + case re.SyntaxKind.AsExpression: + case re.SyntaxKind.AwaitExpression: + case re.SyntaxKind.BinaryExpression: + case re.SyntaxKind.CallExpression: + case re.SyntaxKind.ClassExpression: + case re.SyntaxKind.CommaListExpression: + case re.SyntaxKind.ConditionalExpression: + case re.SyntaxKind.DeleteExpression: + case re.SyntaxKind.ElementAccessExpression: + case re.SyntaxKind.FalseKeyword: + case re.SyntaxKind.FunctionExpression: + case re.SyntaxKind.Identifier: + case re.SyntaxKind.JsxElement: + case re.SyntaxKind.JsxFragment: + case re.SyntaxKind.JsxExpression: + case re.SyntaxKind.JsxOpeningElement: + case re.SyntaxKind.JsxOpeningFragment: + case re.SyntaxKind.JsxSelfClosingElement: + case re.SyntaxKind.MetaProperty: + case re.SyntaxKind.NewExpression: + case re.SyntaxKind.NonNullExpression: + case re.SyntaxKind.NoSubstitutionTemplateLiteral: + case re.SyntaxKind.NullKeyword: + case re.SyntaxKind.NumericLiteral: + case re.SyntaxKind.ObjectLiteralExpression: + case re.SyntaxKind.OmittedExpression: + case re.SyntaxKind.ParenthesizedExpression: + case re.SyntaxKind.PostfixUnaryExpression: + case re.SyntaxKind.PrefixUnaryExpression: + case re.SyntaxKind.PropertyAccessExpression: + case re.SyntaxKind.RegularExpressionLiteral: + case re.SyntaxKind.SpreadElement: + case re.SyntaxKind.StringLiteral: + case re.SyntaxKind.SuperKeyword: + case re.SyntaxKind.TaggedTemplateExpression: + case re.SyntaxKind.TemplateExpression: + case re.SyntaxKind.ThisKeyword: + case re.SyntaxKind.TrueKeyword: + case re.SyntaxKind.TypeAssertionExpression: + case re.SyntaxKind.TypeOfExpression: + case re.SyntaxKind.VoidExpression: + case re.SyntaxKind.YieldExpression: + return true; + default: + return false; + } + } + M.isExpression = I; + function l(ai) { + return ai.kind === re.SyntaxKind.ExpressionStatement; + } + M.isExpressionStatement = l; + function d(ai) { + return ai.kind === re.SyntaxKind.ExpressionWithTypeArguments; + } + M.isExpressionWithTypeArguments = d; + function D(ai) { + return ai.kind === re.SyntaxKind.ExternalModuleReference; + } + M.isExternalModuleReference = D; + function fe(ai) { + return ai.kind === re.SyntaxKind.ForInStatement; + } + M.isForInStatement = fe; + function g(ai) { + return ai.kind === re.SyntaxKind.ForOfStatement || ai.kind === re.SyntaxKind.ForInStatement; + } + M.isForInOrOfStatement = g; + function ne(ai) { + return ai.kind === re.SyntaxKind.ForOfStatement; + } + M.isForOfStatement = ne; + function ue(ai) { + return ai.kind === re.SyntaxKind.ForStatement; + } + M.isForStatement = ue; + function We(ai) { + return ai.kind === re.SyntaxKind.FunctionDeclaration; + } + M.isFunctionDeclaration = We; + function Fe(ai) { + return ai.kind === re.SyntaxKind.FunctionExpression; + } + M.isFunctionExpression = Fe; + function Z(ai) { + return ai.kind === re.SyntaxKind.FunctionType; + } + M.isFunctionTypeNode = Z; + function Be(ai) { + return ai.kind === re.SyntaxKind.GetAccessor; + } + M.isGetAccessorDeclaration = Be; + function ge(ai) { + return ai.kind === re.SyntaxKind.Identifier; + } + M.isIdentifier = ge; + function Re(ai) { + return ai.kind === re.SyntaxKind.IfStatement; + } + M.isIfStatement = Re; + function ze(ai) { + return ai.kind === re.SyntaxKind.ImportClause; + } + M.isImportClause = ze; + function Ee(ai) { + return ai.kind === re.SyntaxKind.ImportDeclaration; + } + M.isImportDeclaration = Ee; + function He(ai) { + return ai.kind === re.SyntaxKind.ImportEqualsDeclaration; + } + M.isImportEqualsDeclaration = He; + function rr(ai) { + return ai.kind === re.SyntaxKind.ImportSpecifier; + } + M.isImportSpecifier = rr; + function Ie(ai) { + return ai.kind === re.SyntaxKind.IndexedAccessType; + } + M.isIndexedAccessTypeNode = Ie; + function _e(ai) { + return ai.kind === re.SyntaxKind.IndexSignature; + } + M.isIndexSignatureDeclaration = _e; + function we(ai) { + return ai.kind === re.SyntaxKind.InferType; + } + M.isInferTypeNode = we; + function de(ai) { + return ai.kind === re.SyntaxKind.InterfaceDeclaration; + } + M.isInterfaceDeclaration = de; + function ye(ai) { + return ai.kind === re.SyntaxKind.IntersectionType; + } + M.isIntersectionTypeNode = ye; + function Ae(ai) { + switch (ai.kind) { + case re.SyntaxKind.ForStatement: + case re.SyntaxKind.ForOfStatement: + case re.SyntaxKind.ForInStatement: + case re.SyntaxKind.WhileStatement: + case re.SyntaxKind.DoStatement: + return true; + default: + return false; + } + } + M.isIterationStatement = Ae; + function er(ai) { + return ai.kind === re.SyntaxKind.JSDocComment; + } + M.isJsDoc = er; + function ir(ai) { + return ai.kind === re.SyntaxKind.JsxAttribute; + } + M.isJsxAttribute = ir; + function Cr(ai) { + return ai.kind === re.SyntaxKind.JsxAttribute || ai.kind === re.SyntaxKind.JsxSpreadAttribute; + } + M.isJsxAttributeLike = Cr; + function Ye(ai) { + return ai.kind === re.SyntaxKind.JsxAttributes; + } + M.isJsxAttributes = Ye; + function Br(ai) { + return ai.kind === re.SyntaxKind.JsxClosingElement; + } + M.isJsxClosingElement = Br; + function Er(ai) { + return ai.kind === re.SyntaxKind.JsxClosingFragment; + } + M.isJsxClosingFragment = Er; + function Ne(ai) { + return ai.kind === re.SyntaxKind.JsxElement; + } + M.isJsxElement = Ne; + function n(ai) { + return ai.kind === re.SyntaxKind.JsxExpression; + } + M.isJsxExpression = n; + function lr(ai) { + return ai.kind === re.SyntaxKind.JsxFragment; + } + M.isJsxFragment = lr; + function be(ai) { + return ai.kind === re.SyntaxKind.JsxOpeningElement; + } + M.isJsxOpeningElement = be; + function Ge(ai) { + return ai.kind === re.SyntaxKind.JsxOpeningFragment; + } + M.isJsxOpeningFragment = Ge; + function ur(ai) { + return ai.kind === re.SyntaxKind.JsxOpeningElement || ai.kind === re.SyntaxKind.JsxSelfClosingElement; + } + M.isJsxOpeningLikeElement = ur; + function yr(ai) { + return ai.kind === re.SyntaxKind.JsxSelfClosingElement; + } + M.isJsxSelfClosingElement = yr; + function Ir(ai) { + return ai.kind === re.SyntaxKind.JsxSpreadAttribute; + } + M.isJsxSpreadAttribute = Ir; + function wr(ai) { + return ai.kind === re.SyntaxKind.JsxText; + } + M.isJsxText = wr; + function Ur(ai) { + return ai.kind === re.SyntaxKind.LabeledStatement; + } + M.isLabeledStatement = Ur; + function ii(ai) { + return ai.kind >= re.SyntaxKind.FirstLiteralToken && ai.kind <= re.SyntaxKind.LastLiteralToken; + } + M.isLiteralExpression = ii; + function mi(ai) { + return ai.kind === re.SyntaxKind.LiteralType; + } + M.isLiteralTypeNode = mi; + function pe(ai) { + return ai.kind === re.SyntaxKind.MappedType; + } + M.isMappedTypeNode = pe; + function or(ai) { + return ai.kind === re.SyntaxKind.MetaProperty; + } + M.isMetaProperty = or; + function qr(ai) { + return ai.kind === re.SyntaxKind.MethodDeclaration; + } + M.isMethodDeclaration = qr; + function si(ai) { + return ai.kind === re.SyntaxKind.MethodSignature; + } + M.isMethodSignature = si; + function Di(ai) { + return ai.kind === re.SyntaxKind.ModuleBlock; + } + M.isModuleBlock = Di; + function wi(ai) { + return ai.kind === re.SyntaxKind.ModuleDeclaration; + } + M.isModuleDeclaration = wi; + function Xi(ai) { + return ai.kind === re.SyntaxKind.NamedExports; + } + M.isNamedExports = Xi; + function et(ai) { + return ai.kind === re.SyntaxKind.NamedImports; + } + M.isNamedImports = et; + function Gi(ai) { + return wi(ai) && ai.name.kind === re.SyntaxKind.Identifier && ai.body !== void 0 && (ai.body.kind === re.SyntaxKind.ModuleBlock || Gi(ai.body)); + } + M.isNamespaceDeclaration = Gi; + function Wt(ai) { + return ai.kind === re.SyntaxKind.NamespaceImport; + } + M.isNamespaceImport = Wt; + function Zt(ai) { + return ai.kind === re.SyntaxKind.NamespaceExportDeclaration; + } + M.isNamespaceExportDeclaration = Zt; + function _r(ai) { + return ai.kind === re.SyntaxKind.NewExpression; + } + M.isNewExpression = _r; + function pi(ai) { + return ai.kind === re.SyntaxKind.NonNullExpression; + } + M.isNonNullExpression = pi; + function ae(ai) { + return ai.kind === re.SyntaxKind.NoSubstitutionTemplateLiteral; + } + M.isNoSubstitutionTemplateLiteral = ae; + function Xe(ai) { + return ai.kind === re.SyntaxKind.NullKeyword; + } + M.isNullLiteral = Xe; + function Jr(ai) { + return ai.kind === re.SyntaxKind.NumericLiteral; + } + M.isNumericLiteral = Jr; + function ti(ai) { + switch (ai.kind) { + case re.SyntaxKind.StringLiteral: + case re.SyntaxKind.NumericLiteral: + case re.SyntaxKind.NoSubstitutionTemplateLiteral: + return true; + default: + return false; + } + } + M.isNumericOrStringLikeLiteral = ti; + function Ze(ai) { + return ai.kind === re.SyntaxKind.ObjectBindingPattern; + } + M.isObjectBindingPattern = Ze; + function Sr(ai) { + return ai.kind === re.SyntaxKind.ObjectLiteralExpression; + } + M.isObjectLiteralExpression = Sr; + function zr(ai) { + return ai.kind === re.SyntaxKind.OmittedExpression; + } + M.isOmittedExpression = zr; + function Wr(ai) { + return ai.kind === re.SyntaxKind.Parameter; + } + M.isParameterDeclaration = Wr; + function Je(ai) { + return ai.kind === re.SyntaxKind.ParenthesizedExpression; + } + M.isParenthesizedExpression = Je; + function xe(ai) { + return ai.kind === re.SyntaxKind.ParenthesizedType; + } + M.isParenthesizedTypeNode = xe; + function vr(ai) { + return ai.kind === re.SyntaxKind.PostfixUnaryExpression; + } + M.isPostfixUnaryExpression = vr; + function mr(ai) { + return ai.kind === re.SyntaxKind.PrefixUnaryExpression; + } + M.isPrefixUnaryExpression = mr; + function Ar(ai) { + return ai.kind === re.SyntaxKind.PropertyAccessExpression; + } + M.isPropertyAccessExpression = Ar; + function Oe(ai) { + return ai.kind === re.SyntaxKind.PropertyAssignment; + } + M.isPropertyAssignment = Oe; + function nr(ai) { + return ai.kind === re.SyntaxKind.PropertyDeclaration; + } + M.isPropertyDeclaration = nr; + function Mr(ai) { + return ai.kind === re.SyntaxKind.PropertySignature; + } + M.isPropertySignature = Mr; + function Pe(ai) { + return ai.kind === re.SyntaxKind.QualifiedName; + } + M.isQualifiedName = Pe; + function Ue(ai) { + return ai.kind === re.SyntaxKind.RegularExpressionLiteral; + } + M.isRegularExpressionLiteral = Ue; + function fr(ai) { + return ai.kind === re.SyntaxKind.ReturnStatement; + } + M.isReturnStatement = fr; + function De(ai) { + return ai.kind === re.SyntaxKind.SetAccessor; + } + M.isSetAccessorDeclaration = De; + function gr(ai) { + return ai.kind === re.SyntaxKind.ShorthandPropertyAssignment; + } + M.isShorthandPropertyAssignment = gr; + function Vr(ai) { + return ai.parameters !== void 0; + } + M.isSignatureDeclaration = Vr; + function Tr(ai) { + return ai.kind === re.SyntaxKind.SourceFile; + } + M.isSourceFile = Tr; + function vi(ai) { + return ai.kind === re.SyntaxKind.SpreadAssignment; + } + M.isSpreadAssignment = vi; + function Ui(ai) { + return ai.kind === re.SyntaxKind.SpreadElement; + } + M.isSpreadElement = Ui; + function Yi(ai) { + return ai.kind === re.SyntaxKind.StringLiteral; + } + M.isStringLiteral = Yi; + function Wi(ai) { + return ai.kind === re.SyntaxKind.SwitchStatement; + } + M.isSwitchStatement = Wi; + function ct(ai) { + return ai.kind === re.SyntaxKind.SyntaxList; + } + M.isSyntaxList = ct; + function Li(ai) { + return ai.kind === re.SyntaxKind.TaggedTemplateExpression; + } + M.isTaggedTemplateExpression = Li; + function nt(ai) { + return ai.kind === re.SyntaxKind.TemplateExpression; + } + M.isTemplateExpression = nt; + function Mt(ai) { + return ai.kind === re.SyntaxKind.TemplateExpression || ai.kind === re.SyntaxKind.NoSubstitutionTemplateLiteral; + } + M.isTemplateLiteral = Mt; + function xt(ai) { + return ai.kind === re.SyntaxKind.StringLiteral || ai.kind === re.SyntaxKind.NoSubstitutionTemplateLiteral; + } + M.isTextualLiteral = xt; + function ut(ai) { + return ai.kind === re.SyntaxKind.ThrowStatement; + } + M.isThrowStatement = ut; + function Dt(ai) { + return ai.kind === re.SyntaxKind.TryStatement; + } + M.isTryStatement = Dt; + function Rt(ai) { + return ai.kind === re.SyntaxKind.TupleType; + } + M.isTupleTypeNode = Rt; + function Ii(ai) { + return ai.kind === re.SyntaxKind.TypeAliasDeclaration; + } + M.isTypeAliasDeclaration = Ii; + function Ki(ai) { + return ai.kind === re.SyntaxKind.TypeAssertionExpression; + } + M.isTypeAssertion = Ki; + function Fi(ai) { + return ai.kind === re.SyntaxKind.TypeLiteral; + } + M.isTypeLiteralNode = Fi; + function ui(ai) { + return ai.kind === re.SyntaxKind.TypeOfExpression; + } + M.isTypeOfExpression = ui; + function Bt(ai) { + return ai.kind === re.SyntaxKind.TypeOperator; + } + M.isTypeOperatorNode = Bt; + function wt(ai) { + return ai.kind === re.SyntaxKind.TypeParameter; + } + M.isTypeParameterDeclaration = wt; + function na(ai) { + return ai.kind === re.SyntaxKind.TypePredicate; + } + M.isTypePredicateNode = na; + function Ai(ai) { + return ai.kind === re.SyntaxKind.TypeReference; + } + M.isTypeReferenceNode = Ai; + function Oi(ai) { + return ai.kind === re.SyntaxKind.TypeQuery; + } + M.isTypeQueryNode = Oi; + function ji(ai) { + return ai.kind === re.SyntaxKind.UnionType; + } + M.isUnionTypeNode = ji; + function Vi(ai) { + return ai.kind === re.SyntaxKind.VariableDeclaration; + } + M.isVariableDeclaration = Vi; + function at(ai) { + return ai.kind === re.SyntaxKind.VariableStatement; + } + M.isVariableStatement = at; + function At(ai) { + return ai.kind === re.SyntaxKind.VariableDeclarationList; + } + M.isVariableDeclarationList = At; + function ba(ai) { + return ai.kind === re.SyntaxKind.VoidExpression; + } + M.isVoidExpression = ba; + function $a(ai) { + return ai.kind === re.SyntaxKind.WhileStatement; + } + M.isWhileStatement = $a; + function Qa(ai) { + return ai.kind === re.SyntaxKind.WithStatement; + } + M.isWithStatement = Qa; + } }), GU = Oa({ "node_modules/tsutils/typeguard/2.9/node.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.isImportTypeNode = void 0; + var re = (ug(), mp(Ud)); + re.__exportStar(KU(), M); + var Ve = _u(); + function Ke(oi) { + return oi.kind === Ve.SyntaxKind.ImportType; + } + M.isImportTypeNode = Ke; + } }), HU = Oa({ "node_modules/tsutils/typeguard/3.0/node.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.isSyntheticExpression = M.isRestTypeNode = M.isOptionalTypeNode = void 0; + var re = (ug(), mp(Ud)); + re.__exportStar(GU(), M); + var Ve = _u(); + function Ke(pr) { + return pr.kind === Ve.SyntaxKind.OptionalType; + } + M.isOptionalTypeNode = Ke; + function oi(pr) { + return pr.kind === Ve.SyntaxKind.RestType; + } + M.isRestTypeNode = oi; + function kr(pr) { + return pr.kind === Ve.SyntaxKind.SyntheticExpression; + } + M.isSyntheticExpression = kr; + } }), i3 = Oa({ "node_modules/tsutils/typeguard/3.2/node.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.isBigIntLiteral = void 0; + var re = (ug(), mp(Ud)); + re.__exportStar(HU(), M); + var Ve = _u(); + function Ke(oi) { + return oi.kind === Ve.SyntaxKind.BigIntLiteral; + } + M.isBigIntLiteral = Ke; + } }), t3 = Oa({ "node_modules/tsutils/typeguard/node.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + var re = (ug(), mp(Ud)); + re.__exportStar(i3(), M); + } }), XU = Oa({ "node_modules/tsutils/typeguard/2.8/type.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.isUniqueESSymbolType = M.isUnionType = M.isUnionOrIntersectionType = M.isTypeVariable = M.isTypeReference = M.isTypeParameter = M.isSubstitutionType = M.isObjectType = M.isLiteralType = M.isIntersectionType = M.isInterfaceType = M.isInstantiableType = M.isIndexedAccessype = M.isIndexedAccessType = M.isGenericType = M.isEnumType = M.isConditionalType = void 0; + var re = _u(); + function Ve(p) { + return (p.flags & re.TypeFlags.Conditional) !== 0; + } + M.isConditionalType = Ve; + function Ke(p) { + return (p.flags & re.TypeFlags.Enum) !== 0; + } + M.isEnumType = Ke; + function oi(p) { + return (p.flags & re.TypeFlags.Object) !== 0 && (p.objectFlags & re.ObjectFlags.ClassOrInterface) !== 0 && (p.objectFlags & re.ObjectFlags.Reference) !== 0; + } + M.isGenericType = oi; + function kr(p) { + return (p.flags & re.TypeFlags.IndexedAccess) !== 0; + } + M.isIndexedAccessType = kr; + function pr(p) { + return (p.flags & re.TypeFlags.Index) !== 0; + } + M.isIndexedAccessype = pr; + function Lr(p) { + return (p.flags & re.TypeFlags.Instantiable) !== 0; + } + M.isInstantiableType = Lr; + function ar(p) { + return (p.flags & re.TypeFlags.Object) !== 0 && (p.objectFlags & re.ObjectFlags.ClassOrInterface) !== 0; + } + M.isInterfaceType = ar; + function ke(p) { + return (p.flags & re.TypeFlags.Intersection) !== 0; + } + M.isIntersectionType = ke; + function e(p) { + return (p.flags & (re.TypeFlags.StringOrNumberLiteral | re.TypeFlags.BigIntLiteral)) !== 0; + } + M.isLiteralType = e; + function a(p) { + return (p.flags & re.TypeFlags.Object) !== 0; + } + M.isObjectType = a; + function C(p) { + return (p.flags & re.TypeFlags.Substitution) !== 0; + } + M.isSubstitutionType = C; + function w(p) { + return (p.flags & re.TypeFlags.TypeParameter) !== 0; + } + M.isTypeParameter = w; + function B(p) { + return (p.flags & re.TypeFlags.Object) !== 0 && (p.objectFlags & re.ObjectFlags.Reference) !== 0; + } + M.isTypeReference = B; + function E(p) { + return (p.flags & re.TypeFlags.TypeVariable) !== 0; + } + M.isTypeVariable = E; + function Q(p) { + return (p.flags & re.TypeFlags.UnionOrIntersection) !== 0; + } + M.isUnionOrIntersectionType = Q; + function le(p) { + return (p.flags & re.TypeFlags.Union) !== 0; + } + M.isUnionType = le; + function N(p) { + return (p.flags & re.TypeFlags.UniqueESSymbol) !== 0; + } + M.isUniqueESSymbolType = N; + } }), D4 = Oa({ "node_modules/tsutils/typeguard/2.9/type.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + var re = (ug(), mp(Ud)); + re.__exportStar(XU(), M); + } }), QU = Oa({ "node_modules/tsutils/typeguard/3.0/type.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.isTupleTypeReference = M.isTupleType = void 0; + var re = (ug(), mp(Ud)); + re.__exportStar(D4(), M); + var Ve = _u(), Ke = D4(); + function oi(pr) { + return (pr.flags & Ve.TypeFlags.Object && pr.objectFlags & Ve.ObjectFlags.Tuple) !== 0; + } + M.isTupleType = oi; + function kr(pr) { + return Ke.isTypeReference(pr) && oi(pr.target); + } + M.isTupleTypeReference = kr; + } }), a3 = Oa({ "node_modules/tsutils/typeguard/3.2/type.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + var re = (ug(), mp(Ud)); + re.__exportStar(QU(), M); + } }), YU = Oa({ "node_modules/tsutils/typeguard/3.2/index.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + var re = (ug(), mp(Ud)); + re.__exportStar(i3(), M), re.__exportStar(a3(), M); + } }), $U = Oa({ "node_modules/tsutils/typeguard/type.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + var re = (ug(), mp(Ud)); + re.__exportStar(a3(), M); + } }), ZU = Oa({ "node_modules/tsutils/util/type.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.getBaseClassMemberOfClassElement = M.getIteratorYieldResultFromIteratorResult = M.getInstanceTypeOfClassLikeDeclaration = M.getConstructorTypeOfClassLikeDeclaration = M.getSymbolOfClassLikeDeclaration = M.getPropertyNameFromType = M.symbolHasReadonlyDeclaration = M.isPropertyReadonlyInType = M.getWellKnownSymbolPropertyOfType = M.getPropertyOfType = M.isBooleanLiteralType = M.isFalsyType = M.isThenableType = M.someTypePart = M.intersectionTypeParts = M.unionTypeParts = M.getCallSignaturesOfType = M.isTypeAssignableToString = M.isTypeAssignableToNumber = M.isOptionalChainingUndefinedMarkerType = M.removeOptionalChainingUndefinedMarkerType = M.removeOptionalityFromType = M.isEmptyObjectType = void 0; + var re = _u(), Ve = $U(), Ke = n3(), oi = t3(); + function kr(F) { + if (Ve.isObjectType(F) && F.objectFlags & re.ObjectFlags.Anonymous && F.getProperties().length === 0 && F.getCallSignatures().length === 0 && F.getConstructSignatures().length === 0 && F.getStringIndexType() === void 0 && F.getNumberIndexType() === void 0) { + let x = F.getBaseTypes(); + return x === void 0 || x.every(kr); + } + return false; + } + M.isEmptyObjectType = kr; + function pr(F, x) { + if (!Lr(x, re.TypeFlags.Undefined)) + return x; + let X = Lr(x, re.TypeFlags.Null); + return x = F.getNonNullableType(x), X ? F.getNullableType(x, re.TypeFlags.Null) : x; + } + M.removeOptionalityFromType = pr; + function Lr(F, x) { + for (let X of B(F)) + if (Ke.isTypeFlagSet(X, x)) + return true; + return false; + } + function ar(F, x) { + if (!Ve.isUnionType(x)) + return ke(F, x) ? x.getNonNullableType() : x; + let X = 0, $ = false; + for (let A of x.types) + ke(F, A) ? $ = true : X |= A.flags; + return $ ? F.getNullableType(x.getNonNullableType(), X) : x; + } + M.removeOptionalChainingUndefinedMarkerType = ar; + function ke(F, x) { + return Ke.isTypeFlagSet(x, re.TypeFlags.Undefined) && F.getNullableType(x.getNonNullableType(), re.TypeFlags.Undefined) !== x; + } + M.isOptionalChainingUndefinedMarkerType = ke; + function e(F, x) { + return C(F, x, re.TypeFlags.NumberLike); + } + M.isTypeAssignableToNumber = e; + function a(F, x) { + return C(F, x, re.TypeFlags.StringLike); + } + M.isTypeAssignableToString = a; + function C(F, x, X) { + X |= re.TypeFlags.Any; + let $; + return function A(y) { + if (Ve.isTypeParameter(y) && y.symbol !== void 0 && y.symbol.declarations !== void 0) { + if ($ === void 0) + $ = /* @__PURE__ */ new Set([y]); + else if (!$.has(y)) + $.add(y); + else + return false; + let V = y.symbol.declarations[0]; + return V.constraint === void 0 ? true : A(F.getTypeFromTypeNode(V.constraint)); + } + return Ve.isUnionType(y) ? y.types.every(A) : Ve.isIntersectionType(y) ? y.types.some(A) : Ke.isTypeFlagSet(y, X); + }(x); + } + function w(F) { + if (Ve.isUnionType(F)) { + let x = []; + for (let X of F.types) + x.push(...w(X)); + return x; + } + if (Ve.isIntersectionType(F)) { + let x; + for (let X of F.types) { + let $ = w(X); + if ($.length !== 0) { + if (x !== void 0) + return []; + x = $; + } + } + return x === void 0 ? [] : x; + } + return F.getCallSignatures(); + } + M.getCallSignaturesOfType = w; + function B(F) { + return Ve.isUnionType(F) ? F.types : [F]; + } + M.unionTypeParts = B; + function E(F) { + return Ve.isIntersectionType(F) ? F.types : [F]; + } + M.intersectionTypeParts = E; + function Q(F, x, X) { + return x(F) ? F.types.some(X) : X(F); + } + M.someTypePart = Q; + function le(F, x) { + let X = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : F.getTypeAtLocation(x); + for (let $ of B(F.getApparentType(X))) { + let A = $.getProperty("then"); + if (A === void 0) + continue; + let y = F.getTypeOfSymbolAtLocation(A, x); + for (let V of B(y)) + for (let L of V.getCallSignatures()) + if (L.parameters.length !== 0 && N(F, L.parameters[0], x)) + return true; + } + return false; + } + M.isThenableType = le; + function N(F, x, X) { + let $ = F.getApparentType(F.getTypeOfSymbolAtLocation(x, X)); + if (x.valueDeclaration.dotDotDotToken && ($ = $.getNumberIndexType(), $ === void 0)) + return false; + for (let A of B($)) + if (A.getCallSignatures().length !== 0) + return true; + return false; + } + function p(F) { + return F.flags & (re.TypeFlags.Undefined | re.TypeFlags.Null | re.TypeFlags.Void) ? true : Ve.isLiteralType(F) ? !F.value : m(F, false); + } + M.isFalsyType = p; + function m(F, x) { + return Ke.isTypeFlagSet(F, re.TypeFlags.BooleanLiteral) && F.intrinsicName === (x ? "true" : "false"); + } + M.isBooleanLiteralType = m; + function G(F, x) { + return x.startsWith("__") ? F.getProperties().find((X) => X.escapedName === x) : F.getProperty(x); + } + M.getPropertyOfType = G; + function oe(F, x, X) { + let $ = "__@" + x; + for (let A of F.getProperties()) { + if (!A.name.startsWith($)) + continue; + let y = X.getApparentType(X.getTypeAtLocation(A.valueDeclaration.name.expression)).symbol; + if (A.escapedName === f(X, y, x)) + return A; + } + } + M.getWellKnownSymbolPropertyOfType = oe; + function f(F, x, X) { + let $ = x && F.getTypeOfSymbolAtLocation(x, x.valueDeclaration).getProperty(X), A = $ && F.getTypeOfSymbolAtLocation($, $.valueDeclaration); + return A && Ve.isUniqueESSymbolType(A) ? A.escapedName : "__@" + X; + } + function T(F, x, X) { + let $ = false, A = false; + for (let y of B(F)) + if (G(y, x) === void 0) { + let V = (Ke.isNumericPropertyName(x) ? X.getIndexInfoOfType(y, re.IndexKind.Number) : void 0) || X.getIndexInfoOfType(y, re.IndexKind.String); + if (V !== void 0 && V.isReadonly) { + if ($) + return true; + A = true; + } + } else { + if (A || K(y, x, X)) + return true; + $ = true; + } + return false; + } + M.isPropertyReadonlyInType = T; + function K(F, x, X) { + return Q(F, Ve.isIntersectionType, ($) => { + let A = G($, x); + if (A === void 0) + return false; + if (A.flags & re.SymbolFlags.Transient) { + if (/^(?:[1-9]\d*|0)$/.test(x) && Ve.isTupleTypeReference($)) + return $.target.readonly; + switch (b($, x, X)) { + case true: + return true; + case false: + return false; + default: + } + } + return Ke.isSymbolFlagSet(A, re.SymbolFlags.ValueModule) || se(A, X); + }); + } + function b(F, x, X) { + if (!Ve.isObjectType(F) || !Ke.isObjectFlagSet(F, re.ObjectFlags.Mapped)) + return; + let $ = F.symbol.declarations[0]; + return $.readonlyToken !== void 0 && !/^__@[^@]+$/.test(x) ? $.readonlyToken.kind !== re.SyntaxKind.MinusToken : T(F.modifiersType, x, X); + } + function se(F, x) { + return (F.flags & re.SymbolFlags.Accessor) === re.SymbolFlags.GetAccessor || F.declarations !== void 0 && F.declarations.some((X) => Ke.isModifierFlagSet(X, re.ModifierFlags.Readonly) || oi.isVariableDeclaration(X) && Ke.isNodeFlagSet(X.parent, re.NodeFlags.Const) || oi.isCallExpression(X) && Ke.isReadonlyAssignmentDeclaration(X, x) || oi.isEnumMember(X) || (oi.isPropertyAssignment(X) || oi.isShorthandPropertyAssignment(X)) && Ke.isInConstContext(X.parent)); + } + M.symbolHasReadonlyDeclaration = se; + function J(F) { + if (F.flags & (re.TypeFlags.StringLiteral | re.TypeFlags.NumberLiteral)) { + let x = String(F.value); + return { displayName: x, symbolName: re.escapeLeadingUnderscores(x) }; + } + if (Ve.isUniqueESSymbolType(F)) + return { displayName: "[".concat(F.symbol ? "".concat(ie(F.symbol) ? "Symbol." : "").concat(F.symbol.name) : F.escapedName.replace(/^__@|@\d+$/g, ""), "]"), symbolName: F.escapedName }; + } + M.getPropertyNameFromType = J; + function ie(F) { + return Ke.isSymbolFlagSet(F, re.SymbolFlags.Property) && F.valueDeclaration !== void 0 && oi.isInterfaceDeclaration(F.valueDeclaration.parent) && F.valueDeclaration.parent.name.text === "SymbolConstructor" && R(F.valueDeclaration.parent); + } + function R(F) { + return Ke.isNodeFlagSet(F.parent, re.NodeFlags.GlobalAugmentation) || oi.isSourceFile(F.parent) && !re.isExternalModule(F.parent); + } + function q(F, x) { + var X; + return x.getSymbolAtLocation((X = F.name) !== null && X !== void 0 ? X : Ke.getChildOfKind(F, re.SyntaxKind.ClassKeyword)); + } + M.getSymbolOfClassLikeDeclaration = q; + function O(F, x) { + return F.kind === re.SyntaxKind.ClassExpression ? x.getTypeAtLocation(F) : x.getTypeOfSymbolAtLocation(q(F, x), F); + } + M.getConstructorTypeOfClassLikeDeclaration = O; + function ve(F, x) { + return F.kind === re.SyntaxKind.ClassDeclaration ? x.getTypeAtLocation(F) : x.getDeclaredTypeOfSymbol(q(F, x)); + } + M.getInstanceTypeOfClassLikeDeclaration = ve; + function ee(F, x, X) { + return Ve.isUnionType(F) && F.types.find(($) => { + let A = $.getProperty("done"); + return A !== void 0 && m(pr(X, X.getTypeOfSymbolAtLocation(A, x)), false); + }) || F; + } + M.getIteratorYieldResultFromIteratorResult = ee; + function he(F, x) { + if (!oi.isClassLikeDeclaration(F.parent)) + return; + let X = Ke.getBaseOfClassLikeExpression(F.parent); + if (X === void 0) + return; + let $ = Ke.getSingleLateBoundPropertyNameOfPropertyName(F.name, x); + if ($ === void 0) + return; + let A = x.getTypeAtLocation(Ke.hasModifier(F.modifiers, re.SyntaxKind.StaticKeyword) ? X.expression : X); + return G(A, $.symbolName); + } + M.getBaseClassMemberOfClassElement = he; + } }), n3 = Oa({ "node_modules/tsutils/util/util.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.isValidIdentifier = M.getLineBreakStyle = M.getLineRanges = M.forEachComment = M.forEachTokenWithTrivia = M.forEachToken = M.isFunctionWithBody = M.hasOwnThisReference = M.isBlockScopeBoundary = M.isFunctionScopeBoundary = M.isTypeScopeBoundary = M.isScopeBoundary = M.ScopeBoundarySelector = M.ScopeBoundary = M.isInSingleStatementContext = M.isBlockScopedDeclarationStatement = M.isBlockScopedVariableDeclaration = M.isBlockScopedVariableDeclarationList = M.getVariableDeclarationKind = M.VariableDeclarationKind = M.forEachDeclaredVariable = M.forEachDestructuringIdentifier = M.getPropertyName = M.getWrappedNodeAtPosition = M.getAstNodeAtPosition = M.commentText = M.isPositionInComment = M.getCommentAtPosition = M.getTokenAtPosition = M.getNextToken = M.getPreviousToken = M.getNextStatement = M.getPreviousStatement = M.isModifierFlagSet = M.isObjectFlagSet = M.isSymbolFlagSet = M.isTypeFlagSet = M.isNodeFlagSet = M.hasAccessModifier = M.isParameterProperty = M.hasModifier = M.getModifier = M.isThisParameter = M.isKeywordKind = M.isJsDocKind = M.isTypeNodeKind = M.isAssignmentKind = M.isNodeKind = M.isTokenKind = M.getChildOfKind = void 0, M.getBaseOfClassLikeExpression = M.hasExhaustiveCaseClauses = M.formatPseudoBigInt = M.unwrapParentheses = M.getSingleLateBoundPropertyNameOfPropertyName = M.getLateBoundPropertyNamesOfPropertyName = M.getLateBoundPropertyNames = M.getPropertyNameOfWellKnownSymbol = M.isWellKnownSymbolLiterally = M.isBindableObjectDefinePropertyCall = M.isReadonlyAssignmentDeclaration = M.isInConstContext = M.isConstAssertion = M.getTsCheckDirective = M.getCheckJsDirective = M.isAmbientModule = M.isCompilerOptionEnabled = M.isStrictCompilerOptionEnabled = M.getIIFE = M.isAmbientModuleBlock = M.isStatementInAmbientContext = M.findImportLikeNodes = M.findImports = M.ImportKind = M.parseJsDocOfNode = M.getJsDoc = M.canHaveJsDoc = M.isReassignmentTarget = M.getAccessKind = M.AccessKind = M.isExpressionValueUsed = M.getDeclarationOfBindingElement = M.hasSideEffects = M.SideEffectOptions = M.isSameLine = M.isNumericPropertyName = M.isValidJsxIdentifier = M.isValidNumericLiteral = M.isValidPropertyName = M.isValidPropertyAccess = void 0; + var re = _u(), Ve = t3(), Ke = YU(), oi = ZU(); + function kr(ae, Xe, Jr) { + for (let ti of ae.getChildren(Jr)) + if (ti.kind === Xe) + return ti; + } + M.getChildOfKind = kr; + function pr(ae) { + return ae >= re.SyntaxKind.FirstToken && ae <= re.SyntaxKind.LastToken; + } + M.isTokenKind = pr; + function Lr(ae) { + return ae >= re.SyntaxKind.FirstNode; + } + M.isNodeKind = Lr; + function ar(ae) { + return ae >= re.SyntaxKind.FirstAssignment && ae <= re.SyntaxKind.LastAssignment; + } + M.isAssignmentKind = ar; + function ke(ae) { + return ae >= re.SyntaxKind.FirstTypeNode && ae <= re.SyntaxKind.LastTypeNode; + } + M.isTypeNodeKind = ke; + function e(ae) { + return ae >= re.SyntaxKind.FirstJSDocNode && ae <= re.SyntaxKind.LastJSDocNode; + } + M.isJsDocKind = e; + function a(ae) { + return ae >= re.SyntaxKind.FirstKeyword && ae <= re.SyntaxKind.LastKeyword; + } + M.isKeywordKind = a; + function C(ae) { + return ae.name.kind === re.SyntaxKind.Identifier && ae.name.originalKeywordKind === re.SyntaxKind.ThisKeyword; + } + M.isThisParameter = C; + function w(ae, Xe) { + if (ae.modifiers !== void 0) { + for (let Jr of ae.modifiers) + if (Jr.kind === Xe) + return Jr; + } + } + M.getModifier = w; + function B(ae) { + if (ae === void 0) + return false; + for (var Xe = arguments.length, Jr = new Array(Xe > 1 ? Xe - 1 : 0), ti = 1; ti < Xe; ti++) + Jr[ti - 1] = arguments[ti]; + for (let Ze of ae) + if (Jr.includes(Ze.kind)) + return true; + return false; + } + M.hasModifier = B; + function E(ae) { + return B(ae.modifiers, re.SyntaxKind.PublicKeyword, re.SyntaxKind.ProtectedKeyword, re.SyntaxKind.PrivateKeyword, re.SyntaxKind.ReadonlyKeyword); + } + M.isParameterProperty = E; + function Q(ae) { + return p(ae, re.ModifierFlags.AccessibilityModifier); + } + M.hasAccessModifier = Q; + function le(ae, Xe) { + return (ae.flags & Xe) !== 0; + } + M.isNodeFlagSet = le, M.isTypeFlagSet = le, M.isSymbolFlagSet = le; + function N(ae, Xe) { + return (ae.objectFlags & Xe) !== 0; + } + M.isObjectFlagSet = N; + function p(ae, Xe) { + return (re.getCombinedModifierFlags(ae) & Xe) !== 0; + } + M.isModifierFlagSet = p; + function m(ae) { + let Xe = ae.parent; + if (Ve.isBlockLike(Xe)) { + let Jr = Xe.statements.indexOf(ae); + if (Jr > 0) + return Xe.statements[Jr - 1]; + } + } + M.getPreviousStatement = m; + function G(ae) { + let Xe = ae.parent; + if (Ve.isBlockLike(Xe)) { + let Jr = Xe.statements.indexOf(ae); + if (Jr < Xe.statements.length) + return Xe.statements[Jr + 1]; + } + } + M.getNextStatement = G; + function oe(ae, Xe) { + let { pos: Jr } = ae; + if (Jr !== 0) { + do + ae = ae.parent; + while (ae.pos === Jr); + return K(ae, Jr - 1, Xe != null ? Xe : ae.getSourceFile(), false); + } + } + M.getPreviousToken = oe; + function f(ae, Xe) { + if (ae.kind === re.SyntaxKind.SourceFile || ae.kind === re.SyntaxKind.EndOfFileToken) + return; + let Jr = ae.end; + for (ae = ae.parent; ae.end === Jr; ) { + if (ae.parent === void 0) + return ae.endOfFileToken; + ae = ae.parent; + } + return K(ae, Jr, Xe != null ? Xe : ae.getSourceFile(), false); + } + M.getNextToken = f; + function T(ae, Xe, Jr, ti) { + if (!(Xe < ae.pos || Xe >= ae.end)) + return pr(ae.kind) ? ae : K(ae, Xe, Jr != null ? Jr : ae.getSourceFile(), ti === true); + } + M.getTokenAtPosition = T; + function K(ae, Xe, Jr, ti) { + if (!ti && (ae = R(ae, Xe), pr(ae.kind))) + return ae; + e: + for (; ; ) { + for (let Ze of ae.getChildren(Jr)) + if (Ze.end > Xe && (ti || Ze.kind !== re.SyntaxKind.JSDocComment)) { + if (pr(Ze.kind)) + return Ze; + ae = Ze; + continue e; + } + return; + } + } + function b(ae, Xe) { + let Jr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ae, ti = T(Jr, Xe, ae); + if (ti === void 0 || ti.kind === re.SyntaxKind.JsxText || Xe >= ti.end - (re.tokenToString(ti.kind) || "").length) + return; + let Ze = ti.pos === 0 ? (re.getShebang(ae.text) || "").length : ti.pos; + return Ze !== 0 && re.forEachTrailingCommentRange(ae.text, Ze, se, Xe) || re.forEachLeadingCommentRange(ae.text, Ze, se, Xe); + } + M.getCommentAtPosition = b; + function se(ae, Xe, Jr, ti, Ze) { + return Ze >= ae && Ze < Xe ? { pos: ae, end: Xe, kind: Jr } : void 0; + } + function J(ae, Xe, Jr) { + return b(ae, Xe, Jr) !== void 0; + } + M.isPositionInComment = J; + function ie(ae, Xe) { + return ae.substring(Xe.pos + 2, Xe.kind === re.SyntaxKind.SingleLineCommentTrivia ? Xe.end : Xe.end - 2); + } + M.commentText = ie; + function R(ae, Xe) { + if (!(ae.pos > Xe || ae.end <= Xe)) { + for (; Lr(ae.kind); ) { + let Jr = re.forEachChild(ae, (ti) => ti.pos <= Xe && ti.end > Xe ? ti : void 0); + if (Jr === void 0) + break; + ae = Jr; + } + return ae; + } + } + M.getAstNodeAtPosition = R; + function q(ae, Xe) { + if (ae.node.pos > Xe || ae.node.end <= Xe) + return; + e: + for (; ; ) { + for (let Jr of ae.children) { + if (Jr.node.pos > Xe) + return ae; + if (Jr.node.end > Xe) { + ae = Jr; + continue e; + } + } + return ae; + } + } + M.getWrappedNodeAtPosition = q; + function O(ae) { + if (ae.kind === re.SyntaxKind.ComputedPropertyName) { + let Xe = Gi(ae.expression); + if (Ve.isPrefixUnaryExpression(Xe)) { + let Jr = false; + switch (Xe.operator) { + case re.SyntaxKind.MinusToken: + Jr = true; + case re.SyntaxKind.PlusToken: + return Ve.isNumericLiteral(Xe.operand) ? "".concat(Jr ? "-" : "").concat(Xe.operand.text) : Ke.isBigIntLiteral(Xe.operand) ? "".concat(Jr ? "-" : "").concat(Xe.operand.text.slice(0, -1)) : void 0; + default: + return; + } + } + return Ke.isBigIntLiteral(Xe) ? Xe.text.slice(0, -1) : Ve.isNumericOrStringLikeLiteral(Xe) ? Xe.text : void 0; + } + return ae.kind === re.SyntaxKind.PrivateIdentifier ? void 0 : ae.text; + } + M.getPropertyName = O; + function ve(ae, Xe) { + for (let Jr of ae.elements) { + if (Jr.kind !== re.SyntaxKind.BindingElement) + continue; + let ti; + if (Jr.name.kind === re.SyntaxKind.Identifier ? ti = Xe(Jr) : ti = ve(Jr.name, Xe), ti) + return ti; + } + } + M.forEachDestructuringIdentifier = ve; + function ee(ae, Xe) { + for (let Jr of ae.declarations) { + let ti; + if (Jr.name.kind === re.SyntaxKind.Identifier ? ti = Xe(Jr) : ti = ve(Jr.name, Xe), ti) + return ti; + } + } + M.forEachDeclaredVariable = ee; + var he; + (function(ae) { + ae[ae.Var = 0] = "Var", ae[ae.Let = 1] = "Let", ae[ae.Const = 2] = "Const"; + })(he = M.VariableDeclarationKind || (M.VariableDeclarationKind = {})); + function F(ae) { + return ae.flags & re.NodeFlags.Let ? 1 : ae.flags & re.NodeFlags.Const ? 2 : 0; + } + M.getVariableDeclarationKind = F; + function x(ae) { + return (ae.flags & re.NodeFlags.BlockScoped) !== 0; + } + M.isBlockScopedVariableDeclarationList = x; + function X(ae) { + let Xe = ae.parent; + return Xe.kind === re.SyntaxKind.CatchClause || x(Xe); + } + M.isBlockScopedVariableDeclaration = X; + function $(ae) { + switch (ae.kind) { + case re.SyntaxKind.VariableStatement: + return x(ae.declarationList); + case re.SyntaxKind.ClassDeclaration: + case re.SyntaxKind.EnumDeclaration: + case re.SyntaxKind.InterfaceDeclaration: + case re.SyntaxKind.TypeAliasDeclaration: + return true; + default: + return false; + } + } + M.isBlockScopedDeclarationStatement = $; + function A(ae) { + switch (ae.parent.kind) { + case re.SyntaxKind.ForStatement: + case re.SyntaxKind.ForInStatement: + case re.SyntaxKind.ForOfStatement: + case re.SyntaxKind.WhileStatement: + case re.SyntaxKind.DoStatement: + case re.SyntaxKind.IfStatement: + case re.SyntaxKind.WithStatement: + case re.SyntaxKind.LabeledStatement: + return true; + default: + return false; + } + } + M.isInSingleStatementContext = A; + var y; + (function(ae) { + ae[ae.None = 0] = "None", ae[ae.Function = 1] = "Function", ae[ae.Block = 2] = "Block", ae[ae.Type = 4] = "Type", ae[ae.ConditionalType = 8] = "ConditionalType"; + })(y = M.ScopeBoundary || (M.ScopeBoundary = {})); + var V; + (function(ae) { + ae[ae.Function = 1] = "Function", ae[ae.Block = 3] = "Block", ae[ae.Type = 7] = "Type", ae[ae.InferType = 8] = "InferType"; + })(V = M.ScopeBoundarySelector || (M.ScopeBoundarySelector = {})); + function L(ae) { + return k(ae) || Y(ae) || P(ae); + } + M.isScopeBoundary = L; + function P(ae) { + switch (ae.kind) { + case re.SyntaxKind.InterfaceDeclaration: + case re.SyntaxKind.TypeAliasDeclaration: + case re.SyntaxKind.MappedType: + return 4; + case re.SyntaxKind.ConditionalType: + return 8; + default: + return 0; + } + } + M.isTypeScopeBoundary = P; + function k(ae) { + switch (ae.kind) { + case re.SyntaxKind.FunctionExpression: + case re.SyntaxKind.ArrowFunction: + case re.SyntaxKind.Constructor: + case re.SyntaxKind.ModuleDeclaration: + case re.SyntaxKind.ClassDeclaration: + case re.SyntaxKind.ClassExpression: + case re.SyntaxKind.EnumDeclaration: + case re.SyntaxKind.MethodDeclaration: + case re.SyntaxKind.FunctionDeclaration: + case re.SyntaxKind.GetAccessor: + case re.SyntaxKind.SetAccessor: + case re.SyntaxKind.MethodSignature: + case re.SyntaxKind.CallSignature: + case re.SyntaxKind.ConstructSignature: + case re.SyntaxKind.ConstructorType: + case re.SyntaxKind.FunctionType: + return 1; + case re.SyntaxKind.SourceFile: + return re.isExternalModule(ae) ? 1 : 0; + default: + return 0; + } + } + M.isFunctionScopeBoundary = k; + function Y(ae) { + switch (ae.kind) { + case re.SyntaxKind.Block: + let Xe = ae.parent; + return Xe.kind !== re.SyntaxKind.CatchClause && (Xe.kind === re.SyntaxKind.SourceFile || !k(Xe)) ? 2 : 0; + case re.SyntaxKind.ForStatement: + case re.SyntaxKind.ForInStatement: + case re.SyntaxKind.ForOfStatement: + case re.SyntaxKind.CaseBlock: + case re.SyntaxKind.CatchClause: + case re.SyntaxKind.WithStatement: + return 2; + default: + return 0; + } + } + M.isBlockScopeBoundary = Y; + function U(ae) { + switch (ae.kind) { + case re.SyntaxKind.ClassDeclaration: + case re.SyntaxKind.ClassExpression: + case re.SyntaxKind.FunctionExpression: + return true; + case re.SyntaxKind.FunctionDeclaration: + return ae.body !== void 0; + case re.SyntaxKind.MethodDeclaration: + case re.SyntaxKind.GetAccessor: + case re.SyntaxKind.SetAccessor: + return ae.parent.kind === re.SyntaxKind.ObjectLiteralExpression; + default: + return false; + } + } + M.hasOwnThisReference = U; + function j(ae) { + switch (ae.kind) { + case re.SyntaxKind.GetAccessor: + case re.SyntaxKind.SetAccessor: + case re.SyntaxKind.FunctionDeclaration: + case re.SyntaxKind.MethodDeclaration: + case re.SyntaxKind.Constructor: + return ae.body !== void 0; + case re.SyntaxKind.FunctionExpression: + case re.SyntaxKind.ArrowFunction: + return true; + default: + return false; + } + } + M.isFunctionWithBody = j; + function H(ae, Xe) { + let Jr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ae.getSourceFile(), ti = []; + for (; ; ) { + if (pr(ae.kind)) + Xe(ae); + else if (ae.kind !== re.SyntaxKind.JSDocComment) { + let Ze = ae.getChildren(Jr); + if (Ze.length === 1) { + ae = Ze[0]; + continue; + } + for (let Sr = Ze.length - 1; Sr >= 0; --Sr) + ti.push(Ze[Sr]); + } + if (ti.length === 0) + break; + ae = ti.pop(); + } + } + M.forEachToken = H; + function I(ae, Xe) { + let Jr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ae.getSourceFile(), ti = Jr.text, Ze = re.createScanner(Jr.languageVersion, false, Jr.languageVariant, ti); + return H(ae, (Sr) => { + let zr = Sr.kind === re.SyntaxKind.JsxText || Sr.pos === Sr.end ? Sr.pos : Sr.getStart(Jr); + if (zr !== Sr.pos) { + Ze.setTextPos(Sr.pos); + let Wr = Ze.scan(), Je = Ze.getTokenPos(); + for (; Je < zr; ) { + let xe = Ze.getTextPos(); + if (Xe(ti, Wr, { pos: Je, end: xe }, Sr.parent), xe === zr) + break; + Wr = Ze.scan(), Je = Ze.getTokenPos(); + } + } + return Xe(ti, Sr.kind, { end: Sr.end, pos: zr }, Sr.parent); + }, Jr); + } + M.forEachTokenWithTrivia = I; + function l(ae, Xe) { + let Jr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ae.getSourceFile(), ti = Jr.text, Ze = Jr.languageVariant !== re.LanguageVariant.JSX; + return H(ae, (zr) => { + if (zr.pos !== zr.end && (zr.kind !== re.SyntaxKind.JsxText && re.forEachLeadingCommentRange(ti, zr.pos === 0 ? (re.getShebang(ti) || "").length : zr.pos, Sr), Ze || d(zr))) + return re.forEachTrailingCommentRange(ti, zr.end, Sr); + }, Jr); + function Sr(zr, Wr, Je) { + Xe(ti, { pos: zr, end: Wr, kind: Je }); + } + } + M.forEachComment = l; + function d(ae) { + switch (ae.kind) { + case re.SyntaxKind.CloseBraceToken: + return ae.parent.kind !== re.SyntaxKind.JsxExpression || !D(ae.parent.parent); + case re.SyntaxKind.GreaterThanToken: + switch (ae.parent.kind) { + case re.SyntaxKind.JsxOpeningElement: + return ae.end !== ae.parent.end; + case re.SyntaxKind.JsxOpeningFragment: + return false; + case re.SyntaxKind.JsxSelfClosingElement: + return ae.end !== ae.parent.end || !D(ae.parent.parent); + case re.SyntaxKind.JsxClosingElement: + case re.SyntaxKind.JsxClosingFragment: + return !D(ae.parent.parent.parent); + } + } + return true; + } + function D(ae) { + return ae.kind === re.SyntaxKind.JsxElement || ae.kind === re.SyntaxKind.JsxFragment; + } + function fe(ae) { + let Xe = ae.getLineStarts(), Jr = [], ti = Xe.length, Ze = ae.text, Sr = 0; + for (let zr = 1; zr < ti; ++zr) { + let Wr = Xe[zr], Je = Wr; + for (; Je > Sr && re.isLineBreak(Ze.charCodeAt(Je - 1)); --Je) + ; + Jr.push({ pos: Sr, end: Wr, contentLength: Je - Sr }), Sr = Wr; + } + return Jr.push({ pos: Sr, end: ae.end, contentLength: ae.end - Sr }), Jr; + } + M.getLineRanges = fe; + function g(ae) { + let Xe = ae.getLineStarts(); + return Xe.length === 1 || Xe[1] < 2 || ae.text[Xe[1] - 2] !== "\r" ? ` +` : `\r +`; + } + M.getLineBreakStyle = g; + var ne; + function ue(ae, Xe) { + return ne === void 0 ? ne = re.createScanner(Xe, false, void 0, ae) : (ne.setScriptTarget(Xe), ne.setText(ae)), ne.scan(), ne; + } + function We(ae) { + let Xe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : re.ScriptTarget.Latest, Jr = ue(ae, Xe); + return Jr.isIdentifier() && Jr.getTextPos() === ae.length && Jr.getTokenPos() === 0; + } + M.isValidIdentifier = We; + function Fe(ae) { + return ae >= 65536 ? 2 : 1; + } + function Z(ae) { + let Xe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : re.ScriptTarget.Latest; + if (ae.length === 0) + return false; + let Jr = ae.codePointAt(0); + if (!re.isIdentifierStart(Jr, Xe)) + return false; + for (let ti = Fe(Jr); ti < ae.length; ti += Fe(Jr)) + if (Jr = ae.codePointAt(ti), !re.isIdentifierPart(Jr, Xe)) + return false; + return true; + } + M.isValidPropertyAccess = Z; + function Be(ae) { + let Xe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : re.ScriptTarget.Latest; + if (Z(ae, Xe)) + return true; + let Jr = ue(ae, Xe); + return Jr.getTextPos() === ae.length && Jr.getToken() === re.SyntaxKind.NumericLiteral && Jr.getTokenValue() === ae; + } + M.isValidPropertyName = Be; + function ge(ae) { + let Xe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : re.ScriptTarget.Latest, Jr = ue(ae, Xe); + return Jr.getToken() === re.SyntaxKind.NumericLiteral && Jr.getTextPos() === ae.length && Jr.getTokenPos() === 0; + } + M.isValidNumericLiteral = ge; + function Re(ae) { + let Xe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : re.ScriptTarget.Latest; + if (ae.length === 0) + return false; + let Jr = false, ti = ae.codePointAt(0); + if (!re.isIdentifierStart(ti, Xe)) + return false; + for (let Ze = Fe(ti); Ze < ae.length; Ze += Fe(ti)) + if (ti = ae.codePointAt(Ze), !re.isIdentifierPart(ti, Xe) && ti !== 45) + if (!Jr && ti === 58 && Ze + Fe(ti) !== ae.length) + Jr = true; + else + return false; + return true; + } + M.isValidJsxIdentifier = Re; + function ze(ae) { + return String(+ae) === ae; + } + M.isNumericPropertyName = ze; + function Ee(ae, Xe, Jr) { + return re.getLineAndCharacterOfPosition(ae, Xe).line === re.getLineAndCharacterOfPosition(ae, Jr).line; + } + M.isSameLine = Ee; + var He; + (function(ae) { + ae[ae.None = 0] = "None", ae[ae.TaggedTemplate = 1] = "TaggedTemplate", ae[ae.Constructor = 2] = "Constructor", ae[ae.JsxElement = 4] = "JsxElement"; + })(He = M.SideEffectOptions || (M.SideEffectOptions = {})); + function rr(ae, Xe) { + var Jr, ti; + let Ze = []; + for (; ; ) { + switch (ae.kind) { + case re.SyntaxKind.CallExpression: + case re.SyntaxKind.PostfixUnaryExpression: + case re.SyntaxKind.AwaitExpression: + case re.SyntaxKind.YieldExpression: + case re.SyntaxKind.DeleteExpression: + return true; + case re.SyntaxKind.TypeAssertionExpression: + case re.SyntaxKind.AsExpression: + case re.SyntaxKind.ParenthesizedExpression: + case re.SyntaxKind.NonNullExpression: + case re.SyntaxKind.VoidExpression: + case re.SyntaxKind.TypeOfExpression: + case re.SyntaxKind.PropertyAccessExpression: + case re.SyntaxKind.SpreadElement: + case re.SyntaxKind.PartiallyEmittedExpression: + ae = ae.expression; + continue; + case re.SyntaxKind.BinaryExpression: + if (ar(ae.operatorToken.kind)) + return true; + Ze.push(ae.right), ae = ae.left; + continue; + case re.SyntaxKind.PrefixUnaryExpression: + switch (ae.operator) { + case re.SyntaxKind.PlusPlusToken: + case re.SyntaxKind.MinusMinusToken: + return true; + default: + ae = ae.operand; + continue; + } + case re.SyntaxKind.ElementAccessExpression: + ae.argumentExpression !== void 0 && Ze.push(ae.argumentExpression), ae = ae.expression; + continue; + case re.SyntaxKind.ConditionalExpression: + Ze.push(ae.whenTrue, ae.whenFalse), ae = ae.condition; + continue; + case re.SyntaxKind.NewExpression: + if (Xe & 2) + return true; + ae.arguments !== void 0 && Ze.push(...ae.arguments), ae = ae.expression; + continue; + case re.SyntaxKind.TaggedTemplateExpression: + if (Xe & 1) + return true; + if (Ze.push(ae.tag), ae = ae.template, ae.kind === re.SyntaxKind.NoSubstitutionTemplateLiteral) + break; + case re.SyntaxKind.TemplateExpression: + for (let Sr of ae.templateSpans) + Ze.push(Sr.expression); + break; + case re.SyntaxKind.ClassExpression: { + if (ae.decorators !== void 0) + return true; + for (let zr of ae.members) { + if (zr.decorators !== void 0) + return true; + if (!B(zr.modifiers, re.SyntaxKind.DeclareKeyword)) + if (((Jr = zr.name) === null || Jr === void 0 ? void 0 : Jr.kind) === re.SyntaxKind.ComputedPropertyName && Ze.push(zr.name.expression), Ve.isMethodDeclaration(zr)) { + for (let Wr of zr.parameters) + if (Wr.decorators !== void 0) + return true; + } else + Ve.isPropertyDeclaration(zr) && zr.initializer !== void 0 && B(zr.modifiers, re.SyntaxKind.StaticKeyword) && Ze.push(zr.initializer); + } + let Sr = pi(ae); + if (Sr === void 0) + break; + ae = Sr.expression; + continue; + } + case re.SyntaxKind.ArrayLiteralExpression: + Ze.push(...ae.elements); + break; + case re.SyntaxKind.ObjectLiteralExpression: + for (let Sr of ae.properties) + switch (((ti = Sr.name) === null || ti === void 0 ? void 0 : ti.kind) === re.SyntaxKind.ComputedPropertyName && Ze.push(Sr.name.expression), Sr.kind) { + case re.SyntaxKind.PropertyAssignment: + Ze.push(Sr.initializer); + break; + case re.SyntaxKind.SpreadAssignment: + Ze.push(Sr.expression); + } + break; + case re.SyntaxKind.JsxExpression: + if (ae.expression === void 0) + break; + ae = ae.expression; + continue; + case re.SyntaxKind.JsxElement: + case re.SyntaxKind.JsxFragment: + for (let Sr of ae.children) + Sr.kind !== re.SyntaxKind.JsxText && Ze.push(Sr); + if (ae.kind === re.SyntaxKind.JsxFragment) + break; + ae = ae.openingElement; + case re.SyntaxKind.JsxSelfClosingElement: + case re.SyntaxKind.JsxOpeningElement: + if (Xe & 4) + return true; + for (let Sr of ae.attributes.properties) + Sr.kind === re.SyntaxKind.JsxSpreadAttribute ? Ze.push(Sr.expression) : Sr.initializer !== void 0 && Ze.push(Sr.initializer); + break; + case re.SyntaxKind.CommaListExpression: + Ze.push(...ae.elements); + } + if (Ze.length === 0) + return false; + ae = Ze.pop(); + } + } + M.hasSideEffects = rr; + function Ie(ae) { + let Xe = ae.parent.parent; + for (; Xe.kind === re.SyntaxKind.BindingElement; ) + Xe = Xe.parent.parent; + return Xe; + } + M.getDeclarationOfBindingElement = Ie; + function _e(ae) { + for (; ; ) { + let Xe = ae.parent; + switch (Xe.kind) { + case re.SyntaxKind.CallExpression: + case re.SyntaxKind.NewExpression: + case re.SyntaxKind.ElementAccessExpression: + case re.SyntaxKind.WhileStatement: + case re.SyntaxKind.DoStatement: + case re.SyntaxKind.WithStatement: + case re.SyntaxKind.ThrowStatement: + case re.SyntaxKind.ReturnStatement: + case re.SyntaxKind.JsxExpression: + case re.SyntaxKind.JsxSpreadAttribute: + case re.SyntaxKind.JsxElement: + case re.SyntaxKind.JsxFragment: + case re.SyntaxKind.JsxSelfClosingElement: + case re.SyntaxKind.ComputedPropertyName: + case re.SyntaxKind.ArrowFunction: + case re.SyntaxKind.ExportSpecifier: + case re.SyntaxKind.ExportAssignment: + case re.SyntaxKind.ImportDeclaration: + case re.SyntaxKind.ExternalModuleReference: + case re.SyntaxKind.Decorator: + case re.SyntaxKind.TaggedTemplateExpression: + case re.SyntaxKind.TemplateSpan: + case re.SyntaxKind.ExpressionWithTypeArguments: + case re.SyntaxKind.TypeOfExpression: + case re.SyntaxKind.AwaitExpression: + case re.SyntaxKind.YieldExpression: + case re.SyntaxKind.LiteralType: + case re.SyntaxKind.JsxAttributes: + case re.SyntaxKind.JsxOpeningElement: + case re.SyntaxKind.JsxClosingElement: + case re.SyntaxKind.IfStatement: + case re.SyntaxKind.CaseClause: + case re.SyntaxKind.SwitchStatement: + return true; + case re.SyntaxKind.PropertyAccessExpression: + return Xe.expression === ae; + case re.SyntaxKind.QualifiedName: + return Xe.left === ae; + case re.SyntaxKind.ShorthandPropertyAssignment: + return Xe.objectAssignmentInitializer === ae || !we(Xe); + case re.SyntaxKind.PropertyAssignment: + return Xe.initializer === ae && !we(Xe); + case re.SyntaxKind.SpreadAssignment: + case re.SyntaxKind.SpreadElement: + case re.SyntaxKind.ArrayLiteralExpression: + return !we(Xe); + case re.SyntaxKind.ParenthesizedExpression: + case re.SyntaxKind.AsExpression: + case re.SyntaxKind.TypeAssertionExpression: + case re.SyntaxKind.PostfixUnaryExpression: + case re.SyntaxKind.PrefixUnaryExpression: + case re.SyntaxKind.NonNullExpression: + ae = Xe; + continue; + case re.SyntaxKind.ForStatement: + return Xe.condition === ae; + case re.SyntaxKind.ForInStatement: + case re.SyntaxKind.ForOfStatement: + return Xe.expression === ae; + case re.SyntaxKind.ConditionalExpression: + if (Xe.condition === ae) + return true; + ae = Xe; + break; + case re.SyntaxKind.PropertyDeclaration: + case re.SyntaxKind.BindingElement: + case re.SyntaxKind.VariableDeclaration: + case re.SyntaxKind.Parameter: + case re.SyntaxKind.EnumMember: + return Xe.initializer === ae; + case re.SyntaxKind.ImportEqualsDeclaration: + return Xe.moduleReference === ae; + case re.SyntaxKind.CommaListExpression: + if (Xe.elements[Xe.elements.length - 1] !== ae) + return false; + ae = Xe; + break; + case re.SyntaxKind.BinaryExpression: + if (Xe.right === ae) { + if (Xe.operatorToken.kind === re.SyntaxKind.CommaToken) { + ae = Xe; + break; + } + return true; + } + switch (Xe.operatorToken.kind) { + case re.SyntaxKind.CommaToken: + case re.SyntaxKind.EqualsToken: + return false; + case re.SyntaxKind.EqualsEqualsEqualsToken: + case re.SyntaxKind.EqualsEqualsToken: + case re.SyntaxKind.ExclamationEqualsEqualsToken: + case re.SyntaxKind.ExclamationEqualsToken: + case re.SyntaxKind.InstanceOfKeyword: + case re.SyntaxKind.PlusToken: + case re.SyntaxKind.MinusToken: + case re.SyntaxKind.AsteriskToken: + case re.SyntaxKind.SlashToken: + case re.SyntaxKind.PercentToken: + case re.SyntaxKind.AsteriskAsteriskToken: + case re.SyntaxKind.GreaterThanToken: + case re.SyntaxKind.GreaterThanGreaterThanToken: + case re.SyntaxKind.GreaterThanGreaterThanGreaterThanToken: + case re.SyntaxKind.GreaterThanEqualsToken: + case re.SyntaxKind.LessThanToken: + case re.SyntaxKind.LessThanLessThanToken: + case re.SyntaxKind.LessThanEqualsToken: + case re.SyntaxKind.AmpersandToken: + case re.SyntaxKind.BarToken: + case re.SyntaxKind.CaretToken: + case re.SyntaxKind.BarBarToken: + case re.SyntaxKind.AmpersandAmpersandToken: + case re.SyntaxKind.QuestionQuestionToken: + case re.SyntaxKind.InKeyword: + case re.SyntaxKind.QuestionQuestionEqualsToken: + case re.SyntaxKind.AmpersandAmpersandEqualsToken: + case re.SyntaxKind.BarBarEqualsToken: + return true; + default: + ae = Xe; + } + break; + default: + return false; + } + } + } + M.isExpressionValueUsed = _e; + function we(ae) { + switch (ae.kind) { + case re.SyntaxKind.ShorthandPropertyAssignment: + if (ae.objectAssignmentInitializer !== void 0) + return true; + case re.SyntaxKind.PropertyAssignment: + case re.SyntaxKind.SpreadAssignment: + ae = ae.parent; + break; + case re.SyntaxKind.SpreadElement: + if (ae.parent.kind !== re.SyntaxKind.ArrayLiteralExpression) + return false; + ae = ae.parent; + } + for (; ; ) + switch (ae.parent.kind) { + case re.SyntaxKind.BinaryExpression: + return ae.parent.left === ae && ae.parent.operatorToken.kind === re.SyntaxKind.EqualsToken; + case re.SyntaxKind.ForOfStatement: + return ae.parent.initializer === ae; + case re.SyntaxKind.ArrayLiteralExpression: + case re.SyntaxKind.ObjectLiteralExpression: + ae = ae.parent; + break; + case re.SyntaxKind.SpreadAssignment: + case re.SyntaxKind.PropertyAssignment: + ae = ae.parent.parent; + break; + case re.SyntaxKind.SpreadElement: + if (ae.parent.parent.kind !== re.SyntaxKind.ArrayLiteralExpression) + return false; + ae = ae.parent.parent; + break; + default: + return false; + } + } + var de; + (function(ae) { + ae[ae.None = 0] = "None", ae[ae.Read = 1] = "Read", ae[ae.Write = 2] = "Write", ae[ae.Delete = 4] = "Delete", ae[ae.ReadWrite = 3] = "ReadWrite", ae[ae.Modification = 6] = "Modification"; + })(de = M.AccessKind || (M.AccessKind = {})); + function ye(ae) { + let Xe = ae.parent; + switch (Xe.kind) { + case re.SyntaxKind.DeleteExpression: + return 4; + case re.SyntaxKind.PostfixUnaryExpression: + return 3; + case re.SyntaxKind.PrefixUnaryExpression: + return Xe.operator === re.SyntaxKind.PlusPlusToken || Xe.operator === re.SyntaxKind.MinusMinusToken ? 3 : 1; + case re.SyntaxKind.BinaryExpression: + return Xe.right === ae ? 1 : ar(Xe.operatorToken.kind) ? Xe.operatorToken.kind === re.SyntaxKind.EqualsToken ? 2 : 3 : 1; + case re.SyntaxKind.ShorthandPropertyAssignment: + return Xe.objectAssignmentInitializer === ae ? 1 : we(Xe) ? 2 : 1; + case re.SyntaxKind.PropertyAssignment: + return Xe.name === ae ? 0 : we(Xe) ? 2 : 1; + case re.SyntaxKind.ArrayLiteralExpression: + case re.SyntaxKind.SpreadElement: + case re.SyntaxKind.SpreadAssignment: + return we(Xe) ? 2 : 1; + case re.SyntaxKind.ParenthesizedExpression: + case re.SyntaxKind.NonNullExpression: + case re.SyntaxKind.TypeAssertionExpression: + case re.SyntaxKind.AsExpression: + return ye(Xe); + case re.SyntaxKind.ForOfStatement: + case re.SyntaxKind.ForInStatement: + return Xe.initializer === ae ? 2 : 1; + case re.SyntaxKind.ExpressionWithTypeArguments: + return Xe.parent.token === re.SyntaxKind.ExtendsKeyword && Xe.parent.parent.kind !== re.SyntaxKind.InterfaceDeclaration ? 1 : 0; + case re.SyntaxKind.ComputedPropertyName: + case re.SyntaxKind.ExpressionStatement: + case re.SyntaxKind.TypeOfExpression: + case re.SyntaxKind.ElementAccessExpression: + case re.SyntaxKind.ForStatement: + case re.SyntaxKind.IfStatement: + case re.SyntaxKind.DoStatement: + case re.SyntaxKind.WhileStatement: + case re.SyntaxKind.SwitchStatement: + case re.SyntaxKind.WithStatement: + case re.SyntaxKind.ThrowStatement: + case re.SyntaxKind.CallExpression: + case re.SyntaxKind.NewExpression: + case re.SyntaxKind.TaggedTemplateExpression: + case re.SyntaxKind.JsxExpression: + case re.SyntaxKind.Decorator: + case re.SyntaxKind.TemplateSpan: + case re.SyntaxKind.JsxOpeningElement: + case re.SyntaxKind.JsxSelfClosingElement: + case re.SyntaxKind.JsxSpreadAttribute: + case re.SyntaxKind.VoidExpression: + case re.SyntaxKind.ReturnStatement: + case re.SyntaxKind.AwaitExpression: + case re.SyntaxKind.YieldExpression: + case re.SyntaxKind.ConditionalExpression: + case re.SyntaxKind.CaseClause: + case re.SyntaxKind.JsxElement: + return 1; + case re.SyntaxKind.ArrowFunction: + return Xe.body === ae ? 1 : 2; + case re.SyntaxKind.PropertyDeclaration: + case re.SyntaxKind.VariableDeclaration: + case re.SyntaxKind.Parameter: + case re.SyntaxKind.EnumMember: + case re.SyntaxKind.BindingElement: + case re.SyntaxKind.JsxAttribute: + return Xe.initializer === ae ? 1 : 0; + case re.SyntaxKind.PropertyAccessExpression: + return Xe.expression === ae ? 1 : 0; + case re.SyntaxKind.ExportAssignment: + return Xe.isExportEquals ? 1 : 0; + } + return 0; + } + M.getAccessKind = ye; + function Ae(ae) { + return (ye(ae) & 2) !== 0; + } + M.isReassignmentTarget = Ae; + function er(ae) { + switch (ae.kind) { + case re.SyntaxKind.Parameter: + case re.SyntaxKind.CallSignature: + case re.SyntaxKind.ConstructSignature: + case re.SyntaxKind.MethodSignature: + case re.SyntaxKind.PropertySignature: + case re.SyntaxKind.ArrowFunction: + case re.SyntaxKind.ParenthesizedExpression: + case re.SyntaxKind.SpreadAssignment: + case re.SyntaxKind.ShorthandPropertyAssignment: + case re.SyntaxKind.PropertyAssignment: + case re.SyntaxKind.FunctionExpression: + case re.SyntaxKind.LabeledStatement: + case re.SyntaxKind.ExpressionStatement: + case re.SyntaxKind.VariableStatement: + case re.SyntaxKind.FunctionDeclaration: + case re.SyntaxKind.Constructor: + case re.SyntaxKind.MethodDeclaration: + case re.SyntaxKind.PropertyDeclaration: + case re.SyntaxKind.GetAccessor: + case re.SyntaxKind.SetAccessor: + case re.SyntaxKind.ClassDeclaration: + case re.SyntaxKind.ClassExpression: + case re.SyntaxKind.InterfaceDeclaration: + case re.SyntaxKind.TypeAliasDeclaration: + case re.SyntaxKind.EnumMember: + case re.SyntaxKind.EnumDeclaration: + case re.SyntaxKind.ModuleDeclaration: + case re.SyntaxKind.ImportEqualsDeclaration: + case re.SyntaxKind.ImportDeclaration: + case re.SyntaxKind.NamespaceExportDeclaration: + case re.SyntaxKind.ExportAssignment: + case re.SyntaxKind.IndexSignature: + case re.SyntaxKind.FunctionType: + case re.SyntaxKind.ConstructorType: + case re.SyntaxKind.JSDocFunctionType: + case re.SyntaxKind.ExportDeclaration: + case re.SyntaxKind.NamedTupleMember: + case re.SyntaxKind.EndOfFileToken: + return true; + default: + return false; + } + } + M.canHaveJsDoc = er; + function ir(ae, Xe) { + let Jr = []; + for (let ti of ae.getChildren(Xe)) { + if (!Ve.isJsDoc(ti)) + break; + Jr.push(ti); + } + return Jr; + } + M.getJsDoc = ir; + function Cr(ae, Xe) { + let Jr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ae.getSourceFile(); + if (er(ae) && ae.kind !== re.SyntaxKind.EndOfFileToken) { + let ti = ir(ae, Jr); + if (ti.length !== 0 || !Xe) + return ti; + } + return Ye(ae, ae.getStart(Jr), Jr, Xe); + } + M.parseJsDocOfNode = Cr; + function Ye(ae, Xe, Jr, ti) { + let Ze = re[ti && Ee(Jr, ae.pos, Xe) ? "forEachTrailingCommentRange" : "forEachLeadingCommentRange"](Jr.text, ae.pos, (vr, mr, Ar) => Ar === re.SyntaxKind.MultiLineCommentTrivia && Jr.text[vr + 2] === "*" ? { pos: vr } : void 0); + if (Ze === void 0) + return []; + let Sr = Ze.pos, zr = Jr.text.slice(Sr, Xe), Wr = re.createSourceFile("jsdoc.ts", "".concat(zr, "var a;"), Jr.languageVersion), Je = ir(Wr.statements[0], Wr); + for (let vr of Je) + xe(vr, ae); + return Je; + function xe(vr, mr) { + return vr.pos += Sr, vr.end += Sr, vr.parent = mr, re.forEachChild(vr, (Ar) => xe(Ar, vr), (Ar) => { + Ar.pos += Sr, Ar.end += Sr; + for (let Oe of Ar) + xe(Oe, vr); + }); + } + } + var Br; + (function(ae) { + ae[ae.ImportDeclaration = 1] = "ImportDeclaration", ae[ae.ImportEquals = 2] = "ImportEquals", ae[ae.ExportFrom = 4] = "ExportFrom", ae[ae.DynamicImport = 8] = "DynamicImport", ae[ae.Require = 16] = "Require", ae[ae.ImportType = 32] = "ImportType", ae[ae.All = 63] = "All", ae[ae.AllImports = 59] = "AllImports", ae[ae.AllStaticImports = 3] = "AllStaticImports", ae[ae.AllImportExpressions = 24] = "AllImportExpressions", ae[ae.AllRequireLike = 18] = "AllRequireLike", ae[ae.AllNestedImports = 56] = "AllNestedImports", ae[ae.AllTopLevelImports = 7] = "AllTopLevelImports"; + })(Br = M.ImportKind || (M.ImportKind = {})); + function Er(ae, Xe) { + let Jr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true, ti = []; + for (let Sr of Ne(ae, Xe, Jr)) + switch (Sr.kind) { + case re.SyntaxKind.ImportDeclaration: + Ze(Sr.moduleSpecifier); + break; + case re.SyntaxKind.ImportEqualsDeclaration: + Ze(Sr.moduleReference.expression); + break; + case re.SyntaxKind.ExportDeclaration: + Ze(Sr.moduleSpecifier); + break; + case re.SyntaxKind.CallExpression: + Ze(Sr.arguments[0]); + break; + case re.SyntaxKind.ImportType: + Ve.isLiteralTypeNode(Sr.argument) && Ze(Sr.argument.literal); + break; + default: + throw new Error("unexpected node"); + } + return ti; + function Ze(Sr) { + Ve.isTextualLiteral(Sr) && ti.push(Sr); + } + } + M.findImports = Er; + function Ne(ae, Xe) { + let Jr = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; + return new n(ae, Xe, Jr).find(); + } + M.findImportLikeNodes = Ne; + var n = class { + constructor(ae, Xe, Jr) { + this._sourceFile = ae, this._options = Xe, this._ignoreFileName = Jr, this._result = []; + } + find() { + return this._sourceFile.isDeclarationFile && (this._options &= -25), this._options & 7 && this._findImports(this._sourceFile.statements), this._options & 56 && this._findNestedImports(), this._result; + } + _findImports(ae) { + for (let Xe of ae) + Ve.isImportDeclaration(Xe) ? this._options & 1 && this._result.push(Xe) : Ve.isImportEqualsDeclaration(Xe) ? this._options & 2 && Xe.moduleReference.kind === re.SyntaxKind.ExternalModuleReference && this._result.push(Xe) : Ve.isExportDeclaration(Xe) ? Xe.moduleSpecifier !== void 0 && this._options & 4 && this._result.push(Xe) : Ve.isModuleDeclaration(Xe) && this._findImportsInModule(Xe); + } + _findImportsInModule(ae) { + if (ae.body !== void 0) { + if (ae.body.kind === re.SyntaxKind.ModuleDeclaration) + return this._findImportsInModule(ae.body); + this._findImports(ae.body.statements); + } + } + _findNestedImports() { + let ae = this._ignoreFileName || (this._sourceFile.flags & re.NodeFlags.JavaScriptFile) !== 0, Xe, Jr; + if ((this._options & 56) === 16) { + if (!ae) + return; + Xe = /\brequire\s*[ 1 && this._result.push(Ze.parent); + } + } else + Ze.kind === re.SyntaxKind.Identifier && Ze.end - 7 === ti.index && Ze.parent.kind === re.SyntaxKind.CallExpression && Ze.parent.expression === Ze && Ze.parent.arguments.length === 1 && this._result.push(Ze.parent); + } + } + }; + function lr(ae) { + for (; ae.flags & re.NodeFlags.NestedNamespace; ) + ae = ae.parent; + return B(ae.modifiers, re.SyntaxKind.DeclareKeyword) || be(ae.parent); + } + M.isStatementInAmbientContext = lr; + function be(ae) { + for (; ae.kind === re.SyntaxKind.ModuleBlock; ) { + do + ae = ae.parent; + while (ae.flags & re.NodeFlags.NestedNamespace); + if (B(ae.modifiers, re.SyntaxKind.DeclareKeyword)) + return true; + ae = ae.parent; + } + return false; + } + M.isAmbientModuleBlock = be; + function Ge(ae) { + let Xe = ae.parent; + for (; Xe.kind === re.SyntaxKind.ParenthesizedExpression; ) + Xe = Xe.parent; + return Ve.isCallExpression(Xe) && ae.end <= Xe.expression.end ? Xe : void 0; + } + M.getIIFE = Ge; + function ur(ae, Xe) { + return (ae.strict ? ae[Xe] !== false : ae[Xe] === true) && (Xe !== "strictPropertyInitialization" || ur(ae, "strictNullChecks")); + } + M.isStrictCompilerOptionEnabled = ur; + function yr(ae, Xe) { + switch (Xe) { + case "stripInternal": + case "declarationMap": + case "emitDeclarationOnly": + return ae[Xe] === true && yr(ae, "declaration"); + case "declaration": + return ae.declaration || yr(ae, "composite"); + case "incremental": + return ae.incremental === void 0 ? yr(ae, "composite") : ae.incremental; + case "skipDefaultLibCheck": + return ae.skipDefaultLibCheck || yr(ae, "skipLibCheck"); + case "suppressImplicitAnyIndexErrors": + return ae.suppressImplicitAnyIndexErrors === true && yr(ae, "noImplicitAny"); + case "allowSyntheticDefaultImports": + return ae.allowSyntheticDefaultImports !== void 0 ? ae.allowSyntheticDefaultImports : yr(ae, "esModuleInterop") || ae.module === re.ModuleKind.System; + case "noUncheckedIndexedAccess": + return ae.noUncheckedIndexedAccess === true && yr(ae, "strictNullChecks"); + case "allowJs": + return ae.allowJs === void 0 ? yr(ae, "checkJs") : ae.allowJs; + case "noImplicitAny": + case "noImplicitThis": + case "strictNullChecks": + case "strictFunctionTypes": + case "strictPropertyInitialization": + case "alwaysStrict": + case "strictBindCallApply": + return ur(ae, Xe); + } + return ae[Xe] === true; + } + M.isCompilerOptionEnabled = yr; + function Ir(ae) { + return ae.name.kind === re.SyntaxKind.StringLiteral || (ae.flags & re.NodeFlags.GlobalAugmentation) !== 0; + } + M.isAmbientModule = Ir; + function wr(ae) { + return Ur(ae); + } + M.getCheckJsDirective = wr; + function Ur(ae) { + let Xe; + return re.forEachLeadingCommentRange(ae, (re.getShebang(ae) || "").length, (Jr, ti, Ze) => { + if (Ze === re.SyntaxKind.SingleLineCommentTrivia) { + let Sr = ae.slice(Jr, ti), zr = /^\/{2,3}\s*@ts-(no)?check(?:\s|$)/i.exec(Sr); + zr !== null && (Xe = { pos: Jr, end: ti, enabled: zr[1] === void 0 }); + } + }), Xe; + } + M.getTsCheckDirective = Ur; + function ii(ae) { + return Ve.isTypeReferenceNode(ae.type) && ae.type.typeName.kind === re.SyntaxKind.Identifier && ae.type.typeName.escapedText === "const"; + } + M.isConstAssertion = ii; + function mi(ae) { + let Xe = ae; + for (; ; ) { + let Jr = Xe.parent; + e: + switch (Jr.kind) { + case re.SyntaxKind.TypeAssertionExpression: + case re.SyntaxKind.AsExpression: + return ii(Jr); + case re.SyntaxKind.PrefixUnaryExpression: + if (Xe.kind !== re.SyntaxKind.NumericLiteral) + return false; + switch (Jr.operator) { + case re.SyntaxKind.PlusToken: + case re.SyntaxKind.MinusToken: + Xe = Jr; + break e; + default: + return false; + } + case re.SyntaxKind.PropertyAssignment: + if (Jr.initializer !== Xe) + return false; + Xe = Jr.parent; + break; + case re.SyntaxKind.ShorthandPropertyAssignment: + Xe = Jr.parent; + break; + case re.SyntaxKind.ParenthesizedExpression: + case re.SyntaxKind.ArrayLiteralExpression: + case re.SyntaxKind.ObjectLiteralExpression: + case re.SyntaxKind.TemplateExpression: + Xe = Jr; + break; + default: + return false; + } + } + } + M.isInConstContext = mi; + function pe(ae, Xe) { + if (!or(ae)) + return false; + let Jr = Xe.getTypeAtLocation(ae.arguments[2]); + if (Jr.getProperty("value") === void 0) + return Jr.getProperty("set") === void 0; + let ti = Jr.getProperty("writable"); + if (ti === void 0) + return false; + let Ze = ti.valueDeclaration !== void 0 && Ve.isPropertyAssignment(ti.valueDeclaration) ? Xe.getTypeAtLocation(ti.valueDeclaration.initializer) : Xe.getTypeOfSymbolAtLocation(ti, ae.arguments[2]); + return oi.isBooleanLiteralType(Ze, false); + } + M.isReadonlyAssignmentDeclaration = pe; + function or(ae) { + return ae.arguments.length === 3 && Ve.isEntityNameExpression(ae.arguments[0]) && Ve.isNumericOrStringLikeLiteral(ae.arguments[1]) && Ve.isPropertyAccessExpression(ae.expression) && ae.expression.name.escapedText === "defineProperty" && Ve.isIdentifier(ae.expression.expression) && ae.expression.expression.escapedText === "Object"; + } + M.isBindableObjectDefinePropertyCall = or; + function qr(ae) { + return re.isPropertyAccessExpression(ae) && re.isIdentifier(ae.expression) && ae.expression.escapedText === "Symbol"; + } + M.isWellKnownSymbolLiterally = qr; + function si(ae) { + return { displayName: "[Symbol.".concat(ae.name.text, "]"), symbolName: "__@" + ae.name.text }; + } + M.getPropertyNameOfWellKnownSymbol = si; + var Di = ((ae) => { + let [Xe, Jr] = ae; + return Xe < "4" || Xe === "4" && Jr < "3"; + })(re.versionMajorMinor.split(".")); + function wi(ae, Xe) { + let Jr = { known: true, names: [] }; + if (ae = Gi(ae), Di && qr(ae)) + Jr.names.push(si(ae)); + else { + let ti = Xe.getTypeAtLocation(ae); + for (let Ze of oi.unionTypeParts(Xe.getBaseConstraintOfType(ti) || ti)) { + let Sr = oi.getPropertyNameFromType(Ze); + Sr ? Jr.names.push(Sr) : Jr.known = false; + } + } + return Jr; + } + M.getLateBoundPropertyNames = wi; + function Xi(ae, Xe) { + let Jr = O(ae); + return Jr !== void 0 ? { known: true, names: [{ displayName: Jr, symbolName: re.escapeLeadingUnderscores(Jr) }] } : ae.kind === re.SyntaxKind.PrivateIdentifier ? { known: true, names: [{ displayName: ae.text, symbolName: Xe.getSymbolAtLocation(ae).escapedName }] } : wi(ae.expression, Xe); + } + M.getLateBoundPropertyNamesOfPropertyName = Xi; + function et(ae, Xe) { + let Jr = O(ae); + if (Jr !== void 0) + return { displayName: Jr, symbolName: re.escapeLeadingUnderscores(Jr) }; + if (ae.kind === re.SyntaxKind.PrivateIdentifier) + return { displayName: ae.text, symbolName: Xe.getSymbolAtLocation(ae).escapedName }; + let { expression: ti } = ae; + return Di && qr(ti) ? si(ti) : oi.getPropertyNameFromType(Xe.getTypeAtLocation(ti)); + } + M.getSingleLateBoundPropertyNameOfPropertyName = et; + function Gi(ae) { + for (; ae.kind === re.SyntaxKind.ParenthesizedExpression; ) + ae = ae.expression; + return ae; + } + M.unwrapParentheses = Gi; + function Wt(ae) { + return "".concat(ae.negative ? "-" : "").concat(ae.base10Value, "n"); + } + M.formatPseudoBigInt = Wt; + function Zt(ae, Xe) { + let Jr = ae.caseBlock.clauses.filter(Ve.isCaseClause); + if (Jr.length === 0) + return false; + let ti = oi.unionTypeParts(Xe.getTypeAtLocation(ae.expression)); + if (ti.length > Jr.length) + return false; + let Ze = new Set(ti.map(_r)); + if (Ze.has(void 0)) + return false; + let Sr = /* @__PURE__ */ new Set(); + for (let zr of Jr) { + let Wr = Xe.getTypeAtLocation(zr.expression); + if (M.isTypeFlagSet(Wr, re.TypeFlags.Never)) + continue; + let Je = _r(Wr); + if (Ze.has(Je)) + Sr.add(Je); + else if (Je !== "null" && Je !== "undefined") + return false; + } + return Ze.size === Sr.size; + } + M.hasExhaustiveCaseClauses = Zt; + function _r(ae) { + if (M.isTypeFlagSet(ae, re.TypeFlags.Null)) + return "null"; + if (M.isTypeFlagSet(ae, re.TypeFlags.Undefined)) + return "undefined"; + if (M.isTypeFlagSet(ae, re.TypeFlags.NumberLiteral)) + return "".concat(M.isTypeFlagSet(ae, re.TypeFlags.EnumLiteral) ? "enum:" : "").concat(ae.value); + if (M.isTypeFlagSet(ae, re.TypeFlags.StringLiteral)) + return "".concat(M.isTypeFlagSet(ae, re.TypeFlags.EnumLiteral) ? "enum:" : "", "string:").concat(ae.value); + if (M.isTypeFlagSet(ae, re.TypeFlags.BigIntLiteral)) + return Wt(ae.value); + if (Ke.isUniqueESSymbolType(ae)) + return ae.escapedName; + if (oi.isBooleanLiteralType(ae, true)) + return "true"; + if (oi.isBooleanLiteralType(ae, false)) + return "false"; + } + function pi(ae) { + var Xe; + if (((Xe = ae.heritageClauses) === null || Xe === void 0 ? void 0 : Xe[0].token) === re.SyntaxKind.ExtendsKeyword) + return ae.heritageClauses[0].types[0]; + } + M.getBaseOfClassLikeExpression = pi; + } }), ez = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/convert-comments.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(ke, e, a, C) { + C === void 0 && (C = a); + var w = Object.getOwnPropertyDescriptor(e, a); + (!w || ("get" in w ? !e.__esModule : w.writable || w.configurable)) && (w = { enumerable: true, get: function() { + return e[a]; + } }), Object.defineProperty(ke, C, w); + } : function(ke, e, a, C) { + C === void 0 && (C = a), ke[C] = e[a]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(ke, e) { + Object.defineProperty(ke, "default", { enumerable: true, value: e }); + } : function(ke, e) { + ke.default = e; + }), Ke = M && M.__importStar || function(ke) { + if (ke && ke.__esModule) + return ke; + var e = {}; + if (ke != null) + for (var a in ke) + a !== "default" && Object.prototype.hasOwnProperty.call(ke, a) && re(e, ke, a); + return Ve(e, ke), e; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.convertComments = void 0; + var oi = Ke(_u()), kr = n3(), pr = A1(), Lr = k1(); + function ar(ke, e) { + let a = []; + return (0, kr.forEachComment)(ke, (C, w) => { + let B = w.kind == oi.SyntaxKind.SingleLineCommentTrivia ? Lr.AST_TOKEN_TYPES.Line : Lr.AST_TOKEN_TYPES.Block, E = [w.pos, w.end], Q = (0, pr.getLocFor)(E[0], E[1], ke), le = E[0] + 2, N = w.kind === oi.SyntaxKind.SingleLineCommentTrivia ? E[1] - le : E[1] - le - 2; + a.push({ type: B, value: e.slice(le, le + N), range: E, loc: Q }); + }, ke), a; + } + M.convertComments = ar; + } }), o3 = Oa({ "node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }); + var re = { AssignmentExpression: ["left", "right"], AssignmentPattern: ["left", "right"], ArrayExpression: ["elements"], ArrayPattern: ["elements"], ArrowFunctionExpression: ["params", "body"], AwaitExpression: ["argument"], BlockStatement: ["body"], BinaryExpression: ["left", "right"], BreakStatement: ["label"], CallExpression: ["callee", "arguments"], CatchClause: ["param", "body"], ChainExpression: ["expression"], ClassBody: ["body"], ClassDeclaration: ["id", "superClass", "body"], ClassExpression: ["id", "superClass", "body"], ConditionalExpression: ["test", "consequent", "alternate"], ContinueStatement: ["label"], DebuggerStatement: [], DoWhileStatement: ["body", "test"], EmptyStatement: [], ExportAllDeclaration: ["exported", "source"], ExportDefaultDeclaration: ["declaration"], ExportNamedDeclaration: ["declaration", "specifiers", "source"], ExportSpecifier: ["exported", "local"], ExpressionStatement: ["expression"], ExperimentalRestProperty: ["argument"], ExperimentalSpreadProperty: ["argument"], ForStatement: ["init", "test", "update", "body"], ForInStatement: ["left", "right", "body"], ForOfStatement: ["left", "right", "body"], FunctionDeclaration: ["id", "params", "body"], FunctionExpression: ["id", "params", "body"], Identifier: [], IfStatement: ["test", "consequent", "alternate"], ImportDeclaration: ["specifiers", "source"], ImportDefaultSpecifier: ["local"], ImportExpression: ["source"], ImportNamespaceSpecifier: ["local"], ImportSpecifier: ["imported", "local"], JSXAttribute: ["name", "value"], JSXClosingElement: ["name"], JSXElement: ["openingElement", "children", "closingElement"], JSXEmptyExpression: [], JSXExpressionContainer: ["expression"], JSXIdentifier: [], JSXMemberExpression: ["object", "property"], JSXNamespacedName: ["namespace", "name"], JSXOpeningElement: ["name", "attributes"], JSXSpreadAttribute: ["argument"], JSXText: [], JSXFragment: ["openingFragment", "children", "closingFragment"], JSXClosingFragment: [], JSXOpeningFragment: [], Literal: [], LabeledStatement: ["label", "body"], LogicalExpression: ["left", "right"], MemberExpression: ["object", "property"], MetaProperty: ["meta", "property"], MethodDefinition: ["key", "value"], NewExpression: ["callee", "arguments"], ObjectExpression: ["properties"], ObjectPattern: ["properties"], PrivateIdentifier: [], Program: ["body"], Property: ["key", "value"], PropertyDefinition: ["key", "value"], RestElement: ["argument"], ReturnStatement: ["argument"], SequenceExpression: ["expressions"], SpreadElement: ["argument"], StaticBlock: ["body"], Super: [], SwitchStatement: ["discriminant", "cases"], SwitchCase: ["test", "consequent"], TaggedTemplateExpression: ["tag", "quasi"], TemplateElement: [], TemplateLiteral: ["quasis", "expressions"], ThisExpression: [], ThrowStatement: ["argument"], TryStatement: ["block", "handler", "finalizer"], UnaryExpression: ["argument"], UpdateExpression: ["argument"], VariableDeclaration: ["declarations"], VariableDeclarator: ["id", "init"], WhileStatement: ["test", "body"], WithStatement: ["object", "body"], YieldExpression: ["argument"] }, Ve = Object.keys(re); + for (let Lr of Ve) + Object.freeze(re[Lr]); + Object.freeze(re); + var Ke = /* @__PURE__ */ new Set(["parent", "leadingComments", "trailingComments"]); + function oi(Lr) { + return !Ke.has(Lr) && Lr[0] !== "_"; + } + function kr(Lr) { + return Object.keys(Lr).filter(oi); + } + function pr(Lr) { + let ar = Object.assign({}, re); + for (let ke of Object.keys(Lr)) + if (Object.prototype.hasOwnProperty.call(ar, ke)) { + let e = new Set(Lr[ke]); + for (let a of ar[ke]) + e.add(a); + ar[ke] = Object.freeze(Array.from(e)); + } else + ar[ke] = Object.freeze(Array.from(Lr[ke])); + return Object.freeze(ar); + } + M.KEYS = re, M.getKeys = kr, M.unionWith = pr; + } }), rz = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys/dist/get-keys.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.getKeys = void 0; + var re = o3(), Ve = re.getKeys; + M.getKeys = Ve; + } }), iz = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(Lr, ar, ke, e) { + e === void 0 && (e = ke); + var a = Object.getOwnPropertyDescriptor(ar, ke); + (!a || ("get" in a ? !ar.__esModule : a.writable || a.configurable)) && (a = { enumerable: true, get: function() { + return ar[ke]; + } }), Object.defineProperty(Lr, e, a); + } : function(Lr, ar, ke, e) { + e === void 0 && (e = ke), Lr[e] = ar[ke]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(Lr, ar) { + Object.defineProperty(Lr, "default", { enumerable: true, value: ar }); + } : function(Lr, ar) { + Lr.default = ar; + }), Ke = M && M.__importStar || function(Lr) { + if (Lr && Lr.__esModule) + return Lr; + var ar = {}; + if (Lr != null) + for (var ke in Lr) + ke !== "default" && Object.prototype.hasOwnProperty.call(Lr, ke) && re(ar, Lr, ke); + return Ve(ar, Lr), ar; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.visitorKeys = void 0; + var oi = Ke(o3()), kr = { ImportAttribute: ["key", "value"], ArrayPattern: ["decorators", "elements", "typeAnnotation"], ArrowFunctionExpression: ["typeParameters", "params", "returnType", "body"], AssignmentPattern: ["decorators", "left", "right", "typeAnnotation"], CallExpression: ["callee", "typeParameters", "arguments"], ClassDeclaration: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "implements", "body"], ClassExpression: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "implements", "body"], ExportAllDeclaration: ["exported", "source", "assertions"], ExportNamedDeclaration: ["declaration", "specifiers", "source", "assertions"], FunctionDeclaration: ["id", "typeParameters", "params", "returnType", "body"], FunctionExpression: ["id", "typeParameters", "params", "returnType", "body"], Identifier: ["decorators", "typeAnnotation"], ImportDeclaration: ["specifiers", "source", "assertions"], ImportExpression: ["source", "attributes"], MethodDefinition: ["decorators", "key", "value", "typeParameters"], NewExpression: ["callee", "typeParameters", "arguments"], ObjectPattern: ["decorators", "properties", "typeAnnotation"], PropertyDefinition: ["decorators", "key", "typeAnnotation", "value"], RestElement: ["decorators", "argument", "typeAnnotation"], TaggedTemplateExpression: ["tag", "typeParameters", "quasi"], StaticBlock: ["body"], JSXOpeningElement: ["name", "typeParameters", "attributes"], JSXClosingFragment: [], JSXOpeningFragment: [], JSXSpreadChild: ["expression"], Decorator: ["expression"], TSAbstractKeyword: [], TSAbstractMethodDefinition: ["key", "value"], TSAbstractPropertyDefinition: ["decorators", "key", "typeAnnotation"], TSAnyKeyword: [], TSArrayType: ["elementType"], TSAsExpression: ["expression", "typeAnnotation"], TSAsyncKeyword: [], TSBigIntKeyword: [], TSBooleanKeyword: [], TSCallSignatureDeclaration: ["typeParameters", "params", "returnType"], TSClassImplements: ["expression", "typeParameters"], TSConditionalType: ["checkType", "extendsType", "trueType", "falseType"], TSConstructorType: ["typeParameters", "params", "returnType"], TSConstructSignatureDeclaration: ["typeParameters", "params", "returnType"], TSDeclareFunction: ["id", "typeParameters", "params", "returnType", "body"], TSDeclareKeyword: [], TSEmptyBodyFunctionExpression: ["id", "typeParameters", "params", "returnType"], TSEnumDeclaration: ["id", "members"], TSEnumMember: ["id", "initializer"], TSExportAssignment: ["expression"], TSExportKeyword: [], TSExternalModuleReference: ["expression"], TSFunctionType: ["typeParameters", "params", "returnType"], TSImportEqualsDeclaration: ["id", "moduleReference"], TSImportType: ["parameter", "qualifier", "typeParameters"], TSIndexedAccessType: ["indexType", "objectType"], TSIndexSignature: ["parameters", "typeAnnotation"], TSInferType: ["typeParameter"], TSInstantiationExpression: ["expression", "typeParameters"], TSInterfaceBody: ["body"], TSInterfaceDeclaration: ["id", "typeParameters", "extends", "body"], TSInterfaceHeritage: ["expression", "typeParameters"], TSIntersectionType: ["types"], TSIntrinsicKeyword: [], TSLiteralType: ["literal"], TSMappedType: ["nameType", "typeParameter", "typeAnnotation"], TSMethodSignature: ["typeParameters", "key", "params", "returnType"], TSModuleBlock: ["body"], TSModuleDeclaration: ["id", "body"], TSNamedTupleMember: ["label", "elementType"], TSNamespaceExportDeclaration: ["id"], TSNeverKeyword: [], TSNonNullExpression: ["expression"], TSNullKeyword: [], TSNumberKeyword: [], TSObjectKeyword: [], TSOptionalType: ["typeAnnotation"], TSParameterProperty: ["decorators", "parameter"], TSPrivateKeyword: [], TSPropertySignature: ["typeAnnotation", "key", "initializer"], TSProtectedKeyword: [], TSPublicKeyword: [], TSQualifiedName: ["left", "right"], TSReadonlyKeyword: [], TSRestType: ["typeAnnotation"], TSStaticKeyword: [], TSStringKeyword: [], TSSymbolKeyword: [], TSTemplateLiteralType: ["quasis", "types"], TSThisType: [], TSTupleType: ["elementTypes"], TSTypeAliasDeclaration: ["id", "typeParameters", "typeAnnotation"], TSTypeAnnotation: ["typeAnnotation"], TSTypeAssertion: ["typeAnnotation", "expression"], TSTypeLiteral: ["members"], TSTypeOperator: ["typeAnnotation"], TSTypeParameter: ["name", "constraint", "default"], TSTypeParameterDeclaration: ["params"], TSTypeParameterInstantiation: ["params"], TSTypePredicate: ["typeAnnotation", "parameterName"], TSTypeQuery: ["exprName"], TSTypeReference: ["typeName", "typeParameters"], TSUndefinedKeyword: [], TSUnionType: ["types"], TSUnknownKeyword: [], TSVoidKeyword: [] }, pr = oi.unionWith(kr); + M.visitorKeys = pr; + } }), s3 = Oa({ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys/dist/index.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.visitorKeys = M.getKeys = void 0; + var re = rz(); + Object.defineProperty(M, "getKeys", { enumerable: true, get: function() { + return re.getKeys; + } }); + var Ve = iz(); + Object.defineProperty(M, "visitorKeys", { enumerable: true, get: function() { + return Ve.visitorKeys; + } }); + } }), c3 = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.simpleTraverse = void 0; + var re = s3(); + function Ve(pr) { + return pr !== null && typeof pr == "object" && typeof pr.type == "string"; + } + function Ke(pr, Lr) { + let ar = pr[Lr.type]; + return ar != null ? ar : []; + } + var oi = class { + constructor(pr) { + let Lr = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + this.allVisitorKeys = re.visitorKeys, this.selectors = pr, this.setParentPointers = Lr; + } + traverse(pr, Lr) { + if (!Ve(pr)) + return; + this.setParentPointers && (pr.parent = Lr), "enter" in this.selectors ? this.selectors.enter(pr, Lr) : pr.type in this.selectors && this.selectors[pr.type](pr, Lr); + let ar = Ke(this.allVisitorKeys, pr); + if (!(ar.length < 1)) + for (let ke of ar) { + let e = pr[ke]; + if (Array.isArray(e)) + for (let a of e) + this.traverse(a, pr); + else + this.traverse(e, pr); + } + } + }; + function kr(pr, Lr) { + let ar = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; + new oi(Lr, ar).traverse(pr, void 0); + } + M.simpleTraverse = kr; + } }), tz = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/ast-converter.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.astConverter = void 0; + var re = e3(), Ve = ez(), Ke = A1(), oi = c3(); + function kr(pr, Lr, ar) { + let { parseDiagnostics: ke } = pr; + if (ke.length) + throw (0, re.convertError)(ke[0]); + let e = new re.Converter(pr, { errorOnUnknownASTType: Lr.errorOnUnknownASTType || false, shouldPreserveNodeMaps: ar }), a = e.convertProgram(); + (!Lr.range || !Lr.loc) && (0, oi.simpleTraverse)(a, { enter: (w) => { + Lr.range || delete w.range, Lr.loc || delete w.loc; + } }), Lr.tokens && (a.tokens = (0, Ke.convertTokens)(pr)), Lr.comment && (a.comments = (0, Ve.convertComments)(pr, Lr.code)); + let C = e.getASTMaps(); + return { estree: a, astMaps: C }; + } + M.astConverter = kr; + } }), Mv = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(p, m, G, oe) { + oe === void 0 && (oe = G); + var f = Object.getOwnPropertyDescriptor(m, G); + (!f || ("get" in f ? !m.__esModule : f.writable || f.configurable)) && (f = { enumerable: true, get: function() { + return m[G]; + } }), Object.defineProperty(p, oe, f); + } : function(p, m, G, oe) { + oe === void 0 && (oe = G), p[oe] = m[G]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(p, m) { + Object.defineProperty(p, "default", { enumerable: true, value: m }); + } : function(p, m) { + p.default = m; + }), Ke = M && M.__importStar || function(p) { + if (p && p.__esModule) + return p; + var m = {}; + if (p != null) + for (var G in p) + G !== "default" && Object.prototype.hasOwnProperty.call(p, G) && re(m, p, G); + return Ve(m, p), m; + }, oi = M && M.__importDefault || function(p) { + return p && p.__esModule ? p : { default: p }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.getModuleResolver = M.getAstFromProgram = M.getCanonicalFileName = M.ensureAbsolutePath = M.createDefaultCompilerOptionsFromExtra = M.canonicalDirname = M.CORE_COMPILER_OPTIONS = void 0; + var kr = oi(Fv()), pr = Ke(_u()), Lr = { noEmit: true, noUnusedLocals: true, noUnusedParameters: true }; + M.CORE_COMPILER_OPTIONS = Lr; + var ar = Object.assign(Object.assign({}, Lr), { allowNonTsExtensions: true, allowJs: true, checkJs: true }); + function ke(p) { + return p.debugLevel.has("typescript") ? Object.assign(Object.assign({}, ar), { extendedDiagnostics: true }) : ar; + } + M.createDefaultCompilerOptionsFromExtra = ke; + var e = pr.sys !== void 0 ? pr.sys.useCaseSensitiveFileNames : true, a = e ? (p) => p : (p) => p.toLowerCase(); + function C(p) { + let m = kr.default.normalize(p); + return m.endsWith(kr.default.sep) && (m = m.slice(0, -1)), a(m); + } + M.getCanonicalFileName = C; + function w(p, m) { + return kr.default.isAbsolute(p) ? p : kr.default.join(m.tsconfigRootDir || "/prettier-security-dirname-placeholder", p); + } + M.ensureAbsolutePath = w; + function B(p) { + return kr.default.dirname(p); + } + M.canonicalDirname = B; + var E = [pr.Extension.Dts, pr.Extension.Dcts, pr.Extension.Dmts]; + function Q(p) { + var m; + return p ? (m = E.find((G) => p.endsWith(G))) !== null && m !== void 0 ? m : kr.default.extname(p) : null; + } + function le(p, m) { + let G = p.getSourceFile(m.filePath), oe = Q(m.filePath), f = Q(G == null ? void 0 : G.fileName); + if (oe === f) + return G && { ast: G, program: p }; + } + M.getAstFromProgram = le; + function N(p) { + let m; + try { + throw new Error("Dynamic require is not supported"); + } catch { + let oe = ["Could not find the provided parserOptions.moduleResolver.", "Hint: use an absolute path if you are not in control over where the ESLint instance runs."]; + throw new Error(oe.join(` +`)); + } + return m; + } + M.getModuleResolver = N; + } }), az = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/createDefaultProgram.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(a, C, w, B) { + B === void 0 && (B = w); + var E = Object.getOwnPropertyDescriptor(C, w); + (!E || ("get" in E ? !C.__esModule : E.writable || E.configurable)) && (E = { enumerable: true, get: function() { + return C[w]; + } }), Object.defineProperty(a, B, E); + } : function(a, C, w, B) { + B === void 0 && (B = w), a[B] = C[w]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(a, C) { + Object.defineProperty(a, "default", { enumerable: true, value: C }); + } : function(a, C) { + a.default = C; + }), Ke = M && M.__importStar || function(a) { + if (a && a.__esModule) + return a; + var C = {}; + if (a != null) + for (var w in a) + w !== "default" && Object.prototype.hasOwnProperty.call(a, w) && re(C, a, w); + return Ve(C, a), C; + }, oi = M && M.__importDefault || function(a) { + return a && a.__esModule ? a : { default: a }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.createDefaultProgram = void 0; + var kr = oi(wm()), pr = oi(Fv()), Lr = Ke(_u()), ar = Mv(), ke = (0, kr.default)("typescript-eslint:typescript-estree:createDefaultProgram"); + function e(a, C) { + if (ke("Getting default program for: %s", C.filePath || "unnamed file"), !C.projects || C.projects.length !== 1) + return; + let w = C.projects[0], B = Lr.getParsedCommandLineOfConfigFile(w, (0, ar.createDefaultCompilerOptionsFromExtra)(C), Object.assign(Object.assign({}, Lr.sys), { onUnRecoverableConfigFileDiagnostic: () => { + } })); + if (!B) + return; + let E = Lr.createCompilerHost(B.options, true); + C.moduleResolver && (E.resolveModuleNames = (0, ar.getModuleResolver)(C.moduleResolver).resolveModuleNames); + let Q = E.readFile; + E.readFile = (p) => pr.default.normalize(p) === pr.default.normalize(C.filePath) ? a : Q(p); + let le = Lr.createProgram([C.filePath], B.options, E), N = le.getSourceFile(C.filePath); + return N && { ast: N, program: le }; + } + M.createDefaultProgram = e; + } }), rx = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/getScriptKind.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(ke, e, a, C) { + C === void 0 && (C = a); + var w = Object.getOwnPropertyDescriptor(e, a); + (!w || ("get" in w ? !e.__esModule : w.writable || w.configurable)) && (w = { enumerable: true, get: function() { + return e[a]; + } }), Object.defineProperty(ke, C, w); + } : function(ke, e, a, C) { + C === void 0 && (C = a), ke[C] = e[a]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(ke, e) { + Object.defineProperty(ke, "default", { enumerable: true, value: e }); + } : function(ke, e) { + ke.default = e; + }), Ke = M && M.__importStar || function(ke) { + if (ke && ke.__esModule) + return ke; + var e = {}; + if (ke != null) + for (var a in ke) + a !== "default" && Object.prototype.hasOwnProperty.call(ke, a) && re(e, ke, a); + return Ve(e, ke), e; + }, oi = M && M.__importDefault || function(ke) { + return ke && ke.__esModule ? ke : { default: ke }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.getLanguageVariant = M.getScriptKind = void 0; + var kr = oi(Fv()), pr = Ke(_u()); + function Lr(ke, e) { + switch (kr.default.extname(ke).toLowerCase()) { + case pr.Extension.Js: + case pr.Extension.Cjs: + case pr.Extension.Mjs: + return pr.ScriptKind.JS; + case pr.Extension.Jsx: + return pr.ScriptKind.JSX; + case pr.Extension.Ts: + case pr.Extension.Cts: + case pr.Extension.Mts: + return pr.ScriptKind.TS; + case pr.Extension.Tsx: + return pr.ScriptKind.TSX; + case pr.Extension.Json: + return pr.ScriptKind.JSON; + default: + return e ? pr.ScriptKind.TSX : pr.ScriptKind.TS; + } + } + M.getScriptKind = Lr; + function ar(ke) { + switch (ke) { + case pr.ScriptKind.TSX: + case pr.ScriptKind.JSX: + case pr.ScriptKind.JS: + case pr.ScriptKind.JSON: + return pr.LanguageVariant.JSX; + default: + return pr.LanguageVariant.Standard; + } + } + M.getLanguageVariant = ar; + } }), nz = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/createIsolatedProgram.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(a, C, w, B) { + B === void 0 && (B = w); + var E = Object.getOwnPropertyDescriptor(C, w); + (!E || ("get" in E ? !C.__esModule : E.writable || E.configurable)) && (E = { enumerable: true, get: function() { + return C[w]; + } }), Object.defineProperty(a, B, E); + } : function(a, C, w, B) { + B === void 0 && (B = w), a[B] = C[w]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(a, C) { + Object.defineProperty(a, "default", { enumerable: true, value: C }); + } : function(a, C) { + a.default = C; + }), Ke = M && M.__importStar || function(a) { + if (a && a.__esModule) + return a; + var C = {}; + if (a != null) + for (var w in a) + w !== "default" && Object.prototype.hasOwnProperty.call(a, w) && re(C, a, w); + return Ve(C, a), C; + }, oi = M && M.__importDefault || function(a) { + return a && a.__esModule ? a : { default: a }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.createIsolatedProgram = void 0; + var kr = oi(wm()), pr = Ke(_u()), Lr = Mv(), ar = rx(), ke = (0, kr.default)("typescript-eslint:typescript-estree:createIsolatedProgram"); + function e(a, C) { + ke("Getting isolated program in %s mode for: %s", C.jsx ? "TSX" : "TS", C.filePath); + let w = { fileExists() { + return true; + }, getCanonicalFileName() { + return C.filePath; + }, getCurrentDirectory() { + return ""; + }, getDirectories() { + return []; + }, getDefaultLibFileName() { + return "lib.d.ts"; + }, getNewLine() { + return ` +`; + }, getSourceFile(Q) { + return pr.createSourceFile(Q, a, pr.ScriptTarget.Latest, true, (0, ar.getScriptKind)(C.filePath, C.jsx)); + }, readFile() { + }, useCaseSensitiveFileNames() { + return true; + }, writeFile() { + return null; + } }, B = pr.createProgram([C.filePath], Object.assign({ noResolve: true, target: pr.ScriptTarget.Latest, jsx: C.jsx ? pr.JsxEmit.Preserve : void 0 }, (0, Lr.createDefaultCompilerOptionsFromExtra)(C)), w), E = B.getSourceFile(C.filePath); + if (!E) + throw new Error("Expected an ast to be returned for the single-file isolated program."); + return { ast: E, program: B }; + } + M.createIsolatedProgram = e; + } }), u3 = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(J, ie, R, q) { + q === void 0 && (q = R); + var O = Object.getOwnPropertyDescriptor(ie, R); + (!O || ("get" in O ? !ie.__esModule : O.writable || O.configurable)) && (O = { enumerable: true, get: function() { + return ie[R]; + } }), Object.defineProperty(J, q, O); + } : function(J, ie, R, q) { + q === void 0 && (q = R), J[q] = ie[R]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(J, ie) { + Object.defineProperty(J, "default", { enumerable: true, value: ie }); + } : function(J, ie) { + J.default = ie; + }), Ke = M && M.__importStar || function(J) { + if (J && J.__esModule) + return J; + var ie = {}; + if (J != null) + for (var R in J) + R !== "default" && Object.prototype.hasOwnProperty.call(J, R) && re(ie, J, R); + return Ve(ie, J), ie; + }, oi = M && M.__importDefault || function(J) { + return J && J.__esModule ? J : { default: J }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.getProgramsForProjects = M.createWatchProgram = M.clearWatchCaches = void 0; + var kr = oi(wm()), pr = oi(ex()), Lr = oi(QT()), ar = Ke(_u()), ke = Mv(), e = (0, kr.default)("typescript-eslint:typescript-estree:createWatchProgram"), a = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Map(), Q = /* @__PURE__ */ new Map(); + function le() { + a.clear(), C.clear(), w.clear(), Q.clear(), B.clear(), E.clear(); + } + M.clearWatchCaches = le; + function N(J) { + return (ie, R) => { + let q = (0, ke.getCanonicalFileName)(ie), O = (() => { + let ve = J.get(q); + return ve || (ve = /* @__PURE__ */ new Set(), J.set(q, ve)), ve; + })(); + return O.add(R), { close: () => { + O.delete(R); + } }; + }; + } + var p = { code: "", filePath: "" }; + function m(J) { + throw new Error(ar.flattenDiagnosticMessageText(J.messageText, ar.sys.newLine)); + } + function G(J) { + var ie; + return !((ie = ar.sys) === null || ie === void 0) && ie.createHash ? ar.sys.createHash(J) : J; + } + function oe(J, ie, R) { + let q = R.EXPERIMENTAL_useSourceOfProjectReferenceRedirect ? new Set(ie.getSourceFiles().map((O) => (0, ke.getCanonicalFileName)(O.fileName))) : new Set(ie.getRootFileNames().map((O) => (0, ke.getCanonicalFileName)(O))); + return B.set(J, q), q; + } + function f(J, ie, R) { + let q = (0, ke.getCanonicalFileName)(ie), O = []; + p.code = J, p.filePath = q; + let ve = C.get(q), ee = G(J); + Q.get(q) !== ee && ve && ve.size > 0 && ve.forEach((he) => he(q, ar.FileWatcherEventKind.Changed)); + for (let [he, F] of a.entries()) { + let x = B.get(he), X = null; + if (x || (X = F.getProgram().getProgram(), x = oe(he, X, R)), x.has(q)) + return e("Found existing program for file. %s", q), X = X != null ? X : F.getProgram().getProgram(), X.getTypeChecker(), [X]; + } + e("File did not belong to any existing programs, moving to create/update. %s", q); + for (let he of R.projects) { + let F = a.get(he); + if (F) { + let A = se(F, q, he); + if (!A) + continue; + if (A.getTypeChecker(), oe(he, A, R).has(q)) + return e("Found updated program for file. %s", q), [A]; + O.push(A); + continue; + } + let x = K(he, R); + a.set(he, x); + let X = x.getProgram().getProgram(); + if (X.getTypeChecker(), oe(he, X, R).has(q)) + return e("Found program for file. %s", q), [X]; + O.push(X); + } + return O; + } + M.getProgramsForProjects = f; + var T = Lr.default.satisfies(ar.version, ">=3.9.0-beta", { includePrerelease: true }); + function K(J, ie) { + e("Creating watch program for %s.", J); + let R = ar.createWatchCompilerHost(J, (0, ke.createDefaultCompilerOptionsFromExtra)(ie), ar.sys, ar.createAbstractBuilder, m, () => { + }); + ie.moduleResolver && (R.resolveModuleNames = (0, ke.getModuleResolver)(ie.moduleResolver).resolveModuleNames); + let q = R.readFile; + R.readFile = (he, F) => { + let x = (0, ke.getCanonicalFileName)(he), X = x === p.filePath ? p.code : q(x, F); + return X !== void 0 && Q.set(x, G(X)), X; + }, R.onUnRecoverableConfigFileDiagnostic = m, R.afterProgramCreate = (he) => { + let F = he.getConfigFileParsingDiagnostics().filter((x) => x.category === ar.DiagnosticCategory.Error && x.code !== 18003); + F.length > 0 && m(F[0]); + }, R.watchFile = N(C), R.watchDirectory = N(w); + let O = R.onCachedDirectoryStructureHostCreate; + R.onCachedDirectoryStructureHostCreate = (he) => { + let F = he.readDirectory; + he.readDirectory = (x, X, $, A, y) => F(x, X ? X.concat(ie.extraFileExtensions) : void 0, $, A, y), O(he); + }, R.extraFileExtensions = ie.extraFileExtensions.map((he) => ({ extension: he, isMixedContent: true, scriptKind: ar.ScriptKind.Deferred })), R.trace = e, R.useSourceOfProjectReferenceRedirect = () => ie.EXPERIMENTAL_useSourceOfProjectReferenceRedirect; + let ve; + T ? (R.setTimeout = void 0, R.clearTimeout = void 0) : (e("Running without timeout fix"), R.setTimeout = function(he, F) { + for (var x = arguments.length, X = new Array(x > 2 ? x - 2 : 0), $ = 2; $ < x; $++) + X[$ - 2] = arguments[$]; + return ve = he.bind(void 0, ...X), ve; + }, R.clearTimeout = () => { + ve = void 0; + }); + let ee = ar.createWatchProgram(R); + if (!T) { + let he = ee.getProgram; + ee.getProgram = () => (ve && ve(), ve = void 0, he.call(ee)); + } + return ee; + } + M.createWatchProgram = K; + function b(J) { + let R = pr.default.statSync(J).mtimeMs, q = E.get(J); + return E.set(J, R), q === void 0 ? false : Math.abs(q - R) > Number.EPSILON; + } + function se(J, ie, R) { + let q = J.getProgram().getProgram(); + if (Eu.env.TSESTREE_NO_INVALIDATION === "true") + return q; + b(R) && (e("tsconfig has changed - triggering program update. %s", R), C.get(R).forEach((A) => A(R, ar.FileWatcherEventKind.Changed)), B.delete(R)); + let O = q.getSourceFile(ie); + if (O) + return q; + e("File was not found in program - triggering folder update. %s", ie); + let ve = (0, ke.canonicalDirname)(ie), ee = null, he = ve, F = false; + for (; ee !== he; ) { + ee = he; + let A = w.get(ee); + A && (A.forEach((y) => { + ve !== ee && y(ve, ar.FileWatcherEventKind.Changed), y(ee, ar.FileWatcherEventKind.Changed); + }), F = true), he = (0, ke.canonicalDirname)(ee); + } + if (!F) + return e("No callback found for file, not part of this program. %s", ie), null; + if (B.delete(R), q = J.getProgram().getProgram(), O = q.getSourceFile(ie), O) + return q; + e("File was still not found in program after directory update - checking file deletions. %s", ie); + let X = q.getRootFileNames().find((A) => !pr.default.existsSync(A)); + if (!X) + return null; + let $ = C.get((0, ke.getCanonicalFileName)(X)); + return $ ? (e("Marking file as deleted. %s", X), $.forEach((A) => A(X, ar.FileWatcherEventKind.Deleted)), B.delete(R), q = J.getProgram().getProgram(), O = q.getSourceFile(ie), O ? q : (e("File was still not found in program after deletion check, assuming it is not part of this program. %s", ie), null)) : (e("Could not find watch callbacks for root file. %s", X), q); + } + } }), oz = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/createProjectProgram.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(B, E, Q, le) { + le === void 0 && (le = Q); + var N = Object.getOwnPropertyDescriptor(E, Q); + (!N || ("get" in N ? !E.__esModule : N.writable || N.configurable)) && (N = { enumerable: true, get: function() { + return E[Q]; + } }), Object.defineProperty(B, le, N); + } : function(B, E, Q, le) { + le === void 0 && (le = Q), B[le] = E[Q]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(B, E) { + Object.defineProperty(B, "default", { enumerable: true, value: E }); + } : function(B, E) { + B.default = E; + }), Ke = M && M.__importStar || function(B) { + if (B && B.__esModule) + return B; + var E = {}; + if (B != null) + for (var Q in B) + Q !== "default" && Object.prototype.hasOwnProperty.call(B, Q) && re(E, B, Q); + return Ve(E, B), E; + }, oi = M && M.__importDefault || function(B) { + return B && B.__esModule ? B : { default: B }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.createProjectProgram = void 0; + var kr = oi(wm()), pr = oi(Fv()), Lr = Ke(_u()), ar = u3(), ke = A1(), e = Mv(), a = (0, kr.default)("typescript-eslint:typescript-estree:createProjectProgram"), C = [Lr.Extension.Ts, Lr.Extension.Tsx, Lr.Extension.Js, Lr.Extension.Jsx, Lr.Extension.Mjs, Lr.Extension.Mts, Lr.Extension.Cjs, Lr.Extension.Cts]; + function w(B, E, Q) { + a("Creating project program for: %s", Q.filePath); + let le = (0, ke.firstDefined)((0, ar.getProgramsForProjects)(B, Q.filePath, Q), (N) => (0, e.getAstFromProgram)(N, Q)); + if (!le && !E) { + let N = ['"parserOptions.project" has been set for @typescript-eslint/parser.', "The file does not match your project config: ".concat(pr.default.relative(Q.tsconfigRootDir || "/prettier-security-dirname-placeholder", Q.filePath), ".")], p = false, m = Q.extraFileExtensions || []; + m.forEach((oe) => { + oe.startsWith(".") || N.push('Found unexpected extension "'.concat(oe, '" specified with the "extraFileExtensions" option. Did you mean ".').concat(oe, '"?')), C.includes(oe) && N.push('You unnecessarily included the extension "'.concat(oe, '" with the "extraFileExtensions" option. This extension is already handled by the parser by default.')); + }); + let G = pr.default.extname(Q.filePath); + if (!C.includes(G)) { + let oe = "The extension for the file (".concat(G, ") is non-standard"); + m.length > 0 ? m.includes(G) || (N.push("".concat(oe, '. It should be added to your existing "parserOptions.extraFileExtensions".')), p = true) : (N.push("".concat(oe, '. You should add "parserOptions.extraFileExtensions" to your config.')), p = true); + } + throw p || N.push("The file must be included in at least one of the projects provided."), new Error(N.join(` +`)); + } + return le; + } + M.createProjectProgram = w; + } }), sz = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/createSourceFile.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(e, a, C, w) { + w === void 0 && (w = C); + var B = Object.getOwnPropertyDescriptor(a, C); + (!B || ("get" in B ? !a.__esModule : B.writable || B.configurable)) && (B = { enumerable: true, get: function() { + return a[C]; + } }), Object.defineProperty(e, w, B); + } : function(e, a, C, w) { + w === void 0 && (w = C), e[w] = a[C]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(e, a) { + Object.defineProperty(e, "default", { enumerable: true, value: a }); + } : function(e, a) { + e.default = a; + }), Ke = M && M.__importStar || function(e) { + if (e && e.__esModule) + return e; + var a = {}; + if (e != null) + for (var C in e) + C !== "default" && Object.prototype.hasOwnProperty.call(e, C) && re(a, e, C); + return Ve(a, e), a; + }, oi = M && M.__importDefault || function(e) { + return e && e.__esModule ? e : { default: e }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.createSourceFile = void 0; + var kr = oi(wm()), pr = Ke(_u()), Lr = rx(), ar = (0, kr.default)("typescript-eslint:typescript-estree:createSourceFile"); + function ke(e, a) { + return ar("Getting AST without type information in %s mode for: %s", a.jsx ? "TSX" : "TS", a.filePath), pr.createSourceFile(a.filePath, e, pr.ScriptTarget.Latest, true, (0, Lr.getScriptKind)(a.filePath, a.jsx)); + } + M.createSourceFile = ke; + } }), cz = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/semantic-or-syntactic-errors.js"(M) { + "use strict"; + Ea(), Object.defineProperty(M, "__esModule", { value: true }), M.getFirstSemanticOrSyntacticError = void 0; + var re = _u(); + function Ve(kr, pr) { + try { + let Lr = Ke(kr.getSyntacticDiagnostics(pr)); + if (Lr.length) + return oi(Lr[0]); + let ar = Ke(kr.getSemanticDiagnostics(pr)); + return ar.length ? oi(ar[0]) : void 0; + } catch (Lr) { + console.warn('Warning From TSC: "'.concat(Lr.message)); + return; + } + } + M.getFirstSemanticOrSyntacticError = Ve; + function Ke(kr) { + return kr.filter((pr) => { + switch (pr.code) { + case 1013: + case 1014: + case 1044: + case 1045: + case 1048: + case 1049: + case 1070: + case 1071: + case 1085: + case 1090: + case 1096: + case 1097: + case 1098: + case 1099: + case 1117: + case 1121: + case 1123: + case 1141: + case 1162: + case 1164: + case 1172: + case 1173: + case 1175: + case 1176: + case 1190: + case 1196: + case 1200: + case 1206: + case 1211: + case 1242: + case 1246: + case 1255: + case 1308: + case 2364: + case 2369: + case 2452: + case 2462: + case 8017: + case 17012: + case 17013: + return true; + } + return false; + }); + } + function oi(kr) { + return Object.assign(Object.assign({}, kr), { message: (0, re.flattenDiagnosticMessageText)(kr.messageText, re.sys.newLine) }); + } + } }), l3 = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/create-program/useProvidedPrograms.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(B, E, Q, le) { + le === void 0 && (le = Q); + var N = Object.getOwnPropertyDescriptor(E, Q); + (!N || ("get" in N ? !E.__esModule : N.writable || N.configurable)) && (N = { enumerable: true, get: function() { + return E[Q]; + } }), Object.defineProperty(B, le, N); + } : function(B, E, Q, le) { + le === void 0 && (le = Q), B[le] = E[Q]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(B, E) { + Object.defineProperty(B, "default", { enumerable: true, value: E }); + } : function(B, E) { + B.default = E; + }), Ke = M && M.__importStar || function(B) { + if (B && B.__esModule) + return B; + var E = {}; + if (B != null) + for (var Q in B) + Q !== "default" && Object.prototype.hasOwnProperty.call(B, Q) && re(E, B, Q); + return Ve(E, B), E; + }, oi = M && M.__importDefault || function(B) { + return B && B.__esModule ? B : { default: B }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.createProgramFromConfigFile = M.useProvidedPrograms = void 0; + var kr = oi(wm()), pr = Ke(ex()), Lr = Ke(Fv()), ar = Ke(_u()), ke = Mv(), e = (0, kr.default)("typescript-eslint:typescript-estree:useProvidedProgram"); + function a(B, E) { + e("Retrieving ast for %s from provided program instance(s)", E.filePath); + let Q; + for (let le of B) + if (Q = (0, ke.getAstFromProgram)(le, E), Q) + break; + if (!Q) { + let le = Lr.relative(E.tsconfigRootDir || "/prettier-security-dirname-placeholder", E.filePath), N = ['"parserOptions.programs" has been provided for @typescript-eslint/parser.', "The file was not found in any of the provided program instance(s): ".concat(le)]; + throw new Error(N.join(` +`)); + } + return Q.program.getTypeChecker(), Q; + } + M.useProvidedPrograms = a; + function C(B, E) { + if (ar.sys === void 0) + throw new Error("`createProgramFromConfigFile` is only supported in a Node-like environment."); + let le = ar.getParsedCommandLineOfConfigFile(B, ke.CORE_COMPILER_OPTIONS, { onUnRecoverableConfigFileDiagnostic: (p) => { + throw new Error(w([p])); + }, fileExists: pr.existsSync, getCurrentDirectory: () => E && Lr.resolve(E) || "/prettier-security-dirname-placeholder", readDirectory: ar.sys.readDirectory, readFile: (p) => pr.readFileSync(p, "utf-8"), useCaseSensitiveFileNames: ar.sys.useCaseSensitiveFileNames }); + if (le.errors.length) + throw new Error(w(le.errors)); + let N = ar.createCompilerHost(le.options, true); + return ar.createProgram(le.fileNames, le.options, N); + } + M.createProgramFromConfigFile = C; + function w(B) { + return ar.formatDiagnostics(B, { getCanonicalFileName: (E) => E, getCurrentDirectory: Eu.cwd, getNewLine: () => ` +` }); + } + } }), uz = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/parser.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(y, V, L, P) { + P === void 0 && (P = L); + var k = Object.getOwnPropertyDescriptor(V, L); + (!k || ("get" in k ? !V.__esModule : k.writable || k.configurable)) && (k = { enumerable: true, get: function() { + return V[L]; + } }), Object.defineProperty(y, P, k); + } : function(y, V, L, P) { + P === void 0 && (P = L), y[P] = V[L]; + }), Ve = M && M.__setModuleDefault || (Object.create ? function(y, V) { + Object.defineProperty(y, "default", { enumerable: true, value: V }); + } : function(y, V) { + y.default = V; + }), Ke = M && M.__importStar || function(y) { + if (y && y.__esModule) + return y; + var V = {}; + if (y != null) + for (var L in y) + L !== "default" && Object.prototype.hasOwnProperty.call(y, L) && re(V, y, L); + return Ve(V, y), V; + }, oi = M && M.__importDefault || function(y) { + return y && y.__esModule ? y : { default: y }; + }; + Object.defineProperty(M, "__esModule", { value: true }), M.clearParseAndGenerateServicesCalls = M.clearProgramCache = M.parseWithNodeMaps = M.parseAndGenerateServices = M.parse = void 0; + var kr = oi(wm()), pr = oi(Vj()), Lr = oi(QT()), ar = Fv(), ke = Ke(_u()), e = tz(), a = e3(), C = az(), w = nz(), B = oz(), E = sz(), Q = cz(), le = Mv(), N = l3(), p = (0, kr.default)("typescript-eslint:typescript-estree:parser"), m = ">=3.3.1 <4.8.0", G = [], oe = ke.version, f = Lr.default.satisfies(oe, [m].concat(G).join(" || ")), T, K = false, b = /* @__PURE__ */ new Map(); + function se() { + b.clear(); + } + M.clearProgramCache = se; + function J(y) { + return typeof y != "string" ? String(y) : y; + } + function ie(y, V, L, P) { + return V && (0, N.useProvidedPrograms)(V, T) || L && (0, B.createProjectProgram)(y, P, T) || L && P && (0, C.createDefaultProgram)(y, T) || (0, w.createIsolatedProgram)(y, T); + } + function R() { + let { jsx: y } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return y ? "estree.tsx" : "estree.ts"; + } + function q() { + T = { code: "", comment: false, comments: [], createDefaultProgram: false, debugLevel: /* @__PURE__ */ new Set(), errorOnTypeScriptSyntacticAndSemanticIssues: false, errorOnUnknownASTType: false, EXPERIMENTAL_useSourceOfProjectReferenceRedirect: false, extraFileExtensions: [], filePath: R(), jsx: false, loc: false, log: console.log, preserveNodeMaps: true, programs: null, projects: [], range: false, strict: false, tokens: null, tsconfigRootDir: "/prettier-security-dirname-placeholder", singleRun: false, moduleResolver: "" }; + } + function O(y) { + var V; + if (y.debugLevel === true ? T.debugLevel = /* @__PURE__ */ new Set(["typescript-eslint"]) : Array.isArray(y.debugLevel) && (T.debugLevel = new Set(y.debugLevel)), T.debugLevel.size > 0) { + let L = []; + T.debugLevel.has("typescript-eslint") && L.push("typescript-eslint:*"), (T.debugLevel.has("eslint") || kr.default.enabled("eslint:*,-eslint:code-path")) && L.push("eslint:*,-eslint:code-path"), kr.default.enable(L.join(",")); + } + if (T.range = typeof y.range == "boolean" && y.range, T.loc = typeof y.loc == "boolean" && y.loc, typeof y.tokens == "boolean" && y.tokens && (T.tokens = []), typeof y.comment == "boolean" && y.comment && (T.comment = true, T.comments = []), typeof y.jsx != "boolean" ? T.jsx = false : T.jsx = y.jsx, typeof y.filePath == "string" && y.filePath !== "" ? T.filePath = y.filePath : T.filePath = R(T), typeof y.errorOnUnknownASTType == "boolean" && y.errorOnUnknownASTType && (T.errorOnUnknownASTType = true), typeof y.loggerFn == "function" ? T.log = y.loggerFn : y.loggerFn === false && (T.log = () => { + }), typeof y.tsconfigRootDir == "string" && (T.tsconfigRootDir = y.tsconfigRootDir), T.filePath = (0, le.ensureAbsolutePath)(T.filePath, T), Array.isArray(y.programs)) { + if (!y.programs.length) + throw new Error("You have set parserOptions.programs to an empty array. This will cause all files to not be found in existing programs. Either provide one or more existing TypeScript Program instances in the array, or remove the parserOptions.programs setting."); + T.programs = y.programs, p("parserOptions.programs was provided, so parserOptions.project will be ignored."); + } + if (!T.programs) { + let L = ((V = y.projectFolderIgnoreList) !== null && V !== void 0 ? V : ["**/node_modules/**"]).reduce((P, k) => (typeof k == "string" && P.push(k), P), []).map((P) => P.startsWith("!") ? P : "!".concat(P)); + T.projects = []; + } + Array.isArray(y.extraFileExtensions) && y.extraFileExtensions.every((L) => typeof L == "string") && (T.extraFileExtensions = y.extraFileExtensions), typeof y.preserveNodeMaps == "boolean" && (T.preserveNodeMaps = y.preserveNodeMaps), T.createDefaultProgram = typeof y.createDefaultProgram == "boolean" && y.createDefaultProgram, T.EXPERIMENTAL_useSourceOfProjectReferenceRedirect = typeof y.EXPERIMENTAL_useSourceOfProjectReferenceRedirect == "boolean" && y.EXPERIMENTAL_useSourceOfProjectReferenceRedirect, typeof y.moduleResolver == "string" && (T.moduleResolver = y.moduleResolver); + } + function ve() { + var y; + if (!f && !K) { + if (typeof Eu > "u" ? false : (y = Eu.stdout) === null || y === void 0 ? void 0 : y.isTTY) { + let L = "=============", P = [L, "WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.", "You may find that it works just fine, or you may not.", "SUPPORTED TYPESCRIPT VERSIONS: ".concat(m), "YOUR TYPESCRIPT VERSION: ".concat(oe), "Please only submit bug reports when using the officially supported version.", L]; + T.log(P.join(` + +`)); + } + K = true; + } + } + function ee(y) { + if (Eu.env.TSESTREE_SINGLE_RUN === "false") { + T.singleRun = false; + return; + } + if (Eu.env.TSESTREE_SINGLE_RUN === "true") { + T.singleRun = true; + return; + } + if (y != null && y.allowAutomaticSingleRunInference && (Eu.env.CI === "true" || Eu.argv[1].endsWith((0, ar.normalize)("node_modules/.bin/eslint")))) { + T.singleRun = true; + return; + } + T.singleRun = false; + } + function he(y, V) { + let { ast: L } = F(y, V, false); + return L; + } + M.parse = he; + function F(y, V, L) { + if (q(), V != null && V.errorOnTypeScriptSyntacticAndSemanticIssues) + throw new Error('"errorOnTypeScriptSyntacticAndSemanticIssues" is only supported for parseAndGenerateServices()'); + y = J(y), T.code = y, typeof V < "u" && O(V), ve(), ee(V); + let P = (0, E.createSourceFile)(y, T), { estree: k, astMaps: Y } = (0, e.astConverter)(P, T, L); + return { ast: k, esTreeNodeToTSNodeMap: Y.esTreeNodeToTSNodeMap, tsNodeToESTreeNodeMap: Y.tsNodeToESTreeNodeMap }; + } + function x(y, V) { + return F(y, V, true); + } + M.parseWithNodeMaps = x; + var X = {}; + function $() { + X = {}; + } + M.clearParseAndGenerateServicesCalls = $; + function A(y, V) { + var L; + q(), y = J(y), T.code = y, typeof V < "u" && (O(V), typeof V.errorOnTypeScriptSyntacticAndSemanticIssues == "boolean" && V.errorOnTypeScriptSyntacticAndSemanticIssues && (T.errorOnTypeScriptSyntacticAndSemanticIssues = true)), ve(), ee(V), T.singleRun && !T.programs && ((L = T.projects) === null || L === void 0 ? void 0 : L.length) > 0 && (T.programs = { *[Symbol.iterator]() { + for (let I of T.projects) { + let l = b.get(I); + if (l) + yield l; + else { + p("Detected single-run/CLI usage, creating Program once ahead of time for project: %s", I); + let d = (0, N.createProgramFromConfigFile)(I); + b.set(I, d), yield d; + } + } + } }); + let P = T.programs != null || T.projects && T.projects.length > 0, k, Y; + if (T.singleRun && V.filePath && (X[V.filePath] = (X[V.filePath] || 0) + 1), T.singleRun && V.filePath && X[V.filePath] > 1) { + let I = (0, w.createIsolatedProgram)(y, T); + k = I.ast, Y = I.program; + } else { + let I = ie(y, T.programs, P, T.createDefaultProgram); + k = I.ast, Y = I.program; + } + let U = typeof T.preserveNodeMaps == "boolean" ? T.preserveNodeMaps : true, { estree: j, astMaps: H } = (0, e.astConverter)(k, T, U); + if (Y && T.errorOnTypeScriptSyntacticAndSemanticIssues) { + let I = (0, Q.getFirstSemanticOrSyntacticError)(Y, k); + if (I) + throw (0, a.convertError)(I); + } + return { ast: j, services: { hasFullTypeInformation: P, program: Y, esTreeNodeToTSNodeMap: H.esTreeNodeToTSNodeMap, tsNodeToESTreeNodeMap: H.tsNodeToESTreeNodeMap } }; + } + M.parseAndGenerateServices = A; + } }), lz = Oa({ "node_modules/@typescript-eslint/typescript-estree/package.json"(M, re) { + re.exports = { name: "@typescript-eslint/typescript-estree", version: "5.27.0", description: "A parser that converts TypeScript source code into an ESTree compatible form", main: "dist/index.js", types: "dist/index.d.ts", files: ["dist", "README.md", "LICENSE"], engines: { node: "^12.22.0 || ^14.17.0 || >=16.0.0" }, repository: { type: "git", url: "https://github.com/typescript-eslint/typescript-eslint.git", directory: "packages/typescript-estree" }, bugs: { url: "https://github.com/typescript-eslint/typescript-eslint/issues" }, license: "BSD-2-Clause", keywords: ["ast", "estree", "ecmascript", "javascript", "typescript", "parser", "syntax"], scripts: { build: "tsc -b tsconfig.build.json", postbuild: "downlevel-dts dist _ts3.4/dist", clean: "tsc -b tsconfig.build.json --clean", postclean: "rimraf dist && rimraf _ts3.4 && rimraf coverage", format: 'prettier --write "./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}" --ignore-path ../../.prettierignore', lint: "eslint . --ignore-path='../../.eslintignore'", test: "jest --coverage", typecheck: "tsc -p tsconfig.json --noEmit" }, dependencies: { "@typescript-eslint/types": "5.27.0", "@typescript-eslint/visitor-keys": "5.27.0", debug: "^4.3.4", globby: "^11.1.0", "is-glob": "^4.0.3", semver: "^7.3.7", tsutils: "^3.21.0" }, devDependencies: { "@babel/code-frame": "*", "@babel/parser": "*", "@types/babel__code-frame": "*", "@types/debug": "*", "@types/glob": "*", "@types/is-glob": "*", "@types/semver": "*", "@types/tmp": "*", "@typescript-eslint/shared-fixtures": "5.27.0", glob: "*", "jest-specific-snapshot": "*", "make-dir": "*", tmp: "*", typescript: "*" }, peerDependenciesMeta: { typescript: { optional: true } }, funding: { type: "opencollective", url: "https://opencollective.com/typescript-eslint" }, typesVersions: { "<3.8": { "*": ["_ts3.4/*"] } }, gitHead: "e0db364b94158437f041db3597101d0c8b30d8bc" }; + } }), fz = Oa({ "node_modules/@typescript-eslint/typescript-estree/dist/index.js"(M) { + "use strict"; + Ea(); + var re = M && M.__createBinding || (Object.create ? function(ar, ke, e, a) { + a === void 0 && (a = e); + var C = Object.getOwnPropertyDescriptor(ke, e); + (!C || ("get" in C ? !ke.__esModule : C.writable || C.configurable)) && (C = { enumerable: true, get: function() { + return ke[e]; + } }), Object.defineProperty(ar, a, C); + } : function(ar, ke, e, a) { + a === void 0 && (a = e), ar[a] = ke[e]; + }), Ve = M && M.__exportStar || function(ar, ke) { + for (var e in ar) + e !== "default" && !Object.prototype.hasOwnProperty.call(ke, e) && re(ke, ar, e); + }; + Object.defineProperty(M, "__esModule", { value: true }), M.version = M.visitorKeys = M.createProgram = M.clearCaches = M.simpleTraverse = M.clearProgramCache = M.parseWithNodeMaps = M.parseAndGenerateServices = M.parse = void 0; + var Ke = uz(); + Object.defineProperty(M, "parse", { enumerable: true, get: function() { + return Ke.parse; + } }), Object.defineProperty(M, "parseAndGenerateServices", { enumerable: true, get: function() { + return Ke.parseAndGenerateServices; + } }), Object.defineProperty(M, "parseWithNodeMaps", { enumerable: true, get: function() { + return Ke.parseWithNodeMaps; + } }), Object.defineProperty(M, "clearProgramCache", { enumerable: true, get: function() { + return Ke.clearProgramCache; + } }); + var oi = c3(); + Object.defineProperty(M, "simpleTraverse", { enumerable: true, get: function() { + return oi.simpleTraverse; + } }), Ve(k1(), M); + var kr = u3(); + Object.defineProperty(M, "clearCaches", { enumerable: true, get: function() { + return kr.clearWatchCaches; + } }); + var pr = l3(); + Object.defineProperty(M, "createProgram", { enumerable: true, get: function() { + return pr.createProgramFromConfigFile; + } }), Ve(rx(), M); + var Lr = s3(); + Object.defineProperty(M, "visitorKeys", { enumerable: true, get: function() { + return Lr.visitorKeys; + } }), M.version = lz().version; + } }); + Ea(); + var _z = S4(), pz = Tj(), dz = Fj(), gz = Mj(), mz = Uj(), b4 = { loc: true, range: true, comment: true, jsx: true, tokens: true, loggerFn: false, project: [] }; + function vz(M) { + let { message: re, lineNumber: Ve, column: Ke } = M; + return typeof Ve != "number" ? M : _z(re, { start: { line: Ve, column: Ke + 1 } }); + } + function yz(M, re) { + let Ve = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, Ke = gz(M), oi = hz(M), { parseWithNodeMaps: kr } = fz(), { result: pr, error: Lr } = pz(() => kr(Ke, Object.assign(Object.assign({}, b4), {}, { jsx: oi })), () => kr(Ke, Object.assign(Object.assign({}, b4), {}, { jsx: !oi }))); + if (!pr) + throw vz(Lr); + return Ve.originalText = M, Ve.tsParseResult = pr, mz(pr.ast, Ve); + } + function hz(M) { + return new RegExp(["(?:^[^\"'`]*)"].join(""), "m").test(M); + } + f3.exports = { parsers: { typescript: dz(yz) } }; + }); + return Dz(); + }); + } +}); + +// node_modules/prettier/parser-angular.js +var require_parser_angular = __commonJS({ + "node_modules/prettier/parser-angular.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.angular = e(); + } + })(function() { + "use strict"; + var un = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports); + var Mn = un((jn, on) => { + var ze = Object.defineProperty, hn = Object.getOwnPropertyDescriptor, He = Object.getOwnPropertyNames, ln = Object.prototype.hasOwnProperty, Y = (e, t) => function() { + return e && (t = (0, e[He(e)[0]])(e = 0)), t; + }, q = (e, t) => function() { + return t || (0, e[He(e)[0]])((t = { exports: {} }).exports, t), t.exports; + }, Xe = (e, t) => { + for (var n in t) + ze(e, n, { get: t[n], enumerable: true }); + }, pn = (e, t, n, r) => { + if (t && typeof t == "object" || typeof t == "function") + for (let s of He(t)) + !ln.call(e, s) && s !== n && ze(e, s, { get: () => t[s], enumerable: !(r = hn(t, s)) || r.enumerable }); + return e; + }, be = (e) => pn(ze({}, "__esModule", { value: true }), e), L = Y({ ""() { + } }), dn = q({ "src/utils/is-non-empty-array.js"(e, t) { + "use strict"; + L(); + function n(r) { + return Array.isArray(r) && r.length > 0; + } + t.exports = n; + } }), fn = q({ "src/language-js/loc.js"(e, t) { + "use strict"; + L(); + var n = dn(); + function r(h, P) { + let { ignoreDecorators: p } = P || {}; + if (!p) { + let x = h.declaration && h.declaration.decorators || h.decorators; + if (n(x)) + return r(x[0]); + } + return h.range ? h.range[0] : h.start; + } + function s(h) { + return h.range ? h.range[1] : h.end; + } + function a(h, P) { + let p = r(h); + return Number.isInteger(p) && p === r(P); + } + function i(h, P) { + let p = s(h); + return Number.isInteger(p) && p === s(P); + } + function l(h, P) { + return a(h, P) && i(h, P); + } + t.exports = { locStart: r, locEnd: s, hasSameLocStart: a, hasSameLoc: l }; + } }), gn = q({ "node_modules/angular-estree-parser/node_modules/lines-and-columns/build/index.js"(e) { + "use strict"; + L(), e.__esModule = true, e.LinesAndColumns = void 0; + var t = ` +`, n = "\r", r = function() { + function s(a) { + this.string = a; + for (var i = [0], l = 0; l < a.length; ) + switch (a[l]) { + case t: + l += t.length, i.push(l); + break; + case n: + l += n.length, a[l] === t && (l += t.length), i.push(l); + break; + default: + l++; + break; + } + this.offsets = i; + } + return s.prototype.locationForIndex = function(a) { + if (a < 0 || a > this.string.length) + return null; + for (var i = 0, l = this.offsets; l[i + 1] <= a; ) + i++; + var h = a - l[i]; + return { line: i, column: h }; + }, s.prototype.indexForLocation = function(a) { + var i = a.line, l = a.column; + return i < 0 || i >= this.offsets.length || l < 0 || l > this.lengthOfLine(i) ? null : this.offsets[i] + l; + }, s.prototype.lengthOfLine = function(a) { + var i = this.offsets[a], l = a === this.offsets.length - 1 ? this.string.length : this.offsets[a + 1]; + return l - i; + }, s; + }(); + e.LinesAndColumns = r, e.default = r; + } }), vn = q({ "node_modules/angular-estree-parser/lib/context.js"(e) { + "use strict"; + L(), Object.defineProperty(e, "__esModule", { value: true }), e.Context = void 0; + var t = gn(), n = class { + constructor(s) { + this.text = s, this.locator = new r(this.text); + } + }; + e.Context = n; + var r = class { + constructor(s) { + this._lineAndColumn = new t.default(s); + } + locationForIndex(s) { + let { line: a, column: i } = this._lineAndColumn.locationForIndex(s); + return { line: a + 1, column: i }; + } + }; + } }), Je = {}; + Xe(Je, { AST: () => k, ASTWithName: () => W, ASTWithSource: () => G, AbsoluteSourceSpan: () => U, AstMemoryEfficientTransformer: () => Ct, AstTransformer: () => Pt, Binary: () => K, BindingPipe: () => fe, BoundElementProperty: () => It, Chain: () => oe, Conditional: () => ce, EmptyExpr: () => M, ExpressionBinding: () => Ze, FunctionCall: () => Pe, ImplicitReceiver: () => Oe, Interpolation: () => me, KeyedRead: () => le, KeyedWrite: () => de, LiteralArray: () => ge, LiteralMap: () => ve, LiteralPrimitive: () => B, MethodCall: () => ye, NonNullAssert: () => Se, ParseSpan: () => V, ParsedEvent: () => At, ParsedProperty: () => Et, ParsedPropertyType: () => se, ParsedVariable: () => _t, ParserError: () => ae, PrefixNot: () => xe, PropertyRead: () => re, PropertyWrite: () => ue, Quote: () => Le, RecursiveAstVisitor: () => et, SafeKeyedRead: () => pe, SafeMethodCall: () => we, SafePropertyRead: () => he, ThisReceiver: () => Ye, Unary: () => F, VariableBinding: () => Re }); + var ae, V, k, W, Le, M, Oe, Ye, oe, ce, re, ue, he, le, pe, de, fe, B, ge, ve, me, K, F, xe, Se, ye, we, Pe, U, G, Re, Ze, et, Pt, Ct, Et, se, At, _t, It, tt = Y({ "node_modules/@angular/compiler/esm2015/src/expression_parser/ast.js"() { + L(), ae = class { + constructor(e, t, n, r) { + this.input = t, this.errLocation = n, this.ctxLocation = r, this.message = "Parser Error: ".concat(e, " ").concat(n, " [").concat(t, "] in ").concat(r); + } + }, V = class { + constructor(e, t) { + this.start = e, this.end = t; + } + toAbsolute(e) { + return new U(e + this.start, e + this.end); + } + }, k = class { + constructor(e, t) { + this.span = e, this.sourceSpan = t; + } + toString() { + return "AST"; + } + }, W = class extends k { + constructor(e, t, n) { + super(e, t), this.nameSpan = n; + } + }, Le = class extends k { + constructor(e, t, n, r, s) { + super(e, t), this.prefix = n, this.uninterpretedExpression = r, this.location = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitQuote(this, t); + } + toString() { + return "Quote"; + } + }, M = class extends k { + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + } + }, Oe = class extends k { + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitImplicitReceiver(this, t); + } + }, Ye = class extends Oe { + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + var n; + return (n = e.visitThisReceiver) === null || n === void 0 ? void 0 : n.call(e, this, t); + } + }, oe = class extends k { + constructor(e, t, n) { + super(e, t), this.expressions = n; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitChain(this, t); + } + }, ce = class extends k { + constructor(e, t, n, r, s) { + super(e, t), this.condition = n, this.trueExp = r, this.falseExp = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitConditional(this, t); + } + }, re = class extends W { + constructor(e, t, n, r, s) { + super(e, t, n), this.receiver = r, this.name = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitPropertyRead(this, t); + } + }, ue = class extends W { + constructor(e, t, n, r, s, a) { + super(e, t, n), this.receiver = r, this.name = s, this.value = a; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitPropertyWrite(this, t); + } + }, he = class extends W { + constructor(e, t, n, r, s) { + super(e, t, n), this.receiver = r, this.name = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitSafePropertyRead(this, t); + } + }, le = class extends k { + constructor(e, t, n, r) { + super(e, t), this.receiver = n, this.key = r; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitKeyedRead(this, t); + } + }, pe = class extends k { + constructor(e, t, n, r) { + super(e, t), this.receiver = n, this.key = r; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitSafeKeyedRead(this, t); + } + }, de = class extends k { + constructor(e, t, n, r, s) { + super(e, t), this.receiver = n, this.key = r, this.value = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitKeyedWrite(this, t); + } + }, fe = class extends W { + constructor(e, t, n, r, s, a) { + super(e, t, a), this.exp = n, this.name = r, this.args = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitPipe(this, t); + } + }, B = class extends k { + constructor(e, t, n) { + super(e, t), this.value = n; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitLiteralPrimitive(this, t); + } + }, ge = class extends k { + constructor(e, t, n) { + super(e, t), this.expressions = n; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitLiteralArray(this, t); + } + }, ve = class extends k { + constructor(e, t, n, r) { + super(e, t), this.keys = n, this.values = r; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitLiteralMap(this, t); + } + }, me = class extends k { + constructor(e, t, n, r) { + super(e, t), this.strings = n, this.expressions = r; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitInterpolation(this, t); + } + }, K = class extends k { + constructor(e, t, n, r, s) { + super(e, t), this.operation = n, this.left = r, this.right = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitBinary(this, t); + } + }, F = class extends K { + constructor(e, t, n, r, s, a, i) { + super(e, t, s, a, i), this.operator = n, this.expr = r; + } + static createMinus(e, t, n) { + return new F(e, t, "-", n, "-", new B(e, t, 0), n); + } + static createPlus(e, t, n) { + return new F(e, t, "+", n, "-", n, new B(e, t, 0)); + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitUnary !== void 0 ? e.visitUnary(this, t) : e.visitBinary(this, t); + } + }, xe = class extends k { + constructor(e, t, n) { + super(e, t), this.expression = n; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitPrefixNot(this, t); + } + }, Se = class extends k { + constructor(e, t, n) { + super(e, t), this.expression = n; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitNonNullAssert(this, t); + } + }, ye = class extends W { + constructor(e, t, n, r, s, a, i) { + super(e, t, n), this.receiver = r, this.name = s, this.args = a, this.argumentSpan = i; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitMethodCall(this, t); + } + }, we = class extends W { + constructor(e, t, n, r, s, a, i) { + super(e, t, n), this.receiver = r, this.name = s, this.args = a, this.argumentSpan = i; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitSafeMethodCall(this, t); + } + }, Pe = class extends k { + constructor(e, t, n, r) { + super(e, t), this.target = n, this.args = r; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitFunctionCall(this, t); + } + }, U = class { + constructor(e, t) { + this.start = e, this.end = t; + } + }, G = class extends k { + constructor(e, t, n, r, s) { + super(new V(0, t === null ? 0 : t.length), new U(r, t === null ? r : r + t.length)), this.ast = e, this.source = t, this.location = n, this.errors = s; + } + visit(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + return e.visitASTWithSource ? e.visitASTWithSource(this, t) : this.ast.visit(e, t); + } + toString() { + return "".concat(this.source, " in ").concat(this.location); + } + }, Re = class { + constructor(e, t, n) { + this.sourceSpan = e, this.key = t, this.value = n; + } + }, Ze = class { + constructor(e, t, n) { + this.sourceSpan = e, this.key = t, this.value = n; + } + }, et = class { + visit(e, t) { + e.visit(this, t); + } + visitUnary(e, t) { + this.visit(e.expr, t); + } + visitBinary(e, t) { + this.visit(e.left, t), this.visit(e.right, t); + } + visitChain(e, t) { + this.visitAll(e.expressions, t); + } + visitConditional(e, t) { + this.visit(e.condition, t), this.visit(e.trueExp, t), this.visit(e.falseExp, t); + } + visitPipe(e, t) { + this.visit(e.exp, t), this.visitAll(e.args, t); + } + visitFunctionCall(e, t) { + e.target && this.visit(e.target, t), this.visitAll(e.args, t); + } + visitImplicitReceiver(e, t) { + } + visitThisReceiver(e, t) { + } + visitInterpolation(e, t) { + this.visitAll(e.expressions, t); + } + visitKeyedRead(e, t) { + this.visit(e.receiver, t), this.visit(e.key, t); + } + visitKeyedWrite(e, t) { + this.visit(e.receiver, t), this.visit(e.key, t), this.visit(e.value, t); + } + visitLiteralArray(e, t) { + this.visitAll(e.expressions, t); + } + visitLiteralMap(e, t) { + this.visitAll(e.values, t); + } + visitLiteralPrimitive(e, t) { + } + visitMethodCall(e, t) { + this.visit(e.receiver, t), this.visitAll(e.args, t); + } + visitPrefixNot(e, t) { + this.visit(e.expression, t); + } + visitNonNullAssert(e, t) { + this.visit(e.expression, t); + } + visitPropertyRead(e, t) { + this.visit(e.receiver, t); + } + visitPropertyWrite(e, t) { + this.visit(e.receiver, t), this.visit(e.value, t); + } + visitSafePropertyRead(e, t) { + this.visit(e.receiver, t); + } + visitSafeMethodCall(e, t) { + this.visit(e.receiver, t), this.visitAll(e.args, t); + } + visitSafeKeyedRead(e, t) { + this.visit(e.receiver, t), this.visit(e.key, t); + } + visitQuote(e, t) { + } + visitAll(e, t) { + for (let n of e) + this.visit(n, t); + } + }, Pt = class { + visitImplicitReceiver(e, t) { + return e; + } + visitThisReceiver(e, t) { + return e; + } + visitInterpolation(e, t) { + return new me(e.span, e.sourceSpan, e.strings, this.visitAll(e.expressions)); + } + visitLiteralPrimitive(e, t) { + return new B(e.span, e.sourceSpan, e.value); + } + visitPropertyRead(e, t) { + return new re(e.span, e.sourceSpan, e.nameSpan, e.receiver.visit(this), e.name); + } + visitPropertyWrite(e, t) { + return new ue(e.span, e.sourceSpan, e.nameSpan, e.receiver.visit(this), e.name, e.value.visit(this)); + } + visitSafePropertyRead(e, t) { + return new he(e.span, e.sourceSpan, e.nameSpan, e.receiver.visit(this), e.name); + } + visitMethodCall(e, t) { + return new ye(e.span, e.sourceSpan, e.nameSpan, e.receiver.visit(this), e.name, this.visitAll(e.args), e.argumentSpan); + } + visitSafeMethodCall(e, t) { + return new we(e.span, e.sourceSpan, e.nameSpan, e.receiver.visit(this), e.name, this.visitAll(e.args), e.argumentSpan); + } + visitFunctionCall(e, t) { + return new Pe(e.span, e.sourceSpan, e.target.visit(this), this.visitAll(e.args)); + } + visitLiteralArray(e, t) { + return new ge(e.span, e.sourceSpan, this.visitAll(e.expressions)); + } + visitLiteralMap(e, t) { + return new ve(e.span, e.sourceSpan, e.keys, this.visitAll(e.values)); + } + visitUnary(e, t) { + switch (e.operator) { + case "+": + return F.createPlus(e.span, e.sourceSpan, e.expr.visit(this)); + case "-": + return F.createMinus(e.span, e.sourceSpan, e.expr.visit(this)); + default: + throw new Error("Unknown unary operator ".concat(e.operator)); + } + } + visitBinary(e, t) { + return new K(e.span, e.sourceSpan, e.operation, e.left.visit(this), e.right.visit(this)); + } + visitPrefixNot(e, t) { + return new xe(e.span, e.sourceSpan, e.expression.visit(this)); + } + visitNonNullAssert(e, t) { + return new Se(e.span, e.sourceSpan, e.expression.visit(this)); + } + visitConditional(e, t) { + return new ce(e.span, e.sourceSpan, e.condition.visit(this), e.trueExp.visit(this), e.falseExp.visit(this)); + } + visitPipe(e, t) { + return new fe(e.span, e.sourceSpan, e.exp.visit(this), e.name, this.visitAll(e.args), e.nameSpan); + } + visitKeyedRead(e, t) { + return new le(e.span, e.sourceSpan, e.receiver.visit(this), e.key.visit(this)); + } + visitKeyedWrite(e, t) { + return new de(e.span, e.sourceSpan, e.receiver.visit(this), e.key.visit(this), e.value.visit(this)); + } + visitAll(e) { + let t = []; + for (let n = 0; n < e.length; ++n) + t[n] = e[n].visit(this); + return t; + } + visitChain(e, t) { + return new oe(e.span, e.sourceSpan, this.visitAll(e.expressions)); + } + visitQuote(e, t) { + return new Le(e.span, e.sourceSpan, e.prefix, e.uninterpretedExpression, e.location); + } + visitSafeKeyedRead(e, t) { + return new pe(e.span, e.sourceSpan, e.receiver.visit(this), e.key.visit(this)); + } + }, Ct = class { + visitImplicitReceiver(e, t) { + return e; + } + visitThisReceiver(e, t) { + return e; + } + visitInterpolation(e, t) { + let n = this.visitAll(e.expressions); + return n !== e.expressions ? new me(e.span, e.sourceSpan, e.strings, n) : e; + } + visitLiteralPrimitive(e, t) { + return e; + } + visitPropertyRead(e, t) { + let n = e.receiver.visit(this); + return n !== e.receiver ? new re(e.span, e.sourceSpan, e.nameSpan, n, e.name) : e; + } + visitPropertyWrite(e, t) { + let n = e.receiver.visit(this), r = e.value.visit(this); + return n !== e.receiver || r !== e.value ? new ue(e.span, e.sourceSpan, e.nameSpan, n, e.name, r) : e; + } + visitSafePropertyRead(e, t) { + let n = e.receiver.visit(this); + return n !== e.receiver ? new he(e.span, e.sourceSpan, e.nameSpan, n, e.name) : e; + } + visitMethodCall(e, t) { + let n = e.receiver.visit(this), r = this.visitAll(e.args); + return n !== e.receiver || r !== e.args ? new ye(e.span, e.sourceSpan, e.nameSpan, n, e.name, r, e.argumentSpan) : e; + } + visitSafeMethodCall(e, t) { + let n = e.receiver.visit(this), r = this.visitAll(e.args); + return n !== e.receiver || r !== e.args ? new we(e.span, e.sourceSpan, e.nameSpan, n, e.name, r, e.argumentSpan) : e; + } + visitFunctionCall(e, t) { + let n = e.target && e.target.visit(this), r = this.visitAll(e.args); + return n !== e.target || r !== e.args ? new Pe(e.span, e.sourceSpan, n, r) : e; + } + visitLiteralArray(e, t) { + let n = this.visitAll(e.expressions); + return n !== e.expressions ? new ge(e.span, e.sourceSpan, n) : e; + } + visitLiteralMap(e, t) { + let n = this.visitAll(e.values); + return n !== e.values ? new ve(e.span, e.sourceSpan, e.keys, n) : e; + } + visitUnary(e, t) { + let n = e.expr.visit(this); + if (n !== e.expr) + switch (e.operator) { + case "+": + return F.createPlus(e.span, e.sourceSpan, n); + case "-": + return F.createMinus(e.span, e.sourceSpan, n); + default: + throw new Error("Unknown unary operator ".concat(e.operator)); + } + return e; + } + visitBinary(e, t) { + let n = e.left.visit(this), r = e.right.visit(this); + return n !== e.left || r !== e.right ? new K(e.span, e.sourceSpan, e.operation, n, r) : e; + } + visitPrefixNot(e, t) { + let n = e.expression.visit(this); + return n !== e.expression ? new xe(e.span, e.sourceSpan, n) : e; + } + visitNonNullAssert(e, t) { + let n = e.expression.visit(this); + return n !== e.expression ? new Se(e.span, e.sourceSpan, n) : e; + } + visitConditional(e, t) { + let n = e.condition.visit(this), r = e.trueExp.visit(this), s = e.falseExp.visit(this); + return n !== e.condition || r !== e.trueExp || s !== e.falseExp ? new ce(e.span, e.sourceSpan, n, r, s) : e; + } + visitPipe(e, t) { + let n = e.exp.visit(this), r = this.visitAll(e.args); + return n !== e.exp || r !== e.args ? new fe(e.span, e.sourceSpan, n, e.name, r, e.nameSpan) : e; + } + visitKeyedRead(e, t) { + let n = e.receiver.visit(this), r = e.key.visit(this); + return n !== e.receiver || r !== e.key ? new le(e.span, e.sourceSpan, n, r) : e; + } + visitKeyedWrite(e, t) { + let n = e.receiver.visit(this), r = e.key.visit(this), s = e.value.visit(this); + return n !== e.receiver || r !== e.key || s !== e.value ? new de(e.span, e.sourceSpan, n, r, s) : e; + } + visitAll(e) { + let t = [], n = false; + for (let r = 0; r < e.length; ++r) { + let s = e[r], a = s.visit(this); + t[r] = a, n = n || a !== s; + } + return n ? t : e; + } + visitChain(e, t) { + let n = this.visitAll(e.expressions); + return n !== e.expressions ? new oe(e.span, e.sourceSpan, n) : e; + } + visitQuote(e, t) { + return e; + } + visitSafeKeyedRead(e, t) { + let n = e.receiver.visit(this), r = e.key.visit(this); + return n !== e.receiver || r !== e.key ? new pe(e.span, e.sourceSpan, n, r) : e; + } + }, Et = class { + constructor(e, t, n, r, s, a) { + this.name = e, this.expression = t, this.type = n, this.sourceSpan = r, this.keySpan = s, this.valueSpan = a, this.isLiteral = this.type === se.LITERAL_ATTR, this.isAnimation = this.type === se.ANIMATION; + } + }, function(e) { + e[e.DEFAULT = 0] = "DEFAULT", e[e.LITERAL_ATTR = 1] = "LITERAL_ATTR", e[e.ANIMATION = 2] = "ANIMATION"; + }(se || (se = {})), At = class { + constructor(e, t, n, r, s, a, i) { + this.name = e, this.targetOrPhase = t, this.type = n, this.handler = r, this.sourceSpan = s, this.handlerSpan = a, this.keySpan = i; + } + }, _t = class { + constructor(e, t, n, r, s) { + this.name = e, this.value = t, this.sourceSpan = n, this.keySpan = r, this.valueSpan = s; + } + }, It = class { + constructor(e, t, n, r, s, a, i, l) { + this.name = e, this.type = t, this.securityContext = n, this.value = r, this.unit = s, this.sourceSpan = a, this.keySpan = i, this.valueSpan = l; + } + }; + } }); + function mn(e) { + return e >= nt && e <= rt || e == dt; + } + function Q(e) { + return $t <= e && e <= jt; + } + function xn(e) { + return e >= lt && e <= pt || e >= ut && e <= ht; + } + function mt(e) { + return e === at || e === st || e === Xt; + } + var Ce, nt, Ot, kt, Nt, bt, rt, Lt, st, Rt, it, Tt, je, at, Ee, z, Bt, ot, ee, ct, H, Te, X, te, Kt, ie, Mt, Fe, $t, jt, ut, Ft, ht, Ae, Ut, ne, Wt, Ke, lt, Gt, Vt, qt, Qt, Dt, zt, Ht, pt, Be, Ue, _e, dt, Xt, Jt = Y({ "node_modules/@angular/compiler/esm2015/src/chars.js"() { + L(), Ce = 0, nt = 9, Ot = 10, kt = 11, Nt = 12, bt = 13, rt = 32, Lt = 33, st = 34, Rt = 35, it = 36, Tt = 37, je = 38, at = 39, Ee = 40, z = 41, Bt = 42, ot = 43, ee = 44, ct = 45, H = 46, Te = 47, X = 58, te = 59, Kt = 60, ie = 61, Mt = 62, Fe = 63, $t = 48, jt = 57, ut = 65, Ft = 69, ht = 90, Ae = 91, Ut = 92, ne = 93, Wt = 94, Ke = 95, lt = 97, Gt = 101, Vt = 102, qt = 110, Qt = 114, Dt = 116, zt = 117, Ht = 118, pt = 122, Be = 123, Ue = 124, _e = 125, dt = 160, Xt = 96; + } }), Yt = {}; + Xe(Yt, { EOF: () => Ie, Lexer: () => en, Token: () => $, TokenType: () => S, isIdentifier: () => Zt }); + function xt(e, t, n) { + return new $(e, t, S.Character, n, String.fromCharCode(n)); + } + function Sn(e, t, n) { + return new $(e, t, S.Identifier, 0, n); + } + function yn(e, t, n) { + return new $(e, t, S.PrivateIdentifier, 0, n); + } + function wn(e, t, n) { + return new $(e, t, S.Keyword, 0, n); + } + function Me(e, t, n) { + return new $(e, t, S.Operator, 0, n); + } + function Pn(e, t, n) { + return new $(e, t, S.String, 0, n); + } + function Cn(e, t, n) { + return new $(e, t, S.Number, n, ""); + } + function En(e, t, n) { + return new $(e, t, S.Error, 0, n); + } + function We(e) { + return lt <= e && e <= pt || ut <= e && e <= ht || e == Ke || e == it; + } + function Zt(e) { + if (e.length == 0) + return false; + let t = new Ve(e); + if (!We(t.peek)) + return false; + for (t.advance(); t.peek !== Ce; ) { + if (!Ge(t.peek)) + return false; + t.advance(); + } + return true; + } + function Ge(e) { + return xn(e) || Q(e) || e == Ke || e == it; + } + function An(e) { + return e == Gt || e == Ft; + } + function _n(e) { + return e == ct || e == ot; + } + function In(e) { + switch (e) { + case qt: + return Ot; + case Vt: + return Nt; + case Qt: + return bt; + case Dt: + return nt; + case Ht: + return kt; + default: + return e; + } + } + function On(e) { + let t = parseInt(e); + if (isNaN(t)) + throw new Error("Invalid integer literal when parsing " + e); + return t; + } + var S, St, en, $, Ie, Ve, tn = Y({ "node_modules/@angular/compiler/esm2015/src/expression_parser/lexer.js"() { + L(), Jt(), function(e) { + e[e.Character = 0] = "Character", e[e.Identifier = 1] = "Identifier", e[e.PrivateIdentifier = 2] = "PrivateIdentifier", e[e.Keyword = 3] = "Keyword", e[e.String = 4] = "String", e[e.Operator = 5] = "Operator", e[e.Number = 6] = "Number", e[e.Error = 7] = "Error"; + }(S || (S = {})), St = ["var", "let", "as", "null", "undefined", "true", "false", "if", "else", "this"], en = class { + tokenize(e) { + let t = new Ve(e), n = [], r = t.scanToken(); + for (; r != null; ) + n.push(r), r = t.scanToken(); + return n; + } + }, $ = class { + constructor(e, t, n, r, s) { + this.index = e, this.end = t, this.type = n, this.numValue = r, this.strValue = s; + } + isCharacter(e) { + return this.type == S.Character && this.numValue == e; + } + isNumber() { + return this.type == S.Number; + } + isString() { + return this.type == S.String; + } + isOperator(e) { + return this.type == S.Operator && this.strValue == e; + } + isIdentifier() { + return this.type == S.Identifier; + } + isPrivateIdentifier() { + return this.type == S.PrivateIdentifier; + } + isKeyword() { + return this.type == S.Keyword; + } + isKeywordLet() { + return this.type == S.Keyword && this.strValue == "let"; + } + isKeywordAs() { + return this.type == S.Keyword && this.strValue == "as"; + } + isKeywordNull() { + return this.type == S.Keyword && this.strValue == "null"; + } + isKeywordUndefined() { + return this.type == S.Keyword && this.strValue == "undefined"; + } + isKeywordTrue() { + return this.type == S.Keyword && this.strValue == "true"; + } + isKeywordFalse() { + return this.type == S.Keyword && this.strValue == "false"; + } + isKeywordThis() { + return this.type == S.Keyword && this.strValue == "this"; + } + isError() { + return this.type == S.Error; + } + toNumber() { + return this.type == S.Number ? this.numValue : -1; + } + toString() { + switch (this.type) { + case S.Character: + case S.Identifier: + case S.Keyword: + case S.Operator: + case S.PrivateIdentifier: + case S.String: + case S.Error: + return this.strValue; + case S.Number: + return this.numValue.toString(); + default: + return null; + } + } + }, Ie = new $(-1, -1, S.Character, 0, ""), Ve = class { + constructor(e) { + this.input = e, this.peek = 0, this.index = -1, this.length = e.length, this.advance(); + } + advance() { + this.peek = ++this.index >= this.length ? Ce : this.input.charCodeAt(this.index); + } + scanToken() { + let e = this.input, t = this.length, n = this.peek, r = this.index; + for (; n <= rt; ) + if (++r >= t) { + n = Ce; + break; + } else + n = e.charCodeAt(r); + if (this.peek = n, this.index = r, r >= t) + return null; + if (We(n)) + return this.scanIdentifier(); + if (Q(n)) + return this.scanNumber(r); + let s = r; + switch (n) { + case H: + return this.advance(), Q(this.peek) ? this.scanNumber(s) : xt(s, this.index, H); + case Ee: + case z: + case Be: + case _e: + case Ae: + case ne: + case ee: + case X: + case te: + return this.scanCharacter(s, n); + case at: + case st: + return this.scanString(); + case Rt: + return this.scanPrivateIdentifier(); + case ot: + case ct: + case Bt: + case Te: + case Tt: + case Wt: + return this.scanOperator(s, String.fromCharCode(n)); + case Fe: + return this.scanQuestion(s); + case Kt: + case Mt: + return this.scanComplexOperator(s, String.fromCharCode(n), ie, "="); + case Lt: + case ie: + return this.scanComplexOperator(s, String.fromCharCode(n), ie, "=", ie, "="); + case je: + return this.scanComplexOperator(s, "&", je, "&"); + case Ue: + return this.scanComplexOperator(s, "|", Ue, "|"); + case dt: + for (; mn(this.peek); ) + this.advance(); + return this.scanToken(); + } + return this.advance(), this.error("Unexpected character [".concat(String.fromCharCode(n), "]"), 0); + } + scanCharacter(e, t) { + return this.advance(), xt(e, this.index, t); + } + scanOperator(e, t) { + return this.advance(), Me(e, this.index, t); + } + scanComplexOperator(e, t, n, r, s, a) { + this.advance(); + let i = t; + return this.peek == n && (this.advance(), i += r), s != null && this.peek == s && (this.advance(), i += a), Me(e, this.index, i); + } + scanIdentifier() { + let e = this.index; + for (this.advance(); Ge(this.peek); ) + this.advance(); + let t = this.input.substring(e, this.index); + return St.indexOf(t) > -1 ? wn(e, this.index, t) : Sn(e, this.index, t); + } + scanPrivateIdentifier() { + let e = this.index; + if (this.advance(), !We(this.peek)) + return this.error("Invalid character [#]", -1); + for (; Ge(this.peek); ) + this.advance(); + let t = this.input.substring(e, this.index); + return yn(e, this.index, t); + } + scanNumber(e) { + let t = this.index === e, n = false; + for (this.advance(); ; ) { + if (!Q(this.peek)) + if (this.peek === Ke) { + if (!Q(this.input.charCodeAt(this.index - 1)) || !Q(this.input.charCodeAt(this.index + 1))) + return this.error("Invalid numeric separator", 0); + n = true; + } else if (this.peek === H) + t = false; + else if (An(this.peek)) { + if (this.advance(), _n(this.peek) && this.advance(), !Q(this.peek)) + return this.error("Invalid exponent", -1); + t = false; + } else + break; + this.advance(); + } + let r = this.input.substring(e, this.index); + n && (r = r.replace(/_/g, "")); + let s = t ? On(r) : parseFloat(r); + return Cn(e, this.index, s); + } + scanString() { + let e = this.index, t = this.peek; + this.advance(); + let n = "", r = this.index, s = this.input; + for (; this.peek != t; ) + if (this.peek == Ut) { + n += s.substring(r, this.index), this.advance(); + let i; + if (this.peek = this.peek, this.peek == zt) { + let l = s.substring(this.index + 1, this.index + 5); + if (/^[0-9a-f]+$/i.test(l)) + i = parseInt(l, 16); + else + return this.error("Invalid unicode escape [\\u".concat(l, "]"), 0); + for (let h = 0; h < 5; h++) + this.advance(); + } else + i = In(this.peek), this.advance(); + n += String.fromCharCode(i), r = this.index; + } else { + if (this.peek == Ce) + return this.error("Unterminated quote", 0); + this.advance(); + } + let a = s.substring(r, this.index); + return this.advance(), Pn(e, this.index, n + a); + } + scanQuestion(e) { + this.advance(); + let t = "?"; + return (this.peek === Fe || this.peek === H) && (t += this.peek === H ? "." : "?", this.advance()), Me(e, this.index, t); + } + error(e, t) { + let n = this.index + t; + return En(n, this.index, "Lexer Error: ".concat(e, " at column ").concat(n, " in expression [").concat(this.input, "]")); + } + }; + } }); + function kn(e, t) { + if (t != null && !(Array.isArray(t) && t.length == 2)) + throw new Error("Expected '".concat(e, "' to be an array, [start, end].")); + if (t != null) { + let n = t[0], r = t[1]; + nn.forEach((s) => { + if (s.test(n) || s.test(r)) + throw new Error("['".concat(n, "', '").concat(r, "'] contains unusable interpolation symbol.")); + }); + } + } + var nn, Nn = Y({ "node_modules/@angular/compiler/esm2015/src/assertions.js"() { + L(), nn = [/^\s*$/, /[<>]/, /^[{}]$/, /&(#|[a-z])/i, /^\/\//]; + } }), $e, J, bn = Y({ "node_modules/@angular/compiler/esm2015/src/ml_parser/interpolation_config.js"() { + L(), Nn(), $e = class { + constructor(e, t) { + this.start = e, this.end = t; + } + static fromArray(e) { + return e ? (kn("interpolation", e), new $e(e[0], e[1])) : J; + } + }, J = new $e("{{", "}}"); + } }), rn = {}; + Xe(rn, { IvyParser: () => sn, Parser: () => De, SplitInterpolation: () => qe, TemplateBindingParseResult: () => Qe, _ParseAST: () => D }); + var qe, Qe, De, sn, Z, D, yt, wt, Ln = Y({ "node_modules/@angular/compiler/esm2015/src/expression_parser/parser.js"() { + L(), Jt(), bn(), tt(), tn(), qe = class { + constructor(e, t, n) { + this.strings = e, this.expressions = t, this.offsets = n; + } + }, Qe = class { + constructor(e, t, n) { + this.templateBindings = e, this.warnings = t, this.errors = n; + } + }, De = class { + constructor(e) { + this._lexer = e, this.errors = [], this.simpleExpressionChecker = yt; + } + parseAction(e, t, n) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : J; + this._checkNoInterpolation(e, t, r); + let s = this._stripComments(e), a = this._lexer.tokenize(this._stripComments(e)), i = new D(e, t, n, a, s.length, true, this.errors, e.length - s.length).parseChain(); + return new G(i, e, t, n, this.errors); + } + parseBinding(e, t, n) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : J, s = this._parseBindingAst(e, t, n, r); + return new G(s, e, t, n, this.errors); + } + checkSimpleExpression(e) { + let t = new this.simpleExpressionChecker(); + return e.visit(t), t.errors; + } + parseSimpleBinding(e, t, n) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : J, s = this._parseBindingAst(e, t, n, r), a = this.checkSimpleExpression(s); + return a.length > 0 && this._reportError("Host binding expression cannot contain ".concat(a.join(" ")), e, t), new G(s, e, t, n, this.errors); + } + _reportError(e, t, n, r) { + this.errors.push(new ae(e, t, n, r)); + } + _parseBindingAst(e, t, n, r) { + let s = this._parseQuote(e, t, n); + if (s != null) + return s; + this._checkNoInterpolation(e, t, r); + let a = this._stripComments(e), i = this._lexer.tokenize(a); + return new D(e, t, n, i, a.length, false, this.errors, e.length - a.length).parseChain(); + } + _parseQuote(e, t, n) { + if (e == null) + return null; + let r = e.indexOf(":"); + if (r == -1) + return null; + let s = e.substring(0, r).trim(); + if (!Zt(s)) + return null; + let a = e.substring(r + 1), i = new V(0, e.length); + return new Le(i, i.toAbsolute(n), s, a, t); + } + parseTemplateBindings(e, t, n, r, s) { + let a = this._lexer.tokenize(t); + return new D(t, n, s, a, t.length, false, this.errors, 0).parseTemplateBindings({ source: e, span: new U(r, r + e.length) }); + } + parseInterpolation(e, t, n) { + let r = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : J, { strings: s, expressions: a, offsets: i } = this.splitInterpolation(e, t, r); + if (a.length === 0) + return null; + let l = []; + for (let h = 0; h < a.length; ++h) { + let P = a[h].text, p = this._stripComments(P), x = this._lexer.tokenize(p), A = new D(e, t, n, x, p.length, false, this.errors, i[h] + (P.length - p.length)).parseChain(); + l.push(A); + } + return this.createInterpolationAst(s.map((h) => h.text), l, e, t, n); + } + parseInterpolationExpression(e, t, n) { + let r = this._stripComments(e), s = this._lexer.tokenize(r), a = new D(e, t, n, s, r.length, false, this.errors, 0).parseChain(), i = ["", ""]; + return this.createInterpolationAst(i, [a], e, t, n); + } + createInterpolationAst(e, t, n, r, s) { + let a = new V(0, n.length), i = new me(a, a.toAbsolute(s), e, t); + return new G(i, n, r, s, this.errors); + } + splitInterpolation(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : J, r = [], s = [], a = [], i = 0, l = false, h = false, { start: P, end: p } = n; + for (; i < e.length; ) + if (l) { + let x = i, A = x + P.length, b = this._getInterpolationEndIndex(e, p, A); + if (b === -1) { + l = false, h = true; + break; + } + let _ = b + p.length, R = e.substring(A, b); + R.trim().length === 0 && this._reportError("Blank expressions are not allowed in interpolated strings", e, "at column ".concat(i, " in"), t), s.push({ text: R, start: x, end: _ }), a.push(A), i = _, l = false; + } else { + let x = i; + i = e.indexOf(P, i), i === -1 && (i = e.length); + let A = e.substring(x, i); + r.push({ text: A, start: x, end: i }), l = true; + } + if (!l) + if (h) { + let x = r[r.length - 1]; + x.text += e.substring(i), x.end = e.length; + } else + r.push({ text: e.substring(i), start: i, end: e.length }); + return new qe(r, s, a); + } + wrapLiteralPrimitive(e, t, n) { + let r = new V(0, e == null ? 0 : e.length); + return new G(new B(r, r.toAbsolute(n), e), e, t, n, this.errors); + } + _stripComments(e) { + let t = this._commentStart(e); + return t != null ? e.substring(0, t).trim() : e; + } + _commentStart(e) { + let t = null; + for (let n = 0; n < e.length - 1; n++) { + let r = e.charCodeAt(n), s = e.charCodeAt(n + 1); + if (r === Te && s == Te && t == null) + return n; + t === r ? t = null : t == null && mt(r) && (t = r); + } + return null; + } + _checkNoInterpolation(e, t, n) { + let { start: r, end: s } = n, a = -1, i = -1; + for (let l of this._forEachUnquotedChar(e, 0)) + if (a === -1) + e.startsWith(r) && (a = l); + else if (i = this._getInterpolationEndIndex(e, s, l), i > -1) + break; + a > -1 && i > -1 && this._reportError("Got interpolation (".concat(r).concat(s, ") where expression was expected"), e, "at column ".concat(a, " in"), t); + } + _getInterpolationEndIndex(e, t, n) { + for (let r of this._forEachUnquotedChar(e, n)) { + if (e.startsWith(t, r)) + return r; + if (e.startsWith("//", r)) + return e.indexOf(t, r); + } + return -1; + } + *_forEachUnquotedChar(e, t) { + let n = null, r = 0; + for (let s = t; s < e.length; s++) { + let a = e[s]; + mt(e.charCodeAt(s)) && (n === null || n === a) && r % 2 === 0 ? n = n === null ? a : null : n === null && (yield s), r = a === "\\" ? r + 1 : 0; + } + } + }, sn = class extends De { + constructor() { + super(...arguments), this.simpleExpressionChecker = wt; + } + }, function(e) { + e[e.None = 0] = "None", e[e.Writable = 1] = "Writable"; + }(Z || (Z = {})), D = class { + constructor(e, t, n, r, s, a, i, l) { + this.input = e, this.location = t, this.absoluteOffset = n, this.tokens = r, this.inputLength = s, this.parseAction = a, this.errors = i, this.offset = l, this.rparensExpected = 0, this.rbracketsExpected = 0, this.rbracesExpected = 0, this.context = Z.None, this.sourceSpanCache = /* @__PURE__ */ new Map(), this.index = 0; + } + peek(e) { + let t = this.index + e; + return t < this.tokens.length ? this.tokens[t] : Ie; + } + get next() { + return this.peek(0); + } + get atEOF() { + return this.index >= this.tokens.length; + } + get inputIndex() { + return this.atEOF ? this.currentEndIndex : this.next.index + this.offset; + } + get currentEndIndex() { + return this.index > 0 ? this.peek(-1).end + this.offset : this.tokens.length === 0 ? this.inputLength + this.offset : this.next.index + this.offset; + } + get currentAbsoluteOffset() { + return this.absoluteOffset + this.inputIndex; + } + span(e, t) { + let n = this.currentEndIndex; + if (t !== void 0 && t > this.currentEndIndex && (n = t), e > n) { + let r = n; + n = e, e = r; + } + return new V(e, n); + } + sourceSpan(e, t) { + let n = "".concat(e, "@").concat(this.inputIndex, ":").concat(t); + return this.sourceSpanCache.has(n) || this.sourceSpanCache.set(n, this.span(e, t).toAbsolute(this.absoluteOffset)), this.sourceSpanCache.get(n); + } + advance() { + this.index++; + } + withContext(e, t) { + this.context |= e; + let n = t(); + return this.context ^= e, n; + } + consumeOptionalCharacter(e) { + return this.next.isCharacter(e) ? (this.advance(), true) : false; + } + peekKeywordLet() { + return this.next.isKeywordLet(); + } + peekKeywordAs() { + return this.next.isKeywordAs(); + } + expectCharacter(e) { + this.consumeOptionalCharacter(e) || this.error("Missing expected ".concat(String.fromCharCode(e))); + } + consumeOptionalOperator(e) { + return this.next.isOperator(e) ? (this.advance(), true) : false; + } + expectOperator(e) { + this.consumeOptionalOperator(e) || this.error("Missing expected operator ".concat(e)); + } + prettyPrintToken(e) { + return e === Ie ? "end of input" : "token ".concat(e); + } + expectIdentifierOrKeyword() { + let e = this.next; + return !e.isIdentifier() && !e.isKeyword() ? (e.isPrivateIdentifier() ? this._reportErrorForPrivateIdentifier(e, "expected identifier or keyword") : this.error("Unexpected ".concat(this.prettyPrintToken(e), ", expected identifier or keyword")), null) : (this.advance(), e.toString()); + } + expectIdentifierOrKeywordOrString() { + let e = this.next; + return !e.isIdentifier() && !e.isKeyword() && !e.isString() ? (e.isPrivateIdentifier() ? this._reportErrorForPrivateIdentifier(e, "expected identifier, keyword or string") : this.error("Unexpected ".concat(this.prettyPrintToken(e), ", expected identifier, keyword, or string")), "") : (this.advance(), e.toString()); + } + parseChain() { + let e = [], t = this.inputIndex; + for (; this.index < this.tokens.length; ) { + let n = this.parsePipe(); + if (e.push(n), this.consumeOptionalCharacter(te)) + for (this.parseAction || this.error("Binding expression cannot contain chained expression"); this.consumeOptionalCharacter(te); ) + ; + else + this.index < this.tokens.length && this.error("Unexpected token '".concat(this.next, "'")); + } + if (e.length == 0) { + let n = this.offset, r = this.offset + this.inputLength; + return new M(this.span(n, r), this.sourceSpan(n, r)); + } + return e.length == 1 ? e[0] : new oe(this.span(t), this.sourceSpan(t), e); + } + parsePipe() { + let e = this.inputIndex, t = this.parseExpression(); + if (this.consumeOptionalOperator("|")) { + this.parseAction && this.error("Cannot have a pipe in an action expression"); + do { + let n = this.inputIndex, r = this.expectIdentifierOrKeyword(), s, a; + r !== null ? s = this.sourceSpan(n) : (r = "", a = this.next.index !== -1 ? this.next.index : this.inputLength + this.offset, s = new V(a, a).toAbsolute(this.absoluteOffset)); + let i = []; + for (; this.consumeOptionalCharacter(X); ) + i.push(this.parseExpression()); + t = new fe(this.span(e), this.sourceSpan(e, a), t, r, i, s); + } while (this.consumeOptionalOperator("|")); + } + return t; + } + parseExpression() { + return this.parseConditional(); + } + parseConditional() { + let e = this.inputIndex, t = this.parseLogicalOr(); + if (this.consumeOptionalOperator("?")) { + let n = this.parsePipe(), r; + if (this.consumeOptionalCharacter(X)) + r = this.parsePipe(); + else { + let s = this.inputIndex, a = this.input.substring(e, s); + this.error("Conditional expression ".concat(a, " requires all 3 expressions")), r = new M(this.span(e), this.sourceSpan(e)); + } + return new ce(this.span(e), this.sourceSpan(e), t, n, r); + } else + return t; + } + parseLogicalOr() { + let e = this.inputIndex, t = this.parseLogicalAnd(); + for (; this.consumeOptionalOperator("||"); ) { + let n = this.parseLogicalAnd(); + t = new K(this.span(e), this.sourceSpan(e), "||", t, n); + } + return t; + } + parseLogicalAnd() { + let e = this.inputIndex, t = this.parseNullishCoalescing(); + for (; this.consumeOptionalOperator("&&"); ) { + let n = this.parseNullishCoalescing(); + t = new K(this.span(e), this.sourceSpan(e), "&&", t, n); + } + return t; + } + parseNullishCoalescing() { + let e = this.inputIndex, t = this.parseEquality(); + for (; this.consumeOptionalOperator("??"); ) { + let n = this.parseEquality(); + t = new K(this.span(e), this.sourceSpan(e), "??", t, n); + } + return t; + } + parseEquality() { + let e = this.inputIndex, t = this.parseRelational(); + for (; this.next.type == S.Operator; ) { + let n = this.next.strValue; + switch (n) { + case "==": + case "===": + case "!=": + case "!==": + this.advance(); + let r = this.parseRelational(); + t = new K(this.span(e), this.sourceSpan(e), n, t, r); + continue; + } + break; + } + return t; + } + parseRelational() { + let e = this.inputIndex, t = this.parseAdditive(); + for (; this.next.type == S.Operator; ) { + let n = this.next.strValue; + switch (n) { + case "<": + case ">": + case "<=": + case ">=": + this.advance(); + let r = this.parseAdditive(); + t = new K(this.span(e), this.sourceSpan(e), n, t, r); + continue; + } + break; + } + return t; + } + parseAdditive() { + let e = this.inputIndex, t = this.parseMultiplicative(); + for (; this.next.type == S.Operator; ) { + let n = this.next.strValue; + switch (n) { + case "+": + case "-": + this.advance(); + let r = this.parseMultiplicative(); + t = new K(this.span(e), this.sourceSpan(e), n, t, r); + continue; + } + break; + } + return t; + } + parseMultiplicative() { + let e = this.inputIndex, t = this.parsePrefix(); + for (; this.next.type == S.Operator; ) { + let n = this.next.strValue; + switch (n) { + case "*": + case "%": + case "/": + this.advance(); + let r = this.parsePrefix(); + t = new K(this.span(e), this.sourceSpan(e), n, t, r); + continue; + } + break; + } + return t; + } + parsePrefix() { + if (this.next.type == S.Operator) { + let e = this.inputIndex, t = this.next.strValue, n; + switch (t) { + case "+": + return this.advance(), n = this.parsePrefix(), F.createPlus(this.span(e), this.sourceSpan(e), n); + case "-": + return this.advance(), n = this.parsePrefix(), F.createMinus(this.span(e), this.sourceSpan(e), n); + case "!": + return this.advance(), n = this.parsePrefix(), new xe(this.span(e), this.sourceSpan(e), n); + } + } + return this.parseCallChain(); + } + parseCallChain() { + let e = this.inputIndex, t = this.parsePrimary(); + for (; ; ) + if (this.consumeOptionalCharacter(H)) + t = this.parseAccessMemberOrMethodCall(t, e, false); + else if (this.consumeOptionalOperator("?.")) + t = this.consumeOptionalCharacter(Ae) ? this.parseKeyedReadOrWrite(t, e, true) : this.parseAccessMemberOrMethodCall(t, e, true); + else if (this.consumeOptionalCharacter(Ae)) + t = this.parseKeyedReadOrWrite(t, e, false); + else if (this.consumeOptionalCharacter(Ee)) { + this.rparensExpected++; + let n = this.parseCallArguments(); + this.rparensExpected--, this.expectCharacter(z), t = new Pe(this.span(e), this.sourceSpan(e), t, n); + } else if (this.consumeOptionalOperator("!")) + t = new Se(this.span(e), this.sourceSpan(e), t); + else + return t; + } + parsePrimary() { + let e = this.inputIndex; + if (this.consumeOptionalCharacter(Ee)) { + this.rparensExpected++; + let t = this.parsePipe(); + return this.rparensExpected--, this.expectCharacter(z), t; + } else { + if (this.next.isKeywordNull()) + return this.advance(), new B(this.span(e), this.sourceSpan(e), null); + if (this.next.isKeywordUndefined()) + return this.advance(), new B(this.span(e), this.sourceSpan(e), void 0); + if (this.next.isKeywordTrue()) + return this.advance(), new B(this.span(e), this.sourceSpan(e), true); + if (this.next.isKeywordFalse()) + return this.advance(), new B(this.span(e), this.sourceSpan(e), false); + if (this.next.isKeywordThis()) + return this.advance(), new Ye(this.span(e), this.sourceSpan(e)); + if (this.consumeOptionalCharacter(Ae)) { + this.rbracketsExpected++; + let t = this.parseExpressionList(ne); + return this.rbracketsExpected--, this.expectCharacter(ne), new ge(this.span(e), this.sourceSpan(e), t); + } else { + if (this.next.isCharacter(Be)) + return this.parseLiteralMap(); + if (this.next.isIdentifier()) + return this.parseAccessMemberOrMethodCall(new Oe(this.span(e), this.sourceSpan(e)), e, false); + if (this.next.isNumber()) { + let t = this.next.toNumber(); + return this.advance(), new B(this.span(e), this.sourceSpan(e), t); + } else if (this.next.isString()) { + let t = this.next.toString(); + return this.advance(), new B(this.span(e), this.sourceSpan(e), t); + } else + return this.next.isPrivateIdentifier() ? (this._reportErrorForPrivateIdentifier(this.next, null), new M(this.span(e), this.sourceSpan(e))) : this.index >= this.tokens.length ? (this.error("Unexpected end of expression: ".concat(this.input)), new M(this.span(e), this.sourceSpan(e))) : (this.error("Unexpected token ".concat(this.next)), new M(this.span(e), this.sourceSpan(e))); + } + } + } + parseExpressionList(e) { + let t = []; + do + if (!this.next.isCharacter(e)) + t.push(this.parsePipe()); + else + break; + while (this.consumeOptionalCharacter(ee)); + return t; + } + parseLiteralMap() { + let e = [], t = [], n = this.inputIndex; + if (this.expectCharacter(Be), !this.consumeOptionalCharacter(_e)) { + this.rbracesExpected++; + do { + let r = this.inputIndex, s = this.next.isString(), a = this.expectIdentifierOrKeywordOrString(); + if (e.push({ key: a, quoted: s }), s) + this.expectCharacter(X), t.push(this.parsePipe()); + else if (this.consumeOptionalCharacter(X)) + t.push(this.parsePipe()); + else { + let i = this.span(r), l = this.sourceSpan(r); + t.push(new re(i, l, l, new Oe(i, l), a)); + } + } while (this.consumeOptionalCharacter(ee)); + this.rbracesExpected--, this.expectCharacter(_e); + } + return new ve(this.span(n), this.sourceSpan(n), e, t); + } + parseAccessMemberOrMethodCall(e, t, n) { + let r = this.inputIndex, s = this.withContext(Z.Writable, () => { + var i; + let l = (i = this.expectIdentifierOrKeyword()) !== null && i !== void 0 ? i : ""; + return l.length === 0 && this.error("Expected identifier for property access", e.span.end), l; + }), a = this.sourceSpan(r); + if (this.consumeOptionalCharacter(Ee)) { + let i = this.inputIndex; + this.rparensExpected++; + let l = this.parseCallArguments(), h = this.span(i, this.inputIndex).toAbsolute(this.absoluteOffset); + this.expectCharacter(z), this.rparensExpected--; + let P = this.span(t), p = this.sourceSpan(t); + return n ? new we(P, p, a, e, s, l, h) : new ye(P, p, a, e, s, l, h); + } else { + if (n) + return this.consumeOptionalOperator("=") ? (this.error("The '?.' operator cannot be used in the assignment"), new M(this.span(t), this.sourceSpan(t))) : new he(this.span(t), this.sourceSpan(t), a, e, s); + if (this.consumeOptionalOperator("=")) { + if (!this.parseAction) + return this.error("Bindings cannot contain assignments"), new M(this.span(t), this.sourceSpan(t)); + let i = this.parseConditional(); + return new ue(this.span(t), this.sourceSpan(t), a, e, s, i); + } else + return new re(this.span(t), this.sourceSpan(t), a, e, s); + } + } + parseCallArguments() { + if (this.next.isCharacter(z)) + return []; + let e = []; + do + e.push(this.parsePipe()); + while (this.consumeOptionalCharacter(ee)); + return e; + } + expectTemplateBindingKey() { + let e = "", t = false, n = this.currentAbsoluteOffset; + do + e += this.expectIdentifierOrKeywordOrString(), t = this.consumeOptionalOperator("-"), t && (e += "-"); + while (t); + return { source: e, span: new U(n, n + e.length) }; + } + parseTemplateBindings(e) { + let t = []; + for (t.push(...this.parseDirectiveKeywordBindings(e)); this.index < this.tokens.length; ) { + let n = this.parseLetBinding(); + if (n) + t.push(n); + else { + let r = this.expectTemplateBindingKey(), s = this.parseAsBinding(r); + s ? t.push(s) : (r.source = e.source + r.source.charAt(0).toUpperCase() + r.source.substring(1), t.push(...this.parseDirectiveKeywordBindings(r))); + } + this.consumeStatementTerminator(); + } + return new Qe(t, [], this.errors); + } + parseKeyedReadOrWrite(e, t, n) { + return this.withContext(Z.Writable, () => { + this.rbracketsExpected++; + let r = this.parsePipe(); + if (r instanceof M && this.error("Key access cannot be empty"), this.rbracketsExpected--, this.expectCharacter(ne), this.consumeOptionalOperator("=")) + if (n) + this.error("The '?.' operator cannot be used in the assignment"); + else { + let s = this.parseConditional(); + return new de(this.span(t), this.sourceSpan(t), e, r, s); + } + else + return n ? new pe(this.span(t), this.sourceSpan(t), e, r) : new le(this.span(t), this.sourceSpan(t), e, r); + return new M(this.span(t), this.sourceSpan(t)); + }); + } + parseDirectiveKeywordBindings(e) { + let t = []; + this.consumeOptionalCharacter(X); + let n = this.getDirectiveBoundTarget(), r = this.currentAbsoluteOffset, s = this.parseAsBinding(e); + s || (this.consumeStatementTerminator(), r = this.currentAbsoluteOffset); + let a = new U(e.span.start, r); + return t.push(new Ze(a, e, n)), s && t.push(s), t; + } + getDirectiveBoundTarget() { + if (this.next === Ie || this.peekKeywordAs() || this.peekKeywordLet()) + return null; + let e = this.parsePipe(), { start: t, end: n } = e.span, r = this.input.substring(t, n); + return new G(e, r, this.location, this.absoluteOffset + t, this.errors); + } + parseAsBinding(e) { + if (!this.peekKeywordAs()) + return null; + this.advance(); + let t = this.expectTemplateBindingKey(); + this.consumeStatementTerminator(); + let n = new U(e.span.start, this.currentAbsoluteOffset); + return new Re(n, t, e); + } + parseLetBinding() { + if (!this.peekKeywordLet()) + return null; + let e = this.currentAbsoluteOffset; + this.advance(); + let t = this.expectTemplateBindingKey(), n = null; + this.consumeOptionalOperator("=") && (n = this.expectTemplateBindingKey()), this.consumeStatementTerminator(); + let r = new U(e, this.currentAbsoluteOffset); + return new Re(r, t, n); + } + consumeStatementTerminator() { + this.consumeOptionalCharacter(te) || this.consumeOptionalCharacter(ee); + } + error(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + this.errors.push(new ae(e, this.input, this.locationText(t), this.location)), this.skip(); + } + locationText() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; + return e == null && (e = this.index), e < this.tokens.length ? "at column ".concat(this.tokens[e].index + 1, " in") : "at the end of the expression"; + } + _reportErrorForPrivateIdentifier(e, t) { + let n = "Private identifiers are not supported. Unexpected private identifier: ".concat(e); + t !== null && (n += ", ".concat(t)), this.error(n); + } + skip() { + let e = this.next; + for (; this.index < this.tokens.length && !e.isCharacter(te) && !e.isOperator("|") && (this.rparensExpected <= 0 || !e.isCharacter(z)) && (this.rbracesExpected <= 0 || !e.isCharacter(_e)) && (this.rbracketsExpected <= 0 || !e.isCharacter(ne)) && (!(this.context & Z.Writable) || !e.isOperator("=")); ) + this.next.isError() && this.errors.push(new ae(this.next.toString(), this.input, this.locationText(), this.location)), this.advance(), e = this.next; + } + }, yt = class { + constructor() { + this.errors = []; + } + visitImplicitReceiver(e, t) { + } + visitThisReceiver(e, t) { + } + visitInterpolation(e, t) { + } + visitLiteralPrimitive(e, t) { + } + visitPropertyRead(e, t) { + } + visitPropertyWrite(e, t) { + } + visitSafePropertyRead(e, t) { + } + visitMethodCall(e, t) { + } + visitSafeMethodCall(e, t) { + } + visitFunctionCall(e, t) { + } + visitLiteralArray(e, t) { + this.visitAll(e.expressions, t); + } + visitLiteralMap(e, t) { + this.visitAll(e.values, t); + } + visitUnary(e, t) { + } + visitBinary(e, t) { + } + visitPrefixNot(e, t) { + } + visitNonNullAssert(e, t) { + } + visitConditional(e, t) { + } + visitPipe(e, t) { + this.errors.push("pipes"); + } + visitKeyedRead(e, t) { + } + visitKeyedWrite(e, t) { + } + visitAll(e, t) { + return e.map((n) => n.visit(this, t)); + } + visitChain(e, t) { + } + visitQuote(e, t) { + } + visitSafeKeyedRead(e, t) { + } + }, wt = class extends et { + constructor() { + super(...arguments), this.errors = []; + } + visitPipe() { + this.errors.push("pipes"); + } + }; + } }), ft = q({ "node_modules/angular-estree-parser/lib/utils.js"(e) { + "use strict"; + L(), Object.defineProperty(e, "__esModule", { value: true }), e.getLast = e.toLowerCamelCase = e.findBackChar = e.findFrontChar = e.fitSpans = e.getNgType = e.parseNgInterpolation = e.parseNgTemplateBindings = e.parseNgAction = e.parseNgSimpleBinding = e.parseNgBinding = e.NG_PARSE_TEMPLATE_BINDINGS_FAKE_PREFIX = void 0; + var t = (tt(), be(Je)), n = (tn(), be(Yt)), r = (Ln(), be(rn)), s = "angular-estree-parser"; + e.NG_PARSE_TEMPLATE_BINDINGS_FAKE_PREFIX = "NgEstreeParser"; + var a = 0, i = [s, a]; + function l() { + return new r.Parser(new n.Lexer()); + } + function h(o, d) { + let y = l(), { astInput: C, comments: E } = T(o, y), { ast: I, errors: j } = d(C, y); + return R(j), { ast: I, comments: E }; + } + function P(o) { + return h(o, (d, y) => y.parseBinding(d, ...i)); + } + e.parseNgBinding = P; + function p(o) { + return h(o, (d, y) => y.parseSimpleBinding(d, ...i)); + } + e.parseNgSimpleBinding = p; + function x(o) { + return h(o, (d, y) => y.parseAction(d, ...i)); + } + e.parseNgAction = x; + function A(o) { + let d = l(), { templateBindings: y, errors: C } = d.parseTemplateBindings(e.NG_PARSE_TEMPLATE_BINDINGS_FAKE_PREFIX, o, s, a, a); + return R(C), y; + } + e.parseNgTemplateBindings = A; + function b(o) { + let d = l(), { astInput: y, comments: C } = T(o, d), E = "{{", I = "}}", { ast: j, errors: cn } = d.parseInterpolation(E + y + I, ...i); + R(cn); + let gt = j.expressions[0], vt = /* @__PURE__ */ new Set(); + return _(gt, (ke) => { + vt.has(ke) || (ke.start -= E.length, ke.end -= E.length, vt.add(ke)); + }), { ast: gt, comments: C }; + } + e.parseNgInterpolation = b; + function _(o, d) { + if (!(!o || typeof o != "object")) { + if (Array.isArray(o)) + return o.forEach((y) => _(y, d)); + for (let y of Object.keys(o)) { + let C = o[y]; + y === "span" ? d(C) : _(C, d); + } + } + } + function R(o) { + if (o.length !== 0) { + let [{ message: d }] = o; + throw new SyntaxError(d.replace(/^Parser Error: | at column \d+ in [^]*$/g, "")); + } + } + function T(o, d) { + let y = d._commentStart(o); + return y === null ? { astInput: o, comments: [] } : { astInput: o.slice(0, y), comments: [{ type: "Comment", value: o.slice(y + 2), span: { start: y, end: o.length } }] }; + } + function O(o) { + return t.Unary && o instanceof t.Unary ? "Unary" : o instanceof t.Binary ? "Binary" : o instanceof t.BindingPipe ? "BindingPipe" : o instanceof t.Chain ? "Chain" : o instanceof t.Conditional ? "Conditional" : o instanceof t.EmptyExpr ? "EmptyExpr" : o instanceof t.FunctionCall ? "FunctionCall" : o instanceof t.ImplicitReceiver ? "ImplicitReceiver" : o instanceof t.KeyedRead ? "KeyedRead" : o instanceof t.KeyedWrite ? "KeyedWrite" : o instanceof t.LiteralArray ? "LiteralArray" : o instanceof t.LiteralMap ? "LiteralMap" : o instanceof t.LiteralPrimitive ? "LiteralPrimitive" : o instanceof t.MethodCall ? "MethodCall" : o instanceof t.NonNullAssert ? "NonNullAssert" : o instanceof t.PrefixNot ? "PrefixNot" : o instanceof t.PropertyRead ? "PropertyRead" : o instanceof t.PropertyWrite ? "PropertyWrite" : o instanceof t.Quote ? "Quote" : o instanceof t.SafeMethodCall ? "SafeMethodCall" : o instanceof t.SafePropertyRead ? "SafePropertyRead" : o.type; + } + e.getNgType = O; + function N(o, d) { + let { start: y, end: C } = o, E = y, I = C; + for (; I !== E && /\s/.test(d[I - 1]); ) + I--; + for (; E !== I && /\s/.test(d[E]); ) + E++; + return { start: E, end: I }; + } + function c(o, d) { + let { start: y, end: C } = o, E = y, I = C; + for (; I !== d.length && /\s/.test(d[I]); ) + I++; + for (; E !== 0 && /\s/.test(d[E - 1]); ) + E--; + return { start: E, end: I }; + } + function g(o, d) { + return d[o.start - 1] === "(" && d[o.end] === ")" ? { start: o.start - 1, end: o.end + 1 } : o; + } + function u(o, d, y) { + let C = 0, E = { start: o.start, end: o.end }; + for (; ; ) { + let I = c(E, d), j = g(I, d); + if (I.start === j.start && I.end === j.end) + break; + E.start = j.start, E.end = j.end, C++; + } + return { hasParens: (y ? C - 1 : C) !== 0, outerSpan: N(y ? { start: E.start + 1, end: E.end - 1 } : E, d), innerSpan: N(o, d) }; + } + e.fitSpans = u; + function v(o, d, y) { + let C = d; + for (; !o.test(y[C]); ) + if (--C < 0) + throw new Error("Cannot find front char ".concat(o, " from index ").concat(d, " in ").concat(JSON.stringify(y))); + return C; + } + e.findFrontChar = v; + function m(o, d, y) { + let C = d; + for (; !o.test(y[C]); ) + if (++C >= y.length) + throw new Error("Cannot find back char ".concat(o, " from index ").concat(d, " in ").concat(JSON.stringify(y))); + return C; + } + e.findBackChar = m; + function f(o) { + return o.slice(0, 1).toLowerCase() + o.slice(1); + } + e.toLowerCamelCase = f; + function w(o) { + return o.length === 0 ? void 0 : o[o.length - 1]; + } + e.getLast = w; + } }), an = q({ "node_modules/angular-estree-parser/lib/transform.js"(e) { + "use strict"; + L(), Object.defineProperty(e, "__esModule", { value: true }), e.transformSpan = e.transform = void 0; + var t = ft(), n = function(s, a) { + let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, l = t.getNgType(s); + switch (l) { + case "Unary": { + let { operator: c, expr: g } = s, u = h(g); + return p("UnaryExpression", { prefix: true, argument: u, operator: c }, s.span, { hasParentParens: i }); + } + case "Binary": { + let { left: c, operation: g, right: u } = s, v = u.span.start === u.span.end, m = c.span.start === c.span.end; + if (v || m) { + let o = c.span.start === c.span.end ? h(u) : h(c); + return p("UnaryExpression", { prefix: true, argument: o, operator: v ? "+" : "-" }, { start: s.span.start, end: N(o) }, { hasParentParens: i }); + } + let f = h(c), w = h(u); + return p(g === "&&" || g === "||" ? "LogicalExpression" : "BinaryExpression", { left: f, right: w, operator: g }, { start: O(f), end: N(w) }, { hasParentParens: i }); + } + case "BindingPipe": { + let { exp: c, name: g, args: u } = s, v = h(c), m = b(/\S/, b(/\|/, N(v)) + 1), f = p("Identifier", { name: g }, { start: m, end: m + g.length }), w = u.map(h); + return p("NGPipeExpression", { left: v, right: f, arguments: w }, { start: O(v), end: N(w.length === 0 ? f : t.getLast(w)) }, { hasParentParens: i }); + } + case "Chain": { + let { expressions: c } = s; + return p("NGChainedExpression", { expressions: c.map(h) }, s.span, { hasParentParens: i }); + } + case "Comment": { + let { value: c } = s; + return p("CommentLine", { value: c }, s.span, { processSpan: false }); + } + case "Conditional": { + let { condition: c, trueExp: g, falseExp: u } = s, v = h(c), m = h(g), f = h(u); + return p("ConditionalExpression", { test: v, consequent: m, alternate: f }, { start: O(v), end: N(f) }, { hasParentParens: i }); + } + case "EmptyExpr": + return p("NGEmptyExpression", {}, s.span, { hasParentParens: i }); + case "FunctionCall": { + let { target: c, args: g } = s, u = g.length === 1 ? [P(g[0])] : g.map(h), v = h(c); + return p("CallExpression", { callee: v, arguments: u }, { start: O(v), end: s.span.end }, { hasParentParens: i }); + } + case "ImplicitReceiver": + return p("ThisExpression", {}, s.span, { hasParentParens: i }); + case "KeyedRead": { + let { key: c } = s, g = Object.prototype.hasOwnProperty.call(s, "receiver") ? s.receiver : s.obj, u = h(c); + return x(g, u, { computed: true, optional: false }, { end: s.span.end, hasParentParens: i }); + } + case "LiteralArray": { + let { expressions: c } = s; + return p("ArrayExpression", { elements: c.map(h) }, s.span, { hasParentParens: i }); + } + case "LiteralMap": { + let { keys: c, values: g } = s, u = g.map((m) => h(m)), v = c.map((m, f) => { + let { key: w, quoted: o } = m, d = u[f], y = b(/\S/, f === 0 ? s.span.start + 1 : b(/,/, N(u[f - 1])) + 1), C = A(/\S/, A(/:/, O(d) - 1) - 1) + 1, E = { start: y, end: C }, I = o ? p("StringLiteral", { value: w }, E) : p("Identifier", { name: w }, E), j = I.end < I.start; + return p("ObjectProperty", { key: I, value: d, method: false, shorthand: j, computed: false }, { start: O(I), end: N(d) }); + }); + return p("ObjectExpression", { properties: v }, s.span, { hasParentParens: i }); + } + case "LiteralPrimitive": { + let { value: c } = s; + switch (typeof c) { + case "boolean": + return p("BooleanLiteral", { value: c }, s.span, { hasParentParens: i }); + case "number": + return p("NumericLiteral", { value: c }, s.span, { hasParentParens: i }); + case "object": + return p("NullLiteral", {}, s.span, { hasParentParens: i }); + case "string": + return p("StringLiteral", { value: c }, s.span, { hasParentParens: i }); + case "undefined": + return p("Identifier", { name: "undefined" }, s.span, { hasParentParens: i }); + default: + throw new Error("Unexpected LiteralPrimitive value type ".concat(typeof c)); + } + } + case "MethodCall": + case "SafeMethodCall": { + let c = l === "SafeMethodCall", { receiver: g, name: u, args: v } = s, m = v.length === 1 ? [P(v[0])] : v.map(h), f = A(/\S/, A(/\(/, (m.length === 0 ? A(/\)/, s.span.end - 1) : O(m[0])) - 1) - 1) + 1, w = p("Identifier", { name: u }, { start: f - u.length, end: f }), o = x(g, w, { computed: false, optional: c }), d = R(o); + return p(c || d ? "OptionalCallExpression" : "CallExpression", { callee: o, arguments: m }, { start: O(o), end: s.span.end }, { hasParentParens: i }); + } + case "NonNullAssert": { + let { expression: c } = s, g = h(c); + return p("TSNonNullExpression", { expression: g }, { start: O(g), end: s.span.end }, { hasParentParens: i }); + } + case "PrefixNot": { + let { expression: c } = s, g = h(c); + return p("UnaryExpression", { prefix: true, operator: "!", argument: g }, { start: s.span.start, end: N(g) }, { hasParentParens: i }); + } + case "PropertyRead": + case "SafePropertyRead": { + let c = l === "SafePropertyRead", { receiver: g, name: u } = s, v = A(/\S/, s.span.end - 1) + 1, m = p("Identifier", { name: u }, { start: v - u.length, end: v }, _(g) ? { hasParentParens: i } : {}); + return x(g, m, { computed: false, optional: c }, { hasParentParens: i }); + } + case "KeyedWrite": { + let { key: c, value: g } = s, u = Object.prototype.hasOwnProperty.call(s, "receiver") ? s.receiver : s.obj, v = h(c), m = h(g), f = x(u, v, { computed: true, optional: false }, { end: b(/\]/, N(v)) + 1 }); + return p("AssignmentExpression", { left: f, operator: "=", right: m }, { start: O(f), end: N(m) }, { hasParentParens: i }); + } + case "PropertyWrite": { + let { receiver: c, name: g, value: u } = s, v = h(u), m = A(/\S/, A(/=/, O(v) - 1) - 1) + 1, f = p("Identifier", { name: g }, { start: m - g.length, end: m }), w = x(c, f, { computed: false, optional: false }); + return p("AssignmentExpression", { left: w, operator: "=", right: v }, { start: O(w), end: N(v) }, { hasParentParens: i }); + } + case "Quote": { + let { prefix: c, uninterpretedExpression: g } = s; + return p("NGQuotedExpression", { prefix: c, value: g }, s.span, { hasParentParens: i }); + } + default: + throw new Error("Unexpected node ".concat(l)); + } + function h(c) { + return e.transform(c, a); + } + function P(c) { + return e.transform(c, a, true); + } + function p(c, g, u) { + let { processSpan: v = true, hasParentParens: m = false } = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, f = Object.assign(Object.assign({ type: c }, r(u, a, v, m)), g); + switch (c) { + case "Identifier": { + let w = f; + w.loc.identifierName = w.name; + break; + } + case "NumericLiteral": { + let w = f; + w.extra = Object.assign(Object.assign({}, w.extra), { raw: a.text.slice(w.start, w.end), rawValue: w.value }); + break; + } + case "StringLiteral": { + let w = f; + w.extra = Object.assign(Object.assign({}, w.extra), { raw: a.text.slice(w.start, w.end), rawValue: w.value }); + break; + } + } + return f; + } + function x(c, g, u) { + let { end: v = N(g), hasParentParens: m = false } = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}; + if (_(c) || c.span.start === g.start) + return g; + let f = h(c), w = R(f); + return p(u.optional || w ? "OptionalMemberExpression" : "MemberExpression", Object.assign({ object: f, property: g, computed: u.computed }, u.optional ? { optional: true } : w ? { optional: false } : null), { start: O(f), end: v }, { hasParentParens: m }); + } + function A(c, g) { + return t.findFrontChar(c, g, a.text); + } + function b(c, g) { + return t.findBackChar(c, g, a.text); + } + function _(c) { + return c.span.start >= c.span.end || /^\s+$/.test(a.text.slice(c.span.start, c.span.end)); + } + function R(c) { + return (c.type === "OptionalCallExpression" || c.type === "OptionalMemberExpression") && !T(c); + } + function T(c) { + return c.extra && c.extra.parenthesized; + } + function O(c) { + return T(c) ? c.extra.parenStart : c.start; + } + function N(c) { + return T(c) ? c.extra.parenEnd : c.end; + } + }; + e.transform = n; + function r(s, a) { + let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, l = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; + if (!i) { + let { start: x, end: A } = s; + return { start: x, end: A, loc: { start: a.locator.locationForIndex(x), end: a.locator.locationForIndex(A) } }; + } + let { outerSpan: h, innerSpan: P, hasParens: p } = t.fitSpans(s, a.text, l); + return Object.assign({ start: P.start, end: P.end, loc: { start: a.locator.locationForIndex(P.start), end: a.locator.locationForIndex(P.end) } }, p && { extra: { parenthesized: true, parenStart: h.start, parenEnd: h.end } }); + } + e.transformSpan = r; + } }), Rn = q({ "node_modules/angular-estree-parser/lib/transform-microsyntax.js"(e) { + "use strict"; + L(), Object.defineProperty(e, "__esModule", { value: true }), e.transformTemplateBindings = void 0; + var t = (tt(), be(Je)), n = an(), r = ft(); + function s(a, i) { + a.forEach(N); + let [l] = a, { key: h } = l, P = i.text.slice(l.sourceSpan.start, l.sourceSpan.end).trim().length === 0 ? a.slice(1) : a, p = [], x = null; + for (let u = 0; u < P.length; u++) { + let v = P[u]; + if (x && T(x) && O(v) && v.value && v.value.source === x.key.source) { + let m = _("NGMicrosyntaxKey", { name: v.key.source }, v.key.span), f = (d, y) => Object.assign(Object.assign({}, d), n.transformSpan({ start: d.start, end: y }, i)), w = (d) => Object.assign(Object.assign({}, f(d, m.end)), { alias: m }), o = p.pop(); + if (o.type === "NGMicrosyntaxExpression") + p.push(w(o)); + else if (o.type === "NGMicrosyntaxKeyedExpression") { + let d = w(o.expression); + p.push(f(Object.assign(Object.assign({}, o), { expression: d }), d.end)); + } else + throw new Error("Unexpected type ".concat(o.type)); + } else + p.push(A(v, u)); + x = v; + } + return _("NGMicrosyntax", { body: p }, p.length === 0 ? a[0].sourceSpan : { start: p[0].start, end: p[p.length - 1].end }); + function A(u, v) { + if (T(u)) { + let { key: m, value: f } = u; + return f ? v === 0 ? _("NGMicrosyntaxExpression", { expression: b(f.ast), alias: null }, f.sourceSpan) : _("NGMicrosyntaxKeyedExpression", { key: _("NGMicrosyntaxKey", { name: R(m.source) }, m.span), expression: _("NGMicrosyntaxExpression", { expression: b(f.ast), alias: null }, f.sourceSpan) }, { start: m.span.start, end: f.sourceSpan.end }) : _("NGMicrosyntaxKey", { name: R(m.source) }, m.span); + } else { + let { key: m, sourceSpan: f } = u; + if (/^let\s$/.test(i.text.slice(f.start, f.start + 4))) { + let { value: o } = u; + return _("NGMicrosyntaxLet", { key: _("NGMicrosyntaxKey", { name: m.source }, m.span), value: o ? _("NGMicrosyntaxKey", { name: o.source }, o.span) : null }, { start: f.start, end: o ? o.span.end : m.span.end }); + } else { + let o = g(u); + return _("NGMicrosyntaxAs", { key: _("NGMicrosyntaxKey", { name: o.source }, o.span), alias: _("NGMicrosyntaxKey", { name: m.source }, m.span) }, { start: o.span.start, end: m.span.end }); + } + } + } + function b(u) { + return n.transform(u, i); + } + function _(u, v, m) { + let f = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; + return Object.assign(Object.assign({ type: u }, n.transformSpan(m, i, f)), v); + } + function R(u) { + return r.toLowerCamelCase(u.slice(h.source.length)); + } + function T(u) { + return u instanceof t.ExpressionBinding; + } + function O(u) { + return u instanceof t.VariableBinding; + } + function N(u) { + c(u.key.span), O(u) && u.value && c(u.value.span); + } + function c(u) { + if (i.text[u.start] !== '"' && i.text[u.start] !== "'") + return; + let v = i.text[u.start], m = false; + for (let f = u.start + 1; f < i.text.length; f++) + switch (i.text[f]) { + case v: + if (!m) { + u.end = f + 1; + return; + } + default: + m = false; + break; + case "\\": + m = !m; + break; + } + } + function g(u) { + if (!u.value || u.value.source !== r.NG_PARSE_TEMPLATE_BINDINGS_FAKE_PREFIX) + return u.value; + let v = r.findBackChar(/\S/, u.sourceSpan.start, i.text); + return { source: "$implicit", span: { start: v, end: v } }; + } + } + e.transformTemplateBindings = s; + } }), Tn = q({ "node_modules/angular-estree-parser/lib/index.js"(e) { + "use strict"; + L(), Object.defineProperty(e, "__esModule", { value: true }), e.parseTemplateBindings = e.parseAction = e.parseInterpolation = e.parseSimpleBinding = e.parseBinding = void 0; + var t = vn(), n = an(), r = Rn(), s = ft(); + function a(x, A) { + let { ast: b, comments: _ } = A(x), R = new t.Context(x), T = (N) => n.transform(N, R), O = T(b); + return O.comments = _.map(T), O; + } + function i(x) { + return a(x, s.parseNgBinding); + } + e.parseBinding = i; + function l(x) { + return a(x, s.parseNgSimpleBinding); + } + e.parseSimpleBinding = l; + function h(x) { + return a(x, s.parseNgInterpolation); + } + e.parseInterpolation = h; + function P(x) { + return a(x, s.parseNgAction); + } + e.parseAction = P; + function p(x) { + return r.transformTemplateBindings(s.parseNgTemplateBindings(x), new t.Context(x)); + } + e.parseTemplateBindings = p; + } }); + L(); + var { locStart: Bn, locEnd: Kn } = fn(); + function Ne(e) { + return { astFormat: "estree", parse: (n, r, s) => { + let a = Tn(), i = e(n, a); + return { type: "NGRoot", node: s.parser === "__ng_action" && i.type !== "NGChainedExpression" ? Object.assign(Object.assign({}, i), {}, { type: "NGChainedExpression", expressions: [i] }) : i }; + }, locStart: Bn, locEnd: Kn }; + } + on.exports = { parsers: { __ng_action: Ne((e, t) => t.parseAction(e)), __ng_binding: Ne((e, t) => t.parseBinding(e)), __ng_interpolation: Ne((e, t) => t.parseInterpolation(e)), __ng_directive: Ne((e, t) => t.parseTemplateBindings(e)) } }; + }); + return Mn(); + }); + } +}); + +// node_modules/prettier/parser-espree.js +var require_parser_espree = __commonJS({ + "node_modules/prettier/parser-espree.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.espree = e(); + } + })(function() { + "use strict"; + var S = (n, o) => () => (o || n((o = { exports: {} }).exports, o), o.exports); + var $ = S((Dh, qr) => { + var Ze = function(n) { + return n && n.Math == Math && n; + }; + qr.exports = Ze(typeof globalThis == "object" && globalThis) || Ze(typeof window == "object" && window) || Ze(typeof self == "object" && self) || Ze(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var ye = S((Oh, Mr) => { + Mr.exports = function(n) { + try { + return !!n(); + } catch { + return true; + } + }; + }); + var _e = S((Lh, Ur) => { + var tn = ye(); + Ur.exports = !tn(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var Ct = S((Vh, zr) => { + var rn = ye(); + zr.exports = !rn(function() { + var n = function() { + }.bind(); + return typeof n != "function" || n.hasOwnProperty("prototype"); + }); + }); + var et = S((Rh, Wr) => { + var sn = Ct(), $e = Function.prototype.call; + Wr.exports = sn ? $e.bind($e) : function() { + return $e.apply($e, arguments); + }; + }); + var Hr = S((Xr) => { + "use strict"; + var Gr = {}.propertyIsEnumerable, Kr = Object.getOwnPropertyDescriptor, an = Kr && !Gr.call({ 1: 2 }, 1); + Xr.f = an ? function(o) { + var u = Kr(this, o); + return !!u && u.enumerable; + } : Gr; + }); + var Et = S((qh, Jr) => { + Jr.exports = function(n, o) { + return { enumerable: !(n & 1), configurable: !(n & 2), writable: !(n & 4), value: o }; + }; + }); + var ce = S((Mh, Zr) => { + var Yr = Ct(), Qr = Function.prototype, nn = Qr.bind, bt = Qr.call, on = Yr && nn.bind(bt, bt); + Zr.exports = Yr ? function(n) { + return n && on(n); + } : function(n) { + return n && function() { + return bt.apply(n, arguments); + }; + }; + }); + var ti = S((Uh, ei) => { + var $r = ce(), un = $r({}.toString), hn = $r("".slice); + ei.exports = function(n) { + return hn(un(n), 8, -1); + }; + }); + var ii = S((zh, ri) => { + var ln = $(), cn = ce(), pn = ye(), fn = ti(), _t = ln.Object, dn = cn("".split); + ri.exports = pn(function() { + return !_t("z").propertyIsEnumerable(0); + }) ? function(n) { + return fn(n) == "String" ? dn(n, "") : _t(n); + } : _t; + }); + var St = S((Wh, si) => { + var mn = $(), vn = mn.TypeError; + si.exports = function(n) { + if (n == null) + throw vn("Can't call method on " + n); + return n; + }; + }); + var tt = S((Gh, ai) => { + var gn = ii(), xn = St(); + ai.exports = function(n) { + return gn(xn(n)); + }; + }); + var pe = S((Kh, ni) => { + ni.exports = function(n) { + return typeof n == "function"; + }; + }); + var Ie = S((Xh, oi) => { + var yn = pe(); + oi.exports = function(n) { + return typeof n == "object" ? n !== null : yn(n); + }; + }); + var rt = S((Hh, ui) => { + var wt = $(), An = pe(), Cn = function(n) { + return An(n) ? n : void 0; + }; + ui.exports = function(n, o) { + return arguments.length < 2 ? Cn(wt[n]) : wt[n] && wt[n][o]; + }; + }); + var li = S((Jh, hi) => { + var En = ce(); + hi.exports = En({}.isPrototypeOf); + }); + var pi = S((Yh, ci) => { + var bn = rt(); + ci.exports = bn("navigator", "userAgent") || ""; + }); + var yi = S((Qh, xi) => { + var gi = $(), kt = pi(), fi = gi.process, di = gi.Deno, mi = fi && fi.versions || di && di.version, vi = mi && mi.v8, he, it; + vi && (he = vi.split("."), it = he[0] > 0 && he[0] < 4 ? 1 : +(he[0] + he[1])); + !it && kt && (he = kt.match(/Edge\/(\d+)/), (!he || he[1] >= 74) && (he = kt.match(/Chrome\/(\d+)/), he && (it = +he[1]))); + xi.exports = it; + }); + var Ft = S((Zh, Ci) => { + var Ai = yi(), _n = ye(); + Ci.exports = !!Object.getOwnPropertySymbols && !_n(function() { + var n = Symbol(); + return !String(n) || !(Object(n) instanceof Symbol) || !Symbol.sham && Ai && Ai < 41; + }); + }); + var Bt = S(($h, Ei) => { + var Sn = Ft(); + Ei.exports = Sn && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var Tt = S((el, bi) => { + var wn = $(), kn = rt(), Fn = pe(), Bn = li(), Tn = Bt(), In = wn.Object; + bi.exports = Tn ? function(n) { + return typeof n == "symbol"; + } : function(n) { + var o = kn("Symbol"); + return Fn(o) && Bn(o.prototype, In(n)); + }; + }); + var Si = S((tl, _i) => { + var Pn = $(), Nn = Pn.String; + _i.exports = function(n) { + try { + return Nn(n); + } catch { + return "Object"; + } + }; + }); + var ki = S((rl, wi) => { + var Dn = $(), On = pe(), Ln = Si(), Vn = Dn.TypeError; + wi.exports = function(n) { + if (On(n)) + return n; + throw Vn(Ln(n) + " is not a function"); + }; + }); + var Bi = S((il, Fi) => { + var Rn = ki(); + Fi.exports = function(n, o) { + var u = n[o]; + return u == null ? void 0 : Rn(u); + }; + }); + var Ii = S((sl, Ti) => { + var jn = $(), It = et(), Pt = pe(), Nt = Ie(), qn = jn.TypeError; + Ti.exports = function(n, o) { + var u, l; + if (o === "string" && Pt(u = n.toString) && !Nt(l = It(u, n)) || Pt(u = n.valueOf) && !Nt(l = It(u, n)) || o !== "string" && Pt(u = n.toString) && !Nt(l = It(u, n))) + return l; + throw qn("Can't convert object to primitive value"); + }; + }); + var Ni = S((al, Pi) => { + Pi.exports = false; + }); + var st = S((nl, Oi) => { + var Di = $(), Mn = Object.defineProperty; + Oi.exports = function(n, o) { + try { + Mn(Di, n, { value: o, configurable: true, writable: true }); + } catch { + Di[n] = o; + } + return o; + }; + }); + var at = S((ol, Vi) => { + var Un = $(), zn = st(), Li = "__core-js_shared__", Wn = Un[Li] || zn(Li, {}); + Vi.exports = Wn; + }); + var Dt = S((ul, ji) => { + var Gn = Ni(), Ri = at(); + (ji.exports = function(n, o) { + return Ri[n] || (Ri[n] = o !== void 0 ? o : {}); + })("versions", []).push({ version: "3.22.2", mode: Gn ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var Mi = S((hl, qi) => { + var Kn = $(), Xn = St(), Hn = Kn.Object; + qi.exports = function(n) { + return Hn(Xn(n)); + }; + }); + var Ae = S((ll, Ui) => { + var Jn = ce(), Yn = Mi(), Qn = Jn({}.hasOwnProperty); + Ui.exports = Object.hasOwn || function(o, u) { + return Qn(Yn(o), u); + }; + }); + var Ot = S((cl, zi) => { + var Zn = ce(), $n = 0, eo = Math.random(), to = Zn(1 .toString); + zi.exports = function(n) { + return "Symbol(" + (n === void 0 ? "" : n) + ")_" + to(++$n + eo, 36); + }; + }); + var Ji = S((pl, Hi) => { + var ro = $(), io = Dt(), Wi = Ae(), so = Ot(), Gi = Ft(), Xi = Bt(), Pe = io("wks"), Se = ro.Symbol, Ki = Se && Se.for, ao = Xi ? Se : Se && Se.withoutSetter || so; + Hi.exports = function(n) { + if (!Wi(Pe, n) || !(Gi || typeof Pe[n] == "string")) { + var o = "Symbol." + n; + Gi && Wi(Se, n) ? Pe[n] = Se[n] : Xi && Ki ? Pe[n] = Ki(o) : Pe[n] = ao(o); + } + return Pe[n]; + }; + }); + var $i = S((fl, Zi) => { + var no = $(), oo = et(), Yi = Ie(), Qi = Tt(), uo = Bi(), ho = Ii(), lo = Ji(), co = no.TypeError, po = lo("toPrimitive"); + Zi.exports = function(n, o) { + if (!Yi(n) || Qi(n)) + return n; + var u = uo(n, po), l; + if (u) { + if (o === void 0 && (o = "default"), l = oo(u, n, o), !Yi(l) || Qi(l)) + return l; + throw co("Can't convert object to primitive value"); + } + return o === void 0 && (o = "number"), ho(n, o); + }; + }); + var Lt = S((dl, es) => { + var fo = $i(), mo = Tt(); + es.exports = function(n) { + var o = fo(n, "string"); + return mo(o) ? o : o + ""; + }; + }); + var is = S((ml, rs) => { + var vo = $(), ts = Ie(), Vt = vo.document, go = ts(Vt) && ts(Vt.createElement); + rs.exports = function(n) { + return go ? Vt.createElement(n) : {}; + }; + }); + var Rt = S((vl, ss) => { + var xo = _e(), yo = ye(), Ao = is(); + ss.exports = !xo && !yo(function() { + return Object.defineProperty(Ao("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var jt = S((ns) => { + var Co = _e(), Eo = et(), bo = Hr(), _o = Et(), So = tt(), wo = Lt(), ko = Ae(), Fo = Rt(), as = Object.getOwnPropertyDescriptor; + ns.f = Co ? as : function(o, u) { + if (o = So(o), u = wo(u), Fo) + try { + return as(o, u); + } catch { + } + if (ko(o, u)) + return _o(!Eo(bo.f, o, u), o[u]); + }; + }); + var us = S((xl, os) => { + var Bo = _e(), To = ye(); + os.exports = Bo && To(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var qt = S((yl, ls) => { + var hs = $(), Io = Ie(), Po = hs.String, No = hs.TypeError; + ls.exports = function(n) { + if (Io(n)) + return n; + throw No(Po(n) + " is not an object"); + }; + }); + var Gt = S((ps) => { + var Do = $(), Oo = _e(), Lo = Rt(), Vo = us(), nt = qt(), cs = Lt(), Ro = Do.TypeError, Mt = Object.defineProperty, jo = Object.getOwnPropertyDescriptor, Ut = "enumerable", zt = "configurable", Wt = "writable"; + ps.f = Oo ? Vo ? function(o, u, l) { + if (nt(o), u = cs(u), nt(l), typeof o == "function" && u === "prototype" && "value" in l && Wt in l && !l[Wt]) { + var m = jo(o, u); + m && m[Wt] && (o[u] = l.value, l = { configurable: zt in l ? l[zt] : m[zt], enumerable: Ut in l ? l[Ut] : m[Ut], writable: false }); + } + return Mt(o, u, l); + } : Mt : function(o, u, l) { + if (nt(o), u = cs(u), nt(l), Lo) + try { + return Mt(o, u, l); + } catch { + } + if ("get" in l || "set" in l) + throw Ro("Accessors not supported"); + return "value" in l && (o[u] = l.value), o; + }; + }); + var ot = S((Cl, fs5) => { + var qo = _e(), Mo = Gt(), Uo = Et(); + fs5.exports = qo ? function(n, o, u) { + return Mo.f(n, o, Uo(1, u)); + } : function(n, o, u) { + return n[o] = u, n; + }; + }); + var Xt = S((El, ds) => { + var zo = ce(), Wo = pe(), Kt = at(), Go = zo(Function.toString); + Wo(Kt.inspectSource) || (Kt.inspectSource = function(n) { + return Go(n); + }); + ds.exports = Kt.inspectSource; + }); + var gs = S((bl, vs) => { + var Ko = $(), Xo = pe(), Ho = Xt(), ms = Ko.WeakMap; + vs.exports = Xo(ms) && /native code/.test(Ho(ms)); + }); + var As = S((_l, ys) => { + var Jo = Dt(), Yo = Ot(), xs = Jo("keys"); + ys.exports = function(n) { + return xs[n] || (xs[n] = Yo(n)); + }; + }); + var Ht = S((Sl, Cs) => { + Cs.exports = {}; + }); + var ks = S((wl, ws) => { + var Qo = gs(), Ss = $(), Jt = ce(), Zo = Ie(), $o = ot(), Yt = Ae(), Qt = at(), eu = As(), tu = Ht(), Es = "Object already initialized", $t = Ss.TypeError, ru = Ss.WeakMap, ut, qe, ht, iu = function(n) { + return ht(n) ? qe(n) : ut(n, {}); + }, su = function(n) { + return function(o) { + var u; + if (!Zo(o) || (u = qe(o)).type !== n) + throw $t("Incompatible receiver, " + n + " required"); + return u; + }; + }; + Qo || Qt.state ? (Ce = Qt.state || (Qt.state = new ru()), bs = Jt(Ce.get), Zt = Jt(Ce.has), _s = Jt(Ce.set), ut = function(n, o) { + if (Zt(Ce, n)) + throw new $t(Es); + return o.facade = n, _s(Ce, n, o), o; + }, qe = function(n) { + return bs(Ce, n) || {}; + }, ht = function(n) { + return Zt(Ce, n); + }) : (we = eu("state"), tu[we] = true, ut = function(n, o) { + if (Yt(n, we)) + throw new $t(Es); + return o.facade = n, $o(n, we, o), o; + }, qe = function(n) { + return Yt(n, we) ? n[we] : {}; + }, ht = function(n) { + return Yt(n, we); + }); + var Ce, bs, Zt, _s, we; + ws.exports = { set: ut, get: qe, has: ht, enforce: iu, getterFor: su }; + }); + var Ts = S((kl, Bs) => { + var er = _e(), au = Ae(), Fs = Function.prototype, nu = er && Object.getOwnPropertyDescriptor, tr = au(Fs, "name"), ou = tr && function() { + }.name === "something", uu = tr && (!er || er && nu(Fs, "name").configurable); + Bs.exports = { EXISTS: tr, PROPER: ou, CONFIGURABLE: uu }; + }); + var Os = S((Fl, Ds) => { + var hu = $(), Is = pe(), lu = Ae(), Ps = ot(), cu = st(), pu = Xt(), Ns = ks(), fu = Ts().CONFIGURABLE, du = Ns.get, mu = Ns.enforce, vu = String(String).split("String"); + (Ds.exports = function(n, o, u, l) { + var m = l ? !!l.unsafe : false, E = l ? !!l.enumerable : false, y = l ? !!l.noTargetGet : false, A = l && l.name !== void 0 ? l.name : o, b; + if (Is(u) && (String(A).slice(0, 7) === "Symbol(" && (A = "[" + String(A).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!lu(u, "name") || fu && u.name !== A) && Ps(u, "name", A), b = mu(u), b.source || (b.source = vu.join(typeof A == "string" ? A : ""))), n === hu) { + E ? n[o] = u : cu(o, u); + return; + } else + m ? !y && n[o] && (E = true) : delete n[o]; + E ? n[o] = u : Ps(n, o, u); + })(Function.prototype, "toString", function() { + return Is(this) && du(this).source || pu(this); + }); + }); + var rr = S((Bl, Ls) => { + var gu = Math.ceil, xu = Math.floor; + Ls.exports = function(n) { + var o = +n; + return o !== o || o === 0 ? 0 : (o > 0 ? xu : gu)(o); + }; + }); + var Rs = S((Tl, Vs) => { + var yu = rr(), Au = Math.max, Cu = Math.min; + Vs.exports = function(n, o) { + var u = yu(n); + return u < 0 ? Au(u + o, 0) : Cu(u, o); + }; + }); + var qs = S((Il, js) => { + var Eu = rr(), bu = Math.min; + js.exports = function(n) { + return n > 0 ? bu(Eu(n), 9007199254740991) : 0; + }; + }); + var Us = S((Pl, Ms) => { + var _u = qs(); + Ms.exports = function(n) { + return _u(n.length); + }; + }); + var Gs = S((Nl, Ws) => { + var Su = tt(), wu = Rs(), ku = Us(), zs = function(n) { + return function(o, u, l) { + var m = Su(o), E = ku(m), y = wu(l, E), A; + if (n && u != u) { + for (; E > y; ) + if (A = m[y++], A != A) + return true; + } else + for (; E > y; y++) + if ((n || y in m) && m[y] === u) + return n || y || 0; + return !n && -1; + }; + }; + Ws.exports = { includes: zs(true), indexOf: zs(false) }; + }); + var Hs = S((Dl, Xs) => { + var Fu = ce(), ir = Ae(), Bu = tt(), Tu = Gs().indexOf, Iu = Ht(), Ks = Fu([].push); + Xs.exports = function(n, o) { + var u = Bu(n), l = 0, m = [], E; + for (E in u) + !ir(Iu, E) && ir(u, E) && Ks(m, E); + for (; o.length > l; ) + ir(u, E = o[l++]) && (~Tu(m, E) || Ks(m, E)); + return m; + }; + }); + var Ys = S((Ol, Js) => { + Js.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var Zs = S((Qs) => { + var Pu = Hs(), Nu = Ys(), Du = Nu.concat("length", "prototype"); + Qs.f = Object.getOwnPropertyNames || function(o) { + return Pu(o, Du); + }; + }); + var ea = S(($s) => { + $s.f = Object.getOwnPropertySymbols; + }); + var ra = S((Rl, ta) => { + var Ou = rt(), Lu = ce(), Vu = Zs(), Ru = ea(), ju = qt(), qu = Lu([].concat); + ta.exports = Ou("Reflect", "ownKeys") || function(o) { + var u = Vu.f(ju(o)), l = Ru.f; + return l ? qu(u, l(o)) : u; + }; + }); + var aa = S((jl, sa) => { + var ia = Ae(), Mu = ra(), Uu = jt(), zu = Gt(); + sa.exports = function(n, o, u) { + for (var l = Mu(o), m = zu.f, E = Uu.f, y = 0; y < l.length; y++) { + var A = l[y]; + !ia(n, A) && !(u && ia(u, A)) && m(n, A, E(o, A)); + } + }; + }); + var oa = S((ql, na) => { + var Wu = ye(), Gu = pe(), Ku = /#|\.prototype\./, Me = function(n, o) { + var u = Hu[Xu(n)]; + return u == Yu ? true : u == Ju ? false : Gu(o) ? Wu(o) : !!o; + }, Xu = Me.normalize = function(n) { + return String(n).replace(Ku, ".").toLowerCase(); + }, Hu = Me.data = {}, Ju = Me.NATIVE = "N", Yu = Me.POLYFILL = "P"; + na.exports = Me; + }); + var ha = S((Ml, ua) => { + var sr = $(), Qu = jt().f, Zu = ot(), $u = Os(), eh = st(), th = aa(), rh = oa(); + ua.exports = function(n, o) { + var u = n.target, l = n.global, m = n.stat, E, y, A, b, g, V; + if (l ? y = sr : m ? y = sr[u] || eh(u, {}) : y = (sr[u] || {}).prototype, y) + for (A in o) { + if (g = o[A], n.noTargetGet ? (V = Qu(y, A), b = V && V.value) : b = y[A], E = rh(l ? A : u + (m ? "." : "#") + A, n.forced), !E && b !== void 0) { + if (typeof g == typeof b) + continue; + th(g, b); + } + (n.sham || b && b.sham) && Zu(g, "sham", true), $u(y, A, g, n); + } + }; + }); + var la = S(() => { + var ih = ha(), sh = $(); + ih({ global: true }, { globalThis: sh }); + }); + var ca = S(() => { + la(); + }); + var Ph = S((Xl, Na) => { + ca(); + var ur = Object.defineProperty, ah = Object.getOwnPropertyDescriptor, hr = Object.getOwnPropertyNames, nh = Object.prototype.hasOwnProperty, pa = (n, o) => function() { + return n && (o = (0, n[hr(n)[0]])(n = 0)), o; + }, Y = (n, o) => function() { + return o || (0, n[hr(n)[0]])((o = { exports: {} }).exports, o), o.exports; + }, oh = (n, o) => { + for (var u in o) + ur(n, u, { get: o[u], enumerable: true }); + }, uh = (n, o, u, l) => { + if (o && typeof o == "object" || typeof o == "function") + for (let m of hr(o)) + !nh.call(n, m) && m !== u && ur(n, m, { get: () => o[m], enumerable: !(l = ah(o, m)) || l.enumerable }); + return n; + }, hh = (n) => uh(ur({}, "__esModule", { value: true }), n), J = pa({ ""() { + } }), lr = Y({ "src/common/parser-create-error.js"(n, o) { + "use strict"; + J(); + function u(l, m) { + let E = new SyntaxError(l + " (" + m.start.line + ":" + m.start.column + ")"); + return E.loc = m, E; + } + o.exports = u; + } }), fa = Y({ "src/utils/try-combinations.js"(n, o) { + "use strict"; + J(); + function u() { + let l; + for (var m = arguments.length, E = new Array(m), y = 0; y < m; y++) + E[y] = arguments[y]; + for (let [A, b] of E.entries()) + try { + return { result: b() }; + } catch (g) { + A === 0 && (l = g); + } + return { error: l }; + } + o.exports = u; + } }), da = {}; + oh(da, { EOL: () => or, arch: () => lh, cpus: () => Ca, default: () => wa, endianness: () => ma, freemem: () => ya, getNetworkInterfaces: () => Sa, hostname: () => va, loadavg: () => ga, networkInterfaces: () => _a, platform: () => ch, release: () => ba, tmpDir: () => ar, tmpdir: () => nr, totalmem: () => Aa, type: () => Ea, uptime: () => xa }); + function ma() { + if (typeof lt > "u") { + var n = new ArrayBuffer(2), o = new Uint8Array(n), u = new Uint16Array(n); + if (o[0] = 1, o[1] = 2, u[0] === 258) + lt = "BE"; + else if (u[0] === 513) + lt = "LE"; + else + throw new Error("unable to figure out endianess"); + } + return lt; + } + function va() { + return typeof globalThis.location < "u" ? globalThis.location.hostname : ""; + } + function ga() { + return []; + } + function xa() { + return 0; + } + function ya() { + return Number.MAX_VALUE; + } + function Aa() { + return Number.MAX_VALUE; + } + function Ca() { + return []; + } + function Ea() { + return "Browser"; + } + function ba() { + return typeof globalThis.navigator < "u" ? globalThis.navigator.appVersion : ""; + } + function _a() { + } + function Sa() { + } + function lh() { + return "javascript"; + } + function ch() { + return "browser"; + } + function ar() { + return "/tmp"; + } + var lt, nr, or, wa, ph = pa({ "node-modules-polyfills:os"() { + J(), nr = ar, or = ` +`, wa = { EOL: or, tmpdir: nr, tmpDir: ar, networkInterfaces: _a, getNetworkInterfaces: Sa, release: ba, type: Ea, cpus: Ca, totalmem: Aa, freemem: ya, uptime: xa, loadavg: ga, hostname: va, endianness: ma }; + } }), fh = Y({ "node-modules-polyfills-commonjs:os"(n, o) { + J(); + var u = (ph(), hh(da)); + if (u && u.default) { + o.exports = u.default; + for (let l in u) + o.exports[l] = u[l]; + } else + u && (o.exports = u); + } }), dh = Y({ "node_modules/detect-newline/index.js"(n, o) { + "use strict"; + J(); + var u = (l) => { + if (typeof l != "string") + throw new TypeError("Expected a string"); + let m = l.match(/(?:\r?\n)/g) || []; + if (m.length === 0) + return; + let E = m.filter((A) => A === `\r +`).length, y = m.length - E; + return E > y ? `\r +` : ` +`; + }; + o.exports = u, o.exports.graceful = (l) => typeof l == "string" && u(l) || ` +`; + } }), mh = Y({ "node_modules/jest-docblock/build/index.js"(n) { + "use strict"; + J(), Object.defineProperty(n, "__esModule", { value: true }), n.extract = T, n.parse = q, n.parseWithComments = B, n.print = I, n.strip = v; + function o() { + let C = fh(); + return o = function() { + return C; + }, C; + } + function u() { + let C = l(dh()); + return u = function() { + return C; + }, C; + } + function l(C) { + return C && C.__esModule ? C : { default: C }; + } + var m = /\*\/$/, E = /^\/\*\*/, y = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, A = /(^|\s+)\/\/([^\r\n]*)/g, b = /^(\r?\n)+/, g = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g, V = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g, R = /(\r?\n|^) *\* ?/g, N = []; + function T(C) { + let H = C.match(y); + return H ? H[0].trimLeft() : ""; + } + function v(C) { + let H = C.match(y); + return H && H[0] ? C.substring(H[0].length) : C; + } + function q(C) { + return B(C).pragmas; + } + function B(C) { + let H = (0, u().default)(C) || o().EOL; + C = C.replace(E, "").replace(m, "").replace(R, "$1"); + let L = ""; + for (; L !== C; ) + L = C, C = C.replace(g, "".concat(H, "$1 $2").concat(H)); + C = C.replace(b, "").trimRight(); + let i = /* @__PURE__ */ Object.create(null), _ = C.replace(V, "").replace(b, "").trimRight(), P; + for (; P = V.exec(C); ) { + let M = P[2].replace(A, ""); + typeof i[P[1]] == "string" || Array.isArray(i[P[1]]) ? i[P[1]] = N.concat(i[P[1]], M) : i[P[1]] = M; + } + return { comments: _, pragmas: i }; + } + function I(C) { + let { comments: H = "", pragmas: L = {} } = C, i = (0, u().default)(H) || o().EOL, _ = "/**", P = " *", M = " */", ee = Object.keys(L), ae = ee.map((ie) => k(ie, L[ie])).reduce((ie, Ne) => ie.concat(Ne), []).map((ie) => P + " " + ie + i).join(""); + if (!H) { + if (ee.length === 0) + return ""; + if (ee.length === 1 && !Array.isArray(L[ee[0]])) { + let ie = L[ee[0]]; + return "".concat(_, " ").concat(k(ee[0], ie)[0]).concat(M); + } + } + let te = H.split(i).map((ie) => "".concat(P, " ").concat(ie)).join(i) + i; + return _ + i + (H ? te : "") + (H && ee.length ? P + i : "") + ae + M; + } + function k(C, H) { + return N.concat(H).map((L) => "@".concat(C, " ").concat(L).trim()); + } + } }), vh = Y({ "src/common/end-of-line.js"(n, o) { + "use strict"; + J(); + function u(y) { + let A = y.indexOf("\r"); + return A >= 0 ? y.charAt(A + 1) === ` +` ? "crlf" : "cr" : "lf"; + } + function l(y) { + switch (y) { + case "cr": + return "\r"; + case "crlf": + return `\r +`; + default: + return ` +`; + } + } + function m(y, A) { + let b; + switch (A) { + case ` +`: + b = /\n/g; + break; + case "\r": + b = /\r/g; + break; + case `\r +`: + b = /\r\n/g; + break; + default: + throw new Error('Unexpected "eol" '.concat(JSON.stringify(A), ".")); + } + let g = y.match(b); + return g ? g.length : 0; + } + function E(y) { + return y.replace(/\r\n?/g, ` +`); + } + o.exports = { guessEndOfLine: u, convertEndOfLineToChars: l, countEndOfLineChars: m, normalizeEndOfLine: E }; + } }), gh = Y({ "src/language-js/utils/get-shebang.js"(n, o) { + "use strict"; + J(); + function u(l) { + if (!l.startsWith("#!")) + return ""; + let m = l.indexOf(` +`); + return m === -1 ? l : l.slice(0, m); + } + o.exports = u; + } }), xh = Y({ "src/language-js/pragma.js"(n, o) { + "use strict"; + J(); + var { parseWithComments: u, strip: l, extract: m, print: E } = mh(), { normalizeEndOfLine: y } = vh(), A = gh(); + function b(R) { + let N = A(R); + N && (R = R.slice(N.length + 1)); + let T = m(R), { pragmas: v, comments: q } = u(T); + return { shebang: N, text: R, pragmas: v, comments: q }; + } + function g(R) { + let N = Object.keys(b(R).pragmas); + return N.includes("prettier") || N.includes("format"); + } + function V(R) { + let { shebang: N, text: T, pragmas: v, comments: q } = b(R), B = l(T), I = E({ pragmas: Object.assign({ format: "" }, v), comments: q.trimStart() }); + return (N ? "".concat(N, ` +`) : "") + y(I) + (B.startsWith(` +`) ? ` +` : ` + +`) + B; + } + o.exports = { hasPragma: g, insertPragma: V }; + } }), yh = Y({ "src/utils/is-non-empty-array.js"(n, o) { + "use strict"; + J(); + function u(l) { + return Array.isArray(l) && l.length > 0; + } + o.exports = u; + } }), ka = Y({ "src/language-js/loc.js"(n, o) { + "use strict"; + J(); + var u = yh(); + function l(b, g) { + let { ignoreDecorators: V } = g || {}; + if (!V) { + let R = b.declaration && b.declaration.decorators || b.decorators; + if (u(R)) + return l(R[0]); + } + return b.range ? b.range[0] : b.start; + } + function m(b) { + return b.range ? b.range[1] : b.end; + } + function E(b, g) { + let V = l(b); + return Number.isInteger(V) && V === l(g); + } + function y(b, g) { + let V = m(b); + return Number.isInteger(V) && V === m(g); + } + function A(b, g) { + return E(b, g) && y(b, g); + } + o.exports = { locStart: l, locEnd: m, hasSameLocStart: E, hasSameLoc: A }; + } }), Fa = Y({ "src/language-js/parse/utils/create-parser.js"(n, o) { + "use strict"; + J(); + var { hasPragma: u } = xh(), { locStart: l, locEnd: m } = ka(); + function E(y) { + return y = typeof y == "function" ? { parse: y } : y, Object.assign({ astFormat: "estree", hasPragma: u, locStart: l, locEnd: m }, y); + } + o.exports = E; + } }), Ah = Y({ "src/language-js/utils/is-ts-keyword-type.js"(n, o) { + "use strict"; + J(); + function u(l) { + let { type: m } = l; + return m.startsWith("TS") && m.endsWith("Keyword"); + } + o.exports = u; + } }), Ch = Y({ "src/language-js/utils/is-block-comment.js"(n, o) { + "use strict"; + J(); + var u = /* @__PURE__ */ new Set(["Block", "CommentBlock", "MultiLine"]), l = (m) => u.has(m == null ? void 0 : m.type); + o.exports = l; + } }), Eh = Y({ "src/language-js/utils/is-type-cast-comment.js"(n, o) { + "use strict"; + J(); + var u = Ch(); + function l(m) { + return u(m) && m.value[0] === "*" && /@type\b/.test(m.value); + } + o.exports = l; + } }), bh = Y({ "src/utils/get-last.js"(n, o) { + "use strict"; + J(); + var u = (l) => l[l.length - 1]; + o.exports = u; + } }), Ba = Y({ "src/language-js/parse/postprocess/visit-node.js"(n, o) { + "use strict"; + J(); + function u(l, m) { + if (Array.isArray(l)) { + for (let E = 0; E < l.length; E++) + l[E] = u(l[E], m); + return l; + } + if (l && typeof l == "object" && typeof l.type == "string") { + let E = Object.keys(l); + for (let y = 0; y < E.length; y++) + l[E[y]] = u(l[E[y]], m); + return m(l) || l; + } + return l; + } + o.exports = u; + } }), Ta = Y({ "src/language-js/parse/postprocess/throw-syntax-error.js"(n, o) { + "use strict"; + J(); + var u = lr(); + function l(m, E) { + let { start: y, end: A } = m.loc; + throw u(E, { start: { line: y.line, column: y.column + 1 }, end: { line: A.line, column: A.column + 1 } }); + } + o.exports = l; + } }), _h = Y({ "src/language-js/parse/postprocess/typescript.js"(n, o) { + "use strict"; + J(); + var u = Ba(), l = Ta(); + function m(A, b, g) { + let V = A.decorators; + if (!Array.isArray(V)) + return; + let R = b.decorators; + (!Array.isArray(R) || R.length !== V.length || V.some((N) => { + let T = g.get(N); + return !T || !R.includes(T); + })) && l(b, "Leading decorators must be attached to a class declaration"); + } + function E(A, b) { + A.kind !== 167 || A.modifiers && !A.modifiers.some((R) => R.kind === 126) || A.initializer && b.value === null && l(b, "Abstract property cannot have an initializer"); + } + function y(A, b) { + let { esTreeNodeToTSNodeMap: g, tsNodeToESTreeNodeMap: V } = b.tsParseResult; + u(A, (R) => { + let N = g.get(R); + if (!N) + return; + let T = V.get(N); + T === R && (m(N, T, V), E(N, T)); + }); + } + o.exports = { throwErrorForInvalidNodes: y }; + } }), Ia = Y({ "src/language-js/parse/postprocess/index.js"(n, o) { + "use strict"; + J(); + var { locStart: u, locEnd: l } = ka(), m = Ah(), E = Eh(), y = bh(), A = Ba(), { throwErrorForInvalidNodes: b } = _h(), g = Ta(); + function V(v, q) { + if (q.parser === "typescript" && /@|abstract/.test(q.originalText) && b(v, q), q.parser !== "typescript" && q.parser !== "flow" && q.parser !== "acorn" && q.parser !== "espree" && q.parser !== "meriyah") { + let I = /* @__PURE__ */ new Set(); + v = A(v, (k) => { + k.leadingComments && k.leadingComments.some(E) && I.add(u(k)); + }), v = A(v, (k) => { + if (k.type === "ParenthesizedExpression") { + let { expression: C } = k; + if (C.type === "TypeCastExpression") + return C.range = k.range, C; + let H = u(k); + if (!I.has(H)) + return C.extra = Object.assign(Object.assign({}, C.extra), {}, { parenthesized: true }), C; + } + }); + } + return v = A(v, (I) => { + switch (I.type) { + case "ChainExpression": + return R(I.expression); + case "LogicalExpression": { + if (N(I)) + return T(I); + break; + } + case "VariableDeclaration": { + let k = y(I.declarations); + k && k.init && B(I, k); + break; + } + case "TSParenthesizedType": + return m(I.typeAnnotation) || I.typeAnnotation.type === "TSThisType" || (I.typeAnnotation.range = [u(I), l(I)]), I.typeAnnotation; + case "TSTypeParameter": + if (typeof I.name == "string") { + let k = u(I); + I.name = { type: "Identifier", name: I.name, range: [k, k + I.name.length] }; + } + break; + case "ObjectExpression": + if (q.parser === "typescript") { + let k = I.properties.find((C) => C.type === "Property" && C.value.type === "TSEmptyBodyFunctionExpression"); + k && g(k.value, "Unexpected token."); + } + break; + case "SequenceExpression": { + let k = y(I.expressions); + I.range = [u(I), Math.min(l(k), l(I))]; + break; + } + case "TopicReference": + q.__isUsingHackPipeline = true; + break; + case "ExportAllDeclaration": { + let { exported: k } = I; + if (q.parser === "meriyah" && k && k.type === "Identifier") { + let C = q.originalText.slice(u(k), l(k)); + (C.startsWith('"') || C.startsWith("'")) && (I.exported = Object.assign(Object.assign({}, I.exported), {}, { type: "Literal", value: I.exported.name, raw: C })); + } + break; + } + } + }), v; + function B(I, k) { + q.originalText[l(k)] !== ";" && (I.range = [u(I), l(k)]); + } + } + function R(v) { + switch (v.type) { + case "CallExpression": + v.type = "OptionalCallExpression", v.callee = R(v.callee); + break; + case "MemberExpression": + v.type = "OptionalMemberExpression", v.object = R(v.object); + break; + case "TSNonNullExpression": + v.expression = R(v.expression); + break; + } + return v; + } + function N(v) { + return v.type === "LogicalExpression" && v.right.type === "LogicalExpression" && v.operator === v.right.operator; + } + function T(v) { + return N(v) ? T({ type: "LogicalExpression", operator: v.operator, left: T({ type: "LogicalExpression", operator: v.operator, left: v.left, right: v.right.left, range: [u(v.left), l(v.right.left)] }), right: v.right.right, range: [u(v), l(v)] }) : v; + } + o.exports = V; + } }), ct = Y({ "node_modules/acorn/dist/acorn.js"(n, o) { + J(), function(u, l) { + typeof n == "object" && typeof o < "u" ? l(n) : typeof define == "function" && define.amd ? define(["exports"], l) : (u = typeof globalThis < "u" ? globalThis : u || self, l(u.acorn = {})); + }(n, function(u) { + "use strict"; + var l = { 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", 5: "class enum extends super const export import", 6: "enum", strict: "implements interface let package private protected public static yield", strictBind: "eval arguments" }, m = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this", E = { 5: m, "5module": m + " export import", 6: m + " const class extends export import super" }, y = /^in(stanceof)?$/, A = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC", b = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F", g = new RegExp("[" + A + "]"), V = new RegExp("[" + A + b + "]"); + A = b = null; + var R = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938], N = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + function T(e, t) { + for (var r = 65536, s = 0; s < t.length; s += 2) { + if (r += t[s], r > e) + return false; + if (r += t[s + 1], r >= e) + return true; + } + } + function v(e, t) { + return e < 65 ? e === 36 : e < 91 ? true : e < 97 ? e === 95 : e < 123 ? true : e <= 65535 ? e >= 170 && g.test(String.fromCharCode(e)) : t === false ? false : T(e, R); + } + function q(e, t) { + return e < 48 ? e === 36 : e < 58 ? true : e < 65 ? false : e < 91 ? true : e < 97 ? e === 95 : e < 123 ? true : e <= 65535 ? e >= 170 && V.test(String.fromCharCode(e)) : t === false ? false : T(e, R) || T(e, N); + } + var B = function(t, r) { + r === void 0 && (r = {}), this.label = t, this.keyword = r.keyword, this.beforeExpr = !!r.beforeExpr, this.startsExpr = !!r.startsExpr, this.isLoop = !!r.isLoop, this.isAssign = !!r.isAssign, this.prefix = !!r.prefix, this.postfix = !!r.postfix, this.binop = r.binop || null, this.updateContext = null; + }; + function I(e, t) { + return new B(e, { beforeExpr: true, binop: t }); + } + var k = { beforeExpr: true }, C = { startsExpr: true }, H = {}; + function L(e, t) { + return t === void 0 && (t = {}), t.keyword = e, H[e] = new B(e, t); + } + var i = { num: new B("num", C), regexp: new B("regexp", C), string: new B("string", C), name: new B("name", C), privateId: new B("privateId", C), eof: new B("eof"), bracketL: new B("[", { beforeExpr: true, startsExpr: true }), bracketR: new B("]"), braceL: new B("{", { beforeExpr: true, startsExpr: true }), braceR: new B("}"), parenL: new B("(", { beforeExpr: true, startsExpr: true }), parenR: new B(")"), comma: new B(",", k), semi: new B(";", k), colon: new B(":", k), dot: new B("."), question: new B("?", k), questionDot: new B("?."), arrow: new B("=>", k), template: new B("template"), invalidTemplate: new B("invalidTemplate"), ellipsis: new B("...", k), backQuote: new B("`", C), dollarBraceL: new B("${", { beforeExpr: true, startsExpr: true }), eq: new B("=", { beforeExpr: true, isAssign: true }), assign: new B("_=", { beforeExpr: true, isAssign: true }), incDec: new B("++/--", { prefix: true, postfix: true, startsExpr: true }), prefix: new B("!/~", { beforeExpr: true, prefix: true, startsExpr: true }), logicalOR: I("||", 1), logicalAND: I("&&", 2), bitwiseOR: I("|", 3), bitwiseXOR: I("^", 4), bitwiseAND: I("&", 5), equality: I("==/!=/===/!==", 6), relational: I("/<=/>=", 7), bitShift: I("<>/>>>", 8), plusMin: new B("+/-", { beforeExpr: true, binop: 9, prefix: true, startsExpr: true }), modulo: I("%", 10), star: I("*", 10), slash: I("/", 10), starstar: new B("**", { beforeExpr: true }), coalesce: I("??", 1), _break: L("break"), _case: L("case", k), _catch: L("catch"), _continue: L("continue"), _debugger: L("debugger"), _default: L("default", k), _do: L("do", { isLoop: true, beforeExpr: true }), _else: L("else", k), _finally: L("finally"), _for: L("for", { isLoop: true }), _function: L("function", C), _if: L("if"), _return: L("return", k), _switch: L("switch"), _throw: L("throw", k), _try: L("try"), _var: L("var"), _const: L("const"), _while: L("while", { isLoop: true }), _with: L("with"), _new: L("new", { beforeExpr: true, startsExpr: true }), _this: L("this", C), _super: L("super", C), _class: L("class", C), _extends: L("extends", k), _export: L("export"), _import: L("import", C), _null: L("null", C), _true: L("true", C), _false: L("false", C), _in: L("in", { beforeExpr: true, binop: 7 }), _instanceof: L("instanceof", { beforeExpr: true, binop: 7 }), _typeof: L("typeof", { beforeExpr: true, prefix: true, startsExpr: true }), _void: L("void", { beforeExpr: true, prefix: true, startsExpr: true }), _delete: L("delete", { beforeExpr: true, prefix: true, startsExpr: true }) }, _ = /\r\n?|\n|\u2028|\u2029/, P = new RegExp(_.source, "g"); + function M(e) { + return e === 10 || e === 13 || e === 8232 || e === 8233; + } + function ee(e, t, r) { + r === void 0 && (r = e.length); + for (var s = t; s < r; s++) { + var a = e.charCodeAt(s); + if (M(a)) + return s < r - 1 && a === 13 && e.charCodeAt(s + 1) === 10 ? s + 2 : s + 1; + } + return -1; + } + var ae = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/, te = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g, ie = Object.prototype, Ne = ie.hasOwnProperty, p = ie.toString, D = Object.hasOwn || function(e, t) { + return Ne.call(e, t); + }, w = Array.isArray || function(e) { + return p.call(e) === "[object Array]"; + }; + function f(e) { + return new RegExp("^(?:" + e.replace(/ /g, "|") + ")$"); + } + var F = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/, K = function(t, r) { + this.line = t, this.column = r; + }; + K.prototype.offset = function(t) { + return new K(this.line, this.column + t); + }; + var X = function(t, r, s) { + this.start = r, this.end = s, t.sourceFile !== null && (this.source = t.sourceFile); + }; + function oe(e, t) { + for (var r = 1, s = 0; ; ) { + var a = ee(e, s, t); + if (a < 0) + return new K(r, t - s); + ++r, s = a; + } + } + var me = { ecmaVersion: null, sourceType: "script", onInsertedSemicolon: null, onTrailingComma: null, allowReserved: null, allowReturnOutsideFunction: false, allowImportExportEverywhere: false, allowAwaitOutsideFunction: null, allowSuperOutsideMethod: null, allowHashBang: false, locations: false, onToken: null, onComment: null, ranges: false, program: null, sourceFile: null, directSourceFile: null, preserveParens: false }, ve = false; + function pt(e) { + var t = {}; + for (var r in me) + t[r] = e && D(e, r) ? e[r] : me[r]; + if (t.ecmaVersion === "latest" ? t.ecmaVersion = 1e8 : t.ecmaVersion == null ? (!ve && typeof console == "object" && console.warn && (ve = true, console.warn(`Since Acorn 8.0.0, options.ecmaVersion is required. +Defaulting to 2020, but this will stop working in the future.`)), t.ecmaVersion = 11) : t.ecmaVersion >= 2015 && (t.ecmaVersion -= 2009), t.allowReserved == null && (t.allowReserved = t.ecmaVersion < 5), w(t.onToken)) { + var s = t.onToken; + t.onToken = function(a) { + return s.push(a); + }; + } + return w(t.onComment) && (t.onComment = ft(t, t.onComment)), t; + } + function ft(e, t) { + return function(r, s, a, h, c, d) { + var x = { type: r ? "Block" : "Line", value: s, start: a, end: h }; + e.locations && (x.loc = new X(this, c, d)), e.ranges && (x.range = [a, h]), t.push(x); + }; + } + var Ee = 1, ge = 2, De = 4, Ue = 8, cr = 16, pr = 32, dt = 64, fr = 128, Oe = 256, mt = Ee | ge | Oe; + function vt(e, t) { + return ge | (e ? De : 0) | (t ? Ue : 0); + } + var ze = 0, gt = 1, fe = 2, dr = 3, mr = 4, vr = 5, Z = function(t, r, s) { + this.options = t = pt(t), this.sourceFile = t.sourceFile, this.keywords = f(E[t.ecmaVersion >= 6 ? 6 : t.sourceType === "module" ? "5module" : 5]); + var a = ""; + t.allowReserved !== true && (a = l[t.ecmaVersion >= 6 ? 6 : t.ecmaVersion === 5 ? 5 : 3], t.sourceType === "module" && (a += " await")), this.reservedWords = f(a); + var h = (a ? a + " " : "") + l.strict; + this.reservedWordsStrict = f(h), this.reservedWordsStrictBind = f(h + " " + l.strictBind), this.input = String(r), this.containsEsc = false, s ? (this.pos = s, this.lineStart = this.input.lastIndexOf(` +`, s - 1) + 1, this.curLine = this.input.slice(0, this.lineStart).split(_).length) : (this.pos = this.lineStart = 0, this.curLine = 1), this.type = i.eof, this.value = null, this.start = this.end = this.pos, this.startLoc = this.endLoc = this.curPosition(), this.lastTokEndLoc = this.lastTokStartLoc = null, this.lastTokStart = this.lastTokEnd = this.pos, this.context = this.initialContext(), this.exprAllowed = true, this.inModule = t.sourceType === "module", this.strict = this.inModule || this.strictDirective(this.pos), this.potentialArrowAt = -1, this.potentialArrowInForAwait = false, this.yieldPos = this.awaitPos = this.awaitIdentPos = 0, this.labels = [], this.undefinedExports = /* @__PURE__ */ Object.create(null), this.pos === 0 && t.allowHashBang && this.input.slice(0, 2) === "#!" && this.skipLineComment(2), this.scopeStack = [], this.enterScope(Ee), this.regexpState = null, this.privateNameStack = []; + }, le = { inFunction: { configurable: true }, inGenerator: { configurable: true }, inAsync: { configurable: true }, canAwait: { configurable: true }, allowSuper: { configurable: true }, allowDirectSuper: { configurable: true }, treatFunctionsAsVar: { configurable: true }, allowNewDotTarget: { configurable: true }, inClassStaticBlock: { configurable: true } }; + Z.prototype.parse = function() { + var t = this.options.program || this.startNode(); + return this.nextToken(), this.parseTopLevel(t); + }, le.inFunction.get = function() { + return (this.currentVarScope().flags & ge) > 0; + }, le.inGenerator.get = function() { + return (this.currentVarScope().flags & Ue) > 0 && !this.currentVarScope().inClassFieldInit; + }, le.inAsync.get = function() { + return (this.currentVarScope().flags & De) > 0 && !this.currentVarScope().inClassFieldInit; + }, le.canAwait.get = function() { + for (var e = this.scopeStack.length - 1; e >= 0; e--) { + var t = this.scopeStack[e]; + if (t.inClassFieldInit || t.flags & Oe) + return false; + if (t.flags & ge) + return (t.flags & De) > 0; + } + return this.inModule && this.options.ecmaVersion >= 13 || this.options.allowAwaitOutsideFunction; + }, le.allowSuper.get = function() { + var e = this.currentThisScope(), t = e.flags, r = e.inClassFieldInit; + return (t & dt) > 0 || r || this.options.allowSuperOutsideMethod; + }, le.allowDirectSuper.get = function() { + return (this.currentThisScope().flags & fr) > 0; + }, le.treatFunctionsAsVar.get = function() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + }, le.allowNewDotTarget.get = function() { + var e = this.currentThisScope(), t = e.flags, r = e.inClassFieldInit; + return (t & (ge | Oe)) > 0 || r; + }, le.inClassStaticBlock.get = function() { + return (this.currentVarScope().flags & Oe) > 0; + }, Z.extend = function() { + for (var t = [], r = arguments.length; r--; ) + t[r] = arguments[r]; + for (var s = this, a = 0; a < t.length; a++) + s = t[a](s); + return s; + }, Z.parse = function(t, r) { + return new this(r, t).parse(); + }, Z.parseExpressionAt = function(t, r, s) { + var a = new this(s, t, r); + return a.nextToken(), a.parseExpression(); + }, Z.tokenizer = function(t, r) { + return new this(r, t); + }, Object.defineProperties(Z.prototype, le); + var se = Z.prototype, Da = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/; + se.strictDirective = function(e) { + for (; ; ) { + te.lastIndex = e, e += te.exec(this.input)[0].length; + var t = Da.exec(this.input.slice(e)); + if (!t) + return false; + if ((t[1] || t[2]) === "use strict") { + te.lastIndex = e + t[0].length; + var r = te.exec(this.input), s = r.index + r[0].length, a = this.input.charAt(s); + return a === ";" || a === "}" || _.test(r[0]) && !(/[(`.[+\-/*%<>=,?^&]/.test(a) || a === "!" && this.input.charAt(s + 1) === "="); + } + e += t[0].length, te.lastIndex = e, e += te.exec(this.input)[0].length, this.input[e] === ";" && e++; + } + }, se.eat = function(e) { + return this.type === e ? (this.next(), true) : false; + }, se.isContextual = function(e) { + return this.type === i.name && this.value === e && !this.containsEsc; + }, se.eatContextual = function(e) { + return this.isContextual(e) ? (this.next(), true) : false; + }, se.expectContextual = function(e) { + this.eatContextual(e) || this.unexpected(); + }, se.canInsertSemicolon = function() { + return this.type === i.eof || this.type === i.braceR || _.test(this.input.slice(this.lastTokEnd, this.start)); + }, se.insertSemicolon = function() { + if (this.canInsertSemicolon()) + return this.options.onInsertedSemicolon && this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc), true; + }, se.semicolon = function() { + !this.eat(i.semi) && !this.insertSemicolon() && this.unexpected(); + }, se.afterTrailingComma = function(e, t) { + if (this.type === e) + return this.options.onTrailingComma && this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc), t || this.next(), true; + }, se.expect = function(e) { + this.eat(e) || this.unexpected(); + }, se.unexpected = function(e) { + this.raise(e != null ? e : this.start, "Unexpected token"); + }; + function We() { + this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1; + } + se.checkPatternErrors = function(e, t) { + if (!!e) { + e.trailingComma > -1 && this.raiseRecoverable(e.trailingComma, "Comma is not permitted after the rest element"); + var r = t ? e.parenthesizedAssign : e.parenthesizedBind; + r > -1 && this.raiseRecoverable(r, "Parenthesized pattern"); + } + }, se.checkExpressionErrors = function(e, t) { + if (!e) + return false; + var r = e.shorthandAssign, s = e.doubleProto; + if (!t) + return r >= 0 || s >= 0; + r >= 0 && this.raise(r, "Shorthand property assignments are valid only in destructuring patterns"), s >= 0 && this.raiseRecoverable(s, "Redefinition of __proto__ property"); + }, se.checkYieldAwaitInDefaultParams = function() { + this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos) && this.raise(this.yieldPos, "Yield expression cannot be a default value"), this.awaitPos && this.raise(this.awaitPos, "Await expression cannot be a default value"); + }, se.isSimpleAssignTarget = function(e) { + return e.type === "ParenthesizedExpression" ? this.isSimpleAssignTarget(e.expression) : e.type === "Identifier" || e.type === "MemberExpression"; + }; + var j = Z.prototype; + j.parseTopLevel = function(e) { + var t = /* @__PURE__ */ Object.create(null); + for (e.body || (e.body = []); this.type !== i.eof; ) { + var r = this.parseStatement(null, true, t); + e.body.push(r); + } + if (this.inModule) + for (var s = 0, a = Object.keys(this.undefinedExports); s < a.length; s += 1) { + var h = a[s]; + this.raiseRecoverable(this.undefinedExports[h].start, "Export '" + h + "' is not defined"); + } + return this.adaptDirectivePrologue(e.body), this.next(), e.sourceType = this.options.sourceType, this.finishNode(e, "Program"); + }; + var xt = { kind: "loop" }, Oa = { kind: "switch" }; + j.isLet = function(e) { + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) + return false; + te.lastIndex = this.pos; + var t = te.exec(this.input), r = this.pos + t[0].length, s = this.input.charCodeAt(r); + if (s === 91 || s === 92 || s > 55295 && s < 56320) + return true; + if (e) + return false; + if (s === 123) + return true; + if (v(s, true)) { + for (var a = r + 1; q(s = this.input.charCodeAt(a), true); ) + ++a; + if (s === 92 || s > 55295 && s < 56320) + return true; + var h = this.input.slice(r, a); + if (!y.test(h)) + return true; + } + return false; + }, j.isAsyncFunction = function() { + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) + return false; + te.lastIndex = this.pos; + var e = te.exec(this.input), t = this.pos + e[0].length, r; + return !_.test(this.input.slice(this.pos, t)) && this.input.slice(t, t + 8) === "function" && (t + 8 === this.input.length || !(q(r = this.input.charCodeAt(t + 8)) || r > 55295 && r < 56320)); + }, j.parseStatement = function(e, t, r) { + var s = this.type, a = this.startNode(), h; + switch (this.isLet(e) && (s = i._var, h = "let"), s) { + case i._break: + case i._continue: + return this.parseBreakContinueStatement(a, s.keyword); + case i._debugger: + return this.parseDebuggerStatement(a); + case i._do: + return this.parseDoStatement(a); + case i._for: + return this.parseForStatement(a); + case i._function: + return e && (this.strict || e !== "if" && e !== "label") && this.options.ecmaVersion >= 6 && this.unexpected(), this.parseFunctionStatement(a, false, !e); + case i._class: + return e && this.unexpected(), this.parseClass(a, true); + case i._if: + return this.parseIfStatement(a); + case i._return: + return this.parseReturnStatement(a); + case i._switch: + return this.parseSwitchStatement(a); + case i._throw: + return this.parseThrowStatement(a); + case i._try: + return this.parseTryStatement(a); + case i._const: + case i._var: + return h = h || this.value, e && h !== "var" && this.unexpected(), this.parseVarStatement(a, h); + case i._while: + return this.parseWhileStatement(a); + case i._with: + return this.parseWithStatement(a); + case i.braceL: + return this.parseBlock(true, a); + case i.semi: + return this.parseEmptyStatement(a); + case i._export: + case i._import: + if (this.options.ecmaVersion > 10 && s === i._import) { + te.lastIndex = this.pos; + var c = te.exec(this.input), d = this.pos + c[0].length, x = this.input.charCodeAt(d); + if (x === 40 || x === 46) + return this.parseExpressionStatement(a, this.parseExpression()); + } + return this.options.allowImportExportEverywhere || (t || this.raise(this.start, "'import' and 'export' may only appear at the top level"), this.inModule || this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")), s === i._import ? this.parseImport(a) : this.parseExport(a, r); + default: + if (this.isAsyncFunction()) + return e && this.unexpected(), this.next(), this.parseFunctionStatement(a, true, !e); + var U = this.value, W = this.parseExpression(); + return s === i.name && W.type === "Identifier" && this.eat(i.colon) ? this.parseLabeledStatement(a, U, W, e) : this.parseExpressionStatement(a, W); + } + }, j.parseBreakContinueStatement = function(e, t) { + var r = t === "break"; + this.next(), this.eat(i.semi) || this.insertSemicolon() ? e.label = null : this.type !== i.name ? this.unexpected() : (e.label = this.parseIdent(), this.semicolon()); + for (var s = 0; s < this.labels.length; ++s) { + var a = this.labels[s]; + if ((e.label == null || a.name === e.label.name) && (a.kind != null && (r || a.kind === "loop") || e.label && r)) + break; + } + return s === this.labels.length && this.raise(e.start, "Unsyntactic " + t), this.finishNode(e, r ? "BreakStatement" : "ContinueStatement"); + }, j.parseDebuggerStatement = function(e) { + return this.next(), this.semicolon(), this.finishNode(e, "DebuggerStatement"); + }, j.parseDoStatement = function(e) { + return this.next(), this.labels.push(xt), e.body = this.parseStatement("do"), this.labels.pop(), this.expect(i._while), e.test = this.parseParenExpression(), this.options.ecmaVersion >= 6 ? this.eat(i.semi) : this.semicolon(), this.finishNode(e, "DoWhileStatement"); + }, j.parseForStatement = function(e) { + this.next(); + var t = this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await") ? this.lastTokStart : -1; + if (this.labels.push(xt), this.enterScope(0), this.expect(i.parenL), this.type === i.semi) + return t > -1 && this.unexpected(t), this.parseFor(e, null); + var r = this.isLet(); + if (this.type === i._var || this.type === i._const || r) { + var s = this.startNode(), a = r ? "let" : this.value; + return this.next(), this.parseVar(s, true, a), this.finishNode(s, "VariableDeclaration"), (this.type === i._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && s.declarations.length === 1 ? (this.options.ecmaVersion >= 9 && (this.type === i._in ? t > -1 && this.unexpected(t) : e.await = t > -1), this.parseForIn(e, s)) : (t > -1 && this.unexpected(t), this.parseFor(e, s)); + } + var h = this.isContextual("let"), c = false, d = new We(), x = this.parseExpression(t > -1 ? "await" : true, d); + return this.type === i._in || (c = this.options.ecmaVersion >= 6 && this.isContextual("of")) ? (this.options.ecmaVersion >= 9 && (this.type === i._in ? t > -1 && this.unexpected(t) : e.await = t > -1), h && c && this.raise(x.start, "The left-hand side of a for-of loop may not start with 'let'."), this.toAssignable(x, false, d), this.checkLValPattern(x), this.parseForIn(e, x)) : (this.checkExpressionErrors(d, true), t > -1 && this.unexpected(t), this.parseFor(e, x)); + }, j.parseFunctionStatement = function(e, t, r) { + return this.next(), this.parseFunction(e, Le | (r ? 0 : yt), false, t); + }, j.parseIfStatement = function(e) { + return this.next(), e.test = this.parseParenExpression(), e.consequent = this.parseStatement("if"), e.alternate = this.eat(i._else) ? this.parseStatement("if") : null, this.finishNode(e, "IfStatement"); + }, j.parseReturnStatement = function(e) { + return !this.inFunction && !this.options.allowReturnOutsideFunction && this.raise(this.start, "'return' outside of function"), this.next(), this.eat(i.semi) || this.insertSemicolon() ? e.argument = null : (e.argument = this.parseExpression(), this.semicolon()), this.finishNode(e, "ReturnStatement"); + }, j.parseSwitchStatement = function(e) { + this.next(), e.discriminant = this.parseParenExpression(), e.cases = [], this.expect(i.braceL), this.labels.push(Oa), this.enterScope(0); + for (var t, r = false; this.type !== i.braceR; ) + if (this.type === i._case || this.type === i._default) { + var s = this.type === i._case; + t && this.finishNode(t, "SwitchCase"), e.cases.push(t = this.startNode()), t.consequent = [], this.next(), s ? t.test = this.parseExpression() : (r && this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"), r = true, t.test = null), this.expect(i.colon); + } else + t || this.unexpected(), t.consequent.push(this.parseStatement(null)); + return this.exitScope(), t && this.finishNode(t, "SwitchCase"), this.next(), this.labels.pop(), this.finishNode(e, "SwitchStatement"); + }, j.parseThrowStatement = function(e) { + return this.next(), _.test(this.input.slice(this.lastTokEnd, this.start)) && this.raise(this.lastTokEnd, "Illegal newline after throw"), e.argument = this.parseExpression(), this.semicolon(), this.finishNode(e, "ThrowStatement"); + }; + var La = []; + j.parseTryStatement = function(e) { + if (this.next(), e.block = this.parseBlock(), e.handler = null, this.type === i._catch) { + var t = this.startNode(); + if (this.next(), this.eat(i.parenL)) { + t.param = this.parseBindingAtom(); + var r = t.param.type === "Identifier"; + this.enterScope(r ? pr : 0), this.checkLValPattern(t.param, r ? mr : fe), this.expect(i.parenR); + } else + this.options.ecmaVersion < 10 && this.unexpected(), t.param = null, this.enterScope(0); + t.body = this.parseBlock(false), this.exitScope(), e.handler = this.finishNode(t, "CatchClause"); + } + return e.finalizer = this.eat(i._finally) ? this.parseBlock() : null, !e.handler && !e.finalizer && this.raise(e.start, "Missing catch or finally clause"), this.finishNode(e, "TryStatement"); + }, j.parseVarStatement = function(e, t) { + return this.next(), this.parseVar(e, false, t), this.semicolon(), this.finishNode(e, "VariableDeclaration"); + }, j.parseWhileStatement = function(e) { + return this.next(), e.test = this.parseParenExpression(), this.labels.push(xt), e.body = this.parseStatement("while"), this.labels.pop(), this.finishNode(e, "WhileStatement"); + }, j.parseWithStatement = function(e) { + return this.strict && this.raise(this.start, "'with' in strict mode"), this.next(), e.object = this.parseParenExpression(), e.body = this.parseStatement("with"), this.finishNode(e, "WithStatement"); + }, j.parseEmptyStatement = function(e) { + return this.next(), this.finishNode(e, "EmptyStatement"); + }, j.parseLabeledStatement = function(e, t, r, s) { + for (var a = 0, h = this.labels; a < h.length; a += 1) { + var c = h[a]; + c.name === t && this.raise(r.start, "Label '" + t + "' is already declared"); + } + for (var d = this.type.isLoop ? "loop" : this.type === i._switch ? "switch" : null, x = this.labels.length - 1; x >= 0; x--) { + var U = this.labels[x]; + if (U.statementStart === e.start) + U.statementStart = this.start, U.kind = d; + else + break; + } + return this.labels.push({ name: t, kind: d, statementStart: this.start }), e.body = this.parseStatement(s ? s.indexOf("label") === -1 ? s + "label" : s : "label"), this.labels.pop(), e.label = r, this.finishNode(e, "LabeledStatement"); + }, j.parseExpressionStatement = function(e, t) { + return e.expression = t, this.semicolon(), this.finishNode(e, "ExpressionStatement"); + }, j.parseBlock = function(e, t, r) { + for (e === void 0 && (e = true), t === void 0 && (t = this.startNode()), t.body = [], this.expect(i.braceL), e && this.enterScope(0); this.type !== i.braceR; ) { + var s = this.parseStatement(null); + t.body.push(s); + } + return r && (this.strict = false), this.next(), e && this.exitScope(), this.finishNode(t, "BlockStatement"); + }, j.parseFor = function(e, t) { + return e.init = t, this.expect(i.semi), e.test = this.type === i.semi ? null : this.parseExpression(), this.expect(i.semi), e.update = this.type === i.parenR ? null : this.parseExpression(), this.expect(i.parenR), e.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(e, "ForStatement"); + }, j.parseForIn = function(e, t) { + var r = this.type === i._in; + return this.next(), t.type === "VariableDeclaration" && t.declarations[0].init != null && (!r || this.options.ecmaVersion < 8 || this.strict || t.kind !== "var" || t.declarations[0].id.type !== "Identifier") && this.raise(t.start, (r ? "for-in" : "for-of") + " loop variable declaration may not have an initializer"), e.left = t, e.right = r ? this.parseExpression() : this.parseMaybeAssign(), this.expect(i.parenR), e.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(e, r ? "ForInStatement" : "ForOfStatement"); + }, j.parseVar = function(e, t, r) { + for (e.declarations = [], e.kind = r; ; ) { + var s = this.startNode(); + if (this.parseVarId(s, r), this.eat(i.eq) ? s.init = this.parseMaybeAssign(t) : r === "const" && !(this.type === i._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) ? this.unexpected() : s.id.type !== "Identifier" && !(t && (this.type === i._in || this.isContextual("of"))) ? this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value") : s.init = null, e.declarations.push(this.finishNode(s, "VariableDeclarator")), !this.eat(i.comma)) + break; + } + return e; + }, j.parseVarId = function(e, t) { + e.id = this.parseBindingAtom(), this.checkLValPattern(e.id, t === "var" ? gt : fe, false); + }; + var Le = 1, yt = 2, gr = 4; + j.parseFunction = function(e, t, r, s, a) { + this.initFunction(e), (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !s) && (this.type === i.star && t & yt && this.unexpected(), e.generator = this.eat(i.star)), this.options.ecmaVersion >= 8 && (e.async = !!s), t & Le && (e.id = t & gr && this.type !== i.name ? null : this.parseIdent(), e.id && !(t & yt) && this.checkLValSimple(e.id, this.strict || e.generator || e.async ? this.treatFunctionsAsVar ? gt : fe : dr)); + var h = this.yieldPos, c = this.awaitPos, d = this.awaitIdentPos; + return this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(vt(e.async, e.generator)), t & Le || (e.id = this.type === i.name ? this.parseIdent() : null), this.parseFunctionParams(e), this.parseFunctionBody(e, r, false, a), this.yieldPos = h, this.awaitPos = c, this.awaitIdentPos = d, this.finishNode(e, t & Le ? "FunctionDeclaration" : "FunctionExpression"); + }, j.parseFunctionParams = function(e) { + this.expect(i.parenL), e.params = this.parseBindingList(i.parenR, false, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams(); + }, j.parseClass = function(e, t) { + this.next(); + var r = this.strict; + this.strict = true, this.parseClassId(e, t), this.parseClassSuper(e); + var s = this.enterClassBody(), a = this.startNode(), h = false; + for (a.body = [], this.expect(i.braceL); this.type !== i.braceR; ) { + var c = this.parseClassElement(e.superClass !== null); + c && (a.body.push(c), c.type === "MethodDefinition" && c.kind === "constructor" ? (h && this.raise(c.start, "Duplicate constructor in the same class"), h = true) : c.key && c.key.type === "PrivateIdentifier" && Va(s, c) && this.raiseRecoverable(c.key.start, "Identifier '#" + c.key.name + "' has already been declared")); + } + return this.strict = r, this.next(), e.body = this.finishNode(a, "ClassBody"), this.exitClassBody(), this.finishNode(e, t ? "ClassDeclaration" : "ClassExpression"); + }, j.parseClassElement = function(e) { + if (this.eat(i.semi)) + return null; + var t = this.options.ecmaVersion, r = this.startNode(), s = "", a = false, h = false, c = "method", d = false; + if (this.eatContextual("static")) { + if (t >= 13 && this.eat(i.braceL)) + return this.parseClassStaticBlock(r), r; + this.isClassElementNameStart() || this.type === i.star ? d = true : s = "static"; + } + if (r.static = d, !s && t >= 8 && this.eatContextual("async") && ((this.isClassElementNameStart() || this.type === i.star) && !this.canInsertSemicolon() ? h = true : s = "async"), !s && (t >= 9 || !h) && this.eat(i.star) && (a = true), !s && !h && !a) { + var x = this.value; + (this.eatContextual("get") || this.eatContextual("set")) && (this.isClassElementNameStart() ? c = x : s = x); + } + if (s ? (r.computed = false, r.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc), r.key.name = s, this.finishNode(r.key, "Identifier")) : this.parseClassElementName(r), t < 13 || this.type === i.parenL || c !== "method" || a || h) { + var U = !r.static && Ge(r, "constructor"), W = U && e; + U && c !== "method" && this.raise(r.key.start, "Constructor can't have get/set modifier"), r.kind = U ? "constructor" : c, this.parseClassMethod(r, a, h, W); + } else + this.parseClassField(r); + return r; + }, j.isClassElementNameStart = function() { + return this.type === i.name || this.type === i.privateId || this.type === i.num || this.type === i.string || this.type === i.bracketL || this.type.keyword; + }, j.parseClassElementName = function(e) { + this.type === i.privateId ? (this.value === "constructor" && this.raise(this.start, "Classes can't have an element named '#constructor'"), e.computed = false, e.key = this.parsePrivateIdent()) : this.parsePropertyName(e); + }, j.parseClassMethod = function(e, t, r, s) { + var a = e.key; + e.kind === "constructor" ? (t && this.raise(a.start, "Constructor can't be a generator"), r && this.raise(a.start, "Constructor can't be an async method")) : e.static && Ge(e, "prototype") && this.raise(a.start, "Classes may not have a static property named prototype"); + var h = e.value = this.parseMethod(t, r, s); + return e.kind === "get" && h.params.length !== 0 && this.raiseRecoverable(h.start, "getter should have no params"), e.kind === "set" && h.params.length !== 1 && this.raiseRecoverable(h.start, "setter should have exactly one param"), e.kind === "set" && h.params[0].type === "RestElement" && this.raiseRecoverable(h.params[0].start, "Setter cannot use rest params"), this.finishNode(e, "MethodDefinition"); + }, j.parseClassField = function(e) { + if (Ge(e, "constructor") ? this.raise(e.key.start, "Classes can't have a field named 'constructor'") : e.static && Ge(e, "prototype") && this.raise(e.key.start, "Classes can't have a static field named 'prototype'"), this.eat(i.eq)) { + var t = this.currentThisScope(), r = t.inClassFieldInit; + t.inClassFieldInit = true, e.value = this.parseMaybeAssign(), t.inClassFieldInit = r; + } else + e.value = null; + return this.semicolon(), this.finishNode(e, "PropertyDefinition"); + }, j.parseClassStaticBlock = function(e) { + e.body = []; + var t = this.labels; + for (this.labels = [], this.enterScope(Oe | dt); this.type !== i.braceR; ) { + var r = this.parseStatement(null); + e.body.push(r); + } + return this.next(), this.exitScope(), this.labels = t, this.finishNode(e, "StaticBlock"); + }, j.parseClassId = function(e, t) { + this.type === i.name ? (e.id = this.parseIdent(), t && this.checkLValSimple(e.id, fe, false)) : (t === true && this.unexpected(), e.id = null); + }, j.parseClassSuper = function(e) { + e.superClass = this.eat(i._extends) ? this.parseExprSubscripts(false) : null; + }, j.enterClassBody = function() { + var e = { declared: /* @__PURE__ */ Object.create(null), used: [] }; + return this.privateNameStack.push(e), e.declared; + }, j.exitClassBody = function() { + for (var e = this.privateNameStack.pop(), t = e.declared, r = e.used, s = this.privateNameStack.length, a = s === 0 ? null : this.privateNameStack[s - 1], h = 0; h < r.length; ++h) { + var c = r[h]; + D(t, c.name) || (a ? a.used.push(c) : this.raiseRecoverable(c.start, "Private field '#" + c.name + "' must be declared in an enclosing class")); + } + }; + function Va(e, t) { + var r = t.key.name, s = e[r], a = "true"; + return t.type === "MethodDefinition" && (t.kind === "get" || t.kind === "set") && (a = (t.static ? "s" : "i") + t.kind), s === "iget" && a === "iset" || s === "iset" && a === "iget" || s === "sget" && a === "sset" || s === "sset" && a === "sget" ? (e[r] = "true", false) : s ? true : (e[r] = a, false); + } + function Ge(e, t) { + var r = e.computed, s = e.key; + return !r && (s.type === "Identifier" && s.name === t || s.type === "Literal" && s.value === t); + } + j.parseExport = function(e, t) { + if (this.next(), this.eat(i.star)) + return this.options.ecmaVersion >= 11 && (this.eatContextual("as") ? (e.exported = this.parseModuleExportName(), this.checkExport(t, e.exported.name, this.lastTokStart)) : e.exported = null), this.expectContextual("from"), this.type !== i.string && this.unexpected(), e.source = this.parseExprAtom(), this.semicolon(), this.finishNode(e, "ExportAllDeclaration"); + if (this.eat(i._default)) { + this.checkExport(t, "default", this.lastTokStart); + var r; + if (this.type === i._function || (r = this.isAsyncFunction())) { + var s = this.startNode(); + this.next(), r && this.next(), e.declaration = this.parseFunction(s, Le | gr, false, r); + } else if (this.type === i._class) { + var a = this.startNode(); + e.declaration = this.parseClass(a, "nullableID"); + } else + e.declaration = this.parseMaybeAssign(), this.semicolon(); + return this.finishNode(e, "ExportDefaultDeclaration"); + } + if (this.shouldParseExportStatement()) + e.declaration = this.parseStatement(null), e.declaration.type === "VariableDeclaration" ? this.checkVariableExport(t, e.declaration.declarations) : this.checkExport(t, e.declaration.id.name, e.declaration.id.start), e.specifiers = [], e.source = null; + else { + if (e.declaration = null, e.specifiers = this.parseExportSpecifiers(t), this.eatContextual("from")) + this.type !== i.string && this.unexpected(), e.source = this.parseExprAtom(); + else { + for (var h = 0, c = e.specifiers; h < c.length; h += 1) { + var d = c[h]; + this.checkUnreserved(d.local), this.checkLocalExport(d.local), d.local.type === "Literal" && this.raise(d.local.start, "A string literal cannot be used as an exported binding without `from`."); + } + e.source = null; + } + this.semicolon(); + } + return this.finishNode(e, "ExportNamedDeclaration"); + }, j.checkExport = function(e, t, r) { + !e || (D(e, t) && this.raiseRecoverable(r, "Duplicate export '" + t + "'"), e[t] = true); + }, j.checkPatternExport = function(e, t) { + var r = t.type; + if (r === "Identifier") + this.checkExport(e, t.name, t.start); + else if (r === "ObjectPattern") + for (var s = 0, a = t.properties; s < a.length; s += 1) { + var h = a[s]; + this.checkPatternExport(e, h); + } + else if (r === "ArrayPattern") + for (var c = 0, d = t.elements; c < d.length; c += 1) { + var x = d[c]; + x && this.checkPatternExport(e, x); + } + else + r === "Property" ? this.checkPatternExport(e, t.value) : r === "AssignmentPattern" ? this.checkPatternExport(e, t.left) : r === "RestElement" ? this.checkPatternExport(e, t.argument) : r === "ParenthesizedExpression" && this.checkPatternExport(e, t.expression); + }, j.checkVariableExport = function(e, t) { + if (!!e) + for (var r = 0, s = t; r < s.length; r += 1) { + var a = s[r]; + this.checkPatternExport(e, a.id); + } + }, j.shouldParseExportStatement = function() { + return this.type.keyword === "var" || this.type.keyword === "const" || this.type.keyword === "class" || this.type.keyword === "function" || this.isLet() || this.isAsyncFunction(); + }, j.parseExportSpecifiers = function(e) { + var t = [], r = true; + for (this.expect(i.braceL); !this.eat(i.braceR); ) { + if (r) + r = false; + else if (this.expect(i.comma), this.afterTrailingComma(i.braceR)) + break; + var s = this.startNode(); + s.local = this.parseModuleExportName(), s.exported = this.eatContextual("as") ? this.parseModuleExportName() : s.local, this.checkExport(e, s.exported[s.exported.type === "Identifier" ? "name" : "value"], s.exported.start), t.push(this.finishNode(s, "ExportSpecifier")); + } + return t; + }, j.parseImport = function(e) { + return this.next(), this.type === i.string ? (e.specifiers = La, e.source = this.parseExprAtom()) : (e.specifiers = this.parseImportSpecifiers(), this.expectContextual("from"), e.source = this.type === i.string ? this.parseExprAtom() : this.unexpected()), this.semicolon(), this.finishNode(e, "ImportDeclaration"); + }, j.parseImportSpecifiers = function() { + var e = [], t = true; + if (this.type === i.name) { + var r = this.startNode(); + if (r.local = this.parseIdent(), this.checkLValSimple(r.local, fe), e.push(this.finishNode(r, "ImportDefaultSpecifier")), !this.eat(i.comma)) + return e; + } + if (this.type === i.star) { + var s = this.startNode(); + return this.next(), this.expectContextual("as"), s.local = this.parseIdent(), this.checkLValSimple(s.local, fe), e.push(this.finishNode(s, "ImportNamespaceSpecifier")), e; + } + for (this.expect(i.braceL); !this.eat(i.braceR); ) { + if (t) + t = false; + else if (this.expect(i.comma), this.afterTrailingComma(i.braceR)) + break; + var a = this.startNode(); + a.imported = this.parseModuleExportName(), this.eatContextual("as") ? a.local = this.parseIdent() : (this.checkUnreserved(a.imported), a.local = a.imported), this.checkLValSimple(a.local, fe), e.push(this.finishNode(a, "ImportSpecifier")); + } + return e; + }, j.parseModuleExportName = function() { + if (this.options.ecmaVersion >= 13 && this.type === i.string) { + var e = this.parseLiteral(this.value); + return F.test(e.value) && this.raise(e.start, "An export name cannot include a lone surrogate."), e; + } + return this.parseIdent(true); + }, j.adaptDirectivePrologue = function(e) { + for (var t = 0; t < e.length && this.isDirectiveCandidate(e[t]); ++t) + e[t].directive = e[t].expression.raw.slice(1, -1); + }, j.isDirectiveCandidate = function(e) { + return e.type === "ExpressionStatement" && e.expression.type === "Literal" && typeof e.expression.value == "string" && (this.input[e.start] === '"' || this.input[e.start] === "'"); + }; + var ue = Z.prototype; + ue.toAssignable = function(e, t, r) { + if (this.options.ecmaVersion >= 6 && e) + switch (e.type) { + case "Identifier": + this.inAsync && e.name === "await" && this.raise(e.start, "Cannot use 'await' as identifier inside an async function"); + break; + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break; + case "ObjectExpression": + e.type = "ObjectPattern", r && this.checkPatternErrors(r, true); + for (var s = 0, a = e.properties; s < a.length; s += 1) { + var h = a[s]; + this.toAssignable(h, t), h.type === "RestElement" && (h.argument.type === "ArrayPattern" || h.argument.type === "ObjectPattern") && this.raise(h.argument.start, "Unexpected token"); + } + break; + case "Property": + e.kind !== "init" && this.raise(e.key.start, "Object pattern can't contain getter or setter"), this.toAssignable(e.value, t); + break; + case "ArrayExpression": + e.type = "ArrayPattern", r && this.checkPatternErrors(r, true), this.toAssignableList(e.elements, t); + break; + case "SpreadElement": + e.type = "RestElement", this.toAssignable(e.argument, t), e.argument.type === "AssignmentPattern" && this.raise(e.argument.start, "Rest elements cannot have a default value"); + break; + case "AssignmentExpression": + e.operator !== "=" && this.raise(e.left.end, "Only '=' operator can be used for specifying default value."), e.type = "AssignmentPattern", delete e.operator, this.toAssignable(e.left, t); + break; + case "ParenthesizedExpression": + this.toAssignable(e.expression, t, r); + break; + case "ChainExpression": + this.raiseRecoverable(e.start, "Optional chaining cannot appear in left-hand side"); + break; + case "MemberExpression": + if (!t) + break; + default: + this.raise(e.start, "Assigning to rvalue"); + } + else + r && this.checkPatternErrors(r, true); + return e; + }, ue.toAssignableList = function(e, t) { + for (var r = e.length, s = 0; s < r; s++) { + var a = e[s]; + a && this.toAssignable(a, t); + } + if (r) { + var h = e[r - 1]; + this.options.ecmaVersion === 6 && t && h && h.type === "RestElement" && h.argument.type !== "Identifier" && this.unexpected(h.argument.start); + } + return e; + }, ue.parseSpread = function(e) { + var t = this.startNode(); + return this.next(), t.argument = this.parseMaybeAssign(false, e), this.finishNode(t, "SpreadElement"); + }, ue.parseRestBinding = function() { + var e = this.startNode(); + return this.next(), this.options.ecmaVersion === 6 && this.type !== i.name && this.unexpected(), e.argument = this.parseBindingAtom(), this.finishNode(e, "RestElement"); + }, ue.parseBindingAtom = function() { + if (this.options.ecmaVersion >= 6) + switch (this.type) { + case i.bracketL: + var e = this.startNode(); + return this.next(), e.elements = this.parseBindingList(i.bracketR, true, true), this.finishNode(e, "ArrayPattern"); + case i.braceL: + return this.parseObj(true); + } + return this.parseIdent(); + }, ue.parseBindingList = function(e, t, r) { + for (var s = [], a = true; !this.eat(e); ) + if (a ? a = false : this.expect(i.comma), t && this.type === i.comma) + s.push(null); + else { + if (r && this.afterTrailingComma(e)) + break; + if (this.type === i.ellipsis) { + var h = this.parseRestBinding(); + this.parseBindingListItem(h), s.push(h), this.type === i.comma && this.raise(this.start, "Comma is not permitted after the rest element"), this.expect(e); + break; + } else { + var c = this.parseMaybeDefault(this.start, this.startLoc); + this.parseBindingListItem(c), s.push(c); + } + } + return s; + }, ue.parseBindingListItem = function(e) { + return e; + }, ue.parseMaybeDefault = function(e, t, r) { + if (r = r || this.parseBindingAtom(), this.options.ecmaVersion < 6 || !this.eat(i.eq)) + return r; + var s = this.startNodeAt(e, t); + return s.left = r, s.right = this.parseMaybeAssign(), this.finishNode(s, "AssignmentPattern"); + }, ue.checkLValSimple = function(e, t, r) { + t === void 0 && (t = ze); + var s = t !== ze; + switch (e.type) { + case "Identifier": + this.strict && this.reservedWordsStrictBind.test(e.name) && this.raiseRecoverable(e.start, (s ? "Binding " : "Assigning to ") + e.name + " in strict mode"), s && (t === fe && e.name === "let" && this.raiseRecoverable(e.start, "let is disallowed as a lexically bound name"), r && (D(r, e.name) && this.raiseRecoverable(e.start, "Argument name clash"), r[e.name] = true), t !== vr && this.declareName(e.name, t, e.start)); + break; + case "ChainExpression": + this.raiseRecoverable(e.start, "Optional chaining cannot appear in left-hand side"); + break; + case "MemberExpression": + s && this.raiseRecoverable(e.start, "Binding member expression"); + break; + case "ParenthesizedExpression": + return s && this.raiseRecoverable(e.start, "Binding parenthesized expression"), this.checkLValSimple(e.expression, t, r); + default: + this.raise(e.start, (s ? "Binding" : "Assigning to") + " rvalue"); + } + }, ue.checkLValPattern = function(e, t, r) { + switch (t === void 0 && (t = ze), e.type) { + case "ObjectPattern": + for (var s = 0, a = e.properties; s < a.length; s += 1) { + var h = a[s]; + this.checkLValInnerPattern(h, t, r); + } + break; + case "ArrayPattern": + for (var c = 0, d = e.elements; c < d.length; c += 1) { + var x = d[c]; + x && this.checkLValInnerPattern(x, t, r); + } + break; + default: + this.checkLValSimple(e, t, r); + } + }, ue.checkLValInnerPattern = function(e, t, r) { + switch (t === void 0 && (t = ze), e.type) { + case "Property": + this.checkLValInnerPattern(e.value, t, r); + break; + case "AssignmentPattern": + this.checkLValPattern(e.left, t, r); + break; + case "RestElement": + this.checkLValPattern(e.argument, t, r); + break; + default: + this.checkLValPattern(e, t, r); + } + }; + var ne = function(t, r, s, a, h) { + this.token = t, this.isExpr = !!r, this.preserveSpace = !!s, this.override = a, this.generator = !!h; + }, Q = { b_stat: new ne("{", false), b_expr: new ne("{", true), b_tmpl: new ne("${", false), p_stat: new ne("(", false), p_expr: new ne("(", true), q_tmpl: new ne("`", true, true, function(e) { + return e.tryReadTemplateToken(); + }), f_stat: new ne("function", false), f_expr: new ne("function", true), f_expr_gen: new ne("function", true, false, null, true), f_gen: new ne("function", false, false, null, true) }, ke = Z.prototype; + ke.initialContext = function() { + return [Q.b_stat]; + }, ke.curContext = function() { + return this.context[this.context.length - 1]; + }, ke.braceIsBlock = function(e) { + var t = this.curContext(); + return t === Q.f_expr || t === Q.f_stat ? true : e === i.colon && (t === Q.b_stat || t === Q.b_expr) ? !t.isExpr : e === i._return || e === i.name && this.exprAllowed ? _.test(this.input.slice(this.lastTokEnd, this.start)) : e === i._else || e === i.semi || e === i.eof || e === i.parenR || e === i.arrow ? true : e === i.braceL ? t === Q.b_stat : e === i._var || e === i._const || e === i.name ? false : !this.exprAllowed; + }, ke.inGeneratorContext = function() { + for (var e = this.context.length - 1; e >= 1; e--) { + var t = this.context[e]; + if (t.token === "function") + return t.generator; + } + return false; + }, ke.updateContext = function(e) { + var t, r = this.type; + r.keyword && e === i.dot ? this.exprAllowed = false : (t = r.updateContext) ? t.call(this, e) : this.exprAllowed = r.beforeExpr; + }, ke.overrideContext = function(e) { + this.curContext() !== e && (this.context[this.context.length - 1] = e); + }, i.parenR.updateContext = i.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return; + } + var e = this.context.pop(); + e === Q.b_stat && this.curContext().token === "function" && (e = this.context.pop()), this.exprAllowed = !e.isExpr; + }, i.braceL.updateContext = function(e) { + this.context.push(this.braceIsBlock(e) ? Q.b_stat : Q.b_expr), this.exprAllowed = true; + }, i.dollarBraceL.updateContext = function() { + this.context.push(Q.b_tmpl), this.exprAllowed = true; + }, i.parenL.updateContext = function(e) { + var t = e === i._if || e === i._for || e === i._with || e === i._while; + this.context.push(t ? Q.p_stat : Q.p_expr), this.exprAllowed = true; + }, i.incDec.updateContext = function() { + }, i._function.updateContext = i._class.updateContext = function(e) { + e.beforeExpr && e !== i._else && !(e === i.semi && this.curContext() !== Q.p_stat) && !(e === i._return && _.test(this.input.slice(this.lastTokEnd, this.start))) && !((e === i.colon || e === i.braceL) && this.curContext() === Q.b_stat) ? this.context.push(Q.f_expr) : this.context.push(Q.f_stat), this.exprAllowed = false; + }, i.backQuote.updateContext = function() { + this.curContext() === Q.q_tmpl ? this.context.pop() : this.context.push(Q.q_tmpl), this.exprAllowed = false; + }, i.star.updateContext = function(e) { + if (e === i._function) { + var t = this.context.length - 1; + this.context[t] === Q.f_expr ? this.context[t] = Q.f_expr_gen : this.context[t] = Q.f_gen; + } + this.exprAllowed = true; + }, i.name.updateContext = function(e) { + var t = false; + this.options.ecmaVersion >= 6 && e !== i.dot && (this.value === "of" && !this.exprAllowed || this.value === "yield" && this.inGeneratorContext()) && (t = true), this.exprAllowed = t; + }; + var z = Z.prototype; + z.checkPropClash = function(e, t, r) { + if (!(this.options.ecmaVersion >= 9 && e.type === "SpreadElement") && !(this.options.ecmaVersion >= 6 && (e.computed || e.method || e.shorthand))) { + var s = e.key, a; + switch (s.type) { + case "Identifier": + a = s.name; + break; + case "Literal": + a = String(s.value); + break; + default: + return; + } + var h = e.kind; + if (this.options.ecmaVersion >= 6) { + a === "__proto__" && h === "init" && (t.proto && (r ? r.doubleProto < 0 && (r.doubleProto = s.start) : this.raiseRecoverable(s.start, "Redefinition of __proto__ property")), t.proto = true); + return; + } + a = "$" + a; + var c = t[a]; + if (c) { + var d; + h === "init" ? d = this.strict && c.init || c.get || c.set : d = c.init || c[h], d && this.raiseRecoverable(s.start, "Redefinition of property"); + } else + c = t[a] = { init: false, get: false, set: false }; + c[h] = true; + } + }, z.parseExpression = function(e, t) { + var r = this.start, s = this.startLoc, a = this.parseMaybeAssign(e, t); + if (this.type === i.comma) { + var h = this.startNodeAt(r, s); + for (h.expressions = [a]; this.eat(i.comma); ) + h.expressions.push(this.parseMaybeAssign(e, t)); + return this.finishNode(h, "SequenceExpression"); + } + return a; + }, z.parseMaybeAssign = function(e, t, r) { + if (this.isContextual("yield")) { + if (this.inGenerator) + return this.parseYield(e); + this.exprAllowed = false; + } + var s = false, a = -1, h = -1, c = -1; + t ? (a = t.parenthesizedAssign, h = t.trailingComma, c = t.doubleProto, t.parenthesizedAssign = t.trailingComma = -1) : (t = new We(), s = true); + var d = this.start, x = this.startLoc; + (this.type === i.parenL || this.type === i.name) && (this.potentialArrowAt = this.start, this.potentialArrowInForAwait = e === "await"); + var U = this.parseMaybeConditional(e, t); + if (r && (U = r.call(this, U, d, x)), this.type.isAssign) { + var W = this.startNodeAt(d, x); + return W.operator = this.value, this.type === i.eq && (U = this.toAssignable(U, false, t)), s || (t.parenthesizedAssign = t.trailingComma = t.doubleProto = -1), t.shorthandAssign >= U.start && (t.shorthandAssign = -1), this.type === i.eq ? this.checkLValPattern(U) : this.checkLValSimple(U), W.left = U, this.next(), W.right = this.parseMaybeAssign(e), c > -1 && (t.doubleProto = c), this.finishNode(W, "AssignmentExpression"); + } else + s && this.checkExpressionErrors(t, true); + return a > -1 && (t.parenthesizedAssign = a), h > -1 && (t.trailingComma = h), U; + }, z.parseMaybeConditional = function(e, t) { + var r = this.start, s = this.startLoc, a = this.parseExprOps(e, t); + if (this.checkExpressionErrors(t)) + return a; + if (this.eat(i.question)) { + var h = this.startNodeAt(r, s); + return h.test = a, h.consequent = this.parseMaybeAssign(), this.expect(i.colon), h.alternate = this.parseMaybeAssign(e), this.finishNode(h, "ConditionalExpression"); + } + return a; + }, z.parseExprOps = function(e, t) { + var r = this.start, s = this.startLoc, a = this.parseMaybeUnary(t, false, false, e); + return this.checkExpressionErrors(t) || a.start === r && a.type === "ArrowFunctionExpression" ? a : this.parseExprOp(a, r, s, -1, e); + }, z.parseExprOp = function(e, t, r, s, a) { + var h = this.type.binop; + if (h != null && (!a || this.type !== i._in) && h > s) { + var c = this.type === i.logicalOR || this.type === i.logicalAND, d = this.type === i.coalesce; + d && (h = i.logicalAND.binop); + var x = this.value; + this.next(); + var U = this.start, W = this.startLoc, re = this.parseExprOp(this.parseMaybeUnary(null, false, false, a), U, W, h, a), be = this.buildBinary(t, r, e, re, x, c || d); + return (c && this.type === i.coalesce || d && (this.type === i.logicalOR || this.type === i.logicalAND)) && this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"), this.parseExprOp(be, t, r, s, a); + } + return e; + }, z.buildBinary = function(e, t, r, s, a, h) { + s.type === "PrivateIdentifier" && this.raise(s.start, "Private identifier can only be left side of binary expression"); + var c = this.startNodeAt(e, t); + return c.left = r, c.operator = a, c.right = s, this.finishNode(c, h ? "LogicalExpression" : "BinaryExpression"); + }, z.parseMaybeUnary = function(e, t, r, s) { + var a = this.start, h = this.startLoc, c; + if (this.isContextual("await") && this.canAwait) + c = this.parseAwait(s), t = true; + else if (this.type.prefix) { + var d = this.startNode(), x = this.type === i.incDec; + d.operator = this.value, d.prefix = true, this.next(), d.argument = this.parseMaybeUnary(null, true, x, s), this.checkExpressionErrors(e, true), x ? this.checkLValSimple(d.argument) : this.strict && d.operator === "delete" && d.argument.type === "Identifier" ? this.raiseRecoverable(d.start, "Deleting local variable in strict mode") : d.operator === "delete" && xr(d.argument) ? this.raiseRecoverable(d.start, "Private fields can not be deleted") : t = true, c = this.finishNode(d, x ? "UpdateExpression" : "UnaryExpression"); + } else if (!t && this.type === i.privateId) + (s || this.privateNameStack.length === 0) && this.unexpected(), c = this.parsePrivateIdent(), this.type !== i._in && this.unexpected(); + else { + if (c = this.parseExprSubscripts(e, s), this.checkExpressionErrors(e)) + return c; + for (; this.type.postfix && !this.canInsertSemicolon(); ) { + var U = this.startNodeAt(a, h); + U.operator = this.value, U.prefix = false, U.argument = c, this.checkLValSimple(c), this.next(), c = this.finishNode(U, "UpdateExpression"); + } + } + if (!r && this.eat(i.starstar)) + if (t) + this.unexpected(this.lastTokStart); + else + return this.buildBinary(a, h, c, this.parseMaybeUnary(null, false, false, s), "**", false); + else + return c; + }; + function xr(e) { + return e.type === "MemberExpression" && e.property.type === "PrivateIdentifier" || e.type === "ChainExpression" && xr(e.expression); + } + z.parseExprSubscripts = function(e, t) { + var r = this.start, s = this.startLoc, a = this.parseExprAtom(e, t); + if (a.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") + return a; + var h = this.parseSubscripts(a, r, s, false, t); + return e && h.type === "MemberExpression" && (e.parenthesizedAssign >= h.start && (e.parenthesizedAssign = -1), e.parenthesizedBind >= h.start && (e.parenthesizedBind = -1), e.trailingComma >= h.start && (e.trailingComma = -1)), h; + }, z.parseSubscripts = function(e, t, r, s, a) { + for (var h = this.options.ecmaVersion >= 8 && e.type === "Identifier" && e.name === "async" && this.lastTokEnd === e.end && !this.canInsertSemicolon() && e.end - e.start === 5 && this.potentialArrowAt === e.start, c = false; ; ) { + var d = this.parseSubscript(e, t, r, s, h, c, a); + if (d.optional && (c = true), d === e || d.type === "ArrowFunctionExpression") { + if (c) { + var x = this.startNodeAt(t, r); + x.expression = d, d = this.finishNode(x, "ChainExpression"); + } + return d; + } + e = d; + } + }, z.parseSubscript = function(e, t, r, s, a, h, c) { + var d = this.options.ecmaVersion >= 11, x = d && this.eat(i.questionDot); + s && x && this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); + var U = this.eat(i.bracketL); + if (U || x && this.type !== i.parenL && this.type !== i.backQuote || this.eat(i.dot)) { + var W = this.startNodeAt(t, r); + W.object = e, U ? (W.property = this.parseExpression(), this.expect(i.bracketR)) : this.type === i.privateId && e.type !== "Super" ? W.property = this.parsePrivateIdent() : W.property = this.parseIdent(this.options.allowReserved !== "never"), W.computed = !!U, d && (W.optional = x), e = this.finishNode(W, "MemberExpression"); + } else if (!s && this.eat(i.parenL)) { + var re = new We(), be = this.yieldPos, je = this.awaitPos, Fe = this.awaitIdentPos; + this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0; + var Qe = this.parseExprList(i.parenR, this.options.ecmaVersion >= 8, false, re); + if (a && !x && !this.canInsertSemicolon() && this.eat(i.arrow)) + return this.checkPatternErrors(re, false), this.checkYieldAwaitInDefaultParams(), this.awaitIdentPos > 0 && this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"), this.yieldPos = be, this.awaitPos = je, this.awaitIdentPos = Fe, this.parseArrowExpression(this.startNodeAt(t, r), Qe, true, c); + this.checkExpressionErrors(re, true), this.yieldPos = be || this.yieldPos, this.awaitPos = je || this.awaitPos, this.awaitIdentPos = Fe || this.awaitIdentPos; + var Be = this.startNodeAt(t, r); + Be.callee = e, Be.arguments = Qe, d && (Be.optional = x), e = this.finishNode(Be, "CallExpression"); + } else if (this.type === i.backQuote) { + (x || h) && this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions"); + var Te = this.startNodeAt(t, r); + Te.tag = e, Te.quasi = this.parseTemplate({ isTagged: true }), e = this.finishNode(Te, "TaggedTemplateExpression"); + } + return e; + }, z.parseExprAtom = function(e, t) { + this.type === i.slash && this.readRegexp(); + var r, s = this.potentialArrowAt === this.start; + switch (this.type) { + case i._super: + return this.allowSuper || this.raise(this.start, "'super' keyword outside a method"), r = this.startNode(), this.next(), this.type === i.parenL && !this.allowDirectSuper && this.raise(r.start, "super() call outside constructor of a subclass"), this.type !== i.dot && this.type !== i.bracketL && this.type !== i.parenL && this.unexpected(), this.finishNode(r, "Super"); + case i._this: + return r = this.startNode(), this.next(), this.finishNode(r, "ThisExpression"); + case i.name: + var a = this.start, h = this.startLoc, c = this.containsEsc, d = this.parseIdent(false); + if (this.options.ecmaVersion >= 8 && !c && d.name === "async" && !this.canInsertSemicolon() && this.eat(i._function)) + return this.overrideContext(Q.f_expr), this.parseFunction(this.startNodeAt(a, h), 0, false, true, t); + if (s && !this.canInsertSemicolon()) { + if (this.eat(i.arrow)) + return this.parseArrowExpression(this.startNodeAt(a, h), [d], false, t); + if (this.options.ecmaVersion >= 8 && d.name === "async" && this.type === i.name && !c && (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) + return d = this.parseIdent(false), (this.canInsertSemicolon() || !this.eat(i.arrow)) && this.unexpected(), this.parseArrowExpression(this.startNodeAt(a, h), [d], true, t); + } + return d; + case i.regexp: + var x = this.value; + return r = this.parseLiteral(x.value), r.regex = { pattern: x.pattern, flags: x.flags }, r; + case i.num: + case i.string: + return this.parseLiteral(this.value); + case i._null: + case i._true: + case i._false: + return r = this.startNode(), r.value = this.type === i._null ? null : this.type === i._true, r.raw = this.type.keyword, this.next(), this.finishNode(r, "Literal"); + case i.parenL: + var U = this.start, W = this.parseParenAndDistinguishExpression(s, t); + return e && (e.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(W) && (e.parenthesizedAssign = U), e.parenthesizedBind < 0 && (e.parenthesizedBind = U)), W; + case i.bracketL: + return r = this.startNode(), this.next(), r.elements = this.parseExprList(i.bracketR, true, true, e), this.finishNode(r, "ArrayExpression"); + case i.braceL: + return this.overrideContext(Q.b_expr), this.parseObj(false, e); + case i._function: + return r = this.startNode(), this.next(), this.parseFunction(r, 0); + case i._class: + return this.parseClass(this.startNode(), false); + case i._new: + return this.parseNew(); + case i.backQuote: + return this.parseTemplate(); + case i._import: + return this.options.ecmaVersion >= 11 ? this.parseExprImport() : this.unexpected(); + default: + this.unexpected(); + } + }, z.parseExprImport = function() { + var e = this.startNode(); + this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword import"); + var t = this.parseIdent(true); + switch (this.type) { + case i.parenL: + return this.parseDynamicImport(e); + case i.dot: + return e.meta = t, this.parseImportMeta(e); + default: + this.unexpected(); + } + }, z.parseDynamicImport = function(e) { + if (this.next(), e.source = this.parseMaybeAssign(), !this.eat(i.parenR)) { + var t = this.start; + this.eat(i.comma) && this.eat(i.parenR) ? this.raiseRecoverable(t, "Trailing comma is not allowed in import()") : this.unexpected(t); + } + return this.finishNode(e, "ImportExpression"); + }, z.parseImportMeta = function(e) { + this.next(); + var t = this.containsEsc; + return e.property = this.parseIdent(true), e.property.name !== "meta" && this.raiseRecoverable(e.property.start, "The only valid meta property for import is 'import.meta'"), t && this.raiseRecoverable(e.start, "'import.meta' must not contain escaped characters"), this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere && this.raiseRecoverable(e.start, "Cannot use 'import.meta' outside a module"), this.finishNode(e, "MetaProperty"); + }, z.parseLiteral = function(e) { + var t = this.startNode(); + return t.value = e, t.raw = this.input.slice(this.start, this.end), t.raw.charCodeAt(t.raw.length - 1) === 110 && (t.bigint = t.raw.slice(0, -1).replace(/_/g, "")), this.next(), this.finishNode(t, "Literal"); + }, z.parseParenExpression = function() { + this.expect(i.parenL); + var e = this.parseExpression(); + return this.expect(i.parenR), e; + }, z.parseParenAndDistinguishExpression = function(e, t) { + var r = this.start, s = this.startLoc, a, h = this.options.ecmaVersion >= 8; + if (this.options.ecmaVersion >= 6) { + this.next(); + var c = this.start, d = this.startLoc, x = [], U = true, W = false, re = new We(), be = this.yieldPos, je = this.awaitPos, Fe; + for (this.yieldPos = 0, this.awaitPos = 0; this.type !== i.parenR; ) + if (U ? U = false : this.expect(i.comma), h && this.afterTrailingComma(i.parenR, true)) { + W = true; + break; + } else if (this.type === i.ellipsis) { + Fe = this.start, x.push(this.parseParenItem(this.parseRestBinding())), this.type === i.comma && this.raise(this.start, "Comma is not permitted after the rest element"); + break; + } else + x.push(this.parseMaybeAssign(false, re, this.parseParenItem)); + var Qe = this.lastTokEnd, Be = this.lastTokEndLoc; + if (this.expect(i.parenR), e && !this.canInsertSemicolon() && this.eat(i.arrow)) + return this.checkPatternErrors(re, false), this.checkYieldAwaitInDefaultParams(), this.yieldPos = be, this.awaitPos = je, this.parseParenArrowList(r, s, x, t); + (!x.length || W) && this.unexpected(this.lastTokStart), Fe && this.unexpected(Fe), this.checkExpressionErrors(re, true), this.yieldPos = be || this.yieldPos, this.awaitPos = je || this.awaitPos, x.length > 1 ? (a = this.startNodeAt(c, d), a.expressions = x, this.finishNodeAt(a, "SequenceExpression", Qe, Be)) : a = x[0]; + } else + a = this.parseParenExpression(); + if (this.options.preserveParens) { + var Te = this.startNodeAt(r, s); + return Te.expression = a, this.finishNode(Te, "ParenthesizedExpression"); + } else + return a; + }, z.parseParenItem = function(e) { + return e; + }, z.parseParenArrowList = function(e, t, r, s) { + return this.parseArrowExpression(this.startNodeAt(e, t), r, false, s); + }; + var Ra = []; + z.parseNew = function() { + this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword new"); + var e = this.startNode(), t = this.parseIdent(true); + if (this.options.ecmaVersion >= 6 && this.eat(i.dot)) { + e.meta = t; + var r = this.containsEsc; + return e.property = this.parseIdent(true), e.property.name !== "target" && this.raiseRecoverable(e.property.start, "The only valid meta property for new is 'new.target'"), r && this.raiseRecoverable(e.start, "'new.target' must not contain escaped characters"), this.allowNewDotTarget || this.raiseRecoverable(e.start, "'new.target' can only be used in functions and class static block"), this.finishNode(e, "MetaProperty"); + } + var s = this.start, a = this.startLoc, h = this.type === i._import; + return e.callee = this.parseSubscripts(this.parseExprAtom(), s, a, true, false), h && e.callee.type === "ImportExpression" && this.raise(s, "Cannot use new with import()"), this.eat(i.parenL) ? e.arguments = this.parseExprList(i.parenR, this.options.ecmaVersion >= 8, false) : e.arguments = Ra, this.finishNode(e, "NewExpression"); + }, z.parseTemplateElement = function(e) { + var t = e.isTagged, r = this.startNode(); + return this.type === i.invalidTemplate ? (t || this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"), r.value = { raw: this.value, cooked: null }) : r.value = { raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, ` +`), cooked: this.value }, this.next(), r.tail = this.type === i.backQuote, this.finishNode(r, "TemplateElement"); + }, z.parseTemplate = function(e) { + e === void 0 && (e = {}); + var t = e.isTagged; + t === void 0 && (t = false); + var r = this.startNode(); + this.next(), r.expressions = []; + var s = this.parseTemplateElement({ isTagged: t }); + for (r.quasis = [s]; !s.tail; ) + this.type === i.eof && this.raise(this.pos, "Unterminated template literal"), this.expect(i.dollarBraceL), r.expressions.push(this.parseExpression()), this.expect(i.braceR), r.quasis.push(s = this.parseTemplateElement({ isTagged: t })); + return this.next(), this.finishNode(r, "TemplateLiteral"); + }, z.isAsyncProp = function(e) { + return !e.computed && e.key.type === "Identifier" && e.key.name === "async" && (this.type === i.name || this.type === i.num || this.type === i.string || this.type === i.bracketL || this.type.keyword || this.options.ecmaVersion >= 9 && this.type === i.star) && !_.test(this.input.slice(this.lastTokEnd, this.start)); + }, z.parseObj = function(e, t) { + var r = this.startNode(), s = true, a = {}; + for (r.properties = [], this.next(); !this.eat(i.braceR); ) { + if (s) + s = false; + else if (this.expect(i.comma), this.options.ecmaVersion >= 5 && this.afterTrailingComma(i.braceR)) + break; + var h = this.parseProperty(e, t); + e || this.checkPropClash(h, a, t), r.properties.push(h); + } + return this.finishNode(r, e ? "ObjectPattern" : "ObjectExpression"); + }, z.parseProperty = function(e, t) { + var r = this.startNode(), s, a, h, c; + if (this.options.ecmaVersion >= 9 && this.eat(i.ellipsis)) + return e ? (r.argument = this.parseIdent(false), this.type === i.comma && this.raise(this.start, "Comma is not permitted after the rest element"), this.finishNode(r, "RestElement")) : (this.type === i.parenL && t && (t.parenthesizedAssign < 0 && (t.parenthesizedAssign = this.start), t.parenthesizedBind < 0 && (t.parenthesizedBind = this.start)), r.argument = this.parseMaybeAssign(false, t), this.type === i.comma && t && t.trailingComma < 0 && (t.trailingComma = this.start), this.finishNode(r, "SpreadElement")); + this.options.ecmaVersion >= 6 && (r.method = false, r.shorthand = false, (e || t) && (h = this.start, c = this.startLoc), e || (s = this.eat(i.star))); + var d = this.containsEsc; + return this.parsePropertyName(r), !e && !d && this.options.ecmaVersion >= 8 && !s && this.isAsyncProp(r) ? (a = true, s = this.options.ecmaVersion >= 9 && this.eat(i.star), this.parsePropertyName(r, t)) : a = false, this.parsePropertyValue(r, e, s, a, h, c, t, d), this.finishNode(r, "Property"); + }, z.parsePropertyValue = function(e, t, r, s, a, h, c, d) { + if ((r || s) && this.type === i.colon && this.unexpected(), this.eat(i.colon)) + e.value = t ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, c), e.kind = "init"; + else if (this.options.ecmaVersion >= 6 && this.type === i.parenL) + t && this.unexpected(), e.kind = "init", e.method = true, e.value = this.parseMethod(r, s); + else if (!t && !d && this.options.ecmaVersion >= 5 && !e.computed && e.key.type === "Identifier" && (e.key.name === "get" || e.key.name === "set") && this.type !== i.comma && this.type !== i.braceR && this.type !== i.eq) { + (r || s) && this.unexpected(), e.kind = e.key.name, this.parsePropertyName(e), e.value = this.parseMethod(false); + var x = e.kind === "get" ? 0 : 1; + if (e.value.params.length !== x) { + var U = e.value.start; + e.kind === "get" ? this.raiseRecoverable(U, "getter should have no params") : this.raiseRecoverable(U, "setter should have exactly one param"); + } else + e.kind === "set" && e.value.params[0].type === "RestElement" && this.raiseRecoverable(e.value.params[0].start, "Setter cannot use rest params"); + } else + this.options.ecmaVersion >= 6 && !e.computed && e.key.type === "Identifier" ? ((r || s) && this.unexpected(), this.checkUnreserved(e.key), e.key.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = a), e.kind = "init", t ? e.value = this.parseMaybeDefault(a, h, this.copyNode(e.key)) : this.type === i.eq && c ? (c.shorthandAssign < 0 && (c.shorthandAssign = this.start), e.value = this.parseMaybeDefault(a, h, this.copyNode(e.key))) : e.value = this.copyNode(e.key), e.shorthand = true) : this.unexpected(); + }, z.parsePropertyName = function(e) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(i.bracketL)) + return e.computed = true, e.key = this.parseMaybeAssign(), this.expect(i.bracketR), e.key; + e.computed = false; + } + return e.key = this.type === i.num || this.type === i.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"); + }, z.initFunction = function(e) { + e.id = null, this.options.ecmaVersion >= 6 && (e.generator = e.expression = false), this.options.ecmaVersion >= 8 && (e.async = false); + }, z.parseMethod = function(e, t, r) { + var s = this.startNode(), a = this.yieldPos, h = this.awaitPos, c = this.awaitIdentPos; + return this.initFunction(s), this.options.ecmaVersion >= 6 && (s.generator = e), this.options.ecmaVersion >= 8 && (s.async = !!t), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(vt(t, s.generator) | dt | (r ? fr : 0)), this.expect(i.parenL), s.params = this.parseBindingList(i.parenR, false, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams(), this.parseFunctionBody(s, false, true, false), this.yieldPos = a, this.awaitPos = h, this.awaitIdentPos = c, this.finishNode(s, "FunctionExpression"); + }, z.parseArrowExpression = function(e, t, r, s) { + var a = this.yieldPos, h = this.awaitPos, c = this.awaitIdentPos; + return this.enterScope(vt(r, false) | cr), this.initFunction(e), this.options.ecmaVersion >= 8 && (e.async = !!r), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, e.params = this.toAssignableList(t, true), this.parseFunctionBody(e, true, false, s), this.yieldPos = a, this.awaitPos = h, this.awaitIdentPos = c, this.finishNode(e, "ArrowFunctionExpression"); + }, z.parseFunctionBody = function(e, t, r, s) { + var a = t && this.type !== i.braceL, h = this.strict, c = false; + if (a) + e.body = this.parseMaybeAssign(s), e.expression = true, this.checkParams(e, false); + else { + var d = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(e.params); + (!h || d) && (c = this.strictDirective(this.end), c && d && this.raiseRecoverable(e.start, "Illegal 'use strict' directive in function with non-simple parameter list")); + var x = this.labels; + this.labels = [], c && (this.strict = true), this.checkParams(e, !h && !c && !t && !r && this.isSimpleParamList(e.params)), this.strict && e.id && this.checkLValSimple(e.id, vr), e.body = this.parseBlock(false, void 0, c && !h), e.expression = false, this.adaptDirectivePrologue(e.body.body), this.labels = x; + } + this.exitScope(); + }, z.isSimpleParamList = function(e) { + for (var t = 0, r = e; t < r.length; t += 1) { + var s = r[t]; + if (s.type !== "Identifier") + return false; + } + return true; + }, z.checkParams = function(e, t) { + for (var r = /* @__PURE__ */ Object.create(null), s = 0, a = e.params; s < a.length; s += 1) { + var h = a[s]; + this.checkLValInnerPattern(h, gt, t ? null : r); + } + }, z.parseExprList = function(e, t, r, s) { + for (var a = [], h = true; !this.eat(e); ) { + if (h) + h = false; + else if (this.expect(i.comma), t && this.afterTrailingComma(e)) + break; + var c = void 0; + r && this.type === i.comma ? c = null : this.type === i.ellipsis ? (c = this.parseSpread(s), s && this.type === i.comma && s.trailingComma < 0 && (s.trailingComma = this.start)) : c = this.parseMaybeAssign(false, s), a.push(c); + } + return a; + }, z.checkUnreserved = function(e) { + var t = e.start, r = e.end, s = e.name; + if (this.inGenerator && s === "yield" && this.raiseRecoverable(t, "Cannot use 'yield' as identifier inside a generator"), this.inAsync && s === "await" && this.raiseRecoverable(t, "Cannot use 'await' as identifier inside an async function"), this.currentThisScope().inClassFieldInit && s === "arguments" && this.raiseRecoverable(t, "Cannot use 'arguments' in class field initializer"), this.inClassStaticBlock && (s === "arguments" || s === "await") && this.raise(t, "Cannot use " + s + " in class static initialization block"), this.keywords.test(s) && this.raise(t, "Unexpected keyword '" + s + "'"), !(this.options.ecmaVersion < 6 && this.input.slice(t, r).indexOf("\\") !== -1)) { + var a = this.strict ? this.reservedWordsStrict : this.reservedWords; + a.test(s) && (!this.inAsync && s === "await" && this.raiseRecoverable(t, "Cannot use keyword 'await' outside an async function"), this.raiseRecoverable(t, "The keyword '" + s + "' is reserved")); + } + }, z.parseIdent = function(e, t) { + var r = this.startNode(); + return this.type === i.name ? r.name = this.value : this.type.keyword ? (r.name = this.type.keyword, (r.name === "class" || r.name === "function") && (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46) && this.context.pop()) : this.unexpected(), this.next(!!e), this.finishNode(r, "Identifier"), e || (this.checkUnreserved(r), r.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = r.start)), r; + }, z.parsePrivateIdent = function() { + var e = this.startNode(); + return this.type === i.privateId ? e.name = this.value : this.unexpected(), this.next(), this.finishNode(e, "PrivateIdentifier"), this.privateNameStack.length === 0 ? this.raise(e.start, "Private field '#" + e.name + "' must be declared in an enclosing class") : this.privateNameStack[this.privateNameStack.length - 1].used.push(e), e; + }, z.parseYield = function(e) { + this.yieldPos || (this.yieldPos = this.start); + var t = this.startNode(); + return this.next(), this.type === i.semi || this.canInsertSemicolon() || this.type !== i.star && !this.type.startsExpr ? (t.delegate = false, t.argument = null) : (t.delegate = this.eat(i.star), t.argument = this.parseMaybeAssign(e)), this.finishNode(t, "YieldExpression"); + }, z.parseAwait = function(e) { + this.awaitPos || (this.awaitPos = this.start); + var t = this.startNode(); + return this.next(), t.argument = this.parseMaybeUnary(null, true, false, e), this.finishNode(t, "AwaitExpression"); + }; + var Ke = Z.prototype; + Ke.raise = function(e, t) { + var r = oe(this.input, e); + t += " (" + r.line + ":" + r.column + ")"; + var s = new SyntaxError(t); + throw s.pos = e, s.loc = r, s.raisedAt = this.pos, s; + }, Ke.raiseRecoverable = Ke.raise, Ke.curPosition = function() { + if (this.options.locations) + return new K(this.curLine, this.pos - this.lineStart); + }; + var xe = Z.prototype, ja = function(t) { + this.flags = t, this.var = [], this.lexical = [], this.functions = [], this.inClassFieldInit = false; + }; + xe.enterScope = function(e) { + this.scopeStack.push(new ja(e)); + }, xe.exitScope = function() { + this.scopeStack.pop(); + }, xe.treatFunctionsAsVarInScope = function(e) { + return e.flags & ge || !this.inModule && e.flags & Ee; + }, xe.declareName = function(e, t, r) { + var s = false; + if (t === fe) { + var a = this.currentScope(); + s = a.lexical.indexOf(e) > -1 || a.functions.indexOf(e) > -1 || a.var.indexOf(e) > -1, a.lexical.push(e), this.inModule && a.flags & Ee && delete this.undefinedExports[e]; + } else if (t === mr) { + var h = this.currentScope(); + h.lexical.push(e); + } else if (t === dr) { + var c = this.currentScope(); + this.treatFunctionsAsVar ? s = c.lexical.indexOf(e) > -1 : s = c.lexical.indexOf(e) > -1 || c.var.indexOf(e) > -1, c.functions.push(e); + } else + for (var d = this.scopeStack.length - 1; d >= 0; --d) { + var x = this.scopeStack[d]; + if (x.lexical.indexOf(e) > -1 && !(x.flags & pr && x.lexical[0] === e) || !this.treatFunctionsAsVarInScope(x) && x.functions.indexOf(e) > -1) { + s = true; + break; + } + if (x.var.push(e), this.inModule && x.flags & Ee && delete this.undefinedExports[e], x.flags & mt) + break; + } + s && this.raiseRecoverable(r, "Identifier '" + e + "' has already been declared"); + }, xe.checkLocalExport = function(e) { + this.scopeStack[0].lexical.indexOf(e.name) === -1 && this.scopeStack[0].var.indexOf(e.name) === -1 && (this.undefinedExports[e.name] = e); + }, xe.currentScope = function() { + return this.scopeStack[this.scopeStack.length - 1]; + }, xe.currentVarScope = function() { + for (var e = this.scopeStack.length - 1; ; e--) { + var t = this.scopeStack[e]; + if (t.flags & mt) + return t; + } + }, xe.currentThisScope = function() { + for (var e = this.scopeStack.length - 1; ; e--) { + var t = this.scopeStack[e]; + if (t.flags & mt && !(t.flags & cr)) + return t; + } + }; + var Ve = function(t, r, s) { + this.type = "", this.start = r, this.end = 0, t.options.locations && (this.loc = new X(t, s)), t.options.directSourceFile && (this.sourceFile = t.options.directSourceFile), t.options.ranges && (this.range = [r, 0]); + }, Re = Z.prototype; + Re.startNode = function() { + return new Ve(this, this.start, this.startLoc); + }, Re.startNodeAt = function(e, t) { + return new Ve(this, e, t); + }; + function yr(e, t, r, s) { + return e.type = t, e.end = r, this.options.locations && (e.loc.end = s), this.options.ranges && (e.range[1] = r), e; + } + Re.finishNode = function(e, t) { + return yr.call(this, e, t, this.lastTokEnd, this.lastTokEndLoc); + }, Re.finishNodeAt = function(e, t, r, s) { + return yr.call(this, e, t, r, s); + }, Re.copyNode = function(e) { + var t = new Ve(this, e.start, this.startLoc); + for (var r in e) + t[r] = e[r]; + return t; + }; + var Ar = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS", Cr = Ar + " Extended_Pictographic", Er = Cr, br = Er + " EBase EComp EMod EPres ExtPict", qa = br, Ma = { 9: Ar, 10: Cr, 11: Er, 12: br, 13: qa }, _r = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu", Sr = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb", wr = Sr + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd", kr = wr + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho", Fr = kr + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", Ua = Fr + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith", za = { 9: Sr, 10: wr, 11: kr, 12: Fr, 13: Ua }, Br = {}; + function Wa(e) { + var t = Br[e] = { binary: f(Ma[e] + " " + _r), nonBinary: { General_Category: f(_r), Script: f(za[e]) } }; + t.nonBinary.Script_Extensions = t.nonBinary.Script, t.nonBinary.gc = t.nonBinary.General_Category, t.nonBinary.sc = t.nonBinary.Script, t.nonBinary.scx = t.nonBinary.Script_Extensions; + } + for (var At = 0, Tr = [9, 10, 11, 12, 13]; At < Tr.length; At += 1) { + var Ga = Tr[At]; + Wa(Ga); + } + var O = Z.prototype, de = function(t) { + this.parser = t, this.validFlags = "gim" + (t.options.ecmaVersion >= 6 ? "uy" : "") + (t.options.ecmaVersion >= 9 ? "s" : "") + (t.options.ecmaVersion >= 13 ? "d" : ""), this.unicodeProperties = Br[t.options.ecmaVersion >= 13 ? 13 : t.options.ecmaVersion], this.source = "", this.flags = "", this.start = 0, this.switchU = false, this.switchN = false, this.pos = 0, this.lastIntValue = 0, this.lastStringValue = "", this.lastAssertionIsQuantifiable = false, this.numCapturingParens = 0, this.maxBackReference = 0, this.groupNames = [], this.backReferenceNames = []; + }; + de.prototype.reset = function(t, r, s) { + var a = s.indexOf("u") !== -1; + this.start = t | 0, this.source = r + "", this.flags = s, this.switchU = a && this.parser.options.ecmaVersion >= 6, this.switchN = a && this.parser.options.ecmaVersion >= 9; + }, de.prototype.raise = function(t) { + this.parser.raiseRecoverable(this.start, "Invalid regular expression: /" + this.source + "/: " + t); + }, de.prototype.at = function(t, r) { + r === void 0 && (r = false); + var s = this.source, a = s.length; + if (t >= a) + return -1; + var h = s.charCodeAt(t); + if (!(r || this.switchU) || h <= 55295 || h >= 57344 || t + 1 >= a) + return h; + var c = s.charCodeAt(t + 1); + return c >= 56320 && c <= 57343 ? (h << 10) + c - 56613888 : h; + }, de.prototype.nextIndex = function(t, r) { + r === void 0 && (r = false); + var s = this.source, a = s.length; + if (t >= a) + return a; + var h = s.charCodeAt(t), c; + return !(r || this.switchU) || h <= 55295 || h >= 57344 || t + 1 >= a || (c = s.charCodeAt(t + 1)) < 56320 || c > 57343 ? t + 1 : t + 2; + }, de.prototype.current = function(t) { + return t === void 0 && (t = false), this.at(this.pos, t); + }, de.prototype.lookahead = function(t) { + return t === void 0 && (t = false), this.at(this.nextIndex(this.pos, t), t); + }, de.prototype.advance = function(t) { + t === void 0 && (t = false), this.pos = this.nextIndex(this.pos, t); + }, de.prototype.eat = function(t, r) { + return r === void 0 && (r = false), this.current(r) === t ? (this.advance(r), true) : false; + }; + function Xe(e) { + return e <= 65535 ? String.fromCharCode(e) : (e -= 65536, String.fromCharCode((e >> 10) + 55296, (e & 1023) + 56320)); + } + O.validateRegExpFlags = function(e) { + for (var t = e.validFlags, r = e.flags, s = 0; s < r.length; s++) { + var a = r.charAt(s); + t.indexOf(a) === -1 && this.raise(e.start, "Invalid regular expression flag"), r.indexOf(a, s + 1) > -1 && this.raise(e.start, "Duplicate regular expression flag"); + } + }, O.validateRegExpPattern = function(e) { + this.regexp_pattern(e), !e.switchN && this.options.ecmaVersion >= 9 && e.groupNames.length > 0 && (e.switchN = true, this.regexp_pattern(e)); + }, O.regexp_pattern = function(e) { + e.pos = 0, e.lastIntValue = 0, e.lastStringValue = "", e.lastAssertionIsQuantifiable = false, e.numCapturingParens = 0, e.maxBackReference = 0, e.groupNames.length = 0, e.backReferenceNames.length = 0, this.regexp_disjunction(e), e.pos !== e.source.length && (e.eat(41) && e.raise("Unmatched ')'"), (e.eat(93) || e.eat(125)) && e.raise("Lone quantifier brackets")), e.maxBackReference > e.numCapturingParens && e.raise("Invalid escape"); + for (var t = 0, r = e.backReferenceNames; t < r.length; t += 1) { + var s = r[t]; + e.groupNames.indexOf(s) === -1 && e.raise("Invalid named capture referenced"); + } + }, O.regexp_disjunction = function(e) { + for (this.regexp_alternative(e); e.eat(124); ) + this.regexp_alternative(e); + this.regexp_eatQuantifier(e, true) && e.raise("Nothing to repeat"), e.eat(123) && e.raise("Lone quantifier brackets"); + }, O.regexp_alternative = function(e) { + for (; e.pos < e.source.length && this.regexp_eatTerm(e); ) + ; + }, O.regexp_eatTerm = function(e) { + return this.regexp_eatAssertion(e) ? (e.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(e) && e.switchU && e.raise("Invalid quantifier"), true) : (e.switchU ? this.regexp_eatAtom(e) : this.regexp_eatExtendedAtom(e)) ? (this.regexp_eatQuantifier(e), true) : false; + }, O.regexp_eatAssertion = function(e) { + var t = e.pos; + if (e.lastAssertionIsQuantifiable = false, e.eat(94) || e.eat(36)) + return true; + if (e.eat(92)) { + if (e.eat(66) || e.eat(98)) + return true; + e.pos = t; + } + if (e.eat(40) && e.eat(63)) { + var r = false; + if (this.options.ecmaVersion >= 9 && (r = e.eat(60)), e.eat(61) || e.eat(33)) + return this.regexp_disjunction(e), e.eat(41) || e.raise("Unterminated group"), e.lastAssertionIsQuantifiable = !r, true; + } + return e.pos = t, false; + }, O.regexp_eatQuantifier = function(e, t) { + return t === void 0 && (t = false), this.regexp_eatQuantifierPrefix(e, t) ? (e.eat(63), true) : false; + }, O.regexp_eatQuantifierPrefix = function(e, t) { + return e.eat(42) || e.eat(43) || e.eat(63) || this.regexp_eatBracedQuantifier(e, t); + }, O.regexp_eatBracedQuantifier = function(e, t) { + var r = e.pos; + if (e.eat(123)) { + var s = 0, a = -1; + if (this.regexp_eatDecimalDigits(e) && (s = e.lastIntValue, e.eat(44) && this.regexp_eatDecimalDigits(e) && (a = e.lastIntValue), e.eat(125))) + return a !== -1 && a < s && !t && e.raise("numbers out of order in {} quantifier"), true; + e.switchU && !t && e.raise("Incomplete quantifier"), e.pos = r; + } + return false; + }, O.regexp_eatAtom = function(e) { + return this.regexp_eatPatternCharacters(e) || e.eat(46) || this.regexp_eatReverseSolidusAtomEscape(e) || this.regexp_eatCharacterClass(e) || this.regexp_eatUncapturingGroup(e) || this.regexp_eatCapturingGroup(e); + }, O.regexp_eatReverseSolidusAtomEscape = function(e) { + var t = e.pos; + if (e.eat(92)) { + if (this.regexp_eatAtomEscape(e)) + return true; + e.pos = t; + } + return false; + }, O.regexp_eatUncapturingGroup = function(e) { + var t = e.pos; + if (e.eat(40)) { + if (e.eat(63) && e.eat(58)) { + if (this.regexp_disjunction(e), e.eat(41)) + return true; + e.raise("Unterminated group"); + } + e.pos = t; + } + return false; + }, O.regexp_eatCapturingGroup = function(e) { + if (e.eat(40)) { + if (this.options.ecmaVersion >= 9 ? this.regexp_groupSpecifier(e) : e.current() === 63 && e.raise("Invalid group"), this.regexp_disjunction(e), e.eat(41)) + return e.numCapturingParens += 1, true; + e.raise("Unterminated group"); + } + return false; + }, O.regexp_eatExtendedAtom = function(e) { + return e.eat(46) || this.regexp_eatReverseSolidusAtomEscape(e) || this.regexp_eatCharacterClass(e) || this.regexp_eatUncapturingGroup(e) || this.regexp_eatCapturingGroup(e) || this.regexp_eatInvalidBracedQuantifier(e) || this.regexp_eatExtendedPatternCharacter(e); + }, O.regexp_eatInvalidBracedQuantifier = function(e) { + return this.regexp_eatBracedQuantifier(e, true) && e.raise("Nothing to repeat"), false; + }, O.regexp_eatSyntaxCharacter = function(e) { + var t = e.current(); + return Ir(t) ? (e.lastIntValue = t, e.advance(), true) : false; + }; + function Ir(e) { + return e === 36 || e >= 40 && e <= 43 || e === 46 || e === 63 || e >= 91 && e <= 94 || e >= 123 && e <= 125; + } + O.regexp_eatPatternCharacters = function(e) { + for (var t = e.pos, r = 0; (r = e.current()) !== -1 && !Ir(r); ) + e.advance(); + return e.pos !== t; + }, O.regexp_eatExtendedPatternCharacter = function(e) { + var t = e.current(); + return t !== -1 && t !== 36 && !(t >= 40 && t <= 43) && t !== 46 && t !== 63 && t !== 91 && t !== 94 && t !== 124 ? (e.advance(), true) : false; + }, O.regexp_groupSpecifier = function(e) { + if (e.eat(63)) { + if (this.regexp_eatGroupName(e)) { + e.groupNames.indexOf(e.lastStringValue) !== -1 && e.raise("Duplicate capture group name"), e.groupNames.push(e.lastStringValue); + return; + } + e.raise("Invalid group"); + } + }, O.regexp_eatGroupName = function(e) { + if (e.lastStringValue = "", e.eat(60)) { + if (this.regexp_eatRegExpIdentifierName(e) && e.eat(62)) + return true; + e.raise("Invalid capture group name"); + } + return false; + }, O.regexp_eatRegExpIdentifierName = function(e) { + if (e.lastStringValue = "", this.regexp_eatRegExpIdentifierStart(e)) { + for (e.lastStringValue += Xe(e.lastIntValue); this.regexp_eatRegExpIdentifierPart(e); ) + e.lastStringValue += Xe(e.lastIntValue); + return true; + } + return false; + }, O.regexp_eatRegExpIdentifierStart = function(e) { + var t = e.pos, r = this.options.ecmaVersion >= 11, s = e.current(r); + return e.advance(r), s === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(e, r) && (s = e.lastIntValue), Ka(s) ? (e.lastIntValue = s, true) : (e.pos = t, false); + }; + function Ka(e) { + return v(e, true) || e === 36 || e === 95; + } + O.regexp_eatRegExpIdentifierPart = function(e) { + var t = e.pos, r = this.options.ecmaVersion >= 11, s = e.current(r); + return e.advance(r), s === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(e, r) && (s = e.lastIntValue), Xa(s) ? (e.lastIntValue = s, true) : (e.pos = t, false); + }; + function Xa(e) { + return q(e, true) || e === 36 || e === 95 || e === 8204 || e === 8205; + } + O.regexp_eatAtomEscape = function(e) { + return this.regexp_eatBackReference(e) || this.regexp_eatCharacterClassEscape(e) || this.regexp_eatCharacterEscape(e) || e.switchN && this.regexp_eatKGroupName(e) ? true : (e.switchU && (e.current() === 99 && e.raise("Invalid unicode escape"), e.raise("Invalid escape")), false); + }, O.regexp_eatBackReference = function(e) { + var t = e.pos; + if (this.regexp_eatDecimalEscape(e)) { + var r = e.lastIntValue; + if (e.switchU) + return r > e.maxBackReference && (e.maxBackReference = r), true; + if (r <= e.numCapturingParens) + return true; + e.pos = t; + } + return false; + }, O.regexp_eatKGroupName = function(e) { + if (e.eat(107)) { + if (this.regexp_eatGroupName(e)) + return e.backReferenceNames.push(e.lastStringValue), true; + e.raise("Invalid named reference"); + } + return false; + }, O.regexp_eatCharacterEscape = function(e) { + return this.regexp_eatControlEscape(e) || this.regexp_eatCControlLetter(e) || this.regexp_eatZero(e) || this.regexp_eatHexEscapeSequence(e) || this.regexp_eatRegExpUnicodeEscapeSequence(e, false) || !e.switchU && this.regexp_eatLegacyOctalEscapeSequence(e) || this.regexp_eatIdentityEscape(e); + }, O.regexp_eatCControlLetter = function(e) { + var t = e.pos; + if (e.eat(99)) { + if (this.regexp_eatControlLetter(e)) + return true; + e.pos = t; + } + return false; + }, O.regexp_eatZero = function(e) { + return e.current() === 48 && !He(e.lookahead()) ? (e.lastIntValue = 0, e.advance(), true) : false; + }, O.regexp_eatControlEscape = function(e) { + var t = e.current(); + return t === 116 ? (e.lastIntValue = 9, e.advance(), true) : t === 110 ? (e.lastIntValue = 10, e.advance(), true) : t === 118 ? (e.lastIntValue = 11, e.advance(), true) : t === 102 ? (e.lastIntValue = 12, e.advance(), true) : t === 114 ? (e.lastIntValue = 13, e.advance(), true) : false; + }, O.regexp_eatControlLetter = function(e) { + var t = e.current(); + return Pr(t) ? (e.lastIntValue = t % 32, e.advance(), true) : false; + }; + function Pr(e) { + return e >= 65 && e <= 90 || e >= 97 && e <= 122; + } + O.regexp_eatRegExpUnicodeEscapeSequence = function(e, t) { + t === void 0 && (t = false); + var r = e.pos, s = t || e.switchU; + if (e.eat(117)) { + if (this.regexp_eatFixedHexDigits(e, 4)) { + var a = e.lastIntValue; + if (s && a >= 55296 && a <= 56319) { + var h = e.pos; + if (e.eat(92) && e.eat(117) && this.regexp_eatFixedHexDigits(e, 4)) { + var c = e.lastIntValue; + if (c >= 56320 && c <= 57343) + return e.lastIntValue = (a - 55296) * 1024 + (c - 56320) + 65536, true; + } + e.pos = h, e.lastIntValue = a; + } + return true; + } + if (s && e.eat(123) && this.regexp_eatHexDigits(e) && e.eat(125) && Ha(e.lastIntValue)) + return true; + s && e.raise("Invalid unicode escape"), e.pos = r; + } + return false; + }; + function Ha(e) { + return e >= 0 && e <= 1114111; + } + O.regexp_eatIdentityEscape = function(e) { + if (e.switchU) + return this.regexp_eatSyntaxCharacter(e) ? true : e.eat(47) ? (e.lastIntValue = 47, true) : false; + var t = e.current(); + return t !== 99 && (!e.switchN || t !== 107) ? (e.lastIntValue = t, e.advance(), true) : false; + }, O.regexp_eatDecimalEscape = function(e) { + e.lastIntValue = 0; + var t = e.current(); + if (t >= 49 && t <= 57) { + do + e.lastIntValue = 10 * e.lastIntValue + (t - 48), e.advance(); + while ((t = e.current()) >= 48 && t <= 57); + return true; + } + return false; + }, O.regexp_eatCharacterClassEscape = function(e) { + var t = e.current(); + if (Ja(t)) + return e.lastIntValue = -1, e.advance(), true; + if (e.switchU && this.options.ecmaVersion >= 9 && (t === 80 || t === 112)) { + if (e.lastIntValue = -1, e.advance(), e.eat(123) && this.regexp_eatUnicodePropertyValueExpression(e) && e.eat(125)) + return true; + e.raise("Invalid property name"); + } + return false; + }; + function Ja(e) { + return e === 100 || e === 68 || e === 115 || e === 83 || e === 119 || e === 87; + } + O.regexp_eatUnicodePropertyValueExpression = function(e) { + var t = e.pos; + if (this.regexp_eatUnicodePropertyName(e) && e.eat(61)) { + var r = e.lastStringValue; + if (this.regexp_eatUnicodePropertyValue(e)) { + var s = e.lastStringValue; + return this.regexp_validateUnicodePropertyNameAndValue(e, r, s), true; + } + } + if (e.pos = t, this.regexp_eatLoneUnicodePropertyNameOrValue(e)) { + var a = e.lastStringValue; + return this.regexp_validateUnicodePropertyNameOrValue(e, a), true; + } + return false; + }, O.regexp_validateUnicodePropertyNameAndValue = function(e, t, r) { + D(e.unicodeProperties.nonBinary, t) || e.raise("Invalid property name"), e.unicodeProperties.nonBinary[t].test(r) || e.raise("Invalid property value"); + }, O.regexp_validateUnicodePropertyNameOrValue = function(e, t) { + e.unicodeProperties.binary.test(t) || e.raise("Invalid property name"); + }, O.regexp_eatUnicodePropertyName = function(e) { + var t = 0; + for (e.lastStringValue = ""; Nr(t = e.current()); ) + e.lastStringValue += Xe(t), e.advance(); + return e.lastStringValue !== ""; + }; + function Nr(e) { + return Pr(e) || e === 95; + } + O.regexp_eatUnicodePropertyValue = function(e) { + var t = 0; + for (e.lastStringValue = ""; Ya(t = e.current()); ) + e.lastStringValue += Xe(t), e.advance(); + return e.lastStringValue !== ""; + }; + function Ya(e) { + return Nr(e) || He(e); + } + O.regexp_eatLoneUnicodePropertyNameOrValue = function(e) { + return this.regexp_eatUnicodePropertyValue(e); + }, O.regexp_eatCharacterClass = function(e) { + if (e.eat(91)) { + if (e.eat(94), this.regexp_classRanges(e), e.eat(93)) + return true; + e.raise("Unterminated character class"); + } + return false; + }, O.regexp_classRanges = function(e) { + for (; this.regexp_eatClassAtom(e); ) { + var t = e.lastIntValue; + if (e.eat(45) && this.regexp_eatClassAtom(e)) { + var r = e.lastIntValue; + e.switchU && (t === -1 || r === -1) && e.raise("Invalid character class"), t !== -1 && r !== -1 && t > r && e.raise("Range out of order in character class"); + } + } + }, O.regexp_eatClassAtom = function(e) { + var t = e.pos; + if (e.eat(92)) { + if (this.regexp_eatClassEscape(e)) + return true; + if (e.switchU) { + var r = e.current(); + (r === 99 || Lr(r)) && e.raise("Invalid class escape"), e.raise("Invalid escape"); + } + e.pos = t; + } + var s = e.current(); + return s !== 93 ? (e.lastIntValue = s, e.advance(), true) : false; + }, O.regexp_eatClassEscape = function(e) { + var t = e.pos; + if (e.eat(98)) + return e.lastIntValue = 8, true; + if (e.switchU && e.eat(45)) + return e.lastIntValue = 45, true; + if (!e.switchU && e.eat(99)) { + if (this.regexp_eatClassControlLetter(e)) + return true; + e.pos = t; + } + return this.regexp_eatCharacterClassEscape(e) || this.regexp_eatCharacterEscape(e); + }, O.regexp_eatClassControlLetter = function(e) { + var t = e.current(); + return He(t) || t === 95 ? (e.lastIntValue = t % 32, e.advance(), true) : false; + }, O.regexp_eatHexEscapeSequence = function(e) { + var t = e.pos; + if (e.eat(120)) { + if (this.regexp_eatFixedHexDigits(e, 2)) + return true; + e.switchU && e.raise("Invalid escape"), e.pos = t; + } + return false; + }, O.regexp_eatDecimalDigits = function(e) { + var t = e.pos, r = 0; + for (e.lastIntValue = 0; He(r = e.current()); ) + e.lastIntValue = 10 * e.lastIntValue + (r - 48), e.advance(); + return e.pos !== t; + }; + function He(e) { + return e >= 48 && e <= 57; + } + O.regexp_eatHexDigits = function(e) { + var t = e.pos, r = 0; + for (e.lastIntValue = 0; Dr(r = e.current()); ) + e.lastIntValue = 16 * e.lastIntValue + Or(r), e.advance(); + return e.pos !== t; + }; + function Dr(e) { + return e >= 48 && e <= 57 || e >= 65 && e <= 70 || e >= 97 && e <= 102; + } + function Or(e) { + return e >= 65 && e <= 70 ? 10 + (e - 65) : e >= 97 && e <= 102 ? 10 + (e - 97) : e - 48; + } + O.regexp_eatLegacyOctalEscapeSequence = function(e) { + if (this.regexp_eatOctalDigit(e)) { + var t = e.lastIntValue; + if (this.regexp_eatOctalDigit(e)) { + var r = e.lastIntValue; + t <= 3 && this.regexp_eatOctalDigit(e) ? e.lastIntValue = t * 64 + r * 8 + e.lastIntValue : e.lastIntValue = t * 8 + r; + } else + e.lastIntValue = t; + return true; + } + return false; + }, O.regexp_eatOctalDigit = function(e) { + var t = e.current(); + return Lr(t) ? (e.lastIntValue = t - 48, e.advance(), true) : (e.lastIntValue = 0, false); + }; + function Lr(e) { + return e >= 48 && e <= 55; + } + O.regexp_eatFixedHexDigits = function(e, t) { + var r = e.pos; + e.lastIntValue = 0; + for (var s = 0; s < t; ++s) { + var a = e.current(); + if (!Dr(a)) + return e.pos = r, false; + e.lastIntValue = 16 * e.lastIntValue + Or(a), e.advance(); + } + return true; + }; + var Je = function(t) { + this.type = t.type, this.value = t.value, this.start = t.start, this.end = t.end, t.options.locations && (this.loc = new X(t, t.startLoc, t.endLoc)), t.options.ranges && (this.range = [t.start, t.end]); + }, G = Z.prototype; + G.next = function(e) { + !e && this.type.keyword && this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword), this.options.onToken && this.options.onToken(new Je(this)), this.lastTokEnd = this.end, this.lastTokStart = this.start, this.lastTokEndLoc = this.endLoc, this.lastTokStartLoc = this.startLoc, this.nextToken(); + }, G.getToken = function() { + return this.next(), new Je(this); + }, typeof Symbol < "u" && (G[Symbol.iterator] = function() { + var e = this; + return { next: function() { + var t = e.getToken(); + return { done: t.type === i.eof, value: t }; + } }; + }), G.nextToken = function() { + var e = this.curContext(); + if ((!e || !e.preserveSpace) && this.skipSpace(), this.start = this.pos, this.options.locations && (this.startLoc = this.curPosition()), this.pos >= this.input.length) + return this.finishToken(i.eof); + if (e.override) + return e.override(this); + this.readToken(this.fullCharCodeAtPos()); + }, G.readToken = function(e) { + return v(e, this.options.ecmaVersion >= 6) || e === 92 ? this.readWord() : this.getTokenFromCode(e); + }, G.fullCharCodeAtPos = function() { + var e = this.input.charCodeAt(this.pos); + if (e <= 55295 || e >= 56320) + return e; + var t = this.input.charCodeAt(this.pos + 1); + return t <= 56319 || t >= 57344 ? e : (e << 10) + t - 56613888; + }, G.skipBlockComment = function() { + var e = this.options.onComment && this.curPosition(), t = this.pos, r = this.input.indexOf("*/", this.pos += 2); + if (r === -1 && this.raise(this.pos - 2, "Unterminated comment"), this.pos = r + 2, this.options.locations) + for (var s = void 0, a = t; (s = ee(this.input, a, this.pos)) > -1; ) + ++this.curLine, a = this.lineStart = s; + this.options.onComment && this.options.onComment(true, this.input.slice(t + 2, r), t, this.pos, e, this.curPosition()); + }, G.skipLineComment = function(e) { + for (var t = this.pos, r = this.options.onComment && this.curPosition(), s = this.input.charCodeAt(this.pos += e); this.pos < this.input.length && !M(s); ) + s = this.input.charCodeAt(++this.pos); + this.options.onComment && this.options.onComment(false, this.input.slice(t + e, this.pos), t, this.pos, r, this.curPosition()); + }, G.skipSpace = function() { + e: + for (; this.pos < this.input.length; ) { + var e = this.input.charCodeAt(this.pos); + switch (e) { + case 32: + case 160: + ++this.pos; + break; + case 13: + this.input.charCodeAt(this.pos + 1) === 10 && ++this.pos; + case 10: + case 8232: + case 8233: + ++this.pos, this.options.locations && (++this.curLine, this.lineStart = this.pos); + break; + case 47: + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: + this.skipBlockComment(); + break; + case 47: + this.skipLineComment(2); + break; + default: + break e; + } + break; + default: + if (e > 8 && e < 14 || e >= 5760 && ae.test(String.fromCharCode(e))) + ++this.pos; + else + break e; + } + } + }, G.finishToken = function(e, t) { + this.end = this.pos, this.options.locations && (this.endLoc = this.curPosition()); + var r = this.type; + this.type = e, this.value = t, this.updateContext(r); + }, G.readToken_dot = function() { + var e = this.input.charCodeAt(this.pos + 1); + if (e >= 48 && e <= 57) + return this.readNumber(true); + var t = this.input.charCodeAt(this.pos + 2); + return this.options.ecmaVersion >= 6 && e === 46 && t === 46 ? (this.pos += 3, this.finishToken(i.ellipsis)) : (++this.pos, this.finishToken(i.dot)); + }, G.readToken_slash = function() { + var e = this.input.charCodeAt(this.pos + 1); + return this.exprAllowed ? (++this.pos, this.readRegexp()) : e === 61 ? this.finishOp(i.assign, 2) : this.finishOp(i.slash, 1); + }, G.readToken_mult_modulo_exp = function(e) { + var t = this.input.charCodeAt(this.pos + 1), r = 1, s = e === 42 ? i.star : i.modulo; + return this.options.ecmaVersion >= 7 && e === 42 && t === 42 && (++r, s = i.starstar, t = this.input.charCodeAt(this.pos + 2)), t === 61 ? this.finishOp(i.assign, r + 1) : this.finishOp(s, r); + }, G.readToken_pipe_amp = function(e) { + var t = this.input.charCodeAt(this.pos + 1); + if (t === e) { + if (this.options.ecmaVersion >= 12) { + var r = this.input.charCodeAt(this.pos + 2); + if (r === 61) + return this.finishOp(i.assign, 3); + } + return this.finishOp(e === 124 ? i.logicalOR : i.logicalAND, 2); + } + return t === 61 ? this.finishOp(i.assign, 2) : this.finishOp(e === 124 ? i.bitwiseOR : i.bitwiseAND, 1); + }, G.readToken_caret = function() { + var e = this.input.charCodeAt(this.pos + 1); + return e === 61 ? this.finishOp(i.assign, 2) : this.finishOp(i.bitwiseXOR, 1); + }, G.readToken_plus_min = function(e) { + var t = this.input.charCodeAt(this.pos + 1); + return t === e ? t === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && (this.lastTokEnd === 0 || _.test(this.input.slice(this.lastTokEnd, this.pos))) ? (this.skipLineComment(3), this.skipSpace(), this.nextToken()) : this.finishOp(i.incDec, 2) : t === 61 ? this.finishOp(i.assign, 2) : this.finishOp(i.plusMin, 1); + }, G.readToken_lt_gt = function(e) { + var t = this.input.charCodeAt(this.pos + 1), r = 1; + return t === e ? (r = e === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2, this.input.charCodeAt(this.pos + r) === 61 ? this.finishOp(i.assign, r + 1) : this.finishOp(i.bitShift, r)) : t === 33 && e === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && this.input.charCodeAt(this.pos + 3) === 45 ? (this.skipLineComment(4), this.skipSpace(), this.nextToken()) : (t === 61 && (r = 2), this.finishOp(i.relational, r)); + }, G.readToken_eq_excl = function(e) { + var t = this.input.charCodeAt(this.pos + 1); + return t === 61 ? this.finishOp(i.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) : e === 61 && t === 62 && this.options.ecmaVersion >= 6 ? (this.pos += 2, this.finishToken(i.arrow)) : this.finishOp(e === 61 ? i.eq : i.prefix, 1); + }, G.readToken_question = function() { + var e = this.options.ecmaVersion; + if (e >= 11) { + var t = this.input.charCodeAt(this.pos + 1); + if (t === 46) { + var r = this.input.charCodeAt(this.pos + 2); + if (r < 48 || r > 57) + return this.finishOp(i.questionDot, 2); + } + if (t === 63) { + if (e >= 12) { + var s = this.input.charCodeAt(this.pos + 2); + if (s === 61) + return this.finishOp(i.assign, 3); + } + return this.finishOp(i.coalesce, 2); + } + } + return this.finishOp(i.question, 1); + }, G.readToken_numberSign = function() { + var e = this.options.ecmaVersion, t = 35; + if (e >= 13 && (++this.pos, t = this.fullCharCodeAtPos(), v(t, true) || t === 92)) + return this.finishToken(i.privateId, this.readWord1()); + this.raise(this.pos, "Unexpected character '" + Ye(t) + "'"); + }, G.getTokenFromCode = function(e) { + switch (e) { + case 46: + return this.readToken_dot(); + case 40: + return ++this.pos, this.finishToken(i.parenL); + case 41: + return ++this.pos, this.finishToken(i.parenR); + case 59: + return ++this.pos, this.finishToken(i.semi); + case 44: + return ++this.pos, this.finishToken(i.comma); + case 91: + return ++this.pos, this.finishToken(i.bracketL); + case 93: + return ++this.pos, this.finishToken(i.bracketR); + case 123: + return ++this.pos, this.finishToken(i.braceL); + case 125: + return ++this.pos, this.finishToken(i.braceR); + case 58: + return ++this.pos, this.finishToken(i.colon); + case 96: + if (this.options.ecmaVersion < 6) + break; + return ++this.pos, this.finishToken(i.backQuote); + case 48: + var t = this.input.charCodeAt(this.pos + 1); + if (t === 120 || t === 88) + return this.readRadixNumber(16); + if (this.options.ecmaVersion >= 6) { + if (t === 111 || t === 79) + return this.readRadixNumber(8); + if (t === 98 || t === 66) + return this.readRadixNumber(2); + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return this.readNumber(false); + case 34: + case 39: + return this.readString(e); + case 47: + return this.readToken_slash(); + case 37: + case 42: + return this.readToken_mult_modulo_exp(e); + case 124: + case 38: + return this.readToken_pipe_amp(e); + case 94: + return this.readToken_caret(); + case 43: + case 45: + return this.readToken_plus_min(e); + case 60: + case 62: + return this.readToken_lt_gt(e); + case 61: + case 33: + return this.readToken_eq_excl(e); + case 63: + return this.readToken_question(); + case 126: + return this.finishOp(i.prefix, 1); + case 35: + return this.readToken_numberSign(); + } + this.raise(this.pos, "Unexpected character '" + Ye(e) + "'"); + }, G.finishOp = function(e, t) { + var r = this.input.slice(this.pos, this.pos + t); + return this.pos += t, this.finishToken(e, r); + }, G.readRegexp = function() { + for (var e, t, r = this.pos; ; ) { + this.pos >= this.input.length && this.raise(r, "Unterminated regular expression"); + var s = this.input.charAt(this.pos); + if (_.test(s) && this.raise(r, "Unterminated regular expression"), e) + e = false; + else { + if (s === "[") + t = true; + else if (s === "]" && t) + t = false; + else if (s === "/" && !t) + break; + e = s === "\\"; + } + ++this.pos; + } + var a = this.input.slice(r, this.pos); + ++this.pos; + var h = this.pos, c = this.readWord1(); + this.containsEsc && this.unexpected(h); + var d = this.regexpState || (this.regexpState = new de(this)); + d.reset(r, a, c), this.validateRegExpFlags(d), this.validateRegExpPattern(d); + var x = null; + try { + x = new RegExp(a, c); + } catch { + } + return this.finishToken(i.regexp, { pattern: a, flags: c, value: x }); + }, G.readInt = function(e, t, r) { + for (var s = this.options.ecmaVersion >= 12 && t === void 0, a = r && this.input.charCodeAt(this.pos) === 48, h = this.pos, c = 0, d = 0, x = 0, U = t == null ? 1 / 0 : t; x < U; ++x, ++this.pos) { + var W = this.input.charCodeAt(this.pos), re = void 0; + if (s && W === 95) { + a && this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"), d === 95 && this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"), x === 0 && this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"), d = W; + continue; + } + if (W >= 97 ? re = W - 97 + 10 : W >= 65 ? re = W - 65 + 10 : W >= 48 && W <= 57 ? re = W - 48 : re = 1 / 0, re >= e) + break; + d = W, c = c * e + re; + } + return s && d === 95 && this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"), this.pos === h || t != null && this.pos - h !== t ? null : c; + }; + function Qa(e, t) { + return t ? parseInt(e, 8) : parseFloat(e.replace(/_/g, "")); + } + function Vr(e) { + return typeof BigInt != "function" ? null : BigInt(e.replace(/_/g, "")); + } + G.readRadixNumber = function(e) { + var t = this.pos; + this.pos += 2; + var r = this.readInt(e); + return r == null && this.raise(this.start + 2, "Expected number in radix " + e), this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110 ? (r = Vr(this.input.slice(t, this.pos)), ++this.pos) : v(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(i.num, r); + }, G.readNumber = function(e) { + var t = this.pos; + !e && this.readInt(10, void 0, true) === null && this.raise(t, "Invalid number"); + var r = this.pos - t >= 2 && this.input.charCodeAt(t) === 48; + r && this.strict && this.raise(t, "Invalid number"); + var s = this.input.charCodeAt(this.pos); + if (!r && !e && this.options.ecmaVersion >= 11 && s === 110) { + var a = Vr(this.input.slice(t, this.pos)); + return ++this.pos, v(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(i.num, a); + } + r && /[89]/.test(this.input.slice(t, this.pos)) && (r = false), s === 46 && !r && (++this.pos, this.readInt(10), s = this.input.charCodeAt(this.pos)), (s === 69 || s === 101) && !r && (s = this.input.charCodeAt(++this.pos), (s === 43 || s === 45) && ++this.pos, this.readInt(10) === null && this.raise(t, "Invalid number")), v(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"); + var h = Qa(this.input.slice(t, this.pos), r); + return this.finishToken(i.num, h); + }, G.readCodePoint = function() { + var e = this.input.charCodeAt(this.pos), t; + if (e === 123) { + this.options.ecmaVersion < 6 && this.unexpected(); + var r = ++this.pos; + t = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos), ++this.pos, t > 1114111 && this.invalidStringToken(r, "Code point out of bounds"); + } else + t = this.readHexChar(4); + return t; + }; + function Ye(e) { + return e <= 65535 ? String.fromCharCode(e) : (e -= 65536, String.fromCharCode((e >> 10) + 55296, (e & 1023) + 56320)); + } + G.readString = function(e) { + for (var t = "", r = ++this.pos; ; ) { + this.pos >= this.input.length && this.raise(this.start, "Unterminated string constant"); + var s = this.input.charCodeAt(this.pos); + if (s === e) + break; + s === 92 ? (t += this.input.slice(r, this.pos), t += this.readEscapedChar(false), r = this.pos) : s === 8232 || s === 8233 ? (this.options.ecmaVersion < 10 && this.raise(this.start, "Unterminated string constant"), ++this.pos, this.options.locations && (this.curLine++, this.lineStart = this.pos)) : (M(s) && this.raise(this.start, "Unterminated string constant"), ++this.pos); + } + return t += this.input.slice(r, this.pos++), this.finishToken(i.string, t); + }; + var Rr = {}; + G.tryReadTemplateToken = function() { + this.inTemplateElement = true; + try { + this.readTmplToken(); + } catch (e) { + if (e === Rr) + this.readInvalidTemplateToken(); + else + throw e; + } + this.inTemplateElement = false; + }, G.invalidStringToken = function(e, t) { + if (this.inTemplateElement && this.options.ecmaVersion >= 9) + throw Rr; + this.raise(e, t); + }, G.readTmplToken = function() { + for (var e = "", t = this.pos; ; ) { + this.pos >= this.input.length && this.raise(this.start, "Unterminated template"); + var r = this.input.charCodeAt(this.pos); + if (r === 96 || r === 36 && this.input.charCodeAt(this.pos + 1) === 123) + return this.pos === this.start && (this.type === i.template || this.type === i.invalidTemplate) ? r === 36 ? (this.pos += 2, this.finishToken(i.dollarBraceL)) : (++this.pos, this.finishToken(i.backQuote)) : (e += this.input.slice(t, this.pos), this.finishToken(i.template, e)); + if (r === 92) + e += this.input.slice(t, this.pos), e += this.readEscapedChar(true), t = this.pos; + else if (M(r)) { + switch (e += this.input.slice(t, this.pos), ++this.pos, r) { + case 13: + this.input.charCodeAt(this.pos) === 10 && ++this.pos; + case 10: + e += ` +`; + break; + default: + e += String.fromCharCode(r); + break; + } + this.options.locations && (++this.curLine, this.lineStart = this.pos), t = this.pos; + } else + ++this.pos; + } + }, G.readInvalidTemplateToken = function() { + for (; this.pos < this.input.length; this.pos++) + switch (this.input[this.pos]) { + case "\\": + ++this.pos; + break; + case "$": + if (this.input[this.pos + 1] !== "{") + break; + case "`": + return this.finishToken(i.invalidTemplate, this.input.slice(this.start, this.pos)); + } + this.raise(this.start, "Unterminated template"); + }, G.readEscapedChar = function(e) { + var t = this.input.charCodeAt(++this.pos); + switch (++this.pos, t) { + case 110: + return ` +`; + case 114: + return "\r"; + case 120: + return String.fromCharCode(this.readHexChar(2)); + case 117: + return Ye(this.readCodePoint()); + case 116: + return " "; + case 98: + return "\b"; + case 118: + return "\v"; + case 102: + return "\f"; + case 13: + this.input.charCodeAt(this.pos) === 10 && ++this.pos; + case 10: + return this.options.locations && (this.lineStart = this.pos, ++this.curLine), ""; + case 56: + case 57: + if (this.strict && this.invalidStringToken(this.pos - 1, "Invalid escape sequence"), e) { + var r = this.pos - 1; + return this.invalidStringToken(r, "Invalid escape sequence in template string"), null; + } + default: + if (t >= 48 && t <= 55) { + var s = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0], a = parseInt(s, 8); + return a > 255 && (s = s.slice(0, -1), a = parseInt(s, 8)), this.pos += s.length - 1, t = this.input.charCodeAt(this.pos), (s !== "0" || t === 56 || t === 57) && (this.strict || e) && this.invalidStringToken(this.pos - 1 - s.length, e ? "Octal literal in template string" : "Octal literal in strict mode"), String.fromCharCode(a); + } + return M(t) ? "" : String.fromCharCode(t); + } + }, G.readHexChar = function(e) { + var t = this.pos, r = this.readInt(16, e); + return r === null && this.invalidStringToken(t, "Bad character escape sequence"), r; + }, G.readWord1 = function() { + this.containsEsc = false; + for (var e = "", t = true, r = this.pos, s = this.options.ecmaVersion >= 6; this.pos < this.input.length; ) { + var a = this.fullCharCodeAtPos(); + if (q(a, s)) + this.pos += a <= 65535 ? 1 : 2; + else if (a === 92) { + this.containsEsc = true, e += this.input.slice(r, this.pos); + var h = this.pos; + this.input.charCodeAt(++this.pos) !== 117 && this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"), ++this.pos; + var c = this.readCodePoint(); + (t ? v : q)(c, s) || this.invalidStringToken(h, "Invalid Unicode escape"), e += Ye(c), r = this.pos; + } else + break; + t = false; + } + return e + this.input.slice(r, this.pos); + }, G.readWord = function() { + var e = this.readWord1(), t = i.name; + return this.keywords.test(e) && (t = H[e]), this.finishToken(t, e); + }; + var jr = "8.7.0"; + Z.acorn = { Parser: Z, version: jr, defaultOptions: me, Position: K, SourceLocation: X, getLineInfo: oe, Node: Ve, TokenType: B, tokTypes: i, keywordTypes: H, TokContext: ne, tokContexts: Q, isIdentifierChar: q, isIdentifierStart: v, Token: Je, isNewLine: M, lineBreak: _, lineBreakG: P, nonASCIIwhitespace: ae }; + function Za(e, t) { + return Z.parse(e, t); + } + function $a(e, t, r) { + return Z.parseExpressionAt(e, t, r); + } + function en(e, t) { + return Z.tokenizer(e, t); + } + u.Node = Ve, u.Parser = Z, u.Position = K, u.SourceLocation = X, u.TokContext = ne, u.Token = Je, u.TokenType = B, u.defaultOptions = me, u.getLineInfo = oe, u.isIdentifierChar = q, u.isIdentifierStart = v, u.isNewLine = M, u.keywordTypes = H, u.lineBreak = _, u.lineBreakG = P, u.nonASCIIwhitespace = ae, u.parse = Za, u.parseExpressionAt = $a, u.tokContexts = Q, u.tokTypes = i, u.tokenizer = en, u.version = jr, Object.defineProperty(u, "__esModule", { value: true }); + }); + } }), Sh = Y({ "node_modules/acorn-jsx/xhtml.js"(n, o) { + J(), o.exports = { quot: '"', amp: "&", apos: "'", lt: "<", gt: ">", nbsp: "\xA0", iexcl: "\xA1", cent: "\xA2", pound: "\xA3", curren: "\xA4", yen: "\xA5", brvbar: "\xA6", sect: "\xA7", uml: "\xA8", copy: "\xA9", ordf: "\xAA", laquo: "\xAB", not: "\xAC", shy: "\xAD", reg: "\xAE", macr: "\xAF", deg: "\xB0", plusmn: "\xB1", sup2: "\xB2", sup3: "\xB3", acute: "\xB4", micro: "\xB5", para: "\xB6", middot: "\xB7", cedil: "\xB8", sup1: "\xB9", ordm: "\xBA", raquo: "\xBB", frac14: "\xBC", frac12: "\xBD", frac34: "\xBE", iquest: "\xBF", Agrave: "\xC0", Aacute: "\xC1", Acirc: "\xC2", Atilde: "\xC3", Auml: "\xC4", Aring: "\xC5", AElig: "\xC6", Ccedil: "\xC7", Egrave: "\xC8", Eacute: "\xC9", Ecirc: "\xCA", Euml: "\xCB", Igrave: "\xCC", Iacute: "\xCD", Icirc: "\xCE", Iuml: "\xCF", ETH: "\xD0", Ntilde: "\xD1", Ograve: "\xD2", Oacute: "\xD3", Ocirc: "\xD4", Otilde: "\xD5", Ouml: "\xD6", times: "\xD7", Oslash: "\xD8", Ugrave: "\xD9", Uacute: "\xDA", Ucirc: "\xDB", Uuml: "\xDC", Yacute: "\xDD", THORN: "\xDE", szlig: "\xDF", agrave: "\xE0", aacute: "\xE1", acirc: "\xE2", atilde: "\xE3", auml: "\xE4", aring: "\xE5", aelig: "\xE6", ccedil: "\xE7", egrave: "\xE8", eacute: "\xE9", ecirc: "\xEA", euml: "\xEB", igrave: "\xEC", iacute: "\xED", icirc: "\xEE", iuml: "\xEF", eth: "\xF0", ntilde: "\xF1", ograve: "\xF2", oacute: "\xF3", ocirc: "\xF4", otilde: "\xF5", ouml: "\xF6", divide: "\xF7", oslash: "\xF8", ugrave: "\xF9", uacute: "\xFA", ucirc: "\xFB", uuml: "\xFC", yacute: "\xFD", thorn: "\xFE", yuml: "\xFF", OElig: "\u0152", oelig: "\u0153", Scaron: "\u0160", scaron: "\u0161", Yuml: "\u0178", fnof: "\u0192", circ: "\u02C6", tilde: "\u02DC", Alpha: "\u0391", Beta: "\u0392", Gamma: "\u0393", Delta: "\u0394", Epsilon: "\u0395", Zeta: "\u0396", Eta: "\u0397", Theta: "\u0398", Iota: "\u0399", Kappa: "\u039A", Lambda: "\u039B", Mu: "\u039C", Nu: "\u039D", Xi: "\u039E", Omicron: "\u039F", Pi: "\u03A0", Rho: "\u03A1", Sigma: "\u03A3", Tau: "\u03A4", Upsilon: "\u03A5", Phi: "\u03A6", Chi: "\u03A7", Psi: "\u03A8", Omega: "\u03A9", alpha: "\u03B1", beta: "\u03B2", gamma: "\u03B3", delta: "\u03B4", epsilon: "\u03B5", zeta: "\u03B6", eta: "\u03B7", theta: "\u03B8", iota: "\u03B9", kappa: "\u03BA", lambda: "\u03BB", mu: "\u03BC", nu: "\u03BD", xi: "\u03BE", omicron: "\u03BF", pi: "\u03C0", rho: "\u03C1", sigmaf: "\u03C2", sigma: "\u03C3", tau: "\u03C4", upsilon: "\u03C5", phi: "\u03C6", chi: "\u03C7", psi: "\u03C8", omega: "\u03C9", thetasym: "\u03D1", upsih: "\u03D2", piv: "\u03D6", ensp: "\u2002", emsp: "\u2003", thinsp: "\u2009", zwnj: "\u200C", zwj: "\u200D", lrm: "\u200E", rlm: "\u200F", ndash: "\u2013", mdash: "\u2014", lsquo: "\u2018", rsquo: "\u2019", sbquo: "\u201A", ldquo: "\u201C", rdquo: "\u201D", bdquo: "\u201E", dagger: "\u2020", Dagger: "\u2021", bull: "\u2022", hellip: "\u2026", permil: "\u2030", prime: "\u2032", Prime: "\u2033", lsaquo: "\u2039", rsaquo: "\u203A", oline: "\u203E", frasl: "\u2044", euro: "\u20AC", image: "\u2111", weierp: "\u2118", real: "\u211C", trade: "\u2122", alefsym: "\u2135", larr: "\u2190", uarr: "\u2191", rarr: "\u2192", darr: "\u2193", harr: "\u2194", crarr: "\u21B5", lArr: "\u21D0", uArr: "\u21D1", rArr: "\u21D2", dArr: "\u21D3", hArr: "\u21D4", forall: "\u2200", part: "\u2202", exist: "\u2203", empty: "\u2205", nabla: "\u2207", isin: "\u2208", notin: "\u2209", ni: "\u220B", prod: "\u220F", sum: "\u2211", minus: "\u2212", lowast: "\u2217", radic: "\u221A", prop: "\u221D", infin: "\u221E", ang: "\u2220", and: "\u2227", or: "\u2228", cap: "\u2229", cup: "\u222A", int: "\u222B", there4: "\u2234", sim: "\u223C", cong: "\u2245", asymp: "\u2248", ne: "\u2260", equiv: "\u2261", le: "\u2264", ge: "\u2265", sub: "\u2282", sup: "\u2283", nsub: "\u2284", sube: "\u2286", supe: "\u2287", oplus: "\u2295", otimes: "\u2297", perp: "\u22A5", sdot: "\u22C5", lceil: "\u2308", rceil: "\u2309", lfloor: "\u230A", rfloor: "\u230B", lang: "\u2329", rang: "\u232A", loz: "\u25CA", spades: "\u2660", clubs: "\u2663", hearts: "\u2665", diams: "\u2666" }; + } }), Pa = Y({ "node_modules/acorn-jsx/index.js"(n, o) { + "use strict"; + J(); + var u = Sh(), l = /^[\da-fA-F]+$/, m = /^\d+$/, E = /* @__PURE__ */ new WeakMap(); + function y(g) { + g = g.Parser.acorn || g; + let V = E.get(g); + if (!V) { + let R = g.tokTypes, N = g.TokContext, T = g.TokenType, v = new N("...", true, true), I = { tc_oTag: v, tc_cTag: q, tc_expr: B }, k = { jsxName: new T("jsxName"), jsxText: new T("jsxText", { beforeExpr: true }), jsxTagStart: new T("jsxTagStart", { startsExpr: true }), jsxTagEnd: new T("jsxTagEnd") }; + k.jsxTagStart.updateContext = function() { + this.context.push(B), this.context.push(v), this.exprAllowed = false; + }, k.jsxTagEnd.updateContext = function(C) { + let H = this.context.pop(); + H === v && C === R.slash || H === q ? (this.context.pop(), this.exprAllowed = this.curContext() === B) : this.exprAllowed = true; + }, V = { tokContexts: I, tokTypes: k }, E.set(g, V); + } + return V; + } + function A(g) { + if (!g) + return g; + if (g.type === "JSXIdentifier") + return g.name; + if (g.type === "JSXNamespacedName") + return g.namespace.name + ":" + g.name.name; + if (g.type === "JSXMemberExpression") + return A(g.object) + "." + A(g.property); + } + o.exports = function(g) { + return g = g || {}, function(V) { + return b({ allowNamespaces: g.allowNamespaces !== false, allowNamespacedObjects: !!g.allowNamespacedObjects }, V); + }; + }, Object.defineProperty(o.exports, "tokTypes", { get: function() { + return y(ct()).tokTypes; + }, configurable: true, enumerable: true }); + function b(g, V) { + let R = V.acorn || ct(), N = y(R), T = R.tokTypes, v = N.tokTypes, q = R.tokContexts, B = N.tokContexts.tc_oTag, I = N.tokContexts.tc_cTag, k = N.tokContexts.tc_expr, C = R.isNewLine, H = R.isIdentifierStart, L = R.isIdentifierChar; + return class extends V { + static get acornJsx() { + return N; + } + jsx_readToken() { + let i = "", _ = this.pos; + for (; ; ) { + this.pos >= this.input.length && this.raise(this.start, "Unterminated JSX contents"); + let P = this.input.charCodeAt(this.pos); + switch (P) { + case 60: + case 123: + return this.pos === this.start ? P === 60 && this.exprAllowed ? (++this.pos, this.finishToken(v.jsxTagStart)) : this.getTokenFromCode(P) : (i += this.input.slice(_, this.pos), this.finishToken(v.jsxText, i)); + case 38: + i += this.input.slice(_, this.pos), i += this.jsx_readEntity(), _ = this.pos; + break; + case 62: + case 125: + this.raise(this.pos, "Unexpected token `" + this.input[this.pos] + "`. Did you mean `" + (P === 62 ? ">" : "}") + '` or `{"' + this.input[this.pos] + '"}`?'); + default: + C(P) ? (i += this.input.slice(_, this.pos), i += this.jsx_readNewLine(true), _ = this.pos) : ++this.pos; + } + } + } + jsx_readNewLine(i) { + let _ = this.input.charCodeAt(this.pos), P; + return ++this.pos, _ === 13 && this.input.charCodeAt(this.pos) === 10 ? (++this.pos, P = i ? ` +` : `\r +`) : P = String.fromCharCode(_), this.options.locations && (++this.curLine, this.lineStart = this.pos), P; + } + jsx_readString(i) { + let _ = "", P = ++this.pos; + for (; ; ) { + this.pos >= this.input.length && this.raise(this.start, "Unterminated string constant"); + let M = this.input.charCodeAt(this.pos); + if (M === i) + break; + M === 38 ? (_ += this.input.slice(P, this.pos), _ += this.jsx_readEntity(), P = this.pos) : C(M) ? (_ += this.input.slice(P, this.pos), _ += this.jsx_readNewLine(false), P = this.pos) : ++this.pos; + } + return _ += this.input.slice(P, this.pos++), this.finishToken(T.string, _); + } + jsx_readEntity() { + let i = "", _ = 0, P, M = this.input[this.pos]; + M !== "&" && this.raise(this.pos, "Entity must start with an ampersand"); + let ee = ++this.pos; + for (; this.pos < this.input.length && _++ < 10; ) { + if (M = this.input[this.pos++], M === ";") { + i[0] === "#" ? i[1] === "x" ? (i = i.substr(2), l.test(i) && (P = String.fromCharCode(parseInt(i, 16)))) : (i = i.substr(1), m.test(i) && (P = String.fromCharCode(parseInt(i, 10)))) : P = u[i]; + break; + } + i += M; + } + return P || (this.pos = ee, "&"); + } + jsx_readWord() { + let i, _ = this.pos; + do + i = this.input.charCodeAt(++this.pos); + while (L(i) || i === 45); + return this.finishToken(v.jsxName, this.input.slice(_, this.pos)); + } + jsx_parseIdentifier() { + let i = this.startNode(); + return this.type === v.jsxName ? i.name = this.value : this.type.keyword ? i.name = this.type.keyword : this.unexpected(), this.next(), this.finishNode(i, "JSXIdentifier"); + } + jsx_parseNamespacedName() { + let i = this.start, _ = this.startLoc, P = this.jsx_parseIdentifier(); + if (!g.allowNamespaces || !this.eat(T.colon)) + return P; + var M = this.startNodeAt(i, _); + return M.namespace = P, M.name = this.jsx_parseIdentifier(), this.finishNode(M, "JSXNamespacedName"); + } + jsx_parseElementName() { + if (this.type === v.jsxTagEnd) + return ""; + let i = this.start, _ = this.startLoc, P = this.jsx_parseNamespacedName(); + for (this.type === T.dot && P.type === "JSXNamespacedName" && !g.allowNamespacedObjects && this.unexpected(); this.eat(T.dot); ) { + let M = this.startNodeAt(i, _); + M.object = P, M.property = this.jsx_parseIdentifier(), P = this.finishNode(M, "JSXMemberExpression"); + } + return P; + } + jsx_parseAttributeValue() { + switch (this.type) { + case T.braceL: + let i = this.jsx_parseExpressionContainer(); + return i.expression.type === "JSXEmptyExpression" && this.raise(i.start, "JSX attributes must only be assigned a non-empty expression"), i; + case v.jsxTagStart: + case T.string: + return this.parseExprAtom(); + default: + this.raise(this.start, "JSX value should be either an expression or a quoted JSX text"); + } + } + jsx_parseEmptyExpression() { + let i = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc); + return this.finishNodeAt(i, "JSXEmptyExpression", this.start, this.startLoc); + } + jsx_parseExpressionContainer() { + let i = this.startNode(); + return this.next(), i.expression = this.type === T.braceR ? this.jsx_parseEmptyExpression() : this.parseExpression(), this.expect(T.braceR), this.finishNode(i, "JSXExpressionContainer"); + } + jsx_parseAttribute() { + let i = this.startNode(); + return this.eat(T.braceL) ? (this.expect(T.ellipsis), i.argument = this.parseMaybeAssign(), this.expect(T.braceR), this.finishNode(i, "JSXSpreadAttribute")) : (i.name = this.jsx_parseNamespacedName(), i.value = this.eat(T.eq) ? this.jsx_parseAttributeValue() : null, this.finishNode(i, "JSXAttribute")); + } + jsx_parseOpeningElementAt(i, _) { + let P = this.startNodeAt(i, _); + P.attributes = []; + let M = this.jsx_parseElementName(); + for (M && (P.name = M); this.type !== T.slash && this.type !== v.jsxTagEnd; ) + P.attributes.push(this.jsx_parseAttribute()); + return P.selfClosing = this.eat(T.slash), this.expect(v.jsxTagEnd), this.finishNode(P, M ? "JSXOpeningElement" : "JSXOpeningFragment"); + } + jsx_parseClosingElementAt(i, _) { + let P = this.startNodeAt(i, _), M = this.jsx_parseElementName(); + return M && (P.name = M), this.expect(v.jsxTagEnd), this.finishNode(P, M ? "JSXClosingElement" : "JSXClosingFragment"); + } + jsx_parseElementAt(i, _) { + let P = this.startNodeAt(i, _), M = [], ee = this.jsx_parseOpeningElementAt(i, _), ae = null; + if (!ee.selfClosing) { + e: + for (; ; ) + switch (this.type) { + case v.jsxTagStart: + if (i = this.start, _ = this.startLoc, this.next(), this.eat(T.slash)) { + ae = this.jsx_parseClosingElementAt(i, _); + break e; + } + M.push(this.jsx_parseElementAt(i, _)); + break; + case v.jsxText: + M.push(this.parseExprAtom()); + break; + case T.braceL: + M.push(this.jsx_parseExpressionContainer()); + break; + default: + this.unexpected(); + } + A(ae.name) !== A(ee.name) && this.raise(ae.start, "Expected corresponding JSX closing tag for <" + A(ee.name) + ">"); + } + let te = ee.name ? "Element" : "Fragment"; + return P["opening" + te] = ee, P["closing" + te] = ae, P.children = M, this.type === T.relational && this.value === "<" && this.raise(this.start, "Adjacent JSX elements must be wrapped in an enclosing tag"), this.finishNode(P, "JSX" + te); + } + jsx_parseText() { + let i = this.parseLiteral(this.value); + return i.type = "JSXText", i; + } + jsx_parseElement() { + let i = this.start, _ = this.startLoc; + return this.next(), this.jsx_parseElementAt(i, _); + } + parseExprAtom(i) { + return this.type === v.jsxText ? this.jsx_parseText() : this.type === v.jsxTagStart ? this.jsx_parseElement() : super.parseExprAtom(i); + } + readToken(i) { + let _ = this.curContext(); + if (_ === k) + return this.jsx_readToken(); + if (_ === B || _ === I) { + if (H(i)) + return this.jsx_readWord(); + if (i == 62) + return ++this.pos, this.finishToken(v.jsxTagEnd); + if ((i === 34 || i === 39) && _ == B) + return this.jsx_readString(i); + } + return i === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33 ? (++this.pos, this.finishToken(v.jsxTagStart)) : super.readToken(i); + } + updateContext(i) { + if (this.type == T.braceL) { + var _ = this.curContext(); + _ == B ? this.context.push(q.b_expr) : _ == k ? this.context.push(q.b_tmpl) : super.updateContext(i), this.exprAllowed = true; + } else if (this.type === T.slash && i === v.jsxTagStart) + this.context.length -= 2, this.context.push(I), this.exprAllowed = false; + else + return super.updateContext(i); + } + }; + } + } }), wh = Y({ "src/language-js/parse/acorn.js"(n, o) { + "use strict"; + J(); + var u = lr(), l = fa(), m = Fa(), E = Ia(), y = { ecmaVersion: "latest", sourceType: "module", allowReserved: true, allowReturnOutsideFunction: true, allowImportExportEverywhere: true, allowAwaitOutsideFunction: true, allowSuperOutsideMethod: true, allowHashBang: true, locations: true, ranges: true }; + function A(N) { + let { message: T, loc: v } = N; + if (!v) + return N; + let { line: q, column: B } = v; + return u(T.replace(/ \(\d+:\d+\)$/, ""), { start: { line: q, column: B + 1 } }); + } + var b, g = () => { + if (!b) { + let { Parser: N } = ct(), T = Pa(); + b = N.extend(T()); + } + return b; + }; + function V(N, T) { + let v = g(), q = [], B = [], I = v.parse(N, Object.assign(Object.assign({}, y), {}, { sourceType: T, onComment: q, onToken: B })); + return I.comments = q, I.tokens = B, I; + } + function R(N, T) { + let v = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, { result: q, error: B } = l(() => V(N, "module"), () => V(N, "script")); + if (!q) + throw A(B); + return v.originalText = N, E(q, v); + } + o.exports = m(R); + } }), kh = Y({ "src/language-js/parse/utils/replace-hashbang.js"(n, o) { + "use strict"; + J(); + function u(l) { + return l.charAt(0) === "#" && l.charAt(1) === "!" ? "//" + l.slice(2) : l; + } + o.exports = u; + } }), Fh = Y({ "node_modules/espree/dist/espree.cjs"(n) { + "use strict"; + J(), Object.defineProperty(n, "__esModule", { value: true }); + var o = ct(), u = Pa(), l; + function m(p) { + return p && typeof p == "object" && "default" in p ? p : { default: p }; + } + function E(p) { + if (p && p.__esModule) + return p; + var D = /* @__PURE__ */ Object.create(null); + return p && Object.keys(p).forEach(function(w) { + if (w !== "default") { + var f = Object.getOwnPropertyDescriptor(p, w); + Object.defineProperty(D, w, f.get ? f : { enumerable: true, get: function() { + return p[w]; + } }); + } + }), D.default = p, Object.freeze(D); + } + var y = E(o), A = m(u), b = E(l), g = { Boolean: "Boolean", EOF: "", Identifier: "Identifier", PrivateIdentifier: "PrivateIdentifier", Keyword: "Keyword", Null: "Null", Numeric: "Numeric", Punctuator: "Punctuator", String: "String", RegularExpression: "RegularExpression", Template: "Template", JSXIdentifier: "JSXIdentifier", JSXText: "JSXText" }; + function V(p, D) { + let w = p[0], f = p[p.length - 1], F = { type: g.Template, value: D.slice(w.start, f.end) }; + return w.loc && (F.loc = { start: w.loc.start, end: f.loc.end }), w.range && (F.start = w.range[0], F.end = f.range[1], F.range = [F.start, F.end]), F; + } + function R(p, D) { + this._acornTokTypes = p, this._tokens = [], this._curlyBrace = null, this._code = D; + } + R.prototype = { constructor: R, translate(p, D) { + let w = p.type, f = this._acornTokTypes; + if (w === f.name) + p.type = g.Identifier, p.value === "static" && (p.type = g.Keyword), D.ecmaVersion > 5 && (p.value === "yield" || p.value === "let") && (p.type = g.Keyword); + else if (w === f.privateId) + p.type = g.PrivateIdentifier; + else if (w === f.semi || w === f.comma || w === f.parenL || w === f.parenR || w === f.braceL || w === f.braceR || w === f.dot || w === f.bracketL || w === f.colon || w === f.question || w === f.bracketR || w === f.ellipsis || w === f.arrow || w === f.jsxTagStart || w === f.incDec || w === f.starstar || w === f.jsxTagEnd || w === f.prefix || w === f.questionDot || w.binop && !w.keyword || w.isAssign) + p.type = g.Punctuator, p.value = this._code.slice(p.start, p.end); + else if (w === f.jsxName) + p.type = g.JSXIdentifier; + else if (w.label === "jsxText" || w === f.jsxAttrValueToken) + p.type = g.JSXText; + else if (w.keyword) + w.keyword === "true" || w.keyword === "false" ? p.type = g.Boolean : w.keyword === "null" ? p.type = g.Null : p.type = g.Keyword; + else if (w === f.num) + p.type = g.Numeric, p.value = this._code.slice(p.start, p.end); + else if (w === f.string) + D.jsxAttrValueToken ? (D.jsxAttrValueToken = false, p.type = g.JSXText) : p.type = g.String, p.value = this._code.slice(p.start, p.end); + else if (w === f.regexp) { + p.type = g.RegularExpression; + let F = p.value; + p.regex = { flags: F.flags, pattern: F.pattern }, p.value = "/".concat(F.pattern, "/").concat(F.flags); + } + return p; + }, onToken(p, D) { + let w = this, f = this._acornTokTypes, F = D.tokens, K = this._tokens; + function X() { + F.push(V(w._tokens, w._code)), w._tokens = []; + } + if (p.type === f.eof) { + this._curlyBrace && F.push(this.translate(this._curlyBrace, D)); + return; + } + if (p.type === f.backQuote) { + this._curlyBrace && (F.push(this.translate(this._curlyBrace, D)), this._curlyBrace = null), K.push(p), K.length > 1 && X(); + return; + } + if (p.type === f.dollarBraceL) { + K.push(p), X(); + return; + } + if (p.type === f.braceR) { + this._curlyBrace && F.push(this.translate(this._curlyBrace, D)), this._curlyBrace = p; + return; + } + if (p.type === f.template || p.type === f.invalidTemplate) { + this._curlyBrace && (K.push(this._curlyBrace), this._curlyBrace = null), K.push(p); + return; + } + this._curlyBrace && (F.push(this.translate(this._curlyBrace, D)), this._curlyBrace = null), F.push(this.translate(p, D)); + } }; + var N = [3, 5, 6, 7, 8, 9, 10, 11, 12, 13]; + function T() { + return N[N.length - 1]; + } + function v() { + return [...N]; + } + function q() { + let p = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 5, D = p === "latest" ? T() : p; + if (typeof D != "number") + throw new Error('ecmaVersion must be a number or "latest". Received value of type '.concat(typeof p, " instead.")); + if (D >= 2015 && (D -= 2009), !N.includes(D)) + throw new Error("Invalid ecmaVersion."); + return D; + } + function B() { + let p = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "script"; + if (p === "script" || p === "module") + return p; + if (p === "commonjs") + return "script"; + throw new Error("Invalid sourceType."); + } + function I(p) { + let D = q(p.ecmaVersion), w = B(p.sourceType), f = p.range === true, F = p.loc === true; + if (D !== 3 && p.allowReserved) + throw new Error("`allowReserved` is only supported when ecmaVersion is 3"); + if (typeof p.allowReserved < "u" && typeof p.allowReserved != "boolean") + throw new Error("`allowReserved`, when present, must be `true` or `false`"); + let K = D === 3 ? p.allowReserved || "never" : false, X = p.ecmaFeatures || {}, oe = p.sourceType === "commonjs" || Boolean(X.globalReturn); + if (w === "module" && D < 6) + throw new Error("sourceType 'module' is not supported when ecmaVersion < 2015. Consider adding `{ ecmaVersion: 2015 }` to the parser options."); + return Object.assign({}, p, { ecmaVersion: D, sourceType: w, ranges: f, locations: F, allowReserved: K, allowReturnOutsideFunction: oe }); + } + var k = Symbol("espree's internal state"), C = Symbol("espree's esprimaFinishNode"); + function H(p, D, w, f, F, K) { + let X = { type: p ? "Block" : "Line", value: D }; + return typeof w == "number" && (X.start = w, X.end = f, X.range = [w, f]), typeof F == "object" && (X.loc = { start: F, end: K }), X; + } + var L = () => (p) => { + let D = Object.assign({}, p.acorn.tokTypes); + return p.acornJsx && Object.assign(D, p.acornJsx.tokTypes), class extends p { + constructor(f, F) { + (typeof f != "object" || f === null) && (f = {}), typeof F != "string" && !(F instanceof String) && (F = String(F)); + let K = f.sourceType, X = I(f), oe = X.ecmaFeatures || {}, me = X.tokens === true ? new R(D, F) : null; + super({ ecmaVersion: X.ecmaVersion, sourceType: X.sourceType, ranges: X.ranges, locations: X.locations, allowReserved: X.allowReserved, allowReturnOutsideFunction: X.allowReturnOutsideFunction, onToken: (ve) => { + me && me.onToken(ve, this[k]), ve.type !== D.eof && (this[k].lastToken = ve); + }, onComment: (ve, pt, ft, Ee, ge, De) => { + if (this[k].comments) { + let Ue = H(ve, pt, ft, Ee, ge, De); + this[k].comments.push(Ue); + } + } }, F), this[k] = { originalSourceType: K || X.sourceType, tokens: me ? [] : null, comments: X.comment === true ? [] : null, impliedStrict: oe.impliedStrict === true && this.options.ecmaVersion >= 5, ecmaVersion: this.options.ecmaVersion, jsxAttrValueToken: false, lastToken: null, templateElements: [] }; + } + tokenize() { + do + this.next(); + while (this.type !== D.eof); + this.next(); + let f = this[k], F = f.tokens; + return f.comments && (F.comments = f.comments), F; + } + finishNode() { + let f = super.finishNode(...arguments); + return this[C](f); + } + finishNodeAt() { + let f = super.finishNodeAt(...arguments); + return this[C](f); + } + parse() { + let f = this[k], F = super.parse(); + if (F.sourceType = f.originalSourceType, f.comments && (F.comments = f.comments), f.tokens && (F.tokens = f.tokens), F.body.length) { + let [K] = F.body; + F.range && (F.range[0] = K.range[0]), F.loc && (F.loc.start = K.loc.start), F.start = K.start; + } + return f.lastToken && (F.range && (F.range[1] = f.lastToken.range[1]), F.loc && (F.loc.end = f.lastToken.loc.end), F.end = f.lastToken.end), this[k].templateElements.forEach((K) => { + let oe = K.tail ? 1 : 2; + K.start += -1, K.end += oe, K.range && (K.range[0] += -1, K.range[1] += oe), K.loc && (K.loc.start.column += -1, K.loc.end.column += oe); + }), F; + } + parseTopLevel(f) { + return this[k].impliedStrict && (this.strict = true), super.parseTopLevel(f); + } + raise(f, F) { + let K = p.acorn.getLineInfo(this.input, f), X = new SyntaxError(F); + throw X.index = f, X.lineNumber = K.line, X.column = K.column + 1, X; + } + raiseRecoverable(f, F) { + this.raise(f, F); + } + unexpected(f) { + let F = "Unexpected token"; + if (f != null) { + if (this.pos = f, this.options.locations) + for (; this.pos < this.lineStart; ) + this.lineStart = this.input.lastIndexOf(` +`, this.lineStart - 2) + 1, --this.curLine; + this.nextToken(); + } + this.end > this.start && (F += " ".concat(this.input.slice(this.start, this.end))), this.raise(this.start, F); + } + jsx_readString(f) { + let F = super.jsx_readString(f); + return this.type === D.string && (this[k].jsxAttrValueToken = true), F; + } + [C](f) { + return f.type === "TemplateElement" && this[k].templateElements.push(f), f.type.includes("Function") && !f.generator && (f.generator = false), f; + } + }; + }, i = "9.3.1", _ = { _regular: null, _jsx: null, get regular() { + return this._regular === null && (this._regular = y.Parser.extend(L())), this._regular; + }, get jsx() { + return this._jsx === null && (this._jsx = y.Parser.extend(A.default(), L())), this._jsx; + }, get(p) { + return Boolean(p && p.ecmaFeatures && p.ecmaFeatures.jsx) ? this.jsx : this.regular; + } }; + function P(p, D) { + let w = _.get(D); + return (!D || D.tokens !== true) && (D = Object.assign({}, D, { tokens: true })), new w(D, p).tokenize(); + } + function M(p, D) { + let w = _.get(D); + return new w(D, p).parse(); + } + var ee = i, ae = function() { + return b.KEYS; + }(), te = void 0, ie = T(), Ne = v(); + n.Syntax = te, n.VisitorKeys = ae, n.latestEcmaVersion = ie, n.parse = M, n.supportedEcmaVersions = Ne, n.tokenize = P, n.version = ee; + } }), Bh = Y({ "src/language-js/parse/espree.js"(n, o) { + "use strict"; + J(); + var u = lr(), l = fa(), m = Fa(), E = kh(), y = Ia(), A = { ecmaVersion: "latest", range: true, loc: true, comment: true, tokens: true, sourceType: "module", ecmaFeatures: { jsx: true, globalReturn: true, impliedStrict: false } }; + function b(V) { + let { message: R, lineNumber: N, column: T } = V; + return typeof N != "number" ? V : u(R, { start: { line: N, column: T } }); + } + function g(V, R) { + let N = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, { parse: T } = Fh(), v = E(V), { result: q, error: B } = l(() => T(v, Object.assign(Object.assign({}, A), {}, { sourceType: "module" })), () => T(v, Object.assign(Object.assign({}, A), {}, { sourceType: "script" }))); + if (!q) + throw b(B); + return N.originalText = V, y(q, N); + } + o.exports = m(g); + } }); + J(); + var Th = wh(), Ih = Bh(); + Na.exports = { parsers: { acorn: Th, espree: Ih } }; + }); + return Ph(); + }); + } +}); + +// node_modules/prettier/parser-meriyah.js +var require_parser_meriyah = __commonJS({ + "node_modules/prettier/parser-meriyah.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.meriyah = e(); + } + })(function() { + "use strict"; + var F = (d, m) => () => (m || d((m = { exports: {} }).exports, m), m.exports); + var i2 = F((E3, Ce) => { + var A1 = function(d) { + return d && d.Math == Math && d; + }; + Ce.exports = A1(typeof globalThis == "object" && globalThis) || A1(typeof window == "object" && window) || A1(typeof self == "object" && self) || A1(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var L2 = F((D3, we) => { + we.exports = function(d) { + try { + return !!d(); + } catch { + return true; + } + }; + }); + var J2 = F((C3, qe) => { + var Ut = L2(); + qe.exports = !Ut(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var x1 = F((w3, Be) => { + var Jt = L2(); + Be.exports = !Jt(function() { + var d = function() { + }.bind(); + return typeof d != "function" || d.hasOwnProperty("prototype"); + }); + }); + var P1 = F((q3, Se) => { + var Xt = x1(), y1 = Function.prototype.call; + Se.exports = Xt ? y1.bind(y1) : function() { + return y1.apply(y1, arguments); + }; + }); + var Oe = F((Le) => { + "use strict"; + var Fe = {}.propertyIsEnumerable, Te = Object.getOwnPropertyDescriptor, zt = Te && !Fe.call({ 1: 2 }, 1); + Le.f = zt ? function(m) { + var k = Te(this, m); + return !!k && k.enumerable; + } : Fe; + }); + var p1 = F((S3, Ie) => { + Ie.exports = function(d, m) { + return { enumerable: !(d & 1), configurable: !(d & 2), writable: !(d & 4), value: m }; + }; + }); + var D2 = F((F3, Ve) => { + var Re = x1(), Ne = Function.prototype, Ht = Ne.bind, uu = Ne.call, Kt = Re && Ht.bind(uu, uu); + Ve.exports = Re ? function(d) { + return d && Kt(d); + } : function(d) { + return d && function() { + return uu.apply(d, arguments); + }; + }; + }); + var Me = F((T3, _e) => { + var je = D2(), Wt = je({}.toString), Yt = je("".slice); + _e.exports = function(d) { + return Yt(Wt(d), 8, -1); + }; + }); + var Je = F((L3, Ue) => { + var $t = i2(), Zt = D2(), Qt = L2(), Gt = Me(), eu = $t.Object, xt = Zt("".split); + Ue.exports = Qt(function() { + return !eu("z").propertyIsEnumerable(0); + }) ? function(d) { + return Gt(d) == "String" ? xt(d, "") : eu(d); + } : eu; + }); + var iu = F((O3, Xe) => { + var pt = i2(), uo = pt.TypeError; + Xe.exports = function(d) { + if (d == null) + throw uo("Can't call method on " + d); + return d; + }; + }); + var E1 = F((I3, ze) => { + var eo = Je(), io = iu(); + ze.exports = function(d) { + return eo(io(d)); + }; + }); + var C2 = F((R3, He) => { + He.exports = function(d) { + return typeof d == "function"; + }; + }); + var Z2 = F((N3, Ke) => { + var no = C2(); + Ke.exports = function(d) { + return typeof d == "object" ? d !== null : no(d); + }; + }); + var D1 = F((V3, We) => { + var nu = i2(), to = C2(), oo = function(d) { + return to(d) ? d : void 0; + }; + We.exports = function(d, m) { + return arguments.length < 2 ? oo(nu[d]) : nu[d] && nu[d][m]; + }; + }); + var $e = F((j3, Ye) => { + var lo = D2(); + Ye.exports = lo({}.isPrototypeOf); + }); + var Qe = F((_3, Ze) => { + var fo = D1(); + Ze.exports = fo("navigator", "userAgent") || ""; + }); + var ni = F((M3, ii) => { + var ei = i2(), tu = Qe(), Ge = ei.process, xe = ei.Deno, pe = Ge && Ge.versions || xe && xe.version, ui = pe && pe.v8, P2, C1; + ui && (P2 = ui.split("."), C1 = P2[0] > 0 && P2[0] < 4 ? 1 : +(P2[0] + P2[1])); + !C1 && tu && (P2 = tu.match(/Edge\/(\d+)/), (!P2 || P2[1] >= 74) && (P2 = tu.match(/Chrome\/(\d+)/), P2 && (C1 = +P2[1]))); + ii.exports = C1; + }); + var ou = F((U3, oi) => { + var ti = ni(), co = L2(); + oi.exports = !!Object.getOwnPropertySymbols && !co(function() { + var d = Symbol(); + return !String(d) || !(Object(d) instanceof Symbol) || !Symbol.sham && ti && ti < 41; + }); + }); + var lu = F((J3, li) => { + var so = ou(); + li.exports = so && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var fu = F((X3, fi) => { + var ao = i2(), go = D1(), ho = C2(), mo = $e(), bo = lu(), ko = ao.Object; + fi.exports = bo ? function(d) { + return typeof d == "symbol"; + } : function(d) { + var m = go("Symbol"); + return ho(m) && mo(m.prototype, ko(d)); + }; + }); + var si = F((z3, ci) => { + var ro = i2(), vo = ro.String; + ci.exports = function(d) { + try { + return vo(d); + } catch { + return "Object"; + } + }; + }); + var di = F((H3, ai) => { + var Ao = i2(), yo = C2(), Po = si(), Eo = Ao.TypeError; + ai.exports = function(d) { + if (yo(d)) + return d; + throw Eo(Po(d) + " is not a function"); + }; + }); + var hi = F((K3, gi) => { + var Do = di(); + gi.exports = function(d, m) { + var k = d[m]; + return k == null ? void 0 : Do(k); + }; + }); + var bi = F((W3, mi) => { + var Co = i2(), cu = P1(), su = C2(), au = Z2(), wo = Co.TypeError; + mi.exports = function(d, m) { + var k, f; + if (m === "string" && su(k = d.toString) && !au(f = cu(k, d)) || su(k = d.valueOf) && !au(f = cu(k, d)) || m !== "string" && su(k = d.toString) && !au(f = cu(k, d))) + return f; + throw wo("Can't convert object to primitive value"); + }; + }); + var ri = F((Y3, ki) => { + ki.exports = false; + }); + var w1 = F(($3, Ai) => { + var vi = i2(), qo = Object.defineProperty; + Ai.exports = function(d, m) { + try { + qo(vi, d, { value: m, configurable: true, writable: true }); + } catch { + vi[d] = m; + } + return m; + }; + }); + var q1 = F((Z3, Pi) => { + var Bo = i2(), So = w1(), yi = "__core-js_shared__", Fo = Bo[yi] || So(yi, {}); + Pi.exports = Fo; + }); + var du = F((Q3, Di) => { + var To = ri(), Ei = q1(); + (Di.exports = function(d, m) { + return Ei[d] || (Ei[d] = m !== void 0 ? m : {}); + })("versions", []).push({ version: "3.22.2", mode: To ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var wi = F((G3, Ci) => { + var Lo = i2(), Oo = iu(), Io = Lo.Object; + Ci.exports = function(d) { + return Io(Oo(d)); + }; + }); + var O2 = F((x3, qi) => { + var Ro = D2(), No = wi(), Vo = Ro({}.hasOwnProperty); + qi.exports = Object.hasOwn || function(m, k) { + return Vo(No(m), k); + }; + }); + var gu = F((p3, Bi) => { + var jo = D2(), _o = 0, Mo = Math.random(), Uo = jo(1 .toString); + Bi.exports = function(d) { + return "Symbol(" + (d === void 0 ? "" : d) + ")_" + Uo(++_o + Mo, 36); + }; + }); + var Ii = F((u6, Oi) => { + var Jo = i2(), Xo = du(), Si = O2(), zo = gu(), Fi = ou(), Li = lu(), Q2 = Xo("wks"), X2 = Jo.Symbol, Ti = X2 && X2.for, Ho = Li ? X2 : X2 && X2.withoutSetter || zo; + Oi.exports = function(d) { + if (!Si(Q2, d) || !(Fi || typeof Q2[d] == "string")) { + var m = "Symbol." + d; + Fi && Si(X2, d) ? Q2[d] = X2[d] : Li && Ti ? Q2[d] = Ti(m) : Q2[d] = Ho(m); + } + return Q2[d]; + }; + }); + var ji = F((e6, Vi) => { + var Ko = i2(), Wo = P1(), Ri = Z2(), Ni = fu(), Yo = hi(), $o = bi(), Zo = Ii(), Qo = Ko.TypeError, Go = Zo("toPrimitive"); + Vi.exports = function(d, m) { + if (!Ri(d) || Ni(d)) + return d; + var k = Yo(d, Go), f; + if (k) { + if (m === void 0 && (m = "default"), f = Wo(k, d, m), !Ri(f) || Ni(f)) + return f; + throw Qo("Can't convert object to primitive value"); + } + return m === void 0 && (m = "number"), $o(d, m); + }; + }); + var hu = F((i6, _i) => { + var xo = ji(), po = fu(); + _i.exports = function(d) { + var m = xo(d, "string"); + return po(m) ? m : m + ""; + }; + }); + var Ji = F((n6, Ui) => { + var ul = i2(), Mi = Z2(), mu = ul.document, el = Mi(mu) && Mi(mu.createElement); + Ui.exports = function(d) { + return el ? mu.createElement(d) : {}; + }; + }); + var bu = F((t6, Xi) => { + var il = J2(), nl = L2(), tl = Ji(); + Xi.exports = !il && !nl(function() { + return Object.defineProperty(tl("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var ku = F((Hi) => { + var ol = J2(), ll = P1(), fl = Oe(), cl = p1(), sl = E1(), al = hu(), dl = O2(), gl = bu(), zi = Object.getOwnPropertyDescriptor; + Hi.f = ol ? zi : function(m, k) { + if (m = sl(m), k = al(k), gl) + try { + return zi(m, k); + } catch { + } + if (dl(m, k)) + return cl(!ll(fl.f, m, k), m[k]); + }; + }); + var Wi = F((l6, Ki) => { + var hl = J2(), ml = L2(); + Ki.exports = hl && ml(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var ru = F((f6, $i) => { + var Yi = i2(), bl = Z2(), kl = Yi.String, rl = Yi.TypeError; + $i.exports = function(d) { + if (bl(d)) + return d; + throw rl(kl(d) + " is not an object"); + }; + }); + var Eu = F((Qi) => { + var vl = i2(), Al = J2(), yl = bu(), Pl = Wi(), B1 = ru(), Zi = hu(), El = vl.TypeError, vu = Object.defineProperty, Dl = Object.getOwnPropertyDescriptor, Au = "enumerable", yu = "configurable", Pu = "writable"; + Qi.f = Al ? Pl ? function(m, k, f) { + if (B1(m), k = Zi(k), B1(f), typeof m == "function" && k === "prototype" && "value" in f && Pu in f && !f[Pu]) { + var P = Dl(m, k); + P && P[Pu] && (m[k] = f.value, f = { configurable: yu in f ? f[yu] : P[yu], enumerable: Au in f ? f[Au] : P[Au], writable: false }); + } + return vu(m, k, f); + } : vu : function(m, k, f) { + if (B1(m), k = Zi(k), B1(f), yl) + try { + return vu(m, k, f); + } catch { + } + if ("get" in f || "set" in f) + throw El("Accessors not supported"); + return "value" in f && (m[k] = f.value), m; + }; + }); + var S1 = F((s6, Gi) => { + var Cl = J2(), wl = Eu(), ql = p1(); + Gi.exports = Cl ? function(d, m, k) { + return wl.f(d, m, ql(1, k)); + } : function(d, m, k) { + return d[m] = k, d; + }; + }); + var Cu = F((a6, xi) => { + var Bl = D2(), Sl = C2(), Du = q1(), Fl = Bl(Function.toString); + Sl(Du.inspectSource) || (Du.inspectSource = function(d) { + return Fl(d); + }); + xi.exports = Du.inspectSource; + }); + var en = F((d6, un) => { + var Tl = i2(), Ll = C2(), Ol = Cu(), pi = Tl.WeakMap; + un.exports = Ll(pi) && /native code/.test(Ol(pi)); + }); + var on = F((g6, tn) => { + var Il = du(), Rl = gu(), nn = Il("keys"); + tn.exports = function(d) { + return nn[d] || (nn[d] = Rl(d)); + }; + }); + var wu = F((h6, ln) => { + ln.exports = {}; + }); + var gn = F((m6, dn) => { + var Nl = en(), an = i2(), qu = D2(), Vl = Z2(), jl = S1(), Bu = O2(), Su = q1(), _l = on(), Ml = wu(), fn = "Object already initialized", Tu = an.TypeError, Ul = an.WeakMap, F1, e1, T1, Jl = function(d) { + return T1(d) ? e1(d) : F1(d, {}); + }, Xl = function(d) { + return function(m) { + var k; + if (!Vl(m) || (k = e1(m)).type !== d) + throw Tu("Incompatible receiver, " + d + " required"); + return k; + }; + }; + Nl || Su.state ? (I2 = Su.state || (Su.state = new Ul()), cn = qu(I2.get), Fu = qu(I2.has), sn = qu(I2.set), F1 = function(d, m) { + if (Fu(I2, d)) + throw new Tu(fn); + return m.facade = d, sn(I2, d, m), m; + }, e1 = function(d) { + return cn(I2, d) || {}; + }, T1 = function(d) { + return Fu(I2, d); + }) : (z2 = _l("state"), Ml[z2] = true, F1 = function(d, m) { + if (Bu(d, z2)) + throw new Tu(fn); + return m.facade = d, jl(d, z2, m), m; + }, e1 = function(d) { + return Bu(d, z2) ? d[z2] : {}; + }, T1 = function(d) { + return Bu(d, z2); + }); + var I2, cn, Fu, sn, z2; + dn.exports = { set: F1, get: e1, has: T1, enforce: Jl, getterFor: Xl }; + }); + var bn = F((b6, mn) => { + var Lu = J2(), zl = O2(), hn = Function.prototype, Hl = Lu && Object.getOwnPropertyDescriptor, Ou = zl(hn, "name"), Kl = Ou && function() { + }.name === "something", Wl = Ou && (!Lu || Lu && Hl(hn, "name").configurable); + mn.exports = { EXISTS: Ou, PROPER: Kl, CONFIGURABLE: Wl }; + }); + var yn = F((k6, An) => { + var Yl = i2(), kn = C2(), $l = O2(), rn = S1(), Zl = w1(), Ql = Cu(), vn = gn(), Gl = bn().CONFIGURABLE, xl = vn.get, pl = vn.enforce, u4 = String(String).split("String"); + (An.exports = function(d, m, k, f) { + var P = f ? !!f.unsafe : false, S = f ? !!f.enumerable : false, q = f ? !!f.noTargetGet : false, T = f && f.name !== void 0 ? f.name : m, r; + if (kn(k) && (String(T).slice(0, 7) === "Symbol(" && (T = "[" + String(T).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!$l(k, "name") || Gl && k.name !== T) && rn(k, "name", T), r = pl(k), r.source || (r.source = u4.join(typeof T == "string" ? T : ""))), d === Yl) { + S ? d[m] = k : Zl(m, k); + return; + } else + P ? !q && d[m] && (S = true) : delete d[m]; + S ? d[m] = k : rn(d, m, k); + })(Function.prototype, "toString", function() { + return kn(this) && xl(this).source || Ql(this); + }); + }); + var Iu = F((r6, Pn) => { + var e4 = Math.ceil, i4 = Math.floor; + Pn.exports = function(d) { + var m = +d; + return m !== m || m === 0 ? 0 : (m > 0 ? i4 : e4)(m); + }; + }); + var Dn = F((v6, En) => { + var n4 = Iu(), t4 = Math.max, o4 = Math.min; + En.exports = function(d, m) { + var k = n4(d); + return k < 0 ? t4(k + m, 0) : o4(k, m); + }; + }); + var wn = F((A6, Cn) => { + var l4 = Iu(), f4 = Math.min; + Cn.exports = function(d) { + return d > 0 ? f4(l4(d), 9007199254740991) : 0; + }; + }); + var Bn = F((y6, qn) => { + var c4 = wn(); + qn.exports = function(d) { + return c4(d.length); + }; + }); + var Tn = F((P6, Fn) => { + var s4 = E1(), a4 = Dn(), d4 = Bn(), Sn = function(d) { + return function(m, k, f) { + var P = s4(m), S = d4(P), q = a4(f, S), T; + if (d && k != k) { + for (; S > q; ) + if (T = P[q++], T != T) + return true; + } else + for (; S > q; q++) + if ((d || q in P) && P[q] === k) + return d || q || 0; + return !d && -1; + }; + }; + Fn.exports = { includes: Sn(true), indexOf: Sn(false) }; + }); + var In = F((E6, On) => { + var g4 = D2(), Ru = O2(), h4 = E1(), m4 = Tn().indexOf, b4 = wu(), Ln = g4([].push); + On.exports = function(d, m) { + var k = h4(d), f = 0, P = [], S; + for (S in k) + !Ru(b4, S) && Ru(k, S) && Ln(P, S); + for (; m.length > f; ) + Ru(k, S = m[f++]) && (~m4(P, S) || Ln(P, S)); + return P; + }; + }); + var Nn = F((D6, Rn) => { + Rn.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var jn = F((Vn) => { + var k4 = In(), r4 = Nn(), v4 = r4.concat("length", "prototype"); + Vn.f = Object.getOwnPropertyNames || function(m) { + return k4(m, v4); + }; + }); + var Mn = F((_n) => { + _n.f = Object.getOwnPropertySymbols; + }); + var Jn = F((q6, Un) => { + var A4 = D1(), y4 = D2(), P4 = jn(), E4 = Mn(), D4 = ru(), C4 = y4([].concat); + Un.exports = A4("Reflect", "ownKeys") || function(m) { + var k = P4.f(D4(m)), f = E4.f; + return f ? C4(k, f(m)) : k; + }; + }); + var Hn = F((B6, zn) => { + var Xn = O2(), w4 = Jn(), q4 = ku(), B4 = Eu(); + zn.exports = function(d, m, k) { + for (var f = w4(m), P = B4.f, S = q4.f, q = 0; q < f.length; q++) { + var T = f[q]; + !Xn(d, T) && !(k && Xn(k, T)) && P(d, T, S(m, T)); + } + }; + }); + var Wn = F((S6, Kn) => { + var S4 = L2(), F4 = C2(), T4 = /#|\.prototype\./, i1 = function(d, m) { + var k = O4[L4(d)]; + return k == R4 ? true : k == I4 ? false : F4(m) ? S4(m) : !!m; + }, L4 = i1.normalize = function(d) { + return String(d).replace(T4, ".").toLowerCase(); + }, O4 = i1.data = {}, I4 = i1.NATIVE = "N", R4 = i1.POLYFILL = "P"; + Kn.exports = i1; + }); + var $n = F((F6, Yn) => { + var Nu = i2(), N4 = ku().f, V4 = S1(), j4 = yn(), _4 = w1(), M4 = Hn(), U4 = Wn(); + Yn.exports = function(d, m) { + var k = d.target, f = d.global, P = d.stat, S, q, T, r, K, Y; + if (f ? q = Nu : P ? q = Nu[k] || _4(k, {}) : q = (Nu[k] || {}).prototype, q) + for (T in m) { + if (K = m[T], d.noTargetGet ? (Y = N4(q, T), r = Y && Y.value) : r = q[T], S = U4(f ? T : k + (P ? "." : "#") + T, d.forced), !S && r !== void 0) { + if (typeof K == typeof r) + continue; + M4(K, r); + } + (d.sham || r && r.sham) && V4(K, "sham", true), j4(q, T, K, d); + } + }; + }); + var Zn = F(() => { + var J4 = $n(), X4 = i2(); + J4({ global: true }, { globalThis: X4 }); + }); + var Qn = F(() => { + Zn(); + }); + var y3 = F((R6, k0) => { + Qn(); + var Mu = Object.defineProperty, z4 = Object.getOwnPropertyDescriptor, Uu = Object.getOwnPropertyNames, H4 = Object.prototype.hasOwnProperty, xn = (d, m) => function() { + return d && (m = (0, d[Uu(d)[0]])(d = 0)), m; + }, l2 = (d, m) => function() { + return m || (0, d[Uu(d)[0]])((m = { exports: {} }).exports, m), m.exports; + }, K4 = (d, m) => { + for (var k in m) + Mu(d, k, { get: m[k], enumerable: true }); + }, W4 = (d, m, k, f) => { + if (m && typeof m == "object" || typeof m == "function") + for (let P of Uu(m)) + !H4.call(d, P) && P !== k && Mu(d, P, { get: () => m[P], enumerable: !(f = z4(m, P)) || f.enumerable }); + return d; + }, Y4 = (d) => W4(Mu({}, "__esModule", { value: true }), d), n2 = xn({ ""() { + } }), pn = l2({ "src/common/parser-create-error.js"(d, m) { + "use strict"; + n2(); + function k(f, P) { + let S = new SyntaxError(f + " (" + P.start.line + ":" + P.start.column + ")"); + return S.loc = P, S; + } + m.exports = k; + } }), $4 = l2({ "src/utils/try-combinations.js"(d, m) { + "use strict"; + n2(); + function k() { + let f; + for (var P = arguments.length, S = new Array(P), q = 0; q < P; q++) + S[q] = arguments[q]; + for (let [T, r] of S.entries()) + try { + return { result: r() }; + } catch (K) { + T === 0 && (f = K); + } + return { error: f }; + } + m.exports = k; + } }), u0 = {}; + K4(u0, { EOL: () => _u, arch: () => Z4, cpus: () => f0, default: () => g0, endianness: () => e0, freemem: () => o0, getNetworkInterfaces: () => d0, hostname: () => i0, loadavg: () => n0, networkInterfaces: () => a0, platform: () => Q4, release: () => s0, tmpDir: () => Vu, tmpdir: () => ju, totalmem: () => l0, type: () => c0, uptime: () => t0 }); + function e0() { + if (typeof L1 > "u") { + var d = new ArrayBuffer(2), m = new Uint8Array(d), k = new Uint16Array(d); + if (m[0] = 1, m[1] = 2, k[0] === 258) + L1 = "BE"; + else if (k[0] === 513) + L1 = "LE"; + else + throw new Error("unable to figure out endianess"); + } + return L1; + } + function i0() { + return typeof globalThis.location < "u" ? globalThis.location.hostname : ""; + } + function n0() { + return []; + } + function t0() { + return 0; + } + function o0() { + return Number.MAX_VALUE; + } + function l0() { + return Number.MAX_VALUE; + } + function f0() { + return []; + } + function c0() { + return "Browser"; + } + function s0() { + return typeof globalThis.navigator < "u" ? globalThis.navigator.appVersion : ""; + } + function a0() { + } + function d0() { + } + function Z4() { + return "javascript"; + } + function Q4() { + return "browser"; + } + function Vu() { + return "/tmp"; + } + var L1, ju, _u, g0, G4 = xn({ "node-modules-polyfills:os"() { + n2(), ju = Vu, _u = ` +`, g0 = { EOL: _u, tmpdir: ju, tmpDir: Vu, networkInterfaces: a0, getNetworkInterfaces: d0, release: s0, type: c0, cpus: f0, totalmem: l0, freemem: o0, uptime: t0, loadavg: n0, hostname: i0, endianness: e0 }; + } }), x4 = l2({ "node-modules-polyfills-commonjs:os"(d, m) { + n2(); + var k = (G4(), Y4(u0)); + if (k && k.default) { + m.exports = k.default; + for (let f in k) + m.exports[f] = k[f]; + } else + k && (m.exports = k); + } }), p4 = l2({ "node_modules/detect-newline/index.js"(d, m) { + "use strict"; + n2(); + var k = (f) => { + if (typeof f != "string") + throw new TypeError("Expected a string"); + let P = f.match(/(?:\r?\n)/g) || []; + if (P.length === 0) + return; + let S = P.filter((T) => T === `\r +`).length, q = P.length - S; + return S > q ? `\r +` : ` +`; + }; + m.exports = k, m.exports.graceful = (f) => typeof f == "string" && k(f) || ` +`; + } }), u3 = l2({ "node_modules/jest-docblock/build/index.js"(d) { + "use strict"; + n2(), Object.defineProperty(d, "__esModule", { value: true }), d.extract = Z, d.parse = t2, d.parseWithComments = V, d.print = J, d.strip = L; + function m() { + let I = x4(); + return m = function() { + return I; + }, I; + } + function k() { + let I = f(p4()); + return k = function() { + return I; + }, I; + } + function f(I) { + return I && I.__esModule ? I : { default: I }; + } + var P = /\*\/$/, S = /^\/\*\*/, q = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, T = /(^|\s+)\/\/([^\r\n]*)/g, r = /^(\r?\n)+/, K = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g, Y = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g, X = /(\r?\n|^) *\* ?/g, p = []; + function Z(I) { + let u2 = I.match(q); + return u2 ? u2[0].trimLeft() : ""; + } + function L(I) { + let u2 = I.match(q); + return u2 && u2[0] ? I.substring(u2[0].length) : I; + } + function t2(I) { + return V(I).pragmas; + } + function V(I) { + let u2 = (0, k().default)(I) || m().EOL; + I = I.replace(S, "").replace(P, "").replace(X, "$1"); + let m2 = ""; + for (; m2 !== I; ) + m2 = I, I = I.replace(K, "".concat(u2, "$1 $2").concat(u2)); + I = I.replace(r, "").trimRight(); + let c2 = /* @__PURE__ */ Object.create(null), R2 = I.replace(Y, "").replace(r, "").trimRight(), s2; + for (; s2 = Y.exec(I); ) { + let N2 = s2[2].replace(T, ""); + typeof c2[s2[1]] == "string" || Array.isArray(c2[s2[1]]) ? c2[s2[1]] = p.concat(c2[s2[1]], N2) : c2[s2[1]] = N2; + } + return { comments: R2, pragmas: c2 }; + } + function J(I) { + let { comments: u2 = "", pragmas: m2 = {} } = I, c2 = (0, k().default)(u2) || m().EOL, R2 = "/**", s2 = " *", N2 = " */", w2 = Object.keys(m2), O1 = w2.map((g2) => H(g2, m2[g2])).reduce((g2, n1) => g2.concat(n1), []).map((g2) => s2 + " " + g2 + c2).join(""); + if (!u2) { + if (w2.length === 0) + return ""; + if (w2.length === 1 && !Array.isArray(m2[w2[0]])) { + let g2 = m2[w2[0]]; + return "".concat(R2, " ").concat(H(w2[0], g2)[0]).concat(N2); + } + } + let I1 = u2.split(c2).map((g2) => "".concat(s2, " ").concat(g2)).join(c2) + c2; + return R2 + c2 + (u2 ? I1 : "") + (u2 && w2.length ? s2 + c2 : "") + O1 + N2; + } + function H(I, u2) { + return p.concat(u2).map((m2) => "@".concat(I, " ").concat(m2).trim()); + } + } }), e3 = l2({ "src/common/end-of-line.js"(d, m) { + "use strict"; + n2(); + function k(q) { + let T = q.indexOf("\r"); + return T >= 0 ? q.charAt(T + 1) === ` +` ? "crlf" : "cr" : "lf"; + } + function f(q) { + switch (q) { + case "cr": + return "\r"; + case "crlf": + return `\r +`; + default: + return ` +`; + } + } + function P(q, T) { + let r; + switch (T) { + case ` +`: + r = /\n/g; + break; + case "\r": + r = /\r/g; + break; + case `\r +`: + r = /\r\n/g; + break; + default: + throw new Error('Unexpected "eol" '.concat(JSON.stringify(T), ".")); + } + let K = q.match(r); + return K ? K.length : 0; + } + function S(q) { + return q.replace(/\r\n?/g, ` +`); + } + m.exports = { guessEndOfLine: k, convertEndOfLineToChars: f, countEndOfLineChars: P, normalizeEndOfLine: S }; + } }), i3 = l2({ "src/language-js/utils/get-shebang.js"(d, m) { + "use strict"; + n2(); + function k(f) { + if (!f.startsWith("#!")) + return ""; + let P = f.indexOf(` +`); + return P === -1 ? f : f.slice(0, P); + } + m.exports = k; + } }), n3 = l2({ "src/language-js/pragma.js"(d, m) { + "use strict"; + n2(); + var { parseWithComments: k, strip: f, extract: P, print: S } = u3(), { normalizeEndOfLine: q } = e3(), T = i3(); + function r(X) { + let p = T(X); + p && (X = X.slice(p.length + 1)); + let Z = P(X), { pragmas: L, comments: t2 } = k(Z); + return { shebang: p, text: X, pragmas: L, comments: t2 }; + } + function K(X) { + let p = Object.keys(r(X).pragmas); + return p.includes("prettier") || p.includes("format"); + } + function Y(X) { + let { shebang: p, text: Z, pragmas: L, comments: t2 } = r(X), V = f(Z), J = S({ pragmas: Object.assign({ format: "" }, L), comments: t2.trimStart() }); + return (p ? "".concat(p, ` +`) : "") + q(J) + (V.startsWith(` +`) ? ` +` : ` + +`) + V; + } + m.exports = { hasPragma: K, insertPragma: Y }; + } }), t3 = l2({ "src/utils/is-non-empty-array.js"(d, m) { + "use strict"; + n2(); + function k(f) { + return Array.isArray(f) && f.length > 0; + } + m.exports = k; + } }), h0 = l2({ "src/language-js/loc.js"(d, m) { + "use strict"; + n2(); + var k = t3(); + function f(r, K) { + let { ignoreDecorators: Y } = K || {}; + if (!Y) { + let X = r.declaration && r.declaration.decorators || r.decorators; + if (k(X)) + return f(X[0]); + } + return r.range ? r.range[0] : r.start; + } + function P(r) { + return r.range ? r.range[1] : r.end; + } + function S(r, K) { + let Y = f(r); + return Number.isInteger(Y) && Y === f(K); + } + function q(r, K) { + let Y = P(r); + return Number.isInteger(Y) && Y === P(K); + } + function T(r, K) { + return S(r, K) && q(r, K); + } + m.exports = { locStart: f, locEnd: P, hasSameLocStart: S, hasSameLoc: T }; + } }), o3 = l2({ "src/language-js/parse/utils/create-parser.js"(d, m) { + "use strict"; + n2(); + var { hasPragma: k } = n3(), { locStart: f, locEnd: P } = h0(); + function S(q) { + return q = typeof q == "function" ? { parse: q } : q, Object.assign({ astFormat: "estree", hasPragma: k, locStart: f, locEnd: P }, q); + } + m.exports = S; + } }), l3 = l2({ "src/language-js/utils/is-ts-keyword-type.js"(d, m) { + "use strict"; + n2(); + function k(f) { + let { type: P } = f; + return P.startsWith("TS") && P.endsWith("Keyword"); + } + m.exports = k; + } }), f3 = l2({ "src/language-js/utils/is-block-comment.js"(d, m) { + "use strict"; + n2(); + var k = /* @__PURE__ */ new Set(["Block", "CommentBlock", "MultiLine"]), f = (P) => k.has(P == null ? void 0 : P.type); + m.exports = f; + } }), c3 = l2({ "src/language-js/utils/is-type-cast-comment.js"(d, m) { + "use strict"; + n2(); + var k = f3(); + function f(P) { + return k(P) && P.value[0] === "*" && /@type\b/.test(P.value); + } + m.exports = f; + } }), s3 = l2({ "src/utils/get-last.js"(d, m) { + "use strict"; + n2(); + var k = (f) => f[f.length - 1]; + m.exports = k; + } }), m0 = l2({ "src/language-js/parse/postprocess/visit-node.js"(d, m) { + "use strict"; + n2(); + function k(f, P) { + if (Array.isArray(f)) { + for (let S = 0; S < f.length; S++) + f[S] = k(f[S], P); + return f; + } + if (f && typeof f == "object" && typeof f.type == "string") { + let S = Object.keys(f); + for (let q = 0; q < S.length; q++) + f[S[q]] = k(f[S[q]], P); + return P(f) || f; + } + return f; + } + m.exports = k; + } }), b0 = l2({ "src/language-js/parse/postprocess/throw-syntax-error.js"(d, m) { + "use strict"; + n2(); + var k = pn(); + function f(P, S) { + let { start: q, end: T } = P.loc; + throw k(S, { start: { line: q.line, column: q.column + 1 }, end: { line: T.line, column: T.column + 1 } }); + } + m.exports = f; + } }), a3 = l2({ "src/language-js/parse/postprocess/typescript.js"(d, m) { + "use strict"; + n2(); + var k = m0(), f = b0(); + function P(T, r, K) { + let Y = T.decorators; + if (!Array.isArray(Y)) + return; + let X = r.decorators; + (!Array.isArray(X) || X.length !== Y.length || Y.some((p) => { + let Z = K.get(p); + return !Z || !X.includes(Z); + })) && f(r, "Leading decorators must be attached to a class declaration"); + } + function S(T, r) { + T.kind !== 167 || T.modifiers && !T.modifiers.some((X) => X.kind === 126) || T.initializer && r.value === null && f(r, "Abstract property cannot have an initializer"); + } + function q(T, r) { + let { esTreeNodeToTSNodeMap: K, tsNodeToESTreeNodeMap: Y } = r.tsParseResult; + k(T, (X) => { + let p = K.get(X); + if (!p) + return; + let Z = Y.get(p); + Z === X && (P(p, Z, Y), S(p, Z)); + }); + } + m.exports = { throwErrorForInvalidNodes: q }; + } }), d3 = l2({ "src/language-js/parse/postprocess/index.js"(d, m) { + "use strict"; + n2(); + var { locStart: k, locEnd: f } = h0(), P = l3(), S = c3(), q = s3(), T = m0(), { throwErrorForInvalidNodes: r } = a3(), K = b0(); + function Y(L, t2) { + if (t2.parser === "typescript" && /@|abstract/.test(t2.originalText) && r(L, t2), t2.parser !== "typescript" && t2.parser !== "flow" && t2.parser !== "acorn" && t2.parser !== "espree" && t2.parser !== "meriyah") { + let J = /* @__PURE__ */ new Set(); + L = T(L, (H) => { + H.leadingComments && H.leadingComments.some(S) && J.add(k(H)); + }), L = T(L, (H) => { + if (H.type === "ParenthesizedExpression") { + let { expression: I } = H; + if (I.type === "TypeCastExpression") + return I.range = H.range, I; + let u2 = k(H); + if (!J.has(u2)) + return I.extra = Object.assign(Object.assign({}, I.extra), {}, { parenthesized: true }), I; + } + }); + } + return L = T(L, (J) => { + switch (J.type) { + case "ChainExpression": + return X(J.expression); + case "LogicalExpression": { + if (p(J)) + return Z(J); + break; + } + case "VariableDeclaration": { + let H = q(J.declarations); + H && H.init && V(J, H); + break; + } + case "TSParenthesizedType": + return P(J.typeAnnotation) || J.typeAnnotation.type === "TSThisType" || (J.typeAnnotation.range = [k(J), f(J)]), J.typeAnnotation; + case "TSTypeParameter": + if (typeof J.name == "string") { + let H = k(J); + J.name = { type: "Identifier", name: J.name, range: [H, H + J.name.length] }; + } + break; + case "ObjectExpression": + if (t2.parser === "typescript") { + let H = J.properties.find((I) => I.type === "Property" && I.value.type === "TSEmptyBodyFunctionExpression"); + H && K(H.value, "Unexpected token."); + } + break; + case "SequenceExpression": { + let H = q(J.expressions); + J.range = [k(J), Math.min(f(H), f(J))]; + break; + } + case "TopicReference": + t2.__isUsingHackPipeline = true; + break; + case "ExportAllDeclaration": { + let { exported: H } = J; + if (t2.parser === "meriyah" && H && H.type === "Identifier") { + let I = t2.originalText.slice(k(H), f(H)); + (I.startsWith('"') || I.startsWith("'")) && (J.exported = Object.assign(Object.assign({}, J.exported), {}, { type: "Literal", value: J.exported.name, raw: I })); + } + break; + } + } + }), L; + function V(J, H) { + t2.originalText[f(H)] !== ";" && (J.range = [k(J), f(H)]); + } + } + function X(L) { + switch (L.type) { + case "CallExpression": + L.type = "OptionalCallExpression", L.callee = X(L.callee); + break; + case "MemberExpression": + L.type = "OptionalMemberExpression", L.object = X(L.object); + break; + case "TSNonNullExpression": + L.expression = X(L.expression); + break; + } + return L; + } + function p(L) { + return L.type === "LogicalExpression" && L.right.type === "LogicalExpression" && L.operator === L.right.operator; + } + function Z(L) { + return p(L) ? Z({ type: "LogicalExpression", operator: L.operator, left: Z({ type: "LogicalExpression", operator: L.operator, left: L.left, right: L.right.left, range: [k(L.left), f(L.right.left)] }), right: L.right.right, range: [k(L), f(L)] }) : L; + } + m.exports = Y; + } }), g3 = l2({ "node_modules/meriyah/dist/meriyah.cjs"(d) { + "use strict"; + n2(), Object.defineProperty(d, "__esModule", { value: true }); + var m = { [0]: "Unexpected token", [28]: "Unexpected token: '%0'", [1]: "Octal escape sequences are not allowed in strict mode", [2]: "Octal escape sequences are not allowed in template strings", [3]: "Unexpected token `#`", [4]: "Illegal Unicode escape sequence", [5]: "Invalid code point %0", [6]: "Invalid hexadecimal escape sequence", [8]: "Octal literals are not allowed in strict mode", [7]: "Decimal integer literals with a leading zero are forbidden in strict mode", [9]: "Expected number in radix %0", [145]: "Invalid left-hand side assignment to a destructible right-hand side", [10]: "Non-number found after exponent indicator", [11]: "Invalid BigIntLiteral", [12]: "No identifiers allowed directly after numeric literal", [13]: "Escapes \\8 or \\9 are not syntactically valid escapes", [14]: "Unterminated string literal", [15]: "Unterminated template literal", [16]: "Multiline comment was not closed properly", [17]: "The identifier contained dynamic unicode escape that was not closed", [18]: "Illegal character '%0'", [19]: "Missing hexadecimal digits", [20]: "Invalid implicit octal", [21]: "Invalid line break in string literal", [22]: "Only unicode escapes are legal in identifier names", [23]: "Expected '%0'", [24]: "Invalid left-hand side in assignment", [25]: "Invalid left-hand side in async arrow", [26]: 'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass', [27]: "Member access on super must be in a method", [29]: "Await expression not allowed in formal parameter", [30]: "Yield expression not allowed in formal parameter", [92]: "Unexpected token: 'escaped keyword'", [31]: "Unary expressions as the left operand of an exponentiation expression must be disambiguated with parentheses", [119]: "Async functions can only be declared at the top level or inside a block", [32]: "Unterminated regular expression", [33]: "Unexpected regular expression flag", [34]: "Duplicate regular expression flag '%0'", [35]: "%0 functions must have exactly %1 argument%2", [36]: "Setter function argument must not be a rest parameter", [37]: "%0 declaration must have a name in this context", [38]: "Function name may not contain any reserved words or be eval or arguments in strict mode", [39]: "The rest operator is missing an argument", [40]: "A getter cannot be a generator", [41]: "A computed property name must be followed by a colon or paren", [130]: "Object literal keys that are strings or numbers must be a method or have a colon", [43]: "Found `* async x(){}` but this should be `async * x(){}`", [42]: "Getters and setters can not be generators", [44]: "'%0' can not be generator method", [45]: "No line break is allowed after '=>'", [46]: "The left-hand side of the arrow can only be destructed through assignment", [47]: "The binding declaration is not destructible", [48]: "Async arrow can not be followed by new expression", [49]: "Classes may not have a static property named 'prototype'", [50]: "Class constructor may not be a %0", [51]: "Duplicate constructor method in class", [52]: "Invalid increment/decrement operand", [53]: "Invalid use of `new` keyword on an increment/decrement expression", [54]: "`=>` is an invalid assignment target", [55]: "Rest element may not have a trailing comma", [56]: "Missing initializer in %0 declaration", [57]: "'for-%0' loop head declarations can not have an initializer", [58]: "Invalid left-hand side in for-%0 loop: Must have a single binding", [59]: "Invalid shorthand property initializer", [60]: "Property name __proto__ appears more than once in object literal", [61]: "Let is disallowed as a lexically bound name", [62]: "Invalid use of '%0' inside new expression", [63]: "Illegal 'use strict' directive in function with non-simple parameter list", [64]: 'Identifier "let" disallowed as left-hand side expression in strict mode', [65]: "Illegal continue statement", [66]: "Illegal break statement", [67]: "Cannot have `let[...]` as a var name in strict mode", [68]: "Invalid destructuring assignment target", [69]: "Rest parameter may not have a default initializer", [70]: "The rest argument must the be last parameter", [71]: "Invalid rest argument", [73]: "In strict mode code, functions can only be declared at top level or inside a block", [74]: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement", [75]: "Without web compatibility enabled functions can not be declared at top level, inside a block, or as the body of an if statement", [76]: "Class declaration can't appear in single-statement context", [77]: "Invalid left-hand side in for-%0", [78]: "Invalid assignment in for-%0", [79]: "for await (... of ...) is only valid in async functions and async generators", [80]: "The first token after the template expression should be a continuation of the template", [82]: "`let` declaration not allowed here and `let` cannot be a regular var name in strict mode", [81]: "`let \n [` is a restricted production at the start of a statement", [83]: "Catch clause requires exactly one parameter, not more (and no trailing comma)", [84]: "Catch clause parameter does not support default values", [85]: "Missing catch or finally after try", [86]: "More than one default clause in switch statement", [87]: "Illegal newline after throw", [88]: "Strict mode code may not include a with statement", [89]: "Illegal return statement", [90]: "The left hand side of the for-header binding declaration is not destructible", [91]: "new.target only allowed within functions", [93]: "'#' not followed by identifier", [99]: "Invalid keyword", [98]: "Can not use 'let' as a class name", [97]: "'A lexical declaration can't define a 'let' binding", [96]: "Can not use `let` as variable name in strict mode", [94]: "'%0' may not be used as an identifier in this context", [95]: "Await is only valid in async functions", [100]: "The %0 keyword can only be used with the module goal", [101]: "Unicode codepoint must not be greater than 0x10FFFF", [102]: "%0 source must be string", [103]: "Only a identifier can be used to indicate alias", [104]: "Only '*' or '{...}' can be imported after default", [105]: "Trailing decorator may be followed by method", [106]: "Decorators can't be used with a constructor", [108]: "HTML comments are only allowed with web compatibility (Annex B)", [109]: "The identifier 'let' must not be in expression position in strict mode", [110]: "Cannot assign to `eval` and `arguments` in strict mode", [111]: "The left-hand side of a for-of loop may not start with 'let'", [112]: "Block body arrows can not be immediately invoked without a group", [113]: "Block body arrows can not be immediately accessed without a group", [114]: "Unexpected strict mode reserved word", [115]: "Unexpected eval or arguments in strict mode", [116]: "Decorators must not be followed by a semicolon", [117]: "Calling delete on expression not allowed in strict mode", [118]: "Pattern can not have a tail", [120]: "Can not have a `yield` expression on the left side of a ternary", [121]: "An arrow function can not have a postfix update operator", [122]: "Invalid object literal key character after generator star", [123]: "Private fields can not be deleted", [125]: "Classes may not have a field called constructor", [124]: "Classes may not have a private element named constructor", [126]: "A class field initializer may not contain arguments", [127]: "Generators can only be declared at the top level or inside a block", [128]: "Async methods are a restricted production and cannot have a newline following it", [129]: "Unexpected character after object literal property name", [131]: "Invalid key token", [132]: "Label '%0' has already been declared", [133]: "continue statement must be nested within an iteration statement", [134]: "Undefined label '%0'", [135]: "Trailing comma is disallowed inside import(...) arguments", [136]: "import() requires exactly one argument", [137]: "Cannot use new with import(...)", [138]: "... is not allowed in import()", [139]: "Expected '=>'", [140]: "Duplicate binding '%0'", [141]: "Cannot export a duplicate name '%0'", [144]: "Duplicate %0 for-binding", [142]: "Exported binding '%0' needs to refer to a top-level declared variable", [143]: "Unexpected private field", [147]: "Numeric separators are not allowed at the end of numeric literals", [146]: "Only one underscore is allowed as numeric separator", [148]: "JSX value should be either an expression or a quoted JSX text", [149]: "Expected corresponding JSX closing tag for %0", [150]: "Adjacent JSX elements must be wrapped in an enclosing tag", [151]: "JSX attributes must only be assigned a non-empty 'expression'", [152]: "'%0' has already been declared", [153]: "'%0' shadowed a catch clause binding", [154]: "Dot property must be an identifier", [155]: "Encountered invalid input after spread/rest argument", [156]: "Catch without try", [157]: "Finally without try", [158]: "Expected corresponding closing tag for JSX fragment", [159]: "Coalescing and logical operators used together in the same expression must be disambiguated with parentheses", [160]: "Invalid tagged template on optional chain", [161]: "Invalid optional chain from super property", [162]: "Invalid optional chain from new expression", [163]: 'Cannot use "import.meta" outside a module', [164]: "Leading decorators must be attached to a class declaration" }, k = class extends SyntaxError { + constructor(u, e, i, n) { + for (var t = arguments.length, o = new Array(t > 4 ? t - 4 : 0), l = 4; l < t; l++) + o[l - 4] = arguments[l]; + let c = "[" + e + ":" + i + "]: " + m[n].replace(/%(\d+)/g, (s, h) => o[h]); + super("".concat(c)), this.index = u, this.line = e, this.column = i, this.description = c, this.loc = { line: e, column: i }; + } + }; + function f(u, e) { + for (var i = arguments.length, n = new Array(i > 2 ? i - 2 : 0), t = 2; t < i; t++) + n[t - 2] = arguments[t]; + throw new k(u.index, u.line, u.column, e, ...n); + } + function P(u) { + throw new k(u.index, u.line, u.column, u.type, u.params); + } + function S(u, e, i, n) { + for (var t = arguments.length, o = new Array(t > 4 ? t - 4 : 0), l = 4; l < t; l++) + o[l - 4] = arguments[l]; + throw new k(u, e, i, n, ...o); + } + function q(u, e, i, n) { + throw new k(u, e, i, n); + } + var T = ((u, e) => { + let i = new Uint32Array(104448), n = 0, t = 0; + for (; n < 3540; ) { + let o = u[n++]; + if (o < 0) + t -= o; + else { + let l = u[n++]; + o & 2 && (l = e[l]), o & 1 ? i.fill(l, t, t += u[n++]) : i[t++] = l; + } + } + return i; + })([-1, 2, 24, 2, 25, 2, 5, -1, 0, 77595648, 3, 44, 2, 3, 0, 14, 2, 57, 2, 58, 3, 0, 3, 0, 3168796671, 0, 4294956992, 2, 1, 2, 0, 2, 59, 3, 0, 4, 0, 4294966523, 3, 0, 4, 2, 16, 2, 60, 2, 0, 0, 4294836735, 0, 3221225471, 0, 4294901942, 2, 61, 0, 134152192, 3, 0, 2, 0, 4294951935, 3, 0, 2, 0, 2683305983, 0, 2684354047, 2, 17, 2, 0, 0, 4294961151, 3, 0, 2, 2, 19, 2, 0, 0, 608174079, 2, 0, 2, 131, 2, 6, 2, 56, -1, 2, 37, 0, 4294443263, 2, 1, 3, 0, 3, 0, 4294901711, 2, 39, 0, 4089839103, 0, 2961209759, 0, 1342439375, 0, 4294543342, 0, 3547201023, 0, 1577204103, 0, 4194240, 0, 4294688750, 2, 2, 0, 80831, 0, 4261478351, 0, 4294549486, 2, 2, 0, 2967484831, 0, 196559, 0, 3594373100, 0, 3288319768, 0, 8469959, 2, 194, 2, 3, 0, 3825204735, 0, 123747807, 0, 65487, 0, 4294828015, 0, 4092591615, 0, 1080049119, 0, 458703, 2, 3, 2, 0, 0, 2163244511, 0, 4227923919, 0, 4236247022, 2, 66, 0, 4284449919, 0, 851904, 2, 4, 2, 11, 0, 67076095, -1, 2, 67, 0, 1073741743, 0, 4093591391, -1, 0, 50331649, 0, 3265266687, 2, 32, 0, 4294844415, 0, 4278190047, 2, 18, 2, 129, -1, 3, 0, 2, 2, 21, 2, 0, 2, 9, 2, 0, 2, 14, 2, 15, 3, 0, 10, 2, 69, 2, 0, 2, 70, 2, 71, 2, 72, 2, 0, 2, 73, 2, 0, 2, 10, 0, 261632, 2, 23, 3, 0, 2, 2, 12, 2, 4, 3, 0, 18, 2, 74, 2, 5, 3, 0, 2, 2, 75, 0, 2088959, 2, 27, 2, 8, 0, 909311, 3, 0, 2, 0, 814743551, 2, 41, 0, 67057664, 3, 0, 2, 2, 40, 2, 0, 2, 28, 2, 0, 2, 29, 2, 7, 0, 268374015, 2, 26, 2, 49, 2, 0, 2, 76, 0, 134153215, -1, 2, 6, 2, 0, 2, 7, 0, 2684354559, 0, 67044351, 0, 3221160064, 0, 1, -1, 3, 0, 2, 2, 42, 0, 1046528, 3, 0, 3, 2, 8, 2, 0, 2, 51, 0, 4294960127, 2, 9, 2, 38, 2, 10, 0, 4294377472, 2, 11, 3, 0, 7, 0, 4227858431, 3, 0, 8, 2, 12, 2, 0, 2, 78, 2, 9, 2, 0, 2, 79, 2, 80, 2, 81, -1, 2, 124, 0, 1048577, 2, 82, 2, 13, -1, 2, 13, 0, 131042, 2, 83, 2, 84, 2, 85, 2, 0, 2, 33, -83, 2, 0, 2, 53, 2, 7, 3, 0, 4, 0, 1046559, 2, 0, 2, 14, 2, 0, 0, 2147516671, 2, 20, 3, 86, 2, 2, 0, -16, 2, 87, 0, 524222462, 2, 4, 2, 0, 0, 4269801471, 2, 4, 2, 0, 2, 15, 2, 77, 2, 16, 3, 0, 2, 2, 47, 2, 0, -1, 2, 17, -16, 3, 0, 206, -2, 3, 0, 655, 2, 18, 3, 0, 36, 2, 68, -1, 2, 17, 2, 9, 3, 0, 8, 2, 89, 2, 121, 2, 0, 0, 3220242431, 3, 0, 3, 2, 19, 2, 90, 2, 91, 3, 0, 2, 2, 92, 2, 0, 2, 93, 2, 94, 2, 0, 0, 4351, 2, 0, 2, 8, 3, 0, 2, 0, 67043391, 0, 3909091327, 2, 0, 2, 22, 2, 8, 2, 18, 3, 0, 2, 0, 67076097, 2, 7, 2, 0, 2, 20, 0, 67059711, 0, 4236247039, 3, 0, 2, 0, 939524103, 0, 8191999, 2, 97, 2, 98, 2, 15, 2, 21, 3, 0, 3, 0, 67057663, 3, 0, 349, 2, 99, 2, 100, 2, 6, -264, 3, 0, 11, 2, 22, 3, 0, 2, 2, 31, -1, 0, 3774349439, 2, 101, 2, 102, 3, 0, 2, 2, 19, 2, 103, 3, 0, 10, 2, 9, 2, 17, 2, 0, 2, 45, 2, 0, 2, 30, 2, 104, 2, 23, 0, 1638399, 2, 172, 2, 105, 3, 0, 3, 2, 18, 2, 24, 2, 25, 2, 5, 2, 26, 2, 0, 2, 7, 2, 106, -1, 2, 107, 2, 108, 2, 109, -1, 3, 0, 3, 2, 11, -2, 2, 0, 2, 27, -3, 2, 150, -4, 2, 18, 2, 0, 2, 35, 0, 1, 2, 0, 2, 62, 2, 28, 2, 11, 2, 9, 2, 0, 2, 110, -1, 3, 0, 4, 2, 9, 2, 21, 2, 111, 2, 6, 2, 0, 2, 112, 2, 0, 2, 48, -4, 3, 0, 9, 2, 20, 2, 29, 2, 30, -4, 2, 113, 2, 114, 2, 29, 2, 20, 2, 7, -2, 2, 115, 2, 29, 2, 31, -2, 2, 0, 2, 116, -2, 0, 4277137519, 0, 2269118463, -1, 3, 18, 2, -1, 2, 32, 2, 36, 2, 0, 3, 29, 2, 2, 34, 2, 19, -3, 3, 0, 2, 2, 33, -1, 2, 0, 2, 34, 2, 0, 2, 34, 2, 0, 2, 46, -10, 2, 0, 0, 203775, -2, 2, 18, 2, 43, 2, 35, -2, 2, 17, 2, 117, 2, 20, 3, 0, 2, 2, 36, 0, 2147549120, 2, 0, 2, 11, 2, 17, 2, 135, 2, 0, 2, 37, 2, 52, 0, 5242879, 3, 0, 2, 0, 402644511, -1, 2, 120, 0, 1090519039, -2, 2, 122, 2, 38, 2, 0, 0, 67045375, 2, 39, 0, 4226678271, 0, 3766565279, 0, 2039759, -4, 3, 0, 2, 0, 3288270847, 0, 3, 3, 0, 2, 0, 67043519, -5, 2, 0, 0, 4282384383, 0, 1056964609, -1, 3, 0, 2, 0, 67043345, -1, 2, 0, 2, 40, 2, 41, -1, 2, 10, 2, 42, -6, 2, 0, 2, 11, -3, 3, 0, 2, 0, 2147484671, 2, 125, 0, 4190109695, 2, 50, -2, 2, 126, 0, 4244635647, 0, 27, 2, 0, 2, 7, 2, 43, 2, 0, 2, 63, -1, 2, 0, 2, 40, -8, 2, 54, 2, 44, 0, 67043329, 2, 127, 2, 45, 0, 8388351, -2, 2, 128, 0, 3028287487, 2, 46, 2, 130, 0, 33259519, 2, 41, -9, 2, 20, -5, 2, 64, -2, 3, 0, 28, 2, 31, -3, 3, 0, 3, 2, 47, 3, 0, 6, 2, 48, -85, 3, 0, 33, 2, 47, -126, 3, 0, 18, 2, 36, -269, 3, 0, 17, 2, 40, 2, 7, 2, 41, -2, 2, 17, 2, 49, 2, 0, 2, 20, 2, 50, 2, 132, 2, 23, -21, 3, 0, 2, -4, 3, 0, 2, 0, 4294936575, 2, 0, 0, 4294934783, -2, 0, 196635, 3, 0, 191, 2, 51, 3, 0, 38, 2, 29, -1, 2, 33, -279, 3, 0, 8, 2, 7, -1, 2, 133, 2, 52, 3, 0, 11, 2, 6, -72, 3, 0, 3, 2, 134, 0, 1677656575, -166, 0, 4161266656, 0, 4071, 0, 15360, -4, 0, 28, -13, 3, 0, 2, 2, 37, 2, 0, 2, 136, 2, 137, 2, 55, 2, 0, 2, 138, 2, 139, 2, 140, 3, 0, 10, 2, 141, 2, 142, 2, 15, 3, 37, 2, 3, 53, 2, 3, 54, 2, 0, 4294954999, 2, 0, -16, 2, 0, 2, 88, 2, 0, 0, 2105343, 0, 4160749584, 0, 65534, -42, 0, 4194303871, 0, 2011, -6, 2, 0, 0, 1073684479, 0, 17407, -11, 2, 0, 2, 31, -40, 3, 0, 6, 0, 8323103, -1, 3, 0, 2, 2, 42, -37, 2, 55, 2, 144, 2, 145, 2, 146, 2, 147, 2, 148, -105, 2, 24, -32, 3, 0, 1334, 2, 9, -1, 3, 0, 129, 2, 27, 3, 0, 6, 2, 9, 3, 0, 180, 2, 149, 3, 0, 233, 0, 1, -96, 3, 0, 16, 2, 9, -47, 3, 0, 154, 2, 56, -22381, 3, 0, 7, 2, 23, -6130, 3, 5, 2, -1, 0, 69207040, 3, 44, 2, 3, 0, 14, 2, 57, 2, 58, -3, 0, 3168731136, 0, 4294956864, 2, 1, 2, 0, 2, 59, 3, 0, 4, 0, 4294966275, 3, 0, 4, 2, 16, 2, 60, 2, 0, 2, 33, -1, 2, 17, 2, 61, -1, 2, 0, 2, 56, 0, 4294885376, 3, 0, 2, 0, 3145727, 0, 2617294944, 0, 4294770688, 2, 23, 2, 62, 3, 0, 2, 0, 131135, 2, 95, 0, 70256639, 0, 71303167, 0, 272, 2, 40, 2, 56, -1, 2, 37, 2, 30, -1, 2, 96, 2, 63, 0, 4278255616, 0, 4294836227, 0, 4294549473, 0, 600178175, 0, 2952806400, 0, 268632067, 0, 4294543328, 0, 57540095, 0, 1577058304, 0, 1835008, 0, 4294688736, 2, 65, 2, 64, 0, 33554435, 2, 123, 2, 65, 2, 151, 0, 131075, 0, 3594373096, 0, 67094296, 2, 64, -1, 0, 4294828e3, 0, 603979263, 2, 160, 0, 3, 0, 4294828001, 0, 602930687, 2, 183, 0, 393219, 0, 4294828016, 0, 671088639, 0, 2154840064, 0, 4227858435, 0, 4236247008, 2, 66, 2, 36, -1, 2, 4, 0, 917503, 2, 36, -1, 2, 67, 0, 537788335, 0, 4026531935, -1, 0, 1, -1, 2, 32, 2, 68, 0, 7936, -3, 2, 0, 0, 2147485695, 0, 1010761728, 0, 4292984930, 0, 16387, 2, 0, 2, 14, 2, 15, 3, 0, 10, 2, 69, 2, 0, 2, 70, 2, 71, 2, 72, 2, 0, 2, 73, 2, 0, 2, 11, -1, 2, 23, 3, 0, 2, 2, 12, 2, 4, 3, 0, 18, 2, 74, 2, 5, 3, 0, 2, 2, 75, 0, 253951, 3, 19, 2, 0, 122879, 2, 0, 2, 8, 0, 276824064, -2, 3, 0, 2, 2, 40, 2, 0, 0, 4294903295, 2, 0, 2, 29, 2, 7, -1, 2, 17, 2, 49, 2, 0, 2, 76, 2, 41, -1, 2, 20, 2, 0, 2, 27, -2, 0, 128, -2, 2, 77, 2, 8, 0, 4064, -1, 2, 119, 0, 4227907585, 2, 0, 2, 118, 2, 0, 2, 48, 2, 173, 2, 9, 2, 38, 2, 10, -1, 0, 74440192, 3, 0, 6, -2, 3, 0, 8, 2, 12, 2, 0, 2, 78, 2, 9, 2, 0, 2, 79, 2, 80, 2, 81, -3, 2, 82, 2, 13, -3, 2, 83, 2, 84, 2, 85, 2, 0, 2, 33, -83, 2, 0, 2, 53, 2, 7, 3, 0, 4, 0, 817183, 2, 0, 2, 14, 2, 0, 0, 33023, 2, 20, 3, 86, 2, -17, 2, 87, 0, 524157950, 2, 4, 2, 0, 2, 88, 2, 4, 2, 0, 2, 15, 2, 77, 2, 16, 3, 0, 2, 2, 47, 2, 0, -1, 2, 17, -16, 3, 0, 206, -2, 3, 0, 655, 2, 18, 3, 0, 36, 2, 68, -1, 2, 17, 2, 9, 3, 0, 8, 2, 89, 0, 3072, 2, 0, 0, 2147516415, 2, 9, 3, 0, 2, 2, 23, 2, 90, 2, 91, 3, 0, 2, 2, 92, 2, 0, 2, 93, 2, 94, 0, 4294965179, 0, 7, 2, 0, 2, 8, 2, 91, 2, 8, -1, 0, 1761345536, 2, 95, 0, 4294901823, 2, 36, 2, 18, 2, 96, 2, 34, 2, 166, 0, 2080440287, 2, 0, 2, 33, 2, 143, 0, 3296722943, 2, 0, 0, 1046675455, 0, 939524101, 0, 1837055, 2, 97, 2, 98, 2, 15, 2, 21, 3, 0, 3, 0, 7, 3, 0, 349, 2, 99, 2, 100, 2, 6, -264, 3, 0, 11, 2, 22, 3, 0, 2, 2, 31, -1, 0, 2700607615, 2, 101, 2, 102, 3, 0, 2, 2, 19, 2, 103, 3, 0, 10, 2, 9, 2, 17, 2, 0, 2, 45, 2, 0, 2, 30, 2, 104, -3, 2, 105, 3, 0, 3, 2, 18, -1, 3, 5, 2, 2, 26, 2, 0, 2, 7, 2, 106, -1, 2, 107, 2, 108, 2, 109, -1, 3, 0, 3, 2, 11, -2, 2, 0, 2, 27, -8, 2, 18, 2, 0, 2, 35, -1, 2, 0, 2, 62, 2, 28, 2, 29, 2, 9, 2, 0, 2, 110, -1, 3, 0, 4, 2, 9, 2, 17, 2, 111, 2, 6, 2, 0, 2, 112, 2, 0, 2, 48, -4, 3, 0, 9, 2, 20, 2, 29, 2, 30, -4, 2, 113, 2, 114, 2, 29, 2, 20, 2, 7, -2, 2, 115, 2, 29, 2, 31, -2, 2, 0, 2, 116, -2, 0, 4277075969, 2, 29, -1, 3, 18, 2, -1, 2, 32, 2, 117, 2, 0, 3, 29, 2, 2, 34, 2, 19, -3, 3, 0, 2, 2, 33, -1, 2, 0, 2, 34, 2, 0, 2, 34, 2, 0, 2, 48, -10, 2, 0, 0, 197631, -2, 2, 18, 2, 43, 2, 118, -2, 2, 17, 2, 117, 2, 20, 2, 119, 2, 51, -2, 2, 119, 2, 23, 2, 17, 2, 33, 2, 119, 2, 36, 0, 4294901904, 0, 4718591, 2, 119, 2, 34, 0, 335544350, -1, 2, 120, 2, 121, -2, 2, 122, 2, 38, 2, 7, -1, 2, 123, 2, 65, 0, 3758161920, 0, 3, -4, 2, 0, 2, 27, 0, 2147485568, 0, 3, 2, 0, 2, 23, 0, 176, -5, 2, 0, 2, 47, 2, 186, -1, 2, 0, 2, 23, 2, 197, -1, 2, 0, 0, 16779263, -2, 2, 11, -7, 2, 0, 2, 121, -3, 3, 0, 2, 2, 124, 2, 125, 0, 2147549183, 0, 2, -2, 2, 126, 2, 35, 0, 10, 0, 4294965249, 0, 67633151, 0, 4026597376, 2, 0, 0, 536871935, -1, 2, 0, 2, 40, -8, 2, 54, 2, 47, 0, 1, 2, 127, 2, 23, -3, 2, 128, 2, 35, 2, 129, 2, 130, 0, 16778239, -10, 2, 34, -5, 2, 64, -2, 3, 0, 28, 2, 31, -3, 3, 0, 3, 2, 47, 3, 0, 6, 2, 48, -85, 3, 0, 33, 2, 47, -126, 3, 0, 18, 2, 36, -269, 3, 0, 17, 2, 40, 2, 7, -3, 2, 17, 2, 131, 2, 0, 2, 23, 2, 48, 2, 132, 2, 23, -21, 3, 0, 2, -4, 3, 0, 2, 0, 67583, -1, 2, 103, -2, 0, 11, 3, 0, 191, 2, 51, 3, 0, 38, 2, 29, -1, 2, 33, -279, 3, 0, 8, 2, 7, -1, 2, 133, 2, 52, 3, 0, 11, 2, 6, -72, 3, 0, 3, 2, 134, 2, 135, -187, 3, 0, 2, 2, 37, 2, 0, 2, 136, 2, 137, 2, 55, 2, 0, 2, 138, 2, 139, 2, 140, 3, 0, 10, 2, 141, 2, 142, 2, 15, 3, 37, 2, 3, 53, 2, 3, 54, 2, 2, 143, -73, 2, 0, 0, 1065361407, 0, 16384, -11, 2, 0, 2, 121, -40, 3, 0, 6, 2, 117, -1, 3, 0, 2, 0, 2063, -37, 2, 55, 2, 144, 2, 145, 2, 146, 2, 147, 2, 148, -138, 3, 0, 1334, 2, 9, -1, 3, 0, 129, 2, 27, 3, 0, 6, 2, 9, 3, 0, 180, 2, 149, 3, 0, 233, 0, 1, -96, 3, 0, 16, 2, 9, -47, 3, 0, 154, 2, 56, -28517, 2, 0, 0, 1, -1, 2, 124, 2, 0, 0, 8193, -21, 2, 193, 0, 10255, 0, 4, -11, 2, 64, 2, 171, -1, 0, 71680, -1, 2, 161, 0, 4292900864, 0, 805306431, -5, 2, 150, -1, 2, 157, -1, 0, 6144, -2, 2, 127, -1, 2, 154, -1, 0, 2147532800, 2, 151, 2, 165, 2, 0, 2, 164, 0, 524032, 0, 4, -4, 2, 190, 0, 205128192, 0, 1333757536, 0, 2147483696, 0, 423953, 0, 747766272, 0, 2717763192, 0, 4286578751, 0, 278545, 2, 152, 0, 4294886464, 0, 33292336, 0, 417809, 2, 152, 0, 1327482464, 0, 4278190128, 0, 700594195, 0, 1006647527, 0, 4286497336, 0, 4160749631, 2, 153, 0, 469762560, 0, 4171219488, 0, 8323120, 2, 153, 0, 202375680, 0, 3214918176, 0, 4294508592, 2, 153, -1, 0, 983584, 0, 48, 0, 58720273, 0, 3489923072, 0, 10517376, 0, 4293066815, 0, 1, 0, 2013265920, 2, 177, 2, 0, 0, 2089, 0, 3221225552, 0, 201375904, 2, 0, -2, 0, 256, 0, 122880, 0, 16777216, 2, 150, 0, 4160757760, 2, 0, -6, 2, 167, -11, 0, 3263218176, -1, 0, 49664, 0, 2160197632, 0, 8388802, -1, 0, 12713984, -1, 2, 154, 2, 159, 2, 178, -2, 2, 162, -20, 0, 3758096385, -2, 2, 155, 0, 4292878336, 2, 90, 2, 169, 0, 4294057984, -2, 2, 163, 2, 156, 2, 175, -2, 2, 155, -1, 2, 182, -1, 2, 170, 2, 124, 0, 4026593280, 0, 14, 0, 4292919296, -1, 2, 158, 0, 939588608, -1, 0, 805306368, -1, 2, 124, 0, 1610612736, 2, 156, 2, 157, 2, 4, 2, 0, -2, 2, 158, 2, 159, -3, 0, 267386880, -1, 2, 160, 0, 7168, -1, 0, 65024, 2, 154, 2, 161, 2, 179, -7, 2, 168, -8, 2, 162, -1, 0, 1426112704, 2, 163, -1, 2, 164, 0, 271581216, 0, 2149777408, 2, 23, 2, 161, 2, 124, 0, 851967, 2, 180, -1, 2, 23, 2, 181, -4, 2, 158, -20, 2, 195, 2, 165, -56, 0, 3145728, 2, 185, -4, 2, 166, 2, 124, -4, 0, 32505856, -1, 2, 167, -1, 0, 2147385088, 2, 90, 1, 2155905152, 2, -3, 2, 103, 2, 0, 2, 168, -2, 2, 169, -6, 2, 170, 0, 4026597375, 0, 1, -1, 0, 1, -1, 2, 171, -3, 2, 117, 2, 64, -2, 2, 166, -2, 2, 176, 2, 124, -878, 2, 159, -36, 2, 172, -1, 2, 201, -10, 2, 188, -5, 2, 174, -6, 0, 4294965251, 2, 27, -1, 2, 173, -1, 2, 174, -2, 0, 4227874752, -3, 0, 2146435072, 2, 159, -2, 0, 1006649344, 2, 124, -1, 2, 90, 0, 201375744, -3, 0, 134217720, 2, 90, 0, 4286677377, 0, 32896, -1, 2, 158, -3, 2, 175, -349, 2, 176, 0, 1920, 2, 177, 3, 0, 264, -11, 2, 157, -2, 2, 178, 2, 0, 0, 520617856, 0, 2692743168, 0, 36, -3, 0, 524284, -11, 2, 23, -1, 2, 187, -1, 2, 184, 0, 3221291007, 2, 178, -1, 2, 202, 0, 2158720, -3, 2, 159, 0, 1, -4, 2, 124, 0, 3808625411, 0, 3489628288, 2, 200, 0, 1207959680, 0, 3221274624, 2, 0, -3, 2, 179, 0, 120, 0, 7340032, -2, 2, 180, 2, 4, 2, 23, 2, 163, 3, 0, 4, 2, 159, -1, 2, 181, 2, 177, -1, 0, 8176, 2, 182, 2, 179, 2, 183, -1, 0, 4290773232, 2, 0, -4, 2, 163, 2, 189, 0, 15728640, 2, 177, -1, 2, 161, -1, 0, 4294934512, 3, 0, 4, -9, 2, 90, 2, 170, 2, 184, 3, 0, 4, 0, 704, 0, 1849688064, 2, 185, -1, 2, 124, 0, 4294901887, 2, 0, 0, 130547712, 0, 1879048192, 2, 199, 3, 0, 2, -1, 2, 186, 2, 187, -1, 0, 17829776, 0, 2025848832, 0, 4261477888, -2, 2, 0, -1, 0, 4286580608, -1, 0, 29360128, 2, 192, 0, 16252928, 0, 3791388672, 2, 38, 3, 0, 2, -2, 2, 196, 2, 0, -1, 2, 103, -1, 0, 66584576, -1, 2, 191, 3, 0, 9, 2, 124, -1, 0, 4294755328, 3, 0, 2, -1, 2, 161, 2, 178, 3, 0, 2, 2, 23, 2, 188, 2, 90, -2, 0, 245760, 0, 2147418112, -1, 2, 150, 2, 203, 0, 4227923456, -1, 2, 164, 2, 161, 2, 90, -3, 0, 4292870145, 0, 262144, 2, 124, 3, 0, 2, 0, 1073758848, 2, 189, -1, 0, 4227921920, 2, 190, 0, 68289024, 0, 528402016, 0, 4292927536, 3, 0, 4, -2, 0, 268435456, 2, 91, -2, 2, 191, 3, 0, 5, -1, 2, 192, 2, 163, 2, 0, -2, 0, 4227923936, 2, 62, -1, 2, 155, 2, 95, 2, 0, 2, 154, 2, 158, 3, 0, 6, -1, 2, 177, 3, 0, 3, -2, 0, 2146959360, 0, 9440640, 0, 104857600, 0, 4227923840, 3, 0, 2, 0, 768, 2, 193, 2, 77, -2, 2, 161, -2, 2, 119, -1, 2, 155, 3, 0, 8, 0, 512, 0, 8388608, 2, 194, 2, 172, 2, 187, 0, 4286578944, 3, 0, 2, 0, 1152, 0, 1266679808, 2, 191, 0, 576, 0, 4261707776, 2, 95, 3, 0, 9, 2, 155, 3, 0, 5, 2, 16, -1, 0, 2147221504, -28, 2, 178, 3, 0, 3, -3, 0, 4292902912, -6, 2, 96, 3, 0, 85, -33, 0, 4294934528, 3, 0, 126, -18, 2, 195, 3, 0, 269, -17, 2, 155, 2, 124, 2, 198, 3, 0, 2, 2, 23, 0, 4290822144, -2, 0, 67174336, 0, 520093700, 2, 17, 3, 0, 21, -2, 2, 179, 3, 0, 3, -2, 0, 30720, -1, 0, 32512, 3, 0, 2, 0, 4294770656, -191, 2, 174, -38, 2, 170, 2, 0, 2, 196, 3, 0, 279, -8, 2, 124, 2, 0, 0, 4294508543, 0, 65295, -11, 2, 177, 3, 0, 72, -3, 0, 3758159872, 0, 201391616, 3, 0, 155, -7, 2, 170, -1, 0, 384, -1, 0, 133693440, -3, 2, 196, -2, 2, 26, 3, 0, 4, 2, 169, -2, 2, 90, 2, 155, 3, 0, 4, -2, 2, 164, -1, 2, 150, 0, 335552923, 2, 197, -1, 0, 538974272, 0, 2214592512, 0, 132e3, -10, 0, 192, -8, 0, 12288, -21, 0, 134213632, 0, 4294901761, 3, 0, 42, 0, 100663424, 0, 4294965284, 3, 0, 6, -1, 0, 3221282816, 2, 198, 3, 0, 11, -1, 2, 199, 3, 0, 40, -6, 0, 4286578784, 2, 0, -2, 0, 1006694400, 3, 0, 24, 2, 35, -1, 2, 94, 3, 0, 2, 0, 1, 2, 163, 3, 0, 6, 2, 197, 0, 4110942569, 0, 1432950139, 0, 2701658217, 0, 4026532864, 0, 4026532881, 2, 0, 2, 45, 3, 0, 8, -1, 2, 158, -2, 2, 169, 0, 98304, 0, 65537, 2, 170, -5, 0, 4294950912, 2, 0, 2, 118, 0, 65528, 2, 177, 0, 4294770176, 2, 26, 3, 0, 4, -30, 2, 174, 0, 3758153728, -3, 2, 169, -2, 2, 155, 2, 188, 2, 158, -1, 2, 191, -1, 2, 161, 0, 4294754304, 3, 0, 2, -3, 0, 33554432, -2, 2, 200, -3, 2, 169, 0, 4175478784, 2, 201, 0, 4286643712, 0, 4286644216, 2, 0, -4, 2, 202, -1, 2, 165, 0, 4227923967, 3, 0, 32, -1334, 2, 163, 2, 0, -129, 2, 94, -6, 2, 163, -180, 2, 203, -233, 2, 4, 3, 0, 96, -16, 2, 163, 3, 0, 47, -154, 2, 165, 3, 0, 22381, -7, 2, 17, 3, 0, 6128], [4294967295, 4294967291, 4092460543, 4294828031, 4294967294, 134217726, 268435455, 2147483647, 1048575, 1073741823, 3892314111, 134217727, 1061158911, 536805376, 4294910143, 4160749567, 4294901759, 4294901760, 536870911, 262143, 8388607, 4294902783, 4294918143, 65535, 67043328, 2281701374, 4294967232, 2097151, 4294903807, 4194303, 255, 67108863, 4294967039, 511, 524287, 131071, 127, 4292870143, 4294902271, 4294549487, 33554431, 1023, 67047423, 4294901888, 4286578687, 4294770687, 67043583, 32767, 15, 2047999, 67043343, 16777215, 4294902e3, 4294934527, 4294966783, 4294967279, 2047, 262083, 20511, 4290772991, 41943039, 493567, 4294959104, 603979775, 65536, 602799615, 805044223, 4294965206, 8191, 1031749119, 4294917631, 2134769663, 4286578493, 4282253311, 4294942719, 33540095, 4294905855, 4294967264, 2868854591, 1608515583, 265232348, 534519807, 2147614720, 1060109444, 4093640016, 17376, 2139062143, 224, 4169138175, 4294909951, 4286578688, 4294967292, 4294965759, 2044, 4292870144, 4294966272, 4294967280, 8289918, 4294934399, 4294901775, 4294965375, 1602223615, 4294967259, 4294443008, 268369920, 4292804608, 486341884, 4294963199, 3087007615, 1073692671, 4128527, 4279238655, 4294902015, 4294966591, 2445279231, 3670015, 3238002687, 31, 63, 4294967288, 4294705151, 4095, 3221208447, 4294549472, 2147483648, 4285526655, 4294966527, 4294705152, 4294966143, 64, 4294966719, 16383, 3774873592, 458752, 536807423, 67043839, 3758096383, 3959414372, 3755993023, 2080374783, 4294835295, 4294967103, 4160749565, 4087, 184024726, 2862017156, 1593309078, 268434431, 268434414, 4294901763, 536870912, 2952790016, 202506752, 139264, 402653184, 4261412864, 4227922944, 49152, 61440, 3758096384, 117440512, 65280, 3233808384, 3221225472, 2097152, 4294965248, 32768, 57152, 67108864, 4293918720, 4290772992, 25165824, 57344, 4227915776, 4278190080, 4227907584, 65520, 4026531840, 4227858432, 4160749568, 3758129152, 4294836224, 63488, 1073741824, 4294967040, 4194304, 251658240, 196608, 4294963200, 64512, 417808, 4227923712, 12582912, 50331648, 65472, 4294967168, 4294966784, 16, 4294917120, 2080374784, 4096, 65408, 524288, 65532]); + function r(u) { + return u.column++, u.currentChar = u.source.charCodeAt(++u.index); + } + function K(u, e) { + if ((e & 64512) !== 55296) + return 0; + let i = u.source.charCodeAt(u.index + 1); + return (i & 64512) !== 56320 ? 0 : (e = u.currentChar = 65536 + ((e & 1023) << 10) + (i & 1023), (T[(e >>> 5) + 0] >>> e & 31 & 1) === 0 && f(u, 18, Z(e)), u.index++, u.column++, 1); + } + function Y(u, e) { + u.currentChar = u.source.charCodeAt(++u.index), u.flags |= 1, (e & 4) === 0 && (u.column = 0, u.line++); + } + function X(u) { + u.flags |= 1, u.currentChar = u.source.charCodeAt(++u.index), u.column = 0, u.line++; + } + function p(u) { + return u === 160 || u === 65279 || u === 133 || u === 5760 || u >= 8192 && u <= 8203 || u === 8239 || u === 8287 || u === 12288 || u === 8201 || u === 65519; + } + function Z(u) { + return u <= 65535 ? String.fromCharCode(u) : String.fromCharCode(u >>> 10) + String.fromCharCode(u & 1023); + } + function L(u) { + return u < 65 ? u - 48 : u - 65 + 10 & 15; + } + function t2(u) { + switch (u) { + case 134283266: + return "NumericLiteral"; + case 134283267: + return "StringLiteral"; + case 86021: + case 86022: + return "BooleanLiteral"; + case 86023: + return "NullLiteral"; + case 65540: + return "RegularExpression"; + case 67174408: + case 67174409: + case 132: + return "TemplateLiteral"; + default: + return (u & 143360) === 143360 ? "Identifier" : (u & 4096) === 4096 ? "Keyword" : "Punctuator"; + } + } + var V = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1032, 0, 0, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 3, 0, 0, 8192, 0, 0, 0, 256, 0, 33024, 0, 0, 242, 242, 114, 114, 114, 114, 114, 114, 594, 594, 0, 0, 16384, 0, 0, 0, 0, 67, 67, 67, 67, 67, 67, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 4099, 0, 71, 71, 71, 71, 71, 71, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 16384, 0, 0, 0, 0], J = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], H = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]; + function I(u) { + return u <= 127 ? J[u] : T[(u >>> 5) + 34816] >>> u & 31 & 1; + } + function u2(u) { + return u <= 127 ? H[u] : T[(u >>> 5) + 0] >>> u & 31 & 1 || u === 8204 || u === 8205; + } + var m2 = ["SingleLine", "MultiLine", "HTMLOpen", "HTMLClose", "HashbangComment"]; + function c2(u) { + let e = u.source; + u.currentChar === 35 && e.charCodeAt(u.index + 1) === 33 && (r(u), r(u), s2(u, e, 0, 4, u.tokenPos, u.linePos, u.colPos)); + } + function R2(u, e, i, n, t, o, l, c) { + return n & 2048 && f(u, 0), s2(u, e, i, t, o, l, c); + } + function s2(u, e, i, n, t, o, l) { + let { index: c } = u; + for (u.tokenPos = u.index, u.linePos = u.line, u.colPos = u.column; u.index < u.end; ) { + if (V[u.currentChar] & 8) { + let s = u.currentChar === 13; + X(u), s && u.index < u.end && u.currentChar === 10 && (u.currentChar = e.charCodeAt(++u.index)); + break; + } else if ((u.currentChar ^ 8232) <= 1) { + X(u); + break; + } + r(u), u.tokenPos = u.index, u.linePos = u.line, u.colPos = u.column; + } + if (u.onComment) { + let s = { start: { line: o, column: l }, end: { line: u.linePos, column: u.colPos } }; + u.onComment(m2[n & 255], e.slice(c, u.tokenPos), t, u.tokenPos, s); + } + return i | 1; + } + function N2(u, e, i) { + let { index: n } = u; + for (; u.index < u.end; ) + if (u.currentChar < 43) { + let t = false; + for (; u.currentChar === 42; ) + if (t || (i &= -5, t = true), r(u) === 47) { + if (r(u), u.onComment) { + let o = { start: { line: u.linePos, column: u.colPos }, end: { line: u.line, column: u.column } }; + u.onComment(m2[1], e.slice(n, u.index - 2), n - 2, u.index, o); + } + return u.tokenPos = u.index, u.linePos = u.line, u.colPos = u.column, i; + } + if (t) + continue; + V[u.currentChar] & 8 ? u.currentChar === 13 ? (i |= 5, X(u)) : (Y(u, i), i = i & -5 | 1) : r(u); + } else + (u.currentChar ^ 8232) <= 1 ? (i = i & -5 | 1, X(u)) : (i &= -5, r(u)); + f(u, 16); + } + function w2(u, e) { + let i = u.index, n = 0; + u: + for (; ; ) { + let b = u.currentChar; + if (r(u), n & 1) + n &= -2; + else + switch (b) { + case 47: + if (n) + break; + break u; + case 92: + n |= 1; + break; + case 91: + n |= 2; + break; + case 93: + n &= 1; + break; + case 13: + case 10: + case 8232: + case 8233: + f(u, 32); + } + if (u.index >= u.source.length) + return f(u, 32); + } + let t = u.index - 1, o = 0, l = u.currentChar, { index: c } = u; + for (; u2(l); ) { + switch (l) { + case 103: + o & 2 && f(u, 34, "g"), o |= 2; + break; + case 105: + o & 1 && f(u, 34, "i"), o |= 1; + break; + case 109: + o & 4 && f(u, 34, "m"), o |= 4; + break; + case 117: + o & 16 && f(u, 34, "g"), o |= 16; + break; + case 121: + o & 8 && f(u, 34, "y"), o |= 8; + break; + case 115: + o & 32 && f(u, 34, "s"), o |= 32; + break; + default: + f(u, 33); + } + l = r(u); + } + let s = u.source.slice(c, u.index), h = u.source.slice(i, t); + return u.tokenRegExp = { pattern: h, flags: s }, e & 512 && (u.tokenRaw = u.source.slice(u.tokenPos, u.index)), u.tokenValue = O1(u, h, s), 65540; + } + function O1(u, e, i) { + try { + return new RegExp(e, i); + } catch { + f(u, 32); + } + } + function I1(u, e, i) { + let { index: n } = u, t = "", o = r(u), l = u.index; + for (; (V[o] & 8) === 0; ) { + if (o === i) + return t += u.source.slice(l, u.index), r(u), e & 512 && (u.tokenRaw = u.source.slice(n, u.index)), u.tokenValue = t, 134283267; + if ((o & 8) === 8 && o === 92) { + if (t += u.source.slice(l, u.index), o = r(u), o < 127 || o === 8232 || o === 8233) { + let c = g2(u, e, o); + c >= 0 ? t += Z(c) : n1(u, c, 0); + } else + t += Z(o); + l = u.index + 1; + } + u.index >= u.end && f(u, 14), o = r(u); + } + f(u, 14); + } + function g2(u, e, i) { + switch (i) { + case 98: + return 8; + case 102: + return 12; + case 114: + return 13; + case 110: + return 10; + case 116: + return 9; + case 118: + return 11; + case 13: + if (u.index < u.end) { + let n = u.source.charCodeAt(u.index + 1); + n === 10 && (u.index = u.index + 1, u.currentChar = n); + } + case 10: + case 8232: + case 8233: + return u.column = -1, u.line++, -1; + case 48: + case 49: + case 50: + case 51: { + let n = i - 48, t = u.index + 1, o = u.column + 1; + if (t < u.end) { + let l = u.source.charCodeAt(t); + if ((V[l] & 32) === 0) { + if ((n !== 0 || V[l] & 512) && e & 1024) + return -2; + } else { + if (e & 1024) + return -2; + if (u.currentChar = l, n = n << 3 | l - 48, t++, o++, t < u.end) { + let c = u.source.charCodeAt(t); + V[c] & 32 && (u.currentChar = c, n = n << 3 | c - 48, t++, o++); + } + u.flags |= 64, u.index = t - 1, u.column = o - 1; + } + } + return n; + } + case 52: + case 53: + case 54: + case 55: { + if (e & 1024) + return -2; + let n = i - 48, t = u.index + 1, o = u.column + 1; + if (t < u.end) { + let l = u.source.charCodeAt(t); + V[l] & 32 && (n = n << 3 | l - 48, u.currentChar = l, u.index = t, u.column = o); + } + return u.flags |= 64, n; + } + case 120: { + let n = r(u); + if ((V[n] & 64) === 0) + return -4; + let t = L(n), o = r(u); + if ((V[o] & 64) === 0) + return -4; + let l = L(o); + return t << 4 | l; + } + case 117: { + let n = r(u); + if (u.currentChar === 123) { + let t = 0; + for (; (V[r(u)] & 64) !== 0; ) + if (t = t << 4 | L(u.currentChar), t > 1114111) + return -5; + return u.currentChar < 1 || u.currentChar !== 125 ? -4 : t; + } else { + if ((V[n] & 64) === 0) + return -4; + let t = u.source.charCodeAt(u.index + 1); + if ((V[t] & 64) === 0) + return -4; + let o = u.source.charCodeAt(u.index + 2); + if ((V[o] & 64) === 0) + return -4; + let l = u.source.charCodeAt(u.index + 3); + return (V[l] & 64) === 0 ? -4 : (u.index += 3, u.column += 3, u.currentChar = u.source.charCodeAt(u.index), L(n) << 12 | L(t) << 8 | L(o) << 4 | L(l)); + } + } + case 56: + case 57: + if ((e & 256) === 0) + return -3; + default: + return i; + } + } + function n1(u, e, i) { + switch (e) { + case -1: + return; + case -2: + f(u, i ? 2 : 1); + case -3: + f(u, 13); + case -4: + f(u, 6); + case -5: + f(u, 101); + } + } + function Ju(u, e) { + let { index: i } = u, n = 67174409, t = "", o = r(u); + for (; o !== 96; ) { + if (o === 36 && u.source.charCodeAt(u.index + 1) === 123) { + r(u), n = 67174408; + break; + } else if ((o & 8) === 8 && o === 92) + if (o = r(u), o > 126) + t += Z(o); + else { + let l = g2(u, e | 1024, o); + if (l >= 0) + t += Z(l); + else if (l !== -1 && e & 65536) { + t = void 0, o = r0(u, o), o < 0 && (n = 67174408); + break; + } else + n1(u, l, 1); + } + else + u.index < u.end && o === 13 && u.source.charCodeAt(u.index) === 10 && (t += Z(o), u.currentChar = u.source.charCodeAt(++u.index)), ((o & 83) < 3 && o === 10 || (o ^ 8232) <= 1) && (u.column = -1, u.line++), t += Z(o); + u.index >= u.end && f(u, 15), o = r(u); + } + return r(u), u.tokenValue = t, u.tokenRaw = u.source.slice(i + 1, u.index - (n === 67174409 ? 1 : 2)), n; + } + function r0(u, e) { + for (; e !== 96; ) { + switch (e) { + case 36: { + let i = u.index + 1; + if (i < u.end && u.source.charCodeAt(i) === 123) + return u.index = i, u.column++, -e; + break; + } + case 10: + case 8232: + case 8233: + u.column = -1, u.line++; + } + u.index >= u.end && f(u, 15), e = r(u); + } + return e; + } + function v0(u, e) { + return u.index >= u.end && f(u, 0), u.index--, u.column--, Ju(u, e); + } + function Xu(u, e, i) { + let n = u.currentChar, t = 0, o = 9, l = i & 64 ? 0 : 1, c = 0, s = 0; + if (i & 64) + t = "." + t1(u, n), n = u.currentChar, n === 110 && f(u, 11); + else { + if (n === 48) + if (n = r(u), (n | 32) === 120) { + for (i = 136, n = r(u); V[n] & 4160; ) { + if (n === 95) { + s || f(u, 146), s = 0, n = r(u); + continue; + } + s = 1, t = t * 16 + L(n), c++, n = r(u); + } + (c < 1 || !s) && f(u, c < 1 ? 19 : 147); + } else if ((n | 32) === 111) { + for (i = 132, n = r(u); V[n] & 4128; ) { + if (n === 95) { + s || f(u, 146), s = 0, n = r(u); + continue; + } + s = 1, t = t * 8 + (n - 48), c++, n = r(u); + } + (c < 1 || !s) && f(u, c < 1 ? 0 : 147); + } else if ((n | 32) === 98) { + for (i = 130, n = r(u); V[n] & 4224; ) { + if (n === 95) { + s || f(u, 146), s = 0, n = r(u); + continue; + } + s = 1, t = t * 2 + (n - 48), c++, n = r(u); + } + (c < 1 || !s) && f(u, c < 1 ? 0 : 147); + } else if (V[n] & 32) + for (e & 1024 && f(u, 1), i = 1; V[n] & 16; ) { + if (V[n] & 512) { + i = 32, l = 0; + break; + } + t = t * 8 + (n - 48), n = r(u); + } + else + V[n] & 512 ? (e & 1024 && f(u, 1), u.flags |= 64, i = 32) : n === 95 && f(u, 0); + if (i & 48) { + if (l) { + for (; o >= 0 && V[n] & 4112; ) { + if (n === 95) { + n = r(u), (n === 95 || i & 32) && q(u.index, u.line, u.index + 1, 146), s = 1; + continue; + } + s = 0, t = 10 * t + (n - 48), n = r(u), --o; + } + if (s && q(u.index, u.line, u.index + 1, 147), o >= 0 && !I(n) && n !== 46) + return u.tokenValue = t, e & 512 && (u.tokenRaw = u.source.slice(u.tokenPos, u.index)), 134283266; + } + t += t1(u, n), n = u.currentChar, n === 46 && (r(u) === 95 && f(u, 0), i = 64, t += "." + t1(u, u.currentChar), n = u.currentChar); + } + } + let h = u.index, b = 0; + if (n === 110 && i & 128) + b = 1, n = r(u); + else if ((n | 32) === 101) { + n = r(u), V[n] & 256 && (n = r(u)); + let { index: g } = u; + (V[n] & 16) < 1 && f(u, 10), t += u.source.substring(h, g) + t1(u, n), n = u.currentChar; + } + return (u.index < u.end && V[n] & 16 || I(n)) && f(u, 12), b ? (u.tokenRaw = u.source.slice(u.tokenPos, u.index), u.tokenValue = BigInt(t), 134283389) : (u.tokenValue = i & 15 ? t : i & 32 ? parseFloat(u.source.substring(u.tokenPos, u.index)) : +t, e & 512 && (u.tokenRaw = u.source.slice(u.tokenPos, u.index)), 134283266); + } + function t1(u, e) { + let i = 0, n = u.index, t = ""; + for (; V[e] & 4112; ) { + if (e === 95) { + let { index: o } = u; + e = r(u), e === 95 && q(u.index, u.line, u.index + 1, 146), i = 1, t += u.source.substring(n, o), n = u.index; + continue; + } + i = 0, e = r(u); + } + return i && q(u.index, u.line, u.index + 1, 147), t + u.source.substring(n, u.index); + } + var G = ["end of source", "identifier", "number", "string", "regular expression", "false", "true", "null", "template continuation", "template tail", "=>", "(", "{", ".", "...", "}", ")", ";", ",", "[", "]", ":", "?", "'", '"', "", "++", "--", "=", "<<=", ">>=", ">>>=", "**=", "+=", "-=", "*=", "/=", "%=", "^=", "|=", "&=", "||=", "&&=", "??=", "typeof", "delete", "void", "!", "~", "+", "-", "in", "instanceof", "*", "%", "/", "**", "&&", "||", "===", "!==", "==", "!=", "<=", ">=", "<", ">", "<<", ">>", ">>>", "&", "|", "^", "var", "let", "const", "break", "case", "catch", "class", "continue", "debugger", "default", "do", "else", "export", "extends", "finally", "for", "function", "if", "import", "new", "return", "super", "switch", "this", "throw", "try", "while", "with", "implements", "interface", "package", "private", "protected", "public", "static", "yield", "as", "async", "await", "constructor", "get", "set", "from", "of", "enum", "eval", "arguments", "escaped keyword", "escaped future reserved keyword", "reserved if strict", "#", "BigIntLiteral", "??", "?.", "WhiteSpace", "Illegal", "LineTerminator", "PrivateField", "Template", "@", "target", "meta", "LineFeed", "Escaped", "JSXText"], zu = Object.create(null, { this: { value: 86113 }, function: { value: 86106 }, if: { value: 20571 }, return: { value: 20574 }, var: { value: 86090 }, else: { value: 20565 }, for: { value: 20569 }, new: { value: 86109 }, in: { value: 8738868 }, typeof: { value: 16863277 }, while: { value: 20580 }, case: { value: 20558 }, break: { value: 20557 }, try: { value: 20579 }, catch: { value: 20559 }, delete: { value: 16863278 }, throw: { value: 86114 }, switch: { value: 86112 }, continue: { value: 20561 }, default: { value: 20563 }, instanceof: { value: 8476725 }, do: { value: 20564 }, void: { value: 16863279 }, finally: { value: 20568 }, async: { value: 209007 }, await: { value: 209008 }, class: { value: 86096 }, const: { value: 86092 }, constructor: { value: 12401 }, debugger: { value: 20562 }, export: { value: 20566 }, extends: { value: 20567 }, false: { value: 86021 }, from: { value: 12404 }, get: { value: 12402 }, implements: { value: 36966 }, import: { value: 86108 }, interface: { value: 36967 }, let: { value: 241739 }, null: { value: 86023 }, of: { value: 274549 }, package: { value: 36968 }, private: { value: 36969 }, protected: { value: 36970 }, public: { value: 36971 }, set: { value: 12403 }, static: { value: 36972 }, super: { value: 86111 }, true: { value: 86022 }, with: { value: 20581 }, yield: { value: 241773 }, enum: { value: 86134 }, eval: { value: 537079927 }, as: { value: 77934 }, arguments: { value: 537079928 }, target: { value: 143494 }, meta: { value: 143495 } }); + function Hu(u, e, i) { + for (; H[r(u)]; ) + ; + return u.tokenValue = u.source.slice(u.tokenPos, u.index), u.currentChar !== 92 && u.currentChar < 126 ? zu[u.tokenValue] || 208897 : R1(u, e, 0, i); + } + function A0(u, e) { + let i = Ku(u); + return u2(i) || f(u, 4), u.tokenValue = Z(i), R1(u, e, 1, V[i] & 4); + } + function R1(u, e, i, n) { + let t = u.index; + for (; u.index < u.end; ) + if (u.currentChar === 92) { + u.tokenValue += u.source.slice(t, u.index), i = 1; + let l = Ku(u); + u2(l) || f(u, 4), n = n && V[l] & 4, u.tokenValue += Z(l), t = u.index; + } else if (u2(u.currentChar) || K(u, u.currentChar)) + r(u); + else + break; + u.index <= u.end && (u.tokenValue += u.source.slice(t, u.index)); + let o = u.tokenValue.length; + if (n && o >= 2 && o <= 11) { + let l = zu[u.tokenValue]; + return l === void 0 ? 208897 : i ? e & 1024 ? l === 209008 && (e & 4196352) === 0 ? l : l === 36972 || (l & 36864) === 36864 ? 122 : 121 : e & 1073741824 && (e & 8192) === 0 && (l & 20480) === 20480 ? l : l === 241773 ? e & 1073741824 ? 143483 : e & 2097152 ? 121 : l : l === 209007 && e & 1073741824 ? 143483 : (l & 36864) === 36864 || l === 209008 && (e & 4194304) === 0 ? l : 121 : l; + } + return 208897; + } + function y0(u) { + return I(r(u)) || f(u, 93), 131; + } + function Ku(u) { + return u.source.charCodeAt(u.index + 1) !== 117 && f(u, 4), u.currentChar = u.source.charCodeAt(u.index += 2), P0(u); + } + function P0(u) { + let e = 0, i = u.currentChar; + if (i === 123) { + let l = u.index - 2; + for (; V[r(u)] & 64; ) + e = e << 4 | L(u.currentChar), e > 1114111 && q(l, u.line, u.index + 1, 101); + return u.currentChar !== 125 && q(l, u.line, u.index - 1, 6), r(u), e; + } + (V[i] & 64) === 0 && f(u, 6); + let n = u.source.charCodeAt(u.index + 1); + (V[n] & 64) === 0 && f(u, 6); + let t = u.source.charCodeAt(u.index + 2); + (V[t] & 64) === 0 && f(u, 6); + let o = u.source.charCodeAt(u.index + 3); + return (V[o] & 64) === 0 && f(u, 6), e = L(i) << 12 | L(n) << 8 | L(t) << 4 | L(o), u.currentChar = u.source.charCodeAt(u.index += 4), e; + } + var Wu = [129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 136, 128, 128, 130, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 16842800, 134283267, 131, 208897, 8457015, 8455751, 134283267, 67174411, 16, 8457014, 25233970, 18, 25233971, 67108877, 8457016, 134283266, 134283266, 134283266, 134283266, 134283266, 134283266, 134283266, 134283266, 134283266, 134283266, 21, 1074790417, 8456258, 1077936157, 8456259, 22, 133, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 208897, 69271571, 137, 20, 8455497, 208897, 132, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 208897, 4096, 208897, 208897, 4096, 208897, 4096, 208897, 4096, 208897, 4096, 4096, 4096, 208897, 4096, 4096, 208897, 4096, 4096, 2162700, 8455240, 1074790415, 16842801, 129]; + function E(u, e) { + if (u.flags = (u.flags | 1) ^ 1, u.startPos = u.index, u.startColumn = u.column, u.startLine = u.line, u.token = Yu(u, e, 0), u.onToken && u.token !== 1048576) { + let i = { start: { line: u.linePos, column: u.colPos }, end: { line: u.line, column: u.column } }; + u.onToken(t2(u.token), u.tokenPos, u.index, i); + } + } + function Yu(u, e, i) { + let n = u.index === 0, t = u.source, o = u.index, l = u.line, c = u.column; + for (; u.index < u.end; ) { + u.tokenPos = u.index, u.colPos = u.column, u.linePos = u.line; + let s = u.currentChar; + if (s <= 126) { + let h = Wu[s]; + switch (h) { + case 67174411: + case 16: + case 2162700: + case 1074790415: + case 69271571: + case 20: + case 21: + case 1074790417: + case 18: + case 16842801: + case 133: + case 129: + return r(u), h; + case 208897: + return Hu(u, e, 0); + case 4096: + return Hu(u, e, 1); + case 134283266: + return Xu(u, e, 144); + case 134283267: + return I1(u, e, s); + case 132: + return Ju(u, e); + case 137: + return A0(u, e); + case 131: + return y0(u); + case 128: + r(u); + break; + case 130: + i |= 5, X(u); + break; + case 136: + Y(u, i), i = i & -5 | 1; + break; + case 8456258: + let b = r(u); + if (u.index < u.end) { + if (b === 60) + return u.index < u.end && r(u) === 61 ? (r(u), 4194334) : 8456516; + if (b === 61) + return r(u), 8456256; + if (b === 33) { + let a = u.index + 1; + if (a + 1 < u.end && t.charCodeAt(a) === 45 && t.charCodeAt(a + 1) == 45) { + u.column += 3, u.currentChar = t.charCodeAt(u.index += 3), i = R2(u, t, i, e, 2, u.tokenPos, u.linePos, u.colPos), o = u.tokenPos, l = u.linePos, c = u.colPos; + continue; + } + return 8456258; + } + if (b === 47) { + if ((e & 16) < 1) + return 8456258; + let a = u.index + 1; + if (a < u.end && (b = t.charCodeAt(a), b === 42 || b === 47)) + break; + return r(u), 25; + } + } + return 8456258; + case 1077936157: { + r(u); + let a = u.currentChar; + return a === 61 ? r(u) === 61 ? (r(u), 8455996) : 8455998 : a === 62 ? (r(u), 10) : 1077936157; + } + case 16842800: + return r(u) !== 61 ? 16842800 : r(u) !== 61 ? 8455999 : (r(u), 8455997); + case 8457015: + return r(u) !== 61 ? 8457015 : (r(u), 4194342); + case 8457014: { + if (r(u), u.index >= u.end) + return 8457014; + let a = u.currentChar; + return a === 61 ? (r(u), 4194340) : a !== 42 ? 8457014 : r(u) !== 61 ? 8457273 : (r(u), 4194337); + } + case 8455497: + return r(u) !== 61 ? 8455497 : (r(u), 4194343); + case 25233970: { + r(u); + let a = u.currentChar; + return a === 43 ? (r(u), 33619995) : a === 61 ? (r(u), 4194338) : 25233970; + } + case 25233971: { + r(u); + let a = u.currentChar; + if (a === 45) { + if (r(u), (i & 1 || n) && u.currentChar === 62) { + (e & 256) === 0 && f(u, 108), r(u), i = R2(u, t, i, e, 3, o, l, c), o = u.tokenPos, l = u.linePos, c = u.colPos; + continue; + } + return 33619996; + } + return a === 61 ? (r(u), 4194339) : 25233971; + } + case 8457016: { + if (r(u), u.index < u.end) { + let a = u.currentChar; + if (a === 47) { + r(u), i = s2(u, t, i, 0, u.tokenPos, u.linePos, u.colPos), o = u.tokenPos, l = u.linePos, c = u.colPos; + continue; + } + if (a === 42) { + r(u), i = N2(u, t, i), o = u.tokenPos, l = u.linePos, c = u.colPos; + continue; + } + if (e & 32768) + return w2(u, e); + if (a === 61) + return r(u), 4259877; + } + return 8457016; + } + case 67108877: + let g = r(u); + if (g >= 48 && g <= 57) + return Xu(u, e, 80); + if (g === 46) { + let a = u.index + 1; + if (a < u.end && t.charCodeAt(a) === 46) + return u.column += 2, u.currentChar = t.charCodeAt(u.index += 2), 14; + } + return 67108877; + case 8455240: { + r(u); + let a = u.currentChar; + return a === 124 ? (r(u), u.currentChar === 61 ? (r(u), 4194346) : 8979003) : a === 61 ? (r(u), 4194344) : 8455240; + } + case 8456259: { + r(u); + let a = u.currentChar; + if (a === 61) + return r(u), 8456257; + if (a !== 62) + return 8456259; + if (r(u), u.index < u.end) { + let A = u.currentChar; + if (A === 62) + return r(u) === 61 ? (r(u), 4194336) : 8456518; + if (A === 61) + return r(u), 4194335; + } + return 8456517; + } + case 8455751: { + r(u); + let a = u.currentChar; + return a === 38 ? (r(u), u.currentChar === 61 ? (r(u), 4194347) : 8979258) : a === 61 ? (r(u), 4194345) : 8455751; + } + case 22: { + let a = r(u); + if (a === 63) + return r(u), u.currentChar === 61 ? (r(u), 4194348) : 276889982; + if (a === 46) { + let A = u.index + 1; + if (A < u.end && (a = t.charCodeAt(A), !(a >= 48 && a <= 57))) + return r(u), 67108991; + } + return 22; + } + } + } else { + if ((s ^ 8232) <= 1) { + i = i & -5 | 1, X(u); + continue; + } + if ((s & 64512) === 55296 || (T[(s >>> 5) + 34816] >>> s & 31 & 1) !== 0) + return (s & 64512) === 56320 && (s = (s & 1023) << 10 | s & 1023 | 65536, (T[(s >>> 5) + 0] >>> s & 31 & 1) === 0 && f(u, 18, Z(s)), u.index++, u.currentChar = s), u.column++, u.tokenValue = "", R1(u, e, 0, 0); + if (p(s)) { + r(u); + continue; + } + f(u, 18, Z(s)); + } + } + return 1048576; + } + var E0 = { AElig: "\xC6", AMP: "&", Aacute: "\xC1", Abreve: "\u0102", Acirc: "\xC2", Acy: "\u0410", Afr: "\u{1D504}", Agrave: "\xC0", Alpha: "\u0391", Amacr: "\u0100", And: "\u2A53", Aogon: "\u0104", Aopf: "\u{1D538}", ApplyFunction: "\u2061", Aring: "\xC5", Ascr: "\u{1D49C}", Assign: "\u2254", Atilde: "\xC3", Auml: "\xC4", Backslash: "\u2216", Barv: "\u2AE7", Barwed: "\u2306", Bcy: "\u0411", Because: "\u2235", Bernoullis: "\u212C", Beta: "\u0392", Bfr: "\u{1D505}", Bopf: "\u{1D539}", Breve: "\u02D8", Bscr: "\u212C", Bumpeq: "\u224E", CHcy: "\u0427", COPY: "\xA9", Cacute: "\u0106", Cap: "\u22D2", CapitalDifferentialD: "\u2145", Cayleys: "\u212D", Ccaron: "\u010C", Ccedil: "\xC7", Ccirc: "\u0108", Cconint: "\u2230", Cdot: "\u010A", Cedilla: "\xB8", CenterDot: "\xB7", Cfr: "\u212D", Chi: "\u03A7", CircleDot: "\u2299", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", Colon: "\u2237", Colone: "\u2A74", Congruent: "\u2261", Conint: "\u222F", ContourIntegral: "\u222E", Copf: "\u2102", Coproduct: "\u2210", CounterClockwiseContourIntegral: "\u2233", Cross: "\u2A2F", Cscr: "\u{1D49E}", Cup: "\u22D3", CupCap: "\u224D", DD: "\u2145", DDotrahd: "\u2911", DJcy: "\u0402", DScy: "\u0405", DZcy: "\u040F", Dagger: "\u2021", Darr: "\u21A1", Dashv: "\u2AE4", Dcaron: "\u010E", Dcy: "\u0414", Del: "\u2207", Delta: "\u0394", Dfr: "\u{1D507}", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", Diamond: "\u22C4", DifferentialD: "\u2146", Dopf: "\u{1D53B}", Dot: "\xA8", DotDot: "\u20DC", DotEqual: "\u2250", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrow: "\u2193", DownArrowBar: "\u2913", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVector: "\u21BD", DownLeftVectorBar: "\u2956", DownRightTeeVector: "\u295F", DownRightVector: "\u21C1", DownRightVectorBar: "\u2957", DownTee: "\u22A4", DownTeeArrow: "\u21A7", Downarrow: "\u21D3", Dscr: "\u{1D49F}", Dstrok: "\u0110", ENG: "\u014A", ETH: "\xD0", Eacute: "\xC9", Ecaron: "\u011A", Ecirc: "\xCA", Ecy: "\u042D", Edot: "\u0116", Efr: "\u{1D508}", Egrave: "\xC8", Element: "\u2208", Emacr: "\u0112", EmptySmallSquare: "\u25FB", EmptyVerySmallSquare: "\u25AB", Eogon: "\u0118", Eopf: "\u{1D53C}", Epsilon: "\u0395", Equal: "\u2A75", EqualTilde: "\u2242", Equilibrium: "\u21CC", Escr: "\u2130", Esim: "\u2A73", Eta: "\u0397", Euml: "\xCB", Exists: "\u2203", ExponentialE: "\u2147", Fcy: "\u0424", Ffr: "\u{1D509}", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", Fopf: "\u{1D53D}", ForAll: "\u2200", Fouriertrf: "\u2131", Fscr: "\u2131", GJcy: "\u0403", GT: ">", Gamma: "\u0393", Gammad: "\u03DC", Gbreve: "\u011E", Gcedil: "\u0122", Gcirc: "\u011C", Gcy: "\u0413", Gdot: "\u0120", Gfr: "\u{1D50A}", Gg: "\u22D9", Gopf: "\u{1D53E}", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", Gt: "\u226B", HARDcy: "\u042A", Hacek: "\u02C7", Hat: "^", Hcirc: "\u0124", Hfr: "\u210C", HilbertSpace: "\u210B", Hopf: "\u210D", HorizontalLine: "\u2500", Hscr: "\u210B", Hstrok: "\u0126", HumpDownHump: "\u224E", HumpEqual: "\u224F", IEcy: "\u0415", IJlig: "\u0132", IOcy: "\u0401", Iacute: "\xCD", Icirc: "\xCE", Icy: "\u0418", Idot: "\u0130", Ifr: "\u2111", Igrave: "\xCC", Im: "\u2111", Imacr: "\u012A", ImaginaryI: "\u2148", Implies: "\u21D2", Int: "\u222C", Integral: "\u222B", Intersection: "\u22C2", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", Iogon: "\u012E", Iopf: "\u{1D540}", Iota: "\u0399", Iscr: "\u2110", Itilde: "\u0128", Iukcy: "\u0406", Iuml: "\xCF", Jcirc: "\u0134", Jcy: "\u0419", Jfr: "\u{1D50D}", Jopf: "\u{1D541}", Jscr: "\u{1D4A5}", Jsercy: "\u0408", Jukcy: "\u0404", KHcy: "\u0425", KJcy: "\u040C", Kappa: "\u039A", Kcedil: "\u0136", Kcy: "\u041A", Kfr: "\u{1D50E}", Kopf: "\u{1D542}", Kscr: "\u{1D4A6}", LJcy: "\u0409", LT: "<", Lacute: "\u0139", Lambda: "\u039B", Lang: "\u27EA", Laplacetrf: "\u2112", Larr: "\u219E", Lcaron: "\u013D", Lcedil: "\u013B", Lcy: "\u041B", LeftAngleBracket: "\u27E8", LeftArrow: "\u2190", LeftArrowBar: "\u21E4", LeftArrowRightArrow: "\u21C6", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVector: "\u21C3", LeftDownVectorBar: "\u2959", LeftFloor: "\u230A", LeftRightArrow: "\u2194", LeftRightVector: "\u294E", LeftTee: "\u22A3", LeftTeeArrow: "\u21A4", LeftTeeVector: "\u295A", LeftTriangle: "\u22B2", LeftTriangleBar: "\u29CF", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVector: "\u21BF", LeftUpVectorBar: "\u2958", LeftVector: "\u21BC", LeftVectorBar: "\u2952", Leftarrow: "\u21D0", Leftrightarrow: "\u21D4", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", LessLess: "\u2AA1", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", Lfr: "\u{1D50F}", Ll: "\u22D8", Lleftarrow: "\u21DA", Lmidot: "\u013F", LongLeftArrow: "\u27F5", LongLeftRightArrow: "\u27F7", LongRightArrow: "\u27F6", Longleftarrow: "\u27F8", Longleftrightarrow: "\u27FA", Longrightarrow: "\u27F9", Lopf: "\u{1D543}", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", Lscr: "\u2112", Lsh: "\u21B0", Lstrok: "\u0141", Lt: "\u226A", Map: "\u2905", Mcy: "\u041C", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", MinusPlus: "\u2213", Mopf: "\u{1D544}", Mscr: "\u2133", Mu: "\u039C", NJcy: "\u040A", Nacute: "\u0143", Ncaron: "\u0147", Ncedil: "\u0145", Ncy: "\u041D", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: ` +`, Nfr: "\u{1D511}", NoBreak: "\u2060", NonBreakingSpace: "\xA0", Nopf: "\u2115", Not: "\u2AEC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangle: "\u22EB", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", Nscr: "\u{1D4A9}", Ntilde: "\xD1", Nu: "\u039D", OElig: "\u0152", Oacute: "\xD3", Ocirc: "\xD4", Ocy: "\u041E", Odblac: "\u0150", Ofr: "\u{1D512}", Ograve: "\xD2", Omacr: "\u014C", Omega: "\u03A9", Omicron: "\u039F", Oopf: "\u{1D546}", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", Or: "\u2A54", Oscr: "\u{1D4AA}", Oslash: "\xD8", Otilde: "\xD5", Otimes: "\u2A37", Ouml: "\xD6", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", PartialD: "\u2202", Pcy: "\u041F", Pfr: "\u{1D513}", Phi: "\u03A6", Pi: "\u03A0", PlusMinus: "\xB1", Poincareplane: "\u210C", Popf: "\u2119", Pr: "\u2ABB", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", Prime: "\u2033", Product: "\u220F", Proportion: "\u2237", Proportional: "\u221D", Pscr: "\u{1D4AB}", Psi: "\u03A8", QUOT: '"', Qfr: "\u{1D514}", Qopf: "\u211A", Qscr: "\u{1D4AC}", RBarr: "\u2910", REG: "\xAE", Racute: "\u0154", Rang: "\u27EB", Rarr: "\u21A0", Rarrtl: "\u2916", Rcaron: "\u0158", Rcedil: "\u0156", Rcy: "\u0420", Re: "\u211C", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", Rfr: "\u211C", Rho: "\u03A1", RightAngleBracket: "\u27E9", RightArrow: "\u2192", RightArrowBar: "\u21E5", RightArrowLeftArrow: "\u21C4", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVector: "\u21C2", RightDownVectorBar: "\u2955", RightFloor: "\u230B", RightTee: "\u22A2", RightTeeArrow: "\u21A6", RightTeeVector: "\u295B", RightTriangle: "\u22B3", RightTriangleBar: "\u29D0", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVector: "\u21BE", RightUpVectorBar: "\u2954", RightVector: "\u21C0", RightVectorBar: "\u2953", Rightarrow: "\u21D2", Ropf: "\u211D", RoundImplies: "\u2970", Rrightarrow: "\u21DB", Rscr: "\u211B", Rsh: "\u21B1", RuleDelayed: "\u29F4", SHCHcy: "\u0429", SHcy: "\u0428", SOFTcy: "\u042C", Sacute: "\u015A", Sc: "\u2ABC", Scaron: "\u0160", Scedil: "\u015E", Scirc: "\u015C", Scy: "\u0421", Sfr: "\u{1D516}", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", Sigma: "\u03A3", SmallCircle: "\u2218", Sopf: "\u{1D54A}", Sqrt: "\u221A", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", Sscr: "\u{1D4AE}", Star: "\u22C6", Sub: "\u22D0", Subset: "\u22D0", SubsetEqual: "\u2286", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", SuchThat: "\u220B", Sum: "\u2211", Sup: "\u22D1", Superset: "\u2283", SupersetEqual: "\u2287", Supset: "\u22D1", THORN: "\xDE", TRADE: "\u2122", TSHcy: "\u040B", TScy: "\u0426", Tab: " ", Tau: "\u03A4", Tcaron: "\u0164", Tcedil: "\u0162", Tcy: "\u0422", Tfr: "\u{1D517}", Therefore: "\u2234", Theta: "\u0398", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", Topf: "\u{1D54B}", TripleDot: "\u20DB", Tscr: "\u{1D4AF}", Tstrok: "\u0166", Uacute: "\xDA", Uarr: "\u219F", Uarrocir: "\u2949", Ubrcy: "\u040E", Ubreve: "\u016C", Ucirc: "\xDB", Ucy: "\u0423", Udblac: "\u0170", Ufr: "\u{1D518}", Ugrave: "\xD9", Umacr: "\u016A", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", Uopf: "\u{1D54C}", UpArrow: "\u2191", UpArrowBar: "\u2912", UpArrowDownArrow: "\u21C5", UpDownArrow: "\u2195", UpEquilibrium: "\u296E", UpTee: "\u22A5", UpTeeArrow: "\u21A5", Uparrow: "\u21D1", Updownarrow: "\u21D5", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", Upsi: "\u03D2", Upsilon: "\u03A5", Uring: "\u016E", Uscr: "\u{1D4B0}", Utilde: "\u0168", Uuml: "\xDC", VDash: "\u22AB", Vbar: "\u2AEB", Vcy: "\u0412", Vdash: "\u22A9", Vdashl: "\u2AE6", Vee: "\u22C1", Verbar: "\u2016", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", Vopf: "\u{1D54D}", Vscr: "\u{1D4B1}", Vvdash: "\u22AA", Wcirc: "\u0174", Wedge: "\u22C0", Wfr: "\u{1D51A}", Wopf: "\u{1D54E}", Wscr: "\u{1D4B2}", Xfr: "\u{1D51B}", Xi: "\u039E", Xopf: "\u{1D54F}", Xscr: "\u{1D4B3}", YAcy: "\u042F", YIcy: "\u0407", YUcy: "\u042E", Yacute: "\xDD", Ycirc: "\u0176", Ycy: "\u042B", Yfr: "\u{1D51C}", Yopf: "\u{1D550}", Yscr: "\u{1D4B4}", Yuml: "\u0178", ZHcy: "\u0416", Zacute: "\u0179", Zcaron: "\u017D", Zcy: "\u0417", Zdot: "\u017B", ZeroWidthSpace: "\u200B", Zeta: "\u0396", Zfr: "\u2128", Zopf: "\u2124", Zscr: "\u{1D4B5}", aacute: "\xE1", abreve: "\u0103", ac: "\u223E", acE: "\u223E\u0333", acd: "\u223F", acirc: "\xE2", acute: "\xB4", acy: "\u0430", aelig: "\xE6", af: "\u2061", afr: "\u{1D51E}", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", alpha: "\u03B1", amacr: "\u0101", amalg: "\u2A3F", amp: "&", and: "\u2227", andand: "\u2A55", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsd: "\u2221", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", aogon: "\u0105", aopf: "\u{1D552}", ap: "\u2248", apE: "\u2A70", apacir: "\u2A6F", ape: "\u224A", apid: "\u224B", apos: "'", approx: "\u2248", approxeq: "\u224A", aring: "\xE5", ascr: "\u{1D4B6}", ast: "*", asymp: "\u2248", asympeq: "\u224D", atilde: "\xE3", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", bNot: "\u2AED", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", barvee: "\u22BD", barwed: "\u2305", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", beta: "\u03B2", beth: "\u2136", between: "\u226C", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bnot: "\u2310", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxDL: "\u2557", boxDR: "\u2554", boxDl: "\u2556", boxDr: "\u2553", boxH: "\u2550", boxHD: "\u2566", boxHU: "\u2569", boxHd: "\u2564", boxHu: "\u2567", boxUL: "\u255D", boxUR: "\u255A", boxUl: "\u255C", boxUr: "\u2559", boxV: "\u2551", boxVH: "\u256C", boxVL: "\u2563", boxVR: "\u2560", boxVh: "\u256B", boxVl: "\u2562", boxVr: "\u255F", boxbox: "\u29C9", boxdL: "\u2555", boxdR: "\u2552", boxdl: "\u2510", boxdr: "\u250C", boxh: "\u2500", boxhD: "\u2565", boxhU: "\u2568", boxhd: "\u252C", boxhu: "\u2534", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxuL: "\u255B", boxuR: "\u2558", boxul: "\u2518", boxur: "\u2514", boxv: "\u2502", boxvH: "\u256A", boxvL: "\u2561", boxvR: "\u255E", boxvh: "\u253C", boxvl: "\u2524", boxvr: "\u251C", bprime: "\u2035", breve: "\u02D8", brvbar: "\xA6", bscr: "\u{1D4B7}", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsol: "\\", bsolb: "\u29C5", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", bumpeq: "\u224F", cacute: "\u0107", cap: "\u2229", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", capcup: "\u2A47", capdot: "\u2A40", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", ccaps: "\u2A4D", ccaron: "\u010D", ccedil: "\xE7", ccirc: "\u0109", ccups: "\u2A4C", ccupssm: "\u2A50", cdot: "\u010B", cedil: "\xB8", cemptyv: "\u29B2", cent: "\xA2", centerdot: "\xB7", cfr: "\u{1D520}", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", chi: "\u03C7", cir: "\u25CB", cirE: "\u29C3", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledR: "\xAE", circledS: "\u24C8", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", clubs: "\u2663", clubsuit: "\u2663", colon: ":", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", conint: "\u222E", copf: "\u{1D554}", coprod: "\u2210", copy: "\xA9", copysr: "\u2117", crarr: "\u21B5", cross: "\u2717", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cup: "\u222A", cupbrcap: "\u2A48", cupcap: "\u2A46", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dArr: "\u21D3", dHar: "\u2965", dagger: "\u2020", daleth: "\u2138", darr: "\u2193", dash: "\u2010", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", dcaron: "\u010F", dcy: "\u0434", dd: "\u2146", ddagger: "\u2021", ddarr: "\u21CA", ddotseq: "\u2A77", deg: "\xB0", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", dfr: "\u{1D521}", dharl: "\u21C3", dharr: "\u21C2", diam: "\u22C4", diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", dopf: "\u{1D555}", dot: "\u02D9", doteq: "\u2250", doteqdot: "\u2251", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", downarrow: "\u2193", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", dscr: "\u{1D4B9}", dscy: "\u0455", dsol: "\u29F6", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", dzcy: "\u045F", dzigrarr: "\u27FF", eDDot: "\u2A77", eDot: "\u2251", eacute: "\xE9", easter: "\u2A6E", ecaron: "\u011B", ecir: "\u2256", ecirc: "\xEA", ecolon: "\u2255", ecy: "\u044D", edot: "\u0117", ee: "\u2147", efDot: "\u2252", efr: "\u{1D522}", eg: "\u2A9A", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", emptyv: "\u2205", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", eng: "\u014B", ensp: "\u2002", eogon: "\u0119", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", equals: "=", equest: "\u225F", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erDot: "\u2253", erarr: "\u2971", escr: "\u212F", esdot: "\u2250", esim: "\u2242", eta: "\u03B7", eth: "\xF0", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", expectation: "\u2130", exponentiale: "\u2147", fallingdotseq: "\u2252", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", ffr: "\u{1D523}", filig: "\uFB01", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", fopf: "\u{1D557}", forall: "\u2200", fork: "\u22D4", forkv: "\u2AD9", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", gE: "\u2267", gEl: "\u2A8C", gacute: "\u01F5", gamma: "\u03B3", gammad: "\u03DD", gap: "\u2A86", gbreve: "\u011F", gcirc: "\u011D", gcy: "\u0433", gdot: "\u0121", ge: "\u2265", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", ges: "\u2A7E", gescc: "\u2AA9", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", gfr: "\u{1D524}", gg: "\u226B", ggg: "\u22D9", gimel: "\u2137", gjcy: "\u0453", gl: "\u2277", glE: "\u2A92", gla: "\u2AA5", glj: "\u2AA4", gnE: "\u2269", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", gopf: "\u{1D558}", grave: "`", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", gt: ">", gtcc: "\u2AA7", gtcir: "\u2A7A", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", hArr: "\u21D4", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", hardcy: "\u044A", harr: "\u2194", harrcir: "\u2948", harrw: "\u21AD", hbar: "\u210F", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", horbar: "\u2015", hscr: "\u{1D4BD}", hslash: "\u210F", hstrok: "\u0127", hybull: "\u2043", hyphen: "\u2010", iacute: "\xED", ic: "\u2063", icirc: "\xEE", icy: "\u0438", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", ijlig: "\u0133", imacr: "\u012B", image: "\u2111", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", imof: "\u22B7", imped: "\u01B5", in: "\u2208", incare: "\u2105", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", int: "\u222B", intcal: "\u22BA", integers: "\u2124", intercal: "\u22BA", intlarhk: "\u2A17", intprod: "\u2A3C", iocy: "\u0451", iogon: "\u012F", iopf: "\u{1D55A}", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", iscr: "\u{1D4BE}", isin: "\u2208", isinE: "\u22F9", isindot: "\u22F5", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", itilde: "\u0129", iukcy: "\u0456", iuml: "\xEF", jcirc: "\u0135", jcy: "\u0439", jfr: "\u{1D527}", jmath: "\u0237", jopf: "\u{1D55B}", jscr: "\u{1D4BF}", jsercy: "\u0458", jukcy: "\u0454", kappa: "\u03BA", kappav: "\u03F0", kcedil: "\u0137", kcy: "\u043A", kfr: "\u{1D528}", kgreen: "\u0138", khcy: "\u0445", kjcy: "\u045C", kopf: "\u{1D55C}", kscr: "\u{1D4C0}", lAarr: "\u21DA", lArr: "\u21D0", lAtail: "\u291B", lBarr: "\u290E", lE: "\u2266", lEg: "\u2A8B", lHar: "\u2962", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", lambda: "\u03BB", lang: "\u27E8", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", laquo: "\xAB", larr: "\u2190", larrb: "\u21E4", larrbfs: "\u291F", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", lat: "\u2AAB", latail: "\u2919", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", lcaron: "\u013E", lcedil: "\u013C", lceil: "\u2308", lcub: "{", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", leftarrow: "\u2190", leftarrowtail: "\u21A2", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", leftthreetimes: "\u22CB", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", les: "\u2A7D", lescc: "\u2AA8", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", lessgtr: "\u2276", lesssim: "\u2272", lfisht: "\u297C", lfloor: "\u230A", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", ljcy: "\u0459", ll: "\u226A", llarr: "\u21C7", llcorner: "\u231E", llhard: "\u296B", lltri: "\u25FA", lmidot: "\u0140", lmoust: "\u23B0", lmoustache: "\u23B0", lnE: "\u2268", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", longleftrightarrow: "\u27F7", longmapsto: "\u27FC", longrightarrow: "\u27F6", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", lstrok: "\u0142", lt: "<", ltcc: "\u2AA6", ltcir: "\u2A79", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltrPar: "\u2996", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", mDDot: "\u223A", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", mcy: "\u043C", mdash: "\u2014", measuredangle: "\u2221", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", mid: "\u2223", midast: "*", midcir: "\u2AF0", middot: "\xB7", minus: "\u2212", minusb: "\u229F", minusd: "\u2238", minusdu: "\u2A2A", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", mstpos: "\u223E", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nGg: "\u22D9\u0338", nGt: "\u226B\u20D2", nGtv: "\u226B\u0338", nLeftarrow: "\u21CD", nLeftrightarrow: "\u21CE", nLl: "\u22D8\u0338", nLt: "\u226A\u20D2", nLtv: "\u226A\u0338", nRightarrow: "\u21CF", nVDash: "\u22AF", nVdash: "\u22AE", nabla: "\u2207", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natur: "\u266E", natural: "\u266E", naturals: "\u2115", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", ncaron: "\u0148", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", ncy: "\u043D", ndash: "\u2013", ne: "\u2260", neArr: "\u21D7", nearhk: "\u2924", nearr: "\u2197", nearrow: "\u2197", nedot: "\u2250\u0338", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", nexist: "\u2204", nexists: "\u2204", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", ngsim: "\u2275", ngt: "\u226F", ngtr: "\u226F", nhArr: "\u21CE", nharr: "\u21AE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", njcy: "\u045A", nlArr: "\u21CD", nlE: "\u2266\u0338", nlarr: "\u219A", nldr: "\u2025", nle: "\u2270", nleftarrow: "\u219A", nleftrightarrow: "\u21AE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nlsim: "\u2274", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nmid: "\u2224", nopf: "\u{1D55F}", not: "\xAC", notin: "\u2209", notinE: "\u22F9\u0338", notindot: "\u22F5\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", npar: "\u2226", nparallel: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", npre: "\u2AAF\u0338", nprec: "\u2280", npreceq: "\u2AAF\u0338", nrArr: "\u21CF", nrarr: "\u219B", nrarrc: "\u2933\u0338", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvDash: "\u22AD", nvHarr: "\u2904", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwArr: "\u21D6", nwarhk: "\u2923", nwarr: "\u2196", nwarrow: "\u2196", nwnear: "\u2927", oS: "\u24C8", oacute: "\xF3", oast: "\u229B", ocir: "\u229A", ocirc: "\xF4", ocy: "\u043E", odash: "\u229D", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", oelig: "\u0153", ofcir: "\u29BF", ofr: "\u{1D52C}", ogon: "\u02DB", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", omacr: "\u014D", omega: "\u03C9", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", oopf: "\u{1D560}", opar: "\u29B7", operp: "\u29B9", oplus: "\u2295", or: "\u2228", orarr: "\u21BB", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oscr: "\u2134", oslash: "\xF8", osol: "\u2298", otilde: "\xF5", otimes: "\u2297", otimesas: "\u2A36", ouml: "\xF6", ovbar: "\u233D", par: "\u2225", para: "\xB6", parallel: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", pfr: "\u{1D52D}", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plus: "+", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", pointint: "\u2A15", popf: "\u{1D561}", pound: "\xA3", pr: "\u227A", prE: "\u2AB3", prap: "\u2AB7", prcue: "\u227C", pre: "\u2AAF", prec: "\u227A", precapprox: "\u2AB7", preccurlyeq: "\u227C", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", precsim: "\u227E", prime: "\u2032", primes: "\u2119", prnE: "\u2AB5", prnap: "\u2AB9", prnsim: "\u22E8", prod: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", pscr: "\u{1D4C5}", psi: "\u03C8", puncsp: "\u2008", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", qprime: "\u2057", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quot: '"', rAarr: "\u21DB", rArr: "\u21D2", rAtail: "\u291C", rBarr: "\u290F", rHar: "\u2964", race: "\u223D\u0331", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", rarr: "\u2192", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", rcaron: "\u0159", rcedil: "\u0157", rceil: "\u2309", rcub: "}", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", rect: "\u25AD", reg: "\xAE", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", rho: "\u03C1", rhov: "\u03F1", rightarrow: "\u2192", rightarrowtail: "\u21A3", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", rightthreetimes: "\u22CC", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoust: "\u23B1", rmoustache: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", roplus: "\u2A2E", rotimes: "\u2A35", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", rsaquo: "\u203A", rscr: "\u{1D4C7}", rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", ruluhar: "\u2968", rx: "\u211E", sacute: "\u015B", sbquo: "\u201A", sc: "\u227B", scE: "\u2AB4", scap: "\u2AB8", scaron: "\u0161", sccue: "\u227D", sce: "\u2AB0", scedil: "\u015F", scirc: "\u015D", scnE: "\u2AB6", scnap: "\u2ABA", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", scy: "\u0441", sdot: "\u22C5", sdotb: "\u22A1", sdote: "\u2A66", seArr: "\u21D8", searhk: "\u2925", searr: "\u2198", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", shchcy: "\u0449", shcy: "\u0448", shortmid: "\u2223", shortparallel: "\u2225", shy: "\xAD", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", softcy: "\u044C", sol: "/", solb: "\u29C4", solbar: "\u233F", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", squ: "\u25A1", square: "\u25A1", squarf: "\u25AA", squf: "\u25AA", srarr: "\u2192", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", subE: "\u2AC5", subdot: "\u2ABD", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", subseteq: "\u2286", subseteqq: "\u2AC5", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succ: "\u227B", succapprox: "\u2AB8", succcurlyeq: "\u227D", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", sum: "\u2211", sung: "\u266A", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", sup: "\u2283", supE: "\u2AC6", supdot: "\u2ABE", supdsub: "\u2AD8", supe: "\u2287", supedot: "\u2AC4", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swArr: "\u21D9", swarhk: "\u2926", swarr: "\u2199", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", target: "\u2316", tau: "\u03C4", tbrk: "\u23B4", tcaron: "\u0165", tcedil: "\u0163", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", thorn: "\xFE", tilde: "\u02DC", times: "\xD7", timesb: "\u22A0", timesbar: "\u2A31", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", top: "\u22A4", topbot: "\u2336", topcir: "\u2AF1", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", tscr: "\u{1D4C9}", tscy: "\u0446", tshcy: "\u045B", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", uArr: "\u21D1", uHar: "\u2963", uacute: "\xFA", uarr: "\u2191", ubrcy: "\u045E", ubreve: "\u016D", ucirc: "\xFB", ucy: "\u0443", udarr: "\u21C5", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", ufr: "\u{1D532}", ugrave: "\xF9", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", umacr: "\u016B", uml: "\xA8", uogon: "\u0173", uopf: "\u{1D566}", uparrow: "\u2191", updownarrow: "\u2195", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", upsi: "\u03C5", upsih: "\u03D2", upsilon: "\u03C5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", uring: "\u016F", urtri: "\u25F9", uscr: "\u{1D4CA}", utdot: "\u22F0", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", uuml: "\xFC", uwangle: "\u29A7", vArr: "\u21D5", vBar: "\u2AE8", vBarv: "\u2AE9", vDash: "\u22A8", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vcy: "\u0432", vdash: "\u22A2", vee: "\u2228", veebar: "\u22BB", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", vert: "|", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", vzigzag: "\u299A", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", wedgeq: "\u2259", weierp: "\u2118", wfr: "\u{1D534}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", xfr: "\u{1D535}", xhArr: "\u27FA", xharr: "\u27F7", xi: "\u03BE", xlArr: "\u27F8", xlarr: "\u27F5", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrArr: "\u27F9", xrarr: "\u27F6", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", yacute: "\xFD", yacy: "\u044F", ycirc: "\u0177", ycy: "\u044B", yen: "\xA5", yfr: "\u{1D536}", yicy: "\u0457", yopf: "\u{1D56A}", yscr: "\u{1D4CE}", yucy: "\u044E", yuml: "\xFF", zacute: "\u017A", zcaron: "\u017E", zcy: "\u0437", zdot: "\u017C", zeetrf: "\u2128", zeta: "\u03B6", zfr: "\u{1D537}", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }, $u = { 0: 65533, 128: 8364, 130: 8218, 131: 402, 132: 8222, 133: 8230, 134: 8224, 135: 8225, 136: 710, 137: 8240, 138: 352, 139: 8249, 140: 338, 142: 381, 145: 8216, 146: 8217, 147: 8220, 148: 8221, 149: 8226, 150: 8211, 151: 8212, 152: 732, 153: 8482, 154: 353, 155: 8250, 156: 339, 158: 382, 159: 376 }; + function D0(u) { + return u.replace(/&(?:[a-zA-Z]+|#[xX][\da-fA-F]+|#\d+);/g, (e) => { + if (e.charAt(1) === "#") { + let i = e.charAt(2), n = i === "X" || i === "x" ? parseInt(e.slice(3), 16) : parseInt(e.slice(2), 10); + return C0(n); + } + return E0[e.slice(1, -1)] || e; + }); + } + function C0(u) { + return u >= 55296 && u <= 57343 || u > 1114111 ? "\uFFFD" : (u in $u && (u = $u[u]), String.fromCodePoint(u)); + } + function w0(u, e) { + return u.startPos = u.tokenPos = u.index, u.startColumn = u.colPos = u.column, u.startLine = u.linePos = u.line, u.token = V[u.currentChar] & 8192 ? q0(u, e) : Yu(u, e, 0), u.token; + } + function q0(u, e) { + let i = u.currentChar, n = r(u), t = u.index; + for (; n !== i; ) + u.index >= u.end && f(u, 14), n = r(u); + return n !== i && f(u, 14), u.tokenValue = u.source.slice(t, u.index), r(u), e & 512 && (u.tokenRaw = u.source.slice(u.tokenPos, u.index)), 134283267; + } + function V2(u, e) { + if (u.startPos = u.tokenPos = u.index, u.startColumn = u.colPos = u.column, u.startLine = u.linePos = u.line, u.index >= u.end) + return u.token = 1048576; + switch (Wu[u.source.charCodeAt(u.index)]) { + case 8456258: { + r(u), u.currentChar === 47 ? (r(u), u.token = 25) : u.token = 8456258; + break; + } + case 2162700: { + r(u), u.token = 2162700; + break; + } + default: { + let n = 0; + for (; u.index < u.end; ) { + let o = V[u.source.charCodeAt(u.index)]; + if (o & 1024 ? (n |= 5, X(u)) : o & 2048 ? (Y(u, n), n = n & -5 | 1) : r(u), V[u.currentChar] & 16384) + break; + } + let t = u.source.slice(u.tokenPos, u.index); + e & 512 && (u.tokenRaw = t), u.tokenValue = D0(t), u.token = 138; + } + } + return u.token; + } + function N1(u) { + if ((u.token & 143360) === 143360) { + let { index: e } = u, i = u.currentChar; + for (; V[i] & 32770; ) + i = r(u); + u.tokenValue += u.source.slice(e, u.index); + } + return u.token = 208897, u.token; + } + function d2(u, e, i) { + (u.flags & 1) === 0 && (u.token & 1048576) !== 1048576 && !i && f(u, 28, G[u.token & 255]), U(u, e, 1074790417); + } + function Zu(u, e, i, n) { + return e - i < 13 && n === "use strict" && ((u.token & 1048576) === 1048576 || u.flags & 1) ? 1 : 0; + } + function V1(u, e, i) { + return u.token !== i ? 0 : (E(u, e), 1); + } + function U(u, e, i) { + return u.token !== i ? false : (E(u, e), true); + } + function w(u, e, i) { + u.token !== i && f(u, 23, G[i & 255]), E(u, e); + } + function v2(u, e) { + switch (e.type) { + case "ArrayExpression": + e.type = "ArrayPattern"; + let i = e.elements; + for (let t = 0, o = i.length; t < o; ++t) { + let l = i[t]; + l && v2(u, l); + } + return; + case "ObjectExpression": + e.type = "ObjectPattern"; + let n = e.properties; + for (let t = 0, o = n.length; t < o; ++t) + v2(u, n[t]); + return; + case "AssignmentExpression": + e.type = "AssignmentPattern", e.operator !== "=" && f(u, 68), delete e.operator, v2(u, e.left); + return; + case "Property": + v2(u, e.value); + return; + case "SpreadElement": + e.type = "RestElement", v2(u, e.argument); + } + } + function o1(u, e, i, n, t) { + e & 1024 && ((n & 36864) === 36864 && f(u, 114), !t && (n & 537079808) === 537079808 && f(u, 115)), (n & 20480) === 20480 && f(u, 99), i & 24 && n === 241739 && f(u, 97), e & 4196352 && n === 209008 && f(u, 95), e & 2098176 && n === 241773 && f(u, 94, "yield"); + } + function Qu(u, e, i) { + e & 1024 && ((i & 36864) === 36864 && f(u, 114), (i & 537079808) === 537079808 && f(u, 115), i === 122 && f(u, 92), i === 121 && f(u, 92)), (i & 20480) === 20480 && f(u, 99), e & 4196352 && i === 209008 && f(u, 95), e & 2098176 && i === 241773 && f(u, 94, "yield"); + } + function Gu(u, e, i) { + return i === 209008 && (e & 4196352 && f(u, 95), u.destructible |= 128), i === 241773 && e & 2097152 && f(u, 94, "yield"), (i & 20480) === 20480 || (i & 36864) === 36864 || i == 122; + } + function B0(u) { + return u.property ? u.property.type === "PrivateIdentifier" : false; + } + function xu(u, e, i, n) { + for (; e; ) { + if (e["$" + i]) + return n && f(u, 133), 1; + n && e.loop && (n = 0), e = e.$; + } + return 0; + } + function S0(u, e, i) { + let n = e; + for (; n; ) + n["$" + i] && f(u, 132, i), n = n.$; + e["$" + i] = 1; + } + function v(u, e, i, n, t, o) { + return e & 2 && (o.start = i, o.end = u.startPos, o.range = [i, u.startPos]), e & 4 && (o.loc = { start: { line: n, column: t }, end: { line: u.startLine, column: u.startColumn } }, u.sourceFile && (o.loc.source = u.sourceFile)), o; + } + function l1(u) { + switch (u.type) { + case "JSXIdentifier": + return u.name; + case "JSXNamespacedName": + return u.namespace + ":" + u.name; + case "JSXMemberExpression": + return l1(u.object) + "." + l1(u.property); + } + } + function f1(u, e, i) { + let n = o2(j2(), 1024); + return B2(u, e, n, i, 1, 0), n; + } + function j1(u, e) { + let { index: i, line: n, column: t } = u; + for (var o = arguments.length, l = new Array(o > 2 ? o - 2 : 0), c = 2; c < o; c++) + l[c - 2] = arguments[c]; + return { type: e, params: l, index: i, line: n, column: t }; + } + function j2() { + return { parent: void 0, type: 2 }; + } + function o2(u, e) { + return { parent: u, type: e, scopeError: void 0 }; + } + function q2(u, e, i, n, t, o) { + t & 4 ? pu(u, e, i, n, t) : B2(u, e, i, n, t, o), o & 64 && _2(u, n); + } + function B2(u, e, i, n, t, o) { + let l = i["#" + n]; + l && (l & 2) === 0 && (t & 1 ? i.scopeError = j1(u, 140, n) : e & 256 && l & 64 && o & 2 || f(u, 140, n)), i.type & 128 && i.parent["#" + n] && (i.parent["#" + n] & 2) === 0 && f(u, 140, n), i.type & 1024 && l && (l & 2) === 0 && t & 1 && (i.scopeError = j1(u, 140, n)), i.type & 64 && i.parent["#" + n] & 768 && f(u, 153, n), i["#" + n] = t; + } + function pu(u, e, i, n, t) { + let o = i; + for (; o && (o.type & 256) === 0; ) { + let l = o["#" + n]; + l & 248 && (e & 256 && (e & 1024) === 0 && (t & 128 && l & 68 || l & 128 && t & 68) || f(u, 140, n)), o === i && l & 1 && t & 1 && (o.scopeError = j1(u, 140, n)), l & 768 && ((l & 512) === 0 || (e & 256) === 0 || e & 1024) && f(u, 140, n), o["#" + n] = t, o = o.parent; + } + } + function _2(u, e) { + u.exportedNames !== void 0 && e !== "" && (u.exportedNames["#" + e] && f(u, 141, e), u.exportedNames["#" + e] = 1); + } + function F0(u, e) { + u.exportedBindings !== void 0 && e !== "" && (u.exportedBindings["#" + e] = 1); + } + function T0(u, e) { + return function(i, n, t, o, l) { + let c = { type: i, value: n }; + u & 2 && (c.start = t, c.end = o, c.range = [t, o]), u & 4 && (c.loc = l), e.push(c); + }; + } + function L0(u, e) { + return function(i, n, t, o) { + let l = { token: i }; + u & 2 && (l.start = n, l.end = t, l.range = [n, t]), u & 4 && (l.loc = o), e.push(l); + }; + } + function _1(u, e) { + return u & 2098176 ? u & 2048 && e === 209008 || u & 2097152 && e === 241773 ? false : (e & 143360) === 143360 || (e & 12288) === 12288 : (e & 143360) === 143360 || (e & 12288) === 12288 || (e & 36864) === 36864; + } + function M1(u, e, i, n) { + (i & 537079808) === 537079808 && (e & 1024 && f(u, 115), n && (u.flags |= 512)), _1(e, i) || f(u, 0); + } + function O0(u, e, i, n) { + return { source: u, flags: 0, index: 0, line: 1, column: 0, startPos: 0, end: u.length, tokenPos: 0, startColumn: 0, colPos: 0, linePos: 1, startLine: 1, sourceFile: e, tokenValue: "", token: 1048576, tokenRaw: "", tokenRegExp: void 0, currentChar: u.charCodeAt(0), exportedNames: [], exportedBindings: [], assignable: 1, destructible: 0, onComment: i, onToken: n, leadingDecorators: [] }; + } + function U1(u, e, i) { + let n = "", t, o; + e != null && (e.module && (i |= 3072), e.next && (i |= 1), e.loc && (i |= 4), e.ranges && (i |= 2), e.uniqueKeyInPattern && (i |= -2147483648), e.lexical && (i |= 64), e.webcompat && (i |= 256), e.directives && (i |= 520), e.globalReturn && (i |= 32), e.raw && (i |= 512), e.preserveParens && (i |= 128), e.impliedStrict && (i |= 1024), e.jsx && (i |= 16), e.identifierPattern && (i |= 268435456), e.specDeviation && (i |= 536870912), e.source && (n = e.source), e.onComment != null && (t = Array.isArray(e.onComment) ? T0(i, e.onComment) : e.onComment), e.onToken != null && (o = Array.isArray(e.onToken) ? L0(i, e.onToken) : e.onToken)); + let l = O0(u, n, t, o); + i & 1 && c2(l); + let c = i & 64 ? j2() : void 0, s = [], h = "script"; + if (i & 2048) { + if (h = "module", s = R0(l, i | 8192, c), c) + for (let g in l.exportedBindings) + g[0] === "#" && !c[g] && f(l, 142, g.slice(1)); + } else + s = I0(l, i | 8192, c); + let b = { type: "Program", sourceType: h, body: s }; + return i & 2 && (b.start = 0, b.end = u.length, b.range = [0, u.length]), i & 4 && (b.loc = { start: { line: 1, column: 0 }, end: { line: l.line, column: l.column } }, l.sourceFile && (b.loc.source = n)), b; + } + function I0(u, e, i) { + E(u, e | 32768 | 1073741824); + let n = []; + for (; u.token === 134283267; ) { + let { index: t, tokenPos: o, tokenValue: l, linePos: c, colPos: s, token: h } = u, b = a2(u, e); + Zu(u, t, o, l) && (e |= 1024), n.push(X1(u, e, b, h, o, c, s)); + } + for (; u.token !== 1048576; ) + n.push(G2(u, e, i, 4, {})); + return n; + } + function R0(u, e, i) { + E(u, e | 32768); + let n = []; + if (e & 8) + for (; u.token === 134283267; ) { + let { tokenPos: t, linePos: o, colPos: l, token: c } = u; + n.push(X1(u, e, a2(u, e), c, t, o, l)); + } + for (; u.token !== 1048576; ) + n.push(N0(u, e, i)); + return n; + } + function N0(u, e, i) { + u.leadingDecorators = b1(u, e); + let n; + switch (u.token) { + case 20566: + n = ut(u, e, i); + break; + case 86108: + n = x0(u, e, i); + break; + default: + n = G2(u, e, i, 4, {}); + } + return u.leadingDecorators.length && f(u, 164), n; + } + function G2(u, e, i, n, t) { + let o = u.tokenPos, l = u.linePos, c = u.colPos; + switch (u.token) { + case 86106: + return T2(u, e, i, n, 1, 0, 0, o, l, c); + case 133: + case 86096: + return Z1(u, e, i, 0, o, l, c); + case 86092: + return z1(u, e, i, 16, 0, o, l, c); + case 241739: + return Q0(u, e, i, n, o, l, c); + case 20566: + f(u, 100, "export"); + case 86108: + switch (E(u, e), u.token) { + case 67174411: + return ce(u, e, o, l, c); + case 67108877: + return fe(u, e, o, l, c); + default: + f(u, 100, "import"); + } + case 209007: + return ue(u, e, i, n, t, 1, o, l, c); + default: + return x2(u, e, i, n, t, 1, o, l, c); + } + } + function x2(u, e, i, n, t, o, l, c, s) { + switch (u.token) { + case 86090: + return ie(u, e, i, 0, l, c, s); + case 20574: + return j0(u, e, l, c, s); + case 20571: + return U0(u, e, i, t, l, c, s); + case 20569: + return G0(u, e, i, t, l, c, s); + case 20564: + return Z0(u, e, i, t, l, c, s); + case 20580: + return X0(u, e, i, t, l, c, s); + case 86112: + return J0(u, e, i, t, l, c, s); + case 1074790417: + return _0(u, e, l, c, s); + case 2162700: + return c1(u, e, i && o2(i, 2), t, l, c, s); + case 86114: + return M0(u, e, l, c, s); + case 20557: + return H0(u, e, t, l, c, s); + case 20561: + return z0(u, e, t, l, c, s); + case 20579: + return Y0(u, e, i, t, l, c, s); + case 20581: + return K0(u, e, i, t, l, c, s); + case 20562: + return W0(u, e, l, c, s); + case 209007: + return ue(u, e, i, n, t, 0, l, c, s); + case 20559: + f(u, 156); + case 20568: + f(u, 157); + case 86106: + f(u, e & 1024 ? 73 : (e & 256) < 1 ? 75 : 74); + case 86096: + f(u, 76); + default: + return V0(u, e, i, n, t, o, l, c, s); + } + } + function V0(u, e, i, n, t, o, l, c, s) { + let { tokenValue: h, token: b } = u, g; + switch (b) { + case 241739: + g = z(u, e, 0), e & 1024 && f(u, 82), u.token === 69271571 && f(u, 81); + break; + default: + g = h2(u, e, 2, 0, 1, 0, 0, 1, u.tokenPos, u.linePos, u.colPos); + } + return b & 143360 && u.token === 21 ? J1(u, e, i, n, t, h, g, b, o, l, c, s) : (g = W(u, e, g, 0, 0, l, c, s), g = x(u, e, 0, 0, l, c, s, g), u.token === 18 && (g = S2(u, e, 0, l, c, s, g)), H2(u, e, g, l, c, s)); + } + function c1(u, e, i, n, t, o, l) { + let c = []; + for (w(u, e | 32768, 2162700); u.token !== 1074790415; ) + c.push(G2(u, e, i, 2, { $: n })); + return w(u, e | 32768, 1074790415), v(u, e, t, o, l, { type: "BlockStatement", body: c }); + } + function j0(u, e, i, n, t) { + (e & 32) < 1 && e & 8192 && f(u, 89), E(u, e | 32768); + let o = u.flags & 1 || u.token & 1048576 ? null : f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos); + return d2(u, e | 32768), v(u, e, i, n, t, { type: "ReturnStatement", argument: o }); + } + function H2(u, e, i, n, t, o) { + return d2(u, e | 32768), v(u, e, n, t, o, { type: "ExpressionStatement", expression: i }); + } + function J1(u, e, i, n, t, o, l, c, s, h, b, g) { + o1(u, e, 0, c, 1), S0(u, t, o), E(u, e | 32768); + let a = s && (e & 1024) < 1 && e & 256 && u.token === 86106 ? T2(u, e, o2(i, 2), n, 0, 0, 0, u.tokenPos, u.linePos, u.colPos) : x2(u, e, i, n, t, s, u.tokenPos, u.linePos, u.colPos); + return v(u, e, h, b, g, { type: "LabeledStatement", label: l, body: a }); + } + function ue(u, e, i, n, t, o, l, c, s) { + let { token: h, tokenValue: b } = u, g = z(u, e, 0); + if (u.token === 21) + return J1(u, e, i, n, t, b, g, h, 1, l, c, s); + let a = u.flags & 1; + if (!a) { + if (u.token === 86106) + return o || f(u, 119), T2(u, e, i, n, 1, 0, 1, l, c, s); + if ((u.token & 143360) === 143360) + return g = ke(u, e, 1, l, c, s), u.token === 18 && (g = S2(u, e, 0, l, c, s, g)), H2(u, e, g, l, c, s); + } + return u.token === 67174411 ? g = $1(u, e, g, 1, 1, 0, a, l, c, s) : (u.token === 10 && (M1(u, e, h, 1), g = g1(u, e, u.tokenValue, g, 0, 1, 0, l, c, s)), u.assignable = 1), g = W(u, e, g, 0, 0, l, c, s), u.token === 18 && (g = S2(u, e, 0, l, c, s, g)), g = x(u, e, 0, 0, l, c, s, g), u.assignable = 1, H2(u, e, g, l, c, s); + } + function X1(u, e, i, n, t, o, l) { + return n !== 1074790417 && (u.assignable = 2, i = W(u, e, i, 0, 0, t, o, l), u.token !== 1074790417 && (i = x(u, e, 0, 0, t, o, l, i), u.token === 18 && (i = S2(u, e, 0, t, o, l, i))), d2(u, e | 32768)), e & 8 && i.type === "Literal" && typeof i.value == "string" ? v(u, e, t, o, l, { type: "ExpressionStatement", expression: i, directive: i.raw.slice(1, -1) }) : v(u, e, t, o, l, { type: "ExpressionStatement", expression: i }); + } + function _0(u, e, i, n, t) { + return E(u, e | 32768), v(u, e, i, n, t, { type: "EmptyStatement" }); + } + function M0(u, e, i, n, t) { + E(u, e | 32768), u.flags & 1 && f(u, 87); + let o = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos); + return d2(u, e | 32768), v(u, e, i, n, t, { type: "ThrowStatement", argument: o }); + } + function U0(u, e, i, n, t, o, l) { + E(u, e), w(u, e | 32768, 67174411), u.assignable = 1; + let c = f2(u, e, 0, 1, u.tokenPos, u.line, u.colPos); + w(u, e | 32768, 16); + let s = ee(u, e, i, n, u.tokenPos, u.linePos, u.colPos), h = null; + return u.token === 20565 && (E(u, e | 32768), h = ee(u, e, i, n, u.tokenPos, u.linePos, u.colPos)), v(u, e, t, o, l, { type: "IfStatement", test: c, consequent: s, alternate: h }); + } + function ee(u, e, i, n, t, o, l) { + return e & 1024 || (e & 256) < 1 || u.token !== 86106 ? x2(u, e, i, 0, { $: n }, 0, u.tokenPos, u.linePos, u.colPos) : T2(u, e, o2(i, 2), 0, 0, 0, 0, t, o, l); + } + function J0(u, e, i, n, t, o, l) { + E(u, e), w(u, e | 32768, 67174411); + let c = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos); + w(u, e, 16), w(u, e, 2162700); + let s = [], h = 0; + for (i && (i = o2(i, 8)); u.token !== 1074790415; ) { + let { tokenPos: b, linePos: g, colPos: a } = u, A = null, C = []; + for (U(u, e | 32768, 20558) ? A = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos) : (w(u, e | 32768, 20563), h && f(u, 86), h = 1), w(u, e | 32768, 21); u.token !== 20558 && u.token !== 1074790415 && u.token !== 20563; ) + C.push(G2(u, e | 4096, i, 2, { $: n })); + s.push(v(u, e, b, g, a, { type: "SwitchCase", test: A, consequent: C })); + } + return w(u, e | 32768, 1074790415), v(u, e, t, o, l, { type: "SwitchStatement", discriminant: c, cases: s }); + } + function X0(u, e, i, n, t, o, l) { + E(u, e), w(u, e | 32768, 67174411); + let c = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos); + w(u, e | 32768, 16); + let s = p2(u, e, i, n); + return v(u, e, t, o, l, { type: "WhileStatement", test: c, body: s }); + } + function p2(u, e, i, n) { + return x2(u, (e | 134217728) ^ 134217728 | 131072, i, 0, { loop: 1, $: n }, 0, u.tokenPos, u.linePos, u.colPos); + } + function z0(u, e, i, n, t, o) { + (e & 131072) < 1 && f(u, 65), E(u, e); + let l = null; + if ((u.flags & 1) < 1 && u.token & 143360) { + let { tokenValue: c } = u; + l = z(u, e | 32768, 0), xu(u, i, c, 1) || f(u, 134, c); + } + return d2(u, e | 32768), v(u, e, n, t, o, { type: "ContinueStatement", label: l }); + } + function H0(u, e, i, n, t, o) { + E(u, e | 32768); + let l = null; + if ((u.flags & 1) < 1 && u.token & 143360) { + let { tokenValue: c } = u; + l = z(u, e | 32768, 0), xu(u, i, c, 0) || f(u, 134, c); + } else + (e & 135168) < 1 && f(u, 66); + return d2(u, e | 32768), v(u, e, n, t, o, { type: "BreakStatement", label: l }); + } + function K0(u, e, i, n, t, o, l) { + E(u, e), e & 1024 && f(u, 88), w(u, e | 32768, 67174411); + let c = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos); + w(u, e | 32768, 16); + let s = x2(u, e, i, 2, n, 0, u.tokenPos, u.linePos, u.colPos); + return v(u, e, t, o, l, { type: "WithStatement", object: c, body: s }); + } + function W0(u, e, i, n, t) { + return E(u, e | 32768), d2(u, e | 32768), v(u, e, i, n, t, { type: "DebuggerStatement" }); + } + function Y0(u, e, i, n, t, o, l) { + E(u, e | 32768); + let c = i ? o2(i, 32) : void 0, s = c1(u, e, c, { $: n }, u.tokenPos, u.linePos, u.colPos), { tokenPos: h, linePos: b, colPos: g } = u, a = U(u, e | 32768, 20559) ? $0(u, e, i, n, h, b, g) : null, A = null; + if (u.token === 20568) { + E(u, e | 32768); + let C = c ? o2(i, 4) : void 0; + A = c1(u, e, C, { $: n }, u.tokenPos, u.linePos, u.colPos); + } + return !a && !A && f(u, 85), v(u, e, t, o, l, { type: "TryStatement", block: s, handler: a, finalizer: A }); + } + function $0(u, e, i, n, t, o, l) { + let c = null, s = i; + U(u, e, 67174411) && (i && (i = o2(i, 4)), c = Ae(u, e, i, (u.token & 2097152) === 2097152 ? 256 : 512, 0, u.tokenPos, u.linePos, u.colPos), u.token === 18 ? f(u, 83) : u.token === 1077936157 && f(u, 84), w(u, e | 32768, 16), i && (s = o2(i, 64))); + let h = c1(u, e, s, { $: n }, u.tokenPos, u.linePos, u.colPos); + return v(u, e, t, o, l, { type: "CatchClause", param: c, body: h }); + } + function Z0(u, e, i, n, t, o, l) { + E(u, e | 32768); + let c = p2(u, e, i, n); + w(u, e, 20580), w(u, e | 32768, 67174411); + let s = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos); + return w(u, e | 32768, 16), U(u, e, 1074790417), v(u, e, t, o, l, { type: "DoWhileStatement", body: c, test: s }); + } + function Q0(u, e, i, n, t, o, l) { + let { token: c, tokenValue: s } = u, h = z(u, e, 0); + if (u.token & 2240512) { + let b = K2(u, e, i, 8, 0); + return d2(u, e | 32768), v(u, e, t, o, l, { type: "VariableDeclaration", kind: "let", declarations: b }); + } + if (u.assignable = 1, e & 1024 && f(u, 82), u.token === 21) + return J1(u, e, i, n, {}, s, h, c, 0, t, o, l); + if (u.token === 10) { + let b; + e & 64 && (b = f1(u, e, s)), u.flags = (u.flags | 128) ^ 128, h = u1(u, e, b, [h], 0, t, o, l); + } else + h = W(u, e, h, 0, 0, t, o, l), h = x(u, e, 0, 0, t, o, l, h); + return u.token === 18 && (h = S2(u, e, 0, t, o, l, h)), H2(u, e, h, t, o, l); + } + function z1(u, e, i, n, t, o, l, c) { + E(u, e); + let s = K2(u, e, i, n, t); + return d2(u, e | 32768), v(u, e, o, l, c, { type: "VariableDeclaration", kind: n & 8 ? "let" : "const", declarations: s }); + } + function ie(u, e, i, n, t, o, l) { + E(u, e); + let c = K2(u, e, i, 4, n); + return d2(u, e | 32768), v(u, e, t, o, l, { type: "VariableDeclaration", kind: "var", declarations: c }); + } + function K2(u, e, i, n, t) { + let o = 1, l = [ne(u, e, i, n, t)]; + for (; U(u, e, 18); ) + o++, l.push(ne(u, e, i, n, t)); + return o > 1 && t & 32 && u.token & 262144 && f(u, 58, G[u.token & 255]), l; + } + function ne(u, e, i, n, t) { + let { token: o, tokenPos: l, linePos: c, colPos: s } = u, h = null, b = Ae(u, e, i, n, t, l, c, s); + return u.token === 1077936157 ? (E(u, e | 32768), h = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos), (t & 32 || (o & 2097152) < 1) && (u.token === 274549 || u.token === 8738868 && (o & 2097152 || (n & 4) < 1 || e & 1024)) && S(l, u.line, u.index - 3, 57, u.token === 274549 ? "of" : "in")) : (n & 16 || (o & 2097152) > 0) && (u.token & 262144) !== 262144 && f(u, 56, n & 16 ? "const" : "destructuring"), v(u, e, l, c, s, { type: "VariableDeclarator", id: b, init: h }); + } + function G0(u, e, i, n, t, o, l) { + E(u, e); + let c = (e & 4194304) > 0 && U(u, e, 209008); + w(u, e | 32768, 67174411), i && (i = o2(i, 1)); + let s = null, h = null, b = 0, g = null, a = u.token === 86090 || u.token === 241739 || u.token === 86092, A, { token: C, tokenPos: D, linePos: B, colPos: O } = u; + if (a ? C === 241739 ? (g = z(u, e, 0), u.token & 2240512 ? (u.token === 8738868 ? e & 1024 && f(u, 64) : g = v(u, e, D, B, O, { type: "VariableDeclaration", kind: "let", declarations: K2(u, e | 134217728, i, 8, 32) }), u.assignable = 1) : e & 1024 ? f(u, 64) : (a = false, u.assignable = 1, g = W(u, e, g, 0, 0, D, B, O), u.token === 274549 && f(u, 111))) : (E(u, e), g = v(u, e, D, B, O, C === 86090 ? { type: "VariableDeclaration", kind: "var", declarations: K2(u, e | 134217728, i, 4, 32) } : { type: "VariableDeclaration", kind: "const", declarations: K2(u, e | 134217728, i, 16, 32) }), u.assignable = 1) : C === 1074790417 ? c && f(u, 79) : (C & 2097152) === 2097152 ? (g = C === 2162700 ? r2(u, e, void 0, 1, 0, 0, 2, 32, D, B, O) : k2(u, e, void 0, 1, 0, 0, 2, 32, D, B, O), b = u.destructible, e & 256 && b & 64 && f(u, 60), u.assignable = b & 16 ? 2 : 1, g = W(u, e | 134217728, g, 0, 0, u.tokenPos, u.linePos, u.colPos)) : g = b2(u, e | 134217728, 1, 0, 1, D, B, O), (u.token & 262144) === 262144) { + if (u.token === 274549) { + u.assignable & 2 && f(u, 77, c ? "await" : "of"), v2(u, g), E(u, e | 32768), A = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos), w(u, e | 32768, 16); + let R = p2(u, e, i, n); + return v(u, e, t, o, l, { type: "ForOfStatement", left: g, right: A, body: R, await: c }); + } + u.assignable & 2 && f(u, 77, "in"), v2(u, g), E(u, e | 32768), c && f(u, 79), A = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos), w(u, e | 32768, 16); + let e2 = p2(u, e, i, n); + return v(u, e, t, o, l, { type: "ForInStatement", body: e2, left: g, right: A }); + } + c && f(u, 79), a || (b & 8 && u.token !== 1077936157 && f(u, 77, "loop"), g = x(u, e | 134217728, 0, 0, D, B, O, g)), u.token === 18 && (g = S2(u, e, 0, u.tokenPos, u.linePos, u.colPos, g)), w(u, e | 32768, 1074790417), u.token !== 1074790417 && (s = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos)), w(u, e | 32768, 1074790417), u.token !== 16 && (h = f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos)), w(u, e | 32768, 16); + let j = p2(u, e, i, n); + return v(u, e, t, o, l, { type: "ForStatement", init: g, test: s, update: h, body: j }); + } + function te(u, e, i) { + return _1(e, u.token) || f(u, 114), (u.token & 537079808) === 537079808 && f(u, 115), i && B2(u, e, i, u.tokenValue, 8, 0), z(u, e, 0); + } + function x0(u, e, i) { + let n = u.tokenPos, t = u.linePos, o = u.colPos; + E(u, e); + let l = null, { tokenPos: c, linePos: s, colPos: h } = u, b = []; + if (u.token === 134283267) + l = a2(u, e); + else { + if (u.token & 143360) { + let g = te(u, e, i); + if (b = [v(u, e, c, s, h, { type: "ImportDefaultSpecifier", local: g })], U(u, e, 18)) + switch (u.token) { + case 8457014: + b.push(oe(u, e, i)); + break; + case 2162700: + le(u, e, i, b); + break; + default: + f(u, 104); + } + } else + switch (u.token) { + case 8457014: + b = [oe(u, e, i)]; + break; + case 2162700: + le(u, e, i, b); + break; + case 67174411: + return ce(u, e, n, t, o); + case 67108877: + return fe(u, e, n, t, o); + default: + f(u, 28, G[u.token & 255]); + } + l = p0(u, e); + } + return d2(u, e | 32768), v(u, e, n, t, o, { type: "ImportDeclaration", specifiers: b, source: l }); + } + function oe(u, e, i) { + let { tokenPos: n, linePos: t, colPos: o } = u; + return E(u, e), w(u, e, 77934), (u.token & 134217728) === 134217728 && S(n, u.line, u.index, 28, G[u.token & 255]), v(u, e, n, t, o, { type: "ImportNamespaceSpecifier", local: te(u, e, i) }); + } + function p0(u, e) { + return U(u, e, 12404), u.token !== 134283267 && f(u, 102, "Import"), a2(u, e); + } + function le(u, e, i, n) { + for (E(u, e); u.token & 143360; ) { + let { token: t, tokenValue: o, tokenPos: l, linePos: c, colPos: s } = u, h = z(u, e, 0), b; + U(u, e, 77934) ? ((u.token & 134217728) === 134217728 || u.token === 18 ? f(u, 103) : o1(u, e, 16, u.token, 0), o = u.tokenValue, b = z(u, e, 0)) : (o1(u, e, 16, t, 0), b = h), i && B2(u, e, i, o, 8, 0), n.push(v(u, e, l, c, s, { type: "ImportSpecifier", local: b, imported: h })), u.token !== 1074790415 && w(u, e, 18); + } + return w(u, e, 1074790415), n; + } + function fe(u, e, i, n, t) { + let o = ae(u, e, v(u, e, i, n, t, { type: "Identifier", name: "import" }), i, n, t); + return o = W(u, e, o, 0, 0, i, n, t), o = x(u, e, 0, 0, i, n, t, o), H2(u, e, o, i, n, t); + } + function ce(u, e, i, n, t) { + let o = de(u, e, 0, i, n, t); + return o = W(u, e, o, 0, 0, i, n, t), H2(u, e, o, i, n, t); + } + function ut(u, e, i) { + let n = u.tokenPos, t = u.linePos, o = u.colPos; + E(u, e | 32768); + let l = [], c = null, s = null, h; + if (U(u, e | 32768, 20563)) { + switch (u.token) { + case 86106: { + c = T2(u, e, i, 4, 1, 1, 0, u.tokenPos, u.linePos, u.colPos); + break; + } + case 133: + case 86096: + c = Z1(u, e, i, 1, u.tokenPos, u.linePos, u.colPos); + break; + case 209007: + let { tokenPos: b, linePos: g, colPos: a } = u; + c = z(u, e, 0); + let { flags: A } = u; + (A & 1) < 1 && (u.token === 86106 ? c = T2(u, e, i, 4, 1, 1, 1, b, g, a) : u.token === 67174411 ? (c = $1(u, e, c, 1, 1, 0, A, b, g, a), c = W(u, e, c, 0, 0, b, g, a), c = x(u, e, 0, 0, b, g, a, c)) : u.token & 143360 && (i && (i = f1(u, e, u.tokenValue)), c = z(u, e, 0), c = u1(u, e, i, [c], 1, b, g, a))); + break; + default: + c = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos), d2(u, e | 32768); + } + return i && _2(u, "default"), v(u, e, n, t, o, { type: "ExportDefaultDeclaration", declaration: c }); + } + switch (u.token) { + case 8457014: { + E(u, e); + let A = null; + return U(u, e, 77934) && (i && _2(u, u.tokenValue), A = z(u, e, 0)), w(u, e, 12404), u.token !== 134283267 && f(u, 102, "Export"), s = a2(u, e), d2(u, e | 32768), v(u, e, n, t, o, { type: "ExportAllDeclaration", source: s, exported: A }); + } + case 2162700: { + E(u, e); + let A = [], C = []; + for (; u.token & 143360; ) { + let { tokenPos: D, tokenValue: B, linePos: O, colPos: j } = u, e2 = z(u, e, 0), R; + u.token === 77934 ? (E(u, e), (u.token & 134217728) === 134217728 && f(u, 103), i && (A.push(u.tokenValue), C.push(B)), R = z(u, e, 0)) : (i && (A.push(u.tokenValue), C.push(u.tokenValue)), R = e2), l.push(v(u, e, D, O, j, { type: "ExportSpecifier", local: e2, exported: R })), u.token !== 1074790415 && w(u, e, 18); + } + if (w(u, e, 1074790415), U(u, e, 12404)) + u.token !== 134283267 && f(u, 102, "Export"), s = a2(u, e); + else if (i) { + let D = 0, B = A.length; + for (; D < B; D++) + _2(u, A[D]); + for (D = 0, B = C.length; D < B; D++) + F0(u, C[D]); + } + d2(u, e | 32768); + break; + } + case 86096: + c = Z1(u, e, i, 2, u.tokenPos, u.linePos, u.colPos); + break; + case 86106: + c = T2(u, e, i, 4, 1, 2, 0, u.tokenPos, u.linePos, u.colPos); + break; + case 241739: + c = z1(u, e, i, 8, 64, u.tokenPos, u.linePos, u.colPos); + break; + case 86092: + c = z1(u, e, i, 16, 64, u.tokenPos, u.linePos, u.colPos); + break; + case 86090: + c = ie(u, e, i, 64, u.tokenPos, u.linePos, u.colPos); + break; + case 209007: + let { tokenPos: b, linePos: g, colPos: a } = u; + if (E(u, e), (u.flags & 1) < 1 && u.token === 86106) { + c = T2(u, e, i, 4, 1, 2, 1, b, g, a), i && (h = c.id ? c.id.name : "", _2(u, h)); + break; + } + default: + f(u, 28, G[u.token & 255]); + } + return v(u, e, n, t, o, { type: "ExportNamedDeclaration", declaration: c, specifiers: l, source: s }); + } + function Q(u, e, i, n, t, o, l, c) { + let s = h2(u, e, 2, 0, i, n, t, 1, o, l, c); + return s = W(u, e, s, t, 0, o, l, c), x(u, e, t, 0, o, l, c, s); + } + function S2(u, e, i, n, t, o, l) { + let c = [l]; + for (; U(u, e | 32768, 18); ) + c.push(Q(u, e, 1, 0, i, u.tokenPos, u.linePos, u.colPos)); + return v(u, e, n, t, o, { type: "SequenceExpression", expressions: c }); + } + function f2(u, e, i, n, t, o, l) { + let c = Q(u, e, n, 0, i, t, o, l); + return u.token === 18 ? S2(u, e, i, t, o, l, c) : c; + } + function x(u, e, i, n, t, o, l, c) { + let { token: s } = u; + if ((s & 4194304) === 4194304) { + u.assignable & 2 && f(u, 24), (!n && s === 1077936157 && c.type === "ArrayExpression" || c.type === "ObjectExpression") && v2(u, c), E(u, e | 32768); + let h = Q(u, e, 1, 1, i, u.tokenPos, u.linePos, u.colPos); + return u.assignable = 2, v(u, e, t, o, l, n ? { type: "AssignmentPattern", left: c, right: h } : { type: "AssignmentExpression", left: c, operator: G[s & 255], right: h }); + } + return (s & 8454144) === 8454144 && (c = F2(u, e, i, t, o, l, 4, s, c)), U(u, e | 32768, 22) && (c = M2(u, e, c, t, o, l)), c; + } + function s1(u, e, i, n, t, o, l, c) { + let { token: s } = u; + E(u, e | 32768); + let h = Q(u, e, 1, 1, i, u.tokenPos, u.linePos, u.colPos); + return c = v(u, e, t, o, l, n ? { type: "AssignmentPattern", left: c, right: h } : { type: "AssignmentExpression", left: c, operator: G[s & 255], right: h }), u.assignable = 2, c; + } + function M2(u, e, i, n, t, o) { + let l = Q(u, (e | 134217728) ^ 134217728, 1, 0, 0, u.tokenPos, u.linePos, u.colPos); + w(u, e | 32768, 21), u.assignable = 1; + let c = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos); + return u.assignable = 2, v(u, e, n, t, o, { type: "ConditionalExpression", test: i, consequent: l, alternate: c }); + } + function F2(u, e, i, n, t, o, l, c, s) { + let h = -((e & 134217728) > 0) & 8738868, b, g; + for (u.assignable = 2; u.token & 8454144 && (b = u.token, g = b & 3840, (b & 524288 && c & 268435456 || c & 524288 && b & 268435456) && f(u, 159), !(g + ((b === 8457273) << 8) - ((h === b) << 12) <= l)); ) + E(u, e | 32768), s = v(u, e, n, t, o, { type: b & 524288 || b & 268435456 ? "LogicalExpression" : "BinaryExpression", left: s, right: F2(u, e, i, u.tokenPos, u.linePos, u.colPos, g, b, b2(u, e, 0, i, 1, u.tokenPos, u.linePos, u.colPos)), operator: G[b & 255] }); + return u.token === 1077936157 && f(u, 24), s; + } + function et(u, e, i, n, t, o, l) { + i || f(u, 0); + let c = u.token; + E(u, e | 32768); + let s = b2(u, e, 0, l, 1, u.tokenPos, u.linePos, u.colPos); + return u.token === 8457273 && f(u, 31), e & 1024 && c === 16863278 && (s.type === "Identifier" ? f(u, 117) : B0(s) && f(u, 123)), u.assignable = 2, v(u, e, n, t, o, { type: "UnaryExpression", operator: G[c & 255], argument: s, prefix: true }); + } + function it(u, e, i, n, t, o, l, c, s, h) { + let { token: b } = u, g = z(u, e, o), { flags: a } = u; + if ((a & 1) < 1) { + if (u.token === 86106) + return he(u, e, 1, i, c, s, h); + if ((u.token & 143360) === 143360) + return n || f(u, 0), ke(u, e, t, c, s, h); + } + return !l && u.token === 67174411 ? $1(u, e, g, t, 1, 0, a, c, s, h) : u.token === 10 ? (M1(u, e, b, 1), l && f(u, 48), g1(u, e, u.tokenValue, g, l, t, 0, c, s, h)) : g; + } + function nt(u, e, i, n, t, o, l) { + if (i && (u.destructible |= 256), e & 2097152) { + E(u, e | 32768), e & 8388608 && f(u, 30), n || f(u, 24), u.token === 22 && f(u, 120); + let c = null, s = false; + return (u.flags & 1) < 1 && (s = U(u, e | 32768, 8457014), (u.token & 77824 || s) && (c = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos))), u.assignable = 2, v(u, e, t, o, l, { type: "YieldExpression", argument: c, delegate: s }); + } + return e & 1024 && f(u, 94, "yield"), Y1(u, e, t, o, l); + } + function tt(u, e, i, n, t, o, l) { + if (n && (u.destructible |= 128), e & 4194304 || e & 2048 && e & 8192) { + i && f(u, 0), e & 8388608 && S(u.index, u.line, u.index, 29), E(u, e | 32768); + let c = b2(u, e, 0, 0, 1, u.tokenPos, u.linePos, u.colPos); + return u.token === 8457273 && f(u, 31), u.assignable = 2, v(u, e, t, o, l, { type: "AwaitExpression", argument: c }); + } + return e & 2048 && f(u, 95), Y1(u, e, t, o, l); + } + function a1(u, e, i, n, t, o) { + let { tokenPos: l, linePos: c, colPos: s } = u; + w(u, e | 32768, 2162700); + let h = [], b = e; + if (u.token !== 1074790415) { + for (; u.token === 134283267; ) { + let { index: g, tokenPos: a, tokenValue: A, token: C } = u, D = a2(u, e); + Zu(u, g, a, A) && (e |= 1024, u.flags & 128 && S(u.index, u.line, u.tokenPos, 63), u.flags & 64 && S(u.index, u.line, u.tokenPos, 8)), h.push(X1(u, e, D, C, a, u.linePos, u.colPos)); + } + e & 1024 && (t && ((t & 537079808) === 537079808 && f(u, 115), (t & 36864) === 36864 && f(u, 38)), u.flags & 512 && f(u, 115), u.flags & 256 && f(u, 114)), e & 64 && i && o !== void 0 && (b & 1024) < 1 && (e & 8192) < 1 && P(o); + } + for (u.flags = (u.flags | 512 | 256 | 64) ^ 832, u.destructible = (u.destructible | 256) ^ 256; u.token !== 1074790415; ) + h.push(G2(u, e, i, 4, {})); + return w(u, n & 24 ? e | 32768 : e, 1074790415), u.flags &= -193, u.token === 1077936157 && f(u, 24), v(u, e, l, c, s, { type: "BlockStatement", body: h }); + } + function ot(u, e, i, n, t) { + switch (E(u, e), u.token) { + case 67108991: + f(u, 161); + case 67174411: { + (e & 524288) < 1 && f(u, 26), e & 16384 && f(u, 27), u.assignable = 2; + break; + } + case 69271571: + case 67108877: { + (e & 262144) < 1 && f(u, 27), e & 16384 && f(u, 27), u.assignable = 1; + break; + } + default: + f(u, 28, "super"); + } + return v(u, e, i, n, t, { type: "Super" }); + } + function b2(u, e, i, n, t, o, l, c) { + let s = h2(u, e, 2, 0, i, 0, n, t, o, l, c); + return W(u, e, s, n, 0, o, l, c); + } + function lt(u, e, i, n, t, o) { + u.assignable & 2 && f(u, 52); + let { token: l } = u; + return E(u, e), u.assignable = 2, v(u, e, n, t, o, { type: "UpdateExpression", argument: i, operator: G[l & 255], prefix: false }); + } + function W(u, e, i, n, t, o, l, c) { + if ((u.token & 33619968) === 33619968 && (u.flags & 1) < 1) + i = lt(u, e, i, o, l, c); + else if ((u.token & 67108864) === 67108864) { + switch (e = (e | 134217728) ^ 134217728, u.token) { + case 67108877: { + E(u, (e | 1073741824 | 8192) ^ 8192), u.assignable = 1; + let s = se(u, e); + i = v(u, e, o, l, c, { type: "MemberExpression", object: i, computed: false, property: s }); + break; + } + case 69271571: { + let s = false; + (u.flags & 2048) === 2048 && (s = true, u.flags = (u.flags | 2048) ^ 2048), E(u, e | 32768); + let { tokenPos: h, linePos: b, colPos: g } = u, a = f2(u, e, n, 1, h, b, g); + w(u, e, 20), u.assignable = 1, i = v(u, e, o, l, c, { type: "MemberExpression", object: i, computed: true, property: a }), s && (u.flags |= 2048); + break; + } + case 67174411: { + if ((u.flags & 1024) === 1024) + return u.flags = (u.flags | 1024) ^ 1024, i; + let s = false; + (u.flags & 2048) === 2048 && (s = true, u.flags = (u.flags | 2048) ^ 2048); + let h = W1(u, e, n); + u.assignable = 2, i = v(u, e, o, l, c, { type: "CallExpression", callee: i, arguments: h }), s && (u.flags |= 2048); + break; + } + case 67108991: { + E(u, (e | 1073741824 | 8192) ^ 8192), u.flags |= 2048, u.assignable = 2, i = ft(u, e, i, o, l, c); + break; + } + default: + (u.flags & 2048) === 2048 && f(u, 160), u.assignable = 2, i = v(u, e, o, l, c, { type: "TaggedTemplateExpression", tag: i, quasi: u.token === 67174408 ? K1(u, e | 65536) : H1(u, e, u.tokenPos, u.linePos, u.colPos) }); + } + i = W(u, e, i, 0, 1, o, l, c); + } + return t === 0 && (u.flags & 2048) === 2048 && (u.flags = (u.flags | 2048) ^ 2048, i = v(u, e, o, l, c, { type: "ChainExpression", expression: i })), i; + } + function ft(u, e, i, n, t, o) { + let l = false, c; + if ((u.token === 69271571 || u.token === 67174411) && (u.flags & 2048) === 2048 && (l = true, u.flags = (u.flags | 2048) ^ 2048), u.token === 69271571) { + E(u, e | 32768); + let { tokenPos: s, linePos: h, colPos: b } = u, g = f2(u, e, 0, 1, s, h, b); + w(u, e, 20), u.assignable = 2, c = v(u, e, n, t, o, { type: "MemberExpression", object: i, computed: true, optional: true, property: g }); + } else if (u.token === 67174411) { + let s = W1(u, e, 0); + u.assignable = 2, c = v(u, e, n, t, o, { type: "CallExpression", callee: i, arguments: s, optional: true }); + } else { + (u.token & 143360) < 1 && f(u, 154); + let s = z(u, e, 0); + u.assignable = 2, c = v(u, e, n, t, o, { type: "MemberExpression", object: i, computed: false, optional: true, property: s }); + } + return l && (u.flags |= 2048), c; + } + function se(u, e) { + return (u.token & 143360) < 1 && u.token !== 131 && f(u, 154), e & 1 && u.token === 131 ? k1(u, e, u.tokenPos, u.linePos, u.colPos) : z(u, e, 0); + } + function ct(u, e, i, n, t, o, l) { + i && f(u, 53), n || f(u, 0); + let { token: c } = u; + E(u, e | 32768); + let s = b2(u, e, 0, 0, 1, u.tokenPos, u.linePos, u.colPos); + return u.assignable & 2 && f(u, 52), u.assignable = 2, v(u, e, t, o, l, { type: "UpdateExpression", argument: s, operator: G[c & 255], prefix: true }); + } + function h2(u, e, i, n, t, o, l, c, s, h, b) { + if ((u.token & 143360) === 143360) { + switch (u.token) { + case 209008: + return tt(u, e, n, l, s, h, b); + case 241773: + return nt(u, e, l, t, s, h, b); + case 209007: + return it(u, e, l, c, t, o, n, s, h, b); + } + let { token: g, tokenValue: a } = u, A = z(u, e | 65536, o); + return u.token === 10 ? (c || f(u, 0), M1(u, e, g, 1), g1(u, e, a, A, n, t, 0, s, h, b)) : (e & 16384 && g === 537079928 && f(u, 126), g === 241739 && (e & 1024 && f(u, 109), i & 24 && f(u, 97)), u.assignable = e & 1024 && (g & 537079808) === 537079808 ? 2 : 1, A); + } + if ((u.token & 134217728) === 134217728) + return a2(u, e); + switch (u.token) { + case 33619995: + case 33619996: + return ct(u, e, n, c, s, h, b); + case 16863278: + case 16842800: + case 16842801: + case 25233970: + case 25233971: + case 16863277: + case 16863279: + return et(u, e, c, s, h, b, l); + case 86106: + return he(u, e, 0, l, s, h, b); + case 2162700: + return mt(u, e, t ? 0 : 1, l, s, h, b); + case 69271571: + return ht(u, e, t ? 0 : 1, l, s, h, b); + case 67174411: + return kt(u, e, t, 1, 0, s, h, b); + case 86021: + case 86022: + case 86023: + return dt(u, e, s, h, b); + case 86113: + return gt(u, e); + case 65540: + return At(u, e, s, h, b); + case 133: + case 86096: + return yt(u, e, l, s, h, b); + case 86111: + return ot(u, e, s, h, b); + case 67174409: + return H1(u, e, s, h, b); + case 67174408: + return K1(u, e); + case 86109: + return rt(u, e, l, s, h, b); + case 134283389: + return ge(u, e, s, h, b); + case 131: + return k1(u, e, s, h, b); + case 86108: + return st(u, e, n, l, s, h, b); + case 8456258: + if (e & 16) + return G1(u, e, 1, s, h, b); + default: + if (_1(e, u.token)) + return Y1(u, e, s, h, b); + f(u, 28, G[u.token & 255]); + } + } + function st(u, e, i, n, t, o, l) { + let c = z(u, e, 0); + return u.token === 67108877 ? ae(u, e, c, t, o, l) : (i && f(u, 137), c = de(u, e, n, t, o, l), u.assignable = 2, W(u, e, c, n, 0, t, o, l)); + } + function ae(u, e, i, n, t, o) { + return (e & 2048) === 0 && f(u, 163), E(u, e), u.token !== 143495 && u.tokenValue !== "meta" && f(u, 28, G[u.token & 255]), u.assignable = 2, v(u, e, n, t, o, { type: "MetaProperty", meta: i, property: z(u, e, 0) }); + } + function de(u, e, i, n, t, o) { + w(u, e | 32768, 67174411), u.token === 14 && f(u, 138); + let l = Q(u, e, 1, 0, i, u.tokenPos, u.linePos, u.colPos); + return w(u, e, 16), v(u, e, n, t, o, { type: "ImportExpression", source: l }); + } + function ge(u, e, i, n, t) { + let { tokenRaw: o, tokenValue: l } = u; + return E(u, e), u.assignable = 2, v(u, e, i, n, t, e & 512 ? { type: "Literal", value: l, bigint: o.slice(0, -1), raw: o } : { type: "Literal", value: l, bigint: o.slice(0, -1) }); + } + function H1(u, e, i, n, t) { + u.assignable = 2; + let { tokenValue: o, tokenRaw: l, tokenPos: c, linePos: s, colPos: h } = u; + w(u, e, 67174409); + let b = [d1(u, e, o, l, c, s, h, true)]; + return v(u, e, i, n, t, { type: "TemplateLiteral", expressions: [], quasis: b }); + } + function K1(u, e) { + e = (e | 134217728) ^ 134217728; + let { tokenValue: i, tokenRaw: n, tokenPos: t, linePos: o, colPos: l } = u; + w(u, e | 32768, 67174408); + let c = [d1(u, e, i, n, t, o, l, false)], s = [f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos)]; + for (u.token !== 1074790415 && f(u, 80); (u.token = v0(u, e)) !== 67174409; ) { + let { tokenValue: h, tokenRaw: b, tokenPos: g, linePos: a, colPos: A } = u; + w(u, e | 32768, 67174408), c.push(d1(u, e, h, b, g, a, A, false)), s.push(f2(u, e, 0, 1, u.tokenPos, u.linePos, u.colPos)), u.token !== 1074790415 && f(u, 80); + } + { + let { tokenValue: h, tokenRaw: b, tokenPos: g, linePos: a, colPos: A } = u; + w(u, e, 67174409), c.push(d1(u, e, h, b, g, a, A, true)); + } + return v(u, e, t, o, l, { type: "TemplateLiteral", expressions: s, quasis: c }); + } + function d1(u, e, i, n, t, o, l, c) { + let s = v(u, e, t, o, l, { type: "TemplateElement", value: { cooked: i, raw: n }, tail: c }), h = c ? 1 : 2; + return e & 2 && (s.start += 1, s.range[0] += 1, s.end -= h, s.range[1] -= h), e & 4 && (s.loc.start.column += 1, s.loc.end.column -= h), s; + } + function at(u, e, i, n, t) { + e = (e | 134217728) ^ 134217728, w(u, e | 32768, 14); + let o = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos); + return u.assignable = 1, v(u, e, i, n, t, { type: "SpreadElement", argument: o }); + } + function W1(u, e, i) { + E(u, e | 32768); + let n = []; + if (u.token === 16) + return E(u, e), n; + for (; u.token !== 16 && (u.token === 14 ? n.push(at(u, e, u.tokenPos, u.linePos, u.colPos)) : n.push(Q(u, e, 1, 0, i, u.tokenPos, u.linePos, u.colPos)), !(u.token !== 18 || (E(u, e | 32768), u.token === 16))); ) + ; + return w(u, e, 16), n; + } + function z(u, e, i) { + let { tokenValue: n, tokenPos: t, linePos: o, colPos: l } = u; + return E(u, e), v(u, e, t, o, l, e & 268435456 ? { type: "Identifier", name: n, pattern: i === 1 } : { type: "Identifier", name: n }); + } + function a2(u, e) { + let { tokenValue: i, tokenRaw: n, tokenPos: t, linePos: o, colPos: l } = u; + return u.token === 134283389 ? ge(u, e, t, o, l) : (E(u, e), u.assignable = 2, v(u, e, t, o, l, e & 512 ? { type: "Literal", value: i, raw: n } : { type: "Literal", value: i })); + } + function dt(u, e, i, n, t) { + let o = G[u.token & 255], l = u.token === 86023 ? null : o === "true"; + return E(u, e), u.assignable = 2, v(u, e, i, n, t, e & 512 ? { type: "Literal", value: l, raw: o } : { type: "Literal", value: l }); + } + function gt(u, e) { + let { tokenPos: i, linePos: n, colPos: t } = u; + return E(u, e), u.assignable = 2, v(u, e, i, n, t, { type: "ThisExpression" }); + } + function T2(u, e, i, n, t, o, l, c, s, h) { + E(u, e | 32768); + let b = t ? V1(u, e, 8457014) : 0, g = null, a, A = i ? j2() : void 0; + if (u.token === 67174411) + (o & 1) < 1 && f(u, 37, "Function"); + else { + let B = n & 4 && ((e & 8192) < 1 || (e & 2048) < 1) ? 4 : 64; + Qu(u, e | (e & 3072) << 11, u.token), i && (B & 4 ? pu(u, e, i, u.tokenValue, B) : B2(u, e, i, u.tokenValue, B, n), A = o2(A, 256), o && o & 2 && _2(u, u.tokenValue)), a = u.token, u.token & 143360 ? g = z(u, e, 0) : f(u, 28, G[u.token & 255]); + } + e = (e | 32243712) ^ 32243712 | 67108864 | l * 2 + b << 21 | (b ? 0 : 1073741824), i && (A = o2(A, 512)); + let C = be(u, e | 8388608, A, 0, 1), D = a1(u, (e | 8192 | 4096 | 131072) ^ 143360, i ? o2(A, 128) : A, 8, a, i ? A.scopeError : void 0); + return v(u, e, c, s, h, { type: "FunctionDeclaration", id: g, params: C, body: D, async: l === 1, generator: b === 1 }); + } + function he(u, e, i, n, t, o, l) { + E(u, e | 32768); + let c = V1(u, e, 8457014), s = i * 2 + c << 21, h = null, b, g = e & 64 ? j2() : void 0; + (u.token & 176128) > 0 && (Qu(u, (e | 32243712) ^ 32243712 | s, u.token), g && (g = o2(g, 256)), b = u.token, h = z(u, e, 0)), e = (e | 32243712) ^ 32243712 | 67108864 | s | (c ? 0 : 1073741824), g && (g = o2(g, 512)); + let a = be(u, e | 8388608, g, n, 1), A = a1(u, e & -134377473, g && o2(g, 128), 0, b, void 0); + return u.assignable = 2, v(u, e, t, o, l, { type: "FunctionExpression", id: h, params: a, body: A, async: i === 1, generator: c === 1 }); + } + function ht(u, e, i, n, t, o, l) { + let c = k2(u, e, void 0, i, n, 0, 2, 0, t, o, l); + return e & 256 && u.destructible & 64 && f(u, 60), u.destructible & 8 && f(u, 59), c; + } + function k2(u, e, i, n, t, o, l, c, s, h, b) { + E(u, e | 32768); + let g = [], a = 0; + for (e = (e | 134217728) ^ 134217728; u.token !== 20; ) + if (U(u, e | 32768, 18)) + g.push(null); + else { + let C, { token: D, tokenPos: B, linePos: O, colPos: j, tokenValue: e2 } = u; + if (D & 143360) + if (C = h2(u, e, l, 0, 1, 0, t, 1, B, O, j), u.token === 1077936157) { + u.assignable & 2 && f(u, 24), E(u, e | 32768), i && q2(u, e, i, e2, l, c); + let R = Q(u, e, 1, 1, t, u.tokenPos, u.linePos, u.colPos); + C = v(u, e, B, O, j, o ? { type: "AssignmentPattern", left: C, right: R } : { type: "AssignmentExpression", operator: "=", left: C, right: R }), a |= u.destructible & 256 ? 256 : 0 | u.destructible & 128 ? 128 : 0; + } else + u.token === 18 || u.token === 20 ? (u.assignable & 2 ? a |= 16 : i && q2(u, e, i, e2, l, c), a |= u.destructible & 256 ? 256 : 0 | u.destructible & 128 ? 128 : 0) : (a |= l & 1 ? 32 : (l & 2) < 1 ? 16 : 0, C = W(u, e, C, t, 0, B, O, j), u.token !== 18 && u.token !== 20 ? (u.token !== 1077936157 && (a |= 16), C = x(u, e, t, o, B, O, j, C)) : u.token !== 1077936157 && (a |= u.assignable & 2 ? 16 : 32)); + else + D & 2097152 ? (C = u.token === 2162700 ? r2(u, e, i, 0, t, o, l, c, B, O, j) : k2(u, e, i, 0, t, o, l, c, B, O, j), a |= u.destructible, u.assignable = u.destructible & 16 ? 2 : 1, u.token === 18 || u.token === 20 ? u.assignable & 2 && (a |= 16) : u.destructible & 8 ? f(u, 68) : (C = W(u, e, C, t, 0, B, O, j), a = u.assignable & 2 ? 16 : 0, u.token !== 18 && u.token !== 20 ? C = x(u, e, t, o, B, O, j, C) : u.token !== 1077936157 && (a |= u.assignable & 2 ? 16 : 32))) : D === 14 ? (C = W2(u, e, i, 20, l, c, 0, t, o, B, O, j), a |= u.destructible, u.token !== 18 && u.token !== 20 && f(u, 28, G[u.token & 255])) : (C = b2(u, e, 1, 0, 1, B, O, j), u.token !== 18 && u.token !== 20 ? (C = x(u, e, t, o, B, O, j, C), (l & 3) < 1 && D === 67174411 && (a |= 16)) : u.assignable & 2 ? a |= 16 : D === 67174411 && (a |= u.assignable & 1 && l & 3 ? 32 : 16)); + if (g.push(C), U(u, e | 32768, 18)) { + if (u.token === 20) + break; + } else + break; + } + w(u, e, 20); + let A = v(u, e, s, h, b, { type: o ? "ArrayPattern" : "ArrayExpression", elements: g }); + return !n && u.token & 4194304 ? me(u, e, a, t, o, s, h, b, A) : (u.destructible = a, A); + } + function me(u, e, i, n, t, o, l, c, s) { + u.token !== 1077936157 && f(u, 24), E(u, e | 32768), i & 16 && f(u, 24), t || v2(u, s); + let { tokenPos: h, linePos: b, colPos: g } = u, a = Q(u, e, 1, 1, n, h, b, g); + return u.destructible = (i | 64 | 8) ^ 72 | (u.destructible & 128 ? 128 : 0) | (u.destructible & 256 ? 256 : 0), v(u, e, o, l, c, t ? { type: "AssignmentPattern", left: s, right: a } : { type: "AssignmentExpression", left: s, operator: "=", right: a }); + } + function W2(u, e, i, n, t, o, l, c, s, h, b, g) { + E(u, e | 32768); + let a = null, A = 0, { token: C, tokenValue: D, tokenPos: B, linePos: O, colPos: j } = u; + if (C & 143360) + u.assignable = 1, a = h2(u, e, t, 0, 1, 0, c, 1, B, O, j), C = u.token, a = W(u, e, a, c, 0, B, O, j), u.token !== 18 && u.token !== n && (u.assignable & 2 && u.token === 1077936157 && f(u, 68), A |= 16, a = x(u, e, c, s, B, O, j, a)), u.assignable & 2 ? A |= 16 : C === n || C === 18 ? i && q2(u, e, i, D, t, o) : A |= 32, A |= u.destructible & 128 ? 128 : 0; + else if (C === n) + f(u, 39); + else if (C & 2097152) + a = u.token === 2162700 ? r2(u, e, i, 1, c, s, t, o, B, O, j) : k2(u, e, i, 1, c, s, t, o, B, O, j), C = u.token, C !== 1077936157 && C !== n && C !== 18 ? (u.destructible & 8 && f(u, 68), a = W(u, e, a, c, 0, B, O, j), A |= u.assignable & 2 ? 16 : 0, (u.token & 4194304) === 4194304 ? (u.token !== 1077936157 && (A |= 16), a = x(u, e, c, s, B, O, j, a)) : ((u.token & 8454144) === 8454144 && (a = F2(u, e, 1, B, O, j, 4, C, a)), U(u, e | 32768, 22) && (a = M2(u, e, a, B, O, j)), A |= u.assignable & 2 ? 16 : 32)) : A |= n === 1074790415 && C !== 1077936157 ? 16 : u.destructible; + else { + A |= 32, a = b2(u, e, 1, c, 1, u.tokenPos, u.linePos, u.colPos); + let { token: e2, tokenPos: R, linePos: $, colPos: y } = u; + return e2 === 1077936157 && e2 !== n && e2 !== 18 ? (u.assignable & 2 && f(u, 24), a = x(u, e, c, s, R, $, y, a), A |= 16) : (e2 === 18 ? A |= 16 : e2 !== n && (a = x(u, e, c, s, R, $, y, a)), A |= u.assignable & 1 ? 32 : 16), u.destructible = A, u.token !== n && u.token !== 18 && f(u, 155), v(u, e, h, b, g, { type: s ? "RestElement" : "SpreadElement", argument: a }); + } + if (u.token !== n) + if (t & 1 && (A |= l ? 16 : 32), U(u, e | 32768, 1077936157)) { + A & 16 && f(u, 24), v2(u, a); + let e2 = Q(u, e, 1, 1, c, u.tokenPos, u.linePos, u.colPos); + a = v(u, e, B, O, j, s ? { type: "AssignmentPattern", left: a, right: e2 } : { type: "AssignmentExpression", left: a, operator: "=", right: e2 }), A = 16; + } else + A |= 16; + return u.destructible = A, v(u, e, h, b, g, { type: s ? "RestElement" : "SpreadElement", argument: a }); + } + function A2(u, e, i, n, t, o, l) { + let c = (i & 64) < 1 ? 31981568 : 14680064; + e = (e | c) ^ c | (i & 88) << 18 | 100925440; + let s = e & 64 ? o2(j2(), 512) : void 0, h = bt(u, e | 8388608, s, i, 1, n); + s && (s = o2(s, 128)); + let b = a1(u, e & -134230017, s, 0, void 0, void 0); + return v(u, e, t, o, l, { type: "FunctionExpression", params: h, body: b, async: (i & 16) > 0, generator: (i & 8) > 0, id: null }); + } + function mt(u, e, i, n, t, o, l) { + let c = r2(u, e, void 0, i, n, 0, 2, 0, t, o, l); + return e & 256 && u.destructible & 64 && f(u, 60), u.destructible & 8 && f(u, 59), c; + } + function r2(u, e, i, n, t, o, l, c, s, h, b) { + E(u, e); + let g = [], a = 0, A = 0; + for (e = (e | 134217728) ^ 134217728; u.token !== 1074790415; ) { + let { token: D, tokenValue: B, linePos: O, colPos: j, tokenPos: e2 } = u; + if (D === 14) + g.push(W2(u, e, i, 1074790415, l, c, 0, t, o, e2, O, j)); + else { + let R = 0, $ = null, y, y2 = u.token; + if (u.token & 143360 || u.token === 121) + if ($ = z(u, e, 0), u.token === 18 || u.token === 1074790415 || u.token === 1077936157) + if (R |= 4, e & 1024 && (D & 537079808) === 537079808 ? a |= 16 : o1(u, e, l, D, 0), i && q2(u, e, i, B, l, c), U(u, e | 32768, 1077936157)) { + a |= 8; + let N = Q(u, e, 1, 1, t, u.tokenPos, u.linePos, u.colPos); + a |= u.destructible & 256 ? 256 : 0 | u.destructible & 128 ? 128 : 0, y = v(u, e, e2, O, j, { type: "AssignmentPattern", left: e & -2147483648 ? Object.assign({}, $) : $, right: N }); + } else + a |= (D === 209008 ? 128 : 0) | (D === 121 ? 16 : 0), y = e & -2147483648 ? Object.assign({}, $) : $; + else if (U(u, e | 32768, 21)) { + let { tokenPos: N, linePos: M, colPos: _ } = u; + if (B === "__proto__" && A++, u.token & 143360) { + let U2 = u.token, $2 = u.tokenValue; + a |= y2 === 121 ? 16 : 0, y = h2(u, e, l, 0, 1, 0, t, 1, N, M, _); + let { token: E2 } = u; + y = W(u, e, y, t, 0, N, M, _), u.token === 18 || u.token === 1074790415 ? E2 === 1077936157 || E2 === 1074790415 || E2 === 18 ? (a |= u.destructible & 128 ? 128 : 0, u.assignable & 2 ? a |= 16 : i && (U2 & 143360) === 143360 && q2(u, e, i, $2, l, c)) : a |= u.assignable & 1 ? 32 : 16 : (u.token & 4194304) === 4194304 ? (u.assignable & 2 ? a |= 16 : E2 !== 1077936157 ? a |= 32 : i && q2(u, e, i, $2, l, c), y = x(u, e, t, o, N, M, _, y)) : (a |= 16, (u.token & 8454144) === 8454144 && (y = F2(u, e, 1, N, M, _, 4, E2, y)), U(u, e | 32768, 22) && (y = M2(u, e, y, N, M, _))); + } else + (u.token & 2097152) === 2097152 ? (y = u.token === 69271571 ? k2(u, e, i, 0, t, o, l, c, N, M, _) : r2(u, e, i, 0, t, o, l, c, N, M, _), a = u.destructible, u.assignable = a & 16 ? 2 : 1, u.token === 18 || u.token === 1074790415 ? u.assignable & 2 && (a |= 16) : u.destructible & 8 ? f(u, 68) : (y = W(u, e, y, t, 0, N, M, _), a = u.assignable & 2 ? 16 : 0, (u.token & 4194304) === 4194304 ? y = s1(u, e, t, o, N, M, _, y) : ((u.token & 8454144) === 8454144 && (y = F2(u, e, 1, N, M, _, 4, D, y)), U(u, e | 32768, 22) && (y = M2(u, e, y, N, M, _)), a |= u.assignable & 2 ? 16 : 32))) : (y = b2(u, e, 1, t, 1, N, M, _), a |= u.assignable & 1 ? 32 : 16, u.token === 18 || u.token === 1074790415 ? u.assignable & 2 && (a |= 16) : (y = W(u, e, y, t, 0, N, M, _), a = u.assignable & 2 ? 16 : 0, u.token !== 18 && D !== 1074790415 && (u.token !== 1077936157 && (a |= 16), y = x(u, e, t, o, N, M, _, y)))); + } else + u.token === 69271571 ? (a |= 16, D === 209007 && (R |= 16), R |= (D === 12402 ? 256 : D === 12403 ? 512 : 1) | 2, $ = Y2(u, e, t), a |= u.assignable, y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos)) : u.token & 143360 ? (a |= 16, D === 121 && f(u, 92), D === 209007 && (u.flags & 1 && f(u, 128), R |= 16), $ = z(u, e, 0), R |= D === 12402 ? 256 : D === 12403 ? 512 : 1, y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos)) : u.token === 67174411 ? (a |= 16, R |= 1, y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos)) : u.token === 8457014 ? (a |= 16, D === 12402 || D === 12403 ? f(u, 40) : D === 143483 && f(u, 92), E(u, e), R |= 9 | (D === 209007 ? 16 : 0), u.token & 143360 ? $ = z(u, e, 0) : (u.token & 134217728) === 134217728 ? $ = a2(u, e) : u.token === 69271571 ? (R |= 2, $ = Y2(u, e, t), a |= u.assignable) : f(u, 28, G[u.token & 255]), y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos)) : (u.token & 134217728) === 134217728 ? (D === 209007 && (R |= 16), R |= D === 12402 ? 256 : D === 12403 ? 512 : 1, a |= 16, $ = a2(u, e), y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos)) : f(u, 129); + else if ((u.token & 134217728) === 134217728) + if ($ = a2(u, e), u.token === 21) { + w(u, e | 32768, 21); + let { tokenPos: N, linePos: M, colPos: _ } = u; + if (B === "__proto__" && A++, u.token & 143360) { + y = h2(u, e, l, 0, 1, 0, t, 1, N, M, _); + let { token: U2, tokenValue: $2 } = u; + y = W(u, e, y, t, 0, N, M, _), u.token === 18 || u.token === 1074790415 ? U2 === 1077936157 || U2 === 1074790415 || U2 === 18 ? u.assignable & 2 ? a |= 16 : i && q2(u, e, i, $2, l, c) : a |= u.assignable & 1 ? 32 : 16 : u.token === 1077936157 ? (u.assignable & 2 && (a |= 16), y = x(u, e, t, o, N, M, _, y)) : (a |= 16, y = x(u, e, t, o, N, M, _, y)); + } else + (u.token & 2097152) === 2097152 ? (y = u.token === 69271571 ? k2(u, e, i, 0, t, o, l, c, N, M, _) : r2(u, e, i, 0, t, o, l, c, N, M, _), a = u.destructible, u.assignable = a & 16 ? 2 : 1, u.token === 18 || u.token === 1074790415 ? u.assignable & 2 && (a |= 16) : (u.destructible & 8) !== 8 && (y = W(u, e, y, t, 0, N, M, _), a = u.assignable & 2 ? 16 : 0, (u.token & 4194304) === 4194304 ? y = s1(u, e, t, o, N, M, _, y) : ((u.token & 8454144) === 8454144 && (y = F2(u, e, 1, N, M, _, 4, D, y)), U(u, e | 32768, 22) && (y = M2(u, e, y, N, M, _)), a |= u.assignable & 2 ? 16 : 32))) : (y = b2(u, e, 1, 0, 1, N, M, _), a |= u.assignable & 1 ? 32 : 16, u.token === 18 || u.token === 1074790415 ? u.assignable & 2 && (a |= 16) : (y = W(u, e, y, t, 0, N, M, _), a = u.assignable & 1 ? 0 : 16, u.token !== 18 && u.token !== 1074790415 && (u.token !== 1077936157 && (a |= 16), y = x(u, e, t, o, N, M, _, y)))); + } else + u.token === 67174411 ? (R |= 1, y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos), a = u.assignable | 16) : f(u, 130); + else if (u.token === 69271571) + if ($ = Y2(u, e, t), a |= u.destructible & 256 ? 256 : 0, R |= 2, u.token === 21) { + E(u, e | 32768); + let { tokenPos: N, linePos: M, colPos: _, tokenValue: U2, token: $2 } = u; + if (u.token & 143360) { + y = h2(u, e, l, 0, 1, 0, t, 1, N, M, _); + let { token: E2 } = u; + y = W(u, e, y, t, 0, N, M, _), (u.token & 4194304) === 4194304 ? (a |= u.assignable & 2 ? 16 : E2 === 1077936157 ? 0 : 32, y = s1(u, e, t, o, N, M, _, y)) : u.token === 18 || u.token === 1074790415 ? E2 === 1077936157 || E2 === 1074790415 || E2 === 18 ? u.assignable & 2 ? a |= 16 : i && ($2 & 143360) === 143360 && q2(u, e, i, U2, l, c) : a |= u.assignable & 1 ? 32 : 16 : (a |= 16, y = x(u, e, t, o, N, M, _, y)); + } else + (u.token & 2097152) === 2097152 ? (y = u.token === 69271571 ? k2(u, e, i, 0, t, o, l, c, N, M, _) : r2(u, e, i, 0, t, o, l, c, N, M, _), a = u.destructible, u.assignable = a & 16 ? 2 : 1, u.token === 18 || u.token === 1074790415 ? u.assignable & 2 && (a |= 16) : a & 8 ? f(u, 59) : (y = W(u, e, y, t, 0, N, M, _), a = u.assignable & 2 ? a | 16 : 0, (u.token & 4194304) === 4194304 ? (u.token !== 1077936157 && (a |= 16), y = s1(u, e, t, o, N, M, _, y)) : ((u.token & 8454144) === 8454144 && (y = F2(u, e, 1, N, M, _, 4, D, y)), U(u, e | 32768, 22) && (y = M2(u, e, y, N, M, _)), a |= u.assignable & 2 ? 16 : 32))) : (y = b2(u, e, 1, 0, 1, N, M, _), a |= u.assignable & 1 ? 32 : 16, u.token === 18 || u.token === 1074790415 ? u.assignable & 2 && (a |= 16) : (y = W(u, e, y, t, 0, N, M, _), a = u.assignable & 1 ? 0 : 16, u.token !== 18 && u.token !== 1074790415 && (u.token !== 1077936157 && (a |= 16), y = x(u, e, t, o, N, M, _, y)))); + } else + u.token === 67174411 ? (R |= 1, y = A2(u, e, R, t, u.tokenPos, O, j), a = 16) : f(u, 41); + else if (D === 8457014) + if (w(u, e | 32768, 8457014), R |= 8, u.token & 143360) { + let { token: N, line: M, index: _ } = u; + $ = z(u, e, 0), R |= 1, u.token === 67174411 ? (a |= 16, y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos)) : S(_, M, _, N === 209007 ? 43 : N === 12402 || u.token === 12403 ? 42 : 44, G[N & 255]); + } else + (u.token & 134217728) === 134217728 ? (a |= 16, $ = a2(u, e), R |= 1, y = A2(u, e, R, t, e2, O, j)) : u.token === 69271571 ? (a |= 16, R |= 3, $ = Y2(u, e, t), y = A2(u, e, R, t, u.tokenPos, u.linePos, u.colPos)) : f(u, 122); + else + f(u, 28, G[D & 255]); + a |= u.destructible & 128 ? 128 : 0, u.destructible = a, g.push(v(u, e, e2, O, j, { type: "Property", key: $, value: y, kind: R & 768 ? R & 512 ? "set" : "get" : "init", computed: (R & 2) > 0, method: (R & 1) > 0, shorthand: (R & 4) > 0 })); + } + if (a |= u.destructible, u.token !== 18) + break; + E(u, e); + } + w(u, e, 1074790415), A > 1 && (a |= 64); + let C = v(u, e, s, h, b, { type: o ? "ObjectPattern" : "ObjectExpression", properties: g }); + return !n && u.token & 4194304 ? me(u, e, a, t, o, s, h, b, C) : (u.destructible = a, C); + } + function bt(u, e, i, n, t, o) { + w(u, e, 67174411); + let l = []; + if (u.flags = (u.flags | 128) ^ 128, u.token === 16) + return n & 512 && f(u, 35, "Setter", "one", ""), E(u, e), l; + n & 256 && f(u, 35, "Getter", "no", "s"), n & 512 && u.token === 14 && f(u, 36), e = (e | 134217728) ^ 134217728; + let c = 0, s = 0; + for (; u.token !== 18; ) { + let h = null, { tokenPos: b, linePos: g, colPos: a } = u; + if (u.token & 143360 ? ((e & 1024) < 1 && ((u.token & 36864) === 36864 && (u.flags |= 256), (u.token & 537079808) === 537079808 && (u.flags |= 512)), h = Q1(u, e, i, n | 1, 0, b, g, a)) : (u.token === 2162700 ? h = r2(u, e, i, 1, o, 1, t, 0, b, g, a) : u.token === 69271571 ? h = k2(u, e, i, 1, o, 1, t, 0, b, g, a) : u.token === 14 && (h = W2(u, e, i, 16, t, 0, 0, o, 1, b, g, a)), s = 1, u.destructible & 48 && f(u, 47)), u.token === 1077936157) { + E(u, e | 32768), s = 1; + let A = Q(u, e, 1, 1, 0, u.tokenPos, u.linePos, u.colPos); + h = v(u, e, b, g, a, { type: "AssignmentPattern", left: h, right: A }); + } + if (c++, l.push(h), !U(u, e, 18) || u.token === 16) + break; + } + return n & 512 && c !== 1 && f(u, 35, "Setter", "one", ""), i && i.scopeError !== void 0 && P(i.scopeError), s && (u.flags |= 128), w(u, e, 16), l; + } + function Y2(u, e, i) { + E(u, e | 32768); + let n = Q(u, (e | 134217728) ^ 134217728, 1, 0, i, u.tokenPos, u.linePos, u.colPos); + return w(u, e, 20), n; + } + function kt(u, e, i, n, t, o, l, c) { + u.flags = (u.flags | 128) ^ 128; + let { tokenPos: s, linePos: h, colPos: b } = u; + E(u, e | 32768 | 1073741824); + let g = e & 64 ? o2(j2(), 1024) : void 0; + if (e = (e | 134217728) ^ 134217728, U(u, e, 16)) + return h1(u, e, g, [], i, 0, o, l, c); + let a = 0; + u.destructible &= -385; + let A, C = [], D = 0, B = 0, { tokenPos: O, linePos: j, colPos: e2 } = u; + for (u.assignable = 1; u.token !== 16; ) { + let { token: R, tokenPos: $, linePos: y, colPos: y2 } = u; + if (R & 143360) + g && B2(u, e, g, u.tokenValue, 1, 0), A = h2(u, e, n, 0, 1, 0, 1, 1, $, y, y2), u.token === 16 || u.token === 18 ? u.assignable & 2 ? (a |= 16, B = 1) : ((R & 537079808) === 537079808 || (R & 36864) === 36864) && (B = 1) : (u.token === 1077936157 ? B = 1 : a |= 16, A = W(u, e, A, 1, 0, $, y, y2), u.token !== 16 && u.token !== 18 && (A = x(u, e, 1, 0, $, y, y2, A))); + else if ((R & 2097152) === 2097152) + A = R === 2162700 ? r2(u, e | 1073741824, g, 0, 1, 0, n, t, $, y, y2) : k2(u, e | 1073741824, g, 0, 1, 0, n, t, $, y, y2), a |= u.destructible, B = 1, u.assignable = 2, u.token !== 16 && u.token !== 18 && (a & 8 && f(u, 118), A = W(u, e, A, 0, 0, $, y, y2), a |= 16, u.token !== 16 && u.token !== 18 && (A = x(u, e, 0, 0, $, y, y2, A))); + else if (R === 14) { + A = W2(u, e, g, 16, n, t, 0, 1, 0, $, y, y2), u.destructible & 16 && f(u, 71), B = 1, D && (u.token === 16 || u.token === 18) && C.push(A), a |= 8; + break; + } else { + if (a |= 16, A = Q(u, e, 1, 0, 1, $, y, y2), D && (u.token === 16 || u.token === 18) && C.push(A), u.token === 18 && (D || (D = 1, C = [A])), D) { + for (; U(u, e | 32768, 18); ) + C.push(Q(u, e, 1, 0, 1, u.tokenPos, u.linePos, u.colPos)); + u.assignable = 2, A = v(u, e, O, j, e2, { type: "SequenceExpression", expressions: C }); + } + return w(u, e, 16), u.destructible = a, A; + } + if (D && (u.token === 16 || u.token === 18) && C.push(A), !U(u, e | 32768, 18)) + break; + if (D || (D = 1, C = [A]), u.token === 16) { + a |= 8; + break; + } + } + return D && (u.assignable = 2, A = v(u, e, O, j, e2, { type: "SequenceExpression", expressions: C })), w(u, e, 16), a & 16 && a & 8 && f(u, 145), a |= u.destructible & 256 ? 256 : 0 | u.destructible & 128 ? 128 : 0, u.token === 10 ? (a & 48 && f(u, 46), e & 4196352 && a & 128 && f(u, 29), e & 2098176 && a & 256 && f(u, 30), B && (u.flags |= 128), h1(u, e, g, D ? C : [A], i, 0, o, l, c)) : (a & 8 && f(u, 139), u.destructible = (u.destructible | 256) ^ 256 | a, e & 128 ? v(u, e, s, h, b, { type: "ParenthesizedExpression", expression: A }) : A); + } + function Y1(u, e, i, n, t) { + let { tokenValue: o } = u, l = z(u, e, 0); + if (u.assignable = 1, u.token === 10) { + let c; + return e & 64 && (c = f1(u, e, o)), u.flags = (u.flags | 128) ^ 128, u1(u, e, c, [l], 0, i, n, t); + } + return l; + } + function g1(u, e, i, n, t, o, l, c, s, h) { + o || f(u, 54), t && f(u, 48), u.flags &= -129; + let b = e & 64 ? f1(u, e, i) : void 0; + return u1(u, e, b, [n], l, c, s, h); + } + function h1(u, e, i, n, t, o, l, c, s) { + t || f(u, 54); + for (let h = 0; h < n.length; ++h) + v2(u, n[h]); + return u1(u, e, i, n, o, l, c, s); + } + function u1(u, e, i, n, t, o, l, c) { + u.flags & 1 && f(u, 45), w(u, e | 32768, 10), e = (e | 15728640) ^ 15728640 | t << 22; + let s = u.token !== 2162700, h; + if (i && i.scopeError !== void 0 && P(i.scopeError), s) + h = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos); + else { + switch (i && (i = o2(i, 128)), h = a1(u, (e | 134221824 | 8192 | 16384) ^ 134246400, i, 16, void 0, void 0), u.token) { + case 69271571: + (u.flags & 1) < 1 && f(u, 112); + break; + case 67108877: + case 67174409: + case 22: + f(u, 113); + case 67174411: + (u.flags & 1) < 1 && f(u, 112), u.flags |= 1024; + break; + } + (u.token & 8454144) === 8454144 && (u.flags & 1) < 1 && f(u, 28, G[u.token & 255]), (u.token & 33619968) === 33619968 && f(u, 121); + } + return u.assignable = 2, v(u, e, o, l, c, { type: "ArrowFunctionExpression", params: n, body: h, async: t === 1, expression: s }); + } + function be(u, e, i, n, t) { + w(u, e, 67174411), u.flags = (u.flags | 128) ^ 128; + let o = []; + if (U(u, e, 16)) + return o; + e = (e | 134217728) ^ 134217728; + let l = 0; + for (; u.token !== 18; ) { + let c, { tokenPos: s, linePos: h, colPos: b } = u; + if (u.token & 143360 ? ((e & 1024) < 1 && ((u.token & 36864) === 36864 && (u.flags |= 256), (u.token & 537079808) === 537079808 && (u.flags |= 512)), c = Q1(u, e, i, t | 1, 0, s, h, b)) : (u.token === 2162700 ? c = r2(u, e, i, 1, n, 1, t, 0, s, h, b) : u.token === 69271571 ? c = k2(u, e, i, 1, n, 1, t, 0, s, h, b) : u.token === 14 ? c = W2(u, e, i, 16, t, 0, 0, n, 1, s, h, b) : f(u, 28, G[u.token & 255]), l = 1, u.destructible & 48 && f(u, 47)), u.token === 1077936157) { + E(u, e | 32768), l = 1; + let g = Q(u, e, 1, 1, n, u.tokenPos, u.linePos, u.colPos); + c = v(u, e, s, h, b, { type: "AssignmentPattern", left: c, right: g }); + } + if (o.push(c), !U(u, e, 18) || u.token === 16) + break; + } + return l && (u.flags |= 128), i && (l || e & 1024) && i.scopeError !== void 0 && P(i.scopeError), w(u, e, 16), o; + } + function m1(u, e, i, n, t, o, l) { + let { token: c } = u; + if (c & 67108864) { + if (c === 67108877) { + E(u, e | 1073741824), u.assignable = 1; + let s = se(u, e); + return m1(u, e, v(u, e, t, o, l, { type: "MemberExpression", object: i, computed: false, property: s }), 0, t, o, l); + } else if (c === 69271571) { + E(u, e | 32768); + let { tokenPos: s, linePos: h, colPos: b } = u, g = f2(u, e, n, 1, s, h, b); + return w(u, e, 20), u.assignable = 1, m1(u, e, v(u, e, t, o, l, { type: "MemberExpression", object: i, computed: true, property: g }), 0, t, o, l); + } else if (c === 67174408 || c === 67174409) + return u.assignable = 2, m1(u, e, v(u, e, t, o, l, { type: "TaggedTemplateExpression", tag: i, quasi: u.token === 67174408 ? K1(u, e | 65536) : H1(u, e, u.tokenPos, u.linePos, u.colPos) }), 0, t, o, l); + } + return i; + } + function rt(u, e, i, n, t, o) { + let l = z(u, e | 32768, 0), { tokenPos: c, linePos: s, colPos: h } = u; + if (U(u, e, 67108877)) { + if (e & 67108864 && u.token === 143494) + return u.assignable = 2, vt(u, e, l, n, t, o); + f(u, 91); + } + u.assignable = 2, (u.token & 16842752) === 16842752 && f(u, 62, G[u.token & 255]); + let b = h2(u, e, 2, 1, 0, 0, i, 1, c, s, h); + e = (e | 134217728) ^ 134217728, u.token === 67108991 && f(u, 162); + let g = m1(u, e, b, i, c, s, h); + return u.assignable = 2, v(u, e, n, t, o, { type: "NewExpression", callee: g, arguments: u.token === 67174411 ? W1(u, e, i) : [] }); + } + function vt(u, e, i, n, t, o) { + let l = z(u, e, 0); + return v(u, e, n, t, o, { type: "MetaProperty", meta: i, property: l }); + } + function ke(u, e, i, n, t, o) { + return u.token === 209008 && f(u, 29), e & 2098176 && u.token === 241773 && f(u, 30), (u.token & 537079808) === 537079808 && (u.flags |= 512), g1(u, e, u.tokenValue, z(u, e, 0), 0, i, 1, n, t, o); + } + function $1(u, e, i, n, t, o, l, c, s, h) { + E(u, e | 32768); + let b = e & 64 ? o2(j2(), 1024) : void 0; + if (e = (e | 134217728) ^ 134217728, U(u, e, 16)) + return u.token === 10 ? (l & 1 && f(u, 45), h1(u, e, b, [], n, 1, c, s, h)) : v(u, e, c, s, h, { type: "CallExpression", callee: i, arguments: [] }); + let g = 0, a = null, A = 0; + u.destructible = (u.destructible | 256 | 128) ^ 384; + let C = []; + for (; u.token !== 16; ) { + let { token: D, tokenPos: B, linePos: O, colPos: j } = u; + if (D & 143360) + b && B2(u, e, b, u.tokenValue, t, 0), a = h2(u, e, t, 0, 1, 0, 1, 1, B, O, j), u.token === 16 || u.token === 18 ? u.assignable & 2 ? (g |= 16, A = 1) : (D & 537079808) === 537079808 ? u.flags |= 512 : (D & 36864) === 36864 && (u.flags |= 256) : (u.token === 1077936157 ? A = 1 : g |= 16, a = W(u, e, a, 1, 0, B, O, j), u.token !== 16 && u.token !== 18 && (a = x(u, e, 1, 0, B, O, j, a))); + else if (D & 2097152) + a = D === 2162700 ? r2(u, e, b, 0, 1, 0, t, o, B, O, j) : k2(u, e, b, 0, 1, 0, t, o, B, O, j), g |= u.destructible, A = 1, u.token !== 16 && u.token !== 18 && (g & 8 && f(u, 118), a = W(u, e, a, 0, 0, B, O, j), g |= 16, (u.token & 8454144) === 8454144 && (a = F2(u, e, 1, c, s, h, 4, D, a)), U(u, e | 32768, 22) && (a = M2(u, e, a, c, s, h))); + else if (D === 14) + a = W2(u, e, b, 16, t, o, 1, 1, 0, B, O, j), g |= (u.token === 16 ? 0 : 16) | u.destructible, A = 1; + else { + for (a = Q(u, e, 1, 0, 0, B, O, j), g = u.assignable, C.push(a); U(u, e | 32768, 18); ) + C.push(Q(u, e, 1, 0, 0, B, O, j)); + return g |= u.assignable, w(u, e, 16), u.destructible = g | 16, u.assignable = 2, v(u, e, c, s, h, { type: "CallExpression", callee: i, arguments: C }); + } + if (C.push(a), !U(u, e | 32768, 18)) + break; + } + return w(u, e, 16), g |= u.destructible & 256 ? 256 : 0 | u.destructible & 128 ? 128 : 0, u.token === 10 ? (g & 48 && f(u, 25), (u.flags & 1 || l & 1) && f(u, 45), g & 128 && f(u, 29), e & 2098176 && g & 256 && f(u, 30), A && (u.flags |= 128), h1(u, e, b, C, n, 1, c, s, h)) : (g & 8 && f(u, 59), u.assignable = 2, v(u, e, c, s, h, { type: "CallExpression", callee: i, arguments: C })); + } + function At(u, e, i, n, t) { + let { tokenRaw: o, tokenRegExp: l, tokenValue: c } = u; + return E(u, e), u.assignable = 2, e & 512 ? v(u, e, i, n, t, { type: "Literal", value: c, regex: l, raw: o }) : v(u, e, i, n, t, { type: "Literal", value: c, regex: l }); + } + function Z1(u, e, i, n, t, o, l) { + e = (e | 16777216 | 1024) ^ 16777216; + let c = b1(u, e); + c.length && (t = u.tokenPos, o = u.linePos, l = u.colPos), u.leadingDecorators.length && (u.leadingDecorators.push(...c), c = u.leadingDecorators, u.leadingDecorators = []), E(u, e); + let s = null, h = null, { tokenValue: b } = u; + u.token & 4096 && u.token !== 20567 ? (Gu(u, e, u.token) && f(u, 114), (u.token & 537079808) === 537079808 && f(u, 115), i && (B2(u, e, i, b, 32, 0), n && n & 2 && _2(u, b)), s = z(u, e, 0)) : (n & 1) < 1 && f(u, 37, "Class"); + let g = e; + U(u, e | 32768, 20567) ? (h = b2(u, e, 0, 0, 0, u.tokenPos, u.linePos, u.colPos), g |= 524288) : g = (g | 524288) ^ 524288; + let a = re(u, g, e, i, 2, 8, 0); + return v(u, e, t, o, l, e & 1 ? { type: "ClassDeclaration", id: s, superClass: h, decorators: c, body: a } : { type: "ClassDeclaration", id: s, superClass: h, body: a }); + } + function yt(u, e, i, n, t, o) { + let l = null, c = null; + e = (e | 1024 | 16777216) ^ 16777216; + let s = b1(u, e); + s.length && (n = u.tokenPos, t = u.linePos, o = u.colPos), E(u, e), u.token & 4096 && u.token !== 20567 && (Gu(u, e, u.token) && f(u, 114), (u.token & 537079808) === 537079808 && f(u, 115), l = z(u, e, 0)); + let h = e; + U(u, e | 32768, 20567) ? (c = b2(u, e, 0, i, 0, u.tokenPos, u.linePos, u.colPos), h |= 524288) : h = (h | 524288) ^ 524288; + let b = re(u, h, e, void 0, 2, 0, i); + return u.assignable = 2, v(u, e, n, t, o, e & 1 ? { type: "ClassExpression", id: l, superClass: c, decorators: s, body: b } : { type: "ClassExpression", id: l, superClass: c, body: b }); + } + function b1(u, e) { + let i = []; + if (e & 1) + for (; u.token === 133; ) + i.push(Pt(u, e, u.tokenPos, u.linePos, u.colPos)); + return i; + } + function Pt(u, e, i, n, t) { + E(u, e | 32768); + let o = h2(u, e, 2, 0, 1, 0, 0, 1, i, n, t); + return o = W(u, e, o, 0, 0, i, n, t), v(u, e, i, n, t, { type: "Decorator", expression: o }); + } + function re(u, e, i, n, t, o, l) { + let { tokenPos: c, linePos: s, colPos: h } = u; + w(u, e | 32768, 2162700), e = (e | 134217728) ^ 134217728, u.flags = (u.flags | 32) ^ 32; + let b = [], g; + for (; u.token !== 1074790415; ) { + let a = 0; + if (g = b1(u, e), a = g.length, a > 0 && u.tokenValue === "constructor" && f(u, 106), u.token === 1074790415 && f(u, 105), U(u, e, 1074790417)) { + a > 0 && f(u, 116); + continue; + } + b.push(ve(u, e, n, i, t, g, 0, l, u.tokenPos, u.linePos, u.colPos)); + } + return w(u, o & 8 ? e | 32768 : e, 1074790415), v(u, e, c, s, h, { type: "ClassBody", body: b }); + } + function ve(u, e, i, n, t, o, l, c, s, h, b) { + let g = l ? 32 : 0, a = null, { token: A, tokenPos: C, linePos: D, colPos: B } = u; + if (A & 176128) + switch (a = z(u, e, 0), A) { + case 36972: + if (!l && u.token !== 67174411) + return ve(u, e, i, n, t, o, 1, c, s, h, b); + break; + case 209007: + if (u.token !== 67174411 && (u.flags & 1) < 1) { + if (e & 1 && (u.token & 1073741824) === 1073741824) + return r1(u, e, a, g, o, C, D, B); + g |= 16 | (V1(u, e, 8457014) ? 8 : 0); + } + break; + case 12402: + if (u.token !== 67174411) { + if (e & 1 && (u.token & 1073741824) === 1073741824) + return r1(u, e, a, g, o, C, D, B); + g |= 256; + } + break; + case 12403: + if (u.token !== 67174411) { + if (e & 1 && (u.token & 1073741824) === 1073741824) + return r1(u, e, a, g, o, C, D, B); + g |= 512; + } + break; + } + else + A === 69271571 ? (g |= 2, a = Y2(u, n, c)) : (A & 134217728) === 134217728 ? a = a2(u, e) : A === 8457014 ? (g |= 8, E(u, e)) : e & 1 && u.token === 131 ? (g |= 4096, a = k1(u, e | 16384, C, D, B)) : e & 1 && (u.token & 1073741824) === 1073741824 ? g |= 128 : A === 122 ? (a = z(u, e, 0), u.token !== 67174411 && f(u, 28, G[u.token & 255])) : f(u, 28, G[u.token & 255]); + if (g & 792 && (u.token & 143360 ? a = z(u, e, 0) : (u.token & 134217728) === 134217728 ? a = a2(u, e) : u.token === 69271571 ? (g |= 2, a = Y2(u, e, 0)) : u.token === 122 ? a = z(u, e, 0) : e & 1 && u.token === 131 ? (g |= 4096, a = k1(u, e, C, D, B)) : f(u, 131)), (g & 2) < 1 && (u.tokenValue === "constructor" ? ((u.token & 1073741824) === 1073741824 ? f(u, 125) : (g & 32) < 1 && u.token === 67174411 && (g & 920 ? f(u, 50, "accessor") : (e & 524288) < 1 && (u.flags & 32 ? f(u, 51) : u.flags |= 32)), g |= 64) : (g & 4096) < 1 && g & 824 && u.tokenValue === "prototype" && f(u, 49)), e & 1 && u.token !== 67174411) + return r1(u, e, a, g, o, C, D, B); + let O = A2(u, e, g, c, u.tokenPos, u.linePos, u.colPos); + return v(u, e, s, h, b, e & 1 ? { type: "MethodDefinition", kind: (g & 32) < 1 && g & 64 ? "constructor" : g & 256 ? "get" : g & 512 ? "set" : "method", static: (g & 32) > 0, computed: (g & 2) > 0, key: a, decorators: o, value: O } : { type: "MethodDefinition", kind: (g & 32) < 1 && g & 64 ? "constructor" : g & 256 ? "get" : g & 512 ? "set" : "method", static: (g & 32) > 0, computed: (g & 2) > 0, key: a, value: O }); + } + function k1(u, e, i, n, t) { + E(u, e); + let { tokenValue: o } = u; + return o === "constructor" && f(u, 124), E(u, e), v(u, e, i, n, t, { type: "PrivateIdentifier", name: o }); + } + function r1(u, e, i, n, t, o, l, c) { + let s = null; + if (n & 8 && f(u, 0), u.token === 1077936157) { + E(u, e | 32768); + let { tokenPos: h, linePos: b, colPos: g } = u; + u.token === 537079928 && f(u, 115), s = h2(u, e | 16384, 2, 0, 1, 0, 0, 1, h, b, g), (u.token & 1073741824) !== 1073741824 && (s = W(u, e | 16384, s, 0, 0, h, b, g), s = x(u, e | 16384, 0, 0, h, b, g, s), u.token === 18 && (s = S2(u, e, 0, o, l, c, s))); + } + return v(u, e, o, l, c, { type: "PropertyDefinition", key: i, value: s, static: (n & 32) > 0, computed: (n & 2) > 0, decorators: t }); + } + function Ae(u, e, i, n, t, o, l, c) { + if (u.token & 143360) + return Q1(u, e, i, n, t, o, l, c); + (u.token & 2097152) !== 2097152 && f(u, 28, G[u.token & 255]); + let s = u.token === 69271571 ? k2(u, e, i, 1, 0, 1, n, t, o, l, c) : r2(u, e, i, 1, 0, 1, n, t, o, l, c); + return u.destructible & 16 && f(u, 47), u.destructible & 32 && f(u, 47), s; + } + function Q1(u, e, i, n, t, o, l, c) { + let { tokenValue: s, token: h } = u; + return e & 1024 && ((h & 537079808) === 537079808 ? f(u, 115) : (h & 36864) === 36864 && f(u, 114)), (h & 20480) === 20480 && f(u, 99), e & 2099200 && h === 241773 && f(u, 30), h === 241739 && n & 24 && f(u, 97), e & 4196352 && h === 209008 && f(u, 95), E(u, e), i && q2(u, e, i, s, n, t), v(u, e, o, l, c, { type: "Identifier", name: s }); + } + function G1(u, e, i, n, t, o) { + if (E(u, e), u.token === 8456259) + return v(u, e, n, t, o, { type: "JSXFragment", openingFragment: Et(u, e, n, t, o), children: ye(u, e), closingFragment: Ct(u, e, i, u.tokenPos, u.linePos, u.colPos) }); + let l = null, c = [], s = Bt(u, e, i, n, t, o); + if (!s.selfClosing) { + c = ye(u, e), l = Dt(u, e, i, u.tokenPos, u.linePos, u.colPos); + let h = l1(l.name); + l1(s.name) !== h && f(u, 149, h); + } + return v(u, e, n, t, o, { type: "JSXElement", children: c, openingElement: s, closingElement: l }); + } + function Et(u, e, i, n, t) { + return V2(u, e), v(u, e, i, n, t, { type: "JSXOpeningFragment" }); + } + function Dt(u, e, i, n, t, o) { + w(u, e, 25); + let l = Pe(u, e, u.tokenPos, u.linePos, u.colPos); + return i ? w(u, e, 8456259) : u.token = V2(u, e), v(u, e, n, t, o, { type: "JSXClosingElement", name: l }); + } + function Ct(u, e, i, n, t, o) { + return w(u, e, 25), w(u, e, 8456259), v(u, e, n, t, o, { type: "JSXClosingFragment" }); + } + function ye(u, e) { + let i = []; + for (; u.token !== 25; ) + u.index = u.tokenPos = u.startPos, u.column = u.colPos = u.startColumn, u.line = u.linePos = u.startLine, V2(u, e), i.push(wt(u, e, u.tokenPos, u.linePos, u.colPos)); + return i; + } + function wt(u, e, i, n, t) { + if (u.token === 138) + return qt(u, e, i, n, t); + if (u.token === 2162700) + return De(u, e, 0, 0, i, n, t); + if (u.token === 8456258) + return G1(u, e, 0, i, n, t); + f(u, 0); + } + function qt(u, e, i, n, t) { + V2(u, e); + let o = { type: "JSXText", value: u.tokenValue }; + return e & 512 && (o.raw = u.tokenRaw), v(u, e, i, n, t, o); + } + function Bt(u, e, i, n, t, o) { + (u.token & 143360) !== 143360 && (u.token & 4096) !== 4096 && f(u, 0); + let l = Pe(u, e, u.tokenPos, u.linePos, u.colPos), c = Ft(u, e), s = u.token === 8457016; + return u.token === 8456259 ? V2(u, e) : (w(u, e, 8457016), i ? w(u, e, 8456259) : V2(u, e)), v(u, e, n, t, o, { type: "JSXOpeningElement", name: l, attributes: c, selfClosing: s }); + } + function Pe(u, e, i, n, t) { + N1(u); + let o = v1(u, e, i, n, t); + if (u.token === 21) + return Ee(u, e, o, i, n, t); + for (; U(u, e, 67108877); ) + N1(u), o = St(u, e, o, i, n, t); + return o; + } + function St(u, e, i, n, t, o) { + let l = v1(u, e, u.tokenPos, u.linePos, u.colPos); + return v(u, e, n, t, o, { type: "JSXMemberExpression", object: i, property: l }); + } + function Ft(u, e) { + let i = []; + for (; u.token !== 8457016 && u.token !== 8456259 && u.token !== 1048576; ) + i.push(Lt(u, e, u.tokenPos, u.linePos, u.colPos)); + return i; + } + function Tt(u, e, i, n, t) { + E(u, e), w(u, e, 14); + let o = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos); + return w(u, e, 1074790415), v(u, e, i, n, t, { type: "JSXSpreadAttribute", argument: o }); + } + function Lt(u, e, i, n, t) { + if (u.token === 2162700) + return Tt(u, e, i, n, t); + N1(u); + let o = null, l = v1(u, e, i, n, t); + if (u.token === 21 && (l = Ee(u, e, l, i, n, t)), u.token === 1077936157) { + let c = w0(u, e), { tokenPos: s, linePos: h, colPos: b } = u; + switch (c) { + case 134283267: + o = a2(u, e); + break; + case 8456258: + o = G1(u, e, 1, s, h, b); + break; + case 2162700: + o = De(u, e, 1, 1, s, h, b); + break; + default: + f(u, 148); + } + } + return v(u, e, i, n, t, { type: "JSXAttribute", value: o, name: l }); + } + function Ee(u, e, i, n, t, o) { + w(u, e, 21); + let l = v1(u, e, u.tokenPos, u.linePos, u.colPos); + return v(u, e, n, t, o, { type: "JSXNamespacedName", namespace: i, name: l }); + } + function De(u, e, i, n, t, o, l) { + E(u, e | 32768); + let { tokenPos: c, linePos: s, colPos: h } = u; + if (u.token === 14) + return Ot(u, e, c, s, h); + let b = null; + return u.token === 1074790415 ? (n && f(u, 151), b = It(u, e, u.startPos, u.startLine, u.startColumn)) : b = Q(u, e, 1, 0, 0, c, s, h), i ? w(u, e, 1074790415) : V2(u, e), v(u, e, t, o, l, { type: "JSXExpressionContainer", expression: b }); + } + function Ot(u, e, i, n, t) { + w(u, e, 14); + let o = Q(u, e, 1, 0, 0, u.tokenPos, u.linePos, u.colPos); + return w(u, e, 1074790415), v(u, e, i, n, t, { type: "JSXSpreadChild", expression: o }); + } + function It(u, e, i, n, t) { + return u.startPos = u.tokenPos, u.startLine = u.linePos, u.startColumn = u.colPos, v(u, e, i, n, t, { type: "JSXEmptyExpression" }); + } + function v1(u, e, i, n, t) { + let { tokenValue: o } = u; + return E(u, e), v(u, e, i, n, t, { type: "JSXIdentifier", name: o }); + } + var Rt = Object.freeze({ __proto__: null }), Nt = "4.2.1", Vt = Nt; + function jt(u, e) { + return U1(u, e, 0); + } + function _t(u, e) { + return U1(u, e, 3072); + } + function Mt(u, e) { + return U1(u, e, 0); + } + d.ESTree = Rt, d.parse = Mt, d.parseModule = _t, d.parseScript = jt, d.version = Vt; + } }); + n2(); + var h3 = pn(), m3 = $4(), b3 = o3(), k3 = d3(), r3 = { module: true, next: true, ranges: true, webcompat: true, loc: true, raw: true, directives: true, globalReturn: true, impliedStrict: false, preserveParens: false, lexical: false, identifierPattern: false, jsx: true, specDeviation: true, uniqueKeyInPattern: false }; + function Gn(d, m) { + let { parse: k } = g3(), f = [], P = [], S = k(d, Object.assign(Object.assign({}, r3), {}, { module: m, onComment: f, onToken: P })); + return S.comments = f, S.tokens = P, S; + } + function v3(d) { + let { message: m, line: k, column: f } = d, P = (m.match(/^\[(?\d+):(?\d+)]: (?.*)$/) || {}).groups; + return P && (m = P.message, typeof k != "number" && (k = Number(P.line), f = Number(P.column))), typeof k != "number" ? d : h3(m, { start: { line: k, column: f } }); + } + function A3(d, m) { + let k = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, { result: f, error: P } = m3(() => Gn(d, true), () => Gn(d, false)); + if (!f) + throw v3(P); + return k.originalText = d, k3(f, k); + } + k0.exports = { parsers: { meriyah: b3(A3) } }; + }); + return y3(); + }); + } +}); + +// node_modules/prettier/parser-postcss.js +var require_parser_postcss = __commonJS({ + "node_modules/prettier/parser-postcss.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.postcss = e(); + } + })(function() { + "use strict"; + var V = (e, n) => () => (n || e((n = { exports: {} }).exports, n), n.exports); + var ee = V((pp, Ut) => { + var er = function(e) { + return e && e.Math == Math && e; + }; + Ut.exports = er(typeof globalThis == "object" && globalThis) || er(typeof window == "object" && window) || er(typeof self == "object" && self) || er(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var ke = V((hp, Wt) => { + Wt.exports = function(e) { + try { + return !!e(); + } catch { + return true; + } + }; + }); + var Te = V((dp, $t) => { + var fa = ke(); + $t.exports = !fa(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var Sr = V((vp, Vt) => { + var pa = ke(); + Vt.exports = !pa(function() { + var e = function() { + }.bind(); + return typeof e != "function" || e.hasOwnProperty("prototype"); + }); + }); + var tr = V((mp, Gt) => { + var ha = Sr(), rr = Function.prototype.call; + Gt.exports = ha ? rr.bind(rr) : function() { + return rr.apply(rr, arguments); + }; + }); + var Qt = V((Kt) => { + "use strict"; + var Ht = {}.propertyIsEnumerable, Jt = Object.getOwnPropertyDescriptor, da = Jt && !Ht.call({ 1: 2 }, 1); + Kt.f = da ? function(n) { + var i = Jt(this, n); + return !!i && i.enumerable; + } : Ht; + }); + var Or = V((yp, Yt) => { + Yt.exports = function(e, n) { + return { enumerable: !(e & 1), configurable: !(e & 2), writable: !(e & 4), value: n }; + }; + }); + var de = V((wp, en) => { + var Xt = Sr(), Zt = Function.prototype, va = Zt.bind, Tr = Zt.call, ma = Xt && va.bind(Tr, Tr); + en.exports = Xt ? function(e) { + return e && ma(e); + } : function(e) { + return e && function() { + return Tr.apply(e, arguments); + }; + }; + }); + var nn = V((_p, tn) => { + var rn = de(), ga = rn({}.toString), ya = rn("".slice); + tn.exports = function(e) { + return ya(ga(e), 8, -1); + }; + }); + var on = V((bp, sn) => { + var wa = ee(), _a = de(), ba = ke(), xa = nn(), Er = wa.Object, ka = _a("".split); + sn.exports = ba(function() { + return !Er("z").propertyIsEnumerable(0); + }) ? function(e) { + return xa(e) == "String" ? ka(e, "") : Er(e); + } : Er; + }); + var qr = V((xp, an) => { + var Sa = ee(), Oa = Sa.TypeError; + an.exports = function(e) { + if (e == null) + throw Oa("Can't call method on " + e); + return e; + }; + }); + var nr = V((kp, un) => { + var Ta = on(), Ea = qr(); + un.exports = function(e) { + return Ta(Ea(e)); + }; + }); + var ve = V((Sp, cn) => { + cn.exports = function(e) { + return typeof e == "function"; + }; + }); + var Me = V((Op, ln) => { + var qa = ve(); + ln.exports = function(e) { + return typeof e == "object" ? e !== null : qa(e); + }; + }); + var ir = V((Tp, fn) => { + var Ar = ee(), Aa = ve(), Pa = function(e) { + return Aa(e) ? e : void 0; + }; + fn.exports = function(e, n) { + return arguments.length < 2 ? Pa(Ar[e]) : Ar[e] && Ar[e][n]; + }; + }); + var hn = V((Ep, pn) => { + var Ra = de(); + pn.exports = Ra({}.isPrototypeOf); + }); + var vn = V((qp, dn) => { + var Ia = ir(); + dn.exports = Ia("navigator", "userAgent") || ""; + }); + var xn = V((Ap, bn) => { + var _n = ee(), Pr = vn(), mn = _n.process, gn = _n.Deno, yn = mn && mn.versions || gn && gn.version, wn = yn && yn.v8, he, sr; + wn && (he = wn.split("."), sr = he[0] > 0 && he[0] < 4 ? 1 : +(he[0] + he[1])); + !sr && Pr && (he = Pr.match(/Edge\/(\d+)/), (!he || he[1] >= 74) && (he = Pr.match(/Chrome\/(\d+)/), he && (sr = +he[1]))); + bn.exports = sr; + }); + var Rr = V((Pp, Sn) => { + var kn = xn(), Ca = ke(); + Sn.exports = !!Object.getOwnPropertySymbols && !Ca(function() { + var e = Symbol(); + return !String(e) || !(Object(e) instanceof Symbol) || !Symbol.sham && kn && kn < 41; + }); + }); + var Ir = V((Rp, On) => { + var Na = Rr(); + On.exports = Na && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var Cr = V((Ip, Tn) => { + var ja = ee(), Ma = ir(), Da = ve(), La = hn(), za = Ir(), Ba = ja.Object; + Tn.exports = za ? function(e) { + return typeof e == "symbol"; + } : function(e) { + var n = Ma("Symbol"); + return Da(n) && La(n.prototype, Ba(e)); + }; + }); + var qn = V((Cp, En) => { + var Fa = ee(), Ua = Fa.String; + En.exports = function(e) { + try { + return Ua(e); + } catch { + return "Object"; + } + }; + }); + var Pn = V((Np, An) => { + var Wa = ee(), $a = ve(), Va = qn(), Ga = Wa.TypeError; + An.exports = function(e) { + if ($a(e)) + return e; + throw Ga(Va(e) + " is not a function"); + }; + }); + var In = V((jp, Rn) => { + var Ha = Pn(); + Rn.exports = function(e, n) { + var i = e[n]; + return i == null ? void 0 : Ha(i); + }; + }); + var Nn = V((Mp, Cn) => { + var Ja = ee(), Nr = tr(), jr = ve(), Mr = Me(), Ka = Ja.TypeError; + Cn.exports = function(e, n) { + var i, a; + if (n === "string" && jr(i = e.toString) && !Mr(a = Nr(i, e)) || jr(i = e.valueOf) && !Mr(a = Nr(i, e)) || n !== "string" && jr(i = e.toString) && !Mr(a = Nr(i, e))) + return a; + throw Ka("Can't convert object to primitive value"); + }; + }); + var Mn = V((Dp, jn) => { + jn.exports = false; + }); + var or = V((Lp, Ln) => { + var Dn = ee(), Qa = Object.defineProperty; + Ln.exports = function(e, n) { + try { + Qa(Dn, e, { value: n, configurable: true, writable: true }); + } catch { + Dn[e] = n; + } + return n; + }; + }); + var ar = V((zp, Bn) => { + var Ya = ee(), Xa = or(), zn = "__core-js_shared__", Za = Ya[zn] || Xa(zn, {}); + Bn.exports = Za; + }); + var Dr = V((Bp, Un) => { + var eu = Mn(), Fn = ar(); + (Un.exports = function(e, n) { + return Fn[e] || (Fn[e] = n !== void 0 ? n : {}); + })("versions", []).push({ version: "3.22.2", mode: eu ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var $n = V((Fp, Wn) => { + var ru = ee(), tu = qr(), nu = ru.Object; + Wn.exports = function(e) { + return nu(tu(e)); + }; + }); + var Se = V((Up, Vn) => { + var iu = de(), su = $n(), ou = iu({}.hasOwnProperty); + Vn.exports = Object.hasOwn || function(n, i) { + return ou(su(n), i); + }; + }); + var Lr = V((Wp, Gn) => { + var au = de(), uu = 0, cu = Math.random(), lu = au(1 .toString); + Gn.exports = function(e) { + return "Symbol(" + (e === void 0 ? "" : e) + ")_" + lu(++uu + cu, 36); + }; + }); + var Xn = V(($p, Yn) => { + var fu = ee(), pu = Dr(), Hn = Se(), hu = Lr(), Jn = Rr(), Qn = Ir(), De = pu("wks"), Ee = fu.Symbol, Kn = Ee && Ee.for, du = Qn ? Ee : Ee && Ee.withoutSetter || hu; + Yn.exports = function(e) { + if (!Hn(De, e) || !(Jn || typeof De[e] == "string")) { + var n = "Symbol." + e; + Jn && Hn(Ee, e) ? De[e] = Ee[e] : Qn && Kn ? De[e] = Kn(n) : De[e] = du(n); + } + return De[e]; + }; + }); + var ti = V((Vp, ri) => { + var vu = ee(), mu = tr(), Zn = Me(), ei = Cr(), gu = In(), yu = Nn(), wu = Xn(), _u = vu.TypeError, bu = wu("toPrimitive"); + ri.exports = function(e, n) { + if (!Zn(e) || ei(e)) + return e; + var i = gu(e, bu), a; + if (i) { + if (n === void 0 && (n = "default"), a = mu(i, e, n), !Zn(a) || ei(a)) + return a; + throw _u("Can't convert object to primitive value"); + } + return n === void 0 && (n = "number"), yu(e, n); + }; + }); + var zr = V((Gp, ni) => { + var xu = ti(), ku = Cr(); + ni.exports = function(e) { + var n = xu(e, "string"); + return ku(n) ? n : n + ""; + }; + }); + var oi = V((Hp, si) => { + var Su = ee(), ii = Me(), Br = Su.document, Ou = ii(Br) && ii(Br.createElement); + si.exports = function(e) { + return Ou ? Br.createElement(e) : {}; + }; + }); + var Fr = V((Jp, ai) => { + var Tu = Te(), Eu = ke(), qu = oi(); + ai.exports = !Tu && !Eu(function() { + return Object.defineProperty(qu("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var Ur = V((ci) => { + var Au = Te(), Pu = tr(), Ru = Qt(), Iu = Or(), Cu = nr(), Nu = zr(), ju = Se(), Mu = Fr(), ui = Object.getOwnPropertyDescriptor; + ci.f = Au ? ui : function(n, i) { + if (n = Cu(n), i = Nu(i), Mu) + try { + return ui(n, i); + } catch { + } + if (ju(n, i)) + return Iu(!Pu(Ru.f, n, i), n[i]); + }; + }); + var fi = V((Qp, li) => { + var Du = Te(), Lu = ke(); + li.exports = Du && Lu(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var Wr = V((Yp, hi) => { + var pi = ee(), zu = Me(), Bu = pi.String, Fu = pi.TypeError; + hi.exports = function(e) { + if (zu(e)) + return e; + throw Fu(Bu(e) + " is not an object"); + }; + }); + var Jr = V((vi) => { + var Uu = ee(), Wu = Te(), $u = Fr(), Vu = fi(), ur = Wr(), di = zr(), Gu = Uu.TypeError, $r = Object.defineProperty, Hu = Object.getOwnPropertyDescriptor, Vr = "enumerable", Gr = "configurable", Hr = "writable"; + vi.f = Wu ? Vu ? function(n, i, a) { + if (ur(n), i = di(i), ur(a), typeof n == "function" && i === "prototype" && "value" in a && Hr in a && !a[Hr]) { + var o = Hu(n, i); + o && o[Hr] && (n[i] = a.value, a = { configurable: Gr in a ? a[Gr] : o[Gr], enumerable: Vr in a ? a[Vr] : o[Vr], writable: false }); + } + return $r(n, i, a); + } : $r : function(n, i, a) { + if (ur(n), i = di(i), ur(a), $u) + try { + return $r(n, i, a); + } catch { + } + if ("get" in a || "set" in a) + throw Gu("Accessors not supported"); + return "value" in a && (n[i] = a.value), n; + }; + }); + var cr = V((Zp, mi) => { + var Ju = Te(), Ku = Jr(), Qu = Or(); + mi.exports = Ju ? function(e, n, i) { + return Ku.f(e, n, Qu(1, i)); + } : function(e, n, i) { + return e[n] = i, e; + }; + }); + var Qr = V((eh, gi) => { + var Yu = de(), Xu = ve(), Kr = ar(), Zu = Yu(Function.toString); + Xu(Kr.inspectSource) || (Kr.inspectSource = function(e) { + return Zu(e); + }); + gi.exports = Kr.inspectSource; + }); + var _i = V((rh, wi) => { + var ec = ee(), rc = ve(), tc = Qr(), yi = ec.WeakMap; + wi.exports = rc(yi) && /native code/.test(tc(yi)); + }); + var ki = V((th, xi) => { + var nc = Dr(), ic = Lr(), bi = nc("keys"); + xi.exports = function(e) { + return bi[e] || (bi[e] = ic(e)); + }; + }); + var Yr = V((nh, Si) => { + Si.exports = {}; + }); + var Pi = V((ih, Ai) => { + var sc = _i(), qi = ee(), Xr = de(), oc = Me(), ac = cr(), Zr = Se(), et = ar(), uc = ki(), cc = Yr(), Oi = "Object already initialized", tt = qi.TypeError, lc = qi.WeakMap, lr, Fe, fr, fc = function(e) { + return fr(e) ? Fe(e) : lr(e, {}); + }, pc = function(e) { + return function(n) { + var i; + if (!oc(n) || (i = Fe(n)).type !== e) + throw tt("Incompatible receiver, " + e + " required"); + return i; + }; + }; + sc || et.state ? (Oe = et.state || (et.state = new lc()), Ti = Xr(Oe.get), rt = Xr(Oe.has), Ei = Xr(Oe.set), lr = function(e, n) { + if (rt(Oe, e)) + throw new tt(Oi); + return n.facade = e, Ei(Oe, e, n), n; + }, Fe = function(e) { + return Ti(Oe, e) || {}; + }, fr = function(e) { + return rt(Oe, e); + }) : (qe = uc("state"), cc[qe] = true, lr = function(e, n) { + if (Zr(e, qe)) + throw new tt(Oi); + return n.facade = e, ac(e, qe, n), n; + }, Fe = function(e) { + return Zr(e, qe) ? e[qe] : {}; + }, fr = function(e) { + return Zr(e, qe); + }); + var Oe, Ti, rt, Ei, qe; + Ai.exports = { set: lr, get: Fe, has: fr, enforce: fc, getterFor: pc }; + }); + var Ci = V((sh, Ii) => { + var nt = Te(), hc = Se(), Ri = Function.prototype, dc = nt && Object.getOwnPropertyDescriptor, it = hc(Ri, "name"), vc = it && function() { + }.name === "something", mc = it && (!nt || nt && dc(Ri, "name").configurable); + Ii.exports = { EXISTS: it, PROPER: vc, CONFIGURABLE: mc }; + }); + var Li = V((oh, Di) => { + var gc = ee(), Ni = ve(), yc = Se(), ji = cr(), wc = or(), _c = Qr(), Mi = Pi(), bc = Ci().CONFIGURABLE, xc = Mi.get, kc = Mi.enforce, Sc = String(String).split("String"); + (Di.exports = function(e, n, i, a) { + var o = a ? !!a.unsafe : false, f = a ? !!a.enumerable : false, p = a ? !!a.noTargetGet : false, h = a && a.name !== void 0 ? a.name : n, g; + if (Ni(i) && (String(h).slice(0, 7) === "Symbol(" && (h = "[" + String(h).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!yc(i, "name") || bc && i.name !== h) && ji(i, "name", h), g = kc(i), g.source || (g.source = Sc.join(typeof h == "string" ? h : ""))), e === gc) { + f ? e[n] = i : wc(n, i); + return; + } else + o ? !p && e[n] && (f = true) : delete e[n]; + f ? e[n] = i : ji(e, n, i); + })(Function.prototype, "toString", function() { + return Ni(this) && xc(this).source || _c(this); + }); + }); + var st = V((ah, zi) => { + var Oc = Math.ceil, Tc = Math.floor; + zi.exports = function(e) { + var n = +e; + return n !== n || n === 0 ? 0 : (n > 0 ? Tc : Oc)(n); + }; + }); + var Fi = V((uh, Bi) => { + var Ec = st(), qc = Math.max, Ac = Math.min; + Bi.exports = function(e, n) { + var i = Ec(e); + return i < 0 ? qc(i + n, 0) : Ac(i, n); + }; + }); + var Wi = V((ch, Ui) => { + var Pc = st(), Rc = Math.min; + Ui.exports = function(e) { + return e > 0 ? Rc(Pc(e), 9007199254740991) : 0; + }; + }); + var Vi = V((lh, $i) => { + var Ic = Wi(); + $i.exports = function(e) { + return Ic(e.length); + }; + }); + var Ji = V((fh, Hi) => { + var Cc = nr(), Nc = Fi(), jc = Vi(), Gi = function(e) { + return function(n, i, a) { + var o = Cc(n), f = jc(o), p = Nc(a, f), h; + if (e && i != i) { + for (; f > p; ) + if (h = o[p++], h != h) + return true; + } else + for (; f > p; p++) + if ((e || p in o) && o[p] === i) + return e || p || 0; + return !e && -1; + }; + }; + Hi.exports = { includes: Gi(true), indexOf: Gi(false) }; + }); + var Yi = V((ph, Qi) => { + var Mc = de(), ot = Se(), Dc = nr(), Lc = Ji().indexOf, zc = Yr(), Ki = Mc([].push); + Qi.exports = function(e, n) { + var i = Dc(e), a = 0, o = [], f; + for (f in i) + !ot(zc, f) && ot(i, f) && Ki(o, f); + for (; n.length > a; ) + ot(i, f = n[a++]) && (~Lc(o, f) || Ki(o, f)); + return o; + }; + }); + var Zi = V((hh, Xi) => { + Xi.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var rs = V((es) => { + var Bc = Yi(), Fc = Zi(), Uc = Fc.concat("length", "prototype"); + es.f = Object.getOwnPropertyNames || function(n) { + return Bc(n, Uc); + }; + }); + var ns = V((ts) => { + ts.f = Object.getOwnPropertySymbols; + }); + var ss = V((mh, is) => { + var Wc = ir(), $c = de(), Vc = rs(), Gc = ns(), Hc = Wr(), Jc = $c([].concat); + is.exports = Wc("Reflect", "ownKeys") || function(n) { + var i = Vc.f(Hc(n)), a = Gc.f; + return a ? Jc(i, a(n)) : i; + }; + }); + var us = V((gh, as) => { + var os = Se(), Kc = ss(), Qc = Ur(), Yc = Jr(); + as.exports = function(e, n, i) { + for (var a = Kc(n), o = Yc.f, f = Qc.f, p = 0; p < a.length; p++) { + var h = a[p]; + !os(e, h) && !(i && os(i, h)) && o(e, h, f(n, h)); + } + }; + }); + var ls = V((yh, cs) => { + var Xc = ke(), Zc = ve(), el = /#|\.prototype\./, Ue = function(e, n) { + var i = tl[rl(e)]; + return i == il ? true : i == nl ? false : Zc(n) ? Xc(n) : !!n; + }, rl = Ue.normalize = function(e) { + return String(e).replace(el, ".").toLowerCase(); + }, tl = Ue.data = {}, nl = Ue.NATIVE = "N", il = Ue.POLYFILL = "P"; + cs.exports = Ue; + }); + var ps = V((wh, fs5) => { + var at = ee(), sl = Ur().f, ol = cr(), al = Li(), ul = or(), cl = us(), ll = ls(); + fs5.exports = function(e, n) { + var i = e.target, a = e.global, o = e.stat, f, p, h, g, c, t; + if (a ? p = at : o ? p = at[i] || ul(i, {}) : p = (at[i] || {}).prototype, p) + for (h in n) { + if (c = n[h], e.noTargetGet ? (t = sl(p, h), g = t && t.value) : g = p[h], f = ll(a ? h : i + (o ? "." : "#") + h, e.forced), !f && g !== void 0) { + if (typeof c == typeof g) + continue; + cl(c, g); + } + (e.sham || g && g.sham) && ol(c, "sham", true), al(p, h, c, e); + } + }; + }); + var hs = V(() => { + var fl = ps(), pl = ee(); + fl({ global: true }, { globalThis: pl }); + }); + var ds = V(() => { + hs(); + }); + var lp = V((Ph, la) => { + ds(); + var kt = Object.defineProperty, hl = Object.getOwnPropertyDescriptor, St = Object.getOwnPropertyNames, dl = Object.prototype.hasOwnProperty, Le = (e, n) => function() { + return e && (n = (0, e[St(e)[0]])(e = 0)), n; + }, R = (e, n) => function() { + return n || (0, e[St(e)[0]])((n = { exports: {} }).exports, n), n.exports; + }, Ot = (e, n) => { + for (var i in n) + kt(e, i, { get: n[i], enumerable: true }); + }, vl = (e, n, i, a) => { + if (n && typeof n == "object" || typeof n == "function") + for (let o of St(n)) + !dl.call(e, o) && o !== i && kt(e, o, { get: () => n[o], enumerable: !(a = hl(n, o)) || a.enumerable }); + return e; + }, Tt = (e) => vl(kt({}, "__esModule", { value: true }), e), A = Le({ ""() { + } }), ml = R({ "src/common/parser-create-error.js"(e, n) { + "use strict"; + A(); + function i(a, o) { + let f = new SyntaxError(a + " (" + o.start.line + ":" + o.start.column + ")"); + return f.loc = o, f; + } + n.exports = i; + } }), Cs = R({ "src/utils/get-last.js"(e, n) { + "use strict"; + A(); + var i = (a) => a[a.length - 1]; + n.exports = i; + } }), Ns = R({ "src/utils/front-matter/parse.js"(e, n) { + "use strict"; + A(); + var i = new RegExp("^(?-{3}|\\+{3})(?[^\\n]*)\\n(?:|(?.*?)\\n)(?\\k|\\.{3})[^\\S\\n]*(?:\\n|$)", "s"); + function a(o) { + let f = o.match(i); + if (!f) + return { content: o }; + let { startDelimiter: p, language: h, value: g = "", endDelimiter: c } = f.groups, t = h.trim() || "yaml"; + if (p === "+++" && (t = "toml"), t !== "yaml" && p !== c) + return { content: o }; + let [r] = f; + return { frontMatter: { type: "front-matter", lang: t, value: g, startDelimiter: p, endDelimiter: c, raw: r.replace(/\n$/, "") }, content: r.replace(/[^\n]/g, " ") + o.slice(r.length) }; + } + n.exports = a; + } }), js = {}; + Ot(js, { EOL: () => gt, arch: () => gl, cpus: () => Us, default: () => Hs, endianness: () => Ms, freemem: () => Bs, getNetworkInterfaces: () => Gs, hostname: () => Ds, loadavg: () => Ls, networkInterfaces: () => Vs, platform: () => yl, release: () => $s, tmpDir: () => vt, tmpdir: () => mt, totalmem: () => Fs, type: () => Ws, uptime: () => zs }); + function Ms() { + if (typeof pr > "u") { + var e = new ArrayBuffer(2), n = new Uint8Array(e), i = new Uint16Array(e); + if (n[0] = 1, n[1] = 2, i[0] === 258) + pr = "BE"; + else if (i[0] === 513) + pr = "LE"; + else + throw new Error("unable to figure out endianess"); + } + return pr; + } + function Ds() { + return typeof globalThis.location < "u" ? globalThis.location.hostname : ""; + } + function Ls() { + return []; + } + function zs() { + return 0; + } + function Bs() { + return Number.MAX_VALUE; + } + function Fs() { + return Number.MAX_VALUE; + } + function Us() { + return []; + } + function Ws() { + return "Browser"; + } + function $s() { + return typeof globalThis.navigator < "u" ? globalThis.navigator.appVersion : ""; + } + function Vs() { + } + function Gs() { + } + function gl() { + return "javascript"; + } + function yl() { + return "browser"; + } + function vt() { + return "/tmp"; + } + var pr, mt, gt, Hs, wl = Le({ "node-modules-polyfills:os"() { + A(), mt = vt, gt = ` +`, Hs = { EOL: gt, tmpdir: mt, tmpDir: vt, networkInterfaces: Vs, getNetworkInterfaces: Gs, release: $s, type: Ws, cpus: Us, totalmem: Fs, freemem: Bs, uptime: zs, loadavg: Ls, hostname: Ds, endianness: Ms }; + } }), _l = R({ "node-modules-polyfills-commonjs:os"(e, n) { + A(); + var i = (wl(), Tt(js)); + if (i && i.default) { + n.exports = i.default; + for (let a in i) + n.exports[a] = i[a]; + } else + i && (n.exports = i); + } }), bl = R({ "node_modules/detect-newline/index.js"(e, n) { + "use strict"; + A(); + var i = (a) => { + if (typeof a != "string") + throw new TypeError("Expected a string"); + let o = a.match(/(?:\r?\n)/g) || []; + if (o.length === 0) + return; + let f = o.filter((h) => h === `\r +`).length, p = o.length - f; + return f > p ? `\r +` : ` +`; + }; + n.exports = i, n.exports.graceful = (a) => typeof a == "string" && i(a) || ` +`; + } }), xl = R({ "node_modules/jest-docblock/build/index.js"(e) { + "use strict"; + A(), Object.defineProperty(e, "__esModule", { value: true }), e.extract = s, e.parse = m, e.parseWithComments = v, e.print = y, e.strip = l; + function n() { + let d = _l(); + return n = function() { + return d; + }, d; + } + function i() { + let d = a(bl()); + return i = function() { + return d; + }, d; + } + function a(d) { + return d && d.__esModule ? d : { default: d }; + } + var o = /\*\/$/, f = /^\/\*\*/, p = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, h = /(^|\s+)\/\/([^\r\n]*)/g, g = /^(\r?\n)+/, c = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g, t = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g, r = /(\r?\n|^) *\* ?/g, u = []; + function s(d) { + let _ = d.match(p); + return _ ? _[0].trimLeft() : ""; + } + function l(d) { + let _ = d.match(p); + return _ && _[0] ? d.substring(_[0].length) : d; + } + function m(d) { + return v(d).pragmas; + } + function v(d) { + let _ = (0, i().default)(d) || n().EOL; + d = d.replace(f, "").replace(o, "").replace(r, "$1"); + let S = ""; + for (; S !== d; ) + S = d, d = d.replace(c, "".concat(_, "$1 $2").concat(_)); + d = d.replace(g, "").trimRight(); + let x = /* @__PURE__ */ Object.create(null), N = d.replace(t, "").replace(g, "").trimRight(), P; + for (; P = t.exec(d); ) { + let W = P[2].replace(h, ""); + typeof x[P[1]] == "string" || Array.isArray(x[P[1]]) ? x[P[1]] = u.concat(x[P[1]], W) : x[P[1]] = W; + } + return { comments: N, pragmas: x }; + } + function y(d) { + let { comments: _ = "", pragmas: S = {} } = d, x = (0, i().default)(_) || n().EOL, N = "/**", P = " *", W = " */", U = Object.keys(S), H = U.map(($) => w($, S[$])).reduce(($, B) => $.concat(B), []).map(($) => P + " " + $ + x).join(""); + if (!_) { + if (U.length === 0) + return ""; + if (U.length === 1 && !Array.isArray(S[U[0]])) { + let $ = S[U[0]]; + return "".concat(N, " ").concat(w(U[0], $)[0]).concat(W); + } + } + let D = _.split(x).map(($) => "".concat(P, " ").concat($)).join(x) + x; + return N + x + (_ ? D : "") + (_ && U.length ? P + x : "") + H + W; + } + function w(d, _) { + return u.concat(_).map((S) => "@".concat(d, " ").concat(S).trim()); + } + } }), kl = R({ "src/common/end-of-line.js"(e, n) { + "use strict"; + A(); + function i(p) { + let h = p.indexOf("\r"); + return h >= 0 ? p.charAt(h + 1) === ` +` ? "crlf" : "cr" : "lf"; + } + function a(p) { + switch (p) { + case "cr": + return "\r"; + case "crlf": + return `\r +`; + default: + return ` +`; + } + } + function o(p, h) { + let g; + switch (h) { + case ` +`: + g = /\n/g; + break; + case "\r": + g = /\r/g; + break; + case `\r +`: + g = /\r\n/g; + break; + default: + throw new Error('Unexpected "eol" '.concat(JSON.stringify(h), ".")); + } + let c = p.match(g); + return c ? c.length : 0; + } + function f(p) { + return p.replace(/\r\n?/g, ` +`); + } + n.exports = { guessEndOfLine: i, convertEndOfLineToChars: a, countEndOfLineChars: o, normalizeEndOfLine: f }; + } }), Sl = R({ "src/language-js/utils/get-shebang.js"(e, n) { + "use strict"; + A(); + function i(a) { + if (!a.startsWith("#!")) + return ""; + let o = a.indexOf(` +`); + return o === -1 ? a : a.slice(0, o); + } + n.exports = i; + } }), Ol = R({ "src/language-js/pragma.js"(e, n) { + "use strict"; + A(); + var { parseWithComments: i, strip: a, extract: o, print: f } = xl(), { normalizeEndOfLine: p } = kl(), h = Sl(); + function g(r) { + let u = h(r); + u && (r = r.slice(u.length + 1)); + let s = o(r), { pragmas: l, comments: m } = i(s); + return { shebang: u, text: r, pragmas: l, comments: m }; + } + function c(r) { + let u = Object.keys(g(r).pragmas); + return u.includes("prettier") || u.includes("format"); + } + function t(r) { + let { shebang: u, text: s, pragmas: l, comments: m } = g(r), v = a(s), y = f({ pragmas: Object.assign({ format: "" }, l), comments: m.trimStart() }); + return (u ? "".concat(u, ` +`) : "") + p(y) + (v.startsWith(` +`) ? ` +` : ` + +`) + v; + } + n.exports = { hasPragma: c, insertPragma: t }; + } }), Tl = R({ "src/language-css/pragma.js"(e, n) { + "use strict"; + A(); + var i = Ol(), a = Ns(); + function o(p) { + return i.hasPragma(a(p).content); + } + function f(p) { + let { frontMatter: h, content: g } = a(p); + return (h ? h.raw + ` + +` : "") + i.insertPragma(g); + } + n.exports = { hasPragma: o, insertPragma: f }; + } }), El = R({ "src/utils/text/skip.js"(e, n) { + "use strict"; + A(); + function i(h) { + return (g, c, t) => { + let r = t && t.backwards; + if (c === false) + return false; + let { length: u } = g, s = c; + for (; s >= 0 && s < u; ) { + let l = g.charAt(s); + if (h instanceof RegExp) { + if (!h.test(l)) + return s; + } else if (!h.includes(l)) + return s; + r ? s-- : s++; + } + return s === -1 || s === u ? s : false; + }; + } + var a = i(/\s/), o = i(" "), f = i(",; "), p = i(/[^\n\r]/); + n.exports = { skipWhitespace: a, skipSpaces: o, skipToLineEnd: f, skipEverythingButNewLine: p }; + } }), ql = R({ "src/utils/line-column-to-index.js"(e, n) { + "use strict"; + A(), n.exports = function(i, a) { + let o = 0; + for (let f = 0; f < i.line - 1; ++f) + o = a.indexOf(` +`, o) + 1; + return o + i.column; + }; + } }), Js = R({ "src/language-css/loc.js"(e, n) { + "use strict"; + A(); + var { skipEverythingButNewLine: i } = El(), a = Cs(), o = ql(); + function f(s, l) { + return typeof s.sourceIndex == "number" ? s.sourceIndex : s.source ? o(s.source.start, l) - 1 : null; + } + function p(s, l) { + if (s.type === "css-comment" && s.inline) + return i(l, s.source.startOffset); + let m = s.nodes && a(s.nodes); + return m && s.source && !s.source.end && (s = m), s.source && s.source.end ? o(s.source.end, l) : null; + } + function h(s, l) { + s.source && (s.source.startOffset = f(s, l), s.source.endOffset = p(s, l)); + for (let m in s) { + let v = s[m]; + m === "source" || !v || typeof v != "object" || (v.type === "value-root" || v.type === "value-unknown" ? g(v, c(s), v.text || v.value) : h(v, l)); + } + } + function g(s, l, m) { + s.source && (s.source.startOffset = f(s, m) + l, s.source.endOffset = p(s, m) + l); + for (let v in s) { + let y = s[v]; + v === "source" || !y || typeof y != "object" || g(y, l, m); + } + } + function c(s) { + let l = s.source.startOffset; + return typeof s.prop == "string" && (l += s.prop.length), s.type === "css-atrule" && typeof s.name == "string" && (l += 1 + s.name.length + s.raws.afterName.match(/^\s*:?\s*/)[0].length), s.type !== "css-atrule" && s.raws && typeof s.raws.between == "string" && (l += s.raws.between.length), l; + } + function t(s) { + let l = "initial", m = "initial", v, y = false, w = []; + for (let d = 0; d < s.length; d++) { + let _ = s[d]; + switch (l) { + case "initial": + if (_ === "'") { + l = "single-quotes"; + continue; + } + if (_ === '"') { + l = "double-quotes"; + continue; + } + if ((_ === "u" || _ === "U") && s.slice(d, d + 4).toLowerCase() === "url(") { + l = "url", d += 3; + continue; + } + if (_ === "*" && s[d - 1] === "/") { + l = "comment-block"; + continue; + } + if (_ === "/" && s[d - 1] === "/") { + l = "comment-inline", v = d - 1; + continue; + } + continue; + case "single-quotes": + if (_ === "'" && s[d - 1] !== "\\" && (l = m, m = "initial"), _ === ` +` || _ === "\r") + return s; + continue; + case "double-quotes": + if (_ === '"' && s[d - 1] !== "\\" && (l = m, m = "initial"), _ === ` +` || _ === "\r") + return s; + continue; + case "url": + if (_ === ")" && (l = "initial"), _ === ` +` || _ === "\r") + return s; + if (_ === "'") { + l = "single-quotes", m = "url"; + continue; + } + if (_ === '"') { + l = "double-quotes", m = "url"; + continue; + } + continue; + case "comment-block": + _ === "/" && s[d - 1] === "*" && (l = "initial"); + continue; + case "comment-inline": + (_ === '"' || _ === "'" || _ === "*") && (y = true), (_ === ` +` || _ === "\r") && (y && w.push([v, d]), l = "initial", y = false); + continue; + } + } + for (let [d, _] of w) + s = s.slice(0, d) + s.slice(d, _).replace(/["'*]/g, " ") + s.slice(_); + return s; + } + function r(s) { + return s.source.startOffset; + } + function u(s) { + return s.source.endOffset; + } + n.exports = { locStart: r, locEnd: u, calculateLoc: h, replaceQuotesInInlineComments: t }; + } }), Al = R({ "src/utils/is-non-empty-array.js"(e, n) { + "use strict"; + A(); + function i(a) { + return Array.isArray(a) && a.length > 0; + } + n.exports = i; + } }), Pl = R({ "src/language-css/utils/has-scss-interpolation.js"(e, n) { + "use strict"; + A(); + var i = Al(); + function a(o) { + if (i(o)) { + for (let f = o.length - 1; f > 0; f--) + if (o[f].type === "word" && o[f].value === "{" && o[f - 1].type === "word" && o[f - 1].value.endsWith("#")) + return true; + } + return false; + } + n.exports = a; + } }), Rl = R({ "src/language-css/utils/has-string-or-function.js"(e, n) { + "use strict"; + A(); + function i(a) { + return a.some((o) => o.type === "string" || o.type === "func"); + } + n.exports = i; + } }), Il = R({ "src/language-css/utils/is-less-parser.js"(e, n) { + "use strict"; + A(); + function i(a) { + return a.parser === "css" || a.parser === "less"; + } + n.exports = i; + } }), Cl = R({ "src/language-css/utils/is-scss.js"(e, n) { + "use strict"; + A(); + function i(a, o) { + return a === "less" || a === "scss" ? a === "scss" : /(?:\w\s*:\s*[^:}]+|#){|@import[^\n]+(?:url|,)/.test(o); + } + n.exports = i; + } }), Nl = R({ "src/language-css/utils/is-scss-nested-property-node.js"(e, n) { + "use strict"; + A(); + function i(a) { + return a.selector ? a.selector.replace(/\/\*.*?\*\//, "").replace(/\/\/.*\n/, "").trim().endsWith(":") : false; + } + n.exports = i; + } }), jl = R({ "src/language-css/utils/is-scss-variable.js"(e, n) { + "use strict"; + A(); + function i(a) { + return Boolean((a == null ? void 0 : a.type) === "word" && a.value.startsWith("$")); + } + n.exports = i; + } }), Ml = R({ "src/language-css/utils/stringify-node.js"(e, n) { + "use strict"; + A(); + function i(a) { + var o, f, p; + if (a.groups) { + var h, g, c; + let y = ((h = a.open) === null || h === void 0 ? void 0 : h.value) || "", w = a.groups.map((_) => i(_)).join(((g = a.groups[0]) === null || g === void 0 ? void 0 : g.type) === "comma_group" ? "," : ""), d = ((c = a.close) === null || c === void 0 ? void 0 : c.value) || ""; + return y + w + d; + } + let t = ((o = a.raws) === null || o === void 0 ? void 0 : o.before) || "", r = ((f = a.raws) === null || f === void 0 ? void 0 : f.quote) || "", u = a.type === "atword" ? "@" : "", s = a.value || "", l = a.unit || "", m = a.group ? i(a.group) : "", v = ((p = a.raws) === null || p === void 0 ? void 0 : p.after) || ""; + return t + r + u + s + r + l + m + v; + } + n.exports = i; + } }), Dl = R({ "src/language-css/utils/is-module-rule-name.js"(e, n) { + "use strict"; + A(); + var i = /* @__PURE__ */ new Set(["import", "use", "forward"]); + function a(o) { + return i.has(o); + } + n.exports = a; + } }), we = R({ "node_modules/postcss-values-parser/lib/node.js"(e, n) { + "use strict"; + A(); + var i = function(a, o) { + let f = new a.constructor(); + for (let p in a) { + if (!a.hasOwnProperty(p)) + continue; + let h = a[p], g = typeof h; + p === "parent" && g === "object" ? o && (f[p] = o) : p === "source" ? f[p] = h : h instanceof Array ? f[p] = h.map((c) => i(c, f)) : p !== "before" && p !== "after" && p !== "between" && p !== "semicolon" && (g === "object" && h !== null && (h = i(h)), f[p] = h); + } + return f; + }; + n.exports = class { + constructor(o) { + o = o || {}, this.raws = { before: "", after: "" }; + for (let f in o) + this[f] = o[f]; + } + remove() { + return this.parent && this.parent.removeChild(this), this.parent = void 0, this; + } + toString() { + return [this.raws.before, String(this.value), this.raws.after].join(""); + } + clone(o) { + o = o || {}; + let f = i(this); + for (let p in o) + f[p] = o[p]; + return f; + } + cloneBefore(o) { + o = o || {}; + let f = this.clone(o); + return this.parent.insertBefore(this, f), f; + } + cloneAfter(o) { + o = o || {}; + let f = this.clone(o); + return this.parent.insertAfter(this, f), f; + } + replaceWith() { + let o = Array.prototype.slice.call(arguments); + if (this.parent) { + for (let f of o) + this.parent.insertBefore(this, f); + this.remove(); + } + return this; + } + moveTo(o) { + return this.cleanRaws(this.root() === o.root()), this.remove(), o.append(this), this; + } + moveBefore(o) { + return this.cleanRaws(this.root() === o.root()), this.remove(), o.parent.insertBefore(o, this), this; + } + moveAfter(o) { + return this.cleanRaws(this.root() === o.root()), this.remove(), o.parent.insertAfter(o, this), this; + } + next() { + let o = this.parent.index(this); + return this.parent.nodes[o + 1]; + } + prev() { + let o = this.parent.index(this); + return this.parent.nodes[o - 1]; + } + toJSON() { + let o = {}; + for (let f in this) { + if (!this.hasOwnProperty(f) || f === "parent") + continue; + let p = this[f]; + p instanceof Array ? o[f] = p.map((h) => typeof h == "object" && h.toJSON ? h.toJSON() : h) : typeof p == "object" && p.toJSON ? o[f] = p.toJSON() : o[f] = p; + } + return o; + } + root() { + let o = this; + for (; o.parent; ) + o = o.parent; + return o; + } + cleanRaws(o) { + delete this.raws.before, delete this.raws.after, o || delete this.raws.between; + } + positionInside(o) { + let f = this.toString(), p = this.source.start.column, h = this.source.start.line; + for (let g = 0; g < o; g++) + f[g] === ` +` ? (p = 1, h += 1) : p += 1; + return { line: h, column: p }; + } + positionBy(o) { + let f = this.source.start; + if (Object(o).index) + f = this.positionInside(o.index); + else if (Object(o).word) { + let p = this.toString().indexOf(o.word); + p !== -1 && (f = this.positionInside(p)); + } + return f; + } + }; + } }), ue = R({ "node_modules/postcss-values-parser/lib/container.js"(e, n) { + "use strict"; + A(); + var i = we(), a = class extends i { + constructor(o) { + super(o), this.nodes || (this.nodes = []); + } + push(o) { + return o.parent = this, this.nodes.push(o), this; + } + each(o) { + this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1; + let f = this.lastEach, p, h; + if (this.indexes[f] = 0, !!this.nodes) { + for (; this.indexes[f] < this.nodes.length && (p = this.indexes[f], h = o(this.nodes[p], p), h !== false); ) + this.indexes[f] += 1; + return delete this.indexes[f], h; + } + } + walk(o) { + return this.each((f, p) => { + let h = o(f, p); + return h !== false && f.walk && (h = f.walk(o)), h; + }); + } + walkType(o, f) { + if (!o || !f) + throw new Error("Parameters {type} and {callback} are required."); + let p = typeof o == "function"; + return this.walk((h, g) => { + if (p && h instanceof o || !p && h.type === o) + return f.call(this, h, g); + }); + } + append(o) { + return o.parent = this, this.nodes.push(o), this; + } + prepend(o) { + return o.parent = this, this.nodes.unshift(o), this; + } + cleanRaws(o) { + if (super.cleanRaws(o), this.nodes) + for (let f of this.nodes) + f.cleanRaws(o); + } + insertAfter(o, f) { + let p = this.index(o), h; + this.nodes.splice(p + 1, 0, f); + for (let g in this.indexes) + h = this.indexes[g], p <= h && (this.indexes[g] = h + this.nodes.length); + return this; + } + insertBefore(o, f) { + let p = this.index(o), h; + this.nodes.splice(p, 0, f); + for (let g in this.indexes) + h = this.indexes[g], p <= h && (this.indexes[g] = h + this.nodes.length); + return this; + } + removeChild(o) { + o = this.index(o), this.nodes[o].parent = void 0, this.nodes.splice(o, 1); + let f; + for (let p in this.indexes) + f = this.indexes[p], f >= o && (this.indexes[p] = f - 1); + return this; + } + removeAll() { + for (let o of this.nodes) + o.parent = void 0; + return this.nodes = [], this; + } + every(o) { + return this.nodes.every(o); + } + some(o) { + return this.nodes.some(o); + } + index(o) { + return typeof o == "number" ? o : this.nodes.indexOf(o); + } + get first() { + if (!!this.nodes) + return this.nodes[0]; + } + get last() { + if (!!this.nodes) + return this.nodes[this.nodes.length - 1]; + } + toString() { + let o = this.nodes.map(String).join(""); + return this.value && (o = this.value + o), this.raws.before && (o = this.raws.before + o), this.raws.after && (o += this.raws.after), o; + } + }; + a.registerWalker = (o) => { + let f = "walk" + o.name; + f.lastIndexOf("s") !== f.length - 1 && (f += "s"), !a.prototype[f] && (a.prototype[f] = function(p) { + return this.walkType(o, p); + }); + }, n.exports = a; + } }), Ll = R({ "node_modules/postcss-values-parser/lib/root.js"(e, n) { + "use strict"; + A(); + var i = ue(); + n.exports = class extends i { + constructor(o) { + super(o), this.type = "root"; + } + }; + } }), Ks = R({ "node_modules/postcss-values-parser/lib/value.js"(e, n) { + "use strict"; + A(); + var i = ue(); + n.exports = class extends i { + constructor(o) { + super(o), this.type = "value", this.unbalanced = 0; + } + }; + } }), Qs = R({ "node_modules/postcss-values-parser/lib/atword.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = class extends i { + constructor(o) { + super(o), this.type = "atword"; + } + toString() { + let o = this.quoted ? this.raws.quote : ""; + return [this.raws.before, "@", String.prototype.toString.call(this.value), this.raws.after].join(""); + } + }; + i.registerWalker(a), n.exports = a; + } }), Ys = R({ "node_modules/postcss-values-parser/lib/colon.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "colon"; + } + }; + i.registerWalker(o), n.exports = o; + } }), Xs = R({ "node_modules/postcss-values-parser/lib/comma.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "comma"; + } + }; + i.registerWalker(o), n.exports = o; + } }), Zs = R({ "node_modules/postcss-values-parser/lib/comment.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "comment", this.inline = Object(f).inline || false; + } + toString() { + return [this.raws.before, this.inline ? "//" : "/*", String(this.value), this.inline ? "" : "*/", this.raws.after].join(""); + } + }; + i.registerWalker(o), n.exports = o; + } }), eo = R({ "node_modules/postcss-values-parser/lib/function.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = class extends i { + constructor(o) { + super(o), this.type = "func", this.unbalanced = -1; + } + }; + i.registerWalker(a), n.exports = a; + } }), ro = R({ "node_modules/postcss-values-parser/lib/number.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "number", this.unit = Object(f).unit || ""; + } + toString() { + return [this.raws.before, String(this.value), this.unit, this.raws.after].join(""); + } + }; + i.registerWalker(o), n.exports = o; + } }), to = R({ "node_modules/postcss-values-parser/lib/operator.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "operator"; + } + }; + i.registerWalker(o), n.exports = o; + } }), no = R({ "node_modules/postcss-values-parser/lib/paren.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "paren", this.parenType = ""; + } + }; + i.registerWalker(o), n.exports = o; + } }), io = R({ "node_modules/postcss-values-parser/lib/string.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "string"; + } + toString() { + let f = this.quoted ? this.raws.quote : ""; + return [this.raws.before, f, this.value + "", f, this.raws.after].join(""); + } + }; + i.registerWalker(o), n.exports = o; + } }), so = R({ "node_modules/postcss-values-parser/lib/word.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "word"; + } + }; + i.registerWalker(o), n.exports = o; + } }), oo = R({ "node_modules/postcss-values-parser/lib/unicode-range.js"(e, n) { + "use strict"; + A(); + var i = ue(), a = we(), o = class extends a { + constructor(f) { + super(f), this.type = "unicode-range"; + } + }; + i.registerWalker(o), n.exports = o; + } }); + function ao() { + throw new Error("setTimeout has not been defined"); + } + function uo() { + throw new Error("clearTimeout has not been defined"); + } + function co(e) { + if (be === setTimeout) + return setTimeout(e, 0); + if ((be === ao || !be) && setTimeout) + return be = setTimeout, setTimeout(e, 0); + try { + return be(e, 0); + } catch { + try { + return be.call(null, e, 0); + } catch { + return be.call(this, e, 0); + } + } + } + function zl(e) { + if (xe === clearTimeout) + return clearTimeout(e); + if ((xe === uo || !xe) && clearTimeout) + return xe = clearTimeout, clearTimeout(e); + try { + return xe(e); + } catch { + try { + return xe.call(null, e); + } catch { + return xe.call(this, e); + } + } + } + function Bl() { + !Ne || !Ce || (Ne = false, Ce.length ? me = Ce.concat(me) : $e = -1, me.length && lo()); + } + function lo() { + if (!Ne) { + var e = co(Bl); + Ne = true; + for (var n = me.length; n; ) { + for (Ce = me, me = []; ++$e < n; ) + Ce && Ce[$e].run(); + $e = -1, n = me.length; + } + Ce = null, Ne = false, zl(e); + } + } + function Fl(e) { + var n = new Array(arguments.length - 1); + if (arguments.length > 1) + for (var i = 1; i < arguments.length; i++) + n[i - 1] = arguments[i]; + me.push(new fo(e, n)), me.length === 1 && !Ne && co(lo); + } + function fo(e, n) { + this.fun = e, this.array = n; + } + function Ae() { + } + function Ul(e) { + throw new Error("process.binding is not supported"); + } + function Wl() { + return "/"; + } + function $l(e) { + throw new Error("process.chdir is not supported"); + } + function Vl() { + return 0; + } + function Gl(e) { + var n = po.call(Re) * 1e-3, i = Math.floor(n), a = Math.floor(n % 1 * 1e9); + return e && (i = i - e[0], a = a - e[1], a < 0 && (i--, a += 1e9)), [i, a]; + } + function Hl() { + var e = new Date(), n = e - ho; + return n / 1e3; + } + var be, xe, me, Ne, Ce, $e, vs, ms, gs, ys, ws, _s, bs, xs, ks, Ss, Os, Ts, Es, qs, As, Ps, Re, po, ho, Rs, Ve, Jl = Le({ "node-modules-polyfills:process"() { + A(), be = ao, xe = uo, typeof globalThis.setTimeout == "function" && (be = setTimeout), typeof globalThis.clearTimeout == "function" && (xe = clearTimeout), me = [], Ne = false, $e = -1, fo.prototype.run = function() { + this.fun.apply(null, this.array); + }, vs = "browser", ms = "browser", gs = true, ys = {}, ws = [], _s = "", bs = {}, xs = {}, ks = {}, Ss = Ae, Os = Ae, Ts = Ae, Es = Ae, qs = Ae, As = Ae, Ps = Ae, Re = globalThis.performance || {}, po = Re.now || Re.mozNow || Re.msNow || Re.oNow || Re.webkitNow || function() { + return new Date().getTime(); + }, ho = new Date(), Rs = { nextTick: Fl, title: vs, browser: gs, env: ys, argv: ws, version: _s, versions: bs, on: Ss, addListener: Os, once: Ts, off: Es, removeListener: qs, removeAllListeners: As, emit: Ps, binding: Ul, cwd: Wl, chdir: $l, umask: Vl, hrtime: Gl, platform: ms, release: xs, config: ks, uptime: Hl }, Ve = Rs; + } }), ut, Et, Kl = Le({ "node_modules/rollup-plugin-node-polyfills/polyfills/inherits.js"() { + A(), typeof Object.create == "function" ? ut = function(n, i) { + n.super_ = i, n.prototype = Object.create(i.prototype, { constructor: { value: n, enumerable: false, writable: true, configurable: true } }); + } : ut = function(n, i) { + n.super_ = i; + var a = function() { + }; + a.prototype = i.prototype, n.prototype = new a(), n.prototype.constructor = n; + }, Et = ut; + } }), vo = {}; + Ot(vo, { _extend: () => It, debuglog: () => mo, default: () => Oo, deprecate: () => qt, format: () => gr, inherits: () => Et, inspect: () => ye, isArray: () => At, isBoolean: () => yr, isBuffer: () => _o, isDate: () => vr, isError: () => He, isFunction: () => Je, isNull: () => Ke, isNullOrUndefined: () => go, isNumber: () => Pt, isObject: () => je, isPrimitive: () => wo, isRegExp: () => Ge, isString: () => Qe, isSymbol: () => yo, isUndefined: () => ge, log: () => bo }); + function gr(e) { + if (!Qe(e)) { + for (var n = [], i = 0; i < arguments.length; i++) + n.push(ye(arguments[i])); + return n.join(" "); + } + for (var i = 1, a = arguments, o = a.length, f = String(e).replace(ko, function(h) { + if (h === "%%") + return "%"; + if (i >= o) + return h; + switch (h) { + case "%s": + return String(a[i++]); + case "%d": + return Number(a[i++]); + case "%j": + try { + return JSON.stringify(a[i++]); + } catch { + return "[Circular]"; + } + default: + return h; + } + }), p = a[i]; i < o; p = a[++i]) + Ke(p) || !je(p) ? f += " " + p : f += " " + ye(p); + return f; + } + function qt(e, n) { + if (ge(globalThis.process)) + return function() { + return qt(e, n).apply(this, arguments); + }; + if (Ve.noDeprecation === true) + return e; + var i = false; + function a() { + if (!i) { + if (Ve.throwDeprecation) + throw new Error(n); + Ve.traceDeprecation ? console.trace(n) : console.error(n), i = true; + } + return e.apply(this, arguments); + } + return a; + } + function mo(e) { + if (ge(ft) && (ft = Ve.env.NODE_DEBUG || ""), e = e.toUpperCase(), !We[e]) + if (new RegExp("\\b" + e + "\\b", "i").test(ft)) { + var n = 0; + We[e] = function() { + var i = gr.apply(null, arguments); + console.error("%s %d: %s", e, n, i); + }; + } else + We[e] = function() { + }; + return We[e]; + } + function ye(e, n) { + var i = { seen: [], stylize: Yl }; + return arguments.length >= 3 && (i.depth = arguments[2]), arguments.length >= 4 && (i.colors = arguments[3]), yr(n) ? i.showHidden = n : n && It(i, n), ge(i.showHidden) && (i.showHidden = false), ge(i.depth) && (i.depth = 2), ge(i.colors) && (i.colors = false), ge(i.customInspect) && (i.customInspect = true), i.colors && (i.stylize = Ql), dr(i, e, i.depth); + } + function Ql(e, n) { + var i = ye.styles[n]; + return i ? "\x1B[" + ye.colors[i][0] + "m" + e + "\x1B[" + ye.colors[i][1] + "m" : e; + } + function Yl(e, n) { + return e; + } + function Xl(e) { + var n = {}; + return e.forEach(function(i, a) { + n[i] = true; + }), n; + } + function dr(e, n, i) { + if (e.customInspect && n && Je(n.inspect) && n.inspect !== ye && !(n.constructor && n.constructor.prototype === n)) { + var a = n.inspect(i, e); + return Qe(a) || (a = dr(e, a, i)), a; + } + var o = Zl(e, n); + if (o) + return o; + var f = Object.keys(n), p = Xl(f); + if (e.showHidden && (f = Object.getOwnPropertyNames(n)), He(n) && (f.indexOf("message") >= 0 || f.indexOf("description") >= 0)) + return ct(n); + if (f.length === 0) { + if (Je(n)) { + var h = n.name ? ": " + n.name : ""; + return e.stylize("[Function" + h + "]", "special"); + } + if (Ge(n)) + return e.stylize(RegExp.prototype.toString.call(n), "regexp"); + if (vr(n)) + return e.stylize(Date.prototype.toString.call(n), "date"); + if (He(n)) + return ct(n); + } + var g = "", c = false, t = ["{", "}"]; + if (At(n) && (c = true, t = ["[", "]"]), Je(n)) { + var r = n.name ? ": " + n.name : ""; + g = " [Function" + r + "]"; + } + if (Ge(n) && (g = " " + RegExp.prototype.toString.call(n)), vr(n) && (g = " " + Date.prototype.toUTCString.call(n)), He(n) && (g = " " + ct(n)), f.length === 0 && (!c || n.length == 0)) + return t[0] + g + t[1]; + if (i < 0) + return Ge(n) ? e.stylize(RegExp.prototype.toString.call(n), "regexp") : e.stylize("[Object]", "special"); + e.seen.push(n); + var u; + return c ? u = ef(e, n, i, p, f) : u = f.map(function(s) { + return yt(e, n, i, p, s, c); + }), e.seen.pop(), rf(u, g, t); + } + function Zl(e, n) { + if (ge(n)) + return e.stylize("undefined", "undefined"); + if (Qe(n)) { + var i = "'" + JSON.stringify(n).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; + return e.stylize(i, "string"); + } + if (Pt(n)) + return e.stylize("" + n, "number"); + if (yr(n)) + return e.stylize("" + n, "boolean"); + if (Ke(n)) + return e.stylize("null", "null"); + } + function ct(e) { + return "[" + Error.prototype.toString.call(e) + "]"; + } + function ef(e, n, i, a, o) { + for (var f = [], p = 0, h = n.length; p < h; ++p) + xo(n, String(p)) ? f.push(yt(e, n, i, a, String(p), true)) : f.push(""); + return o.forEach(function(g) { + g.match(/^\d+$/) || f.push(yt(e, n, i, a, g, true)); + }), f; + } + function yt(e, n, i, a, o, f) { + var p, h, g; + if (g = Object.getOwnPropertyDescriptor(n, o) || { value: n[o] }, g.get ? g.set ? h = e.stylize("[Getter/Setter]", "special") : h = e.stylize("[Getter]", "special") : g.set && (h = e.stylize("[Setter]", "special")), xo(a, o) || (p = "[" + o + "]"), h || (e.seen.indexOf(g.value) < 0 ? (Ke(i) ? h = dr(e, g.value, null) : h = dr(e, g.value, i - 1), h.indexOf(` +`) > -1 && (f ? h = h.split(` +`).map(function(c) { + return " " + c; + }).join(` +`).substr(2) : h = ` +` + h.split(` +`).map(function(c) { + return " " + c; + }).join(` +`))) : h = e.stylize("[Circular]", "special")), ge(p)) { + if (f && o.match(/^\d+$/)) + return h; + p = JSON.stringify("" + o), p.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (p = p.substr(1, p.length - 2), p = e.stylize(p, "name")) : (p = p.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), p = e.stylize(p, "string")); + } + return p + ": " + h; + } + function rf(e, n, i) { + var a = 0, o = e.reduce(function(f, p) { + return a++, p.indexOf(` +`) >= 0 && a++, f + p.replace(/\u001b\[\d\d?m/g, "").length + 1; + }, 0); + return o > 60 ? i[0] + (n === "" ? "" : n + ` + `) + " " + e.join(`, + `) + " " + i[1] : i[0] + n + " " + e.join(", ") + " " + i[1]; + } + function At(e) { + return Array.isArray(e); + } + function yr(e) { + return typeof e == "boolean"; + } + function Ke(e) { + return e === null; + } + function go(e) { + return e == null; + } + function Pt(e) { + return typeof e == "number"; + } + function Qe(e) { + return typeof e == "string"; + } + function yo(e) { + return typeof e == "symbol"; + } + function ge(e) { + return e === void 0; + } + function Ge(e) { + return je(e) && Rt(e) === "[object RegExp]"; + } + function je(e) { + return typeof e == "object" && e !== null; + } + function vr(e) { + return je(e) && Rt(e) === "[object Date]"; + } + function He(e) { + return je(e) && (Rt(e) === "[object Error]" || e instanceof Error); + } + function Je(e) { + return typeof e == "function"; + } + function wo(e) { + return e === null || typeof e == "boolean" || typeof e == "number" || typeof e == "string" || typeof e == "symbol" || typeof e > "u"; + } + function _o(e) { + return Buffer.isBuffer(e); + } + function Rt(e) { + return Object.prototype.toString.call(e); + } + function lt(e) { + return e < 10 ? "0" + e.toString(10) : e.toString(10); + } + function tf() { + var e = new Date(), n = [lt(e.getHours()), lt(e.getMinutes()), lt(e.getSeconds())].join(":"); + return [e.getDate(), So[e.getMonth()], n].join(" "); + } + function bo() { + console.log("%s - %s", tf(), gr.apply(null, arguments)); + } + function It(e, n) { + if (!n || !je(n)) + return e; + for (var i = Object.keys(n), a = i.length; a--; ) + e[i[a]] = n[i[a]]; + return e; + } + function xo(e, n) { + return Object.prototype.hasOwnProperty.call(e, n); + } + var ko, We, ft, So, Oo, nf = Le({ "node-modules-polyfills:util"() { + A(), Jl(), Kl(), ko = /%[sdj%]/g, We = {}, ye.colors = { bold: [1, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], white: [37, 39], grey: [90, 39], black: [30, 39], blue: [34, 39], cyan: [36, 39], green: [32, 39], magenta: [35, 39], red: [31, 39], yellow: [33, 39] }, ye.styles = { special: "cyan", number: "yellow", boolean: "yellow", undefined: "grey", null: "bold", string: "green", date: "magenta", regexp: "red" }, So = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], Oo = { inherits: Et, _extend: It, log: bo, isBuffer: _o, isPrimitive: wo, isFunction: Je, isError: He, isDate: vr, isObject: je, isRegExp: Ge, isUndefined: ge, isSymbol: yo, isString: Qe, isNumber: Pt, isNullOrUndefined: go, isNull: Ke, isBoolean: yr, isArray: At, inspect: ye, deprecate: qt, format: gr, debuglog: mo }; + } }), sf = R({ "node-modules-polyfills-commonjs:util"(e, n) { + A(); + var i = (nf(), Tt(vo)); + if (i && i.default) { + n.exports = i.default; + for (let a in i) + n.exports[a] = i[a]; + } else + i && (n.exports = i); + } }), of = R({ "node_modules/postcss-values-parser/lib/errors/TokenizeError.js"(e, n) { + "use strict"; + A(); + var i = class extends Error { + constructor(a) { + super(a), this.name = this.constructor.name, this.message = a || "An error ocurred while tokzenizing.", typeof Error.captureStackTrace == "function" ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error(a).stack; + } + }; + n.exports = i; + } }), af = R({ "node_modules/postcss-values-parser/lib/tokenize.js"(e, n) { + "use strict"; + A(); + var i = "{".charCodeAt(0), a = "}".charCodeAt(0), o = "(".charCodeAt(0), f = ")".charCodeAt(0), p = "'".charCodeAt(0), h = '"'.charCodeAt(0), g = "\\".charCodeAt(0), c = "/".charCodeAt(0), t = ".".charCodeAt(0), r = ",".charCodeAt(0), u = ":".charCodeAt(0), s = "*".charCodeAt(0), l = "-".charCodeAt(0), m = "+".charCodeAt(0), v = "#".charCodeAt(0), y = ` +`.charCodeAt(0), w = " ".charCodeAt(0), d = "\f".charCodeAt(0), _ = " ".charCodeAt(0), S = "\r".charCodeAt(0), x = "@".charCodeAt(0), N = "e".charCodeAt(0), P = "E".charCodeAt(0), W = "0".charCodeAt(0), U = "9".charCodeAt(0), H = "u".charCodeAt(0), D = "U".charCodeAt(0), $ = /[ \n\t\r\{\(\)'"\\;,/]/g, B = /[ \n\t\r\(\)\{\}\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g, O = /[ \n\t\r\(\)\{\}\*:;@!&'"\-\+\|~>,\[\]\\]|\//g, j = /^[a-z0-9]/i, C = /^[a-f0-9?\-]/i, I = sf(), X = of(); + n.exports = function(Q, K) { + K = K || {}; + let J = [], M = Q.valueOf(), Y = M.length, G = -1, E = 1, k = 0, b = 0, L = null, q, T, F, z, re, ne, ce, fe, te, ie, ae, se; + function le(Ze) { + let _e = I.format("Unclosed %s at line: %d, column: %d, token: %d", Ze, E, k - G, k); + throw new X(_e); + } + function pe() { + let Ze = I.format("Syntax error at line: %d, column: %d, token: %d", E, k - G, k); + throw new X(Ze); + } + for (; k < Y; ) { + switch (q = M.charCodeAt(k), q === y && (G = k, E += 1), q) { + case y: + case w: + case _: + case S: + case d: + T = k; + do + T += 1, q = M.charCodeAt(T), q === y && (G = T, E += 1); + while (q === w || q === y || q === _ || q === S || q === d); + J.push(["space", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + break; + case u: + T = k + 1, J.push(["colon", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + break; + case r: + T = k + 1, J.push(["comma", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + break; + case i: + J.push(["{", "{", E, k - G, E, T - G, k]); + break; + case a: + J.push(["}", "}", E, k - G, E, T - G, k]); + break; + case o: + b++, L = !L && b === 1 && J.length > 0 && J[J.length - 1][0] === "word" && J[J.length - 1][1] === "url", J.push(["(", "(", E, k - G, E, T - G, k]); + break; + case f: + b--, L = L && b > 0, J.push([")", ")", E, k - G, E, T - G, k]); + break; + case p: + case h: + F = q === p ? "'" : '"', T = k; + do + for (ie = false, T = M.indexOf(F, T + 1), T === -1 && le("quote", F), ae = T; M.charCodeAt(ae - 1) === g; ) + ae -= 1, ie = !ie; + while (ie); + J.push(["string", M.slice(k, T + 1), E, k - G, E, T - G, k]), k = T; + break; + case x: + $.lastIndex = k + 1, $.test(M), $.lastIndex === 0 ? T = M.length - 1 : T = $.lastIndex - 2, J.push(["atword", M.slice(k, T + 1), E, k - G, E, T - G, k]), k = T; + break; + case g: + T = k, q = M.charCodeAt(T + 1), ce && q !== c && q !== w && q !== y && q !== _ && q !== S && q !== d && (T += 1), J.push(["word", M.slice(k, T + 1), E, k - G, E, T - G, k]), k = T; + break; + case m: + case l: + case s: + T = k + 1, se = M.slice(k + 1, T + 1); + let Ze = M.slice(k - 1, k); + if (q === l && se.charCodeAt(0) === l) { + T++, J.push(["word", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + break; + } + J.push(["operator", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + break; + default: + if (q === c && (M.charCodeAt(k + 1) === s || K.loose && !L && M.charCodeAt(k + 1) === c)) { + if (M.charCodeAt(k + 1) === s) + T = M.indexOf("*/", k + 2) + 1, T === 0 && le("comment", "*/"); + else { + let Be = M.indexOf(` +`, k + 2); + T = Be !== -1 ? Be - 1 : Y; + } + ne = M.slice(k, T + 1), z = ne.split(` +`), re = z.length - 1, re > 0 ? (fe = E + re, te = T - z[re].length) : (fe = E, te = G), J.push(["comment", ne, E, k - G, fe, T - te, k]), G = te, E = fe, k = T; + } else if (q === v && !j.test(M.slice(k + 1, k + 2))) + T = k + 1, J.push(["#", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + else if ((q === H || q === D) && M.charCodeAt(k + 1) === m) { + T = k + 2; + do + T += 1, q = M.charCodeAt(T); + while (T < Y && C.test(M.slice(T, T + 1))); + J.push(["unicoderange", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + } else if (q === c) + T = k + 1, J.push(["operator", M.slice(k, T), E, k - G, E, T - G, k]), k = T - 1; + else { + let _e = B; + if (q >= W && q <= U && (_e = O), _e.lastIndex = k + 1, _e.test(M), _e.lastIndex === 0 ? T = M.length - 1 : T = _e.lastIndex - 2, _e === O || q === t) { + let Be = M.charCodeAt(T), Bt = M.charCodeAt(T + 1), Ft = M.charCodeAt(T + 2); + (Be === N || Be === P) && (Bt === l || Bt === m) && Ft >= W && Ft <= U && (O.lastIndex = T + 2, O.test(M), O.lastIndex === 0 ? T = M.length - 1 : T = O.lastIndex - 2); + } + J.push(["word", M.slice(k, T + 1), E, k - G, E, T - G, k]), k = T; + } + break; + } + k++; + } + return J; + }; + } }), To = R({ "node_modules/flatten/index.js"(e, n) { + A(), n.exports = function(a, o) { + if (o = typeof o == "number" ? o : 1 / 0, !o) + return Array.isArray(a) ? a.map(function(p) { + return p; + }) : a; + return f(a, 1); + function f(p, h) { + return p.reduce(function(g, c) { + return Array.isArray(c) && h < o ? g.concat(f(c, h + 1)) : g.concat(c); + }, []); + } + }; + } }), Eo = R({ "node_modules/indexes-of/index.js"(e, n) { + A(), n.exports = function(i, a) { + for (var o = -1, f = []; (o = i.indexOf(a, o + 1)) !== -1; ) + f.push(o); + return f; + }; + } }), qo = R({ "node_modules/uniq/uniq.js"(e, n) { + "use strict"; + A(); + function i(f, p) { + for (var h = 1, g = f.length, c = f[0], t = f[0], r = 1; r < g; ++r) + if (t = c, c = f[r], p(c, t)) { + if (r === h) { + h++; + continue; + } + f[h++] = c; + } + return f.length = h, f; + } + function a(f) { + for (var p = 1, h = f.length, g = f[0], c = f[0], t = 1; t < h; ++t, c = g) + if (c = g, g = f[t], g !== c) { + if (t === p) { + p++; + continue; + } + f[p++] = g; + } + return f.length = p, f; + } + function o(f, p, h) { + return f.length === 0 ? f : p ? (h || f.sort(p), i(f, p)) : (h || f.sort(), a(f)); + } + n.exports = o; + } }), uf = R({ "node_modules/postcss-values-parser/lib/errors/ParserError.js"(e, n) { + "use strict"; + A(); + var i = class extends Error { + constructor(a) { + super(a), this.name = this.constructor.name, this.message = a || "An error ocurred while parsing.", typeof Error.captureStackTrace == "function" ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error(a).stack; + } + }; + n.exports = i; + } }), cf = R({ "node_modules/postcss-values-parser/lib/parser.js"(e, n) { + "use strict"; + A(); + var i = Ll(), a = Ks(), o = Qs(), f = Ys(), p = Xs(), h = Zs(), g = eo(), c = ro(), t = to(), r = no(), u = io(), s = so(), l = oo(), m = af(), v = To(), y = Eo(), w = qo(), d = uf(); + function _(S) { + return S.sort((x, N) => x - N); + } + n.exports = class { + constructor(x, N) { + let P = { loose: false }; + this.cache = [], this.input = x, this.options = Object.assign({}, P, N), this.position = 0, this.unbalanced = 0, this.root = new i(); + let W = new a(); + this.root.append(W), this.current = W, this.tokens = m(x, this.options); + } + parse() { + return this.loop(); + } + colon() { + let x = this.currToken; + this.newNode(new f({ value: x[1], source: { start: { line: x[2], column: x[3] }, end: { line: x[4], column: x[5] } }, sourceIndex: x[6] })), this.position++; + } + comma() { + let x = this.currToken; + this.newNode(new p({ value: x[1], source: { start: { line: x[2], column: x[3] }, end: { line: x[4], column: x[5] } }, sourceIndex: x[6] })), this.position++; + } + comment() { + let x = false, N = this.currToken[1].replace(/\/\*|\*\//g, ""), P; + this.options.loose && N.startsWith("//") && (N = N.substring(2), x = true), P = new h({ value: N, inline: x, source: { start: { line: this.currToken[2], column: this.currToken[3] }, end: { line: this.currToken[4], column: this.currToken[5] } }, sourceIndex: this.currToken[6] }), this.newNode(P), this.position++; + } + error(x, N) { + throw new d(x + " at line: ".concat(N[2], ", column ").concat(N[3])); + } + loop() { + for (; this.position < this.tokens.length; ) + this.parseTokens(); + return !this.current.last && this.spaces ? this.current.raws.before += this.spaces : this.spaces && (this.current.last.raws.after += this.spaces), this.spaces = "", this.root; + } + operator() { + let x = this.currToken[1], N; + if (x === "+" || x === "-") { + if (this.options.loose || this.position > 0 && (this.current.type === "func" && this.current.value === "calc" ? this.prevToken[0] !== "space" && this.prevToken[0] !== "(" ? this.error("Syntax Error", this.currToken) : this.nextToken[0] !== "space" && this.nextToken[0] !== "word" ? this.error("Syntax Error", this.currToken) : this.nextToken[0] === "word" && this.current.last.type !== "operator" && this.current.last.value !== "(" && this.error("Syntax Error", this.currToken) : (this.nextToken[0] === "space" || this.nextToken[0] === "operator" || this.prevToken[0] === "operator") && this.error("Syntax Error", this.currToken)), this.options.loose) { + if ((!this.current.nodes.length || this.current.last && this.current.last.type === "operator") && this.nextToken[0] === "word") + return this.word(); + } else if (this.nextToken[0] === "word") + return this.word(); + } + return N = new t({ value: this.currToken[1], source: { start: { line: this.currToken[2], column: this.currToken[3] }, end: { line: this.currToken[2], column: this.currToken[3] } }, sourceIndex: this.currToken[4] }), this.position++, this.newNode(N); + } + parseTokens() { + switch (this.currToken[0]) { + case "space": + this.space(); + break; + case "colon": + this.colon(); + break; + case "comma": + this.comma(); + break; + case "comment": + this.comment(); + break; + case "(": + this.parenOpen(); + break; + case ")": + this.parenClose(); + break; + case "atword": + case "word": + this.word(); + break; + case "operator": + this.operator(); + break; + case "string": + this.string(); + break; + case "unicoderange": + this.unicodeRange(); + break; + default: + this.word(); + break; + } + } + parenOpen() { + let x = 1, N = this.position + 1, P = this.currToken, W; + for (; N < this.tokens.length && x; ) { + let U = this.tokens[N]; + U[0] === "(" && x++, U[0] === ")" && x--, N++; + } + if (x && this.error("Expected closing parenthesis", P), W = this.current.last, W && W.type === "func" && W.unbalanced < 0 && (W.unbalanced = 0, this.current = W), this.current.unbalanced++, this.newNode(new r({ value: P[1], source: { start: { line: P[2], column: P[3] }, end: { line: P[4], column: P[5] } }, sourceIndex: P[6] })), this.position++, this.current.type === "func" && this.current.unbalanced && this.current.value === "url" && this.currToken[0] !== "string" && this.currToken[0] !== ")" && !this.options.loose) { + let U = this.nextToken, H = this.currToken[1], D = { line: this.currToken[2], column: this.currToken[3] }; + for (; U && U[0] !== ")" && this.current.unbalanced; ) + this.position++, H += this.currToken[1], U = this.nextToken; + this.position !== this.tokens.length - 1 && (this.position++, this.newNode(new s({ value: H, source: { start: D, end: { line: this.currToken[4], column: this.currToken[5] } }, sourceIndex: this.currToken[6] }))); + } + } + parenClose() { + let x = this.currToken; + this.newNode(new r({ value: x[1], source: { start: { line: x[2], column: x[3] }, end: { line: x[4], column: x[5] } }, sourceIndex: x[6] })), this.position++, !(this.position >= this.tokens.length - 1 && !this.current.unbalanced) && (this.current.unbalanced--, this.current.unbalanced < 0 && this.error("Expected opening parenthesis", x), !this.current.unbalanced && this.cache.length && (this.current = this.cache.pop())); + } + space() { + let x = this.currToken; + this.position === this.tokens.length - 1 || this.nextToken[0] === "," || this.nextToken[0] === ")" ? (this.current.last.raws.after += x[1], this.position++) : (this.spaces = x[1], this.position++); + } + unicodeRange() { + let x = this.currToken; + this.newNode(new l({ value: x[1], source: { start: { line: x[2], column: x[3] }, end: { line: x[4], column: x[5] } }, sourceIndex: x[6] })), this.position++; + } + splitWord() { + let x = this.nextToken, N = this.currToken[1], P = /^[\+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][\+\-]?\d+)?/, W = /^(?!\#([a-z0-9]+))[\#\{\}]/gi, U, H; + if (!W.test(N)) + for (; x && x[0] === "word"; ) + this.position++, N += this.currToken[1], x = this.nextToken; + U = y(N, "@"), H = _(w(v([[0], U]))), H.forEach((D, $) => { + let B = H[$ + 1] || N.length, O = N.slice(D, B), j; + if (~U.indexOf(D)) + j = new o({ value: O.slice(1), source: { start: { line: this.currToken[2], column: this.currToken[3] + D }, end: { line: this.currToken[4], column: this.currToken[3] + (B - 1) } }, sourceIndex: this.currToken[6] + H[$] }); + else if (P.test(this.currToken[1])) { + let C = O.replace(P, ""); + j = new c({ value: O.replace(C, ""), source: { start: { line: this.currToken[2], column: this.currToken[3] + D }, end: { line: this.currToken[4], column: this.currToken[3] + (B - 1) } }, sourceIndex: this.currToken[6] + H[$], unit: C }); + } else + j = new (x && x[0] === "(" ? g : s)({ value: O, source: { start: { line: this.currToken[2], column: this.currToken[3] + D }, end: { line: this.currToken[4], column: this.currToken[3] + (B - 1) } }, sourceIndex: this.currToken[6] + H[$] }), j.type === "word" ? (j.isHex = /^#(.+)/.test(O), j.isColor = /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(O)) : this.cache.push(this.current); + this.newNode(j); + }), this.position++; + } + string() { + let x = this.currToken, N = this.currToken[1], P = /^(\"|\')/, W = P.test(N), U = "", H; + W && (U = N.match(P)[0], N = N.slice(1, N.length - 1)), H = new u({ value: N, source: { start: { line: x[2], column: x[3] }, end: { line: x[4], column: x[5] } }, sourceIndex: x[6], quoted: W }), H.raws.quote = U, this.newNode(H), this.position++; + } + word() { + return this.splitWord(); + } + newNode(x) { + return this.spaces && (x.raws.before += this.spaces, this.spaces = ""), this.current.append(x); + } + get currToken() { + return this.tokens[this.position]; + } + get nextToken() { + return this.tokens[this.position + 1]; + } + get prevToken() { + return this.tokens[this.position - 1]; + } + }; + } }), lf = R({ "node_modules/postcss-values-parser/lib/index.js"(e, n) { + "use strict"; + A(); + var i = cf(), a = Qs(), o = Ys(), f = Xs(), p = Zs(), h = eo(), g = ro(), c = to(), t = no(), r = io(), u = oo(), s = Ks(), l = so(), m = function(v, y) { + return new i(v, y); + }; + m.atword = function(v) { + return new a(v); + }, m.colon = function(v) { + return new o(Object.assign({ value: ":" }, v)); + }, m.comma = function(v) { + return new f(Object.assign({ value: "," }, v)); + }, m.comment = function(v) { + return new p(v); + }, m.func = function(v) { + return new h(v); + }, m.number = function(v) { + return new g(v); + }, m.operator = function(v) { + return new c(v); + }, m.paren = function(v) { + return new t(Object.assign({ value: "(" }, v)); + }, m.string = function(v) { + return new r(Object.assign({ quote: "'" }, v)); + }, m.value = function(v) { + return new s(v); + }, m.word = function(v) { + return new l(v); + }, m.unicodeRange = function(v) { + return new u(v); + }, n.exports = m; + } }), ze = R({ "node_modules/postcss-selector-parser/dist/selectors/node.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(p) { + return typeof p; + } : function(p) { + return p && typeof Symbol == "function" && p.constructor === Symbol && p !== Symbol.prototype ? "symbol" : typeof p; + }; + function a(p, h) { + if (!(p instanceof h)) + throw new TypeError("Cannot call a class as a function"); + } + var o = function p(h, g) { + if ((typeof h > "u" ? "undefined" : i(h)) !== "object") + return h; + var c = new h.constructor(); + for (var t in h) + if (!!h.hasOwnProperty(t)) { + var r = h[t], u = typeof r > "u" ? "undefined" : i(r); + t === "parent" && u === "object" ? g && (c[t] = g) : r instanceof Array ? c[t] = r.map(function(s) { + return p(s, c); + }) : c[t] = p(r, c); + } + return c; + }, f = function() { + function p() { + var h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + a(this, p); + for (var g in h) + this[g] = h[g]; + var c = h.spaces; + c = c === void 0 ? {} : c; + var t = c.before, r = t === void 0 ? "" : t, u = c.after, s = u === void 0 ? "" : u; + this.spaces = { before: r, after: s }; + } + return p.prototype.remove = function() { + return this.parent && this.parent.removeChild(this), this.parent = void 0, this; + }, p.prototype.replaceWith = function() { + if (this.parent) { + for (var g in arguments) + this.parent.insertBefore(this, arguments[g]); + this.remove(); + } + return this; + }, p.prototype.next = function() { + return this.parent.at(this.parent.index(this) + 1); + }, p.prototype.prev = function() { + return this.parent.at(this.parent.index(this) - 1); + }, p.prototype.clone = function() { + var g = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = o(this); + for (var t in g) + c[t] = g[t]; + return c; + }, p.prototype.toString = function() { + return [this.spaces.before, String(this.value), this.spaces.after].join(""); + }, p; + }(); + e.default = f, n.exports = e.default; + } }), oe = R({ "node_modules/postcss-selector-parser/dist/selectors/types.js"(e) { + "use strict"; + A(), e.__esModule = true; + var n = e.TAG = "tag", i = e.STRING = "string", a = e.SELECTOR = "selector", o = e.ROOT = "root", f = e.PSEUDO = "pseudo", p = e.NESTING = "nesting", h = e.ID = "id", g = e.COMMENT = "comment", c = e.COMBINATOR = "combinator", t = e.CLASS = "class", r = e.ATTRIBUTE = "attribute", u = e.UNIVERSAL = "universal"; + } }), Ct = R({ "node_modules/postcss-selector-parser/dist/selectors/container.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = function() { + function s(l, m) { + for (var v = 0; v < m.length; v++) { + var y = m[v]; + y.enumerable = y.enumerable || false, y.configurable = true, "value" in y && (y.writable = true), Object.defineProperty(l, y.key, y); + } + } + return function(l, m, v) { + return m && s(l.prototype, m), v && s(l, v), l; + }; + }(), a = ze(), o = g(a), f = oe(), p = h(f); + function h(s) { + if (s && s.__esModule) + return s; + var l = {}; + if (s != null) + for (var m in s) + Object.prototype.hasOwnProperty.call(s, m) && (l[m] = s[m]); + return l.default = s, l; + } + function g(s) { + return s && s.__esModule ? s : { default: s }; + } + function c(s, l) { + if (!(s instanceof l)) + throw new TypeError("Cannot call a class as a function"); + } + function t(s, l) { + if (!s) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return l && (typeof l == "object" || typeof l == "function") ? l : s; + } + function r(s, l) { + if (typeof l != "function" && l !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof l); + s.prototype = Object.create(l && l.prototype, { constructor: { value: s, enumerable: false, writable: true, configurable: true } }), l && (Object.setPrototypeOf ? Object.setPrototypeOf(s, l) : s.__proto__ = l); + } + var u = function(s) { + r(l, s); + function l(m) { + c(this, l); + var v = t(this, s.call(this, m)); + return v.nodes || (v.nodes = []), v; + } + return l.prototype.append = function(v) { + return v.parent = this, this.nodes.push(v), this; + }, l.prototype.prepend = function(v) { + return v.parent = this, this.nodes.unshift(v), this; + }, l.prototype.at = function(v) { + return this.nodes[v]; + }, l.prototype.index = function(v) { + return typeof v == "number" ? v : this.nodes.indexOf(v); + }, l.prototype.removeChild = function(v) { + v = this.index(v), this.at(v).parent = void 0, this.nodes.splice(v, 1); + var y = void 0; + for (var w in this.indexes) + y = this.indexes[w], y >= v && (this.indexes[w] = y - 1); + return this; + }, l.prototype.removeAll = function() { + for (var w = this.nodes, v = Array.isArray(w), y = 0, w = v ? w : w[Symbol.iterator](); ; ) { + var d; + if (v) { + if (y >= w.length) + break; + d = w[y++]; + } else { + if (y = w.next(), y.done) + break; + d = y.value; + } + var _ = d; + _.parent = void 0; + } + return this.nodes = [], this; + }, l.prototype.empty = function() { + return this.removeAll(); + }, l.prototype.insertAfter = function(v, y) { + var w = this.index(v); + this.nodes.splice(w + 1, 0, y); + var d = void 0; + for (var _ in this.indexes) + d = this.indexes[_], w <= d && (this.indexes[_] = d + this.nodes.length); + return this; + }, l.prototype.insertBefore = function(v, y) { + var w = this.index(v); + this.nodes.splice(w, 0, y); + var d = void 0; + for (var _ in this.indexes) + d = this.indexes[_], w <= d && (this.indexes[_] = d + this.nodes.length); + return this; + }, l.prototype.each = function(v) { + this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach++; + var y = this.lastEach; + if (this.indexes[y] = 0, !!this.length) { + for (var w = void 0, d = void 0; this.indexes[y] < this.length && (w = this.indexes[y], d = v(this.at(w), w), d !== false); ) + this.indexes[y] += 1; + if (delete this.indexes[y], d === false) + return false; + } + }, l.prototype.walk = function(v) { + return this.each(function(y, w) { + var d = v(y, w); + if (d !== false && y.length && (d = y.walk(v)), d === false) + return false; + }); + }, l.prototype.walkAttributes = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.ATTRIBUTE) + return v.call(y, w); + }); + }, l.prototype.walkClasses = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.CLASS) + return v.call(y, w); + }); + }, l.prototype.walkCombinators = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.COMBINATOR) + return v.call(y, w); + }); + }, l.prototype.walkComments = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.COMMENT) + return v.call(y, w); + }); + }, l.prototype.walkIds = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.ID) + return v.call(y, w); + }); + }, l.prototype.walkNesting = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.NESTING) + return v.call(y, w); + }); + }, l.prototype.walkPseudos = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.PSEUDO) + return v.call(y, w); + }); + }, l.prototype.walkTags = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.TAG) + return v.call(y, w); + }); + }, l.prototype.walkUniversals = function(v) { + var y = this; + return this.walk(function(w) { + if (w.type === p.UNIVERSAL) + return v.call(y, w); + }); + }, l.prototype.split = function(v) { + var y = this, w = []; + return this.reduce(function(d, _, S) { + var x = v.call(y, _); + return w.push(_), x ? (d.push(w), w = []) : S === y.length - 1 && d.push(w), d; + }, []); + }, l.prototype.map = function(v) { + return this.nodes.map(v); + }, l.prototype.reduce = function(v, y) { + return this.nodes.reduce(v, y); + }, l.prototype.every = function(v) { + return this.nodes.every(v); + }, l.prototype.some = function(v) { + return this.nodes.some(v); + }, l.prototype.filter = function(v) { + return this.nodes.filter(v); + }, l.prototype.sort = function(v) { + return this.nodes.sort(v); + }, l.prototype.toString = function() { + return this.map(String).join(""); + }, i(l, [{ key: "first", get: function() { + return this.at(0); + } }, { key: "last", get: function() { + return this.at(this.length - 1); + } }, { key: "length", get: function() { + return this.nodes.length; + } }]), l; + }(o.default); + e.default = u, n.exports = e.default; + } }), Ao = R({ "node_modules/postcss-selector-parser/dist/selectors/root.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ct(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.ROOT, s; + } + return r.prototype.toString = function() { + var s = this.reduce(function(l, m) { + var v = String(m); + return v ? l + v + "," : ""; + }, "").slice(0, -1); + return this.trailingComma ? s + "," : s; + }, r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Po = R({ "node_modules/postcss-selector-parser/dist/selectors/selector.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ct(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.SELECTOR, s; + } + return r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Ye = R({ "node_modules/postcss-selector-parser/dist/selectors/namespace.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = function() { + function t(r, u) { + for (var s = 0; s < u.length; s++) { + var l = u[s]; + l.enumerable = l.enumerable || false, l.configurable = true, "value" in l && (l.writable = true), Object.defineProperty(r, l.key, l); + } + } + return function(r, u, s) { + return u && t(r.prototype, u), s && t(r, s), r; + }; + }(), a = ze(), o = f(a); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r() { + return p(this, r), h(this, t.apply(this, arguments)); + } + return r.prototype.toString = function() { + return [this.spaces.before, this.ns, String(this.value), this.spaces.after].join(""); + }, i(r, [{ key: "ns", get: function() { + var s = this.namespace; + return s ? (typeof s == "string" ? s : "") + "|" : ""; + } }]), r; + }(o.default); + e.default = c, n.exports = e.default; + } }), Ro = R({ "node_modules/postcss-selector-parser/dist/selectors/className.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ye(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.CLASS, s; + } + return r.prototype.toString = function() { + return [this.spaces.before, this.ns, String("." + this.value), this.spaces.after].join(""); + }, r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Io = R({ "node_modules/postcss-selector-parser/dist/selectors/comment.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = ze(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.COMMENT, s; + } + return r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Co = R({ "node_modules/postcss-selector-parser/dist/selectors/id.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ye(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.ID, s; + } + return r.prototype.toString = function() { + return [this.spaces.before, this.ns, String("#" + this.value), this.spaces.after].join(""); + }, r; + }(a.default); + e.default = c, n.exports = e.default; + } }), No = R({ "node_modules/postcss-selector-parser/dist/selectors/tag.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ye(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.TAG, s; + } + return r; + }(a.default); + e.default = c, n.exports = e.default; + } }), jo = R({ "node_modules/postcss-selector-parser/dist/selectors/string.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = ze(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.STRING, s; + } + return r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Mo = R({ "node_modules/postcss-selector-parser/dist/selectors/pseudo.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ct(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.PSEUDO, s; + } + return r.prototype.toString = function() { + var s = this.length ? "(" + this.map(String).join(",") + ")" : ""; + return [this.spaces.before, String(this.value), s, this.spaces.after].join(""); + }, r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Do = R({ "node_modules/postcss-selector-parser/dist/selectors/attribute.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ye(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.ATTRIBUTE, s.raws = {}, s; + } + return r.prototype.toString = function() { + var s = [this.spaces.before, "[", this.ns, this.attribute]; + return this.operator && s.push(this.operator), this.value && s.push(this.value), this.raws.insensitive ? s.push(this.raws.insensitive) : this.insensitive && s.push(" i"), s.push("]"), s.concat(this.spaces.after).join(""); + }, r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Lo = R({ "node_modules/postcss-selector-parser/dist/selectors/universal.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = Ye(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.UNIVERSAL, s.value = "*", s; + } + return r; + }(a.default); + e.default = c, n.exports = e.default; + } }), zo = R({ "node_modules/postcss-selector-parser/dist/selectors/combinator.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = ze(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.COMBINATOR, s; + } + return r; + }(a.default); + e.default = c, n.exports = e.default; + } }), Bo = R({ "node_modules/postcss-selector-parser/dist/selectors/nesting.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = ze(), a = f(i), o = oe(); + function f(t) { + return t && t.__esModule ? t : { default: t }; + } + function p(t, r) { + if (!(t instanceof r)) + throw new TypeError("Cannot call a class as a function"); + } + function h(t, r) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return r && (typeof r == "object" || typeof r == "function") ? r : t; + } + function g(t, r) { + if (typeof r != "function" && r !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof r); + t.prototype = Object.create(r && r.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : t.__proto__ = r); + } + var c = function(t) { + g(r, t); + function r(u) { + p(this, r); + var s = h(this, t.call(this, u)); + return s.type = o.NESTING, s.value = "&", s; + } + return r; + }(a.default); + e.default = c, n.exports = e.default; + } }), ff = R({ "node_modules/postcss-selector-parser/dist/sortAscending.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = i; + function i(a) { + return a.sort(function(o, f) { + return o - f; + }); + } + n.exports = e.default; + } }), pf = R({ "node_modules/postcss-selector-parser/dist/tokenize.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = H; + var i = 39, a = 34, o = 92, f = 47, p = 10, h = 32, g = 12, c = 9, t = 13, r = 43, u = 62, s = 126, l = 124, m = 44, v = 40, y = 41, w = 91, d = 93, _ = 59, S = 42, x = 58, N = 38, P = 64, W = /[ \n\t\r\{\(\)'"\\;/]/g, U = /[ \n\t\r\(\)\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g; + function H(D) { + for (var $ = [], B = D.css.valueOf(), O = void 0, j = void 0, C = void 0, I = void 0, X = void 0, Z = void 0, Q = void 0, K = void 0, J = void 0, M = void 0, Y = void 0, G = B.length, E = -1, k = 1, b = 0, L = function(T, F) { + if (D.safe) + B += F, j = B.length - 1; + else + throw D.error("Unclosed " + T, k, b - E, b); + }; b < G; ) { + switch (O = B.charCodeAt(b), O === p && (E = b, k += 1), O) { + case p: + case h: + case c: + case t: + case g: + j = b; + do + j += 1, O = B.charCodeAt(j), O === p && (E = j, k += 1); + while (O === h || O === p || O === c || O === t || O === g); + $.push(["space", B.slice(b, j), k, b - E, b]), b = j - 1; + break; + case r: + case u: + case s: + case l: + j = b; + do + j += 1, O = B.charCodeAt(j); + while (O === r || O === u || O === s || O === l); + $.push(["combinator", B.slice(b, j), k, b - E, b]), b = j - 1; + break; + case S: + $.push(["*", "*", k, b - E, b]); + break; + case N: + $.push(["&", "&", k, b - E, b]); + break; + case m: + $.push([",", ",", k, b - E, b]); + break; + case w: + $.push(["[", "[", k, b - E, b]); + break; + case d: + $.push(["]", "]", k, b - E, b]); + break; + case x: + $.push([":", ":", k, b - E, b]); + break; + case _: + $.push([";", ";", k, b - E, b]); + break; + case v: + $.push(["(", "(", k, b - E, b]); + break; + case y: + $.push([")", ")", k, b - E, b]); + break; + case i: + case a: + C = O === i ? "'" : '"', j = b; + do + for (M = false, j = B.indexOf(C, j + 1), j === -1 && L("quote", C), Y = j; B.charCodeAt(Y - 1) === o; ) + Y -= 1, M = !M; + while (M); + $.push(["string", B.slice(b, j + 1), k, b - E, k, j - E, b]), b = j; + break; + case P: + W.lastIndex = b + 1, W.test(B), W.lastIndex === 0 ? j = B.length - 1 : j = W.lastIndex - 2, $.push(["at-word", B.slice(b, j + 1), k, b - E, k, j - E, b]), b = j; + break; + case o: + for (j = b, Q = true; B.charCodeAt(j + 1) === o; ) + j += 1, Q = !Q; + O = B.charCodeAt(j + 1), Q && O !== f && O !== h && O !== p && O !== c && O !== t && O !== g && (j += 1), $.push(["word", B.slice(b, j + 1), k, b - E, k, j - E, b]), b = j; + break; + default: + O === f && B.charCodeAt(b + 1) === S ? (j = B.indexOf("*/", b + 2) + 1, j === 0 && L("comment", "*/"), Z = B.slice(b, j + 1), I = Z.split(` +`), X = I.length - 1, X > 0 ? (K = k + X, J = j - I[X].length) : (K = k, J = E), $.push(["comment", Z, k, b - E, K, j - J, b]), E = J, k = K, b = j) : (U.lastIndex = b + 1, U.test(B), U.lastIndex === 0 ? j = B.length - 1 : j = U.lastIndex - 2, $.push(["word", B.slice(b, j + 1), k, b - E, k, j - E, b]), b = j); + break; + } + b++; + } + return $; + } + n.exports = e.default; + } }), hf = R({ "node_modules/postcss-selector-parser/dist/parser.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = function() { + function E(k, b) { + for (var L = 0; L < b.length; L++) { + var q = b[L]; + q.enumerable = q.enumerable || false, q.configurable = true, "value" in q && (q.writable = true), Object.defineProperty(k, q.key, q); + } + } + return function(k, b, L) { + return b && E(k.prototype, b), L && E(k, L), k; + }; + }(), a = To(), o = M(a), f = Eo(), p = M(f), h = qo(), g = M(h), c = Ao(), t = M(c), r = Po(), u = M(r), s = Ro(), l = M(s), m = Io(), v = M(m), y = Co(), w = M(y), d = No(), _ = M(d), S = jo(), x = M(S), N = Mo(), P = M(N), W = Do(), U = M(W), H = Lo(), D = M(H), $ = zo(), B = M($), O = Bo(), j = M(O), C = ff(), I = M(C), X = pf(), Z = M(X), Q = oe(), K = J(Q); + function J(E) { + if (E && E.__esModule) + return E; + var k = {}; + if (E != null) + for (var b in E) + Object.prototype.hasOwnProperty.call(E, b) && (k[b] = E[b]); + return k.default = E, k; + } + function M(E) { + return E && E.__esModule ? E : { default: E }; + } + function Y(E, k) { + if (!(E instanceof k)) + throw new TypeError("Cannot call a class as a function"); + } + var G = function() { + function E(k) { + Y(this, E), this.input = k, this.lossy = k.options.lossless === false, this.position = 0, this.root = new t.default(); + var b = new u.default(); + return this.root.append(b), this.current = b, this.lossy ? this.tokens = (0, Z.default)({ safe: k.safe, css: k.css.trim() }) : this.tokens = (0, Z.default)(k), this.loop(); + } + return E.prototype.attribute = function() { + var b = "", L = void 0, q = this.currToken; + for (this.position++; this.position < this.tokens.length && this.currToken[0] !== "]"; ) + b += this.tokens[this.position][1], this.position++; + this.position === this.tokens.length && !~b.indexOf("]") && this.error("Expected a closing square bracket."); + var T = b.split(/((?:[*~^$|]?=))([^]*)/), F = T[0].split(/(\|)/g), z = { operator: T[1], value: T[2], source: { start: { line: q[2], column: q[3] }, end: { line: this.currToken[2], column: this.currToken[3] } }, sourceIndex: q[4] }; + if (F.length > 1 ? (F[0] === "" && (F[0] = true), z.attribute = this.parseValue(F[2]), z.namespace = this.parseNamespace(F[0])) : z.attribute = this.parseValue(T[0]), L = new U.default(z), T[2]) { + var re = T[2].split(/(\s+i\s*?)$/), ne = re[0].trim(); + L.value = this.lossy ? ne : re[0], re[1] && (L.insensitive = true, this.lossy || (L.raws.insensitive = re[1])), L.quoted = ne[0] === "'" || ne[0] === '"', L.raws.unquoted = L.quoted ? ne.slice(1, -1) : ne; + } + this.newNode(L), this.position++; + }, E.prototype.combinator = function() { + if (this.currToken[1] === "|") + return this.namespace(); + for (var b = new B.default({ value: "", source: { start: { line: this.currToken[2], column: this.currToken[3] }, end: { line: this.currToken[2], column: this.currToken[3] } }, sourceIndex: this.currToken[4] }); this.position < this.tokens.length && this.currToken && (this.currToken[0] === "space" || this.currToken[0] === "combinator"); ) + this.nextToken && this.nextToken[0] === "combinator" ? (b.spaces.before = this.parseSpace(this.currToken[1]), b.source.start.line = this.nextToken[2], b.source.start.column = this.nextToken[3], b.source.end.column = this.nextToken[3], b.source.end.line = this.nextToken[2], b.sourceIndex = this.nextToken[4]) : this.prevToken && this.prevToken[0] === "combinator" ? b.spaces.after = this.parseSpace(this.currToken[1]) : this.currToken[0] === "combinator" ? b.value = this.currToken[1] : this.currToken[0] === "space" && (b.value = this.parseSpace(this.currToken[1], " ")), this.position++; + return this.newNode(b); + }, E.prototype.comma = function() { + if (this.position === this.tokens.length - 1) { + this.root.trailingComma = true, this.position++; + return; + } + var b = new u.default(); + this.current.parent.append(b), this.current = b, this.position++; + }, E.prototype.comment = function() { + var b = new v.default({ value: this.currToken[1], source: { start: { line: this.currToken[2], column: this.currToken[3] }, end: { line: this.currToken[4], column: this.currToken[5] } }, sourceIndex: this.currToken[6] }); + this.newNode(b), this.position++; + }, E.prototype.error = function(b) { + throw new this.input.error(b); + }, E.prototype.missingBackslash = function() { + return this.error("Expected a backslash preceding the semicolon."); + }, E.prototype.missingParenthesis = function() { + return this.error("Expected opening parenthesis."); + }, E.prototype.missingSquareBracket = function() { + return this.error("Expected opening square bracket."); + }, E.prototype.namespace = function() { + var b = this.prevToken && this.prevToken[1] || true; + if (this.nextToken[0] === "word") + return this.position++, this.word(b); + if (this.nextToken[0] === "*") + return this.position++, this.universal(b); + }, E.prototype.nesting = function() { + this.newNode(new j.default({ value: this.currToken[1], source: { start: { line: this.currToken[2], column: this.currToken[3] }, end: { line: this.currToken[2], column: this.currToken[3] } }, sourceIndex: this.currToken[4] })), this.position++; + }, E.prototype.parentheses = function() { + var b = this.current.last; + if (b && b.type === K.PSEUDO) { + var L = new u.default(), q = this.current; + b.append(L), this.current = L; + var T = 1; + for (this.position++; this.position < this.tokens.length && T; ) + this.currToken[0] === "(" && T++, this.currToken[0] === ")" && T--, T ? this.parse() : (L.parent.source.end.line = this.currToken[2], L.parent.source.end.column = this.currToken[3], this.position++); + T && this.error("Expected closing parenthesis."), this.current = q; + } else { + var F = 1; + for (this.position++, b.value += "("; this.position < this.tokens.length && F; ) + this.currToken[0] === "(" && F++, this.currToken[0] === ")" && F--, b.value += this.parseParenthesisToken(this.currToken), this.position++; + F && this.error("Expected closing parenthesis."); + } + }, E.prototype.pseudo = function() { + for (var b = this, L = "", q = this.currToken; this.currToken && this.currToken[0] === ":"; ) + L += this.currToken[1], this.position++; + if (!this.currToken) + return this.error("Expected pseudo-class or pseudo-element"); + if (this.currToken[0] === "word") { + var T = void 0; + this.splitWord(false, function(F, z) { + L += F, T = new P.default({ value: L, source: { start: { line: q[2], column: q[3] }, end: { line: b.currToken[4], column: b.currToken[5] } }, sourceIndex: q[4] }), b.newNode(T), z > 1 && b.nextToken && b.nextToken[0] === "(" && b.error("Misplaced parenthesis."); + }); + } else + this.error('Unexpected "' + this.currToken[0] + '" found.'); + }, E.prototype.space = function() { + var b = this.currToken; + this.position === 0 || this.prevToken[0] === "," || this.prevToken[0] === "(" ? (this.spaces = this.parseSpace(b[1]), this.position++) : this.position === this.tokens.length - 1 || this.nextToken[0] === "," || this.nextToken[0] === ")" ? (this.current.last.spaces.after = this.parseSpace(b[1]), this.position++) : this.combinator(); + }, E.prototype.string = function() { + var b = this.currToken; + this.newNode(new x.default({ value: this.currToken[1], source: { start: { line: b[2], column: b[3] }, end: { line: b[4], column: b[5] } }, sourceIndex: b[6] })), this.position++; + }, E.prototype.universal = function(b) { + var L = this.nextToken; + if (L && L[1] === "|") + return this.position++, this.namespace(); + this.newNode(new D.default({ value: this.currToken[1], source: { start: { line: this.currToken[2], column: this.currToken[3] }, end: { line: this.currToken[2], column: this.currToken[3] } }, sourceIndex: this.currToken[4] }), b), this.position++; + }, E.prototype.splitWord = function(b, L) { + for (var q = this, T = this.nextToken, F = this.currToken[1]; T && T[0] === "word"; ) { + this.position++; + var z = this.currToken[1]; + if (F += z, z.lastIndexOf("\\") === z.length - 1) { + var re = this.nextToken; + re && re[0] === "space" && (F += this.parseSpace(re[1], " "), this.position++); + } + T = this.nextToken; + } + var ne = (0, p.default)(F, "."), ce = (0, p.default)(F, "#"), fe = (0, p.default)(F, "#{"); + fe.length && (ce = ce.filter(function(ie) { + return !~fe.indexOf(ie); + })); + var te = (0, I.default)((0, g.default)((0, o.default)([[0], ne, ce]))); + te.forEach(function(ie, ae) { + var se = te[ae + 1] || F.length, le = F.slice(ie, se); + if (ae === 0 && L) + return L.call(q, le, te.length); + var pe = void 0; + ~ne.indexOf(ie) ? pe = new l.default({ value: le.slice(1), source: { start: { line: q.currToken[2], column: q.currToken[3] + ie }, end: { line: q.currToken[4], column: q.currToken[3] + (se - 1) } }, sourceIndex: q.currToken[6] + te[ae] }) : ~ce.indexOf(ie) ? pe = new w.default({ value: le.slice(1), source: { start: { line: q.currToken[2], column: q.currToken[3] + ie }, end: { line: q.currToken[4], column: q.currToken[3] + (se - 1) } }, sourceIndex: q.currToken[6] + te[ae] }) : pe = new _.default({ value: le, source: { start: { line: q.currToken[2], column: q.currToken[3] + ie }, end: { line: q.currToken[4], column: q.currToken[3] + (se - 1) } }, sourceIndex: q.currToken[6] + te[ae] }), q.newNode(pe, b); + }), this.position++; + }, E.prototype.word = function(b) { + var L = this.nextToken; + return L && L[1] === "|" ? (this.position++, this.namespace()) : this.splitWord(b); + }, E.prototype.loop = function() { + for (; this.position < this.tokens.length; ) + this.parse(true); + return this.root; + }, E.prototype.parse = function(b) { + switch (this.currToken[0]) { + case "space": + this.space(); + break; + case "comment": + this.comment(); + break; + case "(": + this.parentheses(); + break; + case ")": + b && this.missingParenthesis(); + break; + case "[": + this.attribute(); + break; + case "]": + this.missingSquareBracket(); + break; + case "at-word": + case "word": + this.word(); + break; + case ":": + this.pseudo(); + break; + case ";": + this.missingBackslash(); + break; + case ",": + this.comma(); + break; + case "*": + this.universal(); + break; + case "&": + this.nesting(); + break; + case "combinator": + this.combinator(); + break; + case "string": + this.string(); + break; + } + }, E.prototype.parseNamespace = function(b) { + if (this.lossy && typeof b == "string") { + var L = b.trim(); + return L.length ? L : true; + } + return b; + }, E.prototype.parseSpace = function(b, L) { + return this.lossy ? L || "" : b; + }, E.prototype.parseValue = function(b) { + return this.lossy && b && typeof b == "string" ? b.trim() : b; + }, E.prototype.parseParenthesisToken = function(b) { + return this.lossy ? b[0] === "space" ? this.parseSpace(b[1], " ") : this.parseValue(b[1]) : b[1]; + }, E.prototype.newNode = function(b, L) { + return L && (b.namespace = this.parseNamespace(L)), this.spaces && (b.spaces.before = this.spaces, this.spaces = ""), this.current.append(b); + }, i(E, [{ key: "currToken", get: function() { + return this.tokens[this.position]; + } }, { key: "nextToken", get: function() { + return this.tokens[this.position + 1]; + } }, { key: "prevToken", get: function() { + return this.tokens[this.position - 1]; + } }]), E; + }(); + e.default = G, n.exports = e.default; + } }), df = R({ "node_modules/postcss-selector-parser/dist/processor.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = function() { + function g(c, t) { + for (var r = 0; r < t.length; r++) { + var u = t[r]; + u.enumerable = u.enumerable || false, u.configurable = true, "value" in u && (u.writable = true), Object.defineProperty(c, u.key, u); + } + } + return function(c, t, r) { + return t && g(c.prototype, t), r && g(c, r), c; + }; + }(), a = hf(), o = f(a); + function f(g) { + return g && g.__esModule ? g : { default: g }; + } + function p(g, c) { + if (!(g instanceof c)) + throw new TypeError("Cannot call a class as a function"); + } + var h = function() { + function g(c) { + return p(this, g), this.func = c || function() { + }, this; + } + return g.prototype.process = function(t) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, u = new o.default({ css: t, error: function(l) { + throw new Error(l); + }, options: r }); + return this.res = u, this.func(u), this; + }, i(g, [{ key: "result", get: function() { + return String(this.res); + } }]), g; + }(); + e.default = h, n.exports = e.default; + } }), vf = R({ "node_modules/postcss-selector-parser/dist/index.js"(e, n) { + "use strict"; + A(), e.__esModule = true; + var i = df(), a = O(i), o = Do(), f = O(o), p = Ro(), h = O(p), g = zo(), c = O(g), t = Io(), r = O(t), u = Co(), s = O(u), l = Bo(), m = O(l), v = Mo(), y = O(v), w = Ao(), d = O(w), _ = Po(), S = O(_), x = jo(), N = O(x), P = No(), W = O(P), U = Lo(), H = O(U), D = oe(), $ = B(D); + function B(C) { + if (C && C.__esModule) + return C; + var I = {}; + if (C != null) + for (var X in C) + Object.prototype.hasOwnProperty.call(C, X) && (I[X] = C[X]); + return I.default = C, I; + } + function O(C) { + return C && C.__esModule ? C : { default: C }; + } + var j = function(I) { + return new a.default(I); + }; + j.attribute = function(C) { + return new f.default(C); + }, j.className = function(C) { + return new h.default(C); + }, j.combinator = function(C) { + return new c.default(C); + }, j.comment = function(C) { + return new r.default(C); + }, j.id = function(C) { + return new s.default(C); + }, j.nesting = function(C) { + return new m.default(C); + }, j.pseudo = function(C) { + return new y.default(C); + }, j.root = function(C) { + return new d.default(C); + }, j.selector = function(C) { + return new S.default(C); + }, j.string = function(C) { + return new N.default(C); + }, j.tag = function(C) { + return new W.default(C); + }, j.universal = function(C) { + return new H.default(C); + }, Object.keys($).forEach(function(C) { + C !== "__esModule" && (j[C] = $[C]); + }), e.default = j, n.exports = e.default; + } }), Fo = R({ "node_modules/postcss-media-query-parser/dist/nodes/Node.js"(e) { + "use strict"; + A(), Object.defineProperty(e, "__esModule", { value: true }); + function n(i) { + this.after = i.after, this.before = i.before, this.type = i.type, this.value = i.value, this.sourceIndex = i.sourceIndex; + } + e.default = n; + } }), Uo = R({ "node_modules/postcss-media-query-parser/dist/nodes/Container.js"(e) { + "use strict"; + A(), Object.defineProperty(e, "__esModule", { value: true }); + var n = Fo(), i = a(n); + function a(f) { + return f && f.__esModule ? f : { default: f }; + } + function o(f) { + var p = this; + this.constructor(f), this.nodes = f.nodes, this.after === void 0 && (this.after = this.nodes.length > 0 ? this.nodes[this.nodes.length - 1].after : ""), this.before === void 0 && (this.before = this.nodes.length > 0 ? this.nodes[0].before : ""), this.sourceIndex === void 0 && (this.sourceIndex = this.before.length), this.nodes.forEach(function(h) { + h.parent = p; + }); + } + o.prototype = Object.create(i.default.prototype), o.constructor = i.default, o.prototype.walk = function(p, h) { + for (var g = typeof p == "string" || p instanceof RegExp, c = g ? h : p, t = typeof p == "string" ? new RegExp(p) : p, r = 0; r < this.nodes.length; r++) { + var u = this.nodes[r], s = g ? t.test(u.type) : true; + if (s && c && c(u, r, this.nodes) === false || u.nodes && u.walk(p, h) === false) + return false; + } + return true; + }, o.prototype.each = function() { + for (var p = arguments.length <= 0 || arguments[0] === void 0 ? function() { + } : arguments[0], h = 0; h < this.nodes.length; h++) { + var g = this.nodes[h]; + if (p(g, h, this.nodes) === false) + return false; + } + return true; + }, e.default = o; + } }), mf = R({ "node_modules/postcss-media-query-parser/dist/parsers.js"(e) { + "use strict"; + A(), Object.defineProperty(e, "__esModule", { value: true }), e.parseMediaFeature = p, e.parseMediaQuery = h, e.parseMediaList = g; + var n = Fo(), i = f(n), a = Uo(), o = f(a); + function f(c) { + return c && c.__esModule ? c : { default: c }; + } + function p(c) { + var t = arguments.length <= 1 || arguments[1] === void 0 ? 0 : arguments[1], r = [{ mode: "normal", character: null }], u = [], s = 0, l = "", m = null, v = null, y = t, w = c; + c[0] === "(" && c[c.length - 1] === ")" && (w = c.substring(1, c.length - 1), y++); + for (var d = 0; d < w.length; d++) { + var _ = w[d]; + if ((_ === "'" || _ === '"') && (r[s].isCalculationEnabled === true ? (r.push({ mode: "string", isCalculationEnabled: false, character: _ }), s++) : r[s].mode === "string" && r[s].character === _ && w[d - 1] !== "\\" && (r.pop(), s--)), _ === "{" ? (r.push({ mode: "interpolation", isCalculationEnabled: true }), s++) : _ === "}" && (r.pop(), s--), r[s].mode === "normal" && _ === ":") { + var S = w.substring(d + 1); + v = { type: "value", before: /^(\s*)/.exec(S)[1], after: /(\s*)$/.exec(S)[1], value: S.trim() }, v.sourceIndex = v.before.length + d + 1 + y, m = { type: "colon", sourceIndex: d + y, after: v.before, value: ":" }; + break; + } + l += _; + } + return l = { type: "media-feature", before: /^(\s*)/.exec(l)[1], after: /(\s*)$/.exec(l)[1], value: l.trim() }, l.sourceIndex = l.before.length + y, u.push(l), m !== null && (m.before = l.after, u.push(m)), v !== null && u.push(v), u; + } + function h(c) { + var t = arguments.length <= 1 || arguments[1] === void 0 ? 0 : arguments[1], r = [], u = 0, s = false, l = void 0; + function m() { + return { before: "", after: "", value: "" }; + } + l = m(); + for (var v = 0; v < c.length; v++) { + var y = c[v]; + s ? (l.value += y, (y === "{" || y === "(") && u++, (y === ")" || y === "}") && u--) : y.search(/\s/) !== -1 ? l.before += y : (y === "(" && (l.type = "media-feature-expression", u++), l.value = y, l.sourceIndex = t + v, s = true), s && u === 0 && (y === ")" || v === c.length - 1 || c[v + 1].search(/\s/) !== -1) && (["not", "only", "and"].indexOf(l.value) !== -1 && (l.type = "keyword"), l.type === "media-feature-expression" && (l.nodes = p(l.value, l.sourceIndex)), r.push(Array.isArray(l.nodes) ? new o.default(l) : new i.default(l)), l = m(), s = false); + } + for (var w = 0; w < r.length; w++) + if (l = r[w], w > 0 && (r[w - 1].after = l.before), l.type === void 0) { + if (w > 0) { + if (r[w - 1].type === "media-feature-expression") { + l.type = "keyword"; + continue; + } + if (r[w - 1].value === "not" || r[w - 1].value === "only") { + l.type = "media-type"; + continue; + } + if (r[w - 1].value === "and") { + l.type = "media-feature-expression"; + continue; + } + r[w - 1].type === "media-type" && (r[w + 1] ? l.type = r[w + 1].type === "media-feature-expression" ? "keyword" : "media-feature-expression" : l.type = "media-feature-expression"); + } + if (w === 0) { + if (!r[w + 1]) { + l.type = "media-type"; + continue; + } + if (r[w + 1] && (r[w + 1].type === "media-feature-expression" || r[w + 1].type === "keyword")) { + l.type = "media-type"; + continue; + } + if (r[w + 2]) { + if (r[w + 2].type === "media-feature-expression") { + l.type = "media-type", r[w + 1].type = "keyword"; + continue; + } + if (r[w + 2].type === "keyword") { + l.type = "keyword", r[w + 1].type = "media-type"; + continue; + } + } + if (r[w + 3] && r[w + 3].type === "media-feature-expression") { + l.type = "keyword", r[w + 1].type = "media-type", r[w + 2].type = "keyword"; + continue; + } + } + } + return r; + } + function g(c) { + var t = [], r = 0, u = 0, s = /^(\s*)url\s*\(/.exec(c); + if (s !== null) { + for (var l = s[0].length, m = 1; m > 0; ) { + var v = c[l]; + v === "(" && m++, v === ")" && m--, l++; + } + t.unshift(new i.default({ type: "url", value: c.substring(0, l).trim(), sourceIndex: s[1].length, before: s[1], after: /^(\s*)/.exec(c.substring(l))[1] })), r = l; + } + for (var y = r; y < c.length; y++) { + var w = c[y]; + if (w === "(" && u++, w === ")" && u--, u === 0 && w === ",") { + var d = c.substring(r, y), _ = /^(\s*)/.exec(d)[1]; + t.push(new o.default({ type: "media-query", value: d.trim(), sourceIndex: r + _.length, nodes: h(d, r), before: _, after: /(\s*)$/.exec(d)[1] })), r = y + 1; + } + } + var S = c.substring(r), x = /^(\s*)/.exec(S)[1]; + return t.push(new o.default({ type: "media-query", value: S.trim(), sourceIndex: r + x.length, nodes: h(S, r), before: x, after: /(\s*)$/.exec(S)[1] })), t; + } + } }), gf = R({ "node_modules/postcss-media-query-parser/dist/index.js"(e) { + "use strict"; + A(), Object.defineProperty(e, "__esModule", { value: true }), e.default = f; + var n = Uo(), i = o(n), a = mf(); + function o(p) { + return p && p.__esModule ? p : { default: p }; + } + function f(p) { + return new i.default({ nodes: (0, a.parseMediaList)(p), type: "media-query-list", value: p.trim() }); + } + } }), Wo = {}; + Ot(Wo, { basename: () => Jo, default: () => Qo, delimiter: () => _t, dirname: () => Ho, extname: () => Ko, isAbsolute: () => jt, join: () => Vo, normalize: () => Nt, relative: () => Go, resolve: () => mr, sep: () => wt }); + function $o(e, n) { + for (var i = 0, a = e.length - 1; a >= 0; a--) { + var o = e[a]; + o === "." ? e.splice(a, 1) : o === ".." ? (e.splice(a, 1), i++) : i && (e.splice(a, 1), i--); + } + if (n) + for (; i--; i) + e.unshift(".."); + return e; + } + function mr() { + for (var e = "", n = false, i = arguments.length - 1; i >= -1 && !n; i--) { + var a = i >= 0 ? arguments[i] : "/"; + if (typeof a != "string") + throw new TypeError("Arguments to path.resolve must be strings"); + if (!a) + continue; + e = a + "/" + e, n = a.charAt(0) === "/"; + } + return e = $o(Mt(e.split("/"), function(o) { + return !!o; + }), !n).join("/"), (n ? "/" : "") + e || "."; + } + function Nt(e) { + var n = jt(e), i = Yo(e, -1) === "/"; + return e = $o(Mt(e.split("/"), function(a) { + return !!a; + }), !n).join("/"), !e && !n && (e = "."), e && i && (e += "/"), (n ? "/" : "") + e; + } + function jt(e) { + return e.charAt(0) === "/"; + } + function Vo() { + var e = Array.prototype.slice.call(arguments, 0); + return Nt(Mt(e, function(n, i) { + if (typeof n != "string") + throw new TypeError("Arguments to path.join must be strings"); + return n; + }).join("/")); + } + function Go(e, n) { + e = mr(e).substr(1), n = mr(n).substr(1); + function i(c) { + for (var t = 0; t < c.length && c[t] === ""; t++) + ; + for (var r = c.length - 1; r >= 0 && c[r] === ""; r--) + ; + return t > r ? [] : c.slice(t, r - t + 1); + } + for (var a = i(e.split("/")), o = i(n.split("/")), f = Math.min(a.length, o.length), p = f, h = 0; h < f; h++) + if (a[h] !== o[h]) { + p = h; + break; + } + for (var g = [], h = p; h < a.length; h++) + g.push(".."); + return g = g.concat(o.slice(p)), g.join("/"); + } + function Ho(e) { + var n = wr(e), i = n[0], a = n[1]; + return !i && !a ? "." : (a && (a = a.substr(0, a.length - 1)), i + a); + } + function Jo(e, n) { + var i = wr(e)[2]; + return n && i.substr(-1 * n.length) === n && (i = i.substr(0, i.length - n.length)), i; + } + function Ko(e) { + return wr(e)[3]; + } + function Mt(e, n) { + if (e.filter) + return e.filter(n); + for (var i = [], a = 0; a < e.length; a++) + n(e[a], a, e) && i.push(e[a]); + return i; + } + var Is, wr, wt, _t, Qo, Yo, yf = Le({ "node-modules-polyfills:path"() { + A(), Is = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/, wr = function(e) { + return Is.exec(e).slice(1); + }, wt = "/", _t = ":", Qo = { extname: Ko, basename: Jo, dirname: Ho, sep: wt, delimiter: _t, relative: Go, join: Vo, isAbsolute: jt, normalize: Nt, resolve: mr }, Yo = "ab".substr(-1) === "b" ? function(e, n, i) { + return e.substr(n, i); + } : function(e, n, i) { + return n < 0 && (n = e.length + n), e.substr(n, i); + }; + } }), wf = R({ "node-modules-polyfills-commonjs:path"(e, n) { + A(); + var i = (yf(), Tt(Wo)); + if (i && i.default) { + n.exports = i.default; + for (let a in i) + n.exports[a] = i[a]; + } else + i && (n.exports = i); + } }), _f = R({ "node_modules/picocolors/picocolors.browser.js"(e, n) { + A(); + var i = String, a = function() { + return { isColorSupported: false, reset: i, bold: i, dim: i, italic: i, underline: i, inverse: i, hidden: i, strikethrough: i, black: i, red: i, green: i, yellow: i, blue: i, magenta: i, cyan: i, white: i, gray: i, bgBlack: i, bgRed: i, bgGreen: i, bgYellow: i, bgBlue: i, bgMagenta: i, bgCyan: i, bgWhite: i }; + }; + n.exports = a(), n.exports.createColors = a; + } }), bf = R({ "(disabled):node_modules/postcss/lib/terminal-highlight"() { + A(); + } }), Xo = R({ "node_modules/postcss/lib/css-syntax-error.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = o(_f()), a = o(bf()); + function o(m) { + return m && m.__esModule ? m : { default: m }; + } + function f(m) { + if (m === void 0) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return m; + } + function p(m, v) { + m.prototype = Object.create(v.prototype), m.prototype.constructor = m, m.__proto__ = v; + } + function h(m) { + var v = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0; + return h = function(w) { + if (w === null || !t(w)) + return w; + if (typeof w != "function") + throw new TypeError("Super expression must either be null or a function"); + if (typeof v < "u") { + if (v.has(w)) + return v.get(w); + v.set(w, d); + } + function d() { + return g(w, arguments, u(this).constructor); + } + return d.prototype = Object.create(w.prototype, { constructor: { value: d, enumerable: false, writable: true, configurable: true } }), r(d, w); + }, h(m); + } + function g(m, v, y) { + return c() ? g = Reflect.construct : g = function(d, _, S) { + var x = [null]; + x.push.apply(x, _); + var N = Function.bind.apply(d, x), P = new N(); + return S && r(P, S.prototype), P; + }, g.apply(null, arguments); + } + function c() { + if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham) + return false; + if (typeof Proxy == "function") + return true; + try { + return Date.prototype.toString.call(Reflect.construct(Date, [], function() { + })), true; + } catch { + return false; + } + } + function t(m) { + return Function.toString.call(m).indexOf("[native code]") !== -1; + } + function r(m, v) { + return r = Object.setPrototypeOf || function(w, d) { + return w.__proto__ = d, w; + }, r(m, v); + } + function u(m) { + return u = Object.setPrototypeOf ? Object.getPrototypeOf : function(y) { + return y.__proto__ || Object.getPrototypeOf(y); + }, u(m); + } + var s = function(m) { + p(v, m); + function v(w, d, _, S, x, N) { + var P; + return P = m.call(this, w) || this, P.name = "CssSyntaxError", P.reason = w, x && (P.file = x), S && (P.source = S), N && (P.plugin = N), typeof d < "u" && typeof _ < "u" && (P.line = d, P.column = _), P.setMessage(), Error.captureStackTrace && Error.captureStackTrace(f(P), v), P; + } + var y = v.prototype; + return y.setMessage = function() { + this.message = this.plugin ? this.plugin + ": " : "", this.message += this.file ? this.file : "", typeof this.line < "u" && (this.message += ":" + this.line + ":" + this.column), this.message += ": " + this.reason; + }, y.showSourceCode = function(d) { + var _ = this; + if (!this.source) + return ""; + var S = this.source; + a.default && (typeof d > "u" && (d = i.default.isColorSupported), d && (S = (0, a.default)(S))); + var x = S.split(/\r?\n/), N = Math.max(this.line - 3, 0), P = Math.min(this.line + 2, x.length), W = String(P).length; + function U(D) { + return d && i.default.red ? i.default.red(i.default.bold(D)) : D; + } + function H(D) { + return d && i.default.gray ? i.default.gray(D) : D; + } + return x.slice(N, P).map(function(D, $) { + var B = N + 1 + $, O = " " + (" " + B).slice(-W) + " | "; + if (B === _.line) { + var j = H(O.replace(/\d/g, " ")) + D.slice(0, _.column - 1).replace(/[^\t]/g, " "); + return U(">") + H(O) + D + ` + ` + j + U("^"); + } + return " " + H(O) + D; + }).join(` +`); + }, y.toString = function() { + var d = this.showSourceCode(); + return d && (d = ` + +` + d + ` +`), this.name + ": " + this.message + d; + }, v; + }(h(Error)), l = s; + e.default = l, n.exports = e.default; + } }), xf = R({ "node_modules/postcss/lib/previous-map.js"(e, n) { + A(), n.exports = class { + }; + } }), _r = R({ "node_modules/postcss/lib/input.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = f(wf()), a = f(Xo()), o = f(xf()); + function f(r) { + return r && r.__esModule ? r : { default: r }; + } + function p(r, u) { + for (var s = 0; s < u.length; s++) { + var l = u[s]; + l.enumerable = l.enumerable || false, l.configurable = true, "value" in l && (l.writable = true), Object.defineProperty(r, l.key, l); + } + } + function h(r, u, s) { + return u && p(r.prototype, u), s && p(r, s), r; + } + var g = 0, c = function() { + function r(s, l) { + if (l === void 0 && (l = {}), s === null || typeof s > "u" || typeof s == "object" && !s.toString) + throw new Error("PostCSS received " + s + " instead of CSS string"); + this.css = s.toString(), this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE" ? (this.hasBOM = true, this.css = this.css.slice(1)) : this.hasBOM = false, l.from && (/^\w+:\/\//.test(l.from) || i.default.isAbsolute(l.from) ? this.file = l.from : this.file = i.default.resolve(l.from)); + var m = new o.default(this.css, l); + if (m.text) { + this.map = m; + var v = m.consumer().file; + !this.file && v && (this.file = this.mapResolve(v)); + } + this.file || (g += 1, this.id = ""), this.map && (this.map.file = this.from); + } + var u = r.prototype; + return u.error = function(l, m, v, y) { + y === void 0 && (y = {}); + var w, d = this.origin(m, v); + return d ? w = new a.default(l, d.line, d.column, d.source, d.file, y.plugin) : w = new a.default(l, m, v, this.css, this.file, y.plugin), w.input = { line: m, column: v, source: this.css }, this.file && (w.input.file = this.file), w; + }, u.origin = function(l, m) { + if (!this.map) + return false; + var v = this.map.consumer(), y = v.originalPositionFor({ line: l, column: m }); + if (!y.source) + return false; + var w = { file: this.mapResolve(y.source), line: y.line, column: y.column }, d = v.sourceContentFor(y.source); + return d && (w.source = d), w; + }, u.mapResolve = function(l) { + return /^\w+:\/\//.test(l) ? l : i.default.resolve(this.map.consumer().sourceRoot || ".", l); + }, h(r, [{ key: "from", get: function() { + return this.file || this.id; + } }]), r; + }(), t = c; + e.default = t, n.exports = e.default; + } }), br = R({ "node_modules/postcss/lib/stringifier.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = { colon: ": ", indent: " ", beforeDecl: ` +`, beforeRule: ` +`, beforeOpen: " ", beforeClose: ` +`, beforeComment: ` +`, after: ` +`, emptyBody: "", commentLeft: " ", commentRight: " ", semicolon: false }; + function a(p) { + return p[0].toUpperCase() + p.slice(1); + } + var o = function() { + function p(g) { + this.builder = g; + } + var h = p.prototype; + return h.stringify = function(c, t) { + this[c.type](c, t); + }, h.root = function(c) { + this.body(c), c.raws.after && this.builder(c.raws.after); + }, h.comment = function(c) { + var t = this.raw(c, "left", "commentLeft"), r = this.raw(c, "right", "commentRight"); + this.builder("/*" + t + c.text + r + "*/", c); + }, h.decl = function(c, t) { + var r = this.raw(c, "between", "colon"), u = c.prop + r + this.rawValue(c, "value"); + c.important && (u += c.raws.important || " !important"), t && (u += ";"), this.builder(u, c); + }, h.rule = function(c) { + this.block(c, this.rawValue(c, "selector")), c.raws.ownSemicolon && this.builder(c.raws.ownSemicolon, c, "end"); + }, h.atrule = function(c, t) { + var r = "@" + c.name, u = c.params ? this.rawValue(c, "params") : ""; + if (typeof c.raws.afterName < "u" ? r += c.raws.afterName : u && (r += " "), c.nodes) + this.block(c, r + u); + else { + var s = (c.raws.between || "") + (t ? ";" : ""); + this.builder(r + u + s, c); + } + }, h.body = function(c) { + for (var t = c.nodes.length - 1; t > 0 && c.nodes[t].type === "comment"; ) + t -= 1; + for (var r = this.raw(c, "semicolon"), u = 0; u < c.nodes.length; u++) { + var s = c.nodes[u], l = this.raw(s, "before"); + l && this.builder(l), this.stringify(s, t !== u || r); + } + }, h.block = function(c, t) { + var r = this.raw(c, "between", "beforeOpen"); + this.builder(t + r + "{", c, "start"); + var u; + c.nodes && c.nodes.length ? (this.body(c), u = this.raw(c, "after")) : u = this.raw(c, "after", "emptyBody"), u && this.builder(u), this.builder("}", c, "end"); + }, h.raw = function(c, t, r) { + var u; + if (r || (r = t), t && (u = c.raws[t], typeof u < "u")) + return u; + var s = c.parent; + if (r === "before" && (!s || s.type === "root" && s.first === c)) + return ""; + if (!s) + return i[r]; + var l = c.root(); + if (l.rawCache || (l.rawCache = {}), typeof l.rawCache[r] < "u") + return l.rawCache[r]; + if (r === "before" || r === "after") + return this.beforeAfter(c, r); + var m = "raw" + a(r); + return this[m] ? u = this[m](l, c) : l.walk(function(v) { + if (u = v.raws[t], typeof u < "u") + return false; + }), typeof u > "u" && (u = i[r]), l.rawCache[r] = u, u; + }, h.rawSemicolon = function(c) { + var t; + return c.walk(function(r) { + if (r.nodes && r.nodes.length && r.last.type === "decl" && (t = r.raws.semicolon, typeof t < "u")) + return false; + }), t; + }, h.rawEmptyBody = function(c) { + var t; + return c.walk(function(r) { + if (r.nodes && r.nodes.length === 0 && (t = r.raws.after, typeof t < "u")) + return false; + }), t; + }, h.rawIndent = function(c) { + if (c.raws.indent) + return c.raws.indent; + var t; + return c.walk(function(r) { + var u = r.parent; + if (u && u !== c && u.parent && u.parent === c && typeof r.raws.before < "u") { + var s = r.raws.before.split(` +`); + return t = s[s.length - 1], t = t.replace(/[^\s]/g, ""), false; + } + }), t; + }, h.rawBeforeComment = function(c, t) { + var r; + return c.walkComments(function(u) { + if (typeof u.raws.before < "u") + return r = u.raws.before, r.indexOf(` +`) !== -1 && (r = r.replace(/[^\n]+$/, "")), false; + }), typeof r > "u" ? r = this.raw(t, null, "beforeDecl") : r && (r = r.replace(/[^\s]/g, "")), r; + }, h.rawBeforeDecl = function(c, t) { + var r; + return c.walkDecls(function(u) { + if (typeof u.raws.before < "u") + return r = u.raws.before, r.indexOf(` +`) !== -1 && (r = r.replace(/[^\n]+$/, "")), false; + }), typeof r > "u" ? r = this.raw(t, null, "beforeRule") : r && (r = r.replace(/[^\s]/g, "")), r; + }, h.rawBeforeRule = function(c) { + var t; + return c.walk(function(r) { + if (r.nodes && (r.parent !== c || c.first !== r) && typeof r.raws.before < "u") + return t = r.raws.before, t.indexOf(` +`) !== -1 && (t = t.replace(/[^\n]+$/, "")), false; + }), t && (t = t.replace(/[^\s]/g, "")), t; + }, h.rawBeforeClose = function(c) { + var t; + return c.walk(function(r) { + if (r.nodes && r.nodes.length > 0 && typeof r.raws.after < "u") + return t = r.raws.after, t.indexOf(` +`) !== -1 && (t = t.replace(/[^\n]+$/, "")), false; + }), t && (t = t.replace(/[^\s]/g, "")), t; + }, h.rawBeforeOpen = function(c) { + var t; + return c.walk(function(r) { + if (r.type !== "decl" && (t = r.raws.between, typeof t < "u")) + return false; + }), t; + }, h.rawColon = function(c) { + var t; + return c.walkDecls(function(r) { + if (typeof r.raws.between < "u") + return t = r.raws.between.replace(/[^\s:]/g, ""), false; + }), t; + }, h.beforeAfter = function(c, t) { + var r; + c.type === "decl" ? r = this.raw(c, null, "beforeDecl") : c.type === "comment" ? r = this.raw(c, null, "beforeComment") : t === "before" ? r = this.raw(c, null, "beforeRule") : r = this.raw(c, null, "beforeClose"); + for (var u = c.parent, s = 0; u && u.type !== "root"; ) + s += 1, u = u.parent; + if (r.indexOf(` +`) !== -1) { + var l = this.raw(c, null, "indent"); + if (l.length) + for (var m = 0; m < s; m++) + r += l; + } + return r; + }, h.rawValue = function(c, t) { + var r = c[t], u = c.raws[t]; + return u && u.value === r ? u.raw : r; + }, p; + }(), f = o; + e.default = f, n.exports = e.default; + } }), Zo = R({ "node_modules/postcss/lib/stringify.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = a(br()); + function a(p) { + return p && p.__esModule ? p : { default: p }; + } + function o(p, h) { + var g = new i.default(h); + g.stringify(p); + } + var f = o; + e.default = f, n.exports = e.default; + } }), Dt = R({ "node_modules/postcss/lib/node.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = f(Xo()), a = f(br()), o = f(Zo()); + function f(c) { + return c && c.__esModule ? c : { default: c }; + } + function p(c, t) { + var r = new c.constructor(); + for (var u in c) + if (!!c.hasOwnProperty(u)) { + var s = c[u], l = typeof s; + u === "parent" && l === "object" ? t && (r[u] = t) : u === "source" ? r[u] = s : s instanceof Array ? r[u] = s.map(function(m) { + return p(m, r); + }) : (l === "object" && s !== null && (s = p(s)), r[u] = s); + } + return r; + } + var h = function() { + function c(r) { + r === void 0 && (r = {}), this.raws = {}; + for (var u in r) + this[u] = r[u]; + } + var t = c.prototype; + return t.error = function(u, s) { + if (s === void 0 && (s = {}), this.source) { + var l = this.positionBy(s); + return this.source.input.error(u, l.line, l.column, s); + } + return new i.default(u); + }, t.warn = function(u, s, l) { + var m = { node: this }; + for (var v in l) + m[v] = l[v]; + return u.warn(s, m); + }, t.remove = function() { + return this.parent && this.parent.removeChild(this), this.parent = void 0, this; + }, t.toString = function(u) { + u === void 0 && (u = o.default), u.stringify && (u = u.stringify); + var s = ""; + return u(this, function(l) { + s += l; + }), s; + }, t.clone = function(u) { + u === void 0 && (u = {}); + var s = p(this); + for (var l in u) + s[l] = u[l]; + return s; + }, t.cloneBefore = function(u) { + u === void 0 && (u = {}); + var s = this.clone(u); + return this.parent.insertBefore(this, s), s; + }, t.cloneAfter = function(u) { + u === void 0 && (u = {}); + var s = this.clone(u); + return this.parent.insertAfter(this, s), s; + }, t.replaceWith = function() { + if (this.parent) { + for (var u = arguments.length, s = new Array(u), l = 0; l < u; l++) + s[l] = arguments[l]; + for (var m = 0, v = s; m < v.length; m++) { + var y = v[m]; + this.parent.insertBefore(this, y); + } + this.remove(); + } + return this; + }, t.next = function() { + if (!!this.parent) { + var u = this.parent.index(this); + return this.parent.nodes[u + 1]; + } + }, t.prev = function() { + if (!!this.parent) { + var u = this.parent.index(this); + return this.parent.nodes[u - 1]; + } + }, t.before = function(u) { + return this.parent.insertBefore(this, u), this; + }, t.after = function(u) { + return this.parent.insertAfter(this, u), this; + }, t.toJSON = function() { + var u = {}; + for (var s in this) + if (!!this.hasOwnProperty(s) && s !== "parent") { + var l = this[s]; + l instanceof Array ? u[s] = l.map(function(m) { + return typeof m == "object" && m.toJSON ? m.toJSON() : m; + }) : typeof l == "object" && l.toJSON ? u[s] = l.toJSON() : u[s] = l; + } + return u; + }, t.raw = function(u, s) { + var l = new a.default(); + return l.raw(this, u, s); + }, t.root = function() { + for (var u = this; u.parent; ) + u = u.parent; + return u; + }, t.cleanRaws = function(u) { + delete this.raws.before, delete this.raws.after, u || delete this.raws.between; + }, t.positionInside = function(u) { + for (var s = this.toString(), l = this.source.start.column, m = this.source.start.line, v = 0; v < u; v++) + s[v] === ` +` ? (l = 1, m += 1) : l += 1; + return { line: m, column: l }; + }, t.positionBy = function(u) { + var s = this.source.start; + if (u.index) + s = this.positionInside(u.index); + else if (u.word) { + var l = this.toString().indexOf(u.word); + l !== -1 && (s = this.positionInside(l)); + } + return s; + }, c; + }(), g = h; + e.default = g, n.exports = e.default; + } }), xr = R({ "node_modules/postcss/lib/comment.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = a(Dt()); + function a(h) { + return h && h.__esModule ? h : { default: h }; + } + function o(h, g) { + h.prototype = Object.create(g.prototype), h.prototype.constructor = h, h.__proto__ = g; + } + var f = function(h) { + o(g, h); + function g(c) { + var t; + return t = h.call(this, c) || this, t.type = "comment", t; + } + return g; + }(i.default), p = f; + e.default = p, n.exports = e.default; + } }), ea = R({ "node_modules/postcss/lib/declaration.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = a(Dt()); + function a(h) { + return h && h.__esModule ? h : { default: h }; + } + function o(h, g) { + h.prototype = Object.create(g.prototype), h.prototype.constructor = h, h.__proto__ = g; + } + var f = function(h) { + o(g, h); + function g(c) { + var t; + return t = h.call(this, c) || this, t.type = "decl", t; + } + return g; + }(i.default), p = f; + e.default = p, n.exports = e.default; + } }), Lt = R({ "node_modules/postcss/lib/tokenize.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = W; + var i = "'".charCodeAt(0), a = '"'.charCodeAt(0), o = "\\".charCodeAt(0), f = "/".charCodeAt(0), p = ` +`.charCodeAt(0), h = " ".charCodeAt(0), g = "\f".charCodeAt(0), c = " ".charCodeAt(0), t = "\r".charCodeAt(0), r = "[".charCodeAt(0), u = "]".charCodeAt(0), s = "(".charCodeAt(0), l = ")".charCodeAt(0), m = "{".charCodeAt(0), v = "}".charCodeAt(0), y = ";".charCodeAt(0), w = "*".charCodeAt(0), d = ":".charCodeAt(0), _ = "@".charCodeAt(0), S = /[ \n\t\r\f{}()'"\\;/[\]#]/g, x = /[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g, N = /.[\\/("'\n]/, P = /[a-f0-9]/i; + function W(U, H) { + H === void 0 && (H = {}); + var D = U.css.valueOf(), $ = H.ignoreErrors, B, O, j, C, I, X, Z, Q, K, J, M, Y, G, E, k = D.length, b = -1, L = 1, q = 0, T = [], F = []; + function z() { + return q; + } + function re(te) { + throw U.error("Unclosed " + te, L, q - b); + } + function ne() { + return F.length === 0 && q >= k; + } + function ce(te) { + if (F.length) + return F.pop(); + if (!(q >= k)) { + var ie = te ? te.ignoreUnclosed : false; + switch (B = D.charCodeAt(q), (B === p || B === g || B === t && D.charCodeAt(q + 1) !== p) && (b = q, L += 1), B) { + case p: + case h: + case c: + case t: + case g: + O = q; + do + O += 1, B = D.charCodeAt(O), B === p && (b = O, L += 1); + while (B === h || B === p || B === c || B === t || B === g); + E = ["space", D.slice(q, O)], q = O - 1; + break; + case r: + case u: + case m: + case v: + case d: + case y: + case l: + var ae = String.fromCharCode(B); + E = [ae, ae, L, q - b]; + break; + case s: + if (Y = T.length ? T.pop()[1] : "", G = D.charCodeAt(q + 1), Y === "url" && G !== i && G !== a && G !== h && G !== p && G !== c && G !== g && G !== t) { + O = q; + do { + if (J = false, O = D.indexOf(")", O + 1), O === -1) + if ($ || ie) { + O = q; + break; + } else + re("bracket"); + for (M = O; D.charCodeAt(M - 1) === o; ) + M -= 1, J = !J; + } while (J); + E = ["brackets", D.slice(q, O + 1), L, q - b, L, O - b], q = O; + } else + O = D.indexOf(")", q + 1), X = D.slice(q, O + 1), O === -1 || N.test(X) ? E = ["(", "(", L, q - b] : (E = ["brackets", X, L, q - b, L, O - b], q = O); + break; + case i: + case a: + j = B === i ? "'" : '"', O = q; + do { + if (J = false, O = D.indexOf(j, O + 1), O === -1) + if ($ || ie) { + O = q + 1; + break; + } else + re("string"); + for (M = O; D.charCodeAt(M - 1) === o; ) + M -= 1, J = !J; + } while (J); + X = D.slice(q, O + 1), C = X.split(` +`), I = C.length - 1, I > 0 ? (Q = L + I, K = O - C[I].length) : (Q = L, K = b), E = ["string", D.slice(q, O + 1), L, q - b, Q, O - K], b = K, L = Q, q = O; + break; + case _: + S.lastIndex = q + 1, S.test(D), S.lastIndex === 0 ? O = D.length - 1 : O = S.lastIndex - 2, E = ["at-word", D.slice(q, O + 1), L, q - b, L, O - b], q = O; + break; + case o: + for (O = q, Z = true; D.charCodeAt(O + 1) === o; ) + O += 1, Z = !Z; + if (B = D.charCodeAt(O + 1), Z && B !== f && B !== h && B !== p && B !== c && B !== t && B !== g && (O += 1, P.test(D.charAt(O)))) { + for (; P.test(D.charAt(O + 1)); ) + O += 1; + D.charCodeAt(O + 1) === h && (O += 1); + } + E = ["word", D.slice(q, O + 1), L, q - b, L, O - b], q = O; + break; + default: + B === f && D.charCodeAt(q + 1) === w ? (O = D.indexOf("*/", q + 2) + 1, O === 0 && ($ || ie ? O = D.length : re("comment")), X = D.slice(q, O + 1), C = X.split(` +`), I = C.length - 1, I > 0 ? (Q = L + I, K = O - C[I].length) : (Q = L, K = b), E = ["comment", X, L, q - b, Q, O - K], b = K, L = Q, q = O) : (x.lastIndex = q + 1, x.test(D), x.lastIndex === 0 ? O = D.length - 1 : O = x.lastIndex - 2, E = ["word", D.slice(q, O + 1), L, q - b, L, O - b], T.push(E), q = O); + break; + } + return q++, E; + } + } + function fe(te) { + F.push(te); + } + return { back: fe, nextToken: ce, endOfFile: ne, position: z }; + } + n.exports = e.default; + } }), ra = R({ "node_modules/postcss/lib/parse.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = o(zt()), a = o(_r()); + function o(h) { + return h && h.__esModule ? h : { default: h }; + } + function f(h, g) { + var c = new a.default(h, g), t = new i.default(c); + try { + t.parse(); + } catch (r) { + throw r; + } + return t.root; + } + var p = f; + e.default = p, n.exports = e.default; + } }), kf = R({ "node_modules/postcss/lib/list.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = { split: function(f, p, h) { + for (var g = [], c = "", t = false, r = 0, u = false, s = false, l = 0; l < f.length; l++) { + var m = f[l]; + u ? s ? s = false : m === "\\" ? s = true : m === u && (u = false) : m === '"' || m === "'" ? u = m : m === "(" ? r += 1 : m === ")" ? r > 0 && (r -= 1) : r === 0 && p.indexOf(m) !== -1 && (t = true), t ? (c !== "" && g.push(c.trim()), c = "", t = false) : c += m; + } + return (h || c !== "") && g.push(c.trim()), g; + }, space: function(f) { + var p = [" ", ` +`, " "]; + return i.split(f, p); + }, comma: function(f) { + return i.split(f, [","], true); + } }, a = i; + e.default = a, n.exports = e.default; + } }), ta = R({ "node_modules/postcss/lib/rule.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = o(kr()), a = o(kf()); + function o(t) { + return t && t.__esModule ? t : { default: t }; + } + function f(t, r) { + for (var u = 0; u < r.length; u++) { + var s = r[u]; + s.enumerable = s.enumerable || false, s.configurable = true, "value" in s && (s.writable = true), Object.defineProperty(t, s.key, s); + } + } + function p(t, r, u) { + return r && f(t.prototype, r), u && f(t, u), t; + } + function h(t, r) { + t.prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; + } + var g = function(t) { + h(r, t); + function r(u) { + var s; + return s = t.call(this, u) || this, s.type = "rule", s.nodes || (s.nodes = []), s; + } + return p(r, [{ key: "selectors", get: function() { + return a.default.comma(this.selector); + }, set: function(s) { + var l = this.selector ? this.selector.match(/,\s*/) : null, m = l ? l[0] : "," + this.raw("between", "beforeOpen"); + this.selector = s.join(m); + } }]), r; + }(i.default), c = g; + e.default = c, n.exports = e.default; + } }), kr = R({ "node_modules/postcss/lib/container.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = f(ea()), a = f(xr()), o = f(Dt()); + function f(m) { + return m && m.__esModule ? m : { default: m }; + } + function p(m, v) { + var y; + if (typeof Symbol > "u" || m[Symbol.iterator] == null) { + if (Array.isArray(m) || (y = h(m)) || v && m && typeof m.length == "number") { + y && (m = y); + var w = 0; + return function() { + return w >= m.length ? { done: true } : { done: false, value: m[w++] }; + }; + } + throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + } + return y = m[Symbol.iterator](), y.next.bind(y); + } + function h(m, v) { + if (!!m) { + if (typeof m == "string") + return g(m, v); + var y = Object.prototype.toString.call(m).slice(8, -1); + if (y === "Object" && m.constructor && (y = m.constructor.name), y === "Map" || y === "Set") + return Array.from(m); + if (y === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(y)) + return g(m, v); + } + } + function g(m, v) { + (v == null || v > m.length) && (v = m.length); + for (var y = 0, w = new Array(v); y < v; y++) + w[y] = m[y]; + return w; + } + function c(m, v) { + for (var y = 0; y < v.length; y++) { + var w = v[y]; + w.enumerable = w.enumerable || false, w.configurable = true, "value" in w && (w.writable = true), Object.defineProperty(m, w.key, w); + } + } + function t(m, v, y) { + return v && c(m.prototype, v), y && c(m, y), m; + } + function r(m, v) { + m.prototype = Object.create(v.prototype), m.prototype.constructor = m, m.__proto__ = v; + } + function u(m) { + return m.map(function(v) { + return v.nodes && (v.nodes = u(v.nodes)), delete v.source, v; + }); + } + var s = function(m) { + r(v, m); + function v() { + return m.apply(this, arguments) || this; + } + var y = v.prototype; + return y.push = function(d) { + return d.parent = this, this.nodes.push(d), this; + }, y.each = function(d) { + this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1; + var _ = this.lastEach; + if (this.indexes[_] = 0, !!this.nodes) { + for (var S, x; this.indexes[_] < this.nodes.length && (S = this.indexes[_], x = d(this.nodes[S], S), x !== false); ) + this.indexes[_] += 1; + return delete this.indexes[_], x; + } + }, y.walk = function(d) { + return this.each(function(_, S) { + var x; + try { + x = d(_, S); + } catch (P) { + if (P.postcssNode = _, P.stack && _.source && /\n\s{4}at /.test(P.stack)) { + var N = _.source; + P.stack = P.stack.replace(/\n\s{4}at /, "$&" + N.input.from + ":" + N.start.line + ":" + N.start.column + "$&"); + } + throw P; + } + return x !== false && _.walk && (x = _.walk(d)), x; + }); + }, y.walkDecls = function(d, _) { + return _ ? d instanceof RegExp ? this.walk(function(S, x) { + if (S.type === "decl" && d.test(S.prop)) + return _(S, x); + }) : this.walk(function(S, x) { + if (S.type === "decl" && S.prop === d) + return _(S, x); + }) : (_ = d, this.walk(function(S, x) { + if (S.type === "decl") + return _(S, x); + })); + }, y.walkRules = function(d, _) { + return _ ? d instanceof RegExp ? this.walk(function(S, x) { + if (S.type === "rule" && d.test(S.selector)) + return _(S, x); + }) : this.walk(function(S, x) { + if (S.type === "rule" && S.selector === d) + return _(S, x); + }) : (_ = d, this.walk(function(S, x) { + if (S.type === "rule") + return _(S, x); + })); + }, y.walkAtRules = function(d, _) { + return _ ? d instanceof RegExp ? this.walk(function(S, x) { + if (S.type === "atrule" && d.test(S.name)) + return _(S, x); + }) : this.walk(function(S, x) { + if (S.type === "atrule" && S.name === d) + return _(S, x); + }) : (_ = d, this.walk(function(S, x) { + if (S.type === "atrule") + return _(S, x); + })); + }, y.walkComments = function(d) { + return this.walk(function(_, S) { + if (_.type === "comment") + return d(_, S); + }); + }, y.append = function() { + for (var d = arguments.length, _ = new Array(d), S = 0; S < d; S++) + _[S] = arguments[S]; + for (var x = 0, N = _; x < N.length; x++) + for (var P = N[x], W = this.normalize(P, this.last), U = p(W), H; !(H = U()).done; ) { + var D = H.value; + this.nodes.push(D); + } + return this; + }, y.prepend = function() { + for (var d = arguments.length, _ = new Array(d), S = 0; S < d; S++) + _[S] = arguments[S]; + _ = _.reverse(); + for (var x = p(_), N; !(N = x()).done; ) { + for (var P = N.value, W = this.normalize(P, this.first, "prepend").reverse(), U = p(W), H; !(H = U()).done; ) { + var D = H.value; + this.nodes.unshift(D); + } + for (var $ in this.indexes) + this.indexes[$] = this.indexes[$] + W.length; + } + return this; + }, y.cleanRaws = function(d) { + if (m.prototype.cleanRaws.call(this, d), this.nodes) + for (var _ = p(this.nodes), S; !(S = _()).done; ) { + var x = S.value; + x.cleanRaws(d); + } + }, y.insertBefore = function(d, _) { + d = this.index(d); + for (var S = d === 0 ? "prepend" : false, x = this.normalize(_, this.nodes[d], S).reverse(), N = p(x), P; !(P = N()).done; ) { + var W = P.value; + this.nodes.splice(d, 0, W); + } + var U; + for (var H in this.indexes) + U = this.indexes[H], d <= U && (this.indexes[H] = U + x.length); + return this; + }, y.insertAfter = function(d, _) { + d = this.index(d); + for (var S = this.normalize(_, this.nodes[d]).reverse(), x = p(S), N; !(N = x()).done; ) { + var P = N.value; + this.nodes.splice(d + 1, 0, P); + } + var W; + for (var U in this.indexes) + W = this.indexes[U], d < W && (this.indexes[U] = W + S.length); + return this; + }, y.removeChild = function(d) { + d = this.index(d), this.nodes[d].parent = void 0, this.nodes.splice(d, 1); + var _; + for (var S in this.indexes) + _ = this.indexes[S], _ >= d && (this.indexes[S] = _ - 1); + return this; + }, y.removeAll = function() { + for (var d = p(this.nodes), _; !(_ = d()).done; ) { + var S = _.value; + S.parent = void 0; + } + return this.nodes = [], this; + }, y.replaceValues = function(d, _, S) { + return S || (S = _, _ = {}), this.walkDecls(function(x) { + _.props && _.props.indexOf(x.prop) === -1 || _.fast && x.value.indexOf(_.fast) === -1 || (x.value = x.value.replace(d, S)); + }), this; + }, y.every = function(d) { + return this.nodes.every(d); + }, y.some = function(d) { + return this.nodes.some(d); + }, y.index = function(d) { + return typeof d == "number" ? d : this.nodes.indexOf(d); + }, y.normalize = function(d, _) { + var S = this; + if (typeof d == "string") { + var x = ra(); + d = u(x(d).nodes); + } else if (Array.isArray(d)) { + d = d.slice(0); + for (var N = p(d), P; !(P = N()).done; ) { + var W = P.value; + W.parent && W.parent.removeChild(W, "ignore"); + } + } else if (d.type === "root") { + d = d.nodes.slice(0); + for (var U = p(d), H; !(H = U()).done; ) { + var D = H.value; + D.parent && D.parent.removeChild(D, "ignore"); + } + } else if (d.type) + d = [d]; + else if (d.prop) { + if (typeof d.value > "u") + throw new Error("Value field is missed in node creation"); + typeof d.value != "string" && (d.value = String(d.value)), d = [new i.default(d)]; + } else if (d.selector) { + var $ = ta(); + d = [new $(d)]; + } else if (d.name) { + var B = na(); + d = [new B(d)]; + } else if (d.text) + d = [new a.default(d)]; + else + throw new Error("Unknown node type in node creation"); + var O = d.map(function(j) { + return j.parent && j.parent.removeChild(j), typeof j.raws.before > "u" && _ && typeof _.raws.before < "u" && (j.raws.before = _.raws.before.replace(/[^\s]/g, "")), j.parent = S, j; + }); + return O; + }, t(v, [{ key: "first", get: function() { + if (!!this.nodes) + return this.nodes[0]; + } }, { key: "last", get: function() { + if (!!this.nodes) + return this.nodes[this.nodes.length - 1]; + } }]), v; + }(o.default), l = s; + e.default = l, n.exports = e.default; + } }), na = R({ "node_modules/postcss/lib/at-rule.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = a(kr()); + function a(h) { + return h && h.__esModule ? h : { default: h }; + } + function o(h, g) { + h.prototype = Object.create(g.prototype), h.prototype.constructor = h, h.__proto__ = g; + } + var f = function(h) { + o(g, h); + function g(t) { + var r; + return r = h.call(this, t) || this, r.type = "atrule", r; + } + var c = g.prototype; + return c.append = function() { + var r; + this.nodes || (this.nodes = []); + for (var u = arguments.length, s = new Array(u), l = 0; l < u; l++) + s[l] = arguments[l]; + return (r = h.prototype.append).call.apply(r, [this].concat(s)); + }, c.prepend = function() { + var r; + this.nodes || (this.nodes = []); + for (var u = arguments.length, s = new Array(u), l = 0; l < u; l++) + s[l] = arguments[l]; + return (r = h.prototype.prepend).call.apply(r, [this].concat(s)); + }, g; + }(i.default), p = f; + e.default = p, n.exports = e.default; + } }), Sf = R({ "node_modules/postcss/lib/map-generator.js"(e, n) { + A(), n.exports = class { + generate() { + } + }; + } }), Of = R({ "node_modules/postcss/lib/warn-once.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = a; + var i = {}; + function a(o) { + i[o] || (i[o] = true, typeof console < "u" && console.warn && console.warn(o)); + } + n.exports = e.default; + } }), Tf = R({ "node_modules/postcss/lib/warning.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = function() { + function o(p, h) { + if (h === void 0 && (h = {}), this.type = "warning", this.text = p, h.node && h.node.source) { + var g = h.node.positionBy(h); + this.line = g.line, this.column = g.column; + } + for (var c in h) + this[c] = h[c]; + } + var f = o.prototype; + return f.toString = function() { + return this.node ? this.node.error(this.text, { plugin: this.plugin, index: this.index, word: this.word }).message : this.plugin ? this.plugin + ": " + this.text : this.text; + }, o; + }(), a = i; + e.default = a, n.exports = e.default; + } }), Ef = R({ "node_modules/postcss/lib/result.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = a(Tf()); + function a(g) { + return g && g.__esModule ? g : { default: g }; + } + function o(g, c) { + for (var t = 0; t < c.length; t++) { + var r = c[t]; + r.enumerable = r.enumerable || false, r.configurable = true, "value" in r && (r.writable = true), Object.defineProperty(g, r.key, r); + } + } + function f(g, c, t) { + return c && o(g.prototype, c), t && o(g, t), g; + } + var p = function() { + function g(t, r, u) { + this.processor = t, this.messages = [], this.root = r, this.opts = u, this.css = void 0, this.map = void 0; + } + var c = g.prototype; + return c.toString = function() { + return this.css; + }, c.warn = function(r, u) { + u === void 0 && (u = {}), u.plugin || this.lastPlugin && this.lastPlugin.postcssPlugin && (u.plugin = this.lastPlugin.postcssPlugin); + var s = new i.default(r, u); + return this.messages.push(s), s; + }, c.warnings = function() { + return this.messages.filter(function(r) { + return r.type === "warning"; + }); + }, f(g, [{ key: "content", get: function() { + return this.css; + } }]), g; + }(), h = p; + e.default = h, n.exports = e.default; + } }), ia = R({ "node_modules/postcss/lib/lazy-result.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = h(Sf()), a = h(Zo()), o = h(Of()), f = h(Ef()), p = h(ra()); + function h(v) { + return v && v.__esModule ? v : { default: v }; + } + function g(v, y) { + var w; + if (typeof Symbol > "u" || v[Symbol.iterator] == null) { + if (Array.isArray(v) || (w = c(v)) || y && v && typeof v.length == "number") { + w && (v = w); + var d = 0; + return function() { + return d >= v.length ? { done: true } : { done: false, value: v[d++] }; + }; + } + throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + } + return w = v[Symbol.iterator](), w.next.bind(w); + } + function c(v, y) { + if (!!v) { + if (typeof v == "string") + return t(v, y); + var w = Object.prototype.toString.call(v).slice(8, -1); + if (w === "Object" && v.constructor && (w = v.constructor.name), w === "Map" || w === "Set") + return Array.from(v); + if (w === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(w)) + return t(v, y); + } + } + function t(v, y) { + (y == null || y > v.length) && (y = v.length); + for (var w = 0, d = new Array(y); w < y; w++) + d[w] = v[w]; + return d; + } + function r(v, y) { + for (var w = 0; w < y.length; w++) { + var d = y[w]; + d.enumerable = d.enumerable || false, d.configurable = true, "value" in d && (d.writable = true), Object.defineProperty(v, d.key, d); + } + } + function u(v, y, w) { + return y && r(v.prototype, y), w && r(v, w), v; + } + function s(v) { + return typeof v == "object" && typeof v.then == "function"; + } + var l = function() { + function v(w, d, _) { + this.stringified = false, this.processed = false; + var S; + if (typeof d == "object" && d !== null && d.type === "root") + S = d; + else if (d instanceof v || d instanceof f.default) + S = d.root, d.map && (typeof _.map > "u" && (_.map = {}), _.map.inline || (_.map.inline = false), _.map.prev = d.map); + else { + var x = p.default; + _.syntax && (x = _.syntax.parse), _.parser && (x = _.parser), x.parse && (x = x.parse); + try { + S = x(d, _); + } catch (N) { + this.error = N; + } + } + this.result = new f.default(w, S, _); + } + var y = v.prototype; + return y.warnings = function() { + return this.sync().warnings(); + }, y.toString = function() { + return this.css; + }, y.then = function(d, _) { + return this.async().then(d, _); + }, y.catch = function(d) { + return this.async().catch(d); + }, y.finally = function(d) { + return this.async().then(d, d); + }, y.handleError = function(d, _) { + try { + if (this.error = d, d.name === "CssSyntaxError" && !d.plugin) + d.plugin = _.postcssPlugin, d.setMessage(); + else if (_.postcssVersion && false) + var S, x, N, P, W; + } catch (U) { + console && console.error && console.error(U); + } + }, y.asyncTick = function(d, _) { + var S = this; + if (this.plugin >= this.processor.plugins.length) + return this.processed = true, d(); + try { + var x = this.processor.plugins[this.plugin], N = this.run(x); + this.plugin += 1, s(N) ? N.then(function() { + S.asyncTick(d, _); + }).catch(function(P) { + S.handleError(P, x), S.processed = true, _(P); + }) : this.asyncTick(d, _); + } catch (P) { + this.processed = true, _(P); + } + }, y.async = function() { + var d = this; + return this.processed ? new Promise(function(_, S) { + d.error ? S(d.error) : _(d.stringify()); + }) : this.processing ? this.processing : (this.processing = new Promise(function(_, S) { + if (d.error) + return S(d.error); + d.plugin = 0, d.asyncTick(_, S); + }).then(function() { + return d.processed = true, d.stringify(); + }), this.processing); + }, y.sync = function() { + if (this.processed) + return this.result; + if (this.processed = true, this.processing) + throw new Error("Use process(css).then(cb) to work with async plugins"); + if (this.error) + throw this.error; + for (var d = g(this.result.processor.plugins), _; !(_ = d()).done; ) { + var S = _.value, x = this.run(S); + if (s(x)) + throw new Error("Use process(css).then(cb) to work with async plugins"); + } + return this.result; + }, y.run = function(d) { + this.result.lastPlugin = d; + try { + return d(this.result.root, this.result); + } catch (_) { + throw this.handleError(_, d), _; + } + }, y.stringify = function() { + if (this.stringified) + return this.result; + this.stringified = true, this.sync(); + var d = this.result.opts, _ = a.default; + d.syntax && (_ = d.syntax.stringify), d.stringifier && (_ = d.stringifier), _.stringify && (_ = _.stringify); + var S = new i.default(_, this.result.root, this.result.opts), x = S.generate(); + return this.result.css = x[0], this.result.map = x[1], this.result; + }, u(v, [{ key: "processor", get: function() { + return this.result.processor; + } }, { key: "opts", get: function() { + return this.result.opts; + } }, { key: "css", get: function() { + return this.stringify().css; + } }, { key: "content", get: function() { + return this.stringify().content; + } }, { key: "map", get: function() { + return this.stringify().map; + } }, { key: "root", get: function() { + return this.sync().root; + } }, { key: "messages", get: function() { + return this.sync().messages; + } }]), v; + }(), m = l; + e.default = m, n.exports = e.default; + } }), qf = R({ "node_modules/postcss/lib/processor.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = a(ia()); + function a(c) { + return c && c.__esModule ? c : { default: c }; + } + function o(c, t) { + var r; + if (typeof Symbol > "u" || c[Symbol.iterator] == null) { + if (Array.isArray(c) || (r = f(c)) || t && c && typeof c.length == "number") { + r && (c = r); + var u = 0; + return function() { + return u >= c.length ? { done: true } : { done: false, value: c[u++] }; + }; + } + throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + } + return r = c[Symbol.iterator](), r.next.bind(r); + } + function f(c, t) { + if (!!c) { + if (typeof c == "string") + return p(c, t); + var r = Object.prototype.toString.call(c).slice(8, -1); + if (r === "Object" && c.constructor && (r = c.constructor.name), r === "Map" || r === "Set") + return Array.from(c); + if (r === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) + return p(c, t); + } + } + function p(c, t) { + (t == null || t > c.length) && (t = c.length); + for (var r = 0, u = new Array(t); r < t; r++) + u[r] = c[r]; + return u; + } + var h = function() { + function c(r) { + r === void 0 && (r = []), this.version = "7.0.39", this.plugins = this.normalize(r); + } + var t = c.prototype; + return t.use = function(u) { + return this.plugins = this.plugins.concat(this.normalize([u])), this; + }, t.process = function(r) { + function u(s) { + return r.apply(this, arguments); + } + return u.toString = function() { + return r.toString(); + }, u; + }(function(r, u) { + return u === void 0 && (u = {}), this.plugins.length === 0 && (u.parser, u.stringifier), new i.default(this, r, u); + }), t.normalize = function(u) { + for (var s = [], l = o(u), m; !(m = l()).done; ) { + var v = m.value; + if (v.postcss === true) { + var y = v(); + throw new Error("PostCSS plugin " + y.postcssPlugin + ` requires PostCSS 8. +Migration guide for end-users: +https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users`); + } + if (v.postcss && (v = v.postcss), typeof v == "object" && Array.isArray(v.plugins)) + s = s.concat(v.plugins); + else if (typeof v == "function") + s.push(v); + else if (!(typeof v == "object" && (v.parse || v.stringify))) + throw typeof v == "object" && v.postcssPlugin ? new Error("PostCSS plugin " + v.postcssPlugin + ` requires PostCSS 8. +Migration guide for end-users: +https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users`) : new Error(v + " is not a PostCSS plugin"); + } + return s; + }, c; + }(), g = h; + e.default = g, n.exports = e.default; + } }), Af = R({ "node_modules/postcss/lib/root.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = a(kr()); + function a(t) { + return t && t.__esModule ? t : { default: t }; + } + function o(t, r) { + var u; + if (typeof Symbol > "u" || t[Symbol.iterator] == null) { + if (Array.isArray(t) || (u = f(t)) || r && t && typeof t.length == "number") { + u && (t = u); + var s = 0; + return function() { + return s >= t.length ? { done: true } : { done: false, value: t[s++] }; + }; + } + throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + } + return u = t[Symbol.iterator](), u.next.bind(u); + } + function f(t, r) { + if (!!t) { + if (typeof t == "string") + return p(t, r); + var u = Object.prototype.toString.call(t).slice(8, -1); + if (u === "Object" && t.constructor && (u = t.constructor.name), u === "Map" || u === "Set") + return Array.from(t); + if (u === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(u)) + return p(t, r); + } + } + function p(t, r) { + (r == null || r > t.length) && (r = t.length); + for (var u = 0, s = new Array(r); u < r; u++) + s[u] = t[u]; + return s; + } + function h(t, r) { + t.prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; + } + var g = function(t) { + h(r, t); + function r(s) { + var l; + return l = t.call(this, s) || this, l.type = "root", l.nodes || (l.nodes = []), l; + } + var u = r.prototype; + return u.removeChild = function(l, m) { + var v = this.index(l); + return !m && v === 0 && this.nodes.length > 1 && (this.nodes[1].raws.before = this.nodes[v].raws.before), t.prototype.removeChild.call(this, l); + }, u.normalize = function(l, m, v) { + var y = t.prototype.normalize.call(this, l); + if (m) { + if (v === "prepend") + this.nodes.length > 1 ? m.raws.before = this.nodes[1].raws.before : delete m.raws.before; + else if (this.first !== m) + for (var w = o(y), d; !(d = w()).done; ) { + var _ = d.value; + _.raws.before = m.raws.before; + } + } + return y; + }, u.toResult = function(l) { + l === void 0 && (l = {}); + var m = ia(), v = qf(), y = new m(new v(), this, l); + return y.stringify(); + }, r; + }(i.default), c = g; + e.default = c, n.exports = e.default; + } }), zt = R({ "node_modules/postcss/lib/parser.js"(e, n) { + "use strict"; + A(), e.__esModule = true, e.default = void 0; + var i = g(ea()), a = g(Lt()), o = g(xr()), f = g(na()), p = g(Af()), h = g(ta()); + function g(t) { + return t && t.__esModule ? t : { default: t }; + } + var c = function() { + function t(u) { + this.input = u, this.root = new p.default(), this.current = this.root, this.spaces = "", this.semicolon = false, this.createTokenizer(), this.root.source = { input: u, start: { line: 1, column: 1 } }; + } + var r = t.prototype; + return r.createTokenizer = function() { + this.tokenizer = (0, a.default)(this.input); + }, r.parse = function() { + for (var s; !this.tokenizer.endOfFile(); ) + switch (s = this.tokenizer.nextToken(), s[0]) { + case "space": + this.spaces += s[1]; + break; + case ";": + this.freeSemicolon(s); + break; + case "}": + this.end(s); + break; + case "comment": + this.comment(s); + break; + case "at-word": + this.atrule(s); + break; + case "{": + this.emptyRule(s); + break; + default: + this.other(s); + break; + } + this.endFile(); + }, r.comment = function(s) { + var l = new o.default(); + this.init(l, s[2], s[3]), l.source.end = { line: s[4], column: s[5] }; + var m = s[1].slice(2, -2); + if (/^\s*$/.test(m)) + l.text = "", l.raws.left = m, l.raws.right = ""; + else { + var v = m.match(/^(\s*)([^]*[^\s])(\s*)$/); + l.text = v[2], l.raws.left = v[1], l.raws.right = v[3]; + } + }, r.emptyRule = function(s) { + var l = new h.default(); + this.init(l, s[2], s[3]), l.selector = "", l.raws.between = "", this.current = l; + }, r.other = function(s) { + for (var l = false, m = null, v = false, y = null, w = [], d = [], _ = s; _; ) { + if (m = _[0], d.push(_), m === "(" || m === "[") + y || (y = _), w.push(m === "(" ? ")" : "]"); + else if (w.length === 0) + if (m === ";") + if (v) { + this.decl(d); + return; + } else + break; + else if (m === "{") { + this.rule(d); + return; + } else if (m === "}") { + this.tokenizer.back(d.pop()), l = true; + break; + } else + m === ":" && (v = true); + else + m === w[w.length - 1] && (w.pop(), w.length === 0 && (y = null)); + _ = this.tokenizer.nextToken(); + } + if (this.tokenizer.endOfFile() && (l = true), w.length > 0 && this.unclosedBracket(y), l && v) { + for (; d.length && (_ = d[d.length - 1][0], !(_ !== "space" && _ !== "comment")); ) + this.tokenizer.back(d.pop()); + this.decl(d); + } else + this.unknownWord(d); + }, r.rule = function(s) { + s.pop(); + var l = new h.default(); + this.init(l, s[0][2], s[0][3]), l.raws.between = this.spacesAndCommentsFromEnd(s), this.raw(l, "selector", s), this.current = l; + }, r.decl = function(s) { + var l = new i.default(); + this.init(l); + var m = s[s.length - 1]; + for (m[0] === ";" && (this.semicolon = true, s.pop()), m[4] ? l.source.end = { line: m[4], column: m[5] } : l.source.end = { line: m[2], column: m[3] }; s[0][0] !== "word"; ) + s.length === 1 && this.unknownWord(s), l.raws.before += s.shift()[1]; + for (l.source.start = { line: s[0][2], column: s[0][3] }, l.prop = ""; s.length; ) { + var v = s[0][0]; + if (v === ":" || v === "space" || v === "comment") + break; + l.prop += s.shift()[1]; + } + l.raws.between = ""; + for (var y; s.length; ) + if (y = s.shift(), y[0] === ":") { + l.raws.between += y[1]; + break; + } else + y[0] === "word" && /\w/.test(y[1]) && this.unknownWord([y]), l.raws.between += y[1]; + (l.prop[0] === "_" || l.prop[0] === "*") && (l.raws.before += l.prop[0], l.prop = l.prop.slice(1)), l.raws.between += this.spacesAndCommentsFromStart(s), this.precheckMissedSemicolon(s); + for (var w = s.length - 1; w > 0; w--) { + if (y = s[w], y[1].toLowerCase() === "!important") { + l.important = true; + var d = this.stringFrom(s, w); + d = this.spacesFromEnd(s) + d, d !== " !important" && (l.raws.important = d); + break; + } else if (y[1].toLowerCase() === "important") { + for (var _ = s.slice(0), S = "", x = w; x > 0; x--) { + var N = _[x][0]; + if (S.trim().indexOf("!") === 0 && N !== "space") + break; + S = _.pop()[1] + S; + } + S.trim().indexOf("!") === 0 && (l.important = true, l.raws.important = S, s = _); + } + if (y[0] !== "space" && y[0] !== "comment") + break; + } + this.raw(l, "value", s), l.value.indexOf(":") !== -1 && this.checkMissedSemicolon(s); + }, r.atrule = function(s) { + var l = new f.default(); + l.name = s[1].slice(1), l.name === "" && this.unnamedAtrule(l, s), this.init(l, s[2], s[3]); + for (var m, v, y = false, w = false, d = []; !this.tokenizer.endOfFile(); ) { + if (s = this.tokenizer.nextToken(), s[0] === ";") { + l.source.end = { line: s[2], column: s[3] }, this.semicolon = true; + break; + } else if (s[0] === "{") { + w = true; + break; + } else if (s[0] === "}") { + if (d.length > 0) { + for (v = d.length - 1, m = d[v]; m && m[0] === "space"; ) + m = d[--v]; + m && (l.source.end = { line: m[4], column: m[5] }); + } + this.end(s); + break; + } else + d.push(s); + if (this.tokenizer.endOfFile()) { + y = true; + break; + } + } + l.raws.between = this.spacesAndCommentsFromEnd(d), d.length ? (l.raws.afterName = this.spacesAndCommentsFromStart(d), this.raw(l, "params", d), y && (s = d[d.length - 1], l.source.end = { line: s[4], column: s[5] }, this.spaces = l.raws.between, l.raws.between = "")) : (l.raws.afterName = "", l.params = ""), w && (l.nodes = [], this.current = l); + }, r.end = function(s) { + this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.semicolon = false, this.current.raws.after = (this.current.raws.after || "") + this.spaces, this.spaces = "", this.current.parent ? (this.current.source.end = { line: s[2], column: s[3] }, this.current = this.current.parent) : this.unexpectedClose(s); + }, r.endFile = function() { + this.current.parent && this.unclosedBlock(), this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.current.raws.after = (this.current.raws.after || "") + this.spaces; + }, r.freeSemicolon = function(s) { + if (this.spaces += s[1], this.current.nodes) { + var l = this.current.nodes[this.current.nodes.length - 1]; + l && l.type === "rule" && !l.raws.ownSemicolon && (l.raws.ownSemicolon = this.spaces, this.spaces = ""); + } + }, r.init = function(s, l, m) { + this.current.push(s), s.source = { start: { line: l, column: m }, input: this.input }, s.raws.before = this.spaces, this.spaces = "", s.type !== "comment" && (this.semicolon = false); + }, r.raw = function(s, l, m) { + for (var v, y, w = m.length, d = "", _ = true, S, x, N = /^([.|#])?([\w])+/i, P = 0; P < w; P += 1) { + if (v = m[P], y = v[0], y === "comment" && s.type === "rule") { + x = m[P - 1], S = m[P + 1], x[0] !== "space" && S[0] !== "space" && N.test(x[1]) && N.test(S[1]) ? d += v[1] : _ = false; + continue; + } + y === "comment" || y === "space" && P === w - 1 ? _ = false : d += v[1]; + } + if (!_) { + var W = m.reduce(function(U, H) { + return U + H[1]; + }, ""); + s.raws[l] = { value: d, raw: W }; + } + s[l] = d; + }, r.spacesAndCommentsFromEnd = function(s) { + for (var l, m = ""; s.length && (l = s[s.length - 1][0], !(l !== "space" && l !== "comment")); ) + m = s.pop()[1] + m; + return m; + }, r.spacesAndCommentsFromStart = function(s) { + for (var l, m = ""; s.length && (l = s[0][0], !(l !== "space" && l !== "comment")); ) + m += s.shift()[1]; + return m; + }, r.spacesFromEnd = function(s) { + for (var l, m = ""; s.length && (l = s[s.length - 1][0], l === "space"); ) + m = s.pop()[1] + m; + return m; + }, r.stringFrom = function(s, l) { + for (var m = "", v = l; v < s.length; v++) + m += s[v][1]; + return s.splice(l, s.length - l), m; + }, r.colon = function(s) { + for (var l = 0, m, v, y, w = 0; w < s.length; w++) { + if (m = s[w], v = m[0], v === "(" && (l += 1), v === ")" && (l -= 1), l === 0 && v === ":") + if (!y) + this.doubleColon(m); + else { + if (y[0] === "word" && y[1] === "progid") + continue; + return w; + } + y = m; + } + return false; + }, r.unclosedBracket = function(s) { + throw this.input.error("Unclosed bracket", s[2], s[3]); + }, r.unknownWord = function(s) { + throw this.input.error("Unknown word", s[0][2], s[0][3]); + }, r.unexpectedClose = function(s) { + throw this.input.error("Unexpected }", s[2], s[3]); + }, r.unclosedBlock = function() { + var s = this.current.source.start; + throw this.input.error("Unclosed block", s.line, s.column); + }, r.doubleColon = function(s) { + throw this.input.error("Double colon", s[2], s[3]); + }, r.unnamedAtrule = function(s, l) { + throw this.input.error("At-rule without name", l[2], l[3]); + }, r.precheckMissedSemicolon = function() { + }, r.checkMissedSemicolon = function(s) { + var l = this.colon(s); + if (l !== false) { + for (var m = 0, v, y = l - 1; y >= 0 && (v = s[y], !(v[0] !== "space" && (m += 1, m === 2))); y--) + ; + throw this.input.error("Missed semicolon", v[2], v[3]); + } + }, t; + }(); + e.default = c, n.exports = e.default; + } }), Pf = R({ "node_modules/postcss-less/lib/nodes/inline-comment.js"(e, n) { + A(); + var i = Lt(), a = _r(); + n.exports = { isInlineComment(o) { + if (o[0] === "word" && o[1].slice(0, 2) === "//") { + let f = o, p = [], h; + for (; o; ) { + if (/\r?\n/.test(o[1])) { + if (/['"].*\r?\n/.test(o[1])) { + p.push(o[1].substring(0, o[1].indexOf(` +`))); + let c = o[1].substring(o[1].indexOf(` +`)); + c += this.input.css.valueOf().substring(this.tokenizer.position()), this.input = new a(c), this.tokenizer = i(this.input); + } else + this.tokenizer.back(o); + break; + } + p.push(o[1]), h = o, o = this.tokenizer.nextToken({ ignoreUnclosed: true }); + } + let g = ["comment", p.join(""), f[2], f[3], h[2], h[3]]; + return this.inlineComment(g), true; + } else if (o[1] === "/") { + let f = this.tokenizer.nextToken({ ignoreUnclosed: true }); + if (f[0] === "comment" && /^\/\*/.test(f[1])) + return f[0] = "word", f[1] = f[1].slice(1), o[1] = "//", this.tokenizer.back(f), n.exports.isInlineComment.bind(this)(o); + } + return false; + } }; + } }), Rf = R({ "node_modules/postcss-less/lib/nodes/interpolation.js"(e, n) { + A(), n.exports = { interpolation(i) { + let a = i, o = [i], f = ["word", "{", "}"]; + if (i = this.tokenizer.nextToken(), a[1].length > 1 || i[0] !== "{") + return this.tokenizer.back(i), false; + for (; i && f.includes(i[0]); ) + o.push(i), i = this.tokenizer.nextToken(); + let p = o.map((r) => r[1]); + [a] = o; + let h = o.pop(), g = [a[2], a[3]], c = [h[4] || h[2], h[5] || h[3]], t = ["word", p.join("")].concat(g, c); + return this.tokenizer.back(i), this.tokenizer.back(t), true; + } }; + } }), If = R({ "node_modules/postcss-less/lib/nodes/mixin.js"(e, n) { + A(); + var i = /^#[0-9a-fA-F]{6}$|^#[0-9a-fA-F]{3}$/, a = /\.[0-9]/, o = (f) => { + let [, p] = f, [h] = p; + return (h === "." || h === "#") && i.test(p) === false && a.test(p) === false; + }; + n.exports = { isMixinToken: o }; + } }), Cf = R({ "node_modules/postcss-less/lib/nodes/import.js"(e, n) { + A(); + var i = Lt(), a = /^url\((.+)\)/; + n.exports = (o) => { + let { name: f, params: p = "" } = o; + if (f === "import" && p.length) { + o.import = true; + let h = i({ css: p }); + for (o.filename = p.replace(a, "$1"); !h.endOfFile(); ) { + let [g, c] = h.nextToken(); + if (g === "word" && c === "url") + return; + if (g === "brackets") { + o.options = c, o.filename = p.replace(c, "").trim(); + break; + } + } + } + }; + } }), Nf = R({ "node_modules/postcss-less/lib/nodes/variable.js"(e, n) { + A(); + var i = /:$/, a = /^:(\s+)?/; + n.exports = (o) => { + let { name: f, params: p = "" } = o; + if (o.name.slice(-1) === ":") { + if (i.test(f)) { + let [h] = f.match(i); + o.name = f.replace(h, ""), o.raws.afterName = h + (o.raws.afterName || ""), o.variable = true, o.value = o.params; + } + if (a.test(p)) { + let [h] = p.match(a); + o.value = p.replace(h, ""), o.raws.afterName = (o.raws.afterName || "") + h, o.variable = true; + } + } + }; + } }), jf = R({ "node_modules/postcss-less/lib/LessParser.js"(e, n) { + A(); + var i = xr(), a = zt(), { isInlineComment: o } = Pf(), { interpolation: f } = Rf(), { isMixinToken: p } = If(), h = Cf(), g = Nf(), c = /(!\s*important)$/i; + n.exports = class extends a { + constructor() { + super(...arguments), this.lastNode = null; + } + atrule(r) { + f.bind(this)(r) || (super.atrule(r), h(this.lastNode), g(this.lastNode)); + } + decl() { + super.decl(...arguments), /extend\(.+\)/i.test(this.lastNode.value) && (this.lastNode.extend = true); + } + each(r) { + r[0][1] = " ".concat(r[0][1]); + let u = r.findIndex((y) => y[0] === "("), s = r.reverse().find((y) => y[0] === ")"), l = r.reverse().indexOf(s), v = r.splice(u, l).map((y) => y[1]).join(""); + for (let y of r.reverse()) + this.tokenizer.back(y); + this.atrule(this.tokenizer.nextToken()), this.lastNode.function = true, this.lastNode.params = v; + } + init(r, u, s) { + super.init(r, u, s), this.lastNode = r; + } + inlineComment(r) { + let u = new i(), s = r[1].slice(2); + if (this.init(u, r[2], r[3]), u.source.end = { line: r[4], column: r[5] }, u.inline = true, u.raws.begin = "//", /^\s*$/.test(s)) + u.text = "", u.raws.left = s, u.raws.right = ""; + else { + let l = s.match(/^(\s*)([^]*[^\s])(\s*)$/); + [, u.raws.left, u.text, u.raws.right] = l; + } + } + mixin(r) { + let [u] = r, s = u[1].slice(0, 1), l = r.findIndex((d) => d[0] === "brackets"), m = r.findIndex((d) => d[0] === "("), v = ""; + if ((l < 0 || l > 3) && m > 0) { + let d = r.reduce(($, B, O) => B[0] === ")" ? O : $), S = r.slice(m, d + m).map(($) => $[1]).join(""), [x] = r.slice(m), N = [x[2], x[3]], [P] = r.slice(d, d + 1), W = [P[2], P[3]], U = ["brackets", S].concat(N, W), H = r.slice(0, m), D = r.slice(d + 1); + r = H, r.push(U), r = r.concat(D); + } + let y = []; + for (let d of r) + if ((d[1] === "!" || y.length) && y.push(d), d[1] === "important") + break; + if (y.length) { + let [d] = y, _ = r.indexOf(d), S = y[y.length - 1], x = [d[2], d[3]], N = [S[4], S[5]], P = y.map((U) => U[1]).join(""), W = ["word", P].concat(x, N); + r.splice(_, y.length, W); + } + let w = r.findIndex((d) => c.test(d[1])); + w > 0 && ([, v] = r[w], r.splice(w, 1)); + for (let d of r.reverse()) + this.tokenizer.back(d); + this.atrule(this.tokenizer.nextToken()), this.lastNode.mixin = true, this.lastNode.raws.identifier = s, v && (this.lastNode.important = true, this.lastNode.raws.important = v); + } + other(r) { + o.bind(this)(r) || super.other(r); + } + rule(r) { + let u = r[r.length - 1], s = r[r.length - 2]; + if (s[0] === "at-word" && u[0] === "{" && (this.tokenizer.back(u), f.bind(this)(s))) { + let m = this.tokenizer.nextToken(); + r = r.slice(0, r.length - 2).concat([m]); + for (let v of r.reverse()) + this.tokenizer.back(v); + return; + } + super.rule(r), /:extend\(.+\)/i.test(this.lastNode.selector) && (this.lastNode.extend = true); + } + unknownWord(r) { + let [u] = r; + if (r[0][1] === "each" && r[1][0] === "(") { + this.each(r); + return; + } + if (p(u)) { + this.mixin(r); + return; + } + super.unknownWord(r); + } + }; + } }), Mf = R({ "node_modules/postcss-less/lib/LessStringifier.js"(e, n) { + A(); + var i = br(); + n.exports = class extends i { + atrule(o, f) { + if (!o.mixin && !o.variable && !o.function) { + super.atrule(o, f); + return; + } + let p = o.function ? "" : o.raws.identifier || "@", h = "".concat(p).concat(o.name), g = o.params ? this.rawValue(o, "params") : "", c = o.raws.important || ""; + if (o.variable && (g = o.value), typeof o.raws.afterName < "u" ? h += o.raws.afterName : g && (h += " "), o.nodes) + this.block(o, h + g + c); + else { + let t = (o.raws.between || "") + c + (f ? ";" : ""); + this.builder(h + g + t, o); + } + } + comment(o) { + if (o.inline) { + let f = this.raw(o, "left", "commentLeft"), p = this.raw(o, "right", "commentRight"); + this.builder("//".concat(f).concat(o.text).concat(p), o); + } else + super.comment(o); + } + }; + } }), Df = R({ "node_modules/postcss-less/lib/index.js"(e, n) { + A(); + var i = _r(), a = jf(), o = Mf(); + n.exports = { parse(f, p) { + let h = new i(f, p), g = new a(h); + return g.parse(), g.root; + }, stringify(f, p) { + new o(p).stringify(f); + }, nodeToString(f) { + let p = ""; + return n.exports.stringify(f, (h) => { + p += h; + }), p; + } }; + } }), Lf = R({ "node_modules/postcss-scss/lib/scss-stringifier.js"(e, n) { + "use strict"; + A(); + function i(f, p) { + f.prototype = Object.create(p.prototype), f.prototype.constructor = f, f.__proto__ = p; + } + var a = br(), o = function(f) { + i(p, f); + function p() { + return f.apply(this, arguments) || this; + } + var h = p.prototype; + return h.comment = function(c) { + var t = this.raw(c, "left", "commentLeft"), r = this.raw(c, "right", "commentRight"); + if (c.raws.inline) { + var u = c.raws.text || c.text; + this.builder("//" + t + u + r, c); + } else + this.builder("/*" + t + c.text + r + "*/", c); + }, h.decl = function(c, t) { + if (!c.isNested) + f.prototype.decl.call(this, c, t); + else { + var r = this.raw(c, "between", "colon"), u = c.prop + r + this.rawValue(c, "value"); + c.important && (u += c.raws.important || " !important"), this.builder(u + "{", c, "start"); + var s; + c.nodes && c.nodes.length ? (this.body(c), s = this.raw(c, "after")) : s = this.raw(c, "after", "emptyBody"), s && this.builder(s), this.builder("}", c, "end"); + } + }, h.rawValue = function(c, t) { + var r = c[t], u = c.raws[t]; + return u && u.value === r ? u.scss ? u.scss : u.raw : r; + }, p; + }(a); + n.exports = o; + } }), zf = R({ "node_modules/postcss-scss/lib/scss-stringify.js"(e, n) { + "use strict"; + A(); + var i = Lf(); + n.exports = function(o, f) { + var p = new i(f); + p.stringify(o); + }; + } }), Bf = R({ "node_modules/postcss-scss/lib/nested-declaration.js"(e, n) { + "use strict"; + A(); + function i(f, p) { + f.prototype = Object.create(p.prototype), f.prototype.constructor = f, f.__proto__ = p; + } + var a = kr(), o = function(f) { + i(p, f); + function p(h) { + var g; + return g = f.call(this, h) || this, g.type = "decl", g.isNested = true, g.nodes || (g.nodes = []), g; + } + return p; + }(a); + n.exports = o; + } }), Ff = R({ "node_modules/postcss-scss/lib/scss-tokenize.js"(e, n) { + "use strict"; + A(); + var i = "'".charCodeAt(0), a = '"'.charCodeAt(0), o = "\\".charCodeAt(0), f = "/".charCodeAt(0), p = ` +`.charCodeAt(0), h = " ".charCodeAt(0), g = "\f".charCodeAt(0), c = " ".charCodeAt(0), t = "\r".charCodeAt(0), r = "[".charCodeAt(0), u = "]".charCodeAt(0), s = "(".charCodeAt(0), l = ")".charCodeAt(0), m = "{".charCodeAt(0), v = "}".charCodeAt(0), y = ";".charCodeAt(0), w = "*".charCodeAt(0), d = ":".charCodeAt(0), _ = "@".charCodeAt(0), S = ",".charCodeAt(0), x = "#".charCodeAt(0), N = /[ \n\t\r\f{}()'"\\;/[\]#]/g, P = /[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g, W = /.[\\/("'\n]/, U = /[a-f0-9]/i, H = /[\r\f\n]/g; + n.exports = function($, B) { + B === void 0 && (B = {}); + var O = $.css.valueOf(), j = B.ignoreErrors, C, I, X, Z, Q, K, J, M, Y, G, E, k, b, L, q = O.length, T = -1, F = 1, z = 0, re = [], ne = []; + function ce(se) { + throw $.error("Unclosed " + se, F, z - T); + } + function fe() { + return ne.length === 0 && z >= q; + } + function te() { + for (var se = 1, le = false, pe = false; se > 0; ) + I += 1, O.length <= I && ce("interpolation"), C = O.charCodeAt(I), k = O.charCodeAt(I + 1), le ? !pe && C === le ? (le = false, pe = false) : C === o ? pe = !G : pe && (pe = false) : C === i || C === a ? le = C : C === v ? se -= 1 : C === x && k === m && (se += 1); + } + function ie() { + if (ne.length) + return ne.pop(); + if (!(z >= q)) { + switch (C = O.charCodeAt(z), (C === p || C === g || C === t && O.charCodeAt(z + 1) !== p) && (T = z, F += 1), C) { + case p: + case h: + case c: + case t: + case g: + I = z; + do + I += 1, C = O.charCodeAt(I), C === p && (T = I, F += 1); + while (C === h || C === p || C === c || C === t || C === g); + b = ["space", O.slice(z, I)], z = I - 1; + break; + case r: + b = ["[", "[", F, z - T]; + break; + case u: + b = ["]", "]", F, z - T]; + break; + case m: + b = ["{", "{", F, z - T]; + break; + case v: + b = ["}", "}", F, z - T]; + break; + case S: + b = ["word", ",", F, z - T, F, z - T + 1]; + break; + case d: + b = [":", ":", F, z - T]; + break; + case y: + b = [";", ";", F, z - T]; + break; + case s: + if (E = re.length ? re.pop()[1] : "", k = O.charCodeAt(z + 1), E === "url" && k !== i && k !== a) { + for (L = 1, G = false, I = z + 1; I <= O.length - 1; ) { + if (k = O.charCodeAt(I), k === o) + G = !G; + else if (k === s) + L += 1; + else if (k === l && (L -= 1, L === 0)) + break; + I += 1; + } + K = O.slice(z, I + 1), Z = K.split(` +`), Q = Z.length - 1, Q > 0 ? (M = F + Q, Y = I - Z[Q].length) : (M = F, Y = T), b = ["brackets", K, F, z - T, M, I - Y], T = Y, F = M, z = I; + } else + I = O.indexOf(")", z + 1), K = O.slice(z, I + 1), I === -1 || W.test(K) ? b = ["(", "(", F, z - T] : (b = ["brackets", K, F, z - T, F, I - T], z = I); + break; + case l: + b = [")", ")", F, z - T]; + break; + case i: + case a: + for (X = C, I = z, G = false; I < q && (I++, I === q && ce("string"), C = O.charCodeAt(I), k = O.charCodeAt(I + 1), !(!G && C === X)); ) + C === o ? G = !G : G ? G = false : C === x && k === m && te(); + K = O.slice(z, I + 1), Z = K.split(` +`), Q = Z.length - 1, Q > 0 ? (M = F + Q, Y = I - Z[Q].length) : (M = F, Y = T), b = ["string", O.slice(z, I + 1), F, z - T, M, I - Y], T = Y, F = M, z = I; + break; + case _: + N.lastIndex = z + 1, N.test(O), N.lastIndex === 0 ? I = O.length - 1 : I = N.lastIndex - 2, b = ["at-word", O.slice(z, I + 1), F, z - T, F, I - T], z = I; + break; + case o: + for (I = z, J = true; O.charCodeAt(I + 1) === o; ) + I += 1, J = !J; + if (C = O.charCodeAt(I + 1), J && C !== f && C !== h && C !== p && C !== c && C !== t && C !== g && (I += 1, U.test(O.charAt(I)))) { + for (; U.test(O.charAt(I + 1)); ) + I += 1; + O.charCodeAt(I + 1) === h && (I += 1); + } + b = ["word", O.slice(z, I + 1), F, z - T, F, I - T], z = I; + break; + default: + k = O.charCodeAt(z + 1), C === x && k === m ? (I = z, te(), K = O.slice(z, I + 1), Z = K.split(` +`), Q = Z.length - 1, Q > 0 ? (M = F + Q, Y = I - Z[Q].length) : (M = F, Y = T), b = ["word", K, F, z - T, M, I - Y], T = Y, F = M, z = I) : C === f && k === w ? (I = O.indexOf("*/", z + 2) + 1, I === 0 && (j ? I = O.length : ce("comment")), K = O.slice(z, I + 1), Z = K.split(` +`), Q = Z.length - 1, Q > 0 ? (M = F + Q, Y = I - Z[Q].length) : (M = F, Y = T), b = ["comment", K, F, z - T, M, I - Y], T = Y, F = M, z = I) : C === f && k === f ? (H.lastIndex = z + 1, H.test(O), H.lastIndex === 0 ? I = O.length - 1 : I = H.lastIndex - 2, K = O.slice(z, I + 1), b = ["comment", K, F, z - T, F, I - T, "inline"], z = I) : (P.lastIndex = z + 1, P.test(O), P.lastIndex === 0 ? I = O.length - 1 : I = P.lastIndex - 2, b = ["word", O.slice(z, I + 1), F, z - T, F, I - T], re.push(b), z = I); + break; + } + return z++, b; + } + } + function ae(se) { + ne.push(se); + } + return { back: ae, nextToken: ie, endOfFile: fe }; + }; + } }), Uf = R({ "node_modules/postcss-scss/lib/scss-parser.js"(e, n) { + "use strict"; + A(); + function i(g, c) { + g.prototype = Object.create(c.prototype), g.prototype.constructor = g, g.__proto__ = c; + } + var a = xr(), o = zt(), f = Bf(), p = Ff(), h = function(g) { + i(c, g); + function c() { + return g.apply(this, arguments) || this; + } + var t = c.prototype; + return t.createTokenizer = function() { + this.tokenizer = p(this.input); + }, t.rule = function(u) { + for (var s = false, l = 0, m = "", w = u, v = Array.isArray(w), y = 0, w = v ? w : w[Symbol.iterator](); ; ) { + var d; + if (v) { + if (y >= w.length) + break; + d = w[y++]; + } else { + if (y = w.next(), y.done) + break; + d = y.value; + } + var _ = d; + if (s) + _[0] !== "comment" && _[0] !== "{" && (m += _[1]); + else { + if (_[0] === "space" && _[1].indexOf(` +`) !== -1) + break; + _[0] === "(" ? l += 1 : _[0] === ")" ? l -= 1 : l === 0 && _[0] === ":" && (s = true); + } + } + if (!s || m.trim() === "" || /^[a-zA-Z-:#]/.test(m)) + g.prototype.rule.call(this, u); + else { + u.pop(); + var S = new f(); + this.init(S); + var x = u[u.length - 1]; + for (x[4] ? S.source.end = { line: x[4], column: x[5] } : S.source.end = { line: x[2], column: x[3] }; u[0][0] !== "word"; ) + S.raws.before += u.shift()[1]; + for (S.source.start = { line: u[0][2], column: u[0][3] }, S.prop = ""; u.length; ) { + var N = u[0][0]; + if (N === ":" || N === "space" || N === "comment") + break; + S.prop += u.shift()[1]; + } + S.raws.between = ""; + for (var P; u.length; ) + if (P = u.shift(), P[0] === ":") { + S.raws.between += P[1]; + break; + } else + S.raws.between += P[1]; + (S.prop[0] === "_" || S.prop[0] === "*") && (S.raws.before += S.prop[0], S.prop = S.prop.slice(1)), S.raws.between += this.spacesAndCommentsFromStart(u), this.precheckMissedSemicolon(u); + for (var W = u.length - 1; W > 0; W--) { + if (P = u[W], P[1] === "!important") { + S.important = true; + var U = this.stringFrom(u, W); + U = this.spacesFromEnd(u) + U, U !== " !important" && (S.raws.important = U); + break; + } else if (P[1] === "important") { + for (var H = u.slice(0), D = "", $ = W; $ > 0; $--) { + var B = H[$][0]; + if (D.trim().indexOf("!") === 0 && B !== "space") + break; + D = H.pop()[1] + D; + } + D.trim().indexOf("!") === 0 && (S.important = true, S.raws.important = D, u = H); + } + if (P[0] !== "space" && P[0] !== "comment") + break; + } + this.raw(S, "value", u), S.value.indexOf(":") !== -1 && this.checkMissedSemicolon(u), this.current = S; + } + }, t.comment = function(u) { + if (u[6] === "inline") { + var s = new a(); + this.init(s, u[2], u[3]), s.raws.inline = true, s.source.end = { line: u[4], column: u[5] }; + var l = u[1].slice(2); + if (/^\s*$/.test(l)) + s.text = "", s.raws.left = l, s.raws.right = ""; + else { + var m = l.match(/^(\s*)([^]*[^\s])(\s*)$/), v = m[2].replace(/(\*\/|\/\*)/g, "*//*"); + s.text = v, s.raws.left = m[1], s.raws.right = m[3], s.raws.text = m[2]; + } + } else + g.prototype.comment.call(this, u); + }, t.raw = function(u, s, l) { + if (g.prototype.raw.call(this, u, s, l), u.raws[s]) { + var m = u.raws[s].raw; + u.raws[s].raw = l.reduce(function(v, y) { + if (y[0] === "comment" && y[6] === "inline") { + var w = y[1].slice(2).replace(/(\*\/|\/\*)/g, "*//*"); + return v + "/*" + w + "*/"; + } else + return v + y[1]; + }, ""), m !== u.raws[s].raw && (u.raws[s].scss = m); + } + }, c; + }(o); + n.exports = h; + } }), Wf = R({ "node_modules/postcss-scss/lib/scss-parse.js"(e, n) { + "use strict"; + A(); + var i = _r(), a = Uf(); + n.exports = function(f, p) { + var h = new i(f, p), g = new a(h); + return g.parse(), g.root; + }; + } }), $f = R({ "node_modules/postcss-scss/lib/scss-syntax.js"(e, n) { + "use strict"; + A(); + var i = zf(), a = Wf(); + n.exports = { parse: a, stringify: i }; + } }); + A(); + var Vf = ml(), pt = Cs(), Gf = Ns(), { hasPragma: Hf } = Tl(), { locStart: Jf, locEnd: Kf } = Js(), { calculateLoc: Qf, replaceQuotesInInlineComments: Yf } = Js(), Xf = Pl(), Zf = Rl(), ht = Il(), sa = Cl(), ep = Nl(), rp = jl(), tp = Ml(), np = Dl(), ip = (e) => { + for (; e.parent; ) + e = e.parent; + return e; + }; + function sp(e, n) { + let { nodes: i } = e, a = { open: null, close: null, groups: [], type: "paren_group" }, o = [a], f = a, p = { groups: [], type: "comma_group" }, h = [p]; + for (let g = 0; g < i.length; ++g) { + let c = i[g]; + if (sa(n.parser, c.value) && c.type === "number" && c.unit === ".." && pt(c.value) === "." && (c.value = c.value.slice(0, -1), c.unit = "..."), c.type === "func" && c.value === "selector" && (c.group.groups = [Ie(ip(e).text.slice(c.group.open.sourceIndex + 1, c.group.close.sourceIndex))]), c.type === "func" && c.value === "url") { + let t = c.group && c.group.groups || [], r = []; + for (let u = 0; u < t.length; u++) { + let s = t[u]; + s.type === "comma_group" ? r = [...r, ...s.groups] : r.push(s); + } + if (Xf(r) || !Zf(r) && !rp(r[0])) { + let u = tp({ groups: c.group.groups }); + c.group.groups = [u.trim()]; + } + } + if (c.type === "paren" && c.value === "(") + a = { open: c, close: null, groups: [], type: "paren_group" }, o.push(a), p = { groups: [], type: "comma_group" }, h.push(p); + else if (c.type === "paren" && c.value === ")") { + if (p.groups.length > 0 && a.groups.push(p), a.close = c, h.length === 1) + throw new Error("Unbalanced parenthesis"); + h.pop(), p = pt(h), p.groups.push(a), o.pop(), a = pt(o); + } else + c.type === "comma" ? (a.groups.push(p), p = { groups: [], type: "comma_group" }, h[h.length - 1] = p) : p.groups.push(c); + } + return p.groups.length > 0 && a.groups.push(p), f; + } + function hr(e) { + return e.type === "paren_group" && !e.open && !e.close && e.groups.length === 1 || e.type === "comma_group" && e.groups.length === 1 ? hr(e.groups[0]) : e.type === "paren_group" || e.type === "comma_group" ? Object.assign(Object.assign({}, e), {}, { groups: e.groups.map(hr) }) : e; + } + function Xe(e, n, i) { + if (e && typeof e == "object") { + delete e.parent; + for (let a in e) + Xe(e[a], n, i), a === "type" && typeof e[a] == "string" && !e[a].startsWith(n) && (!i || !i.test(e[a])) && (e[a] = n + e[a]); + } + return e; + } + function oa(e) { + if (e && typeof e == "object") { + delete e.parent; + for (let n in e) + oa(e[n]); + !Array.isArray(e) && e.value && !e.type && (e.type = "unknown"); + } + return e; + } + function aa(e, n) { + if (e && typeof e == "object") { + for (let i in e) + i !== "parent" && (aa(e[i], n), i === "nodes" && (e.group = hr(sp(e, n)), delete e[i])); + delete e.parent; + } + return e; + } + function Pe(e, n) { + let i = lf(), a = null; + try { + a = i(e, { loose: true }).parse(); + } catch { + return { type: "value-unknown", value: e }; + } + a.text = e; + let o = aa(a, n); + return Xe(o, "value-", /^selector-/); + } + function Ie(e) { + if (/\/\/|\/\*/.test(e)) + return { type: "selector-unknown", value: e.trim() }; + let n = vf(), i = null; + try { + n((a) => { + i = a; + }).process(e); + } catch { + return { type: "selector-unknown", value: e }; + } + return Xe(i, "selector-"); + } + function op(e) { + let n = gf().default, i = null; + try { + i = n(e); + } catch { + return { type: "selector-unknown", value: e }; + } + return Xe(oa(i), "media-"); + } + var ap = /(\s*)(!default).*$/, up = /(\s*)(!global).*$/; + function ua(e, n) { + if (e && typeof e == "object") { + delete e.parent; + for (let f in e) + ua(e[f], n); + if (!e.type) + return e; + e.raws || (e.raws = {}); + let i = ""; + typeof e.selector == "string" && (i = e.raws.selector ? e.raws.selector.scss ? e.raws.selector.scss : e.raws.selector.raw : e.selector, e.raws.between && e.raws.between.trim().length > 0 && (i += e.raws.between), e.raws.selector = i); + let a = ""; + typeof e.value == "string" && (a = e.raws.value ? e.raws.value.scss ? e.raws.value.scss : e.raws.value.raw : e.value, a = a.trim(), e.raws.value = a); + let o = ""; + if (typeof e.params == "string" && (o = e.raws.params ? e.raws.params.scss ? e.raws.params.scss : e.raws.params.raw : e.params, e.raws.afterName && e.raws.afterName.trim().length > 0 && (o = e.raws.afterName + o), e.raws.between && e.raws.between.trim().length > 0 && (o = o + e.raws.between), o = o.trim(), e.raws.params = o), i.trim().length > 0) + return i.startsWith("@") && i.endsWith(":") ? e : e.mixin ? (e.selector = Pe(i, n), e) : (ep(e) && (e.isSCSSNesterProperty = true), e.selector = Ie(i), e); + if (a.length > 0) { + let f = a.match(ap); + f && (a = a.slice(0, f.index), e.scssDefault = true, f[0].trim() !== "!default" && (e.raws.scssDefault = f[0])); + let p = a.match(up); + if (p && (a = a.slice(0, p.index), e.scssGlobal = true, p[0].trim() !== "!global" && (e.raws.scssGlobal = p[0])), a.startsWith("progid:")) + return { type: "value-unknown", value: a }; + e.value = Pe(a, n); + } + if (ht(n) && e.type === "css-decl" && a.startsWith("extend(") && (e.extend || (e.extend = e.raws.between === ":"), e.extend && !e.selector && (delete e.value, e.selector = Ie(a.slice(7, -1)))), e.type === "css-atrule") { + if (ht(n)) { + if (e.mixin) { + let f = e.raws.identifier + e.name + e.raws.afterName + e.raws.params; + return e.selector = Ie(f), delete e.params, e; + } + if (e.function) + return e; + } + if (n.parser === "css" && e.name === "custom-selector") { + let f = e.params.match(/:--\S+\s+/)[0].trim(); + return e.customSelector = f, e.selector = Ie(e.params.slice(f.length).trim()), delete e.params, e; + } + if (ht(n)) { + if (e.name.includes(":") && !e.params) { + e.variable = true; + let f = e.name.split(":"); + e.name = f[0], e.value = Pe(f.slice(1).join(":"), n); + } + if (!["page", "nest", "keyframes"].includes(e.name) && e.params && e.params[0] === ":" && (e.variable = true, e.value = Pe(e.params.slice(1), n), e.raws.afterName += ":"), e.variable) + return delete e.params, e; + } + } + if (e.type === "css-atrule" && o.length > 0) { + let { name: f } = e, p = e.name.toLowerCase(); + return f === "warn" || f === "error" ? (e.params = { type: "media-unknown", value: o }, e) : f === "extend" || f === "nest" ? (e.selector = Ie(o), delete e.params, e) : f === "at-root" ? (/^\(\s*(?:without|with)\s*:.+\)$/s.test(o) ? e.params = Pe(o, n) : (e.selector = Ie(o), delete e.params), e) : np(p) ? (e.import = true, delete e.filename, e.params = Pe(o, n), e) : ["namespace", "supports", "if", "else", "for", "each", "while", "debug", "mixin", "include", "function", "return", "define-mixin", "add-mixin"].includes(f) ? (o = o.replace(/(\$\S+?)(\s+)?\.{3}/, "$1...$2"), o = o.replace(/^(?!if)(\S+)(\s+)\(/, "$1($2"), e.value = Pe(o, n), delete e.params, e) : ["media", "custom-media"].includes(p) ? o.includes("#{") ? { type: "media-unknown", value: o } : (e.params = op(o), e) : (e.params = o, e); + } + } + return e; + } + function ca(e, n, i) { + let a = Gf(n), { frontMatter: o } = a; + n = a.content; + let f; + try { + f = e(n); + } catch (p) { + let { name: h, reason: g, line: c, column: t } = p; + throw typeof c != "number" ? p : Vf("".concat(h, ": ").concat(g), { start: { line: c, column: t } }); + } + return f = ua(Xe(f, "css-"), i), Qf(f, n), o && (o.source = { startOffset: 0, endOffset: o.raw.length }, f.nodes.unshift(o)), f; + } + function cp(e, n) { + let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, o = sa(i.parser, e) ? [xt, bt] : [bt, xt], f; + for (let p of o) + try { + return p(e, n, i); + } catch (h) { + f = f || h; + } + if (f) + throw f; + } + function bt(e, n) { + let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, a = Df(); + return ca((o) => a.parse(Yf(o)), e, i); + } + function xt(e, n) { + let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, { parse: a } = $f(); + return ca(a, e, i); + } + var dt = { astFormat: "postcss", hasPragma: Hf, locStart: Jf, locEnd: Kf }; + la.exports = { parsers: { css: Object.assign(Object.assign({}, dt), {}, { parse: cp }), less: Object.assign(Object.assign({}, dt), {}, { parse: bt }), scss: Object.assign(Object.assign({}, dt), {}, { parse: xt }) } }; + }); + return lp(); + }); + } +}); + +// node_modules/prettier/parser-glimmer.js +var require_parser_glimmer = __commonJS({ + "node_modules/prettier/parser-glimmer.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.glimmer = e(); + } + })(function() { + "use strict"; + var it = (t, f) => () => (f || t((f = { exports: {} }).exports, f), f.exports); + var Zt = it((nr, $e) => { + var xe = Object.getOwnPropertyNames, at = (t, f) => function() { + return t && (f = (0, t[xe(t)[0]])(t = 0)), f; + }, I = (t, f) => function() { + return f || (0, t[xe(t)[0]])((f = { exports: {} }).exports, f), f.exports; + }, F = at({ ""() { + } }), st = I({ "node_modules/lines-and-columns/build/index.cjs"(t) { + "use strict"; + F(), t.__esModule = true, t.LinesAndColumns = void 0; + var f = ` +`, h = "\r", d = function() { + function c(o) { + this.length = o.length; + for (var e = [0], r = 0; r < o.length; ) + switch (o[r]) { + case f: + r += f.length, e.push(r); + break; + case h: + r += h.length, o[r] === f && (r += f.length), e.push(r); + break; + default: + r++; + break; + } + this.offsets = e; + } + return c.prototype.locationForIndex = function(o) { + if (o < 0 || o > this.length) + return null; + for (var e = 0, r = this.offsets; r[e + 1] <= o; ) + e++; + var s = o - r[e]; + return { line: e, column: s }; + }, c.prototype.indexForLocation = function(o) { + var e = o.line, r = o.column; + return e < 0 || e >= this.offsets.length || r < 0 || r > this.lengthOfLine(e) ? null : this.offsets[e] + r; + }, c.prototype.lengthOfLine = function(o) { + var e = this.offsets[o], r = o === this.offsets.length - 1 ? this.length : this.offsets[o + 1]; + return r - e; + }, c; + }(); + t.LinesAndColumns = d; + } }), ut = I({ "src/common/parser-create-error.js"(t, f) { + "use strict"; + F(); + function h(d, c) { + let o = new SyntaxError(d + " (" + c.start.line + ":" + c.start.column + ")"); + return o.loc = c, o; + } + f.exports = h; + } }), ot = I({ "src/language-handlebars/loc.js"(t, f) { + "use strict"; + F(); + function h(c) { + return c.loc.start.offset; + } + function d(c) { + return c.loc.end.offset; + } + f.exports = { locStart: h, locEnd: d }; + } }), fe = I({ "node_modules/@glimmer/env/dist/commonjs/es5/index.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + var f = t.DEBUG = false, h = t.CI = false; + } }), lt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/array-utils.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.emptyArray = h, t.isEmptyArray = o, t.EMPTY_NUMBER_ARRAY = t.EMPTY_STRING_ARRAY = t.EMPTY_ARRAY = void 0; + var f = Object.freeze([]); + t.EMPTY_ARRAY = f; + function h() { + return f; + } + var d = h(); + t.EMPTY_STRING_ARRAY = d; + var c = h(); + t.EMPTY_NUMBER_ARRAY = c; + function o(e) { + return e === f; + } + } }), Pe = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/assert.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.debugAssert = h, t.prodAssert = d, t.deprecate = c, t.default = void 0; + var f = X(); + function h(e, r) { + if (!e) + throw new Error(r || "assertion failure"); + } + function d() { + } + function c(e) { + f.LOCAL_LOGGER.warn("DEPRECATION: ".concat(e)); + } + var o = h; + t.default = o; + } }), ct = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/collections.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.dict = f, t.isDict = h, t.isObject = d, t.StackImpl = void 0; + function f() { + return /* @__PURE__ */ Object.create(null); + } + function h(o) { + return o != null; + } + function d(o) { + return typeof o == "function" || typeof o == "object" && o !== null; + } + var c = class { + constructor() { + let o = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; + this.current = null, this.stack = o; + } + get size() { + return this.stack.length; + } + push(o) { + this.current = o, this.stack.push(o); + } + pop() { + let o = this.stack.pop(), e = this.stack.length; + return this.current = e === 0 ? null : this.stack[e - 1], o === void 0 ? null : o; + } + nth(o) { + let e = this.stack.length; + return e < o ? null : this.stack[e - o]; + } + isEmpty() { + return this.stack.length === 0; + } + toArray() { + return this.stack; + } + }; + t.StackImpl = c; + } }), ht = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/dom.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.clearElement = f; + function f(h) { + let d = h.firstChild; + for (; d; ) { + let c = d.nextSibling; + h.removeChild(d), d = c; + } + } + } }), dt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/is-serialization-first-node.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.isSerializationFirstNode = h, t.SERIALIZATION_FIRST_NODE_STRING = void 0; + var f = "%+b:0%"; + t.SERIALIZATION_FIRST_NODE_STRING = f; + function h(d) { + return d.nodeValue === f; + } + } }), pt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/object-utils.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.fillNulls = h, t.values = d, t.assign = void 0; + var f = Object.assign; + t.assign = f; + function h(c) { + let o = new Array(c); + for (let e = 0; e < c; e++) + o[e] = null; + return o; + } + function d(c) { + let o = []; + for (let e in c) + o.push(c[e]); + return o; + } + } }), je = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/intern.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = f; + function f(h) { + let d = {}; + d[h] = 1; + for (let c in d) + if (c === h) + return c; + return h; + } + } }), me = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/platform-utils.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.keys = o, t.unwrap = e, t.expect = r, t.unreachable = s, t.exhausted = p, t.enumerableSymbol = a, t.symbol = t.tuple = t.HAS_NATIVE_SYMBOL = t.HAS_NATIVE_PROXY = void 0; + var f = h(je()); + function h(i) { + return i && i.__esModule ? i : { default: i }; + } + var d = typeof Proxy == "function"; + t.HAS_NATIVE_PROXY = d; + var c = function() { + return typeof Symbol != "function" ? false : typeof Symbol() == "symbol"; + }(); + t.HAS_NATIVE_SYMBOL = c; + function o(i) { + return Object.keys(i); + } + function e(i) { + if (i == null) + throw new Error("Expected value to be present"); + return i; + } + function r(i, l) { + if (i == null) + throw new Error(l); + return i; + } + function s() { + let i = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "unreachable"; + return new Error(i); + } + function p(i) { + throw new Error("Exhausted ".concat(i)); + } + var n = function() { + for (var i = arguments.length, l = new Array(i), b = 0; b < i; b++) + l[b] = arguments[b]; + return l; + }; + t.tuple = n; + function a(i) { + return (0, f.default)("__".concat(i).concat(Math.floor(Math.random() * Date.now()), "__")); + } + var u = c ? Symbol : a; + t.symbol = u; + } }), ft = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/string.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.strip = f; + function f(h) { + let d = ""; + for (var c = arguments.length, o = new Array(c > 1 ? c - 1 : 0), e = 1; e < c; e++) + o[e - 1] = arguments[e]; + for (let n = 0; n < h.length; n++) { + let a = h[n], u = o[n] !== void 0 ? String(o[n]) : ""; + d += "".concat(a).concat(u); + } + let r = d.split(` +`); + for (; r.length && r[0].match(/^\s*$/); ) + r.shift(); + for (; r.length && r[r.length - 1].match(/^\s*$/); ) + r.pop(); + let s = 1 / 0; + for (let n of r) { + let a = n.match(/^\s*/)[0].length; + s = Math.min(s, a); + } + let p = []; + for (let n of r) + p.push(n.slice(s)); + return p.join(` +`); + } + } }), mt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/immediate.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.isHandle = h, t.isNonPrimitiveHandle = d, t.constants = c, t.isSmallInt = o, t.encodeNegative = e, t.decodeNegative = r, t.encodePositive = s, t.decodePositive = p, t.encodeHandle = n, t.decodeHandle = a, t.encodeImmediate = u, t.decodeImmediate = i; + var f = Pe(); + function h(l) { + return l >= 0; + } + function d(l) { + return l > 3; + } + function c() { + for (var l = arguments.length, b = new Array(l), P = 0; P < l; P++) + b[P] = arguments[P]; + return [false, true, null, void 0, ...b]; + } + function o(l) { + return l % 1 === 0 && l <= 536870911 && l >= -536870912; + } + function e(l) { + return l & -536870913; + } + function r(l) { + return l | 536870912; + } + function s(l) { + return ~l; + } + function p(l) { + return ~l; + } + function n(l) { + return l; + } + function a(l) { + return l; + } + function u(l) { + return l |= 0, l < 0 ? e(l) : s(l); + } + function i(l) { + return l |= 0, l > -536870913 ? p(l) : r(l); + } + [1, 2, 3].forEach((l) => l), [1, -1].forEach((l) => i(u(l))); + } }), gt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/template.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.unwrapHandle = f, t.unwrapTemplate = h, t.extractHandle = d, t.isOkHandle = c, t.isErrHandle = o; + function f(e) { + if (typeof e == "number") + return e; + { + let r = e.errors[0]; + throw new Error("Compile Error: ".concat(r.problem, " @ ").concat(r.span.start, "..").concat(r.span.end)); + } + } + function h(e) { + if (e.result === "error") + throw new Error("Compile Error: ".concat(e.problem, " @ ").concat(e.span.start, "..").concat(e.span.end)); + return e; + } + function d(e) { + return typeof e == "number" ? e : e.handle; + } + function c(e) { + return typeof e == "number"; + } + function o(e) { + return typeof e == "number"; + } + } }), bt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/weak-set.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = void 0; + var f = typeof WeakSet == "function" ? WeakSet : class { + constructor() { + this._map = /* @__PURE__ */ new WeakMap(); + } + add(d) { + return this._map.set(d, true), this; + } + delete(d) { + return this._map.delete(d); + } + has(d) { + return this._map.has(d); + } + }; + t.default = f; + } }), vt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/simple-cast.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.castToSimple = h, t.castToBrowser = d, t.checkNode = r; + var f = me(); + function h(p) { + return o(p) || e(p), p; + } + function d(p, n) { + if (p == null) + return null; + if (typeof document === void 0) + throw new Error("Attempted to cast to a browser node in a non-browser context"); + if (o(p)) + return p; + if (p.ownerDocument !== document) + throw new Error("Attempted to cast to a browser node with a node that was not created from this document"); + return r(p, n); + } + function c(p, n) { + return new Error("cannot cast a ".concat(p, " into ").concat(n)); + } + function o(p) { + return p.nodeType === 9; + } + function e(p) { + return p.nodeType === 1; + } + function r(p, n) { + let a = false; + if (p !== null) + if (typeof n == "string") + a = s(p, n); + else if (Array.isArray(n)) + a = n.some((u) => s(p, u)); + else + throw (0, f.unreachable)(); + if (a) + return p; + throw c("SimpleElement(".concat(p, ")"), n); + } + function s(p, n) { + switch (n) { + case "NODE": + return true; + case "HTML": + return p instanceof HTMLElement; + case "SVG": + return p instanceof SVGElement; + case "ELEMENT": + return p instanceof Element; + default: + if (n.toUpperCase() === n) + throw new Error("BUG: this code is missing handling for a generic node type"); + return p instanceof Element && p.tagName.toLowerCase() === n; + } + } + } }), yt = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/present.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.isPresent = f, t.ifPresent = h, t.toPresentOption = d, t.assertPresent = c, t.mapPresent = o; + function f(e) { + return e.length > 0; + } + function h(e, r, s) { + return f(e) ? r(e) : s(); + } + function d(e) { + return f(e) ? e : null; + } + function c(e) { + let r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "unexpected empty list"; + if (!f(e)) + throw new Error(r); + } + function o(e, r) { + if (e === null) + return null; + let s = []; + for (let p of e) + s.push(r(p)); + return s; + } + } }), At = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/untouchable-this.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = d; + var f = fe(), h = me(); + function d(c) { + let o = null; + if (f.DEBUG && h.HAS_NATIVE_PROXY) { + let e = (r) => { + throw new Error("You accessed `this.".concat(String(r), "` from a function passed to the ").concat(c, ", but the function itself was not bound to a valid `this` context. Consider updating to use a bound function (for instance, use an arrow function, `() => {}`).")); + }; + o = new Proxy({}, { get(r, s) { + e(s); + }, set(r, s) { + return e(s), false; + }, has(r, s) { + return e(s), false; + } }); + } + return o; + } + } }), Et = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/debug-to-string.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = void 0; + var f = fe(), h; + if (f.DEBUG) { + let c = (r) => { + let s = r.name; + if (s === void 0) { + let p = Function.prototype.toString.call(r).match(/function (\w+)\s*\(/); + s = p && p[1] || ""; + } + return s.replace(/^bound /, ""); + }, o = (r) => { + let s, p; + return r.constructor && typeof r.constructor == "function" && (p = c(r.constructor)), "toString" in r && r.toString !== Object.prototype.toString && r.toString !== Function.prototype.toString && (s = r.toString()), s && s.match(/<.*:ember\d+>/) && p && p[0] !== "_" && p.length > 2 && p !== "Class" ? s.replace(/<.*:/, "<".concat(p, ":")) : s || p; + }, e = (r) => String(r); + h = (r) => typeof r == "function" ? c(r) || "(unknown function)" : typeof r == "object" && r !== null ? o(r) || "(unknown object)" : e(r); + } + var d = h; + t.default = d; + } }), _t = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/lib/debug-steps.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.logStep = t.verifySteps = t.endTestSteps = t.beginTestSteps = void 0; + var f = d(Pe()), h = me(); + function d(s) { + return s && s.__esModule ? s : { default: s }; + } + var c; + t.beginTestSteps = c; + var o; + t.endTestSteps = o; + var e; + t.verifySteps = e; + var r; + t.logStep = r; + } }), X = I({ "node_modules/@glimmer/util/dist/commonjs/es2017/index.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + var f = { LOCAL_LOGGER: true, LOGGER: true, assertNever: true, assert: true, deprecate: true, dict: true, isDict: true, isObject: true, Stack: true, isSerializationFirstNode: true, SERIALIZATION_FIRST_NODE_STRING: true, assign: true, fillNulls: true, values: true, _WeakSet: true, castToSimple: true, castToBrowser: true, checkNode: true, intern: true, buildUntouchableThis: true, debugToString: true, beginTestSteps: true, endTestSteps: true, logStep: true, verifySteps: true }; + t.assertNever = x, Object.defineProperty(t, "assert", { enumerable: true, get: function() { + return d.default; + } }), Object.defineProperty(t, "deprecate", { enumerable: true, get: function() { + return d.deprecate; + } }), Object.defineProperty(t, "dict", { enumerable: true, get: function() { + return c.dict; + } }), Object.defineProperty(t, "isDict", { enumerable: true, get: function() { + return c.isDict; + } }), Object.defineProperty(t, "isObject", { enumerable: true, get: function() { + return c.isObject; + } }), Object.defineProperty(t, "Stack", { enumerable: true, get: function() { + return c.StackImpl; + } }), Object.defineProperty(t, "isSerializationFirstNode", { enumerable: true, get: function() { + return e.isSerializationFirstNode; + } }), Object.defineProperty(t, "SERIALIZATION_FIRST_NODE_STRING", { enumerable: true, get: function() { + return e.SERIALIZATION_FIRST_NODE_STRING; + } }), Object.defineProperty(t, "assign", { enumerable: true, get: function() { + return r.assign; + } }), Object.defineProperty(t, "fillNulls", { enumerable: true, get: function() { + return r.fillNulls; + } }), Object.defineProperty(t, "values", { enumerable: true, get: function() { + return r.values; + } }), Object.defineProperty(t, "_WeakSet", { enumerable: true, get: function() { + return u.default; + } }), Object.defineProperty(t, "castToSimple", { enumerable: true, get: function() { + return i.castToSimple; + } }), Object.defineProperty(t, "castToBrowser", { enumerable: true, get: function() { + return i.castToBrowser; + } }), Object.defineProperty(t, "checkNode", { enumerable: true, get: function() { + return i.checkNode; + } }), Object.defineProperty(t, "intern", { enumerable: true, get: function() { + return b.default; + } }), Object.defineProperty(t, "buildUntouchableThis", { enumerable: true, get: function() { + return P.default; + } }), Object.defineProperty(t, "debugToString", { enumerable: true, get: function() { + return E.default; + } }), Object.defineProperty(t, "beginTestSteps", { enumerable: true, get: function() { + return v.beginTestSteps; + } }), Object.defineProperty(t, "endTestSteps", { enumerable: true, get: function() { + return v.endTestSteps; + } }), Object.defineProperty(t, "logStep", { enumerable: true, get: function() { + return v.logStep; + } }), Object.defineProperty(t, "verifySteps", { enumerable: true, get: function() { + return v.verifySteps; + } }), t.LOGGER = t.LOCAL_LOGGER = void 0; + var h = lt(); + Object.keys(h).forEach(function(w) { + w === "default" || w === "__esModule" || Object.prototype.hasOwnProperty.call(f, w) || Object.defineProperty(t, w, { enumerable: true, get: function() { + return h[w]; + } }); + }); + var d = g(Pe()), c = ct(), o = ht(); + Object.keys(o).forEach(function(w) { + w === "default" || w === "__esModule" || Object.prototype.hasOwnProperty.call(f, w) || Object.defineProperty(t, w, { enumerable: true, get: function() { + return o[w]; + } }); + }); + var e = dt(), r = pt(), s = me(); + Object.keys(s).forEach(function(w) { + w === "default" || w === "__esModule" || Object.prototype.hasOwnProperty.call(f, w) || Object.defineProperty(t, w, { enumerable: true, get: function() { + return s[w]; + } }); + }); + var p = ft(); + Object.keys(p).forEach(function(w) { + w === "default" || w === "__esModule" || Object.prototype.hasOwnProperty.call(f, w) || Object.defineProperty(t, w, { enumerable: true, get: function() { + return p[w]; + } }); + }); + var n = mt(); + Object.keys(n).forEach(function(w) { + w === "default" || w === "__esModule" || Object.prototype.hasOwnProperty.call(f, w) || Object.defineProperty(t, w, { enumerable: true, get: function() { + return n[w]; + } }); + }); + var a = gt(); + Object.keys(a).forEach(function(w) { + w === "default" || w === "__esModule" || Object.prototype.hasOwnProperty.call(f, w) || Object.defineProperty(t, w, { enumerable: true, get: function() { + return a[w]; + } }); + }); + var u = _(bt()), i = vt(), l = yt(); + Object.keys(l).forEach(function(w) { + w === "default" || w === "__esModule" || Object.prototype.hasOwnProperty.call(f, w) || Object.defineProperty(t, w, { enumerable: true, get: function() { + return l[w]; + } }); + }); + var b = _(je()), P = _(At()), E = _(Et()), v = _t(); + function _(w) { + return w && w.__esModule ? w : { default: w }; + } + function y() { + if (typeof WeakMap != "function") + return null; + var w = /* @__PURE__ */ new WeakMap(); + return y = function() { + return w; + }, w; + } + function g(w) { + if (w && w.__esModule) + return w; + if (w === null || typeof w != "object" && typeof w != "function") + return { default: w }; + var H = y(); + if (H && H.has(w)) + return H.get(w); + var m = {}, C = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var S in w) + if (Object.prototype.hasOwnProperty.call(w, S)) { + var R = C ? Object.getOwnPropertyDescriptor(w, S) : null; + R && (R.get || R.set) ? Object.defineProperty(m, S, R) : m[S] = w[S]; + } + return m.default = w, H && H.set(w, m), m; + } + var L = console; + t.LOCAL_LOGGER = L; + var j = console; + t.LOGGER = j; + function x(w) { + let H = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "unexpected unreachable branch"; + throw j.log("unreachable", w), j.log("".concat(H, " :: ").concat(JSON.stringify(w), " (").concat(w, ")")), new Error("code reached unreachable"); + } + } }), ge = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/location.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.isLocatedWithPositionsArray = s, t.isLocatedWithPositions = p, t.BROKEN_LOCATION = t.NON_EXISTENT_LOCATION = t.TEMPORARY_LOCATION = t.SYNTHETIC = t.SYNTHETIC_LOCATION = t.UNKNOWN_POSITION = void 0; + var f = X(), h = Object.freeze({ line: 1, column: 0 }); + t.UNKNOWN_POSITION = h; + var d = Object.freeze({ source: "(synthetic)", start: h, end: h }); + t.SYNTHETIC_LOCATION = d; + var c = d; + t.SYNTHETIC = c; + var o = Object.freeze({ source: "(temporary)", start: h, end: h }); + t.TEMPORARY_LOCATION = o; + var e = Object.freeze({ source: "(nonexistent)", start: h, end: h }); + t.NON_EXISTENT_LOCATION = e; + var r = Object.freeze({ source: "(broken)", start: h, end: h }); + t.BROKEN_LOCATION = r; + function s(n) { + return (0, f.isPresent)(n) && n.every(p); + } + function p(n) { + return n.loc !== void 0; + } + } }), le = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/slice.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.SourceSlice = void 0; + var f = ue(), h = class { + constructor(d) { + this.loc = d.loc, this.chars = d.chars; + } + static synthetic(d) { + let c = f.SourceSpan.synthetic(d); + return new h({ loc: c, chars: d }); + } + static load(d, c) { + return new h({ loc: f.SourceSpan.load(d, c[1]), chars: c[0] }); + } + getString() { + return this.chars; + } + serialize() { + return [this.chars, this.loc.serialize()]; + } + }; + t.SourceSlice = h; + } }), Me = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/loc/match.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.match = e, t.IsInvisible = t.MatchAny = void 0; + var f = X(), h = "MATCH_ANY"; + t.MatchAny = h; + var d = "IS_INVISIBLE"; + t.IsInvisible = d; + var c = class { + constructor(p) { + this._whens = p; + } + first(p) { + for (let n of this._whens) { + let a = n.match(p); + if ((0, f.isPresent)(a)) + return a[0]; + } + return null; + } + }, o = class { + constructor() { + this._map = /* @__PURE__ */ new Map(); + } + get(p, n) { + let a = this._map.get(p); + return a || (a = n(), this._map.set(p, a), a); + } + add(p, n) { + this._map.set(p, n); + } + match(p) { + let n = s(p), a = [], u = this._map.get(n), i = this._map.get(h); + return u && a.push(u), i && a.push(i), a; + } + }; + function e(p) { + return p(new r()).check(); + } + var r = class { + constructor() { + this._whens = new o(); + } + check() { + return (p, n) => this.matchFor(p.kind, n.kind)(p, n); + } + matchFor(p, n) { + let a = this._whens.match(p); + return new c(a).first(n); + } + when(p, n, a) { + return this._whens.get(p, () => new o()).add(n, a), this; + } + }; + function s(p) { + switch (p) { + case "Broken": + case "InternalsSynthetic": + case "NonExistent": + return d; + default: + return p; + } + } + } }), He = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/loc/offset.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.InvisiblePosition = t.HbsPosition = t.CharPosition = t.SourceOffset = t.BROKEN = void 0; + var f = ge(), h = Me(), d = Ve(), c = "BROKEN"; + t.BROKEN = c; + var o = class { + constructor(n) { + this.data = n; + } + static forHbsPos(n, a) { + return new r(n, a, null).wrap(); + } + static broken() { + let n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : f.UNKNOWN_POSITION; + return new s("Broken", n).wrap(); + } + get offset() { + let n = this.data.toCharPos(); + return n === null ? null : n.offset; + } + eql(n) { + return p(this.data, n.data); + } + until(n) { + return (0, d.span)(this.data, n.data); + } + move(n) { + let a = this.data.toCharPos(); + if (a === null) + return o.broken(); + { + let u = a.offset + n; + return a.source.check(u) ? new e(a.source, u).wrap() : o.broken(); + } + } + collapsed() { + return (0, d.span)(this.data, this.data); + } + toJSON() { + return this.data.toJSON(); + } + }; + t.SourceOffset = o; + var e = class { + constructor(n, a) { + this.source = n, this.charPos = a, this.kind = "CharPosition", this._locPos = null; + } + toCharPos() { + return this; + } + toJSON() { + let n = this.toHbsPos(); + return n === null ? f.UNKNOWN_POSITION : n.toJSON(); + } + wrap() { + return new o(this); + } + get offset() { + return this.charPos; + } + toHbsPos() { + let n = this._locPos; + if (n === null) { + let a = this.source.hbsPosFor(this.charPos); + a === null ? this._locPos = n = c : this._locPos = n = new r(this.source, a, this.charPos); + } + return n === c ? null : n; + } + }; + t.CharPosition = e; + var r = class { + constructor(n, a) { + let u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + this.source = n, this.hbsPos = a, this.kind = "HbsPosition", this._charPos = u === null ? null : new e(n, u); + } + toCharPos() { + let n = this._charPos; + if (n === null) { + let a = this.source.charPosFor(this.hbsPos); + a === null ? this._charPos = n = c : this._charPos = n = new e(this.source, a); + } + return n === c ? null : n; + } + toJSON() { + return this.hbsPos; + } + wrap() { + return new o(this); + } + toHbsPos() { + return this; + } + }; + t.HbsPosition = r; + var s = class { + constructor(n, a) { + this.kind = n, this.pos = a; + } + toCharPos() { + return null; + } + toJSON() { + return this.pos; + } + wrap() { + return new o(this); + } + get offset() { + return null; + } + }; + t.InvisiblePosition = s; + var p = (0, h.match)((n) => n.when("HbsPosition", "HbsPosition", (a, u) => { + let { hbsPos: i } = a, { hbsPos: l } = u; + return i.column === l.column && i.line === l.line; + }).when("CharPosition", "CharPosition", (a, u) => { + let { charPos: i } = a, { charPos: l } = u; + return i === l; + }).when("CharPosition", "HbsPosition", (a, u) => { + let { offset: i } = a; + var l; + return i === ((l = u.toCharPos()) === null || l === void 0 ? void 0 : l.offset); + }).when("HbsPosition", "CharPosition", (a, u) => { + let { offset: i } = u; + var l; + return ((l = a.toCharPos()) === null || l === void 0 ? void 0 : l.offset) === i; + }).when(h.MatchAny, h.MatchAny, () => false)); + } }), Ve = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/loc/span.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.span = t.HbsSpan = t.SourceSpan = void 0; + var f = fe(), h = X(), d = ge(), c = le(), o = Me(), e = He(), r = class { + constructor(u) { + this.data = u, this.isInvisible = u.kind !== "CharPosition" && u.kind !== "HbsPosition"; + } + static get NON_EXISTENT() { + return new n("NonExistent", d.NON_EXISTENT_LOCATION).wrap(); + } + static load(u, i) { + if (typeof i == "number") + return r.forCharPositions(u, i, i); + if (typeof i == "string") + return r.synthetic(i); + if (Array.isArray(i)) + return r.forCharPositions(u, i[0], i[1]); + if (i === "NonExistent") + return r.NON_EXISTENT; + if (i === "Broken") + return r.broken(d.BROKEN_LOCATION); + (0, h.assertNever)(i); + } + static forHbsLoc(u, i) { + let l = new e.HbsPosition(u, i.start), b = new e.HbsPosition(u, i.end); + return new p(u, { start: l, end: b }, i).wrap(); + } + static forCharPositions(u, i, l) { + let b = new e.CharPosition(u, i), P = new e.CharPosition(u, l); + return new s(u, { start: b, end: P }).wrap(); + } + static synthetic(u) { + return new n("InternalsSynthetic", d.NON_EXISTENT_LOCATION, u).wrap(); + } + static broken() { + let u = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : d.BROKEN_LOCATION; + return new n("Broken", u).wrap(); + } + getStart() { + return this.data.getStart().wrap(); + } + getEnd() { + return this.data.getEnd().wrap(); + } + get loc() { + let u = this.data.toHbsSpan(); + return u === null ? d.BROKEN_LOCATION : u.toHbsLoc(); + } + get module() { + return this.data.getModule(); + } + get startPosition() { + return this.loc.start; + } + get endPosition() { + return this.loc.end; + } + toJSON() { + return this.loc; + } + withStart(u) { + return a(u.data, this.data.getEnd()); + } + withEnd(u) { + return a(this.data.getStart(), u.data); + } + asString() { + return this.data.asString(); + } + toSlice(u) { + let i = this.data.asString(); + return f.DEBUG && u !== void 0 && i !== u && console.warn("unexpectedly found ".concat(JSON.stringify(i), " when slicing source, but expected ").concat(JSON.stringify(u))), new c.SourceSlice({ loc: this, chars: u || i }); + } + get start() { + return this.loc.start; + } + set start(u) { + this.data.locDidUpdate({ start: u }); + } + get end() { + return this.loc.end; + } + set end(u) { + this.data.locDidUpdate({ end: u }); + } + get source() { + return this.module; + } + collapse(u) { + switch (u) { + case "start": + return this.getStart().collapsed(); + case "end": + return this.getEnd().collapsed(); + } + } + extend(u) { + return a(this.data.getStart(), u.data.getEnd()); + } + serialize() { + return this.data.serialize(); + } + slice(u) { + let { skipStart: i = 0, skipEnd: l = 0 } = u; + return a(this.getStart().move(i).data, this.getEnd().move(-l).data); + } + sliceStartChars(u) { + let { skipStart: i = 0, chars: l } = u; + return a(this.getStart().move(i).data, this.getStart().move(i + l).data); + } + sliceEndChars(u) { + let { skipEnd: i = 0, chars: l } = u; + return a(this.getEnd().move(i - l).data, this.getStart().move(-i).data); + } + }; + t.SourceSpan = r; + var s = class { + constructor(u, i) { + this.source = u, this.charPositions = i, this.kind = "CharPosition", this._locPosSpan = null; + } + wrap() { + return new r(this); + } + asString() { + return this.source.slice(this.charPositions.start.charPos, this.charPositions.end.charPos); + } + getModule() { + return this.source.module; + } + getStart() { + return this.charPositions.start; + } + getEnd() { + return this.charPositions.end; + } + locDidUpdate() { + } + toHbsSpan() { + let u = this._locPosSpan; + if (u === null) { + let i = this.charPositions.start.toHbsPos(), l = this.charPositions.end.toHbsPos(); + i === null || l === null ? u = this._locPosSpan = e.BROKEN : u = this._locPosSpan = new p(this.source, { start: i, end: l }); + } + return u === e.BROKEN ? null : u; + } + serialize() { + let { start: { charPos: u }, end: { charPos: i } } = this.charPositions; + return u === i ? u : [u, i]; + } + toCharPosSpan() { + return this; + } + }, p = class { + constructor(u, i) { + let l = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + this.source = u, this.hbsPositions = i, this.kind = "HbsPosition", this._charPosSpan = null, this._providedHbsLoc = l; + } + serialize() { + let u = this.toCharPosSpan(); + return u === null ? "Broken" : u.wrap().serialize(); + } + wrap() { + return new r(this); + } + updateProvided(u, i) { + this._providedHbsLoc && (this._providedHbsLoc[i] = u), this._charPosSpan = null, this._providedHbsLoc = { start: u, end: u }; + } + locDidUpdate(u) { + let { start: i, end: l } = u; + i !== void 0 && (this.updateProvided(i, "start"), this.hbsPositions.start = new e.HbsPosition(this.source, i, null)), l !== void 0 && (this.updateProvided(l, "end"), this.hbsPositions.end = new e.HbsPosition(this.source, l, null)); + } + asString() { + let u = this.toCharPosSpan(); + return u === null ? "" : u.asString(); + } + getModule() { + return this.source.module; + } + getStart() { + return this.hbsPositions.start; + } + getEnd() { + return this.hbsPositions.end; + } + toHbsLoc() { + return { start: this.hbsPositions.start.hbsPos, end: this.hbsPositions.end.hbsPos }; + } + toHbsSpan() { + return this; + } + toCharPosSpan() { + let u = this._charPosSpan; + if (u === null) { + let i = this.hbsPositions.start.toCharPos(), l = this.hbsPositions.end.toCharPos(); + if (i && l) + u = this._charPosSpan = new s(this.source, { start: i, end: l }); + else + return u = this._charPosSpan = e.BROKEN, null; + } + return u === e.BROKEN ? null : u; + } + }; + t.HbsSpan = p; + var n = class { + constructor(u, i) { + let l = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + this.kind = u, this.loc = i, this.string = l; + } + serialize() { + switch (this.kind) { + case "Broken": + case "NonExistent": + return this.kind; + case "InternalsSynthetic": + return this.string || ""; + } + } + wrap() { + return new r(this); + } + asString() { + return this.string || ""; + } + locDidUpdate(u) { + let { start: i, end: l } = u; + i !== void 0 && (this.loc.start = i), l !== void 0 && (this.loc.end = l); + } + getModule() { + return "an unknown module"; + } + getStart() { + return new e.InvisiblePosition(this.kind, this.loc.start); + } + getEnd() { + return new e.InvisiblePosition(this.kind, this.loc.end); + } + toCharPosSpan() { + return this; + } + toHbsSpan() { + return null; + } + toHbsLoc() { + return d.BROKEN_LOCATION; + } + }, a = (0, o.match)((u) => u.when("HbsPosition", "HbsPosition", (i, l) => new p(i.source, { start: i, end: l }).wrap()).when("CharPosition", "CharPosition", (i, l) => new s(i.source, { start: i, end: l }).wrap()).when("CharPosition", "HbsPosition", (i, l) => { + let b = l.toCharPos(); + return b === null ? new n("Broken", d.BROKEN_LOCATION).wrap() : a(i, b); + }).when("HbsPosition", "CharPosition", (i, l) => { + let b = i.toCharPos(); + return b === null ? new n("Broken", d.BROKEN_LOCATION).wrap() : a(b, l); + }).when(o.IsInvisible, o.MatchAny, (i) => new n(i.kind, d.BROKEN_LOCATION).wrap()).when(o.MatchAny, o.IsInvisible, (i, l) => new n(l.kind, d.BROKEN_LOCATION).wrap())); + t.span = a; + } }), ue = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/span.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), Object.defineProperty(t, "SourceSpan", { enumerable: true, get: function() { + return f.SourceSpan; + } }), Object.defineProperty(t, "SourceOffset", { enumerable: true, get: function() { + return h.SourceOffset; + } }); + var f = Ve(), h = He(); + } }), De = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/source.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.Source = void 0; + var f = fe(), h = X(), d = ue(), c = class { + constructor(o) { + let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "an unknown module"; + this.source = o, this.module = e; + } + check(o) { + return o >= 0 && o <= this.source.length; + } + slice(o, e) { + return this.source.slice(o, e); + } + offsetFor(o, e) { + return d.SourceOffset.forHbsPos(this, { line: o, column: e }); + } + spanFor(o) { + let { start: e, end: r } = o; + return d.SourceSpan.forHbsLoc(this, { start: { line: e.line, column: e.column }, end: { line: r.line, column: r.column } }); + } + hbsPosFor(o) { + let e = 0, r = 0; + if (o > this.source.length) + return null; + for (; ; ) { + let s = this.source.indexOf(` +`, r); + if (o <= s || s === -1) + return { line: e + 1, column: o - r }; + e += 1, r = s + 1; + } + } + charPosFor(o) { + let { line: e, column: r } = o, p = this.source.length, n = 0, a = 0; + for (; ; ) { + if (a >= p) + return p; + let u = this.source.indexOf(` +`, a); + if (u === -1 && (u = this.source.length), n === e - 1) { + if (a + r > u) + return u; + if (f.DEBUG) { + let i = this.hbsPosFor(a + r); + } + return a + r; + } else { + if (u === -1) + return 0; + n += 1, a = u + 1; + } + } + } + }; + t.Source = c; + } }), we = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v1/legacy-interop.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.PathExpressionImplV1 = void 0; + var f = h(ke()); + function h(c) { + return c && c.__esModule ? c : { default: c }; + } + var d = class { + constructor(c, o, e, r) { + this.original = c, this.loc = r, this.type = "PathExpression", this.this = false, this.data = false, this._head = void 0; + let s = e.slice(); + o.type === "ThisHead" ? this.this = true : o.type === "AtHead" ? (this.data = true, s.unshift(o.name.slice(1))) : s.unshift(o.name), this.parts = s; + } + get head() { + if (this._head) + return this._head; + let c; + this.this ? c = "this" : this.data ? c = "@".concat(this.parts[0]) : c = this.parts[0]; + let o = this.loc.collapse("start").sliceStartChars({ chars: c.length }).loc; + return this._head = f.default.head(c, o); + } + get tail() { + return this.this ? this.parts : this.parts.slice(1); + } + }; + t.PathExpressionImplV1 = d; + } }), ke = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v1/public-builders.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = void 0; + var f = X(), h = ge(), d = De(), c = ue(), o = we(), e; + function r() { + return e || (e = new d.Source("", "(synthetic)")), e; + } + function s(T, N, k, B, O, q) { + return typeof T == "string" && (T = m(T)), { type: "MustacheStatement", path: T, params: N || [], hash: k || S([]), escaped: !B, trusting: !!B, loc: U(O || null), strip: q || { open: false, close: false } }; + } + function p(T, N, k, B, O, q, z, A, Q) { + let D, $; + return B.type === "Template" ? D = (0, f.assign)({}, B, { type: "Block" }) : D = B, O != null && O.type === "Template" ? $ = (0, f.assign)({}, O, { type: "Block" }) : $ = O, { type: "BlockStatement", path: m(T), params: N || [], hash: k || S([]), program: D || null, inverse: $ || null, loc: U(q || null), openStrip: z || { open: false, close: false }, inverseStrip: A || { open: false, close: false }, closeStrip: Q || { open: false, close: false } }; + } + function n(T, N, k, B) { + return { type: "ElementModifierStatement", path: m(T), params: N || [], hash: k || S([]), loc: U(B || null) }; + } + function a(T, N, k, B, O) { + return { type: "PartialStatement", name: T, params: N || [], hash: k || S([]), indent: B || "", strip: { open: false, close: false }, loc: U(O || null) }; + } + function u(T, N) { + return { type: "CommentStatement", value: T, loc: U(N || null) }; + } + function i(T, N) { + return { type: "MustacheCommentStatement", value: T, loc: U(N || null) }; + } + function l(T, N) { + if (!(0, f.isPresent)(T)) + throw new Error("b.concat requires at least one part"); + return { type: "ConcatStatement", parts: T || [], loc: U(N || null) }; + } + function b(T) { + let N = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, { attrs: k, blockParams: B, modifiers: O, comments: q, children: z, loc: A } = N, Q, D = false; + return typeof T == "object" ? (D = T.selfClosing, Q = T.name) : T.slice(-1) === "/" ? (Q = T.slice(0, -1), D = true) : Q = T, { type: "ElementNode", tag: Q, selfClosing: D, attributes: k || [], blockParams: B || [], modifiers: O || [], comments: q || [], children: z || [], loc: U(A || null) }; + } + function P(T, N, k) { + return { type: "AttrNode", name: T, value: N, loc: U(k || null) }; + } + function E(T, N) { + return { type: "TextNode", chars: T || "", loc: U(N || null) }; + } + function v(T, N, k, B) { + return { type: "SubExpression", path: m(T), params: N || [], hash: k || S([]), loc: U(B || null) }; + } + function _(T) { + switch (T.type) { + case "AtHead": + return { original: T.name, parts: [T.name] }; + case "ThisHead": + return { original: "this", parts: [] }; + case "VarHead": + return { original: T.name, parts: [T.name] }; + } + } + function y(T, N) { + let [k, ...B] = T.split("."), O; + return k === "this" ? O = { type: "ThisHead", loc: U(N || null) } : k[0] === "@" ? O = { type: "AtHead", name: k, loc: U(N || null) } : O = { type: "VarHead", name: k, loc: U(N || null) }, { head: O, tail: B }; + } + function g(T) { + return { type: "ThisHead", loc: U(T || null) }; + } + function L(T, N) { + return { type: "AtHead", name: T, loc: U(N || null) }; + } + function j(T, N) { + return { type: "VarHead", name: T, loc: U(N || null) }; + } + function x(T, N) { + return T[0] === "@" ? L(T, N) : T === "this" ? g(N) : j(T, N); + } + function w(T, N) { + return { type: "NamedBlockName", name: T, loc: U(N || null) }; + } + function H(T, N, k) { + let { original: B, parts: O } = _(T), q = [...O, ...N], z = [...B, ...q].join("."); + return new o.PathExpressionImplV1(z, T, N, U(k || null)); + } + function m(T, N) { + if (typeof T != "string") { + if ("type" in T) + return T; + { + let { head: O, tail: q } = y(T.head, c.SourceSpan.broken()), { original: z } = _(O); + return new o.PathExpressionImplV1([z, ...q].join("."), O, q, U(N || null)); + } + } + let { head: k, tail: B } = y(T, c.SourceSpan.broken()); + return new o.PathExpressionImplV1(T, k, B, U(N || null)); + } + function C(T, N, k) { + return { type: T, value: N, original: N, loc: U(k || null) }; + } + function S(T, N) { + return { type: "Hash", pairs: T || [], loc: U(N || null) }; + } + function R(T, N, k) { + return { type: "HashPair", key: T, value: N, loc: U(k || null) }; + } + function M(T, N, k) { + return { type: "Template", body: T || [], blockParams: N || [], loc: U(k || null) }; + } + function V(T, N) { + let k = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, B = arguments.length > 3 ? arguments[3] : void 0; + return { type: "Block", body: T || [], blockParams: N || [], chained: k, loc: U(B || null) }; + } + function G(T, N, k) { + return { type: "Template", body: T || [], blockParams: N || [], loc: U(k || null) }; + } + function K(T, N) { + return { line: T, column: N }; + } + function U() { + for (var T = arguments.length, N = new Array(T), k = 0; k < T; k++) + N[k] = arguments[k]; + if (N.length === 1) { + let B = N[0]; + return B && typeof B == "object" ? c.SourceSpan.forHbsLoc(r(), B) : c.SourceSpan.forHbsLoc(r(), h.SYNTHETIC_LOCATION); + } else { + let [B, O, q, z, A] = N, Q = A ? new d.Source("", A) : r(); + return c.SourceSpan.forHbsLoc(Q, { start: { line: B, column: O }, end: { line: q, column: z } }); + } + } + var Z = { mustache: s, block: p, partial: a, comment: u, mustacheComment: i, element: b, elementModifier: n, attr: P, text: E, sexpr: v, concat: l, hash: S, pair: R, literal: C, program: M, blockItself: V, template: G, loc: U, pos: K, path: m, fullPath: H, head: x, at: L, var: j, this: g, blockName: w, string: W("StringLiteral"), boolean: W("BooleanLiteral"), number: W("NumberLiteral"), undefined() { + return C("UndefinedLiteral", void 0); + }, null() { + return C("NullLiteral", null); + } }; + t.default = Z; + function W(T) { + return function(N, k) { + return C(T, N, k); + }; + } + } }), St = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v1/nodes-v1.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + } }), Ct = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v1/api.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + var f = St(); + Object.keys(f).forEach(function(h) { + h === "default" || h === "__esModule" || Object.defineProperty(t, h, { enumerable: true, get: function() { + return f[h]; + } }); + }); + } }), Pt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/resolution.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.loadResolution = o, t.ARGUMENT_RESOLUTION = t.LooseModeResolution = t.STRICT_RESOLUTION = t.StrictResolution = void 0; + var f = class { + constructor() { + this.isAngleBracket = false; + } + resolution() { + return 31; + } + serialize() { + return "Strict"; + } + }; + t.StrictResolution = f; + var h = new f(); + t.STRICT_RESOLUTION = h; + var d = class { + constructor(e) { + let r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + this.ambiguity = e, this.isAngleBracket = r; + } + static namespaced(e) { + let r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + return new d({ namespaces: [e], fallback: false }, r); + } + static fallback() { + return new d({ namespaces: [], fallback: true }); + } + static append(e) { + let { invoke: r } = e; + return new d({ namespaces: ["Component", "Helper"], fallback: !r }); + } + static trustingAppend(e) { + let { invoke: r } = e; + return new d({ namespaces: ["Helper"], fallback: !r }); + } + static attr() { + return new d({ namespaces: ["Helper"], fallback: true }); + } + resolution() { + if (this.ambiguity.namespaces.length === 0) + return 31; + if (this.ambiguity.namespaces.length === 1) { + if (this.ambiguity.fallback) + return 36; + switch (this.ambiguity.namespaces[0]) { + case "Helper": + return 37; + case "Modifier": + return 38; + case "Component": + return 39; + } + } else + return this.ambiguity.fallback ? 34 : 35; + } + serialize() { + return this.ambiguity.namespaces.length === 0 ? "Loose" : this.ambiguity.namespaces.length === 1 ? this.ambiguity.fallback ? ["ambiguous", "Attr"] : ["ns", this.ambiguity.namespaces[0]] : this.ambiguity.fallback ? ["ambiguous", "Append"] : ["ambiguous", "Invoke"]; + } + }; + t.LooseModeResolution = d; + var c = d.fallback(); + t.ARGUMENT_RESOLUTION = c; + function o(e) { + if (typeof e == "string") + switch (e) { + case "Loose": + return d.fallback(); + case "Strict": + return h; + } + switch (e[0]) { + case "ambiguous": + switch (e[1]) { + case "Append": + return d.append({ invoke: false }); + case "Attr": + return d.attr(); + case "Invoke": + return d.append({ invoke: true }); + } + case "ns": + return d.namespaced(e[1]); + } + } + } }), ne = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/node.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.node = h; + var f = X(); + function h(d) { + if (d !== void 0) { + let c = d; + return { fields() { + return class { + constructor(o) { + this.type = c, (0, f.assign)(this, o); + } + }; + } }; + } else + return { fields() { + return class { + constructor(c) { + (0, f.assign)(this, c); + } + }; + } }; + } + } }), be = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/args.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.NamedArgument = t.NamedArguments = t.PositionalArguments = t.Args = void 0; + var f = ne(), h = class extends (0, f.node)().fields() { + static empty(e) { + return new h({ loc: e, positional: d.empty(e), named: c.empty(e) }); + } + static named(e) { + return new h({ loc: e.loc, positional: d.empty(e.loc.collapse("end")), named: e }); + } + nth(e) { + return this.positional.nth(e); + } + get(e) { + return this.named.get(e); + } + isEmpty() { + return this.positional.isEmpty() && this.named.isEmpty(); + } + }; + t.Args = h; + var d = class extends (0, f.node)().fields() { + static empty(e) { + return new d({ loc: e, exprs: [] }); + } + get size() { + return this.exprs.length; + } + nth(e) { + return this.exprs[e] || null; + } + isEmpty() { + return this.exprs.length === 0; + } + }; + t.PositionalArguments = d; + var c = class extends (0, f.node)().fields() { + static empty(e) { + return new c({ loc: e, entries: [] }); + } + get size() { + return this.entries.length; + } + get(e) { + let r = this.entries.filter((s) => s.name.chars === e)[0]; + return r ? r.value : null; + } + isEmpty() { + return this.entries.length === 0; + } + }; + t.NamedArguments = c; + var o = class { + constructor(e) { + this.loc = e.name.loc.extend(e.value.loc), this.name = e.name, this.value = e.value; + } + }; + t.NamedArgument = o; + } }), Dt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/attr-block.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.ElementModifier = t.ComponentArg = t.SplatAttr = t.HtmlAttr = void 0; + var f = be(), h = ne(), d = class extends (0, h.node)("HtmlAttr").fields() { + }; + t.HtmlAttr = d; + var c = class extends (0, h.node)("SplatAttr").fields() { + }; + t.SplatAttr = c; + var o = class extends (0, h.node)().fields() { + toNamedArgument() { + return new f.NamedArgument({ name: this.name, value: this.value }); + } + }; + t.ComponentArg = o; + var e = class extends (0, h.node)("ElementModifier").fields() { + }; + t.ElementModifier = e; + } }), wt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/base.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + } }), ce = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/source/span-list.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.loc = d, t.hasSpan = c, t.maybeLoc = o, t.SpanList = void 0; + var f = ue(), h = class { + constructor() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; + this._span = e; + } + static range(e) { + let r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : f.SourceSpan.NON_EXISTENT; + return new h(e.map(d)).getRangeOffset(r); + } + add(e) { + this._span.push(e); + } + getRangeOffset(e) { + if (this._span.length === 0) + return e; + { + let r = this._span[0], s = this._span[this._span.length - 1]; + return r.extend(s); + } + } + }; + t.SpanList = h; + function d(e) { + if (Array.isArray(e)) { + let r = e[0], s = e[e.length - 1]; + return d(r).extend(d(s)); + } else + return e instanceof f.SourceSpan ? e : e.loc; + } + function c(e) { + return !(Array.isArray(e) && e.length === 0); + } + function o(e, r) { + return c(e) ? d(e) : r; + } + } }), kt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/content.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.SimpleElement = t.InvokeComponent = t.InvokeBlock = t.AppendContent = t.HtmlComment = t.HtmlText = t.GlimmerComment = void 0; + var f = ce(), h = be(), d = ne(), c = class extends (0, d.node)("GlimmerComment").fields() { + }; + t.GlimmerComment = c; + var o = class extends (0, d.node)("HtmlText").fields() { + }; + t.HtmlText = o; + var e = class extends (0, d.node)("HtmlComment").fields() { + }; + t.HtmlComment = e; + var r = class extends (0, d.node)("AppendContent").fields() { + get callee() { + return this.value.type === "Call" ? this.value.callee : this.value; + } + get args() { + return this.value.type === "Call" ? this.value.args : h.Args.empty(this.value.loc.collapse("end")); + } + }; + t.AppendContent = r; + var s = class extends (0, d.node)("InvokeBlock").fields() { + }; + t.InvokeBlock = s; + var p = class extends (0, d.node)("InvokeComponent").fields() { + get args() { + let a = this.componentArgs.map((u) => u.toNamedArgument()); + return h.Args.named(new h.NamedArguments({ loc: f.SpanList.range(a, this.callee.loc.collapse("end")), entries: a })); + } + }; + t.InvokeComponent = p; + var n = class extends (0, d.node)("SimpleElement").fields() { + get args() { + let a = this.componentArgs.map((u) => u.toNamedArgument()); + return h.Args.named(new h.NamedArguments({ loc: f.SpanList.range(a, this.tag.loc.collapse("end")), entries: a })); + } + }; + t.SimpleElement = n; + } }), Tt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/expr.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.isLiteral = c, t.InterpolateExpression = t.DeprecatedCallExpression = t.CallExpression = t.PathExpression = t.LiteralExpression = void 0; + var f = le(), h = ne(), d = class extends (0, h.node)("Literal").fields() { + toSlice() { + return new f.SourceSlice({ loc: this.loc, chars: this.value }); + } + }; + t.LiteralExpression = d; + function c(p, n) { + return p.type === "Literal" ? n === void 0 ? true : n === "null" ? p.value === null : typeof p.value === n : false; + } + var o = class extends (0, h.node)("Path").fields() { + }; + t.PathExpression = o; + var e = class extends (0, h.node)("Call").fields() { + }; + t.CallExpression = e; + var r = class extends (0, h.node)("DeprecatedCall").fields() { + }; + t.DeprecatedCallExpression = r; + var s = class extends (0, h.node)("Interpolate").fields() { + }; + t.InterpolateExpression = s; + } }), Bt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/refs.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.FreeVarReference = t.LocalVarReference = t.ArgReference = t.ThisReference = void 0; + var f = ne(), h = class extends (0, f.node)("This").fields() { + }; + t.ThisReference = h; + var d = class extends (0, f.node)("Arg").fields() { + }; + t.ArgReference = d; + var c = class extends (0, f.node)("Local").fields() { + }; + t.LocalVarReference = c; + var o = class extends (0, f.node)("Free").fields() { + }; + t.FreeVarReference = o; + } }), Ot = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/objects/internal-node.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.NamedBlock = t.NamedBlocks = t.Block = t.Template = void 0; + var f = ce(), h = be(), d = ne(), c = class extends (0, d.node)().fields() { + }; + t.Template = c; + var o = class extends (0, d.node)().fields() { + }; + t.Block = o; + var e = class extends (0, d.node)().fields() { + get(s) { + return this.blocks.filter((p) => p.name.chars === s)[0] || null; + } + }; + t.NamedBlocks = e; + var r = class extends (0, d.node)().fields() { + get args() { + let s = this.componentArgs.map((p) => p.toNamedArgument()); + return h.Args.named(new h.NamedArguments({ loc: f.SpanList.range(s, this.name.loc.collapse("end")), entries: s })); + } + }; + t.NamedBlock = r; + } }), ve = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/api.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + var f = Pt(); + Object.keys(f).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return f[n]; + } }); + }); + var h = ne(); + Object.keys(h).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return h[n]; + } }); + }); + var d = be(); + Object.keys(d).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return d[n]; + } }); + }); + var c = Dt(); + Object.keys(c).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return c[n]; + } }); + }); + var o = wt(); + Object.keys(o).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return o[n]; + } }); + }); + var e = kt(); + Object.keys(e).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return e[n]; + } }); + }); + var r = Tt(); + Object.keys(r).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return r[n]; + } }); + }); + var s = Bt(); + Object.keys(s).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return s[n]; + } }); + }); + var p = Ot(); + Object.keys(p).forEach(function(n) { + n === "default" || n === "__esModule" || Object.defineProperty(t, n, { enumerable: true, get: function() { + return p[n]; + } }); + }); + } }), Ue = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/generation/util.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.escapeAttrValue = r, t.escapeText = s, t.sortByLoc = p; + var f = /[\xA0"&]/, h = new RegExp(f.source, "g"), d = /[\xA0&<>]/, c = new RegExp(d.source, "g"); + function o(n) { + switch (n.charCodeAt(0)) { + case 160: + return " "; + case 34: + return """; + case 38: + return "&"; + default: + return n; + } + } + function e(n) { + switch (n.charCodeAt(0)) { + case 160: + return " "; + case 38: + return "&"; + case 60: + return "<"; + case 62: + return ">"; + default: + return n; + } + } + function r(n) { + return f.test(n) ? n.replace(h, o) : n; + } + function s(n) { + return d.test(n) ? n.replace(c, e) : n; + } + function p(n, a) { + return n.loc.isInvisible || a.loc.isInvisible ? 0 : n.loc.startPosition.line < a.loc.startPosition.line || n.loc.startPosition.line === a.loc.startPosition.line && n.loc.startPosition.column < a.loc.startPosition.column ? -1 : n.loc.startPosition.line === a.loc.startPosition.line && n.loc.startPosition.column === a.loc.startPosition.column ? 0 : 1; + } + } }), Te = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/generation/printer.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = t.voidMap = void 0; + var f = Ue(), h = /* @__PURE__ */ Object.create(null); + t.voidMap = h; + var d = "area base br col command embed hr img input keygen link meta param source track wbr"; + d.split(" ").forEach((e) => { + h[e] = true; + }); + var c = /\S/, o = class { + constructor(e) { + this.buffer = "", this.options = e; + } + handledByOverride(e) { + let r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + if (this.options.override !== void 0) { + let s = this.options.override(e, this.options); + if (typeof s == "string") + return r && s !== "" && c.test(s[0]) && (s = " ".concat(s)), this.buffer += s, true; + } + return false; + } + Node(e) { + switch (e.type) { + case "MustacheStatement": + case "BlockStatement": + case "PartialStatement": + case "MustacheCommentStatement": + case "CommentStatement": + case "TextNode": + case "ElementNode": + case "AttrNode": + case "Block": + case "Template": + return this.TopLevelStatement(e); + case "StringLiteral": + case "BooleanLiteral": + case "NumberLiteral": + case "UndefinedLiteral": + case "NullLiteral": + case "PathExpression": + case "SubExpression": + return this.Expression(e); + case "Program": + return this.Block(e); + case "ConcatStatement": + return this.ConcatStatement(e); + case "Hash": + return this.Hash(e); + case "HashPair": + return this.HashPair(e); + case "ElementModifierStatement": + return this.ElementModifierStatement(e); + } + } + Expression(e) { + switch (e.type) { + case "StringLiteral": + case "BooleanLiteral": + case "NumberLiteral": + case "UndefinedLiteral": + case "NullLiteral": + return this.Literal(e); + case "PathExpression": + return this.PathExpression(e); + case "SubExpression": + return this.SubExpression(e); + } + } + Literal(e) { + switch (e.type) { + case "StringLiteral": + return this.StringLiteral(e); + case "BooleanLiteral": + return this.BooleanLiteral(e); + case "NumberLiteral": + return this.NumberLiteral(e); + case "UndefinedLiteral": + return this.UndefinedLiteral(e); + case "NullLiteral": + return this.NullLiteral(e); + } + } + TopLevelStatement(e) { + switch (e.type) { + case "MustacheStatement": + return this.MustacheStatement(e); + case "BlockStatement": + return this.BlockStatement(e); + case "PartialStatement": + return this.PartialStatement(e); + case "MustacheCommentStatement": + return this.MustacheCommentStatement(e); + case "CommentStatement": + return this.CommentStatement(e); + case "TextNode": + return this.TextNode(e); + case "ElementNode": + return this.ElementNode(e); + case "Block": + case "Template": + return this.Block(e); + case "AttrNode": + return this.AttrNode(e); + } + } + Block(e) { + if (e.chained) { + let r = e.body[0]; + r.chained = true; + } + this.handledByOverride(e) || this.TopLevelStatements(e.body); + } + TopLevelStatements(e) { + e.forEach((r) => this.TopLevelStatement(r)); + } + ElementNode(e) { + this.handledByOverride(e) || (this.OpenElementNode(e), this.TopLevelStatements(e.children), this.CloseElementNode(e)); + } + OpenElementNode(e) { + this.buffer += "<".concat(e.tag); + let r = [...e.attributes, ...e.modifiers, ...e.comments].sort(f.sortByLoc); + for (let s of r) + switch (this.buffer += " ", s.type) { + case "AttrNode": + this.AttrNode(s); + break; + case "ElementModifierStatement": + this.ElementModifierStatement(s); + break; + case "MustacheCommentStatement": + this.MustacheCommentStatement(s); + break; + } + e.blockParams.length && this.BlockParams(e.blockParams), e.selfClosing && (this.buffer += " /"), this.buffer += ">"; + } + CloseElementNode(e) { + e.selfClosing || h[e.tag.toLowerCase()] || (this.buffer += "")); + } + AttrNode(e) { + if (this.handledByOverride(e)) + return; + let { name: r, value: s } = e; + this.buffer += r, (s.type !== "TextNode" || s.chars.length > 0) && (this.buffer += "=", this.AttrNodeValue(s)); + } + AttrNodeValue(e) { + e.type === "TextNode" ? (this.buffer += '"', this.TextNode(e, true), this.buffer += '"') : this.Node(e); + } + TextNode(e, r) { + this.handledByOverride(e) || (this.options.entityEncoding === "raw" ? this.buffer += e.chars : r ? this.buffer += (0, f.escapeAttrValue)(e.chars) : this.buffer += (0, f.escapeText)(e.chars)); + } + MustacheStatement(e) { + this.handledByOverride(e) || (this.buffer += e.escaped ? "{{" : "{{{", e.strip.open && (this.buffer += "~"), this.Expression(e.path), this.Params(e.params), this.Hash(e.hash), e.strip.close && (this.buffer += "~"), this.buffer += e.escaped ? "}}" : "}}}"); + } + BlockStatement(e) { + this.handledByOverride(e) || (e.chained ? (this.buffer += e.inverseStrip.open ? "{{~" : "{{", this.buffer += "else ") : this.buffer += e.openStrip.open ? "{{~#" : "{{#", this.Expression(e.path), this.Params(e.params), this.Hash(e.hash), e.program.blockParams.length && this.BlockParams(e.program.blockParams), e.chained ? this.buffer += e.inverseStrip.close ? "~}}" : "}}" : this.buffer += e.openStrip.close ? "~}}" : "}}", this.Block(e.program), e.inverse && (e.inverse.chained || (this.buffer += e.inverseStrip.open ? "{{~" : "{{", this.buffer += "else", this.buffer += e.inverseStrip.close ? "~}}" : "}}"), this.Block(e.inverse)), e.chained || (this.buffer += e.closeStrip.open ? "{{~/" : "{{/", this.Expression(e.path), this.buffer += e.closeStrip.close ? "~}}" : "}}")); + } + BlockParams(e) { + this.buffer += " as |".concat(e.join(" "), "|"); + } + PartialStatement(e) { + this.handledByOverride(e) || (this.buffer += "{{>", this.Expression(e.name), this.Params(e.params), this.Hash(e.hash), this.buffer += "}}"); + } + ConcatStatement(e) { + this.handledByOverride(e) || (this.buffer += '"', e.parts.forEach((r) => { + r.type === "TextNode" ? this.TextNode(r, true) : this.Node(r); + }), this.buffer += '"'); + } + MustacheCommentStatement(e) { + this.handledByOverride(e) || (this.buffer += "{{!--".concat(e.value, "--}}")); + } + ElementModifierStatement(e) { + this.handledByOverride(e) || (this.buffer += "{{", this.Expression(e.path), this.Params(e.params), this.Hash(e.hash), this.buffer += "}}"); + } + CommentStatement(e) { + this.handledByOverride(e) || (this.buffer += "")); + } + PathExpression(e) { + this.handledByOverride(e) || (this.buffer += e.original); + } + SubExpression(e) { + this.handledByOverride(e) || (this.buffer += "(", this.Expression(e.path), this.Params(e.params), this.Hash(e.hash), this.buffer += ")"); + } + Params(e) { + e.length && e.forEach((r) => { + this.buffer += " ", this.Expression(r); + }); + } + Hash(e) { + this.handledByOverride(e, true) || e.pairs.forEach((r) => { + this.buffer += " ", this.HashPair(r); + }); + } + HashPair(e) { + this.handledByOverride(e) || (this.buffer += e.key, this.buffer += "=", this.Node(e.value)); + } + StringLiteral(e) { + this.handledByOverride(e) || (this.buffer += JSON.stringify(e.value)); + } + BooleanLiteral(e) { + this.handledByOverride(e) || (this.buffer += e.value); + } + NumberLiteral(e) { + this.handledByOverride(e) || (this.buffer += e.value); + } + UndefinedLiteral(e) { + this.handledByOverride(e) || (this.buffer += "undefined"); + } + NullLiteral(e) { + this.handledByOverride(e) || (this.buffer += "null"); + } + print(e) { + let { options: r } = this; + if (r.override) { + let s = r.override(e, r); + if (s !== void 0) + return s; + } + return this.buffer = "", this.Node(e), this.buffer; + } + }; + t.default = o; + } }), Be = I({ "node_modules/@handlebars/parser/dist/cjs/exception.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + var f = ["description", "fileName", "lineNumber", "endLineNumber", "message", "name", "number", "stack"]; + function h(d, c) { + var o = c && c.loc, e, r, s, p; + o && (e = o.start.line, r = o.end.line, s = o.start.column, p = o.end.column, d += " - " + e + ":" + s); + for (var n = Error.prototype.constructor.call(this, d), a = 0; a < f.length; a++) + this[f[a]] = n[f[a]]; + Error.captureStackTrace && Error.captureStackTrace(this, h); + try { + o && (this.lineNumber = e, this.endLineNumber = r, Object.defineProperty ? (Object.defineProperty(this, "column", { value: s, enumerable: true }), Object.defineProperty(this, "endColumn", { value: p, enumerable: true })) : (this.column = s, this.endColumn = p)); + } catch { + } + } + h.prototype = new Error(), t.default = h; + } }), Oe = I({ "node_modules/@handlebars/parser/dist/cjs/visitor.js"(t) { + "use strict"; + F(); + var f = t && t.__importDefault || function(r) { + return r && r.__esModule ? r : { default: r }; + }; + Object.defineProperty(t, "__esModule", { value: true }); + var h = f(Be()); + function d() { + this.parents = []; + } + d.prototype = { constructor: d, mutating: false, acceptKey: function(r, s) { + var p = this.accept(r[s]); + if (this.mutating) { + if (p && !d.prototype[p.type]) + throw new h.default('Unexpected node type "' + p.type + '" found when accepting ' + s + " on " + r.type); + r[s] = p; + } + }, acceptRequired: function(r, s) { + if (this.acceptKey(r, s), !r[s]) + throw new h.default(r.type + " requires " + s); + }, acceptArray: function(r) { + for (var s = 0, p = r.length; s < p; s++) + this.acceptKey(r, s), r[s] || (r.splice(s, 1), s--, p--); + }, accept: function(r) { + if (!!r) { + if (!this[r.type]) + throw new h.default("Unknown type: " + r.type, r); + this.current && this.parents.unshift(this.current), this.current = r; + var s = this[r.type](r); + if (this.current = this.parents.shift(), !this.mutating || s) + return s; + if (s !== false) + return r; + } + }, Program: function(r) { + this.acceptArray(r.body); + }, MustacheStatement: c, Decorator: c, BlockStatement: o, DecoratorBlock: o, PartialStatement: e, PartialBlockStatement: function(r) { + e.call(this, r), this.acceptKey(r, "program"); + }, ContentStatement: function() { + }, CommentStatement: function() { + }, SubExpression: c, PathExpression: function() { + }, StringLiteral: function() { + }, NumberLiteral: function() { + }, BooleanLiteral: function() { + }, UndefinedLiteral: function() { + }, NullLiteral: function() { + }, Hash: function(r) { + this.acceptArray(r.pairs); + }, HashPair: function(r) { + this.acceptRequired(r, "value"); + } }; + function c(r) { + this.acceptRequired(r, "path"), this.acceptArray(r.params), this.acceptKey(r, "hash"); + } + function o(r) { + c.call(this, r), this.acceptKey(r, "program"), this.acceptKey(r, "inverse"); + } + function e(r) { + this.acceptRequired(r, "name"), this.acceptArray(r.params), this.acceptKey(r, "hash"); + } + t.default = d; + } }), ze = I({ "node_modules/@handlebars/parser/dist/cjs/whitespace-control.js"(t) { + "use strict"; + F(); + var f = t && t.__importDefault || function(s) { + return s && s.__esModule ? s : { default: s }; + }; + Object.defineProperty(t, "__esModule", { value: true }); + var h = f(Oe()); + function d(s) { + s === void 0 && (s = {}), this.options = s; + } + d.prototype = new h.default(), d.prototype.Program = function(s) { + var p = !this.options.ignoreStandalone, n = !this.isRootSeen; + this.isRootSeen = true; + for (var a = s.body, u = 0, i = a.length; u < i; u++) { + var l = a[u], b = this.accept(l); + if (!!b) { + var P = c(a, u, n), E = o(a, u, n), v = b.openStandalone && P, _ = b.closeStandalone && E, y = b.inlineStandalone && P && E; + b.close && e(a, u, true), b.open && r(a, u, true), p && y && (e(a, u), r(a, u) && l.type === "PartialStatement" && (l.indent = /([ \t]+$)/.exec(a[u - 1].original)[1])), p && v && (e((l.program || l.inverse).body), r(a, u)), p && _ && (e(a, u), r((l.inverse || l.program).body)); + } + } + return s; + }, d.prototype.BlockStatement = d.prototype.DecoratorBlock = d.prototype.PartialBlockStatement = function(s) { + this.accept(s.program), this.accept(s.inverse); + var p = s.program || s.inverse, n = s.program && s.inverse, a = n, u = n; + if (n && n.chained) + for (a = n.body[0].program; u.chained; ) + u = u.body[u.body.length - 1].program; + var i = { open: s.openStrip.open, close: s.closeStrip.close, openStandalone: o(p.body), closeStandalone: c((a || p).body) }; + if (s.openStrip.close && e(p.body, null, true), n) { + var l = s.inverseStrip; + l.open && r(p.body, null, true), l.close && e(a.body, null, true), s.closeStrip.open && r(u.body, null, true), !this.options.ignoreStandalone && c(p.body) && o(a.body) && (r(p.body), e(a.body)); + } else + s.closeStrip.open && r(p.body, null, true); + return i; + }, d.prototype.Decorator = d.prototype.MustacheStatement = function(s) { + return s.strip; + }, d.prototype.PartialStatement = d.prototype.CommentStatement = function(s) { + var p = s.strip || {}; + return { inlineStandalone: true, open: p.open, close: p.close }; + }; + function c(s, p, n) { + p === void 0 && (p = s.length); + var a = s[p - 1], u = s[p - 2]; + if (!a) + return n; + if (a.type === "ContentStatement") + return (u || !n ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(a.original); + } + function o(s, p, n) { + p === void 0 && (p = -1); + var a = s[p + 1], u = s[p + 2]; + if (!a) + return n; + if (a.type === "ContentStatement") + return (u || !n ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(a.original); + } + function e(s, p, n) { + var a = s[p == null ? 0 : p + 1]; + if (!(!a || a.type !== "ContentStatement" || !n && a.rightStripped)) { + var u = a.value; + a.value = a.value.replace(n ? /^\s+/ : /^[ \t]*\r?\n?/, ""), a.rightStripped = a.value !== u; + } + } + function r(s, p, n) { + var a = s[p == null ? s.length - 1 : p - 1]; + if (!(!a || a.type !== "ContentStatement" || !n && a.leftStripped)) { + var u = a.value; + return a.value = a.value.replace(n ? /\s+$/ : /[ \t]+$/, ""), a.leftStripped = a.value !== u, a.leftStripped; + } + } + t.default = d; + } }), Ge = I({ "node_modules/@handlebars/parser/dist/cjs/parser.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }); + var f = function() { + var h = function(N, k, B, O) { + for (B = B || {}, O = N.length; O--; B[N[O]] = k) + ; + return B; + }, d = [2, 44], c = [1, 20], o = [5, 14, 15, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60], e = [1, 35], r = [1, 38], s = [1, 30], p = [1, 31], n = [1, 32], a = [1, 33], u = [1, 34], i = [1, 37], l = [14, 15, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60], b = [14, 15, 19, 29, 34, 44, 47, 48, 52, 56, 60], P = [15, 18], E = [14, 15, 19, 29, 34, 47, 48, 52, 56, 60], v = [33, 64, 71, 79, 80, 81, 82, 83, 84], _ = [23, 33, 55, 64, 67, 71, 74, 79, 80, 81, 82, 83, 84], y = [1, 51], g = [23, 33, 55, 64, 67, 71, 74, 79, 80, 81, 82, 83, 84, 86], L = [2, 43], j = [55, 64, 71, 79, 80, 81, 82, 83, 84], x = [1, 58], w = [1, 59], H = [1, 66], m = [33, 64, 71, 74, 79, 80, 81, 82, 83, 84], C = [23, 64, 71, 79, 80, 81, 82, 83, 84], S = [1, 76], R = [64, 67, 71, 79, 80, 81, 82, 83, 84], M = [33, 74], V = [23, 33, 55, 67, 71, 74], G = [1, 106], K = [1, 118], U = [71, 76], Z = { trace: function() { + }, yy: {}, symbols_: { error: 2, root: 3, program: 4, EOF: 5, program_repetition0: 6, statement: 7, mustache: 8, block: 9, rawBlock: 10, partial: 11, partialBlock: 12, content: 13, COMMENT: 14, CONTENT: 15, openRawBlock: 16, rawBlock_repetition0: 17, END_RAW_BLOCK: 18, OPEN_RAW_BLOCK: 19, helperName: 20, openRawBlock_repetition0: 21, openRawBlock_option0: 22, CLOSE_RAW_BLOCK: 23, openBlock: 24, block_option0: 25, closeBlock: 26, openInverse: 27, block_option1: 28, OPEN_BLOCK: 29, openBlock_repetition0: 30, openBlock_option0: 31, openBlock_option1: 32, CLOSE: 33, OPEN_INVERSE: 34, openInverse_repetition0: 35, openInverse_option0: 36, openInverse_option1: 37, openInverseChain: 38, OPEN_INVERSE_CHAIN: 39, openInverseChain_repetition0: 40, openInverseChain_option0: 41, openInverseChain_option1: 42, inverseAndProgram: 43, INVERSE: 44, inverseChain: 45, inverseChain_option0: 46, OPEN_ENDBLOCK: 47, OPEN: 48, expr: 49, mustache_repetition0: 50, mustache_option0: 51, OPEN_UNESCAPED: 52, mustache_repetition1: 53, mustache_option1: 54, CLOSE_UNESCAPED: 55, OPEN_PARTIAL: 56, partial_repetition0: 57, partial_option0: 58, openPartialBlock: 59, OPEN_PARTIAL_BLOCK: 60, openPartialBlock_repetition0: 61, openPartialBlock_option0: 62, sexpr: 63, OPEN_SEXPR: 64, sexpr_repetition0: 65, sexpr_option0: 66, CLOSE_SEXPR: 67, hash: 68, hash_repetition_plus0: 69, hashSegment: 70, ID: 71, EQUALS: 72, blockParams: 73, OPEN_BLOCK_PARAMS: 74, blockParams_repetition_plus0: 75, CLOSE_BLOCK_PARAMS: 76, path: 77, dataName: 78, STRING: 79, NUMBER: 80, BOOLEAN: 81, UNDEFINED: 82, NULL: 83, DATA: 84, pathSegments: 85, SEP: 86, $accept: 0, $end: 1 }, terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 52: "OPEN_UNESCAPED", 55: "CLOSE_UNESCAPED", 56: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 64: "OPEN_SEXPR", 67: "CLOSE_SEXPR", 71: "ID", 72: "EQUALS", 74: "OPEN_BLOCK_PARAMS", 76: "CLOSE_BLOCK_PARAMS", 79: "STRING", 80: "NUMBER", 81: "BOOLEAN", 82: "UNDEFINED", 83: "NULL", 84: "DATA", 86: "SEP" }, productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [49, 1], [49, 1], [63, 5], [68, 1], [70, 3], [73, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [78, 2], [77, 1], [85, 3], [85, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [50, 0], [50, 2], [51, 0], [51, 1], [53, 0], [53, 2], [54, 0], [54, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [65, 0], [65, 2], [66, 0], [66, 1], [69, 1], [69, 2], [75, 1], [75, 2]], performAction: function(k, B, O, q, z, A, Q) { + var D = A.length - 1; + switch (z) { + case 1: + return A[D - 1]; + case 2: + this.$ = q.prepareProgram(A[D]); + break; + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 20: + case 27: + case 28: + case 33: + case 34: + this.$ = A[D]; + break; + case 9: + this.$ = { type: "CommentStatement", value: q.stripComment(A[D]), strip: q.stripFlags(A[D], A[D]), loc: q.locInfo(this._$) }; + break; + case 10: + this.$ = { type: "ContentStatement", original: A[D], value: A[D], loc: q.locInfo(this._$) }; + break; + case 11: + this.$ = q.prepareRawBlock(A[D - 2], A[D - 1], A[D], this._$); + break; + case 12: + this.$ = { path: A[D - 3], params: A[D - 2], hash: A[D - 1] }; + break; + case 13: + this.$ = q.prepareBlock(A[D - 3], A[D - 2], A[D - 1], A[D], false, this._$); + break; + case 14: + this.$ = q.prepareBlock(A[D - 3], A[D - 2], A[D - 1], A[D], true, this._$); + break; + case 15: + this.$ = { open: A[D - 5], path: A[D - 4], params: A[D - 3], hash: A[D - 2], blockParams: A[D - 1], strip: q.stripFlags(A[D - 5], A[D]) }; + break; + case 16: + case 17: + this.$ = { path: A[D - 4], params: A[D - 3], hash: A[D - 2], blockParams: A[D - 1], strip: q.stripFlags(A[D - 5], A[D]) }; + break; + case 18: + this.$ = { strip: q.stripFlags(A[D - 1], A[D - 1]), program: A[D] }; + break; + case 19: + var $ = q.prepareBlock(A[D - 2], A[D - 1], A[D], A[D], false, this._$), oe = q.prepareProgram([$], A[D - 1].loc); + oe.chained = true, this.$ = { strip: A[D - 2].strip, program: oe, chain: true }; + break; + case 21: + this.$ = { path: A[D - 1], strip: q.stripFlags(A[D - 2], A[D]) }; + break; + case 22: + case 23: + this.$ = q.prepareMustache(A[D - 3], A[D - 2], A[D - 1], A[D - 4], q.stripFlags(A[D - 4], A[D]), this._$); + break; + case 24: + this.$ = { type: "PartialStatement", name: A[D - 3], params: A[D - 2], hash: A[D - 1], indent: "", strip: q.stripFlags(A[D - 4], A[D]), loc: q.locInfo(this._$) }; + break; + case 25: + this.$ = q.preparePartialBlock(A[D - 2], A[D - 1], A[D], this._$); + break; + case 26: + this.$ = { path: A[D - 3], params: A[D - 2], hash: A[D - 1], strip: q.stripFlags(A[D - 4], A[D]) }; + break; + case 29: + this.$ = { type: "SubExpression", path: A[D - 3], params: A[D - 2], hash: A[D - 1], loc: q.locInfo(this._$) }; + break; + case 30: + this.$ = { type: "Hash", pairs: A[D], loc: q.locInfo(this._$) }; + break; + case 31: + this.$ = { type: "HashPair", key: q.id(A[D - 2]), value: A[D], loc: q.locInfo(this._$) }; + break; + case 32: + this.$ = q.id(A[D - 1]); + break; + case 35: + this.$ = { type: "StringLiteral", value: A[D], original: A[D], loc: q.locInfo(this._$) }; + break; + case 36: + this.$ = { type: "NumberLiteral", value: Number(A[D]), original: Number(A[D]), loc: q.locInfo(this._$) }; + break; + case 37: + this.$ = { type: "BooleanLiteral", value: A[D] === "true", original: A[D] === "true", loc: q.locInfo(this._$) }; + break; + case 38: + this.$ = { type: "UndefinedLiteral", original: void 0, value: void 0, loc: q.locInfo(this._$) }; + break; + case 39: + this.$ = { type: "NullLiteral", original: null, value: null, loc: q.locInfo(this._$) }; + break; + case 40: + this.$ = q.preparePath(true, A[D], this._$); + break; + case 41: + this.$ = q.preparePath(false, A[D], this._$); + break; + case 42: + A[D - 2].push({ part: q.id(A[D]), original: A[D], separator: A[D - 1] }), this.$ = A[D - 2]; + break; + case 43: + this.$ = [{ part: q.id(A[D]), original: A[D] }]; + break; + case 44: + case 46: + case 48: + case 56: + case 62: + case 68: + case 76: + case 80: + case 84: + case 88: + case 92: + this.$ = []; + break; + case 45: + case 47: + case 49: + case 57: + case 63: + case 69: + case 77: + case 81: + case 85: + case 89: + case 93: + case 97: + case 99: + A[D - 1].push(A[D]); + break; + case 96: + case 98: + this.$ = [A[D]]; + break; + } + }, table: [h([5, 14, 15, 19, 29, 34, 48, 52, 56, 60], d, { 3: 1, 4: 2, 6: 3 }), { 1: [3] }, { 5: [1, 4] }, h([5, 39, 44, 47], [2, 2], { 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 24: 15, 27: 16, 16: 17, 59: 19, 14: [1, 12], 15: c, 19: [1, 23], 29: [1, 21], 34: [1, 22], 48: [1, 13], 52: [1, 14], 56: [1, 18], 60: [1, 24] }), { 1: [2, 1] }, h(o, [2, 45]), h(o, [2, 3]), h(o, [2, 4]), h(o, [2, 5]), h(o, [2, 6]), h(o, [2, 7]), h(o, [2, 8]), h(o, [2, 9]), { 20: 26, 49: 25, 63: 27, 64: e, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 20: 26, 49: 39, 63: 27, 64: e, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(l, d, { 6: 3, 4: 40 }), h(b, d, { 6: 3, 4: 41 }), h(P, [2, 46], { 17: 42 }), { 20: 26, 49: 43, 63: 27, 64: e, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(E, d, { 6: 3, 4: 44 }), h([5, 14, 15, 18, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60], [2, 10]), { 20: 45, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 20: 46, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 20: 47, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 20: 26, 49: 48, 63: 27, 64: e, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(v, [2, 76], { 50: 49 }), h(_, [2, 27]), h(_, [2, 28]), h(_, [2, 33]), h(_, [2, 34]), h(_, [2, 35]), h(_, [2, 36]), h(_, [2, 37]), h(_, [2, 38]), h(_, [2, 39]), { 20: 26, 49: 50, 63: 27, 64: e, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(_, [2, 41], { 86: y }), { 71: r, 85: 52 }, h(g, L), h(j, [2, 80], { 53: 53 }), { 25: 54, 38: 56, 39: x, 43: 57, 44: w, 45: 55, 47: [2, 52] }, { 28: 60, 43: 61, 44: w, 47: [2, 54] }, { 13: 63, 15: c, 18: [1, 62] }, h(v, [2, 84], { 57: 64 }), { 26: 65, 47: H }, h(m, [2, 56], { 30: 67 }), h(m, [2, 62], { 35: 68 }), h(C, [2, 48], { 21: 69 }), h(v, [2, 88], { 61: 70 }), { 20: 26, 33: [2, 78], 49: 72, 51: 71, 63: 27, 64: e, 68: 73, 69: 74, 70: 75, 71: S, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(R, [2, 92], { 65: 77 }), { 71: [1, 78] }, h(_, [2, 40], { 86: y }), { 20: 26, 49: 80, 54: 79, 55: [2, 82], 63: 27, 64: e, 68: 81, 69: 74, 70: 75, 71: S, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 26: 82, 47: H }, { 47: [2, 53] }, h(l, d, { 6: 3, 4: 83 }), { 47: [2, 20] }, { 20: 84, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(E, d, { 6: 3, 4: 85 }), { 26: 86, 47: H }, { 47: [2, 55] }, h(o, [2, 11]), h(P, [2, 47]), { 20: 26, 33: [2, 86], 49: 88, 58: 87, 63: 27, 64: e, 68: 89, 69: 74, 70: 75, 71: S, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(o, [2, 25]), { 20: 90, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(M, [2, 58], { 20: 26, 63: 27, 77: 28, 78: 29, 85: 36, 69: 74, 70: 75, 31: 91, 49: 92, 68: 93, 64: e, 71: S, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i }), h(M, [2, 64], { 20: 26, 63: 27, 77: 28, 78: 29, 85: 36, 69: 74, 70: 75, 36: 94, 49: 95, 68: 96, 64: e, 71: S, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i }), { 20: 26, 22: 97, 23: [2, 50], 49: 98, 63: 27, 64: e, 68: 99, 69: 74, 70: 75, 71: S, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 20: 26, 33: [2, 90], 49: 101, 62: 100, 63: 27, 64: e, 68: 102, 69: 74, 70: 75, 71: S, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 33: [1, 103] }, h(v, [2, 77]), { 33: [2, 79] }, h([23, 33, 55, 67, 74], [2, 30], { 70: 104, 71: [1, 105] }), h(V, [2, 96]), h(g, L, { 72: G }), { 20: 26, 49: 108, 63: 27, 64: e, 66: 107, 67: [2, 94], 68: 109, 69: 74, 70: 75, 71: S, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, h(g, [2, 42]), { 55: [1, 110] }, h(j, [2, 81]), { 55: [2, 83] }, h(o, [2, 13]), { 38: 56, 39: x, 43: 57, 44: w, 45: 112, 46: 111, 47: [2, 74] }, h(m, [2, 68], { 40: 113 }), { 47: [2, 18] }, h(o, [2, 14]), { 33: [1, 114] }, h(v, [2, 85]), { 33: [2, 87] }, { 33: [1, 115] }, { 32: 116, 33: [2, 60], 73: 117, 74: K }, h(m, [2, 57]), h(M, [2, 59]), { 33: [2, 66], 37: 119, 73: 120, 74: K }, h(m, [2, 63]), h(M, [2, 65]), { 23: [1, 121] }, h(C, [2, 49]), { 23: [2, 51] }, { 33: [1, 122] }, h(v, [2, 89]), { 33: [2, 91] }, h(o, [2, 22]), h(V, [2, 97]), { 72: G }, { 20: 26, 49: 123, 63: 27, 64: e, 71: r, 77: 28, 78: 29, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i, 85: 36 }, { 67: [1, 124] }, h(R, [2, 93]), { 67: [2, 95] }, h(o, [2, 23]), { 47: [2, 19] }, { 47: [2, 75] }, h(M, [2, 70], { 20: 26, 63: 27, 77: 28, 78: 29, 85: 36, 69: 74, 70: 75, 41: 125, 49: 126, 68: 127, 64: e, 71: S, 79: s, 80: p, 81: n, 82: a, 83: u, 84: i }), h(o, [2, 24]), h(o, [2, 21]), { 33: [1, 128] }, { 33: [2, 61] }, { 71: [1, 130], 75: 129 }, { 33: [1, 131] }, { 33: [2, 67] }, h(P, [2, 12]), h(E, [2, 26]), h(V, [2, 31]), h(_, [2, 29]), { 33: [2, 72], 42: 132, 73: 133, 74: K }, h(m, [2, 69]), h(M, [2, 71]), h(l, [2, 15]), { 71: [1, 135], 76: [1, 134] }, h(U, [2, 98]), h(b, [2, 16]), { 33: [1, 136] }, { 33: [2, 73] }, { 33: [2, 32] }, h(U, [2, 99]), h(l, [2, 17])], defaultActions: { 4: [2, 1], 55: [2, 53], 57: [2, 20], 61: [2, 55], 73: [2, 79], 81: [2, 83], 85: [2, 18], 89: [2, 87], 99: [2, 51], 102: [2, 91], 109: [2, 95], 111: [2, 19], 112: [2, 75], 117: [2, 61], 120: [2, 67], 133: [2, 73], 134: [2, 32] }, parseError: function(k, B) { + if (B.recoverable) + this.trace(k); + else { + var O = new Error(k); + throw O.hash = B, O; + } + }, parse: function(k) { + var B = this, O = [0], q = [], z = [null], A = [], Q = this.table, D = "", $ = 0, oe = 0, Ie = 0, et = 2, Re = 1, tt = A.slice.call(arguments, 1), Y = Object.create(this.lexer), ie = { yy: {} }; + for (var Ae in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, Ae) && (ie.yy[Ae] = this.yy[Ae]); + Y.setInput(k, ie.yy), ie.yy.lexer = Y, ie.yy.parser = this, typeof Y.yylloc > "u" && (Y.yylloc = {}); + var Ee = Y.yylloc; + A.push(Ee); + var rt = Y.options && Y.options.ranges; + typeof ie.yy.parseError == "function" ? this.parseError = ie.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function $t(te) { + O.length = O.length - 2 * te, z.length = z.length - te, A.length = A.length - te; + } + e: + var nt = function() { + var te; + return te = Y.lex() || Re, typeof te != "number" && (te = B.symbols_[te] || te), te; + }; + for (var J, _e, ae, ee, er, Se, se = {}, de, re, qe, pe; ; ) { + if (ae = O[O.length - 1], this.defaultActions[ae] ? ee = this.defaultActions[ae] : ((J === null || typeof J > "u") && (J = nt()), ee = Q[ae] && Q[ae][J]), typeof ee > "u" || !ee.length || !ee[0]) { + var Ce = ""; + pe = []; + for (de in Q[ae]) + this.terminals_[de] && de > et && pe.push("'" + this.terminals_[de] + "'"); + Y.showPosition ? Ce = "Parse error on line " + ($ + 1) + `: +` + Y.showPosition() + ` +Expecting ` + pe.join(", ") + ", got '" + (this.terminals_[J] || J) + "'" : Ce = "Parse error on line " + ($ + 1) + ": Unexpected " + (J == Re ? "end of input" : "'" + (this.terminals_[J] || J) + "'"), this.parseError(Ce, { text: Y.match, token: this.terminals_[J] || J, line: Y.yylineno, loc: Ee, expected: pe }); + } + if (ee[0] instanceof Array && ee.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + ae + ", token: " + J); + switch (ee[0]) { + case 1: + O.push(J), z.push(Y.yytext), A.push(Y.yylloc), O.push(ee[1]), J = null, _e ? (J = _e, _e = null) : (oe = Y.yyleng, D = Y.yytext, $ = Y.yylineno, Ee = Y.yylloc, Ie > 0 && Ie--); + break; + case 2: + if (re = this.productions_[ee[1]][1], se.$ = z[z.length - re], se._$ = { first_line: A[A.length - (re || 1)].first_line, last_line: A[A.length - 1].last_line, first_column: A[A.length - (re || 1)].first_column, last_column: A[A.length - 1].last_column }, rt && (se._$.range = [A[A.length - (re || 1)].range[0], A[A.length - 1].range[1]]), Se = this.performAction.apply(se, [D, oe, $, ie.yy, ee[1], z, A].concat(tt)), typeof Se < "u") + return Se; + re && (O = O.slice(0, -1 * re * 2), z = z.slice(0, -1 * re), A = A.slice(0, -1 * re)), O.push(this.productions_[ee[1]][0]), z.push(se.$), A.push(se._$), qe = Q[O[O.length - 2]][O[O.length - 1]], O.push(qe); + break; + case 3: + return true; + } + } + return true; + } }, W = function() { + var N = { EOF: 1, parseError: function(B, O) { + if (this.yy.parser) + this.yy.parser.parseError(B, O); + else + throw new Error(B); + }, setInput: function(k, B) { + return this.yy = B || this.yy || {}, this._input = k, this._more = this._backtrack = this.done = false, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, input: function() { + var k = this._input[0]; + this.yytext += k, this.yyleng++, this.offset++, this.match += k, this.matched += k; + var B = k.match(/(?:\r\n?|\n).*/g); + return B ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), k; + }, unput: function(k) { + var B = k.length, O = k.split(/(?:\r\n?|\n)/g); + this._input = k + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - B), this.offset -= B; + var q = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), O.length - 1 && (this.yylineno -= O.length - 1); + var z = this.yylloc.range; + return this.yylloc = { first_line: this.yylloc.first_line, last_line: this.yylineno + 1, first_column: this.yylloc.first_column, last_column: O ? (O.length === q.length ? this.yylloc.first_column : 0) + q[q.length - O.length].length - O[0].length : this.yylloc.first_column - B }, this.options.ranges && (this.yylloc.range = [z[0], z[0] + this.yyleng - B]), this.yyleng = this.yytext.length, this; + }, more: function() { + return this._more = true, this; + }, reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = true; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { text: "", token: null, line: this.yylineno }); + return this; + }, less: function(k) { + this.unput(this.match.slice(k)); + }, pastInput: function() { + var k = this.matched.substr(0, this.matched.length - this.match.length); + return (k.length > 20 ? "..." : "") + k.substr(-20).replace(/\n/g, ""); + }, upcomingInput: function() { + var k = this.match; + return k.length < 20 && (k += this._input.substr(0, 20 - k.length)), (k.substr(0, 20) + (k.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, showPosition: function() { + var k = this.pastInput(), B = new Array(k.length + 1).join("-"); + return k + this.upcomingInput() + ` +` + B + "^"; + }, test_match: function(k, B) { + var O, q, z; + if (this.options.backtrack_lexer && (z = { yylineno: this.yylineno, yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column }, yytext: this.yytext, match: this.match, matches: this.matches, matched: this.matched, yyleng: this.yyleng, offset: this.offset, _more: this._more, _input: this._input, yy: this.yy, conditionStack: this.conditionStack.slice(0), done: this.done }, this.options.ranges && (z.yylloc.range = this.yylloc.range.slice(0))), q = k[0].match(/(?:\r\n?|\n).*/g), q && (this.yylineno += q.length), this.yylloc = { first_line: this.yylloc.last_line, last_line: this.yylineno + 1, first_column: this.yylloc.last_column, last_column: q ? q[q.length - 1].length - q[q.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + k[0].length }, this.yytext += k[0], this.match += k[0], this.matches = k, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = false, this._backtrack = false, this._input = this._input.slice(k[0].length), this.matched += k[0], O = this.performAction.call(this, this.yy, this, B, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = false), O) + return O; + if (this._backtrack) { + for (var A in z) + this[A] = z[A]; + return false; + } + return false; + }, next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = true); + var k, B, O, q; + this._more || (this.yytext = "", this.match = ""); + for (var z = this._currentRules(), A = 0; A < z.length; A++) + if (O = this._input.match(this.rules[z[A]]), O && (!B || O[0].length > B[0].length)) { + if (B = O, q = A, this.options.backtrack_lexer) { + if (k = this.test_match(O, z[A]), k !== false) + return k; + if (this._backtrack) { + B = false; + continue; + } else + return false; + } else if (!this.options.flex) + break; + } + return B ? (k = this.test_match(B, z[q]), k !== false ? k : false) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { text: "", token: null, line: this.yylineno }); + }, lex: function() { + var B = this.next(); + return B || this.lex(); + }, begin: function(B) { + this.conditionStack.push(B); + }, popState: function() { + var B = this.conditionStack.length - 1; + return B > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, topState: function(B) { + return B = this.conditionStack.length - 1 - Math.abs(B || 0), B >= 0 ? this.conditionStack[B] : "INITIAL"; + }, pushState: function(B) { + this.begin(B); + }, stateStackSize: function() { + return this.conditionStack.length; + }, options: {}, performAction: function(B, O, q, z) { + function A(D, $) { + return O.yytext = O.yytext.substring(D, O.yyleng - $ + D); + } + var Q = z; + switch (q) { + case 0: + if (O.yytext.slice(-2) === "\\\\" ? (A(0, 1), this.begin("mu")) : O.yytext.slice(-1) === "\\" ? (A(0, 1), this.begin("emu")) : this.begin("mu"), O.yytext) + return 15; + break; + case 1: + return 15; + case 2: + return this.popState(), 15; + break; + case 3: + return this.begin("raw"), 15; + break; + case 4: + return this.popState(), this.conditionStack[this.conditionStack.length - 1] === "raw" ? 15 : (A(5, 9), 18); + case 5: + return 15; + case 6: + return this.popState(), 14; + break; + case 7: + return 64; + case 8: + return 67; + case 9: + return 19; + case 10: + return this.popState(), this.begin("raw"), 23; + break; + case 11: + return 56; + case 12: + return 60; + case 13: + return 29; + case 14: + return 47; + case 15: + return this.popState(), 44; + break; + case 16: + return this.popState(), 44; + break; + case 17: + return 34; + case 18: + return 39; + case 19: + return 52; + case 20: + return 48; + case 21: + this.unput(O.yytext), this.popState(), this.begin("com"); + break; + case 22: + return this.popState(), 14; + break; + case 23: + return 48; + case 24: + return 72; + case 25: + return 71; + case 26: + return 71; + case 27: + return 86; + case 28: + break; + case 29: + return this.popState(), 55; + break; + case 30: + return this.popState(), 33; + break; + case 31: + return O.yytext = A(1, 2).replace(/\\"/g, '"'), 79; + break; + case 32: + return O.yytext = A(1, 2).replace(/\\'/g, "'"), 79; + break; + case 33: + return 84; + case 34: + return 81; + case 35: + return 81; + case 36: + return 82; + case 37: + return 83; + case 38: + return 80; + case 39: + return 74; + case 40: + return 76; + case 41: + return 71; + case 42: + return O.yytext = O.yytext.replace(/\\([\\\]])/g, "$1"), 71; + break; + case 43: + return "INVALID"; + case 44: + return 5; + } + }, rules: [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/], conditions: { mu: { rules: [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], inclusive: false }, emu: { rules: [2], inclusive: false }, com: { rules: [6], inclusive: false }, raw: { rules: [3, 4, 5], inclusive: false }, INITIAL: { rules: [0, 1, 44], inclusive: true } } }; + return N; + }(); + Z.lexer = W; + function T() { + this.yy = {}; + } + return T.prototype = Z, Z.Parser = T, new T(); + }(); + t.default = f; + } }), Nt = I({ "node_modules/@handlebars/parser/dist/cjs/printer.js"(t) { + "use strict"; + F(); + var f = t && t.__importDefault || function(o) { + return o && o.__esModule ? o : { default: o }; + }; + Object.defineProperty(t, "__esModule", { value: true }), t.PrintVisitor = t.print = void 0; + var h = f(Oe()); + function d(o) { + return new c().accept(o); + } + t.print = d; + function c() { + this.padding = 0; + } + t.PrintVisitor = c, c.prototype = new h.default(), c.prototype.pad = function(o) { + for (var e = "", r = 0, s = this.padding; r < s; r++) + e += " "; + return e += o + ` +`, e; + }, c.prototype.Program = function(o) { + var e = "", r = o.body, s, p; + if (o.blockParams) { + var n = "BLOCK PARAMS: ["; + for (s = 0, p = o.blockParams.length; s < p; s++) + n += " " + o.blockParams[s]; + n += " ]", e += this.pad(n); + } + for (s = 0, p = r.length; s < p; s++) + e += this.accept(r[s]); + return this.padding--, e; + }, c.prototype.MustacheStatement = function(o) { + return this.pad("{{ " + this.SubExpression(o) + " }}"); + }, c.prototype.Decorator = function(o) { + return this.pad("{{ DIRECTIVE " + this.SubExpression(o) + " }}"); + }, c.prototype.BlockStatement = c.prototype.DecoratorBlock = function(o) { + var e = ""; + return e += this.pad((o.type === "DecoratorBlock" ? "DIRECTIVE " : "") + "BLOCK:"), this.padding++, e += this.pad(this.SubExpression(o)), o.program && (e += this.pad("PROGRAM:"), this.padding++, e += this.accept(o.program), this.padding--), o.inverse && (o.program && this.padding++, e += this.pad("{{^}}"), this.padding++, e += this.accept(o.inverse), this.padding--, o.program && this.padding--), this.padding--, e; + }, c.prototype.PartialStatement = function(o) { + var e = "PARTIAL:" + o.name.original; + return o.params[0] && (e += " " + this.accept(o.params[0])), o.hash && (e += " " + this.accept(o.hash)), this.pad("{{> " + e + " }}"); + }, c.prototype.PartialBlockStatement = function(o) { + var e = "PARTIAL BLOCK:" + o.name.original; + return o.params[0] && (e += " " + this.accept(o.params[0])), o.hash && (e += " " + this.accept(o.hash)), e += " " + this.pad("PROGRAM:"), this.padding++, e += this.accept(o.program), this.padding--, this.pad("{{> " + e + " }}"); + }, c.prototype.ContentStatement = function(o) { + return this.pad("CONTENT[ '" + o.value + "' ]"); + }, c.prototype.CommentStatement = function(o) { + return this.pad("{{! '" + o.value + "' }}"); + }, c.prototype.SubExpression = function(o) { + for (var e = o.params, r = [], s, p = 0, n = e.length; p < n; p++) + r.push(this.accept(e[p])); + return e = "[" + r.join(", ") + "]", s = o.hash ? " " + this.accept(o.hash) : "", this.accept(o.path) + " " + e + s; + }, c.prototype.PathExpression = function(o) { + var e = o.parts.join("/"); + return (o.data ? "@" : "") + "PATH:" + e; + }, c.prototype.StringLiteral = function(o) { + return '"' + o.value + '"'; + }, c.prototype.NumberLiteral = function(o) { + return "NUMBER{" + o.value + "}"; + }, c.prototype.BooleanLiteral = function(o) { + return "BOOLEAN{" + o.value + "}"; + }, c.prototype.UndefinedLiteral = function() { + return "UNDEFINED"; + }, c.prototype.NullLiteral = function() { + return "NULL"; + }, c.prototype.Hash = function(o) { + for (var e = o.pairs, r = [], s = 0, p = e.length; s < p; s++) + r.push(this.accept(e[s])); + return "HASH{" + r.join(", ") + "}"; + }, c.prototype.HashPair = function(o) { + return o.key + "=" + this.accept(o.value); + }; + } }), Lt = I({ "node_modules/@handlebars/parser/dist/cjs/helpers.js"(t) { + "use strict"; + F(); + var f = t && t.__importDefault || function(l) { + return l && l.__esModule ? l : { default: l }; + }; + Object.defineProperty(t, "__esModule", { value: true }), t.preparePartialBlock = t.prepareProgram = t.prepareBlock = t.prepareRawBlock = t.prepareMustache = t.preparePath = t.stripComment = t.stripFlags = t.id = t.SourceLocation = void 0; + var h = f(Be()); + function d(l, b) { + if (b = b.path ? b.path.original : b, l.path.original !== b) { + var P = { loc: l.path.loc }; + throw new h.default(l.path.original + " doesn't match " + b, P); + } + } + function c(l, b) { + this.source = l, this.start = { line: b.first_line, column: b.first_column }, this.end = { line: b.last_line, column: b.last_column }; + } + t.SourceLocation = c; + function o(l) { + return /^\[.*\]$/.test(l) ? l.substring(1, l.length - 1) : l; + } + t.id = o; + function e(l, b) { + return { open: l.charAt(2) === "~", close: b.charAt(b.length - 3) === "~" }; + } + t.stripFlags = e; + function r(l) { + return l.replace(/^\{\{~?!-?-?/, "").replace(/-?-?~?\}\}$/, ""); + } + t.stripComment = r; + function s(l, b, P) { + P = this.locInfo(P); + for (var E = l ? "@" : "", v = [], _ = 0, y = 0, g = b.length; y < g; y++) { + var L = b[y].part, j = b[y].original !== L; + if (E += (b[y].separator || "") + L, !j && (L === ".." || L === "." || L === "this")) { + if (v.length > 0) + throw new h.default("Invalid path: " + E, { loc: P }); + L === ".." && _++; + } else + v.push(L); + } + return { type: "PathExpression", data: l, depth: _, parts: v, original: E, loc: P }; + } + t.preparePath = s; + function p(l, b, P, E, v, _) { + var y = E.charAt(3) || E.charAt(2), g = y !== "{" && y !== "&", L = /\*/.test(E); + return { type: L ? "Decorator" : "MustacheStatement", path: l, params: b, hash: P, escaped: g, strip: v, loc: this.locInfo(_) }; + } + t.prepareMustache = p; + function n(l, b, P, E) { + d(l, P), E = this.locInfo(E); + var v = { type: "Program", body: b, strip: {}, loc: E }; + return { type: "BlockStatement", path: l.path, params: l.params, hash: l.hash, program: v, openStrip: {}, inverseStrip: {}, closeStrip: {}, loc: E }; + } + t.prepareRawBlock = n; + function a(l, b, P, E, v, _) { + E && E.path && d(l, E); + var y = /\*/.test(l.open); + b.blockParams = l.blockParams; + var g, L; + if (P) { + if (y) + throw new h.default("Unexpected inverse block on decorator", P); + P.chain && (P.program.body[0].closeStrip = E.strip), L = P.strip, g = P.program; + } + return v && (v = g, g = b, b = v), { type: y ? "DecoratorBlock" : "BlockStatement", path: l.path, params: l.params, hash: l.hash, program: b, inverse: g, openStrip: l.strip, inverseStrip: L, closeStrip: E && E.strip, loc: this.locInfo(_) }; + } + t.prepareBlock = a; + function u(l, b) { + if (!b && l.length) { + var P = l[0].loc, E = l[l.length - 1].loc; + P && E && (b = { source: P.source, start: { line: P.start.line, column: P.start.column }, end: { line: E.end.line, column: E.end.column } }); + } + return { type: "Program", body: l, strip: {}, loc: b }; + } + t.prepareProgram = u; + function i(l, b, P, E) { + return d(l, P), { type: "PartialBlockStatement", name: l.path, params: l.params, hash: l.hash, program: b, openStrip: l.strip, closeStrip: P && P.strip, loc: this.locInfo(E) }; + } + t.preparePartialBlock = i; + } }), Ft = I({ "node_modules/@handlebars/parser/dist/cjs/parse.js"(t) { + "use strict"; + F(); + var f = t && t.__createBinding || (Object.create ? function(u, i, l, b) { + b === void 0 && (b = l), Object.defineProperty(u, b, { enumerable: true, get: function() { + return i[l]; + } }); + } : function(u, i, l, b) { + b === void 0 && (b = l), u[b] = i[l]; + }), h = t && t.__setModuleDefault || (Object.create ? function(u, i) { + Object.defineProperty(u, "default", { enumerable: true, value: i }); + } : function(u, i) { + u.default = i; + }), d = t && t.__importStar || function(u) { + if (u && u.__esModule) + return u; + var i = {}; + if (u != null) + for (var l in u) + l !== "default" && Object.prototype.hasOwnProperty.call(u, l) && f(i, u, l); + return h(i, u), i; + }, c = t && t.__importDefault || function(u) { + return u && u.__esModule ? u : { default: u }; + }; + Object.defineProperty(t, "__esModule", { value: true }), t.parse = t.parseWithoutProcessing = void 0; + var o = c(Ge()), e = c(ze()), r = d(Lt()), s = {}; + for (p in r) + Object.prototype.hasOwnProperty.call(r, p) && (s[p] = r[p]); + var p; + function n(u, i) { + if (u.type === "Program") + return u; + o.default.yy = s, o.default.yy.locInfo = function(b) { + return new r.SourceLocation(i && i.srcName, b); + }; + var l = o.default.parse(u); + return l; + } + t.parseWithoutProcessing = n; + function a(u, i) { + var l = n(u, i), b = new e.default(i); + return b.accept(l); + } + t.parse = a; + } }), It = I({ "node_modules/@handlebars/parser/dist/cjs/index.js"(t) { + "use strict"; + F(); + var f = t && t.__importDefault || function(s) { + return s && s.__esModule ? s : { default: s }; + }; + Object.defineProperty(t, "__esModule", { value: true }), t.parseWithoutProcessing = t.parse = t.PrintVisitor = t.print = t.Exception = t.parser = t.WhitespaceControl = t.Visitor = void 0; + var h = Oe(); + Object.defineProperty(t, "Visitor", { enumerable: true, get: function() { + return f(h).default; + } }); + var d = ze(); + Object.defineProperty(t, "WhitespaceControl", { enumerable: true, get: function() { + return f(d).default; + } }); + var c = Ge(); + Object.defineProperty(t, "parser", { enumerable: true, get: function() { + return f(c).default; + } }); + var o = Be(); + Object.defineProperty(t, "Exception", { enumerable: true, get: function() { + return f(o).default; + } }); + var e = Nt(); + Object.defineProperty(t, "print", { enumerable: true, get: function() { + return e.print; + } }), Object.defineProperty(t, "PrintVisitor", { enumerable: true, get: function() { + return e.PrintVisitor; + } }); + var r = Ft(); + Object.defineProperty(t, "parse", { enumerable: true, get: function() { + return r.parse; + } }), Object.defineProperty(t, "parseWithoutProcessing", { enumerable: true, get: function() { + return r.parseWithoutProcessing; + } }); + } }), Ke = I({ "node_modules/simple-html-tokenizer/dist/simple-html-tokenizer.js"(t, f) { + F(), function(h, d) { + typeof t == "object" && typeof f < "u" ? d(t) : typeof define == "function" && define.amd ? define(["exports"], d) : d(h.HTML5Tokenizer = {}); + }(t, function(h) { + "use strict"; + var d = { Aacute: "\xC1", aacute: "\xE1", Abreve: "\u0102", abreve: "\u0103", ac: "\u223E", acd: "\u223F", acE: "\u223E\u0333", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", Acy: "\u0410", acy: "\u0430", AElig: "\xC6", aelig: "\xE6", af: "\u2061", Afr: "\u{1D504}", afr: "\u{1D51E}", Agrave: "\xC0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", Alpha: "\u0391", alpha: "\u03B1", Amacr: "\u0100", amacr: "\u0101", amalg: "\u2A3F", amp: "&", AMP: "&", andand: "\u2A55", And: "\u2A53", and: "\u2227", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angmsd: "\u2221", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", Aogon: "\u0104", aogon: "\u0105", Aopf: "\u{1D538}", aopf: "\u{1D552}", apacir: "\u2A6F", ap: "\u2248", apE: "\u2A70", ape: "\u224A", apid: "\u224B", apos: "'", ApplyFunction: "\u2061", approx: "\u2248", approxeq: "\u224A", Aring: "\xC5", aring: "\xE5", Ascr: "\u{1D49C}", ascr: "\u{1D4B6}", Assign: "\u2254", ast: "*", asymp: "\u2248", asympeq: "\u224D", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", Backslash: "\u2216", Barv: "\u2AE7", barvee: "\u22BD", barwed: "\u2305", Barwed: "\u2306", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", Bcy: "\u0411", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", Because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", Bernoullis: "\u212C", Beta: "\u0392", beta: "\u03B2", beth: "\u2136", between: "\u226C", Bfr: "\u{1D505}", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bNot: "\u2AED", bnot: "\u2310", Bopf: "\u{1D539}", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxbox: "\u29C9", boxdl: "\u2510", boxdL: "\u2555", boxDl: "\u2556", boxDL: "\u2557", boxdr: "\u250C", boxdR: "\u2552", boxDr: "\u2553", boxDR: "\u2554", boxh: "\u2500", boxH: "\u2550", boxhd: "\u252C", boxHd: "\u2564", boxhD: "\u2565", boxHD: "\u2566", boxhu: "\u2534", boxHu: "\u2567", boxhU: "\u2568", boxHU: "\u2569", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxul: "\u2518", boxuL: "\u255B", boxUl: "\u255C", boxUL: "\u255D", boxur: "\u2514", boxuR: "\u2558", boxUr: "\u2559", boxUR: "\u255A", boxv: "\u2502", boxV: "\u2551", boxvh: "\u253C", boxvH: "\u256A", boxVh: "\u256B", boxVH: "\u256C", boxvl: "\u2524", boxvL: "\u2561", boxVl: "\u2562", boxVL: "\u2563", boxvr: "\u251C", boxvR: "\u255E", boxVr: "\u255F", boxVR: "\u2560", bprime: "\u2035", breve: "\u02D8", Breve: "\u02D8", brvbar: "\xA6", bscr: "\u{1D4B7}", Bscr: "\u212C", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsolb: "\u29C5", bsol: "\\", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", Bumpeq: "\u224E", bumpeq: "\u224F", Cacute: "\u0106", cacute: "\u0107", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", cap: "\u2229", Cap: "\u22D2", capcup: "\u2A47", capdot: "\u2A40", CapitalDifferentialD: "\u2145", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", Cayleys: "\u212D", ccaps: "\u2A4D", Ccaron: "\u010C", ccaron: "\u010D", Ccedil: "\xC7", ccedil: "\xE7", Ccirc: "\u0108", ccirc: "\u0109", Cconint: "\u2230", ccups: "\u2A4C", ccupssm: "\u2A50", Cdot: "\u010A", cdot: "\u010B", cedil: "\xB8", Cedilla: "\xB8", cemptyv: "\u29B2", cent: "\xA2", centerdot: "\xB7", CenterDot: "\xB7", cfr: "\u{1D520}", Cfr: "\u212D", CHcy: "\u0427", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", Chi: "\u03A7", chi: "\u03C7", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", CircleDot: "\u2299", circledR: "\xAE", circledS: "\u24C8", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", cir: "\u25CB", cirE: "\u29C3", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", clubs: "\u2663", clubsuit: "\u2663", colon: ":", Colon: "\u2237", Colone: "\u2A74", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", Congruent: "\u2261", conint: "\u222E", Conint: "\u222F", ContourIntegral: "\u222E", copf: "\u{1D554}", Copf: "\u2102", coprod: "\u2210", Coproduct: "\u2210", copy: "\xA9", COPY: "\xA9", copysr: "\u2117", CounterClockwiseContourIntegral: "\u2233", crarr: "\u21B5", cross: "\u2717", Cross: "\u2A2F", Cscr: "\u{1D49E}", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cupbrcap: "\u2A48", cupcap: "\u2A46", CupCap: "\u224D", cup: "\u222A", Cup: "\u22D3", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dagger: "\u2020", Dagger: "\u2021", daleth: "\u2138", darr: "\u2193", Darr: "\u21A1", dArr: "\u21D3", dash: "\u2010", Dashv: "\u2AE4", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", Dcaron: "\u010E", dcaron: "\u010F", Dcy: "\u0414", dcy: "\u0434", ddagger: "\u2021", ddarr: "\u21CA", DD: "\u2145", dd: "\u2146", DDotrahd: "\u2911", ddotseq: "\u2A77", deg: "\xB0", Del: "\u2207", Delta: "\u0394", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", Dfr: "\u{1D507}", dfr: "\u{1D521}", dHar: "\u2965", dharl: "\u21C3", dharr: "\u21C2", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", diam: "\u22C4", diamond: "\u22C4", Diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", DifferentialD: "\u2146", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", DJcy: "\u0402", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", Dopf: "\u{1D53B}", dopf: "\u{1D555}", Dot: "\xA8", dot: "\u02D9", DotDot: "\u20DC", doteq: "\u2250", doteqdot: "\u2251", DotEqual: "\u2250", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrowBar: "\u2913", downarrow: "\u2193", DownArrow: "\u2193", Downarrow: "\u21D3", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVectorBar: "\u2956", DownLeftVector: "\u21BD", DownRightTeeVector: "\u295F", DownRightVectorBar: "\u2957", DownRightVector: "\u21C1", DownTeeArrow: "\u21A7", DownTee: "\u22A4", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", Dscr: "\u{1D49F}", dscr: "\u{1D4B9}", DScy: "\u0405", dscy: "\u0455", dsol: "\u29F6", Dstrok: "\u0110", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", DZcy: "\u040F", dzcy: "\u045F", dzigrarr: "\u27FF", Eacute: "\xC9", eacute: "\xE9", easter: "\u2A6E", Ecaron: "\u011A", ecaron: "\u011B", Ecirc: "\xCA", ecirc: "\xEA", ecir: "\u2256", ecolon: "\u2255", Ecy: "\u042D", ecy: "\u044D", eDDot: "\u2A77", Edot: "\u0116", edot: "\u0117", eDot: "\u2251", ee: "\u2147", efDot: "\u2252", Efr: "\u{1D508}", efr: "\u{1D522}", eg: "\u2A9A", Egrave: "\xC8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", Element: "\u2208", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", Emacr: "\u0112", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", EmptySmallSquare: "\u25FB", emptyv: "\u2205", EmptyVerySmallSquare: "\u25AB", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", ENG: "\u014A", eng: "\u014B", ensp: "\u2002", Eogon: "\u0118", eogon: "\u0119", Eopf: "\u{1D53C}", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", Epsilon: "\u0395", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", Equal: "\u2A75", equals: "=", EqualTilde: "\u2242", equest: "\u225F", Equilibrium: "\u21CC", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erarr: "\u2971", erDot: "\u2253", escr: "\u212F", Escr: "\u2130", esdot: "\u2250", Esim: "\u2A73", esim: "\u2242", Eta: "\u0397", eta: "\u03B7", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", Exists: "\u2203", expectation: "\u2130", exponentiale: "\u2147", ExponentialE: "\u2147", fallingdotseq: "\u2252", Fcy: "\u0424", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", Ffr: "\u{1D509}", ffr: "\u{1D523}", filig: "\uFB01", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", Fopf: "\u{1D53D}", fopf: "\u{1D557}", forall: "\u2200", ForAll: "\u2200", fork: "\u22D4", forkv: "\u2AD9", Fouriertrf: "\u2131", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", Fscr: "\u2131", gacute: "\u01F5", Gamma: "\u0393", gamma: "\u03B3", Gammad: "\u03DC", gammad: "\u03DD", gap: "\u2A86", Gbreve: "\u011E", gbreve: "\u011F", Gcedil: "\u0122", Gcirc: "\u011C", gcirc: "\u011D", Gcy: "\u0413", gcy: "\u0433", Gdot: "\u0120", gdot: "\u0121", ge: "\u2265", gE: "\u2267", gEl: "\u2A8C", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", gescc: "\u2AA9", ges: "\u2A7E", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", Gfr: "\u{1D50A}", gfr: "\u{1D524}", gg: "\u226B", Gg: "\u22D9", ggg: "\u22D9", gimel: "\u2137", GJcy: "\u0403", gjcy: "\u0453", gla: "\u2AA5", gl: "\u2277", glE: "\u2A92", glj: "\u2AA4", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gnE: "\u2269", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", Gopf: "\u{1D53E}", gopf: "\u{1D558}", grave: "`", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", gtcc: "\u2AA7", gtcir: "\u2A7A", gt: ">", GT: ">", Gt: "\u226B", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", Hacek: "\u02C7", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", HARDcy: "\u042A", hardcy: "\u044A", harrcir: "\u2948", harr: "\u2194", hArr: "\u21D4", harrw: "\u21AD", Hat: "^", hbar: "\u210F", Hcirc: "\u0124", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", Hfr: "\u210C", HilbertSpace: "\u210B", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", Hopf: "\u210D", horbar: "\u2015", HorizontalLine: "\u2500", hscr: "\u{1D4BD}", Hscr: "\u210B", hslash: "\u210F", Hstrok: "\u0126", hstrok: "\u0127", HumpDownHump: "\u224E", HumpEqual: "\u224F", hybull: "\u2043", hyphen: "\u2010", Iacute: "\xCD", iacute: "\xED", ic: "\u2063", Icirc: "\xCE", icirc: "\xEE", Icy: "\u0418", icy: "\u0438", Idot: "\u0130", IEcy: "\u0415", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", Ifr: "\u2111", Igrave: "\xCC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", IJlig: "\u0132", ijlig: "\u0133", Imacr: "\u012A", imacr: "\u012B", image: "\u2111", ImaginaryI: "\u2148", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", Im: "\u2111", imof: "\u22B7", imped: "\u01B5", Implies: "\u21D2", incare: "\u2105", in: "\u2208", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", intcal: "\u22BA", int: "\u222B", Int: "\u222C", integers: "\u2124", Integral: "\u222B", intercal: "\u22BA", Intersection: "\u22C2", intlarhk: "\u2A17", intprod: "\u2A3C", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", IOcy: "\u0401", iocy: "\u0451", Iogon: "\u012E", iogon: "\u012F", Iopf: "\u{1D540}", iopf: "\u{1D55A}", Iota: "\u0399", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", iscr: "\u{1D4BE}", Iscr: "\u2110", isin: "\u2208", isindot: "\u22F5", isinE: "\u22F9", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", Itilde: "\u0128", itilde: "\u0129", Iukcy: "\u0406", iukcy: "\u0456", Iuml: "\xCF", iuml: "\xEF", Jcirc: "\u0134", jcirc: "\u0135", Jcy: "\u0419", jcy: "\u0439", Jfr: "\u{1D50D}", jfr: "\u{1D527}", jmath: "\u0237", Jopf: "\u{1D541}", jopf: "\u{1D55B}", Jscr: "\u{1D4A5}", jscr: "\u{1D4BF}", Jsercy: "\u0408", jsercy: "\u0458", Jukcy: "\u0404", jukcy: "\u0454", Kappa: "\u039A", kappa: "\u03BA", kappav: "\u03F0", Kcedil: "\u0136", kcedil: "\u0137", Kcy: "\u041A", kcy: "\u043A", Kfr: "\u{1D50E}", kfr: "\u{1D528}", kgreen: "\u0138", KHcy: "\u0425", khcy: "\u0445", KJcy: "\u040C", kjcy: "\u045C", Kopf: "\u{1D542}", kopf: "\u{1D55C}", Kscr: "\u{1D4A6}", kscr: "\u{1D4C0}", lAarr: "\u21DA", Lacute: "\u0139", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", Lambda: "\u039B", lambda: "\u03BB", lang: "\u27E8", Lang: "\u27EA", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", Laplacetrf: "\u2112", laquo: "\xAB", larrb: "\u21E4", larrbfs: "\u291F", larr: "\u2190", Larr: "\u219E", lArr: "\u21D0", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", latail: "\u2919", lAtail: "\u291B", lat: "\u2AAB", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lBarr: "\u290E", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", Lcaron: "\u013D", lcaron: "\u013E", Lcedil: "\u013B", lcedil: "\u013C", lceil: "\u2308", lcub: "{", Lcy: "\u041B", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", lE: "\u2266", LeftAngleBracket: "\u27E8", LeftArrowBar: "\u21E4", leftarrow: "\u2190", LeftArrow: "\u2190", Leftarrow: "\u21D0", LeftArrowRightArrow: "\u21C6", leftarrowtail: "\u21A2", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVectorBar: "\u2959", LeftDownVector: "\u21C3", LeftFloor: "\u230A", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", LeftRightArrow: "\u2194", Leftrightarrow: "\u21D4", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", LeftRightVector: "\u294E", LeftTeeArrow: "\u21A4", LeftTee: "\u22A3", LeftTeeVector: "\u295A", leftthreetimes: "\u22CB", LeftTriangleBar: "\u29CF", LeftTriangle: "\u22B2", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVectorBar: "\u2958", LeftUpVector: "\u21BF", LeftVectorBar: "\u2952", LeftVector: "\u21BC", lEg: "\u2A8B", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", lescc: "\u2AA8", les: "\u2A7D", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", lessgtr: "\u2276", LessLess: "\u2AA1", lesssim: "\u2272", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", lfisht: "\u297C", lfloor: "\u230A", Lfr: "\u{1D50F}", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lHar: "\u2962", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", LJcy: "\u0409", ljcy: "\u0459", llarr: "\u21C7", ll: "\u226A", Ll: "\u22D8", llcorner: "\u231E", Lleftarrow: "\u21DA", llhard: "\u296B", lltri: "\u25FA", Lmidot: "\u013F", lmidot: "\u0140", lmoustache: "\u23B0", lmoust: "\u23B0", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lnE: "\u2268", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", LongLeftArrow: "\u27F5", Longleftarrow: "\u27F8", longleftrightarrow: "\u27F7", LongLeftRightArrow: "\u27F7", Longleftrightarrow: "\u27FA", longmapsto: "\u27FC", longrightarrow: "\u27F6", LongRightArrow: "\u27F6", Longrightarrow: "\u27F9", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", Lopf: "\u{1D543}", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", Lscr: "\u2112", lsh: "\u21B0", Lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", Lstrok: "\u0141", lstrok: "\u0142", ltcc: "\u2AA6", ltcir: "\u2A79", lt: "<", LT: "<", Lt: "\u226A", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", ltrPar: "\u2996", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", Map: "\u2905", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", Mcy: "\u041C", mcy: "\u043C", mdash: "\u2014", mDDot: "\u223A", measuredangle: "\u2221", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", midast: "*", midcir: "\u2AF0", mid: "\u2223", middot: "\xB7", minusb: "\u229F", minus: "\u2212", minusd: "\u2238", minusdu: "\u2A2A", MinusPlus: "\u2213", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", Mopf: "\u{1D544}", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", Mscr: "\u2133", mstpos: "\u223E", Mu: "\u039C", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nabla: "\u2207", Nacute: "\u0143", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natural: "\u266E", naturals: "\u2115", natur: "\u266E", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", Ncaron: "\u0147", ncaron: "\u0148", Ncedil: "\u0145", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", Ncy: "\u041D", ncy: "\u043D", ndash: "\u2013", nearhk: "\u2924", nearr: "\u2197", neArr: "\u21D7", nearrow: "\u2197", ne: "\u2260", nedot: "\u2250\u0338", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: ` +`, nexist: "\u2204", nexists: "\u2204", Nfr: "\u{1D511}", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", nGg: "\u22D9\u0338", ngsim: "\u2275", nGt: "\u226B\u20D2", ngt: "\u226F", ngtr: "\u226F", nGtv: "\u226B\u0338", nharr: "\u21AE", nhArr: "\u21CE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", NJcy: "\u040A", njcy: "\u045A", nlarr: "\u219A", nlArr: "\u21CD", nldr: "\u2025", nlE: "\u2266\u0338", nle: "\u2270", nleftarrow: "\u219A", nLeftarrow: "\u21CD", nleftrightarrow: "\u21AE", nLeftrightarrow: "\u21CE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nLl: "\u22D8\u0338", nlsim: "\u2274", nLt: "\u226A\u20D2", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nLtv: "\u226A\u0338", nmid: "\u2224", NoBreak: "\u2060", NonBreakingSpace: "\xA0", nopf: "\u{1D55F}", Nopf: "\u2115", Not: "\u2AEC", not: "\xAC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", notin: "\u2209", notindot: "\u22F5\u0338", notinE: "\u22F9\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangle: "\u22EB", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", nparallel: "\u2226", npar: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", nprec: "\u2280", npreceq: "\u2AAF\u0338", npre: "\u2AAF\u0338", nrarrc: "\u2933\u0338", nrarr: "\u219B", nrArr: "\u21CF", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nRightarrow: "\u21CF", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", Nscr: "\u{1D4A9}", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", Ntilde: "\xD1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", Nu: "\u039D", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvDash: "\u22AD", nVdash: "\u22AE", nVDash: "\u22AF", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvHarr: "\u2904", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwarhk: "\u2923", nwarr: "\u2196", nwArr: "\u21D6", nwarrow: "\u2196", nwnear: "\u2927", Oacute: "\xD3", oacute: "\xF3", oast: "\u229B", Ocirc: "\xD4", ocirc: "\xF4", ocir: "\u229A", Ocy: "\u041E", ocy: "\u043E", odash: "\u229D", Odblac: "\u0150", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", OElig: "\u0152", oelig: "\u0153", ofcir: "\u29BF", Ofr: "\u{1D512}", ofr: "\u{1D52C}", ogon: "\u02DB", Ograve: "\xD2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", Omacr: "\u014C", omacr: "\u014D", Omega: "\u03A9", omega: "\u03C9", Omicron: "\u039F", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", Oopf: "\u{1D546}", oopf: "\u{1D560}", opar: "\u29B7", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", operp: "\u29B9", oplus: "\u2295", orarr: "\u21BB", Or: "\u2A54", or: "\u2228", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oS: "\u24C8", Oscr: "\u{1D4AA}", oscr: "\u2134", Oslash: "\xD8", oslash: "\xF8", osol: "\u2298", Otilde: "\xD5", otilde: "\xF5", otimesas: "\u2A36", Otimes: "\u2A37", otimes: "\u2297", Ouml: "\xD6", ouml: "\xF6", ovbar: "\u233D", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", para: "\xB6", parallel: "\u2225", par: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", PartialD: "\u2202", Pcy: "\u041F", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", Pfr: "\u{1D513}", pfr: "\u{1D52D}", Phi: "\u03A6", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", Pi: "\u03A0", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plus: "+", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", PlusMinus: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", Poincareplane: "\u210C", pointint: "\u2A15", popf: "\u{1D561}", Popf: "\u2119", pound: "\xA3", prap: "\u2AB7", Pr: "\u2ABB", pr: "\u227A", prcue: "\u227C", precapprox: "\u2AB7", prec: "\u227A", preccurlyeq: "\u227C", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", pre: "\u2AAF", prE: "\u2AB3", precsim: "\u227E", prime: "\u2032", Prime: "\u2033", primes: "\u2119", prnap: "\u2AB9", prnE: "\u2AB5", prnsim: "\u22E8", prod: "\u220F", Product: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", Proportional: "\u221D", Proportion: "\u2237", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", Pscr: "\u{1D4AB}", pscr: "\u{1D4C5}", Psi: "\u03A8", psi: "\u03C8", puncsp: "\u2008", Qfr: "\u{1D514}", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", Qopf: "\u211A", qprime: "\u2057", Qscr: "\u{1D4AC}", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quot: '"', QUOT: '"', rAarr: "\u21DB", race: "\u223D\u0331", Racute: "\u0154", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", Rang: "\u27EB", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarr: "\u2192", Rarr: "\u21A0", rArr: "\u21D2", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", Rarrtl: "\u2916", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", rAtail: "\u291C", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rBarr: "\u290F", RBarr: "\u2910", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", Rcaron: "\u0158", rcaron: "\u0159", Rcedil: "\u0156", rcedil: "\u0157", rceil: "\u2309", rcub: "}", Rcy: "\u0420", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", Re: "\u211C", rect: "\u25AD", reg: "\xAE", REG: "\xAE", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", Rfr: "\u211C", rHar: "\u2964", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", Rho: "\u03A1", rho: "\u03C1", rhov: "\u03F1", RightAngleBracket: "\u27E9", RightArrowBar: "\u21E5", rightarrow: "\u2192", RightArrow: "\u2192", Rightarrow: "\u21D2", RightArrowLeftArrow: "\u21C4", rightarrowtail: "\u21A3", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVectorBar: "\u2955", RightDownVector: "\u21C2", RightFloor: "\u230B", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", RightTeeArrow: "\u21A6", RightTee: "\u22A2", RightTeeVector: "\u295B", rightthreetimes: "\u22CC", RightTriangleBar: "\u29D0", RightTriangle: "\u22B3", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVectorBar: "\u2954", RightUpVector: "\u21BE", RightVectorBar: "\u2953", RightVector: "\u21C0", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoustache: "\u23B1", rmoust: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", Ropf: "\u211D", roplus: "\u2A2E", rotimes: "\u2A35", RoundImplies: "\u2970", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", Rrightarrow: "\u21DB", rsaquo: "\u203A", rscr: "\u{1D4C7}", Rscr: "\u211B", rsh: "\u21B1", Rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", RuleDelayed: "\u29F4", ruluhar: "\u2968", rx: "\u211E", Sacute: "\u015A", sacute: "\u015B", sbquo: "\u201A", scap: "\u2AB8", Scaron: "\u0160", scaron: "\u0161", Sc: "\u2ABC", sc: "\u227B", sccue: "\u227D", sce: "\u2AB0", scE: "\u2AB4", Scedil: "\u015E", scedil: "\u015F", Scirc: "\u015C", scirc: "\u015D", scnap: "\u2ABA", scnE: "\u2AB6", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", Scy: "\u0421", scy: "\u0441", sdotb: "\u22A1", sdot: "\u22C5", sdote: "\u2A66", searhk: "\u2925", searr: "\u2198", seArr: "\u21D8", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", Sfr: "\u{1D516}", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", SHCHcy: "\u0429", shchcy: "\u0449", SHcy: "\u0428", shcy: "\u0448", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", shortmid: "\u2223", shortparallel: "\u2225", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", shy: "\xAD", Sigma: "\u03A3", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", SmallCircle: "\u2218", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", SOFTcy: "\u042C", softcy: "\u044C", solbar: "\u233F", solb: "\u29C4", sol: "/", Sopf: "\u{1D54A}", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", Sqrt: "\u221A", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", square: "\u25A1", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", squarf: "\u25AA", squ: "\u25A1", squf: "\u25AA", srarr: "\u2192", Sscr: "\u{1D4AE}", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", Star: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", Sub: "\u22D0", subdot: "\u2ABD", subE: "\u2AC5", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", Subset: "\u22D0", subseteq: "\u2286", subseteqq: "\u2AC5", SubsetEqual: "\u2286", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succapprox: "\u2AB8", succ: "\u227B", succcurlyeq: "\u227D", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", SuchThat: "\u220B", sum: "\u2211", Sum: "\u2211", sung: "\u266A", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", sup: "\u2283", Sup: "\u22D1", supdot: "\u2ABE", supdsub: "\u2AD8", supE: "\u2AC6", supe: "\u2287", supedot: "\u2AC4", Superset: "\u2283", SupersetEqual: "\u2287", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", Supset: "\u22D1", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swarhk: "\u2926", swarr: "\u2199", swArr: "\u21D9", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", Tab: " ", target: "\u2316", Tau: "\u03A4", tau: "\u03C4", tbrk: "\u23B4", Tcaron: "\u0164", tcaron: "\u0165", Tcedil: "\u0162", tcedil: "\u0163", Tcy: "\u0422", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", Tfr: "\u{1D517}", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", Therefore: "\u2234", Theta: "\u0398", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", THORN: "\xDE", thorn: "\xFE", tilde: "\u02DC", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", timesbar: "\u2A31", timesb: "\u22A0", times: "\xD7", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", topbot: "\u2336", topcir: "\u2AF1", top: "\u22A4", Topf: "\u{1D54B}", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", TRADE: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", TripleDot: "\u20DB", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", Tscr: "\u{1D4AF}", tscr: "\u{1D4C9}", TScy: "\u0426", tscy: "\u0446", TSHcy: "\u040B", tshcy: "\u045B", Tstrok: "\u0166", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", Uacute: "\xDA", uacute: "\xFA", uarr: "\u2191", Uarr: "\u219F", uArr: "\u21D1", Uarrocir: "\u2949", Ubrcy: "\u040E", ubrcy: "\u045E", Ubreve: "\u016C", ubreve: "\u016D", Ucirc: "\xDB", ucirc: "\xFB", Ucy: "\u0423", ucy: "\u0443", udarr: "\u21C5", Udblac: "\u0170", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", Ufr: "\u{1D518}", ufr: "\u{1D532}", Ugrave: "\xD9", ugrave: "\xF9", uHar: "\u2963", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", Umacr: "\u016A", umacr: "\u016B", uml: "\xA8", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", uogon: "\u0173", Uopf: "\u{1D54C}", uopf: "\u{1D566}", UpArrowBar: "\u2912", uparrow: "\u2191", UpArrow: "\u2191", Uparrow: "\u21D1", UpArrowDownArrow: "\u21C5", updownarrow: "\u2195", UpDownArrow: "\u2195", Updownarrow: "\u21D5", UpEquilibrium: "\u296E", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", upsi: "\u03C5", Upsi: "\u03D2", upsih: "\u03D2", Upsilon: "\u03A5", upsilon: "\u03C5", UpTeeArrow: "\u21A5", UpTee: "\u22A5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", Uring: "\u016E", uring: "\u016F", urtri: "\u25F9", Uscr: "\u{1D4B0}", uscr: "\u{1D4CA}", utdot: "\u22F0", Utilde: "\u0168", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", Uuml: "\xDC", uuml: "\xFC", uwangle: "\u29A7", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", vArr: "\u21D5", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vBar: "\u2AE8", Vbar: "\u2AEB", vBarv: "\u2AE9", Vcy: "\u0412", vcy: "\u0432", vdash: "\u22A2", vDash: "\u22A8", Vdash: "\u22A9", VDash: "\u22AB", Vdashl: "\u2AE6", veebar: "\u22BB", vee: "\u2228", Vee: "\u22C1", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", Verbar: "\u2016", vert: "|", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", Vopf: "\u{1D54D}", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", Vscr: "\u{1D4B1}", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", Vvdash: "\u22AA", vzigzag: "\u299A", Wcirc: "\u0174", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", Wedge: "\u22C0", wedgeq: "\u2259", weierp: "\u2118", Wfr: "\u{1D51A}", wfr: "\u{1D534}", Wopf: "\u{1D54E}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", Wscr: "\u{1D4B2}", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", Xfr: "\u{1D51B}", xfr: "\u{1D535}", xharr: "\u27F7", xhArr: "\u27FA", Xi: "\u039E", xi: "\u03BE", xlarr: "\u27F5", xlArr: "\u27F8", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", Xopf: "\u{1D54F}", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrarr: "\u27F6", xrArr: "\u27F9", Xscr: "\u{1D4B3}", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", Yacute: "\xDD", yacute: "\xFD", YAcy: "\u042F", yacy: "\u044F", Ycirc: "\u0176", ycirc: "\u0177", Ycy: "\u042B", ycy: "\u044B", yen: "\xA5", Yfr: "\u{1D51C}", yfr: "\u{1D536}", YIcy: "\u0407", yicy: "\u0457", Yopf: "\u{1D550}", yopf: "\u{1D56A}", Yscr: "\u{1D4B4}", yscr: "\u{1D4CE}", YUcy: "\u042E", yucy: "\u044E", yuml: "\xFF", Yuml: "\u0178", Zacute: "\u0179", zacute: "\u017A", Zcaron: "\u017D", zcaron: "\u017E", Zcy: "\u0417", zcy: "\u0437", Zdot: "\u017B", zdot: "\u017C", zeetrf: "\u2128", ZeroWidthSpace: "\u200B", Zeta: "\u0396", zeta: "\u03B6", zfr: "\u{1D537}", Zfr: "\u2128", ZHcy: "\u0416", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", Zopf: "\u2124", Zscr: "\u{1D4B5}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }, c = /^#[xX]([A-Fa-f0-9]+)$/, o = /^#([0-9]+)$/, e = /^([A-Za-z0-9]+)$/, r = function() { + function E(v) { + this.named = v; + } + return E.prototype.parse = function(v) { + if (!!v) { + var _ = v.match(c); + if (_) + return String.fromCharCode(parseInt(_[1], 16)); + if (_ = v.match(o), _) + return String.fromCharCode(parseInt(_[1], 10)); + if (_ = v.match(e), _) + return this.named[_[1]]; + } + }, E; + }(), s = /[\t\n\f ]/, p = /[A-Za-z]/, n = /\r\n?/g; + function a(E) { + return s.test(E); + } + function u(E) { + return p.test(E); + } + function i(E) { + return E.replace(n, ` +`); + } + var l = function() { + function E(v, _, y) { + y === void 0 && (y = "precompile"), this.delegate = v, this.entityParser = _, this.mode = y, this.state = "beforeData", this.line = -1, this.column = -1, this.input = "", this.index = -1, this.tagNameBuffer = "", this.states = { beforeData: function() { + var g = this.peek(); + if (g === "<" && !this.isIgnoredEndTag()) + this.transitionTo("tagOpen"), this.markTagStart(), this.consume(); + else { + if (this.mode === "precompile" && g === ` +`) { + var L = this.tagNameBuffer.toLowerCase(); + (L === "pre" || L === "textarea") && this.consume(); + } + this.transitionTo("data"), this.delegate.beginData(); + } + }, data: function() { + var g = this.peek(), L = this.tagNameBuffer; + g === "<" && !this.isIgnoredEndTag() ? (this.delegate.finishData(), this.transitionTo("tagOpen"), this.markTagStart(), this.consume()) : g === "&" && L !== "script" && L !== "style" ? (this.consume(), this.delegate.appendToData(this.consumeCharRef() || "&")) : (this.consume(), this.delegate.appendToData(g)); + }, tagOpen: function() { + var g = this.consume(); + g === "!" ? this.transitionTo("markupDeclarationOpen") : g === "/" ? this.transitionTo("endTagOpen") : (g === "@" || g === ":" || u(g)) && (this.transitionTo("tagName"), this.tagNameBuffer = "", this.delegate.beginStartTag(), this.appendToTagName(g)); + }, markupDeclarationOpen: function() { + var g = this.consume(); + if (g === "-" && this.peek() === "-") + this.consume(), this.transitionTo("commentStart"), this.delegate.beginComment(); + else { + var L = g.toUpperCase() + this.input.substring(this.index, this.index + 6).toUpperCase(); + L === "DOCTYPE" && (this.consume(), this.consume(), this.consume(), this.consume(), this.consume(), this.consume(), this.transitionTo("doctype"), this.delegate.beginDoctype && this.delegate.beginDoctype()); + } + }, doctype: function() { + var g = this.consume(); + a(g) && this.transitionTo("beforeDoctypeName"); + }, beforeDoctypeName: function() { + var g = this.consume(); + a(g) || (this.transitionTo("doctypeName"), this.delegate.appendToDoctypeName && this.delegate.appendToDoctypeName(g.toLowerCase())); + }, doctypeName: function() { + var g = this.consume(); + a(g) ? this.transitionTo("afterDoctypeName") : g === ">" ? (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")) : this.delegate.appendToDoctypeName && this.delegate.appendToDoctypeName(g.toLowerCase()); + }, afterDoctypeName: function() { + var g = this.consume(); + if (!a(g)) + if (g === ">") + this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData"); + else { + var L = g.toUpperCase() + this.input.substring(this.index, this.index + 5).toUpperCase(), j = L.toUpperCase() === "PUBLIC", x = L.toUpperCase() === "SYSTEM"; + (j || x) && (this.consume(), this.consume(), this.consume(), this.consume(), this.consume(), this.consume()), j ? this.transitionTo("afterDoctypePublicKeyword") : x && this.transitionTo("afterDoctypeSystemKeyword"); + } + }, afterDoctypePublicKeyword: function() { + var g = this.peek(); + a(g) ? (this.transitionTo("beforeDoctypePublicIdentifier"), this.consume()) : g === '"' ? (this.transitionTo("doctypePublicIdentifierDoubleQuoted"), this.consume()) : g === "'" ? (this.transitionTo("doctypePublicIdentifierSingleQuoted"), this.consume()) : g === ">" && (this.consume(), this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")); + }, doctypePublicIdentifierDoubleQuoted: function() { + var g = this.consume(); + g === '"' ? this.transitionTo("afterDoctypePublicIdentifier") : g === ">" ? (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")) : this.delegate.appendToDoctypePublicIdentifier && this.delegate.appendToDoctypePublicIdentifier(g); + }, doctypePublicIdentifierSingleQuoted: function() { + var g = this.consume(); + g === "'" ? this.transitionTo("afterDoctypePublicIdentifier") : g === ">" ? (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")) : this.delegate.appendToDoctypePublicIdentifier && this.delegate.appendToDoctypePublicIdentifier(g); + }, afterDoctypePublicIdentifier: function() { + var g = this.consume(); + a(g) ? this.transitionTo("betweenDoctypePublicAndSystemIdentifiers") : g === ">" ? (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")) : g === '"' ? this.transitionTo("doctypeSystemIdentifierDoubleQuoted") : g === "'" && this.transitionTo("doctypeSystemIdentifierSingleQuoted"); + }, betweenDoctypePublicAndSystemIdentifiers: function() { + var g = this.consume(); + a(g) || (g === ">" ? (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")) : g === '"' ? this.transitionTo("doctypeSystemIdentifierDoubleQuoted") : g === "'" && this.transitionTo("doctypeSystemIdentifierSingleQuoted")); + }, doctypeSystemIdentifierDoubleQuoted: function() { + var g = this.consume(); + g === '"' ? this.transitionTo("afterDoctypeSystemIdentifier") : g === ">" ? (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")) : this.delegate.appendToDoctypeSystemIdentifier && this.delegate.appendToDoctypeSystemIdentifier(g); + }, doctypeSystemIdentifierSingleQuoted: function() { + var g = this.consume(); + g === "'" ? this.transitionTo("afterDoctypeSystemIdentifier") : g === ">" ? (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")) : this.delegate.appendToDoctypeSystemIdentifier && this.delegate.appendToDoctypeSystemIdentifier(g); + }, afterDoctypeSystemIdentifier: function() { + var g = this.consume(); + a(g) || g === ">" && (this.delegate.endDoctype && this.delegate.endDoctype(), this.transitionTo("beforeData")); + }, commentStart: function() { + var g = this.consume(); + g === "-" ? this.transitionTo("commentStartDash") : g === ">" ? (this.delegate.finishComment(), this.transitionTo("beforeData")) : (this.delegate.appendToCommentData(g), this.transitionTo("comment")); + }, commentStartDash: function() { + var g = this.consume(); + g === "-" ? this.transitionTo("commentEnd") : g === ">" ? (this.delegate.finishComment(), this.transitionTo("beforeData")) : (this.delegate.appendToCommentData("-"), this.transitionTo("comment")); + }, comment: function() { + var g = this.consume(); + g === "-" ? this.transitionTo("commentEndDash") : this.delegate.appendToCommentData(g); + }, commentEndDash: function() { + var g = this.consume(); + g === "-" ? this.transitionTo("commentEnd") : (this.delegate.appendToCommentData("-" + g), this.transitionTo("comment")); + }, commentEnd: function() { + var g = this.consume(); + g === ">" ? (this.delegate.finishComment(), this.transitionTo("beforeData")) : (this.delegate.appendToCommentData("--" + g), this.transitionTo("comment")); + }, tagName: function() { + var g = this.consume(); + a(g) ? this.transitionTo("beforeAttributeName") : g === "/" ? this.transitionTo("selfClosingStartTag") : g === ">" ? (this.delegate.finishTag(), this.transitionTo("beforeData")) : this.appendToTagName(g); + }, endTagName: function() { + var g = this.consume(); + a(g) ? (this.transitionTo("beforeAttributeName"), this.tagNameBuffer = "") : g === "/" ? (this.transitionTo("selfClosingStartTag"), this.tagNameBuffer = "") : g === ">" ? (this.delegate.finishTag(), this.transitionTo("beforeData"), this.tagNameBuffer = "") : this.appendToTagName(g); + }, beforeAttributeName: function() { + var g = this.peek(); + if (a(g)) { + this.consume(); + return; + } else + g === "/" ? (this.transitionTo("selfClosingStartTag"), this.consume()) : g === ">" ? (this.consume(), this.delegate.finishTag(), this.transitionTo("beforeData")) : g === "=" ? (this.delegate.reportSyntaxError("attribute name cannot start with equals sign"), this.transitionTo("attributeName"), this.delegate.beginAttribute(), this.consume(), this.delegate.appendToAttributeName(g)) : (this.transitionTo("attributeName"), this.delegate.beginAttribute()); + }, attributeName: function() { + var g = this.peek(); + a(g) ? (this.transitionTo("afterAttributeName"), this.consume()) : g === "/" ? (this.delegate.beginAttributeValue(false), this.delegate.finishAttributeValue(), this.consume(), this.transitionTo("selfClosingStartTag")) : g === "=" ? (this.transitionTo("beforeAttributeValue"), this.consume()) : g === ">" ? (this.delegate.beginAttributeValue(false), this.delegate.finishAttributeValue(), this.consume(), this.delegate.finishTag(), this.transitionTo("beforeData")) : g === '"' || g === "'" || g === "<" ? (this.delegate.reportSyntaxError(g + " is not a valid character within attribute names"), this.consume(), this.delegate.appendToAttributeName(g)) : (this.consume(), this.delegate.appendToAttributeName(g)); + }, afterAttributeName: function() { + var g = this.peek(); + if (a(g)) { + this.consume(); + return; + } else + g === "/" ? (this.delegate.beginAttributeValue(false), this.delegate.finishAttributeValue(), this.consume(), this.transitionTo("selfClosingStartTag")) : g === "=" ? (this.consume(), this.transitionTo("beforeAttributeValue")) : g === ">" ? (this.delegate.beginAttributeValue(false), this.delegate.finishAttributeValue(), this.consume(), this.delegate.finishTag(), this.transitionTo("beforeData")) : (this.delegate.beginAttributeValue(false), this.delegate.finishAttributeValue(), this.transitionTo("attributeName"), this.delegate.beginAttribute(), this.consume(), this.delegate.appendToAttributeName(g)); + }, beforeAttributeValue: function() { + var g = this.peek(); + a(g) ? this.consume() : g === '"' ? (this.transitionTo("attributeValueDoubleQuoted"), this.delegate.beginAttributeValue(true), this.consume()) : g === "'" ? (this.transitionTo("attributeValueSingleQuoted"), this.delegate.beginAttributeValue(true), this.consume()) : g === ">" ? (this.delegate.beginAttributeValue(false), this.delegate.finishAttributeValue(), this.consume(), this.delegate.finishTag(), this.transitionTo("beforeData")) : (this.transitionTo("attributeValueUnquoted"), this.delegate.beginAttributeValue(false), this.consume(), this.delegate.appendToAttributeValue(g)); + }, attributeValueDoubleQuoted: function() { + var g = this.consume(); + g === '"' ? (this.delegate.finishAttributeValue(), this.transitionTo("afterAttributeValueQuoted")) : g === "&" ? this.delegate.appendToAttributeValue(this.consumeCharRef() || "&") : this.delegate.appendToAttributeValue(g); + }, attributeValueSingleQuoted: function() { + var g = this.consume(); + g === "'" ? (this.delegate.finishAttributeValue(), this.transitionTo("afterAttributeValueQuoted")) : g === "&" ? this.delegate.appendToAttributeValue(this.consumeCharRef() || "&") : this.delegate.appendToAttributeValue(g); + }, attributeValueUnquoted: function() { + var g = this.peek(); + a(g) ? (this.delegate.finishAttributeValue(), this.consume(), this.transitionTo("beforeAttributeName")) : g === "/" ? (this.delegate.finishAttributeValue(), this.consume(), this.transitionTo("selfClosingStartTag")) : g === "&" ? (this.consume(), this.delegate.appendToAttributeValue(this.consumeCharRef() || "&")) : g === ">" ? (this.delegate.finishAttributeValue(), this.consume(), this.delegate.finishTag(), this.transitionTo("beforeData")) : (this.consume(), this.delegate.appendToAttributeValue(g)); + }, afterAttributeValueQuoted: function() { + var g = this.peek(); + a(g) ? (this.consume(), this.transitionTo("beforeAttributeName")) : g === "/" ? (this.consume(), this.transitionTo("selfClosingStartTag")) : g === ">" ? (this.consume(), this.delegate.finishTag(), this.transitionTo("beforeData")) : this.transitionTo("beforeAttributeName"); + }, selfClosingStartTag: function() { + var g = this.peek(); + g === ">" ? (this.consume(), this.delegate.markTagAsSelfClosing(), this.delegate.finishTag(), this.transitionTo("beforeData")) : this.transitionTo("beforeAttributeName"); + }, endTagOpen: function() { + var g = this.consume(); + (g === "@" || g === ":" || u(g)) && (this.transitionTo("endTagName"), this.tagNameBuffer = "", this.delegate.beginEndTag(), this.appendToTagName(g)); + } }, this.reset(); + } + return E.prototype.reset = function() { + this.transitionTo("beforeData"), this.input = "", this.tagNameBuffer = "", this.index = 0, this.line = 1, this.column = 0, this.delegate.reset(); + }, E.prototype.transitionTo = function(v) { + this.state = v; + }, E.prototype.tokenize = function(v) { + this.reset(), this.tokenizePart(v), this.tokenizeEOF(); + }, E.prototype.tokenizePart = function(v) { + for (this.input += i(v); this.index < this.input.length; ) { + var _ = this.states[this.state]; + if (_ !== void 0) + _.call(this); + else + throw new Error("unhandled state " + this.state); + } + }, E.prototype.tokenizeEOF = function() { + this.flushData(); + }, E.prototype.flushData = function() { + this.state === "data" && (this.delegate.finishData(), this.transitionTo("beforeData")); + }, E.prototype.peek = function() { + return this.input.charAt(this.index); + }, E.prototype.consume = function() { + var v = this.peek(); + return this.index++, v === ` +` ? (this.line++, this.column = 0) : this.column++, v; + }, E.prototype.consumeCharRef = function() { + var v = this.input.indexOf(";", this.index); + if (v !== -1) { + var _ = this.input.slice(this.index, v), y = this.entityParser.parse(_); + if (y) { + for (var g = _.length; g; ) + this.consume(), g--; + return this.consume(), y; + } + } + }, E.prototype.markTagStart = function() { + this.delegate.tagOpen(); + }, E.prototype.appendToTagName = function(v) { + this.tagNameBuffer += v, this.delegate.appendToTagName(v); + }, E.prototype.isIgnoredEndTag = function() { + var v = this.tagNameBuffer; + return v === "title" && this.input.substring(this.index, this.index + 8) !== "" || v === "style" && this.input.substring(this.index, this.index + 8) !== "" || v === "script" && this.input.substring(this.index, this.index + 9) !== "<\/script>"; + }, E; + }(), b = function() { + function E(v, _) { + _ === void 0 && (_ = {}), this.options = _, this.token = null, this.startLine = 1, this.startColumn = 0, this.tokens = [], this.tokenizer = new l(this, v, _.mode), this._currentAttribute = void 0; + } + return E.prototype.tokenize = function(v) { + return this.tokens = [], this.tokenizer.tokenize(v), this.tokens; + }, E.prototype.tokenizePart = function(v) { + return this.tokens = [], this.tokenizer.tokenizePart(v), this.tokens; + }, E.prototype.tokenizeEOF = function() { + return this.tokens = [], this.tokenizer.tokenizeEOF(), this.tokens[0]; + }, E.prototype.reset = function() { + this.token = null, this.startLine = 1, this.startColumn = 0; + }, E.prototype.current = function() { + var v = this.token; + if (v === null) + throw new Error("token was unexpectedly null"); + if (arguments.length === 0) + return v; + for (var _ = 0; _ < arguments.length; _++) + if (v.type === arguments[_]) + return v; + throw new Error("token type was unexpectedly " + v.type); + }, E.prototype.push = function(v) { + this.token = v, this.tokens.push(v); + }, E.prototype.currentAttribute = function() { + return this._currentAttribute; + }, E.prototype.addLocInfo = function() { + this.options.loc && (this.current().loc = { start: { line: this.startLine, column: this.startColumn }, end: { line: this.tokenizer.line, column: this.tokenizer.column } }), this.startLine = this.tokenizer.line, this.startColumn = this.tokenizer.column; + }, E.prototype.beginDoctype = function() { + this.push({ type: "Doctype", name: "" }); + }, E.prototype.appendToDoctypeName = function(v) { + this.current("Doctype").name += v; + }, E.prototype.appendToDoctypePublicIdentifier = function(v) { + var _ = this.current("Doctype"); + _.publicIdentifier === void 0 ? _.publicIdentifier = v : _.publicIdentifier += v; + }, E.prototype.appendToDoctypeSystemIdentifier = function(v) { + var _ = this.current("Doctype"); + _.systemIdentifier === void 0 ? _.systemIdentifier = v : _.systemIdentifier += v; + }, E.prototype.endDoctype = function() { + this.addLocInfo(); + }, E.prototype.beginData = function() { + this.push({ type: "Chars", chars: "" }); + }, E.prototype.appendToData = function(v) { + this.current("Chars").chars += v; + }, E.prototype.finishData = function() { + this.addLocInfo(); + }, E.prototype.beginComment = function() { + this.push({ type: "Comment", chars: "" }); + }, E.prototype.appendToCommentData = function(v) { + this.current("Comment").chars += v; + }, E.prototype.finishComment = function() { + this.addLocInfo(); + }, E.prototype.tagOpen = function() { + }, E.prototype.beginStartTag = function() { + this.push({ type: "StartTag", tagName: "", attributes: [], selfClosing: false }); + }, E.prototype.beginEndTag = function() { + this.push({ type: "EndTag", tagName: "" }); + }, E.prototype.finishTag = function() { + this.addLocInfo(); + }, E.prototype.markTagAsSelfClosing = function() { + this.current("StartTag").selfClosing = true; + }, E.prototype.appendToTagName = function(v) { + this.current("StartTag", "EndTag").tagName += v; + }, E.prototype.beginAttribute = function() { + this._currentAttribute = ["", "", false]; + }, E.prototype.appendToAttributeName = function(v) { + this.currentAttribute()[0] += v; + }, E.prototype.beginAttributeValue = function(v) { + this.currentAttribute()[2] = v; + }, E.prototype.appendToAttributeValue = function(v) { + this.currentAttribute()[1] += v; + }, E.prototype.finishAttributeValue = function() { + this.current("StartTag").attributes.push(this._currentAttribute); + }, E.prototype.reportSyntaxError = function(v) { + this.current().syntaxError = v; + }, E; + }(); + function P(E, v) { + var _ = new b(new r(d), v); + return _.tokenize(E); + } + h.HTML5NamedCharRefs = d, h.EntityParser = r, h.EventedTokenizer = l, h.Tokenizer = b, h.tokenize = P, Object.defineProperty(h, "__esModule", { value: true }); + }); + } }), We = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/generation/print.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = d; + var f = h(Te()); + function h(c) { + return c && c.__esModule ? c : { default: c }; + } + function d(c) { + let o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { entityEncoding: "transformed" }; + return c ? new f.default(o).print(c) : ""; + } + } }), he = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/syntax-error.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.generateSyntaxError = f; + function f(h, d) { + let { module: c, loc: o } = d, { line: e, column: r } = o.start, s = d.asString(), p = s ? ` + +| +| `.concat(s.split(` +`).join(` +| `), ` +| + +`) : "", n = new Error("".concat(h, ": ").concat(p, "(error occurred in '").concat(c, "' @ line ").concat(e, " : column ").concat(r, ")")); + return n.name = "SyntaxError", n.location = d, n.code = s, n; + } + } }), Rt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v1/visitor-keys.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = void 0; + var f = X(), h = { Program: (0, f.tuple)("body"), Template: (0, f.tuple)("body"), Block: (0, f.tuple)("body"), MustacheStatement: (0, f.tuple)("path", "params", "hash"), BlockStatement: (0, f.tuple)("path", "params", "hash", "program", "inverse"), ElementModifierStatement: (0, f.tuple)("path", "params", "hash"), PartialStatement: (0, f.tuple)("name", "params", "hash"), CommentStatement: (0, f.tuple)(), MustacheCommentStatement: (0, f.tuple)(), ElementNode: (0, f.tuple)("attributes", "modifiers", "children", "comments"), AttrNode: (0, f.tuple)("value"), TextNode: (0, f.tuple)(), ConcatStatement: (0, f.tuple)("parts"), SubExpression: (0, f.tuple)("path", "params", "hash"), PathExpression: (0, f.tuple)(), PathHead: (0, f.tuple)(), StringLiteral: (0, f.tuple)(), BooleanLiteral: (0, f.tuple)(), NumberLiteral: (0, f.tuple)(), NullLiteral: (0, f.tuple)(), UndefinedLiteral: (0, f.tuple)(), Hash: (0, f.tuple)("pairs"), HashPair: (0, f.tuple)("value"), NamedBlock: (0, f.tuple)("attributes", "modifiers", "children", "comments"), SimpleElement: (0, f.tuple)("attributes", "modifiers", "children", "comments"), Component: (0, f.tuple)("head", "attributes", "modifiers", "children", "comments") }, d = h; + t.default = d; + } }), Ye = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/traversal/errors.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.cannotRemoveNode = d, t.cannotReplaceNode = c, t.cannotReplaceOrRemoveInKeyHandlerYet = o, t.default = void 0; + var f = function() { + e.prototype = Object.create(Error.prototype), e.prototype.constructor = e; + function e(r, s, p, n) { + let a = Error.call(this, r); + this.key = n, this.message = r, this.node = s, this.parent = p, this.stack = a.stack; + } + return e; + }(), h = f; + t.default = h; + function d(e, r, s) { + return new f("Cannot remove a node unless it is part of an array", e, r, s); + } + function c(e, r, s) { + return new f("Cannot replace a node with multiple nodes unless it is part of an array", e, r, s); + } + function o(e, r) { + return new f("Replacing and removing in key handlers is not yet supported.", e, null, r); + } + } }), Qe = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/traversal/path.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = void 0; + var f = class { + constructor(d) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + this.node = d, this.parent = c, this.parentKey = o; + } + get parentNode() { + return this.parent ? this.parent.node : null; + } + parents() { + return { [Symbol.iterator]: () => new h(this) }; + } + }; + t.default = f; + var h = class { + constructor(d) { + this.path = d; + } + next() { + return this.path.parent ? (this.path = this.path.parent, { done: false, value: this.path }) : { done: true, value: null }; + } + }; + } }), Ne = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/traversal/traverse.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = E; + var f = X(), h = o(Rt()), d = Ye(), c = o(Qe()); + function o(v) { + return v && v.__esModule ? v : { default: v }; + } + function e(v) { + return typeof v == "function" ? v : v.enter; + } + function r(v) { + if (typeof v != "function") + return v.exit; + } + function s(v, _) { + let y = typeof v != "function" ? v.keys : void 0; + if (y === void 0) + return; + let g = y[_]; + return g !== void 0 ? g : y.All; + } + function p(v, _) { + if ((_ === "Template" || _ === "Block") && v.Program) + return v.Program; + let y = v[_]; + return y !== void 0 ? y : v.All; + } + function n(v, _) { + let { node: y, parent: g, parentKey: L } = _, j = p(v, y.type), x, w; + j !== void 0 && (x = e(j), w = r(j)); + let H; + if (x !== void 0 && (H = x(y, _)), H != null) + if (JSON.stringify(y) === JSON.stringify(H)) + H = void 0; + else { + if (Array.isArray(H)) + return l(v, H, g, L), H; + { + let m = new c.default(H, g, L); + return n(v, m) || H; + } + } + if (H === void 0) { + let m = h.default[y.type]; + for (let C = 0; C < m.length; C++) { + let S = m[C]; + i(v, j, _, S); + } + w !== void 0 && (H = w(y, _)); + } + return H; + } + function a(v, _) { + return v[_]; + } + function u(v, _, y) { + v[_] = y; + } + function i(v, _, y, g) { + let { node: L } = y, j = a(L, g); + if (!j) + return; + let x, w; + if (_ !== void 0) { + let H = s(_, g); + H !== void 0 && (x = e(H), w = r(H)); + } + if (x !== void 0 && x(L, g) !== void 0) + throw (0, d.cannotReplaceOrRemoveInKeyHandlerYet)(L, g); + if (Array.isArray(j)) + l(v, j, y, g); + else { + let H = new c.default(j, y, g), m = n(v, H); + m !== void 0 && b(L, g, j, m); + } + if (w !== void 0 && w(L, g) !== void 0) + throw (0, d.cannotReplaceOrRemoveInKeyHandlerYet)(L, g); + } + function l(v, _, y, g) { + for (let L = 0; L < _.length; L++) { + let j = _[L], x = new c.default(j, y, g), w = n(v, x); + w !== void 0 && (L += P(_, L, w) - 1); + } + } + function b(v, _, y, g) { + if (g === null) + throw (0, d.cannotRemoveNode)(y, v, _); + if (Array.isArray(g)) + if (g.length === 1) + u(v, _, g[0]); + else + throw g.length === 0 ? (0, d.cannotRemoveNode)(y, v, _) : (0, d.cannotReplaceNode)(y, v, _); + else + u(v, _, g); + } + function P(v, _, y) { + return y === null ? (v.splice(_, 1), 0) : Array.isArray(y) ? (v.splice(_, 1, ...y), y.length) : (v.splice(_, 1, y), 1); + } + function E(v, _) { + let y = new c.default(v); + n(_, y); + } + } }), Je = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/traversal/walker.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = void 0; + var f = class { + constructor(d) { + this.order = d, this.stack = []; + } + visit(d, c) { + !d || (this.stack.push(d), this.order === "post" ? (this.children(d, c), c(d, this)) : (c(d, this), this.children(d, c)), this.stack.pop()); + } + children(d, c) { + switch (d.type) { + case "Block": + case "Template": + return h.Program(this, d, c); + case "ElementNode": + return h.ElementNode(this, d, c); + case "BlockStatement": + return h.BlockStatement(this, d, c); + default: + return; + } + } + }; + t.default = f; + var h = { Program(d, c, o) { + for (let e = 0; e < c.body.length; e++) + d.visit(c.body[e], o); + }, Template(d, c, o) { + for (let e = 0; e < c.body.length; e++) + d.visit(c.body[e], o); + }, Block(d, c, o) { + for (let e = 0; e < c.body.length; e++) + d.visit(c.body[e], o); + }, ElementNode(d, c, o) { + for (let e = 0; e < c.children.length; e++) + d.visit(c.children[e], o); + }, BlockStatement(d, c, o) { + d.visit(c.program, o), d.visit(c.inverse || null, o); + } }; + } }), ye = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/utils.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.parseElementBlockParams = d, t.childrenFor = o, t.appendChild = e, t.isHBSLiteral = r, t.printLiteral = s, t.isUpperCase = p, t.isLowerCase = n; + var f = he(), h = /[!"#%-,\.\/;->@\[-\^`\{-~]/; + function d(a) { + let u = c(a); + u && (a.blockParams = u); + } + function c(a) { + let u = a.attributes.length, i = []; + for (let b = 0; b < u; b++) + i.push(a.attributes[b].name); + let l = i.indexOf("as"); + if (l === -1 && i.length > 0 && i[i.length - 1].charAt(0) === "|") + throw (0, f.generateSyntaxError)("Block parameters must be preceded by the `as` keyword, detected block parameters without `as`", a.loc); + if (l !== -1 && u > l && i[l + 1].charAt(0) === "|") { + let b = i.slice(l).join(" "); + if (b.charAt(b.length - 1) !== "|" || b.match(/\|/g).length !== 2) + throw (0, f.generateSyntaxError)("Invalid block parameters syntax, '" + b + "'", a.loc); + let P = []; + for (let E = l + 1; E < u; E++) { + let v = i[E].replace(/\|/g, ""); + if (v !== "") { + if (h.test(v)) + throw (0, f.generateSyntaxError)("Invalid identifier for block parameters, '" + v + "'", a.loc); + P.push(v); + } + } + if (P.length === 0) + throw (0, f.generateSyntaxError)("Cannot use zero block parameters", a.loc); + return a.attributes = a.attributes.slice(0, l), P; + } + return null; + } + function o(a) { + switch (a.type) { + case "Block": + case "Template": + return a.body; + case "ElementNode": + return a.children; + } + } + function e(a, u) { + o(a).push(u); + } + function r(a) { + return a.type === "StringLiteral" || a.type === "BooleanLiteral" || a.type === "NumberLiteral" || a.type === "NullLiteral" || a.type === "UndefinedLiteral"; + } + function s(a) { + return a.type === "UndefinedLiteral" ? "undefined" : JSON.stringify(a.value); + } + function p(a) { + return a[0] === a[0].toUpperCase() && a[0] !== a[0].toLowerCase(); + } + function n(a) { + return a[0] === a[0].toLowerCase() && a[0] !== a[0].toUpperCase(); + } + } }), Le = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v1/parser-builders.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.default = void 0; + var f = X(), h = we(), d = { close: false, open: false }, c = class { + pos(r, s) { + return { line: r, column: s }; + } + blockItself(r) { + let { body: s, blockParams: p, chained: n = false, loc: a } = r; + return { type: "Block", body: s || [], blockParams: p || [], chained: n, loc: a }; + } + template(r) { + let { body: s, blockParams: p, loc: n } = r; + return { type: "Template", body: s || [], blockParams: p || [], loc: n }; + } + mustache(r) { + let { path: s, params: p, hash: n, trusting: a, loc: u, strip: i = d } = r; + return { type: "MustacheStatement", path: s, params: p, hash: n, escaped: !a, trusting: a, loc: u, strip: i || { open: false, close: false } }; + } + block(r) { + let { path: s, params: p, hash: n, defaultBlock: a, elseBlock: u = null, loc: i, openStrip: l = d, inverseStrip: b = d, closeStrip: P = d } = r; + return { type: "BlockStatement", path: s, params: p, hash: n, program: a, inverse: u, loc: i, openStrip: l, inverseStrip: b, closeStrip: P }; + } + comment(r, s) { + return { type: "CommentStatement", value: r, loc: s }; + } + mustacheComment(r, s) { + return { type: "MustacheCommentStatement", value: r, loc: s }; + } + concat(r, s) { + return { type: "ConcatStatement", parts: r, loc: s }; + } + element(r) { + let { tag: s, selfClosing: p, attrs: n, blockParams: a, modifiers: u, comments: i, children: l, loc: b } = r; + return { type: "ElementNode", tag: s, selfClosing: p, attributes: n || [], blockParams: a || [], modifiers: u || [], comments: i || [], children: l || [], loc: b }; + } + elementModifier(r) { + let { path: s, params: p, hash: n, loc: a } = r; + return { type: "ElementModifierStatement", path: s, params: p, hash: n, loc: a }; + } + attr(r) { + let { name: s, value: p, loc: n } = r; + return { type: "AttrNode", name: s, value: p, loc: n }; + } + text(r) { + let { chars: s, loc: p } = r; + return { type: "TextNode", chars: s, loc: p }; + } + sexpr(r) { + let { path: s, params: p, hash: n, loc: a } = r; + return { type: "SubExpression", path: s, params: p, hash: n, loc: a }; + } + path(r) { + let { head: s, tail: p, loc: n } = r, { original: a } = o(s), u = [...a, ...p].join("."); + return new h.PathExpressionImplV1(u, s, p, n); + } + head(r, s) { + return r[0] === "@" ? this.atName(r, s) : r === "this" ? this.this(s) : this.var(r, s); + } + this(r) { + return { type: "ThisHead", loc: r }; + } + atName(r, s) { + return { type: "AtHead", name: r, loc: s }; + } + var(r, s) { + return { type: "VarHead", name: r, loc: s }; + } + hash(r, s) { + return { type: "Hash", pairs: r || [], loc: s }; + } + pair(r) { + let { key: s, value: p, loc: n } = r; + return { type: "HashPair", key: s, value: p, loc: n }; + } + literal(r) { + let { type: s, value: p, loc: n } = r; + return { type: s, value: p, original: p, loc: n }; + } + undefined() { + return this.literal({ type: "UndefinedLiteral", value: void 0 }); + } + null() { + return this.literal({ type: "NullLiteral", value: null }); + } + string(r, s) { + return this.literal({ type: "StringLiteral", value: r, loc: s }); + } + boolean(r, s) { + return this.literal({ type: "BooleanLiteral", value: r, loc: s }); + } + number(r, s) { + return this.literal({ type: "NumberLiteral", value: r, loc: s }); + } + }; + function o(r) { + switch (r.type) { + case "AtHead": + return { original: r.name, parts: [r.name] }; + case "ThisHead": + return { original: "this", parts: [] }; + case "VarHead": + return { original: r.name, parts: [r.name] }; + } + } + var e = new c(); + t.default = e; + } }), qt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/parser.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.Parser = void 0; + var f = X(), h = Ke(), d = class { + constructor(c) { + let o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : new h.EntityParser(h.HTML5NamedCharRefs), e = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "precompile"; + this.elementStack = [], this.currentAttribute = null, this.currentNode = null, this.source = c, this.lines = c.source.split(/(?:\r\n?|\n)/g), this.tokenizer = new h.EventedTokenizer(this, o, e); + } + offset() { + let { line: c, column: o } = this.tokenizer; + return this.source.offsetFor(c, o); + } + pos(c) { + let { line: o, column: e } = c; + return this.source.offsetFor(o, e); + } + finish(c) { + return (0, f.assign)({}, c, { loc: c.loc.until(this.offset()) }); + } + get currentAttr() { + return this.currentAttribute; + } + get currentTag() { + return this.currentNode; + } + get currentStartTag() { + return this.currentNode; + } + get currentEndTag() { + return this.currentNode; + } + get currentComment() { + return this.currentNode; + } + get currentData() { + return this.currentNode; + } + acceptTemplate(c) { + return this[c.type](c); + } + acceptNode(c) { + return this[c.type](c); + } + currentElement() { + return this.elementStack[this.elementStack.length - 1]; + } + sourceForNode(c, o) { + let e = c.loc.start.line - 1, r = e - 1, s = c.loc.start.column, p = [], n, a, u; + for (o ? (a = o.loc.end.line - 1, u = o.loc.end.column) : (a = c.loc.end.line - 1, u = c.loc.end.column); r < a; ) + r++, n = this.lines[r], r === e ? e === a ? p.push(n.slice(s, u)) : p.push(n.slice(s)) : r === a ? p.push(n.slice(0, u)) : p.push(n); + return p.join(` +`); + } + }; + t.Parser = d; + } }), xt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/parser/handlebars-node-visitors.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.HandlebarsNodeVisitors = void 0; + var f = qt(), h = ge(), d = he(), c = ye(), o = we(), e = r(Le()); + function r(i) { + return i && i.__esModule ? i : { default: i }; + } + var s = class extends f.Parser { + get isTopLevel() { + return this.elementStack.length === 0; + } + Program(i) { + let l = [], b; + this.isTopLevel ? b = e.default.template({ body: l, blockParams: i.blockParams, loc: this.source.spanFor(i.loc) }) : b = e.default.blockItself({ body: l, blockParams: i.blockParams, chained: i.chained, loc: this.source.spanFor(i.loc) }); + let P, E = i.body.length; + if (this.elementStack.push(b), E === 0) + return this.elementStack.pop(); + for (P = 0; P < E; P++) + this.acceptNode(i.body[P]); + let v = this.elementStack.pop(); + if (v !== b) { + let _ = v; + throw (0, d.generateSyntaxError)("Unclosed element `".concat(_.tag, "`"), _.loc); + } + return b; + } + BlockStatement(i) { + if (this.tokenizer.state === "comment") { + this.appendToCommentData(this.sourceForNode(i)); + return; + } + if (this.tokenizer.state !== "data" && this.tokenizer.state !== "beforeData") + throw (0, d.generateSyntaxError)("A block may only be used inside an HTML element or another block.", this.source.spanFor(i.loc)); + let { path: l, params: b, hash: P } = a(this, i); + i.program.loc || (i.program.loc = h.NON_EXISTENT_LOCATION), i.inverse && !i.inverse.loc && (i.inverse.loc = h.NON_EXISTENT_LOCATION); + let E = this.Program(i.program), v = i.inverse ? this.Program(i.inverse) : null, _ = e.default.block({ path: l, params: b, hash: P, defaultBlock: E, elseBlock: v, loc: this.source.spanFor(i.loc), openStrip: i.openStrip, inverseStrip: i.inverseStrip, closeStrip: i.closeStrip }), y = this.currentElement(); + (0, c.appendChild)(y, _); + } + MustacheStatement(i) { + let { tokenizer: l } = this; + if (l.state === "comment") { + this.appendToCommentData(this.sourceForNode(i)); + return; + } + let b, { escaped: P, loc: E, strip: v } = i; + if ((0, c.isHBSLiteral)(i.path)) + b = e.default.mustache({ path: this.acceptNode(i.path), params: [], hash: e.default.hash([], this.source.spanFor(i.path.loc).collapse("end")), trusting: !P, loc: this.source.spanFor(E), strip: v }); + else { + let { path: _, params: y, hash: g } = a(this, i); + b = e.default.mustache({ path: _, params: y, hash: g, trusting: !P, loc: this.source.spanFor(E), strip: v }); + } + switch (l.state) { + case "tagOpen": + case "tagName": + throw (0, d.generateSyntaxError)("Cannot use mustaches in an elements tagname", b.loc); + case "beforeAttributeName": + u(this.currentStartTag, b); + break; + case "attributeName": + case "afterAttributeName": + this.beginAttributeValue(false), this.finishAttributeValue(), u(this.currentStartTag, b), l.transitionTo("beforeAttributeName"); + break; + case "afterAttributeValueQuoted": + u(this.currentStartTag, b), l.transitionTo("beforeAttributeName"); + break; + case "beforeAttributeValue": + this.beginAttributeValue(false), this.appendDynamicAttributeValuePart(b), l.transitionTo("attributeValueUnquoted"); + break; + case "attributeValueDoubleQuoted": + case "attributeValueSingleQuoted": + case "attributeValueUnquoted": + this.appendDynamicAttributeValuePart(b); + break; + default: + (0, c.appendChild)(this.currentElement(), b); + } + return b; + } + appendDynamicAttributeValuePart(i) { + this.finalizeTextPart(); + let l = this.currentAttr; + l.isDynamic = true, l.parts.push(i); + } + finalizeTextPart() { + let l = this.currentAttr.currentPart; + l !== null && (this.currentAttr.parts.push(l), this.startTextPart()); + } + startTextPart() { + this.currentAttr.currentPart = null; + } + ContentStatement(i) { + n(this.tokenizer, i), this.tokenizer.tokenizePart(i.value), this.tokenizer.flushData(); + } + CommentStatement(i) { + let { tokenizer: l } = this; + if (l.state === "comment") + return this.appendToCommentData(this.sourceForNode(i)), null; + let { value: b, loc: P } = i, E = e.default.mustacheComment(b, this.source.spanFor(P)); + switch (l.state) { + case "beforeAttributeName": + case "afterAttributeName": + this.currentStartTag.comments.push(E); + break; + case "beforeData": + case "data": + (0, c.appendChild)(this.currentElement(), E); + break; + default: + throw (0, d.generateSyntaxError)("Using a Handlebars comment when in the `".concat(l.state, "` state is not supported"), this.source.spanFor(i.loc)); + } + return E; + } + PartialStatement(i) { + throw (0, d.generateSyntaxError)("Handlebars partials are not supported", this.source.spanFor(i.loc)); + } + PartialBlockStatement(i) { + throw (0, d.generateSyntaxError)("Handlebars partial blocks are not supported", this.source.spanFor(i.loc)); + } + Decorator(i) { + throw (0, d.generateSyntaxError)("Handlebars decorators are not supported", this.source.spanFor(i.loc)); + } + DecoratorBlock(i) { + throw (0, d.generateSyntaxError)("Handlebars decorator blocks are not supported", this.source.spanFor(i.loc)); + } + SubExpression(i) { + let { path: l, params: b, hash: P } = a(this, i); + return e.default.sexpr({ path: l, params: b, hash: P, loc: this.source.spanFor(i.loc) }); + } + PathExpression(i) { + let { original: l } = i, b; + if (l.indexOf("/") !== -1) { + if (l.slice(0, 2) === "./") + throw (0, d.generateSyntaxError)('Using "./" is not supported in Glimmer and unnecessary', this.source.spanFor(i.loc)); + if (l.slice(0, 3) === "../") + throw (0, d.generateSyntaxError)('Changing context using "../" is not supported in Glimmer', this.source.spanFor(i.loc)); + if (l.indexOf(".") !== -1) + throw (0, d.generateSyntaxError)("Mixing '.' and '/' in paths is not supported in Glimmer; use only '.' to separate property paths", this.source.spanFor(i.loc)); + b = [i.parts.join("/")]; + } else { + if (l === ".") + throw (0, d.generateSyntaxError)("'.' is not a supported path in Glimmer; check for a path with a trailing '.'", this.source.spanFor(i.loc)); + b = i.parts; + } + let P = false; + l.match(/^this(\..+)?$/) && (P = true); + let E; + if (P) + E = { type: "ThisHead", loc: { start: i.loc.start, end: { line: i.loc.start.line, column: i.loc.start.column + 4 } } }; + else if (i.data) { + let v = b.shift(); + if (v === void 0) + throw (0, d.generateSyntaxError)("Attempted to parse a path expression, but it was not valid. Paths beginning with @ must start with a-z.", this.source.spanFor(i.loc)); + E = { type: "AtHead", name: "@".concat(v), loc: { start: i.loc.start, end: { line: i.loc.start.line, column: i.loc.start.column + v.length + 1 } } }; + } else { + let v = b.shift(); + if (v === void 0) + throw (0, d.generateSyntaxError)("Attempted to parse a path expression, but it was not valid. Paths must start with a-z or A-Z.", this.source.spanFor(i.loc)); + E = { type: "VarHead", name: v, loc: { start: i.loc.start, end: { line: i.loc.start.line, column: i.loc.start.column + v.length } } }; + } + return new o.PathExpressionImplV1(i.original, E, b, this.source.spanFor(i.loc)); + } + Hash(i) { + let l = []; + for (let b = 0; b < i.pairs.length; b++) { + let P = i.pairs[b]; + l.push(e.default.pair({ key: P.key, value: this.acceptNode(P.value), loc: this.source.spanFor(P.loc) })); + } + return e.default.hash(l, this.source.spanFor(i.loc)); + } + StringLiteral(i) { + return e.default.literal({ type: "StringLiteral", value: i.value, loc: i.loc }); + } + BooleanLiteral(i) { + return e.default.literal({ type: "BooleanLiteral", value: i.value, loc: i.loc }); + } + NumberLiteral(i) { + return e.default.literal({ type: "NumberLiteral", value: i.value, loc: i.loc }); + } + UndefinedLiteral(i) { + return e.default.literal({ type: "UndefinedLiteral", value: void 0, loc: i.loc }); + } + NullLiteral(i) { + return e.default.literal({ type: "NullLiteral", value: null, loc: i.loc }); + } + }; + t.HandlebarsNodeVisitors = s; + function p(i, l) { + if (l === "") + return { lines: i.split(` +`).length - 1, columns: 0 }; + let P = i.split(l)[0].split(/\n/), E = P.length - 1; + return { lines: E, columns: P[E].length }; + } + function n(i, l) { + let b = l.loc.start.line, P = l.loc.start.column, E = p(l.original, l.value); + b = b + E.lines, E.lines ? P = E.columns : P = P + E.columns, i.line = b, i.column = P; + } + function a(i, l) { + if (l.path.type.endsWith("Literal")) { + let _ = l.path, y = ""; + throw _.type === "BooleanLiteral" ? y = _.original.toString() : _.type === "StringLiteral" ? y = '"'.concat(_.original, '"') : _.type === "NullLiteral" ? y = "null" : _.type === "NumberLiteral" ? y = _.value.toString() : y = "undefined", (0, d.generateSyntaxError)("".concat(_.type, ' "').concat(_.type === "StringLiteral" ? _.original : y, '" cannot be called as a sub-expression, replace (').concat(y, ") with ").concat(y), i.source.spanFor(_.loc)); + } + let b = l.path.type === "PathExpression" ? i.PathExpression(l.path) : i.SubExpression(l.path), P = l.params ? l.params.map((_) => i.acceptNode(_)) : [], E = P.length > 0 ? P[P.length - 1].loc : b.loc, v = l.hash ? i.Hash(l.hash) : { type: "Hash", pairs: [], loc: i.source.spanFor(E).collapse("end") }; + return { path: b, params: P, hash: v }; + } + function u(i, l) { + let { path: b, params: P, hash: E, loc: v } = l; + if ((0, c.isHBSLiteral)(b)) { + let y = "{{".concat((0, c.printLiteral)(b), "}}"), g = "<".concat(i.name, " ... ").concat(y, " ..."); + throw (0, d.generateSyntaxError)("In ".concat(g, ", ").concat(y, " is not a valid modifier"), l.loc); + } + let _ = e.default.elementModifier({ path: b, params: P, hash: E, loc: v }); + i.modifiers.push(_); + } + } }), Fe = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/parser/tokenizer-event-handlers.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.preprocess = _, t.TokenizerEventHandlers = void 0; + var f = X(), h = It(), d = Ke(), c = b(We()), o = Te(), e = De(), r = ue(), s = he(), p = b(Ne()), n = b(Je()), a = ye(), u = b(Le()), i = b(ke()), l = xt(); + function b(y) { + return y && y.__esModule ? y : { default: y }; + } + var P = class extends l.HandlebarsNodeVisitors { + constructor() { + super(...arguments), this.tagOpenLine = 0, this.tagOpenColumn = 0; + } + reset() { + this.currentNode = null; + } + beginComment() { + this.currentNode = u.default.comment("", this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn)); + } + appendToCommentData(y) { + this.currentComment.value += y; + } + finishComment() { + (0, a.appendChild)(this.currentElement(), this.finish(this.currentComment)); + } + beginData() { + this.currentNode = u.default.text({ chars: "", loc: this.offset().collapsed() }); + } + appendToData(y) { + this.currentData.chars += y; + } + finishData() { + this.currentData.loc = this.currentData.loc.withEnd(this.offset()), (0, a.appendChild)(this.currentElement(), this.currentData); + } + tagOpen() { + this.tagOpenLine = this.tokenizer.line, this.tagOpenColumn = this.tokenizer.column; + } + beginStartTag() { + this.currentNode = { type: "StartTag", name: "", attributes: [], modifiers: [], comments: [], selfClosing: false, loc: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn) }; + } + beginEndTag() { + this.currentNode = { type: "EndTag", name: "", attributes: [], modifiers: [], comments: [], selfClosing: false, loc: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn) }; + } + finishTag() { + let y = this.finish(this.currentTag); + if (y.type === "StartTag") { + if (this.finishStartTag(), y.name === ":") + throw (0, s.generateSyntaxError)("Invalid named block named detected, you may have created a named block without a name, or you may have began your name with a number. Named blocks must have names that are at least one character long, and begin with a lower case letter", this.source.spanFor({ start: this.currentTag.loc.toJSON(), end: this.offset().toJSON() })); + (o.voidMap[y.name] || y.selfClosing) && this.finishEndTag(true); + } else + y.type === "EndTag" && this.finishEndTag(false); + } + finishStartTag() { + let { name: y, attributes: g, modifiers: L, comments: j, selfClosing: x, loc: w } = this.finish(this.currentStartTag), H = u.default.element({ tag: y, selfClosing: x, attrs: g, modifiers: L, comments: j, children: [], blockParams: [], loc: w }); + this.elementStack.push(H); + } + finishEndTag(y) { + let g = this.finish(this.currentTag), L = this.elementStack.pop(), j = this.currentElement(); + this.validateEndTag(g, L, y), L.loc = L.loc.withEnd(this.offset()), (0, a.parseElementBlockParams)(L), (0, a.appendChild)(j, L); + } + markTagAsSelfClosing() { + this.currentTag.selfClosing = true; + } + appendToTagName(y) { + this.currentTag.name += y; + } + beginAttribute() { + let y = this.offset(); + this.currentAttribute = { name: "", parts: [], currentPart: null, isQuoted: false, isDynamic: false, start: y, valueSpan: y.collapsed() }; + } + appendToAttributeName(y) { + this.currentAttr.name += y; + } + beginAttributeValue(y) { + this.currentAttr.isQuoted = y, this.startTextPart(), this.currentAttr.valueSpan = this.offset().collapsed(); + } + appendToAttributeValue(y) { + let g = this.currentAttr.parts, L = g[g.length - 1], j = this.currentAttr.currentPart; + if (j) + j.chars += y, j.loc = j.loc.withEnd(this.offset()); + else { + let x = this.offset(); + y === ` +` ? x = L ? L.loc.getEnd() : this.currentAttr.valueSpan.getStart() : x = x.move(-1), this.currentAttr.currentPart = u.default.text({ chars: y, loc: x.collapsed() }); + } + } + finishAttributeValue() { + this.finalizeTextPart(); + let y = this.currentTag, g = this.offset(); + if (y.type === "EndTag") + throw (0, s.generateSyntaxError)("Invalid end tag: closing tag must not have attributes", this.source.spanFor({ start: y.loc.toJSON(), end: g.toJSON() })); + let { name: L, parts: j, start: x, isQuoted: w, isDynamic: H, valueSpan: m } = this.currentAttr, C = this.assembleAttributeValue(j, w, H, x.until(g)); + C.loc = m.withEnd(g); + let S = u.default.attr({ name: L, value: C, loc: x.until(g) }); + this.currentStartTag.attributes.push(S); + } + reportSyntaxError(y) { + throw (0, s.generateSyntaxError)(y, this.offset().collapsed()); + } + assembleConcatenatedValue(y) { + for (let j = 0; j < y.length; j++) { + let x = y[j]; + if (x.type !== "MustacheStatement" && x.type !== "TextNode") + throw (0, s.generateSyntaxError)("Unsupported node in quoted attribute value: " + x.type, x.loc); + } + (0, f.assertPresent)(y, "the concatenation parts of an element should not be empty"); + let g = y[0], L = y[y.length - 1]; + return u.default.concat(y, this.source.spanFor(g.loc).extend(this.source.spanFor(L.loc))); + } + validateEndTag(y, g, L) { + let j; + if (o.voidMap[y.name] && !L ? j = "<".concat(y.name, "> elements do not need end tags. You should remove it") : g.tag === void 0 ? j = "Closing tag without an open tag") : g.tag !== y.name && (j = "Closing tag did not match last open tag <").concat(g.tag, "> (on line ").concat(g.loc.startPosition.line, ")")), j) + throw (0, s.generateSyntaxError)(j, y.loc); + } + assembleAttributeValue(y, g, L, j) { + if (L) { + if (g) + return this.assembleConcatenatedValue(y); + if (y.length === 1 || y.length === 2 && y[1].type === "TextNode" && y[1].chars === "/") + return y[0]; + throw (0, s.generateSyntaxError)("An unquoted attribute value must be a string or a mustache, preceded by whitespace or a '=' character, and followed by whitespace, a '>' character, or '/>'", j); + } else + return y.length > 0 ? y[0] : u.default.text({ chars: "", loc: j }); + } + }; + t.TokenizerEventHandlers = P; + var E = { parse: _, builders: i.default, print: c.default, traverse: p.default, Walker: n.default }, v = class extends d.EntityParser { + constructor() { + super({}); + } + parse() { + } + }; + function _(y) { + let g = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var L, j, x; + let w = g.mode || "precompile", H, m; + typeof y == "string" ? (H = new e.Source(y, (L = g.meta) === null || L === void 0 ? void 0 : L.moduleName), w === "codemod" ? m = (0, h.parseWithoutProcessing)(y, g.parseOptions) : m = (0, h.parse)(y, g.parseOptions)) : y instanceof e.Source ? (H = y, w === "codemod" ? m = (0, h.parseWithoutProcessing)(y.source, g.parseOptions) : m = (0, h.parse)(y.source, g.parseOptions)) : (H = new e.Source("", (j = g.meta) === null || j === void 0 ? void 0 : j.moduleName), m = y); + let C; + w === "codemod" && (C = new v()); + let S = r.SourceSpan.forCharPositions(H, 0, H.source.length); + m.loc = { source: "(program)", start: S.startPosition, end: S.endPosition }; + let R = new P(H, C, w).acceptTemplate(m); + if (g.strictMode && (R.blockParams = (x = g.locals) !== null && x !== void 0 ? x : []), g && g.plugins && g.plugins.ast) + for (let M = 0, V = g.plugins.ast.length; M < V; M++) { + let G = g.plugins.ast[M], K = (0, f.assign)({}, g, { syntax: E }, { plugins: void 0 }), U = G(K); + (0, p.default)(R, U.visitor); + } + return R; + } + } }), Xe = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/symbol-table.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.BlockSymbolTable = t.ProgramSymbolTable = t.SymbolTable = void 0; + var f = X(), h = ye(), d = class { + static top(e, r) { + return new c(e, r); + } + child(e) { + let r = e.map((s) => this.allocate(s)); + return new o(this, e, r); + } + }; + t.SymbolTable = d; + var c = class extends d { + constructor(e, r) { + super(), this.templateLocals = e, this.customizeComponentName = r, this.symbols = [], this.upvars = [], this.size = 1, this.named = (0, f.dict)(), this.blocks = (0, f.dict)(), this.usedTemplateLocals = [], this._hasEval = false; + } + getUsedTemplateLocals() { + return this.usedTemplateLocals; + } + setHasEval() { + this._hasEval = true; + } + get hasEval() { + return this._hasEval; + } + has(e) { + return this.templateLocals.indexOf(e) !== -1; + } + get(e) { + let r = this.usedTemplateLocals.indexOf(e); + return r !== -1 ? [r, true] : (r = this.usedTemplateLocals.length, this.usedTemplateLocals.push(e), [r, true]); + } + getLocalsMap() { + return (0, f.dict)(); + } + getEvalInfo() { + let e = this.getLocalsMap(); + return Object.keys(e).map((r) => e[r]); + } + allocateFree(e, r) { + r.resolution() === 39 && r.isAngleBracket && (0, h.isUpperCase)(e) && (e = this.customizeComponentName(e)); + let s = this.upvars.indexOf(e); + return s !== -1 || (s = this.upvars.length, this.upvars.push(e)), s; + } + allocateNamed(e) { + let r = this.named[e]; + return r || (r = this.named[e] = this.allocate(e)), r; + } + allocateBlock(e) { + e === "inverse" && (e = "else"); + let r = this.blocks[e]; + return r || (r = this.blocks[e] = this.allocate("&".concat(e))), r; + } + allocate(e) { + return this.symbols.push(e), this.size++; + } + }; + t.ProgramSymbolTable = c; + var o = class extends d { + constructor(e, r, s) { + super(), this.parent = e, this.symbols = r, this.slots = s; + } + get locals() { + return this.symbols; + } + has(e) { + return this.symbols.indexOf(e) !== -1 || this.parent.has(e); + } + get(e) { + let r = this.symbols.indexOf(e); + return r === -1 ? this.parent.get(e) : [this.slots[r], false]; + } + getLocalsMap() { + let e = this.parent.getLocalsMap(); + return this.symbols.forEach((r) => e[r] = this.get(r)[0]), e; + } + getEvalInfo() { + let e = this.getLocalsMap(); + return Object.keys(e).map((r) => e[r]); + } + setHasEval() { + this.parent.setHasEval(); + } + allocateFree(e, r) { + return this.parent.allocateFree(e, r); + } + allocateNamed(e) { + return this.parent.allocateNamed(e); + } + allocateBlock(e) { + return this.parent.allocateBlock(e); + } + allocate(e) { + return this.parent.allocate(e); + } + }; + t.BlockSymbolTable = o; + } }), jt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/builders.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.BuildElement = t.Builder = void 0; + var f = X(), h = le(), d = ce(), c = e(ve()); + function o() { + if (typeof WeakMap != "function") + return null; + var n = /* @__PURE__ */ new WeakMap(); + return o = function() { + return n; + }, n; + } + function e(n) { + if (n && n.__esModule) + return n; + if (n === null || typeof n != "object" && typeof n != "function") + return { default: n }; + var a = o(); + if (a && a.has(n)) + return a.get(n); + var u = {}, i = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var l in n) + if (Object.prototype.hasOwnProperty.call(n, l)) { + var b = i ? Object.getOwnPropertyDescriptor(n, l) : null; + b && (b.get || b.set) ? Object.defineProperty(u, l, b) : u[l] = n[l]; + } + return u.default = n, a && a.set(n, u), u; + } + var r = function(n, a) { + var u = {}; + for (var i in n) + Object.prototype.hasOwnProperty.call(n, i) && a.indexOf(i) < 0 && (u[i] = n[i]); + if (n != null && typeof Object.getOwnPropertySymbols == "function") + for (var l = 0, i = Object.getOwnPropertySymbols(n); l < i.length; l++) + a.indexOf(i[l]) < 0 && Object.prototype.propertyIsEnumerable.call(n, i[l]) && (u[i[l]] = n[i[l]]); + return u; + }, s = class { + template(n, a, u) { + return new c.Template({ table: n, body: a, loc: u }); + } + block(n, a, u) { + return new c.Block({ scope: n, body: a, loc: u }); + } + namedBlock(n, a, u) { + return new c.NamedBlock({ name: n, block: a, attrs: [], componentArgs: [], modifiers: [], loc: u }); + } + simpleNamedBlock(n, a, u) { + return new p({ selfClosing: false, attrs: [], componentArgs: [], modifiers: [], comments: [] }).named(n, a, u); + } + slice(n, a) { + return new h.SourceSlice({ loc: a, chars: n }); + } + args(n, a, u) { + return new c.Args({ loc: u, positional: n, named: a }); + } + positional(n, a) { + return new c.PositionalArguments({ loc: a, exprs: n }); + } + namedArgument(n, a) { + return new c.NamedArgument({ name: n, value: a }); + } + named(n, a) { + return new c.NamedArguments({ loc: a, entries: n }); + } + attr(n, a) { + let { name: u, value: i, trusting: l } = n; + return new c.HtmlAttr({ loc: a, name: u, value: i, trusting: l }); + } + splatAttr(n, a) { + return new c.SplatAttr({ symbol: n, loc: a }); + } + arg(n, a) { + let { name: u, value: i, trusting: l } = n; + return new c.ComponentArg({ name: u, value: i, trusting: l, loc: a }); + } + path(n, a, u) { + return new c.PathExpression({ loc: u, ref: n, tail: a }); + } + self(n) { + return new c.ThisReference({ loc: n }); + } + at(n, a, u) { + return new c.ArgReference({ loc: u, name: new h.SourceSlice({ loc: u, chars: n }), symbol: a }); + } + freeVar(n) { + let { name: a, context: u, symbol: i, loc: l } = n; + return new c.FreeVarReference({ name: a, resolution: u, symbol: i, loc: l }); + } + localVar(n, a, u, i) { + return new c.LocalVarReference({ loc: i, name: n, isTemplateLocal: u, symbol: a }); + } + sexp(n, a) { + return new c.CallExpression({ loc: a, callee: n.callee, args: n.args }); + } + deprecatedCall(n, a, u) { + return new c.DeprecatedCallExpression({ loc: u, arg: n, callee: a }); + } + interpolate(n, a) { + return (0, f.assertPresent)(n), new c.InterpolateExpression({ loc: a, parts: n }); + } + literal(n, a) { + return new c.LiteralExpression({ loc: a, value: n }); + } + append(n, a) { + let { table: u, trusting: i, value: l } = n; + return new c.AppendContent({ table: u, trusting: i, value: l, loc: a }); + } + modifier(n, a) { + let { callee: u, args: i } = n; + return new c.ElementModifier({ loc: a, callee: u, args: i }); + } + namedBlocks(n, a) { + return new c.NamedBlocks({ loc: a, blocks: n }); + } + blockStatement(n, a) { + var { symbols: u, program: i, inverse: l = null } = n, b = r(n, ["symbols", "program", "inverse"]); + let P = i.loc, E = [this.namedBlock(h.SourceSlice.synthetic("default"), i, i.loc)]; + return l && (P = P.extend(l.loc), E.push(this.namedBlock(h.SourceSlice.synthetic("else"), l, l.loc))), new c.InvokeBlock({ loc: a, blocks: this.namedBlocks(E, P), callee: b.callee, args: b.args }); + } + element(n) { + return new p(n); + } + }; + t.Builder = s; + var p = class { + constructor(n) { + this.base = n, this.builder = new s(); + } + simple(n, a, u) { + return new c.SimpleElement((0, f.assign)({ tag: n, body: a, componentArgs: [], loc: u }, this.base)); + } + named(n, a, u) { + return new c.NamedBlock((0, f.assign)({ name: n, block: a, componentArgs: [], loc: u }, this.base)); + } + selfClosingComponent(n, a) { + return new c.InvokeComponent((0, f.assign)({ loc: a, callee: n, blocks: new c.NamedBlocks({ blocks: [], loc: a.sliceEndChars({ skipEnd: 1, chars: 1 }) }) }, this.base)); + } + componentWithDefaultBlock(n, a, u, i) { + let l = this.builder.block(u, a, i), b = this.builder.namedBlock(h.SourceSlice.synthetic("default"), l, i); + return new c.InvokeComponent((0, f.assign)({ loc: i, callee: n, blocks: this.builder.namedBlocks([b], b.loc) }, this.base)); + } + componentWithNamedBlocks(n, a, u) { + return new c.InvokeComponent((0, f.assign)({ loc: u, callee: n, blocks: this.builder.namedBlocks(a, d.SpanList.range(a)) }, this.base)); + } + }; + t.BuildElement = p; + } }), Mt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/loose-resolution.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.SexpSyntaxContext = c, t.ModifierSyntaxContext = o, t.BlockSyntaxContext = e, t.ComponentSyntaxContext = r, t.AttrValueSyntaxContext = s, t.AppendSyntaxContext = p; + var f = d(ve()); + function h() { + if (typeof WeakMap != "function") + return null; + var i = /* @__PURE__ */ new WeakMap(); + return h = function() { + return i; + }, i; + } + function d(i) { + if (i && i.__esModule) + return i; + if (i === null || typeof i != "object" && typeof i != "function") + return { default: i }; + var l = h(); + if (l && l.has(i)) + return l.get(i); + var b = {}, P = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var E in i) + if (Object.prototype.hasOwnProperty.call(i, E)) { + var v = P ? Object.getOwnPropertyDescriptor(i, E) : null; + v && (v.get || v.set) ? Object.defineProperty(b, E, v) : b[E] = i[E]; + } + return b.default = i, l && l.set(i, b), b; + } + function c(i) { + return n(i) ? f.LooseModeResolution.namespaced("Helper") : null; + } + function o(i) { + return n(i) ? f.LooseModeResolution.namespaced("Modifier") : null; + } + function e(i) { + return n(i) ? f.LooseModeResolution.namespaced("Component") : f.LooseModeResolution.fallback(); + } + function r(i) { + return a(i) ? f.LooseModeResolution.namespaced("Component", true) : null; + } + function s(i) { + let l = n(i), b = u(i); + return l ? b ? f.LooseModeResolution.namespaced("Helper") : f.LooseModeResolution.attr() : b ? f.STRICT_RESOLUTION : f.LooseModeResolution.fallback(); + } + function p(i) { + let l = n(i), b = u(i), P = i.trusting; + return l ? P ? f.LooseModeResolution.trustingAppend({ invoke: b }) : f.LooseModeResolution.append({ invoke: b }) : f.LooseModeResolution.fallback(); + } + function n(i) { + let l = i.path; + return a(l); + } + function a(i) { + return i.type === "PathExpression" && i.head.type === "VarHead" ? i.tail.length === 0 : false; + } + function u(i) { + return i.params.length > 0 || i.hash.pairs.length > 0; + } + } }), Ht = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/v2-a/normalize.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.normalize = P, t.BlockContext = void 0; + var f = X(), h = b(Te()), d = Fe(), c = le(), o = ce(), e = Xe(), r = he(), s = ye(), p = b(Le()), n = l(ve()), a = jt(), u = Mt(); + function i() { + if (typeof WeakMap != "function") + return null; + var m = /* @__PURE__ */ new WeakMap(); + return i = function() { + return m; + }, m; + } + function l(m) { + if (m && m.__esModule) + return m; + if (m === null || typeof m != "object" && typeof m != "function") + return { default: m }; + var C = i(); + if (C && C.has(m)) + return C.get(m); + var S = {}, R = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var M in m) + if (Object.prototype.hasOwnProperty.call(m, M)) { + var V = R ? Object.getOwnPropertyDescriptor(m, M) : null; + V && (V.get || V.set) ? Object.defineProperty(S, M, V) : S[M] = m[M]; + } + return S.default = m, C && C.set(m, S), S; + } + function b(m) { + return m && m.__esModule ? m : { default: m }; + } + function P(m) { + let C = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var S; + let R = (0, d.preprocess)(m, C), M = (0, f.assign)({ strictMode: false, locals: [] }, C), V = e.SymbolTable.top(M.locals, (S = C.customizeComponentName) !== null && S !== void 0 ? S : (W) => W), G = new E(m, M, V), K = new _(G), U = new L(G.loc(R.loc), R.body.map((W) => K.normalize(W)), G).assertTemplate(V), Z = V.getUsedTemplateLocals(); + return [U, Z]; + } + var E = class { + constructor(m, C, S) { + this.source = m, this.options = C, this.table = S, this.builder = new a.Builder(); + } + get strict() { + return this.options.strictMode || false; + } + loc(m) { + return this.source.spanFor(m); + } + resolutionFor(m, C) { + if (this.strict) + return { resolution: n.STRICT_RESOLUTION }; + if (this.isFreeVar(m)) { + let S = C(m); + return S === null ? { resolution: "error", path: w(m), head: H(m) } : { resolution: S }; + } else + return { resolution: n.STRICT_RESOLUTION }; + } + isFreeVar(m) { + return m.type === "PathExpression" ? m.head.type !== "VarHead" ? false : !this.table.has(m.head.name) : m.path.type === "PathExpression" ? this.isFreeVar(m.path) : false; + } + hasBinding(m) { + return this.table.has(m); + } + child(m) { + return new E(this.source, this.options, this.table.child(m)); + } + customizeComponentName(m) { + return this.options.customizeComponentName ? this.options.customizeComponentName(m) : m; + } + }; + t.BlockContext = E; + var v = class { + constructor(m) { + this.block = m; + } + normalize(m, C) { + switch (m.type) { + case "NullLiteral": + case "BooleanLiteral": + case "NumberLiteral": + case "StringLiteral": + case "UndefinedLiteral": + return this.block.builder.literal(m.value, this.block.loc(m.loc)); + case "PathExpression": + return this.path(m, C); + case "SubExpression": { + let S = this.block.resolutionFor(m, u.SexpSyntaxContext); + if (S.resolution === "error") + throw (0, r.generateSyntaxError)("You attempted to invoke a path (`".concat(S.path, "`) but ").concat(S.head, " was not in scope"), m.loc); + return this.block.builder.sexp(this.callParts(m, S.resolution), this.block.loc(m.loc)); + } + } + } + path(m, C) { + let S = this.block.loc(m.head.loc), R = [], M = S; + for (let V of m.tail) + M = M.sliceStartChars({ chars: V.length, skipStart: 1 }), R.push(new c.SourceSlice({ loc: M, chars: V })); + return this.block.builder.path(this.ref(m.head, C), R, this.block.loc(m.loc)); + } + callParts(m, C) { + let { path: S, params: R, hash: M } = m, V = this.normalize(S, C), G = R.map((N) => this.normalize(N, n.ARGUMENT_RESOLUTION)), K = o.SpanList.range(G, V.loc.collapse("end")), U = this.block.loc(M.loc), Z = o.SpanList.range([K, U]), W = this.block.builder.positional(R.map((N) => this.normalize(N, n.ARGUMENT_RESOLUTION)), K), T = this.block.builder.named(M.pairs.map((N) => this.namedArgument(N)), this.block.loc(M.loc)); + return { callee: V, args: this.block.builder.args(W, T, Z) }; + } + namedArgument(m) { + let S = this.block.loc(m.loc).sliceStartChars({ chars: m.key.length }); + return this.block.builder.namedArgument(new c.SourceSlice({ chars: m.key, loc: S }), this.normalize(m.value, n.ARGUMENT_RESOLUTION)); + } + ref(m, C) { + let { block: S } = this, { builder: R, table: M } = S, V = S.loc(m.loc); + switch (m.type) { + case "ThisHead": + return R.self(V); + case "AtHead": { + let G = M.allocateNamed(m.name); + return R.at(m.name, G, V); + } + case "VarHead": + if (S.hasBinding(m.name)) { + let [G, K] = M.get(m.name); + return S.builder.localVar(m.name, G, K, V); + } else { + let G = S.strict ? n.STRICT_RESOLUTION : C, K = S.table.allocateFree(m.name, G); + return S.builder.freeVar({ name: m.name, context: G, symbol: K, loc: V }); + } + } + } + }, _ = class { + constructor(m) { + this.block = m; + } + normalize(m) { + switch (m.type) { + case "PartialStatement": + throw new Error("Handlebars partial syntax ({{> ...}}) is not allowed in Glimmer"); + case "BlockStatement": + return this.BlockStatement(m); + case "ElementNode": + return new y(this.block).ElementNode(m); + case "MustacheStatement": + return this.MustacheStatement(m); + case "MustacheCommentStatement": + return this.MustacheCommentStatement(m); + case "CommentStatement": { + let C = this.block.loc(m.loc); + return new n.HtmlComment({ loc: C, text: C.slice({ skipStart: 4, skipEnd: 3 }).toSlice(m.value) }); + } + case "TextNode": + return new n.HtmlText({ loc: this.block.loc(m.loc), chars: m.chars }); + } + } + MustacheCommentStatement(m) { + let C = this.block.loc(m.loc), S; + return C.asString().slice(0, 5) === "{{!--" ? S = C.slice({ skipStart: 5, skipEnd: 4 }) : S = C.slice({ skipStart: 3, skipEnd: 2 }), new n.GlimmerComment({ loc: C, text: S.toSlice(m.value) }); + } + MustacheStatement(m) { + let { escaped: C } = m, S = this.block.loc(m.loc), R = this.expr.callParts({ path: m.path, params: m.params, hash: m.hash }, (0, u.AppendSyntaxContext)(m)), M = R.args.isEmpty() ? R.callee : this.block.builder.sexp(R, S); + return this.block.builder.append({ table: this.block.table, trusting: !C, value: M }, S); + } + BlockStatement(m) { + let { program: C, inverse: S } = m, R = this.block.loc(m.loc), M = this.block.resolutionFor(m, u.BlockSyntaxContext); + if (M.resolution === "error") + throw (0, r.generateSyntaxError)("You attempted to invoke a path (`{{#".concat(M.path, "}}`) but ").concat(M.head, " was not in scope"), R); + let V = this.expr.callParts(m, M.resolution); + return this.block.builder.blockStatement((0, f.assign)({ symbols: this.block.table, program: this.Block(C), inverse: S ? this.Block(S) : null }, V), R); + } + Block(m) { + let { body: C, loc: S, blockParams: R } = m, M = this.block.child(R), V = new _(M); + return new j(this.block.loc(S), C.map((G) => V.normalize(G)), this.block).assertBlock(M.table); + } + get expr() { + return new v(this.block); + } + }, y = class { + constructor(m) { + this.ctx = m; + } + ElementNode(m) { + let { tag: C, selfClosing: S, comments: R } = m, M = this.ctx.loc(m.loc), [V, ...G] = C.split("."), K = this.classifyTag(V, G, m.loc), U = m.attributes.filter((A) => A.name[0] !== "@").map((A) => this.attr(A)), Z = m.attributes.filter((A) => A.name[0] === "@").map((A) => this.arg(A)), W = m.modifiers.map((A) => this.modifier(A)), T = this.ctx.child(m.blockParams), N = new _(T), k = m.children.map((A) => N.normalize(A)), B = this.ctx.builder.element({ selfClosing: S, attrs: U, componentArgs: Z, modifiers: W, comments: R.map((A) => new _(this.ctx).MustacheCommentStatement(A)) }), O = new x(B, M, k, this.ctx), z = this.ctx.loc(m.loc).sliceStartChars({ chars: C.length, skipStart: 1 }); + if (K === "ElementHead") + return C[0] === ":" ? O.assertNamedBlock(z.slice({ skipStart: 1 }).toSlice(C.slice(1)), T.table) : O.assertElement(z.toSlice(C), m.blockParams.length > 0); + if (m.selfClosing) + return B.selfClosingComponent(K, M); + { + let A = O.assertComponent(C, T.table, m.blockParams.length > 0); + return B.componentWithNamedBlocks(K, A, M); + } + } + modifier(m) { + let C = this.ctx.resolutionFor(m, u.ModifierSyntaxContext); + if (C.resolution === "error") + throw (0, r.generateSyntaxError)("You attempted to invoke a path (`{{#".concat(C.path, "}}`) as a modifier, but ").concat(C.head, " was not in scope. Try adding `this` to the beginning of the path"), m.loc); + let S = this.expr.callParts(m, C.resolution); + return this.ctx.builder.modifier(S, this.ctx.loc(m.loc)); + } + mustacheAttr(m) { + let C = this.ctx.builder.sexp(this.expr.callParts(m, (0, u.AttrValueSyntaxContext)(m)), this.ctx.loc(m.loc)); + return C.args.isEmpty() ? C.callee : C; + } + attrPart(m) { + switch (m.type) { + case "MustacheStatement": + return { expr: this.mustacheAttr(m), trusting: !m.escaped }; + case "TextNode": + return { expr: this.ctx.builder.literal(m.chars, this.ctx.loc(m.loc)), trusting: true }; + } + } + attrValue(m) { + switch (m.type) { + case "ConcatStatement": { + let C = m.parts.map((S) => this.attrPart(S).expr); + return { expr: this.ctx.builder.interpolate(C, this.ctx.loc(m.loc)), trusting: false }; + } + default: + return this.attrPart(m); + } + } + attr(m) { + if (m.name === "...attributes") + return this.ctx.builder.splatAttr(this.ctx.table.allocateBlock("attrs"), this.ctx.loc(m.loc)); + let C = this.ctx.loc(m.loc), S = C.sliceStartChars({ chars: m.name.length }).toSlice(m.name), R = this.attrValue(m.value); + return this.ctx.builder.attr({ name: S, value: R.expr, trusting: R.trusting }, C); + } + maybeDeprecatedCall(m, C) { + if (this.ctx.strict || C.type !== "MustacheStatement") + return null; + let { path: S } = C; + if (S.type !== "PathExpression" || S.head.type !== "VarHead") + return null; + let { name: R } = S.head; + if (R === "has-block" || R === "has-block-params" || this.ctx.hasBinding(R) || S.tail.length !== 0 || C.params.length !== 0 || C.hash.pairs.length !== 0) + return null; + let M = n.LooseModeResolution.attr(), V = this.ctx.builder.freeVar({ name: R, context: M, symbol: this.ctx.table.allocateFree(R, M), loc: S.loc }); + return { expr: this.ctx.builder.deprecatedCall(m, V, C.loc), trusting: false }; + } + arg(m) { + let C = this.ctx.loc(m.loc), S = C.sliceStartChars({ chars: m.name.length }).toSlice(m.name), R = this.maybeDeprecatedCall(S, m.value) || this.attrValue(m.value); + return this.ctx.builder.arg({ name: S, value: R.expr, trusting: R.trusting }, C); + } + classifyTag(m, C, S) { + let R = (0, s.isUpperCase)(m), M = m[0] === "@" || m === "this" || this.ctx.hasBinding(m); + if (this.ctx.strict && !M) { + if (R) + throw (0, r.generateSyntaxError)("Attempted to invoke a component that was not in scope in a strict mode template, `<".concat(m, ">`. If you wanted to create an element with that name, convert it to lowercase - `<").concat(m.toLowerCase(), ">`"), S); + return "ElementHead"; + } + let V = M || R, G = S.sliceStartChars({ skipStart: 1, chars: m.length }), K = C.reduce((W, T) => W + 1 + T.length, 0), U = G.getEnd().move(K), Z = G.withEnd(U); + if (V) { + let W = p.default.path({ head: p.default.head(m, G), tail: C, loc: Z }), T = this.ctx.resolutionFor(W, u.ComponentSyntaxContext); + if (T.resolution === "error") + throw (0, r.generateSyntaxError)("You attempted to invoke a path (`<".concat(T.path, ">`) but ").concat(T.head, " was not in scope"), S); + return new v(this.ctx).normalize(W, T.resolution); + } + if (C.length > 0) + throw (0, r.generateSyntaxError)("You used ".concat(m, ".").concat(C.join("."), " as a tag name, but ").concat(m, " is not in scope"), S); + return "ElementHead"; + } + get expr() { + return new v(this.ctx); + } + }, g = class { + constructor(m, C, S) { + this.loc = m, this.children = C, this.block = S, this.namedBlocks = C.filter((R) => R instanceof n.NamedBlock), this.hasSemanticContent = Boolean(C.filter((R) => { + if (R instanceof n.NamedBlock) + return false; + switch (R.type) { + case "GlimmerComment": + case "HtmlComment": + return false; + case "HtmlText": + return !/^\s*$/.exec(R.chars); + default: + return true; + } + }).length), this.nonBlockChildren = C.filter((R) => !(R instanceof n.NamedBlock)); + } + }, L = class extends g { + assertTemplate(m) { + if ((0, f.isPresent)(this.namedBlocks)) + throw (0, r.generateSyntaxError)("Unexpected named block at the top-level of a template", this.loc); + return this.block.builder.template(m, this.nonBlockChildren, this.block.loc(this.loc)); + } + }, j = class extends g { + assertBlock(m) { + if ((0, f.isPresent)(this.namedBlocks)) + throw (0, r.generateSyntaxError)("Unexpected named block nested in a normal block", this.loc); + return this.block.builder.block(m, this.nonBlockChildren, this.loc); + } + }, x = class extends g { + constructor(m, C, S, R) { + super(C, S, R), this.el = m; + } + assertNamedBlock(m, C) { + if (this.el.base.selfClosing) + throw (0, r.generateSyntaxError)("<:".concat(m.chars, "/> is not a valid named block: named blocks cannot be self-closing"), this.loc); + if ((0, f.isPresent)(this.namedBlocks)) + throw (0, r.generateSyntaxError)("Unexpected named block inside <:".concat(m.chars, "> named block: named blocks cannot contain nested named blocks"), this.loc); + if (!(0, s.isLowerCase)(m.chars)) + throw (0, r.generateSyntaxError)("<:".concat(m.chars, "> is not a valid named block, and named blocks must begin with a lowercase letter"), this.loc); + if (this.el.base.attrs.length > 0 || this.el.base.componentArgs.length > 0 || this.el.base.modifiers.length > 0) + throw (0, r.generateSyntaxError)("named block <:".concat(m.chars, "> cannot have attributes, arguments, or modifiers"), this.loc); + let S = o.SpanList.range(this.nonBlockChildren, this.loc); + return this.block.builder.namedBlock(m, this.block.builder.block(C, this.nonBlockChildren, S), this.loc); + } + assertElement(m, C) { + if (C) + throw (0, r.generateSyntaxError)("Unexpected block params in <".concat(m, ">: simple elements cannot have block params"), this.loc); + if ((0, f.isPresent)(this.namedBlocks)) { + let S = this.namedBlocks.map((R) => R.name); + if (S.length === 1) + throw (0, r.generateSyntaxError)("Unexpected named block <:foo> inside <".concat(m.chars, "> HTML element"), this.loc); + { + let R = S.map((M) => "<:".concat(M.chars, ">")).join(", "); + throw (0, r.generateSyntaxError)("Unexpected named blocks inside <".concat(m.chars, "> HTML element (").concat(R, ")"), this.loc); + } + } + return this.el.simple(m, this.nonBlockChildren, this.loc); + } + assertComponent(m, C, S) { + if ((0, f.isPresent)(this.namedBlocks) && this.hasSemanticContent) + throw (0, r.generateSyntaxError)("Unexpected content inside <".concat(m, "> component invocation: when using named blocks, the tag cannot contain other content"), this.loc); + if ((0, f.isPresent)(this.namedBlocks)) { + if (S) + throw (0, r.generateSyntaxError)("Unexpected block params list on <".concat(m, "> component invocation: when passing named blocks, the invocation tag cannot take block params"), this.loc); + let R = /* @__PURE__ */ new Set(); + for (let M of this.namedBlocks) { + let V = M.name.chars; + if (R.has(V)) + throw (0, r.generateSyntaxError)("Component had two named blocks with the same name, `<:".concat(V, ">`. Only one block with a given name may be passed"), this.loc); + if (V === "inverse" && R.has("else") || V === "else" && R.has("inverse")) + throw (0, r.generateSyntaxError)("Component has both <:else> and <:inverse> block. <:inverse> is an alias for <:else>", this.loc); + R.add(V); + } + return this.namedBlocks; + } else + return [this.block.builder.namedBlock(c.SourceSlice.synthetic("default"), this.block.builder.block(C, this.nonBlockChildren, this.loc), this.loc)]; + } + }; + function w(m) { + return m.type !== "PathExpression" && m.path.type === "PathExpression" ? w(m.path) : new h.default({ entityEncoding: "raw" }).print(m); + } + function H(m) { + if (m.type === "PathExpression") + switch (m.head.type) { + case "AtHead": + case "VarHead": + return m.head.name; + case "ThisHead": + return "this"; + } + else + return m.path.type === "PathExpression" ? H(m.path) : new h.default({ entityEncoding: "raw" }).print(m); + } + } }), Ze = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/keywords.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.isKeyword = f, t.KEYWORDS_TYPES = void 0; + function f(d) { + return d in h; + } + var h = { component: ["Call", "Append", "Block"], debugger: ["Append"], "each-in": ["Block"], each: ["Block"], "has-block-params": ["Call", "Append"], "has-block": ["Call", "Append"], helper: ["Call", "Append"], if: ["Call", "Append", "Block"], "in-element": ["Block"], let: ["Block"], "link-to": ["Append", "Block"], log: ["Call", "Append"], modifier: ["Call"], mount: ["Append"], mut: ["Call", "Append"], outlet: ["Append"], "query-params": ["Call"], readonly: ["Call", "Append"], unbound: ["Call", "Append"], unless: ["Call", "Append", "Block"], with: ["Block"], yield: ["Append"] }; + t.KEYWORDS_TYPES = h; + } }), Vt = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/lib/get-template-locals.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), t.getTemplateLocals = r; + var f = Ze(), h = Fe(), d = c(Ne()); + function c(s) { + return s && s.__esModule ? s : { default: s }; + } + function o(s, p, n) { + if (s.type === "PathExpression") { + if (s.head.type === "AtHead" || s.head.type === "ThisHead") + return; + let a = s.head.name; + if (p.indexOf(a) === -1) + return a; + } else if (s.type === "ElementNode") { + let { tag: a } = s, u = a.charAt(0); + return u === ":" || u === "@" || !n.includeHtmlElements && a.indexOf(".") === -1 && a.toLowerCase() === a || a.substr(0, 5) === "this." || p.indexOf(a) !== -1 ? void 0 : a; + } + } + function e(s, p, n, a) { + let u = o(p, n, a); + (Array.isArray(u) ? u : [u]).forEach((i) => { + i !== void 0 && i[0] !== "@" && s.add(i.split(".")[0]); + }); + } + function r(s) { + let p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { includeHtmlElements: false, includeKeywords: false }, n = (0, h.preprocess)(s), a = /* @__PURE__ */ new Set(), u = []; + (0, d.default)(n, { Block: { enter(l) { + let { blockParams: b } = l; + b.forEach((P) => { + u.push(P); + }); + }, exit(l) { + let { blockParams: b } = l; + b.forEach(() => { + u.pop(); + }); + } }, ElementNode: { enter(l) { + l.blockParams.forEach((b) => { + u.push(b); + }), e(a, l, u, p); + }, exit(l) { + let { blockParams: b } = l; + b.forEach(() => { + u.pop(); + }); + } }, PathExpression(l) { + e(a, l, u, p); + } }); + let i = []; + return a.forEach((l) => i.push(l)), p != null && p.includeKeywords || (i = i.filter((l) => !(0, f.isKeyword)(l))), i; + } + } }), Ut = I({ "node_modules/@glimmer/syntax/dist/commonjs/es2017/index.js"(t) { + "use strict"; + F(), Object.defineProperty(t, "__esModule", { value: true }), Object.defineProperty(t, "Source", { enumerable: true, get: function() { + return f.Source; + } }), Object.defineProperty(t, "builders", { enumerable: true, get: function() { + return h.default; + } }), Object.defineProperty(t, "normalize", { enumerable: true, get: function() { + return o.normalize; + } }), Object.defineProperty(t, "SymbolTable", { enumerable: true, get: function() { + return e.SymbolTable; + } }), Object.defineProperty(t, "BlockSymbolTable", { enumerable: true, get: function() { + return e.BlockSymbolTable; + } }), Object.defineProperty(t, "ProgramSymbolTable", { enumerable: true, get: function() { + return e.ProgramSymbolTable; + } }), Object.defineProperty(t, "generateSyntaxError", { enumerable: true, get: function() { + return r.generateSyntaxError; + } }), Object.defineProperty(t, "preprocess", { enumerable: true, get: function() { + return s.preprocess; + } }), Object.defineProperty(t, "print", { enumerable: true, get: function() { + return p.default; + } }), Object.defineProperty(t, "sortByLoc", { enumerable: true, get: function() { + return n.sortByLoc; + } }), Object.defineProperty(t, "Walker", { enumerable: true, get: function() { + return a.default; + } }), Object.defineProperty(t, "Path", { enumerable: true, get: function() { + return a.default; + } }), Object.defineProperty(t, "traverse", { enumerable: true, get: function() { + return u.default; + } }), Object.defineProperty(t, "cannotRemoveNode", { enumerable: true, get: function() { + return i.cannotRemoveNode; + } }), Object.defineProperty(t, "cannotReplaceNode", { enumerable: true, get: function() { + return i.cannotReplaceNode; + } }), Object.defineProperty(t, "WalkerPath", { enumerable: true, get: function() { + return l.default; + } }), Object.defineProperty(t, "isKeyword", { enumerable: true, get: function() { + return b.isKeyword; + } }), Object.defineProperty(t, "KEYWORDS_TYPES", { enumerable: true, get: function() { + return b.KEYWORDS_TYPES; + } }), Object.defineProperty(t, "getTemplateLocals", { enumerable: true, get: function() { + return P.getTemplateLocals; + } }), Object.defineProperty(t, "SourceSlice", { enumerable: true, get: function() { + return E.SourceSlice; + } }), Object.defineProperty(t, "SourceSpan", { enumerable: true, get: function() { + return v.SourceSpan; + } }), Object.defineProperty(t, "SpanList", { enumerable: true, get: function() { + return _.SpanList; + } }), Object.defineProperty(t, "maybeLoc", { enumerable: true, get: function() { + return _.maybeLoc; + } }), Object.defineProperty(t, "loc", { enumerable: true, get: function() { + return _.loc; + } }), Object.defineProperty(t, "hasSpan", { enumerable: true, get: function() { + return _.hasSpan; + } }), Object.defineProperty(t, "node", { enumerable: true, get: function() { + return y.node; + } }), t.ASTv2 = t.AST = t.ASTv1 = void 0; + var f = De(), h = j(ke()), d = L(Ct()); + t.ASTv1 = d, t.AST = d; + var c = L(ve()); + t.ASTv2 = c; + var o = Ht(), e = Xe(), r = he(), s = Fe(), p = j(We()), n = Ue(), a = j(Je()), u = j(Ne()), i = Ye(), l = j(Qe()), b = Ze(), P = Vt(), E = le(), v = ue(), _ = ce(), y = ne(); + function g() { + if (typeof WeakMap != "function") + return null; + var x = /* @__PURE__ */ new WeakMap(); + return g = function() { + return x; + }, x; + } + function L(x) { + if (x && x.__esModule) + return x; + if (x === null || typeof x != "object" && typeof x != "function") + return { default: x }; + var w = g(); + if (w && w.has(x)) + return w.get(x); + var H = {}, m = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var C in x) + if (Object.prototype.hasOwnProperty.call(x, C)) { + var S = m ? Object.getOwnPropertyDescriptor(x, C) : null; + S && (S.get || S.set) ? Object.defineProperty(H, C, S) : H[C] = x[C]; + } + return H.default = x, w && w.set(x, H), H; + } + function j(x) { + return x && x.__esModule ? x : { default: x }; + } + } }); + F(); + var { LinesAndColumns: zt } = st(), Gt = ut(), { locStart: Kt, locEnd: Wt } = ot(); + function Yt() { + return { name: "addBackslash", visitor: { All(t) { + var f; + let h = (f = t.children) !== null && f !== void 0 ? f : t.body; + if (h) + for (let d = 0; d < h.length - 1; d++) + h[d].type === "TextNode" && h[d + 1].type === "MustacheStatement" && (h[d].chars = h[d].chars.replace(/\\$/, "\\\\")); + } } }; + } + function Qt(t) { + let f = new zt(t), h = (d) => { + let { line: c, column: o } = d; + return f.indexForLocation({ line: c - 1, column: o }); + }; + return () => ({ name: "addOffset", visitor: { All(d) { + let { start: c, end: o } = d.loc; + c.offset = h(c), o.offset = h(o); + } } }); + } + function Jt(t) { + let { preprocess: f } = Ut(), h; + try { + h = f(t, { mode: "codemod", plugins: { ast: [Yt, Qt(t)] } }); + } catch (d) { + let c = Xt(d); + throw c ? Gt(d.message, c) : d; + } + return h; + } + function Xt(t) { + let { location: f, hash: h } = t; + if (f) { + let { start: d, end: c } = f; + return typeof c.line != "number" ? { start: d } : f; + } + if (h) { + let { loc: { last_line: d, last_column: c } } = h; + return { start: { line: d, column: c + 1 } }; + } + } + $e.exports = { parsers: { glimmer: { parse: Jt, astFormat: "glimmer", locStart: Kt, locEnd: Wt } } }; + }); + return Zt(); + }); + } +}); + +// node_modules/prettier/parser-graphql.js +var require_parser_graphql = __commonJS({ + "node_modules/prettier/parser-graphql.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.graphql = e(); + } + })(function() { + "use strict"; + var oe = (a, d) => () => (d || a((d = { exports: {} }).exports, d), d.exports); + var be = oe((Ce, ae) => { + var H = Object.getOwnPropertyNames, se = (a, d) => function() { + return a && (d = (0, a[H(a)[0]])(a = 0)), d; + }, L = (a, d) => function() { + return d || (0, a[H(a)[0]])((d = { exports: {} }).exports, d), d.exports; + }, K = se({ ""() { + } }), ce = L({ "src/common/parser-create-error.js"(a, d) { + "use strict"; + K(); + function i(c, r) { + let _ = new SyntaxError(c + " (" + r.start.line + ":" + r.start.column + ")"); + return _.loc = r, _; + } + d.exports = i; + } }), ue = L({ "src/utils/try-combinations.js"(a, d) { + "use strict"; + K(); + function i() { + let c; + for (var r = arguments.length, _ = new Array(r), E = 0; E < r; E++) + _[E] = arguments[E]; + for (let [k, O] of _.entries()) + try { + return { result: O() }; + } catch (A) { + k === 0 && (c = A); + } + return { error: c }; + } + d.exports = i; + } }), le = L({ "src/language-graphql/pragma.js"(a, d) { + "use strict"; + K(); + function i(r) { + return /^\s*#[^\S\n]*@(?:format|prettier)\s*(?:\n|$)/.test(r); + } + function c(r) { + return `# @format + +` + r; + } + d.exports = { hasPragma: i, insertPragma: c }; + } }), pe = L({ "src/language-graphql/loc.js"(a, d) { + "use strict"; + K(); + function i(r) { + return typeof r.start == "number" ? r.start : r.loc && r.loc.start; + } + function c(r) { + return typeof r.end == "number" ? r.end : r.loc && r.loc.end; + } + d.exports = { locStart: i, locEnd: c }; + } }), fe = L({ "node_modules/graphql/jsutils/isObjectLike.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.default = i; + function d(c) { + return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? d = function(_) { + return typeof _; + } : d = function(_) { + return _ && typeof Symbol == "function" && _.constructor === Symbol && _ !== Symbol.prototype ? "symbol" : typeof _; + }, d(c); + } + function i(c) { + return d(c) == "object" && c !== null; + } + } }), z = L({ "node_modules/graphql/polyfills/symbols.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.SYMBOL_TO_STRING_TAG = a.SYMBOL_ASYNC_ITERATOR = a.SYMBOL_ITERATOR = void 0; + var d = typeof Symbol == "function" && Symbol.iterator != null ? Symbol.iterator : "@@iterator"; + a.SYMBOL_ITERATOR = d; + var i = typeof Symbol == "function" && Symbol.asyncIterator != null ? Symbol.asyncIterator : "@@asyncIterator"; + a.SYMBOL_ASYNC_ITERATOR = i; + var c = typeof Symbol == "function" && Symbol.toStringTag != null ? Symbol.toStringTag : "@@toStringTag"; + a.SYMBOL_TO_STRING_TAG = c; + } }), $ = L({ "node_modules/graphql/language/location.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.getLocation = d; + function d(i, c) { + for (var r = /\r\n|[\n\r]/g, _ = 1, E = c + 1, k; (k = r.exec(i.body)) && k.index < c; ) + _ += 1, E = c + 1 - (k.index + k[0].length); + return { line: _, column: E }; + } + } }), de = L({ "node_modules/graphql/language/printLocation.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.printLocation = i, a.printSourceLocation = c; + var d = $(); + function i(k) { + return c(k.source, (0, d.getLocation)(k.source, k.start)); + } + function c(k, O) { + var A = k.locationOffset.column - 1, N = _(A) + k.body, g = O.line - 1, D = k.locationOffset.line - 1, v = O.line + D, I = O.line === 1 ? A : 0, s = O.column + I, p = "".concat(k.name, ":").concat(v, ":").concat(s, ` +`), e = N.split(/\r\n|[\n\r]/g), n = e[g]; + if (n.length > 120) { + for (var t = Math.floor(s / 80), u = s % 80, y = [], f = 0; f < n.length; f += 80) + y.push(n.slice(f, f + 80)); + return p + r([["".concat(v), y[0]]].concat(y.slice(1, t + 1).map(function(m) { + return ["", m]; + }), [[" ", _(u - 1) + "^"], ["", y[t + 1]]])); + } + return p + r([["".concat(v - 1), e[g - 1]], ["".concat(v), n], ["", _(s - 1) + "^"], ["".concat(v + 1), e[g + 1]]]); + } + function r(k) { + var O = k.filter(function(N) { + var g = N[0], D = N[1]; + return D !== void 0; + }), A = Math.max.apply(Math, O.map(function(N) { + var g = N[0]; + return g.length; + })); + return O.map(function(N) { + var g = N[0], D = N[1]; + return E(A, g) + (D ? " | " + D : " |"); + }).join(` +`); + } + function _(k) { + return Array(k + 1).join(" "); + } + function E(k, O) { + return _(k - O.length) + O; + } + } }), W = L({ "node_modules/graphql/error/GraphQLError.js"(a) { + "use strict"; + K(); + function d(f) { + return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? d = function(o) { + return typeof o; + } : d = function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, d(f); + } + Object.defineProperty(a, "__esModule", { value: true }), a.printError = y, a.GraphQLError = void 0; + var i = E(fe()), c = z(), r = $(), _ = de(); + function E(f) { + return f && f.__esModule ? f : { default: f }; + } + function k(f, m) { + if (!(f instanceof m)) + throw new TypeError("Cannot call a class as a function"); + } + function O(f, m) { + for (var o = 0; o < m.length; o++) { + var h = m[o]; + h.enumerable = h.enumerable || false, h.configurable = true, "value" in h && (h.writable = true), Object.defineProperty(f, h.key, h); + } + } + function A(f, m, o) { + return m && O(f.prototype, m), o && O(f, o), f; + } + function N(f, m) { + if (typeof m != "function" && m !== null) + throw new TypeError("Super expression must either be null or a function"); + f.prototype = Object.create(m && m.prototype, { constructor: { value: f, writable: true, configurable: true } }), m && n(f, m); + } + function g(f) { + var m = p(); + return function() { + var h = t(f), l; + if (m) { + var T = t(this).constructor; + l = Reflect.construct(h, arguments, T); + } else + l = h.apply(this, arguments); + return D(this, l); + }; + } + function D(f, m) { + return m && (d(m) === "object" || typeof m == "function") ? m : v(f); + } + function v(f) { + if (f === void 0) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return f; + } + function I(f) { + var m = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0; + return I = function(h) { + if (h === null || !e(h)) + return h; + if (typeof h != "function") + throw new TypeError("Super expression must either be null or a function"); + if (typeof m < "u") { + if (m.has(h)) + return m.get(h); + m.set(h, l); + } + function l() { + return s(h, arguments, t(this).constructor); + } + return l.prototype = Object.create(h.prototype, { constructor: { value: l, enumerable: false, writable: true, configurable: true } }), n(l, h); + }, I(f); + } + function s(f, m, o) { + return p() ? s = Reflect.construct : s = function(l, T, S) { + var x = [null]; + x.push.apply(x, T); + var b = Function.bind.apply(l, x), M = new b(); + return S && n(M, S.prototype), M; + }, s.apply(null, arguments); + } + function p() { + if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham) + return false; + if (typeof Proxy == "function") + return true; + try { + return Date.prototype.toString.call(Reflect.construct(Date, [], function() { + })), true; + } catch { + return false; + } + } + function e(f) { + return Function.toString.call(f).indexOf("[native code]") !== -1; + } + function n(f, m) { + return n = Object.setPrototypeOf || function(h, l) { + return h.__proto__ = l, h; + }, n(f, m); + } + function t(f) { + return t = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }, t(f); + } + var u = function(f) { + N(o, f); + var m = g(o); + function o(h, l, T, S, x, b, M) { + var U, V, q, G, C; + k(this, o), C = m.call(this, h); + var R = Array.isArray(l) ? l.length !== 0 ? l : void 0 : l ? [l] : void 0, Y = T; + if (!Y && R) { + var J; + Y = (J = R[0].loc) === null || J === void 0 ? void 0 : J.source; + } + var F = S; + !F && R && (F = R.reduce(function(w, P) { + return P.loc && w.push(P.loc.start), w; + }, [])), F && F.length === 0 && (F = void 0); + var B; + S && T ? B = S.map(function(w) { + return (0, r.getLocation)(T, w); + }) : R && (B = R.reduce(function(w, P) { + return P.loc && w.push((0, r.getLocation)(P.loc.source, P.loc.start)), w; + }, [])); + var j = M; + if (j == null && b != null) { + var Q = b.extensions; + (0, i.default)(Q) && (j = Q); + } + return Object.defineProperties(v(C), { name: { value: "GraphQLError" }, message: { value: h, enumerable: true, writable: true }, locations: { value: (U = B) !== null && U !== void 0 ? U : void 0, enumerable: B != null }, path: { value: x != null ? x : void 0, enumerable: x != null }, nodes: { value: R != null ? R : void 0 }, source: { value: (V = Y) !== null && V !== void 0 ? V : void 0 }, positions: { value: (q = F) !== null && q !== void 0 ? q : void 0 }, originalError: { value: b }, extensions: { value: (G = j) !== null && G !== void 0 ? G : void 0, enumerable: j != null } }), b != null && b.stack ? (Object.defineProperty(v(C), "stack", { value: b.stack, writable: true, configurable: true }), D(C)) : (Error.captureStackTrace ? Error.captureStackTrace(v(C), o) : Object.defineProperty(v(C), "stack", { value: Error().stack, writable: true, configurable: true }), C); + } + return A(o, [{ key: "toString", value: function() { + return y(this); + } }, { key: c.SYMBOL_TO_STRING_TAG, get: function() { + return "Object"; + } }]), o; + }(I(Error)); + a.GraphQLError = u; + function y(f) { + var m = f.message; + if (f.nodes) + for (var o = 0, h = f.nodes; o < h.length; o++) { + var l = h[o]; + l.loc && (m += ` + +` + (0, _.printLocation)(l.loc)); + } + else if (f.source && f.locations) + for (var T = 0, S = f.locations; T < S.length; T++) { + var x = S[T]; + m += ` + +` + (0, _.printSourceLocation)(f.source, x); + } + return m; + } + } }), Z = L({ "node_modules/graphql/error/syntaxError.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.syntaxError = i; + var d = W(); + function i(c, r, _) { + return new d.GraphQLError("Syntax Error: ".concat(_), void 0, c, [r]); + } + } }), he = L({ "node_modules/graphql/language/kinds.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.Kind = void 0; + var d = Object.freeze({ NAME: "Name", DOCUMENT: "Document", OPERATION_DEFINITION: "OperationDefinition", VARIABLE_DEFINITION: "VariableDefinition", SELECTION_SET: "SelectionSet", FIELD: "Field", ARGUMENT: "Argument", FRAGMENT_SPREAD: "FragmentSpread", INLINE_FRAGMENT: "InlineFragment", FRAGMENT_DEFINITION: "FragmentDefinition", VARIABLE: "Variable", INT: "IntValue", FLOAT: "FloatValue", STRING: "StringValue", BOOLEAN: "BooleanValue", NULL: "NullValue", ENUM: "EnumValue", LIST: "ListValue", OBJECT: "ObjectValue", OBJECT_FIELD: "ObjectField", DIRECTIVE: "Directive", NAMED_TYPE: "NamedType", LIST_TYPE: "ListType", NON_NULL_TYPE: "NonNullType", SCHEMA_DEFINITION: "SchemaDefinition", OPERATION_TYPE_DEFINITION: "OperationTypeDefinition", SCALAR_TYPE_DEFINITION: "ScalarTypeDefinition", OBJECT_TYPE_DEFINITION: "ObjectTypeDefinition", FIELD_DEFINITION: "FieldDefinition", INPUT_VALUE_DEFINITION: "InputValueDefinition", INTERFACE_TYPE_DEFINITION: "InterfaceTypeDefinition", UNION_TYPE_DEFINITION: "UnionTypeDefinition", ENUM_TYPE_DEFINITION: "EnumTypeDefinition", ENUM_VALUE_DEFINITION: "EnumValueDefinition", INPUT_OBJECT_TYPE_DEFINITION: "InputObjectTypeDefinition", DIRECTIVE_DEFINITION: "DirectiveDefinition", SCHEMA_EXTENSION: "SchemaExtension", SCALAR_TYPE_EXTENSION: "ScalarTypeExtension", OBJECT_TYPE_EXTENSION: "ObjectTypeExtension", INTERFACE_TYPE_EXTENSION: "InterfaceTypeExtension", UNION_TYPE_EXTENSION: "UnionTypeExtension", ENUM_TYPE_EXTENSION: "EnumTypeExtension", INPUT_OBJECT_TYPE_EXTENSION: "InputObjectTypeExtension" }); + a.Kind = d; + } }), ve = L({ "node_modules/graphql/jsutils/invariant.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.default = d; + function d(i, c) { + var r = Boolean(i); + if (!r) + throw new Error(c != null ? c : "Unexpected invariant triggered."); + } + } }), ee = L({ "node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.default = void 0; + var d = typeof Symbol == "function" && typeof Symbol.for == "function" ? Symbol.for("nodejs.util.inspect.custom") : void 0, i = d; + a.default = i; + } }), Te = L({ "node_modules/graphql/jsutils/defineInspect.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.default = r; + var d = c(ve()), i = c(ee()); + function c(_) { + return _ && _.__esModule ? _ : { default: _ }; + } + function r(_) { + var E = _.prototype.toJSON; + typeof E == "function" || (0, d.default)(0), _.prototype.inspect = E, i.default && (_.prototype[i.default] = E); + } + } }), te = L({ "node_modules/graphql/language/ast.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.isNode = _, a.Token = a.Location = void 0; + var d = i(Te()); + function i(E) { + return E && E.__esModule ? E : { default: E }; + } + var c = function() { + function E(O, A, N) { + this.start = O.start, this.end = A.end, this.startToken = O, this.endToken = A, this.source = N; + } + var k = E.prototype; + return k.toJSON = function() { + return { start: this.start, end: this.end }; + }, E; + }(); + a.Location = c, (0, d.default)(c); + var r = function() { + function E(O, A, N, g, D, v, I) { + this.kind = O, this.start = A, this.end = N, this.line = g, this.column = D, this.value = I, this.prev = v, this.next = null; + } + var k = E.prototype; + return k.toJSON = function() { + return { kind: this.kind, value: this.value, line: this.line, column: this.column }; + }, E; + }(); + a.Token = r, (0, d.default)(r); + function _(E) { + return E != null && typeof E.kind == "string"; + } + } }), ne = L({ "node_modules/graphql/language/tokenKind.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.TokenKind = void 0; + var d = Object.freeze({ SOF: "", EOF: "", BANG: "!", DOLLAR: "$", AMP: "&", PAREN_L: "(", PAREN_R: ")", SPREAD: "...", COLON: ":", EQUALS: "=", AT: "@", BRACKET_L: "[", BRACKET_R: "]", BRACE_L: "{", PIPE: "|", BRACE_R: "}", NAME: "Name", INT: "Int", FLOAT: "Float", STRING: "String", BLOCK_STRING: "BlockString", COMMENT: "Comment" }); + a.TokenKind = d; + } }), re = L({ "node_modules/graphql/jsutils/inspect.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.default = E; + var d = i(ee()); + function i(v) { + return v && v.__esModule ? v : { default: v }; + } + function c(v) { + return typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? c = function(s) { + return typeof s; + } : c = function(s) { + return s && typeof Symbol == "function" && s.constructor === Symbol && s !== Symbol.prototype ? "symbol" : typeof s; + }, c(v); + } + var r = 10, _ = 2; + function E(v) { + return k(v, []); + } + function k(v, I) { + switch (c(v)) { + case "string": + return JSON.stringify(v); + case "function": + return v.name ? "[function ".concat(v.name, "]") : "[function]"; + case "object": + return v === null ? "null" : O(v, I); + default: + return String(v); + } + } + function O(v, I) { + if (I.indexOf(v) !== -1) + return "[Circular]"; + var s = [].concat(I, [v]), p = g(v); + if (p !== void 0) { + var e = p.call(v); + if (e !== v) + return typeof e == "string" ? e : k(e, s); + } else if (Array.isArray(v)) + return N(v, s); + return A(v, s); + } + function A(v, I) { + var s = Object.keys(v); + if (s.length === 0) + return "{}"; + if (I.length > _) + return "[" + D(v) + "]"; + var p = s.map(function(e) { + var n = k(v[e], I); + return e + ": " + n; + }); + return "{ " + p.join(", ") + " }"; + } + function N(v, I) { + if (v.length === 0) + return "[]"; + if (I.length > _) + return "[Array]"; + for (var s = Math.min(r, v.length), p = v.length - s, e = [], n = 0; n < s; ++n) + e.push(k(v[n], I)); + return p === 1 ? e.push("... 1 more item") : p > 1 && e.push("... ".concat(p, " more items")), "[" + e.join(", ") + "]"; + } + function g(v) { + var I = v[String(d.default)]; + if (typeof I == "function") + return I; + if (typeof v.inspect == "function") + return v.inspect; + } + function D(v) { + var I = Object.prototype.toString.call(v).replace(/^\[object /, "").replace(/]$/, ""); + if (I === "Object" && typeof v.constructor == "function") { + var s = v.constructor.name; + if (typeof s == "string" && s !== "") + return s; + } + return I; + } + } }), _e = L({ "node_modules/graphql/jsutils/devAssert.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.default = d; + function d(i, c) { + var r = Boolean(i); + if (!r) + throw new Error(c); + } + } }), Ee = L({ "node_modules/graphql/jsutils/instanceOf.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.default = void 0; + var d = i(re()); + function i(r) { + return r && r.__esModule ? r : { default: r }; + } + var c = function(_, E) { + return _ instanceof E; + }; + a.default = c; + } }), me = L({ "node_modules/graphql/language/source.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.isSource = A, a.Source = void 0; + var d = z(), i = _(re()), c = _(_e()), r = _(Ee()); + function _(N) { + return N && N.__esModule ? N : { default: N }; + } + function E(N, g) { + for (var D = 0; D < g.length; D++) { + var v = g[D]; + v.enumerable = v.enumerable || false, v.configurable = true, "value" in v && (v.writable = true), Object.defineProperty(N, v.key, v); + } + } + function k(N, g, D) { + return g && E(N.prototype, g), D && E(N, D), N; + } + var O = function() { + function N(g) { + var D = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "GraphQL request", v = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : { line: 1, column: 1 }; + typeof g == "string" || (0, c.default)(0, "Body must be a string. Received: ".concat((0, i.default)(g), ".")), this.body = g, this.name = D, this.locationOffset = v, this.locationOffset.line > 0 || (0, c.default)(0, "line in locationOffset is 1-indexed and must be positive."), this.locationOffset.column > 0 || (0, c.default)(0, "column in locationOffset is 1-indexed and must be positive."); + } + return k(N, [{ key: d.SYMBOL_TO_STRING_TAG, get: function() { + return "Source"; + } }]), N; + }(); + a.Source = O; + function A(N) { + return (0, r.default)(N, O); + } + } }), ye = L({ "node_modules/graphql/language/directiveLocation.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.DirectiveLocation = void 0; + var d = Object.freeze({ QUERY: "QUERY", MUTATION: "MUTATION", SUBSCRIPTION: "SUBSCRIPTION", FIELD: "FIELD", FRAGMENT_DEFINITION: "FRAGMENT_DEFINITION", FRAGMENT_SPREAD: "FRAGMENT_SPREAD", INLINE_FRAGMENT: "INLINE_FRAGMENT", VARIABLE_DEFINITION: "VARIABLE_DEFINITION", SCHEMA: "SCHEMA", SCALAR: "SCALAR", OBJECT: "OBJECT", FIELD_DEFINITION: "FIELD_DEFINITION", ARGUMENT_DEFINITION: "ARGUMENT_DEFINITION", INTERFACE: "INTERFACE", UNION: "UNION", ENUM: "ENUM", ENUM_VALUE: "ENUM_VALUE", INPUT_OBJECT: "INPUT_OBJECT", INPUT_FIELD_DEFINITION: "INPUT_FIELD_DEFINITION" }); + a.DirectiveLocation = d; + } }), ke = L({ "node_modules/graphql/language/blockString.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.dedentBlockStringValue = d, a.getBlockStringIndentation = c, a.printBlockString = r; + function d(_) { + var E = _.split(/\r\n|[\n\r]/g), k = c(_); + if (k !== 0) + for (var O = 1; O < E.length; O++) + E[O] = E[O].slice(k); + for (var A = 0; A < E.length && i(E[A]); ) + ++A; + for (var N = E.length; N > A && i(E[N - 1]); ) + --N; + return E.slice(A, N).join(` +`); + } + function i(_) { + for (var E = 0; E < _.length; ++E) + if (_[E] !== " " && _[E] !== " ") + return false; + return true; + } + function c(_) { + for (var E, k = true, O = true, A = 0, N = null, g = 0; g < _.length; ++g) + switch (_.charCodeAt(g)) { + case 13: + _.charCodeAt(g + 1) === 10 && ++g; + case 10: + k = false, O = true, A = 0; + break; + case 9: + case 32: + ++A; + break; + default: + O && !k && (N === null || A < N) && (N = A), O = false; + } + return (E = N) !== null && E !== void 0 ? E : 0; + } + function r(_) { + var E = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "", k = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, O = _.indexOf(` +`) === -1, A = _[0] === " " || _[0] === " ", N = _[_.length - 1] === '"', g = _[_.length - 1] === "\\", D = !O || N || g || k, v = ""; + return D && !(O && A) && (v += ` +` + E), v += E ? _.replace(/\n/g, ` +` + E) : _, D && (v += ` +`), '"""' + v.replace(/"""/g, '\\"""') + '"""'; + } + } }), Ne = L({ "node_modules/graphql/language/lexer.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.isPunctuatorTokenKind = E, a.Lexer = void 0; + var d = Z(), i = te(), c = ne(), r = ke(), _ = function() { + function t(y) { + var f = new i.Token(c.TokenKind.SOF, 0, 0, 0, 0, null); + this.source = y, this.lastToken = f, this.token = f, this.line = 1, this.lineStart = 0; + } + var u = t.prototype; + return u.advance = function() { + this.lastToken = this.token; + var f = this.token = this.lookahead(); + return f; + }, u.lookahead = function() { + var f = this.token; + if (f.kind !== c.TokenKind.EOF) + do { + var m; + f = (m = f.next) !== null && m !== void 0 ? m : f.next = O(this, f); + } while (f.kind === c.TokenKind.COMMENT); + return f; + }, t; + }(); + a.Lexer = _; + function E(t) { + return t === c.TokenKind.BANG || t === c.TokenKind.DOLLAR || t === c.TokenKind.AMP || t === c.TokenKind.PAREN_L || t === c.TokenKind.PAREN_R || t === c.TokenKind.SPREAD || t === c.TokenKind.COLON || t === c.TokenKind.EQUALS || t === c.TokenKind.AT || t === c.TokenKind.BRACKET_L || t === c.TokenKind.BRACKET_R || t === c.TokenKind.BRACE_L || t === c.TokenKind.PIPE || t === c.TokenKind.BRACE_R; + } + function k(t) { + return isNaN(t) ? c.TokenKind.EOF : t < 127 ? JSON.stringify(String.fromCharCode(t)) : '"\\u'.concat(("00" + t.toString(16).toUpperCase()).slice(-4), '"'); + } + function O(t, u) { + for (var y = t.source, f = y.body, m = f.length, o = u.end; o < m; ) { + var h = f.charCodeAt(o), l = t.line, T = 1 + o - t.lineStart; + switch (h) { + case 65279: + case 9: + case 32: + case 44: + ++o; + continue; + case 10: + ++o, ++t.line, t.lineStart = o; + continue; + case 13: + f.charCodeAt(o + 1) === 10 ? o += 2 : ++o, ++t.line, t.lineStart = o; + continue; + case 33: + return new i.Token(c.TokenKind.BANG, o, o + 1, l, T, u); + case 35: + return N(y, o, l, T, u); + case 36: + return new i.Token(c.TokenKind.DOLLAR, o, o + 1, l, T, u); + case 38: + return new i.Token(c.TokenKind.AMP, o, o + 1, l, T, u); + case 40: + return new i.Token(c.TokenKind.PAREN_L, o, o + 1, l, T, u); + case 41: + return new i.Token(c.TokenKind.PAREN_R, o, o + 1, l, T, u); + case 46: + if (f.charCodeAt(o + 1) === 46 && f.charCodeAt(o + 2) === 46) + return new i.Token(c.TokenKind.SPREAD, o, o + 3, l, T, u); + break; + case 58: + return new i.Token(c.TokenKind.COLON, o, o + 1, l, T, u); + case 61: + return new i.Token(c.TokenKind.EQUALS, o, o + 1, l, T, u); + case 64: + return new i.Token(c.TokenKind.AT, o, o + 1, l, T, u); + case 91: + return new i.Token(c.TokenKind.BRACKET_L, o, o + 1, l, T, u); + case 93: + return new i.Token(c.TokenKind.BRACKET_R, o, o + 1, l, T, u); + case 123: + return new i.Token(c.TokenKind.BRACE_L, o, o + 1, l, T, u); + case 124: + return new i.Token(c.TokenKind.PIPE, o, o + 1, l, T, u); + case 125: + return new i.Token(c.TokenKind.BRACE_R, o, o + 1, l, T, u); + case 34: + return f.charCodeAt(o + 1) === 34 && f.charCodeAt(o + 2) === 34 ? I(y, o, l, T, u, t) : v(y, o, l, T, u); + case 45: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return g(y, o, h, l, T, u); + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 95: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + return e(y, o, l, T, u); + } + throw (0, d.syntaxError)(y, o, A(h)); + } + var S = t.line, x = 1 + o - t.lineStart; + return new i.Token(c.TokenKind.EOF, m, m, S, x, u); + } + function A(t) { + return t < 32 && t !== 9 && t !== 10 && t !== 13 ? "Cannot contain the invalid character ".concat(k(t), ".") : t === 39 ? `Unexpected single quote character ('), did you mean to use a double quote (")?` : "Cannot parse the unexpected character ".concat(k(t), "."); + } + function N(t, u, y, f, m) { + var o = t.body, h, l = u; + do + h = o.charCodeAt(++l); + while (!isNaN(h) && (h > 31 || h === 9)); + return new i.Token(c.TokenKind.COMMENT, u, l, y, f, m, o.slice(u + 1, l)); + } + function g(t, u, y, f, m, o) { + var h = t.body, l = y, T = u, S = false; + if (l === 45 && (l = h.charCodeAt(++T)), l === 48) { + if (l = h.charCodeAt(++T), l >= 48 && l <= 57) + throw (0, d.syntaxError)(t, T, "Invalid number, unexpected digit after 0: ".concat(k(l), ".")); + } else + T = D(t, T, l), l = h.charCodeAt(T); + if (l === 46 && (S = true, l = h.charCodeAt(++T), T = D(t, T, l), l = h.charCodeAt(T)), (l === 69 || l === 101) && (S = true, l = h.charCodeAt(++T), (l === 43 || l === 45) && (l = h.charCodeAt(++T)), T = D(t, T, l), l = h.charCodeAt(T)), l === 46 || n(l)) + throw (0, d.syntaxError)(t, T, "Invalid number, expected digit but got: ".concat(k(l), ".")); + return new i.Token(S ? c.TokenKind.FLOAT : c.TokenKind.INT, u, T, f, m, o, h.slice(u, T)); + } + function D(t, u, y) { + var f = t.body, m = u, o = y; + if (o >= 48 && o <= 57) { + do + o = f.charCodeAt(++m); + while (o >= 48 && o <= 57); + return m; + } + throw (0, d.syntaxError)(t, m, "Invalid number, expected digit but got: ".concat(k(o), ".")); + } + function v(t, u, y, f, m) { + for (var o = t.body, h = u + 1, l = h, T = 0, S = ""; h < o.length && !isNaN(T = o.charCodeAt(h)) && T !== 10 && T !== 13; ) { + if (T === 34) + return S += o.slice(l, h), new i.Token(c.TokenKind.STRING, u, h + 1, y, f, m, S); + if (T < 32 && T !== 9) + throw (0, d.syntaxError)(t, h, "Invalid character within String: ".concat(k(T), ".")); + if (++h, T === 92) { + switch (S += o.slice(l, h - 1), T = o.charCodeAt(h), T) { + case 34: + S += '"'; + break; + case 47: + S += "/"; + break; + case 92: + S += "\\"; + break; + case 98: + S += "\b"; + break; + case 102: + S += "\f"; + break; + case 110: + S += ` +`; + break; + case 114: + S += "\r"; + break; + case 116: + S += " "; + break; + case 117: { + var x = s(o.charCodeAt(h + 1), o.charCodeAt(h + 2), o.charCodeAt(h + 3), o.charCodeAt(h + 4)); + if (x < 0) { + var b = o.slice(h + 1, h + 5); + throw (0, d.syntaxError)(t, h, "Invalid character escape sequence: \\u".concat(b, ".")); + } + S += String.fromCharCode(x), h += 4; + break; + } + default: + throw (0, d.syntaxError)(t, h, "Invalid character escape sequence: \\".concat(String.fromCharCode(T), ".")); + } + ++h, l = h; + } + } + throw (0, d.syntaxError)(t, h, "Unterminated string."); + } + function I(t, u, y, f, m, o) { + for (var h = t.body, l = u + 3, T = l, S = 0, x = ""; l < h.length && !isNaN(S = h.charCodeAt(l)); ) { + if (S === 34 && h.charCodeAt(l + 1) === 34 && h.charCodeAt(l + 2) === 34) + return x += h.slice(T, l), new i.Token(c.TokenKind.BLOCK_STRING, u, l + 3, y, f, m, (0, r.dedentBlockStringValue)(x)); + if (S < 32 && S !== 9 && S !== 10 && S !== 13) + throw (0, d.syntaxError)(t, l, "Invalid character within String: ".concat(k(S), ".")); + S === 10 ? (++l, ++o.line, o.lineStart = l) : S === 13 ? (h.charCodeAt(l + 1) === 10 ? l += 2 : ++l, ++o.line, o.lineStart = l) : S === 92 && h.charCodeAt(l + 1) === 34 && h.charCodeAt(l + 2) === 34 && h.charCodeAt(l + 3) === 34 ? (x += h.slice(T, l) + '"""', l += 4, T = l) : ++l; + } + throw (0, d.syntaxError)(t, l, "Unterminated string."); + } + function s(t, u, y, f) { + return p(t) << 12 | p(u) << 8 | p(y) << 4 | p(f); + } + function p(t) { + return t >= 48 && t <= 57 ? t - 48 : t >= 65 && t <= 70 ? t - 55 : t >= 97 && t <= 102 ? t - 87 : -1; + } + function e(t, u, y, f, m) { + for (var o = t.body, h = o.length, l = u + 1, T = 0; l !== h && !isNaN(T = o.charCodeAt(l)) && (T === 95 || T >= 48 && T <= 57 || T >= 65 && T <= 90 || T >= 97 && T <= 122); ) + ++l; + return new i.Token(c.TokenKind.NAME, u, l, y, f, m, o.slice(u, l)); + } + function n(t) { + return t === 95 || t >= 65 && t <= 90 || t >= 97 && t <= 122; + } + } }), Oe = L({ "node_modules/graphql/language/parser.js"(a) { + "use strict"; + K(), Object.defineProperty(a, "__esModule", { value: true }), a.parse = O, a.parseValue = A, a.parseType = N, a.Parser = void 0; + var d = Z(), i = he(), c = te(), r = ne(), _ = me(), E = ye(), k = Ne(); + function O(I, s) { + var p = new g(I, s); + return p.parseDocument(); + } + function A(I, s) { + var p = new g(I, s); + p.expectToken(r.TokenKind.SOF); + var e = p.parseValueLiteral(false); + return p.expectToken(r.TokenKind.EOF), e; + } + function N(I, s) { + var p = new g(I, s); + p.expectToken(r.TokenKind.SOF); + var e = p.parseTypeReference(); + return p.expectToken(r.TokenKind.EOF), e; + } + var g = function() { + function I(p, e) { + var n = (0, _.isSource)(p) ? p : new _.Source(p); + this._lexer = new k.Lexer(n), this._options = e; + } + var s = I.prototype; + return s.parseName = function() { + var e = this.expectToken(r.TokenKind.NAME); + return { kind: i.Kind.NAME, value: e.value, loc: this.loc(e) }; + }, s.parseDocument = function() { + var e = this._lexer.token; + return { kind: i.Kind.DOCUMENT, definitions: this.many(r.TokenKind.SOF, this.parseDefinition, r.TokenKind.EOF), loc: this.loc(e) }; + }, s.parseDefinition = function() { + if (this.peek(r.TokenKind.NAME)) + switch (this._lexer.token.value) { + case "query": + case "mutation": + case "subscription": + return this.parseOperationDefinition(); + case "fragment": + return this.parseFragmentDefinition(); + case "schema": + case "scalar": + case "type": + case "interface": + case "union": + case "enum": + case "input": + case "directive": + return this.parseTypeSystemDefinition(); + case "extend": + return this.parseTypeSystemExtension(); + } + else { + if (this.peek(r.TokenKind.BRACE_L)) + return this.parseOperationDefinition(); + if (this.peekDescription()) + return this.parseTypeSystemDefinition(); + } + throw this.unexpected(); + }, s.parseOperationDefinition = function() { + var e = this._lexer.token; + if (this.peek(r.TokenKind.BRACE_L)) + return { kind: i.Kind.OPERATION_DEFINITION, operation: "query", name: void 0, variableDefinitions: [], directives: [], selectionSet: this.parseSelectionSet(), loc: this.loc(e) }; + var n = this.parseOperationType(), t; + return this.peek(r.TokenKind.NAME) && (t = this.parseName()), { kind: i.Kind.OPERATION_DEFINITION, operation: n, name: t, variableDefinitions: this.parseVariableDefinitions(), directives: this.parseDirectives(false), selectionSet: this.parseSelectionSet(), loc: this.loc(e) }; + }, s.parseOperationType = function() { + var e = this.expectToken(r.TokenKind.NAME); + switch (e.value) { + case "query": + return "query"; + case "mutation": + return "mutation"; + case "subscription": + return "subscription"; + } + throw this.unexpected(e); + }, s.parseVariableDefinitions = function() { + return this.optionalMany(r.TokenKind.PAREN_L, this.parseVariableDefinition, r.TokenKind.PAREN_R); + }, s.parseVariableDefinition = function() { + var e = this._lexer.token; + return { kind: i.Kind.VARIABLE_DEFINITION, variable: this.parseVariable(), type: (this.expectToken(r.TokenKind.COLON), this.parseTypeReference()), defaultValue: this.expectOptionalToken(r.TokenKind.EQUALS) ? this.parseValueLiteral(true) : void 0, directives: this.parseDirectives(true), loc: this.loc(e) }; + }, s.parseVariable = function() { + var e = this._lexer.token; + return this.expectToken(r.TokenKind.DOLLAR), { kind: i.Kind.VARIABLE, name: this.parseName(), loc: this.loc(e) }; + }, s.parseSelectionSet = function() { + var e = this._lexer.token; + return { kind: i.Kind.SELECTION_SET, selections: this.many(r.TokenKind.BRACE_L, this.parseSelection, r.TokenKind.BRACE_R), loc: this.loc(e) }; + }, s.parseSelection = function() { + return this.peek(r.TokenKind.SPREAD) ? this.parseFragment() : this.parseField(); + }, s.parseField = function() { + var e = this._lexer.token, n = this.parseName(), t, u; + return this.expectOptionalToken(r.TokenKind.COLON) ? (t = n, u = this.parseName()) : u = n, { kind: i.Kind.FIELD, alias: t, name: u, arguments: this.parseArguments(false), directives: this.parseDirectives(false), selectionSet: this.peek(r.TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0, loc: this.loc(e) }; + }, s.parseArguments = function(e) { + var n = e ? this.parseConstArgument : this.parseArgument; + return this.optionalMany(r.TokenKind.PAREN_L, n, r.TokenKind.PAREN_R); + }, s.parseArgument = function() { + var e = this._lexer.token, n = this.parseName(); + return this.expectToken(r.TokenKind.COLON), { kind: i.Kind.ARGUMENT, name: n, value: this.parseValueLiteral(false), loc: this.loc(e) }; + }, s.parseConstArgument = function() { + var e = this._lexer.token; + return { kind: i.Kind.ARGUMENT, name: this.parseName(), value: (this.expectToken(r.TokenKind.COLON), this.parseValueLiteral(true)), loc: this.loc(e) }; + }, s.parseFragment = function() { + var e = this._lexer.token; + this.expectToken(r.TokenKind.SPREAD); + var n = this.expectOptionalKeyword("on"); + return !n && this.peek(r.TokenKind.NAME) ? { kind: i.Kind.FRAGMENT_SPREAD, name: this.parseFragmentName(), directives: this.parseDirectives(false), loc: this.loc(e) } : { kind: i.Kind.INLINE_FRAGMENT, typeCondition: n ? this.parseNamedType() : void 0, directives: this.parseDirectives(false), selectionSet: this.parseSelectionSet(), loc: this.loc(e) }; + }, s.parseFragmentDefinition = function() { + var e, n = this._lexer.token; + return this.expectKeyword("fragment"), ((e = this._options) === null || e === void 0 ? void 0 : e.experimentalFragmentVariables) === true ? { kind: i.Kind.FRAGMENT_DEFINITION, name: this.parseFragmentName(), variableDefinitions: this.parseVariableDefinitions(), typeCondition: (this.expectKeyword("on"), this.parseNamedType()), directives: this.parseDirectives(false), selectionSet: this.parseSelectionSet(), loc: this.loc(n) } : { kind: i.Kind.FRAGMENT_DEFINITION, name: this.parseFragmentName(), typeCondition: (this.expectKeyword("on"), this.parseNamedType()), directives: this.parseDirectives(false), selectionSet: this.parseSelectionSet(), loc: this.loc(n) }; + }, s.parseFragmentName = function() { + if (this._lexer.token.value === "on") + throw this.unexpected(); + return this.parseName(); + }, s.parseValueLiteral = function(e) { + var n = this._lexer.token; + switch (n.kind) { + case r.TokenKind.BRACKET_L: + return this.parseList(e); + case r.TokenKind.BRACE_L: + return this.parseObject(e); + case r.TokenKind.INT: + return this._lexer.advance(), { kind: i.Kind.INT, value: n.value, loc: this.loc(n) }; + case r.TokenKind.FLOAT: + return this._lexer.advance(), { kind: i.Kind.FLOAT, value: n.value, loc: this.loc(n) }; + case r.TokenKind.STRING: + case r.TokenKind.BLOCK_STRING: + return this.parseStringLiteral(); + case r.TokenKind.NAME: + switch (this._lexer.advance(), n.value) { + case "true": + return { kind: i.Kind.BOOLEAN, value: true, loc: this.loc(n) }; + case "false": + return { kind: i.Kind.BOOLEAN, value: false, loc: this.loc(n) }; + case "null": + return { kind: i.Kind.NULL, loc: this.loc(n) }; + default: + return { kind: i.Kind.ENUM, value: n.value, loc: this.loc(n) }; + } + case r.TokenKind.DOLLAR: + if (!e) + return this.parseVariable(); + break; + } + throw this.unexpected(); + }, s.parseStringLiteral = function() { + var e = this._lexer.token; + return this._lexer.advance(), { kind: i.Kind.STRING, value: e.value, block: e.kind === r.TokenKind.BLOCK_STRING, loc: this.loc(e) }; + }, s.parseList = function(e) { + var n = this, t = this._lexer.token, u = function() { + return n.parseValueLiteral(e); + }; + return { kind: i.Kind.LIST, values: this.any(r.TokenKind.BRACKET_L, u, r.TokenKind.BRACKET_R), loc: this.loc(t) }; + }, s.parseObject = function(e) { + var n = this, t = this._lexer.token, u = function() { + return n.parseObjectField(e); + }; + return { kind: i.Kind.OBJECT, fields: this.any(r.TokenKind.BRACE_L, u, r.TokenKind.BRACE_R), loc: this.loc(t) }; + }, s.parseObjectField = function(e) { + var n = this._lexer.token, t = this.parseName(); + return this.expectToken(r.TokenKind.COLON), { kind: i.Kind.OBJECT_FIELD, name: t, value: this.parseValueLiteral(e), loc: this.loc(n) }; + }, s.parseDirectives = function(e) { + for (var n = []; this.peek(r.TokenKind.AT); ) + n.push(this.parseDirective(e)); + return n; + }, s.parseDirective = function(e) { + var n = this._lexer.token; + return this.expectToken(r.TokenKind.AT), { kind: i.Kind.DIRECTIVE, name: this.parseName(), arguments: this.parseArguments(e), loc: this.loc(n) }; + }, s.parseTypeReference = function() { + var e = this._lexer.token, n; + return this.expectOptionalToken(r.TokenKind.BRACKET_L) ? (n = this.parseTypeReference(), this.expectToken(r.TokenKind.BRACKET_R), n = { kind: i.Kind.LIST_TYPE, type: n, loc: this.loc(e) }) : n = this.parseNamedType(), this.expectOptionalToken(r.TokenKind.BANG) ? { kind: i.Kind.NON_NULL_TYPE, type: n, loc: this.loc(e) } : n; + }, s.parseNamedType = function() { + var e = this._lexer.token; + return { kind: i.Kind.NAMED_TYPE, name: this.parseName(), loc: this.loc(e) }; + }, s.parseTypeSystemDefinition = function() { + var e = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token; + if (e.kind === r.TokenKind.NAME) + switch (e.value) { + case "schema": + return this.parseSchemaDefinition(); + case "scalar": + return this.parseScalarTypeDefinition(); + case "type": + return this.parseObjectTypeDefinition(); + case "interface": + return this.parseInterfaceTypeDefinition(); + case "union": + return this.parseUnionTypeDefinition(); + case "enum": + return this.parseEnumTypeDefinition(); + case "input": + return this.parseInputObjectTypeDefinition(); + case "directive": + return this.parseDirectiveDefinition(); + } + throw this.unexpected(e); + }, s.peekDescription = function() { + return this.peek(r.TokenKind.STRING) || this.peek(r.TokenKind.BLOCK_STRING); + }, s.parseDescription = function() { + if (this.peekDescription()) + return this.parseStringLiteral(); + }, s.parseSchemaDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("schema"); + var t = this.parseDirectives(true), u = this.many(r.TokenKind.BRACE_L, this.parseOperationTypeDefinition, r.TokenKind.BRACE_R); + return { kind: i.Kind.SCHEMA_DEFINITION, description: n, directives: t, operationTypes: u, loc: this.loc(e) }; + }, s.parseOperationTypeDefinition = function() { + var e = this._lexer.token, n = this.parseOperationType(); + this.expectToken(r.TokenKind.COLON); + var t = this.parseNamedType(); + return { kind: i.Kind.OPERATION_TYPE_DEFINITION, operation: n, type: t, loc: this.loc(e) }; + }, s.parseScalarTypeDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("scalar"); + var t = this.parseName(), u = this.parseDirectives(true); + return { kind: i.Kind.SCALAR_TYPE_DEFINITION, description: n, name: t, directives: u, loc: this.loc(e) }; + }, s.parseObjectTypeDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("type"); + var t = this.parseName(), u = this.parseImplementsInterfaces(), y = this.parseDirectives(true), f = this.parseFieldsDefinition(); + return { kind: i.Kind.OBJECT_TYPE_DEFINITION, description: n, name: t, interfaces: u, directives: y, fields: f, loc: this.loc(e) }; + }, s.parseImplementsInterfaces = function() { + var e; + if (!this.expectOptionalKeyword("implements")) + return []; + if (((e = this._options) === null || e === void 0 ? void 0 : e.allowLegacySDLImplementsInterfaces) === true) { + var n = []; + this.expectOptionalToken(r.TokenKind.AMP); + do + n.push(this.parseNamedType()); + while (this.expectOptionalToken(r.TokenKind.AMP) || this.peek(r.TokenKind.NAME)); + return n; + } + return this.delimitedMany(r.TokenKind.AMP, this.parseNamedType); + }, s.parseFieldsDefinition = function() { + var e; + return ((e = this._options) === null || e === void 0 ? void 0 : e.allowLegacySDLEmptyFields) === true && this.peek(r.TokenKind.BRACE_L) && this._lexer.lookahead().kind === r.TokenKind.BRACE_R ? (this._lexer.advance(), this._lexer.advance(), []) : this.optionalMany(r.TokenKind.BRACE_L, this.parseFieldDefinition, r.TokenKind.BRACE_R); + }, s.parseFieldDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(), t = this.parseName(), u = this.parseArgumentDefs(); + this.expectToken(r.TokenKind.COLON); + var y = this.parseTypeReference(), f = this.parseDirectives(true); + return { kind: i.Kind.FIELD_DEFINITION, description: n, name: t, arguments: u, type: y, directives: f, loc: this.loc(e) }; + }, s.parseArgumentDefs = function() { + return this.optionalMany(r.TokenKind.PAREN_L, this.parseInputValueDef, r.TokenKind.PAREN_R); + }, s.parseInputValueDef = function() { + var e = this._lexer.token, n = this.parseDescription(), t = this.parseName(); + this.expectToken(r.TokenKind.COLON); + var u = this.parseTypeReference(), y; + this.expectOptionalToken(r.TokenKind.EQUALS) && (y = this.parseValueLiteral(true)); + var f = this.parseDirectives(true); + return { kind: i.Kind.INPUT_VALUE_DEFINITION, description: n, name: t, type: u, defaultValue: y, directives: f, loc: this.loc(e) }; + }, s.parseInterfaceTypeDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("interface"); + var t = this.parseName(), u = this.parseImplementsInterfaces(), y = this.parseDirectives(true), f = this.parseFieldsDefinition(); + return { kind: i.Kind.INTERFACE_TYPE_DEFINITION, description: n, name: t, interfaces: u, directives: y, fields: f, loc: this.loc(e) }; + }, s.parseUnionTypeDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("union"); + var t = this.parseName(), u = this.parseDirectives(true), y = this.parseUnionMemberTypes(); + return { kind: i.Kind.UNION_TYPE_DEFINITION, description: n, name: t, directives: u, types: y, loc: this.loc(e) }; + }, s.parseUnionMemberTypes = function() { + return this.expectOptionalToken(r.TokenKind.EQUALS) ? this.delimitedMany(r.TokenKind.PIPE, this.parseNamedType) : []; + }, s.parseEnumTypeDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("enum"); + var t = this.parseName(), u = this.parseDirectives(true), y = this.parseEnumValuesDefinition(); + return { kind: i.Kind.ENUM_TYPE_DEFINITION, description: n, name: t, directives: u, values: y, loc: this.loc(e) }; + }, s.parseEnumValuesDefinition = function() { + return this.optionalMany(r.TokenKind.BRACE_L, this.parseEnumValueDefinition, r.TokenKind.BRACE_R); + }, s.parseEnumValueDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(), t = this.parseName(), u = this.parseDirectives(true); + return { kind: i.Kind.ENUM_VALUE_DEFINITION, description: n, name: t, directives: u, loc: this.loc(e) }; + }, s.parseInputObjectTypeDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("input"); + var t = this.parseName(), u = this.parseDirectives(true), y = this.parseInputFieldsDefinition(); + return { kind: i.Kind.INPUT_OBJECT_TYPE_DEFINITION, description: n, name: t, directives: u, fields: y, loc: this.loc(e) }; + }, s.parseInputFieldsDefinition = function() { + return this.optionalMany(r.TokenKind.BRACE_L, this.parseInputValueDef, r.TokenKind.BRACE_R); + }, s.parseTypeSystemExtension = function() { + var e = this._lexer.lookahead(); + if (e.kind === r.TokenKind.NAME) + switch (e.value) { + case "schema": + return this.parseSchemaExtension(); + case "scalar": + return this.parseScalarTypeExtension(); + case "type": + return this.parseObjectTypeExtension(); + case "interface": + return this.parseInterfaceTypeExtension(); + case "union": + return this.parseUnionTypeExtension(); + case "enum": + return this.parseEnumTypeExtension(); + case "input": + return this.parseInputObjectTypeExtension(); + } + throw this.unexpected(e); + }, s.parseSchemaExtension = function() { + var e = this._lexer.token; + this.expectKeyword("extend"), this.expectKeyword("schema"); + var n = this.parseDirectives(true), t = this.optionalMany(r.TokenKind.BRACE_L, this.parseOperationTypeDefinition, r.TokenKind.BRACE_R); + if (n.length === 0 && t.length === 0) + throw this.unexpected(); + return { kind: i.Kind.SCHEMA_EXTENSION, directives: n, operationTypes: t, loc: this.loc(e) }; + }, s.parseScalarTypeExtension = function() { + var e = this._lexer.token; + this.expectKeyword("extend"), this.expectKeyword("scalar"); + var n = this.parseName(), t = this.parseDirectives(true); + if (t.length === 0) + throw this.unexpected(); + return { kind: i.Kind.SCALAR_TYPE_EXTENSION, name: n, directives: t, loc: this.loc(e) }; + }, s.parseObjectTypeExtension = function() { + var e = this._lexer.token; + this.expectKeyword("extend"), this.expectKeyword("type"); + var n = this.parseName(), t = this.parseImplementsInterfaces(), u = this.parseDirectives(true), y = this.parseFieldsDefinition(); + if (t.length === 0 && u.length === 0 && y.length === 0) + throw this.unexpected(); + return { kind: i.Kind.OBJECT_TYPE_EXTENSION, name: n, interfaces: t, directives: u, fields: y, loc: this.loc(e) }; + }, s.parseInterfaceTypeExtension = function() { + var e = this._lexer.token; + this.expectKeyword("extend"), this.expectKeyword("interface"); + var n = this.parseName(), t = this.parseImplementsInterfaces(), u = this.parseDirectives(true), y = this.parseFieldsDefinition(); + if (t.length === 0 && u.length === 0 && y.length === 0) + throw this.unexpected(); + return { kind: i.Kind.INTERFACE_TYPE_EXTENSION, name: n, interfaces: t, directives: u, fields: y, loc: this.loc(e) }; + }, s.parseUnionTypeExtension = function() { + var e = this._lexer.token; + this.expectKeyword("extend"), this.expectKeyword("union"); + var n = this.parseName(), t = this.parseDirectives(true), u = this.parseUnionMemberTypes(); + if (t.length === 0 && u.length === 0) + throw this.unexpected(); + return { kind: i.Kind.UNION_TYPE_EXTENSION, name: n, directives: t, types: u, loc: this.loc(e) }; + }, s.parseEnumTypeExtension = function() { + var e = this._lexer.token; + this.expectKeyword("extend"), this.expectKeyword("enum"); + var n = this.parseName(), t = this.parseDirectives(true), u = this.parseEnumValuesDefinition(); + if (t.length === 0 && u.length === 0) + throw this.unexpected(); + return { kind: i.Kind.ENUM_TYPE_EXTENSION, name: n, directives: t, values: u, loc: this.loc(e) }; + }, s.parseInputObjectTypeExtension = function() { + var e = this._lexer.token; + this.expectKeyword("extend"), this.expectKeyword("input"); + var n = this.parseName(), t = this.parseDirectives(true), u = this.parseInputFieldsDefinition(); + if (t.length === 0 && u.length === 0) + throw this.unexpected(); + return { kind: i.Kind.INPUT_OBJECT_TYPE_EXTENSION, name: n, directives: t, fields: u, loc: this.loc(e) }; + }, s.parseDirectiveDefinition = function() { + var e = this._lexer.token, n = this.parseDescription(); + this.expectKeyword("directive"), this.expectToken(r.TokenKind.AT); + var t = this.parseName(), u = this.parseArgumentDefs(), y = this.expectOptionalKeyword("repeatable"); + this.expectKeyword("on"); + var f = this.parseDirectiveLocations(); + return { kind: i.Kind.DIRECTIVE_DEFINITION, description: n, name: t, arguments: u, repeatable: y, locations: f, loc: this.loc(e) }; + }, s.parseDirectiveLocations = function() { + return this.delimitedMany(r.TokenKind.PIPE, this.parseDirectiveLocation); + }, s.parseDirectiveLocation = function() { + var e = this._lexer.token, n = this.parseName(); + if (E.DirectiveLocation[n.value] !== void 0) + return n; + throw this.unexpected(e); + }, s.loc = function(e) { + var n; + if (((n = this._options) === null || n === void 0 ? void 0 : n.noLocation) !== true) + return new c.Location(e, this._lexer.lastToken, this._lexer.source); + }, s.peek = function(e) { + return this._lexer.token.kind === e; + }, s.expectToken = function(e) { + var n = this._lexer.token; + if (n.kind === e) + return this._lexer.advance(), n; + throw (0, d.syntaxError)(this._lexer.source, n.start, "Expected ".concat(v(e), ", found ").concat(D(n), ".")); + }, s.expectOptionalToken = function(e) { + var n = this._lexer.token; + if (n.kind === e) + return this._lexer.advance(), n; + }, s.expectKeyword = function(e) { + var n = this._lexer.token; + if (n.kind === r.TokenKind.NAME && n.value === e) + this._lexer.advance(); + else + throw (0, d.syntaxError)(this._lexer.source, n.start, 'Expected "'.concat(e, '", found ').concat(D(n), ".")); + }, s.expectOptionalKeyword = function(e) { + var n = this._lexer.token; + return n.kind === r.TokenKind.NAME && n.value === e ? (this._lexer.advance(), true) : false; + }, s.unexpected = function(e) { + var n = e != null ? e : this._lexer.token; + return (0, d.syntaxError)(this._lexer.source, n.start, "Unexpected ".concat(D(n), ".")); + }, s.any = function(e, n, t) { + this.expectToken(e); + for (var u = []; !this.expectOptionalToken(t); ) + u.push(n.call(this)); + return u; + }, s.optionalMany = function(e, n, t) { + if (this.expectOptionalToken(e)) { + var u = []; + do + u.push(n.call(this)); + while (!this.expectOptionalToken(t)); + return u; + } + return []; + }, s.many = function(e, n, t) { + this.expectToken(e); + var u = []; + do + u.push(n.call(this)); + while (!this.expectOptionalToken(t)); + return u; + }, s.delimitedMany = function(e, n) { + this.expectOptionalToken(e); + var t = []; + do + t.push(n.call(this)); + while (this.expectOptionalToken(e)); + return t; + }, I; + }(); + a.Parser = g; + function D(I) { + var s = I.value; + return v(I.kind) + (s != null ? ' "'.concat(s, '"') : ""); + } + function v(I) { + return (0, k.isPunctuatorTokenKind)(I) ? '"'.concat(I, '"') : I; + } + } }); + K(); + var Ie = ce(), ge = ue(), { hasPragma: Se } = le(), { locStart: Ae, locEnd: De } = pe(); + function Ke(a) { + let d = [], { startToken: i } = a.loc, { next: c } = i; + for (; c.kind !== ""; ) + c.kind === "Comment" && (Object.assign(c, { column: c.column - 1 }), d.push(c)), c = c.next; + return d; + } + function ie(a) { + if (a && typeof a == "object") { + delete a.startToken, delete a.endToken, delete a.prev, delete a.next; + for (let d in a) + ie(a[d]); + } + return a; + } + var X = { allowLegacySDLImplementsInterfaces: false, experimentalFragmentVariables: true }; + function Le(a) { + let { GraphQLError: d } = W(); + if (a instanceof d) { + let { message: i, locations: [c] } = a; + return Ie(i, { start: c }); + } + return a; + } + function xe(a) { + let { parse: d } = Oe(), { result: i, error: c } = ge(() => d(a, Object.assign({}, X)), () => d(a, Object.assign(Object.assign({}, X), {}, { allowLegacySDLImplementsInterfaces: true }))); + if (!i) + throw Le(c); + return i.comments = Ke(i), ie(i), i; + } + ae.exports = { parsers: { graphql: { parse: xe, astFormat: "graphql", hasPragma: Se, locStart: Ae, locEnd: De } } }; + }); + return be(); + }); + } +}); + +// node_modules/prettier/parser-markdown.js +var require_parser_markdown = __commonJS({ + "node_modules/prettier/parser-markdown.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.markdown = e(); + } + })(function() { + "use strict"; + var H = (e, r) => () => (r || e((r = { exports: {} }).exports, r), r.exports); + var ue = H((uf, Au) => { + var ur = function(e) { + return e && e.Math == Math && e; + }; + Au.exports = ur(typeof globalThis == "object" && globalThis) || ur(typeof window == "object" && window) || ur(typeof self == "object" && self) || ur(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var Ae = H((tf, xu) => { + xu.exports = function(e) { + try { + return !!e(); + } catch { + return true; + } + }; + }); + var _e = H((nf, bu) => { + var ca = Ae(); + bu.exports = !ca(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var tr = H((af, yu) => { + var la = Ae(); + yu.exports = !la(function() { + var e = function() { + }.bind(); + return typeof e != "function" || e.hasOwnProperty("prototype"); + }); + }); + var Oe = H((of, Bu) => { + var Da = tr(), nr = Function.prototype.call; + Bu.exports = Da ? nr.bind(nr) : function() { + return nr.apply(nr, arguments); + }; + }); + var _u = H((qu) => { + "use strict"; + var wu = {}.propertyIsEnumerable, ku = Object.getOwnPropertyDescriptor, fa = ku && !wu.call({ 1: 2 }, 1); + qu.f = fa ? function(r) { + var u = ku(this, r); + return !!u && u.enumerable; + } : wu; + }); + var ir = H((cf, Ou) => { + Ou.exports = function(e, r) { + return { enumerable: !(e & 1), configurable: !(e & 2), writable: !(e & 4), value: r }; + }; + }); + var ve = H((lf, Tu) => { + var Iu = tr(), Su = Function.prototype, pa = Su.bind, Br = Su.call, da = Iu && pa.bind(Br, Br); + Tu.exports = Iu ? function(e) { + return e && da(e); + } : function(e) { + return e && function() { + return Br.apply(e, arguments); + }; + }; + }); + var ar = H((Df, Lu) => { + var Nu = ve(), ha = Nu({}.toString), va = Nu("".slice); + Lu.exports = function(e) { + return va(ha(e), 8, -1); + }; + }); + var ju = H((ff, Ru) => { + var ma = ue(), Ea = ve(), Ca = Ae(), ga = ar(), wr = ma.Object, Fa = Ea("".split); + Ru.exports = Ca(function() { + return !wr("z").propertyIsEnumerable(0); + }) ? function(e) { + return ga(e) == "String" ? Fa(e, "") : wr(e); + } : wr; + }); + var kr = H((pf, Pu) => { + var Aa = ue(), xa = Aa.TypeError; + Pu.exports = function(e) { + if (e == null) + throw xa("Can't call method on " + e); + return e; + }; + }); + var or = H((df, Mu) => { + var ba = ju(), ya = kr(); + Mu.exports = function(e) { + return ba(ya(e)); + }; + }); + var me = H((hf, zu) => { + zu.exports = function(e) { + return typeof e == "function"; + }; + }); + var Ie = H((vf, Gu) => { + var Ba = me(); + Gu.exports = function(e) { + return typeof e == "object" ? e !== null : Ba(e); + }; + }); + var He = H((mf, Uu) => { + var qr = ue(), wa = me(), ka = function(e) { + return wa(e) ? e : void 0; + }; + Uu.exports = function(e, r) { + return arguments.length < 2 ? ka(qr[e]) : qr[e] && qr[e][r]; + }; + }); + var _r = H((Ef, Vu) => { + var qa = ve(); + Vu.exports = qa({}.isPrototypeOf); + }); + var Hu = H((Cf, $u) => { + var _a = He(); + $u.exports = _a("navigator", "userAgent") || ""; + }); + var Qu = H((gf, Zu) => { + var Ju = ue(), Or = Hu(), Xu = Ju.process, Wu = Ju.Deno, Ku = Xu && Xu.versions || Wu && Wu.version, Yu = Ku && Ku.v8, Ee, sr; + Yu && (Ee = Yu.split("."), sr = Ee[0] > 0 && Ee[0] < 4 ? 1 : +(Ee[0] + Ee[1])); + !sr && Or && (Ee = Or.match(/Edge\/(\d+)/), (!Ee || Ee[1] >= 74) && (Ee = Or.match(/Chrome\/(\d+)/), Ee && (sr = +Ee[1]))); + Zu.exports = sr; + }); + var Ir = H((Ff, rt) => { + var et = Qu(), Oa = Ae(); + rt.exports = !!Object.getOwnPropertySymbols && !Oa(function() { + var e = Symbol(); + return !String(e) || !(Object(e) instanceof Symbol) || !Symbol.sham && et && et < 41; + }); + }); + var Sr = H((Af, ut) => { + var Ia = Ir(); + ut.exports = Ia && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var Tr = H((xf, tt) => { + var Sa = ue(), Ta = He(), Na = me(), La = _r(), Ra = Sr(), ja = Sa.Object; + tt.exports = Ra ? function(e) { + return typeof e == "symbol"; + } : function(e) { + var r = Ta("Symbol"); + return Na(r) && La(r.prototype, ja(e)); + }; + }); + var cr = H((bf, nt) => { + var Pa = ue(), Ma = Pa.String; + nt.exports = function(e) { + try { + return Ma(e); + } catch { + return "Object"; + } + }; + }); + var Xe = H((yf, it) => { + var za = ue(), Ga = me(), Ua = cr(), Va = za.TypeError; + it.exports = function(e) { + if (Ga(e)) + return e; + throw Va(Ua(e) + " is not a function"); + }; + }); + var lr = H((Bf, at) => { + var $a = Xe(); + at.exports = function(e, r) { + var u = e[r]; + return u == null ? void 0 : $a(u); + }; + }); + var st = H((wf, ot) => { + var Ha = ue(), Nr = Oe(), Lr = me(), Rr = Ie(), Xa = Ha.TypeError; + ot.exports = function(e, r) { + var u, t; + if (r === "string" && Lr(u = e.toString) && !Rr(t = Nr(u, e)) || Lr(u = e.valueOf) && !Rr(t = Nr(u, e)) || r !== "string" && Lr(u = e.toString) && !Rr(t = Nr(u, e))) + return t; + throw Xa("Can't convert object to primitive value"); + }; + }); + var lt = H((kf, ct) => { + ct.exports = false; + }); + var Dr = H((qf, ft) => { + var Dt = ue(), Wa = Object.defineProperty; + ft.exports = function(e, r) { + try { + Wa(Dt, e, { value: r, configurable: true, writable: true }); + } catch { + Dt[e] = r; + } + return r; + }; + }); + var fr = H((_f, dt) => { + var Ka = ue(), Ya = Dr(), pt = "__core-js_shared__", Ja = Ka[pt] || Ya(pt, {}); + dt.exports = Ja; + }); + var jr = H((Of, vt) => { + var Za = lt(), ht = fr(); + (vt.exports = function(e, r) { + return ht[e] || (ht[e] = r !== void 0 ? r : {}); + })("versions", []).push({ version: "3.22.2", mode: Za ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var Pr = H((If, mt) => { + var Qa = ue(), eo = kr(), ro = Qa.Object; + mt.exports = function(e) { + return ro(eo(e)); + }; + }); + var Be = H((Sf, Et) => { + var uo = ve(), to = Pr(), no = uo({}.hasOwnProperty); + Et.exports = Object.hasOwn || function(r, u) { + return no(to(r), u); + }; + }); + var Mr = H((Tf, Ct) => { + var io = ve(), ao = 0, oo = Math.random(), so = io(1 .toString); + Ct.exports = function(e) { + return "Symbol(" + (e === void 0 ? "" : e) + ")_" + so(++ao + oo, 36); + }; + }); + var Te = H((Nf, bt) => { + var co = ue(), lo = jr(), gt = Be(), Do = Mr(), Ft = Ir(), xt = Sr(), Le = lo("wks"), Se = co.Symbol, At = Se && Se.for, fo = xt ? Se : Se && Se.withoutSetter || Do; + bt.exports = function(e) { + if (!gt(Le, e) || !(Ft || typeof Le[e] == "string")) { + var r = "Symbol." + e; + Ft && gt(Se, e) ? Le[e] = Se[e] : xt && At ? Le[e] = At(r) : Le[e] = fo(r); + } + return Le[e]; + }; + }); + var kt = H((Lf, wt) => { + var po = ue(), ho = Oe(), yt = Ie(), Bt = Tr(), vo = lr(), mo = st(), Eo = Te(), Co = po.TypeError, go = Eo("toPrimitive"); + wt.exports = function(e, r) { + if (!yt(e) || Bt(e)) + return e; + var u = vo(e, go), t; + if (u) { + if (r === void 0 && (r = "default"), t = ho(u, e, r), !yt(t) || Bt(t)) + return t; + throw Co("Can't convert object to primitive value"); + } + return r === void 0 && (r = "number"), mo(e, r); + }; + }); + var pr = H((Rf, qt) => { + var Fo = kt(), Ao = Tr(); + qt.exports = function(e) { + var r = Fo(e, "string"); + return Ao(r) ? r : r + ""; + }; + }); + var It = H((jf, Ot) => { + var xo = ue(), _t = Ie(), zr = xo.document, bo = _t(zr) && _t(zr.createElement); + Ot.exports = function(e) { + return bo ? zr.createElement(e) : {}; + }; + }); + var Gr = H((Pf, St) => { + var yo = _e(), Bo = Ae(), wo = It(); + St.exports = !yo && !Bo(function() { + return Object.defineProperty(wo("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var Ur = H((Nt) => { + var ko = _e(), qo = Oe(), _o = _u(), Oo = ir(), Io = or(), So = pr(), To = Be(), No = Gr(), Tt = Object.getOwnPropertyDescriptor; + Nt.f = ko ? Tt : function(r, u) { + if (r = Io(r), u = So(u), No) + try { + return Tt(r, u); + } catch { + } + if (To(r, u)) + return Oo(!qo(_o.f, r, u), r[u]); + }; + }); + var Rt = H((zf, Lt) => { + var Lo = _e(), Ro = Ae(); + Lt.exports = Lo && Ro(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var Re = H((Gf, Pt) => { + var jt = ue(), jo = Ie(), Po = jt.String, Mo = jt.TypeError; + Pt.exports = function(e) { + if (jo(e)) + return e; + throw Mo(Po(e) + " is not an object"); + }; + }); + var hr = H((zt) => { + var zo = ue(), Go = _e(), Uo = Gr(), Vo = Rt(), dr = Re(), Mt = pr(), $o = zo.TypeError, Vr = Object.defineProperty, Ho = Object.getOwnPropertyDescriptor, $r = "enumerable", Hr = "configurable", Xr = "writable"; + zt.f = Go ? Vo ? function(r, u, t) { + if (dr(r), u = Mt(u), dr(t), typeof r == "function" && u === "prototype" && "value" in t && Xr in t && !t[Xr]) { + var o = Ho(r, u); + o && o[Xr] && (r[u] = t.value, t = { configurable: Hr in t ? t[Hr] : o[Hr], enumerable: $r in t ? t[$r] : o[$r], writable: false }); + } + return Vr(r, u, t); + } : Vr : function(r, u, t) { + if (dr(r), u = Mt(u), dr(t), Uo) + try { + return Vr(r, u, t); + } catch { + } + if ("get" in t || "set" in t) + throw $o("Accessors not supported"); + return "value" in t && (r[u] = t.value), r; + }; + }); + var vr = H((Vf, Gt) => { + var Xo = _e(), Wo = hr(), Ko = ir(); + Gt.exports = Xo ? function(e, r, u) { + return Wo.f(e, r, Ko(1, u)); + } : function(e, r, u) { + return e[r] = u, e; + }; + }); + var mr = H(($f, Ut) => { + var Yo = ve(), Jo = me(), Wr = fr(), Zo = Yo(Function.toString); + Jo(Wr.inspectSource) || (Wr.inspectSource = function(e) { + return Zo(e); + }); + Ut.exports = Wr.inspectSource; + }); + var Ht = H((Hf, $t) => { + var Qo = ue(), es = me(), rs = mr(), Vt = Qo.WeakMap; + $t.exports = es(Vt) && /native code/.test(rs(Vt)); + }); + var Kt = H((Xf, Wt) => { + var us = jr(), ts = Mr(), Xt = us("keys"); + Wt.exports = function(e) { + return Xt[e] || (Xt[e] = ts(e)); + }; + }); + var Kr = H((Wf, Yt) => { + Yt.exports = {}; + }); + var un = H((Kf, rn) => { + var ns = Ht(), en = ue(), Yr = ve(), is = Ie(), as = vr(), Jr = Be(), Zr = fr(), os = Kt(), ss = Kr(), Jt = "Object already initialized", eu = en.TypeError, cs = en.WeakMap, Er, We, Cr, ls = function(e) { + return Cr(e) ? We(e) : Er(e, {}); + }, Ds = function(e) { + return function(r) { + var u; + if (!is(r) || (u = We(r)).type !== e) + throw eu("Incompatible receiver, " + e + " required"); + return u; + }; + }; + ns || Zr.state ? (we = Zr.state || (Zr.state = new cs()), Zt = Yr(we.get), Qr = Yr(we.has), Qt = Yr(we.set), Er = function(e, r) { + if (Qr(we, e)) + throw new eu(Jt); + return r.facade = e, Qt(we, e, r), r; + }, We = function(e) { + return Zt(we, e) || {}; + }, Cr = function(e) { + return Qr(we, e); + }) : (Ne = os("state"), ss[Ne] = true, Er = function(e, r) { + if (Jr(e, Ne)) + throw new eu(Jt); + return r.facade = e, as(e, Ne, r), r; + }, We = function(e) { + return Jr(e, Ne) ? e[Ne] : {}; + }, Cr = function(e) { + return Jr(e, Ne); + }); + var we, Zt, Qr, Qt, Ne; + rn.exports = { set: Er, get: We, has: Cr, enforce: ls, getterFor: Ds }; + }); + var an = H((Yf, nn) => { + var ru = _e(), fs5 = Be(), tn = Function.prototype, ps = ru && Object.getOwnPropertyDescriptor, uu = fs5(tn, "name"), ds = uu && function() { + }.name === "something", hs = uu && (!ru || ru && ps(tn, "name").configurable); + nn.exports = { EXISTS: uu, PROPER: ds, CONFIGURABLE: hs }; + }); + var Dn = H((Jf, ln) => { + var vs = ue(), on = me(), ms = Be(), sn = vr(), Es = Dr(), Cs = mr(), cn = un(), gs = an().CONFIGURABLE, Fs = cn.get, As = cn.enforce, xs = String(String).split("String"); + (ln.exports = function(e, r, u, t) { + var o = t ? !!t.unsafe : false, n = t ? !!t.enumerable : false, s = t ? !!t.noTargetGet : false, c = t && t.name !== void 0 ? t.name : r, i; + if (on(u) && (String(c).slice(0, 7) === "Symbol(" && (c = "[" + String(c).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!ms(u, "name") || gs && u.name !== c) && sn(u, "name", c), i = As(u), i.source || (i.source = xs.join(typeof c == "string" ? c : ""))), e === vs) { + n ? e[r] = u : Es(r, u); + return; + } else + o ? !s && e[r] && (n = true) : delete e[r]; + n ? e[r] = u : sn(e, r, u); + })(Function.prototype, "toString", function() { + return on(this) && Fs(this).source || Cs(this); + }); + }); + var tu = H((Zf, fn) => { + var bs = Math.ceil, ys = Math.floor; + fn.exports = function(e) { + var r = +e; + return r !== r || r === 0 ? 0 : (r > 0 ? ys : bs)(r); + }; + }); + var dn = H((Qf, pn) => { + var Bs = tu(), ws = Math.max, ks = Math.min; + pn.exports = function(e, r) { + var u = Bs(e); + return u < 0 ? ws(u + r, 0) : ks(u, r); + }; + }); + var vn = H((ep, hn) => { + var qs = tu(), _s = Math.min; + hn.exports = function(e) { + return e > 0 ? _s(qs(e), 9007199254740991) : 0; + }; + }); + var Ke = H((rp, mn) => { + var Os = vn(); + mn.exports = function(e) { + return Os(e.length); + }; + }); + var gn = H((up, Cn) => { + var Is = or(), Ss = dn(), Ts = Ke(), En = function(e) { + return function(r, u, t) { + var o = Is(r), n = Ts(o), s = Ss(t, n), c; + if (e && u != u) { + for (; n > s; ) + if (c = o[s++], c != c) + return true; + } else + for (; n > s; s++) + if ((e || s in o) && o[s] === u) + return e || s || 0; + return !e && -1; + }; + }; + Cn.exports = { includes: En(true), indexOf: En(false) }; + }); + var xn = H((tp, An) => { + var Ns = ve(), nu = Be(), Ls = or(), Rs = gn().indexOf, js = Kr(), Fn = Ns([].push); + An.exports = function(e, r) { + var u = Ls(e), t = 0, o = [], n; + for (n in u) + !nu(js, n) && nu(u, n) && Fn(o, n); + for (; r.length > t; ) + nu(u, n = r[t++]) && (~Rs(o, n) || Fn(o, n)); + return o; + }; + }); + var yn = H((np, bn) => { + bn.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var wn = H((Bn) => { + var Ps = xn(), Ms = yn(), zs = Ms.concat("length", "prototype"); + Bn.f = Object.getOwnPropertyNames || function(r) { + return Ps(r, zs); + }; + }); + var qn = H((kn) => { + kn.f = Object.getOwnPropertySymbols; + }); + var On = H((op, _n) => { + var Gs = He(), Us = ve(), Vs = wn(), $s = qn(), Hs = Re(), Xs = Us([].concat); + _n.exports = Gs("Reflect", "ownKeys") || function(r) { + var u = Vs.f(Hs(r)), t = $s.f; + return t ? Xs(u, t(r)) : u; + }; + }); + var Tn = H((sp, Sn) => { + var In = Be(), Ws = On(), Ks = Ur(), Ys = hr(); + Sn.exports = function(e, r, u) { + for (var t = Ws(r), o = Ys.f, n = Ks.f, s = 0; s < t.length; s++) { + var c = t[s]; + !In(e, c) && !(u && In(u, c)) && o(e, c, n(r, c)); + } + }; + }); + var Ln = H((cp, Nn) => { + var Js = Ae(), Zs = me(), Qs = /#|\.prototype\./, Ye = function(e, r) { + var u = rc[ec(e)]; + return u == tc ? true : u == uc ? false : Zs(r) ? Js(r) : !!r; + }, ec = Ye.normalize = function(e) { + return String(e).replace(Qs, ".").toLowerCase(); + }, rc = Ye.data = {}, uc = Ye.NATIVE = "N", tc = Ye.POLYFILL = "P"; + Nn.exports = Ye; + }); + var au = H((lp, Rn) => { + var iu = ue(), nc = Ur().f, ic = vr(), ac = Dn(), oc = Dr(), sc = Tn(), cc = Ln(); + Rn.exports = function(e, r) { + var u = e.target, t = e.global, o = e.stat, n, s, c, i, D, a; + if (t ? s = iu : o ? s = iu[u] || oc(u, {}) : s = (iu[u] || {}).prototype, s) + for (c in r) { + if (D = r[c], e.noTargetGet ? (a = nc(s, c), i = a && a.value) : i = s[c], n = cc(t ? c : u + (o ? "." : "#") + c, e.forced), !n && i !== void 0) { + if (typeof D == typeof i) + continue; + sc(D, i); + } + (e.sham || i && i.sham) && ic(D, "sham", true), ac(s, c, D, e); + } + }; + }); + var ou = H((Dp, jn) => { + var lc = ar(); + jn.exports = Array.isArray || function(r) { + return lc(r) == "Array"; + }; + }); + var su = H((fp, Mn) => { + var Pn = ve(), Dc = Xe(), fc = tr(), pc = Pn(Pn.bind); + Mn.exports = function(e, r) { + return Dc(e), r === void 0 ? e : fc ? pc(e, r) : function() { + return e.apply(r, arguments); + }; + }; + }); + var Un = H((pp, Gn) => { + "use strict"; + var dc = ue(), hc = ou(), vc = Ke(), mc = su(), Ec = dc.TypeError, zn = function(e, r, u, t, o, n, s, c) { + for (var i = o, D = 0, a = s ? mc(s, c) : false, l, p; D < t; ) { + if (D in u) { + if (l = a ? a(u[D], D, r) : u[D], n > 0 && hc(l)) + p = vc(l), i = zn(e, r, l, p, i, n - 1) - 1; + else { + if (i >= 9007199254740991) + throw Ec("Exceed the acceptable array length"); + e[i] = l; + } + i++; + } + D++; + } + return i; + }; + Gn.exports = zn; + }); + var Hn = H((dp, $n) => { + var Cc = Te(), gc = Cc("toStringTag"), Vn = {}; + Vn[gc] = "z"; + $n.exports = String(Vn) === "[object z]"; + }); + var cu = H((hp, Xn) => { + var Fc = ue(), Ac = Hn(), xc = me(), gr = ar(), bc = Te(), yc = bc("toStringTag"), Bc = Fc.Object, wc = gr(function() { + return arguments; + }()) == "Arguments", kc = function(e, r) { + try { + return e[r]; + } catch { + } + }; + Xn.exports = Ac ? gr : function(e) { + var r, u, t; + return e === void 0 ? "Undefined" : e === null ? "Null" : typeof (u = kc(r = Bc(e), yc)) == "string" ? u : wc ? gr(r) : (t = gr(r)) == "Object" && xc(r.callee) ? "Arguments" : t; + }; + }); + var Qn = H((vp, Zn) => { + var qc = ve(), _c = Ae(), Wn = me(), Oc = cu(), Ic = He(), Sc = mr(), Kn = function() { + }, Tc = [], Yn = Ic("Reflect", "construct"), lu = /^\s*(?:class|function)\b/, Nc = qc(lu.exec), Lc = !lu.exec(Kn), Je = function(r) { + if (!Wn(r)) + return false; + try { + return Yn(Kn, Tc, r), true; + } catch { + return false; + } + }, Jn = function(r) { + if (!Wn(r)) + return false; + switch (Oc(r)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return false; + } + try { + return Lc || !!Nc(lu, Sc(r)); + } catch { + return true; + } + }; + Jn.sham = true; + Zn.exports = !Yn || _c(function() { + var e; + return Je(Je.call) || !Je(Object) || !Je(function() { + e = true; + }) || e; + }) ? Jn : Je; + }); + var ti = H((mp, ui) => { + var Rc = ue(), ei = ou(), jc = Qn(), Pc = Ie(), Mc = Te(), zc = Mc("species"), ri = Rc.Array; + ui.exports = function(e) { + var r; + return ei(e) && (r = e.constructor, jc(r) && (r === ri || ei(r.prototype)) ? r = void 0 : Pc(r) && (r = r[zc], r === null && (r = void 0))), r === void 0 ? ri : r; + }; + }); + var ii = H((Ep, ni) => { + var Gc = ti(); + ni.exports = function(e, r) { + return new (Gc(e))(r === 0 ? 0 : r); + }; + }); + var ai = H(() => { + "use strict"; + var Uc = au(), Vc = Un(), $c = Xe(), Hc = Pr(), Xc = Ke(), Wc = ii(); + Uc({ target: "Array", proto: true }, { flatMap: function(r) { + var u = Hc(this), t = Xc(u), o; + return $c(r), o = Wc(u, 0), o.length = Vc(o, u, u, t, 0, 1, r, arguments.length > 1 ? arguments[1] : void 0), o; + } }); + }); + var Du = H((Fp, oi) => { + oi.exports = {}; + }); + var ci = H((Ap, si) => { + var Kc = Te(), Yc = Du(), Jc = Kc("iterator"), Zc = Array.prototype; + si.exports = function(e) { + return e !== void 0 && (Yc.Array === e || Zc[Jc] === e); + }; + }); + var fu = H((xp, Di) => { + var Qc = cu(), li = lr(), el = Du(), rl = Te(), ul = rl("iterator"); + Di.exports = function(e) { + if (e != null) + return li(e, ul) || li(e, "@@iterator") || el[Qc(e)]; + }; + }); + var pi = H((bp, fi) => { + var tl = ue(), nl = Oe(), il = Xe(), al = Re(), ol = cr(), sl = fu(), cl = tl.TypeError; + fi.exports = function(e, r) { + var u = arguments.length < 2 ? sl(e) : r; + if (il(u)) + return al(nl(u, e)); + throw cl(ol(e) + " is not iterable"); + }; + }); + var vi = H((yp, hi) => { + var ll = Oe(), di = Re(), Dl = lr(); + hi.exports = function(e, r, u) { + var t, o; + di(e); + try { + if (t = Dl(e, "return"), !t) { + if (r === "throw") + throw u; + return u; + } + t = ll(t, e); + } catch (n) { + o = true, t = n; + } + if (r === "throw") + throw u; + if (o) + throw t; + return di(t), u; + }; + }); + var Fi = H((Bp, gi) => { + var fl = ue(), pl = su(), dl = Oe(), hl = Re(), vl = cr(), ml = ci(), El = Ke(), mi = _r(), Cl = pi(), gl = fu(), Ei = vi(), Fl = fl.TypeError, Fr = function(e, r) { + this.stopped = e, this.result = r; + }, Ci = Fr.prototype; + gi.exports = function(e, r, u) { + var t = u && u.that, o = !!(u && u.AS_ENTRIES), n = !!(u && u.IS_ITERATOR), s = !!(u && u.INTERRUPTED), c = pl(r, t), i, D, a, l, p, d, g, F = function(x) { + return i && Ei(i, "normal", x), new Fr(true, x); + }, E = function(x) { + return o ? (hl(x), s ? c(x[0], x[1], F) : c(x[0], x[1])) : s ? c(x, F) : c(x); + }; + if (n) + i = e; + else { + if (D = gl(e), !D) + throw Fl(vl(e) + " is not iterable"); + if (ml(D)) { + for (a = 0, l = El(e); l > a; a++) + if (p = E(e[a]), p && mi(Ci, p)) + return p; + return new Fr(false); + } + i = Cl(e, D); + } + for (d = i.next; !(g = dl(d, i)).done; ) { + try { + p = E(g.value); + } catch (x) { + Ei(i, "throw", x); + } + if (typeof p == "object" && p && mi(Ci, p)) + return p; + } + return new Fr(false); + }; + }); + var xi = H((wp, Ai) => { + "use strict"; + var Al = pr(), xl = hr(), bl = ir(); + Ai.exports = function(e, r, u) { + var t = Al(r); + t in e ? xl.f(e, t, bl(0, u)) : e[t] = u; + }; + }); + var bi = H(() => { + var yl = au(), Bl = Fi(), wl = xi(); + yl({ target: "Object", stat: true }, { fromEntries: function(r) { + var u = {}; + return Bl(r, function(t, o) { + wl(u, t, o); + }, { AS_ENTRIES: true }), u; + } }); + }); + var ef = H((_p, oa) => { + var kl = ["cliName", "cliCategory", "cliDescription"], yi, Bi, wi, ki, qi, _i; + function ql(e, r) { + if (e == null) + return {}; + var u = _l(e, r), t, o; + if (Object.getOwnPropertySymbols) { + var n = Object.getOwnPropertySymbols(e); + for (o = 0; o < n.length; o++) + t = n[o], !(r.indexOf(t) >= 0) && (!Object.prototype.propertyIsEnumerable.call(e, t) || (u[t] = e[t])); + } + return u; + } + function _l(e, r) { + if (e == null) + return {}; + var u = {}, t = Object.keys(e), o, n; + for (n = 0; n < t.length; n++) + o = t[n], !(r.indexOf(o) >= 0) && (u[o] = e[o]); + return u; + } + ai(); + bi(); + function je(e, r) { + return r || (r = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(r) } })); + } + var Ol = Object.create, Ar = Object.defineProperty, Il = Object.getOwnPropertyDescriptor, pu = Object.getOwnPropertyNames, Sl = Object.getPrototypeOf, Tl = Object.prototype.hasOwnProperty, Pe = (e, r) => function() { + return e && (r = (0, e[pu(e)[0]])(e = 0)), r; + }, S = (e, r) => function() { + return r || (0, e[pu(e)[0]])((r = { exports: {} }).exports, r), r.exports; + }, Li = (e, r) => { + for (var u in r) + Ar(e, u, { get: r[u], enumerable: true }); + }, Ri = (e, r, u, t) => { + if (r && typeof r == "object" || typeof r == "function") + for (let o of pu(r)) + !Tl.call(e, o) && o !== u && Ar(e, o, { get: () => r[o], enumerable: !(t = Il(r, o)) || t.enumerable }); + return e; + }, Nl = (e, r, u) => (u = e != null ? Ol(Sl(e)) : {}, Ri(r || !e || !e.__esModule ? Ar(u, "default", { value: e, enumerable: true }) : u, e)), ji = (e) => Ri(Ar({}, "__esModule", { value: true }), e), Oi, Ii, Ze, I = Pe({ ""() { + Oi = {}, Ii = [], Ze = { env: Oi, argv: Ii }; + } }), Me = S({ "node_modules/xtend/immutable.js"(e, r) { + I(), r.exports = t; + var u = Object.prototype.hasOwnProperty; + function t() { + for (var o = {}, n = 0; n < arguments.length; n++) { + var s = arguments[n]; + for (var c in s) + u.call(s, c) && (o[c] = s[c]); + } + return o; + } + } }), Ll = S({ "node_modules/inherits/inherits_browser.js"(e, r) { + I(), typeof Object.create == "function" ? r.exports = function(t, o) { + o && (t.super_ = o, t.prototype = Object.create(o.prototype, { constructor: { value: t, enumerable: false, writable: true, configurable: true } })); + } : r.exports = function(t, o) { + if (o) { + t.super_ = o; + var n = function() { + }; + n.prototype = o.prototype, t.prototype = new n(), t.prototype.constructor = t; + } + }; + } }), Rl = S({ "node_modules/unherit/index.js"(e, r) { + "use strict"; + I(); + var u = Me(), t = Ll(); + r.exports = o; + function o(n) { + var s, c, i; + t(a, n), t(D, a), s = a.prototype; + for (c in s) + i = s[c], i && typeof i == "object" && (s[c] = "concat" in i ? i.concat() : u(i)); + return a; + function D(l) { + return n.apply(this, l); + } + function a() { + return this instanceof a ? n.apply(this, arguments) : new D(arguments); + } + } + } }), jl = S({ "node_modules/state-toggle/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o, n) { + return s; + function s() { + var c = n || this, i = c[t]; + return c[t] = !o, D; + function D() { + c[t] = i; + } + } + } + } }), Pl = S({ "node_modules/vfile-location/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t) { + for (var o = String(t), n = [], s = /\r?\n|\r/g; s.exec(o); ) + n.push(s.lastIndex); + return n.push(o.length + 1), { toPoint: c, toPosition: c, toOffset: i }; + function c(D) { + var a = -1; + if (D > -1 && D < n[n.length - 1]) { + for (; ++a < n.length; ) + if (n[a] > D) + return { line: a + 1, column: D - (n[a - 1] || 0) + 1, offset: D }; + } + return {}; + } + function i(D) { + var a = D && D.line, l = D && D.column, p; + return !isNaN(a) && !isNaN(l) && a - 1 in n && (p = (n[a - 2] || 0) + l - 1 || 0), p > -1 && p < n[n.length - 1] ? p : -1; + } + } + } }), Ml = S({ "node_modules/remark-parse/lib/unescape.js"(e, r) { + "use strict"; + I(), r.exports = t; + var u = "\\"; + function t(o, n) { + return s; + function s(c) { + for (var i = 0, D = c.indexOf(u), a = o[n], l = [], p; D !== -1; ) + l.push(c.slice(i, D)), i = D + 1, p = c.charAt(i), (!p || a.indexOf(p) === -1) && l.push(u), D = c.indexOf(u, i + 1); + return l.push(c.slice(i)), l.join(""); + } + } + } }), zl = S({ "node_modules/character-entities-legacy/index.json"(e, r) { + r.exports = { AElig: "\xC6", AMP: "&", Aacute: "\xC1", Acirc: "\xC2", Agrave: "\xC0", Aring: "\xC5", Atilde: "\xC3", Auml: "\xC4", COPY: "\xA9", Ccedil: "\xC7", ETH: "\xD0", Eacute: "\xC9", Ecirc: "\xCA", Egrave: "\xC8", Euml: "\xCB", GT: ">", Iacute: "\xCD", Icirc: "\xCE", Igrave: "\xCC", Iuml: "\xCF", LT: "<", Ntilde: "\xD1", Oacute: "\xD3", Ocirc: "\xD4", Ograve: "\xD2", Oslash: "\xD8", Otilde: "\xD5", Ouml: "\xD6", QUOT: '"', REG: "\xAE", THORN: "\xDE", Uacute: "\xDA", Ucirc: "\xDB", Ugrave: "\xD9", Uuml: "\xDC", Yacute: "\xDD", aacute: "\xE1", acirc: "\xE2", acute: "\xB4", aelig: "\xE6", agrave: "\xE0", amp: "&", aring: "\xE5", atilde: "\xE3", auml: "\xE4", brvbar: "\xA6", ccedil: "\xE7", cedil: "\xB8", cent: "\xA2", copy: "\xA9", curren: "\xA4", deg: "\xB0", divide: "\xF7", eacute: "\xE9", ecirc: "\xEA", egrave: "\xE8", eth: "\xF0", euml: "\xEB", frac12: "\xBD", frac14: "\xBC", frac34: "\xBE", gt: ">", iacute: "\xED", icirc: "\xEE", iexcl: "\xA1", igrave: "\xEC", iquest: "\xBF", iuml: "\xEF", laquo: "\xAB", lt: "<", macr: "\xAF", micro: "\xB5", middot: "\xB7", nbsp: "\xA0", not: "\xAC", ntilde: "\xF1", oacute: "\xF3", ocirc: "\xF4", ograve: "\xF2", ordf: "\xAA", ordm: "\xBA", oslash: "\xF8", otilde: "\xF5", ouml: "\xF6", para: "\xB6", plusmn: "\xB1", pound: "\xA3", quot: '"', raquo: "\xBB", reg: "\xAE", sect: "\xA7", shy: "\xAD", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", szlig: "\xDF", thorn: "\xFE", times: "\xD7", uacute: "\xFA", ucirc: "\xFB", ugrave: "\xF9", uml: "\xA8", uuml: "\xFC", yacute: "\xFD", yen: "\xA5", yuml: "\xFF" }; + } }), Gl = S({ "node_modules/character-reference-invalid/index.json"(e, r) { + r.exports = { 0: "\uFFFD", 128: "\u20AC", 130: "\u201A", 131: "\u0192", 132: "\u201E", 133: "\u2026", 134: "\u2020", 135: "\u2021", 136: "\u02C6", 137: "\u2030", 138: "\u0160", 139: "\u2039", 140: "\u0152", 142: "\u017D", 145: "\u2018", 146: "\u2019", 147: "\u201C", 148: "\u201D", 149: "\u2022", 150: "\u2013", 151: "\u2014", 152: "\u02DC", 153: "\u2122", 154: "\u0161", 155: "\u203A", 156: "\u0153", 158: "\u017E", 159: "\u0178" }; + } }), ze = S({ "node_modules/is-decimal/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t) { + var o = typeof t == "string" ? t.charCodeAt(0) : t; + return o >= 48 && o <= 57; + } + } }), Ul = S({ "node_modules/is-hexadecimal/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t) { + var o = typeof t == "string" ? t.charCodeAt(0) : t; + return o >= 97 && o <= 102 || o >= 65 && o <= 70 || o >= 48 && o <= 57; + } + } }), Qe = S({ "node_modules/is-alphabetical/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t) { + var o = typeof t == "string" ? t.charCodeAt(0) : t; + return o >= 97 && o <= 122 || o >= 65 && o <= 90; + } + } }), Vl = S({ "node_modules/is-alphanumerical/index.js"(e, r) { + "use strict"; + I(); + var u = Qe(), t = ze(); + r.exports = o; + function o(n) { + return u(n) || t(n); + } + } }), $l = S({ "node_modules/character-entities/index.json"(e, r) { + r.exports = { AEli: "\xC6", AElig: "\xC6", AM: "&", AMP: "&", Aacut: "\xC1", Aacute: "\xC1", Abreve: "\u0102", Acir: "\xC2", Acirc: "\xC2", Acy: "\u0410", Afr: "\u{1D504}", Agrav: "\xC0", Agrave: "\xC0", Alpha: "\u0391", Amacr: "\u0100", And: "\u2A53", Aogon: "\u0104", Aopf: "\u{1D538}", ApplyFunction: "\u2061", Arin: "\xC5", Aring: "\xC5", Ascr: "\u{1D49C}", Assign: "\u2254", Atild: "\xC3", Atilde: "\xC3", Aum: "\xC4", Auml: "\xC4", Backslash: "\u2216", Barv: "\u2AE7", Barwed: "\u2306", Bcy: "\u0411", Because: "\u2235", Bernoullis: "\u212C", Beta: "\u0392", Bfr: "\u{1D505}", Bopf: "\u{1D539}", Breve: "\u02D8", Bscr: "\u212C", Bumpeq: "\u224E", CHcy: "\u0427", COP: "\xA9", COPY: "\xA9", Cacute: "\u0106", Cap: "\u22D2", CapitalDifferentialD: "\u2145", Cayleys: "\u212D", Ccaron: "\u010C", Ccedi: "\xC7", Ccedil: "\xC7", Ccirc: "\u0108", Cconint: "\u2230", Cdot: "\u010A", Cedilla: "\xB8", CenterDot: "\xB7", Cfr: "\u212D", Chi: "\u03A7", CircleDot: "\u2299", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", Colon: "\u2237", Colone: "\u2A74", Congruent: "\u2261", Conint: "\u222F", ContourIntegral: "\u222E", Copf: "\u2102", Coproduct: "\u2210", CounterClockwiseContourIntegral: "\u2233", Cross: "\u2A2F", Cscr: "\u{1D49E}", Cup: "\u22D3", CupCap: "\u224D", DD: "\u2145", DDotrahd: "\u2911", DJcy: "\u0402", DScy: "\u0405", DZcy: "\u040F", Dagger: "\u2021", Darr: "\u21A1", Dashv: "\u2AE4", Dcaron: "\u010E", Dcy: "\u0414", Del: "\u2207", Delta: "\u0394", Dfr: "\u{1D507}", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", Diamond: "\u22C4", DifferentialD: "\u2146", Dopf: "\u{1D53B}", Dot: "\xA8", DotDot: "\u20DC", DotEqual: "\u2250", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrow: "\u2193", DownArrowBar: "\u2913", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVector: "\u21BD", DownLeftVectorBar: "\u2956", DownRightTeeVector: "\u295F", DownRightVector: "\u21C1", DownRightVectorBar: "\u2957", DownTee: "\u22A4", DownTeeArrow: "\u21A7", Downarrow: "\u21D3", Dscr: "\u{1D49F}", Dstrok: "\u0110", ENG: "\u014A", ET: "\xD0", ETH: "\xD0", Eacut: "\xC9", Eacute: "\xC9", Ecaron: "\u011A", Ecir: "\xCA", Ecirc: "\xCA", Ecy: "\u042D", Edot: "\u0116", Efr: "\u{1D508}", Egrav: "\xC8", Egrave: "\xC8", Element: "\u2208", Emacr: "\u0112", EmptySmallSquare: "\u25FB", EmptyVerySmallSquare: "\u25AB", Eogon: "\u0118", Eopf: "\u{1D53C}", Epsilon: "\u0395", Equal: "\u2A75", EqualTilde: "\u2242", Equilibrium: "\u21CC", Escr: "\u2130", Esim: "\u2A73", Eta: "\u0397", Eum: "\xCB", Euml: "\xCB", Exists: "\u2203", ExponentialE: "\u2147", Fcy: "\u0424", Ffr: "\u{1D509}", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", Fopf: "\u{1D53D}", ForAll: "\u2200", Fouriertrf: "\u2131", Fscr: "\u2131", GJcy: "\u0403", G: ">", GT: ">", Gamma: "\u0393", Gammad: "\u03DC", Gbreve: "\u011E", Gcedil: "\u0122", Gcirc: "\u011C", Gcy: "\u0413", Gdot: "\u0120", Gfr: "\u{1D50A}", Gg: "\u22D9", Gopf: "\u{1D53E}", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", Gt: "\u226B", HARDcy: "\u042A", Hacek: "\u02C7", Hat: "^", Hcirc: "\u0124", Hfr: "\u210C", HilbertSpace: "\u210B", Hopf: "\u210D", HorizontalLine: "\u2500", Hscr: "\u210B", Hstrok: "\u0126", HumpDownHump: "\u224E", HumpEqual: "\u224F", IEcy: "\u0415", IJlig: "\u0132", IOcy: "\u0401", Iacut: "\xCD", Iacute: "\xCD", Icir: "\xCE", Icirc: "\xCE", Icy: "\u0418", Idot: "\u0130", Ifr: "\u2111", Igrav: "\xCC", Igrave: "\xCC", Im: "\u2111", Imacr: "\u012A", ImaginaryI: "\u2148", Implies: "\u21D2", Int: "\u222C", Integral: "\u222B", Intersection: "\u22C2", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", Iogon: "\u012E", Iopf: "\u{1D540}", Iota: "\u0399", Iscr: "\u2110", Itilde: "\u0128", Iukcy: "\u0406", Ium: "\xCF", Iuml: "\xCF", Jcirc: "\u0134", Jcy: "\u0419", Jfr: "\u{1D50D}", Jopf: "\u{1D541}", Jscr: "\u{1D4A5}", Jsercy: "\u0408", Jukcy: "\u0404", KHcy: "\u0425", KJcy: "\u040C", Kappa: "\u039A", Kcedil: "\u0136", Kcy: "\u041A", Kfr: "\u{1D50E}", Kopf: "\u{1D542}", Kscr: "\u{1D4A6}", LJcy: "\u0409", L: "<", LT: "<", Lacute: "\u0139", Lambda: "\u039B", Lang: "\u27EA", Laplacetrf: "\u2112", Larr: "\u219E", Lcaron: "\u013D", Lcedil: "\u013B", Lcy: "\u041B", LeftAngleBracket: "\u27E8", LeftArrow: "\u2190", LeftArrowBar: "\u21E4", LeftArrowRightArrow: "\u21C6", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVector: "\u21C3", LeftDownVectorBar: "\u2959", LeftFloor: "\u230A", LeftRightArrow: "\u2194", LeftRightVector: "\u294E", LeftTee: "\u22A3", LeftTeeArrow: "\u21A4", LeftTeeVector: "\u295A", LeftTriangle: "\u22B2", LeftTriangleBar: "\u29CF", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVector: "\u21BF", LeftUpVectorBar: "\u2958", LeftVector: "\u21BC", LeftVectorBar: "\u2952", Leftarrow: "\u21D0", Leftrightarrow: "\u21D4", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", LessLess: "\u2AA1", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", Lfr: "\u{1D50F}", Ll: "\u22D8", Lleftarrow: "\u21DA", Lmidot: "\u013F", LongLeftArrow: "\u27F5", LongLeftRightArrow: "\u27F7", LongRightArrow: "\u27F6", Longleftarrow: "\u27F8", Longleftrightarrow: "\u27FA", Longrightarrow: "\u27F9", Lopf: "\u{1D543}", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", Lscr: "\u2112", Lsh: "\u21B0", Lstrok: "\u0141", Lt: "\u226A", Map: "\u2905", Mcy: "\u041C", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", MinusPlus: "\u2213", Mopf: "\u{1D544}", Mscr: "\u2133", Mu: "\u039C", NJcy: "\u040A", Nacute: "\u0143", Ncaron: "\u0147", Ncedil: "\u0145", Ncy: "\u041D", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: ` +`, Nfr: "\u{1D511}", NoBreak: "\u2060", NonBreakingSpace: "\xA0", Nopf: "\u2115", Not: "\u2AEC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangle: "\u22EB", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", Nscr: "\u{1D4A9}", Ntild: "\xD1", Ntilde: "\xD1", Nu: "\u039D", OElig: "\u0152", Oacut: "\xD3", Oacute: "\xD3", Ocir: "\xD4", Ocirc: "\xD4", Ocy: "\u041E", Odblac: "\u0150", Ofr: "\u{1D512}", Ograv: "\xD2", Ograve: "\xD2", Omacr: "\u014C", Omega: "\u03A9", Omicron: "\u039F", Oopf: "\u{1D546}", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", Or: "\u2A54", Oscr: "\u{1D4AA}", Oslas: "\xD8", Oslash: "\xD8", Otild: "\xD5", Otilde: "\xD5", Otimes: "\u2A37", Oum: "\xD6", Ouml: "\xD6", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", PartialD: "\u2202", Pcy: "\u041F", Pfr: "\u{1D513}", Phi: "\u03A6", Pi: "\u03A0", PlusMinus: "\xB1", Poincareplane: "\u210C", Popf: "\u2119", Pr: "\u2ABB", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", Prime: "\u2033", Product: "\u220F", Proportion: "\u2237", Proportional: "\u221D", Pscr: "\u{1D4AB}", Psi: "\u03A8", QUO: '"', QUOT: '"', Qfr: "\u{1D514}", Qopf: "\u211A", Qscr: "\u{1D4AC}", RBarr: "\u2910", RE: "\xAE", REG: "\xAE", Racute: "\u0154", Rang: "\u27EB", Rarr: "\u21A0", Rarrtl: "\u2916", Rcaron: "\u0158", Rcedil: "\u0156", Rcy: "\u0420", Re: "\u211C", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", Rfr: "\u211C", Rho: "\u03A1", RightAngleBracket: "\u27E9", RightArrow: "\u2192", RightArrowBar: "\u21E5", RightArrowLeftArrow: "\u21C4", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVector: "\u21C2", RightDownVectorBar: "\u2955", RightFloor: "\u230B", RightTee: "\u22A2", RightTeeArrow: "\u21A6", RightTeeVector: "\u295B", RightTriangle: "\u22B3", RightTriangleBar: "\u29D0", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVector: "\u21BE", RightUpVectorBar: "\u2954", RightVector: "\u21C0", RightVectorBar: "\u2953", Rightarrow: "\u21D2", Ropf: "\u211D", RoundImplies: "\u2970", Rrightarrow: "\u21DB", Rscr: "\u211B", Rsh: "\u21B1", RuleDelayed: "\u29F4", SHCHcy: "\u0429", SHcy: "\u0428", SOFTcy: "\u042C", Sacute: "\u015A", Sc: "\u2ABC", Scaron: "\u0160", Scedil: "\u015E", Scirc: "\u015C", Scy: "\u0421", Sfr: "\u{1D516}", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", Sigma: "\u03A3", SmallCircle: "\u2218", Sopf: "\u{1D54A}", Sqrt: "\u221A", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", Sscr: "\u{1D4AE}", Star: "\u22C6", Sub: "\u22D0", Subset: "\u22D0", SubsetEqual: "\u2286", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", SuchThat: "\u220B", Sum: "\u2211", Sup: "\u22D1", Superset: "\u2283", SupersetEqual: "\u2287", Supset: "\u22D1", THOR: "\xDE", THORN: "\xDE", TRADE: "\u2122", TSHcy: "\u040B", TScy: "\u0426", Tab: " ", Tau: "\u03A4", Tcaron: "\u0164", Tcedil: "\u0162", Tcy: "\u0422", Tfr: "\u{1D517}", Therefore: "\u2234", Theta: "\u0398", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", Topf: "\u{1D54B}", TripleDot: "\u20DB", Tscr: "\u{1D4AF}", Tstrok: "\u0166", Uacut: "\xDA", Uacute: "\xDA", Uarr: "\u219F", Uarrocir: "\u2949", Ubrcy: "\u040E", Ubreve: "\u016C", Ucir: "\xDB", Ucirc: "\xDB", Ucy: "\u0423", Udblac: "\u0170", Ufr: "\u{1D518}", Ugrav: "\xD9", Ugrave: "\xD9", Umacr: "\u016A", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", Uopf: "\u{1D54C}", UpArrow: "\u2191", UpArrowBar: "\u2912", UpArrowDownArrow: "\u21C5", UpDownArrow: "\u2195", UpEquilibrium: "\u296E", UpTee: "\u22A5", UpTeeArrow: "\u21A5", Uparrow: "\u21D1", Updownarrow: "\u21D5", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", Upsi: "\u03D2", Upsilon: "\u03A5", Uring: "\u016E", Uscr: "\u{1D4B0}", Utilde: "\u0168", Uum: "\xDC", Uuml: "\xDC", VDash: "\u22AB", Vbar: "\u2AEB", Vcy: "\u0412", Vdash: "\u22A9", Vdashl: "\u2AE6", Vee: "\u22C1", Verbar: "\u2016", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", Vopf: "\u{1D54D}", Vscr: "\u{1D4B1}", Vvdash: "\u22AA", Wcirc: "\u0174", Wedge: "\u22C0", Wfr: "\u{1D51A}", Wopf: "\u{1D54E}", Wscr: "\u{1D4B2}", Xfr: "\u{1D51B}", Xi: "\u039E", Xopf: "\u{1D54F}", Xscr: "\u{1D4B3}", YAcy: "\u042F", YIcy: "\u0407", YUcy: "\u042E", Yacut: "\xDD", Yacute: "\xDD", Ycirc: "\u0176", Ycy: "\u042B", Yfr: "\u{1D51C}", Yopf: "\u{1D550}", Yscr: "\u{1D4B4}", Yuml: "\u0178", ZHcy: "\u0416", Zacute: "\u0179", Zcaron: "\u017D", Zcy: "\u0417", Zdot: "\u017B", ZeroWidthSpace: "\u200B", Zeta: "\u0396", Zfr: "\u2128", Zopf: "\u2124", Zscr: "\u{1D4B5}", aacut: "\xE1", aacute: "\xE1", abreve: "\u0103", ac: "\u223E", acE: "\u223E\u0333", acd: "\u223F", acir: "\xE2", acirc: "\xE2", acut: "\xB4", acute: "\xB4", acy: "\u0430", aeli: "\xE6", aelig: "\xE6", af: "\u2061", afr: "\u{1D51E}", agrav: "\xE0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", alpha: "\u03B1", amacr: "\u0101", amalg: "\u2A3F", am: "&", amp: "&", and: "\u2227", andand: "\u2A55", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsd: "\u2221", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", aogon: "\u0105", aopf: "\u{1D552}", ap: "\u2248", apE: "\u2A70", apacir: "\u2A6F", ape: "\u224A", apid: "\u224B", apos: "'", approx: "\u2248", approxeq: "\u224A", arin: "\xE5", aring: "\xE5", ascr: "\u{1D4B6}", ast: "*", asymp: "\u2248", asympeq: "\u224D", atild: "\xE3", atilde: "\xE3", aum: "\xE4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", bNot: "\u2AED", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", barvee: "\u22BD", barwed: "\u2305", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", beta: "\u03B2", beth: "\u2136", between: "\u226C", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bnot: "\u2310", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxDL: "\u2557", boxDR: "\u2554", boxDl: "\u2556", boxDr: "\u2553", boxH: "\u2550", boxHD: "\u2566", boxHU: "\u2569", boxHd: "\u2564", boxHu: "\u2567", boxUL: "\u255D", boxUR: "\u255A", boxUl: "\u255C", boxUr: "\u2559", boxV: "\u2551", boxVH: "\u256C", boxVL: "\u2563", boxVR: "\u2560", boxVh: "\u256B", boxVl: "\u2562", boxVr: "\u255F", boxbox: "\u29C9", boxdL: "\u2555", boxdR: "\u2552", boxdl: "\u2510", boxdr: "\u250C", boxh: "\u2500", boxhD: "\u2565", boxhU: "\u2568", boxhd: "\u252C", boxhu: "\u2534", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxuL: "\u255B", boxuR: "\u2558", boxul: "\u2518", boxur: "\u2514", boxv: "\u2502", boxvH: "\u256A", boxvL: "\u2561", boxvR: "\u255E", boxvh: "\u253C", boxvl: "\u2524", boxvr: "\u251C", bprime: "\u2035", breve: "\u02D8", brvba: "\xA6", brvbar: "\xA6", bscr: "\u{1D4B7}", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsol: "\\", bsolb: "\u29C5", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", bumpeq: "\u224F", cacute: "\u0107", cap: "\u2229", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", capcup: "\u2A47", capdot: "\u2A40", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", ccaps: "\u2A4D", ccaron: "\u010D", ccedi: "\xE7", ccedil: "\xE7", ccirc: "\u0109", ccups: "\u2A4C", ccupssm: "\u2A50", cdot: "\u010B", cedi: "\xB8", cedil: "\xB8", cemptyv: "\u29B2", cen: "\xA2", cent: "\xA2", centerdot: "\xB7", cfr: "\u{1D520}", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", chi: "\u03C7", cir: "\u25CB", cirE: "\u29C3", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledR: "\xAE", circledS: "\u24C8", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", clubs: "\u2663", clubsuit: "\u2663", colon: ":", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", conint: "\u222E", copf: "\u{1D554}", coprod: "\u2210", cop: "\xA9", copy: "\xA9", copysr: "\u2117", crarr: "\u21B5", cross: "\u2717", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cup: "\u222A", cupbrcap: "\u2A48", cupcap: "\u2A46", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curre: "\xA4", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dArr: "\u21D3", dHar: "\u2965", dagger: "\u2020", daleth: "\u2138", darr: "\u2193", dash: "\u2010", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", dcaron: "\u010F", dcy: "\u0434", dd: "\u2146", ddagger: "\u2021", ddarr: "\u21CA", ddotseq: "\u2A77", de: "\xB0", deg: "\xB0", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", dfr: "\u{1D521}", dharl: "\u21C3", dharr: "\u21C2", diam: "\u22C4", diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divid: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", dopf: "\u{1D555}", dot: "\u02D9", doteq: "\u2250", doteqdot: "\u2251", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", downarrow: "\u2193", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", dscr: "\u{1D4B9}", dscy: "\u0455", dsol: "\u29F6", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", dzcy: "\u045F", dzigrarr: "\u27FF", eDDot: "\u2A77", eDot: "\u2251", eacut: "\xE9", eacute: "\xE9", easter: "\u2A6E", ecaron: "\u011B", ecir: "\xEA", ecirc: "\xEA", ecolon: "\u2255", ecy: "\u044D", edot: "\u0117", ee: "\u2147", efDot: "\u2252", efr: "\u{1D522}", eg: "\u2A9A", egrav: "\xE8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", emptyv: "\u2205", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", eng: "\u014B", ensp: "\u2002", eogon: "\u0119", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", equals: "=", equest: "\u225F", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erDot: "\u2253", erarr: "\u2971", escr: "\u212F", esdot: "\u2250", esim: "\u2242", eta: "\u03B7", et: "\xF0", eth: "\xF0", eum: "\xEB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", expectation: "\u2130", exponentiale: "\u2147", fallingdotseq: "\u2252", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", ffr: "\u{1D523}", filig: "\uFB01", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", fopf: "\u{1D557}", forall: "\u2200", fork: "\u22D4", forkv: "\u2AD9", fpartint: "\u2A0D", frac1: "\xBC", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac3: "\xBE", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", gE: "\u2267", gEl: "\u2A8C", gacute: "\u01F5", gamma: "\u03B3", gammad: "\u03DD", gap: "\u2A86", gbreve: "\u011F", gcirc: "\u011D", gcy: "\u0433", gdot: "\u0121", ge: "\u2265", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", ges: "\u2A7E", gescc: "\u2AA9", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", gfr: "\u{1D524}", gg: "\u226B", ggg: "\u22D9", gimel: "\u2137", gjcy: "\u0453", gl: "\u2277", glE: "\u2A92", gla: "\u2AA5", glj: "\u2AA4", gnE: "\u2269", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", gopf: "\u{1D558}", grave: "`", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", g: ">", gt: ">", gtcc: "\u2AA7", gtcir: "\u2A7A", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", hArr: "\u21D4", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", hardcy: "\u044A", harr: "\u2194", harrcir: "\u2948", harrw: "\u21AD", hbar: "\u210F", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", horbar: "\u2015", hscr: "\u{1D4BD}", hslash: "\u210F", hstrok: "\u0127", hybull: "\u2043", hyphen: "\u2010", iacut: "\xED", iacute: "\xED", ic: "\u2063", icir: "\xEE", icirc: "\xEE", icy: "\u0438", iecy: "\u0435", iexc: "\xA1", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", igrav: "\xEC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", ijlig: "\u0133", imacr: "\u012B", image: "\u2111", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", imof: "\u22B7", imped: "\u01B5", in: "\u2208", incare: "\u2105", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", int: "\u222B", intcal: "\u22BA", integers: "\u2124", intercal: "\u22BA", intlarhk: "\u2A17", intprod: "\u2A3C", iocy: "\u0451", iogon: "\u012F", iopf: "\u{1D55A}", iota: "\u03B9", iprod: "\u2A3C", iques: "\xBF", iquest: "\xBF", iscr: "\u{1D4BE}", isin: "\u2208", isinE: "\u22F9", isindot: "\u22F5", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", itilde: "\u0129", iukcy: "\u0456", ium: "\xEF", iuml: "\xEF", jcirc: "\u0135", jcy: "\u0439", jfr: "\u{1D527}", jmath: "\u0237", jopf: "\u{1D55B}", jscr: "\u{1D4BF}", jsercy: "\u0458", jukcy: "\u0454", kappa: "\u03BA", kappav: "\u03F0", kcedil: "\u0137", kcy: "\u043A", kfr: "\u{1D528}", kgreen: "\u0138", khcy: "\u0445", kjcy: "\u045C", kopf: "\u{1D55C}", kscr: "\u{1D4C0}", lAarr: "\u21DA", lArr: "\u21D0", lAtail: "\u291B", lBarr: "\u290E", lE: "\u2266", lEg: "\u2A8B", lHar: "\u2962", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", lambda: "\u03BB", lang: "\u27E8", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", laqu: "\xAB", laquo: "\xAB", larr: "\u2190", larrb: "\u21E4", larrbfs: "\u291F", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", lat: "\u2AAB", latail: "\u2919", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", lcaron: "\u013E", lcedil: "\u013C", lceil: "\u2308", lcub: "{", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", leftarrow: "\u2190", leftarrowtail: "\u21A2", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", leftthreetimes: "\u22CB", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", les: "\u2A7D", lescc: "\u2AA8", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", lessgtr: "\u2276", lesssim: "\u2272", lfisht: "\u297C", lfloor: "\u230A", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", ljcy: "\u0459", ll: "\u226A", llarr: "\u21C7", llcorner: "\u231E", llhard: "\u296B", lltri: "\u25FA", lmidot: "\u0140", lmoust: "\u23B0", lmoustache: "\u23B0", lnE: "\u2268", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", longleftrightarrow: "\u27F7", longmapsto: "\u27FC", longrightarrow: "\u27F6", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", lstrok: "\u0142", l: "<", lt: "<", ltcc: "\u2AA6", ltcir: "\u2A79", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltrPar: "\u2996", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", mDDot: "\u223A", mac: "\xAF", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", mcy: "\u043C", mdash: "\u2014", measuredangle: "\u2221", mfr: "\u{1D52A}", mho: "\u2127", micr: "\xB5", micro: "\xB5", mid: "\u2223", midast: "*", midcir: "\u2AF0", middo: "\xB7", middot: "\xB7", minus: "\u2212", minusb: "\u229F", minusd: "\u2238", minusdu: "\u2A2A", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", mstpos: "\u223E", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nGg: "\u22D9\u0338", nGt: "\u226B\u20D2", nGtv: "\u226B\u0338", nLeftarrow: "\u21CD", nLeftrightarrow: "\u21CE", nLl: "\u22D8\u0338", nLt: "\u226A\u20D2", nLtv: "\u226A\u0338", nRightarrow: "\u21CF", nVDash: "\u22AF", nVdash: "\u22AE", nabla: "\u2207", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natur: "\u266E", natural: "\u266E", naturals: "\u2115", nbs: "\xA0", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", ncaron: "\u0148", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", ncy: "\u043D", ndash: "\u2013", ne: "\u2260", neArr: "\u21D7", nearhk: "\u2924", nearr: "\u2197", nearrow: "\u2197", nedot: "\u2250\u0338", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", nexist: "\u2204", nexists: "\u2204", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", ngsim: "\u2275", ngt: "\u226F", ngtr: "\u226F", nhArr: "\u21CE", nharr: "\u21AE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", njcy: "\u045A", nlArr: "\u21CD", nlE: "\u2266\u0338", nlarr: "\u219A", nldr: "\u2025", nle: "\u2270", nleftarrow: "\u219A", nleftrightarrow: "\u21AE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nlsim: "\u2274", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nmid: "\u2224", nopf: "\u{1D55F}", no: "\xAC", not: "\xAC", notin: "\u2209", notinE: "\u22F9\u0338", notindot: "\u22F5\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", npar: "\u2226", nparallel: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", npre: "\u2AAF\u0338", nprec: "\u2280", npreceq: "\u2AAF\u0338", nrArr: "\u21CF", nrarr: "\u219B", nrarrc: "\u2933\u0338", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", ntild: "\xF1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvDash: "\u22AD", nvHarr: "\u2904", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwArr: "\u21D6", nwarhk: "\u2923", nwarr: "\u2196", nwarrow: "\u2196", nwnear: "\u2927", oS: "\u24C8", oacut: "\xF3", oacute: "\xF3", oast: "\u229B", ocir: "\xF4", ocirc: "\xF4", ocy: "\u043E", odash: "\u229D", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", oelig: "\u0153", ofcir: "\u29BF", ofr: "\u{1D52C}", ogon: "\u02DB", ograv: "\xF2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", omacr: "\u014D", omega: "\u03C9", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", oopf: "\u{1D560}", opar: "\u29B7", operp: "\u29B9", oplus: "\u2295", or: "\u2228", orarr: "\u21BB", ord: "\xBA", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oscr: "\u2134", oslas: "\xF8", oslash: "\xF8", osol: "\u2298", otild: "\xF5", otilde: "\xF5", otimes: "\u2297", otimesas: "\u2A36", oum: "\xF6", ouml: "\xF6", ovbar: "\u233D", par: "\xB6", para: "\xB6", parallel: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", pfr: "\u{1D52D}", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plus: "+", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", plusm: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", pointint: "\u2A15", popf: "\u{1D561}", poun: "\xA3", pound: "\xA3", pr: "\u227A", prE: "\u2AB3", prap: "\u2AB7", prcue: "\u227C", pre: "\u2AAF", prec: "\u227A", precapprox: "\u2AB7", preccurlyeq: "\u227C", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", precsim: "\u227E", prime: "\u2032", primes: "\u2119", prnE: "\u2AB5", prnap: "\u2AB9", prnsim: "\u22E8", prod: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", pscr: "\u{1D4C5}", psi: "\u03C8", puncsp: "\u2008", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", qprime: "\u2057", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quo: '"', quot: '"', rAarr: "\u21DB", rArr: "\u21D2", rAtail: "\u291C", rBarr: "\u290F", rHar: "\u2964", race: "\u223D\u0331", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raqu: "\xBB", raquo: "\xBB", rarr: "\u2192", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", rcaron: "\u0159", rcedil: "\u0157", rceil: "\u2309", rcub: "}", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", rect: "\u25AD", re: "\xAE", reg: "\xAE", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", rho: "\u03C1", rhov: "\u03F1", rightarrow: "\u2192", rightarrowtail: "\u21A3", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", rightthreetimes: "\u22CC", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoust: "\u23B1", rmoustache: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", roplus: "\u2A2E", rotimes: "\u2A35", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", rsaquo: "\u203A", rscr: "\u{1D4C7}", rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", ruluhar: "\u2968", rx: "\u211E", sacute: "\u015B", sbquo: "\u201A", sc: "\u227B", scE: "\u2AB4", scap: "\u2AB8", scaron: "\u0161", sccue: "\u227D", sce: "\u2AB0", scedil: "\u015F", scirc: "\u015D", scnE: "\u2AB6", scnap: "\u2ABA", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", scy: "\u0441", sdot: "\u22C5", sdotb: "\u22A1", sdote: "\u2A66", seArr: "\u21D8", searhk: "\u2925", searr: "\u2198", searrow: "\u2198", sec: "\xA7", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", shchcy: "\u0449", shcy: "\u0448", shortmid: "\u2223", shortparallel: "\u2225", sh: "\xAD", shy: "\xAD", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", softcy: "\u044C", sol: "/", solb: "\u29C4", solbar: "\u233F", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", squ: "\u25A1", square: "\u25A1", squarf: "\u25AA", squf: "\u25AA", srarr: "\u2192", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", subE: "\u2AC5", subdot: "\u2ABD", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", subseteq: "\u2286", subseteqq: "\u2AC5", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succ: "\u227B", succapprox: "\u2AB8", succcurlyeq: "\u227D", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", sum: "\u2211", sung: "\u266A", sup: "\u2283", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", supE: "\u2AC6", supdot: "\u2ABE", supdsub: "\u2AD8", supe: "\u2287", supedot: "\u2AC4", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swArr: "\u21D9", swarhk: "\u2926", swarr: "\u2199", swarrow: "\u2199", swnwar: "\u292A", szli: "\xDF", szlig: "\xDF", target: "\u2316", tau: "\u03C4", tbrk: "\u23B4", tcaron: "\u0165", tcedil: "\u0163", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", thor: "\xFE", thorn: "\xFE", tilde: "\u02DC", time: "\xD7", times: "\xD7", timesb: "\u22A0", timesbar: "\u2A31", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", top: "\u22A4", topbot: "\u2336", topcir: "\u2AF1", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", tscr: "\u{1D4C9}", tscy: "\u0446", tshcy: "\u045B", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", uArr: "\u21D1", uHar: "\u2963", uacut: "\xFA", uacute: "\xFA", uarr: "\u2191", ubrcy: "\u045E", ubreve: "\u016D", ucir: "\xFB", ucirc: "\xFB", ucy: "\u0443", udarr: "\u21C5", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", ufr: "\u{1D532}", ugrav: "\xF9", ugrave: "\xF9", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", umacr: "\u016B", um: "\xA8", uml: "\xA8", uogon: "\u0173", uopf: "\u{1D566}", uparrow: "\u2191", updownarrow: "\u2195", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", upsi: "\u03C5", upsih: "\u03D2", upsilon: "\u03C5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", uring: "\u016F", urtri: "\u25F9", uscr: "\u{1D4CA}", utdot: "\u22F0", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", uum: "\xFC", uuml: "\xFC", uwangle: "\u29A7", vArr: "\u21D5", vBar: "\u2AE8", vBarv: "\u2AE9", vDash: "\u22A8", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vcy: "\u0432", vdash: "\u22A2", vee: "\u2228", veebar: "\u22BB", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", vert: "|", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", vzigzag: "\u299A", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", wedgeq: "\u2259", weierp: "\u2118", wfr: "\u{1D534}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", xfr: "\u{1D535}", xhArr: "\u27FA", xharr: "\u27F7", xi: "\u03BE", xlArr: "\u27F8", xlarr: "\u27F5", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrArr: "\u27F9", xrarr: "\u27F6", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", yacut: "\xFD", yacute: "\xFD", yacy: "\u044F", ycirc: "\u0177", ycy: "\u044B", ye: "\xA5", yen: "\xA5", yfr: "\u{1D536}", yicy: "\u0457", yopf: "\u{1D56A}", yscr: "\u{1D4CE}", yucy: "\u044E", yum: "\xFF", yuml: "\xFF", zacute: "\u017A", zcaron: "\u017E", zcy: "\u0437", zdot: "\u017C", zeetrf: "\u2128", zeta: "\u03B6", zfr: "\u{1D537}", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }; + } }), Hl = S({ "node_modules/parse-entities/decode-entity.js"(e, r) { + "use strict"; + I(); + var u = $l(); + r.exports = o; + var t = {}.hasOwnProperty; + function o(n) { + return t.call(u, n) ? u[n] : false; + } + } }), xr = S({ "node_modules/parse-entities/index.js"(e, r) { + "use strict"; + I(); + var u = zl(), t = Gl(), o = ze(), n = Ul(), s = Vl(), c = Hl(); + r.exports = J; + var i = {}.hasOwnProperty, D = String.fromCharCode, a = Function.prototype, l = { warning: null, reference: null, text: null, warningContext: null, referenceContext: null, textContext: null, position: {}, additional: null, attribute: false, nonTerminated: true }, p = 9, d = 10, g = 12, F = 32, E = 38, x = 59, f = 60, b = 61, v = 35, h = 88, m = 120, C = 65533, B = "named", q = "hexadecimal", L = "decimal", w = {}; + w[q] = 16, w[L] = 10; + var O = {}; + O[B] = s, O[L] = o, O[q] = n; + var T = 1, P = 2, A = 3, j = 4, $ = 5, U = 6, X = 7, R = {}; + R[T] = "Named character references must be terminated by a semicolon", R[P] = "Numeric character references must be terminated by a semicolon", R[A] = "Named character references cannot be empty", R[j] = "Numeric character references cannot be empty", R[$] = "Named character references must be known", R[U] = "Numeric character references cannot be disallowed", R[X] = "Numeric character references cannot be outside the permissible Unicode range"; + function J(k, y) { + var _ = {}, N, V; + y || (y = {}); + for (V in l) + N = y[V], _[V] = N == null ? l[V] : N; + return (_.position.indent || _.position.start) && (_.indent = _.position.indent || [], _.position = _.position.start), z(k, _); + } + function z(k, y) { + var _ = y.additional, N = y.nonTerminated, V = y.text, W = y.reference, K = y.warning, ee = y.textContext, Y = y.referenceContext, te = y.warningContext, De = y.position, le = y.indent || [], ne = k.length, Z = 0, Q = -1, fe = De.column || 1, be = De.line || 1, pe = "", he = [], oe, de, ie, re, ye, se, ae, Ce, er, br, ke, Ue, qe, Fe, Eu, Ve, rr, ge, ce; + for (typeof _ == "string" && (_ = _.charCodeAt(0)), Ve = $e(), Ce = K ? sa : a, Z--, ne++; ++Z < ne; ) + if (ye === d && (fe = le[Q] || 1), ye = k.charCodeAt(Z), ye === E) { + if (ae = k.charCodeAt(Z + 1), ae === p || ae === d || ae === g || ae === F || ae === E || ae === f || ae !== ae || _ && ae === _) { + pe += D(ye), fe++; + continue; + } + for (qe = Z + 1, Ue = qe, ce = qe, ae === v ? (ce = ++Ue, ae = k.charCodeAt(ce), ae === h || ae === m ? (Fe = q, ce = ++Ue) : Fe = L) : Fe = B, oe = "", ke = "", re = "", Eu = O[Fe], ce--; ++ce < ne && (ae = k.charCodeAt(ce), !!Eu(ae)); ) + re += D(ae), Fe === B && i.call(u, re) && (oe = re, ke = u[re]); + ie = k.charCodeAt(ce) === x, ie && (ce++, de = Fe === B ? c(re) : false, de && (oe = re, ke = de)), ge = 1 + ce - qe, !ie && !N || (re ? Fe === B ? (ie && !ke ? Ce($, 1) : (oe !== re && (ce = Ue + oe.length, ge = 1 + ce - Ue, ie = false), ie || (er = oe ? T : A, y.attribute ? (ae = k.charCodeAt(ce), ae === b ? (Ce(er, ge), ke = null) : s(ae) ? ke = null : Ce(er, ge)) : Ce(er, ge))), se = ke) : (ie || Ce(P, ge), se = parseInt(re, w[Fe]), M(se) ? (Ce(X, ge), se = D(C)) : se in t ? (Ce(U, ge), se = t[se]) : (br = "", G(se) && Ce(U, ge), se > 65535 && (se -= 65536, br += D(se >>> 10 | 55296), se = 56320 | se & 1023), se = br + D(se))) : Fe !== B && Ce(j, ge)), se ? (Cu(), Ve = $e(), Z = ce - 1, fe += ce - qe + 1, he.push(se), rr = $e(), rr.offset++, W && W.call(Y, se, { start: Ve, end: rr }, k.slice(qe - 1, ce)), Ve = rr) : (re = k.slice(qe - 1, ce), pe += re, fe += re.length, Z = ce - 1); + } else + ye === 10 && (be++, Q++, fe = 0), ye === ye ? (pe += D(ye), fe++) : Cu(); + return he.join(""); + function $e() { + return { line: be, column: fe, offset: Z + (De.offset || 0) }; + } + function sa(gu, Fu) { + var yr = $e(); + yr.column += Fu, yr.offset += Fu, K.call(te, R[gu], yr, gu); + } + function Cu() { + pe && (he.push(pe), V && V.call(ee, pe, { start: Ve, end: $e() }), pe = ""); + } + } + function M(k) { + return k >= 55296 && k <= 57343 || k > 1114111; + } + function G(k) { + return k >= 1 && k <= 8 || k === 11 || k >= 13 && k <= 31 || k >= 127 && k <= 159 || k >= 64976 && k <= 65007 || (k & 65535) === 65535 || (k & 65535) === 65534; + } + } }), Xl = S({ "node_modules/remark-parse/lib/decode.js"(e, r) { + "use strict"; + I(); + var u = Me(), t = xr(); + r.exports = o; + function o(n) { + return c.raw = i, c; + function s(a) { + for (var l = n.offset, p = a.line, d = []; ++p && p in l; ) + d.push((l[p] || 0) + 1); + return { start: a, indent: d }; + } + function c(a, l, p) { + t(a, { position: s(l), warning: D, text: p, reference: p, textContext: n, referenceContext: n }); + } + function i(a, l, p) { + return t(a, u(p, { position: s(l), warning: D })); + } + function D(a, l, p) { + p !== 3 && n.file.message(a, l); + } + } + } }), Wl = S({ "node_modules/remark-parse/lib/tokenizer.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(s) { + return c; + function c(i, D) { + var a = this, l = a.offset, p = [], d = a[s + "Methods"], g = a[s + "Tokenizers"], F = D.line, E = D.column, x, f, b, v, h, m; + if (!i) + return p; + for (P.now = q, P.file = a.file, C(""); i; ) { + for (x = -1, f = d.length, h = false; ++x < f && (v = d[x], b = g[v], !(b && (!b.onlyAtStart || a.atStart) && (!b.notInList || !a.inList) && (!b.notInBlock || !a.inBlock) && (!b.notInLink || !a.inLink) && (m = i.length, b.apply(a, [P, i]), h = m !== i.length, h))); ) + ; + h || a.file.fail(new Error("Infinite loop"), P.now()); + } + return a.eof = q(), p; + function C(A) { + for (var j = -1, $ = A.indexOf(` +`); $ !== -1; ) + F++, j = $, $ = A.indexOf(` +`, $ + 1); + j === -1 ? E += A.length : E = A.length - j, F in l && (j !== -1 ? E += l[F] : E <= l[F] && (E = l[F] + 1)); + } + function B() { + var A = [], j = F + 1; + return function() { + for (var $ = F + 1; j < $; ) + A.push((l[j] || 0) + 1), j++; + return A; + }; + } + function q() { + var A = { line: F, column: E }; + return A.offset = a.toOffset(A), A; + } + function L(A) { + this.start = A, this.end = q(); + } + function w(A) { + i.slice(0, A.length) !== A && a.file.fail(new Error("Incorrectly eaten value: please report this warning on https://git.io/vg5Ft"), q()); + } + function O() { + var A = q(); + return j; + function j($, U) { + var X = $.position, R = X ? X.start : A, J = [], z = X && X.end.line, M = A.line; + if ($.position = new L(R), X && U && X.indent) { + if (J = X.indent, z < M) { + for (; ++z < M; ) + J.push((l[z] || 0) + 1); + J.push(A.column); + } + U = J.concat(U); + } + return $.position.indent = U || [], $; + } + } + function T(A, j) { + var $ = j ? j.children : p, U = $[$.length - 1], X; + return U && A.type === U.type && (A.type === "text" || A.type === "blockquote") && t(U) && t(A) && (X = A.type === "text" ? o : n, A = X.call(a, U, A)), A !== U && $.push(A), a.atStart && p.length !== 0 && a.exitStart(), A; + } + function P(A) { + var j = B(), $ = O(), U = q(); + return w(A), X.reset = R, R.test = J, X.test = J, i = i.slice(A.length), C(A), j = j(), X; + function X(z, M) { + return $(T($(z), M), j); + } + function R() { + var z = X.apply(null, arguments); + return F = U.line, E = U.column, i = A + i, z; + } + function J() { + var z = $({}); + return F = U.line, E = U.column, i = A + i, z.position; + } + } + } + } + function t(s) { + var c, i; + return s.type !== "text" || !s.position ? true : (c = s.position.start, i = s.position.end, c.line !== i.line || i.column - c.column === s.value.length); + } + function o(s, c) { + return s.value += c.value, s; + } + function n(s, c) { + return this.options.commonmark || this.options.gfm ? c : (s.children = s.children.concat(c.children), s); + } + } }), Kl = S({ "node_modules/markdown-escapes/index.js"(e, r) { + "use strict"; + I(), r.exports = n; + var u = ["\\", "`", "*", "{", "}", "[", "]", "(", ")", "#", "+", "-", ".", "!", "_", ">"], t = u.concat(["~", "|"]), o = t.concat([` +`, '"', "$", "%", "&", "'", ",", "/", ":", ";", "<", "=", "?", "@", "^"]); + n.default = u, n.gfm = t, n.commonmark = o; + function n(s) { + var c = s || {}; + return c.commonmark ? o : c.gfm ? t : u; + } + } }), Yl = S({ "node_modules/remark-parse/lib/block-elements.js"(e, r) { + "use strict"; + I(), r.exports = ["address", "article", "aside", "base", "basefont", "blockquote", "body", "caption", "center", "col", "colgroup", "dd", "details", "dialog", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "iframe", "legend", "li", "link", "main", "menu", "menuitem", "meta", "nav", "noframes", "ol", "optgroup", "option", "p", "param", "pre", "section", "source", "title", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "title", "tr", "track", "ul"]; + } }), Pi = S({ "node_modules/remark-parse/lib/defaults.js"(e, r) { + "use strict"; + I(), r.exports = { position: true, gfm: true, commonmark: false, pedantic: false, blocks: Yl() }; + } }), Jl = S({ "node_modules/remark-parse/lib/set-options.js"(e, r) { + "use strict"; + I(); + var u = Me(), t = Kl(), o = Pi(); + r.exports = n; + function n(s) { + var c = this, i = c.options, D, a; + if (s == null) + s = {}; + else if (typeof s == "object") + s = u(s); + else + throw new Error("Invalid value `" + s + "` for setting `options`"); + for (D in o) { + if (a = s[D], a == null && (a = i[D]), D !== "blocks" && typeof a != "boolean" || D === "blocks" && typeof a != "object") + throw new Error("Invalid value `" + a + "` for setting `options." + D + "`"); + s[D] = a; + } + return c.options = s, c.escape = t(s), c; + } + } }), Zl = S({ "node_modules/unist-util-is/convert.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(c) { + if (c == null) + return s; + if (typeof c == "string") + return n(c); + if (typeof c == "object") + return "length" in c ? o(c) : t(c); + if (typeof c == "function") + return c; + throw new Error("Expected function, string, or object as test"); + } + function t(c) { + return i; + function i(D) { + var a; + for (a in c) + if (D[a] !== c[a]) + return false; + return true; + } + } + function o(c) { + for (var i = [], D = -1; ++D < c.length; ) + i[D] = u(c[D]); + return a; + function a() { + for (var l = -1; ++l < i.length; ) + if (i[l].apply(this, arguments)) + return true; + return false; + } + } + function n(c) { + return i; + function i(D) { + return Boolean(D && D.type === c); + } + } + function s() { + return true; + } + } }), Ql = S({ "node_modules/unist-util-visit-parents/color.browser.js"(e, r) { + I(), r.exports = u; + function u(t) { + return t; + } + } }), eD = S({ "node_modules/unist-util-visit-parents/index.js"(e, r) { + "use strict"; + I(), r.exports = c; + var u = Zl(), t = Ql(), o = true, n = "skip", s = false; + c.CONTINUE = o, c.SKIP = n, c.EXIT = s; + function c(D, a, l, p) { + var d, g; + typeof a == "function" && typeof l != "function" && (p = l, l = a, a = null), g = u(a), d = p ? -1 : 1, F(D, null, [])(); + function F(E, x, f) { + var b = typeof E == "object" && E !== null ? E : {}, v; + return typeof b.type == "string" && (v = typeof b.tagName == "string" ? b.tagName : typeof b.name == "string" ? b.name : void 0, h.displayName = "node (" + t(b.type + (v ? "<" + v + ">" : "")) + ")"), h; + function h() { + var m = f.concat(E), C = [], B, q; + if ((!a || g(E, x, f[f.length - 1] || null)) && (C = i(l(E, f)), C[0] === s)) + return C; + if (E.children && C[0] !== n) + for (q = (p ? E.children.length : -1) + d; q > -1 && q < E.children.length; ) { + if (B = F(E.children[q], q, m)(), B[0] === s) + return B; + q = typeof B[1] == "number" ? B[1] : q + d; + } + return C; + } + } + } + function i(D) { + return D !== null && typeof D == "object" && "length" in D ? D : typeof D == "number" ? [o, D] : [D]; + } + } }), rD = S({ "node_modules/unist-util-visit/index.js"(e, r) { + "use strict"; + I(), r.exports = s; + var u = eD(), t = u.CONTINUE, o = u.SKIP, n = u.EXIT; + s.CONTINUE = t, s.SKIP = o, s.EXIT = n; + function s(c, i, D, a) { + typeof i == "function" && typeof D != "function" && (a = D, D = i, i = null), u(c, i, l, a); + function l(p, d) { + var g = d[d.length - 1], F = g ? g.children.indexOf(p) : null; + return D(p, F, g); + } + } + } }), uD = S({ "node_modules/unist-util-remove-position/index.js"(e, r) { + "use strict"; + I(); + var u = rD(); + r.exports = t; + function t(s, c) { + return u(s, c ? o : n), s; + } + function o(s) { + delete s.position; + } + function n(s) { + s.position = void 0; + } + } }), tD = S({ "node_modules/remark-parse/lib/parse.js"(e, r) { + "use strict"; + I(); + var u = Me(), t = uD(); + r.exports = s; + var o = ` +`, n = /\r\n|\r/g; + function s() { + var c = this, i = String(c.file), D = { line: 1, column: 1, offset: 0 }, a = u(D), l; + return i = i.replace(n, o), i.charCodeAt(0) === 65279 && (i = i.slice(1), a.column++, a.offset++), l = { type: "root", children: c.tokenizeBlock(i, a), position: { start: D, end: c.eof || u(D) } }, c.options.position || t(l, true), l; + } + } }), nD = S({ "node_modules/remark-parse/lib/tokenize/blank-line.js"(e, r) { + "use strict"; + I(); + var u = /^[ \t]*(\n|$)/; + r.exports = t; + function t(o, n, s) { + for (var c, i = "", D = 0, a = n.length; D < a && (c = u.exec(n.slice(D)), c != null); ) + D += c[0].length, i += c[0]; + if (i !== "") { + if (s) + return true; + o(i); + } + } + } }), du = S({ "node_modules/repeat-string/index.js"(e, r) { + "use strict"; + I(); + var u = "", t; + r.exports = o; + function o(n, s) { + if (typeof n != "string") + throw new TypeError("expected a string"); + if (s === 1) + return n; + if (s === 2) + return n + n; + var c = n.length * s; + if (t !== n || typeof t > "u") + t = n, u = ""; + else if (u.length >= c) + return u.substr(0, c); + for (; c > u.length && s > 1; ) + s & 1 && (u += n), s >>= 1, n += n; + return u += n, u = u.substr(0, c), u; + } + } }), Mi = S({ "node_modules/trim-trailing-lines/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t) { + return String(t).replace(/\n+$/, ""); + } + } }), iD = S({ "node_modules/remark-parse/lib/tokenize/code-indented.js"(e, r) { + "use strict"; + I(); + var u = du(), t = Mi(); + r.exports = D; + var o = ` +`, n = " ", s = " ", c = 4, i = u(s, c); + function D(a, l, p) { + for (var d = -1, g = l.length, F = "", E = "", x = "", f = "", b, v, h; ++d < g; ) + if (b = l.charAt(d), h) + if (h = false, F += x, E += f, x = "", f = "", b === o) + x = b, f = b; + else + for (F += b, E += b; ++d < g; ) { + if (b = l.charAt(d), !b || b === o) { + f = b, x = b; + break; + } + F += b, E += b; + } + else if (b === s && l.charAt(d + 1) === b && l.charAt(d + 2) === b && l.charAt(d + 3) === b) + x += i, d += 3, h = true; + else if (b === n) + x += b, h = true; + else { + for (v = ""; b === n || b === s; ) + v += b, b = l.charAt(++d); + if (b !== o) + break; + x += v + b, f += b; + } + if (E) + return p ? true : a(F)({ type: "code", lang: null, meta: null, value: t(E) }); + } + } }), aD = S({ "node_modules/remark-parse/lib/tokenize/code-fenced.js"(e, r) { + "use strict"; + I(), r.exports = D; + var u = ` +`, t = " ", o = " ", n = "~", s = "`", c = 3, i = 4; + function D(a, l, p) { + var d = this, g = d.options.gfm, F = l.length + 1, E = 0, x = "", f, b, v, h, m, C, B, q, L, w, O, T, P; + if (!!g) { + for (; E < F && (v = l.charAt(E), !(v !== o && v !== t)); ) + x += v, E++; + if (T = E, v = l.charAt(E), !(v !== n && v !== s)) { + for (E++, b = v, f = 1, x += v; E < F && (v = l.charAt(E), v === b); ) + x += v, f++, E++; + if (!(f < c)) { + for (; E < F && (v = l.charAt(E), !(v !== o && v !== t)); ) + x += v, E++; + for (h = "", B = ""; E < F && (v = l.charAt(E), !(v === u || b === s && v === b)); ) + v === o || v === t ? B += v : (h += B + v, B = ""), E++; + if (v = l.charAt(E), !(v && v !== u)) { + if (p) + return true; + P = a.now(), P.column += x.length, P.offset += x.length, x += h, h = d.decode.raw(d.unescape(h), P), B && (x += B), B = "", w = "", O = "", q = "", L = ""; + for (var A = true; E < F; ) { + if (v = l.charAt(E), q += w, L += O, w = "", O = "", v !== u) { + q += v, O += v, E++; + continue; + } + for (A ? (x += v, A = false) : (w += v, O += v), B = "", E++; E < F && (v = l.charAt(E), v === o); ) + B += v, E++; + if (w += B, O += B.slice(T), !(B.length >= i)) { + for (B = ""; E < F && (v = l.charAt(E), v === b); ) + B += v, E++; + if (w += B, O += B, !(B.length < f)) { + for (B = ""; E < F && (v = l.charAt(E), !(v !== o && v !== t)); ) + w += v, O += v, E++; + if (!v || v === u) + break; + } + } + } + for (x += q + w, E = -1, F = h.length; ++E < F; ) + if (v = h.charAt(E), v === o || v === t) + m || (m = h.slice(0, E)); + else if (m) { + C = h.slice(E); + break; + } + return a(x)({ type: "code", lang: m || h || null, meta: C || null, value: L }); + } + } + } + } + } + } }), Ge = S({ "node_modules/trim/index.js"(e, r) { + I(), e = r.exports = u; + function u(t) { + return t.replace(/^\s*|\s*$/g, ""); + } + e.left = function(t) { + return t.replace(/^\s*/, ""); + }, e.right = function(t) { + return t.replace(/\s*$/, ""); + }; + } }), hu = S({ "node_modules/remark-parse/lib/util/interrupt.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o, n, s) { + for (var c = t.length, i = -1, D, a; ++i < c; ) + if (D = t[i], a = D[1] || {}, !(a.pedantic !== void 0 && a.pedantic !== n.options.pedantic) && !(a.commonmark !== void 0 && a.commonmark !== n.options.commonmark) && o[D[0]].apply(n, s)) + return true; + return false; + } + } }), oD = S({ "node_modules/remark-parse/lib/tokenize/blockquote.js"(e, r) { + "use strict"; + I(); + var u = Ge(), t = hu(); + r.exports = i; + var o = ` +`, n = " ", s = " ", c = ">"; + function i(D, a, l) { + for (var p = this, d = p.offset, g = p.blockTokenizers, F = p.interruptBlockquote, E = D.now(), x = E.line, f = a.length, b = [], v = [], h = [], m, C = 0, B, q, L, w, O, T, P, A; C < f && (B = a.charAt(C), !(B !== s && B !== n)); ) + C++; + if (a.charAt(C) === c) { + if (l) + return true; + for (C = 0; C < f; ) { + for (L = a.indexOf(o, C), T = C, P = false, L === -1 && (L = f); C < f && (B = a.charAt(C), !(B !== s && B !== n)); ) + C++; + if (a.charAt(C) === c ? (C++, P = true, a.charAt(C) === s && C++) : C = T, w = a.slice(C, L), !P && !u(w)) { + C = T; + break; + } + if (!P && (q = a.slice(C), t(F, g, p, [D, q, true]))) + break; + O = T === C ? w : a.slice(T, L), h.push(C - T), b.push(O), v.push(w), C = L + 1; + } + for (C = -1, f = h.length, m = D(b.join(o)); ++C < f; ) + d[x] = (d[x] || 0) + h[C], x++; + return A = p.enterBlock(), v = p.tokenizeBlock(v.join(o), E), A(), m({ type: "blockquote", children: v }); + } + } + } }), sD = S({ "node_modules/remark-parse/lib/tokenize/heading-atx.js"(e, r) { + "use strict"; + I(), r.exports = c; + var u = ` +`, t = " ", o = " ", n = "#", s = 6; + function c(i, D, a) { + for (var l = this, p = l.options.pedantic, d = D.length + 1, g = -1, F = i.now(), E = "", x = "", f, b, v; ++g < d; ) { + if (f = D.charAt(g), f !== o && f !== t) { + g--; + break; + } + E += f; + } + for (v = 0; ++g <= d; ) { + if (f = D.charAt(g), f !== n) { + g--; + break; + } + E += f, v++; + } + if (!(v > s) && !(!v || !p && D.charAt(g + 1) === n)) { + for (d = D.length + 1, b = ""; ++g < d; ) { + if (f = D.charAt(g), f !== o && f !== t) { + g--; + break; + } + b += f; + } + if (!(!p && b.length === 0 && f && f !== u)) { + if (a) + return true; + for (E += b, b = "", x = ""; ++g < d && (f = D.charAt(g), !(!f || f === u)); ) { + if (f !== o && f !== t && f !== n) { + x += b + f, b = ""; + continue; + } + for (; f === o || f === t; ) + b += f, f = D.charAt(++g); + if (!p && x && !b && f === n) { + x += f; + continue; + } + for (; f === n; ) + b += f, f = D.charAt(++g); + for (; f === o || f === t; ) + b += f, f = D.charAt(++g); + g--; + } + return F.column += E.length, F.offset += E.length, E += x + b, i(E)({ type: "heading", depth: v, children: l.tokenizeInline(x, F) }); + } + } + } + } }), cD = S({ "node_modules/remark-parse/lib/tokenize/thematic-break.js"(e, r) { + "use strict"; + I(), r.exports = D; + var u = " ", t = ` +`, o = " ", n = "*", s = "-", c = "_", i = 3; + function D(a, l, p) { + for (var d = -1, g = l.length + 1, F = "", E, x, f, b; ++d < g && (E = l.charAt(d), !(E !== u && E !== o)); ) + F += E; + if (!(E !== n && E !== s && E !== c)) + for (x = E, F += E, f = 1, b = ""; ++d < g; ) + if (E = l.charAt(d), E === x) + f++, F += b + x, b = ""; + else if (E === o) + b += E; + else + return f >= i && (!E || E === t) ? (F += b, p ? true : a(F)({ type: "thematicBreak" })) : void 0; + } + } }), zi = S({ "node_modules/remark-parse/lib/util/get-indentation.js"(e, r) { + "use strict"; + I(), r.exports = s; + var u = " ", t = " ", o = 1, n = 4; + function s(c) { + for (var i = 0, D = 0, a = c.charAt(i), l = {}, p, d = 0; a === u || a === t; ) { + for (p = a === u ? n : o, D += p, p > 1 && (D = Math.floor(D / p) * p); d < D; ) + l[++d] = i; + a = c.charAt(++i); + } + return { indent: D, stops: l }; + } + } }), lD = S({ "node_modules/remark-parse/lib/util/remove-indentation.js"(e, r) { + "use strict"; + I(); + var u = Ge(), t = du(), o = zi(); + r.exports = i; + var n = ` +`, s = " ", c = "!"; + function i(D, a) { + var l = D.split(n), p = l.length + 1, d = 1 / 0, g = [], F, E, x; + for (l.unshift(t(s, a) + c); p--; ) + if (E = o(l[p]), g[p] = E.stops, u(l[p]).length !== 0) + if (E.indent) + E.indent > 0 && E.indent < d && (d = E.indent); + else { + d = 1 / 0; + break; + } + if (d !== 1 / 0) + for (p = l.length; p--; ) { + for (x = g[p], F = d; F && !(F in x); ) + F--; + l[p] = l[p].slice(x[F] + 1); + } + return l.shift(), l.join(n); + } + } }), DD = S({ "node_modules/remark-parse/lib/tokenize/list.js"(e, r) { + "use strict"; + I(); + var u = Ge(), t = du(), o = ze(), n = zi(), s = lD(), c = hu(); + r.exports = B; + var i = "*", D = "_", a = "+", l = "-", p = ".", d = " ", g = ` +`, F = " ", E = ")", x = "x", f = 4, b = /\n\n(?!\s*$)/, v = /^\[([ X\tx])][ \t]/, h = /^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/, m = /^([ \t]*)([*+-]|\d+[.)])([ \t]+)/, C = /^( {1,4}|\t)?/gm; + function B(O, T, P) { + for (var A = this, j = A.options.commonmark, $ = A.options.pedantic, U = A.blockTokenizers, X = A.interruptList, R = 0, J = T.length, z = null, M, G, k, y, _, N, V, W, K, ee, Y, te, De, le, ne, Z, Q, fe, be, pe = false, he, oe, de, ie; R < J && (y = T.charAt(R), !(y !== F && y !== d)); ) + R++; + if (y = T.charAt(R), y === i || y === a || y === l) + _ = y, k = false; + else { + for (k = true, G = ""; R < J && (y = T.charAt(R), !!o(y)); ) + G += y, R++; + if (y = T.charAt(R), !G || !(y === p || j && y === E) || P && G !== "1") + return; + z = parseInt(G, 10), _ = y; + } + if (y = T.charAt(++R), !(y !== d && y !== F && ($ || y !== g && y !== ""))) { + if (P) + return true; + for (R = 0, le = [], ne = [], Z = []; R < J; ) { + for (N = T.indexOf(g, R), V = R, W = false, ie = false, N === -1 && (N = J), M = 0; R < J; ) { + if (y = T.charAt(R), y === F) + M += f - M % f; + else if (y === d) + M++; + else + break; + R++; + } + if (Q && M >= Q.indent && (ie = true), y = T.charAt(R), K = null, !ie) { + if (y === i || y === a || y === l) + K = y, R++, M++; + else { + for (G = ""; R < J && (y = T.charAt(R), !!o(y)); ) + G += y, R++; + y = T.charAt(R), R++, G && (y === p || j && y === E) && (K = y, M += G.length + 1); + } + if (K) + if (y = T.charAt(R), y === F) + M += f - M % f, R++; + else if (y === d) { + for (de = R + f; R < de && T.charAt(R) === d; ) + R++, M++; + R === de && T.charAt(R) === d && (R -= f - 1, M -= f - 1); + } else + y !== g && y !== "" && (K = null); + } + if (K) { + if (!$ && _ !== K) + break; + W = true; + } else + !j && !ie && T.charAt(V) === d ? ie = true : j && Q && (ie = M >= Q.indent || M > f), W = false, R = V; + if (Y = T.slice(V, N), ee = V === R ? Y : T.slice(R, N), (K === i || K === D || K === l) && U.thematicBreak.call(A, O, Y, true)) + break; + if (te = De, De = !W && !u(ee).length, ie && Q) + Q.value = Q.value.concat(Z, Y), ne = ne.concat(Z, Y), Z = []; + else if (W) + Z.length !== 0 && (pe = true, Q.value.push(""), Q.trail = Z.concat()), Q = { value: [Y], indent: M, trail: [] }, le.push(Q), ne = ne.concat(Z, Y), Z = []; + else if (De) { + if (te && !j) + break; + Z.push(Y); + } else { + if (te || c(X, U, A, [O, Y, true])) + break; + Q.value = Q.value.concat(Z, Y), ne = ne.concat(Z, Y), Z = []; + } + R = N + 1; + } + for (he = O(ne.join(g)).reset({ type: "list", ordered: k, start: z, spread: pe, children: [] }), fe = A.enterList(), be = A.enterBlock(), R = -1, J = le.length; ++R < J; ) + Q = le[R].value.join(g), oe = O.now(), O(Q)(q(A, Q, oe), he), Q = le[R].trail.join(g), R !== J - 1 && (Q += g), O(Q); + return fe(), be(), he; + } + } + function q(O, T, P) { + var A = O.offset, j = O.options.pedantic ? L : w, $ = null, U, X; + return T = j.apply(null, arguments), O.options.gfm && (U = T.match(v), U && (X = U[0].length, $ = U[1].toLowerCase() === x, A[P.line] += X, T = T.slice(X))), { type: "listItem", spread: b.test(T), checked: $, children: O.tokenizeBlock(T, P) }; + } + function L(O, T, P) { + var A = O.offset, j = P.line; + return T = T.replace(m, $), j = P.line, T.replace(C, $); + function $(U) { + return A[j] = (A[j] || 0) + U.length, j++, ""; + } + } + function w(O, T, P) { + var A = O.offset, j = P.line, $, U, X, R, J, z, M; + for (T = T.replace(h, G), R = T.split(g), J = s(T, n($).indent).split(g), J[0] = X, A[j] = (A[j] || 0) + U.length, j++, z = 0, M = R.length; ++z < M; ) + A[j] = (A[j] || 0) + R[z].length - J[z].length, j++; + return J.join(g); + function G(k, y, _, N, V) { + return U = y + _ + N, X = V, Number(_) < 10 && U.length % 2 === 1 && (_ = d + _), $ = y + t(d, _.length) + N, $ + X; + } + } + } }), fD = S({ "node_modules/remark-parse/lib/tokenize/heading-setext.js"(e, r) { + "use strict"; + I(), r.exports = a; + var u = ` +`, t = " ", o = " ", n = "=", s = "-", c = 3, i = 1, D = 2; + function a(l, p, d) { + for (var g = this, F = l.now(), E = p.length, x = -1, f = "", b, v, h, m, C; ++x < E; ) { + if (h = p.charAt(x), h !== o || x >= c) { + x--; + break; + } + f += h; + } + for (b = "", v = ""; ++x < E; ) { + if (h = p.charAt(x), h === u) { + x--; + break; + } + h === o || h === t ? v += h : (b += v + h, v = ""); + } + if (F.column += f.length, F.offset += f.length, f += b + v, h = p.charAt(++x), m = p.charAt(++x), !(h !== u || m !== n && m !== s)) { + for (f += h, v = m, C = m === n ? i : D; ++x < E; ) { + if (h = p.charAt(x), h !== m) { + if (h !== u) + return; + x--; + break; + } + v += h; + } + return d ? true : l(f + v)({ type: "heading", depth: C, children: g.tokenizeInline(b, F) }); + } + } + } }), Gi = S({ "node_modules/remark-parse/lib/util/html.js"(e) { + "use strict"; + I(); + var r = "[a-zA-Z_:][a-zA-Z0-9:._-]*", u = "[^\"'=<>`\\u0000-\\u0020]+", t = "'[^']*'", o = '"[^"]*"', n = "(?:" + u + "|" + t + "|" + o + ")", s = "(?:\\s+" + r + "(?:\\s*=\\s*" + n + ")?)", c = "<[A-Za-z][A-Za-z0-9\\-]*" + s + "*\\s*\\/?>", i = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>", D = "|", a = "<[?].*?[?]>", l = "]*>", p = ""; + e.openCloseTag = new RegExp("^(?:" + c + "|" + i + ")"), e.tag = new RegExp("^(?:" + c + "|" + i + "|" + D + "|" + a + "|" + l + "|" + p + ")"); + } }), pD = S({ "node_modules/remark-parse/lib/tokenize/html-block.js"(e, r) { + "use strict"; + I(); + var u = Gi().openCloseTag; + r.exports = b; + var t = " ", o = " ", n = ` +`, s = "<", c = /^<(script|pre|style)(?=(\s|>|$))/i, i = /<\/(script|pre|style)>/i, D = /^/, l = /^<\?/, p = /\?>/, d = /^/, F = /^/, x = /^$/, f = new RegExp(u.source + "\\s*$"); + function b(v, h, m) { + for (var C = this, B = C.options.blocks.join("|"), q = new RegExp("^|$))", "i"), L = h.length, w = 0, O, T, P, A, j, $, U, X = [[c, i, true], [D, a, true], [l, p, true], [d, g, true], [F, E, true], [q, x, true], [f, x, false]]; w < L && (A = h.charAt(w), !(A !== t && A !== o)); ) + w++; + if (h.charAt(w) === s) { + for (O = h.indexOf(n, w + 1), O = O === -1 ? L : O, T = h.slice(w, O), P = -1, j = X.length; ++P < j; ) + if (X[P][0].test(T)) { + $ = X[P]; + break; + } + if (!!$) { + if (m) + return $[2]; + if (w = O, !$[1].test(T)) + for (; w < L; ) { + if (O = h.indexOf(n, w + 1), O = O === -1 ? L : O, T = h.slice(w + 1, O), $[1].test(T)) { + T && (w = O); + break; + } + w = O; + } + return U = h.slice(0, w), v(U)({ type: "html", value: U }); + } + } + } + } }), xe = S({ "node_modules/is-whitespace-character/index.js"(e, r) { + "use strict"; + I(), r.exports = o; + var u = String.fromCharCode, t = /\s/; + function o(n) { + return t.test(typeof n == "number" ? u(n) : n.charAt(0)); + } + } }), dD = S({ "node_modules/collapse-white-space/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t) { + return String(t).replace(/\s+/g, " "); + } + } }), Ui = S({ "node_modules/remark-parse/lib/util/normalize.js"(e, r) { + "use strict"; + I(); + var u = dD(); + r.exports = t; + function t(o) { + return u(o).toLowerCase(); + } + } }), hD = S({ "node_modules/remark-parse/lib/tokenize/definition.js"(e, r) { + "use strict"; + I(); + var u = xe(), t = Ui(); + r.exports = x; + var o = '"', n = "'", s = "\\", c = ` +`, i = " ", D = " ", a = "[", l = "]", p = "(", d = ")", g = ":", F = "<", E = ">"; + function x(v, h, m) { + for (var C = this, B = C.options.commonmark, q = 0, L = h.length, w = "", O, T, P, A, j, $, U, X; q < L && (A = h.charAt(q), !(A !== D && A !== i)); ) + w += A, q++; + if (A = h.charAt(q), A === a) { + for (q++, w += A, P = ""; q < L && (A = h.charAt(q), A !== l); ) + A === s && (P += A, q++, A = h.charAt(q)), P += A, q++; + if (!(!P || h.charAt(q) !== l || h.charAt(q + 1) !== g)) { + for ($ = P, w += P + l + g, q = w.length, P = ""; q < L && (A = h.charAt(q), !(A !== i && A !== D && A !== c)); ) + w += A, q++; + if (A = h.charAt(q), P = "", O = w, A === F) { + for (q++; q < L && (A = h.charAt(q), !!f(A)); ) + P += A, q++; + if (A = h.charAt(q), A === f.delimiter) + w += F + P + A, q++; + else { + if (B) + return; + q -= P.length + 1, P = ""; + } + } + if (!P) { + for (; q < L && (A = h.charAt(q), !!b(A)); ) + P += A, q++; + w += P; + } + if (!!P) { + for (U = P, P = ""; q < L && (A = h.charAt(q), !(A !== i && A !== D && A !== c)); ) + P += A, q++; + if (A = h.charAt(q), j = null, A === o ? j = o : A === n ? j = n : A === p && (j = d), !j) + P = "", q = w.length; + else if (P) { + for (w += P + A, q = w.length, P = ""; q < L && (A = h.charAt(q), A !== j); ) { + if (A === c) { + if (q++, A = h.charAt(q), A === c || A === j) + return; + P += c; + } + P += A, q++; + } + if (A = h.charAt(q), A !== j) + return; + T = w, w += P + A, q++, X = P, P = ""; + } else + return; + for (; q < L && (A = h.charAt(q), !(A !== i && A !== D)); ) + w += A, q++; + if (A = h.charAt(q), !A || A === c) + return m ? true : (O = v(O).test().end, U = C.decode.raw(C.unescape(U), O, { nonTerminated: false }), X && (T = v(T).test().end, X = C.decode.raw(C.unescape(X), T)), v(w)({ type: "definition", identifier: t($), label: $, title: X || null, url: U })); + } + } + } + } + function f(v) { + return v !== E && v !== a && v !== l; + } + f.delimiter = E; + function b(v) { + return v !== a && v !== l && !u(v); + } + } }), vD = S({ "node_modules/remark-parse/lib/tokenize/table.js"(e, r) { + "use strict"; + I(); + var u = xe(); + r.exports = F; + var t = " ", o = ` +`, n = " ", s = "-", c = ":", i = "\\", D = "|", a = 1, l = 2, p = "left", d = "center", g = "right"; + function F(E, x, f) { + var b = this, v, h, m, C, B, q, L, w, O, T, P, A, j, $, U, X, R, J, z, M, G, k; + if (!!b.options.gfm) { + for (v = 0, X = 0, q = x.length + 1, L = []; v < q; ) { + if (M = x.indexOf(o, v), G = x.indexOf(D, v + 1), M === -1 && (M = x.length), G === -1 || G > M) { + if (X < l) + return; + break; + } + L.push(x.slice(v, M)), X++, v = M + 1; + } + for (C = L.join(o), h = L.splice(1, 1)[0] || [], v = 0, q = h.length, X--, m = false, P = []; v < q; ) { + if (O = h.charAt(v), O === D) { + if (T = null, m === false) { + if (k === false) + return; + } else + P.push(m), m = false; + k = false; + } else if (O === s) + T = true, m = m || null; + else if (O === c) + m === p ? m = d : T && m === null ? m = g : m = p; + else if (!u(O)) + return; + v++; + } + if (m !== false && P.push(m), !(P.length < a)) { + if (f) + return true; + for (U = -1, J = [], z = E(C).reset({ type: "table", align: P, children: J }); ++U < X; ) { + for (R = L[U], B = { type: "tableRow", children: [] }, U && E(o), E(R).reset(B, z), q = R.length + 1, v = 0, w = "", A = "", j = true; v < q; ) { + if (O = R.charAt(v), O === t || O === n) { + A ? w += O : E(O), v++; + continue; + } + O === "" || O === D ? j ? E(O) : ((A || O) && !j && (C = A, w.length > 1 && (O ? (C += w.slice(0, -1), w = w.charAt(w.length - 1)) : (C += w, w = "")), $ = E.now(), E(C)({ type: "tableCell", children: b.tokenizeInline(A, $) }, B)), E(w + O), w = "", A = "") : (w && (A += w, w = ""), A += O, O === i && v !== q - 2 && (A += R.charAt(v + 1), v++)), j = false, v++; + } + U || E(o + h); + } + return z; + } + } + } + } }), mD = S({ "node_modules/remark-parse/lib/tokenize/paragraph.js"(e, r) { + "use strict"; + I(); + var u = Ge(), t = Mi(), o = hu(); + r.exports = D; + var n = " ", s = ` +`, c = " ", i = 4; + function D(a, l, p) { + for (var d = this, g = d.options, F = g.commonmark, E = d.blockTokenizers, x = d.interruptParagraph, f = l.indexOf(s), b = l.length, v, h, m, C, B; f < b; ) { + if (f === -1) { + f = b; + break; + } + if (l.charAt(f + 1) === s) + break; + if (F) { + for (C = 0, v = f + 1; v < b; ) { + if (m = l.charAt(v), m === n) { + C = i; + break; + } else if (m === c) + C++; + else + break; + v++; + } + if (C >= i && m !== s) { + f = l.indexOf(s, f + 1); + continue; + } + } + if (h = l.slice(f + 1), o(x, E, d, [a, h, true])) + break; + if (v = f, f = l.indexOf(s, f + 1), f !== -1 && u(l.slice(v, f)) === "") { + f = v; + break; + } + } + return h = l.slice(0, f), p ? true : (B = a.now(), h = t(h), a(h)({ type: "paragraph", children: d.tokenizeInline(h, B) })); + } + } }), ED = S({ "node_modules/remark-parse/lib/locate/escape.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + return t.indexOf("\\", o); + } + } }), CD = S({ "node_modules/remark-parse/lib/tokenize/escape.js"(e, r) { + "use strict"; + I(); + var u = ED(); + r.exports = n, n.locator = u; + var t = ` +`, o = "\\"; + function n(s, c, i) { + var D = this, a, l; + if (c.charAt(0) === o && (a = c.charAt(1), D.escape.indexOf(a) !== -1)) + return i ? true : (a === t ? l = { type: "break" } : l = { type: "text", value: a }, s(o + a)(l)); + } + } }), Vi = S({ "node_modules/remark-parse/lib/locate/tag.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + return t.indexOf("<", o); + } + } }), gD = S({ "node_modules/remark-parse/lib/tokenize/auto-link.js"(e, r) { + "use strict"; + I(); + var u = xe(), t = xr(), o = Vi(); + r.exports = l, l.locator = o, l.notInLink = true; + var n = "<", s = ">", c = "@", i = "/", D = "mailto:", a = D.length; + function l(p, d, g) { + var F = this, E = "", x = d.length, f = 0, b = "", v = false, h = "", m, C, B, q, L; + if (d.charAt(0) === n) { + for (f++, E = n; f < x && (m = d.charAt(f), !(u(m) || m === s || m === c || m === ":" && d.charAt(f + 1) === i)); ) + b += m, f++; + if (!!b) { + if (h += b, b = "", m = d.charAt(f), h += m, f++, m === c) + v = true; + else { + if (m !== ":" || d.charAt(f + 1) !== i) + return; + h += i, f++; + } + for (; f < x && (m = d.charAt(f), !(u(m) || m === s)); ) + b += m, f++; + if (m = d.charAt(f), !(!b || m !== s)) + return g ? true : (h += b, B = h, E += h + m, C = p.now(), C.column++, C.offset++, v && (h.slice(0, a).toLowerCase() === D ? (B = B.slice(a), C.column += a, C.offset += a) : h = D + h), q = F.inlineTokenizers, F.inlineTokenizers = { text: q.text }, L = F.enterLink(), B = F.tokenizeInline(B, C), F.inlineTokenizers = q, L(), p(E)({ type: "link", title: null, url: t(h, { nonTerminated: false }), children: B })); + } + } + } + } }), FD = S({ "node_modules/ccount/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + var n = String(t), s = 0, c; + if (typeof o != "string") + throw new Error("Expected character"); + for (c = n.indexOf(o); c !== -1; ) + s++, c = n.indexOf(o, c + o.length); + return s; + } + } }), AD = S({ "node_modules/remark-parse/lib/locate/url.js"(e, r) { + "use strict"; + I(), r.exports = t; + var u = ["www.", "http://", "https://"]; + function t(o, n) { + var s = -1, c, i, D; + if (!this.options.gfm) + return s; + for (i = u.length, c = -1; ++c < i; ) + D = o.indexOf(u[c], n), D !== -1 && (s === -1 || D < s) && (s = D); + return s; + } + } }), xD = S({ "node_modules/remark-parse/lib/tokenize/url.js"(e, r) { + "use strict"; + I(); + var u = FD(), t = xr(), o = ze(), n = Qe(), s = xe(), c = AD(); + r.exports = C, C.locator = c, C.notInLink = true; + var i = 33, D = 38, a = 41, l = 42, p = 44, d = 45, g = 46, F = 58, E = 59, x = 63, f = 60, b = 95, v = 126, h = "(", m = ")"; + function C(B, q, L) { + var w = this, O = w.options.gfm, T = w.inlineTokenizers, P = q.length, A = -1, j = false, $, U, X, R, J, z, M, G, k, y, _, N, V, W; + if (!!O) { + if (q.slice(0, 4) === "www.") + j = true, R = 4; + else if (q.slice(0, 7).toLowerCase() === "http://") + R = 7; + else if (q.slice(0, 8).toLowerCase() === "https://") + R = 8; + else + return; + for (A = R - 1, X = R, $ = []; R < P; ) { + if (M = q.charCodeAt(R), M === g) { + if (A === R - 1) + break; + $.push(R), A = R, R++; + continue; + } + if (o(M) || n(M) || M === d || M === b) { + R++; + continue; + } + break; + } + if (M === g && ($.pop(), R--), $[0] !== void 0 && (U = $.length < 2 ? X : $[$.length - 2] + 1, q.slice(U, R).indexOf("_") === -1)) { + if (L) + return true; + for (G = R, J = R; R < P && (M = q.charCodeAt(R), !(s(M) || M === f)); ) + R++, M === i || M === l || M === p || M === g || M === F || M === x || M === b || M === v || (G = R); + if (R = G, q.charCodeAt(R - 1) === a) + for (z = q.slice(J, R), k = u(z, h), y = u(z, m); y > k; ) + R = J + z.lastIndexOf(m), z = q.slice(J, R), y--; + if (q.charCodeAt(R - 1) === E && (R--, n(q.charCodeAt(R - 1)))) { + for (G = R - 2; n(q.charCodeAt(G)); ) + G--; + q.charCodeAt(G) === D && (R = G); + } + return _ = q.slice(0, R), V = t(_, { nonTerminated: false }), j && (V = "http://" + V), W = w.enterLink(), w.inlineTokenizers = { text: T.text }, N = w.tokenizeInline(_, B.now()), w.inlineTokenizers = T, W(), B(_)({ type: "link", title: null, url: V, children: N }); + } + } + } + } }), bD = S({ "node_modules/remark-parse/lib/locate/email.js"(e, r) { + "use strict"; + I(); + var u = ze(), t = Qe(), o = 43, n = 45, s = 46, c = 95; + r.exports = i; + function i(a, l) { + var p = this, d, g; + if (!this.options.gfm || (d = a.indexOf("@", l), d === -1)) + return -1; + if (g = d, g === l || !D(a.charCodeAt(g - 1))) + return i.call(p, a, d + 1); + for (; g > l && D(a.charCodeAt(g - 1)); ) + g--; + return g; + } + function D(a) { + return u(a) || t(a) || a === o || a === n || a === s || a === c; + } + } }), yD = S({ "node_modules/remark-parse/lib/tokenize/email.js"(e, r) { + "use strict"; + I(); + var u = xr(), t = ze(), o = Qe(), n = bD(); + r.exports = l, l.locator = n, l.notInLink = true; + var s = 43, c = 45, i = 46, D = 64, a = 95; + function l(p, d, g) { + var F = this, E = F.options.gfm, x = F.inlineTokenizers, f = 0, b = d.length, v = -1, h, m, C, B; + if (!!E) { + for (h = d.charCodeAt(f); t(h) || o(h) || h === s || h === c || h === i || h === a; ) + h = d.charCodeAt(++f); + if (f !== 0 && h === D) { + for (f++; f < b; ) { + if (h = d.charCodeAt(f), t(h) || o(h) || h === c || h === i || h === a) { + f++, v === -1 && h === i && (v = f); + continue; + } + break; + } + if (!(v === -1 || v === f || h === c || h === a)) + return h === i && f--, m = d.slice(0, f), g ? true : (B = F.enterLink(), F.inlineTokenizers = { text: x.text }, C = F.tokenizeInline(m, p.now()), F.inlineTokenizers = x, B(), p(m)({ type: "link", title: null, url: "mailto:" + u(m, { nonTerminated: false }), children: C })); + } + } + } + } }), BD = S({ "node_modules/remark-parse/lib/tokenize/html-inline.js"(e, r) { + "use strict"; + I(); + var u = Qe(), t = Vi(), o = Gi().tag; + r.exports = l, l.locator = t; + var n = "<", s = "?", c = "!", i = "/", D = /^/i; + function l(p, d, g) { + var F = this, E = d.length, x, f; + if (!(d.charAt(0) !== n || E < 3) && (x = d.charAt(1), !(!u(x) && x !== s && x !== c && x !== i) && (f = d.match(o), !!f))) + return g ? true : (f = f[0], !F.inLink && D.test(f) ? F.inLink = true : F.inLink && a.test(f) && (F.inLink = false), p(f)({ type: "html", value: f })); + } + } }), $i = S({ "node_modules/remark-parse/lib/locate/link.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + var n = t.indexOf("[", o), s = t.indexOf("![", o); + return s === -1 || n < s ? n : s; + } + } }), wD = S({ "node_modules/remark-parse/lib/tokenize/link.js"(e, r) { + "use strict"; + I(); + var u = xe(), t = $i(); + r.exports = E, E.locator = t; + var o = ` +`, n = "!", s = '"', c = "'", i = "(", D = ")", a = "<", l = ">", p = "[", d = "\\", g = "]", F = "`"; + function E(x, f, b) { + var v = this, h = "", m = 0, C = f.charAt(0), B = v.options.pedantic, q = v.options.commonmark, L = v.options.gfm, w, O, T, P, A, j, $, U, X, R, J, z, M, G, k, y, _, N; + if (C === n && (U = true, h = C, C = f.charAt(++m)), C === p && !(!U && v.inLink)) { + for (h += C, G = "", m++, J = f.length, y = x.now(), M = 0, y.column += m, y.offset += m; m < J; ) { + if (C = f.charAt(m), j = C, C === F) { + for (O = 1; f.charAt(m + 1) === F; ) + j += C, m++, O++; + T ? O >= T && (T = 0) : T = O; + } else if (C === d) + m++, j += f.charAt(m); + else if ((!T || L) && C === p) + M++; + else if ((!T || L) && C === g) + if (M) + M--; + else { + if (f.charAt(m + 1) !== i) + return; + j += i, w = true, m++; + break; + } + G += j, j = "", m++; + } + if (!!w) { + for (X = G, h += G + j, m++; m < J && (C = f.charAt(m), !!u(C)); ) + h += C, m++; + if (C = f.charAt(m), G = "", P = h, C === a) { + for (m++, P += a; m < J && (C = f.charAt(m), C !== l); ) { + if (q && C === o) + return; + G += C, m++; + } + if (f.charAt(m) !== l) + return; + h += a + G + l, k = G, m++; + } else { + for (C = null, j = ""; m < J && (C = f.charAt(m), !(j && (C === s || C === c || q && C === i))); ) { + if (u(C)) { + if (!B) + break; + j += C; + } else { + if (C === i) + M++; + else if (C === D) { + if (M === 0) + break; + M--; + } + G += j, j = "", C === d && (G += d, C = f.charAt(++m)), G += C; + } + m++; + } + h += G, k = G, m = h.length; + } + for (G = ""; m < J && (C = f.charAt(m), !!u(C)); ) + G += C, m++; + if (C = f.charAt(m), h += G, G && (C === s || C === c || q && C === i)) + if (m++, h += C, G = "", R = C === i ? D : C, A = h, q) { + for (; m < J && (C = f.charAt(m), C !== R); ) + C === d && (G += d, C = f.charAt(++m)), m++, G += C; + if (C = f.charAt(m), C !== R) + return; + for (z = G, h += G + C, m++; m < J && (C = f.charAt(m), !!u(C)); ) + h += C, m++; + } else + for (j = ""; m < J; ) { + if (C = f.charAt(m), C === R) + $ && (G += R + j, j = ""), $ = true; + else if (!$) + G += C; + else if (C === D) { + h += G + R + j, z = G; + break; + } else + u(C) ? j += C : (G += R + j + C, j = "", $ = false); + m++; + } + if (f.charAt(m) === D) + return b ? true : (h += D, k = v.decode.raw(v.unescape(k), x(P).test().end, { nonTerminated: false }), z && (A = x(A).test().end, z = v.decode.raw(v.unescape(z), A)), N = { type: U ? "image" : "link", title: z || null, url: k }, U ? N.alt = v.decode.raw(v.unescape(X), y) || null : (_ = v.enterLink(), N.children = v.tokenizeInline(X, y), _()), x(h)(N)); + } + } + } + } }), kD = S({ "node_modules/remark-parse/lib/tokenize/reference.js"(e, r) { + "use strict"; + I(); + var u = xe(), t = $i(), o = Ui(); + r.exports = g, g.locator = t; + var n = "link", s = "image", c = "shortcut", i = "collapsed", D = "full", a = "!", l = "[", p = "\\", d = "]"; + function g(F, E, x) { + var f = this, b = f.options.commonmark, v = E.charAt(0), h = 0, m = E.length, C = "", B = "", q = n, L = c, w, O, T, P, A, j, $, U; + if (v === a && (q = s, B = v, v = E.charAt(++h)), v === l) { + for (h++, B += v, j = "", U = 0; h < m; ) { + if (v = E.charAt(h), v === l) + $ = true, U++; + else if (v === d) { + if (!U) + break; + U--; + } + v === p && (j += p, v = E.charAt(++h)), j += v, h++; + } + if (C = j, w = j, v = E.charAt(h), v === d) { + if (h++, C += v, j = "", !b) + for (; h < m && (v = E.charAt(h), !!u(v)); ) + j += v, h++; + if (v = E.charAt(h), v === l) { + for (O = "", j += v, h++; h < m && (v = E.charAt(h), !(v === l || v === d)); ) + v === p && (O += p, v = E.charAt(++h)), O += v, h++; + v = E.charAt(h), v === d ? (L = O ? D : i, j += O + v, h++) : O = "", C += j, j = ""; + } else { + if (!w) + return; + O = w; + } + if (!(L !== D && $)) + return C = B + C, q === n && f.inLink ? null : x ? true : (T = F.now(), T.column += B.length, T.offset += B.length, O = L === D ? O : w, P = { type: q + "Reference", identifier: o(O), label: O, referenceType: L }, q === n ? (A = f.enterLink(), P.children = f.tokenizeInline(w, T), A()) : P.alt = f.decode.raw(f.unescape(w), T) || null, F(C)(P)); + } + } + } + } }), qD = S({ "node_modules/remark-parse/lib/locate/strong.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + var n = t.indexOf("**", o), s = t.indexOf("__", o); + return s === -1 ? n : n === -1 || s < n ? s : n; + } + } }), _D = S({ "node_modules/remark-parse/lib/tokenize/strong.js"(e, r) { + "use strict"; + I(); + var u = Ge(), t = xe(), o = qD(); + r.exports = i, i.locator = o; + var n = "\\", s = "*", c = "_"; + function i(D, a, l) { + var p = this, d = 0, g = a.charAt(d), F, E, x, f, b, v, h; + if (!(g !== s && g !== c || a.charAt(++d) !== g) && (E = p.options.pedantic, x = g, b = x + x, v = a.length, d++, f = "", g = "", !(E && t(a.charAt(d))))) + for (; d < v; ) { + if (h = g, g = a.charAt(d), g === x && a.charAt(d + 1) === x && (!E || !t(h)) && (g = a.charAt(d + 2), g !== x)) + return u(f) ? l ? true : (F = D.now(), F.column += 2, F.offset += 2, D(b + f + b)({ type: "strong", children: p.tokenizeInline(f, F) })) : void 0; + !E && g === n && (f += g, g = a.charAt(++d)), f += g, d++; + } + } + } }), OD = S({ "node_modules/is-word-character/index.js"(e, r) { + "use strict"; + I(), r.exports = o; + var u = String.fromCharCode, t = /\w/; + function o(n) { + return t.test(typeof n == "number" ? u(n) : n.charAt(0)); + } + } }), ID = S({ "node_modules/remark-parse/lib/locate/emphasis.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + var n = t.indexOf("*", o), s = t.indexOf("_", o); + return s === -1 ? n : n === -1 || s < n ? s : n; + } + } }), SD = S({ "node_modules/remark-parse/lib/tokenize/emphasis.js"(e, r) { + "use strict"; + I(); + var u = Ge(), t = OD(), o = xe(), n = ID(); + r.exports = D, D.locator = n; + var s = "*", c = "_", i = "\\"; + function D(a, l, p) { + var d = this, g = 0, F = l.charAt(g), E, x, f, b, v, h, m; + if (!(F !== s && F !== c) && (x = d.options.pedantic, v = F, f = F, h = l.length, g++, b = "", F = "", !(x && o(l.charAt(g))))) + for (; g < h; ) { + if (m = F, F = l.charAt(g), F === f && (!x || !o(m))) { + if (F = l.charAt(++g), F !== f) { + if (!u(b) || m === f) + return; + if (!x && f === c && t(F)) { + b += f; + continue; + } + return p ? true : (E = a.now(), E.column++, E.offset++, a(v + b + f)({ type: "emphasis", children: d.tokenizeInline(b, E) })); + } + b += f; + } + !x && F === i && (b += F, F = l.charAt(++g)), b += F, g++; + } + } + } }), TD = S({ "node_modules/remark-parse/lib/locate/delete.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + return t.indexOf("~~", o); + } + } }), ND = S({ "node_modules/remark-parse/lib/tokenize/delete.js"(e, r) { + "use strict"; + I(); + var u = xe(), t = TD(); + r.exports = s, s.locator = t; + var o = "~", n = "~~"; + function s(c, i, D) { + var a = this, l = "", p = "", d = "", g = "", F, E, x; + if (!(!a.options.gfm || i.charAt(0) !== o || i.charAt(1) !== o || u(i.charAt(2)))) + for (F = 1, E = i.length, x = c.now(), x.column += 2, x.offset += 2; ++F < E; ) { + if (l = i.charAt(F), l === o && p === o && (!d || !u(d))) + return D ? true : c(n + g + n)({ type: "delete", children: a.tokenizeInline(g, x) }); + g += p, d = p, p = l; + } + } + } }), LD = S({ "node_modules/remark-parse/lib/locate/code-inline.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + return t.indexOf("`", o); + } + } }), RD = S({ "node_modules/remark-parse/lib/tokenize/code-inline.js"(e, r) { + "use strict"; + I(); + var u = LD(); + r.exports = s, s.locator = u; + var t = 10, o = 32, n = 96; + function s(c, i, D) { + for (var a = i.length, l = 0, p, d, g, F, E, x; l < a && i.charCodeAt(l) === n; ) + l++; + if (!(l === 0 || l === a)) { + for (p = l, E = i.charCodeAt(l); l < a; ) { + if (F = E, E = i.charCodeAt(l + 1), F === n) { + if (d === void 0 && (d = l), g = l + 1, E !== n && g - d === p) { + x = true; + break; + } + } else + d !== void 0 && (d = void 0, g = void 0); + l++; + } + if (!!x) { + if (D) + return true; + if (l = p, a = d, F = i.charCodeAt(l), E = i.charCodeAt(a - 1), x = false, a - l > 2 && (F === o || F === t) && (E === o || E === t)) { + for (l++, a--; l < a; ) { + if (F = i.charCodeAt(l), F !== o && F !== t) { + x = true; + break; + } + l++; + } + x === true && (p++, d--); + } + return c(i.slice(0, g))({ type: "inlineCode", value: i.slice(p, d) }); + } + } + } + } }), jD = S({ "node_modules/remark-parse/lib/locate/break.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o) { + for (var n = t.indexOf(` +`, o); n > o && t.charAt(n - 1) === " "; ) + n--; + return n; + } + } }), PD = S({ "node_modules/remark-parse/lib/tokenize/break.js"(e, r) { + "use strict"; + I(); + var u = jD(); + r.exports = s, s.locator = u; + var t = " ", o = ` +`, n = 2; + function s(c, i, D) { + for (var a = i.length, l = -1, p = "", d; ++l < a; ) { + if (d = i.charAt(l), d === o) + return l < n ? void 0 : D ? true : (p += d, c(p)({ type: "break" })); + if (d !== t) + return; + p += d; + } + } + } }), MD = S({ "node_modules/remark-parse/lib/tokenize/text.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t, o, n) { + var s = this, c, i, D, a, l, p, d, g, F, E; + if (n) + return true; + for (c = s.inlineMethods, a = c.length, i = s.inlineTokenizers, D = -1, F = o.length; ++D < a; ) + g = c[D], !(g === "text" || !i[g]) && (d = i[g].locator, d || t.file.fail("Missing locator: `" + g + "`"), p = d.call(s, o, 1), p !== -1 && p < F && (F = p)); + l = o.slice(0, F), E = t.now(), s.decode(l, E, x); + function x(f, b, v) { + t(v || f)({ type: "text", value: f }); + } + } + } }), zD = S({ "node_modules/remark-parse/lib/parser.js"(e, r) { + "use strict"; + I(); + var u = Me(), t = jl(), o = Pl(), n = Ml(), s = Xl(), c = Wl(); + r.exports = i; + function i(l, p) { + this.file = p, this.offset = {}, this.options = u(this.options), this.setOptions({}), this.inList = false, this.inBlock = false, this.inLink = false, this.atStart = true, this.toOffset = o(p).toOffset, this.unescape = n(this, "escape"), this.decode = s(this); + } + var D = i.prototype; + D.setOptions = Jl(), D.parse = tD(), D.options = Pi(), D.exitStart = t("atStart", true), D.enterList = t("inList", false), D.enterLink = t("inLink", false), D.enterBlock = t("inBlock", false), D.interruptParagraph = [["thematicBreak"], ["list"], ["atxHeading"], ["fencedCode"], ["blockquote"], ["html"], ["setextHeading", { commonmark: false }], ["definition", { commonmark: false }]], D.interruptList = [["atxHeading", { pedantic: false }], ["fencedCode", { pedantic: false }], ["thematicBreak", { pedantic: false }], ["definition", { commonmark: false }]], D.interruptBlockquote = [["indentedCode", { commonmark: true }], ["fencedCode", { commonmark: true }], ["atxHeading", { commonmark: true }], ["setextHeading", { commonmark: true }], ["thematicBreak", { commonmark: true }], ["html", { commonmark: true }], ["list", { commonmark: true }], ["definition", { commonmark: false }]], D.blockTokenizers = { blankLine: nD(), indentedCode: iD(), fencedCode: aD(), blockquote: oD(), atxHeading: sD(), thematicBreak: cD(), list: DD(), setextHeading: fD(), html: pD(), definition: hD(), table: vD(), paragraph: mD() }, D.inlineTokenizers = { escape: CD(), autoLink: gD(), url: xD(), email: yD(), html: BD(), link: wD(), reference: kD(), strong: _D(), emphasis: SD(), deletion: ND(), code: RD(), break: PD(), text: MD() }, D.blockMethods = a(D.blockTokenizers), D.inlineMethods = a(D.inlineTokenizers), D.tokenizeBlock = c("block"), D.tokenizeInline = c("inline"), D.tokenizeFactory = c; + function a(l) { + var p = [], d; + for (d in l) + p.push(d); + return p; + } + } }), GD = S({ "node_modules/remark-parse/index.js"(e, r) { + "use strict"; + I(); + var u = Rl(), t = Me(), o = zD(); + r.exports = n, n.Parser = o; + function n(s) { + var c = this.data("settings"), i = u(o); + i.prototype.options = t(i.prototype.options, c, s), this.Parser = i; + } + } }), UD = S({ "node_modules/bail/index.js"(e, r) { + "use strict"; + I(), r.exports = u; + function u(t) { + if (t) + throw t; + } + } }), Hi = S({ "node_modules/is-buffer/index.js"(e, r) { + I(), r.exports = function(t) { + return t != null && t.constructor != null && typeof t.constructor.isBuffer == "function" && t.constructor.isBuffer(t); + }; + } }), VD = S({ "node_modules/extend/index.js"(e, r) { + "use strict"; + I(); + var u = Object.prototype.hasOwnProperty, t = Object.prototype.toString, o = Object.defineProperty, n = Object.getOwnPropertyDescriptor, s = function(l) { + return typeof Array.isArray == "function" ? Array.isArray(l) : t.call(l) === "[object Array]"; + }, c = function(l) { + if (!l || t.call(l) !== "[object Object]") + return false; + var p = u.call(l, "constructor"), d = l.constructor && l.constructor.prototype && u.call(l.constructor.prototype, "isPrototypeOf"); + if (l.constructor && !p && !d) + return false; + var g; + for (g in l) + ; + return typeof g > "u" || u.call(l, g); + }, i = function(l, p) { + o && p.name === "__proto__" ? o(l, p.name, { enumerable: true, configurable: true, value: p.newValue, writable: true }) : l[p.name] = p.newValue; + }, D = function(l, p) { + if (p === "__proto__") + if (u.call(l, p)) { + if (n) + return n(l, p).value; + } else + return; + return l[p]; + }; + r.exports = function a() { + var l, p, d, g, F, E, x = arguments[0], f = 1, b = arguments.length, v = false; + for (typeof x == "boolean" && (v = x, x = arguments[1] || {}, f = 2), (x == null || typeof x != "object" && typeof x != "function") && (x = {}); f < b; ++f) + if (l = arguments[f], l != null) + for (p in l) + d = D(x, p), g = D(l, p), x !== g && (v && g && (c(g) || (F = s(g))) ? (F ? (F = false, E = d && s(d) ? d : []) : E = d && c(d) ? d : {}, i(x, { name: p, newValue: a(v, E, g) })) : typeof g < "u" && i(x, { name: p, newValue: g })); + return x; + }; + } }), $D = S({ "node_modules/is-plain-obj/index.js"(e, r) { + "use strict"; + I(), r.exports = (u) => { + if (Object.prototype.toString.call(u) !== "[object Object]") + return false; + let t = Object.getPrototypeOf(u); + return t === null || t === Object.prototype; + }; + } }), HD = S({ "node_modules/trough/wrap.js"(e, r) { + "use strict"; + I(); + var u = [].slice; + r.exports = t; + function t(o, n) { + var s; + return c; + function c() { + var a = u.call(arguments, 0), l = o.length > a.length, p; + l && a.push(i); + try { + p = o.apply(null, a); + } catch (d) { + if (l && s) + throw d; + return i(d); + } + l || (p && typeof p.then == "function" ? p.then(D, i) : p instanceof Error ? i(p) : D(p)); + } + function i() { + s || (s = true, n.apply(null, arguments)); + } + function D(a) { + i(null, a); + } + } + } }), XD = S({ "node_modules/trough/index.js"(e, r) { + "use strict"; + I(); + var u = HD(); + r.exports = o, o.wrap = u; + var t = [].slice; + function o() { + var n = [], s = {}; + return s.run = c, s.use = i, s; + function c() { + var D = -1, a = t.call(arguments, 0, -1), l = arguments[arguments.length - 1]; + if (typeof l != "function") + throw new Error("Expected function as last argument, not " + l); + p.apply(null, [null].concat(a)); + function p(d) { + var g = n[++D], F = t.call(arguments, 0), E = F.slice(1), x = a.length, f = -1; + if (d) { + l(d); + return; + } + for (; ++f < x; ) + (E[f] === null || E[f] === void 0) && (E[f] = a[f]); + a = E, g ? u(g, p).apply(null, a) : l.apply(null, [null].concat(a)); + } + } + function i(D) { + if (typeof D != "function") + throw new Error("Expected `fn` to be a function, not " + D); + return n.push(D), s; + } + } + } }), WD = S({ "node_modules/unist-util-stringify-position/index.js"(e, r) { + "use strict"; + I(); + var u = {}.hasOwnProperty; + r.exports = t; + function t(c) { + return !c || typeof c != "object" ? "" : u.call(c, "position") || u.call(c, "type") ? n(c.position) : u.call(c, "start") || u.call(c, "end") ? n(c) : u.call(c, "line") || u.call(c, "column") ? o(c) : ""; + } + function o(c) { + return (!c || typeof c != "object") && (c = {}), s(c.line) + ":" + s(c.column); + } + function n(c) { + return (!c || typeof c != "object") && (c = {}), o(c.start) + "-" + o(c.end); + } + function s(c) { + return c && typeof c == "number" ? c : 1; + } + } }), KD = S({ "node_modules/vfile-message/index.js"(e, r) { + "use strict"; + I(); + var u = WD(); + r.exports = n; + function t() { + } + t.prototype = Error.prototype, n.prototype = new t(); + var o = n.prototype; + o.file = "", o.name = "", o.reason = "", o.message = "", o.stack = "", o.fatal = null, o.column = null, o.line = null; + function n(c, i, D) { + var a, l, p; + typeof i == "string" && (D = i, i = null), a = s(D), l = u(i) || "1:1", p = { start: { line: null, column: null }, end: { line: null, column: null } }, i && i.position && (i = i.position), i && (i.start ? (p = i, i = i.start) : p.start = i), c.stack && (this.stack = c.stack, c = c.message), this.message = c, this.name = l, this.reason = c, this.line = i ? i.line : null, this.column = i ? i.column : null, this.location = p, this.source = a[0], this.ruleId = a[1]; + } + function s(c) { + var i = [null, null], D; + return typeof c == "string" && (D = c.indexOf(":"), D === -1 ? i[1] = c : (i[0] = c.slice(0, D), i[1] = c.slice(D + 1))), i; + } + } }), YD = S({ "node_modules/vfile/lib/minpath.browser.js"(e) { + "use strict"; + I(), e.basename = r, e.dirname = u, e.extname = t, e.join = o, e.sep = "/"; + function r(i, D) { + var a = 0, l = -1, p, d, g, F; + if (D !== void 0 && typeof D != "string") + throw new TypeError('"ext" argument must be a string'); + if (c(i), p = i.length, D === void 0 || !D.length || D.length > i.length) { + for (; p--; ) + if (i.charCodeAt(p) === 47) { + if (g) { + a = p + 1; + break; + } + } else + l < 0 && (g = true, l = p + 1); + return l < 0 ? "" : i.slice(a, l); + } + if (D === i) + return ""; + for (d = -1, F = D.length - 1; p--; ) + if (i.charCodeAt(p) === 47) { + if (g) { + a = p + 1; + break; + } + } else + d < 0 && (g = true, d = p + 1), F > -1 && (i.charCodeAt(p) === D.charCodeAt(F--) ? F < 0 && (l = p) : (F = -1, l = d)); + return a === l ? l = d : l < 0 && (l = i.length), i.slice(a, l); + } + function u(i) { + var D, a, l; + if (c(i), !i.length) + return "."; + for (D = -1, l = i.length; --l; ) + if (i.charCodeAt(l) === 47) { + if (a) { + D = l; + break; + } + } else + a || (a = true); + return D < 0 ? i.charCodeAt(0) === 47 ? "/" : "." : D === 1 && i.charCodeAt(0) === 47 ? "//" : i.slice(0, D); + } + function t(i) { + var D = -1, a = 0, l = -1, p = 0, d, g, F; + for (c(i), F = i.length; F--; ) { + if (g = i.charCodeAt(F), g === 47) { + if (d) { + a = F + 1; + break; + } + continue; + } + l < 0 && (d = true, l = F + 1), g === 46 ? D < 0 ? D = F : p !== 1 && (p = 1) : D > -1 && (p = -1); + } + return D < 0 || l < 0 || p === 0 || p === 1 && D === l - 1 && D === a + 1 ? "" : i.slice(D, l); + } + function o() { + for (var i = -1, D; ++i < arguments.length; ) + c(arguments[i]), arguments[i] && (D = D === void 0 ? arguments[i] : D + "/" + arguments[i]); + return D === void 0 ? "." : n(D); + } + function n(i) { + var D, a; + return c(i), D = i.charCodeAt(0) === 47, a = s(i, !D), !a.length && !D && (a = "."), a.length && i.charCodeAt(i.length - 1) === 47 && (a += "/"), D ? "/" + a : a; + } + function s(i, D) { + for (var a = "", l = 0, p = -1, d = 0, g = -1, F, E; ++g <= i.length; ) { + if (g < i.length) + F = i.charCodeAt(g); + else { + if (F === 47) + break; + F = 47; + } + if (F === 47) { + if (!(p === g - 1 || d === 1)) + if (p !== g - 1 && d === 2) { + if (a.length < 2 || l !== 2 || a.charCodeAt(a.length - 1) !== 46 || a.charCodeAt(a.length - 2) !== 46) { + if (a.length > 2) { + if (E = a.lastIndexOf("/"), E !== a.length - 1) { + E < 0 ? (a = "", l = 0) : (a = a.slice(0, E), l = a.length - 1 - a.lastIndexOf("/")), p = g, d = 0; + continue; + } + } else if (a.length) { + a = "", l = 0, p = g, d = 0; + continue; + } + } + D && (a = a.length ? a + "/.." : "..", l = 2); + } else + a.length ? a += "/" + i.slice(p + 1, g) : a = i.slice(p + 1, g), l = g - p - 1; + p = g, d = 0; + } else + F === 46 && d > -1 ? d++ : d = -1; + } + return a; + } + function c(i) { + if (typeof i != "string") + throw new TypeError("Path must be a string. Received " + JSON.stringify(i)); + } + } }), JD = S({ "node_modules/vfile/lib/minproc.browser.js"(e) { + "use strict"; + I(), e.cwd = r; + function r() { + return "/"; + } + } }), ZD = S({ "node_modules/vfile/lib/core.js"(e, r) { + "use strict"; + I(); + var u = YD(), t = JD(), o = Hi(); + r.exports = c; + var n = {}.hasOwnProperty, s = ["history", "path", "basename", "stem", "extname", "dirname"]; + c.prototype.toString = f, Object.defineProperty(c.prototype, "path", { get: i, set: D }), Object.defineProperty(c.prototype, "dirname", { get: a, set: l }), Object.defineProperty(c.prototype, "basename", { get: p, set: d }), Object.defineProperty(c.prototype, "extname", { get: g, set: F }), Object.defineProperty(c.prototype, "stem", { get: E, set: x }); + function c(m) { + var C, B; + if (!m) + m = {}; + else if (typeof m == "string" || o(m)) + m = { contents: m }; + else if ("message" in m && "messages" in m) + return m; + if (!(this instanceof c)) + return new c(m); + for (this.data = {}, this.messages = [], this.history = [], this.cwd = t.cwd(), B = -1; ++B < s.length; ) + C = s[B], n.call(m, C) && (this[C] = m[C]); + for (C in m) + s.indexOf(C) < 0 && (this[C] = m[C]); + } + function i() { + return this.history[this.history.length - 1]; + } + function D(m) { + v(m, "path"), this.path !== m && this.history.push(m); + } + function a() { + return typeof this.path == "string" ? u.dirname(this.path) : void 0; + } + function l(m) { + h(this.path, "dirname"), this.path = u.join(m || "", this.basename); + } + function p() { + return typeof this.path == "string" ? u.basename(this.path) : void 0; + } + function d(m) { + v(m, "basename"), b(m, "basename"), this.path = u.join(this.dirname || "", m); + } + function g() { + return typeof this.path == "string" ? u.extname(this.path) : void 0; + } + function F(m) { + if (b(m, "extname"), h(this.path, "extname"), m) { + if (m.charCodeAt(0) !== 46) + throw new Error("`extname` must start with `.`"); + if (m.indexOf(".", 1) > -1) + throw new Error("`extname` cannot contain multiple dots"); + } + this.path = u.join(this.dirname, this.stem + (m || "")); + } + function E() { + return typeof this.path == "string" ? u.basename(this.path, this.extname) : void 0; + } + function x(m) { + v(m, "stem"), b(m, "stem"), this.path = u.join(this.dirname || "", m + (this.extname || "")); + } + function f(m) { + return (this.contents || "").toString(m); + } + function b(m, C) { + if (m && m.indexOf(u.sep) > -1) + throw new Error("`" + C + "` cannot be a path: did not expect `" + u.sep + "`"); + } + function v(m, C) { + if (!m) + throw new Error("`" + C + "` cannot be empty"); + } + function h(m, C) { + if (!m) + throw new Error("Setting `" + C + "` requires `path` to be set too"); + } + } }), QD = S({ "node_modules/vfile/lib/index.js"(e, r) { + "use strict"; + I(); + var u = KD(), t = ZD(); + r.exports = t, t.prototype.message = o, t.prototype.info = s, t.prototype.fail = n; + function o(c, i, D) { + var a = new u(c, i, D); + return this.path && (a.name = this.path + ":" + a.name, a.file = this.path), a.fatal = false, this.messages.push(a), a; + } + function n() { + var c = this.message.apply(this, arguments); + throw c.fatal = true, c; + } + function s() { + var c = this.message.apply(this, arguments); + return c.fatal = null, c; + } + } }), e2 = S({ "node_modules/vfile/index.js"(e, r) { + "use strict"; + I(), r.exports = QD(); + } }), r2 = S({ "node_modules/unified/index.js"(e, r) { + "use strict"; + I(); + var u = UD(), t = Hi(), o = VD(), n = $D(), s = XD(), c = e2(); + r.exports = g().freeze(); + var i = [].slice, D = {}.hasOwnProperty, a = s().use(l).use(p).use(d); + function l(m, C) { + C.tree = m.parse(C.file); + } + function p(m, C, B) { + m.run(C.tree, C.file, q); + function q(L, w, O) { + L ? B(L) : (C.tree = w, C.file = O, B()); + } + } + function d(m, C) { + var B = m.stringify(C.tree, C.file); + B == null || (typeof B == "string" || t(B) ? C.file.contents = B : C.file.result = B); + } + function g() { + var m = [], C = s(), B = {}, q = -1, L; + return w.data = T, w.freeze = O, w.attachers = m, w.use = P, w.parse = j, w.stringify = X, w.run = $, w.runSync = U, w.process = R, w.processSync = J, w; + function w() { + for (var z = g(), M = -1; ++M < m.length; ) + z.use.apply(null, m[M]); + return z.data(o(true, {}, B)), z; + } + function O() { + var z, M; + if (L) + return w; + for (; ++q < m.length; ) + z = m[q], z[1] !== false && (z[1] === true && (z[1] = void 0), M = z[0].apply(w, z.slice(1)), typeof M == "function" && C.use(M)); + return L = true, q = 1 / 0, w; + } + function T(z, M) { + return typeof z == "string" ? arguments.length === 2 ? (b("data", L), B[z] = M, w) : D.call(B, z) && B[z] || null : z ? (b("data", L), B = z, w) : B; + } + function P(z) { + var M; + if (b("use", L), z != null) + if (typeof z == "function") + _.apply(null, arguments); + else if (typeof z == "object") + "length" in z ? y(z) : G(z); + else + throw new Error("Expected usable value, not `" + z + "`"); + return M && (B.settings = o(B.settings || {}, M)), w; + function G(N) { + y(N.plugins), N.settings && (M = o(M || {}, N.settings)); + } + function k(N) { + if (typeof N == "function") + _(N); + else if (typeof N == "object") + "length" in N ? _.apply(null, N) : G(N); + else + throw new Error("Expected usable value, not `" + N + "`"); + } + function y(N) { + var V = -1; + if (N != null) + if (typeof N == "object" && "length" in N) + for (; ++V < N.length; ) + k(N[V]); + else + throw new Error("Expected a list of plugins, not `" + N + "`"); + } + function _(N, V) { + var W = A(N); + W ? (n(W[1]) && n(V) && (V = o(true, W[1], V)), W[1] = V) : m.push(i.call(arguments)); + } + } + function A(z) { + for (var M = -1; ++M < m.length; ) + if (m[M][0] === z) + return m[M]; + } + function j(z) { + var M = c(z), G; + return O(), G = w.Parser, x("parse", G), F(G, "parse") ? new G(String(M), M).parse() : G(String(M), M); + } + function $(z, M, G) { + if (v(z), O(), !G && typeof M == "function" && (G = M, M = null), !G) + return new Promise(k); + k(null, G); + function k(y, _) { + C.run(z, c(M), N); + function N(V, W, K) { + W = W || z, V ? _(V) : y ? y(W) : G(null, W, K); + } + } + } + function U(z, M) { + var G, k; + return $(z, M, y), h("runSync", "run", k), G; + function y(_, N) { + k = true, G = N, u(_); + } + } + function X(z, M) { + var G = c(M), k; + return O(), k = w.Compiler, f("stringify", k), v(z), F(k, "compile") ? new k(z, G).compile() : k(z, G); + } + function R(z, M) { + if (O(), x("process", w.Parser), f("process", w.Compiler), !M) + return new Promise(G); + G(null, M); + function G(k, y) { + var _ = c(z); + a.run(w, { file: _ }, N); + function N(V) { + V ? y(V) : k ? k(_) : M(null, _); + } + } + } + function J(z) { + var M, G; + return O(), x("processSync", w.Parser), f("processSync", w.Compiler), M = c(z), R(M, k), h("processSync", "process", G), M; + function k(y) { + G = true, u(y); + } + } + } + function F(m, C) { + return typeof m == "function" && m.prototype && (E(m.prototype) || C in m.prototype); + } + function E(m) { + var C; + for (C in m) + return true; + return false; + } + function x(m, C) { + if (typeof C != "function") + throw new Error("Cannot `" + m + "` without `Parser`"); + } + function f(m, C) { + if (typeof C != "function") + throw new Error("Cannot `" + m + "` without `Compiler`"); + } + function b(m, C) { + if (C) + throw new Error("Cannot invoke `" + m + "` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`."); + } + function v(m) { + if (!m || typeof m.type != "string") + throw new Error("Expected node, got `" + m + "`"); + } + function h(m, C, B) { + if (!B) + throw new Error("`" + m + "` finished async. Use `" + C + "` instead"); + } + } }), Xi = S({ "node_modules/remark-math/util.js"(e) { + I(), e.isRemarkParser = r, e.isRemarkCompiler = u; + function r(t) { + return Boolean(t && t.prototype && t.prototype.blockTokenizers); + } + function u(t) { + return Boolean(t && t.prototype && t.prototype.visitors); + } + } }), u2 = S({ "node_modules/remark-math/inline.js"(e, r) { + I(); + var u = Xi(); + r.exports = l; + var t = 9, o = 32, n = 36, s = 48, c = 57, i = 92, D = ["math", "math-inline"], a = "math-display"; + function l(g) { + let F = this.Parser, E = this.Compiler; + u.isRemarkParser(F) && p(F, g), u.isRemarkCompiler(E) && d(E, g); + } + function p(g, F) { + let E = g.prototype, x = E.inlineMethods; + b.locator = f, E.inlineTokenizers.math = b, x.splice(x.indexOf("text"), 0, "math"); + function f(v, h) { + return v.indexOf("$", h); + } + function b(v, h, m) { + let C = h.length, B = false, q = false, L = 0, w, O, T, P, A, j, $; + if (h.charCodeAt(L) === i && (q = true, L++), h.charCodeAt(L) === n) { + if (L++, q) + return m ? true : v(h.slice(0, L))({ type: "text", value: "$" }); + if (h.charCodeAt(L) === n && (B = true, L++), T = h.charCodeAt(L), !(T === o || T === t)) { + for (P = L; L < C; ) { + if (O = T, T = h.charCodeAt(L + 1), O === n) { + if (w = h.charCodeAt(L - 1), w !== o && w !== t && (T !== T || T < s || T > c) && (!B || T === n)) { + A = L - 1, L++, B && L++, j = L; + break; + } + } else + O === i && (L++, T = h.charCodeAt(L + 1)); + L++; + } + if (j !== void 0) + return m ? true : ($ = h.slice(P, A + 1), v(h.slice(0, j))({ type: "inlineMath", value: $, data: { hName: "span", hProperties: { className: D.concat(B && F.inlineMathDouble ? [a] : []) }, hChildren: [{ type: "text", value: $ }] } })); + } + } + } + } + function d(g) { + let F = g.prototype; + F.visitors.inlineMath = E; + function E(x) { + let f = "$"; + return (x.data && x.data.hProperties && x.data.hProperties.className || []).includes(a) && (f = "$$"), f + x.value + f; + } + } + } }), t2 = S({ "node_modules/remark-math/block.js"(e, r) { + I(); + var u = Xi(); + r.exports = a; + var t = 10, o = 32, n = 36, s = ` +`, c = "$", i = 2, D = ["math", "math-display"]; + function a() { + let d = this.Parser, g = this.Compiler; + u.isRemarkParser(d) && l(d), u.isRemarkCompiler(g) && p(g); + } + function l(d) { + let g = d.prototype, F = g.blockMethods, E = g.interruptParagraph, x = g.interruptList, f = g.interruptBlockquote; + g.blockTokenizers.math = b, F.splice(F.indexOf("fencedCode") + 1, 0, "math"), E.splice(E.indexOf("fencedCode") + 1, 0, ["math"]), x.splice(x.indexOf("fencedCode") + 1, 0, ["math"]), f.splice(f.indexOf("fencedCode") + 1, 0, ["math"]); + function b(v, h, m) { + var C = h.length, B = 0; + let q, L, w, O, T, P, A, j, $, U, X; + for (; B < C && h.charCodeAt(B) === o; ) + B++; + for (T = B; B < C && h.charCodeAt(B) === n; ) + B++; + if (P = B - T, !(P < i)) { + for (; B < C && h.charCodeAt(B) === o; ) + B++; + for (A = B; B < C; ) { + if (q = h.charCodeAt(B), q === n) + return; + if (q === t) + break; + B++; + } + if (h.charCodeAt(B) === t) { + if (m) + return true; + for (L = [], A !== B && L.push(h.slice(A, B)), B++, w = h.indexOf(s, B + 1), w = w === -1 ? C : w; B < C; ) { + for (j = false, U = B, X = w, O = w, $ = 0; O > U && h.charCodeAt(O - 1) === o; ) + O--; + for (; O > U && h.charCodeAt(O - 1) === n; ) + $++, O--; + for (P <= $ && h.indexOf(c, U) === O && (j = true, X = O); U <= X && U - B < T && h.charCodeAt(U) === o; ) + U++; + if (j) + for (; X > U && h.charCodeAt(X - 1) === o; ) + X--; + if ((!j || U !== X) && L.push(h.slice(U, X)), j) + break; + B = w + 1, w = h.indexOf(s, B + 1), w = w === -1 ? C : w; + } + return L = L.join(` +`), v(h.slice(0, w))({ type: "math", value: L, data: { hName: "div", hProperties: { className: D.concat() }, hChildren: [{ type: "text", value: L }] } }); + } + } + } + } + function p(d) { + let g = d.prototype; + g.visitors.math = F; + function F(E) { + return `$$ +` + E.value + ` +$$`; + } + } + } }), n2 = S({ "node_modules/remark-math/index.js"(e, r) { + I(); + var u = u2(), t = t2(); + r.exports = o; + function o(n) { + var s = n || {}; + t.call(this, s), u.call(this, s); + } + } }), i2 = S({ "node_modules/remark-footnotes/index.js"(e, r) { + "use strict"; + I(), r.exports = g; + var u = 9, t = 10, o = 32, n = 33, s = 58, c = 91, i = 92, D = 93, a = 94, l = 96, p = 4, d = 1024; + function g(h) { + var m = this.Parser, C = this.Compiler; + F(m) && x(m, h), E(C) && f(C); + } + function F(h) { + return Boolean(h && h.prototype && h.prototype.blockTokenizers); + } + function E(h) { + return Boolean(h && h.prototype && h.prototype.visitors); + } + function x(h, m) { + for (var C = m || {}, B = h.prototype, q = B.blockTokenizers, L = B.inlineTokenizers, w = B.blockMethods, O = B.inlineMethods, T = q.definition, P = L.reference, A = [], j = -1, $ = w.length, U; ++j < $; ) + U = w[j], !(U === "newline" || U === "indentedCode" || U === "paragraph" || U === "footnoteDefinition") && A.push([U]); + A.push(["footnoteDefinition"]), C.inlineNotes && (b(O, "reference", "inlineNote"), L.inlineNote = J), b(w, "definition", "footnoteDefinition"), b(O, "reference", "footnoteCall"), q.definition = M, q.footnoteDefinition = X, L.footnoteCall = R, L.reference = z, B.interruptFootnoteDefinition = A, z.locator = P.locator, R.locator = G, J.locator = k; + function X(y, _, N) { + for (var V = this, W = V.interruptFootnoteDefinition, K = V.offset, ee = _.length + 1, Y = 0, te = [], De, le, ne, Z, Q, fe, be, pe, he, oe, de, ie, re; Y < ee && (Z = _.charCodeAt(Y), !(Z !== u && Z !== o)); ) + Y++; + if (_.charCodeAt(Y++) === c && _.charCodeAt(Y++) === a) { + for (le = Y; Y < ee; ) { + if (Z = _.charCodeAt(Y), Z !== Z || Z === t || Z === u || Z === o) + return; + if (Z === D) { + ne = Y, Y++; + break; + } + Y++; + } + if (!(ne === void 0 || le === ne || _.charCodeAt(Y++) !== s)) { + if (N) + return true; + for (De = _.slice(le, ne), Q = y.now(), he = 0, oe = 0, de = Y, ie = []; Y < ee; ) { + if (Z = _.charCodeAt(Y), Z !== Z || Z === t) + re = { start: he, contentStart: de || Y, contentEnd: Y, end: Y }, ie.push(re), Z === t && (he = Y + 1, oe = 0, de = void 0, re.end = he); + else if (oe !== void 0) + if (Z === o || Z === u) + oe += Z === o ? 1 : p - oe % p, oe > p && (oe = void 0, de = Y); + else { + if (oe < p && re && (re.contentStart === re.contentEnd || v(W, q, V, [y, _.slice(Y, d), true]))) + break; + oe = void 0, de = Y; + } + Y++; + } + for (Y = -1, ee = ie.length; ee > 0 && (re = ie[ee - 1], re.contentStart === re.contentEnd); ) + ee--; + for (fe = y(_.slice(0, re.contentEnd)); ++Y < ee; ) + re = ie[Y], K[Q.line + Y] = (K[Q.line + Y] || 0) + (re.contentStart - re.start), te.push(_.slice(re.contentStart, re.end)); + return be = V.enterBlock(), pe = V.tokenizeBlock(te.join(""), Q), be(), fe({ type: "footnoteDefinition", identifier: De.toLowerCase(), label: De, children: pe }); + } + } + } + function R(y, _, N) { + var V = _.length + 1, W = 0, K, ee, Y, te; + if (_.charCodeAt(W++) === c && _.charCodeAt(W++) === a) { + for (ee = W; W < V; ) { + if (te = _.charCodeAt(W), te !== te || te === t || te === u || te === o) + return; + if (te === D) { + Y = W, W++; + break; + } + W++; + } + if (!(Y === void 0 || ee === Y)) + return N ? true : (K = _.slice(ee, Y), y(_.slice(0, W))({ type: "footnoteReference", identifier: K.toLowerCase(), label: K })); + } + } + function J(y, _, N) { + var V = this, W = _.length + 1, K = 0, ee = 0, Y, te, De, le, ne, Z, Q; + if (_.charCodeAt(K++) === a && _.charCodeAt(K++) === c) { + for (De = K; K < W; ) { + if (te = _.charCodeAt(K), te !== te) + return; + if (Z === void 0) + if (te === i) + K += 2; + else if (te === c) + ee++, K++; + else if (te === D) + if (ee === 0) { + le = K, K++; + break; + } else + ee--, K++; + else if (te === l) { + for (ne = K, Z = 1; _.charCodeAt(ne + Z) === l; ) + Z++; + K += Z; + } else + K++; + else if (te === l) { + for (ne = K, Q = 1; _.charCodeAt(ne + Q) === l; ) + Q++; + K += Q, Z === Q && (Z = void 0), Q = void 0; + } else + K++; + } + if (le !== void 0) + return N ? true : (Y = y.now(), Y.column += 2, Y.offset += 2, y(_.slice(0, K))({ type: "footnote", children: V.tokenizeInline(_.slice(De, le), Y) })); + } + } + function z(y, _, N) { + var V = 0; + if (_.charCodeAt(V) === n && V++, _.charCodeAt(V) === c && _.charCodeAt(V + 1) !== a) + return P.call(this, y, _, N); + } + function M(y, _, N) { + for (var V = 0, W = _.charCodeAt(V); W === o || W === u; ) + W = _.charCodeAt(++V); + if (W === c && _.charCodeAt(V + 1) !== a) + return T.call(this, y, _, N); + } + function G(y, _) { + return y.indexOf("[", _); + } + function k(y, _) { + return y.indexOf("^[", _); + } + } + function f(h) { + var m = h.prototype.visitors, C = " "; + m.footnote = B, m.footnoteReference = q, m.footnoteDefinition = L; + function B(w) { + return "^[" + this.all(w).join("") + "]"; + } + function q(w) { + return "[^" + (w.label || w.identifier) + "]"; + } + function L(w) { + for (var O = this.all(w).join(` + +`).split(` +`), T = 0, P = O.length, A; ++T < P; ) + A = O[T], A !== "" && (O[T] = C + A); + return "[^" + (w.label || w.identifier) + "]: " + O.join(` +`); + } + } + function b(h, m, C) { + h.splice(h.indexOf(m), 0, C); + } + function v(h, m, C, B) { + for (var q = h.length, L = -1; ++L < q; ) + if (m[h[L][0]].apply(C, B)) + return true; + return false; + } + } }), Wi = S({ "src/utils/front-matter/parse.js"(e, r) { + "use strict"; + I(); + var u = new RegExp("^(?-{3}|\\+{3})(?[^\\n]*)\\n(?:|(?.*?)\\n)(?\\k|\\.{3})[^\\S\\n]*(?:\\n|$)", "s"); + function t(o) { + let n = o.match(u); + if (!n) + return { content: o }; + let { startDelimiter: s, language: c, value: i = "", endDelimiter: D } = n.groups, a = c.trim() || "yaml"; + if (s === "+++" && (a = "toml"), a !== "yaml" && s !== D) + return { content: o }; + let [l] = n; + return { frontMatter: { type: "front-matter", lang: a, value: i, startDelimiter: s, endDelimiter: D, raw: l.replace(/\n$/, "") }, content: l.replace(/[^\n]/g, " ") + o.slice(l.length) }; + } + r.exports = t; + } }), a2 = S({ "src/language-markdown/pragma.js"(e, r) { + "use strict"; + I(); + var u = Wi(), t = ["format", "prettier"]; + function o(n) { + let s = "@(".concat(t.join("|"), ")"), c = new RegExp([""), "{\\s*\\/\\*\\s*".concat(s, "\\s*\\*\\/\\s*}"), ``)].join("|"), "m"), i = n.match(c); + return (i == null ? void 0 : i.index) === 0; + } + r.exports = { startWithPragma: o, hasPragma: (n) => o(u(n).content.trimStart()), insertPragma: (n) => { + let s = u(n), c = ""); + return s.frontMatter ? "".concat(s.frontMatter.raw, ` + +`).concat(c, ` + +`).concat(s.content) : "".concat(c, ` + +`).concat(s.content); + } }; + } }), Ki = S({ "src/language-markdown/loc.js"(e, r) { + "use strict"; + I(); + function u(o) { + return o.position.start.offset; + } + function t(o) { + return o.position.end.offset; + } + r.exports = { locStart: u, locEnd: t }; + } }), Yi = S({ "src/language-markdown/mdx.js"(e, r) { + "use strict"; + I(); + var u = /^import\s/, t = /^export\s/, o = "[a-z][a-z0-9]*(\\.[a-z][a-z0-9]*)*|", n = /|/, s = /^{\s*\/\*(.*)\*\/\s*}/, c = ` + +`, i = (d) => u.test(d), D = (d) => t.test(d), a = (d, g) => { + let F = g.indexOf(c), E = g.slice(0, F); + if (D(E) || i(E)) + return d(E)({ type: D(E) ? "export" : "import", value: E }); + }, l = (d, g) => { + let F = s.exec(g); + if (F) + return d(F[0])({ type: "esComment", value: F[1].trim() }); + }; + a.locator = (d) => D(d) || i(d) ? -1 : 1, l.locator = (d, g) => d.indexOf("{", g); + function p() { + let { Parser: d } = this, { blockTokenizers: g, blockMethods: F, inlineTokenizers: E, inlineMethods: x } = d.prototype; + g.esSyntax = a, E.esComment = l, F.splice(F.indexOf("paragraph"), 0, "esSyntax"), x.splice(x.indexOf("text"), 0, "esComment"); + } + r.exports = { esSyntax: p, BLOCKS_REGEX: o, COMMENT_REGEX: n }; + } }), Ji = {}; + Li(Ji, { default: () => o2 }); + function o2(e) { + if (typeof e != "string") + throw new TypeError("Expected a string"); + return e.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); + } + var s2 = Pe({ "node_modules/escape-string-regexp/index.js"() { + I(); + } }), c2 = S({ "src/utils/get-last.js"(e, r) { + "use strict"; + I(); + var u = (t) => t[t.length - 1]; + r.exports = u; + } }), Zi = S({ "node_modules/semver/internal/debug.js"(e, r) { + I(); + var u = typeof Ze == "object" && Ze.env && Ze.env.NODE_DEBUG && /\bsemver\b/i.test(Ze.env.NODE_DEBUG) ? function() { + for (var t = arguments.length, o = new Array(t), n = 0; n < t; n++) + o[n] = arguments[n]; + return console.error("SEMVER", ...o); + } : () => { + }; + r.exports = u; + } }), Qi = S({ "node_modules/semver/internal/constants.js"(e, r) { + I(); + var u = "2.0.0", t = 256, o = Number.MAX_SAFE_INTEGER || 9007199254740991, n = 16; + r.exports = { SEMVER_SPEC_VERSION: u, MAX_LENGTH: t, MAX_SAFE_INTEGER: o, MAX_SAFE_COMPONENT_LENGTH: n }; + } }), l2 = S({ "node_modules/semver/internal/re.js"(e, r) { + I(); + var { MAX_SAFE_COMPONENT_LENGTH: u } = Qi(), t = Zi(); + e = r.exports = {}; + var o = e.re = [], n = e.src = [], s = e.t = {}, c = 0, i = (D, a, l) => { + let p = c++; + t(D, p, a), s[D] = p, n[p] = a, o[p] = new RegExp(a, l ? "g" : void 0); + }; + i("NUMERICIDENTIFIER", "0|[1-9]\\d*"), i("NUMERICIDENTIFIERLOOSE", "[0-9]+"), i("NONNUMERICIDENTIFIER", "\\d*[a-zA-Z-][a-zA-Z0-9-]*"), i("MAINVERSION", "(".concat(n[s.NUMERICIDENTIFIER], ")\\.(").concat(n[s.NUMERICIDENTIFIER], ")\\.(").concat(n[s.NUMERICIDENTIFIER], ")")), i("MAINVERSIONLOOSE", "(".concat(n[s.NUMERICIDENTIFIERLOOSE], ")\\.(").concat(n[s.NUMERICIDENTIFIERLOOSE], ")\\.(").concat(n[s.NUMERICIDENTIFIERLOOSE], ")")), i("PRERELEASEIDENTIFIER", "(?:".concat(n[s.NUMERICIDENTIFIER], "|").concat(n[s.NONNUMERICIDENTIFIER], ")")), i("PRERELEASEIDENTIFIERLOOSE", "(?:".concat(n[s.NUMERICIDENTIFIERLOOSE], "|").concat(n[s.NONNUMERICIDENTIFIER], ")")), i("PRERELEASE", "(?:-(".concat(n[s.PRERELEASEIDENTIFIER], "(?:\\.").concat(n[s.PRERELEASEIDENTIFIER], ")*))")), i("PRERELEASELOOSE", "(?:-?(".concat(n[s.PRERELEASEIDENTIFIERLOOSE], "(?:\\.").concat(n[s.PRERELEASEIDENTIFIERLOOSE], ")*))")), i("BUILDIDENTIFIER", "[0-9A-Za-z-]+"), i("BUILD", "(?:\\+(".concat(n[s.BUILDIDENTIFIER], "(?:\\.").concat(n[s.BUILDIDENTIFIER], ")*))")), i("FULLPLAIN", "v?".concat(n[s.MAINVERSION]).concat(n[s.PRERELEASE], "?").concat(n[s.BUILD], "?")), i("FULL", "^".concat(n[s.FULLPLAIN], "$")), i("LOOSEPLAIN", "[v=\\s]*".concat(n[s.MAINVERSIONLOOSE]).concat(n[s.PRERELEASELOOSE], "?").concat(n[s.BUILD], "?")), i("LOOSE", "^".concat(n[s.LOOSEPLAIN], "$")), i("GTLT", "((?:<|>)?=?)"), i("XRANGEIDENTIFIERLOOSE", "".concat(n[s.NUMERICIDENTIFIERLOOSE], "|x|X|\\*")), i("XRANGEIDENTIFIER", "".concat(n[s.NUMERICIDENTIFIER], "|x|X|\\*")), i("XRANGEPLAIN", "[v=\\s]*(".concat(n[s.XRANGEIDENTIFIER], ")(?:\\.(").concat(n[s.XRANGEIDENTIFIER], ")(?:\\.(").concat(n[s.XRANGEIDENTIFIER], ")(?:").concat(n[s.PRERELEASE], ")?").concat(n[s.BUILD], "?)?)?")), i("XRANGEPLAINLOOSE", "[v=\\s]*(".concat(n[s.XRANGEIDENTIFIERLOOSE], ")(?:\\.(").concat(n[s.XRANGEIDENTIFIERLOOSE], ")(?:\\.(").concat(n[s.XRANGEIDENTIFIERLOOSE], ")(?:").concat(n[s.PRERELEASELOOSE], ")?").concat(n[s.BUILD], "?)?)?")), i("XRANGE", "^".concat(n[s.GTLT], "\\s*").concat(n[s.XRANGEPLAIN], "$")), i("XRANGELOOSE", "^".concat(n[s.GTLT], "\\s*").concat(n[s.XRANGEPLAINLOOSE], "$")), i("COERCE", "(^|[^\\d])(\\d{1,".concat(u, "})(?:\\.(\\d{1,").concat(u, "}))?(?:\\.(\\d{1,").concat(u, "}))?(?:$|[^\\d])")), i("COERCERTL", n[s.COERCE], true), i("LONETILDE", "(?:~>?)"), i("TILDETRIM", "(\\s*)".concat(n[s.LONETILDE], "\\s+"), true), e.tildeTrimReplace = "$1~", i("TILDE", "^".concat(n[s.LONETILDE]).concat(n[s.XRANGEPLAIN], "$")), i("TILDELOOSE", "^".concat(n[s.LONETILDE]).concat(n[s.XRANGEPLAINLOOSE], "$")), i("LONECARET", "(?:\\^)"), i("CARETTRIM", "(\\s*)".concat(n[s.LONECARET], "\\s+"), true), e.caretTrimReplace = "$1^", i("CARET", "^".concat(n[s.LONECARET]).concat(n[s.XRANGEPLAIN], "$")), i("CARETLOOSE", "^".concat(n[s.LONECARET]).concat(n[s.XRANGEPLAINLOOSE], "$")), i("COMPARATORLOOSE", "^".concat(n[s.GTLT], "\\s*(").concat(n[s.LOOSEPLAIN], ")$|^$")), i("COMPARATOR", "^".concat(n[s.GTLT], "\\s*(").concat(n[s.FULLPLAIN], ")$|^$")), i("COMPARATORTRIM", "(\\s*)".concat(n[s.GTLT], "\\s*(").concat(n[s.LOOSEPLAIN], "|").concat(n[s.XRANGEPLAIN], ")"), true), e.comparatorTrimReplace = "$1$2$3", i("HYPHENRANGE", "^\\s*(".concat(n[s.XRANGEPLAIN], ")\\s+-\\s+(").concat(n[s.XRANGEPLAIN], ")\\s*$")), i("HYPHENRANGELOOSE", "^\\s*(".concat(n[s.XRANGEPLAINLOOSE], ")\\s+-\\s+(").concat(n[s.XRANGEPLAINLOOSE], ")\\s*$")), i("STAR", "(<|>)?=?\\s*\\*"), i("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), i("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } }), D2 = S({ "node_modules/semver/internal/parse-options.js"(e, r) { + I(); + var u = ["includePrerelease", "loose", "rtl"], t = (o) => o ? typeof o != "object" ? { loose: true } : u.filter((n) => o[n]).reduce((n, s) => (n[s] = true, n), {}) : {}; + r.exports = t; + } }), f2 = S({ "node_modules/semver/internal/identifiers.js"(e, r) { + I(); + var u = /^[0-9]+$/, t = (n, s) => { + let c = u.test(n), i = u.test(s); + return c && i && (n = +n, s = +s), n === s ? 0 : c && !i ? -1 : i && !c ? 1 : n < s ? -1 : 1; + }, o = (n, s) => t(s, n); + r.exports = { compareIdentifiers: t, rcompareIdentifiers: o }; + } }), p2 = S({ "node_modules/semver/classes/semver.js"(e, r) { + I(); + var u = Zi(), { MAX_LENGTH: t, MAX_SAFE_INTEGER: o } = Qi(), { re: n, t: s } = l2(), c = D2(), { compareIdentifiers: i } = f2(), D = class { + constructor(a, l) { + if (l = c(l), a instanceof D) { + if (a.loose === !!l.loose && a.includePrerelease === !!l.includePrerelease) + return a; + a = a.version; + } else if (typeof a != "string") + throw new TypeError("Invalid Version: ".concat(a)); + if (a.length > t) + throw new TypeError("version is longer than ".concat(t, " characters")); + u("SemVer", a, l), this.options = l, this.loose = !!l.loose, this.includePrerelease = !!l.includePrerelease; + let p = a.trim().match(l.loose ? n[s.LOOSE] : n[s.FULL]); + if (!p) + throw new TypeError("Invalid Version: ".concat(a)); + if (this.raw = a, this.major = +p[1], this.minor = +p[2], this.patch = +p[3], this.major > o || this.major < 0) + throw new TypeError("Invalid major version"); + if (this.minor > o || this.minor < 0) + throw new TypeError("Invalid minor version"); + if (this.patch > o || this.patch < 0) + throw new TypeError("Invalid patch version"); + p[4] ? this.prerelease = p[4].split(".").map((d) => { + if (/^[0-9]+$/.test(d)) { + let g = +d; + if (g >= 0 && g < o) + return g; + } + return d; + }) : this.prerelease = [], this.build = p[5] ? p[5].split(".") : [], this.format(); + } + format() { + return this.version = "".concat(this.major, ".").concat(this.minor, ".").concat(this.patch), this.prerelease.length && (this.version += "-".concat(this.prerelease.join("."))), this.version; + } + toString() { + return this.version; + } + compare(a) { + if (u("SemVer.compare", this.version, this.options, a), !(a instanceof D)) { + if (typeof a == "string" && a === this.version) + return 0; + a = new D(a, this.options); + } + return a.version === this.version ? 0 : this.compareMain(a) || this.comparePre(a); + } + compareMain(a) { + return a instanceof D || (a = new D(a, this.options)), i(this.major, a.major) || i(this.minor, a.minor) || i(this.patch, a.patch); + } + comparePre(a) { + if (a instanceof D || (a = new D(a, this.options)), this.prerelease.length && !a.prerelease.length) + return -1; + if (!this.prerelease.length && a.prerelease.length) + return 1; + if (!this.prerelease.length && !a.prerelease.length) + return 0; + let l = 0; + do { + let p = this.prerelease[l], d = a.prerelease[l]; + if (u("prerelease compare", l, p, d), p === void 0 && d === void 0) + return 0; + if (d === void 0) + return 1; + if (p === void 0) + return -1; + if (p === d) + continue; + return i(p, d); + } while (++l); + } + compareBuild(a) { + a instanceof D || (a = new D(a, this.options)); + let l = 0; + do { + let p = this.build[l], d = a.build[l]; + if (u("prerelease compare", l, p, d), p === void 0 && d === void 0) + return 0; + if (d === void 0) + return 1; + if (p === void 0) + return -1; + if (p === d) + continue; + return i(p, d); + } while (++l); + } + inc(a, l) { + switch (a) { + case "premajor": + this.prerelease.length = 0, this.patch = 0, this.minor = 0, this.major++, this.inc("pre", l); + break; + case "preminor": + this.prerelease.length = 0, this.patch = 0, this.minor++, this.inc("pre", l); + break; + case "prepatch": + this.prerelease.length = 0, this.inc("patch", l), this.inc("pre", l); + break; + case "prerelease": + this.prerelease.length === 0 && this.inc("patch", l), this.inc("pre", l); + break; + case "major": + (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) && this.major++, this.minor = 0, this.patch = 0, this.prerelease = []; + break; + case "minor": + (this.patch !== 0 || this.prerelease.length === 0) && this.minor++, this.patch = 0, this.prerelease = []; + break; + case "patch": + this.prerelease.length === 0 && this.patch++, this.prerelease = []; + break; + case "pre": + if (this.prerelease.length === 0) + this.prerelease = [0]; + else { + let p = this.prerelease.length; + for (; --p >= 0; ) + typeof this.prerelease[p] == "number" && (this.prerelease[p]++, p = -2); + p === -1 && this.prerelease.push(0); + } + l && (i(this.prerelease[0], l) === 0 ? isNaN(this.prerelease[1]) && (this.prerelease = [l, 0]) : this.prerelease = [l, 0]); + break; + default: + throw new Error("invalid increment argument: ".concat(a)); + } + return this.format(), this.raw = this.version, this; + } + }; + r.exports = D; + } }), vu = S({ "node_modules/semver/functions/compare.js"(e, r) { + I(); + var u = p2(), t = (o, n, s) => new u(o, s).compare(new u(n, s)); + r.exports = t; + } }), d2 = S({ "node_modules/semver/functions/lt.js"(e, r) { + I(); + var u = vu(), t = (o, n, s) => u(o, n, s) < 0; + r.exports = t; + } }), h2 = S({ "node_modules/semver/functions/gte.js"(e, r) { + I(); + var u = vu(), t = (o, n, s) => u(o, n, s) >= 0; + r.exports = t; + } }), v2 = S({ "src/utils/arrayify.js"(e, r) { + "use strict"; + I(), r.exports = (u, t) => Object.entries(u).map((o) => { + let [n, s] = o; + return Object.assign({ [t]: n }, s); + }); + } }), m2 = S({ "package.json"(e, r) { + r.exports = { version: "2.7.1" }; + } }), E2 = S({ "node_modules/outdent/lib/index.js"(e, r) { + "use strict"; + I(), Object.defineProperty(e, "__esModule", { value: true }), e.outdent = void 0; + function u() { + for (var f = [], b = 0; b < arguments.length; b++) + f[b] = arguments[b]; + } + function t() { + return typeof WeakMap < "u" ? /* @__PURE__ */ new WeakMap() : o(); + } + function o() { + return { add: u, delete: u, get: u, set: u, has: function(f) { + return false; + } }; + } + var n = Object.prototype.hasOwnProperty, s = function(f, b) { + return n.call(f, b); + }; + function c(f, b) { + for (var v in b) + s(b, v) && (f[v] = b[v]); + return f; + } + var i = /^[ \t]*(?:\r\n|\r|\n)/, D = /(?:\r\n|\r|\n)[ \t]*$/, a = /^(?:[\r\n]|$)/, l = /(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/, p = /^[ \t]*[\r\n][ \t\r\n]*$/; + function d(f, b, v) { + var h = 0, m = f[0].match(l); + m && (h = m[1].length); + var C = "(\\r\\n|\\r|\\n).{0," + h + "}", B = new RegExp(C, "g"); + b && (f = f.slice(1)); + var q = v.newline, L = v.trimLeadingNewline, w = v.trimTrailingNewline, O = typeof q == "string", T = f.length, P = f.map(function(A, j) { + return A = A.replace(B, "$1"), j === 0 && L && (A = A.replace(i, "")), j === T - 1 && w && (A = A.replace(D, "")), O && (A = A.replace(/\r\n|\n|\r/g, function($) { + return q; + })), A; + }); + return P; + } + function g(f, b) { + for (var v = "", h = 0, m = f.length; h < m; h++) + v += f[h], h < m - 1 && (v += b[h]); + return v; + } + function F(f) { + return s(f, "raw") && s(f, "length"); + } + function E(f) { + var b = t(), v = t(); + function h(C) { + for (var B = [], q = 1; q < arguments.length; q++) + B[q - 1] = arguments[q]; + if (F(C)) { + var L = C, w = (B[0] === h || B[0] === x) && p.test(L[0]) && a.test(L[1]), O = w ? v : b, T = O.get(L); + if (T || (T = d(L, w, f), O.set(L, T)), B.length === 0) + return T[0]; + var P = g(T, w ? B.slice(1) : B); + return P; + } else + return E(c(c({}, f), C || {})); + } + var m = c(h, { string: function(C) { + return d([C], false, f)[0]; + } }); + return m; + } + var x = E({ trimLeadingNewline: true, trimTrailingNewline: true }); + if (e.outdent = x, e.default = x, typeof r < "u") + try { + r.exports = x, Object.defineProperty(x, "__esModule", { value: true }), x.default = x, x.outdent = x; + } catch { + } + } }), C2 = S({ "src/main/core-options.js"(e, r) { + "use strict"; + I(); + var { outdent: u } = E2(), t = "Config", o = "Editor", n = "Format", s = "Other", c = "Output", i = "Global", D = "Special", a = { cursorOffset: { since: "1.4.0", category: D, type: "int", default: -1, range: { start: -1, end: Number.POSITIVE_INFINITY, step: 1 }, description: u(yi || (yi = je([` + Print (to stderr) where a cursor at the given position would move to after formatting. + This option cannot be used with --range-start and --range-end. + `]))), cliCategory: o }, endOfLine: { since: "1.15.0", category: i, type: "choice", default: [{ since: "1.15.0", value: "auto" }, { since: "2.0.0", value: "lf" }], description: "Which end of line characters to apply.", choices: [{ value: "lf", description: "Line Feed only (\\n), common on Linux and macOS as well as inside git repos" }, { value: "crlf", description: "Carriage Return + Line Feed characters (\\r\\n), common on Windows" }, { value: "cr", description: "Carriage Return character only (\\r), used very rarely" }, { value: "auto", description: u(Bi || (Bi = je([` + Maintain existing + (mixed values within one file are normalised by looking at what's used after the first line) + `]))) }] }, filepath: { since: "1.4.0", category: D, type: "path", description: "Specify the input filepath. This will be used to do parser inference.", cliName: "stdin-filepath", cliCategory: s, cliDescription: "Path to the file to pretend that stdin comes from." }, insertPragma: { since: "1.8.0", category: D, type: "boolean", default: false, description: "Insert @format pragma into file's first docblock comment.", cliCategory: s }, parser: { since: "0.0.10", category: i, type: "choice", default: [{ since: "0.0.10", value: "babylon" }, { since: "1.13.0", value: void 0 }], description: "Which parser to use.", exception: (l) => typeof l == "string" || typeof l == "function", choices: [{ value: "flow", description: "Flow" }, { value: "babel", since: "1.16.0", description: "JavaScript" }, { value: "babel-flow", since: "1.16.0", description: "Flow" }, { value: "babel-ts", since: "2.0.0", description: "TypeScript" }, { value: "typescript", since: "1.4.0", description: "TypeScript" }, { value: "acorn", since: "2.6.0", description: "JavaScript" }, { value: "espree", since: "2.2.0", description: "JavaScript" }, { value: "meriyah", since: "2.2.0", description: "JavaScript" }, { value: "css", since: "1.7.1", description: "CSS" }, { value: "less", since: "1.7.1", description: "Less" }, { value: "scss", since: "1.7.1", description: "SCSS" }, { value: "json", since: "1.5.0", description: "JSON" }, { value: "json5", since: "1.13.0", description: "JSON5" }, { value: "json-stringify", since: "1.13.0", description: "JSON.stringify" }, { value: "graphql", since: "1.5.0", description: "GraphQL" }, { value: "markdown", since: "1.8.0", description: "Markdown" }, { value: "mdx", since: "1.15.0", description: "MDX" }, { value: "vue", since: "1.10.0", description: "Vue" }, { value: "yaml", since: "1.14.0", description: "YAML" }, { value: "glimmer", since: "2.3.0", description: "Ember / Handlebars" }, { value: "html", since: "1.15.0", description: "HTML" }, { value: "angular", since: "1.15.0", description: "Angular" }, { value: "lwc", since: "1.17.0", description: "Lightning Web Components" }] }, plugins: { since: "1.10.0", type: "path", array: true, default: [{ value: [] }], category: i, description: "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.", exception: (l) => typeof l == "string" || typeof l == "object", cliName: "plugin", cliCategory: t }, pluginSearchDirs: { since: "1.13.0", type: "path", array: true, default: [{ value: [] }], category: i, description: u(wi || (wi = je([` + Custom directory that contains prettier plugins in node_modules subdirectory. + Overrides default behavior when plugins are searched relatively to the location of Prettier. + Multiple values are accepted. + `]))), exception: (l) => typeof l == "string" || typeof l == "object", cliName: "plugin-search-dir", cliCategory: t }, printWidth: { since: "0.0.0", category: i, type: "int", default: 80, description: "The line length where Prettier will try wrap.", range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 } }, rangeEnd: { since: "1.4.0", category: D, type: "int", default: Number.POSITIVE_INFINITY, range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 }, description: u(ki || (ki = je([` + Format code ending at a given character offset (exclusive). + The range will extend forwards to the end of the selected statement. + This option cannot be used with --cursor-offset. + `]))), cliCategory: o }, rangeStart: { since: "1.4.0", category: D, type: "int", default: 0, range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 }, description: u(qi || (qi = je([` + Format code starting at a given character offset. + The range will extend backwards to the start of the first line containing the selected statement. + This option cannot be used with --cursor-offset. + `]))), cliCategory: o }, requirePragma: { since: "1.7.0", category: D, type: "boolean", default: false, description: u(_i || (_i = je([` + Require either '@prettier' or '@format' to be present in the file's first docblock comment + in order for it to be formatted. + `]))), cliCategory: s }, tabWidth: { type: "int", category: i, default: 2, description: "Number of spaces per indentation level.", range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 } }, useTabs: { since: "1.0.0", category: i, type: "boolean", default: false, description: "Indent with tabs instead of spaces." }, embeddedLanguageFormatting: { since: "2.1.0", category: i, type: "choice", default: [{ since: "2.1.0", value: "auto" }], description: "Control how Prettier formats quoted code embedded in the file.", choices: [{ value: "auto", description: "Format embedded code if Prettier can automatically identify it." }, { value: "off", description: "Never automatically format embedded code." }] } }; + r.exports = { CATEGORY_CONFIG: t, CATEGORY_EDITOR: o, CATEGORY_FORMAT: n, CATEGORY_OTHER: s, CATEGORY_OUTPUT: c, CATEGORY_GLOBAL: i, CATEGORY_SPECIAL: D, options: a }; + } }), g2 = S({ "src/main/support.js"(e, r) { + "use strict"; + I(); + var u = { compare: vu(), lt: d2(), gte: h2() }, t = v2(), o = m2().version, n = C2().options; + function s() { + let { plugins: i = [], showUnreleased: D = false, showDeprecated: a = false, showInternal: l = false } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, p = o.split("-", 1)[0], d = i.flatMap((f) => f.languages || []).filter(F), g = t(Object.assign({}, ...i.map((f) => { + let { options: b } = f; + return b; + }), n), "name").filter((f) => F(f) && E(f)).sort((f, b) => f.name === b.name ? 0 : f.name < b.name ? -1 : 1).map(x).map((f) => { + f = Object.assign({}, f), Array.isArray(f.default) && (f.default = f.default.length === 1 ? f.default[0].value : f.default.filter(F).sort((v, h) => u.compare(h.since, v.since))[0].value), Array.isArray(f.choices) && (f.choices = f.choices.filter((v) => F(v) && E(v)), f.name === "parser" && c(f, d, i)); + let b = Object.fromEntries(i.filter((v) => v.defaultOptions && v.defaultOptions[f.name] !== void 0).map((v) => [v.name, v.defaultOptions[f.name]])); + return Object.assign(Object.assign({}, f), {}, { pluginDefaults: b }); + }); + return { languages: d, options: g }; + function F(f) { + return D || !("since" in f) || f.since && u.gte(p, f.since); + } + function E(f) { + return a || !("deprecated" in f) || f.deprecated && u.lt(p, f.deprecated); + } + function x(f) { + if (l) + return f; + let { cliName: b, cliCategory: v, cliDescription: h } = f; + return ql(f, kl); + } + } + function c(i, D, a) { + let l = new Set(i.choices.map((p) => p.value)); + for (let p of D) + if (p.parsers) { + for (let d of p.parsers) + if (!l.has(d)) { + l.add(d); + let g = a.find((E) => E.parsers && E.parsers[d]), F = p.name; + g && g.name && (F += " (plugin: ".concat(g.name, ")")), i.choices.push({ value: d, description: F }); + } + } + } + r.exports = { getSupportInfo: s }; + } }), F2 = S({ "src/utils/is-non-empty-array.js"(e, r) { + "use strict"; + I(); + function u(t) { + return Array.isArray(t) && t.length > 0; + } + r.exports = u; + } }); + function A2() { + let { onlyFirst: e = false } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, r = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|"); + return new RegExp(r, e ? void 0 : "g"); + } + var x2 = Pe({ "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() { + I(); + } }); + function b2(e) { + if (typeof e != "string") + throw new TypeError("Expected a `string`, got `".concat(typeof e, "`")); + return e.replace(A2(), ""); + } + var y2 = Pe({ "node_modules/strip-ansi/index.js"() { + I(), x2(); + } }); + function B2(e) { + return Number.isInteger(e) ? e >= 4352 && (e <= 4447 || e === 9001 || e === 9002 || 11904 <= e && e <= 12871 && e !== 12351 || 12880 <= e && e <= 19903 || 19968 <= e && e <= 42182 || 43360 <= e && e <= 43388 || 44032 <= e && e <= 55203 || 63744 <= e && e <= 64255 || 65040 <= e && e <= 65049 || 65072 <= e && e <= 65131 || 65281 <= e && e <= 65376 || 65504 <= e && e <= 65510 || 110592 <= e && e <= 110593 || 127488 <= e && e <= 127569 || 131072 <= e && e <= 262141) : false; + } + var w2 = Pe({ "node_modules/is-fullwidth-code-point/index.js"() { + I(); + } }), k2 = S({ "node_modules/emoji-regex/index.js"(e, r) { + "use strict"; + I(), r.exports = function() { + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; + }; + } }), ea = {}; + Li(ea, { default: () => q2 }); + function q2(e) { + if (typeof e != "string" || e.length === 0 || (e = b2(e), e.length === 0)) + return 0; + e = e.replace((0, ra.default)(), " "); + let r = 0; + for (let u = 0; u < e.length; u++) { + let t = e.codePointAt(u); + t <= 31 || t >= 127 && t <= 159 || t >= 768 && t <= 879 || (t > 65535 && u++, r += B2(t) ? 2 : 1); + } + return r; + } + var ra, _2 = Pe({ "node_modules/string-width/index.js"() { + I(), y2(), w2(), ra = Nl(k2()); + } }), O2 = S({ "src/utils/get-string-width.js"(e, r) { + "use strict"; + I(); + var u = (_2(), ji(ea)).default, t = /[^\x20-\x7F]/; + function o(n) { + return n ? t.test(n) ? u(n) : n.length : 0; + } + r.exports = o; + } }), mu = S({ "src/utils/text/skip.js"(e, r) { + "use strict"; + I(); + function u(c) { + return (i, D, a) => { + let l = a && a.backwards; + if (D === false) + return false; + let { length: p } = i, d = D; + for (; d >= 0 && d < p; ) { + let g = i.charAt(d); + if (c instanceof RegExp) { + if (!c.test(g)) + return d; + } else if (!c.includes(g)) + return d; + l ? d-- : d++; + } + return d === -1 || d === p ? d : false; + }; + } + var t = u(/\s/), o = u(" "), n = u(",; "), s = u(/[^\n\r]/); + r.exports = { skipWhitespace: t, skipSpaces: o, skipToLineEnd: n, skipEverythingButNewLine: s }; + } }), ua = S({ "src/utils/text/skip-inline-comment.js"(e, r) { + "use strict"; + I(); + function u(t, o) { + if (o === false) + return false; + if (t.charAt(o) === "/" && t.charAt(o + 1) === "*") { + for (let n = o + 2; n < t.length; ++n) + if (t.charAt(n) === "*" && t.charAt(n + 1) === "/") + return n + 2; + } + return o; + } + r.exports = u; + } }), ta = S({ "src/utils/text/skip-trailing-comment.js"(e, r) { + "use strict"; + I(); + var { skipEverythingButNewLine: u } = mu(); + function t(o, n) { + return n === false ? false : o.charAt(n) === "/" && o.charAt(n + 1) === "/" ? u(o, n) : n; + } + r.exports = t; + } }), na = S({ "src/utils/text/skip-newline.js"(e, r) { + "use strict"; + I(); + function u(t, o, n) { + let s = n && n.backwards; + if (o === false) + return false; + let c = t.charAt(o); + if (s) { + if (t.charAt(o - 1) === "\r" && c === ` +`) + return o - 2; + if (c === ` +` || c === "\r" || c === "\u2028" || c === "\u2029") + return o - 1; + } else { + if (c === "\r" && t.charAt(o + 1) === ` +`) + return o + 2; + if (c === ` +` || c === "\r" || c === "\u2028" || c === "\u2029") + return o + 1; + } + return o; + } + r.exports = u; + } }), I2 = S({ "src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js"(e, r) { + "use strict"; + I(); + var u = ua(), t = na(), o = ta(), { skipSpaces: n } = mu(); + function s(c, i) { + let D = null, a = i; + for (; a !== D; ) + D = a, a = n(c, a), a = u(c, a), a = o(c, a), a = t(c, a); + return a; + } + r.exports = s; + } }), S2 = S({ "src/common/util.js"(e, r) { + "use strict"; + I(); + var { default: u } = (s2(), ji(Ji)), t = c2(), { getSupportInfo: o } = g2(), n = F2(), s = O2(), { skipWhitespace: c, skipSpaces: i, skipToLineEnd: D, skipEverythingButNewLine: a } = mu(), l = ua(), p = ta(), d = na(), g = I2(), F = (k) => k[k.length - 2]; + function E(k) { + return (y, _, N) => { + let V = N && N.backwards; + if (_ === false) + return false; + let { length: W } = y, K = _; + for (; K >= 0 && K < W; ) { + let ee = y.charAt(K); + if (k instanceof RegExp) { + if (!k.test(ee)) + return K; + } else if (!k.includes(ee)) + return K; + V ? K-- : K++; + } + return K === -1 || K === W ? K : false; + }; + } + function x(k, y) { + let _ = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, N = i(k, _.backwards ? y - 1 : y, _), V = d(k, N, _); + return N !== V; + } + function f(k, y, _) { + for (let N = y; N < _; ++N) + if (k.charAt(N) === ` +`) + return true; + return false; + } + function b(k, y, _) { + let N = _(y) - 1; + N = i(k, N, { backwards: true }), N = d(k, N, { backwards: true }), N = i(k, N, { backwards: true }); + let V = d(k, N, { backwards: true }); + return N !== V; + } + function v(k, y) { + let _ = null, N = y; + for (; N !== _; ) + _ = N, N = D(k, N), N = l(k, N), N = i(k, N); + return N = p(k, N), N = d(k, N), N !== false && x(k, N); + } + function h(k, y, _) { + return v(k, _(y)); + } + function m(k, y, _) { + return g(k, _(y)); + } + function C(k, y, _) { + return k.charAt(m(k, y, _)); + } + function B(k, y) { + let _ = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + return i(k, _.backwards ? y - 1 : y, _) !== y; + } + function q(k, y) { + let _ = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, N = 0; + for (let V = _; V < k.length; ++V) + k[V] === " " ? N = N + y - N % y : N++; + return N; + } + function L(k, y) { + let _ = k.lastIndexOf(` +`); + return _ === -1 ? 0 : q(k.slice(_ + 1).match(/^[\t ]*/)[0], y); + } + function w(k, y) { + let _ = { quote: '"', regex: /"/g, escaped: """ }, N = { quote: "'", regex: /'/g, escaped: "'" }, V = y === "'" ? N : _, W = V === N ? _ : N, K = V; + if (k.includes(V.quote) || k.includes(W.quote)) { + let ee = (k.match(V.regex) || []).length, Y = (k.match(W.regex) || []).length; + K = ee > Y ? W : V; + } + return K; + } + function O(k, y) { + let _ = k.slice(1, -1), N = y.parser === "json" || y.parser === "json5" && y.quoteProps === "preserve" && !y.singleQuote ? '"' : y.__isInHtmlAttribute ? "'" : w(_, y.singleQuote ? "'" : '"').quote; + return T(_, N, !(y.parser === "css" || y.parser === "less" || y.parser === "scss" || y.__embeddedInHtml)); + } + function T(k, y, _) { + let N = y === '"' ? "'" : '"', V = /\\(.)|(["'])/gs, W = k.replace(V, (K, ee, Y) => ee === N ? ee : Y === y ? "\\" + Y : Y || (_ && /^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(ee) ? ee : "\\" + ee)); + return y + W + y; + } + function P(k) { + return k.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1").replace(/^([+-])?\./, "$10.").replace(/(\.\d+?)0+(?=e|$)/, "$1").replace(/\.(?=e|$)/, ""); + } + function A(k, y) { + let _ = k.match(new RegExp("(".concat(u(y), ")+"), "g")); + return _ === null ? 0 : _.reduce((N, V) => Math.max(N, V.length / y.length), 0); + } + function j(k, y) { + let _ = k.match(new RegExp("(".concat(u(y), ")+"), "g")); + if (_ === null) + return 0; + let N = /* @__PURE__ */ new Map(), V = 0; + for (let W of _) { + let K = W.length / y.length; + N.set(K, true), K > V && (V = K); + } + for (let W = 1; W < V; W++) + if (!N.get(W)) + return W; + return V + 1; + } + function $(k, y) { + (k.comments || (k.comments = [])).push(y), y.printed = false, y.nodeDescription = G(k); + } + function U(k, y) { + y.leading = true, y.trailing = false, $(k, y); + } + function X(k, y, _) { + y.leading = false, y.trailing = false, _ && (y.marker = _), $(k, y); + } + function R(k, y) { + y.leading = false, y.trailing = true, $(k, y); + } + function J(k, y) { + let { languages: _ } = o({ plugins: y.plugins }), N = _.find((V) => { + let { name: W } = V; + return W.toLowerCase() === k; + }) || _.find((V) => { + let { aliases: W } = V; + return Array.isArray(W) && W.includes(k); + }) || _.find((V) => { + let { extensions: W } = V; + return Array.isArray(W) && W.includes(".".concat(k)); + }); + return N && N.parsers[0]; + } + function z(k) { + return k && k.type === "front-matter"; + } + function M(k) { + let y = /* @__PURE__ */ new WeakMap(); + return function(_) { + return y.has(_) || y.set(_, Symbol(k)), y.get(_); + }; + } + function G(k) { + let y = k.type || k.kind || "(unknown type)", _ = String(k.name || k.id && (typeof k.id == "object" ? k.id.name : k.id) || k.key && (typeof k.key == "object" ? k.key.name : k.key) || k.value && (typeof k.value == "object" ? "" : String(k.value)) || k.operator || ""); + return _.length > 20 && (_ = _.slice(0, 19) + "\u2026"), y + (_ ? " " + _ : ""); + } + r.exports = { inferParserByLanguage: J, getStringWidth: s, getMaxContinuousCount: A, getMinNotPresentContinuousCount: j, getPenultimate: F, getLast: t, getNextNonSpaceNonCommentCharacterIndexWithStartIndex: g, getNextNonSpaceNonCommentCharacterIndex: m, getNextNonSpaceNonCommentCharacter: C, skip: E, skipWhitespace: c, skipSpaces: i, skipToLineEnd: D, skipEverythingButNewLine: a, skipInlineComment: l, skipTrailingComment: p, skipNewline: d, isNextLineEmptyAfterIndex: v, isNextLineEmpty: h, isPreviousLineEmpty: b, hasNewline: x, hasNewlineInRange: f, hasSpaces: B, getAlignmentSize: q, getIndentSize: L, getPreferredQuote: w, printString: O, printNumber: P, makeString: T, addLeadingComment: U, addDanglingComment: X, addTrailingComment: R, isFrontMatterNode: z, isNonEmptyArray: n, createGroupIdMapper: M }; + } }), T2 = S({ "src/language-markdown/constants.evaluate.js"(e, r) { + r.exports = { cjkPattern: "(?:[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d])(?:[\\ufe00-\\ufe0f]|\\udb40[\\udd00-\\uddef])?", kPattern: "[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]", punctuationPattern: "[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]" }; + } }), N2 = S({ "src/language-markdown/utils.js"(e, r) { + "use strict"; + I(); + var { getLast: u } = S2(), { locStart: t, locEnd: o } = Ki(), { cjkPattern: n, kPattern: s, punctuationPattern: c } = T2(), i = ["liquidNode", "inlineCode", "emphasis", "esComment", "strong", "delete", "wikiLink", "link", "linkReference", "image", "imageReference", "footnote", "footnoteReference", "sentence", "whitespace", "word", "break", "inlineMath"], D = [...i, "tableCell", "paragraph", "heading"], a = new RegExp(s), l = new RegExp(c); + function p(f, b) { + let v = "non-cjk", h = "cj-letter", m = "k-letter", C = "cjk-punctuation", B = [], q = (b.proseWrap === "preserve" ? f : f.replace(new RegExp("(".concat(n, `) +(`).concat(n, ")"), "g"), "$1$2")).split(/([\t\n ]+)/); + for (let [w, O] of q.entries()) { + if (w % 2 === 1) { + B.push({ type: "whitespace", value: /\n/.test(O) ? ` +` : " " }); + continue; + } + if ((w === 0 || w === q.length - 1) && O === "") + continue; + let T = O.split(new RegExp("(".concat(n, ")"))); + for (let [P, A] of T.entries()) + if (!((P === 0 || P === T.length - 1) && A === "")) { + if (P % 2 === 0) { + A !== "" && L({ type: "word", value: A, kind: v, hasLeadingPunctuation: l.test(A[0]), hasTrailingPunctuation: l.test(u(A)) }); + continue; + } + L(l.test(A) ? { type: "word", value: A, kind: C, hasLeadingPunctuation: true, hasTrailingPunctuation: true } : { type: "word", value: A, kind: a.test(A) ? m : h, hasLeadingPunctuation: false, hasTrailingPunctuation: false }); + } + } + return B; + function L(w) { + let O = u(B); + O && O.type === "word" && (O.kind === v && w.kind === h && !O.hasTrailingPunctuation || O.kind === h && w.kind === v && !w.hasLeadingPunctuation ? B.push({ type: "whitespace", value: " " }) : !T(v, C) && ![O.value, w.value].some((P) => /\u3000/.test(P)) && B.push({ type: "whitespace", value: "" })), B.push(w); + function T(P, A) { + return O.kind === P && w.kind === A || O.kind === A && w.kind === P; + } + } + } + function d(f, b) { + let [, v, h, m] = b.slice(f.position.start.offset, f.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/); + return { numberText: v, marker: h, leadingSpaces: m }; + } + function g(f, b) { + if (!f.ordered || f.children.length < 2) + return false; + let v = Number(d(f.children[0], b.originalText).numberText), h = Number(d(f.children[1], b.originalText).numberText); + if (v === 0 && f.children.length > 2) { + let m = Number(d(f.children[2], b.originalText).numberText); + return h === 1 && m === 1; + } + return h === 1; + } + function F(f, b) { + let { value: v } = f; + return f.position.end.offset === b.length && v.endsWith(` +`) && b.endsWith(` +`) ? v.slice(0, -1) : v; + } + function E(f, b) { + return function v(h, m, C) { + let B = Object.assign({}, b(h, m, C)); + return B.children && (B.children = B.children.map((q, L) => v(q, L, [B, ...C]))), B; + }(f, null, []); + } + function x(f) { + if ((f == null ? void 0 : f.type) !== "link" || f.children.length !== 1) + return false; + let [b] = f.children; + return t(f) === t(b) && o(f) === o(b); + } + r.exports = { mapAst: E, splitText: p, punctuationPattern: c, getFencedCodeBlockValue: F, getOrderedListItemInfo: d, hasGitDiffFriendlyOrderedList: g, INLINE_NODE_TYPES: i, INLINE_NODE_WRAPPER_TYPES: D, isAutolink: x }; + } }), L2 = S({ "src/language-markdown/unified-plugins/html-to-jsx.js"(e, r) { + "use strict"; + I(); + var u = Yi(), { mapAst: t, INLINE_NODE_WRAPPER_TYPES: o } = N2(); + function n() { + return (s) => t(s, (c, i, D) => { + let [a] = D; + return c.type !== "html" || u.COMMENT_REGEX.test(c.value) || o.includes(a.type) ? c : Object.assign(Object.assign({}, c), {}, { type: "jsx" }); + }); + } + r.exports = n; + } }), R2 = S({ "src/language-markdown/unified-plugins/front-matter.js"(e, r) { + "use strict"; + I(); + var u = Wi(); + function t() { + let o = this.Parser.prototype; + o.blockMethods = ["frontMatter", ...o.blockMethods], o.blockTokenizers.frontMatter = n; + function n(s, c) { + let i = u(c); + if (i.frontMatter) + return s(i.frontMatter.raw)(i.frontMatter); + } + n.onlyAtStart = true; + } + r.exports = t; + } }), j2 = S({ "src/language-markdown/unified-plugins/liquid.js"(e, r) { + "use strict"; + I(); + function u() { + let t = this.Parser.prototype, o = t.inlineMethods; + o.splice(o.indexOf("text"), 0, "liquid"), t.inlineTokenizers.liquid = n; + function n(s, c) { + let i = c.match(/^({%.*?%}|{{.*?}})/s); + if (i) + return s(i[0])({ type: "liquidNode", value: i[0] }); + } + n.locator = function(s, c) { + return s.indexOf("{", c); + }; + } + r.exports = u; + } }), P2 = S({ "src/language-markdown/unified-plugins/wiki-link.js"(e, r) { + "use strict"; + I(); + function u() { + let t = "wikiLink", o = /^\[\[(?.+?)]]/s, n = this.Parser.prototype, s = n.inlineMethods; + s.splice(s.indexOf("link"), 0, t), n.inlineTokenizers.wikiLink = c; + function c(i, D) { + let a = o.exec(D); + if (a) { + let l = a.groups.linkContents.trim(); + return i(a[0])({ type: t, value: l }); + } + } + c.locator = function(i, D) { + return i.indexOf("[", D); + }; + } + r.exports = u; + } }), M2 = S({ "src/language-markdown/unified-plugins/loose-items.js"(e, r) { + "use strict"; + I(); + function u() { + let t = this.Parser.prototype, o = t.blockTokenizers.list; + function n(s, c, i) { + return c.type === "listItem" && (c.loose = c.spread || s.charAt(s.length - 1) === ` +`, c.loose && (i.loose = true)), c; + } + t.blockTokenizers.list = function(c, i, D) { + function a(l) { + let p = c(l); + function d(g, F) { + return p(n(l, g, F), F); + } + return d.reset = function(g, F) { + return p.reset(n(l, g, F), F); + }, d; + } + return a.now = c.now, o.call(this, a, i, D); + }; + } + r.exports = u; + } }); + I(); + var z2 = GD(), G2 = r2(), U2 = n2(), V2 = i2(), $2 = a2(), { locStart: H2, locEnd: X2 } = Ki(), Si = Yi(), W2 = L2(), K2 = R2(), Y2 = j2(), J2 = P2(), Z2 = M2(); + function ia(e) { + let { isMDX: r } = e; + return (u) => { + let t = G2().use(z2, Object.assign({ commonmark: true }, r && { blocks: [Si.BLOCKS_REGEX] })).use(V2).use(K2).use(U2).use(r ? Si.esSyntax : Ti).use(Y2).use(r ? W2 : Ti).use(J2).use(Z2); + return t.runSync(t.parse(u)); + }; + } + function Ti(e) { + return e; + } + var aa = { astFormat: "mdast", hasPragma: $2.hasPragma, locStart: H2, locEnd: X2 }, Ni = Object.assign(Object.assign({}, aa), {}, { parse: ia({ isMDX: false }) }), Q2 = Object.assign(Object.assign({}, aa), {}, { parse: ia({ isMDX: true }) }); + oa.exports = { parsers: { remark: Ni, markdown: Ni, mdx: Q2 } }; + }); + return ef(); + }); + } +}); + +// node_modules/prettier/parser-html.js +var require_parser_html = __commonJS({ + "node_modules/prettier/parser-html.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.html = e(); + } + })(function() { + "use strict"; + var y = (e, r) => () => (r || e((r = { exports: {} }).exports, r), r.exports); + var G = y((cl, zr) => { + var we = function(e) { + return e && e.Math == Math && e; + }; + zr.exports = we(typeof globalThis == "object" && globalThis) || we(typeof window == "object" && window) || we(typeof self == "object" && self) || we(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + }); + var se = y((Dl, Wr) => { + Wr.exports = function(e) { + try { + return !!e(); + } catch { + return true; + } + }; + }); + var oe = y((ll, Yr) => { + var bs = se(); + Yr.exports = !bs(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + }); + var Ne = y((hl, Qr) => { + var ws = se(); + Qr.exports = !ws(function() { + var e = function() { + }.bind(); + return typeof e != "function" || e.hasOwnProperty("prototype"); + }); + }); + var ce = y((pl, Kr) => { + var Ns = Ne(), Oe = Function.prototype.call; + Kr.exports = Ns ? Oe.bind(Oe) : function() { + return Oe.apply(Oe, arguments); + }; + }); + var rt = y((et) => { + "use strict"; + var Jr = {}.propertyIsEnumerable, Zr = Object.getOwnPropertyDescriptor, Os = Zr && !Jr.call({ 1: 2 }, 1); + et.f = Os ? function(r) { + var t = Zr(this, r); + return !!t && t.enumerable; + } : Jr; + }); + var qe = y((dl, tt) => { + tt.exports = function(e, r) { + return { enumerable: !(e & 1), configurable: !(e & 2), writable: !(e & 4), value: r }; + }; + }); + var Q = y((El, st) => { + var ut = Ne(), nt = Function.prototype, qs = nt.bind, er = nt.call, Is = ut && qs.bind(er, er); + st.exports = ut ? function(e) { + return e && Is(e); + } : function(e) { + return e && function() { + return er.apply(e, arguments); + }; + }; + }); + var Ie = y((Cl, it) => { + var at = Q(), Rs = at({}.toString), xs = at("".slice); + it.exports = function(e) { + return xs(Rs(e), 8, -1); + }; + }); + var ct = y((ml, ot) => { + var Ps = G(), ks = Q(), Ls = se(), Ms = Ie(), rr = Ps.Object, js = ks("".split); + ot.exports = Ls(function() { + return !rr("z").propertyIsEnumerable(0); + }) ? function(e) { + return Ms(e) == "String" ? js(e, "") : rr(e); + } : rr; + }); + var tr = y((gl, Dt) => { + var $s = G(), Us = $s.TypeError; + Dt.exports = function(e) { + if (e == null) + throw Us("Can't call method on " + e); + return e; + }; + }); + var Re = y((Fl, lt) => { + var Gs = ct(), Vs = tr(); + lt.exports = function(e) { + return Gs(Vs(e)); + }; + }); + var K = y((Al, ht) => { + ht.exports = function(e) { + return typeof e == "function"; + }; + }); + var De = y((vl, pt) => { + var Xs = K(); + pt.exports = function(e) { + return typeof e == "object" ? e !== null : Xs(e); + }; + }); + var ge = y((_l, ft) => { + var ur = G(), Hs = K(), zs = function(e) { + return Hs(e) ? e : void 0; + }; + ft.exports = function(e, r) { + return arguments.length < 2 ? zs(ur[e]) : ur[e] && ur[e][r]; + }; + }); + var nr = y((Sl, dt) => { + var Ws = Q(); + dt.exports = Ws({}.isPrototypeOf); + }); + var Ct = y((yl, Et) => { + var Ys = ge(); + Et.exports = Ys("navigator", "userAgent") || ""; + }); + var St = y((Tl, _t) => { + var vt = G(), sr = Ct(), mt = vt.process, gt = vt.Deno, Ft = mt && mt.versions || gt && gt.version, At = Ft && Ft.v8, te, xe; + At && (te = At.split("."), xe = te[0] > 0 && te[0] < 4 ? 1 : +(te[0] + te[1])); + !xe && sr && (te = sr.match(/Edge\/(\d+)/), (!te || te[1] >= 74) && (te = sr.match(/Chrome\/(\d+)/), te && (xe = +te[1]))); + _t.exports = xe; + }); + var ar = y((Bl, Tt) => { + var yt = St(), Qs = se(); + Tt.exports = !!Object.getOwnPropertySymbols && !Qs(function() { + var e = Symbol(); + return !String(e) || !(Object(e) instanceof Symbol) || !Symbol.sham && yt && yt < 41; + }); + }); + var ir = y((bl, Bt) => { + var Ks = ar(); + Bt.exports = Ks && !Symbol.sham && typeof Symbol.iterator == "symbol"; + }); + var or = y((wl, bt) => { + var Js = G(), Zs = ge(), ea = K(), ra = nr(), ta = ir(), ua = Js.Object; + bt.exports = ta ? function(e) { + return typeof e == "symbol"; + } : function(e) { + var r = Zs("Symbol"); + return ea(r) && ra(r.prototype, ua(e)); + }; + }); + var Pe = y((Nl, wt) => { + var na = G(), sa = na.String; + wt.exports = function(e) { + try { + return sa(e); + } catch { + return "Object"; + } + }; + }); + var Fe = y((Ol, Nt) => { + var aa = G(), ia = K(), oa = Pe(), ca = aa.TypeError; + Nt.exports = function(e) { + if (ia(e)) + return e; + throw ca(oa(e) + " is not a function"); + }; + }); + var ke = y((ql, Ot) => { + var Da = Fe(); + Ot.exports = function(e, r) { + var t = e[r]; + return t == null ? void 0 : Da(t); + }; + }); + var It = y((Il, qt) => { + var la = G(), cr = ce(), Dr = K(), lr = De(), ha = la.TypeError; + qt.exports = function(e, r) { + var t, s; + if (r === "string" && Dr(t = e.toString) && !lr(s = cr(t, e)) || Dr(t = e.valueOf) && !lr(s = cr(t, e)) || r !== "string" && Dr(t = e.toString) && !lr(s = cr(t, e))) + return s; + throw ha("Can't convert object to primitive value"); + }; + }); + var xt = y((Rl, Rt) => { + Rt.exports = false; + }); + var Le = y((xl, kt) => { + var Pt = G(), pa = Object.defineProperty; + kt.exports = function(e, r) { + try { + pa(Pt, e, { value: r, configurable: true, writable: true }); + } catch { + Pt[e] = r; + } + return r; + }; + }); + var Me = y((Pl, Mt) => { + var fa = G(), da = Le(), Lt = "__core-js_shared__", Ea = fa[Lt] || da(Lt, {}); + Mt.exports = Ea; + }); + var hr = y((kl, $t) => { + var Ca = xt(), jt = Me(); + ($t.exports = function(e, r) { + return jt[e] || (jt[e] = r !== void 0 ? r : {}); + })("versions", []).push({ version: "3.22.2", mode: Ca ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", source: "https://github.com/zloirock/core-js" }); + }); + var pr = y((Ll, Ut) => { + var ma = G(), ga = tr(), Fa = ma.Object; + Ut.exports = function(e) { + return Fa(ga(e)); + }; + }); + var ae = y((Ml, Gt) => { + var Aa = Q(), va = pr(), _a = Aa({}.hasOwnProperty); + Gt.exports = Object.hasOwn || function(r, t) { + return _a(va(r), t); + }; + }); + var fr = y((jl, Vt) => { + var Sa = Q(), ya = 0, Ta = Math.random(), Ba = Sa(1 .toString); + Vt.exports = function(e) { + return "Symbol(" + (e === void 0 ? "" : e) + ")_" + Ba(++ya + Ta, 36); + }; + }); + var he = y(($l, Yt) => { + var ba = G(), wa = hr(), Xt = ae(), Na = fr(), Ht = ar(), Wt = ir(), fe = wa("wks"), le = ba.Symbol, zt = le && le.for, Oa = Wt ? le : le && le.withoutSetter || Na; + Yt.exports = function(e) { + if (!Xt(fe, e) || !(Ht || typeof fe[e] == "string")) { + var r = "Symbol." + e; + Ht && Xt(le, e) ? fe[e] = le[e] : Wt && zt ? fe[e] = zt(r) : fe[e] = Oa(r); + } + return fe[e]; + }; + }); + var Zt = y((Ul, Jt) => { + var qa = G(), Ia = ce(), Qt = De(), Kt = or(), Ra = ke(), xa = It(), Pa = he(), ka = qa.TypeError, La = Pa("toPrimitive"); + Jt.exports = function(e, r) { + if (!Qt(e) || Kt(e)) + return e; + var t = Ra(e, La), s; + if (t) { + if (r === void 0 && (r = "default"), s = Ia(t, e, r), !Qt(s) || Kt(s)) + return s; + throw ka("Can't convert object to primitive value"); + } + return r === void 0 && (r = "number"), xa(e, r); + }; + }); + var je = y((Gl, eu) => { + var Ma = Zt(), ja = or(); + eu.exports = function(e) { + var r = Ma(e, "string"); + return ja(r) ? r : r + ""; + }; + }); + var uu = y((Vl, tu) => { + var $a = G(), ru = De(), dr = $a.document, Ua = ru(dr) && ru(dr.createElement); + tu.exports = function(e) { + return Ua ? dr.createElement(e) : {}; + }; + }); + var Er = y((Xl, nu) => { + var Ga = oe(), Va = se(), Xa = uu(); + nu.exports = !Ga && !Va(function() { + return Object.defineProperty(Xa("div"), "a", { get: function() { + return 7; + } }).a != 7; + }); + }); + var Cr = y((au) => { + var Ha = oe(), za = ce(), Wa = rt(), Ya = qe(), Qa = Re(), Ka = je(), Ja = ae(), Za = Er(), su = Object.getOwnPropertyDescriptor; + au.f = Ha ? su : function(r, t) { + if (r = Qa(r), t = Ka(t), Za) + try { + return su(r, t); + } catch { + } + if (Ja(r, t)) + return Ya(!za(Wa.f, r, t), r[t]); + }; + }); + var ou = y((zl, iu) => { + var ei = oe(), ri = se(); + iu.exports = ei && ri(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: false }).prototype != 42; + }); + }); + var de = y((Wl, Du) => { + var cu = G(), ti = De(), ui = cu.String, ni = cu.TypeError; + Du.exports = function(e) { + if (ti(e)) + return e; + throw ni(ui(e) + " is not an object"); + }; + }); + var Ue = y((hu) => { + var si = G(), ai = oe(), ii = Er(), oi = ou(), $e = de(), lu = je(), ci = si.TypeError, mr = Object.defineProperty, Di = Object.getOwnPropertyDescriptor, gr = "enumerable", Fr = "configurable", Ar = "writable"; + hu.f = ai ? oi ? function(r, t, s) { + if ($e(r), t = lu(t), $e(s), typeof r == "function" && t === "prototype" && "value" in s && Ar in s && !s[Ar]) { + var c = Di(r, t); + c && c[Ar] && (r[t] = s.value, s = { configurable: Fr in s ? s[Fr] : c[Fr], enumerable: gr in s ? s[gr] : c[gr], writable: false }); + } + return mr(r, t, s); + } : mr : function(r, t, s) { + if ($e(r), t = lu(t), $e(s), ii) + try { + return mr(r, t, s); + } catch { + } + if ("get" in s || "set" in s) + throw ci("Accessors not supported"); + return "value" in s && (r[t] = s.value), r; + }; + }); + var Ge = y((Ql, pu) => { + var li = oe(), hi = Ue(), pi = qe(); + pu.exports = li ? function(e, r, t) { + return hi.f(e, r, pi(1, t)); + } : function(e, r, t) { + return e[r] = t, e; + }; + }); + var Ve = y((Kl, fu) => { + var fi = Q(), di = K(), vr = Me(), Ei = fi(Function.toString); + di(vr.inspectSource) || (vr.inspectSource = function(e) { + return Ei(e); + }); + fu.exports = vr.inspectSource; + }); + var Cu = y((Jl, Eu) => { + var Ci = G(), mi = K(), gi = Ve(), du = Ci.WeakMap; + Eu.exports = mi(du) && /native code/.test(gi(du)); + }); + var Fu = y((Zl, gu) => { + var Fi = hr(), Ai = fr(), mu = Fi("keys"); + gu.exports = function(e) { + return mu[e] || (mu[e] = Ai(e)); + }; + }); + var _r = y((e2, Au) => { + Au.exports = {}; + }); + var Bu = y((r2, Tu) => { + var vi = Cu(), yu = G(), Sr = Q(), _i = De(), Si = Ge(), yr = ae(), Tr = Me(), yi = Fu(), Ti = _r(), vu = "Object already initialized", br = yu.TypeError, Bi = yu.WeakMap, Xe, Ae, He, bi = function(e) { + return He(e) ? Ae(e) : Xe(e, {}); + }, wi = function(e) { + return function(r) { + var t; + if (!_i(r) || (t = Ae(r)).type !== e) + throw br("Incompatible receiver, " + e + " required"); + return t; + }; + }; + vi || Tr.state ? (ie = Tr.state || (Tr.state = new Bi()), _u = Sr(ie.get), Br = Sr(ie.has), Su = Sr(ie.set), Xe = function(e, r) { + if (Br(ie, e)) + throw new br(vu); + return r.facade = e, Su(ie, e, r), r; + }, Ae = function(e) { + return _u(ie, e) || {}; + }, He = function(e) { + return Br(ie, e); + }) : (pe = yi("state"), Ti[pe] = true, Xe = function(e, r) { + if (yr(e, pe)) + throw new br(vu); + return r.facade = e, Si(e, pe, r), r; + }, Ae = function(e) { + return yr(e, pe) ? e[pe] : {}; + }, He = function(e) { + return yr(e, pe); + }); + var ie, _u, Br, Su, pe; + Tu.exports = { set: Xe, get: Ae, has: He, enforce: bi, getterFor: wi }; + }); + var Nu = y((t2, wu) => { + var wr = oe(), Ni = ae(), bu = Function.prototype, Oi = wr && Object.getOwnPropertyDescriptor, Nr = Ni(bu, "name"), qi = Nr && function() { + }.name === "something", Ii = Nr && (!wr || wr && Oi(bu, "name").configurable); + wu.exports = { EXISTS: Nr, PROPER: qi, CONFIGURABLE: Ii }; + }); + var xu = y((u2, Ru) => { + var Ri = G(), Ou = K(), xi = ae(), qu = Ge(), Pi = Le(), ki = Ve(), Iu = Bu(), Li = Nu().CONFIGURABLE, Mi = Iu.get, ji = Iu.enforce, $i = String(String).split("String"); + (Ru.exports = function(e, r, t, s) { + var c = s ? !!s.unsafe : false, n = s ? !!s.enumerable : false, a = s ? !!s.noTargetGet : false, p = s && s.name !== void 0 ? s.name : r, D; + if (Ou(t) && (String(p).slice(0, 7) === "Symbol(" && (p = "[" + String(p).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!xi(t, "name") || Li && t.name !== p) && qu(t, "name", p), D = ji(t), D.source || (D.source = $i.join(typeof p == "string" ? p : ""))), e === Ri) { + n ? e[r] = t : Pi(r, t); + return; + } else + c ? !a && e[r] && (n = true) : delete e[r]; + n ? e[r] = t : qu(e, r, t); + })(Function.prototype, "toString", function() { + return Ou(this) && Mi(this).source || ki(this); + }); + }); + var Or = y((n2, Pu) => { + var Ui = Math.ceil, Gi = Math.floor; + Pu.exports = function(e) { + var r = +e; + return r !== r || r === 0 ? 0 : (r > 0 ? Gi : Ui)(r); + }; + }); + var Lu = y((s2, ku) => { + var Vi = Or(), Xi = Math.max, Hi = Math.min; + ku.exports = function(e, r) { + var t = Vi(e); + return t < 0 ? Xi(t + r, 0) : Hi(t, r); + }; + }); + var ju = y((a2, Mu) => { + var zi = Or(), Wi = Math.min; + Mu.exports = function(e) { + return e > 0 ? Wi(zi(e), 9007199254740991) : 0; + }; + }); + var ve = y((i2, $u) => { + var Yi = ju(); + $u.exports = function(e) { + return Yi(e.length); + }; + }); + var Vu = y((o2, Gu) => { + var Qi = Re(), Ki = Lu(), Ji = ve(), Uu = function(e) { + return function(r, t, s) { + var c = Qi(r), n = Ji(c), a = Ki(s, n), p; + if (e && t != t) { + for (; n > a; ) + if (p = c[a++], p != p) + return true; + } else + for (; n > a; a++) + if ((e || a in c) && c[a] === t) + return e || a || 0; + return !e && -1; + }; + }; + Gu.exports = { includes: Uu(true), indexOf: Uu(false) }; + }); + var zu = y((c2, Hu) => { + var Zi = Q(), qr = ae(), eo = Re(), ro = Vu().indexOf, to = _r(), Xu = Zi([].push); + Hu.exports = function(e, r) { + var t = eo(e), s = 0, c = [], n; + for (n in t) + !qr(to, n) && qr(t, n) && Xu(c, n); + for (; r.length > s; ) + qr(t, n = r[s++]) && (~ro(c, n) || Xu(c, n)); + return c; + }; + }); + var Yu = y((D2, Wu) => { + Wu.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }); + var Ku = y((Qu) => { + var uo = zu(), no = Yu(), so = no.concat("length", "prototype"); + Qu.f = Object.getOwnPropertyNames || function(r) { + return uo(r, so); + }; + }); + var Zu = y((Ju) => { + Ju.f = Object.getOwnPropertySymbols; + }); + var rn = y((p2, en) => { + var ao = ge(), io = Q(), oo = Ku(), co = Zu(), Do = de(), lo = io([].concat); + en.exports = ao("Reflect", "ownKeys") || function(r) { + var t = oo.f(Do(r)), s = co.f; + return s ? lo(t, s(r)) : t; + }; + }); + var nn = y((f2, un) => { + var tn = ae(), ho = rn(), po = Cr(), fo = Ue(); + un.exports = function(e, r, t) { + for (var s = ho(r), c = fo.f, n = po.f, a = 0; a < s.length; a++) { + var p = s[a]; + !tn(e, p) && !(t && tn(t, p)) && c(e, p, n(r, p)); + } + }; + }); + var an = y((d2, sn) => { + var Eo = se(), Co = K(), mo = /#|\.prototype\./, _e = function(e, r) { + var t = Fo[go(e)]; + return t == vo ? true : t == Ao ? false : Co(r) ? Eo(r) : !!r; + }, go = _e.normalize = function(e) { + return String(e).replace(mo, ".").toLowerCase(); + }, Fo = _e.data = {}, Ao = _e.NATIVE = "N", vo = _e.POLYFILL = "P"; + sn.exports = _e; + }); + var ze = y((E2, on) => { + var Ir = G(), _o = Cr().f, So = Ge(), yo = xu(), To = Le(), Bo = nn(), bo = an(); + on.exports = function(e, r) { + var t = e.target, s = e.global, c = e.stat, n, a, p, D, g, i; + if (s ? a = Ir : c ? a = Ir[t] || To(t, {}) : a = (Ir[t] || {}).prototype, a) + for (p in r) { + if (g = r[p], e.noTargetGet ? (i = _o(a, p), D = i && i.value) : D = a[p], n = bo(s ? p : t + (c ? "." : "#") + p, e.forced), !n && D !== void 0) { + if (typeof g == typeof D) + continue; + Bo(g, D); + } + (e.sham || D && D.sham) && So(g, "sham", true), yo(a, p, g, e); + } + }; + }); + var cn = y(() => { + var wo = ze(), No = G(); + wo({ global: true }, { globalThis: No }); + }); + var Dn = y(() => { + cn(); + }); + var Rr = y((A2, ln) => { + var Oo = Ie(); + ln.exports = Array.isArray || function(r) { + return Oo(r) == "Array"; + }; + }); + var xr = y((v2, pn) => { + var hn = Q(), qo = Fe(), Io = Ne(), Ro = hn(hn.bind); + pn.exports = function(e, r) { + return qo(e), r === void 0 ? e : Io ? Ro(e, r) : function() { + return e.apply(r, arguments); + }; + }; + }); + var En = y((_2, dn) => { + "use strict"; + var xo = G(), Po = Rr(), ko = ve(), Lo = xr(), Mo = xo.TypeError, fn = function(e, r, t, s, c, n, a, p) { + for (var D = c, g = 0, i = a ? Lo(a, p) : false, l, h; g < s; ) { + if (g in t) { + if (l = i ? i(t[g], g, r) : t[g], n > 0 && Po(l)) + h = ko(l), D = fn(e, r, l, h, D, n - 1) - 1; + else { + if (D >= 9007199254740991) + throw Mo("Exceed the acceptable array length"); + e[D] = l; + } + D++; + } + g++; + } + return D; + }; + dn.exports = fn; + }); + var gn = y((S2, mn) => { + var jo = he(), $o = jo("toStringTag"), Cn = {}; + Cn[$o] = "z"; + mn.exports = String(Cn) === "[object z]"; + }); + var Pr = y((y2, Fn) => { + var Uo = G(), Go = gn(), Vo = K(), We = Ie(), Xo = he(), Ho = Xo("toStringTag"), zo = Uo.Object, Wo = We(function() { + return arguments; + }()) == "Arguments", Yo = function(e, r) { + try { + return e[r]; + } catch { + } + }; + Fn.exports = Go ? We : function(e) { + var r, t, s; + return e === void 0 ? "Undefined" : e === null ? "Null" : typeof (t = Yo(r = zo(e), Ho)) == "string" ? t : Wo ? We(r) : (s = We(r)) == "Object" && Vo(r.callee) ? "Arguments" : s; + }; + }); + var Tn = y((T2, yn) => { + var Qo = Q(), Ko = se(), An = K(), Jo = Pr(), Zo = ge(), ec = Ve(), vn = function() { + }, rc = [], _n = Zo("Reflect", "construct"), kr = /^\s*(?:class|function)\b/, tc = Qo(kr.exec), uc = !kr.exec(vn), Se = function(r) { + if (!An(r)) + return false; + try { + return _n(vn, rc, r), true; + } catch { + return false; + } + }, Sn = function(r) { + if (!An(r)) + return false; + switch (Jo(r)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return false; + } + try { + return uc || !!tc(kr, ec(r)); + } catch { + return true; + } + }; + Sn.sham = true; + yn.exports = !_n || Ko(function() { + var e; + return Se(Se.call) || !Se(Object) || !Se(function() { + e = true; + }) || e; + }) ? Sn : Se; + }); + var Nn = y((B2, wn) => { + var nc = G(), Bn = Rr(), sc = Tn(), ac = De(), ic = he(), oc = ic("species"), bn = nc.Array; + wn.exports = function(e) { + var r; + return Bn(e) && (r = e.constructor, sc(r) && (r === bn || Bn(r.prototype)) ? r = void 0 : ac(r) && (r = r[oc], r === null && (r = void 0))), r === void 0 ? bn : r; + }; + }); + var qn = y((b2, On) => { + var cc = Nn(); + On.exports = function(e, r) { + return new (cc(e))(r === 0 ? 0 : r); + }; + }); + var In = y(() => { + "use strict"; + var Dc = ze(), lc = En(), hc = Fe(), pc = pr(), fc = ve(), dc = qn(); + Dc({ target: "Array", proto: true }, { flatMap: function(r) { + var t = pc(this), s = fc(t), c; + return hc(r), c = dc(t, 0), c.length = lc(c, t, t, s, 0, 1, r, arguments.length > 1 ? arguments[1] : void 0), c; + } }); + }); + var Lr = y((O2, Rn) => { + Rn.exports = {}; + }); + var Pn = y((q2, xn) => { + var Ec = he(), Cc = Lr(), mc = Ec("iterator"), gc = Array.prototype; + xn.exports = function(e) { + return e !== void 0 && (Cc.Array === e || gc[mc] === e); + }; + }); + var Mr = y((I2, Ln) => { + var Fc = Pr(), kn = ke(), Ac = Lr(), vc = he(), _c = vc("iterator"); + Ln.exports = function(e) { + if (e != null) + return kn(e, _c) || kn(e, "@@iterator") || Ac[Fc(e)]; + }; + }); + var jn = y((R2, Mn) => { + var Sc = G(), yc = ce(), Tc = Fe(), Bc = de(), bc = Pe(), wc = Mr(), Nc = Sc.TypeError; + Mn.exports = function(e, r) { + var t = arguments.length < 2 ? wc(e) : r; + if (Tc(t)) + return Bc(yc(t, e)); + throw Nc(bc(e) + " is not iterable"); + }; + }); + var Gn = y((x2, Un) => { + var Oc = ce(), $n = de(), qc = ke(); + Un.exports = function(e, r, t) { + var s, c; + $n(e); + try { + if (s = qc(e, "return"), !s) { + if (r === "throw") + throw t; + return t; + } + s = Oc(s, e); + } catch (n) { + c = true, s = n; + } + if (r === "throw") + throw t; + if (c) + throw s; + return $n(s), t; + }; + }); + var Wn = y((P2, zn) => { + var Ic = G(), Rc = xr(), xc = ce(), Pc = de(), kc = Pe(), Lc = Pn(), Mc = ve(), Vn = nr(), jc = jn(), $c = Mr(), Xn = Gn(), Uc = Ic.TypeError, Ye = function(e, r) { + this.stopped = e, this.result = r; + }, Hn = Ye.prototype; + zn.exports = function(e, r, t) { + var s = t && t.that, c = !!(t && t.AS_ENTRIES), n = !!(t && t.IS_ITERATOR), a = !!(t && t.INTERRUPTED), p = Rc(r, s), D, g, i, l, h, C, d, m = function(B) { + return D && Xn(D, "normal", B), new Ye(true, B); + }, T = function(B) { + return c ? (Pc(B), a ? p(B[0], B[1], m) : p(B[0], B[1])) : a ? p(B, m) : p(B); + }; + if (n) + D = e; + else { + if (g = $c(e), !g) + throw Uc(kc(e) + " is not iterable"); + if (Lc(g)) { + for (i = 0, l = Mc(e); l > i; i++) + if (h = T(e[i]), h && Vn(Hn, h)) + return h; + return new Ye(false); + } + D = jc(e, g); + } + for (C = D.next; !(d = xc(C, D)).done; ) { + try { + h = T(d.value); + } catch (B) { + Xn(D, "throw", B); + } + if (typeof h == "object" && h && Vn(Hn, h)) + return h; + } + return new Ye(false); + }; + }); + var Qn = y((k2, Yn) => { + "use strict"; + var Gc = je(), Vc = Ue(), Xc = qe(); + Yn.exports = function(e, r, t) { + var s = Gc(r); + s in e ? Vc.f(e, s, Xc(0, t)) : e[s] = t; + }; + }); + var Kn = y(() => { + var Hc = ze(), zc = Wn(), Wc = Qn(); + Hc({ target: "Object", stat: true }, { fromEntries: function(r) { + var t = {}; + return zc(r, function(s, c) { + Wc(t, s, c); + }, { AS_ENTRIES: true }), t; + } }); + }); + var il = y((j2, Bs) => { + var Yc = ["cliName", "cliCategory", "cliDescription"], Jn, Zn, es, rs, ts, us; + function Qc(e, r) { + if (e == null) + return {}; + var t = Kc(e, r), s, c; + if (Object.getOwnPropertySymbols) { + var n = Object.getOwnPropertySymbols(e); + for (c = 0; c < n.length; c++) + s = n[c], !(r.indexOf(s) >= 0) && (!Object.prototype.propertyIsEnumerable.call(e, s) || (t[s] = e[s])); + } + return t; + } + function Kc(e, r) { + if (e == null) + return {}; + var t = {}, s = Object.keys(e), c, n; + for (n = 0; n < s.length; n++) + c = s[n], !(r.indexOf(c) >= 0) && (t[c] = e[c]); + return t; + } + function Ee(e, r) { + return r || (r = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(r) } })); + } + Dn(); + In(); + Kn(); + var Jc = Object.create, Je = Object.defineProperty, Zc = Object.getOwnPropertyDescriptor, $r = Object.getOwnPropertyNames, eD = Object.getPrototypeOf, rD = Object.prototype.hasOwnProperty, Ce = (e, r) => function() { + return e && (r = (0, e[$r(e)[0]])(e = 0)), r; + }, I = (e, r) => function() { + return r || (0, e[$r(e)[0]])((r = { exports: {} }).exports, r), r.exports; + }, cs = (e, r) => { + for (var t in r) + Je(e, t, { get: r[t], enumerable: true }); + }, Ds = (e, r, t, s) => { + if (r && typeof r == "object" || typeof r == "function") + for (let c of $r(r)) + !rD.call(e, c) && c !== t && Je(e, c, { get: () => r[c], enumerable: !(s = Zc(r, c)) || s.enumerable }); + return e; + }, tD = (e, r, t) => (t = e != null ? Jc(eD(e)) : {}, Ds(r || !e || !e.__esModule ? Je(t, "default", { value: e, enumerable: true }) : t, e)), ls = (e) => Ds(Je({}, "__esModule", { value: true }), e), ns, ss, ye, q = Ce({ ""() { + ns = {}, ss = [], ye = { env: ns, argv: ss }; + } }), hs = I({ "node_modules/angular-html-parser/lib/compiler/src/chars.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }), e.$EOF = 0, e.$BSPACE = 8, e.$TAB = 9, e.$LF = 10, e.$VTAB = 11, e.$FF = 12, e.$CR = 13, e.$SPACE = 32, e.$BANG = 33, e.$DQ = 34, e.$HASH = 35, e.$$ = 36, e.$PERCENT = 37, e.$AMPERSAND = 38, e.$SQ = 39, e.$LPAREN = 40, e.$RPAREN = 41, e.$STAR = 42, e.$PLUS = 43, e.$COMMA = 44, e.$MINUS = 45, e.$PERIOD = 46, e.$SLASH = 47, e.$COLON = 58, e.$SEMICOLON = 59, e.$LT = 60, e.$EQ = 61, e.$GT = 62, e.$QUESTION = 63, e.$0 = 48, e.$7 = 55, e.$9 = 57, e.$A = 65, e.$E = 69, e.$F = 70, e.$X = 88, e.$Z = 90, e.$LBRACKET = 91, e.$BACKSLASH = 92, e.$RBRACKET = 93, e.$CARET = 94, e.$_ = 95, e.$a = 97, e.$b = 98, e.$e = 101, e.$f = 102, e.$n = 110, e.$r = 114, e.$t = 116, e.$u = 117, e.$v = 118, e.$x = 120, e.$z = 122, e.$LBRACE = 123, e.$BAR = 124, e.$RBRACE = 125, e.$NBSP = 160, e.$PIPE = 124, e.$TILDA = 126, e.$AT = 64, e.$BT = 96; + function r(p) { + return p >= e.$TAB && p <= e.$SPACE || p == e.$NBSP; + } + e.isWhitespace = r; + function t(p) { + return e.$0 <= p && p <= e.$9; + } + e.isDigit = t; + function s(p) { + return p >= e.$a && p <= e.$z || p >= e.$A && p <= e.$Z; + } + e.isAsciiLetter = s; + function c(p) { + return p >= e.$a && p <= e.$f || p >= e.$A && p <= e.$F || t(p); + } + e.isAsciiHexDigit = c; + function n(p) { + return p === e.$LF || p === e.$CR; + } + e.isNewLine = n; + function a(p) { + return e.$0 <= p && p <= e.$7; + } + e.isOctalDigit = a; + } }), uD = I({ "node_modules/angular-html-parser/lib/compiler/src/aot/static_symbol.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = class { + constructor(s, c, n) { + this.filePath = s, this.name = c, this.members = n; + } + assertNoMembers() { + if (this.members.length) + throw new Error("Illegal state: symbol without members expected, but got ".concat(JSON.stringify(this), ".")); + } + }; + e.StaticSymbol = r; + var t = class { + constructor() { + this.cache = /* @__PURE__ */ new Map(); + } + get(s, c, n) { + n = n || []; + let a = n.length ? ".".concat(n.join(".")) : "", p = '"'.concat(s, '".').concat(c).concat(a), D = this.cache.get(p); + return D || (D = new r(s, c, n), this.cache.set(p, D)), D; + } + }; + e.StaticSymbolCache = t; + } }), nD = I({ "node_modules/angular-html-parser/lib/compiler/src/util.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = /-+([a-z0-9])/g; + function t(o) { + return o.replace(r, function() { + for (var E = arguments.length, f = new Array(E), F = 0; F < E; F++) + f[F] = arguments[F]; + return f[1].toUpperCase(); + }); + } + e.dashCaseToCamelCase = t; + function s(o, E) { + return n(o, ":", E); + } + e.splitAtColon = s; + function c(o, E) { + return n(o, ".", E); + } + e.splitAtPeriod = c; + function n(o, E, f) { + let F = o.indexOf(E); + return F == -1 ? f : [o.slice(0, F).trim(), o.slice(F + 1).trim()]; + } + function a(o, E, f) { + return Array.isArray(o) ? E.visitArray(o, f) : A(o) ? E.visitStringMap(o, f) : o == null || typeof o == "string" || typeof o == "number" || typeof o == "boolean" ? E.visitPrimitive(o, f) : E.visitOther(o, f); + } + e.visitValue = a; + function p(o) { + return o != null; + } + e.isDefined = p; + function D(o) { + return o === void 0 ? null : o; + } + e.noUndefined = D; + var g = class { + visitArray(o, E) { + return o.map((f) => a(f, this, E)); + } + visitStringMap(o, E) { + let f = {}; + return Object.keys(o).forEach((F) => { + f[F] = a(o[F], this, E); + }), f; + } + visitPrimitive(o, E) { + return o; + } + visitOther(o, E) { + return o; + } + }; + e.ValueTransformer = g, e.SyncAsync = { assertSync: (o) => { + if (_(o)) + throw new Error("Illegal state: value cannot be a promise"); + return o; + }, then: (o, E) => _(o) ? o.then(E) : E(o), all: (o) => o.some(_) ? Promise.all(o) : o }; + function i(o) { + throw new Error("Internal Error: ".concat(o)); + } + e.error = i; + function l(o, E) { + let f = Error(o); + return f[h] = true, E && (f[C] = E), f; + } + e.syntaxError = l; + var h = "ngSyntaxError", C = "ngParseErrors"; + function d(o) { + return o[h]; + } + e.isSyntaxError = d; + function m(o) { + return o[C] || []; + } + e.getParseErrors = m; + function T(o) { + return o.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1"); + } + e.escapeRegExp = T; + var B = Object.getPrototypeOf({}); + function A(o) { + return typeof o == "object" && o !== null && Object.getPrototypeOf(o) === B; + } + function N(o) { + let E = ""; + for (let f = 0; f < o.length; f++) { + let F = o.charCodeAt(f); + if (F >= 55296 && F <= 56319 && o.length > f + 1) { + let P = o.charCodeAt(f + 1); + P >= 56320 && P <= 57343 && (f++, F = (F - 55296 << 10) + P - 56320 + 65536); + } + F <= 127 ? E += String.fromCharCode(F) : F <= 2047 ? E += String.fromCharCode(F >> 6 & 31 | 192, F & 63 | 128) : F <= 65535 ? E += String.fromCharCode(F >> 12 | 224, F >> 6 & 63 | 128, F & 63 | 128) : F <= 2097151 && (E += String.fromCharCode(F >> 18 & 7 | 240, F >> 12 & 63 | 128, F >> 6 & 63 | 128, F & 63 | 128)); + } + return E; + } + e.utf8Encode = N; + function R(o) { + if (typeof o == "string") + return o; + if (o instanceof Array) + return "[" + o.map(R).join(", ") + "]"; + if (o == null) + return "" + o; + if (o.overriddenName) + return "".concat(o.overriddenName); + if (o.name) + return "".concat(o.name); + if (!o.toString) + return "object"; + let E = o.toString(); + if (E == null) + return "" + E; + let f = E.indexOf(` +`); + return f === -1 ? E : E.substring(0, f); + } + e.stringify = R; + function $(o) { + return typeof o == "function" && o.hasOwnProperty("__forward_ref__") ? o() : o; + } + e.resolveForwardRef = $; + function _(o) { + return !!o && typeof o.then == "function"; + } + e.isPromise = _; + var O = class { + constructor(o) { + this.full = o; + let E = o.split("."); + this.major = E[0], this.minor = E[1], this.patch = E.slice(2).join("."); + } + }; + e.Version = O; + var x = typeof window < "u" && window, k = typeof self < "u" && typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope && self, M = typeof globalThis < "u" && globalThis, u = M || x || k; + e.global = u; + } }), sD = I({ "node_modules/angular-html-parser/lib/compiler/src/compile_metadata.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = uD(), t = nD(), s = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/; + function c(f) { + return f.replace(/\W/g, "_"); + } + e.sanitizeIdentifier = c; + var n = 0; + function a(f) { + if (!f || !f.reference) + return null; + let F = f.reference; + if (F instanceof r.StaticSymbol) + return F.name; + if (F.__anonymousType) + return F.__anonymousType; + let P = t.stringify(F); + return P.indexOf("(") >= 0 ? (P = "anonymous_".concat(n++), F.__anonymousType = P) : P = c(P), P; + } + e.identifierName = a; + function p(f) { + let F = f.reference; + return F instanceof r.StaticSymbol ? F.filePath : "./".concat(t.stringify(F)); + } + e.identifierModuleUrl = p; + function D(f, F) { + return "View_".concat(a({ reference: f }), "_").concat(F); + } + e.viewClassName = D; + function g(f) { + return "RenderType_".concat(a({ reference: f })); + } + e.rendererTypeName = g; + function i(f) { + return "HostView_".concat(a({ reference: f })); + } + e.hostViewClassName = i; + function l(f) { + return "".concat(a({ reference: f }), "NgFactory"); + } + e.componentFactoryName = l; + var h; + (function(f) { + f[f.Pipe = 0] = "Pipe", f[f.Directive = 1] = "Directive", f[f.NgModule = 2] = "NgModule", f[f.Injectable = 3] = "Injectable"; + })(h = e.CompileSummaryKind || (e.CompileSummaryKind = {})); + function C(f) { + return f.value != null ? c(f.value) : a(f.identifier); + } + e.tokenName = C; + function d(f) { + return f.identifier != null ? f.identifier.reference : f.value; + } + e.tokenReference = d; + var m = class { + constructor() { + let { moduleUrl: f, styles: F, styleUrls: P } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + this.moduleUrl = f || null, this.styles = _(F), this.styleUrls = _(P); + } + }; + e.CompileStylesheetMetadata = m; + var T = class { + constructor(f) { + let { encapsulation: F, template: P, templateUrl: j, htmlAst: W, styles: X, styleUrls: H, externalStylesheets: z, animations: J, ngContentSelectors: Z, interpolation: ee, isInline: v, preserveWhitespaces: S } = f; + if (this.encapsulation = F, this.template = P, this.templateUrl = j, this.htmlAst = W, this.styles = _(X), this.styleUrls = _(H), this.externalStylesheets = _(z), this.animations = J ? x(J) : [], this.ngContentSelectors = Z || [], ee && ee.length != 2) + throw new Error("'interpolation' should have a start and an end symbol."); + this.interpolation = ee, this.isInline = v, this.preserveWhitespaces = S; + } + toSummary() { + return { ngContentSelectors: this.ngContentSelectors, encapsulation: this.encapsulation, styles: this.styles, animations: this.animations }; + } + }; + e.CompileTemplateMetadata = T; + var B = class { + static create(f) { + let { isHost: F, type: P, isComponent: j, selector: W, exportAs: X, changeDetection: H, inputs: z, outputs: J, host: Z, providers: ee, viewProviders: v, queries: S, guards: b, viewQueries: w, entryComponents: L, template: U, componentViewType: V, rendererType: Y, componentFactory: ue } = f, Be = {}, be = {}, Vr = {}; + Z != null && Object.keys(Z).forEach((re) => { + let ne = Z[re], me = re.match(s); + me === null ? Vr[re] = ne : me[1] != null ? be[me[1]] = ne : me[2] != null && (Be[me[2]] = ne); + }); + let Xr = {}; + z != null && z.forEach((re) => { + let ne = t.splitAtColon(re, [re, re]); + Xr[ne[0]] = ne[1]; + }); + let Hr = {}; + return J != null && J.forEach((re) => { + let ne = t.splitAtColon(re, [re, re]); + Hr[ne[0]] = ne[1]; + }), new B({ isHost: F, type: P, isComponent: !!j, selector: W, exportAs: X, changeDetection: H, inputs: Xr, outputs: Hr, hostListeners: Be, hostProperties: be, hostAttributes: Vr, providers: ee, viewProviders: v, queries: S, guards: b, viewQueries: w, entryComponents: L, template: U, componentViewType: V, rendererType: Y, componentFactory: ue }); + } + constructor(f) { + let { isHost: F, type: P, isComponent: j, selector: W, exportAs: X, changeDetection: H, inputs: z, outputs: J, hostListeners: Z, hostProperties: ee, hostAttributes: v, providers: S, viewProviders: b, queries: w, guards: L, viewQueries: U, entryComponents: V, template: Y, componentViewType: ue, rendererType: Be, componentFactory: be } = f; + this.isHost = !!F, this.type = P, this.isComponent = j, this.selector = W, this.exportAs = X, this.changeDetection = H, this.inputs = z, this.outputs = J, this.hostListeners = Z, this.hostProperties = ee, this.hostAttributes = v, this.providers = _(S), this.viewProviders = _(b), this.queries = _(w), this.guards = L, this.viewQueries = _(U), this.entryComponents = _(V), this.template = Y, this.componentViewType = ue, this.rendererType = Be, this.componentFactory = be; + } + toSummary() { + return { summaryKind: h.Directive, type: this.type, isComponent: this.isComponent, selector: this.selector, exportAs: this.exportAs, inputs: this.inputs, outputs: this.outputs, hostListeners: this.hostListeners, hostProperties: this.hostProperties, hostAttributes: this.hostAttributes, providers: this.providers, viewProviders: this.viewProviders, queries: this.queries, guards: this.guards, viewQueries: this.viewQueries, entryComponents: this.entryComponents, changeDetection: this.changeDetection, template: this.template && this.template.toSummary(), componentViewType: this.componentViewType, rendererType: this.rendererType, componentFactory: this.componentFactory }; + } + }; + e.CompileDirectiveMetadata = B; + var A = class { + constructor(f) { + let { type: F, name: P, pure: j } = f; + this.type = F, this.name = P, this.pure = !!j; + } + toSummary() { + return { summaryKind: h.Pipe, type: this.type, name: this.name, pure: this.pure }; + } + }; + e.CompilePipeMetadata = A; + var N = class { + }; + e.CompileShallowModuleMetadata = N; + var R = class { + constructor(f) { + let { type: F, providers: P, declaredDirectives: j, exportedDirectives: W, declaredPipes: X, exportedPipes: H, entryComponents: z, bootstrapComponents: J, importedModules: Z, exportedModules: ee, schemas: v, transitiveModule: S, id: b } = f; + this.type = F || null, this.declaredDirectives = _(j), this.exportedDirectives = _(W), this.declaredPipes = _(X), this.exportedPipes = _(H), this.providers = _(P), this.entryComponents = _(z), this.bootstrapComponents = _(J), this.importedModules = _(Z), this.exportedModules = _(ee), this.schemas = _(v), this.id = b || null, this.transitiveModule = S || null; + } + toSummary() { + let f = this.transitiveModule; + return { summaryKind: h.NgModule, type: this.type, entryComponents: f.entryComponents, providers: f.providers, modules: f.modules, exportedDirectives: f.exportedDirectives, exportedPipes: f.exportedPipes }; + } + }; + e.CompileNgModuleMetadata = R; + var $ = class { + constructor() { + this.directivesSet = /* @__PURE__ */ new Set(), this.directives = [], this.exportedDirectivesSet = /* @__PURE__ */ new Set(), this.exportedDirectives = [], this.pipesSet = /* @__PURE__ */ new Set(), this.pipes = [], this.exportedPipesSet = /* @__PURE__ */ new Set(), this.exportedPipes = [], this.modulesSet = /* @__PURE__ */ new Set(), this.modules = [], this.entryComponentsSet = /* @__PURE__ */ new Set(), this.entryComponents = [], this.providers = []; + } + addProvider(f, F) { + this.providers.push({ provider: f, module: F }); + } + addDirective(f) { + this.directivesSet.has(f.reference) || (this.directivesSet.add(f.reference), this.directives.push(f)); + } + addExportedDirective(f) { + this.exportedDirectivesSet.has(f.reference) || (this.exportedDirectivesSet.add(f.reference), this.exportedDirectives.push(f)); + } + addPipe(f) { + this.pipesSet.has(f.reference) || (this.pipesSet.add(f.reference), this.pipes.push(f)); + } + addExportedPipe(f) { + this.exportedPipesSet.has(f.reference) || (this.exportedPipesSet.add(f.reference), this.exportedPipes.push(f)); + } + addModule(f) { + this.modulesSet.has(f.reference) || (this.modulesSet.add(f.reference), this.modules.push(f)); + } + addEntryComponent(f) { + this.entryComponentsSet.has(f.componentType) || (this.entryComponentsSet.add(f.componentType), this.entryComponents.push(f)); + } + }; + e.TransitiveCompileNgModuleMetadata = $; + function _(f) { + return f || []; + } + var O = class { + constructor(f, F) { + let { useClass: P, useValue: j, useExisting: W, useFactory: X, deps: H, multi: z } = F; + this.token = f, this.useClass = P || null, this.useValue = j, this.useExisting = W, this.useFactory = X || null, this.dependencies = H || null, this.multi = !!z; + } + }; + e.ProviderMeta = O; + function x(f) { + return f.reduce((F, P) => { + let j = Array.isArray(P) ? x(P) : P; + return F.concat(j); + }, []); + } + e.flatten = x; + function k(f) { + return f.replace(/(\w+:\/\/[\w:-]+)?(\/+)?/, "ng:///"); + } + function M(f, F, P) { + let j; + return P.isInline ? F.type.reference instanceof r.StaticSymbol ? j = "".concat(F.type.reference.filePath, ".").concat(F.type.reference.name, ".html") : j = "".concat(a(f), "/").concat(a(F.type), ".html") : j = P.templateUrl, F.type.reference instanceof r.StaticSymbol ? j : k(j); + } + e.templateSourceUrl = M; + function u(f, F) { + let P = f.moduleUrl.split(/\/\\/g), j = P[P.length - 1]; + return k("css/".concat(F).concat(j, ".ngstyle.js")); + } + e.sharedStylesheetJitUrl = u; + function o(f) { + return k("".concat(a(f.type), "/module.ngfactory.js")); + } + e.ngModuleJitUrl = o; + function E(f, F) { + return k("".concat(a(f), "/").concat(a(F.type), ".ngfactory.js")); + } + e.templateJitUrl = E; + } }), Te = I({ "node_modules/angular-html-parser/lib/compiler/src/parse_util.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = hs(), t = sD(), s = class { + constructor(i, l, h, C) { + this.file = i, this.offset = l, this.line = h, this.col = C; + } + toString() { + return this.offset != null ? "".concat(this.file.url, "@").concat(this.line, ":").concat(this.col) : this.file.url; + } + moveBy(i) { + let l = this.file.content, h = l.length, C = this.offset, d = this.line, m = this.col; + for (; C > 0 && i < 0; ) + if (C--, i++, l.charCodeAt(C) == r.$LF) { + d--; + let B = l.substr(0, C - 1).lastIndexOf(String.fromCharCode(r.$LF)); + m = B > 0 ? C - B : C; + } else + m--; + for (; C < h && i > 0; ) { + let T = l.charCodeAt(C); + C++, i--, T == r.$LF ? (d++, m = 0) : m++; + } + return new s(this.file, C, d, m); + } + getContext(i, l) { + let h = this.file.content, C = this.offset; + if (C != null) { + C > h.length - 1 && (C = h.length - 1); + let d = C, m = 0, T = 0; + for (; m < i && C > 0 && (C--, m++, !(h[C] == ` +` && ++T == l)); ) + ; + for (m = 0, T = 0; m < i && d < h.length - 1 && (d++, m++, !(h[d] == ` +` && ++T == l)); ) + ; + return { before: h.substring(C, this.offset), after: h.substring(this.offset, d + 1) }; + } + return null; + } + }; + e.ParseLocation = s; + var c = class { + constructor(i, l) { + this.content = i, this.url = l; + } + }; + e.ParseSourceFile = c; + var n = class { + constructor(i, l) { + let h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + this.start = i, this.end = l, this.details = h; + } + toString() { + return this.start.file.content.substring(this.start.offset, this.end.offset); + } + }; + e.ParseSourceSpan = n, e.EMPTY_PARSE_LOCATION = new s(new c("", ""), 0, 0, 0), e.EMPTY_SOURCE_SPAN = new n(e.EMPTY_PARSE_LOCATION, e.EMPTY_PARSE_LOCATION); + var a; + (function(i) { + i[i.WARNING = 0] = "WARNING", i[i.ERROR = 1] = "ERROR"; + })(a = e.ParseErrorLevel || (e.ParseErrorLevel = {})); + var p = class { + constructor(i, l) { + let h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : a.ERROR; + this.span = i, this.msg = l, this.level = h; + } + contextualMessage() { + let i = this.span.start.getContext(100, 3); + return i ? "".concat(this.msg, ' ("').concat(i.before, "[").concat(a[this.level], " ->]").concat(i.after, '")') : this.msg; + } + toString() { + let i = this.span.details ? ", ".concat(this.span.details) : ""; + return "".concat(this.contextualMessage(), ": ").concat(this.span.start).concat(i); + } + }; + e.ParseError = p; + function D(i, l) { + let h = t.identifierModuleUrl(l), C = h != null ? "in ".concat(i, " ").concat(t.identifierName(l), " in ").concat(h) : "in ".concat(i, " ").concat(t.identifierName(l)), d = new c("", C); + return new n(new s(d, -1, -1, -1), new s(d, -1, -1, -1)); + } + e.typeSourceSpan = D; + function g(i, l, h) { + let C = "in ".concat(i, " ").concat(l, " in ").concat(h), d = new c("", C); + return new n(new s(d, -1, -1, -1), new s(d, -1, -1, -1)); + } + e.r3JitTypeSourceSpan = g; + } }), aD = I({ "src/utils/front-matter/parse.js"(e, r) { + "use strict"; + q(); + var t = new RegExp("^(?-{3}|\\+{3})(?[^\\n]*)\\n(?:|(?.*?)\\n)(?\\k|\\.{3})[^\\S\\n]*(?:\\n|$)", "s"); + function s(c) { + let n = c.match(t); + if (!n) + return { content: c }; + let { startDelimiter: a, language: p, value: D = "", endDelimiter: g } = n.groups, i = p.trim() || "yaml"; + if (a === "+++" && (i = "toml"), i !== "yaml" && a !== g) + return { content: c }; + let [l] = n; + return { frontMatter: { type: "front-matter", lang: i, value: D, startDelimiter: a, endDelimiter: g, raw: l.replace(/\n$/, "") }, content: l.replace(/[^\n]/g, " ") + c.slice(l.length) }; + } + r.exports = s; + } }), ps = I({ "src/utils/get-last.js"(e, r) { + "use strict"; + q(); + var t = (s) => s[s.length - 1]; + r.exports = t; + } }), iD = I({ "src/common/parser-create-error.js"(e, r) { + "use strict"; + q(); + function t(s, c) { + let n = new SyntaxError(s + " (" + c.start.line + ":" + c.start.column + ")"); + return n.loc = c, n; + } + r.exports = t; + } }), fs5 = {}; + cs(fs5, { default: () => oD }); + function oD(e) { + if (typeof e != "string") + throw new TypeError("Expected a string"); + return e.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); + } + var cD = Ce({ "node_modules/escape-string-regexp/index.js"() { + q(); + } }), ds = I({ "node_modules/semver/internal/debug.js"(e, r) { + q(); + var t = typeof ye == "object" && ye.env && ye.env.NODE_DEBUG && /\bsemver\b/i.test(ye.env.NODE_DEBUG) ? function() { + for (var s = arguments.length, c = new Array(s), n = 0; n < s; n++) + c[n] = arguments[n]; + return console.error("SEMVER", ...c); + } : () => { + }; + r.exports = t; + } }), Es = I({ "node_modules/semver/internal/constants.js"(e, r) { + q(); + var t = "2.0.0", s = 256, c = Number.MAX_SAFE_INTEGER || 9007199254740991, n = 16; + r.exports = { SEMVER_SPEC_VERSION: t, MAX_LENGTH: s, MAX_SAFE_INTEGER: c, MAX_SAFE_COMPONENT_LENGTH: n }; + } }), DD = I({ "node_modules/semver/internal/re.js"(e, r) { + q(); + var { MAX_SAFE_COMPONENT_LENGTH: t } = Es(), s = ds(); + e = r.exports = {}; + var c = e.re = [], n = e.src = [], a = e.t = {}, p = 0, D = (g, i, l) => { + let h = p++; + s(g, h, i), a[g] = h, n[h] = i, c[h] = new RegExp(i, l ? "g" : void 0); + }; + D("NUMERICIDENTIFIER", "0|[1-9]\\d*"), D("NUMERICIDENTIFIERLOOSE", "[0-9]+"), D("NONNUMERICIDENTIFIER", "\\d*[a-zA-Z-][a-zA-Z0-9-]*"), D("MAINVERSION", "(".concat(n[a.NUMERICIDENTIFIER], ")\\.(").concat(n[a.NUMERICIDENTIFIER], ")\\.(").concat(n[a.NUMERICIDENTIFIER], ")")), D("MAINVERSIONLOOSE", "(".concat(n[a.NUMERICIDENTIFIERLOOSE], ")\\.(").concat(n[a.NUMERICIDENTIFIERLOOSE], ")\\.(").concat(n[a.NUMERICIDENTIFIERLOOSE], ")")), D("PRERELEASEIDENTIFIER", "(?:".concat(n[a.NUMERICIDENTIFIER], "|").concat(n[a.NONNUMERICIDENTIFIER], ")")), D("PRERELEASEIDENTIFIERLOOSE", "(?:".concat(n[a.NUMERICIDENTIFIERLOOSE], "|").concat(n[a.NONNUMERICIDENTIFIER], ")")), D("PRERELEASE", "(?:-(".concat(n[a.PRERELEASEIDENTIFIER], "(?:\\.").concat(n[a.PRERELEASEIDENTIFIER], ")*))")), D("PRERELEASELOOSE", "(?:-?(".concat(n[a.PRERELEASEIDENTIFIERLOOSE], "(?:\\.").concat(n[a.PRERELEASEIDENTIFIERLOOSE], ")*))")), D("BUILDIDENTIFIER", "[0-9A-Za-z-]+"), D("BUILD", "(?:\\+(".concat(n[a.BUILDIDENTIFIER], "(?:\\.").concat(n[a.BUILDIDENTIFIER], ")*))")), D("FULLPLAIN", "v?".concat(n[a.MAINVERSION]).concat(n[a.PRERELEASE], "?").concat(n[a.BUILD], "?")), D("FULL", "^".concat(n[a.FULLPLAIN], "$")), D("LOOSEPLAIN", "[v=\\s]*".concat(n[a.MAINVERSIONLOOSE]).concat(n[a.PRERELEASELOOSE], "?").concat(n[a.BUILD], "?")), D("LOOSE", "^".concat(n[a.LOOSEPLAIN], "$")), D("GTLT", "((?:<|>)?=?)"), D("XRANGEIDENTIFIERLOOSE", "".concat(n[a.NUMERICIDENTIFIERLOOSE], "|x|X|\\*")), D("XRANGEIDENTIFIER", "".concat(n[a.NUMERICIDENTIFIER], "|x|X|\\*")), D("XRANGEPLAIN", "[v=\\s]*(".concat(n[a.XRANGEIDENTIFIER], ")(?:\\.(").concat(n[a.XRANGEIDENTIFIER], ")(?:\\.(").concat(n[a.XRANGEIDENTIFIER], ")(?:").concat(n[a.PRERELEASE], ")?").concat(n[a.BUILD], "?)?)?")), D("XRANGEPLAINLOOSE", "[v=\\s]*(".concat(n[a.XRANGEIDENTIFIERLOOSE], ")(?:\\.(").concat(n[a.XRANGEIDENTIFIERLOOSE], ")(?:\\.(").concat(n[a.XRANGEIDENTIFIERLOOSE], ")(?:").concat(n[a.PRERELEASELOOSE], ")?").concat(n[a.BUILD], "?)?)?")), D("XRANGE", "^".concat(n[a.GTLT], "\\s*").concat(n[a.XRANGEPLAIN], "$")), D("XRANGELOOSE", "^".concat(n[a.GTLT], "\\s*").concat(n[a.XRANGEPLAINLOOSE], "$")), D("COERCE", "(^|[^\\d])(\\d{1,".concat(t, "})(?:\\.(\\d{1,").concat(t, "}))?(?:\\.(\\d{1,").concat(t, "}))?(?:$|[^\\d])")), D("COERCERTL", n[a.COERCE], true), D("LONETILDE", "(?:~>?)"), D("TILDETRIM", "(\\s*)".concat(n[a.LONETILDE], "\\s+"), true), e.tildeTrimReplace = "$1~", D("TILDE", "^".concat(n[a.LONETILDE]).concat(n[a.XRANGEPLAIN], "$")), D("TILDELOOSE", "^".concat(n[a.LONETILDE]).concat(n[a.XRANGEPLAINLOOSE], "$")), D("LONECARET", "(?:\\^)"), D("CARETTRIM", "(\\s*)".concat(n[a.LONECARET], "\\s+"), true), e.caretTrimReplace = "$1^", D("CARET", "^".concat(n[a.LONECARET]).concat(n[a.XRANGEPLAIN], "$")), D("CARETLOOSE", "^".concat(n[a.LONECARET]).concat(n[a.XRANGEPLAINLOOSE], "$")), D("COMPARATORLOOSE", "^".concat(n[a.GTLT], "\\s*(").concat(n[a.LOOSEPLAIN], ")$|^$")), D("COMPARATOR", "^".concat(n[a.GTLT], "\\s*(").concat(n[a.FULLPLAIN], ")$|^$")), D("COMPARATORTRIM", "(\\s*)".concat(n[a.GTLT], "\\s*(").concat(n[a.LOOSEPLAIN], "|").concat(n[a.XRANGEPLAIN], ")"), true), e.comparatorTrimReplace = "$1$2$3", D("HYPHENRANGE", "^\\s*(".concat(n[a.XRANGEPLAIN], ")\\s+-\\s+(").concat(n[a.XRANGEPLAIN], ")\\s*$")), D("HYPHENRANGELOOSE", "^\\s*(".concat(n[a.XRANGEPLAINLOOSE], ")\\s+-\\s+(").concat(n[a.XRANGEPLAINLOOSE], ")\\s*$")), D("STAR", "(<|>)?=?\\s*\\*"), D("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), D("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } }), lD = I({ "node_modules/semver/internal/parse-options.js"(e, r) { + q(); + var t = ["includePrerelease", "loose", "rtl"], s = (c) => c ? typeof c != "object" ? { loose: true } : t.filter((n) => c[n]).reduce((n, a) => (n[a] = true, n), {}) : {}; + r.exports = s; + } }), hD = I({ "node_modules/semver/internal/identifiers.js"(e, r) { + q(); + var t = /^[0-9]+$/, s = (n, a) => { + let p = t.test(n), D = t.test(a); + return p && D && (n = +n, a = +a), n === a ? 0 : p && !D ? -1 : D && !p ? 1 : n < a ? -1 : 1; + }, c = (n, a) => s(a, n); + r.exports = { compareIdentifiers: s, rcompareIdentifiers: c }; + } }), pD = I({ "node_modules/semver/classes/semver.js"(e, r) { + q(); + var t = ds(), { MAX_LENGTH: s, MAX_SAFE_INTEGER: c } = Es(), { re: n, t: a } = DD(), p = lD(), { compareIdentifiers: D } = hD(), g = class { + constructor(i, l) { + if (l = p(l), i instanceof g) { + if (i.loose === !!l.loose && i.includePrerelease === !!l.includePrerelease) + return i; + i = i.version; + } else if (typeof i != "string") + throw new TypeError("Invalid Version: ".concat(i)); + if (i.length > s) + throw new TypeError("version is longer than ".concat(s, " characters")); + t("SemVer", i, l), this.options = l, this.loose = !!l.loose, this.includePrerelease = !!l.includePrerelease; + let h = i.trim().match(l.loose ? n[a.LOOSE] : n[a.FULL]); + if (!h) + throw new TypeError("Invalid Version: ".concat(i)); + if (this.raw = i, this.major = +h[1], this.minor = +h[2], this.patch = +h[3], this.major > c || this.major < 0) + throw new TypeError("Invalid major version"); + if (this.minor > c || this.minor < 0) + throw new TypeError("Invalid minor version"); + if (this.patch > c || this.patch < 0) + throw new TypeError("Invalid patch version"); + h[4] ? this.prerelease = h[4].split(".").map((C) => { + if (/^[0-9]+$/.test(C)) { + let d = +C; + if (d >= 0 && d < c) + return d; + } + return C; + }) : this.prerelease = [], this.build = h[5] ? h[5].split(".") : [], this.format(); + } + format() { + return this.version = "".concat(this.major, ".").concat(this.minor, ".").concat(this.patch), this.prerelease.length && (this.version += "-".concat(this.prerelease.join("."))), this.version; + } + toString() { + return this.version; + } + compare(i) { + if (t("SemVer.compare", this.version, this.options, i), !(i instanceof g)) { + if (typeof i == "string" && i === this.version) + return 0; + i = new g(i, this.options); + } + return i.version === this.version ? 0 : this.compareMain(i) || this.comparePre(i); + } + compareMain(i) { + return i instanceof g || (i = new g(i, this.options)), D(this.major, i.major) || D(this.minor, i.minor) || D(this.patch, i.patch); + } + comparePre(i) { + if (i instanceof g || (i = new g(i, this.options)), this.prerelease.length && !i.prerelease.length) + return -1; + if (!this.prerelease.length && i.prerelease.length) + return 1; + if (!this.prerelease.length && !i.prerelease.length) + return 0; + let l = 0; + do { + let h = this.prerelease[l], C = i.prerelease[l]; + if (t("prerelease compare", l, h, C), h === void 0 && C === void 0) + return 0; + if (C === void 0) + return 1; + if (h === void 0) + return -1; + if (h === C) + continue; + return D(h, C); + } while (++l); + } + compareBuild(i) { + i instanceof g || (i = new g(i, this.options)); + let l = 0; + do { + let h = this.build[l], C = i.build[l]; + if (t("prerelease compare", l, h, C), h === void 0 && C === void 0) + return 0; + if (C === void 0) + return 1; + if (h === void 0) + return -1; + if (h === C) + continue; + return D(h, C); + } while (++l); + } + inc(i, l) { + switch (i) { + case "premajor": + this.prerelease.length = 0, this.patch = 0, this.minor = 0, this.major++, this.inc("pre", l); + break; + case "preminor": + this.prerelease.length = 0, this.patch = 0, this.minor++, this.inc("pre", l); + break; + case "prepatch": + this.prerelease.length = 0, this.inc("patch", l), this.inc("pre", l); + break; + case "prerelease": + this.prerelease.length === 0 && this.inc("patch", l), this.inc("pre", l); + break; + case "major": + (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) && this.major++, this.minor = 0, this.patch = 0, this.prerelease = []; + break; + case "minor": + (this.patch !== 0 || this.prerelease.length === 0) && this.minor++, this.patch = 0, this.prerelease = []; + break; + case "patch": + this.prerelease.length === 0 && this.patch++, this.prerelease = []; + break; + case "pre": + if (this.prerelease.length === 0) + this.prerelease = [0]; + else { + let h = this.prerelease.length; + for (; --h >= 0; ) + typeof this.prerelease[h] == "number" && (this.prerelease[h]++, h = -2); + h === -1 && this.prerelease.push(0); + } + l && (D(this.prerelease[0], l) === 0 ? isNaN(this.prerelease[1]) && (this.prerelease = [l, 0]) : this.prerelease = [l, 0]); + break; + default: + throw new Error("invalid increment argument: ".concat(i)); + } + return this.format(), this.raw = this.version, this; + } + }; + r.exports = g; + } }), Ur = I({ "node_modules/semver/functions/compare.js"(e, r) { + q(); + var t = pD(), s = (c, n, a) => new t(c, a).compare(new t(n, a)); + r.exports = s; + } }), fD = I({ "node_modules/semver/functions/lt.js"(e, r) { + q(); + var t = Ur(), s = (c, n, a) => t(c, n, a) < 0; + r.exports = s; + } }), dD = I({ "node_modules/semver/functions/gte.js"(e, r) { + q(); + var t = Ur(), s = (c, n, a) => t(c, n, a) >= 0; + r.exports = s; + } }), ED = I({ "src/utils/arrayify.js"(e, r) { + "use strict"; + q(), r.exports = (t, s) => Object.entries(t).map((c) => { + let [n, a] = c; + return Object.assign({ [s]: n }, a); + }); + } }), CD = I({ "package.json"(e, r) { + r.exports = { version: "2.7.1" }; + } }), mD = I({ "node_modules/outdent/lib/index.js"(e, r) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }), e.outdent = void 0; + function t() { + for (var A = [], N = 0; N < arguments.length; N++) + A[N] = arguments[N]; + } + function s() { + return typeof WeakMap < "u" ? /* @__PURE__ */ new WeakMap() : c(); + } + function c() { + return { add: t, delete: t, get: t, set: t, has: function(A) { + return false; + } }; + } + var n = Object.prototype.hasOwnProperty, a = function(A, N) { + return n.call(A, N); + }; + function p(A, N) { + for (var R in N) + a(N, R) && (A[R] = N[R]); + return A; + } + var D = /^[ \t]*(?:\r\n|\r|\n)/, g = /(?:\r\n|\r|\n)[ \t]*$/, i = /^(?:[\r\n]|$)/, l = /(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/, h = /^[ \t]*[\r\n][ \t\r\n]*$/; + function C(A, N, R) { + var $ = 0, _ = A[0].match(l); + _ && ($ = _[1].length); + var O = "(\\r\\n|\\r|\\n).{0," + $ + "}", x = new RegExp(O, "g"); + N && (A = A.slice(1)); + var k = R.newline, M = R.trimLeadingNewline, u = R.trimTrailingNewline, o = typeof k == "string", E = A.length, f = A.map(function(F, P) { + return F = F.replace(x, "$1"), P === 0 && M && (F = F.replace(D, "")), P === E - 1 && u && (F = F.replace(g, "")), o && (F = F.replace(/\r\n|\n|\r/g, function(j) { + return k; + })), F; + }); + return f; + } + function d(A, N) { + for (var R = "", $ = 0, _ = A.length; $ < _; $++) + R += A[$], $ < _ - 1 && (R += N[$]); + return R; + } + function m(A) { + return a(A, "raw") && a(A, "length"); + } + function T(A) { + var N = s(), R = s(); + function $(O) { + for (var x = [], k = 1; k < arguments.length; k++) + x[k - 1] = arguments[k]; + if (m(O)) { + var M = O, u = (x[0] === $ || x[0] === B) && h.test(M[0]) && i.test(M[1]), o = u ? R : N, E = o.get(M); + if (E || (E = C(M, u, A), o.set(M, E)), x.length === 0) + return E[0]; + var f = d(E, u ? x.slice(1) : x); + return f; + } else + return T(p(p({}, A), O || {})); + } + var _ = p($, { string: function(O) { + return C([O], false, A)[0]; + } }); + return _; + } + var B = T({ trimLeadingNewline: true, trimTrailingNewline: true }); + if (e.outdent = B, e.default = B, typeof r < "u") + try { + r.exports = B, Object.defineProperty(B, "__esModule", { value: true }), B.default = B, B.outdent = B; + } catch { + } + } }), gD = I({ "src/main/core-options.js"(e, r) { + "use strict"; + q(); + var { outdent: t } = mD(), s = "Config", c = "Editor", n = "Format", a = "Other", p = "Output", D = "Global", g = "Special", i = { cursorOffset: { since: "1.4.0", category: g, type: "int", default: -1, range: { start: -1, end: Number.POSITIVE_INFINITY, step: 1 }, description: t(Jn || (Jn = Ee([` + Print (to stderr) where a cursor at the given position would move to after formatting. + This option cannot be used with --range-start and --range-end. + `]))), cliCategory: c }, endOfLine: { since: "1.15.0", category: D, type: "choice", default: [{ since: "1.15.0", value: "auto" }, { since: "2.0.0", value: "lf" }], description: "Which end of line characters to apply.", choices: [{ value: "lf", description: "Line Feed only (\\n), common on Linux and macOS as well as inside git repos" }, { value: "crlf", description: "Carriage Return + Line Feed characters (\\r\\n), common on Windows" }, { value: "cr", description: "Carriage Return character only (\\r), used very rarely" }, { value: "auto", description: t(Zn || (Zn = Ee([` + Maintain existing + (mixed values within one file are normalised by looking at what's used after the first line) + `]))) }] }, filepath: { since: "1.4.0", category: g, type: "path", description: "Specify the input filepath. This will be used to do parser inference.", cliName: "stdin-filepath", cliCategory: a, cliDescription: "Path to the file to pretend that stdin comes from." }, insertPragma: { since: "1.8.0", category: g, type: "boolean", default: false, description: "Insert @format pragma into file's first docblock comment.", cliCategory: a }, parser: { since: "0.0.10", category: D, type: "choice", default: [{ since: "0.0.10", value: "babylon" }, { since: "1.13.0", value: void 0 }], description: "Which parser to use.", exception: (l) => typeof l == "string" || typeof l == "function", choices: [{ value: "flow", description: "Flow" }, { value: "babel", since: "1.16.0", description: "JavaScript" }, { value: "babel-flow", since: "1.16.0", description: "Flow" }, { value: "babel-ts", since: "2.0.0", description: "TypeScript" }, { value: "typescript", since: "1.4.0", description: "TypeScript" }, { value: "acorn", since: "2.6.0", description: "JavaScript" }, { value: "espree", since: "2.2.0", description: "JavaScript" }, { value: "meriyah", since: "2.2.0", description: "JavaScript" }, { value: "css", since: "1.7.1", description: "CSS" }, { value: "less", since: "1.7.1", description: "Less" }, { value: "scss", since: "1.7.1", description: "SCSS" }, { value: "json", since: "1.5.0", description: "JSON" }, { value: "json5", since: "1.13.0", description: "JSON5" }, { value: "json-stringify", since: "1.13.0", description: "JSON.stringify" }, { value: "graphql", since: "1.5.0", description: "GraphQL" }, { value: "markdown", since: "1.8.0", description: "Markdown" }, { value: "mdx", since: "1.15.0", description: "MDX" }, { value: "vue", since: "1.10.0", description: "Vue" }, { value: "yaml", since: "1.14.0", description: "YAML" }, { value: "glimmer", since: "2.3.0", description: "Ember / Handlebars" }, { value: "html", since: "1.15.0", description: "HTML" }, { value: "angular", since: "1.15.0", description: "Angular" }, { value: "lwc", since: "1.17.0", description: "Lightning Web Components" }] }, plugins: { since: "1.10.0", type: "path", array: true, default: [{ value: [] }], category: D, description: "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.", exception: (l) => typeof l == "string" || typeof l == "object", cliName: "plugin", cliCategory: s }, pluginSearchDirs: { since: "1.13.0", type: "path", array: true, default: [{ value: [] }], category: D, description: t(es || (es = Ee([` + Custom directory that contains prettier plugins in node_modules subdirectory. + Overrides default behavior when plugins are searched relatively to the location of Prettier. + Multiple values are accepted. + `]))), exception: (l) => typeof l == "string" || typeof l == "object", cliName: "plugin-search-dir", cliCategory: s }, printWidth: { since: "0.0.0", category: D, type: "int", default: 80, description: "The line length where Prettier will try wrap.", range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 } }, rangeEnd: { since: "1.4.0", category: g, type: "int", default: Number.POSITIVE_INFINITY, range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 }, description: t(rs || (rs = Ee([` + Format code ending at a given character offset (exclusive). + The range will extend forwards to the end of the selected statement. + This option cannot be used with --cursor-offset. + `]))), cliCategory: c }, rangeStart: { since: "1.4.0", category: g, type: "int", default: 0, range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 }, description: t(ts || (ts = Ee([` + Format code starting at a given character offset. + The range will extend backwards to the start of the first line containing the selected statement. + This option cannot be used with --cursor-offset. + `]))), cliCategory: c }, requirePragma: { since: "1.7.0", category: g, type: "boolean", default: false, description: t(us || (us = Ee([` + Require either '@prettier' or '@format' to be present in the file's first docblock comment + in order for it to be formatted. + `]))), cliCategory: a }, tabWidth: { type: "int", category: D, default: 2, description: "Number of spaces per indentation level.", range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 } }, useTabs: { since: "1.0.0", category: D, type: "boolean", default: false, description: "Indent with tabs instead of spaces." }, embeddedLanguageFormatting: { since: "2.1.0", category: D, type: "choice", default: [{ since: "2.1.0", value: "auto" }], description: "Control how Prettier formats quoted code embedded in the file.", choices: [{ value: "auto", description: "Format embedded code if Prettier can automatically identify it." }, { value: "off", description: "Never automatically format embedded code." }] } }; + r.exports = { CATEGORY_CONFIG: s, CATEGORY_EDITOR: c, CATEGORY_FORMAT: n, CATEGORY_OTHER: a, CATEGORY_OUTPUT: p, CATEGORY_GLOBAL: D, CATEGORY_SPECIAL: g, options: i }; + } }), FD = I({ "src/main/support.js"(e, r) { + "use strict"; + q(); + var t = { compare: Ur(), lt: fD(), gte: dD() }, s = ED(), c = CD().version, n = gD().options; + function a() { + let { plugins: D = [], showUnreleased: g = false, showDeprecated: i = false, showInternal: l = false } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, h = c.split("-", 1)[0], C = D.flatMap((A) => A.languages || []).filter(m), d = s(Object.assign({}, ...D.map((A) => { + let { options: N } = A; + return N; + }), n), "name").filter((A) => m(A) && T(A)).sort((A, N) => A.name === N.name ? 0 : A.name < N.name ? -1 : 1).map(B).map((A) => { + A = Object.assign({}, A), Array.isArray(A.default) && (A.default = A.default.length === 1 ? A.default[0].value : A.default.filter(m).sort((R, $) => t.compare($.since, R.since))[0].value), Array.isArray(A.choices) && (A.choices = A.choices.filter((R) => m(R) && T(R)), A.name === "parser" && p(A, C, D)); + let N = Object.fromEntries(D.filter((R) => R.defaultOptions && R.defaultOptions[A.name] !== void 0).map((R) => [R.name, R.defaultOptions[A.name]])); + return Object.assign(Object.assign({}, A), {}, { pluginDefaults: N }); + }); + return { languages: C, options: d }; + function m(A) { + return g || !("since" in A) || A.since && t.gte(h, A.since); + } + function T(A) { + return i || !("deprecated" in A) || A.deprecated && t.lt(h, A.deprecated); + } + function B(A) { + if (l) + return A; + let { cliName: N, cliCategory: R, cliDescription: $ } = A; + return Qc(A, Yc); + } + } + function p(D, g, i) { + let l = new Set(D.choices.map((h) => h.value)); + for (let h of g) + if (h.parsers) { + for (let C of h.parsers) + if (!l.has(C)) { + l.add(C); + let d = i.find((T) => T.parsers && T.parsers[C]), m = h.name; + d && d.name && (m += " (plugin: ".concat(d.name, ")")), D.choices.push({ value: C, description: m }); + } + } + } + r.exports = { getSupportInfo: a }; + } }), AD = I({ "src/utils/is-non-empty-array.js"(e, r) { + "use strict"; + q(); + function t(s) { + return Array.isArray(s) && s.length > 0; + } + r.exports = t; + } }); + function vD() { + let { onlyFirst: e = false } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, r = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|"); + return new RegExp(r, e ? void 0 : "g"); + } + var _D = Ce({ "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() { + q(); + } }); + function SD(e) { + if (typeof e != "string") + throw new TypeError("Expected a `string`, got `".concat(typeof e, "`")); + return e.replace(vD(), ""); + } + var yD = Ce({ "node_modules/strip-ansi/index.js"() { + q(), _D(); + } }); + function TD(e) { + return Number.isInteger(e) ? e >= 4352 && (e <= 4447 || e === 9001 || e === 9002 || 11904 <= e && e <= 12871 && e !== 12351 || 12880 <= e && e <= 19903 || 19968 <= e && e <= 42182 || 43360 <= e && e <= 43388 || 44032 <= e && e <= 55203 || 63744 <= e && e <= 64255 || 65040 <= e && e <= 65049 || 65072 <= e && e <= 65131 || 65281 <= e && e <= 65376 || 65504 <= e && e <= 65510 || 110592 <= e && e <= 110593 || 127488 <= e && e <= 127569 || 131072 <= e && e <= 262141) : false; + } + var BD = Ce({ "node_modules/is-fullwidth-code-point/index.js"() { + q(); + } }), bD = I({ "node_modules/emoji-regex/index.js"(e, r) { + "use strict"; + q(), r.exports = function() { + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; + }; + } }), Cs = {}; + cs(Cs, { default: () => wD }); + function wD(e) { + if (typeof e != "string" || e.length === 0 || (e = SD(e), e.length === 0)) + return 0; + e = e.replace((0, ms.default)(), " "); + let r = 0; + for (let t = 0; t < e.length; t++) { + let s = e.codePointAt(t); + s <= 31 || s >= 127 && s <= 159 || s >= 768 && s <= 879 || (s > 65535 && t++, r += TD(s) ? 2 : 1); + } + return r; + } + var ms, ND = Ce({ "node_modules/string-width/index.js"() { + q(), yD(), BD(), ms = tD(bD()); + } }), OD = I({ "src/utils/get-string-width.js"(e, r) { + "use strict"; + q(); + var t = (ND(), ls(Cs)).default, s = /[^\x20-\x7F]/; + function c(n) { + return n ? s.test(n) ? t(n) : n.length : 0; + } + r.exports = c; + } }), Gr = I({ "src/utils/text/skip.js"(e, r) { + "use strict"; + q(); + function t(p) { + return (D, g, i) => { + let l = i && i.backwards; + if (g === false) + return false; + let { length: h } = D, C = g; + for (; C >= 0 && C < h; ) { + let d = D.charAt(C); + if (p instanceof RegExp) { + if (!p.test(d)) + return C; + } else if (!p.includes(d)) + return C; + l ? C-- : C++; + } + return C === -1 || C === h ? C : false; + }; + } + var s = t(/\s/), c = t(" "), n = t(",; "), a = t(/[^\n\r]/); + r.exports = { skipWhitespace: s, skipSpaces: c, skipToLineEnd: n, skipEverythingButNewLine: a }; + } }), gs = I({ "src/utils/text/skip-inline-comment.js"(e, r) { + "use strict"; + q(); + function t(s, c) { + if (c === false) + return false; + if (s.charAt(c) === "/" && s.charAt(c + 1) === "*") { + for (let n = c + 2; n < s.length; ++n) + if (s.charAt(n) === "*" && s.charAt(n + 1) === "/") + return n + 2; + } + return c; + } + r.exports = t; + } }), Fs = I({ "src/utils/text/skip-trailing-comment.js"(e, r) { + "use strict"; + q(); + var { skipEverythingButNewLine: t } = Gr(); + function s(c, n) { + return n === false ? false : c.charAt(n) === "/" && c.charAt(n + 1) === "/" ? t(c, n) : n; + } + r.exports = s; + } }), As = I({ "src/utils/text/skip-newline.js"(e, r) { + "use strict"; + q(); + function t(s, c, n) { + let a = n && n.backwards; + if (c === false) + return false; + let p = s.charAt(c); + if (a) { + if (s.charAt(c - 1) === "\r" && p === ` +`) + return c - 2; + if (p === ` +` || p === "\r" || p === "\u2028" || p === "\u2029") + return c - 1; + } else { + if (p === "\r" && s.charAt(c + 1) === ` +`) + return c + 2; + if (p === ` +` || p === "\r" || p === "\u2028" || p === "\u2029") + return c + 1; + } + return c; + } + r.exports = t; + } }), qD = I({ "src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js"(e, r) { + "use strict"; + q(); + var t = gs(), s = As(), c = Fs(), { skipSpaces: n } = Gr(); + function a(p, D) { + let g = null, i = D; + for (; i !== g; ) + g = i, i = n(p, i), i = t(p, i), i = c(p, i), i = s(p, i); + return i; + } + r.exports = a; + } }), ID = I({ "src/common/util.js"(e, r) { + "use strict"; + q(); + var { default: t } = (cD(), ls(fs5)), s = ps(), { getSupportInfo: c } = FD(), n = AD(), a = OD(), { skipWhitespace: p, skipSpaces: D, skipToLineEnd: g, skipEverythingButNewLine: i } = Gr(), l = gs(), h = Fs(), C = As(), d = qD(), m = (v) => v[v.length - 2]; + function T(v) { + return (S, b, w) => { + let L = w && w.backwards; + if (b === false) + return false; + let { length: U } = S, V = b; + for (; V >= 0 && V < U; ) { + let Y = S.charAt(V); + if (v instanceof RegExp) { + if (!v.test(Y)) + return V; + } else if (!v.includes(Y)) + return V; + L ? V-- : V++; + } + return V === -1 || V === U ? V : false; + }; + } + function B(v, S) { + let b = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, w = D(v, b.backwards ? S - 1 : S, b), L = C(v, w, b); + return w !== L; + } + function A(v, S, b) { + for (let w = S; w < b; ++w) + if (v.charAt(w) === ` +`) + return true; + return false; + } + function N(v, S, b) { + let w = b(S) - 1; + w = D(v, w, { backwards: true }), w = C(v, w, { backwards: true }), w = D(v, w, { backwards: true }); + let L = C(v, w, { backwards: true }); + return w !== L; + } + function R(v, S) { + let b = null, w = S; + for (; w !== b; ) + b = w, w = g(v, w), w = l(v, w), w = D(v, w); + return w = h(v, w), w = C(v, w), w !== false && B(v, w); + } + function $(v, S, b) { + return R(v, b(S)); + } + function _(v, S, b) { + return d(v, b(S)); + } + function O(v, S, b) { + return v.charAt(_(v, S, b)); + } + function x(v, S) { + let b = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + return D(v, b.backwards ? S - 1 : S, b) !== S; + } + function k(v, S) { + let b = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, w = 0; + for (let L = b; L < v.length; ++L) + v[L] === " " ? w = w + S - w % S : w++; + return w; + } + function M(v, S) { + let b = v.lastIndexOf(` +`); + return b === -1 ? 0 : k(v.slice(b + 1).match(/^[\t ]*/)[0], S); + } + function u(v, S) { + let b = { quote: '"', regex: /"/g, escaped: """ }, w = { quote: "'", regex: /'/g, escaped: "'" }, L = S === "'" ? w : b, U = L === w ? b : w, V = L; + if (v.includes(L.quote) || v.includes(U.quote)) { + let Y = (v.match(L.regex) || []).length, ue = (v.match(U.regex) || []).length; + V = Y > ue ? U : L; + } + return V; + } + function o(v, S) { + let b = v.slice(1, -1), w = S.parser === "json" || S.parser === "json5" && S.quoteProps === "preserve" && !S.singleQuote ? '"' : S.__isInHtmlAttribute ? "'" : u(b, S.singleQuote ? "'" : '"').quote; + return E(b, w, !(S.parser === "css" || S.parser === "less" || S.parser === "scss" || S.__embeddedInHtml)); + } + function E(v, S, b) { + let w = S === '"' ? "'" : '"', L = /\\(.)|(["'])/gs, U = v.replace(L, (V, Y, ue) => Y === w ? Y : ue === S ? "\\" + ue : ue || (b && /^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(Y) ? Y : "\\" + Y)); + return S + U + S; + } + function f(v) { + return v.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1").replace(/^([+-])?\./, "$10.").replace(/(\.\d+?)0+(?=e|$)/, "$1").replace(/\.(?=e|$)/, ""); + } + function F(v, S) { + let b = v.match(new RegExp("(".concat(t(S), ")+"), "g")); + return b === null ? 0 : b.reduce((w, L) => Math.max(w, L.length / S.length), 0); + } + function P(v, S) { + let b = v.match(new RegExp("(".concat(t(S), ")+"), "g")); + if (b === null) + return 0; + let w = /* @__PURE__ */ new Map(), L = 0; + for (let U of b) { + let V = U.length / S.length; + w.set(V, true), V > L && (L = V); + } + for (let U = 1; U < L; U++) + if (!w.get(U)) + return U; + return L + 1; + } + function j(v, S) { + (v.comments || (v.comments = [])).push(S), S.printed = false, S.nodeDescription = ee(v); + } + function W(v, S) { + S.leading = true, S.trailing = false, j(v, S); + } + function X(v, S, b) { + S.leading = false, S.trailing = false, b && (S.marker = b), j(v, S); + } + function H(v, S) { + S.leading = false, S.trailing = true, j(v, S); + } + function z(v, S) { + let { languages: b } = c({ plugins: S.plugins }), w = b.find((L) => { + let { name: U } = L; + return U.toLowerCase() === v; + }) || b.find((L) => { + let { aliases: U } = L; + return Array.isArray(U) && U.includes(v); + }) || b.find((L) => { + let { extensions: U } = L; + return Array.isArray(U) && U.includes(".".concat(v)); + }); + return w && w.parsers[0]; + } + function J(v) { + return v && v.type === "front-matter"; + } + function Z(v) { + let S = /* @__PURE__ */ new WeakMap(); + return function(b) { + return S.has(b) || S.set(b, Symbol(v)), S.get(b); + }; + } + function ee(v) { + let S = v.type || v.kind || "(unknown type)", b = String(v.name || v.id && (typeof v.id == "object" ? v.id.name : v.id) || v.key && (typeof v.key == "object" ? v.key.name : v.key) || v.value && (typeof v.value == "object" ? "" : String(v.value)) || v.operator || ""); + return b.length > 20 && (b = b.slice(0, 19) + "\u2026"), S + (b ? " " + b : ""); + } + r.exports = { inferParserByLanguage: z, getStringWidth: a, getMaxContinuousCount: F, getMinNotPresentContinuousCount: P, getPenultimate: m, getLast: s, getNextNonSpaceNonCommentCharacterIndexWithStartIndex: d, getNextNonSpaceNonCommentCharacterIndex: _, getNextNonSpaceNonCommentCharacter: O, skip: T, skipWhitespace: p, skipSpaces: D, skipToLineEnd: g, skipEverythingButNewLine: i, skipInlineComment: l, skipTrailingComment: h, skipNewline: C, isNextLineEmptyAfterIndex: R, isNextLineEmpty: $, isPreviousLineEmpty: N, hasNewline: B, hasNewlineInRange: A, hasSpaces: x, getAlignmentSize: k, getIndentSize: M, getPreferredQuote: u, printString: o, printNumber: f, makeString: E, addLeadingComment: W, addDanglingComment: X, addTrailingComment: H, isFrontMatterNode: J, isNonEmptyArray: n, createGroupIdMapper: Z }; + } }), RD = I({ "vendors/html-tag-names.json"(e, r) { + r.exports = { htmlTagNames: ["a", "abbr", "acronym", "address", "applet", "area", "article", "aside", "audio", "b", "base", "basefont", "bdi", "bdo", "bgsound", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "command", "content", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "embed", "fieldset", "figcaption", "figure", "font", "footer", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "image", "img", "input", "ins", "isindex", "kbd", "keygen", "label", "legend", "li", "link", "listing", "main", "map", "mark", "marquee", "math", "menu", "menuitem", "meta", "meter", "multicol", "nav", "nextid", "nobr", "noembed", "noframes", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "plaintext", "pre", "progress", "q", "rb", "rbc", "rp", "rt", "rtc", "ruby", "s", "samp", "script", "section", "select", "shadow", "slot", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "svg", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "tt", "u", "ul", "var", "video", "wbr", "xmp"] }; + } }), vs = I({ "src/language-html/utils/array-to-map.js"(e, r) { + "use strict"; + q(); + function t(s) { + let c = /* @__PURE__ */ Object.create(null); + for (let n of s) + c[n] = true; + return c; + } + r.exports = t; + } }), xD = I({ "src/language-html/utils/html-tag-names.js"(e, r) { + "use strict"; + q(); + var { htmlTagNames: t } = RD(), s = vs(), c = s(t); + r.exports = c; + } }), PD = I({ "vendors/html-element-attributes.json"(e, r) { + r.exports = { htmlElementAttributes: { "*": ["accesskey", "autocapitalize", "autofocus", "class", "contenteditable", "dir", "draggable", "enterkeyhint", "hidden", "id", "inputmode", "is", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "nonce", "slot", "spellcheck", "style", "tabindex", "title", "translate"], a: ["charset", "coords", "download", "href", "hreflang", "name", "ping", "referrerpolicy", "rel", "rev", "shape", "target", "type"], applet: ["align", "alt", "archive", "code", "codebase", "height", "hspace", "name", "object", "vspace", "width"], area: ["alt", "coords", "download", "href", "hreflang", "nohref", "ping", "referrerpolicy", "rel", "shape", "target", "type"], audio: ["autoplay", "controls", "crossorigin", "loop", "muted", "preload", "src"], base: ["href", "target"], basefont: ["color", "face", "size"], blockquote: ["cite"], body: ["alink", "background", "bgcolor", "link", "text", "vlink"], br: ["clear"], button: ["disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "type", "value"], canvas: ["height", "width"], caption: ["align"], col: ["align", "char", "charoff", "span", "valign", "width"], colgroup: ["align", "char", "charoff", "span", "valign", "width"], data: ["value"], del: ["cite", "datetime"], details: ["open"], dialog: ["open"], dir: ["compact"], div: ["align"], dl: ["compact"], embed: ["height", "src", "type", "width"], fieldset: ["disabled", "form", "name"], font: ["color", "face", "size"], form: ["accept", "accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], frame: ["frameborder", "longdesc", "marginheight", "marginwidth", "name", "noresize", "scrolling", "src"], frameset: ["cols", "rows"], h1: ["align"], h2: ["align"], h3: ["align"], h4: ["align"], h5: ["align"], h6: ["align"], head: ["profile"], hr: ["align", "noshade", "size", "width"], html: ["manifest", "version"], iframe: ["align", "allow", "allowfullscreen", "allowpaymentrequest", "allowusermedia", "frameborder", "height", "loading", "longdesc", "marginheight", "marginwidth", "name", "referrerpolicy", "sandbox", "scrolling", "src", "srcdoc", "width"], img: ["align", "alt", "border", "crossorigin", "decoding", "height", "hspace", "ismap", "loading", "longdesc", "name", "referrerpolicy", "sizes", "src", "srcset", "usemap", "vspace", "width"], input: ["accept", "align", "alt", "autocomplete", "checked", "dirname", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "ismap", "list", "max", "maxlength", "min", "minlength", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "type", "usemap", "value", "width"], ins: ["cite", "datetime"], isindex: ["prompt"], label: ["for", "form"], legend: ["align"], li: ["type", "value"], link: ["as", "charset", "color", "crossorigin", "disabled", "href", "hreflang", "imagesizes", "imagesrcset", "integrity", "media", "referrerpolicy", "rel", "rev", "sizes", "target", "type"], map: ["name"], menu: ["compact"], meta: ["charset", "content", "http-equiv", "media", "name", "scheme"], meter: ["high", "low", "max", "min", "optimum", "value"], object: ["align", "archive", "border", "classid", "codebase", "codetype", "data", "declare", "form", "height", "hspace", "name", "standby", "type", "typemustmatch", "usemap", "vspace", "width"], ol: ["compact", "reversed", "start", "type"], optgroup: ["disabled", "label"], option: ["disabled", "label", "selected", "value"], output: ["for", "form", "name"], p: ["align"], param: ["name", "type", "value", "valuetype"], pre: ["width"], progress: ["max", "value"], q: ["cite"], script: ["async", "charset", "crossorigin", "defer", "integrity", "language", "nomodule", "referrerpolicy", "src", "type"], select: ["autocomplete", "disabled", "form", "multiple", "name", "required", "size"], slot: ["name"], source: ["height", "media", "sizes", "src", "srcset", "type", "width"], style: ["media", "type"], table: ["align", "bgcolor", "border", "cellpadding", "cellspacing", "frame", "rules", "summary", "width"], tbody: ["align", "char", "charoff", "valign"], td: ["abbr", "align", "axis", "bgcolor", "char", "charoff", "colspan", "headers", "height", "nowrap", "rowspan", "scope", "valign", "width"], textarea: ["autocomplete", "cols", "dirname", "disabled", "form", "maxlength", "minlength", "name", "placeholder", "readonly", "required", "rows", "wrap"], tfoot: ["align", "char", "charoff", "valign"], th: ["abbr", "align", "axis", "bgcolor", "char", "charoff", "colspan", "headers", "height", "nowrap", "rowspan", "scope", "valign", "width"], thead: ["align", "char", "charoff", "valign"], time: ["datetime"], tr: ["align", "bgcolor", "char", "charoff", "valign"], track: ["default", "kind", "label", "src", "srclang"], ul: ["compact", "type"], video: ["autoplay", "controls", "crossorigin", "height", "loop", "muted", "playsinline", "poster", "preload", "src", "width"] } }; + } }), kD = I({ "src/language-html/utils/map-object.js"(e, r) { + "use strict"; + q(); + function t(s, c) { + let n = /* @__PURE__ */ Object.create(null); + for (let [a, p] of Object.entries(s)) + n[a] = c(p, a); + return n; + } + r.exports = t; + } }), LD = I({ "src/language-html/utils/html-elements-attributes.js"(e, r) { + "use strict"; + q(); + var { htmlElementAttributes: t } = PD(), s = kD(), c = vs(), n = s(t, c); + r.exports = n; + } }), MD = I({ "src/language-html/utils/is-unknown-namespace.js"(e, r) { + "use strict"; + q(); + function t(s) { + return s.type === "element" && !s.hasExplicitNamespace && !["html", "svg"].includes(s.namespace); + } + r.exports = t; + } }), jD = I({ "src/language-html/pragma.js"(e, r) { + "use strict"; + q(); + function t(c) { + return /^\s*/.test(c); + } + function s(c) { + return ` + +` + c.replace(/^\s*\n/, ""); + } + r.exports = { hasPragma: t, insertPragma: s }; + } }), $D = I({ "src/language-html/ast.js"(e, r) { + "use strict"; + q(); + var t = { attrs: true, children: true }, s = /* @__PURE__ */ new Set(["parent"]), c = class { + constructor() { + let a = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + for (let p of /* @__PURE__ */ new Set([...s, ...Object.keys(a)])) + this.setProperty(p, a[p]); + } + setProperty(a, p) { + if (this[a] !== p) { + if (a in t && (p = p.map((D) => this.createChild(D))), !s.has(a)) { + this[a] = p; + return; + } + Object.defineProperty(this, a, { value: p, enumerable: false, configurable: true }); + } + } + map(a) { + let p; + for (let D in t) { + let g = this[D]; + if (g) { + let i = n(g, (l) => l.map(a)); + p !== g && (p || (p = new c({ parent: this.parent })), p.setProperty(D, i)); + } + } + if (p) + for (let D in this) + D in t || (p[D] = this[D]); + return a(p || this); + } + walk(a) { + for (let p in t) { + let D = this[p]; + if (D) + for (let g = 0; g < D.length; g++) + D[g].walk(a); + } + a(this); + } + createChild(a) { + let p = a instanceof c ? a.clone() : new c(a); + return p.setProperty("parent", this), p; + } + insertChildBefore(a, p) { + this.children.splice(this.children.indexOf(a), 0, this.createChild(p)); + } + removeChild(a) { + this.children.splice(this.children.indexOf(a), 1); + } + replaceChild(a, p) { + this.children[this.children.indexOf(a)] = this.createChild(p); + } + clone() { + return new c(this); + } + get firstChild() { + var a; + return (a = this.children) === null || a === void 0 ? void 0 : a[0]; + } + get lastChild() { + var a; + return (a = this.children) === null || a === void 0 ? void 0 : a[this.children.length - 1]; + } + get prev() { + var a; + return (a = this.parent) === null || a === void 0 ? void 0 : a.children[this.parent.children.indexOf(this) - 1]; + } + get next() { + var a; + return (a = this.parent) === null || a === void 0 ? void 0 : a.children[this.parent.children.indexOf(this) + 1]; + } + get rawName() { + return this.hasExplicitNamespace ? this.fullName : this.name; + } + get fullName() { + return this.namespace ? this.namespace + ":" + this.name : this.name; + } + get attrMap() { + return Object.fromEntries(this.attrs.map((a) => [a.fullName, a.value])); + } + }; + function n(a, p) { + let D = a.map(p); + return D.some((g, i) => g !== a[i]) ? D : a; + } + r.exports = { Node: c }; + } }), UD = I({ "src/language-html/conditional-comment.js"(e, r) { + "use strict"; + q(); + var { ParseSourceSpan: t } = Te(), s = [{ regex: /^(\[if([^\]]*)]>)(.*?) { + try { + return [true, g(C, m).children]; + } catch { + let N = { type: "text", value: C, sourceSpan: new t(m, T) }; + return [false, [N]]; + } + })(); + return { type: "ieConditionalComment", complete: B, children: A, condition: h.trim().replace(/\s+/g, " "), sourceSpan: D.sourceSpan, startSourceSpan: new t(D.sourceSpan.start, m), endSourceSpan: new t(T, D.sourceSpan.end) }; + } + function a(D, g, i) { + let [, l] = i; + return { type: "ieConditionalStartComment", condition: l.trim().replace(/\s+/g, " "), sourceSpan: D.sourceSpan }; + } + function p(D) { + return { type: "ieConditionalEndComment", sourceSpan: D.sourceSpan }; + } + r.exports = { parseIeConditionalComment: c }; + } }), GD = I({ "src/language-html/loc.js"(e, r) { + "use strict"; + q(); + function t(c) { + return c.sourceSpan.start.offset; + } + function s(c) { + return c.sourceSpan.end.offset; + } + r.exports = { locStart: t, locEnd: s }; + } }), Ze = I({ "node_modules/angular-html-parser/lib/compiler/src/ml_parser/tags.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r; + (function(D) { + D[D.RAW_TEXT = 0] = "RAW_TEXT", D[D.ESCAPABLE_RAW_TEXT = 1] = "ESCAPABLE_RAW_TEXT", D[D.PARSABLE_DATA = 2] = "PARSABLE_DATA"; + })(r = e.TagContentType || (e.TagContentType = {})); + function t(D) { + if (D[0] != ":") + return [null, D]; + let g = D.indexOf(":", 1); + if (g == -1) + throw new Error('Unsupported format "'.concat(D, '" expecting ":namespace:name"')); + return [D.slice(1, g), D.slice(g + 1)]; + } + e.splitNsName = t; + function s(D) { + return t(D)[1] === "ng-container"; + } + e.isNgContainer = s; + function c(D) { + return t(D)[1] === "ng-content"; + } + e.isNgContent = c; + function n(D) { + return t(D)[1] === "ng-template"; + } + e.isNgTemplate = n; + function a(D) { + return D === null ? null : t(D)[0]; + } + e.getNsPrefix = a; + function p(D, g) { + return D ? ":".concat(D, ":").concat(g) : g; + } + e.mergeNsAndName = p, e.NAMED_ENTITIES = { Aacute: "\xC1", aacute: "\xE1", Abreve: "\u0102", abreve: "\u0103", ac: "\u223E", acd: "\u223F", acE: "\u223E\u0333", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", Acy: "\u0410", acy: "\u0430", AElig: "\xC6", aelig: "\xE6", af: "\u2061", Afr: "\u{1D504}", afr: "\u{1D51E}", Agrave: "\xC0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", Alpha: "\u0391", alpha: "\u03B1", Amacr: "\u0100", amacr: "\u0101", amalg: "\u2A3F", AMP: "&", amp: "&", And: "\u2A53", and: "\u2227", andand: "\u2A55", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsd: "\u2221", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", Aogon: "\u0104", aogon: "\u0105", Aopf: "\u{1D538}", aopf: "\u{1D552}", ap: "\u2248", apacir: "\u2A6F", apE: "\u2A70", ape: "\u224A", apid: "\u224B", apos: "'", ApplyFunction: "\u2061", approx: "\u2248", approxeq: "\u224A", Aring: "\xC5", aring: "\xE5", Ascr: "\u{1D49C}", ascr: "\u{1D4B6}", Assign: "\u2254", ast: "*", asymp: "\u2248", asympeq: "\u224D", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", Backslash: "\u2216", Barv: "\u2AE7", barvee: "\u22BD", Barwed: "\u2306", barwed: "\u2305", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", Bcy: "\u0411", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", Because: "\u2235", because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", Bernoullis: "\u212C", Beta: "\u0392", beta: "\u03B2", beth: "\u2136", between: "\u226C", Bfr: "\u{1D505}", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bNot: "\u2AED", bnot: "\u2310", Bopf: "\u{1D539}", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxbox: "\u29C9", boxDL: "\u2557", boxDl: "\u2556", boxdL: "\u2555", boxdl: "\u2510", boxDR: "\u2554", boxDr: "\u2553", boxdR: "\u2552", boxdr: "\u250C", boxH: "\u2550", boxh: "\u2500", boxHD: "\u2566", boxHd: "\u2564", boxhD: "\u2565", boxhd: "\u252C", boxHU: "\u2569", boxHu: "\u2567", boxhU: "\u2568", boxhu: "\u2534", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxUL: "\u255D", boxUl: "\u255C", boxuL: "\u255B", boxul: "\u2518", boxUR: "\u255A", boxUr: "\u2559", boxuR: "\u2558", boxur: "\u2514", boxV: "\u2551", boxv: "\u2502", boxVH: "\u256C", boxVh: "\u256B", boxvH: "\u256A", boxvh: "\u253C", boxVL: "\u2563", boxVl: "\u2562", boxvL: "\u2561", boxvl: "\u2524", boxVR: "\u2560", boxVr: "\u255F", boxvR: "\u255E", boxvr: "\u251C", bprime: "\u2035", Breve: "\u02D8", breve: "\u02D8", brvbar: "\xA6", Bscr: "\u212C", bscr: "\u{1D4B7}", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsol: "\\", bsolb: "\u29C5", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", Bumpeq: "\u224E", bumpeq: "\u224F", Cacute: "\u0106", cacute: "\u0107", Cap: "\u22D2", cap: "\u2229", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", capcup: "\u2A47", capdot: "\u2A40", CapitalDifferentialD: "\u2145", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", Cayleys: "\u212D", ccaps: "\u2A4D", Ccaron: "\u010C", ccaron: "\u010D", Ccedil: "\xC7", ccedil: "\xE7", Ccirc: "\u0108", ccirc: "\u0109", Cconint: "\u2230", ccups: "\u2A4C", ccupssm: "\u2A50", Cdot: "\u010A", cdot: "\u010B", cedil: "\xB8", Cedilla: "\xB8", cemptyv: "\u29B2", cent: "\xA2", CenterDot: "\xB7", centerdot: "\xB7", Cfr: "\u212D", cfr: "\u{1D520}", CHcy: "\u0427", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", Chi: "\u03A7", chi: "\u03C7", cir: "\u25CB", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", CircleDot: "\u2299", circledR: "\xAE", circledS: "\u24C8", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", cirE: "\u29C3", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", clubs: "\u2663", clubsuit: "\u2663", Colon: "\u2237", colon: ":", Colone: "\u2A74", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", Congruent: "\u2261", Conint: "\u222F", conint: "\u222E", ContourIntegral: "\u222E", Copf: "\u2102", copf: "\u{1D554}", coprod: "\u2210", Coproduct: "\u2210", COPY: "\xA9", copy: "\xA9", copysr: "\u2117", CounterClockwiseContourIntegral: "\u2233", crarr: "\u21B5", Cross: "\u2A2F", cross: "\u2717", Cscr: "\u{1D49E}", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", Cup: "\u22D3", cup: "\u222A", cupbrcap: "\u2A48", CupCap: "\u224D", cupcap: "\u2A46", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", Dagger: "\u2021", dagger: "\u2020", daleth: "\u2138", Darr: "\u21A1", dArr: "\u21D3", darr: "\u2193", dash: "\u2010", Dashv: "\u2AE4", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", Dcaron: "\u010E", dcaron: "\u010F", Dcy: "\u0414", dcy: "\u0434", DD: "\u2145", dd: "\u2146", ddagger: "\u2021", ddarr: "\u21CA", DDotrahd: "\u2911", ddotseq: "\u2A77", deg: "\xB0", Del: "\u2207", Delta: "\u0394", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", Dfr: "\u{1D507}", dfr: "\u{1D521}", dHar: "\u2965", dharl: "\u21C3", dharr: "\u21C2", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", diam: "\u22C4", Diamond: "\u22C4", diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", DifferentialD: "\u2146", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", DJcy: "\u0402", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", Dopf: "\u{1D53B}", dopf: "\u{1D555}", Dot: "\xA8", dot: "\u02D9", DotDot: "\u20DC", doteq: "\u2250", doteqdot: "\u2251", DotEqual: "\u2250", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrow: "\u2193", Downarrow: "\u21D3", downarrow: "\u2193", DownArrowBar: "\u2913", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVector: "\u21BD", DownLeftVectorBar: "\u2956", DownRightTeeVector: "\u295F", DownRightVector: "\u21C1", DownRightVectorBar: "\u2957", DownTee: "\u22A4", DownTeeArrow: "\u21A7", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", Dscr: "\u{1D49F}", dscr: "\u{1D4B9}", DScy: "\u0405", dscy: "\u0455", dsol: "\u29F6", Dstrok: "\u0110", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", DZcy: "\u040F", dzcy: "\u045F", dzigrarr: "\u27FF", Eacute: "\xC9", eacute: "\xE9", easter: "\u2A6E", Ecaron: "\u011A", ecaron: "\u011B", ecir: "\u2256", Ecirc: "\xCA", ecirc: "\xEA", ecolon: "\u2255", Ecy: "\u042D", ecy: "\u044D", eDDot: "\u2A77", Edot: "\u0116", eDot: "\u2251", edot: "\u0117", ee: "\u2147", efDot: "\u2252", Efr: "\u{1D508}", efr: "\u{1D522}", eg: "\u2A9A", Egrave: "\xC8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", Element: "\u2208", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", Emacr: "\u0112", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", EmptySmallSquare: "\u25FB", emptyv: "\u2205", EmptyVerySmallSquare: "\u25AB", emsp: "\u2003", emsp13: "\u2004", emsp14: "\u2005", ENG: "\u014A", eng: "\u014B", ensp: "\u2002", Eogon: "\u0118", eogon: "\u0119", Eopf: "\u{1D53C}", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", Epsilon: "\u0395", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", Equal: "\u2A75", equals: "=", EqualTilde: "\u2242", equest: "\u225F", Equilibrium: "\u21CC", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erarr: "\u2971", erDot: "\u2253", Escr: "\u2130", escr: "\u212F", esdot: "\u2250", Esim: "\u2A73", esim: "\u2242", Eta: "\u0397", eta: "\u03B7", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", Exists: "\u2203", expectation: "\u2130", ExponentialE: "\u2147", exponentiale: "\u2147", fallingdotseq: "\u2252", Fcy: "\u0424", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", Ffr: "\u{1D509}", ffr: "\u{1D523}", filig: "\uFB01", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", Fopf: "\u{1D53D}", fopf: "\u{1D557}", ForAll: "\u2200", forall: "\u2200", fork: "\u22D4", forkv: "\u2AD9", Fouriertrf: "\u2131", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", Fscr: "\u2131", fscr: "\u{1D4BB}", gacute: "\u01F5", Gamma: "\u0393", gamma: "\u03B3", Gammad: "\u03DC", gammad: "\u03DD", gap: "\u2A86", Gbreve: "\u011E", gbreve: "\u011F", Gcedil: "\u0122", Gcirc: "\u011C", gcirc: "\u011D", Gcy: "\u0413", gcy: "\u0433", Gdot: "\u0120", gdot: "\u0121", gE: "\u2267", ge: "\u2265", gEl: "\u2A8C", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", ges: "\u2A7E", gescc: "\u2AA9", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", Gfr: "\u{1D50A}", gfr: "\u{1D524}", Gg: "\u22D9", gg: "\u226B", ggg: "\u22D9", gimel: "\u2137", GJcy: "\u0403", gjcy: "\u0453", gl: "\u2277", gla: "\u2AA5", glE: "\u2A92", glj: "\u2AA4", gnap: "\u2A8A", gnapprox: "\u2A8A", gnE: "\u2269", gne: "\u2A88", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", Gopf: "\u{1D53E}", gopf: "\u{1D558}", grave: "`", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", GT: ">", Gt: "\u226B", gt: ">", gtcc: "\u2AA7", gtcir: "\u2A7A", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", Hacek: "\u02C7", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", HARDcy: "\u042A", hardcy: "\u044A", hArr: "\u21D4", harr: "\u2194", harrcir: "\u2948", harrw: "\u21AD", Hat: "^", hbar: "\u210F", Hcirc: "\u0124", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", Hfr: "\u210C", hfr: "\u{1D525}", HilbertSpace: "\u210B", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", Hopf: "\u210D", hopf: "\u{1D559}", horbar: "\u2015", HorizontalLine: "\u2500", Hscr: "\u210B", hscr: "\u{1D4BD}", hslash: "\u210F", Hstrok: "\u0126", hstrok: "\u0127", HumpDownHump: "\u224E", HumpEqual: "\u224F", hybull: "\u2043", hyphen: "\u2010", Iacute: "\xCD", iacute: "\xED", ic: "\u2063", Icirc: "\xCE", icirc: "\xEE", Icy: "\u0418", icy: "\u0438", Idot: "\u0130", IEcy: "\u0415", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", Ifr: "\u2111", ifr: "\u{1D526}", Igrave: "\xCC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", IJlig: "\u0132", ijlig: "\u0133", Im: "\u2111", Imacr: "\u012A", imacr: "\u012B", image: "\u2111", ImaginaryI: "\u2148", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", imof: "\u22B7", imped: "\u01B5", Implies: "\u21D2", in: "\u2208", incare: "\u2105", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", Int: "\u222C", int: "\u222B", intcal: "\u22BA", integers: "\u2124", Integral: "\u222B", intercal: "\u22BA", Intersection: "\u22C2", intlarhk: "\u2A17", intprod: "\u2A3C", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", IOcy: "\u0401", iocy: "\u0451", Iogon: "\u012E", iogon: "\u012F", Iopf: "\u{1D540}", iopf: "\u{1D55A}", Iota: "\u0399", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", Iscr: "\u2110", iscr: "\u{1D4BE}", isin: "\u2208", isindot: "\u22F5", isinE: "\u22F9", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", Itilde: "\u0128", itilde: "\u0129", Iukcy: "\u0406", iukcy: "\u0456", Iuml: "\xCF", iuml: "\xEF", Jcirc: "\u0134", jcirc: "\u0135", Jcy: "\u0419", jcy: "\u0439", Jfr: "\u{1D50D}", jfr: "\u{1D527}", jmath: "\u0237", Jopf: "\u{1D541}", jopf: "\u{1D55B}", Jscr: "\u{1D4A5}", jscr: "\u{1D4BF}", Jsercy: "\u0408", jsercy: "\u0458", Jukcy: "\u0404", jukcy: "\u0454", Kappa: "\u039A", kappa: "\u03BA", kappav: "\u03F0", Kcedil: "\u0136", kcedil: "\u0137", Kcy: "\u041A", kcy: "\u043A", Kfr: "\u{1D50E}", kfr: "\u{1D528}", kgreen: "\u0138", KHcy: "\u0425", khcy: "\u0445", KJcy: "\u040C", kjcy: "\u045C", Kopf: "\u{1D542}", kopf: "\u{1D55C}", Kscr: "\u{1D4A6}", kscr: "\u{1D4C0}", lAarr: "\u21DA", Lacute: "\u0139", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", Lambda: "\u039B", lambda: "\u03BB", Lang: "\u27EA", lang: "\u27E8", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", Laplacetrf: "\u2112", laquo: "\xAB", Larr: "\u219E", lArr: "\u21D0", larr: "\u2190", larrb: "\u21E4", larrbfs: "\u291F", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", lat: "\u2AAB", lAtail: "\u291B", latail: "\u2919", late: "\u2AAD", lates: "\u2AAD\uFE00", lBarr: "\u290E", lbarr: "\u290C", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", Lcaron: "\u013D", lcaron: "\u013E", Lcedil: "\u013B", lcedil: "\u013C", lceil: "\u2308", lcub: "{", Lcy: "\u041B", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", lE: "\u2266", le: "\u2264", LeftAngleBracket: "\u27E8", LeftArrow: "\u2190", Leftarrow: "\u21D0", leftarrow: "\u2190", LeftArrowBar: "\u21E4", LeftArrowRightArrow: "\u21C6", leftarrowtail: "\u21A2", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVector: "\u21C3", LeftDownVectorBar: "\u2959", LeftFloor: "\u230A", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", LeftRightArrow: "\u2194", Leftrightarrow: "\u21D4", leftrightarrow: "\u2194", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", LeftRightVector: "\u294E", LeftTee: "\u22A3", LeftTeeArrow: "\u21A4", LeftTeeVector: "\u295A", leftthreetimes: "\u22CB", LeftTriangle: "\u22B2", LeftTriangleBar: "\u29CF", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVector: "\u21BF", LeftUpVectorBar: "\u2958", LeftVector: "\u21BC", LeftVectorBar: "\u2952", lEg: "\u2A8B", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", les: "\u2A7D", lescc: "\u2AA8", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", lessgtr: "\u2276", LessLess: "\u2AA1", lesssim: "\u2272", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", lfisht: "\u297C", lfloor: "\u230A", Lfr: "\u{1D50F}", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lHar: "\u2962", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", LJcy: "\u0409", ljcy: "\u0459", Ll: "\u22D8", ll: "\u226A", llarr: "\u21C7", llcorner: "\u231E", Lleftarrow: "\u21DA", llhard: "\u296B", lltri: "\u25FA", Lmidot: "\u013F", lmidot: "\u0140", lmoust: "\u23B0", lmoustache: "\u23B0", lnap: "\u2A89", lnapprox: "\u2A89", lnE: "\u2268", lne: "\u2A87", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", LongLeftArrow: "\u27F5", Longleftarrow: "\u27F8", longleftarrow: "\u27F5", LongLeftRightArrow: "\u27F7", Longleftrightarrow: "\u27FA", longleftrightarrow: "\u27F7", longmapsto: "\u27FC", LongRightArrow: "\u27F6", Longrightarrow: "\u27F9", longrightarrow: "\u27F6", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", Lopf: "\u{1D543}", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", Lscr: "\u2112", lscr: "\u{1D4C1}", Lsh: "\u21B0", lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", Lstrok: "\u0141", lstrok: "\u0142", LT: "<", Lt: "\u226A", lt: "<", ltcc: "\u2AA6", ltcir: "\u2A79", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", ltrPar: "\u2996", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", Map: "\u2905", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", Mcy: "\u041C", mcy: "\u043C", mdash: "\u2014", mDDot: "\u223A", measuredangle: "\u2221", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", mid: "\u2223", midast: "*", midcir: "\u2AF0", middot: "\xB7", minus: "\u2212", minusb: "\u229F", minusd: "\u2238", minusdu: "\u2A2A", MinusPlus: "\u2213", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", Mopf: "\u{1D544}", mopf: "\u{1D55E}", mp: "\u2213", Mscr: "\u2133", mscr: "\u{1D4C2}", mstpos: "\u223E", Mu: "\u039C", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nabla: "\u2207", Nacute: "\u0143", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natur: "\u266E", natural: "\u266E", naturals: "\u2115", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", Ncaron: "\u0147", ncaron: "\u0148", Ncedil: "\u0145", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", Ncy: "\u041D", ncy: "\u043D", ndash: "\u2013", ne: "\u2260", nearhk: "\u2924", neArr: "\u21D7", nearr: "\u2197", nearrow: "\u2197", nedot: "\u2250\u0338", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: ` +`, nexist: "\u2204", nexists: "\u2204", Nfr: "\u{1D511}", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", nGg: "\u22D9\u0338", ngsim: "\u2275", nGt: "\u226B\u20D2", ngt: "\u226F", ngtr: "\u226F", nGtv: "\u226B\u0338", nhArr: "\u21CE", nharr: "\u21AE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", NJcy: "\u040A", njcy: "\u045A", nlArr: "\u21CD", nlarr: "\u219A", nldr: "\u2025", nlE: "\u2266\u0338", nle: "\u2270", nLeftarrow: "\u21CD", nleftarrow: "\u219A", nLeftrightarrow: "\u21CE", nleftrightarrow: "\u21AE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nLl: "\u22D8\u0338", nlsim: "\u2274", nLt: "\u226A\u20D2", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nLtv: "\u226A\u0338", nmid: "\u2224", NoBreak: "\u2060", NonBreakingSpace: "\xA0", Nopf: "\u2115", nopf: "\u{1D55F}", Not: "\u2AEC", not: "\xAC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", notin: "\u2209", notindot: "\u22F5\u0338", notinE: "\u22F9\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", NotLeftTriangle: "\u22EA", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangle: "\u22EB", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", npar: "\u2226", nparallel: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", npre: "\u2AAF\u0338", nprec: "\u2280", npreceq: "\u2AAF\u0338", nrArr: "\u21CF", nrarr: "\u219B", nrarrc: "\u2933\u0338", nrarrw: "\u219D\u0338", nRightarrow: "\u21CF", nrightarrow: "\u219B", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", Nscr: "\u{1D4A9}", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", Ntilde: "\xD1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", Nu: "\u039D", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvap: "\u224D\u20D2", nVDash: "\u22AF", nVdash: "\u22AE", nvDash: "\u22AD", nvdash: "\u22AC", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvHarr: "\u2904", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwarhk: "\u2923", nwArr: "\u21D6", nwarr: "\u2196", nwarrow: "\u2196", nwnear: "\u2927", Oacute: "\xD3", oacute: "\xF3", oast: "\u229B", ocir: "\u229A", Ocirc: "\xD4", ocirc: "\xF4", Ocy: "\u041E", ocy: "\u043E", odash: "\u229D", Odblac: "\u0150", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", OElig: "\u0152", oelig: "\u0153", ofcir: "\u29BF", Ofr: "\u{1D512}", ofr: "\u{1D52C}", ogon: "\u02DB", Ograve: "\xD2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", Omacr: "\u014C", omacr: "\u014D", Omega: "\u03A9", omega: "\u03C9", Omicron: "\u039F", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", Oopf: "\u{1D546}", oopf: "\u{1D560}", opar: "\u29B7", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", operp: "\u29B9", oplus: "\u2295", Or: "\u2A54", or: "\u2228", orarr: "\u21BB", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oS: "\u24C8", Oscr: "\u{1D4AA}", oscr: "\u2134", Oslash: "\xD8", oslash: "\xF8", osol: "\u2298", Otilde: "\xD5", otilde: "\xF5", Otimes: "\u2A37", otimes: "\u2297", otimesas: "\u2A36", Ouml: "\xD6", ouml: "\xF6", ovbar: "\u233D", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", par: "\u2225", para: "\xB6", parallel: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", PartialD: "\u2202", Pcy: "\u041F", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", Pfr: "\u{1D513}", pfr: "\u{1D52D}", Phi: "\u03A6", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", Pi: "\u03A0", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plus: "+", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", PlusMinus: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", Poincareplane: "\u210C", pointint: "\u2A15", Popf: "\u2119", popf: "\u{1D561}", pound: "\xA3", Pr: "\u2ABB", pr: "\u227A", prap: "\u2AB7", prcue: "\u227C", prE: "\u2AB3", pre: "\u2AAF", prec: "\u227A", precapprox: "\u2AB7", preccurlyeq: "\u227C", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", precsim: "\u227E", Prime: "\u2033", prime: "\u2032", primes: "\u2119", prnap: "\u2AB9", prnE: "\u2AB5", prnsim: "\u22E8", prod: "\u220F", Product: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", Proportion: "\u2237", Proportional: "\u221D", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", Pscr: "\u{1D4AB}", pscr: "\u{1D4C5}", Psi: "\u03A8", psi: "\u03C8", puncsp: "\u2008", Qfr: "\u{1D514}", qfr: "\u{1D52E}", qint: "\u2A0C", Qopf: "\u211A", qopf: "\u{1D562}", qprime: "\u2057", Qscr: "\u{1D4AC}", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", QUOT: '"', quot: '"', rAarr: "\u21DB", race: "\u223D\u0331", Racute: "\u0154", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", Rang: "\u27EB", rang: "\u27E9", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", Rarr: "\u21A0", rArr: "\u21D2", rarr: "\u2192", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", Rarrtl: "\u2916", rarrtl: "\u21A3", rarrw: "\u219D", rAtail: "\u291C", ratail: "\u291A", ratio: "\u2236", rationals: "\u211A", RBarr: "\u2910", rBarr: "\u290F", rbarr: "\u290D", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", Rcaron: "\u0158", rcaron: "\u0159", Rcedil: "\u0156", rcedil: "\u0157", rceil: "\u2309", rcub: "}", Rcy: "\u0420", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", Re: "\u211C", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", rect: "\u25AD", REG: "\xAE", reg: "\xAE", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", rfisht: "\u297D", rfloor: "\u230B", Rfr: "\u211C", rfr: "\u{1D52F}", rHar: "\u2964", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", Rho: "\u03A1", rho: "\u03C1", rhov: "\u03F1", RightAngleBracket: "\u27E9", RightArrow: "\u2192", Rightarrow: "\u21D2", rightarrow: "\u2192", RightArrowBar: "\u21E5", RightArrowLeftArrow: "\u21C4", rightarrowtail: "\u21A3", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVector: "\u21C2", RightDownVectorBar: "\u2955", RightFloor: "\u230B", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", RightTee: "\u22A2", RightTeeArrow: "\u21A6", RightTeeVector: "\u295B", rightthreetimes: "\u22CC", RightTriangle: "\u22B3", RightTriangleBar: "\u29D0", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVector: "\u21BE", RightUpVectorBar: "\u2954", RightVector: "\u21C0", RightVectorBar: "\u2953", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoust: "\u23B1", rmoustache: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", Ropf: "\u211D", ropf: "\u{1D563}", roplus: "\u2A2E", rotimes: "\u2A35", RoundImplies: "\u2970", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", Rrightarrow: "\u21DB", rsaquo: "\u203A", Rscr: "\u211B", rscr: "\u{1D4C7}", Rsh: "\u21B1", rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", RuleDelayed: "\u29F4", ruluhar: "\u2968", rx: "\u211E", Sacute: "\u015A", sacute: "\u015B", sbquo: "\u201A", Sc: "\u2ABC", sc: "\u227B", scap: "\u2AB8", Scaron: "\u0160", scaron: "\u0161", sccue: "\u227D", scE: "\u2AB4", sce: "\u2AB0", Scedil: "\u015E", scedil: "\u015F", Scirc: "\u015C", scirc: "\u015D", scnap: "\u2ABA", scnE: "\u2AB6", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", Scy: "\u0421", scy: "\u0441", sdot: "\u22C5", sdotb: "\u22A1", sdote: "\u2A66", searhk: "\u2925", seArr: "\u21D8", searr: "\u2198", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", Sfr: "\u{1D516}", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", SHCHcy: "\u0429", shchcy: "\u0449", SHcy: "\u0428", shcy: "\u0448", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", shortmid: "\u2223", shortparallel: "\u2225", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", shy: "\xAD", Sigma: "\u03A3", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", SmallCircle: "\u2218", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", SOFTcy: "\u042C", softcy: "\u044C", sol: "/", solb: "\u29C4", solbar: "\u233F", Sopf: "\u{1D54A}", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", Sqrt: "\u221A", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", squ: "\u25A1", Square: "\u25A1", square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", squarf: "\u25AA", squf: "\u25AA", srarr: "\u2192", Sscr: "\u{1D4AE}", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", Star: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", Sub: "\u22D0", sub: "\u2282", subdot: "\u2ABD", subE: "\u2AC5", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", Subset: "\u22D0", subset: "\u2282", subseteq: "\u2286", subseteqq: "\u2AC5", SubsetEqual: "\u2286", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succ: "\u227B", succapprox: "\u2AB8", succcurlyeq: "\u227D", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", SuchThat: "\u220B", Sum: "\u2211", sum: "\u2211", sung: "\u266A", Sup: "\u22D1", sup: "\u2283", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", supdot: "\u2ABE", supdsub: "\u2AD8", supE: "\u2AC6", supe: "\u2287", supedot: "\u2AC4", Superset: "\u2283", SupersetEqual: "\u2287", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", Supset: "\u22D1", supset: "\u2283", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swarhk: "\u2926", swArr: "\u21D9", swarr: "\u2199", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", Tab: " ", target: "\u2316", Tau: "\u03A4", tau: "\u03C4", tbrk: "\u23B4", Tcaron: "\u0164", tcaron: "\u0165", Tcedil: "\u0162", tcedil: "\u0163", Tcy: "\u0422", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", Tfr: "\u{1D517}", tfr: "\u{1D531}", there4: "\u2234", Therefore: "\u2234", therefore: "\u2234", Theta: "\u0398", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", ThickSpace: "\u205F\u200A", thinsp: "\u2009", ThinSpace: "\u2009", thkap: "\u2248", thksim: "\u223C", THORN: "\xDE", thorn: "\xFE", Tilde: "\u223C", tilde: "\u02DC", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", times: "\xD7", timesb: "\u22A0", timesbar: "\u2A31", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", top: "\u22A4", topbot: "\u2336", topcir: "\u2AF1", Topf: "\u{1D54B}", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", TRADE: "\u2122", trade: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", TripleDot: "\u20DB", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", Tscr: "\u{1D4AF}", tscr: "\u{1D4C9}", TScy: "\u0426", tscy: "\u0446", TSHcy: "\u040B", tshcy: "\u045B", Tstrok: "\u0166", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", Uacute: "\xDA", uacute: "\xFA", Uarr: "\u219F", uArr: "\u21D1", uarr: "\u2191", Uarrocir: "\u2949", Ubrcy: "\u040E", ubrcy: "\u045E", Ubreve: "\u016C", ubreve: "\u016D", Ucirc: "\xDB", ucirc: "\xFB", Ucy: "\u0423", ucy: "\u0443", udarr: "\u21C5", Udblac: "\u0170", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", Ufr: "\u{1D518}", ufr: "\u{1D532}", Ugrave: "\xD9", ugrave: "\xF9", uHar: "\u2963", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", Umacr: "\u016A", umacr: "\u016B", uml: "\xA8", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", uogon: "\u0173", Uopf: "\u{1D54C}", uopf: "\u{1D566}", UpArrow: "\u2191", Uparrow: "\u21D1", uparrow: "\u2191", UpArrowBar: "\u2912", UpArrowDownArrow: "\u21C5", UpDownArrow: "\u2195", Updownarrow: "\u21D5", updownarrow: "\u2195", UpEquilibrium: "\u296E", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", Upsi: "\u03D2", upsi: "\u03C5", upsih: "\u03D2", Upsilon: "\u03A5", upsilon: "\u03C5", UpTee: "\u22A5", UpTeeArrow: "\u21A5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", Uring: "\u016E", uring: "\u016F", urtri: "\u25F9", Uscr: "\u{1D4B0}", uscr: "\u{1D4CA}", utdot: "\u22F0", Utilde: "\u0168", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", Uuml: "\xDC", uuml: "\xFC", uwangle: "\u29A7", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", vArr: "\u21D5", varr: "\u2195", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", Vbar: "\u2AEB", vBar: "\u2AE8", vBarv: "\u2AE9", Vcy: "\u0412", vcy: "\u0432", VDash: "\u22AB", Vdash: "\u22A9", vDash: "\u22A8", vdash: "\u22A2", Vdashl: "\u2AE6", Vee: "\u22C1", vee: "\u2228", veebar: "\u22BB", veeeq: "\u225A", vellip: "\u22EE", Verbar: "\u2016", verbar: "|", Vert: "\u2016", vert: "|", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", Vopf: "\u{1D54D}", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", Vscr: "\u{1D4B1}", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", Vvdash: "\u22AA", vzigzag: "\u299A", Wcirc: "\u0174", wcirc: "\u0175", wedbar: "\u2A5F", Wedge: "\u22C0", wedge: "\u2227", wedgeq: "\u2259", weierp: "\u2118", Wfr: "\u{1D51A}", wfr: "\u{1D534}", Wopf: "\u{1D54E}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", Wscr: "\u{1D4B2}", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", Xfr: "\u{1D51B}", xfr: "\u{1D535}", xhArr: "\u27FA", xharr: "\u27F7", Xi: "\u039E", xi: "\u03BE", xlArr: "\u27F8", xlarr: "\u27F5", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", Xopf: "\u{1D54F}", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrArr: "\u27F9", xrarr: "\u27F6", Xscr: "\u{1D4B3}", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", Yacute: "\xDD", yacute: "\xFD", YAcy: "\u042F", yacy: "\u044F", Ycirc: "\u0176", ycirc: "\u0177", Ycy: "\u042B", ycy: "\u044B", yen: "\xA5", Yfr: "\u{1D51C}", yfr: "\u{1D536}", YIcy: "\u0407", yicy: "\u0457", Yopf: "\u{1D550}", yopf: "\u{1D56A}", Yscr: "\u{1D4B4}", yscr: "\u{1D4CE}", YUcy: "\u042E", yucy: "\u044E", Yuml: "\u0178", yuml: "\xFF", Zacute: "\u0179", zacute: "\u017A", Zcaron: "\u017D", zcaron: "\u017E", Zcy: "\u0417", zcy: "\u0437", Zdot: "\u017B", zdot: "\u017C", zeetrf: "\u2128", ZeroWidthSpace: "\u200B", Zeta: "\u0396", zeta: "\u03B6", Zfr: "\u2128", zfr: "\u{1D537}", ZHcy: "\u0416", zhcy: "\u0436", zigrarr: "\u21DD", Zopf: "\u2124", zopf: "\u{1D56B}", Zscr: "\u{1D4B5}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }, e.NGSP_UNICODE = "\uE500", e.NAMED_ENTITIES.ngsp = e.NGSP_UNICODE; + } }), _s = I({ "node_modules/angular-html-parser/lib/compiler/src/ml_parser/html_tags.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = Ze(), t = class { + constructor() { + let { closedByChildren: a, implicitNamespacePrefix: p, contentType: D = r.TagContentType.PARSABLE_DATA, closedByParent: g = false, isVoid: i = false, ignoreFirstLf: l = false } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + this.closedByChildren = {}, this.closedByParent = false, this.canSelfClose = false, a && a.length > 0 && a.forEach((h) => this.closedByChildren[h] = true), this.isVoid = i, this.closedByParent = g || i, this.implicitNamespacePrefix = p || null, this.contentType = D, this.ignoreFirstLf = l; + } + isClosedByChild(a) { + return this.isVoid || a.toLowerCase() in this.closedByChildren; + } + }; + e.HtmlTagDefinition = t; + var s, c; + function n(a) { + return c || (s = new t(), c = { base: new t({ isVoid: true }), meta: new t({ isVoid: true }), area: new t({ isVoid: true }), embed: new t({ isVoid: true }), link: new t({ isVoid: true }), img: new t({ isVoid: true }), input: new t({ isVoid: true }), param: new t({ isVoid: true }), hr: new t({ isVoid: true }), br: new t({ isVoid: true }), source: new t({ isVoid: true }), track: new t({ isVoid: true }), wbr: new t({ isVoid: true }), p: new t({ closedByChildren: ["address", "article", "aside", "blockquote", "div", "dl", "fieldset", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "hr", "main", "nav", "ol", "p", "pre", "section", "table", "ul"], closedByParent: true }), thead: new t({ closedByChildren: ["tbody", "tfoot"] }), tbody: new t({ closedByChildren: ["tbody", "tfoot"], closedByParent: true }), tfoot: new t({ closedByChildren: ["tbody"], closedByParent: true }), tr: new t({ closedByChildren: ["tr"], closedByParent: true }), td: new t({ closedByChildren: ["td", "th"], closedByParent: true }), th: new t({ closedByChildren: ["td", "th"], closedByParent: true }), col: new t({ isVoid: true }), svg: new t({ implicitNamespacePrefix: "svg" }), math: new t({ implicitNamespacePrefix: "math" }), li: new t({ closedByChildren: ["li"], closedByParent: true }), dt: new t({ closedByChildren: ["dt", "dd"] }), dd: new t({ closedByChildren: ["dt", "dd"], closedByParent: true }), rb: new t({ closedByChildren: ["rb", "rt", "rtc", "rp"], closedByParent: true }), rt: new t({ closedByChildren: ["rb", "rt", "rtc", "rp"], closedByParent: true }), rtc: new t({ closedByChildren: ["rb", "rtc", "rp"], closedByParent: true }), rp: new t({ closedByChildren: ["rb", "rt", "rtc", "rp"], closedByParent: true }), optgroup: new t({ closedByChildren: ["optgroup"], closedByParent: true }), option: new t({ closedByChildren: ["option", "optgroup"], closedByParent: true }), pre: new t({ ignoreFirstLf: true }), listing: new t({ ignoreFirstLf: true }), style: new t({ contentType: r.TagContentType.RAW_TEXT }), script: new t({ contentType: r.TagContentType.RAW_TEXT }), title: new t({ contentType: r.TagContentType.ESCAPABLE_RAW_TEXT }), textarea: new t({ contentType: r.TagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }) }), c[a] || s; + } + e.getHtmlTagDefinition = n; + } }), VD = I({ "node_modules/angular-html-parser/lib/compiler/src/ast_path.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = class { + constructor(t) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1; + this.path = t, this.position = s; + } + get empty() { + return !this.path || !this.path.length; + } + get head() { + return this.path[0]; + } + get tail() { + return this.path[this.path.length - 1]; + } + parentOf(t) { + return t && this.path[this.path.indexOf(t) - 1]; + } + childOf(t) { + return this.path[this.path.indexOf(t) + 1]; + } + first(t) { + for (let s = this.path.length - 1; s >= 0; s--) { + let c = this.path[s]; + if (c instanceof t) + return c; + } + } + push(t) { + this.path.push(t); + } + pop() { + return this.path.pop(); + } + }; + e.AstPath = r; + } }), Ss = I({ "node_modules/angular-html-parser/lib/compiler/src/ml_parser/ast.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = VD(), t = class { + constructor(d, m, T) { + this.value = d, this.sourceSpan = m, this.i18n = T, this.type = "text"; + } + visit(d, m) { + return d.visitText(this, m); + } + }; + e.Text = t; + var s = class { + constructor(d, m) { + this.value = d, this.sourceSpan = m, this.type = "cdata"; + } + visit(d, m) { + return d.visitCdata(this, m); + } + }; + e.CDATA = s; + var c = class { + constructor(d, m, T, B, A, N) { + this.switchValue = d, this.type = m, this.cases = T, this.sourceSpan = B, this.switchValueSourceSpan = A, this.i18n = N; + } + visit(d, m) { + return d.visitExpansion(this, m); + } + }; + e.Expansion = c; + var n = class { + constructor(d, m, T, B, A) { + this.value = d, this.expression = m, this.sourceSpan = T, this.valueSourceSpan = B, this.expSourceSpan = A; + } + visit(d, m) { + return d.visitExpansionCase(this, m); + } + }; + e.ExpansionCase = n; + var a = class { + constructor(d, m, T) { + let B = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null, A = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : null, N = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : null; + this.name = d, this.value = m, this.sourceSpan = T, this.valueSpan = B, this.nameSpan = A, this.i18n = N, this.type = "attribute"; + } + visit(d, m) { + return d.visitAttribute(this, m); + } + }; + e.Attribute = a; + var p = class { + constructor(d, m, T, B) { + let A = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : null, N = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : null, R = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : null, $ = arguments.length > 7 && arguments[7] !== void 0 ? arguments[7] : null; + this.name = d, this.attrs = m, this.children = T, this.sourceSpan = B, this.startSourceSpan = A, this.endSourceSpan = N, this.nameSpan = R, this.i18n = $, this.type = "element"; + } + visit(d, m) { + return d.visitElement(this, m); + } + }; + e.Element = p; + var D = class { + constructor(d, m) { + this.value = d, this.sourceSpan = m, this.type = "comment"; + } + visit(d, m) { + return d.visitComment(this, m); + } + }; + e.Comment = D; + var g = class { + constructor(d, m) { + this.value = d, this.sourceSpan = m, this.type = "docType"; + } + visit(d, m) { + return d.visitDocType(this, m); + } + }; + e.DocType = g; + function i(d, m) { + let T = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, B = [], A = d.visit ? (N) => d.visit(N, T) || N.visit(d, T) : (N) => N.visit(d, T); + return m.forEach((N) => { + let R = A(N); + R && B.push(R); + }), B; + } + e.visitAll = i; + var l = class { + constructor() { + } + visitElement(d, m) { + this.visitChildren(m, (T) => { + T(d.attrs), T(d.children); + }); + } + visitAttribute(d, m) { + } + visitText(d, m) { + } + visitCdata(d, m) { + } + visitComment(d, m) { + } + visitDocType(d, m) { + } + visitExpansion(d, m) { + return this.visitChildren(m, (T) => { + T(d.cases); + }); + } + visitExpansionCase(d, m) { + } + visitChildren(d, m) { + let T = [], B = this; + function A(N) { + N && T.push(i(B, N, d)); + } + return m(A), Array.prototype.concat.apply([], T); + } + }; + e.RecursiveVisitor = l; + function h(d) { + let m = d.sourceSpan.start.offset, T = d.sourceSpan.end.offset; + return d instanceof p && (d.endSourceSpan ? T = d.endSourceSpan.end.offset : d.children && d.children.length && (T = h(d.children[d.children.length - 1]).end)), { start: m, end: T }; + } + function C(d, m) { + let T = [], B = new class extends l { + visit(A, N) { + let R = h(A); + if (R.start <= m && m < R.end) + T.push(A); + else + return true; + } + }(); + return i(B, d), new r.AstPath(T, m); + } + e.findNode = C; + } }), XD = I({ "node_modules/angular-html-parser/lib/compiler/src/assertions.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + function r(c, n) { + if (n != null) { + if (!Array.isArray(n)) + throw new Error("Expected '".concat(c, "' to be an array of strings.")); + for (let a = 0; a < n.length; a += 1) + if (typeof n[a] != "string") + throw new Error("Expected '".concat(c, "' to be an array of strings.")); + } + } + e.assertArrayOfStrings = r; + var t = [/^\s*$/, /[<>]/, /^[{}]$/, /&(#|[a-z])/i, /^\/\//]; + function s(c, n) { + if (n != null && !(Array.isArray(n) && n.length == 2)) + throw new Error("Expected '".concat(c, "' to be an array, [start, end].")); + if (n != null) { + let a = n[0], p = n[1]; + t.forEach((D) => { + if (D.test(a) || D.test(p)) + throw new Error("['".concat(a, "', '").concat(p, "'] contains unusable interpolation symbol.")); + }); + } + } + e.assertInterpolationSymbols = s; + } }), HD = I({ "node_modules/angular-html-parser/lib/compiler/src/ml_parser/interpolation_config.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = XD(), t = class { + constructor(s, c) { + this.start = s, this.end = c; + } + static fromArray(s) { + return s ? (r.assertInterpolationSymbols("interpolation", s), new t(s[0], s[1])) : e.DEFAULT_INTERPOLATION_CONFIG; + } + }; + e.InterpolationConfig = t, e.DEFAULT_INTERPOLATION_CONFIG = new t("{{", "}}"); + } }), zD = I({ "node_modules/angular-html-parser/lib/compiler/src/ml_parser/lexer.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = hs(), t = Te(), s = HD(), c = Ze(), n; + (function(u) { + u[u.TAG_OPEN_START = 0] = "TAG_OPEN_START", u[u.TAG_OPEN_END = 1] = "TAG_OPEN_END", u[u.TAG_OPEN_END_VOID = 2] = "TAG_OPEN_END_VOID", u[u.TAG_CLOSE = 3] = "TAG_CLOSE", u[u.TEXT = 4] = "TEXT", u[u.ESCAPABLE_RAW_TEXT = 5] = "ESCAPABLE_RAW_TEXT", u[u.RAW_TEXT = 6] = "RAW_TEXT", u[u.COMMENT_START = 7] = "COMMENT_START", u[u.COMMENT_END = 8] = "COMMENT_END", u[u.CDATA_START = 9] = "CDATA_START", u[u.CDATA_END = 10] = "CDATA_END", u[u.ATTR_NAME = 11] = "ATTR_NAME", u[u.ATTR_QUOTE = 12] = "ATTR_QUOTE", u[u.ATTR_VALUE = 13] = "ATTR_VALUE", u[u.DOC_TYPE_START = 14] = "DOC_TYPE_START", u[u.DOC_TYPE_END = 15] = "DOC_TYPE_END", u[u.EXPANSION_FORM_START = 16] = "EXPANSION_FORM_START", u[u.EXPANSION_CASE_VALUE = 17] = "EXPANSION_CASE_VALUE", u[u.EXPANSION_CASE_EXP_START = 18] = "EXPANSION_CASE_EXP_START", u[u.EXPANSION_CASE_EXP_END = 19] = "EXPANSION_CASE_EXP_END", u[u.EXPANSION_FORM_END = 20] = "EXPANSION_FORM_END", u[u.EOF = 21] = "EOF"; + })(n = e.TokenType || (e.TokenType = {})); + var a = class { + constructor(u, o, E) { + this.type = u, this.parts = o, this.sourceSpan = E; + } + }; + e.Token = a; + var p = class extends t.ParseError { + constructor(u, o, E) { + super(E, u), this.tokenType = o; + } + }; + e.TokenError = p; + var D = class { + constructor(u, o) { + this.tokens = u, this.errors = o; + } + }; + e.TokenizeResult = D; + function g(u, o, E) { + let f = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}; + return new d(new t.ParseSourceFile(u, o), E, f).tokenize(); + } + e.tokenize = g; + var i = /\r\n?/g; + function l(u) { + let o = u === r.$EOF ? "EOF" : String.fromCharCode(u); + return 'Unexpected character "'.concat(o, '"'); + } + function h(u) { + return 'Unknown entity "'.concat(u, '" - use the "&#;" or "&#x;" syntax'); + } + var C = class { + constructor(u) { + this.error = u; + } + }, d = class { + constructor(u, o, E) { + this._getTagContentType = o, this._currentTokenStart = null, this._currentTokenType = null, this._expansionCaseStack = [], this._inInterpolation = false, this._fullNameStack = [], this.tokens = [], this.errors = [], this._tokenizeIcu = E.tokenizeExpansionForms || false, this._interpolationConfig = E.interpolationConfig || s.DEFAULT_INTERPOLATION_CONFIG, this._leadingTriviaCodePoints = E.leadingTriviaChars && E.leadingTriviaChars.map((F) => F.codePointAt(0) || 0), this._canSelfClose = E.canSelfClose || false, this._allowHtmComponentClosingTags = E.allowHtmComponentClosingTags || false; + let f = E.range || { endPos: u.content.length, startPos: 0, startLine: 0, startCol: 0 }; + this._cursor = E.escapedString ? new k(u, f) : new x(u, f); + try { + this._cursor.init(); + } catch (F) { + this.handleError(F); + } + } + _processCarriageReturns(u) { + return u.replace(i, ` +`); + } + tokenize() { + for (; this._cursor.peek() !== r.$EOF; ) { + let u = this._cursor.clone(); + try { + if (this._attemptCharCode(r.$LT)) + if (this._attemptCharCode(r.$BANG)) + this._attemptStr("[CDATA[") ? this._consumeCdata(u) : this._attemptStr("--") ? this._consumeComment(u) : this._attemptStrCaseInsensitive("doctype") ? this._consumeDocType(u) : this._consumeBogusComment(u); + else if (this._attemptCharCode(r.$SLASH)) + this._consumeTagClose(u); + else { + let o = this._cursor.clone(); + this._attemptCharCode(r.$QUESTION) ? (this._cursor = o, this._consumeBogusComment(u)) : this._consumeTagOpen(u); + } + else + this._tokenizeIcu && this._tokenizeExpansionForm() || this._consumeText(); + } catch (o) { + this.handleError(o); + } + } + return this._beginToken(n.EOF), this._endToken([]), new D(O(this.tokens), this.errors); + } + _tokenizeExpansionForm() { + if (this.isExpansionFormStart()) + return this._consumeExpansionFormStart(), true; + if (R(this._cursor.peek()) && this._isInExpansionForm()) + return this._consumeExpansionCaseStart(), true; + if (this._cursor.peek() === r.$RBRACE) { + if (this._isInExpansionCase()) + return this._consumeExpansionCaseEnd(), true; + if (this._isInExpansionForm()) + return this._consumeExpansionFormEnd(), true; + } + return false; + } + _beginToken(u) { + let o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this._cursor.clone(); + this._currentTokenStart = o, this._currentTokenType = u; + } + _endToken(u) { + let o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this._cursor.clone(); + if (this._currentTokenStart === null) + throw new p("Programming error - attempted to end a token when there was no start to the token", this._currentTokenType, this._cursor.getSpan(o)); + if (this._currentTokenType === null) + throw new p("Programming error - attempted to end a token which has no token type", null, this._cursor.getSpan(this._currentTokenStart)); + let E = new a(this._currentTokenType, u, this._cursor.getSpan(this._currentTokenStart, this._leadingTriviaCodePoints)); + return this.tokens.push(E), this._currentTokenStart = null, this._currentTokenType = null, E; + } + _createError(u, o) { + this._isInExpansionForm() && (u += ` (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)`); + let E = new p(u, this._currentTokenType, o); + return this._currentTokenStart = null, this._currentTokenType = null, new C(E); + } + handleError(u) { + if (u instanceof M && (u = this._createError(u.msg, this._cursor.getSpan(u.cursor))), u instanceof C) + this.errors.push(u.error); + else + throw u; + } + _attemptCharCode(u) { + return this._cursor.peek() === u ? (this._cursor.advance(), true) : false; + } + _attemptCharCodeCaseInsensitive(u) { + return $(this._cursor.peek(), u) ? (this._cursor.advance(), true) : false; + } + _requireCharCode(u) { + let o = this._cursor.clone(); + if (!this._attemptCharCode(u)) + throw this._createError(l(this._cursor.peek()), this._cursor.getSpan(o)); + } + _attemptStr(u) { + let o = u.length; + if (this._cursor.charsLeft() < o) + return false; + let E = this._cursor.clone(); + for (let f = 0; f < o; f++) + if (!this._attemptCharCode(u.charCodeAt(f))) + return this._cursor = E, false; + return true; + } + _attemptStrCaseInsensitive(u) { + for (let o = 0; o < u.length; o++) + if (!this._attemptCharCodeCaseInsensitive(u.charCodeAt(o))) + return false; + return true; + } + _requireStr(u) { + let o = this._cursor.clone(); + if (!this._attemptStr(u)) + throw this._createError(l(this._cursor.peek()), this._cursor.getSpan(o)); + } + _requireStrCaseInsensitive(u) { + let o = this._cursor.clone(); + if (!this._attemptStrCaseInsensitive(u)) + throw this._createError(l(this._cursor.peek()), this._cursor.getSpan(o)); + } + _attemptCharCodeUntilFn(u) { + for (; !u(this._cursor.peek()); ) + this._cursor.advance(); + } + _requireCharCodeUntilFn(u, o) { + let E = this._cursor.clone(); + if (this._attemptCharCodeUntilFn(u), this._cursor.clone().diff(E) < o) + throw this._createError(l(this._cursor.peek()), this._cursor.getSpan(E)); + } + _attemptUntilChar(u) { + for (; this._cursor.peek() !== u; ) + this._cursor.advance(); + } + _readChar(u) { + if (u && this._cursor.peek() === r.$AMPERSAND) + return this._decodeEntity(); + { + let o = String.fromCodePoint(this._cursor.peek()); + return this._cursor.advance(), o; + } + } + _decodeEntity() { + let u = this._cursor.clone(); + if (this._cursor.advance(), this._attemptCharCode(r.$HASH)) { + let o = this._attemptCharCode(r.$x) || this._attemptCharCode(r.$X), E = this._cursor.clone(); + if (this._attemptCharCodeUntilFn(A), this._cursor.peek() != r.$SEMICOLON) + throw this._createError(l(this._cursor.peek()), this._cursor.getSpan()); + let f = this._cursor.getChars(E); + this._cursor.advance(); + try { + let F = parseInt(f, o ? 16 : 10); + return String.fromCharCode(F); + } catch { + throw this._createError(h(this._cursor.getChars(u)), this._cursor.getSpan()); + } + } else { + let o = this._cursor.clone(); + if (this._attemptCharCodeUntilFn(N), this._cursor.peek() != r.$SEMICOLON) + return this._cursor = o, "&"; + let E = this._cursor.getChars(o); + this._cursor.advance(); + let f = c.NAMED_ENTITIES[E]; + if (!f) + throw this._createError(h(E), this._cursor.getSpan(u)); + return f; + } + } + _consumeRawText(u, o) { + this._beginToken(u ? n.ESCAPABLE_RAW_TEXT : n.RAW_TEXT); + let E = []; + for (; ; ) { + let f = this._cursor.clone(), F = o(); + if (this._cursor = f, F) + break; + E.push(this._readChar(u)); + } + return this._endToken([this._processCarriageReturns(E.join(""))]); + } + _consumeComment(u) { + this._beginToken(n.COMMENT_START, u), this._endToken([]), this._consumeRawText(false, () => this._attemptStr("-->")), this._beginToken(n.COMMENT_END), this._requireStr("-->"), this._endToken([]); + } + _consumeBogusComment(u) { + this._beginToken(n.COMMENT_START, u), this._endToken([]), this._consumeRawText(false, () => this._cursor.peek() === r.$GT), this._beginToken(n.COMMENT_END), this._cursor.advance(), this._endToken([]); + } + _consumeCdata(u) { + this._beginToken(n.CDATA_START, u), this._endToken([]), this._consumeRawText(false, () => this._attemptStr("]]>")), this._beginToken(n.CDATA_END), this._requireStr("]]>"), this._endToken([]); + } + _consumeDocType(u) { + this._beginToken(n.DOC_TYPE_START, u), this._endToken([]), this._consumeRawText(false, () => this._cursor.peek() === r.$GT), this._beginToken(n.DOC_TYPE_END), this._cursor.advance(), this._endToken([]); + } + _consumePrefixAndName() { + let u = this._cursor.clone(), o = ""; + for (; this._cursor.peek() !== r.$COLON && !B(this._cursor.peek()); ) + this._cursor.advance(); + let E; + this._cursor.peek() === r.$COLON ? (o = this._cursor.getChars(u), this._cursor.advance(), E = this._cursor.clone()) : E = u, this._requireCharCodeUntilFn(T, o === "" ? 0 : 1); + let f = this._cursor.getChars(E); + return [o, f]; + } + _consumeTagOpen(u) { + let o, E, f, F = this.tokens.length, P = this._cursor.clone(), j = []; + try { + if (!r.isAsciiLetter(this._cursor.peek())) + throw this._createError(l(this._cursor.peek()), this._cursor.getSpan(u)); + for (f = this._consumeTagOpenStart(u), E = f.parts[0], o = f.parts[1], this._attemptCharCodeUntilFn(m); this._cursor.peek() !== r.$SLASH && this._cursor.peek() !== r.$GT; ) { + let [X, H] = this._consumeAttributeName(); + if (this._attemptCharCodeUntilFn(m), this._attemptCharCode(r.$EQ)) { + this._attemptCharCodeUntilFn(m); + let z = this._consumeAttributeValue(); + j.push({ prefix: X, name: H, value: z }); + } else + j.push({ prefix: X, name: H }); + this._attemptCharCodeUntilFn(m); + } + this._consumeTagOpenEnd(); + } catch (X) { + if (X instanceof C) { + this._cursor = P, f && (this.tokens.length = F), this._beginToken(n.TEXT, u), this._endToken(["<"]); + return; + } + throw X; + } + if (this._canSelfClose && this.tokens[this.tokens.length - 1].type === n.TAG_OPEN_END_VOID) + return; + let W = this._getTagContentType(o, E, this._fullNameStack.length > 0, j); + this._handleFullNameStackForTagOpen(E, o), W === c.TagContentType.RAW_TEXT ? this._consumeRawTextWithTagClose(E, o, false) : W === c.TagContentType.ESCAPABLE_RAW_TEXT && this._consumeRawTextWithTagClose(E, o, true); + } + _consumeRawTextWithTagClose(u, o, E) { + let f = this._consumeRawText(E, () => !this._attemptCharCode(r.$LT) || !this._attemptCharCode(r.$SLASH) || (this._attemptCharCodeUntilFn(m), !this._attemptStrCaseInsensitive(u ? "".concat(u, ":").concat(o) : o)) ? false : (this._attemptCharCodeUntilFn(m), this._attemptCharCode(r.$GT))); + this._beginToken(n.TAG_CLOSE), this._requireCharCodeUntilFn((F) => F === r.$GT, 3), this._cursor.advance(), this._endToken([u, o]), this._handleFullNameStackForTagClose(u, o); + } + _consumeTagOpenStart(u) { + this._beginToken(n.TAG_OPEN_START, u); + let o = this._consumePrefixAndName(); + return this._endToken(o); + } + _consumeAttributeName() { + let u = this._cursor.peek(); + if (u === r.$SQ || u === r.$DQ) + throw this._createError(l(u), this._cursor.getSpan()); + this._beginToken(n.ATTR_NAME); + let o = this._consumePrefixAndName(); + return this._endToken(o), o; + } + _consumeAttributeValue() { + let u; + if (this._cursor.peek() === r.$SQ || this._cursor.peek() === r.$DQ) { + this._beginToken(n.ATTR_QUOTE); + let o = this._cursor.peek(); + this._cursor.advance(), this._endToken([String.fromCodePoint(o)]), this._beginToken(n.ATTR_VALUE); + let E = []; + for (; this._cursor.peek() !== o; ) + E.push(this._readChar(true)); + u = this._processCarriageReturns(E.join("")), this._endToken([u]), this._beginToken(n.ATTR_QUOTE), this._cursor.advance(), this._endToken([String.fromCodePoint(o)]); + } else { + this._beginToken(n.ATTR_VALUE); + let o = this._cursor.clone(); + this._requireCharCodeUntilFn(T, 1), u = this._processCarriageReturns(this._cursor.getChars(o)), this._endToken([u]); + } + return u; + } + _consumeTagOpenEnd() { + let u = this._attemptCharCode(r.$SLASH) ? n.TAG_OPEN_END_VOID : n.TAG_OPEN_END; + this._beginToken(u), this._requireCharCode(r.$GT), this._endToken([]); + } + _consumeTagClose(u) { + if (this._beginToken(n.TAG_CLOSE, u), this._attemptCharCodeUntilFn(m), this._allowHtmComponentClosingTags && this._attemptCharCode(r.$SLASH)) + this._attemptCharCodeUntilFn(m), this._requireCharCode(r.$GT), this._endToken([]); + else { + let [o, E] = this._consumePrefixAndName(); + this._attemptCharCodeUntilFn(m), this._requireCharCode(r.$GT), this._endToken([o, E]), this._handleFullNameStackForTagClose(o, E); + } + } + _consumeExpansionFormStart() { + this._beginToken(n.EXPANSION_FORM_START), this._requireCharCode(r.$LBRACE), this._endToken([]), this._expansionCaseStack.push(n.EXPANSION_FORM_START), this._beginToken(n.RAW_TEXT); + let u = this._readUntil(r.$COMMA); + this._endToken([u]), this._requireCharCode(r.$COMMA), this._attemptCharCodeUntilFn(m), this._beginToken(n.RAW_TEXT); + let o = this._readUntil(r.$COMMA); + this._endToken([o]), this._requireCharCode(r.$COMMA), this._attemptCharCodeUntilFn(m); + } + _consumeExpansionCaseStart() { + this._beginToken(n.EXPANSION_CASE_VALUE); + let u = this._readUntil(r.$LBRACE).trim(); + this._endToken([u]), this._attemptCharCodeUntilFn(m), this._beginToken(n.EXPANSION_CASE_EXP_START), this._requireCharCode(r.$LBRACE), this._endToken([]), this._attemptCharCodeUntilFn(m), this._expansionCaseStack.push(n.EXPANSION_CASE_EXP_START); + } + _consumeExpansionCaseEnd() { + this._beginToken(n.EXPANSION_CASE_EXP_END), this._requireCharCode(r.$RBRACE), this._endToken([]), this._attemptCharCodeUntilFn(m), this._expansionCaseStack.pop(); + } + _consumeExpansionFormEnd() { + this._beginToken(n.EXPANSION_FORM_END), this._requireCharCode(r.$RBRACE), this._endToken([]), this._expansionCaseStack.pop(); + } + _consumeText() { + let u = this._cursor.clone(); + this._beginToken(n.TEXT, u); + let o = []; + do + this._interpolationConfig && this._attemptStr(this._interpolationConfig.start) ? (o.push(this._interpolationConfig.start), this._inInterpolation = true) : this._interpolationConfig && this._inInterpolation && this._attemptStr(this._interpolationConfig.end) ? (o.push(this._interpolationConfig.end), this._inInterpolation = false) : o.push(this._readChar(true)); + while (!this._isTextEnd()); + this._endToken([this._processCarriageReturns(o.join(""))]); + } + _isTextEnd() { + return !!(this._cursor.peek() === r.$LT || this._cursor.peek() === r.$EOF || this._tokenizeIcu && !this._inInterpolation && (this.isExpansionFormStart() || this._cursor.peek() === r.$RBRACE && this._isInExpansionCase())); + } + _readUntil(u) { + let o = this._cursor.clone(); + return this._attemptUntilChar(u), this._cursor.getChars(o); + } + _isInExpansionCase() { + return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === n.EXPANSION_CASE_EXP_START; + } + _isInExpansionForm() { + return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === n.EXPANSION_FORM_START; + } + isExpansionFormStart() { + if (this._cursor.peek() !== r.$LBRACE) + return false; + if (this._interpolationConfig) { + let u = this._cursor.clone(), o = this._attemptStr(this._interpolationConfig.start); + return this._cursor = u, !o; + } + return true; + } + _handleFullNameStackForTagOpen(u, o) { + let E = c.mergeNsAndName(u, o); + (this._fullNameStack.length === 0 || this._fullNameStack[this._fullNameStack.length - 1] === E) && this._fullNameStack.push(E); + } + _handleFullNameStackForTagClose(u, o) { + let E = c.mergeNsAndName(u, o); + this._fullNameStack.length !== 0 && this._fullNameStack[this._fullNameStack.length - 1] === E && this._fullNameStack.pop(); + } + }; + function m(u) { + return !r.isWhitespace(u) || u === r.$EOF; + } + function T(u) { + return r.isWhitespace(u) || u === r.$GT || u === r.$SLASH || u === r.$SQ || u === r.$DQ || u === r.$EQ; + } + function B(u) { + return (u < r.$a || r.$z < u) && (u < r.$A || r.$Z < u) && (u < r.$0 || u > r.$9); + } + function A(u) { + return u == r.$SEMICOLON || u == r.$EOF || !r.isAsciiHexDigit(u); + } + function N(u) { + return u == r.$SEMICOLON || u == r.$EOF || !r.isAsciiLetter(u); + } + function R(u) { + return u === r.$EQ || r.isAsciiLetter(u) || r.isDigit(u); + } + function $(u, o) { + return _(u) == _(o); + } + function _(u) { + return u >= r.$a && u <= r.$z ? u - r.$a + r.$A : u; + } + function O(u) { + let o = [], E; + for (let f = 0; f < u.length; f++) { + let F = u[f]; + E && E.type == n.TEXT && F.type == n.TEXT ? (E.parts[0] += F.parts[0], E.sourceSpan.end = F.sourceSpan.end) : (E = F, o.push(E)); + } + return o; + } + var x = class { + constructor(u, o) { + if (u instanceof x) + this.file = u.file, this.input = u.input, this.end = u.end, this.state = Object.assign({}, u.state); + else { + if (!o) + throw new Error("Programming error: the range argument must be provided with a file argument."); + this.file = u, this.input = u.content, this.end = o.endPos, this.state = { peek: -1, offset: o.startPos, line: o.startLine, column: o.startCol }; + } + } + clone() { + return new x(this); + } + peek() { + return this.state.peek; + } + charsLeft() { + return this.end - this.state.offset; + } + diff(u) { + return this.state.offset - u.state.offset; + } + advance() { + this.advanceState(this.state); + } + init() { + this.updatePeek(this.state); + } + getSpan(u, o) { + if (u = u || this, o) + for (u = u.clone(); this.diff(u) > 0 && o.indexOf(u.peek()) !== -1; ) + u.advance(); + return new t.ParseSourceSpan(new t.ParseLocation(u.file, u.state.offset, u.state.line, u.state.column), new t.ParseLocation(this.file, this.state.offset, this.state.line, this.state.column)); + } + getChars(u) { + return this.input.substring(u.state.offset, this.state.offset); + } + charAt(u) { + return this.input.charCodeAt(u); + } + advanceState(u) { + if (u.offset >= this.end) + throw this.state = u, new M('Unexpected character "EOF"', this); + let o = this.charAt(u.offset); + o === r.$LF ? (u.line++, u.column = 0) : r.isNewLine(o) || u.column++, u.offset++, this.updatePeek(u); + } + updatePeek(u) { + u.peek = u.offset >= this.end ? r.$EOF : this.charAt(u.offset); + } + }, k = class extends x { + constructor(u, o) { + u instanceof k ? (super(u), this.internalState = Object.assign({}, u.internalState)) : (super(u, o), this.internalState = this.state); + } + advance() { + this.state = this.internalState, super.advance(), this.processEscapeSequence(); + } + init() { + super.init(), this.processEscapeSequence(); + } + clone() { + return new k(this); + } + getChars(u) { + let o = u.clone(), E = ""; + for (; o.internalState.offset < this.internalState.offset; ) + E += String.fromCodePoint(o.peek()), o.advance(); + return E; + } + processEscapeSequence() { + let u = () => this.internalState.peek; + if (u() === r.$BACKSLASH) + if (this.internalState = Object.assign({}, this.state), this.advanceState(this.internalState), u() === r.$n) + this.state.peek = r.$LF; + else if (u() === r.$r) + this.state.peek = r.$CR; + else if (u() === r.$v) + this.state.peek = r.$VTAB; + else if (u() === r.$t) + this.state.peek = r.$TAB; + else if (u() === r.$b) + this.state.peek = r.$BSPACE; + else if (u() === r.$f) + this.state.peek = r.$FF; + else if (u() === r.$u) + if (this.advanceState(this.internalState), u() === r.$LBRACE) { + this.advanceState(this.internalState); + let o = this.clone(), E = 0; + for (; u() !== r.$RBRACE; ) + this.advanceState(this.internalState), E++; + this.state.peek = this.decodeHexDigits(o, E); + } else { + let o = this.clone(); + this.advanceState(this.internalState), this.advanceState(this.internalState), this.advanceState(this.internalState), this.state.peek = this.decodeHexDigits(o, 4); + } + else if (u() === r.$x) { + this.advanceState(this.internalState); + let o = this.clone(); + this.advanceState(this.internalState), this.state.peek = this.decodeHexDigits(o, 2); + } else if (r.isOctalDigit(u())) { + let o = "", E = 0, f = this.clone(); + for (; r.isOctalDigit(u()) && E < 3; ) + f = this.clone(), o += String.fromCodePoint(u()), this.advanceState(this.internalState), E++; + this.state.peek = parseInt(o, 8), this.internalState = f.internalState; + } else + r.isNewLine(this.internalState.peek) ? (this.advanceState(this.internalState), this.state = this.internalState) : this.state.peek = this.internalState.peek; + } + decodeHexDigits(u, o) { + let E = this.input.substr(u.internalState.offset, o), f = parseInt(E, 16); + if (isNaN(f)) + throw u.state = u.internalState, new M("Invalid hexadecimal escape sequence", u); + return f; + } + }, M = class { + constructor(u, o) { + this.msg = u, this.cursor = o; + } + }; + e.CursorError = M; + } }), as = I({ "node_modules/angular-html-parser/lib/compiler/src/ml_parser/parser.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = Te(), t = Ss(), s = zD(), c = Ze(), n = class extends r.ParseError { + constructor(i, l, h) { + super(l, h), this.elementName = i; + } + static create(i, l, h) { + return new n(i, l, h); + } + }; + e.TreeError = n; + var a = class { + constructor(i, l) { + this.rootNodes = i, this.errors = l; + } + }; + e.ParseTreeResult = a; + var p = class { + constructor(i) { + this.getTagDefinition = i; + } + parse(i, l, h) { + let C = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false, d = arguments.length > 4 ? arguments[4] : void 0, m = (x) => function(k) { + for (var M = arguments.length, u = new Array(M > 1 ? M - 1 : 0), o = 1; o < M; o++) + u[o - 1] = arguments[o]; + return x(k.toLowerCase(), ...u); + }, T = C ? this.getTagDefinition : m(this.getTagDefinition), B = (x) => T(x).contentType, A = C ? d : m(d), N = d ? (x, k, M, u) => { + let o = A(x, k, M, u); + return o !== void 0 ? o : B(x); + } : B, R = s.tokenize(i, l, N, h), $ = h && h.canSelfClose || false, _ = h && h.allowHtmComponentClosingTags || false, O = new D(R.tokens, T, $, _, C).build(); + return new a(O.rootNodes, R.errors.concat(O.errors)); + } + }; + e.Parser = p; + var D = class { + constructor(i, l, h, C, d) { + this.tokens = i, this.getTagDefinition = l, this.canSelfClose = h, this.allowHtmComponentClosingTags = C, this.isTagNameCaseSensitive = d, this._index = -1, this._rootNodes = [], this._errors = [], this._elementStack = [], this._advance(); + } + build() { + for (; this._peek.type !== s.TokenType.EOF; ) + this._peek.type === s.TokenType.TAG_OPEN_START ? this._consumeStartTag(this._advance()) : this._peek.type === s.TokenType.TAG_CLOSE ? (this._closeVoidElement(), this._consumeEndTag(this._advance())) : this._peek.type === s.TokenType.CDATA_START ? (this._closeVoidElement(), this._consumeCdata(this._advance())) : this._peek.type === s.TokenType.COMMENT_START ? (this._closeVoidElement(), this._consumeComment(this._advance())) : this._peek.type === s.TokenType.TEXT || this._peek.type === s.TokenType.RAW_TEXT || this._peek.type === s.TokenType.ESCAPABLE_RAW_TEXT ? (this._closeVoidElement(), this._consumeText(this._advance())) : this._peek.type === s.TokenType.EXPANSION_FORM_START ? this._consumeExpansion(this._advance()) : this._peek.type === s.TokenType.DOC_TYPE_START ? this._consumeDocType(this._advance()) : this._advance(); + return new a(this._rootNodes, this._errors); + } + _advance() { + let i = this._peek; + return this._index < this.tokens.length - 1 && this._index++, this._peek = this.tokens[this._index], i; + } + _advanceIf(i) { + return this._peek.type === i ? this._advance() : null; + } + _consumeCdata(i) { + let l = this._advance(), h = this._getText(l), C = this._advanceIf(s.TokenType.CDATA_END); + this._addToParent(new t.CDATA(h, new r.ParseSourceSpan(i.sourceSpan.start, (C || l).sourceSpan.end))); + } + _consumeComment(i) { + let l = this._advanceIf(s.TokenType.RAW_TEXT), h = this._advanceIf(s.TokenType.COMMENT_END), C = l != null ? l.parts[0].trim() : null, d = new r.ParseSourceSpan(i.sourceSpan.start, (h || l || i).sourceSpan.end); + this._addToParent(new t.Comment(C, d)); + } + _consumeDocType(i) { + let l = this._advanceIf(s.TokenType.RAW_TEXT), h = this._advanceIf(s.TokenType.DOC_TYPE_END), C = l != null ? l.parts[0].trim() : null, d = new r.ParseSourceSpan(i.sourceSpan.start, (h || l || i).sourceSpan.end); + this._addToParent(new t.DocType(C, d)); + } + _consumeExpansion(i) { + let l = this._advance(), h = this._advance(), C = []; + for (; this._peek.type === s.TokenType.EXPANSION_CASE_VALUE; ) { + let m = this._parseExpansionCase(); + if (!m) + return; + C.push(m); + } + if (this._peek.type !== s.TokenType.EXPANSION_FORM_END) { + this._errors.push(n.create(null, this._peek.sourceSpan, "Invalid ICU message. Missing '}'.")); + return; + } + let d = new r.ParseSourceSpan(i.sourceSpan.start, this._peek.sourceSpan.end); + this._addToParent(new t.Expansion(l.parts[0], h.parts[0], C, d, l.sourceSpan)), this._advance(); + } + _parseExpansionCase() { + let i = this._advance(); + if (this._peek.type !== s.TokenType.EXPANSION_CASE_EXP_START) + return this._errors.push(n.create(null, this._peek.sourceSpan, "Invalid ICU message. Missing '{'.")), null; + let l = this._advance(), h = this._collectExpansionExpTokens(l); + if (!h) + return null; + let C = this._advance(); + h.push(new s.Token(s.TokenType.EOF, [], C.sourceSpan)); + let d = new D(h, this.getTagDefinition, this.canSelfClose, this.allowHtmComponentClosingTags, this.isTagNameCaseSensitive).build(); + if (d.errors.length > 0) + return this._errors = this._errors.concat(d.errors), null; + let m = new r.ParseSourceSpan(i.sourceSpan.start, C.sourceSpan.end), T = new r.ParseSourceSpan(l.sourceSpan.start, C.sourceSpan.end); + return new t.ExpansionCase(i.parts[0], d.rootNodes, m, i.sourceSpan, T); + } + _collectExpansionExpTokens(i) { + let l = [], h = [s.TokenType.EXPANSION_CASE_EXP_START]; + for (; ; ) { + if ((this._peek.type === s.TokenType.EXPANSION_FORM_START || this._peek.type === s.TokenType.EXPANSION_CASE_EXP_START) && h.push(this._peek.type), this._peek.type === s.TokenType.EXPANSION_CASE_EXP_END) + if (g(h, s.TokenType.EXPANSION_CASE_EXP_START)) { + if (h.pop(), h.length == 0) + return l; + } else + return this._errors.push(n.create(null, i.sourceSpan, "Invalid ICU message. Missing '}'.")), null; + if (this._peek.type === s.TokenType.EXPANSION_FORM_END) + if (g(h, s.TokenType.EXPANSION_FORM_START)) + h.pop(); + else + return this._errors.push(n.create(null, i.sourceSpan, "Invalid ICU message. Missing '}'.")), null; + if (this._peek.type === s.TokenType.EOF) + return this._errors.push(n.create(null, i.sourceSpan, "Invalid ICU message. Missing '}'.")), null; + l.push(this._advance()); + } + } + _getText(i) { + let l = i.parts[0]; + if (l.length > 0 && l[0] == ` +`) { + let h = this._getParentElement(); + h != null && h.children.length == 0 && this.getTagDefinition(h.name).ignoreFirstLf && (l = l.substring(1)); + } + return l; + } + _consumeText(i) { + let l = this._getText(i); + l.length > 0 && this._addToParent(new t.Text(l, i.sourceSpan)); + } + _closeVoidElement() { + let i = this._getParentElement(); + i && this.getTagDefinition(i.name).isVoid && this._elementStack.pop(); + } + _consumeStartTag(i) { + let l = i.parts[0], h = i.parts[1], C = []; + for (; this._peek.type === s.TokenType.ATTR_NAME; ) + C.push(this._consumeAttr(this._advance())); + let d = this._getElementFullName(l, h, this._getParentElement()), m = false; + if (this._peek.type === s.TokenType.TAG_OPEN_END_VOID) { + this._advance(), m = true; + let R = this.getTagDefinition(d); + this.canSelfClose || R.canSelfClose || c.getNsPrefix(d) !== null || R.isVoid || this._errors.push(n.create(d, i.sourceSpan, 'Only void and foreign elements can be self closed "'.concat(i.parts[1], '"'))); + } else + this._peek.type === s.TokenType.TAG_OPEN_END && (this._advance(), m = false); + let T = this._peek.sourceSpan.start, B = new r.ParseSourceSpan(i.sourceSpan.start, T), A = new r.ParseSourceSpan(i.sourceSpan.start.moveBy(1), i.sourceSpan.end), N = new t.Element(d, C, [], B, B, void 0, A); + this._pushElement(N), m && (this._popElement(d), N.endSourceSpan = B); + } + _pushElement(i) { + let l = this._getParentElement(); + l && this.getTagDefinition(l.name).isClosedByChild(i.name) && this._elementStack.pop(), this._addToParent(i), this._elementStack.push(i); + } + _consumeEndTag(i) { + let l = this.allowHtmComponentClosingTags && i.parts.length === 0 ? null : this._getElementFullName(i.parts[0], i.parts[1], this._getParentElement()); + if (this._getParentElement() && (this._getParentElement().endSourceSpan = i.sourceSpan), l && this.getTagDefinition(l).isVoid) + this._errors.push(n.create(l, i.sourceSpan, 'Void elements do not have end tags "'.concat(i.parts[1], '"'))); + else if (!this._popElement(l)) { + let h = 'Unexpected closing tag "'.concat(l, '". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags'); + this._errors.push(n.create(l, i.sourceSpan, h)); + } + } + _popElement(i) { + for (let l = this._elementStack.length - 1; l >= 0; l--) { + let h = this._elementStack[l]; + if (!i || (c.getNsPrefix(h.name) ? h.name == i : h.name.toLowerCase() == i.toLowerCase())) + return this._elementStack.splice(l, this._elementStack.length - l), true; + if (!this.getTagDefinition(h.name).closedByParent) + return false; + } + return false; + } + _consumeAttr(i) { + let l = c.mergeNsAndName(i.parts[0], i.parts[1]), h = i.sourceSpan.end, C = "", d, m; + if (this._peek.type === s.TokenType.ATTR_QUOTE && (m = this._advance().sourceSpan.start), this._peek.type === s.TokenType.ATTR_VALUE) { + let T = this._advance(); + C = T.parts[0], h = T.sourceSpan.end, d = T.sourceSpan; + } + return this._peek.type === s.TokenType.ATTR_QUOTE && (h = this._advance().sourceSpan.end, d = new r.ParseSourceSpan(m, h)), new t.Attribute(l, C, new r.ParseSourceSpan(i.sourceSpan.start, h), d, i.sourceSpan); + } + _getParentElement() { + return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null; + } + _getParentElementSkippingContainers() { + let i = null; + for (let l = this._elementStack.length - 1; l >= 0; l--) { + if (!c.isNgContainer(this._elementStack[l].name)) + return { parent: this._elementStack[l], container: i }; + i = this._elementStack[l]; + } + return { parent: null, container: i }; + } + _addToParent(i) { + let l = this._getParentElement(); + l != null ? l.children.push(i) : this._rootNodes.push(i); + } + _insertBeforeContainer(i, l, h) { + if (!l) + this._addToParent(h), this._elementStack.push(h); + else { + if (i) { + let C = i.children.indexOf(l); + i.children[C] = h; + } else + this._rootNodes.push(h); + h.children.push(l), this._elementStack.splice(this._elementStack.indexOf(l), 0, h); + } + } + _getElementFullName(i, l, h) { + return i === "" && (i = this.getTagDefinition(l).implicitNamespacePrefix || "", i === "" && h != null && (i = c.getNsPrefix(h.name))), c.mergeNsAndName(i, l); + } + }; + function g(i, l) { + return i.length > 0 && i[i.length - 1] === l; + } + } }), WD = I({ "node_modules/angular-html-parser/lib/compiler/src/ml_parser/html_parser.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = _s(), t = as(), s = as(); + e.ParseTreeResult = s.ParseTreeResult, e.TreeError = s.TreeError; + var c = class extends t.Parser { + constructor() { + super(r.getHtmlTagDefinition); + } + parse(n, a, p) { + let D = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false, g = arguments.length > 4 ? arguments[4] : void 0; + return super.parse(n, a, p, D, g); + } + }; + e.HtmlParser = c; + } }), ys = I({ "node_modules/angular-html-parser/lib/angular-html-parser/src/index.js"(e) { + "use strict"; + q(), Object.defineProperty(e, "__esModule", { value: true }); + var r = WD(), t = Ze(); + e.TagContentType = t.TagContentType; + var s = null, c = () => (s || (s = new r.HtmlParser()), s); + function n(a) { + let p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, { canSelfClose: D = false, allowHtmComponentClosingTags: g = false, isTagNameCaseSensitive: i = false, getTagContentType: l } = p; + return c().parse(a, "angular-html-parser", { tokenizeExpansionForms: false, interpolationConfig: void 0, canSelfClose: D, allowHtmComponentClosingTags: g }, i, l); + } + e.parse = n; + } }); + q(); + var { ParseSourceSpan: Qe, ParseLocation: is, ParseSourceFile: YD } = Te(), QD = aD(), KD = ps(), JD = iD(), { inferParserByLanguage: ZD } = ID(), el = xD(), jr = LD(), os = MD(), { hasPragma: rl } = jD(), { Node: tl } = $D(), { parseIeConditionalComment: ul } = UD(), { locStart: nl, locEnd: sl } = GD(); + function al(e, r, t) { + let { recognizeSelfClosing: s, normalizeTagName: c, normalizeAttributeName: n, allowHtmComponentClosingTags: a, isTagNameCaseSensitive: p, getTagContentType: D } = r, g = ys(), { RecursiveVisitor: i, visitAll: l } = Ss(), { ParseSourceSpan: h } = Te(), { getHtmlTagDefinition: C } = _s(), { rootNodes: d, errors: m } = g.parse(e, { canSelfClose: s, allowHtmComponentClosingTags: a, isTagNameCaseSensitive: p, getTagContentType: D }); + if (t.parser === "vue") + if (d.some((O) => O.type === "docType" && O.value === "html" || O.type === "element" && O.name.toLowerCase() === "html")) { + s = true, c = true, n = true, a = true, p = false; + let O = g.parse(e, { canSelfClose: s, allowHtmComponentClosingTags: a, isTagNameCaseSensitive: p }); + d = O.rootNodes, m = O.errors; + } else { + let O = (x) => { + if (!x || x.type !== "element" || x.name !== "template") + return false; + let k = x.attrs.find((u) => u.name === "lang"), M = k && k.value; + return !M || ZD(M, t) === "html"; + }; + if (d.some(O)) { + let x, k = () => g.parse(e, { canSelfClose: s, allowHtmComponentClosingTags: a, isTagNameCaseSensitive: p }), M = () => x || (x = k()), u = (o) => M().rootNodes.find((E) => { + let { startSourceSpan: f } = E; + return f && f.start.offset === o.startSourceSpan.start.offset; + }); + for (let o = 0; o < d.length; o++) { + let E = d[o], { endSourceSpan: f, startSourceSpan: F } = E; + if (f === null) + m = M().errors, d[o] = u(E) || E; + else if (O(E)) { + let j = M(), W = F.end.offset, X = f.start.offset; + for (let H of j.errors) { + let { offset: z } = H.span.start; + if (W < z && z < X) { + m = [H]; + break; + } + } + d[o] = u(E) || E; + } + } + } + } + if (m.length > 0) { + let { msg: _, span: { start: O, end: x } } = m[0]; + throw JD(_, { start: { line: O.line + 1, column: O.col + 1 }, end: { line: x.line + 1, column: x.col + 1 } }); + } + let T = (_) => { + let O = _.name.startsWith(":") ? _.name.slice(1).split(":")[0] : null, x = _.nameSpan.toString(), k = O !== null && x.startsWith("".concat(O, ":")), M = k ? x.slice(O.length + 1) : x; + _.name = M, _.namespace = O, _.hasExplicitNamespace = k; + }, B = (_) => { + switch (_.type) { + case "element": + T(_); + for (let O of _.attrs) + T(O), O.valueSpan ? (O.value = O.valueSpan.toString(), /["']/.test(O.value[0]) && (O.value = O.value.slice(1, -1))) : O.value = null; + break; + case "comment": + _.value = _.sourceSpan.toString().slice(4, -3); + break; + case "text": + _.value = _.sourceSpan.toString(); + break; + } + }, A = (_, O) => { + let x = _.toLowerCase(); + return O(x) ? x : _; + }, N = (_) => { + if (_.type === "element" && (c && (!_.namespace || _.namespace === _.tagDefinition.implicitNamespacePrefix || os(_)) && (_.name = A(_.name, (O) => O in el)), n)) { + let O = jr[_.name] || /* @__PURE__ */ Object.create(null); + for (let x of _.attrs) + x.namespace || (x.name = A(x.name, (k) => _.name in jr && (k in jr["*"] || k in O))); + } + }, R = (_) => { + _.sourceSpan && _.endSourceSpan && (_.sourceSpan = new h(_.sourceSpan.start, _.endSourceSpan.end)); + }, $ = (_) => { + if (_.type === "element") { + let O = C(p ? _.name : _.name.toLowerCase()); + !_.namespace || _.namespace === O.implicitNamespacePrefix || os(_) ? _.tagDefinition = O : _.tagDefinition = C(""); + } + }; + return l(new class extends i { + visit(_) { + B(_), $(_), N(_), R(_); + } + }(), d), d; + } + function Ts(e, r, t) { + let s = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true, { frontMatter: c, content: n } = s ? QD(e) : { frontMatter: null, content: e }, a = new YD(e, r.filepath), p = new is(a, 0, 0, 0), D = p.moveBy(e.length), g = { type: "root", sourceSpan: new Qe(p, D), children: al(n, t, r) }; + if (c) { + let h = new is(a, 0, 0, 0), C = h.moveBy(c.raw.length); + c.sourceSpan = new Qe(h, C), g.children.unshift(c); + } + let i = new tl(g), l = (h, C) => { + let { offset: d } = C, m = e.slice(0, d).replace(/[^\n\r]/g, " "), B = Ts(m + h, r, t, false); + B.sourceSpan = new Qe(C, KD(B.children).sourceSpan.end); + let A = B.children[0]; + return A.length === d ? B.children.shift() : (A.sourceSpan = new Qe(A.sourceSpan.start.moveBy(d), A.sourceSpan.end), A.value = A.value.slice(d)), B; + }; + return i.walk((h) => { + if (h.type === "comment") { + let C = ul(h, l); + C && h.parent.replaceChild(h, C); + } + }), i; + } + function Ke() { + let { name: e, recognizeSelfClosing: r = false, normalizeTagName: t = false, normalizeAttributeName: s = false, allowHtmComponentClosingTags: c = false, isTagNameCaseSensitive: n = false, getTagContentType: a } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return { parse: (p, D, g) => Ts(p, Object.assign({ parser: e }, g), { recognizeSelfClosing: r, normalizeTagName: t, normalizeAttributeName: s, allowHtmComponentClosingTags: c, isTagNameCaseSensitive: n, getTagContentType: a }), hasPragma: rl, astFormat: "html", locStart: nl, locEnd: sl }; + } + Bs.exports = { parsers: { html: Ke({ name: "html", recognizeSelfClosing: true, normalizeTagName: true, normalizeAttributeName: true, allowHtmComponentClosingTags: true }), angular: Ke({ name: "angular" }), vue: Ke({ name: "vue", recognizeSelfClosing: true, isTagNameCaseSensitive: true, getTagContentType: (e, r, t, s) => { + if (e.toLowerCase() !== "html" && !t && (e !== "template" || s.some((c) => { + let { name: n, value: a } = c; + return n === "lang" && a !== "html" && a !== "" && a !== void 0; + }))) + return ys().TagContentType.RAW_TEXT; + } }), lwc: Ke({ name: "lwc" }) } }; + }); + return il(); + }); + } +}); + +// node_modules/prettier/parser-yaml.js +var require_parser_yaml = __commonJS({ + "node_modules/prettier/parser-yaml.js"(exports, module2) { + (function(e) { + if (typeof exports == "object" && typeof module2 == "object") + module2.exports = e(); + else if (typeof define == "function" && define.amd) + define(e); + else { + var i = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {}; + i.prettierPlugins = i.prettierPlugins || {}, i.prettierPlugins.yaml = e(); + } + })(function() { + "use strict"; + var wt = (r, e) => () => (e || r((e = { exports: {} }).exports, e), e.exports); + var ur = wt((mr, lt) => { + var De = Object.defineProperty, St = Object.getOwnPropertyDescriptor, Fe = Object.getOwnPropertyNames, Et = Object.prototype.hasOwnProperty, xe = (r, e) => function() { + return r && (e = (0, r[Fe(r)[0]])(r = 0)), e; + }, F = (r, e) => function() { + return e || (0, r[Fe(r)[0]])((e = { exports: {} }).exports, e), e.exports; + }, Mt = (r, e) => { + for (var n in e) + De(r, n, { get: e[n], enumerable: true }); + }, Ot = (r, e, n, c) => { + if (e && typeof e == "object" || typeof e == "function") + for (let h of Fe(e)) + !Et.call(r, h) && h !== n && De(r, h, { get: () => e[h], enumerable: !(c = St(e, h)) || c.enumerable }); + return r; + }, se = (r) => Ot(De({}, "__esModule", { value: true }), r), Ke, $e, Te, D = xe({ ""() { + Ke = {}, $e = [], Te = { env: Ke, argv: $e }; + } }), Lt = F({ "src/common/parser-create-error.js"(r, e) { + "use strict"; + D(); + function n(c, h) { + let d = new SyntaxError(c + " (" + h.start.line + ":" + h.start.column + ")"); + return d.loc = h, d; + } + e.exports = n; + } }), At = F({ "src/language-yaml/pragma.js"(r, e) { + "use strict"; + D(); + function n(d) { + return /^\s*@(?:prettier|format)\s*$/.test(d); + } + function c(d) { + return /^\s*#[^\S\n]*@(?:prettier|format)\s*?(?:\n|$)/.test(d); + } + function h(d) { + return `# @format + +`.concat(d); + } + e.exports = { isPragma: n, hasPragma: c, insertPragma: h }; + } }), Nt = F({ "src/language-yaml/loc.js"(r, e) { + "use strict"; + D(); + function n(h) { + return h.position.start.offset; + } + function c(h) { + return h.position.end.offset; + } + e.exports = { locStart: n, locEnd: c }; + } }), te = {}; + Mt(te, { __assign: () => qe, __asyncDelegator: () => Wt, __asyncGenerator: () => Ft, __asyncValues: () => Vt, __await: () => Ce, __awaiter: () => Rt, __classPrivateFieldGet: () => $t, __classPrivateFieldSet: () => Jt, __createBinding: () => Bt, __decorate: () => kt, __exportStar: () => jt, __extends: () => Tt, __generator: () => qt, __importDefault: () => Kt, __importStar: () => Ut, __makeTemplateObject: () => Qt, __metadata: () => It, __param: () => Pt, __read: () => He, __rest: () => Ct, __spread: () => Yt, __spreadArrays: () => Dt, __values: () => Ye }); + function Tt(r, e) { + Re(r, e); + function n() { + this.constructor = r; + } + r.prototype = e === null ? Object.create(e) : (n.prototype = e.prototype, new n()); + } + function Ct(r, e) { + var n = {}; + for (var c in r) + Object.prototype.hasOwnProperty.call(r, c) && e.indexOf(c) < 0 && (n[c] = r[c]); + if (r != null && typeof Object.getOwnPropertySymbols == "function") + for (var h = 0, c = Object.getOwnPropertySymbols(r); h < c.length; h++) + e.indexOf(c[h]) < 0 && Object.prototype.propertyIsEnumerable.call(r, c[h]) && (n[c[h]] = r[c[h]]); + return n; + } + function kt(r, e, n, c) { + var h = arguments.length, d = h < 3 ? e : c === null ? c = Object.getOwnPropertyDescriptor(e, n) : c, y; + if (typeof Reflect == "object" && typeof Reflect.decorate == "function") + d = Reflect.decorate(r, e, n, c); + else + for (var E = r.length - 1; E >= 0; E--) + (y = r[E]) && (d = (h < 3 ? y(d) : h > 3 ? y(e, n, d) : y(e, n)) || d); + return h > 3 && d && Object.defineProperty(e, n, d), d; + } + function Pt(r, e) { + return function(n, c) { + e(n, c, r); + }; + } + function It(r, e) { + if (typeof Reflect == "object" && typeof Reflect.metadata == "function") + return Reflect.metadata(r, e); + } + function Rt(r, e, n, c) { + function h(d) { + return d instanceof n ? d : new n(function(y) { + y(d); + }); + } + return new (n || (n = Promise))(function(d, y) { + function E(M) { + try { + S(c.next(M)); + } catch (T) { + y(T); + } + } + function I(M) { + try { + S(c.throw(M)); + } catch (T) { + y(T); + } + } + function S(M) { + M.done ? d(M.value) : h(M.value).then(E, I); + } + S((c = c.apply(r, e || [])).next()); + }); + } + function qt(r, e) { + var n = { label: 0, sent: function() { + if (d[0] & 1) + throw d[1]; + return d[1]; + }, trys: [], ops: [] }, c, h, d, y; + return y = { next: E(0), throw: E(1), return: E(2) }, typeof Symbol == "function" && (y[Symbol.iterator] = function() { + return this; + }), y; + function E(S) { + return function(M) { + return I([S, M]); + }; + } + function I(S) { + if (c) + throw new TypeError("Generator is already executing."); + for (; n; ) + try { + if (c = 1, h && (d = S[0] & 2 ? h.return : S[0] ? h.throw || ((d = h.return) && d.call(h), 0) : h.next) && !(d = d.call(h, S[1])).done) + return d; + switch (h = 0, d && (S = [S[0] & 2, d.value]), S[0]) { + case 0: + case 1: + d = S; + break; + case 4: + return n.label++, { value: S[1], done: false }; + case 5: + n.label++, h = S[1], S = [0]; + continue; + case 7: + S = n.ops.pop(), n.trys.pop(); + continue; + default: + if (d = n.trys, !(d = d.length > 0 && d[d.length - 1]) && (S[0] === 6 || S[0] === 2)) { + n = 0; + continue; + } + if (S[0] === 3 && (!d || S[1] > d[0] && S[1] < d[3])) { + n.label = S[1]; + break; + } + if (S[0] === 6 && n.label < d[1]) { + n.label = d[1], d = S; + break; + } + if (d && n.label < d[2]) { + n.label = d[2], n.ops.push(S); + break; + } + d[2] && n.ops.pop(), n.trys.pop(); + continue; + } + S = e.call(r, n); + } catch (M) { + S = [6, M], h = 0; + } finally { + c = d = 0; + } + if (S[0] & 5) + throw S[1]; + return { value: S[0] ? S[1] : void 0, done: true }; + } + } + function Bt(r, e, n, c) { + c === void 0 && (c = n), r[c] = e[n]; + } + function jt(r, e) { + for (var n in r) + n !== "default" && !e.hasOwnProperty(n) && (e[n] = r[n]); + } + function Ye(r) { + var e = typeof Symbol == "function" && Symbol.iterator, n = e && r[e], c = 0; + if (n) + return n.call(r); + if (r && typeof r.length == "number") + return { next: function() { + return r && c >= r.length && (r = void 0), { value: r && r[c++], done: !r }; + } }; + throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined."); + } + function He(r, e) { + var n = typeof Symbol == "function" && r[Symbol.iterator]; + if (!n) + return r; + var c = n.call(r), h, d = [], y; + try { + for (; (e === void 0 || e-- > 0) && !(h = c.next()).done; ) + d.push(h.value); + } catch (E) { + y = { error: E }; + } finally { + try { + h && !h.done && (n = c.return) && n.call(c); + } finally { + if (y) + throw y.error; + } + } + return d; + } + function Yt() { + for (var r = [], e = 0; e < arguments.length; e++) + r = r.concat(He(arguments[e])); + return r; + } + function Dt() { + for (var r = 0, e = 0, n = arguments.length; e < n; e++) + r += arguments[e].length; + for (var c = Array(r), h = 0, e = 0; e < n; e++) + for (var d = arguments[e], y = 0, E = d.length; y < E; y++, h++) + c[h] = d[y]; + return c; + } + function Ce(r) { + return this instanceof Ce ? (this.v = r, this) : new Ce(r); + } + function Ft(r, e, n) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var c = n.apply(r, e || []), h, d = []; + return h = {}, y("next"), y("throw"), y("return"), h[Symbol.asyncIterator] = function() { + return this; + }, h; + function y(P) { + c[P] && (h[P] = function(C) { + return new Promise(function(q, R) { + d.push([P, C, q, R]) > 1 || E(P, C); + }); + }); + } + function E(P, C) { + try { + I(c[P](C)); + } catch (q) { + T(d[0][3], q); + } + } + function I(P) { + P.value instanceof Ce ? Promise.resolve(P.value.v).then(S, M) : T(d[0][2], P); + } + function S(P) { + E("next", P); + } + function M(P) { + E("throw", P); + } + function T(P, C) { + P(C), d.shift(), d.length && E(d[0][0], d[0][1]); + } + } + function Wt(r) { + var e, n; + return e = {}, c("next"), c("throw", function(h) { + throw h; + }), c("return"), e[Symbol.iterator] = function() { + return this; + }, e; + function c(h, d) { + e[h] = r[h] ? function(y) { + return (n = !n) ? { value: Ce(r[h](y)), done: h === "return" } : d ? d(y) : y; + } : d; + } + } + function Vt(r) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var e = r[Symbol.asyncIterator], n; + return e ? e.call(r) : (r = typeof Ye == "function" ? Ye(r) : r[Symbol.iterator](), n = {}, c("next"), c("throw"), c("return"), n[Symbol.asyncIterator] = function() { + return this; + }, n); + function c(d) { + n[d] = r[d] && function(y) { + return new Promise(function(E, I) { + y = r[d](y), h(E, I, y.done, y.value); + }); + }; + } + function h(d, y, E, I) { + Promise.resolve(I).then(function(S) { + d({ value: S, done: E }); + }, y); + } + } + function Qt(r, e) { + return Object.defineProperty ? Object.defineProperty(r, "raw", { value: e }) : r.raw = e, r; + } + function Ut(r) { + if (r && r.__esModule) + return r; + var e = {}; + if (r != null) + for (var n in r) + Object.hasOwnProperty.call(r, n) && (e[n] = r[n]); + return e.default = r, e; + } + function Kt(r) { + return r && r.__esModule ? r : { default: r }; + } + function $t(r, e) { + if (!e.has(r)) + throw new TypeError("attempted to get private field on non-instance"); + return e.get(r); + } + function Jt(r, e, n) { + if (!e.has(r)) + throw new TypeError("attempted to set private field on non-instance"); + return e.set(r, n), n; + } + var Re, qe, ae = xe({ "node_modules/tslib/tslib.es6.js"() { + D(), Re = function(r, e) { + return Re = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, c) { + n.__proto__ = c; + } || function(n, c) { + for (var h in c) + c.hasOwnProperty(h) && (n[h] = c[h]); + }, Re(r, e); + }, qe = function() { + return qe = Object.assign || function(e) { + for (var n, c = 1, h = arguments.length; c < h; c++) { + n = arguments[c]; + for (var d in n) + Object.prototype.hasOwnProperty.call(n, d) && (e[d] = n[d]); + } + return e; + }, qe.apply(this, arguments); + }; + } }), xt = F({ "node_modules/yaml-unist-parser/node_modules/lines-and-columns/build/index.js"(r) { + "use strict"; + D(), r.__esModule = true, r.LinesAndColumns = void 0; + var e = ` +`, n = "\r", c = function() { + function h(d) { + this.string = d; + for (var y = [0], E = 0; E < d.length; ) + switch (d[E]) { + case e: + E += e.length, y.push(E); + break; + case n: + E += n.length, d[E] === e && (E += e.length), y.push(E); + break; + default: + E++; + break; + } + this.offsets = y; + } + return h.prototype.locationForIndex = function(d) { + if (d < 0 || d > this.string.length) + return null; + for (var y = 0, E = this.offsets; E[y + 1] <= d; ) + y++; + var I = d - E[y]; + return { line: y, column: I }; + }, h.prototype.indexForLocation = function(d) { + var y = d.line, E = d.column; + return y < 0 || y >= this.offsets.length || E < 0 || E > this.lengthOfLine(y) ? null : this.offsets[y] + E; + }, h.prototype.lengthOfLine = function(d) { + var y = this.offsets[d], E = d === this.offsets.length - 1 ? this.string.length : this.offsets[d + 1]; + return E - y; + }, h; + }(); + r.LinesAndColumns = c, r.default = c; + } }), Ht = F({ "node_modules/yaml-unist-parser/lib/utils/define-parents.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c) { + c === void 0 && (c = null), "children" in n && n.children.forEach(function(h) { + return e(h, n); + }), "anchor" in n && n.anchor && e(n.anchor, n), "tag" in n && n.tag && e(n.tag, n), "leadingComments" in n && n.leadingComments.forEach(function(h) { + return e(h, n); + }), "middleComments" in n && n.middleComments.forEach(function(h) { + return e(h, n); + }), "indicatorComment" in n && n.indicatorComment && e(n.indicatorComment, n), "trailingComment" in n && n.trailingComment && e(n.trailingComment, n), "endComments" in n && n.endComments.forEach(function(h) { + return e(h, n); + }), Object.defineProperty(n, "_parent", { value: c, enumerable: false }); + } + r.defineParents = e; + } }), We = F({ "node_modules/yaml-unist-parser/lib/utils/get-point-text.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n) { + return n.line + ":" + n.column; + } + r.getPointText = e; + } }), Gt = F({ "node_modules/yaml-unist-parser/lib/attach.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Ht(), n = We(); + function c(S) { + e.defineParents(S); + var M = h(S), T = S.children.slice(); + S.comments.sort(function(P, C) { + return P.position.start.offset - C.position.end.offset; + }).filter(function(P) { + return !P._parent; + }).forEach(function(P) { + for (; T.length > 1 && P.position.start.line > T[0].position.end.line; ) + T.shift(); + y(P, M, T[0]); + }); + } + r.attachComments = c; + function h(S) { + for (var M = Array.from(new Array(S.position.end.line), function() { + return {}; + }), T = 0, P = S.comments; T < P.length; T++) { + var C = P[T]; + M[C.position.start.line - 1].comment = C; + } + return d(M, S), M; + } + function d(S, M) { + if (M.position.start.offset !== M.position.end.offset) { + if ("leadingComments" in M) { + var T = M.position.start, P = S[T.line - 1].leadingAttachableNode; + (!P || T.column < P.position.start.column) && (S[T.line - 1].leadingAttachableNode = M); + } + if ("trailingComment" in M && M.position.end.column > 1 && M.type !== "document" && M.type !== "documentHead") { + var C = M.position.end, q = S[C.line - 1].trailingAttachableNode; + (!q || C.column >= q.position.end.column) && (S[C.line - 1].trailingAttachableNode = M); + } + if (M.type !== "root" && M.type !== "document" && M.type !== "documentHead" && M.type !== "documentBody") + for (var R = M.position, T = R.start, C = R.end, j = [C.line].concat(T.line === C.line ? [] : T.line), K = 0, m = j; K < m.length; K++) { + var a = m[K], t = S[a - 1].trailingNode; + (!t || C.column >= t.position.end.column) && (S[a - 1].trailingNode = M); + } + "children" in M && M.children.forEach(function(s) { + d(S, s); + }); + } + } + function y(S, M, T) { + var P = S.position.start.line, C = M[P - 1].trailingAttachableNode; + if (C) { + if (C.trailingComment) + throw new Error("Unexpected multiple trailing comment at " + n.getPointText(S.position.start)); + e.defineParents(S, C), C.trailingComment = S; + return; + } + for (var q = P; q >= T.position.start.line; q--) { + var R = M[q - 1].trailingNode, j = void 0; + if (R) + j = R; + else if (q !== P && M[q - 1].comment) + j = M[q - 1].comment._parent; + else + continue; + if ((j.type === "sequence" || j.type === "mapping") && (j = j.children[0]), j.type === "mappingItem") { + var K = j.children, m = K[0], a = K[1]; + j = I(m) ? m : a; + } + for (; ; ) { + if (E(j, S)) { + e.defineParents(S, j), j.endComments.push(S); + return; + } + if (!j._parent) + break; + j = j._parent; + } + break; + } + for (var q = P + 1; q <= T.position.end.line; q++) { + var t = M[q - 1].leadingAttachableNode; + if (t) { + e.defineParents(S, t), t.leadingComments.push(S); + return; + } + } + var s = T.children[1]; + e.defineParents(S, s), s.endComments.push(S); + } + function E(S, M) { + if (S.position.start.offset < M.position.start.offset && S.position.end.offset > M.position.end.offset) + switch (S.type) { + case "flowMapping": + case "flowSequence": + return S.children.length === 0 || M.position.start.line > S.children[S.children.length - 1].position.end.line; + } + if (M.position.end.offset < S.position.end.offset) + return false; + switch (S.type) { + case "sequenceItem": + return M.position.start.column > S.position.start.column; + case "mappingKey": + case "mappingValue": + return M.position.start.column > S._parent.position.start.column && (S.children.length === 0 || S.children.length === 1 && S.children[0].type !== "blockFolded" && S.children[0].type !== "blockLiteral") && (S.type === "mappingValue" || I(S)); + default: + return false; + } + } + function I(S) { + return S.position.start !== S.position.end && (S.children.length === 0 || S.position.start.offset !== S.children[0].position.start.offset); + } + } }), me = F({ "node_modules/yaml-unist-parser/lib/factories/node.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c) { + return { type: n, position: c }; + } + r.createNode = e; + } }), zt = F({ "node_modules/yaml-unist-parser/lib/factories/root.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = me(); + function c(h, d, y) { + return e.__assign(e.__assign({}, n.createNode("root", h)), { children: d, comments: y }); + } + r.createRoot = c; + } }), Zt = F({ "node_modules/yaml-unist-parser/lib/preprocess.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n) { + switch (n.type) { + case "DOCUMENT": + for (var c = n.contents.length - 1; c >= 0; c--) + n.contents[c].type === "BLANK_LINE" ? n.contents.splice(c, 1) : e(n.contents[c]); + for (var c = n.directives.length - 1; c >= 0; c--) + n.directives[c].type === "BLANK_LINE" && n.directives.splice(c, 1); + break; + case "FLOW_MAP": + case "FLOW_SEQ": + case "MAP": + case "SEQ": + for (var c = n.items.length - 1; c >= 0; c--) { + var h = n.items[c]; + "char" in h || (h.type === "BLANK_LINE" ? n.items.splice(c, 1) : e(h)); + } + break; + case "MAP_KEY": + case "MAP_VALUE": + case "SEQ_ITEM": + n.node && e(n.node); + break; + case "ALIAS": + case "BLANK_LINE": + case "BLOCK_FOLDED": + case "BLOCK_LITERAL": + case "COMMENT": + case "DIRECTIVE": + case "PLAIN": + case "QUOTE_DOUBLE": + case "QUOTE_SINGLE": + break; + default: + throw new Error("Unexpected node type " + JSON.stringify(n.type)); + } + } + r.removeCstBlankLine = e; + } }), Oe = F({ "node_modules/yaml-unist-parser/lib/factories/leading-comment-attachable.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e() { + return { leadingComments: [] }; + } + r.createLeadingCommentAttachable = e; + } }), Be = F({ "node_modules/yaml-unist-parser/lib/factories/trailing-comment-attachable.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n) { + return n === void 0 && (n = null), { trailingComment: n }; + } + r.createTrailingCommentAttachable = e; + } }), Se = F({ "node_modules/yaml-unist-parser/lib/factories/comment-attachable.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Oe(), c = Be(); + function h() { + return e.__assign(e.__assign({}, n.createLeadingCommentAttachable()), c.createTrailingCommentAttachable()); + } + r.createCommentAttachable = h; + } }), Xt = F({ "node_modules/yaml-unist-parser/lib/factories/alias.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Se(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, c.createNode("alias", d)), n.createCommentAttachable()), y), { value: E }); + } + r.createAlias = h; + } }), en = F({ "node_modules/yaml-unist-parser/lib/transforms/alias.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Xt(); + function n(c, h) { + var d = c.cstNode; + return e.createAlias(h.transformRange({ origStart: d.valueRange.origStart - 1, origEnd: d.valueRange.origEnd }), h.transformContent(c), d.rawValue); + } + r.transformAlias = n; + } }), tn = F({ "node_modules/yaml-unist-parser/lib/factories/block-folded.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)); + function n(c) { + return e.__assign(e.__assign({}, c), { type: "blockFolded" }); + } + r.createBlockFolded = n; + } }), nn = F({ "node_modules/yaml-unist-parser/lib/factories/block-value.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Oe(), c = me(); + function h(d, y, E, I, S, M) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, c.createNode("blockValue", d)), n.createLeadingCommentAttachable()), y), { chomping: E, indent: I, value: S, indicatorComment: M }); + } + r.createBlockValue = h; + } }), Ge = F({ "node_modules/yaml-unist-parser/lib/constants.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e; + (function(n) { + n.Tag = "!", n.Anchor = "&", n.Comment = "#"; + })(e = r.PropLeadingCharacter || (r.PropLeadingCharacter = {})); + } }), rn = F({ "node_modules/yaml-unist-parser/lib/factories/anchor.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = me(); + function c(h, d) { + return e.__assign(e.__assign({}, n.createNode("anchor", h)), { value: d }); + } + r.createAnchor = c; + } }), Ve = F({ "node_modules/yaml-unist-parser/lib/factories/comment.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = me(); + function c(h, d) { + return e.__assign(e.__assign({}, n.createNode("comment", h)), { value: d }); + } + r.createComment = c; + } }), sn = F({ "node_modules/yaml-unist-parser/lib/factories/content.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c, h) { + return { anchor: c, tag: n, middleComments: h }; + } + r.createContent = e; + } }), an = F({ "node_modules/yaml-unist-parser/lib/factories/tag.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = me(); + function c(h, d) { + return e.__assign(e.__assign({}, n.createNode("tag", h)), { value: d }); + } + r.createTag = c; + } }), ze = F({ "node_modules/yaml-unist-parser/lib/transforms/content.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Ge(), n = rn(), c = Ve(), h = sn(), d = an(); + function y(E, I, S) { + S === void 0 && (S = function() { + return false; + }); + for (var M = E.cstNode, T = [], P = null, C = null, q = null, R = 0, j = M.props; R < j.length; R++) { + var K = j[R], m = I.text[K.origStart]; + switch (m) { + case e.PropLeadingCharacter.Tag: + P = P || K, C = d.createTag(I.transformRange(K), E.tag); + break; + case e.PropLeadingCharacter.Anchor: + P = P || K, q = n.createAnchor(I.transformRange(K), M.anchor); + break; + case e.PropLeadingCharacter.Comment: { + var a = c.createComment(I.transformRange(K), I.text.slice(K.origStart + 1, K.origEnd)); + I.comments.push(a), !S(a) && P && P.origEnd <= K.origStart && K.origEnd <= M.valueRange.origStart && T.push(a); + break; + } + default: + throw new Error("Unexpected leading character " + JSON.stringify(m)); + } + } + return h.createContent(C, q, T); + } + r.transformContent = y; + } }), Ze = F({ "node_modules/yaml-unist-parser/lib/transforms/block-value.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = nn(), n = We(), c = ze(), h; + (function(y) { + y.CLIP = "clip", y.STRIP = "strip", y.KEEP = "keep"; + })(h || (h = {})); + function d(y, E) { + var I = y.cstNode, S = 1, M = I.chomping === "CLIP" ? 0 : 1, T = I.header.origEnd - I.header.origStart, P = T - S - M !== 0, C = E.transformRange({ origStart: I.header.origStart, origEnd: I.valueRange.origEnd }), q = null, R = c.transformContent(y, E, function(j) { + var K = C.start.offset < j.position.start.offset && j.position.end.offset < C.end.offset; + if (!K) + return false; + if (q) + throw new Error("Unexpected multiple indicator comments at " + n.getPointText(j.position.start)); + return q = j, true; + }); + return e.createBlockValue(C, R, h[I.chomping], P ? I.blockIndent : null, I.strValue, q); + } + r.transformAstBlockValue = d; + } }), on = F({ "node_modules/yaml-unist-parser/lib/transforms/block-folded.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = tn(), n = Ze(); + function c(h, d) { + return e.createBlockFolded(n.transformAstBlockValue(h, d)); + } + r.transformBlockFolded = c; + } }), ln = F({ "node_modules/yaml-unist-parser/lib/factories/block-literal.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)); + function n(c) { + return e.__assign(e.__assign({}, c), { type: "blockLiteral" }); + } + r.createBlockLiteral = n; + } }), cn = F({ "node_modules/yaml-unist-parser/lib/transforms/block-literal.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = ln(), n = Ze(); + function c(h, d) { + return e.createBlockLiteral(n.transformAstBlockValue(h, d)); + } + r.transformBlockLiteral = c; + } }), un = F({ "node_modules/yaml-unist-parser/lib/transforms/comment.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Ve(); + function n(c, h) { + return e.createComment(h.transformRange(c.range), c.comment); + } + r.transformComment = n; + } }), fn = F({ "node_modules/yaml-unist-parser/lib/factories/directive.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Se(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign({}, c.createNode("directive", d)), n.createCommentAttachable()), { name: y, parameters: E }); + } + r.createDirective = h; + } }), Qe = F({ "node_modules/yaml-unist-parser/lib/utils/extract-prop-comments.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Ge(), n = Ve(); + function c(h, d) { + for (var y = 0, E = h.props; y < E.length; y++) { + var I = E[y], S = d.text[I.origStart]; + switch (S) { + case e.PropLeadingCharacter.Comment: + d.comments.push(n.createComment(d.transformRange(I), d.text.slice(I.origStart + 1, I.origEnd))); + break; + default: + throw new Error("Unexpected leading character " + JSON.stringify(S)); + } + } + } + r.extractPropComments = c; + } }), mn = F({ "node_modules/yaml-unist-parser/lib/transforms/directive.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = fn(), n = Qe(); + function c(h, d) { + return n.extractPropComments(h, d), e.createDirective(d.transformRange(h.range), h.name, h.parameters); + } + r.transformDirective = c; + } }), dn = F({ "node_modules/yaml-unist-parser/lib/factories/document.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = me(), c = Be(); + function h(d, y, E, I) { + return e.__assign(e.__assign(e.__assign({}, n.createNode("document", d)), c.createTrailingCommentAttachable(I)), { children: [y, E] }); + } + r.createDocument = h; + } }), Le = F({ "node_modules/yaml-unist-parser/lib/factories/position.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(c, h) { + return { start: c, end: h }; + } + r.createPosition = e; + function n(c) { + return { start: c, end: c }; + } + r.createEmptyPosition = n; + } }), Ee = F({ "node_modules/yaml-unist-parser/lib/factories/end-comment-attachable.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n) { + return n === void 0 && (n = []), { endComments: n }; + } + r.createEndCommentAttachable = e; + } }), hn = F({ "node_modules/yaml-unist-parser/lib/factories/document-body.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Ee(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign({}, c.createNode("documentBody", d)), n.createEndCommentAttachable(E)), { children: y ? [y] : [] }); + } + r.createDocumentBody = h; + } }), Ae = F({ "node_modules/yaml-unist-parser/lib/utils/get-last.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n) { + return n[n.length - 1]; + } + r.getLast = e; + } }), Xe = F({ "node_modules/yaml-unist-parser/lib/utils/get-match-index.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c) { + var h = n.match(c); + return h ? h.index : -1; + } + r.getMatchIndex = e; + } }), gn = F({ "node_modules/yaml-unist-parser/lib/transforms/document-body.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = hn(), c = Ae(), h = Xe(), d = We(); + function y(S, M, T) { + var P, C = S.cstNode, q = E(C, M, T), R = q.comments, j = q.endComments, K = q.documentTrailingComment, m = q.documentHeadTrailingComment, a = M.transformNode(S.contents), t = I(C, a, M), s = t.position, i = t.documentEndPoint; + return (P = M.comments).push.apply(P, e.__spreadArrays(R, j)), { documentBody: n.createDocumentBody(s, a, j), documentEndPoint: i, documentTrailingComment: K, documentHeadTrailingComment: m }; + } + r.transformDocumentBody = y; + function E(S, M, T) { + for (var P = [], C = [], q = [], R = [], j = false, K = S.contents.length - 1; K >= 0; K--) { + var m = S.contents[K]; + if (m.type === "COMMENT") { + var a = M.transformNode(m); + T && T.line === a.position.start.line ? R.unshift(a) : j ? P.unshift(a) : a.position.start.offset >= S.valueRange.origEnd ? q.unshift(a) : P.unshift(a); + } else + j = true; + } + if (q.length > 1) + throw new Error("Unexpected multiple document trailing comments at " + d.getPointText(q[1].position.start)); + if (R.length > 1) + throw new Error("Unexpected multiple documentHead trailing comments at " + d.getPointText(R[1].position.start)); + return { comments: P, endComments: C, documentTrailingComment: c.getLast(q) || null, documentHeadTrailingComment: c.getLast(R) || null }; + } + function I(S, M, T) { + var P = h.getMatchIndex(T.text.slice(S.valueRange.origEnd), /^\.\.\./), C = P === -1 ? S.valueRange.origEnd : Math.max(0, S.valueRange.origEnd - 1); + T.text[C - 1] === "\r" && C--; + var q = T.transformRange({ origStart: M !== null ? M.position.start.offset : C, origEnd: C }), R = P === -1 ? q.end : T.transformOffset(S.valueRange.origEnd + 3); + return { position: q, documentEndPoint: R }; + } + } }), pn = F({ "node_modules/yaml-unist-parser/lib/factories/document-head.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Ee(), c = me(), h = Be(); + function d(y, E, I, S) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, c.createNode("documentHead", y)), n.createEndCommentAttachable(I)), h.createTrailingCommentAttachable(S)), { children: E }); + } + r.createDocumentHead = d; + } }), _n = F({ "node_modules/yaml-unist-parser/lib/transforms/document-head.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = pn(), c = Xe(); + function h(E, I) { + var S, M = E.cstNode, T = d(M, I), P = T.directives, C = T.comments, q = T.endComments, R = y(M, P, I), j = R.position, K = R.endMarkerPoint; + (S = I.comments).push.apply(S, e.__spreadArrays(C, q)); + var m = function(a) { + return a && I.comments.push(a), n.createDocumentHead(j, P, q, a); + }; + return { createDocumentHeadWithTrailingComment: m, documentHeadEndMarkerPoint: K }; + } + r.transformDocumentHead = h; + function d(E, I) { + for (var S = [], M = [], T = [], P = false, C = E.directives.length - 1; C >= 0; C--) { + var q = I.transformNode(E.directives[C]); + q.type === "comment" ? P ? M.unshift(q) : T.unshift(q) : (P = true, S.unshift(q)); + } + return { directives: S, comments: M, endComments: T }; + } + function y(E, I, S) { + var M = c.getMatchIndex(S.text.slice(0, E.valueRange.origStart), /---\s*$/); + M > 0 && !/[\r\n]/.test(S.text[M - 1]) && (M = -1); + var T = M === -1 ? { origStart: E.valueRange.origStart, origEnd: E.valueRange.origStart } : { origStart: M, origEnd: M + 3 }; + return I.length !== 0 && (T.origStart = I[0].position.start.offset), { position: S.transformRange(T), endMarkerPoint: M === -1 ? null : S.transformOffset(M) }; + } + } }), vn = F({ "node_modules/yaml-unist-parser/lib/transforms/document.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = dn(), n = Le(), c = gn(), h = _n(); + function d(y, E) { + var I = h.transformDocumentHead(y, E), S = I.createDocumentHeadWithTrailingComment, M = I.documentHeadEndMarkerPoint, T = c.transformDocumentBody(y, E, M), P = T.documentBody, C = T.documentEndPoint, q = T.documentTrailingComment, R = T.documentHeadTrailingComment, j = S(R); + return q && E.comments.push(q), e.createDocument(n.createPosition(j.position.start, C), j, P, q); + } + r.transformDocument = d; + } }), et = F({ "node_modules/yaml-unist-parser/lib/factories/flow-collection.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Se(), c = Ee(), h = me(); + function d(y, E, I) { + return e.__assign(e.__assign(e.__assign(e.__assign(e.__assign({}, h.createNode("flowCollection", y)), n.createCommentAttachable()), c.createEndCommentAttachable()), E), { children: I }); + } + r.createFlowCollection = d; + } }), yn = F({ "node_modules/yaml-unist-parser/lib/factories/flow-mapping.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = et(); + function c(h, d, y) { + return e.__assign(e.__assign({}, n.createFlowCollection(h, d, y)), { type: "flowMapping" }); + } + r.createFlowMapping = c; + } }), tt = F({ "node_modules/yaml-unist-parser/lib/factories/flow-mapping-item.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Oe(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign({}, c.createNode("flowMappingItem", d)), n.createLeadingCommentAttachable()), { children: [y, E] }); + } + r.createFlowMappingItem = h; + } }), je = F({ "node_modules/yaml-unist-parser/lib/utils/extract-comments.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c) { + for (var h = [], d = 0, y = n; d < y.length; d++) { + var E = y[d]; + E && "type" in E && E.type === "COMMENT" ? c.comments.push(c.transformNode(E)) : h.push(E); + } + return h; + } + r.extractComments = e; + } }), nt = F({ "node_modules/yaml-unist-parser/lib/utils/get-flow-map-item-additional-ranges.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n) { + var c = ["?", ":"].map(function(y) { + var E = n.find(function(I) { + return "char" in I && I.char === y; + }); + return E ? { origStart: E.origOffset, origEnd: E.origOffset + 1 } : null; + }), h = c[0], d = c[1]; + return { additionalKeyRange: h, additionalValueRange: d }; + } + r.getFlowMapItemAdditionalRanges = e; + } }), rt = F({ "node_modules/yaml-unist-parser/lib/utils/create-slicer.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c) { + var h = c; + return function(d) { + return n.slice(h, h = d); + }; + } + r.createSlicer = e; + } }), st = F({ "node_modules/yaml-unist-parser/lib/utils/group-cst-flow-collection-items.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = rt(); + function n(c) { + for (var h = [], d = e.createSlicer(c, 1), y = false, E = 1; E < c.length - 1; E++) { + var I = c[E]; + if ("char" in I && I.char === ",") { + h.push(d(E)), d(E + 1), y = false; + continue; + } + y = true; + } + return y && h.push(d(c.length - 1)), h; + } + r.groupCstFlowCollectionItems = n; + } }), bn = F({ "node_modules/yaml-unist-parser/lib/factories/mapping-key.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Ee(), c = me(), h = Be(); + function d(y, E) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, c.createNode("mappingKey", y)), h.createTrailingCommentAttachable()), n.createEndCommentAttachable()), { children: E ? [E] : [] }); + } + r.createMappingKey = d; + } }), wn = F({ "node_modules/yaml-unist-parser/lib/factories/mapping-value.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Se(), c = Ee(), h = me(); + function d(y, E) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, h.createNode("mappingValue", y)), n.createCommentAttachable()), c.createEndCommentAttachable()), { children: E ? [E] : [] }); + } + r.createMappingValue = d; + } }), Ue = F({ "node_modules/yaml-unist-parser/lib/transforms/pair.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = bn(), n = wn(), c = Le(); + function h(d, y, E, I, S) { + var M = y.transformNode(d.key), T = y.transformNode(d.value), P = M || I ? e.createMappingKey(y.transformRange({ origStart: I ? I.origStart : M.position.start.offset, origEnd: M ? M.position.end.offset : I.origStart + 1 }), M) : null, C = T || S ? n.createMappingValue(y.transformRange({ origStart: S ? S.origStart : T.position.start.offset, origEnd: T ? T.position.end.offset : S.origStart + 1 }), T) : null; + return E(c.createPosition(P ? P.position.start : C.position.start, C ? C.position.end : P.position.end), P || e.createMappingKey(c.createEmptyPosition(C.position.start), null), C || n.createMappingValue(c.createEmptyPosition(P.position.end), null)); + } + r.transformAstPair = h; + } }), Sn = F({ "node_modules/yaml-unist-parser/lib/transforms/flow-map.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = yn(), n = tt(), c = je(), h = nt(), d = Ae(), y = st(), E = Ue(); + function I(S, M) { + var T = c.extractComments(S.cstNode.items, M), P = y.groupCstFlowCollectionItems(T), C = S.items.map(function(j, K) { + var m = P[K], a = h.getFlowMapItemAdditionalRanges(m), t = a.additionalKeyRange, s = a.additionalValueRange; + return E.transformAstPair(j, M, n.createFlowMappingItem, t, s); + }), q = T[0], R = d.getLast(T); + return e.createFlowMapping(M.transformRange({ origStart: q.origOffset, origEnd: R.origOffset + 1 }), M.transformContent(S), C); + } + r.transformFlowMap = I; + } }), En = F({ "node_modules/yaml-unist-parser/lib/factories/flow-sequence.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = et(); + function c(h, d, y) { + return e.__assign(e.__assign({}, n.createFlowCollection(h, d, y)), { type: "flowSequence" }); + } + r.createFlowSequence = c; + } }), Mn = F({ "node_modules/yaml-unist-parser/lib/factories/flow-sequence-item.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = me(); + function c(h, d) { + return e.__assign(e.__assign({}, n.createNode("flowSequenceItem", h)), { children: [d] }); + } + r.createFlowSequenceItem = c; + } }), On = F({ "node_modules/yaml-unist-parser/lib/transforms/flow-seq.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = tt(), n = En(), c = Mn(), h = Le(), d = je(), y = nt(), E = Ae(), I = st(), S = Ue(); + function M(T, P) { + var C = d.extractComments(T.cstNode.items, P), q = I.groupCstFlowCollectionItems(C), R = T.items.map(function(m, a) { + if (m.type !== "PAIR") { + var t = P.transformNode(m); + return c.createFlowSequenceItem(h.createPosition(t.position.start, t.position.end), t); + } else { + var s = q[a], i = y.getFlowMapItemAdditionalRanges(s), f = i.additionalKeyRange, g = i.additionalValueRange; + return S.transformAstPair(m, P, e.createFlowMappingItem, f, g); + } + }), j = C[0], K = E.getLast(C); + return n.createFlowSequence(P.transformRange({ origStart: j.origOffset, origEnd: K.origOffset + 1 }), P.transformContent(T), R); + } + r.transformFlowSeq = M; + } }), Ln = F({ "node_modules/yaml-unist-parser/lib/factories/mapping.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Oe(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, c.createNode("mapping", d)), n.createLeadingCommentAttachable()), y), { children: E }); + } + r.createMapping = h; + } }), An = F({ "node_modules/yaml-unist-parser/lib/factories/mapping-item.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Oe(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign({}, c.createNode("mappingItem", d)), n.createLeadingCommentAttachable()), { children: [y, E] }); + } + r.createMappingItem = h; + } }), Nn = F({ "node_modules/yaml-unist-parser/lib/transforms/map.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Ln(), n = An(), c = Le(), h = rt(), d = je(), y = Qe(), E = Ae(), I = Ue(); + function S(T, P) { + var C = T.cstNode; + C.items.filter(function(K) { + return K.type === "MAP_KEY" || K.type === "MAP_VALUE"; + }).forEach(function(K) { + return y.extractPropComments(K, P); + }); + var q = d.extractComments(C.items, P), R = M(q), j = T.items.map(function(K, m) { + var a = R[m], t = a[0].type === "MAP_VALUE" ? [null, a[0].range] : [a[0].range, a.length === 1 ? null : a[1].range], s = t[0], i = t[1]; + return I.transformAstPair(K, P, n.createMappingItem, s, i); + }); + return e.createMapping(c.createPosition(j[0].position.start, E.getLast(j).position.end), P.transformContent(T), j); + } + r.transformMap = S; + function M(T) { + for (var P = [], C = h.createSlicer(T, 0), q = false, R = 0; R < T.length; R++) { + var j = T[R]; + if (j.type === "MAP_VALUE") { + P.push(C(R + 1)), q = false; + continue; + } + q && P.push(C(R)), q = true; + } + return q && P.push(C(1 / 0)), P; + } + } }), Tn = F({ "node_modules/yaml-unist-parser/lib/factories/plain.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Se(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, c.createNode("plain", d)), n.createCommentAttachable()), y), { value: E }); + } + r.createPlain = h; + } }), Cn = F({ "node_modules/yaml-unist-parser/lib/utils/find-last-char-index.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c, h) { + for (var d = c; d >= 0; d--) + if (h.test(n[d])) + return d; + return -1; + } + r.findLastCharIndex = e; + } }), kn = F({ "node_modules/yaml-unist-parser/lib/transforms/plain.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Tn(), n = Cn(); + function c(h, d) { + var y = h.cstNode; + return e.createPlain(d.transformRange({ origStart: y.valueRange.origStart, origEnd: n.findLastCharIndex(d.text, y.valueRange.origEnd - 1, /\S/) + 1 }), d.transformContent(h), y.strValue); + } + r.transformPlain = c; + } }), Pn = F({ "node_modules/yaml-unist-parser/lib/factories/quote-double.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)); + function n(c) { + return e.__assign(e.__assign({}, c), { type: "quoteDouble" }); + } + r.createQuoteDouble = n; + } }), In = F({ "node_modules/yaml-unist-parser/lib/factories/quote-value.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Se(), c = me(); + function h(d, y, E) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, c.createNode("quoteValue", d)), y), n.createCommentAttachable()), { value: E }); + } + r.createQuoteValue = h; + } }), at = F({ "node_modules/yaml-unist-parser/lib/transforms/quote-value.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = In(); + function n(c, h) { + var d = c.cstNode; + return e.createQuoteValue(h.transformRange(d.valueRange), h.transformContent(c), d.strValue); + } + r.transformAstQuoteValue = n; + } }), Rn = F({ "node_modules/yaml-unist-parser/lib/transforms/quote-double.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Pn(), n = at(); + function c(h, d) { + return e.createQuoteDouble(n.transformAstQuoteValue(h, d)); + } + r.transformQuoteDouble = c; + } }), qn = F({ "node_modules/yaml-unist-parser/lib/factories/quote-single.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)); + function n(c) { + return e.__assign(e.__assign({}, c), { type: "quoteSingle" }); + } + r.createQuoteSingle = n; + } }), Bn = F({ "node_modules/yaml-unist-parser/lib/transforms/quote-single.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = qn(), n = at(); + function c(h, d) { + return e.createQuoteSingle(n.transformAstQuoteValue(h, d)); + } + r.transformQuoteSingle = c; + } }), jn = F({ "node_modules/yaml-unist-parser/lib/factories/sequence.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Ee(), c = Oe(), h = me(); + function d(y, E, I) { + return e.__assign(e.__assign(e.__assign(e.__assign(e.__assign({}, h.createNode("sequence", y)), c.createLeadingCommentAttachable()), n.createEndCommentAttachable()), E), { children: I }); + } + r.createSequence = d; + } }), Yn = F({ "node_modules/yaml-unist-parser/lib/factories/sequence-item.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)), n = Se(), c = Ee(), h = me(); + function d(y, E) { + return e.__assign(e.__assign(e.__assign(e.__assign({}, h.createNode("sequenceItem", y)), n.createCommentAttachable()), c.createEndCommentAttachable()), { children: E ? [E] : [] }); + } + r.createSequenceItem = d; + } }), Dn = F({ "node_modules/yaml-unist-parser/lib/transforms/seq.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Le(), n = jn(), c = Yn(), h = je(), d = Qe(), y = Ae(); + function E(I, S) { + var M = h.extractComments(I.cstNode.items, S), T = M.map(function(P, C) { + d.extractPropComments(P, S); + var q = S.transformNode(I.items[C]); + return c.createSequenceItem(e.createPosition(S.transformOffset(P.valueRange.origStart), q === null ? S.transformOffset(P.valueRange.origStart + 1) : q.position.end), q); + }); + return n.createSequence(e.createPosition(T[0].position.start, y.getLast(T).position.end), S.transformContent(I), T); + } + r.transformSeq = E; + } }), Fn = F({ "node_modules/yaml-unist-parser/lib/transform.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = en(), n = on(), c = cn(), h = un(), d = mn(), y = vn(), E = Sn(), I = On(), S = Nn(), M = kn(), T = Rn(), P = Bn(), C = Dn(); + function q(R, j) { + if (R === null || R.type === void 0 && R.value === null) + return null; + switch (R.type) { + case "ALIAS": + return e.transformAlias(R, j); + case "BLOCK_FOLDED": + return n.transformBlockFolded(R, j); + case "BLOCK_LITERAL": + return c.transformBlockLiteral(R, j); + case "COMMENT": + return h.transformComment(R, j); + case "DIRECTIVE": + return d.transformDirective(R, j); + case "DOCUMENT": + return y.transformDocument(R, j); + case "FLOW_MAP": + return E.transformFlowMap(R, j); + case "FLOW_SEQ": + return I.transformFlowSeq(R, j); + case "MAP": + return S.transformMap(R, j); + case "PLAIN": + return M.transformPlain(R, j); + case "QUOTE_DOUBLE": + return T.transformQuoteDouble(R, j); + case "QUOTE_SINGLE": + return P.transformQuoteSingle(R, j); + case "SEQ": + return C.transformSeq(R, j); + default: + throw new Error("Unexpected node type " + R.type); + } + } + r.transformNode = q; + } }), Wn = F({ "node_modules/yaml-unist-parser/lib/factories/error.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c, h) { + var d = new SyntaxError(n); + return d.name = "YAMLSyntaxError", d.source = c, d.position = h, d; + } + r.createError = e; + } }), Vn = F({ "node_modules/yaml-unist-parser/lib/transforms/error.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Wn(); + function n(c, h) { + var d = c.source.range || c.source.valueRange; + return e.createError(c.message, h.text, h.transformRange(d)); + } + r.transformError = n; + } }), Qn = F({ "node_modules/yaml-unist-parser/lib/factories/point.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c, h) { + return { offset: n, line: c, column: h }; + } + r.createPoint = e; + } }), Un = F({ "node_modules/yaml-unist-parser/lib/transforms/offset.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Qn(); + function n(c, h) { + c < 0 ? c = 0 : c > h.text.length && (c = h.text.length); + var d = h.locator.locationForIndex(c); + return e.createPoint(c, d.line + 1, d.column + 1); + } + r.transformOffset = n; + } }), Kn = F({ "node_modules/yaml-unist-parser/lib/transforms/range.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Le(); + function n(c, h) { + return e.createPosition(h.transformOffset(c.origStart), h.transformOffset(c.origEnd)); + } + r.transformRange = n; + } }), $n = F({ "node_modules/yaml-unist-parser/lib/utils/add-orig-range.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = true; + function n(y) { + if (!y.setOrigRanges()) { + var E = function(I) { + if (h(I)) + return I.origStart = I.start, I.origEnd = I.end, e; + if (d(I)) + return I.origOffset = I.offset, e; + }; + y.forEach(function(I) { + return c(I, E); + }); + } + } + r.addOrigRange = n; + function c(y, E) { + if (!(!y || typeof y != "object") && E(y) !== e) + for (var I = 0, S = Object.keys(y); I < S.length; I++) { + var M = S[I]; + if (!(M === "context" || M === "error")) { + var T = y[M]; + Array.isArray(T) ? T.forEach(function(P) { + return c(P, E); + }) : c(T, E); + } + } + } + function h(y) { + return typeof y.start == "number"; + } + function d(y) { + return typeof y.offset == "number"; + } + } }), Jn = F({ "node_modules/yaml-unist-parser/lib/utils/remove-fake-nodes.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n) { + if ("children" in n) { + if (n.children.length === 1) { + var c = n.children[0]; + if (c.type === "plain" && c.tag === null && c.anchor === null && c.value === "") + return n.children.splice(0, 1), n; + } + n.children.forEach(e); + } + return n; + } + r.removeFakeNodes = e; + } }), xn = F({ "node_modules/yaml-unist-parser/lib/utils/create-updater.js"(r) { + "use strict"; + D(), r.__esModule = true; + function e(n, c, h, d) { + var y = c(n); + return function(E) { + d(y, E) && h(n, y = E); + }; + } + r.createUpdater = e; + } }), Hn = F({ "node_modules/yaml-unist-parser/lib/utils/update-positions.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = xn(), n = Ae(); + function c(M) { + if (!(M === null || !("children" in M))) { + var T = M.children; + if (T.forEach(c), M.type === "document") { + var P = M.children, C = P[0], q = P[1]; + C.position.start.offset === C.position.end.offset ? C.position.start = C.position.end = q.position.start : q.position.start.offset === q.position.end.offset && (q.position.start = q.position.end = C.position.end); + } + var R = e.createUpdater(M.position, h, d, I), j = e.createUpdater(M.position, y, E, S); + "endComments" in M && M.endComments.length !== 0 && (R(M.endComments[0].position.start), j(n.getLast(M.endComments).position.end)); + var K = T.filter(function(t) { + return t !== null; + }); + if (K.length !== 0) { + var m = K[0], a = n.getLast(K); + R(m.position.start), j(a.position.end), "leadingComments" in m && m.leadingComments.length !== 0 && R(m.leadingComments[0].position.start), "tag" in m && m.tag && R(m.tag.position.start), "anchor" in m && m.anchor && R(m.anchor.position.start), "trailingComment" in a && a.trailingComment && j(a.trailingComment.position.end); + } + } + } + r.updatePositions = c; + function h(M) { + return M.start; + } + function d(M, T) { + M.start = T; + } + function y(M) { + return M.end; + } + function E(M, T) { + M.end = T; + } + function I(M, T) { + return T.offset < M.offset; + } + function S(M, T) { + return T.offset > M.offset; + } + } }), Me = F({ "node_modules/yaml/dist/PlainValue-ec8e588e.js"(r) { + "use strict"; + D(); + var e = { ANCHOR: "&", COMMENT: "#", TAG: "!", DIRECTIVES_END: "-", DOCUMENT_END: "." }, n = { ALIAS: "ALIAS", BLANK_LINE: "BLANK_LINE", BLOCK_FOLDED: "BLOCK_FOLDED", BLOCK_LITERAL: "BLOCK_LITERAL", COMMENT: "COMMENT", DIRECTIVE: "DIRECTIVE", DOCUMENT: "DOCUMENT", FLOW_MAP: "FLOW_MAP", FLOW_SEQ: "FLOW_SEQ", MAP: "MAP", MAP_KEY: "MAP_KEY", MAP_VALUE: "MAP_VALUE", PLAIN: "PLAIN", QUOTE_DOUBLE: "QUOTE_DOUBLE", QUOTE_SINGLE: "QUOTE_SINGLE", SEQ: "SEQ", SEQ_ITEM: "SEQ_ITEM" }, c = "tag:yaml.org,2002:", h = { MAP: "tag:yaml.org,2002:map", SEQ: "tag:yaml.org,2002:seq", STR: "tag:yaml.org,2002:str" }; + function d(a) { + let t = [0], s = a.indexOf(` +`); + for (; s !== -1; ) + s += 1, t.push(s), s = a.indexOf(` +`, s); + return t; + } + function y(a) { + let t, s; + return typeof a == "string" ? (t = d(a), s = a) : (Array.isArray(a) && (a = a[0]), a && a.context && (a.lineStarts || (a.lineStarts = d(a.context.src)), t = a.lineStarts, s = a.context.src)), { lineStarts: t, src: s }; + } + function E(a, t) { + if (typeof a != "number" || a < 0) + return null; + let { lineStarts: s, src: i } = y(t); + if (!s || !i || a > i.length) + return null; + for (let g = 0; g < s.length; ++g) { + let u = s[g]; + if (a < u) + return { line: g, col: a - s[g - 1] + 1 }; + if (a === u) + return { line: g + 1, col: 1 }; + } + let f = s.length; + return { line: f, col: a - s[f - 1] + 1 }; + } + function I(a, t) { + let { lineStarts: s, src: i } = y(t); + if (!s || !(a >= 1) || a > s.length) + return null; + let f = s[a - 1], g = s[a]; + for (; g && g > f && i[g - 1] === ` +`; ) + --g; + return i.slice(f, g); + } + function S(a, t) { + let { start: s, end: i } = a, f = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 80, g = I(s.line, t); + if (!g) + return null; + let { col: u } = s; + if (g.length > f) + if (u <= f - 10) + g = g.substr(0, f - 1) + "\u2026"; + else { + let $ = Math.round(f / 2); + g.length > u + $ && (g = g.substr(0, u + $ - 1) + "\u2026"), u -= g.length - f, g = "\u2026" + g.substr(1 - f); + } + let p = 1, L = ""; + i && (i.line === s.line && u + (i.col - s.col) <= f + 1 ? p = i.col - s.col : (p = Math.min(g.length + 1, f) - u, L = "\u2026")); + let k = u > 1 ? " ".repeat(u - 1) : "", B = "^".repeat(p); + return "".concat(g, ` +`).concat(k).concat(B).concat(L); + } + var M = class { + static copy(a) { + return new M(a.start, a.end); + } + constructor(a, t) { + this.start = a, this.end = t || a; + } + isEmpty() { + return typeof this.start != "number" || !this.end || this.end <= this.start; + } + setOrigRange(a, t) { + let { start: s, end: i } = this; + if (a.length === 0 || i <= a[0]) + return this.origStart = s, this.origEnd = i, t; + let f = t; + for (; f < a.length && !(a[f] > s); ) + ++f; + this.origStart = s + f; + let g = f; + for (; f < a.length && !(a[f] >= i); ) + ++f; + return this.origEnd = i + f, g; + } + }, T = class { + static addStringTerminator(a, t, s) { + if (s[s.length - 1] === ` +`) + return s; + let i = T.endOfWhiteSpace(a, t); + return i >= a.length || a[i] === ` +` ? s + ` +` : s; + } + static atDocumentBoundary(a, t, s) { + let i = a[t]; + if (!i) + return true; + let f = a[t - 1]; + if (f && f !== ` +`) + return false; + if (s) { + if (i !== s) + return false; + } else if (i !== e.DIRECTIVES_END && i !== e.DOCUMENT_END) + return false; + let g = a[t + 1], u = a[t + 2]; + if (g !== i || u !== i) + return false; + let p = a[t + 3]; + return !p || p === ` +` || p === " " || p === " "; + } + static endOfIdentifier(a, t) { + let s = a[t], i = s === "<", f = i ? [` +`, " ", " ", ">"] : [` +`, " ", " ", "[", "]", "{", "}", ","]; + for (; s && f.indexOf(s) === -1; ) + s = a[t += 1]; + return i && s === ">" && (t += 1), t; + } + static endOfIndent(a, t) { + let s = a[t]; + for (; s === " "; ) + s = a[t += 1]; + return t; + } + static endOfLine(a, t) { + let s = a[t]; + for (; s && s !== ` +`; ) + s = a[t += 1]; + return t; + } + static endOfWhiteSpace(a, t) { + let s = a[t]; + for (; s === " " || s === " "; ) + s = a[t += 1]; + return t; + } + static startOfLine(a, t) { + let s = a[t - 1]; + if (s === ` +`) + return t; + for (; s && s !== ` +`; ) + s = a[t -= 1]; + return t + 1; + } + static endOfBlockIndent(a, t, s) { + let i = T.endOfIndent(a, s); + if (i > s + t) + return i; + { + let f = T.endOfWhiteSpace(a, i), g = a[f]; + if (!g || g === ` +`) + return f; + } + return null; + } + static atBlank(a, t, s) { + let i = a[t]; + return i === ` +` || i === " " || i === " " || s && !i; + } + static nextNodeIsIndented(a, t, s) { + return !a || t < 0 ? false : t > 0 ? true : s && a === "-"; + } + static normalizeOffset(a, t) { + let s = a[t]; + return s ? s !== ` +` && a[t - 1] === ` +` ? t - 1 : T.endOfWhiteSpace(a, t) : t; + } + static foldNewline(a, t, s) { + let i = 0, f = false, g = "", u = a[t + 1]; + for (; u === " " || u === " " || u === ` +`; ) { + switch (u) { + case ` +`: + i = 0, t += 1, g += ` +`; + break; + case " ": + i <= s && (f = true), t = T.endOfWhiteSpace(a, t + 2) - 1; + break; + case " ": + i += 1, t += 1; + break; + } + u = a[t + 1]; + } + return g || (g = " "), u && i <= s && (f = true), { fold: g, offset: t, error: f }; + } + constructor(a, t, s) { + Object.defineProperty(this, "context", { value: s || null, writable: true }), this.error = null, this.range = null, this.valueRange = null, this.props = t || [], this.type = a, this.value = null; + } + getPropValue(a, t, s) { + if (!this.context) + return null; + let { src: i } = this.context, f = this.props[a]; + return f && i[f.start] === t ? i.slice(f.start + (s ? 1 : 0), f.end) : null; + } + get anchor() { + for (let a = 0; a < this.props.length; ++a) { + let t = this.getPropValue(a, e.ANCHOR, true); + if (t != null) + return t; + } + return null; + } + get comment() { + let a = []; + for (let t = 0; t < this.props.length; ++t) { + let s = this.getPropValue(t, e.COMMENT, true); + s != null && a.push(s); + } + return a.length > 0 ? a.join(` +`) : null; + } + commentHasRequiredWhitespace(a) { + let { src: t } = this.context; + if (this.header && a === this.header.end || !this.valueRange) + return false; + let { end: s } = this.valueRange; + return a !== s || T.atBlank(t, s - 1); + } + get hasComment() { + if (this.context) { + let { src: a } = this.context; + for (let t = 0; t < this.props.length; ++t) + if (a[this.props[t].start] === e.COMMENT) + return true; + } + return false; + } + get hasProps() { + if (this.context) { + let { src: a } = this.context; + for (let t = 0; t < this.props.length; ++t) + if (a[this.props[t].start] !== e.COMMENT) + return true; + } + return false; + } + get includesTrailingLines() { + return false; + } + get jsonLike() { + return [n.FLOW_MAP, n.FLOW_SEQ, n.QUOTE_DOUBLE, n.QUOTE_SINGLE].indexOf(this.type) !== -1; + } + get rangeAsLinePos() { + if (!this.range || !this.context) + return; + let a = E(this.range.start, this.context.root); + if (!a) + return; + let t = E(this.range.end, this.context.root); + return { start: a, end: t }; + } + get rawValue() { + if (!this.valueRange || !this.context) + return null; + let { start: a, end: t } = this.valueRange; + return this.context.src.slice(a, t); + } + get tag() { + for (let a = 0; a < this.props.length; ++a) { + let t = this.getPropValue(a, e.TAG, false); + if (t != null) { + if (t[1] === "<") + return { verbatim: t.slice(2, -1) }; + { + let [s, i, f] = t.match(/^(.*!)([^!]*)$/); + return { handle: i, suffix: f }; + } + } + } + return null; + } + get valueRangeContainsNewline() { + if (!this.valueRange || !this.context) + return false; + let { start: a, end: t } = this.valueRange, { src: s } = this.context; + for (let i = a; i < t; ++i) + if (s[i] === ` +`) + return true; + return false; + } + parseComment(a) { + let { src: t } = this.context; + if (t[a] === e.COMMENT) { + let s = T.endOfLine(t, a + 1), i = new M(a, s); + return this.props.push(i), s; + } + return a; + } + setOrigRanges(a, t) { + return this.range && (t = this.range.setOrigRange(a, t)), this.valueRange && this.valueRange.setOrigRange(a, t), this.props.forEach((s) => s.setOrigRange(a, t)), t; + } + toString() { + let { context: { src: a }, range: t, value: s } = this; + if (s != null) + return s; + let i = a.slice(t.start, t.end); + return T.addStringTerminator(a, t.end, i); + } + }, P = class extends Error { + constructor(a, t, s) { + if (!s || !(t instanceof T)) + throw new Error("Invalid arguments for new ".concat(a)); + super(), this.name = a, this.message = s, this.source = t; + } + makePretty() { + if (!this.source) + return; + this.nodeType = this.source.type; + let a = this.source.context && this.source.context.root; + if (typeof this.offset == "number") { + this.range = new M(this.offset, this.offset + 1); + let t = a && E(this.offset, a); + if (t) { + let s = { line: t.line, col: t.col + 1 }; + this.linePos = { start: t, end: s }; + } + delete this.offset; + } else + this.range = this.source.range, this.linePos = this.source.rangeAsLinePos; + if (this.linePos) { + let { line: t, col: s } = this.linePos.start; + this.message += " at line ".concat(t, ", column ").concat(s); + let i = a && S(this.linePos, a); + i && (this.message += `: + +`.concat(i, ` +`)); + } + delete this.source; + } + }, C = class extends P { + constructor(a, t) { + super("YAMLReferenceError", a, t); + } + }, q = class extends P { + constructor(a, t) { + super("YAMLSemanticError", a, t); + } + }, R = class extends P { + constructor(a, t) { + super("YAMLSyntaxError", a, t); + } + }, j = class extends P { + constructor(a, t) { + super("YAMLWarning", a, t); + } + }; + function K(a, t, s) { + return t in a ? Object.defineProperty(a, t, { value: s, enumerable: true, configurable: true, writable: true }) : a[t] = s, a; + } + var m = class extends T { + static endOfLine(a, t, s) { + let i = a[t], f = t; + for (; i && i !== ` +` && !(s && (i === "[" || i === "]" || i === "{" || i === "}" || i === ",")); ) { + let g = a[f + 1]; + if (i === ":" && (!g || g === ` +` || g === " " || g === " " || s && g === ",") || (i === " " || i === " ") && g === "#") + break; + f += 1, i = g; + } + return f; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let { start: a, end: t } = this.valueRange, { src: s } = this.context, i = s[t - 1]; + for (; a < t && (i === ` +` || i === " " || i === " "); ) + i = s[--t - 1]; + let f = ""; + for (let u = a; u < t; ++u) { + let p = s[u]; + if (p === ` +`) { + let { fold: L, offset: k } = T.foldNewline(s, u, -1); + f += L, u = k; + } else if (p === " " || p === " ") { + let L = u, k = s[u + 1]; + for (; u < t && (k === " " || k === " "); ) + u += 1, k = s[u + 1]; + k !== ` +` && (f += u > L ? s.slice(L, u + 1) : p); + } else + f += p; + } + let g = s[a]; + switch (g) { + case " ": { + let u = "Plain value cannot start with a tab character"; + return { errors: [new q(this, u)], str: f }; + } + case "@": + case "`": { + let u = "Plain value cannot start with reserved character ".concat(g); + return { errors: [new q(this, u)], str: f }; + } + default: + return f; + } + } + parseBlockValue(a) { + let { indent: t, inFlow: s, src: i } = this.context, f = a, g = a; + for (let u = i[f]; u === ` +` && !T.atDocumentBoundary(i, f + 1); u = i[f]) { + let p = T.endOfBlockIndent(i, t, f + 1); + if (p === null || i[p] === "#") + break; + i[p] === ` +` ? f = p : (g = m.endOfLine(i, p, s), f = g); + } + return this.valueRange.isEmpty() && (this.valueRange.start = a), this.valueRange.end = g, g; + } + parse(a, t) { + this.context = a; + let { inFlow: s, src: i } = a, f = t, g = i[f]; + return g && g !== "#" && g !== ` +` && (f = m.endOfLine(i, t, s)), this.valueRange = new M(t, f), f = T.endOfWhiteSpace(i, f), f = this.parseComment(f), (!this.hasComment || this.valueRange.isEmpty()) && (f = this.parseBlockValue(f)), f; + } + }; + r.Char = e, r.Node = T, r.PlainValue = m, r.Range = M, r.Type = n, r.YAMLError = P, r.YAMLReferenceError = C, r.YAMLSemanticError = q, r.YAMLSyntaxError = R, r.YAMLWarning = j, r._defineProperty = K, r.defaultTagPrefix = c, r.defaultTags = h; + } }), Gn = F({ "node_modules/yaml/dist/parse-cst.js"(r) { + "use strict"; + D(); + var e = Me(), n = class extends e.Node { + constructor() { + super(e.Type.BLANK_LINE); + } + get includesTrailingLines() { + return true; + } + parse(m, a) { + return this.context = m, this.range = new e.Range(a, a + 1), a + 1; + } + }, c = class extends e.Node { + constructor(m, a) { + super(m, a), this.node = null; + } + get includesTrailingLines() { + return !!this.node && this.node.includesTrailingLines; + } + parse(m, a) { + this.context = m; + let { parseNode: t, src: s } = m, { atLineStart: i, lineStart: f } = m; + !i && this.type === e.Type.SEQ_ITEM && (this.error = new e.YAMLSemanticError(this, "Sequence items must not have preceding content on the same line")); + let g = i ? a - f : m.indent, u = e.Node.endOfWhiteSpace(s, a + 1), p = s[u], L = p === "#", k = [], B = null; + for (; p === ` +` || p === "#"; ) { + if (p === "#") { + let Q = e.Node.endOfLine(s, u + 1); + k.push(new e.Range(u, Q)), u = Q; + } else { + i = true, f = u + 1; + let Q = e.Node.endOfWhiteSpace(s, f); + s[Q] === ` +` && k.length === 0 && (B = new n(), f = B.parse({ src: s }, f)), u = e.Node.endOfIndent(s, f); + } + p = s[u]; + } + if (e.Node.nextNodeIsIndented(p, u - (f + g), this.type !== e.Type.SEQ_ITEM) ? this.node = t({ atLineStart: i, inCollection: false, indent: g, lineStart: f, parent: this }, u) : p && f > a + 1 && (u = f - 1), this.node) { + if (B) { + let Q = m.parent.items || m.parent.contents; + Q && Q.push(B); + } + k.length && Array.prototype.push.apply(this.props, k), u = this.node.range.end; + } else if (L) { + let Q = k[0]; + this.props.push(Q), u = Q.end; + } else + u = e.Node.endOfLine(s, a + 1); + let $ = this.node ? this.node.valueRange.end : u; + return this.valueRange = new e.Range(a, $), u; + } + setOrigRanges(m, a) { + return a = super.setOrigRanges(m, a), this.node ? this.node.setOrigRanges(m, a) : a; + } + toString() { + let { context: { src: m }, node: a, range: t, value: s } = this; + if (s != null) + return s; + let i = a ? m.slice(t.start, a.range.start) + String(a) : m.slice(t.start, t.end); + return e.Node.addStringTerminator(m, t.end, i); + } + }, h = class extends e.Node { + constructor() { + super(e.Type.COMMENT); + } + parse(m, a) { + this.context = m; + let t = this.parseComment(a); + return this.range = new e.Range(a, t), t; + } + }; + function d(m) { + let a = m; + for (; a instanceof c; ) + a = a.node; + if (!(a instanceof y)) + return null; + let t = a.items.length, s = -1; + for (let g = t - 1; g >= 0; --g) { + let u = a.items[g]; + if (u.type === e.Type.COMMENT) { + let { indent: p, lineStart: L } = u.context; + if (p > 0 && u.range.start >= L + p) + break; + s = g; + } else if (u.type === e.Type.BLANK_LINE) + s = g; + else + break; + } + if (s === -1) + return null; + let i = a.items.splice(s, t - s), f = i[0].range.start; + for (; a.range.end = f, a.valueRange && a.valueRange.end > f && (a.valueRange.end = f), a !== m; ) + a = a.context.parent; + return i; + } + var y = class extends e.Node { + static nextContentHasIndent(m, a, t) { + let s = e.Node.endOfLine(m, a) + 1; + a = e.Node.endOfWhiteSpace(m, s); + let i = m[a]; + return i ? a >= s + t ? true : i !== "#" && i !== ` +` ? false : y.nextContentHasIndent(m, a, t) : false; + } + constructor(m) { + super(m.type === e.Type.SEQ_ITEM ? e.Type.SEQ : e.Type.MAP); + for (let t = m.props.length - 1; t >= 0; --t) + if (m.props[t].start < m.context.lineStart) { + this.props = m.props.slice(0, t + 1), m.props = m.props.slice(t + 1); + let s = m.props[0] || m.valueRange; + m.range.start = s.start; + break; + } + this.items = [m]; + let a = d(m); + a && Array.prototype.push.apply(this.items, a); + } + get includesTrailingLines() { + return this.items.length > 0; + } + parse(m, a) { + this.context = m; + let { parseNode: t, src: s } = m, i = e.Node.startOfLine(s, a), f = this.items[0]; + f.context.parent = this, this.valueRange = e.Range.copy(f.valueRange); + let g = f.range.start - f.context.lineStart, u = a; + u = e.Node.normalizeOffset(s, u); + let p = s[u], L = e.Node.endOfWhiteSpace(s, i) === u, k = false; + for (; p; ) { + for (; p === ` +` || p === "#"; ) { + if (L && p === ` +` && !k) { + let Q = new n(); + if (u = Q.parse({ src: s }, u), this.valueRange.end = u, u >= s.length) { + p = null; + break; + } + this.items.push(Q), u -= 1; + } else if (p === "#") { + if (u < i + g && !y.nextContentHasIndent(s, u, g)) + return u; + let Q = new h(); + if (u = Q.parse({ indent: g, lineStart: i, src: s }, u), this.items.push(Q), this.valueRange.end = u, u >= s.length) { + p = null; + break; + } + } + if (i = u + 1, u = e.Node.endOfIndent(s, i), e.Node.atBlank(s, u)) { + let Q = e.Node.endOfWhiteSpace(s, u), z = s[Q]; + (!z || z === ` +` || z === "#") && (u = Q); + } + p = s[u], L = true; + } + if (!p) + break; + if (u !== i + g && (L || p !== ":")) { + if (u < i + g) { + i > a && (u = i); + break; + } else if (!this.error) { + let Q = "All collection items must start at the same column"; + this.error = new e.YAMLSyntaxError(this, Q); + } + } + if (f.type === e.Type.SEQ_ITEM) { + if (p !== "-") { + i > a && (u = i); + break; + } + } else if (p === "-" && !this.error) { + let Q = s[u + 1]; + if (!Q || Q === ` +` || Q === " " || Q === " ") { + let z = "A collection cannot be both a mapping and a sequence"; + this.error = new e.YAMLSyntaxError(this, z); + } + } + let B = t({ atLineStart: L, inCollection: true, indent: g, lineStart: i, parent: this }, u); + if (!B) + return u; + if (this.items.push(B), this.valueRange.end = B.valueRange.end, u = e.Node.normalizeOffset(s, B.range.end), p = s[u], L = false, k = B.includesTrailingLines, p) { + let Q = u - 1, z = s[Q]; + for (; z === " " || z === " "; ) + z = s[--Q]; + z === ` +` && (i = Q + 1, L = true); + } + let $ = d(B); + $ && Array.prototype.push.apply(this.items, $); + } + return u; + } + setOrigRanges(m, a) { + return a = super.setOrigRanges(m, a), this.items.forEach((t) => { + a = t.setOrigRanges(m, a); + }), a; + } + toString() { + let { context: { src: m }, items: a, range: t, value: s } = this; + if (s != null) + return s; + let i = m.slice(t.start, a[0].range.start) + String(a[0]); + for (let f = 1; f < a.length; ++f) { + let g = a[f], { atLineStart: u, indent: p } = g.context; + if (u) + for (let L = 0; L < p; ++L) + i += " "; + i += String(g); + } + return e.Node.addStringTerminator(m, t.end, i); + } + }, E = class extends e.Node { + constructor() { + super(e.Type.DIRECTIVE), this.name = null; + } + get parameters() { + let m = this.rawValue; + return m ? m.trim().split(/[ \t]+/) : []; + } + parseName(m) { + let { src: a } = this.context, t = m, s = a[t]; + for (; s && s !== ` +` && s !== " " && s !== " "; ) + s = a[t += 1]; + return this.name = a.slice(m, t), t; + } + parseParameters(m) { + let { src: a } = this.context, t = m, s = a[t]; + for (; s && s !== ` +` && s !== "#"; ) + s = a[t += 1]; + return this.valueRange = new e.Range(m, t), t; + } + parse(m, a) { + this.context = m; + let t = this.parseName(a + 1); + return t = this.parseParameters(t), t = this.parseComment(t), this.range = new e.Range(a, t), t; + } + }, I = class extends e.Node { + static startCommentOrEndBlankLine(m, a) { + let t = e.Node.endOfWhiteSpace(m, a), s = m[t]; + return s === "#" || s === ` +` ? t : a; + } + constructor() { + super(e.Type.DOCUMENT), this.directives = null, this.contents = null, this.directivesEndMarker = null, this.documentEndMarker = null; + } + parseDirectives(m) { + let { src: a } = this.context; + this.directives = []; + let t = true, s = false, i = m; + for (; !e.Node.atDocumentBoundary(a, i, e.Char.DIRECTIVES_END); ) + switch (i = I.startCommentOrEndBlankLine(a, i), a[i]) { + case ` +`: + if (t) { + let f = new n(); + i = f.parse({ src: a }, i), i < a.length && this.directives.push(f); + } else + i += 1, t = true; + break; + case "#": + { + let f = new h(); + i = f.parse({ src: a }, i), this.directives.push(f), t = false; + } + break; + case "%": + { + let f = new E(); + i = f.parse({ parent: this, src: a }, i), this.directives.push(f), s = true, t = false; + } + break; + default: + return s ? this.error = new e.YAMLSemanticError(this, "Missing directives-end indicator line") : this.directives.length > 0 && (this.contents = this.directives, this.directives = []), i; + } + return a[i] ? (this.directivesEndMarker = new e.Range(i, i + 3), i + 3) : (s ? this.error = new e.YAMLSemanticError(this, "Missing directives-end indicator line") : this.directives.length > 0 && (this.contents = this.directives, this.directives = []), i); + } + parseContents(m) { + let { parseNode: a, src: t } = this.context; + this.contents || (this.contents = []); + let s = m; + for (; t[s - 1] === "-"; ) + s -= 1; + let i = e.Node.endOfWhiteSpace(t, m), f = s === m; + for (this.valueRange = new e.Range(i); !e.Node.atDocumentBoundary(t, i, e.Char.DOCUMENT_END); ) { + switch (t[i]) { + case ` +`: + if (f) { + let g = new n(); + i = g.parse({ src: t }, i), i < t.length && this.contents.push(g); + } else + i += 1, f = true; + s = i; + break; + case "#": + { + let g = new h(); + i = g.parse({ src: t }, i), this.contents.push(g), f = false; + } + break; + default: { + let g = e.Node.endOfIndent(t, i), p = a({ atLineStart: f, indent: -1, inFlow: false, inCollection: false, lineStart: s, parent: this }, g); + if (!p) + return this.valueRange.end = g; + this.contents.push(p), i = p.range.end, f = false; + let L = d(p); + L && Array.prototype.push.apply(this.contents, L); + } + } + i = I.startCommentOrEndBlankLine(t, i); + } + if (this.valueRange.end = i, t[i] && (this.documentEndMarker = new e.Range(i, i + 3), i += 3, t[i])) { + if (i = e.Node.endOfWhiteSpace(t, i), t[i] === "#") { + let g = new h(); + i = g.parse({ src: t }, i), this.contents.push(g); + } + switch (t[i]) { + case ` +`: + i += 1; + break; + case void 0: + break; + default: + this.error = new e.YAMLSyntaxError(this, "Document end marker line cannot have a non-comment suffix"); + } + } + return i; + } + parse(m, a) { + m.root = this, this.context = m; + let { src: t } = m, s = t.charCodeAt(a) === 65279 ? a + 1 : a; + return s = this.parseDirectives(s), s = this.parseContents(s), s; + } + setOrigRanges(m, a) { + return a = super.setOrigRanges(m, a), this.directives.forEach((t) => { + a = t.setOrigRanges(m, a); + }), this.directivesEndMarker && (a = this.directivesEndMarker.setOrigRange(m, a)), this.contents.forEach((t) => { + a = t.setOrigRanges(m, a); + }), this.documentEndMarker && (a = this.documentEndMarker.setOrigRange(m, a)), a; + } + toString() { + let { contents: m, directives: a, value: t } = this; + if (t != null) + return t; + let s = a.join(""); + return m.length > 0 && ((a.length > 0 || m[0].type === e.Type.COMMENT) && (s += `--- +`), s += m.join("")), s[s.length - 1] !== ` +` && (s += ` +`), s; + } + }, S = class extends e.Node { + parse(m, a) { + this.context = m; + let { src: t } = m, s = e.Node.endOfIdentifier(t, a + 1); + return this.valueRange = new e.Range(a + 1, s), s = e.Node.endOfWhiteSpace(t, s), s = this.parseComment(s), s; + } + }, M = { CLIP: "CLIP", KEEP: "KEEP", STRIP: "STRIP" }, T = class extends e.Node { + constructor(m, a) { + super(m, a), this.blockIndent = null, this.chomping = M.CLIP, this.header = null; + } + get includesTrailingLines() { + return this.chomping === M.KEEP; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let { start: m, end: a } = this.valueRange, { indent: t, src: s } = this.context; + if (this.valueRange.isEmpty()) + return ""; + let i = null, f = s[a - 1]; + for (; f === ` +` || f === " " || f === " "; ) { + if (a -= 1, a <= m) { + if (this.chomping === M.KEEP) + break; + return ""; + } + f === ` +` && (i = a), f = s[a - 1]; + } + let g = a + 1; + i && (this.chomping === M.KEEP ? (g = i, a = this.valueRange.end) : a = i); + let u = t + this.blockIndent, p = this.type === e.Type.BLOCK_FOLDED, L = true, k = "", B = "", $ = false; + for (let Q = m; Q < a; ++Q) { + for (let ie = 0; ie < u && s[Q] === " "; ++ie) + Q += 1; + let z = s[Q]; + if (z === ` +`) + B === ` +` ? k += ` +` : B = ` +`; + else { + let ie = e.Node.endOfLine(s, Q), ue = s.slice(Q, ie); + Q = ie, p && (z === " " || z === " ") && Q < g ? (B === " " ? B = ` +` : !$ && !L && B === ` +` && (B = ` + +`), k += B + ue, B = ie < a && s[ie] || "", $ = true) : (k += B + ue, B = p && Q < g ? " " : ` +`, $ = false), L && ue !== "" && (L = false); + } + } + return this.chomping === M.STRIP ? k : k + ` +`; + } + parseBlockHeader(m) { + let { src: a } = this.context, t = m + 1, s = ""; + for (; ; ) { + let i = a[t]; + switch (i) { + case "-": + this.chomping = M.STRIP; + break; + case "+": + this.chomping = M.KEEP; + break; + case "0": + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + s += i; + break; + default: + return this.blockIndent = Number(s) || null, this.header = new e.Range(m, t), t; + } + t += 1; + } + } + parseBlockValue(m) { + let { indent: a, src: t } = this.context, s = !!this.blockIndent, i = m, f = m, g = 1; + for (let u = t[i]; u === ` +` && (i += 1, !e.Node.atDocumentBoundary(t, i)); u = t[i]) { + let p = e.Node.endOfBlockIndent(t, a, i); + if (p === null) + break; + let L = t[p], k = p - (i + a); + if (this.blockIndent) { + if (L && L !== ` +` && k < this.blockIndent) { + if (t[p] === "#") + break; + if (!this.error) { + let B = s ? "explicit indentation indicator" : "first line", $ = "Block scalars must not be less indented than their ".concat(B); + this.error = new e.YAMLSemanticError(this, $); + } + } + } else if (t[p] !== ` +`) { + if (k < g) { + let B = "Block scalars with more-indented leading empty lines must use an explicit indentation indicator"; + this.error = new e.YAMLSemanticError(this, B); + } + this.blockIndent = k; + } else + k > g && (g = k); + t[p] === ` +` ? i = p : i = f = e.Node.endOfLine(t, p); + } + return this.chomping !== M.KEEP && (i = t[f] ? f + 1 : f), this.valueRange = new e.Range(m + 1, i), i; + } + parse(m, a) { + this.context = m; + let { src: t } = m, s = this.parseBlockHeader(a); + return s = e.Node.endOfWhiteSpace(t, s), s = this.parseComment(s), s = this.parseBlockValue(s), s; + } + setOrigRanges(m, a) { + return a = super.setOrigRanges(m, a), this.header ? this.header.setOrigRange(m, a) : a; + } + }, P = class extends e.Node { + constructor(m, a) { + super(m, a), this.items = null; + } + prevNodeIsJsonLike() { + let m = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.items.length, a = this.items[m - 1]; + return !!a && (a.jsonLike || a.type === e.Type.COMMENT && this.prevNodeIsJsonLike(m - 1)); + } + parse(m, a) { + this.context = m; + let { parseNode: t, src: s } = m, { indent: i, lineStart: f } = m, g = s[a]; + this.items = [{ char: g, offset: a }]; + let u = e.Node.endOfWhiteSpace(s, a + 1); + for (g = s[u]; g && g !== "]" && g !== "}"; ) { + switch (g) { + case ` +`: + { + f = u + 1; + let p = e.Node.endOfWhiteSpace(s, f); + if (s[p] === ` +`) { + let L = new n(); + f = L.parse({ src: s }, f), this.items.push(L); + } + if (u = e.Node.endOfIndent(s, f), u <= f + i && (g = s[u], u < f + i || g !== "]" && g !== "}")) { + let L = "Insufficient indentation in flow collection"; + this.error = new e.YAMLSemanticError(this, L); + } + } + break; + case ",": + this.items.push({ char: g, offset: u }), u += 1; + break; + case "#": + { + let p = new h(); + u = p.parse({ src: s }, u), this.items.push(p); + } + break; + case "?": + case ":": { + let p = s[u + 1]; + if (p === ` +` || p === " " || p === " " || p === "," || g === ":" && this.prevNodeIsJsonLike()) { + this.items.push({ char: g, offset: u }), u += 1; + break; + } + } + default: { + let p = t({ atLineStart: false, inCollection: false, inFlow: true, indent: -1, lineStart: f, parent: this }, u); + if (!p) + return this.valueRange = new e.Range(a, u), u; + this.items.push(p), u = e.Node.normalizeOffset(s, p.range.end); + } + } + u = e.Node.endOfWhiteSpace(s, u), g = s[u]; + } + return this.valueRange = new e.Range(a, u + 1), g && (this.items.push({ char: g, offset: u }), u = e.Node.endOfWhiteSpace(s, u + 1), u = this.parseComment(u)), u; + } + setOrigRanges(m, a) { + return a = super.setOrigRanges(m, a), this.items.forEach((t) => { + if (t instanceof e.Node) + a = t.setOrigRanges(m, a); + else if (m.length === 0) + t.origOffset = t.offset; + else { + let s = a; + for (; s < m.length && !(m[s] > t.offset); ) + ++s; + t.origOffset = t.offset + s, a = s; + } + }), a; + } + toString() { + let { context: { src: m }, items: a, range: t, value: s } = this; + if (s != null) + return s; + let i = a.filter((u) => u instanceof e.Node), f = "", g = t.start; + return i.forEach((u) => { + let p = m.slice(g, u.range.start); + g = u.range.end, f += p + String(u), f[f.length - 1] === ` +` && m[g - 1] !== ` +` && m[g] === ` +` && (g += 1); + }), f += m.slice(g, t.end), e.Node.addStringTerminator(m, t.end, f); + } + }, C = class extends e.Node { + static endOfQuote(m, a) { + let t = m[a]; + for (; t && t !== '"'; ) + a += t === "\\" ? 2 : 1, t = m[a]; + return a + 1; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let m = [], { start: a, end: t } = this.valueRange, { indent: s, src: i } = this.context; + i[t - 1] !== '"' && m.push(new e.YAMLSyntaxError(this, 'Missing closing "quote')); + let f = ""; + for (let g = a + 1; g < t - 1; ++g) { + let u = i[g]; + if (u === ` +`) { + e.Node.atDocumentBoundary(i, g + 1) && m.push(new e.YAMLSemanticError(this, "Document boundary indicators are not allowed within string values")); + let { fold: p, offset: L, error: k } = e.Node.foldNewline(i, g, s); + f += p, g = L, k && m.push(new e.YAMLSemanticError(this, "Multi-line double-quoted string needs to be sufficiently indented")); + } else if (u === "\\") + switch (g += 1, i[g]) { + case "0": + f += "\0"; + break; + case "a": + f += "\x07"; + break; + case "b": + f += "\b"; + break; + case "e": + f += "\x1B"; + break; + case "f": + f += "\f"; + break; + case "n": + f += ` +`; + break; + case "r": + f += "\r"; + break; + case "t": + f += " "; + break; + case "v": + f += "\v"; + break; + case "N": + f += "\x85"; + break; + case "_": + f += "\xA0"; + break; + case "L": + f += "\u2028"; + break; + case "P": + f += "\u2029"; + break; + case " ": + f += " "; + break; + case '"': + f += '"'; + break; + case "/": + f += "/"; + break; + case "\\": + f += "\\"; + break; + case " ": + f += " "; + break; + case "x": + f += this.parseCharCode(g + 1, 2, m), g += 2; + break; + case "u": + f += this.parseCharCode(g + 1, 4, m), g += 4; + break; + case "U": + f += this.parseCharCode(g + 1, 8, m), g += 8; + break; + case ` +`: + for (; i[g + 1] === " " || i[g + 1] === " "; ) + g += 1; + break; + default: + m.push(new e.YAMLSyntaxError(this, "Invalid escape sequence ".concat(i.substr(g - 1, 2)))), f += "\\" + i[g]; + } + else if (u === " " || u === " ") { + let p = g, L = i[g + 1]; + for (; L === " " || L === " "; ) + g += 1, L = i[g + 1]; + L !== ` +` && (f += g > p ? i.slice(p, g + 1) : u); + } else + f += u; + } + return m.length > 0 ? { errors: m, str: f } : f; + } + parseCharCode(m, a, t) { + let { src: s } = this.context, i = s.substr(m, a), g = i.length === a && /^[0-9a-fA-F]+$/.test(i) ? parseInt(i, 16) : NaN; + return isNaN(g) ? (t.push(new e.YAMLSyntaxError(this, "Invalid escape sequence ".concat(s.substr(m - 2, a + 2)))), s.substr(m - 2, a + 2)) : String.fromCodePoint(g); + } + parse(m, a) { + this.context = m; + let { src: t } = m, s = C.endOfQuote(t, a + 1); + return this.valueRange = new e.Range(a, s), s = e.Node.endOfWhiteSpace(t, s), s = this.parseComment(s), s; + } + }, q = class extends e.Node { + static endOfQuote(m, a) { + let t = m[a]; + for (; t; ) + if (t === "'") { + if (m[a + 1] !== "'") + break; + t = m[a += 2]; + } else + t = m[a += 1]; + return a + 1; + } + get strValue() { + if (!this.valueRange || !this.context) + return null; + let m = [], { start: a, end: t } = this.valueRange, { indent: s, src: i } = this.context; + i[t - 1] !== "'" && m.push(new e.YAMLSyntaxError(this, "Missing closing 'quote")); + let f = ""; + for (let g = a + 1; g < t - 1; ++g) { + let u = i[g]; + if (u === ` +`) { + e.Node.atDocumentBoundary(i, g + 1) && m.push(new e.YAMLSemanticError(this, "Document boundary indicators are not allowed within string values")); + let { fold: p, offset: L, error: k } = e.Node.foldNewline(i, g, s); + f += p, g = L, k && m.push(new e.YAMLSemanticError(this, "Multi-line single-quoted string needs to be sufficiently indented")); + } else if (u === "'") + f += u, g += 1, i[g] !== "'" && m.push(new e.YAMLSyntaxError(this, "Unescaped single quote? This should not happen.")); + else if (u === " " || u === " ") { + let p = g, L = i[g + 1]; + for (; L === " " || L === " "; ) + g += 1, L = i[g + 1]; + L !== ` +` && (f += g > p ? i.slice(p, g + 1) : u); + } else + f += u; + } + return m.length > 0 ? { errors: m, str: f } : f; + } + parse(m, a) { + this.context = m; + let { src: t } = m, s = q.endOfQuote(t, a + 1); + return this.valueRange = new e.Range(a, s), s = e.Node.endOfWhiteSpace(t, s), s = this.parseComment(s), s; + } + }; + function R(m, a) { + switch (m) { + case e.Type.ALIAS: + return new S(m, a); + case e.Type.BLOCK_FOLDED: + case e.Type.BLOCK_LITERAL: + return new T(m, a); + case e.Type.FLOW_MAP: + case e.Type.FLOW_SEQ: + return new P(m, a); + case e.Type.MAP_KEY: + case e.Type.MAP_VALUE: + case e.Type.SEQ_ITEM: + return new c(m, a); + case e.Type.COMMENT: + case e.Type.PLAIN: + return new e.PlainValue(m, a); + case e.Type.QUOTE_DOUBLE: + return new C(m, a); + case e.Type.QUOTE_SINGLE: + return new q(m, a); + default: + return null; + } + } + var j = class { + static parseType(m, a, t) { + switch (m[a]) { + case "*": + return e.Type.ALIAS; + case ">": + return e.Type.BLOCK_FOLDED; + case "|": + return e.Type.BLOCK_LITERAL; + case "{": + return e.Type.FLOW_MAP; + case "[": + return e.Type.FLOW_SEQ; + case "?": + return !t && e.Node.atBlank(m, a + 1, true) ? e.Type.MAP_KEY : e.Type.PLAIN; + case ":": + return !t && e.Node.atBlank(m, a + 1, true) ? e.Type.MAP_VALUE : e.Type.PLAIN; + case "-": + return !t && e.Node.atBlank(m, a + 1, true) ? e.Type.SEQ_ITEM : e.Type.PLAIN; + case '"': + return e.Type.QUOTE_DOUBLE; + case "'": + return e.Type.QUOTE_SINGLE; + default: + return e.Type.PLAIN; + } + } + constructor() { + let m = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, { atLineStart: a, inCollection: t, inFlow: s, indent: i, lineStart: f, parent: g } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + e._defineProperty(this, "parseNode", (u, p) => { + if (e.Node.atDocumentBoundary(this.src, p)) + return null; + let L = new j(this, u), { props: k, type: B, valueStart: $ } = L.parseProps(p), Q = R(B, k), z = Q.parse(L, $); + if (Q.range = new e.Range(p, z), z <= p && (Q.error = new Error("Node#parse consumed no characters"), Q.error.parseEnd = z, Q.error.source = Q, Q.range.end = p + 1), L.nodeStartsCollection(Q)) { + !Q.error && !L.atLineStart && L.parent.type === e.Type.DOCUMENT && (Q.error = new e.YAMLSyntaxError(Q, "Block collection must not have preceding content here (e.g. directives-end indicator)")); + let ie = new y(Q); + return z = ie.parse(new j(L), z), ie.range = new e.Range(p, z), ie; + } + return Q; + }), this.atLineStart = a != null ? a : m.atLineStart || false, this.inCollection = t != null ? t : m.inCollection || false, this.inFlow = s != null ? s : m.inFlow || false, this.indent = i != null ? i : m.indent, this.lineStart = f != null ? f : m.lineStart, this.parent = g != null ? g : m.parent || {}, this.root = m.root, this.src = m.src; + } + nodeStartsCollection(m) { + let { inCollection: a, inFlow: t, src: s } = this; + if (a || t) + return false; + if (m instanceof c) + return true; + let i = m.range.end; + return s[i] === ` +` || s[i - 1] === ` +` ? false : (i = e.Node.endOfWhiteSpace(s, i), s[i] === ":"); + } + parseProps(m) { + let { inFlow: a, parent: t, src: s } = this, i = [], f = false; + m = this.atLineStart ? e.Node.endOfIndent(s, m) : e.Node.endOfWhiteSpace(s, m); + let g = s[m]; + for (; g === e.Char.ANCHOR || g === e.Char.COMMENT || g === e.Char.TAG || g === ` +`; ) { + if (g === ` +`) { + let p = m, L; + do + L = p + 1, p = e.Node.endOfIndent(s, L); + while (s[p] === ` +`); + let k = p - (L + this.indent), B = t.type === e.Type.SEQ_ITEM && t.context.atLineStart; + if (s[p] !== "#" && !e.Node.nextNodeIsIndented(s[p], k, !B)) + break; + this.atLineStart = true, this.lineStart = L, f = false, m = p; + } else if (g === e.Char.COMMENT) { + let p = e.Node.endOfLine(s, m + 1); + i.push(new e.Range(m, p)), m = p; + } else { + let p = e.Node.endOfIdentifier(s, m + 1); + g === e.Char.TAG && s[p] === "," && /^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(s.slice(m + 1, p + 13)) && (p = e.Node.endOfIdentifier(s, p + 5)), i.push(new e.Range(m, p)), f = true, m = e.Node.endOfWhiteSpace(s, p); + } + g = s[m]; + } + f && g === ":" && e.Node.atBlank(s, m + 1, true) && (m -= 1); + let u = j.parseType(s, m, a); + return { props: i, type: u, valueStart: m }; + } + }; + function K(m) { + let a = []; + m.indexOf("\r") !== -1 && (m = m.replace(/\r\n?/g, (i, f) => (i.length > 1 && a.push(f), ` +`))); + let t = [], s = 0; + do { + let i = new I(), f = new j({ src: m }); + s = i.parse(f, s), t.push(i); + } while (s < m.length); + return t.setOrigRanges = () => { + if (a.length === 0) + return false; + for (let f = 1; f < a.length; ++f) + a[f] -= f; + let i = 0; + for (let f = 0; f < t.length; ++f) + i = t[f].setOrigRanges(a, i); + return a.splice(0, a.length), true; + }, t.toString = () => t.join(`... +`), t; + } + r.parse = K; + } }), ke = F({ "node_modules/yaml/dist/resolveSeq-d03cb037.js"(r) { + "use strict"; + D(); + var e = Me(); + function n(o, l, _) { + if (!_) + return o; + let v = _.replace(/[\s\S]^/gm, "$&".concat(l, "#")); + return "#".concat(v, ` +`).concat(l).concat(o); + } + function c(o, l, _) { + return _ ? _.indexOf(` +`) === -1 ? "".concat(o, " #").concat(_) : "".concat(o, ` +`) + _.replace(/^/gm, "".concat(l || "", "#")) : o; + } + var h = class { + }; + function d(o, l, _) { + if (Array.isArray(o)) + return o.map((v, b) => d(v, String(b), _)); + if (o && typeof o.toJSON == "function") { + let v = _ && _.anchors && _.anchors.get(o); + v && (_.onCreate = (w) => { + v.res = w, delete _.onCreate; + }); + let b = o.toJSON(l, _); + return v && _.onCreate && _.onCreate(b), b; + } + return (!_ || !_.keep) && typeof o == "bigint" ? Number(o) : o; + } + var y = class extends h { + constructor(o) { + super(), this.value = o; + } + toJSON(o, l) { + return l && l.keep ? this.value : d(this.value, o, l); + } + toString() { + return String(this.value); + } + }; + function E(o, l, _) { + let v = _; + for (let b = l.length - 1; b >= 0; --b) { + let w = l[b]; + if (Number.isInteger(w) && w >= 0) { + let A = []; + A[w] = v, v = A; + } else { + let A = {}; + Object.defineProperty(A, w, { value: v, writable: true, enumerable: true, configurable: true }), v = A; + } + } + return o.createNode(v, false); + } + var I = (o) => o == null || typeof o == "object" && o[Symbol.iterator]().next().done, S = class extends h { + constructor(o) { + super(), e._defineProperty(this, "items", []), this.schema = o; + } + addIn(o, l) { + if (I(o)) + this.add(l); + else { + let [_, ...v] = o, b = this.get(_, true); + if (b instanceof S) + b.addIn(v, l); + else if (b === void 0 && this.schema) + this.set(_, E(this.schema, v, l)); + else + throw new Error("Expected YAML collection at ".concat(_, ". Remaining path: ").concat(v)); + } + } + deleteIn(o) { + let [l, ..._] = o; + if (_.length === 0) + return this.delete(l); + let v = this.get(l, true); + if (v instanceof S) + return v.deleteIn(_); + throw new Error("Expected YAML collection at ".concat(l, ". Remaining path: ").concat(_)); + } + getIn(o, l) { + let [_, ...v] = o, b = this.get(_, true); + return v.length === 0 ? !l && b instanceof y ? b.value : b : b instanceof S ? b.getIn(v, l) : void 0; + } + hasAllNullValues() { + return this.items.every((o) => { + if (!o || o.type !== "PAIR") + return false; + let l = o.value; + return l == null || l instanceof y && l.value == null && !l.commentBefore && !l.comment && !l.tag; + }); + } + hasIn(o) { + let [l, ..._] = o; + if (_.length === 0) + return this.has(l); + let v = this.get(l, true); + return v instanceof S ? v.hasIn(_) : false; + } + setIn(o, l) { + let [_, ...v] = o; + if (v.length === 0) + this.set(_, l); + else { + let b = this.get(_, true); + if (b instanceof S) + b.setIn(v, l); + else if (b === void 0 && this.schema) + this.set(_, E(this.schema, v, l)); + else + throw new Error("Expected YAML collection at ".concat(_, ". Remaining path: ").concat(v)); + } + } + toJSON() { + return null; + } + toString(o, l, _, v) { + let { blockItem: b, flowChars: w, isMap: A, itemIndent: N } = l, { indent: Y, indentStep: W, stringify: U } = o, H = this.type === e.Type.FLOW_MAP || this.type === e.Type.FLOW_SEQ || o.inFlow; + H && (N += W); + let oe = A && this.hasAllNullValues(); + o = Object.assign({}, o, { allNullValues: oe, indent: N, inFlow: H, type: null }); + let le = false, Z = false, ee = this.items.reduce((de, re, he) => { + let ce; + re && (!le && re.spaceBefore && de.push({ type: "comment", str: "" }), re.commentBefore && re.commentBefore.match(/^.*$/gm).forEach((Ie) => { + de.push({ type: "comment", str: "#".concat(Ie) }); + }), re.comment && (ce = re.comment), H && (!le && re.spaceBefore || re.commentBefore || re.comment || re.key && (re.key.commentBefore || re.key.comment) || re.value && (re.value.commentBefore || re.value.comment)) && (Z = true)), le = false; + let fe = U(re, o, () => ce = null, () => le = true); + return H && !Z && fe.includes(` +`) && (Z = true), H && he < this.items.length - 1 && (fe += ","), fe = c(fe, N, ce), le && (ce || H) && (le = false), de.push({ type: "item", str: fe }), de; + }, []), X; + if (ee.length === 0) + X = w.start + w.end; + else if (H) { + let { start: de, end: re } = w, he = ee.map((ce) => ce.str); + if (Z || he.reduce((ce, fe) => ce + fe.length + 2, 2) > S.maxFlowStringSingleLineLength) { + X = de; + for (let ce of he) + X += ce ? ` +`.concat(W).concat(Y).concat(ce) : ` +`; + X += ` +`.concat(Y).concat(re); + } else + X = "".concat(de, " ").concat(he.join(" "), " ").concat(re); + } else { + let de = ee.map(b); + X = de.shift(); + for (let re of de) + X += re ? ` +`.concat(Y).concat(re) : ` +`; + } + return this.comment ? (X += ` +` + this.comment.replace(/^/gm, "".concat(Y, "#")), _ && _()) : le && v && v(), X; + } + }; + e._defineProperty(S, "maxFlowStringSingleLineLength", 60); + function M(o) { + let l = o instanceof y ? o.value : o; + return l && typeof l == "string" && (l = Number(l)), Number.isInteger(l) && l >= 0 ? l : null; + } + var T = class extends S { + add(o) { + this.items.push(o); + } + delete(o) { + let l = M(o); + return typeof l != "number" ? false : this.items.splice(l, 1).length > 0; + } + get(o, l) { + let _ = M(o); + if (typeof _ != "number") + return; + let v = this.items[_]; + return !l && v instanceof y ? v.value : v; + } + has(o) { + let l = M(o); + return typeof l == "number" && l < this.items.length; + } + set(o, l) { + let _ = M(o); + if (typeof _ != "number") + throw new Error("Expected a valid index, not ".concat(o, ".")); + this.items[_] = l; + } + toJSON(o, l) { + let _ = []; + l && l.onCreate && l.onCreate(_); + let v = 0; + for (let b of this.items) + _.push(d(b, String(v++), l)); + return _; + } + toString(o, l, _) { + return o ? super.toString(o, { blockItem: (v) => v.type === "comment" ? v.str : "- ".concat(v.str), flowChars: { start: "[", end: "]" }, isMap: false, itemIndent: (o.indent || "") + " " }, l, _) : JSON.stringify(this); + } + }, P = (o, l, _) => l === null ? "" : typeof l != "object" ? String(l) : o instanceof h && _ && _.doc ? o.toString({ anchors: /* @__PURE__ */ Object.create(null), doc: _.doc, indent: "", indentStep: _.indentStep, inFlow: true, inStringifyKey: true, stringify: _.stringify }) : JSON.stringify(l), C = class extends h { + constructor(o) { + let l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + super(), this.key = o, this.value = l, this.type = C.Type.PAIR; + } + get commentBefore() { + return this.key instanceof h ? this.key.commentBefore : void 0; + } + set commentBefore(o) { + if (this.key == null && (this.key = new y(null)), this.key instanceof h) + this.key.commentBefore = o; + else { + let l = "Pair.commentBefore is an alias for Pair.key.commentBefore. To set it, the key must be a Node."; + throw new Error(l); + } + } + addToJSMap(o, l) { + let _ = d(this.key, "", o); + if (l instanceof Map) { + let v = d(this.value, _, o); + l.set(_, v); + } else if (l instanceof Set) + l.add(_); + else { + let v = P(this.key, _, o), b = d(this.value, v, o); + v in l ? Object.defineProperty(l, v, { value: b, writable: true, enumerable: true, configurable: true }) : l[v] = b; + } + return l; + } + toJSON(o, l) { + let _ = l && l.mapAsMap ? /* @__PURE__ */ new Map() : {}; + return this.addToJSMap(l, _); + } + toString(o, l, _) { + if (!o || !o.doc) + return JSON.stringify(this); + let { indent: v, indentSeq: b, simpleKeys: w } = o.doc.options, { key: A, value: N } = this, Y = A instanceof h && A.comment; + if (w) { + if (Y) + throw new Error("With simple keys, key nodes cannot have comments"); + if (A instanceof S) { + let ce = "With simple keys, collection cannot be used as a key value"; + throw new Error(ce); + } + } + let W = !w && (!A || Y || (A instanceof h ? A instanceof S || A.type === e.Type.BLOCK_FOLDED || A.type === e.Type.BLOCK_LITERAL : typeof A == "object")), { doc: U, indent: H, indentStep: oe, stringify: le } = o; + o = Object.assign({}, o, { implicitKey: !W, indent: H + oe }); + let Z = false, ee = le(A, o, () => Y = null, () => Z = true); + if (ee = c(ee, o.indent, Y), !W && ee.length > 1024) { + if (w) + throw new Error("With simple keys, single line scalar must not span more than 1024 characters"); + W = true; + } + if (o.allNullValues && !w) + return this.comment ? (ee = c(ee, o.indent, this.comment), l && l()) : Z && !Y && _ && _(), o.inFlow && !W ? ee : "? ".concat(ee); + ee = W ? "? ".concat(ee, ` +`).concat(H, ":") : "".concat(ee, ":"), this.comment && (ee = c(ee, o.indent, this.comment), l && l()); + let X = "", de = null; + if (N instanceof h) { + if (N.spaceBefore && (X = ` +`), N.commentBefore) { + let ce = N.commentBefore.replace(/^/gm, "".concat(o.indent, "#")); + X += ` +`.concat(ce); + } + de = N.comment; + } else + N && typeof N == "object" && (N = U.schema.createNode(N, true)); + o.implicitKey = false, !W && !this.comment && N instanceof y && (o.indentAtStart = ee.length + 1), Z = false, !b && v >= 2 && !o.inFlow && !W && N instanceof T && N.type !== e.Type.FLOW_SEQ && !N.tag && !U.anchors.getName(N) && (o.indent = o.indent.substr(2)); + let re = le(N, o, () => de = null, () => Z = true), he = " "; + return X || this.comment ? he = "".concat(X, ` +`).concat(o.indent) : !W && N instanceof S ? (!(re[0] === "[" || re[0] === "{") || re.includes(` +`)) && (he = ` +`.concat(o.indent)) : re[0] === ` +` && (he = ""), Z && !de && _ && _(), c(ee + he + re, o.indent, de); + } + }; + e._defineProperty(C, "Type", { PAIR: "PAIR", MERGE_PAIR: "MERGE_PAIR" }); + var q = (o, l) => { + if (o instanceof R) { + let _ = l.get(o.source); + return _.count * _.aliasCount; + } else if (o instanceof S) { + let _ = 0; + for (let v of o.items) { + let b = q(v, l); + b > _ && (_ = b); + } + return _; + } else if (o instanceof C) { + let _ = q(o.key, l), v = q(o.value, l); + return Math.max(_, v); + } + return 1; + }, R = class extends h { + static stringify(o, l) { + let { range: _, source: v } = o, { anchors: b, doc: w, implicitKey: A, inStringifyKey: N } = l, Y = Object.keys(b).find((U) => b[U] === v); + if (!Y && N && (Y = w.anchors.getName(v) || w.anchors.newName()), Y) + return "*".concat(Y).concat(A ? " " : ""); + let W = w.anchors.getName(v) ? "Alias node must be after source node" : "Source node not found for alias node"; + throw new Error("".concat(W, " [").concat(_, "]")); + } + constructor(o) { + super(), this.source = o, this.type = e.Type.ALIAS; + } + set tag(o) { + throw new Error("Alias nodes cannot have tags"); + } + toJSON(o, l) { + if (!l) + return d(this.source, o, l); + let { anchors: _, maxAliasCount: v } = l, b = _.get(this.source); + if (!b || b.res === void 0) { + let w = "This should not happen: Alias anchor was not resolved?"; + throw this.cstNode ? new e.YAMLReferenceError(this.cstNode, w) : new ReferenceError(w); + } + if (v >= 0 && (b.count += 1, b.aliasCount === 0 && (b.aliasCount = q(this.source, _)), b.count * b.aliasCount > v)) { + let w = "Excessive alias count indicates a resource exhaustion attack"; + throw this.cstNode ? new e.YAMLReferenceError(this.cstNode, w) : new ReferenceError(w); + } + return b.res; + } + toString(o) { + return R.stringify(this, o); + } + }; + e._defineProperty(R, "default", true); + function j(o, l) { + let _ = l instanceof y ? l.value : l; + for (let v of o) + if (v instanceof C && (v.key === l || v.key === _ || v.key && v.key.value === _)) + return v; + } + var K = class extends S { + add(o, l) { + o ? o instanceof C || (o = new C(o.key || o, o.value)) : o = new C(o); + let _ = j(this.items, o.key), v = this.schema && this.schema.sortMapEntries; + if (_) + if (l) + _.value = o.value; + else + throw new Error("Key ".concat(o.key, " already set")); + else if (v) { + let b = this.items.findIndex((w) => v(o, w) < 0); + b === -1 ? this.items.push(o) : this.items.splice(b, 0, o); + } else + this.items.push(o); + } + delete(o) { + let l = j(this.items, o); + return l ? this.items.splice(this.items.indexOf(l), 1).length > 0 : false; + } + get(o, l) { + let _ = j(this.items, o), v = _ && _.value; + return !l && v instanceof y ? v.value : v; + } + has(o) { + return !!j(this.items, o); + } + set(o, l) { + this.add(new C(o, l), true); + } + toJSON(o, l, _) { + let v = _ ? new _() : l && l.mapAsMap ? /* @__PURE__ */ new Map() : {}; + l && l.onCreate && l.onCreate(v); + for (let b of this.items) + b.addToJSMap(l, v); + return v; + } + toString(o, l, _) { + if (!o) + return JSON.stringify(this); + for (let v of this.items) + if (!(v instanceof C)) + throw new Error("Map items must all be pairs; found ".concat(JSON.stringify(v), " instead")); + return super.toString(o, { blockItem: (v) => v.str, flowChars: { start: "{", end: "}" }, isMap: true, itemIndent: o.indent || "" }, l, _); + } + }, m = "<<", a = class extends C { + constructor(o) { + if (o instanceof C) { + let l = o.value; + l instanceof T || (l = new T(), l.items.push(o.value), l.range = o.value.range), super(o.key, l), this.range = o.range; + } else + super(new y(m), new T()); + this.type = C.Type.MERGE_PAIR; + } + addToJSMap(o, l) { + for (let { source: _ } of this.value.items) { + if (!(_ instanceof K)) + throw new Error("Merge sources must be maps"); + let v = _.toJSON(null, o, Map); + for (let [b, w] of v) + l instanceof Map ? l.has(b) || l.set(b, w) : l instanceof Set ? l.add(b) : Object.prototype.hasOwnProperty.call(l, b) || Object.defineProperty(l, b, { value: w, writable: true, enumerable: true, configurable: true }); + } + return l; + } + toString(o, l) { + let _ = this.value; + if (_.items.length > 1) + return super.toString(o, l); + this.value = _.items[0]; + let v = super.toString(o, l); + return this.value = _, v; + } + }, t = { defaultType: e.Type.BLOCK_LITERAL, lineWidth: 76 }, s = { trueStr: "true", falseStr: "false" }, i = { asBigInt: false }, f = { nullStr: "null" }, g = { defaultType: e.Type.PLAIN, doubleQuoted: { jsonEncoding: false, minMultiLineLength: 40 }, fold: { lineWidth: 80, minContentWidth: 20 } }; + function u(o, l, _) { + for (let { format: v, test: b, resolve: w } of l) + if (b) { + let A = o.match(b); + if (A) { + let N = w.apply(null, A); + return N instanceof y || (N = new y(N)), v && (N.format = v), N; + } + } + return _ && (o = _(o)), new y(o); + } + var p = "flow", L = "block", k = "quoted", B = (o, l) => { + let _ = o[l + 1]; + for (; _ === " " || _ === " "; ) { + do + _ = o[l += 1]; + while (_ && _ !== ` +`); + _ = o[l + 1]; + } + return l; + }; + function $(o, l, _, v) { + let { indentAtStart: b, lineWidth: w = 80, minContentWidth: A = 20, onFold: N, onOverflow: Y } = v; + if (!w || w < 0) + return o; + let W = Math.max(1 + A, 1 + w - l.length); + if (o.length <= W) + return o; + let U = [], H = {}, oe = w - l.length; + typeof b == "number" && (b > w - Math.max(2, A) ? U.push(0) : oe = w - b); + let le, Z, ee = false, X = -1, de = -1, re = -1; + _ === L && (X = B(o, X), X !== -1 && (oe = X + W)); + for (let ce; ce = o[X += 1]; ) { + if (_ === k && ce === "\\") { + switch (de = X, o[X + 1]) { + case "x": + X += 3; + break; + case "u": + X += 5; + break; + case "U": + X += 9; + break; + default: + X += 1; + } + re = X; + } + if (ce === ` +`) + _ === L && (X = B(o, X)), oe = X + W, le = void 0; + else { + if (ce === " " && Z && Z !== " " && Z !== ` +` && Z !== " ") { + let fe = o[X + 1]; + fe && fe !== " " && fe !== ` +` && fe !== " " && (le = X); + } + if (X >= oe) + if (le) + U.push(le), oe = le + W, le = void 0; + else if (_ === k) { + for (; Z === " " || Z === " "; ) + Z = ce, ce = o[X += 1], ee = true; + let fe = X > re + 1 ? X - 2 : de - 1; + if (H[fe]) + return o; + U.push(fe), H[fe] = true, oe = fe + W, le = void 0; + } else + ee = true; + } + Z = ce; + } + if (ee && Y && Y(), U.length === 0) + return o; + N && N(); + let he = o.slice(0, U[0]); + for (let ce = 0; ce < U.length; ++ce) { + let fe = U[ce], Ie = U[ce + 1] || o.length; + fe === 0 ? he = ` +`.concat(l).concat(o.slice(0, Ie)) : (_ === k && H[fe] && (he += "".concat(o[fe], "\\")), he += ` +`.concat(l).concat(o.slice(fe + 1, Ie))); + } + return he; + } + var Q = (o) => { + let { indentAtStart: l } = o; + return l ? Object.assign({ indentAtStart: l }, g.fold) : g.fold; + }, z = (o) => /^(%|---|\.\.\.)/m.test(o); + function ie(o, l, _) { + if (!l || l < 0) + return false; + let v = l - _, b = o.length; + if (b <= v) + return false; + for (let w = 0, A = 0; w < b; ++w) + if (o[w] === ` +`) { + if (w - A > v) + return true; + if (A = w + 1, b - A <= v) + return false; + } + return true; + } + function ue(o, l) { + let { implicitKey: _ } = l, { jsonEncoding: v, minMultiLineLength: b } = g.doubleQuoted, w = JSON.stringify(o); + if (v) + return w; + let A = l.indent || (z(o) ? " " : ""), N = "", Y = 0; + for (let W = 0, U = w[W]; U; U = w[++W]) + if (U === " " && w[W + 1] === "\\" && w[W + 2] === "n" && (N += w.slice(Y, W) + "\\ ", W += 1, Y = W, U = "\\"), U === "\\") + switch (w[W + 1]) { + case "u": + { + N += w.slice(Y, W); + let H = w.substr(W + 2, 4); + switch (H) { + case "0000": + N += "\\0"; + break; + case "0007": + N += "\\a"; + break; + case "000b": + N += "\\v"; + break; + case "001b": + N += "\\e"; + break; + case "0085": + N += "\\N"; + break; + case "00a0": + N += "\\_"; + break; + case "2028": + N += "\\L"; + break; + case "2029": + N += "\\P"; + break; + default: + H.substr(0, 2) === "00" ? N += "\\x" + H.substr(2) : N += w.substr(W, 6); + } + W += 5, Y = W + 1; + } + break; + case "n": + if (_ || w[W + 2] === '"' || w.length < b) + W += 1; + else { + for (N += w.slice(Y, W) + ` + +`; w[W + 2] === "\\" && w[W + 3] === "n" && w[W + 4] !== '"'; ) + N += ` +`, W += 2; + N += A, w[W + 2] === " " && (N += "\\"), W += 1, Y = W + 1; + } + break; + default: + W += 1; + } + return N = Y ? N + w.slice(Y) : w, _ ? N : $(N, A, k, Q(l)); + } + function pe(o, l) { + if (l.implicitKey) { + if (/\n/.test(o)) + return ue(o, l); + } else if (/[ \t]\n|\n[ \t]/.test(o)) + return ue(o, l); + let _ = l.indent || (z(o) ? " " : ""), v = "'" + o.replace(/'/g, "''").replace(/\n+/g, `$& +`.concat(_)) + "'"; + return l.implicitKey ? v : $(v, _, p, Q(l)); + } + function ge(o, l, _, v) { + let { comment: b, type: w, value: A } = o; + if (/\n[\t ]+$/.test(A) || /^\s*$/.test(A)) + return ue(A, l); + let N = l.indent || (l.forceBlockIndent || z(A) ? " " : ""), Y = N ? "2" : "1", W = w === e.Type.BLOCK_FOLDED ? false : w === e.Type.BLOCK_LITERAL ? true : !ie(A, g.fold.lineWidth, N.length), U = W ? "|" : ">"; + if (!A) + return U + ` +`; + let H = "", oe = ""; + if (A = A.replace(/[\n\t ]*$/, (Z) => { + let ee = Z.indexOf(` +`); + return ee === -1 ? U += "-" : (A === Z || ee !== Z.length - 1) && (U += "+", v && v()), oe = Z.replace(/\n$/, ""), ""; + }).replace(/^[\n ]*/, (Z) => { + Z.indexOf(" ") !== -1 && (U += Y); + let ee = Z.match(/ +$/); + return ee ? (H = Z.slice(0, -ee[0].length), ee[0]) : (H = Z, ""); + }), oe && (oe = oe.replace(/\n+(?!\n|$)/g, "$&".concat(N))), H && (H = H.replace(/\n+/g, "$&".concat(N))), b && (U += " #" + b.replace(/ ?[\r\n]+/g, " "), _ && _()), !A) + return "".concat(U).concat(Y, ` +`).concat(N).concat(oe); + if (W) + return A = A.replace(/\n+/g, "$&".concat(N)), "".concat(U, ` +`).concat(N).concat(H).concat(A).concat(oe); + A = A.replace(/\n+/g, ` +$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, "$1$2").replace(/\n+/g, "$&".concat(N)); + let le = $("".concat(H).concat(A).concat(oe), N, L, g.fold); + return "".concat(U, ` +`).concat(N).concat(le); + } + function O(o, l, _, v) { + let { comment: b, type: w, value: A } = o, { actualString: N, implicitKey: Y, indent: W, inFlow: U } = l; + if (Y && /[\n[\]{},]/.test(A) || U && /[[\]{},]/.test(A)) + return ue(A, l); + if (!A || /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(A)) + return Y || U || A.indexOf(` +`) === -1 ? A.indexOf('"') !== -1 && A.indexOf("'") === -1 ? pe(A, l) : ue(A, l) : ge(o, l, _, v); + if (!Y && !U && w !== e.Type.PLAIN && A.indexOf(` +`) !== -1) + return ge(o, l, _, v); + if (W === "" && z(A)) + return l.forceBlockIndent = true, ge(o, l, _, v); + let H = A.replace(/\n+/g, `$& +`.concat(W)); + if (N) { + let { tags: le } = l.doc.schema; + if (typeof u(H, le, le.scalarFallback).value != "string") + return ue(A, l); + } + let oe = Y ? H : $(H, W, p, Q(l)); + return b && !U && (oe.indexOf(` +`) !== -1 || b.indexOf(` +`) !== -1) ? (_ && _(), n(oe, W, b)) : oe; + } + function V(o, l, _, v) { + let { defaultType: b } = g, { implicitKey: w, inFlow: A } = l, { type: N, value: Y } = o; + typeof Y != "string" && (Y = String(Y), o = Object.assign({}, o, { value: Y })); + let W = (H) => { + switch (H) { + case e.Type.BLOCK_FOLDED: + case e.Type.BLOCK_LITERAL: + return ge(o, l, _, v); + case e.Type.QUOTE_DOUBLE: + return ue(Y, l); + case e.Type.QUOTE_SINGLE: + return pe(Y, l); + case e.Type.PLAIN: + return O(o, l, _, v); + default: + return null; + } + }; + (N !== e.Type.QUOTE_DOUBLE && /[\x00-\x08\x0b-\x1f\x7f-\x9f]/.test(Y) || (w || A) && (N === e.Type.BLOCK_FOLDED || N === e.Type.BLOCK_LITERAL)) && (N = e.Type.QUOTE_DOUBLE); + let U = W(N); + if (U === null && (U = W(b), U === null)) + throw new Error("Unsupported default string type ".concat(b)); + return U; + } + function J(o) { + let { format: l, minFractionDigits: _, tag: v, value: b } = o; + if (typeof b == "bigint") + return String(b); + if (!isFinite(b)) + return isNaN(b) ? ".nan" : b < 0 ? "-.inf" : ".inf"; + let w = JSON.stringify(b); + if (!l && _ && (!v || v === "tag:yaml.org,2002:float") && /^\d/.test(w)) { + let A = w.indexOf("."); + A < 0 && (A = w.length, w += "."); + let N = _ - (w.length - A - 1); + for (; N-- > 0; ) + w += "0"; + } + return w; + } + function x(o, l) { + let _, v; + switch (l.type) { + case e.Type.FLOW_MAP: + _ = "}", v = "flow map"; + break; + case e.Type.FLOW_SEQ: + _ = "]", v = "flow sequence"; + break; + default: + o.push(new e.YAMLSemanticError(l, "Not a flow collection!?")); + return; + } + let b; + for (let w = l.items.length - 1; w >= 0; --w) { + let A = l.items[w]; + if (!A || A.type !== e.Type.COMMENT) { + b = A; + break; + } + } + if (b && b.char !== _) { + let w = "Expected ".concat(v, " to end with ").concat(_), A; + typeof b.offset == "number" ? (A = new e.YAMLSemanticError(l, w), A.offset = b.offset + 1) : (A = new e.YAMLSemanticError(b, w), b.range && b.range.end && (A.offset = b.range.end - b.range.start)), o.push(A); + } + } + function G(o, l) { + let _ = l.context.src[l.range.start - 1]; + if (_ !== ` +` && _ !== " " && _ !== " ") { + let v = "Comments must be separated from other tokens by white space characters"; + o.push(new e.YAMLSemanticError(l, v)); + } + } + function ne(o, l) { + let _ = String(l), v = _.substr(0, 8) + "..." + _.substr(-8); + return new e.YAMLSemanticError(o, 'The "'.concat(v, '" key is too long')); + } + function _e(o, l) { + for (let { afterKey: _, before: v, comment: b } of l) { + let w = o.items[v]; + w ? (_ && w.value && (w = w.value), b === void 0 ? (_ || !w.commentBefore) && (w.spaceBefore = true) : w.commentBefore ? w.commentBefore += ` +` + b : w.commentBefore = b) : b !== void 0 && (o.comment ? o.comment += ` +` + b : o.comment = b); + } + } + function ye(o, l) { + let _ = l.strValue; + return _ ? typeof _ == "string" ? _ : (_.errors.forEach((v) => { + v.source || (v.source = l), o.errors.push(v); + }), _.str) : ""; + } + function be(o, l) { + let { handle: _, suffix: v } = l.tag, b = o.tagPrefixes.find((w) => w.handle === _); + if (!b) { + let w = o.getDefaults().tagPrefixes; + if (w && (b = w.find((A) => A.handle === _)), !b) + throw new e.YAMLSemanticError(l, "The ".concat(_, " tag handle is non-default and was not declared.")); + } + if (!v) + throw new e.YAMLSemanticError(l, "The ".concat(_, " tag has no suffix.")); + if (_ === "!" && (o.version || o.options.version) === "1.0") { + if (v[0] === "^") + return o.warnings.push(new e.YAMLWarning(l, "YAML 1.0 ^ tag expansion is not supported")), v; + if (/[:/]/.test(v)) { + let w = v.match(/^([a-z0-9-]+)\/(.*)/i); + return w ? "tag:".concat(w[1], ".yaml.org,2002:").concat(w[2]) : "tag:".concat(v); + } + } + return b.prefix + decodeURIComponent(v); + } + function ve(o, l) { + let { tag: _, type: v } = l, b = false; + if (_) { + let { handle: w, suffix: A, verbatim: N } = _; + if (N) { + if (N !== "!" && N !== "!!") + return N; + let Y = "Verbatim tags aren't resolved, so ".concat(N, " is invalid."); + o.errors.push(new e.YAMLSemanticError(l, Y)); + } else if (w === "!" && !A) + b = true; + else + try { + return be(o, l); + } catch (Y) { + o.errors.push(Y); + } + } + switch (v) { + case e.Type.BLOCK_FOLDED: + case e.Type.BLOCK_LITERAL: + case e.Type.QUOTE_DOUBLE: + case e.Type.QUOTE_SINGLE: + return e.defaultTags.STR; + case e.Type.FLOW_MAP: + case e.Type.MAP: + return e.defaultTags.MAP; + case e.Type.FLOW_SEQ: + case e.Type.SEQ: + return e.defaultTags.SEQ; + case e.Type.PLAIN: + return b ? e.defaultTags.STR : null; + default: + return null; + } + } + function Ne(o, l, _) { + let { tags: v } = o.schema, b = []; + for (let A of v) + if (A.tag === _) + if (A.test) + b.push(A); + else { + let N = A.resolve(o, l); + return N instanceof S ? N : new y(N); + } + let w = ye(o, l); + return typeof w == "string" && b.length > 0 ? u(w, b, v.scalarFallback) : null; + } + function Pe(o) { + let { type: l } = o; + switch (l) { + case e.Type.FLOW_MAP: + case e.Type.MAP: + return e.defaultTags.MAP; + case e.Type.FLOW_SEQ: + case e.Type.SEQ: + return e.defaultTags.SEQ; + default: + return e.defaultTags.STR; + } + } + function ct(o, l, _) { + try { + let v = Ne(o, l, _); + if (v) + return _ && l.tag && (v.tag = _), v; + } catch (v) { + return v.source || (v.source = l), o.errors.push(v), null; + } + try { + let v = Pe(l); + if (!v) + throw new Error("The tag ".concat(_, " is unavailable")); + let b = "The tag ".concat(_, " is unavailable, falling back to ").concat(v); + o.warnings.push(new e.YAMLWarning(l, b)); + let w = Ne(o, l, v); + return w.tag = _, w; + } catch (v) { + let b = new e.YAMLReferenceError(l, v.message); + return b.stack = v.stack, o.errors.push(b), null; + } + } + var ut = (o) => { + if (!o) + return false; + let { type: l } = o; + return l === e.Type.MAP_KEY || l === e.Type.MAP_VALUE || l === e.Type.SEQ_ITEM; + }; + function ft(o, l) { + let _ = { before: [], after: [] }, v = false, b = false, w = ut(l.context.parent) ? l.context.parent.props.concat(l.props) : l.props; + for (let { start: A, end: N } of w) + switch (l.context.src[A]) { + case e.Char.COMMENT: { + if (!l.commentHasRequiredWhitespace(A)) { + let H = "Comments must be separated from other tokens by white space characters"; + o.push(new e.YAMLSemanticError(l, H)); + } + let { header: Y, valueRange: W } = l; + (W && (A > W.start || Y && A > Y.start) ? _.after : _.before).push(l.context.src.slice(A + 1, N)); + break; + } + case e.Char.ANCHOR: + if (v) { + let Y = "A node can have at most one anchor"; + o.push(new e.YAMLSemanticError(l, Y)); + } + v = true; + break; + case e.Char.TAG: + if (b) { + let Y = "A node can have at most one tag"; + o.push(new e.YAMLSemanticError(l, Y)); + } + b = true; + break; + } + return { comments: _, hasAnchor: v, hasTag: b }; + } + function mt(o, l) { + let { anchors: _, errors: v, schema: b } = o; + if (l.type === e.Type.ALIAS) { + let A = l.rawValue, N = _.getNode(A); + if (!N) { + let W = "Aliased anchor not found: ".concat(A); + return v.push(new e.YAMLReferenceError(l, W)), null; + } + let Y = new R(N); + return _._cstAliases.push(Y), Y; + } + let w = ve(o, l); + if (w) + return ct(o, l, w); + if (l.type !== e.Type.PLAIN) { + let A = "Failed to resolve ".concat(l.type, " node here"); + return v.push(new e.YAMLSyntaxError(l, A)), null; + } + try { + let A = ye(o, l); + return u(A, b.tags, b.tags.scalarFallback); + } catch (A) { + return A.source || (A.source = l), v.push(A), null; + } + } + function we(o, l) { + if (!l) + return null; + l.error && o.errors.push(l.error); + let { comments: _, hasAnchor: v, hasTag: b } = ft(o.errors, l); + if (v) { + let { anchors: A } = o, N = l.anchor, Y = A.getNode(N); + Y && (A.map[A.newName(N)] = Y), A.map[N] = l; + } + if (l.type === e.Type.ALIAS && (v || b)) { + let A = "An alias node must not specify any properties"; + o.errors.push(new e.YAMLSemanticError(l, A)); + } + let w = mt(o, l); + if (w) { + w.range = [l.range.start, l.range.end], o.options.keepCstNodes && (w.cstNode = l), o.options.keepNodeTypes && (w.type = l.type); + let A = _.before.join(` +`); + A && (w.commentBefore = w.commentBefore ? "".concat(w.commentBefore, ` +`).concat(A) : A); + let N = _.after.join(` +`); + N && (w.comment = w.comment ? "".concat(w.comment, ` +`).concat(N) : N); + } + return l.resolved = w; + } + function dt(o, l) { + if (l.type !== e.Type.MAP && l.type !== e.Type.FLOW_MAP) { + let A = "A ".concat(l.type, " node cannot be resolved as a mapping"); + return o.errors.push(new e.YAMLSyntaxError(l, A)), null; + } + let { comments: _, items: v } = l.type === e.Type.FLOW_MAP ? _t(o, l) : pt(o, l), b = new K(); + b.items = v, _e(b, _); + let w = false; + for (let A = 0; A < v.length; ++A) { + let { key: N } = v[A]; + if (N instanceof S && (w = true), o.schema.merge && N && N.value === m) { + v[A] = new a(v[A]); + let Y = v[A].value.items, W = null; + Y.some((U) => { + if (U instanceof R) { + let { type: H } = U.source; + return H === e.Type.MAP || H === e.Type.FLOW_MAP ? false : W = "Merge nodes aliases can only point to maps"; + } + return W = "Merge nodes can only have Alias nodes as values"; + }), W && o.errors.push(new e.YAMLSemanticError(l, W)); + } else + for (let Y = A + 1; Y < v.length; ++Y) { + let { key: W } = v[Y]; + if (N === W || N && W && Object.prototype.hasOwnProperty.call(N, "value") && N.value === W.value) { + let U = 'Map keys must be unique; "'.concat(N, '" is repeated'); + o.errors.push(new e.YAMLSemanticError(l, U)); + break; + } + } + } + if (w && !o.options.mapAsMap) { + let A = "Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."; + o.warnings.push(new e.YAMLWarning(l, A)); + } + return l.resolved = b, b; + } + var ht = (o) => { + let { context: { lineStart: l, node: _, src: v }, props: b } = o; + if (b.length === 0) + return false; + let { start: w } = b[0]; + if (_ && w > _.valueRange.start || v[w] !== e.Char.COMMENT) + return false; + for (let A = l; A < w; ++A) + if (v[A] === ` +`) + return false; + return true; + }; + function gt(o, l) { + if (!ht(o)) + return; + let _ = o.getPropValue(0, e.Char.COMMENT, true), v = false, b = l.value.commentBefore; + if (b && b.startsWith(_)) + l.value.commentBefore = b.substr(_.length + 1), v = true; + else { + let w = l.value.comment; + !o.node && w && w.startsWith(_) && (l.value.comment = w.substr(_.length + 1), v = true); + } + v && (l.comment = _); + } + function pt(o, l) { + let _ = [], v = [], b, w = null; + for (let A = 0; A < l.items.length; ++A) { + let N = l.items[A]; + switch (N.type) { + case e.Type.BLANK_LINE: + _.push({ afterKey: !!b, before: v.length }); + break; + case e.Type.COMMENT: + _.push({ afterKey: !!b, before: v.length, comment: N.comment }); + break; + case e.Type.MAP_KEY: + b !== void 0 && v.push(new C(b)), N.error && o.errors.push(N.error), b = we(o, N.node), w = null; + break; + case e.Type.MAP_VALUE: + { + if (b === void 0 && (b = null), N.error && o.errors.push(N.error), !N.context.atLineStart && N.node && N.node.type === e.Type.MAP && !N.node.context.atLineStart) { + let U = "Nested mappings are not allowed in compact mappings"; + o.errors.push(new e.YAMLSemanticError(N.node, U)); + } + let Y = N.node; + if (!Y && N.props.length > 0) { + Y = new e.PlainValue(e.Type.PLAIN, []), Y.context = { parent: N, src: N.context.src }; + let U = N.range.start + 1; + if (Y.range = { start: U, end: U }, Y.valueRange = { start: U, end: U }, typeof N.range.origStart == "number") { + let H = N.range.origStart + 1; + Y.range.origStart = Y.range.origEnd = H, Y.valueRange.origStart = Y.valueRange.origEnd = H; + } + } + let W = new C(b, we(o, Y)); + gt(N, W), v.push(W), b && typeof w == "number" && N.range.start > w + 1024 && o.errors.push(ne(l, b)), b = void 0, w = null; + } + break; + default: + b !== void 0 && v.push(new C(b)), b = we(o, N), w = N.range.start, N.error && o.errors.push(N.error); + e: + for (let Y = A + 1; ; ++Y) { + let W = l.items[Y]; + switch (W && W.type) { + case e.Type.BLANK_LINE: + case e.Type.COMMENT: + continue e; + case e.Type.MAP_VALUE: + break e; + default: { + let U = "Implicit map keys need to be followed by map values"; + o.errors.push(new e.YAMLSemanticError(N, U)); + break e; + } + } + } + if (N.valueRangeContainsNewline) { + let Y = "Implicit map keys need to be on a single line"; + o.errors.push(new e.YAMLSemanticError(N, Y)); + } + } + } + return b !== void 0 && v.push(new C(b)), { comments: _, items: v }; + } + function _t(o, l) { + let _ = [], v = [], b, w = false, A = "{"; + for (let N = 0; N < l.items.length; ++N) { + let Y = l.items[N]; + if (typeof Y.char == "string") { + let { char: W, offset: U } = Y; + if (W === "?" && b === void 0 && !w) { + w = true, A = ":"; + continue; + } + if (W === ":") { + if (b === void 0 && (b = null), A === ":") { + A = ","; + continue; + } + } else if (w && (b === void 0 && W !== "," && (b = null), w = false), b !== void 0 && (v.push(new C(b)), b = void 0, W === ",")) { + A = ":"; + continue; + } + if (W === "}") { + if (N === l.items.length - 1) + continue; + } else if (W === A) { + A = ":"; + continue; + } + let H = "Flow map contains an unexpected ".concat(W), oe = new e.YAMLSyntaxError(l, H); + oe.offset = U, o.errors.push(oe); + } else + Y.type === e.Type.BLANK_LINE ? _.push({ afterKey: !!b, before: v.length }) : Y.type === e.Type.COMMENT ? (G(o.errors, Y), _.push({ afterKey: !!b, before: v.length, comment: Y.comment })) : b === void 0 ? (A === "," && o.errors.push(new e.YAMLSemanticError(Y, "Separator , missing in flow map")), b = we(o, Y)) : (A !== "," && o.errors.push(new e.YAMLSemanticError(Y, "Indicator : missing in flow map entry")), v.push(new C(b, we(o, Y))), b = void 0, w = false); + } + return x(o.errors, l), b !== void 0 && v.push(new C(b)), { comments: _, items: v }; + } + function vt(o, l) { + if (l.type !== e.Type.SEQ && l.type !== e.Type.FLOW_SEQ) { + let w = "A ".concat(l.type, " node cannot be resolved as a sequence"); + return o.errors.push(new e.YAMLSyntaxError(l, w)), null; + } + let { comments: _, items: v } = l.type === e.Type.FLOW_SEQ ? bt(o, l) : yt(o, l), b = new T(); + if (b.items = v, _e(b, _), !o.options.mapAsMap && v.some((w) => w instanceof C && w.key instanceof S)) { + let w = "Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."; + o.warnings.push(new e.YAMLWarning(l, w)); + } + return l.resolved = b, b; + } + function yt(o, l) { + let _ = [], v = []; + for (let b = 0; b < l.items.length; ++b) { + let w = l.items[b]; + switch (w.type) { + case e.Type.BLANK_LINE: + _.push({ before: v.length }); + break; + case e.Type.COMMENT: + _.push({ comment: w.comment, before: v.length }); + break; + case e.Type.SEQ_ITEM: + if (w.error && o.errors.push(w.error), v.push(we(o, w.node)), w.hasProps) { + let A = "Sequence items cannot have tags or anchors before the - indicator"; + o.errors.push(new e.YAMLSemanticError(w, A)); + } + break; + default: + w.error && o.errors.push(w.error), o.errors.push(new e.YAMLSyntaxError(w, "Unexpected ".concat(w.type, " node in sequence"))); + } + } + return { comments: _, items: v }; + } + function bt(o, l) { + let _ = [], v = [], b = false, w, A = null, N = "[", Y = null; + for (let W = 0; W < l.items.length; ++W) { + let U = l.items[W]; + if (typeof U.char == "string") { + let { char: H, offset: oe } = U; + if (H !== ":" && (b || w !== void 0) && (b && w === void 0 && (w = N ? v.pop() : null), v.push(new C(w)), b = false, w = void 0, A = null), H === N) + N = null; + else if (!N && H === "?") + b = true; + else if (N !== "[" && H === ":" && w === void 0) { + if (N === ",") { + if (w = v.pop(), w instanceof C) { + let le = "Chaining flow sequence pairs is invalid", Z = new e.YAMLSemanticError(l, le); + Z.offset = oe, o.errors.push(Z); + } + if (!b && typeof A == "number") { + let le = U.range ? U.range.start : U.offset; + le > A + 1024 && o.errors.push(ne(l, w)); + let { src: Z } = Y.context; + for (let ee = A; ee < le; ++ee) + if (Z[ee] === ` +`) { + let X = "Implicit keys of flow sequence pairs need to be on a single line"; + o.errors.push(new e.YAMLSemanticError(Y, X)); + break; + } + } + } else + w = null; + A = null, b = false, N = null; + } else if (N === "[" || H !== "]" || W < l.items.length - 1) { + let le = "Flow sequence contains an unexpected ".concat(H), Z = new e.YAMLSyntaxError(l, le); + Z.offset = oe, o.errors.push(Z); + } + } else if (U.type === e.Type.BLANK_LINE) + _.push({ before: v.length }); + else if (U.type === e.Type.COMMENT) + G(o.errors, U), _.push({ comment: U.comment, before: v.length }); + else { + if (N) { + let oe = "Expected a ".concat(N, " in flow sequence"); + o.errors.push(new e.YAMLSemanticError(U, oe)); + } + let H = we(o, U); + w === void 0 ? (v.push(H), Y = U) : (v.push(new C(w, H)), w = void 0), A = U.range.start, N = ","; + } + } + return x(o.errors, l), w !== void 0 && v.push(new C(w)), { comments: _, items: v }; + } + r.Alias = R, r.Collection = S, r.Merge = a, r.Node = h, r.Pair = C, r.Scalar = y, r.YAMLMap = K, r.YAMLSeq = T, r.addComment = c, r.binaryOptions = t, r.boolOptions = s, r.findPair = j, r.intOptions = i, r.isEmptyPath = I, r.nullOptions = f, r.resolveMap = dt, r.resolveNode = we, r.resolveSeq = vt, r.resolveString = ye, r.strOptions = g, r.stringifyNumber = J, r.stringifyString = V, r.toJSON = d; + } }), it = F({ "node_modules/yaml/dist/warnings-1000a372.js"(r) { + "use strict"; + D(); + var e = Me(), n = ke(), c = { identify: (u) => u instanceof Uint8Array, default: false, tag: "tag:yaml.org,2002:binary", resolve: (u, p) => { + let L = n.resolveString(u, p); + if (typeof Buffer == "function") + return Buffer.from(L, "base64"); + if (typeof atob == "function") { + let k = atob(L.replace(/[\n\r]/g, "")), B = new Uint8Array(k.length); + for (let $ = 0; $ < k.length; ++$) + B[$] = k.charCodeAt($); + return B; + } else { + let k = "This environment does not support reading binary tags; either Buffer or atob is required"; + return u.errors.push(new e.YAMLReferenceError(p, k)), null; + } + }, options: n.binaryOptions, stringify: (u, p, L, k) => { + let { comment: B, type: $, value: Q } = u, z; + if (typeof Buffer == "function") + z = Q instanceof Buffer ? Q.toString("base64") : Buffer.from(Q.buffer).toString("base64"); + else if (typeof btoa == "function") { + let ie = ""; + for (let ue = 0; ue < Q.length; ++ue) + ie += String.fromCharCode(Q[ue]); + z = btoa(ie); + } else + throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required"); + if ($ || ($ = n.binaryOptions.defaultType), $ === e.Type.QUOTE_DOUBLE) + Q = z; + else { + let { lineWidth: ie } = n.binaryOptions, ue = Math.ceil(z.length / ie), pe = new Array(ue); + for (let ge = 0, O = 0; ge < ue; ++ge, O += ie) + pe[ge] = z.substr(O, ie); + Q = pe.join($ === e.Type.BLOCK_LITERAL ? ` +` : " "); + } + return n.stringifyString({ comment: B, type: $, value: Q }, p, L, k); + } }; + function h(u, p) { + let L = n.resolveSeq(u, p); + for (let k = 0; k < L.items.length; ++k) { + let B = L.items[k]; + if (!(B instanceof n.Pair)) { + if (B instanceof n.YAMLMap) { + if (B.items.length > 1) { + let Q = "Each pair must have its own sequence indicator"; + throw new e.YAMLSemanticError(p, Q); + } + let $ = B.items[0] || new n.Pair(); + B.commentBefore && ($.commentBefore = $.commentBefore ? "".concat(B.commentBefore, ` +`).concat($.commentBefore) : B.commentBefore), B.comment && ($.comment = $.comment ? "".concat(B.comment, ` +`).concat($.comment) : B.comment), B = $; + } + L.items[k] = B instanceof n.Pair ? B : new n.Pair(B); + } + } + return L; + } + function d(u, p, L) { + let k = new n.YAMLSeq(u); + k.tag = "tag:yaml.org,2002:pairs"; + for (let B of p) { + let $, Q; + if (Array.isArray(B)) + if (B.length === 2) + $ = B[0], Q = B[1]; + else + throw new TypeError("Expected [key, value] tuple: ".concat(B)); + else if (B && B instanceof Object) { + let ie = Object.keys(B); + if (ie.length === 1) + $ = ie[0], Q = B[$]; + else + throw new TypeError("Expected { key: value } tuple: ".concat(B)); + } else + $ = B; + let z = u.createPair($, Q, L); + k.items.push(z); + } + return k; + } + var y = { default: false, tag: "tag:yaml.org,2002:pairs", resolve: h, createNode: d }, E = class extends n.YAMLSeq { + constructor() { + super(), e._defineProperty(this, "add", n.YAMLMap.prototype.add.bind(this)), e._defineProperty(this, "delete", n.YAMLMap.prototype.delete.bind(this)), e._defineProperty(this, "get", n.YAMLMap.prototype.get.bind(this)), e._defineProperty(this, "has", n.YAMLMap.prototype.has.bind(this)), e._defineProperty(this, "set", n.YAMLMap.prototype.set.bind(this)), this.tag = E.tag; + } + toJSON(u, p) { + let L = /* @__PURE__ */ new Map(); + p && p.onCreate && p.onCreate(L); + for (let k of this.items) { + let B, $; + if (k instanceof n.Pair ? (B = n.toJSON(k.key, "", p), $ = n.toJSON(k.value, B, p)) : B = n.toJSON(k, "", p), L.has(B)) + throw new Error("Ordered maps must not include duplicate keys"); + L.set(B, $); + } + return L; + } + }; + e._defineProperty(E, "tag", "tag:yaml.org,2002:omap"); + function I(u, p) { + let L = h(u, p), k = []; + for (let { key: B } of L.items) + if (B instanceof n.Scalar) + if (k.includes(B.value)) { + let $ = "Ordered maps must not include duplicate keys"; + throw new e.YAMLSemanticError(p, $); + } else + k.push(B.value); + return Object.assign(new E(), L); + } + function S(u, p, L) { + let k = d(u, p, L), B = new E(); + return B.items = k.items, B; + } + var M = { identify: (u) => u instanceof Map, nodeClass: E, default: false, tag: "tag:yaml.org,2002:omap", resolve: I, createNode: S }, T = class extends n.YAMLMap { + constructor() { + super(), this.tag = T.tag; + } + add(u) { + let p = u instanceof n.Pair ? u : new n.Pair(u); + n.findPair(this.items, p.key) || this.items.push(p); + } + get(u, p) { + let L = n.findPair(this.items, u); + return !p && L instanceof n.Pair ? L.key instanceof n.Scalar ? L.key.value : L.key : L; + } + set(u, p) { + if (typeof p != "boolean") + throw new Error("Expected boolean value for set(key, value) in a YAML set, not ".concat(typeof p)); + let L = n.findPair(this.items, u); + L && !p ? this.items.splice(this.items.indexOf(L), 1) : !L && p && this.items.push(new n.Pair(u)); + } + toJSON(u, p) { + return super.toJSON(u, p, Set); + } + toString(u, p, L) { + if (!u) + return JSON.stringify(this); + if (this.hasAllNullValues()) + return super.toString(u, p, L); + throw new Error("Set items must all have null values"); + } + }; + e._defineProperty(T, "tag", "tag:yaml.org,2002:set"); + function P(u, p) { + let L = n.resolveMap(u, p); + if (!L.hasAllNullValues()) + throw new e.YAMLSemanticError(p, "Set items must all have null values"); + return Object.assign(new T(), L); + } + function C(u, p, L) { + let k = new T(); + for (let B of p) + k.items.push(u.createPair(B, null, L)); + return k; + } + var q = { identify: (u) => u instanceof Set, nodeClass: T, default: false, tag: "tag:yaml.org,2002:set", resolve: P, createNode: C }, R = (u, p) => { + let L = p.split(":").reduce((k, B) => k * 60 + Number(B), 0); + return u === "-" ? -L : L; + }, j = (u) => { + let { value: p } = u; + if (isNaN(p) || !isFinite(p)) + return n.stringifyNumber(p); + let L = ""; + p < 0 && (L = "-", p = Math.abs(p)); + let k = [p % 60]; + return p < 60 ? k.unshift(0) : (p = Math.round((p - k[0]) / 60), k.unshift(p % 60), p >= 60 && (p = Math.round((p - k[0]) / 60), k.unshift(p))), L + k.map((B) => B < 10 ? "0" + String(B) : String(B)).join(":").replace(/000000\d*$/, ""); + }, K = { identify: (u) => typeof u == "number", default: true, tag: "tag:yaml.org,2002:int", format: "TIME", test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/, resolve: (u, p, L) => R(p, L.replace(/_/g, "")), stringify: j }, m = { identify: (u) => typeof u == "number", default: true, tag: "tag:yaml.org,2002:float", format: "TIME", test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/, resolve: (u, p, L) => R(p, L.replace(/_/g, "")), stringify: j }, a = { identify: (u) => u instanceof Date, default: true, tag: "tag:yaml.org,2002:timestamp", test: RegExp("^(?:([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?)$"), resolve: (u, p, L, k, B, $, Q, z, ie) => { + z && (z = (z + "00").substr(1, 3)); + let ue = Date.UTC(p, L - 1, k, B || 0, $ || 0, Q || 0, z || 0); + if (ie && ie !== "Z") { + let pe = R(ie[0], ie.slice(1)); + Math.abs(pe) < 30 && (pe *= 60), ue -= 6e4 * pe; + } + return new Date(ue); + }, stringify: (u) => { + let { value: p } = u; + return p.toISOString().replace(/((T00:00)?:00)?\.000Z$/, ""); + } }; + function t(u) { + let p = typeof Te < "u" && Te.env || {}; + return u ? typeof YAML_SILENCE_DEPRECATION_WARNINGS < "u" ? !YAML_SILENCE_DEPRECATION_WARNINGS : !p.YAML_SILENCE_DEPRECATION_WARNINGS : typeof YAML_SILENCE_WARNINGS < "u" ? !YAML_SILENCE_WARNINGS : !p.YAML_SILENCE_WARNINGS; + } + function s(u, p) { + if (t(false)) { + let L = typeof Te < "u" && Te.emitWarning; + L ? L(u, p) : console.warn(p ? "".concat(p, ": ").concat(u) : u); + } + } + function i(u) { + if (t(true)) { + let p = u.replace(/.*yaml[/\\]/i, "").replace(/\.js$/, "").replace(/\\/g, "/"); + s("The endpoint 'yaml/".concat(p, "' will be removed in a future release."), "DeprecationWarning"); + } + } + var f = {}; + function g(u, p) { + if (!f[u] && t(true)) { + f[u] = true; + let L = "The option '".concat(u, "' will be removed in a future release"); + L += p ? ", use '".concat(p, "' instead.") : ".", s(L, "DeprecationWarning"); + } + } + r.binary = c, r.floatTime = m, r.intTime = K, r.omap = M, r.pairs = y, r.set = q, r.timestamp = a, r.warn = s, r.warnFileDeprecation = i, r.warnOptionDeprecation = g; + } }), ot = F({ "node_modules/yaml/dist/Schema-88e323a7.js"(r) { + "use strict"; + D(); + var e = Me(), n = ke(), c = it(); + function h(O, V, J) { + let x = new n.YAMLMap(O); + if (V instanceof Map) + for (let [G, ne] of V) + x.items.push(O.createPair(G, ne, J)); + else if (V && typeof V == "object") + for (let G of Object.keys(V)) + x.items.push(O.createPair(G, V[G], J)); + return typeof O.sortMapEntries == "function" && x.items.sort(O.sortMapEntries), x; + } + var d = { createNode: h, default: true, nodeClass: n.YAMLMap, tag: "tag:yaml.org,2002:map", resolve: n.resolveMap }; + function y(O, V, J) { + let x = new n.YAMLSeq(O); + if (V && V[Symbol.iterator]) + for (let G of V) { + let ne = O.createNode(G, J.wrapScalars, null, J); + x.items.push(ne); + } + return x; + } + var E = { createNode: y, default: true, nodeClass: n.YAMLSeq, tag: "tag:yaml.org,2002:seq", resolve: n.resolveSeq }, I = { identify: (O) => typeof O == "string", default: true, tag: "tag:yaml.org,2002:str", resolve: n.resolveString, stringify(O, V, J, x) { + return V = Object.assign({ actualString: true }, V), n.stringifyString(O, V, J, x); + }, options: n.strOptions }, S = [d, E, I], M = (O) => typeof O == "bigint" || Number.isInteger(O), T = (O, V, J) => n.intOptions.asBigInt ? BigInt(O) : parseInt(V, J); + function P(O, V, J) { + let { value: x } = O; + return M(x) && x >= 0 ? J + x.toString(V) : n.stringifyNumber(O); + } + var C = { identify: (O) => O == null, createNode: (O, V, J) => J.wrapScalars ? new n.Scalar(null) : null, default: true, tag: "tag:yaml.org,2002:null", test: /^(?:~|[Nn]ull|NULL)?$/, resolve: () => null, options: n.nullOptions, stringify: () => n.nullOptions.nullStr }, q = { identify: (O) => typeof O == "boolean", default: true, tag: "tag:yaml.org,2002:bool", test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, resolve: (O) => O[0] === "t" || O[0] === "T", options: n.boolOptions, stringify: (O) => { + let { value: V } = O; + return V ? n.boolOptions.trueStr : n.boolOptions.falseStr; + } }, R = { identify: (O) => M(O) && O >= 0, default: true, tag: "tag:yaml.org,2002:int", format: "OCT", test: /^0o([0-7]+)$/, resolve: (O, V) => T(O, V, 8), options: n.intOptions, stringify: (O) => P(O, 8, "0o") }, j = { identify: M, default: true, tag: "tag:yaml.org,2002:int", test: /^[-+]?[0-9]+$/, resolve: (O) => T(O, O, 10), options: n.intOptions, stringify: n.stringifyNumber }, K = { identify: (O) => M(O) && O >= 0, default: true, tag: "tag:yaml.org,2002:int", format: "HEX", test: /^0x([0-9a-fA-F]+)$/, resolve: (O, V) => T(O, V, 16), options: n.intOptions, stringify: (O) => P(O, 16, "0x") }, m = { identify: (O) => typeof O == "number", default: true, tag: "tag:yaml.org,2002:float", test: /^(?:[-+]?\.inf|(\.nan))$/i, resolve: (O, V) => V ? NaN : O[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, stringify: n.stringifyNumber }, a = { identify: (O) => typeof O == "number", default: true, tag: "tag:yaml.org,2002:float", format: "EXP", test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, resolve: (O) => parseFloat(O), stringify: (O) => { + let { value: V } = O; + return Number(V).toExponential(); + } }, t = { identify: (O) => typeof O == "number", default: true, tag: "tag:yaml.org,2002:float", test: /^[-+]?(?:\.([0-9]+)|[0-9]+\.([0-9]*))$/, resolve(O, V, J) { + let x = V || J, G = new n.Scalar(parseFloat(O)); + return x && x[x.length - 1] === "0" && (G.minFractionDigits = x.length), G; + }, stringify: n.stringifyNumber }, s = S.concat([C, q, R, j, K, m, a, t]), i = (O) => typeof O == "bigint" || Number.isInteger(O), f = (O) => { + let { value: V } = O; + return JSON.stringify(V); + }, g = [d, E, { identify: (O) => typeof O == "string", default: true, tag: "tag:yaml.org,2002:str", resolve: n.resolveString, stringify: f }, { identify: (O) => O == null, createNode: (O, V, J) => J.wrapScalars ? new n.Scalar(null) : null, default: true, tag: "tag:yaml.org,2002:null", test: /^null$/, resolve: () => null, stringify: f }, { identify: (O) => typeof O == "boolean", default: true, tag: "tag:yaml.org,2002:bool", test: /^true|false$/, resolve: (O) => O === "true", stringify: f }, { identify: i, default: true, tag: "tag:yaml.org,2002:int", test: /^-?(?:0|[1-9][0-9]*)$/, resolve: (O) => n.intOptions.asBigInt ? BigInt(O) : parseInt(O, 10), stringify: (O) => { + let { value: V } = O; + return i(V) ? V.toString() : JSON.stringify(V); + } }, { identify: (O) => typeof O == "number", default: true, tag: "tag:yaml.org,2002:float", test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, resolve: (O) => parseFloat(O), stringify: f }]; + g.scalarFallback = (O) => { + throw new SyntaxError("Unresolved plain scalar ".concat(JSON.stringify(O))); + }; + var u = (O) => { + let { value: V } = O; + return V ? n.boolOptions.trueStr : n.boolOptions.falseStr; + }, p = (O) => typeof O == "bigint" || Number.isInteger(O); + function L(O, V, J) { + let x = V.replace(/_/g, ""); + if (n.intOptions.asBigInt) { + switch (J) { + case 2: + x = "0b".concat(x); + break; + case 8: + x = "0o".concat(x); + break; + case 16: + x = "0x".concat(x); + break; + } + let ne = BigInt(x); + return O === "-" ? BigInt(-1) * ne : ne; + } + let G = parseInt(x, J); + return O === "-" ? -1 * G : G; + } + function k(O, V, J) { + let { value: x } = O; + if (p(x)) { + let G = x.toString(V); + return x < 0 ? "-" + J + G.substr(1) : J + G; + } + return n.stringifyNumber(O); + } + var B = S.concat([{ identify: (O) => O == null, createNode: (O, V, J) => J.wrapScalars ? new n.Scalar(null) : null, default: true, tag: "tag:yaml.org,2002:null", test: /^(?:~|[Nn]ull|NULL)?$/, resolve: () => null, options: n.nullOptions, stringify: () => n.nullOptions.nullStr }, { identify: (O) => typeof O == "boolean", default: true, tag: "tag:yaml.org,2002:bool", test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, resolve: () => true, options: n.boolOptions, stringify: u }, { identify: (O) => typeof O == "boolean", default: true, tag: "tag:yaml.org,2002:bool", test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i, resolve: () => false, options: n.boolOptions, stringify: u }, { identify: p, default: true, tag: "tag:yaml.org,2002:int", format: "BIN", test: /^([-+]?)0b([0-1_]+)$/, resolve: (O, V, J) => L(V, J, 2), stringify: (O) => k(O, 2, "0b") }, { identify: p, default: true, tag: "tag:yaml.org,2002:int", format: "OCT", test: /^([-+]?)0([0-7_]+)$/, resolve: (O, V, J) => L(V, J, 8), stringify: (O) => k(O, 8, "0") }, { identify: p, default: true, tag: "tag:yaml.org,2002:int", test: /^([-+]?)([0-9][0-9_]*)$/, resolve: (O, V, J) => L(V, J, 10), stringify: n.stringifyNumber }, { identify: p, default: true, tag: "tag:yaml.org,2002:int", format: "HEX", test: /^([-+]?)0x([0-9a-fA-F_]+)$/, resolve: (O, V, J) => L(V, J, 16), stringify: (O) => k(O, 16, "0x") }, { identify: (O) => typeof O == "number", default: true, tag: "tag:yaml.org,2002:float", test: /^(?:[-+]?\.inf|(\.nan))$/i, resolve: (O, V) => V ? NaN : O[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, stringify: n.stringifyNumber }, { identify: (O) => typeof O == "number", default: true, tag: "tag:yaml.org,2002:float", format: "EXP", test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/, resolve: (O) => parseFloat(O.replace(/_/g, "")), stringify: (O) => { + let { value: V } = O; + return Number(V).toExponential(); + } }, { identify: (O) => typeof O == "number", default: true, tag: "tag:yaml.org,2002:float", test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/, resolve(O, V) { + let J = new n.Scalar(parseFloat(O.replace(/_/g, ""))); + if (V) { + let x = V.replace(/_/g, ""); + x[x.length - 1] === "0" && (J.minFractionDigits = x.length); + } + return J; + }, stringify: n.stringifyNumber }], c.binary, c.omap, c.pairs, c.set, c.intTime, c.floatTime, c.timestamp), $ = { core: s, failsafe: S, json: g, yaml11: B }, Q = { binary: c.binary, bool: q, float: t, floatExp: a, floatNaN: m, floatTime: c.floatTime, int: j, intHex: K, intOct: R, intTime: c.intTime, map: d, null: C, omap: c.omap, pairs: c.pairs, seq: E, set: c.set, timestamp: c.timestamp }; + function z(O, V, J) { + if (V) { + let x = J.filter((ne) => ne.tag === V), G = x.find((ne) => !ne.format) || x[0]; + if (!G) + throw new Error("Tag ".concat(V, " not found")); + return G; + } + return J.find((x) => (x.identify && x.identify(O) || x.class && O instanceof x.class) && !x.format); + } + function ie(O, V, J) { + if (O instanceof n.Node) + return O; + let { defaultPrefix: x, onTagObj: G, prevObjects: ne, schema: _e, wrapScalars: ye } = J; + V && V.startsWith("!!") && (V = x + V.slice(2)); + let be = z(O, V, _e.tags); + if (!be) { + if (typeof O.toJSON == "function" && (O = O.toJSON()), !O || typeof O != "object") + return ye ? new n.Scalar(O) : O; + be = O instanceof Map ? d : O[Symbol.iterator] ? E : d; + } + G && (G(be), delete J.onTagObj); + let ve = { value: void 0, node: void 0 }; + if (O && typeof O == "object" && ne) { + let Ne = ne.get(O); + if (Ne) { + let Pe = new n.Alias(Ne); + return J.aliasNodes.push(Pe), Pe; + } + ve.value = O, ne.set(O, ve); + } + return ve.node = be.createNode ? be.createNode(J.schema, O, J) : ye ? new n.Scalar(O) : O, V && ve.node instanceof n.Node && (ve.node.tag = V), ve.node; + } + function ue(O, V, J, x) { + let G = O[x.replace(/\W/g, "")]; + if (!G) { + let ne = Object.keys(O).map((_e) => JSON.stringify(_e)).join(", "); + throw new Error('Unknown schema "'.concat(x, '"; use one of ').concat(ne)); + } + if (Array.isArray(J)) + for (let ne of J) + G = G.concat(ne); + else + typeof J == "function" && (G = J(G.slice())); + for (let ne = 0; ne < G.length; ++ne) { + let _e = G[ne]; + if (typeof _e == "string") { + let ye = V[_e]; + if (!ye) { + let be = Object.keys(V).map((ve) => JSON.stringify(ve)).join(", "); + throw new Error('Unknown custom tag "'.concat(_e, '"; use one of ').concat(be)); + } + G[ne] = ye; + } + } + return G; + } + var pe = (O, V) => O.key < V.key ? -1 : O.key > V.key ? 1 : 0, ge = class { + constructor(O) { + let { customTags: V, merge: J, schema: x, sortMapEntries: G, tags: ne } = O; + this.merge = !!J, this.name = x, this.sortMapEntries = G === true ? pe : G || null, !V && ne && c.warnOptionDeprecation("tags", "customTags"), this.tags = ue($, Q, V || ne, x); + } + createNode(O, V, J, x) { + let G = { defaultPrefix: ge.defaultPrefix, schema: this, wrapScalars: V }, ne = x ? Object.assign(x, G) : G; + return ie(O, J, ne); + } + createPair(O, V, J) { + J || (J = { wrapScalars: true }); + let x = this.createNode(O, J.wrapScalars, null, J), G = this.createNode(V, J.wrapScalars, null, J); + return new n.Pair(x, G); + } + }; + e._defineProperty(ge, "defaultPrefix", e.defaultTagPrefix), e._defineProperty(ge, "defaultTags", e.defaultTags), r.Schema = ge; + } }), zn = F({ "node_modules/yaml/dist/Document-9b4560a1.js"(r) { + "use strict"; + D(); + var e = Me(), n = ke(), c = ot(), h = { anchorPrefix: "a", customTags: null, indent: 2, indentSeq: true, keepCstNodes: false, keepNodeTypes: true, keepBlobsInJSON: true, mapAsMap: false, maxAliasCount: 100, prettyErrors: false, simpleKeys: false, version: "1.2" }, d = { get binary() { + return n.binaryOptions; + }, set binary(t) { + Object.assign(n.binaryOptions, t); + }, get bool() { + return n.boolOptions; + }, set bool(t) { + Object.assign(n.boolOptions, t); + }, get int() { + return n.intOptions; + }, set int(t) { + Object.assign(n.intOptions, t); + }, get null() { + return n.nullOptions; + }, set null(t) { + Object.assign(n.nullOptions, t); + }, get str() { + return n.strOptions; + }, set str(t) { + Object.assign(n.strOptions, t); + } }, y = { "1.0": { schema: "yaml-1.1", merge: true, tagPrefixes: [{ handle: "!", prefix: e.defaultTagPrefix }, { handle: "!!", prefix: "tag:private.yaml.org,2002:" }] }, 1.1: { schema: "yaml-1.1", merge: true, tagPrefixes: [{ handle: "!", prefix: "!" }, { handle: "!!", prefix: e.defaultTagPrefix }] }, 1.2: { schema: "core", merge: false, tagPrefixes: [{ handle: "!", prefix: "!" }, { handle: "!!", prefix: e.defaultTagPrefix }] } }; + function E(t, s) { + if ((t.version || t.options.version) === "1.0") { + let g = s.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/); + if (g) + return "!" + g[1]; + let u = s.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/); + return u ? "!".concat(u[1], "/").concat(u[2]) : "!".concat(s.replace(/^tag:/, "")); + } + let i = t.tagPrefixes.find((g) => s.indexOf(g.prefix) === 0); + if (!i) { + let g = t.getDefaults().tagPrefixes; + i = g && g.find((u) => s.indexOf(u.prefix) === 0); + } + if (!i) + return s[0] === "!" ? s : "!<".concat(s, ">"); + let f = s.substr(i.prefix.length).replace(/[!,[\]{}]/g, (g) => ({ "!": "%21", ",": "%2C", "[": "%5B", "]": "%5D", "{": "%7B", "}": "%7D" })[g]); + return i.handle + f; + } + function I(t, s) { + if (s instanceof n.Alias) + return n.Alias; + if (s.tag) { + let g = t.filter((u) => u.tag === s.tag); + if (g.length > 0) + return g.find((u) => u.format === s.format) || g[0]; + } + let i, f; + if (s instanceof n.Scalar) { + f = s.value; + let g = t.filter((u) => u.identify && u.identify(f) || u.class && f instanceof u.class); + i = g.find((u) => u.format === s.format) || g.find((u) => !u.format); + } else + f = s, i = t.find((g) => g.nodeClass && f instanceof g.nodeClass); + if (!i) { + let g = f && f.constructor ? f.constructor.name : typeof f; + throw new Error("Tag not resolved for ".concat(g, " value")); + } + return i; + } + function S(t, s, i) { + let { anchors: f, doc: g } = i, u = [], p = g.anchors.getName(t); + return p && (f[p] = t, u.push("&".concat(p))), t.tag ? u.push(E(g, t.tag)) : s.default || u.push(E(g, s.tag)), u.join(" "); + } + function M(t, s, i, f) { + let { anchors: g, schema: u } = s.doc, p; + if (!(t instanceof n.Node)) { + let B = { aliasNodes: [], onTagObj: ($) => p = $, prevObjects: /* @__PURE__ */ new Map() }; + t = u.createNode(t, true, null, B); + for (let $ of B.aliasNodes) { + $.source = $.source.node; + let Q = g.getName($.source); + Q || (Q = g.newName(), g.map[Q] = $.source); + } + } + if (t instanceof n.Pair) + return t.toString(s, i, f); + p || (p = I(u.tags, t)); + let L = S(t, p, s); + L.length > 0 && (s.indentAtStart = (s.indentAtStart || 0) + L.length + 1); + let k = typeof p.stringify == "function" ? p.stringify(t, s, i, f) : t instanceof n.Scalar ? n.stringifyString(t, s, i, f) : t.toString(s, i, f); + return L ? t instanceof n.Scalar || k[0] === "{" || k[0] === "[" ? "".concat(L, " ").concat(k) : "".concat(L, ` +`).concat(s.indent).concat(k) : k; + } + var T = class { + static validAnchorNode(t) { + return t instanceof n.Scalar || t instanceof n.YAMLSeq || t instanceof n.YAMLMap; + } + constructor(t) { + e._defineProperty(this, "map", /* @__PURE__ */ Object.create(null)), this.prefix = t; + } + createAlias(t, s) { + return this.setAnchor(t, s), new n.Alias(t); + } + createMergePair() { + let t = new n.Merge(); + for (var s = arguments.length, i = new Array(s), f = 0; f < s; f++) + i[f] = arguments[f]; + return t.value.items = i.map((g) => { + if (g instanceof n.Alias) { + if (g.source instanceof n.YAMLMap) + return g; + } else if (g instanceof n.YAMLMap) + return this.createAlias(g); + throw new Error("Merge sources must be Map nodes or their Aliases"); + }), t; + } + getName(t) { + let { map: s } = this; + return Object.keys(s).find((i) => s[i] === t); + } + getNames() { + return Object.keys(this.map); + } + getNode(t) { + return this.map[t]; + } + newName(t) { + t || (t = this.prefix); + let s = Object.keys(this.map); + for (let i = 1; ; ++i) { + let f = "".concat(t).concat(i); + if (!s.includes(f)) + return f; + } + } + resolveNodes() { + let { map: t, _cstAliases: s } = this; + Object.keys(t).forEach((i) => { + t[i] = t[i].resolved; + }), s.forEach((i) => { + i.source = i.source.resolved; + }), delete this._cstAliases; + } + setAnchor(t, s) { + if (t != null && !T.validAnchorNode(t)) + throw new Error("Anchors may only be set for Scalar, Seq and Map nodes"); + if (s && /[\x00-\x19\s,[\]{}]/.test(s)) + throw new Error("Anchor names must not contain whitespace or control characters"); + let { map: i } = this, f = t && Object.keys(i).find((g) => i[g] === t); + if (f) + if (s) + f !== s && (delete i[f], i[s] = t); + else + return f; + else { + if (!s) { + if (!t) + return null; + s = this.newName(); + } + i[s] = t; + } + return s; + } + }, P = (t, s) => { + if (t && typeof t == "object") { + let { tag: i } = t; + t instanceof n.Collection ? (i && (s[i] = true), t.items.forEach((f) => P(f, s))) : t instanceof n.Pair ? (P(t.key, s), P(t.value, s)) : t instanceof n.Scalar && i && (s[i] = true); + } + return s; + }, C = (t) => Object.keys(P(t, {})); + function q(t, s) { + let i = { before: [], after: [] }, f, g = false; + for (let u of s) + if (u.valueRange) { + if (f !== void 0) { + let L = "Document contains trailing content not separated by a ... or --- line"; + t.errors.push(new e.YAMLSyntaxError(u, L)); + break; + } + let p = n.resolveNode(t, u); + g && (p.spaceBefore = true, g = false), f = p; + } else + u.comment !== null ? (f === void 0 ? i.before : i.after).push(u.comment) : u.type === e.Type.BLANK_LINE && (g = true, f === void 0 && i.before.length > 0 && !t.commentBefore && (t.commentBefore = i.before.join(` +`), i.before = [])); + if (t.contents = f || null, !f) + t.comment = i.before.concat(i.after).join(` +`) || null; + else { + let u = i.before.join(` +`); + if (u) { + let p = f instanceof n.Collection && f.items[0] ? f.items[0] : f; + p.commentBefore = p.commentBefore ? "".concat(u, ` +`).concat(p.commentBefore) : u; + } + t.comment = i.after.join(` +`) || null; + } + } + function R(t, s) { + let { tagPrefixes: i } = t, [f, g] = s.parameters; + if (!f || !g) { + let u = "Insufficient parameters given for %TAG directive"; + throw new e.YAMLSemanticError(s, u); + } + if (i.some((u) => u.handle === f)) { + let u = "The %TAG directive must only be given at most once per handle in the same document."; + throw new e.YAMLSemanticError(s, u); + } + return { handle: f, prefix: g }; + } + function j(t, s) { + let [i] = s.parameters; + if (s.name === "YAML:1.0" && (i = "1.0"), !i) { + let f = "Insufficient parameters given for %YAML directive"; + throw new e.YAMLSemanticError(s, f); + } + if (!y[i]) { + let f = t.version || t.options.version, g = "Document will be parsed as YAML ".concat(f, " rather than YAML ").concat(i); + t.warnings.push(new e.YAMLWarning(s, g)); + } + return i; + } + function K(t, s, i) { + let f = [], g = false; + for (let u of s) { + let { comment: p, name: L } = u; + switch (L) { + case "TAG": + try { + t.tagPrefixes.push(R(t, u)); + } catch (k) { + t.errors.push(k); + } + g = true; + break; + case "YAML": + case "YAML:1.0": + if (t.version) { + let k = "The %YAML directive must only be given at most once per document."; + t.errors.push(new e.YAMLSemanticError(u, k)); + } + try { + t.version = j(t, u); + } catch (k) { + t.errors.push(k); + } + g = true; + break; + default: + if (L) { + let k = "YAML only supports %TAG and %YAML directives, and not %".concat(L); + t.warnings.push(new e.YAMLWarning(u, k)); + } + } + p && f.push(p); + } + if (i && !g && (t.version || i.version || t.options.version) === "1.1") { + let u = (p) => { + let { handle: L, prefix: k } = p; + return { handle: L, prefix: k }; + }; + t.tagPrefixes = i.tagPrefixes.map(u), t.version = i.version; + } + t.commentBefore = f.join(` +`) || null; + } + function m(t) { + if (t instanceof n.Collection) + return true; + throw new Error("Expected a YAML collection as document contents"); + } + var a = class { + constructor(t) { + this.anchors = new T(t.anchorPrefix), this.commentBefore = null, this.comment = null, this.contents = null, this.directivesEndMarker = null, this.errors = [], this.options = t, this.schema = null, this.tagPrefixes = [], this.version = null, this.warnings = []; + } + add(t) { + return m(this.contents), this.contents.add(t); + } + addIn(t, s) { + m(this.contents), this.contents.addIn(t, s); + } + delete(t) { + return m(this.contents), this.contents.delete(t); + } + deleteIn(t) { + return n.isEmptyPath(t) ? this.contents == null ? false : (this.contents = null, true) : (m(this.contents), this.contents.deleteIn(t)); + } + getDefaults() { + return a.defaults[this.version] || a.defaults[this.options.version] || {}; + } + get(t, s) { + return this.contents instanceof n.Collection ? this.contents.get(t, s) : void 0; + } + getIn(t, s) { + return n.isEmptyPath(t) ? !s && this.contents instanceof n.Scalar ? this.contents.value : this.contents : this.contents instanceof n.Collection ? this.contents.getIn(t, s) : void 0; + } + has(t) { + return this.contents instanceof n.Collection ? this.contents.has(t) : false; + } + hasIn(t) { + return n.isEmptyPath(t) ? this.contents !== void 0 : this.contents instanceof n.Collection ? this.contents.hasIn(t) : false; + } + set(t, s) { + m(this.contents), this.contents.set(t, s); + } + setIn(t, s) { + n.isEmptyPath(t) ? this.contents = s : (m(this.contents), this.contents.setIn(t, s)); + } + setSchema(t, s) { + if (!t && !s && this.schema) + return; + typeof t == "number" && (t = t.toFixed(1)), t === "1.0" || t === "1.1" || t === "1.2" ? (this.version ? this.version = t : this.options.version = t, delete this.options.schema) : t && typeof t == "string" && (this.options.schema = t), Array.isArray(s) && (this.options.customTags = s); + let i = Object.assign({}, this.getDefaults(), this.options); + this.schema = new c.Schema(i); + } + parse(t, s) { + this.options.keepCstNodes && (this.cstNode = t), this.options.keepNodeTypes && (this.type = "DOCUMENT"); + let { directives: i = [], contents: f = [], directivesEndMarker: g, error: u, valueRange: p } = t; + if (u && (u.source || (u.source = this), this.errors.push(u)), K(this, i, s), g && (this.directivesEndMarker = true), this.range = p ? [p.start, p.end] : null, this.setSchema(), this.anchors._cstAliases = [], q(this, f), this.anchors.resolveNodes(), this.options.prettyErrors) { + for (let L of this.errors) + L instanceof e.YAMLError && L.makePretty(); + for (let L of this.warnings) + L instanceof e.YAMLError && L.makePretty(); + } + return this; + } + listNonDefaultTags() { + return C(this.contents).filter((t) => t.indexOf(c.Schema.defaultPrefix) !== 0); + } + setTagPrefix(t, s) { + if (t[0] !== "!" || t[t.length - 1] !== "!") + throw new Error("Handle must start and end with !"); + if (s) { + let i = this.tagPrefixes.find((f) => f.handle === t); + i ? i.prefix = s : this.tagPrefixes.push({ handle: t, prefix: s }); + } else + this.tagPrefixes = this.tagPrefixes.filter((i) => i.handle !== t); + } + toJSON(t, s) { + let { keepBlobsInJSON: i, mapAsMap: f, maxAliasCount: g } = this.options, u = i && (typeof t != "string" || !(this.contents instanceof n.Scalar)), p = { doc: this, indentStep: " ", keep: u, mapAsMap: u && !!f, maxAliasCount: g, stringify: M }, L = Object.keys(this.anchors.map); + L.length > 0 && (p.anchors = new Map(L.map((B) => [this.anchors.map[B], { alias: [], aliasCount: 0, count: 1 }]))); + let k = n.toJSON(this.contents, t, p); + if (typeof s == "function" && p.anchors) + for (let { count: B, res: $ } of p.anchors.values()) + s($, B); + return k; + } + toString() { + if (this.errors.length > 0) + throw new Error("Document with errors cannot be stringified"); + let t = this.options.indent; + if (!Number.isInteger(t) || t <= 0) { + let L = JSON.stringify(t); + throw new Error('"indent" option must be a positive integer, not '.concat(L)); + } + this.setSchema(); + let s = [], i = false; + if (this.version) { + let L = "%YAML 1.2"; + this.schema.name === "yaml-1.1" && (this.version === "1.0" ? L = "%YAML:1.0" : this.version === "1.1" && (L = "%YAML 1.1")), s.push(L), i = true; + } + let f = this.listNonDefaultTags(); + this.tagPrefixes.forEach((L) => { + let { handle: k, prefix: B } = L; + f.some(($) => $.indexOf(B) === 0) && (s.push("%TAG ".concat(k, " ").concat(B)), i = true); + }), (i || this.directivesEndMarker) && s.push("---"), this.commentBefore && ((i || !this.directivesEndMarker) && s.unshift(""), s.unshift(this.commentBefore.replace(/^/gm, "#"))); + let g = { anchors: /* @__PURE__ */ Object.create(null), doc: this, indent: "", indentStep: " ".repeat(t), stringify: M }, u = false, p = null; + if (this.contents) { + this.contents instanceof n.Node && (this.contents.spaceBefore && (i || this.directivesEndMarker) && s.push(""), this.contents.commentBefore && s.push(this.contents.commentBefore.replace(/^/gm, "#")), g.forceBlockIndent = !!this.comment, p = this.contents.comment); + let L = p ? null : () => u = true, k = M(this.contents, g, () => p = null, L); + s.push(n.addComment(k, "", p)); + } else + this.contents !== void 0 && s.push(M(this.contents, g)); + return this.comment && ((!u || p) && s[s.length - 1] !== "" && s.push(""), s.push(this.comment.replace(/^/gm, "#"))), s.join(` +`) + ` +`; + } + }; + e._defineProperty(a, "defaults", y), r.Document = a, r.defaultOptions = h, r.scalarOptions = d; + } }), Zn = F({ "node_modules/yaml/dist/index.js"(r) { + "use strict"; + D(); + var e = Gn(), n = zn(), c = ot(), h = Me(), d = it(); + ke(); + function y(C) { + let q = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true, R = arguments.length > 2 ? arguments[2] : void 0; + R === void 0 && typeof q == "string" && (R = q, q = true); + let j = Object.assign({}, n.Document.defaults[n.defaultOptions.version], n.defaultOptions); + return new c.Schema(j).createNode(C, q, R); + } + var E = class extends n.Document { + constructor(C) { + super(Object.assign({}, n.defaultOptions, C)); + } + }; + function I(C, q) { + let R = [], j; + for (let K of e.parse(C)) { + let m = new E(q); + m.parse(K, j), R.push(m), j = m; + } + return R; + } + function S(C, q) { + let R = e.parse(C), j = new E(q).parse(R[0]); + if (R.length > 1) { + let K = "Source contains multiple documents; please use YAML.parseAllDocuments()"; + j.errors.unshift(new h.YAMLSemanticError(R[1], K)); + } + return j; + } + function M(C, q) { + let R = S(C, q); + if (R.warnings.forEach((j) => d.warn(j)), R.errors.length > 0) + throw R.errors[0]; + return R.toJSON(); + } + function T(C, q) { + let R = new E(q); + return R.contents = C, String(R); + } + var P = { createNode: y, defaultOptions: n.defaultOptions, Document: E, parse: M, parseAllDocuments: I, parseCST: e.parse, parseDocument: S, scalarOptions: n.scalarOptions, stringify: T }; + r.YAML = P; + } }), Je = F({ "node_modules/yaml/index.js"(r, e) { + D(), e.exports = Zn().YAML; + } }), Xn = F({ "node_modules/yaml/dist/util.js"(r) { + "use strict"; + D(); + var e = ke(), n = Me(); + r.findPair = e.findPair, r.parseMap = e.resolveMap, r.parseSeq = e.resolveSeq, r.stringifyNumber = e.stringifyNumber, r.stringifyString = e.stringifyString, r.toJSON = e.toJSON, r.Type = n.Type, r.YAMLError = n.YAMLError, r.YAMLReferenceError = n.YAMLReferenceError, r.YAMLSemanticError = n.YAMLSemanticError, r.YAMLSyntaxError = n.YAMLSyntaxError, r.YAMLWarning = n.YAMLWarning; + } }), er = F({ "node_modules/yaml/util.js"(r) { + D(); + var e = Xn(); + r.findPair = e.findPair, r.toJSON = e.toJSON, r.parseMap = e.parseMap, r.parseSeq = e.parseSeq, r.stringifyNumber = e.stringifyNumber, r.stringifyString = e.stringifyString, r.Type = e.Type, r.YAMLError = e.YAMLError, r.YAMLReferenceError = e.YAMLReferenceError, r.YAMLSemanticError = e.YAMLSemanticError, r.YAMLSyntaxError = e.YAMLSyntaxError, r.YAMLWarning = e.YAMLWarning; + } }), tr = F({ "node_modules/yaml-unist-parser/lib/yaml.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = Je(); + r.Document = e.Document; + var n = Je(); + r.parseCST = n.parseCST; + var c = er(); + r.YAMLError = c.YAMLError, r.YAMLSyntaxError = c.YAMLSyntaxError, r.YAMLSemanticError = c.YAMLSemanticError; + } }), nr = F({ "node_modules/yaml-unist-parser/lib/parse.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = xt(), n = Gt(), c = zt(), h = Zt(), d = Fn(), y = ze(), E = Vn(), I = Un(), S = Kn(), M = $n(), T = Jn(), P = Hn(), C = tr(); + function q(R) { + var j = C.parseCST(R); + M.addOrigRange(j); + for (var K = j.map(function(k) { + return new C.Document({ merge: false, keepCstNodes: true }).parse(k); + }), m = new e.default(R), a = [], t = { text: R, locator: m, comments: a, transformOffset: function(k) { + return I.transformOffset(k, t); + }, transformRange: function(k) { + return S.transformRange(k, t); + }, transformNode: function(k) { + return d.transformNode(k, t); + }, transformContent: function(k) { + return y.transformContent(k, t); + } }, s = 0, i = K; s < i.length; s++) + for (var f = i[s], g = 0, u = f.errors; g < u.length; g++) { + var p = u[g]; + if (!(p instanceof C.YAMLSemanticError && p.message === 'Map keys must be unique; "<<" is repeated')) + throw E.transformError(p, t); + } + K.forEach(function(k) { + return h.removeCstBlankLine(k.cstNode); + }); + var L = c.createRoot(t.transformRange({ origStart: 0, origEnd: t.text.length }), K.map(t.transformNode), a); + return n.attachComments(L), P.updatePositions(L), T.removeFakeNodes(L), L; + } + r.parse = q; + } }), rr = F({ "node_modules/yaml-unist-parser/lib/index.js"(r) { + "use strict"; + D(), r.__esModule = true; + var e = (ae(), se(te)); + e.__exportStar(nr(), r); + } }); + D(); + var sr = Lt(), { hasPragma: ar } = At(), { locStart: ir, locEnd: or } = Nt(); + function lr(r) { + let { parse: e } = rr(); + try { + let n = e(r); + return delete n.comments, n; + } catch (n) { + throw n != null && n.position ? sr(n.message, n.position) : n; + } + } + var cr = { astFormat: "yaml", parse: lr, hasPragma: ar, locStart: ir, locEnd: or }; + lt.exports = { parsers: { yaml: cr } }; + }); + return ur(); + }); + } +}); + +// node_modules/prettier/index.js +var require_prettier = __commonJS({ + "node_modules/prettier/index.js"(exports, module2) { + "use strict"; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __commonJS2 = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var require_global = __commonJS2({ + "node_modules/core-js/internals/global.js"(exports2, module22) { + var check = function(it) { + return it && it.Math == Math && it; + }; + module22.exports = check(typeof globalThis == "object" && globalThis) || check(typeof window == "object" && window) || check(typeof self == "object" && self) || check(typeof global == "object" && global) || function() { + return this; + }() || Function("return this")(); + } + }); + var require_fails = __commonJS2({ + "node_modules/core-js/internals/fails.js"(exports2, module22) { + module22.exports = function(exec) { + try { + return !!exec(); + } catch (error2) { + return true; + } + }; + } + }); + var require_descriptors = __commonJS2({ + "node_modules/core-js/internals/descriptors.js"(exports2, module22) { + var fails = require_fails(); + module22.exports = !fails(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + } + }); + var require_function_bind_native = __commonJS2({ + "node_modules/core-js/internals/function-bind-native.js"(exports2, module22) { + var fails = require_fails(); + module22.exports = !fails(function() { + var test = function() { + }.bind(); + return typeof test != "function" || test.hasOwnProperty("prototype"); + }); + } + }); + var require_function_call = __commonJS2({ + "node_modules/core-js/internals/function-call.js"(exports2, module22) { + var NATIVE_BIND = require_function_bind_native(); + var call = Function.prototype.call; + module22.exports = NATIVE_BIND ? call.bind(call) : function() { + return call.apply(call, arguments); + }; + } + }); + var require_object_property_is_enumerable = __commonJS2({ + "node_modules/core-js/internals/object-property-is-enumerable.js"(exports2) { + "use strict"; + var $propertyIsEnumerable = {}.propertyIsEnumerable; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); + exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; + } : $propertyIsEnumerable; + } + }); + var require_create_property_descriptor = __commonJS2({ + "node_modules/core-js/internals/create-property-descriptor.js"(exports2, module22) { + module22.exports = function(bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value + }; + }; + } + }); + var require_function_uncurry_this = __commonJS2({ + "node_modules/core-js/internals/function-uncurry-this.js"(exports2, module22) { + var NATIVE_BIND = require_function_bind_native(); + var FunctionPrototype = Function.prototype; + var bind = FunctionPrototype.bind; + var call = FunctionPrototype.call; + var uncurryThis = NATIVE_BIND && bind.bind(call, call); + module22.exports = NATIVE_BIND ? function(fn) { + return fn && uncurryThis(fn); + } : function(fn) { + return fn && function() { + return call.apply(fn, arguments); + }; + }; + } + }); + var require_classof_raw = __commonJS2({ + "node_modules/core-js/internals/classof-raw.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + var toString2 = uncurryThis({}.toString); + var stringSlice = uncurryThis("".slice); + module22.exports = function(it) { + return stringSlice(toString2(it), 8, -1); + }; + } + }); + var require_indexed_object = __commonJS2({ + "node_modules/core-js/internals/indexed-object.js"(exports2, module22) { + var global2 = require_global(); + var uncurryThis = require_function_uncurry_this(); + var fails = require_fails(); + var classof = require_classof_raw(); + var Object2 = global2.Object; + var split = uncurryThis("".split); + module22.exports = fails(function() { + return !Object2("z").propertyIsEnumerable(0); + }) ? function(it) { + return classof(it) == "String" ? split(it, "") : Object2(it); + } : Object2; + } + }); + var require_require_object_coercible = __commonJS2({ + "node_modules/core-js/internals/require-object-coercible.js"(exports2, module22) { + var global2 = require_global(); + var TypeError2 = global2.TypeError; + module22.exports = function(it) { + if (it == void 0) + throw TypeError2("Can't call method on " + it); + return it; + }; + } + }); + var require_to_indexed_object = __commonJS2({ + "node_modules/core-js/internals/to-indexed-object.js"(exports2, module22) { + var IndexedObject = require_indexed_object(); + var requireObjectCoercible = require_require_object_coercible(); + module22.exports = function(it) { + return IndexedObject(requireObjectCoercible(it)); + }; + } + }); + var require_is_callable = __commonJS2({ + "node_modules/core-js/internals/is-callable.js"(exports2, module22) { + module22.exports = function(argument) { + return typeof argument == "function"; + }; + } + }); + var require_is_object = __commonJS2({ + "node_modules/core-js/internals/is-object.js"(exports2, module22) { + var isCallable = require_is_callable(); + module22.exports = function(it) { + return typeof it == "object" ? it !== null : isCallable(it); + }; + } + }); + var require_get_built_in = __commonJS2({ + "node_modules/core-js/internals/get-built-in.js"(exports2, module22) { + var global2 = require_global(); + var isCallable = require_is_callable(); + var aFunction = function(argument) { + return isCallable(argument) ? argument : void 0; + }; + module22.exports = function(namespace, method) { + return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method]; + }; + } + }); + var require_object_is_prototype_of = __commonJS2({ + "node_modules/core-js/internals/object-is-prototype-of.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + module22.exports = uncurryThis({}.isPrototypeOf); + } + }); + var require_engine_user_agent = __commonJS2({ + "node_modules/core-js/internals/engine-user-agent.js"(exports2, module22) { + var getBuiltIn = require_get_built_in(); + module22.exports = getBuiltIn("navigator", "userAgent") || ""; + } + }); + var require_engine_v8_version = __commonJS2({ + "node_modules/core-js/internals/engine-v8-version.js"(exports2, module22) { + var global2 = require_global(); + var userAgent = require_engine_user_agent(); + var process2 = global2.process; + var Deno = global2.Deno; + var versions = process2 && process2.versions || Deno && Deno.version; + var v8 = versions && versions.v8; + var match; + var version2; + if (v8) { + match = v8.split("."); + version2 = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); + } + if (!version2 && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) + version2 = +match[1]; + } + } + module22.exports = version2; + } + }); + var require_native_symbol = __commonJS2({ + "node_modules/core-js/internals/native-symbol.js"(exports2, module22) { + var V8_VERSION = require_engine_v8_version(); + var fails = require_fails(); + module22.exports = !!Object.getOwnPropertySymbols && !fails(function() { + var symbol = Symbol(); + return !String(symbol) || !(Object(symbol) instanceof Symbol) || !Symbol.sham && V8_VERSION && V8_VERSION < 41; + }); + } + }); + var require_use_symbol_as_uid = __commonJS2({ + "node_modules/core-js/internals/use-symbol-as-uid.js"(exports2, module22) { + var NATIVE_SYMBOL = require_native_symbol(); + module22.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol"; + } + }); + var require_is_symbol = __commonJS2({ + "node_modules/core-js/internals/is-symbol.js"(exports2, module22) { + var global2 = require_global(); + var getBuiltIn = require_get_built_in(); + var isCallable = require_is_callable(); + var isPrototypeOf = require_object_is_prototype_of(); + var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); + var Object2 = global2.Object; + module22.exports = USE_SYMBOL_AS_UID ? function(it) { + return typeof it == "symbol"; + } : function(it) { + var $Symbol = getBuiltIn("Symbol"); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object2(it)); + }; + } + }); + var require_try_to_string = __commonJS2({ + "node_modules/core-js/internals/try-to-string.js"(exports2, module22) { + var global2 = require_global(); + var String2 = global2.String; + module22.exports = function(argument) { + try { + return String2(argument); + } catch (error2) { + return "Object"; + } + }; + } + }); + var require_a_callable = __commonJS2({ + "node_modules/core-js/internals/a-callable.js"(exports2, module22) { + var global2 = require_global(); + var isCallable = require_is_callable(); + var tryToString = require_try_to_string(); + var TypeError2 = global2.TypeError; + module22.exports = function(argument) { + if (isCallable(argument)) + return argument; + throw TypeError2(tryToString(argument) + " is not a function"); + }; + } + }); + var require_get_method = __commonJS2({ + "node_modules/core-js/internals/get-method.js"(exports2, module22) { + var aCallable = require_a_callable(); + module22.exports = function(V, P) { + var func = V[P]; + return func == null ? void 0 : aCallable(func); + }; + } + }); + var require_ordinary_to_primitive = __commonJS2({ + "node_modules/core-js/internals/ordinary-to-primitive.js"(exports2, module22) { + var global2 = require_global(); + var call = require_function_call(); + var isCallable = require_is_callable(); + var isObject2 = require_is_object(); + var TypeError2 = global2.TypeError; + module22.exports = function(input, pref) { + var fn, val; + if (pref === "string" && isCallable(fn = input.toString) && !isObject2(val = call(fn, input))) + return val; + if (isCallable(fn = input.valueOf) && !isObject2(val = call(fn, input))) + return val; + if (pref !== "string" && isCallable(fn = input.toString) && !isObject2(val = call(fn, input))) + return val; + throw TypeError2("Can't convert object to primitive value"); + }; + } + }); + var require_is_pure = __commonJS2({ + "node_modules/core-js/internals/is-pure.js"(exports2, module22) { + module22.exports = false; + } + }); + var require_set_global = __commonJS2({ + "node_modules/core-js/internals/set-global.js"(exports2, module22) { + var global2 = require_global(); + var defineProperty = Object.defineProperty; + module22.exports = function(key, value) { + try { + defineProperty(global2, key, { value, configurable: true, writable: true }); + } catch (error2) { + global2[key] = value; + } + return value; + }; + } + }); + var require_shared_store = __commonJS2({ + "node_modules/core-js/internals/shared-store.js"(exports2, module22) { + var global2 = require_global(); + var setGlobal = require_set_global(); + var SHARED = "__core-js_shared__"; + var store = global2[SHARED] || setGlobal(SHARED, {}); + module22.exports = store; + } + }); + var require_shared = __commonJS2({ + "node_modules/core-js/internals/shared.js"(exports2, module22) { + var IS_PURE = require_is_pure(); + var store = require_shared_store(); + (module22.exports = function(key, value) { + return store[key] || (store[key] = value !== void 0 ? value : {}); + })("versions", []).push({ + version: "3.22.2", + mode: IS_PURE ? "pure" : "global", + copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", + license: "https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE", + source: "https://github.com/zloirock/core-js" + }); + } + }); + var require_to_object = __commonJS2({ + "node_modules/core-js/internals/to-object.js"(exports2, module22) { + var global2 = require_global(); + var requireObjectCoercible = require_require_object_coercible(); + var Object2 = global2.Object; + module22.exports = function(argument) { + return Object2(requireObjectCoercible(argument)); + }; + } + }); + var require_has_own_property = __commonJS2({ + "node_modules/core-js/internals/has-own-property.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + var toObject = require_to_object(); + var hasOwnProperty = uncurryThis({}.hasOwnProperty); + module22.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); + }; + } + }); + var require_uid = __commonJS2({ + "node_modules/core-js/internals/uid.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + var id = 0; + var postfix = Math.random(); + var toString2 = uncurryThis(1 .toString); + module22.exports = function(key) { + return "Symbol(" + (key === void 0 ? "" : key) + ")_" + toString2(++id + postfix, 36); + }; + } + }); + var require_well_known_symbol = __commonJS2({ + "node_modules/core-js/internals/well-known-symbol.js"(exports2, module22) { + var global2 = require_global(); + var shared = require_shared(); + var hasOwn = require_has_own_property(); + var uid = require_uid(); + var NATIVE_SYMBOL = require_native_symbol(); + var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); + var WellKnownSymbolsStore = shared("wks"); + var Symbol2 = global2.Symbol; + var symbolFor = Symbol2 && Symbol2["for"]; + var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2 : Symbol2 && Symbol2.withoutSetter || uid; + module22.exports = function(name) { + if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == "string")) { + var description = "Symbol." + name; + if (NATIVE_SYMBOL && hasOwn(Symbol2, name)) { + WellKnownSymbolsStore[name] = Symbol2[name]; + } else if (USE_SYMBOL_AS_UID && symbolFor) { + WellKnownSymbolsStore[name] = symbolFor(description); + } else { + WellKnownSymbolsStore[name] = createWellKnownSymbol(description); + } + } + return WellKnownSymbolsStore[name]; + }; + } + }); + var require_to_primitive = __commonJS2({ + "node_modules/core-js/internals/to-primitive.js"(exports2, module22) { + var global2 = require_global(); + var call = require_function_call(); + var isObject2 = require_is_object(); + var isSymbol = require_is_symbol(); + var getMethod = require_get_method(); + var ordinaryToPrimitive = require_ordinary_to_primitive(); + var wellKnownSymbol = require_well_known_symbol(); + var TypeError2 = global2.TypeError; + var TO_PRIMITIVE = wellKnownSymbol("toPrimitive"); + module22.exports = function(input, pref) { + if (!isObject2(input) || isSymbol(input)) + return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === void 0) + pref = "default"; + result = call(exoticToPrim, input, pref); + if (!isObject2(result) || isSymbol(result)) + return result; + throw TypeError2("Can't convert object to primitive value"); + } + if (pref === void 0) + pref = "number"; + return ordinaryToPrimitive(input, pref); + }; + } + }); + var require_to_property_key = __commonJS2({ + "node_modules/core-js/internals/to-property-key.js"(exports2, module22) { + var toPrimitive = require_to_primitive(); + var isSymbol = require_is_symbol(); + module22.exports = function(argument) { + var key = toPrimitive(argument, "string"); + return isSymbol(key) ? key : key + ""; + }; + } + }); + var require_document_create_element = __commonJS2({ + "node_modules/core-js/internals/document-create-element.js"(exports2, module22) { + var global2 = require_global(); + var isObject2 = require_is_object(); + var document2 = global2.document; + var EXISTS = isObject2(document2) && isObject2(document2.createElement); + module22.exports = function(it) { + return EXISTS ? document2.createElement(it) : {}; + }; + } + }); + var require_ie8_dom_define = __commonJS2({ + "node_modules/core-js/internals/ie8-dom-define.js"(exports2, module22) { + var DESCRIPTORS = require_descriptors(); + var fails = require_fails(); + var createElement = require_document_create_element(); + module22.exports = !DESCRIPTORS && !fails(function() { + return Object.defineProperty(createElement("div"), "a", { + get: function() { + return 7; + } + }).a != 7; + }); + } + }); + var require_object_get_own_property_descriptor = __commonJS2({ + "node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports2) { + var DESCRIPTORS = require_descriptors(); + var call = require_function_call(); + var propertyIsEnumerableModule = require_object_property_is_enumerable(); + var createPropertyDescriptor = require_create_property_descriptor(); + var toIndexedObject = require_to_indexed_object(); + var toPropertyKey = require_to_property_key(); + var hasOwn = require_has_own_property(); + var IE8_DOM_DEFINE = require_ie8_dom_define(); + var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + exports2.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) + try { + return $getOwnPropertyDescriptor(O, P); + } catch (error2) { + } + if (hasOwn(O, P)) + return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); + }; + } + }); + var require_v8_prototype_define_bug = __commonJS2({ + "node_modules/core-js/internals/v8-prototype-define-bug.js"(exports2, module22) { + var DESCRIPTORS = require_descriptors(); + var fails = require_fails(); + module22.exports = DESCRIPTORS && fails(function() { + return Object.defineProperty(function() { + }, "prototype", { + value: 42, + writable: false + }).prototype != 42; + }); + } + }); + var require_an_object = __commonJS2({ + "node_modules/core-js/internals/an-object.js"(exports2, module22) { + var global2 = require_global(); + var isObject2 = require_is_object(); + var String2 = global2.String; + var TypeError2 = global2.TypeError; + module22.exports = function(argument) { + if (isObject2(argument)) + return argument; + throw TypeError2(String2(argument) + " is not an object"); + }; + } + }); + var require_object_define_property = __commonJS2({ + "node_modules/core-js/internals/object-define-property.js"(exports2) { + var global2 = require_global(); + var DESCRIPTORS = require_descriptors(); + var IE8_DOM_DEFINE = require_ie8_dom_define(); + var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug(); + var anObject = require_an_object(); + var toPropertyKey = require_to_property_key(); + var TypeError2 = global2.TypeError; + var $defineProperty = Object.defineProperty; + var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var ENUMERABLE = "enumerable"; + var CONFIGURABLE = "configurable"; + var WRITABLE = "writable"; + exports2.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === "function" && P === "prototype" && "value" in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } + return $defineProperty(O, P, Attributes); + } : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) + try { + return $defineProperty(O, P, Attributes); + } catch (error2) { + } + if ("get" in Attributes || "set" in Attributes) + throw TypeError2("Accessors not supported"); + if ("value" in Attributes) + O[P] = Attributes.value; + return O; + }; + } + }); + var require_create_non_enumerable_property = __commonJS2({ + "node_modules/core-js/internals/create-non-enumerable-property.js"(exports2, module22) { + var DESCRIPTORS = require_descriptors(); + var definePropertyModule = require_object_define_property(); + var createPropertyDescriptor = require_create_property_descriptor(); + module22.exports = DESCRIPTORS ? function(object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); + } : function(object, key, value) { + object[key] = value; + return object; + }; + } + }); + var require_inspect_source = __commonJS2({ + "node_modules/core-js/internals/inspect-source.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + var isCallable = require_is_callable(); + var store = require_shared_store(); + var functionToString = uncurryThis(Function.toString); + if (!isCallable(store.inspectSource)) { + store.inspectSource = function(it) { + return functionToString(it); + }; + } + module22.exports = store.inspectSource; + } + }); + var require_native_weak_map = __commonJS2({ + "node_modules/core-js/internals/native-weak-map.js"(exports2, module22) { + var global2 = require_global(); + var isCallable = require_is_callable(); + var inspectSource = require_inspect_source(); + var WeakMap2 = global2.WeakMap; + module22.exports = isCallable(WeakMap2) && /native code/.test(inspectSource(WeakMap2)); + } + }); + var require_shared_key = __commonJS2({ + "node_modules/core-js/internals/shared-key.js"(exports2, module22) { + var shared = require_shared(); + var uid = require_uid(); + var keys = shared("keys"); + module22.exports = function(key) { + return keys[key] || (keys[key] = uid(key)); + }; + } + }); + var require_hidden_keys = __commonJS2({ + "node_modules/core-js/internals/hidden-keys.js"(exports2, module22) { + module22.exports = {}; + } + }); + var require_internal_state = __commonJS2({ + "node_modules/core-js/internals/internal-state.js"(exports2, module22) { + var NATIVE_WEAK_MAP = require_native_weak_map(); + var global2 = require_global(); + var uncurryThis = require_function_uncurry_this(); + var isObject2 = require_is_object(); + var createNonEnumerableProperty = require_create_non_enumerable_property(); + var hasOwn = require_has_own_property(); + var shared = require_shared_store(); + var sharedKey = require_shared_key(); + var hiddenKeys = require_hidden_keys(); + var OBJECT_ALREADY_INITIALIZED = "Object already initialized"; + var TypeError2 = global2.TypeError; + var WeakMap2 = global2.WeakMap; + var set2; + var get2; + var has; + var enforce = function(it) { + return has(it) ? get2(it) : set2(it, {}); + }; + var getterFor = function(TYPE) { + return function(it) { + var state; + if (!isObject2(it) || (state = get2(it)).type !== TYPE) { + throw TypeError2("Incompatible receiver, " + TYPE + " required"); + } + return state; + }; + }; + if (NATIVE_WEAK_MAP || shared.state) { + store = shared.state || (shared.state = new WeakMap2()); + wmget = uncurryThis(store.get); + wmhas = uncurryThis(store.has); + wmset = uncurryThis(store.set); + set2 = function(it, metadata) { + if (wmhas(store, it)) + throw new TypeError2(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + wmset(store, it, metadata); + return metadata; + }; + get2 = function(it) { + return wmget(store, it) || {}; + }; + has = function(it) { + return wmhas(store, it); + }; + } else { + STATE = sharedKey("state"); + hiddenKeys[STATE] = true; + set2 = function(it, metadata) { + if (hasOwn(it, STATE)) + throw new TypeError2(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get2 = function(it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function(it) { + return hasOwn(it, STATE); + }; + } + var store; + var wmget; + var wmhas; + var wmset; + var STATE; + module22.exports = { + set: set2, + get: get2, + has, + enforce, + getterFor + }; + } + }); + var require_function_name = __commonJS2({ + "node_modules/core-js/internals/function-name.js"(exports2, module22) { + var DESCRIPTORS = require_descriptors(); + var hasOwn = require_has_own_property(); + var FunctionPrototype = Function.prototype; + var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; + var EXISTS = hasOwn(FunctionPrototype, "name"); + var PROPER = EXISTS && function something() { + }.name === "something"; + var CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, "name").configurable); + module22.exports = { + EXISTS, + PROPER, + CONFIGURABLE + }; + } + }); + var require_redefine = __commonJS2({ + "node_modules/core-js/internals/redefine.js"(exports2, module22) { + var global2 = require_global(); + var isCallable = require_is_callable(); + var hasOwn = require_has_own_property(); + var createNonEnumerableProperty = require_create_non_enumerable_property(); + var setGlobal = require_set_global(); + var inspectSource = require_inspect_source(); + var InternalStateModule = require_internal_state(); + var CONFIGURABLE_FUNCTION_NAME = require_function_name().CONFIGURABLE; + var getInternalState = InternalStateModule.get; + var enforceInternalState = InternalStateModule.enforce; + var TEMPLATE = String(String).split("String"); + (module22.exports = function(O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + var name = options && options.name !== void 0 ? options.name : key; + var state; + if (isCallable(value)) { + if (String(name).slice(0, 7) === "Symbol(") { + name = "[" + String(name).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"; + } + if (!hasOwn(value, "name") || CONFIGURABLE_FUNCTION_NAME && value.name !== name) { + createNonEnumerableProperty(value, "name", name); + } + state = enforceInternalState(value); + if (!state.source) { + state.source = TEMPLATE.join(typeof name == "string" ? name : ""); + } + } + if (O === global2) { + if (simple) + O[key] = value; + else + setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) + O[key] = value; + else + createNonEnumerableProperty(O, key, value); + })(Function.prototype, "toString", function toString2() { + return isCallable(this) && getInternalState(this).source || inspectSource(this); + }); + } + }); + var require_to_integer_or_infinity = __commonJS2({ + "node_modules/core-js/internals/to-integer-or-infinity.js"(exports2, module22) { + var ceil = Math.ceil; + var floor = Math.floor; + module22.exports = function(argument) { + var number = +argument; + return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number); + }; + } + }); + var require_to_absolute_index = __commonJS2({ + "node_modules/core-js/internals/to-absolute-index.js"(exports2, module22) { + var toIntegerOrInfinity = require_to_integer_or_infinity(); + var max = Math.max; + var min = Math.min; + module22.exports = function(index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); + }; + } + }); + var require_to_length = __commonJS2({ + "node_modules/core-js/internals/to-length.js"(exports2, module22) { + var toIntegerOrInfinity = require_to_integer_or_infinity(); + var min = Math.min; + module22.exports = function(argument) { + return argument > 0 ? min(toIntegerOrInfinity(argument), 9007199254740991) : 0; + }; + } + }); + var require_length_of_array_like = __commonJS2({ + "node_modules/core-js/internals/length-of-array-like.js"(exports2, module22) { + var toLength = require_to_length(); + module22.exports = function(obj) { + return toLength(obj.length); + }; + } + }); + var require_array_includes = __commonJS2({ + "node_modules/core-js/internals/array-includes.js"(exports2, module22) { + var toIndexedObject = require_to_indexed_object(); + var toAbsoluteIndex = require_to_absolute_index(); + var lengthOfArrayLike = require_length_of_array_like(); + var createMethod = function(IS_INCLUDES) { + return function($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + var index = toAbsoluteIndex(fromIndex, length); + var value; + if (IS_INCLUDES && el != el) + while (length > index) { + value = O[index++]; + if (value != value) + return true; + } + else + for (; length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) + return IS_INCLUDES || index || 0; + } + return !IS_INCLUDES && -1; + }; + }; + module22.exports = { + includes: createMethod(true), + indexOf: createMethod(false) + }; + } + }); + var require_object_keys_internal = __commonJS2({ + "node_modules/core-js/internals/object-keys-internal.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + var hasOwn = require_has_own_property(); + var toIndexedObject = require_to_indexed_object(); + var indexOf = require_array_includes().indexOf; + var hiddenKeys = require_hidden_keys(); + var push = uncurryThis([].push); + module22.exports = function(object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) + !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + while (names.length > i) + if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; + }; + } + }); + var require_enum_bug_keys = __commonJS2({ + "node_modules/core-js/internals/enum-bug-keys.js"(exports2, module22) { + module22.exports = [ + "constructor", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "toLocaleString", + "toString", + "valueOf" + ]; + } + }); + var require_object_get_own_property_names = __commonJS2({ + "node_modules/core-js/internals/object-get-own-property-names.js"(exports2) { + var internalObjectKeys = require_object_keys_internal(); + var enumBugKeys = require_enum_bug_keys(); + var hiddenKeys = enumBugKeys.concat("length", "prototype"); + exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); + }; + } + }); + var require_object_get_own_property_symbols = __commonJS2({ + "node_modules/core-js/internals/object-get-own-property-symbols.js"(exports2) { + exports2.f = Object.getOwnPropertySymbols; + } + }); + var require_own_keys = __commonJS2({ + "node_modules/core-js/internals/own-keys.js"(exports2, module22) { + var getBuiltIn = require_get_built_in(); + var uncurryThis = require_function_uncurry_this(); + var getOwnPropertyNamesModule = require_object_get_own_property_names(); + var getOwnPropertySymbolsModule = require_object_get_own_property_symbols(); + var anObject = require_an_object(); + var concat = uncurryThis([].concat); + module22.exports = getBuiltIn("Reflect", "ownKeys") || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; + }; + } + }); + var require_copy_constructor_properties = __commonJS2({ + "node_modules/core-js/internals/copy-constructor-properties.js"(exports2, module22) { + var hasOwn = require_has_own_property(); + var ownKeys = require_own_keys(); + var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor(); + var definePropertyModule = require_object_define_property(); + module22.exports = function(target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } + }; + } + }); + var require_is_forced = __commonJS2({ + "node_modules/core-js/internals/is-forced.js"(exports2, module22) { + var fails = require_fails(); + var isCallable = require_is_callable(); + var replacement = /#|\.prototype\./; + var isForced = function(feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection; + }; + var normalize = isForced.normalize = function(string) { + return String(string).replace(replacement, ".").toLowerCase(); + }; + var data = isForced.data = {}; + var NATIVE = isForced.NATIVE = "N"; + var POLYFILL = isForced.POLYFILL = "P"; + module22.exports = isForced; + } + }); + var require_export = __commonJS2({ + "node_modules/core-js/internals/export.js"(exports2, module22) { + var global2 = require_global(); + var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f; + var createNonEnumerableProperty = require_create_non_enumerable_property(); + var redefine = require_redefine(); + var setGlobal = require_set_global(); + var copyConstructorProperties = require_copy_constructor_properties(); + var isForced = require_is_forced(); + module22.exports = function(options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global2; + } else if (STATIC) { + target = global2[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global2[TARGET] || {}).prototype; + } + if (target) + for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else + targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced); + if (!FORCED && targetProperty !== void 0) { + if (typeof sourceProperty == typeof targetProperty) + continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + if (options.sham || targetProperty && targetProperty.sham) { + createNonEnumerableProperty(sourceProperty, "sham", true); + } + redefine(target, key, sourceProperty, options); + } + }; + } + }); + var require_is_array = __commonJS2({ + "node_modules/core-js/internals/is-array.js"(exports2, module22) { + var classof = require_classof_raw(); + module22.exports = Array.isArray || function isArray(argument) { + return classof(argument) == "Array"; + }; + } + }); + var require_function_bind_context = __commonJS2({ + "node_modules/core-js/internals/function-bind-context.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + var aCallable = require_a_callable(); + var NATIVE_BIND = require_function_bind_native(); + var bind = uncurryThis(uncurryThis.bind); + module22.exports = function(fn, that) { + aCallable(fn); + return that === void 0 ? fn : NATIVE_BIND ? bind(fn, that) : function() { + return fn.apply(that, arguments); + }; + }; + } + }); + var require_flatten_into_array = __commonJS2({ + "node_modules/core-js/internals/flatten-into-array.js"(exports2, module22) { + "use strict"; + var global2 = require_global(); + var isArray = require_is_array(); + var lengthOfArrayLike = require_length_of_array_like(); + var bind = require_function_bind_context(); + var TypeError2 = global2.TypeError; + var flattenIntoArray = function(target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? bind(mapper, thisArg) : false; + var element, elementLen; + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + if (depth > 0 && isArray(element)) { + elementLen = lengthOfArrayLike(element); + targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1; + } else { + if (targetIndex >= 9007199254740991) + throw TypeError2("Exceed the acceptable array length"); + target[targetIndex] = element; + } + targetIndex++; + } + sourceIndex++; + } + return targetIndex; + }; + module22.exports = flattenIntoArray; + } + }); + var require_to_string_tag_support = __commonJS2({ + "node_modules/core-js/internals/to-string-tag-support.js"(exports2, module22) { + var wellKnownSymbol = require_well_known_symbol(); + var TO_STRING_TAG = wellKnownSymbol("toStringTag"); + var test = {}; + test[TO_STRING_TAG] = "z"; + module22.exports = String(test) === "[object z]"; + } + }); + var require_classof = __commonJS2({ + "node_modules/core-js/internals/classof.js"(exports2, module22) { + var global2 = require_global(); + var TO_STRING_TAG_SUPPORT = require_to_string_tag_support(); + var isCallable = require_is_callable(); + var classofRaw = require_classof_raw(); + var wellKnownSymbol = require_well_known_symbol(); + var TO_STRING_TAG = wellKnownSymbol("toStringTag"); + var Object2 = global2.Object; + var CORRECT_ARGUMENTS = classofRaw(function() { + return arguments; + }()) == "Arguments"; + var tryGet = function(it, key) { + try { + return it[key]; + } catch (error2) { + } + }; + module22.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function(it) { + var O, tag, result; + return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = Object2(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && isCallable(O.callee) ? "Arguments" : result; + }; + } + }); + var require_is_constructor = __commonJS2({ + "node_modules/core-js/internals/is-constructor.js"(exports2, module22) { + var uncurryThis = require_function_uncurry_this(); + var fails = require_fails(); + var isCallable = require_is_callable(); + var classof = require_classof(); + var getBuiltIn = require_get_built_in(); + var inspectSource = require_inspect_source(); + var noop = function() { + }; + var empty = []; + var construct = getBuiltIn("Reflect", "construct"); + var constructorRegExp = /^\s*(?:class|function)\b/; + var exec = uncurryThis(constructorRegExp.exec); + var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); + var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) + return false; + try { + construct(noop, empty, argument); + return true; + } catch (error2) { + return false; + } + }; + var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) + return false; + switch (classof(argument)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return false; + } + try { + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error2) { + return true; + } + }; + isConstructorLegacy.sham = true; + module22.exports = !construct || fails(function() { + var called; + return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function() { + called = true; + }) || called; + }) ? isConstructorLegacy : isConstructorModern; + } + }); + var require_array_species_constructor = __commonJS2({ + "node_modules/core-js/internals/array-species-constructor.js"(exports2, module22) { + var global2 = require_global(); + var isArray = require_is_array(); + var isConstructor = require_is_constructor(); + var isObject2 = require_is_object(); + var wellKnownSymbol = require_well_known_symbol(); + var SPECIES = wellKnownSymbol("species"); + var Array2 = global2.Array; + module22.exports = function(originalArray) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + if (isConstructor(C) && (C === Array2 || isArray(C.prototype))) + C = void 0; + else if (isObject2(C)) { + C = C[SPECIES]; + if (C === null) + C = void 0; + } + } + return C === void 0 ? Array2 : C; + }; + } + }); + var require_array_species_create = __commonJS2({ + "node_modules/core-js/internals/array-species-create.js"(exports2, module22) { + var arraySpeciesConstructor = require_array_species_constructor(); + module22.exports = function(originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); + }; + } + }); + var require_es_array_flat_map = __commonJS2({ + "node_modules/core-js/modules/es.array.flat-map.js"() { + "use strict"; + var $ = require_export(); + var flattenIntoArray = require_flatten_into_array(); + var aCallable = require_a_callable(); + var toObject = require_to_object(); + var lengthOfArrayLike = require_length_of_array_like(); + var arraySpeciesCreate = require_array_species_create(); + $({ target: "Array", proto: true }, { + flatMap: function flatMap(callbackfn) { + var O = toObject(this); + var sourceLen = lengthOfArrayLike(O); + var A; + aCallable(callbackfn); + A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : void 0); + return A; + } + }); + } + }); + var require_iterators = __commonJS2({ + "node_modules/core-js/internals/iterators.js"(exports2, module22) { + module22.exports = {}; + } + }); + var require_is_array_iterator_method = __commonJS2({ + "node_modules/core-js/internals/is-array-iterator-method.js"(exports2, module22) { + var wellKnownSymbol = require_well_known_symbol(); + var Iterators = require_iterators(); + var ITERATOR = wellKnownSymbol("iterator"); + var ArrayPrototype = Array.prototype; + module22.exports = function(it) { + return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); + }; + } + }); + var require_get_iterator_method = __commonJS2({ + "node_modules/core-js/internals/get-iterator-method.js"(exports2, module22) { + var classof = require_classof(); + var getMethod = require_get_method(); + var Iterators = require_iterators(); + var wellKnownSymbol = require_well_known_symbol(); + var ITERATOR = wellKnownSymbol("iterator"); + module22.exports = function(it) { + if (it != void 0) + return getMethod(it, ITERATOR) || getMethod(it, "@@iterator") || Iterators[classof(it)]; + }; + } + }); + var require_get_iterator = __commonJS2({ + "node_modules/core-js/internals/get-iterator.js"(exports2, module22) { + var global2 = require_global(); + var call = require_function_call(); + var aCallable = require_a_callable(); + var anObject = require_an_object(); + var tryToString = require_try_to_string(); + var getIteratorMethod = require_get_iterator_method(); + var TypeError2 = global2.TypeError; + module22.exports = function(argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) + return anObject(call(iteratorMethod, argument)); + throw TypeError2(tryToString(argument) + " is not iterable"); + }; + } + }); + var require_iterator_close = __commonJS2({ + "node_modules/core-js/internals/iterator-close.js"(exports2, module22) { + var call = require_function_call(); + var anObject = require_an_object(); + var getMethod = require_get_method(); + module22.exports = function(iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, "return"); + if (!innerResult) { + if (kind === "throw") + throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error2) { + innerError = true; + innerResult = error2; + } + if (kind === "throw") + throw value; + if (innerError) + throw innerResult; + anObject(innerResult); + return value; + }; + } + }); + var require_iterate = __commonJS2({ + "node_modules/core-js/internals/iterate.js"(exports2, module22) { + var global2 = require_global(); + var bind = require_function_bind_context(); + var call = require_function_call(); + var anObject = require_an_object(); + var tryToString = require_try_to_string(); + var isArrayIteratorMethod = require_is_array_iterator_method(); + var lengthOfArrayLike = require_length_of_array_like(); + var isPrototypeOf = require_object_is_prototype_of(); + var getIterator = require_get_iterator(); + var getIteratorMethod = require_get_iterator_method(); + var iteratorClose = require_iterator_close(); + var TypeError2 = global2.TypeError; + var Result = function(stopped, result) { + this.stopped = stopped; + this.result = result; + }; + var ResultPrototype = Result.prototype; + module22.exports = function(iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + var stop = function(condition) { + if (iterator) + iteratorClose(iterator, "normal", condition); + return new Result(true, condition); + }; + var callFn = function(value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } + return INTERRUPTED ? fn(value, stop) : fn(value); + }; + if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) + throw TypeError2(tryToString(iterable) + " is not iterable"); + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) + return result; + } + return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + next = iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error2) { + iteratorClose(iterator, "throw", error2); + } + if (typeof result == "object" && result && isPrototypeOf(ResultPrototype, result)) + return result; + } + return new Result(false); + }; + } + }); + var require_create_property = __commonJS2({ + "node_modules/core-js/internals/create-property.js"(exports2, module22) { + "use strict"; + var toPropertyKey = require_to_property_key(); + var definePropertyModule = require_object_define_property(); + var createPropertyDescriptor = require_create_property_descriptor(); + module22.exports = function(object, key, value) { + var propertyKey = toPropertyKey(key); + if (propertyKey in object) + definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else + object[propertyKey] = value; + }; + } + }); + var require_es_object_from_entries = __commonJS2({ + "node_modules/core-js/modules/es.object.from-entries.js"() { + var $ = require_export(); + var iterate = require_iterate(); + var createProperty = require_create_property(); + $({ target: "Object", stat: true }, { + fromEntries: function fromEntries(iterable) { + var obj = {}; + iterate(iterable, function(k, v) { + createProperty(obj, k, v); + }, { AS_ENTRIES: true }); + return obj; + } + }); + } + }); + var require_es_array_flat = __commonJS2({ + "node_modules/core-js/modules/es.array.flat.js"() { + "use strict"; + var $ = require_export(); + var flattenIntoArray = require_flatten_into_array(); + var toObject = require_to_object(); + var lengthOfArrayLike = require_length_of_array_like(); + var toIntegerOrInfinity = require_to_integer_or_infinity(); + var arraySpeciesCreate = require_array_species_create(); + $({ target: "Array", proto: true }, { + flat: function flat() { + var depthArg = arguments.length ? arguments[0] : void 0; + var O = toObject(this); + var sourceLen = lengthOfArrayLike(O); + var A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === void 0 ? 1 : toIntegerOrInfinity(depthArg)); + return A; + } + }); + } + }); + var _excluded = ["cliName", "cliCategory", "cliDescription"]; + var _excluded2 = ["_"]; + var _excluded3 = ["overrides"]; + var _excluded4 = ["languageId"]; + function _objectWithoutProperties(source, excluded) { + if (source == null) + return {}; + var target = _objectWithoutPropertiesLoose(source, excluded); + var key, i; + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) + continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) + continue; + target[key] = source[key]; + } + } + return target; + } + function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) + return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) + continue; + target[key] = source[key]; + } + return target; + } + require_es_array_flat_map(); + require_es_object_from_entries(); + require_es_array_flat(); + var __create2 = Object.create; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames22 = Object.getOwnPropertyNames; + var __getProtoOf2 = Object.getPrototypeOf; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames22(fn)[0]])(fn = 0)), res; + }; + var __commonJS22 = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames22(cb)[0]])((mod = { + exports: {} + }).exports, mod), mod.exports; + }; + var __export = (target, all) => { + for (var name in all) + __defProp2(target, name, { + get: all[name], + enumerable: true + }); + }; + var __copyProps2 = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames22(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { + get: () => from[key], + enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable + }); + } + return to; + }; + var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { + value: mod, + enumerable: true + }) : target, mod)); + var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { + value: true + }), mod); + var require_base = __commonJS22({ + "node_modules/diff/lib/diff/base.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2["default"] = Diff; + function Diff() { + } + Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var callback = options.callback; + if (typeof options === "function") { + callback = options; + options = {}; + } + this.options = options; + var self2 = this; + function done(value) { + if (callback) { + setTimeout(function() { + callback(void 0, value); + }, 0); + return true; + } else { + return value; + } + } + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + var bestPath = [{ + newPos: -1, + components: [] + }]; + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return done([{ + value: this.join(newString), + count: newString.length + }]); + } + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + bestPath[diagonalPath - 1] = void 0; + } + var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + if (!canAdd && !canRemove) { + bestPath[diagonalPath] = void 0; + continue; + } + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self2.pushComponent(basePath.components, void 0, true); + } else { + basePath = addPath; + basePath.newPos++; + self2.pushComponent(basePath.components, true, void 0); + } + _oldPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self2, basePath.components, newString, oldString, self2.useLongestToken)); + } else { + bestPath[diagonalPath] = basePath; + } + } + editLength++; + } + if (callback) { + (function exec() { + setTimeout(function() { + if (editLength > maxEditLength) { + return callback(); + } + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + if (last && last.added === added && last.removed === removed) { + components[components.length - 1] = { + count: last.count + 1, + added, + removed + }; + } else { + components.push({ + count: 1, + added, + removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(""); + }, + join: function join(chars) { + return chars.join(""); + } + }; + function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function(value2, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value2.length ? oldValue : value2; + }); + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + newPos += component.count; + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + var lastComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff.equals("", lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + return components; + } + function clonePath(path2) { + return { + newPos: path2.newPos, + components: path2.components.slice(0) + }; + } + } + }); + var require_array = __commonJS22({ + "node_modules/diff/lib/diff/array.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.diffArrays = diffArrays; + exports2.arrayDiff = void 0; + var _base = _interopRequireDefault(require_base()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; + } + var arrayDiff = new _base["default"](); + exports2.arrayDiff = arrayDiff; + arrayDiff.tokenize = function(value) { + return value.slice(); + }; + arrayDiff.join = arrayDiff.removeEmpty = function(value) { + return value; + }; + function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); + } + } + }); + var escape_string_regexp_exports = {}; + __export(escape_string_regexp_exports, { + default: () => escapeStringRegexp + }); + function escapeStringRegexp(string) { + if (typeof string !== "string") { + throw new TypeError("Expected a string"); + } + return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d"); + } + var init_escape_string_regexp = __esm({ + "node_modules/escape-string-regexp/index.js"() { + } + }); + var require_get_last = __commonJS22({ + "src/utils/get-last.js"(exports2, module22) { + "use strict"; + var getLast = (arr) => arr[arr.length - 1]; + module22.exports = getLast; + } + }); + var require_debug = __commonJS22({ + "node_modules/semver/internal/debug.js"(exports2, module22) { + var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => { + }; + module22.exports = debug2; + } + }); + var require_constants = __commonJS22({ + "node_modules/semver/internal/constants.js"(exports2, module22) { + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + var MAX_SAFE_COMPONENT_LENGTH = 16; + module22.exports = { + SEMVER_SPEC_VERSION, + MAX_LENGTH, + MAX_SAFE_INTEGER, + MAX_SAFE_COMPONENT_LENGTH + }; + } + }); + var require_re = __commonJS22({ + "node_modules/semver/internal/re.js"(exports2, module22) { + var { + MAX_SAFE_COMPONENT_LENGTH + } = require_constants(); + var debug2 = require_debug(); + exports2 = module22.exports = {}; + var re = exports2.re = []; + var src = exports2.src = []; + var t = exports2.t = {}; + var R = 0; + var createToken = (name, value, isGlobal) => { + const index = R++; + debug2(name, index, value); + t[name] = index; + src[index] = value; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + }; + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "[0-9]+"); + createToken("NONNUMERICIDENTIFIER", "\\d*[a-zA-Z-][a-zA-Z0-9-]*"); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", "[0-9A-Za-z-]+"); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCE", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports2.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports2.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports2.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } + }); + var require_parse_options = __commonJS22({ + "node_modules/semver/internal/parse-options.js"(exports2, module22) { + var opts = ["includePrerelease", "loose", "rtl"]; + var parseOptions = (options) => !options ? {} : typeof options !== "object" ? { + loose: true + } : opts.filter((k) => options[k]).reduce((o, k) => { + o[k] = true; + return o; + }, {}); + module22.exports = parseOptions; + } + }); + var require_identifiers = __commonJS22({ + "node_modules/semver/internal/identifiers.js"(exports2, module22) { + var numeric = /^[0-9]+$/; + var compareIdentifiers = (a, b) => { + const anum = numeric.test(a); + const bnum = numeric.test(b); + if (anum && bnum) { + a = +a; + b = +b; + } + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; + }; + var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); + module22.exports = { + compareIdentifiers, + rcompareIdentifiers + }; + } + }); + var require_semver = __commonJS22({ + "node_modules/semver/classes/semver.js"(exports2, module22) { + var debug2 = require_debug(); + var { + MAX_LENGTH, + MAX_SAFE_INTEGER + } = require_constants(); + var { + re, + t + } = require_re(); + var parseOptions = require_parse_options(); + var { + compareIdentifiers + } = require_identifiers(); + var SemVer = class { + constructor(version2, options) { + options = parseOptions(options); + if (version2 instanceof SemVer) { + if (version2.loose === !!options.loose && version2.includePrerelease === !!options.includePrerelease) { + return version2; + } else { + version2 = version2.version; + } + } else if (typeof version2 !== "string") { + throw new TypeError(`Invalid Version: ${version2}`); + } + if (version2.length > MAX_LENGTH) { + throw new TypeError(`version is longer than ${MAX_LENGTH} characters`); + } + debug2("SemVer", version2, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m = version2.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m) { + throw new TypeError(`Invalid Version: ${version2}`); + } + this.raw = version2; + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError("Invalid major version"); + } + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError("Invalid minor version"); + } + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError("Invalid patch version"); + } + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num; + } + } + return id; + }); + } + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) { + this.version += `-${this.prerelease.join(".")}`; + } + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug2("SemVer.compare", this.version, this.options, other); + if (!(other instanceof SemVer)) { + if (typeof other === "string" && other === this.version) { + return 0; + } + other = new SemVer(other, this.options); + } + if (other.version === this.version) { + return 0; + } + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch); + } + comparePre(other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + if (this.prerelease.length && !other.prerelease.length) { + return -1; + } else if (!this.prerelease.length && other.prerelease.length) { + return 1; + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0; + } + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug2("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + compareBuild(other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug2("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + inc(release, identifier) { + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier); + this.inc("pre", identifier); + break; + case "prerelease": + if (this.prerelease.length === 0) { + this.inc("patch", identifier); + } + this.inc("pre", identifier); + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break; + case "pre": + if (this.prerelease.length === 0) { + this.prerelease = [0]; + } else { + let i = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === "number") { + this.prerelease[i]++; + i = -2; + } + } + if (i === -1) { + this.prerelease.push(0); + } + } + if (identifier) { + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0]; + } + } else { + this.prerelease = [identifier, 0]; + } + } + break; + default: + throw new Error(`invalid increment argument: ${release}`); + } + this.format(); + this.raw = this.version; + return this; + } + }; + module22.exports = SemVer; + } + }); + var require_compare = __commonJS22({ + "node_modules/semver/functions/compare.js"(exports2, module22) { + var SemVer = require_semver(); + var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); + module22.exports = compare; + } + }); + var require_lt = __commonJS22({ + "node_modules/semver/functions/lt.js"(exports2, module22) { + var compare = require_compare(); + var lt = (a, b, loose) => compare(a, b, loose) < 0; + module22.exports = lt; + } + }); + var require_gte = __commonJS22({ + "node_modules/semver/functions/gte.js"(exports2, module22) { + var compare = require_compare(); + var gte = (a, b, loose) => compare(a, b, loose) >= 0; + module22.exports = gte; + } + }); + var require_arrayify = __commonJS22({ + "src/utils/arrayify.js"(exports2, module22) { + "use strict"; + module22.exports = (object, keyName) => Object.entries(object).map(([key, value]) => Object.assign({ + [keyName]: key + }, value)); + } + }); + var require_lib2 = __commonJS22({ + "node_modules/outdent/lib/index.js"(exports2, module22) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.outdent = void 0; + function noop() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + } + function createWeakMap() { + if (typeof WeakMap !== "undefined") { + return /* @__PURE__ */ new WeakMap(); + } else { + return fakeSetOrMap(); + } + } + function fakeSetOrMap() { + return { + add: noop, + delete: noop, + get: noop, + set: noop, + has: function(k) { + return false; + } + }; + } + var hop = Object.prototype.hasOwnProperty; + var has = function(obj, prop) { + return hop.call(obj, prop); + }; + function extend3(target, source) { + for (var prop in source) { + if (has(source, prop)) { + target[prop] = source[prop]; + } + } + return target; + } + var reLeadingNewline = /^[ \t]*(?:\r\n|\r|\n)/; + var reTrailingNewline = /(?:\r\n|\r|\n)[ \t]*$/; + var reStartsWithNewlineOrIsEmpty = /^(?:[\r\n]|$)/; + var reDetectIndentation = /(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/; + var reOnlyWhitespaceWithAtLeastOneNewline = /^[ \t]*[\r\n][ \t\r\n]*$/; + function _outdentArray(strings, firstInterpolatedValueSetsIndentationLevel, options) { + var indentationLevel = 0; + var match = strings[0].match(reDetectIndentation); + if (match) { + indentationLevel = match[1].length; + } + var reSource = "(\\r\\n|\\r|\\n).{0," + indentationLevel + "}"; + var reMatchIndent = new RegExp(reSource, "g"); + if (firstInterpolatedValueSetsIndentationLevel) { + strings = strings.slice(1); + } + var newline = options.newline, trimLeadingNewline = options.trimLeadingNewline, trimTrailingNewline = options.trimTrailingNewline; + var normalizeNewlines = typeof newline === "string"; + var l = strings.length; + var outdentedStrings = strings.map(function(v, i) { + v = v.replace(reMatchIndent, "$1"); + if (i === 0 && trimLeadingNewline) { + v = v.replace(reLeadingNewline, ""); + } + if (i === l - 1 && trimTrailingNewline) { + v = v.replace(reTrailingNewline, ""); + } + if (normalizeNewlines) { + v = v.replace(/\r\n|\n|\r/g, function(_) { + return newline; + }); + } + return v; + }); + return outdentedStrings; + } + function concatStringsAndValues(strings, values) { + var ret = ""; + for (var i = 0, l = strings.length; i < l; i++) { + ret += strings[i]; + if (i < l - 1) { + ret += values[i]; + } + } + return ret; + } + function isTemplateStringsArray(v) { + return has(v, "raw") && has(v, "length"); + } + function createInstance(options) { + var arrayAutoIndentCache = createWeakMap(); + var arrayFirstInterpSetsIndentCache = createWeakMap(); + function outdent(stringsOrOptions) { + var values = []; + for (var _i = 1; _i < arguments.length; _i++) { + values[_i - 1] = arguments[_i]; + } + if (isTemplateStringsArray(stringsOrOptions)) { + var strings = stringsOrOptions; + var firstInterpolatedValueSetsIndentationLevel = (values[0] === outdent || values[0] === defaultOutdent) && reOnlyWhitespaceWithAtLeastOneNewline.test(strings[0]) && reStartsWithNewlineOrIsEmpty.test(strings[1]); + var cache = firstInterpolatedValueSetsIndentationLevel ? arrayFirstInterpSetsIndentCache : arrayAutoIndentCache; + var renderedArray = cache.get(strings); + if (!renderedArray) { + renderedArray = _outdentArray(strings, firstInterpolatedValueSetsIndentationLevel, options); + cache.set(strings, renderedArray); + } + if (values.length === 0) { + return renderedArray[0]; + } + var rendered = concatStringsAndValues(renderedArray, firstInterpolatedValueSetsIndentationLevel ? values.slice(1) : values); + return rendered; + } else { + return createInstance(extend3(extend3({}, options), stringsOrOptions || {})); + } + } + var fullOutdent = extend3(outdent, { + string: function(str2) { + return _outdentArray([str2], false, options)[0]; + } + }); + return fullOutdent; + } + var defaultOutdent = createInstance({ + trimLeadingNewline: true, + trimTrailingNewline: true + }); + exports2.outdent = defaultOutdent; + exports2.default = defaultOutdent; + if (typeof module22 !== "undefined") { + try { + module22.exports = defaultOutdent; + Object.defineProperty(defaultOutdent, "__esModule", { + value: true + }); + defaultOutdent.default = defaultOutdent; + defaultOutdent.outdent = defaultOutdent; + } catch (e) { + } + } + } + }); + var require_core_options = __commonJS22({ + "src/main/core-options.js"(exports2, module22) { + "use strict"; + var { + outdent + } = require_lib2(); + var CATEGORY_CONFIG = "Config"; + var CATEGORY_EDITOR = "Editor"; + var CATEGORY_FORMAT = "Format"; + var CATEGORY_OTHER = "Other"; + var CATEGORY_OUTPUT = "Output"; + var CATEGORY_GLOBAL = "Global"; + var CATEGORY_SPECIAL = "Special"; + var options = { + cursorOffset: { + since: "1.4.0", + category: CATEGORY_SPECIAL, + type: "int", + default: -1, + range: { + start: -1, + end: Number.POSITIVE_INFINITY, + step: 1 + }, + description: outdent` + Print (to stderr) where a cursor at the given position would move to after formatting. + This option cannot be used with --range-start and --range-end. + `, + cliCategory: CATEGORY_EDITOR + }, + endOfLine: { + since: "1.15.0", + category: CATEGORY_GLOBAL, + type: "choice", + default: [{ + since: "1.15.0", + value: "auto" + }, { + since: "2.0.0", + value: "lf" + }], + description: "Which end of line characters to apply.", + choices: [{ + value: "lf", + description: "Line Feed only (\\n), common on Linux and macOS as well as inside git repos" + }, { + value: "crlf", + description: "Carriage Return + Line Feed characters (\\r\\n), common on Windows" + }, { + value: "cr", + description: "Carriage Return character only (\\r), used very rarely" + }, { + value: "auto", + description: outdent` + Maintain existing + (mixed values within one file are normalised by looking at what's used after the first line) + ` + }] + }, + filepath: { + since: "1.4.0", + category: CATEGORY_SPECIAL, + type: "path", + description: "Specify the input filepath. This will be used to do parser inference.", + cliName: "stdin-filepath", + cliCategory: CATEGORY_OTHER, + cliDescription: "Path to the file to pretend that stdin comes from." + }, + insertPragma: { + since: "1.8.0", + category: CATEGORY_SPECIAL, + type: "boolean", + default: false, + description: "Insert @format pragma into file's first docblock comment.", + cliCategory: CATEGORY_OTHER + }, + parser: { + since: "0.0.10", + category: CATEGORY_GLOBAL, + type: "choice", + default: [{ + since: "0.0.10", + value: "babylon" + }, { + since: "1.13.0", + value: void 0 + }], + description: "Which parser to use.", + exception: (value) => typeof value === "string" || typeof value === "function", + choices: [{ + value: "flow", + description: "Flow" + }, { + value: "babel", + since: "1.16.0", + description: "JavaScript" + }, { + value: "babel-flow", + since: "1.16.0", + description: "Flow" + }, { + value: "babel-ts", + since: "2.0.0", + description: "TypeScript" + }, { + value: "typescript", + since: "1.4.0", + description: "TypeScript" + }, { + value: "acorn", + since: "2.6.0", + description: "JavaScript" + }, { + value: "espree", + since: "2.2.0", + description: "JavaScript" + }, { + value: "meriyah", + since: "2.2.0", + description: "JavaScript" + }, { + value: "css", + since: "1.7.1", + description: "CSS" + }, { + value: "less", + since: "1.7.1", + description: "Less" + }, { + value: "scss", + since: "1.7.1", + description: "SCSS" + }, { + value: "json", + since: "1.5.0", + description: "JSON" + }, { + value: "json5", + since: "1.13.0", + description: "JSON5" + }, { + value: "json-stringify", + since: "1.13.0", + description: "JSON.stringify" + }, { + value: "graphql", + since: "1.5.0", + description: "GraphQL" + }, { + value: "markdown", + since: "1.8.0", + description: "Markdown" + }, { + value: "mdx", + since: "1.15.0", + description: "MDX" + }, { + value: "vue", + since: "1.10.0", + description: "Vue" + }, { + value: "yaml", + since: "1.14.0", + description: "YAML" + }, { + value: "glimmer", + since: "2.3.0", + description: "Ember / Handlebars" + }, { + value: "html", + since: "1.15.0", + description: "HTML" + }, { + value: "angular", + since: "1.15.0", + description: "Angular" + }, { + value: "lwc", + since: "1.17.0", + description: "Lightning Web Components" + }] + }, + plugins: { + since: "1.10.0", + type: "path", + array: true, + default: [{ + value: [] + }], + category: CATEGORY_GLOBAL, + description: "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.", + exception: (value) => typeof value === "string" || typeof value === "object", + cliName: "plugin", + cliCategory: CATEGORY_CONFIG + }, + pluginSearchDirs: { + since: "1.13.0", + type: "path", + array: true, + default: [{ + value: [] + }], + category: CATEGORY_GLOBAL, + description: outdent` + Custom directory that contains prettier plugins in node_modules subdirectory. + Overrides default behavior when plugins are searched relatively to the location of Prettier. + Multiple values are accepted. + `, + exception: (value) => typeof value === "string" || typeof value === "object", + cliName: "plugin-search-dir", + cliCategory: CATEGORY_CONFIG + }, + printWidth: { + since: "0.0.0", + category: CATEGORY_GLOBAL, + type: "int", + default: 80, + description: "The line length where Prettier will try wrap.", + range: { + start: 0, + end: Number.POSITIVE_INFINITY, + step: 1 + } + }, + rangeEnd: { + since: "1.4.0", + category: CATEGORY_SPECIAL, + type: "int", + default: Number.POSITIVE_INFINITY, + range: { + start: 0, + end: Number.POSITIVE_INFINITY, + step: 1 + }, + description: outdent` + Format code ending at a given character offset (exclusive). + The range will extend forwards to the end of the selected statement. + This option cannot be used with --cursor-offset. + `, + cliCategory: CATEGORY_EDITOR + }, + rangeStart: { + since: "1.4.0", + category: CATEGORY_SPECIAL, + type: "int", + default: 0, + range: { + start: 0, + end: Number.POSITIVE_INFINITY, + step: 1 + }, + description: outdent` + Format code starting at a given character offset. + The range will extend backwards to the start of the first line containing the selected statement. + This option cannot be used with --cursor-offset. + `, + cliCategory: CATEGORY_EDITOR + }, + requirePragma: { + since: "1.7.0", + category: CATEGORY_SPECIAL, + type: "boolean", + default: false, + description: outdent` + Require either '@prettier' or '@format' to be present in the file's first docblock comment + in order for it to be formatted. + `, + cliCategory: CATEGORY_OTHER + }, + tabWidth: { + type: "int", + category: CATEGORY_GLOBAL, + default: 2, + description: "Number of spaces per indentation level.", + range: { + start: 0, + end: Number.POSITIVE_INFINITY, + step: 1 + } + }, + useTabs: { + since: "1.0.0", + category: CATEGORY_GLOBAL, + type: "boolean", + default: false, + description: "Indent with tabs instead of spaces." + }, + embeddedLanguageFormatting: { + since: "2.1.0", + category: CATEGORY_GLOBAL, + type: "choice", + default: [{ + since: "2.1.0", + value: "auto" + }], + description: "Control how Prettier formats quoted code embedded in the file.", + choices: [{ + value: "auto", + description: "Format embedded code if Prettier can automatically identify it." + }, { + value: "off", + description: "Never automatically format embedded code." + }] + } + }; + module22.exports = { + CATEGORY_CONFIG, + CATEGORY_EDITOR, + CATEGORY_FORMAT, + CATEGORY_OTHER, + CATEGORY_OUTPUT, + CATEGORY_GLOBAL, + CATEGORY_SPECIAL, + options + }; + } + }); + var require_support = __commonJS22({ + "src/main/support.js"(exports2, module22) { + "use strict"; + var semver = { + compare: require_compare(), + lt: require_lt(), + gte: require_gte() + }; + var arrayify = require_arrayify(); + var currentVersion = require_package2().version; + var coreOptions = require_core_options().options; + function getSupportInfo2({ + plugins: plugins2 = [], + showUnreleased = false, + showDeprecated = false, + showInternal = false + } = {}) { + const version2 = currentVersion.split("-", 1)[0]; + const languages = plugins2.flatMap((plugin) => plugin.languages || []).filter(filterSince); + const options = arrayify(Object.assign({}, ...plugins2.map(({ + options: options2 + }) => options2), coreOptions), "name").filter((option) => filterSince(option) && filterDeprecated(option)).sort((a, b) => a.name === b.name ? 0 : a.name < b.name ? -1 : 1).map(mapInternal).map((option) => { + option = Object.assign({}, option); + if (Array.isArray(option.default)) { + option.default = option.default.length === 1 ? option.default[0].value : option.default.filter(filterSince).sort((info1, info2) => semver.compare(info2.since, info1.since))[0].value; + } + if (Array.isArray(option.choices)) { + option.choices = option.choices.filter((option2) => filterSince(option2) && filterDeprecated(option2)); + if (option.name === "parser") { + collectParsersFromLanguages(option, languages, plugins2); + } + } + const pluginDefaults = Object.fromEntries(plugins2.filter((plugin) => plugin.defaultOptions && plugin.defaultOptions[option.name] !== void 0).map((plugin) => [plugin.name, plugin.defaultOptions[option.name]])); + return Object.assign(Object.assign({}, option), {}, { + pluginDefaults + }); + }); + return { + languages, + options + }; + function filterSince(object) { + return showUnreleased || !("since" in object) || object.since && semver.gte(version2, object.since); + } + function filterDeprecated(object) { + return showDeprecated || !("deprecated" in object) || object.deprecated && semver.lt(version2, object.deprecated); + } + function mapInternal(object) { + if (showInternal) { + return object; + } + const { + cliName, + cliCategory, + cliDescription + } = object, newObject = _objectWithoutProperties(object, _excluded); + return newObject; + } + } + function collectParsersFromLanguages(option, languages, plugins2) { + const existingValues = new Set(option.choices.map((choice) => choice.value)); + for (const language of languages) { + if (language.parsers) { + for (const value of language.parsers) { + if (!existingValues.has(value)) { + existingValues.add(value); + const plugin = plugins2.find((plugin2) => plugin2.parsers && plugin2.parsers[value]); + let description = language.name; + if (plugin && plugin.name) { + description += ` (plugin: ${plugin.name})`; + } + option.choices.push({ + value, + description + }); + } + } + } + } + } + module22.exports = { + getSupportInfo: getSupportInfo2 + }; + } + }); + var require_is_non_empty_array = __commonJS22({ + "src/utils/is-non-empty-array.js"(exports2, module22) { + "use strict"; + function isNonEmptyArray(object) { + return Array.isArray(object) && object.length > 0; + } + module22.exports = isNonEmptyArray; + } + }); + function ansiRegex({ + onlyFirst = false + } = {}) { + const pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|"); + return new RegExp(pattern, onlyFirst ? void 0 : "g"); + } + var init_ansi_regex = __esm({ + "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() { + } + }); + function stripAnsi(string) { + if (typeof string !== "string") { + throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``); + } + return string.replace(ansiRegex(), ""); + } + var init_strip_ansi = __esm({ + "node_modules/strip-ansi/index.js"() { + init_ansi_regex(); + } + }); + function isFullwidthCodePoint(codePoint) { + if (!Number.isInteger(codePoint)) { + return false; + } + return codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141); + } + var init_is_fullwidth_code_point = __esm({ + "node_modules/is-fullwidth-code-point/index.js"() { + } + }); + var require_emoji_regex2 = __commonJS22({ + "node_modules/emoji-regex/index.js"(exports2, module22) { + "use strict"; + module22.exports = function() { + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; + }; + } + }); + var string_width_exports = {}; + __export(string_width_exports, { + default: () => stringWidth + }); + function stringWidth(string) { + if (typeof string !== "string" || string.length === 0) { + return 0; + } + string = stripAnsi(string); + if (string.length === 0) { + return 0; + } + string = string.replace((0, import_emoji_regex.default)(), " "); + let width = 0; + for (let index = 0; index < string.length; index++) { + const codePoint = string.codePointAt(index); + if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) { + continue; + } + if (codePoint >= 768 && codePoint <= 879) { + continue; + } + if (codePoint > 65535) { + index++; + } + width += isFullwidthCodePoint(codePoint) ? 2 : 1; + } + return width; + } + var import_emoji_regex; + var init_string_width = __esm({ + "node_modules/string-width/index.js"() { + init_strip_ansi(); + init_is_fullwidth_code_point(); + import_emoji_regex = __toESM2(require_emoji_regex2()); + } + }); + var require_get_string_width = __commonJS22({ + "src/utils/get-string-width.js"(exports2, module22) { + "use strict"; + var stringWidth2 = (init_string_width(), __toCommonJS(string_width_exports)).default; + var notAsciiRegex = /[^\x20-\x7F]/; + function getStringWidth(text) { + if (!text) { + return 0; + } + if (!notAsciiRegex.test(text)) { + return text.length; + } + return stringWidth2(text); + } + module22.exports = getStringWidth; + } + }); + var require_skip = __commonJS22({ + "src/utils/text/skip.js"(exports2, module22) { + "use strict"; + function skip(chars) { + return (text, index, opts) => { + const backwards = opts && opts.backwards; + if (index === false) { + return false; + } + const { + length + } = text; + let cursor = index; + while (cursor >= 0 && cursor < length) { + const c = text.charAt(cursor); + if (chars instanceof RegExp) { + if (!chars.test(c)) { + return cursor; + } + } else if (!chars.includes(c)) { + return cursor; + } + backwards ? cursor-- : cursor++; + } + if (cursor === -1 || cursor === length) { + return cursor; + } + return false; + }; + } + var skipWhitespace = skip(/\s/); + var skipSpaces = skip(" "); + var skipToLineEnd = skip(",; "); + var skipEverythingButNewLine = skip(/[^\n\r]/); + module22.exports = { + skipWhitespace, + skipSpaces, + skipToLineEnd, + skipEverythingButNewLine + }; + } + }); + var require_skip_inline_comment = __commonJS22({ + "src/utils/text/skip-inline-comment.js"(exports2, module22) { + "use strict"; + function skipInlineComment(text, index) { + if (index === false) { + return false; + } + if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") { + for (let i = index + 2; i < text.length; ++i) { + if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") { + return i + 2; + } + } + } + return index; + } + module22.exports = skipInlineComment; + } + }); + var require_skip_trailing_comment = __commonJS22({ + "src/utils/text/skip-trailing-comment.js"(exports2, module22) { + "use strict"; + var { + skipEverythingButNewLine + } = require_skip(); + function skipTrailingComment(text, index) { + if (index === false) { + return false; + } + if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") { + return skipEverythingButNewLine(text, index); + } + return index; + } + module22.exports = skipTrailingComment; + } + }); + var require_skip_newline = __commonJS22({ + "src/utils/text/skip-newline.js"(exports2, module22) { + "use strict"; + function skipNewline(text, index, opts) { + const backwards = opts && opts.backwards; + if (index === false) { + return false; + } + const atIndex = text.charAt(index); + if (backwards) { + if (text.charAt(index - 1) === "\r" && atIndex === "\n") { + return index - 2; + } + if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") { + return index - 1; + } + } else { + if (atIndex === "\r" && text.charAt(index + 1) === "\n") { + return index + 2; + } + if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") { + return index + 1; + } + } + return index; + } + module22.exports = skipNewline; + } + }); + var require_get_next_non_space_non_comment_character_index_with_start_index = __commonJS22({ + "src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js"(exports2, module22) { + "use strict"; + var skipInlineComment = require_skip_inline_comment(); + var skipNewline = require_skip_newline(); + var skipTrailingComment = require_skip_trailing_comment(); + var { + skipSpaces + } = require_skip(); + function getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, idx) { + let oldIdx = null; + let nextIdx = idx; + while (nextIdx !== oldIdx) { + oldIdx = nextIdx; + nextIdx = skipSpaces(text, nextIdx); + nextIdx = skipInlineComment(text, nextIdx); + nextIdx = skipTrailingComment(text, nextIdx); + nextIdx = skipNewline(text, nextIdx); + } + return nextIdx; + } + module22.exports = getNextNonSpaceNonCommentCharacterIndexWithStartIndex; + } + }); + var require_util2 = __commonJS22({ + "src/common/util.js"(exports2, module22) { + "use strict"; + var { + default: escapeStringRegexp2 + } = (init_escape_string_regexp(), __toCommonJS(escape_string_regexp_exports)); + var getLast = require_get_last(); + var { + getSupportInfo: getSupportInfo2 + } = require_support(); + var isNonEmptyArray = require_is_non_empty_array(); + var getStringWidth = require_get_string_width(); + var { + skipWhitespace, + skipSpaces, + skipToLineEnd, + skipEverythingButNewLine + } = require_skip(); + var skipInlineComment = require_skip_inline_comment(); + var skipTrailingComment = require_skip_trailing_comment(); + var skipNewline = require_skip_newline(); + var getNextNonSpaceNonCommentCharacterIndexWithStartIndex = require_get_next_non_space_non_comment_character_index_with_start_index(); + var getPenultimate = (arr) => arr[arr.length - 2]; + function skip(chars) { + return (text, index, opts) => { + const backwards = opts && opts.backwards; + if (index === false) { + return false; + } + const { + length + } = text; + let cursor = index; + while (cursor >= 0 && cursor < length) { + const c = text.charAt(cursor); + if (chars instanceof RegExp) { + if (!chars.test(c)) { + return cursor; + } + } else if (!chars.includes(c)) { + return cursor; + } + backwards ? cursor-- : cursor++; + } + if (cursor === -1 || cursor === length) { + return cursor; + } + return false; + }; + } + function hasNewline(text, index, opts = {}) { + const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); + const idx2 = skipNewline(text, idx, opts); + return idx !== idx2; + } + function hasNewlineInRange(text, start, end) { + for (let i = start; i < end; ++i) { + if (text.charAt(i) === "\n") { + return true; + } + } + return false; + } + function isPreviousLineEmpty(text, node, locStart) { + let idx = locStart(node) - 1; + idx = skipSpaces(text, idx, { + backwards: true + }); + idx = skipNewline(text, idx, { + backwards: true + }); + idx = skipSpaces(text, idx, { + backwards: true + }); + const idx2 = skipNewline(text, idx, { + backwards: true + }); + return idx !== idx2; + } + function isNextLineEmptyAfterIndex(text, index) { + let oldIdx = null; + let idx = index; + while (idx !== oldIdx) { + oldIdx = idx; + idx = skipToLineEnd(text, idx); + idx = skipInlineComment(text, idx); + idx = skipSpaces(text, idx); + } + idx = skipTrailingComment(text, idx); + idx = skipNewline(text, idx); + return idx !== false && hasNewline(text, idx); + } + function isNextLineEmpty(text, node, locEnd) { + return isNextLineEmptyAfterIndex(text, locEnd(node)); + } + function getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd) { + return getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, locEnd(node)); + } + function getNextNonSpaceNonCommentCharacter(text, node, locEnd) { + return text.charAt(getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd)); + } + function hasSpaces(text, index, opts = {}) { + const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); + return idx !== index; + } + function getAlignmentSize(value, tabWidth, startIndex = 0) { + let size = 0; + for (let i = startIndex; i < value.length; ++i) { + if (value[i] === " ") { + size = size + tabWidth - size % tabWidth; + } else { + size++; + } + } + return size; + } + function getIndentSize(value, tabWidth) { + const lastNewlineIndex = value.lastIndexOf("\n"); + if (lastNewlineIndex === -1) { + return 0; + } + return getAlignmentSize(value.slice(lastNewlineIndex + 1).match(/^[\t ]*/)[0], tabWidth); + } + function getPreferredQuote(rawContent, preferredQuote) { + const double = { + quote: '"', + regex: /"/g, + escaped: """ + }; + const single = { + quote: "'", + regex: /'/g, + escaped: "'" + }; + const preferred = preferredQuote === "'" ? single : double; + const alternate = preferred === single ? double : single; + let result = preferred; + if (rawContent.includes(preferred.quote) || rawContent.includes(alternate.quote)) { + const numPreferredQuotes = (rawContent.match(preferred.regex) || []).length; + const numAlternateQuotes = (rawContent.match(alternate.regex) || []).length; + result = numPreferredQuotes > numAlternateQuotes ? alternate : preferred; + } + return result; + } + function printString(raw, options) { + const rawContent = raw.slice(1, -1); + const enclosingQuote = options.parser === "json" || options.parser === "json5" && options.quoteProps === "preserve" && !options.singleQuote ? '"' : options.__isInHtmlAttribute ? "'" : getPreferredQuote(rawContent, options.singleQuote ? "'" : '"').quote; + return makeString(rawContent, enclosingQuote, !(options.parser === "css" || options.parser === "less" || options.parser === "scss" || options.__embeddedInHtml)); + } + function makeString(rawContent, enclosingQuote, unescapeUnnecessaryEscapes) { + const otherQuote = enclosingQuote === '"' ? "'" : '"'; + const regex = /\\(.)|(["'])/gs; + const newContent = rawContent.replace(regex, (match, escaped, quote) => { + if (escaped === otherQuote) { + return escaped; + } + if (quote === enclosingQuote) { + return "\\" + quote; + } + if (quote) { + return quote; + } + return unescapeUnnecessaryEscapes && /^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(escaped) ? escaped : "\\" + escaped; + }); + return enclosingQuote + newContent + enclosingQuote; + } + function printNumber(rawNumber) { + return rawNumber.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1").replace(/^([+-])?\./, "$10.").replace(/(\.\d+?)0+(?=e|$)/, "$1").replace(/\.(?=e|$)/, ""); + } + function getMaxContinuousCount(str2, target) { + const results = str2.match(new RegExp(`(${escapeStringRegexp2(target)})+`, "g")); + if (results === null) { + return 0; + } + return results.reduce((maxCount, result) => Math.max(maxCount, result.length / target.length), 0); + } + function getMinNotPresentContinuousCount(str2, target) { + const matches = str2.match(new RegExp(`(${escapeStringRegexp2(target)})+`, "g")); + if (matches === null) { + return 0; + } + const countPresent = /* @__PURE__ */ new Map(); + let max = 0; + for (const match of matches) { + const count = match.length / target.length; + countPresent.set(count, true); + if (count > max) { + max = count; + } + } + for (let i = 1; i < max; i++) { + if (!countPresent.get(i)) { + return i; + } + } + return max + 1; + } + function addCommentHelper(node, comment) { + const comments = node.comments || (node.comments = []); + comments.push(comment); + comment.printed = false; + comment.nodeDescription = describeNodeForDebugging(node); + } + function addLeadingComment(node, comment) { + comment.leading = true; + comment.trailing = false; + addCommentHelper(node, comment); + } + function addDanglingComment(node, comment, marker) { + comment.leading = false; + comment.trailing = false; + if (marker) { + comment.marker = marker; + } + addCommentHelper(node, comment); + } + function addTrailingComment(node, comment) { + comment.leading = false; + comment.trailing = true; + addCommentHelper(node, comment); + } + function inferParserByLanguage(language, options) { + const { + languages + } = getSupportInfo2({ + plugins: options.plugins + }); + const matched = languages.find(({ + name + }) => name.toLowerCase() === language) || languages.find(({ + aliases + }) => Array.isArray(aliases) && aliases.includes(language)) || languages.find(({ + extensions + }) => Array.isArray(extensions) && extensions.includes(`.${language}`)); + return matched && matched.parsers[0]; + } + function isFrontMatterNode(node) { + return node && node.type === "front-matter"; + } + function createGroupIdMapper(description) { + const groupIds = /* @__PURE__ */ new WeakMap(); + return function(node) { + if (!groupIds.has(node)) { + groupIds.set(node, Symbol(description)); + } + return groupIds.get(node); + }; + } + function describeNodeForDebugging(node) { + const nodeType = node.type || node.kind || "(unknown type)"; + let nodeName = String(node.name || node.id && (typeof node.id === "object" ? node.id.name : node.id) || node.key && (typeof node.key === "object" ? node.key.name : node.key) || node.value && (typeof node.value === "object" ? "" : String(node.value)) || node.operator || ""); + if (nodeName.length > 20) { + nodeName = nodeName.slice(0, 19) + "\u2026"; + } + return nodeType + (nodeName ? " " + nodeName : ""); + } + module22.exports = { + inferParserByLanguage, + getStringWidth, + getMaxContinuousCount, + getMinNotPresentContinuousCount, + getPenultimate, + getLast, + getNextNonSpaceNonCommentCharacterIndexWithStartIndex, + getNextNonSpaceNonCommentCharacterIndex, + getNextNonSpaceNonCommentCharacter, + skip, + skipWhitespace, + skipSpaces, + skipToLineEnd, + skipEverythingButNewLine, + skipInlineComment, + skipTrailingComment, + skipNewline, + isNextLineEmptyAfterIndex, + isNextLineEmpty, + isPreviousLineEmpty, + hasNewline, + hasNewlineInRange, + hasSpaces, + getAlignmentSize, + getIndentSize, + getPreferredQuote, + printString, + printNumber, + makeString, + addLeadingComment, + addDanglingComment, + addTrailingComment, + isFrontMatterNode, + isNonEmptyArray, + createGroupIdMapper + }; + } + }); + var require_end_of_line = __commonJS22({ + "src/common/end-of-line.js"(exports2, module22) { + "use strict"; + function guessEndOfLine(text) { + const index = text.indexOf("\r"); + if (index >= 0) { + return text.charAt(index + 1) === "\n" ? "crlf" : "cr"; + } + return "lf"; + } + function convertEndOfLineToChars(value) { + switch (value) { + case "cr": + return "\r"; + case "crlf": + return "\r\n"; + default: + return "\n"; + } + } + function countEndOfLineChars(text, eol) { + let regex; + switch (eol) { + case "\n": + regex = /\n/g; + break; + case "\r": + regex = /\r/g; + break; + case "\r\n": + regex = /\r\n/g; + break; + default: + throw new Error(`Unexpected "eol" ${JSON.stringify(eol)}.`); + } + const endOfLines = text.match(regex); + return endOfLines ? endOfLines.length : 0; + } + function normalizeEndOfLine(text) { + return text.replace(/\r\n?/g, "\n"); + } + module22.exports = { + guessEndOfLine, + convertEndOfLineToChars, + countEndOfLineChars, + normalizeEndOfLine + }; + } + }); + var require_errors = __commonJS22({ + "src/common/errors.js"(exports2, module22) { + "use strict"; + var ConfigError = class extends Error { + }; + var DebugError = class extends Error { + }; + var UndefinedParserError = class extends Error { + }; + var ArgExpansionBailout = class extends Error { + }; + module22.exports = { + ConfigError, + DebugError, + UndefinedParserError, + ArgExpansionBailout + }; + } + }); + var tslib_es6_exports = {}; + __export(tslib_es6_exports, { + __assign: () => __assign, + __asyncDelegator: () => __asyncDelegator, + __asyncGenerator: () => __asyncGenerator, + __asyncValues: () => __asyncValues, + __await: () => __await, + __awaiter: () => __awaiter, + __classPrivateFieldGet: () => __classPrivateFieldGet, + __classPrivateFieldSet: () => __classPrivateFieldSet, + __createBinding: () => __createBinding, + __decorate: () => __decorate, + __exportStar: () => __exportStar, + __extends: () => __extends, + __generator: () => __generator, + __importDefault: () => __importDefault, + __importStar: () => __importStar, + __makeTemplateObject: () => __makeTemplateObject, + __metadata: () => __metadata, + __param: () => __param, + __read: () => __read, + __rest: () => __rest, + __spread: () => __spread, + __spreadArrays: () => __spreadArrays, + __values: () => __values + }); + function __extends(d, b) { + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + function __rest(s, e) { + var t = {}; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + } + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + function __param(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + } + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") + return Reflect.metadata(metadataKey, metadataValue); + } + function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + function __generator(thisArg, body) { + var _ = { + label: 0, + sent: function() { + if (t[0] & 1) + throw t[1]; + return t[1]; + }, + trys: [], + ops: [] + }, f, y, t, g; + return g = { + next: verb(0), + "throw": verb(1), + "return": verb(2) + }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { + value: op[1], + done: false + }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { + value: op[0] ? op[1] : void 0, + done: true + }; + } + } + function __createBinding(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + } + function __exportStar(m, exports2) { + for (var p in m) + if (p !== "default" && !exports2.hasOwnProperty(p)) + exports2[p] = m[p]; + } + function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) + return m.call(o); + if (o && typeof o.length === "number") + return { + next: function() { + if (o && i >= o.length) + o = void 0; + return { + value: o && o[i++], + done: !o + }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + } + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) + return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } catch (error2) { + e = { + error: error2 + }; + } finally { + try { + if (r && !r.done && (m = i["return"])) + m.call(i); + } finally { + if (e) + throw e.error; + } + } + return ar; + } + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) + s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; + } + function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + } + function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i; + function verb(n) { + if (g[n]) + i[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + if (f(v), q.shift(), q.length) + resume(q[0][0], q[0][1]); + } + } + function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function(e) { + throw e; + }), verb("return"), i[Symbol.iterator] = function() { + return this; + }, i; + function verb(n, f) { + i[n] = o[n] ? function(v) { + return (p = !p) ? { + value: __await(o[n](v)), + done: n === "return" + } : f ? f(v) : v; + } : f; + } + } + function __asyncValues(o) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function(v) { + return new Promise(function(resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ + value: v2, + done: d + }); + }, reject); + } + } + function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { + Object.defineProperty(cooked, "raw", { + value: raw + }); + } else { + cooked.raw = raw; + } + return cooked; + } + function __importStar(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (Object.hasOwnProperty.call(mod, k)) + result[k] = mod[k]; + } + result.default = mod; + return result; + } + function __importDefault(mod) { + return mod && mod.__esModule ? mod : { + default: mod + }; + } + function __classPrivateFieldGet(receiver, privateMap) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return privateMap.get(receiver); + } + function __classPrivateFieldSet(receiver, privateMap, value) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to set private field on non-instance"); + } + privateMap.set(receiver, value); + return value; + } + var extendStatics; + var __assign; + var init_tslib_es6 = __esm({ + "node_modules/tslib/tslib.es6.js"() { + extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || { + __proto__: [] + } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) + if (b2.hasOwnProperty(p)) + d2[p] = b2[p]; + }; + return extendStatics(d, b); + }; + __assign = function() { + __assign = Object.assign || function __assign2(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + } + }); + var require_api = __commonJS22({ + "node_modules/vnopts/lib/descriptors/api.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.apiDescriptor = { + key: (key) => /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(key) ? key : JSON.stringify(key), + value(value) { + if (value === null || typeof value !== "object") { + return JSON.stringify(value); + } + if (Array.isArray(value)) { + return `[${value.map((subValue) => exports2.apiDescriptor.value(subValue)).join(", ")}]`; + } + const keys = Object.keys(value); + return keys.length === 0 ? "{}" : `{ ${keys.map((key) => `${exports2.apiDescriptor.key(key)}: ${exports2.apiDescriptor.value(value[key])}`).join(", ")} }`; + }, + pair: ({ + key, + value + }) => exports2.apiDescriptor.value({ + [key]: value + }) + }; + } + }); + var require_descriptors2 = __commonJS22({ + "node_modules/vnopts/lib/descriptors/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_api(), exports2); + } + }); + var require_escape_string_regexp = __commonJS22({ + "node_modules/vnopts/node_modules/escape-string-regexp/index.js"(exports2, module22) { + "use strict"; + var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + module22.exports = function(str2) { + if (typeof str2 !== "string") { + throw new TypeError("Expected a string"); + } + return str2.replace(matchOperatorsRe, "\\$&"); + }; + } + }); + var require_color_name2 = __commonJS22({ + "node_modules/color-name/index.js"(exports2, module22) { + "use strict"; + module22.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] + }; + } + }); + var require_conversions2 = __commonJS22({ + "node_modules/color-convert/conversions.js"(exports2, module22) { + var cssKeywords = require_color_name2(); + var reverseKeywords = {}; + for (key in cssKeywords) { + if (cssKeywords.hasOwnProperty(key)) { + reverseKeywords[cssKeywords[key]] = key; + } + } + var key; + var convert = module22.exports = { + rgb: { + channels: 3, + labels: "rgb" + }, + hsl: { + channels: 3, + labels: "hsl" + }, + hsv: { + channels: 3, + labels: "hsv" + }, + hwb: { + channels: 3, + labels: "hwb" + }, + cmyk: { + channels: 4, + labels: "cmyk" + }, + xyz: { + channels: 3, + labels: "xyz" + }, + lab: { + channels: 3, + labels: "lab" + }, + lch: { + channels: 3, + labels: "lch" + }, + hex: { + channels: 1, + labels: ["hex"] + }, + keyword: { + channels: 1, + labels: ["keyword"] + }, + ansi16: { + channels: 1, + labels: ["ansi16"] + }, + ansi256: { + channels: 1, + labels: ["ansi256"] + }, + hcg: { + channels: 3, + labels: ["h", "c", "g"] + }, + apple: { + channels: 3, + labels: ["r16", "g16", "b16"] + }, + gray: { + channels: 1, + labels: ["gray"] + } + }; + for (model in convert) { + if (convert.hasOwnProperty(model)) { + if (!("channels" in convert[model])) { + throw new Error("missing channels property: " + model); + } + if (!("labels" in convert[model])) { + throw new Error("missing channel labels property: " + model); + } + if (convert[model].labels.length !== convert[model].channels) { + throw new Error("channel and label counts mismatch: " + model); + } + channels = convert[model].channels; + labels = convert[model].labels; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], "channels", { + value: channels + }); + Object.defineProperty(convert[model], "labels", { + value: labels + }); + } + } + var channels; + var labels; + var model; + convert.rgb.hsl = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var l; + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + h = Math.min(h * 60, 360); + if (h < 0) { + h += 360; + } + l = (min + max) / 2; + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + return [h, s * 100, l * 100]; + }; + convert.rgb.hsv = function(rgb) { + var rdif; + var gdif; + var bdif; + var h; + var s; + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var v = Math.max(r, g, b); + var diff = v - Math.min(r, g, b); + var diffc = function(c) { + return (v - c) / 6 / diff + 1 / 2; + }; + if (diff === 0) { + h = s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + if (r === v) { + h = bdif - gdif; + } else if (g === v) { + h = 1 / 3 + rdif - bdif; + } else if (b === v) { + h = 2 / 3 + gdif - rdif; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + return [h * 360, s * 100, v * 100]; + }; + convert.rgb.hwb = function(rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var h = convert.rgb.hsl(rgb)[0]; + var w = 1 / 255 * Math.min(r, Math.min(g, b)); + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + return [h, w * 100, b * 100]; + }; + convert.rgb.cmyk = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var c; + var m; + var y; + var k; + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; + }; + function comparativeDistance(x, y) { + return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2); + } + convert.rgb.keyword = function(rgb) { + var reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + var currentClosestDistance = Infinity; + var currentClosestKeyword; + for (var keyword in cssKeywords) { + if (cssKeywords.hasOwnProperty(keyword)) { + var value = cssKeywords[keyword]; + var distance = comparativeDistance(rgb, value); + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + } + return currentClosestKeyword; + }; + convert.keyword.rgb = function(keyword) { + return cssKeywords[keyword]; + }; + convert.rgb.xyz = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92; + g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92; + b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92; + var x = r * 0.4124 + g * 0.3576 + b * 0.1805; + var y = r * 0.2126 + g * 0.7152 + b * 0.0722; + var z = r * 0.0193 + g * 0.1192 + b * 0.9505; + return [x * 100, y * 100, z * 100]; + }; + convert.rgb.lab = function(rgb) { + var xyz = convert.rgb.xyz(rgb); + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; + l = 116 * y - 16; + a = 500 * (x - y); + b = 200 * (y - z); + return [l, a, b]; + }; + convert.hsl.rgb = function(hsl) { + var h = hsl[0] / 360; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var t1; + var t2; + var t3; + var rgb; + var val; + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + t1 = 2 * l - t2; + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + rgb[i] = val * 255; + } + return rgb; + }; + convert.hsl.hsv = function(hsl) { + var h = hsl[0]; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var smin = s; + var lmin = Math.max(l, 0.01); + var sv; + var v; + l *= 2; + s *= l <= 1 ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + v = (l + s) / 2; + sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); + return [h, sv * 100, v * 100]; + }; + convert.hsv.rgb = function(hsv) { + var h = hsv[0] / 60; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var hi = Math.floor(h) % 6; + var f = h - Math.floor(h); + var p = 255 * v * (1 - s); + var q = 255 * v * (1 - s * f); + var t = 255 * v * (1 - s * (1 - f)); + v *= 255; + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } + }; + convert.hsv.hsl = function(hsv) { + var h = hsv[0]; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var vmin = Math.max(v, 0.01); + var lmin; + var sl; + var l; + l = (2 - s) * v; + lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= lmin <= 1 ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; + }; + convert.hwb.rgb = function(hwb) { + var h = hwb[0] / 360; + var wh = hwb[1] / 100; + var bl = hwb[2] / 100; + var ratio = wh + bl; + var i; + var v; + var f; + var n; + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + if ((i & 1) !== 0) { + f = 1 - f; + } + n = wh + f * (v - wh); + var r; + var g; + var b; + switch (i) { + default: + case 6: + case 0: + r = v; + g = n; + b = wh; + break; + case 1: + r = n; + g = v; + b = wh; + break; + case 2: + r = wh; + g = v; + b = n; + break; + case 3: + r = wh; + g = n; + b = v; + break; + case 4: + r = n; + g = wh; + b = v; + break; + case 5: + r = v; + g = wh; + b = n; + break; + } + return [r * 255, g * 255, b * 255]; + }; + convert.cmyk.rgb = function(cmyk) { + var c = cmyk[0] / 100; + var m = cmyk[1] / 100; + var y = cmyk[2] / 100; + var k = cmyk[3] / 100; + var r; + var g; + var b; + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.rgb = function(xyz) { + var x = xyz[0] / 100; + var y = xyz[1] / 100; + var z = xyz[2] / 100; + var r; + var g; + var b; + r = x * 3.2406 + y * -1.5372 + z * -0.4986; + g = x * -0.9689 + y * 1.8758 + z * 0.0415; + b = x * 0.0557 + y * -0.204 + z * 1.057; + r = r > 31308e-7 ? 1.055 * Math.pow(r, 1 / 2.4) - 0.055 : r * 12.92; + g = g > 31308e-7 ? 1.055 * Math.pow(g, 1 / 2.4) - 0.055 : g * 12.92; + b = b > 31308e-7 ? 1.055 * Math.pow(b, 1 / 2.4) - 0.055 : b * 12.92; + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.lab = function(xyz) { + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116; + l = 116 * y - 16; + a = 500 * (x - y); + b = 200 * (y - z); + return [l, a, b]; + }; + convert.lab.xyz = function(lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var x; + var y; + var z; + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + var y2 = Math.pow(y, 3); + var x2 = Math.pow(x, 3); + var z2 = Math.pow(z, 3); + y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787; + x *= 95.047; + y *= 100; + z *= 108.883; + return [x, y, z]; + }; + convert.lab.lch = function(lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var hr; + var h; + var c; + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + c = Math.sqrt(a * a + b * b); + return [l, c, h]; + }; + convert.lch.lab = function(lch) { + var l = lch[0]; + var c = lch[1]; + var h = lch[2]; + var a; + var b; + var hr; + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + return [l, a, b]; + }; + convert.rgb.ansi16 = function(args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; + value = Math.round(value / 50); + if (value === 0) { + return 30; + } + var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); + if (value === 2) { + ansi += 60; + } + return ansi; + }; + convert.hsv.ansi16 = function(args) { + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); + }; + convert.rgb.ansi256 = function(args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + if (r === g && g === b) { + if (r < 8) { + return 16; + } + if (r > 248) { + return 231; + } + return Math.round((r - 8) / 247 * 24) + 232; + } + var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); + return ansi; + }; + convert.ansi16.rgb = function(args) { + var color = args % 10; + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + color = color / 10.5 * 255; + return [color, color, color]; + } + var mult = (~~(args > 50) + 1) * 0.5; + var r = (color & 1) * mult * 255; + var g = (color >> 1 & 1) * mult * 255; + var b = (color >> 2 & 1) * mult * 255; + return [r, g, b]; + }; + convert.ansi256.rgb = function(args) { + if (args >= 232) { + var c = (args - 232) * 10 + 8; + return [c, c, c]; + } + args -= 16; + var rem; + var r = Math.floor(args / 36) / 5 * 255; + var g = Math.floor((rem = args % 36) / 6) / 5 * 255; + var b = rem % 6 / 5 * 255; + return [r, g, b]; + }; + convert.rgb.hex = function(args) { + var integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255); + var string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.hex.rgb = function(args) { + var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + var colorString = match[0]; + if (match[0].length === 3) { + colorString = colorString.split("").map(function(char) { + return char + char; + }).join(""); + } + var integer = parseInt(colorString, 16); + var r = integer >> 16 & 255; + var g = integer >> 8 & 255; + var b = integer & 255; + return [r, g, b]; + }; + convert.rgb.hcg = function(rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var max = Math.max(Math.max(r, g), b); + var min = Math.min(Math.min(r, g), b); + var chroma = max - min; + var grayscale; + var hue; + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + if (chroma <= 0) { + hue = 0; + } else if (max === r) { + hue = (g - b) / chroma % 6; + } else if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma + 4; + } + hue /= 6; + hue %= 1; + return [hue * 360, chroma * 100, grayscale * 100]; + }; + convert.hsl.hcg = function(hsl) { + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var c = 1; + var f = 0; + if (l < 0.5) { + c = 2 * s * l; + } else { + c = 2 * s * (1 - l); + } + if (c < 1) { + f = (l - 0.5 * c) / (1 - c); + } + return [hsl[0], c * 100, f * 100]; + }; + convert.hsv.hcg = function(hsv) { + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var c = s * v; + var f = 0; + if (c < 1) { + f = (v - c) / (1 - c); + } + return [hsv[0], c * 100, f * 100]; + }; + convert.hcg.rgb = function(hcg) { + var h = hcg[0] / 360; + var c = hcg[1] / 100; + var g = hcg[2] / 100; + if (c === 0) { + return [g * 255, g * 255, g * 255]; + } + var pure = [0, 0, 0]; + var hi = h % 1 * 6; + var v = hi % 1; + var w = 1 - v; + var mg = 0; + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; + pure[1] = v; + pure[2] = 0; + break; + case 1: + pure[0] = w; + pure[1] = 1; + pure[2] = 0; + break; + case 2: + pure[0] = 0; + pure[1] = 1; + pure[2] = v; + break; + case 3: + pure[0] = 0; + pure[1] = w; + pure[2] = 1; + break; + case 4: + pure[0] = v; + pure[1] = 0; + pure[2] = 1; + break; + default: + pure[0] = 1; + pure[1] = 0; + pure[2] = w; + } + mg = (1 - c) * g; + return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255]; + }; + convert.hcg.hsv = function(hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1 - c); + var f = 0; + if (v > 0) { + f = c / v; + } + return [hcg[0], f * 100, v * 100]; + }; + convert.hcg.hsl = function(hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var l = g * (1 - c) + 0.5 * c; + var s = 0; + if (l > 0 && l < 0.5) { + s = c / (2 * l); + } else if (l >= 0.5 && l < 1) { + s = c / (2 * (1 - l)); + } + return [hcg[0], s * 100, l * 100]; + }; + convert.hcg.hwb = function(hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; + }; + convert.hwb.hcg = function(hwb) { + var w = hwb[1] / 100; + var b = hwb[2] / 100; + var v = 1 - b; + var c = v - w; + var g = 0; + if (c < 1) { + g = (v - c) / (1 - c); + } + return [hwb[0], c * 100, g * 100]; + }; + convert.apple.rgb = function(apple) { + return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; + }; + convert.rgb.apple = function(rgb) { + return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; + }; + convert.gray.rgb = function(args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; + }; + convert.gray.hsl = convert.gray.hsv = function(args) { + return [0, 0, args[0]]; + }; + convert.gray.hwb = function(gray) { + return [0, 100, gray[0]]; + }; + convert.gray.cmyk = function(gray) { + return [0, 0, 0, gray[0]]; + }; + convert.gray.lab = function(gray) { + return [gray[0], 0, 0]; + }; + convert.gray.hex = function(gray) { + var val = Math.round(gray[0] / 100 * 255) & 255; + var integer = (val << 16) + (val << 8) + val; + var string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.rgb.gray = function(rgb) { + var val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; + }; + } + }); + var require_route2 = __commonJS22({ + "node_modules/color-convert/route.js"(exports2, module22) { + var conversions = require_conversions2(); + function buildGraph() { + var graph = {}; + var models = Object.keys(conversions); + for (var len = models.length, i = 0; i < len; i++) { + graph[models[i]] = { + distance: -1, + parent: null + }; + } + return graph; + } + function deriveBFS(fromModel) { + var graph = buildGraph(); + var queue = [fromModel]; + graph[fromModel].distance = 0; + while (queue.length) { + var current = queue.pop(); + var adjacents = Object.keys(conversions[current]); + for (var len = adjacents.length, i = 0; i < len; i++) { + var adjacent = adjacents[i]; + var node = graph[adjacent]; + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + return graph; + } + function link(from, to) { + return function(args) { + return to(from(args)); + }; + } + function wrapConversion(toModel, graph) { + var path2 = [graph[toModel].parent, toModel]; + var fn = conversions[graph[toModel].parent][toModel]; + var cur = graph[toModel].parent; + while (graph[cur].parent) { + path2.unshift(graph[cur].parent); + fn = link(conversions[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + fn.conversion = path2; + return fn; + } + module22.exports = function(fromModel) { + var graph = deriveBFS(fromModel); + var conversion = {}; + var models = Object.keys(graph); + for (var len = models.length, i = 0; i < len; i++) { + var toModel = models[i]; + var node = graph[toModel]; + if (node.parent === null) { + continue; + } + conversion[toModel] = wrapConversion(toModel, graph); + } + return conversion; + }; + } + }); + var require_color_convert2 = __commonJS22({ + "node_modules/color-convert/index.js"(exports2, module22) { + var conversions = require_conversions2(); + var route = require_route2(); + var convert = {}; + var models = Object.keys(conversions); + function wrapRaw(fn) { + var wrappedFn = function(args) { + if (args === void 0 || args === null) { + return args; + } + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + return fn(args); + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + function wrapRounded(fn) { + var wrappedFn = function(args) { + if (args === void 0 || args === null) { + return args; + } + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + var result = fn(args); + if (typeof result === "object") { + for (var len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + return result; + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + models.forEach(function(fromModel) { + convert[fromModel] = {}; + Object.defineProperty(convert[fromModel], "channels", { + value: conversions[fromModel].channels + }); + Object.defineProperty(convert[fromModel], "labels", { + value: conversions[fromModel].labels + }); + var routes = route(fromModel); + var routeModels = Object.keys(routes); + routeModels.forEach(function(toModel) { + var fn = routes[toModel]; + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); + }); + module22.exports = convert; + } + }); + var require_ansi_styles2 = __commonJS22({ + "node_modules/ansi-styles/index.js"(exports2, module22) { + "use strict"; + var colorConvert = require_color_convert2(); + var wrapAnsi16 = (fn, offset) => function() { + const code = fn.apply(colorConvert, arguments); + return `\x1B[${code + offset}m`; + }; + var wrapAnsi256 = (fn, offset) => function() { + const code = fn.apply(colorConvert, arguments); + return `\x1B[${38 + offset};5;${code}m`; + }; + var wrapAnsi16m = (fn, offset) => function() { + const rgb = fn.apply(colorConvert, arguments); + return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; + }; + function assembleStyles() { + const codes = /* @__PURE__ */ new Map(); + const styles = { + modifier: { + reset: [0, 0], + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + styles.color.grey = styles.color.gray; + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + styles[styleName] = { + open: `\x1B[${style[0]}m`, + close: `\x1B[${style[1]}m` + }; + group[styleName] = styles[styleName]; + codes.set(style[0], style[1]); + } + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + Object.defineProperty(styles, "codes", { + value: codes, + enumerable: false + }); + } + const ansi2ansi = (n) => n; + const rgb2rgb = (r, g, b) => [r, g, b]; + styles.color.close = "\x1B[39m"; + styles.bgColor.close = "\x1B[49m"; + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== "object") { + continue; + } + const suite = colorConvert[key]; + if (key === "ansi16") { + key = "ansi"; + } + if ("ansi16" in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + if ("ansi256" in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + if ("rgb" in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + return styles; + } + Object.defineProperty(module22, "exports", { + enumerable: true, + get: assembleStyles + }); + } + }); + var require_has_flag2 = __commonJS22({ + "node_modules/vnopts/node_modules/has-flag/index.js"(exports2, module22) { + "use strict"; + module22.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf("--"); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); + }; + } + }); + var require_supports_color2 = __commonJS22({ + "node_modules/vnopts/node_modules/supports-color/index.js"(exports2, module22) { + "use strict"; + var os = require("os"); + var hasFlag = require_has_flag2(); + var env = process.env; + var forceColor; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) { + forceColor = false; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = true; + } + if ("FORCE_COLOR" in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + const min = forceColor ? 1 : 0; + if (process.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version2 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version2 >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + if (env.TERM === "dumb") { + return min; + } + return min; + } + function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); + } + module22.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) + }; + } + }); + var require_templates2 = __commonJS22({ + "node_modules/vnopts/node_modules/chalk/templates.js"(exports2, module22) { + "use strict"; + var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; + var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; + var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; + var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; + var ESCAPES = /* @__PURE__ */ new Map([["n", "\n"], ["r", "\r"], ["t", " "], ["b", "\b"], ["f", "\f"], ["v", "\v"], ["0", "\0"], ["\\", "\\"], ["e", "\x1B"], ["a", "\x07"]]); + function unescape2(c) { + if (c[0] === "u" && c.length === 5 || c[0] === "x" && c.length === 3) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + return ESCAPES.get(c) || c; + } + function parseArguments(name, args) { + const results = []; + const chunks = args.trim().split(/\s*,\s*/g); + let matches; + for (const chunk of chunks) { + if (!isNaN(chunk)) { + results.push(Number(chunk)); + } else if (matches = chunk.match(STRING_REGEX)) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape2(escape) : chr)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } + return results; + } + function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; + const results = []; + let matches; + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } + return results; + } + function buildStyle(chalk2, styles) { + const enabled = {}; + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } + let current = chalk2; + for (const styleName of Object.keys(enabled)) { + if (Array.isArray(enabled[styleName])) { + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } + if (enabled[styleName].length > 0) { + current = current[styleName].apply(current, enabled[styleName]); + } else { + current = current[styleName]; + } + } + } + return current; + } + module22.exports = (chalk2, tmp) => { + const styles = []; + const chunks = []; + let chunk = []; + tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => { + if (escapeChar) { + chunk.push(unescape2(escapeChar)); + } else if (style) { + const str2 = chunk.join(""); + chunk = []; + chunks.push(styles.length === 0 ? str2 : buildStyle(chalk2, styles)(str2)); + styles.push({ + inverse, + styles: parseStyle(style) + }); + } else if (close) { + if (styles.length === 0) { + throw new Error("Found extraneous } in Chalk template literal"); + } + chunks.push(buildStyle(chalk2, styles)(chunk.join(""))); + chunk = []; + styles.pop(); + } else { + chunk.push(chr); + } + }); + chunks.push(chunk.join("")); + if (styles.length > 0) { + const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; + throw new Error(errMsg); + } + return chunks.join(""); + }; + } + }); + var require_chalk = __commonJS22({ + "node_modules/vnopts/node_modules/chalk/index.js"(exports2, module22) { + "use strict"; + var escapeStringRegexp2 = require_escape_string_regexp(); + var ansiStyles = require_ansi_styles2(); + var stdoutColor = require_supports_color2().stdout; + var template = require_templates2(); + var isSimpleWindowsTerm = process.platform === "win32" && !(process.env.TERM || "").toLowerCase().startsWith("xterm"); + var levelMapping = ["ansi", "ansi", "ansi256", "ansi16m"]; + var skipModels = /* @__PURE__ */ new Set(["gray"]); + var styles = /* @__PURE__ */ Object.create(null); + function applyOptions(obj, options) { + options = options || {}; + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === void 0 ? scLevel : options.level; + obj.enabled = "enabled" in options ? options.enabled : obj.level > 0; + } + function Chalk2(options) { + if (!this || !(this instanceof Chalk2) || this.template) { + const chalk2 = {}; + applyOptions(chalk2, options); + chalk2.template = function() { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk2.template].concat(args)); + }; + Object.setPrototypeOf(chalk2, Chalk2.prototype); + Object.setPrototypeOf(chalk2.template, chalk2); + chalk2.template.constructor = Chalk2; + return chalk2.template; + } + applyOptions(this, options); + } + if (isSimpleWindowsTerm) { + ansiStyles.blue.open = "\x1B[94m"; + } + for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp2(ansiStyles[key].close), "g"); + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; + } + styles.visible = { + get() { + return build.call(this, this._styles || [], true, "visible"); + } + }; + ansiStyles.color.closeRe = new RegExp(escapeStringRegexp2(ansiStyles.color.close), "g"); + for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } + styles[model] = { + get() { + const level = this.level; + return function() { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; + } + ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp2(ansiStyles.bgColor.close), "g"); + for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function() { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; + } + var proto = Object.defineProperties(() => { + }, styles); + function build(_styles, _empty, key) { + const builder = function() { + return applyStyle.apply(builder, arguments); + }; + builder._styles = _styles; + builder._empty = _empty; + const self2 = this; + Object.defineProperty(builder, "level", { + enumerable: true, + get() { + return self2.level; + }, + set(level) { + self2.level = level; + } + }); + Object.defineProperty(builder, "enabled", { + enumerable: true, + get() { + return self2.enabled; + }, + set(enabled) { + self2.enabled = enabled; + } + }); + builder.hasGrey = this.hasGrey || key === "gray" || key === "grey"; + builder.__proto__ = proto; + return builder; + } + function applyStyle() { + const args = arguments; + const argsLen = args.length; + let str2 = String(arguments[0]); + if (argsLen === 0) { + return ""; + } + if (argsLen > 1) { + for (let a = 1; a < argsLen; a++) { + str2 += " " + args[a]; + } + } + if (!this.enabled || this.level <= 0 || !str2) { + return this._empty ? "" : str2; + } + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ""; + } + for (const code of this._styles.slice().reverse()) { + str2 = code.open + str2.replace(code.closeRe, code.open) + code.close; + str2 = str2.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + ansiStyles.dim.open = originalDim; + return str2; + } + function chalkTag(chalk2, strings) { + if (!Array.isArray(strings)) { + return [].slice.call(arguments, 1).join(" "); + } + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, "\\$&")); + parts.push(String(strings.raw[i])); + } + return template(chalk2, parts.join("")); + } + Object.defineProperties(Chalk2.prototype, styles); + module22.exports = Chalk2(); + module22.exports.supportsColor = stdoutColor; + module22.exports.default = module22.exports; + } + }); + var require_common2 = __commonJS22({ + "node_modules/vnopts/lib/handlers/deprecated/common.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var chalk_1 = require_chalk(); + exports2.commonDeprecatedHandler = (keyOrPair, redirectTo, { + descriptor + }) => { + const messages = [`${chalk_1.default.yellow(typeof keyOrPair === "string" ? descriptor.key(keyOrPair) : descriptor.pair(keyOrPair))} is deprecated`]; + if (redirectTo) { + messages.push(`we now treat it as ${chalk_1.default.blue(typeof redirectTo === "string" ? descriptor.key(redirectTo) : descriptor.pair(redirectTo))}`); + } + return messages.join("; ") + "."; + }; + } + }); + var require_deprecated = __commonJS22({ + "node_modules/vnopts/lib/handlers/deprecated/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_common2(), exports2); + } + }); + var require_common22 = __commonJS22({ + "node_modules/vnopts/lib/handlers/invalid/common.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var chalk_1 = require_chalk(); + exports2.commonInvalidHandler = (key, value, utils) => [`Invalid ${chalk_1.default.red(utils.descriptor.key(key))} value.`, `Expected ${chalk_1.default.blue(utils.schemas[key].expected(utils))},`, `but received ${chalk_1.default.red(utils.descriptor.value(value))}.`].join(" "); + } + }); + var require_invalid = __commonJS22({ + "node_modules/vnopts/lib/handlers/invalid/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_common22(), exports2); + } + }); + var require_leven = __commonJS22({ + "node_modules/vnopts/node_modules/leven/index.js"(exports2, module22) { + "use strict"; + var arr = []; + var charCodeCache = []; + module22.exports = function(a, b) { + if (a === b) { + return 0; + } + var swap = a; + if (a.length > b.length) { + a = b; + b = swap; + } + var aLen = a.length; + var bLen = b.length; + if (aLen === 0) { + return bLen; + } + if (bLen === 0) { + return aLen; + } + while (aLen > 0 && a.charCodeAt(~-aLen) === b.charCodeAt(~-bLen)) { + aLen--; + bLen--; + } + if (aLen === 0) { + return bLen; + } + var start = 0; + while (start < aLen && a.charCodeAt(start) === b.charCodeAt(start)) { + start++; + } + aLen -= start; + bLen -= start; + if (aLen === 0) { + return bLen; + } + var bCharCode; + var ret; + var tmp; + var tmp2; + var i = 0; + var j = 0; + while (i < aLen) { + charCodeCache[start + i] = a.charCodeAt(start + i); + arr[i] = ++i; + } + while (j < bLen) { + bCharCode = b.charCodeAt(start + j); + tmp = j++; + ret = j; + for (i = 0; i < aLen; i++) { + tmp2 = bCharCode === charCodeCache[start + i] ? tmp : tmp + 1; + tmp = arr[i]; + ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2; + } + } + return ret; + }; + } + }); + var require_leven2 = __commonJS22({ + "node_modules/vnopts/lib/handlers/unknown/leven.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var chalk_1 = require_chalk(); + var leven = require_leven(); + exports2.levenUnknownHandler = (key, value, { + descriptor, + logger, + schemas + }) => { + const messages = [`Ignored unknown option ${chalk_1.default.yellow(descriptor.pair({ + key, + value + }))}.`]; + const suggestion = Object.keys(schemas).sort().find((knownKey) => leven(key, knownKey) < 3); + if (suggestion) { + messages.push(`Did you mean ${chalk_1.default.blue(descriptor.key(suggestion))}?`); + } + logger.warn(messages.join(" ")); + }; + } + }); + var require_unknown = __commonJS22({ + "node_modules/vnopts/lib/handlers/unknown/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_leven2(), exports2); + } + }); + var require_handlers = __commonJS22({ + "node_modules/vnopts/lib/handlers/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_deprecated(), exports2); + tslib_1.__exportStar(require_invalid(), exports2); + tslib_1.__exportStar(require_unknown(), exports2); + } + }); + var require_schema = __commonJS22({ + "node_modules/vnopts/lib/schema.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var HANDLER_KEYS = ["default", "expected", "validate", "deprecated", "forward", "redirect", "overlap", "preprocess", "postprocess"]; + function createSchema(SchemaConstructor, parameters) { + const schema2 = new SchemaConstructor(parameters); + const subSchema = Object.create(schema2); + for (const handlerKey of HANDLER_KEYS) { + if (handlerKey in parameters) { + subSchema[handlerKey] = normalizeHandler(parameters[handlerKey], schema2, Schema.prototype[handlerKey].length); + } + } + return subSchema; + } + exports2.createSchema = createSchema; + var Schema = class { + constructor(parameters) { + this.name = parameters.name; + } + static create(parameters) { + return createSchema(this, parameters); + } + default(_utils) { + return void 0; + } + expected(_utils) { + return "nothing"; + } + validate(_value, _utils) { + return false; + } + deprecated(_value, _utils) { + return false; + } + forward(_value, _utils) { + return void 0; + } + redirect(_value, _utils) { + return void 0; + } + overlap(currentValue, _newValue, _utils) { + return currentValue; + } + preprocess(value, _utils) { + return value; + } + postprocess(value, _utils) { + return value; + } + }; + exports2.Schema = Schema; + function normalizeHandler(handler, superSchema, handlerArgumentsLength) { + return typeof handler === "function" ? (...args) => handler(...args.slice(0, handlerArgumentsLength - 1), superSchema, ...args.slice(handlerArgumentsLength - 1)) : () => handler; + } + } + }); + var require_alias = __commonJS22({ + "node_modules/vnopts/lib/schemas/alias.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_1 = require_schema(); + var AliasSchema = class extends schema_1.Schema { + constructor(parameters) { + super(parameters); + this._sourceName = parameters.sourceName; + } + expected(utils) { + return utils.schemas[this._sourceName].expected(utils); + } + validate(value, utils) { + return utils.schemas[this._sourceName].validate(value, utils); + } + redirect(_value, _utils) { + return this._sourceName; + } + }; + exports2.AliasSchema = AliasSchema; + } + }); + var require_any = __commonJS22({ + "node_modules/vnopts/lib/schemas/any.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_1 = require_schema(); + var AnySchema = class extends schema_1.Schema { + expected() { + return "anything"; + } + validate() { + return true; + } + }; + exports2.AnySchema = AnySchema; + } + }); + var require_array2 = __commonJS22({ + "node_modules/vnopts/lib/schemas/array.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var schema_1 = require_schema(); + var ArraySchema = class extends schema_1.Schema { + constructor(_a) { + var { + valueSchema, + name = valueSchema.name + } = _a, handlers = tslib_1.__rest(_a, ["valueSchema", "name"]); + super(Object.assign({}, handlers, { + name + })); + this._valueSchema = valueSchema; + } + expected(utils) { + return `an array of ${this._valueSchema.expected(utils)}`; + } + validate(value, utils) { + if (!Array.isArray(value)) { + return false; + } + const invalidValues = []; + for (const subValue of value) { + const subValidateResult = utils.normalizeValidateResult(this._valueSchema.validate(subValue, utils), subValue); + if (subValidateResult !== true) { + invalidValues.push(subValidateResult.value); + } + } + return invalidValues.length === 0 ? true : { + value: invalidValues + }; + } + deprecated(value, utils) { + const deprecatedResult = []; + for (const subValue of value) { + const subDeprecatedResult = utils.normalizeDeprecatedResult(this._valueSchema.deprecated(subValue, utils), subValue); + if (subDeprecatedResult !== false) { + deprecatedResult.push(...subDeprecatedResult.map(({ + value: deprecatedValue + }) => ({ + value: [deprecatedValue] + }))); + } + } + return deprecatedResult; + } + forward(value, utils) { + const forwardResult = []; + for (const subValue of value) { + const subForwardResult = utils.normalizeForwardResult(this._valueSchema.forward(subValue, utils), subValue); + forwardResult.push(...subForwardResult.map(wrapTransferResult)); + } + return forwardResult; + } + redirect(value, utils) { + const remain = []; + const redirect = []; + for (const subValue of value) { + const subRedirectResult = utils.normalizeRedirectResult(this._valueSchema.redirect(subValue, utils), subValue); + if ("remain" in subRedirectResult) { + remain.push(subRedirectResult.remain); + } + redirect.push(...subRedirectResult.redirect.map(wrapTransferResult)); + } + return remain.length === 0 ? { + redirect + } : { + redirect, + remain + }; + } + overlap(currentValue, newValue) { + return currentValue.concat(newValue); + } + }; + exports2.ArraySchema = ArraySchema; + function wrapTransferResult({ + from, + to + }) { + return { + from: [from], + to + }; + } + } + }); + var require_boolean = __commonJS22({ + "node_modules/vnopts/lib/schemas/boolean.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_1 = require_schema(); + var BooleanSchema = class extends schema_1.Schema { + expected() { + return "true or false"; + } + validate(value) { + return typeof value === "boolean"; + } + }; + exports2.BooleanSchema = BooleanSchema; + } + }); + var require_utils2 = __commonJS22({ + "node_modules/vnopts/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + function recordFromArray(array, mainKey) { + const record = /* @__PURE__ */ Object.create(null); + for (const value of array) { + const key = value[mainKey]; + if (record[key]) { + throw new Error(`Duplicate ${mainKey} ${JSON.stringify(key)}`); + } + record[key] = value; + } + return record; + } + exports2.recordFromArray = recordFromArray; + function mapFromArray(array, mainKey) { + const map2 = /* @__PURE__ */ new Map(); + for (const value of array) { + const key = value[mainKey]; + if (map2.has(key)) { + throw new Error(`Duplicate ${mainKey} ${JSON.stringify(key)}`); + } + map2.set(key, value); + } + return map2; + } + exports2.mapFromArray = mapFromArray; + function createAutoChecklist() { + const map2 = /* @__PURE__ */ Object.create(null); + return (id) => { + const idString = JSON.stringify(id); + if (map2[idString]) { + return true; + } + map2[idString] = true; + return false; + }; + } + exports2.createAutoChecklist = createAutoChecklist; + function partition(array, predicate) { + const trueArray = []; + const falseArray = []; + for (const value of array) { + if (predicate(value)) { + trueArray.push(value); + } else { + falseArray.push(value); + } + } + return [trueArray, falseArray]; + } + exports2.partition = partition; + function isInt(value) { + return value === Math.floor(value); + } + exports2.isInt = isInt; + function comparePrimitive(a, b) { + if (a === b) { + return 0; + } + const typeofA = typeof a; + const typeofB = typeof b; + const orders = ["undefined", "object", "boolean", "number", "string"]; + if (typeofA !== typeofB) { + return orders.indexOf(typeofA) - orders.indexOf(typeofB); + } + if (typeofA !== "string") { + return Number(a) - Number(b); + } + return a.localeCompare(b); + } + exports2.comparePrimitive = comparePrimitive; + function normalizeDefaultResult(result) { + return result === void 0 ? {} : result; + } + exports2.normalizeDefaultResult = normalizeDefaultResult; + function normalizeValidateResult(result, value) { + return result === true ? true : result === false ? { + value + } : result; + } + exports2.normalizeValidateResult = normalizeValidateResult; + function normalizeDeprecatedResult(result, value, doNotNormalizeTrue = false) { + return result === false ? false : result === true ? doNotNormalizeTrue ? true : [{ + value + }] : "value" in result ? [result] : result.length === 0 ? false : result; + } + exports2.normalizeDeprecatedResult = normalizeDeprecatedResult; + function normalizeTransferResult(result, value) { + return typeof result === "string" || "key" in result ? { + from: value, + to: result + } : "from" in result ? { + from: result.from, + to: result.to + } : { + from: value, + to: result.to + }; + } + exports2.normalizeTransferResult = normalizeTransferResult; + function normalizeForwardResult(result, value) { + return result === void 0 ? [] : Array.isArray(result) ? result.map((transferResult) => normalizeTransferResult(transferResult, value)) : [normalizeTransferResult(result, value)]; + } + exports2.normalizeForwardResult = normalizeForwardResult; + function normalizeRedirectResult(result, value) { + const redirect = normalizeForwardResult(typeof result === "object" && "redirect" in result ? result.redirect : result, value); + return redirect.length === 0 ? { + remain: value, + redirect + } : typeof result === "object" && "remain" in result ? { + remain: result.remain, + redirect + } : { + redirect + }; + } + exports2.normalizeRedirectResult = normalizeRedirectResult; + } + }); + var require_choice = __commonJS22({ + "node_modules/vnopts/lib/schemas/choice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_1 = require_schema(); + var utils_1 = require_utils2(); + var ChoiceSchema = class extends schema_1.Schema { + constructor(parameters) { + super(parameters); + this._choices = utils_1.mapFromArray(parameters.choices.map((choice) => choice && typeof choice === "object" ? choice : { + value: choice + }), "value"); + } + expected({ + descriptor + }) { + const choiceValues = Array.from(this._choices.keys()).map((value) => this._choices.get(value)).filter((choiceInfo) => !choiceInfo.deprecated).map((choiceInfo) => choiceInfo.value).sort(utils_1.comparePrimitive).map(descriptor.value); + const head = choiceValues.slice(0, -2); + const tail = choiceValues.slice(-2); + return head.concat(tail.join(" or ")).join(", "); + } + validate(value) { + return this._choices.has(value); + } + deprecated(value) { + const choiceInfo = this._choices.get(value); + return choiceInfo && choiceInfo.deprecated ? { + value + } : false; + } + forward(value) { + const choiceInfo = this._choices.get(value); + return choiceInfo ? choiceInfo.forward : void 0; + } + redirect(value) { + const choiceInfo = this._choices.get(value); + return choiceInfo ? choiceInfo.redirect : void 0; + } + }; + exports2.ChoiceSchema = ChoiceSchema; + } + }); + var require_number = __commonJS22({ + "node_modules/vnopts/lib/schemas/number.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_1 = require_schema(); + var NumberSchema = class extends schema_1.Schema { + expected() { + return "a number"; + } + validate(value, _utils) { + return typeof value === "number"; + } + }; + exports2.NumberSchema = NumberSchema; + } + }); + var require_integer = __commonJS22({ + "node_modules/vnopts/lib/schemas/integer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils_1 = require_utils2(); + var number_1 = require_number(); + var IntegerSchema = class extends number_1.NumberSchema { + expected() { + return "an integer"; + } + validate(value, utils) { + return utils.normalizeValidateResult(super.validate(value, utils), value) === true && utils_1.isInt(value); + } + }; + exports2.IntegerSchema = IntegerSchema; + } + }); + var require_string = __commonJS22({ + "node_modules/vnopts/lib/schemas/string.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_1 = require_schema(); + var StringSchema = class extends schema_1.Schema { + expected() { + return "a string"; + } + validate(value) { + return typeof value === "string"; + } + }; + exports2.StringSchema = StringSchema; + } + }); + var require_schemas = __commonJS22({ + "node_modules/vnopts/lib/schemas/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_alias(), exports2); + tslib_1.__exportStar(require_any(), exports2); + tslib_1.__exportStar(require_array2(), exports2); + tslib_1.__exportStar(require_boolean(), exports2); + tslib_1.__exportStar(require_choice(), exports2); + tslib_1.__exportStar(require_integer(), exports2); + tslib_1.__exportStar(require_number(), exports2); + tslib_1.__exportStar(require_string(), exports2); + } + }); + var require_defaults = __commonJS22({ + "node_modules/vnopts/lib/defaults.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var api_1 = require_api(); + var common_1 = require_common2(); + var invalid_1 = require_invalid(); + var leven_1 = require_leven2(); + exports2.defaultDescriptor = api_1.apiDescriptor; + exports2.defaultUnknownHandler = leven_1.levenUnknownHandler; + exports2.defaultInvalidHandler = invalid_1.commonInvalidHandler; + exports2.defaultDeprecatedHandler = common_1.commonDeprecatedHandler; + } + }); + var require_normalize = __commonJS22({ + "node_modules/vnopts/lib/normalize.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var defaults_1 = require_defaults(); + var utils_1 = require_utils2(); + exports2.normalize = (options, schemas, opts) => new Normalizer(schemas, opts).normalize(options); + var Normalizer = class { + constructor(schemas, opts) { + const { + logger = console, + descriptor = defaults_1.defaultDescriptor, + unknown = defaults_1.defaultUnknownHandler, + invalid = defaults_1.defaultInvalidHandler, + deprecated = defaults_1.defaultDeprecatedHandler + } = opts || {}; + this._utils = { + descriptor, + logger: logger || { + warn: () => { + } + }, + schemas: utils_1.recordFromArray(schemas, "name"), + normalizeDefaultResult: utils_1.normalizeDefaultResult, + normalizeDeprecatedResult: utils_1.normalizeDeprecatedResult, + normalizeForwardResult: utils_1.normalizeForwardResult, + normalizeRedirectResult: utils_1.normalizeRedirectResult, + normalizeValidateResult: utils_1.normalizeValidateResult + }; + this._unknownHandler = unknown; + this._invalidHandler = invalid; + this._deprecatedHandler = deprecated; + this.cleanHistory(); + } + cleanHistory() { + this._hasDeprecationWarned = utils_1.createAutoChecklist(); + } + normalize(options) { + const normalized = {}; + const restOptionsArray = [options]; + const applyNormalization = () => { + while (restOptionsArray.length !== 0) { + const currentOptions = restOptionsArray.shift(); + const transferredOptionsArray = this._applyNormalization(currentOptions, normalized); + restOptionsArray.push(...transferredOptionsArray); + } + }; + applyNormalization(); + for (const key of Object.keys(this._utils.schemas)) { + const schema2 = this._utils.schemas[key]; + if (!(key in normalized)) { + const defaultResult = utils_1.normalizeDefaultResult(schema2.default(this._utils)); + if ("value" in defaultResult) { + restOptionsArray.push({ + [key]: defaultResult.value + }); + } + } + } + applyNormalization(); + for (const key of Object.keys(this._utils.schemas)) { + const schema2 = this._utils.schemas[key]; + if (key in normalized) { + normalized[key] = schema2.postprocess(normalized[key], this._utils); + } + } + return normalized; + } + _applyNormalization(options, normalized) { + const transferredOptionsArray = []; + const [knownOptionNames, unknownOptionNames] = utils_1.partition(Object.keys(options), (key) => key in this._utils.schemas); + for (const key of knownOptionNames) { + const schema2 = this._utils.schemas[key]; + const value = schema2.preprocess(options[key], this._utils); + const validateResult = utils_1.normalizeValidateResult(schema2.validate(value, this._utils), value); + if (validateResult !== true) { + const { + value: invalidValue + } = validateResult; + const errorMessageOrError = this._invalidHandler(key, invalidValue, this._utils); + throw typeof errorMessageOrError === "string" ? new Error(errorMessageOrError) : errorMessageOrError; + } + const appendTransferredOptions = ({ + from, + to + }) => { + transferredOptionsArray.push(typeof to === "string" ? { + [to]: from + } : { + [to.key]: to.value + }); + }; + const warnDeprecated = ({ + value: currentValue, + redirectTo + }) => { + const deprecatedResult = utils_1.normalizeDeprecatedResult(schema2.deprecated(currentValue, this._utils), value, true); + if (deprecatedResult === false) { + return; + } + if (deprecatedResult === true) { + if (!this._hasDeprecationWarned(key)) { + this._utils.logger.warn(this._deprecatedHandler(key, redirectTo, this._utils)); + } + } else { + for (const { + value: deprecatedValue + } of deprecatedResult) { + const pair = { + key, + value: deprecatedValue + }; + if (!this._hasDeprecationWarned(pair)) { + const redirectToPair = typeof redirectTo === "string" ? { + key: redirectTo, + value: deprecatedValue + } : redirectTo; + this._utils.logger.warn(this._deprecatedHandler(pair, redirectToPair, this._utils)); + } + } + } + }; + const forwardResult = utils_1.normalizeForwardResult(schema2.forward(value, this._utils), value); + forwardResult.forEach(appendTransferredOptions); + const redirectResult = utils_1.normalizeRedirectResult(schema2.redirect(value, this._utils), value); + redirectResult.redirect.forEach(appendTransferredOptions); + if ("remain" in redirectResult) { + const remainingValue = redirectResult.remain; + normalized[key] = key in normalized ? schema2.overlap(normalized[key], remainingValue, this._utils) : remainingValue; + warnDeprecated({ + value: remainingValue + }); + } + for (const { + from, + to + } of redirectResult.redirect) { + warnDeprecated({ + value: from, + redirectTo: to + }); + } + } + for (const key of unknownOptionNames) { + const value = options[key]; + const unknownResult = this._unknownHandler(key, value, this._utils); + if (unknownResult) { + for (const unknownKey of Object.keys(unknownResult)) { + const unknownOption = { + [unknownKey]: unknownResult[unknownKey] + }; + if (unknownKey in this._utils.schemas) { + transferredOptionsArray.push(unknownOption); + } else { + Object.assign(normalized, unknownOption); + } + } + } + } + return transferredOptionsArray; + } + }; + exports2.Normalizer = Normalizer; + } + }); + var require_lib22 = __commonJS22({ + "node_modules/vnopts/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_descriptors2(), exports2); + tslib_1.__exportStar(require_handlers(), exports2); + tslib_1.__exportStar(require_schemas(), exports2); + tslib_1.__exportStar(require_normalize(), exports2); + tslib_1.__exportStar(require_schema(), exports2); + } + }); + var require_options_normalizer = __commonJS22({ + "src/main/options-normalizer.js"(exports2, module22) { + "use strict"; + var vnopts = require_lib22(); + var getLast = require_get_last(); + var cliDescriptor = { + key: (key) => key.length === 1 ? `-${key}` : `--${key}`, + value: (value) => vnopts.apiDescriptor.value(value), + pair: ({ + key, + value + }) => value === false ? `--no-${key}` : value === true ? cliDescriptor.key(key) : value === "" ? `${cliDescriptor.key(key)} without an argument` : `${cliDescriptor.key(key)}=${value}` + }; + var getFlagSchema = ({ + colorsModule, + levenshteinDistance + }) => class FlagSchema extends vnopts.ChoiceSchema { + constructor({ + name, + flags + }) { + super({ + name, + choices: flags + }); + this._flags = [...flags].sort(); + } + preprocess(value, utils) { + if (typeof value === "string" && value.length > 0 && !this._flags.includes(value)) { + const suggestion = this._flags.find((flag) => levenshteinDistance(flag, value) < 3); + if (suggestion) { + utils.logger.warn([`Unknown flag ${colorsModule.yellow(utils.descriptor.value(value))},`, `did you mean ${colorsModule.blue(utils.descriptor.value(suggestion))}?`].join(" ")); + return suggestion; + } + } + return value; + } + expected() { + return "a flag"; + } + }; + var hasDeprecationWarned; + function normalizeOptions(options, optionInfos, { + logger = false, + isCLI = false, + passThrough = false, + colorsModule = null, + levenshteinDistance = null + } = {}) { + const unknown = !passThrough ? (key, value, options2) => { + const _options2$schemas = options2.schemas, { + _ + } = _options2$schemas, schemas2 = _objectWithoutProperties(_options2$schemas, _excluded2); + return vnopts.levenUnknownHandler(key, value, Object.assign(Object.assign({}, options2), {}, { + schemas: schemas2 + })); + } : Array.isArray(passThrough) ? (key, value) => !passThrough.includes(key) ? void 0 : { + [key]: value + } : (key, value) => ({ + [key]: value + }); + const descriptor = isCLI ? cliDescriptor : vnopts.apiDescriptor; + const schemas = optionInfosToSchemas(optionInfos, { + isCLI, + colorsModule, + levenshteinDistance + }); + const normalizer = new vnopts.Normalizer(schemas, { + logger, + unknown, + descriptor + }); + const shouldSuppressDuplicateDeprecationWarnings = logger !== false; + if (shouldSuppressDuplicateDeprecationWarnings && hasDeprecationWarned) { + normalizer._hasDeprecationWarned = hasDeprecationWarned; + } + const normalized = normalizer.normalize(options); + if (shouldSuppressDuplicateDeprecationWarnings) { + hasDeprecationWarned = normalizer._hasDeprecationWarned; + } + if (isCLI && normalized["plugin-search"] === false) { + normalized["plugin-search-dir"] = false; + } + return normalized; + } + function optionInfosToSchemas(optionInfos, { + isCLI, + colorsModule, + levenshteinDistance + }) { + const schemas = []; + if (isCLI) { + schemas.push(vnopts.AnySchema.create({ + name: "_" + })); + } + for (const optionInfo of optionInfos) { + schemas.push(optionInfoToSchema(optionInfo, { + isCLI, + optionInfos, + colorsModule, + levenshteinDistance + })); + if (optionInfo.alias && isCLI) { + schemas.push(vnopts.AliasSchema.create({ + name: optionInfo.alias, + sourceName: optionInfo.name + })); + } + } + return schemas; + } + function optionInfoToSchema(optionInfo, { + isCLI, + optionInfos, + colorsModule, + levenshteinDistance + }) { + const { + name + } = optionInfo; + if (name === "plugin-search-dir" || name === "pluginSearchDirs") { + return vnopts.AnySchema.create({ + name, + preprocess(value) { + if (value === false) { + return value; + } + value = Array.isArray(value) ? value : [value]; + return value; + }, + validate(value) { + if (value === false) { + return true; + } + return value.every((dir) => typeof dir === "string"); + }, + expected() { + return "false or paths to plugin search dir"; + } + }); + } + const parameters = { + name + }; + let SchemaConstructor; + const handlers = {}; + switch (optionInfo.type) { + case "int": + SchemaConstructor = vnopts.IntegerSchema; + if (isCLI) { + parameters.preprocess = Number; + } + break; + case "string": + SchemaConstructor = vnopts.StringSchema; + break; + case "choice": + SchemaConstructor = vnopts.ChoiceSchema; + parameters.choices = optionInfo.choices.map((choiceInfo) => typeof choiceInfo === "object" && choiceInfo.redirect ? Object.assign(Object.assign({}, choiceInfo), {}, { + redirect: { + to: { + key: optionInfo.name, + value: choiceInfo.redirect + } + } + }) : choiceInfo); + break; + case "boolean": + SchemaConstructor = vnopts.BooleanSchema; + break; + case "flag": + SchemaConstructor = getFlagSchema({ + colorsModule, + levenshteinDistance + }); + parameters.flags = optionInfos.flatMap((optionInfo2) => [optionInfo2.alias, optionInfo2.description && optionInfo2.name, optionInfo2.oppositeDescription && `no-${optionInfo2.name}`].filter(Boolean)); + break; + case "path": + SchemaConstructor = vnopts.StringSchema; + break; + default: + throw new Error(`Unexpected type ${optionInfo.type}`); + } + if (optionInfo.exception) { + parameters.validate = (value, schema2, utils) => optionInfo.exception(value) || schema2.validate(value, utils); + } else { + parameters.validate = (value, schema2, utils) => value === void 0 || schema2.validate(value, utils); + } + if (optionInfo.redirect) { + handlers.redirect = (value) => !value ? void 0 : { + to: { + key: optionInfo.redirect.option, + value: optionInfo.redirect.value + } + }; + } + if (optionInfo.deprecated) { + handlers.deprecated = true; + } + if (isCLI && !optionInfo.array) { + const originalPreprocess = parameters.preprocess || ((x) => x); + parameters.preprocess = (value, schema2, utils) => schema2.preprocess(originalPreprocess(Array.isArray(value) ? getLast(value) : value), utils); + } + return optionInfo.array ? vnopts.ArraySchema.create(Object.assign(Object.assign(Object.assign({}, isCLI ? { + preprocess: (v) => Array.isArray(v) ? v : [v] + } : {}), handlers), {}, { + valueSchema: SchemaConstructor.create(parameters) + })) : SchemaConstructor.create(Object.assign(Object.assign({}, parameters), handlers)); + } + function normalizeApiOptions(options, optionInfos, opts) { + return normalizeOptions(options, optionInfos, opts); + } + function normalizeCliOptions(options, optionInfos, opts) { + if (false) { + if (!opts.colorsModule) { + throw new Error("'colorsModule' option is required."); + } + if (!opts.levenshteinDistance) { + throw new Error("'levenshteinDistance' option is required."); + } + } + return normalizeOptions(options, optionInfos, Object.assign({ + isCLI: true + }, opts)); + } + module22.exports = { + normalizeApiOptions, + normalizeCliOptions + }; + } + }); + var require_loc = __commonJS22({ + "src/language-js/loc.js"(exports2, module22) { + "use strict"; + var isNonEmptyArray = require_is_non_empty_array(); + function locStart(node, opts) { + const { + ignoreDecorators + } = opts || {}; + if (!ignoreDecorators) { + const decorators = node.declaration && node.declaration.decorators || node.decorators; + if (isNonEmptyArray(decorators)) { + return locStart(decorators[0]); + } + } + return node.range ? node.range[0] : node.start; + } + function locEnd(node) { + return node.range ? node.range[1] : node.end; + } + function hasSameLocStart(nodeA, nodeB) { + const nodeAStart = locStart(nodeA); + return Number.isInteger(nodeAStart) && nodeAStart === locStart(nodeB); + } + function hasSameLocEnd(nodeA, nodeB) { + const nodeAEnd = locEnd(nodeA); + return Number.isInteger(nodeAEnd) && nodeAEnd === locEnd(nodeB); + } + function hasSameLoc(nodeA, nodeB) { + return hasSameLocStart(nodeA, nodeB) && hasSameLocEnd(nodeA, nodeB); + } + module22.exports = { + locStart, + locEnd, + hasSameLocStart, + hasSameLoc + }; + } + }); + var require_load_parser = __commonJS22({ + "src/main/load-parser.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var { + ConfigError + } = require_errors(); + var { + locStart, + locEnd + } = require_loc(); + function requireParser(parser) { + try { + return { + parse: require(path2.resolve(process.cwd(), parser)), + astFormat: "estree", + locStart, + locEnd + }; + } catch { + throw new ConfigError(`Couldn't resolve parser "${parser}"`); + } + } + module22.exports = requireParser; + } + }); + var require_js_tokens = __commonJS22({ + "node_modules/js-tokens/index.js"(exports2) { + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; + exports2.matchToToken = function(match) { + var token = { + type: "invalid", + value: match[0], + closed: void 0 + }; + if (match[1]) + token.type = "string", token.closed = !!(match[3] || match[4]); + else if (match[5]) + token.type = "comment"; + else if (match[6]) + token.type = "comment", token.closed = !!match[7]; + else if (match[8]) + token.type = "regex"; + else if (match[9]) + token.type = "number"; + else if (match[10]) + token.type = "name"; + else if (match[11]) + token.type = "punctuator"; + else if (match[12]) + token.type = "whitespace"; + return token; + }; + } + }); + var require_identifier = __commonJS22({ + "node_modules/@babel/helper-validator-identifier/lib/identifier.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isIdentifierChar = isIdentifierChar; + exports2.isIdentifierName = isIdentifierName; + exports2.isIdentifierStart = isIdentifierStart; + var nonASCIIidentifierStartChars = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC"; + var nonASCIIidentifierChars = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F"; + var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); + var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; + var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; + var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + function isInAstralSet(code, set2) { + let pos = 65536; + for (let i = 0, length = set2.length; i < length; i += 2) { + pos += set2[i]; + if (pos > code) + return false; + pos += set2[i + 1]; + if (pos >= code) + return true; + } + return false; + } + function isIdentifierStart(code) { + if (code < 65) + return code === 36; + if (code <= 90) + return true; + if (code < 97) + return code === 95; + if (code <= 122) + return true; + if (code <= 65535) { + return code >= 170 && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); + } + function isIdentifierChar(code) { + if (code < 48) + return code === 36; + if (code < 58) + return true; + if (code < 65) + return false; + if (code <= 90) + return true; + if (code < 97) + return code === 95; + if (code <= 122) + return true; + if (code <= 65535) { + return code >= 170 && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); + } + function isIdentifierName(name) { + let isFirst = true; + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + if ((cp & 64512) === 55296 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + if ((trail & 64512) === 56320) { + cp = 65536 + ((cp & 1023) << 10) + (trail & 1023); + } + } + if (isFirst) { + isFirst = false; + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + return !isFirst; + } + } + }); + var require_keyword = __commonJS22({ + "node_modules/@babel/helper-validator-identifier/lib/keyword.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isKeyword = isKeyword; + exports2.isReservedWord = isReservedWord; + exports2.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; + exports2.isStrictBindReservedWord = isStrictBindReservedWord; + exports2.isStrictReservedWord = isStrictReservedWord; + var reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] + }; + var keywords = new Set(reservedWords.keyword); + var reservedWordsStrictSet = new Set(reservedWords.strict); + var reservedWordsStrictBindSet = new Set(reservedWords.strictBind); + function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; + } + function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); + } + function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); + } + function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); + } + function isKeyword(word) { + return keywords.has(word); + } + } + }); + var require_lib3 = __commonJS22({ + "node_modules/@babel/helper-validator-identifier/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + Object.defineProperty(exports2, "isIdentifierChar", { + enumerable: true, + get: function() { + return _identifier.isIdentifierChar; + } + }); + Object.defineProperty(exports2, "isIdentifierName", { + enumerable: true, + get: function() { + return _identifier.isIdentifierName; + } + }); + Object.defineProperty(exports2, "isIdentifierStart", { + enumerable: true, + get: function() { + return _identifier.isIdentifierStart; + } + }); + Object.defineProperty(exports2, "isKeyword", { + enumerable: true, + get: function() { + return _keyword.isKeyword; + } + }); + Object.defineProperty(exports2, "isReservedWord", { + enumerable: true, + get: function() { + return _keyword.isReservedWord; + } + }); + Object.defineProperty(exports2, "isStrictBindOnlyReservedWord", { + enumerable: true, + get: function() { + return _keyword.isStrictBindOnlyReservedWord; + } + }); + Object.defineProperty(exports2, "isStrictBindReservedWord", { + enumerable: true, + get: function() { + return _keyword.isStrictBindReservedWord; + } + }); + Object.defineProperty(exports2, "isStrictReservedWord", { + enumerable: true, + get: function() { + return _keyword.isStrictReservedWord; + } + }); + var _identifier = require_identifier(); + var _keyword = require_keyword(); + } + }); + var require_escape_string_regexp2 = __commonJS22({ + "node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js"(exports2, module22) { + "use strict"; + var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + module22.exports = function(str2) { + if (typeof str2 !== "string") { + throw new TypeError("Expected a string"); + } + return str2.replace(matchOperatorsRe, "\\$&"); + }; + } + }); + var require_has_flag22 = __commonJS22({ + "node_modules/@babel/highlight/node_modules/has-flag/index.js"(exports2, module22) { + "use strict"; + module22.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf("--"); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); + }; + } + }); + var require_supports_color22 = __commonJS22({ + "node_modules/@babel/highlight/node_modules/supports-color/index.js"(exports2, module22) { + "use strict"; + var os = require("os"); + var hasFlag = require_has_flag22(); + var env = process.env; + var forceColor; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) { + forceColor = false; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = true; + } + if ("FORCE_COLOR" in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + const min = forceColor ? 1 : 0; + if (process.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version2 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version2 >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + if (env.TERM === "dumb") { + return min; + } + return min; + } + function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); + } + module22.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) + }; + } + }); + var require_templates22 = __commonJS22({ + "node_modules/@babel/highlight/node_modules/chalk/templates.js"(exports2, module22) { + "use strict"; + var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; + var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; + var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; + var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; + var ESCAPES = /* @__PURE__ */ new Map([["n", "\n"], ["r", "\r"], ["t", " "], ["b", "\b"], ["f", "\f"], ["v", "\v"], ["0", "\0"], ["\\", "\\"], ["e", "\x1B"], ["a", "\x07"]]); + function unescape2(c) { + if (c[0] === "u" && c.length === 5 || c[0] === "x" && c.length === 3) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + return ESCAPES.get(c) || c; + } + function parseArguments(name, args) { + const results = []; + const chunks = args.trim().split(/\s*,\s*/g); + let matches; + for (const chunk of chunks) { + if (!isNaN(chunk)) { + results.push(Number(chunk)); + } else if (matches = chunk.match(STRING_REGEX)) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape2(escape) : chr)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } + return results; + } + function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; + const results = []; + let matches; + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } + return results; + } + function buildStyle(chalk2, styles) { + const enabled = {}; + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } + let current = chalk2; + for (const styleName of Object.keys(enabled)) { + if (Array.isArray(enabled[styleName])) { + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } + if (enabled[styleName].length > 0) { + current = current[styleName].apply(current, enabled[styleName]); + } else { + current = current[styleName]; + } + } + } + return current; + } + module22.exports = (chalk2, tmp) => { + const styles = []; + const chunks = []; + let chunk = []; + tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => { + if (escapeChar) { + chunk.push(unescape2(escapeChar)); + } else if (style) { + const str2 = chunk.join(""); + chunk = []; + chunks.push(styles.length === 0 ? str2 : buildStyle(chalk2, styles)(str2)); + styles.push({ + inverse, + styles: parseStyle(style) + }); + } else if (close) { + if (styles.length === 0) { + throw new Error("Found extraneous } in Chalk template literal"); + } + chunks.push(buildStyle(chalk2, styles)(chunk.join(""))); + chunk = []; + styles.pop(); + } else { + chunk.push(chr); + } + }); + chunks.push(chunk.join("")); + if (styles.length > 0) { + const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; + throw new Error(errMsg); + } + return chunks.join(""); + }; + } + }); + var require_chalk2 = __commonJS22({ + "node_modules/@babel/highlight/node_modules/chalk/index.js"(exports2, module22) { + "use strict"; + var escapeStringRegexp2 = require_escape_string_regexp2(); + var ansiStyles = require_ansi_styles2(); + var stdoutColor = require_supports_color22().stdout; + var template = require_templates22(); + var isSimpleWindowsTerm = process.platform === "win32" && !(process.env.TERM || "").toLowerCase().startsWith("xterm"); + var levelMapping = ["ansi", "ansi", "ansi256", "ansi16m"]; + var skipModels = /* @__PURE__ */ new Set(["gray"]); + var styles = /* @__PURE__ */ Object.create(null); + function applyOptions(obj, options) { + options = options || {}; + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === void 0 ? scLevel : options.level; + obj.enabled = "enabled" in options ? options.enabled : obj.level > 0; + } + function Chalk2(options) { + if (!this || !(this instanceof Chalk2) || this.template) { + const chalk2 = {}; + applyOptions(chalk2, options); + chalk2.template = function() { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk2.template].concat(args)); + }; + Object.setPrototypeOf(chalk2, Chalk2.prototype); + Object.setPrototypeOf(chalk2.template, chalk2); + chalk2.template.constructor = Chalk2; + return chalk2.template; + } + applyOptions(this, options); + } + if (isSimpleWindowsTerm) { + ansiStyles.blue.open = "\x1B[94m"; + } + for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp2(ansiStyles[key].close), "g"); + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; + } + styles.visible = { + get() { + return build.call(this, this._styles || [], true, "visible"); + } + }; + ansiStyles.color.closeRe = new RegExp(escapeStringRegexp2(ansiStyles.color.close), "g"); + for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } + styles[model] = { + get() { + const level = this.level; + return function() { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; + } + ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp2(ansiStyles.bgColor.close), "g"); + for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function() { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; + } + var proto = Object.defineProperties(() => { + }, styles); + function build(_styles, _empty, key) { + const builder = function() { + return applyStyle.apply(builder, arguments); + }; + builder._styles = _styles; + builder._empty = _empty; + const self2 = this; + Object.defineProperty(builder, "level", { + enumerable: true, + get() { + return self2.level; + }, + set(level) { + self2.level = level; + } + }); + Object.defineProperty(builder, "enabled", { + enumerable: true, + get() { + return self2.enabled; + }, + set(enabled) { + self2.enabled = enabled; + } + }); + builder.hasGrey = this.hasGrey || key === "gray" || key === "grey"; + builder.__proto__ = proto; + return builder; + } + function applyStyle() { + const args = arguments; + const argsLen = args.length; + let str2 = String(arguments[0]); + if (argsLen === 0) { + return ""; + } + if (argsLen > 1) { + for (let a = 1; a < argsLen; a++) { + str2 += " " + args[a]; + } + } + if (!this.enabled || this.level <= 0 || !str2) { + return this._empty ? "" : str2; + } + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ""; + } + for (const code of this._styles.slice().reverse()) { + str2 = code.open + str2.replace(code.closeRe, code.open) + code.close; + str2 = str2.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + ansiStyles.dim.open = originalDim; + return str2; + } + function chalkTag(chalk2, strings) { + if (!Array.isArray(strings)) { + return [].slice.call(arguments, 1).join(" "); + } + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, "\\$&")); + parts.push(String(strings.raw[i])); + } + return template(chalk2, parts.join("")); + } + Object.defineProperties(Chalk2.prototype, styles); + module22.exports = Chalk2(); + module22.exports.supportsColor = stdoutColor; + module22.exports.default = module22.exports; + } + }); + var require_lib4 = __commonJS22({ + "node_modules/@babel/highlight/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = highlight; + exports2.getChalk = getChalk; + exports2.shouldHighlight = shouldHighlight; + var _jsTokens = require_js_tokens(); + var _helperValidatorIdentifier = require_lib3(); + var _chalk = require_chalk2(); + var sometimesKeywords = /* @__PURE__ */ new Set(["as", "async", "from", "get", "of", "set"]); + function getDefs(chalk2) { + return { + keyword: chalk2.cyan, + capitalized: chalk2.yellow, + jsxIdentifier: chalk2.yellow, + punctuator: chalk2.yellow, + number: chalk2.magenta, + string: chalk2.green, + regex: chalk2.magenta, + comment: chalk2.grey, + invalid: chalk2.white.bgRed.bold + }; + } + var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + var BRACKET = /^[()[\]{}]$/; + var tokenize; + { + const JSX_TAG = /^[a-z][\w-]*$/i; + const getTokenType = function(token, offset, text) { + if (token.type === "name") { + if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) { + return "keyword"; + } + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == " colorize(str2)).join("\n"); + } else { + highlighted += value; + } + } + return highlighted; + } + function shouldHighlight(options) { + return !!_chalk.supportsColor || options.forceColor; + } + function getChalk(options) { + return options.forceColor ? new _chalk.constructor({ + enabled: true, + level: 1 + }) : _chalk; + } + function highlight(code, options = {}) { + if (code !== "" && shouldHighlight(options)) { + const chalk2 = getChalk(options); + const defs = getDefs(chalk2); + return highlightTokens(defs, code); + } else { + return code; + } + } + } + }); + var require_lib5 = __commonJS22({ + "node_modules/@babel/code-frame/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.codeFrameColumns = codeFrameColumns; + exports2.default = _default2; + var _highlight = require_lib4(); + var deprecationWarningShown = false; + function getDefs(chalk2) { + return { + gutter: chalk2.grey, + marker: chalk2.red.bold, + message: chalk2.red.bold + }; + } + var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + function getMarkerLines(loc, source, opts) { + const startLoc = Object.assign({ + column: 0, + line: -1 + }, loc.start); + const endLoc = Object.assign({}, startLoc, loc.end); + const { + linesAbove = 2, + linesBelow = 3 + } = opts || {}; + const startLine = startLoc.line; + const startColumn = startLoc.column; + const endLine = endLoc.line; + const endColumn = endLoc.column; + let start = Math.max(startLine - (linesAbove + 1), 0); + let end = Math.min(source.length, endLine + linesBelow); + if (startLine === -1) { + start = 0; + } + if (endLine === -1) { + end = source.length; + } + const lineDiff = endLine - startLine; + const markerLines = {}; + if (lineDiff) { + for (let i = 0; i <= lineDiff; i++) { + const lineNumber = i + startLine; + if (!startColumn) { + markerLines[lineNumber] = true; + } else if (i === 0) { + const sourceLength = source[lineNumber - 1].length; + markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; + } else if (i === lineDiff) { + markerLines[lineNumber] = [0, endColumn]; + } else { + const sourceLength = source[lineNumber - i].length; + markerLines[lineNumber] = [0, sourceLength]; + } + } + } else { + if (startColumn === endColumn) { + if (startColumn) { + markerLines[startLine] = [startColumn, 0]; + } else { + markerLines[startLine] = true; + } + } else { + markerLines[startLine] = [startColumn, endColumn - startColumn]; + } + } + return { + start, + end, + markerLines + }; + } + function codeFrameColumns(rawLines, loc, opts = {}) { + const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts); + const chalk2 = (0, _highlight.getChalk)(opts); + const defs = getDefs(chalk2); + const maybeHighlight = (chalkFn, string) => { + return highlighted ? chalkFn(string) : string; + }; + const lines = rawLines.split(NEWLINE); + const { + start, + end, + markerLines + } = getMarkerLines(loc, lines, opts); + const hasColumns = loc.start && typeof loc.start.column === "number"; + const numberMaxWidth = String(end).length; + const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines; + let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { + const number = start + 1 + index; + const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const gutter = ` ${paddedNumber} |`; + const hasMarker = markerLines[number]; + const lastMarkerLine = !markerLines[number + 1]; + if (hasMarker) { + let markerLine = ""; + if (Array.isArray(hasMarker)) { + const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); + const numberOfMarkers = hasMarker[1] || 1; + markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join(""); + if (lastMarkerLine && opts.message) { + markerLine += " " + maybeHighlight(defs.message, opts.message); + } + } + return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); + } else { + return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`; + } + }).join("\n"); + if (opts.message && !hasColumns) { + frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message} +${frame}`; + } + if (highlighted) { + return chalk2.reset(frame); + } else { + return frame; + } + } + function _default2(rawLines, lineNumber, colNumber, opts = {}) { + if (!deprecationWarningShown) { + deprecationWarningShown = true; + const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; + if (process.emitWarning) { + process.emitWarning(message, "DeprecationWarning"); + } else { + const deprecationError = new Error(message); + deprecationError.name = "DeprecationWarning"; + console.warn(new Error(message)); + } + } + colNumber = Math.max(colNumber, 0); + const location = { + start: { + column: colNumber, + line: lineNumber + } + }; + return codeFrameColumns(rawLines, location, opts); + } + } + }); + var require_parser = __commonJS22({ + "src/main/parser.js"(exports2, module22) { + "use strict"; + var { + ConfigError + } = require_errors(); + var jsLoc = require_loc(); + var loadParser = require_load_parser(); + var { + locStart, + locEnd + } = jsLoc; + var ownNames = Object.getOwnPropertyNames; + var ownDescriptor = Object.getOwnPropertyDescriptor; + function getParsers(options) { + const parsers = {}; + for (const plugin of options.plugins) { + if (!plugin.parsers) { + continue; + } + for (const name of ownNames(plugin.parsers)) { + Object.defineProperty(parsers, name, ownDescriptor(plugin.parsers, name)); + } + } + return parsers; + } + function resolveParser(opts, parsers = getParsers(opts)) { + if (typeof opts.parser === "function") { + return { + parse: opts.parser, + astFormat: "estree", + locStart, + locEnd + }; + } + if (typeof opts.parser === "string") { + if (Object.prototype.hasOwnProperty.call(parsers, opts.parser)) { + return parsers[opts.parser]; + } + if (false) { + throw new ConfigError(`Couldn't resolve parser "${opts.parser}". Parsers must be explicitly added to the standalone bundle.`); + } + return loadParser(opts.parser); + } + } + function parse(text, opts) { + const parsers = getParsers(opts); + const parsersForCustomParserApi = Object.defineProperties({}, Object.fromEntries(Object.keys(parsers).map((parserName) => [parserName, { + enumerable: true, + get() { + return parsers[parserName].parse; + } + }]))); + const parser = resolveParser(opts, parsers); + try { + if (parser.preprocess) { + text = parser.preprocess(text, opts); + } + return { + text, + ast: parser.parse(text, parsersForCustomParserApi, opts) + }; + } catch (error2) { + const { + loc + } = error2; + if (loc) { + const { + codeFrameColumns + } = require_lib5(); + error2.codeFrame = codeFrameColumns(text, loc, { + highlightCode: true + }); + error2.message += "\n" + error2.codeFrame; + throw error2; + } + throw error2.stack; + } + } + module22.exports = { + parse, + resolveParser + }; + } + }); + var require_readlines = __commonJS22({ + "node_modules/n-readlines/readlines.js"(exports2, module22) { + "use strict"; + var fs5 = require("fs"); + var LineByLine = class { + constructor(file, options) { + options = options || {}; + if (!options.readChunk) + options.readChunk = 1024; + if (!options.newLineCharacter) { + options.newLineCharacter = 10; + } else { + options.newLineCharacter = options.newLineCharacter.charCodeAt(0); + } + if (typeof file === "number") { + this.fd = file; + } else { + this.fd = fs5.openSync(file, "r"); + } + this.options = options; + this.newLineCharacter = options.newLineCharacter; + this.reset(); + } + _searchInBuffer(buffer, hexNeedle) { + let found = -1; + for (let i = 0; i <= buffer.length; i++) { + let b_byte = buffer[i]; + if (b_byte === hexNeedle) { + found = i; + break; + } + } + return found; + } + reset() { + this.eofReached = false; + this.linesCache = []; + this.fdPosition = 0; + } + close() { + fs5.closeSync(this.fd); + this.fd = null; + } + _extractLines(buffer) { + let line; + const lines = []; + let bufferPosition = 0; + let lastNewLineBufferPosition = 0; + while (true) { + let bufferPositionValue = buffer[bufferPosition++]; + if (bufferPositionValue === this.newLineCharacter) { + line = buffer.slice(lastNewLineBufferPosition, bufferPosition); + lines.push(line); + lastNewLineBufferPosition = bufferPosition; + } else if (bufferPositionValue === void 0) { + break; + } + } + let leftovers = buffer.slice(lastNewLineBufferPosition, bufferPosition); + if (leftovers.length) { + lines.push(leftovers); + } + return lines; + } + _readChunk(lineLeftovers) { + let totalBytesRead = 0; + let bytesRead; + const buffers = []; + do { + const readBuffer = new Buffer(this.options.readChunk); + bytesRead = fs5.readSync(this.fd, readBuffer, 0, this.options.readChunk, this.fdPosition); + totalBytesRead = totalBytesRead + bytesRead; + this.fdPosition = this.fdPosition + bytesRead; + buffers.push(readBuffer); + } while (bytesRead && this._searchInBuffer(buffers[buffers.length - 1], this.options.newLineCharacter) === -1); + let bufferData = Buffer.concat(buffers); + if (bytesRead < this.options.readChunk) { + this.eofReached = true; + bufferData = bufferData.slice(0, totalBytesRead); + } + if (totalBytesRead) { + this.linesCache = this._extractLines(bufferData); + if (lineLeftovers) { + this.linesCache[0] = Buffer.concat([lineLeftovers, this.linesCache[0]]); + } + } + return totalBytesRead; + } + next() { + if (!this.fd) + return false; + let line = false; + if (this.eofReached && this.linesCache.length === 0) { + return line; + } + let bytesRead; + if (!this.linesCache.length) { + bytesRead = this._readChunk(); + } + if (this.linesCache.length) { + line = this.linesCache.shift(); + const lastLineCharacter = line[line.length - 1]; + if (lastLineCharacter !== this.newLineCharacter) { + bytesRead = this._readChunk(line); + if (bytesRead) { + line = this.linesCache.shift(); + } + } + } + if (this.eofReached && this.linesCache.length === 0) { + this.close(); + } + if (line && line[line.length - 1] === this.newLineCharacter) { + line = line.slice(0, line.length - 1); + } + return line; + } + }; + module22.exports = LineByLine; + } + }); + var require_get_interpreter = __commonJS22({ + "src/utils/get-interpreter.js"(exports2, module22) { + "use strict"; + var fs5 = require("fs"); + var readlines = require_readlines(); + function getInterpreter(filepath) { + if (typeof filepath !== "string") { + return ""; + } + let fd; + try { + fd = fs5.openSync(filepath, "r"); + } catch { + return ""; + } + try { + const liner = new readlines(fd); + const firstLine = liner.next().toString("utf8"); + const m1 = firstLine.match(/^#!\/(?:usr\/)?bin\/env\s+(\S+)/); + if (m1) { + return m1[1]; + } + const m2 = firstLine.match(/^#!\/(?:usr\/(?:local\/)?)?bin\/(\S+)/); + if (m2) { + return m2[1]; + } + return ""; + } catch { + return ""; + } finally { + try { + fs5.closeSync(fd); + } catch { + } + } + } + module22.exports = getInterpreter; + } + }); + var require_options = __commonJS22({ + "src/main/options.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var { + UndefinedParserError + } = require_errors(); + var { + getSupportInfo: getSupportInfo2 + } = require_support(); + var normalizer = require_options_normalizer(); + var { + resolveParser + } = require_parser(); + var hiddenDefaults = { + astFormat: "estree", + printer: {}, + originalText: void 0, + locStart: null, + locEnd: null + }; + function normalize(options, opts = {}) { + const rawOptions = Object.assign({}, options); + const supportOptions = getSupportInfo2({ + plugins: options.plugins, + showUnreleased: true, + showDeprecated: true + }).options; + const defaults = Object.assign(Object.assign({}, hiddenDefaults), Object.fromEntries(supportOptions.filter((optionInfo) => optionInfo.default !== void 0).map((option) => [option.name, option.default]))); + if (!rawOptions.parser) { + if (!rawOptions.filepath) { + const logger = opts.logger || console; + logger.warn("No parser and no filepath given, using 'babel' the parser now but this will throw an error in the future. Please specify a parser or a filepath so one can be inferred."); + rawOptions.parser = "babel"; + } else { + rawOptions.parser = inferParser(rawOptions.filepath, rawOptions.plugins); + if (!rawOptions.parser) { + throw new UndefinedParserError(`No parser could be inferred for file: ${rawOptions.filepath}`); + } + } + } + const parser = resolveParser(normalizer.normalizeApiOptions(rawOptions, [supportOptions.find((x) => x.name === "parser")], { + passThrough: true, + logger: false + })); + rawOptions.astFormat = parser.astFormat; + rawOptions.locEnd = parser.locEnd; + rawOptions.locStart = parser.locStart; + const plugin = getPlugin(rawOptions); + rawOptions.printer = plugin.printers[rawOptions.astFormat]; + const pluginDefaults = Object.fromEntries(supportOptions.filter((optionInfo) => optionInfo.pluginDefaults && optionInfo.pluginDefaults[plugin.name] !== void 0).map((optionInfo) => [optionInfo.name, optionInfo.pluginDefaults[plugin.name]])); + const mixedDefaults = Object.assign(Object.assign({}, defaults), pluginDefaults); + for (const [k, value] of Object.entries(mixedDefaults)) { + if (rawOptions[k] === null || rawOptions[k] === void 0) { + rawOptions[k] = value; + } + } + if (rawOptions.parser === "json") { + rawOptions.trailingComma = "none"; + } + return normalizer.normalizeApiOptions(rawOptions, supportOptions, Object.assign({ + passThrough: Object.keys(hiddenDefaults) + }, opts)); + } + function getPlugin(options) { + const { + astFormat + } = options; + if (!astFormat) { + throw new Error("getPlugin() requires astFormat to be set"); + } + const printerPlugin = options.plugins.find((plugin) => plugin.printers && plugin.printers[astFormat]); + if (!printerPlugin) { + throw new Error(`Couldn't find plugin for AST format "${astFormat}"`); + } + return printerPlugin; + } + function inferParser(filepath, plugins2) { + const filename = path2.basename(filepath).toLowerCase(); + const languages = getSupportInfo2({ + plugins: plugins2 + }).languages.filter((language2) => language2.since !== null); + let language = languages.find((language2) => language2.extensions && language2.extensions.some((extension) => filename.endsWith(extension)) || language2.filenames && language2.filenames.some((name) => name.toLowerCase() === filename)); + if (!language && !filename.includes(".")) { + const getInterpreter = require_get_interpreter(); + const interpreter = getInterpreter(filepath); + language = languages.find((language2) => language2.interpreters && language2.interpreters.includes(interpreter)); + } + return language && language.parsers[0]; + } + module22.exports = { + normalize, + hiddenDefaults, + inferParser + }; + } + }); + var require_massage_ast = __commonJS22({ + "src/main/massage-ast.js"(exports2, module22) { + "use strict"; + function massageAST(ast, options, parent) { + if (Array.isArray(ast)) { + return ast.map((e) => massageAST(e, options, parent)).filter(Boolean); + } + if (!ast || typeof ast !== "object") { + return ast; + } + const cleanFunction = options.printer.massageAstNode; + let ignoredProperties; + if (cleanFunction && cleanFunction.ignoredProperties) { + ignoredProperties = cleanFunction.ignoredProperties; + } else { + ignoredProperties = /* @__PURE__ */ new Set(); + } + const newObj = {}; + for (const [key, value] of Object.entries(ast)) { + if (!ignoredProperties.has(key) && typeof value !== "function") { + newObj[key] = massageAST(value, options, ast); + } + } + if (cleanFunction) { + const result = cleanFunction(ast, newObj, parent); + if (result === null) { + return; + } + if (result) { + return result; + } + } + return newObj; + } + module22.exports = massageAST; + } + }); + var require_comments = __commonJS22({ + "src/main/comments.js"(exports2, module22) { + "use strict"; + var assert = require("assert"); + var { + builders: { + line, + hardline, + breakParent, + indent, + lineSuffix, + join, + cursor + } + } = require_doc(); + var { + hasNewline, + skipNewline, + skipSpaces, + isPreviousLineEmpty, + addLeadingComment, + addDanglingComment, + addTrailingComment + } = require_util2(); + var childNodesCache = /* @__PURE__ */ new WeakMap(); + function getSortedChildNodes(node, options, resultArray) { + if (!node) { + return; + } + const { + printer, + locStart, + locEnd + } = options; + if (resultArray) { + if (printer.canAttachComment && printer.canAttachComment(node)) { + let i; + for (i = resultArray.length - 1; i >= 0; --i) { + if (locStart(resultArray[i]) <= locStart(node) && locEnd(resultArray[i]) <= locEnd(node)) { + break; + } + } + resultArray.splice(i + 1, 0, node); + return; + } + } else if (childNodesCache.has(node)) { + return childNodesCache.get(node); + } + const childNodes = printer.getCommentChildNodes && printer.getCommentChildNodes(node, options) || typeof node === "object" && Object.entries(node).filter(([key]) => key !== "enclosingNode" && key !== "precedingNode" && key !== "followingNode" && key !== "tokens" && key !== "comments" && key !== "parent").map(([, value]) => value); + if (!childNodes) { + return; + } + if (!resultArray) { + resultArray = []; + childNodesCache.set(node, resultArray); + } + for (const childNode of childNodes) { + getSortedChildNodes(childNode, options, resultArray); + } + return resultArray; + } + function decorateComment(node, comment, options, enclosingNode) { + const { + locStart, + locEnd + } = options; + const commentStart = locStart(comment); + const commentEnd = locEnd(comment); + const childNodes = getSortedChildNodes(node, options); + let precedingNode; + let followingNode; + let left = 0; + let right = childNodes.length; + while (left < right) { + const middle = left + right >> 1; + const child = childNodes[middle]; + const start = locStart(child); + const end = locEnd(child); + if (start <= commentStart && commentEnd <= end) { + return decorateComment(child, comment, options, child); + } + if (end <= commentStart) { + precedingNode = child; + left = middle + 1; + continue; + } + if (commentEnd <= start) { + followingNode = child; + right = middle; + continue; + } + throw new Error("Comment location overlaps with node location"); + } + if (enclosingNode && enclosingNode.type === "TemplateLiteral") { + const { + quasis + } = enclosingNode; + const commentIndex = findExpressionIndexForComment(quasis, comment, options); + if (precedingNode && findExpressionIndexForComment(quasis, precedingNode, options) !== commentIndex) { + precedingNode = null; + } + if (followingNode && findExpressionIndexForComment(quasis, followingNode, options) !== commentIndex) { + followingNode = null; + } + } + return { + enclosingNode, + precedingNode, + followingNode + }; + } + var returnFalse = () => false; + function attach(comments, ast, text, options) { + if (!Array.isArray(comments)) { + return; + } + const tiesToBreak = []; + const { + locStart, + locEnd, + printer: { + handleComments = {} + } + } = options; + const { + avoidAstMutation, + ownLine: handleOwnLineComment = returnFalse, + endOfLine: handleEndOfLineComment = returnFalse, + remaining: handleRemainingComment = returnFalse + } = handleComments; + const decoratedComments = comments.map((comment, index) => Object.assign(Object.assign({}, decorateComment(ast, comment, options)), {}, { + comment, + text, + options, + ast, + isLastComment: comments.length - 1 === index + })); + for (const [index, context] of decoratedComments.entries()) { + const { + comment, + precedingNode, + enclosingNode, + followingNode, + text: text2, + options: options2, + ast: ast2, + isLastComment + } = context; + if (options2.parser === "json" || options2.parser === "json5" || options2.parser === "__js_expression" || options2.parser === "__vue_expression" || options2.parser === "__vue_ts_expression") { + if (locStart(comment) - locStart(ast2) <= 0) { + addLeadingComment(ast2, comment); + continue; + } + if (locEnd(comment) - locEnd(ast2) >= 0) { + addTrailingComment(ast2, comment); + continue; + } + } + let args; + if (avoidAstMutation) { + args = [context]; + } else { + comment.enclosingNode = enclosingNode; + comment.precedingNode = precedingNode; + comment.followingNode = followingNode; + args = [comment, text2, options2, ast2, isLastComment]; + } + if (isOwnLineComment(text2, options2, decoratedComments, index)) { + comment.placement = "ownLine"; + if (handleOwnLineComment(...args)) { + } else if (followingNode) { + addLeadingComment(followingNode, comment); + } else if (precedingNode) { + addTrailingComment(precedingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + addDanglingComment(ast2, comment); + } + } else if (isEndOfLineComment(text2, options2, decoratedComments, index)) { + comment.placement = "endOfLine"; + if (handleEndOfLineComment(...args)) { + } else if (precedingNode) { + addTrailingComment(precedingNode, comment); + } else if (followingNode) { + addLeadingComment(followingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + addDanglingComment(ast2, comment); + } + } else { + comment.placement = "remaining"; + if (handleRemainingComment(...args)) { + } else if (precedingNode && followingNode) { + const tieCount = tiesToBreak.length; + if (tieCount > 0) { + const lastTie = tiesToBreak[tieCount - 1]; + if (lastTie.followingNode !== followingNode) { + breakTies(tiesToBreak, text2, options2); + } + } + tiesToBreak.push(context); + } else if (precedingNode) { + addTrailingComment(precedingNode, comment); + } else if (followingNode) { + addLeadingComment(followingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + addDanglingComment(ast2, comment); + } + } + } + breakTies(tiesToBreak, text, options); + if (!avoidAstMutation) { + for (const comment of comments) { + delete comment.precedingNode; + delete comment.enclosingNode; + delete comment.followingNode; + } + } + } + var isAllEmptyAndNoLineBreak = (text) => !/[\S\n\u2028\u2029]/.test(text); + function isOwnLineComment(text, options, decoratedComments, commentIndex) { + const { + comment, + precedingNode + } = decoratedComments[commentIndex]; + const { + locStart, + locEnd + } = options; + let start = locStart(comment); + if (precedingNode) { + for (let index = commentIndex - 1; index >= 0; index--) { + const { + comment: comment2, + precedingNode: currentCommentPrecedingNode + } = decoratedComments[index]; + if (currentCommentPrecedingNode !== precedingNode || !isAllEmptyAndNoLineBreak(text.slice(locEnd(comment2), start))) { + break; + } + start = locStart(comment2); + } + } + return hasNewline(text, start, { + backwards: true + }); + } + function isEndOfLineComment(text, options, decoratedComments, commentIndex) { + const { + comment, + followingNode + } = decoratedComments[commentIndex]; + const { + locStart, + locEnd + } = options; + let end = locEnd(comment); + if (followingNode) { + for (let index = commentIndex + 1; index < decoratedComments.length; index++) { + const { + comment: comment2, + followingNode: currentCommentFollowingNode + } = decoratedComments[index]; + if (currentCommentFollowingNode !== followingNode || !isAllEmptyAndNoLineBreak(text.slice(end, locStart(comment2)))) { + break; + } + end = locEnd(comment2); + } + } + return hasNewline(text, end); + } + function breakTies(tiesToBreak, text, options) { + const tieCount = tiesToBreak.length; + if (tieCount === 0) { + return; + } + const { + precedingNode, + followingNode, + enclosingNode + } = tiesToBreak[0]; + const gapRegExp = options.printer.getGapRegex && options.printer.getGapRegex(enclosingNode) || /^[\s(]*$/; + let gapEndPos = options.locStart(followingNode); + let indexOfFirstLeadingComment; + for (indexOfFirstLeadingComment = tieCount; indexOfFirstLeadingComment > 0; --indexOfFirstLeadingComment) { + const { + comment, + precedingNode: currentCommentPrecedingNode, + followingNode: currentCommentFollowingNode + } = tiesToBreak[indexOfFirstLeadingComment - 1]; + assert.strictEqual(currentCommentPrecedingNode, precedingNode); + assert.strictEqual(currentCommentFollowingNode, followingNode); + const gap = text.slice(options.locEnd(comment), gapEndPos); + if (gapRegExp.test(gap)) { + gapEndPos = options.locStart(comment); + } else { + break; + } + } + for (const [i, { + comment + }] of tiesToBreak.entries()) { + if (i < indexOfFirstLeadingComment) { + addTrailingComment(precedingNode, comment); + } else { + addLeadingComment(followingNode, comment); + } + } + for (const node of [precedingNode, followingNode]) { + if (node.comments && node.comments.length > 1) { + node.comments.sort((a, b) => options.locStart(a) - options.locStart(b)); + } + } + tiesToBreak.length = 0; + } + function printComment(path2, options) { + const comment = path2.getValue(); + comment.printed = true; + return options.printer.printComment(path2, options); + } + function findExpressionIndexForComment(quasis, comment, options) { + const startPos = options.locStart(comment) - 1; + for (let i = 1; i < quasis.length; ++i) { + if (startPos < options.locStart(quasis[i])) { + return i - 1; + } + } + return 0; + } + function printLeadingComment(path2, options) { + const comment = path2.getValue(); + const parts = [printComment(path2, options)]; + const { + printer, + originalText, + locStart, + locEnd + } = options; + const isBlock = printer.isBlockComment && printer.isBlockComment(comment); + if (isBlock) { + const lineBreak = hasNewline(originalText, locEnd(comment)) ? hasNewline(originalText, locStart(comment), { + backwards: true + }) ? hardline : line : " "; + parts.push(lineBreak); + } else { + parts.push(hardline); + } + const index = skipNewline(originalText, skipSpaces(originalText, locEnd(comment))); + if (index !== false && hasNewline(originalText, index)) { + parts.push(hardline); + } + return parts; + } + function printTrailingComment(path2, options) { + const comment = path2.getValue(); + const printed = printComment(path2, options); + const { + printer, + originalText, + locStart + } = options; + const isBlock = printer.isBlockComment && printer.isBlockComment(comment); + if (hasNewline(originalText, locStart(comment), { + backwards: true + })) { + const isLineBeforeEmpty = isPreviousLineEmpty(originalText, comment, locStart); + return lineSuffix([hardline, isLineBeforeEmpty ? hardline : "", printed]); + } + let parts = [" ", printed]; + if (!isBlock) { + parts = [lineSuffix(parts), breakParent]; + } + return parts; + } + function printDanglingComments(path2, options, sameIndent, filter) { + const parts = []; + const node = path2.getValue(); + if (!node || !node.comments) { + return ""; + } + path2.each(() => { + const comment = path2.getValue(); + if (!comment.leading && !comment.trailing && (!filter || filter(comment))) { + parts.push(printComment(path2, options)); + } + }, "comments"); + if (parts.length === 0) { + return ""; + } + if (sameIndent) { + return join(hardline, parts); + } + return indent([hardline, join(hardline, parts)]); + } + function printCommentsSeparately(path2, options, ignored) { + const value = path2.getValue(); + if (!value) { + return {}; + } + let comments = value.comments || []; + if (ignored) { + comments = comments.filter((comment) => !ignored.has(comment)); + } + const isCursorNode = value === options.cursorNode; + if (comments.length === 0) { + const maybeCursor = isCursorNode ? cursor : ""; + return { + leading: maybeCursor, + trailing: maybeCursor + }; + } + const leadingParts = []; + const trailingParts = []; + path2.each(() => { + const comment = path2.getValue(); + if (ignored && ignored.has(comment)) { + return; + } + const { + leading, + trailing + } = comment; + if (leading) { + leadingParts.push(printLeadingComment(path2, options)); + } else if (trailing) { + trailingParts.push(printTrailingComment(path2, options)); + } + }, "comments"); + if (isCursorNode) { + leadingParts.unshift(cursor); + trailingParts.push(cursor); + } + return { + leading: leadingParts, + trailing: trailingParts + }; + } + function printComments(path2, doc2, options, ignored) { + const { + leading, + trailing + } = printCommentsSeparately(path2, options, ignored); + if (!leading && !trailing) { + return doc2; + } + return [leading, doc2, trailing]; + } + function ensureAllCommentsPrinted(astComments) { + if (!astComments) { + return; + } + for (const comment of astComments) { + if (!comment.printed) { + throw new Error('Comment "' + comment.value.trim() + '" was not printed. Please report this error!'); + } + delete comment.printed; + } + } + module22.exports = { + attach, + printComments, + printCommentsSeparately, + printDanglingComments, + getSortedChildNodes, + ensureAllCommentsPrinted + }; + } + }); + var require_ast_path = __commonJS22({ + "src/common/ast-path.js"(exports2, module22) { + "use strict"; + var getLast = require_get_last(); + function getNodeHelper(path2, count) { + const stackIndex = getNodeStackIndexHelper(path2.stack, count); + return stackIndex === -1 ? null : path2.stack[stackIndex]; + } + function getNodeStackIndexHelper(stack, count) { + for (let i = stack.length - 1; i >= 0; i -= 2) { + const value = stack[i]; + if (value && !Array.isArray(value) && --count < 0) { + return i; + } + } + return -1; + } + var AstPath = class { + constructor(value) { + this.stack = [value]; + } + getName() { + const { + stack + } = this; + const { + length + } = stack; + if (length > 1) { + return stack[length - 2]; + } + return null; + } + getValue() { + return getLast(this.stack); + } + getNode(count = 0) { + return getNodeHelper(this, count); + } + getParentNode(count = 0) { + return getNodeHelper(this, count + 1); + } + call(callback, ...names) { + const { + stack + } = this; + const { + length + } = stack; + let value = getLast(stack); + for (const name of names) { + value = value[name]; + stack.push(name, value); + } + const result = callback(this); + stack.length = length; + return result; + } + callParent(callback, count = 0) { + const stackIndex = getNodeStackIndexHelper(this.stack, count + 1); + const parentValues = this.stack.splice(stackIndex + 1); + const result = callback(this); + this.stack.push(...parentValues); + return result; + } + each(callback, ...names) { + const { + stack + } = this; + const { + length + } = stack; + let value = getLast(stack); + for (const name of names) { + value = value[name]; + stack.push(name, value); + } + for (let i = 0; i < value.length; ++i) { + stack.push(i, value[i]); + callback(this, i, value); + stack.length -= 2; + } + stack.length = length; + } + map(callback, ...names) { + const result = []; + this.each((path2, index, value) => { + result[index] = callback(path2, index, value); + }, ...names); + return result; + } + try(callback) { + const { + stack + } = this; + const stackBackup = [...stack]; + try { + return callback(); + } finally { + stack.length = 0; + stack.push(...stackBackup); + } + } + match(...predicates) { + let stackPointer = this.stack.length - 1; + let name = null; + let node = this.stack[stackPointer--]; + for (const predicate of predicates) { + if (node === void 0) { + return false; + } + let number = null; + if (typeof name === "number") { + number = name; + name = this.stack[stackPointer--]; + node = this.stack[stackPointer--]; + } + if (predicate && !predicate(node, name, number)) { + return false; + } + name = this.stack[stackPointer--]; + node = this.stack[stackPointer--]; + } + return true; + } + findAncestor(predicate) { + let stackPointer = this.stack.length - 1; + let name = null; + let node = this.stack[stackPointer--]; + while (node) { + let number = null; + if (typeof name === "number") { + number = name; + name = this.stack[stackPointer--]; + node = this.stack[stackPointer--]; + } + if (name !== null && predicate(node, name, number)) { + return node; + } + name = this.stack[stackPointer--]; + node = this.stack[stackPointer--]; + } + } + }; + module22.exports = AstPath; + } + }); + var require_multiparser = __commonJS22({ + "src/main/multiparser.js"(exports2, module22) { + "use strict"; + var { + utils: { + stripTrailingHardline + } + } = require_doc(); + var { + normalize + } = require_options(); + var comments = require_comments(); + function printSubtree(path2, print, options, printAstToDoc) { + if (options.printer.embed && options.embeddedLanguageFormatting === "auto") { + return options.printer.embed(path2, print, (text, partialNextOptions, textToDocOptions) => textToDoc(text, partialNextOptions, options, printAstToDoc, textToDocOptions), options); + } + } + function textToDoc(text, partialNextOptions, parentOptions, printAstToDoc, { + stripTrailingHardline: shouldStripTrailingHardline = false + } = {}) { + const nextOptions = normalize(Object.assign(Object.assign(Object.assign({}, parentOptions), partialNextOptions), {}, { + parentParser: parentOptions.parser, + originalText: text + }), { + passThrough: true + }); + const result = require_parser().parse(text, nextOptions); + const { + ast + } = result; + text = result.text; + const astComments = ast.comments; + delete ast.comments; + comments.attach(astComments, ast, text, nextOptions); + nextOptions[Symbol.for("comments")] = astComments || []; + nextOptions[Symbol.for("tokens")] = ast.tokens || []; + const doc2 = printAstToDoc(ast, nextOptions); + comments.ensureAllCommentsPrinted(astComments); + if (shouldStripTrailingHardline) { + if (typeof doc2 === "string") { + return doc2.replace(/(?:\r?\n)*$/, ""); + } + return stripTrailingHardline(doc2); + } + return doc2; + } + module22.exports = { + printSubtree + }; + } + }); + var require_ast_to_doc = __commonJS22({ + "src/main/ast-to-doc.js"(exports2, module22) { + "use strict"; + var AstPath = require_ast_path(); + var { + builders: { + hardline, + addAlignmentToDoc + }, + utils: { + propagateBreaks + } + } = require_doc(); + var { + printComments + } = require_comments(); + var multiparser = require_multiparser(); + function printAstToDoc(ast, options, alignmentSize = 0) { + const { + printer + } = options; + if (printer.preprocess) { + ast = printer.preprocess(ast, options); + } + const cache = /* @__PURE__ */ new Map(); + const path2 = new AstPath(ast); + let doc2 = mainPrint(); + if (alignmentSize > 0) { + doc2 = addAlignmentToDoc([hardline, doc2], alignmentSize, options.tabWidth); + } + propagateBreaks(doc2); + return doc2; + function mainPrint(selector, args) { + if (selector === void 0 || selector === path2) { + return mainPrintInternal(args); + } + if (Array.isArray(selector)) { + return path2.call(() => mainPrintInternal(args), ...selector); + } + return path2.call(() => mainPrintInternal(args), selector); + } + function mainPrintInternal(args) { + const value = path2.getValue(); + const shouldCache = value && typeof value === "object" && args === void 0; + if (shouldCache && cache.has(value)) { + return cache.get(value); + } + const doc3 = callPluginPrintFunction(path2, options, mainPrint, args); + if (shouldCache) { + cache.set(value, doc3); + } + return doc3; + } + } + function printPrettierIgnoredNode(node, options) { + const { + originalText, + [Symbol.for("comments")]: comments, + locStart, + locEnd + } = options; + const start = locStart(node); + const end = locEnd(node); + const printedComments = /* @__PURE__ */ new Set(); + for (const comment of comments) { + if (locStart(comment) >= start && locEnd(comment) <= end) { + comment.printed = true; + printedComments.add(comment); + } + } + return { + doc: originalText.slice(start, end), + printedComments + }; + } + function callPluginPrintFunction(path2, options, printPath, args) { + const node = path2.getValue(); + const { + printer + } = options; + let doc2; + let printedComments; + if (printer.hasPrettierIgnore && printer.hasPrettierIgnore(path2)) { + ({ + doc: doc2, + printedComments + } = printPrettierIgnoredNode(node, options)); + } else { + if (node) { + try { + doc2 = multiparser.printSubtree(path2, printPath, options, printAstToDoc); + } catch (error2) { + if (process.env.PRETTIER_DEBUG) { + throw error2; + } + } + } + if (!doc2) { + doc2 = printer.print(path2, options, printPath, args); + } + } + if (!printer.willPrintOwnComments || !printer.willPrintOwnComments(path2, options)) { + doc2 = printComments(path2, doc2, options, printedComments); + } + return doc2; + } + module22.exports = printAstToDoc; + } + }); + var require_range_util = __commonJS22({ + "src/main/range-util.js"(exports2, module22) { + "use strict"; + var assert = require("assert"); + var comments = require_comments(); + var isJsonParser = ({ + parser + }) => parser === "json" || parser === "json5" || parser === "json-stringify"; + function findCommonAncestor(startNodeAndParents, endNodeAndParents) { + const startNodeAndAncestors = [startNodeAndParents.node, ...startNodeAndParents.parentNodes]; + const endNodeAndAncestors = /* @__PURE__ */ new Set([endNodeAndParents.node, ...endNodeAndParents.parentNodes]); + return startNodeAndAncestors.find((node) => jsonSourceElements.has(node.type) && endNodeAndAncestors.has(node)); + } + function dropRootParents(parents) { + let lastParentIndex = parents.length - 1; + for (; ; ) { + const parent = parents[lastParentIndex]; + if (parent && (parent.type === "Program" || parent.type === "File")) { + lastParentIndex--; + } else { + break; + } + } + return parents.slice(0, lastParentIndex + 1); + } + function findSiblingAncestors(startNodeAndParents, endNodeAndParents, { + locStart, + locEnd + }) { + let resultStartNode = startNodeAndParents.node; + let resultEndNode = endNodeAndParents.node; + if (resultStartNode === resultEndNode) { + return { + startNode: resultStartNode, + endNode: resultEndNode + }; + } + const startNodeStart = locStart(startNodeAndParents.node); + for (const endParent of dropRootParents(endNodeAndParents.parentNodes)) { + if (locStart(endParent) >= startNodeStart) { + resultEndNode = endParent; + } else { + break; + } + } + const endNodeEnd = locEnd(endNodeAndParents.node); + for (const startParent of dropRootParents(startNodeAndParents.parentNodes)) { + if (locEnd(startParent) <= endNodeEnd) { + resultStartNode = startParent; + } else { + break; + } + } + return { + startNode: resultStartNode, + endNode: resultEndNode + }; + } + function findNodeAtOffset(node, offset, options, predicate, parentNodes = [], type2) { + const { + locStart, + locEnd + } = options; + const start = locStart(node); + const end = locEnd(node); + if (offset > end || offset < start || type2 === "rangeEnd" && offset === start || type2 === "rangeStart" && offset === end) { + return; + } + for (const childNode of comments.getSortedChildNodes(node, options)) { + const childResult = findNodeAtOffset(childNode, offset, options, predicate, [node, ...parentNodes], type2); + if (childResult) { + return childResult; + } + } + if (!predicate || predicate(node, parentNodes[0])) { + return { + node, + parentNodes + }; + } + } + function isJsSourceElement(type2, parentType) { + return parentType !== "DeclareExportDeclaration" && type2 !== "TypeParameterDeclaration" && (type2 === "Directive" || type2 === "TypeAlias" || type2 === "TSExportAssignment" || type2.startsWith("Declare") || type2.startsWith("TSDeclare") || type2.endsWith("Statement") || type2.endsWith("Declaration")); + } + var jsonSourceElements = /* @__PURE__ */ new Set(["ObjectExpression", "ArrayExpression", "StringLiteral", "NumericLiteral", "BooleanLiteral", "NullLiteral", "UnaryExpression", "TemplateLiteral"]); + var graphqlSourceElements = /* @__PURE__ */ new Set(["OperationDefinition", "FragmentDefinition", "VariableDefinition", "TypeExtensionDefinition", "ObjectTypeDefinition", "FieldDefinition", "DirectiveDefinition", "EnumTypeDefinition", "EnumValueDefinition", "InputValueDefinition", "InputObjectTypeDefinition", "SchemaDefinition", "OperationTypeDefinition", "InterfaceTypeDefinition", "UnionTypeDefinition", "ScalarTypeDefinition"]); + function isSourceElement(opts, node, parentNode) { + if (!node) { + return false; + } + switch (opts.parser) { + case "flow": + case "babel": + case "babel-flow": + case "babel-ts": + case "typescript": + case "acorn": + case "espree": + case "meriyah": + case "__babel_estree": + return isJsSourceElement(node.type, parentNode && parentNode.type); + case "json": + case "json5": + case "json-stringify": + return jsonSourceElements.has(node.type); + case "graphql": + return graphqlSourceElements.has(node.kind); + case "vue": + return node.tag !== "root"; + } + return false; + } + function calculateRange(text, opts, ast) { + let { + rangeStart: start, + rangeEnd: end, + locStart, + locEnd + } = opts; + assert.ok(end > start); + const firstNonWhitespaceCharacterIndex = text.slice(start, end).search(/\S/); + const isAllWhitespace = firstNonWhitespaceCharacterIndex === -1; + if (!isAllWhitespace) { + start += firstNonWhitespaceCharacterIndex; + for (; end > start; --end) { + if (/\S/.test(text[end - 1])) { + break; + } + } + } + const startNodeAndParents = findNodeAtOffset(ast, start, opts, (node, parentNode) => isSourceElement(opts, node, parentNode), [], "rangeStart"); + const endNodeAndParents = isAllWhitespace ? startNodeAndParents : findNodeAtOffset(ast, end, opts, (node) => isSourceElement(opts, node), [], "rangeEnd"); + if (!startNodeAndParents || !endNodeAndParents) { + return { + rangeStart: 0, + rangeEnd: 0 + }; + } + let startNode; + let endNode; + if (isJsonParser(opts)) { + const commonAncestor = findCommonAncestor(startNodeAndParents, endNodeAndParents); + startNode = commonAncestor; + endNode = commonAncestor; + } else { + ({ + startNode, + endNode + } = findSiblingAncestors(startNodeAndParents, endNodeAndParents, opts)); + } + return { + rangeStart: Math.min(locStart(startNode), locStart(endNode)), + rangeEnd: Math.max(locEnd(startNode), locEnd(endNode)) + }; + } + module22.exports = { + calculateRange, + findNodeAtOffset + }; + } + }); + var require_core2 = __commonJS22({ + "src/main/core.js"(exports2, module22) { + "use strict"; + var { + diffArrays + } = require_array(); + var { + printer: { + printDocToString + }, + debug: { + printDocToDebug + } + } = require_doc(); + var { + getAlignmentSize + } = require_util2(); + var { + guessEndOfLine, + convertEndOfLineToChars, + countEndOfLineChars, + normalizeEndOfLine + } = require_end_of_line(); + var normalizeOptions = require_options().normalize; + var massageAST = require_massage_ast(); + var comments = require_comments(); + var parser = require_parser(); + var printAstToDoc = require_ast_to_doc(); + var rangeUtil = require_range_util(); + var BOM = "\uFEFF"; + var CURSOR = Symbol("cursor"); + function attachComments(text, ast, opts) { + const astComments = ast.comments; + if (astComments) { + delete ast.comments; + comments.attach(astComments, ast, text, opts); + } + opts[Symbol.for("comments")] = astComments || []; + opts[Symbol.for("tokens")] = ast.tokens || []; + opts.originalText = text; + return astComments; + } + function coreFormat(originalText, opts, addAlignmentSize = 0) { + if (!originalText || originalText.trim().length === 0) { + return { + formatted: "", + cursorOffset: -1, + comments: [] + }; + } + const { + ast, + text + } = parser.parse(originalText, opts); + if (opts.cursorOffset >= 0) { + const nodeResult = rangeUtil.findNodeAtOffset(ast, opts.cursorOffset, opts); + if (nodeResult && nodeResult.node) { + opts.cursorNode = nodeResult.node; + } + } + const astComments = attachComments(text, ast, opts); + const doc2 = printAstToDoc(ast, opts, addAlignmentSize); + const result = printDocToString(doc2, opts); + comments.ensureAllCommentsPrinted(astComments); + if (addAlignmentSize > 0) { + const trimmed = result.formatted.trim(); + if (result.cursorNodeStart !== void 0) { + result.cursorNodeStart -= result.formatted.indexOf(trimmed); + } + result.formatted = trimmed + convertEndOfLineToChars(opts.endOfLine); + } + if (opts.cursorOffset >= 0) { + let oldCursorNodeStart; + let oldCursorNodeText; + let cursorOffsetRelativeToOldCursorNode; + let newCursorNodeStart; + let newCursorNodeText; + if (opts.cursorNode && result.cursorNodeText) { + oldCursorNodeStart = opts.locStart(opts.cursorNode); + oldCursorNodeText = text.slice(oldCursorNodeStart, opts.locEnd(opts.cursorNode)); + cursorOffsetRelativeToOldCursorNode = opts.cursorOffset - oldCursorNodeStart; + newCursorNodeStart = result.cursorNodeStart; + newCursorNodeText = result.cursorNodeText; + } else { + oldCursorNodeStart = 0; + oldCursorNodeText = text; + cursorOffsetRelativeToOldCursorNode = opts.cursorOffset; + newCursorNodeStart = 0; + newCursorNodeText = result.formatted; + } + if (oldCursorNodeText === newCursorNodeText) { + return { + formatted: result.formatted, + cursorOffset: newCursorNodeStart + cursorOffsetRelativeToOldCursorNode, + comments: astComments + }; + } + const oldCursorNodeCharArray = [...oldCursorNodeText]; + oldCursorNodeCharArray.splice(cursorOffsetRelativeToOldCursorNode, 0, CURSOR); + const newCursorNodeCharArray = [...newCursorNodeText]; + const cursorNodeDiff = diffArrays(oldCursorNodeCharArray, newCursorNodeCharArray); + let cursorOffset = newCursorNodeStart; + for (const entry of cursorNodeDiff) { + if (entry.removed) { + if (entry.value.includes(CURSOR)) { + break; + } + } else { + cursorOffset += entry.count; + } + } + return { + formatted: result.formatted, + cursorOffset, + comments: astComments + }; + } + return { + formatted: result.formatted, + cursorOffset: -1, + comments: astComments + }; + } + function formatRange(originalText, opts) { + const { + ast, + text + } = parser.parse(originalText, opts); + const { + rangeStart, + rangeEnd + } = rangeUtil.calculateRange(text, opts, ast); + const rangeString = text.slice(rangeStart, rangeEnd); + const rangeStart2 = Math.min(rangeStart, text.lastIndexOf("\n", rangeStart) + 1); + const indentString2 = text.slice(rangeStart2, rangeStart).match(/^\s*/)[0]; + const alignmentSize = getAlignmentSize(indentString2, opts.tabWidth); + const rangeResult = coreFormat(rangeString, Object.assign(Object.assign({}, opts), {}, { + rangeStart: 0, + rangeEnd: Number.POSITIVE_INFINITY, + cursorOffset: opts.cursorOffset > rangeStart && opts.cursorOffset <= rangeEnd ? opts.cursorOffset - rangeStart : -1, + endOfLine: "lf" + }), alignmentSize); + const rangeTrimmed = rangeResult.formatted.trimEnd(); + let { + cursorOffset + } = opts; + if (cursorOffset > rangeEnd) { + cursorOffset += rangeTrimmed.length - rangeString.length; + } else if (rangeResult.cursorOffset >= 0) { + cursorOffset = rangeResult.cursorOffset + rangeStart; + } + let formatted = text.slice(0, rangeStart) + rangeTrimmed + text.slice(rangeEnd); + if (opts.endOfLine !== "lf") { + const eol = convertEndOfLineToChars(opts.endOfLine); + if (cursorOffset >= 0 && eol === "\r\n") { + cursorOffset += countEndOfLineChars(formatted.slice(0, cursorOffset), "\n"); + } + formatted = formatted.replace(/\n/g, eol); + } + return { + formatted, + cursorOffset, + comments: rangeResult.comments + }; + } + function ensureIndexInText(text, index, defaultValue) { + if (typeof index !== "number" || Number.isNaN(index) || index < 0 || index > text.length) { + return defaultValue; + } + return index; + } + function normalizeIndexes(text, options) { + let { + cursorOffset, + rangeStart, + rangeEnd + } = options; + cursorOffset = ensureIndexInText(text, cursorOffset, -1); + rangeStart = ensureIndexInText(text, rangeStart, 0); + rangeEnd = ensureIndexInText(text, rangeEnd, text.length); + return Object.assign(Object.assign({}, options), {}, { + cursorOffset, + rangeStart, + rangeEnd + }); + } + function normalizeInputAndOptions(text, options) { + let { + cursorOffset, + rangeStart, + rangeEnd, + endOfLine + } = normalizeIndexes(text, options); + const hasBOM = text.charAt(0) === BOM; + if (hasBOM) { + text = text.slice(1); + cursorOffset--; + rangeStart--; + rangeEnd--; + } + if (endOfLine === "auto") { + endOfLine = guessEndOfLine(text); + } + if (text.includes("\r")) { + const countCrlfBefore = (index) => countEndOfLineChars(text.slice(0, Math.max(index, 0)), "\r\n"); + cursorOffset -= countCrlfBefore(cursorOffset); + rangeStart -= countCrlfBefore(rangeStart); + rangeEnd -= countCrlfBefore(rangeEnd); + text = normalizeEndOfLine(text); + } + return { + hasBOM, + text, + options: normalizeIndexes(text, Object.assign(Object.assign({}, options), {}, { + cursorOffset, + rangeStart, + rangeEnd, + endOfLine + })) + }; + } + function hasPragma(text, options) { + const selectedParser = parser.resolveParser(options); + return !selectedParser.hasPragma || selectedParser.hasPragma(text); + } + function formatWithCursor2(originalText, originalOptions) { + let { + hasBOM, + text, + options + } = normalizeInputAndOptions(originalText, normalizeOptions(originalOptions)); + if (options.rangeStart >= options.rangeEnd && text !== "" || options.requirePragma && !hasPragma(text, options)) { + return { + formatted: originalText, + cursorOffset: originalOptions.cursorOffset, + comments: [] + }; + } + let result; + if (options.rangeStart > 0 || options.rangeEnd < text.length) { + result = formatRange(text, options); + } else { + if (!options.requirePragma && options.insertPragma && options.printer.insertPragma && !hasPragma(text, options)) { + text = options.printer.insertPragma(text); + } + result = coreFormat(text, options); + } + if (hasBOM) { + result.formatted = BOM + result.formatted; + if (result.cursorOffset >= 0) { + result.cursorOffset++; + } + } + return result; + } + module22.exports = { + formatWithCursor: formatWithCursor2, + parse(originalText, originalOptions, massage) { + const { + text, + options + } = normalizeInputAndOptions(originalText, normalizeOptions(originalOptions)); + const parsed = parser.parse(text, options); + if (massage) { + parsed.ast = massageAST(parsed.ast, options); + } + return parsed; + }, + formatAST(ast, options) { + options = normalizeOptions(options); + const doc2 = printAstToDoc(ast, options); + return printDocToString(doc2, options); + }, + formatDoc(doc2, options) { + return formatWithCursor2(printDocToDebug(doc2), Object.assign(Object.assign({}, options), {}, { + parser: "__js_expression" + })).formatted; + }, + printToDoc(originalText, options) { + options = normalizeOptions(options); + const { + ast, + text + } = parser.parse(originalText, options); + attachComments(text, ast, options); + return printAstToDoc(ast, options); + }, + printDocToString(doc2, options) { + return printDocToString(doc2, normalizeOptions(options)); + } + }; + } + }); + var require_utils22 = __commonJS22({ + "node_modules/braces/lib/utils.js"(exports2) { + "use strict"; + exports2.isInteger = (num) => { + if (typeof num === "number") { + return Number.isInteger(num); + } + if (typeof num === "string" && num.trim() !== "") { + return Number.isInteger(Number(num)); + } + return false; + }; + exports2.find = (node, type2) => node.nodes.find((node2) => node2.type === type2); + exports2.exceedsLimit = (min, max, step = 1, limit) => { + if (limit === false) + return false; + if (!exports2.isInteger(min) || !exports2.isInteger(max)) + return false; + return (Number(max) - Number(min)) / Number(step) >= limit; + }; + exports2.escapeNode = (block, n = 0, type2) => { + let node = block.nodes[n]; + if (!node) + return; + if (type2 && node.type === type2 || node.type === "open" || node.type === "close") { + if (node.escaped !== true) { + node.value = "\\" + node.value; + node.escaped = true; + } + } + }; + exports2.encloseBrace = (node) => { + if (node.type !== "brace") + return false; + if (node.commas >> 0 + node.ranges >> 0 === 0) { + node.invalid = true; + return true; + } + return false; + }; + exports2.isInvalidBrace = (block) => { + if (block.type !== "brace") + return false; + if (block.invalid === true || block.dollar) + return true; + if (block.commas >> 0 + block.ranges >> 0 === 0) { + block.invalid = true; + return true; + } + if (block.open !== true || block.close !== true) { + block.invalid = true; + return true; + } + return false; + }; + exports2.isOpenOrClose = (node) => { + if (node.type === "open" || node.type === "close") { + return true; + } + return node.open === true || node.close === true; + }; + exports2.reduce = (nodes) => nodes.reduce((acc, node) => { + if (node.type === "text") + acc.push(node.value); + if (node.type === "range") + node.type = "text"; + return acc; + }, []); + exports2.flatten = (...args) => { + const result = []; + const flat = (arr) => { + for (let i = 0; i < arr.length; i++) { + let ele = arr[i]; + Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele); + } + return result; + }; + flat(args); + return result; + }; + } + }); + var require_stringify2 = __commonJS22({ + "node_modules/braces/lib/stringify.js"(exports2, module22) { + "use strict"; + var utils = require_utils22(); + module22.exports = (ast, options = {}) => { + let stringify = (node, parent = {}) => { + let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let output = ""; + if (node.value) { + if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) { + return "\\" + node.value; + } + return node.value; + } + if (node.value) { + return node.value; + } + if (node.nodes) { + for (let child of node.nodes) { + output += stringify(child); + } + } + return output; + }; + return stringify(ast); + }; + } + }); + var require_is_number = __commonJS22({ + "node_modules/is-number/index.js"(exports2, module22) { + "use strict"; + module22.exports = function(num) { + if (typeof num === "number") { + return num - num === 0; + } + if (typeof num === "string" && num.trim() !== "") { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; + }; + } + }); + var require_to_regex_range = __commonJS22({ + "node_modules/to-regex-range/index.js"(exports2, module22) { + "use strict"; + var isNumber = require_is_number(); + var toRegexRange = (min, max, options) => { + if (isNumber(min) === false) { + throw new TypeError("toRegexRange: expected the first argument to be a number"); + } + if (max === void 0 || min === max) { + return String(min); + } + if (isNumber(max) === false) { + throw new TypeError("toRegexRange: expected the second argument to be a number."); + } + let opts = Object.assign({ + relaxZeros: true + }, options); + if (typeof opts.strictZeros === "boolean") { + opts.relaxZeros = opts.strictZeros === false; + } + let relax = String(opts.relaxZeros); + let shorthand = String(opts.shorthand); + let capture = String(opts.capture); + let wrap = String(opts.wrap); + let cacheKey = min + ":" + max + "=" + relax + shorthand + capture + wrap; + if (toRegexRange.cache.hasOwnProperty(cacheKey)) { + return toRegexRange.cache[cacheKey].result; + } + let a = Math.min(min, max); + let b = Math.max(min, max); + if (Math.abs(a - b) === 1) { + let result = min + "|" + max; + if (opts.capture) { + return `(${result})`; + } + if (opts.wrap === false) { + return result; + } + return `(?:${result})`; + } + let isPadded = hasPadding(min) || hasPadding(max); + let state = { + min, + max, + a, + b + }; + let positives = []; + let negatives = []; + if (isPadded) { + state.isPadded = isPadded; + state.maxLen = String(state.max).length; + } + if (a < 0) { + let newMin = b < 0 ? Math.abs(b) : 1; + negatives = splitToPatterns(newMin, Math.abs(a), state, opts); + a = state.a = 0; + } + if (b >= 0) { + positives = splitToPatterns(a, b, state, opts); + } + state.negatives = negatives; + state.positives = positives; + state.result = collatePatterns(negatives, positives, opts); + if (opts.capture === true) { + state.result = `(${state.result})`; + } else if (opts.wrap !== false && positives.length + negatives.length > 1) { + state.result = `(?:${state.result})`; + } + toRegexRange.cache[cacheKey] = state; + return state.result; + }; + function collatePatterns(neg, pos, options) { + let onlyNegative = filterPatterns(neg, pos, "-", false, options) || []; + let onlyPositive = filterPatterns(pos, neg, "", false, options) || []; + let intersected = filterPatterns(neg, pos, "-?", true, options) || []; + let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); + return subpatterns.join("|"); + } + function splitToRanges(min, max) { + let nines = 1; + let zeros = 1; + let stop = countNines(min, nines); + let stops = /* @__PURE__ */ new Set([max]); + while (min <= stop && stop <= max) { + stops.add(stop); + nines += 1; + stop = countNines(min, nines); + } + stop = countZeros(max + 1, zeros) - 1; + while (min < stop && stop <= max) { + stops.add(stop); + zeros += 1; + stop = countZeros(max + 1, zeros) - 1; + } + stops = [...stops]; + stops.sort(compare); + return stops; + } + function rangeToPattern(start, stop, options) { + if (start === stop) { + return { + pattern: start, + count: [], + digits: 0 + }; + } + let zipped = zip(start, stop); + let digits = zipped.length; + let pattern = ""; + let count = 0; + for (let i = 0; i < digits; i++) { + let [startDigit, stopDigit] = zipped[i]; + if (startDigit === stopDigit) { + pattern += startDigit; + } else if (startDigit !== "0" || stopDigit !== "9") { + pattern += toCharacterClass(startDigit, stopDigit, options); + } else { + count++; + } + } + if (count) { + pattern += options.shorthand === true ? "\\d" : "[0-9]"; + } + return { + pattern, + count: [count], + digits + }; + } + function splitToPatterns(min, max, tok, options) { + let ranges = splitToRanges(min, max); + let tokens = []; + let start = min; + let prev; + for (let i = 0; i < ranges.length; i++) { + let max2 = ranges[i]; + let obj = rangeToPattern(String(start), String(max2), options); + let zeros = ""; + if (!tok.isPadded && prev && prev.pattern === obj.pattern) { + if (prev.count.length > 1) { + prev.count.pop(); + } + prev.count.push(obj.count[0]); + prev.string = prev.pattern + toQuantifier(prev.count); + start = max2 + 1; + continue; + } + if (tok.isPadded) { + zeros = padZeros(max2, tok, options); + } + obj.string = zeros + obj.pattern + toQuantifier(obj.count); + tokens.push(obj); + start = max2 + 1; + prev = obj; + } + return tokens; + } + function filterPatterns(arr, comparison, prefix, intersection, options) { + let result = []; + for (let ele of arr) { + let { + string + } = ele; + if (!intersection && !contains(comparison, "string", string)) { + result.push(prefix + string); + } + if (intersection && contains(comparison, "string", string)) { + result.push(prefix + string); + } + } + return result; + } + function zip(a, b) { + let arr = []; + for (let i = 0; i < a.length; i++) + arr.push([a[i], b[i]]); + return arr; + } + function compare(a, b) { + return a > b ? 1 : b > a ? -1 : 0; + } + function contains(arr, key, val) { + return arr.some((ele) => ele[key] === val); + } + function countNines(min, len) { + return Number(String(min).slice(0, -len) + "9".repeat(len)); + } + function countZeros(integer, zeros) { + return integer - integer % Math.pow(10, zeros); + } + function toQuantifier(digits) { + let [start = 0, stop = ""] = digits; + if (stop || start > 1) { + return `{${start + (stop ? "," + stop : "")}}`; + } + return ""; + } + function toCharacterClass(a, b, options) { + return `[${a}${b - a === 1 ? "" : "-"}${b}]`; + } + function hasPadding(str2) { + return /^-?(0+)\d/.test(str2); + } + function padZeros(value, tok, options) { + if (!tok.isPadded) { + return value; + } + let diff = Math.abs(tok.maxLen - String(value).length); + let relax = options.relaxZeros !== false; + switch (diff) { + case 0: + return ""; + case 1: + return relax ? "0?" : "0"; + case 2: + return relax ? "0{0,2}" : "00"; + default: { + return relax ? `0{0,${diff}}` : `0{${diff}}`; + } + } + } + toRegexRange.cache = {}; + toRegexRange.clearCache = () => toRegexRange.cache = {}; + module22.exports = toRegexRange; + } + }); + var require_fill_range = __commonJS22({ + "node_modules/fill-range/index.js"(exports2, module22) { + "use strict"; + var util = require("util"); + var toRegexRange = require_to_regex_range(); + var isObject2 = (val) => val !== null && typeof val === "object" && !Array.isArray(val); + var transform = (toNumber) => { + return (value) => toNumber === true ? Number(value) : String(value); + }; + var isValidValue = (value) => { + return typeof value === "number" || typeof value === "string" && value !== ""; + }; + var isNumber = (num) => Number.isInteger(+num); + var zeros = (input) => { + let value = `${input}`; + let index = -1; + if (value[0] === "-") + value = value.slice(1); + if (value === "0") + return false; + while (value[++index] === "0") + ; + return index > 0; + }; + var stringify = (start, end, options) => { + if (typeof start === "string" || typeof end === "string") { + return true; + } + return options.stringify === true; + }; + var pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === "-" ? "-" : ""; + if (dash) + input = input.slice(1); + input = dash + input.padStart(dash ? maxLength - 1 : maxLength, "0"); + } + if (toNumber === false) { + return String(input); + } + return input; + }; + var toMaxLen = (input, maxLength) => { + let negative = input[0] === "-" ? "-" : ""; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) + input = "0" + input; + return negative ? "-" + input : input; + }; + var toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + let prefix = options.capture ? "" : "?:"; + let positives = ""; + let negatives = ""; + let result; + if (parts.positives.length) { + positives = parts.positives.join("|"); + } + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join("|")})`; + } + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + if (options.wrap) { + return `(${prefix}${result})`; + } + return result; + }; + var toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, Object.assign({ + wrap: false + }, options)); + } + let start = String.fromCharCode(a); + if (a === b) + return start; + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; + }; + var toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap = options.wrap === true; + let prefix = options.capture ? "" : "?:"; + return wrap ? `(${prefix}${start.join("|")})` : start.join("|"); + } + return toRegexRange(start, end, options); + }; + var rangeError = (...args) => { + return new RangeError("Invalid range arguments: " + util.inspect(...args)); + }; + var invalidRange = (start, end, options) => { + if (options.strictRanges === true) + throw rangeError([start, end]); + return []; + }; + var invalidStep = (step, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step}" to be a number`); + } + return []; + }; + var fillNumbers = (start, end, step = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) + throw rangeError([start, end]); + return []; + } + if (a === 0) + a = 0; + if (b === 0) + b = 0; + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step); + step = Math.max(Math.abs(step), 1); + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify(start, end, options) === false; + let format2 = options.transform || transform(toNumber); + if (options.toRegex && step === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + let parts = { + negatives: [], + positives: [] + }; + let push = (num) => parts[num < 0 ? "negatives" : "positives"].push(Math.abs(num)); + let range = []; + let index = 0; + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step > 1) { + push(a); + } else { + range.push(pad(format2(a, index), maxLen, toNumber)); + } + a = descending ? a - step : a + step; + index++; + } + if (options.toRegex === true) { + return step > 1 ? toSequence(parts, options) : toRegex(range, null, Object.assign({ + wrap: false + }, options)); + } + return range; + }; + var fillLetters = (start, end, step = 1, options = {}) => { + if (!isNumber(start) && start.length > 1 || !isNumber(end) && end.length > 1) { + return invalidRange(start, end, options); + } + let format2 = options.transform || ((val) => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + if (options.toRegex && step === 1) { + return toRange(min, max, false, options); + } + let range = []; + let index = 0; + while (descending ? a >= b : a <= b) { + range.push(format2(a, index)); + a = descending ? a - step : a + step; + index++; + } + if (options.toRegex === true) { + return toRegex(range, null, { + wrap: false, + options + }); + } + return range; + }; + var fill = (start, end, step, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + if (typeof step === "function") { + return fill(start, end, 1, { + transform: step + }); + } + if (isObject2(step)) { + return fill(start, end, 0, step); + } + let opts = Object.assign({}, options); + if (opts.capture === true) + opts.wrap = true; + step = step || opts.step || 1; + if (!isNumber(step)) { + if (step != null && !isObject2(step)) + return invalidStep(step, opts); + return fill(start, end, 1, step); + } + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step, opts); + } + return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); + }; + module22.exports = fill; + } + }); + var require_compile = __commonJS22({ + "node_modules/braces/lib/compile.js"(exports2, module22) { + "use strict"; + var fill = require_fill_range(); + var utils = require_utils22(); + var compile = (ast, options = {}) => { + let walk = (node, parent = {}) => { + let invalidBlock = utils.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let invalid = invalidBlock === true || invalidNode === true; + let prefix = options.escapeInvalid === true ? "\\" : ""; + let output = ""; + if (node.isOpen === true) { + return prefix + node.value; + } + if (node.isClose === true) { + return prefix + node.value; + } + if (node.type === "open") { + return invalid ? prefix + node.value : "("; + } + if (node.type === "close") { + return invalid ? prefix + node.value : ")"; + } + if (node.type === "comma") { + return node.prev.type === "comma" ? "" : invalid ? node.value : "|"; + } + if (node.value) { + return node.value; + } + if (node.nodes && node.ranges > 0) { + let args = utils.reduce(node.nodes); + let range = fill(...args, Object.assign(Object.assign({}, options), {}, { + wrap: false, + toRegex: true + })); + if (range.length !== 0) { + return args.length > 1 && range.length > 1 ? `(${range})` : range; + } + } + if (node.nodes) { + for (let child of node.nodes) { + output += walk(child, node); + } + } + return output; + }; + return walk(ast); + }; + module22.exports = compile; + } + }); + var require_expand = __commonJS22({ + "node_modules/braces/lib/expand.js"(exports2, module22) { + "use strict"; + var fill = require_fill_range(); + var stringify = require_stringify2(); + var utils = require_utils22(); + var append = (queue = "", stash = "", enclose = false) => { + let result = []; + queue = [].concat(queue); + stash = [].concat(stash); + if (!stash.length) + return queue; + if (!queue.length) { + return enclose ? utils.flatten(stash).map((ele) => `{${ele}}`) : stash; + } + for (let item of queue) { + if (Array.isArray(item)) { + for (let value of item) { + result.push(append(value, stash, enclose)); + } + } else { + for (let ele of stash) { + if (enclose === true && typeof ele === "string") + ele = `{${ele}}`; + result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele); + } + } + } + return utils.flatten(result); + }; + var expand = (ast, options = {}) => { + let rangeLimit = options.rangeLimit === void 0 ? 1e3 : options.rangeLimit; + let walk = (node, parent = {}) => { + node.queue = []; + let p = parent; + let q = parent.queue; + while (p.type !== "brace" && p.type !== "root" && p.parent) { + p = p.parent; + q = p.queue; + } + if (node.invalid || node.dollar) { + q.push(append(q.pop(), stringify(node, options))); + return; + } + if (node.type === "brace" && node.invalid !== true && node.nodes.length === 2) { + q.push(append(q.pop(), ["{}"])); + return; + } + if (node.nodes && node.ranges > 0) { + let args = utils.reduce(node.nodes); + if (utils.exceedsLimit(...args, options.step, rangeLimit)) { + throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit."); + } + let range = fill(...args, options); + if (range.length === 0) { + range = stringify(node, options); + } + q.push(append(q.pop(), range)); + node.nodes = []; + return; + } + let enclose = utils.encloseBrace(node); + let queue = node.queue; + let block = node; + while (block.type !== "brace" && block.type !== "root" && block.parent) { + block = block.parent; + queue = block.queue; + } + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + if (child.type === "comma" && node.type === "brace") { + if (i === 1) + queue.push(""); + queue.push(""); + continue; + } + if (child.type === "close") { + q.push(append(q.pop(), queue, enclose)); + continue; + } + if (child.value && child.type !== "open") { + queue.push(append(queue.pop(), child.value)); + continue; + } + if (child.nodes) { + walk(child, node); + } + } + return queue; + }; + return utils.flatten(walk(ast)); + }; + module22.exports = expand; + } + }); + var require_constants2 = __commonJS22({ + "node_modules/braces/lib/constants.js"(exports2, module22) { + "use strict"; + module22.exports = { + MAX_LENGTH: 1024 * 64, + CHAR_0: "0", + CHAR_9: "9", + CHAR_UPPERCASE_A: "A", + CHAR_LOWERCASE_A: "a", + CHAR_UPPERCASE_Z: "Z", + CHAR_LOWERCASE_Z: "z", + CHAR_LEFT_PARENTHESES: "(", + CHAR_RIGHT_PARENTHESES: ")", + CHAR_ASTERISK: "*", + CHAR_AMPERSAND: "&", + CHAR_AT: "@", + CHAR_BACKSLASH: "\\", + CHAR_BACKTICK: "`", + CHAR_CARRIAGE_RETURN: "\r", + CHAR_CIRCUMFLEX_ACCENT: "^", + CHAR_COLON: ":", + CHAR_COMMA: ",", + CHAR_DOLLAR: "$", + CHAR_DOT: ".", + CHAR_DOUBLE_QUOTE: '"', + CHAR_EQUAL: "=", + CHAR_EXCLAMATION_MARK: "!", + CHAR_FORM_FEED: "\f", + CHAR_FORWARD_SLASH: "/", + CHAR_HASH: "#", + CHAR_HYPHEN_MINUS: "-", + CHAR_LEFT_ANGLE_BRACKET: "<", + CHAR_LEFT_CURLY_BRACE: "{", + CHAR_LEFT_SQUARE_BRACKET: "[", + CHAR_LINE_FEED: "\n", + CHAR_NO_BREAK_SPACE: "\xA0", + CHAR_PERCENT: "%", + CHAR_PLUS: "+", + CHAR_QUESTION_MARK: "?", + CHAR_RIGHT_ANGLE_BRACKET: ">", + CHAR_RIGHT_CURLY_BRACE: "}", + CHAR_RIGHT_SQUARE_BRACKET: "]", + CHAR_SEMICOLON: ";", + CHAR_SINGLE_QUOTE: "'", + CHAR_SPACE: " ", + CHAR_TAB: " ", + CHAR_UNDERSCORE: "_", + CHAR_VERTICAL_LINE: "|", + CHAR_ZERO_WIDTH_NOBREAK_SPACE: "\uFEFF" + }; + } + }); + var require_parse2 = __commonJS22({ + "node_modules/braces/lib/parse.js"(exports2, module22) { + "use strict"; + var stringify = require_stringify2(); + var { + MAX_LENGTH, + CHAR_BACKSLASH, + CHAR_BACKTICK, + CHAR_COMMA: CHAR_COMMA2, + CHAR_DOT, + CHAR_LEFT_PARENTHESES, + CHAR_RIGHT_PARENTHESES, + CHAR_LEFT_CURLY_BRACE, + CHAR_RIGHT_CURLY_BRACE, + CHAR_LEFT_SQUARE_BRACKET: CHAR_LEFT_SQUARE_BRACKET2, + CHAR_RIGHT_SQUARE_BRACKET: CHAR_RIGHT_SQUARE_BRACKET2, + CHAR_DOUBLE_QUOTE: CHAR_DOUBLE_QUOTE2, + CHAR_SINGLE_QUOTE: CHAR_SINGLE_QUOTE2, + CHAR_NO_BREAK_SPACE, + CHAR_ZERO_WIDTH_NOBREAK_SPACE + } = require_constants2(); + var parse = (input, options = {}) => { + if (typeof input !== "string") { + throw new TypeError("Expected a string"); + } + let opts = options || {}; + let max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + if (input.length > max) { + throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); + } + let ast = { + type: "root", + input, + nodes: [] + }; + let stack = [ast]; + let block = ast; + let prev = ast; + let brackets = 0; + let length = input.length; + let index = 0; + let depth = 0; + let value; + let memo = {}; + const advance = () => input[index++]; + const push = (node) => { + if (node.type === "text" && prev.type === "dot") { + prev.type = "text"; + } + if (prev && prev.type === "text" && node.type === "text") { + prev.value += node.value; + return; + } + block.nodes.push(node); + node.parent = block; + node.prev = prev; + prev = node; + return node; + }; + push({ + type: "bos" + }); + while (index < length) { + block = stack[stack.length - 1]; + value = advance(); + if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { + continue; + } + if (value === CHAR_BACKSLASH) { + push({ + type: "text", + value: (options.keepEscaping ? value : "") + advance() + }); + continue; + } + if (value === CHAR_RIGHT_SQUARE_BRACKET2) { + push({ + type: "text", + value: "\\" + value + }); + continue; + } + if (value === CHAR_LEFT_SQUARE_BRACKET2) { + brackets++; + let closed = true; + let next; + while (index < length && (next = advance())) { + value += next; + if (next === CHAR_LEFT_SQUARE_BRACKET2) { + brackets++; + continue; + } + if (next === CHAR_BACKSLASH) { + value += advance(); + continue; + } + if (next === CHAR_RIGHT_SQUARE_BRACKET2) { + brackets--; + if (brackets === 0) { + break; + } + } + } + push({ + type: "text", + value + }); + continue; + } + if (value === CHAR_LEFT_PARENTHESES) { + block = push({ + type: "paren", + nodes: [] + }); + stack.push(block); + push({ + type: "text", + value + }); + continue; + } + if (value === CHAR_RIGHT_PARENTHESES) { + if (block.type !== "paren") { + push({ + type: "text", + value + }); + continue; + } + block = stack.pop(); + push({ + type: "text", + value + }); + block = stack[stack.length - 1]; + continue; + } + if (value === CHAR_DOUBLE_QUOTE2 || value === CHAR_SINGLE_QUOTE2 || value === CHAR_BACKTICK) { + let open = value; + let next; + if (options.keepQuotes !== true) { + value = ""; + } + while (index < length && (next = advance())) { + if (next === CHAR_BACKSLASH) { + value += next + advance(); + continue; + } + if (next === open) { + if (options.keepQuotes === true) + value += next; + break; + } + value += next; + } + push({ + type: "text", + value + }); + continue; + } + if (value === CHAR_LEFT_CURLY_BRACE) { + depth++; + let dollar = prev.value && prev.value.slice(-1) === "$" || block.dollar === true; + let brace = { + type: "brace", + open: true, + close: false, + dollar, + depth, + commas: 0, + ranges: 0, + nodes: [] + }; + block = push(brace); + stack.push(block); + push({ + type: "open", + value + }); + continue; + } + if (value === CHAR_RIGHT_CURLY_BRACE) { + if (block.type !== "brace") { + push({ + type: "text", + value + }); + continue; + } + let type2 = "close"; + block = stack.pop(); + block.close = true; + push({ + type: type2, + value + }); + depth--; + block = stack[stack.length - 1]; + continue; + } + if (value === CHAR_COMMA2 && depth > 0) { + if (block.ranges > 0) { + block.ranges = 0; + let open = block.nodes.shift(); + block.nodes = [open, { + type: "text", + value: stringify(block) + }]; + } + push({ + type: "comma", + value + }); + block.commas++; + continue; + } + if (value === CHAR_DOT && depth > 0 && block.commas === 0) { + let siblings = block.nodes; + if (depth === 0 || siblings.length === 0) { + push({ + type: "text", + value + }); + continue; + } + if (prev.type === "dot") { + block.range = []; + prev.value += value; + prev.type = "range"; + if (block.nodes.length !== 3 && block.nodes.length !== 5) { + block.invalid = true; + block.ranges = 0; + prev.type = "text"; + continue; + } + block.ranges++; + block.args = []; + continue; + } + if (prev.type === "range") { + siblings.pop(); + let before = siblings[siblings.length - 1]; + before.value += prev.value + value; + prev = before; + block.ranges--; + continue; + } + push({ + type: "dot", + value + }); + continue; + } + push({ + type: "text", + value + }); + } + do { + block = stack.pop(); + if (block.type !== "root") { + block.nodes.forEach((node) => { + if (!node.nodes) { + if (node.type === "open") + node.isOpen = true; + if (node.type === "close") + node.isClose = true; + if (!node.nodes) + node.type = "text"; + node.invalid = true; + } + }); + let parent = stack[stack.length - 1]; + let index2 = parent.nodes.indexOf(block); + parent.nodes.splice(index2, 1, ...block.nodes); + } + } while (stack.length > 0); + push({ + type: "eos" + }); + return ast; + }; + module22.exports = parse; + } + }); + var require_braces = __commonJS22({ + "node_modules/braces/index.js"(exports2, module22) { + "use strict"; + var stringify = require_stringify2(); + var compile = require_compile(); + var expand = require_expand(); + var parse = require_parse2(); + var braces = (input, options = {}) => { + let output = []; + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces.create(input, options)); + } + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; + }; + braces.parse = (input, options = {}) => parse(input, options); + braces.stringify = (input, options = {}) => { + if (typeof input === "string") { + return stringify(braces.parse(input, options), options); + } + return stringify(input, options); + }; + braces.compile = (input, options = {}) => { + if (typeof input === "string") { + input = braces.parse(input, options); + } + return compile(input, options); + }; + braces.expand = (input, options = {}) => { + if (typeof input === "string") { + input = braces.parse(input, options); + } + let result = expand(input, options); + if (options.noempty === true) { + result = result.filter(Boolean); + } + if (options.nodupes === true) { + result = [...new Set(result)]; + } + return result; + }; + braces.create = (input, options = {}) => { + if (input === "" || input.length < 3) { + return [input]; + } + return options.expand !== true ? braces.compile(input, options) : braces.expand(input, options); + }; + module22.exports = braces; + } + }); + var require_constants3 = __commonJS22({ + "node_modules/picomatch/lib/constants.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var WIN_SLASH = "\\\\/"; + var WIN_NO_SLASH = `[^${WIN_SLASH}]`; + var DOT_LITERAL = "\\."; + var PLUS_LITERAL = "\\+"; + var QMARK_LITERAL = "\\?"; + var SLASH_LITERAL = "\\/"; + var ONE_CHAR = "(?=.)"; + var QMARK = "[^/]"; + var END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; + var START_ANCHOR = `(?:^|${SLASH_LITERAL})`; + var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; + var NO_DOT = `(?!${DOT_LITERAL})`; + var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; + var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; + var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; + var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; + var STAR = `${QMARK}*?`; + var POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR + }; + var WINDOWS_CHARS = Object.assign(Object.assign({}, POSIX_CHARS), {}, { + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|$)` + }); + var POSIX_REGEX_SOURCE = { + alnum: "a-zA-Z0-9", + alpha: "a-zA-Z", + ascii: "\\x00-\\x7F", + blank: " \\t", + cntrl: "\\x00-\\x1F\\x7F", + digit: "0-9", + graph: "\\x21-\\x7E", + lower: "a-z", + print: "\\x20-\\x7E ", + punct: "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~", + space: " \\t\\r\\n\\v\\f", + upper: "A-Z", + word: "A-Za-z0-9_", + xdigit: "A-Fa-f0-9" + }; + module22.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, + REPLACEMENTS: { + "***": "*", + "**/**": "**", + "**/**/**": "**" + }, + CHAR_0: 48, + CHAR_9: 57, + CHAR_UPPERCASE_A: 65, + CHAR_LOWERCASE_A: 97, + CHAR_UPPERCASE_Z: 90, + CHAR_LOWERCASE_Z: 122, + CHAR_LEFT_PARENTHESES: 40, + CHAR_RIGHT_PARENTHESES: 41, + CHAR_ASTERISK: 42, + CHAR_AMPERSAND: 38, + CHAR_AT: 64, + CHAR_BACKWARD_SLASH: 92, + CHAR_CARRIAGE_RETURN: 13, + CHAR_CIRCUMFLEX_ACCENT: 94, + CHAR_COLON: 58, + CHAR_COMMA: 44, + CHAR_DOT: 46, + CHAR_DOUBLE_QUOTE: 34, + CHAR_EQUAL: 61, + CHAR_EXCLAMATION_MARK: 33, + CHAR_FORM_FEED: 12, + CHAR_FORWARD_SLASH: 47, + CHAR_GRAVE_ACCENT: 96, + CHAR_HASH: 35, + CHAR_HYPHEN_MINUS: 45, + CHAR_LEFT_ANGLE_BRACKET: 60, + CHAR_LEFT_CURLY_BRACE: 123, + CHAR_LEFT_SQUARE_BRACKET: 91, + CHAR_LINE_FEED: 10, + CHAR_NO_BREAK_SPACE: 160, + CHAR_PERCENT: 37, + CHAR_PLUS: 43, + CHAR_QUESTION_MARK: 63, + CHAR_RIGHT_ANGLE_BRACKET: 62, + CHAR_RIGHT_CURLY_BRACE: 125, + CHAR_RIGHT_SQUARE_BRACKET: 93, + CHAR_SEMICOLON: 59, + CHAR_SINGLE_QUOTE: 39, + CHAR_SPACE: 32, + CHAR_TAB: 9, + CHAR_UNDERSCORE: 95, + CHAR_VERTICAL_LINE: 124, + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, + SEP: path2.sep, + extglobChars(chars) { + return { + "!": { + type: "negate", + open: "(?:(?!(?:", + close: `))${chars.STAR})` + }, + "?": { + type: "qmark", + open: "(?:", + close: ")?" + }, + "+": { + type: "plus", + open: "(?:", + close: ")+" + }, + "*": { + type: "star", + open: "(?:", + close: ")*" + }, + "@": { + type: "at", + open: "(?:", + close: ")" + } + }; + }, + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; + } + }; + } + }); + var require_utils3 = __commonJS22({ + "node_modules/picomatch/lib/utils.js"(exports2) { + "use strict"; + var path2 = require("path"); + var win32 = process.platform === "win32"; + var { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL + } = require_constants3(); + exports2.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val); + exports2.hasRegexChars = (str2) => REGEX_SPECIAL_CHARS.test(str2); + exports2.isRegexChar = (str2) => str2.length === 1 && exports2.hasRegexChars(str2); + exports2.escapeRegex = (str2) => str2.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1"); + exports2.toPosixSlashes = (str2) => str2.replace(REGEX_BACKSLASH, "/"); + exports2.removeBackslashes = (str2) => { + return str2.replace(REGEX_REMOVE_BACKSLASH, (match) => { + return match === "\\" ? "" : match; + }); + }; + exports2.supportsLookbehinds = () => { + const segs = process.version.slice(1).split(".").map(Number); + if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) { + return true; + } + return false; + }; + exports2.isWindows = (options) => { + if (options && typeof options.windows === "boolean") { + return options.windows; + } + return win32 === true || path2.sep === "\\"; + }; + exports2.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) + return input; + if (input[idx - 1] === "\\") + return exports2.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; + }; + exports2.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith("./")) { + output = output.slice(2); + state.prefix = "./"; + } + return output; + }; + exports2.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? "" : "^"; + const append = options.contains ? "" : "$"; + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*$)`; + } + return output; + }; + } + }); + var require_scan = __commonJS22({ + "node_modules/picomatch/lib/scan.js"(exports2, module22) { + "use strict"; + var utils = require_utils3(); + var { + CHAR_ASTERISK: CHAR_ASTERISK2, + CHAR_AT, + CHAR_BACKWARD_SLASH, + CHAR_COMMA: CHAR_COMMA2, + CHAR_DOT, + CHAR_EXCLAMATION_MARK, + CHAR_FORWARD_SLASH, + CHAR_LEFT_CURLY_BRACE, + CHAR_LEFT_PARENTHESES, + CHAR_LEFT_SQUARE_BRACKET: CHAR_LEFT_SQUARE_BRACKET2, + CHAR_PLUS, + CHAR_QUESTION_MARK, + CHAR_RIGHT_CURLY_BRACE, + CHAR_RIGHT_PARENTHESES, + CHAR_RIGHT_SQUARE_BRACKET: CHAR_RIGHT_SQUARE_BRACKET2 + } = require_constants3(); + var isPathSeparator = (code) => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; + }; + var depth = (token) => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; + } + }; + var scan = (input, options) => { + const opts = options || {}; + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; + let str2 = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let negatedExtglob = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { + value: "", + depth: 0, + isGlob: false + }; + const eos = () => index >= length; + const peek = () => str2.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str2.charCodeAt(++index); + }; + while (index < length) { + code = advance(); + let next; + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; + } + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (braceEscaped !== true && code === CHAR_COMMA2) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { + value: "", + depth: 0, + isGlob: false + }; + if (finished === true) + continue; + if (prev === CHAR_DOT && index === start + 1) { + start += 2; + continue; + } + lastIndex = index + 1; + continue; + } + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS || code === CHAR_AT || code === CHAR_ASTERISK2 || code === CHAR_QUESTION_MARK || code === CHAR_EXCLAMATION_MARK; + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; + } + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; + } + break; + } + } + if (code === CHAR_ASTERISK2) { + if (prev === CHAR_ASTERISK2) + isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + if (code === CHAR_LEFT_SQUARE_BRACKET2) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + if (next === CHAR_RIGHT_SQUARE_BRACKET2) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + break; + } + } + if (scanToEnd === true) { + continue; + } + break; + } + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; + } + } + continue; + } + break; + } + if (isGlob === true) { + finished = true; + if (scanToEnd === true) { + continue; + } + break; + } + } + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } + let base = str2; + let prefix = ""; + let glob = ""; + if (start > 0) { + prefix = str2.slice(0, start); + str2 = str2.slice(start); + lastIndex -= start; + } + if (base && isGlob === true && lastIndex > 0) { + base = str2.slice(0, lastIndex); + glob = str2.slice(lastIndex); + } else if (isGlob === true) { + base = ""; + glob = str2; + } else { + base = str2; + } + if (base && base !== "" && base !== "/" && base !== str2) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } + if (opts.unescape === true) { + if (glob) + glob = utils.removeBackslashes(glob); + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated, + negatedExtglob + }; + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); + } + state.tokens = tokens; + } + if (opts.parts === true || opts.tokens === true) { + let prevIndex; + for (let idx = 0; idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== "") { + parts.push(value); + } + prevIndex = i; + } + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } + } + state.slashes = slashes; + state.parts = parts; + } + return state; + }; + module22.exports = scan; + } + }); + var require_parse22 = __commonJS22({ + "node_modules/picomatch/lib/parse.js"(exports2, module22) { + "use strict"; + var constants = require_constants3(); + var utils = require_utils3(); + var { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS + } = constants; + var expandRange = (args, options) => { + if (typeof options.expandRange === "function") { + return options.expandRange(...args, options); + } + args.sort(); + const value = `[${args.join("-")}]`; + try { + new RegExp(value); + } catch (ex) { + return args.map((v) => utils.escapeRegex(v)).join(".."); + } + return value; + }; + var syntaxError = (type2, char) => { + return `Missing ${type2}: "${char}" - use "\\\\${char}" to match literal characters`; + }; + var parse = (input, options) => { + if (typeof input !== "string") { + throw new TypeError("Expected a string"); + } + input = REPLACEMENTS[input] || input; + const opts = Object.assign({}, options); + const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + const bos = { + type: "bos", + value: "", + output: opts.prepend || "" + }; + const tokens = [bos]; + const capture = opts.capture ? "" : "?:"; + const win32 = utils.isWindows(options); + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; + const globstar = (opts2) => { + return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + const nodot = opts.dot ? "" : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; + if (opts.capture) { + star = `(${star})`; + } + if (typeof opts.noext === "boolean") { + opts.noextglob = opts.noext; + } + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: "", + output: "", + prefix: "", + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; + input = utils.removePrefix(input, state); + len = input.length; + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index] || ""; + const remaining = () => input.slice(state.index + 1); + const consume = (value2 = "", num = 0) => { + state.consumed += value2; + state.index += num; + }; + const append = (token) => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; + const negate = () => { + let count = 1; + while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) { + advance(); + state.start++; + count++; + } + if (count % 2 === 0) { + return false; + } + state.negated = true; + state.start++; + return true; + }; + const increment = (type2) => { + state[type2]++; + stack.push(type2); + }; + const decrement = (type2) => { + state[type2]--; + stack.pop(); + }; + const push = (tok) => { + if (prev.type === "globstar") { + const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace"); + const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren"); + if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = "star"; + prev.value = "*"; + prev.output = star; + state.output += prev.output; + } + } + if (extglobs.length && tok.type !== "paren") { + extglobs[extglobs.length - 1].inner += tok.value; + } + if (tok.value || tok.output) + append(tok); + if (prev && prev.type === "text" && tok.type === "text") { + prev.value += tok.value; + prev.output = (prev.output || "") + tok.value; + return; + } + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; + const extglobOpen = (type2, value2) => { + const token = Object.assign(Object.assign({}, EXTGLOB_CHARS[value2]), {}, { + conditions: 1, + inner: "" + }); + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? "(" : "") + token.open; + increment("parens"); + push({ + type: type2, + value: value2, + output: state.output ? "" : ONE_CHAR + }); + push({ + type: "paren", + extglob: true, + value: advance(), + output + }); + extglobs.push(token); + }; + const extglobClose = (token) => { + let output = token.close + (opts.capture ? ")" : ""); + let rest; + if (token.type === "negate") { + let extglobStar = star; + if (token.inner && token.inner.length > 1 && token.inner.includes("/")) { + extglobStar = globstar(opts); + } + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)$))${extglobStar}`; + } + if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + const expression = parse(rest, Object.assign(Object.assign({}, options), {}, { + fastpaths: false + })).output; + output = token.close = `)${expression})${extglobStar})`; + } + if (token.prev.type === "bos") { + state.negatedExtglob = true; + } + } + push({ + type: "paren", + extglob: true, + value, + output + }); + decrement("parens"); + }; + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === "\\") { + backslashes = true; + return m; + } + if (first === "?") { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ""); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ""); + } + return QMARK.repeat(chars.length); + } + if (first === ".") { + return DOT_LITERAL.repeat(chars.length); + } + if (first === "*") { + if (esc) { + return esc + first + (rest ? star : ""); + } + return star; + } + return esc ? m : `\\${m}`; + }); + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ""); + } else { + output = output.replace(/\\+/g, (m) => { + return m.length % 2 === 0 ? "\\\\" : m ? "\\" : ""; + }); + } + } + if (output === input && opts.contains === true) { + state.output = input; + return state; + } + state.output = utils.wrapOutput(output, state, options); + return state; + } + while (!eos()) { + value = advance(); + if (value === "\0") { + continue; + } + if (value === "\\") { + const next = peek(); + if (next === "/" && opts.bash !== true) { + continue; + } + if (next === "." || next === ";") { + continue; + } + if (!next) { + value += "\\"; + push({ + type: "text", + value + }); + continue; + } + const match = /^\\+/.exec(remaining()); + let slashes = 0; + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += "\\"; + } + } + if (opts.unescape === true) { + value = advance(); + } else { + value += advance(); + } + if (state.brackets === 0) { + push({ + type: "text", + value + }); + continue; + } + } + if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) { + if (opts.posix !== false && value === ":") { + const inner = prev.value.slice(1); + if (inner.includes("[")) { + prev.posix = true; + if (inner.includes(":")) { + const idx = prev.value.lastIndexOf("["); + const pre = prev.value.slice(0, idx); + const rest2 = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE[rest2]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } + if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") { + value = `\\${value}`; + } + if (value === "]" && (prev.value === "[" || prev.value === "[^")) { + value = `\\${value}`; + } + if (opts.posix === true && value === "!" && prev.value === "[") { + value = "^"; + } + prev.value += value; + append({ + value + }); + continue; + } + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ + value + }); + continue; + } + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ + type: "text", + value + }); + } + continue; + } + if (value === "(") { + increment("parens"); + push({ + type: "paren", + value + }); + continue; + } + if (value === ")") { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("opening", "(")); + } + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } + push({ + type: "paren", + value, + output: state.parens ? ")" : "\\)" + }); + decrement("parens"); + continue; + } + if (value === "[") { + if (opts.nobracket === true || !remaining().includes("]")) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("closing", "]")); + } + value = `\\${value}`; + } else { + increment("brackets"); + } + push({ + type: "bracket", + value + }); + continue; + } + if (value === "]") { + if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) { + push({ + type: "text", + value, + output: `\\${value}` + }); + continue; + } + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError("opening", "[")); + } + push({ + type: "text", + value, + output: `\\${value}` + }); + continue; + } + decrement("brackets"); + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) { + value = `/${value}`; + } + prev.value += value; + append({ + value + }); + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } + if (value === "{" && opts.nobrace !== true) { + increment("braces"); + const open = { + type: "brace", + value, + output: "(", + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; + braces.push(open); + push(open); + continue; + } + if (value === "}") { + const brace = braces[braces.length - 1]; + if (opts.nobrace === true || !brace) { + push({ + type: "text", + value, + output: value + }); + continue; + } + let output = ")"; + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; + for (let i = arr.length - 1; i >= 0; i--) { + tokens.pop(); + if (arr[i].type === "brace") { + break; + } + if (arr[i].type !== "dots") { + range.unshift(arr[i].value); + } + } + output = expandRange(range, opts); + state.backtrack = true; + } + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = "\\{"; + value = output = "\\}"; + state.output = out; + for (const t of toks) { + state.output += t.output || t.value; + } + } + push({ + type: "brace", + value, + output + }); + decrement("braces"); + braces.pop(); + continue; + } + if (value === "|") { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ + type: "text", + value + }); + continue; + } + if (value === ",") { + let output = value; + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === "braces") { + brace.comma = true; + output = "|"; + } + push({ + type: "comma", + value, + output + }); + continue; + } + if (value === "/") { + if (prev.type === "dot" && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ""; + state.output = ""; + tokens.pop(); + prev = bos; + continue; + } + push({ + type: "slash", + value, + output: SLASH_LITERAL + }); + continue; + } + if (value === ".") { + if (state.braces > 0 && prev.type === "dot") { + if (prev.value === ".") + prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = "dots"; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; + } + if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") { + push({ + type: "text", + value, + output: DOT_LITERAL + }); + continue; + } + push({ + type: "dot", + value, + output: DOT_LITERAL + }); + continue; + } + if (value === "?") { + const isGroup = prev && prev.value === "("; + if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + extglobOpen("qmark", value); + continue; + } + if (prev && prev.type === "paren") { + const next = peek(); + let output = value; + if (next === "<" && !utils.supportsLookbehinds()) { + throw new Error("Node.js v10 or higher is required for regex lookbehinds"); + } + if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) { + output = `\\${value}`; + } + push({ + type: "text", + value, + output + }); + continue; + } + if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) { + push({ + type: "qmark", + value, + output: QMARK_NO_DOT + }); + continue; + } + push({ + type: "qmark", + value, + output: QMARK + }); + continue; + } + if (value === "!") { + if (opts.noextglob !== true && peek() === "(") { + if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) { + extglobOpen("negate", value); + continue; + } + } + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } + } + if (value === "+") { + if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + extglobOpen("plus", value); + continue; + } + if (prev && prev.value === "(" || opts.regex === false) { + push({ + type: "plus", + value, + output: PLUS_LITERAL + }); + continue; + } + if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) { + push({ + type: "plus", + value + }); + continue; + } + push({ + type: "plus", + value: PLUS_LITERAL + }); + continue; + } + if (value === "@") { + if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") { + push({ + type: "at", + extglob: true, + value, + output: "" + }); + continue; + } + push({ + type: "text", + value + }); + continue; + } + if (value !== "*") { + if (value === "$" || value === "^") { + value = `\\${value}`; + } + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } + push({ + type: "text", + value + }); + continue; + } + if (prev && (prev.type === "globstar" || prev.star === true)) { + prev.type = "star"; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen("star", value); + continue; + } + if (prev.type === "star") { + if (opts.noglobstar === true) { + consume(value); + continue; + } + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === "slash" || prior.type === "bos"; + const afterStar = before && (before.type === "star" || before.type === "globstar"); + if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) { + push({ + type: "star", + value, + output: "" + }); + continue; + } + const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace"); + const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren"); + if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) { + push({ + type: "star", + value, + output: "" + }); + continue; + } + while (rest.slice(0, 3) === "/**") { + const after = input[state.index + 4]; + if (after && after !== "/") { + break; + } + rest = rest.slice(3); + consume("/**", 3); + } + if (prior.type === "bos" && eos()) { + prev.type = "globstar"; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } + if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + prev.type = "globstar"; + prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)"); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } + if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") { + const end = rest[1] !== void 0 ? "|$" : ""; + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + prev.type = "globstar"; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; + state.output += prior.output + prev.output; + state.globstar = true; + consume(value + advance()); + push({ + type: "slash", + value: "/", + output: "" + }); + continue; + } + if (prior.type === "bos" && rest[0] === "/") { + prev.type = "globstar"; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ + type: "slash", + value: "/", + output: "" + }); + continue; + } + state.output = state.output.slice(0, -prev.output.length); + prev.type = "globstar"; + prev.output = globstar(opts); + prev.value += value; + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } + const token = { + type: "star", + value, + output: star + }; + if (opts.bash === true) { + token.output = ".*?"; + if (prev.type === "bos" || prev.type === "slash") { + token.output = nodot + token.output; + } + push(token); + continue; + } + if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) { + token.output = value; + push(token); + continue; + } + if (state.index === state.start || prev.type === "slash" || prev.type === "dot") { + if (prev.type === "dot") { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; + } else { + state.output += nodot; + prev.output += nodot; + } + if (peek() !== "*") { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } + push(token); + } + while (state.brackets > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", "]")); + state.output = utils.escapeLast(state.output, "["); + decrement("brackets"); + } + while (state.parens > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", ")")); + state.output = utils.escapeLast(state.output, "("); + decrement("parens"); + } + while (state.braces > 0) { + if (opts.strictBrackets === true) + throw new SyntaxError(syntaxError("closing", "}")); + state.output = utils.escapeLast(state.output, "{"); + decrement("braces"); + } + if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) { + push({ + type: "maybe_slash", + value: "", + output: `${SLASH_LITERAL}?` + }); + } + if (state.backtrack === true) { + state.output = ""; + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; + if (token.suffix) { + state.output += token.suffix; + } + } + } + return state; + }; + parse.fastpaths = (input, options) => { + const opts = Object.assign({}, options); + const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + input = REPLACEMENTS[input] || input; + const win32 = utils.isWindows(options); + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? "" : "?:"; + const state = { + negated: false, + prefix: "" + }; + let star = opts.bash === true ? ".*?" : STAR; + if (opts.capture) { + star = `(${star})`; + } + const globstar = (opts2) => { + if (opts2.noglobstar === true) + return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + const create = (str2) => { + switch (str2) { + case "*": + return `${nodot}${ONE_CHAR}${star}`; + case ".*": + return `${DOT_LITERAL}${ONE_CHAR}${star}`; + case "*.*": + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + case "*/*": + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; + case "**": + return nodot + globstar(opts); + case "**/*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; + case "**/*.*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + case "**/.*": + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; + default: { + const match = /^(.*?)\.(\w+)$/.exec(str2); + if (!match) + return; + const source2 = create(match[1]); + if (!source2) + return; + return source2 + DOT_LITERAL + match[2]; + } + } + }; + const output = utils.removePrefix(input, state); + let source = create(output); + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; + } + return source; + }; + module22.exports = parse; + } + }); + var require_picomatch = __commonJS22({ + "node_modules/picomatch/lib/picomatch.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var scan = require_scan(); + var parse = require_parse22(); + var utils = require_utils3(); + var constants = require_constants3(); + var isObject2 = (val) => val && typeof val === "object" && !Array.isArray(val); + var picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map((input) => picomatch(input, options, returnState)); + const arrayMatcher = (str2) => { + for (const isMatch of fns) { + const state2 = isMatch(str2); + if (state2) + return state2; + } + return false; + }; + return arrayMatcher; + } + const isState = isObject2(glob) && glob.tokens && glob.input; + if (glob === "" || typeof glob !== "string" && !isState) { + throw new TypeError("Expected pattern to be a non-empty string"); + } + const opts = options || {}; + const posix = utils.isWindows(options); + const regex = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true); + const state = regex.state; + delete regex.state; + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = Object.assign(Object.assign({}, options), {}, { + ignore: null, + onMatch: null, + onResult: null + }); + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); + } + const matcher = (input, returnObject = false) => { + const { + isMatch, + match, + output + } = picomatch.test(input, regex, options, { + glob, + posix + }); + const result = { + glob, + state, + regex, + posix, + input, + output, + match, + isMatch + }; + if (typeof opts.onResult === "function") { + opts.onResult(result); + } + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } + if (isIgnored(input)) { + if (typeof opts.onIgnore === "function") { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; + } + if (typeof opts.onMatch === "function") { + opts.onMatch(result); + } + return returnObject ? result : true; + }; + if (returnState) { + matcher.state = state; + } + return matcher; + }; + picomatch.test = (input, regex, options, { + glob, + posix + } = {}) => { + if (typeof input !== "string") { + throw new TypeError("Expected input to be a string"); + } + if (input === "") { + return { + isMatch: false, + output: "" + }; + } + const opts = options || {}; + const format2 = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = match && format2 ? format2(input) : input; + if (match === false) { + output = format2 ? format2(input) : input; + match = output === glob; + } + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } + } + return { + isMatch: Boolean(match), + match, + output + }; + }; + picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(path2.basename(input)); + }; + picomatch.isMatch = (str2, patterns, options) => picomatch(patterns, options)(str2); + picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) + return pattern.map((p) => picomatch.parse(p, options)); + return parse(pattern, Object.assign(Object.assign({}, options), {}, { + fastpaths: false + })); + }; + picomatch.scan = (input, options) => scan(input, options); + picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return state.output; + } + const opts = options || {}; + const prepend = opts.contains ? "" : "^"; + const append = opts.contains ? "" : "$"; + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*$`; + } + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; + } + return regex; + }; + picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { + if (!input || typeof input !== "string") { + throw new TypeError("Expected a non-empty string"); + } + let parsed = { + negated: false, + fastpaths: true + }; + if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) { + parsed.output = parse.fastpaths(input, options); + } + if (!parsed.output) { + parsed = parse(input, options); + } + return picomatch.compileRe(parsed, options, returnOutput, returnState); + }; + picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? "i" : "")); + } catch (err) { + if (options && options.debug === true) + throw err; + return /$^/; + } + }; + picomatch.constants = constants; + module22.exports = picomatch; + } + }); + var require_picomatch2 = __commonJS22({ + "node_modules/picomatch/index.js"(exports2, module22) { + "use strict"; + module22.exports = require_picomatch(); + } + }); + var require_micromatch = __commonJS22({ + "node_modules/micromatch/index.js"(exports2, module22) { + "use strict"; + var util = require("util"); + var braces = require_braces(); + var picomatch = require_picomatch2(); + var utils = require_utils3(); + var isEmptyString = (val) => val === "" || val === "./"; + var micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); + let omit = /* @__PURE__ */ new Set(); + let keep = /* @__PURE__ */ new Set(); + let items = /* @__PURE__ */ new Set(); + let negatives = 0; + let onResult = (state) => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); + } + }; + for (let i = 0; i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), Object.assign(Object.assign({}, options), {}, { + onResult + }), true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) + negatives++; + for (let item of list) { + let matched = isMatch(item, true); + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) + continue; + if (negated) { + omit.add(matched.output); + } else { + omit.delete(matched.output); + keep.add(matched.output); + } + } + } + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter((item) => !omit.has(item)); + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(", ")}"`); + } + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map((p) => p.replace(/\\/g, "")) : patterns; + } + } + return matches; + }; + micromatch.match = micromatch; + micromatch.matcher = (pattern, options) => picomatch(pattern, options); + micromatch.isMatch = (str2, patterns, options) => picomatch(patterns, options)(str2); + micromatch.any = micromatch.isMatch; + micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = /* @__PURE__ */ new Set(); + let items = []; + let onResult = (state) => { + if (options.onResult) + options.onResult(state); + items.push(state.output); + }; + let matches = new Set(micromatch(list, patterns, Object.assign(Object.assign({}, options), {}, { + onResult + }))); + for (let item of items) { + if (!matches.has(item)) { + result.add(item); + } + } + return [...result]; + }; + micromatch.contains = (str2, pattern, options) => { + if (typeof str2 !== "string") { + throw new TypeError(`Expected a string: "${util.inspect(str2)}"`); + } + if (Array.isArray(pattern)) { + return pattern.some((p) => micromatch.contains(str2, p, options)); + } + if (typeof pattern === "string") { + if (isEmptyString(str2) || isEmptyString(pattern)) { + return false; + } + if (str2.includes(pattern) || str2.startsWith("./") && str2.slice(2).includes(pattern)) { + return true; + } + } + return micromatch.isMatch(str2, pattern, Object.assign(Object.assign({}, options), {}, { + contains: true + })); + }; + micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError("Expected the first argument to be an object"); + } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) + res[key] = obj[key]; + return res; + }; + micromatch.some = (list, patterns, options) => { + let items = [].concat(list); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some((item) => isMatch(item))) { + return true; + } + } + return false; + }; + micromatch.every = (list, patterns, options) => { + let items = [].concat(list); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every((item) => isMatch(item))) { + return false; + } + } + return true; + }; + micromatch.all = (str2, patterns, options) => { + if (typeof str2 !== "string") { + throw new TypeError(`Expected a string: "${util.inspect(str2)}"`); + } + return [].concat(patterns).every((p) => picomatch(p, options)(str2)); + }; + micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), Object.assign(Object.assign({}, options), {}, { + capture: true + })); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); + if (match) { + return match.slice(1).map((v) => v === void 0 ? "" : v); + } + }; + micromatch.makeRe = (...args) => picomatch.makeRe(...args); + micromatch.scan = (...args) => picomatch.scan(...args); + micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str2 of braces(String(pattern), options)) { + res.push(picomatch.parse(str2, options)); + } + } + return res; + }; + micromatch.braces = (pattern, options) => { + if (typeof pattern !== "string") + throw new TypeError("Expected a string"); + if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) { + return [pattern]; + } + return braces(pattern, options); + }; + micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== "string") + throw new TypeError("Expected a string"); + return micromatch.braces(pattern, Object.assign(Object.assign({}, options), {}, { + expand: true + })); + }; + module22.exports = micromatch; + } + }); + var require_parser2 = __commonJS22({ + "node_modules/@iarna/toml/lib/parser.js"(exports2, module22) { + "use strict"; + var ParserEND = 1114112; + var ParserError = class extends Error { + constructor(msg, filename, linenumber) { + super("[ParserError] " + msg, filename, linenumber); + this.name = "ParserError"; + this.code = "ParserError"; + if (Error.captureStackTrace) + Error.captureStackTrace(this, ParserError); + } + }; + var State2 = class { + constructor(parser) { + this.parser = parser; + this.buf = ""; + this.returned = null; + this.result = null; + this.resultTable = null; + this.resultArr = null; + } + }; + var Parser = class { + constructor() { + this.pos = 0; + this.col = 0; + this.line = 0; + this.obj = {}; + this.ctx = this.obj; + this.stack = []; + this._buf = ""; + this.char = null; + this.ii = 0; + this.state = new State2(this.parseStart); + } + parse(str2) { + if (str2.length === 0 || str2.length == null) + return; + this._buf = String(str2); + this.ii = -1; + this.char = -1; + let getNext; + while (getNext === false || this.nextChar()) { + getNext = this.runOne(); + } + this._buf = null; + } + nextChar() { + if (this.char === 10) { + ++this.line; + this.col = -1; + } + ++this.ii; + this.char = this._buf.codePointAt(this.ii); + ++this.pos; + ++this.col; + return this.haveBuffer(); + } + haveBuffer() { + return this.ii < this._buf.length; + } + runOne() { + return this.state.parser.call(this, this.state.returned); + } + finish() { + this.char = ParserEND; + let last; + do { + last = this.state.parser; + this.runOne(); + } while (this.state.parser !== last); + this.ctx = null; + this.state = null; + this._buf = null; + return this.obj; + } + next(fn) { + if (typeof fn !== "function") + throw new ParserError("Tried to set state to non-existent state: " + JSON.stringify(fn)); + this.state.parser = fn; + } + goto(fn) { + this.next(fn); + return this.runOne(); + } + call(fn, returnWith) { + if (returnWith) + this.next(returnWith); + this.stack.push(this.state); + this.state = new State2(fn); + } + callNow(fn, returnWith) { + this.call(fn, returnWith); + return this.runOne(); + } + return(value) { + if (this.stack.length === 0) + throw this.error(new ParserError("Stack underflow")); + if (value === void 0) + value = this.state.buf; + this.state = this.stack.pop(); + this.state.returned = value; + } + returnNow(value) { + this.return(value); + return this.runOne(); + } + consume() { + if (this.char === ParserEND) + throw this.error(new ParserError("Unexpected end-of-buffer")); + this.state.buf += this._buf[this.ii]; + } + error(err) { + err.line = this.line; + err.col = this.col; + err.pos = this.pos; + return err; + } + parseStart() { + throw new ParserError("Must declare a parseStart method"); + } + }; + Parser.END = ParserEND; + Parser.Error = ParserError; + module22.exports = Parser; + } + }); + var require_create_datetime = __commonJS22({ + "node_modules/@iarna/toml/lib/create-datetime.js"(exports2, module22) { + "use strict"; + module22.exports = (value) => { + const date = new Date(value); + if (isNaN(date)) { + throw new TypeError("Invalid Datetime"); + } else { + return date; + } + }; + } + }); + var require_format_num = __commonJS22({ + "node_modules/@iarna/toml/lib/format-num.js"(exports2, module22) { + "use strict"; + module22.exports = (d, num) => { + num = String(num); + while (num.length < d) + num = "0" + num; + return num; + }; + } + }); + var require_create_datetime_float = __commonJS22({ + "node_modules/@iarna/toml/lib/create-datetime-float.js"(exports2, module22) { + "use strict"; + var f = require_format_num(); + var FloatingDateTime = class extends Date { + constructor(value) { + super(value + "Z"); + this.isFloating = true; + } + toISOString() { + const date = `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`; + const time = `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`; + return `${date}T${time}`; + } + }; + module22.exports = (value) => { + const date = new FloatingDateTime(value); + if (isNaN(date)) { + throw new TypeError("Invalid Datetime"); + } else { + return date; + } + }; + } + }); + var require_create_date = __commonJS22({ + "node_modules/@iarna/toml/lib/create-date.js"(exports2, module22) { + "use strict"; + var f = require_format_num(); + var DateTime = global.Date; + var Date2 = class extends DateTime { + constructor(value) { + super(value); + this.isDate = true; + } + toISOString() { + return `${this.getUTCFullYear()}-${f(2, this.getUTCMonth() + 1)}-${f(2, this.getUTCDate())}`; + } + }; + module22.exports = (value) => { + const date = new Date2(value); + if (isNaN(date)) { + throw new TypeError("Invalid Datetime"); + } else { + return date; + } + }; + } + }); + var require_create_time = __commonJS22({ + "node_modules/@iarna/toml/lib/create-time.js"(exports2, module22) { + "use strict"; + var f = require_format_num(); + var Time = class extends Date { + constructor(value) { + super(`0000-01-01T${value}Z`); + this.isTime = true; + } + toISOString() { + return `${f(2, this.getUTCHours())}:${f(2, this.getUTCMinutes())}:${f(2, this.getUTCSeconds())}.${f(3, this.getUTCMilliseconds())}`; + } + }; + module22.exports = (value) => { + const date = new Time(value); + if (isNaN(date)) { + throw new TypeError("Invalid Datetime"); + } else { + return date; + } + }; + } + }); + var require_toml_parser = __commonJS22({ + "node_modules/@iarna/toml/lib/toml-parser.js"(exports2, module22) { + "use strict"; + module22.exports = makeParserClass(require_parser2()); + module22.exports.makeParserClass = makeParserClass; + var TomlError = class extends Error { + constructor(msg) { + super(msg); + this.name = "TomlError"; + if (Error.captureStackTrace) + Error.captureStackTrace(this, TomlError); + this.fromTOML = true; + this.wrapped = null; + } + }; + TomlError.wrap = (err) => { + const terr = new TomlError(err.message); + terr.code = err.code; + terr.wrapped = err; + return terr; + }; + module22.exports.TomlError = TomlError; + var createDateTime = require_create_datetime(); + var createDateTimeFloat = require_create_datetime_float(); + var createDate = require_create_date(); + var createTime = require_create_time(); + var CTRL_I = 9; + var CTRL_J = 10; + var CTRL_M = 13; + var CTRL_CHAR_BOUNDARY = 31; + var CHAR_SP = 32; + var CHAR_QUOT = 34; + var CHAR_NUM = 35; + var CHAR_APOS = 39; + var CHAR_PLUS = 43; + var CHAR_COMMA2 = 44; + var CHAR_HYPHEN = 45; + var CHAR_PERIOD = 46; + var CHAR_0 = 48; + var CHAR_1 = 49; + var CHAR_7 = 55; + var CHAR_9 = 57; + var CHAR_COLON2 = 58; + var CHAR_EQUALS2 = 61; + var CHAR_A = 65; + var CHAR_E = 69; + var CHAR_F = 70; + var CHAR_T = 84; + var CHAR_U = 85; + var CHAR_Z = 90; + var CHAR_LOWBAR = 95; + var CHAR_a = 97; + var CHAR_b = 98; + var CHAR_e = 101; + var CHAR_f = 102; + var CHAR_i = 105; + var CHAR_l = 108; + var CHAR_n = 110; + var CHAR_o = 111; + var CHAR_r = 114; + var CHAR_s = 115; + var CHAR_t = 116; + var CHAR_u = 117; + var CHAR_x = 120; + var CHAR_z = 122; + var CHAR_LCUB = 123; + var CHAR_RCUB = 125; + var CHAR_LSQB = 91; + var CHAR_BSOL = 92; + var CHAR_RSQB = 93; + var CHAR_DEL = 127; + var SURROGATE_FIRST = 55296; + var SURROGATE_LAST = 57343; + var escapes = { + [CHAR_b]: "\b", + [CHAR_t]: " ", + [CHAR_n]: "\n", + [CHAR_f]: "\f", + [CHAR_r]: "\r", + [CHAR_QUOT]: '"', + [CHAR_BSOL]: "\\" + }; + function isDigit(cp) { + return cp >= CHAR_0 && cp <= CHAR_9; + } + function isHexit(cp) { + return cp >= CHAR_A && cp <= CHAR_F || cp >= CHAR_a && cp <= CHAR_f || cp >= CHAR_0 && cp <= CHAR_9; + } + function isBit(cp) { + return cp === CHAR_1 || cp === CHAR_0; + } + function isOctit(cp) { + return cp >= CHAR_0 && cp <= CHAR_7; + } + function isAlphaNumQuoteHyphen(cp) { + return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_APOS || cp === CHAR_QUOT || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN; + } + function isAlphaNumHyphen(cp) { + return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN; + } + var _type = Symbol("type"); + var _declared = Symbol("declared"); + var hasOwnProperty = Object.prototype.hasOwnProperty; + var defineProperty = Object.defineProperty; + var descriptor = { + configurable: true, + enumerable: true, + writable: true, + value: void 0 + }; + function hasKey(obj, key) { + if (hasOwnProperty.call(obj, key)) + return true; + if (key === "__proto__") + defineProperty(obj, "__proto__", descriptor); + return false; + } + var INLINE_TABLE = Symbol("inline-table"); + function InlineTable() { + return Object.defineProperties({}, { + [_type]: { + value: INLINE_TABLE + } + }); + } + function isInlineTable(obj) { + if (obj === null || typeof obj !== "object") + return false; + return obj[_type] === INLINE_TABLE; + } + var TABLE = Symbol("table"); + function Table() { + return Object.defineProperties({}, { + [_type]: { + value: TABLE + }, + [_declared]: { + value: false, + writable: true + } + }); + } + function isTable(obj) { + if (obj === null || typeof obj !== "object") + return false; + return obj[_type] === TABLE; + } + var _contentType = Symbol("content-type"); + var INLINE_LIST = Symbol("inline-list"); + function InlineList(type2) { + return Object.defineProperties([], { + [_type]: { + value: INLINE_LIST + }, + [_contentType]: { + value: type2 + } + }); + } + function isInlineList(obj) { + if (obj === null || typeof obj !== "object") + return false; + return obj[_type] === INLINE_LIST; + } + var LIST = Symbol("list"); + function List() { + return Object.defineProperties([], { + [_type]: { + value: LIST + } + }); + } + function isList(obj) { + if (obj === null || typeof obj !== "object") + return false; + return obj[_type] === LIST; + } + var _custom; + try { + const utilInspect = require("util").inspect; + _custom = utilInspect.custom; + } catch (_) { + } + var _inspect = _custom || "inspect"; + var BoxedBigInt = class { + constructor(value) { + try { + this.value = global.BigInt.asIntN(64, value); + } catch (_) { + this.value = null; + } + Object.defineProperty(this, _type, { + value: INTEGER + }); + } + isNaN() { + return this.value === null; + } + toString() { + return String(this.value); + } + [_inspect]() { + return `[BigInt: ${this.toString()}]}`; + } + valueOf() { + return this.value; + } + }; + var INTEGER = Symbol("integer"); + function Integer(value) { + let num = Number(value); + if (Object.is(num, -0)) + num = 0; + if (global.BigInt && !Number.isSafeInteger(num)) { + return new BoxedBigInt(value); + } else { + return Object.defineProperties(new Number(num), { + isNaN: { + value: function() { + return isNaN(this); + } + }, + [_type]: { + value: INTEGER + }, + [_inspect]: { + value: () => `[Integer: ${value}]` + } + }); + } + } + function isInteger2(obj) { + if (obj === null || typeof obj !== "object") + return false; + return obj[_type] === INTEGER; + } + var FLOAT = Symbol("float"); + function Float(value) { + return Object.defineProperties(new Number(value), { + [_type]: { + value: FLOAT + }, + [_inspect]: { + value: () => `[Float: ${value}]` + } + }); + } + function isFloat2(obj) { + if (obj === null || typeof obj !== "object") + return false; + return obj[_type] === FLOAT; + } + function tomlType(value) { + const type2 = typeof value; + if (type2 === "object") { + if (value === null) + return "null"; + if (value instanceof Date) + return "datetime"; + if (_type in value) { + switch (value[_type]) { + case INLINE_TABLE: + return "inline-table"; + case INLINE_LIST: + return "inline-list"; + case TABLE: + return "table"; + case LIST: + return "list"; + case FLOAT: + return "float"; + case INTEGER: + return "integer"; + } + } + } + return type2; + } + function makeParserClass(Parser) { + class TOMLParser extends Parser { + constructor() { + super(); + this.ctx = this.obj = Table(); + } + atEndOfWord() { + return this.char === CHAR_NUM || this.char === CTRL_I || this.char === CHAR_SP || this.atEndOfLine(); + } + atEndOfLine() { + return this.char === Parser.END || this.char === CTRL_J || this.char === CTRL_M; + } + parseStart() { + if (this.char === Parser.END) { + return null; + } else if (this.char === CHAR_LSQB) { + return this.call(this.parseTableOrList); + } else if (this.char === CHAR_NUM) { + return this.call(this.parseComment); + } else if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) { + return null; + } else if (isAlphaNumQuoteHyphen(this.char)) { + return this.callNow(this.parseAssignStatement); + } else { + throw this.error(new TomlError(`Unknown character "${this.char}"`)); + } + } + parseWhitespaceToEOL() { + if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) { + return null; + } else if (this.char === CHAR_NUM) { + return this.goto(this.parseComment); + } else if (this.char === Parser.END || this.char === CTRL_J) { + return this.return(); + } else { + throw this.error(new TomlError("Unexpected character, expected only whitespace or comments till end of line")); + } + } + parseAssignStatement() { + return this.callNow(this.parseAssign, this.recordAssignStatement); + } + recordAssignStatement(kv) { + let target = this.ctx; + let finalKey = kv.key.pop(); + for (let kw of kv.key) { + if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) { + throw this.error(new TomlError("Can't redefine existing key")); + } + target = target[kw] = target[kw] || Table(); + } + if (hasKey(target, finalKey)) { + throw this.error(new TomlError("Can't redefine existing key")); + } + if (isInteger2(kv.value) || isFloat2(kv.value)) { + target[finalKey] = kv.value.valueOf(); + } else { + target[finalKey] = kv.value; + } + return this.goto(this.parseWhitespaceToEOL); + } + parseAssign() { + return this.callNow(this.parseKeyword, this.recordAssignKeyword); + } + recordAssignKeyword(key) { + if (this.state.resultTable) { + this.state.resultTable.push(key); + } else { + this.state.resultTable = [key]; + } + return this.goto(this.parseAssignKeywordPreDot); + } + parseAssignKeywordPreDot() { + if (this.char === CHAR_PERIOD) { + return this.next(this.parseAssignKeywordPostDot); + } else if (this.char !== CHAR_SP && this.char !== CTRL_I) { + return this.goto(this.parseAssignEqual); + } + } + parseAssignKeywordPostDot() { + if (this.char !== CHAR_SP && this.char !== CTRL_I) { + return this.callNow(this.parseKeyword, this.recordAssignKeyword); + } + } + parseAssignEqual() { + if (this.char === CHAR_EQUALS2) { + return this.next(this.parseAssignPreValue); + } else { + throw this.error(new TomlError('Invalid character, expected "="')); + } + } + parseAssignPreValue() { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else { + return this.callNow(this.parseValue, this.recordAssignValue); + } + } + recordAssignValue(value) { + return this.returnNow({ + key: this.state.resultTable, + value + }); + } + parseComment() { + do { + if (this.char === Parser.END || this.char === CTRL_J) { + return this.return(); + } + } while (this.nextChar()); + } + parseTableOrList() { + if (this.char === CHAR_LSQB) { + this.next(this.parseList); + } else { + return this.goto(this.parseTable); + } + } + parseTable() { + this.ctx = this.obj; + return this.goto(this.parseTableNext); + } + parseTableNext() { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else { + return this.callNow(this.parseKeyword, this.parseTableMore); + } + } + parseTableMore(keyword) { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else if (this.char === CHAR_RSQB) { + if (hasKey(this.ctx, keyword) && (!isTable(this.ctx[keyword]) || this.ctx[keyword][_declared])) { + throw this.error(new TomlError("Can't redefine existing key")); + } else { + this.ctx = this.ctx[keyword] = this.ctx[keyword] || Table(); + this.ctx[_declared] = true; + } + return this.next(this.parseWhitespaceToEOL); + } else if (this.char === CHAR_PERIOD) { + if (!hasKey(this.ctx, keyword)) { + this.ctx = this.ctx[keyword] = Table(); + } else if (isTable(this.ctx[keyword])) { + this.ctx = this.ctx[keyword]; + } else if (isList(this.ctx[keyword])) { + this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]; + } else { + throw this.error(new TomlError("Can't redefine existing key")); + } + return this.next(this.parseTableNext); + } else { + throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]")); + } + } + parseList() { + this.ctx = this.obj; + return this.goto(this.parseListNext); + } + parseListNext() { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else { + return this.callNow(this.parseKeyword, this.parseListMore); + } + } + parseListMore(keyword) { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else if (this.char === CHAR_RSQB) { + if (!hasKey(this.ctx, keyword)) { + this.ctx[keyword] = List(); + } + if (isInlineList(this.ctx[keyword])) { + throw this.error(new TomlError("Can't extend an inline array")); + } else if (isList(this.ctx[keyword])) { + const next = Table(); + this.ctx[keyword].push(next); + this.ctx = next; + } else { + throw this.error(new TomlError("Can't redefine an existing key")); + } + return this.next(this.parseListEnd); + } else if (this.char === CHAR_PERIOD) { + if (!hasKey(this.ctx, keyword)) { + this.ctx = this.ctx[keyword] = Table(); + } else if (isInlineList(this.ctx[keyword])) { + throw this.error(new TomlError("Can't extend an inline array")); + } else if (isInlineTable(this.ctx[keyword])) { + throw this.error(new TomlError("Can't extend an inline table")); + } else if (isList(this.ctx[keyword])) { + this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1]; + } else if (isTable(this.ctx[keyword])) { + this.ctx = this.ctx[keyword]; + } else { + throw this.error(new TomlError("Can't redefine an existing key")); + } + return this.next(this.parseListNext); + } else { + throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]")); + } + } + parseListEnd(keyword) { + if (this.char === CHAR_RSQB) { + return this.next(this.parseWhitespaceToEOL); + } else { + throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]")); + } + } + parseValue() { + if (this.char === Parser.END) { + throw this.error(new TomlError("Key without value")); + } else if (this.char === CHAR_QUOT) { + return this.next(this.parseDoubleString); + } + if (this.char === CHAR_APOS) { + return this.next(this.parseSingleString); + } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { + return this.goto(this.parseNumberSign); + } else if (this.char === CHAR_i) { + return this.next(this.parseInf); + } else if (this.char === CHAR_n) { + return this.next(this.parseNan); + } else if (isDigit(this.char)) { + return this.goto(this.parseNumberOrDateTime); + } else if (this.char === CHAR_t || this.char === CHAR_f) { + return this.goto(this.parseBoolean); + } else if (this.char === CHAR_LSQB) { + return this.call(this.parseInlineList, this.recordValue); + } else if (this.char === CHAR_LCUB) { + return this.call(this.parseInlineTable, this.recordValue); + } else { + throw this.error(new TomlError("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table")); + } + } + recordValue(value) { + return this.returnNow(value); + } + parseInf() { + if (this.char === CHAR_n) { + return this.next(this.parseInf2); + } else { + throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"')); + } + } + parseInf2() { + if (this.char === CHAR_f) { + if (this.state.buf === "-") { + return this.return(-Infinity); + } else { + return this.return(Infinity); + } + } else { + throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"')); + } + } + parseNan() { + if (this.char === CHAR_a) { + return this.next(this.parseNan2); + } else { + throw this.error(new TomlError('Unexpected character, expected "nan"')); + } + } + parseNan2() { + if (this.char === CHAR_n) { + return this.return(NaN); + } else { + throw this.error(new TomlError('Unexpected character, expected "nan"')); + } + } + parseKeyword() { + if (this.char === CHAR_QUOT) { + return this.next(this.parseBasicString); + } else if (this.char === CHAR_APOS) { + return this.next(this.parseLiteralString); + } else { + return this.goto(this.parseBareKey); + } + } + parseBareKey() { + do { + if (this.char === Parser.END) { + throw this.error(new TomlError("Key ended without value")); + } else if (isAlphaNumHyphen(this.char)) { + this.consume(); + } else if (this.state.buf.length === 0) { + throw this.error(new TomlError("Empty bare keys are not allowed")); + } else { + return this.returnNow(); + } + } while (this.nextChar()); + } + parseSingleString() { + if (this.char === CHAR_APOS) { + return this.next(this.parseLiteralMultiStringMaybe); + } else { + return this.goto(this.parseLiteralString); + } + } + parseLiteralString() { + do { + if (this.char === CHAR_APOS) { + return this.return(); + } else if (this.atEndOfLine()) { + throw this.error(new TomlError("Unterminated string")); + } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) { + throw this.errorControlCharInString(); + } else { + this.consume(); + } + } while (this.nextChar()); + } + parseLiteralMultiStringMaybe() { + if (this.char === CHAR_APOS) { + return this.next(this.parseLiteralMultiString); + } else { + return this.returnNow(); + } + } + parseLiteralMultiString() { + if (this.char === CTRL_M) { + return null; + } else if (this.char === CTRL_J) { + return this.next(this.parseLiteralMultiStringContent); + } else { + return this.goto(this.parseLiteralMultiStringContent); + } + } + parseLiteralMultiStringContent() { + do { + if (this.char === CHAR_APOS) { + return this.next(this.parseLiteralMultiEnd); + } else if (this.char === Parser.END) { + throw this.error(new TomlError("Unterminated multi-line string")); + } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) { + throw this.errorControlCharInString(); + } else { + this.consume(); + } + } while (this.nextChar()); + } + parseLiteralMultiEnd() { + if (this.char === CHAR_APOS) { + return this.next(this.parseLiteralMultiEnd2); + } else { + this.state.buf += "'"; + return this.goto(this.parseLiteralMultiStringContent); + } + } + parseLiteralMultiEnd2() { + if (this.char === CHAR_APOS) { + return this.return(); + } else { + this.state.buf += "''"; + return this.goto(this.parseLiteralMultiStringContent); + } + } + parseDoubleString() { + if (this.char === CHAR_QUOT) { + return this.next(this.parseMultiStringMaybe); + } else { + return this.goto(this.parseBasicString); + } + } + parseBasicString() { + do { + if (this.char === CHAR_BSOL) { + return this.call(this.parseEscape, this.recordEscapeReplacement); + } else if (this.char === CHAR_QUOT) { + return this.return(); + } else if (this.atEndOfLine()) { + throw this.error(new TomlError("Unterminated string")); + } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) { + throw this.errorControlCharInString(); + } else { + this.consume(); + } + } while (this.nextChar()); + } + recordEscapeReplacement(replacement) { + this.state.buf += replacement; + return this.goto(this.parseBasicString); + } + parseMultiStringMaybe() { + if (this.char === CHAR_QUOT) { + return this.next(this.parseMultiString); + } else { + return this.returnNow(); + } + } + parseMultiString() { + if (this.char === CTRL_M) { + return null; + } else if (this.char === CTRL_J) { + return this.next(this.parseMultiStringContent); + } else { + return this.goto(this.parseMultiStringContent); + } + } + parseMultiStringContent() { + do { + if (this.char === CHAR_BSOL) { + return this.call(this.parseMultiEscape, this.recordMultiEscapeReplacement); + } else if (this.char === CHAR_QUOT) { + return this.next(this.parseMultiEnd); + } else if (this.char === Parser.END) { + throw this.error(new TomlError("Unterminated multi-line string")); + } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) { + throw this.errorControlCharInString(); + } else { + this.consume(); + } + } while (this.nextChar()); + } + errorControlCharInString() { + let displayCode = "\\u00"; + if (this.char < 16) { + displayCode += "0"; + } + displayCode += this.char.toString(16); + return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${displayCode} instead`)); + } + recordMultiEscapeReplacement(replacement) { + this.state.buf += replacement; + return this.goto(this.parseMultiStringContent); + } + parseMultiEnd() { + if (this.char === CHAR_QUOT) { + return this.next(this.parseMultiEnd2); + } else { + this.state.buf += '"'; + return this.goto(this.parseMultiStringContent); + } + } + parseMultiEnd2() { + if (this.char === CHAR_QUOT) { + return this.return(); + } else { + this.state.buf += '""'; + return this.goto(this.parseMultiStringContent); + } + } + parseMultiEscape() { + if (this.char === CTRL_M || this.char === CTRL_J) { + return this.next(this.parseMultiTrim); + } else if (this.char === CHAR_SP || this.char === CTRL_I) { + return this.next(this.parsePreMultiTrim); + } else { + return this.goto(this.parseEscape); + } + } + parsePreMultiTrim() { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else if (this.char === CTRL_M || this.char === CTRL_J) { + return this.next(this.parseMultiTrim); + } else { + throw this.error(new TomlError("Can't escape whitespace")); + } + } + parseMultiTrim() { + if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) { + return null; + } else { + return this.returnNow(); + } + } + parseEscape() { + if (this.char in escapes) { + return this.return(escapes[this.char]); + } else if (this.char === CHAR_u) { + return this.call(this.parseSmallUnicode, this.parseUnicodeReturn); + } else if (this.char === CHAR_U) { + return this.call(this.parseLargeUnicode, this.parseUnicodeReturn); + } else { + throw this.error(new TomlError("Unknown escape character: " + this.char)); + } + } + parseUnicodeReturn(char) { + try { + const codePoint = parseInt(char, 16); + if (codePoint >= SURROGATE_FIRST && codePoint <= SURROGATE_LAST) { + throw this.error(new TomlError("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved")); + } + return this.returnNow(String.fromCodePoint(codePoint)); + } catch (err) { + throw this.error(TomlError.wrap(err)); + } + } + parseSmallUnicode() { + if (!isHexit(this.char)) { + throw this.error(new TomlError("Invalid character in unicode sequence, expected hex")); + } else { + this.consume(); + if (this.state.buf.length >= 4) + return this.return(); + } + } + parseLargeUnicode() { + if (!isHexit(this.char)) { + throw this.error(new TomlError("Invalid character in unicode sequence, expected hex")); + } else { + this.consume(); + if (this.state.buf.length >= 8) + return this.return(); + } + } + parseNumberSign() { + this.consume(); + return this.next(this.parseMaybeSignedInfOrNan); + } + parseMaybeSignedInfOrNan() { + if (this.char === CHAR_i) { + return this.next(this.parseInf); + } else if (this.char === CHAR_n) { + return this.next(this.parseNan); + } else { + return this.callNow(this.parseNoUnder, this.parseNumberIntegerStart); + } + } + parseNumberIntegerStart() { + if (this.char === CHAR_0) { + this.consume(); + return this.next(this.parseNumberIntegerExponentOrDecimal); + } else { + return this.goto(this.parseNumberInteger); + } + } + parseNumberIntegerExponentOrDecimal() { + if (this.char === CHAR_PERIOD) { + this.consume(); + return this.call(this.parseNoUnder, this.parseNumberFloat); + } else if (this.char === CHAR_E || this.char === CHAR_e) { + this.consume(); + return this.next(this.parseNumberExponentSign); + } else { + return this.returnNow(Integer(this.state.buf)); + } + } + parseNumberInteger() { + if (isDigit(this.char)) { + this.consume(); + } else if (this.char === CHAR_LOWBAR) { + return this.call(this.parseNoUnder); + } else if (this.char === CHAR_E || this.char === CHAR_e) { + this.consume(); + return this.next(this.parseNumberExponentSign); + } else if (this.char === CHAR_PERIOD) { + this.consume(); + return this.call(this.parseNoUnder, this.parseNumberFloat); + } else { + const result = Integer(this.state.buf); + if (result.isNaN()) { + throw this.error(new TomlError("Invalid number")); + } else { + return this.returnNow(result); + } + } + } + parseNoUnder() { + if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD || this.char === CHAR_E || this.char === CHAR_e) { + throw this.error(new TomlError("Unexpected character, expected digit")); + } else if (this.atEndOfWord()) { + throw this.error(new TomlError("Incomplete number")); + } + return this.returnNow(); + } + parseNoUnderHexOctBinLiteral() { + if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD) { + throw this.error(new TomlError("Unexpected character, expected digit")); + } else if (this.atEndOfWord()) { + throw this.error(new TomlError("Incomplete number")); + } + return this.returnNow(); + } + parseNumberFloat() { + if (this.char === CHAR_LOWBAR) { + return this.call(this.parseNoUnder, this.parseNumberFloat); + } else if (isDigit(this.char)) { + this.consume(); + } else if (this.char === CHAR_E || this.char === CHAR_e) { + this.consume(); + return this.next(this.parseNumberExponentSign); + } else { + return this.returnNow(Float(this.state.buf)); + } + } + parseNumberExponentSign() { + if (isDigit(this.char)) { + return this.goto(this.parseNumberExponent); + } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { + this.consume(); + this.call(this.parseNoUnder, this.parseNumberExponent); + } else { + throw this.error(new TomlError("Unexpected character, expected -, + or digit")); + } + } + parseNumberExponent() { + if (isDigit(this.char)) { + this.consume(); + } else if (this.char === CHAR_LOWBAR) { + return this.call(this.parseNoUnder); + } else { + return this.returnNow(Float(this.state.buf)); + } + } + parseNumberOrDateTime() { + if (this.char === CHAR_0) { + this.consume(); + return this.next(this.parseNumberBaseOrDateTime); + } else { + return this.goto(this.parseNumberOrDateTimeOnly); + } + } + parseNumberOrDateTimeOnly() { + if (this.char === CHAR_LOWBAR) { + return this.call(this.parseNoUnder, this.parseNumberInteger); + } else if (isDigit(this.char)) { + this.consume(); + if (this.state.buf.length > 4) + this.next(this.parseNumberInteger); + } else if (this.char === CHAR_E || this.char === CHAR_e) { + this.consume(); + return this.next(this.parseNumberExponentSign); + } else if (this.char === CHAR_PERIOD) { + this.consume(); + return this.call(this.parseNoUnder, this.parseNumberFloat); + } else if (this.char === CHAR_HYPHEN) { + return this.goto(this.parseDateTime); + } else if (this.char === CHAR_COLON2) { + return this.goto(this.parseOnlyTimeHour); + } else { + return this.returnNow(Integer(this.state.buf)); + } + } + parseDateTimeOnly() { + if (this.state.buf.length < 4) { + if (isDigit(this.char)) { + return this.consume(); + } else if (this.char === CHAR_COLON2) { + return this.goto(this.parseOnlyTimeHour); + } else { + throw this.error(new TomlError("Expected digit while parsing year part of a date")); + } + } else { + if (this.char === CHAR_HYPHEN) { + return this.goto(this.parseDateTime); + } else { + throw this.error(new TomlError("Expected hyphen (-) while parsing year part of date")); + } + } + } + parseNumberBaseOrDateTime() { + if (this.char === CHAR_b) { + this.consume(); + return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerBin); + } else if (this.char === CHAR_o) { + this.consume(); + return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerOct); + } else if (this.char === CHAR_x) { + this.consume(); + return this.call(this.parseNoUnderHexOctBinLiteral, this.parseIntegerHex); + } else if (this.char === CHAR_PERIOD) { + return this.goto(this.parseNumberInteger); + } else if (isDigit(this.char)) { + return this.goto(this.parseDateTimeOnly); + } else { + return this.returnNow(Integer(this.state.buf)); + } + } + parseIntegerHex() { + if (isHexit(this.char)) { + this.consume(); + } else if (this.char === CHAR_LOWBAR) { + return this.call(this.parseNoUnderHexOctBinLiteral); + } else { + const result = Integer(this.state.buf); + if (result.isNaN()) { + throw this.error(new TomlError("Invalid number")); + } else { + return this.returnNow(result); + } + } + } + parseIntegerOct() { + if (isOctit(this.char)) { + this.consume(); + } else if (this.char === CHAR_LOWBAR) { + return this.call(this.parseNoUnderHexOctBinLiteral); + } else { + const result = Integer(this.state.buf); + if (result.isNaN()) { + throw this.error(new TomlError("Invalid number")); + } else { + return this.returnNow(result); + } + } + } + parseIntegerBin() { + if (isBit(this.char)) { + this.consume(); + } else if (this.char === CHAR_LOWBAR) { + return this.call(this.parseNoUnderHexOctBinLiteral); + } else { + const result = Integer(this.state.buf); + if (result.isNaN()) { + throw this.error(new TomlError("Invalid number")); + } else { + return this.returnNow(result); + } + } + } + parseDateTime() { + if (this.state.buf.length < 4) { + throw this.error(new TomlError("Years less than 1000 must be zero padded to four characters")); + } + this.state.result = this.state.buf; + this.state.buf = ""; + return this.next(this.parseDateMonth); + } + parseDateMonth() { + if (this.char === CHAR_HYPHEN) { + if (this.state.buf.length < 2) { + throw this.error(new TomlError("Months less than 10 must be zero padded to two characters")); + } + this.state.result += "-" + this.state.buf; + this.state.buf = ""; + return this.next(this.parseDateDay); + } else if (isDigit(this.char)) { + this.consume(); + } else { + throw this.error(new TomlError("Incomplete datetime")); + } + } + parseDateDay() { + if (this.char === CHAR_T || this.char === CHAR_SP) { + if (this.state.buf.length < 2) { + throw this.error(new TomlError("Days less than 10 must be zero padded to two characters")); + } + this.state.result += "-" + this.state.buf; + this.state.buf = ""; + return this.next(this.parseStartTimeHour); + } else if (this.atEndOfWord()) { + return this.returnNow(createDate(this.state.result + "-" + this.state.buf)); + } else if (isDigit(this.char)) { + this.consume(); + } else { + throw this.error(new TomlError("Incomplete datetime")); + } + } + parseStartTimeHour() { + if (this.atEndOfWord()) { + return this.returnNow(createDate(this.state.result)); + } else { + return this.goto(this.parseTimeHour); + } + } + parseTimeHour() { + if (this.char === CHAR_COLON2) { + if (this.state.buf.length < 2) { + throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters")); + } + this.state.result += "T" + this.state.buf; + this.state.buf = ""; + return this.next(this.parseTimeMin); + } else if (isDigit(this.char)) { + this.consume(); + } else { + throw this.error(new TomlError("Incomplete datetime")); + } + } + parseTimeMin() { + if (this.state.buf.length < 2 && isDigit(this.char)) { + this.consume(); + } else if (this.state.buf.length === 2 && this.char === CHAR_COLON2) { + this.state.result += ":" + this.state.buf; + this.state.buf = ""; + return this.next(this.parseTimeSec); + } else { + throw this.error(new TomlError("Incomplete datetime")); + } + } + parseTimeSec() { + if (isDigit(this.char)) { + this.consume(); + if (this.state.buf.length === 2) { + this.state.result += ":" + this.state.buf; + this.state.buf = ""; + return this.next(this.parseTimeZoneOrFraction); + } + } else { + throw this.error(new TomlError("Incomplete datetime")); + } + } + parseOnlyTimeHour() { + if (this.char === CHAR_COLON2) { + if (this.state.buf.length < 2) { + throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters")); + } + this.state.result = this.state.buf; + this.state.buf = ""; + return this.next(this.parseOnlyTimeMin); + } else { + throw this.error(new TomlError("Incomplete time")); + } + } + parseOnlyTimeMin() { + if (this.state.buf.length < 2 && isDigit(this.char)) { + this.consume(); + } else if (this.state.buf.length === 2 && this.char === CHAR_COLON2) { + this.state.result += ":" + this.state.buf; + this.state.buf = ""; + return this.next(this.parseOnlyTimeSec); + } else { + throw this.error(new TomlError("Incomplete time")); + } + } + parseOnlyTimeSec() { + if (isDigit(this.char)) { + this.consume(); + if (this.state.buf.length === 2) { + return this.next(this.parseOnlyTimeFractionMaybe); + } + } else { + throw this.error(new TomlError("Incomplete time")); + } + } + parseOnlyTimeFractionMaybe() { + this.state.result += ":" + this.state.buf; + if (this.char === CHAR_PERIOD) { + this.state.buf = ""; + this.next(this.parseOnlyTimeFraction); + } else { + return this.return(createTime(this.state.result)); + } + } + parseOnlyTimeFraction() { + if (isDigit(this.char)) { + this.consume(); + } else if (this.atEndOfWord()) { + if (this.state.buf.length === 0) + throw this.error(new TomlError("Expected digit in milliseconds")); + return this.returnNow(createTime(this.state.result + "." + this.state.buf)); + } else { + throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z")); + } + } + parseTimeZoneOrFraction() { + if (this.char === CHAR_PERIOD) { + this.consume(); + this.next(this.parseDateTimeFraction); + } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { + this.consume(); + this.next(this.parseTimeZoneHour); + } else if (this.char === CHAR_Z) { + this.consume(); + return this.return(createDateTime(this.state.result + this.state.buf)); + } else if (this.atEndOfWord()) { + return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf)); + } else { + throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z")); + } + } + parseDateTimeFraction() { + if (isDigit(this.char)) { + this.consume(); + } else if (this.state.buf.length === 1) { + throw this.error(new TomlError("Expected digit in milliseconds")); + } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) { + this.consume(); + this.next(this.parseTimeZoneHour); + } else if (this.char === CHAR_Z) { + this.consume(); + return this.return(createDateTime(this.state.result + this.state.buf)); + } else if (this.atEndOfWord()) { + return this.returnNow(createDateTimeFloat(this.state.result + this.state.buf)); + } else { + throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z")); + } + } + parseTimeZoneHour() { + if (isDigit(this.char)) { + this.consume(); + if (/\d\d$/.test(this.state.buf)) + return this.next(this.parseTimeZoneSep); + } else { + throw this.error(new TomlError("Unexpected character in datetime, expected digit")); + } + } + parseTimeZoneSep() { + if (this.char === CHAR_COLON2) { + this.consume(); + this.next(this.parseTimeZoneMin); + } else { + throw this.error(new TomlError("Unexpected character in datetime, expected colon")); + } + } + parseTimeZoneMin() { + if (isDigit(this.char)) { + this.consume(); + if (/\d\d$/.test(this.state.buf)) + return this.return(createDateTime(this.state.result + this.state.buf)); + } else { + throw this.error(new TomlError("Unexpected character in datetime, expected digit")); + } + } + parseBoolean() { + if (this.char === CHAR_t) { + this.consume(); + return this.next(this.parseTrue_r); + } else if (this.char === CHAR_f) { + this.consume(); + return this.next(this.parseFalse_a); + } + } + parseTrue_r() { + if (this.char === CHAR_r) { + this.consume(); + return this.next(this.parseTrue_u); + } else { + throw this.error(new TomlError("Invalid boolean, expected true or false")); + } + } + parseTrue_u() { + if (this.char === CHAR_u) { + this.consume(); + return this.next(this.parseTrue_e); + } else { + throw this.error(new TomlError("Invalid boolean, expected true or false")); + } + } + parseTrue_e() { + if (this.char === CHAR_e) { + return this.return(true); + } else { + throw this.error(new TomlError("Invalid boolean, expected true or false")); + } + } + parseFalse_a() { + if (this.char === CHAR_a) { + this.consume(); + return this.next(this.parseFalse_l); + } else { + throw this.error(new TomlError("Invalid boolean, expected true or false")); + } + } + parseFalse_l() { + if (this.char === CHAR_l) { + this.consume(); + return this.next(this.parseFalse_s); + } else { + throw this.error(new TomlError("Invalid boolean, expected true or false")); + } + } + parseFalse_s() { + if (this.char === CHAR_s) { + this.consume(); + return this.next(this.parseFalse_e); + } else { + throw this.error(new TomlError("Invalid boolean, expected true or false")); + } + } + parseFalse_e() { + if (this.char === CHAR_e) { + return this.return(false); + } else { + throw this.error(new TomlError("Invalid boolean, expected true or false")); + } + } + parseInlineList() { + if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) { + return null; + } else if (this.char === Parser.END) { + throw this.error(new TomlError("Unterminated inline array")); + } else if (this.char === CHAR_NUM) { + return this.call(this.parseComment); + } else if (this.char === CHAR_RSQB) { + return this.return(this.state.resultArr || InlineList()); + } else { + return this.callNow(this.parseValue, this.recordInlineListValue); + } + } + recordInlineListValue(value) { + if (this.state.resultArr) { + const listType = this.state.resultArr[_contentType]; + const valueType = tomlType(value); + if (listType !== valueType) { + throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${listType} and ${valueType}`)); + } + } else { + this.state.resultArr = InlineList(tomlType(value)); + } + if (isFloat2(value) || isInteger2(value)) { + this.state.resultArr.push(value.valueOf()); + } else { + this.state.resultArr.push(value); + } + return this.goto(this.parseInlineListNext); + } + parseInlineListNext() { + if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) { + return null; + } else if (this.char === CHAR_NUM) { + return this.call(this.parseComment); + } else if (this.char === CHAR_COMMA2) { + return this.next(this.parseInlineList); + } else if (this.char === CHAR_RSQB) { + return this.goto(this.parseInlineList); + } else { + throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])")); + } + } + parseInlineTable() { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) { + throw this.error(new TomlError("Unterminated inline array")); + } else if (this.char === CHAR_RCUB) { + return this.return(this.state.resultTable || InlineTable()); + } else { + if (!this.state.resultTable) + this.state.resultTable = InlineTable(); + return this.callNow(this.parseAssign, this.recordInlineTableValue); + } + } + recordInlineTableValue(kv) { + let target = this.state.resultTable; + let finalKey = kv.key.pop(); + for (let kw of kv.key) { + if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) { + throw this.error(new TomlError("Can't redefine existing key")); + } + target = target[kw] = target[kw] || Table(); + } + if (hasKey(target, finalKey)) { + throw this.error(new TomlError("Can't redefine existing key")); + } + if (isInteger2(kv.value) || isFloat2(kv.value)) { + target[finalKey] = kv.value.valueOf(); + } else { + target[finalKey] = kv.value; + } + return this.goto(this.parseInlineTableNext); + } + parseInlineTableNext() { + if (this.char === CHAR_SP || this.char === CTRL_I) { + return null; + } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) { + throw this.error(new TomlError("Unterminated inline array")); + } else if (this.char === CHAR_COMMA2) { + return this.next(this.parseInlineTable); + } else if (this.char === CHAR_RCUB) { + return this.goto(this.parseInlineTable); + } else { + throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])")); + } + } + } + return TOMLParser; + } + } + }); + var require_parse_pretty_error = __commonJS22({ + "node_modules/@iarna/toml/parse-pretty-error.js"(exports2, module22) { + "use strict"; + module22.exports = prettyError; + function prettyError(err, buf) { + if (err.pos == null || err.line == null) + return err; + let msg = err.message; + msg += ` at row ${err.line + 1}, col ${err.col + 1}, pos ${err.pos}: +`; + if (buf && buf.split) { + const lines = buf.split(/\n/); + const lineNumWidth = String(Math.min(lines.length, err.line + 3)).length; + let linePadding = " "; + while (linePadding.length < lineNumWidth) + linePadding += " "; + for (let ii = Math.max(0, err.line - 1); ii < Math.min(lines.length, err.line + 2); ++ii) { + let lineNum = String(ii + 1); + if (lineNum.length < lineNumWidth) + lineNum = " " + lineNum; + if (err.line === ii) { + msg += lineNum + "> " + lines[ii] + "\n"; + msg += linePadding + " "; + for (let hh = 0; hh < err.col; ++hh) { + msg += " "; + } + msg += "^\n"; + } else { + msg += lineNum + ": " + lines[ii] + "\n"; + } + } + } + err.message = msg + "\n"; + return err; + } + } + }); + var require_parse_string = __commonJS22({ + "node_modules/@iarna/toml/parse-string.js"(exports2, module22) { + "use strict"; + module22.exports = parseString; + var TOMLParser = require_toml_parser(); + var prettyError = require_parse_pretty_error(); + function parseString(str2) { + if (global.Buffer && global.Buffer.isBuffer(str2)) { + str2 = str2.toString("utf8"); + } + const parser = new TOMLParser(); + try { + parser.parse(str2); + return parser.finish(); + } catch (err) { + throw prettyError(err, str2); + } + } + } + }); + var require_load_toml = __commonJS22({ + "src/utils/load-toml.js"(exports2, module22) { + "use strict"; + var parse = require_parse_string(); + module22.exports = function(filePath, content) { + try { + return parse(content); + } catch (error2) { + error2.message = `TOML Error in ${filePath}: +${error2.message}`; + throw error2; + } + }; + } + }); + var require_unicode = __commonJS22({ + "node_modules/json5/lib/unicode.js"(exports2, module22) { + module22.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; + module22.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; + module22.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; + } + }); + var require_util22 = __commonJS22({ + "node_modules/json5/lib/util.js"(exports2, module22) { + var unicode = require_unicode(); + module22.exports = { + isSpaceSeparator(c) { + return typeof c === "string" && unicode.Space_Separator.test(c); + }, + isIdStartChar(c) { + return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c === "$" || c === "_" || unicode.ID_Start.test(c)); + }, + isIdContinueChar(c) { + return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c >= "0" && c <= "9" || c === "$" || c === "_" || c === "\u200C" || c === "\u200D" || unicode.ID_Continue.test(c)); + }, + isDigit(c) { + return typeof c === "string" && /[0-9]/.test(c); + }, + isHexDigit(c) { + return typeof c === "string" && /[0-9A-Fa-f]/.test(c); + } + }; + } + }); + var require_parse3 = __commonJS22({ + "node_modules/json5/lib/parse.js"(exports2, module22) { + var util = require_util22(); + var source; + var parseState; + var stack; + var pos; + var line; + var column; + var token; + var key; + var root; + module22.exports = function parse(text, reviver) { + source = String(text); + parseState = "start"; + stack = []; + pos = 0; + line = 1; + column = 0; + token = void 0; + key = void 0; + root = void 0; + do { + token = lex(); + parseStates[parseState](); + } while (token.type !== "eof"); + if (typeof reviver === "function") { + return internalize({ + "": root + }, "", reviver); + } + return root; + }; + function internalize(holder, name, reviver) { + const value = holder[name]; + if (value != null && typeof value === "object") { + for (const key2 in value) { + const replacement = internalize(value, key2, reviver); + if (replacement === void 0) { + delete value[key2]; + } else { + value[key2] = replacement; + } + } + } + return reviver.call(holder, name, value); + } + var lexState; + var buffer; + var doubleQuote; + var sign; + var c; + function lex() { + lexState = "default"; + buffer = ""; + doubleQuote = false; + sign = 1; + for (; ; ) { + c = peek(); + const token2 = lexStates[lexState](); + if (token2) { + return token2; + } + } + } + function peek() { + if (source[pos]) { + return String.fromCodePoint(source.codePointAt(pos)); + } + } + function read() { + const c2 = peek(); + if (c2 === "\n") { + line++; + column = 0; + } else if (c2) { + column += c2.length; + } else { + column++; + } + if (c2) { + pos += c2.length; + } + return c2; + } + var lexStates = { + default() { + switch (c) { + case " ": + case "\v": + case "\f": + case " ": + case "\xA0": + case "\uFEFF": + case "\n": + case "\r": + case "\u2028": + case "\u2029": + read(); + return; + case "/": + read(); + lexState = "comment"; + return; + case void 0: + read(); + return newToken("eof"); + } + if (util.isSpaceSeparator(c)) { + read(); + return; + } + return lexStates[parseState](); + }, + comment() { + switch (c) { + case "*": + read(); + lexState = "multiLineComment"; + return; + case "/": + read(); + lexState = "singleLineComment"; + return; + } + throw invalidChar(read()); + }, + multiLineComment() { + switch (c) { + case "*": + read(); + lexState = "multiLineCommentAsterisk"; + return; + case void 0: + throw invalidChar(read()); + } + read(); + }, + multiLineCommentAsterisk() { + switch (c) { + case "*": + read(); + return; + case "/": + read(); + lexState = "default"; + return; + case void 0: + throw invalidChar(read()); + } + read(); + lexState = "multiLineComment"; + }, + singleLineComment() { + switch (c) { + case "\n": + case "\r": + case "\u2028": + case "\u2029": + read(); + lexState = "default"; + return; + case void 0: + read(); + return newToken("eof"); + } + read(); + }, + value() { + switch (c) { + case "{": + case "[": + return newToken("punctuator", read()); + case "n": + read(); + literal("ull"); + return newToken("null", null); + case "t": + read(); + literal("rue"); + return newToken("boolean", true); + case "f": + read(); + literal("alse"); + return newToken("boolean", false); + case "-": + case "+": + if (read() === "-") { + sign = -1; + } + lexState = "sign"; + return; + case ".": + buffer = read(); + lexState = "decimalPointLeading"; + return; + case "0": + buffer = read(); + lexState = "zero"; + return; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + buffer = read(); + lexState = "decimalInteger"; + return; + case "I": + read(); + literal("nfinity"); + return newToken("numeric", Infinity); + case "N": + read(); + literal("aN"); + return newToken("numeric", NaN); + case '"': + case "'": + doubleQuote = read() === '"'; + buffer = ""; + lexState = "string"; + return; + } + throw invalidChar(read()); + }, + identifierNameStartEscape() { + if (c !== "u") { + throw invalidChar(read()); + } + read(); + const u = unicodeEscape(); + switch (u) { + case "$": + case "_": + break; + default: + if (!util.isIdStartChar(u)) { + throw invalidIdentifier(); + } + break; + } + buffer += u; + lexState = "identifierName"; + }, + identifierName() { + switch (c) { + case "$": + case "_": + case "\u200C": + case "\u200D": + buffer += read(); + return; + case "\\": + read(); + lexState = "identifierNameEscape"; + return; + } + if (util.isIdContinueChar(c)) { + buffer += read(); + return; + } + return newToken("identifier", buffer); + }, + identifierNameEscape() { + if (c !== "u") { + throw invalidChar(read()); + } + read(); + const u = unicodeEscape(); + switch (u) { + case "$": + case "_": + case "\u200C": + case "\u200D": + break; + default: + if (!util.isIdContinueChar(u)) { + throw invalidIdentifier(); + } + break; + } + buffer += u; + lexState = "identifierName"; + }, + sign() { + switch (c) { + case ".": + buffer = read(); + lexState = "decimalPointLeading"; + return; + case "0": + buffer = read(); + lexState = "zero"; + return; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + buffer = read(); + lexState = "decimalInteger"; + return; + case "I": + read(); + literal("nfinity"); + return newToken("numeric", sign * Infinity); + case "N": + read(); + literal("aN"); + return newToken("numeric", NaN); + } + throw invalidChar(read()); + }, + zero() { + switch (c) { + case ".": + buffer += read(); + lexState = "decimalPoint"; + return; + case "e": + case "E": + buffer += read(); + lexState = "decimalExponent"; + return; + case "x": + case "X": + buffer += read(); + lexState = "hexadecimal"; + return; + } + return newToken("numeric", sign * 0); + }, + decimalInteger() { + switch (c) { + case ".": + buffer += read(); + lexState = "decimalPoint"; + return; + case "e": + case "E": + buffer += read(); + lexState = "decimalExponent"; + return; + } + if (util.isDigit(c)) { + buffer += read(); + return; + } + return newToken("numeric", sign * Number(buffer)); + }, + decimalPointLeading() { + if (util.isDigit(c)) { + buffer += read(); + lexState = "decimalFraction"; + return; + } + throw invalidChar(read()); + }, + decimalPoint() { + switch (c) { + case "e": + case "E": + buffer += read(); + lexState = "decimalExponent"; + return; + } + if (util.isDigit(c)) { + buffer += read(); + lexState = "decimalFraction"; + return; + } + return newToken("numeric", sign * Number(buffer)); + }, + decimalFraction() { + switch (c) { + case "e": + case "E": + buffer += read(); + lexState = "decimalExponent"; + return; + } + if (util.isDigit(c)) { + buffer += read(); + return; + } + return newToken("numeric", sign * Number(buffer)); + }, + decimalExponent() { + switch (c) { + case "+": + case "-": + buffer += read(); + lexState = "decimalExponentSign"; + return; + } + if (util.isDigit(c)) { + buffer += read(); + lexState = "decimalExponentInteger"; + return; + } + throw invalidChar(read()); + }, + decimalExponentSign() { + if (util.isDigit(c)) { + buffer += read(); + lexState = "decimalExponentInteger"; + return; + } + throw invalidChar(read()); + }, + decimalExponentInteger() { + if (util.isDigit(c)) { + buffer += read(); + return; + } + return newToken("numeric", sign * Number(buffer)); + }, + hexadecimal() { + if (util.isHexDigit(c)) { + buffer += read(); + lexState = "hexadecimalInteger"; + return; + } + throw invalidChar(read()); + }, + hexadecimalInteger() { + if (util.isHexDigit(c)) { + buffer += read(); + return; + } + return newToken("numeric", sign * Number(buffer)); + }, + string() { + switch (c) { + case "\\": + read(); + buffer += escape(); + return; + case '"': + if (doubleQuote) { + read(); + return newToken("string", buffer); + } + buffer += read(); + return; + case "'": + if (!doubleQuote) { + read(); + return newToken("string", buffer); + } + buffer += read(); + return; + case "\n": + case "\r": + throw invalidChar(read()); + case "\u2028": + case "\u2029": + separatorChar(c); + break; + case void 0: + throw invalidChar(read()); + } + buffer += read(); + }, + start() { + switch (c) { + case "{": + case "[": + return newToken("punctuator", read()); + } + lexState = "value"; + }, + beforePropertyName() { + switch (c) { + case "$": + case "_": + buffer = read(); + lexState = "identifierName"; + return; + case "\\": + read(); + lexState = "identifierNameStartEscape"; + return; + case "}": + return newToken("punctuator", read()); + case '"': + case "'": + doubleQuote = read() === '"'; + lexState = "string"; + return; + } + if (util.isIdStartChar(c)) { + buffer += read(); + lexState = "identifierName"; + return; + } + throw invalidChar(read()); + }, + afterPropertyName() { + if (c === ":") { + return newToken("punctuator", read()); + } + throw invalidChar(read()); + }, + beforePropertyValue() { + lexState = "value"; + }, + afterPropertyValue() { + switch (c) { + case ",": + case "}": + return newToken("punctuator", read()); + } + throw invalidChar(read()); + }, + beforeArrayValue() { + if (c === "]") { + return newToken("punctuator", read()); + } + lexState = "value"; + }, + afterArrayValue() { + switch (c) { + case ",": + case "]": + return newToken("punctuator", read()); + } + throw invalidChar(read()); + }, + end() { + throw invalidChar(read()); + } + }; + function newToken(type2, value) { + return { + type: type2, + value, + line, + column + }; + } + function literal(s) { + for (const c2 of s) { + const p = peek(); + if (p !== c2) { + throw invalidChar(read()); + } + read(); + } + } + function escape() { + const c2 = peek(); + switch (c2) { + case "b": + read(); + return "\b"; + case "f": + read(); + return "\f"; + case "n": + read(); + return "\n"; + case "r": + read(); + return "\r"; + case "t": + read(); + return " "; + case "v": + read(); + return "\v"; + case "0": + read(); + if (util.isDigit(peek())) { + throw invalidChar(read()); + } + return "\0"; + case "x": + read(); + return hexEscape(); + case "u": + read(); + return unicodeEscape(); + case "\n": + case "\u2028": + case "\u2029": + read(); + return ""; + case "\r": + read(); + if (peek() === "\n") { + read(); + } + return ""; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + throw invalidChar(read()); + case void 0: + throw invalidChar(read()); + } + return read(); + } + function hexEscape() { + let buffer2 = ""; + let c2 = peek(); + if (!util.isHexDigit(c2)) { + throw invalidChar(read()); + } + buffer2 += read(); + c2 = peek(); + if (!util.isHexDigit(c2)) { + throw invalidChar(read()); + } + buffer2 += read(); + return String.fromCodePoint(parseInt(buffer2, 16)); + } + function unicodeEscape() { + let buffer2 = ""; + let count = 4; + while (count-- > 0) { + const c2 = peek(); + if (!util.isHexDigit(c2)) { + throw invalidChar(read()); + } + buffer2 += read(); + } + return String.fromCodePoint(parseInt(buffer2, 16)); + } + var parseStates = { + start() { + if (token.type === "eof") { + throw invalidEOF(); + } + push(); + }, + beforePropertyName() { + switch (token.type) { + case "identifier": + case "string": + key = token.value; + parseState = "afterPropertyName"; + return; + case "punctuator": + pop(); + return; + case "eof": + throw invalidEOF(); + } + }, + afterPropertyName() { + if (token.type === "eof") { + throw invalidEOF(); + } + parseState = "beforePropertyValue"; + }, + beforePropertyValue() { + if (token.type === "eof") { + throw invalidEOF(); + } + push(); + }, + beforeArrayValue() { + if (token.type === "eof") { + throw invalidEOF(); + } + if (token.type === "punctuator" && token.value === "]") { + pop(); + return; + } + push(); + }, + afterPropertyValue() { + if (token.type === "eof") { + throw invalidEOF(); + } + switch (token.value) { + case ",": + parseState = "beforePropertyName"; + return; + case "}": + pop(); + } + }, + afterArrayValue() { + if (token.type === "eof") { + throw invalidEOF(); + } + switch (token.value) { + case ",": + parseState = "beforeArrayValue"; + return; + case "]": + pop(); + } + }, + end() { + } + }; + function push() { + let value; + switch (token.type) { + case "punctuator": + switch (token.value) { + case "{": + value = {}; + break; + case "[": + value = []; + break; + } + break; + case "null": + case "boolean": + case "numeric": + case "string": + value = token.value; + break; + } + if (root === void 0) { + root = value; + } else { + const parent = stack[stack.length - 1]; + if (Array.isArray(parent)) { + parent.push(value); + } else { + parent[key] = value; + } + } + if (value !== null && typeof value === "object") { + stack.push(value); + if (Array.isArray(value)) { + parseState = "beforeArrayValue"; + } else { + parseState = "beforePropertyName"; + } + } else { + const current = stack[stack.length - 1]; + if (current == null) { + parseState = "end"; + } else if (Array.isArray(current)) { + parseState = "afterArrayValue"; + } else { + parseState = "afterPropertyValue"; + } + } + } + function pop() { + stack.pop(); + const current = stack[stack.length - 1]; + if (current == null) { + parseState = "end"; + } else if (Array.isArray(current)) { + parseState = "afterArrayValue"; + } else { + parseState = "afterPropertyValue"; + } + } + function invalidChar(c2) { + if (c2 === void 0) { + return syntaxError(`JSON5: invalid end of input at ${line}:${column}`); + } + return syntaxError(`JSON5: invalid character '${formatChar(c2)}' at ${line}:${column}`); + } + function invalidEOF() { + return syntaxError(`JSON5: invalid end of input at ${line}:${column}`); + } + function invalidIdentifier() { + column -= 5; + return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`); + } + function separatorChar(c2) { + console.warn(`JSON5: '${formatChar(c2)}' in strings is not valid ECMAScript; consider escaping`); + } + function formatChar(c2) { + const replacements = { + "'": "\\'", + '"': '\\"', + "\\": "\\\\", + "\b": "\\b", + "\f": "\\f", + "\n": "\\n", + "\r": "\\r", + " ": "\\t", + "\v": "\\v", + "\0": "\\0", + "\u2028": "\\u2028", + "\u2029": "\\u2029" + }; + if (replacements[c2]) { + return replacements[c2]; + } + if (c2 < " ") { + const hexString = c2.charCodeAt(0).toString(16); + return "\\x" + ("00" + hexString).substring(hexString.length); + } + return c2; + } + function syntaxError(message) { + const err = new SyntaxError(message); + err.lineNumber = line; + err.columnNumber = column; + return err; + } + } + }); + var require_stringify22 = __commonJS22({ + "node_modules/json5/lib/stringify.js"(exports2, module22) { + var util = require_util22(); + module22.exports = function stringify(value, replacer, space) { + const stack = []; + let indent = ""; + let propertyList; + let replacerFunc; + let gap = ""; + let quote; + if (replacer != null && typeof replacer === "object" && !Array.isArray(replacer)) { + space = replacer.space; + quote = replacer.quote; + replacer = replacer.replacer; + } + if (typeof replacer === "function") { + replacerFunc = replacer; + } else if (Array.isArray(replacer)) { + propertyList = []; + for (const v of replacer) { + let item; + if (typeof v === "string") { + item = v; + } else if (typeof v === "number" || v instanceof String || v instanceof Number) { + item = String(v); + } + if (item !== void 0 && propertyList.indexOf(item) < 0) { + propertyList.push(item); + } + } + } + if (space instanceof Number) { + space = Number(space); + } else if (space instanceof String) { + space = String(space); + } + if (typeof space === "number") { + if (space > 0) { + space = Math.min(10, Math.floor(space)); + gap = " ".substr(0, space); + } + } else if (typeof space === "string") { + gap = space.substr(0, 10); + } + return serializeProperty("", { + "": value + }); + function serializeProperty(key, holder) { + let value2 = holder[key]; + if (value2 != null) { + if (typeof value2.toJSON5 === "function") { + value2 = value2.toJSON5(key); + } else if (typeof value2.toJSON === "function") { + value2 = value2.toJSON(key); + } + } + if (replacerFunc) { + value2 = replacerFunc.call(holder, key, value2); + } + if (value2 instanceof Number) { + value2 = Number(value2); + } else if (value2 instanceof String) { + value2 = String(value2); + } else if (value2 instanceof Boolean) { + value2 = value2.valueOf(); + } + switch (value2) { + case null: + return "null"; + case true: + return "true"; + case false: + return "false"; + } + if (typeof value2 === "string") { + return quoteString(value2, false); + } + if (typeof value2 === "number") { + return String(value2); + } + if (typeof value2 === "object") { + return Array.isArray(value2) ? serializeArray(value2) : serializeObject(value2); + } + return void 0; + } + function quoteString(value2) { + const quotes = { + "'": 0.1, + '"': 0.2 + }; + const replacements = { + "'": "\\'", + '"': '\\"', + "\\": "\\\\", + "\b": "\\b", + "\f": "\\f", + "\n": "\\n", + "\r": "\\r", + " ": "\\t", + "\v": "\\v", + "\0": "\\0", + "\u2028": "\\u2028", + "\u2029": "\\u2029" + }; + let product = ""; + for (let i = 0; i < value2.length; i++) { + const c = value2[i]; + switch (c) { + case "'": + case '"': + quotes[c]++; + product += c; + continue; + case "\0": + if (util.isDigit(value2[i + 1])) { + product += "\\x00"; + continue; + } + } + if (replacements[c]) { + product += replacements[c]; + continue; + } + if (c < " ") { + let hexString = c.charCodeAt(0).toString(16); + product += "\\x" + ("00" + hexString).substring(hexString.length); + continue; + } + product += c; + } + const quoteChar = quote || Object.keys(quotes).reduce((a, b) => quotes[a] < quotes[b] ? a : b); + product = product.replace(new RegExp(quoteChar, "g"), replacements[quoteChar]); + return quoteChar + product + quoteChar; + } + function serializeObject(value2) { + if (stack.indexOf(value2) >= 0) { + throw TypeError("Converting circular structure to JSON5"); + } + stack.push(value2); + let stepback = indent; + indent = indent + gap; + let keys = propertyList || Object.keys(value2); + let partial = []; + for (const key of keys) { + const propertyString = serializeProperty(key, value2); + if (propertyString !== void 0) { + let member = serializeKey(key) + ":"; + if (gap !== "") { + member += " "; + } + member += propertyString; + partial.push(member); + } + } + let final; + if (partial.length === 0) { + final = "{}"; + } else { + let properties; + if (gap === "") { + properties = partial.join(","); + final = "{" + properties + "}"; + } else { + let separator = ",\n" + indent; + properties = partial.join(separator); + final = "{\n" + indent + properties + ",\n" + stepback + "}"; + } + } + stack.pop(); + indent = stepback; + return final; + } + function serializeKey(key) { + if (key.length === 0) { + return quoteString(key, true); + } + const firstChar = String.fromCodePoint(key.codePointAt(0)); + if (!util.isIdStartChar(firstChar)) { + return quoteString(key, true); + } + for (let i = firstChar.length; i < key.length; i++) { + if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { + return quoteString(key, true); + } + } + return key; + } + function serializeArray(value2) { + if (stack.indexOf(value2) >= 0) { + throw TypeError("Converting circular structure to JSON5"); + } + stack.push(value2); + let stepback = indent; + indent = indent + gap; + let partial = []; + for (let i = 0; i < value2.length; i++) { + const propertyString = serializeProperty(String(i), value2); + partial.push(propertyString !== void 0 ? propertyString : "null"); + } + let final; + if (partial.length === 0) { + final = "[]"; + } else { + if (gap === "") { + let properties = partial.join(","); + final = "[" + properties + "]"; + } else { + let separator = ",\n" + indent; + let properties = partial.join(separator); + final = "[\n" + indent + properties + ",\n" + stepback + "]"; + } + } + stack.pop(); + indent = stepback; + return final; + } + }; + } + }); + var require_lib6 = __commonJS22({ + "node_modules/json5/lib/index.js"(exports2, module22) { + var parse = require_parse3(); + var stringify = require_stringify22(); + var JSON5 = { + parse, + stringify + }; + module22.exports = JSON5; + } + }); + var require_load_json5 = __commonJS22({ + "src/utils/load-json5.js"(exports2, module22) { + "use strict"; + var { + parse + } = require_lib6(); + module22.exports = function(filePath, content) { + try { + return parse(content); + } catch (error2) { + error2.message = `JSON5 Error in ${filePath}: +${error2.message}`; + throw error2; + } + }; + } + }); + var require_partition = __commonJS22({ + "src/utils/partition.js"(exports2, module22) { + "use strict"; + function partition(array, predicate) { + const result = [[], []]; + for (const value of array) { + result[predicate(value) ? 0 : 1].push(value); + } + return result; + } + module22.exports = partition; + } + }); + var require_homedir = __commonJS22({ + "node_modules/resolve/lib/homedir.js"(exports2, module22) { + "use strict"; + var os = require("os"); + module22.exports = os.homedir || function homedir() { + var home = process.env.HOME; + var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME; + if (process.platform === "win32") { + return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null; + } + if (process.platform === "darwin") { + return home || (user ? "/Users/" + user : null); + } + if (process.platform === "linux") { + return home || (process.getuid() === 0 ? "/root" : user ? "/home/" + user : null); + } + return home || null; + }; + } + }); + var require_caller = __commonJS22({ + "node_modules/resolve/lib/caller.js"(exports2, module22) { + module22.exports = function() { + var origPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function(_, stack2) { + return stack2; + }; + var stack = new Error().stack; + Error.prepareStackTrace = origPrepareStackTrace; + return stack[2].getFileName(); + }; + } + }); + var require_path_parse = __commonJS22({ + "node_modules/path-parse/index.js"(exports2, module22) { + "use strict"; + var isWindows = process.platform === "win32"; + var splitWindowsRe = /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; + var win32 = {}; + function win32SplitPath(filename) { + return splitWindowsRe.exec(filename).slice(1); + } + win32.parse = function(pathString) { + if (typeof pathString !== "string") { + throw new TypeError("Parameter 'pathString' must be a string, not " + typeof pathString); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; + }; + var splitPathRe = /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; + var posix = {}; + function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); + } + posix.parse = function(pathString) { + if (typeof pathString !== "string") { + throw new TypeError("Parameter 'pathString' must be a string, not " + typeof pathString); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; + }; + if (isWindows) + module22.exports = win32.parse; + else + module22.exports = posix.parse; + module22.exports.posix = posix.parse; + module22.exports.win32 = win32.parse; + } + }); + var require_node_modules_paths = __commonJS22({ + "node_modules/resolve/lib/node-modules-paths.js"(exports2, module22) { + var path2 = require("path"); + var parse = path2.parse || require_path_parse(); + var getNodeModulesDirs = function getNodeModulesDirs2(absoluteStart, modules) { + var prefix = "/"; + if (/^([A-Za-z]:)/.test(absoluteStart)) { + prefix = ""; + } else if (/^\\\\/.test(absoluteStart)) { + prefix = "\\\\"; + } + var paths = [absoluteStart]; + var parsed = parse(absoluteStart); + while (parsed.dir !== paths[paths.length - 1]) { + paths.push(parsed.dir); + parsed = parse(parsed.dir); + } + return paths.reduce(function(dirs, aPath) { + return dirs.concat(modules.map(function(moduleDir) { + return path2.resolve(prefix, aPath, moduleDir); + })); + }, []); + }; + module22.exports = function nodeModulesPaths(start, opts, request) { + var modules = opts && opts.moduleDirectory ? [].concat(opts.moduleDirectory) : ["node_modules"]; + if (opts && typeof opts.paths === "function") { + return opts.paths(request, start, function() { + return getNodeModulesDirs(start, modules); + }, opts); + } + var dirs = getNodeModulesDirs(start, modules); + return opts && opts.paths ? dirs.concat(opts.paths) : dirs; + }; + } + }); + var require_normalize_options = __commonJS22({ + "node_modules/resolve/lib/normalize-options.js"(exports2, module22) { + module22.exports = function(x, opts) { + return opts || {}; + }; + } + }); + var require_implementation = __commonJS22({ + "node_modules/function-bind/implementation.js"(exports2, module22) { + "use strict"; + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var slice = Array.prototype.slice; + var toStr = Object.prototype.toString; + var funcType = "[object Function]"; + module22.exports = function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.call(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slice.call(arguments, 1); + var bound; + var binder = function() { + if (this instanceof bound) { + var result = target.apply(this, args.concat(slice.call(arguments))); + if (Object(result) === result) { + return result; + } + return this; + } else { + return target.apply(that, args.concat(slice.call(arguments))); + } + }; + var boundLength = Math.max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs.push("$" + i); + } + bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = function Empty2() { + }; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + return bound; + }; + } + }); + var require_function_bind = __commonJS22({ + "node_modules/function-bind/index.js"(exports2, module22) { + "use strict"; + var implementation = require_implementation(); + module22.exports = Function.prototype.bind || implementation; + } + }); + var require_src = __commonJS22({ + "node_modules/has/src/index.js"(exports2, module22) { + "use strict"; + var bind = require_function_bind(); + module22.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + } + }); + var require_core22 = __commonJS22({ + "node_modules/is-core-module/core.json"(exports2, module22) { + module22.exports = { + assert: true, + "node:assert": [">= 14.18 && < 15", ">= 16"], + "assert/strict": ">= 15", + "node:assert/strict": ">= 16", + async_hooks: ">= 8", + "node:async_hooks": [">= 14.18 && < 15", ">= 16"], + buffer_ieee754: ">= 0.5 && < 0.9.7", + buffer: true, + "node:buffer": [">= 14.18 && < 15", ">= 16"], + child_process: true, + "node:child_process": [">= 14.18 && < 15", ">= 16"], + cluster: ">= 0.5", + "node:cluster": [">= 14.18 && < 15", ">= 16"], + console: true, + "node:console": [">= 14.18 && < 15", ">= 16"], + constants: true, + "node:constants": [">= 14.18 && < 15", ">= 16"], + crypto: true, + "node:crypto": [">= 14.18 && < 15", ">= 16"], + _debug_agent: ">= 1 && < 8", + _debugger: "< 8", + dgram: true, + "node:dgram": [">= 14.18 && < 15", ">= 16"], + diagnostics_channel: [">= 14.17 && < 15", ">= 15.1"], + "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"], + dns: true, + "node:dns": [">= 14.18 && < 15", ">= 16"], + "dns/promises": ">= 15", + "node:dns/promises": ">= 16", + domain: ">= 0.7.12", + "node:domain": [">= 14.18 && < 15", ">= 16"], + events: true, + "node:events": [">= 14.18 && < 15", ">= 16"], + freelist: "< 6", + fs: true, + "node:fs": [">= 14.18 && < 15", ">= 16"], + "fs/promises": [">= 10 && < 10.1", ">= 14"], + "node:fs/promises": [">= 14.18 && < 15", ">= 16"], + _http_agent: ">= 0.11.1", + "node:_http_agent": [">= 14.18 && < 15", ">= 16"], + _http_client: ">= 0.11.1", + "node:_http_client": [">= 14.18 && < 15", ">= 16"], + _http_common: ">= 0.11.1", + "node:_http_common": [">= 14.18 && < 15", ">= 16"], + _http_incoming: ">= 0.11.1", + "node:_http_incoming": [">= 14.18 && < 15", ">= 16"], + _http_outgoing: ">= 0.11.1", + "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"], + _http_server: ">= 0.11.1", + "node:_http_server": [">= 14.18 && < 15", ">= 16"], + http: true, + "node:http": [">= 14.18 && < 15", ">= 16"], + http2: ">= 8.8", + "node:http2": [">= 14.18 && < 15", ">= 16"], + https: true, + "node:https": [">= 14.18 && < 15", ">= 16"], + inspector: ">= 8", + "node:inspector": [">= 14.18 && < 15", ">= 16"], + _linklist: "< 8", + module: true, + "node:module": [">= 14.18 && < 15", ">= 16"], + net: true, + "node:net": [">= 14.18 && < 15", ">= 16"], + "node-inspect/lib/_inspect": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12", + os: true, + "node:os": [">= 14.18 && < 15", ">= 16"], + path: true, + "node:path": [">= 14.18 && < 15", ">= 16"], + "path/posix": ">= 15.3", + "node:path/posix": ">= 16", + "path/win32": ">= 15.3", + "node:path/win32": ">= 16", + perf_hooks: ">= 8.5", + "node:perf_hooks": [">= 14.18 && < 15", ">= 16"], + process: ">= 1", + "node:process": [">= 14.18 && < 15", ">= 16"], + punycode: ">= 0.5", + "node:punycode": [">= 14.18 && < 15", ">= 16"], + querystring: true, + "node:querystring": [">= 14.18 && < 15", ">= 16"], + readline: true, + "node:readline": [">= 14.18 && < 15", ">= 16"], + "readline/promises": ">= 17", + "node:readline/promises": ">= 17", + repl: true, + "node:repl": [">= 14.18 && < 15", ">= 16"], + smalloc: ">= 0.11.5 && < 3", + _stream_duplex: ">= 0.9.4", + "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"], + _stream_transform: ">= 0.9.4", + "node:_stream_transform": [">= 14.18 && < 15", ">= 16"], + _stream_wrap: ">= 1.4.1", + "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"], + _stream_passthrough: ">= 0.9.4", + "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"], + _stream_readable: ">= 0.9.4", + "node:_stream_readable": [">= 14.18 && < 15", ">= 16"], + _stream_writable: ">= 0.9.4", + "node:_stream_writable": [">= 14.18 && < 15", ">= 16"], + stream: true, + "node:stream": [">= 14.18 && < 15", ">= 16"], + "stream/consumers": ">= 16.7", + "node:stream/consumers": ">= 16.7", + "stream/promises": ">= 15", + "node:stream/promises": ">= 16", + "stream/web": ">= 16.5", + "node:stream/web": ">= 16.5", + string_decoder: true, + "node:string_decoder": [">= 14.18 && < 15", ">= 16"], + sys: [">= 0.4 && < 0.7", ">= 0.8"], + "node:sys": [">= 14.18 && < 15", ">= 16"], + timers: true, + "node:timers": [">= 14.18 && < 15", ">= 16"], + "timers/promises": ">= 15", + "node:timers/promises": ">= 16", + _tls_common: ">= 0.11.13", + "node:_tls_common": [">= 14.18 && < 15", ">= 16"], + _tls_legacy: ">= 0.11.3 && < 10", + _tls_wrap: ">= 0.11.3", + "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"], + tls: true, + "node:tls": [">= 14.18 && < 15", ">= 16"], + trace_events: ">= 10", + "node:trace_events": [">= 14.18 && < 15", ">= 16"], + tty: true, + "node:tty": [">= 14.18 && < 15", ">= 16"], + url: true, + "node:url": [">= 14.18 && < 15", ">= 16"], + util: true, + "node:util": [">= 14.18 && < 15", ">= 16"], + "util/types": ">= 15.3", + "node:util/types": ">= 16", + "v8/tools/arguments": ">= 10 && < 12", + "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"], + v8: ">= 1", + "node:v8": [">= 14.18 && < 15", ">= 16"], + vm: true, + "node:vm": [">= 14.18 && < 15", ">= 16"], + wasi: ">= 13.4 && < 13.5", + worker_threads: ">= 11.7", + "node:worker_threads": [">= 14.18 && < 15", ">= 16"], + zlib: ">= 0.5", + "node:zlib": [">= 14.18 && < 15", ">= 16"] + }; + } + }); + var require_is_core_module = __commonJS22({ + "node_modules/is-core-module/index.js"(exports2, module22) { + "use strict"; + var has = require_src(); + function specifierIncluded(current, specifier) { + var nodeParts = current.split("."); + var parts = specifier.split(" "); + var op = parts.length > 1 ? parts[0] : "="; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split("."); + for (var i = 0; i < 3; ++i) { + var cur = parseInt(nodeParts[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; + } + if (op === "<") { + return cur < ver; + } + if (op === ">=") { + return cur >= ver; + } + return false; + } + return op === ">="; + } + function matchesRange(current, range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(current, specifiers[i])) { + return false; + } + } + return true; + } + function versionIncluded(nodeVersion, specifierValue) { + if (typeof specifierValue === "boolean") { + return specifierValue; + } + var current = typeof nodeVersion === "undefined" ? process.versions && process.versions.node : nodeVersion; + if (typeof current !== "string") { + throw new TypeError(typeof nodeVersion === "undefined" ? "Unable to determine current node version" : "If provided, a valid node version is required"); + } + if (specifierValue && typeof specifierValue === "object") { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(current, specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(current, specifierValue); + } + var data = require_core22(); + module22.exports = function isCore(x, nodeVersion) { + return has(data, x) && versionIncluded(nodeVersion, data[x]); + }; + } + }); + var require_async2 = __commonJS22({ + "node_modules/resolve/lib/async.js"(exports2, module22) { + var fs5 = require("fs"); + var getHomedir = require_homedir(); + var path2 = require("path"); + var caller = require_caller(); + var nodeModulesPaths = require_node_modules_paths(); + var normalizeOptions = require_normalize_options(); + var isCore = require_is_core_module(); + var realpathFS = fs5.realpath && typeof fs5.realpath.native === "function" ? fs5.realpath.native : fs5.realpath; + var homedir = getHomedir(); + var defaultPaths = function() { + return [path2.join(homedir, ".node_modules"), path2.join(homedir, ".node_libraries")]; + }; + var defaultIsFile = function isFile(file, cb) { + fs5.stat(file, function(err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); + } + if (err.code === "ENOENT" || err.code === "ENOTDIR") + return cb(null, false); + return cb(err); + }); + }; + var defaultIsDir = function isDirectory(dir, cb) { + fs5.stat(dir, function(err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === "ENOENT" || err.code === "ENOTDIR") + return cb(null, false); + return cb(err); + }); + }; + var defaultRealpath = function realpath(x, cb) { + realpathFS(x, function(realpathErr, realPath) { + if (realpathErr && realpathErr.code !== "ENOENT") + cb(realpathErr); + else + cb(null, realpathErr ? x : realPath); + }); + }; + var maybeRealpath = function maybeRealpath2(realpath, x, opts, cb) { + if (opts && opts.preserveSymlinks === false) { + realpath(x, cb); + } else { + cb(null, x); + } + }; + var defaultReadPackage = function defaultReadPackage2(readFile, pkgfile, cb) { + readFile(pkgfile, function(readFileErr, body) { + if (readFileErr) + cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } + } + }); + }; + var getPackageCandidates = function getPackageCandidates2(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path2.join(dirs[i], x); + } + return dirs; + }; + module22.exports = function resolve(x, options, callback) { + var cb = callback; + var opts = options; + if (typeof options === "function") { + cb = opts; + opts = {}; + } + if (typeof x !== "string") { + var err = new TypeError("Path must be a string."); + return process.nextTick(function() { + cb(err); + }); + } + opts = normalizeOptions(x, opts); + var isFile = opts.isFile || defaultIsFile; + var isDirectory = opts.isDirectory || defaultIsDir; + var readFile = opts.readFile || fs5.readFile; + var realpath = opts.realpath || defaultRealpath; + var readPackage = opts.readPackage || defaultReadPackage; + if (opts.readFile && opts.readPackage) { + var conflictErr = new TypeError("`readFile` and `readPackage` are mutually exclusive."); + return process.nextTick(function() { + cb(conflictErr); + }); + } + var packageIterator = opts.packageIterator; + var extensions = opts.extensions || [".js"]; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path2.dirname(caller()); + var parent = opts.filename || basedir; + opts.paths = opts.paths || defaultPaths(); + var absoluteStart = path2.resolve(basedir); + maybeRealpath(realpath, absoluteStart, opts, function(err2, realStart) { + if (err2) + cb(err2); + else + init(realStart); + }); + var res; + function init(basedir2) { + if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) { + res = path2.resolve(basedir2, x); + if (x === "." || x === ".." || x.slice(-1) === "/") + res += "/"; + if (/\/$/.test(x) && res === basedir2) { + loadAsDirectory(res, opts.package, onfile); + } else + loadAsFile(res, opts.package, onfile); + } else if (includeCoreModules && isCore(x)) { + return cb(null, x); + } else + loadNodeModules(x, basedir2, function(err2, n, pkg) { + if (err2) + cb(err2); + else if (n) { + return maybeRealpath(realpath, n, opts, function(err3, realN) { + if (err3) { + cb(err3); + } else { + cb(null, realN, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = "MODULE_NOT_FOUND"; + cb(moduleError); + } + }); + } + function onfile(err2, m, pkg) { + if (err2) + cb(err2); + else if (m) + cb(null, m, pkg); + else + loadAsDirectory(res, function(err3, d, pkg2) { + if (err3) + cb(err3); + else if (d) { + maybeRealpath(realpath, d, opts, function(err4, realD) { + if (err4) { + cb(err4); + } else { + cb(null, realD, pkg2); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = "MODULE_NOT_FOUND"; + cb(moduleError); + } + }); + } + function loadAsFile(x2, thePackage, callback2) { + var loadAsFilePackage = thePackage; + var cb2 = callback2; + if (typeof loadAsFilePackage === "function") { + cb2 = loadAsFilePackage; + loadAsFilePackage = void 0; + } + var exts = [""].concat(extensions); + load2(exts, x2, loadAsFilePackage); + function load2(exts2, x3, loadPackage) { + if (exts2.length === 0) + return cb2(null, void 0, loadPackage); + var file = x3 + exts2[0]; + var pkg = loadPackage; + if (pkg) + onpkg(null, pkg); + else + loadpkg(path2.dirname(file), onpkg); + function onpkg(err2, pkg_, dir) { + pkg = pkg_; + if (err2) + return cb2(err2); + if (dir && pkg && opts.pathFilter) { + var rfile = path2.relative(dir, file); + var rel = rfile.slice(0, rfile.length - exts2[0].length); + var r = opts.pathFilter(pkg, x3, rel); + if (r) + return load2([""].concat(extensions.slice()), path2.resolve(dir, r), pkg); + } + isFile(file, onex); + } + function onex(err2, ex) { + if (err2) + return cb2(err2); + if (ex) + return cb2(null, file, pkg); + load2(exts2.slice(1), x3, pkg); + } + } + } + function loadpkg(dir, cb2) { + if (dir === "" || dir === "/") + return cb2(null); + if (process.platform === "win32" && /^\w:[/\\]*$/.test(dir)) { + return cb2(null); + } + if (/[/\\]node_modules[/\\]*$/.test(dir)) + return cb2(null); + maybeRealpath(realpath, dir, opts, function(unwrapErr, pkgdir) { + if (unwrapErr) + return loadpkg(path2.dirname(dir), cb2); + var pkgfile = path2.join(pkgdir, "package.json"); + isFile(pkgfile, function(err2, ex) { + if (!ex) + return loadpkg(path2.dirname(dir), cb2); + readPackage(readFile, pkgfile, function(err3, pkgParam) { + if (err3) + cb2(err3); + var pkg = pkgParam; + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + cb2(null, pkg, dir); + }); + }); + }); + } + function loadAsDirectory(x2, loadAsDirectoryPackage, callback2) { + var cb2 = callback2; + var fpkg = loadAsDirectoryPackage; + if (typeof fpkg === "function") { + cb2 = fpkg; + fpkg = opts.package; + } + maybeRealpath(realpath, x2, opts, function(unwrapErr, pkgdir) { + if (unwrapErr) + return cb2(unwrapErr); + var pkgfile = path2.join(pkgdir, "package.json"); + isFile(pkgfile, function(err2, ex) { + if (err2) + return cb2(err2); + if (!ex) + return loadAsFile(path2.join(x2, "index"), fpkg, cb2); + readPackage(readFile, pkgfile, function(err3, pkgParam) { + if (err3) + return cb2(err3); + var pkg = pkgParam; + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + if (pkg && pkg.main) { + if (typeof pkg.main !== "string") { + var mainError = new TypeError("package \u201C" + pkg.name + "\u201D `main` must be a string"); + mainError.code = "INVALID_PACKAGE_MAIN"; + return cb2(mainError); + } + if (pkg.main === "." || pkg.main === "./") { + pkg.main = "index"; + } + loadAsFile(path2.resolve(x2, pkg.main), pkg, function(err4, m, pkg2) { + if (err4) + return cb2(err4); + if (m) + return cb2(null, m, pkg2); + if (!pkg2) + return loadAsFile(path2.join(x2, "index"), pkg2, cb2); + var dir = path2.resolve(x2, pkg2.main); + loadAsDirectory(dir, pkg2, function(err5, n, pkg3) { + if (err5) + return cb2(err5); + if (n) + return cb2(null, n, pkg3); + loadAsFile(path2.join(x2, "index"), pkg3, cb2); + }); + }); + return; + } + loadAsFile(path2.join(x2, "/index"), pkg, cb2); + }); + }); + }); + } + function processDirs(cb2, dirs) { + if (dirs.length === 0) + return cb2(null, void 0); + var dir = dirs[0]; + isDirectory(path2.dirname(dir), isdir); + function isdir(err2, isdir2) { + if (err2) + return cb2(err2); + if (!isdir2) + return processDirs(cb2, dirs.slice(1)); + loadAsFile(dir, opts.package, onfile2); + } + function onfile2(err2, m, pkg) { + if (err2) + return cb2(err2); + if (m) + return cb2(null, m, pkg); + loadAsDirectory(dir, opts.package, ondir); + } + function ondir(err2, n, pkg) { + if (err2) + return cb2(err2); + if (n) + return cb2(null, n, pkg); + processDirs(cb2, dirs.slice(1)); + } + } + function loadNodeModules(x2, start, cb2) { + var thunk = function() { + return getPackageCandidates(x2, start, opts); + }; + processDirs(cb2, packageIterator ? packageIterator(x2, start, thunk, opts) : thunk()); + } + }; + } + }); + var require_core3 = __commonJS22({ + "node_modules/resolve/lib/core.json"(exports2, module22) { + module22.exports = { + assert: true, + "node:assert": [">= 14.18 && < 15", ">= 16"], + "assert/strict": ">= 15", + "node:assert/strict": ">= 16", + async_hooks: ">= 8", + "node:async_hooks": [">= 14.18 && < 15", ">= 16"], + buffer_ieee754: ">= 0.5 && < 0.9.7", + buffer: true, + "node:buffer": [">= 14.18 && < 15", ">= 16"], + child_process: true, + "node:child_process": [">= 14.18 && < 15", ">= 16"], + cluster: ">= 0.5", + "node:cluster": [">= 14.18 && < 15", ">= 16"], + console: true, + "node:console": [">= 14.18 && < 15", ">= 16"], + constants: true, + "node:constants": [">= 14.18 && < 15", ">= 16"], + crypto: true, + "node:crypto": [">= 14.18 && < 15", ">= 16"], + _debug_agent: ">= 1 && < 8", + _debugger: "< 8", + dgram: true, + "node:dgram": [">= 14.18 && < 15", ">= 16"], + diagnostics_channel: [">= 14.17 && < 15", ">= 15.1"], + "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"], + dns: true, + "node:dns": [">= 14.18 && < 15", ">= 16"], + "dns/promises": ">= 15", + "node:dns/promises": ">= 16", + domain: ">= 0.7.12", + "node:domain": [">= 14.18 && < 15", ">= 16"], + events: true, + "node:events": [">= 14.18 && < 15", ">= 16"], + freelist: "< 6", + fs: true, + "node:fs": [">= 14.18 && < 15", ">= 16"], + "fs/promises": [">= 10 && < 10.1", ">= 14"], + "node:fs/promises": [">= 14.18 && < 15", ">= 16"], + _http_agent: ">= 0.11.1", + "node:_http_agent": [">= 14.18 && < 15", ">= 16"], + _http_client: ">= 0.11.1", + "node:_http_client": [">= 14.18 && < 15", ">= 16"], + _http_common: ">= 0.11.1", + "node:_http_common": [">= 14.18 && < 15", ">= 16"], + _http_incoming: ">= 0.11.1", + "node:_http_incoming": [">= 14.18 && < 15", ">= 16"], + _http_outgoing: ">= 0.11.1", + "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"], + _http_server: ">= 0.11.1", + "node:_http_server": [">= 14.18 && < 15", ">= 16"], + http: true, + "node:http": [">= 14.18 && < 15", ">= 16"], + http2: ">= 8.8", + "node:http2": [">= 14.18 && < 15", ">= 16"], + https: true, + "node:https": [">= 14.18 && < 15", ">= 16"], + inspector: ">= 8", + "node:inspector": [">= 14.18 && < 15", ">= 16"], + _linklist: "< 8", + module: true, + "node:module": [">= 14.18 && < 15", ">= 16"], + net: true, + "node:net": [">= 14.18 && < 15", ">= 16"], + "node-inspect/lib/_inspect": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12", + "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12", + os: true, + "node:os": [">= 14.18 && < 15", ">= 16"], + path: true, + "node:path": [">= 14.18 && < 15", ">= 16"], + "path/posix": ">= 15.3", + "node:path/posix": ">= 16", + "path/win32": ">= 15.3", + "node:path/win32": ">= 16", + perf_hooks: ">= 8.5", + "node:perf_hooks": [">= 14.18 && < 15", ">= 16"], + process: ">= 1", + "node:process": [">= 14.18 && < 15", ">= 16"], + punycode: ">= 0.5", + "node:punycode": [">= 14.18 && < 15", ">= 16"], + querystring: true, + "node:querystring": [">= 14.18 && < 15", ">= 16"], + readline: true, + "node:readline": [">= 14.18 && < 15", ">= 16"], + "readline/promises": ">= 17", + "node:readline/promises": ">= 17", + repl: true, + "node:repl": [">= 14.18 && < 15", ">= 16"], + smalloc: ">= 0.11.5 && < 3", + _stream_duplex: ">= 0.9.4", + "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"], + _stream_transform: ">= 0.9.4", + "node:_stream_transform": [">= 14.18 && < 15", ">= 16"], + _stream_wrap: ">= 1.4.1", + "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"], + _stream_passthrough: ">= 0.9.4", + "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"], + _stream_readable: ">= 0.9.4", + "node:_stream_readable": [">= 14.18 && < 15", ">= 16"], + _stream_writable: ">= 0.9.4", + "node:_stream_writable": [">= 14.18 && < 15", ">= 16"], + stream: true, + "node:stream": [">= 14.18 && < 15", ">= 16"], + "stream/consumers": ">= 16.7", + "node:stream/consumers": ">= 16.7", + "stream/promises": ">= 15", + "node:stream/promises": ">= 16", + "stream/web": ">= 16.5", + "node:stream/web": ">= 16.5", + string_decoder: true, + "node:string_decoder": [">= 14.18 && < 15", ">= 16"], + sys: [">= 0.4 && < 0.7", ">= 0.8"], + "node:sys": [">= 14.18 && < 15", ">= 16"], + timers: true, + "node:timers": [">= 14.18 && < 15", ">= 16"], + "timers/promises": ">= 15", + "node:timers/promises": ">= 16", + _tls_common: ">= 0.11.13", + "node:_tls_common": [">= 14.18 && < 15", ">= 16"], + _tls_legacy: ">= 0.11.3 && < 10", + _tls_wrap: ">= 0.11.3", + "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"], + tls: true, + "node:tls": [">= 14.18 && < 15", ">= 16"], + trace_events: ">= 10", + "node:trace_events": [">= 14.18 && < 15", ">= 16"], + tty: true, + "node:tty": [">= 14.18 && < 15", ">= 16"], + url: true, + "node:url": [">= 14.18 && < 15", ">= 16"], + util: true, + "node:util": [">= 14.18 && < 15", ">= 16"], + "util/types": ">= 15.3", + "node:util/types": ">= 16", + "v8/tools/arguments": ">= 10 && < 12", + "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"], + "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"], + v8: ">= 1", + "node:v8": [">= 14.18 && < 15", ">= 16"], + vm: true, + "node:vm": [">= 14.18 && < 15", ">= 16"], + wasi: ">= 13.4 && < 13.5", + worker_threads: ">= 11.7", + "node:worker_threads": [">= 14.18 && < 15", ">= 16"], + zlib: ">= 0.5", + "node:zlib": [">= 14.18 && < 15", ">= 16"] + }; + } + }); + var require_core4 = __commonJS22({ + "node_modules/resolve/lib/core.js"(exports2, module22) { + var current = process.versions && process.versions.node && process.versions.node.split(".") || []; + function specifierIncluded(specifier) { + var parts = specifier.split(" "); + var op = parts.length > 1 ? parts[0] : "="; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split("."); + for (var i = 0; i < 3; ++i) { + var cur = parseInt(current[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; + } + if (op === "<") { + return cur < ver; + } else if (op === ">=") { + return cur >= ver; + } + return false; + } + return op === ">="; + } + function matchesRange(range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(specifiers[i])) { + return false; + } + } + return true; + } + function versionIncluded(specifierValue) { + if (typeof specifierValue === "boolean") { + return specifierValue; + } + if (specifierValue && typeof specifierValue === "object") { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(specifierValue); + } + var data = require_core3(); + var core22 = {}; + for (mod in data) { + if (Object.prototype.hasOwnProperty.call(data, mod)) { + core22[mod] = versionIncluded(data[mod]); + } + } + var mod; + module22.exports = core22; + } + }); + var require_is_core = __commonJS22({ + "node_modules/resolve/lib/is-core.js"(exports2, module22) { + var isCoreModule = require_is_core_module(); + module22.exports = function isCore(x) { + return isCoreModule(x); + }; + } + }); + var require_sync2 = __commonJS22({ + "node_modules/resolve/lib/sync.js"(exports2, module22) { + var isCore = require_is_core_module(); + var fs5 = require("fs"); + var path2 = require("path"); + var getHomedir = require_homedir(); + var caller = require_caller(); + var nodeModulesPaths = require_node_modules_paths(); + var normalizeOptions = require_normalize_options(); + var realpathFS = fs5.realpathSync && typeof fs5.realpathSync.native === "function" ? fs5.realpathSync.native : fs5.realpathSync; + var homedir = getHomedir(); + var defaultPaths = function() { + return [path2.join(homedir, ".node_modules"), path2.join(homedir, ".node_libraries")]; + }; + var defaultIsFile = function isFile(file) { + try { + var stat = fs5.statSync(file, { + throwIfNoEntry: false + }); + } catch (e) { + if (e && (e.code === "ENOENT" || e.code === "ENOTDIR")) + return false; + throw e; + } + return !!stat && (stat.isFile() || stat.isFIFO()); + }; + var defaultIsDir = function isDirectory(dir) { + try { + var stat = fs5.statSync(dir, { + throwIfNoEntry: false + }); + } catch (e) { + if (e && (e.code === "ENOENT" || e.code === "ENOTDIR")) + return false; + throw e; + } + return !!stat && stat.isDirectory(); + }; + var defaultRealpathSync = function realpathSync(x) { + try { + return realpathFS(x); + } catch (realpathErr) { + if (realpathErr.code !== "ENOENT") { + throw realpathErr; + } + } + return x; + }; + var maybeRealpathSync = function maybeRealpathSync2(realpathSync, x, opts) { + if (opts && opts.preserveSymlinks === false) { + return realpathSync(x); + } + return x; + }; + var defaultReadPackageSync = function defaultReadPackageSync2(readFileSync5, pkgfile) { + var body = readFileSync5(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) { + } + }; + var getPackageCandidates = function getPackageCandidates2(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path2.join(dirs[i], x); + } + return dirs; + }; + module22.exports = function resolveSync(x, options) { + if (typeof x !== "string") { + throw new TypeError("Path must be a string."); + } + var opts = normalizeOptions(x, options); + var isFile = opts.isFile || defaultIsFile; + var readFileSync5 = opts.readFileSync || fs5.readFileSync; + var isDirectory = opts.isDirectory || defaultIsDir; + var realpathSync = opts.realpathSync || defaultRealpathSync; + var readPackageSync = opts.readPackageSync || defaultReadPackageSync; + if (opts.readFileSync && opts.readPackageSync) { + throw new TypeError("`readFileSync` and `readPackageSync` are mutually exclusive."); + } + var packageIterator = opts.packageIterator; + var extensions = opts.extensions || [".js"]; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path2.dirname(caller()); + var parent = opts.filename || basedir; + opts.paths = opts.paths || defaultPaths(); + var absoluteStart = maybeRealpathSync(realpathSync, path2.resolve(basedir), opts); + if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) { + var res = path2.resolve(absoluteStart, x); + if (x === "." || x === ".." || x.slice(-1) === "/") + res += "/"; + var m = loadAsFileSync(res) || loadAsDirectorySync(res); + if (m) + return maybeRealpathSync(realpathSync, m, opts); + } else if (includeCoreModules && isCore(x)) { + return x; + } else { + var n = loadNodeModulesSync(x, absoluteStart); + if (n) + return maybeRealpathSync(realpathSync, n, opts); + } + var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + err.code = "MODULE_NOT_FOUND"; + throw err; + function loadAsFileSync(x2) { + var pkg = loadpkg(path2.dirname(x2)); + if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { + var rfile = path2.relative(pkg.dir, x2); + var r = opts.pathFilter(pkg.pkg, x2, rfile); + if (r) { + x2 = path2.resolve(pkg.dir, r); + } + } + if (isFile(x2)) { + return x2; + } + for (var i = 0; i < extensions.length; i++) { + var file = x2 + extensions[i]; + if (isFile(file)) { + return file; + } + } + } + function loadpkg(dir) { + if (dir === "" || dir === "/") + return; + if (process.platform === "win32" && /^\w:[/\\]*$/.test(dir)) { + return; + } + if (/[/\\]node_modules[/\\]*$/.test(dir)) + return; + var pkgfile = path2.join(maybeRealpathSync(realpathSync, dir, opts), "package.json"); + if (!isFile(pkgfile)) { + return loadpkg(path2.dirname(dir)); + } + var pkg = readPackageSync(readFileSync5, pkgfile); + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, dir); + } + return { + pkg, + dir + }; + } + function loadAsDirectorySync(x2) { + var pkgfile = path2.join(maybeRealpathSync(realpathSync, x2, opts), "/package.json"); + if (isFile(pkgfile)) { + try { + var pkg = readPackageSync(readFileSync5, pkgfile); + } catch (e) { + } + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, x2); + } + if (pkg && pkg.main) { + if (typeof pkg.main !== "string") { + var mainError = new TypeError("package \u201C" + pkg.name + "\u201D `main` must be a string"); + mainError.code = "INVALID_PACKAGE_MAIN"; + throw mainError; + } + if (pkg.main === "." || pkg.main === "./") { + pkg.main = "index"; + } + try { + var m2 = loadAsFileSync(path2.resolve(x2, pkg.main)); + if (m2) + return m2; + var n2 = loadAsDirectorySync(path2.resolve(x2, pkg.main)); + if (n2) + return n2; + } catch (e) { + } + } + } + return loadAsFileSync(path2.join(x2, "/index")); + } + function loadNodeModulesSync(x2, start) { + var thunk = function() { + return getPackageCandidates(x2, start, opts); + }; + var dirs = packageIterator ? packageIterator(x2, start, thunk, opts) : thunk(); + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + if (isDirectory(path2.dirname(dir))) { + var m2 = loadAsFileSync(dir); + if (m2) + return m2; + var n2 = loadAsDirectorySync(dir); + if (n2) + return n2; + } + } + } + }; + } + }); + var require_resolve = __commonJS22({ + "node_modules/resolve/index.js"(exports2, module22) { + var async = require_async2(); + async.core = require_core4(); + async.isCore = require_is_core(); + async.sync = require_sync2(); + module22.exports = async; + } + }); + var require_resolve2 = __commonJS22({ + "src/common/resolve.js"(exports2, module22) { + "use strict"; + var { + resolve + } = require; + if (resolve.length === 1 || process.env.PRETTIER_FALLBACK_RESOLVE) { + resolve = (id, options) => { + let basedir; + if (options && options.paths && options.paths.length === 1) { + basedir = options.paths[0]; + } + return require_resolve().sync(id, { + basedir + }); + }; + } + module22.exports = resolve; + } + }); + function mimicFunction(to, from, { + ignoreNonConfigurable = false + } = {}) { + const { + name + } = to; + for (const property of Reflect.ownKeys(from)) { + copyProperty(to, from, property, ignoreNonConfigurable); + } + changePrototype(to, from); + changeToString(to, from, name); + return to; + } + var copyProperty; + var canCopyProperty; + var changePrototype; + var wrappedToString; + var toStringDescriptor; + var toStringName; + var changeToString; + var init_mimic_fn = __esm({ + "node_modules/mimic-fn/index.js"() { + copyProperty = (to, from, property, ignoreNonConfigurable) => { + if (property === "length" || property === "prototype") { + return; + } + if (property === "arguments" || property === "caller") { + return; + } + const toDescriptor = Object.getOwnPropertyDescriptor(to, property); + const fromDescriptor = Object.getOwnPropertyDescriptor(from, property); + if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) { + return; + } + Object.defineProperty(to, property, fromDescriptor); + }; + canCopyProperty = function(toDescriptor, fromDescriptor) { + return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value); + }; + changePrototype = (to, from) => { + const fromPrototype = Object.getPrototypeOf(from); + if (fromPrototype === Object.getPrototypeOf(to)) { + return; + } + Object.setPrototypeOf(to, fromPrototype); + }; + wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/ +${fromBody}`; + toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString"); + toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name"); + changeToString = (to, from, name) => { + const withName = name === "" ? "" : `with ${name.trim()}() `; + const newToString = wrappedToString.bind(null, withName, from.toString()); + Object.defineProperty(newToString, "name", toStringName); + Object.defineProperty(to, "toString", Object.assign(Object.assign({}, toStringDescriptor), {}, { + value: newToString + })); + }; + } + }); + var require_p_defer = __commonJS22({ + "node_modules/p-defer/index.js"(exports2, module22) { + "use strict"; + module22.exports = () => { + const ret = {}; + ret.promise = new Promise((resolve, reject) => { + ret.resolve = resolve; + ret.reject = reject; + }); + return ret; + }; + } + }); + var require_dist2 = __commonJS22({ + "node_modules/map-age-cleaner/dist/index.js"(exports2, module22) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : new P(function(resolve2) { + resolve2(result.value); + }).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { + "default": mod + }; + }; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var p_defer_1 = __importDefault2(require_p_defer()); + function mapAgeCleaner2(map2, property = "maxAge") { + let processingKey; + let processingTimer; + let processingDeferred; + const cleanup = () => __awaiter2(this, void 0, void 0, function* () { + if (processingKey !== void 0) { + return; + } + const setupTimer = (item) => __awaiter2(this, void 0, void 0, function* () { + processingDeferred = p_defer_1.default(); + const delay = item[1][property] - Date.now(); + if (delay <= 0) { + map2.delete(item[0]); + processingDeferred.resolve(); + return; + } + processingKey = item[0]; + processingTimer = setTimeout(() => { + map2.delete(item[0]); + if (processingDeferred) { + processingDeferred.resolve(); + } + }, delay); + if (typeof processingTimer.unref === "function") { + processingTimer.unref(); + } + return processingDeferred.promise; + }); + try { + for (const entry of map2) { + yield setupTimer(entry); + } + } catch (_a) { + } + processingKey = void 0; + }); + const reset = () => { + processingKey = void 0; + if (processingTimer !== void 0) { + clearTimeout(processingTimer); + processingTimer = void 0; + } + if (processingDeferred !== void 0) { + processingDeferred.reject(void 0); + processingDeferred = void 0; + } + }; + const originalSet = map2.set.bind(map2); + map2.set = (key, value) => { + if (map2.has(key)) { + map2.delete(key); + } + const result = originalSet(key, value); + if (processingKey && processingKey === key) { + reset(); + } + cleanup(); + return result; + }; + cleanup(); + return map2; + } + exports2.default = mapAgeCleaner2; + module22.exports = mapAgeCleaner2; + module22.exports.default = mapAgeCleaner2; + } + }); + var dist_exports = {}; + __export(dist_exports, { + default: () => mem, + memClear: () => memClear, + memDecorator: () => memDecorator + }); + function mem(fn, { + cacheKey, + cache = /* @__PURE__ */ new Map(), + maxAge + } = {}) { + if (typeof maxAge === "number") { + (0, import_map_age_cleaner.default)(cache); + } + const memoized = function(...arguments_) { + const key = cacheKey ? cacheKey(arguments_) : arguments_[0]; + const cacheItem = cache.get(key); + if (cacheItem) { + return cacheItem.data; + } + const result = fn.apply(this, arguments_); + cache.set(key, { + data: result, + maxAge: maxAge ? Date.now() + maxAge : Number.POSITIVE_INFINITY + }); + return result; + }; + mimicFunction(memoized, fn, { + ignoreNonConfigurable: true + }); + cacheStore.set(memoized, cache); + return memoized; + } + function memDecorator(options = {}) { + const instanceMap = /* @__PURE__ */ new WeakMap(); + return (target, propertyKey, descriptor) => { + const input = target[propertyKey]; + if (typeof input !== "function") { + throw new TypeError("The decorated value must be a function"); + } + delete descriptor.value; + delete descriptor.writable; + descriptor.get = function() { + if (!instanceMap.has(this)) { + const value = mem(input, options); + instanceMap.set(this, value); + return value; + } + return instanceMap.get(this); + }; + }; + } + function memClear(fn) { + const cache = cacheStore.get(fn); + if (!cache) { + throw new TypeError("Can't clear a function that was not memoized!"); + } + if (typeof cache.clear !== "function") { + throw new TypeError("The cache Map can't be cleared!"); + } + cache.clear(); + } + var import_map_age_cleaner; + var cacheStore; + var init_dist = __esm({ + "node_modules/mem/dist/index.js"() { + init_mimic_fn(); + import_map_age_cleaner = __toESM2(require_dist2()); + cacheStore = /* @__PURE__ */ new WeakMap(); + } + }); + var require_pseudomap = __commonJS22({ + "node_modules/pseudomap/pseudomap.js"(exports2, module22) { + var hasOwnProperty = Object.prototype.hasOwnProperty; + module22.exports = PseudoMap; + function PseudoMap(set22) { + if (!(this instanceof PseudoMap)) + throw new TypeError("Constructor PseudoMap requires 'new'"); + this.clear(); + if (set22) { + if (set22 instanceof PseudoMap || typeof Map === "function" && set22 instanceof Map) + set22.forEach(function(value, key) { + this.set(key, value); + }, this); + else if (Array.isArray(set22)) + set22.forEach(function(kv) { + this.set(kv[0], kv[1]); + }, this); + else + throw new TypeError("invalid argument"); + } + } + PseudoMap.prototype.forEach = function(fn, thisp) { + thisp = thisp || this; + Object.keys(this._data).forEach(function(k) { + if (k !== "size") + fn.call(thisp, this._data[k].value, this._data[k].key); + }, this); + }; + PseudoMap.prototype.has = function(k) { + return !!find(this._data, k); + }; + PseudoMap.prototype.get = function(k) { + var res = find(this._data, k); + return res && res.value; + }; + PseudoMap.prototype.set = function(k, v) { + set2(this._data, k, v); + }; + PseudoMap.prototype.delete = function(k) { + var res = find(this._data, k); + if (res) { + delete this._data[res._index]; + this._data.size--; + } + }; + PseudoMap.prototype.clear = function() { + var data = /* @__PURE__ */ Object.create(null); + data.size = 0; + Object.defineProperty(this, "_data", { + value: data, + enumerable: false, + configurable: true, + writable: false + }); + }; + Object.defineProperty(PseudoMap.prototype, "size", { + get: function() { + return this._data.size; + }, + set: function(n) { + }, + enumerable: true, + configurable: true + }); + PseudoMap.prototype.values = PseudoMap.prototype.keys = PseudoMap.prototype.entries = function() { + throw new Error("iterators are not implemented in this version"); + }; + function same(a, b) { + return a === b || a !== a && b !== b; + } + function Entry(k, v, i) { + this.key = k; + this.value = v; + this._index = i; + } + function find(data, k) { + for (var i = 0, s = "_" + k, key = s; hasOwnProperty.call(data, key); key = s + i++) { + if (same(data[key].key, k)) + return data[key]; + } + } + function set2(data, k, v) { + for (var i = 0, s = "_" + k, key = s; hasOwnProperty.call(data, key); key = s + i++) { + if (same(data[key].key, k)) { + data[key].value = v; + return; + } + } + data.size++; + data[key] = new Entry(k, v, key); + } + } + }); + var require_map = __commonJS22({ + "node_modules/pseudomap/map.js"(exports2, module22) { + if (process.env.npm_package_name === "pseudomap" && process.env.npm_lifecycle_script === "test") + process.env.TEST_PSEUDOMAP = "true"; + if (typeof Map === "function" && !process.env.TEST_PSEUDOMAP) { + module22.exports = Map; + } else { + module22.exports = require_pseudomap(); + } + } + }); + var require_yallist = __commonJS22({ + "node_modules/editorconfig/node_modules/yallist/yallist.js"(exports2, module22) { + module22.exports = Yallist; + Yallist.Node = Node; + Yallist.create = Yallist; + function Yallist(list) { + var self2 = this; + if (!(self2 instanceof Yallist)) { + self2 = new Yallist(); + } + self2.tail = null; + self2.head = null; + self2.length = 0; + if (list && typeof list.forEach === "function") { + list.forEach(function(item) { + self2.push(item); + }); + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self2.push(arguments[i]); + } + } + return self2; + } + Yallist.prototype.removeNode = function(node) { + if (node.list !== this) { + throw new Error("removing node which does not belong to this list"); + } + var next = node.next; + var prev = node.prev; + if (next) { + next.prev = prev; + } + if (prev) { + prev.next = next; + } + if (node === this.head) { + this.head = next; + } + if (node === this.tail) { + this.tail = prev; + } + node.list.length--; + node.next = null; + node.prev = null; + node.list = null; + }; + Yallist.prototype.unshiftNode = function(node) { + if (node === this.head) { + return; + } + if (node.list) { + node.list.removeNode(node); + } + var head = this.head; + node.list = this; + node.next = head; + if (head) { + head.prev = node; + } + this.head = node; + if (!this.tail) { + this.tail = node; + } + this.length++; + }; + Yallist.prototype.pushNode = function(node) { + if (node === this.tail) { + return; + } + if (node.list) { + node.list.removeNode(node); + } + var tail = this.tail; + node.list = this; + node.prev = tail; + if (tail) { + tail.next = node; + } + this.tail = node; + if (!this.head) { + this.head = node; + } + this.length++; + }; + Yallist.prototype.push = function() { + for (var i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]); + } + return this.length; + }; + Yallist.prototype.unshift = function() { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]); + } + return this.length; + }; + Yallist.prototype.pop = function() { + if (!this.tail) { + return void 0; + } + var res = this.tail.value; + this.tail = this.tail.prev; + if (this.tail) { + this.tail.next = null; + } else { + this.head = null; + } + this.length--; + return res; + }; + Yallist.prototype.shift = function() { + if (!this.head) { + return void 0; + } + var res = this.head.value; + this.head = this.head.next; + if (this.head) { + this.head.prev = null; + } else { + this.tail = null; + } + this.length--; + return res; + }; + Yallist.prototype.forEach = function(fn, thisp) { + thisp = thisp || this; + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this); + walker = walker.next; + } + }; + Yallist.prototype.forEachReverse = function(fn, thisp) { + thisp = thisp || this; + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this); + walker = walker.prev; + } + }; + Yallist.prototype.get = function(n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + walker = walker.next; + } + if (i === n && walker !== null) { + return walker.value; + } + }; + Yallist.prototype.getReverse = function(n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + walker = walker.prev; + } + if (i === n && walker !== null) { + return walker.value; + } + }; + Yallist.prototype.map = function(fn, thisp) { + thisp = thisp || this; + var res = new Yallist(); + for (var walker = this.head; walker !== null; ) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.next; + } + return res; + }; + Yallist.prototype.mapReverse = function(fn, thisp) { + thisp = thisp || this; + var res = new Yallist(); + for (var walker = this.tail; walker !== null; ) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.prev; + } + return res; + }; + Yallist.prototype.reduce = function(fn, initial) { + var acc; + var walker = this.head; + if (arguments.length > 1) { + acc = initial; + } else if (this.head) { + walker = this.head.next; + acc = this.head.value; + } else { + throw new TypeError("Reduce of empty list with no initial value"); + } + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i); + walker = walker.next; + } + return acc; + }; + Yallist.prototype.reduceReverse = function(fn, initial) { + var acc; + var walker = this.tail; + if (arguments.length > 1) { + acc = initial; + } else if (this.tail) { + walker = this.tail.prev; + acc = this.tail.value; + } else { + throw new TypeError("Reduce of empty list with no initial value"); + } + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i); + walker = walker.prev; + } + return acc; + }; + Yallist.prototype.toArray = function() { + var arr = new Array(this.length); + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.next; + } + return arr; + }; + Yallist.prototype.toArrayReverse = function() { + var arr = new Array(this.length); + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.prev; + } + return arr; + }; + Yallist.prototype.slice = function(from, to) { + to = to || this.length; + if (to < 0) { + to += this.length; + } + from = from || 0; + if (from < 0) { + from += this.length; + } + var ret = new Yallist(); + if (to < from || to < 0) { + return ret; + } + if (from < 0) { + from = 0; + } + if (to > this.length) { + to = this.length; + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next; + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value); + } + return ret; + }; + Yallist.prototype.sliceReverse = function(from, to) { + to = to || this.length; + if (to < 0) { + to += this.length; + } + from = from || 0; + if (from < 0) { + from += this.length; + } + var ret = new Yallist(); + if (to < from || to < 0) { + return ret; + } + if (from < 0) { + from = 0; + } + if (to > this.length) { + to = this.length; + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev; + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value); + } + return ret; + }; + Yallist.prototype.reverse = function() { + var head = this.head; + var tail = this.tail; + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev; + walker.prev = walker.next; + walker.next = p; + } + this.head = tail; + this.tail = head; + return this; + }; + function push(self2, item) { + self2.tail = new Node(item, self2.tail, null, self2); + if (!self2.head) { + self2.head = self2.tail; + } + self2.length++; + } + function unshift(self2, item) { + self2.head = new Node(item, null, self2.head, self2); + if (!self2.tail) { + self2.tail = self2.head; + } + self2.length++; + } + function Node(value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list); + } + this.list = list; + this.value = value; + if (prev) { + prev.next = this; + this.prev = prev; + } else { + this.prev = null; + } + if (next) { + next.prev = this; + this.next = next; + } else { + this.next = null; + } + } + } + }); + var require_lru_cache = __commonJS22({ + "node_modules/editorconfig/node_modules/lru-cache/index.js"(exports2, module22) { + "use strict"; + module22.exports = LRUCache; + var Map2 = require_map(); + var util = require("util"); + var Yallist = require_yallist(); + var hasSymbol = typeof Symbol === "function" && process.env._nodeLRUCacheForceNoSymbol !== "1"; + var makeSymbol; + if (hasSymbol) { + makeSymbol = function(key) { + return Symbol(key); + }; + } else { + makeSymbol = function(key) { + return "_" + key; + }; + } + var MAX = makeSymbol("max"); + var LENGTH = makeSymbol("length"); + var LENGTH_CALCULATOR = makeSymbol("lengthCalculator"); + var ALLOW_STALE = makeSymbol("allowStale"); + var MAX_AGE = makeSymbol("maxAge"); + var DISPOSE = makeSymbol("dispose"); + var NO_DISPOSE_ON_SET = makeSymbol("noDisposeOnSet"); + var LRU_LIST = makeSymbol("lruList"); + var CACHE = makeSymbol("cache"); + function naiveLength() { + return 1; + } + function LRUCache(options) { + if (!(this instanceof LRUCache)) { + return new LRUCache(options); + } + if (typeof options === "number") { + options = { + max: options + }; + } + if (!options) { + options = {}; + } + var max = this[MAX] = options.max; + if (!max || !(typeof max === "number") || max <= 0) { + this[MAX] = Infinity; + } + var lc = options.length || naiveLength; + if (typeof lc !== "function") { + lc = naiveLength; + } + this[LENGTH_CALCULATOR] = lc; + this[ALLOW_STALE] = options.stale || false; + this[MAX_AGE] = options.maxAge || 0; + this[DISPOSE] = options.dispose; + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; + this.reset(); + } + Object.defineProperty(LRUCache.prototype, "max", { + set: function(mL) { + if (!mL || !(typeof mL === "number") || mL <= 0) { + mL = Infinity; + } + this[MAX] = mL; + trim(this); + }, + get: function() { + return this[MAX]; + }, + enumerable: true + }); + Object.defineProperty(LRUCache.prototype, "allowStale", { + set: function(allowStale) { + this[ALLOW_STALE] = !!allowStale; + }, + get: function() { + return this[ALLOW_STALE]; + }, + enumerable: true + }); + Object.defineProperty(LRUCache.prototype, "maxAge", { + set: function(mA) { + if (!mA || !(typeof mA === "number") || mA < 0) { + mA = 0; + } + this[MAX_AGE] = mA; + trim(this); + }, + get: function() { + return this[MAX_AGE]; + }, + enumerable: true + }); + Object.defineProperty(LRUCache.prototype, "lengthCalculator", { + set: function(lC) { + if (typeof lC !== "function") { + lC = naiveLength; + } + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC; + this[LENGTH] = 0; + this[LRU_LIST].forEach(function(hit) { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); + this[LENGTH] += hit.length; + }, this); + } + trim(this); + }, + get: function() { + return this[LENGTH_CALCULATOR]; + }, + enumerable: true + }); + Object.defineProperty(LRUCache.prototype, "length", { + get: function() { + return this[LENGTH]; + }, + enumerable: true + }); + Object.defineProperty(LRUCache.prototype, "itemCount", { + get: function() { + return this[LRU_LIST].length; + }, + enumerable: true + }); + LRUCache.prototype.rforEach = function(fn, thisp) { + thisp = thisp || this; + for (var walker = this[LRU_LIST].tail; walker !== null; ) { + var prev = walker.prev; + forEachStep(this, fn, walker, thisp); + walker = prev; + } + }; + function forEachStep(self2, fn, node, thisp) { + var hit = node.value; + if (isStale(self2, hit)) { + del(self2, node); + if (!self2[ALLOW_STALE]) { + hit = void 0; + } + } + if (hit) { + fn.call(thisp, hit.value, hit.key, self2); + } + } + LRUCache.prototype.forEach = function(fn, thisp) { + thisp = thisp || this; + for (var walker = this[LRU_LIST].head; walker !== null; ) { + var next = walker.next; + forEachStep(this, fn, walker, thisp); + walker = next; + } + }; + LRUCache.prototype.keys = function() { + return this[LRU_LIST].toArray().map(function(k) { + return k.key; + }, this); + }; + LRUCache.prototype.values = function() { + return this[LRU_LIST].toArray().map(function(k) { + return k.value; + }, this); + }; + LRUCache.prototype.reset = function() { + if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) { + this[LRU_LIST].forEach(function(hit) { + this[DISPOSE](hit.key, hit.value); + }, this); + } + this[CACHE] = new Map2(); + this[LRU_LIST] = new Yallist(); + this[LENGTH] = 0; + }; + LRUCache.prototype.dump = function() { + return this[LRU_LIST].map(function(hit) { + if (!isStale(this, hit)) { + return { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }; + } + }, this).toArray().filter(function(h) { + return h; + }); + }; + LRUCache.prototype.dumpLru = function() { + return this[LRU_LIST]; + }; + LRUCache.prototype.inspect = function(n, opts) { + var str2 = "LRUCache {"; + var extras = false; + var as = this[ALLOW_STALE]; + if (as) { + str2 += "\n allowStale: true"; + extras = true; + } + var max = this[MAX]; + if (max && max !== Infinity) { + if (extras) { + str2 += ","; + } + str2 += "\n max: " + util.inspect(max, opts); + extras = true; + } + var maxAge = this[MAX_AGE]; + if (maxAge) { + if (extras) { + str2 += ","; + } + str2 += "\n maxAge: " + util.inspect(maxAge, opts); + extras = true; + } + var lc = this[LENGTH_CALCULATOR]; + if (lc && lc !== naiveLength) { + if (extras) { + str2 += ","; + } + str2 += "\n length: " + util.inspect(this[LENGTH], opts); + extras = true; + } + var didFirst = false; + this[LRU_LIST].forEach(function(item) { + if (didFirst) { + str2 += ",\n "; + } else { + if (extras) { + str2 += ",\n"; + } + didFirst = true; + str2 += "\n "; + } + var key = util.inspect(item.key).split("\n").join("\n "); + var val = { + value: item.value + }; + if (item.maxAge !== maxAge) { + val.maxAge = item.maxAge; + } + if (lc !== naiveLength) { + val.length = item.length; + } + if (isStale(this, item)) { + val.stale = true; + } + val = util.inspect(val, opts).split("\n").join("\n "); + str2 += key + " => " + val; + }); + if (didFirst || extras) { + str2 += "\n"; + } + str2 += "}"; + return str2; + }; + LRUCache.prototype.set = function(key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE]; + var now = maxAge ? Date.now() : 0; + var len = this[LENGTH_CALCULATOR](value, key); + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)); + return false; + } + var node = this[CACHE].get(key); + var item = node.value; + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) { + this[DISPOSE](key, item.value); + } + } + item.now = now; + item.maxAge = maxAge; + item.value = value; + this[LENGTH] += len - item.length; + item.length = len; + this.get(key); + trim(this); + return true; + } + var hit = new Entry(key, value, len, now, maxAge); + if (hit.length > this[MAX]) { + if (this[DISPOSE]) { + this[DISPOSE](key, value); + } + return false; + } + this[LENGTH] += hit.length; + this[LRU_LIST].unshift(hit); + this[CACHE].set(key, this[LRU_LIST].head); + trim(this); + return true; + }; + LRUCache.prototype.has = function(key) { + if (!this[CACHE].has(key)) + return false; + var hit = this[CACHE].get(key).value; + if (isStale(this, hit)) { + return false; + } + return true; + }; + LRUCache.prototype.get = function(key) { + return get2(this, key, true); + }; + LRUCache.prototype.peek = function(key) { + return get2(this, key, false); + }; + LRUCache.prototype.pop = function() { + var node = this[LRU_LIST].tail; + if (!node) + return null; + del(this, node); + return node.value; + }; + LRUCache.prototype.del = function(key) { + del(this, this[CACHE].get(key)); + }; + LRUCache.prototype.load = function(arr) { + this.reset(); + var now = Date.now(); + for (var l = arr.length - 1; l >= 0; l--) { + var hit = arr[l]; + var expiresAt = hit.e || 0; + if (expiresAt === 0) { + this.set(hit.k, hit.v); + } else { + var maxAge = expiresAt - now; + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge); + } + } + } + }; + LRUCache.prototype.prune = function() { + var self2 = this; + this[CACHE].forEach(function(value, key) { + get2(self2, key, false); + }); + }; + function get2(self2, key, doUse) { + var node = self2[CACHE].get(key); + if (node) { + var hit = node.value; + if (isStale(self2, hit)) { + del(self2, node); + if (!self2[ALLOW_STALE]) + hit = void 0; + } else { + if (doUse) { + self2[LRU_LIST].unshiftNode(node); + } + } + if (hit) + hit = hit.value; + } + return hit; + } + function isStale(self2, hit) { + if (!hit || !hit.maxAge && !self2[MAX_AGE]) { + return false; + } + var stale = false; + var diff = Date.now() - hit.now; + if (hit.maxAge) { + stale = diff > hit.maxAge; + } else { + stale = self2[MAX_AGE] && diff > self2[MAX_AGE]; + } + return stale; + } + function trim(self2) { + if (self2[LENGTH] > self2[MAX]) { + for (var walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) { + var prev = walker.prev; + del(self2, walker); + walker = prev; + } + } + } + function del(self2, node) { + if (node) { + var hit = node.value; + if (self2[DISPOSE]) { + self2[DISPOSE](hit.key, hit.value); + } + self2[LENGTH] -= hit.length; + self2[CACHE].delete(hit.key); + self2[LRU_LIST].removeNode(node); + } + } + function Entry(key, value, length, now, maxAge) { + this.key = key; + this.value = value; + this.length = length; + this.now = now; + this.maxAge = maxAge || 0; + } + } + }); + var require_sigmund = __commonJS22({ + "node_modules/sigmund/sigmund.js"(exports2, module22) { + module22.exports = sigmund; + function sigmund(subject, maxSessions) { + maxSessions = maxSessions || 10; + var notes = []; + var analysis = ""; + var RE = RegExp; + function psychoAnalyze(subject2, session) { + if (session > maxSessions) + return; + if (typeof subject2 === "function" || typeof subject2 === "undefined") { + return; + } + if (typeof subject2 !== "object" || !subject2 || subject2 instanceof RE) { + analysis += subject2; + return; + } + if (notes.indexOf(subject2) !== -1 || session === maxSessions) + return; + notes.push(subject2); + analysis += "{"; + Object.keys(subject2).forEach(function(issue, _, __) { + if (issue.charAt(0) === "_") + return; + var to = typeof subject2[issue]; + if (to === "function" || to === "undefined") + return; + analysis += issue; + psychoAnalyze(subject2[issue], session + 1); + }); + } + psychoAnalyze(subject, 0); + return analysis; + } + } + }); + var require_fnmatch = __commonJS22({ + "node_modules/editorconfig/src/lib/fnmatch.js"(exports2, module22) { + var platform = typeof process === "object" ? process.platform : "win32"; + if (module22) + module22.exports = minimatch; + else + exports2.minimatch = minimatch; + minimatch.Minimatch = Minimatch; + var LRU = require_lru_cache(); + var cache = minimatch.cache = new LRU({ + max: 100 + }); + var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; + var sigmund = require_sigmund(); + var path2 = require("path"); + var qmark = "[^/]"; + var star = qmark + "*?"; + var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; + var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; + var reSpecials = charSet("().*{}+?[]^$\\!"); + function charSet(s) { + return s.split("").reduce(function(set2, c) { + set2[c] = true; + return set2; + }, {}); + } + var slashSplit = /\/+/; + minimatch.monkeyPatch = monkeyPatch; + function monkeyPatch() { + var desc = Object.getOwnPropertyDescriptor(String.prototype, "match"); + var orig = desc.value; + desc.value = function(p) { + if (p instanceof Minimatch) + return p.match(this); + return orig.call(this, p); + }; + Object.defineProperty(String.prototype, desc); + } + minimatch.filter = filter; + function filter(pattern, options) { + options = options || {}; + return function(p, i, list) { + return minimatch(p, pattern, options); + }; + } + function ext(a, b) { + a = a || {}; + b = b || {}; + var t = {}; + Object.keys(b).forEach(function(k) { + t[k] = b[k]; + }); + Object.keys(a).forEach(function(k) { + t[k] = a[k]; + }); + return t; + } + minimatch.defaults = function(def) { + if (!def || !Object.keys(def).length) + return minimatch; + var orig = minimatch; + var m = function minimatch2(p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)); + }; + m.Minimatch = function Minimatch2(pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)); + }; + return m; + }; + Minimatch.defaults = function(def) { + if (!def || !Object.keys(def).length) + return Minimatch; + return minimatch.defaults(def).Minimatch; + }; + function minimatch(p, pattern, options) { + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required"); + } + if (!options) + options = {}; + if (!options.nocomment && pattern.charAt(0) === "#") { + return false; + } + if (pattern.trim() === "") + return p === ""; + return new Minimatch(pattern, options).match(p); + } + function Minimatch(pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options, cache); + } + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required"); + } + if (!options) + options = {}; + if (platform === "win32") { + pattern = pattern.split("\\").join("/"); + } + var cacheKey = pattern + "\n" + sigmund(options); + var cached = minimatch.cache.get(cacheKey); + if (cached) + return cached; + minimatch.cache.set(cacheKey, this); + this.options = options; + this.set = []; + this.pattern = pattern; + this.regexp = null; + this.negate = false; + this.comment = false; + this.empty = false; + this.make(); + } + Minimatch.prototype.make = make; + function make() { + if (this._made) + return; + var pattern = this.pattern; + var options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + this.parseNegate(); + var set2 = this.globSet = this.braceExpand(); + if (options.debug) + console.error(this.pattern, set2); + set2 = this.globParts = set2.map(function(s) { + return s.split(slashSplit); + }); + if (options.debug) + console.error(this.pattern, set2); + set2 = set2.map(function(s, si, set22) { + return s.map(this.parse, this); + }, this); + if (options.debug) + console.error(this.pattern, set2); + set2 = set2.filter(function(s) { + return s.indexOf(false) === -1; + }); + if (options.debug) + console.error(this.pattern, set2); + this.set = set2; + } + Minimatch.prototype.parseNegate = parseNegate; + function parseNegate() { + var pattern = this.pattern, negate = false, options = this.options, negateOffset = 0; + if (options.nonegate) + return; + for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === "!"; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) + this.pattern = pattern.substr(negateOffset); + this.negate = negate; + } + minimatch.braceExpand = function(pattern, options) { + return new Minimatch(pattern, options).braceExpand(); + }; + Minimatch.prototype.braceExpand = braceExpand; + function braceExpand(pattern, options) { + options = options || this.options; + pattern = typeof pattern === "undefined" ? this.pattern : pattern; + if (typeof pattern === "undefined") { + throw new Error("undefined pattern"); + } + if (options.nobrace || !pattern.match(/\{.*\}/)) { + return [pattern]; + } + var escaping = false; + if (pattern.charAt(0) !== "{") { + var prefix = null; + for (var i = 0, l = pattern.length; i < l; i++) { + var c = pattern.charAt(i); + if (c === "\\") { + escaping = !escaping; + } else if (c === "{" && !escaping) { + prefix = pattern.substr(0, i); + break; + } + } + if (prefix === null) { + return [pattern]; + } + var tail = braceExpand(pattern.substr(i), options); + return tail.map(function(t) { + return prefix + t; + }); + } + var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/); + if (numset) { + var suf = braceExpand(pattern.substr(numset[0].length), options), start = +numset[1], end = +numset[2], inc = start > end ? -1 : 1, set2 = []; + for (var i = start; i != end + inc; i += inc) { + for (var ii = 0, ll = suf.length; ii < ll; ii++) { + set2.push(i + suf[ii]); + } + } + return set2; + } + var i = 1, depth = 1, set2 = [], member = "", sawEnd = false, escaping = false; + function addMember() { + set2.push(member); + member = ""; + } + FOR: + for (i = 1, l = pattern.length; i < l; i++) { + var c = pattern.charAt(i); + if (escaping) { + escaping = false; + member += "\\" + c; + } else { + switch (c) { + case "\\": + escaping = true; + continue; + case "{": + depth++; + member += "{"; + continue; + case "}": + depth--; + if (depth === 0) { + addMember(); + i++; + break FOR; + } else { + member += c; + continue; + } + case ",": + if (depth === 1) { + addMember(); + } else { + member += c; + } + continue; + default: + member += c; + continue; + } + } + } + if (depth !== 0) { + return braceExpand("\\" + pattern, options); + } + var suf = braceExpand(pattern.substr(i), options); + var addBraces = set2.length === 1; + set2 = set2.map(function(p) { + return braceExpand(p, options); + }); + set2 = set2.reduce(function(l2, r) { + return l2.concat(r); + }); + if (addBraces) { + set2 = set2.map(function(s) { + return "{" + s + "}"; + }); + } + var ret = []; + for (var i = 0, l = set2.length; i < l; i++) { + for (var ii = 0, ll = suf.length; ii < ll; ii++) { + ret.push(set2[i] + suf[ii]); + } + } + return ret; + } + Minimatch.prototype.parse = parse; + var SUBPARSE = {}; + function parse(pattern, isSub) { + var options = this.options; + if (!options.noglobstar && pattern === "**") + return GLOBSTAR; + if (pattern === "") + return ""; + var re = "", hasMagic = !!options.nocase, escaping = false, patternListStack = [], plType, stateChar, inClass = false, reClassStart = -1, classStart = -1, patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; + function clearStateChar() { + if (stateChar) { + switch (stateChar) { + case "*": + re += star; + hasMagic = true; + break; + case "?": + re += qmark; + hasMagic = true; + break; + default: + re += "\\" + stateChar; + break; + } + stateChar = false; + } + } + for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) { + if (options.debug) { + console.error("%s %s %s %j", pattern, i, re, c); + } + if (escaping && reSpecials[c]) { + re += "\\" + c; + escaping = false; + continue; + } + SWITCH: + switch (c) { + case "/": + return false; + case "\\": + clearStateChar(); + escaping = true; + continue; + case "?": + case "*": + case "+": + case "@": + case "!": + if (options.debug) { + console.error("%s %s %s %j <-- stateChar", pattern, i, re, c); + } + if (inClass) { + if (c === "!" && i === classStart + 1) + c = "^"; + re += c; + continue; + } + clearStateChar(); + stateChar = c; + if (options.noext) + clearStateChar(); + continue; + case "(": + if (inClass) { + re += "("; + continue; + } + if (!stateChar) { + re += "\\("; + continue; + } + plType = stateChar; + patternListStack.push({ + type: plType, + start: i - 1, + reStart: re.length + }); + re += stateChar === "!" ? "(?:(?!" : "(?:"; + stateChar = false; + continue; + case ")": + if (inClass || !patternListStack.length) { + re += "\\)"; + continue; + } + hasMagic = true; + re += ")"; + plType = patternListStack.pop().type; + switch (plType) { + case "!": + re += "[^/]*?)"; + break; + case "?": + case "+": + case "*": + re += plType; + case "@": + break; + } + continue; + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|"; + escaping = false; + continue; + } + re += "|"; + continue; + case "[": + clearStateChar(); + if (inClass) { + re += "\\" + c; + continue; + } + inClass = true; + classStart = i; + reClassStart = re.length; + re += c; + continue; + case "]": + if (i === classStart + 1 || !inClass) { + re += "\\" + c; + escaping = false; + continue; + } + hasMagic = true; + inClass = false; + re += c; + continue; + default: + clearStateChar(); + if (escaping) { + escaping = false; + } else if (reSpecials[c] && !(c === "^" && inClass)) { + re += "\\"; + } + re += c; + } + } + if (inClass) { + var cs = pattern.substr(classStart + 1), sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0]; + hasMagic = hasMagic || sp[1]; + } + var pl; + while (pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + 3); + tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function(_, $1, $2) { + if (!$2) { + $2 = "\\"; + } + return $1 + $1 + $2 + "|"; + }); + var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; + hasMagic = true; + re = re.slice(0, pl.reStart) + t + "\\(" + tail; + } + clearStateChar(); + if (escaping) { + re += "\\\\"; + } + var addPatternStart = false; + switch (re.charAt(0)) { + case ".": + case "[": + case "(": + addPatternStart = true; + } + if (re !== "" && hasMagic) + re = "(?=.)" + re; + if (addPatternStart) + re = patternStart + re; + if (isSub === SUBPARSE) { + return [re, hasMagic]; + } + if (!hasMagic) { + return globUnescape(pattern); + } + var flags = options.nocase ? "i" : "", regExp = new RegExp("^" + re + "$", flags); + regExp._glob = pattern; + regExp._src = re; + return regExp; + } + minimatch.makeRe = function(pattern, options) { + return new Minimatch(pattern, options || {}).makeRe(); + }; + Minimatch.prototype.makeRe = makeRe; + function makeRe() { + if (this.regexp || this.regexp === false) + return this.regexp; + var set2 = this.set; + if (!set2.length) + return this.regexp = false; + var options = this.options; + var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot, flags = options.nocase ? "i" : ""; + var re = set2.map(function(pattern) { + return pattern.map(function(p) { + return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; + }).join("\\/"); + }).join("|"); + re = "^(?:" + re + ")$"; + if (this.negate) + re = "^(?!" + re + ").*$"; + try { + return this.regexp = new RegExp(re, flags); + } catch (ex) { + return this.regexp = false; + } + } + minimatch.match = function(list, pattern, options) { + var mm = new Minimatch(pattern, options); + list = list.filter(function(f) { + return mm.match(f); + }); + if (options.nonull && !list.length) { + list.push(pattern); + } + return list; + }; + Minimatch.prototype.match = match; + function match(f, partial) { + if (this.comment) + return false; + if (this.empty) + return f === ""; + if (f === "/" && partial) + return true; + var options = this.options; + if (platform === "win32") { + f = f.split("\\").join("/"); + } + f = f.split(slashSplit); + if (options.debug) { + console.error(this.pattern, "split", f); + } + var set2 = this.set; + for (var i = 0, l = set2.length; i < l; i++) { + var pattern = set2[i]; + var hit = this.matchOne(f, pattern, partial); + if (hit) { + if (options.flipNegate) + return true; + return !this.negate; + } + } + if (options.flipNegate) + return false; + return this.negate; + } + Minimatch.prototype.matchOne = function(file, pattern, partial) { + var options = this.options; + if (options.debug) { + console.error("matchOne", { + "this": this, + file, + pattern + }); + } + if (options.matchBase && pattern.length === 1) { + file = path2.basename(file.join("/")).split("/"); + } + if (options.debug) { + console.error("matchOne", file.length, pattern.length); + } + for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { + if (options.debug) { + console.error("matchOne loop"); + } + var p = pattern[pi], f = file[fi]; + if (options.debug) { + console.error(pattern, p, f); + } + if (p === false) + return false; + if (p === GLOBSTAR) { + if (options.debug) + console.error("GLOBSTAR", [pattern, p, f]); + var fr = fi, pr = pi + 1; + if (pr === pl) { + if (options.debug) + console.error("** at the end"); + for (; fi < fl; fi++) { + if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") + return false; + } + return true; + } + WHILE: + while (fr < fl) { + var swallowee = file[fr]; + if (options.debug) { + console.error("\nglobstar while", file, fr, pattern, pr, swallowee); + } + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + if (options.debug) + console.error("globstar found match!", fr, fl, swallowee); + return true; + } else { + if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { + if (options.debug) + console.error("dot detected!", file, fr, pattern, pr); + break WHILE; + } + if (options.debug) + console.error("globstar swallow a segment, and continue"); + fr++; + } + } + if (partial) { + if (fr === fl) + return true; + } + return false; + } + var hit; + if (typeof p === "string") { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase(); + } else { + hit = f === p; + } + if (options.debug) { + console.error("string match", p, f, hit); + } + } else { + hit = f.match(p); + if (options.debug) { + console.error("pattern match", p, f, hit); + } + } + if (!hit) + return false; + } + if (fi === fl && pi === pl) { + return true; + } else if (fi === fl) { + return partial; + } else if (pi === pl) { + var emptyFileEnd = fi === fl - 1 && file[fi] === ""; + return emptyFileEnd; + } + throw new Error("wtf?"); + }; + function globUnescape(s) { + return s.replace(/\\(.)/g, "$1"); + } + function regExpEscape(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + } + } + }); + var require_ini2 = __commonJS22({ + "node_modules/editorconfig/src/lib/ini.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : new P(function(resolve2) { + resolve2(result.value); + }).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator2 = exports2 && exports2.__generator || function(thisArg, body) { + var _ = { + label: 0, + sent: function() { + if (t[0] & 1) + throw t[1]; + return t[1]; + }, + trys: [], + ops: [] + }, f, y, t, g; + return g = { + next: verb(0), + "throw": verb(1), + "return": verb(2) + }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { + value: op[1], + done: false + }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { + value: op[0] ? op[1] : void 0, + done: true + }; + } + }; + var __importStar2 = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (Object.hasOwnProperty.call(mod, k)) + result[k] = mod[k]; + } + result["default"] = mod; + return result; + }; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var fs5 = __importStar2(require("fs")); + var regex = { + section: /^\s*\[(([^#;]|\\#|\\;)+)\]\s*([#;].*)?$/, + param: /^\s*([\w\.\-\_]+)\s*[=:]\s*(.*?)\s*([#;].*)?$/, + comment: /^\s*[#;].*$/ + }; + function parse(file) { + return __awaiter2(this, void 0, void 0, function() { + return __generator2(this, function(_a) { + return [2, new Promise(function(resolve, reject) { + fs5.readFile(file, "utf8", function(err, data) { + if (err) { + reject(err); + return; + } + resolve(parseString(data)); + }); + })]; + }); + }); + } + exports2.parse = parse; + function parseSync(file) { + return parseString(fs5.readFileSync(file, "utf8")); + } + exports2.parseSync = parseSync; + function parseString(data) { + var sectionBody = {}; + var sectionName = null; + var value = [[sectionName, sectionBody]]; + var lines = data.split(/\r\n|\r|\n/); + lines.forEach(function(line) { + var match; + if (regex.comment.test(line)) { + return; + } + if (regex.param.test(line)) { + match = line.match(regex.param); + sectionBody[match[1]] = match[2]; + } else if (regex.section.test(line)) { + match = line.match(regex.section); + sectionName = match[1]; + sectionBody = {}; + value.push([sectionName, sectionBody]); + } + }); + return value; + } + exports2.parseString = parseString; + } + }); + var require_package3 = __commonJS22({ + "node_modules/editorconfig/package.json"(exports2, module22) { + module22.exports = { + name: "editorconfig", + version: "0.15.3", + description: "EditorConfig File Locator and Interpreter for Node.js", + keywords: ["editorconfig", "core"], + main: "src/index.js", + contributors: ["Hong Xu (topbug.net)", "Jed Mao (https://github.com/jedmao/)", "Trey Hunner (http://treyhunner.com)"], + directories: { + bin: "./bin", + lib: "./lib" + }, + scripts: { + clean: "rimraf dist", + prebuild: "npm run clean", + build: "tsc", + pretest: "npm run lint && npm run build && npm run copy && cmake .", + test: "ctest .", + "pretest:ci": "npm run pretest", + "test:ci": "ctest -VV --output-on-failure .", + lint: "npm run eclint && npm run tslint", + eclint: 'eclint check --indent_size ignore "src/**"', + tslint: "tslint --project tsconfig.json --exclude package.json", + copy: "cpy .npmignore LICENSE README.md CHANGELOG.md dist && cpy bin/* dist/bin && cpy src/lib/fnmatch*.* dist/src/lib", + prepub: "npm run lint && npm run build && npm run copy", + pub: "npm publish ./dist" + }, + repository: { + type: "git", + url: "git://github.com/editorconfig/editorconfig-core-js.git" + }, + bugs: "https://github.com/editorconfig/editorconfig-core-js/issues", + author: "EditorConfig Team", + license: "MIT", + dependencies: { + commander: "^2.19.0", + "lru-cache": "^4.1.5", + semver: "^5.6.0", + sigmund: "^1.0.1" + }, + devDependencies: { + "@types/mocha": "^5.2.6", + "@types/node": "^10.12.29", + "@types/semver": "^5.5.0", + "cpy-cli": "^2.0.0", + eclint: "^2.8.1", + mocha: "^5.2.0", + rimraf: "^2.6.3", + should: "^13.2.3", + tslint: "^5.13.1", + typescript: "^3.3.3333" + } + }; + } + }); + var require_src2 = __commonJS22({ + "node_modules/editorconfig/src/index.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : new P(function(resolve2) { + resolve2(result.value); + }).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator2 = exports2 && exports2.__generator || function(thisArg, body) { + var _ = { + label: 0, + sent: function() { + if (t[0] & 1) + throw t[1]; + return t[1]; + }, + trys: [], + ops: [] + }, f, y, t, g; + return g = { + next: verb(0), + "throw": verb(1), + "return": verb(2) + }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { + value: op[1], + done: false + }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { + value: op[0] ? op[1] : void 0, + done: true + }; + } + }; + var __importStar2 = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (Object.hasOwnProperty.call(mod, k)) + result[k] = mod[k]; + } + result["default"] = mod; + return result; + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { + "default": mod + }; + }; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var fs5 = __importStar2(require("fs")); + var path2 = __importStar2(require("path")); + var semver = { + gte: require_gte() + }; + var fnmatch_1 = __importDefault2(require_fnmatch()); + var ini_1 = require_ini2(); + exports2.parseString = ini_1.parseString; + var package_json_1 = __importDefault2(require_package3()); + var knownProps = { + end_of_line: true, + indent_style: true, + indent_size: true, + insert_final_newline: true, + trim_trailing_whitespace: true, + charset: true + }; + function fnmatch(filepath, glob) { + var matchOptions = { + matchBase: true, + dot: true, + noext: true + }; + glob = glob.replace(/\*\*/g, "{*,**/**/**}"); + return fnmatch_1.default(filepath, glob, matchOptions); + } + function getConfigFileNames(filepath, options) { + var paths = []; + do { + filepath = path2.dirname(filepath); + paths.push(path2.join(filepath, options.config)); + } while (filepath !== options.root); + return paths; + } + function processMatches(matches, version2) { + if ("indent_style" in matches && matches.indent_style === "tab" && !("indent_size" in matches) && semver.gte(version2, "0.10.0")) { + matches.indent_size = "tab"; + } + if ("indent_size" in matches && !("tab_width" in matches) && matches.indent_size !== "tab") { + matches.tab_width = matches.indent_size; + } + if ("indent_size" in matches && "tab_width" in matches && matches.indent_size === "tab") { + matches.indent_size = matches.tab_width; + } + return matches; + } + function processOptions(options, filepath) { + if (options === void 0) { + options = {}; + } + return { + config: options.config || ".editorconfig", + version: options.version || package_json_1.default.version, + root: path2.resolve(options.root || path2.parse(filepath).root) + }; + } + function buildFullGlob(pathPrefix, glob) { + switch (glob.indexOf("/")) { + case -1: + glob = "**/" + glob; + break; + case 0: + glob = glob.substring(1); + break; + default: + break; + } + return path2.join(pathPrefix, glob); + } + function extendProps(props, options) { + if (props === void 0) { + props = {}; + } + if (options === void 0) { + options = {}; + } + for (var key in options) { + if (options.hasOwnProperty(key)) { + var value = options[key]; + var key2 = key.toLowerCase(); + var value2 = value; + if (knownProps[key2]) { + value2 = value.toLowerCase(); + } + try { + value2 = JSON.parse(value); + } catch (e) { + } + if (typeof value === "undefined" || value === null) { + value2 = String(value); + } + props[key2] = value2; + } + } + return props; + } + function parseFromConfigs(configs, filepath, options) { + return processMatches(configs.reverse().reduce(function(matches, file) { + var pathPrefix = path2.dirname(file.name); + file.contents.forEach(function(section) { + var glob = section[0]; + var options2 = section[1]; + if (!glob) { + return; + } + var fullGlob = buildFullGlob(pathPrefix, glob); + if (!fnmatch(filepath, fullGlob)) { + return; + } + matches = extendProps(matches, options2); + }); + return matches; + }, {}), options.version); + } + function getConfigsForFiles(files) { + var configs = []; + for (var i in files) { + if (files.hasOwnProperty(i)) { + var file = files[i]; + var contents = ini_1.parseString(file.contents); + configs.push({ + name: file.name, + contents + }); + if ((contents[0][1].root || "").toLowerCase() === "true") { + break; + } + } + } + return configs; + } + function readConfigFiles(filepaths) { + return __awaiter2(this, void 0, void 0, function() { + return __generator2(this, function(_a) { + return [2, Promise.all(filepaths.map(function(name) { + return new Promise(function(resolve) { + fs5.readFile(name, "utf8", function(err, data) { + resolve({ + name, + contents: err ? "" : data + }); + }); + }); + }))]; + }); + }); + } + function readConfigFilesSync(filepaths) { + var files = []; + var file; + filepaths.forEach(function(filepath) { + try { + file = fs5.readFileSync(filepath, "utf8"); + } catch (e) { + file = ""; + } + files.push({ + name: filepath, + contents: file + }); + }); + return files; + } + function opts(filepath, options) { + if (options === void 0) { + options = {}; + } + var resolvedFilePath = path2.resolve(filepath); + return [resolvedFilePath, processOptions(options, resolvedFilePath)]; + } + function parseFromFiles(filepath, files, options) { + if (options === void 0) { + options = {}; + } + return __awaiter2(this, void 0, void 0, function() { + var _a, resolvedFilePath, processedOptions; + return __generator2(this, function(_b) { + _a = opts(filepath, options), resolvedFilePath = _a[0], processedOptions = _a[1]; + return [2, files.then(getConfigsForFiles).then(function(configs) { + return parseFromConfigs(configs, resolvedFilePath, processedOptions); + })]; + }); + }); + } + exports2.parseFromFiles = parseFromFiles; + function parseFromFilesSync(filepath, files, options) { + if (options === void 0) { + options = {}; + } + var _a = opts(filepath, options), resolvedFilePath = _a[0], processedOptions = _a[1]; + return parseFromConfigs(getConfigsForFiles(files), resolvedFilePath, processedOptions); + } + exports2.parseFromFilesSync = parseFromFilesSync; + function parse(_filepath, _options) { + if (_options === void 0) { + _options = {}; + } + return __awaiter2(this, void 0, void 0, function() { + var _a, resolvedFilePath, processedOptions, filepaths; + return __generator2(this, function(_b) { + _a = opts(_filepath, _options), resolvedFilePath = _a[0], processedOptions = _a[1]; + filepaths = getConfigFileNames(resolvedFilePath, processedOptions); + return [2, readConfigFiles(filepaths).then(getConfigsForFiles).then(function(configs) { + return parseFromConfigs(configs, resolvedFilePath, processedOptions); + })]; + }); + }); + } + exports2.parse = parse; + function parseSync(_filepath, _options) { + if (_options === void 0) { + _options = {}; + } + var _a = opts(_filepath, _options), resolvedFilePath = _a[0], processedOptions = _a[1]; + var filepaths = getConfigFileNames(resolvedFilePath, processedOptions); + var files = readConfigFilesSync(filepaths); + return parseFromConfigs(getConfigsForFiles(files), resolvedFilePath, processedOptions); + } + exports2.parseSync = parseSync; + } + }); + var require_editorconfig_to_prettier = __commonJS22({ + "node_modules/editorconfig-to-prettier/index.js"(exports2, module22) { + module22.exports = editorConfigToPrettier; + function removeUnset(editorConfig) { + const result = {}; + const keys = Object.keys(editorConfig); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (editorConfig[key] === "unset") { + continue; + } + result[key] = editorConfig[key]; + } + return result; + } + function editorConfigToPrettier(editorConfig) { + if (!editorConfig) { + return null; + } + editorConfig = removeUnset(editorConfig); + if (Object.keys(editorConfig).length === 0) { + return null; + } + const result = {}; + if (editorConfig.indent_style) { + result.useTabs = editorConfig.indent_style === "tab"; + } + if (editorConfig.indent_size === "tab") { + result.useTabs = true; + } + if (result.useTabs && editorConfig.tab_width) { + result.tabWidth = editorConfig.tab_width; + } else if (editorConfig.indent_style === "space" && editorConfig.indent_size && editorConfig.indent_size !== "tab") { + result.tabWidth = editorConfig.indent_size; + } else if (editorConfig.tab_width !== void 0) { + result.tabWidth = editorConfig.tab_width; + } + if (editorConfig.max_line_length && editorConfig.max_line_length !== "off") { + result.printWidth = editorConfig.max_line_length; + } + if (editorConfig.quote_type === "single") { + result.singleQuote = true; + } else if (editorConfig.quote_type === "double") { + result.singleQuote = false; + } + if (["cr", "crlf", "lf"].indexOf(editorConfig.end_of_line) !== -1) { + result.endOfLine = editorConfig.end_of_line; + } + if (editorConfig.insert_final_newline === false || editorConfig.insert_final_newline === true) { + result.insertFinalNewline = editorConfig.insert_final_newline; + } + return result; + } + } + }); + var require_find_project_root = __commonJS22({ + "src/config/find-project-root.js"(exports2, module22) { + "use strict"; + var fs5 = require("fs"); + var path2 = require("path"); + var MARKERS = [".git", ".hg"]; + var markerExists = (directory) => MARKERS.some((mark) => fs5.existsSync(path2.join(directory, mark))); + function findProjectRoot(directory) { + while (!markerExists(directory)) { + const parentDirectory = path2.resolve(directory, ".."); + if (parentDirectory === directory) { + break; + } + directory = parentDirectory; + } + return directory; + } + module22.exports = findProjectRoot; + } + }); + var require_resolve_config_editorconfig = __commonJS22({ + "src/config/resolve-config-editorconfig.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var editorconfig = require_src2(); + var editorConfigToPrettier = require_editorconfig_to_prettier(); + var { + default: mem2, + memClear: memClear2 + } = (init_dist(), __toCommonJS(dist_exports)); + var findProjectRoot = require_find_project_root(); + var jsonStringifyMem = (fn) => mem2(fn, { + cacheKey: JSON.stringify + }); + var maybeParse = (filePath, parse) => filePath && parse(filePath, { + root: findProjectRoot(path2.dirname(path2.resolve(filePath))) + }); + var editorconfigAsyncNoCache = async (filePath) => editorConfigToPrettier(await maybeParse(filePath, editorconfig.parse)); + var editorconfigAsyncWithCache = jsonStringifyMem(editorconfigAsyncNoCache); + var editorconfigSyncNoCache = (filePath) => editorConfigToPrettier(maybeParse(filePath, editorconfig.parseSync)); + var editorconfigSyncWithCache = jsonStringifyMem(editorconfigSyncNoCache); + function getLoadFunction(opts) { + if (!opts.editorconfig) { + return () => null; + } + if (opts.sync) { + return opts.cache ? editorconfigSyncWithCache : editorconfigSyncNoCache; + } + return opts.cache ? editorconfigAsyncWithCache : editorconfigAsyncNoCache; + } + function clearCache() { + memClear2(editorconfigSyncWithCache); + memClear2(editorconfigAsyncWithCache); + } + module22.exports = { + getLoadFunction, + clearCache + }; + } + }); + var require_resolve_config = __commonJS22({ + "src/config/resolve-config.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var micromatch = require_micromatch(); + var thirdParty = require_third_party(); + var loadToml = require_load_toml(); + var loadJson5 = require_load_json5(); + var partition = require_partition(); + var resolve = require_resolve2(); + var { + default: mem2, + memClear: memClear2 + } = (init_dist(), __toCommonJS(dist_exports)); + var resolveEditorConfig = require_resolve_config_editorconfig(); + var getExplorerMemoized = mem2((opts) => { + const cosmiconfig = thirdParty["cosmiconfig" + (opts.sync ? "Sync" : "")]; + const explorer = cosmiconfig("prettier", { + cache: opts.cache, + transform: (result) => { + if (result && result.config) { + if (typeof result.config === "string") { + const dir = path2.dirname(result.filepath); + const modulePath = resolve(result.config, { + paths: [dir] + }); + result.config = require(modulePath); + } + if (typeof result.config !== "object") { + throw new TypeError(`Config is only allowed to be an object, but received ${typeof result.config} in "${result.filepath}"`); + } + delete result.config.$schema; + } + return result; + }, + searchPlaces: ["package.json", ".prettierrc", ".prettierrc.json", ".prettierrc.yaml", ".prettierrc.yml", ".prettierrc.json5", ".prettierrc.js", ".prettierrc.cjs", "prettier.config.js", "prettier.config.cjs", ".prettierrc.toml"], + loaders: { + ".toml": loadToml, + ".json5": loadJson5 + } + }); + return explorer; + }, { + cacheKey: JSON.stringify + }); + function getExplorer(opts) { + opts = Object.assign({ + sync: false, + cache: false + }, opts); + return getExplorerMemoized(opts); + } + function _resolveConfig(filePath, opts, sync) { + opts = Object.assign({ + useCache: true + }, opts); + const loadOpts = { + cache: Boolean(opts.useCache), + sync: Boolean(sync), + editorconfig: Boolean(opts.editorconfig) + }; + const { + load: load2, + search + } = getExplorer(loadOpts); + const loadEditorConfig = resolveEditorConfig.getLoadFunction(loadOpts); + const arr = [opts.config ? load2(opts.config) : search(filePath), loadEditorConfig(filePath)]; + const unwrapAndMerge = ([result, editorConfigured]) => { + const merged = Object.assign(Object.assign({}, editorConfigured), mergeOverrides(result, filePath)); + for (const optionName of ["plugins", "pluginSearchDirs"]) { + if (Array.isArray(merged[optionName])) { + merged[optionName] = merged[optionName].map((value) => typeof value === "string" && value.startsWith(".") ? path2.resolve(path2.dirname(result.filepath), value) : value); + } + } + if (!result && !editorConfigured) { + return null; + } + delete merged.insertFinalNewline; + return merged; + }; + if (loadOpts.sync) { + return unwrapAndMerge(arr); + } + return Promise.all(arr).then(unwrapAndMerge); + } + var resolveConfig = (filePath, opts) => _resolveConfig(filePath, opts, false); + resolveConfig.sync = (filePath, opts) => _resolveConfig(filePath, opts, true); + function clearCache() { + memClear2(getExplorerMemoized); + resolveEditorConfig.clearCache(); + } + async function resolveConfigFile(filePath) { + const { + search + } = getExplorer({ + sync: false + }); + const result = await search(filePath); + return result ? result.filepath : null; + } + resolveConfigFile.sync = (filePath) => { + const { + search + } = getExplorer({ + sync: true + }); + const result = search(filePath); + return result ? result.filepath : null; + }; + function mergeOverrides(configResult, filePath) { + const { + config: config2, + filepath: configPath + } = configResult || {}; + const _ref = config2 || {}, { + overrides + } = _ref, options = _objectWithoutProperties(_ref, _excluded3); + if (filePath && overrides) { + const relativeFilePath = path2.relative(path2.dirname(configPath), filePath); + for (const override of overrides) { + if (pathMatchesGlobs(relativeFilePath, override.files, override.excludeFiles)) { + Object.assign(options, override.options); + } + } + } + return options; + } + function pathMatchesGlobs(filePath, patterns, excludedPatterns) { + const patternList = Array.isArray(patterns) ? patterns : [patterns]; + const [withSlashes, withoutSlashes] = partition(patternList, (pattern) => pattern.includes("/")); + return micromatch.isMatch(filePath, withoutSlashes, { + ignore: excludedPatterns, + basename: true, + dot: true + }) || micromatch.isMatch(filePath, withSlashes, { + ignore: excludedPatterns, + basename: false, + dot: true + }); + } + module22.exports = { + resolveConfig, + resolveConfigFile, + clearCache + }; + } + }); + var require_ignore = __commonJS22({ + "node_modules/ignore/index.js"(exports2, module22) { + function makeArray(subject) { + return Array.isArray(subject) ? subject : [subject]; + } + var EMPTY = ""; + var SPACE = " "; + var ESCAPE = "\\"; + var REGEX_TEST_BLANK_LINE = /^\s+$/; + var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/; + var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/; + var REGEX_SPLITALL_CRLF = /\r?\n/g; + var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/; + var SLASH = "/"; + var KEY_IGNORE = typeof Symbol !== "undefined" ? Symbol.for("node-ignore") : "node-ignore"; + var define2 = (object, key, value) => Object.defineProperty(object, key, { + value + }); + var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; + var RETURN_FALSE = () => false; + var sanitizeRange = (range) => range.replace(REGEX_REGEXP_RANGE, (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) ? match : EMPTY); + var cleanRangeBackSlash = (slashes) => { + const { + length + } = slashes; + return slashes.slice(0, length - length % 2); + }; + var REPLACERS = [[/\\?\s+$/, (match) => match.indexOf("\\") === 0 ? SPACE : EMPTY], [/\\\s/g, () => SPACE], [/[\\$.|*+(){^]/g, (match) => `\\${match}`], [/(?!\\)\?/g, () => "[^/]"], [/^\//, () => "^"], [/\//g, () => "\\/"], [/^\^*\\\*\\\*\\\//, () => "^(?:.*\\/)?"], [/^(?=[^^])/, function startingReplacer() { + return !/\/(?!$)/.test(this) ? "(?:^|\\/)" : "^"; + }], [/\\\/\\\*\\\*(?=\\\/|$)/g, (_, index, str2) => index + 6 < str2.length ? "(?:\\/[^\\/]+)*" : "\\/.+"], [/(^|[^\\]+)\\\*(?=.+)/g, (_, p1) => `${p1}[^\\/]*`], [/\\\\\\(?=[$.|*+(){^])/g, () => ESCAPE], [/\\\\/g, () => ESCAPE], [/(\\)?\[([^\]/]*?)(\\*)($|\])/g, (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` : close === "]" ? endEscape.length % 2 === 0 ? `[${sanitizeRange(range)}${endEscape}]` : "[]" : "[]"], [/(?:[^*])$/, (match) => /\/$/.test(match) ? `${match}$` : `${match}(?=$|\\/$)`], [/(\^|\\\/)?\\\*$/, (_, p1) => { + const prefix = p1 ? `${p1}[^/]+` : "[^/]*"; + return `${prefix}(?=$|\\/$)`; + }]]; + var regexCache = /* @__PURE__ */ Object.create(null); + var makeRegex = (pattern, ignoreCase) => { + let source = regexCache[pattern]; + if (!source) { + source = REPLACERS.reduce((prev, current) => prev.replace(current[0], current[1].bind(pattern)), pattern); + regexCache[pattern] = source; + } + return ignoreCase ? new RegExp(source, "i") : new RegExp(source); + }; + var isString = (subject) => typeof subject === "string"; + var checkPattern = (pattern) => pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && pattern.indexOf("#") !== 0; + var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF); + var IgnoreRule = class { + constructor(origin, pattern, negative, regex) { + this.origin = origin; + this.pattern = pattern; + this.negative = negative; + this.regex = regex; + } + }; + var createRule = (pattern, ignoreCase) => { + const origin = pattern; + let negative = false; + if (pattern.indexOf("!") === 0) { + negative = true; + pattern = pattern.substr(1); + } + pattern = pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#"); + const regex = makeRegex(pattern, ignoreCase); + return new IgnoreRule(origin, pattern, negative, regex); + }; + var throwError2 = (message, Ctor) => { + throw new Ctor(message); + }; + var checkPath = (path2, originalPath, doThrow) => { + if (!isString(path2)) { + return doThrow(`path must be a string, but got \`${originalPath}\``, TypeError); + } + if (!path2) { + return doThrow(`path must not be empty`, TypeError); + } + if (checkPath.isNotRelative(path2)) { + const r = "`path.relative()`d"; + return doThrow(`path should be a ${r} string, but got "${originalPath}"`, RangeError); + } + return true; + }; + var isNotRelative = (path2) => REGEX_TEST_INVALID_PATH.test(path2); + checkPath.isNotRelative = isNotRelative; + checkPath.convert = (p) => p; + var Ignore = class { + constructor({ + ignorecase = true, + ignoreCase = ignorecase, + allowRelativePaths = false + } = {}) { + define2(this, KEY_IGNORE, true); + this._rules = []; + this._ignoreCase = ignoreCase; + this._allowRelativePaths = allowRelativePaths; + this._initCache(); + } + _initCache() { + this._ignoreCache = /* @__PURE__ */ Object.create(null); + this._testCache = /* @__PURE__ */ Object.create(null); + } + _addPattern(pattern) { + if (pattern && pattern[KEY_IGNORE]) { + this._rules = this._rules.concat(pattern._rules); + this._added = true; + return; + } + if (checkPattern(pattern)) { + const rule = createRule(pattern, this._ignoreCase); + this._added = true; + this._rules.push(rule); + } + } + add(pattern) { + this._added = false; + makeArray(isString(pattern) ? splitPattern(pattern) : pattern).forEach(this._addPattern, this); + if (this._added) { + this._initCache(); + } + return this; + } + addPattern(pattern) { + return this.add(pattern); + } + _testOne(path2, checkUnignored) { + let ignored = false; + let unignored = false; + this._rules.forEach((rule) => { + const { + negative + } = rule; + if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) { + return; + } + const matched = rule.regex.test(path2); + if (matched) { + ignored = !negative; + unignored = negative; + } + }); + return { + ignored, + unignored + }; + } + _test(originalPath, cache, checkUnignored, slices) { + const path2 = originalPath && checkPath.convert(originalPath); + checkPath(path2, originalPath, this._allowRelativePaths ? RETURN_FALSE : throwError2); + return this._t(path2, cache, checkUnignored, slices); + } + _t(path2, cache, checkUnignored, slices) { + if (path2 in cache) { + return cache[path2]; + } + if (!slices) { + slices = path2.split(SLASH); + } + slices.pop(); + if (!slices.length) { + return cache[path2] = this._testOne(path2, checkUnignored); + } + const parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices); + return cache[path2] = parent.ignored ? parent : this._testOne(path2, checkUnignored); + } + ignores(path2) { + return this._test(path2, this._ignoreCache, false).ignored; + } + createFilter() { + return (path2) => !this.ignores(path2); + } + filter(paths) { + return makeArray(paths).filter(this.createFilter()); + } + test(path2) { + return this._test(path2, this._testCache, true); + } + }; + var factory = (options) => new Ignore(options); + var isPathValid = (path2) => checkPath(path2 && checkPath.convert(path2), path2, RETURN_FALSE); + factory.isPathValid = isPathValid; + factory.default = factory; + module22.exports = factory; + if (typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32")) { + const makePosix = (str2) => /^\\\\\?\\/.test(str2) || /["<>|\u0000-\u001F]+/u.test(str2) ? str2 : str2.replace(/\\/g, "/"); + checkPath.convert = makePosix; + const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i; + checkPath.isNotRelative = (path2) => REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path2) || isNotRelative(path2); + } + } + }); + var require_get_file_content_or_null = __commonJS22({ + "src/utils/get-file-content-or-null.js"(exports2, module22) { + "use strict"; + var fs5 = require("fs"); + var fsAsync = fs5.promises; + async function getFileContentOrNull(filename) { + try { + return await fsAsync.readFile(filename, "utf8"); + } catch (error2) { + return handleError(filename, error2); + } + } + getFileContentOrNull.sync = function(filename) { + try { + return fs5.readFileSync(filename, "utf8"); + } catch (error2) { + return handleError(filename, error2); + } + }; + function handleError(filename, error2) { + if (error2 && error2.code === "ENOENT") { + return null; + } + throw new Error(`Unable to read ${filename}: ${error2.message}`); + } + module22.exports = getFileContentOrNull; + } + }); + var require_create_ignorer = __commonJS22({ + "src/common/create-ignorer.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var ignore = require_ignore().default; + var getFileContentOrNull = require_get_file_content_or_null(); + async function createIgnorer(ignorePath, withNodeModules) { + const ignoreContent = ignorePath ? await getFileContentOrNull(path2.resolve(ignorePath)) : null; + return _createIgnorer(ignoreContent, withNodeModules); + } + createIgnorer.sync = function(ignorePath, withNodeModules) { + const ignoreContent = !ignorePath ? null : getFileContentOrNull.sync(path2.resolve(ignorePath)); + return _createIgnorer(ignoreContent, withNodeModules); + }; + function _createIgnorer(ignoreContent, withNodeModules) { + const ignorer = ignore({ + allowRelativePaths: true + }).add(ignoreContent || ""); + if (!withNodeModules) { + ignorer.add("node_modules"); + } + return ignorer; + } + module22.exports = createIgnorer; + } + }); + var require_get_file_info = __commonJS22({ + "src/common/get-file-info.js"(exports2, module22) { + "use strict"; + var path2 = require("path"); + var options = require_options(); + var config2 = require_resolve_config(); + var createIgnorer = require_create_ignorer(); + async function getFileInfo2(filePath, opts) { + if (typeof filePath !== "string") { + throw new TypeError(`expect \`filePath\` to be a string, got \`${typeof filePath}\``); + } + const ignorer = await createIgnorer(opts.ignorePath, opts.withNodeModules); + return _getFileInfo({ + ignorer, + filePath, + plugins: opts.plugins, + resolveConfig: opts.resolveConfig, + ignorePath: opts.ignorePath, + sync: false + }); + } + getFileInfo2.sync = function(filePath, opts) { + if (typeof filePath !== "string") { + throw new TypeError(`expect \`filePath\` to be a string, got \`${typeof filePath}\``); + } + const ignorer = createIgnorer.sync(opts.ignorePath, opts.withNodeModules); + return _getFileInfo({ + ignorer, + filePath, + plugins: opts.plugins, + resolveConfig: opts.resolveConfig, + ignorePath: opts.ignorePath, + sync: true + }); + }; + function getFileParser(resolvedConfig, filePath, plugins2) { + if (resolvedConfig && resolvedConfig.parser) { + return resolvedConfig.parser; + } + const inferredParser = options.inferParser(filePath, plugins2); + if (inferredParser) { + return inferredParser; + } + return null; + } + function _getFileInfo({ + ignorer, + filePath, + plugins: plugins2, + resolveConfig = false, + ignorePath, + sync = false + }) { + const normalizedFilePath = normalizeFilePath(filePath, ignorePath); + const fileInfo = { + ignored: ignorer.ignores(normalizedFilePath), + inferredParser: null + }; + if (fileInfo.ignored) { + return fileInfo; + } + let resolvedConfig; + if (resolveConfig) { + if (sync) { + resolvedConfig = config2.resolveConfig.sync(filePath); + } else { + return config2.resolveConfig(filePath).then((resolvedConfig2) => { + fileInfo.inferredParser = getFileParser(resolvedConfig2, filePath, plugins2); + return fileInfo; + }); + } + } + fileInfo.inferredParser = getFileParser(resolvedConfig, filePath, plugins2); + return fileInfo; + } + function normalizeFilePath(filePath, ignorePath) { + return ignorePath ? path2.relative(path2.dirname(ignorePath), filePath) : filePath; + } + module22.exports = getFileInfo2; + } + }); + var require_util_shared = __commonJS22({ + "src/common/util-shared.js"(exports2, module22) { + "use strict"; + var { + getMaxContinuousCount, + getStringWidth, + getAlignmentSize, + getIndentSize, + skip, + skipWhitespace, + skipSpaces, + skipNewline, + skipToLineEnd, + skipEverythingButNewLine, + skipInlineComment, + skipTrailingComment, + hasNewline, + hasNewlineInRange, + hasSpaces, + isNextLineEmpty, + isNextLineEmptyAfterIndex, + isPreviousLineEmpty, + getNextNonSpaceNonCommentCharacterIndex, + makeString, + addLeadingComment, + addDanglingComment, + addTrailingComment + } = require_util2(); + module22.exports = { + getMaxContinuousCount, + getStringWidth, + getAlignmentSize, + getIndentSize, + skip, + skipWhitespace, + skipSpaces, + skipNewline, + skipToLineEnd, + skipEverythingButNewLine, + skipInlineComment, + skipTrailingComment, + hasNewline, + hasNewlineInRange, + hasSpaces, + isNextLineEmpty, + isNextLineEmptyAfterIndex, + isPreviousLineEmpty, + getNextNonSpaceNonCommentCharacterIndex, + makeString, + addLeadingComment, + addDanglingComment, + addTrailingComment + }; + } + }); + var require_array3 = __commonJS22({ + "node_modules/fast-glob/out/utils/array.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.splitWhen = exports2.flatten = void 0; + function flatten(items) { + return items.reduce((collection, item) => [].concat(collection, item), []); + } + exports2.flatten = flatten; + function splitWhen(items, predicate) { + const result = [[]]; + let groupIndex = 0; + for (const item of items) { + if (predicate(item)) { + groupIndex++; + result[groupIndex] = []; + } else { + result[groupIndex].push(item); + } + } + return result; + } + exports2.splitWhen = splitWhen; + } + }); + var require_errno = __commonJS22({ + "node_modules/fast-glob/out/utils/errno.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isEnoentCodeError = void 0; + function isEnoentCodeError(error2) { + return error2.code === "ENOENT"; + } + exports2.isEnoentCodeError = isEnoentCodeError; + } + }); + var require_fs = __commonJS22({ + "node_modules/fast-glob/out/utils/fs.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createDirentFromStats = void 0; + var DirentFromStats = class { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } + }; + function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); + } + exports2.createDirentFromStats = createDirentFromStats; + } + }); + var require_path = __commonJS22({ + "node_modules/fast-glob/out/utils/path.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.removeLeadingDotSegment = exports2.escape = exports2.makeAbsolute = exports2.unixify = void 0; + var path2 = require("path"); + var LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; + var UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g; + function unixify(filepath) { + return filepath.replace(/\\/g, "/"); + } + exports2.unixify = unixify; + function makeAbsolute(cwd, filepath) { + return path2.resolve(cwd, filepath); + } + exports2.makeAbsolute = makeAbsolute; + function escape(pattern) { + return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, "\\$2"); + } + exports2.escape = escape; + function removeLeadingDotSegment(entry) { + if (entry.charAt(0) === ".") { + const secondCharactery = entry.charAt(1); + if (secondCharactery === "/" || secondCharactery === "\\") { + return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); + } + } + return entry; + } + exports2.removeLeadingDotSegment = removeLeadingDotSegment; + } + }); + var require_is_extglob = __commonJS22({ + "node_modules/is-extglob/index.js"(exports2, module22) { + module22.exports = function isExtglob(str2) { + if (typeof str2 !== "string" || str2 === "") { + return false; + } + var match; + while (match = /(\\).|([@?!+*]\(.*\))/g.exec(str2)) { + if (match[2]) + return true; + str2 = str2.slice(match.index + match[0].length); + } + return false; + }; + } + }); + var require_is_glob = __commonJS22({ + "node_modules/is-glob/index.js"(exports2, module22) { + var isExtglob = require_is_extglob(); + var chars = { + "{": "}", + "(": ")", + "[": "]" + }; + var strictCheck = function(str2) { + if (str2[0] === "!") { + return true; + } + var index = 0; + var pipeIndex = -2; + var closeSquareIndex = -2; + var closeCurlyIndex = -2; + var closeParenIndex = -2; + var backSlashIndex = -2; + while (index < str2.length) { + if (str2[index] === "*") { + return true; + } + if (str2[index + 1] === "?" && /[\].+)]/.test(str2[index])) { + return true; + } + if (closeSquareIndex !== -1 && str2[index] === "[" && str2[index + 1] !== "]") { + if (closeSquareIndex < index) { + closeSquareIndex = str2.indexOf("]", index); + } + if (closeSquareIndex > index) { + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + backSlashIndex = str2.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + } + } + if (closeCurlyIndex !== -1 && str2[index] === "{" && str2[index + 1] !== "}") { + closeCurlyIndex = str2.indexOf("}", index); + if (closeCurlyIndex > index) { + backSlashIndex = str2.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { + return true; + } + } + } + if (closeParenIndex !== -1 && str2[index] === "(" && str2[index + 1] === "?" && /[:!=]/.test(str2[index + 2]) && str2[index + 3] !== ")") { + closeParenIndex = str2.indexOf(")", index); + if (closeParenIndex > index) { + backSlashIndex = str2.indexOf("\\", index); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + if (pipeIndex !== -1 && str2[index] === "(" && str2[index + 1] !== "|") { + if (pipeIndex < index) { + pipeIndex = str2.indexOf("|", index); + } + if (pipeIndex !== -1 && str2[pipeIndex + 1] !== ")") { + closeParenIndex = str2.indexOf(")", pipeIndex); + if (closeParenIndex > pipeIndex) { + backSlashIndex = str2.indexOf("\\", pipeIndex); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + } + if (str2[index] === "\\") { + var open = str2[index + 1]; + index += 2; + var close = chars[open]; + if (close) { + var n = str2.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + if (str2[index] === "!") { + return true; + } + } else { + index++; + } + } + return false; + }; + var relaxedCheck = function(str2) { + if (str2[0] === "!") { + return true; + } + var index = 0; + while (index < str2.length) { + if (/[*?{}()[\]]/.test(str2[index])) { + return true; + } + if (str2[index] === "\\") { + var open = str2[index + 1]; + index += 2; + var close = chars[open]; + if (close) { + var n = str2.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + if (str2[index] === "!") { + return true; + } + } else { + index++; + } + } + return false; + }; + module22.exports = function isGlob(str2, options) { + if (typeof str2 !== "string" || str2 === "") { + return false; + } + if (isExtglob(str2)) { + return true; + } + var check = strictCheck; + if (options && options.strict === false) { + check = relaxedCheck; + } + return check(str2); + }; + } + }); + var require_glob_parent = __commonJS22({ + "node_modules/glob-parent/index.js"(exports2, module22) { + "use strict"; + var isGlob = require_is_glob(); + var pathPosixDirname = require("path").posix.dirname; + var isWin32 = require("os").platform() === "win32"; + var slash = "/"; + var backslash = /\\/g; + var enclosure = /[\{\[].*[\}\]]$/; + var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; + var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + module22.exports = function globParent(str2, opts) { + var options = Object.assign({ + flipBackslashes: true + }, opts); + if (options.flipBackslashes && isWin32 && str2.indexOf(slash) < 0) { + str2 = str2.replace(backslash, slash); + } + if (enclosure.test(str2)) { + str2 += slash; + } + str2 += "a"; + do { + str2 = pathPosixDirname(str2); + } while (isGlob(str2) || globby.test(str2)); + return str2.replace(escaped, "$1"); + }; + } + }); + var require_pattern = __commonJS22({ + "node_modules/fast-glob/out/utils/pattern.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.matchAny = exports2.convertPatternsToRe = exports2.makeRe = exports2.getPatternParts = exports2.expandBraceExpansion = exports2.expandPatternsWithBraceExpansion = exports2.isAffectDepthOfReadingPattern = exports2.endsWithSlashGlobStar = exports2.hasGlobStar = exports2.getBaseDirectory = exports2.isPatternRelatedToParentDirectory = exports2.getPatternsOutsideCurrentDirectory = exports2.getPatternsInsideCurrentDirectory = exports2.getPositivePatterns = exports2.getNegativePatterns = exports2.isPositivePattern = exports2.isNegativePattern = exports2.convertToNegativePattern = exports2.convertToPositivePattern = exports2.isDynamicPattern = exports2.isStaticPattern = void 0; + var path2 = require("path"); + var globParent = require_glob_parent(); + var micromatch = require_micromatch(); + var GLOBSTAR = "**"; + var ESCAPE_SYMBOL = "\\"; + var COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; + var REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; + var REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; + var GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; + var BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; + function isStaticPattern(pattern, options = {}) { + return !isDynamicPattern(pattern, options); + } + exports2.isStaticPattern = isStaticPattern; + function isDynamicPattern(pattern, options = {}) { + if (pattern === "") { + return false; + } + if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { + return true; + } + if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.braceExpansion !== false && hasBraceExpansion(pattern)) { + return true; + } + return false; + } + exports2.isDynamicPattern = isDynamicPattern; + function hasBraceExpansion(pattern) { + const openingBraceIndex = pattern.indexOf("{"); + if (openingBraceIndex === -1) { + return false; + } + const closingBraceIndex = pattern.indexOf("}", openingBraceIndex + 1); + if (closingBraceIndex === -1) { + return false; + } + const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex); + return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent); + } + function convertToPositivePattern(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; + } + exports2.convertToPositivePattern = convertToPositivePattern; + function convertToNegativePattern(pattern) { + return "!" + pattern; + } + exports2.convertToNegativePattern = convertToNegativePattern; + function isNegativePattern(pattern) { + return pattern.startsWith("!") && pattern[1] !== "("; + } + exports2.isNegativePattern = isNegativePattern; + function isPositivePattern(pattern) { + return !isNegativePattern(pattern); + } + exports2.isPositivePattern = isPositivePattern; + function getNegativePatterns(patterns) { + return patterns.filter(isNegativePattern); + } + exports2.getNegativePatterns = getNegativePatterns; + function getPositivePatterns(patterns) { + return patterns.filter(isPositivePattern); + } + exports2.getPositivePatterns = getPositivePatterns; + function getPatternsInsideCurrentDirectory(patterns) { + return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); + } + exports2.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; + function getPatternsOutsideCurrentDirectory(patterns) { + return patterns.filter(isPatternRelatedToParentDirectory); + } + exports2.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; + function isPatternRelatedToParentDirectory(pattern) { + return pattern.startsWith("..") || pattern.startsWith("./.."); + } + exports2.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; + function getBaseDirectory(pattern) { + return globParent(pattern, { + flipBackslashes: false + }); + } + exports2.getBaseDirectory = getBaseDirectory; + function hasGlobStar(pattern) { + return pattern.includes(GLOBSTAR); + } + exports2.hasGlobStar = hasGlobStar; + function endsWithSlashGlobStar(pattern) { + return pattern.endsWith("/" + GLOBSTAR); + } + exports2.endsWithSlashGlobStar = endsWithSlashGlobStar; + function isAffectDepthOfReadingPattern(pattern) { + const basename = path2.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); + } + exports2.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; + function expandPatternsWithBraceExpansion(patterns) { + return patterns.reduce((collection, pattern) => { + return collection.concat(expandBraceExpansion(pattern)); + }, []); + } + exports2.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; + function expandBraceExpansion(pattern) { + return micromatch.braces(pattern, { + expand: true, + nodupes: true + }); + } + exports2.expandBraceExpansion = expandBraceExpansion; + function getPatternParts(pattern, options) { + let { + parts + } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { + parts: true + })); + if (parts.length === 0) { + parts = [pattern]; + } + if (parts[0].startsWith("/")) { + parts[0] = parts[0].slice(1); + parts.unshift(""); + } + return parts; + } + exports2.getPatternParts = getPatternParts; + function makeRe(pattern, options) { + return micromatch.makeRe(pattern, options); + } + exports2.makeRe = makeRe; + function convertPatternsToRe(patterns, options) { + return patterns.map((pattern) => makeRe(pattern, options)); + } + exports2.convertPatternsToRe = convertPatternsToRe; + function matchAny(entry, patternsRe) { + return patternsRe.some((patternRe) => patternRe.test(entry)); + } + exports2.matchAny = matchAny; + } + }); + var require_merge2 = __commonJS22({ + "node_modules/merge2/index.js"(exports2, module22) { + "use strict"; + var Stream = require("stream"); + var PassThrough = Stream.PassThrough; + var slice = Array.prototype.slice; + module22.exports = merge2; + function merge2() { + const streamsQueue = []; + const args = slice.call(arguments); + let merging = false; + let options = args[args.length - 1]; + if (options && !Array.isArray(options) && options.pipe == null) { + args.pop(); + } else { + options = {}; + } + const doEnd = options.end !== false; + const doPipeError = options.pipeError === true; + if (options.objectMode == null) { + options.objectMode = true; + } + if (options.highWaterMark == null) { + options.highWaterMark = 64 * 1024; + } + const mergedStream = PassThrough(options); + function addStream() { + for (let i = 0, len = arguments.length; i < len; i++) { + streamsQueue.push(pauseStreams(arguments[i], options)); + } + mergeStream(); + return this; + } + function mergeStream() { + if (merging) { + return; + } + merging = true; + let streams = streamsQueue.shift(); + if (!streams) { + process.nextTick(endStream); + return; + } + if (!Array.isArray(streams)) { + streams = [streams]; + } + let pipesCount = streams.length + 1; + function next() { + if (--pipesCount > 0) { + return; + } + merging = false; + mergeStream(); + } + function pipe(stream) { + function onend() { + stream.removeListener("merge2UnpipeEnd", onend); + stream.removeListener("end", onend); + if (doPipeError) { + stream.removeListener("error", onerror); + } + next(); + } + function onerror(err) { + mergedStream.emit("error", err); + } + if (stream._readableState.endEmitted) { + return next(); + } + stream.on("merge2UnpipeEnd", onend); + stream.on("end", onend); + if (doPipeError) { + stream.on("error", onerror); + } + stream.pipe(mergedStream, { + end: false + }); + stream.resume(); + } + for (let i = 0; i < streams.length; i++) { + pipe(streams[i]); + } + next(); + } + function endStream() { + merging = false; + mergedStream.emit("queueDrain"); + if (doEnd) { + mergedStream.end(); + } + } + mergedStream.setMaxListeners(0); + mergedStream.add = addStream; + mergedStream.on("unpipe", function(stream) { + stream.emit("merge2UnpipeEnd"); + }); + if (args.length) { + addStream.apply(null, args); + } + return mergedStream; + } + function pauseStreams(streams, options) { + if (!Array.isArray(streams)) { + if (!streams._readableState && streams.pipe) { + streams = streams.pipe(PassThrough(options)); + } + if (!streams._readableState || !streams.pause || !streams.pipe) { + throw new Error("Only readable stream can be merged."); + } + streams.pause(); + } else { + for (let i = 0, len = streams.length; i < len; i++) { + streams[i] = pauseStreams(streams[i], options); + } + } + return streams; + } + } + }); + var require_stream = __commonJS22({ + "node_modules/fast-glob/out/utils/stream.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.merge = void 0; + var merge2 = require_merge2(); + function merge3(streams) { + const mergedStream = merge2(streams); + streams.forEach((stream) => { + stream.once("error", (error2) => mergedStream.emit("error", error2)); + }); + mergedStream.once("close", () => propagateCloseEventToSources(streams)); + mergedStream.once("end", () => propagateCloseEventToSources(streams)); + return mergedStream; + } + exports2.merge = merge3; + function propagateCloseEventToSources(streams) { + streams.forEach((stream) => stream.emit("close")); + } + } + }); + var require_string2 = __commonJS22({ + "node_modules/fast-glob/out/utils/string.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isEmpty = exports2.isString = void 0; + function isString(input) { + return typeof input === "string"; + } + exports2.isString = isString; + function isEmpty(input) { + return input === ""; + } + exports2.isEmpty = isEmpty; + } + }); + var require_utils4 = __commonJS22({ + "node_modules/fast-glob/out/utils/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.string = exports2.stream = exports2.pattern = exports2.path = exports2.fs = exports2.errno = exports2.array = void 0; + var array = require_array3(); + exports2.array = array; + var errno = require_errno(); + exports2.errno = errno; + var fs5 = require_fs(); + exports2.fs = fs5; + var path2 = require_path(); + exports2.path = path2; + var pattern = require_pattern(); + exports2.pattern = pattern; + var stream = require_stream(); + exports2.stream = stream; + var string = require_string2(); + exports2.string = string; + } + }); + var require_tasks = __commonJS22({ + "node_modules/fast-glob/out/managers/tasks.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.convertPatternGroupToTask = exports2.convertPatternGroupsToTasks = exports2.groupPatternsByBaseDirectory = exports2.getNegativePatternsAsPositive = exports2.getPositivePatterns = exports2.convertPatternsToTasks = exports2.generate = void 0; + var utils = require_utils4(); + function generate(patterns, settings) { + const positivePatterns = getPositivePatterns(patterns); + const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); + const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); + const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); + const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, false); + const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, true); + return staticTasks.concat(dynamicTasks); + } + exports2.generate = generate; + function convertPatternsToTasks(positive, negative, dynamic) { + const tasks = []; + const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); + const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); + const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); + const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); + tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); + if ("." in insideCurrentDirectoryGroup) { + tasks.push(convertPatternGroupToTask(".", patternsInsideCurrentDirectory, negative, dynamic)); + } else { + tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); + } + return tasks; + } + exports2.convertPatternsToTasks = convertPatternsToTasks; + function getPositivePatterns(patterns) { + return utils.pattern.getPositivePatterns(patterns); + } + exports2.getPositivePatterns = getPositivePatterns; + function getNegativePatternsAsPositive(patterns, ignore) { + const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); + const positive = negative.map(utils.pattern.convertToPositivePattern); + return positive; + } + exports2.getNegativePatternsAsPositive = getNegativePatternsAsPositive; + function groupPatternsByBaseDirectory(patterns) { + const group = {}; + return patterns.reduce((collection, pattern) => { + const base = utils.pattern.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } else { + collection[base] = [pattern]; + } + return collection; + }, group); + } + exports2.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; + function convertPatternGroupsToTasks(positive, negative, dynamic) { + return Object.keys(positive).map((base) => { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); + } + exports2.convertPatternGroupsToTasks = convertPatternGroupsToTasks; + function convertPatternGroupToTask(base, positive, negative, dynamic) { + return { + dynamic, + positive, + negative, + base, + patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) + }; + } + exports2.convertPatternGroupToTask = convertPatternGroupToTask; + } + }); + var require_patterns = __commonJS22({ + "node_modules/fast-glob/out/managers/patterns.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.removeDuplicateSlashes = exports2.transform = void 0; + var DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; + function transform(patterns) { + return patterns.map((pattern) => removeDuplicateSlashes(pattern)); + } + exports2.transform = transform; + function removeDuplicateSlashes(pattern) { + return pattern.replace(DOUBLE_SLASH_RE, "/"); + } + exports2.removeDuplicateSlashes = removeDuplicateSlashes; + } + }); + var require_async22 = __commonJS22({ + "node_modules/@nodelib/fs.stat/out/providers/async.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.read = void 0; + function read(path2, settings, callback) { + settings.fs.lstat(path2, (lstatError, lstat) => { + if (lstatError !== null) { + callFailureCallback(callback, lstatError); + return; + } + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + callSuccessCallback(callback, lstat); + return; + } + settings.fs.stat(path2, (statError, stat) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + callFailureCallback(callback, statError); + return; + } + callSuccessCallback(callback, lstat); + return; + } + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + callSuccessCallback(callback, stat); + }); + }); + } + exports2.read = read; + function callFailureCallback(callback, error2) { + callback(error2); + } + function callSuccessCallback(callback, result) { + callback(null, result); + } + } + }); + var require_sync22 = __commonJS22({ + "node_modules/@nodelib/fs.stat/out/providers/sync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.read = void 0; + function read(path2, settings) { + const lstat = settings.fs.lstatSync(path2); + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + return lstat; + } + try { + const stat = settings.fs.statSync(path2); + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + return stat; + } catch (error2) { + if (!settings.throwErrorOnBrokenSymbolicLink) { + return lstat; + } + throw error2; + } + } + exports2.read = read; + } + }); + var require_fs2 = __commonJS22({ + "node_modules/@nodelib/fs.stat/out/adapters/fs.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createFileSystemAdapter = exports2.FILE_SYSTEM_ADAPTER = void 0; + var fs5 = require("fs"); + exports2.FILE_SYSTEM_ADAPTER = { + lstat: fs5.lstat, + stat: fs5.stat, + lstatSync: fs5.lstatSync, + statSync: fs5.statSync + }; + function createFileSystemAdapter(fsMethods) { + if (fsMethods === void 0) { + return exports2.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports2.FILE_SYSTEM_ADAPTER), fsMethods); + } + exports2.createFileSystemAdapter = createFileSystemAdapter; + } + }); + var require_settings = __commonJS22({ + "node_modules/@nodelib/fs.stat/out/settings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var fs5 = require_fs2(); + var Settings = class { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); + this.fs = fs5.createFileSystemAdapter(this._options.fs); + this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } + }; + exports2.default = Settings; + } + }); + var require_out = __commonJS22({ + "node_modules/@nodelib/fs.stat/out/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.statSync = exports2.stat = exports2.Settings = void 0; + var async = require_async22(); + var sync = require_sync22(); + var settings_1 = require_settings(); + exports2.Settings = settings_1.default; + function stat(path2, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + async.read(path2, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path2, getSettings(optionsOrSettingsOrCallback), callback); + } + exports2.stat = stat; + function statSync(path2, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path2, settings); + } + exports2.statSync = statSync; + function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + } + } + }); + var require_queue_microtask = __commonJS22({ + "node_modules/queue-microtask/index.js"(exports2, module22) { + var promise; + module22.exports = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : global) : (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => { + throw err; + }, 0)); + } + }); + var require_run_parallel = __commonJS22({ + "node_modules/run-parallel/index.js"(exports2, module22) { + module22.exports = runParallel; + var queueMicrotask2 = require_queue_microtask(); + function runParallel(tasks, cb) { + let results, pending, keys; + let isSync = true; + if (Array.isArray(tasks)) { + results = []; + pending = tasks.length; + } else { + keys = Object.keys(tasks); + results = {}; + pending = keys.length; + } + function done(err) { + function end() { + if (cb) + cb(err, results); + cb = null; + } + if (isSync) + queueMicrotask2(end); + else + end(); + } + function each(i, err, result) { + results[i] = result; + if (--pending === 0 || err) { + done(err); + } + } + if (!pending) { + done(null); + } else if (keys) { + keys.forEach(function(key) { + tasks[key](function(err, result) { + each(key, err, result); + }); + }); + } else { + tasks.forEach(function(task, i) { + task(function(err, result) { + each(i, err, result); + }); + }); + } + isSync = false; + } + } + }); + var require_constants4 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0; + var NODE_PROCESS_VERSION_PARTS = process.versions.node.split("."); + if (NODE_PROCESS_VERSION_PARTS[0] === void 0 || NODE_PROCESS_VERSION_PARTS[1] === void 0) { + throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); + } + var MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); + var MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); + var SUPPORTED_MAJOR_VERSION = 10; + var SUPPORTED_MINOR_VERSION = 10; + var IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; + var IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; + exports2.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; + } + }); + var require_fs3 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/utils/fs.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createDirentFromStats = void 0; + var DirentFromStats = class { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } + }; + function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); + } + exports2.createDirentFromStats = createDirentFromStats; + } + }); + var require_utils5 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/utils/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fs = void 0; + var fs5 = require_fs3(); + exports2.fs = fs5; + } + }); + var require_common3 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/providers/common.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.joinPathSegments = void 0; + function joinPathSegments(a, b, separator) { + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; + } + exports2.joinPathSegments = joinPathSegments; + } + }); + var require_async3 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/providers/async.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.readdir = exports2.readdirWithFileTypes = exports2.read = void 0; + var fsStat = require_out(); + var rpl = require_run_parallel(); + var constants_1 = require_constants4(); + var utils = require_utils5(); + var common2 = require_common3(); + function read(directory, settings, callback) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + readdirWithFileTypes(directory, settings, callback); + return; + } + readdir(directory, settings, callback); + } + exports2.read = read; + function readdirWithFileTypes(directory, settings, callback) { + settings.fs.readdir(directory, { + withFileTypes: true + }, (readdirError, dirents) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const entries = dirents.map((dirent) => ({ + dirent, + name: dirent.name, + path: common2.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + })); + if (!settings.followSymbolicLinks) { + callSuccessCallback(callback, entries); + return; + } + const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); + rpl(tasks, (rplError, rplEntries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, rplEntries); + }); + }); + } + exports2.readdirWithFileTypes = readdirWithFileTypes; + function makeRplTaskEntry(entry, settings) { + return (done) => { + if (!entry.dirent.isSymbolicLink()) { + done(null, entry); + return; + } + settings.fs.stat(entry.path, (statError, stats) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + done(statError); + return; + } + done(null, entry); + return; + } + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + done(null, entry); + }); + }; + } + function readdir(directory, settings, callback) { + settings.fs.readdir(directory, (readdirError, names) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const tasks = names.map((name) => { + const path2 = common2.joinPathSegments(directory, name, settings.pathSegmentSeparator); + return (done) => { + fsStat.stat(path2, settings.fsStatSettings, (error2, stats) => { + if (error2 !== null) { + done(error2); + return; + } + const entry = { + name, + path: path2, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + done(null, entry); + }); + }; + }); + rpl(tasks, (rplError, entries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, entries); + }); + }); + } + exports2.readdir = readdir; + function callFailureCallback(callback, error2) { + callback(error2); + } + function callSuccessCallback(callback, result) { + callback(null, result); + } + } + }); + var require_sync3 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/providers/sync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.readdir = exports2.readdirWithFileTypes = exports2.read = void 0; + var fsStat = require_out(); + var constants_1 = require_constants4(); + var utils = require_utils5(); + var common2 = require_common3(); + function read(directory, settings) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + return readdirWithFileTypes(directory, settings); + } + return readdir(directory, settings); + } + exports2.read = read; + function readdirWithFileTypes(directory, settings) { + const dirents = settings.fs.readdirSync(directory, { + withFileTypes: true + }); + return dirents.map((dirent) => { + const entry = { + dirent, + name: dirent.name, + path: common2.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + }; + if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { + try { + const stats = settings.fs.statSync(entry.path); + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + } catch (error2) { + if (settings.throwErrorOnBrokenSymbolicLink) { + throw error2; + } + } + } + return entry; + }); + } + exports2.readdirWithFileTypes = readdirWithFileTypes; + function readdir(directory, settings) { + const names = settings.fs.readdirSync(directory); + return names.map((name) => { + const entryPath = common2.joinPathSegments(directory, name, settings.pathSegmentSeparator); + const stats = fsStat.statSync(entryPath, settings.fsStatSettings); + const entry = { + name, + path: entryPath, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + return entry; + }); + } + exports2.readdir = readdir; + } + }); + var require_fs4 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/adapters/fs.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createFileSystemAdapter = exports2.FILE_SYSTEM_ADAPTER = void 0; + var fs5 = require("fs"); + exports2.FILE_SYSTEM_ADAPTER = { + lstat: fs5.lstat, + stat: fs5.stat, + lstatSync: fs5.lstatSync, + statSync: fs5.statSync, + readdir: fs5.readdir, + readdirSync: fs5.readdirSync + }; + function createFileSystemAdapter(fsMethods) { + if (fsMethods === void 0) { + return exports2.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports2.FILE_SYSTEM_ADAPTER), fsMethods); + } + exports2.createFileSystemAdapter = createFileSystemAdapter; + } + }); + var require_settings2 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/settings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var path2 = require("path"); + var fsStat = require_out(); + var fs5 = require_fs4(); + var Settings = class { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); + this.fs = fs5.createFileSystemAdapter(this._options.fs); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path2.sep); + this.stats = this._getValue(this._options.stats, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + this.fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this.followSymbolicLinks, + fs: this.fs, + throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } + }; + exports2.default = Settings; + } + }); + var require_out2 = __commonJS22({ + "node_modules/@nodelib/fs.scandir/out/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Settings = exports2.scandirSync = exports2.scandir = void 0; + var async = require_async3(); + var sync = require_sync3(); + var settings_1 = require_settings2(); + exports2.Settings = settings_1.default; + function scandir(path2, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + async.read(path2, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path2, getSettings(optionsOrSettingsOrCallback), callback); + } + exports2.scandir = scandir; + function scandirSync(path2, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path2, settings); + } + exports2.scandirSync = scandirSync; + function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + } + } + }); + var require_reusify = __commonJS22({ + "node_modules/reusify/reusify.js"(exports2, module22) { + "use strict"; + function reusify(Constructor) { + var head = new Constructor(); + var tail = head; + function get2() { + var current = head; + if (current.next) { + head = current.next; + } else { + head = new Constructor(); + tail = head; + } + current.next = null; + return current; + } + function release(obj) { + tail.next = obj; + tail = obj; + } + return { + get: get2, + release + }; + } + module22.exports = reusify; + } + }); + var require_queue = __commonJS22({ + "node_modules/fastq/queue.js"(exports2, module22) { + "use strict"; + var reusify = require_reusify(); + function fastqueue(context, worker, concurrency) { + if (typeof context === "function") { + concurrency = worker; + worker = context; + context = null; + } + if (concurrency < 1) { + throw new Error("fastqueue concurrency must be greater than 1"); + } + var cache = reusify(Task); + var queueHead = null; + var queueTail = null; + var _running = 0; + var errorHandler = null; + var self2 = { + push, + drain: noop, + saturated: noop, + pause, + paused: false, + concurrency, + running, + resume, + idle, + length, + getQueue, + unshift, + empty: noop, + kill, + killAndDrain, + error: error2 + }; + return self2; + function running() { + return _running; + } + function pause() { + self2.paused = true; + } + function length() { + var current = queueHead; + var counter = 0; + while (current) { + current = current.next; + counter++; + } + return counter; + } + function getQueue() { + var current = queueHead; + var tasks = []; + while (current) { + tasks.push(current.value); + current = current.next; + } + return tasks; + } + function resume() { + if (!self2.paused) + return; + self2.paused = false; + for (var i = 0; i < self2.concurrency; i++) { + _running++; + release(); + } + } + function idle() { + return _running === 0 && self2.length() === 0; + } + function push(value, done) { + var current = cache.get(); + current.context = context; + current.release = release; + current.value = value; + current.callback = done || noop; + current.errorHandler = errorHandler; + if (_running === self2.concurrency || self2.paused) { + if (queueTail) { + queueTail.next = current; + queueTail = current; + } else { + queueHead = current; + queueTail = current; + self2.saturated(); + } + } else { + _running++; + worker.call(context, current.value, current.worked); + } + } + function unshift(value, done) { + var current = cache.get(); + current.context = context; + current.release = release; + current.value = value; + current.callback = done || noop; + if (_running === self2.concurrency || self2.paused) { + if (queueHead) { + current.next = queueHead; + queueHead = current; + } else { + queueHead = current; + queueTail = current; + self2.saturated(); + } + } else { + _running++; + worker.call(context, current.value, current.worked); + } + } + function release(holder) { + if (holder) { + cache.release(holder); + } + var next = queueHead; + if (next) { + if (!self2.paused) { + if (queueTail === queueHead) { + queueTail = null; + } + queueHead = next.next; + next.next = null; + worker.call(context, next.value, next.worked); + if (queueTail === null) { + self2.empty(); + } + } else { + _running--; + } + } else if (--_running === 0) { + self2.drain(); + } + } + function kill() { + queueHead = null; + queueTail = null; + self2.drain = noop; + } + function killAndDrain() { + queueHead = null; + queueTail = null; + self2.drain(); + self2.drain = noop; + } + function error2(handler) { + errorHandler = handler; + } + } + function noop() { + } + function Task() { + this.value = null; + this.callback = noop; + this.next = null; + this.release = noop; + this.context = null; + this.errorHandler = null; + var self2 = this; + this.worked = function worked(err, result) { + var callback = self2.callback; + var errorHandler = self2.errorHandler; + var val = self2.value; + self2.value = null; + self2.callback = noop; + if (self2.errorHandler) { + errorHandler(err, val); + } + callback.call(self2.context, err, result); + self2.release(self2); + }; + } + function queueAsPromised(context, worker, concurrency) { + if (typeof context === "function") { + concurrency = worker; + worker = context; + context = null; + } + function asyncWrapper(arg, cb) { + worker.call(this, arg).then(function(res) { + cb(null, res); + }, cb); + } + var queue = fastqueue(context, asyncWrapper, concurrency); + var pushCb = queue.push; + var unshiftCb = queue.unshift; + queue.push = push; + queue.unshift = unshift; + queue.drained = drained; + return queue; + function push(value) { + var p = new Promise(function(resolve, reject) { + pushCb(value, function(err, result) { + if (err) { + reject(err); + return; + } + resolve(result); + }); + }); + p.catch(noop); + return p; + } + function unshift(value) { + var p = new Promise(function(resolve, reject) { + unshiftCb(value, function(err, result) { + if (err) { + reject(err); + return; + } + resolve(result); + }); + }); + p.catch(noop); + return p; + } + function drained() { + var previousDrain = queue.drain; + var p = new Promise(function(resolve) { + queue.drain = function() { + previousDrain(); + resolve(); + }; + }); + return p; + } + } + module22.exports = fastqueue; + module22.exports.promise = queueAsPromised; + } + }); + var require_common4 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/readers/common.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.joinPathSegments = exports2.replacePathSegmentSeparator = exports2.isAppliedFilter = exports2.isFatalError = void 0; + function isFatalError(settings, error2) { + if (settings.errorFilter === null) { + return true; + } + return !settings.errorFilter(error2); + } + exports2.isFatalError = isFatalError; + function isAppliedFilter(filter, value) { + return filter === null || filter(value); + } + exports2.isAppliedFilter = isAppliedFilter; + function replacePathSegmentSeparator(filepath, separator) { + return filepath.split(/[/\\]/).join(separator); + } + exports2.replacePathSegmentSeparator = replacePathSegmentSeparator; + function joinPathSegments(a, b, separator) { + if (a === "") { + return b; + } + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; + } + exports2.joinPathSegments = joinPathSegments; + } + }); + var require_reader = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/readers/reader.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var common2 = require_common4(); + var Reader = class { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._root = common2.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); + } + }; + exports2.default = Reader; + } + }); + var require_async4 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/readers/async.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var events_1 = require("events"); + var fsScandir = require_out2(); + var fastq = require_queue(); + var common2 = require_common4(); + var reader_1 = require_reader(); + var AsyncReader = class extends reader_1.default { + constructor(_root, _settings) { + super(_root, _settings); + this._settings = _settings; + this._scandir = fsScandir.scandir; + this._emitter = new events_1.EventEmitter(); + this._queue = fastq(this._worker.bind(this), this._settings.concurrency); + this._isFatalError = false; + this._isDestroyed = false; + this._queue.drain = () => { + if (!this._isFatalError) { + this._emitter.emit("end"); + } + }; + } + read() { + this._isFatalError = false; + this._isDestroyed = false; + setImmediate(() => { + this._pushToQueue(this._root, this._settings.basePath); + }); + return this._emitter; + } + get isDestroyed() { + return this._isDestroyed; + } + destroy() { + if (this._isDestroyed) { + throw new Error("The reader is already destroyed"); + } + this._isDestroyed = true; + this._queue.killAndDrain(); + } + onEntry(callback) { + this._emitter.on("entry", callback); + } + onError(callback) { + this._emitter.once("error", callback); + } + onEnd(callback) { + this._emitter.once("end", callback); + } + _pushToQueue(directory, base) { + const queueItem = { + directory, + base + }; + this._queue.push(queueItem, (error2) => { + if (error2 !== null) { + this._handleError(error2); + } + }); + } + _worker(item, done) { + this._scandir(item.directory, this._settings.fsScandirSettings, (error2, entries) => { + if (error2 !== null) { + done(error2, void 0); + return; + } + for (const entry of entries) { + this._handleEntry(entry, item.base); + } + done(null, void 0); + }); + } + _handleError(error2) { + if (this._isDestroyed || !common2.isFatalError(this._settings, error2)) { + return; + } + this._isFatalError = true; + this._isDestroyed = true; + this._emitter.emit("error", error2); + } + _handleEntry(entry, base) { + if (this._isDestroyed || this._isFatalError) { + return; + } + const fullpath = entry.path; + if (base !== void 0) { + entry.path = common2.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common2.isAppliedFilter(this._settings.entryFilter, entry)) { + this._emitEntry(entry); + } + if (entry.dirent.isDirectory() && common2.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === void 0 ? void 0 : entry.path); + } + } + _emitEntry(entry) { + this._emitter.emit("entry", entry); + } + }; + exports2.default = AsyncReader; + } + }); + var require_async5 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/providers/async.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var async_1 = require_async4(); + var AsyncProvider = class { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._storage = []; + } + read(callback) { + this._reader.onError((error2) => { + callFailureCallback(callback, error2); + }); + this._reader.onEntry((entry) => { + this._storage.push(entry); + }); + this._reader.onEnd(() => { + callSuccessCallback(callback, this._storage); + }); + this._reader.read(); + } + }; + exports2.default = AsyncProvider; + function callFailureCallback(callback, error2) { + callback(error2); + } + function callSuccessCallback(callback, entries) { + callback(null, entries); + } + } + }); + var require_stream2 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/providers/stream.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var stream_1 = require("stream"); + var async_1 = require_async4(); + var StreamProvider = class { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._stream = new stream_1.Readable({ + objectMode: true, + read: () => { + }, + destroy: () => { + if (!this._reader.isDestroyed) { + this._reader.destroy(); + } + } + }); + } + read() { + this._reader.onError((error2) => { + this._stream.emit("error", error2); + }); + this._reader.onEntry((entry) => { + this._stream.push(entry); + }); + this._reader.onEnd(() => { + this._stream.push(null); + }); + this._reader.read(); + return this._stream; + } + }; + exports2.default = StreamProvider; + } + }); + var require_sync4 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/readers/sync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var fsScandir = require_out2(); + var common2 = require_common4(); + var reader_1 = require_reader(); + var SyncReader = class extends reader_1.default { + constructor() { + super(...arguments); + this._scandir = fsScandir.scandirSync; + this._storage = []; + this._queue = /* @__PURE__ */ new Set(); + } + read() { + this._pushToQueue(this._root, this._settings.basePath); + this._handleQueue(); + return this._storage; + } + _pushToQueue(directory, base) { + this._queue.add({ + directory, + base + }); + } + _handleQueue() { + for (const item of this._queue.values()) { + this._handleDirectory(item.directory, item.base); + } + } + _handleDirectory(directory, base) { + try { + const entries = this._scandir(directory, this._settings.fsScandirSettings); + for (const entry of entries) { + this._handleEntry(entry, base); + } + } catch (error2) { + this._handleError(error2); + } + } + _handleError(error2) { + if (!common2.isFatalError(this._settings, error2)) { + return; + } + throw error2; + } + _handleEntry(entry, base) { + const fullpath = entry.path; + if (base !== void 0) { + entry.path = common2.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common2.isAppliedFilter(this._settings.entryFilter, entry)) { + this._pushToStorage(entry); + } + if (entry.dirent.isDirectory() && common2.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === void 0 ? void 0 : entry.path); + } + } + _pushToStorage(entry) { + this._storage.push(entry); + } + }; + exports2.default = SyncReader; + } + }); + var require_sync5 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/providers/sync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var sync_1 = require_sync4(); + var SyncProvider = class { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new sync_1.default(this._root, this._settings); + } + read() { + return this._reader.read(); + } + }; + exports2.default = SyncProvider; + } + }); + var require_settings3 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/settings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var path2 = require("path"); + var fsScandir = require_out2(); + var Settings = class { + constructor(_options = {}) { + this._options = _options; + this.basePath = this._getValue(this._options.basePath, void 0); + this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); + this.deepFilter = this._getValue(this._options.deepFilter, null); + this.entryFilter = this._getValue(this._options.entryFilter, null); + this.errorFilter = this._getValue(this._options.errorFilter, null); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path2.sep); + this.fsScandirSettings = new fsScandir.Settings({ + followSymbolicLinks: this._options.followSymbolicLinks, + fs: this._options.fs, + pathSegmentSeparator: this._options.pathSegmentSeparator, + stats: this._options.stats, + throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } + }; + exports2.default = Settings; + } + }); + var require_out3 = __commonJS22({ + "node_modules/@nodelib/fs.walk/out/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Settings = exports2.walkStream = exports2.walkSync = exports2.walk = void 0; + var async_1 = require_async5(); + var stream_1 = require_stream2(); + var sync_1 = require_sync5(); + var settings_1 = require_settings3(); + exports2.Settings = settings_1.default; + function walk(directory, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === "function") { + new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); + return; + } + new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); + } + exports2.walk = walk; + function walkSync(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new sync_1.default(directory, settings); + return provider.read(); + } + exports2.walkSync = walkSync; + function walkStream(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new stream_1.default(directory, settings); + return provider.read(); + } + exports2.walkStream = walkStream; + function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); + } + } + }); + var require_reader2 = __commonJS22({ + "node_modules/fast-glob/out/readers/reader.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var path2 = require("path"); + var fsStat = require_out(); + var utils = require_utils4(); + var Reader = class { + constructor(_settings) { + this._settings = _settings; + this._fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this._settings.followSymbolicLinks, + fs: this._settings.fs, + throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks + }); + } + _getFullEntryPath(filepath) { + return path2.resolve(this._settings.cwd, filepath); + } + _makeEntry(stats, pattern) { + const entry = { + name: pattern, + path: pattern, + dirent: utils.fs.createDirentFromStats(pattern, stats) + }; + if (this._settings.stats) { + entry.stats = stats; + } + return entry; + } + _isFatalError(error2) { + return !utils.errno.isEnoentCodeError(error2) && !this._settings.suppressErrors; + } + }; + exports2.default = Reader; + } + }); + var require_stream3 = __commonJS22({ + "node_modules/fast-glob/out/readers/stream.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var stream_1 = require("stream"); + var fsStat = require_out(); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + var ReaderStream = class extends reader_1.default { + constructor() { + super(...arguments); + this._walkStream = fsWalk.walkStream; + this._stat = fsStat.stat; + } + dynamic(root, options) { + return this._walkStream(root, options); + } + static(patterns, options) { + const filepaths = patterns.map(this._getFullEntryPath, this); + const stream = new stream_1.PassThrough({ + objectMode: true + }); + stream._write = (index, _enc, done) => { + return this._getEntry(filepaths[index], patterns[index], options).then((entry) => { + if (entry !== null && options.entryFilter(entry)) { + stream.push(entry); + } + if (index === filepaths.length - 1) { + stream.end(); + } + done(); + }).catch(done); + }; + for (let i = 0; i < filepaths.length; i++) { + stream.write(i); + } + return stream; + } + _getEntry(filepath, pattern, options) { + return this._getStat(filepath).then((stats) => this._makeEntry(stats, pattern)).catch((error2) => { + if (options.errorFilter(error2)) { + return null; + } + throw error2; + }); + } + _getStat(filepath) { + return new Promise((resolve, reject) => { + this._stat(filepath, this._fsStatSettings, (error2, stats) => { + return error2 === null ? resolve(stats) : reject(error2); + }); + }); + } + }; + exports2.default = ReaderStream; + } + }); + var require_matcher = __commonJS22({ + "node_modules/fast-glob/out/providers/matchers/matcher.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils = require_utils4(); + var Matcher = class { + constructor(_patterns, _settings, _micromatchOptions) { + this._patterns = _patterns; + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this._storage = []; + this._fillStorage(); + } + _fillStorage() { + const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns); + for (const pattern of patterns) { + const segments = this._getPatternSegments(pattern); + const sections = this._splitSegmentsIntoSections(segments); + this._storage.push({ + complete: sections.length <= 1, + pattern, + segments, + sections + }); + } + } + _getPatternSegments(pattern) { + const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); + return parts.map((part) => { + const dynamic = utils.pattern.isDynamicPattern(part, this._settings); + if (!dynamic) { + return { + dynamic: false, + pattern: part + }; + } + return { + dynamic: true, + pattern: part, + patternRe: utils.pattern.makeRe(part, this._micromatchOptions) + }; + }); + } + _splitSegmentsIntoSections(segments) { + return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); + } + }; + exports2.default = Matcher; + } + }); + var require_partial = __commonJS22({ + "node_modules/fast-glob/out/providers/matchers/partial.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var matcher_1 = require_matcher(); + var PartialMatcher = class extends matcher_1.default { + match(filepath) { + const parts = filepath.split("/"); + const levels = parts.length; + const patterns = this._storage.filter((info2) => !info2.complete || info2.segments.length > levels); + for (const pattern of patterns) { + const section = pattern.sections[0]; + if (!pattern.complete && levels > section.length) { + return true; + } + const match = parts.every((part, index) => { + const segment = pattern.segments[index]; + if (segment.dynamic && segment.patternRe.test(part)) { + return true; + } + if (!segment.dynamic && segment.pattern === part) { + return true; + } + return false; + }); + if (match) { + return true; + } + } + return false; + } + }; + exports2.default = PartialMatcher; + } + }); + var require_deep = __commonJS22({ + "node_modules/fast-glob/out/providers/filters/deep.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils = require_utils4(); + var partial_1 = require_partial(); + var DeepFilter = class { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + } + getFilter(basePath, positive, negative) { + const matcher = this._getMatcher(positive); + const negativeRe = this._getNegativePatternsRe(negative); + return (entry) => this._filter(basePath, entry, matcher, negativeRe); + } + _getMatcher(patterns) { + return new partial_1.default(patterns, this._settings, this._micromatchOptions); + } + _getNegativePatternsRe(patterns) { + const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); + return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); + } + _filter(basePath, entry, matcher, negativeRe) { + if (this._isSkippedByDeep(basePath, entry.path)) { + return false; + } + if (this._isSkippedSymbolicLink(entry)) { + return false; + } + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._isSkippedByPositivePatterns(filepath, matcher)) { + return false; + } + return this._isSkippedByNegativePatterns(filepath, negativeRe); + } + _isSkippedByDeep(basePath, entryPath) { + if (this._settings.deep === Infinity) { + return false; + } + return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; + } + _getEntryLevel(basePath, entryPath) { + const entryPathDepth = entryPath.split("/").length; + if (basePath === "") { + return entryPathDepth; + } + const basePathDepth = basePath.split("/").length; + return entryPathDepth - basePathDepth; + } + _isSkippedSymbolicLink(entry) { + return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); + } + _isSkippedByPositivePatterns(entryPath, matcher) { + return !this._settings.baseNameMatch && !matcher.match(entryPath); + } + _isSkippedByNegativePatterns(entryPath, patternsRe) { + return !utils.pattern.matchAny(entryPath, patternsRe); + } + }; + exports2.default = DeepFilter; + } + }); + var require_entry = __commonJS22({ + "node_modules/fast-glob/out/providers/filters/entry.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils = require_utils4(); + var EntryFilter = class { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this.index = /* @__PURE__ */ new Map(); + } + getFilter(positive, negative) { + const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions); + return (entry) => this._filter(entry, positiveRe, negativeRe); + } + _filter(entry, positiveRe, negativeRe) { + if (this._settings.unique && this._isDuplicateEntry(entry)) { + return false; + } + if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { + return false; + } + if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) { + return false; + } + const filepath = this._settings.baseNameMatch ? entry.name : entry.path; + const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe); + if (this._settings.unique && isMatched) { + this._createIndexRecord(entry); + } + return isMatched; + } + _isDuplicateEntry(entry) { + return this.index.has(entry.path); + } + _createIndexRecord(entry) { + this.index.set(entry.path, void 0); + } + _onlyFileFilter(entry) { + return this._settings.onlyFiles && !entry.dirent.isFile(); + } + _onlyDirectoryFilter(entry) { + return this._settings.onlyDirectories && !entry.dirent.isDirectory(); + } + _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { + if (!this._settings.absolute) { + return false; + } + const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); + return utils.pattern.matchAny(fullpath, patternsRe); + } + _isMatchToPatterns(entryPath, patternsRe) { + const filepath = utils.path.removeLeadingDotSegment(entryPath); + return utils.pattern.matchAny(filepath, patternsRe) || utils.pattern.matchAny(filepath + "/", patternsRe); + } + }; + exports2.default = EntryFilter; + } + }); + var require_error = __commonJS22({ + "node_modules/fast-glob/out/providers/filters/error.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils = require_utils4(); + var ErrorFilter = class { + constructor(_settings) { + this._settings = _settings; + } + getFilter() { + return (error2) => this._isNonFatalError(error2); + } + _isNonFatalError(error2) { + return utils.errno.isEnoentCodeError(error2) || this._settings.suppressErrors; + } + }; + exports2.default = ErrorFilter; + } + }); + var require_entry2 = __commonJS22({ + "node_modules/fast-glob/out/providers/transformers/entry.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils = require_utils4(); + var EntryTransformer = class { + constructor(_settings) { + this._settings = _settings; + } + getTransformer() { + return (entry) => this._transform(entry); + } + _transform(entry) { + let filepath = entry.path; + if (this._settings.absolute) { + filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); + filepath = utils.path.unixify(filepath); + } + if (this._settings.markDirectories && entry.dirent.isDirectory()) { + filepath += "/"; + } + if (!this._settings.objectMode) { + return filepath; + } + return Object.assign(Object.assign({}, entry), { + path: filepath + }); + } + }; + exports2.default = EntryTransformer; + } + }); + var require_provider2 = __commonJS22({ + "node_modules/fast-glob/out/providers/provider.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var path2 = require("path"); + var deep_1 = require_deep(); + var entry_1 = require_entry(); + var error_1 = require_error(); + var entry_2 = require_entry2(); + var Provider2 = class { + constructor(_settings) { + this._settings = _settings; + this.errorFilter = new error_1.default(this._settings); + this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); + this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); + this.entryTransformer = new entry_2.default(this._settings); + } + _getRootDirectory(task) { + return path2.resolve(this._settings.cwd, task.base); + } + _getReaderOptions(task) { + const basePath = task.base === "." ? "" : task.base; + return { + basePath, + pathSegmentSeparator: "/", + concurrency: this._settings.concurrency, + deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), + entryFilter: this.entryFilter.getFilter(task.positive, task.negative), + errorFilter: this.errorFilter.getFilter(), + followSymbolicLinks: this._settings.followSymbolicLinks, + fs: this._settings.fs, + stats: this._settings.stats, + throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, + transform: this.entryTransformer.getTransformer() + }; + } + _getMicromatchOptions() { + return { + dot: this._settings.dot, + matchBase: this._settings.baseNameMatch, + nobrace: !this._settings.braceExpansion, + nocase: !this._settings.caseSensitiveMatch, + noext: !this._settings.extglob, + noglobstar: !this._settings.globstar, + posix: true, + strictSlashes: false + }; + } + }; + exports2.default = Provider2; + } + }); + var require_async6 = __commonJS22({ + "node_modules/fast-glob/out/providers/async.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var stream_1 = require_stream3(); + var provider_1 = require_provider2(); + var ProviderAsync = class extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = []; + return new Promise((resolve, reject) => { + const stream = this.api(root, task, options); + stream.once("error", reject); + stream.on("data", (entry) => entries.push(options.transform(entry))); + stream.once("end", () => resolve(entries)); + }); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + }; + exports2.default = ProviderAsync; + } + }); + var require_stream4 = __commonJS22({ + "node_modules/fast-glob/out/providers/stream.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var stream_1 = require("stream"); + var stream_2 = require_stream3(); + var provider_1 = require_provider2(); + var ProviderStream = class extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_2.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const source = this.api(root, task, options); + const destination = new stream_1.Readable({ + objectMode: true, + read: () => { + } + }); + source.once("error", (error2) => destination.emit("error", error2)).on("data", (entry) => destination.emit("data", options.transform(entry))).once("end", () => destination.emit("end")); + destination.once("close", () => source.destroy()); + return destination; + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + }; + exports2.default = ProviderStream; + } + }); + var require_sync6 = __commonJS22({ + "node_modules/fast-glob/out/readers/sync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var fsStat = require_out(); + var fsWalk = require_out3(); + var reader_1 = require_reader2(); + var ReaderSync = class extends reader_1.default { + constructor() { + super(...arguments); + this._walkSync = fsWalk.walkSync; + this._statSync = fsStat.statSync; + } + dynamic(root, options) { + return this._walkSync(root, options); + } + static(patterns, options) { + const entries = []; + for (const pattern of patterns) { + const filepath = this._getFullEntryPath(pattern); + const entry = this._getEntry(filepath, pattern, options); + if (entry === null || !options.entryFilter(entry)) { + continue; + } + entries.push(entry); + } + return entries; + } + _getEntry(filepath, pattern, options) { + try { + const stats = this._getStat(filepath); + return this._makeEntry(stats, pattern); + } catch (error2) { + if (options.errorFilter(error2)) { + return null; + } + throw error2; + } + } + _getStat(filepath) { + return this._statSync(filepath, this._fsStatSettings); + } + }; + exports2.default = ReaderSync; + } + }); + var require_sync7 = __commonJS22({ + "node_modules/fast-glob/out/providers/sync.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var sync_1 = require_sync6(); + var provider_1 = require_provider2(); + var ProviderSync = class extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new sync_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = this.api(root, task, options); + return entries.map(options.transform); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } + }; + exports2.default = ProviderSync; + } + }); + var require_settings4 = __commonJS22({ + "node_modules/fast-glob/out/settings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; + var fs5 = require("fs"); + var os = require("os"); + var CPU_COUNT = Math.max(os.cpus().length, 1); + exports2.DEFAULT_FILE_SYSTEM_ADAPTER = { + lstat: fs5.lstat, + lstatSync: fs5.lstatSync, + stat: fs5.stat, + statSync: fs5.statSync, + readdir: fs5.readdir, + readdirSync: fs5.readdirSync + }; + var Settings = class { + constructor(_options = {}) { + this._options = _options; + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + } + _getValue(option, value) { + return option === void 0 ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports2.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } + }; + exports2.default = Settings; + } + }); + var require_out4 = __commonJS22({ + "node_modules/fast-glob/out/index.js"(exports2, module22) { + "use strict"; + var taskManager = require_tasks(); + var patternManager = require_patterns(); + var async_1 = require_async6(); + var stream_1 = require_stream4(); + var sync_1 = require_sync7(); + var settings_1 = require_settings4(); + var utils = require_utils4(); + async function FastGlob(source, options) { + assertPatternsInput(source); + const works = getWorks(source, async_1.default, options); + const result = await Promise.all(works); + return utils.array.flatten(result); + } + (function(FastGlob2) { + function sync(source, options) { + assertPatternsInput(source); + const works = getWorks(source, sync_1.default, options); + return utils.array.flatten(works); + } + FastGlob2.sync = sync; + function stream(source, options) { + assertPatternsInput(source); + const works = getWorks(source, stream_1.default, options); + return utils.stream.merge(works); + } + FastGlob2.stream = stream; + function generateTasks(source, options) { + assertPatternsInput(source); + const patterns = patternManager.transform([].concat(source)); + const settings = new settings_1.default(options); + return taskManager.generate(patterns, settings); + } + FastGlob2.generateTasks = generateTasks; + function isDynamicPattern(source, options) { + assertPatternsInput(source); + const settings = new settings_1.default(options); + return utils.pattern.isDynamicPattern(source, settings); + } + FastGlob2.isDynamicPattern = isDynamicPattern; + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escape(source); + } + FastGlob2.escapePath = escapePath; + })(FastGlob || (FastGlob = {})); + function getWorks(source, _Provider, options) { + const patterns = patternManager.transform([].concat(source)); + const settings = new settings_1.default(options); + const tasks = taskManager.generate(patterns, settings); + const provider = new _Provider(settings); + return tasks.map(provider.read, provider); + } + function assertPatternsInput(input) { + const source = [].concat(input); + const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); + if (!isValidSource) { + throw new TypeError("Patterns must be a string (non empty) or an array of strings"); + } + } + module22.exports = FastGlob; + } + }); + var require_uniq_by_key = __commonJS22({ + "src/utils/uniq-by-key.js"(exports2, module22) { + "use strict"; + function uniqByKey(array, key) { + const result = []; + const seen = /* @__PURE__ */ new Set(); + for (const element of array) { + const value = element[key]; + if (!seen.has(value)) { + seen.add(value); + result.push(element); + } + } + return result; + } + module22.exports = uniqByKey; + } + }); + var require_create_language = __commonJS22({ + "src/utils/create-language.js"(exports2, module22) { + "use strict"; + module22.exports = function(linguistData, override) { + const { + languageId + } = linguistData, rest = _objectWithoutProperties(linguistData, _excluded4); + return Object.assign(Object.assign({ + linguistLanguageId: languageId + }, rest), override(linguistData)); + }; + } + }); + var require_ast = __commonJS22({ + "node_modules/esutils/lib/ast.js"(exports2, module22) { + (function() { + "use strict"; + function isExpression(node) { + if (node == null) { + return false; + } + switch (node.type) { + case "ArrayExpression": + case "AssignmentExpression": + case "BinaryExpression": + case "CallExpression": + case "ConditionalExpression": + case "FunctionExpression": + case "Identifier": + case "Literal": + case "LogicalExpression": + case "MemberExpression": + case "NewExpression": + case "ObjectExpression": + case "SequenceExpression": + case "ThisExpression": + case "UnaryExpression": + case "UpdateExpression": + return true; + } + return false; + } + function isIterationStatement(node) { + if (node == null) { + return false; + } + switch (node.type) { + case "DoWhileStatement": + case "ForInStatement": + case "ForStatement": + case "WhileStatement": + return true; + } + return false; + } + function isStatement(node) { + if (node == null) { + return false; + } + switch (node.type) { + case "BlockStatement": + case "BreakStatement": + case "ContinueStatement": + case "DebuggerStatement": + case "DoWhileStatement": + case "EmptyStatement": + case "ExpressionStatement": + case "ForInStatement": + case "ForStatement": + case "IfStatement": + case "LabeledStatement": + case "ReturnStatement": + case "SwitchStatement": + case "ThrowStatement": + case "TryStatement": + case "VariableDeclaration": + case "WhileStatement": + case "WithStatement": + return true; + } + return false; + } + function isSourceElement(node) { + return isStatement(node) || node != null && node.type === "FunctionDeclaration"; + } + function trailingStatement(node) { + switch (node.type) { + case "IfStatement": + if (node.alternate != null) { + return node.alternate; + } + return node.consequent; + case "LabeledStatement": + case "ForStatement": + case "ForInStatement": + case "WhileStatement": + case "WithStatement": + return node.body; + } + return null; + } + function isProblematicIfStatement(node) { + var current; + if (node.type !== "IfStatement") { + return false; + } + if (node.alternate == null) { + return false; + } + current = node.consequent; + do { + if (current.type === "IfStatement") { + if (current.alternate == null) { + return true; + } + } + current = trailingStatement(current); + } while (current); + return false; + } + module22.exports = { + isExpression, + isStatement, + isIterationStatement, + isSourceElement, + isProblematicIfStatement, + trailingStatement + }; + })(); + } + }); + var require_code = __commonJS22({ + "node_modules/esutils/lib/code.js"(exports2, module22) { + (function() { + "use strict"; + var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; + ES5Regex = { + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, + NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ + }; + ES6Regex = { + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, + NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + }; + function isDecimalDigit(ch2) { + return 48 <= ch2 && ch2 <= 57; + } + function isHexDigit(ch2) { + return 48 <= ch2 && ch2 <= 57 || 97 <= ch2 && ch2 <= 102 || 65 <= ch2 && ch2 <= 70; + } + function isOctalDigit(ch2) { + return ch2 >= 48 && ch2 <= 55; + } + NON_ASCII_WHITESPACES = [5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279]; + function isWhiteSpace(ch2) { + return ch2 === 32 || ch2 === 9 || ch2 === 11 || ch2 === 12 || ch2 === 160 || ch2 >= 5760 && NON_ASCII_WHITESPACES.indexOf(ch2) >= 0; + } + function isLineTerminator(ch2) { + return ch2 === 10 || ch2 === 13 || ch2 === 8232 || ch2 === 8233; + } + function fromCodePoint(cp) { + if (cp <= 65535) { + return String.fromCharCode(cp); + } + var cu1 = String.fromCharCode(Math.floor((cp - 65536) / 1024) + 55296); + var cu2 = String.fromCharCode((cp - 65536) % 1024 + 56320); + return cu1 + cu2; + } + IDENTIFIER_START = new Array(128); + for (ch = 0; ch < 128; ++ch) { + IDENTIFIER_START[ch] = ch >= 97 && ch <= 122 || ch >= 65 && ch <= 90 || ch === 36 || ch === 95; + } + IDENTIFIER_PART = new Array(128); + for (ch = 0; ch < 128; ++ch) { + IDENTIFIER_PART[ch] = ch >= 97 && ch <= 122 || ch >= 65 && ch <= 90 || ch >= 48 && ch <= 57 || ch === 36 || ch === 95; + } + function isIdentifierStartES5(ch2) { + return ch2 < 128 ? IDENTIFIER_START[ch2] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch2)); + } + function isIdentifierPartES5(ch2) { + return ch2 < 128 ? IDENTIFIER_PART[ch2] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch2)); + } + function isIdentifierStartES6(ch2) { + return ch2 < 128 ? IDENTIFIER_START[ch2] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch2)); + } + function isIdentifierPartES6(ch2) { + return ch2 < 128 ? IDENTIFIER_PART[ch2] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch2)); + } + module22.exports = { + isDecimalDigit, + isHexDigit, + isOctalDigit, + isWhiteSpace, + isLineTerminator, + isIdentifierStartES5, + isIdentifierPartES5, + isIdentifierStartES6, + isIdentifierPartES6 + }; + })(); + } + }); + var require_keyword2 = __commonJS22({ + "node_modules/esutils/lib/keyword.js"(exports2, module22) { + (function() { + "use strict"; + var code = require_code(); + function isStrictModeReservedWordES6(id) { + switch (id) { + case "implements": + case "interface": + case "package": + case "private": + case "protected": + case "public": + case "static": + case "let": + return true; + default: + return false; + } + } + function isKeywordES5(id, strict) { + if (!strict && id === "yield") { + return false; + } + return isKeywordES6(id, strict); + } + function isKeywordES6(id, strict) { + if (strict && isStrictModeReservedWordES6(id)) { + return true; + } + switch (id.length) { + case 2: + return id === "if" || id === "in" || id === "do"; + case 3: + return id === "var" || id === "for" || id === "new" || id === "try"; + case 4: + return id === "this" || id === "else" || id === "case" || id === "void" || id === "with" || id === "enum"; + case 5: + return id === "while" || id === "break" || id === "catch" || id === "throw" || id === "const" || id === "yield" || id === "class" || id === "super"; + case 6: + return id === "return" || id === "typeof" || id === "delete" || id === "switch" || id === "export" || id === "import"; + case 7: + return id === "default" || id === "finally" || id === "extends"; + case 8: + return id === "function" || id === "continue" || id === "debugger"; + case 10: + return id === "instanceof"; + default: + return false; + } + } + function isReservedWordES5(id, strict) { + return id === "null" || id === "true" || id === "false" || isKeywordES5(id, strict); + } + function isReservedWordES6(id, strict) { + return id === "null" || id === "true" || id === "false" || isKeywordES6(id, strict); + } + function isRestrictedWord(id) { + return id === "eval" || id === "arguments"; + } + function isIdentifierNameES5(id) { + var i, iz, ch; + if (id.length === 0) { + return false; + } + ch = id.charCodeAt(0); + if (!code.isIdentifierStartES5(ch)) { + return false; + } + for (i = 1, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (!code.isIdentifierPartES5(ch)) { + return false; + } + } + return true; + } + function decodeUtf16(lead, trail) { + return (lead - 55296) * 1024 + (trail - 56320) + 65536; + } + function isIdentifierNameES6(id) { + var i, iz, ch, lowCh, check; + if (id.length === 0) { + return false; + } + check = code.isIdentifierStartES6; + for (i = 0, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (55296 <= ch && ch <= 56319) { + ++i; + if (i >= iz) { + return false; + } + lowCh = id.charCodeAt(i); + if (!(56320 <= lowCh && lowCh <= 57343)) { + return false; + } + ch = decodeUtf16(ch, lowCh); + } + if (!check(ch)) { + return false; + } + check = code.isIdentifierPartES6; + } + return true; + } + function isIdentifierES5(id, strict) { + return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); + } + function isIdentifierES6(id, strict) { + return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); + } + module22.exports = { + isKeywordES5, + isKeywordES6, + isReservedWordES5, + isReservedWordES6, + isRestrictedWord, + isIdentifierNameES5, + isIdentifierNameES6, + isIdentifierES5, + isIdentifierES6 + }; + })(); + } + }); + var require_utils6 = __commonJS22({ + "node_modules/esutils/lib/utils.js"(exports2) { + (function() { + "use strict"; + exports2.ast = require_ast(); + exports2.code = require_code(); + exports2.keyword = require_keyword2(); + })(); + } + }); + var require_is_block_comment = __commonJS22({ + "src/language-js/utils/is-block-comment.js"(exports2, module22) { + "use strict"; + var BLOCK_COMMENT_TYPES = /* @__PURE__ */ new Set(["Block", "CommentBlock", "MultiLine"]); + var isBlockComment = (comment) => BLOCK_COMMENT_TYPES.has(comment === null || comment === void 0 ? void 0 : comment.type); + module22.exports = isBlockComment; + } + }); + var require_is_node_matches = __commonJS22({ + "src/language-js/utils/is-node-matches.js"(exports2, module22) { + "use strict"; + function isNodeMatchesNameOrPath(node, nameOrPath) { + const names = nameOrPath.split("."); + for (let index = names.length - 1; index >= 0; index--) { + const name = names[index]; + if (index === 0) { + return node.type === "Identifier" && node.name === name; + } + if (node.type !== "MemberExpression" || node.optional || node.computed || node.property.type !== "Identifier" || node.property.name !== name) { + return false; + } + node = node.object; + } + } + function isNodeMatches(node, nameOrPaths) { + return nameOrPaths.some((nameOrPath) => isNodeMatchesNameOrPath(node, nameOrPath)); + } + module22.exports = isNodeMatches; + } + }); + var require_utils7 = __commonJS22({ + "src/language-js/utils/index.js"(exports2, module22) { + "use strict"; + var isIdentifierName = require_utils6().keyword.isIdentifierNameES5; + var { + getLast, + hasNewline, + skipWhitespace, + isNonEmptyArray, + isNextLineEmptyAfterIndex, + getStringWidth + } = require_util2(); + var { + locStart, + locEnd, + hasSameLocStart + } = require_loc(); + var isBlockComment = require_is_block_comment(); + var isNodeMatches = require_is_node_matches(); + var NON_LINE_TERMINATING_WHITE_SPACE = "(?:(?=.)\\s)"; + var FLOW_SHORTHAND_ANNOTATION = new RegExp(`^${NON_LINE_TERMINATING_WHITE_SPACE}*:`); + var FLOW_ANNOTATION = new RegExp(`^${NON_LINE_TERMINATING_WHITE_SPACE}*::`); + function hasFlowShorthandAnnotationComment(node) { + var _node$extra, _node$trailingComment; + return ((_node$extra = node.extra) === null || _node$extra === void 0 ? void 0 : _node$extra.parenthesized) && isBlockComment((_node$trailingComment = node.trailingComments) === null || _node$trailingComment === void 0 ? void 0 : _node$trailingComment[0]) && FLOW_SHORTHAND_ANNOTATION.test(node.trailingComments[0].value); + } + function hasFlowAnnotationComment(comments) { + const firstComment = comments === null || comments === void 0 ? void 0 : comments[0]; + return isBlockComment(firstComment) && FLOW_ANNOTATION.test(firstComment.value); + } + function hasNode(node, fn) { + if (!node || typeof node !== "object") { + return false; + } + if (Array.isArray(node)) { + return node.some((value) => hasNode(value, fn)); + } + const result = fn(node); + return typeof result === "boolean" ? result : Object.values(node).some((value) => hasNode(value, fn)); + } + function hasNakedLeftSide(node) { + return node.type === "AssignmentExpression" || node.type === "BinaryExpression" || node.type === "LogicalExpression" || node.type === "NGPipeExpression" || node.type === "ConditionalExpression" || isCallExpression(node) || isMemberExpression(node) || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "BindExpression" || node.type === "UpdateExpression" && !node.prefix || node.type === "TSAsExpression" || node.type === "TSNonNullExpression"; + } + function getLeftSide(node) { + var _ref2, _ref3, _ref4, _ref5, _ref6, _node$left; + if (node.expressions) { + return node.expressions[0]; + } + return (_ref2 = (_ref3 = (_ref4 = (_ref5 = (_ref6 = (_node$left = node.left) !== null && _node$left !== void 0 ? _node$left : node.test) !== null && _ref6 !== void 0 ? _ref6 : node.callee) !== null && _ref5 !== void 0 ? _ref5 : node.object) !== null && _ref4 !== void 0 ? _ref4 : node.tag) !== null && _ref3 !== void 0 ? _ref3 : node.argument) !== null && _ref2 !== void 0 ? _ref2 : node.expression; + } + function getLeftSidePathName(path2, node) { + if (node.expressions) { + return ["expressions", 0]; + } + if (node.left) { + return ["left"]; + } + if (node.test) { + return ["test"]; + } + if (node.object) { + return ["object"]; + } + if (node.callee) { + return ["callee"]; + } + if (node.tag) { + return ["tag"]; + } + if (node.argument) { + return ["argument"]; + } + if (node.expression) { + return ["expression"]; + } + throw new Error("Unexpected node has no left side."); + } + function createTypeCheckFunction(types) { + types = new Set(types); + return (node) => types.has(node === null || node === void 0 ? void 0 : node.type); + } + var isLineComment = createTypeCheckFunction(["Line", "CommentLine", "SingleLine", "HashbangComment", "HTMLOpen", "HTMLClose"]); + var isExportDeclaration = createTypeCheckFunction(["ExportDefaultDeclaration", "ExportDefaultSpecifier", "DeclareExportDeclaration", "ExportNamedDeclaration", "ExportAllDeclaration"]); + function getParentExportDeclaration(path2) { + const parentNode = path2.getParentNode(); + if (path2.getName() === "declaration" && isExportDeclaration(parentNode)) { + return parentNode; + } + return null; + } + var isLiteral = createTypeCheckFunction(["BooleanLiteral", "DirectiveLiteral", "Literal", "NullLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "RegExpLiteral", "StringLiteral", "TemplateLiteral", "TSTypeLiteral", "JSXText"]); + function isNumericLiteral(node) { + return node.type === "NumericLiteral" || node.type === "Literal" && typeof node.value === "number"; + } + function isSignedNumericLiteral(node) { + return node.type === "UnaryExpression" && (node.operator === "+" || node.operator === "-") && isNumericLiteral(node.argument); + } + function isStringLiteral(node) { + return node.type === "StringLiteral" || node.type === "Literal" && typeof node.value === "string"; + } + var isObjectType = createTypeCheckFunction(["ObjectTypeAnnotation", "TSTypeLiteral", "TSMappedType"]); + var isFunctionOrArrowExpression = createTypeCheckFunction(["FunctionExpression", "ArrowFunctionExpression"]); + function isFunctionOrArrowExpressionWithBody(node) { + return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression" && node.body.type === "BlockStatement"; + } + function isAngularTestWrapper(node) { + return isCallExpression(node) && node.callee.type === "Identifier" && ["async", "inject", "fakeAsync", "waitForAsync"].includes(node.callee.name); + } + var isJsxNode = createTypeCheckFunction(["JSXElement", "JSXFragment"]); + function isTheOnlyJsxElementInMarkdown(options, path2) { + if (options.parentParser !== "markdown" && options.parentParser !== "mdx") { + return false; + } + const node = path2.getNode(); + if (!node.expression || !isJsxNode(node.expression)) { + return false; + } + const parent = path2.getParentNode(); + return parent.type === "Program" && parent.body.length === 1; + } + function isGetterOrSetter(node) { + return node.kind === "get" || node.kind === "set"; + } + function isFunctionNotation(node) { + return isGetterOrSetter(node) || hasSameLocStart(node, node.value); + } + function isObjectTypePropertyAFunction(node) { + return (node.type === "ObjectTypeProperty" || node.type === "ObjectTypeInternalSlot") && node.value.type === "FunctionTypeAnnotation" && !node.static && !isFunctionNotation(node); + } + function isTypeAnnotationAFunction(node) { + return (node.type === "TypeAnnotation" || node.type === "TSTypeAnnotation") && node.typeAnnotation.type === "FunctionTypeAnnotation" && !node.static && !hasSameLocStart(node, node.typeAnnotation); + } + var isBinaryish = createTypeCheckFunction(["BinaryExpression", "LogicalExpression", "NGPipeExpression"]); + function isMemberish(node) { + return isMemberExpression(node) || node.type === "BindExpression" && Boolean(node.object); + } + var simpleTypeAnnotations = /* @__PURE__ */ new Set(["AnyTypeAnnotation", "TSAnyKeyword", "NullLiteralTypeAnnotation", "TSNullKeyword", "ThisTypeAnnotation", "TSThisType", "NumberTypeAnnotation", "TSNumberKeyword", "VoidTypeAnnotation", "TSVoidKeyword", "BooleanTypeAnnotation", "TSBooleanKeyword", "BigIntTypeAnnotation", "TSBigIntKeyword", "SymbolTypeAnnotation", "TSSymbolKeyword", "StringTypeAnnotation", "TSStringKeyword", "BooleanLiteralTypeAnnotation", "StringLiteralTypeAnnotation", "BigIntLiteralTypeAnnotation", "NumberLiteralTypeAnnotation", "TSLiteralType", "TSTemplateLiteralType", "EmptyTypeAnnotation", "MixedTypeAnnotation", "TSNeverKeyword", "TSObjectKeyword", "TSUndefinedKeyword", "TSUnknownKeyword"]); + function isSimpleType(node) { + if (!node) { + return false; + } + if ((node.type === "GenericTypeAnnotation" || node.type === "TSTypeReference") && !node.typeParameters) { + return true; + } + if (simpleTypeAnnotations.has(node.type)) { + return true; + } + return false; + } + function isUnitTestSetUp(node) { + const unitTestSetUpRe = /^(?:before|after)(?:Each|All)$/; + return node.callee.type === "Identifier" && unitTestSetUpRe.test(node.callee.name) && node.arguments.length === 1; + } + var testCallCalleePatterns = ["it", "it.only", "it.skip", "describe", "describe.only", "describe.skip", "test", "test.only", "test.skip", "test.step", "test.describe", "test.describe.only", "test.describe.parallel", "test.describe.parallel.only", "test.describe.serial", "test.describe.serial.only", "skip", "xit", "xdescribe", "xtest", "fit", "fdescribe", "ftest"]; + function isTestCallCallee(node) { + return isNodeMatches(node, testCallCalleePatterns); + } + function isTestCall(node, parent) { + if (node.type !== "CallExpression") { + return false; + } + if (node.arguments.length === 1) { + if (isAngularTestWrapper(node) && parent && isTestCall(parent)) { + return isFunctionOrArrowExpression(node.arguments[0]); + } + if (isUnitTestSetUp(node)) { + return isAngularTestWrapper(node.arguments[0]); + } + } else if (node.arguments.length === 2 || node.arguments.length === 3) { + if ((node.arguments[0].type === "TemplateLiteral" || isStringLiteral(node.arguments[0])) && isTestCallCallee(node.callee)) { + if (node.arguments[2] && !isNumericLiteral(node.arguments[2])) { + return false; + } + return (node.arguments.length === 2 ? isFunctionOrArrowExpression(node.arguments[1]) : isFunctionOrArrowExpressionWithBody(node.arguments[1]) && getFunctionParameters(node.arguments[1]).length <= 1) || isAngularTestWrapper(node.arguments[1]); + } + } + return false; + } + var isCallExpression = createTypeCheckFunction(["CallExpression", "OptionalCallExpression"]); + var isMemberExpression = createTypeCheckFunction(["MemberExpression", "OptionalMemberExpression"]); + function isSimpleTemplateLiteral(node) { + let expressionsKey = "expressions"; + if (node.type === "TSTemplateLiteralType") { + expressionsKey = "types"; + } + const expressions = node[expressionsKey]; + if (expressions.length === 0) { + return false; + } + return expressions.every((expr) => { + if (hasComment(expr)) { + return false; + } + if (expr.type === "Identifier" || expr.type === "ThisExpression") { + return true; + } + if (isMemberExpression(expr)) { + let head = expr; + while (isMemberExpression(head)) { + if (head.property.type !== "Identifier" && head.property.type !== "Literal" && head.property.type !== "StringLiteral" && head.property.type !== "NumericLiteral") { + return false; + } + head = head.object; + if (hasComment(head)) { + return false; + } + } + if (head.type === "Identifier" || head.type === "ThisExpression") { + return true; + } + return false; + } + return false; + }); + } + function getTypeScriptMappedTypeModifier(tokenNode, keyword) { + if (tokenNode === "+" || tokenNode === "-") { + return tokenNode + keyword; + } + return keyword; + } + function isFlowAnnotationComment(text, typeAnnotation) { + const start = locStart(typeAnnotation); + const end = skipWhitespace(text, locEnd(typeAnnotation)); + return end !== false && text.slice(start, start + 2) === "/*" && text.slice(end, end + 2) === "*/"; + } + function hasLeadingOwnLineComment(text, node) { + if (isJsxNode(node)) { + return hasNodeIgnoreComment(node); + } + return hasComment(node, CommentCheckFlags.Leading, (comment) => hasNewline(text, locEnd(comment))); + } + function isStringPropSafeToUnquote(node, options) { + return options.parser !== "json" && isStringLiteral(node.key) && rawText(node.key).slice(1, -1) === node.key.value && (isIdentifierName(node.key.value) && !(options.parser === "babel-ts" && node.type === "ClassProperty" || options.parser === "typescript" && node.type === "PropertyDefinition") || isSimpleNumber(node.key.value) && String(Number(node.key.value)) === node.key.value && (options.parser === "babel" || options.parser === "acorn" || options.parser === "espree" || options.parser === "meriyah" || options.parser === "__babel_estree")); + } + function isSimpleNumber(numberString) { + return /^(?:\d+|\d+\.\d+)$/.test(numberString); + } + function isJestEachTemplateLiteral(node, parentNode) { + const jestEachTriggerRegex = /^[fx]?(?:describe|it|test)$/; + return parentNode.type === "TaggedTemplateExpression" && parentNode.quasi === node && parentNode.tag.type === "MemberExpression" && parentNode.tag.property.type === "Identifier" && parentNode.tag.property.name === "each" && (parentNode.tag.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.name) || parentNode.tag.object.type === "MemberExpression" && parentNode.tag.object.property.type === "Identifier" && (parentNode.tag.object.property.name === "only" || parentNode.tag.object.property.name === "skip") && parentNode.tag.object.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.object.name)); + } + function templateLiteralHasNewLines(template) { + return template.quasis.some((quasi) => quasi.value.raw.includes("\n")); + } + function isTemplateOnItsOwnLine(node, text) { + return (node.type === "TemplateLiteral" && templateLiteralHasNewLines(node) || node.type === "TaggedTemplateExpression" && templateLiteralHasNewLines(node.quasi)) && !hasNewline(text, locStart(node), { + backwards: true + }); + } + function needsHardlineAfterDanglingComment(node) { + if (!hasComment(node)) { + return false; + } + const lastDanglingComment = getLast(getComments(node, CommentCheckFlags.Dangling)); + return lastDanglingComment && !isBlockComment(lastDanglingComment); + } + function isFunctionCompositionArgs(args) { + if (args.length <= 1) { + return false; + } + let count = 0; + for (const arg of args) { + if (isFunctionOrArrowExpression(arg)) { + count += 1; + if (count > 1) { + return true; + } + } else if (isCallExpression(arg)) { + for (const childArg of arg.arguments) { + if (isFunctionOrArrowExpression(childArg)) { + return true; + } + } + } + } + return false; + } + function isLongCurriedCallExpression(path2) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + return isCallExpression(node) && isCallExpression(parent) && parent.callee === node && node.arguments.length > parent.arguments.length && parent.arguments.length > 0; + } + function isSimpleCallArgument(node, depth) { + if (depth >= 2) { + return false; + } + const isChildSimple = (child) => isSimpleCallArgument(child, depth + 1); + const regexpPattern = node.type === "Literal" && "regex" in node && node.regex.pattern || node.type === "RegExpLiteral" && node.pattern; + if (regexpPattern && getStringWidth(regexpPattern) > 5) { + return false; + } + if (node.type === "Literal" || node.type === "BigIntLiteral" || node.type === "DecimalLiteral" || node.type === "BooleanLiteral" || node.type === "NullLiteral" || node.type === "NumericLiteral" || node.type === "RegExpLiteral" || node.type === "StringLiteral" || node.type === "Identifier" || node.type === "ThisExpression" || node.type === "Super" || node.type === "PrivateName" || node.type === "PrivateIdentifier" || node.type === "ArgumentPlaceholder" || node.type === "Import") { + return true; + } + if (node.type === "TemplateLiteral") { + return node.quasis.every((element) => !element.value.raw.includes("\n")) && node.expressions.every(isChildSimple); + } + if (node.type === "ObjectExpression") { + return node.properties.every((p) => !p.computed && (p.shorthand || p.value && isChildSimple(p.value))); + } + if (node.type === "ArrayExpression") { + return node.elements.every((x) => x === null || isChildSimple(x)); + } + if (isCallLikeExpression(node)) { + return (node.type === "ImportExpression" || isSimpleCallArgument(node.callee, depth)) && getCallArguments(node).every(isChildSimple); + } + if (isMemberExpression(node)) { + return isSimpleCallArgument(node.object, depth) && isSimpleCallArgument(node.property, depth); + } + if (node.type === "UnaryExpression" && (node.operator === "!" || node.operator === "-")) { + return isSimpleCallArgument(node.argument, depth); + } + if (node.type === "TSNonNullExpression") { + return isSimpleCallArgument(node.expression, depth); + } + return false; + } + function rawText(node) { + var _node$extra$raw, _node$extra2; + return (_node$extra$raw = (_node$extra2 = node.extra) === null || _node$extra2 === void 0 ? void 0 : _node$extra2.raw) !== null && _node$extra$raw !== void 0 ? _node$extra$raw : node.raw; + } + function identity(x) { + return x; + } + function isTSXFile(options) { + return options.filepath && /\.tsx$/i.test(options.filepath); + } + function shouldPrintComma(options, level = "es5") { + return options.trailingComma === "es5" && level === "es5" || options.trailingComma === "all" && (level === "all" || level === "es5"); + } + function startsWithNoLookaheadToken(node, forbidFunctionClassAndDoExpr) { + node = getLeftMost(node); + switch (node.type) { + case "FunctionExpression": + case "ClassExpression": + case "DoExpression": + return forbidFunctionClassAndDoExpr; + case "ObjectExpression": + return true; + case "MemberExpression": + case "OptionalMemberExpression": + return startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr); + case "TaggedTemplateExpression": + if (node.tag.type === "FunctionExpression") { + return false; + } + return startsWithNoLookaheadToken(node.tag, forbidFunctionClassAndDoExpr); + case "CallExpression": + case "OptionalCallExpression": + if (node.callee.type === "FunctionExpression") { + return false; + } + return startsWithNoLookaheadToken(node.callee, forbidFunctionClassAndDoExpr); + case "ConditionalExpression": + return startsWithNoLookaheadToken(node.test, forbidFunctionClassAndDoExpr); + case "UpdateExpression": + return !node.prefix && startsWithNoLookaheadToken(node.argument, forbidFunctionClassAndDoExpr); + case "BindExpression": + return node.object && startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr); + case "SequenceExpression": + return startsWithNoLookaheadToken(node.expressions[0], forbidFunctionClassAndDoExpr); + case "TSAsExpression": + case "TSNonNullExpression": + return startsWithNoLookaheadToken(node.expression, forbidFunctionClassAndDoExpr); + default: + return false; + } + } + var equalityOperators = { + "==": true, + "!=": true, + "===": true, + "!==": true + }; + var multiplicativeOperators = { + "*": true, + "/": true, + "%": true + }; + var bitshiftOperators = { + ">>": true, + ">>>": true, + "<<": true + }; + function shouldFlatten(parentOp, nodeOp) { + if (getPrecedence(nodeOp) !== getPrecedence(parentOp)) { + return false; + } + if (parentOp === "**") { + return false; + } + if (equalityOperators[parentOp] && equalityOperators[nodeOp]) { + return false; + } + if (nodeOp === "%" && multiplicativeOperators[parentOp] || parentOp === "%" && multiplicativeOperators[nodeOp]) { + return false; + } + if (nodeOp !== parentOp && multiplicativeOperators[nodeOp] && multiplicativeOperators[parentOp]) { + return false; + } + if (bitshiftOperators[parentOp] && bitshiftOperators[nodeOp]) { + return false; + } + return true; + } + var PRECEDENCE = new Map([["|>"], ["??"], ["||"], ["&&"], ["|"], ["^"], ["&"], ["==", "===", "!=", "!=="], ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], ["*", "/", "%"], ["**"]].flatMap((operators, index) => operators.map((operator) => [operator, index]))); + function getPrecedence(operator) { + return PRECEDENCE.get(operator); + } + function getLeftMost(node) { + while (node.left) { + node = node.left; + } + return node; + } + function isBitwiseOperator(operator) { + return Boolean(bitshiftOperators[operator]) || operator === "|" || operator === "^" || operator === "&"; + } + function hasRestParameter(node) { + var _getLast; + if (node.rest) { + return true; + } + const parameters = getFunctionParameters(node); + return ((_getLast = getLast(parameters)) === null || _getLast === void 0 ? void 0 : _getLast.type) === "RestElement"; + } + var functionParametersCache = /* @__PURE__ */ new WeakMap(); + function getFunctionParameters(node) { + if (functionParametersCache.has(node)) { + return functionParametersCache.get(node); + } + const parameters = []; + if (node.this) { + parameters.push(node.this); + } + if (Array.isArray(node.parameters)) { + parameters.push(...node.parameters); + } else if (Array.isArray(node.params)) { + parameters.push(...node.params); + } + if (node.rest) { + parameters.push(node.rest); + } + functionParametersCache.set(node, parameters); + return parameters; + } + function iterateFunctionParametersPath(path2, iteratee) { + const node = path2.getValue(); + let index = 0; + const callback = (childPath) => iteratee(childPath, index++); + if (node.this) { + path2.call(callback, "this"); + } + if (Array.isArray(node.parameters)) { + path2.each(callback, "parameters"); + } else if (Array.isArray(node.params)) { + path2.each(callback, "params"); + } + if (node.rest) { + path2.call(callback, "rest"); + } + } + var callArgumentsCache = /* @__PURE__ */ new WeakMap(); + function getCallArguments(node) { + if (callArgumentsCache.has(node)) { + return callArgumentsCache.get(node); + } + let args = node.arguments; + if (node.type === "ImportExpression") { + args = [node.source]; + if (node.attributes) { + args.push(node.attributes); + } + } + callArgumentsCache.set(node, args); + return args; + } + function iterateCallArgumentsPath(path2, iteratee) { + const node = path2.getValue(); + if (node.type === "ImportExpression") { + path2.call((sourcePath) => iteratee(sourcePath, 0), "source"); + if (node.attributes) { + path2.call((sourcePath) => iteratee(sourcePath, 1), "attributes"); + } + } else { + path2.each(iteratee, "arguments"); + } + } + function isPrettierIgnoreComment(comment) { + return comment.value.trim() === "prettier-ignore" && !comment.unignore; + } + function hasNodeIgnoreComment(node) { + return node && (node.prettierIgnore || hasComment(node, CommentCheckFlags.PrettierIgnore)); + } + function hasIgnoreComment(path2) { + const node = path2.getValue(); + return hasNodeIgnoreComment(node); + } + var CommentCheckFlags = { + Leading: 1 << 1, + Trailing: 1 << 2, + Dangling: 1 << 3, + Block: 1 << 4, + Line: 1 << 5, + PrettierIgnore: 1 << 6, + First: 1 << 7, + Last: 1 << 8 + }; + var getCommentTestFunction = (flags, fn) => { + if (typeof flags === "function") { + fn = flags; + flags = 0; + } + if (flags || fn) { + return (comment, index, comments) => !(flags & CommentCheckFlags.Leading && !comment.leading || flags & CommentCheckFlags.Trailing && !comment.trailing || flags & CommentCheckFlags.Dangling && (comment.leading || comment.trailing) || flags & CommentCheckFlags.Block && !isBlockComment(comment) || flags & CommentCheckFlags.Line && !isLineComment(comment) || flags & CommentCheckFlags.First && index !== 0 || flags & CommentCheckFlags.Last && index !== comments.length - 1 || flags & CommentCheckFlags.PrettierIgnore && !isPrettierIgnoreComment(comment) || fn && !fn(comment)); + } + }; + function hasComment(node, flags, fn) { + if (!isNonEmptyArray(node === null || node === void 0 ? void 0 : node.comments)) { + return false; + } + const test = getCommentTestFunction(flags, fn); + return test ? node.comments.some(test) : true; + } + function getComments(node, flags, fn) { + if (!Array.isArray(node === null || node === void 0 ? void 0 : node.comments)) { + return []; + } + const test = getCommentTestFunction(flags, fn); + return test ? node.comments.filter(test) : node.comments; + } + var isNextLineEmpty = (node, { + originalText + }) => isNextLineEmptyAfterIndex(originalText, locEnd(node)); + function isCallLikeExpression(node) { + return isCallExpression(node) || node.type === "NewExpression" || node.type === "ImportExpression"; + } + function isObjectProperty(node) { + return node && (node.type === "ObjectProperty" || node.type === "Property" && !node.method && node.kind === "init"); + } + function isEnabledHackPipeline(options) { + return Boolean(options.__isUsingHackPipeline); + } + var markerForIfWithoutBlockAndSameLineComment = Symbol("ifWithoutBlockAndSameLineComment"); + module22.exports = { + getFunctionParameters, + iterateFunctionParametersPath, + getCallArguments, + iterateCallArgumentsPath, + hasRestParameter, + getLeftSide, + getLeftSidePathName, + getParentExportDeclaration, + getTypeScriptMappedTypeModifier, + hasFlowAnnotationComment, + hasFlowShorthandAnnotationComment, + hasLeadingOwnLineComment, + hasNakedLeftSide, + hasNode, + hasIgnoreComment, + hasNodeIgnoreComment, + identity, + isBinaryish, + isCallLikeExpression, + isEnabledHackPipeline, + isLineComment, + isPrettierIgnoreComment, + isCallExpression, + isMemberExpression, + isExportDeclaration, + isFlowAnnotationComment, + isFunctionCompositionArgs, + isFunctionNotation, + isFunctionOrArrowExpression, + isGetterOrSetter, + isJestEachTemplateLiteral, + isJsxNode, + isLiteral, + isLongCurriedCallExpression, + isSimpleCallArgument, + isMemberish, + isNumericLiteral, + isSignedNumericLiteral, + isObjectProperty, + isObjectType, + isObjectTypePropertyAFunction, + isSimpleType, + isSimpleNumber, + isSimpleTemplateLiteral, + isStringLiteral, + isStringPropSafeToUnquote, + isTemplateOnItsOwnLine, + isTestCall, + isTheOnlyJsxElementInMarkdown, + isTSXFile, + isTypeAnnotationAFunction, + isNextLineEmpty, + needsHardlineAfterDanglingComment, + rawText, + shouldPrintComma, + isBitwiseOperator, + shouldFlatten, + startsWithNoLookaheadToken, + getPrecedence, + hasComment, + getComments, + CommentCheckFlags, + markerForIfWithoutBlockAndSameLineComment + }; + } + }); + var require_template_literal = __commonJS22({ + "src/language-js/print/template-literal.js"(exports2, module22) { + "use strict"; + var getLast = require_get_last(); + var { + getStringWidth, + getIndentSize + } = require_util2(); + var { + builders: { + join, + hardline, + softline, + group, + indent, + align, + lineSuffixBoundary, + addAlignmentToDoc + }, + printer: { + printDocToString + }, + utils: { + mapDoc + } + } = require_doc(); + var { + isBinaryish, + isJestEachTemplateLiteral, + isSimpleTemplateLiteral, + hasComment, + isMemberExpression + } = require_utils7(); + function printTemplateLiteral(path2, print, options) { + const node = path2.getValue(); + const isTemplateLiteral = node.type === "TemplateLiteral"; + if (isTemplateLiteral && isJestEachTemplateLiteral(node, path2.getParentNode())) { + const printed = printJestEachTemplateLiteral(path2, options, print); + if (printed) { + return printed; + } + } + let expressionsKey = "expressions"; + if (node.type === "TSTemplateLiteralType") { + expressionsKey = "types"; + } + const parts = []; + let expressions = path2.map(print, expressionsKey); + const isSimple = isSimpleTemplateLiteral(node); + if (isSimple) { + expressions = expressions.map((doc2) => printDocToString(doc2, Object.assign(Object.assign({}, options), {}, { + printWidth: Number.POSITIVE_INFINITY + })).formatted); + } + parts.push(lineSuffixBoundary, "`"); + path2.each((childPath) => { + const i = childPath.getName(); + parts.push(print()); + if (i < expressions.length) { + const { + tabWidth + } = options; + const quasi = childPath.getValue(); + const indentSize = getIndentSize(quasi.value.raw, tabWidth); + let printed = expressions[i]; + if (!isSimple) { + const expression = node[expressionsKey][i]; + if (hasComment(expression) || isMemberExpression(expression) || expression.type === "ConditionalExpression" || expression.type === "SequenceExpression" || expression.type === "TSAsExpression" || isBinaryish(expression)) { + printed = [indent([softline, printed]), softline]; + } + } + const aligned = indentSize === 0 && quasi.value.raw.endsWith("\n") ? align(Number.NEGATIVE_INFINITY, printed) : addAlignmentToDoc(printed, indentSize, tabWidth); + parts.push(group(["${", aligned, lineSuffixBoundary, "}"])); + } + }, "quasis"); + parts.push("`"); + return parts; + } + function printJestEachTemplateLiteral(path2, options, print) { + const node = path2.getNode(); + const headerNames = node.quasis[0].value.raw.trim().split(/\s*\|\s*/); + if (headerNames.length > 1 || headerNames.some((headerName) => headerName.length > 0)) { + options.__inJestEach = true; + const expressions = path2.map(print, "expressions"); + options.__inJestEach = false; + const parts = []; + const stringifiedExpressions = expressions.map((doc2) => "${" + printDocToString(doc2, Object.assign(Object.assign({}, options), {}, { + printWidth: Number.POSITIVE_INFINITY, + endOfLine: "lf" + })).formatted + "}"); + const tableBody = [{ + hasLineBreak: false, + cells: [] + }]; + for (let i = 1; i < node.quasis.length; i++) { + const row = getLast(tableBody); + const correspondingExpression = stringifiedExpressions[i - 1]; + row.cells.push(correspondingExpression); + if (correspondingExpression.includes("\n")) { + row.hasLineBreak = true; + } + if (node.quasis[i].value.raw.includes("\n")) { + tableBody.push({ + hasLineBreak: false, + cells: [] + }); + } + } + const maxColumnCount = Math.max(headerNames.length, ...tableBody.map((row) => row.cells.length)); + const maxColumnWidths = Array.from({ + length: maxColumnCount + }).fill(0); + const table = [{ + cells: headerNames + }, ...tableBody.filter((row) => row.cells.length > 0)]; + for (const { + cells + } of table.filter((row) => !row.hasLineBreak)) { + for (const [index, cell] of cells.entries()) { + maxColumnWidths[index] = Math.max(maxColumnWidths[index], getStringWidth(cell)); + } + } + parts.push(lineSuffixBoundary, "`", indent([hardline, join(hardline, table.map((row) => join(" | ", row.cells.map((cell, index) => row.hasLineBreak ? cell : cell + " ".repeat(maxColumnWidths[index] - getStringWidth(cell))))))]), hardline, "`"); + return parts; + } + } + function printTemplateExpression(path2, print) { + const node = path2.getValue(); + let printed = print(); + if (hasComment(node)) { + printed = group([indent([softline, printed]), softline]); + } + return ["${", printed, lineSuffixBoundary, "}"]; + } + function printTemplateExpressions(path2, print) { + return path2.map((path22) => printTemplateExpression(path22, print), "expressions"); + } + function escapeTemplateCharacters(doc2, raw) { + return mapDoc(doc2, (currentDoc) => { + if (typeof currentDoc === "string") { + return raw ? currentDoc.replace(/(\\*)`/g, "$1$1\\`") : uncookTemplateElementValue(currentDoc); + } + return currentDoc; + }); + } + function uncookTemplateElementValue(cookedValue) { + return cookedValue.replace(/([\\`]|\${)/g, "\\$1"); + } + module22.exports = { + printTemplateLiteral, + printTemplateExpressions, + escapeTemplateCharacters, + uncookTemplateElementValue + }; + } + }); + var require_markdown = __commonJS22({ + "src/language-js/embed/markdown.js"(exports2, module22) { + "use strict"; + var { + builders: { + indent, + softline, + literalline, + dedentToRoot + } + } = require_doc(); + var { + escapeTemplateCharacters + } = require_template_literal(); + function format2(path2, print, textToDoc) { + const node = path2.getValue(); + let text = node.quasis[0].value.raw.replace(/((?:\\\\)*)\\`/g, (_, backslashes) => "\\".repeat(backslashes.length / 2) + "`"); + const indentation = getIndentation(text); + const hasIndent = indentation !== ""; + if (hasIndent) { + text = text.replace(new RegExp(`^${indentation}`, "gm"), ""); + } + const doc2 = escapeTemplateCharacters(textToDoc(text, { + parser: "markdown", + __inJsTemplate: true + }, { + stripTrailingHardline: true + }), true); + return ["`", hasIndent ? indent([softline, doc2]) : [literalline, dedentToRoot(doc2)], softline, "`"]; + } + function getIndentation(str2) { + const firstMatchedIndent = str2.match(/^([^\S\n]*)\S/m); + return firstMatchedIndent === null ? "" : firstMatchedIndent[1]; + } + module22.exports = format2; + } + }); + var require_css = __commonJS22({ + "src/language-js/embed/css.js"(exports2, module22) { + "use strict"; + var { + isNonEmptyArray + } = require_util2(); + var { + builders: { + indent, + hardline, + softline + }, + utils: { + mapDoc, + replaceEndOfLine, + cleanDoc + } + } = require_doc(); + var { + printTemplateExpressions + } = require_template_literal(); + function format2(path2, print, textToDoc) { + const node = path2.getValue(); + const rawQuasis = node.quasis.map((q) => q.value.raw); + let placeholderID = 0; + const text = rawQuasis.reduce((prevVal, currVal, idx) => idx === 0 ? currVal : prevVal + "@prettier-placeholder-" + placeholderID++ + "-id" + currVal, ""); + const doc2 = textToDoc(text, { + parser: "scss" + }, { + stripTrailingHardline: true + }); + const expressionDocs = printTemplateExpressions(path2, print); + return transformCssDoc(doc2, node, expressionDocs); + } + function transformCssDoc(quasisDoc, parentNode, expressionDocs) { + const isEmpty = parentNode.quasis.length === 1 && !parentNode.quasis[0].value.raw.trim(); + if (isEmpty) { + return "``"; + } + const newDoc = replacePlaceholders(quasisDoc, expressionDocs); + if (!newDoc) { + throw new Error("Couldn't insert all the expressions"); + } + return ["`", indent([hardline, newDoc]), softline, "`"]; + } + function replacePlaceholders(quasisDoc, expressionDocs) { + if (!isNonEmptyArray(expressionDocs)) { + return quasisDoc; + } + let replaceCounter = 0; + const newDoc = mapDoc(cleanDoc(quasisDoc), (doc2) => { + if (typeof doc2 !== "string" || !doc2.includes("@prettier-placeholder")) { + return doc2; + } + return doc2.split(/@prettier-placeholder-(\d+)-id/).map((component, idx) => { + if (idx % 2 === 0) { + return replaceEndOfLine(component); + } + replaceCounter++; + return expressionDocs[component]; + }); + }); + return expressionDocs.length === replaceCounter ? newDoc : null; + } + module22.exports = format2; + } + }); + var require_graphql = __commonJS22({ + "src/language-js/embed/graphql.js"(exports2, module22) { + "use strict"; + var { + builders: { + indent, + join, + hardline + } + } = require_doc(); + var { + escapeTemplateCharacters, + printTemplateExpressions + } = require_template_literal(); + function format2(path2, print, textToDoc) { + const node = path2.getValue(); + const numQuasis = node.quasis.length; + if (numQuasis === 1 && node.quasis[0].value.raw.trim() === "") { + return "``"; + } + const expressionDocs = printTemplateExpressions(path2, print); + const parts = []; + for (let i = 0; i < numQuasis; i++) { + const templateElement = node.quasis[i]; + const isFirst = i === 0; + const isLast = i === numQuasis - 1; + const text = templateElement.value.cooked; + const lines = text.split("\n"); + const numLines = lines.length; + const expressionDoc = expressionDocs[i]; + const startsWithBlankLine = numLines > 2 && lines[0].trim() === "" && lines[1].trim() === ""; + const endsWithBlankLine = numLines > 2 && lines[numLines - 1].trim() === "" && lines[numLines - 2].trim() === ""; + const commentsAndWhitespaceOnly = lines.every((line) => /^\s*(?:#[^\n\r]*)?$/.test(line)); + if (!isLast && /#[^\n\r]*$/.test(lines[numLines - 1])) { + return null; + } + let doc2 = null; + if (commentsAndWhitespaceOnly) { + doc2 = printGraphqlComments(lines); + } else { + doc2 = textToDoc(text, { + parser: "graphql" + }, { + stripTrailingHardline: true + }); + } + if (doc2) { + doc2 = escapeTemplateCharacters(doc2, false); + if (!isFirst && startsWithBlankLine) { + parts.push(""); + } + parts.push(doc2); + if (!isLast && endsWithBlankLine) { + parts.push(""); + } + } else if (!isFirst && !isLast && startsWithBlankLine) { + parts.push(""); + } + if (expressionDoc) { + parts.push(expressionDoc); + } + } + return ["`", indent([hardline, join(hardline, parts)]), hardline, "`"]; + } + function printGraphqlComments(lines) { + const parts = []; + let seenComment = false; + const array = lines.map((textLine) => textLine.trim()); + for (const [i, textLine] of array.entries()) { + if (textLine === "") { + continue; + } + if (array[i - 1] === "" && seenComment) { + parts.push([hardline, textLine]); + } else { + parts.push(textLine); + } + seenComment = true; + } + return parts.length === 0 ? null : join(hardline, parts); + } + module22.exports = format2; + } + }); + var require_html = __commonJS22({ + "src/language-js/embed/html.js"(exports2, module22) { + "use strict"; + var { + builders: { + indent, + line, + hardline, + group + }, + utils: { + mapDoc + } + } = require_doc(); + var { + printTemplateExpressions, + uncookTemplateElementValue + } = require_template_literal(); + var htmlTemplateLiteralCounter = 0; + function format2(path2, print, textToDoc, options, { + parser + }) { + const node = path2.getValue(); + const counter = htmlTemplateLiteralCounter; + htmlTemplateLiteralCounter = htmlTemplateLiteralCounter + 1 >>> 0; + const composePlaceholder = (index) => `PRETTIER_HTML_PLACEHOLDER_${index}_${counter}_IN_JS`; + const text = node.quasis.map((quasi, index, quasis) => index === quasis.length - 1 ? quasi.value.cooked : quasi.value.cooked + composePlaceholder(index)).join(""); + const expressionDocs = printTemplateExpressions(path2, print); + if (expressionDocs.length === 0 && text.trim().length === 0) { + return "``"; + } + const placeholderRegex = new RegExp(composePlaceholder("(\\d+)"), "g"); + let topLevelCount = 0; + const doc2 = textToDoc(text, { + parser, + __onHtmlRoot(root) { + topLevelCount = root.children.length; + } + }, { + stripTrailingHardline: true + }); + const contentDoc = mapDoc(doc2, (doc3) => { + if (typeof doc3 !== "string") { + return doc3; + } + const parts = []; + const components = doc3.split(placeholderRegex); + for (let i = 0; i < components.length; i++) { + let component = components[i]; + if (i % 2 === 0) { + if (component) { + component = uncookTemplateElementValue(component); + if (options.__embeddedInHtml) { + component = component.replace(/<\/(script)\b/gi, "<\\/$1"); + } + parts.push(component); + } + continue; + } + const placeholderIndex = Number(component); + parts.push(expressionDocs[placeholderIndex]); + } + return parts; + }); + const leadingWhitespace = /^\s/.test(text) ? " " : ""; + const trailingWhitespace = /\s$/.test(text) ? " " : ""; + const linebreak = options.htmlWhitespaceSensitivity === "ignore" ? hardline : leadingWhitespace && trailingWhitespace ? line : null; + if (linebreak) { + return group(["`", indent([linebreak, group(contentDoc)]), linebreak, "`"]); + } + return group(["`", leadingWhitespace, topLevelCount > 1 ? indent(group(contentDoc)) : group(contentDoc), trailingWhitespace, "`"]); + } + module22.exports = format2; + } + }); + var require_embed = __commonJS22({ + "src/language-js/embed.js"(exports2, module22) { + "use strict"; + var { + hasComment, + CommentCheckFlags, + isObjectProperty + } = require_utils7(); + var formatMarkdown = require_markdown(); + var formatCss = require_css(); + var formatGraphql = require_graphql(); + var formatHtml = require_html(); + function getLanguage(path2) { + if (isStyledJsx(path2) || isStyledComponents(path2) || isCssProp(path2) || isAngularComponentStyles(path2)) { + return "css"; + } + if (isGraphQL(path2)) { + return "graphql"; + } + if (isHtml(path2)) { + return "html"; + } + if (isAngularComponentTemplate(path2)) { + return "angular"; + } + if (isMarkdown(path2)) { + return "markdown"; + } + } + function embed(path2, print, textToDoc, options) { + const node = path2.getValue(); + if (node.type !== "TemplateLiteral" || hasInvalidCookedValue(node)) { + return; + } + const language = getLanguage(path2); + if (!language) { + return; + } + if (language === "markdown") { + return formatMarkdown(path2, print, textToDoc); + } + if (language === "css") { + return formatCss(path2, print, textToDoc); + } + if (language === "graphql") { + return formatGraphql(path2, print, textToDoc); + } + if (language === "html" || language === "angular") { + return formatHtml(path2, print, textToDoc, options, { + parser: language + }); + } + } + function isMarkdown(path2) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + return parent && parent.type === "TaggedTemplateExpression" && node.quasis.length === 1 && parent.tag.type === "Identifier" && (parent.tag.name === "md" || parent.tag.name === "markdown"); + } + function isStyledJsx(path2) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + const parentParent = path2.getParentNode(1); + return parentParent && node.quasis && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXElement" && parentParent.openingElement.name.name === "style" && parentParent.openingElement.attributes.some((attribute) => attribute.name.name === "jsx") || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "Identifier" && parent.tag.name === "css" || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "MemberExpression" && parent.tag.object.name === "css" && (parent.tag.property.name === "global" || parent.tag.property.name === "resolve"); + } + function isAngularComponentStyles(path2) { + return path2.match((node) => node.type === "TemplateLiteral", (node, name) => node.type === "ArrayExpression" && name === "elements", (node, name) => isObjectProperty(node) && node.key.type === "Identifier" && node.key.name === "styles" && name === "value", ...angularComponentObjectExpressionPredicates); + } + function isAngularComponentTemplate(path2) { + return path2.match((node) => node.type === "TemplateLiteral", (node, name) => isObjectProperty(node) && node.key.type === "Identifier" && node.key.name === "template" && name === "value", ...angularComponentObjectExpressionPredicates); + } + var angularComponentObjectExpressionPredicates = [(node, name) => node.type === "ObjectExpression" && name === "properties", (node, name) => node.type === "CallExpression" && node.callee.type === "Identifier" && node.callee.name === "Component" && name === "arguments", (node, name) => node.type === "Decorator" && name === "expression"]; + function isStyledComponents(path2) { + const parent = path2.getParentNode(); + if (!parent || parent.type !== "TaggedTemplateExpression") { + return false; + } + const tag = parent.tag.type === "ParenthesizedExpression" ? parent.tag.expression : parent.tag; + switch (tag.type) { + case "MemberExpression": + return isStyledIdentifier(tag.object) || isStyledExtend(tag); + case "CallExpression": + return isStyledIdentifier(tag.callee) || tag.callee.type === "MemberExpression" && (tag.callee.object.type === "MemberExpression" && (isStyledIdentifier(tag.callee.object.object) || isStyledExtend(tag.callee.object)) || tag.callee.object.type === "CallExpression" && isStyledIdentifier(tag.callee.object.callee)); + case "Identifier": + return tag.name === "css"; + default: + return false; + } + } + function isCssProp(path2) { + const parent = path2.getParentNode(); + const parentParent = path2.getParentNode(1); + return parentParent && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" && parentParent.name.type === "JSXIdentifier" && parentParent.name.name === "css"; + } + function isStyledIdentifier(node) { + return node.type === "Identifier" && node.name === "styled"; + } + function isStyledExtend(node) { + return /^[A-Z]/.test(node.object.name) && node.property.name === "extend"; + } + function isGraphQL(path2) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + return hasLanguageComment(node, "GraphQL") || parent && (parent.type === "TaggedTemplateExpression" && (parent.tag.type === "MemberExpression" && parent.tag.object.name === "graphql" && parent.tag.property.name === "experimental" || parent.tag.type === "Identifier" && (parent.tag.name === "gql" || parent.tag.name === "graphql")) || parent.type === "CallExpression" && parent.callee.type === "Identifier" && parent.callee.name === "graphql"); + } + function hasLanguageComment(node, languageName) { + return hasComment(node, CommentCheckFlags.Block | CommentCheckFlags.Leading, ({ + value + }) => value === ` ${languageName} `); + } + function isHtml(path2) { + return hasLanguageComment(path2.getValue(), "HTML") || path2.match((node) => node.type === "TemplateLiteral", (node, name) => node.type === "TaggedTemplateExpression" && node.tag.type === "Identifier" && node.tag.name === "html" && name === "quasi"); + } + function hasInvalidCookedValue({ + quasis + }) { + return quasis.some(({ + value: { + cooked + } + }) => cooked === null); + } + module22.exports = embed; + } + }); + var require_clean = __commonJS22({ + "src/language-js/clean.js"(exports2, module22) { + "use strict"; + var isBlockComment = require_is_block_comment(); + var ignoredProperties = /* @__PURE__ */ new Set(["range", "raw", "comments", "leadingComments", "trailingComments", "innerComments", "extra", "start", "end", "loc", "flags", "errors", "tokens"]); + var removeTemplateElementsValue = (node) => { + for (const templateElement of node.quasis) { + delete templateElement.value; + } + }; + function clean(ast, newObj, parent) { + if (ast.type === "Program") { + delete newObj.sourceType; + } + if (ast.type === "BigIntLiteral" || ast.type === "BigIntLiteralTypeAnnotation") { + if (newObj.value) { + newObj.value = newObj.value.toLowerCase(); + } + } + if (ast.type === "BigIntLiteral" || ast.type === "Literal") { + if (newObj.bigint) { + newObj.bigint = newObj.bigint.toLowerCase(); + } + } + if (ast.type === "DecimalLiteral") { + newObj.value = Number(newObj.value); + } + if (ast.type === "Literal" && newObj.decimal) { + newObj.decimal = Number(newObj.decimal); + } + if (ast.type === "EmptyStatement") { + return null; + } + if (ast.type === "JSXText") { + return null; + } + if (ast.type === "JSXExpressionContainer" && (ast.expression.type === "Literal" || ast.expression.type === "StringLiteral") && ast.expression.value === " ") { + return null; + } + if ((ast.type === "Property" || ast.type === "ObjectProperty" || ast.type === "MethodDefinition" || ast.type === "ClassProperty" || ast.type === "ClassMethod" || ast.type === "PropertyDefinition" || ast.type === "TSDeclareMethod" || ast.type === "TSPropertySignature" || ast.type === "ObjectTypeProperty") && typeof ast.key === "object" && ast.key && (ast.key.type === "Literal" || ast.key.type === "NumericLiteral" || ast.key.type === "StringLiteral" || ast.key.type === "Identifier")) { + delete newObj.key; + } + if (ast.type === "JSXElement" && ast.openingElement.name.name === "style" && ast.openingElement.attributes.some((attr) => attr.name.name === "jsx")) { + for (const { + type: type2, + expression: expression2 + } of newObj.children) { + if (type2 === "JSXExpressionContainer" && expression2.type === "TemplateLiteral") { + removeTemplateElementsValue(expression2); + } + } + } + if (ast.type === "JSXAttribute" && ast.name.name === "css" && ast.value.type === "JSXExpressionContainer" && ast.value.expression.type === "TemplateLiteral") { + removeTemplateElementsValue(newObj.value.expression); + } + if (ast.type === "JSXAttribute" && ast.value && ast.value.type === "Literal" && /["']|"|'/.test(ast.value.value)) { + newObj.value.value = newObj.value.value.replace(/["']|"|'/g, '"'); + } + const expression = ast.expression || ast.callee; + if (ast.type === "Decorator" && expression.type === "CallExpression" && expression.callee.name === "Component" && expression.arguments.length === 1) { + const astProps = ast.expression.arguments[0].properties; + for (const [index, prop] of newObj.expression.arguments[0].properties.entries()) { + switch (astProps[index].key.name) { + case "styles": + if (prop.value.type === "ArrayExpression") { + removeTemplateElementsValue(prop.value.elements[0]); + } + break; + case "template": + if (prop.value.type === "TemplateLiteral") { + removeTemplateElementsValue(prop.value); + } + break; + } + } + } + if (ast.type === "TaggedTemplateExpression" && (ast.tag.type === "MemberExpression" || ast.tag.type === "Identifier" && (ast.tag.name === "gql" || ast.tag.name === "graphql" || ast.tag.name === "css" || ast.tag.name === "md" || ast.tag.name === "markdown" || ast.tag.name === "html") || ast.tag.type === "CallExpression")) { + removeTemplateElementsValue(newObj.quasi); + } + if (ast.type === "TemplateLiteral") { + var _ast$leadingComments; + const hasLanguageComment = (_ast$leadingComments = ast.leadingComments) === null || _ast$leadingComments === void 0 ? void 0 : _ast$leadingComments.some((comment) => isBlockComment(comment) && ["GraphQL", "HTML"].some((languageName) => comment.value === ` ${languageName} `)); + if (hasLanguageComment || parent.type === "CallExpression" && parent.callee.name === "graphql" || !ast.leadingComments) { + removeTemplateElementsValue(newObj); + } + } + if (ast.type === "InterpreterDirective") { + newObj.value = newObj.value.trimEnd(); + } + if ((ast.type === "TSIntersectionType" || ast.type === "TSUnionType") && ast.types.length === 1) { + return newObj.types[0]; + } + } + clean.ignoredProperties = ignoredProperties; + module22.exports = clean; + } + }); + var require_detect_newline = __commonJS22({ + "node_modules/detect-newline/index.js"(exports2, module22) { + "use strict"; + var detectNewline = (string) => { + if (typeof string !== "string") { + throw new TypeError("Expected a string"); + } + const newlines = string.match(/(?:\r?\n)/g) || []; + if (newlines.length === 0) { + return; + } + const crlf = newlines.filter((newline) => newline === "\r\n").length; + const lf = newlines.length - crlf; + return crlf > lf ? "\r\n" : "\n"; + }; + module22.exports = detectNewline; + module22.exports.graceful = (string) => typeof string === "string" && detectNewline(string) || "\n"; + } + }); + var require_build5 = __commonJS22({ + "node_modules/jest-docblock/build/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.extract = extract; + exports2.parse = parse; + exports2.parseWithComments = parseWithComments; + exports2.print = print; + exports2.strip = strip; + function _os() { + const data = require("os"); + _os = function() { + return data; + }; + return data; + } + function _detectNewline() { + const data = _interopRequireDefault(require_detect_newline()); + _detectNewline = function() { + return data; + }; + return data; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + var commentEndRe = /\*\/$/; + var commentStartRe = /^\/\*\*/; + var docblockRe = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/; + var lineCommentRe = /(^|\s+)\/\/([^\r\n]*)/g; + var ltrimNewlineRe = /^(\r?\n)+/; + var multilineRe = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g; + var propertyRe = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g; + var stringStartRe = /(\r?\n|^) *\* ?/g; + var STRING_ARRAY = []; + function extract(contents) { + const match = contents.match(docblockRe); + return match ? match[0].trimLeft() : ""; + } + function strip(contents) { + const match = contents.match(docblockRe); + return match && match[0] ? contents.substring(match[0].length) : contents; + } + function parse(docblock) { + return parseWithComments(docblock).pragmas; + } + function parseWithComments(docblock) { + const line = (0, _detectNewline().default)(docblock) || _os().EOL; + docblock = docblock.replace(commentStartRe, "").replace(commentEndRe, "").replace(stringStartRe, "$1"); + let prev = ""; + while (prev !== docblock) { + prev = docblock; + docblock = docblock.replace(multilineRe, `${line}$1 $2${line}`); + } + docblock = docblock.replace(ltrimNewlineRe, "").trimRight(); + const result = /* @__PURE__ */ Object.create(null); + const comments = docblock.replace(propertyRe, "").replace(ltrimNewlineRe, "").trimRight(); + let match; + while (match = propertyRe.exec(docblock)) { + const nextPragma = match[2].replace(lineCommentRe, ""); + if (typeof result[match[1]] === "string" || Array.isArray(result[match[1]])) { + result[match[1]] = STRING_ARRAY.concat(result[match[1]], nextPragma); + } else { + result[match[1]] = nextPragma; + } + } + return { + comments, + pragmas: result + }; + } + function print({ + comments = "", + pragmas = {} + }) { + const line = (0, _detectNewline().default)(comments) || _os().EOL; + const head = "/**"; + const start = " *"; + const tail = " */"; + const keys = Object.keys(pragmas); + const printedObject = keys.map((key) => printKeyValues(key, pragmas[key])).reduce((arr, next) => arr.concat(next), []).map((keyValue) => start + " " + keyValue + line).join(""); + if (!comments) { + if (keys.length === 0) { + return ""; + } + if (keys.length === 1 && !Array.isArray(pragmas[keys[0]])) { + const value = pragmas[keys[0]]; + return `${head} ${printKeyValues(keys[0], value)[0]}${tail}`; + } + } + const printedComments = comments.split(line).map((textLine) => `${start} ${textLine}`).join(line) + line; + return head + line + (comments ? printedComments : "") + (comments && keys.length ? start + line : "") + printedObject + tail; + } + function printKeyValues(key, valueOrArray) { + return STRING_ARRAY.concat(valueOrArray).map((value) => `@${key} ${value}`.trim()); + } + } + }); + var require_get_shebang = __commonJS22({ + "src/language-js/utils/get-shebang.js"(exports2, module22) { + "use strict"; + function getShebang(text) { + if (!text.startsWith("#!")) { + return ""; + } + const index = text.indexOf("\n"); + if (index === -1) { + return text; + } + return text.slice(0, index); + } + module22.exports = getShebang; + } + }); + var require_pragma = __commonJS22({ + "src/language-js/pragma.js"(exports2, module22) { + "use strict"; + var { + parseWithComments, + strip, + extract, + print + } = require_build5(); + var { + normalizeEndOfLine + } = require_end_of_line(); + var getShebang = require_get_shebang(); + function parseDocBlock(text) { + const shebang = getShebang(text); + if (shebang) { + text = text.slice(shebang.length + 1); + } + const docBlock = extract(text); + const { + pragmas, + comments + } = parseWithComments(docBlock); + return { + shebang, + text, + pragmas, + comments + }; + } + function hasPragma(text) { + const pragmas = Object.keys(parseDocBlock(text).pragmas); + return pragmas.includes("prettier") || pragmas.includes("format"); + } + function insertPragma(originalText) { + const { + shebang, + text, + pragmas, + comments + } = parseDocBlock(originalText); + const strippedText = strip(text); + const docBlock = print({ + pragmas: Object.assign({ + format: "" + }, pragmas), + comments: comments.trimStart() + }); + return (shebang ? `${shebang} +` : "") + normalizeEndOfLine(docBlock) + (strippedText.startsWith("\n") ? "\n" : "\n\n") + strippedText; + } + module22.exports = { + hasPragma, + insertPragma + }; + } + }); + var require_comments2 = __commonJS22({ + "src/language-js/comments.js"(exports2, module22) { + "use strict"; + var { + getLast, + hasNewline, + getNextNonSpaceNonCommentCharacterIndexWithStartIndex, + getNextNonSpaceNonCommentCharacter, + hasNewlineInRange, + addLeadingComment, + addTrailingComment, + addDanglingComment, + getNextNonSpaceNonCommentCharacterIndex, + isNonEmptyArray + } = require_util2(); + var { + getFunctionParameters, + isPrettierIgnoreComment, + isJsxNode, + hasFlowShorthandAnnotationComment, + hasFlowAnnotationComment, + hasIgnoreComment, + isCallLikeExpression, + getCallArguments, + isCallExpression, + isMemberExpression, + isObjectProperty, + isLineComment, + getComments, + CommentCheckFlags, + markerForIfWithoutBlockAndSameLineComment + } = require_utils7(); + var { + locStart, + locEnd + } = require_loc(); + var isBlockComment = require_is_block_comment(); + function handleOwnLineComment(context) { + return [handleIgnoreComments, handleLastFunctionArgComments, handleMemberExpressionComments, handleIfStatementComments, handleWhileComments, handleTryStatementComments, handleClassComments, handleForComments, handleUnionTypeComments, handleOnlyComments, handleModuleSpecifiersComments, handleAssignmentPatternComments, handleMethodNameComments, handleLabeledStatementComments, handleBreakAndContinueStatementComments].some((fn) => fn(context)); + } + function handleEndOfLineComment(context) { + return [handleClosureTypeCastComments, handleLastFunctionArgComments, handleConditionalExpressionComments, handleModuleSpecifiersComments, handleIfStatementComments, handleWhileComments, handleTryStatementComments, handleClassComments, handleLabeledStatementComments, handleCallExpressionComments, handlePropertyComments, handleOnlyComments, handleVariableDeclaratorComments, handleBreakAndContinueStatementComments, handleSwitchDefaultCaseComments].some((fn) => fn(context)); + } + function handleRemainingComment(context) { + return [handleIgnoreComments, handleIfStatementComments, handleWhileComments, handleObjectPropertyAssignment, handleCommentInEmptyParens, handleMethodNameComments, handleOnlyComments, handleCommentAfterArrowParams, handleFunctionNameComments, handleTSMappedTypeComments, handleBreakAndContinueStatementComments, handleTSFunctionTrailingComments].some((fn) => fn(context)); + } + function addBlockStatementFirstComment(node, comment) { + const firstNonEmptyNode = (node.body || node.properties).find(({ + type: type2 + }) => type2 !== "EmptyStatement"); + if (firstNonEmptyNode) { + addLeadingComment(firstNonEmptyNode, comment); + } else { + addDanglingComment(node, comment); + } + } + function addBlockOrNotComment(node, comment) { + if (node.type === "BlockStatement") { + addBlockStatementFirstComment(node, comment); + } else { + addLeadingComment(node, comment); + } + } + function handleClosureTypeCastComments({ + comment, + followingNode + }) { + if (followingNode && isTypeCastComment(comment)) { + addLeadingComment(followingNode, comment); + return true; + } + return false; + } + function handleIfStatementComments({ + comment, + precedingNode, + enclosingNode, + followingNode, + text + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) !== "IfStatement" || !followingNode) { + return false; + } + const nextCharacter = getNextNonSpaceNonCommentCharacter(text, comment, locEnd); + if (nextCharacter === ")") { + addTrailingComment(precedingNode, comment); + return true; + } + if (precedingNode === enclosingNode.consequent && followingNode === enclosingNode.alternate) { + if (precedingNode.type === "BlockStatement") { + addTrailingComment(precedingNode, comment); + } else { + const isSingleLineComment = comment.type === "SingleLine" || comment.loc.start.line === comment.loc.end.line; + const isSameLineComment = comment.loc.start.line === precedingNode.loc.start.line; + if (isSingleLineComment && isSameLineComment) { + addDanglingComment(precedingNode, comment, markerForIfWithoutBlockAndSameLineComment); + } else { + addDanglingComment(enclosingNode, comment); + } + } + return true; + } + if (followingNode.type === "BlockStatement") { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + if (followingNode.type === "IfStatement") { + addBlockOrNotComment(followingNode.consequent, comment); + return true; + } + if (enclosingNode.consequent === followingNode) { + addLeadingComment(followingNode, comment); + return true; + } + return false; + } + function handleWhileComments({ + comment, + precedingNode, + enclosingNode, + followingNode, + text + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) !== "WhileStatement" || !followingNode) { + return false; + } + const nextCharacter = getNextNonSpaceNonCommentCharacter(text, comment, locEnd); + if (nextCharacter === ")") { + addTrailingComment(precedingNode, comment); + return true; + } + if (followingNode.type === "BlockStatement") { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + if (enclosingNode.body === followingNode) { + addLeadingComment(followingNode, comment); + return true; + } + return false; + } + function handleTryStatementComments({ + comment, + precedingNode, + enclosingNode, + followingNode + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) !== "TryStatement" && (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) !== "CatchClause" || !followingNode) { + return false; + } + if (enclosingNode.type === "CatchClause" && precedingNode) { + addTrailingComment(precedingNode, comment); + return true; + } + if (followingNode.type === "BlockStatement") { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + if (followingNode.type === "TryStatement") { + addBlockOrNotComment(followingNode.finalizer, comment); + return true; + } + if (followingNode.type === "CatchClause") { + addBlockOrNotComment(followingNode.body, comment); + return true; + } + return false; + } + function handleMemberExpressionComments({ + comment, + enclosingNode, + followingNode + }) { + if (isMemberExpression(enclosingNode) && (followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) === "Identifier") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; + } + function handleConditionalExpressionComments({ + comment, + precedingNode, + enclosingNode, + followingNode, + text + }) { + const isSameLineAsPrecedingNode = precedingNode && !hasNewlineInRange(text, locEnd(precedingNode), locStart(comment)); + if ((!precedingNode || !isSameLineAsPrecedingNode) && ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ConditionalExpression" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "TSConditionalType") && followingNode) { + addLeadingComment(followingNode, comment); + return true; + } + return false; + } + function handleObjectPropertyAssignment({ + comment, + precedingNode, + enclosingNode + }) { + if (isObjectProperty(enclosingNode) && enclosingNode.shorthand && enclosingNode.key === precedingNode && enclosingNode.value.type === "AssignmentPattern") { + addTrailingComment(enclosingNode.value.left, comment); + return true; + } + return false; + } + var classLikeNodeTypes = /* @__PURE__ */ new Set(["ClassDeclaration", "ClassExpression", "DeclareClass", "DeclareInterface", "InterfaceDeclaration", "TSInterfaceDeclaration"]); + function handleClassComments({ + comment, + precedingNode, + enclosingNode, + followingNode + }) { + if (classLikeNodeTypes.has(enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type)) { + if (isNonEmptyArray(enclosingNode.decorators) && !(followingNode && followingNode.type === "Decorator")) { + addTrailingComment(getLast(enclosingNode.decorators), comment); + return true; + } + if (enclosingNode.body && followingNode === enclosingNode.body) { + addBlockStatementFirstComment(enclosingNode.body, comment); + return true; + } + if (followingNode) { + if (enclosingNode.superClass && followingNode === enclosingNode.superClass && precedingNode && (precedingNode === enclosingNode.id || precedingNode === enclosingNode.typeParameters)) { + addTrailingComment(precedingNode, comment); + return true; + } + for (const prop of ["implements", "extends", "mixins"]) { + if (enclosingNode[prop] && followingNode === enclosingNode[prop][0]) { + if (precedingNode && (precedingNode === enclosingNode.id || precedingNode === enclosingNode.typeParameters || precedingNode === enclosingNode.superClass)) { + addTrailingComment(precedingNode, comment); + } else { + addDanglingComment(enclosingNode, comment, prop); + } + return true; + } + } + } + } + return false; + } + var propertyLikeNodeTypes = /* @__PURE__ */ new Set(["ClassMethod", "ClassProperty", "PropertyDefinition", "TSAbstractPropertyDefinition", "TSAbstractMethodDefinition", "TSDeclareMethod", "MethodDefinition"]); + function handleMethodNameComments({ + comment, + precedingNode, + enclosingNode, + text + }) { + if (enclosingNode && precedingNode && getNextNonSpaceNonCommentCharacter(text, comment, locEnd) === "(" && (enclosingNode.type === "Property" || enclosingNode.type === "TSDeclareMethod" || enclosingNode.type === "TSAbstractMethodDefinition") && precedingNode.type === "Identifier" && enclosingNode.key === precedingNode && getNextNonSpaceNonCommentCharacter(text, precedingNode, locEnd) !== ":") { + addTrailingComment(precedingNode, comment); + return true; + } + if ((precedingNode === null || precedingNode === void 0 ? void 0 : precedingNode.type) === "Decorator" && propertyLikeNodeTypes.has(enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type)) { + addTrailingComment(precedingNode, comment); + return true; + } + return false; + } + var functionLikeNodeTypes = /* @__PURE__ */ new Set(["FunctionDeclaration", "FunctionExpression", "ClassMethod", "MethodDefinition", "ObjectMethod"]); + function handleFunctionNameComments({ + comment, + precedingNode, + enclosingNode, + text + }) { + if (getNextNonSpaceNonCommentCharacter(text, comment, locEnd) !== "(") { + return false; + } + if (precedingNode && functionLikeNodeTypes.has(enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type)) { + addTrailingComment(precedingNode, comment); + return true; + } + return false; + } + function handleCommentAfterArrowParams({ + comment, + enclosingNode, + text + }) { + if (!((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ArrowFunctionExpression")) { + return false; + } + const index = getNextNonSpaceNonCommentCharacterIndex(text, comment, locEnd); + if (index !== false && text.slice(index, index + 2) === "=>") { + addDanglingComment(enclosingNode, comment); + return true; + } + return false; + } + function handleCommentInEmptyParens({ + comment, + enclosingNode, + text + }) { + if (getNextNonSpaceNonCommentCharacter(text, comment, locEnd) !== ")") { + return false; + } + if (enclosingNode && (isRealFunctionLikeNode(enclosingNode) && getFunctionParameters(enclosingNode).length === 0 || isCallLikeExpression(enclosingNode) && getCallArguments(enclosingNode).length === 0)) { + addDanglingComment(enclosingNode, comment); + return true; + } + if (((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "MethodDefinition" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "TSAbstractMethodDefinition") && getFunctionParameters(enclosingNode.value).length === 0) { + addDanglingComment(enclosingNode.value, comment); + return true; + } + return false; + } + function handleLastFunctionArgComments({ + comment, + precedingNode, + enclosingNode, + followingNode, + text + }) { + if ((precedingNode === null || precedingNode === void 0 ? void 0 : precedingNode.type) === "FunctionTypeParam" && (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "FunctionTypeAnnotation" && (followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) !== "FunctionTypeParam") { + addTrailingComment(precedingNode, comment); + return true; + } + if (((precedingNode === null || precedingNode === void 0 ? void 0 : precedingNode.type) === "Identifier" || (precedingNode === null || precedingNode === void 0 ? void 0 : precedingNode.type) === "AssignmentPattern") && enclosingNode && isRealFunctionLikeNode(enclosingNode) && getNextNonSpaceNonCommentCharacter(text, comment, locEnd) === ")") { + addTrailingComment(precedingNode, comment); + return true; + } + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "FunctionDeclaration" && (followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) === "BlockStatement") { + const functionParamRightParenIndex = (() => { + const parameters = getFunctionParameters(enclosingNode); + if (parameters.length > 0) { + return getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, locEnd(getLast(parameters))); + } + const functionParamLeftParenIndex = getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, locEnd(enclosingNode.id)); + return functionParamLeftParenIndex !== false && getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, functionParamLeftParenIndex + 1); + })(); + if (locStart(comment) > functionParamRightParenIndex) { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + } + return false; + } + function handleLabeledStatementComments({ + comment, + enclosingNode + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "LabeledStatement") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; + } + function handleBreakAndContinueStatementComments({ + comment, + enclosingNode + }) { + if (((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ContinueStatement" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "BreakStatement") && !enclosingNode.label) { + addTrailingComment(enclosingNode, comment); + return true; + } + return false; + } + function handleCallExpressionComments({ + comment, + precedingNode, + enclosingNode + }) { + if (isCallExpression(enclosingNode) && precedingNode && enclosingNode.callee === precedingNode && enclosingNode.arguments.length > 0) { + addLeadingComment(enclosingNode.arguments[0], comment); + return true; + } + return false; + } + function handleUnionTypeComments({ + comment, + precedingNode, + enclosingNode, + followingNode + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "UnionTypeAnnotation" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "TSUnionType") { + if (isPrettierIgnoreComment(comment)) { + followingNode.prettierIgnore = true; + comment.unignore = true; + } + if (precedingNode) { + addTrailingComment(precedingNode, comment); + return true; + } + return false; + } + if (((followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) === "UnionTypeAnnotation" || (followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) === "TSUnionType") && isPrettierIgnoreComment(comment)) { + followingNode.types[0].prettierIgnore = true; + comment.unignore = true; + } + return false; + } + function handlePropertyComments({ + comment, + enclosingNode + }) { + if (isObjectProperty(enclosingNode)) { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; + } + function handleOnlyComments({ + comment, + enclosingNode, + followingNode, + ast, + isLastComment + }) { + if (ast && ast.body && ast.body.length === 0) { + if (isLastComment) { + addDanglingComment(ast, comment); + } else { + addLeadingComment(ast, comment); + } + return true; + } + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "Program" && (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.body.length) === 0 && !isNonEmptyArray(enclosingNode.directives)) { + if (isLastComment) { + addDanglingComment(enclosingNode, comment); + } else { + addLeadingComment(enclosingNode, comment); + } + return true; + } + if ((followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) === "Program" && (followingNode === null || followingNode === void 0 ? void 0 : followingNode.body.length) === 0 && (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ModuleExpression") { + addDanglingComment(followingNode, comment); + return true; + } + return false; + } + function handleForComments({ + comment, + enclosingNode + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ForInStatement" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ForOfStatement") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; + } + function handleModuleSpecifiersComments({ + comment, + precedingNode, + enclosingNode, + text + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ImportSpecifier" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ExportSpecifier") { + addLeadingComment(enclosingNode, comment); + return true; + } + const isImportDeclaration = (precedingNode === null || precedingNode === void 0 ? void 0 : precedingNode.type) === "ImportSpecifier" && (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ImportDeclaration"; + const isExportDeclaration = (precedingNode === null || precedingNode === void 0 ? void 0 : precedingNode.type) === "ExportSpecifier" && (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "ExportNamedDeclaration"; + if ((isImportDeclaration || isExportDeclaration) && hasNewline(text, locEnd(comment))) { + addTrailingComment(precedingNode, comment); + return true; + } + return false; + } + function handleAssignmentPatternComments({ + comment, + enclosingNode + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "AssignmentPattern") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; + } + var assignmentLikeNodeTypes = /* @__PURE__ */ new Set(["VariableDeclarator", "AssignmentExpression", "TypeAlias", "TSTypeAliasDeclaration"]); + var complexExprNodeTypes = /* @__PURE__ */ new Set(["ObjectExpression", "ArrayExpression", "TemplateLiteral", "TaggedTemplateExpression", "ObjectTypeAnnotation", "TSTypeLiteral"]); + function handleVariableDeclaratorComments({ + comment, + enclosingNode, + followingNode + }) { + if (assignmentLikeNodeTypes.has(enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) && followingNode && (complexExprNodeTypes.has(followingNode.type) || isBlockComment(comment))) { + addLeadingComment(followingNode, comment); + return true; + } + return false; + } + function handleTSFunctionTrailingComments({ + comment, + enclosingNode, + followingNode, + text + }) { + if (!followingNode && ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "TSMethodSignature" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "TSDeclareFunction" || (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "TSAbstractMethodDefinition") && getNextNonSpaceNonCommentCharacter(text, comment, locEnd) === ";") { + addTrailingComment(enclosingNode, comment); + return true; + } + return false; + } + function handleIgnoreComments({ + comment, + enclosingNode, + followingNode + }) { + if (isPrettierIgnoreComment(comment) && (enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === "TSMappedType" && (followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) === "TSTypeParameter" && followingNode.constraint) { + enclosingNode.prettierIgnore = true; + comment.unignore = true; + return true; + } + } + function handleTSMappedTypeComments({ + comment, + precedingNode, + enclosingNode, + followingNode + }) { + if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) !== "TSMappedType") { + return false; + } + if ((followingNode === null || followingNode === void 0 ? void 0 : followingNode.type) === "TSTypeParameter" && followingNode.name) { + addLeadingComment(followingNode.name, comment); + return true; + } + if ((precedingNode === null || precedingNode === void 0 ? void 0 : precedingNode.type) === "TSTypeParameter" && precedingNode.constraint) { + addTrailingComment(precedingNode.constraint, comment); + return true; + } + return false; + } + function handleSwitchDefaultCaseComments({ + comment, + enclosingNode, + followingNode + }) { + if (!enclosingNode || enclosingNode.type !== "SwitchCase" || enclosingNode.test) { + return false; + } + if (followingNode.type === "BlockStatement" && isLineComment(comment)) { + addBlockStatementFirstComment(followingNode, comment); + } else { + addDanglingComment(enclosingNode, comment); + } + return true; + } + function isRealFunctionLikeNode(node) { + return node.type === "ArrowFunctionExpression" || node.type === "FunctionExpression" || node.type === "FunctionDeclaration" || node.type === "ObjectMethod" || node.type === "ClassMethod" || node.type === "TSDeclareFunction" || node.type === "TSCallSignatureDeclaration" || node.type === "TSConstructSignatureDeclaration" || node.type === "TSMethodSignature" || node.type === "TSConstructorType" || node.type === "TSFunctionType" || node.type === "TSDeclareMethod"; + } + function getCommentChildNodes(node, options) { + if ((options.parser === "typescript" || options.parser === "flow" || options.parser === "acorn" || options.parser === "espree" || options.parser === "meriyah" || options.parser === "__babel_estree") && node.type === "MethodDefinition" && node.value && node.value.type === "FunctionExpression" && getFunctionParameters(node.value).length === 0 && !node.value.returnType && !isNonEmptyArray(node.value.typeParameters) && node.value.body) { + return [...node.decorators || [], node.key, node.value.body]; + } + } + function isTypeCastComment(comment) { + return isBlockComment(comment) && comment.value[0] === "*" && /@type\b/.test(comment.value); + } + function willPrintOwnComments(path2) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + const hasFlowAnnotations = (node2) => hasFlowAnnotationComment(getComments(node2, CommentCheckFlags.Leading)) || hasFlowAnnotationComment(getComments(node2, CommentCheckFlags.Trailing)); + return (node && (isJsxNode(node) || hasFlowShorthandAnnotationComment(node) || isCallExpression(parent) && hasFlowAnnotations(node)) || parent && (parent.type === "JSXSpreadAttribute" || parent.type === "JSXSpreadChild" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || (parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && parent.superClass === node)) && (!hasIgnoreComment(path2) || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType"); + } + module22.exports = { + handleOwnLineComment, + handleEndOfLineComment, + handleRemainingComment, + isTypeCastComment, + getCommentChildNodes, + willPrintOwnComments + }; + } + }); + var require_needs_parens = __commonJS22({ + "src/language-js/needs-parens.js"(exports2, module22) { + "use strict"; + var getLast = require_get_last(); + var isNonEmptyArray = require_is_non_empty_array(); + var { + getFunctionParameters, + getLeftSidePathName, + hasFlowShorthandAnnotationComment, + hasNakedLeftSide, + hasNode, + isBitwiseOperator, + startsWithNoLookaheadToken, + shouldFlatten, + getPrecedence, + isCallExpression, + isMemberExpression, + isObjectProperty + } = require_utils7(); + function needsParens(path2, options) { + const parent = path2.getParentNode(); + if (!parent) { + return false; + } + const name = path2.getName(); + const node = path2.getNode(); + if (options.__isInHtmlInterpolation && !options.bracketSpacing && endsWithRightBracket(node) && isFollowedByRightBracket(path2)) { + return true; + } + if (isStatement(node)) { + return false; + } + if (options.parser !== "flow" && hasFlowShorthandAnnotationComment(path2.getValue())) { + return true; + } + if (node.type === "Identifier") { + if (node.extra && node.extra.parenthesized && /^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(node.name)) { + return true; + } + if (name === "left" && node.name === "async" && parent.type === "ForOfStatement" && !parent.await) { + return true; + } + return false; + } + switch (parent.type) { + case "ParenthesizedExpression": + return false; + case "ClassDeclaration": + case "ClassExpression": { + if (name === "superClass" && (node.type === "ArrowFunctionExpression" || node.type === "AssignmentExpression" || node.type === "AwaitExpression" || node.type === "BinaryExpression" || node.type === "ConditionalExpression" || node.type === "LogicalExpression" || node.type === "NewExpression" || node.type === "ObjectExpression" || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "UnaryExpression" || node.type === "UpdateExpression" || node.type === "YieldExpression" || node.type === "TSNonNullExpression")) { + return true; + } + break; + } + case "ExportDefaultDeclaration": { + return shouldWrapFunctionForExportDefault(path2, options) || node.type === "SequenceExpression"; + } + case "Decorator": { + if (name === "expression") { + let hasCallExpression = false; + let hasMemberExpression = false; + let current = node; + while (current) { + switch (current.type) { + case "MemberExpression": + hasMemberExpression = true; + current = current.object; + break; + case "CallExpression": + if (hasMemberExpression || hasCallExpression) { + return options.parser !== "typescript"; + } + hasCallExpression = true; + current = current.callee; + break; + case "Identifier": + return false; + case "TaggedTemplateExpression": + return options.parser !== "typescript"; + default: + return true; + } + } + return true; + } + break; + } + case "ExpressionStatement": { + if (startsWithNoLookaheadToken(node, true)) { + return true; + } + break; + } + case "ArrowFunctionExpression": { + if (name === "body" && node.type !== "SequenceExpression" && startsWithNoLookaheadToken(node, false)) { + return true; + } + break; + } + } + switch (node.type) { + case "UpdateExpression": + if (parent.type === "UnaryExpression") { + return node.prefix && (node.operator === "++" && parent.operator === "+" || node.operator === "--" && parent.operator === "-"); + } + case "UnaryExpression": + switch (parent.type) { + case "UnaryExpression": + return node.operator === parent.operator && (node.operator === "+" || node.operator === "-"); + case "BindExpression": + return true; + case "MemberExpression": + case "OptionalMemberExpression": + return name === "object"; + case "TaggedTemplateExpression": + return true; + case "NewExpression": + case "CallExpression": + case "OptionalCallExpression": + return name === "callee"; + case "BinaryExpression": + return name === "left" && parent.operator === "**"; + case "TSNonNullExpression": + return true; + default: + return false; + } + case "BinaryExpression": { + if (parent.type === "UpdateExpression") { + return true; + } + if (node.operator === "in" && isPathInForStatementInitializer(path2)) { + return true; + } + if (node.operator === "|>" && node.extra && node.extra.parenthesized) { + const grandParent = path2.getParentNode(1); + if (grandParent.type === "BinaryExpression" && grandParent.operator === "|>") { + return true; + } + } + } + case "TSTypeAssertion": + case "TSAsExpression": + case "LogicalExpression": + switch (parent.type) { + case "TSAsExpression": + return node.type !== "TSAsExpression"; + case "ConditionalExpression": + return node.type === "TSAsExpression"; + case "CallExpression": + case "NewExpression": + case "OptionalCallExpression": + return name === "callee"; + case "ClassExpression": + case "ClassDeclaration": + return name === "superClass"; + case "TSTypeAssertion": + case "TaggedTemplateExpression": + case "UnaryExpression": + case "JSXSpreadAttribute": + case "SpreadElement": + case "SpreadProperty": + case "BindExpression": + case "AwaitExpression": + case "TSNonNullExpression": + case "UpdateExpression": + return true; + case "MemberExpression": + case "OptionalMemberExpression": + return name === "object"; + case "AssignmentExpression": + case "AssignmentPattern": + return name === "left" && (node.type === "TSTypeAssertion" || node.type === "TSAsExpression"); + case "LogicalExpression": + if (node.type === "LogicalExpression") { + return parent.operator !== node.operator; + } + case "BinaryExpression": { + const { + operator, + type: type2 + } = node; + if (!operator && type2 !== "TSTypeAssertion") { + return true; + } + const precedence = getPrecedence(operator); + const parentOperator = parent.operator; + const parentPrecedence = getPrecedence(parentOperator); + if (parentPrecedence > precedence) { + return true; + } + if (name === "right" && parentPrecedence === precedence) { + return true; + } + if (parentPrecedence === precedence && !shouldFlatten(parentOperator, operator)) { + return true; + } + if (parentPrecedence < precedence && operator === "%") { + return parentOperator === "+" || parentOperator === "-"; + } + if (isBitwiseOperator(parentOperator)) { + return true; + } + return false; + } + default: + return false; + } + case "SequenceExpression": + switch (parent.type) { + case "ReturnStatement": + return false; + case "ForStatement": + return false; + case "ExpressionStatement": + return name !== "expression"; + case "ArrowFunctionExpression": + return name !== "body"; + default: + return true; + } + case "YieldExpression": + if (parent.type === "UnaryExpression" || parent.type === "AwaitExpression" || parent.type === "TSAsExpression" || parent.type === "TSNonNullExpression") { + return true; + } + case "AwaitExpression": + switch (parent.type) { + case "TaggedTemplateExpression": + case "UnaryExpression": + case "LogicalExpression": + case "SpreadElement": + case "SpreadProperty": + case "TSAsExpression": + case "TSNonNullExpression": + case "BindExpression": + return true; + case "MemberExpression": + case "OptionalMemberExpression": + return name === "object"; + case "NewExpression": + case "CallExpression": + case "OptionalCallExpression": + return name === "callee"; + case "ConditionalExpression": + return name === "test"; + case "BinaryExpression": { + if (!node.argument && parent.operator === "|>") { + return false; + } + return true; + } + default: + return false; + } + case "TSConditionalType": + if (name === "extendsType" && parent.type === "TSConditionalType") { + return true; + } + case "TSFunctionType": + case "TSConstructorType": + if (name === "checkType" && parent.type === "TSConditionalType") { + return true; + } + case "TSUnionType": + case "TSIntersectionType": + if ((parent.type === "TSUnionType" || parent.type === "TSIntersectionType") && parent.types.length > 1 && (!node.types || node.types.length > 1)) { + return true; + } + case "TSInferType": + if (node.type === "TSInferType" && parent.type === "TSRestType") { + return false; + } + case "TSTypeOperator": + return parent.type === "TSArrayType" || parent.type === "TSOptionalType" || parent.type === "TSRestType" || name === "objectType" && parent.type === "TSIndexedAccessType" || parent.type === "TSTypeOperator" || parent.type === "TSTypeAnnotation" && path2.getParentNode(1).type.startsWith("TSJSDoc"); + case "ArrayTypeAnnotation": + return parent.type === "NullableTypeAnnotation"; + case "IntersectionTypeAnnotation": + case "UnionTypeAnnotation": + return parent.type === "ArrayTypeAnnotation" || parent.type === "NullableTypeAnnotation" || parent.type === "IntersectionTypeAnnotation" || parent.type === "UnionTypeAnnotation" || name === "objectType" && (parent.type === "IndexedAccessType" || parent.type === "OptionalIndexedAccessType"); + case "NullableTypeAnnotation": + return parent.type === "ArrayTypeAnnotation" || name === "objectType" && (parent.type === "IndexedAccessType" || parent.type === "OptionalIndexedAccessType"); + case "FunctionTypeAnnotation": { + const ancestor = parent.type === "NullableTypeAnnotation" ? path2.getParentNode(1) : parent; + return ancestor.type === "UnionTypeAnnotation" || ancestor.type === "IntersectionTypeAnnotation" || ancestor.type === "ArrayTypeAnnotation" || name === "objectType" && (ancestor.type === "IndexedAccessType" || ancestor.type === "OptionalIndexedAccessType") || ancestor.type === "NullableTypeAnnotation" || parent.type === "FunctionTypeParam" && parent.name === null && getFunctionParameters(node).some((param) => param.typeAnnotation && param.typeAnnotation.type === "NullableTypeAnnotation"); + } + case "OptionalIndexedAccessType": + return name === "objectType" && parent.type === "IndexedAccessType"; + case "TypeofTypeAnnotation": + return name === "objectType" && (parent.type === "IndexedAccessType" || parent.type === "OptionalIndexedAccessType"); + case "StringLiteral": + case "NumericLiteral": + case "Literal": + if (typeof node.value === "string" && parent.type === "ExpressionStatement" && !parent.directive) { + const grandParent = path2.getParentNode(1); + return grandParent.type === "Program" || grandParent.type === "BlockStatement"; + } + return name === "object" && parent.type === "MemberExpression" && typeof node.value === "number"; + case "AssignmentExpression": { + const grandParent = path2.getParentNode(1); + if (name === "body" && parent.type === "ArrowFunctionExpression") { + return true; + } + if (name === "key" && (parent.type === "ClassProperty" || parent.type === "PropertyDefinition") && parent.computed) { + return false; + } + if ((name === "init" || name === "update") && parent.type === "ForStatement") { + return false; + } + if (parent.type === "ExpressionStatement") { + return node.left.type === "ObjectPattern"; + } + if (name === "key" && parent.type === "TSPropertySignature") { + return false; + } + if (parent.type === "AssignmentExpression") { + return false; + } + if (parent.type === "SequenceExpression" && grandParent && grandParent.type === "ForStatement" && (grandParent.init === parent || grandParent.update === parent)) { + return false; + } + if (name === "value" && parent.type === "Property" && grandParent && grandParent.type === "ObjectPattern" && grandParent.properties.includes(parent)) { + return false; + } + if (parent.type === "NGChainedExpression") { + return false; + } + return true; + } + case "ConditionalExpression": + switch (parent.type) { + case "TaggedTemplateExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "BinaryExpression": + case "LogicalExpression": + case "NGPipeExpression": + case "ExportDefaultDeclaration": + case "AwaitExpression": + case "JSXSpreadAttribute": + case "TSTypeAssertion": + case "TypeCastExpression": + case "TSAsExpression": + case "TSNonNullExpression": + return true; + case "NewExpression": + case "CallExpression": + case "OptionalCallExpression": + return name === "callee"; + case "ConditionalExpression": + return name === "test"; + case "MemberExpression": + case "OptionalMemberExpression": + return name === "object"; + default: + return false; + } + case "FunctionExpression": + switch (parent.type) { + case "NewExpression": + case "CallExpression": + case "OptionalCallExpression": + return name === "callee"; + case "TaggedTemplateExpression": + return true; + default: + return false; + } + case "ArrowFunctionExpression": + switch (parent.type) { + case "BinaryExpression": + return parent.operator !== "|>" || node.extra && node.extra.parenthesized; + case "NewExpression": + case "CallExpression": + case "OptionalCallExpression": + return name === "callee"; + case "MemberExpression": + case "OptionalMemberExpression": + return name === "object"; + case "TSAsExpression": + case "TSNonNullExpression": + case "BindExpression": + case "TaggedTemplateExpression": + case "UnaryExpression": + case "LogicalExpression": + case "AwaitExpression": + case "TSTypeAssertion": + return true; + case "ConditionalExpression": + return name === "test"; + default: + return false; + } + case "ClassExpression": + if (isNonEmptyArray(node.decorators)) { + return true; + } + switch (parent.type) { + case "NewExpression": + return name === "callee"; + default: + return false; + } + case "OptionalMemberExpression": + case "OptionalCallExpression": { + const parentParent = path2.getParentNode(1); + if (name === "object" && parent.type === "MemberExpression" || name === "callee" && (parent.type === "CallExpression" || parent.type === "NewExpression") || parent.type === "TSNonNullExpression" && parentParent.type === "MemberExpression" && parentParent.object === parent) { + return true; + } + } + case "CallExpression": + case "MemberExpression": + case "TaggedTemplateExpression": + case "TSNonNullExpression": + if (name === "callee" && (parent.type === "BindExpression" || parent.type === "NewExpression")) { + let object = node; + while (object) { + switch (object.type) { + case "CallExpression": + case "OptionalCallExpression": + return true; + case "MemberExpression": + case "OptionalMemberExpression": + case "BindExpression": + object = object.object; + break; + case "TaggedTemplateExpression": + object = object.tag; + break; + case "TSNonNullExpression": + object = object.expression; + break; + default: + return false; + } + } + } + return false; + case "BindExpression": + return name === "callee" && (parent.type === "BindExpression" || parent.type === "NewExpression") || name === "object" && isMemberExpression(parent); + case "NGPipeExpression": + if (parent.type === "NGRoot" || parent.type === "NGMicrosyntaxExpression" || parent.type === "ObjectProperty" && !(node.extra && node.extra.parenthesized) || parent.type === "ArrayExpression" || isCallExpression(parent) && parent.arguments[name] === node || name === "right" && parent.type === "NGPipeExpression" || name === "property" && parent.type === "MemberExpression" || parent.type === "AssignmentExpression") { + return false; + } + return true; + case "JSXFragment": + case "JSXElement": + return name === "callee" || name === "left" && parent.type === "BinaryExpression" && parent.operator === "<" || parent.type !== "ArrayExpression" && parent.type !== "ArrowFunctionExpression" && parent.type !== "AssignmentExpression" && parent.type !== "AssignmentPattern" && parent.type !== "BinaryExpression" && parent.type !== "NewExpression" && parent.type !== "ConditionalExpression" && parent.type !== "ExpressionStatement" && parent.type !== "JsExpressionRoot" && parent.type !== "JSXAttribute" && parent.type !== "JSXElement" && parent.type !== "JSXExpressionContainer" && parent.type !== "JSXFragment" && parent.type !== "LogicalExpression" && !isCallExpression(parent) && !isObjectProperty(parent) && parent.type !== "ReturnStatement" && parent.type !== "ThrowStatement" && parent.type !== "TypeCastExpression" && parent.type !== "VariableDeclarator" && parent.type !== "YieldExpression"; + case "TypeAnnotation": + return name === "returnType" && parent.type === "ArrowFunctionExpression" && includesFunctionTypeInObjectType(node); + } + return false; + } + function isStatement(node) { + return node.type === "BlockStatement" || node.type === "BreakStatement" || node.type === "ClassBody" || node.type === "ClassDeclaration" || node.type === "ClassMethod" || node.type === "ClassProperty" || node.type === "PropertyDefinition" || node.type === "ClassPrivateProperty" || node.type === "ContinueStatement" || node.type === "DebuggerStatement" || node.type === "DeclareClass" || node.type === "DeclareExportAllDeclaration" || node.type === "DeclareExportDeclaration" || node.type === "DeclareFunction" || node.type === "DeclareInterface" || node.type === "DeclareModule" || node.type === "DeclareModuleExports" || node.type === "DeclareVariable" || node.type === "DoWhileStatement" || node.type === "EnumDeclaration" || node.type === "ExportAllDeclaration" || node.type === "ExportDefaultDeclaration" || node.type === "ExportNamedDeclaration" || node.type === "ExpressionStatement" || node.type === "ForInStatement" || node.type === "ForOfStatement" || node.type === "ForStatement" || node.type === "FunctionDeclaration" || node.type === "IfStatement" || node.type === "ImportDeclaration" || node.type === "InterfaceDeclaration" || node.type === "LabeledStatement" || node.type === "MethodDefinition" || node.type === "ReturnStatement" || node.type === "SwitchStatement" || node.type === "ThrowStatement" || node.type === "TryStatement" || node.type === "TSDeclareFunction" || node.type === "TSEnumDeclaration" || node.type === "TSImportEqualsDeclaration" || node.type === "TSInterfaceDeclaration" || node.type === "TSModuleDeclaration" || node.type === "TSNamespaceExportDeclaration" || node.type === "TypeAlias" || node.type === "VariableDeclaration" || node.type === "WhileStatement" || node.type === "WithStatement"; + } + function isPathInForStatementInitializer(path2) { + let i = 0; + let node = path2.getValue(); + while (node) { + const parent = path2.getParentNode(i++); + if (parent && parent.type === "ForStatement" && parent.init === node) { + return true; + } + node = parent; + } + return false; + } + function includesFunctionTypeInObjectType(node) { + return hasNode(node, (n1) => n1.type === "ObjectTypeAnnotation" && hasNode(n1, (n2) => n2.type === "FunctionTypeAnnotation" || void 0) || void 0); + } + function endsWithRightBracket(node) { + switch (node.type) { + case "ObjectExpression": + return true; + default: + return false; + } + } + function isFollowedByRightBracket(path2) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + const name = path2.getName(); + switch (parent.type) { + case "NGPipeExpression": + if (typeof name === "number" && parent.arguments[name] === node && parent.arguments.length - 1 === name) { + return path2.callParent(isFollowedByRightBracket); + } + break; + case "ObjectProperty": + if (name === "value") { + const parentParent = path2.getParentNode(1); + return getLast(parentParent.properties) === parent; + } + break; + case "BinaryExpression": + case "LogicalExpression": + if (name === "right") { + return path2.callParent(isFollowedByRightBracket); + } + break; + case "ConditionalExpression": + if (name === "alternate") { + return path2.callParent(isFollowedByRightBracket); + } + break; + case "UnaryExpression": + if (parent.prefix) { + return path2.callParent(isFollowedByRightBracket); + } + break; + } + return false; + } + function shouldWrapFunctionForExportDefault(path2, options) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + if (node.type === "FunctionExpression" || node.type === "ClassExpression") { + return parent.type === "ExportDefaultDeclaration" || !needsParens(path2, options); + } + if (!hasNakedLeftSide(node) || parent.type !== "ExportDefaultDeclaration" && needsParens(path2, options)) { + return false; + } + return path2.call((childPath) => shouldWrapFunctionForExportDefault(childPath, options), ...getLeftSidePathName(path2, node)); + } + module22.exports = needsParens; + } + }); + var require_print_preprocess = __commonJS22({ + "src/language-js/print-preprocess.js"(exports2, module22) { + "use strict"; + function preprocess(ast, options) { + switch (options.parser) { + case "json": + case "json5": + case "json-stringify": + case "__js_expression": + case "__vue_expression": + case "__vue_ts_expression": + return Object.assign(Object.assign({}, ast), {}, { + type: options.parser.startsWith("__") ? "JsExpressionRoot" : "JsonRoot", + node: ast, + comments: [], + rootMarker: options.rootMarker + }); + default: + return ast; + } + } + module22.exports = preprocess; + } + }); + var require_html_binding = __commonJS22({ + "src/language-js/print/html-binding.js"(exports2, module22) { + "use strict"; + var { + builders: { + join, + line, + group, + softline, + indent + } + } = require_doc(); + function printHtmlBinding(path2, options, print) { + const node = path2.getValue(); + if (options.__onHtmlBindingRoot && path2.getName() === null) { + options.__onHtmlBindingRoot(node, options); + } + if (node.type !== "File") { + return; + } + if (options.__isVueForBindingLeft) { + return path2.call((functionDeclarationPath) => { + const printed = join([",", line], functionDeclarationPath.map(print, "params")); + const { + params + } = functionDeclarationPath.getValue(); + if (params.length === 1) { + return printed; + } + return ["(", indent([softline, group(printed)]), softline, ")"]; + }, "program", "body", 0); + } + if (options.__isVueBindings) { + return path2.call((functionDeclarationPath) => join([",", line], functionDeclarationPath.map(print, "params")), "program", "body", 0); + } + } + function isVueEventBindingExpression(node) { + switch (node.type) { + case "MemberExpression": + switch (node.property.type) { + case "Identifier": + case "NumericLiteral": + case "StringLiteral": + return isVueEventBindingExpression(node.object); + } + return false; + case "Identifier": + return true; + default: + return false; + } + } + module22.exports = { + isVueEventBindingExpression, + printHtmlBinding + }; + } + }); + var require_binaryish = __commonJS22({ + "src/language-js/print/binaryish.js"(exports2, module22) { + "use strict"; + var { + printComments + } = require_comments(); + var { + getLast + } = require_util2(); + var { + builders: { + join, + line, + softline, + group, + indent, + align, + ifBreak, + indentIfBreak + }, + utils: { + cleanDoc, + getDocParts, + isConcat + } + } = require_doc(); + var { + hasLeadingOwnLineComment, + isBinaryish, + isJsxNode, + shouldFlatten, + hasComment, + CommentCheckFlags, + isCallExpression, + isMemberExpression, + isObjectProperty, + isEnabledHackPipeline + } = require_utils7(); + var uid = 0; + function printBinaryishExpression(path2, options, print) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + const parentParent = path2.getParentNode(1); + const isInsideParenthesis = node !== parent.body && (parent.type === "IfStatement" || parent.type === "WhileStatement" || parent.type === "SwitchStatement" || parent.type === "DoWhileStatement"); + const isHackPipeline = isEnabledHackPipeline(options) && node.operator === "|>"; + const parts = printBinaryishExpressions(path2, print, options, false, isInsideParenthesis); + if (isInsideParenthesis) { + return parts; + } + if (isHackPipeline) { + return group(parts); + } + if (isCallExpression(parent) && parent.callee === node || parent.type === "UnaryExpression" || isMemberExpression(parent) && !parent.computed) { + return group([indent([softline, ...parts]), softline]); + } + const shouldNotIndent = parent.type === "ReturnStatement" || parent.type === "ThrowStatement" || parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" || node.operator !== "|" && parent.type === "JsExpressionRoot" || node.type !== "NGPipeExpression" && (parent.type === "NGRoot" && options.parser === "__ng_binding" || parent.type === "NGMicrosyntaxExpression" && parentParent.type === "NGMicrosyntax" && parentParent.body.length === 1) || node === parent.body && parent.type === "ArrowFunctionExpression" || node !== parent.body && parent.type === "ForStatement" || parent.type === "ConditionalExpression" && parentParent.type !== "ReturnStatement" && parentParent.type !== "ThrowStatement" && !isCallExpression(parentParent) || parent.type === "TemplateLiteral"; + const shouldIndentIfInlining = parent.type === "AssignmentExpression" || parent.type === "VariableDeclarator" || parent.type === "ClassProperty" || parent.type === "PropertyDefinition" || parent.type === "TSAbstractPropertyDefinition" || parent.type === "ClassPrivateProperty" || isObjectProperty(parent); + const samePrecedenceSubExpression = isBinaryish(node.left) && shouldFlatten(node.operator, node.left.operator); + if (shouldNotIndent || shouldInlineLogicalExpression(node) && !samePrecedenceSubExpression || !shouldInlineLogicalExpression(node) && shouldIndentIfInlining) { + return group(parts); + } + if (parts.length === 0) { + return ""; + } + const hasJsx = isJsxNode(node.right); + const firstGroupIndex = parts.findIndex((part) => typeof part !== "string" && !Array.isArray(part) && part.type === "group"); + const headParts = parts.slice(0, firstGroupIndex === -1 ? 1 : firstGroupIndex + 1); + const rest = parts.slice(headParts.length, hasJsx ? -1 : void 0); + const groupId = Symbol("logicalChain-" + ++uid); + const chain = group([...headParts, indent(rest)], { + id: groupId + }); + if (!hasJsx) { + return chain; + } + const jsxPart = getLast(parts); + return group([chain, indentIfBreak(jsxPart, { + groupId + })]); + } + function printBinaryishExpressions(path2, print, options, isNested, isInsideParenthesis) { + const node = path2.getValue(); + if (!isBinaryish(node)) { + return [group(print())]; + } + let parts = []; + if (shouldFlatten(node.operator, node.left.operator)) { + parts = path2.call((left) => printBinaryishExpressions(left, print, options, true, isInsideParenthesis), "left"); + } else { + parts.push(group(print("left"))); + } + const shouldInline = shouldInlineLogicalExpression(node); + const lineBeforeOperator = (node.operator === "|>" || node.type === "NGPipeExpression" || node.operator === "|" && options.parser === "__vue_expression") && !hasLeadingOwnLineComment(options.originalText, node.right); + const operator = node.type === "NGPipeExpression" ? "|" : node.operator; + const rightSuffix = node.type === "NGPipeExpression" && node.arguments.length > 0 ? group(indent([softline, ": ", join([softline, ":", ifBreak(" ")], path2.map(print, "arguments").map((arg) => align(2, group(arg))))])) : ""; + let right; + if (shouldInline) { + right = [operator, " ", print("right"), rightSuffix]; + } else { + const isHackPipeline = isEnabledHackPipeline(options) && operator === "|>"; + const rightContent = isHackPipeline ? path2.call((left) => printBinaryishExpressions(left, print, options, true, isInsideParenthesis), "right") : print("right"); + right = [lineBeforeOperator ? line : "", operator, lineBeforeOperator ? " " : line, rightContent, rightSuffix]; + } + const parent = path2.getParentNode(); + const shouldBreak = hasComment(node.left, CommentCheckFlags.Trailing | CommentCheckFlags.Line); + const shouldGroup = shouldBreak || !(isInsideParenthesis && node.type === "LogicalExpression") && parent.type !== node.type && node.left.type !== node.type && node.right.type !== node.type; + parts.push(lineBeforeOperator ? "" : " ", shouldGroup ? group(right, { + shouldBreak + }) : right); + if (isNested && hasComment(node)) { + const printed = cleanDoc(printComments(path2, parts, options)); + if (isConcat(printed) || printed.type === "fill") { + return getDocParts(printed); + } + return [printed]; + } + return parts; + } + function shouldInlineLogicalExpression(node) { + if (node.type !== "LogicalExpression") { + return false; + } + if (node.right.type === "ObjectExpression" && node.right.properties.length > 0) { + return true; + } + if (node.right.type === "ArrayExpression" && node.right.elements.length > 0) { + return true; + } + if (isJsxNode(node.right)) { + return true; + } + return false; + } + module22.exports = { + printBinaryishExpression, + shouldInlineLogicalExpression + }; + } + }); + var require_angular = __commonJS22({ + "src/language-js/print/angular.js"(exports2, module22) { + "use strict"; + var { + builders: { + join, + line, + group + } + } = require_doc(); + var { + hasNode, + hasComment, + getComments + } = require_utils7(); + var { + printBinaryishExpression + } = require_binaryish(); + function printAngular(path2, options, print) { + const node = path2.getValue(); + if (!node.type.startsWith("NG")) { + return; + } + switch (node.type) { + case "NGRoot": + return [print("node"), !hasComment(node.node) ? "" : " //" + getComments(node.node)[0].value.trimEnd()]; + case "NGPipeExpression": + return printBinaryishExpression(path2, options, print); + case "NGChainedExpression": + return group(join([";", line], path2.map((childPath) => hasNgSideEffect(childPath) ? print() : ["(", print(), ")"], "expressions"))); + case "NGEmptyExpression": + return ""; + case "NGQuotedExpression": + return [node.prefix, ": ", node.value.trim()]; + case "NGMicrosyntax": + return path2.map((childPath, index) => [index === 0 ? "" : isNgForOf(childPath.getValue(), index, node) ? " " : [";", line], print()], "body"); + case "NGMicrosyntaxKey": + return /^[$_a-z][\w$]*(?:-[$_a-z][\w$])*$/i.test(node.name) ? node.name : JSON.stringify(node.name); + case "NGMicrosyntaxExpression": + return [print("expression"), node.alias === null ? "" : [" as ", print("alias")]]; + case "NGMicrosyntaxKeyedExpression": { + const index = path2.getName(); + const parentNode = path2.getParentNode(); + const shouldNotPrintColon = isNgForOf(node, index, parentNode) || (index === 1 && (node.key.name === "then" || node.key.name === "else") || index === 2 && node.key.name === "else" && parentNode.body[index - 1].type === "NGMicrosyntaxKeyedExpression" && parentNode.body[index - 1].key.name === "then") && parentNode.body[0].type === "NGMicrosyntaxExpression"; + return [print("key"), shouldNotPrintColon ? " " : ": ", print("expression")]; + } + case "NGMicrosyntaxLet": + return ["let ", print("key"), node.value === null ? "" : [" = ", print("value")]]; + case "NGMicrosyntaxAs": + return [print("key"), " as ", print("alias")]; + default: + throw new Error(`Unknown Angular node type: ${JSON.stringify(node.type)}.`); + } + } + function isNgForOf(node, index, parentNode) { + return node.type === "NGMicrosyntaxKeyedExpression" && node.key.name === "of" && index === 1 && parentNode.body[0].type === "NGMicrosyntaxLet" && parentNode.body[0].value === null; + } + function hasNgSideEffect(path2) { + return hasNode(path2.getValue(), (node) => { + switch (node.type) { + case void 0: + return false; + case "CallExpression": + case "OptionalCallExpression": + case "AssignmentExpression": + return true; + } + }); + } + module22.exports = { + printAngular + }; + } + }); + var require_jsx = __commonJS22({ + "src/language-js/print/jsx.js"(exports2, module22) { + "use strict"; + var { + printComments, + printDanglingComments + } = require_comments(); + var { + builders: { + line, + hardline, + softline, + group, + indent, + conditionalGroup, + fill, + ifBreak, + lineSuffixBoundary, + join + }, + utils: { + willBreak + } + } = require_doc(); + var { + getLast, + getPreferredQuote + } = require_util2(); + var { + isJsxNode, + rawText, + isLiteral, + isCallExpression, + isStringLiteral, + isBinaryish, + hasComment, + CommentCheckFlags, + hasNodeIgnoreComment + } = require_utils7(); + var pathNeedsParens = require_needs_parens(); + var { + willPrintOwnComments + } = require_comments2(); + var isEmptyStringOrAnyLine = (doc2) => doc2 === "" || doc2 === line || doc2 === hardline || doc2 === softline; + function printJsxElementInternal(path2, options, print) { + const node = path2.getValue(); + if (node.type === "JSXElement" && isEmptyJsxElement(node)) { + return [print("openingElement"), print("closingElement")]; + } + const openingLines = node.type === "JSXElement" ? print("openingElement") : print("openingFragment"); + const closingLines = node.type === "JSXElement" ? print("closingElement") : print("closingFragment"); + if (node.children.length === 1 && node.children[0].type === "JSXExpressionContainer" && (node.children[0].expression.type === "TemplateLiteral" || node.children[0].expression.type === "TaggedTemplateExpression")) { + return [openingLines, ...path2.map(print, "children"), closingLines]; + } + node.children = node.children.map((child) => { + if (isJsxWhitespaceExpression(child)) { + return { + type: "JSXText", + value: " ", + raw: " " + }; + } + return child; + }); + const containsTag = node.children.some(isJsxNode); + const containsMultipleExpressions = node.children.filter((child) => child.type === "JSXExpressionContainer").length > 1; + const containsMultipleAttributes = node.type === "JSXElement" && node.openingElement.attributes.length > 1; + let forcedBreak = willBreak(openingLines) || containsTag || containsMultipleAttributes || containsMultipleExpressions; + const isMdxBlock = path2.getParentNode().rootMarker === "mdx"; + const rawJsxWhitespace = options.singleQuote ? "{' '}" : '{" "}'; + const jsxWhitespace = isMdxBlock ? " " : ifBreak([rawJsxWhitespace, softline], " "); + const isFacebookTranslationTag = node.openingElement && node.openingElement.name && node.openingElement.name.name === "fbt"; + const children = printJsxChildren(path2, options, print, jsxWhitespace, isFacebookTranslationTag); + const containsText = node.children.some((child) => isMeaningfulJsxText(child)); + for (let i = children.length - 2; i >= 0; i--) { + const isPairOfEmptyStrings = children[i] === "" && children[i + 1] === ""; + const isPairOfHardlines = children[i] === hardline && children[i + 1] === "" && children[i + 2] === hardline; + const isLineFollowedByJsxWhitespace = (children[i] === softline || children[i] === hardline) && children[i + 1] === "" && children[i + 2] === jsxWhitespace; + const isJsxWhitespaceFollowedByLine = children[i] === jsxWhitespace && children[i + 1] === "" && (children[i + 2] === softline || children[i + 2] === hardline); + const isDoubleJsxWhitespace = children[i] === jsxWhitespace && children[i + 1] === "" && children[i + 2] === jsxWhitespace; + const isPairOfHardOrSoftLines = children[i] === softline && children[i + 1] === "" && children[i + 2] === hardline || children[i] === hardline && children[i + 1] === "" && children[i + 2] === softline; + if (isPairOfHardlines && containsText || isPairOfEmptyStrings || isLineFollowedByJsxWhitespace || isDoubleJsxWhitespace || isPairOfHardOrSoftLines) { + children.splice(i, 2); + } else if (isJsxWhitespaceFollowedByLine) { + children.splice(i + 1, 2); + } + } + while (children.length > 0 && isEmptyStringOrAnyLine(getLast(children))) { + children.pop(); + } + while (children.length > 1 && isEmptyStringOrAnyLine(children[0]) && isEmptyStringOrAnyLine(children[1])) { + children.shift(); + children.shift(); + } + const multilineChildren = []; + for (const [i, child] of children.entries()) { + if (child === jsxWhitespace) { + if (i === 1 && children[i - 1] === "") { + if (children.length === 2) { + multilineChildren.push(rawJsxWhitespace); + continue; + } + multilineChildren.push([rawJsxWhitespace, hardline]); + continue; + } else if (i === children.length - 1) { + multilineChildren.push(rawJsxWhitespace); + continue; + } else if (children[i - 1] === "" && children[i - 2] === hardline) { + multilineChildren.push(rawJsxWhitespace); + continue; + } + } + multilineChildren.push(child); + if (willBreak(child)) { + forcedBreak = true; + } + } + const content = containsText ? fill(multilineChildren) : group(multilineChildren, { + shouldBreak: true + }); + if (isMdxBlock) { + return content; + } + const multiLineElem = group([openingLines, indent([hardline, content]), hardline, closingLines]); + if (forcedBreak) { + return multiLineElem; + } + return conditionalGroup([group([openingLines, ...children, closingLines]), multiLineElem]); + } + function printJsxChildren(path2, options, print, jsxWhitespace, isFacebookTranslationTag) { + const parts = []; + path2.each((childPath, i, children) => { + const child = childPath.getValue(); + if (isLiteral(child)) { + const text = rawText(child); + if (isMeaningfulJsxText(child)) { + const words = text.split(matchJsxWhitespaceRegex); + if (words[0] === "") { + parts.push(""); + words.shift(); + if (/\n/.test(words[0])) { + const next = children[i + 1]; + parts.push(separatorWithWhitespace(isFacebookTranslationTag, words[1], child, next)); + } else { + parts.push(jsxWhitespace); + } + words.shift(); + } + let endWhitespace; + if (getLast(words) === "") { + words.pop(); + endWhitespace = words.pop(); + } + if (words.length === 0) { + return; + } + for (const [i2, word] of words.entries()) { + if (i2 % 2 === 1) { + parts.push(line); + } else { + parts.push(word); + } + } + if (endWhitespace !== void 0) { + if (/\n/.test(endWhitespace)) { + const next = children[i + 1]; + parts.push(separatorWithWhitespace(isFacebookTranslationTag, getLast(parts), child, next)); + } else { + parts.push(jsxWhitespace); + } + } else { + const next = children[i + 1]; + parts.push(separatorNoWhitespace(isFacebookTranslationTag, getLast(parts), child, next)); + } + } else if (/\n/.test(text)) { + if (text.match(/\n/g).length > 1) { + parts.push("", hardline); + } + } else { + parts.push("", jsxWhitespace); + } + } else { + const printedChild = print(); + parts.push(printedChild); + const next = children[i + 1]; + const directlyFollowedByMeaningfulText = next && isMeaningfulJsxText(next); + if (directlyFollowedByMeaningfulText) { + const firstWord = trimJsxWhitespace(rawText(next)).split(matchJsxWhitespaceRegex)[0]; + parts.push(separatorNoWhitespace(isFacebookTranslationTag, firstWord, child, next)); + } else { + parts.push(hardline); + } + } + }, "children"); + return parts; + } + function separatorNoWhitespace(isFacebookTranslationTag, child, childNode, nextNode) { + if (isFacebookTranslationTag) { + return ""; + } + if (childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement) { + return child.length === 1 ? softline : hardline; + } + return softline; + } + function separatorWithWhitespace(isFacebookTranslationTag, child, childNode, nextNode) { + if (isFacebookTranslationTag) { + return hardline; + } + if (child.length === 1) { + return childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement ? hardline : softline; + } + return hardline; + } + function maybeWrapJsxElementInParens(path2, elem, options) { + const parent = path2.getParentNode(); + if (!parent) { + return elem; + } + const NO_WRAP_PARENTS = { + ArrayExpression: true, + JSXAttribute: true, + JSXElement: true, + JSXExpressionContainer: true, + JSXFragment: true, + ExpressionStatement: true, + CallExpression: true, + OptionalCallExpression: true, + ConditionalExpression: true, + JsExpressionRoot: true + }; + if (NO_WRAP_PARENTS[parent.type]) { + return elem; + } + const shouldBreak = path2.match(void 0, (node) => node.type === "ArrowFunctionExpression", isCallExpression, (node) => node.type === "JSXExpressionContainer"); + const needsParens = pathNeedsParens(path2, options); + return group([needsParens ? "" : ifBreak("("), indent([softline, elem]), softline, needsParens ? "" : ifBreak(")")], { + shouldBreak + }); + } + function printJsxAttribute(path2, options, print) { + const node = path2.getValue(); + const parts = []; + parts.push(print("name")); + if (node.value) { + let res; + if (isStringLiteral(node.value)) { + const raw = rawText(node.value); + let final = raw.slice(1, -1).replace(/'/g, "'").replace(/"/g, '"'); + const { + escaped, + quote, + regex + } = getPreferredQuote(final, options.jsxSingleQuote ? "'" : '"'); + final = final.replace(regex, escaped); + res = [quote, final, quote]; + } else { + res = print("value"); + } + parts.push("=", res); + } + return parts; + } + function printJsxExpressionContainer(path2, options, print) { + const node = path2.getValue(); + const shouldInline = (node2, parent) => node2.type === "JSXEmptyExpression" || !hasComment(node2) && (node2.type === "ArrayExpression" || node2.type === "ObjectExpression" || node2.type === "ArrowFunctionExpression" || node2.type === "AwaitExpression" && (shouldInline(node2.argument, node2) || node2.argument.type === "JSXElement") || isCallExpression(node2) || node2.type === "FunctionExpression" || node2.type === "TemplateLiteral" || node2.type === "TaggedTemplateExpression" || node2.type === "DoExpression" || isJsxNode(parent) && (node2.type === "ConditionalExpression" || isBinaryish(node2))); + if (shouldInline(node.expression, path2.getParentNode(0))) { + return group(["{", print("expression"), lineSuffixBoundary, "}"]); + } + return group(["{", indent([softline, print("expression")]), softline, lineSuffixBoundary, "}"]); + } + function printJsxOpeningElement(path2, options, print) { + const node = path2.getValue(); + const nameHasComments = node.name && hasComment(node.name) || node.typeParameters && hasComment(node.typeParameters); + if (node.selfClosing && node.attributes.length === 0 && !nameHasComments) { + return ["<", print("name"), print("typeParameters"), " />"]; + } + if (node.attributes && node.attributes.length === 1 && node.attributes[0].value && isStringLiteral(node.attributes[0].value) && !node.attributes[0].value.value.includes("\n") && !nameHasComments && !hasComment(node.attributes[0])) { + return group(["<", print("name"), print("typeParameters"), " ", ...path2.map(print, "attributes"), node.selfClosing ? " />" : ">"]); + } + const lastAttrHasTrailingComments = node.attributes.length > 0 && hasComment(getLast(node.attributes), CommentCheckFlags.Trailing); + const bracketSameLine = node.attributes.length === 0 && !nameHasComments || (options.bracketSameLine || options.jsxBracketSameLine) && (!nameHasComments || node.attributes.length > 0) && !lastAttrHasTrailingComments; + const shouldBreak = node.attributes && node.attributes.some((attr) => attr.value && isStringLiteral(attr.value) && attr.value.value.includes("\n")); + const attributeLine = options.singleAttributePerLine && node.attributes.length > 1 ? hardline : line; + return group(["<", print("name"), print("typeParameters"), indent(path2.map(() => [attributeLine, print()], "attributes")), node.selfClosing ? line : bracketSameLine ? ">" : softline, node.selfClosing ? "/>" : bracketSameLine ? "" : ">"], { + shouldBreak + }); + } + function printJsxClosingElement(path2, options, print) { + const node = path2.getValue(); + const parts = []; + parts.push(""); + return parts; + } + function printJsxOpeningClosingFragment(path2, options) { + const node = path2.getValue(); + const nodeHasComment = hasComment(node); + const hasOwnLineComment = hasComment(node, CommentCheckFlags.Line); + const isOpeningFragment = node.type === "JSXOpeningFragment"; + return [isOpeningFragment ? "<" : ""]; + } + function printJsxElement(path2, options, print) { + const elem = printComments(path2, printJsxElementInternal(path2, options, print), options); + return maybeWrapJsxElementInParens(path2, elem, options); + } + function printJsxEmptyExpression(path2, options) { + const node = path2.getValue(); + const requiresHardline = hasComment(node, CommentCheckFlags.Line); + return [printDanglingComments(path2, options, !requiresHardline), requiresHardline ? hardline : ""]; + } + function printJsxSpreadAttribute(path2, options, print) { + const node = path2.getValue(); + return ["{", path2.call((p) => { + const printed = ["...", print()]; + const node2 = p.getValue(); + if (!hasComment(node2) || !willPrintOwnComments(p)) { + return printed; + } + return [indent([softline, printComments(p, printed, options)]), softline]; + }, node.type === "JSXSpreadAttribute" ? "argument" : "expression"), "}"]; + } + function printJsx(path2, options, print) { + const node = path2.getValue(); + if (!node.type.startsWith("JSX")) { + return; + } + switch (node.type) { + case "JSXAttribute": + return printJsxAttribute(path2, options, print); + case "JSXIdentifier": + return String(node.name); + case "JSXNamespacedName": + return join(":", [print("namespace"), print("name")]); + case "JSXMemberExpression": + return join(".", [print("object"), print("property")]); + case "JSXSpreadAttribute": + return printJsxSpreadAttribute(path2, options, print); + case "JSXSpreadChild": { + const printJsxSpreadChild = printJsxSpreadAttribute; + return printJsxSpreadChild(path2, options, print); + } + case "JSXExpressionContainer": + return printJsxExpressionContainer(path2, options, print); + case "JSXFragment": + case "JSXElement": + return printJsxElement(path2, options, print); + case "JSXOpeningElement": + return printJsxOpeningElement(path2, options, print); + case "JSXClosingElement": + return printJsxClosingElement(path2, options, print); + case "JSXOpeningFragment": + case "JSXClosingFragment": + return printJsxOpeningClosingFragment(path2, options); + case "JSXEmptyExpression": + return printJsxEmptyExpression(path2, options); + case "JSXText": + throw new Error("JSXTest should be handled by JSXElement"); + default: + throw new Error(`Unknown JSX node type: ${JSON.stringify(node.type)}.`); + } + } + var jsxWhitespaceChars = " \n\r "; + var matchJsxWhitespaceRegex = new RegExp("([" + jsxWhitespaceChars + "]+)"); + var containsNonJsxWhitespaceRegex = new RegExp("[^" + jsxWhitespaceChars + "]"); + var trimJsxWhitespace = (text) => text.replace(new RegExp("(?:^" + matchJsxWhitespaceRegex.source + "|" + matchJsxWhitespaceRegex.source + "$)"), ""); + function isEmptyJsxElement(node) { + if (node.children.length === 0) { + return true; + } + if (node.children.length > 1) { + return false; + } + const child = node.children[0]; + return isLiteral(child) && !isMeaningfulJsxText(child); + } + function isMeaningfulJsxText(node) { + return isLiteral(node) && (containsNonJsxWhitespaceRegex.test(rawText(node)) || !/\n/.test(rawText(node))); + } + function isJsxWhitespaceExpression(node) { + return node.type === "JSXExpressionContainer" && isLiteral(node.expression) && node.expression.value === " " && !hasComment(node.expression); + } + function hasJsxIgnoreComment(path2) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + if (!parent || !node || !isJsxNode(node) || !isJsxNode(parent)) { + return false; + } + const index = parent.children.indexOf(node); + let prevSibling = null; + for (let i = index; i > 0; i--) { + const candidate = parent.children[i - 1]; + if (candidate.type === "JSXText" && !isMeaningfulJsxText(candidate)) { + continue; + } + prevSibling = candidate; + break; + } + return prevSibling && prevSibling.type === "JSXExpressionContainer" && prevSibling.expression.type === "JSXEmptyExpression" && hasNodeIgnoreComment(prevSibling.expression); + } + module22.exports = { + hasJsxIgnoreComment, + printJsx + }; + } + }); + var require_misc = __commonJS22({ + "src/language-js/print/misc.js"(exports2, module22) { + "use strict"; + var { + isNonEmptyArray + } = require_util2(); + var { + builders: { + indent, + join, + line + } + } = require_doc(); + var { + isFlowAnnotationComment + } = require_utils7(); + function printOptionalToken(path2) { + const node = path2.getValue(); + if (!node.optional || node.type === "Identifier" && node === path2.getParentNode().key) { + return ""; + } + if (node.type === "OptionalCallExpression" || node.type === "OptionalMemberExpression" && node.computed) { + return "?."; + } + return "?"; + } + function printDefiniteToken(path2) { + return path2.getValue().definite || path2.match(void 0, (node, name) => name === "id" && node.type === "VariableDeclarator" && node.definite) ? "!" : ""; + } + function printFunctionTypeParameters(path2, options, print) { + const fun = path2.getValue(); + if (fun.typeArguments) { + return print("typeArguments"); + } + if (fun.typeParameters) { + return print("typeParameters"); + } + return ""; + } + function printTypeAnnotation(path2, options, print) { + const node = path2.getValue(); + if (!node.typeAnnotation) { + return ""; + } + const parentNode = path2.getParentNode(); + const isFunctionDeclarationIdentifier = parentNode.type === "DeclareFunction" && parentNode.id === node; + if (isFlowAnnotationComment(options.originalText, node.typeAnnotation)) { + return [" /*: ", print("typeAnnotation"), " */"]; + } + return [isFunctionDeclarationIdentifier ? "" : ": ", print("typeAnnotation")]; + } + function printBindExpressionCallee(path2, options, print) { + return ["::", print("callee")]; + } + function printTypeScriptModifiers(path2, options, print) { + const node = path2.getValue(); + if (!isNonEmptyArray(node.modifiers)) { + return ""; + } + return [join(" ", path2.map(print, "modifiers")), " "]; + } + function adjustClause(node, clause, forceSpace) { + if (node.type === "EmptyStatement") { + return ";"; + } + if (node.type === "BlockStatement" || forceSpace) { + return [" ", clause]; + } + return indent([line, clause]); + } + function printRestSpread(path2, options, print) { + return ["...", print("argument"), printTypeAnnotation(path2, options, print)]; + } + module22.exports = { + printOptionalToken, + printDefiniteToken, + printFunctionTypeParameters, + printBindExpressionCallee, + printTypeScriptModifiers, + printTypeAnnotation, + printRestSpread, + adjustClause + }; + } + }); + var require_array4 = __commonJS22({ + "src/language-js/print/array.js"(exports2, module22) { + "use strict"; + var { + printDanglingComments + } = require_comments(); + var { + builders: { + line, + softline, + hardline, + group, + indent, + ifBreak, + fill + } + } = require_doc(); + var { + getLast, + hasNewline + } = require_util2(); + var { + shouldPrintComma, + hasComment, + CommentCheckFlags, + isNextLineEmpty, + isNumericLiteral, + isSignedNumericLiteral + } = require_utils7(); + var { + locStart + } = require_loc(); + var { + printOptionalToken, + printTypeAnnotation + } = require_misc(); + function printArray(path2, options, print) { + const node = path2.getValue(); + const parts = []; + const openBracket = node.type === "TupleExpression" ? "#[" : "["; + const closeBracket = "]"; + if (node.elements.length === 0) { + if (!hasComment(node, CommentCheckFlags.Dangling)) { + parts.push(openBracket, closeBracket); + } else { + parts.push(group([openBracket, printDanglingComments(path2, options), softline, closeBracket])); + } + } else { + const lastElem = getLast(node.elements); + const canHaveTrailingComma = !(lastElem && lastElem.type === "RestElement"); + const needsForcedTrailingComma = lastElem === null; + const groupId = Symbol("array"); + const shouldBreak = !options.__inJestEach && node.elements.length > 1 && node.elements.every((element, i, elements) => { + const elementType = element && element.type; + if (elementType !== "ArrayExpression" && elementType !== "ObjectExpression") { + return false; + } + const nextElement = elements[i + 1]; + if (nextElement && elementType !== nextElement.type) { + return false; + } + const itemsKey = elementType === "ArrayExpression" ? "elements" : "properties"; + return element[itemsKey] && element[itemsKey].length > 1; + }); + const shouldUseConciseFormatting = isConciselyPrintedArray(node, options); + const trailingComma = !canHaveTrailingComma ? "" : needsForcedTrailingComma ? "," : !shouldPrintComma(options) ? "" : shouldUseConciseFormatting ? ifBreak(",", "", { + groupId + }) : ifBreak(","); + parts.push(group([openBracket, indent([softline, shouldUseConciseFormatting ? printArrayItemsConcisely(path2, options, print, trailingComma) : [printArrayItems(path2, options, "elements", print), trailingComma], printDanglingComments(path2, options, true)]), softline, closeBracket], { + shouldBreak, + id: groupId + })); + } + parts.push(printOptionalToken(path2), printTypeAnnotation(path2, options, print)); + return parts; + } + function isConciselyPrintedArray(node, options) { + return node.elements.length > 1 && node.elements.every((element) => element && (isNumericLiteral(element) || isSignedNumericLiteral(element) && !hasComment(element.argument)) && !hasComment(element, CommentCheckFlags.Trailing | CommentCheckFlags.Line, (comment) => !hasNewline(options.originalText, locStart(comment), { + backwards: true + }))); + } + function printArrayItems(path2, options, printPath, print) { + const printedElements = []; + let separatorParts = []; + path2.each((childPath) => { + printedElements.push(separatorParts, group(print())); + separatorParts = [",", line]; + if (childPath.getValue() && isNextLineEmpty(childPath.getValue(), options)) { + separatorParts.push(softline); + } + }, printPath); + return printedElements; + } + function printArrayItemsConcisely(path2, options, print, trailingComma) { + const parts = []; + path2.each((childPath, i, elements) => { + const isLast = i === elements.length - 1; + parts.push([print(), isLast ? trailingComma : ","]); + if (!isLast) { + parts.push(isNextLineEmpty(childPath.getValue(), options) ? [hardline, hardline] : hasComment(elements[i + 1], CommentCheckFlags.Leading | CommentCheckFlags.Line) ? hardline : line); + } + }, "elements"); + return fill(parts); + } + module22.exports = { + printArray, + printArrayItems, + isConciselyPrintedArray + }; + } + }); + var require_call_arguments = __commonJS22({ + "src/language-js/print/call-arguments.js"(exports2, module22) { + "use strict"; + var { + printDanglingComments + } = require_comments(); + var { + getLast, + getPenultimate + } = require_util2(); + var { + getFunctionParameters, + hasComment, + CommentCheckFlags, + isFunctionCompositionArgs, + isJsxNode, + isLongCurriedCallExpression, + shouldPrintComma, + getCallArguments, + iterateCallArgumentsPath, + isNextLineEmpty, + isCallExpression, + isStringLiteral, + isObjectProperty + } = require_utils7(); + var { + builders: { + line, + hardline, + softline, + group, + indent, + conditionalGroup, + ifBreak, + breakParent + }, + utils: { + willBreak + } + } = require_doc(); + var { + ArgExpansionBailout + } = require_errors(); + var { + isConciselyPrintedArray + } = require_array4(); + function printCallArguments(path2, options, print) { + const node = path2.getValue(); + const isDynamicImport = node.type === "ImportExpression"; + const args = getCallArguments(node); + if (args.length === 0) { + return ["(", printDanglingComments(path2, options, true), ")"]; + } + if (isReactHookCallWithDepsArray(args)) { + return ["(", print(["arguments", 0]), ", ", print(["arguments", 1]), ")"]; + } + let anyArgEmptyLine = false; + let hasEmptyLineFollowingFirstArg = false; + const lastArgIndex = args.length - 1; + const printedArguments = []; + iterateCallArgumentsPath(path2, (argPath, index) => { + const arg = argPath.getNode(); + const parts = [print()]; + if (index === lastArgIndex) { + } else if (isNextLineEmpty(arg, options)) { + if (index === 0) { + hasEmptyLineFollowingFirstArg = true; + } + anyArgEmptyLine = true; + parts.push(",", hardline, hardline); + } else { + parts.push(",", line); + } + printedArguments.push(parts); + }); + const maybeTrailingComma = !(isDynamicImport || node.callee && node.callee.type === "Import") && shouldPrintComma(options, "all") ? "," : ""; + function allArgsBrokenOut() { + return group(["(", indent([line, ...printedArguments]), maybeTrailingComma, line, ")"], { + shouldBreak: true + }); + } + if (anyArgEmptyLine || path2.getParentNode().type !== "Decorator" && isFunctionCompositionArgs(args)) { + return allArgsBrokenOut(); + } + const shouldGroupFirst = shouldGroupFirstArg(args); + const shouldGroupLast = shouldGroupLastArg(args, options); + if (shouldGroupFirst || shouldGroupLast) { + if (shouldGroupFirst ? printedArguments.slice(1).some(willBreak) : printedArguments.slice(0, -1).some(willBreak)) { + return allArgsBrokenOut(); + } + let printedExpanded = []; + try { + path2.try(() => { + iterateCallArgumentsPath(path2, (argPath, i) => { + if (shouldGroupFirst && i === 0) { + printedExpanded = [[print([], { + expandFirstArg: true + }), printedArguments.length > 1 ? "," : "", hasEmptyLineFollowingFirstArg ? hardline : line, hasEmptyLineFollowingFirstArg ? hardline : ""], ...printedArguments.slice(1)]; + } + if (shouldGroupLast && i === lastArgIndex) { + printedExpanded = [...printedArguments.slice(0, -1), print([], { + expandLastArg: true + })]; + } + }); + }); + } catch (caught) { + if (caught instanceof ArgExpansionBailout) { + return allArgsBrokenOut(); + } + throw caught; + } + return [printedArguments.some(willBreak) ? breakParent : "", conditionalGroup([["(", ...printedExpanded, ")"], shouldGroupFirst ? ["(", group(printedExpanded[0], { + shouldBreak: true + }), ...printedExpanded.slice(1), ")"] : ["(", ...printedArguments.slice(0, -1), group(getLast(printedExpanded), { + shouldBreak: true + }), ")"], allArgsBrokenOut()])]; + } + const contents = ["(", indent([softline, ...printedArguments]), ifBreak(maybeTrailingComma), softline, ")"]; + if (isLongCurriedCallExpression(path2)) { + return contents; + } + return group(contents, { + shouldBreak: printedArguments.some(willBreak) || anyArgEmptyLine + }); + } + function couldGroupArg(arg, arrowChainRecursion = false) { + return arg.type === "ObjectExpression" && (arg.properties.length > 0 || hasComment(arg)) || arg.type === "ArrayExpression" && (arg.elements.length > 0 || hasComment(arg)) || arg.type === "TSTypeAssertion" && couldGroupArg(arg.expression) || arg.type === "TSAsExpression" && couldGroupArg(arg.expression) || arg.type === "FunctionExpression" || arg.type === "ArrowFunctionExpression" && (!arg.returnType || !arg.returnType.typeAnnotation || arg.returnType.typeAnnotation.type !== "TSTypeReference" || isNonEmptyBlockStatement(arg.body)) && (arg.body.type === "BlockStatement" || arg.body.type === "ArrowFunctionExpression" && couldGroupArg(arg.body, true) || arg.body.type === "ObjectExpression" || arg.body.type === "ArrayExpression" || !arrowChainRecursion && (isCallExpression(arg.body) || arg.body.type === "ConditionalExpression") || isJsxNode(arg.body)) || arg.type === "DoExpression" || arg.type === "ModuleExpression"; + } + function shouldGroupLastArg(args, options) { + const lastArg = getLast(args); + const penultimateArg = getPenultimate(args); + return !hasComment(lastArg, CommentCheckFlags.Leading) && !hasComment(lastArg, CommentCheckFlags.Trailing) && couldGroupArg(lastArg) && (!penultimateArg || penultimateArg.type !== lastArg.type) && (args.length !== 2 || penultimateArg.type !== "ArrowFunctionExpression" || lastArg.type !== "ArrayExpression") && !(args.length > 1 && lastArg.type === "ArrayExpression" && isConciselyPrintedArray(lastArg, options)); + } + function shouldGroupFirstArg(args) { + if (args.length !== 2) { + return false; + } + const [firstArg, secondArg] = args; + if (firstArg.type === "ModuleExpression" && isTypeModuleObjectExpression(secondArg)) { + return true; + } + return !hasComment(firstArg) && (firstArg.type === "FunctionExpression" || firstArg.type === "ArrowFunctionExpression" && firstArg.body.type === "BlockStatement") && secondArg.type !== "FunctionExpression" && secondArg.type !== "ArrowFunctionExpression" && secondArg.type !== "ConditionalExpression" && !couldGroupArg(secondArg); + } + function isReactHookCallWithDepsArray(args) { + return args.length === 2 && args[0].type === "ArrowFunctionExpression" && getFunctionParameters(args[0]).length === 0 && args[0].body.type === "BlockStatement" && args[1].type === "ArrayExpression" && !args.some((arg) => hasComment(arg)); + } + function isNonEmptyBlockStatement(node) { + return node.type === "BlockStatement" && (node.body.some((node2) => node2.type !== "EmptyStatement") || hasComment(node, CommentCheckFlags.Dangling)); + } + function isTypeModuleObjectExpression(node) { + return node.type === "ObjectExpression" && node.properties.length === 1 && isObjectProperty(node.properties[0]) && node.properties[0].key.type === "Identifier" && node.properties[0].key.name === "type" && isStringLiteral(node.properties[0].value) && node.properties[0].value.value === "module"; + } + module22.exports = printCallArguments; + } + }); + var require_member = __commonJS22({ + "src/language-js/print/member.js"(exports2, module22) { + "use strict"; + var { + builders: { + softline, + group, + indent, + label + } + } = require_doc(); + var { + isNumericLiteral, + isMemberExpression, + isCallExpression + } = require_utils7(); + var { + printOptionalToken + } = require_misc(); + function printMemberExpression(path2, options, print) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + let firstNonMemberParent; + let i = 0; + do { + firstNonMemberParent = path2.getParentNode(i); + i++; + } while (firstNonMemberParent && (isMemberExpression(firstNonMemberParent) || firstNonMemberParent.type === "TSNonNullExpression")); + const objectDoc = print("object"); + const lookupDoc = printMemberLookup(path2, options, print); + const shouldInline = firstNonMemberParent && (firstNonMemberParent.type === "NewExpression" || firstNonMemberParent.type === "BindExpression" || firstNonMemberParent.type === "AssignmentExpression" && firstNonMemberParent.left.type !== "Identifier") || node.computed || node.object.type === "Identifier" && node.property.type === "Identifier" && !isMemberExpression(parent) || (parent.type === "AssignmentExpression" || parent.type === "VariableDeclarator") && (isCallExpression(node.object) && node.object.arguments.length > 0 || node.object.type === "TSNonNullExpression" && isCallExpression(node.object.expression) && node.object.expression.arguments.length > 0 || objectDoc.label === "member-chain"); + return label(objectDoc.label === "member-chain" ? "member-chain" : "member", [objectDoc, shouldInline ? lookupDoc : group(indent([softline, lookupDoc]))]); + } + function printMemberLookup(path2, options, print) { + const property = print("property"); + const node = path2.getValue(); + const optional = printOptionalToken(path2); + if (!node.computed) { + return [optional, ".", property]; + } + if (!node.property || isNumericLiteral(node.property)) { + return [optional, "[", property, "]"]; + } + return group([optional, "[", indent([softline, property]), softline, "]"]); + } + module22.exports = { + printMemberExpression, + printMemberLookup + }; + } + }); + var require_member_chain = __commonJS22({ + "src/language-js/print/member-chain.js"(exports2, module22) { + "use strict"; + var { + printComments + } = require_comments(); + var { + getLast, + isNextLineEmptyAfterIndex, + getNextNonSpaceNonCommentCharacterIndex + } = require_util2(); + var pathNeedsParens = require_needs_parens(); + var { + isCallExpression, + isMemberExpression, + isFunctionOrArrowExpression, + isLongCurriedCallExpression, + isMemberish, + isNumericLiteral, + isSimpleCallArgument, + hasComment, + CommentCheckFlags, + isNextLineEmpty + } = require_utils7(); + var { + locEnd + } = require_loc(); + var { + builders: { + join, + hardline, + group, + indent, + conditionalGroup, + breakParent, + label + }, + utils: { + willBreak + } + } = require_doc(); + var printCallArguments = require_call_arguments(); + var { + printMemberLookup + } = require_member(); + var { + printOptionalToken, + printFunctionTypeParameters, + printBindExpressionCallee + } = require_misc(); + function printMemberChain(path2, options, print) { + const parent = path2.getParentNode(); + const isExpressionStatement = !parent || parent.type === "ExpressionStatement"; + const printedNodes = []; + function shouldInsertEmptyLineAfter(node2) { + const { + originalText + } = options; + const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex(originalText, node2, locEnd); + const nextChar = originalText.charAt(nextCharIndex); + if (nextChar === ")") { + return nextCharIndex !== false && isNextLineEmptyAfterIndex(originalText, nextCharIndex + 1); + } + return isNextLineEmpty(node2, options); + } + function rec(path22) { + const node2 = path22.getValue(); + if (isCallExpression(node2) && (isMemberish(node2.callee) || isCallExpression(node2.callee))) { + printedNodes.unshift({ + node: node2, + printed: [printComments(path22, [printOptionalToken(path22), printFunctionTypeParameters(path22, options, print), printCallArguments(path22, options, print)], options), shouldInsertEmptyLineAfter(node2) ? hardline : ""] + }); + path22.call((callee) => rec(callee), "callee"); + } else if (isMemberish(node2)) { + printedNodes.unshift({ + node: node2, + needsParens: pathNeedsParens(path22, options), + printed: printComments(path22, isMemberExpression(node2) ? printMemberLookup(path22, options, print) : printBindExpressionCallee(path22, options, print), options) + }); + path22.call((object) => rec(object), "object"); + } else if (node2.type === "TSNonNullExpression") { + printedNodes.unshift({ + node: node2, + printed: printComments(path22, "!", options) + }); + path22.call((expression) => rec(expression), "expression"); + } else { + printedNodes.unshift({ + node: node2, + printed: print() + }); + } + } + const node = path2.getValue(); + printedNodes.unshift({ + node, + printed: [printOptionalToken(path2), printFunctionTypeParameters(path2, options, print), printCallArguments(path2, options, print)] + }); + if (node.callee) { + path2.call((callee) => rec(callee), "callee"); + } + const groups = []; + let currentGroup = [printedNodes[0]]; + let i = 1; + for (; i < printedNodes.length; ++i) { + if (printedNodes[i].node.type === "TSNonNullExpression" || isCallExpression(printedNodes[i].node) || isMemberExpression(printedNodes[i].node) && printedNodes[i].node.computed && isNumericLiteral(printedNodes[i].node.property)) { + currentGroup.push(printedNodes[i]); + } else { + break; + } + } + if (!isCallExpression(printedNodes[0].node)) { + for (; i + 1 < printedNodes.length; ++i) { + if (isMemberish(printedNodes[i].node) && isMemberish(printedNodes[i + 1].node)) { + currentGroup.push(printedNodes[i]); + } else { + break; + } + } + } + groups.push(currentGroup); + currentGroup = []; + let hasSeenCallExpression = false; + for (; i < printedNodes.length; ++i) { + if (hasSeenCallExpression && isMemberish(printedNodes[i].node)) { + if (printedNodes[i].node.computed && isNumericLiteral(printedNodes[i].node.property)) { + currentGroup.push(printedNodes[i]); + continue; + } + groups.push(currentGroup); + currentGroup = []; + hasSeenCallExpression = false; + } + if (isCallExpression(printedNodes[i].node) || printedNodes[i].node.type === "ImportExpression") { + hasSeenCallExpression = true; + } + currentGroup.push(printedNodes[i]); + if (hasComment(printedNodes[i].node, CommentCheckFlags.Trailing)) { + groups.push(currentGroup); + currentGroup = []; + hasSeenCallExpression = false; + } + } + if (currentGroup.length > 0) { + groups.push(currentGroup); + } + function isFactory(name) { + return /^[A-Z]|^[$_]+$/.test(name); + } + function isShort(name) { + return name.length <= options.tabWidth; + } + function shouldNotWrap(groups2) { + const hasComputed = groups2[1].length > 0 && groups2[1][0].node.computed; + if (groups2[0].length === 1) { + const firstNode = groups2[0][0].node; + return firstNode.type === "ThisExpression" || firstNode.type === "Identifier" && (isFactory(firstNode.name) || isExpressionStatement && isShort(firstNode.name) || hasComputed); + } + const lastNode = getLast(groups2[0]).node; + return isMemberExpression(lastNode) && lastNode.property.type === "Identifier" && (isFactory(lastNode.property.name) || hasComputed); + } + const shouldMerge = groups.length >= 2 && !hasComment(groups[1][0].node) && shouldNotWrap(groups); + function printGroup(printedGroup) { + const printed = printedGroup.map((tuple) => tuple.printed); + if (printedGroup.length > 0 && getLast(printedGroup).needsParens) { + return ["(", ...printed, ")"]; + } + return printed; + } + function printIndentedGroup(groups2) { + if (groups2.length === 0) { + return ""; + } + return indent(group([hardline, join(hardline, groups2.map(printGroup))])); + } + const printedGroups = groups.map(printGroup); + const oneLine = printedGroups; + const cutoff = shouldMerge ? 3 : 2; + const flatGroups = groups.flat(); + const nodeHasComment = flatGroups.slice(1, -1).some((node2) => hasComment(node2.node, CommentCheckFlags.Leading)) || flatGroups.slice(0, -1).some((node2) => hasComment(node2.node, CommentCheckFlags.Trailing)) || groups[cutoff] && hasComment(groups[cutoff][0].node, CommentCheckFlags.Leading); + if (groups.length <= cutoff && !nodeHasComment) { + if (isLongCurriedCallExpression(path2)) { + return oneLine; + } + return group(oneLine); + } + const lastNodeBeforeIndent = getLast(groups[shouldMerge ? 1 : 0]).node; + const shouldHaveEmptyLineBeforeIndent = !isCallExpression(lastNodeBeforeIndent) && shouldInsertEmptyLineAfter(lastNodeBeforeIndent); + const expanded = [printGroup(groups[0]), shouldMerge ? groups.slice(1, 2).map(printGroup) : "", shouldHaveEmptyLineBeforeIndent ? hardline : "", printIndentedGroup(groups.slice(shouldMerge ? 2 : 1))]; + const callExpressions = printedNodes.map(({ + node: node2 + }) => node2).filter(isCallExpression); + function lastGroupWillBreakAndOtherCallsHaveFunctionArguments() { + const lastGroupNode = getLast(getLast(groups)).node; + const lastGroupDoc = getLast(printedGroups); + return isCallExpression(lastGroupNode) && willBreak(lastGroupDoc) && callExpressions.slice(0, -1).some((node2) => node2.arguments.some(isFunctionOrArrowExpression)); + } + let result; + if (nodeHasComment || callExpressions.length > 2 && callExpressions.some((expr) => !expr.arguments.every((arg) => isSimpleCallArgument(arg, 0))) || printedGroups.slice(0, -1).some(willBreak) || lastGroupWillBreakAndOtherCallsHaveFunctionArguments()) { + result = group(expanded); + } else { + result = [willBreak(oneLine) || shouldHaveEmptyLineBeforeIndent ? breakParent : "", conditionalGroup([oneLine, expanded])]; + } + return label("member-chain", result); + } + module22.exports = printMemberChain; + } + }); + var require_call_expression = __commonJS22({ + "src/language-js/print/call-expression.js"(exports2, module22) { + "use strict"; + var { + builders: { + join, + group + } + } = require_doc(); + var pathNeedsParens = require_needs_parens(); + var { + getCallArguments, + hasFlowAnnotationComment, + isCallExpression, + isMemberish, + isStringLiteral, + isTemplateOnItsOwnLine, + isTestCall, + iterateCallArgumentsPath + } = require_utils7(); + var printMemberChain = require_member_chain(); + var printCallArguments = require_call_arguments(); + var { + printOptionalToken, + printFunctionTypeParameters + } = require_misc(); + function printCallExpression(path2, options, print) { + const node = path2.getValue(); + const parentNode = path2.getParentNode(); + const isNew = node.type === "NewExpression"; + const isDynamicImport = node.type === "ImportExpression"; + const optional = printOptionalToken(path2); + const args = getCallArguments(node); + if (args.length > 0 && (!isDynamicImport && !isNew && isCommonsJsOrAmdCall(node, parentNode) || args.length === 1 && isTemplateOnItsOwnLine(args[0], options.originalText) || !isNew && isTestCall(node, parentNode))) { + const printed = []; + iterateCallArgumentsPath(path2, () => { + printed.push(print()); + }); + return [isNew ? "new " : "", print("callee"), optional, printFunctionTypeParameters(path2, options, print), "(", join(", ", printed), ")"]; + } + const isIdentifierWithFlowAnnotation = (options.parser === "babel" || options.parser === "babel-flow") && node.callee && node.callee.type === "Identifier" && hasFlowAnnotationComment(node.callee.trailingComments); + if (isIdentifierWithFlowAnnotation) { + node.callee.trailingComments[0].printed = true; + } + if (!isDynamicImport && !isNew && isMemberish(node.callee) && !path2.call((path22) => pathNeedsParens(path22, options), "callee")) { + return printMemberChain(path2, options, print); + } + const contents = [isNew ? "new " : "", isDynamicImport ? "import" : print("callee"), optional, isIdentifierWithFlowAnnotation ? `/*:: ${node.callee.trailingComments[0].value.slice(2).trim()} */` : "", printFunctionTypeParameters(path2, options, print), printCallArguments(path2, options, print)]; + if (isDynamicImport || isCallExpression(node.callee)) { + return group(contents); + } + return contents; + } + function isCommonsJsOrAmdCall(node, parentNode) { + if (node.callee.type !== "Identifier") { + return false; + } + if (node.callee.name === "require") { + return true; + } + if (node.callee.name === "define") { + const args = getCallArguments(node); + return parentNode.type === "ExpressionStatement" && (args.length === 1 || args.length === 2 && args[0].type === "ArrayExpression" || args.length === 3 && isStringLiteral(args[0]) && args[1].type === "ArrayExpression"); + } + return false; + } + module22.exports = { + printCallExpression + }; + } + }); + var require_assignment = __commonJS22({ + "src/language-js/print/assignment.js"(exports2, module22) { + "use strict"; + var { + isNonEmptyArray, + getStringWidth + } = require_util2(); + var { + builders: { + line, + group, + indent, + indentIfBreak, + lineSuffixBoundary + }, + utils: { + cleanDoc, + willBreak, + canBreak + } + } = require_doc(); + var { + hasLeadingOwnLineComment, + isBinaryish, + isStringLiteral, + isLiteral, + isNumericLiteral, + isCallExpression, + isMemberExpression, + getCallArguments, + rawText, + hasComment, + isSignedNumericLiteral, + isObjectProperty + } = require_utils7(); + var { + shouldInlineLogicalExpression + } = require_binaryish(); + var { + printCallExpression + } = require_call_expression(); + function printAssignment(path2, options, print, leftDoc, operator, rightPropertyName) { + const layout = chooseLayout(path2, options, print, leftDoc, rightPropertyName); + const rightDoc = print(rightPropertyName, { + assignmentLayout: layout + }); + switch (layout) { + case "break-after-operator": + return group([group(leftDoc), operator, group(indent([line, rightDoc]))]); + case "never-break-after-operator": + return group([group(leftDoc), operator, " ", rightDoc]); + case "fluid": { + const groupId = Symbol("assignment"); + return group([group(leftDoc), operator, group(indent(line), { + id: groupId + }), lineSuffixBoundary, indentIfBreak(rightDoc, { + groupId + })]); + } + case "break-lhs": + return group([leftDoc, operator, " ", group(rightDoc)]); + case "chain": + return [group(leftDoc), operator, line, rightDoc]; + case "chain-tail": + return [group(leftDoc), operator, indent([line, rightDoc])]; + case "chain-tail-arrow-chain": + return [group(leftDoc), operator, rightDoc]; + case "only-left": + return leftDoc; + } + } + function printAssignmentExpression(path2, options, print) { + const node = path2.getValue(); + return printAssignment(path2, options, print, print("left"), [" ", node.operator], "right"); + } + function printVariableDeclarator(path2, options, print) { + return printAssignment(path2, options, print, print("id"), " =", "init"); + } + function chooseLayout(path2, options, print, leftDoc, rightPropertyName) { + const node = path2.getValue(); + const rightNode = node[rightPropertyName]; + if (!rightNode) { + return "only-left"; + } + const isTail = !isAssignment(rightNode); + const shouldUseChainFormatting = path2.match(isAssignment, isAssignmentOrVariableDeclarator, (node2) => !isTail || node2.type !== "ExpressionStatement" && node2.type !== "VariableDeclaration"); + if (shouldUseChainFormatting) { + return !isTail ? "chain" : rightNode.type === "ArrowFunctionExpression" && rightNode.body.type === "ArrowFunctionExpression" ? "chain-tail-arrow-chain" : "chain-tail"; + } + const isHeadOfLongChain = !isTail && isAssignment(rightNode.right); + if (isHeadOfLongChain || hasLeadingOwnLineComment(options.originalText, rightNode)) { + return "break-after-operator"; + } + if (rightNode.type === "CallExpression" && rightNode.callee.name === "require" || options.parser === "json5" || options.parser === "json") { + return "never-break-after-operator"; + } + if (isComplexDestructuring(node) || isComplexTypeAliasParams(node) || hasComplexTypeAnnotation(node) || isArrowFunctionVariableDeclarator(node) && canBreak(leftDoc)) { + return "break-lhs"; + } + const hasShortKey = isObjectPropertyWithShortKey(node, leftDoc, options); + if (path2.call(() => shouldBreakAfterOperator(path2, options, print, hasShortKey), rightPropertyName)) { + return "break-after-operator"; + } + if (hasShortKey || rightNode.type === "TemplateLiteral" || rightNode.type === "TaggedTemplateExpression" || rightNode.type === "BooleanLiteral" || isNumericLiteral(rightNode) || rightNode.type === "ClassExpression") { + return "never-break-after-operator"; + } + return "fluid"; + } + function shouldBreakAfterOperator(path2, options, print, hasShortKey) { + const rightNode = path2.getValue(); + if (isBinaryish(rightNode) && !shouldInlineLogicalExpression(rightNode)) { + return true; + } + switch (rightNode.type) { + case "StringLiteralTypeAnnotation": + case "SequenceExpression": + return true; + case "ConditionalExpression": { + const { + test + } = rightNode; + return isBinaryish(test) && !shouldInlineLogicalExpression(test); + } + case "ClassExpression": + return isNonEmptyArray(rightNode.decorators); + } + if (hasShortKey) { + return false; + } + let node = rightNode; + const propertiesForPath = []; + for (; ; ) { + if (node.type === "UnaryExpression") { + node = node.argument; + propertiesForPath.push("argument"); + } else if (node.type === "TSNonNullExpression") { + node = node.expression; + propertiesForPath.push("expression"); + } else { + break; + } + } + if (isStringLiteral(node) || path2.call(() => isPoorlyBreakableMemberOrCallChain(path2, options, print), ...propertiesForPath)) { + return true; + } + return false; + } + function isComplexDestructuring(node) { + if (isAssignmentOrVariableDeclarator(node)) { + const leftNode = node.left || node.id; + return leftNode.type === "ObjectPattern" && leftNode.properties.length > 2 && leftNode.properties.some((property) => isObjectProperty(property) && (!property.shorthand || property.value && property.value.type === "AssignmentPattern")); + } + return false; + } + function isAssignment(node) { + return node.type === "AssignmentExpression"; + } + function isAssignmentOrVariableDeclarator(node) { + return isAssignment(node) || node.type === "VariableDeclarator"; + } + function isComplexTypeAliasParams(node) { + const typeParams = getTypeParametersFromTypeAlias(node); + if (isNonEmptyArray(typeParams)) { + const constraintPropertyName = node.type === "TSTypeAliasDeclaration" ? "constraint" : "bound"; + if (typeParams.length > 1 && typeParams.some((param) => param[constraintPropertyName] || param.default)) { + return true; + } + } + return false; + } + function getTypeParametersFromTypeAlias(node) { + if (isTypeAlias(node) && node.typeParameters && node.typeParameters.params) { + return node.typeParameters.params; + } + return null; + } + function isTypeAlias(node) { + return node.type === "TSTypeAliasDeclaration" || node.type === "TypeAlias"; + } + function hasComplexTypeAnnotation(node) { + if (node.type !== "VariableDeclarator") { + return false; + } + const { + typeAnnotation + } = node.id; + if (!typeAnnotation || !typeAnnotation.typeAnnotation) { + return false; + } + const typeParams = getTypeParametersFromTypeReference(typeAnnotation.typeAnnotation); + return isNonEmptyArray(typeParams) && typeParams.length > 1 && typeParams.some((param) => isNonEmptyArray(getTypeParametersFromTypeReference(param)) || param.type === "TSConditionalType"); + } + function isArrowFunctionVariableDeclarator(node) { + return node.type === "VariableDeclarator" && node.init && node.init.type === "ArrowFunctionExpression"; + } + function getTypeParametersFromTypeReference(node) { + if (isTypeReference(node) && node.typeParameters && node.typeParameters.params) { + return node.typeParameters.params; + } + return null; + } + function isTypeReference(node) { + return node.type === "TSTypeReference" || node.type === "GenericTypeAnnotation"; + } + function isPoorlyBreakableMemberOrCallChain(path2, options, print, deep = false) { + const node = path2.getValue(); + const goDeeper = () => isPoorlyBreakableMemberOrCallChain(path2, options, print, true); + if (node.type === "TSNonNullExpression") { + return path2.call(goDeeper, "expression"); + } + if (isCallExpression(node)) { + const doc2 = printCallExpression(path2, options, print); + if (doc2.label === "member-chain") { + return false; + } + const args = getCallArguments(node); + const isPoorlyBreakableCall = args.length === 0 || args.length === 1 && isLoneShortArgument(args[0], options); + if (!isPoorlyBreakableCall) { + return false; + } + if (isCallExpressionWithComplexTypeArguments(node, print)) { + return false; + } + return path2.call(goDeeper, "callee"); + } + if (isMemberExpression(node)) { + return path2.call(goDeeper, "object"); + } + return deep && (node.type === "Identifier" || node.type === "ThisExpression"); + } + var LONE_SHORT_ARGUMENT_THRESHOLD_RATE = 0.25; + function isLoneShortArgument(node, { + printWidth + }) { + if (hasComment(node)) { + return false; + } + const threshold = printWidth * LONE_SHORT_ARGUMENT_THRESHOLD_RATE; + if (node.type === "ThisExpression" || node.type === "Identifier" && node.name.length <= threshold || isSignedNumericLiteral(node) && !hasComment(node.argument)) { + return true; + } + const regexpPattern = node.type === "Literal" && "regex" in node && node.regex.pattern || node.type === "RegExpLiteral" && node.pattern; + if (regexpPattern) { + return regexpPattern.length <= threshold; + } + if (isStringLiteral(node)) { + return rawText(node).length <= threshold; + } + if (node.type === "TemplateLiteral") { + return node.expressions.length === 0 && node.quasis[0].value.raw.length <= threshold && !node.quasis[0].value.raw.includes("\n"); + } + return isLiteral(node); + } + function isObjectPropertyWithShortKey(node, keyDoc, options) { + if (!isObjectProperty(node)) { + return false; + } + keyDoc = cleanDoc(keyDoc); + const MIN_OVERLAP_FOR_BREAK = 3; + return typeof keyDoc === "string" && getStringWidth(keyDoc) < options.tabWidth + MIN_OVERLAP_FOR_BREAK; + } + function isCallExpressionWithComplexTypeArguments(node, print) { + const typeArgs = getTypeArgumentsFromCallExpression(node); + if (isNonEmptyArray(typeArgs)) { + if (typeArgs.length > 1) { + return true; + } + if (typeArgs.length === 1) { + const firstArg = typeArgs[0]; + if (firstArg.type === "TSUnionType" || firstArg.type === "UnionTypeAnnotation" || firstArg.type === "TSIntersectionType" || firstArg.type === "IntersectionTypeAnnotation" || firstArg.type === "TSTypeLiteral" || firstArg.type === "ObjectTypeAnnotation") { + return true; + } + } + const typeArgsKeyName = node.typeParameters ? "typeParameters" : "typeArguments"; + if (willBreak(print(typeArgsKeyName))) { + return true; + } + } + return false; + } + function getTypeArgumentsFromCallExpression(node) { + return node.typeParameters && node.typeParameters.params || node.typeArguments && node.typeArguments.params; + } + module22.exports = { + printVariableDeclarator, + printAssignmentExpression, + printAssignment, + isArrowFunctionVariableDeclarator + }; + } + }); + var require_function_parameters = __commonJS22({ + "src/language-js/print/function-parameters.js"(exports2, module22) { + "use strict"; + var { + getNextNonSpaceNonCommentCharacter + } = require_util2(); + var { + printDanglingComments + } = require_comments(); + var { + builders: { + line, + hardline, + softline, + group, + indent, + ifBreak + }, + utils: { + removeLines, + willBreak + } + } = require_doc(); + var { + getFunctionParameters, + iterateFunctionParametersPath, + isSimpleType, + isTestCall, + isTypeAnnotationAFunction, + isObjectType, + isObjectTypePropertyAFunction, + hasRestParameter, + shouldPrintComma, + hasComment, + isNextLineEmpty + } = require_utils7(); + var { + locEnd + } = require_loc(); + var { + ArgExpansionBailout + } = require_errors(); + var { + printFunctionTypeParameters + } = require_misc(); + function printFunctionParameters(path2, print, options, expandArg, printTypeParams) { + const functionNode = path2.getValue(); + const parameters = getFunctionParameters(functionNode); + const typeParams = printTypeParams ? printFunctionTypeParameters(path2, options, print) : ""; + if (parameters.length === 0) { + return [typeParams, "(", printDanglingComments(path2, options, true, (comment) => getNextNonSpaceNonCommentCharacter(options.originalText, comment, locEnd) === ")"), ")"]; + } + const parent = path2.getParentNode(); + const isParametersInTestCall = isTestCall(parent); + const shouldHugParameters = shouldHugFunctionParameters(functionNode); + const printed = []; + iterateFunctionParametersPath(path2, (parameterPath, index) => { + const isLastParameter = index === parameters.length - 1; + if (isLastParameter && functionNode.rest) { + printed.push("..."); + } + printed.push(print()); + if (isLastParameter) { + return; + } + printed.push(","); + if (isParametersInTestCall || shouldHugParameters) { + printed.push(" "); + } else if (isNextLineEmpty(parameters[index], options)) { + printed.push(hardline, hardline); + } else { + printed.push(line); + } + }); + if (expandArg) { + if (willBreak(typeParams) || willBreak(printed)) { + throw new ArgExpansionBailout(); + } + return group([removeLines(typeParams), "(", removeLines(printed), ")"]); + } + const hasNotParameterDecorator = parameters.every((node) => !node.decorators); + if (shouldHugParameters && hasNotParameterDecorator) { + return [typeParams, "(", ...printed, ")"]; + } + if (isParametersInTestCall) { + return [typeParams, "(", ...printed, ")"]; + } + const isFlowShorthandWithOneArg = (isObjectTypePropertyAFunction(parent) || isTypeAnnotationAFunction(parent) || parent.type === "TypeAlias" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || parent.type === "IntersectionTypeAnnotation" || parent.type === "FunctionTypeAnnotation" && parent.returnType === functionNode) && parameters.length === 1 && parameters[0].name === null && functionNode.this !== parameters[0] && parameters[0].typeAnnotation && functionNode.typeParameters === null && isSimpleType(parameters[0].typeAnnotation) && !functionNode.rest; + if (isFlowShorthandWithOneArg) { + if (options.arrowParens === "always") { + return ["(", ...printed, ")"]; + } + return printed; + } + return [typeParams, "(", indent([softline, ...printed]), ifBreak(!hasRestParameter(functionNode) && shouldPrintComma(options, "all") ? "," : ""), softline, ")"]; + } + function shouldHugFunctionParameters(node) { + if (!node) { + return false; + } + const parameters = getFunctionParameters(node); + if (parameters.length !== 1) { + return false; + } + const [parameter] = parameters; + return !hasComment(parameter) && (parameter.type === "ObjectPattern" || parameter.type === "ArrayPattern" || parameter.type === "Identifier" && parameter.typeAnnotation && (parameter.typeAnnotation.type === "TypeAnnotation" || parameter.typeAnnotation.type === "TSTypeAnnotation") && isObjectType(parameter.typeAnnotation.typeAnnotation) || parameter.type === "FunctionTypeParam" && isObjectType(parameter.typeAnnotation) || parameter.type === "AssignmentPattern" && (parameter.left.type === "ObjectPattern" || parameter.left.type === "ArrayPattern") && (parameter.right.type === "Identifier" || parameter.right.type === "ObjectExpression" && parameter.right.properties.length === 0 || parameter.right.type === "ArrayExpression" && parameter.right.elements.length === 0)); + } + function getReturnTypeNode(functionNode) { + let returnTypeNode; + if (functionNode.returnType) { + returnTypeNode = functionNode.returnType; + if (returnTypeNode.typeAnnotation) { + returnTypeNode = returnTypeNode.typeAnnotation; + } + } else if (functionNode.typeAnnotation) { + returnTypeNode = functionNode.typeAnnotation; + } + return returnTypeNode; + } + function shouldGroupFunctionParameters(functionNode, returnTypeDoc) { + const returnTypeNode = getReturnTypeNode(functionNode); + if (!returnTypeNode) { + return false; + } + const typeParameters = functionNode.typeParameters && functionNode.typeParameters.params; + if (typeParameters) { + if (typeParameters.length > 1) { + return false; + } + if (typeParameters.length === 1) { + const typeParameter = typeParameters[0]; + if (typeParameter.constraint || typeParameter.default) { + return false; + } + } + } + return getFunctionParameters(functionNode).length === 1 && (isObjectType(returnTypeNode) || willBreak(returnTypeDoc)); + } + module22.exports = { + printFunctionParameters, + shouldHugFunctionParameters, + shouldGroupFunctionParameters + }; + } + }); + var require_type_annotation = __commonJS22({ + "src/language-js/print/type-annotation.js"(exports2, module22) { + "use strict"; + var { + printComments, + printDanglingComments + } = require_comments(); + var { + isNonEmptyArray + } = require_util2(); + var { + builders: { + group, + join, + line, + softline, + indent, + align, + ifBreak + } + } = require_doc(); + var pathNeedsParens = require_needs_parens(); + var { + locStart + } = require_loc(); + var { + isSimpleType, + isObjectType, + hasLeadingOwnLineComment, + isObjectTypePropertyAFunction, + shouldPrintComma + } = require_utils7(); + var { + printAssignment + } = require_assignment(); + var { + printFunctionParameters, + shouldGroupFunctionParameters + } = require_function_parameters(); + var { + printArrayItems + } = require_array4(); + function shouldHugType(node) { + if (isSimpleType(node) || isObjectType(node)) { + return true; + } + if (node.type === "UnionTypeAnnotation" || node.type === "TSUnionType") { + const voidCount = node.types.filter((node2) => node2.type === "VoidTypeAnnotation" || node2.type === "TSVoidKeyword" || node2.type === "NullLiteralTypeAnnotation" || node2.type === "TSNullKeyword").length; + const hasObject = node.types.some((node2) => node2.type === "ObjectTypeAnnotation" || node2.type === "TSTypeLiteral" || node2.type === "GenericTypeAnnotation" || node2.type === "TSTypeReference"); + if (node.types.length - 1 === voidCount && hasObject) { + return true; + } + } + return false; + } + function printOpaqueType(path2, options, print) { + const semi = options.semi ? ";" : ""; + const node = path2.getValue(); + const parts = []; + parts.push("opaque type ", print("id"), print("typeParameters")); + if (node.supertype) { + parts.push(": ", print("supertype")); + } + if (node.impltype) { + parts.push(" = ", print("impltype")); + } + parts.push(semi); + return parts; + } + function printTypeAlias(path2, options, print) { + const semi = options.semi ? ";" : ""; + const node = path2.getValue(); + const parts = []; + if (node.declare) { + parts.push("declare "); + } + parts.push("type ", print("id"), print("typeParameters")); + const rightPropertyName = node.type === "TSTypeAliasDeclaration" ? "typeAnnotation" : "right"; + return [printAssignment(path2, options, print, parts, " =", rightPropertyName), semi]; + } + function printIntersectionType(path2, options, print) { + const node = path2.getValue(); + const types = path2.map(print, "types"); + const result = []; + let wasIndented = false; + for (let i = 0; i < types.length; ++i) { + if (i === 0) { + result.push(types[i]); + } else if (isObjectType(node.types[i - 1]) && isObjectType(node.types[i])) { + result.push([" & ", wasIndented ? indent(types[i]) : types[i]]); + } else if (!isObjectType(node.types[i - 1]) && !isObjectType(node.types[i])) { + result.push(indent([" &", line, types[i]])); + } else { + if (i > 1) { + wasIndented = true; + } + result.push(" & ", i > 1 ? indent(types[i]) : types[i]); + } + } + return group(result); + } + function printUnionType(path2, options, print) { + const node = path2.getValue(); + const parent = path2.getParentNode(); + const shouldIndent = parent.type !== "TypeParameterInstantiation" && parent.type !== "TSTypeParameterInstantiation" && parent.type !== "GenericTypeAnnotation" && parent.type !== "TSTypeReference" && parent.type !== "TSTypeAssertion" && parent.type !== "TupleTypeAnnotation" && parent.type !== "TSTupleType" && !(parent.type === "FunctionTypeParam" && !parent.name && path2.getParentNode(1).this !== parent) && !((parent.type === "TypeAlias" || parent.type === "VariableDeclarator" || parent.type === "TSTypeAliasDeclaration") && hasLeadingOwnLineComment(options.originalText, node)); + const shouldHug = shouldHugType(node); + const printed = path2.map((typePath) => { + let printedType = print(); + if (!shouldHug) { + printedType = align(2, printedType); + } + return printComments(typePath, printedType, options); + }, "types"); + if (shouldHug) { + return join(" | ", printed); + } + const shouldAddStartLine = shouldIndent && !hasLeadingOwnLineComment(options.originalText, node); + const code = [ifBreak([shouldAddStartLine ? line : "", "| "]), join([line, "| "], printed)]; + if (pathNeedsParens(path2, options)) { + return group([indent(code), softline]); + } + if (parent.type === "TupleTypeAnnotation" && parent.types.length > 1 || parent.type === "TSTupleType" && parent.elementTypes.length > 1) { + return group([indent([ifBreak(["(", softline]), code]), softline, ifBreak(")")]); + } + return group(shouldIndent ? indent(code) : code); + } + function printFunctionType(path2, options, print) { + const node = path2.getValue(); + const parts = []; + const parent = path2.getParentNode(0); + const parentParent = path2.getParentNode(1); + const parentParentParent = path2.getParentNode(2); + let isArrowFunctionTypeAnnotation = node.type === "TSFunctionType" || !((parent.type === "ObjectTypeProperty" || parent.type === "ObjectTypeInternalSlot") && !parent.variance && !parent.optional && locStart(parent) === locStart(node) || parent.type === "ObjectTypeCallProperty" || parentParentParent && parentParentParent.type === "DeclareFunction"); + let needsColon = isArrowFunctionTypeAnnotation && (parent.type === "TypeAnnotation" || parent.type === "TSTypeAnnotation"); + const needsParens = needsColon && isArrowFunctionTypeAnnotation && (parent.type === "TypeAnnotation" || parent.type === "TSTypeAnnotation") && parentParent.type === "ArrowFunctionExpression"; + if (isObjectTypePropertyAFunction(parent)) { + isArrowFunctionTypeAnnotation = true; + needsColon = true; + } + if (needsParens) { + parts.push("("); + } + const parametersDoc = printFunctionParameters(path2, print, options, false, true); + const returnTypeDoc = node.returnType || node.predicate || node.typeAnnotation ? [isArrowFunctionTypeAnnotation ? " => " : ": ", print("returnType"), print("predicate"), print("typeAnnotation")] : ""; + const shouldGroupParameters = shouldGroupFunctionParameters(node, returnTypeDoc); + parts.push(shouldGroupParameters ? group(parametersDoc) : parametersDoc); + if (returnTypeDoc) { + parts.push(returnTypeDoc); + } + if (needsParens) { + parts.push(")"); + } + return group(parts); + } + function printTupleType(path2, options, print) { + const node = path2.getValue(); + const typesField = node.type === "TSTupleType" ? "elementTypes" : "types"; + const types = node[typesField]; + const isNonEmptyTuple = isNonEmptyArray(types); + const bracketsDelimiterLine = isNonEmptyTuple ? softline : ""; + return group(["[", indent([bracketsDelimiterLine, printArrayItems(path2, options, typesField, print)]), ifBreak(isNonEmptyTuple && shouldPrintComma(options, "all") ? "," : ""), printDanglingComments(path2, options, true), bracketsDelimiterLine, "]"]); + } + function printIndexedAccessType(path2, options, print) { + const node = path2.getValue(); + const leftDelimiter = node.type === "OptionalIndexedAccessType" && node.optional ? "?.[" : "["; + return [print("objectType"), leftDelimiter, print("indexType"), "]"]; + } + function printJSDocType(path2, print, token) { + const node = path2.getValue(); + return [node.postfix ? "" : token, print("typeAnnotation"), node.postfix ? token : ""]; + } + module22.exports = { + printOpaqueType, + printTypeAlias, + printIntersectionType, + printUnionType, + printFunctionType, + printTupleType, + printIndexedAccessType, + shouldHugType, + printJSDocType + }; + } + }); + var require_type_parameters = __commonJS22({ + "src/language-js/print/type-parameters.js"(exports2, module22) { + "use strict"; + var { + printDanglingComments + } = require_comments(); + var { + builders: { + join, + line, + hardline, + softline, + group, + indent, + ifBreak + } + } = require_doc(); + var { + isTestCall, + hasComment, + CommentCheckFlags, + isTSXFile, + shouldPrintComma, + getFunctionParameters, + isObjectType + } = require_utils7(); + var { + createGroupIdMapper + } = require_util2(); + var { + shouldHugType + } = require_type_annotation(); + var { + isArrowFunctionVariableDeclarator + } = require_assignment(); + var getTypeParametersGroupId = createGroupIdMapper("typeParameters"); + function printTypeParameters(path2, options, print, paramsKey) { + const node = path2.getValue(); + if (!node[paramsKey]) { + return ""; + } + if (!Array.isArray(node[paramsKey])) { + return print(paramsKey); + } + const grandparent = path2.getNode(2); + const isParameterInTestCall = grandparent && isTestCall(grandparent); + const isArrowFunctionVariable = path2.match((node2) => !(node2[paramsKey].length === 1 && isObjectType(node2[paramsKey][0])), void 0, (node2, name) => name === "typeAnnotation", (node2) => node2.type === "Identifier", isArrowFunctionVariableDeclarator); + const shouldInline = !isArrowFunctionVariable && (isParameterInTestCall || node[paramsKey].length === 0 || node[paramsKey].length === 1 && (node[paramsKey][0].type === "NullableTypeAnnotation" || shouldHugType(node[paramsKey][0]))); + if (shouldInline) { + return ["<", join(", ", path2.map(print, paramsKey)), printDanglingCommentsForInline(path2, options), ">"]; + } + const trailingComma = node.type === "TSTypeParameterInstantiation" ? "" : getFunctionParameters(node).length === 1 && isTSXFile(options) && !node[paramsKey][0].constraint && path2.getParentNode().type === "ArrowFunctionExpression" ? "," : shouldPrintComma(options, "all") ? ifBreak(",") : ""; + return group(["<", indent([softline, join([",", line], path2.map(print, paramsKey))]), trailingComma, softline, ">"], { + id: getTypeParametersGroupId(node) + }); + } + function printDanglingCommentsForInline(path2, options) { + const node = path2.getValue(); + if (!hasComment(node, CommentCheckFlags.Dangling)) { + return ""; + } + const hasOnlyBlockComments = !hasComment(node, CommentCheckFlags.Line); + const printed = printDanglingComments(path2, options, hasOnlyBlockComments); + if (hasOnlyBlockComments) { + return printed; + } + return [printed, hardline]; + } + function printTypeParameter(path2, options, print) { + const node = path2.getValue(); + const parts = []; + const parent = path2.getParentNode(); + if (parent.type === "TSMappedType") { + parts.push("[", print("name")); + if (node.constraint) { + parts.push(" in ", print("constraint")); + } + if (parent.nameType) { + parts.push(" as ", path2.callParent(() => print("nameType"))); + } + parts.push("]"); + return parts; + } + if (node.variance) { + parts.push(print("variance")); + } + if (node.in) { + parts.push("in "); + } + if (node.out) { + parts.push("out "); + } + parts.push(print("name")); + if (node.bound) { + parts.push(": ", print("bound")); + } + if (node.constraint) { + parts.push(" extends ", print("constraint")); + } + if (node.default) { + parts.push(" = ", print("default")); + } + return parts; + } + module22.exports = { + printTypeParameter, + printTypeParameters, + getTypeParametersGroupId + }; + } + }); + var require_property = __commonJS22({ + "src/language-js/print/property.js"(exports2, module22) { + "use strict"; + var { + printComments + } = require_comments(); + var { + printString, + printNumber + } = require_util2(); + var { + isNumericLiteral, + isSimpleNumber, + isStringLiteral, + isStringPropSafeToUnquote, + rawText + } = require_utils7(); + var { + printAssignment + } = require_assignment(); + var needsQuoteProps = /* @__PURE__ */ new WeakMap(); + function printPropertyKey(path2, options, print) { + const node = path2.getNode(); + if (node.computed) { + return ["[", print("key"), "]"]; + } + const parent = path2.getParentNode(); + const { + key + } = node; + if (node.type === "ClassPrivateProperty" && key.type === "Identifier") { + return ["#", print("key")]; + } + if (options.quoteProps === "consistent" && !needsQuoteProps.has(parent)) { + const objectHasStringProp = (parent.properties || parent.body || parent.members).some((prop) => !prop.computed && prop.key && isStringLiteral(prop.key) && !isStringPropSafeToUnquote(prop, options)); + needsQuoteProps.set(parent, objectHasStringProp); + } + if ((key.type === "Identifier" || isNumericLiteral(key) && isSimpleNumber(printNumber(rawText(key))) && String(key.value) === printNumber(rawText(key)) && !(options.parser === "typescript" || options.parser === "babel-ts")) && (options.parser === "json" || options.quoteProps === "consistent" && needsQuoteProps.get(parent))) { + const prop = printString(JSON.stringify(key.type === "Identifier" ? key.name : key.value.toString()), options); + return path2.call((keyPath) => printComments(keyPath, prop, options), "key"); + } + if (isStringPropSafeToUnquote(node, options) && (options.quoteProps === "as-needed" || options.quoteProps === "consistent" && !needsQuoteProps.get(parent))) { + return path2.call((keyPath) => printComments(keyPath, /^\d/.test(key.value) ? printNumber(key.value) : key.value, options), "key"); + } + return print("key"); + } + function printProperty(path2, options, print) { + const node = path2.getValue(); + if (node.shorthand) { + return print("value"); + } + return printAssignment(path2, options, print, printPropertyKey(path2, options, print), ":", "value"); + } + module22.exports = { + printProperty, + printPropertyKey + }; + } + }); + var require_function = __commonJS22({ + "src/language-js/print/function.js"(exports2, module22) { + "use strict"; + var assert = require("assert"); + var { + printDanglingComments, + printCommentsSeparately + } = require_comments(); + var getLast = require_get_last(); + var { + getNextNonSpaceNonCommentCharacterIndex + } = require_util2(); + var { + builders: { + line, + softline, + group, + indent, + ifBreak, + hardline, + join, + indentIfBreak + }, + utils: { + removeLines, + willBreak + } + } = require_doc(); + var { + ArgExpansionBailout + } = require_errors(); + var { + getFunctionParameters, + hasLeadingOwnLineComment, + isFlowAnnotationComment, + isJsxNode, + isTemplateOnItsOwnLine, + shouldPrintComma, + startsWithNoLookaheadToken, + isBinaryish, + isLineComment, + hasComment, + getComments, + CommentCheckFlags, + isCallLikeExpression, + isCallExpression, + getCallArguments, + hasNakedLeftSide, + getLeftSide + } = require_utils7(); + var { + locEnd + } = require_loc(); + var { + printFunctionParameters, + shouldGroupFunctionParameters + } = require_function_parameters(); + var { + printPropertyKey + } = require_property(); + var { + printFunctionTypeParameters + } = require_misc(); + function printFunction(path2, print, options, args) { + const node = path2.getValue(); + let expandArg = false; + if ((node.type === "FunctionDeclaration" || node.type === "FunctionExpression") && args && args.expandLastArg) { + const parent = path2.getParentNode(); + if (isCallExpression(parent) && getCallArguments(parent).length > 1) { + expandArg = true; + } + } + const parts = []; + if (node.type === "TSDeclareFunction" && node.declare) { + parts.push("declare "); + } + if (node.async) { + parts.push("async "); + } + if (node.generator) { + parts.push("function* "); + } else { + parts.push("function "); + } + if (node.id) { + parts.push(print("id")); + } + const parametersDoc = printFunctionParameters(path2, print, options, expandArg); + const returnTypeDoc = printReturnType(path2, print, options); + const shouldGroupParameters = shouldGroupFunctionParameters(node, returnTypeDoc); + parts.push(printFunctionTypeParameters(path2, options, print), group([shouldGroupParameters ? group(parametersDoc) : parametersDoc, returnTypeDoc]), node.body ? " " : "", print("body")); + if (options.semi && (node.declare || !node.body)) { + parts.push(";"); + } + return parts; + } + function printMethod(path2, options, print) { + const node = path2.getNode(); + const { + kind + } = node; + const value = node.value || node; + const parts = []; + if (!kind || kind === "init" || kind === "method" || kind === "constructor") { + if (value.async) { + parts.push("async "); + } + } else { + assert.ok(kind === "get" || kind === "set"); + parts.push(kind, " "); + } + if (value.generator) { + parts.push("*"); + } + parts.push(printPropertyKey(path2, options, print), node.optional || node.key.optional ? "?" : ""); + if (node === value) { + parts.push(printMethodInternal(path2, options, print)); + } else if (value.type === "FunctionExpression") { + parts.push(path2.call((path22) => printMethodInternal(path22, options, print), "value")); + } else { + parts.push(print("value")); + } + return parts; + } + function printMethodInternal(path2, options, print) { + const node = path2.getNode(); + const parametersDoc = printFunctionParameters(path2, print, options); + const returnTypeDoc = printReturnType(path2, print, options); + const shouldGroupParameters = shouldGroupFunctionParameters(node, returnTypeDoc); + const parts = [printFunctionTypeParameters(path2, options, print), group([shouldGroupParameters ? group(parametersDoc) : parametersDoc, returnTypeDoc])]; + if (node.body) { + parts.push(" ", print("body")); + } else { + parts.push(options.semi ? ";" : ""); + } + return parts; + } + function printArrowFunctionSignature(path2, options, print, args) { + const node = path2.getValue(); + const parts = []; + if (node.async) { + parts.push("async "); + } + if (shouldPrintParamsWithoutParens(path2, options)) { + parts.push(print(["params", 0])); + } else { + const expandArg = args && (args.expandLastArg || args.expandFirstArg); + let returnTypeDoc = printReturnType(path2, print, options); + if (expandArg) { + if (willBreak(returnTypeDoc)) { + throw new ArgExpansionBailout(); + } + returnTypeDoc = group(removeLines(returnTypeDoc)); + } + parts.push(group([printFunctionParameters(path2, print, options, expandArg, true), returnTypeDoc])); + } + const dangling = printDanglingComments(path2, options, true, (comment) => { + const nextCharacter = getNextNonSpaceNonCommentCharacterIndex(options.originalText, comment, locEnd); + return nextCharacter !== false && options.originalText.slice(nextCharacter, nextCharacter + 2) === "=>"; + }); + if (dangling) { + parts.push(" ", dangling); + } + return parts; + } + function printArrowChain(path2, args, signatures, shouldBreak, bodyDoc, tailNode) { + const name = path2.getName(); + const parent = path2.getParentNode(); + const isCallee = isCallLikeExpression(parent) && name === "callee"; + const isAssignmentRhs = Boolean(args && args.assignmentLayout); + const shouldPutBodyOnSeparateLine = tailNode.body.type !== "BlockStatement" && tailNode.body.type !== "ObjectExpression" && tailNode.body.type !== "SequenceExpression"; + const shouldBreakBeforeChain = isCallee && shouldPutBodyOnSeparateLine || args && args.assignmentLayout === "chain-tail-arrow-chain"; + const groupId = Symbol("arrow-chain"); + if (tailNode.body.type === "SequenceExpression") { + bodyDoc = group(["(", indent([softline, bodyDoc]), softline, ")"]); + } + return group([group(indent([isCallee || isAssignmentRhs ? softline : "", group(join([" =>", line], signatures), { + shouldBreak + })]), { + id: groupId, + shouldBreak: shouldBreakBeforeChain + }), " =>", indentIfBreak(shouldPutBodyOnSeparateLine ? indent([line, bodyDoc]) : [" ", bodyDoc], { + groupId + }), isCallee ? ifBreak(softline, "", { + groupId + }) : ""]); + } + function printArrowFunction(path2, options, print, args) { + let node = path2.getValue(); + const signatures = []; + const body = []; + let chainShouldBreak = false; + (function rec() { + const doc2 = printArrowFunctionSignature(path2, options, print, args); + if (signatures.length === 0) { + signatures.push(doc2); + } else { + const { + leading, + trailing + } = printCommentsSeparately(path2, options); + signatures.push([leading, doc2]); + body.unshift(trailing); + } + chainShouldBreak = chainShouldBreak || node.returnType && getFunctionParameters(node).length > 0 || node.typeParameters || getFunctionParameters(node).some((param) => param.type !== "Identifier"); + if (node.body.type !== "ArrowFunctionExpression" || args && args.expandLastArg) { + body.unshift(print("body", args)); + } else { + node = node.body; + path2.call(rec, "body"); + } + })(); + if (signatures.length > 1) { + return printArrowChain(path2, args, signatures, chainShouldBreak, body, node); + } + const parts = signatures; + parts.push(" =>"); + if (!hasLeadingOwnLineComment(options.originalText, node.body) && (node.body.type === "ArrayExpression" || node.body.type === "ObjectExpression" || node.body.type === "BlockStatement" || isJsxNode(node.body) || isTemplateOnItsOwnLine(node.body, options.originalText) || node.body.type === "ArrowFunctionExpression" || node.body.type === "DoExpression")) { + return group([...parts, " ", body]); + } + if (node.body.type === "SequenceExpression") { + return group([...parts, group([" (", indent([softline, body]), softline, ")"])]); + } + const shouldAddSoftLine = (args && args.expandLastArg || path2.getParentNode().type === "JSXExpressionContainer") && !hasComment(node); + const printTrailingComma = args && args.expandLastArg && shouldPrintComma(options, "all"); + const shouldAddParens = node.body.type === "ConditionalExpression" && !startsWithNoLookaheadToken(node.body, false); + return group([...parts, group([indent([line, shouldAddParens ? ifBreak("", "(") : "", body, shouldAddParens ? ifBreak("", ")") : ""]), shouldAddSoftLine ? [ifBreak(printTrailingComma ? "," : ""), softline] : ""])]); + } + function canPrintParamsWithoutParens(node) { + const parameters = getFunctionParameters(node); + return parameters.length === 1 && !node.typeParameters && !hasComment(node, CommentCheckFlags.Dangling) && parameters[0].type === "Identifier" && !parameters[0].typeAnnotation && !hasComment(parameters[0]) && !parameters[0].optional && !node.predicate && !node.returnType; + } + function shouldPrintParamsWithoutParens(path2, options) { + if (options.arrowParens === "always") { + return false; + } + if (options.arrowParens === "avoid") { + const node = path2.getValue(); + return canPrintParamsWithoutParens(node); + } + return false; + } + function printReturnType(path2, print, options) { + const node = path2.getValue(); + const returnType = print("returnType"); + if (node.returnType && isFlowAnnotationComment(options.originalText, node.returnType)) { + return [" /*: ", returnType, " */"]; + } + const parts = [returnType]; + if (node.returnType && node.returnType.typeAnnotation) { + parts.unshift(": "); + } + if (node.predicate) { + parts.push(node.returnType ? " " : ": ", print("predicate")); + } + return parts; + } + function printReturnOrThrowArgument(path2, options, print) { + const node = path2.getValue(); + const semi = options.semi ? ";" : ""; + const parts = []; + if (node.argument) { + if (returnArgumentHasLeadingComment(options, node.argument)) { + parts.push([" (", indent([hardline, print("argument")]), hardline, ")"]); + } else if (isBinaryish(node.argument) || node.argument.type === "SequenceExpression") { + parts.push(group([ifBreak(" (", " "), indent([softline, print("argument")]), softline, ifBreak(")")])); + } else { + parts.push(" ", print("argument")); + } + } + const comments = getComments(node); + const lastComment = getLast(comments); + const isLastCommentLine = lastComment && isLineComment(lastComment); + if (isLastCommentLine) { + parts.push(semi); + } + if (hasComment(node, CommentCheckFlags.Dangling)) { + parts.push(" ", printDanglingComments(path2, options, true)); + } + if (!isLastCommentLine) { + parts.push(semi); + } + return parts; + } + function printReturnStatement(path2, options, print) { + return ["return", printReturnOrThrowArgument(path2, options, print)]; + } + function printThrowStatement(path2, options, print) { + return ["throw", printReturnOrThrowArgument(path2, options, print)]; + } + function returnArgumentHasLeadingComment(options, argument) { + if (hasLeadingOwnLineComment(options.originalText, argument)) { + return true; + } + if (hasNakedLeftSide(argument)) { + let leftMost = argument; + let newLeftMost; + while (newLeftMost = getLeftSide(leftMost)) { + leftMost = newLeftMost; + if (hasLeadingOwnLineComment(options.originalText, leftMost)) { + return true; + } + } + } + return false; + } + module22.exports = { + printFunction, + printArrowFunction, + printMethod, + printReturnStatement, + printThrowStatement, + printMethodInternal, + shouldPrintParamsWithoutParens + }; + } + }); + var require_decorators = __commonJS22({ + "src/language-js/print/decorators.js"(exports2, module22) { + "use strict"; + var { + isNonEmptyArray, + hasNewline + } = require_util2(); + var { + builders: { + line, + hardline, + join, + breakParent, + group + } + } = require_doc(); + var { + locStart, + locEnd + } = require_loc(); + var { + getParentExportDeclaration + } = require_utils7(); + function printClassMemberDecorators(path2, options, print) { + const node = path2.getValue(); + return group([join(line, path2.map(print, "decorators")), hasNewlineBetweenOrAfterDecorators(node, options) ? hardline : line]); + } + function printDecoratorsBeforeExport(path2, options, print) { + return [join(hardline, path2.map(print, "declaration", "decorators")), hardline]; + } + function printDecorators(path2, options, print) { + const node = path2.getValue(); + const { + decorators + } = node; + if (!isNonEmptyArray(decorators) || hasDecoratorsBeforeExport(path2.getParentNode())) { + return; + } + const shouldBreak = node.type === "ClassExpression" || node.type === "ClassDeclaration" || hasNewlineBetweenOrAfterDecorators(node, options); + return [getParentExportDeclaration(path2) ? hardline : shouldBreak ? breakParent : "", join(line, path2.map(print, "decorators")), line]; + } + function hasNewlineBetweenOrAfterDecorators(node, options) { + return node.decorators.some((decorator) => hasNewline(options.originalText, locEnd(decorator))); + } + function hasDecoratorsBeforeExport(node) { + if (node.type !== "ExportDefaultDeclaration" && node.type !== "ExportNamedDeclaration" && node.type !== "DeclareExportDeclaration") { + return false; + } + const decorators = node.declaration && node.declaration.decorators; + return isNonEmptyArray(decorators) && locStart(node, { + ignoreDecorators: true + }) > locStart(decorators[0]); + } + module22.exports = { + printDecorators, + printClassMemberDecorators, + printDecoratorsBeforeExport, + hasDecoratorsBeforeExport + }; + } + }); + var require_class = __commonJS22({ + "src/language-js/print/class.js"(exports2, module22) { + "use strict"; + var { + isNonEmptyArray, + createGroupIdMapper + } = require_util2(); + var { + printComments, + printDanglingComments + } = require_comments(); + var { + builders: { + join, + line, + hardline, + softline, + group, + indent, + ifBreak + } + } = require_doc(); + var { + hasComment, + CommentCheckFlags + } = require_utils7(); + var { + getTypeParametersGroupId + } = require_type_parameters(); + var { + printMethod + } = require_function(); + var { + printOptionalToken, + printTypeAnnotation, + printDefiniteToken + } = require_misc(); + var { + printPropertyKey + } = require_property(); + var { + printAssignment + } = require_assignment(); + var { + printClassMemberDecorators + } = require_decorators(); + function printClass(path2, options, print) { + const node = path2.getValue(); + const parts = []; + if (node.declare) { + parts.push("declare "); + } + if (node.abstract) { + parts.push("abstract "); + } + parts.push("class"); + const groupMode = node.id && hasComment(node.id, CommentCheckFlags.Trailing) || node.typeParameters && hasComment(node.typeParameters, CommentCheckFlags.Trailing) || node.superClass && hasComment(node.superClass) || isNonEmptyArray(node.extends) || isNonEmptyArray(node.mixins) || isNonEmptyArray(node.implements); + const partsGroup = []; + const extendsParts = []; + if (node.id) { + partsGroup.push(" ", print("id")); + } + partsGroup.push(print("typeParameters")); + if (node.superClass) { + const printed = [printSuperClass(path2, options, print), print("superTypeParameters")]; + const printedWithComments = path2.call((superClass) => ["extends ", printComments(superClass, printed, options)], "superClass"); + if (groupMode) { + extendsParts.push(line, group(printedWithComments)); + } else { + extendsParts.push(" ", printedWithComments); + } + } else { + extendsParts.push(printList(path2, options, print, "extends")); + } + extendsParts.push(printList(path2, options, print, "mixins"), printList(path2, options, print, "implements")); + if (groupMode) { + let printedPartsGroup; + if (shouldIndentOnlyHeritageClauses(node)) { + printedPartsGroup = [...partsGroup, indent(extendsParts)]; + } else { + printedPartsGroup = indent([...partsGroup, extendsParts]); + } + parts.push(group(printedPartsGroup, { + id: getHeritageGroupId(node) + })); + } else { + parts.push(...partsGroup, ...extendsParts); + } + parts.push(" ", print("body")); + return parts; + } + var getHeritageGroupId = createGroupIdMapper("heritageGroup"); + function printHardlineAfterHeritage(node) { + return ifBreak(hardline, "", { + groupId: getHeritageGroupId(node) + }); + } + function hasMultipleHeritage(node) { + return ["superClass", "extends", "mixins", "implements"].filter((key) => Boolean(node[key])).length > 1; + } + function shouldIndentOnlyHeritageClauses(node) { + return node.typeParameters && !hasComment(node.typeParameters, CommentCheckFlags.Trailing | CommentCheckFlags.Line) && !hasMultipleHeritage(node); + } + function printList(path2, options, print, listName) { + const node = path2.getValue(); + if (!isNonEmptyArray(node[listName])) { + return ""; + } + const printedLeadingComments = printDanglingComments(path2, options, true, ({ + marker + }) => marker === listName); + return [shouldIndentOnlyHeritageClauses(node) ? ifBreak(" ", line, { + groupId: getTypeParametersGroupId(node.typeParameters) + }) : line, printedLeadingComments, printedLeadingComments && hardline, listName, group(indent([line, join([",", line], path2.map(print, listName))]))]; + } + function printSuperClass(path2, options, print) { + const printed = print("superClass"); + const parent = path2.getParentNode(); + if (parent.type === "AssignmentExpression") { + return group(ifBreak(["(", indent([softline, printed]), softline, ")"], printed)); + } + return printed; + } + function printClassMethod(path2, options, print) { + const node = path2.getValue(); + const parts = []; + if (isNonEmptyArray(node.decorators)) { + parts.push(printClassMemberDecorators(path2, options, print)); + } + if (node.accessibility) { + parts.push(node.accessibility + " "); + } + if (node.readonly) { + parts.push("readonly "); + } + if (node.declare) { + parts.push("declare "); + } + if (node.static) { + parts.push("static "); + } + if (node.type === "TSAbstractMethodDefinition" || node.abstract) { + parts.push("abstract "); + } + if (node.override) { + parts.push("override "); + } + parts.push(printMethod(path2, options, print)); + return parts; + } + function printClassProperty(path2, options, print) { + const node = path2.getValue(); + const parts = []; + const semi = options.semi ? ";" : ""; + if (isNonEmptyArray(node.decorators)) { + parts.push(printClassMemberDecorators(path2, options, print)); + } + if (node.accessibility) { + parts.push(node.accessibility + " "); + } + if (node.declare) { + parts.push("declare "); + } + if (node.static) { + parts.push("static "); + } + if (node.type === "TSAbstractPropertyDefinition" || node.abstract) { + parts.push("abstract "); + } + if (node.override) { + parts.push("override "); + } + if (node.readonly) { + parts.push("readonly "); + } + if (node.variance) { + parts.push(print("variance")); + } + if (node.type === "ClassAccessorProperty") { + parts.push("accessor "); + } + parts.push(printPropertyKey(path2, options, print), printOptionalToken(path2), printDefiniteToken(path2), printTypeAnnotation(path2, options, print)); + return [printAssignment(path2, options, print, parts, " =", "value"), semi]; + } + module22.exports = { + printClass, + printClassMethod, + printClassProperty, + printHardlineAfterHeritage + }; + } + }); + var require_interface = __commonJS22({ + "src/language-js/print/interface.js"(exports2, module22) { + "use strict"; + var { + isNonEmptyArray + } = require_util2(); + var { + builders: { + join, + line, + group, + indent, + ifBreak + } + } = require_doc(); + var { + hasComment, + identity, + CommentCheckFlags + } = require_utils7(); + var { + getTypeParametersGroupId + } = require_type_parameters(); + var { + printTypeScriptModifiers + } = require_misc(); + function printInterface(path2, options, print) { + const node = path2.getValue(); + const parts = []; + if (node.declare) { + parts.push("declare "); + } + if (node.type === "TSInterfaceDeclaration") { + parts.push(node.abstract ? "abstract " : "", printTypeScriptModifiers(path2, options, print)); + } + parts.push("interface"); + const partsGroup = []; + const extendsParts = []; + if (node.type !== "InterfaceTypeAnnotation") { + partsGroup.push(" ", print("id"), print("typeParameters")); + } + const shouldIndentOnlyHeritageClauses = node.typeParameters && !hasComment(node.typeParameters, CommentCheckFlags.Trailing | CommentCheckFlags.Line); + if (isNonEmptyArray(node.extends)) { + extendsParts.push(shouldIndentOnlyHeritageClauses ? ifBreak(" ", line, { + groupId: getTypeParametersGroupId(node.typeParameters) + }) : line, "extends ", (node.extends.length === 1 ? identity : indent)(join([",", line], path2.map(print, "extends")))); + } + if (node.id && hasComment(node.id, CommentCheckFlags.Trailing) || isNonEmptyArray(node.extends)) { + if (shouldIndentOnlyHeritageClauses) { + parts.push(group([...partsGroup, indent(extendsParts)])); + } else { + parts.push(group(indent([...partsGroup, ...extendsParts]))); + } + } else { + parts.push(...partsGroup, ...extendsParts); + } + parts.push(" ", print("body")); + return group(parts); + } + module22.exports = { + printInterface + }; + } + }); + var require_module = __commonJS22({ + "src/language-js/print/module.js"(exports2, module22) { + "use strict"; + var { + isNonEmptyArray + } = require_util2(); + var { + builders: { + softline, + group, + indent, + join, + line, + ifBreak, + hardline + } + } = require_doc(); + var { + printDanglingComments + } = require_comments(); + var { + hasComment, + CommentCheckFlags, + shouldPrintComma, + needsHardlineAfterDanglingComment, + isStringLiteral, + rawText + } = require_utils7(); + var { + locStart, + hasSameLoc + } = require_loc(); + var { + hasDecoratorsBeforeExport, + printDecoratorsBeforeExport + } = require_decorators(); + function printImportDeclaration(path2, options, print) { + const node = path2.getValue(); + const semi = options.semi ? ";" : ""; + const parts = []; + const { + importKind + } = node; + parts.push("import"); + if (importKind && importKind !== "value") { + parts.push(" ", importKind); + } + parts.push(printModuleSpecifiers(path2, options, print), printModuleSource(path2, options, print), printImportAssertions(path2, options, print), semi); + return parts; + } + function printExportDeclaration(path2, options, print) { + const node = path2.getValue(); + const parts = []; + if (hasDecoratorsBeforeExport(node)) { + parts.push(printDecoratorsBeforeExport(path2, options, print)); + } + const { + type: type2, + exportKind, + declaration + } = node; + parts.push("export"); + const isDefaultExport = node.default || type2 === "ExportDefaultDeclaration"; + if (isDefaultExport) { + parts.push(" default"); + } + if (hasComment(node, CommentCheckFlags.Dangling)) { + parts.push(" ", printDanglingComments(path2, options, true)); + if (needsHardlineAfterDanglingComment(node)) { + parts.push(hardline); + } + } + if (declaration) { + parts.push(" ", print("declaration")); + } else { + parts.push(exportKind === "type" ? " type" : "", printModuleSpecifiers(path2, options, print), printModuleSource(path2, options, print), printImportAssertions(path2, options, print)); + } + if (shouldExportDeclarationPrintSemi(node, options)) { + parts.push(";"); + } + return parts; + } + function printExportAllDeclaration(path2, options, print) { + const node = path2.getValue(); + const semi = options.semi ? ";" : ""; + const parts = []; + const { + exportKind, + exported + } = node; + parts.push("export"); + if (exportKind === "type") { + parts.push(" type"); + } + parts.push(" *"); + if (exported) { + parts.push(" as ", print("exported")); + } + parts.push(printModuleSource(path2, options, print), printImportAssertions(path2, options, print), semi); + return parts; + } + function shouldExportDeclarationPrintSemi(node, options) { + if (!options.semi) { + return false; + } + const { + type: type2, + declaration + } = node; + const isDefaultExport = node.default || type2 === "ExportDefaultDeclaration"; + if (!declaration) { + return true; + } + const { + type: declarationType + } = declaration; + if (isDefaultExport && declarationType !== "ClassDeclaration" && declarationType !== "FunctionDeclaration" && declarationType !== "TSInterfaceDeclaration" && declarationType !== "DeclareClass" && declarationType !== "DeclareFunction" && declarationType !== "TSDeclareFunction" && declarationType !== "EnumDeclaration") { + return true; + } + return false; + } + function printModuleSource(path2, options, print) { + const node = path2.getValue(); + if (!node.source) { + return ""; + } + const parts = []; + if (!shouldNotPrintSpecifiers(node, options)) { + parts.push(" from"); + } + parts.push(" ", print("source")); + return parts; + } + function printModuleSpecifiers(path2, options, print) { + const node = path2.getValue(); + if (shouldNotPrintSpecifiers(node, options)) { + return ""; + } + const parts = [" "]; + if (isNonEmptyArray(node.specifiers)) { + const standaloneSpecifiers = []; + const groupedSpecifiers = []; + path2.each(() => { + const specifierType = path2.getValue().type; + if (specifierType === "ExportNamespaceSpecifier" || specifierType === "ExportDefaultSpecifier" || specifierType === "ImportNamespaceSpecifier" || specifierType === "ImportDefaultSpecifier") { + standaloneSpecifiers.push(print()); + } else if (specifierType === "ExportSpecifier" || specifierType === "ImportSpecifier") { + groupedSpecifiers.push(print()); + } else { + throw new Error(`Unknown specifier type ${JSON.stringify(specifierType)}`); + } + }, "specifiers"); + parts.push(join(", ", standaloneSpecifiers)); + if (groupedSpecifiers.length > 0) { + if (standaloneSpecifiers.length > 0) { + parts.push(", "); + } + const canBreak = groupedSpecifiers.length > 1 || standaloneSpecifiers.length > 0 || node.specifiers.some((node2) => hasComment(node2)); + if (canBreak) { + parts.push(group(["{", indent([options.bracketSpacing ? line : softline, join([",", line], groupedSpecifiers)]), ifBreak(shouldPrintComma(options) ? "," : ""), options.bracketSpacing ? line : softline, "}"])); + } else { + parts.push(["{", options.bracketSpacing ? " " : "", ...groupedSpecifiers, options.bracketSpacing ? " " : "", "}"]); + } + } + } else { + parts.push("{}"); + } + return parts; + } + function shouldNotPrintSpecifiers(node, options) { + const { + type: type2, + importKind, + source, + specifiers + } = node; + if (type2 !== "ImportDeclaration" || isNonEmptyArray(specifiers) || importKind === "type") { + return false; + } + return !/{\s*}/.test(options.originalText.slice(locStart(node), locStart(source))); + } + function printImportAssertions(path2, options, print) { + const node = path2.getNode(); + if (isNonEmptyArray(node.assertions)) { + return [" assert {", options.bracketSpacing ? " " : "", join(", ", path2.map(print, "assertions")), options.bracketSpacing ? " " : "", "}"]; + } + return ""; + } + function printModuleSpecifier(path2, options, print) { + const node = path2.getNode(); + const { + type: type2 + } = node; + const parts = []; + const kind = type2 === "ImportSpecifier" ? node.importKind : node.exportKind; + if (kind && kind !== "value") { + parts.push(kind, " "); + } + const isImport = type2.startsWith("Import"); + const leftSideProperty = isImport ? "imported" : "local"; + const rightSideProperty = isImport ? "local" : "exported"; + const leftSideNode = node[leftSideProperty]; + const rightSideNode = node[rightSideProperty]; + let left = ""; + let right = ""; + if (type2 === "ExportNamespaceSpecifier" || type2 === "ImportNamespaceSpecifier") { + left = "*"; + } else if (leftSideNode) { + left = print(leftSideProperty); + } + if (rightSideNode && !isShorthandSpecifier(node)) { + right = print(rightSideProperty); + } + parts.push(left, left && right ? " as " : "", right); + return parts; + } + function isShorthandSpecifier(specifier) { + if (specifier.type !== "ImportSpecifier" && specifier.type !== "ExportSpecifier") { + return false; + } + const { + local, + [specifier.type === "ImportSpecifier" ? "imported" : "exported"]: importedOrExported + } = specifier; + if (local.type !== importedOrExported.type || !hasSameLoc(local, importedOrExported)) { + return false; + } + if (isStringLiteral(local)) { + return local.value === importedOrExported.value && rawText(local) === rawText(importedOrExported); + } + switch (local.type) { + case "Identifier": + return local.name === importedOrExported.name; + default: + return false; + } + } + module22.exports = { + printImportDeclaration, + printExportDeclaration, + printExportAllDeclaration, + printModuleSpecifier + }; + } + }); + var require_object = __commonJS22({ + "src/language-js/print/object.js"(exports2, module22) { + "use strict"; + var { + printDanglingComments + } = require_comments(); + var { + builders: { + line, + softline, + group, + indent, + ifBreak, + hardline + } + } = require_doc(); + var { + getLast, + hasNewlineInRange, + hasNewline, + isNonEmptyArray + } = require_util2(); + var { + shouldPrintComma, + hasComment, + getComments, + CommentCheckFlags, + isNextLineEmpty + } = require_utils7(); + var { + locStart, + locEnd + } = require_loc(); + var { + printOptionalToken, + printTypeAnnotation + } = require_misc(); + var { + shouldHugFunctionParameters + } = require_function_parameters(); + var { + shouldHugType + } = require_type_annotation(); + var { + printHardlineAfterHeritage + } = require_class(); + function printObject(path2, options, print) { + const semi = options.semi ? ";" : ""; + const node = path2.getValue(); + let propertiesField; + if (node.type === "TSTypeLiteral") { + propertiesField = "members"; + } else if (node.type === "TSInterfaceBody") { + propertiesField = "body"; + } else { + propertiesField = "properties"; + } + const isTypeAnnotation = node.type === "ObjectTypeAnnotation"; + const fields = [propertiesField]; + if (isTypeAnnotation) { + fields.push("indexers", "callProperties", "internalSlots"); + } + const firstProperty = fields.map((field) => node[field][0]).sort((a, b) => locStart(a) - locStart(b))[0]; + const parent = path2.getParentNode(0); + const isFlowInterfaceLikeBody = isTypeAnnotation && parent && (parent.type === "InterfaceDeclaration" || parent.type === "DeclareInterface" || parent.type === "DeclareClass") && path2.getName() === "body"; + const shouldBreak = node.type === "TSInterfaceBody" || isFlowInterfaceLikeBody || node.type === "ObjectPattern" && parent.type !== "FunctionDeclaration" && parent.type !== "FunctionExpression" && parent.type !== "ArrowFunctionExpression" && parent.type !== "ObjectMethod" && parent.type !== "ClassMethod" && parent.type !== "ClassPrivateMethod" && parent.type !== "AssignmentPattern" && parent.type !== "CatchClause" && node.properties.some((property) => property.value && (property.value.type === "ObjectPattern" || property.value.type === "ArrayPattern")) || node.type !== "ObjectPattern" && firstProperty && hasNewlineInRange(options.originalText, locStart(node), locStart(firstProperty)); + const separator = isFlowInterfaceLikeBody ? ";" : node.type === "TSInterfaceBody" || node.type === "TSTypeLiteral" ? ifBreak(semi, ";") : ","; + const leftBrace = node.type === "RecordExpression" ? "#{" : node.exact ? "{|" : "{"; + const rightBrace = node.exact ? "|}" : "}"; + const propsAndLoc = []; + for (const field of fields) { + path2.each((childPath) => { + const node2 = childPath.getValue(); + propsAndLoc.push({ + node: node2, + printed: print(), + loc: locStart(node2) + }); + }, field); + } + if (fields.length > 1) { + propsAndLoc.sort((a, b) => a.loc - b.loc); + } + let separatorParts = []; + const props = propsAndLoc.map((prop) => { + const result = [...separatorParts, group(prop.printed)]; + separatorParts = [separator, line]; + if ((prop.node.type === "TSPropertySignature" || prop.node.type === "TSMethodSignature" || prop.node.type === "TSConstructSignatureDeclaration") && hasComment(prop.node, CommentCheckFlags.PrettierIgnore)) { + separatorParts.shift(); + } + if (isNextLineEmpty(prop.node, options)) { + separatorParts.push(hardline); + } + return result; + }); + if (node.inexact) { + let printed; + if (hasComment(node, CommentCheckFlags.Dangling)) { + const hasLineComments = hasComment(node, CommentCheckFlags.Line); + const printedDanglingComments = printDanglingComments(path2, options, true); + printed = [printedDanglingComments, hasLineComments || hasNewline(options.originalText, locEnd(getLast(getComments(node)))) ? hardline : line, "..."]; + } else { + printed = ["..."]; + } + props.push([...separatorParts, ...printed]); + } + const lastElem = getLast(node[propertiesField]); + const canHaveTrailingSeparator = !(node.inexact || lastElem && lastElem.type === "RestElement" || lastElem && (lastElem.type === "TSPropertySignature" || lastElem.type === "TSCallSignatureDeclaration" || lastElem.type === "TSMethodSignature" || lastElem.type === "TSConstructSignatureDeclaration") && hasComment(lastElem, CommentCheckFlags.PrettierIgnore)); + let content; + if (props.length === 0) { + if (!hasComment(node, CommentCheckFlags.Dangling)) { + return [leftBrace, rightBrace, printTypeAnnotation(path2, options, print)]; + } + content = group([leftBrace, printDanglingComments(path2, options), softline, rightBrace, printOptionalToken(path2), printTypeAnnotation(path2, options, print)]); + } else { + content = [isFlowInterfaceLikeBody && isNonEmptyArray(node.properties) ? printHardlineAfterHeritage(parent) : "", leftBrace, indent([options.bracketSpacing ? line : softline, ...props]), ifBreak(canHaveTrailingSeparator && (separator !== "," || shouldPrintComma(options)) ? separator : ""), options.bracketSpacing ? line : softline, rightBrace, printOptionalToken(path2), printTypeAnnotation(path2, options, print)]; + } + if (path2.match((node2) => node2.type === "ObjectPattern" && !node2.decorators, (node2, name, number) => shouldHugFunctionParameters(node2) && (name === "params" || name === "parameters" || name === "this" || name === "rest") && number === 0) || path2.match(shouldHugType, (node2, name) => name === "typeAnnotation", (node2, name) => name === "typeAnnotation", (node2, name, number) => shouldHugFunctionParameters(node2) && (name === "params" || name === "parameters" || name === "this" || name === "rest") && number === 0) || !shouldBreak && path2.match((node2) => node2.type === "ObjectPattern", (node2) => node2.type === "AssignmentExpression" || node2.type === "VariableDeclarator")) { + return content; + } + return group(content, { + shouldBreak + }); + } + module22.exports = { + printObject + }; + } + }); + var require_flow = __commonJS22({ + "src/language-js/print/flow.js"(exports2, module22) { + "use strict"; + var assert = require("assert"); + var { + printDanglingComments + } = require_comments(); + var { + printString, + printNumber + } = require_util2(); + var { + builders: { + hardline, + softline, + group, + indent + } + } = require_doc(); + var { + getParentExportDeclaration, + isFunctionNotation, + isGetterOrSetter, + rawText, + shouldPrintComma + } = require_utils7(); + var { + locStart, + locEnd + } = require_loc(); + var { + printClass + } = require_class(); + var { + printOpaqueType, + printTypeAlias, + printIntersectionType, + printUnionType, + printFunctionType, + printTupleType, + printIndexedAccessType + } = require_type_annotation(); + var { + printInterface + } = require_interface(); + var { + printTypeParameter, + printTypeParameters + } = require_type_parameters(); + var { + printExportDeclaration, + printExportAllDeclaration + } = require_module(); + var { + printArrayItems + } = require_array4(); + var { + printObject + } = require_object(); + var { + printPropertyKey + } = require_property(); + var { + printOptionalToken, + printTypeAnnotation, + printRestSpread + } = require_misc(); + function printFlow(path2, options, print) { + const node = path2.getValue(); + const semi = options.semi ? ";" : ""; + const parts = []; + switch (node.type) { + case "DeclareClass": + return printFlowDeclaration(path2, printClass(path2, options, print)); + case "DeclareFunction": + return printFlowDeclaration(path2, ["function ", print("id"), node.predicate ? " " : "", print("predicate"), semi]); + case "DeclareModule": + return printFlowDeclaration(path2, ["module ", print("id"), " ", print("body")]); + case "DeclareModuleExports": + return printFlowDeclaration(path2, ["module.exports", ": ", print("typeAnnotation"), semi]); + case "DeclareVariable": + return printFlowDeclaration(path2, ["var ", print("id"), semi]); + case "DeclareOpaqueType": + return printFlowDeclaration(path2, printOpaqueType(path2, options, print)); + case "DeclareInterface": + return printFlowDeclaration(path2, printInterface(path2, options, print)); + case "DeclareTypeAlias": + return printFlowDeclaration(path2, printTypeAlias(path2, options, print)); + case "DeclareExportDeclaration": + return printFlowDeclaration(path2, printExportDeclaration(path2, options, print)); + case "DeclareExportAllDeclaration": + return printFlowDeclaration(path2, printExportAllDeclaration(path2, options, print)); + case "OpaqueType": + return printOpaqueType(path2, options, print); + case "TypeAlias": + return printTypeAlias(path2, options, print); + case "IntersectionTypeAnnotation": + return printIntersectionType(path2, options, print); + case "UnionTypeAnnotation": + return printUnionType(path2, options, print); + case "FunctionTypeAnnotation": + return printFunctionType(path2, options, print); + case "TupleTypeAnnotation": + return printTupleType(path2, options, print); + case "GenericTypeAnnotation": + return [print("id"), printTypeParameters(path2, options, print, "typeParameters")]; + case "IndexedAccessType": + case "OptionalIndexedAccessType": + return printIndexedAccessType(path2, options, print); + case "TypeAnnotation": + return print("typeAnnotation"); + case "TypeParameter": + return printTypeParameter(path2, options, print); + case "TypeofTypeAnnotation": + return ["typeof ", print("argument")]; + case "ExistsTypeAnnotation": + return "*"; + case "EmptyTypeAnnotation": + return "empty"; + case "MixedTypeAnnotation": + return "mixed"; + case "ArrayTypeAnnotation": + return [print("elementType"), "[]"]; + case "BooleanLiteralTypeAnnotation": + return String(node.value); + case "EnumDeclaration": + return ["enum ", print("id"), " ", print("body")]; + case "EnumBooleanBody": + case "EnumNumberBody": + case "EnumStringBody": + case "EnumSymbolBody": { + if (node.type === "EnumSymbolBody" || node.explicitType) { + let type2 = null; + switch (node.type) { + case "EnumBooleanBody": + type2 = "boolean"; + break; + case "EnumNumberBody": + type2 = "number"; + break; + case "EnumStringBody": + type2 = "string"; + break; + case "EnumSymbolBody": + type2 = "symbol"; + break; + } + parts.push("of ", type2, " "); + } + if (node.members.length === 0 && !node.hasUnknownMembers) { + parts.push(group(["{", printDanglingComments(path2, options), softline, "}"])); + } else { + const members = node.members.length > 0 ? [hardline, printArrayItems(path2, options, "members", print), node.hasUnknownMembers || shouldPrintComma(options) ? "," : ""] : []; + parts.push(group(["{", indent([...members, ...node.hasUnknownMembers ? [hardline, "..."] : []]), printDanglingComments(path2, options, true), hardline, "}"])); + } + return parts; + } + case "EnumBooleanMember": + case "EnumNumberMember": + case "EnumStringMember": + return [print("id"), " = ", typeof node.init === "object" ? print("init") : String(node.init)]; + case "EnumDefaultedMember": + return print("id"); + case "FunctionTypeParam": { + const name = node.name ? print("name") : path2.getParentNode().this === node ? "this" : ""; + return [name, printOptionalToken(path2), name ? ": " : "", print("typeAnnotation")]; + } + case "InterfaceDeclaration": + case "InterfaceTypeAnnotation": + return printInterface(path2, options, print); + case "ClassImplements": + case "InterfaceExtends": + return [print("id"), print("typeParameters")]; + case "NullableTypeAnnotation": + return ["?", print("typeAnnotation")]; + case "Variance": { + const { + kind + } = node; + assert.ok(kind === "plus" || kind === "minus"); + return kind === "plus" ? "+" : "-"; + } + case "ObjectTypeCallProperty": + if (node.static) { + parts.push("static "); + } + parts.push(print("value")); + return parts; + case "ObjectTypeIndexer": { + return [node.static ? "static " : "", node.variance ? print("variance") : "", "[", print("id"), node.id ? ": " : "", print("key"), "]: ", print("value")]; + } + case "ObjectTypeProperty": { + let modifier = ""; + if (node.proto) { + modifier = "proto "; + } else if (node.static) { + modifier = "static "; + } + return [modifier, isGetterOrSetter(node) ? node.kind + " " : "", node.variance ? print("variance") : "", printPropertyKey(path2, options, print), printOptionalToken(path2), isFunctionNotation(node) ? "" : ": ", print("value")]; + } + case "ObjectTypeAnnotation": + return printObject(path2, options, print); + case "ObjectTypeInternalSlot": + return [node.static ? "static " : "", "[[", print("id"), "]]", printOptionalToken(path2), node.method ? "" : ": ", print("value")]; + case "ObjectTypeSpreadProperty": + return printRestSpread(path2, options, print); + case "QualifiedTypeofIdentifier": + case "QualifiedTypeIdentifier": + return [print("qualification"), ".", print("id")]; + case "StringLiteralTypeAnnotation": + return printString(rawText(node), options); + case "NumberLiteralTypeAnnotation": + assert.strictEqual(typeof node.value, "number"); + case "BigIntLiteralTypeAnnotation": + if (node.extra) { + return printNumber(node.extra.raw); + } + return printNumber(node.raw); + case "TypeCastExpression": { + return ["(", print("expression"), printTypeAnnotation(path2, options, print), ")"]; + } + case "TypeParameterDeclaration": + case "TypeParameterInstantiation": { + const printed = printTypeParameters(path2, options, print, "params"); + if (options.parser === "flow") { + const start = locStart(node); + const end = locEnd(node); + const commentStartIndex = options.originalText.lastIndexOf("/*", start); + const commentEndIndex = options.originalText.indexOf("*/", end); + if (commentStartIndex !== -1 && commentEndIndex !== -1) { + const comment = options.originalText.slice(commentStartIndex + 2, commentEndIndex).trim(); + if (comment.startsWith("::") && !comment.includes("/*") && !comment.includes("*/")) { + return ["/*:: ", printed, " */"]; + } + } + } + return printed; + } + case "InferredPredicate": + return "%checks"; + case "DeclaredPredicate": + return ["%checks(", print("value"), ")"]; + case "AnyTypeAnnotation": + return "any"; + case "BooleanTypeAnnotation": + return "boolean"; + case "BigIntTypeAnnotation": + return "bigint"; + case "NullLiteralTypeAnnotation": + return "null"; + case "NumberTypeAnnotation": + return "number"; + case "SymbolTypeAnnotation": + return "symbol"; + case "StringTypeAnnotation": + return "string"; + case "VoidTypeAnnotation": + return "void"; + case "ThisTypeAnnotation": + return "this"; + case "Node": + case "Printable": + case "SourceLocation": + case "Position": + case "Statement": + case "Function": + case "Pattern": + case "Expression": + case "Declaration": + case "Specifier": + case "NamedSpecifier": + case "Comment": + case "MemberTypeAnnotation": + case "Type": + throw new Error("unprintable type: " + JSON.stringify(node.type)); + } + } + function printFlowDeclaration(path2, printed) { + const parentExportDecl = getParentExportDeclaration(path2); + if (parentExportDecl) { + assert.strictEqual(parentExportDecl.type, "DeclareExportDeclaration"); + return printed; + } + return ["declare ", printed]; + } + module22.exports = { + printFlow + }; + } + }); + var require_is_ts_keyword_type = __commonJS22({ + "src/language-js/utils/is-ts-keyword-type.js"(exports2, module22) { + "use strict"; + function isTsKeywordType({ + type: type2 + }) { + return type2.startsWith("TS") && type2.endsWith("Keyword"); + } + module22.exports = isTsKeywordType; + } + }); + var require_ternary = __commonJS22({ + "src/language-js/print/ternary.js"(exports2, module22) { + "use strict"; + var { + hasNewlineInRange + } = require_util2(); + var { + isJsxNode, + getComments, + isCallExpression, + isMemberExpression + } = require_utils7(); + var { + locStart, + locEnd + } = require_loc(); + var isBlockComment = require_is_block_comment(); + var { + builders: { + line, + softline, + group, + indent, + align, + ifBreak, + dedent, + breakParent + } + } = require_doc(); + function conditionalExpressionChainContainsJsx(node) { + const conditionalExpressions = [node]; + for (let index = 0; index < conditionalExpressions.length; index++) { + const conditionalExpression = conditionalExpressions[index]; + for (const property of ["test", "consequent", "alternate"]) { + const node2 = conditionalExpression[property]; + if (isJsxNode(node2)) { + return true; + } + if (node2.type === "ConditionalExpression") { + conditionalExpressions.push(node2); + } + } + } + return false; + } + function printTernaryTest(path2, options, print) { + const node = path2.getValue(); + const isConditionalExpression = node.type === "ConditionalExpression"; + const alternateNodePropertyName = isConditionalExpression ? "alternate" : "falseType"; + const parent = path2.getParentNode(); + const printed = isConditionalExpression ? print("test") : [print("checkType"), " ", "extends", " ", print("extendsType")]; + if (parent.type === node.type && parent[alternateNodePropertyName] === node) { + return align(2, printed); + } + return printed; + } + var ancestorNameMap = /* @__PURE__ */ new Map([["AssignmentExpression", "right"], ["VariableDeclarator", "init"], ["ReturnStatement", "argument"], ["ThrowStatement", "argument"], ["UnaryExpression", "argument"], ["YieldExpression", "argument"]]); + function shouldExtraIndentForConditionalExpression(path2) { + const node = path2.getValue(); + if (node.type !== "ConditionalExpression") { + return false; + } + let parent; + let child = node; + for (let ancestorCount = 0; !parent; ancestorCount++) { + const node2 = path2.getParentNode(ancestorCount); + if (isCallExpression(node2) && node2.callee === child || isMemberExpression(node2) && node2.object === child || node2.type === "TSNonNullExpression" && node2.expression === child) { + child = node2; + continue; + } + if (node2.type === "NewExpression" && node2.callee === child || node2.type === "TSAsExpression" && node2.expression === child) { + parent = path2.getParentNode(ancestorCount + 1); + child = node2; + } else { + parent = node2; + } + } + if (child === node) { + return false; + } + return parent[ancestorNameMap.get(parent.type)] === child; + } + function printTernary(path2, options, print) { + const node = path2.getValue(); + const isConditionalExpression = node.type === "ConditionalExpression"; + const consequentNodePropertyName = isConditionalExpression ? "consequent" : "trueType"; + const alternateNodePropertyName = isConditionalExpression ? "alternate" : "falseType"; + const testNodePropertyNames = isConditionalExpression ? ["test"] : ["checkType", "extendsType"]; + const consequentNode = node[consequentNodePropertyName]; + const alternateNode = node[alternateNodePropertyName]; + const parts = []; + let jsxMode = false; + const parent = path2.getParentNode(); + const isParentTest = parent.type === node.type && testNodePropertyNames.some((prop) => parent[prop] === node); + let forceNoIndent = parent.type === node.type && !isParentTest; + let currentParent; + let previousParent; + let i = 0; + do { + previousParent = currentParent || node; + currentParent = path2.getParentNode(i); + i++; + } while (currentParent && currentParent.type === node.type && testNodePropertyNames.every((prop) => currentParent[prop] !== previousParent)); + const firstNonConditionalParent = currentParent || parent; + const lastConditionalParent = previousParent; + if (isConditionalExpression && (isJsxNode(node[testNodePropertyNames[0]]) || isJsxNode(consequentNode) || isJsxNode(alternateNode) || conditionalExpressionChainContainsJsx(lastConditionalParent))) { + jsxMode = true; + forceNoIndent = true; + const wrap = (doc2) => [ifBreak("("), indent([softline, doc2]), softline, ifBreak(")")]; + const isNil = (node2) => node2.type === "NullLiteral" || node2.type === "Literal" && node2.value === null || node2.type === "Identifier" && node2.name === "undefined"; + parts.push(" ? ", isNil(consequentNode) ? print(consequentNodePropertyName) : wrap(print(consequentNodePropertyName)), " : ", alternateNode.type === node.type || isNil(alternateNode) ? print(alternateNodePropertyName) : wrap(print(alternateNodePropertyName))); + } else { + const part = [line, "? ", consequentNode.type === node.type ? ifBreak("", "(") : "", align(2, print(consequentNodePropertyName)), consequentNode.type === node.type ? ifBreak("", ")") : "", line, ": ", alternateNode.type === node.type ? print(alternateNodePropertyName) : align(2, print(alternateNodePropertyName))]; + parts.push(parent.type !== node.type || parent[alternateNodePropertyName] === node || isParentTest ? part : options.useTabs ? dedent(indent(part)) : align(Math.max(0, options.tabWidth - 2), part)); + } + const comments = [...testNodePropertyNames.map((propertyName) => getComments(node[propertyName])), getComments(consequentNode), getComments(alternateNode)].flat(); + const shouldBreak = comments.some((comment) => isBlockComment(comment) && hasNewlineInRange(options.originalText, locStart(comment), locEnd(comment))); + const maybeGroup = (doc2) => parent === firstNonConditionalParent ? group(doc2, { + shouldBreak + }) : shouldBreak ? [doc2, breakParent] : doc2; + const breakClosingParen = !jsxMode && (isMemberExpression(parent) || parent.type === "NGPipeExpression" && parent.left === node) && !parent.computed; + const shouldExtraIndent = shouldExtraIndentForConditionalExpression(path2); + const result = maybeGroup([printTernaryTest(path2, options, print), forceNoIndent ? parts : indent(parts), isConditionalExpression && breakClosingParen && !shouldExtraIndent ? softline : ""]); + return isParentTest || shouldExtraIndent ? group([indent([softline, result]), softline]) : result; + } + module22.exports = { + printTernary + }; + } + }); + var require_statement = __commonJS22({ + "src/language-js/print/statement.js"(exports2, module22) { + "use strict"; + var { + builders: { + hardline + } + } = require_doc(); + var pathNeedsParens = require_needs_parens(); + var { + getLeftSidePathName, + hasNakedLeftSide, + isJsxNode, + isTheOnlyJsxElementInMarkdown, + hasComment, + CommentCheckFlags, + isNextLineEmpty + } = require_utils7(); + var { + shouldPrintParamsWithoutParens + } = require_function(); + function printStatementSequence(path2, options, print, property) { + const node = path2.getValue(); + const parts = []; + const isClassBody = node.type === "ClassBody"; + const lastStatement = getLastStatement(node[property]); + path2.each((path22, index, statements) => { + const node2 = path22.getValue(); + if (node2.type === "EmptyStatement") { + return; + } + const printed = print(); + if (!options.semi && !isClassBody && !isTheOnlyJsxElementInMarkdown(options, path22) && statementNeedsASIProtection(path22, options)) { + if (hasComment(node2, CommentCheckFlags.Leading)) { + parts.push(print([], { + needsSemi: true + })); + } else { + parts.push(";", printed); + } + } else { + parts.push(printed); + } + if (!options.semi && isClassBody && isClassProperty(node2) && shouldPrintSemicolonAfterClassProperty(node2, statements[index + 1])) { + parts.push(";"); + } + if (node2 !== lastStatement) { + parts.push(hardline); + if (isNextLineEmpty(node2, options)) { + parts.push(hardline); + } + } + }, property); + return parts; + } + function getLastStatement(statements) { + for (let i = statements.length - 1; i >= 0; i--) { + const statement = statements[i]; + if (statement.type !== "EmptyStatement") { + return statement; + } + } + } + function statementNeedsASIProtection(path2, options) { + const node = path2.getNode(); + if (node.type !== "ExpressionStatement") { + return false; + } + return path2.call((childPath) => expressionNeedsASIProtection(childPath, options), "expression"); + } + function expressionNeedsASIProtection(path2, options) { + const node = path2.getValue(); + switch (node.type) { + case "ParenthesizedExpression": + case "TypeCastExpression": + case "ArrayExpression": + case "ArrayPattern": + case "TemplateLiteral": + case "TemplateElement": + case "RegExpLiteral": + return true; + case "ArrowFunctionExpression": { + if (!shouldPrintParamsWithoutParens(path2, options)) { + return true; + } + break; + } + case "UnaryExpression": { + const { + prefix, + operator + } = node; + if (prefix && (operator === "+" || operator === "-")) { + return true; + } + break; + } + case "BindExpression": { + if (!node.object) { + return true; + } + break; + } + case "Literal": { + if (node.regex) { + return true; + } + break; + } + default: { + if (isJsxNode(node)) { + return true; + } + } + } + if (pathNeedsParens(path2, options)) { + return true; + } + if (!hasNakedLeftSide(node)) { + return false; + } + return path2.call((childPath) => expressionNeedsASIProtection(childPath, options), ...getLeftSidePathName(path2, node)); + } + function printBody(path2, options, print) { + return printStatementSequence(path2, options, print, "body"); + } + function printSwitchCaseConsequent(path2, options, print) { + return printStatementSequence(path2, options, print, "consequent"); + } + var isClassProperty = ({ + type: type2 + }) => type2 === "ClassProperty" || type2 === "PropertyDefinition" || type2 === "ClassPrivateProperty" || type2 === "ClassAccessorProperty"; + function shouldPrintSemicolonAfterClassProperty(node, nextNode) { + const name = node.key && node.key.name; + if ((name === "static" || name === "get" || name === "set") && !node.value && !node.typeAnnotation) { + return true; + } + if (!nextNode) { + return false; + } + if (nextNode.static || nextNode.accessibility) { + return false; + } + if (!nextNode.computed) { + const name2 = nextNode.key && nextNode.key.name; + if (name2 === "in" || name2 === "instanceof") { + return true; + } + } + if (isClassProperty(nextNode) && nextNode.variance && !nextNode.static && !nextNode.declare) { + return true; + } + switch (nextNode.type) { + case "ClassProperty": + case "PropertyDefinition": + case "TSAbstractPropertyDefinition": + return nextNode.computed; + case "MethodDefinition": + case "TSAbstractMethodDefinition": + case "ClassMethod": + case "ClassPrivateMethod": { + const isAsync = nextNode.value ? nextNode.value.async : nextNode.async; + if (isAsync || nextNode.kind === "get" || nextNode.kind === "set") { + return false; + } + const isGenerator = nextNode.value ? nextNode.value.generator : nextNode.generator; + if (nextNode.computed || isGenerator) { + return true; + } + return false; + } + case "TSIndexSignature": + return true; + } + return false; + } + module22.exports = { + printBody, + printSwitchCaseConsequent + }; + } + }); + var require_block = __commonJS22({ + "src/language-js/print/block.js"(exports2, module22) { + "use strict"; + var { + printDanglingComments + } = require_comments(); + var { + isNonEmptyArray + } = require_util2(); + var { + builders: { + hardline, + indent + } + } = require_doc(); + var { + hasComment, + CommentCheckFlags, + isNextLineEmpty + } = require_utils7(); + var { + printHardlineAfterHeritage + } = require_class(); + var { + printBody + } = require_statement(); + function printBlock(path2, options, print) { + const node = path2.getValue(); + const parts = []; + if (node.type === "StaticBlock") { + parts.push("static "); + } + if (node.type === "ClassBody" && isNonEmptyArray(node.body)) { + const parent = path2.getParentNode(); + parts.push(printHardlineAfterHeritage(parent)); + } + parts.push("{"); + const printed = printBlockBody(path2, options, print); + if (printed) { + parts.push(indent([hardline, printed]), hardline); + } else { + const parent = path2.getParentNode(); + const parentParent = path2.getParentNode(1); + if (!(parent.type === "ArrowFunctionExpression" || parent.type === "FunctionExpression" || parent.type === "FunctionDeclaration" || parent.type === "ObjectMethod" || parent.type === "ClassMethod" || parent.type === "ClassPrivateMethod" || parent.type === "ForStatement" || parent.type === "WhileStatement" || parent.type === "DoWhileStatement" || parent.type === "DoExpression" || parent.type === "CatchClause" && !parentParent.finalizer || parent.type === "TSModuleDeclaration" || parent.type === "TSDeclareFunction" || node.type === "StaticBlock" || node.type === "ClassBody")) { + parts.push(hardline); + } + } + parts.push("}"); + return parts; + } + function printBlockBody(path2, options, print) { + const node = path2.getValue(); + const nodeHasDirectives = isNonEmptyArray(node.directives); + const nodeHasBody = node.body.some((node2) => node2.type !== "EmptyStatement"); + const nodeHasComment = hasComment(node, CommentCheckFlags.Dangling); + if (!nodeHasDirectives && !nodeHasBody && !nodeHasComment) { + return ""; + } + const parts = []; + if (nodeHasDirectives) { + path2.each((childPath, index, directives) => { + parts.push(print()); + if (index < directives.length - 1 || nodeHasBody || nodeHasComment) { + parts.push(hardline); + if (isNextLineEmpty(childPath.getValue(), options)) { + parts.push(hardline); + } + } + }, "directives"); + } + if (nodeHasBody) { + parts.push(printBody(path2, options, print)); + } + if (nodeHasComment) { + parts.push(printDanglingComments(path2, options, true)); + } + if (node.type === "Program") { + const parent = path2.getParentNode(); + if (!parent || parent.type !== "ModuleExpression") { + parts.push(hardline); + } + } + return parts; + } + module22.exports = { + printBlock, + printBlockBody + }; + } + }); + var require_typescript = __commonJS22({ + "src/language-js/print/typescript.js"(exports2, module22) { + "use strict"; + var { + printDanglingComments + } = require_comments(); + var { + hasNewlineInRange + } = require_util2(); + var { + builders: { + join, + line, + hardline, + softline, + group, + indent, + conditionalGroup, + ifBreak + } + } = require_doc(); + var { + isLiteral, + getTypeScriptMappedTypeModifier, + shouldPrintComma, + isCallExpression, + isMemberExpression + } = require_utils7(); + var isTsKeywordType = require_is_ts_keyword_type(); + var { + locStart, + locEnd + } = require_loc(); + var { + printOptionalToken, + printTypeScriptModifiers + } = require_misc(); + var { + printTernary + } = require_ternary(); + var { + printFunctionParameters, + shouldGroupFunctionParameters + } = require_function_parameters(); + var { + printTemplateLiteral + } = require_template_literal(); + var { + printArrayItems + } = require_array4(); + var { + printObject + } = require_object(); + var { + printClassProperty, + printClassMethod + } = require_class(); + var { + printTypeParameter, + printTypeParameters + } = require_type_parameters(); + var { + printPropertyKey + } = require_property(); + var { + printFunction, + printMethodInternal + } = require_function(); + var { + printInterface + } = require_interface(); + var { + printBlock + } = require_block(); + var { + printTypeAlias, + printIntersectionType, + printUnionType, + printFunctionType, + printTupleType, + printIndexedAccessType, + printJSDocType + } = require_type_annotation(); + function printTypescript(path2, options, print) { + const node = path2.getValue(); + if (!node.type.startsWith("TS")) { + return; + } + if (isTsKeywordType(node)) { + return node.type.slice(2, -7).toLowerCase(); + } + const semi = options.semi ? ";" : ""; + const parts = []; + switch (node.type) { + case "TSThisType": + return "this"; + case "TSTypeAssertion": { + const shouldBreakAfterCast = !(node.expression.type === "ArrayExpression" || node.expression.type === "ObjectExpression"); + const castGroup = group(["<", indent([softline, print("typeAnnotation")]), softline, ">"]); + const exprContents = [ifBreak("("), indent([softline, print("expression")]), softline, ifBreak(")")]; + if (shouldBreakAfterCast) { + return conditionalGroup([[castGroup, print("expression")], [castGroup, group(exprContents, { + shouldBreak: true + })], [castGroup, print("expression")]]); + } + return group([castGroup, print("expression")]); + } + case "TSDeclareFunction": + return printFunction(path2, print, options); + case "TSExportAssignment": + return ["export = ", print("expression"), semi]; + case "TSModuleBlock": + return printBlock(path2, options, print); + case "TSInterfaceBody": + case "TSTypeLiteral": + return printObject(path2, options, print); + case "TSTypeAliasDeclaration": + return printTypeAlias(path2, options, print); + case "TSQualifiedName": + return join(".", [print("left"), print("right")]); + case "TSAbstractMethodDefinition": + case "TSDeclareMethod": + return printClassMethod(path2, options, print); + case "TSAbstractPropertyDefinition": + return printClassProperty(path2, options, print); + case "TSInterfaceHeritage": + case "TSExpressionWithTypeArguments": + parts.push(print("expression")); + if (node.typeParameters) { + parts.push(print("typeParameters")); + } + return parts; + case "TSTemplateLiteralType": + return printTemplateLiteral(path2, print, options); + case "TSNamedTupleMember": + return [print("label"), node.optional ? "?" : "", ": ", print("elementType")]; + case "TSRestType": + return ["...", print("typeAnnotation")]; + case "TSOptionalType": + return [print("typeAnnotation"), "?"]; + case "TSInterfaceDeclaration": + return printInterface(path2, options, print); + case "TSClassImplements": + return [print("expression"), print("typeParameters")]; + case "TSTypeParameterDeclaration": + case "TSTypeParameterInstantiation": + return printTypeParameters(path2, options, print, "params"); + case "TSTypeParameter": + return printTypeParameter(path2, options, print); + case "TSAsExpression": { + parts.push(print("expression"), " as ", print("typeAnnotation")); + const parent = path2.getParentNode(); + if (isCallExpression(parent) && parent.callee === node || isMemberExpression(parent) && parent.object === node) { + return group([indent([softline, ...parts]), softline]); + } + return parts; + } + case "TSArrayType": + return [print("elementType"), "[]"]; + case "TSPropertySignature": { + if (node.readonly) { + parts.push("readonly "); + } + parts.push(printPropertyKey(path2, options, print), printOptionalToken(path2)); + if (node.typeAnnotation) { + parts.push(": ", print("typeAnnotation")); + } + if (node.initializer) { + parts.push(" = ", print("initializer")); + } + return parts; + } + case "TSParameterProperty": + if (node.accessibility) { + parts.push(node.accessibility + " "); + } + if (node.export) { + parts.push("export "); + } + if (node.static) { + parts.push("static "); + } + if (node.override) { + parts.push("override "); + } + if (node.readonly) { + parts.push("readonly "); + } + parts.push(print("parameter")); + return parts; + case "TSTypeQuery": + return ["typeof ", print("exprName"), print("typeParameters")]; + case "TSIndexSignature": { + const parent = path2.getParentNode(); + const trailingComma = node.parameters.length > 1 ? ifBreak(shouldPrintComma(options) ? "," : "") : ""; + const parametersGroup = group([indent([softline, join([", ", softline], path2.map(print, "parameters"))]), trailingComma, softline]); + return [node.export ? "export " : "", node.accessibility ? [node.accessibility, " "] : "", node.static ? "static " : "", node.readonly ? "readonly " : "", node.declare ? "declare " : "", "[", node.parameters ? parametersGroup : "", node.typeAnnotation ? "]: " : "]", node.typeAnnotation ? print("typeAnnotation") : "", parent.type === "ClassBody" ? semi : ""]; + } + case "TSTypePredicate": + return [node.asserts ? "asserts " : "", print("parameterName"), node.typeAnnotation ? [" is ", print("typeAnnotation")] : ""]; + case "TSNonNullExpression": + return [print("expression"), "!"]; + case "TSImportType": + return [!node.isTypeOf ? "" : "typeof ", "import(", print(node.parameter ? "parameter" : "argument"), ")", !node.qualifier ? "" : [".", print("qualifier")], printTypeParameters(path2, options, print, "typeParameters")]; + case "TSLiteralType": + return print("literal"); + case "TSIndexedAccessType": + return printIndexedAccessType(path2, options, print); + case "TSConstructSignatureDeclaration": + case "TSCallSignatureDeclaration": + case "TSConstructorType": { + if (node.type === "TSConstructorType" && node.abstract) { + parts.push("abstract "); + } + if (node.type !== "TSCallSignatureDeclaration") { + parts.push("new "); + } + parts.push(group(printFunctionParameters(path2, print, options, false, true))); + if (node.returnType || node.typeAnnotation) { + const isType = node.type === "TSConstructorType"; + parts.push(isType ? " => " : ": ", print("returnType"), print("typeAnnotation")); + } + return parts; + } + case "TSTypeOperator": + return [node.operator, " ", print("typeAnnotation")]; + case "TSMappedType": { + const shouldBreak = hasNewlineInRange(options.originalText, locStart(node), locEnd(node)); + return group(["{", indent([options.bracketSpacing ? line : softline, node.readonly ? [getTypeScriptMappedTypeModifier(node.readonly, "readonly"), " "] : "", printTypeScriptModifiers(path2, options, print), print("typeParameter"), node.optional ? getTypeScriptMappedTypeModifier(node.optional, "?") : "", node.typeAnnotation ? ": " : "", print("typeAnnotation"), ifBreak(semi)]), printDanglingComments(path2, options, true), options.bracketSpacing ? line : softline, "}"], { + shouldBreak + }); + } + case "TSMethodSignature": { + const kind = node.kind && node.kind !== "method" ? `${node.kind} ` : ""; + parts.push(node.accessibility ? [node.accessibility, " "] : "", kind, node.export ? "export " : "", node.static ? "static " : "", node.readonly ? "readonly " : "", node.abstract ? "abstract " : "", node.declare ? "declare " : "", node.computed ? "[" : "", print("key"), node.computed ? "]" : "", printOptionalToken(path2)); + const parametersDoc = printFunctionParameters(path2, print, options, false, true); + const returnTypePropertyName = node.returnType ? "returnType" : "typeAnnotation"; + const returnTypeNode = node[returnTypePropertyName]; + const returnTypeDoc = returnTypeNode ? print(returnTypePropertyName) : ""; + const shouldGroupParameters = shouldGroupFunctionParameters(node, returnTypeDoc); + parts.push(shouldGroupParameters ? group(parametersDoc) : parametersDoc); + if (returnTypeNode) { + parts.push(": ", group(returnTypeDoc)); + } + return group(parts); + } + case "TSNamespaceExportDeclaration": + parts.push("export as namespace ", print("id")); + if (options.semi) { + parts.push(";"); + } + return group(parts); + case "TSEnumDeclaration": + if (node.declare) { + parts.push("declare "); + } + if (node.modifiers) { + parts.push(printTypeScriptModifiers(path2, options, print)); + } + if (node.const) { + parts.push("const "); + } + parts.push("enum ", print("id"), " "); + if (node.members.length === 0) { + parts.push(group(["{", printDanglingComments(path2, options), softline, "}"])); + } else { + parts.push(group(["{", indent([hardline, printArrayItems(path2, options, "members", print), shouldPrintComma(options, "es5") ? "," : ""]), printDanglingComments(path2, options, true), hardline, "}"])); + } + return parts; + case "TSEnumMember": + if (node.computed) { + parts.push("[", print("id"), "]"); + } else { + parts.push(print("id")); + } + if (node.initializer) { + parts.push(" = ", print("initializer")); + } + return parts; + case "TSImportEqualsDeclaration": + if (node.isExport) { + parts.push("export "); + } + parts.push("import "); + if (node.importKind && node.importKind !== "value") { + parts.push(node.importKind, " "); + } + parts.push(print("id"), " = ", print("moduleReference")); + if (options.semi) { + parts.push(";"); + } + return group(parts); + case "TSExternalModuleReference": + return ["require(", print("expression"), ")"]; + case "TSModuleDeclaration": { + const parent = path2.getParentNode(); + const isExternalModule = isLiteral(node.id); + const parentIsDeclaration = parent.type === "TSModuleDeclaration"; + const bodyIsDeclaration = node.body && node.body.type === "TSModuleDeclaration"; + if (parentIsDeclaration) { + parts.push("."); + } else { + if (node.declare) { + parts.push("declare "); + } + parts.push(printTypeScriptModifiers(path2, options, print)); + const textBetweenNodeAndItsId = options.originalText.slice(locStart(node), locStart(node.id)); + const isGlobalDeclaration = node.id.type === "Identifier" && node.id.name === "global" && !/namespace|module/.test(textBetweenNodeAndItsId); + if (!isGlobalDeclaration) { + parts.push(isExternalModule || /(?:^|\s)module(?:\s|$)/.test(textBetweenNodeAndItsId) ? "module " : "namespace "); + } + } + parts.push(print("id")); + if (bodyIsDeclaration) { + parts.push(print("body")); + } else if (node.body) { + parts.push(" ", group(print("body"))); + } else { + parts.push(semi); + } + return parts; + } + case "TSConditionalType": + return printTernary(path2, options, print); + case "TSInferType": + return ["infer", " ", print("typeParameter")]; + case "TSIntersectionType": + return printIntersectionType(path2, options, print); + case "TSUnionType": + return printUnionType(path2, options, print); + case "TSFunctionType": + return printFunctionType(path2, options, print); + case "TSTupleType": + return printTupleType(path2, options, print); + case "TSTypeReference": + return [print("typeName"), printTypeParameters(path2, options, print, "typeParameters")]; + case "TSTypeAnnotation": + return print("typeAnnotation"); + case "TSEmptyBodyFunctionExpression": + return printMethodInternal(path2, options, print); + case "TSJSDocAllType": + return "*"; + case "TSJSDocUnknownType": + return "?"; + case "TSJSDocNullableType": + return printJSDocType(path2, print, "?"); + case "TSJSDocNonNullableType": + return printJSDocType(path2, print, "!"); + case "TSInstantiationExpression": + return [print("expression"), print("typeParameters")]; + default: + throw new Error(`Unknown TypeScript node type: ${JSON.stringify(node.type)}.`); + } + } + module22.exports = { + printTypescript + }; + } + }); + var require_comment = __commonJS22({ + "src/language-js/print/comment.js"(exports2, module22) { + "use strict"; + var { + hasNewline + } = require_util2(); + var { + builders: { + join, + hardline + }, + utils: { + replaceTextEndOfLine + } + } = require_doc(); + var { + isLineComment + } = require_utils7(); + var { + locStart, + locEnd + } = require_loc(); + var isBlockComment = require_is_block_comment(); + function printComment(commentPath, options) { + const comment = commentPath.getValue(); + if (isLineComment(comment)) { + return options.originalText.slice(locStart(comment), locEnd(comment)).trimEnd(); + } + if (isBlockComment(comment)) { + if (isIndentableBlockComment(comment)) { + const printed = printIndentableBlockComment(comment); + if (comment.trailing && !hasNewline(options.originalText, locStart(comment), { + backwards: true + })) { + return [hardline, printed]; + } + return printed; + } + const commentEnd = locEnd(comment); + const isInsideFlowComment = options.originalText.slice(commentEnd - 3, commentEnd) === "*-/"; + return ["/*", replaceTextEndOfLine(comment.value), isInsideFlowComment ? "*-/" : "*/"]; + } + throw new Error("Not a comment: " + JSON.stringify(comment)); + } + function isIndentableBlockComment(comment) { + const lines = `*${comment.value}*`.split("\n"); + return lines.length > 1 && lines.every((line) => line.trim()[0] === "*"); + } + function printIndentableBlockComment(comment) { + const lines = comment.value.split("\n"); + return ["/*", join(hardline, lines.map((line, index) => index === 0 ? line.trimEnd() : " " + (index < lines.length - 1 ? line.trim() : line.trimStart()))), "*/"]; + } + module22.exports = { + printComment + }; + } + }); + var require_literal2 = __commonJS22({ + "src/language-js/print/literal.js"(exports2, module22) { + "use strict"; + var { + printString, + printNumber + } = require_util2(); + function printLiteral(path2, options) { + const node = path2.getNode(); + switch (node.type) { + case "RegExpLiteral": + return printRegex(node); + case "BigIntLiteral": + return printBigInt(node.bigint || node.extra.raw); + case "NumericLiteral": + return printNumber(node.extra.raw); + case "StringLiteral": + return printString(node.extra.raw, options); + case "NullLiteral": + return "null"; + case "BooleanLiteral": + return String(node.value); + case "DecimalLiteral": + return printNumber(node.value) + "m"; + case "Literal": { + if (node.regex) { + return printRegex(node.regex); + } + if (node.bigint) { + return printBigInt(node.raw); + } + if (node.decimal) { + return printNumber(node.decimal) + "m"; + } + const { + value + } = node; + if (typeof value === "number") { + return printNumber(node.raw); + } + if (typeof value === "string") { + return printString(node.raw, options); + } + return String(value); + } + } + } + function printBigInt(raw) { + return raw.toLowerCase(); + } + function printRegex({ + pattern, + flags + }) { + flags = [...flags].sort().join(""); + return `/${pattern}/${flags}`; + } + module22.exports = { + printLiteral + }; + } + }); + var require_printer_estree = __commonJS22({ + "src/language-js/printer-estree.js"(exports2, module22) { + "use strict"; + var { + printDanglingComments + } = require_comments(); + var { + hasNewline + } = require_util2(); + var { + builders: { + join, + line, + hardline, + softline, + group, + indent + }, + utils: { + replaceTextEndOfLine + } + } = require_doc(); + var embed = require_embed(); + var clean = require_clean(); + var { + insertPragma + } = require_pragma(); + var handleComments = require_comments2(); + var pathNeedsParens = require_needs_parens(); + var preprocess = require_print_preprocess(); + var { + hasFlowShorthandAnnotationComment, + hasComment, + CommentCheckFlags, + isTheOnlyJsxElementInMarkdown, + isLineComment, + isNextLineEmpty, + needsHardlineAfterDanglingComment, + rawText, + hasIgnoreComment, + isCallExpression, + isMemberExpression, + markerForIfWithoutBlockAndSameLineComment + } = require_utils7(); + var { + locStart, + locEnd + } = require_loc(); + var isBlockComment = require_is_block_comment(); + var { + printHtmlBinding, + isVueEventBindingExpression + } = require_html_binding(); + var { + printAngular + } = require_angular(); + var { + printJsx, + hasJsxIgnoreComment + } = require_jsx(); + var { + printFlow + } = require_flow(); + var { + printTypescript + } = require_typescript(); + var { + printOptionalToken, + printBindExpressionCallee, + printTypeAnnotation, + adjustClause, + printRestSpread, + printDefiniteToken + } = require_misc(); + var { + printImportDeclaration, + printExportDeclaration, + printExportAllDeclaration, + printModuleSpecifier + } = require_module(); + var { + printTernary + } = require_ternary(); + var { + printTemplateLiteral + } = require_template_literal(); + var { + printArray + } = require_array4(); + var { + printObject + } = require_object(); + var { + printClass, + printClassMethod, + printClassProperty + } = require_class(); + var { + printProperty + } = require_property(); + var { + printFunction, + printArrowFunction, + printMethod, + printReturnStatement, + printThrowStatement + } = require_function(); + var { + printCallExpression + } = require_call_expression(); + var { + printVariableDeclarator, + printAssignmentExpression + } = require_assignment(); + var { + printBinaryishExpression + } = require_binaryish(); + var { + printSwitchCaseConsequent + } = require_statement(); + var { + printMemberExpression + } = require_member(); + var { + printBlock, + printBlockBody + } = require_block(); + var { + printComment + } = require_comment(); + var { + printLiteral + } = require_literal2(); + var { + printDecorators + } = require_decorators(); + function genericPrint(path2, options, print, args) { + const printed = printPathNoParens(path2, options, print, args); + if (!printed) { + return ""; + } + const node = path2.getValue(); + const { + type: type2 + } = node; + if (type2 === "ClassMethod" || type2 === "ClassPrivateMethod" || type2 === "ClassProperty" || type2 === "ClassAccessorProperty" || type2 === "PropertyDefinition" || type2 === "TSAbstractPropertyDefinition" || type2 === "ClassPrivateProperty" || type2 === "MethodDefinition" || type2 === "TSAbstractMethodDefinition" || type2 === "TSDeclareMethod") { + return printed; + } + let parts = [printed]; + const printedDecorators = printDecorators(path2, options, print); + const isClassExpressionWithDecorators = node.type === "ClassExpression" && printedDecorators; + if (printedDecorators) { + parts = [...printedDecorators, printed]; + if (!isClassExpressionWithDecorators) { + return group(parts); + } + } + const needsParens = pathNeedsParens(path2, options); + if (!needsParens) { + if (args && args.needsSemi) { + parts.unshift(";"); + } + if (parts.length === 1 && parts[0] === printed) { + return printed; + } + return parts; + } + if (isClassExpressionWithDecorators) { + parts = [indent([line, ...parts])]; + } + parts.unshift("("); + if (args && args.needsSemi) { + parts.unshift(";"); + } + if (hasFlowShorthandAnnotationComment(node)) { + const [comment] = node.trailingComments; + parts.push(" /*", comment.value.trimStart(), "*/"); + comment.printed = true; + } + if (isClassExpressionWithDecorators) { + parts.push(line); + } + parts.push(")"); + return parts; + } + function printPathNoParens(path2, options, print, args) { + const node = path2.getValue(); + const semi = options.semi ? ";" : ""; + if (!node) { + return ""; + } + if (typeof node === "string") { + return node; + } + for (const printer of [printLiteral, printHtmlBinding, printAngular, printJsx, printFlow, printTypescript]) { + const printed = printer(path2, options, print); + if (typeof printed !== "undefined") { + return printed; + } + } + let parts = []; + switch (node.type) { + case "JsExpressionRoot": + return print("node"); + case "JsonRoot": + return [print("node"), hardline]; + case "File": + if (node.program && node.program.interpreter) { + parts.push(print(["program", "interpreter"])); + } + parts.push(print("program")); + return parts; + case "Program": + return printBlockBody(path2, options, print); + case "EmptyStatement": + return ""; + case "ExpressionStatement": { + if (node.directive) { + return [printDirective(node.expression, options), semi]; + } + if (options.parser === "__vue_event_binding" || options.parser === "__vue_ts_event_binding") { + const parent = path2.getParentNode(); + if (parent.type === "Program" && parent.body.length === 1 && parent.body[0] === node) { + return [print("expression"), isVueEventBindingExpression(node.expression) ? ";" : ""]; + } + } + const danglingComment = printDanglingComments(path2, options, true, ({ + marker + }) => marker === markerForIfWithoutBlockAndSameLineComment); + return [print("expression"), isTheOnlyJsxElementInMarkdown(options, path2) ? "" : semi, danglingComment ? [" ", danglingComment] : ""]; + } + case "ParenthesizedExpression": { + const shouldHug = !hasComment(node.expression) && (node.expression.type === "ObjectExpression" || node.expression.type === "ArrayExpression"); + if (shouldHug) { + return ["(", print("expression"), ")"]; + } + return group(["(", indent([softline, print("expression")]), softline, ")"]); + } + case "AssignmentExpression": + return printAssignmentExpression(path2, options, print); + case "VariableDeclarator": + return printVariableDeclarator(path2, options, print); + case "BinaryExpression": + case "LogicalExpression": + return printBinaryishExpression(path2, options, print); + case "AssignmentPattern": + return [print("left"), " = ", print("right")]; + case "OptionalMemberExpression": + case "MemberExpression": { + return printMemberExpression(path2, options, print); + } + case "MetaProperty": + return [print("meta"), ".", print("property")]; + case "BindExpression": + if (node.object) { + parts.push(print("object")); + } + parts.push(group(indent([softline, printBindExpressionCallee(path2, options, print)]))); + return parts; + case "Identifier": { + return [node.name, printOptionalToken(path2), printDefiniteToken(path2), printTypeAnnotation(path2, options, print)]; + } + case "V8IntrinsicIdentifier": + return ["%", node.name]; + case "SpreadElement": + case "SpreadElementPattern": + case "SpreadProperty": + case "SpreadPropertyPattern": + case "RestElement": + return printRestSpread(path2, options, print); + case "FunctionDeclaration": + case "FunctionExpression": + return printFunction(path2, print, options, args); + case "ArrowFunctionExpression": + return printArrowFunction(path2, options, print, args); + case "YieldExpression": + parts.push("yield"); + if (node.delegate) { + parts.push("*"); + } + if (node.argument) { + parts.push(" ", print("argument")); + } + return parts; + case "AwaitExpression": { + parts.push("await"); + if (node.argument) { + parts.push(" ", print("argument")); + const parent = path2.getParentNode(); + if (isCallExpression(parent) && parent.callee === node || isMemberExpression(parent) && parent.object === node) { + parts = [indent([softline, ...parts]), softline]; + const parentAwaitOrBlock = path2.findAncestor((node2) => node2.type === "AwaitExpression" || node2.type === "BlockStatement"); + if (!parentAwaitOrBlock || parentAwaitOrBlock.type !== "AwaitExpression") { + return group(parts); + } + } + } + return parts; + } + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + return printExportDeclaration(path2, options, print); + case "ExportAllDeclaration": + return printExportAllDeclaration(path2, options, print); + case "ImportDeclaration": + return printImportDeclaration(path2, options, print); + case "ImportSpecifier": + case "ExportSpecifier": + case "ImportNamespaceSpecifier": + case "ExportNamespaceSpecifier": + case "ImportDefaultSpecifier": + case "ExportDefaultSpecifier": + return printModuleSpecifier(path2, options, print); + case "ImportAttribute": + return [print("key"), ": ", print("value")]; + case "Import": + return "import"; + case "BlockStatement": + case "StaticBlock": + case "ClassBody": + return printBlock(path2, options, print); + case "ThrowStatement": + return printThrowStatement(path2, options, print); + case "ReturnStatement": + return printReturnStatement(path2, options, print); + case "NewExpression": + case "ImportExpression": + case "OptionalCallExpression": + case "CallExpression": + return printCallExpression(path2, options, print); + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + return printObject(path2, options, print); + case "ObjectProperty": + case "Property": + if (node.method || node.kind === "get" || node.kind === "set") { + return printMethod(path2, options, print); + } + return printProperty(path2, options, print); + case "ObjectMethod": + return printMethod(path2, options, print); + case "Decorator": + return ["@", print("expression")]; + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + return printArray(path2, options, print); + case "SequenceExpression": { + const parent = path2.getParentNode(0); + if (parent.type === "ExpressionStatement" || parent.type === "ForStatement") { + const parts2 = []; + path2.each((expressionPath, index) => { + if (index === 0) { + parts2.push(print()); + } else { + parts2.push(",", indent([line, print()])); + } + }, "expressions"); + return group(parts2); + } + return group(join([",", line], path2.map(print, "expressions"))); + } + case "ThisExpression": + return "this"; + case "Super": + return "super"; + case "Directive": + return [print("value"), semi]; + case "DirectiveLiteral": + return printDirective(node, options); + case "UnaryExpression": + parts.push(node.operator); + if (/[a-z]$/.test(node.operator)) { + parts.push(" "); + } + if (hasComment(node.argument)) { + parts.push(group(["(", indent([softline, print("argument")]), softline, ")"])); + } else { + parts.push(print("argument")); + } + return parts; + case "UpdateExpression": + parts.push(print("argument"), node.operator); + if (node.prefix) { + parts.reverse(); + } + return parts; + case "ConditionalExpression": + return printTernary(path2, options, print); + case "VariableDeclaration": { + const printed = path2.map(print, "declarations"); + const parentNode = path2.getParentNode(); + const isParentForLoop = parentNode.type === "ForStatement" || parentNode.type === "ForInStatement" || parentNode.type === "ForOfStatement"; + const hasValue = node.declarations.some((decl) => decl.init); + let firstVariable; + if (printed.length === 1 && !hasComment(node.declarations[0])) { + firstVariable = printed[0]; + } else if (printed.length > 0) { + firstVariable = indent(printed[0]); + } + parts = [node.declare ? "declare " : "", node.kind, firstVariable ? [" ", firstVariable] : "", indent(printed.slice(1).map((p) => [",", hasValue && !isParentForLoop ? hardline : line, p]))]; + if (!(isParentForLoop && parentNode.body !== node)) { + parts.push(semi); + } + return group(parts); + } + case "WithStatement": + return group(["with (", print("object"), ")", adjustClause(node.body, print("body"))]); + case "IfStatement": { + const con = adjustClause(node.consequent, print("consequent")); + const opening = group(["if (", group([indent([softline, print("test")]), softline]), ")", con]); + parts.push(opening); + if (node.alternate) { + const commentOnOwnLine = hasComment(node.consequent, CommentCheckFlags.Trailing | CommentCheckFlags.Line) || needsHardlineAfterDanglingComment(node); + const elseOnSameLine = node.consequent.type === "BlockStatement" && !commentOnOwnLine; + parts.push(elseOnSameLine ? " " : hardline); + if (hasComment(node, CommentCheckFlags.Dangling)) { + parts.push(printDanglingComments(path2, options, true), commentOnOwnLine ? hardline : " "); + } + parts.push("else", group(adjustClause(node.alternate, print("alternate"), node.alternate.type === "IfStatement"))); + } + return parts; + } + case "ForStatement": { + const body = adjustClause(node.body, print("body")); + const dangling = printDanglingComments(path2, options, true); + const printedComments = dangling ? [dangling, softline] : ""; + if (!node.init && !node.test && !node.update) { + return [printedComments, group(["for (;;)", body])]; + } + return [printedComments, group(["for (", group([indent([softline, print("init"), ";", line, print("test"), ";", line, print("update")]), softline]), ")", body])]; + } + case "WhileStatement": + return group(["while (", group([indent([softline, print("test")]), softline]), ")", adjustClause(node.body, print("body"))]); + case "ForInStatement": + return group(["for (", print("left"), " in ", print("right"), ")", adjustClause(node.body, print("body"))]); + case "ForOfStatement": + return group(["for", node.await ? " await" : "", " (", print("left"), " of ", print("right"), ")", adjustClause(node.body, print("body"))]); + case "DoWhileStatement": { + const clause = adjustClause(node.body, print("body")); + const doBody = group(["do", clause]); + parts = [doBody]; + if (node.body.type === "BlockStatement") { + parts.push(" "); + } else { + parts.push(hardline); + } + parts.push("while (", group([indent([softline, print("test")]), softline]), ")", semi); + return parts; + } + case "DoExpression": + return [node.async ? "async " : "", "do ", print("body")]; + case "BreakStatement": + parts.push("break"); + if (node.label) { + parts.push(" ", print("label")); + } + parts.push(semi); + return parts; + case "ContinueStatement": + parts.push("continue"); + if (node.label) { + parts.push(" ", print("label")); + } + parts.push(semi); + return parts; + case "LabeledStatement": + if (node.body.type === "EmptyStatement") { + return [print("label"), ":;"]; + } + return [print("label"), ": ", print("body")]; + case "TryStatement": + return ["try ", print("block"), node.handler ? [" ", print("handler")] : "", node.finalizer ? [" finally ", print("finalizer")] : ""]; + case "CatchClause": + if (node.param) { + const parameterHasComments = hasComment(node.param, (comment) => !isBlockComment(comment) || comment.leading && hasNewline(options.originalText, locEnd(comment)) || comment.trailing && hasNewline(options.originalText, locStart(comment), { + backwards: true + })); + const param = print("param"); + return ["catch ", parameterHasComments ? ["(", indent([softline, param]), softline, ") "] : ["(", param, ") "], print("body")]; + } + return ["catch ", print("body")]; + case "SwitchStatement": + return [group(["switch (", indent([softline, print("discriminant")]), softline, ")"]), " {", node.cases.length > 0 ? indent([hardline, join(hardline, path2.map((casePath, index, cases) => { + const caseNode = casePath.getValue(); + return [print(), index !== cases.length - 1 && isNextLineEmpty(caseNode, options) ? hardline : ""]; + }, "cases"))]) : "", hardline, "}"]; + case "SwitchCase": { + if (node.test) { + parts.push("case ", print("test"), ":"); + } else { + parts.push("default:"); + } + if (hasComment(node, CommentCheckFlags.Dangling)) { + parts.push(" ", printDanglingComments(path2, options, true)); + } + const consequent = node.consequent.filter((node2) => node2.type !== "EmptyStatement"); + if (consequent.length > 0) { + const cons = printSwitchCaseConsequent(path2, options, print); + parts.push(consequent.length === 1 && consequent[0].type === "BlockStatement" ? [" ", cons] : indent([hardline, cons])); + } + return parts; + } + case "DebuggerStatement": + return ["debugger", semi]; + case "ClassDeclaration": + case "ClassExpression": + return printClass(path2, options, print); + case "ClassMethod": + case "ClassPrivateMethod": + case "MethodDefinition": + return printClassMethod(path2, options, print); + case "ClassProperty": + case "PropertyDefinition": + case "ClassPrivateProperty": + case "ClassAccessorProperty": + return printClassProperty(path2, options, print); + case "TemplateElement": + return replaceTextEndOfLine(node.value.raw); + case "TemplateLiteral": + return printTemplateLiteral(path2, print, options); + case "TaggedTemplateExpression": + return [print("tag"), print("typeParameters"), print("quasi")]; + case "PrivateIdentifier": + return ["#", print("name")]; + case "PrivateName": + return ["#", print("id")]; + case "InterpreterDirective": + parts.push("#!", node.value, hardline); + if (isNextLineEmpty(node, options)) { + parts.push(hardline); + } + return parts; + case "TopicReference": + return "%"; + case "ArgumentPlaceholder": + return "?"; + case "ModuleExpression": { + parts.push("module {"); + const printed = print("body"); + if (printed) { + parts.push(indent([hardline, printed]), hardline); + } + parts.push("}"); + return parts; + } + default: + throw new Error("unknown type: " + JSON.stringify(node.type)); + } + } + function printDirective(node, options) { + const raw = rawText(node); + const rawContent = raw.slice(1, -1); + if (rawContent.includes('"') || rawContent.includes("'")) { + return raw; + } + const enclosingQuote = options.singleQuote ? "'" : '"'; + return enclosingQuote + rawContent + enclosingQuote; + } + function canAttachComment(node) { + return node.type && !isBlockComment(node) && !isLineComment(node) && node.type !== "EmptyStatement" && node.type !== "TemplateElement" && node.type !== "Import" && node.type !== "TSEmptyBodyFunctionExpression"; + } + module22.exports = { + preprocess, + print: genericPrint, + embed, + insertPragma, + massageAstNode: clean, + hasPrettierIgnore(path2) { + return hasIgnoreComment(path2) || hasJsxIgnoreComment(path2); + }, + willPrintOwnComments: handleComments.willPrintOwnComments, + canAttachComment, + printComment, + isBlockComment, + handleComments: { + avoidAstMutation: true, + ownLine: handleComments.handleOwnLineComment, + endOfLine: handleComments.handleEndOfLineComment, + remaining: handleComments.handleRemainingComment + }, + getCommentChildNodes: handleComments.getCommentChildNodes + }; + } + }); + var require_printer_estree_json = __commonJS22({ + "src/language-js/printer-estree-json.js"(exports2, module22) { + "use strict"; + var { + builders: { + hardline, + indent, + join + } + } = require_doc(); + var preprocess = require_print_preprocess(); + function genericPrint(path2, options, print) { + const node = path2.getValue(); + switch (node.type) { + case "JsonRoot": + return [print("node"), hardline]; + case "ArrayExpression": { + if (node.elements.length === 0) { + return "[]"; + } + const printed = path2.map(() => path2.getValue() === null ? "null" : print(), "elements"); + return ["[", indent([hardline, join([",", hardline], printed)]), hardline, "]"]; + } + case "ObjectExpression": + return node.properties.length === 0 ? "{}" : ["{", indent([hardline, join([",", hardline], path2.map(print, "properties"))]), hardline, "}"]; + case "ObjectProperty": + return [print("key"), ": ", print("value")]; + case "UnaryExpression": + return [node.operator === "+" ? "" : node.operator, print("argument")]; + case "NullLiteral": + return "null"; + case "BooleanLiteral": + return node.value ? "true" : "false"; + case "StringLiteral": + case "NumericLiteral": + return JSON.stringify(node.value); + case "Identifier": { + const parent = path2.getParentNode(); + if (parent && parent.type === "ObjectProperty" && parent.key === node) { + return JSON.stringify(node.name); + } + return node.name; + } + case "TemplateLiteral": + return print(["quasis", 0]); + case "TemplateElement": + return JSON.stringify(node.value.cooked); + default: + throw new Error("unknown type: " + JSON.stringify(node.type)); + } + } + var ignoredProperties = /* @__PURE__ */ new Set(["start", "end", "extra", "loc", "comments", "leadingComments", "trailingComments", "innerComments", "errors", "range", "tokens"]); + function clean(node, newNode) { + const { + type: type2 + } = node; + if (type2 === "ObjectProperty" && node.key.type === "Identifier") { + newNode.key = { + type: "StringLiteral", + value: node.key.name + }; + return; + } + if (type2 === "UnaryExpression" && node.operator === "+") { + return newNode.argument; + } + if (type2 === "ArrayExpression") { + for (const [index, element] of node.elements.entries()) { + if (element === null) { + newNode.elements.splice(index, 0, { + type: "NullLiteral" + }); + } + } + return; + } + if (type2 === "TemplateLiteral") { + return { + type: "StringLiteral", + value: node.quasis[0].value.cooked + }; + } + } + clean.ignoredProperties = ignoredProperties; + module22.exports = { + preprocess, + print: genericPrint, + massageAstNode: clean + }; + } + }); + var require_common_options = __commonJS22({ + "src/common/common-options.js"(exports2, module22) { + "use strict"; + var CATEGORY_COMMON = "Common"; + module22.exports = { + bracketSpacing: { + since: "0.0.0", + category: CATEGORY_COMMON, + type: "boolean", + default: true, + description: "Print spaces between brackets.", + oppositeDescription: "Do not print spaces between brackets." + }, + singleQuote: { + since: "0.0.0", + category: CATEGORY_COMMON, + type: "boolean", + default: false, + description: "Use single quotes instead of double quotes." + }, + proseWrap: { + since: "1.8.2", + category: CATEGORY_COMMON, + type: "choice", + default: [{ + since: "1.8.2", + value: true + }, { + since: "1.9.0", + value: "preserve" + }], + description: "How to wrap prose.", + choices: [{ + since: "1.9.0", + value: "always", + description: "Wrap prose if it exceeds the print width." + }, { + since: "1.9.0", + value: "never", + description: "Do not wrap prose." + }, { + since: "1.9.0", + value: "preserve", + description: "Wrap prose as-is." + }] + }, + bracketSameLine: { + since: "2.4.0", + category: CATEGORY_COMMON, + type: "boolean", + default: false, + description: "Put > of opening tags on the last line instead of on a new line." + }, + singleAttributePerLine: { + since: "2.6.0", + category: CATEGORY_COMMON, + type: "boolean", + default: false, + description: "Enforce single attribute per line in HTML, Vue and JSX." + } + }; + } + }); + var require_options2 = __commonJS22({ + "src/language-js/options.js"(exports2, module22) { + "use strict"; + var commonOptions = require_common_options(); + var CATEGORY_JAVASCRIPT = "JavaScript"; + module22.exports = { + arrowParens: { + since: "1.9.0", + category: CATEGORY_JAVASCRIPT, + type: "choice", + default: [{ + since: "1.9.0", + value: "avoid" + }, { + since: "2.0.0", + value: "always" + }], + description: "Include parentheses around a sole arrow function parameter.", + choices: [{ + value: "always", + description: "Always include parens. Example: `(x) => x`" + }, { + value: "avoid", + description: "Omit parens when possible. Example: `x => x`" + }] + }, + bracketSameLine: commonOptions.bracketSameLine, + bracketSpacing: commonOptions.bracketSpacing, + jsxBracketSameLine: { + since: "0.17.0", + category: CATEGORY_JAVASCRIPT, + type: "boolean", + description: "Put > on the last line instead of at a new line.", + deprecated: "2.4.0" + }, + semi: { + since: "1.0.0", + category: CATEGORY_JAVASCRIPT, + type: "boolean", + default: true, + description: "Print semicolons.", + oppositeDescription: "Do not print semicolons, except at the beginning of lines which may need them." + }, + singleQuote: commonOptions.singleQuote, + jsxSingleQuote: { + since: "1.15.0", + category: CATEGORY_JAVASCRIPT, + type: "boolean", + default: false, + description: "Use single quotes in JSX." + }, + quoteProps: { + since: "1.17.0", + category: CATEGORY_JAVASCRIPT, + type: "choice", + default: "as-needed", + description: "Change when properties in objects are quoted.", + choices: [{ + value: "as-needed", + description: "Only add quotes around object properties where required." + }, { + value: "consistent", + description: "If at least one property in an object requires quotes, quote all properties." + }, { + value: "preserve", + description: "Respect the input use of quotes in object properties." + }] + }, + trailingComma: { + since: "0.0.0", + category: CATEGORY_JAVASCRIPT, + type: "choice", + default: [{ + since: "0.0.0", + value: false + }, { + since: "0.19.0", + value: "none" + }, { + since: "2.0.0", + value: "es5" + }], + description: "Print trailing commas wherever possible when multi-line.", + choices: [{ + value: "es5", + description: "Trailing commas where valid in ES5 (objects, arrays, etc.)" + }, { + value: "none", + description: "No trailing commas." + }, { + value: "all", + description: "Trailing commas wherever possible (including function arguments)." + }] + }, + singleAttributePerLine: commonOptions.singleAttributePerLine + }; + } + }); + var require_parsers = __commonJS22({ + "src/language-js/parse/parsers.js"(exports2, module22) { + "use strict"; + module22.exports = { + get babel() { + return require_parser_babel().parsers.babel; + }, + get "babel-flow"() { + return require_parser_babel().parsers["babel-flow"]; + }, + get "babel-ts"() { + return require_parser_babel().parsers["babel-ts"]; + }, + get json() { + return require_parser_babel().parsers.json; + }, + get json5() { + return require_parser_babel().parsers.json5; + }, + get "json-stringify"() { + return require_parser_babel().parsers["json-stringify"]; + }, + get __js_expression() { + return require_parser_babel().parsers.__js_expression; + }, + get __vue_expression() { + return require_parser_babel().parsers.__vue_expression; + }, + get __vue_ts_expression() { + return require_parser_babel().parsers.__vue_ts_expression; + }, + get __vue_event_binding() { + return require_parser_babel().parsers.__vue_event_binding; + }, + get __vue_ts_event_binding() { + return require_parser_babel().parsers.__vue_ts_event_binding; + }, + get flow() { + return require_parser_flow().parsers.flow; + }, + get typescript() { + return require_parser_typescript().parsers.typescript; + }, + get __ng_action() { + return require_parser_angular().parsers.__ng_action; + }, + get __ng_binding() { + return require_parser_angular().parsers.__ng_binding; + }, + get __ng_interpolation() { + return require_parser_angular().parsers.__ng_interpolation; + }, + get __ng_directive() { + return require_parser_angular().parsers.__ng_directive; + }, + get acorn() { + return require_parser_espree().parsers.acorn; + }, + get espree() { + return require_parser_espree().parsers.espree; + }, + get meriyah() { + return require_parser_meriyah().parsers.meriyah; + }, + get __babel_estree() { + return require_parser_babel().parsers.__babel_estree; + } + }; + } + }); + var require_JavaScript = __commonJS22({ + "node_modules/linguist-languages/data/JavaScript.json"(exports2, module22) { + module22.exports = { + name: "JavaScript", + type: "programming", + tmScope: "source.js", + aceMode: "javascript", + codemirrorMode: "javascript", + codemirrorMimeType: "text/javascript", + color: "#f1e05a", + aliases: ["js", "node"], + extensions: [".js", "._js", ".bones", ".cjs", ".es", ".es6", ".frag", ".gs", ".jake", ".javascript", ".jsb", ".jscad", ".jsfl", ".jslib", ".jsm", ".jspre", ".jss", ".jsx", ".mjs", ".njs", ".pac", ".sjs", ".ssjs", ".xsjs", ".xsjslib"], + filenames: ["Jakefile"], + interpreters: ["chakra", "d8", "gjs", "js", "node", "nodejs", "qjs", "rhino", "v8", "v8-shell"], + languageId: 183 + }; + } + }); + var require_TypeScript = __commonJS22({ + "node_modules/linguist-languages/data/TypeScript.json"(exports2, module22) { + module22.exports = { + name: "TypeScript", + type: "programming", + color: "#3178c6", + aliases: ["ts"], + interpreters: ["deno", "ts-node"], + extensions: [".ts", ".cts", ".mts"], + tmScope: "source.ts", + aceMode: "typescript", + codemirrorMode: "javascript", + codemirrorMimeType: "application/typescript", + languageId: 378 + }; + } + }); + var require_TSX = __commonJS22({ + "node_modules/linguist-languages/data/TSX.json"(exports2, module22) { + module22.exports = { + name: "TSX", + type: "programming", + color: "#3178c6", + group: "TypeScript", + extensions: [".tsx"], + tmScope: "source.tsx", + aceMode: "javascript", + codemirrorMode: "jsx", + codemirrorMimeType: "text/jsx", + languageId: 94901924 + }; + } + }); + var require_JSON = __commonJS22({ + "node_modules/linguist-languages/data/JSON.json"(exports2, module22) { + module22.exports = { + name: "JSON", + type: "data", + color: "#292929", + tmScope: "source.json", + aceMode: "json", + codemirrorMode: "javascript", + codemirrorMimeType: "application/json", + aliases: ["geojson", "jsonl", "topojson"], + extensions: [".json", ".4DForm", ".4DProject", ".avsc", ".geojson", ".gltf", ".har", ".ice", ".JSON-tmLanguage", ".jsonl", ".mcmeta", ".tfstate", ".tfstate.backup", ".topojson", ".webapp", ".webmanifest", ".yy", ".yyp"], + filenames: [".arcconfig", ".auto-changelog", ".c8rc", ".htmlhintrc", ".imgbotconfig", ".nycrc", ".tern-config", ".tern-project", ".watchmanconfig", "Pipfile.lock", "composer.lock", "mcmod.info"], + languageId: 174 + }; + } + }); + var require_JSON_with_Comments = __commonJS22({ + "node_modules/linguist-languages/data/JSON with Comments.json"(exports2, module22) { + module22.exports = { + name: "JSON with Comments", + type: "data", + color: "#292929", + group: "JSON", + tmScope: "source.js", + aceMode: "javascript", + codemirrorMode: "javascript", + codemirrorMimeType: "text/javascript", + aliases: ["jsonc"], + extensions: [".jsonc", ".code-snippets", ".sublime-build", ".sublime-commands", ".sublime-completions", ".sublime-keymap", ".sublime-macro", ".sublime-menu", ".sublime-mousemap", ".sublime-project", ".sublime-settings", ".sublime-theme", ".sublime-workspace", ".sublime_metrics", ".sublime_session"], + filenames: [".babelrc", ".devcontainer.json", ".eslintrc.json", ".jscsrc", ".jshintrc", ".jslintrc", "api-extractor.json", "devcontainer.json", "jsconfig.json", "language-configuration.json", "tsconfig.json", "tslint.json"], + languageId: 423 + }; + } + }); + var require_JSON5 = __commonJS22({ + "node_modules/linguist-languages/data/JSON5.json"(exports2, module22) { + module22.exports = { + name: "JSON5", + type: "data", + color: "#267CB9", + extensions: [".json5"], + tmScope: "source.js", + aceMode: "javascript", + codemirrorMode: "javascript", + codemirrorMimeType: "application/json", + languageId: 175 + }; + } + }); + var require_language_js = __commonJS22({ + "src/language-js/index.js"(exports2, module22) { + "use strict"; + var createLanguage = require_create_language(); + var estreePrinter = require_printer_estree(); + var estreeJsonPrinter = require_printer_estree_json(); + var options = require_options2(); + var parsers = require_parsers(); + var languages = [createLanguage(require_JavaScript(), (data) => ({ + since: "0.0.0", + parsers: ["babel", "acorn", "espree", "meriyah", "babel-flow", "babel-ts", "flow", "typescript"], + vscodeLanguageIds: ["javascript", "mongo"], + interpreters: [...data.interpreters, "zx"], + extensions: [...data.extensions.filter((extension) => extension !== ".jsx"), ".wxs"] + })), createLanguage(require_JavaScript(), () => ({ + name: "Flow", + since: "0.0.0", + parsers: ["flow", "babel-flow"], + vscodeLanguageIds: ["javascript"], + aliases: [], + filenames: [], + extensions: [".js.flow"] + })), createLanguage(require_JavaScript(), () => ({ + name: "JSX", + since: "0.0.0", + parsers: ["babel", "babel-flow", "babel-ts", "flow", "typescript", "espree", "meriyah"], + vscodeLanguageIds: ["javascriptreact"], + aliases: void 0, + filenames: void 0, + extensions: [".jsx"], + group: "JavaScript", + interpreters: void 0, + tmScope: "source.js.jsx", + aceMode: "javascript", + codemirrorMode: "jsx", + codemirrorMimeType: "text/jsx", + color: void 0 + })), createLanguage(require_TypeScript(), () => ({ + since: "1.4.0", + parsers: ["typescript", "babel-ts"], + vscodeLanguageIds: ["typescript"] + })), createLanguage(require_TSX(), () => ({ + since: "1.4.0", + parsers: ["typescript", "babel-ts"], + vscodeLanguageIds: ["typescriptreact"] + })), createLanguage(require_JSON(), () => ({ + name: "JSON.stringify", + since: "1.13.0", + parsers: ["json-stringify"], + vscodeLanguageIds: ["json"], + extensions: [".importmap"], + filenames: ["package.json", "package-lock.json", "composer.json"] + })), createLanguage(require_JSON(), (data) => ({ + since: "1.5.0", + parsers: ["json"], + vscodeLanguageIds: ["json"], + extensions: data.extensions.filter((extension) => extension !== ".jsonl") + })), createLanguage(require_JSON_with_Comments(), (data) => ({ + since: "1.5.0", + parsers: ["json"], + vscodeLanguageIds: ["jsonc"], + filenames: [...data.filenames, ".eslintrc", ".swcrc"] + })), createLanguage(require_JSON5(), () => ({ + since: "1.13.0", + parsers: ["json5"], + vscodeLanguageIds: ["json5"] + }))]; + var printers = { + estree: estreePrinter, + "estree-json": estreeJsonPrinter + }; + module22.exports = { + languages, + options, + printers, + parsers + }; + } + }); + var require_clean2 = __commonJS22({ + "src/language-css/clean.js"(exports2, module22) { + "use strict"; + var { + isFrontMatterNode + } = require_util2(); + var getLast = require_get_last(); + var ignoredProperties = /* @__PURE__ */ new Set(["raw", "raws", "sourceIndex", "source", "before", "after", "trailingComma"]); + function clean(ast, newObj, parent) { + if (isFrontMatterNode(ast) && ast.lang === "yaml") { + delete newObj.value; + } + if (ast.type === "css-comment" && parent.type === "css-root" && parent.nodes.length > 0) { + if (parent.nodes[0] === ast || isFrontMatterNode(parent.nodes[0]) && parent.nodes[1] === ast) { + delete newObj.text; + if (/^\*\s*@(?:format|prettier)\s*$/.test(ast.text)) { + return null; + } + } + if (parent.type === "css-root" && getLast(parent.nodes) === ast) { + return null; + } + } + if (ast.type === "value-root") { + delete newObj.text; + } + if (ast.type === "media-query" || ast.type === "media-query-list" || ast.type === "media-feature-expression") { + delete newObj.value; + } + if (ast.type === "css-rule") { + delete newObj.params; + } + if (ast.type === "selector-combinator") { + newObj.value = newObj.value.replace(/\s+/g, " "); + } + if (ast.type === "media-feature") { + newObj.value = newObj.value.replace(/ /g, ""); + } + if (ast.type === "value-word" && (ast.isColor && ast.isHex || ["initial", "inherit", "unset", "revert"].includes(newObj.value.replace().toLowerCase())) || ast.type === "media-feature" || ast.type === "selector-root-invalid" || ast.type === "selector-pseudo") { + newObj.value = newObj.value.toLowerCase(); + } + if (ast.type === "css-decl") { + newObj.prop = newObj.prop.toLowerCase(); + } + if (ast.type === "css-atrule" || ast.type === "css-import") { + newObj.name = newObj.name.toLowerCase(); + } + if (ast.type === "value-number") { + newObj.unit = newObj.unit.toLowerCase(); + } + if ((ast.type === "media-feature" || ast.type === "media-keyword" || ast.type === "media-type" || ast.type === "media-unknown" || ast.type === "media-url" || ast.type === "media-value" || ast.type === "selector-attribute" || ast.type === "selector-string" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "value-string") && newObj.value) { + newObj.value = cleanCSSStrings(newObj.value); + } + if (ast.type === "selector-attribute") { + newObj.attribute = newObj.attribute.trim(); + if (newObj.namespace) { + if (typeof newObj.namespace === "string") { + newObj.namespace = newObj.namespace.trim(); + if (newObj.namespace.length === 0) { + newObj.namespace = true; + } + } + } + if (newObj.value) { + newObj.value = newObj.value.trim().replace(/^["']|["']$/g, ""); + delete newObj.quoted; + } + } + if ((ast.type === "media-value" || ast.type === "media-type" || ast.type === "value-number" || ast.type === "selector-root-invalid" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "selector-tag") && newObj.value) { + newObj.value = newObj.value.replace(/([\d+.Ee-]+)([A-Za-z]*)/g, (match, numStr, unit) => { + const num = Number(numStr); + return Number.isNaN(num) ? match : num + unit.toLowerCase(); + }); + } + if (ast.type === "selector-tag") { + const lowercasedValue = ast.value.toLowerCase(); + if (["from", "to"].includes(lowercasedValue)) { + newObj.value = lowercasedValue; + } + } + if (ast.type === "css-atrule" && ast.name.toLowerCase() === "supports") { + delete newObj.value; + } + if (ast.type === "selector-unknown") { + delete newObj.value; + } + if (ast.type === "value-comma_group") { + const index = ast.groups.findIndex((node) => node.type === "value-number" && node.unit === "..."); + if (index !== -1) { + newObj.groups[index].unit = ""; + newObj.groups.splice(index + 1, 0, { + type: "value-word", + value: "...", + isColor: false, + isHex: false + }); + } + } + } + clean.ignoredProperties = ignoredProperties; + function cleanCSSStrings(value) { + return value.replace(/'/g, '"').replace(/\\([^\dA-Fa-f])/g, "$1"); + } + module22.exports = clean; + } + }); + var require_print = __commonJS22({ + "src/utils/front-matter/print.js"(exports2, module22) { + "use strict"; + var { + builders: { + hardline, + markAsRoot + } + } = require_doc(); + function print(node, textToDoc) { + if (node.lang === "yaml") { + const value = node.value.trim(); + const doc2 = value ? textToDoc(value, { + parser: "yaml" + }, { + stripTrailingHardline: true + }) : ""; + return markAsRoot([node.startDelimiter, hardline, doc2, doc2 ? hardline : "", node.endDelimiter]); + } + } + module22.exports = print; + } + }); + var require_embed2 = __commonJS22({ + "src/language-css/embed.js"(exports2, module22) { + "use strict"; + var { + builders: { + hardline + } + } = require_doc(); + var printFrontMatter = require_print(); + function embed(path2, print, textToDoc) { + const node = path2.getValue(); + if (node.type === "front-matter") { + const doc2 = printFrontMatter(node, textToDoc); + return doc2 ? [doc2, hardline] : ""; + } + } + module22.exports = embed; + } + }); + var require_parse4 = __commonJS22({ + "src/utils/front-matter/parse.js"(exports2, module22) { + "use strict"; + var frontMatterRegex = new RegExp("^(?-{3}|\\+{3})(?[^\\n]*)\\n(?:|(?.*?)\\n)(?\\k|\\.{3})[^\\S\\n]*(?:\\n|$)", "s"); + function parse(text) { + const match = text.match(frontMatterRegex); + if (!match) { + return { + content: text + }; + } + const { + startDelimiter, + language, + value = "", + endDelimiter + } = match.groups; + let lang = language.trim() || "yaml"; + if (startDelimiter === "+++") { + lang = "toml"; + } + if (lang !== "yaml" && startDelimiter !== endDelimiter) { + return { + content: text + }; + } + const [raw] = match; + const frontMatter = { + type: "front-matter", + lang, + value, + startDelimiter, + endDelimiter, + raw: raw.replace(/\n$/, "") + }; + return { + frontMatter, + content: raw.replace(/[^\n]/g, " ") + text.slice(raw.length) + }; + } + module22.exports = parse; + } + }); + var require_pragma2 = __commonJS22({ + "src/language-css/pragma.js"(exports2, module22) { + "use strict"; + var jsPragma = require_pragma(); + var parseFrontMatter = require_parse4(); + function hasPragma(text) { + return jsPragma.hasPragma(parseFrontMatter(text).content); + } + function insertPragma(text) { + const { + frontMatter, + content + } = parseFrontMatter(text); + return (frontMatter ? frontMatter.raw + "\n\n" : "") + jsPragma.insertPragma(content); + } + module22.exports = { + hasPragma, + insertPragma + }; + } + }); + var require_utils8 = __commonJS22({ + "src/language-css/utils/index.js"(exports2, module22) { + "use strict"; + var colorAdjusterFunctions = /* @__PURE__ */ new Set(["red", "green", "blue", "alpha", "a", "rgb", "hue", "h", "saturation", "s", "lightness", "l", "whiteness", "w", "blackness", "b", "tint", "shade", "blend", "blenda", "contrast", "hsl", "hsla", "hwb", "hwba"]); + function getAncestorCounter(path2, typeOrTypes) { + const types = Array.isArray(typeOrTypes) ? typeOrTypes : [typeOrTypes]; + let counter = -1; + let ancestorNode; + while (ancestorNode = path2.getParentNode(++counter)) { + if (types.includes(ancestorNode.type)) { + return counter; + } + } + return -1; + } + function getAncestorNode(path2, typeOrTypes) { + const counter = getAncestorCounter(path2, typeOrTypes); + return counter === -1 ? null : path2.getParentNode(counter); + } + function getPropOfDeclNode(path2) { + var _declAncestorNode$pro; + const declAncestorNode = getAncestorNode(path2, "css-decl"); + return declAncestorNode === null || declAncestorNode === void 0 ? void 0 : (_declAncestorNode$pro = declAncestorNode.prop) === null || _declAncestorNode$pro === void 0 ? void 0 : _declAncestorNode$pro.toLowerCase(); + } + var wideKeywords = /* @__PURE__ */ new Set(["initial", "inherit", "unset", "revert"]); + function isWideKeywords(value) { + return wideKeywords.has(value.toLowerCase()); + } + function isKeyframeAtRuleKeywords(path2, value) { + const atRuleAncestorNode = getAncestorNode(path2, "css-atrule"); + return (atRuleAncestorNode === null || atRuleAncestorNode === void 0 ? void 0 : atRuleAncestorNode.name) && atRuleAncestorNode.name.toLowerCase().endsWith("keyframes") && ["from", "to"].includes(value.toLowerCase()); + } + function maybeToLowerCase(value) { + return value.includes("$") || value.includes("@") || value.includes("#") || value.startsWith("%") || value.startsWith("--") || value.startsWith(":--") || value.includes("(") && value.includes(")") ? value : value.toLowerCase(); + } + function insideValueFunctionNode(path2, functionName) { + var _funcAncestorNode$val; + const funcAncestorNode = getAncestorNode(path2, "value-func"); + return (funcAncestorNode === null || funcAncestorNode === void 0 ? void 0 : (_funcAncestorNode$val = funcAncestorNode.value) === null || _funcAncestorNode$val === void 0 ? void 0 : _funcAncestorNode$val.toLowerCase()) === functionName; + } + function insideICSSRuleNode(path2) { + var _ruleAncestorNode$raw; + const ruleAncestorNode = getAncestorNode(path2, "css-rule"); + const selector = ruleAncestorNode === null || ruleAncestorNode === void 0 ? void 0 : (_ruleAncestorNode$raw = ruleAncestorNode.raws) === null || _ruleAncestorNode$raw === void 0 ? void 0 : _ruleAncestorNode$raw.selector; + return selector && (selector.startsWith(":import") || selector.startsWith(":export")); + } + function insideAtRuleNode(path2, atRuleNameOrAtRuleNames) { + const atRuleNames = Array.isArray(atRuleNameOrAtRuleNames) ? atRuleNameOrAtRuleNames : [atRuleNameOrAtRuleNames]; + const atRuleAncestorNode = getAncestorNode(path2, "css-atrule"); + return atRuleAncestorNode && atRuleNames.includes(atRuleAncestorNode.name.toLowerCase()); + } + function insideURLFunctionInImportAtRuleNode(path2) { + const node = path2.getValue(); + const atRuleAncestorNode = getAncestorNode(path2, "css-atrule"); + return (atRuleAncestorNode === null || atRuleAncestorNode === void 0 ? void 0 : atRuleAncestorNode.name) === "import" && node.groups[0].value === "url" && node.groups.length === 2; + } + function isURLFunctionNode(node) { + return node.type === "value-func" && node.value.toLowerCase() === "url"; + } + function isLastNode(path2, node) { + var _path$getParentNode; + const nodes = (_path$getParentNode = path2.getParentNode()) === null || _path$getParentNode === void 0 ? void 0 : _path$getParentNode.nodes; + return nodes && nodes.indexOf(node) === nodes.length - 1; + } + function isDetachedRulesetDeclarationNode(node) { + const { + selector + } = node; + if (!selector) { + return false; + } + return typeof selector === "string" && /^@.+:.*$/.test(selector) || selector.value && /^@.+:.*$/.test(selector.value); + } + function isForKeywordNode(node) { + return node.type === "value-word" && ["from", "through", "end"].includes(node.value); + } + function isIfElseKeywordNode(node) { + return node.type === "value-word" && ["and", "or", "not"].includes(node.value); + } + function isEachKeywordNode(node) { + return node.type === "value-word" && node.value === "in"; + } + function isMultiplicationNode(node) { + return node.type === "value-operator" && node.value === "*"; + } + function isDivisionNode(node) { + return node.type === "value-operator" && node.value === "/"; + } + function isAdditionNode(node) { + return node.type === "value-operator" && node.value === "+"; + } + function isSubtractionNode(node) { + return node.type === "value-operator" && node.value === "-"; + } + function isModuloNode(node) { + return node.type === "value-operator" && node.value === "%"; + } + function isMathOperatorNode(node) { + return isMultiplicationNode(node) || isDivisionNode(node) || isAdditionNode(node) || isSubtractionNode(node) || isModuloNode(node); + } + function isEqualityOperatorNode(node) { + return node.type === "value-word" && ["==", "!="].includes(node.value); + } + function isRelationalOperatorNode(node) { + return node.type === "value-word" && ["<", ">", "<=", ">="].includes(node.value); + } + function isSCSSControlDirectiveNode(node) { + return node.type === "css-atrule" && ["if", "else", "for", "each", "while"].includes(node.name); + } + function isDetachedRulesetCallNode(node) { + var _node$raws; + return ((_node$raws = node.raws) === null || _node$raws === void 0 ? void 0 : _node$raws.params) && /^\(\s*\)$/.test(node.raws.params); + } + function isTemplatePlaceholderNode(node) { + return node.name.startsWith("prettier-placeholder"); + } + function isTemplatePropNode(node) { + return node.prop.startsWith("@prettier-placeholder"); + } + function isPostcssSimpleVarNode(currentNode, nextNode) { + return currentNode.value === "$$" && currentNode.type === "value-func" && (nextNode === null || nextNode === void 0 ? void 0 : nextNode.type) === "value-word" && !nextNode.raws.before; + } + function hasComposesNode(node) { + var _node$value, _node$value$group; + return ((_node$value = node.value) === null || _node$value === void 0 ? void 0 : _node$value.type) === "value-root" && ((_node$value$group = node.value.group) === null || _node$value$group === void 0 ? void 0 : _node$value$group.type) === "value-value" && node.prop.toLowerCase() === "composes"; + } + function hasParensAroundNode(node) { + var _node$value2, _node$value2$group, _node$value2$group$gr; + return ((_node$value2 = node.value) === null || _node$value2 === void 0 ? void 0 : (_node$value2$group = _node$value2.group) === null || _node$value2$group === void 0 ? void 0 : (_node$value2$group$gr = _node$value2$group.group) === null || _node$value2$group$gr === void 0 ? void 0 : _node$value2$group$gr.type) === "value-paren_group" && node.value.group.group.open !== null && node.value.group.group.close !== null; + } + function hasEmptyRawBefore(node) { + var _node$raws2; + return ((_node$raws2 = node.raws) === null || _node$raws2 === void 0 ? void 0 : _node$raws2.before) === ""; + } + function isKeyValuePairNode(node) { + var _node$groups, _node$groups$; + return node.type === "value-comma_group" && ((_node$groups = node.groups) === null || _node$groups === void 0 ? void 0 : (_node$groups$ = _node$groups[1]) === null || _node$groups$ === void 0 ? void 0 : _node$groups$.type) === "value-colon"; + } + function isKeyValuePairInParenGroupNode(node) { + var _node$groups2; + return node.type === "value-paren_group" && ((_node$groups2 = node.groups) === null || _node$groups2 === void 0 ? void 0 : _node$groups2[0]) && isKeyValuePairNode(node.groups[0]); + } + function isSCSSMapItemNode(path2) { + var _declNode$prop; + const node = path2.getValue(); + if (node.groups.length === 0) { + return false; + } + const parentParentNode = path2.getParentNode(1); + if (!isKeyValuePairInParenGroupNode(node) && !(parentParentNode && isKeyValuePairInParenGroupNode(parentParentNode))) { + return false; + } + const declNode = getAncestorNode(path2, "css-decl"); + if (declNode !== null && declNode !== void 0 && (_declNode$prop = declNode.prop) !== null && _declNode$prop !== void 0 && _declNode$prop.startsWith("$")) { + return true; + } + if (isKeyValuePairInParenGroupNode(parentParentNode)) { + return true; + } + if (parentParentNode.type === "value-func") { + return true; + } + return false; + } + function isInlineValueCommentNode(node) { + return node.type === "value-comment" && node.inline; + } + function isHashNode(node) { + return node.type === "value-word" && node.value === "#"; + } + function isLeftCurlyBraceNode(node) { + return node.type === "value-word" && node.value === "{"; + } + function isRightCurlyBraceNode(node) { + return node.type === "value-word" && node.value === "}"; + } + function isWordNode(node) { + return ["value-word", "value-atword"].includes(node.type); + } + function isColonNode(node) { + return (node === null || node === void 0 ? void 0 : node.type) === "value-colon"; + } + function isKeyInValuePairNode(node, parentNode) { + if (!isKeyValuePairNode(parentNode)) { + return false; + } + const { + groups + } = parentNode; + const index = groups.indexOf(node); + if (index === -1) { + return false; + } + return isColonNode(groups[index + 1]); + } + function isMediaAndSupportsKeywords(node) { + return node.value && ["not", "and", "or"].includes(node.value.toLowerCase()); + } + function isColorAdjusterFuncNode(node) { + if (node.type !== "value-func") { + return false; + } + return colorAdjusterFunctions.has(node.value.toLowerCase()); + } + function lastLineHasInlineComment(text) { + return /\/\//.test(text.split(/[\n\r]/).pop()); + } + function isAtWordPlaceholderNode(node) { + return (node === null || node === void 0 ? void 0 : node.type) === "value-atword" && node.value.startsWith("prettier-placeholder-"); + } + function isConfigurationNode(node, parentNode) { + var _node$open, _node$close; + if (((_node$open = node.open) === null || _node$open === void 0 ? void 0 : _node$open.value) !== "(" || ((_node$close = node.close) === null || _node$close === void 0 ? void 0 : _node$close.value) !== ")" || node.groups.some((group) => group.type !== "value-comma_group")) { + return false; + } + if (parentNode.type === "value-comma_group") { + const prevIdx = parentNode.groups.indexOf(node) - 1; + const maybeWithNode = parentNode.groups[prevIdx]; + if ((maybeWithNode === null || maybeWithNode === void 0 ? void 0 : maybeWithNode.type) === "value-word" && maybeWithNode.value === "with") { + return true; + } + } + return false; + } + function isParenGroupNode(node) { + var _node$open2, _node$close2; + return node.type === "value-paren_group" && ((_node$open2 = node.open) === null || _node$open2 === void 0 ? void 0 : _node$open2.value) === "(" && ((_node$close2 = node.close) === null || _node$close2 === void 0 ? void 0 : _node$close2.value) === ")"; + } + module22.exports = { + getAncestorCounter, + getAncestorNode, + getPropOfDeclNode, + maybeToLowerCase, + insideValueFunctionNode, + insideICSSRuleNode, + insideAtRuleNode, + insideURLFunctionInImportAtRuleNode, + isKeyframeAtRuleKeywords, + isWideKeywords, + isLastNode, + isSCSSControlDirectiveNode, + isDetachedRulesetDeclarationNode, + isRelationalOperatorNode, + isEqualityOperatorNode, + isMultiplicationNode, + isDivisionNode, + isAdditionNode, + isSubtractionNode, + isModuloNode, + isMathOperatorNode, + isEachKeywordNode, + isForKeywordNode, + isURLFunctionNode, + isIfElseKeywordNode, + hasComposesNode, + hasParensAroundNode, + hasEmptyRawBefore, + isDetachedRulesetCallNode, + isTemplatePlaceholderNode, + isTemplatePropNode, + isPostcssSimpleVarNode, + isKeyValuePairNode, + isKeyValuePairInParenGroupNode, + isKeyInValuePairNode, + isSCSSMapItemNode, + isInlineValueCommentNode, + isHashNode, + isLeftCurlyBraceNode, + isRightCurlyBraceNode, + isWordNode, + isColonNode, + isMediaAndSupportsKeywords, + isColorAdjusterFuncNode, + lastLineHasInlineComment, + isAtWordPlaceholderNode, + isConfigurationNode, + isParenGroupNode + }; + } + }); + var require_line_column_to_index = __commonJS22({ + "src/utils/line-column-to-index.js"(exports2, module22) { + "use strict"; + module22.exports = function(lineColumn, text) { + let index = 0; + for (let i = 0; i < lineColumn.line - 1; ++i) { + index = text.indexOf("\n", index) + 1; + } + return index + lineColumn.column; + }; + } + }); + var require_loc2 = __commonJS22({ + "src/language-css/loc.js"(exports2, module22) { + "use strict"; + var { + skipEverythingButNewLine + } = require_skip(); + var getLast = require_get_last(); + var lineColumnToIndex = require_line_column_to_index(); + function calculateLocStart(node, text) { + if (typeof node.sourceIndex === "number") { + return node.sourceIndex; + } + return node.source ? lineColumnToIndex(node.source.start, text) - 1 : null; + } + function calculateLocEnd(node, text) { + if (node.type === "css-comment" && node.inline) { + return skipEverythingButNewLine(text, node.source.startOffset); + } + const endNode = node.nodes && getLast(node.nodes); + if (endNode && node.source && !node.source.end) { + node = endNode; + } + if (node.source && node.source.end) { + return lineColumnToIndex(node.source.end, text); + } + return null; + } + function calculateLoc(node, text) { + if (node.source) { + node.source.startOffset = calculateLocStart(node, text); + node.source.endOffset = calculateLocEnd(node, text); + } + for (const key in node) { + const child = node[key]; + if (key === "source" || !child || typeof child !== "object") { + continue; + } + if (child.type === "value-root" || child.type === "value-unknown") { + calculateValueNodeLoc(child, getValueRootOffset(node), child.text || child.value); + } else { + calculateLoc(child, text); + } + } + } + function calculateValueNodeLoc(node, rootOffset, text) { + if (node.source) { + node.source.startOffset = calculateLocStart(node, text) + rootOffset; + node.source.endOffset = calculateLocEnd(node, text) + rootOffset; + } + for (const key in node) { + const child = node[key]; + if (key === "source" || !child || typeof child !== "object") { + continue; + } + calculateValueNodeLoc(child, rootOffset, text); + } + } + function getValueRootOffset(node) { + let result = node.source.startOffset; + if (typeof node.prop === "string") { + result += node.prop.length; + } + if (node.type === "css-atrule" && typeof node.name === "string") { + result += 1 + node.name.length + node.raws.afterName.match(/^\s*:?\s*/)[0].length; + } + if (node.type !== "css-atrule" && node.raws && typeof node.raws.between === "string") { + result += node.raws.between.length; + } + return result; + } + function replaceQuotesInInlineComments(text) { + let state = "initial"; + let stateToReturnFromQuotes = "initial"; + let inlineCommentStartIndex; + let inlineCommentContainsQuotes = false; + const inlineCommentsToReplace = []; + for (let i = 0; i < text.length; i++) { + const c = text[i]; + switch (state) { + case "initial": + if (c === "'") { + state = "single-quotes"; + continue; + } + if (c === '"') { + state = "double-quotes"; + continue; + } + if ((c === "u" || c === "U") && text.slice(i, i + 4).toLowerCase() === "url(") { + state = "url"; + i += 3; + continue; + } + if (c === "*" && text[i - 1] === "/") { + state = "comment-block"; + continue; + } + if (c === "/" && text[i - 1] === "/") { + state = "comment-inline"; + inlineCommentStartIndex = i - 1; + continue; + } + continue; + case "single-quotes": + if (c === "'" && text[i - 1] !== "\\") { + state = stateToReturnFromQuotes; + stateToReturnFromQuotes = "initial"; + } + if (c === "\n" || c === "\r") { + return text; + } + continue; + case "double-quotes": + if (c === '"' && text[i - 1] !== "\\") { + state = stateToReturnFromQuotes; + stateToReturnFromQuotes = "initial"; + } + if (c === "\n" || c === "\r") { + return text; + } + continue; + case "url": + if (c === ")") { + state = "initial"; + } + if (c === "\n" || c === "\r") { + return text; + } + if (c === "'") { + state = "single-quotes"; + stateToReturnFromQuotes = "url"; + continue; + } + if (c === '"') { + state = "double-quotes"; + stateToReturnFromQuotes = "url"; + continue; + } + continue; + case "comment-block": + if (c === "/" && text[i - 1] === "*") { + state = "initial"; + } + continue; + case "comment-inline": + if (c === '"' || c === "'" || c === "*") { + inlineCommentContainsQuotes = true; + } + if (c === "\n" || c === "\r") { + if (inlineCommentContainsQuotes) { + inlineCommentsToReplace.push([inlineCommentStartIndex, i]); + } + state = "initial"; + inlineCommentContainsQuotes = false; + } + continue; + } + } + for (const [start, end] of inlineCommentsToReplace) { + text = text.slice(0, start) + text.slice(start, end).replace(/["'*]/g, " ") + text.slice(end); + } + return text; + } + function locStart(node) { + return node.source.startOffset; + } + function locEnd(node) { + return node.source.endOffset; + } + module22.exports = { + locStart, + locEnd, + calculateLoc, + replaceQuotesInInlineComments + }; + } + }); + var require_is_less_parser = __commonJS22({ + "src/language-css/utils/is-less-parser.js"(exports2, module22) { + "use strict"; + function isLessParser(options) { + return options.parser === "css" || options.parser === "less"; + } + module22.exports = isLessParser; + } + }); + var require_is_scss = __commonJS22({ + "src/language-css/utils/is-scss.js"(exports2, module22) { + "use strict"; + function isSCSS(parser, text) { + const hasExplicitParserChoice = parser === "less" || parser === "scss"; + const IS_POSSIBLY_SCSS = /(?:\w\s*:\s*[^:}]+|#){|@import[^\n]+(?:url|,)/; + return hasExplicitParserChoice ? parser === "scss" : IS_POSSIBLY_SCSS.test(text); + } + module22.exports = isSCSS; + } + }); + var require_css_units_evaluate = __commonJS22({ + "src/language-css/utils/css-units.evaluate.js"(exports2, module22) { + module22.exports = { + em: "em", + rem: "rem", + ex: "ex", + rex: "rex", + cap: "cap", + rcap: "rcap", + ch: "ch", + rch: "rch", + ic: "ic", + ric: "ric", + lh: "lh", + rlh: "rlh", + vw: "vw", + svw: "svw", + lvw: "lvw", + dvw: "dvw", + vh: "vh", + svh: "svh", + lvh: "lvh", + dvh: "dvh", + vi: "vi", + svi: "svi", + lvi: "lvi", + dvi: "dvi", + vb: "vb", + svb: "svb", + lvb: "lvb", + dvb: "dvb", + vmin: "vmin", + svmin: "svmin", + lvmin: "lvmin", + dvmin: "dvmin", + vmax: "vmax", + svmax: "svmax", + lvmax: "lvmax", + dvmax: "dvmax", + cm: "cm", + mm: "mm", + q: "Q", + in: "in", + pt: "pt", + pc: "pc", + px: "px", + deg: "deg", + grad: "grad", + rad: "rad", + turn: "turn", + s: "s", + ms: "ms", + hz: "Hz", + khz: "kHz", + dpi: "dpi", + dpcm: "dpcm", + dppx: "dppx", + x: "x" + }; + } + }); + var require_print_unit = __commonJS22({ + "src/language-css/utils/print-unit.js"(exports2, module22) { + "use strict"; + var CSS_UNITS = require_css_units_evaluate(); + function printUnit(unit) { + const lowercased = unit.toLowerCase(); + return Object.prototype.hasOwnProperty.call(CSS_UNITS, lowercased) ? CSS_UNITS[lowercased] : unit; + } + module22.exports = printUnit; + } + }); + var require_printer_postcss = __commonJS22({ + "src/language-css/printer-postcss.js"(exports2, module22) { + "use strict"; + var getLast = require_get_last(); + var { + printNumber, + printString, + hasNewline, + isFrontMatterNode, + isNextLineEmpty, + isNonEmptyArray + } = require_util2(); + var { + builders: { + join, + line, + hardline, + softline, + group, + fill, + indent, + dedent, + ifBreak, + breakParent + }, + utils: { + removeLines, + getDocParts + } + } = require_doc(); + var clean = require_clean2(); + var embed = require_embed2(); + var { + insertPragma + } = require_pragma2(); + var { + getAncestorNode, + getPropOfDeclNode, + maybeToLowerCase, + insideValueFunctionNode, + insideICSSRuleNode, + insideAtRuleNode, + insideURLFunctionInImportAtRuleNode, + isKeyframeAtRuleKeywords, + isWideKeywords, + isLastNode, + isSCSSControlDirectiveNode, + isDetachedRulesetDeclarationNode, + isRelationalOperatorNode, + isEqualityOperatorNode, + isMultiplicationNode, + isDivisionNode, + isAdditionNode, + isSubtractionNode, + isMathOperatorNode, + isEachKeywordNode, + isForKeywordNode, + isURLFunctionNode, + isIfElseKeywordNode, + hasComposesNode, + hasParensAroundNode, + hasEmptyRawBefore, + isKeyValuePairNode, + isKeyInValuePairNode, + isDetachedRulesetCallNode, + isTemplatePlaceholderNode, + isTemplatePropNode, + isPostcssSimpleVarNode, + isSCSSMapItemNode, + isInlineValueCommentNode, + isHashNode, + isLeftCurlyBraceNode, + isRightCurlyBraceNode, + isWordNode, + isColonNode, + isMediaAndSupportsKeywords, + isColorAdjusterFuncNode, + lastLineHasInlineComment, + isAtWordPlaceholderNode, + isConfigurationNode, + isParenGroupNode + } = require_utils8(); + var { + locStart, + locEnd + } = require_loc2(); + var isLessParser = require_is_less_parser(); + var isSCSS = require_is_scss(); + var printUnit = require_print_unit(); + function shouldPrintComma(options) { + return options.trailingComma === "es5" || options.trailingComma === "all"; + } + function genericPrint(path2, options, print) { + const node = path2.getValue(); + if (!node) { + return ""; + } + if (typeof node === "string") { + return node; + } + switch (node.type) { + case "front-matter": + return [node.raw, hardline]; + case "css-root": { + const nodes = printNodeSequence(path2, options, print); + const after = node.raws.after.trim(); + return [nodes, after ? ` ${after}` : "", getDocParts(nodes).length > 0 ? hardline : ""]; + } + case "css-comment": { + const isInlineComment = node.inline || node.raws.inline; + const text = options.originalText.slice(locStart(node), locEnd(node)); + return isInlineComment ? text.trimEnd() : text; + } + case "css-rule": { + return [print("selector"), node.important ? " !important" : "", node.nodes ? [node.selector && node.selector.type === "selector-unknown" && lastLineHasInlineComment(node.selector.value) ? line : " ", "{", node.nodes.length > 0 ? indent([hardline, printNodeSequence(path2, options, print)]) : "", hardline, "}", isDetachedRulesetDeclarationNode(node) ? ";" : ""] : ";"]; + } + case "css-decl": { + const parentNode = path2.getParentNode(); + const { + between: rawBetween + } = node.raws; + const trimmedBetween = rawBetween.trim(); + const isColon = trimmedBetween === ":"; + let value = hasComposesNode(node) ? removeLines(print("value")) : print("value"); + if (!isColon && lastLineHasInlineComment(trimmedBetween)) { + value = indent([hardline, dedent(value)]); + } + return [node.raws.before.replace(/[\s;]/g, ""), insideICSSRuleNode(path2) ? node.prop : maybeToLowerCase(node.prop), trimmedBetween.startsWith("//") ? " " : "", trimmedBetween, node.extend ? "" : " ", isLessParser(options) && node.extend && node.selector ? ["extend(", print("selector"), ")"] : "", value, node.raws.important ? node.raws.important.replace(/\s*!\s*important/i, " !important") : node.important ? " !important" : "", node.raws.scssDefault ? node.raws.scssDefault.replace(/\s*!default/i, " !default") : node.scssDefault ? " !default" : "", node.raws.scssGlobal ? node.raws.scssGlobal.replace(/\s*!global/i, " !global") : node.scssGlobal ? " !global" : "", node.nodes ? [" {", indent([softline, printNodeSequence(path2, options, print)]), softline, "}"] : isTemplatePropNode(node) && !parentNode.raws.semicolon && options.originalText[locEnd(node) - 1] !== ";" ? "" : options.__isHTMLStyleAttribute && isLastNode(path2, node) ? ifBreak(";") : ";"]; + } + case "css-atrule": { + const parentNode = path2.getParentNode(); + const isTemplatePlaceholderNodeWithoutSemiColon = isTemplatePlaceholderNode(node) && !parentNode.raws.semicolon && options.originalText[locEnd(node) - 1] !== ";"; + if (isLessParser(options)) { + if (node.mixin) { + return [print("selector"), node.important ? " !important" : "", isTemplatePlaceholderNodeWithoutSemiColon ? "" : ";"]; + } + if (node.function) { + return [node.name, print("params"), isTemplatePlaceholderNodeWithoutSemiColon ? "" : ";"]; + } + if (node.variable) { + return ["@", node.name, ": ", node.value ? print("value") : "", node.raws.between.trim() ? node.raws.between.trim() + " " : "", node.nodes ? ["{", indent([node.nodes.length > 0 ? softline : "", printNodeSequence(path2, options, print)]), softline, "}"] : "", isTemplatePlaceholderNodeWithoutSemiColon ? "" : ";"]; + } + } + return ["@", isDetachedRulesetCallNode(node) || node.name.endsWith(":") ? node.name : maybeToLowerCase(node.name), node.params ? [isDetachedRulesetCallNode(node) ? "" : isTemplatePlaceholderNode(node) ? node.raws.afterName === "" ? "" : node.name.endsWith(":") ? " " : /^\s*\n\s*\n/.test(node.raws.afterName) ? [hardline, hardline] : /^\s*\n/.test(node.raws.afterName) ? hardline : " " : " ", print("params")] : "", node.selector ? indent([" ", print("selector")]) : "", node.value ? group([" ", print("value"), isSCSSControlDirectiveNode(node) ? hasParensAroundNode(node) ? " " : line : ""]) : node.name === "else" ? " " : "", node.nodes ? [isSCSSControlDirectiveNode(node) ? "" : node.selector && !node.selector.nodes && typeof node.selector.value === "string" && lastLineHasInlineComment(node.selector.value) || !node.selector && typeof node.params === "string" && lastLineHasInlineComment(node.params) ? line : " ", "{", indent([node.nodes.length > 0 ? softline : "", printNodeSequence(path2, options, print)]), softline, "}"] : isTemplatePlaceholderNodeWithoutSemiColon ? "" : ";"]; + } + case "media-query-list": { + const parts = []; + path2.each((childPath) => { + const node2 = childPath.getValue(); + if (node2.type === "media-query" && node2.value === "") { + return; + } + parts.push(print()); + }, "nodes"); + return group(indent(join(line, parts))); + } + case "media-query": { + return [join(" ", path2.map(print, "nodes")), isLastNode(path2, node) ? "" : ","]; + } + case "media-type": { + return adjustNumbers(adjustStrings(node.value, options)); + } + case "media-feature-expression": { + if (!node.nodes) { + return node.value; + } + return ["(", ...path2.map(print, "nodes"), ")"]; + } + case "media-feature": { + return maybeToLowerCase(adjustStrings(node.value.replace(/ +/g, " "), options)); + } + case "media-colon": { + return [node.value, " "]; + } + case "media-value": { + return adjustNumbers(adjustStrings(node.value, options)); + } + case "media-keyword": { + return adjustStrings(node.value, options); + } + case "media-url": { + return adjustStrings(node.value.replace(/^url\(\s+/gi, "url(").replace(/\s+\)$/g, ")"), options); + } + case "media-unknown": { + return node.value; + } + case "selector-root": { + return group([insideAtRuleNode(path2, "custom-selector") ? [getAncestorNode(path2, "css-atrule").customSelector, line] : "", join([",", insideAtRuleNode(path2, ["extend", "custom-selector", "nest"]) ? line : hardline], path2.map(print, "nodes"))]); + } + case "selector-selector": { + return group(indent(path2.map(print, "nodes"))); + } + case "selector-comment": { + return node.value; + } + case "selector-string": { + return adjustStrings(node.value, options); + } + case "selector-tag": { + const parentNode = path2.getParentNode(); + const index = parentNode && parentNode.nodes.indexOf(node); + const prevNode = index && parentNode.nodes[index - 1]; + return [node.namespace ? [node.namespace === true ? "" : node.namespace.trim(), "|"] : "", prevNode.type === "selector-nesting" ? node.value : adjustNumbers(isKeyframeAtRuleKeywords(path2, node.value) ? node.value.toLowerCase() : node.value)]; + } + case "selector-id": { + return ["#", node.value]; + } + case "selector-class": { + return [".", adjustNumbers(adjustStrings(node.value, options))]; + } + case "selector-attribute": { + return ["[", node.namespace ? [node.namespace === true ? "" : node.namespace.trim(), "|"] : "", node.attribute.trim(), node.operator ? node.operator : "", node.value ? quoteAttributeValue(adjustStrings(node.value.trim(), options), options) : "", node.insensitive ? " i" : "", "]"]; + } + case "selector-combinator": { + if (node.value === "+" || node.value === ">" || node.value === "~" || node.value === ">>>") { + const parentNode = path2.getParentNode(); + const leading2 = parentNode.type === "selector-selector" && parentNode.nodes[0] === node ? "" : line; + return [leading2, node.value, isLastNode(path2, node) ? "" : " "]; + } + const leading = node.value.trim().startsWith("(") ? line : ""; + const value = adjustNumbers(adjustStrings(node.value.trim(), options)) || line; + return [leading, value]; + } + case "selector-universal": { + return [node.namespace ? [node.namespace === true ? "" : node.namespace.trim(), "|"] : "", node.value]; + } + case "selector-pseudo": { + return [maybeToLowerCase(node.value), isNonEmptyArray(node.nodes) ? ["(", join(", ", path2.map(print, "nodes")), ")"] : ""]; + } + case "selector-nesting": { + return node.value; + } + case "selector-unknown": { + const ruleAncestorNode = getAncestorNode(path2, "css-rule"); + if (ruleAncestorNode && ruleAncestorNode.isSCSSNesterProperty) { + return adjustNumbers(adjustStrings(maybeToLowerCase(node.value), options)); + } + const parentNode = path2.getParentNode(); + if (parentNode.raws && parentNode.raws.selector) { + const start = locStart(parentNode); + const end = start + parentNode.raws.selector.length; + return options.originalText.slice(start, end).trim(); + } + const grandParent = path2.getParentNode(1); + if (parentNode.type === "value-paren_group" && grandParent && grandParent.type === "value-func" && grandParent.value === "selector") { + const start = locEnd(parentNode.open) + 1; + const end = locStart(parentNode.close); + const selector = options.originalText.slice(start, end).trim(); + return lastLineHasInlineComment(selector) ? [breakParent, selector] : selector; + } + return node.value; + } + case "value-value": + case "value-root": { + return print("group"); + } + case "value-comment": { + return options.originalText.slice(locStart(node), locEnd(node)); + } + case "value-comma_group": { + const parentNode = path2.getParentNode(); + const parentParentNode = path2.getParentNode(1); + const declAncestorProp = getPropOfDeclNode(path2); + const isGridValue = declAncestorProp && parentNode.type === "value-value" && (declAncestorProp === "grid" || declAncestorProp.startsWith("grid-template")); + const atRuleAncestorNode = getAncestorNode(path2, "css-atrule"); + const isControlDirective = atRuleAncestorNode && isSCSSControlDirectiveNode(atRuleAncestorNode); + const hasInlineComment = node.groups.some((node2) => isInlineValueCommentNode(node2)); + const printed = path2.map(print, "groups"); + const parts = []; + const insideURLFunction = insideValueFunctionNode(path2, "url"); + let insideSCSSInterpolationInString = false; + let didBreak = false; + for (let i = 0; i < node.groups.length; ++i) { + parts.push(printed[i]); + const iPrevNode = node.groups[i - 1]; + const iNode = node.groups[i]; + const iNextNode = node.groups[i + 1]; + const iNextNextNode = node.groups[i + 2]; + if (insideURLFunction) { + if (iNextNode && isAdditionNode(iNextNode) || isAdditionNode(iNode)) { + parts.push(" "); + } + continue; + } + if (insideAtRuleNode(path2, "forward") && iNode.type === "value-word" && iNode.value && iPrevNode !== void 0 && iPrevNode.type === "value-word" && iPrevNode.value === "as" && iNextNode.type === "value-operator" && iNextNode.value === "*") { + continue; + } + if (!iNextNode) { + continue; + } + if (iNode.type === "value-word" && iNode.value.endsWith("-") && isAtWordPlaceholderNode(iNextNode)) { + continue; + } + const isStartSCSSInterpolationInString = iNode.type === "value-string" && iNode.value.startsWith("#{"); + const isEndingSCSSInterpolationInString = insideSCSSInterpolationInString && iNextNode.type === "value-string" && iNextNode.value.endsWith("}"); + if (isStartSCSSInterpolationInString || isEndingSCSSInterpolationInString) { + insideSCSSInterpolationInString = !insideSCSSInterpolationInString; + continue; + } + if (insideSCSSInterpolationInString) { + continue; + } + if (isColonNode(iNode) || isColonNode(iNextNode)) { + continue; + } + if (iNode.type === "value-atword" && iNode.value === "") { + continue; + } + if (iNode.value === "~") { + continue; + } + if (iNode.value && iNode.value.includes("\\") && iNextNode && iNextNode.type !== "value-comment") { + continue; + } + if (iPrevNode && iPrevNode.value && iPrevNode.value.indexOf("\\") === iPrevNode.value.length - 1 && iNode.type === "value-operator" && iNode.value === "/") { + continue; + } + if (iNode.value === "\\") { + continue; + } + if (isPostcssSimpleVarNode(iNode, iNextNode)) { + continue; + } + if (isHashNode(iNode) || isLeftCurlyBraceNode(iNode) || isRightCurlyBraceNode(iNextNode) || isLeftCurlyBraceNode(iNextNode) && hasEmptyRawBefore(iNextNode) || isRightCurlyBraceNode(iNode) && hasEmptyRawBefore(iNextNode)) { + continue; + } + if (iNode.value === "--" && isHashNode(iNextNode)) { + continue; + } + const isMathOperator = isMathOperatorNode(iNode); + const isNextMathOperator = isMathOperatorNode(iNextNode); + if ((isMathOperator && isHashNode(iNextNode) || isNextMathOperator && isRightCurlyBraceNode(iNode)) && hasEmptyRawBefore(iNextNode)) { + continue; + } + if (!iPrevNode && isDivisionNode(iNode)) { + continue; + } + if (insideValueFunctionNode(path2, "calc") && (isAdditionNode(iNode) || isAdditionNode(iNextNode) || isSubtractionNode(iNode) || isSubtractionNode(iNextNode)) && hasEmptyRawBefore(iNextNode)) { + continue; + } + const isColorAdjusterNode = (isAdditionNode(iNode) || isSubtractionNode(iNode)) && i === 0 && (iNextNode.type === "value-number" || iNextNode.isHex) && parentParentNode && isColorAdjusterFuncNode(parentParentNode) && !hasEmptyRawBefore(iNextNode); + const requireSpaceBeforeOperator = iNextNextNode && iNextNextNode.type === "value-func" || iNextNextNode && isWordNode(iNextNextNode) || iNode.type === "value-func" || isWordNode(iNode); + const requireSpaceAfterOperator = iNextNode.type === "value-func" || isWordNode(iNextNode) || iPrevNode && iPrevNode.type === "value-func" || iPrevNode && isWordNode(iPrevNode); + if (!(isMultiplicationNode(iNextNode) || isMultiplicationNode(iNode)) && !insideValueFunctionNode(path2, "calc") && !isColorAdjusterNode && (isDivisionNode(iNextNode) && !requireSpaceBeforeOperator || isDivisionNode(iNode) && !requireSpaceAfterOperator || isAdditionNode(iNextNode) && !requireSpaceBeforeOperator || isAdditionNode(iNode) && !requireSpaceAfterOperator || isSubtractionNode(iNextNode) || isSubtractionNode(iNode)) && (hasEmptyRawBefore(iNextNode) || isMathOperator && (!iPrevNode || iPrevNode && isMathOperatorNode(iPrevNode)))) { + continue; + } + if (isInlineValueCommentNode(iNode)) { + if (parentNode.type === "value-paren_group") { + parts.push(dedent(hardline)); + continue; + } + parts.push(hardline); + continue; + } + if (isControlDirective && (isEqualityOperatorNode(iNextNode) || isRelationalOperatorNode(iNextNode) || isIfElseKeywordNode(iNextNode) || isEachKeywordNode(iNode) || isForKeywordNode(iNode))) { + parts.push(" "); + continue; + } + if (atRuleAncestorNode && atRuleAncestorNode.name.toLowerCase() === "namespace") { + parts.push(" "); + continue; + } + if (isGridValue) { + if (iNode.source && iNextNode.source && iNode.source.start.line !== iNextNode.source.start.line) { + parts.push(hardline); + didBreak = true; + } else { + parts.push(" "); + } + continue; + } + if (isNextMathOperator) { + parts.push(" "); + continue; + } + if (iNextNode && iNextNode.value === "...") { + continue; + } + if (isAtWordPlaceholderNode(iNode) && isAtWordPlaceholderNode(iNextNode) && locEnd(iNode) === locStart(iNextNode)) { + continue; + } + if (isAtWordPlaceholderNode(iNode) && isParenGroupNode(iNextNode) && locEnd(iNode) === locStart(iNextNode.open)) { + parts.push(softline); + continue; + } + if (iNode.value === "with" && isParenGroupNode(iNextNode)) { + parts.push(" "); + continue; + } + parts.push(line); + } + if (hasInlineComment) { + parts.push(breakParent); + } + if (didBreak) { + parts.unshift(hardline); + } + if (isControlDirective) { + return group(indent(parts)); + } + if (insideURLFunctionInImportAtRuleNode(path2)) { + return group(fill(parts)); + } + return group(indent(fill(parts))); + } + case "value-paren_group": { + const parentNode = path2.getParentNode(); + if (parentNode && isURLFunctionNode(parentNode) && (node.groups.length === 1 || node.groups.length > 0 && node.groups[0].type === "value-comma_group" && node.groups[0].groups.length > 0 && node.groups[0].groups[0].type === "value-word" && node.groups[0].groups[0].value.startsWith("data:"))) { + return [node.open ? print("open") : "", join(",", path2.map(print, "groups")), node.close ? print("close") : ""]; + } + if (!node.open) { + const printed2 = path2.map(print, "groups"); + const res = []; + for (let i = 0; i < printed2.length; i++) { + if (i !== 0) { + res.push([",", line]); + } + res.push(printed2[i]); + } + return group(indent(fill(res))); + } + const isSCSSMapItem = isSCSSMapItemNode(path2); + const lastItem = getLast(node.groups); + const isLastItemComment = lastItem && lastItem.type === "value-comment"; + const isKey = isKeyInValuePairNode(node, parentNode); + const isConfiguration = isConfigurationNode(node, parentNode); + const shouldBreak = isConfiguration || isSCSSMapItem && !isKey; + const shouldDedent = isConfiguration || isKey; + const printed = group([node.open ? print("open") : "", indent([softline, join([line], path2.map((childPath, index) => { + const child = childPath.getValue(); + const isLast = index === node.groups.length - 1; + const printed2 = [print(), isLast ? "" : ","]; + if (isKeyValuePairNode(child) && child.type === "value-comma_group" && child.groups && child.groups[0].type !== "value-paren_group" && child.groups[2] && child.groups[2].type === "value-paren_group") { + const parts = getDocParts(printed2[0].contents.contents); + parts[1] = group(parts[1]); + return group(dedent(printed2)); + } + if (!isLast && child.type === "value-comma_group" && isNonEmptyArray(child.groups)) { + const last = getLast(child.groups); + if (last.source && isNextLineEmpty(options.originalText, last, locEnd)) { + printed2.push(hardline); + } + } + return printed2; + }, "groups"))]), ifBreak(!isLastItemComment && isSCSS(options.parser, options.originalText) && isSCSSMapItem && shouldPrintComma(options) ? "," : ""), softline, node.close ? print("close") : ""], { + shouldBreak + }); + return shouldDedent ? dedent(printed) : printed; + } + case "value-func": { + return [node.value, insideAtRuleNode(path2, "supports") && isMediaAndSupportsKeywords(node) ? " " : "", print("group")]; + } + case "value-paren": { + return node.value; + } + case "value-number": { + return [printCssNumber(node.value), printUnit(node.unit)]; + } + case "value-operator": { + return node.value; + } + case "value-word": { + if (node.isColor && node.isHex || isWideKeywords(node.value)) { + return node.value.toLowerCase(); + } + return node.value; + } + case "value-colon": { + const parentNode = path2.getParentNode(); + const index = parentNode && parentNode.groups.indexOf(node); + const prevNode = index && parentNode.groups[index - 1]; + return [node.value, prevNode && typeof prevNode.value === "string" && getLast(prevNode.value) === "\\" || insideValueFunctionNode(path2, "url") ? "" : line]; + } + case "value-comma": { + return [node.value, " "]; + } + case "value-string": { + return printString(node.raws.quote + node.value + node.raws.quote, options); + } + case "value-atword": { + return ["@", node.value]; + } + case "value-unicode-range": { + return node.value; + } + case "value-unknown": { + return node.value; + } + default: + throw new Error(`Unknown postcss type ${JSON.stringify(node.type)}`); + } + } + function printNodeSequence(path2, options, print) { + const parts = []; + path2.each((pathChild, i, nodes) => { + const prevNode = nodes[i - 1]; + if (prevNode && prevNode.type === "css-comment" && prevNode.text.trim() === "prettier-ignore") { + const childNode = pathChild.getValue(); + parts.push(options.originalText.slice(locStart(childNode), locEnd(childNode))); + } else { + parts.push(print()); + } + if (i !== nodes.length - 1) { + if (nodes[i + 1].type === "css-comment" && !hasNewline(options.originalText, locStart(nodes[i + 1]), { + backwards: true + }) && !isFrontMatterNode(nodes[i]) || nodes[i + 1].type === "css-atrule" && nodes[i + 1].name === "else" && nodes[i].type !== "css-comment") { + parts.push(" "); + } else { + parts.push(options.__isHTMLStyleAttribute ? line : hardline); + if (isNextLineEmpty(options.originalText, pathChild.getValue(), locEnd) && !isFrontMatterNode(nodes[i])) { + parts.push(hardline); + } + } + } + }, "nodes"); + return parts; + } + var STRING_REGEX = /(["'])(?:(?!\1)[^\\]|\\.)*\1/gs; + var NUMBER_REGEX = /(?:\d*\.\d+|\d+\.?)(?:[Ee][+-]?\d+)?/g; + var STANDARD_UNIT_REGEX = /[A-Za-z]+/g; + var WORD_PART_REGEX = /[$@]?[A-Z_a-z\u0080-\uFFFF][\w\u0080-\uFFFF-]*/g; + var ADJUST_NUMBERS_REGEX = new RegExp(STRING_REGEX.source + `|(${WORD_PART_REGEX.source})?(${NUMBER_REGEX.source})(${STANDARD_UNIT_REGEX.source})?`, "g"); + function adjustStrings(value, options) { + return value.replace(STRING_REGEX, (match) => printString(match, options)); + } + function quoteAttributeValue(value, options) { + const quote = options.singleQuote ? "'" : '"'; + return value.includes('"') || value.includes("'") ? value : quote + value + quote; + } + function adjustNumbers(value) { + return value.replace(ADJUST_NUMBERS_REGEX, (match, quote, wordPart, number, unit) => !wordPart && number ? printCssNumber(number) + maybeToLowerCase(unit || "") : match); + } + function printCssNumber(rawNumber) { + return printNumber(rawNumber).replace(/\.0(?=$|e)/, ""); + } + module22.exports = { + print: genericPrint, + embed, + insertPragma, + massageAstNode: clean + }; + } + }); + var require_options3 = __commonJS22({ + "src/language-css/options.js"(exports2, module22) { + "use strict"; + var commonOptions = require_common_options(); + module22.exports = { + singleQuote: commonOptions.singleQuote + }; + } + }); + var require_parsers2 = __commonJS22({ + "src/language-css/parsers.js"(exports2, module22) { + "use strict"; + module22.exports = { + get css() { + return require_parser_postcss().parsers.css; + }, + get less() { + return require_parser_postcss().parsers.less; + }, + get scss() { + return require_parser_postcss().parsers.scss; + } + }; + } + }); + var require_CSS = __commonJS22({ + "node_modules/linguist-languages/data/CSS.json"(exports2, module22) { + module22.exports = { + name: "CSS", + type: "markup", + tmScope: "source.css", + aceMode: "css", + codemirrorMode: "css", + codemirrorMimeType: "text/css", + color: "#563d7c", + extensions: [".css"], + languageId: 50 + }; + } + }); + var require_PostCSS = __commonJS22({ + "node_modules/linguist-languages/data/PostCSS.json"(exports2, module22) { + module22.exports = { + name: "PostCSS", + type: "markup", + color: "#dc3a0c", + tmScope: "source.postcss", + group: "CSS", + extensions: [".pcss", ".postcss"], + aceMode: "text", + languageId: 262764437 + }; + } + }); + var require_Less = __commonJS22({ + "node_modules/linguist-languages/data/Less.json"(exports2, module22) { + module22.exports = { + name: "Less", + type: "markup", + color: "#1d365d", + aliases: ["less-css"], + extensions: [".less"], + tmScope: "source.css.less", + aceMode: "less", + codemirrorMode: "css", + codemirrorMimeType: "text/css", + languageId: 198 + }; + } + }); + var require_SCSS = __commonJS22({ + "node_modules/linguist-languages/data/SCSS.json"(exports2, module22) { + module22.exports = { + name: "SCSS", + type: "markup", + color: "#c6538c", + tmScope: "source.css.scss", + aceMode: "scss", + codemirrorMode: "css", + codemirrorMimeType: "text/x-scss", + extensions: [".scss"], + languageId: 329 + }; + } + }); + var require_language_css = __commonJS22({ + "src/language-css/index.js"(exports2, module22) { + "use strict"; + var createLanguage = require_create_language(); + var printer = require_printer_postcss(); + var options = require_options3(); + var parsers = require_parsers2(); + var languages = [createLanguage(require_CSS(), (data) => ({ + since: "1.4.0", + parsers: ["css"], + vscodeLanguageIds: ["css"], + extensions: [...data.extensions, ".wxss"] + })), createLanguage(require_PostCSS(), () => ({ + since: "1.4.0", + parsers: ["css"], + vscodeLanguageIds: ["postcss"] + })), createLanguage(require_Less(), () => ({ + since: "1.4.0", + parsers: ["less"], + vscodeLanguageIds: ["less"] + })), createLanguage(require_SCSS(), () => ({ + since: "1.4.0", + parsers: ["scss"], + vscodeLanguageIds: ["scss"] + }))]; + var printers = { + postcss: printer + }; + module22.exports = { + languages, + options, + printers, + parsers + }; + } + }); + var require_loc3 = __commonJS22({ + "src/language-handlebars/loc.js"(exports2, module22) { + "use strict"; + function locStart(node) { + return node.loc.start.offset; + } + function locEnd(node) { + return node.loc.end.offset; + } + module22.exports = { + locStart, + locEnd + }; + } + }); + var require_clean3 = __commonJS22({ + "src/language-handlebars/clean.js"(exports2, module22) { + "use strict"; + function clean(ast, newNode) { + if (ast.type === "TextNode") { + const trimmed = ast.chars.trim(); + if (!trimmed) { + return null; + } + newNode.chars = trimmed.replace(/[\t\n\f\r ]+/g, " "); + } + if (ast.type === "AttrNode" && ast.name.toLowerCase() === "class") { + delete newNode.value; + } + } + clean.ignoredProperties = /* @__PURE__ */ new Set(["loc", "selfClosing"]); + module22.exports = clean; + } + }); + var require_html_void_elements = __commonJS22({ + "vendors/html-void-elements.json"(exports2, module22) { + module22.exports = { + htmlVoidElements: ["area", "base", "basefont", "bgsound", "br", "col", "command", "embed", "frame", "hr", "image", "img", "input", "isindex", "keygen", "link", "menuitem", "meta", "nextid", "param", "source", "track", "wbr"] + }; + } + }); + var require_utils9 = __commonJS22({ + "src/language-handlebars/utils.js"(exports2, module22) { + "use strict"; + var { + htmlVoidElements + } = require_html_void_elements(); + var getLast = require_get_last(); + function isLastNodeOfSiblings(path2) { + const node = path2.getValue(); + const parentNode = path2.getParentNode(0); + if (isParentOfSomeType(path2, ["ElementNode"]) && getLast(parentNode.children) === node) { + return true; + } + if (isParentOfSomeType(path2, ["Block"]) && getLast(parentNode.body) === node) { + return true; + } + return false; + } + function isUppercase(string) { + return string.toUpperCase() === string; + } + function isGlimmerComponent(node) { + return isNodeOfSomeType(node, ["ElementNode"]) && typeof node.tag === "string" && !node.tag.startsWith(":") && (isUppercase(node.tag[0]) || node.tag.includes(".")); + } + var voidTags = new Set(htmlVoidElements); + function isVoid(node) { + return voidTags.has(node.tag) || isGlimmerComponent(node) && node.children.every((node2) => isWhitespaceNode(node2)); + } + function isWhitespaceNode(node) { + return isNodeOfSomeType(node, ["TextNode"]) && !/\S/.test(node.chars); + } + function isNodeOfSomeType(node, types) { + return node && types.includes(node.type); + } + function isParentOfSomeType(path2, types) { + const parentNode = path2.getParentNode(0); + return isNodeOfSomeType(parentNode, types); + } + function isPreviousNodeOfSomeType(path2, types) { + const previousNode = getPreviousNode(path2); + return isNodeOfSomeType(previousNode, types); + } + function isNextNodeOfSomeType(path2, types) { + const nextNode = getNextNode(path2); + return isNodeOfSomeType(nextNode, types); + } + function getSiblingNode(path2, offset) { + var _path$getParentNode2, _ref7, _ref8, _parentNode$children; + const node = path2.getValue(); + const parentNode = (_path$getParentNode2 = path2.getParentNode(0)) !== null && _path$getParentNode2 !== void 0 ? _path$getParentNode2 : {}; + const children = (_ref7 = (_ref8 = (_parentNode$children = parentNode.children) !== null && _parentNode$children !== void 0 ? _parentNode$children : parentNode.body) !== null && _ref8 !== void 0 ? _ref8 : parentNode.parts) !== null && _ref7 !== void 0 ? _ref7 : []; + const index = children.indexOf(node); + return index !== -1 && children[index + offset]; + } + function getPreviousNode(path2, lookBack = 1) { + return getSiblingNode(path2, -lookBack); + } + function getNextNode(path2) { + return getSiblingNode(path2, 1); + } + function isPrettierIgnoreNode(node) { + return isNodeOfSomeType(node, ["MustacheCommentStatement"]) && typeof node.value === "string" && node.value.trim() === "prettier-ignore"; + } + function hasPrettierIgnore(path2) { + const node = path2.getValue(); + const previousPreviousNode = getPreviousNode(path2, 2); + return isPrettierIgnoreNode(node) || isPrettierIgnoreNode(previousPreviousNode); + } + module22.exports = { + getNextNode, + getPreviousNode, + hasPrettierIgnore, + isLastNodeOfSiblings, + isNextNodeOfSomeType, + isNodeOfSomeType, + isParentOfSomeType, + isPreviousNodeOfSomeType, + isVoid, + isWhitespaceNode + }; + } + }); + var require_printer_glimmer = __commonJS22({ + "src/language-handlebars/printer-glimmer.js"(exports2, module22) { + "use strict"; + var { + builders: { + dedent, + fill, + group, + hardline, + ifBreak, + indent, + join, + line, + softline + }, + utils: { + getDocParts, + replaceTextEndOfLine + } + } = require_doc(); + var { + getPreferredQuote, + isNonEmptyArray + } = require_util2(); + var { + locStart, + locEnd + } = require_loc3(); + var clean = require_clean3(); + var { + getNextNode, + getPreviousNode, + hasPrettierIgnore, + isLastNodeOfSiblings, + isNextNodeOfSomeType, + isNodeOfSomeType, + isParentOfSomeType, + isPreviousNodeOfSomeType, + isVoid, + isWhitespaceNode + } = require_utils9(); + var NEWLINES_TO_PRESERVE_MAX = 2; + function print(path2, options, print2) { + const node = path2.getValue(); + if (!node) { + return ""; + } + if (hasPrettierIgnore(path2)) { + return options.originalText.slice(locStart(node), locEnd(node)); + } + const favoriteQuote = options.singleQuote ? "'" : '"'; + switch (node.type) { + case "Block": + case "Program": + case "Template": { + return group(path2.map(print2, "body")); + } + case "ElementNode": { + const startingTag = group(printStartingTag(path2, print2)); + const escapeNextElementNode = options.htmlWhitespaceSensitivity === "ignore" && isNextNodeOfSomeType(path2, ["ElementNode"]) ? softline : ""; + if (isVoid(node)) { + return [startingTag, escapeNextElementNode]; + } + const endingTag = [""]; + if (node.children.length === 0) { + return [startingTag, indent(endingTag), escapeNextElementNode]; + } + if (options.htmlWhitespaceSensitivity === "ignore") { + return [startingTag, indent(printChildren(path2, options, print2)), hardline, indent(endingTag), escapeNextElementNode]; + } + return [startingTag, indent(group(printChildren(path2, options, print2))), indent(endingTag), escapeNextElementNode]; + } + case "BlockStatement": { + const pp = path2.getParentNode(1); + const isElseIf = pp && pp.inverse && pp.inverse.body.length === 1 && pp.inverse.body[0] === node && pp.inverse.body[0].path.parts[0] === "if"; + if (isElseIf) { + return [printElseIfBlock(path2, print2), printProgram(path2, print2, options), printInverse(path2, print2, options)]; + } + return [printOpenBlock(path2, print2), group([printProgram(path2, print2, options), printInverse(path2, print2, options), printCloseBlock(path2, print2, options)])]; + } + case "ElementModifierStatement": { + return group(["{{", printPathAndParams(path2, print2), "}}"]); + } + case "MustacheStatement": { + return group([printOpeningMustache(node), printPathAndParams(path2, print2), printClosingMustache(node)]); + } + case "SubExpression": { + return group(["(", printSubExpressionPathAndParams(path2, print2), softline, ")"]); + } + case "AttrNode": { + const isText = node.value.type === "TextNode"; + const isEmptyText = isText && node.value.chars === ""; + if (isEmptyText && locStart(node.value) === locEnd(node.value)) { + return node.name; + } + const quote = isText ? getPreferredQuote(node.value.chars, favoriteQuote).quote : node.value.type === "ConcatStatement" ? getPreferredQuote(node.value.parts.filter((part) => part.type === "TextNode").map((part) => part.chars).join(""), favoriteQuote).quote : ""; + const valueDoc = print2("value"); + return [node.name, "=", quote, node.name === "class" && quote ? group(indent(valueDoc)) : valueDoc, quote]; + } + case "ConcatStatement": { + return path2.map(print2, "parts"); + } + case "Hash": { + return join(line, path2.map(print2, "pairs")); + } + case "HashPair": { + return [node.key, "=", print2("value")]; + } + case "TextNode": { + let text = node.chars.replace(/{{/g, "\\{{"); + const attrName = getCurrentAttributeName(path2); + if (attrName) { + if (attrName === "class") { + const formattedClasses = text.trim().split(/\s+/).join(" "); + let leadingSpace2 = false; + let trailingSpace2 = false; + if (isParentOfSomeType(path2, ["ConcatStatement"])) { + if (isPreviousNodeOfSomeType(path2, ["MustacheStatement"]) && /^\s/.test(text)) { + leadingSpace2 = true; + } + if (isNextNodeOfSomeType(path2, ["MustacheStatement"]) && /\s$/.test(text) && formattedClasses !== "") { + trailingSpace2 = true; + } + } + return [leadingSpace2 ? line : "", formattedClasses, trailingSpace2 ? line : ""]; + } + return replaceTextEndOfLine(text); + } + const whitespacesOnlyRE = /^[\t\n\f\r ]*$/; + const isWhitespaceOnly = whitespacesOnlyRE.test(text); + const isFirstElement = !getPreviousNode(path2); + const isLastElement = !getNextNode(path2); + if (options.htmlWhitespaceSensitivity !== "ignore") { + const leadingWhitespacesRE = /^[\t\n\f\r ]*/; + const trailingWhitespacesRE = /[\t\n\f\r ]*$/; + const shouldTrimTrailingNewlines = isLastElement && isParentOfSomeType(path2, ["Template"]); + const shouldTrimLeadingNewlines = isFirstElement && isParentOfSomeType(path2, ["Template"]); + if (isWhitespaceOnly) { + if (shouldTrimLeadingNewlines || shouldTrimTrailingNewlines) { + return ""; + } + let breaks = [line]; + const newlines = countNewLines(text); + if (newlines) { + breaks = generateHardlines(newlines); + } + if (isLastNodeOfSiblings(path2)) { + breaks = breaks.map((newline) => dedent(newline)); + } + return breaks; + } + const [lead] = text.match(leadingWhitespacesRE); + const [tail] = text.match(trailingWhitespacesRE); + let leadBreaks = []; + if (lead) { + leadBreaks = [line]; + const leadingNewlines = countNewLines(lead); + if (leadingNewlines) { + leadBreaks = generateHardlines(leadingNewlines); + } + text = text.replace(leadingWhitespacesRE, ""); + } + let trailBreaks = []; + if (tail) { + if (!shouldTrimTrailingNewlines) { + trailBreaks = [line]; + const trailingNewlines = countNewLines(tail); + if (trailingNewlines) { + trailBreaks = generateHardlines(trailingNewlines); + } + if (isLastNodeOfSiblings(path2)) { + trailBreaks = trailBreaks.map((hardline2) => dedent(hardline2)); + } + } + text = text.replace(trailingWhitespacesRE, ""); + } + return [...leadBreaks, fill(getTextValueParts(text)), ...trailBreaks]; + } + const lineBreaksCount = countNewLines(text); + let leadingLineBreaksCount = countLeadingNewLines(text); + let trailingLineBreaksCount = countTrailingNewLines(text); + if ((isFirstElement || isLastElement) && isWhitespaceOnly && isParentOfSomeType(path2, ["Block", "ElementNode", "Template"])) { + return ""; + } + if (isWhitespaceOnly && lineBreaksCount) { + leadingLineBreaksCount = Math.min(lineBreaksCount, NEWLINES_TO_PRESERVE_MAX); + trailingLineBreaksCount = 0; + } else { + if (isNextNodeOfSomeType(path2, ["BlockStatement", "ElementNode"])) { + trailingLineBreaksCount = Math.max(trailingLineBreaksCount, 1); + } + if (isPreviousNodeOfSomeType(path2, ["BlockStatement", "ElementNode"])) { + leadingLineBreaksCount = Math.max(leadingLineBreaksCount, 1); + } + } + let leadingSpace = ""; + let trailingSpace = ""; + if (trailingLineBreaksCount === 0 && isNextNodeOfSomeType(path2, ["MustacheStatement"])) { + trailingSpace = " "; + } + if (leadingLineBreaksCount === 0 && isPreviousNodeOfSomeType(path2, ["MustacheStatement"])) { + leadingSpace = " "; + } + if (isFirstElement) { + leadingLineBreaksCount = 0; + leadingSpace = ""; + } + if (isLastElement) { + trailingLineBreaksCount = 0; + trailingSpace = ""; + } + text = text.replace(/^[\t\n\f\r ]+/g, leadingSpace).replace(/[\t\n\f\r ]+$/, trailingSpace); + return [...generateHardlines(leadingLineBreaksCount), fill(getTextValueParts(text)), ...generateHardlines(trailingLineBreaksCount)]; + } + case "MustacheCommentStatement": { + const start = locStart(node); + const end = locEnd(node); + const isLeftWhiteSpaceSensitive = options.originalText.charAt(start + 2) === "~"; + const isRightWhitespaceSensitive = options.originalText.charAt(end - 3) === "~"; + const dashes = node.value.includes("}}") ? "--" : ""; + return ["{{", isLeftWhiteSpaceSensitive ? "~" : "", "!", dashes, node.value, dashes, isRightWhitespaceSensitive ? "~" : "", "}}"]; + } + case "PathExpression": { + return node.original; + } + case "BooleanLiteral": { + return String(node.value); + } + case "CommentStatement": { + return [""]; + } + case "StringLiteral": { + if (needsOppositeQuote(path2)) { + const printFavoriteQuote = !options.singleQuote ? "'" : '"'; + return printStringLiteral(node.value, printFavoriteQuote); + } + return printStringLiteral(node.value, favoriteQuote); + } + case "NumberLiteral": { + return String(node.value); + } + case "UndefinedLiteral": { + return "undefined"; + } + case "NullLiteral": { + return "null"; + } + default: + throw new Error("unknown glimmer type: " + JSON.stringify(node.type)); + } + } + function sortByLoc(a, b) { + return locStart(a) - locStart(b); + } + function printStartingTag(path2, print2) { + const node = path2.getValue(); + const types = ["attributes", "modifiers", "comments"].filter((property) => isNonEmptyArray(node[property])); + const attributes = types.flatMap((type2) => node[type2]).sort(sortByLoc); + for (const attributeType of types) { + path2.each((attributePath) => { + const index = attributes.indexOf(attributePath.getValue()); + attributes.splice(index, 1, [line, print2()]); + }, attributeType); + } + if (isNonEmptyArray(node.blockParams)) { + attributes.push(line, printBlockParams(node)); + } + return ["<", node.tag, indent(attributes), printStartingTagEndMarker(node)]; + } + function printChildren(path2, options, print2) { + const node = path2.getValue(); + const isEmpty = node.children.every((node2) => isWhitespaceNode(node2)); + if (options.htmlWhitespaceSensitivity === "ignore" && isEmpty) { + return ""; + } + return path2.map((childPath, childIndex) => { + const printedChild = print2(); + if (childIndex === 0 && options.htmlWhitespaceSensitivity === "ignore") { + return [softline, printedChild]; + } + return printedChild; + }, "children"); + } + function printStartingTagEndMarker(node) { + if (isVoid(node)) { + return ifBreak([softline, "/>"], [" />", softline]); + } + return ifBreak([softline, ">"], ">"); + } + function printOpeningMustache(node) { + const mustache = node.escaped === false ? "{{{" : "{{"; + const strip = node.strip && node.strip.open ? "~" : ""; + return [mustache, strip]; + } + function printClosingMustache(node) { + const mustache = node.escaped === false ? "}}}" : "}}"; + const strip = node.strip && node.strip.close ? "~" : ""; + return [strip, mustache]; + } + function printOpeningBlockOpeningMustache(node) { + const opening = printOpeningMustache(node); + const strip = node.openStrip.open ? "~" : ""; + return [opening, strip, "#"]; + } + function printOpeningBlockClosingMustache(node) { + const closing = printClosingMustache(node); + const strip = node.openStrip.close ? "~" : ""; + return [strip, closing]; + } + function printClosingBlockOpeningMustache(node) { + const opening = printOpeningMustache(node); + const strip = node.closeStrip.open ? "~" : ""; + return [opening, strip, "/"]; + } + function printClosingBlockClosingMustache(node) { + const closing = printClosingMustache(node); + const strip = node.closeStrip.close ? "~" : ""; + return [strip, closing]; + } + function printInverseBlockOpeningMustache(node) { + const opening = printOpeningMustache(node); + const strip = node.inverseStrip.open ? "~" : ""; + return [opening, strip]; + } + function printInverseBlockClosingMustache(node) { + const closing = printClosingMustache(node); + const strip = node.inverseStrip.close ? "~" : ""; + return [strip, closing]; + } + function printOpenBlock(path2, print2) { + const node = path2.getValue(); + const openingMustache = printOpeningBlockOpeningMustache(node); + const closingMustache = printOpeningBlockClosingMustache(node); + const attributes = [printPath(path2, print2)]; + const params = printParams(path2, print2); + if (params) { + attributes.push(line, params); + } + if (isNonEmptyArray(node.program.blockParams)) { + const block = printBlockParams(node.program); + attributes.push(line, block); + } + return group([openingMustache, indent(attributes), softline, closingMustache]); + } + function printElseBlock(node, options) { + return [options.htmlWhitespaceSensitivity === "ignore" ? hardline : "", printInverseBlockOpeningMustache(node), "else", printInverseBlockClosingMustache(node)]; + } + function printElseIfBlock(path2, print2) { + const parentNode = path2.getParentNode(1); + return [printInverseBlockOpeningMustache(parentNode), "else if ", printParams(path2, print2), printInverseBlockClosingMustache(parentNode)]; + } + function printCloseBlock(path2, print2, options) { + const node = path2.getValue(); + if (options.htmlWhitespaceSensitivity === "ignore") { + const escape = blockStatementHasOnlyWhitespaceInProgram(node) ? softline : hardline; + return [escape, printClosingBlockOpeningMustache(node), print2("path"), printClosingBlockClosingMustache(node)]; + } + return [printClosingBlockOpeningMustache(node), print2("path"), printClosingBlockClosingMustache(node)]; + } + function blockStatementHasOnlyWhitespaceInProgram(node) { + return isNodeOfSomeType(node, ["BlockStatement"]) && node.program.body.every((node2) => isWhitespaceNode(node2)); + } + function blockStatementHasElseIf(node) { + return blockStatementHasElse(node) && node.inverse.body.length === 1 && isNodeOfSomeType(node.inverse.body[0], ["BlockStatement"]) && node.inverse.body[0].path.parts[0] === "if"; + } + function blockStatementHasElse(node) { + return isNodeOfSomeType(node, ["BlockStatement"]) && node.inverse; + } + function printProgram(path2, print2, options) { + const node = path2.getValue(); + if (blockStatementHasOnlyWhitespaceInProgram(node)) { + return ""; + } + const program = print2("program"); + if (options.htmlWhitespaceSensitivity === "ignore") { + return indent([hardline, program]); + } + return indent(program); + } + function printInverse(path2, print2, options) { + const node = path2.getValue(); + const inverse = print2("inverse"); + const printed = options.htmlWhitespaceSensitivity === "ignore" ? [hardline, inverse] : inverse; + if (blockStatementHasElseIf(node)) { + return printed; + } + if (blockStatementHasElse(node)) { + return [printElseBlock(node, options), indent(printed)]; + } + return ""; + } + function getTextValueParts(value) { + return getDocParts(join(line, splitByHtmlWhitespace(value))); + } + function splitByHtmlWhitespace(string) { + return string.split(/[\t\n\f\r ]+/); + } + function getCurrentAttributeName(path2) { + for (let depth = 0; depth < 2; depth++) { + const parentNode = path2.getParentNode(depth); + if (parentNode && parentNode.type === "AttrNode") { + return parentNode.name.toLowerCase(); + } + } + } + function countNewLines(string) { + string = typeof string === "string" ? string : ""; + return string.split("\n").length - 1; + } + function countLeadingNewLines(string) { + string = typeof string === "string" ? string : ""; + const newLines = (string.match(/^([^\S\n\r]*[\n\r])+/g) || [])[0] || ""; + return countNewLines(newLines); + } + function countTrailingNewLines(string) { + string = typeof string === "string" ? string : ""; + const newLines = (string.match(/([\n\r][^\S\n\r]*)+$/g) || [])[0] || ""; + return countNewLines(newLines); + } + function generateHardlines(number = 0) { + return Array.from({ + length: Math.min(number, NEWLINES_TO_PRESERVE_MAX) + }).fill(hardline); + } + function printStringLiteral(stringLiteral, favoriteQuote) { + const { + quote, + regex + } = getPreferredQuote(stringLiteral, favoriteQuote); + return [quote, stringLiteral.replace(regex, `\\${quote}`), quote]; + } + function needsOppositeQuote(path2) { + let index = 0; + let parentNode = path2.getParentNode(index); + while (parentNode && isNodeOfSomeType(parentNode, ["SubExpression"])) { + index++; + parentNode = path2.getParentNode(index); + } + if (parentNode && isNodeOfSomeType(path2.getParentNode(index + 1), ["ConcatStatement"]) && isNodeOfSomeType(path2.getParentNode(index + 2), ["AttrNode"])) { + return true; + } + return false; + } + function printSubExpressionPathAndParams(path2, print2) { + const printed = printPath(path2, print2); + const params = printParams(path2, print2); + if (!params) { + return printed; + } + return indent([printed, line, group(params)]); + } + function printPathAndParams(path2, print2) { + const p = printPath(path2, print2); + const params = printParams(path2, print2); + if (!params) { + return p; + } + return [indent([p, line, params]), softline]; + } + function printPath(path2, print2) { + return print2("path"); + } + function printParams(path2, print2) { + const node = path2.getValue(); + const parts = []; + if (node.params.length > 0) { + const params = path2.map(print2, "params"); + parts.push(...params); + } + if (node.hash && node.hash.pairs.length > 0) { + const hash = print2("hash"); + parts.push(hash); + } + if (parts.length === 0) { + return ""; + } + return join(line, parts); + } + function printBlockParams(node) { + return ["as |", node.blockParams.join(" "), "|"]; + } + module22.exports = { + print, + massageAstNode: clean + }; + } + }); + var require_parsers3 = __commonJS22({ + "src/language-handlebars/parsers.js"(exports2, module22) { + "use strict"; + module22.exports = { + get glimmer() { + return require_parser_glimmer().parsers.glimmer; + } + }; + } + }); + var require_Handlebars = __commonJS22({ + "node_modules/linguist-languages/data/Handlebars.json"(exports2, module22) { + module22.exports = { + name: "Handlebars", + type: "markup", + color: "#f7931e", + aliases: ["hbs", "htmlbars"], + extensions: [".handlebars", ".hbs"], + tmScope: "text.html.handlebars", + aceMode: "handlebars", + languageId: 155 + }; + } + }); + var require_language_handlebars = __commonJS22({ + "src/language-handlebars/index.js"(exports2, module22) { + "use strict"; + var createLanguage = require_create_language(); + var printer = require_printer_glimmer(); + var parsers = require_parsers3(); + var languages = [createLanguage(require_Handlebars(), () => ({ + since: "2.3.0", + parsers: ["glimmer"], + vscodeLanguageIds: ["handlebars"] + }))]; + var printers = { + glimmer: printer + }; + module22.exports = { + languages, + printers, + parsers + }; + } + }); + var require_pragma3 = __commonJS22({ + "src/language-graphql/pragma.js"(exports2, module22) { + "use strict"; + function hasPragma(text) { + return /^\s*#[^\S\n]*@(?:format|prettier)\s*(?:\n|$)/.test(text); + } + function insertPragma(text) { + return "# @format\n\n" + text; + } + module22.exports = { + hasPragma, + insertPragma + }; + } + }); + var require_loc4 = __commonJS22({ + "src/language-graphql/loc.js"(exports2, module22) { + "use strict"; + function locStart(node) { + if (typeof node.start === "number") { + return node.start; + } + return node.loc && node.loc.start; + } + function locEnd(node) { + if (typeof node.end === "number") { + return node.end; + } + return node.loc && node.loc.end; + } + module22.exports = { + locStart, + locEnd + }; + } + }); + var require_printer_graphql = __commonJS22({ + "src/language-graphql/printer-graphql.js"(exports2, module22) { + "use strict"; + var { + builders: { + join, + hardline, + line, + softline, + group, + indent, + ifBreak + } + } = require_doc(); + var { + isNextLineEmpty, + isNonEmptyArray + } = require_util2(); + var { + insertPragma + } = require_pragma3(); + var { + locStart, + locEnd + } = require_loc4(); + function genericPrint(path2, options, print) { + const node = path2.getValue(); + if (!node) { + return ""; + } + if (typeof node === "string") { + return node; + } + switch (node.kind) { + case "Document": { + const parts = []; + path2.each((pathChild, index, definitions) => { + parts.push(print()); + if (index !== definitions.length - 1) { + parts.push(hardline); + if (isNextLineEmpty(options.originalText, pathChild.getValue(), locEnd)) { + parts.push(hardline); + } + } + }, "definitions"); + return [...parts, hardline]; + } + case "OperationDefinition": { + const hasOperation = options.originalText[locStart(node)] !== "{"; + const hasName = Boolean(node.name); + return [hasOperation ? node.operation : "", hasOperation && hasName ? [" ", print("name")] : "", hasOperation && !hasName && isNonEmptyArray(node.variableDefinitions) ? " " : "", isNonEmptyArray(node.variableDefinitions) ? group(["(", indent([softline, join([ifBreak("", ", "), softline], path2.map(print, "variableDefinitions"))]), softline, ")"]) : "", printDirectives(path2, print, node), node.selectionSet ? !hasOperation && !hasName ? "" : " " : "", print("selectionSet")]; + } + case "FragmentDefinition": { + return ["fragment ", print("name"), isNonEmptyArray(node.variableDefinitions) ? group(["(", indent([softline, join([ifBreak("", ", "), softline], path2.map(print, "variableDefinitions"))]), softline, ")"]) : "", " on ", print("typeCondition"), printDirectives(path2, print, node), " ", print("selectionSet")]; + } + case "SelectionSet": { + return ["{", indent([hardline, join(hardline, printSequence(path2, options, print, "selections"))]), hardline, "}"]; + } + case "Field": { + return group([node.alias ? [print("alias"), ": "] : "", print("name"), node.arguments.length > 0 ? group(["(", indent([softline, join([ifBreak("", ", "), softline], printSequence(path2, options, print, "arguments"))]), softline, ")"]) : "", printDirectives(path2, print, node), node.selectionSet ? " " : "", print("selectionSet")]); + } + case "Name": { + return node.value; + } + case "StringValue": { + if (node.block) { + const lines = node.value.replace(/"""/g, "\\$&").split("\n"); + if (lines.length === 1) { + lines[0] = lines[0].trim(); + } + if (lines.every((line2) => line2 === "")) { + lines.length = 0; + } + return join(hardline, ['"""', ...lines, '"""']); + } + return ['"', node.value.replace(/["\\]/g, "\\$&").replace(/\n/g, "\\n"), '"']; + } + case "IntValue": + case "FloatValue": + case "EnumValue": { + return node.value; + } + case "BooleanValue": { + return node.value ? "true" : "false"; + } + case "NullValue": { + return "null"; + } + case "Variable": { + return ["$", print("name")]; + } + case "ListValue": { + return group(["[", indent([softline, join([ifBreak("", ", "), softline], path2.map(print, "values"))]), softline, "]"]); + } + case "ObjectValue": { + return group(["{", options.bracketSpacing && node.fields.length > 0 ? " " : "", indent([softline, join([ifBreak("", ", "), softline], path2.map(print, "fields"))]), softline, ifBreak("", options.bracketSpacing && node.fields.length > 0 ? " " : ""), "}"]); + } + case "ObjectField": + case "Argument": { + return [print("name"), ": ", print("value")]; + } + case "Directive": { + return ["@", print("name"), node.arguments.length > 0 ? group(["(", indent([softline, join([ifBreak("", ", "), softline], printSequence(path2, options, print, "arguments"))]), softline, ")"]) : ""]; + } + case "NamedType": { + return print("name"); + } + case "VariableDefinition": { + return [print("variable"), ": ", print("type"), node.defaultValue ? [" = ", print("defaultValue")] : "", printDirectives(path2, print, node)]; + } + case "ObjectTypeExtension": + case "ObjectTypeDefinition": { + return [print("description"), node.description ? hardline : "", node.kind === "ObjectTypeExtension" ? "extend " : "", "type ", print("name"), node.interfaces.length > 0 ? [" implements ", ...printInterfaces(path2, options, print)] : "", printDirectives(path2, print, node), node.fields.length > 0 ? [" {", indent([hardline, join(hardline, printSequence(path2, options, print, "fields"))]), hardline, "}"] : ""]; + } + case "FieldDefinition": { + return [print("description"), node.description ? hardline : "", print("name"), node.arguments.length > 0 ? group(["(", indent([softline, join([ifBreak("", ", "), softline], printSequence(path2, options, print, "arguments"))]), softline, ")"]) : "", ": ", print("type"), printDirectives(path2, print, node)]; + } + case "DirectiveDefinition": { + return [print("description"), node.description ? hardline : "", "directive ", "@", print("name"), node.arguments.length > 0 ? group(["(", indent([softline, join([ifBreak("", ", "), softline], printSequence(path2, options, print, "arguments"))]), softline, ")"]) : "", node.repeatable ? " repeatable" : "", " on ", join(" | ", path2.map(print, "locations"))]; + } + case "EnumTypeExtension": + case "EnumTypeDefinition": { + return [print("description"), node.description ? hardline : "", node.kind === "EnumTypeExtension" ? "extend " : "", "enum ", print("name"), printDirectives(path2, print, node), node.values.length > 0 ? [" {", indent([hardline, join(hardline, printSequence(path2, options, print, "values"))]), hardline, "}"] : ""]; + } + case "EnumValueDefinition": { + return [print("description"), node.description ? hardline : "", print("name"), printDirectives(path2, print, node)]; + } + case "InputValueDefinition": { + return [print("description"), node.description ? node.description.block ? hardline : line : "", print("name"), ": ", print("type"), node.defaultValue ? [" = ", print("defaultValue")] : "", printDirectives(path2, print, node)]; + } + case "InputObjectTypeExtension": + case "InputObjectTypeDefinition": { + return [print("description"), node.description ? hardline : "", node.kind === "InputObjectTypeExtension" ? "extend " : "", "input ", print("name"), printDirectives(path2, print, node), node.fields.length > 0 ? [" {", indent([hardline, join(hardline, printSequence(path2, options, print, "fields"))]), hardline, "}"] : ""]; + } + case "SchemaExtension": { + return ["extend schema", printDirectives(path2, print, node), ...node.operationTypes.length > 0 ? [" {", indent([hardline, join(hardline, printSequence(path2, options, print, "operationTypes"))]), hardline, "}"] : []]; + } + case "SchemaDefinition": { + return [print("description"), node.description ? hardline : "", "schema", printDirectives(path2, print, node), " {", node.operationTypes.length > 0 ? indent([hardline, join(hardline, printSequence(path2, options, print, "operationTypes"))]) : "", hardline, "}"]; + } + case "OperationTypeDefinition": { + return [print("operation"), ": ", print("type")]; + } + case "InterfaceTypeExtension": + case "InterfaceTypeDefinition": { + return [print("description"), node.description ? hardline : "", node.kind === "InterfaceTypeExtension" ? "extend " : "", "interface ", print("name"), node.interfaces.length > 0 ? [" implements ", ...printInterfaces(path2, options, print)] : "", printDirectives(path2, print, node), node.fields.length > 0 ? [" {", indent([hardline, join(hardline, printSequence(path2, options, print, "fields"))]), hardline, "}"] : ""]; + } + case "FragmentSpread": { + return ["...", print("name"), printDirectives(path2, print, node)]; + } + case "InlineFragment": { + return ["...", node.typeCondition ? [" on ", print("typeCondition")] : "", printDirectives(path2, print, node), " ", print("selectionSet")]; + } + case "UnionTypeExtension": + case "UnionTypeDefinition": { + return group([print("description"), node.description ? hardline : "", group([node.kind === "UnionTypeExtension" ? "extend " : "", "union ", print("name"), printDirectives(path2, print, node), node.types.length > 0 ? [" =", ifBreak("", " "), indent([ifBreak([line, " "]), join([line, "| "], path2.map(print, "types"))])] : ""])]); + } + case "ScalarTypeExtension": + case "ScalarTypeDefinition": { + return [print("description"), node.description ? hardline : "", node.kind === "ScalarTypeExtension" ? "extend " : "", "scalar ", print("name"), printDirectives(path2, print, node)]; + } + case "NonNullType": { + return [print("type"), "!"]; + } + case "ListType": { + return ["[", print("type"), "]"]; + } + default: + throw new Error("unknown graphql type: " + JSON.stringify(node.kind)); + } + } + function printDirectives(path2, print, node) { + if (node.directives.length === 0) { + return ""; + } + const printed = join(line, path2.map(print, "directives")); + if (node.kind === "FragmentDefinition" || node.kind === "OperationDefinition") { + return group([line, printed]); + } + return [" ", group(indent([softline, printed]))]; + } + function printSequence(path2, options, print, property) { + return path2.map((path22, index, sequence) => { + const printed = print(); + if (index < sequence.length - 1 && isNextLineEmpty(options.originalText, path22.getValue(), locEnd)) { + return [printed, hardline]; + } + return printed; + }, property); + } + function canAttachComment(node) { + return node.kind && node.kind !== "Comment"; + } + function printComment(commentPath) { + const comment = commentPath.getValue(); + if (comment.kind === "Comment") { + return "#" + comment.value.trimEnd(); + } + throw new Error("Not a comment: " + JSON.stringify(comment)); + } + function printInterfaces(path2, options, print) { + const node = path2.getNode(); + const parts = []; + const { + interfaces + } = node; + const printed = path2.map((node2) => print(node2), "interfaces"); + for (let index = 0; index < interfaces.length; index++) { + const interfaceNode = interfaces[index]; + parts.push(printed[index]); + const nextInterfaceNode = interfaces[index + 1]; + if (nextInterfaceNode) { + const textBetween = options.originalText.slice(interfaceNode.loc.end, nextInterfaceNode.loc.start); + const hasComment = textBetween.includes("#"); + const separator = textBetween.replace(/#.*/g, "").trim(); + parts.push(separator === "," ? "," : " &", hasComment ? line : " "); + } + } + return parts; + } + function clean(node, newNode) { + if (node.kind === "StringValue" && node.block && !node.value.includes("\n")) { + newNode.value = newNode.value.trim(); + } + } + clean.ignoredProperties = /* @__PURE__ */ new Set(["loc", "comments"]); + function hasPrettierIgnore(path2) { + var _node$comments; + const node = path2.getValue(); + return node === null || node === void 0 ? void 0 : (_node$comments = node.comments) === null || _node$comments === void 0 ? void 0 : _node$comments.some((comment) => comment.value.trim() === "prettier-ignore"); + } + module22.exports = { + print: genericPrint, + massageAstNode: clean, + hasPrettierIgnore, + insertPragma, + printComment, + canAttachComment + }; + } + }); + var require_options4 = __commonJS22({ + "src/language-graphql/options.js"(exports2, module22) { + "use strict"; + var commonOptions = require_common_options(); + module22.exports = { + bracketSpacing: commonOptions.bracketSpacing + }; + } + }); + var require_parsers4 = __commonJS22({ + "src/language-graphql/parsers.js"(exports2, module22) { + "use strict"; + module22.exports = { + get graphql() { + return require_parser_graphql().parsers.graphql; + } + }; + } + }); + var require_GraphQL = __commonJS22({ + "node_modules/linguist-languages/data/GraphQL.json"(exports2, module22) { + module22.exports = { + name: "GraphQL", + type: "data", + color: "#e10098", + extensions: [".graphql", ".gql", ".graphqls"], + tmScope: "source.graphql", + aceMode: "text", + languageId: 139 + }; + } + }); + var require_language_graphql = __commonJS22({ + "src/language-graphql/index.js"(exports2, module22) { + "use strict"; + var createLanguage = require_create_language(); + var printer = require_printer_graphql(); + var options = require_options4(); + var parsers = require_parsers4(); + var languages = [createLanguage(require_GraphQL(), () => ({ + since: "1.5.0", + parsers: ["graphql"], + vscodeLanguageIds: ["graphql"] + }))]; + var printers = { + graphql: printer + }; + module22.exports = { + languages, + options, + printers, + parsers + }; + } + }); + var require_loc5 = __commonJS22({ + "src/language-markdown/loc.js"(exports2, module22) { + "use strict"; + function locStart(node) { + return node.position.start.offset; + } + function locEnd(node) { + return node.position.end.offset; + } + module22.exports = { + locStart, + locEnd + }; + } + }); + var require_constants_evaluate = __commonJS22({ + "src/language-markdown/constants.evaluate.js"(exports2, module22) { + module22.exports = { + cjkPattern: "(?:[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d])(?:[\\ufe00-\\ufe0f]|\\udb40[\\udd00-\\uddef])?", + kPattern: "[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]", + punctuationPattern: "[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]" + }; + } + }); + var require_utils10 = __commonJS22({ + "src/language-markdown/utils.js"(exports2, module22) { + "use strict"; + var { + getLast + } = require_util2(); + var { + locStart, + locEnd + } = require_loc5(); + var { + cjkPattern, + kPattern, + punctuationPattern + } = require_constants_evaluate(); + var INLINE_NODE_TYPES = ["liquidNode", "inlineCode", "emphasis", "esComment", "strong", "delete", "wikiLink", "link", "linkReference", "image", "imageReference", "footnote", "footnoteReference", "sentence", "whitespace", "word", "break", "inlineMath"]; + var INLINE_NODE_WRAPPER_TYPES = [...INLINE_NODE_TYPES, "tableCell", "paragraph", "heading"]; + var kRegex = new RegExp(kPattern); + var punctuationRegex = new RegExp(punctuationPattern); + function splitText(text, options) { + const KIND_NON_CJK = "non-cjk"; + const KIND_CJ_LETTER = "cj-letter"; + const KIND_K_LETTER = "k-letter"; + const KIND_CJK_PUNCTUATION = "cjk-punctuation"; + const nodes = []; + const tokens = (options.proseWrap === "preserve" ? text : text.replace(new RegExp(`(${cjkPattern}) +(${cjkPattern})`, "g"), "$1$2")).split(/([\t\n ]+)/); + for (const [index, token] of tokens.entries()) { + if (index % 2 === 1) { + nodes.push({ + type: "whitespace", + value: /\n/.test(token) ? "\n" : " " + }); + continue; + } + if ((index === 0 || index === tokens.length - 1) && token === "") { + continue; + } + const innerTokens = token.split(new RegExp(`(${cjkPattern})`)); + for (const [innerIndex, innerToken] of innerTokens.entries()) { + if ((innerIndex === 0 || innerIndex === innerTokens.length - 1) && innerToken === "") { + continue; + } + if (innerIndex % 2 === 0) { + if (innerToken !== "") { + appendNode({ + type: "word", + value: innerToken, + kind: KIND_NON_CJK, + hasLeadingPunctuation: punctuationRegex.test(innerToken[0]), + hasTrailingPunctuation: punctuationRegex.test(getLast(innerToken)) + }); + } + continue; + } + appendNode(punctuationRegex.test(innerToken) ? { + type: "word", + value: innerToken, + kind: KIND_CJK_PUNCTUATION, + hasLeadingPunctuation: true, + hasTrailingPunctuation: true + } : { + type: "word", + value: innerToken, + kind: kRegex.test(innerToken) ? KIND_K_LETTER : KIND_CJ_LETTER, + hasLeadingPunctuation: false, + hasTrailingPunctuation: false + }); + } + } + return nodes; + function appendNode(node) { + const lastNode = getLast(nodes); + if (lastNode && lastNode.type === "word") { + if (lastNode.kind === KIND_NON_CJK && node.kind === KIND_CJ_LETTER && !lastNode.hasTrailingPunctuation || lastNode.kind === KIND_CJ_LETTER && node.kind === KIND_NON_CJK && !node.hasLeadingPunctuation) { + nodes.push({ + type: "whitespace", + value: " " + }); + } else if (!isBetween(KIND_NON_CJK, KIND_CJK_PUNCTUATION) && ![lastNode.value, node.value].some((value) => /\u3000/.test(value))) { + nodes.push({ + type: "whitespace", + value: "" + }); + } + } + nodes.push(node); + function isBetween(kind1, kind2) { + return lastNode.kind === kind1 && node.kind === kind2 || lastNode.kind === kind2 && node.kind === kind1; + } + } + } + function getOrderedListItemInfo(orderListItem, originalText) { + const [, numberText, marker, leadingSpaces] = originalText.slice(orderListItem.position.start.offset, orderListItem.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/); + return { + numberText, + marker, + leadingSpaces + }; + } + function hasGitDiffFriendlyOrderedList(node, options) { + if (!node.ordered) { + return false; + } + if (node.children.length < 2) { + return false; + } + const firstNumber = Number(getOrderedListItemInfo(node.children[0], options.originalText).numberText); + const secondNumber = Number(getOrderedListItemInfo(node.children[1], options.originalText).numberText); + if (firstNumber === 0 && node.children.length > 2) { + const thirdNumber = Number(getOrderedListItemInfo(node.children[2], options.originalText).numberText); + return secondNumber === 1 && thirdNumber === 1; + } + return secondNumber === 1; + } + function getFencedCodeBlockValue(node, originalText) { + const { + value + } = node; + if (node.position.end.offset === originalText.length && value.endsWith("\n") && originalText.endsWith("\n")) { + return value.slice(0, -1); + } + return value; + } + function mapAst(ast, handler) { + return function preorder(node, index, parentStack) { + const newNode = Object.assign({}, handler(node, index, parentStack)); + if (newNode.children) { + newNode.children = newNode.children.map((child, index2) => preorder(child, index2, [newNode, ...parentStack])); + } + return newNode; + }(ast, null, []); + } + function isAutolink(node) { + if ((node === null || node === void 0 ? void 0 : node.type) !== "link" || node.children.length !== 1) { + return false; + } + const [child] = node.children; + return locStart(node) === locStart(child) && locEnd(node) === locEnd(child); + } + module22.exports = { + mapAst, + splitText, + punctuationPattern, + getFencedCodeBlockValue, + getOrderedListItemInfo, + hasGitDiffFriendlyOrderedList, + INLINE_NODE_TYPES, + INLINE_NODE_WRAPPER_TYPES, + isAutolink + }; + } + }); + var require_embed3 = __commonJS22({ + "src/language-markdown/embed.js"(exports2, module22) { + "use strict"; + var { + inferParserByLanguage, + getMaxContinuousCount + } = require_util2(); + var { + builders: { + hardline, + markAsRoot + }, + utils: { + replaceEndOfLine + } + } = require_doc(); + var printFrontMatter = require_print(); + var { + getFencedCodeBlockValue + } = require_utils10(); + function embed(path2, print, textToDoc, options) { + const node = path2.getValue(); + if (node.type === "code" && node.lang !== null) { + const parser = inferParserByLanguage(node.lang, options); + if (parser) { + const styleUnit = options.__inJsTemplate ? "~" : "`"; + const style = styleUnit.repeat(Math.max(3, getMaxContinuousCount(node.value, styleUnit) + 1)); + const newOptions = { + parser + }; + if (node.lang === "tsx") { + newOptions.filepath = "dummy.tsx"; + } + const doc2 = textToDoc(getFencedCodeBlockValue(node, options.originalText), newOptions, { + stripTrailingHardline: true + }); + return markAsRoot([style, node.lang, node.meta ? " " + node.meta : "", hardline, replaceEndOfLine(doc2), hardline, style]); + } + } + switch (node.type) { + case "front-matter": + return printFrontMatter(node, textToDoc); + case "importExport": + return [textToDoc(node.value, { + parser: "babel" + }, { + stripTrailingHardline: true + }), hardline]; + case "jsx": + return textToDoc(`<$>${node.value}`, { + parser: "__js_expression", + rootMarker: "mdx" + }, { + stripTrailingHardline: true + }); + } + return null; + } + module22.exports = embed; + } + }); + var require_pragma4 = __commonJS22({ + "src/language-markdown/pragma.js"(exports2, module22) { + "use strict"; + var parseFrontMatter = require_parse4(); + var pragmas = ["format", "prettier"]; + function startWithPragma(text) { + const pragma = `@(${pragmas.join("|")})`; + const regex = new RegExp([``, `{\\s*\\/\\*\\s*${pragma}\\s*\\*\\/\\s*}`, ``].join("|"), "m"); + const matched = text.match(regex); + return (matched === null || matched === void 0 ? void 0 : matched.index) === 0; + } + module22.exports = { + startWithPragma, + hasPragma: (text) => startWithPragma(parseFrontMatter(text).content.trimStart()), + insertPragma: (text) => { + const extracted = parseFrontMatter(text); + const pragma = ``; + return extracted.frontMatter ? `${extracted.frontMatter.raw} + +${pragma} + +${extracted.content}` : `${pragma} + +${extracted.content}`; + } + }; + } + }); + var require_print_preprocess2 = __commonJS22({ + "src/language-markdown/print-preprocess.js"(exports2, module22) { + "use strict"; + var getLast = require_get_last(); + var { + getOrderedListItemInfo, + mapAst, + splitText + } = require_utils10(); + var isSingleCharRegex = /^.$/su; + function preprocess(ast, options) { + ast = restoreUnescapedCharacter(ast, options); + ast = mergeContinuousTexts(ast); + ast = transformInlineCode(ast); + ast = transformIndentedCodeblockAndMarkItsParentList(ast, options); + ast = markAlignedList(ast, options); + ast = splitTextIntoSentences(ast, options); + ast = transformImportExport(ast); + ast = mergeContinuousImportExport(ast); + return ast; + } + function transformImportExport(ast) { + return mapAst(ast, (node) => { + if (node.type !== "import" && node.type !== "export") { + return node; + } + return Object.assign(Object.assign({}, node), {}, { + type: "importExport" + }); + }); + } + function transformInlineCode(ast) { + return mapAst(ast, (node) => { + if (node.type !== "inlineCode") { + return node; + } + return Object.assign(Object.assign({}, node), {}, { + value: node.value.replace(/\s+/g, " ") + }); + }); + } + function restoreUnescapedCharacter(ast, options) { + return mapAst(ast, (node) => node.type !== "text" || node.value === "*" || node.value === "_" || !isSingleCharRegex.test(node.value) || node.position.end.offset - node.position.start.offset === node.value.length ? node : Object.assign(Object.assign({}, node), {}, { + value: options.originalText.slice(node.position.start.offset, node.position.end.offset) + })); + } + function mergeContinuousImportExport(ast) { + return mergeChildren(ast, (prevNode, node) => prevNode.type === "importExport" && node.type === "importExport", (prevNode, node) => ({ + type: "importExport", + value: prevNode.value + "\n\n" + node.value, + position: { + start: prevNode.position.start, + end: node.position.end + } + })); + } + function mergeChildren(ast, shouldMerge, mergeNode) { + return mapAst(ast, (node) => { + if (!node.children) { + return node; + } + const children = node.children.reduce((current, child) => { + const lastChild = getLast(current); + if (lastChild && shouldMerge(lastChild, child)) { + current.splice(-1, 1, mergeNode(lastChild, child)); + } else { + current.push(child); + } + return current; + }, []); + return Object.assign(Object.assign({}, node), {}, { + children + }); + }); + } + function mergeContinuousTexts(ast) { + return mergeChildren(ast, (prevNode, node) => prevNode.type === "text" && node.type === "text", (prevNode, node) => ({ + type: "text", + value: prevNode.value + node.value, + position: { + start: prevNode.position.start, + end: node.position.end + } + })); + } + function splitTextIntoSentences(ast, options) { + return mapAst(ast, (node, index, [parentNode]) => { + if (node.type !== "text") { + return node; + } + let { + value + } = node; + if (parentNode.type === "paragraph") { + if (index === 0) { + value = value.trimStart(); + } + if (index === parentNode.children.length - 1) { + value = value.trimEnd(); + } + } + return { + type: "sentence", + position: node.position, + children: splitText(value, options) + }; + }); + } + function transformIndentedCodeblockAndMarkItsParentList(ast, options) { + return mapAst(ast, (node, index, parentStack) => { + if (node.type === "code") { + const isIndented = /^\n?(?: {4,}|\t)/.test(options.originalText.slice(node.position.start.offset, node.position.end.offset)); + node.isIndented = isIndented; + if (isIndented) { + for (let i = 0; i < parentStack.length; i++) { + const parent = parentStack[i]; + if (parent.hasIndentedCodeblock) { + break; + } + if (parent.type === "list") { + parent.hasIndentedCodeblock = true; + } + } + } + } + return node; + }); + } + function markAlignedList(ast, options) { + return mapAst(ast, (node, index, parentStack) => { + if (node.type === "list" && node.children.length > 0) { + for (let i = 0; i < parentStack.length; i++) { + const parent = parentStack[i]; + if (parent.type === "list" && !parent.isAligned) { + node.isAligned = false; + return node; + } + } + node.isAligned = isAligned(node); + } + return node; + }); + function getListItemStart(listItem) { + return listItem.children.length === 0 ? -1 : listItem.children[0].position.start.column - 1; + } + function isAligned(list) { + if (!list.ordered) { + return true; + } + const [firstItem, secondItem] = list.children; + const firstInfo = getOrderedListItemInfo(firstItem, options.originalText); + if (firstInfo.leadingSpaces.length > 1) { + return true; + } + const firstStart = getListItemStart(firstItem); + if (firstStart === -1) { + return false; + } + if (list.children.length === 1) { + return firstStart % options.tabWidth === 0; + } + const secondStart = getListItemStart(secondItem); + if (firstStart !== secondStart) { + return false; + } + if (firstStart % options.tabWidth === 0) { + return true; + } + const secondInfo = getOrderedListItemInfo(secondItem, options.originalText); + return secondInfo.leadingSpaces.length > 1; + } + } + module22.exports = preprocess; + } + }); + var require_clean4 = __commonJS22({ + "src/language-markdown/clean.js"(exports2, module22) { + "use strict"; + var { + isFrontMatterNode + } = require_util2(); + var { + startWithPragma + } = require_pragma4(); + var ignoredProperties = /* @__PURE__ */ new Set(["position", "raw"]); + function clean(ast, newObj, parent) { + if (ast.type === "front-matter" || ast.type === "code" || ast.type === "yaml" || ast.type === "import" || ast.type === "export" || ast.type === "jsx") { + delete newObj.value; + } + if (ast.type === "list") { + delete newObj.isAligned; + } + if (ast.type === "list" || ast.type === "listItem") { + delete newObj.spread; + delete newObj.loose; + } + if (ast.type === "text") { + return null; + } + if (ast.type === "inlineCode") { + newObj.value = ast.value.replace(/[\t\n ]+/g, " "); + } + if (ast.type === "wikiLink") { + newObj.value = ast.value.trim().replace(/[\t\n]+/g, " "); + } + if (ast.type === "definition" || ast.type === "linkReference") { + newObj.label = ast.label.trim().replace(/[\t\n ]+/g, " ").toLowerCase(); + } + if ((ast.type === "definition" || ast.type === "link" || ast.type === "image") && ast.title) { + newObj.title = ast.title.replace(/\\(["')])/g, "$1"); + } + if (parent && parent.type === "root" && parent.children.length > 0 && (parent.children[0] === ast || isFrontMatterNode(parent.children[0]) && parent.children[1] === ast) && ast.type === "html" && startWithPragma(ast.value)) { + return null; + } + } + clean.ignoredProperties = ignoredProperties; + module22.exports = clean; + } + }); + var require_printer_markdown = __commonJS22({ + "src/language-markdown/printer-markdown.js"(exports2, module22) { + "use strict"; + var { + getLast, + getMinNotPresentContinuousCount, + getMaxContinuousCount, + getStringWidth, + isNonEmptyArray + } = require_util2(); + var { + builders: { + breakParent, + join, + line, + literalline, + markAsRoot, + hardline, + softline, + ifBreak, + fill, + align, + indent, + group, + hardlineWithoutBreakParent + }, + utils: { + normalizeDoc, + replaceTextEndOfLine + }, + printer: { + printDocToString + } + } = require_doc(); + var embed = require_embed3(); + var { + insertPragma + } = require_pragma4(); + var { + locStart, + locEnd + } = require_loc5(); + var preprocess = require_print_preprocess2(); + var clean = require_clean4(); + var { + getFencedCodeBlockValue, + hasGitDiffFriendlyOrderedList, + splitText, + punctuationPattern, + INLINE_NODE_TYPES, + INLINE_NODE_WRAPPER_TYPES, + isAutolink + } = require_utils10(); + var TRAILING_HARDLINE_NODES = /* @__PURE__ */ new Set(["importExport"]); + var SINGLE_LINE_NODE_TYPES = ["heading", "tableCell", "link", "wikiLink"]; + var SIBLING_NODE_TYPES = /* @__PURE__ */ new Set(["listItem", "definition", "footnoteDefinition"]); + function genericPrint(path2, options, print) { + const node = path2.getValue(); + if (shouldRemainTheSameContent(path2)) { + return splitText(options.originalText.slice(node.position.start.offset, node.position.end.offset), options).map((node2) => node2.type === "word" ? node2.value : node2.value === "" ? "" : printLine(path2, node2.value, options)); + } + switch (node.type) { + case "front-matter": + return options.originalText.slice(node.position.start.offset, node.position.end.offset); + case "root": + if (node.children.length === 0) { + return ""; + } + return [normalizeDoc(printRoot(path2, options, print)), !TRAILING_HARDLINE_NODES.has(getLastDescendantNode(node).type) ? hardline : ""]; + case "paragraph": + return printChildren(path2, options, print, { + postprocessor: fill + }); + case "sentence": + return printChildren(path2, options, print); + case "word": { + let escapedValue = node.value.replace(/\*/g, "\\$&").replace(new RegExp([`(^|${punctuationPattern})(_+)`, `(_+)(${punctuationPattern}|$)`].join("|"), "g"), (_, text1, underscore1, underscore2, text2) => (underscore1 ? `${text1}${underscore1}` : `${underscore2}${text2}`).replace(/_/g, "\\_")); + const isFirstSentence = (node2, name, index) => node2.type === "sentence" && index === 0; + const isLastChildAutolink = (node2, name, index) => isAutolink(node2.children[index - 1]); + if (escapedValue !== node.value && (path2.match(void 0, isFirstSentence, isLastChildAutolink) || path2.match(void 0, isFirstSentence, (node2, name, index) => node2.type === "emphasis" && index === 0, isLastChildAutolink))) { + escapedValue = escapedValue.replace(/^(\\?[*_])+/, (prefix) => prefix.replace(/\\/g, "")); + } + return escapedValue; + } + case "whitespace": { + const parentNode = path2.getParentNode(); + const index = parentNode.children.indexOf(node); + const nextNode = parentNode.children[index + 1]; + const proseWrap = nextNode && /^>|^(?:[*+-]|#{1,6}|\d+[).])$/.test(nextNode.value) ? "never" : options.proseWrap; + return printLine(path2, node.value, { + proseWrap + }); + } + case "emphasis": { + let style; + if (isAutolink(node.children[0])) { + style = options.originalText[node.position.start.offset]; + } else { + const parentNode = path2.getParentNode(); + const index = parentNode.children.indexOf(node); + const prevNode = parentNode.children[index - 1]; + const nextNode = parentNode.children[index + 1]; + const hasPrevOrNextWord = prevNode && prevNode.type === "sentence" && prevNode.children.length > 0 && getLast(prevNode.children).type === "word" && !getLast(prevNode.children).hasTrailingPunctuation || nextNode && nextNode.type === "sentence" && nextNode.children.length > 0 && nextNode.children[0].type === "word" && !nextNode.children[0].hasLeadingPunctuation; + style = hasPrevOrNextWord || getAncestorNode(path2, "emphasis") ? "*" : "_"; + } + return [style, printChildren(path2, options, print), style]; + } + case "strong": + return ["**", printChildren(path2, options, print), "**"]; + case "delete": + return ["~~", printChildren(path2, options, print), "~~"]; + case "inlineCode": { + const backtickCount = getMinNotPresentContinuousCount(node.value, "`"); + const style = "`".repeat(backtickCount || 1); + const gap = backtickCount && !/^\s/.test(node.value) ? " " : ""; + return [style, gap, node.value, gap, style]; + } + case "wikiLink": { + let contents = ""; + if (options.proseWrap === "preserve") { + contents = node.value; + } else { + contents = node.value.replace(/[\t\n]+/g, " "); + } + return ["[[", contents, "]]"]; + } + case "link": + switch (options.originalText[node.position.start.offset]) { + case "<": { + const mailto = "mailto:"; + const url = node.url.startsWith(mailto) && options.originalText.slice(node.position.start.offset + 1, node.position.start.offset + 1 + mailto.length) !== mailto ? node.url.slice(mailto.length) : node.url; + return ["<", url, ">"]; + } + case "[": + return ["[", printChildren(path2, options, print), "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]; + default: + return options.originalText.slice(node.position.start.offset, node.position.end.offset); + } + case "image": + return ["![", node.alt || "", "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]; + case "blockquote": + return ["> ", align("> ", printChildren(path2, options, print))]; + case "heading": + return ["#".repeat(node.depth) + " ", printChildren(path2, options, print)]; + case "code": { + if (node.isIndented) { + const alignment = " ".repeat(4); + return align(alignment, [alignment, ...replaceTextEndOfLine(node.value, hardline)]); + } + const styleUnit = options.__inJsTemplate ? "~" : "`"; + const style = styleUnit.repeat(Math.max(3, getMaxContinuousCount(node.value, styleUnit) + 1)); + return [style, node.lang || "", node.meta ? " " + node.meta : "", hardline, ...replaceTextEndOfLine(getFencedCodeBlockValue(node, options.originalText), hardline), hardline, style]; + } + case "html": { + const parentNode = path2.getParentNode(); + const value = parentNode.type === "root" && getLast(parentNode.children) === node ? node.value.trimEnd() : node.value; + const isHtmlComment = /^$/s.test(value); + return replaceTextEndOfLine(value, isHtmlComment ? hardline : markAsRoot(literalline)); + } + case "list": { + const nthSiblingIndex = getNthListSiblingIndex(node, path2.getParentNode()); + const isGitDiffFriendlyOrderedList = hasGitDiffFriendlyOrderedList(node, options); + return printChildren(path2, options, print, { + processor: (childPath, index) => { + const prefix = getPrefix(); + const childNode = childPath.getValue(); + if (childNode.children.length === 2 && childNode.children[1].type === "html" && childNode.children[0].position.start.column !== childNode.children[1].position.start.column) { + return [prefix, printListItem(childPath, options, print, prefix)]; + } + return [prefix, align(" ".repeat(prefix.length), printListItem(childPath, options, print, prefix))]; + function getPrefix() { + const rawPrefix = node.ordered ? (index === 0 ? node.start : isGitDiffFriendlyOrderedList ? 1 : node.start + index) + (nthSiblingIndex % 2 === 0 ? ". " : ") ") : nthSiblingIndex % 2 === 0 ? "- " : "* "; + return node.isAligned || node.hasIndentedCodeblock ? alignListPrefix(rawPrefix, options) : rawPrefix; + } + } + }); + } + case "thematicBreak": { + const counter = getAncestorCounter(path2, "list"); + if (counter === -1) { + return "---"; + } + const nthSiblingIndex = getNthListSiblingIndex(path2.getParentNode(counter), path2.getParentNode(counter + 1)); + return nthSiblingIndex % 2 === 0 ? "***" : "---"; + } + case "linkReference": + return ["[", printChildren(path2, options, print), "]", node.referenceType === "full" ? ["[", node.identifier, "]"] : node.referenceType === "collapsed" ? "[]" : ""]; + case "imageReference": + switch (node.referenceType) { + case "full": + return ["![", node.alt || "", "][", node.identifier, "]"]; + default: + return ["![", node.alt, "]", node.referenceType === "collapsed" ? "[]" : ""]; + } + case "definition": { + const lineOrSpace = options.proseWrap === "always" ? line : " "; + return group(["[", node.identifier, "]:", indent([lineOrSpace, printUrl(node.url), node.title === null ? "" : [lineOrSpace, printTitle(node.title, options, false)]])]); + } + case "footnote": + return ["[^", printChildren(path2, options, print), "]"]; + case "footnoteReference": + return ["[^", node.identifier, "]"]; + case "footnoteDefinition": { + const nextNode = path2.getParentNode().children[path2.getName() + 1]; + const shouldInlineFootnote = node.children.length === 1 && node.children[0].type === "paragraph" && (options.proseWrap === "never" || options.proseWrap === "preserve" && node.children[0].position.start.line === node.children[0].position.end.line); + return ["[^", node.identifier, "]: ", shouldInlineFootnote ? printChildren(path2, options, print) : group([align(" ".repeat(4), printChildren(path2, options, print, { + processor: (childPath, index) => index === 0 ? group([softline, print()]) : print() + })), nextNode && nextNode.type === "footnoteDefinition" ? softline : ""])]; + } + case "table": + return printTable(path2, options, print); + case "tableCell": + return printChildren(path2, options, print); + case "break": + return /\s/.test(options.originalText[node.position.start.offset]) ? [" ", markAsRoot(literalline)] : ["\\", hardline]; + case "liquidNode": + return replaceTextEndOfLine(node.value, hardline); + case "importExport": + return [node.value, hardline]; + case "esComment": + return ["{/* ", node.value, " */}"]; + case "jsx": + return node.value; + case "math": + return ["$$", hardline, node.value ? [...replaceTextEndOfLine(node.value, hardline), hardline] : "", "$$"]; + case "inlineMath": { + return options.originalText.slice(locStart(node), locEnd(node)); + } + case "tableRow": + case "listItem": + default: + throw new Error(`Unknown markdown type ${JSON.stringify(node.type)}`); + } + } + function printListItem(path2, options, print, listPrefix) { + const node = path2.getValue(); + const prefix = node.checked === null ? "" : node.checked ? "[x] " : "[ ] "; + return [prefix, printChildren(path2, options, print, { + processor: (childPath, index) => { + if (index === 0 && childPath.getValue().type !== "list") { + return align(" ".repeat(prefix.length), print()); + } + const alignment = " ".repeat(clamp(options.tabWidth - listPrefix.length, 0, 3)); + return [alignment, align(alignment, print())]; + } + })]; + } + function alignListPrefix(prefix, options) { + const additionalSpaces = getAdditionalSpaces(); + return prefix + " ".repeat(additionalSpaces >= 4 ? 0 : additionalSpaces); + function getAdditionalSpaces() { + const restSpaces = prefix.length % options.tabWidth; + return restSpaces === 0 ? 0 : options.tabWidth - restSpaces; + } + } + function getNthListSiblingIndex(node, parentNode) { + return getNthSiblingIndex(node, parentNode, (siblingNode) => siblingNode.ordered === node.ordered); + } + function getNthSiblingIndex(node, parentNode, condition) { + let index = -1; + for (const childNode of parentNode.children) { + if (childNode.type === node.type && condition(childNode)) { + index++; + } else { + index = -1; + } + if (childNode === node) { + return index; + } + } + } + function getAncestorCounter(path2, typeOrTypes) { + const types = Array.isArray(typeOrTypes) ? typeOrTypes : [typeOrTypes]; + let counter = -1; + let ancestorNode; + while (ancestorNode = path2.getParentNode(++counter)) { + if (types.includes(ancestorNode.type)) { + return counter; + } + } + return -1; + } + function getAncestorNode(path2, typeOrTypes) { + const counter = getAncestorCounter(path2, typeOrTypes); + return counter === -1 ? null : path2.getParentNode(counter); + } + function printLine(path2, value, options) { + if (options.proseWrap === "preserve" && value === "\n") { + return hardline; + } + const isBreakable = options.proseWrap === "always" && !getAncestorNode(path2, SINGLE_LINE_NODE_TYPES); + return value !== "" ? isBreakable ? line : " " : isBreakable ? softline : ""; + } + function printTable(path2, options, print) { + const node = path2.getValue(); + const columnMaxWidths = []; + const contents = path2.map((rowPath) => rowPath.map((cellPath, columnIndex) => { + const text = printDocToString(print(), options).formatted; + const width = getStringWidth(text); + columnMaxWidths[columnIndex] = Math.max(columnMaxWidths[columnIndex] || 3, width); + return { + text, + width + }; + }, "children"), "children"); + const alignedTable = printTableContents(false); + if (options.proseWrap !== "never") { + return [breakParent, alignedTable]; + } + const compactTable = printTableContents(true); + return [breakParent, group(ifBreak(compactTable, alignedTable))]; + function printTableContents(isCompact) { + const parts = [printRow(contents[0], isCompact), printAlign(isCompact)]; + if (contents.length > 1) { + parts.push(join(hardlineWithoutBreakParent, contents.slice(1).map((rowContents) => printRow(rowContents, isCompact)))); + } + return join(hardlineWithoutBreakParent, parts); + } + function printAlign(isCompact) { + const align2 = columnMaxWidths.map((width, index) => { + const align3 = node.align[index]; + const first = align3 === "center" || align3 === "left" ? ":" : "-"; + const last = align3 === "center" || align3 === "right" ? ":" : "-"; + const middle = isCompact ? "-" : "-".repeat(width - 2); + return `${first}${middle}${last}`; + }); + return `| ${align2.join(" | ")} |`; + } + function printRow(rowContents, isCompact) { + const columns = rowContents.map(({ + text, + width + }, columnIndex) => { + if (isCompact) { + return text; + } + const spaces = columnMaxWidths[columnIndex] - width; + const align2 = node.align[columnIndex]; + let before = 0; + if (align2 === "right") { + before = spaces; + } else if (align2 === "center") { + before = Math.floor(spaces / 2); + } + const after = spaces - before; + return `${" ".repeat(before)}${text}${" ".repeat(after)}`; + }); + return `| ${columns.join(" | ")} |`; + } + } + function printRoot(path2, options, print) { + const ignoreRanges = []; + let ignoreStart = null; + const { + children + } = path2.getValue(); + for (const [index, childNode] of children.entries()) { + switch (isPrettierIgnore(childNode)) { + case "start": + if (ignoreStart === null) { + ignoreStart = { + index, + offset: childNode.position.end.offset + }; + } + break; + case "end": + if (ignoreStart !== null) { + ignoreRanges.push({ + start: ignoreStart, + end: { + index, + offset: childNode.position.start.offset + } + }); + ignoreStart = null; + } + break; + default: + break; + } + } + return printChildren(path2, options, print, { + processor: (childPath, index) => { + if (ignoreRanges.length > 0) { + const ignoreRange = ignoreRanges[0]; + if (index === ignoreRange.start.index) { + return [children[ignoreRange.start.index].value, options.originalText.slice(ignoreRange.start.offset, ignoreRange.end.offset), children[ignoreRange.end.index].value]; + } + if (ignoreRange.start.index < index && index < ignoreRange.end.index) { + return false; + } + if (index === ignoreRange.end.index) { + ignoreRanges.shift(); + return false; + } + } + return print(); + } + }); + } + function printChildren(path2, options, print, events = {}) { + const { + postprocessor + } = events; + const processor = events.processor || (() => print()); + const node = path2.getValue(); + const parts = []; + let lastChildNode; + path2.each((childPath, index) => { + const childNode = childPath.getValue(); + const result = processor(childPath, index); + if (result !== false) { + const data = { + parts, + prevNode: lastChildNode, + parentNode: node, + options + }; + if (shouldPrePrintHardline(childNode, data)) { + parts.push(hardline); + if (lastChildNode && TRAILING_HARDLINE_NODES.has(lastChildNode.type)) { + if (shouldPrePrintTripleHardline(childNode, data)) { + parts.push(hardline); + } + } else { + if (shouldPrePrintDoubleHardline(childNode, data) || shouldPrePrintTripleHardline(childNode, data)) { + parts.push(hardline); + } + if (shouldPrePrintTripleHardline(childNode, data)) { + parts.push(hardline); + } + } + } + parts.push(result); + lastChildNode = childNode; + } + }, "children"); + return postprocessor ? postprocessor(parts) : parts; + } + function getLastDescendantNode(node) { + let current = node; + while (isNonEmptyArray(current.children)) { + current = getLast(current.children); + } + return current; + } + function isPrettierIgnore(node) { + let match; + if (node.type === "html") { + match = node.value.match(/^$/); + } else { + let comment; + if (node.type === "esComment") { + comment = node; + } else if (node.type === "paragraph" && node.children.length === 1 && node.children[0].type === "esComment") { + comment = node.children[0]; + } + if (comment) { + match = comment.value.match(/^prettier-ignore(?:-(start|end))?$/); + } + } + return match ? match[1] || "next" : false; + } + function shouldPrePrintHardline(node, data) { + const isFirstNode = data.parts.length === 0; + const isInlineNode = INLINE_NODE_TYPES.includes(node.type); + const isInlineHTML = node.type === "html" && INLINE_NODE_WRAPPER_TYPES.includes(data.parentNode.type); + return !isFirstNode && !isInlineNode && !isInlineHTML; + } + function shouldPrePrintDoubleHardline(node, data) { + var _data$prevNode, _data$prevNode2, _data$prevNode3; + const isSequence = (data.prevNode && data.prevNode.type) === node.type; + const isSiblingNode = isSequence && SIBLING_NODE_TYPES.has(node.type); + const isInTightListItem = data.parentNode.type === "listItem" && !data.parentNode.loose; + const isPrevNodeLooseListItem = ((_data$prevNode = data.prevNode) === null || _data$prevNode === void 0 ? void 0 : _data$prevNode.type) === "listItem" && data.prevNode.loose; + const isPrevNodePrettierIgnore = isPrettierIgnore(data.prevNode) === "next"; + const isBlockHtmlWithoutBlankLineBetweenPrevHtml = node.type === "html" && ((_data$prevNode2 = data.prevNode) === null || _data$prevNode2 === void 0 ? void 0 : _data$prevNode2.type) === "html" && data.prevNode.position.end.line + 1 === node.position.start.line; + const isHtmlDirectAfterListItem = node.type === "html" && data.parentNode.type === "listItem" && ((_data$prevNode3 = data.prevNode) === null || _data$prevNode3 === void 0 ? void 0 : _data$prevNode3.type) === "paragraph" && data.prevNode.position.end.line + 1 === node.position.start.line; + return isPrevNodeLooseListItem || !(isSiblingNode || isInTightListItem || isPrevNodePrettierIgnore || isBlockHtmlWithoutBlankLineBetweenPrevHtml || isHtmlDirectAfterListItem); + } + function shouldPrePrintTripleHardline(node, data) { + const isPrevNodeList = data.prevNode && data.prevNode.type === "list"; + const isIndentedCode = node.type === "code" && node.isIndented; + return isPrevNodeList && isIndentedCode; + } + function shouldRemainTheSameContent(path2) { + const ancestorNode = getAncestorNode(path2, ["linkReference", "imageReference"]); + return ancestorNode && (ancestorNode.type !== "linkReference" || ancestorNode.referenceType !== "full"); + } + function printUrl(url, dangerousCharOrChars = []) { + const dangerousChars = [" ", ...Array.isArray(dangerousCharOrChars) ? dangerousCharOrChars : [dangerousCharOrChars]]; + return new RegExp(dangerousChars.map((x) => `\\${x}`).join("|")).test(url) ? `<${url}>` : url; + } + function printTitle(title, options, printSpace = true) { + if (!title) { + return ""; + } + if (printSpace) { + return " " + printTitle(title, options, false); + } + title = title.replace(/\\(["')])/g, "$1"); + if (title.includes('"') && title.includes("'") && !title.includes(")")) { + return `(${title})`; + } + const singleCount = title.split("'").length - 1; + const doubleCount = title.split('"').length - 1; + const quote = singleCount > doubleCount ? '"' : doubleCount > singleCount ? "'" : options.singleQuote ? "'" : '"'; + title = title.replace(/\\/, "\\\\"); + title = title.replace(new RegExp(`(${quote})`, "g"), "\\$1"); + return `${quote}${title}${quote}`; + } + function clamp(value, min, max) { + return value < min ? min : value > max ? max : value; + } + function hasPrettierIgnore(path2) { + const index = Number(path2.getName()); + if (index === 0) { + return false; + } + const prevNode = path2.getParentNode().children[index - 1]; + return isPrettierIgnore(prevNode) === "next"; + } + module22.exports = { + preprocess, + print: genericPrint, + embed, + massageAstNode: clean, + hasPrettierIgnore, + insertPragma + }; + } + }); + var require_options5 = __commonJS22({ + "src/language-markdown/options.js"(exports2, module22) { + "use strict"; + var commonOptions = require_common_options(); + module22.exports = { + proseWrap: commonOptions.proseWrap, + singleQuote: commonOptions.singleQuote + }; + } + }); + var require_parsers5 = __commonJS22({ + "src/language-markdown/parsers.js"(exports2, module22) { + "use strict"; + module22.exports = { + get remark() { + return require_parser_markdown().parsers.remark; + }, + get markdown() { + return require_parser_markdown().parsers.remark; + }, + get mdx() { + return require_parser_markdown().parsers.mdx; + } + }; + } + }); + var require_Markdown = __commonJS22({ + "node_modules/linguist-languages/data/Markdown.json"(exports2, module22) { + module22.exports = { + name: "Markdown", + type: "prose", + color: "#083fa1", + aliases: ["pandoc"], + aceMode: "markdown", + codemirrorMode: "gfm", + codemirrorMimeType: "text/x-gfm", + wrap: true, + extensions: [".md", ".livemd", ".markdown", ".mdown", ".mdwn", ".mdx", ".mkd", ".mkdn", ".mkdown", ".ronn", ".scd", ".workbook"], + filenames: ["contents.lr"], + tmScope: "source.gfm", + languageId: 222 + }; + } + }); + var require_language_markdown = __commonJS22({ + "src/language-markdown/index.js"(exports2, module22) { + "use strict"; + var createLanguage = require_create_language(); + var printer = require_printer_markdown(); + var options = require_options5(); + var parsers = require_parsers5(); + var languages = [createLanguage(require_Markdown(), (data) => ({ + since: "1.8.0", + parsers: ["markdown"], + vscodeLanguageIds: ["markdown"], + filenames: [...data.filenames, "README"], + extensions: data.extensions.filter((extension) => extension !== ".mdx") + })), createLanguage(require_Markdown(), () => ({ + name: "MDX", + since: "1.15.0", + parsers: ["mdx"], + vscodeLanguageIds: ["mdx"], + filenames: [], + extensions: [".mdx"] + }))]; + var printers = { + mdast: printer + }; + module22.exports = { + languages, + options, + printers, + parsers + }; + } + }); + var require_clean5 = __commonJS22({ + "src/language-html/clean.js"(exports2, module22) { + "use strict"; + var { + isFrontMatterNode + } = require_util2(); + var ignoredProperties = /* @__PURE__ */ new Set(["sourceSpan", "startSourceSpan", "endSourceSpan", "nameSpan", "valueSpan"]); + function clean(ast, newNode) { + if (ast.type === "text" || ast.type === "comment") { + return null; + } + if (isFrontMatterNode(ast) || ast.type === "yaml" || ast.type === "toml") { + return null; + } + if (ast.type === "attribute") { + delete newNode.value; + } + if (ast.type === "docType") { + delete newNode.value; + } + } + clean.ignoredProperties = ignoredProperties; + module22.exports = clean; + } + }); + var require_constants_evaluate2 = __commonJS22({ + "src/language-html/constants.evaluate.js"(exports2, module22) { + module22.exports = { + CSS_DISPLAY_TAGS: { + area: "none", + base: "none", + basefont: "none", + datalist: "none", + head: "none", + link: "none", + meta: "none", + noembed: "none", + noframes: "none", + param: "block", + rp: "none", + script: "block", + source: "block", + style: "none", + template: "inline", + track: "block", + title: "none", + html: "block", + body: "block", + address: "block", + blockquote: "block", + center: "block", + div: "block", + figure: "block", + figcaption: "block", + footer: "block", + form: "block", + header: "block", + hr: "block", + legend: "block", + listing: "block", + main: "block", + p: "block", + plaintext: "block", + pre: "block", + xmp: "block", + slot: "contents", + ruby: "ruby", + rt: "ruby-text", + article: "block", + aside: "block", + h1: "block", + h2: "block", + h3: "block", + h4: "block", + h5: "block", + h6: "block", + hgroup: "block", + nav: "block", + section: "block", + dir: "block", + dd: "block", + dl: "block", + dt: "block", + ol: "block", + ul: "block", + li: "list-item", + table: "table", + caption: "table-caption", + colgroup: "table-column-group", + col: "table-column", + thead: "table-header-group", + tbody: "table-row-group", + tfoot: "table-footer-group", + tr: "table-row", + td: "table-cell", + th: "table-cell", + fieldset: "block", + button: "inline-block", + details: "block", + summary: "block", + dialog: "block", + meter: "inline-block", + progress: "inline-block", + object: "inline-block", + video: "inline-block", + audio: "inline-block", + select: "inline-block", + option: "block", + optgroup: "block" + }, + CSS_DISPLAY_DEFAULT: "inline", + CSS_WHITE_SPACE_TAGS: { + listing: "pre", + plaintext: "pre", + pre: "pre", + xmp: "pre", + nobr: "nowrap", + table: "initial", + textarea: "pre-wrap" + }, + CSS_WHITE_SPACE_DEFAULT: "normal" + }; + } + }); + var require_is_unknown_namespace = __commonJS22({ + "src/language-html/utils/is-unknown-namespace.js"(exports2, module22) { + "use strict"; + function isUnknownNamespace(node) { + return node.type === "element" && !node.hasExplicitNamespace && !["html", "svg"].includes(node.namespace); + } + module22.exports = isUnknownNamespace; + } + }); + var require_utils11 = __commonJS22({ + "src/language-html/utils/index.js"(exports2, module22) { + "use strict"; + var { + inferParserByLanguage, + isFrontMatterNode + } = require_util2(); + var { + builders: { + line, + hardline, + join + }, + utils: { + getDocParts, + replaceTextEndOfLine + } + } = require_doc(); + var { + CSS_DISPLAY_TAGS, + CSS_DISPLAY_DEFAULT, + CSS_WHITE_SPACE_TAGS, + CSS_WHITE_SPACE_DEFAULT + } = require_constants_evaluate2(); + var isUnknownNamespace = require_is_unknown_namespace(); + var HTML_WHITESPACE = /* @__PURE__ */ new Set([" ", "\n", "\f", "\r", " "]); + var htmlTrimStart = (string) => string.replace(/^[\t\n\f\r ]+/, ""); + var htmlTrimEnd = (string) => string.replace(/[\t\n\f\r ]+$/, ""); + var htmlTrim = (string) => htmlTrimStart(htmlTrimEnd(string)); + var htmlTrimLeadingBlankLines = (string) => string.replace(/^[\t\f\r ]*\n/g, ""); + var htmlTrimPreserveIndentation = (string) => htmlTrimLeadingBlankLines(htmlTrimEnd(string)); + var splitByHtmlWhitespace = (string) => string.split(/[\t\n\f\r ]+/); + var getLeadingHtmlWhitespace = (string) => string.match(/^[\t\n\f\r ]*/)[0]; + var getLeadingAndTrailingHtmlWhitespace = (string) => { + const [, leadingWhitespace, text, trailingWhitespace] = string.match(/^([\t\n\f\r ]*)(.*?)([\t\n\f\r ]*)$/s); + return { + leadingWhitespace, + trailingWhitespace, + text + }; + }; + var hasHtmlWhitespace = (string) => /[\t\n\f\r ]/.test(string); + function shouldPreserveContent(node, options) { + if (node.type === "ieConditionalComment" && node.lastChild && !node.lastChild.isSelfClosing && !node.lastChild.endSourceSpan) { + return true; + } + if (node.type === "ieConditionalComment" && !node.complete) { + return true; + } + if (isPreLikeNode(node) && node.children.some((child) => child.type !== "text" && child.type !== "interpolation")) { + return true; + } + if (isVueNonHtmlBlock(node, options) && !isScriptLikeTag(node) && node.type !== "interpolation") { + return true; + } + return false; + } + function hasPrettierIgnore(node) { + if (node.type === "attribute") { + return false; + } + if (!node.parent) { + return false; + } + if (!node.prev) { + return false; + } + return isPrettierIgnore(node.prev); + } + function isPrettierIgnore(node) { + return node.type === "comment" && node.value.trim() === "prettier-ignore"; + } + function isTextLikeNode(node) { + return node.type === "text" || node.type === "comment"; + } + function isScriptLikeTag(node) { + return node.type === "element" && (node.fullName === "script" || node.fullName === "style" || node.fullName === "svg:style" || isUnknownNamespace(node) && (node.name === "script" || node.name === "style")); + } + function canHaveInterpolation(node) { + return node.children && !isScriptLikeTag(node); + } + function isWhitespaceSensitiveNode(node) { + return isScriptLikeTag(node) || node.type === "interpolation" || isIndentationSensitiveNode(node); + } + function isIndentationSensitiveNode(node) { + return getNodeCssStyleWhiteSpace(node).startsWith("pre"); + } + function isLeadingSpaceSensitiveNode(node, options) { + const isLeadingSpaceSensitive = _isLeadingSpaceSensitiveNode(); + if (isLeadingSpaceSensitive && !node.prev && node.parent && node.parent.tagDefinition && node.parent.tagDefinition.ignoreFirstLf) { + return node.type === "interpolation"; + } + return isLeadingSpaceSensitive; + function _isLeadingSpaceSensitiveNode() { + if (isFrontMatterNode(node)) { + return false; + } + if ((node.type === "text" || node.type === "interpolation") && node.prev && (node.prev.type === "text" || node.prev.type === "interpolation")) { + return true; + } + if (!node.parent || node.parent.cssDisplay === "none") { + return false; + } + if (isPreLikeNode(node.parent)) { + return true; + } + if (!node.prev && (node.parent.type === "root" || isPreLikeNode(node) && node.parent || isScriptLikeTag(node.parent) || isVueCustomBlock(node.parent, options) || !isFirstChildLeadingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) { + return false; + } + if (node.prev && !isNextLeadingSpaceSensitiveCssDisplay(node.prev.cssDisplay)) { + return false; + } + return true; + } + } + function isTrailingSpaceSensitiveNode(node, options) { + if (isFrontMatterNode(node)) { + return false; + } + if ((node.type === "text" || node.type === "interpolation") && node.next && (node.next.type === "text" || node.next.type === "interpolation")) { + return true; + } + if (!node.parent || node.parent.cssDisplay === "none") { + return false; + } + if (isPreLikeNode(node.parent)) { + return true; + } + if (!node.next && (node.parent.type === "root" || isPreLikeNode(node) && node.parent || isScriptLikeTag(node.parent) || isVueCustomBlock(node.parent, options) || !isLastChildTrailingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) { + return false; + } + if (node.next && !isPrevTrailingSpaceSensitiveCssDisplay(node.next.cssDisplay)) { + return false; + } + return true; + } + function isDanglingSpaceSensitiveNode(node) { + return isDanglingSpaceSensitiveCssDisplay(node.cssDisplay) && !isScriptLikeTag(node); + } + function forceNextEmptyLine(node) { + return isFrontMatterNode(node) || node.next && node.sourceSpan.end && node.sourceSpan.end.line + 1 < node.next.sourceSpan.start.line; + } + function forceBreakContent(node) { + return forceBreakChildren(node) || node.type === "element" && node.children.length > 0 && (["body", "script", "style"].includes(node.name) || node.children.some((child) => hasNonTextChild(child))) || node.firstChild && node.firstChild === node.lastChild && node.firstChild.type !== "text" && hasLeadingLineBreak(node.firstChild) && (!node.lastChild.isTrailingSpaceSensitive || hasTrailingLineBreak(node.lastChild)); + } + function forceBreakChildren(node) { + return node.type === "element" && node.children.length > 0 && (["html", "head", "ul", "ol", "select"].includes(node.name) || node.cssDisplay.startsWith("table") && node.cssDisplay !== "table-cell"); + } + function preferHardlineAsLeadingSpaces(node) { + return preferHardlineAsSurroundingSpaces(node) || node.prev && preferHardlineAsTrailingSpaces(node.prev) || hasSurroundingLineBreak(node); + } + function preferHardlineAsTrailingSpaces(node) { + return preferHardlineAsSurroundingSpaces(node) || node.type === "element" && node.fullName === "br" || hasSurroundingLineBreak(node); + } + function hasSurroundingLineBreak(node) { + return hasLeadingLineBreak(node) && hasTrailingLineBreak(node); + } + function hasLeadingLineBreak(node) { + return node.hasLeadingSpaces && (node.prev ? node.prev.sourceSpan.end.line < node.sourceSpan.start.line : node.parent.type === "root" || node.parent.startSourceSpan.end.line < node.sourceSpan.start.line); + } + function hasTrailingLineBreak(node) { + return node.hasTrailingSpaces && (node.next ? node.next.sourceSpan.start.line > node.sourceSpan.end.line : node.parent.type === "root" || node.parent.endSourceSpan && node.parent.endSourceSpan.start.line > node.sourceSpan.end.line); + } + function preferHardlineAsSurroundingSpaces(node) { + switch (node.type) { + case "ieConditionalComment": + case "comment": + case "directive": + return true; + case "element": + return ["script", "select"].includes(node.name); + } + return false; + } + function getLastDescendant(node) { + return node.lastChild ? getLastDescendant(node.lastChild) : node; + } + function hasNonTextChild(node) { + return node.children && node.children.some((child) => child.type !== "text"); + } + function _inferScriptParser(node) { + const { + type: type2, + lang + } = node.attrMap; + if (type2 === "module" || type2 === "text/javascript" || type2 === "text/babel" || type2 === "application/javascript" || lang === "jsx") { + return "babel"; + } + if (type2 === "application/x-typescript" || lang === "ts" || lang === "tsx") { + return "typescript"; + } + if (type2 === "text/markdown") { + return "markdown"; + } + if (type2 === "text/html") { + return "html"; + } + if (type2 && (type2.endsWith("json") || type2.endsWith("importmap")) || type2 === "speculationrules") { + return "json"; + } + if (type2 === "text/x-handlebars-template") { + return "glimmer"; + } + } + function inferStyleParser(node, options) { + const { + lang + } = node.attrMap; + if (!lang || lang === "postcss" || lang === "css") { + return "css"; + } + if (lang === "scss") { + return "scss"; + } + if (lang === "less") { + return "less"; + } + if (lang === "stylus") { + return inferParserByLanguage("stylus", options); + } + } + function inferScriptParser(node, options) { + if (node.name === "script" && !node.attrMap.src) { + if (!node.attrMap.lang && !node.attrMap.type) { + return "babel"; + } + return _inferScriptParser(node); + } + if (node.name === "style") { + return inferStyleParser(node, options); + } + if (options && isVueNonHtmlBlock(node, options)) { + return _inferScriptParser(node) || !("src" in node.attrMap) && inferParserByLanguage(node.attrMap.lang, options); + } + } + function isBlockLikeCssDisplay(cssDisplay) { + return cssDisplay === "block" || cssDisplay === "list-item" || cssDisplay.startsWith("table"); + } + function isFirstChildLeadingSpaceSensitiveCssDisplay(cssDisplay) { + return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block"; + } + function isLastChildTrailingSpaceSensitiveCssDisplay(cssDisplay) { + return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block"; + } + function isPrevTrailingSpaceSensitiveCssDisplay(cssDisplay) { + return !isBlockLikeCssDisplay(cssDisplay); + } + function isNextLeadingSpaceSensitiveCssDisplay(cssDisplay) { + return !isBlockLikeCssDisplay(cssDisplay); + } + function isDanglingSpaceSensitiveCssDisplay(cssDisplay) { + return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block"; + } + function isPreLikeNode(node) { + return getNodeCssStyleWhiteSpace(node).startsWith("pre"); + } + function countParents(path2, predicate) { + let counter = 0; + for (let i = path2.stack.length - 1; i >= 0; i--) { + const value = path2.stack[i]; + if (value && typeof value === "object" && !Array.isArray(value) && predicate(value)) { + counter++; + } + } + return counter; + } + function hasParent(node, fn) { + let current = node; + while (current) { + if (fn(current)) { + return true; + } + current = current.parent; + } + return false; + } + function getNodeCssStyleDisplay(node, options) { + if (node.prev && node.prev.type === "comment") { + const match = node.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/); + if (match) { + return match[1]; + } + } + let isInSvgForeignObject = false; + if (node.type === "element" && node.namespace === "svg") { + if (hasParent(node, (parent) => parent.fullName === "svg:foreignObject")) { + isInSvgForeignObject = true; + } else { + return node.name === "svg" ? "inline-block" : "block"; + } + } + switch (options.htmlWhitespaceSensitivity) { + case "strict": + return "inline"; + case "ignore": + return "block"; + default: { + if (options.parser === "vue" && node.parent && node.parent.type === "root") { + return "block"; + } + return node.type === "element" && (!node.namespace || isInSvgForeignObject || isUnknownNamespace(node)) && CSS_DISPLAY_TAGS[node.name] || CSS_DISPLAY_DEFAULT; + } + } + } + function getNodeCssStyleWhiteSpace(node) { + return node.type === "element" && (!node.namespace || isUnknownNamespace(node)) && CSS_WHITE_SPACE_TAGS[node.name] || CSS_WHITE_SPACE_DEFAULT; + } + function getMinIndentation(text) { + let minIndentation = Number.POSITIVE_INFINITY; + for (const lineText of text.split("\n")) { + if (lineText.length === 0) { + continue; + } + if (!HTML_WHITESPACE.has(lineText[0])) { + return 0; + } + const indentation = getLeadingHtmlWhitespace(lineText).length; + if (lineText.length === indentation) { + continue; + } + if (indentation < minIndentation) { + minIndentation = indentation; + } + } + return minIndentation === Number.POSITIVE_INFINITY ? 0 : minIndentation; + } + function dedentString(text, minIndent = getMinIndentation(text)) { + return minIndent === 0 ? text : text.split("\n").map((lineText) => lineText.slice(minIndent)).join("\n"); + } + function countChars(text, char) { + let counter = 0; + for (let i = 0; i < text.length; i++) { + if (text[i] === char) { + counter++; + } + } + return counter; + } + function unescapeQuoteEntities(text) { + return text.replace(/'/g, "'").replace(/"/g, '"'); + } + var vueRootElementsSet = /* @__PURE__ */ new Set(["template", "style", "script"]); + function isVueCustomBlock(node, options) { + return isVueSfcBlock(node, options) && !vueRootElementsSet.has(node.fullName); + } + function isVueSfcBlock(node, options) { + return options.parser === "vue" && node.type === "element" && node.parent.type === "root" && node.fullName.toLowerCase() !== "html"; + } + function isVueNonHtmlBlock(node, options) { + return isVueSfcBlock(node, options) && (isVueCustomBlock(node, options) || node.attrMap.lang && node.attrMap.lang !== "html"); + } + function isVueSlotAttribute(attribute) { + const attributeName = attribute.fullName; + return attributeName.charAt(0) === "#" || attributeName === "slot-scope" || attributeName === "v-slot" || attributeName.startsWith("v-slot:"); + } + function isVueSfcBindingsAttribute(attribute, options) { + const element = attribute.parent; + if (!isVueSfcBlock(element, options)) { + return false; + } + const tagName = element.fullName; + const attributeName = attribute.fullName; + return tagName === "script" && attributeName === "setup" || tagName === "style" && attributeName === "vars"; + } + function getTextValueParts(node, value = node.value) { + return node.parent.isWhitespaceSensitive ? node.parent.isIndentationSensitive ? replaceTextEndOfLine(value) : replaceTextEndOfLine(dedentString(htmlTrimPreserveIndentation(value)), hardline) : getDocParts(join(line, splitByHtmlWhitespace(value))); + } + function isVueScriptTag(node, options) { + return isVueSfcBlock(node, options) && node.name === "script"; + } + module22.exports = { + htmlTrim, + htmlTrimPreserveIndentation, + hasHtmlWhitespace, + getLeadingAndTrailingHtmlWhitespace, + canHaveInterpolation, + countChars, + countParents, + dedentString, + forceBreakChildren, + forceBreakContent, + forceNextEmptyLine, + getLastDescendant, + getNodeCssStyleDisplay, + getNodeCssStyleWhiteSpace, + hasPrettierIgnore, + inferScriptParser, + isVueCustomBlock, + isVueNonHtmlBlock, + isVueScriptTag, + isVueSlotAttribute, + isVueSfcBindingsAttribute, + isVueSfcBlock, + isDanglingSpaceSensitiveNode, + isIndentationSensitiveNode, + isLeadingSpaceSensitiveNode, + isPreLikeNode, + isScriptLikeTag, + isTextLikeNode, + isTrailingSpaceSensitiveNode, + isWhitespaceSensitiveNode, + isUnknownNamespace, + preferHardlineAsLeadingSpaces, + preferHardlineAsTrailingSpaces, + shouldPreserveContent, + unescapeQuoteEntities, + getTextValueParts + }; + } + }); + var require_chars = __commonJS22({ + "node_modules/angular-html-parser/lib/compiler/src/chars.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.$EOF = 0; + exports2.$BSPACE = 8; + exports2.$TAB = 9; + exports2.$LF = 10; + exports2.$VTAB = 11; + exports2.$FF = 12; + exports2.$CR = 13; + exports2.$SPACE = 32; + exports2.$BANG = 33; + exports2.$DQ = 34; + exports2.$HASH = 35; + exports2.$$ = 36; + exports2.$PERCENT = 37; + exports2.$AMPERSAND = 38; + exports2.$SQ = 39; + exports2.$LPAREN = 40; + exports2.$RPAREN = 41; + exports2.$STAR = 42; + exports2.$PLUS = 43; + exports2.$COMMA = 44; + exports2.$MINUS = 45; + exports2.$PERIOD = 46; + exports2.$SLASH = 47; + exports2.$COLON = 58; + exports2.$SEMICOLON = 59; + exports2.$LT = 60; + exports2.$EQ = 61; + exports2.$GT = 62; + exports2.$QUESTION = 63; + exports2.$0 = 48; + exports2.$7 = 55; + exports2.$9 = 57; + exports2.$A = 65; + exports2.$E = 69; + exports2.$F = 70; + exports2.$X = 88; + exports2.$Z = 90; + exports2.$LBRACKET = 91; + exports2.$BACKSLASH = 92; + exports2.$RBRACKET = 93; + exports2.$CARET = 94; + exports2.$_ = 95; + exports2.$a = 97; + exports2.$b = 98; + exports2.$e = 101; + exports2.$f = 102; + exports2.$n = 110; + exports2.$r = 114; + exports2.$t = 116; + exports2.$u = 117; + exports2.$v = 118; + exports2.$x = 120; + exports2.$z = 122; + exports2.$LBRACE = 123; + exports2.$BAR = 124; + exports2.$RBRACE = 125; + exports2.$NBSP = 160; + exports2.$PIPE = 124; + exports2.$TILDA = 126; + exports2.$AT = 64; + exports2.$BT = 96; + function isWhitespace2(code) { + return code >= exports2.$TAB && code <= exports2.$SPACE || code == exports2.$NBSP; + } + exports2.isWhitespace = isWhitespace2; + function isDigit(code) { + return exports2.$0 <= code && code <= exports2.$9; + } + exports2.isDigit = isDigit; + function isAsciiLetter(code) { + return code >= exports2.$a && code <= exports2.$z || code >= exports2.$A && code <= exports2.$Z; + } + exports2.isAsciiLetter = isAsciiLetter; + function isAsciiHexDigit(code) { + return code >= exports2.$a && code <= exports2.$f || code >= exports2.$A && code <= exports2.$F || isDigit(code); + } + exports2.isAsciiHexDigit = isAsciiHexDigit; + function isNewLine(code) { + return code === exports2.$LF || code === exports2.$CR; + } + exports2.isNewLine = isNewLine; + function isOctalDigit(code) { + return exports2.$0 <= code && code <= exports2.$7; + } + exports2.isOctalDigit = isOctalDigit; + } + }); + var require_static_symbol = __commonJS22({ + "node_modules/angular-html-parser/lib/compiler/src/aot/static_symbol.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var StaticSymbol = class { + constructor(filePath, name, members) { + this.filePath = filePath; + this.name = name; + this.members = members; + } + assertNoMembers() { + if (this.members.length) { + throw new Error(`Illegal state: symbol without members expected, but got ${JSON.stringify(this)}.`); + } + } + }; + exports2.StaticSymbol = StaticSymbol; + var StaticSymbolCache = class { + constructor() { + this.cache = /* @__PURE__ */ new Map(); + } + get(declarationFile, name, members) { + members = members || []; + const memberSuffix = members.length ? `.${members.join(".")}` : ""; + const key = `"${declarationFile}".${name}${memberSuffix}`; + let result = this.cache.get(key); + if (!result) { + result = new StaticSymbol(declarationFile, name, members); + this.cache.set(key, result); + } + return result; + } + }; + exports2.StaticSymbolCache = StaticSymbolCache; + } + }); + var require_util3 = __commonJS22({ + "node_modules/angular-html-parser/lib/compiler/src/util.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var DASH_CASE_REGEXP = /-+([a-z0-9])/g; + function dashCaseToCamelCase(input) { + return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase()); + } + exports2.dashCaseToCamelCase = dashCaseToCamelCase; + function splitAtColon(input, defaultValues) { + return _splitAt(input, ":", defaultValues); + } + exports2.splitAtColon = splitAtColon; + function splitAtPeriod(input, defaultValues) { + return _splitAt(input, ".", defaultValues); + } + exports2.splitAtPeriod = splitAtPeriod; + function _splitAt(input, character, defaultValues) { + const characterIndex = input.indexOf(character); + if (characterIndex == -1) + return defaultValues; + return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()]; + } + function visitValue(value, visitor, context) { + if (Array.isArray(value)) { + return visitor.visitArray(value, context); + } + if (isStrictStringMap(value)) { + return visitor.visitStringMap(value, context); + } + if (value == null || typeof value == "string" || typeof value == "number" || typeof value == "boolean") { + return visitor.visitPrimitive(value, context); + } + return visitor.visitOther(value, context); + } + exports2.visitValue = visitValue; + function isDefined(val) { + return val !== null && val !== void 0; + } + exports2.isDefined = isDefined; + function noUndefined(val) { + return val === void 0 ? null : val; + } + exports2.noUndefined = noUndefined; + var ValueTransformer = class { + visitArray(arr, context) { + return arr.map((value) => visitValue(value, this, context)); + } + visitStringMap(map2, context) { + const result = {}; + Object.keys(map2).forEach((key) => { + result[key] = visitValue(map2[key], this, context); + }); + return result; + } + visitPrimitive(value, context) { + return value; + } + visitOther(value, context) { + return value; + } + }; + exports2.ValueTransformer = ValueTransformer; + exports2.SyncAsync = { + assertSync: (value) => { + if (isPromise(value)) { + throw new Error(`Illegal state: value cannot be a promise`); + } + return value; + }, + then: (value, cb) => { + return isPromise(value) ? value.then(cb) : cb(value); + }, + all: (syncAsyncValues) => { + return syncAsyncValues.some(isPromise) ? Promise.all(syncAsyncValues) : syncAsyncValues; + } + }; + function error2(msg) { + throw new Error(`Internal Error: ${msg}`); + } + exports2.error = error2; + function syntaxError(msg, parseErrors) { + const error22 = Error(msg); + error22[ERROR_SYNTAX_ERROR] = true; + if (parseErrors) + error22[ERROR_PARSE_ERRORS] = parseErrors; + return error22; + } + exports2.syntaxError = syntaxError; + var ERROR_SYNTAX_ERROR = "ngSyntaxError"; + var ERROR_PARSE_ERRORS = "ngParseErrors"; + function isSyntaxError(error22) { + return error22[ERROR_SYNTAX_ERROR]; + } + exports2.isSyntaxError = isSyntaxError; + function getParseErrors(error22) { + return error22[ERROR_PARSE_ERRORS] || []; + } + exports2.getParseErrors = getParseErrors; + function escapeRegExp(s) { + return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1"); + } + exports2.escapeRegExp = escapeRegExp; + var STRING_MAP_PROTO = Object.getPrototypeOf({}); + function isStrictStringMap(obj) { + return typeof obj === "object" && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO; + } + function utf8Encode(str2) { + let encoded = ""; + for (let index = 0; index < str2.length; index++) { + let codePoint = str2.charCodeAt(index); + if (codePoint >= 55296 && codePoint <= 56319 && str2.length > index + 1) { + const low = str2.charCodeAt(index + 1); + if (low >= 56320 && low <= 57343) { + index++; + codePoint = (codePoint - 55296 << 10) + low - 56320 + 65536; + } + } + if (codePoint <= 127) { + encoded += String.fromCharCode(codePoint); + } else if (codePoint <= 2047) { + encoded += String.fromCharCode(codePoint >> 6 & 31 | 192, codePoint & 63 | 128); + } else if (codePoint <= 65535) { + encoded += String.fromCharCode(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128); + } else if (codePoint <= 2097151) { + encoded += String.fromCharCode(codePoint >> 18 & 7 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128); + } + } + return encoded; + } + exports2.utf8Encode = utf8Encode; + function stringify(token) { + if (typeof token === "string") { + return token; + } + if (token instanceof Array) { + return "[" + token.map(stringify).join(", ") + "]"; + } + if (token == null) { + return "" + token; + } + if (token.overriddenName) { + return `${token.overriddenName}`; + } + if (token.name) { + return `${token.name}`; + } + if (!token.toString) { + return "object"; + } + const res = token.toString(); + if (res == null) { + return "" + res; + } + const newLineIndex = res.indexOf("\n"); + return newLineIndex === -1 ? res : res.substring(0, newLineIndex); + } + exports2.stringify = stringify; + function resolveForwardRef(type2) { + if (typeof type2 === "function" && type2.hasOwnProperty("__forward_ref__")) { + return type2(); + } else { + return type2; + } + } + exports2.resolveForwardRef = resolveForwardRef; + function isPromise(obj) { + return !!obj && typeof obj.then === "function"; + } + exports2.isPromise = isPromise; + var Version = class { + constructor(full) { + this.full = full; + const splits = full.split("."); + this.major = splits[0]; + this.minor = splits[1]; + this.patch = splits.slice(2).join("."); + } + }; + exports2.Version = Version; + var __window = typeof window !== "undefined" && window; + var __self = typeof self !== "undefined" && typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope && self; + var __global = typeof global !== "undefined" && global; + var _global = __global || __window || __self; + exports2.global = _global; + } + }); + var require_compile_metadata = __commonJS22({ + "node_modules/angular-html-parser/lib/compiler/src/compile_metadata.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var static_symbol_1 = require_static_symbol(); + var util_1 = require_util3(); + var HOST_REG_EXP = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/; + function sanitizeIdentifier(name) { + return name.replace(/\W/g, "_"); + } + exports2.sanitizeIdentifier = sanitizeIdentifier; + var _anonymousTypeIndex = 0; + function identifierName(compileIdentifier) { + if (!compileIdentifier || !compileIdentifier.reference) { + return null; + } + const ref = compileIdentifier.reference; + if (ref instanceof static_symbol_1.StaticSymbol) { + return ref.name; + } + if (ref["__anonymousType"]) { + return ref["__anonymousType"]; + } + let identifier = util_1.stringify(ref); + if (identifier.indexOf("(") >= 0) { + identifier = `anonymous_${_anonymousTypeIndex++}`; + ref["__anonymousType"] = identifier; + } else { + identifier = sanitizeIdentifier(identifier); + } + return identifier; + } + exports2.identifierName = identifierName; + function identifierModuleUrl(compileIdentifier) { + const ref = compileIdentifier.reference; + if (ref instanceof static_symbol_1.StaticSymbol) { + return ref.filePath; + } + return `./${util_1.stringify(ref)}`; + } + exports2.identifierModuleUrl = identifierModuleUrl; + function viewClassName(compType, embeddedTemplateIndex) { + return `View_${identifierName({ + reference: compType + })}_${embeddedTemplateIndex}`; + } + exports2.viewClassName = viewClassName; + function rendererTypeName(compType) { + return `RenderType_${identifierName({ + reference: compType + })}`; + } + exports2.rendererTypeName = rendererTypeName; + function hostViewClassName(compType) { + return `HostView_${identifierName({ + reference: compType + })}`; + } + exports2.hostViewClassName = hostViewClassName; + function componentFactoryName(compType) { + return `${identifierName({ + reference: compType + })}NgFactory`; + } + exports2.componentFactoryName = componentFactoryName; + var CompileSummaryKind; + (function(CompileSummaryKind2) { + CompileSummaryKind2[CompileSummaryKind2["Pipe"] = 0] = "Pipe"; + CompileSummaryKind2[CompileSummaryKind2["Directive"] = 1] = "Directive"; + CompileSummaryKind2[CompileSummaryKind2["NgModule"] = 2] = "NgModule"; + CompileSummaryKind2[CompileSummaryKind2["Injectable"] = 3] = "Injectable"; + })(CompileSummaryKind = exports2.CompileSummaryKind || (exports2.CompileSummaryKind = {})); + function tokenName(token) { + return token.value != null ? sanitizeIdentifier(token.value) : identifierName(token.identifier); + } + exports2.tokenName = tokenName; + function tokenReference(token) { + if (token.identifier != null) { + return token.identifier.reference; + } else { + return token.value; + } + } + exports2.tokenReference = tokenReference; + var CompileStylesheetMetadata = class { + constructor({ + moduleUrl, + styles, + styleUrls + } = {}) { + this.moduleUrl = moduleUrl || null; + this.styles = _normalizeArray(styles); + this.styleUrls = _normalizeArray(styleUrls); + } + }; + exports2.CompileStylesheetMetadata = CompileStylesheetMetadata; + var CompileTemplateMetadata = class { + constructor({ + encapsulation, + template, + templateUrl, + htmlAst, + styles, + styleUrls, + externalStylesheets, + animations, + ngContentSelectors, + interpolation, + isInline, + preserveWhitespaces + }) { + this.encapsulation = encapsulation; + this.template = template; + this.templateUrl = templateUrl; + this.htmlAst = htmlAst; + this.styles = _normalizeArray(styles); + this.styleUrls = _normalizeArray(styleUrls); + this.externalStylesheets = _normalizeArray(externalStylesheets); + this.animations = animations ? flatten(animations) : []; + this.ngContentSelectors = ngContentSelectors || []; + if (interpolation && interpolation.length != 2) { + throw new Error(`'interpolation' should have a start and an end symbol.`); + } + this.interpolation = interpolation; + this.isInline = isInline; + this.preserveWhitespaces = preserveWhitespaces; + } + toSummary() { + return { + ngContentSelectors: this.ngContentSelectors, + encapsulation: this.encapsulation, + styles: this.styles, + animations: this.animations + }; + } + }; + exports2.CompileTemplateMetadata = CompileTemplateMetadata; + var CompileDirectiveMetadata = class { + static create({ + isHost, + type: type2, + isComponent, + selector, + exportAs, + changeDetection, + inputs: inputs2, + outputs, + host, + providers, + viewProviders, + queries, + guards, + viewQueries, + entryComponents, + template, + componentViewType, + rendererType, + componentFactory + }) { + const hostListeners = {}; + const hostProperties = {}; + const hostAttributes = {}; + if (host != null) { + Object.keys(host).forEach((key) => { + const value = host[key]; + const matches = key.match(HOST_REG_EXP); + if (matches === null) { + hostAttributes[key] = value; + } else if (matches[1] != null) { + hostProperties[matches[1]] = value; + } else if (matches[2] != null) { + hostListeners[matches[2]] = value; + } + }); + } + const inputsMap = {}; + if (inputs2 != null) { + inputs2.forEach((bindConfig) => { + const parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]); + inputsMap[parts[0]] = parts[1]; + }); + } + const outputsMap = {}; + if (outputs != null) { + outputs.forEach((bindConfig) => { + const parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]); + outputsMap[parts[0]] = parts[1]; + }); + } + return new CompileDirectiveMetadata({ + isHost, + type: type2, + isComponent: !!isComponent, + selector, + exportAs, + changeDetection, + inputs: inputsMap, + outputs: outputsMap, + hostListeners, + hostProperties, + hostAttributes, + providers, + viewProviders, + queries, + guards, + viewQueries, + entryComponents, + template, + componentViewType, + rendererType, + componentFactory + }); + } + constructor({ + isHost, + type: type2, + isComponent, + selector, + exportAs, + changeDetection, + inputs: inputs2, + outputs, + hostListeners, + hostProperties, + hostAttributes, + providers, + viewProviders, + queries, + guards, + viewQueries, + entryComponents, + template, + componentViewType, + rendererType, + componentFactory + }) { + this.isHost = !!isHost; + this.type = type2; + this.isComponent = isComponent; + this.selector = selector; + this.exportAs = exportAs; + this.changeDetection = changeDetection; + this.inputs = inputs2; + this.outputs = outputs; + this.hostListeners = hostListeners; + this.hostProperties = hostProperties; + this.hostAttributes = hostAttributes; + this.providers = _normalizeArray(providers); + this.viewProviders = _normalizeArray(viewProviders); + this.queries = _normalizeArray(queries); + this.guards = guards; + this.viewQueries = _normalizeArray(viewQueries); + this.entryComponents = _normalizeArray(entryComponents); + this.template = template; + this.componentViewType = componentViewType; + this.rendererType = rendererType; + this.componentFactory = componentFactory; + } + toSummary() { + return { + summaryKind: CompileSummaryKind.Directive, + type: this.type, + isComponent: this.isComponent, + selector: this.selector, + exportAs: this.exportAs, + inputs: this.inputs, + outputs: this.outputs, + hostListeners: this.hostListeners, + hostProperties: this.hostProperties, + hostAttributes: this.hostAttributes, + providers: this.providers, + viewProviders: this.viewProviders, + queries: this.queries, + guards: this.guards, + viewQueries: this.viewQueries, + entryComponents: this.entryComponents, + changeDetection: this.changeDetection, + template: this.template && this.template.toSummary(), + componentViewType: this.componentViewType, + rendererType: this.rendererType, + componentFactory: this.componentFactory + }; + } + }; + exports2.CompileDirectiveMetadata = CompileDirectiveMetadata; + var CompilePipeMetadata = class { + constructor({ + type: type2, + name, + pure + }) { + this.type = type2; + this.name = name; + this.pure = !!pure; + } + toSummary() { + return { + summaryKind: CompileSummaryKind.Pipe, + type: this.type, + name: this.name, + pure: this.pure + }; + } + }; + exports2.CompilePipeMetadata = CompilePipeMetadata; + var CompileShallowModuleMetadata = class { + }; + exports2.CompileShallowModuleMetadata = CompileShallowModuleMetadata; + var CompileNgModuleMetadata = class { + constructor({ + type: type2, + providers, + declaredDirectives, + exportedDirectives, + declaredPipes, + exportedPipes, + entryComponents, + bootstrapComponents, + importedModules, + exportedModules, + schemas, + transitiveModule, + id + }) { + this.type = type2 || null; + this.declaredDirectives = _normalizeArray(declaredDirectives); + this.exportedDirectives = _normalizeArray(exportedDirectives); + this.declaredPipes = _normalizeArray(declaredPipes); + this.exportedPipes = _normalizeArray(exportedPipes); + this.providers = _normalizeArray(providers); + this.entryComponents = _normalizeArray(entryComponents); + this.bootstrapComponents = _normalizeArray(bootstrapComponents); + this.importedModules = _normalizeArray(importedModules); + this.exportedModules = _normalizeArray(exportedModules); + this.schemas = _normalizeArray(schemas); + this.id = id || null; + this.transitiveModule = transitiveModule || null; + } + toSummary() { + const module3 = this.transitiveModule; + return { + summaryKind: CompileSummaryKind.NgModule, + type: this.type, + entryComponents: module3.entryComponents, + providers: module3.providers, + modules: module3.modules, + exportedDirectives: module3.exportedDirectives, + exportedPipes: module3.exportedPipes + }; + } + }; + exports2.CompileNgModuleMetadata = CompileNgModuleMetadata; + var TransitiveCompileNgModuleMetadata = class { + constructor() { + this.directivesSet = /* @__PURE__ */ new Set(); + this.directives = []; + this.exportedDirectivesSet = /* @__PURE__ */ new Set(); + this.exportedDirectives = []; + this.pipesSet = /* @__PURE__ */ new Set(); + this.pipes = []; + this.exportedPipesSet = /* @__PURE__ */ new Set(); + this.exportedPipes = []; + this.modulesSet = /* @__PURE__ */ new Set(); + this.modules = []; + this.entryComponentsSet = /* @__PURE__ */ new Set(); + this.entryComponents = []; + this.providers = []; + } + addProvider(provider, module3) { + this.providers.push({ + provider, + module: module3 + }); + } + addDirective(id) { + if (!this.directivesSet.has(id.reference)) { + this.directivesSet.add(id.reference); + this.directives.push(id); + } + } + addExportedDirective(id) { + if (!this.exportedDirectivesSet.has(id.reference)) { + this.exportedDirectivesSet.add(id.reference); + this.exportedDirectives.push(id); + } + } + addPipe(id) { + if (!this.pipesSet.has(id.reference)) { + this.pipesSet.add(id.reference); + this.pipes.push(id); + } + } + addExportedPipe(id) { + if (!this.exportedPipesSet.has(id.reference)) { + this.exportedPipesSet.add(id.reference); + this.exportedPipes.push(id); + } + } + addModule(id) { + if (!this.modulesSet.has(id.reference)) { + this.modulesSet.add(id.reference); + this.modules.push(id); + } + } + addEntryComponent(ec) { + if (!this.entryComponentsSet.has(ec.componentType)) { + this.entryComponentsSet.add(ec.componentType); + this.entryComponents.push(ec); + } + } + }; + exports2.TransitiveCompileNgModuleMetadata = TransitiveCompileNgModuleMetadata; + function _normalizeArray(obj) { + return obj || []; + } + var ProviderMeta = class { + constructor(token, { + useClass, + useValue, + useExisting, + useFactory, + deps, + multi + }) { + this.token = token; + this.useClass = useClass || null; + this.useValue = useValue; + this.useExisting = useExisting; + this.useFactory = useFactory || null; + this.dependencies = deps || null; + this.multi = !!multi; + } + }; + exports2.ProviderMeta = ProviderMeta; + function flatten(list) { + return list.reduce((flat, item) => { + const flatItem = Array.isArray(item) ? flatten(item) : item; + return flat.concat(flatItem); + }, []); + } + exports2.flatten = flatten; + function jitSourceUrl(url) { + return url.replace(/(\w+:\/\/[\w:-]+)?(\/+)?/, "ng:///"); + } + function templateSourceUrl(ngModuleType, compMeta, templateMeta) { + let url; + if (templateMeta.isInline) { + if (compMeta.type.reference instanceof static_symbol_1.StaticSymbol) { + url = `${compMeta.type.reference.filePath}.${compMeta.type.reference.name}.html`; + } else { + url = `${identifierName(ngModuleType)}/${identifierName(compMeta.type)}.html`; + } + } else { + url = templateMeta.templateUrl; + } + return compMeta.type.reference instanceof static_symbol_1.StaticSymbol ? url : jitSourceUrl(url); + } + exports2.templateSourceUrl = templateSourceUrl; + function sharedStylesheetJitUrl(meta, id) { + const pathParts = meta.moduleUrl.split(/\/\\/g); + const baseName = pathParts[pathParts.length - 1]; + return jitSourceUrl(`css/${id}${baseName}.ngstyle.js`); + } + exports2.sharedStylesheetJitUrl = sharedStylesheetJitUrl; + function ngModuleJitUrl(moduleMeta) { + return jitSourceUrl(`${identifierName(moduleMeta.type)}/module.ngfactory.js`); + } + exports2.ngModuleJitUrl = ngModuleJitUrl; + function templateJitUrl(ngModuleType, compMeta) { + return jitSourceUrl(`${identifierName(ngModuleType)}/${identifierName(compMeta.type)}.ngfactory.js`); + } + exports2.templateJitUrl = templateJitUrl; + } + }); + var require_parse_util = __commonJS22({ + "node_modules/angular-html-parser/lib/compiler/src/parse_util.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var chars = require_chars(); + var compile_metadata_1 = require_compile_metadata(); + var ParseLocation = class { + constructor(file, offset, line, col) { + this.file = file; + this.offset = offset; + this.line = line; + this.col = col; + } + toString() { + return this.offset != null ? `${this.file.url}@${this.line}:${this.col}` : this.file.url; + } + moveBy(delta) { + const source = this.file.content; + const len = source.length; + let offset = this.offset; + let line = this.line; + let col = this.col; + while (offset > 0 && delta < 0) { + offset--; + delta++; + const ch = source.charCodeAt(offset); + if (ch == chars.$LF) { + line--; + const priorLine = source.substr(0, offset - 1).lastIndexOf(String.fromCharCode(chars.$LF)); + col = priorLine > 0 ? offset - priorLine : offset; + } else { + col--; + } + } + while (offset < len && delta > 0) { + const ch = source.charCodeAt(offset); + offset++; + delta--; + if (ch == chars.$LF) { + line++; + col = 0; + } else { + col++; + } + } + return new ParseLocation(this.file, offset, line, col); + } + getContext(maxChars, maxLines) { + const content = this.file.content; + let startOffset = this.offset; + if (startOffset != null) { + if (startOffset > content.length - 1) { + startOffset = content.length - 1; + } + let endOffset = startOffset; + let ctxChars = 0; + let ctxLines = 0; + while (ctxChars < maxChars && startOffset > 0) { + startOffset--; + ctxChars++; + if (content[startOffset] == "\n") { + if (++ctxLines == maxLines) { + break; + } + } + } + ctxChars = 0; + ctxLines = 0; + while (ctxChars < maxChars && endOffset < content.length - 1) { + endOffset++; + ctxChars++; + if (content[endOffset] == "\n") { + if (++ctxLines == maxLines) { + break; + } + } + } + return { + before: content.substring(startOffset, this.offset), + after: content.substring(this.offset, endOffset + 1) + }; + } + return null; + } + }; + exports2.ParseLocation = ParseLocation; + var ParseSourceFile = class { + constructor(content, url) { + this.content = content; + this.url = url; + } + }; + exports2.ParseSourceFile = ParseSourceFile; + var ParseSourceSpan = class { + constructor(start, end, details = null) { + this.start = start; + this.end = end; + this.details = details; + } + toString() { + return this.start.file.content.substring(this.start.offset, this.end.offset); + } + }; + exports2.ParseSourceSpan = ParseSourceSpan; + exports2.EMPTY_PARSE_LOCATION = new ParseLocation(new ParseSourceFile("", ""), 0, 0, 0); + exports2.EMPTY_SOURCE_SPAN = new ParseSourceSpan(exports2.EMPTY_PARSE_LOCATION, exports2.EMPTY_PARSE_LOCATION); + var ParseErrorLevel; + (function(ParseErrorLevel2) { + ParseErrorLevel2[ParseErrorLevel2["WARNING"] = 0] = "WARNING"; + ParseErrorLevel2[ParseErrorLevel2["ERROR"] = 1] = "ERROR"; + })(ParseErrorLevel = exports2.ParseErrorLevel || (exports2.ParseErrorLevel = {})); + var ParseError = class { + constructor(span, msg, level = ParseErrorLevel.ERROR) { + this.span = span; + this.msg = msg; + this.level = level; + } + contextualMessage() { + const ctx = this.span.start.getContext(100, 3); + return ctx ? `${this.msg} ("${ctx.before}[${ParseErrorLevel[this.level]} ->]${ctx.after}")` : this.msg; + } + toString() { + const details = this.span.details ? `, ${this.span.details}` : ""; + return `${this.contextualMessage()}: ${this.span.start}${details}`; + } + }; + exports2.ParseError = ParseError; + function typeSourceSpan(kind, type2) { + const moduleUrl = compile_metadata_1.identifierModuleUrl(type2); + const sourceFileName = moduleUrl != null ? `in ${kind} ${compile_metadata_1.identifierName(type2)} in ${moduleUrl}` : `in ${kind} ${compile_metadata_1.identifierName(type2)}`; + const sourceFile = new ParseSourceFile("", sourceFileName); + return new ParseSourceSpan(new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1)); + } + exports2.typeSourceSpan = typeSourceSpan; + function r3JitTypeSourceSpan(kind, typeName, sourceUrl) { + const sourceFileName = `in ${kind} ${typeName} in ${sourceUrl}`; + const sourceFile = new ParseSourceFile("", sourceFileName); + return new ParseSourceSpan(new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1)); + } + exports2.r3JitTypeSourceSpan = r3JitTypeSourceSpan; + } + }); + var require_print_preprocess3 = __commonJS22({ + "src/language-html/print-preprocess.js"(exports2, module22) { + "use strict"; + var { + ParseSourceSpan + } = require_parse_util(); + var { + htmlTrim, + getLeadingAndTrailingHtmlWhitespace, + hasHtmlWhitespace, + canHaveInterpolation, + getNodeCssStyleDisplay, + isDanglingSpaceSensitiveNode, + isIndentationSensitiveNode, + isLeadingSpaceSensitiveNode, + isTrailingSpaceSensitiveNode, + isWhitespaceSensitiveNode, + isVueScriptTag + } = require_utils11(); + var PREPROCESS_PIPELINE = [removeIgnorableFirstLf, mergeIfConditionalStartEndCommentIntoElementOpeningTag, mergeCdataIntoText, extractInterpolation, extractWhitespaces, addCssDisplay, addIsSelfClosing, addHasHtmComponentClosingTag, addIsSpaceSensitive, mergeSimpleElementIntoText, markTsScript]; + function preprocess(ast, options) { + for (const fn of PREPROCESS_PIPELINE) { + fn(ast, options); + } + return ast; + } + function removeIgnorableFirstLf(ast) { + ast.walk((node) => { + if (node.type === "element" && node.tagDefinition.ignoreFirstLf && node.children.length > 0 && node.children[0].type === "text" && node.children[0].value[0] === "\n") { + const text = node.children[0]; + if (text.value.length === 1) { + node.removeChild(text); + } else { + text.value = text.value.slice(1); + } + } + }); + } + function mergeIfConditionalStartEndCommentIntoElementOpeningTag(ast) { + const isTarget = (node) => node.type === "element" && node.prev && node.prev.type === "ieConditionalStartComment" && node.prev.sourceSpan.end.offset === node.startSourceSpan.start.offset && node.firstChild && node.firstChild.type === "ieConditionalEndComment" && node.firstChild.sourceSpan.start.offset === node.startSourceSpan.end.offset; + ast.walk((node) => { + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (!isTarget(child)) { + continue; + } + const ieConditionalStartComment = child.prev; + const ieConditionalEndComment = child.firstChild; + node.removeChild(ieConditionalStartComment); + i--; + const startSourceSpan = new ParseSourceSpan(ieConditionalStartComment.sourceSpan.start, ieConditionalEndComment.sourceSpan.end); + const sourceSpan = new ParseSourceSpan(startSourceSpan.start, child.sourceSpan.end); + child.condition = ieConditionalStartComment.condition; + child.sourceSpan = sourceSpan; + child.startSourceSpan = startSourceSpan; + child.removeChild(ieConditionalEndComment); + } + } + }); + } + function mergeNodeIntoText(ast, shouldMerge, getValue) { + ast.walk((node) => { + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (child.type !== "text" && !shouldMerge(child)) { + continue; + } + if (child.type !== "text") { + child.type = "text"; + child.value = getValue(child); + } + const prevChild = child.prev; + if (!prevChild || prevChild.type !== "text") { + continue; + } + prevChild.value += child.value; + prevChild.sourceSpan = new ParseSourceSpan(prevChild.sourceSpan.start, child.sourceSpan.end); + node.removeChild(child); + i--; + } + } + }); + } + function mergeCdataIntoText(ast) { + return mergeNodeIntoText(ast, (node) => node.type === "cdata", (node) => ``); + } + function mergeSimpleElementIntoText(ast) { + const isSimpleElement = (node) => node.type === "element" && node.attrs.length === 0 && node.children.length === 1 && node.firstChild.type === "text" && !hasHtmlWhitespace(node.children[0].value) && !node.firstChild.hasLeadingSpaces && !node.firstChild.hasTrailingSpaces && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces && node.prev && node.prev.type === "text" && node.next && node.next.type === "text"; + ast.walk((node) => { + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (!isSimpleElement(child)) { + continue; + } + const prevChild = child.prev; + const nextChild = child.next; + prevChild.value += `<${child.rawName}>` + child.firstChild.value + `` + nextChild.value; + prevChild.sourceSpan = new ParseSourceSpan(prevChild.sourceSpan.start, nextChild.sourceSpan.end); + prevChild.isTrailingSpaceSensitive = nextChild.isTrailingSpaceSensitive; + prevChild.hasTrailingSpaces = nextChild.hasTrailingSpaces; + node.removeChild(child); + i--; + node.removeChild(nextChild); + } + } + }); + } + function extractInterpolation(ast, options) { + if (options.parser === "html") { + return; + } + const interpolationRegex = /{{(.+?)}}/s; + ast.walk((node) => { + if (!canHaveInterpolation(node)) { + return; + } + for (const child of node.children) { + if (child.type !== "text") { + continue; + } + let startSourceSpan = child.sourceSpan.start; + let endSourceSpan = null; + const components = child.value.split(interpolationRegex); + for (let i = 0; i < components.length; i++, startSourceSpan = endSourceSpan) { + const value = components[i]; + if (i % 2 === 0) { + endSourceSpan = startSourceSpan.moveBy(value.length); + if (value.length > 0) { + node.insertChildBefore(child, { + type: "text", + value, + sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan) + }); + } + continue; + } + endSourceSpan = startSourceSpan.moveBy(value.length + 4); + node.insertChildBefore(child, { + type: "interpolation", + sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan), + children: value.length === 0 ? [] : [{ + type: "text", + value, + sourceSpan: new ParseSourceSpan(startSourceSpan.moveBy(2), endSourceSpan.moveBy(-2)) + }] + }); + } + node.removeChild(child); + } + }); + } + function extractWhitespaces(ast) { + ast.walk((node) => { + if (!node.children) { + return; + } + if (node.children.length === 0 || node.children.length === 1 && node.children[0].type === "text" && htmlTrim(node.children[0].value).length === 0) { + node.hasDanglingSpaces = node.children.length > 0; + node.children = []; + return; + } + const isWhitespaceSensitive = isWhitespaceSensitiveNode(node); + const isIndentationSensitive = isIndentationSensitiveNode(node); + if (!isWhitespaceSensitive) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (child.type !== "text") { + continue; + } + const { + leadingWhitespace, + text, + trailingWhitespace + } = getLeadingAndTrailingHtmlWhitespace(child.value); + const prevChild = child.prev; + const nextChild = child.next; + if (!text) { + node.removeChild(child); + i--; + if (leadingWhitespace || trailingWhitespace) { + if (prevChild) { + prevChild.hasTrailingSpaces = true; + } + if (nextChild) { + nextChild.hasLeadingSpaces = true; + } + } + } else { + child.value = text; + child.sourceSpan = new ParseSourceSpan(child.sourceSpan.start.moveBy(leadingWhitespace.length), child.sourceSpan.end.moveBy(-trailingWhitespace.length)); + if (leadingWhitespace) { + if (prevChild) { + prevChild.hasTrailingSpaces = true; + } + child.hasLeadingSpaces = true; + } + if (trailingWhitespace) { + child.hasTrailingSpaces = true; + if (nextChild) { + nextChild.hasLeadingSpaces = true; + } + } + } + } + } + node.isWhitespaceSensitive = isWhitespaceSensitive; + node.isIndentationSensitive = isIndentationSensitive; + }); + } + function addIsSelfClosing(ast) { + ast.walk((node) => { + node.isSelfClosing = !node.children || node.type === "element" && (node.tagDefinition.isVoid || node.startSourceSpan === node.endSourceSpan); + }); + } + function addHasHtmComponentClosingTag(ast, options) { + ast.walk((node) => { + if (node.type !== "element") { + return; + } + node.hasHtmComponentClosingTag = node.endSourceSpan && /^<\s*\/\s*\/\s*>$/.test(options.originalText.slice(node.endSourceSpan.start.offset, node.endSourceSpan.end.offset)); + }); + } + function addCssDisplay(ast, options) { + ast.walk((node) => { + node.cssDisplay = getNodeCssStyleDisplay(node, options); + }); + } + function addIsSpaceSensitive(ast, options) { + ast.walk((node) => { + const { + children + } = node; + if (!children) { + return; + } + if (children.length === 0) { + node.isDanglingSpaceSensitive = isDanglingSpaceSensitiveNode(node); + return; + } + for (const child of children) { + child.isLeadingSpaceSensitive = isLeadingSpaceSensitiveNode(child, options); + child.isTrailingSpaceSensitive = isTrailingSpaceSensitiveNode(child, options); + } + for (let index = 0; index < children.length; index++) { + const child = children[index]; + child.isLeadingSpaceSensitive = index === 0 ? child.isLeadingSpaceSensitive : child.prev.isTrailingSpaceSensitive && child.isLeadingSpaceSensitive; + child.isTrailingSpaceSensitive = index === children.length - 1 ? child.isTrailingSpaceSensitive : child.next.isLeadingSpaceSensitive && child.isTrailingSpaceSensitive; + } + }); + } + function markTsScript(ast, options) { + if (options.parser === "vue") { + const vueScriptTag = ast.children.find((child) => isVueScriptTag(child, options)); + if (!vueScriptTag) { + return; + } + const { + lang + } = vueScriptTag.attrMap; + if (lang === "ts" || lang === "typescript") { + options.__should_parse_vue_template_with_ts = true; + } + } + } + module22.exports = preprocess; + } + }); + var require_pragma5 = __commonJS22({ + "src/language-html/pragma.js"(exports2, module22) { + "use strict"; + function hasPragma(text) { + return /^\s*/.test(text); + } + function insertPragma(text) { + return "\n\n" + text.replace(/^\s*\n/, ""); + } + module22.exports = { + hasPragma, + insertPragma + }; + } + }); + var require_loc6 = __commonJS22({ + "src/language-html/loc.js"(exports2, module22) { + "use strict"; + function locStart(node) { + return node.sourceSpan.start.offset; + } + function locEnd(node) { + return node.sourceSpan.end.offset; + } + module22.exports = { + locStart, + locEnd + }; + } + }); + var require_tag = __commonJS22({ + "src/language-html/print/tag.js"(exports2, module22) { + "use strict"; + var assert = require("assert"); + var { + isNonEmptyArray + } = require_util2(); + var { + builders: { + indent, + join, + line, + softline, + hardline + }, + utils: { + replaceTextEndOfLine + } + } = require_doc(); + var { + locStart, + locEnd + } = require_loc6(); + var { + isTextLikeNode, + getLastDescendant, + isPreLikeNode, + hasPrettierIgnore, + shouldPreserveContent, + isVueSfcBlock + } = require_utils11(); + function printClosingTag(node, options) { + return [node.isSelfClosing ? "" : printClosingTagStart(node, options), printClosingTagEnd(node, options)]; + } + function printClosingTagStart(node, options) { + return node.lastChild && needsToBorrowParentClosingTagStartMarker(node.lastChild) ? "" : [printClosingTagPrefix(node, options), printClosingTagStartMarker(node, options)]; + } + function printClosingTagEnd(node, options) { + return (node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent)) ? "" : [printClosingTagEndMarker(node, options), printClosingTagSuffix(node, options)]; + } + function printClosingTagPrefix(node, options) { + return needsToBorrowLastChildClosingTagEndMarker(node) ? printClosingTagEndMarker(node.lastChild, options) : ""; + } + function printClosingTagSuffix(node, options) { + return needsToBorrowParentClosingTagStartMarker(node) ? printClosingTagStartMarker(node.parent, options) : needsToBorrowNextOpeningTagStartMarker(node) ? printOpeningTagStartMarker(node.next) : ""; + } + function printClosingTagStartMarker(node, options) { + assert(!node.isSelfClosing); + if (shouldNotPrintClosingTag(node, options)) { + return ""; + } + switch (node.type) { + case "ieConditionalComment": + return ""; + case "ieConditionalStartComment": + return "]>"; + case "interpolation": + return "}}"; + case "element": + if (node.isSelfClosing) { + return "/>"; + } + default: + return ">"; + } + } + function shouldNotPrintClosingTag(node, options) { + return !node.isSelfClosing && !node.endSourceSpan && (hasPrettierIgnore(node) || shouldPreserveContent(node.parent, options)); + } + function needsToBorrowPrevClosingTagEndMarker(node) { + return node.prev && node.prev.type !== "docType" && !isTextLikeNode(node.prev) && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces; + } + function needsToBorrowLastChildClosingTagEndMarker(node) { + return node.lastChild && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces && !isTextLikeNode(getLastDescendant(node.lastChild)) && !isPreLikeNode(node); + } + function needsToBorrowParentClosingTagStartMarker(node) { + return !node.next && !node.hasTrailingSpaces && node.isTrailingSpaceSensitive && isTextLikeNode(getLastDescendant(node)); + } + function needsToBorrowNextOpeningTagStartMarker(node) { + return node.next && !isTextLikeNode(node.next) && isTextLikeNode(node) && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces; + } + function getPrettierIgnoreAttributeCommentData(value) { + const match = value.trim().match(/^prettier-ignore-attribute(?:\s+(.+))?$/s); + if (!match) { + return false; + } + if (!match[1]) { + return true; + } + return match[1].split(/\s+/); + } + function needsToBorrowParentOpeningTagEndMarker(node) { + return !node.prev && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces; + } + function printAttributes(path2, options, print) { + const node = path2.getValue(); + if (!isNonEmptyArray(node.attrs)) { + return node.isSelfClosing ? " " : ""; + } + const ignoreAttributeData = node.prev && node.prev.type === "comment" && getPrettierIgnoreAttributeCommentData(node.prev.value); + const hasPrettierIgnoreAttribute = typeof ignoreAttributeData === "boolean" ? () => ignoreAttributeData : Array.isArray(ignoreAttributeData) ? (attribute) => ignoreAttributeData.includes(attribute.rawName) : () => false; + const printedAttributes = path2.map((attributePath) => { + const attribute = attributePath.getValue(); + return hasPrettierIgnoreAttribute(attribute) ? replaceTextEndOfLine(options.originalText.slice(locStart(attribute), locEnd(attribute))) : print(); + }, "attrs"); + const forceNotToBreakAttrContent = node.type === "element" && node.fullName === "script" && node.attrs.length === 1 && node.attrs[0].fullName === "src" && node.children.length === 0; + const shouldPrintAttributePerLine = options.singleAttributePerLine && node.attrs.length > 1 && !isVueSfcBlock(node, options); + const attributeLine = shouldPrintAttributePerLine ? hardline : line; + const parts = [indent([forceNotToBreakAttrContent ? " " : line, join(attributeLine, printedAttributes)])]; + if (node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) || node.isSelfClosing && needsToBorrowLastChildClosingTagEndMarker(node.parent) || forceNotToBreakAttrContent) { + parts.push(node.isSelfClosing ? " " : ""); + } else { + parts.push(options.bracketSameLine ? node.isSelfClosing ? " " : "" : node.isSelfClosing ? line : softline); + } + return parts; + } + function printOpeningTagEnd(node) { + return node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) ? "" : printOpeningTagEndMarker(node); + } + function printOpeningTag(path2, options, print) { + const node = path2.getValue(); + return [printOpeningTagStart(node, options), printAttributes(path2, options, print), node.isSelfClosing ? "" : printOpeningTagEnd(node)]; + } + function printOpeningTagStart(node, options) { + return node.prev && needsToBorrowNextOpeningTagStartMarker(node.prev) ? "" : [printOpeningTagPrefix(node, options), printOpeningTagStartMarker(node)]; + } + function printOpeningTagPrefix(node, options) { + return needsToBorrowParentOpeningTagEndMarker(node) ? printOpeningTagEndMarker(node.parent) : needsToBorrowPrevClosingTagEndMarker(node) ? printClosingTagEndMarker(node.prev, options) : ""; + } + function printOpeningTagStartMarker(node) { + switch (node.type) { + case "ieConditionalComment": + case "ieConditionalStartComment": + return `<${node.rawName}`; + } + default: + return `<${node.rawName}`; + } + } + function printOpeningTagEndMarker(node) { + assert(!node.isSelfClosing); + switch (node.type) { + case "ieConditionalComment": + return "]>"; + case "element": + if (node.condition) { + return ">"; + } + default: + return ">"; + } + } + module22.exports = { + printClosingTag, + printClosingTagStart, + printClosingTagStartMarker, + printClosingTagEndMarker, + printClosingTagSuffix, + printClosingTagEnd, + needsToBorrowLastChildClosingTagEndMarker, + needsToBorrowParentClosingTagStartMarker, + needsToBorrowPrevClosingTagEndMarker, + printOpeningTag, + printOpeningTagStart, + printOpeningTagPrefix, + printOpeningTagStartMarker, + printOpeningTagEndMarker, + needsToBorrowNextOpeningTagStartMarker, + needsToBorrowParentOpeningTagEndMarker + }; + } + }); + var require_parse_srcset = __commonJS22({ + "node_modules/parse-srcset/src/parse-srcset.js"(exports2, module22) { + (function(root, factory) { + if (typeof define === "function" && define.amd) { + define([], factory); + } else if (typeof module22 === "object" && module22.exports) { + module22.exports = factory(); + } else { + root.parseSrcset = factory(); + } + })(exports2, function() { + return function(input, options) { + var logger = options && options.logger || console; + function isSpace(c2) { + return c2 === " " || c2 === " " || c2 === "\n" || c2 === "\f" || c2 === "\r"; + } + function collectCharacters(regEx) { + var chars, match = regEx.exec(input.substring(pos)); + if (match) { + chars = match[0]; + pos += chars.length; + return chars; + } + } + var inputLength = input.length, regexLeadingSpaces = /^[ \t\n\r\u000c]+/, regexLeadingCommasOrSpaces = /^[, \t\n\r\u000c]+/, regexLeadingNotSpaces = /^[^ \t\n\r\u000c]+/, regexTrailingCommas = /[,]+$/, regexNonNegativeInteger = /^\d+$/, regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/, url, descriptors, currentDescriptor, state, c, pos = 0, candidates = []; + while (true) { + collectCharacters(regexLeadingCommasOrSpaces); + if (pos >= inputLength) { + return candidates; + } + url = collectCharacters(regexLeadingNotSpaces); + descriptors = []; + if (url.slice(-1) === ",") { + url = url.replace(regexTrailingCommas, ""); + parseDescriptors(); + } else { + tokenize(); + } + } + function tokenize() { + collectCharacters(regexLeadingSpaces); + currentDescriptor = ""; + state = "in descriptor"; + while (true) { + c = input.charAt(pos); + if (state === "in descriptor") { + if (isSpace(c)) { + if (currentDescriptor) { + descriptors.push(currentDescriptor); + currentDescriptor = ""; + state = "after descriptor"; + } + } else if (c === ",") { + pos += 1; + if (currentDescriptor) { + descriptors.push(currentDescriptor); + } + parseDescriptors(); + return; + } else if (c === "(") { + currentDescriptor = currentDescriptor + c; + state = "in parens"; + } else if (c === "") { + if (currentDescriptor) { + descriptors.push(currentDescriptor); + } + parseDescriptors(); + return; + } else { + currentDescriptor = currentDescriptor + c; + } + } else if (state === "in parens") { + if (c === ")") { + currentDescriptor = currentDescriptor + c; + state = "in descriptor"; + } else if (c === "") { + descriptors.push(currentDescriptor); + parseDescriptors(); + return; + } else { + currentDescriptor = currentDescriptor + c; + } + } else if (state === "after descriptor") { + if (isSpace(c)) { + } else if (c === "") { + parseDescriptors(); + return; + } else { + state = "in descriptor"; + pos -= 1; + } + } + pos += 1; + } + } + function parseDescriptors() { + var pError = false, w, d, h, i, candidate = {}, desc, lastChar, value, intVal, floatVal; + for (i = 0; i < descriptors.length; i++) { + desc = descriptors[i]; + lastChar = desc[desc.length - 1]; + value = desc.substring(0, desc.length - 1); + intVal = parseInt(value, 10); + floatVal = parseFloat(value); + if (regexNonNegativeInteger.test(value) && lastChar === "w") { + if (w || d) { + pError = true; + } + if (intVal === 0) { + pError = true; + } else { + w = intVal; + } + } else if (regexFloatingPoint.test(value) && lastChar === "x") { + if (w || d || h) { + pError = true; + } + if (floatVal < 0) { + pError = true; + } else { + d = floatVal; + } + } else if (regexNonNegativeInteger.test(value) && lastChar === "h") { + if (h || d) { + pError = true; + } + if (intVal === 0) { + pError = true; + } else { + h = intVal; + } + } else { + pError = true; + } + } + if (!pError) { + candidate.url = url; + if (w) { + candidate.w = w; + } + if (d) { + candidate.d = d; + } + if (h) { + candidate.h = h; + } + candidates.push(candidate); + } else if (logger && logger.error) { + logger.error("Invalid srcset descriptor found in '" + input + "' at '" + desc + "'."); + } + } + }; + }); + } + }); + var require_syntax_attribute = __commonJS22({ + "src/language-html/syntax-attribute.js"(exports2, module22) { + "use strict"; + var parseSrcset = require_parse_srcset(); + var { + builders: { + ifBreak, + join, + line + } + } = require_doc(); + function printImgSrcset(value) { + const srcset = parseSrcset(value, { + logger: { + error(message) { + throw new Error(message); + } + } + }); + const hasW = srcset.some(({ + w + }) => w); + const hasH = srcset.some(({ + h + }) => h); + const hasX = srcset.some(({ + d + }) => d); + if (hasW + hasH + hasX > 1) { + throw new Error("Mixed descriptor in srcset is not supported"); + } + const key = hasW ? "w" : hasH ? "h" : "d"; + const unit = hasW ? "w" : hasH ? "h" : "x"; + const getMax = (values) => Math.max(...values); + const urls = srcset.map((src) => src.url); + const maxUrlLength = getMax(urls.map((url) => url.length)); + const descriptors = srcset.map((src) => src[key]).map((descriptor) => descriptor ? descriptor.toString() : ""); + const descriptorLeftLengths = descriptors.map((descriptor) => { + const index = descriptor.indexOf("."); + return index === -1 ? descriptor.length : index; + }); + const maxDescriptorLeftLength = getMax(descriptorLeftLengths); + return join([",", line], urls.map((url, index) => { + const parts = [url]; + const descriptor = descriptors[index]; + if (descriptor) { + const urlPadding = maxUrlLength - url.length + 1; + const descriptorPadding = maxDescriptorLeftLength - descriptorLeftLengths[index]; + const alignment = " ".repeat(urlPadding + descriptorPadding); + parts.push(ifBreak(alignment, " "), descriptor + unit); + } + return parts; + })); + } + function printClassNames(value) { + return value.trim().split(/\s+/).join(" "); + } + module22.exports = { + printImgSrcset, + printClassNames + }; + } + }); + var require_syntax_vue = __commonJS22({ + "src/language-html/syntax-vue.js"(exports2, module22) { + "use strict"; + var { + builders: { + group + } + } = require_doc(); + function printVueFor(value, textToDoc) { + const { + left, + operator, + right + } = parseVueFor(value); + return [group(textToDoc(`function _(${left}) {}`, { + parser: "babel", + __isVueForBindingLeft: true + })), " ", operator, " ", textToDoc(right, { + parser: "__js_expression" + }, { + stripTrailingHardline: true + })]; + } + function parseVueFor(value) { + const forAliasRE = /(.*?)\s+(in|of)\s+(.*)/s; + const forIteratorRE = /,([^,\]}]*)(?:,([^,\]}]*))?$/; + const stripParensRE = /^\(|\)$/g; + const inMatch = value.match(forAliasRE); + if (!inMatch) { + return; + } + const res = {}; + res.for = inMatch[3].trim(); + if (!res.for) { + return; + } + const alias = inMatch[1].trim().replace(stripParensRE, ""); + const iteratorMatch = alias.match(forIteratorRE); + if (iteratorMatch) { + res.alias = alias.replace(forIteratorRE, ""); + res.iterator1 = iteratorMatch[1].trim(); + if (iteratorMatch[2]) { + res.iterator2 = iteratorMatch[2].trim(); + } + } else { + res.alias = alias; + } + const left = [res.alias, res.iterator1, res.iterator2]; + if (left.some((part, index) => !part && (index === 0 || left.slice(index + 1).some(Boolean)))) { + return; + } + return { + left: left.filter(Boolean).join(","), + operator: inMatch[2], + right: res.for + }; + } + function printVueBindings(value, textToDoc) { + return textToDoc(`function _(${value}) {}`, { + parser: "babel", + __isVueBindings: true + }); + } + function isVueEventBindingExpression(eventBindingValue) { + const fnExpRE = /^(?:[\w$]+|\([^)]*\))\s*=>|^function\s*\(/; + const simplePathRE = /^[$A-Z_a-z][\w$]*(?:\.[$A-Z_a-z][\w$]*|\['[^']*']|\["[^"]*"]|\[\d+]|\[[$A-Z_a-z][\w$]*])*$/; + const value = eventBindingValue.trim(); + return fnExpRE.test(value) || simplePathRE.test(value); + } + module22.exports = { + isVueEventBindingExpression, + printVueFor, + printVueBindings + }; + } + }); + var require_get_node_content = __commonJS22({ + "src/language-html/get-node-content.js"(exports2, module22) { + "use strict"; + var { + needsToBorrowParentClosingTagStartMarker, + printClosingTagStartMarker, + needsToBorrowLastChildClosingTagEndMarker, + printClosingTagEndMarker, + needsToBorrowParentOpeningTagEndMarker, + printOpeningTagEndMarker + } = require_tag(); + function getNodeContent(node, options) { + let start = node.startSourceSpan.end.offset; + if (node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild)) { + start -= printOpeningTagEndMarker(node).length; + } + let end = node.endSourceSpan.start.offset; + if (node.lastChild && needsToBorrowParentClosingTagStartMarker(node.lastChild)) { + end += printClosingTagStartMarker(node, options).length; + } else if (needsToBorrowLastChildClosingTagEndMarker(node)) { + end -= printClosingTagEndMarker(node.lastChild, options).length; + } + return options.originalText.slice(start, end); + } + module22.exports = getNodeContent; + } + }); + var require_embed4 = __commonJS22({ + "src/language-html/embed.js"(exports2, module22) { + "use strict"; + var { + builders: { + breakParent, + group, + hardline, + indent, + line, + fill, + softline + }, + utils: { + mapDoc, + replaceTextEndOfLine + } + } = require_doc(); + var printFrontMatter = require_print(); + var { + printClosingTag, + printClosingTagSuffix, + needsToBorrowPrevClosingTagEndMarker, + printOpeningTagPrefix, + printOpeningTag + } = require_tag(); + var { + printImgSrcset, + printClassNames + } = require_syntax_attribute(); + var { + printVueFor, + printVueBindings, + isVueEventBindingExpression + } = require_syntax_vue(); + var { + isScriptLikeTag, + isVueNonHtmlBlock, + inferScriptParser, + htmlTrimPreserveIndentation, + dedentString, + unescapeQuoteEntities, + isVueSlotAttribute, + isVueSfcBindingsAttribute, + getTextValueParts + } = require_utils11(); + var getNodeContent = require_get_node_content(); + function printEmbeddedAttributeValue(node, htmlTextToDoc, options) { + const isKeyMatched = (patterns) => new RegExp(patterns.join("|")).test(node.fullName); + const getValue = () => unescapeQuoteEntities(node.value); + let shouldHug = false; + const __onHtmlBindingRoot = (root, options2) => { + const rootNode = root.type === "NGRoot" ? root.node.type === "NGMicrosyntax" && root.node.body.length === 1 && root.node.body[0].type === "NGMicrosyntaxExpression" ? root.node.body[0].expression : root.node : root.type === "JsExpressionRoot" ? root.node : root; + if (rootNode && (rootNode.type === "ObjectExpression" || rootNode.type === "ArrayExpression" || options2.parser === "__vue_expression" && (rootNode.type === "TemplateLiteral" || rootNode.type === "StringLiteral"))) { + shouldHug = true; + } + }; + const printHug = (doc2) => group(doc2); + const printExpand = (doc2, canHaveTrailingWhitespace = true) => group([indent([softline, doc2]), canHaveTrailingWhitespace ? softline : ""]); + const printMaybeHug = (doc2) => shouldHug ? printHug(doc2) : printExpand(doc2); + const attributeTextToDoc = (code, opts) => htmlTextToDoc(code, Object.assign({ + __onHtmlBindingRoot, + __embeddedInHtml: true + }, opts)); + if (node.fullName === "srcset" && (node.parent.fullName === "img" || node.parent.fullName === "source")) { + return printExpand(printImgSrcset(getValue())); + } + if (node.fullName === "class" && !options.parentParser) { + const value = getValue(); + if (!value.includes("{{")) { + return printClassNames(value); + } + } + if (node.fullName === "style" && !options.parentParser) { + const value = getValue(); + if (!value.includes("{{")) { + return printExpand(attributeTextToDoc(value, { + parser: "css", + __isHTMLStyleAttribute: true + })); + } + } + if (options.parser === "vue") { + if (node.fullName === "v-for") { + return printVueFor(getValue(), attributeTextToDoc); + } + if (isVueSlotAttribute(node) || isVueSfcBindingsAttribute(node, options)) { + return printVueBindings(getValue(), attributeTextToDoc); + } + const vueEventBindingPatterns = ["^@", "^v-on:"]; + const vueExpressionBindingPatterns = ["^:", "^v-bind:"]; + const jsExpressionBindingPatterns = ["^v-"]; + if (isKeyMatched(vueEventBindingPatterns)) { + const value = getValue(); + const parser = isVueEventBindingExpression(value) ? "__js_expression" : options.__should_parse_vue_template_with_ts ? "__vue_ts_event_binding" : "__vue_event_binding"; + return printMaybeHug(attributeTextToDoc(value, { + parser + })); + } + if (isKeyMatched(vueExpressionBindingPatterns)) { + return printMaybeHug(attributeTextToDoc(getValue(), { + parser: "__vue_expression" + })); + } + if (isKeyMatched(jsExpressionBindingPatterns)) { + return printMaybeHug(attributeTextToDoc(getValue(), { + parser: "__js_expression" + })); + } + } + if (options.parser === "angular") { + const ngTextToDoc = (code, opts) => attributeTextToDoc(code, Object.assign(Object.assign({}, opts), {}, { + trailingComma: "none" + })); + const ngDirectiveBindingPatterns = ["^\\*"]; + const ngStatementBindingPatterns = ["^\\(.+\\)$", "^on-"]; + const ngExpressionBindingPatterns = ["^\\[.+\\]$", "^bind(on)?-", "^ng-(if|show|hide|class|style)$"]; + const ngI18nPatterns = ["^i18n(-.+)?$"]; + if (isKeyMatched(ngStatementBindingPatterns)) { + return printMaybeHug(ngTextToDoc(getValue(), { + parser: "__ng_action" + })); + } + if (isKeyMatched(ngExpressionBindingPatterns)) { + return printMaybeHug(ngTextToDoc(getValue(), { + parser: "__ng_binding" + })); + } + if (isKeyMatched(ngI18nPatterns)) { + const value2 = getValue().trim(); + return printExpand(fill(getTextValueParts(node, value2)), !value2.includes("@@")); + } + if (isKeyMatched(ngDirectiveBindingPatterns)) { + return printMaybeHug(ngTextToDoc(getValue(), { + parser: "__ng_directive" + })); + } + const interpolationRegex = /{{(.+?)}}/s; + const value = getValue(); + if (interpolationRegex.test(value)) { + const parts = []; + for (const [index, part] of value.split(interpolationRegex).entries()) { + if (index % 2 === 0) { + parts.push(replaceTextEndOfLine(part)); + } else { + try { + parts.push(group(["{{", indent([line, ngTextToDoc(part, { + parser: "__ng_interpolation", + __isInHtmlInterpolation: true + })]), line, "}}"])); + } catch { + parts.push("{{", replaceTextEndOfLine(part), "}}"); + } + } + } + return group(parts); + } + } + return null; + } + function embed(path2, print, textToDoc, options) { + const node = path2.getValue(); + switch (node.type) { + case "element": { + if (isScriptLikeTag(node) || node.type === "interpolation") { + return; + } + if (!node.isSelfClosing && isVueNonHtmlBlock(node, options)) { + const parser = inferScriptParser(node, options); + if (!parser) { + return; + } + const content = getNodeContent(node, options); + let isEmpty = /^\s*$/.test(content); + let doc2 = ""; + if (!isEmpty) { + doc2 = textToDoc(htmlTrimPreserveIndentation(content), { + parser, + __embeddedInHtml: true + }, { + stripTrailingHardline: true + }); + isEmpty = doc2 === ""; + } + return [printOpeningTagPrefix(node, options), group(printOpeningTag(path2, options, print)), isEmpty ? "" : hardline, doc2, isEmpty ? "" : hardline, printClosingTag(node, options), printClosingTagSuffix(node, options)]; + } + break; + } + case "text": { + if (isScriptLikeTag(node.parent)) { + const parser = inferScriptParser(node.parent, options); + if (parser) { + const value = parser === "markdown" ? dedentString(node.value.replace(/^[^\S\n]*\n/, "")) : node.value; + const textToDocOptions = { + parser, + __embeddedInHtml: true + }; + if (options.parser === "html" && parser === "babel") { + let sourceType = "script"; + const { + attrMap + } = node.parent; + if (attrMap && (attrMap.type === "module" || attrMap.type === "text/babel" && attrMap["data-type"] === "module")) { + sourceType = "module"; + } + textToDocOptions.__babelSourceType = sourceType; + } + return [breakParent, printOpeningTagPrefix(node, options), textToDoc(value, textToDocOptions, { + stripTrailingHardline: true + }), printClosingTagSuffix(node, options)]; + } + } else if (node.parent.type === "interpolation") { + const textToDocOptions = { + __isInHtmlInterpolation: true, + __embeddedInHtml: true + }; + if (options.parser === "angular") { + textToDocOptions.parser = "__ng_interpolation"; + textToDocOptions.trailingComma = "none"; + } else if (options.parser === "vue") { + textToDocOptions.parser = options.__should_parse_vue_template_with_ts ? "__vue_ts_expression" : "__vue_expression"; + } else { + textToDocOptions.parser = "__js_expression"; + } + return [indent([line, textToDoc(node.value, textToDocOptions, { + stripTrailingHardline: true + })]), node.parent.next && needsToBorrowPrevClosingTagEndMarker(node.parent.next) ? " " : line]; + } + break; + } + case "attribute": { + if (!node.value) { + break; + } + if (/^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) { + return [node.rawName, "=", node.value]; + } + if (options.parser === "lwc") { + const interpolationRegex = /^{.*}$/s; + if (interpolationRegex.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) { + return [node.rawName, "=", node.value]; + } + } + const embeddedAttributeValueDoc = printEmbeddedAttributeValue(node, (code, opts) => textToDoc(code, Object.assign({ + __isInHtmlAttribute: true, + __embeddedInHtml: true + }, opts), { + stripTrailingHardline: true + }), options); + if (embeddedAttributeValueDoc) { + return [node.rawName, '="', group(mapDoc(embeddedAttributeValueDoc, (doc2) => typeof doc2 === "string" ? doc2.replace(/"/g, """) : doc2)), '"']; + } + break; + } + case "front-matter": + return printFrontMatter(node, textToDoc); + } + } + module22.exports = embed; + } + }); + var require_children = __commonJS22({ + "src/language-html/print/children.js"(exports2, module22) { + "use strict"; + var { + builders: { + breakParent, + group, + ifBreak, + line, + softline, + hardline + }, + utils: { + replaceTextEndOfLine + } + } = require_doc(); + var { + locStart, + locEnd + } = require_loc6(); + var { + forceBreakChildren, + forceNextEmptyLine, + isTextLikeNode, + hasPrettierIgnore, + preferHardlineAsLeadingSpaces + } = require_utils11(); + var { + printOpeningTagPrefix, + needsToBorrowNextOpeningTagStartMarker, + printOpeningTagStartMarker, + needsToBorrowPrevClosingTagEndMarker, + printClosingTagEndMarker, + printClosingTagSuffix, + needsToBorrowParentClosingTagStartMarker + } = require_tag(); + function printChild(childPath, options, print) { + const child = childPath.getValue(); + if (hasPrettierIgnore(child)) { + return [printOpeningTagPrefix(child, options), ...replaceTextEndOfLine(options.originalText.slice(locStart(child) + (child.prev && needsToBorrowNextOpeningTagStartMarker(child.prev) ? printOpeningTagStartMarker(child).length : 0), locEnd(child) - (child.next && needsToBorrowPrevClosingTagEndMarker(child.next) ? printClosingTagEndMarker(child, options).length : 0))), printClosingTagSuffix(child, options)]; + } + return print(); + } + function printBetweenLine(prevNode, nextNode) { + return isTextLikeNode(prevNode) && isTextLikeNode(nextNode) ? prevNode.isTrailingSpaceSensitive ? prevNode.hasTrailingSpaces ? preferHardlineAsLeadingSpaces(nextNode) ? hardline : line : "" : preferHardlineAsLeadingSpaces(nextNode) ? hardline : softline : needsToBorrowNextOpeningTagStartMarker(prevNode) && (hasPrettierIgnore(nextNode) || nextNode.firstChild || nextNode.isSelfClosing || nextNode.type === "element" && nextNode.attrs.length > 0) || prevNode.type === "element" && prevNode.isSelfClosing && needsToBorrowPrevClosingTagEndMarker(nextNode) ? "" : !nextNode.isLeadingSpaceSensitive || preferHardlineAsLeadingSpaces(nextNode) || needsToBorrowPrevClosingTagEndMarker(nextNode) && prevNode.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild) && prevNode.lastChild.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild.lastChild) ? hardline : nextNode.hasLeadingSpaces ? line : softline; + } + function printChildren(path2, options, print) { + const node = path2.getValue(); + if (forceBreakChildren(node)) { + return [breakParent, ...path2.map((childPath) => { + const childNode = childPath.getValue(); + const prevBetweenLine = !childNode.prev ? "" : printBetweenLine(childNode.prev, childNode); + return [!prevBetweenLine ? "" : [prevBetweenLine, forceNextEmptyLine(childNode.prev) ? hardline : ""], printChild(childPath, options, print)]; + }, "children")]; + } + const groupIds = node.children.map(() => Symbol("")); + return path2.map((childPath, childIndex) => { + const childNode = childPath.getValue(); + if (isTextLikeNode(childNode)) { + if (childNode.prev && isTextLikeNode(childNode.prev)) { + const prevBetweenLine2 = printBetweenLine(childNode.prev, childNode); + if (prevBetweenLine2) { + if (forceNextEmptyLine(childNode.prev)) { + return [hardline, hardline, printChild(childPath, options, print)]; + } + return [prevBetweenLine2, printChild(childPath, options, print)]; + } + } + return printChild(childPath, options, print); + } + const prevParts = []; + const leadingParts = []; + const trailingParts = []; + const nextParts = []; + const prevBetweenLine = childNode.prev ? printBetweenLine(childNode.prev, childNode) : ""; + const nextBetweenLine = childNode.next ? printBetweenLine(childNode, childNode.next) : ""; + if (prevBetweenLine) { + if (forceNextEmptyLine(childNode.prev)) { + prevParts.push(hardline, hardline); + } else if (prevBetweenLine === hardline) { + prevParts.push(hardline); + } else { + if (isTextLikeNode(childNode.prev)) { + leadingParts.push(prevBetweenLine); + } else { + leadingParts.push(ifBreak("", softline, { + groupId: groupIds[childIndex - 1] + })); + } + } + } + if (nextBetweenLine) { + if (forceNextEmptyLine(childNode)) { + if (isTextLikeNode(childNode.next)) { + nextParts.push(hardline, hardline); + } + } else if (nextBetweenLine === hardline) { + if (isTextLikeNode(childNode.next)) { + nextParts.push(hardline); + } + } else { + trailingParts.push(nextBetweenLine); + } + } + return [...prevParts, group([...leadingParts, group([printChild(childPath, options, print), ...trailingParts], { + id: groupIds[childIndex] + })]), ...nextParts]; + }, "children"); + } + module22.exports = { + printChildren + }; + } + }); + var require_element = __commonJS22({ + "src/language-html/print/element.js"(exports2, module22) { + "use strict"; + var { + builders: { + breakParent, + dedentToRoot, + group, + ifBreak, + indentIfBreak, + indent, + line, + softline + }, + utils: { + replaceTextEndOfLine + } + } = require_doc(); + var getNodeContent = require_get_node_content(); + var { + shouldPreserveContent, + isScriptLikeTag, + isVueCustomBlock, + countParents, + forceBreakContent + } = require_utils11(); + var { + printOpeningTagPrefix, + printOpeningTag, + printClosingTagSuffix, + printClosingTag, + needsToBorrowPrevClosingTagEndMarker, + needsToBorrowLastChildClosingTagEndMarker + } = require_tag(); + var { + printChildren + } = require_children(); + function printElement(path2, options, print) { + const node = path2.getValue(); + if (shouldPreserveContent(node, options)) { + return [printOpeningTagPrefix(node, options), group(printOpeningTag(path2, options, print)), ...replaceTextEndOfLine(getNodeContent(node, options)), ...printClosingTag(node, options), printClosingTagSuffix(node, options)]; + } + const shouldHugContent = node.children.length === 1 && node.firstChild.type === "interpolation" && node.firstChild.isLeadingSpaceSensitive && !node.firstChild.hasLeadingSpaces && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces; + const attrGroupId = Symbol("element-attr-group-id"); + const printTag = (doc2) => group([group(printOpeningTag(path2, options, print), { + id: attrGroupId + }), doc2, printClosingTag(node, options)]); + const printChildrenDoc = (childrenDoc) => { + if (shouldHugContent) { + return indentIfBreak(childrenDoc, { + groupId: attrGroupId + }); + } + if ((isScriptLikeTag(node) || isVueCustomBlock(node, options)) && node.parent.type === "root" && options.parser === "vue" && !options.vueIndentScriptAndStyle) { + return childrenDoc; + } + return indent(childrenDoc); + }; + const printLineBeforeChildren = () => { + if (shouldHugContent) { + return ifBreak(softline, "", { + groupId: attrGroupId + }); + } + if (node.firstChild.hasLeadingSpaces && node.firstChild.isLeadingSpaceSensitive) { + return line; + } + if (node.firstChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive) { + return dedentToRoot(softline); + } + return softline; + }; + const printLineAfterChildren = () => { + const needsToBorrow = node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent); + if (needsToBorrow) { + if (node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive) { + return " "; + } + return ""; + } + if (shouldHugContent) { + return ifBreak(softline, "", { + groupId: attrGroupId + }); + } + if (node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive) { + return line; + } + if ((node.lastChild.type === "comment" || node.lastChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive) && new RegExp(`\\n[\\t ]{${options.tabWidth * countParents(path2, (node2) => node2.parent && node2.parent.type !== "root")}}$`).test(node.lastChild.value)) { + return ""; + } + return softline; + }; + if (node.children.length === 0) { + return printTag(node.hasDanglingSpaces && node.isDanglingSpaceSensitive ? line : ""); + } + return printTag([forceBreakContent(node) ? breakParent : "", printChildrenDoc([printLineBeforeChildren(), printChildren(path2, options, print)]), printLineAfterChildren()]); + } + module22.exports = { + printElement + }; + } + }); + var require_printer_html = __commonJS22({ + "src/language-html/printer-html.js"(exports2, module22) { + "use strict"; + var { + builders: { + fill, + group, + hardline, + literalline + }, + utils: { + cleanDoc, + getDocParts, + isConcat, + replaceTextEndOfLine + } + } = require_doc(); + var clean = require_clean5(); + var { + countChars, + unescapeQuoteEntities, + getTextValueParts + } = require_utils11(); + var preprocess = require_print_preprocess3(); + var { + insertPragma + } = require_pragma5(); + var { + locStart, + locEnd + } = require_loc6(); + var embed = require_embed4(); + var { + printClosingTagSuffix, + printClosingTagEnd, + printOpeningTagPrefix, + printOpeningTagStart + } = require_tag(); + var { + printElement + } = require_element(); + var { + printChildren + } = require_children(); + function genericPrint(path2, options, print) { + const node = path2.getValue(); + switch (node.type) { + case "front-matter": + return replaceTextEndOfLine(node.raw); + case "root": + if (options.__onHtmlRoot) { + options.__onHtmlRoot(node); + } + return [group(printChildren(path2, options, print)), hardline]; + case "element": + case "ieConditionalComment": { + return printElement(path2, options, print); + } + case "ieConditionalStartComment": + case "ieConditionalEndComment": + return [printOpeningTagStart(node), printClosingTagEnd(node)]; + case "interpolation": + return [printOpeningTagStart(node, options), ...path2.map(print, "children"), printClosingTagEnd(node, options)]; + case "text": { + if (node.parent.type === "interpolation") { + const trailingNewlineRegex = /\n[^\S\n]*$/; + const hasTrailingNewline = trailingNewlineRegex.test(node.value); + const value = hasTrailingNewline ? node.value.replace(trailingNewlineRegex, "") : node.value; + return [...replaceTextEndOfLine(value), hasTrailingNewline ? hardline : ""]; + } + const printed = cleanDoc([printOpeningTagPrefix(node, options), ...getTextValueParts(node), printClosingTagSuffix(node, options)]); + if (isConcat(printed) || printed.type === "fill") { + return fill(getDocParts(printed)); + } + return printed; + } + case "docType": + return [group([printOpeningTagStart(node, options), " ", node.value.replace(/^html\b/i, "html").replace(/\s+/g, " ")]), printClosingTagEnd(node, options)]; + case "comment": { + return [printOpeningTagPrefix(node, options), ...replaceTextEndOfLine(options.originalText.slice(locStart(node), locEnd(node)), literalline), printClosingTagSuffix(node, options)]; + } + case "attribute": { + if (node.value === null) { + return node.rawName; + } + const value = unescapeQuoteEntities(node.value); + const singleQuoteCount = countChars(value, "'"); + const doubleQuoteCount = countChars(value, '"'); + const quote = singleQuoteCount < doubleQuoteCount ? "'" : '"'; + return [node.rawName, "=", quote, ...replaceTextEndOfLine(quote === '"' ? value.replace(/"/g, """) : value.replace(/'/g, "'")), quote]; + } + default: + throw new Error(`Unexpected node type ${node.type}`); + } + } + module22.exports = { + preprocess, + print: genericPrint, + insertPragma, + massageAstNode: clean, + embed + }; + } + }); + var require_options6 = __commonJS22({ + "src/language-html/options.js"(exports2, module22) { + "use strict"; + var commonOptions = require_common_options(); + var CATEGORY_HTML = "HTML"; + module22.exports = { + bracketSameLine: commonOptions.bracketSameLine, + htmlWhitespaceSensitivity: { + since: "1.15.0", + category: CATEGORY_HTML, + type: "choice", + default: "css", + description: "How to handle whitespaces in HTML.", + choices: [{ + value: "css", + description: "Respect the default value of CSS display property." + }, { + value: "strict", + description: "Whitespaces are considered sensitive." + }, { + value: "ignore", + description: "Whitespaces are considered insensitive." + }] + }, + singleAttributePerLine: commonOptions.singleAttributePerLine, + vueIndentScriptAndStyle: { + since: "1.19.0", + category: CATEGORY_HTML, + type: "boolean", + default: false, + description: "Indent script and style tags in Vue files." + } + }; + } + }); + var require_parsers6 = __commonJS22({ + "src/language-html/parsers.js"(exports2, module22) { + "use strict"; + module22.exports = { + get html() { + return require_parser_html().parsers.html; + }, + get vue() { + return require_parser_html().parsers.vue; + }, + get angular() { + return require_parser_html().parsers.angular; + }, + get lwc() { + return require_parser_html().parsers.lwc; + } + }; + } + }); + var require_HTML = __commonJS22({ + "node_modules/linguist-languages/data/HTML.json"(exports2, module22) { + module22.exports = { + name: "HTML", + type: "markup", + tmScope: "text.html.basic", + aceMode: "html", + codemirrorMode: "htmlmixed", + codemirrorMimeType: "text/html", + color: "#e34c26", + aliases: ["xhtml"], + extensions: [".html", ".hta", ".htm", ".html.hl", ".inc", ".xht", ".xhtml"], + languageId: 146 + }; + } + }); + var require_Vue = __commonJS22({ + "node_modules/linguist-languages/data/Vue.json"(exports2, module22) { + module22.exports = { + name: "Vue", + type: "markup", + color: "#41b883", + extensions: [".vue"], + tmScope: "text.html.vue", + aceMode: "html", + languageId: 391 + }; + } + }); + var require_language_html = __commonJS22({ + "src/language-html/index.js"(exports2, module22) { + "use strict"; + var createLanguage = require_create_language(); + var printer = require_printer_html(); + var options = require_options6(); + var parsers = require_parsers6(); + var languages = [createLanguage(require_HTML(), () => ({ + name: "Angular", + since: "1.15.0", + parsers: ["angular"], + vscodeLanguageIds: ["html"], + extensions: [".component.html"], + filenames: [] + })), createLanguage(require_HTML(), (data) => ({ + since: "1.15.0", + parsers: ["html"], + vscodeLanguageIds: ["html"], + extensions: [...data.extensions, ".mjml"] + })), createLanguage(require_HTML(), () => ({ + name: "Lightning Web Components", + since: "1.17.0", + parsers: ["lwc"], + vscodeLanguageIds: ["html"], + extensions: [], + filenames: [] + })), createLanguage(require_Vue(), () => ({ + since: "1.10.0", + parsers: ["vue"], + vscodeLanguageIds: ["vue"] + }))]; + var printers = { + html: printer + }; + module22.exports = { + languages, + printers, + options, + parsers + }; + } + }); + var require_pragma6 = __commonJS22({ + "src/language-yaml/pragma.js"(exports2, module22) { + "use strict"; + function isPragma(text) { + return /^\s*@(?:prettier|format)\s*$/.test(text); + } + function hasPragma(text) { + return /^\s*#[^\S\n]*@(?:prettier|format)\s*?(?:\n|$)/.test(text); + } + function insertPragma(text) { + return `# @format + +${text}`; + } + module22.exports = { + isPragma, + hasPragma, + insertPragma + }; + } + }); + var require_loc7 = __commonJS22({ + "src/language-yaml/loc.js"(exports2, module22) { + "use strict"; + function locStart(node) { + return node.position.start.offset; + } + function locEnd(node) { + return node.position.end.offset; + } + module22.exports = { + locStart, + locEnd + }; + } + }); + var require_embed5 = __commonJS22({ + "src/language-yaml/embed.js"(exports2, module22) { + "use strict"; + function embed(path2, print, textToDoc, options) { + const node = path2.getValue(); + if (node.type === "root" && options.filepath && /(?:[/\\]|^)\.(?:prettier|stylelint)rc$/.test(options.filepath)) { + return textToDoc(options.originalText, Object.assign(Object.assign({}, options), {}, { + parser: "json" + })); + } + } + module22.exports = embed; + } + }); + var require_utils12 = __commonJS22({ + "src/language-yaml/utils.js"(exports2, module22) { + "use strict"; + var { + getLast, + isNonEmptyArray + } = require_util2(); + function getAncestorCount(path2, filter) { + let counter = 0; + const pathStackLength = path2.stack.length - 1; + for (let i = 0; i < pathStackLength; i++) { + const value = path2.stack[i]; + if (isNode(value) && filter(value)) { + counter++; + } + } + return counter; + } + function isNode(value, types) { + return value && typeof value.type === "string" && (!types || types.includes(value.type)); + } + function mapNode(node, callback, parent) { + return callback("children" in node ? Object.assign(Object.assign({}, node), {}, { + children: node.children.map((childNode) => mapNode(childNode, callback, node)) + }) : node, parent); + } + function defineShortcut(x, key, getter) { + Object.defineProperty(x, key, { + get: getter, + enumerable: false + }); + } + function isNextLineEmpty(node, text) { + let newlineCount = 0; + const textLength = text.length; + for (let i = node.position.end.offset - 1; i < textLength; i++) { + const char = text[i]; + if (char === "\n") { + newlineCount++; + } + if (newlineCount === 1 && /\S/.test(char)) { + return false; + } + if (newlineCount === 2) { + return true; + } + } + return false; + } + function isLastDescendantNode(path2) { + const node = path2.getValue(); + switch (node.type) { + case "tag": + case "anchor": + case "comment": + return false; + } + const pathStackLength = path2.stack.length; + for (let i = 1; i < pathStackLength; i++) { + const item = path2.stack[i]; + const parentItem = path2.stack[i - 1]; + if (Array.isArray(parentItem) && typeof item === "number" && item !== parentItem.length - 1) { + return false; + } + } + return true; + } + function getLastDescendantNode(node) { + return isNonEmptyArray(node.children) ? getLastDescendantNode(getLast(node.children)) : node; + } + function isPrettierIgnore(comment) { + return comment.value.trim() === "prettier-ignore"; + } + function hasPrettierIgnore(path2) { + const node = path2.getValue(); + if (node.type === "documentBody") { + const document2 = path2.getParentNode(); + return hasEndComments(document2.head) && isPrettierIgnore(getLast(document2.head.endComments)); + } + return hasLeadingComments(node) && isPrettierIgnore(getLast(node.leadingComments)); + } + function isEmptyNode(node) { + return !isNonEmptyArray(node.children) && !hasComments(node); + } + function hasComments(node) { + return hasLeadingComments(node) || hasMiddleComments(node) || hasIndicatorComment(node) || hasTrailingComment(node) || hasEndComments(node); + } + function hasLeadingComments(node) { + return isNonEmptyArray(node === null || node === void 0 ? void 0 : node.leadingComments); + } + function hasMiddleComments(node) { + return isNonEmptyArray(node === null || node === void 0 ? void 0 : node.middleComments); + } + function hasIndicatorComment(node) { + return node === null || node === void 0 ? void 0 : node.indicatorComment; + } + function hasTrailingComment(node) { + return node === null || node === void 0 ? void 0 : node.trailingComment; + } + function hasEndComments(node) { + return isNonEmptyArray(node === null || node === void 0 ? void 0 : node.endComments); + } + function splitWithSingleSpace(text) { + const parts = []; + let lastPart; + for (const part of text.split(/( +)/)) { + if (part !== " ") { + if (lastPart === " ") { + parts.push(part); + } else { + parts.push((parts.pop() || "") + part); + } + } else if (lastPart === void 0) { + parts.unshift(""); + } + lastPart = part; + } + if (lastPart === " ") { + parts.push((parts.pop() || "") + " "); + } + if (parts[0] === "") { + parts.shift(); + parts.unshift(" " + (parts.shift() || "")); + } + return parts; + } + function getFlowScalarLineContents(nodeType, content, options) { + const rawLineContents = content.split("\n").map((lineContent, index, lineContents) => index === 0 && index === lineContents.length - 1 ? lineContent : index !== 0 && index !== lineContents.length - 1 ? lineContent.trim() : index === 0 ? lineContent.trimEnd() : lineContent.trimStart()); + if (options.proseWrap === "preserve") { + return rawLineContents.map((lineContent) => lineContent.length === 0 ? [] : [lineContent]); + } + return rawLineContents.map((lineContent) => lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent)).reduce((reduced, lineContentWords, index) => index !== 0 && rawLineContents[index - 1].length > 0 && lineContentWords.length > 0 && !(nodeType === "quoteDouble" && getLast(getLast(reduced)).endsWith("\\")) ? [...reduced.slice(0, -1), [...getLast(reduced), ...lineContentWords]] : [...reduced, lineContentWords], []).map((lineContentWords) => options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords); + } + function getBlockValueLineContents(node, { + parentIndent, + isLastDescendant, + options + }) { + const content = node.position.start.line === node.position.end.line ? "" : options.originalText.slice(node.position.start.offset, node.position.end.offset).match(/^[^\n]*\n(.*)$/s)[1]; + let leadingSpaceCount; + if (node.indent === null) { + const matches = content.match(/^(? *)[^\n\r ]/m); + leadingSpaceCount = matches ? matches.groups.leadingSpace.length : Number.POSITIVE_INFINITY; + } else { + leadingSpaceCount = node.indent - 1 + parentIndent; + } + const rawLineContents = content.split("\n").map((lineContent) => lineContent.slice(leadingSpaceCount)); + if (options.proseWrap === "preserve" || node.type === "blockLiteral") { + return removeUnnecessaryTrailingNewlines(rawLineContents.map((lineContent) => lineContent.length === 0 ? [] : [lineContent])); + } + return removeUnnecessaryTrailingNewlines(rawLineContents.map((lineContent) => lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent)).reduce((reduced, lineContentWords, index) => index !== 0 && rawLineContents[index - 1].length > 0 && lineContentWords.length > 0 && !/^\s/.test(lineContentWords[0]) && !/^\s|\s$/.test(getLast(reduced)) ? [...reduced.slice(0, -1), [...getLast(reduced), ...lineContentWords]] : [...reduced, lineContentWords], []).map((lineContentWords) => lineContentWords.reduce((reduced, word) => reduced.length > 0 && /\s$/.test(getLast(reduced)) ? [...reduced.slice(0, -1), getLast(reduced) + " " + word] : [...reduced, word], [])).map((lineContentWords) => options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords)); + function removeUnnecessaryTrailingNewlines(lineContents) { + if (node.chomping === "keep") { + return getLast(lineContents).length === 0 ? lineContents.slice(0, -1) : lineContents; + } + let trailingNewlineCount = 0; + for (let i = lineContents.length - 1; i >= 0; i--) { + if (lineContents[i].length === 0) { + trailingNewlineCount++; + } else { + break; + } + } + return trailingNewlineCount === 0 ? lineContents : trailingNewlineCount >= 2 && !isLastDescendant ? lineContents.slice(0, -(trailingNewlineCount - 1)) : lineContents.slice(0, -trailingNewlineCount); + } + } + function isInlineNode(node) { + if (!node) { + return true; + } + switch (node.type) { + case "plain": + case "quoteDouble": + case "quoteSingle": + case "alias": + case "flowMapping": + case "flowSequence": + return true; + default: + return false; + } + } + module22.exports = { + getLast, + getAncestorCount, + isNode, + isEmptyNode, + isInlineNode, + mapNode, + defineShortcut, + isNextLineEmpty, + isLastDescendantNode, + getBlockValueLineContents, + getFlowScalarLineContents, + getLastDescendantNode, + hasPrettierIgnore, + hasLeadingComments, + hasMiddleComments, + hasIndicatorComment, + hasTrailingComment, + hasEndComments + }; + } + }); + var require_print_preprocess4 = __commonJS22({ + "src/language-yaml/print-preprocess.js"(exports2, module22) { + "use strict"; + var { + defineShortcut, + mapNode + } = require_utils12(); + function preprocess(ast) { + return mapNode(ast, defineShortcuts); + } + function defineShortcuts(node) { + switch (node.type) { + case "document": + defineShortcut(node, "head", () => node.children[0]); + defineShortcut(node, "body", () => node.children[1]); + break; + case "documentBody": + case "sequenceItem": + case "flowSequenceItem": + case "mappingKey": + case "mappingValue": + defineShortcut(node, "content", () => node.children[0]); + break; + case "mappingItem": + case "flowMappingItem": + defineShortcut(node, "key", () => node.children[0]); + defineShortcut(node, "value", () => node.children[1]); + break; + } + return node; + } + module22.exports = preprocess; + } + }); + var require_misc2 = __commonJS22({ + "src/language-yaml/print/misc.js"(exports2, module22) { + "use strict"; + var { + builders: { + softline, + align + } + } = require_doc(); + var { + hasEndComments, + isNextLineEmpty, + isNode + } = require_utils12(); + var printedEmptyLineCache = /* @__PURE__ */ new WeakMap(); + function printNextEmptyLine(path2, originalText) { + const node = path2.getValue(); + const root = path2.stack[0]; + let isNextEmptyLinePrintedSet; + if (printedEmptyLineCache.has(root)) { + isNextEmptyLinePrintedSet = printedEmptyLineCache.get(root); + } else { + isNextEmptyLinePrintedSet = /* @__PURE__ */ new Set(); + printedEmptyLineCache.set(root, isNextEmptyLinePrintedSet); + } + if (!isNextEmptyLinePrintedSet.has(node.position.end.line)) { + isNextEmptyLinePrintedSet.add(node.position.end.line); + if (isNextLineEmpty(node, originalText) && !shouldPrintEndComments(path2.getParentNode())) { + return softline; + } + } + return ""; + } + function shouldPrintEndComments(node) { + return hasEndComments(node) && !isNode(node, ["documentHead", "documentBody", "flowMapping", "flowSequence"]); + } + function alignWithSpaces(width, doc2) { + return align(" ".repeat(width), doc2); + } + module22.exports = { + alignWithSpaces, + shouldPrintEndComments, + printNextEmptyLine + }; + } + }); + var require_flow_mapping_sequence = __commonJS22({ + "src/language-yaml/print/flow-mapping-sequence.js"(exports2, module22) { + "use strict"; + var { + builders: { + ifBreak, + line, + softline, + hardline, + join + } + } = require_doc(); + var { + isEmptyNode, + getLast, + hasEndComments + } = require_utils12(); + var { + printNextEmptyLine, + alignWithSpaces + } = require_misc2(); + function printFlowMapping(path2, print, options) { + const node = path2.getValue(); + const isMapping = node.type === "flowMapping"; + const openMarker = isMapping ? "{" : "["; + const closeMarker = isMapping ? "}" : "]"; + let bracketSpacing = softline; + if (isMapping && node.children.length > 0 && options.bracketSpacing) { + bracketSpacing = line; + } + const lastItem = getLast(node.children); + const isLastItemEmptyMappingItem = lastItem && lastItem.type === "flowMappingItem" && isEmptyNode(lastItem.key) && isEmptyNode(lastItem.value); + return [openMarker, alignWithSpaces(options.tabWidth, [bracketSpacing, printChildren(path2, print, options), options.trailingComma === "none" ? "" : ifBreak(","), hasEndComments(node) ? [hardline, join(hardline, path2.map(print, "endComments"))] : ""]), isLastItemEmptyMappingItem ? "" : bracketSpacing, closeMarker]; + } + function printChildren(path2, print, options) { + const node = path2.getValue(); + const parts = path2.map((childPath, index) => [print(), index === node.children.length - 1 ? "" : [",", line, node.children[index].position.start.line !== node.children[index + 1].position.start.line ? printNextEmptyLine(childPath, options.originalText) : ""]], "children"); + return parts; + } + module22.exports = { + printFlowMapping, + printFlowSequence: printFlowMapping + }; + } + }); + var require_mapping_item = __commonJS22({ + "src/language-yaml/print/mapping-item.js"(exports2, module22) { + "use strict"; + var { + builders: { + conditionalGroup, + group, + hardline, + ifBreak, + join, + line + } + } = require_doc(); + var { + hasLeadingComments, + hasMiddleComments, + hasTrailingComment, + hasEndComments, + isNode, + isEmptyNode, + isInlineNode + } = require_utils12(); + var { + alignWithSpaces + } = require_misc2(); + function printMappingItem(node, parentNode, path2, print, options) { + const { + key, + value + } = node; + const isEmptyMappingKey = isEmptyNode(key); + const isEmptyMappingValue = isEmptyNode(value); + if (isEmptyMappingKey && isEmptyMappingValue) { + return ": "; + } + const printedKey = print("key"); + const spaceBeforeColon = needsSpaceInFrontOfMappingValue(node) ? " " : ""; + if (isEmptyMappingValue) { + if (node.type === "flowMappingItem" && parentNode.type === "flowMapping") { + return printedKey; + } + if (node.type === "mappingItem" && isAbsolutelyPrintedAsSingleLineNode(key.content, options) && !hasTrailingComment(key.content) && (!parentNode.tag || parentNode.tag.value !== "tag:yaml.org,2002:set")) { + return [printedKey, spaceBeforeColon, ":"]; + } + return ["? ", alignWithSpaces(2, printedKey)]; + } + const printedValue = print("value"); + if (isEmptyMappingKey) { + return [": ", alignWithSpaces(2, printedValue)]; + } + if (hasLeadingComments(value) || !isInlineNode(key.content)) { + return ["? ", alignWithSpaces(2, printedKey), hardline, join("", path2.map(print, "value", "leadingComments").map((comment) => [comment, hardline])), ": ", alignWithSpaces(2, printedValue)]; + } + if (isSingleLineNode(key.content) && !hasLeadingComments(key.content) && !hasMiddleComments(key.content) && !hasTrailingComment(key.content) && !hasEndComments(key) && !hasLeadingComments(value.content) && !hasMiddleComments(value.content) && !hasEndComments(value) && isAbsolutelyPrintedAsSingleLineNode(value.content, options)) { + return [printedKey, spaceBeforeColon, ": ", printedValue]; + } + const groupId = Symbol("mappingKey"); + const groupedKey = group([ifBreak("? "), group(alignWithSpaces(2, printedKey), { + id: groupId + })]); + const explicitMappingValue = [hardline, ": ", alignWithSpaces(2, printedValue)]; + const implicitMappingValueParts = [spaceBeforeColon, ":"]; + if (hasLeadingComments(value.content) || hasEndComments(value) && value.content && !isNode(value.content, ["mapping", "sequence"]) || parentNode.type === "mapping" && hasTrailingComment(key.content) && isInlineNode(value.content) || isNode(value.content, ["mapping", "sequence"]) && value.content.tag === null && value.content.anchor === null) { + implicitMappingValueParts.push(hardline); + } else if (value.content) { + implicitMappingValueParts.push(line); + } + implicitMappingValueParts.push(printedValue); + const implicitMappingValue = alignWithSpaces(options.tabWidth, implicitMappingValueParts); + if (isAbsolutelyPrintedAsSingleLineNode(key.content, options) && !hasLeadingComments(key.content) && !hasMiddleComments(key.content) && !hasEndComments(key)) { + return conditionalGroup([[printedKey, implicitMappingValue]]); + } + return conditionalGroup([[groupedKey, ifBreak(explicitMappingValue, implicitMappingValue, { + groupId + })]]); + } + function isAbsolutelyPrintedAsSingleLineNode(node, options) { + if (!node) { + return true; + } + switch (node.type) { + case "plain": + case "quoteSingle": + case "quoteDouble": + break; + case "alias": + return true; + default: + return false; + } + if (options.proseWrap === "preserve") { + return node.position.start.line === node.position.end.line; + } + if (/\\$/m.test(options.originalText.slice(node.position.start.offset, node.position.end.offset))) { + return false; + } + switch (options.proseWrap) { + case "never": + return !node.value.includes("\n"); + case "always": + return !/[\n ]/.test(node.value); + default: + return false; + } + } + function needsSpaceInFrontOfMappingValue(node) { + return node.key.content && node.key.content.type === "alias"; + } + function isSingleLineNode(node) { + if (!node) { + return true; + } + switch (node.type) { + case "plain": + case "quoteDouble": + case "quoteSingle": + return node.position.start.line === node.position.end.line; + case "alias": + return true; + default: + return false; + } + } + module22.exports = printMappingItem; + } + }); + var require_block2 = __commonJS22({ + "src/language-yaml/print/block.js"(exports2, module22) { + "use strict"; + var { + builders: { + dedent, + dedentToRoot, + fill, + hardline, + join, + line, + literalline, + markAsRoot + }, + utils: { + getDocParts + } + } = require_doc(); + var { + getAncestorCount, + getBlockValueLineContents, + hasIndicatorComment, + isLastDescendantNode, + isNode + } = require_utils12(); + var { + alignWithSpaces + } = require_misc2(); + function printBlock(path2, print, options) { + const node = path2.getValue(); + const parentIndent = getAncestorCount(path2, (ancestorNode) => isNode(ancestorNode, ["sequence", "mapping"])); + const isLastDescendant = isLastDescendantNode(path2); + const parts = [node.type === "blockFolded" ? ">" : "|"]; + if (node.indent !== null) { + parts.push(node.indent.toString()); + } + if (node.chomping !== "clip") { + parts.push(node.chomping === "keep" ? "+" : "-"); + } + if (hasIndicatorComment(node)) { + parts.push(" ", print("indicatorComment")); + } + const lineContents = getBlockValueLineContents(node, { + parentIndent, + isLastDescendant, + options + }); + const contentsParts = []; + for (const [index, lineWords] of lineContents.entries()) { + if (index === 0) { + contentsParts.push(hardline); + } + contentsParts.push(fill(getDocParts(join(line, lineWords)))); + if (index !== lineContents.length - 1) { + contentsParts.push(lineWords.length === 0 ? hardline : markAsRoot(literalline)); + } else if (node.chomping === "keep" && isLastDescendant) { + contentsParts.push(dedentToRoot(lineWords.length === 0 ? hardline : literalline)); + } + } + if (node.indent === null) { + parts.push(dedent(alignWithSpaces(options.tabWidth, contentsParts))); + } else { + parts.push(dedentToRoot(alignWithSpaces(node.indent - 1 + parentIndent, contentsParts))); + } + return parts; + } + module22.exports = printBlock; + } + }); + var require_printer_yaml = __commonJS22({ + "src/language-yaml/printer-yaml.js"(exports2, module22) { + "use strict"; + var { + builders: { + breakParent, + fill, + group, + hardline, + join, + line, + lineSuffix, + literalline + }, + utils: { + getDocParts, + replaceTextEndOfLine + } + } = require_doc(); + var { + isPreviousLineEmpty + } = require_util2(); + var { + insertPragma, + isPragma + } = require_pragma6(); + var { + locStart + } = require_loc7(); + var embed = require_embed5(); + var { + getFlowScalarLineContents, + getLastDescendantNode, + hasLeadingComments, + hasMiddleComments, + hasTrailingComment, + hasEndComments, + hasPrettierIgnore, + isLastDescendantNode, + isNode, + isInlineNode + } = require_utils12(); + var preprocess = require_print_preprocess4(); + var { + alignWithSpaces, + printNextEmptyLine, + shouldPrintEndComments + } = require_misc2(); + var { + printFlowMapping, + printFlowSequence + } = require_flow_mapping_sequence(); + var printMappingItem = require_mapping_item(); + var printBlock = require_block2(); + function genericPrint(path2, options, print) { + const node = path2.getValue(); + const parts = []; + if (node.type !== "mappingValue" && hasLeadingComments(node)) { + parts.push([join(hardline, path2.map(print, "leadingComments")), hardline]); + } + const { + tag, + anchor + } = node; + if (tag) { + parts.push(print("tag")); + } + if (tag && anchor) { + parts.push(" "); + } + if (anchor) { + parts.push(print("anchor")); + } + let nextEmptyLine = ""; + if (isNode(node, ["mapping", "sequence", "comment", "directive", "mappingItem", "sequenceItem"]) && !isLastDescendantNode(path2)) { + nextEmptyLine = printNextEmptyLine(path2, options.originalText); + } + if (tag || anchor) { + if (isNode(node, ["sequence", "mapping"]) && !hasMiddleComments(node)) { + parts.push(hardline); + } else { + parts.push(" "); + } + } + if (hasMiddleComments(node)) { + parts.push([node.middleComments.length === 1 ? "" : hardline, join(hardline, path2.map(print, "middleComments")), hardline]); + } + const parentNode = path2.getParentNode(); + if (hasPrettierIgnore(path2)) { + parts.push(replaceTextEndOfLine(options.originalText.slice(node.position.start.offset, node.position.end.offset).trimEnd(), literalline)); + } else { + parts.push(group(printNode(node, parentNode, path2, options, print))); + } + if (hasTrailingComment(node) && !isNode(node, ["document", "documentHead"])) { + parts.push(lineSuffix([node.type === "mappingValue" && !node.content ? "" : " ", parentNode.type === "mappingKey" && path2.getParentNode(2).type === "mapping" && isInlineNode(node) ? "" : breakParent, print("trailingComment")])); + } + if (shouldPrintEndComments(node)) { + parts.push(alignWithSpaces(node.type === "sequenceItem" ? 2 : 0, [hardline, join(hardline, path2.map((path22) => [isPreviousLineEmpty(options.originalText, path22.getValue(), locStart) ? hardline : "", print()], "endComments"))])); + } + parts.push(nextEmptyLine); + return parts; + } + function printNode(node, parentNode, path2, options, print) { + switch (node.type) { + case "root": { + const { + children + } = node; + const parts = []; + path2.each((childPath, index) => { + const document2 = children[index]; + const nextDocument = children[index + 1]; + if (index !== 0) { + parts.push(hardline); + } + parts.push(print()); + if (shouldPrintDocumentEndMarker(document2, nextDocument)) { + parts.push(hardline, "..."); + if (hasTrailingComment(document2)) { + parts.push(" ", print("trailingComment")); + } + } else if (nextDocument && !hasTrailingComment(nextDocument.head)) { + parts.push(hardline, "---"); + } + }, "children"); + const lastDescendantNode = getLastDescendantNode(node); + if (!isNode(lastDescendantNode, ["blockLiteral", "blockFolded"]) || lastDescendantNode.chomping !== "keep") { + parts.push(hardline); + } + return parts; + } + case "document": { + const nextDocument = parentNode.children[path2.getName() + 1]; + const parts = []; + if (shouldPrintDocumentHeadEndMarker(node, nextDocument, parentNode, options) === "head") { + if (node.head.children.length > 0 || node.head.endComments.length > 0) { + parts.push(print("head")); + } + if (hasTrailingComment(node.head)) { + parts.push(["---", " ", print(["head", "trailingComment"])]); + } else { + parts.push("---"); + } + } + if (shouldPrintDocumentBody(node)) { + parts.push(print("body")); + } + return join(hardline, parts); + } + case "documentHead": + return join(hardline, [...path2.map(print, "children"), ...path2.map(print, "endComments")]); + case "documentBody": { + const { + children, + endComments + } = node; + let separator = ""; + if (children.length > 0 && endComments.length > 0) { + const lastDescendantNode = getLastDescendantNode(node); + if (isNode(lastDescendantNode, ["blockFolded", "blockLiteral"])) { + if (lastDescendantNode.chomping !== "keep") { + separator = [hardline, hardline]; + } + } else { + separator = hardline; + } + } + return [join(hardline, path2.map(print, "children")), separator, join(hardline, path2.map(print, "endComments"))]; + } + case "directive": + return ["%", join(" ", [node.name, ...node.parameters])]; + case "comment": + return ["#", node.value]; + case "alias": + return ["*", node.value]; + case "tag": + return options.originalText.slice(node.position.start.offset, node.position.end.offset); + case "anchor": + return ["&", node.value]; + case "plain": + return printFlowScalarContent(node.type, options.originalText.slice(node.position.start.offset, node.position.end.offset), options); + case "quoteDouble": + case "quoteSingle": { + const singleQuote = "'"; + const doubleQuote = '"'; + const raw = options.originalText.slice(node.position.start.offset + 1, node.position.end.offset - 1); + if (node.type === "quoteSingle" && raw.includes("\\") || node.type === "quoteDouble" && /\\[^"]/.test(raw)) { + const originalQuote = node.type === "quoteDouble" ? doubleQuote : singleQuote; + return [originalQuote, printFlowScalarContent(node.type, raw, options), originalQuote]; + } + if (raw.includes(doubleQuote)) { + return [singleQuote, printFlowScalarContent(node.type, node.type === "quoteDouble" ? raw.replace(/\\"/g, doubleQuote).replace(/'/g, singleQuote.repeat(2)) : raw, options), singleQuote]; + } + if (raw.includes(singleQuote)) { + return [doubleQuote, printFlowScalarContent(node.type, node.type === "quoteSingle" ? raw.replace(/''/g, singleQuote) : raw, options), doubleQuote]; + } + const quote = options.singleQuote ? singleQuote : doubleQuote; + return [quote, printFlowScalarContent(node.type, raw, options), quote]; + } + case "blockFolded": + case "blockLiteral": { + return printBlock(path2, print, options); + } + case "mapping": + case "sequence": + return join(hardline, path2.map(print, "children")); + case "sequenceItem": + return ["- ", alignWithSpaces(2, node.content ? print("content") : "")]; + case "mappingKey": + case "mappingValue": + return !node.content ? "" : print("content"); + case "mappingItem": + case "flowMappingItem": { + return printMappingItem(node, parentNode, path2, print, options); + } + case "flowMapping": + return printFlowMapping(path2, print, options); + case "flowSequence": + return printFlowSequence(path2, print, options); + case "flowSequenceItem": + return print("content"); + default: + throw new Error(`Unexpected node type ${node.type}`); + } + } + function shouldPrintDocumentBody(document2) { + return document2.body.children.length > 0 || hasEndComments(document2.body); + } + function shouldPrintDocumentEndMarker(document2, nextDocument) { + return hasTrailingComment(document2) || nextDocument && (nextDocument.head.children.length > 0 || hasEndComments(nextDocument.head)); + } + function shouldPrintDocumentHeadEndMarker(document2, nextDocument, root, options) { + if (root.children[0] === document2 && /---(?:\s|$)/.test(options.originalText.slice(locStart(document2), locStart(document2) + 4)) || document2.head.children.length > 0 || hasEndComments(document2.head) || hasTrailingComment(document2.head)) { + return "head"; + } + if (shouldPrintDocumentEndMarker(document2, nextDocument)) { + return false; + } + return nextDocument ? "root" : false; + } + function printFlowScalarContent(nodeType, content, options) { + const lineContents = getFlowScalarLineContents(nodeType, content, options); + return join(hardline, lineContents.map((lineContentWords) => fill(getDocParts(join(line, lineContentWords))))); + } + function clean(node, newNode) { + if (isNode(newNode)) { + delete newNode.position; + switch (newNode.type) { + case "comment": + if (isPragma(newNode.value)) { + return null; + } + break; + case "quoteDouble": + case "quoteSingle": + newNode.type = "quote"; + break; + } + } + } + module22.exports = { + preprocess, + embed, + print: genericPrint, + massageAstNode: clean, + insertPragma + }; + } + }); + var require_options7 = __commonJS22({ + "src/language-yaml/options.js"(exports2, module22) { + "use strict"; + var commonOptions = require_common_options(); + module22.exports = { + bracketSpacing: commonOptions.bracketSpacing, + singleQuote: commonOptions.singleQuote, + proseWrap: commonOptions.proseWrap + }; + } + }); + var require_parsers7 = __commonJS22({ + "src/language-yaml/parsers.js"(exports2, module22) { + "use strict"; + module22.exports = { + get yaml() { + return require_parser_yaml().parsers.yaml; + } + }; + } + }); + var require_YAML = __commonJS22({ + "node_modules/linguist-languages/data/YAML.json"(exports2, module22) { + module22.exports = { + name: "YAML", + type: "data", + color: "#cb171e", + tmScope: "source.yaml", + aliases: ["yml"], + extensions: [".yml", ".mir", ".reek", ".rviz", ".sublime-syntax", ".syntax", ".yaml", ".yaml-tmlanguage", ".yaml.sed", ".yml.mysql"], + filenames: [".clang-format", ".clang-tidy", ".gemrc", "CITATION.cff", "glide.lock", "yarn.lock"], + aceMode: "yaml", + codemirrorMode: "yaml", + codemirrorMimeType: "text/x-yaml", + languageId: 407 + }; + } + }); + var require_language_yaml = __commonJS22({ + "src/language-yaml/index.js"(exports2, module22) { + "use strict"; + var createLanguage = require_create_language(); + var printer = require_printer_yaml(); + var options = require_options7(); + var parsers = require_parsers7(); + var languages = [createLanguage(require_YAML(), (data) => ({ + since: "1.14.0", + parsers: ["yaml"], + vscodeLanguageIds: ["yaml", "ansible", "home-assistant"], + filenames: [...data.filenames.filter((filename) => filename !== "yarn.lock"), ".prettierrc", ".stylelintrc"] + }))]; + module22.exports = { + languages, + printers: { + yaml: printer + }, + options, + parsers + }; + } + }); + var require_languages = __commonJS22({ + "src/languages.js"(exports2, module22) { + "use strict"; + module22.exports = [require_language_js(), require_language_css(), require_language_handlebars(), require_language_graphql(), require_language_markdown(), require_language_html(), require_language_yaml()]; + } + }); + var require_load_plugins = __commonJS22({ + "src/common/load-plugins.js"(exports2, module22) { + "use strict"; + var fs5 = require("fs"); + var path2 = require("path"); + var fastGlob = require_out4(); + var partition = require_partition(); + var uniqByKey = require_uniq_by_key(); + var internalPlugins = require_languages(); + var { + default: mem2, + memClear: memClear2 + } = (init_dist(), __toCommonJS(dist_exports)); + var thirdParty = require_third_party(); + var resolve = require_resolve2(); + var memoizedLoad = mem2(load2, { + cacheKey: JSON.stringify + }); + var memoizedSearch = mem2(findPluginsInNodeModules); + var clearCache = () => { + memClear2(memoizedLoad); + memClear2(memoizedSearch); + }; + function load2(plugins2, pluginSearchDirs) { + if (!plugins2) { + plugins2 = []; + } + if (pluginSearchDirs === false) { + pluginSearchDirs = []; + } else { + pluginSearchDirs = pluginSearchDirs || []; + if (pluginSearchDirs.length === 0) { + const autoLoadDir = thirdParty.findParentDir(__dirname, "node_modules"); + if (autoLoadDir) { + pluginSearchDirs = [autoLoadDir]; + } + } + } + const [externalPluginNames, externalPluginInstances] = partition(plugins2, (plugin) => typeof plugin === "string"); + const externalManualLoadPluginInfos = externalPluginNames.map((pluginName) => { + let requirePath; + try { + requirePath = resolve(path2.resolve(process.cwd(), pluginName)); + } catch { + requirePath = resolve(pluginName, { + paths: [process.cwd()] + }); + } + return { + name: pluginName, + requirePath + }; + }); + const externalAutoLoadPluginInfos = pluginSearchDirs.flatMap((pluginSearchDir) => { + const resolvedPluginSearchDir = path2.resolve(process.cwd(), pluginSearchDir); + const nodeModulesDir = path2.resolve(resolvedPluginSearchDir, "node_modules"); + if (!isDirectory(nodeModulesDir) && !isDirectory(resolvedPluginSearchDir)) { + throw new Error(`${pluginSearchDir} does not exist or is not a directory`); + } + return memoizedSearch(nodeModulesDir).map((pluginName) => ({ + name: pluginName, + requirePath: resolve(pluginName, { + paths: [resolvedPluginSearchDir] + }) + })); + }); + const externalPlugins = [...uniqByKey([...externalManualLoadPluginInfos, ...externalAutoLoadPluginInfos], "requirePath").map((externalPluginInfo) => Object.assign({ + name: externalPluginInfo.name + }, require(externalPluginInfo.requirePath))), ...externalPluginInstances]; + return [...internalPlugins, ...externalPlugins]; + } + function findPluginsInNodeModules(nodeModulesDir) { + const pluginPackageJsonPaths = fastGlob.sync(["prettier-plugin-*/package.json", "@*/prettier-plugin-*/package.json", "@prettier/plugin-*/package.json"], { + cwd: nodeModulesDir + }); + return pluginPackageJsonPaths.map(path2.dirname); + } + function isDirectory(dir) { + try { + return fs5.statSync(dir).isDirectory(); + } catch { + return false; + } + } + module22.exports = { + loadPlugins: memoizedLoad, + clearCache + }; + } + }); + var { + version + } = require_package2(); + var core3 = require_core2(); + var { + getSupportInfo + } = require_support(); + var getFileInfo = require_get_file_info(); + var sharedUtil = require_util_shared(); + var plugins = require_load_plugins(); + var config = require_resolve_config(); + var doc = require_doc(); + function _withPlugins(fn, optsArgIdx = 1) { + return (...args) => { + const opts = args[optsArgIdx] || {}; + args[optsArgIdx] = Object.assign(Object.assign({}, opts), {}, { + plugins: plugins.loadPlugins(opts.plugins, opts.pluginSearchDirs) + }); + return fn(...args); + }; + } + function withPlugins(fn, optsArgIdx) { + const resultingFn = _withPlugins(fn, optsArgIdx); + if (fn.sync) { + resultingFn.sync = _withPlugins(fn.sync, optsArgIdx); + } + return resultingFn; + } + var formatWithCursor = withPlugins(core3.formatWithCursor); + module2.exports = { + formatWithCursor, + format(text, opts) { + return formatWithCursor(text, opts).formatted; + }, + check(text, opts) { + const { + formatted + } = formatWithCursor(text, opts); + return formatted === text; + }, + doc, + resolveConfig: config.resolveConfig, + resolveConfigFile: config.resolveConfigFile, + clearConfigCache() { + config.clearCache(); + plugins.clearCache(); + }, + getFileInfo: withPlugins(getFileInfo), + getSupportInfo: withPlugins(getSupportInfo, 0), + version, + util: sharedUtil, + __internal: { + errors: require_errors(), + coreOptions: require_core_options(), + createIgnorer: require_create_ignorer(), + optionsModule: require_options(), + optionsNormalizer: require_options_normalizer(), + utils: { + arrayify: require_arrayify(), + getLast: require_get_last(), + partition: require_partition(), + isNonEmptyArray: require_util2().isNonEmptyArray + } + }, + __debug: { + parse: withPlugins(core3.parse), + formatAST: withPlugins(core3.formatAST), + formatDoc: withPlugins(core3.formatDoc), + printToDoc: withPlugins(core3.printToDoc), + printDocToString: withPlugins(core3.printDocToString) + } + }; + } +}); + +// src/inputs.ts +var nconf = __toESM(require_nconf()); +var fs3 = __toESM(require("node:fs")); +var path = __toESM(require("node:path")); + +// node_modules/js-yaml/dist/js-yaml.mjs +function isNothing(subject) { + return typeof subject === "undefined" || subject === null; +} +function isObject(subject) { + return typeof subject === "object" && subject !== null; +} +function toArray(sequence) { + if (Array.isArray(sequence)) + return sequence; + else if (isNothing(sequence)) + return []; + return [sequence]; +} +function extend(target, source) { + var index, length, key, sourceKeys; + if (source) { + sourceKeys = Object.keys(source); + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + return target; +} +function repeat(string, count) { + var result = "", cycle; + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + return result; +} +function isNegativeZero(number) { + return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; +} +var isNothing_1 = isNothing; +var isObject_1 = isObject; +var toArray_1 = toArray; +var repeat_1 = repeat; +var isNegativeZero_1 = isNegativeZero; +var extend_1 = extend; +var common = { + isNothing: isNothing_1, + isObject: isObject_1, + toArray: toArray_1, + repeat: repeat_1, + isNegativeZero: isNegativeZero_1, + extend: extend_1 +}; +function formatError(exception2, compact) { + var where = "", message = exception2.reason || "(unknown reason)"; + if (!exception2.mark) + return message; + if (exception2.mark.name) { + where += 'in "' + exception2.mark.name + '" '; + } + where += "(" + (exception2.mark.line + 1) + ":" + (exception2.mark.column + 1) + ")"; + if (!compact && exception2.mark.snippet) { + where += "\n\n" + exception2.mark.snippet; + } + return message + " " + where; +} +function YAMLException$1(reason, mark) { + Error.call(this); + this.name = "YAMLException"; + this.reason = reason; + this.mark = mark; + this.message = formatError(this, false); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = new Error().stack || ""; + } +} +YAMLException$1.prototype = Object.create(Error.prototype); +YAMLException$1.prototype.constructor = YAMLException$1; +YAMLException$1.prototype.toString = function toString(compact) { + return this.name + ": " + formatError(this, compact); +}; +var exception = YAMLException$1; +function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { + var head = ""; + var tail = ""; + var maxHalfLength = Math.floor(maxLineLength / 2) - 1; + if (position - lineStart > maxHalfLength) { + head = " ... "; + lineStart = position - maxHalfLength + head.length; + } + if (lineEnd - position > maxHalfLength) { + tail = " ..."; + lineEnd = position + maxHalfLength - tail.length; + } + return { + str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + tail, + pos: position - lineStart + head.length + }; +} +function padStart(string, max) { + return common.repeat(" ", max - string.length) + string; +} +function makeSnippet(mark, options) { + options = Object.create(options || null); + if (!mark.buffer) + return null; + if (!options.maxLength) + options.maxLength = 79; + if (typeof options.indent !== "number") + options.indent = 1; + if (typeof options.linesBefore !== "number") + options.linesBefore = 3; + if (typeof options.linesAfter !== "number") + options.linesAfter = 2; + var re = /\r?\n|\r|\0/g; + var lineStarts = [0]; + var lineEnds = []; + var match; + var foundLineNo = -1; + while (match = re.exec(mark.buffer)) { + lineEnds.push(match.index); + lineStarts.push(match.index + match[0].length); + if (mark.position <= match.index && foundLineNo < 0) { + foundLineNo = lineStarts.length - 2; + } + } + if (foundLineNo < 0) + foundLineNo = lineStarts.length - 1; + var result = "", i, line; + var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; + var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); + for (i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) + break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo - i], + lineEnds[foundLineNo - i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), + maxLineLength + ); + result = common.repeat(" ", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + " | " + line.str + "\n" + result; + } + line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); + result += common.repeat(" ", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line.str + "\n"; + result += common.repeat("-", options.indent + lineNoLength + 3 + line.pos) + "^\n"; + for (i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) + break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo + i], + lineEnds[foundLineNo + i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), + maxLineLength + ); + result += common.repeat(" ", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + " | " + line.str + "\n"; + } + return result.replace(/\n$/, ""); +} +var snippet = makeSnippet; +var TYPE_CONSTRUCTOR_OPTIONS = [ + "kind", + "multi", + "resolve", + "construct", + "instanceOf", + "predicate", + "represent", + "representName", + "defaultStyle", + "styleAliases" +]; +var YAML_NODE_KINDS = [ + "scalar", + "sequence", + "mapping" +]; +function compileStyleAliases(map2) { + var result = {}; + if (map2 !== null) { + Object.keys(map2).forEach(function(style) { + map2[style].forEach(function(alias) { + result[String(alias)] = style; + }); + }); + } + return result; +} +function Type$1(tag, options) { + options = options || {}; + Object.keys(options).forEach(function(name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + this.options = options; + this.tag = tag; + this.kind = options["kind"] || null; + this.resolve = options["resolve"] || function() { + return true; + }; + this.construct = options["construct"] || function(data) { + return data; + }; + this.instanceOf = options["instanceOf"] || null; + this.predicate = options["predicate"] || null; + this.represent = options["represent"] || null; + this.representName = options["representName"] || null; + this.defaultStyle = options["defaultStyle"] || null; + this.multi = options["multi"] || false; + this.styleAliases = compileStyleAliases(options["styleAliases"] || null); + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} +var type = Type$1; +function compileList(schema2, name) { + var result = []; + schema2[name].forEach(function(currentType) { + var newIndex = result.length; + result.forEach(function(previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) { + newIndex = previousIndex; + } + }); + result[newIndex] = currentType; + }); + return result; +} +function compileMap() { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + }, index, length; + function collectType(type2) { + if (type2.multi) { + result.multi[type2.kind].push(type2); + result.multi["fallback"].push(type2); + } else { + result[type2.kind][type2.tag] = result["fallback"][type2.tag] = type2; + } + } + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} +function Schema$1(definition) { + return this.extend(definition); +} +Schema$1.prototype.extend = function extend2(definition) { + var implicit = []; + var explicit = []; + if (definition instanceof type) { + explicit.push(definition); + } else if (Array.isArray(definition)) { + explicit = explicit.concat(definition); + } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { + if (definition.implicit) + implicit = implicit.concat(definition.implicit); + if (definition.explicit) + explicit = explicit.concat(definition.explicit); + } else { + throw new exception("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })"); + } + implicit.forEach(function(type$1) { + if (!(type$1 instanceof type)) { + throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object."); + } + if (type$1.loadKind && type$1.loadKind !== "scalar") { + throw new exception("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."); + } + if (type$1.multi) { + throw new exception("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit."); + } + }); + explicit.forEach(function(type$1) { + if (!(type$1 instanceof type)) { + throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object."); + } + }); + var result = Object.create(Schema$1.prototype); + result.implicit = (this.implicit || []).concat(implicit); + result.explicit = (this.explicit || []).concat(explicit); + result.compiledImplicit = compileList(result, "implicit"); + result.compiledExplicit = compileList(result, "explicit"); + result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); + return result; +}; +var schema = Schema$1; +var str = new type("tag:yaml.org,2002:str", { + kind: "scalar", + construct: function(data) { + return data !== null ? data : ""; + } +}); +var seq = new type("tag:yaml.org,2002:seq", { + kind: "sequence", + construct: function(data) { + return data !== null ? data : []; + } +}); +var map = new type("tag:yaml.org,2002:map", { + kind: "mapping", + construct: function(data) { + return data !== null ? data : {}; + } +}); +var failsafe = new schema({ + explicit: [ + str, + seq, + map + ] +}); +function resolveYamlNull(data) { + if (data === null) + return true; + var max = data.length; + return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL"); +} +function constructYamlNull() { + return null; +} +function isNull(object) { + return object === null; +} +var _null = new type("tag:yaml.org,2002:null", { + kind: "scalar", + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function() { + return "~"; + }, + lowercase: function() { + return "null"; + }, + uppercase: function() { + return "NULL"; + }, + camelcase: function() { + return "Null"; + }, + empty: function() { + return ""; + } + }, + defaultStyle: "lowercase" +}); +function resolveYamlBoolean(data) { + if (data === null) + return false; + var max = data.length; + return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE"); +} +function constructYamlBoolean(data) { + return data === "true" || data === "True" || data === "TRUE"; +} +function isBoolean(object) { + return Object.prototype.toString.call(object) === "[object Boolean]"; +} +var bool = new type("tag:yaml.org,2002:bool", { + kind: "scalar", + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function(object) { + return object ? "true" : "false"; + }, + uppercase: function(object) { + return object ? "TRUE" : "FALSE"; + }, + camelcase: function(object) { + return object ? "True" : "False"; + } + }, + defaultStyle: "lowercase" +}); +function isHexCode(c) { + return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102; +} +function isOctCode(c) { + return 48 <= c && c <= 55; +} +function isDecCode(c) { + return 48 <= c && c <= 57; +} +function resolveYamlInteger(data) { + if (data === null) + return false; + var max = data.length, index = 0, hasDigits = false, ch; + if (!max) + return false; + ch = data[index]; + if (ch === "-" || ch === "+") { + ch = data[++index]; + } + if (ch === "0") { + if (index + 1 === max) + return true; + ch = data[++index]; + if (ch === "b") { + index++; + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") + continue; + if (ch !== "0" && ch !== "1") + return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + if (ch === "x") { + index++; + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") + continue; + if (!isHexCode(data.charCodeAt(index))) + return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + if (ch === "o") { + index++; + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") + continue; + if (!isOctCode(data.charCodeAt(index))) + return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + } + if (ch === "_") + return false; + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") + continue; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + if (!hasDigits || ch === "_") + return false; + return true; +} +function constructYamlInteger(data) { + var value = data, sign = 1, ch; + if (value.indexOf("_") !== -1) { + value = value.replace(/_/g, ""); + } + ch = value[0]; + if (ch === "-" || ch === "+") { + if (ch === "-") + sign = -1; + value = value.slice(1); + ch = value[0]; + } + if (value === "0") + return 0; + if (ch === "0") { + if (value[1] === "b") + return sign * parseInt(value.slice(2), 2); + if (value[1] === "x") + return sign * parseInt(value.slice(2), 16); + if (value[1] === "o") + return sign * parseInt(value.slice(2), 8); + } + return sign * parseInt(value, 10); +} +function isInteger(object) { + return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 === 0 && !common.isNegativeZero(object)); +} +var int = new type("tag:yaml.org,2002:int", { + kind: "scalar", + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function(obj) { + return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1); + }, + octal: function(obj) { + return obj >= 0 ? "0o" + obj.toString(8) : "-0o" + obj.toString(8).slice(1); + }, + decimal: function(obj) { + return obj.toString(10); + }, + hexadecimal: function(obj) { + return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1); + } + }, + defaultStyle: "decimal", + styleAliases: { + binary: [2, "bin"], + octal: [8, "oct"], + decimal: [10, "dec"], + hexadecimal: [16, "hex"] + } +}); +var YAML_FLOAT_PATTERN = new RegExp( + "^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" +); +function resolveYamlFloat(data) { + if (data === null) + return false; + if (!YAML_FLOAT_PATTERN.test(data) || data[data.length - 1] === "_") { + return false; + } + return true; +} +function constructYamlFloat(data) { + var value, sign; + value = data.replace(/_/g, "").toLowerCase(); + sign = value[0] === "-" ? -1 : 1; + if ("+-".indexOf(value[0]) >= 0) { + value = value.slice(1); + } + if (value === ".inf") { + return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + } else if (value === ".nan") { + return NaN; + } + return sign * parseFloat(value, 10); +} +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; +function representYamlFloat(object, style) { + var res; + if (isNaN(object)) { + switch (style) { + case "lowercase": + return ".nan"; + case "uppercase": + return ".NAN"; + case "camelcase": + return ".NaN"; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case "lowercase": + return ".inf"; + case "uppercase": + return ".INF"; + case "camelcase": + return ".Inf"; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case "lowercase": + return "-.inf"; + case "uppercase": + return "-.INF"; + case "camelcase": + return "-.Inf"; + } + } else if (common.isNegativeZero(object)) { + return "-0.0"; + } + res = object.toString(10); + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; +} +function isFloat(object) { + return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common.isNegativeZero(object)); +} +var float = new type("tag:yaml.org,2002:float", { + kind: "scalar", + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: "lowercase" +}); +var json = failsafe.extend({ + implicit: [ + _null, + bool, + int, + float + ] +}); +var core = json; +var YAML_DATE_REGEXP = new RegExp( + "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$" +); +var YAML_TIMESTAMP_REGEXP = new RegExp( + "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$" +); +function resolveYamlTimestamp(data) { + if (data === null) + return false; + if (YAML_DATE_REGEXP.exec(data) !== null) + return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) + return true; + return false; +} +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date; + match = YAML_DATE_REGEXP.exec(data); + if (match === null) + match = YAML_TIMESTAMP_REGEXP.exec(data); + if (match === null) + throw new Error("Date resolve error"); + year = +match[1]; + month = +match[2] - 1; + day = +match[3]; + if (!match[4]) { + return new Date(Date.UTC(year, month, day)); + } + hour = +match[4]; + minute = +match[5]; + second = +match[6]; + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { + fraction += "0"; + } + fraction = +fraction; + } + if (match[9]) { + tz_hour = +match[10]; + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 6e4; + if (match[9] === "-") + delta = -delta; + } + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + if (delta) + date.setTime(date.getTime() - delta); + return date; +} +function representYamlTimestamp(object) { + return object.toISOString(); +} +var timestamp = new type("tag:yaml.org,2002:timestamp", { + kind: "scalar", + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); +function resolveYamlMerge(data) { + return data === "<<" || data === null; +} +var merge = new type("tag:yaml.org,2002:merge", { + kind: "scalar", + resolve: resolveYamlMerge +}); +var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; +function resolveYamlBinary(data) { + if (data === null) + return false; + var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP; + for (idx = 0; idx < max; idx++) { + code = map2.indexOf(data.charAt(idx)); + if (code > 64) + continue; + if (code < 0) + return false; + bitlen += 6; + } + return bitlen % 8 === 0; +} +function constructYamlBinary(data) { + var idx, tailbits, input = data.replace(/[\r\n=]/g, ""), max = input.length, map2 = BASE64_MAP, bits = 0, result = []; + for (idx = 0; idx < max; idx++) { + if (idx % 4 === 0 && idx) { + result.push(bits >> 16 & 255); + result.push(bits >> 8 & 255); + result.push(bits & 255); + } + bits = bits << 6 | map2.indexOf(input.charAt(idx)); + } + tailbits = max % 4 * 6; + if (tailbits === 0) { + result.push(bits >> 16 & 255); + result.push(bits >> 8 & 255); + result.push(bits & 255); + } else if (tailbits === 18) { + result.push(bits >> 10 & 255); + result.push(bits >> 2 & 255); + } else if (tailbits === 12) { + result.push(bits >> 4 & 255); + } + return new Uint8Array(result); +} +function representYamlBinary(object) { + var result = "", bits = 0, idx, tail, max = object.length, map2 = BASE64_MAP; + for (idx = 0; idx < max; idx++) { + if (idx % 3 === 0 && idx) { + result += map2[bits >> 18 & 63]; + result += map2[bits >> 12 & 63]; + result += map2[bits >> 6 & 63]; + result += map2[bits & 63]; + } + bits = (bits << 8) + object[idx]; + } + tail = max % 3; + if (tail === 0) { + result += map2[bits >> 18 & 63]; + result += map2[bits >> 12 & 63]; + result += map2[bits >> 6 & 63]; + result += map2[bits & 63]; + } else if (tail === 2) { + result += map2[bits >> 10 & 63]; + result += map2[bits >> 4 & 63]; + result += map2[bits << 2 & 63]; + result += map2[64]; + } else if (tail === 1) { + result += map2[bits >> 2 & 63]; + result += map2[bits << 4 & 63]; + result += map2[64]; + result += map2[64]; + } + return result; +} +function isBinary(obj) { + return Object.prototype.toString.call(obj) === "[object Uint8Array]"; +} +var binary = new type("tag:yaml.org,2002:binary", { + kind: "scalar", + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); +var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; +var _toString$2 = Object.prototype.toString; +function resolveYamlOmap(data) { + if (data === null) + return true; + var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data; + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + if (_toString$2.call(pair) !== "[object Object]") + return false; + for (pairKey in pair) { + if (_hasOwnProperty$3.call(pair, pairKey)) { + if (!pairHasKey) + pairHasKey = true; + else + return false; + } + } + if (!pairHasKey) + return false; + if (objectKeys.indexOf(pairKey) === -1) + objectKeys.push(pairKey); + else + return false; + } + return true; +} +function constructYamlOmap(data) { + return data !== null ? data : []; +} +var omap = new type("tag:yaml.org,2002:omap", { + kind: "sequence", + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); +var _toString$1 = Object.prototype.toString; +function resolveYamlPairs(data) { + if (data === null) + return true; + var index, length, pair, keys, result, object = data; + result = new Array(object.length); + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + if (_toString$1.call(pair) !== "[object Object]") + return false; + keys = Object.keys(pair); + if (keys.length !== 1) + return false; + result[index] = [keys[0], pair[keys[0]]]; + } + return true; +} +function constructYamlPairs(data) { + if (data === null) + return []; + var index, length, pair, keys, result, object = data; + result = new Array(object.length); + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + keys = Object.keys(pair); + result[index] = [keys[0], pair[keys[0]]]; + } + return result; +} +var pairs = new type("tag:yaml.org,2002:pairs", { + kind: "sequence", + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); +var _hasOwnProperty$2 = Object.prototype.hasOwnProperty; +function resolveYamlSet(data) { + if (data === null) + return true; + var key, object = data; + for (key in object) { + if (_hasOwnProperty$2.call(object, key)) { + if (object[key] !== null) + return false; + } + } + return true; +} +function constructYamlSet(data) { + return data !== null ? data : {}; +} +var set = new type("tag:yaml.org,2002:set", { + kind: "mapping", + resolve: resolveYamlSet, + construct: constructYamlSet +}); +var _default = core.extend({ + implicit: [ + timestamp, + merge + ], + explicit: [ + binary, + omap, + pairs, + set + ] +}); +var _hasOwnProperty$1 = Object.prototype.hasOwnProperty; +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; +function _class(obj) { + return Object.prototype.toString.call(obj); +} +function is_EOL(c) { + return c === 10 || c === 13; +} +function is_WHITE_SPACE(c) { + return c === 9 || c === 32; +} +function is_WS_OR_EOL(c) { + return c === 9 || c === 32 || c === 10 || c === 13; +} +function is_FLOW_INDICATOR(c) { + return c === 44 || c === 91 || c === 93 || c === 123 || c === 125; +} +function fromHexCode(c) { + var lc; + if (48 <= c && c <= 57) { + return c - 48; + } + lc = c | 32; + if (97 <= lc && lc <= 102) { + return lc - 97 + 10; + } + return -1; +} +function escapedHexLen(c) { + if (c === 120) { + return 2; + } + if (c === 117) { + return 4; + } + if (c === 85) { + return 8; + } + return 0; +} +function fromDecimalCode(c) { + if (48 <= c && c <= 57) { + return c - 48; + } + return -1; +} +function simpleEscapeSequence(c) { + return c === 48 ? "\0" : c === 97 ? "\x07" : c === 98 ? "\b" : c === 116 ? " " : c === 9 ? " " : c === 110 ? "\n" : c === 118 ? "\v" : c === 102 ? "\f" : c === 114 ? "\r" : c === 101 ? "\x1B" : c === 32 ? " " : c === 34 ? '"' : c === 47 ? "/" : c === 92 ? "\\" : c === 78 ? "\x85" : c === 95 ? "\xA0" : c === 76 ? "\u2028" : c === 80 ? "\u2029" : ""; +} +function charFromCodepoint(c) { + if (c <= 65535) { + return String.fromCharCode(c); + } + return String.fromCharCode( + (c - 65536 >> 10) + 55296, + (c - 65536 & 1023) + 56320 + ); +} +var simpleEscapeCheck = new Array(256); +var simpleEscapeMap = new Array(256); +for (i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} +var i; +function State$1(input, options) { + this.input = input; + this.filename = options["filename"] || null; + this.schema = options["schema"] || _default; + this.onWarning = options["onWarning"] || null; + this.legacy = options["legacy"] || false; + this.json = options["json"] || false; + this.listener = options["listener"] || null; + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + this.firstTabInLine = -1; + this.documents = []; +} +function generateError(state, message) { + var mark = { + name: state.filename, + buffer: state.input.slice(0, -1), + position: state.position, + line: state.line, + column: state.position - state.lineStart + }; + mark.snippet = snippet(mark); + return new exception(message, mark); +} +function throwError(state, message) { + throw generateError(state, message); +} +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} +var directiveHandlers = { + YAML: function handleYamlDirective(state, name, args) { + var match, major, minor; + if (state.version !== null) { + throwError(state, "duplication of %YAML directive"); + } + if (args.length !== 1) { + throwError(state, "YAML directive accepts exactly one argument"); + } + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + if (match === null) { + throwError(state, "ill-formed argument of the YAML directive"); + } + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + if (major !== 1) { + throwError(state, "unacceptable YAML version of the document"); + } + state.version = args[0]; + state.checkLineBreaks = minor < 2; + if (minor !== 1 && minor !== 2) { + throwWarning(state, "unsupported YAML version of the document"); + } + }, + TAG: function handleTagDirective(state, name, args) { + var handle, prefix; + if (args.length !== 2) { + throwError(state, "TAG directive accepts exactly two arguments"); + } + handle = args[0]; + prefix = args[1]; + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, "ill-formed tag handle (first argument) of the TAG directive"); + } + if (_hasOwnProperty$1.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, "ill-formed tag prefix (second argument) of the TAG directive"); + } + try { + prefix = decodeURIComponent(prefix); + } catch (err) { + throwError(state, "tag prefix is malformed: " + prefix); + } + state.tagMap[handle] = prefix; + } +}; +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + if (start < end) { + _result = state.input.slice(start, end); + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 9 || 32 <= _character && _character <= 1114111)) { + throwError(state, "expected valid JSON character"); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, "the stream contains non-printable characters"); + } + state.result += _result; + } +} +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + if (!common.isObject(source)) { + throwError(state, "cannot merge mappings; the provided source object is unacceptable"); + } + sourceKeys = Object.keys(source); + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + if (!_hasOwnProperty$1.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } +} +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) { + var index, quantity; + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, "nested arrays are not supported inside keys"); + } + if (typeof keyNode === "object" && _class(keyNode[index]) === "[object Object]") { + keyNode[index] = "[object Object]"; + } + } + } + if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") { + keyNode = "[object Object]"; + } + keyNode = String(keyNode); + if (_result === null) { + _result = {}; + } + if (keyTag === "tag:yaml.org,2002:merge") { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) { + state.line = startLine || state.line; + state.lineStart = startLineStart || state.lineStart; + state.position = startPos || state.position; + throwError(state, "duplicated mapping key"); + } + if (keyNode === "__proto__") { + Object.defineProperty(_result, keyNode, { + configurable: true, + enumerable: true, + writable: true, + value: valueNode + }); + } else { + _result[keyNode] = valueNode; + } + delete overridableKeys[keyNode]; + } + return _result; +} +function readLineBreak(state) { + var ch; + ch = state.input.charCodeAt(state.position); + if (ch === 10) { + state.position++; + } else if (ch === 13) { + state.position++; + if (state.input.charCodeAt(state.position) === 10) { + state.position++; + } + } else { + throwError(state, "a line break is expected"); + } + state.line += 1; + state.lineStart = state.position; + state.firstTabInLine = -1; +} +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, ch = state.input.charCodeAt(state.position); + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + if (ch === 9 && state.firstTabInLine === -1) { + state.firstTabInLine = state.position; + } + ch = state.input.charCodeAt(++state.position); + } + if (allowComments && ch === 35) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 10 && ch !== 13 && ch !== 0); + } + if (is_EOL(ch)) { + readLineBreak(state); + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + while (ch === 32) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, "deficient indentation"); + } + return lineBreaks; +} +function testDocumentSeparator(state) { + var _position = state.position, ch; + ch = state.input.charCodeAt(_position); + if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { + _position += 3; + ch = state.input.charCodeAt(_position); + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + return false; +} +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += " "; + } else if (count > 1) { + state.result += common.repeat("\n", count - 1); + } +} +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch; + ch = state.input.charCodeAt(state.position); + if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) { + return false; + } + if (ch === 63 || ch === 45) { + following = state.input.charCodeAt(state.position + 1); + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + state.kind = "scalar"; + state.result = ""; + captureStart = captureEnd = state.position; + hasPendingContent = false; + while (ch !== 0) { + if (ch === 58) { + following = state.input.charCodeAt(state.position + 1); + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + } else if (ch === 35) { + preceding = state.input.charCodeAt(state.position - 1); + if (is_WS_OR_EOL(preceding)) { + break; + } + } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + ch = state.input.charCodeAt(++state.position); + } + captureSegment(state, captureStart, captureEnd, false); + if (state.result) { + return true; + } + state.kind = _kind; + state.result = _result; + return false; +} +function readSingleQuotedScalar(state, nodeIndent) { + var ch, captureStart, captureEnd; + ch = state.input.charCodeAt(state.position); + if (ch !== 39) { + return false; + } + state.kind = "scalar"; + state.result = ""; + state.position++; + captureStart = captureEnd = state.position; + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 39) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + if (ch === 39) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, "unexpected end of the document within a single quoted scalar"); + } else { + state.position++; + captureEnd = state.position; + } + } + throwError(state, "unexpected end of the stream within a single quoted scalar"); +} +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, captureEnd, hexLength, hexResult, tmp, ch; + ch = state.input.charCodeAt(state.position); + if (ch !== 34) { + return false; + } + state.kind = "scalar"; + state.result = ""; + state.position++; + captureStart = captureEnd = state.position; + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 34) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + } else if (ch === 92) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + } else { + throwError(state, "expected hexadecimal character"); + } + } + state.result += charFromCodepoint(hexResult); + state.position++; + } else { + throwError(state, "unknown escape sequence"); + } + captureStart = captureEnd = state.position; + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, "unexpected end of the document within a double quoted scalar"); + } else { + state.position++; + captureEnd = state.position; + } + } + throwError(state, "unexpected end of the stream within a double quoted scalar"); +} +function readFlowCollection(state, nodeIndent) { + var readNext = true, _line, _lineStart, _pos, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch; + ch = state.input.charCodeAt(state.position); + if (ch === 91) { + terminator = 93; + isMapping = false; + _result = []; + } else if (ch === 123) { + terminator = 125; + isMapping = true; + _result = {}; + } else { + return false; + } + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + ch = state.input.charCodeAt(++state.position); + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? "mapping" : "sequence"; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, "missed comma between flow collection entries"); + } else if (ch === 44) { + throwError(state, "expected the node content, but found ','"); + } + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + if (ch === 63) { + following = state.input.charCodeAt(state.position + 1); + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + _line = state.line; + _lineStart = state.lineStart; + _pos = state.position; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + if ((isExplicitPair || state.line === _line) && ch === 58) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + } else { + _result.push(keyNode); + } + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + if (ch === 44) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + throwError(state, "unexpected end of the stream within a flow collection"); +} +function readBlockScalar(state, nodeIndent) { + var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch; + ch = state.input.charCodeAt(state.position); + if (ch === 124) { + folding = false; + } else if (ch === 62) { + folding = true; + } else { + return false; + } + state.kind = "scalar"; + state.result = ""; + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + if (ch === 43 || ch === 45) { + if (CHOMPING_CLIP === chomping) { + chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, "repeat of a chomping mode identifier"); + } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one"); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, "repeat of an indentation width identifier"); + } + } else { + break; + } + } + if (is_WHITE_SPACE(ch)) { + do { + ch = state.input.charCodeAt(++state.position); + } while (is_WHITE_SPACE(ch)); + if (ch === 35) { + do { + ch = state.input.charCodeAt(++state.position); + } while (!is_EOL(ch) && ch !== 0); + } + } + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + ch = state.input.charCodeAt(state.position); + while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + if (is_EOL(ch)) { + emptyLines++; + continue; + } + if (state.lineIndent < textIndent) { + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { + state.result += "\n"; + } + } + break; + } + if (folding) { + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat("\n", emptyLines + 1); + } else if (emptyLines === 0) { + if (didReadContent) { + state.result += " "; + } + } else { + state.result += common.repeat("\n", emptyLines); + } + } else { + state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines); + } + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + while (!is_EOL(ch) && ch !== 0) { + ch = state.input.charCodeAt(++state.position); + } + captureSegment(state, captureStart, state.position, false); + } + return true; +} +function readBlockSequence(state, nodeIndent) { + var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch; + if (state.firstTabInLine !== -1) + return false; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + ch = state.input.charCodeAt(state.position); + while (ch !== 0) { + if (state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, "tab characters must not be used in indentation"); + } + if (ch !== 45) { + break; + } + following = state.input.charCodeAt(state.position + 1); + if (!is_WS_OR_EOL(following)) { + break; + } + detected = true; + state.position++; + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { + throwError(state, "bad indentation of a sequence entry"); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = "sequence"; + state.result = _result; + return true; + } + return false; +} +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch; + if (state.firstTabInLine !== -1) + return false; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + ch = state.input.charCodeAt(state.position); + while (ch !== 0) { + if (!atExplicitKey && state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, "tab characters must not be used in indentation"); + } + following = state.input.charCodeAt(state.position + 1); + _line = state.line; + if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) { + if (ch === 63) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { + atExplicitKey = false; + allowCompact = true; + } else { + throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"); + } + state.position += 1; + ch = following; + } else { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + break; + } + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (ch === 58) { + ch = state.input.charCodeAt(++state.position); + if (!is_WS_OR_EOL(ch)) { + throwError(state, "a whitespace character is expected after the key-value separator within a block mapping"); + } + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + } else if (detected) { + throwError(state, "can not read an implicit mapping pair; a colon is missed"); + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; + } + } else if (detected) { + throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key"); + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; + } + } + if (state.line === _line || state.lineIndent > nodeIndent) { + if (atExplicitKey) { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + } + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { + throwError(state, "bad indentation of a mapping entry"); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + } + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = "mapping"; + state.result = _result; + } + return detected; +} +function readTagProperty(state) { + var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch; + ch = state.input.charCodeAt(state.position); + if (ch !== 33) + return false; + if (state.tag !== null) { + throwError(state, "duplication of a tag property"); + } + ch = state.input.charCodeAt(++state.position); + if (ch === 60) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + } else if (ch === 33) { + isNamed = true; + tagHandle = "!!"; + ch = state.input.charCodeAt(++state.position); + } else { + tagHandle = "!"; + } + _position = state.position; + if (isVerbatim) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && ch !== 62); + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, "unexpected end of the stream within a verbatim tag"); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + if (ch === 33) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, "named tag handle cannot contain such characters"); + } + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, "tag suffix cannot contain exclamation marks"); + } + } + ch = state.input.charCodeAt(++state.position); + } + tagName = state.input.slice(_position, state.position); + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, "tag suffix cannot contain flow indicator characters"); + } + } + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, "tag name cannot contain such characters: " + tagName); + } + try { + tagName = decodeURIComponent(tagName); + } catch (err) { + throwError(state, "tag name is malformed: " + tagName); + } + if (isVerbatim) { + state.tag = tagName; + } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + } else if (tagHandle === "!") { + state.tag = "!" + tagName; + } else if (tagHandle === "!!") { + state.tag = "tag:yaml.org,2002:" + tagName; + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + return true; +} +function readAnchorProperty(state) { + var _position, ch; + ch = state.input.charCodeAt(state.position); + if (ch !== 38) + return false; + if (state.anchor !== null) { + throwError(state, "duplication of an anchor property"); + } + ch = state.input.charCodeAt(++state.position); + _position = state.position; + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (state.position === _position) { + throwError(state, "name of an anchor node must contain at least one character"); + } + state.anchor = state.input.slice(_position, state.position); + return true; +} +function readAlias(state) { + var _position, alias, ch; + ch = state.input.charCodeAt(state.position); + if (ch !== 42) + return false; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (state.position === _position) { + throwError(state, "name of an alias node must contain at least one character"); + } + alias = state.input.slice(_position, state.position); + if (!_hasOwnProperty$1.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent; + if (state.listener !== null) { + state.listener("open", state); + } + state.tag = null; + state.anchor = null; + state.kind = null; + state.result = null; + allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; + if (allowToSeek) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + blockIndent = state.position - state.lineStart; + if (indentStatus === 1) { + if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + } else if (readAlias(state)) { + hasContent = true; + if (state.tag !== null || state.anchor !== null) { + throwError(state, "alias node should not have any properties"); + } + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + if (state.tag === null) { + state.tag = "?"; + } + } + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + if (state.tag === null) { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } else if (state.tag === "?") { + if (state.result !== null && state.kind !== "scalar") { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type2 = state.implicitTypes[typeIndex]; + if (type2.resolve(state.result)) { + state.result = type2.construct(state.result); + state.tag = type2.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (state.tag !== "!") { + if (_hasOwnProperty$1.call(state.typeMap[state.kind || "fallback"], state.tag)) { + type2 = state.typeMap[state.kind || "fallback"][state.tag]; + } else { + type2 = null; + typeList = state.typeMap.multi[state.kind || "fallback"]; + for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { + if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { + type2 = typeList[typeIndex]; + break; + } + } + } + if (!type2) { + throwError(state, "unknown tag !<" + state.tag + ">"); + } + if (state.result !== null && type2.kind !== state.kind) { + throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type2.kind + '", not "' + state.kind + '"'); + } + if (!type2.resolve(state.result, state.tag)) { + throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag"); + } else { + state.result = type2.construct(state.result, state.tag); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } + if (state.listener !== null) { + state.listener("close", state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} +function readDocument(state) { + var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch; + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = /* @__PURE__ */ Object.create(null); + state.anchorMap = /* @__PURE__ */ Object.create(null); + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + if (state.lineIndent > 0 || ch !== 37) { + break; + } + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + if (directiveName.length < 1) { + throwError(state, "directive name must not be less than one character in length"); + } + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (ch === 35) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && !is_EOL(ch)); + break; + } + if (is_EOL(ch)) + break; + _position = state.position; + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + directiveArgs.push(state.input.slice(_position, state.position)); + } + if (ch !== 0) + readLineBreak(state); + if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + skipSeparationSpace(state, true, -1); + if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } else if (hasDirectives) { + throwError(state, "directives end mark is expected"); + } + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, "non-ASCII line breaks are interpreted as content"); + } + state.documents.push(state.result); + if (state.position === state.lineStart && testDocumentSeparator(state)) { + if (state.input.charCodeAt(state.position) === 46) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + if (state.position < state.length - 1) { + throwError(state, "end of the stream or a document separator is expected"); + } else { + return; + } +} +function loadDocuments(input, options) { + input = String(input); + options = options || {}; + if (input.length !== 0) { + if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) { + input += "\n"; + } + if (input.charCodeAt(0) === 65279) { + input = input.slice(1); + } + } + var state = new State$1(input, options); + var nullpos = input.indexOf("\0"); + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, "null byte is not allowed in input"); + } + state.input += "\0"; + while (state.input.charCodeAt(state.position) === 32) { + state.lineIndent += 1; + state.position += 1; + } + while (state.position < state.length - 1) { + readDocument(state); + } + return state.documents; +} +function loadAll$1(input, iterator, options) { + if (iterator !== null && typeof iterator === "object" && typeof options === "undefined") { + options = iterator; + iterator = null; + } + var documents = loadDocuments(input, options); + if (typeof iterator !== "function") { + return documents; + } + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} +function load$1(input, options) { + var documents = loadDocuments(input, options); + if (documents.length === 0) { + return void 0; + } else if (documents.length === 1) { + return documents[0]; + } + throw new exception("expected a single document in the stream, but found more"); +} +var loadAll_1 = loadAll$1; +var load_1 = load$1; +var loader = { + loadAll: loadAll_1, + load: load_1 +}; +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var CHAR_BOM = 65279; +var CHAR_TAB = 9; +var CHAR_LINE_FEED = 10; +var CHAR_CARRIAGE_RETURN = 13; +var CHAR_SPACE = 32; +var CHAR_EXCLAMATION = 33; +var CHAR_DOUBLE_QUOTE = 34; +var CHAR_SHARP = 35; +var CHAR_PERCENT = 37; +var CHAR_AMPERSAND = 38; +var CHAR_SINGLE_QUOTE = 39; +var CHAR_ASTERISK = 42; +var CHAR_COMMA = 44; +var CHAR_MINUS = 45; +var CHAR_COLON = 58; +var CHAR_EQUALS = 61; +var CHAR_GREATER_THAN = 62; +var CHAR_QUESTION = 63; +var CHAR_COMMERCIAL_AT = 64; +var CHAR_LEFT_SQUARE_BRACKET = 91; +var CHAR_RIGHT_SQUARE_BRACKET = 93; +var CHAR_GRAVE_ACCENT = 96; +var CHAR_LEFT_CURLY_BRACKET = 123; +var CHAR_VERTICAL_LINE = 124; +var CHAR_RIGHT_CURLY_BRACKET = 125; +var ESCAPE_SEQUENCES = {}; +ESCAPE_SEQUENCES[0] = "\\0"; +ESCAPE_SEQUENCES[7] = "\\a"; +ESCAPE_SEQUENCES[8] = "\\b"; +ESCAPE_SEQUENCES[9] = "\\t"; +ESCAPE_SEQUENCES[10] = "\\n"; +ESCAPE_SEQUENCES[11] = "\\v"; +ESCAPE_SEQUENCES[12] = "\\f"; +ESCAPE_SEQUENCES[13] = "\\r"; +ESCAPE_SEQUENCES[27] = "\\e"; +ESCAPE_SEQUENCES[34] = '\\"'; +ESCAPE_SEQUENCES[92] = "\\\\"; +ESCAPE_SEQUENCES[133] = "\\N"; +ESCAPE_SEQUENCES[160] = "\\_"; +ESCAPE_SEQUENCES[8232] = "\\L"; +ESCAPE_SEQUENCES[8233] = "\\P"; +var DEPRECATED_BOOLEANS_SYNTAX = [ + "y", + "Y", + "yes", + "Yes", + "YES", + "on", + "On", + "ON", + "n", + "N", + "no", + "No", + "NO", + "off", + "Off", + "OFF" +]; +var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; +function compileStyleMap(schema2, map2) { + var result, keys, index, length, tag, style, type2; + if (map2 === null) + return {}; + result = {}; + keys = Object.keys(map2); + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map2[tag]); + if (tag.slice(0, 2) === "!!") { + tag = "tag:yaml.org,2002:" + tag.slice(2); + } + type2 = schema2.compiledTypeMap["fallback"][tag]; + if (type2 && _hasOwnProperty.call(type2.styleAliases, style)) { + style = type2.styleAliases[style]; + } + result[tag] = style; + } + return result; +} +function encodeHex(character) { + var string, handle, length; + string = character.toString(16).toUpperCase(); + if (character <= 255) { + handle = "x"; + length = 2; + } else if (character <= 65535) { + handle = "u"; + length = 4; + } else if (character <= 4294967295) { + handle = "U"; + length = 8; + } else { + throw new exception("code point within a string may not be greater than 0xFFFFFFFF"); + } + return "\\" + handle + common.repeat("0", length - string.length) + string; +} +var QUOTING_TYPE_SINGLE = 1; +var QUOTING_TYPE_DOUBLE = 2; +function State(options) { + this.schema = options["schema"] || _default; + this.indent = Math.max(1, options["indent"] || 2); + this.noArrayIndent = options["noArrayIndent"] || false; + this.skipInvalid = options["skipInvalid"] || false; + this.flowLevel = common.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"]; + this.styleMap = compileStyleMap(this.schema, options["styles"] || null); + this.sortKeys = options["sortKeys"] || false; + this.lineWidth = options["lineWidth"] || 80; + this.noRefs = options["noRefs"] || false; + this.noCompatMode = options["noCompatMode"] || false; + this.condenseFlow = options["condenseFlow"] || false; + this.quotingType = options["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; + this.forceQuotes = options["forceQuotes"] || false; + this.replacer = typeof options["replacer"] === "function" ? options["replacer"] : null; + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + this.tag = null; + this.result = ""; + this.duplicates = []; + this.usedDuplicates = null; +} +function indentString(string, spaces) { + var ind = common.repeat(" ", spaces), position = 0, next = -1, result = "", line, length = string.length; + while (position < length) { + next = string.indexOf("\n", position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + if (line.length && line !== "\n") + result += ind; + result += line; + } + return result; +} +function generateNextLine(state, level) { + return "\n" + common.repeat(" ", state.indent * level); +} +function testImplicitResolving(state, str2) { + var index, length, type2; + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type2 = state.implicitTypes[index]; + if (type2.resolve(str2)) { + return true; + } + } + return false; +} +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} +function isPrintable(c) { + return 32 <= c && c <= 126 || 161 <= c && c <= 55295 && c !== 8232 && c !== 8233 || 57344 <= c && c <= 65533 && c !== CHAR_BOM || 65536 <= c && c <= 1114111; +} +function isNsCharOrWhitespace(c) { + return isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED; +} +function isPlainSafe(c, prev, inblock) { + var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); + var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); + return (inblock ? cIsNsCharOrWhitespace : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar; +} +function isPlainSafeFirst(c) { + return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; +} +function isPlainSafeLast(c) { + return !isWhitespace(c) && c !== CHAR_COLON; +} +function codePointAt(string, pos) { + var first = string.charCodeAt(pos), second; + if (first >= 55296 && first <= 56319 && pos + 1 < string.length) { + second = string.charCodeAt(pos + 1); + if (second >= 56320 && second <= 57343) { + return (first - 55296) * 1024 + second - 56320 + 65536; + } + } + return first; +} +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} +var STYLE_PLAIN = 1; +var STYLE_SINGLE = 2; +var STYLE_LITERAL = 3; +var STYLE_FOLDED = 4; +var STYLE_DOUBLE = 5; +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) { + var i; + var char = 0; + var prevChar = null; + var hasLineBreak = false; + var hasFoldableLine = false; + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; + var plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1)); + if (singleLineOnly || forceQuotes) { + for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { + char = codePointAt(string, i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + } else { + for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { + char = codePointAt(string, i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "); + } + if (!hasLineBreak && !hasFoldableLine) { + if (plain && !forceQuotes && !testAmbiguousType(string)) { + return STYLE_PLAIN; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + } + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + if (!forceQuotes) { + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; +} +function writeScalar(state, string, level, iskey, inblock) { + state.dump = function() { + if (string.length === 0) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + } + if (!state.noCompatMode) { + if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string + '"' : "'" + string + "'"; + } + } + var indent = state.indent * Math.max(1, level); + var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel; + function testAmbiguity(string2) { + return testImplicitResolving(state, string2); + } + switch (chooseScalarStyle( + string, + singleLineOnly, + state.indent, + lineWidth, + testAmbiguity, + state.quotingType, + state.forceQuotes && !iskey, + inblock + )) { + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return "|" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return ">" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string) + '"'; + default: + throw new exception("impossible error: invalid scalar style"); + } + }(); +} +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ""; + var clip = string[string.length - 1] === "\n"; + var keep = clip && (string[string.length - 2] === "\n" || string === "\n"); + var chomp = keep ? "+" : clip ? "" : "-"; + return indentIndicator + chomp + "\n"; +} +function dropEndingNewline(string) { + return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; +} +function foldString(string, width) { + var lineRe = /(\n+)([^\n]*)/g; + var result = function() { + var nextLF = string.indexOf("\n"); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }(); + var prevMoreIndented = string[0] === "\n" || string[0] === " "; + var moreIndented; + var match; + while (match = lineRe.exec(string)) { + var prefix = match[1], line = match[2]; + moreIndented = line[0] === " "; + result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width); + prevMoreIndented = moreIndented; + } + return result; +} +function foldLine(line, width) { + if (line === "" || line[0] === " ") + return line; + var breakRe = / [^ ]/g; + var match; + var start = 0, end, curr = 0, next = 0; + var result = ""; + while (match = breakRe.exec(line)) { + next = match.index; + if (next - start > width) { + end = curr > start ? curr : next; + result += "\n" + line.slice(start, end); + start = end + 1; + } + curr = next; + } + result += "\n"; + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + "\n" + line.slice(curr + 1); + } else { + result += line.slice(start); + } + return result.slice(1); +} +function escapeString(string) { + var result = ""; + var char = 0; + var escapeSeq; + for (var i = 0; i < string.length; char >= 65536 ? i += 2 : i++) { + char = codePointAt(string, i); + escapeSeq = ESCAPE_SEQUENCES[char]; + if (!escapeSeq && isPrintable(char)) { + result += string[i]; + if (char >= 65536) + result += string[i + 1]; + } else { + result += escapeSeq || encodeHex(char); + } + } + return result; +} +function writeFlowSequence(state, level, object) { + var _result = "", _tag = state.tag, index, length, value; + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + if (writeNode(state, level, value, false, false) || typeof value === "undefined" && writeNode(state, level, null, false, false)) { + if (_result !== "") + _result += "," + (!state.condenseFlow ? " " : ""); + _result += state.dump; + } + } + state.tag = _tag; + state.dump = "[" + _result + "]"; +} +function writeBlockSequence(state, level, object, compact) { + var _result = "", _tag = state.tag, index, length, value; + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) { + if (!compact || _result !== "") { + _result += generateNextLine(state, level); + } + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += "-"; + } else { + _result += "- "; + } + _result += state.dump; + } + } + state.tag = _tag; + state.dump = _result || "[]"; +} +function writeFlowMapping(state, level, object) { + var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, pairBuffer; + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ""; + if (_result !== "") + pairBuffer += ", "; + if (state.condenseFlow) + pairBuffer += '"'; + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + if (!writeNode(state, level, objectKey, false, false)) { + continue; + } + if (state.dump.length > 1024) + pairBuffer += "? "; + pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " "); + if (!writeNode(state, level, objectValue, false, false)) { + continue; + } + pairBuffer += state.dump; + _result += pairBuffer; + } + state.tag = _tag; + state.dump = "{" + _result + "}"; +} +function writeBlockMapping(state, level, object, compact) { + var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, pairBuffer; + if (state.sortKeys === true) { + objectKeyList.sort(); + } else if (typeof state.sortKeys === "function") { + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + throw new exception("sortKeys must be a boolean or a function"); + } + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ""; + if (!compact || _result !== "") { + pairBuffer += generateNextLine(state, level); + } + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; + } + explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024; + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += "?"; + } else { + pairBuffer += "? "; + } + } + pairBuffer += state.dump; + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; + } + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ":"; + } else { + pairBuffer += ": "; + } + pairBuffer += state.dump; + _result += pairBuffer; + } + state.tag = _tag; + state.dump = _result || "{}"; +} +function detectType(state, object, explicit) { + var _result, typeList, index, length, type2, style; + typeList = explicit ? state.explicitTypes : state.implicitTypes; + for (index = 0, length = typeList.length; index < length; index += 1) { + type2 = typeList[index]; + if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof object === "object" && object instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object))) { + if (explicit) { + if (type2.multi && type2.representName) { + state.tag = type2.representName(object); + } else { + state.tag = type2.tag; + } + } else { + state.tag = "?"; + } + if (type2.represent) { + style = state.styleMap[type2.tag] || type2.defaultStyle; + if (_toString.call(type2.represent) === "[object Function]") { + _result = type2.represent(object, style); + } else if (_hasOwnProperty.call(type2.represent, style)) { + _result = type2.represent[style](object, style); + } else { + throw new exception("!<" + type2.tag + '> tag resolver accepts not "' + style + '" style'); + } + state.dump = _result; + } + return true; + } + } + return false; +} +function writeNode(state, level, object, block, compact, iskey, isblockseq) { + state.tag = null; + state.dump = object; + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + var type2 = _toString.call(state.dump); + var inblock = block; + var tagStr; + if (block) { + block = state.flowLevel < 0 || state.flowLevel > level; + } + var objectOrArray = type2 === "[object Object]" || type2 === "[object Array]", duplicateIndex, duplicate; + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) { + compact = false; + } + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = "*ref_" + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type2 === "[object Object]") { + if (block && Object.keys(state.dump).length !== 0) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = "&ref_" + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = "&ref_" + duplicateIndex + " " + state.dump; + } + } + } else if (type2 === "[object Array]") { + if (block && state.dump.length !== 0) { + if (state.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state, level - 1, state.dump, compact); + } else { + writeBlockSequence(state, level, state.dump, compact); + } + if (duplicate) { + state.dump = "&ref_" + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, level, state.dump); + if (duplicate) { + state.dump = "&ref_" + duplicateIndex + " " + state.dump; + } + } + } else if (type2 === "[object String]") { + if (state.tag !== "?") { + writeScalar(state, state.dump, level, iskey, inblock); + } + } else if (type2 === "[object Undefined]") { + return false; + } else { + if (state.skipInvalid) + return false; + throw new exception("unacceptable kind of an object to dump " + type2); + } + if (state.tag !== null && state.tag !== "?") { + tagStr = encodeURI( + state.tag[0] === "!" ? state.tag.slice(1) : state.tag + ).replace(/!/g, "%21"); + if (state.tag[0] === "!") { + tagStr = "!" + tagStr; + } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") { + tagStr = "!!" + tagStr.slice(18); + } else { + tagStr = "!<" + tagStr + ">"; + } + state.dump = tagStr + " " + state.dump; + } + } + return true; +} +function getDuplicateReferences(object, state) { + var objects = [], duplicatesIndexes = [], index, length; + inspectNode(object, objects, duplicatesIndexes); + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, index, length; + if (object !== null && typeof object === "object") { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} +function dump$1(input, options) { + options = options || {}; + var state = new State(options); + if (!state.noRefs) + getDuplicateReferences(input, state); + var value = input; + if (state.replacer) { + value = state.replacer.call({ "": value }, "", value); + } + if (writeNode(state, 0, value, true, true)) + return state.dump + "\n"; + return ""; +} +var dump_1 = dump$1; +var dumper = { + dump: dump_1 +}; +function renamed(from, to) { + return function() { + throw new Error("Function yaml." + from + " is removed in js-yaml 4. Use yaml." + to + " instead, which is now safe by default."); + }; +} +var load = loader.load; +var loadAll = loader.loadAll; +var dump = dumper.dump; +var safeLoad = renamed("safeLoad", "load"); +var safeLoadAll = renamed("safeLoadAll", "loadAll"); +var safeDump = renamed("safeDump", "dump"); + +// src/Action.ts +var fs = __toESM(require("node:fs")); + +// src/logtask/index.ts +var core2 = __toESM(require_core()); +var Chalk = __toESM(require_source()); +var emoji = __toESM(require_node_emoji()); +var chalk = new Chalk.Instance(); +var _LogTask = class { + name; + constructor(name) { + this.name = name.trim(); + if (_LogTask.ingroup_setting[this.name] === void 0) { + _LogTask.ingroup_setting[this.name] = false; + } + } + get ingroup() { + return _LogTask.ingroup_setting[this.name] || false; + } + set ingroup(value) { + _LogTask.ingroup_setting[this.name] = value; + } + logStep(emojiStr, step, description) { + if (step.length > _LogTask.indentWidth) { + _LogTask.indentWidth = step.length; + } + let desc; + switch (step) { + case "START": + desc = chalk.yellowBright(`${description}`); + break; + case "INFO": + desc = chalk.green(`${description}`); + break; + case "WARN": + desc = chalk.yellow(`${description}`); + break; + case "SUCCESS": + desc = chalk.greenBright(`${description}`); + break; + case "FAILURE": + desc = chalk.redBright(`${description}`); + break; + case "ERROR": + desc = chalk.redBright(`${description}`); + break; + case "#####": + desc = chalk.cyan(`${description}`); + break; + default: + desc = chalk.white(`${description}`); + break; + } + if (this.ingroup && !process.env["GITHUB_ACTIONS"]) { + const indentStr = [...Array.from({ length: _LogTask.indentWidth }).fill(" ")].join(""); + return chalk.gray(`${indentStr} ${emojiStr}: ${this.name} > ${desc}`); + } + const stepStr = [ + ...step, + ...Array.from({ length: _LogTask.indentWidth - step.length }).fill(" ") + ].join(""); + return `[${stepStr}] ${emojiStr}: ${desc}`; + } + debug(description = "") { + if (process.env["DEBUG"] === "true") { + const msg = this.logStep("\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F", "DEBUG", description); + if (!process.env["GITHUB_ACTIONS"]) { + console.debug(msg); + } else { + core2.debug(msg); + } + } + } + start(description = "") { + const desc = description === "" ? `Starting ${this.name}...` : description; + const msg = this.logStep(emoji.get("rocket"), "START", desc); + this.ingroup = true; + if (!process.env["GITHUB_ACTIONS"]) { + console.info(msg); + } else { + core2.startGroup(msg); + } + } + info(description = "") { + const msg = this.logStep(emoji.get("sparkles"), "INFO", description); + if (!process.env["GITHUB_ACTIONS"]) { + console.info(msg); + } else { + core2.info(msg); + } + } + warn(description = "") { + const msg = this.logStep(emoji.get("anger"), "WARN", description); + if (!process.env["GITHUB_ACTIONS"]) { + console.info(msg); + } else { + core2.info(msg); + } + } + success(description = "", ingroup = true) { + const desc = description === "" ? `Completed ${this.name}.` : description; + if (ingroup) { + this.ingroup = false; + if (process.env["GITHUB_ACTIONS"]) { + core2.endGroup(); + } + } + const msg = this.logStep(emoji.get("white_check_mark"), "SUCCESS", chalk.green(desc)); + if (!process.env["GITHUB_ACTIONS"]) { + console.info(msg); + } else { + core2.info(msg); + } + } + fail(description = "", ingroup = true) { + const desc = description === "" ? `Failed ${this.name}.` : description; + if (ingroup) { + this.ingroup = false; + if (process.env["GITHUB_ACTIONS"]) { + core2.endGroup(); + } + } + const msg = this.logStep(emoji.get("x"), "FAILURE", chalk.red(desc)); + if (!process.env["GITHUB_ACTIONS"]) { + console.error(msg); + } else { + core2.setFailed(msg); + } + } + error(description = "") { + const msg = this.logStep(emoji.get("x"), "ERROR", chalk.bgRedBright(description)); + if (!process.env["GITHUB_ACTIONS"]) { + console.error(msg); + } else { + core2.error(msg); + } + } + title(description = "") { + const msg = this.logStep("\u{1F4D3}", "#####", chalk.yellowBright(description)); + if (!process.env["GITHUB_ACTIONS"]) { + console.info(msg); + } else { + core2.info(msg); + } + } +}; +var LogTask = _LogTask; +__publicField(LogTask, "ingroup_setting", {}); +__publicField(LogTask, "indentWidth", 5); +var logtask_default = LogTask; + +// src/Action.ts +var Action = class { + name; + description; + branding; + inputs; + outputs; + runs; + constructor(actionPath) { + const log2 = new logtask_default("action"); + let tmpActionYaml = null; + try { + log2.debug(`loading action.yml from ${actionPath}`); + tmpActionYaml = load(fs.readFileSync(actionPath, "utf8")); + log2.success("loaded configuration successfully"); + } catch { + log2.error(`failed to load ${actionPath}`); + } + if (typeof tmpActionYaml !== "object" || tmpActionYaml === null) { + log2.error("action.yml file read in isn't an object (no yaml in it)"); + } + const actionYaml = tmpActionYaml; + this.name = actionYaml.name; + this.description = actionYaml.description; + this.branding = actionYaml.branding; + this.inputs = actionYaml.inputs; + this.outputs = actionYaml.outputs; + this.runs = actionYaml.runs; + } +}; + +// src/helpers.ts +var fs2 = __toESM(require("node:fs")); +function wrapText(text, content, prepend = "") { + if (!text) + return content; + const width = 80; + let description = text.trimEnd().replace(/\r\n/g, "\n").replace(/ +/g, " ").replace(/ \n/g, "\n"); + while (description) { + let segment; + if (description.length > width) { + segment = description.slice(0, Math.max(0, width + 1)); + while (!segment.endsWith(" ") && !segment.endsWith("\n") && segment) { + segment = segment.slice(0, Math.max(0, segment.length - 1)); + } + if (segment.length < width * 0.67) { + segment = description; + } + } else { + segment = description; + } + const newlineIndex = segment.indexOf("\n"); + if (newlineIndex >= 0) { + segment = segment.slice(0, Math.max(0, newlineIndex + 1)); + } + content.push(`${prepend}${segment}`.trimEnd()); + description = description.slice(segment.length); + } + return content; +} +function repositoryFinder(inputRepo, context) { + const log2 = new logtask_default("repositoryFinder"); + const obj = {}; + const result = obj; + if (inputRepo) { + [result.owner, result.repo] = inputRepo.split("/"); + log2.info(`repositoryFinder using input ${inputRepo} and returns ${JSON.stringify(result)}`); + return result; + } + if (process.env["GITHUB_REPOSITORY"]) { + [result.owner, result.repo] = process.env["GITHUB_REPOSITORY"].split("/"); + log2.info( + `repositoryFinder using GITHUB_REPOSITORY ${process.env["GITHUB_REPOSITORY"]} and returns ${JSON.stringify(result)}` + ); + return result; + } + if (context) { + result.owner = context.repo.owner; + result.repo = context.repo.repo; + log2.info( + `repositoryFinder using GITHUB_REPOSITORY ${process.env["GITHUB_REPOSITORY"]} and returns ${JSON.stringify(result)}` + ); + return result; + } + if (process.env["INPUT_OWNER"] && process.env["INPUT_REPO"]) { + result.owner = process.env["INPUT_OWNER"]; + result.repo = process.env["INPUT_REPO"]; + return result; + } + try { + const fileContent = fs2.readFileSync(".git/config", "utf8"); + const pattern = /url( )?=( )?.*github\.com[/:](?.*)\/(?.*)\.git/; + const results = fileContent.match(pattern); + if (results !== null) { + log2.debug(JSON.stringify(results.groups)); + result.owner = results.groups.owner ?? ""; + result.repo = results.groups.repo ?? ""; + } + return result; + } catch (error2) { + log2.debug(`Couldn't find any owner or repo: ${error2}`); + } + return result; +} + +// src/working-directory.ts +function workingDirectory() { + return process.env["GITHUB_WORKSPACE"] ?? process.env["INIT_CWD"] ?? process.cwd(); +} + +// src/inputs.ts +var log = new logtask_default("inputs"); +process.chdir(workingDirectory()); +var githubEventPath = process.env["GITHUB_EVENT_PATH"] ?? ""; +var githubEvent = null; +try { + githubEvent = JSON.parse(fs3.readFileSync(githubEventPath, "utf8")); +} catch { + log.debug(`GITHUB_EVENT_PATH not found: ${githubEventPath}`); +} +var configFileName = ".ghadocs.json"; +var pathsAction = "paths:action"; +var pathsReadme = "paths:readme"; +var configKeys = [ + "save", + pathsAction, + pathsReadme, + "show_logo", + "versioning:enabled", + "versioning:override", + "versioning:prefix", + "versioning:branch", + "owner", + "repo", + "title_prefix", + "pretty" +]; +var Inputs = class { + config; + constructor() { + this.config = new nconf.Provider(); + const repositoryDetail = repositoryFinder(null, githubEvent); + if (process.env["GITHUB_ACTION"]) { + log.info("running in GitHub action"); + } + this.config.use("memory"); + this.config.env({ + lowerCase: true, + parseValues: true, + match: /^INPUT_/, + transform: (obj) => { + if (obj.key.startsWith("input_")) { + const newObj = { + key: obj.key, + value: obj.value + }; + const keyParsed = obj.key.replace(/^(INPUT|input)_/, ""); + switch (keyParsed) { + case "readme": + newObj.key = pathsReadme; + break; + case "action": + newObj.key = pathsAction; + break; + case "versioning_enabled": + newObj.key = "versioning:enabled"; + break; + case "version_prefix": + newObj.key = "versioning:prefix"; + break; + case "versioning_default_branch": + newObj.key = "versioning:branch"; + break; + case "version_override": + newObj.key = "versioning:override"; + break; + default: + newObj.key = keyParsed; + break; + } + this.config.set(newObj.key, newObj.value); + return newObj; + } + return void 0; + } + }); + this.config.argv({ + "save": { + alias: "save", + describe: `Save this config to ${configFileName}`, + parseValues: true, + type: "boolean" + }, + "paths:action": { + alias: ["pathsAction", "action"], + type: "string", + describe: "Path to the action.yml" + }, + "paths:readme": { + alias: ["pathsReadme", "readme"], + type: "string", + describe: "Path to the README file" + }, + "show_logo": { + alias: "logo", + describe: "Display the action's logo in the README" + }, + "owner": { + alias: "owner", + describe: "The GitHub Action repository owner. i.e: `bitflight-devops`" + }, + "repo": { + alias: "repo", + describe: "The GitHub Action repository name. i.e: `github-action-readme-generator`" + }, + "prettier": { + alias: "pretty", + describe: "Format the markdown using prettier formatter", + parseValues: true, + type: "boolean" + }, + "versioning:enabled": { + alias: ["versioning", "versioning_enabled"], + describe: "Enable the update of the usage version to match the latest version in the package.json file", + parseValues: true, + type: "boolean" + }, + "versioning:override": { + alias: ["setversion", "versioning_override", "version_override"], + describe: "Set a specific version to display in the README.md", + parseValues: true + }, + "versioning:prefix": { + alias: ["vp", "version_prefix"], + describe: "Prefix the version with this value (if it isn't already prefixed)", + parseValues: true + }, + "versioning:branch": { + alias: ["branch", "versioning_default_branch"], + describe: "If versioning is disabled show this branch instead", + parseValues: true + }, + "title_prefix": { + alias: ["prefix", "title_prefix"], + describe: "Add a prefix to the README title", + parseValues: true + } + }); + this.config.file({ file: configFileName, dir: workingDirectory() }); + this.config.defaults({ + save: true, + owner: repositoryDetail == null ? void 0 : repositoryDetail.owner, + repo: repositoryDetail == null ? void 0 : repositoryDetail.repo, + paths: { + action: "action.yml", + readme: "README.md" + }, + show_logo: true, + pretty: true, + versioning: { + enabled: true, + override: "", + prefix: "v", + branch: "main" + }, + title_prefix: "GitHub Action: ", + sections: ["title", "description", "usage", "inputs", "outputs", "contents"] + }); + this.config.required(["owner", "repo"]); + for (const k of configKeys) { + log.debug(`${k}: ${this.config.get(k)}`); + } + this.sections = this.config.get("sections"); + this.readmePath = path.relative(workingDirectory(), this.config.get(pathsReadme)); + const actionPath = path.relative(workingDirectory(), this.config.get(pathsAction)); + this.action = new Action(actionPath); + } + sections; + readmePath; + action; +}; + +// src/save.ts +function save(inputs2) { + const log2 = new logtask_default("save"); + if (inputs2.config.get("save").toString() === "true") { + for (const k of Object.keys(configKeys)) { + inputs2.config.set(k, inputs2.config.get(k)); + } + inputs2.config.save((err) => { + if (err && "message" in err && err.message) { + log2.error(err.message); + return; + } + log2.info("Configuration saved successfully."); + }); + } +} + +// src/readme-writer.ts +var fs4 = __toESM(require("node:fs")); +var import_node_os = require("node:os"); +var import_prettier = __toESM(require_prettier()); + +// src/config.ts +var startTokenFormat = ""; +var endTokenFormat = ""; + +// src/readme-writer.ts +function readmeWriter(content, tokenName, readmePath) { + const log2 = new logtask_default(tokenName); + if (!content) { + log2.info(`readmeWriter passed no content from ${tokenName} parser`); + return; + } + log2.info(`Looking for the ${tokenName} token in ${readmePath}`); + const originalReadme = fs4.readFileSync(readmePath).toString(); + const startToken = startTokenFormat.replace("%s", tokenName); + const endToken = endTokenFormat.replace("%s", tokenName); + const startTokenIndex = originalReadme.indexOf(startToken); + if (startTokenIndex < 0) { + throw new Error(`Start token '${startToken}' not found`); + } + log2.info(`Found the start ${tokenName} token`); + const endTokenIndex = originalReadme.indexOf(endToken); + if (endTokenIndex < 0) { + throw new Error(`End token '${endToken}' not found`); + } else if (endTokenIndex < startTokenIndex) { + throw new Error("Start token must appear before end token"); + } + log2.info(`Found the end ${tokenName} token`); + const newReadme = []; + const len = startToken.length; + newReadme.push( + originalReadme.slice(0, Math.max(0, startTokenIndex + len)), + ...content, + originalReadme.slice(endTokenIndex) + ); + const fileContent = newReadme.join(import_node_os.EOL); + fs4.writeFileSync(readmePath, (0, import_prettier.format)(fileContent, { semi: false, parser: "markdown" })); + log2.info(`successfully updated the ${tokenName} section`); +} + +// src/sections/update-description.ts +function updateDescription(token, inputs2) { + const log2 = new logtask_default(token); + let desc = ""; + const content = []; + if (inputs2.action.description) { + log2.start(); + desc = inputs2.action.description.replace("\n", "\n\n"); + log2.info(`Writing ${desc.length} characters to the description section`); + content.push(desc); + readmeWriter(content, token, inputs2.readmePath); + log2.success(); + } +} + +// src/markdowner/index.ts +function markdownEscapeTableCell(text) { + return text.replace(/\n/g, "
").replace(/\|/g, "\\|"); +} +function markdownEscapeInlineCode(content) { + return content.replace(/([\s*_]|^)`([^`]+)`([\s*_]|$)/g, "$1$2$3"); +} +function ArrayOfArraysToMarkdownTable(providedTableContent) { + const tableContent = []; + const outputStrings = []; + for (const rowA of providedTableContent) { + tableContent.push([...rowA]); + } + const maxRows = tableContent.length; + let maxCols = 0; + let minCols = 0; + for (const [i, e] of tableContent.entries()) { + if (tableContent[i] !== void 0) { + const numCols = e.length; + if (numCols > maxCols) { + maxCols = numCols; + } + if (numCols < minCols || minCols === 0) { + minCols = numCols; + } + } + } + if (maxCols !== minCols) { + for (const [i, e] of tableContent.entries()) { + if (typeof tableContent[i] === "undefined") { + tableContent[i] = Array.from({ length: maxCols }).fill(""); + } else if (e.length < maxCols) { + tableContent[i] = [ + ...e, + ...Array.from({ length: maxCols - e.length }).fill("undefined") + ]; + } + } + } + const markdownArrayRowsLength = maxRows + 1; + const markdownArrayEntriesLength = maxCols * 2 + 1; + const markdownArrays = Array.from({ length: markdownArrayRowsLength }).fill( + Array.from({ length: markdownArrayEntriesLength }).fill("|") + ); + for (const [i, row] of markdownArrays.entries()) { + let col = 0; + const idx = i > 1 ? i - 1 : 0; + const dataRow = tableContent[idx]; + for (const [j] of row.entries()) { + let content = markdownEscapeTableCell(dataRow[col] ?? ""); + content = markdownEscapeInlineCode(content); + if (j % 2 === 1) { + if (i === 0) { + markdownArrays[i][j] = ` **${content.trim()}** `; + } else if (i === 1) { + markdownArrays[i][j] = "---"; + } else { + markdownArrays[i][j] = ` ${content.trim()} `; + } + col += 1; + } + } + outputStrings.push(`${markdownArrays[i].join("")} +`); + } + return outputStrings.join(""); +} +var markdowner_default = ArrayOfArraysToMarkdownTable; + +// src/sections/update-inputs.ts +function updateInputs(token, inputs2) { + var _a; + const log2 = new logtask_default(token); + const content = []; + const markdownArray = [["Input", "Description", "Default", "Required"]]; + const vars = inputs2.action.inputs; + const tI = vars ? Object.keys(vars).length : 0; + if (tI > 0) { + log2.start(); + for (const key of Object.keys(vars)) { + const values = vars[key]; + const row = [ + `**\`${key.trim()}\`**`, + ((_a = values == null ? void 0 : values.description) == null ? void 0 : _a.trim().replace("\n", "
")) ?? "", + (values == null ? void 0 : values.default) ? `\`${values.default}\`` : "", + (values == null ? void 0 : values.required) ? "**true**" : "__false__" + ]; + log2.debug(JSON.stringify(row)); + markdownArray.push(row); + } + content.push(markdowner_default(markdownArray)); + log2.info(`Action has ${tI} total ${token}`); + readmeWriter(content, token, inputs2.readmePath); + log2.success(); + } else { + log2.debug(`Action has no ${token}`); + } +} + +// src/sections/update-outputs.ts +function updateOutputs(token, inputs2) { + var _a; + const log2 = new logtask_default(token); + const content = []; + const markdownArray = [ + ["**Output**", "**Description**", "**Default**", "**Required**"] + ]; + const vars = inputs2.action.outputs; + const tI = vars ? Object.keys(vars).length : 0; + if (tI > 0) { + log2.start(); + for (const key of Object.keys(vars)) { + const values = vars[key]; + const row = [ + `\`${key.trim()}\``, + ((_a = values == null ? void 0 : values.description) == null ? void 0 : _a.trim().replace("\n", " ")) ?? "" + ]; + log2.debug(JSON.stringify(row)); + markdownArray.push(row); + } + content.push(markdowner_default(markdownArray)); + log2.info(`Action has ${tI} total ${token}`); + readmeWriter(content, token, inputs2.readmePath); + log2.success(); + } else { + log2.debug(`Action has no ${token}`); + } +} + +// src/sections/update-title.ts +function updateTitle(token, inputs2) { + const log2 = new logtask_default(token); + const content = []; + let name = ""; + if (inputs2.action.name) { + log2.start(); + name = inputs2.action.name; + log2.info(`Writing ${name.length} characters to the title`); + const title = `# ${inputs2.config.get("title_prefix")}${inputs2.action.name}`; + log2.info(`Title: ${title}`); + content.push(title); + readmeWriter(content, token, inputs2.readmePath); + log2.success(); + } +} + +// src/sections/update-usage.ts +function updateUsage(token, inputs2) { + var _a; + const log2 = new logtask_default(token); + log2.start(); + const actionName = `${inputs2.config.get("owner")}/${inputs2.config.get("repo")}`; + log2.info(`Action name: ${actionName}`); + let versionString; + if (inputs2.config.get("versioning:enabled") === "true") { + const oRide = inputs2.config.get("versioning:override"); + versionString = oRide && oRide.length > 0 ? oRide : process.env["npm_package_version"] ?? "0.0.0"; + if (versionString && !versionString.startsWith(inputs2.config.get("versioning:prefix"))) { + versionString = `${inputs2.config.get("versioning:prefix")}${versionString}`; + } + } else { + versionString = inputs2.config.get("versioning:branch"); + } + log2.info(`Version string: ${versionString}`); + const actionReference = `${actionName}@${versionString}`; + if (!actionReference) { + throw new Error("Parameter actionReference must not be empty"); + } + const content = []; + content.push("```yaml", `- uses: ${actionReference}`, " with:"); + const inp = inputs2.action.inputs; + let firstInput = true; + if (inp) { + for (const key of Object.keys(inp)) { + const input = inp[key]; + if (input !== void 0) { + if (!firstInput) { + content.push(""); + } + wrapText(input.description, content, " # "); + if (input.default !== void 0) { + if ((_a = input.description) == null ? void 0 : _a.trimEnd().match(/\n *\r?\n/)) { + content.push(" #"); + } + content.push(` # Default: ${input.default}`); + } + content.push(` ${key}: ''`); + firstInput = false; + } + } + } + content.push("```\n"); + readmeWriter(content, token, inputs2.readmePath); + log2.success(); +} + +// src/sections/index.ts +function updateSection(section, inputs2) { + const log2 = new logtask_default("updateSection"); + try { + switch (section) { + case "usage": { + updateUsage(section, inputs2); + break; + } + case "title": { + updateTitle(section, inputs2); + break; + } + case "description": { + updateDescription(section, inputs2); + break; + } + case "inputs": { + updateInputs(section, inputs2); + break; + } + case "outputs": { + updateOutputs(section, inputs2); + break; + } + default: { + log2.debug(`unknown section ${section}`); + } + } + } catch (error2) { + if (error2 && "message" in error2 && error2.message) + log2.fail(error2.message); + } +} + +// src/generate-docs.ts +var inputs = new Inputs(); +function generateDocs() { + const log2 = new logtask_default("generating readme"); + try { + for (const section of inputs.sections) { + updateSection(section, inputs); + } + save(inputs); + } catch (error2) { + if (error2 && "message" in error2 && error2.message) + log2.error(error2.message); + } +} + +// src/index.ts +generateDocs(); +/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */ +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL2FzeW5jL2Rpc3QvYXN5bmMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL25jb25mL25vZGVfbW9kdWxlcy9pbmkvaW5pLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9uY29uZi9saWIvbmNvbmYvZm9ybWF0cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbmNvbmYvbGliL25jb25mL3N0b3Jlcy9tZW1vcnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL25jb25mL2xpYi9uY29uZi9jb21tb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL25jb25mL2xpYi9uY29uZi9wcm92aWRlci5qcyIsICIuLi9ub2RlX21vZHVsZXMveTE4bi9idWlsZC9pbmRleC5janMiLCAiLi4vbm9kZV9tb2R1bGVzL3lhcmdzL25vZGVfbW9kdWxlcy95YXJncy1wYXJzZXIvYnVpbGQvaW5kZXguY2pzIiwgIi4uL25vZGVfbW9kdWxlcy9hbnNpLXJlZ2V4L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zdHJpcC1hbnNpL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvc3RyaW5nLXdpZHRoL25vZGVfbW9kdWxlcy9lbW9qaS1yZWdleC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvc3RyaW5nLXdpZHRoL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9hbnNpLXN0eWxlcy9ub2RlX21vZHVsZXMvY29sb3ItbmFtZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvYW5zaS1zdHlsZXMvbm9kZV9tb2R1bGVzL2NvbG9yLWNvbnZlcnQvY29udmVyc2lvbnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Fuc2ktc3R5bGVzL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L3JvdXRlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9hbnNpLXN0eWxlcy9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvYW5zaS1zdHlsZXMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3dyYXAtYW5zaS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpdWkvYnVpbGQvaW5kZXguY2pzIiwgIi4uL25vZGVfbW9kdWxlcy9lc2NhbGFkZS9zeW5jL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9nZXQtY2FsbGVyLWZpbGUvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzL3JlcXVpcmUtZGlyZWN0b3J5L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9pbmRleC5janMiLCAiLi4vbm9kZV9tb2R1bGVzL3lhcmdzL2luZGV4LmNqcyIsICIuLi9ub2RlX21vZHVsZXMvbmNvbmYvbGliL25jb25mL3N0b3Jlcy9hcmd2LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9uY29uZi9saWIvbmNvbmYvc3RvcmVzL2Vudi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbmNvbmYvbGliL25jb25mL3N0b3Jlcy9maWxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9uY29uZi9saWIvbmNvbmYvc3RvcmVzL2xpdGVyYWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL25jb25mL2xpYi9uY29uZi5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvdXRpbHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2NvbW1hbmQudHMiLCAiLi4vbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2ZpbGUtY29tbWFuZC50cyIsICIuLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L3JuZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L3JlZ2V4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvdmFsaWRhdGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9zdHJpbmdpZnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC92MS5qcyIsICIuLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L3BhcnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvdjM1LmpzIiwgIi4uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvbWQ1LmpzIiwgIi4uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvdjMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC92NC5qcyIsICIuLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L3NoYTEuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC92NS5qcyIsICIuLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L25pbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L3ZlcnNpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaHR0cC1jbGllbnQvc3JjL3Byb3h5LnRzIiwgIi4uL25vZGVfbW9kdWxlcy90dW5uZWwvbGliL3R1bm5lbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvdHVubmVsL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2h0dHAtY2xpZW50L3NyYy9hdXRoLnRzIiwgIi4uL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9vaWRjLXV0aWxzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9zdW1tYXJ5LnRzIiwgIi4uL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9wYXRoLXV0aWxzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9jb3JlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy9oYXMtZmxhZy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2hhbGsvbm9kZV9tb2R1bGVzL3N1cHBvcnRzLWNvbG9yL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jaGFsay9zb3VyY2UvdXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3RlbXBsYXRlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fcm9vdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNNYXNrZWQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9Tb3VyY2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE5hdGl2ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2l0ZXJhdG9yVG9BcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNjaWlUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1VuaWNvZGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdW5pY29kZVRvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9BcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVmFsdWVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbm9kZVV0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1Byb3RvdHlwZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdmFsdWVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9BcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbm9kZS1lbW9qaS9saWIvZW1vamkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL25vZGUtZW1vamkvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3ByZXR0aWVyL2RvYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvcHJldHRpZXIvdGhpcmQtcGFydHkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3ByZXR0aWVyL3BhcnNlci1iYWJlbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvcHJldHRpZXIvcGFyc2VyLWZsb3cuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3ByZXR0aWVyL3BhcnNlci10eXBlc2NyaXB0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9wcmV0dGllci9wYXJzZXItYW5ndWxhci5qcyIsICIuLi9ub2RlX21vZHVsZXMvcHJldHRpZXIvcGFyc2VyLWVzcHJlZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvcHJldHRpZXIvcGFyc2VyLW1lcml5YWguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3ByZXR0aWVyL3BhcnNlci1wb3N0Y3NzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9wcmV0dGllci9wYXJzZXItZ2xpbW1lci5qcyIsICIuLi9ub2RlX21vZHVsZXMvcHJldHRpZXIvcGFyc2VyLWdyYXBocWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3ByZXR0aWVyL3BhcnNlci1tYXJrZG93bi5qcyIsICIuLi9ub2RlX21vZHVsZXMvcHJldHRpZXIvcGFyc2VyLWh0bWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3ByZXR0aWVyL3BhcnNlci15YW1sLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9wcmV0dGllci9pbmRleC5qcyIsICIuLi9zcmMvaW5wdXRzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2Rpc3QvanMteWFtbC5tanMiLCAiLi4vc3JjL0FjdGlvbi50cyIsICIuLi9zcmMvbG9ndGFzay9pbmRleC50cyIsICIuLi9zcmMvaGVscGVycy50cyIsICIuLi9zcmMvd29ya2luZy1kaXJlY3RvcnkudHMiLCAiLi4vc3JjL3NhdmUudHMiLCAiLi4vc3JjL3JlYWRtZS13cml0ZXIudHMiLCAiLi4vc3JjL2NvbmZpZy50cyIsICIuLi9zcmMvc2VjdGlvbnMvdXBkYXRlLWRlc2NyaXB0aW9uLnRzIiwgIi4uL3NyYy9tYXJrZG93bmVyL2luZGV4LnRzIiwgIi4uL3NyYy9zZWN0aW9ucy91cGRhdGUtaW5wdXRzLnRzIiwgIi4uL3NyYy9zZWN0aW9ucy91cGRhdGUtb3V0cHV0cy50cyIsICIuLi9zcmMvc2VjdGlvbnMvdXBkYXRlLXRpdGxlLnRzIiwgIi4uL3NyYy9zZWN0aW9ucy91cGRhdGUtdXNhZ2UudHMiLCAiLi4vc3JjL3NlY3Rpb25zL2luZGV4LnRzIiwgIi4uL3NyYy9nZW5lcmF0ZS1kb2NzLnRzIiwgIi4uL3NyYy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydleHBvcnRzJ10sIGZhY3RvcnkpIDpcbiAgICAoZmFjdG9yeSgoZ2xvYmFsLmFzeW5jID0ge30pKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29udGludWF0aW9uIGZ1bmN0aW9uIHdpdGggc29tZSBhcmd1bWVudHMgYWxyZWFkeSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogVXNlZnVsIGFzIGEgc2hvcnRoYW5kIHdoZW4gY29tYmluZWQgd2l0aCBvdGhlciBjb250cm9sIGZsb3cgZnVuY3Rpb25zLiBBbnlcbiAgICAgKiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXR1cm5lZCBmdW5jdGlvbiBhcmUgYWRkZWQgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAqIG9yaWdpbmFsbHkgcGFzc2VkIHRvIGFwcGx5LlxuICAgICAqXG4gICAgICogQG5hbWUgYXBwbHlcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHlvdSB3YW50IHRvIGV2ZW50dWFsbHkgYXBwbHkgYWxsXG4gICAgICogYXJndW1lbnRzIHRvLiBJbnZva2VzIHdpdGggKGFyZ3VtZW50cy4uLikuXG4gICAgICogQHBhcmFtIHsuLi4qfSBhcmd1bWVudHMuLi4gLSBBbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBhdXRvbWF0aWNhbGx5IGFwcGx5XG4gICAgICogd2hlbiB0aGUgY29udGludWF0aW9uIGlzIGNhbGxlZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IHRoZSBwYXJ0aWFsbHktYXBwbGllZCBmdW5jdGlvblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyB1c2luZyBhcHBseVxuICAgICAqIGFzeW5jLnBhcmFsbGVsKFtcbiAgICAgKiAgICAgYXN5bmMuYXBwbHkoZnMud3JpdGVGaWxlLCAndGVzdGZpbGUxJywgJ3Rlc3QxJyksXG4gICAgICogICAgIGFzeW5jLmFwcGx5KGZzLndyaXRlRmlsZSwgJ3Rlc3RmaWxlMicsICd0ZXN0MicpXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKlxuICAgICAqIC8vIHRoZSBzYW1lIHByb2Nlc3Mgd2l0aG91dCB1c2luZyBhcHBseVxuICAgICAqIGFzeW5jLnBhcmFsbGVsKFtcbiAgICAgKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIGZzLndyaXRlRmlsZSgndGVzdGZpbGUxJywgJ3Rlc3QxJywgY2FsbGJhY2spO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgZnMud3JpdGVGaWxlKCd0ZXN0ZmlsZTInLCAndGVzdDInLCBjYWxsYmFjayk7XG4gICAgICogICAgIH1cbiAgICAgKiBdKTtcbiAgICAgKlxuICAgICAqIC8vIEl0J3MgcG9zc2libGUgdG8gcGFzcyBhbnkgbnVtYmVyIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoZW4gY2FsbGluZyB0aGVcbiAgICAgKiAvLyBjb250aW51YXRpb246XG4gICAgICpcbiAgICAgKiBub2RlPiB2YXIgZm4gPSBhc3luYy5hcHBseShzeXMucHV0cywgJ29uZScpO1xuICAgICAqIG5vZGU+IGZuKCd0d28nLCAndGhyZWUnKTtcbiAgICAgKiBvbmVcbiAgICAgKiB0d29cbiAgICAgKiB0aHJlZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFwcGx5KGZuLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoLi4uY2FsbEFyZ3MpID0+IGZuKC4uLmFyZ3MsLi4uY2FsbEFyZ3MpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluaXRpYWxQYXJhbXMgKGZuKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncy8qLCBjYWxsYmFjayovKSB7XG4gICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuICAgICAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgYXJncywgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG5cbiAgICB2YXIgaGFzUXVldWVNaWNyb3Rhc2sgPSB0eXBlb2YgcXVldWVNaWNyb3Rhc2sgPT09ICdmdW5jdGlvbicgJiYgcXVldWVNaWNyb3Rhc2s7XG4gICAgdmFyIGhhc1NldEltbWVkaWF0ZSA9IHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICdmdW5jdGlvbicgJiYgc2V0SW1tZWRpYXRlO1xuICAgIHZhciBoYXNOZXh0VGljayA9IHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcHJvY2Vzcy5uZXh0VGljayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGZ1bmN0aW9uIGZhbGxiYWNrKGZuKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZm4sIDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyYXAoZGVmZXIpIHtcbiAgICAgICAgcmV0dXJuIChmbiwgLi4uYXJncykgPT4gZGVmZXIoKCkgPT4gZm4oLi4uYXJncykpO1xuICAgIH1cblxuICAgIHZhciBfZGVmZXI7XG5cbiAgICBpZiAoaGFzUXVldWVNaWNyb3Rhc2spIHtcbiAgICAgICAgX2RlZmVyID0gcXVldWVNaWNyb3Rhc2s7XG4gICAgfSBlbHNlIGlmIChoYXNTZXRJbW1lZGlhdGUpIHtcbiAgICAgICAgX2RlZmVyID0gc2V0SW1tZWRpYXRlO1xuICAgIH0gZWxzZSBpZiAoaGFzTmV4dFRpY2spIHtcbiAgICAgICAgX2RlZmVyID0gcHJvY2Vzcy5uZXh0VGljaztcbiAgICB9IGVsc2Uge1xuICAgICAgICBfZGVmZXIgPSBmYWxsYmFjaztcbiAgICB9XG5cbiAgICB2YXIgc2V0SW1tZWRpYXRlJDEgPSB3cmFwKF9kZWZlcik7XG5cbiAgICAvKipcbiAgICAgKiBUYWtlIGEgc3luYyBmdW5jdGlvbiBhbmQgbWFrZSBpdCBhc3luYywgcGFzc2luZyBpdHMgcmV0dXJuIHZhbHVlIHRvIGFcbiAgICAgKiBjYWxsYmFjay4gVGhpcyBpcyB1c2VmdWwgZm9yIHBsdWdnaW5nIHN5bmMgZnVuY3Rpb25zIGludG8gYSB3YXRlcmZhbGwsXG4gICAgICogc2VyaWVzLCBvciBvdGhlciBhc3luYyBmdW5jdGlvbnMuIEFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBnZW5lcmF0ZWRcbiAgICAgKiBmdW5jdGlvbiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgd3JhcHBlZCBmdW5jdGlvbiAoZXhjZXB0IGZvciB0aGUgZmluYWxcbiAgICAgKiBjYWxsYmFjayBhcmd1bWVudCkuIEVycm9ycyB0aHJvd24gd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogSWYgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBgYXN5bmNpZnlgIHJldHVybnMgYSBQcm9taXNlLCB0aGF0IHByb21pc2VzJ3NcbiAgICAgKiByZXNvbHZlZC9yZWplY3RlZCBzdGF0ZSB3aWxsIGJlIHVzZWQgdG8gY2FsbCB0aGUgY2FsbGJhY2ssIHJhdGhlciB0aGFuIHNpbXBseVxuICAgICAqIHRoZSBzeW5jaHJvbm91cyByZXR1cm4gdmFsdWUuXG4gICAgICpcbiAgICAgKiBUaGlzIGFsc28gbWVhbnMgeW91IGNhbiBhc3luY2lmeSBFUzIwMTcgYGFzeW5jYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAbmFtZSBhc3luY2lmeVxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBhbGlhcyB3cmFwU3luY1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyAtIFRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbiwgb3IgUHJvbWlzZS1yZXR1cm5pbmdcbiAgICAgKiBmdW5jdGlvbiB0byBjb252ZXJ0IHRvIGFuIHtAbGluayBBc3luY0Z1bmN0aW9ufS5cbiAgICAgKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gQW4gYXN5bmNocm9ub3VzIHdyYXBwZXIgb2YgdGhlIGBmdW5jYC4gVG8gYmVcbiAgICAgKiBpbnZva2VkIHdpdGggYChhcmdzLi4uLCBjYWxsYmFjaylgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBwYXNzaW5nIGEgcmVndWxhciBzeW5jaHJvbm91cyBmdW5jdGlvblxuICAgICAqIGFzeW5jLndhdGVyZmFsbChbXG4gICAgICogICAgIGFzeW5jLmFwcGx5KGZzLnJlYWRGaWxlLCBmaWxlbmFtZSwgXCJ1dGY4XCIpLFxuICAgICAqICAgICBhc3luYy5hc3luY2lmeShKU09OLnBhcnNlKSxcbiAgICAgKiAgICAgZnVuY3Rpb24gKGRhdGEsIG5leHQpIHtcbiAgICAgKiAgICAgICAgIC8vIGRhdGEgaXMgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSB0ZXh0LlxuICAgICAqICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgcGFyc2luZyBlcnJvciwgaXQgd291bGQgaGF2ZSBiZWVuIGNhdWdodC5cbiAgICAgKiAgICAgfVxuICAgICAqIF0sIGNhbGxiYWNrKTtcbiAgICAgKlxuICAgICAqIC8vIHBhc3NpbmcgYSBmdW5jdGlvbiByZXR1cm5pbmcgYSBwcm9taXNlXG4gICAgICogYXN5bmMud2F0ZXJmYWxsKFtcbiAgICAgKiAgICAgYXN5bmMuYXBwbHkoZnMucmVhZEZpbGUsIGZpbGVuYW1lLCBcInV0ZjhcIiksXG4gICAgICogICAgIGFzeW5jLmFzeW5jaWZ5KGZ1bmN0aW9uIChjb250ZW50cykge1xuICAgICAqICAgICAgICAgcmV0dXJuIGRiLm1vZGVsLmNyZWF0ZShjb250ZW50cyk7XG4gICAgICogICAgIH0pLFxuICAgICAqICAgICBmdW5jdGlvbiAobW9kZWwsIG5leHQpIHtcbiAgICAgKiAgICAgICAgIC8vIGBtb2RlbGAgaXMgdGhlIGluc3RhbnRpYXRlZCBtb2RlbCBvYmplY3QuXG4gICAgICogICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYW4gZXJyb3IsIHRoaXMgZnVuY3Rpb24gd291bGQgYmUgc2tpcHBlZC5cbiAgICAgKiAgICAgfVxuICAgICAqIF0sIGNhbGxiYWNrKTtcbiAgICAgKlxuICAgICAqIC8vIGVzMjAxNyBleGFtcGxlLCB0aG91Z2ggYGFzeW5jaWZ5YCBpcyBub3QgbmVlZGVkIGlmIHlvdXIgSlMgZW52aXJvbm1lbnRcbiAgICAgKiAvLyBzdXBwb3J0cyBhc3luYyBmdW5jdGlvbnMgb3V0IG9mIHRoZSBib3hcbiAgICAgKiB2YXIgcSA9IGFzeW5jLnF1ZXVlKGFzeW5jLmFzeW5jaWZ5KGFzeW5jIGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgKiAgICAgdmFyIGludGVybWVkaWF0ZVN0ZXAgPSBhd2FpdCBwcm9jZXNzRmlsZShmaWxlKTtcbiAgICAgKiAgICAgcmV0dXJuIGF3YWl0IHNvbWVQcm9taXNlKGludGVybWVkaWF0ZVN0ZXApXG4gICAgICogfSkpO1xuICAgICAqXG4gICAgICogcS5wdXNoKGZpbGVzKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3luY2lmeShmdW5jKSB7XG4gICAgICAgIGlmIChpc0FzeW5jKGZ1bmMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MvKiwgY2FsbGJhY2sqLykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlUHJvbWlzZShwcm9taXNlLCBjYWxsYmFjaylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbml0aWFsUGFyYW1zKGZ1bmN0aW9uIChhcmdzLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiByZXN1bHQgaXMgUHJvbWlzZSBvYmplY3RcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVByb21pc2UocmVzdWx0LCBjYWxsYmFjaylcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUHJvbWlzZShwcm9taXNlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKHZhbHVlID0+IHtcbiAgICAgICAgICAgIGludm9rZUNhbGxiYWNrKGNhbGxiYWNrLCBudWxsLCB2YWx1ZSk7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICBpbnZva2VDYWxsYmFjayhjYWxsYmFjaywgZXJyICYmIGVyci5tZXNzYWdlID8gZXJyIDogbmV3IEVycm9yKGVycikpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZva2VDYWxsYmFjayhjYWxsYmFjaywgZXJyb3IsIHZhbHVlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZSQxKGUgPT4geyB0aHJvdyBlIH0sIGVycik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FzeW5jKGZuKSB7XG4gICAgICAgIHJldHVybiBmbltTeW1ib2wudG9TdHJpbmdUYWddID09PSAnQXN5bmNGdW5jdGlvbic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBc3luY0dlbmVyYXRvcihmbikge1xuICAgICAgICByZXR1cm4gZm5bU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ0FzeW5jR2VuZXJhdG9yJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FzeW5jSXRlcmFibGUob2JqKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cmFwQXN5bmMoYXN5bmNGbikge1xuICAgICAgICBpZiAodHlwZW9mIGFzeW5jRm4gIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgYSBmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiBpc0FzeW5jKGFzeW5jRm4pID8gYXN5bmNpZnkoYXN5bmNGbikgOiBhc3luY0ZuO1xuICAgIH1cblxuICAgIC8vIGNvbmRpdGlvbmFsbHkgcHJvbWlzaWZ5IGEgZnVuY3Rpb24uXG4gICAgLy8gb25seSByZXR1cm4gYSBwcm9taXNlIGlmIGEgY2FsbGJhY2sgaXMgb21pdHRlZFxuICAgIGZ1bmN0aW9uIGF3YWl0aWZ5IChhc3luY0ZuLCBhcml0eSA9IGFzeW5jRm4ubGVuZ3RoKSB7XG4gICAgICAgIGlmICghYXJpdHkpIHRocm93IG5ldyBFcnJvcignYXJpdHkgaXMgdW5kZWZpbmVkJylcbiAgICAgICAgZnVuY3Rpb24gYXdhaXRhYmxlICguLi5hcmdzKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbYXJpdHkgLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3luY0ZuLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgYXJnc1thcml0eSAtIDFdID0gKGVyciwgLi4uY2JBcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKVxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGNiQXJncy5sZW5ndGggPiAxID8gY2JBcmdzIDogY2JBcmdzWzBdKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGFzeW5jRm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0YWJsZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5RWFjaCAoZWFjaGZuKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBhcHBseUVhY2goZm5zLCAuLi5jYWxsQXJncykge1xuICAgICAgICAgICAgY29uc3QgZ28gPSBhd2FpdGlmeShmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVhY2hmbihmbnMsIChmbiwgY2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgd3JhcEFzeW5jKGZuKS5hcHBseSh0aGF0LCBjYWxsQXJncy5jb25jYXQoY2IpKTtcbiAgICAgICAgICAgICAgICB9LCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBnbztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYXN5bmNNYXAoZWFjaGZuLCBhcnIsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICBhcnIgPSBhcnIgfHwgW107XG4gICAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG5cbiAgICAgICAgcmV0dXJuIGVhY2hmbihhcnIsICh2YWx1ZSwgXywgaXRlckNiKSA9PiB7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgICAgICBfaXRlcmF0ZWUodmFsdWUsIChlcnIsIHYpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRzW2luZGV4XSA9IHY7XG4gICAgICAgICAgICAgICAgaXRlckNiKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0cyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA+PSAwICYmXG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggJSAxID09PSAwO1xuICAgIH1cblxuICAgIC8vIEEgdGVtcG9yYXJ5IHZhbHVlIHVzZWQgdG8gaWRlbnRpZnkgaWYgdGhlIGxvb3Agc2hvdWxkIGJlIGJyb2tlbi5cbiAgICAvLyBTZWUgIzEwNjQsICMxMjkzXG4gICAgY29uc3QgYnJlYWtMb29wID0ge307XG5cbiAgICBmdW5jdGlvbiBvbmNlKGZuKSB7XG4gICAgICAgIGZ1bmN0aW9uIHdyYXBwZXIgKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIGlmIChmbiA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGNhbGxGbiA9IGZuO1xuICAgICAgICAgICAgZm4gPSBudWxsO1xuICAgICAgICAgICAgY2FsbEZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24od3JhcHBlciwgZm4pO1xuICAgICAgICByZXR1cm4gd3JhcHBlclxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEl0ZXJhdG9yIChjb2xsKSB7XG4gICAgICAgIHJldHVybiBjb2xsW1N5bWJvbC5pdGVyYXRvcl0gJiYgY29sbFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQXJyYXlJdGVyYXRvcihjb2xsKSB7XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHZhciBsZW4gPSBjb2xsLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgICByZXR1cm4gKytpIDwgbGVuID8ge3ZhbHVlOiBjb2xsW2ldLCBrZXk6IGl9IDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUVTMjAxNUl0ZXJhdG9yKGl0ZXJhdG9yKSB7XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICBpZiAoaXRlbS5kb25lKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogaXRlbS52YWx1ZSwga2V5OiBpfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdEl0ZXJhdG9yKG9iaikge1xuICAgICAgICB2YXIgb2tleXMgPSBvYmogPyBPYmplY3Qua2V5cyhvYmopIDogW107XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIHZhciBsZW4gPSBva2V5cy5sZW5ndGg7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgICAgdmFyIGtleSA9IG9rZXlzWysraV07XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaSA8IGxlbiA/IHt2YWx1ZTogb2JqW2tleV0sIGtleX0gOiBudWxsO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUl0ZXJhdG9yKGNvbGwpIHtcbiAgICAgICAgaWYgKGlzQXJyYXlMaWtlKGNvbGwpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQXJyYXlJdGVyYXRvcihjb2xsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGNvbGwpO1xuICAgICAgICByZXR1cm4gaXRlcmF0b3IgPyBjcmVhdGVFUzIwMTVJdGVyYXRvcihpdGVyYXRvcikgOiBjcmVhdGVPYmplY3RJdGVyYXRvcihjb2xsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmx5T25jZShmbikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIGlmIChmbiA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiQ2FsbGJhY2sgd2FzIGFscmVhZHkgY2FsbGVkLlwiKTtcbiAgICAgICAgICAgIHZhciBjYWxsRm4gPSBmbjtcbiAgICAgICAgICAgIGZuID0gbnVsbDtcbiAgICAgICAgICAgIGNhbGxGbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmb3IgYXN5bmMgZ2VuZXJhdG9yc1xuICAgIGZ1bmN0aW9uIGFzeW5jRWFjaE9mTGltaXQoZ2VuZXJhdG9yLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgIGxldCBjYW5jZWxlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgYXdhaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgbGV0IHJ1bm5pbmcgPSAwO1xuICAgICAgICBsZXQgaWR4ID0gMDtcblxuICAgICAgICBmdW5jdGlvbiByZXBsZW5pc2goKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdyZXBsZW5pc2gnKVxuICAgICAgICAgICAgaWYgKHJ1bm5pbmcgPj0gbGltaXQgfHwgYXdhaXRpbmcgfHwgZG9uZSkgcmV0dXJuXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdyZXBsZW5pc2ggYXdhaXRpbmcnKVxuICAgICAgICAgICAgYXdhaXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgZ2VuZXJhdG9yLm5leHQoKS50aGVuKCh7dmFsdWUsIGRvbmU6IGl0ZXJEb25lfSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ2dvdCB2YWx1ZScsIHZhbHVlKVxuICAgICAgICAgICAgICAgIGlmIChjYW5jZWxlZCB8fCBkb25lKSByZXR1cm5cbiAgICAgICAgICAgICAgICBhd2FpdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChpdGVyRG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bm5pbmcgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnZG9uZSBuZXh0Q2InKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBydW5uaW5nKys7XG4gICAgICAgICAgICAgICAgaXRlcmF0ZWUodmFsdWUsIGlkeCwgaXRlcmF0ZWVDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgaWR4Kys7XG4gICAgICAgICAgICAgICAgcmVwbGVuaXNoKCk7XG4gICAgICAgICAgICB9KS5jYXRjaChoYW5kbGVFcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpdGVyYXRlZUNhbGxiYWNrKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdpdGVyYXRlZUNhbGxiYWNrJylcbiAgICAgICAgICAgIHJ1bm5pbmcgLT0gMTtcbiAgICAgICAgICAgIGlmIChjYW5jZWxlZCkgcmV0dXJuXG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gaGFuZGxlRXJyb3IoZXJyKVxuXG4gICAgICAgICAgICBpZiAoZXJyID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gYnJlYWtMb29wIHx8IChkb25lICYmIHJ1bm5pbmcgPD0gMCkpIHtcbiAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdkb25lIGl0ZXJDYicpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVwbGVuaXNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVFcnJvcihlcnIpIHtcbiAgICAgICAgICAgIGlmIChjYW5jZWxlZCkgcmV0dXJuXG4gICAgICAgICAgICBhd2FpdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVwbGVuaXNoKCk7XG4gICAgfVxuXG4gICAgdmFyIGVhY2hPZkxpbWl0ID0gKGxpbWl0KSA9PiB7XG4gICAgICAgIHJldHVybiAob2JqLCBpdGVyYXRlZSwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayk7XG4gICAgICAgICAgICBpZiAobGltaXQgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdjb25jdXJyZW5jeSBsaW1pdCBjYW5ub3QgYmUgbGVzcyB0aGFuIDEnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBc3luY0dlbmVyYXRvcihvYmopKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzeW5jRWFjaE9mTGltaXQob2JqLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQXN5bmNJdGVyYWJsZShvYmopKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzeW5jRWFjaE9mTGltaXQob2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG5leHRFbGVtID0gY3JlYXRlSXRlcmF0b3Iob2JqKTtcbiAgICAgICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBydW5uaW5nID0gMDtcbiAgICAgICAgICAgIHZhciBsb29waW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGl0ZXJhdGVlQ2FsbGJhY2soZXJyLCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjYW5jZWxlZCkgcmV0dXJuXG4gICAgICAgICAgICAgICAgcnVubmluZyAtPSAxO1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVyciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IGJyZWFrTG9vcCB8fCAoZG9uZSAmJiBydW5uaW5nIDw9IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFsb29waW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gcmVwbGVuaXNoICgpIHtcbiAgICAgICAgICAgICAgICBsb29waW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocnVubmluZyA8IGxpbWl0ICYmICFkb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtID0gbmV4dEVsZW0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bm5pbmcgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgaXRlcmF0ZWUoZWxlbS52YWx1ZSwgZWxlbS5rZXksIG9ubHlPbmNlKGl0ZXJhdGVlQ2FsbGJhY2spKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9vcGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXBsZW5pc2goKTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMgW2BlYWNoT2ZgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaE9mfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAgICAgKiB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgZWFjaE9mTGltaXRcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5lYWNoT2Zde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5lYWNoT2Z9XG4gICAgICogQGFsaWFzIGZvckVhY2hPZkxpbWl0XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2hcbiAgICAgKiBpdGVtIGluIGBjb2xsYC4gVGhlIGBrZXlgIGlzIHRoZSBpdGVtJ3Mga2V5LCBvciBpbmRleCBpbiB0aGUgY2FzZSBvZiBhblxuICAgICAqIGFycmF5LlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwga2V5LCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsXG4gICAgICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBJbnZva2VkIHdpdGggKGVycikuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBvbWl0dGVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gZWFjaE9mTGltaXQkMShjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBlYWNoT2ZMaW1pdChsaW1pdCkoY29sbCwgd3JhcEFzeW5jKGl0ZXJhdGVlKSwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHZhciBlYWNoT2ZMaW1pdCQyID0gYXdhaXRpZnkoZWFjaE9mTGltaXQkMSwgNCk7XG5cbiAgICAvLyBlYWNoT2YgaW1wbGVtZW50YXRpb24gb3B0aW1pemVkIGZvciBhcnJheS1saWtlc1xuICAgIGZ1bmN0aW9uIGVhY2hPZkFycmF5TGlrZShjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrKTtcbiAgICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICAgIGNvbXBsZXRlZCA9IDAsXG4gICAgICAgICAgICB7bGVuZ3RofSA9IGNvbGwsXG4gICAgICAgICAgICBjYW5jZWxlZCA9IGZhbHNlO1xuICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGl0ZXJhdG9yQ2FsbGJhY2soZXJyLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FuY2VsZWQgPT09IHRydWUpIHJldHVyblxuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCgrK2NvbXBsZXRlZCA9PT0gbGVuZ3RoKSB8fCB2YWx1ZSA9PT0gYnJlYWtMb29wKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGl0ZXJhdGVlKGNvbGxbaW5kZXhdLCBpbmRleCwgb25seU9uY2UoaXRlcmF0b3JDYWxsYmFjaykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYSBnZW5lcmljIHZlcnNpb24gb2YgZWFjaE9mIHdoaWNoIGNhbiBoYW5kbGUgYXJyYXksIG9iamVjdCwgYW5kIGl0ZXJhdG9yIGNhc2VzLlxuICAgIGZ1bmN0aW9uIGVhY2hPZkdlbmVyaWMgKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gZWFjaE9mTGltaXQkMihjb2xsLCBJbmZpbml0eSwgaXRlcmF0ZWUsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaWtlIFtgZWFjaGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5lYWNofSwgZXhjZXB0IHRoYXQgaXQgcGFzc2VzIHRoZSBrZXkgKG9yIGluZGV4KSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XG4gICAgICogdG8gdGhlIGl0ZXJhdGVlLlxuICAgICAqXG4gICAgICogQG5hbWUgZWFjaE9mXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGFsaWFzIGZvckVhY2hPZlxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHNlZSBbYXN5bmMuZWFjaF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9XG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaFxuICAgICAqIGl0ZW0gaW4gYGNvbGxgLlxuICAgICAqIFRoZSBga2V5YCBpcyB0aGUgaXRlbSdzIGtleSwgb3IgaW5kZXggaW4gdGhlIGNhc2Ugb2YgYW4gYXJyYXkuXG4gICAgICogSW52b2tlZCB3aXRoIChpdGVtLCBrZXksIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gZGV2Lmpzb24gaXMgYSBmaWxlIGNvbnRhaW5pbmcgYSB2YWxpZCBqc29uIG9iamVjdCBjb25maWcgZm9yIGRldiBlbnZpcm9ubWVudFxuICAgICAqIC8vIGRldi5qc29uIGlzIGEgZmlsZSBjb250YWluaW5nIGEgdmFsaWQganNvbiBvYmplY3QgY29uZmlnIGZvciB0ZXN0IGVudmlyb25tZW50XG4gICAgICogLy8gcHJvZC5qc29uIGlzIGEgZmlsZSBjb250YWluaW5nIGEgdmFsaWQganNvbiBvYmplY3QgY29uZmlnIGZvciBwcm9kIGVudmlyb25tZW50XG4gICAgICogLy8gaW52YWxpZC5qc29uIGlzIGEgZmlsZSB3aXRoIGEgbWFsZm9ybWVkIGpzb24gb2JqZWN0XG4gICAgICpcbiAgICAgKiBsZXQgY29uZmlncyA9IHt9OyAvL2dsb2JhbCB2YXJpYWJsZVxuICAgICAqIGxldCB2YWxpZENvbmZpZ0ZpbGVNYXAgPSB7ZGV2OiAnZGV2Lmpzb24nLCB0ZXN0OiAndGVzdC5qc29uJywgcHJvZDogJ3Byb2QuanNvbid9O1xuICAgICAqIGxldCBpbnZhbGlkQ29uZmlnRmlsZU1hcCA9IHtkZXY6ICdkZXYuanNvbicsIHRlc3Q6ICd0ZXN0Lmpzb24nLCBpbnZhbGlkOiAnaW52YWxpZC5qc29uJ307XG4gICAgICpcbiAgICAgKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCByZWFkcyBhIGpzb24gZmlsZSBhbmQgcGFyc2VzIHRoZSBjb250ZW50cyBhcyBqc29uIG9iamVjdFxuICAgICAqIGZ1bmN0aW9uIHBhcnNlRmlsZShmaWxlLCBrZXksIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGZzLnJlYWRGaWxlKGZpbGUsIFwidXRmOFwiLCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgKiAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxiYWNrKGVycik7XG4gICAgICogICAgICAgICB0cnkge1xuICAgICAqICAgICAgICAgICAgIGNvbmZpZ3Nba2V5XSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICogICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGUpO1xuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy8gVXNpbmcgY2FsbGJhY2tzXG4gICAgICogYXN5bmMuZm9yRWFjaE9mKHZhbGlkQ29uZmlnRmlsZU1hcCwgcGFyc2VGaWxlLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICogICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgKiAgICAgfSBlbHNlIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGNvbmZpZ3MpO1xuICAgICAqICAgICAgICAgLy8gY29uZmlncyBpcyBub3cgYSBtYXAgb2YgSlNPTiBkYXRhLCBlLmcuXG4gICAgICogICAgICAgICAvLyB7IGRldjogLy9wYXJzZWQgZGV2Lmpzb24sIHRlc3Q6IC8vcGFyc2VkIHRlc3QuanNvbiwgcHJvZDogLy9wYXJzZWQgcHJvZC5qc29ufVxuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvL0Vycm9yIGhhbmRpbmdcbiAgICAgKiBhc3luYy5mb3JFYWNoT2YoaW52YWxpZENvbmZpZ0ZpbGVNYXAsIHBhcnNlRmlsZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAqICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICogICAgICAgICAvLyBKU09OIHBhcnNlIGVycm9yIGV4Y2VwdGlvblxuICAgICAqICAgICB9IGVsc2Uge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coY29uZmlncyk7XG4gICAgICogICAgIH1cbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMuZm9yRWFjaE9mKHZhbGlkQ29uZmlnRmlsZU1hcCwgcGFyc2VGaWxlKVxuICAgICAqIC50aGVuKCAoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGNvbmZpZ3MpO1xuICAgICAqICAgICAvLyBjb25maWdzIGlzIG5vdyBhIG1hcCBvZiBKU09OIGRhdGEsIGUuZy5cbiAgICAgKiAgICAgLy8geyBkZXY6IC8vcGFyc2VkIGRldi5qc29uLCB0ZXN0OiAvL3BhcnNlZCB0ZXN0Lmpzb24sIHByb2Q6IC8vcGFyc2VkIHByb2QuanNvbn1cbiAgICAgKiB9KS5jYXRjaCggZXJyID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy9FcnJvciBoYW5kaW5nXG4gICAgICogYXN5bmMuZm9yRWFjaE9mKGludmFsaWRDb25maWdGaWxlTWFwLCBwYXJzZUZpbGUpXG4gICAgICogLnRoZW4oICgpID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coY29uZmlncyk7XG4gICAgICogfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgKiAgICAgLy8gSlNPTiBwYXJzZSBlcnJvciBleGNlcHRpb25cbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLmZvckVhY2hPZih2YWxpZENvbmZpZ0ZpbGVNYXAsIHBhcnNlRmlsZSk7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhjb25maWdzKTtcbiAgICAgKiAgICAgICAgIC8vIGNvbmZpZ3MgaXMgbm93IGEgbWFwIG9mIEpTT04gZGF0YSwgZS5nLlxuICAgICAqICAgICAgICAgLy8geyBkZXY6IC8vcGFyc2VkIGRldi5qc29uLCB0ZXN0OiAvL3BhcnNlZCB0ZXN0Lmpzb24sIHByb2Q6IC8vcGFyc2VkIHByb2QuanNvbn1cbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy9FcnJvciBoYW5kaW5nXG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLmZvckVhY2hPZihpbnZhbGlkQ29uZmlnRmlsZU1hcCwgcGFyc2VGaWxlKTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGNvbmZpZ3MpO1xuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgICAgICAvLyBKU09OIHBhcnNlIGVycm9yIGV4Y2VwdGlvblxuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICovXG4gICAgZnVuY3Rpb24gZWFjaE9mKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgZWFjaE9mSW1wbGVtZW50YXRpb24gPSBpc0FycmF5TGlrZShjb2xsKSA/IGVhY2hPZkFycmF5TGlrZSA6IGVhY2hPZkdlbmVyaWM7XG4gICAgICAgIHJldHVybiBlYWNoT2ZJbXBsZW1lbnRhdGlvbihjb2xsLCB3cmFwQXN5bmMoaXRlcmF0ZWUpLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgdmFyIGVhY2hPZiQxID0gYXdhaXRpZnkoZWFjaE9mLCAzKTtcblxuICAgIC8qKlxuICAgICAqIFByb2R1Y2VzIGEgbmV3IGNvbGxlY3Rpb24gb2YgdmFsdWVzIGJ5IG1hcHBpbmcgZWFjaCB2YWx1ZSBpbiBgY29sbGAgdGhyb3VnaFxuICAgICAqIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uLiBUaGUgYGl0ZXJhdGVlYCBpcyBjYWxsZWQgd2l0aCBhbiBpdGVtIGZyb20gYGNvbGxgXG4gICAgICogYW5kIGEgY2FsbGJhY2sgZm9yIHdoZW4gaXQgaGFzIGZpbmlzaGVkIHByb2Nlc3NpbmcuIEVhY2ggb2YgdGhlc2UgY2FsbGJhY2tzXG4gICAgICogdGFrZXMgMiBhcmd1bWVudHM6IGFuIGBlcnJvcmAsIGFuZCB0aGUgdHJhbnNmb3JtZWQgaXRlbSBmcm9tIGBjb2xsYC4gSWZcbiAgICAgKiBgaXRlcmF0ZWVgIHBhc3NlcyBhbiBlcnJvciB0byBpdHMgY2FsbGJhY2ssIHRoZSBtYWluIGBjYWxsYmFja2AgKGZvciB0aGVcbiAgICAgKiBgbWFwYCBmdW5jdGlvbikgaXMgaW1tZWRpYXRlbHkgY2FsbGVkIHdpdGggdGhlIGVycm9yLlxuICAgICAqXG4gICAgICogTm90ZSwgdGhhdCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGFwcGxpZXMgdGhlIGBpdGVyYXRlZWAgdG8gZWFjaCBpdGVtIGluXG4gICAgICogcGFyYWxsZWwsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyB3aWxsIGNvbXBsZXRlXG4gICAgICogaW4gb3JkZXIuIEhvd2V2ZXIsIHRoZSByZXN1bHRzIGFycmF5IHdpbGwgYmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlXG4gICAgICogb3JpZ2luYWwgYGNvbGxgLlxuICAgICAqXG4gICAgICogSWYgYG1hcGAgaXMgcGFzc2VkIGFuIE9iamVjdCwgdGhlIHJlc3VsdHMgd2lsbCBiZSBhbiBBcnJheS4gIFRoZSByZXN1bHRzXG4gICAgICogd2lsbCByb3VnaGx5IGJlIGluIHRoZSBvcmRlciBvZiB0aGUgb3JpZ2luYWwgT2JqZWN0cycga2V5cyAoYnV0IHRoaXMgY2FuXG4gICAgICogdmFyeSBhY3Jvc3MgSmF2YVNjcmlwdCBlbmdpbmVzKS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG1hcFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICAgICAqIGBjb2xsYC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIHRyYW5zZm9ybWVkIGl0ZW0uXG4gICAgICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAgICAgKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHRzIGlzIGFuIEFycmF5IG9mIHRoZVxuICAgICAqIHRyYW5zZm9ybWVkIGl0ZW1zIGZyb20gdGhlIGBjb2xsYC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBmaWxlMS50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMTAwMCBieXRlcyBpbiBzaXplXG4gICAgICogLy8gZmlsZTIudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDIwMDAgYnl0ZXMgaW4gc2l6ZVxuICAgICAqIC8vIGZpbGUzLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAzMDAwIGJ5dGVzIGluIHNpemVcbiAgICAgKiAvLyBmaWxlNC50eHQgZG9lcyBub3QgZXhpc3RcbiAgICAgKlxuICAgICAqIGNvbnN0IGZpbGVMaXN0ID0gWydmaWxlMS50eHQnLCdmaWxlMi50eHQnLCdmaWxlMy50eHQnXTtcbiAgICAgKiBjb25zdCB3aXRoTWlzc2luZ0ZpbGVMaXN0ID0gWydmaWxlMS50eHQnLCdmaWxlMi50eHQnLCdmaWxlNC50eHQnXTtcbiAgICAgKlxuICAgICAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgICAqIGZ1bmN0aW9uIGdldEZpbGVTaXplSW5CeXRlcyhmaWxlLCBjYWxsYmFjaykge1xuICAgICAqICAgICBmcy5zdGF0KGZpbGUsIGZ1bmN0aW9uKGVyciwgc3RhdCkge1xuICAgICAqICAgICAgICAgaWYgKGVycikge1xuICAgICAqICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgc3RhdC5zaXplKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy8gVXNpbmcgY2FsbGJhY2tzXG4gICAgICogYXN5bmMubWFwKGZpbGVMaXN0LCBnZXRGaWxlU2l6ZUluQnl0ZXMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAqICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9IGVsc2Uge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAvLyByZXN1bHRzIGlzIG5vdyBhbiBhcnJheSBvZiB0aGUgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAgICAgKiAgICAgICAgIC8vIFsgMTAwMCwgMjAwMCwgMzAwMF1cbiAgICAgKiAgICAgfVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gRXJyb3IgSGFuZGxpbmdcbiAgICAgKiBhc3luYy5tYXAod2l0aE1pc3NpbmdGaWxlTGlzdCwgZ2V0RmlsZVNpemVJbkJ5dGVzLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgaWYgKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgUHJvbWlzZXNcbiAgICAgKiBhc3luYy5tYXAoZmlsZUxpc3QsIGdldEZpbGVTaXplSW5CeXRlcylcbiAgICAgKiAudGhlbiggcmVzdWx0cyA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICAvLyByZXN1bHRzIGlzIG5vdyBhbiBhcnJheSBvZiB0aGUgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAgICAgKiAgICAgLy8gWyAxMDAwLCAyMDAwLCAzMDAwXVxuICAgICAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gRXJyb3IgSGFuZGxpbmdcbiAgICAgKiBhc3luYy5tYXAod2l0aE1pc3NpbmdGaWxlTGlzdCwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICAgICAqIC50aGVuKCByZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMubWFwKGZpbGVMaXN0LCBnZXRGaWxlU2l6ZUluQnl0ZXMpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAvLyByZXN1bHRzIGlzIG5vdyBhbiBhcnJheSBvZiB0aGUgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAgICAgKiAgICAgICAgIC8vIFsgMTAwMCwgMjAwMCwgMzAwMF1cbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy8gRXJyb3IgSGFuZGxpbmdcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLm1hcCh3aXRoTWlzc2luZ0ZpbGVMaXN0LCBnZXRGaWxlU2l6ZUluQnl0ZXMpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXAgKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gX2FzeW5jTWFwKGVhY2hPZiQxLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuICAgIHZhciBtYXAkMSA9IGF3YWl0aWZ5KG1hcCwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgdG8gZWFjaCBmdW5jdGlvbiBpbiB0aGUgYXJyYXksIGNhbGxpbmdcbiAgICAgKiBgY2FsbGJhY2tgIGFmdGVyIGFsbCBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQuIElmIHlvdSBvbmx5IHByb3ZpZGUgdGhlIGZpcnN0XG4gICAgICogYXJndW1lbnQsIGBmbnNgLCB0aGVuIGl0IHdpbGwgcmV0dXJuIGEgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgcGFzcyBpbiB0aGVcbiAgICAgKiBhcmd1bWVudHMgYXMgaWYgaXQgd2VyZSBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsLiBJZiBtb3JlIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCwgYGNhbGxiYWNrYCBpcyByZXF1aXJlZCB3aGlsZSBgYXJnc2AgaXMgc3RpbGwgb3B0aW9uYWwuIFRoZSByZXN1bHRzXG4gICAgICogZm9yIGVhY2ggb2YgdGhlIGFwcGxpZWQgYXN5bmMgZnVuY3Rpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGZpbmFsIGNhbGxiYWNrXG4gICAgICogYXMgYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAbmFtZSBhcHBseUVhY2hcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gZm5zIC0gQSBjb2xsZWN0aW9uIG9mIHtAbGluayBBc3luY0Z1bmN0aW9ufXNcbiAgICAgKiB0byBhbGwgY2FsbCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50c1xuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIC0gYW55IG51bWJlciBvZiBzZXBhcmF0ZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGVcbiAgICAgKiBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gdGhlIGZpbmFsIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgY2FsbGJhY2ssXG4gICAgICogY2FsbGVkIHdoZW4gYWxsIGZ1bmN0aW9ucyBoYXZlIGNvbXBsZXRlZCBwcm9jZXNzaW5nLlxuICAgICAqIEByZXR1cm5zIHtBc3luY0Z1bmN0aW9ufSAtIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3Mgb3RoZXIgdGhhblxuICAgICAqIGFuIG9wdGlvbmFsIGNhbGxiYWNrLCB0aGF0IGlzIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlIGBhcmdzYCB0byBlYWNoXG4gICAgICogb2YgdGhlIGZ1bmN0aW9ucy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogY29uc3QgYXBwbGllZEZuID0gYXN5bmMuYXBwbHlFYWNoKFtlbmFibGVTZWFyY2gsIHVwZGF0ZVNjaGVtYV0sICdidWNrZXQnKVxuICAgICAqXG4gICAgICogYXBwbGllZEZuKChlcnIsIHJlc3VsdHMpID0+IHtcbiAgICAgKiAgICAgLy8gcmVzdWx0c1swXSBpcyB0aGUgcmVzdWx0cyBmb3IgYGVuYWJsZVNlYXJjaGBcbiAgICAgKiAgICAgLy8gcmVzdWx0c1sxXSBpcyB0aGUgcmVzdWx0cyBmb3IgYHVwZGF0ZVNjaGVtYWBcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIHBhcnRpYWwgYXBwbGljYXRpb24gZXhhbXBsZTpcbiAgICAgKiBhc3luYy5lYWNoKFxuICAgICAqICAgICBidWNrZXRzLFxuICAgICAqICAgICBhc3luYyAoYnVja2V0KSA9PiBhc3luYy5hcHBseUVhY2goW2VuYWJsZVNlYXJjaCwgdXBkYXRlU2NoZW1hXSwgYnVja2V0KSgpLFxuICAgICAqICAgICBjYWxsYmFja1xuICAgICAqICk7XG4gICAgICovXG4gICAgdmFyIGFwcGx5RWFjaCQxID0gYXBwbHlFYWNoKG1hcCQxKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzYW1lIGFzIFtgZWFjaE9mYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2hPZn0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgZWFjaE9mU2VyaWVzXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMuZWFjaE9mXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaE9mfVxuICAgICAqIEBhbGlhcyBmb3JFYWNoT2ZTZXJpZXNcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAgICAgKiBgY29sbGAuXG4gICAgICogSW52b2tlZCB3aXRoIChpdGVtLCBrZXksIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGwgYGl0ZXJhdGVlYFxuICAgICAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlYWNoT2ZTZXJpZXMoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBlYWNoT2ZMaW1pdCQyKGNvbGwsIDEsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG4gICAgdmFyIGVhY2hPZlNlcmllcyQxID0gYXdhaXRpZnkoZWFjaE9mU2VyaWVzLCAzKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzYW1lIGFzIFtgbWFwYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgbWFwU2VyaWVzXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMubWFwXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfVxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICAgICAqIGBjb2xsYC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIHRyYW5zZm9ybWVkIGl0ZW0uXG4gICAgICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAgICAgKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHRzIGlzIGFuIGFycmF5IG9mIHRoZVxuICAgICAqIHRyYW5zZm9ybWVkIGl0ZW1zIGZyb20gdGhlIGBjb2xsYC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcFNlcmllcyAoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBfYXN5bmNNYXAoZWFjaE9mU2VyaWVzJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG4gICAgdmFyIG1hcFNlcmllcyQxID0gYXdhaXRpZnkobWFwU2VyaWVzLCAzKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzYW1lIGFzIFtgYXBwbHlFYWNoYF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmFwcGx5RWFjaH0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgYXBwbHlFYWNoU2VyaWVzXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMuYXBwbHlFYWNoXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuYXBwbHlFYWNofVxuICAgICAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBmbnMgLSBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIEFzeW5jRnVuY3Rpb259cyB0byBhbGxcbiAgICAgKiBjYWxsIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gLSBhbnkgbnVtYmVyIG9mIHNlcGFyYXRlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZVxuICAgICAqIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSB0aGUgZmluYWwgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBjYWxsYmFjayxcbiAgICAgKiBjYWxsZWQgd2hlbiBhbGwgZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkIHByb2Nlc3NpbmcuXG4gICAgICogQHJldHVybnMge0FzeW5jRnVuY3Rpb259IC0gQSBmdW5jdGlvbiwgdGhhdCB3aGVuIGNhbGxlZCwgaXMgdGhlIHJlc3VsdCBvZlxuICAgICAqIGFwcGxpbmcgdGhlIGBhcmdzYCB0byB0aGUgbGlzdCBvZiBmdW5jdGlvbnMuICBJdCB0YWtlcyBubyBhcmdzLCBvdGhlciB0aGFuXG4gICAgICogYSBjYWxsYmFjay5cbiAgICAgKi9cbiAgICB2YXIgYXBwbHlFYWNoU2VyaWVzID0gYXBwbHlFYWNoKG1hcFNlcmllcyQxKTtcblxuICAgIGNvbnN0IFBST01JU0VfU1lNQk9MID0gU3ltYm9sKCdwcm9taXNlQ2FsbGJhY2snKTtcblxuICAgIGZ1bmN0aW9uIHByb21pc2VDYWxsYmFjayAoKSB7XG4gICAgICAgIGxldCByZXNvbHZlLCByZWplY3Q7XG4gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrIChlcnIsIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKVxuICAgICAgICAgICAgcmVzb2x2ZShhcmdzLmxlbmd0aCA+IDEgPyBhcmdzIDogYXJnc1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjYWxsYmFja1tQUk9NSVNFX1NZTUJPTF0gPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUgPSByZXMsXG4gICAgICAgICAgICByZWplY3QgPSByZWo7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjYWxsYmFja1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIGJlc3Qgb3JkZXIgZm9yIHJ1bm5pbmcgdGhlIHtAbGluayBBc3luY0Z1bmN0aW9ufXMgaW4gYHRhc2tzYCwgYmFzZWQgb25cbiAgICAgKiB0aGVpciByZXF1aXJlbWVudHMuIEVhY2ggZnVuY3Rpb24gY2FuIG9wdGlvbmFsbHkgZGVwZW5kIG9uIG90aGVyIGZ1bmN0aW9uc1xuICAgICAqIGJlaW5nIGNvbXBsZXRlZCBmaXJzdCwgYW5kIGVhY2ggZnVuY3Rpb24gaXMgcnVuIGFzIHNvb24gYXMgaXRzIHJlcXVpcmVtZW50c1xuICAgICAqIGFyZSBzYXRpc2ZpZWQuXG4gICAgICpcbiAgICAgKiBJZiBhbnkgb2YgdGhlIHtAbGluayBBc3luY0Z1bmN0aW9ufXMgcGFzcyBhbiBlcnJvciB0byB0aGVpciBjYWxsYmFjaywgdGhlIGBhdXRvYCBzZXF1ZW5jZVxuICAgICAqIHdpbGwgc3RvcC4gRnVydGhlciB0YXNrcyB3aWxsIG5vdCBleGVjdXRlIChzbyBhbnkgb3RoZXIgZnVuY3Rpb25zIGRlcGVuZGluZ1xuICAgICAqIG9uIGl0IHdpbGwgbm90IHJ1biksIGFuZCB0aGUgbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZVxuICAgICAqIGVycm9yLlxuICAgICAqXG4gICAgICoge0BsaW5rIEFzeW5jRnVuY3Rpb259cyBhbHNvIHJlY2VpdmUgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc3VsdHMgb2YgZnVuY3Rpb25zIHdoaWNoXG4gICAgICogaGF2ZSBjb21wbGV0ZWQgc28gZmFyIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgaWYgdGhleSBoYXZlIGRlcGVuZGVuY2llcy4gSWYgYVxuICAgICAqIHRhc2sgZnVuY3Rpb24gaGFzIG5vIGRlcGVuZGVuY2llcywgaXQgd2lsbCBvbmx5IGJlIHBhc3NlZCBhIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogQG5hbWUgYXV0b1xuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gICAgICogQG1ldGhvZFxuICAgICAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gdGFza3MgLSBBbiBvYmplY3QuIEVhY2ggb2YgaXRzIHByb3BlcnRpZXMgaXMgZWl0aGVyIGFcbiAgICAgKiBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiByZXF1aXJlbWVudHMsIHdpdGggdGhlIHtAbGluayBBc3luY0Z1bmN0aW9ufSBpdHNlbGYgdGhlIGxhc3QgaXRlbVxuICAgICAqIGluIHRoZSBhcnJheS4gVGhlIG9iamVjdCdzIGtleSBvZiBhIHByb3BlcnR5IHNlcnZlcyBhcyB0aGUgbmFtZSBvZiB0aGUgdGFza1xuICAgICAqIGRlZmluZWQgYnkgdGhhdCBwcm9wZXJ0eSwgaS5lLiBjYW4gYmUgdXNlZCB3aGVuIHNwZWNpZnlpbmcgcmVxdWlyZW1lbnRzIGZvclxuICAgICAqIG90aGVyIHRhc2tzLiBUaGUgZnVuY3Rpb24gcmVjZWl2ZXMgb25lIG9yIHR3byBhcmd1bWVudHM6XG4gICAgICogKiBhIGByZXN1bHRzYCBvYmplY3QsIGNvbnRhaW5pbmcgdGhlIHJlc3VsdHMgb2YgdGhlIHByZXZpb3VzbHkgZXhlY3V0ZWRcbiAgICAgKiAgIGZ1bmN0aW9ucywgb25seSBwYXNzZWQgaWYgdGhlIHRhc2sgaGFzIGFueSBkZXBlbmRlbmNpZXMsXG4gICAgICogKiBhIGBjYWxsYmFjayhlcnIsIHJlc3VsdClgIGZ1bmN0aW9uLCB3aGljaCBtdXN0IGJlIGNhbGxlZCB3aGVuIGZpbmlzaGVkLFxuICAgICAqICAgcGFzc2luZyBhbiBgZXJyb3JgICh3aGljaCBjYW4gYmUgYG51bGxgKSBhbmQgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24nc1xuICAgICAqICAgZXhlY3V0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbY29uY3VycmVuY3k9SW5maW5pdHldIC0gQW4gb3B0aW9uYWwgYGludGVnZXJgIGZvclxuICAgICAqIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0YXNrcyB0aGF0IGNhbiBiZSBydW4gaW4gcGFyYWxsZWwuIEJ5XG4gICAgICogZGVmYXVsdCwgYXMgbWFueSBhcyBwb3NzaWJsZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsXG4gICAgICogdGhlIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuIEl0IHJlY2VpdmVzIHRoZSBgZXJyYCBhcmd1bWVudCBpZiBhbnkgYHRhc2tzYFxuICAgICAqIHBhc3MgYW4gZXJyb3IgdG8gdGhlaXIgY2FsbGJhY2suIFJlc3VsdHMgYXJlIGFsd2F5cyByZXR1cm5lZDsgaG93ZXZlciwgaWYgYW5cbiAgICAgKiBlcnJvciBvY2N1cnMsIG5vIGZ1cnRoZXIgYHRhc2tzYCB3aWxsIGJlIHBlcmZvcm1lZCwgYW5kIHRoZSByZXN1bHRzIG9iamVjdFxuICAgICAqIHdpbGwgb25seSBjb250YWluIHBhcnRpYWwgcmVzdWx0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIGEgY2FsbGJhY2sgaXMgbm90IHBhc3NlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvL1VzaW5nIENhbGxiYWNrc1xuICAgICAqIGFzeW5jLmF1dG8oe1xuICAgICAqICAgICBnZXRfZGF0YTogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIC8vIGFzeW5jIGNvZGUgdG8gZ2V0IHNvbWUgZGF0YVxuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5Jyk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIG1ha2VfZm9sZGVyOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gICAgICogICAgICAgICAvLyB0aGlzIGlzIHJ1biBhdCB0aGUgc2FtZSB0aW1lIGFzIGdldHRpbmcgdGhlIGRhdGFcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdmb2xkZXInKTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgd3JpdGVfZmlsZTogWydnZXRfZGF0YScsICdtYWtlX2ZvbGRlcicsIGZ1bmN0aW9uKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAvLyBvbmNlIHRoZXJlIGlzIHNvbWUgZGF0YSBhbmQgdGhlIGRpcmVjdG9yeSBleGlzdHMsXG4gICAgICogICAgICAgICAvLyB3cml0ZSB0aGUgZGF0YSB0byBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeVxuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZpbGVuYW1lJyk7XG4gICAgICogICAgIH1dLFxuICAgICAqICAgICBlbWFpbF9saW5rOiBbJ3dyaXRlX2ZpbGUnLCBmdW5jdGlvbihyZXN1bHRzLCBjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgLy8gb25jZSB0aGUgZmlsZSBpcyB3cml0dGVuIGxldCdzIGVtYWlsIGEgbGluayB0byBpdC4uLlxuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgeydmaWxlJzpyZXN1bHRzLndyaXRlX2ZpbGUsICdlbWFpbCc6J3VzZXJAZXhhbXBsZS5jb20nfSk7XG4gICAgICogICAgIH1dXG4gICAgICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKCdlcnIgPSAnLCBlcnIpO1xuICAgICAqICAgICB9XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdyZXN1bHRzID0gJywgcmVzdWx0cyk7XG4gICAgICogICAgIC8vIHJlc3VsdHMgPSB7XG4gICAgICogICAgIC8vICAgICBnZXRfZGF0YTogWydkYXRhJywgJ2NvbnZlcnRlZCB0byBhcnJheSddXG4gICAgICogICAgIC8vICAgICBtYWtlX2ZvbGRlcjsgJ2ZvbGRlcicsXG4gICAgICogICAgIC8vICAgICB3cml0ZV9maWxlOiAnZmlsZW5hbWUnXG4gICAgICogICAgIC8vICAgICBlbWFpbF9saW5rOiB7IGZpbGU6ICdmaWxlbmFtZScsIGVtYWlsOiAndXNlckBleGFtcGxlLmNvbScgfVxuICAgICAqICAgICAvLyB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvL1VzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMuYXV0byh7XG4gICAgICogICAgIGdldF9kYXRhOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coJ2luIGdldF9kYXRhJyk7XG4gICAgICogICAgICAgICAvLyBhc3luYyBjb2RlIHRvIGdldCBzb21lIGRhdGFcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdkYXRhJywgJ2NvbnZlcnRlZCB0byBhcnJheScpO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICBtYWtlX2ZvbGRlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKCdpbiBtYWtlX2ZvbGRlcicpO1xuICAgICAqICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gICAgICogICAgICAgICAvLyB0aGlzIGlzIHJ1biBhdCB0aGUgc2FtZSB0aW1lIGFzIGdldHRpbmcgdGhlIGRhdGFcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdmb2xkZXInKTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgd3JpdGVfZmlsZTogWydnZXRfZGF0YScsICdtYWtlX2ZvbGRlcicsIGZ1bmN0aW9uKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAvLyBvbmNlIHRoZXJlIGlzIHNvbWUgZGF0YSBhbmQgdGhlIGRpcmVjdG9yeSBleGlzdHMsXG4gICAgICogICAgICAgICAvLyB3cml0ZSB0aGUgZGF0YSB0byBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeVxuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZpbGVuYW1lJyk7XG4gICAgICogICAgIH1dLFxuICAgICAqICAgICBlbWFpbF9saW5rOiBbJ3dyaXRlX2ZpbGUnLCBmdW5jdGlvbihyZXN1bHRzLCBjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgLy8gb25jZSB0aGUgZmlsZSBpcyB3cml0dGVuIGxldCdzIGVtYWlsIGEgbGluayB0byBpdC4uLlxuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgeydmaWxlJzpyZXN1bHRzLndyaXRlX2ZpbGUsICdlbWFpbCc6J3VzZXJAZXhhbXBsZS5jb20nfSk7XG4gICAgICogICAgIH1dXG4gICAgICogfSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ3Jlc3VsdHMgPSAnLCByZXN1bHRzKTtcbiAgICAgKiAgICAgLy8gcmVzdWx0cyA9IHtcbiAgICAgKiAgICAgLy8gICAgIGdldF9kYXRhOiBbJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5J11cbiAgICAgKiAgICAgLy8gICAgIG1ha2VfZm9sZGVyOyAnZm9sZGVyJyxcbiAgICAgKiAgICAgLy8gICAgIHdyaXRlX2ZpbGU6ICdmaWxlbmFtZSdcbiAgICAgKiAgICAgLy8gICAgIGVtYWlsX2xpbms6IHsgZmlsZTogJ2ZpbGVuYW1lJywgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyB9XG4gICAgICogICAgIC8vIH1cbiAgICAgKiB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnZXJyID0gJywgZXJyKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vVXNpbmcgYXN5bmMvYXdhaXRcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLmF1dG8oe1xuICAgICAqICAgICAgICAgICAgIGdldF9kYXRhOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgICAgICAgICAvLyBhc3luYyBjb2RlIHRvIGdldCBzb21lIGRhdGFcbiAgICAgKiAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5Jyk7XG4gICAgICogICAgICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgICAgICBtYWtlX2ZvbGRlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gICAgICogICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgcnVuIGF0IHRoZSBzYW1lIHRpbWUgYXMgZ2V0dGluZyB0aGUgZGF0YVxuICAgICAqICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnZm9sZGVyJyk7XG4gICAgICogICAgICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgICAgICB3cml0ZV9maWxlOiBbJ2dldF9kYXRhJywgJ21ha2VfZm9sZGVyJywgZnVuY3Rpb24ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgLy8gb25jZSB0aGVyZSBpcyBzb21lIGRhdGEgYW5kIHRoZSBkaXJlY3RvcnkgZXhpc3RzLFxuICAgICAqICAgICAgICAgICAgICAgICAvLyB3cml0ZSB0aGUgZGF0YSB0byBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeVxuICAgICAqICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnZmlsZW5hbWUnKTtcbiAgICAgKiAgICAgICAgICAgICB9XSxcbiAgICAgKiAgICAgICAgICAgICBlbWFpbF9saW5rOiBbJ3dyaXRlX2ZpbGUnLCBmdW5jdGlvbihyZXN1bHRzLCBjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgICAgICAgICAvLyBvbmNlIHRoZSBmaWxlIGlzIHdyaXR0ZW4gbGV0J3MgZW1haWwgYSBsaW5rIHRvIGl0Li4uXG4gICAgICogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHsnZmlsZSc6cmVzdWx0cy53cml0ZV9maWxlLCAnZW1haWwnOid1c2VyQGV4YW1wbGUuY29tJ30pO1xuICAgICAqICAgICAgICAgICAgIH1dXG4gICAgICogICAgICAgICB9KTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKCdyZXN1bHRzID0gJywgcmVzdWx0cyk7XG4gICAgICogICAgICAgICAvLyByZXN1bHRzID0ge1xuICAgICAqICAgICAgICAgLy8gICAgIGdldF9kYXRhOiBbJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5J11cbiAgICAgKiAgICAgICAgIC8vICAgICBtYWtlX2ZvbGRlcjsgJ2ZvbGRlcicsXG4gICAgICogICAgICAgICAvLyAgICAgd3JpdGVfZmlsZTogJ2ZpbGVuYW1lJ1xuICAgICAqICAgICAgICAgLy8gICAgIGVtYWlsX2xpbms6IHsgZmlsZTogJ2ZpbGVuYW1lJywgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyB9XG4gICAgICogICAgICAgICAvLyB9XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGF1dG8odGFza3MsIGNvbmN1cnJlbmN5LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmN1cnJlbmN5ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgLy8gY29uY3VycmVuY3kgaXMgb3B0aW9uYWwsIHNoaWZ0IHRoZSBhcmdzLlxuICAgICAgICAgICAgY2FsbGJhY2sgPSBjb25jdXJyZW5jeTtcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2sgfHwgcHJvbWlzZUNhbGxiYWNrKCkpO1xuICAgICAgICB2YXIgbnVtVGFza3MgPSBPYmplY3Qua2V5cyh0YXNrcykubGVuZ3RoO1xuICAgICAgICBpZiAoIW51bVRhc2tzKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb25jdXJyZW5jeSkge1xuICAgICAgICAgICAgY29uY3VycmVuY3kgPSBudW1UYXNrcztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZXN1bHRzID0ge307XG4gICAgICAgIHZhciBydW5uaW5nVGFza3MgPSAwO1xuICAgICAgICB2YXIgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGhhc0Vycm9yID0gZmFsc2U7XG5cbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgdmFyIHJlYWR5VGFza3MgPSBbXTtcblxuICAgICAgICAvLyBmb3IgY3ljbGUgZGV0ZWN0aW9uOlxuICAgICAgICB2YXIgcmVhZHlUb0NoZWNrID0gW107IC8vIHRhc2tzIHRoYXQgaGF2ZSBiZWVuIGlkZW50aWZpZWQgYXMgcmVhY2hhYmxlXG4gICAgICAgIC8vIHdpdGhvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHJldHVybmluZyB0byBhbiBhbmNlc3RvciB0YXNrXG4gICAgICAgIHZhciB1bmNoZWNrZWREZXBlbmRlbmNpZXMgPSB7fTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0YXNrcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdmFyIHRhc2sgPSB0YXNrc1trZXldO1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhc2spKSB7XG4gICAgICAgICAgICAgICAgLy8gbm8gZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgICAgZW5xdWV1ZVRhc2soa2V5LCBbdGFza10pO1xuICAgICAgICAgICAgICAgIHJlYWR5VG9DaGVjay5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgZGVwZW5kZW5jaWVzID0gdGFzay5zbGljZSgwLCB0YXNrLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgdmFyIHJlbWFpbmluZ0RlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAocmVtYWluaW5nRGVwZW5kZW5jaWVzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZW5xdWV1ZVRhc2soa2V5LCB0YXNrKTtcbiAgICAgICAgICAgICAgICByZWFkeVRvQ2hlY2sucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVuY2hlY2tlZERlcGVuZGVuY2llc1trZXldID0gcmVtYWluaW5nRGVwZW5kZW5jaWVzO1xuXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaChkZXBlbmRlbmN5TmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXNrc1tkZXBlbmRlbmN5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdhc3luYy5hdXRvIHRhc2sgYCcgKyBrZXkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2AgaGFzIGEgbm9uLWV4aXN0ZW50IGRlcGVuZGVuY3kgYCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeU5hbWUgKyAnYCBpbiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy5qb2luKCcsICcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoZGVwZW5kZW5jeU5hbWUsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nRGVwZW5kZW5jaWVzLS07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdEZXBlbmRlbmNpZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVucXVldWVUYXNrKGtleSwgdGFzayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjaGVja0ZvckRlYWRsb2NrcygpO1xuICAgICAgICBwcm9jZXNzUXVldWUoKTtcblxuICAgICAgICBmdW5jdGlvbiBlbnF1ZXVlVGFzayhrZXksIHRhc2spIHtcbiAgICAgICAgICAgIHJlYWR5VGFza3MucHVzaCgoKSA9PiBydW5UYXNrKGtleSwgdGFzaykpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKCkge1xuICAgICAgICAgICAgaWYgKGNhbmNlbGVkKSByZXR1cm5cbiAgICAgICAgICAgIGlmIChyZWFkeVRhc2tzLmxlbmd0aCA9PT0gMCAmJiBydW5uaW5nVGFza3MgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZShyZWFkeVRhc2tzLmxlbmd0aCAmJiBydW5uaW5nVGFza3MgPCBjb25jdXJyZW5jeSkge1xuICAgICAgICAgICAgICAgIHZhciBydW4gPSByZWFkeVRhc2tzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgcnVuKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFkZExpc3RlbmVyKHRhc2tOYW1lLCBmbikge1xuICAgICAgICAgICAgdmFyIHRhc2tMaXN0ZW5lcnMgPSBsaXN0ZW5lcnNbdGFza05hbWVdO1xuICAgICAgICAgICAgaWYgKCF0YXNrTGlzdGVuZXJzKSB7XG4gICAgICAgICAgICAgICAgdGFza0xpc3RlbmVycyA9IGxpc3RlbmVyc1t0YXNrTmFtZV0gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGFza0xpc3RlbmVycy5wdXNoKGZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHRhc2tDb21wbGV0ZSh0YXNrTmFtZSkge1xuICAgICAgICAgICAgdmFyIHRhc2tMaXN0ZW5lcnMgPSBsaXN0ZW5lcnNbdGFza05hbWVdIHx8IFtdO1xuICAgICAgICAgICAgdGFza0xpc3RlbmVycy5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGZ1bmN0aW9uIHJ1blRhc2soa2V5LCB0YXNrKSB7XG4gICAgICAgICAgICBpZiAoaGFzRXJyb3IpIHJldHVybjtcblxuICAgICAgICAgICAgdmFyIHRhc2tDYWxsYmFjayA9IG9ubHlPbmNlKChlcnIsIC4uLnJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJ1bm5pbmdUYXNrcy0tO1xuICAgICAgICAgICAgICAgIGlmIChlcnIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICBbcmVzdWx0XSA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2FmZVJlc3VsdHMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzdWx0cykuZm9yRWFjaChya2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVSZXN1bHRzW3JrZXldID0gcmVzdWx0c1tya2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHNhZmVSZXN1bHRzW2tleV0gPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbGVkKSByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyLCBzYWZlUmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1trZXldID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB0YXNrQ29tcGxldGUoa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcnVubmluZ1Rhc2tzKys7XG4gICAgICAgICAgICB2YXIgdGFza0ZuID0gd3JhcEFzeW5jKHRhc2tbdGFzay5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICBpZiAodGFzay5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGFza0ZuKHJlc3VsdHMsIHRhc2tDYWxsYmFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhc2tGbih0YXNrQ2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JEZWFkbG9ja3MoKSB7XG4gICAgICAgICAgICAvLyBLYWhuJ3MgYWxnb3JpdGhtXG4gICAgICAgICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ub3BvbG9naWNhbF9zb3J0aW5nI0thaG4uMjdzX2FsZ29yaXRobVxuICAgICAgICAgICAgLy8gaHR0cDovL2Nvbm5hbGxlLmJsb2dzcG90LmNvbS8yMDEzLzEwL3RvcG9sb2dpY2FsLXNvcnRpbmdrYWhuLWFsZ29yaXRobS5odG1sXG4gICAgICAgICAgICB2YXIgY3VycmVudFRhc2s7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICAgICAgICB3aGlsZSAocmVhZHlUb0NoZWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXNrID0gcmVhZHlUb0NoZWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgICAgICBnZXREZXBlbmRlbnRzKGN1cnJlbnRUYXNrKS5mb3JFYWNoKGRlcGVuZGVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgtLXVuY2hlY2tlZERlcGVuZGVuY2llc1tkZXBlbmRlbnRdID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkeVRvQ2hlY2sucHVzaChkZXBlbmRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb3VudGVyICE9PSBudW1UYXNrcykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ2FzeW5jLmF1dG8gY2Fubm90IGV4ZWN1dGUgdGFza3MgZHVlIHRvIGEgcmVjdXJzaXZlIGRlcGVuZGVuY3knXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldERlcGVuZGVudHModGFza05hbWUpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRhc2tzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFzayA9IHRhc2tzW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGFzaykgJiYgdGFzay5pbmRleE9mKHRhc2tOYW1lKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrW1BST01JU0VfU1lNQk9MXVxuICAgIH1cblxuICAgIHZhciBGTl9BUkdTID0gL14oPzphc3luY1xccyspPyg/OmZ1bmN0aW9uKT9cXHMqXFx3KlxccypcXChcXHMqKFteKV0rKVxccypcXCkoPzpcXHMqeykvO1xuICAgIHZhciBBUlJPV19GTl9BUkdTID0gL14oPzphc3luY1xccyspP1xcKD9cXHMqKFteKT1dKylcXHMqXFwpPyg/Olxccyo9PikvO1xuICAgIHZhciBGTl9BUkdfU1BMSVQgPSAvLC87XG4gICAgdmFyIEZOX0FSRyA9IC8oPS4rKT8oXFxzKikkLztcblxuICAgIGZ1bmN0aW9uIHN0cmlwQ29tbWVudHMoc3RyaW5nKSB7XG4gICAgICAgIGxldCBzdHJpcHBlZCA9ICcnO1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBsZXQgZW5kQmxvY2tDb21tZW50ID0gc3RyaW5nLmluZGV4T2YoJyovJyk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IHN0cmluZy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChzdHJpbmdbaW5kZXhdID09PSAnLycgJiYgc3RyaW5nW2luZGV4KzFdID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAvLyBpbmxpbmUgY29tbWVudFxuICAgICAgICAgICAgICAgIGxldCBlbmRJbmRleCA9IHN0cmluZy5pbmRleE9mKCdcXG4nLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgaW5kZXggPSAoZW5kSW5kZXggPT09IC0xKSA/IHN0cmluZy5sZW5ndGggOiBlbmRJbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKGVuZEJsb2NrQ29tbWVudCAhPT0gLTEpICYmIChzdHJpbmdbaW5kZXhdID09PSAnLycpICYmIChzdHJpbmdbaW5kZXgrMV0gPT09ICcqJykpIHtcbiAgICAgICAgICAgICAgICAvLyBibG9jayBjb21tZW50XG4gICAgICAgICAgICAgICAgbGV0IGVuZEluZGV4ID0gc3RyaW5nLmluZGV4T2YoJyovJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmIChlbmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBlbmRJbmRleCArIDI7XG4gICAgICAgICAgICAgICAgICAgIGVuZEJsb2NrQ29tbWVudCA9IHN0cmluZy5pbmRleE9mKCcqLycsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHJpcHBlZCArPSBzdHJpbmdbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RyaXBwZWQgKz0gc3RyaW5nW2luZGV4XTtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJpcHBlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVBhcmFtcyhmdW5jKSB7XG4gICAgICAgIGNvbnN0IHNyYyA9IHN0cmlwQ29tbWVudHMoZnVuYy50b1N0cmluZygpKTtcbiAgICAgICAgbGV0IG1hdGNoID0gc3JjLm1hdGNoKEZOX0FSR1MpO1xuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgICBtYXRjaCA9IHNyYy5tYXRjaChBUlJPV19GTl9BUkdTKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBwYXJzZSBhcmdzIGluIGF1dG9JbmplY3RcXG5Tb3VyY2U6XFxuJyArIHNyYylcbiAgICAgICAgbGV0IFssIGFyZ3NdID0gbWF0Y2g7XG4gICAgICAgIHJldHVybiBhcmdzXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxzL2csICcnKVxuICAgICAgICAgICAgLnNwbGl0KEZOX0FSR19TUExJVClcbiAgICAgICAgICAgIC5tYXAoKGFyZykgPT4gYXJnLnJlcGxhY2UoRk5fQVJHLCAnJykudHJpbSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGRlcGVuZGVuY3ktaW5qZWN0ZWQgdmVyc2lvbiBvZiB0aGUgW2FzeW5jLmF1dG9de0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5hdXRvfSBmdW5jdGlvbi4gRGVwZW5kZW50XG4gICAgICogdGFza3MgYXJlIHNwZWNpZmllZCBhcyBwYXJhbWV0ZXJzIHRvIHRoZSBmdW5jdGlvbiwgYWZ0ZXIgdGhlIHVzdWFsIGNhbGxiYWNrXG4gICAgICogcGFyYW1ldGVyLCB3aXRoIHRoZSBwYXJhbWV0ZXIgbmFtZXMgbWF0Y2hpbmcgdGhlIG5hbWVzIG9mIHRoZSB0YXNrcyBpdFxuICAgICAqIGRlcGVuZHMgb24uIFRoaXMgY2FuIHByb3ZpZGUgZXZlbiBtb3JlIHJlYWRhYmxlIHRhc2sgZ3JhcGhzIHdoaWNoIGNhbiBiZVxuICAgICAqIGVhc2llciB0byBtYWludGFpbi5cbiAgICAgKlxuICAgICAqIElmIGEgZmluYWwgY2FsbGJhY2sgaXMgc3BlY2lmaWVkLCB0aGUgdGFzayByZXN1bHRzIGFyZSBzaW1pbGFybHkgaW5qZWN0ZWQsXG4gICAgICogc3BlY2lmaWVkIGFzIG5hbWVkIHBhcmFtZXRlcnMgYWZ0ZXIgdGhlIGluaXRpYWwgZXJyb3IgcGFyYW1ldGVyLlxuICAgICAqXG4gICAgICogVGhlIGF1dG9JbmplY3QgZnVuY3Rpb24gaXMgcHVyZWx5IHN5bnRhY3RpYyBzdWdhciBhbmQgaXRzIHNlbWFudGljcyBhcmVcbiAgICAgKiBvdGhlcndpc2UgZXF1aXZhbGVudCB0byBbYXN5bmMuYXV0b117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmF1dG99LlxuICAgICAqXG4gICAgICogQG5hbWUgYXV0b0luamVjdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLmF1dG9de0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5hdXRvfVxuICAgICAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gdGFza3MgLSBBbiBvYmplY3QsIGVhY2ggb2Ygd2hvc2UgcHJvcGVydGllcyBpcyBhbiB7QGxpbmsgQXN5bmNGdW5jdGlvbn0gb2ZcbiAgICAgKiB0aGUgZm9ybSAnZnVuYyhbZGVwZW5kZW5jaWVzLi4uXSwgY2FsbGJhY2spLiBUaGUgb2JqZWN0J3Mga2V5IG9mIGEgcHJvcGVydHlcbiAgICAgKiBzZXJ2ZXMgYXMgdGhlIG5hbWUgb2YgdGhlIHRhc2sgZGVmaW5lZCBieSB0aGF0IHByb3BlcnR5LCBpLmUuIGNhbiBiZSB1c2VkXG4gICAgICogd2hlbiBzcGVjaWZ5aW5nIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgdGFza3MuXG4gICAgICogKiBUaGUgYGNhbGxiYWNrYCBwYXJhbWV0ZXIgaXMgYSBgY2FsbGJhY2soZXJyLCByZXN1bHQpYCB3aGljaCBtdXN0IGJlIGNhbGxlZFxuICAgICAqICAgd2hlbiBmaW5pc2hlZCwgcGFzc2luZyBhbiBgZXJyb3JgICh3aGljaCBjYW4gYmUgYG51bGxgKSBhbmQgdGhlIHJlc3VsdCBvZlxuICAgICAqICAgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uLiBUaGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgbmFtZSBvdGhlciB0YXNrcyBvblxuICAgICAqICAgd2hpY2ggdGhlIHRhc2sgaXMgZGVwZW5kZW50LCBhbmQgdGhlIHJlc3VsdHMgZnJvbSB0aG9zZSB0YXNrcyBhcmUgdGhlXG4gICAgICogICBhcmd1bWVudHMgb2YgdGhvc2UgcGFyYW1ldGVycy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsXG4gICAgICogdGhlIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuIEl0IHJlY2VpdmVzIHRoZSBgZXJyYCBhcmd1bWVudCBpZiBhbnkgYHRhc2tzYFxuICAgICAqIHBhc3MgYW4gZXJyb3IgdG8gdGhlaXIgY2FsbGJhY2ssIGFuZCBhIGByZXN1bHRzYCBvYmplY3Qgd2l0aCBhbnkgY29tcGxldGVkXG4gICAgICogdGFzayByZXN1bHRzLCBzaW1pbGFyIHRvIGBhdXRvYC5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gIFRoZSBleGFtcGxlIGZyb20gYGF1dG9gIGNhbiBiZSByZXdyaXR0ZW4gYXMgZm9sbG93czpcbiAgICAgKiBhc3luYy5hdXRvSW5qZWN0KHtcbiAgICAgKiAgICAgZ2V0X2RhdGE6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAvLyBhc3luYyBjb2RlIHRvIGdldCBzb21lIGRhdGFcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdkYXRhJywgJ2NvbnZlcnRlZCB0byBhcnJheScpO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICBtYWtlX2ZvbGRlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIC8vIGFzeW5jIGNvZGUgdG8gY3JlYXRlIGEgZGlyZWN0b3J5IHRvIHN0b3JlIGEgZmlsZSBpblxuICAgICAqICAgICAgICAgLy8gdGhpcyBpcyBydW4gYXQgdGhlIHNhbWUgdGltZSBhcyBnZXR0aW5nIHRoZSBkYXRhXG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZm9sZGVyJyk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIHdyaXRlX2ZpbGU6IGZ1bmN0aW9uKGdldF9kYXRhLCBtYWtlX2ZvbGRlciwgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIC8vIG9uY2UgdGhlcmUgaXMgc29tZSBkYXRhIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cyxcbiAgICAgKiAgICAgICAgIC8vIHdyaXRlIHRoZSBkYXRhIHRvIGEgZmlsZSBpbiB0aGUgZGlyZWN0b3J5XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZmlsZW5hbWUnKTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgZW1haWxfbGluazogZnVuY3Rpb24od3JpdGVfZmlsZSwgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIC8vIG9uY2UgdGhlIGZpbGUgaXMgd3JpdHRlbiBsZXQncyBlbWFpbCBhIGxpbmsgdG8gaXQuLi5cbiAgICAgKiAgICAgICAgIC8vIHdyaXRlX2ZpbGUgY29udGFpbnMgdGhlIGZpbGVuYW1lIHJldHVybmVkIGJ5IHdyaXRlX2ZpbGUuXG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCB7J2ZpbGUnOndyaXRlX2ZpbGUsICdlbWFpbCc6J3VzZXJAZXhhbXBsZS5jb20nfSk7XG4gICAgICogICAgIH1cbiAgICAgKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ2VyciA9ICcsIGVycik7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdlbWFpbF9saW5rID0gJywgcmVzdWx0cy5lbWFpbF9saW5rKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIElmIHlvdSBhcmUgdXNpbmcgYSBKUyBtaW5pZmllciB0aGF0IG1hbmdsZXMgcGFyYW1ldGVyIG5hbWVzLCBgYXV0b0luamVjdGBcbiAgICAgKiAvLyB3aWxsIG5vdCB3b3JrIHdpdGggcGxhaW4gZnVuY3Rpb25zLCBzaW5jZSB0aGUgcGFyYW1ldGVyIG5hbWVzIHdpbGwgYmVcbiAgICAgKiAvLyBjb2xsYXBzZWQgdG8gYSBzaW5nbGUgbGV0dGVyIGlkZW50aWZpZXIuICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB5b3UgY2FuXG4gICAgICogLy8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBuYW1lcyBvZiB0aGUgcGFyYW1ldGVycyB5b3VyIHRhc2sgZnVuY3Rpb24gbmVlZHNcbiAgICAgKiAvLyBpbiBhbiBhcnJheSwgc2ltaWxhciB0byBBbmd1bGFyLmpzIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgICAqXG4gICAgICogLy8gVGhpcyBzdGlsbCBoYXMgYW4gYWR2YW50YWdlIG92ZXIgcGxhaW4gYGF1dG9gLCBzaW5jZSB0aGUgcmVzdWx0cyBhIHRhc2tcbiAgICAgKiAvLyBkZXBlbmRzIG9uIGFyZSBzdGlsbCBzcHJlYWQgaW50byBhcmd1bWVudHMuXG4gICAgICogYXN5bmMuYXV0b0luamVjdCh7XG4gICAgICogICAgIC8vLi4uXG4gICAgICogICAgIHdyaXRlX2ZpbGU6IFsnZ2V0X2RhdGEnLCAnbWFrZV9mb2xkZXInLCBmdW5jdGlvbihnZXRfZGF0YSwgbWFrZV9mb2xkZXIsIGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZmlsZW5hbWUnKTtcbiAgICAgKiAgICAgfV0sXG4gICAgICogICAgIGVtYWlsX2xpbms6IFsnd3JpdGVfZmlsZScsIGZ1bmN0aW9uKHdyaXRlX2ZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCB7J2ZpbGUnOndyaXRlX2ZpbGUsICdlbWFpbCc6J3VzZXJAZXhhbXBsZS5jb20nfSk7XG4gICAgICogICAgIH1dXG4gICAgICogICAgIC8vLi4uXG4gICAgICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdlcnIgPSAnLCBlcnIpO1xuICAgICAqICAgICBjb25zb2xlLmxvZygnZW1haWxfbGluayA9ICcsIHJlc3VsdHMuZW1haWxfbGluayk7XG4gICAgICogfSk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gYXV0b0luamVjdCh0YXNrcywgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIG5ld1Rhc2tzID0ge307XG5cbiAgICAgICAgT2JqZWN0LmtleXModGFza3MpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHZhciB0YXNrRm4gPSB0YXNrc1trZXldO1xuICAgICAgICAgICAgdmFyIHBhcmFtcztcbiAgICAgICAgICAgIHZhciBmbklzQXN5bmMgPSBpc0FzeW5jKHRhc2tGbik7XG4gICAgICAgICAgICB2YXIgaGFzTm9EZXBzID1cbiAgICAgICAgICAgICAgICAoIWZuSXNBc3luYyAmJiB0YXNrRm4ubGVuZ3RoID09PSAxKSB8fFxuICAgICAgICAgICAgICAgIChmbklzQXN5bmMgJiYgdGFza0ZuLmxlbmd0aCA9PT0gMCk7XG5cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhc2tGbikpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBbLi4udGFza0ZuXTtcbiAgICAgICAgICAgICAgICB0YXNrRm4gPSBwYXJhbXMucG9wKCk7XG5cbiAgICAgICAgICAgICAgICBuZXdUYXNrc1trZXldID0gcGFyYW1zLmNvbmNhdChwYXJhbXMubGVuZ3RoID4gMCA/IG5ld1Rhc2sgOiB0YXNrRm4pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNOb0RlcHMpIHtcbiAgICAgICAgICAgICAgICAvLyBubyBkZXBlbmRlbmNpZXMsIHVzZSB0aGUgZnVuY3Rpb24gYXMtaXNcbiAgICAgICAgICAgICAgICBuZXdUYXNrc1trZXldID0gdGFza0ZuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJzZVBhcmFtcyh0YXNrRm4pO1xuICAgICAgICAgICAgICAgIGlmICgodGFza0ZuLmxlbmd0aCA9PT0gMCAmJiAhZm5Jc0FzeW5jKSAmJiBwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImF1dG9JbmplY3QgdGFzayBmdW5jdGlvbnMgcmVxdWlyZSBleHBsaWNpdCBwYXJhbWV0ZXJzLlwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgY2FsbGJhY2sgcGFyYW1cbiAgICAgICAgICAgICAgICBpZiAoIWZuSXNBc3luYykgcGFyYW1zLnBvcCgpO1xuXG4gICAgICAgICAgICAgICAgbmV3VGFza3Nba2V5XSA9IHBhcmFtcy5jb25jYXQobmV3VGFzayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIG5ld1Rhc2socmVzdWx0cywgdGFza0NiKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5ld0FyZ3MgPSBwYXJhbXMubWFwKG5hbWUgPT4gcmVzdWx0c1tuYW1lXSk7XG4gICAgICAgICAgICAgICAgbmV3QXJncy5wdXNoKHRhc2tDYik7XG4gICAgICAgICAgICAgICAgd3JhcEFzeW5jKHRhc2tGbikoLi4ubmV3QXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhdXRvKG5ld1Rhc2tzLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCAoaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG91Ymx5X2xpbmtlZF9saXN0KSBpbXBsZW1lbnRhdGlvblxuICAgIC8vIHVzZWQgZm9yIHF1ZXVlcy4gVGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgdGhlIG5vZGUgcHJvdmlkZWQgYnkgdGhlIHVzZXIgY2FuIGJlIG1vZGlmaWVkXG4gICAgLy8gdG8gYWRqdXN0IHRoZSBuZXh0IGFuZCBsYXN0IHByb3BlcnRpZXMuIFdlIGltcGxlbWVudCBvbmx5IHRoZSBtaW5pbWFsIGZ1bmN0aW9uYWxpdHlcbiAgICAvLyBmb3IgcXVldWUgc3VwcG9ydC5cbiAgICBjbGFzcyBETEwge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICByZW1vdmVMaW5rKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChub2RlLnByZXYpIG5vZGUucHJldi5uZXh0ID0gbm9kZS5uZXh0O1xuICAgICAgICAgICAgZWxzZSB0aGlzLmhlYWQgPSBub2RlLm5leHQ7XG4gICAgICAgICAgICBpZiAobm9kZS5uZXh0KSBub2RlLm5leHQucHJldiA9IG5vZGUucHJldjtcbiAgICAgICAgICAgIGVsc2UgdGhpcy50YWlsID0gbm9kZS5wcmV2O1xuXG4gICAgICAgICAgICBub2RlLnByZXYgPSBub2RlLm5leHQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5sZW5ndGggLT0gMTtcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgZW1wdHkgKCkge1xuICAgICAgICAgICAgd2hpbGUodGhpcy5oZWFkKSB0aGlzLnNoaWZ0KCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGluc2VydEFmdGVyKG5vZGUsIG5ld05vZGUpIHtcbiAgICAgICAgICAgIG5ld05vZGUucHJldiA9IG5vZGU7XG4gICAgICAgICAgICBuZXdOb2RlLm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgICAgICBpZiAobm9kZS5uZXh0KSBub2RlLm5leHQucHJldiA9IG5ld05vZGU7XG4gICAgICAgICAgICBlbHNlIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgICAgICAgICBub2RlLm5leHQgPSBuZXdOb2RlO1xuICAgICAgICAgICAgdGhpcy5sZW5ndGggKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluc2VydEJlZm9yZShub2RlLCBuZXdOb2RlKSB7XG4gICAgICAgICAgICBuZXdOb2RlLnByZXYgPSBub2RlLnByZXY7XG4gICAgICAgICAgICBuZXdOb2RlLm5leHQgPSBub2RlO1xuICAgICAgICAgICAgaWYgKG5vZGUucHJldikgbm9kZS5wcmV2Lm5leHQgPSBuZXdOb2RlO1xuICAgICAgICAgICAgZWxzZSB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuICAgICAgICAgICAgbm9kZS5wcmV2ID0gbmV3Tm9kZTtcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoICs9IDE7XG4gICAgICAgIH1cblxuICAgICAgICB1bnNoaWZ0KG5vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhlYWQpIHRoaXMuaW5zZXJ0QmVmb3JlKHRoaXMuaGVhZCwgbm9kZSk7XG4gICAgICAgICAgICBlbHNlIHNldEluaXRpYWwodGhpcywgbm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdXNoKG5vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhaWwpIHRoaXMuaW5zZXJ0QWZ0ZXIodGhpcy50YWlsLCBub2RlKTtcbiAgICAgICAgICAgIGVsc2Ugc2V0SW5pdGlhbCh0aGlzLCBub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNoaWZ0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGVhZCAmJiB0aGlzLnJlbW92ZUxpbmsodGhpcy5oZWFkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvcCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRhaWwgJiYgdGhpcy5yZW1vdmVMaW5rKHRoaXMudGFpbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0b0FycmF5KCkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi50aGlzXVxuICAgICAgICB9XG5cbiAgICAgICAgKltTeW1ib2wuaXRlcmF0b3JdICgpIHtcbiAgICAgICAgICAgIHZhciBjdXIgPSB0aGlzLmhlYWQ7XG4gICAgICAgICAgICB3aGlsZSAoY3VyKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgY3VyLmRhdGE7XG4gICAgICAgICAgICAgICAgY3VyID0gY3VyLm5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZW1vdmUgKHRlc3RGbikge1xuICAgICAgICAgICAgdmFyIGN1cnIgPSB0aGlzLmhlYWQ7XG4gICAgICAgICAgICB3aGlsZShjdXJyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHtuZXh0fSA9IGN1cnI7XG4gICAgICAgICAgICAgICAgaWYgKHRlc3RGbihjdXJyKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUxpbmsoY3Vycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnIgPSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRJbml0aWFsKGRsbCwgbm9kZSkge1xuICAgICAgICBkbGwubGVuZ3RoID0gMTtcbiAgICAgICAgZGxsLmhlYWQgPSBkbGwudGFpbCA9IG5vZGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcXVldWUod29ya2VyLCBjb25jdXJyZW5jeSwgcGF5bG9hZCkge1xuICAgICAgICBpZiAoY29uY3VycmVuY3kgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uY3VycmVuY3kgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoY29uY3VycmVuY3kgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdDb25jdXJyZW5jeSBtdXN0IG5vdCBiZSB6ZXJvJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3dvcmtlciA9IHdyYXBBc3luYyh3b3JrZXIpO1xuICAgICAgICB2YXIgbnVtUnVubmluZyA9IDA7XG4gICAgICAgIHZhciB3b3JrZXJzTGlzdCA9IFtdO1xuICAgICAgICBjb25zdCBldmVudHMgPSB7XG4gICAgICAgICAgICBlcnJvcjogW10sXG4gICAgICAgICAgICBkcmFpbjogW10sXG4gICAgICAgICAgICBzYXR1cmF0ZWQ6IFtdLFxuICAgICAgICAgICAgdW5zYXR1cmF0ZWQ6IFtdLFxuICAgICAgICAgICAgZW1wdHk6IFtdXG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gb24gKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgICAgICAgICBldmVudHNbZXZlbnRdLnB1c2goaGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBvbmNlIChldmVudCwgaGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQW5kUmVtb3ZlID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBvZmYoZXZlbnQsIGhhbmRsZUFuZFJlbW92ZSk7XG4gICAgICAgICAgICAgICAgaGFuZGxlciguLi5hcmdzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBldmVudHNbZXZlbnRdLnB1c2goaGFuZGxlQW5kUmVtb3ZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9mZiAoZXZlbnQsIGhhbmRsZXIpIHtcbiAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybiBPYmplY3Qua2V5cyhldmVudHMpLmZvckVhY2goZXYgPT4gZXZlbnRzW2V2XSA9IFtdKVxuICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSByZXR1cm4gZXZlbnRzW2V2ZW50XSA9IFtdXG4gICAgICAgICAgICBldmVudHNbZXZlbnRdID0gZXZlbnRzW2V2ZW50XS5maWx0ZXIoZXYgPT4gZXYgIT09IGhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdHJpZ2dlciAoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIGV2ZW50c1tldmVudF0uZm9yRWFjaChoYW5kbGVyID0+IGhhbmRsZXIoLi4uYXJncykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHByb2Nlc3NpbmdTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgICAgZnVuY3Rpb24gX2luc2VydChkYXRhLCBpbnNlcnRBdEZyb250LCByZWplY3RPbkVycm9yLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwgJiYgdHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0YXNrIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcS5zdGFydGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdmFyIHJlcywgcmVqO1xuICAgICAgICAgICAgZnVuY3Rpb24gcHJvbWlzZUNhbGxiYWNrIChlcnIsIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBlcnJvciwgbGV0IHRoZSBnbG9iYWwgZXJyb3IgaGFuZGxlclxuICAgICAgICAgICAgICAgIC8vIGRlYWwgd2l0aCBpdFxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3RPbkVycm9yID8gcmVqKGVycikgOiByZXMoKVxuICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8PSAxKSByZXR1cm4gcmVzKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgcmVzKGFyZ3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgaXRlbSA9IHEuX2NyZWF0ZVRhc2tJdGVtKFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcmVqZWN0T25FcnJvciA/IHByb21pc2VDYWxsYmFjayA6XG4gICAgICAgICAgICAgICAgICAgIChjYWxsYmFjayB8fCBwcm9taXNlQ2FsbGJhY2spXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaW5zZXJ0QXRGcm9udCkge1xuICAgICAgICAgICAgICAgIHEuX3Rhc2tzLnVuc2hpZnQoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHEuX3Rhc2tzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcHJvY2Vzc2luZ1NjaGVkdWxlZCkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NpbmdTY2hlZHVsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldEltbWVkaWF0ZSQxKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZ1NjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBxLnByb2Nlc3MoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlamVjdE9uRXJyb3IgfHwgIWNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gcmVzb2x2ZTtcbiAgICAgICAgICAgICAgICAgICAgcmVqID0gcmVqZWN0O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBfY3JlYXRlQ0IodGFza3MpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXJyLCAuLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgbnVtUnVubmluZyAtPSAxO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0YXNrcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhc2sgPSB0YXNrc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB3b3JrZXJzTGlzdC5pbmRleE9mKHRhc2spO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcnNMaXN0LnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJzTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGFzay5jYWxsYmFjayhlcnIsIC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcignZXJyb3InLCBlcnIsIHRhc2suZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobnVtUnVubmluZyA8PSAocS5jb25jdXJyZW5jeSAtIHEuYnVmZmVyKSApIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcigndW5zYXR1cmF0ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocS5pZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcignZHJhaW4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcS5wcm9jZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gX21heWJlRHJhaW4oZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwICYmIHEuaWRsZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FsbCBkcmFpbiBpbW1lZGlhdGVseSBpZiB0aGVyZSBhcmUgbm8gdGFza3NcbiAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUkMSgoKSA9PiB0cmlnZ2VyKCdkcmFpbicpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBldmVudE1ldGhvZCA9IChuYW1lKSA9PiAoaGFuZGxlcikgPT4ge1xuICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25jZShuYW1lLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZmYobmFtZSk7XG4gICAgICAgICAgICBvbihuYW1lLCBoYW5kbGVyKTtcblxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBpc1Byb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICAgICAgdmFyIHEgPSB7XG4gICAgICAgICAgICBfdGFza3M6IG5ldyBETEwoKSxcbiAgICAgICAgICAgIF9jcmVhdGVUYXNrSXRlbSAoZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKltTeW1ib2wuaXRlcmF0b3JdICgpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogcS5fdGFza3NbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5LFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIGJ1ZmZlcjogY29uY3VycmVuY3kgLyA0LFxuICAgICAgICAgICAgc3RhcnRlZDogZmFsc2UsXG4gICAgICAgICAgICBwYXVzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgcHVzaCAoZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX21heWJlRHJhaW4oZGF0YSkpIHJldHVyblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5tYXAoZGF0dW0gPT4gX2luc2VydChkYXR1bSwgZmFsc2UsIGZhbHNlLCBjYWxsYmFjaykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfaW5zZXJ0KGRhdGEsIGZhbHNlLCBmYWxzZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHB1c2hBc3luYyAoZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX21heWJlRHJhaW4oZGF0YSkpIHJldHVyblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5tYXAoZGF0dW0gPT4gX2luc2VydChkYXR1bSwgZmFsc2UsIHRydWUsIGNhbGxiYWNrKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9pbnNlcnQoZGF0YSwgZmFsc2UsIHRydWUsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBraWxsICgpIHtcbiAgICAgICAgICAgICAgICBvZmYoKTtcbiAgICAgICAgICAgICAgICBxLl90YXNrcy5lbXB0eSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuc2hpZnQgKGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9tYXliZURyYWluKGRhdGEpKSByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubWFwKGRhdHVtID0+IF9pbnNlcnQoZGF0dW0sIHRydWUsIGZhbHNlLCBjYWxsYmFjaykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfaW5zZXJ0KGRhdGEsIHRydWUsIGZhbHNlLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5zaGlmdEFzeW5jIChkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfbWF5YmVEcmFpbihkYXRhKSkgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1hcChkYXR1bSA9PiBfaW5zZXJ0KGRhdHVtLCB0cnVlLCB0cnVlLCBjYWxsYmFjaykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfaW5zZXJ0KGRhdGEsIHRydWUsIHRydWUsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZW1vdmUgKHRlc3RGbikge1xuICAgICAgICAgICAgICAgIHEuX3Rhc2tzLnJlbW92ZSh0ZXN0Rm4pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb2Nlc3MgKCkge1xuICAgICAgICAgICAgICAgIC8vIEF2b2lkIHRyeWluZyB0byBzdGFydCB0b28gbWFueSBwcm9jZXNzaW5nIG9wZXJhdGlvbnMuIFRoaXMgY2FuIG9jY3VyXG4gICAgICAgICAgICAgICAgLy8gd2hlbiBjYWxsYmFja3MgcmVzb2x2ZSBzeW5jaHJvbm91c2x5ICgjMTI2NykuXG4gICAgICAgICAgICAgICAgaWYgKGlzUHJvY2Vzc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlzUHJvY2Vzc2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgd2hpbGUoIXEucGF1c2VkICYmIG51bVJ1bm5pbmcgPCBxLmNvbmN1cnJlbmN5ICYmIHEuX3Rhc2tzLmxlbmd0aCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXNrcyA9IFtdLCBkYXRhID0gW107XG4gICAgICAgICAgICAgICAgICAgIHZhciBsID0gcS5fdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAocS5wYXlsb2FkKSBsID0gTWF0aC5taW4obCwgcS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gcS5fdGFza3Muc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJzTGlzdC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKG5vZGUuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBudW1SdW5uaW5nICs9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHEuX3Rhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcignZW1wdHknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1SdW5uaW5nID09PSBxLmNvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKCdzYXR1cmF0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjYiA9IG9ubHlPbmNlKF9jcmVhdGVDQih0YXNrcykpO1xuICAgICAgICAgICAgICAgICAgICBfd29ya2VyKGRhdGEsIGNiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVuZ3RoICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcS5fdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJ1bm5pbmcgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1SdW5uaW5nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdvcmtlcnNMaXN0ICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2Vyc0xpc3Q7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWRsZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcS5fdGFza3MubGVuZ3RoICsgbnVtUnVubmluZyA9PT0gMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXVzZSAoKSB7XG4gICAgICAgICAgICAgICAgcS5wYXVzZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VtZSAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHEucGF1c2VkID09PSBmYWxzZSkgeyByZXR1cm47IH1cbiAgICAgICAgICAgICAgICBxLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldEltbWVkaWF0ZSQxKHEucHJvY2Vzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIGRlZmluZSB0aGVzZSBhcyBmaXhlZCBwcm9wZXJ0aWVzLCBzbyBwZW9wbGUgZ2V0IHVzZWZ1bCBlcnJvcnMgd2hlbiB1cGRhdGluZ1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhxLCB7XG4gICAgICAgICAgICBzYXR1cmF0ZWQ6IHtcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGV2ZW50TWV0aG9kKCdzYXR1cmF0ZWQnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuc2F0dXJhdGVkOiB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBldmVudE1ldGhvZCgndW5zYXR1cmF0ZWQnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVtcHR5OiB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBldmVudE1ldGhvZCgnZW1wdHknKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyYWluOiB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBldmVudE1ldGhvZCgnZHJhaW4nKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBldmVudE1ldGhvZCgnZXJyb3InKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgY2FyZ29gIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgcGF5bG9hZC4gVGFza3MgYWRkZWQgdG8gdGhlXG4gICAgICogY2FyZ28gd2lsbCBiZSBwcm9jZXNzZWQgYWx0b2dldGhlciAodXAgdG8gdGhlIGBwYXlsb2FkYCBsaW1pdCkuIElmIHRoZVxuICAgICAqIGB3b3JrZXJgIGlzIGluIHByb2dyZXNzLCB0aGUgdGFzayBpcyBxdWV1ZWQgdW50aWwgaXQgYmVjb21lcyBhdmFpbGFibGUuIE9uY2VcbiAgICAgKiB0aGUgYHdvcmtlcmAgaGFzIGNvbXBsZXRlZCBzb21lIHRhc2tzLCBlYWNoIGNhbGxiYWNrIG9mIHRob3NlIHRhc2tzIGlzXG4gICAgICogY2FsbGVkLiBDaGVjayBvdXQgW3RoZXNlXShodHRwczovL2NhbW8uZ2l0aHVidXNlcmNvbnRlbnQuY29tLzZiYmQzNmY0Y2Y1YjM1YTBmMTFhOTZkY2QyZTk3NzExZmZjMmZiMzcvNjg3NDc0NzA3MzNhMmYyZjY2MmU2MzZjNmY3NTY0MmU2NzY5NzQ2ODc1NjIyZTYzNmY2ZDJmNjE3MzczNjU3NDczMmYzMTM2MzczNjM4MzczMTJmMzYzODMxMzAzODJmNjI2MjYzMzA2MzY2NjIzMDJkMzU2NjMyMzkyZDMxMzE2NTMyMmQzOTM3MzQ2NjJkMzMzMzM5Mzc2MzM2MzQ2NDYzMzgzNTM4MmU2NzY5NjYpIFthbmltYXRpb25zXShodHRwczovL2NhbW8uZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Y0ODEwZTAwZTFjNWY1ZjhhZGRiZTNlOWY0OTA2NGZkNWQxMDI2OTkvNjg3NDc0NzA3MzNhMmYyZjY2MmU2MzZjNmY3NTY0MmU2NzY5NzQ2ODc1NjIyZTYzNmY2ZDJmNjE3MzczNjU3NDczMmYzMTM2MzczNjM4MzczMTJmMzYzODMxMzAzMTJmMzgzNDYzMzkzMjMwMzYzNjJkMzU2NjMyMzkyZDMxMzE2NTMyMmQzODMxMzQ2NjJkMzk2NDMzNjQzMDMyMzQzMTMzNjI2NjY0MmU2NzY5NjYpXG4gICAgICogZm9yIGhvdyBgY2FyZ29gIGFuZCBgcXVldWVgIHdvcmsuXG4gICAgICpcbiAgICAgKiBXaGlsZSBbYHF1ZXVlYF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnF1ZXVlfSBwYXNzZXMgb25seSBvbmUgdGFzayB0byBvbmUgb2YgYSBncm91cCBvZiB3b3JrZXJzXG4gICAgICogYXQgYSB0aW1lLCBjYXJnbyBwYXNzZXMgYW4gYXJyYXkgb2YgdGFza3MgdG8gYSBzaW5nbGUgd29ya2VyLCByZXBlYXRpbmdcbiAgICAgKiB3aGVuIHRoZSB3b3JrZXIgaXMgZmluaXNoZWQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjYXJnb1xuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLnF1ZXVlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucXVldWV9XG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gd29ya2VyIC0gQW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGFuIGFycmF5XG4gICAgICogb2YgcXVldWVkIHRhc2tzLiBJbnZva2VkIHdpdGggYCh0YXNrcywgY2FsbGJhY2spYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3BheWxvYWQ9SW5maW5pdHldIC0gQW4gb3B0aW9uYWwgYGludGVnZXJgIGZvciBkZXRlcm1pbmluZ1xuICAgICAqIGhvdyBtYW55IHRhc2tzIHNob3VsZCBiZSBwcm9jZXNzZWQgcGVyIHJvdW5kOyBpZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpc1xuICAgICAqIHVubGltaXRlZC5cbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOkNvbnRyb2xGbG93LlF1ZXVlT2JqZWN0fSBBIGNhcmdvIG9iamVjdCB0byBtYW5hZ2UgdGhlIHRhc2tzLiBDYWxsYmFja3MgY2FuXG4gICAgICogYXR0YWNoZWQgYXMgY2VydGFpbiBwcm9wZXJ0aWVzIHRvIGxpc3RlbiBmb3Igc3BlY2lmaWMgZXZlbnRzIGR1cmluZyB0aGVcbiAgICAgKiBsaWZlY3ljbGUgb2YgdGhlIGNhcmdvIGFuZCBpbm5lciBxdWV1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gY3JlYXRlIGEgY2FyZ28gb2JqZWN0IHdpdGggcGF5bG9hZCAyXG4gICAgICogdmFyIGNhcmdvID0gYXN5bmMuY2FyZ28oZnVuY3Rpb24odGFza3MsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGZvciAodmFyIGk9MDsgaTx0YXNrcy5sZW5ndGg7IGkrKykge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coJ2hlbGxvICcgKyB0YXNrc1tpXS5uYW1lKTtcbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYWxsYmFjaygpO1xuICAgICAqIH0sIDIpO1xuICAgICAqXG4gICAgICogLy8gYWRkIHNvbWUgaXRlbXNcbiAgICAgKiBjYXJnby5wdXNoKHtuYW1lOiAnZm9vJ30sIGZ1bmN0aW9uKGVycikge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBmb28nKTtcbiAgICAgKiB9KTtcbiAgICAgKiBjYXJnby5wdXNoKHtuYW1lOiAnYmFyJ30sIGZ1bmN0aW9uKGVycikge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBiYXInKTtcbiAgICAgKiB9KTtcbiAgICAgKiBhd2FpdCBjYXJnby5wdXNoKHtuYW1lOiAnYmF6J30pO1xuICAgICAqIGNvbnNvbGUubG9nKCdmaW5pc2hlZCBwcm9jZXNzaW5nIGJheicpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhcmdvKHdvcmtlciwgcGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gcXVldWUod29ya2VyLCAxLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGNhcmdvUXVldWVgIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgcGF5bG9hZC4gVGFza3MgYWRkZWQgdG8gdGhlXG4gICAgICogY2FyZ29RdWV1ZSB3aWxsIGJlIHByb2Nlc3NlZCB0b2dldGhlciAodXAgdG8gdGhlIGBwYXlsb2FkYCBsaW1pdCkgaW4gYGNvbmN1cnJlbmN5YCBwYXJhbGxlbCB3b3JrZXJzLlxuICAgICAqIElmIHRoZSBhbGwgYHdvcmtlcnNgIGFyZSBpbiBwcm9ncmVzcywgdGhlIHRhc2sgaXMgcXVldWVkIHVudGlsIG9uZSBiZWNvbWVzIGF2YWlsYWJsZS4gT25jZVxuICAgICAqIGEgYHdvcmtlcmAgaGFzIGNvbXBsZXRlZCBzb21lIHRhc2tzLCBlYWNoIGNhbGxiYWNrIG9mIHRob3NlIHRhc2tzIGlzXG4gICAgICogY2FsbGVkLiBDaGVjayBvdXQgW3RoZXNlXShodHRwczovL2NhbW8uZ2l0aHVidXNlcmNvbnRlbnQuY29tLzZiYmQzNmY0Y2Y1YjM1YTBmMTFhOTZkY2QyZTk3NzExZmZjMmZiMzcvNjg3NDc0NzA3MzNhMmYyZjY2MmU2MzZjNmY3NTY0MmU2NzY5NzQ2ODc1NjIyZTYzNmY2ZDJmNjE3MzczNjU3NDczMmYzMTM2MzczNjM4MzczMTJmMzYzODMxMzAzODJmNjI2MjYzMzA2MzY2NjIzMDJkMzU2NjMyMzkyZDMxMzE2NTMyMmQzOTM3MzQ2NjJkMzMzMzM5Mzc2MzM2MzQ2NDYzMzgzNTM4MmU2NzY5NjYpIFthbmltYXRpb25zXShodHRwczovL2NhbW8uZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Y0ODEwZTAwZTFjNWY1ZjhhZGRiZTNlOWY0OTA2NGZkNWQxMDI2OTkvNjg3NDc0NzA3MzNhMmYyZjY2MmU2MzZjNmY3NTY0MmU2NzY5NzQ2ODc1NjIyZTYzNmY2ZDJmNjE3MzczNjU3NDczMmYzMTM2MzczNjM4MzczMTJmMzYzODMxMzAzMTJmMzgzNDYzMzkzMjMwMzYzNjJkMzU2NjMyMzkyZDMxMzE2NTMyMmQzODMxMzQ2NjJkMzk2NDMzNjQzMDMyMzQzMTMzNjI2NjY0MmU2NzY5NjYpXG4gICAgICogZm9yIGhvdyBgY2FyZ29gIGFuZCBgcXVldWVgIHdvcmsuXG4gICAgICpcbiAgICAgKiBXaGlsZSBbYHF1ZXVlYF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnF1ZXVlfSBwYXNzZXMgb25seSBvbmUgdGFzayB0byBvbmUgb2YgYSBncm91cCBvZiB3b3JrZXJzXG4gICAgICogYXQgYSB0aW1lLCBhbmQgW2BjYXJnb2Bde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5jYXJnb30gcGFzc2VzIGFuIGFycmF5IG9mIHRhc2tzIHRvIGEgc2luZ2xlIHdvcmtlcixcbiAgICAgKiB0aGUgY2FyZ29RdWV1ZSBwYXNzZXMgYW4gYXJyYXkgb2YgdGFza3MgdG8gbXVsdGlwbGUgcGFyYWxsZWwgd29ya2Vycy5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNhcmdvUXVldWVcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5xdWV1ZV17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnF1ZXVlfVxuICAgICAqIEBzZWUgW2FzeW5jLmNhcmdvXXtAbGluayBtb2R1bGU6Q29udHJvbEZMb3cuY2FyZ299XG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gd29ya2VyIC0gQW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGFuIGFycmF5XG4gICAgICogb2YgcXVldWVkIHRhc2tzLiBJbnZva2VkIHdpdGggYCh0YXNrcywgY2FsbGJhY2spYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2NvbmN1cnJlbmN5PTFdIC0gQW4gYGludGVnZXJgIGZvciBkZXRlcm1pbmluZyBob3cgbWFueVxuICAgICAqIGB3b3JrZXJgIGZ1bmN0aW9ucyBzaG91bGQgYmUgcnVuIGluIHBhcmFsbGVsLiAgSWYgb21pdHRlZCwgdGhlIGNvbmN1cnJlbmN5XG4gICAgICogZGVmYXVsdHMgdG8gYDFgLiAgSWYgdGhlIGNvbmN1cnJlbmN5IGlzIGAwYCwgYW4gZXJyb3IgaXMgdGhyb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcGF5bG9hZD1JbmZpbml0eV0gLSBBbiBvcHRpb25hbCBgaW50ZWdlcmAgZm9yIGRldGVybWluaW5nXG4gICAgICogaG93IG1hbnkgdGFza3Mgc2hvdWxkIGJlIHByb2Nlc3NlZCBwZXIgcm91bmQ7IGlmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzXG4gICAgICogdW5saW1pdGVkLlxuICAgICAqIEByZXR1cm5zIHttb2R1bGU6Q29udHJvbEZsb3cuUXVldWVPYmplY3R9IEEgY2FyZ29RdWV1ZSBvYmplY3QgdG8gbWFuYWdlIHRoZSB0YXNrcy4gQ2FsbGJhY2tzIGNhblxuICAgICAqIGF0dGFjaGVkIGFzIGNlcnRhaW4gcHJvcGVydGllcyB0byBsaXN0ZW4gZm9yIHNwZWNpZmljIGV2ZW50cyBkdXJpbmcgdGhlXG4gICAgICogbGlmZWN5Y2xlIG9mIHRoZSBjYXJnb1F1ZXVlIGFuZCBpbm5lciBxdWV1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gY3JlYXRlIGEgY2FyZ29RdWV1ZSBvYmplY3Qgd2l0aCBwYXlsb2FkIDIgYW5kIGNvbmN1cnJlbmN5IDJcbiAgICAgKiB2YXIgY2FyZ29RdWV1ZSA9IGFzeW5jLmNhcmdvUXVldWUoZnVuY3Rpb24odGFza3MsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGZvciAodmFyIGk9MDsgaTx0YXNrcy5sZW5ndGg7IGkrKykge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coJ2hlbGxvICcgKyB0YXNrc1tpXS5uYW1lKTtcbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYWxsYmFjaygpO1xuICAgICAqIH0sIDIsIDIpO1xuICAgICAqXG4gICAgICogLy8gYWRkIHNvbWUgaXRlbXNcbiAgICAgKiBjYXJnb1F1ZXVlLnB1c2goe25hbWU6ICdmb28nfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdmaW5pc2hlZCBwcm9jZXNzaW5nIGZvbycpO1xuICAgICAqIH0pO1xuICAgICAqIGNhcmdvUXVldWUucHVzaCh7bmFtZTogJ2Jhcid9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgYmFyJyk7XG4gICAgICogfSk7XG4gICAgICogY2FyZ29RdWV1ZS5wdXNoKHtuYW1lOiAnYmF6J30sIGZ1bmN0aW9uKGVycikge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBiYXonKTtcbiAgICAgKiB9KTtcbiAgICAgKiBjYXJnb1F1ZXVlLnB1c2goe25hbWU6ICdib28nfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdmaW5pc2hlZCBwcm9jZXNzaW5nIGJvbycpO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhcmdvJDEod29ya2VyLCBjb25jdXJyZW5jeSwgcGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gcXVldWUod29ya2VyLCBjb25jdXJyZW5jeSwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVkdWNlcyBgY29sbGAgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyBhbiBhc3luYyBgaXRlcmF0ZWVgIHRvIHJldHVybiBlYWNoXG4gICAgICogc3VjY2Vzc2l2ZSBzdGVwLiBgbWVtb2AgaXMgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJlZHVjdGlvbi4gVGhpcyBmdW5jdGlvblxuICAgICAqIG9ubHkgb3BlcmF0ZXMgaW4gc2VyaWVzLlxuICAgICAqXG4gICAgICogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGl0IG1heSBtYWtlIHNlbnNlIHRvIHNwbGl0IGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uXG4gICAgICogaW50byBhIHBhcmFsbGVsIG1hcCwgYW5kIHRoZW4gdXNlIHRoZSBub3JtYWwgYEFycmF5LnByb3RvdHlwZS5yZWR1Y2VgIG9uIHRoZVxuICAgICAqIHJlc3VsdHMuIFRoaXMgZnVuY3Rpb24gaXMgZm9yIHNpdHVhdGlvbnMgd2hlcmUgZWFjaCBzdGVwIGluIHRoZSByZWR1Y3Rpb25cbiAgICAgKiBuZWVkcyB0byBiZSBhc3luYzsgaWYgeW91IGNhbiBnZXQgdGhlIGRhdGEgYmVmb3JlIHJlZHVjaW5nIGl0LCB0aGVuIGl0J3NcbiAgICAgKiBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byBkbyBzby5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJlZHVjZVxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBhbGlhcyBpbmplY3RcbiAgICAgKiBAYWxpYXMgZm9sZGxcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Kn0gbWVtbyAtIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSByZWR1Y3Rpb24uXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gYXBwbGllZCB0byBlYWNoIGl0ZW0gaW4gdGhlXG4gICAgICogYXJyYXkgdG8gcHJvZHVjZSB0aGUgbmV4dCBzdGVwIGluIHRoZSByZWR1Y3Rpb24uXG4gICAgICogVGhlIGBpdGVyYXRlZWAgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIG5leHQgc3RhdGUgb2YgdGhlIHJlZHVjdGlvbi5cbiAgICAgKiBJZiB0aGUgaXRlcmF0ZWUgY29tcGxldGVzIHdpdGggYW4gZXJyb3IsIHRoZSByZWR1Y3Rpb24gaXMgc3RvcHBlZCBhbmQgdGhlXG4gICAgICogbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSBlcnJvci5cbiAgICAgKiBJbnZva2VkIHdpdGggKG1lbW8sIGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICAgICAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCBpcyB0aGUgcmVkdWNlZCB2YWx1ZS4gSW52b2tlZCB3aXRoXG4gICAgICogKGVyciwgcmVzdWx0KS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gZmlsZTEudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDEwMDAgYnl0ZXMgaW4gc2l6ZVxuICAgICAqIC8vIGZpbGUyLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAyMDAwIGJ5dGVzIGluIHNpemVcbiAgICAgKiAvLyBmaWxlMy50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMzAwMCBieXRlcyBpbiBzaXplXG4gICAgICogLy8gZmlsZTQudHh0IGRvZXMgbm90IGV4aXN0XG4gICAgICpcbiAgICAgKiBjb25zdCBmaWxlTGlzdCA9IFsnZmlsZTEudHh0JywnZmlsZTIudHh0JywnZmlsZTMudHh0J107XG4gICAgICogY29uc3Qgd2l0aE1pc3NpbmdGaWxlTGlzdCA9IFsnZmlsZTEudHh0JywnZmlsZTIudHh0JywnZmlsZTMudHh0JywgJ2ZpbGU0LnR4dCddO1xuICAgICAqXG4gICAgICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgdGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgICAqIC8vIGZpbGUgc2l6ZSBpcyBhZGRlZCB0byB0aGUgbWVtb2l6ZWQgdmFsdWUsIHRoZW4gcmV0dXJuZWRcbiAgICAgKiBmdW5jdGlvbiBnZXRGaWxlU2l6ZUluQnl0ZXMobWVtbywgZmlsZSwgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgZnMuc3RhdChmaWxlLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAgICAgKiAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIG1lbW8gKyBzdGF0LnNpemUpO1xuICAgICAqICAgICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjYWxsYmFja3NcbiAgICAgKiBhc3luYy5yZWR1Y2UoZmlsZUxpc3QsIDAsIGdldEZpbGVTaXplSW5CeXRlcywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgaWYgKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfSBlbHNlIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgICAgICAvLyA2MDAwXG4gICAgICogICAgICAgICAvLyB3aGljaCBpcyB0aGUgc3VtIG9mIHRoZSBmaWxlIHNpemVzIG9mIHRoZSB0aHJlZSBmaWxlc1xuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBFcnJvciBIYW5kbGluZ1xuICAgICAqIGFzeW5jLnJlZHVjZSh3aXRoTWlzc2luZ0ZpbGVMaXN0LCAwLCBnZXRGaWxlU2l6ZUluQnl0ZXMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICogICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICAgICAqICAgICB9IGVsc2Uge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgfVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgUHJvbWlzZXNcbiAgICAgKiBhc3luYy5yZWR1Y2UoZmlsZUxpc3QsIDAsIGdldEZpbGVTaXplSW5CeXRlcylcbiAgICAgKiAudGhlbiggcmVzdWx0ID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgLy8gNjAwMFxuICAgICAqICAgICAvLyB3aGljaCBpcyB0aGUgc3VtIG9mIHRoZSBmaWxlIHNpemVzIG9mIHRoZSB0aHJlZSBmaWxlc1xuICAgICAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gRXJyb3IgSGFuZGxpbmdcbiAgICAgKiBhc3luYy5yZWR1Y2Uod2l0aE1pc3NpbmdGaWxlTGlzdCwgMCwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICAgICAqIC50aGVuKCByZXN1bHQgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmMucmVkdWNlKGZpbGVMaXN0LCAwLCBnZXRGaWxlU2l6ZUluQnl0ZXMpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgICAgIC8vIDYwMDBcbiAgICAgKiAgICAgICAgIC8vIHdoaWNoIGlzIHRoZSBzdW0gb2YgdGhlIGZpbGUgc2l6ZXMgb2YgdGhlIHRocmVlIGZpbGVzXG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIEVycm9yIEhhbmRsaW5nXG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLnJlZHVjZSh3aXRoTWlzc2luZ0ZpbGVMaXN0LCAwLCBnZXRGaWxlU2l6ZUluQnl0ZXMpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZShjb2xsLCBtZW1vLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrKTtcbiAgICAgICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgICAgIHJldHVybiBlYWNoT2ZTZXJpZXMkMShjb2xsLCAoeCwgaSwgaXRlckNiKSA9PiB7XG4gICAgICAgICAgICBfaXRlcmF0ZWUobWVtbywgeCwgKGVyciwgdikgPT4ge1xuICAgICAgICAgICAgICAgIG1lbW8gPSB2O1xuICAgICAgICAgICAgICAgIGl0ZXJDYihlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVyciA9PiBjYWxsYmFjayhlcnIsIG1lbW8pKTtcbiAgICB9XG4gICAgdmFyIHJlZHVjZSQxID0gYXdhaXRpZnkocmVkdWNlLCA0KTtcblxuICAgIC8qKlxuICAgICAqIFZlcnNpb24gb2YgdGhlIGNvbXBvc2UgZnVuY3Rpb24gdGhhdCBpcyBtb3JlIG5hdHVyYWwgdG8gcmVhZC4gRWFjaCBmdW5jdGlvblxuICAgICAqIGNvbnN1bWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uLiBJdCBpcyB0aGUgZXF1aXZhbGVudCBvZlxuICAgICAqIFtjb21wb3NlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuY29tcG9zZX0gd2l0aCB0aGUgYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAqXG4gICAgICogRWFjaCBmdW5jdGlvbiBpcyBleGVjdXRlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY29tcG9zZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAbmFtZSBzZXFcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5jb21wb3NlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuY29tcG9zZX1cbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHsuLi5Bc3luY0Z1bmN0aW9ufSBmdW5jdGlvbnMgLSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9ucyB0byBjb21wb3NlXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBhIGZ1bmN0aW9uIHRoYXQgY29tcG9zZXMgdGhlIGBmdW5jdGlvbnNgIGluIG9yZGVyXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIFJlcXVpcmVzIGxvZGFzaCAob3IgdW5kZXJzY29yZSksIGV4cHJlc3MzIGFuZCBkcmVzZW5kZSdzIG9ybTIuXG4gICAgICogLy8gUGFydCBvZiBhbiBhcHAsIHRoYXQgZmV0Y2hlcyBjYXRzIG9mIHRoZSBsb2dnZWQgdXNlci5cbiAgICAgKiAvLyBUaGlzIGV4YW1wbGUgdXNlcyBgc2VxYCBmdW5jdGlvbiB0byBhdm9pZCBvdmVybmVzdGluZyBhbmQgZXJyb3JcbiAgICAgKiAvLyBoYW5kbGluZyBjbHV0dGVyLlxuICAgICAqIGFwcC5nZXQoJy9jYXRzJywgZnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgICAgKiAgICAgdmFyIFVzZXIgPSByZXF1ZXN0Lm1vZGVscy5Vc2VyO1xuICAgICAqICAgICBhc3luYy5zZXEoXG4gICAgICogICAgICAgICBVc2VyLmdldC5iaW5kKFVzZXIpLCAgLy8gJ1VzZXIuZ2V0JyBoYXMgc2lnbmF0dXJlIChpZCwgY2FsbGJhY2soZXJyLCBkYXRhKSlcbiAgICAgKiAgICAgICAgIGZ1bmN0aW9uKHVzZXIsIGZuKSB7XG4gICAgICogICAgICAgICAgICAgdXNlci5nZXRDYXRzKGZuKTsgICAgICAvLyAnZ2V0Q2F0cycgaGFzIHNpZ25hdHVyZSAoY2FsbGJhY2soZXJyLCBkYXRhKSlcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgKShyZXEuc2Vzc2lvbi51c2VyX2lkLCBmdW5jdGlvbiAoZXJyLCBjYXRzKSB7XG4gICAgICogICAgICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAqICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIG1lc3NhZ2U6IGVyci5tZXNzYWdlIH0pO1xuICAgICAqICAgICAgICAgfSBlbHNlIHtcbiAgICAgKiAgICAgICAgICAgICByZXNwb25zZS5qc29uKHsgc3RhdHVzOiAnb2snLCBtZXNzYWdlOiAnQ2F0cyBmb3VuZCcsIGRhdGE6IGNhdHMgfSk7XG4gICAgICogICAgICAgICB9XG4gICAgICogICAgIH0pO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNlcSguLi5mdW5jdGlvbnMpIHtcbiAgICAgICAgdmFyIF9mdW5jdGlvbnMgPSBmdW5jdGlvbnMubWFwKHdyYXBBc3luYyk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gICAgICAgICAgICB2YXIgY2IgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnBvcCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYiA9IHByb21pc2VDYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZWR1Y2UkMShfZnVuY3Rpb25zLCBhcmdzLCAobmV3YXJncywgZm4sIGl0ZXJDYikgPT4ge1xuICAgICAgICAgICAgICAgIGZuLmFwcGx5KHRoYXQsIG5ld2FyZ3MuY29uY2F0KChlcnIsIC4uLm5leHRhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZXJDYihlcnIsIG5leHRhcmdzKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVyciwgcmVzdWx0cykgPT4gY2IoZXJyLCAuLi5yZXN1bHRzKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjYltQUk9NSVNFX1NZTUJPTF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gd2hpY2ggaXMgYSBjb21wb3NpdGlvbiBvZiB0aGUgcGFzc2VkIGFzeW5jaHJvbm91c1xuICAgICAqIGZ1bmN0aW9ucy4gRWFjaCBmdW5jdGlvbiBjb25zdW1lcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiB0aGF0XG4gICAgICogZm9sbG93cy4gQ29tcG9zaW5nIGZ1bmN0aW9ucyBgZigpYCwgYGcoKWAsIGFuZCBgaCgpYCB3b3VsZCBwcm9kdWNlIHRoZSByZXN1bHRcbiAgICAgKiBvZiBgZihnKGgoKSkpYCwgb25seSB0aGlzIHZlcnNpb24gdXNlcyBjYWxsYmFja3MgdG8gb2J0YWluIHRoZSByZXR1cm4gdmFsdWVzLlxuICAgICAqXG4gICAgICogSWYgdGhlIGxhc3QgYXJndW1lbnQgdG8gdGhlIGNvbXBvc2VkIGZ1bmN0aW9uIGlzIG5vdCBhIGZ1bmN0aW9uLCBhIHByb21pc2VcbiAgICAgKiBpcyByZXR1cm5lZCB3aGVuIHlvdSBjYWxsIGl0LlxuICAgICAqXG4gICAgICogRWFjaCBmdW5jdGlvbiBpcyBleGVjdXRlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY29tcG9zZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb21wb3NlXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7Li4uQXN5bmNGdW5jdGlvbn0gZnVuY3Rpb25zIC0gdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbnMgdG8gY29tcG9zZVxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGNvbXBvc2VkXG4gICAgICogYXN5bmNocm9ub3VzIGBmdW5jdGlvbnNgXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGFkZDEobiwgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCBuICsgMSk7XG4gICAgICogICAgIH0sIDEwKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBtdWwzKG4sIGNhbGxiYWNrKSB7XG4gICAgICogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgbiAqIDMpO1xuICAgICAqICAgICB9LCAxMCk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZDFtdWwzID0gYXN5bmMuY29tcG9zZShtdWwzLCBhZGQxKTtcbiAgICAgKiBhZGQxbXVsMyg0LCBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgLy8gcmVzdWx0IG5vdyBlcXVhbHMgMTVcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHNlcSguLi5hcmdzLnJldmVyc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMgW2BtYXBgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG1hcExpbWl0XG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMubWFwXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfVxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAgICAgKiBgY29sbGAuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIHRoZSB0cmFuc2Zvcm1lZCBpdGVtLlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gICAgICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gUmVzdWx0cyBpcyBhbiBhcnJheSBvZiB0aGVcbiAgICAgKiB0cmFuc2Zvcm1lZCBpdGVtcyBmcm9tIHRoZSBgY29sbGAuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBMaW1pdCAoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gX2FzeW5jTWFwKGVhY2hPZkxpbWl0KGxpbWl0KSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cbiAgICB2YXIgbWFwTGltaXQkMSA9IGF3YWl0aWZ5KG1hcExpbWl0LCA0KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzYW1lIGFzIFtgY29uY2F0YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmNvbmNhdH0gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb25jYXRMaW1pdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLmNvbmNhdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmNvbmNhdH1cbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBhbGlhcyBmbGF0TWFwTGltaXRcbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYCxcbiAgICAgKiB3aGljaCBzaG91bGQgdXNlIGFuIGFycmF5IGFzIGl0cyByZXN1bHQuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gICAgICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHRzIGlzIGFuIGFycmF5XG4gICAgICogY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdHMgb2YgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb24uIEludm9rZWQgd2l0aFxuICAgICAqIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uY2F0TGltaXQoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgX2l0ZXJhdGVlID0gd3JhcEFzeW5jKGl0ZXJhdGVlKTtcbiAgICAgICAgcmV0dXJuIG1hcExpbWl0JDEoY29sbCwgbGltaXQsICh2YWwsIGl0ZXJDYikgPT4ge1xuICAgICAgICAgICAgX2l0ZXJhdGVlKHZhbCwgKGVyciwgLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBpdGVyQ2IoZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlckNiKGVyciwgYXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgKGVyciwgbWFwUmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXBSZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hcFJlc3VsdHNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCguLi5tYXBSZXN1bHRzW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgY29uY2F0TGltaXQkMSA9IGF3YWl0aWZ5KGNvbmNhdExpbWl0LCA0KTtcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgYGl0ZXJhdGVlYCB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLCBjb25jYXRlbmF0aW5nIHRoZSByZXN1bHRzLiBSZXR1cm5zXG4gICAgICogdGhlIGNvbmNhdGVuYXRlZCBsaXN0LiBUaGUgYGl0ZXJhdGVlYHMgYXJlIGNhbGxlZCBpbiBwYXJhbGxlbCwgYW5kIHRoZVxuICAgICAqIHJlc3VsdHMgYXJlIGNvbmNhdGVuYXRlZCBhcyB0aGV5IHJldHVybi4gVGhlIHJlc3VsdHMgYXJyYXkgd2lsbCBiZSByZXR1cm5lZCBpblxuICAgICAqIHRoZSBvcmlnaW5hbCBvcmRlciBvZiBgY29sbGAgcGFzc2VkIHRvIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQG5hbWUgY29uY2F0XG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAYWxpYXMgZmxhdE1hcFxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAsXG4gICAgICogd2hpY2ggc2hvdWxkIHVzZSBhbiBhcnJheSBhcyBpdHMgcmVzdWx0LiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICAgICAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gUmVzdWx0cyBpcyBhbiBhcnJheVxuICAgICAqIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRzIG9mIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uLiBJbnZva2VkIHdpdGhcbiAgICAgKiAoZXJyLCByZXN1bHRzKS5cbiAgICAgKiBAcmV0dXJucyBBIFByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBkaXIxIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTEudHh0LCBmaWxlMi50eHRcbiAgICAgKiAvLyBkaXIyIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTMudHh0LCBmaWxlNC50eHRcbiAgICAgKiAvLyBkaXIzIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTUudHh0XG4gICAgICogLy8gZGlyNCBkb2VzIG5vdCBleGlzdFxuICAgICAqXG4gICAgICogbGV0IGRpcmVjdG9yeUxpc3QgPSBbJ2RpcjEnLCdkaXIyJywnZGlyMyddO1xuICAgICAqIGxldCB3aXRoTWlzc2luZ0RpcmVjdG9yeUxpc3QgPSBbJ2RpcjEnLCdkaXIyJywnZGlyMycsICdkaXI0J107XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjYWxsYmFja3NcbiAgICAgKiBhc3luYy5jb25jYXQoZGlyZWN0b3J5TGlzdCwgZnMucmVhZGRpciwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgaWYgKGVycikge1xuICAgICAqICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICAgICAvLyBbICdmaWxlMS50eHQnLCAnZmlsZTIudHh0JywgJ2ZpbGUzLnR4dCcsICdmaWxlNC50eHQnLCBmaWxlNS50eHQgXVxuICAgICAqICAgIH1cbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIEVycm9yIEhhbmRsaW5nXG4gICAgICogYXN5bmMuY29uY2F0KHdpdGhNaXNzaW5nRGlyZWN0b3J5TGlzdCwgZnMucmVhZGRpciwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgaWYgKGVycikge1xuICAgICAqICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICAgICAqICAgICAgICAvLyBzaW5jZSBkaXI0IGRvZXMgbm90IGV4aXN0XG4gICAgICogICAgfSBlbHNlIHtcbiAgICAgKiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgfVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgUHJvbWlzZXNcbiAgICAgKiBhc3luYy5jb25jYXQoZGlyZWN0b3J5TGlzdCwgZnMucmVhZGRpcilcbiAgICAgKiAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIC8vIFsgJ2ZpbGUxLnR4dCcsICdmaWxlMi50eHQnLCAnZmlsZTMudHh0JywgJ2ZpbGU0LnR4dCcsIGZpbGU1LnR4dCBdXG4gICAgICogfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgKiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBFcnJvciBIYW5kbGluZ1xuICAgICAqIGFzeW5jLmNvbmNhdCh3aXRoTWlzc2luZ0RpcmVjdG9yeUxpc3QsIGZzLnJlYWRkaXIpXG4gICAgICogLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgIC8vIHNpbmNlIGRpcjQgZG9lcyBub3QgZXhpc3RcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5jb25jYXQoZGlyZWN0b3J5TGlzdCwgZnMucmVhZGRpcik7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiAgICAgICAgIC8vIFsgJ2ZpbGUxLnR4dCcsICdmaWxlMi50eHQnLCAnZmlsZTMudHh0JywgJ2ZpbGU0LnR4dCcsIGZpbGU1LnR4dCBdXG4gICAgICogICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIEVycm9yIEhhbmRsaW5nXG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5jb25jYXQod2l0aE1pc3NpbmdEaXJlY3RvcnlMaXN0LCBmcy5yZWFkZGlyKTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICAgICAqICAgICAgICAgLy8gc2luY2UgZGlyNCBkb2VzIG5vdCBleGlzdFxuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uY2F0KGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gY29uY2F0TGltaXQkMShjb2xsLCBJbmZpbml0eSwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cbiAgICB2YXIgY29uY2F0JDEgPSBhd2FpdGlmeShjb25jYXQsIDMpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMgW2Bjb25jYXRgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuY29uY2F0fSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb25jYXRTZXJpZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5jb25jYXRde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5jb25jYXR9XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAYWxpYXMgZmxhdE1hcFNlcmllc1xuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGFuIGFycmF5IGFuIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gYXJyYXlcbiAgICAgKiBjb250YWluaW5nIHRoZSBjb25jYXRlbmF0ZWQgcmVzdWx0cyBvZiB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbi4gSW52b2tlZCB3aXRoXG4gICAgICogKGVyciwgcmVzdWx0cykuXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25jYXRTZXJpZXMoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBjb25jYXRMaW1pdCQxKGNvbGwsIDEsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG4gICAgdmFyIGNvbmNhdFNlcmllcyQxID0gYXdhaXRpZnkoY29uY2F0U2VyaWVzLCAzKTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdoZW4gY2FsbGVkLCBjYWxscy1iYWNrIHdpdGggdGhlIHZhbHVlcyBwcm92aWRlZC5cbiAgICAgKiBVc2VmdWwgYXMgdGhlIGZpcnN0IGZ1bmN0aW9uIGluIGEgW2B3YXRlcmZhbGxgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cud2F0ZXJmYWxsfSwgb3IgZm9yIHBsdWdnaW5nIHZhbHVlcyBpbiB0b1xuICAgICAqIFtgYXV0b2Bde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5hdXRvfS5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNvbnN0YW50XG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLip9IGFyZ3VtZW50cy4uLiAtIEFueSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGF1dG9tYXRpY2FsbHkgaW52b2tlXG4gICAgICogY2FsbGJhY2sgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2hlbiBpbnZva2VkLCBhdXRvbWF0aWNhbGx5XG4gICAgICogaW52b2tlcyB0aGUgY2FsbGJhY2sgd2l0aCB0aGUgcHJldmlvdXMgZ2l2ZW4gYXJndW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBhc3luYy53YXRlcmZhbGwoW1xuICAgICAqICAgICBhc3luYy5jb25zdGFudCg0MiksXG4gICAgICogICAgIGZ1bmN0aW9uICh2YWx1ZSwgbmV4dCkge1xuICAgICAqICAgICAgICAgLy8gdmFsdWUgPT09IDQyXG4gICAgICogICAgIH0sXG4gICAgICogICAgIC8vLi4uXG4gICAgICogXSwgY2FsbGJhY2spO1xuICAgICAqXG4gICAgICogYXN5bmMud2F0ZXJmYWxsKFtcbiAgICAgKiAgICAgYXN5bmMuY29uc3RhbnQoZmlsZW5hbWUsIFwidXRmOFwiKSxcbiAgICAgKiAgICAgZnMucmVhZEZpbGUsXG4gICAgICogICAgIGZ1bmN0aW9uIChmaWxlRGF0YSwgbmV4dCkge1xuICAgICAqICAgICAgICAgLy8uLi5cbiAgICAgKiAgICAgfVxuICAgICAqICAgICAvLy4uLlxuICAgICAqIF0sIGNhbGxiYWNrKTtcbiAgICAgKlxuICAgICAqIGFzeW5jLmF1dG8oe1xuICAgICAqICAgICBob3N0bmFtZTogYXN5bmMuY29uc3RhbnQoXCJodHRwczovL3NlcnZlci5uZXQvXCIpLFxuICAgICAqICAgICBwb3J0OiBmaW5kRnJlZVBvcnQsXG4gICAgICogICAgIGxhdW5jaFNlcnZlcjogW1wiaG9zdG5hbWVcIiwgXCJwb3J0XCIsIGZ1bmN0aW9uIChvcHRpb25zLCBjYikge1xuICAgICAqICAgICAgICAgc3RhcnRTZXJ2ZXIob3B0aW9ucywgY2IpO1xuICAgICAqICAgICB9XSxcbiAgICAgKiAgICAgLy8uLi5cbiAgICAgKiB9LCBjYWxsYmFjayk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uc3RhbnQoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmlnbm9yZWRBcmdzLyosIGNhbGxiYWNrKi8pIHtcbiAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IGlnbm9yZWRBcmdzLnBvcCgpO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIC4uLmFyZ3MpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIF9jcmVhdGVUZXN0ZXIoY2hlY2ssIGdldFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gKGVhY2hmbiwgYXJyLCBfaXRlcmF0ZWUsIGNiKSA9PiB7XG4gICAgICAgICAgICB2YXIgdGVzdFBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHRlc3RSZXN1bHQ7XG4gICAgICAgICAgICBjb25zdCBpdGVyYXRlZSA9IHdyYXBBc3luYyhfaXRlcmF0ZWUpO1xuICAgICAgICAgICAgZWFjaGZuKGFyciwgKHZhbHVlLCBfLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZXJhdGVlKHZhbHVlLCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyciB8fCBlcnIgPT09IGZhbHNlKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2socmVzdWx0KSAmJiAhdGVzdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0ID0gZ2V0UmVzdWx0KHRydWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBicmVha0xvb3ApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICAgIGNiKG51bGwsIHRlc3RQYXNzZWQgPyB0ZXN0UmVzdWx0IDogZ2V0UmVzdWx0KGZhbHNlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBpbiBgY29sbGAgdGhhdCBwYXNzZXMgYW4gYXN5bmMgdHJ1dGggdGVzdC4gVGhlXG4gICAgICogYGl0ZXJhdGVlYCBpcyBhcHBsaWVkIGluIHBhcmFsbGVsLCBtZWFuaW5nIHRoZSBmaXJzdCBpdGVyYXRlZSB0byByZXR1cm5cbiAgICAgKiBgdHJ1ZWAgd2lsbCBmaXJlIHRoZSBkZXRlY3QgYGNhbGxiYWNrYCB3aXRoIHRoYXQgcmVzdWx0LiBUaGF0IG1lYW5zIHRoZVxuICAgICAqIHJlc3VsdCBtaWdodCBub3QgYmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG9yaWdpbmFsIGBjb2xsYCAoaW4gdGVybXMgb2Ygb3JkZXIpXG4gICAgICogdGhhdCBwYXNzZXMgdGhlIHRlc3QuXG5cbiAgICAgKiBJZiBvcmRlciB3aXRoaW4gdGhlIG9yaWdpbmFsIGBjb2xsYCBpcyBpbXBvcnRhbnQsIHRoZW4gbG9vayBhdFxuICAgICAqIFtgZGV0ZWN0U2VyaWVzYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdFNlcmllc30uXG4gICAgICpcbiAgICAgKiBAbmFtZSBkZXRlY3RcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAYWxpYXMgZmluZFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uc1xuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhcyBzb29uIGFzIGFueVxuICAgICAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuXG4gICAgICogUmVzdWx0IHdpbGwgYmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGFycmF5IHRoYXQgcGFzc2VzIHRoZSB0cnV0aCB0ZXN0XG4gICAgICogKGl0ZXJhdGVlKSBvciB0aGUgdmFsdWUgYHVuZGVmaW5lZGAgaWYgbm9uZSBwYXNzZWQuIEludm9rZWQgd2l0aFxuICAgICAqIChlcnIsIHJlc3VsdCkuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBvbWl0dGVkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIGRpcjEgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMS50eHQsIGZpbGUyLnR4dFxuICAgICAqIC8vIGRpcjIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMy50eHQsIGZpbGU0LnR4dFxuICAgICAqIC8vIGRpcjMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlNS50eHRcbiAgICAgKlxuICAgICAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBhIGZpbGUgZXhpc3RzXG4gICAgICogZnVuY3Rpb24gZmlsZUV4aXN0cyhmaWxlLCBjYWxsYmFjaykge1xuICAgICAqICAgIGZzLmFjY2VzcyhmaWxlLCBmcy5jb25zdGFudHMuRl9PSywgKGVycikgPT4ge1xuICAgICAqICAgICAgICBjYWxsYmFjayhudWxsLCAhZXJyKTtcbiAgICAgKiAgICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBhc3luYy5kZXRlY3QoWydmaWxlMy50eHQnLCdmaWxlMi50eHQnLCdkaXIxL2ZpbGUxLnR4dCddLCBmaWxlRXhpc3RzLFxuICAgICAqICAgIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICogICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgICAgIC8vIGRpcjEvZmlsZTEudHh0XG4gICAgICogICAgICAgIC8vIHJlc3VsdCBub3cgZXF1YWxzIHRoZSBmaXJzdCBmaWxlIGluIHRoZSBsaXN0IHRoYXQgZXhpc3RzXG4gICAgICogICAgfVxuICAgICAqKTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMuZGV0ZWN0KFsnZmlsZTMudHh0JywnZmlsZTIudHh0JywnZGlyMS9maWxlMS50eHQnXSwgZmlsZUV4aXN0cylcbiAgICAgKiAudGhlbihyZXN1bHQgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAvLyBkaXIxL2ZpbGUxLnR4dFxuICAgICAqICAgICAvLyByZXN1bHQgbm93IGVxdWFscyB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgbGlzdCB0aGF0IGV4aXN0c1xuICAgICAqIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5kZXRlY3QoWydmaWxlMy50eHQnLCdmaWxlMi50eHQnLCdkaXIxL2ZpbGUxLnR4dCddLCBmaWxlRXhpc3RzKTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgICAgICAvLyBkaXIxL2ZpbGUxLnR4dFxuICAgICAqICAgICAgICAgLy8gcmVzdWx0IG5vdyBlcXVhbHMgdGhlIGZpbGUgaW4gdGhlIGxpc3QgdGhhdCBleGlzdHNcbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGV0ZWN0KGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gX2NyZWF0ZVRlc3Rlcihib29sID0+IGJvb2wsIChyZXMsIGl0ZW0pID0+IGl0ZW0pKGVhY2hPZiQxLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuICAgIHZhciBkZXRlY3QkMSA9IGF3YWl0aWZ5KGRldGVjdCwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYGRldGVjdGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5kZXRlY3R9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICAgICAqIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBkZXRlY3RMaW1pdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLmRldGVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdH1cbiAgICAgKiBAYWxpYXMgZmluZExpbWl0XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25zXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhcyBzb29uIGFzIGFueVxuICAgICAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuXG4gICAgICogUmVzdWx0IHdpbGwgYmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGFycmF5IHRoYXQgcGFzc2VzIHRoZSB0cnV0aCB0ZXN0XG4gICAgICogKGl0ZXJhdGVlKSBvciB0aGUgdmFsdWUgYHVuZGVmaW5lZGAgaWYgbm9uZSBwYXNzZWQuIEludm9rZWQgd2l0aFxuICAgICAqIChlcnIsIHJlc3VsdCkuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBvbWl0dGVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGV0ZWN0TGltaXQoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gX2NyZWF0ZVRlc3Rlcihib29sID0+IGJvb2wsIChyZXMsIGl0ZW0pID0+IGl0ZW0pKGVhY2hPZkxpbWl0KGxpbWl0KSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cbiAgICB2YXIgZGV0ZWN0TGltaXQkMSA9IGF3YWl0aWZ5KGRldGVjdExpbWl0LCA0KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzYW1lIGFzIFtgZGV0ZWN0YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdH0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgZGV0ZWN0U2VyaWVzXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMuZGV0ZWN0XXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZGV0ZWN0fVxuICAgICAqIEBhbGlhcyBmaW5kU2VyaWVzXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25zXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLlxuICAgICAqIFRoZSBpdGVyYXRlZSBtdXN0IGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHZhbHVlIGFzIGl0cyByZXN1bHQuXG4gICAgICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFzIHNvb24gYXMgYW55XG4gICAgICogaXRlcmF0ZWUgcmV0dXJucyBgdHJ1ZWAsIG9yIGFmdGVyIGFsbCB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAgICAgKiBSZXN1bHQgd2lsbCBiZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgYXJyYXkgdGhhdCBwYXNzZXMgdGhlIHRydXRoIHRlc3RcbiAgICAgKiAoaXRlcmF0ZWUpIG9yIHRoZSB2YWx1ZSBgdW5kZWZpbmVkYCBpZiBub25lIHBhc3NlZC4gSW52b2tlZCB3aXRoXG4gICAgICogKGVyciwgcmVzdWx0KS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZXRlY3RTZXJpZXMoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBfY3JlYXRlVGVzdGVyKGJvb2wgPT4gYm9vbCwgKHJlcywgaXRlbSkgPT4gaXRlbSkoZWFjaE9mTGltaXQoMSksIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG5cbiAgICB2YXIgZGV0ZWN0U2VyaWVzJDEgPSBhd2FpdGlmeShkZXRlY3RTZXJpZXMsIDMpO1xuXG4gICAgZnVuY3Rpb24gY29uc29sZUZ1bmMobmFtZSkge1xuICAgICAgICByZXR1cm4gKGZuLCAuLi5hcmdzKSA9PiB3cmFwQXN5bmMoZm4pKC4uLmFyZ3MsIChlcnIsIC4uLnJlc3VsdEFyZ3MpID0+IHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGVbbmFtZV0pIHsgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJncy5mb3JFYWNoKHggPT4gY29uc29sZVtuYW1lXSh4KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvZ3MgdGhlIHJlc3VsdCBvZiBhbiBbYGFzeW5jYCBmdW5jdGlvbl17QGxpbmsgQXN5bmNGdW5jdGlvbn0gdG8gdGhlXG4gICAgICogYGNvbnNvbGVgIHVzaW5nIGBjb25zb2xlLmRpcmAgdG8gZGlzcGxheSB0aGUgcHJvcGVydGllcyBvZiB0aGUgcmVzdWx0aW5nIG9iamVjdC5cbiAgICAgKiBPbmx5IHdvcmtzIGluIE5vZGUuanMgb3IgaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGBjb25zb2xlLmRpcmAgYW5kXG4gICAgICogYGNvbnNvbGUuZXJyb3JgIChzdWNoIGFzIEZGIGFuZCBDaHJvbWUpLlxuICAgICAqIElmIG11bHRpcGxlIGFyZ3VtZW50cyBhcmUgcmV0dXJuZWQgZnJvbSB0aGUgYXN5bmMgZnVuY3Rpb24sXG4gICAgICogYGNvbnNvbGUuZGlyYCBpcyBjYWxsZWQgb24gZWFjaCBhcmd1bWVudCBpbiBvcmRlci5cbiAgICAgKlxuICAgICAqIEBuYW1lIGRpclxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBmdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB5b3Ugd2FudCB0byBldmVudHVhbGx5IGFwcGx5XG4gICAgICogYWxsIGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IGFyZ3VtZW50cy4uLiAtIEFueSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGFwcGx5IHRvIHRoZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gaW4gYSBtb2R1bGVcbiAgICAgKiB2YXIgaGVsbG8gPSBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaykge1xuICAgICAqICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwge2hlbGxvOiBuYW1lfSk7XG4gICAgICogICAgIH0sIDEwMDApO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiAvLyBpbiB0aGUgbm9kZSByZXBsXG4gICAgICogbm9kZT4gYXN5bmMuZGlyKGhlbGxvLCAnd29ybGQnKTtcbiAgICAgKiB7aGVsbG86ICd3b3JsZCd9XG4gICAgICovXG4gICAgdmFyIGRpciA9IGNvbnNvbGVGdW5jKCdkaXInKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwb3N0LWNoZWNrIHZlcnNpb24gb2YgW2B3aGlsc3RgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cud2hpbHN0fS4gVG8gcmVmbGVjdCB0aGUgZGlmZmVyZW5jZSBpblxuICAgICAqIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zLCB0aGUgYXJndW1lbnRzIGB0ZXN0YCBhbmQgYGl0ZXJhdGVlYCBhcmUgc3dpdGNoZWQuXG4gICAgICpcbiAgICAgKiBgZG9XaGlsc3RgIGlzIHRvIGB3aGlsc3RgIGFzIGBkbyB3aGlsZWAgaXMgdG8gYHdoaWxlYCBpbiBwbGFpbiBKYXZhU2NyaXB0LlxuICAgICAqXG4gICAgICogQG5hbWUgZG9XaGlsc3RcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy53aGlsc3Rde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy53aGlsc3R9XG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBlYWNoIHRpbWUgYHRlc3RgXG4gICAgICogcGFzc2VzLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHRlc3QgLSBhc3luY2hyb25vdXMgdHJ1dGggdGVzdCB0byBwZXJmb3JtIGFmdGVyIGVhY2hcbiAgICAgKiBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYC4gSW52b2tlZCB3aXRoICguLi5hcmdzLCBjYWxsYmFjayksIHdoZXJlIGAuLi5hcmdzYCBhcmUgdGhlXG4gICAgICogbm9uLWVycm9yIGFyZ3MgZnJvbSB0aGUgcHJldmlvdXMgY2FsbGJhY2sgb2YgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHRlc3RcbiAgICAgKiBmdW5jdGlvbiBoYXMgZmFpbGVkIGFuZCByZXBlYXRlZCBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYCBoYXMgc3RvcHBlZC5cbiAgICAgKiBgY2FsbGJhY2tgIHdpbGwgYmUgcGFzc2VkIGFuIGVycm9yIGFuZCBhbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZmluYWxcbiAgICAgKiBgaXRlcmF0ZWVgJ3MgY2FsbGJhY2suIEludm9rZWQgd2l0aCAoZXJyLCBbcmVzdWx0c10pO1xuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRvV2hpbHN0KGl0ZXJhdGVlLCB0ZXN0LCBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayA9IG9ubHlPbmNlKGNhbGxiYWNrKTtcbiAgICAgICAgdmFyIF9mbiA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgICAgIHZhciBfdGVzdCA9IHdyYXBBc3luYyh0ZXN0KTtcbiAgICAgICAgdmFyIHJlc3VsdHM7XG5cbiAgICAgICAgZnVuY3Rpb24gbmV4dChlcnIsIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVybjtcbiAgICAgICAgICAgIHJlc3VsdHMgPSBhcmdzO1xuICAgICAgICAgICAgX3Rlc3QoLi4uYXJncywgY2hlY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY2hlY2soZXJyLCB0cnV0aCkge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICBpZiAoZXJyID09PSBmYWxzZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCF0cnV0aCkgcmV0dXJuIGNhbGxiYWNrKG51bGwsIC4uLnJlc3VsdHMpO1xuICAgICAgICAgICAgX2ZuKG5leHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoZWNrKG51bGwsIHRydWUpO1xuICAgIH1cblxuICAgIHZhciBkb1doaWxzdCQxID0gYXdhaXRpZnkoZG9XaGlsc3QsIDMpO1xuXG4gICAgLyoqXG4gICAgICogTGlrZSBbJ2RvV2hpbHN0J117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmRvV2hpbHN0fSwgZXhjZXB0IHRoZSBgdGVzdGAgaXMgaW52ZXJ0ZWQuIE5vdGUgdGhlXG4gICAgICogYXJndW1lbnQgb3JkZXJpbmcgZGlmZmVycyBmcm9tIGB1bnRpbGAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBkb1VudGlsXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMuZG9XaGlsc3Rde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5kb1doaWxzdH1cbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBlYWNoIHRpbWVcbiAgICAgKiBgdGVzdGAgZmFpbHMuIEludm9rZWQgd2l0aCAoY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gdGVzdCAtIGFzeW5jaHJvbm91cyB0cnV0aCB0ZXN0IHRvIHBlcmZvcm0gYWZ0ZXIgZWFjaFxuICAgICAqIGV4ZWN1dGlvbiBvZiBgaXRlcmF0ZWVgLiBJbnZva2VkIHdpdGggKC4uLmFyZ3MsIGNhbGxiYWNrKSwgd2hlcmUgYC4uLmFyZ3NgIGFyZSB0aGVcbiAgICAgKiBub24tZXJyb3IgYXJncyBmcm9tIHRoZSBwcmV2aW91cyBjYWxsYmFjayBvZiBgaXRlcmF0ZWVgXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIHRoZSB0ZXN0XG4gICAgICogZnVuY3Rpb24gaGFzIHBhc3NlZCBhbmQgcmVwZWF0ZWQgZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAgaGFzIHN0b3BwZWQuIGBjYWxsYmFja2BcbiAgICAgKiB3aWxsIGJlIHBhc3NlZCBhbiBlcnJvciBhbmQgYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZpbmFsIGBpdGVyYXRlZWAnc1xuICAgICAqIGNhbGxiYWNrLiBJbnZva2VkIHdpdGggKGVyciwgW3Jlc3VsdHNdKTtcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb1VudGlsKGl0ZXJhdGVlLCB0ZXN0LCBjYWxsYmFjaykge1xuICAgICAgICBjb25zdCBfdGVzdCA9IHdyYXBBc3luYyh0ZXN0KTtcbiAgICAgICAgcmV0dXJuIGRvV2hpbHN0JDEoaXRlcmF0ZWUsICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYiA9IGFyZ3MucG9wKCk7XG4gICAgICAgICAgICBfdGVzdCguLi5hcmdzLCAoZXJyLCB0cnV0aCkgPT4gY2IgKGVyciwgIXRydXRoKSk7XG4gICAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfd2l0aG91dEluZGV4KGl0ZXJhdGVlKSB7XG4gICAgICAgIHJldHVybiAodmFsdWUsIGluZGV4LCBjYWxsYmFjaykgPT4gaXRlcmF0ZWUodmFsdWUsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBmdW5jdGlvbiBgaXRlcmF0ZWVgIHRvIGVhY2ggaXRlbSBpbiBgY29sbGAsIGluIHBhcmFsbGVsLlxuICAgICAqIFRoZSBgaXRlcmF0ZWVgIGlzIGNhbGxlZCB3aXRoIGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCwgYW5kIGEgY2FsbGJhY2sgZm9yIHdoZW5cbiAgICAgKiBpdCBoYXMgZmluaXNoZWQuIElmIHRoZSBgaXRlcmF0ZWVgIHBhc3NlcyBhbiBlcnJvciB0byBpdHMgYGNhbGxiYWNrYCwgdGhlXG4gICAgICogbWFpbiBgY2FsbGJhY2tgIChmb3IgdGhlIGBlYWNoYCBmdW5jdGlvbikgaXMgaW1tZWRpYXRlbHkgY2FsbGVkIHdpdGggdGhlXG4gICAgICogZXJyb3IuXG4gICAgICpcbiAgICAgKiBOb3RlLCB0aGF0IHNpbmNlIHRoaXMgZnVuY3Rpb24gYXBwbGllcyBgaXRlcmF0ZWVgIHRvIGVhY2ggaXRlbSBpbiBwYXJhbGxlbCxcbiAgICAgKiB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgaXRlcmF0ZWUgZnVuY3Rpb25zIHdpbGwgY29tcGxldGUgaW4gb3JkZXIuXG4gICAgICpcbiAgICAgKiBAbmFtZSBlYWNoXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGFsaWFzIGZvckVhY2hcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0b1xuICAgICAqIGVhY2ggaXRlbSBpbiBgY29sbGAuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIFRoZSBhcnJheSBpbmRleCBpcyBub3QgcGFzc2VkIHRvIHRoZSBpdGVyYXRlZS5cbiAgICAgKiBJZiB5b3UgbmVlZCB0aGUgaW5kZXgsIHVzZSBgZWFjaE9mYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gZGlyMSBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUxLnR4dCwgZmlsZTIudHh0XG4gICAgICogLy8gZGlyMiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUzLnR4dCwgZmlsZTQudHh0XG4gICAgICogLy8gZGlyMyBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGU1LnR4dFxuICAgICAqIC8vIGRpcjQgZG9lcyBub3QgZXhpc3RcbiAgICAgKlxuICAgICAqIGNvbnN0IGZpbGVMaXN0ID0gWyAnZGlyMS9maWxlMi50eHQnLCAnZGlyMi9maWxlMy50eHQnLCAnZGlyL2ZpbGU1LnR4dCddO1xuICAgICAqIGNvbnN0IHdpdGhNaXNzaW5nRmlsZUxpc3QgPSBbJ2RpcjEvZmlsZTEudHh0JywgJ2RpcjQvZmlsZTIudHh0J107XG4gICAgICpcbiAgICAgKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBkZWxldGVzIGEgZmlsZVxuICAgICAqIGNvbnN0IGRlbGV0ZUZpbGUgPSBmdW5jdGlvbihmaWxlLCBjYWxsYmFjaykge1xuICAgICAqICAgICBmcy51bmxpbmsoZmlsZSwgY2FsbGJhY2spO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjYWxsYmFja3NcbiAgICAgKiBhc3luYy5lYWNoKGZpbGVMaXN0LCBkZWxldGVGaWxlLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgKiAgICAgaWYoIGVyciApIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZygnQWxsIGZpbGVzIGhhdmUgYmVlbiBkZWxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBFcnJvciBIYW5kbGluZ1xuICAgICAqIGFzeW5jLmVhY2god2l0aE1pc3NpbmdGaWxlTGlzdCwgZGVsZXRlRmlsZSwgZnVuY3Rpb24oZXJyKXtcbiAgICAgKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAgICAgKiAgICAgLy8gc2luY2UgZGlyNC9maWxlMi50eHQgZG9lcyBub3QgZXhpc3RcbiAgICAgKiAgICAgLy8gZGlyMS9maWxlMS50eHQgY291bGQgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMuZWFjaChmaWxlTGlzdCwgZGVsZXRlRmlsZSlcbiAgICAgKiAudGhlbiggKCkgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnQWxsIGZpbGVzIGhhdmUgYmVlbiBkZWxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gRXJyb3IgSGFuZGxpbmdcbiAgICAgKiBhc3luYy5lYWNoKGZpbGVMaXN0LCBkZWxldGVGaWxlKVxuICAgICAqIC50aGVuKCAoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdBbGwgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICogfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgIC8vIHNpbmNlIGRpcjQvZmlsZTIudHh0IGRvZXMgbm90IGV4aXN0XG4gICAgICogICAgIC8vIGRpcjEvZmlsZTEudHh0IGNvdWxkIGhhdmUgYmVlbiBkZWxldGVkXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGF3YWl0IGFzeW5jLmVhY2goZmlsZXMsIGRlbGV0ZUZpbGUpO1xuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBFcnJvciBIYW5kbGluZ1xuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGF3YWl0IGFzeW5jLmVhY2god2l0aE1pc3NpbmdGaWxlTGlzdCwgZGVsZXRlRmlsZSk7XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgICAgICAvLyBzaW5jZSBkaXI0L2ZpbGUyLnR4dCBkb2VzIG5vdCBleGlzdFxuICAgICAqICAgICAgICAgLy8gZGlyMS9maWxlMS50eHQgY291bGQgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVhY2hMaW1pdChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIGVhY2hPZiQxKGNvbGwsIF93aXRob3V0SW5kZXgod3JhcEFzeW5jKGl0ZXJhdGVlKSksIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICB2YXIgZWFjaCA9IGF3YWl0aWZ5KGVhY2hMaW1pdCwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYGVhY2hgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaH0gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBlYWNoTGltaXRcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5lYWNoXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaH1cbiAgICAgKiBAYWxpYXMgZm9yRWFjaExpbWl0XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICAgICAqIGBjb2xsYC5cbiAgICAgKiBUaGUgYXJyYXkgaW5kZXggaXMgbm90IHBhc3NlZCB0byB0aGUgaXRlcmF0ZWUuXG4gICAgICogSWYgeW91IG5lZWQgdGhlIGluZGV4LCB1c2UgYGVhY2hPZkxpbWl0YC5cbiAgICAgKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlYWNoTGltaXQkMShjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBlYWNoT2ZMaW1pdChsaW1pdCkoY29sbCwgX3dpdGhvdXRJbmRleCh3cmFwQXN5bmMoaXRlcmF0ZWUpKSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICB2YXIgZWFjaExpbWl0JDIgPSBhd2FpdGlmeShlYWNoTGltaXQkMSwgNCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYGVhY2hgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaH0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogTm90ZSwgdGhhdCB1bmxpa2UgW2BlYWNoYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9LCB0aGlzIGZ1bmN0aW9uIGFwcGxpZXMgaXRlcmF0ZWUgdG8gZWFjaCBpdGVtXG4gICAgICogaW4gc2VyaWVzIGFuZCB0aGVyZWZvcmUgdGhlIGl0ZXJhdGVlIGZ1bmN0aW9ucyB3aWxsIGNvbXBsZXRlIGluIG9yZGVyLlxuXG4gICAgICogQG5hbWUgZWFjaFNlcmllc1xuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLmVhY2hde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5lYWNofVxuICAgICAqIEBhbGlhcyBmb3JFYWNoU2VyaWVzXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaFxuICAgICAqIGl0ZW0gaW4gYGNvbGxgLlxuICAgICAqIFRoZSBhcnJheSBpbmRleCBpcyBub3QgcGFzc2VkIHRvIHRoZSBpdGVyYXRlZS5cbiAgICAgKiBJZiB5b3UgbmVlZCB0aGUgaW5kZXgsIHVzZSBgZWFjaE9mU2VyaWVzYC5cbiAgICAgKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG9taXR0ZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlYWNoU2VyaWVzKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gZWFjaExpbWl0JDIoY29sbCwgMSwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cbiAgICB2YXIgZWFjaFNlcmllcyQxID0gYXdhaXRpZnkoZWFjaFNlcmllcywgMyk7XG5cbiAgICAvKipcbiAgICAgKiBXcmFwIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBlbnN1cmUgaXQgY2FsbHMgaXRzIGNhbGxiYWNrIG9uIGEgbGF0ZXIgdGljayBvZlxuICAgICAqIHRoZSBldmVudCBsb29wLiAgSWYgdGhlIGZ1bmN0aW9uIGFscmVhZHkgY2FsbHMgaXRzIGNhbGxiYWNrIG9uIGEgbmV4dCB0aWNrLFxuICAgICAqIG5vIGV4dHJhIGRlZmVycmFsIGlzIGFkZGVkLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyBzdGFjayBvdmVyZmxvd3NcbiAgICAgKiAoYFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkYCkgYW5kIGdlbmVyYWxseSBrZWVwaW5nXG4gICAgICogW1phbGdvXShodHRwOi8vYmxvZy5penMubWUvcG9zdC81OTE0Mjc0MjE0My9kZXNpZ25pbmctYXBpcy1mb3ItYXN5bmNocm9ueSlcbiAgICAgKiBjb250YWluZWQuIEVTMjAxNyBgYXN5bmNgIGZ1bmN0aW9ucyBhcmUgcmV0dXJuZWQgYXMtaXMgLS0gdGhleSBhcmUgaW1tdW5lXG4gICAgICogdG8gWmFsZ28ncyBjb3JydXB0aW5nIGluZmx1ZW5jZXMsIGFzIHRoZXkgYWx3YXlzIHJlc29sdmUgb24gYSBsYXRlciB0aWNrLlxuICAgICAqXG4gICAgICogQG5hbWUgZW5zdXJlQXN5bmNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gZm4gLSBhbiBhc3luYyBmdW5jdGlvbiwgb25lIHRoYXQgZXhwZWN0cyBhIG5vZGUtc3R5bGVcbiAgICAgKiBjYWxsYmFjayBhcyBpdHMgbGFzdCBhcmd1bWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gUmV0dXJucyBhIHdyYXBwZWQgZnVuY3Rpb24gd2l0aCB0aGUgZXhhY3Qgc2FtZSBjYWxsXG4gICAgICogc2lnbmF0dXJlIGFzIHRoZSBmdW5jdGlvbiBwYXNzZWQgaW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNvbWV0aW1lc0FzeW5jKGFyZywgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgaWYgKGNhY2hlW2FyZ10pIHtcbiAgICAgKiAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBjYWNoZVthcmddKTsgLy8gdGhpcyB3b3VsZCBiZSBzeW5jaHJvbm91cyEhXG4gICAgICogICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICBkb1NvbWVJTyhhcmcsIGNhbGxiYWNrKTsgLy8gdGhpcyBJTyB3b3VsZCBiZSBhc3luY2hyb25vdXNcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIHRoaXMgaGFzIGEgcmlzayBvZiBzdGFjayBvdmVyZmxvd3MgaWYgbWFueSByZXN1bHRzIGFyZSBjYWNoZWQgaW4gYSByb3dcbiAgICAgKiBhc3luYy5tYXBTZXJpZXMoYXJncywgc29tZXRpbWVzQXN5bmMsIGRvbmUpO1xuICAgICAqXG4gICAgICogLy8gdGhpcyB3aWxsIGRlZmVyIHNvbWV0aW1lc0FzeW5jJ3MgY2FsbGJhY2sgaWYgbmVjZXNzYXJ5LFxuICAgICAqIC8vIHByZXZlbnRpbmcgc3RhY2sgb3ZlcmZsb3dzXG4gICAgICogYXN5bmMubWFwU2VyaWVzKGFyZ3MsIGFzeW5jLmVuc3VyZUFzeW5jKHNvbWV0aW1lc0FzeW5jKSwgZG9uZSk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5zdXJlQXN5bmMoZm4pIHtcbiAgICAgICAgaWYgKGlzQXN5bmMoZm4pKSByZXR1cm4gZm47XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncy8qLCBjYWxsYmFjayovKSB7XG4gICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuICAgICAgICAgICAgdmFyIHN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgYXJncy5wdXNoKCguLi5pbm5lckFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3luYykge1xuICAgICAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUkMSgoKSA9PiBjYWxsYmFjayguLi5pbm5lckFyZ3MpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayguLi5pbm5lckFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICBzeW5jID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgZXZlcnkgZWxlbWVudCBpbiBgY29sbGAgc2F0aXNmaWVzIGFuIGFzeW5jIHRlc3QuIElmIGFueVxuICAgICAqIGl0ZXJhdGVlIGNhbGwgcmV0dXJucyBgZmFsc2VgLCB0aGUgbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGV2ZXJ5XG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGFsaWFzIGFsbFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gICAgICogaW4gdGhlIGNvbGxlY3Rpb24gaW4gcGFyYWxsZWwuXG4gICAgICogVGhlIGl0ZXJhdGVlIG11c3QgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gcmVzdWx0IHZhbHVlLlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gICAgICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gUmVzdWx0IHdpbGwgYmUgZWl0aGVyIGB0cnVlYCBvciBgZmFsc2VgXG4gICAgICogZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jIHRlc3RzLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBwcm92aWRlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBkaXIxIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTEudHh0LCBmaWxlMi50eHRcbiAgICAgKiAvLyBkaXIyIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTMudHh0LCBmaWxlNC50eHRcbiAgICAgKiAvLyBkaXIzIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgZmlsZTUudHh0XG4gICAgICogLy8gZGlyNCBkb2VzIG5vdCBleGlzdFxuICAgICAqXG4gICAgICogY29uc3QgZmlsZUxpc3QgPSBbJ2RpcjEvZmlsZTEudHh0JywnZGlyMi9maWxlMy50eHQnLCdkaXIzL2ZpbGU1LnR4dCddO1xuICAgICAqIGNvbnN0IHdpdGhNaXNzaW5nRmlsZUxpc3QgPSBbJ2ZpbGUxLnR4dCcsJ2ZpbGUyLnR4dCcsJ2ZpbGU0LnR4dCddO1xuICAgICAqXG4gICAgICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgZmlsZSBleGlzdHNcbiAgICAgKiBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgZnMuYWNjZXNzKGZpbGUsIGZzLmNvbnN0YW50cy5GX09LLCAoZXJyKSA9PiB7XG4gICAgICogICAgICAgIGNhbGxiYWNrKG51bGwsICFlcnIpO1xuICAgICAqICAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICAgICAqIGFzeW5jLmV2ZXJ5KGZpbGVMaXN0LCBmaWxlRXhpc3RzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAvLyB0cnVlXG4gICAgICogICAgIC8vIHJlc3VsdCBpcyB0cnVlIHNpbmNlIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3luYy5ldmVyeSh3aXRoTWlzc2luZ0ZpbGVMaXN0LCBmaWxlRXhpc3RzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAvLyBmYWxzZVxuICAgICAqICAgICAvLyByZXN1bHQgaXMgZmFsc2Ugc2luY2UgTk9UIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBQcm9taXNlc1xuICAgICAqIGFzeW5jLmV2ZXJ5KGZpbGVMaXN0LCBmaWxlRXhpc3RzKVxuICAgICAqIC50aGVuKCByZXN1bHQgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAvLyB0cnVlXG4gICAgICogICAgIC8vIHJlc3VsdCBpcyB0cnVlIHNpbmNlIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gICAgICogfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3luYy5ldmVyeSh3aXRoTWlzc2luZ0ZpbGVMaXN0LCBmaWxlRXhpc3RzKVxuICAgICAqIC50aGVuKCByZXN1bHQgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAvLyBmYWxzZVxuICAgICAqICAgICAvLyByZXN1bHQgaXMgZmFsc2Ugc2luY2UgTk9UIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gICAgICogfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy5ldmVyeShmaWxlTGlzdCwgZmlsZUV4aXN0cyk7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAgICAgLy8gdHJ1ZVxuICAgICAqICAgICAgICAgLy8gcmVzdWx0IGlzIHRydWUgc2luY2UgZXZlcnkgZmlsZSBleGlzdHNcbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLmV2ZXJ5KHdpdGhNaXNzaW5nRmlsZUxpc3QsIGZpbGVFeGlzdHMpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgICAgIC8vIGZhbHNlXG4gICAgICogICAgICAgICAvLyByZXN1bHQgaXMgZmFsc2Ugc2luY2UgTk9UIGV2ZXJ5IGZpbGUgZXhpc3RzXG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV2ZXJ5KGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gX2NyZWF0ZVRlc3Rlcihib29sID0+ICFib29sLCByZXMgPT4gIXJlcykoZWFjaE9mJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG4gICAgdmFyIGV2ZXJ5JDEgPSBhd2FpdGlmeShldmVyeSwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYGV2ZXJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIGV2ZXJ5TGltaXRcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5ldmVyeV17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fVxuICAgICAqIEBhbGlhcyBhbGxMaW1pdFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbVxuICAgICAqIGluIHRoZSBjb2xsZWN0aW9uIGluIHBhcmFsbGVsLlxuICAgICAqIFRoZSBpdGVyYXRlZSBtdXN0IGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHJlc3VsdCB2YWx1ZS5cbiAgICAgKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICAgICAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCB3aWxsIGJlIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYFxuICAgICAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luYyB0ZXN0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgcHJvdmlkZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldmVyeUxpbWl0KGNvbGwsIGxpbWl0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIF9jcmVhdGVUZXN0ZXIoYm9vbCA9PiAhYm9vbCwgcmVzID0+ICFyZXMpKGVhY2hPZkxpbWl0KGxpbWl0KSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cbiAgICB2YXIgZXZlcnlMaW1pdCQxID0gYXdhaXRpZnkoZXZlcnlMaW1pdCwgNCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYGV2ZXJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBldmVyeVNlcmllc1xuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLmV2ZXJ5XXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZXZlcnl9XG4gICAgICogQGFsaWFzIGFsbFNlcmllc1xuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gICAgICogaW4gdGhlIGNvbGxlY3Rpb24gaW4gc2VyaWVzLlxuICAgICAqIFRoZSBpdGVyYXRlZSBtdXN0IGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHJlc3VsdCB2YWx1ZS5cbiAgICAgKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICAgICAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCB3aWxsIGJlIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYFxuICAgICAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luYyB0ZXN0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgcHJvdmlkZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldmVyeVNlcmllcyhjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIF9jcmVhdGVUZXN0ZXIoYm9vbCA9PiAhYm9vbCwgcmVzID0+ICFyZXMpKGVhY2hPZlNlcmllcyQxLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuICAgIHZhciBldmVyeVNlcmllcyQxID0gYXdhaXRpZnkoZXZlcnlTZXJpZXMsIDMpO1xuXG4gICAgZnVuY3Rpb24gZmlsdGVyQXJyYXkoZWFjaGZuLCBhcnIsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgdHJ1dGhWYWx1ZXMgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gICAgICAgIGVhY2hmbihhcnIsICh4LCBpbmRleCwgaXRlckNiKSA9PiB7XG4gICAgICAgICAgICBpdGVyYXRlZSh4LCAoZXJyLCB2KSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ1dGhWYWx1ZXNbaW5kZXhdID0gISF2O1xuICAgICAgICAgICAgICAgIGl0ZXJDYihlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0cnV0aFZhbHVlc1tpXSkgcmVzdWx0cy5wdXNoKGFycltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmlsdGVyR2VuZXJpYyhlYWNoZm4sIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgICBlYWNoZm4oY29sbCwgKHgsIGluZGV4LCBpdGVyQ2IpID0+IHtcbiAgICAgICAgICAgIGl0ZXJhdGVlKHgsIChlcnIsIHYpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gaXRlckNiKGVycik7XG4gICAgICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHtpbmRleCwgdmFsdWU6IHh9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXRlckNiKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0c1xuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleClcbiAgICAgICAgICAgICAgICAubWFwKHYgPT4gdi52YWx1ZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfZmlsdGVyKGVhY2hmbiwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBmaWx0ZXIgPSBpc0FycmF5TGlrZShjb2xsKSA/IGZpbHRlckFycmF5IDogZmlsdGVyR2VuZXJpYztcbiAgICAgICAgcmV0dXJuIGZpbHRlcihlYWNoZm4sIGNvbGwsIHdyYXBBc3luYyhpdGVyYXRlZSksIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IGFycmF5IG9mIGFsbCB0aGUgdmFsdWVzIGluIGBjb2xsYCB3aGljaCBwYXNzIGFuIGFzeW5jIHRydXRoXG4gICAgICogdGVzdC4gVGhpcyBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIGluIHBhcmFsbGVsLCBidXQgdGhlIHJlc3VsdHMgYXJyYXkgd2lsbCBiZVxuICAgICAqIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBvcmlnaW5hbC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGZpbHRlclxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBhbGlhcyBzZWxlY3RcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gICAgICogVGhlIGBpdGVyYXRlZWAgaXMgcGFzc2VkIGEgYGNhbGxiYWNrKGVyciwgdHJ1dGhWYWx1ZSlgLCB3aGljaCBtdXN0IGJlIGNhbGxlZFxuICAgICAqIHdpdGggYSBib29sZWFuIGFyZ3VtZW50IG9uY2UgaXQgaGFzIGNvbXBsZXRlZC4gSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgcHJvdmlkZWRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gZGlyMSBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUxLnR4dCwgZmlsZTIudHh0XG4gICAgICogLy8gZGlyMiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGUzLnR4dCwgZmlsZTQudHh0XG4gICAgICogLy8gZGlyMyBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGZpbGU1LnR4dFxuICAgICAqXG4gICAgICogY29uc3QgZmlsZXMgPSBbJ2RpcjEvZmlsZTEudHh0JywnZGlyMi9maWxlMy50eHQnLCdkaXIzL2ZpbGU2LnR4dCddO1xuICAgICAqXG4gICAgICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgZmlsZSBleGlzdHNcbiAgICAgKiBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgZnMuYWNjZXNzKGZpbGUsIGZzLmNvbnN0YW50cy5GX09LLCAoZXJyKSA9PiB7XG4gICAgICogICAgICAgIGNhbGxiYWNrKG51bGwsICFlcnIpO1xuICAgICAqICAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICAgICAqIGFzeW5jLmZpbHRlcihmaWxlcywgZmlsZUV4aXN0cywgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgaWYoZXJyKSB7XG4gICAgICogICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgfSBlbHNlIHtcbiAgICAgKiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgIC8vIFsgJ2RpcjEvZmlsZTEudHh0JywgJ2RpcjIvZmlsZTMudHh0JyBdXG4gICAgICogICAgICAgIC8vIHJlc3VsdHMgaXMgbm93IGFuIGFycmF5IG9mIHRoZSBleGlzdGluZyBmaWxlc1xuICAgICAqICAgIH1cbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMuZmlsdGVyKGZpbGVzLCBmaWxlRXhpc3RzKVxuICAgICAqIC50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiAgICAgLy8gWyAnZGlyMS9maWxlMS50eHQnLCAnZGlyMi9maWxlMy50eHQnIF1cbiAgICAgKiAgICAgLy8gcmVzdWx0cyBpcyBub3cgYW4gYXJyYXkgb2YgdGhlIGV4aXN0aW5nIGZpbGVzXG4gICAgICogfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5maWx0ZXIoZmlsZXMsIGZpbGVFeGlzdHMpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAvLyBbICdkaXIxL2ZpbGUxLnR4dCcsICdkaXIyL2ZpbGUzLnR4dCcgXVxuICAgICAqICAgICAgICAgLy8gcmVzdWx0cyBpcyBub3cgYW4gYXJyYXkgb2YgdGhlIGV4aXN0aW5nIGZpbGVzXG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbHRlciAoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBfZmlsdGVyKGVhY2hPZiQxLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuICAgIHZhciBmaWx0ZXIkMSA9IGF3YWl0aWZ5KGZpbHRlciwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYGZpbHRlcmBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5maWx0ZXJ9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICAgICAqIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBmaWx0ZXJMaW1pdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLmZpbHRlcl17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmZpbHRlcn1cbiAgICAgKiBAYWxpYXMgc2VsZWN0TGltaXRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLlxuICAgICAqIFRoZSBgaXRlcmF0ZWVgIGlzIHBhc3NlZCBhIGBjYWxsYmFjayhlcnIsIHRydXRoVmFsdWUpYCwgd2hpY2ggbXVzdCBiZSBjYWxsZWRcbiAgICAgKiB3aXRoIGEgYm9vbGVhbiBhcmd1bWVudCBvbmNlIGl0IGhhcyBjb21wbGV0ZWQuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gICAgICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsdGVyTGltaXQgKGNvbGwsIGxpbWl0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIF9maWx0ZXIoZWFjaE9mTGltaXQobGltaXQpLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuICAgIHZhciBmaWx0ZXJMaW1pdCQxID0gYXdhaXRpZnkoZmlsdGVyTGltaXQsIDQpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMgW2BmaWx0ZXJgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZmlsdGVyfSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBmaWx0ZXJTZXJpZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5maWx0ZXJde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5maWx0ZXJ9XG4gICAgICogQGFsaWFzIHNlbGVjdFNlcmllc1xuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYC5cbiAgICAgKiBUaGUgYGl0ZXJhdGVlYCBpcyBwYXNzZWQgYSBgY2FsbGJhY2soZXJyLCB0cnV0aFZhbHVlKWAsIHdoaWNoIG11c3QgYmUgY2FsbGVkXG4gICAgICogd2l0aCBhIGJvb2xlYW4gYXJndW1lbnQgb25jZSBpdCBoYXMgY29tcGxldGVkLiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICAgICAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsdGVyU2VyaWVzIChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIF9maWx0ZXIoZWFjaE9mU2VyaWVzJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG4gICAgdmFyIGZpbHRlclNlcmllcyQxID0gYXdhaXRpZnkoZmlsdGVyU2VyaWVzLCAzKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxzIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24gYGZuYCB3aXRoIGEgY2FsbGJhY2sgcGFyYW1ldGVyIHRoYXQgYWxsb3dzIGl0XG4gICAgICogdG8gY2FsbCBpdHNlbGYgYWdhaW4sIGluIHNlcmllcywgaW5kZWZpbml0ZWx5LlxuXG4gICAgICogSWYgYW4gZXJyb3IgaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayB0aGVuIGBlcnJiYWNrYCBpcyBjYWxsZWQgd2l0aCB0aGVcbiAgICAgKiBlcnJvciwgYW5kIGV4ZWN1dGlvbiBzdG9wcywgb3RoZXJ3aXNlIGl0IHdpbGwgbmV2ZXIgYmUgY2FsbGVkLlxuICAgICAqXG4gICAgICogQG5hbWUgZm9yZXZlclxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gICAgICogQG1ldGhvZFxuICAgICAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gYW4gYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCByZXBlYXRlZGx5LlxuICAgICAqIEludm9rZWQgd2l0aCAobmV4dCkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2VycmJhY2tdIC0gd2hlbiBgZm5gIHBhc3NlcyBhbiBlcnJvciB0byBpdCdzIGNhbGxiYWNrLFxuICAgICAqIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQsIGFuZCBleGVjdXRpb24gc3RvcHMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlIHRoYXQgcmVqZWN0cyBpZiBhbiBlcnJvciBvY2N1cnMgYW5kIGFuIGVycmJhY2tcbiAgICAgKiBpcyBub3QgcGFzc2VkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGFzeW5jLmZvcmV2ZXIoXG4gICAgICogICAgIGZ1bmN0aW9uKG5leHQpIHtcbiAgICAgKiAgICAgICAgIC8vIG5leHQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gdGhpbmdzIHRoYXQgbmVlZCBhIGNhbGxiYWNrKGVyciBbLCB3aGF0ZXZlcl0pO1xuICAgICAqICAgICAgICAgLy8gaXQgd2lsbCByZXN1bHQgaW4gdGhpcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgYWdhaW4uXG4gICAgICogICAgIH0sXG4gICAgICogICAgIGZ1bmN0aW9uKGVycikge1xuICAgICAqICAgICAgICAgLy8gaWYgbmV4dCBpcyBjYWxsZWQgd2l0aCBhIHZhbHVlIGluIGl0cyBmaXJzdCBwYXJhbWV0ZXIsIGl0IHdpbGwgYXBwZWFyXG4gICAgICogICAgICAgICAvLyBpbiBoZXJlIGFzICdlcnInLCBhbmQgZXhlY3V0aW9uIHdpbGwgc3RvcC5cbiAgICAgKiAgICAgfVxuICAgICAqICk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yZXZlcihmbiwgZXJyYmFjaykge1xuICAgICAgICB2YXIgZG9uZSA9IG9ubHlPbmNlKGVycmJhY2spO1xuICAgICAgICB2YXIgdGFzayA9IHdyYXBBc3luYyhlbnN1cmVBc3luYyhmbikpO1xuXG4gICAgICAgIGZ1bmN0aW9uIG5leHQoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVybjtcbiAgICAgICAgICAgIHRhc2sobmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgdmFyIGZvcmV2ZXIkMSA9IGF3YWl0aWZ5KGZvcmV2ZXIsIDIpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMgW2Bncm91cEJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmdyb3VwQnl9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgZ3JvdXBCeUxpbWl0XG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMuZ3JvdXBCeV17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmdyb3VwQnl9XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICAgICAqIGBjb2xsYC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSBga2V5YCB0byBncm91cCB0aGUgdmFsdWUgdW5kZXIuXG4gICAgICogSW52b2tlZCB3aXRoICh2YWx1ZSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gICAgICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gUmVzdWx0IGlzIGFuIGBPYmplY3RgIHdob3Nlc1xuICAgICAqIHByb3BlcnRpZXMgYXJlIGFycmF5cyBvZiB2YWx1ZXMgd2hpY2ggcmV0dXJuZWQgdGhlIGNvcnJlc3BvbmRpbmcga2V5LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdyb3VwQnlMaW1pdChjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMoaXRlcmF0ZWUpO1xuICAgICAgICByZXR1cm4gbWFwTGltaXQkMShjb2xsLCBsaW1pdCwgKHZhbCwgaXRlckNiKSA9PiB7XG4gICAgICAgICAgICBfaXRlcmF0ZWUodmFsLCAoZXJyLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gaXRlckNiKGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJDYihlcnIsIHtrZXksIHZhbH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIChlcnIsIG1hcFJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgICAgICAgIC8vIGZyb20gTUROLCBoYW5kbGUgb2JqZWN0IGhhdmluZyBhbiBgaGFzT3duUHJvcGVydHlgIHByb3BcbiAgICAgICAgICAgIHZhciB7aGFzT3duUHJvcGVydHl9ID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXBSZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hcFJlc3VsdHNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHtrZXl9ID0gbWFwUmVzdWx0c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHt2YWx9ID0gbWFwUmVzdWx0c1tpXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW3ZhbF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBncm91cEJ5TGltaXQkMSA9IGF3YWl0aWZ5KGdyb3VwQnlMaW1pdCwgNCk7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCwgd2hlcmUgZWFjaCB2YWx1ZSBjb3JyZXNwb25kcyB0byBhbiBhcnJheSBvZiBpdGVtcywgZnJvbVxuICAgICAqIGBjb2xsYCwgdGhhdCByZXR1cm5lZCB0aGUgY29ycmVzcG9uZGluZyBrZXkuIFRoYXQgaXMsIHRoZSBrZXlzIG9mIHRoZSBvYmplY3RcbiAgICAgKiBjb3JyZXNwb25kIHRvIHRoZSB2YWx1ZXMgcGFzc2VkIHRvIHRoZSBgaXRlcmF0ZWVgIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogTm90ZTogU2luY2UgdGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBgaXRlcmF0ZWVgIHRvIGVhY2ggaXRlbSBpbiBwYXJhbGxlbCxcbiAgICAgKiB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbnMgd2lsbCBjb21wbGV0ZSBpbiBvcmRlci5cbiAgICAgKiBIb3dldmVyLCB0aGUgdmFsdWVzIGZvciBlYWNoIGtleSBpbiB0aGUgYHJlc3VsdGAgd2lsbCBiZSBpbiB0aGUgc2FtZSBvcmRlciBhc1xuICAgICAqIHRoZSBvcmlnaW5hbCBgY29sbGAuIEZvciBPYmplY3RzLCB0aGUgdmFsdWVzIHdpbGwgcm91Z2hseSBiZSBpbiB0aGUgb3JkZXIgb2ZcbiAgICAgKiB0aGUgb3JpZ2luYWwgT2JqZWN0cycga2V5cyAoYnV0IHRoaXMgY2FuIHZhcnkgYWNyb3NzIEphdmFTY3JpcHQgZW5naW5lcykuXG4gICAgICpcbiAgICAgKiBAbmFtZSBncm91cEJ5XG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gICAgICogYGNvbGxgLlxuICAgICAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGBrZXlgIHRvIGdyb3VwIHRoZSB2YWx1ZSB1bmRlci5cbiAgICAgKiBJbnZva2VkIHdpdGggKHZhbHVlLCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAgICAgKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHQgaXMgYW4gYE9iamVjdGAgd2hvc2VzXG4gICAgICogcHJvcGVydGllcyBhcmUgYXJyYXlzIG9mIHZhbHVlcyB3aGljaCByZXR1cm5lZCB0aGUgY29ycmVzcG9uZGluZyBrZXkuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIGRpcjEgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMS50eHQsIGZpbGUyLnR4dFxuICAgICAqIC8vIGRpcjIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMy50eHQsIGZpbGU0LnR4dFxuICAgICAqIC8vIGRpcjMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlNS50eHRcbiAgICAgKiAvLyBkaXI0IGRvZXMgbm90IGV4aXN0XG4gICAgICpcbiAgICAgKiBjb25zdCBmaWxlcyA9IFsnZGlyMS9maWxlMS50eHQnLCdkaXIyJywnZGlyNCddXG4gICAgICpcbiAgICAgKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBkZXRlY3RzIGZpbGUgdHlwZSBhcyBub25lLCBmaWxlLCBvciBkaXJlY3RvcnlcbiAgICAgKiBmdW5jdGlvbiBkZXRlY3RGaWxlKGZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGZzLnN0YXQoZmlsZSwgZnVuY3Rpb24oZXJyLCBzdGF0KSB7XG4gICAgICogICAgICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsICdub25lJyk7XG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCBzdGF0LmlzRGlyZWN0b3J5KCkgPyAnZGlyZWN0b3J5JyA6ICdmaWxlJyk7XG4gICAgICogICAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vVXNpbmcgY2FsbGJhY2tzXG4gICAgICogYXN5bmMuZ3JvdXBCeShmaWxlcywgZGV0ZWN0RmlsZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgaWYoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9IGVsc2Uge1xuICAgICAqXHQgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgICAgIC8vIHtcbiAgICAgKiAgICAgICAgIC8vICAgICBmaWxlOiBbICdkaXIxL2ZpbGUxLnR4dCcgXSxcbiAgICAgKiAgICAgICAgIC8vICAgICBub25lOiBbICdkaXI0JyBdLFxuICAgICAqICAgICAgICAgLy8gICAgIGRpcmVjdG9yeTogWyAnZGlyMiddXG4gICAgICogICAgICAgICAvLyB9XG4gICAgICogICAgICAgICAvLyByZXN1bHQgaXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpbGVzIGdyb3VwZWQgYnkgdHlwZVxuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBQcm9taXNlc1xuICAgICAqIGFzeW5jLmdyb3VwQnkoZmlsZXMsIGRldGVjdEZpbGUpXG4gICAgICogLnRoZW4oIHJlc3VsdCA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgIC8vIHtcbiAgICAgKiAgICAgLy8gICAgIGZpbGU6IFsgJ2RpcjEvZmlsZTEudHh0JyBdLFxuICAgICAqICAgICAvLyAgICAgbm9uZTogWyAnZGlyNCcgXSxcbiAgICAgKiAgICAgLy8gICAgIGRpcmVjdG9yeTogWyAnZGlyMiddXG4gICAgICogICAgIC8vIH1cbiAgICAgKiAgICAgLy8gcmVzdWx0IGlzIG9iamVjdCBjb250YWluaW5nIHRoZSBmaWxlcyBncm91cGVkIGJ5IHR5cGVcbiAgICAgKiB9KS5jYXRjaCggZXJyID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLmdyb3VwQnkoZmlsZXMsIGRldGVjdEZpbGUpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgICAgIC8vIHtcbiAgICAgKiAgICAgICAgIC8vICAgICBmaWxlOiBbICdkaXIxL2ZpbGUxLnR4dCcgXSxcbiAgICAgKiAgICAgICAgIC8vICAgICBub25lOiBbICdkaXI0JyBdLFxuICAgICAqICAgICAgICAgLy8gICAgIGRpcmVjdG9yeTogWyAnZGlyMiddXG4gICAgICogICAgICAgICAvLyB9XG4gICAgICogICAgICAgICAvLyByZXN1bHQgaXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpbGVzIGdyb3VwZWQgYnkgdHlwZVxuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBncm91cEJ5IChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwQnlMaW1pdCQxKGNvbGwsIEluZmluaXR5LCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMgW2Bncm91cEJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmdyb3VwQnl9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIGdyb3VwQnlTZXJpZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5ncm91cEJ5XXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZ3JvdXBCeX1cbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAgICAgKiBgY29sbGAuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYGtleWAgdG8gZ3JvdXAgdGhlIHZhbHVlIHVuZGVyLlxuICAgICAqIEludm9rZWQgd2l0aCAodmFsdWUsIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGwgYGl0ZXJhdGVlYFxuICAgICAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdCBpcyBhbiBgT2JqZWN0YCB3aG9zZVxuICAgICAqIHByb3BlcnRpZXMgYXJlIGFycmF5cyBvZiB2YWx1ZXMgd2hpY2ggcmV0dXJuZWQgdGhlIGNvcnJlc3BvbmRpbmcga2V5LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdyb3VwQnlTZXJpZXMgKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gZ3JvdXBCeUxpbWl0JDEoY29sbCwgMSwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvZ3MgdGhlIHJlc3VsdCBvZiBhbiBgYXN5bmNgIGZ1bmN0aW9uIHRvIHRoZSBgY29uc29sZWAuIE9ubHkgd29ya3MgaW5cbiAgICAgKiBOb2RlLmpzIG9yIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBgY29uc29sZS5sb2dgIGFuZCBgY29uc29sZS5lcnJvcmAgKHN1Y2hcbiAgICAgKiBhcyBGRiBhbmQgQ2hyb21lKS4gSWYgbXVsdGlwbGUgYXJndW1lbnRzIGFyZSByZXR1cm5lZCBmcm9tIHRoZSBhc3luY1xuICAgICAqIGZ1bmN0aW9uLCBgY29uc29sZS5sb2dgIGlzIGNhbGxlZCBvbiBlYWNoIGFyZ3VtZW50IGluIG9yZGVyLlxuICAgICAqXG4gICAgICogQG5hbWUgbG9nXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZ1bmN0aW9uIC0gVGhlIGZ1bmN0aW9uIHlvdSB3YW50IHRvIGV2ZW50dWFsbHkgYXBwbHlcbiAgICAgKiBhbGwgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gYXJndW1lbnRzLi4uIC0gQW55IG51bWJlciBvZiBhcmd1bWVudHMgdG8gYXBwbHkgdG8gdGhlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBpbiBhIG1vZHVsZVxuICAgICAqIHZhciBoZWxsbyA9IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCAnaGVsbG8gJyArIG5hbWUpO1xuICAgICAqICAgICB9LCAxMDAwKTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogLy8gaW4gdGhlIG5vZGUgcmVwbFxuICAgICAqIG5vZGU+IGFzeW5jLmxvZyhoZWxsbywgJ3dvcmxkJyk7XG4gICAgICogJ2hlbGxvIHdvcmxkJ1xuICAgICAqL1xuICAgIHZhciBsb2cgPSBjb25zb2xlRnVuYygnbG9nJyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYG1hcFZhbHVlc2Bde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXBWYWx1ZXN9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICAgICAqIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBtYXBWYWx1ZXNMaW1pdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLm1hcFZhbHVlc117QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcFZhbHVlc31cbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIHZhbHVlIGFuZCBrZXlcbiAgICAgKiBpbiBgY29sbGAuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICAgICAqIEludm9rZWQgd2l0aCAodmFsdWUsIGtleSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gICAgICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gYHJlc3VsdGAgaXMgYSBuZXcgb2JqZWN0IGNvbnNpc3RpbmdcbiAgICAgKiBvZiBlYWNoIGtleSBmcm9tIGBvYmpgLCB3aXRoIGVhY2ggdHJhbnNmb3JtZWQgdmFsdWUgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZS5cbiAgICAgKiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBWYWx1ZXNMaW1pdChvYmosIGxpbWl0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrKTtcbiAgICAgICAgdmFyIG5ld09iaiA9IHt9O1xuICAgICAgICB2YXIgX2l0ZXJhdGVlID0gd3JhcEFzeW5jKGl0ZXJhdGVlKTtcbiAgICAgICAgcmV0dXJuIGVhY2hPZkxpbWl0KGxpbWl0KShvYmosICh2YWwsIGtleSwgbmV4dCkgPT4ge1xuICAgICAgICAgICAgX2l0ZXJhdGVlKHZhbCwga2V5LCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIG5leHQoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBlcnIgPT4gY2FsbGJhY2soZXJyLCBuZXdPYmopKTtcbiAgICB9XG5cbiAgICB2YXIgbWFwVmFsdWVzTGltaXQkMSA9IGF3YWl0aWZ5KG1hcFZhbHVlc0xpbWl0LCA0KTtcblxuICAgIC8qKlxuICAgICAqIEEgcmVsYXRpdmUgb2YgW2BtYXBgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfSwgZGVzaWduZWQgZm9yIHVzZSB3aXRoIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBQcm9kdWNlcyBhIG5ldyBPYmplY3QgYnkgbWFwcGluZyBlYWNoIHZhbHVlIG9mIGBvYmpgIHRocm91Z2ggdGhlIGBpdGVyYXRlZWBcbiAgICAgKiBmdW5jdGlvbi4gVGhlIGBpdGVyYXRlZWAgaXMgY2FsbGVkIGVhY2ggYHZhbHVlYCBhbmQgYGtleWAgZnJvbSBgb2JqYCBhbmQgYVxuICAgICAqIGNhbGxiYWNrIGZvciB3aGVuIGl0IGhhcyBmaW5pc2hlZCBwcm9jZXNzaW5nLiBFYWNoIG9mIHRoZXNlIGNhbGxiYWNrcyB0YWtlc1xuICAgICAqIHR3byBhcmd1bWVudHM6IGFuIGBlcnJvcmAsIGFuZCB0aGUgdHJhbnNmb3JtZWQgaXRlbSBmcm9tIGBvYmpgLiBJZiBgaXRlcmF0ZWVgXG4gICAgICogcGFzc2VzIGFuIGVycm9yIHRvIGl0cyBjYWxsYmFjaywgdGhlIG1haW4gYGNhbGxiYWNrYCAoZm9yIHRoZSBgbWFwVmFsdWVzYFxuICAgICAqIGZ1bmN0aW9uKSBpcyBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IuXG4gICAgICpcbiAgICAgKiBOb3RlLCB0aGUgb3JkZXIgb2YgdGhlIGtleXMgaW4gdGhlIHJlc3VsdCBpcyBub3QgZ3VhcmFudGVlZC4gIFRoZSBrZXlzIHdpbGxcbiAgICAgKiBiZSByb3VnaGx5IGluIHRoZSBvcmRlciB0aGV5IGNvbXBsZXRlLCAoYnV0IHRoaXMgaXMgdmVyeSBlbmdpbmUtc3BlY2lmaWMpXG4gICAgICpcbiAgICAgKiBAbmFtZSBtYXBWYWx1ZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdmFsdWUgYW5kIGtleVxuICAgICAqIGluIGBjb2xsYC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIHRyYW5zZm9ybWVkIHZhbHVlIGFzIGl0cyByZXN1bHQuXG4gICAgICogSW52b2tlZCB3aXRoICh2YWx1ZSwga2V5LCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAgICAgKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBgcmVzdWx0YCBpcyBhIG5ldyBvYmplY3QgY29uc2lzdGluZ1xuICAgICAqIG9mIGVhY2gga2V5IGZyb20gYG9iamAsIHdpdGggZWFjaCB0cmFuc2Zvcm1lZCB2YWx1ZSBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlLlxuICAgICAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBmaWxlMS50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMTAwMCBieXRlcyBpbiBzaXplXG4gICAgICogLy8gZmlsZTIudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDIwMDAgYnl0ZXMgaW4gc2l6ZVxuICAgICAqIC8vIGZpbGUzLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAzMDAwIGJ5dGVzIGluIHNpemVcbiAgICAgKiAvLyBmaWxlNC50eHQgZG9lcyBub3QgZXhpc3RcbiAgICAgKlxuICAgICAqIGNvbnN0IGZpbGVNYXAgPSB7XG4gICAgICogICAgIGYxOiAnZmlsZTEudHh0JyxcbiAgICAgKiAgICAgZjI6ICdmaWxlMi50eHQnLFxuICAgICAqICAgICBmMzogJ2ZpbGUzLnR4dCdcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogY29uc3Qgd2l0aE1pc3NpbmdGaWxlTWFwID0ge1xuICAgICAqICAgICBmMTogJ2ZpbGUxLnR4dCcsXG4gICAgICogICAgIGYyOiAnZmlsZTIudHh0JyxcbiAgICAgKiAgICAgZjM6ICdmaWxlNC50eHQnXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgICAqIGZ1bmN0aW9uIGdldEZpbGVTaXplSW5CeXRlcyhmaWxlLCBrZXksIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGZzLnN0YXQoZmlsZSwgZnVuY3Rpb24oZXJyLCBzdGF0KSB7XG4gICAgICogICAgICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCBzdGF0LnNpemUpO1xuICAgICAqICAgICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjYWxsYmFja3NcbiAgICAgKiBhc3luYy5tYXBWYWx1ZXMoZmlsZU1hcCwgZ2V0RmlsZVNpemVJbkJ5dGVzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAqICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9IGVsc2Uge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgICAgIC8vIHJlc3VsdCBpcyBub3cgYSBtYXAgb2YgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAgICAgKiAgICAgICAgIC8vIHtcbiAgICAgKiAgICAgICAgIC8vICAgICBmMTogMTAwMCxcbiAgICAgKiAgICAgICAgIC8vICAgICBmMjogMjAwMCxcbiAgICAgKiAgICAgICAgIC8vICAgICBmMzogMzAwMFxuICAgICAqICAgICAgICAgLy8gfVxuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBFcnJvciBoYW5kbGluZ1xuICAgICAqIGFzeW5jLm1hcFZhbHVlcyh3aXRoTWlzc2luZ0ZpbGVNYXAsIGdldEZpbGVTaXplSW5CeXRlcywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgaWYgKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBQcm9taXNlc1xuICAgICAqIGFzeW5jLm1hcFZhbHVlcyhmaWxlTWFwLCBnZXRGaWxlU2l6ZUluQnl0ZXMpXG4gICAgICogLnRoZW4oIHJlc3VsdCA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgIC8vIHJlc3VsdCBpcyBub3cgYSBtYXAgb2YgZmlsZSBzaXplIGluIGJ5dGVzIGZvciBlYWNoIGZpbGUsIGUuZy5cbiAgICAgKiAgICAgLy8ge1xuICAgICAqICAgICAvLyAgICAgZjE6IDEwMDAsXG4gICAgICogICAgIC8vICAgICBmMjogMjAwMCxcbiAgICAgKiAgICAgLy8gICAgIGYzOiAzMDAwXG4gICAgICogICAgIC8vIH1cbiAgICAgKiB9KS5jYXRjaCAoZXJyID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIEVycm9yIEhhbmRsaW5nXG4gICAgICogYXN5bmMubWFwVmFsdWVzKHdpdGhNaXNzaW5nRmlsZU1hcCwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICAgICAqIC50aGVuKCByZXN1bHQgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqIH0pLmNhdGNoIChlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmMubWFwVmFsdWVzKGZpbGVNYXAsIGdldEZpbGVTaXplSW5CeXRlcyk7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAgICAgLy8gcmVzdWx0IGlzIG5vdyBhIG1hcCBvZiBmaWxlIHNpemUgaW4gYnl0ZXMgZm9yIGVhY2ggZmlsZSwgZS5nLlxuICAgICAqICAgICAgICAgLy8ge1xuICAgICAqICAgICAgICAgLy8gICAgIGYxOiAxMDAwLFxuICAgICAqICAgICAgICAgLy8gICAgIGYyOiAyMDAwLFxuICAgICAqICAgICAgICAgLy8gICAgIGYzOiAzMDAwXG4gICAgICogICAgICAgICAvLyB9XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIEVycm9yIEhhbmRsaW5nXG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGFzeW5jLm1hcFZhbHVlcyh3aXRoTWlzc2luZ0ZpbGVNYXAsIGdldEZpbGVTaXplSW5CeXRlcyk7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgICAgICAvLyBbIEVycm9yOiBFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgXVxuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwVmFsdWVzKG9iaiwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBtYXBWYWx1ZXNMaW1pdCQxKG9iaiwgSW5maW5pdHksIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYG1hcFZhbHVlc2Bde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXBWYWx1ZXN9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG1hcFZhbHVlc1Nlcmllc1xuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLm1hcFZhbHVlc117QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcFZhbHVlc31cbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdmFsdWUgYW5kIGtleVxuICAgICAqIGluIGBjb2xsYC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIHRyYW5zZm9ybWVkIHZhbHVlIGFzIGl0cyByZXN1bHQuXG4gICAgICogSW52b2tlZCB3aXRoICh2YWx1ZSwga2V5LCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAgICAgKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBgcmVzdWx0YCBpcyBhIG5ldyBvYmplY3QgY29uc2lzdGluZ1xuICAgICAqIG9mIGVhY2gga2V5IGZyb20gYG9iamAsIHdpdGggZWFjaCB0cmFuc2Zvcm1lZCB2YWx1ZSBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlLlxuICAgICAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcFZhbHVlc1NlcmllcyhvYmosIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gbWFwVmFsdWVzTGltaXQkMShvYmosIDEsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWNoZXMgdGhlIHJlc3VsdHMgb2YgYW4gYXN5bmMgZnVuY3Rpb24uIFdoZW4gY3JlYXRpbmcgYSBoYXNoIHRvIHN0b3JlXG4gICAgICogZnVuY3Rpb24gcmVzdWx0cyBhZ2FpbnN0LCB0aGUgY2FsbGJhY2sgaXMgb21pdHRlZCBmcm9tIHRoZSBoYXNoIGFuZCBhblxuICAgICAqIG9wdGlvbmFsIGhhc2ggZnVuY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6IGlmIHRoZSBhc3luYyBmdW5jdGlvbiBlcnJzLCB0aGUgcmVzdWx0IHdpbGwgbm90IGJlIGNhY2hlZCBhbmRcbiAgICAgKiBzdWJzZXF1ZW50IGNhbGxzIHdpbGwgY2FsbCB0aGUgd3JhcHBlZCBmdW5jdGlvbi4qKlxuICAgICAqXG4gICAgICogSWYgbm8gaGFzaCBmdW5jdGlvbiBpcyBzcGVjaWZpZWQsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB1c2VkIGFzIGEgaGFzaCBrZXksXG4gICAgICogd2hpY2ggbWF5IHdvcmsgcmVhc29uYWJseSBpZiBpdCBpcyBhIHN0cmluZyBvciBhIGRhdGEgdHlwZSB0aGF0IGNvbnZlcnRzIHRvIGFcbiAgICAgKiBkaXN0aW5jdCBzdHJpbmcuIE5vdGUgdGhhdCBvYmplY3RzIGFuZCBhcnJheXMgd2lsbCBub3QgYmVoYXZlIHJlYXNvbmFibHkuXG4gICAgICogTmVpdGhlciB3aWxsIGNhc2VzIHdoZXJlIHRoZSBvdGhlciBhcmd1bWVudHMgYXJlIHNpZ25pZmljYW50LiBJbiBzdWNoIGNhc2VzLFxuICAgICAqIHNwZWNpZnkgeW91ciBvd24gaGFzaCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSBjYWNoZSBvZiByZXN1bHRzIGlzIGV4cG9zZWQgYXMgdGhlIGBtZW1vYCBwcm9wZXJ0eSBvZiB0aGUgZnVuY3Rpb25cbiAgICAgKiByZXR1cm5lZCBieSBgbWVtb2l6ZWAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBtZW1vaXplXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIHByb3h5IGFuZCBjYWNoZSByZXN1bHRzIGZyb20uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzaGVyIC0gQW4gb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGdlbmVyYXRpbmcgYSBjdXN0b20gaGFzaFxuICAgICAqIGZvciBzdG9yaW5nIHJlc3VsdHMuIEl0IGhhcyBhbGwgdGhlIGFyZ3VtZW50cyBhcHBsaWVkIHRvIGl0IGFwYXJ0IGZyb20gdGhlXG4gICAgICogY2FsbGJhY2ssIGFuZCBtdXN0IGJlIHN5bmNocm9ub3VzLlxuICAgICAqIEByZXR1cm5zIHtBc3luY0Z1bmN0aW9ufSBhIG1lbW9pemVkIHZlcnNpb24gb2YgYGZuYFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2xvd19mbiA9IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAqICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICAgICAqIH07XG4gICAgICogdmFyIGZuID0gYXN5bmMubWVtb2l6ZShzbG93X2ZuKTtcbiAgICAgKlxuICAgICAqIC8vIGZuIGNhbiBub3cgYmUgdXNlZCBhcyBpZiBpdCB3ZXJlIHNsb3dfZm5cbiAgICAgKiBmbignc29tZSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgICogICAgIC8vIGNhbGxiYWNrXG4gICAgICogfSk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZShmbiwgaGFzaGVyID0gdiA9PiB2KSB7XG4gICAgICAgIHZhciBtZW1vID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdmFyIHF1ZXVlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHZhciBfZm4gPSB3cmFwQXN5bmMoZm4pO1xuICAgICAgICB2YXIgbWVtb2l6ZWQgPSBpbml0aWFsUGFyYW1zKChhcmdzLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdmFyIGtleSA9IGhhc2hlciguLi5hcmdzKTtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gbWVtbykge1xuICAgICAgICAgICAgICAgIHNldEltbWVkaWF0ZSQxKCgpID0+IGNhbGxiYWNrKG51bGwsIC4uLm1lbW9ba2V5XSkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgaW4gcXVldWVzKSB7XG4gICAgICAgICAgICAgICAgcXVldWVzW2tleV0ucHVzaChjYWxsYmFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHF1ZXVlc1trZXldID0gW2NhbGxiYWNrXTtcbiAgICAgICAgICAgICAgICBfZm4oLi4uYXJncywgKGVyciwgLi4ucmVzdWx0QXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyAjMTQ2NSBkb24ndCBtZW1vaXplIGlmIGFuIGVycm9yIG9jY3VycmVkXG4gICAgICAgICAgICAgICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZW1vW2tleV0gPSByZXN1bHRBcmdzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBxID0gcXVldWVzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWV1ZXNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcVtpXShlcnIsIC4uLnJlc3VsdEFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtZW1vaXplZC5tZW1vID0gbWVtbztcbiAgICAgICAgbWVtb2l6ZWQudW5tZW1vaXplZCA9IGZuO1xuICAgICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cblxuICAgIC8qKlxuICAgICAqIENhbGxzIGBjYWxsYmFja2Agb24gYSBsYXRlciBsb29wIGFyb3VuZCB0aGUgZXZlbnQgbG9vcC4gSW4gTm9kZS5qcyB0aGlzIGp1c3RcbiAgICAgKiBjYWxscyBgcHJvY2Vzcy5uZXh0VGlja2AuICBJbiB0aGUgYnJvd3NlciBpdCB3aWxsIHVzZSBgc2V0SW1tZWRpYXRlYCBpZlxuICAgICAqIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKWAsIHdoaWNoIG1lYW5zIG90aGVyIGhpZ2hlclxuICAgICAqIHByaW9yaXR5IGV2ZW50cyBtYXkgcHJlY2VkZSB0aGUgZXhlY3V0aW9uIG9mIGBjYWxsYmFja2AuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgYnJvd3Nlci1jb21wYXRpYmlsaXR5IHB1cnBvc2VzLlxuICAgICAqXG4gICAgICogQG5hbWUgbmV4dFRpY2tcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5zZXRJbW1lZGlhdGVde0BsaW5rIG1vZHVsZTpVdGlscy5zZXRJbW1lZGlhdGV9XG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGEgbGF0ZXIgbG9vcCBhcm91bmRcbiAgICAgKiB0aGUgZXZlbnQgbG9vcC4gSW52b2tlZCB3aXRoIChhcmdzLi4uKS5cbiAgICAgKiBAcGFyYW0gey4uLip9IGFyZ3MuLi4gLSBhbnkgbnVtYmVyIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlXG4gICAgICogY2FsbGJhY2sgb24gdGhlIG5leHQgdGljay5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGNhbGxfb3JkZXIgPSBbXTtcbiAgICAgKiBhc3luYy5uZXh0VGljayhmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgY2FsbF9vcmRlci5wdXNoKCd0d28nKTtcbiAgICAgKiAgICAgLy8gY2FsbF9vcmRlciBub3cgZXF1YWxzIFsnb25lJywndHdvJ11cbiAgICAgKiB9KTtcbiAgICAgKiBjYWxsX29yZGVyLnB1c2goJ29uZScpO1xuICAgICAqXG4gICAgICogYXN5bmMuc2V0SW1tZWRpYXRlKGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICogICAgIC8vIGEsIGIsIGFuZCBjIGVxdWFsIDEsIDIsIGFuZCAzXG4gICAgICogfSwgMSwgMiwgMyk7XG4gICAgICovXG4gICAgdmFyIF9kZWZlciQxO1xuXG4gICAgaWYgKGhhc05leHRUaWNrKSB7XG4gICAgICAgIF9kZWZlciQxID0gcHJvY2Vzcy5uZXh0VGljaztcbiAgICB9IGVsc2UgaWYgKGhhc1NldEltbWVkaWF0ZSkge1xuICAgICAgICBfZGVmZXIkMSA9IHNldEltbWVkaWF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBfZGVmZXIkMSA9IGZhbGxiYWNrO1xuICAgIH1cblxuICAgIHZhciBuZXh0VGljayA9IHdyYXAoX2RlZmVyJDEpO1xuXG4gICAgdmFyIHBhcmFsbGVsID0gYXdhaXRpZnkoKGVhY2hmbiwgdGFza3MsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIHZhciByZXN1bHRzID0gaXNBcnJheUxpa2UodGFza3MpID8gW10gOiB7fTtcblxuICAgICAgICBlYWNoZm4odGFza3MsICh0YXNrLCBrZXksIHRhc2tDYikgPT4ge1xuICAgICAgICAgICAgd3JhcEFzeW5jKHRhc2spKChlcnIsIC4uLnJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICBbcmVzdWx0XSA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0c1trZXldID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIHRhc2tDYihlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVyciA9PiBjYWxsYmFjayhlcnIsIHJlc3VsdHMpKTtcbiAgICB9LCAzKTtcblxuICAgIC8qKlxuICAgICAqIFJ1biB0aGUgYHRhc2tzYCBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCwgd2l0aG91dCB3YWl0aW5nIHVudGlsXG4gICAgICogdGhlIHByZXZpb3VzIGZ1bmN0aW9uIGhhcyBjb21wbGV0ZWQuIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHBhc3MgYW4gZXJyb3IgdG9cbiAgICAgKiBpdHMgY2FsbGJhY2ssIHRoZSBtYWluIGBjYWxsYmFja2AgaXMgaW1tZWRpYXRlbHkgY2FsbGVkIHdpdGggdGhlIHZhbHVlIG9mIHRoZVxuICAgICAqIGVycm9yLiBPbmNlIHRoZSBgdGFza3NgIGhhdmUgY29tcGxldGVkLCB0aGUgcmVzdWx0cyBhcmUgcGFzc2VkIHRvIHRoZSBmaW5hbFxuICAgICAqIGBjYWxsYmFja2AgYXMgYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogYHBhcmFsbGVsYCBpcyBhYm91dCBraWNraW5nLW9mZiBJL08gdGFza3MgaW4gcGFyYWxsZWwsIG5vdCBhYm91dFxuICAgICAqIHBhcmFsbGVsIGV4ZWN1dGlvbiBvZiBjb2RlLiAgSWYgeW91ciB0YXNrcyBkbyBub3QgdXNlIGFueSB0aW1lcnMgb3IgcGVyZm9ybVxuICAgICAqIGFueSBJL08sIHRoZXkgd2lsbCBhY3R1YWxseSBiZSBleGVjdXRlZCBpbiBzZXJpZXMuICBBbnkgc3luY2hyb25vdXMgc2V0dXBcbiAgICAgKiBzZWN0aW9ucyBmb3IgZWFjaCB0YXNrIHdpbGwgaGFwcGVuIG9uZSBhZnRlciB0aGUgb3RoZXIuICBKYXZhU2NyaXB0IHJlbWFpbnNcbiAgICAgKiBzaW5nbGUtdGhyZWFkZWQuXG4gICAgICpcbiAgICAgKiAqKkhpbnQ6KiogVXNlIFtgcmVmbGVjdGBde0BsaW5rIG1vZHVsZTpVdGlscy5yZWZsZWN0fSB0byBjb250aW51ZSB0aGVcbiAgICAgKiBleGVjdXRpb24gb2Ygb3RoZXIgdGFza3Mgd2hlbiBhIHRhc2sgZmFpbHMuXG4gICAgICpcbiAgICAgKiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheS4gRWFjaCBwcm9wZXJ0eSB3aWxsXG4gICAgICogYmUgcnVuIGFzIGEgZnVuY3Rpb24gYW5kIHRoZSByZXN1bHRzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBmaW5hbCBgY2FsbGJhY2tgXG4gICAgICogYXMgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXkuIFRoaXMgY2FuIGJlIGEgbW9yZSByZWFkYWJsZSB3YXkgb2YgaGFuZGxpbmdcbiAgICAgKiByZXN1bHRzIGZyb20ge0BsaW5rIGFzeW5jLnBhcmFsbGVsfS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHBhcmFsbGVsXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IHRhc2tzIC0gQSBjb2xsZWN0aW9uIG9mXG4gICAgICogW2FzeW5jIGZ1bmN0aW9uc117QGxpbmsgQXN5bmNGdW5jdGlvbn0gdG8gcnVuLlxuICAgICAqIEVhY2ggYXN5bmMgZnVuY3Rpb24gY2FuIGNvbXBsZXRlIHdpdGggYW55IG51bWJlciBvZiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIHJ1biBvbmNlIGFsbCB0aGVcbiAgICAgKiBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiBUaGlzIGZ1bmN0aW9uIGdldHMgYSByZXN1bHRzIGFycmF5XG4gICAgICogKG9yIG9iamVjdCkgY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB0YXNrIGNhbGxiYWNrcy5cbiAgICAgKiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBub3QgcGFzc2VkXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy9Vc2luZyBDYWxsYmFja3NcbiAgICAgKiBhc3luYy5wYXJhbGxlbChbXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAgICAgKiAgICAgICAgIH0sIDIwMCk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0d28nKTtcbiAgICAgKiAgICAgICAgIH0sIDEwMCk7XG4gICAgICogICAgIH1cbiAgICAgKiBdLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG8gWydvbmUnLCd0d28nXSBldmVuIHRob3VnaFxuICAgICAqICAgICAvLyB0aGUgc2Vjb25kIGZ1bmN0aW9uIGhhZCBhIHNob3J0ZXIgdGltZW91dC5cbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIGFuIGV4YW1wbGUgdXNpbmcgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXlcbiAgICAgKiBhc3luYy5wYXJhbGxlbCh7XG4gICAgICogICAgIG9uZTogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMSk7XG4gICAgICogICAgICAgICB9LCAyMDApO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICB0d286IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIDIpO1xuICAgICAqICAgICAgICAgfSwgMTAwKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0bzogeyBvbmU6IDEsIHR3bzogMiB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvL1VzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMucGFyYWxsZWwoW1xuICAgICAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gICAgICogICAgICAgICB9LCAyMDApO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAndHdvJyk7XG4gICAgICogICAgICAgICB9LCAxMDApO1xuICAgICAqICAgICB9XG4gICAgICogXSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG8gWydvbmUnLCd0d28nXSBldmVuIHRob3VnaFxuICAgICAqICAgICAvLyB0aGUgc2Vjb25kIGZ1bmN0aW9uIGhhZCBhIHNob3J0ZXIgdGltZW91dC5cbiAgICAgKiB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gYW4gZXhhbXBsZSB1c2luZyBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheVxuICAgICAqIGFzeW5jLnBhcmFsbGVsKHtcbiAgICAgKiAgICAgb25lOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAxKTtcbiAgICAgKiAgICAgICAgIH0sIDIwMCk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIHR3bzogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMik7XG4gICAgICogICAgICAgICB9LCAxMDApO1xuICAgICAqICAgICB9XG4gICAgICogfSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG86IHsgb25lOiAxLCB0d286IDIgfVxuICAgICAqIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvL1VzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5wYXJhbGxlbChbXG4gICAgICogICAgICAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAgICAgKiAgICAgICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgKiAgICAgICAgICAgICB9LFxuICAgICAqICAgICAgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAndHdvJyk7XG4gICAgICogICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICogICAgICAgICAgICAgfVxuICAgICAqICAgICAgICAgXSk7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiAgICAgICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG8gWydvbmUnLCd0d28nXSBldmVuIHRob3VnaFxuICAgICAqICAgICAgICAgLy8gdGhlIHNlY29uZCBmdW5jdGlvbiBoYWQgYSBzaG9ydGVyIHRpbWVvdXQuXG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIGFuIGV4YW1wbGUgdXNpbmcgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXlcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLnBhcmFsbGVsKHtcbiAgICAgKiAgICAgICAgICAgICBvbmU6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAxKTtcbiAgICAgKiAgICAgICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgKiAgICAgICAgICAgICB9LFxuICAgICAqICAgICAgICAgICAgdHdvOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMik7XG4gICAgICogICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICogICAgICAgICAgICB9XG4gICAgICogICAgICAgICB9KTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0bzogeyBvbmU6IDEsIHR3bzogMiB9XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcmFsbGVsJDEodGFza3MsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBwYXJhbGxlbChlYWNoT2YkMSwgdGFza3MsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYHBhcmFsbGVsYF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnBhcmFsbGVsfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAgICAgKiB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgcGFyYWxsZWxMaW1pdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLnBhcmFsbGVsXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucGFyYWxsZWx9XG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IHRhc2tzIC0gQSBjb2xsZWN0aW9uIG9mXG4gICAgICogW2FzeW5jIGZ1bmN0aW9uc117QGxpbmsgQXN5bmNGdW5jdGlvbn0gdG8gcnVuLlxuICAgICAqIEVhY2ggYXN5bmMgZnVuY3Rpb24gY2FuIGNvbXBsZXRlIHdpdGggYW55IG51bWJlciBvZiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBvcHRpb25hbCBjYWxsYmFjayB0byBydW4gb25jZSBhbGwgdGhlXG4gICAgICogZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gVGhpcyBmdW5jdGlvbiBnZXRzIGEgcmVzdWx0cyBhcnJheVxuICAgICAqIChvciBvYmplY3QpIGNvbnRhaW5pbmcgYWxsIHRoZSByZXN1bHQgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgdGFzayBjYWxsYmFja3MuXG4gICAgICogSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIGEgY2FsbGJhY2sgaXMgbm90IHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcmFsbGVsTGltaXQodGFza3MsIGxpbWl0LCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gcGFyYWxsZWwoZWFjaE9mTGltaXQobGltaXQpLCB0YXNrcywgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgcXVldWUgb2YgdGFza3MgZm9yIHRoZSB3b3JrZXIgZnVuY3Rpb24gdG8gY29tcGxldGUuXG4gICAgICogQHR5cGVkZWYge0l0ZXJhYmxlfSBRdWV1ZU9iamVjdFxuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAgICAgKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBsZW5ndGggLSBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICAgICogd2FpdGluZyB0byBiZSBwcm9jZXNzZWQuIEludm9rZSB3aXRoIGBxdWV1ZS5sZW5ndGgoKWAuXG4gICAgICogQHByb3BlcnR5IHtib29sZWFufSBzdGFydGVkIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgYW55XG4gICAgICogaXRlbXMgaGF2ZSBiZWVuIHB1c2hlZCBhbmQgcHJvY2Vzc2VkIGJ5IHRoZSBxdWV1ZS5cbiAgICAgKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBydW5uaW5nIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIG51bWJlciBvZiBpdGVtc1xuICAgICAqIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuIEludm9rZSB3aXRoIGBxdWV1ZS5ydW5uaW5nKClgLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHdvcmtlcnNMaXN0IC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGFycmF5IG9mIGl0ZW1zXG4gICAgICogY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gSW52b2tlIHdpdGggYHF1ZXVlLndvcmtlcnNMaXN0KClgLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGlkbGUgLSBhIGZ1bmN0aW9uIHJldHVybmluZyBmYWxzZSBpZiB0aGVyZSBhcmUgaXRlbXNcbiAgICAgKiB3YWl0aW5nIG9yIGJlaW5nIHByb2Nlc3NlZCwgb3IgdHJ1ZSBpZiBub3QuIEludm9rZSB3aXRoIGBxdWV1ZS5pZGxlKClgLlxuICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb25jdXJyZW5jeSAtIGFuIGludGVnZXIgZm9yIGRldGVybWluaW5nIGhvdyBtYW55IGB3b3JrZXJgXG4gICAgICogZnVuY3Rpb25zIHNob3VsZCBiZSBydW4gaW4gcGFyYWxsZWwuIFRoaXMgcHJvcGVydHkgY2FuIGJlIGNoYW5nZWQgYWZ0ZXIgYVxuICAgICAqIGBxdWV1ZWAgaXMgY3JlYXRlZCB0byBhbHRlciB0aGUgY29uY3VycmVuY3kgb24tdGhlLWZseS5cbiAgICAgKiBAcHJvcGVydHkge251bWJlcn0gcGF5bG9hZCAtIGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgaG93IG1hbnkgaXRlbXMgYXJlXG4gICAgICogcGFzc2VkIHRvIHRoZSB3b3JrZXIgZnVuY3Rpb24gYXQgYSB0aW1lLiBvbmx5IGFwcGxpZXMgaWYgdGhpcyBpcyBhXG4gICAgICogW2NhcmdvXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuY2FyZ299IG9iamVjdFxuICAgICAqIEBwcm9wZXJ0eSB7QXN5bmNGdW5jdGlvbn0gcHVzaCAtIGFkZCBhIG5ldyB0YXNrIHRvIHRoZSBgcXVldWVgLiBDYWxscyBgY2FsbGJhY2tgXG4gICAgICogb25jZSB0aGUgYHdvcmtlcmAgaGFzIGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRhc2suIEluc3RlYWQgb2YgYSBzaW5nbGUgdGFzayxcbiAgICAgKiBhIGB0YXNrc2AgYXJyYXkgY2FuIGJlIHN1Ym1pdHRlZC4gVGhlIHJlc3BlY3RpdmUgY2FsbGJhY2sgaXMgdXNlZCBmb3IgZXZlcnlcbiAgICAgKiB0YXNrIGluIHRoZSBsaXN0LiBJbnZva2Ugd2l0aCBgcXVldWUucHVzaCh0YXNrLCBbY2FsbGJhY2tdKWAsXG4gICAgICogQHByb3BlcnR5IHtBc3luY0Z1bmN0aW9ufSB1bnNoaWZ0IC0gYWRkIGEgbmV3IHRhc2sgdG8gdGhlIGZyb250IG9mIHRoZSBgcXVldWVgLlxuICAgICAqIEludm9rZSB3aXRoIGBxdWV1ZS51bnNoaWZ0KHRhc2ssIFtjYWxsYmFja10pYC5cbiAgICAgKiBAcHJvcGVydHkge0FzeW5jRnVuY3Rpb259IHB1c2hBc3luYyAtIHRoZSBzYW1lIGFzIGBxLnB1c2hgLCBleGNlcHQgdGhpcyByZXR1cm5zXG4gICAgICogYSBwcm9taXNlIHRoYXQgcmVqZWN0cyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICogQHByb3BlcnR5IHtBc3luY0Z1bmN0aW9ufSB1bnNoaWZ0QXN5bmMgLSB0aGUgc2FtZSBhcyBgcS51bnNoaWZ0YCwgZXhjZXB0IHRoaXMgcmV0dXJuc1xuICAgICAqIGEgcHJvbWlzZSB0aGF0IHJlamVjdHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHJlbW92ZSAtIHJlbW92ZSBpdGVtcyBmcm9tIHRoZSBxdWV1ZSB0aGF0IG1hdGNoIGEgdGVzdFxuICAgICAqIGZ1bmN0aW9uLiAgVGhlIHRlc3QgZnVuY3Rpb24gd2lsbCBiZSBwYXNzZWQgYW4gb2JqZWN0IHdpdGggYSBgZGF0YWAgcHJvcGVydHksXG4gICAgICogYW5kIGEgYHByaW9yaXR5YCBwcm9wZXJ0eSwgaWYgdGhpcyBpcyBhXG4gICAgICogW3ByaW9yaXR5UXVldWVde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5wcmlvcml0eVF1ZXVlfSBvYmplY3QuXG4gICAgICogSW52b2tlZCB3aXRoIGBxdWV1ZS5yZW1vdmUodGVzdEZuKWAsIHdoZXJlIGB0ZXN0Rm5gIGlzIG9mIHRoZSBmb3JtXG4gICAgICogYGZ1bmN0aW9uICh7ZGF0YSwgcHJpb3JpdHl9KSB7fWAgYW5kIHJldHVybnMgYSBCb29sZWFuLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHNhdHVyYXRlZCAtIGEgZnVuY3Rpb24gdGhhdCBzZXRzIGEgY2FsbGJhY2sgdGhhdCBpc1xuICAgICAqIGNhbGxlZCB3aGVuIHRoZSBudW1iZXIgb2YgcnVubmluZyB3b3JrZXJzIGhpdHMgdGhlIGBjb25jdXJyZW5jeWAgbGltaXQsIGFuZFxuICAgICAqIGZ1cnRoZXIgdGFza3Mgd2lsbCBiZSBxdWV1ZWQuICBJZiB0aGUgY2FsbGJhY2sgaXMgb21pdHRlZCwgYHEuc2F0dXJhdGVkKClgXG4gICAgICogcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSBuZXh0IG9jY3VycmVuY2UuXG4gICAgICogQHByb3BlcnR5IHtGdW5jdGlvbn0gdW5zYXR1cmF0ZWQgLSBhIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIGNhbGxiYWNrIHRoYXQgaXNcbiAgICAgKiBjYWxsZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHJ1bm5pbmcgd29ya2VycyBpcyBsZXNzIHRoYW4gdGhlIGBjb25jdXJyZW5jeWAgJlxuICAgICAqIGBidWZmZXJgIGxpbWl0cywgYW5kIGZ1cnRoZXIgdGFza3Mgd2lsbCBub3QgYmUgcXVldWVkLiBJZiB0aGUgY2FsbGJhY2sgaXNcbiAgICAgKiBvbWl0dGVkLCBgcS51bnNhdHVyYXRlZCgpYCByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIG5leHQgb2NjdXJyZW5jZS5cbiAgICAgKiBAcHJvcGVydHkge251bWJlcn0gYnVmZmVyIC0gQSBtaW5pbXVtIHRocmVzaG9sZCBidWZmZXIgaW4gb3JkZXIgdG8gc2F5IHRoYXRcbiAgICAgKiB0aGUgYHF1ZXVlYCBpcyBgdW5zYXR1cmF0ZWRgLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGVtcHR5IC0gYSBmdW5jdGlvbiB0aGF0IHNldHMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZFxuICAgICAqIHdoZW4gdGhlIGxhc3QgaXRlbSBmcm9tIHRoZSBgcXVldWVgIGlzIGdpdmVuIHRvIGEgYHdvcmtlcmAuIElmIHRoZSBjYWxsYmFja1xuICAgICAqIGlzIG9taXR0ZWQsIGBxLmVtcHR5KClgIHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgbmV4dCBvY2N1cnJlbmNlLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGRyYWluIC0gYSBmdW5jdGlvbiB0aGF0IHNldHMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZFxuICAgICAqIHdoZW4gdGhlIGxhc3QgaXRlbSBmcm9tIHRoZSBgcXVldWVgIGhhcyByZXR1cm5lZCBmcm9tIHRoZSBgd29ya2VyYC4gSWYgdGhlXG4gICAgICogY2FsbGJhY2sgaXMgb21pdHRlZCwgYHEuZHJhaW4oKWAgcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSBuZXh0IG9jY3VycmVuY2UuXG4gICAgICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZXJyb3IgLSBhIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkXG4gICAgICogd2hlbiBhIHRhc2sgZXJyb3JzLiBIYXMgdGhlIHNpZ25hdHVyZSBgZnVuY3Rpb24oZXJyb3IsIHRhc2spYC4gSWYgdGhlXG4gICAgICogY2FsbGJhY2sgaXMgb21pdHRlZCwgYGVycm9yKClgIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVqZWN0cyBvbiB0aGUgbmV4dFxuICAgICAqIGVycm9yLlxuICAgICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcGF1c2VkIC0gYSBib29sZWFuIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBxdWV1ZSBpc1xuICAgICAqIGluIGEgcGF1c2VkIHN0YXRlLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHBhdXNlIC0gYSBmdW5jdGlvbiB0aGF0IHBhdXNlcyB0aGUgcHJvY2Vzc2luZyBvZiB0YXNrc1xuICAgICAqIHVudGlsIGByZXN1bWUoKWAgaXMgY2FsbGVkLiBJbnZva2Ugd2l0aCBgcXVldWUucGF1c2UoKWAuXG4gICAgICogQHByb3BlcnR5IHtGdW5jdGlvbn0gcmVzdW1lIC0gYSBmdW5jdGlvbiB0aGF0IHJlc3VtZXMgdGhlIHByb2Nlc3Npbmcgb2ZcbiAgICAgKiBxdWV1ZWQgdGFza3Mgd2hlbiB0aGUgcXVldWUgaXMgcGF1c2VkLiBJbnZva2Ugd2l0aCBgcXVldWUucmVzdW1lKClgLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGtpbGwgLSBhIGZ1bmN0aW9uIHRoYXQgcmVtb3ZlcyB0aGUgYGRyYWluYCBjYWxsYmFjayBhbmRcbiAgICAgKiBlbXB0aWVzIHJlbWFpbmluZyB0YXNrcyBmcm9tIHRoZSBxdWV1ZSBmb3JjaW5nIGl0IHRvIGdvIGlkbGUuIE5vIG1vcmUgdGFza3NcbiAgICAgKiBzaG91bGQgYmUgcHVzaGVkIHRvIHRoZSBxdWV1ZSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIEludm9rZSB3aXRoIGBxdWV1ZS5raWxsKClgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBxID0gYXN5bmMucXVldWUod29ya2VyLCAyKVxuICAgICAqIHEucHVzaChpdGVtMSlcbiAgICAgKiBxLnB1c2goaXRlbTIpXG4gICAgICogcS5wdXNoKGl0ZW0zKVxuICAgICAqIC8vIHF1ZXVlcyBhcmUgaXRlcmFibGUsIHNwcmVhZCBpbnRvIGFuIGFycmF5IHRvIGluc3BlY3RcbiAgICAgKiBjb25zdCBpdGVtcyA9IFsuLi5xXSAvLyBbaXRlbTEsIGl0ZW0yLCBpdGVtM11cbiAgICAgKiAvLyBvciB1c2UgZm9yIG9mXG4gICAgICogZm9yIChsZXQgaXRlbSBvZiBxKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGl0ZW0pXG4gICAgICogfVxuICAgICAqXG4gICAgICogcS5kcmFpbigoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdhbGwgZG9uZScpXG4gICAgICogfSlcbiAgICAgKiAvLyBvclxuICAgICAqIGF3YWl0IHEuZHJhaW4oKVxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBxdWV1ZWAgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBgY29uY3VycmVuY3lgLiBUYXNrcyBhZGRlZCB0byB0aGVcbiAgICAgKiBgcXVldWVgIGFyZSBwcm9jZXNzZWQgaW4gcGFyYWxsZWwgKHVwIHRvIHRoZSBgY29uY3VycmVuY3lgIGxpbWl0KS4gSWYgYWxsXG4gICAgICogYHdvcmtlcmBzIGFyZSBpbiBwcm9ncmVzcywgdGhlIHRhc2sgaXMgcXVldWVkIHVudGlsIG9uZSBiZWNvbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBPbmNlIGEgYHdvcmtlcmAgY29tcGxldGVzIGEgYHRhc2tgLCB0aGF0IGB0YXNrYCdzIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIHF1ZXVlXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gd29ya2VyIC0gQW4gYXN5bmMgZnVuY3Rpb24gZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZWQgdGFzay5cbiAgICAgKiBJZiB5b3Ugd2FudCB0byBoYW5kbGUgZXJyb3JzIGZyb20gYW4gaW5kaXZpZHVhbCB0YXNrLCBwYXNzIGEgY2FsbGJhY2sgdG9cbiAgICAgKiBgcS5wdXNoKClgLiBJbnZva2VkIHdpdGggKHRhc2ssIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2NvbmN1cnJlbmN5PTFdIC0gQW4gYGludGVnZXJgIGZvciBkZXRlcm1pbmluZyBob3cgbWFueVxuICAgICAqIGB3b3JrZXJgIGZ1bmN0aW9ucyBzaG91bGQgYmUgcnVuIGluIHBhcmFsbGVsLiAgSWYgb21pdHRlZCwgdGhlIGNvbmN1cnJlbmN5XG4gICAgICogZGVmYXVsdHMgdG8gYDFgLiAgSWYgdGhlIGNvbmN1cnJlbmN5IGlzIGAwYCwgYW4gZXJyb3IgaXMgdGhyb3duLlxuICAgICAqIEByZXR1cm5zIHttb2R1bGU6Q29udHJvbEZsb3cuUXVldWVPYmplY3R9IEEgcXVldWUgb2JqZWN0IHRvIG1hbmFnZSB0aGUgdGFza3MuIENhbGxiYWNrcyBjYW4gYmVcbiAgICAgKiBhdHRhY2hlZCBhcyBjZXJ0YWluIHByb3BlcnRpZXMgdG8gbGlzdGVuIGZvciBzcGVjaWZpYyBldmVudHMgZHVyaW5nIHRoZVxuICAgICAqIGxpZmVjeWNsZSBvZiB0aGUgcXVldWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIGNyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGNvbmN1cnJlbmN5IDJcbiAgICAgKiB2YXIgcSA9IGFzeW5jLnF1ZXVlKGZ1bmN0aW9uKHRhc2ssIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdoZWxsbyAnICsgdGFzay5uYW1lKTtcbiAgICAgKiAgICAgY2FsbGJhY2soKTtcbiAgICAgKiB9LCAyKTtcbiAgICAgKlxuICAgICAqIC8vIGFzc2lnbiBhIGNhbGxiYWNrXG4gICAgICogcS5kcmFpbihmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ2FsbCBpdGVtcyBoYXZlIGJlZW4gcHJvY2Vzc2VkJyk7XG4gICAgICogfSk7XG4gICAgICogLy8gb3IgYXdhaXQgdGhlIGVuZFxuICAgICAqIGF3YWl0IHEuZHJhaW4oKVxuICAgICAqXG4gICAgICogLy8gYXNzaWduIGFuIGVycm9yIGNhbGxiYWNrXG4gICAgICogcS5lcnJvcihmdW5jdGlvbihlcnIsIHRhc2spIHtcbiAgICAgKiAgICAgY29uc29sZS5lcnJvcigndGFzayBleHBlcmllbmNlZCBhbiBlcnJvcicpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gYWRkIHNvbWUgaXRlbXMgdG8gdGhlIHF1ZXVlXG4gICAgICogcS5wdXNoKHtuYW1lOiAnZm9vJ30sIGZ1bmN0aW9uKGVycikge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBmb28nKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyBjYWxsYmFjayBpcyBvcHRpb25hbFxuICAgICAqIHEucHVzaCh7bmFtZTogJ2Jhcid9KTtcbiAgICAgKlxuICAgICAqIC8vIGFkZCBzb21lIGl0ZW1zIHRvIHRoZSBxdWV1ZSAoYmF0Y2gtd2lzZSlcbiAgICAgKiBxLnB1c2goW3tuYW1lOiAnYmF6J30se25hbWU6ICdiYXknfSx7bmFtZTogJ2JheCd9XSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdmaW5pc2hlZCBwcm9jZXNzaW5nIGl0ZW0nKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIGFkZCBzb21lIGl0ZW1zIHRvIHRoZSBmcm9udCBvZiB0aGUgcXVldWVcbiAgICAgKiBxLnVuc2hpZnQoe25hbWU6ICdiYXInfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBiYXInKTtcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBxdWV1ZSQxICh3b3JrZXIsIGNvbmN1cnJlbmN5KSB7XG4gICAgICAgIHZhciBfd29ya2VyID0gd3JhcEFzeW5jKHdvcmtlcik7XG4gICAgICAgIHJldHVybiBxdWV1ZSgoaXRlbXMsIGNiKSA9PiB7XG4gICAgICAgICAgICBfd29ya2VyKGl0ZW1zWzBdLCBjYik7XG4gICAgICAgIH0sIGNvbmN1cnJlbmN5LCAxKTtcbiAgICB9XG5cbiAgICAvLyBCaW5hcnkgbWluLWhlYXAgaW1wbGVtZW50YXRpb24gdXNlZCBmb3IgcHJpb3JpdHkgcXVldWUuXG4gICAgLy8gSW1wbGVtZW50YXRpb24gaXMgc3RhYmxlLCBpLmUuIHB1c2ggdGltZSBpcyBjb25zaWRlcmVkIGZvciBlcXVhbCBwcmlvcml0aWVzXG4gICAgY2xhc3MgSGVhcCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgdGhpcy5oZWFwID0gW107XG4gICAgICAgICAgICB0aGlzLnB1c2hDb3VudCA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0IGxlbmd0aCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhlYXAubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgZW1wdHkgKCkge1xuICAgICAgICAgICAgdGhpcy5oZWFwID0gW107XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHBlcmNVcChpbmRleCkge1xuICAgICAgICAgICAgbGV0IHA7XG5cbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA+IDAgJiYgc21hbGxlcih0aGlzLmhlYXBbaW5kZXhdLCB0aGlzLmhlYXBbcD1wYXJlbnQoaW5kZXgpXSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgdCA9IHRoaXMuaGVhcFtpbmRleF07XG4gICAgICAgICAgICAgICAgdGhpcy5oZWFwW2luZGV4XSA9IHRoaXMuaGVhcFtwXTtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYXBbcF0gPSB0O1xuXG4gICAgICAgICAgICAgICAgaW5kZXggPSBwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcGVyY0Rvd24oaW5kZXgpIHtcbiAgICAgICAgICAgIGxldCBsO1xuXG4gICAgICAgICAgICB3aGlsZSAoKGw9bGVmdENoaShpbmRleCkpIDwgdGhpcy5oZWFwLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChsKzEgPCB0aGlzLmhlYXAubGVuZ3RoICYmIHNtYWxsZXIodGhpcy5oZWFwW2wrMV0sIHRoaXMuaGVhcFtsXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbCA9IGwrMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc21hbGxlcih0aGlzLmhlYXBbaW5kZXhdLCB0aGlzLmhlYXBbbF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCB0ID0gdGhpcy5oZWFwW2luZGV4XTtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYXBbaW5kZXhdID0gdGhpcy5oZWFwW2xdO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhcFtsXSA9IHQ7XG5cbiAgICAgICAgICAgICAgICBpbmRleCA9IGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwdXNoKG5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUucHVzaENvdW50ID0gKyt0aGlzLnB1c2hDb3VudDtcbiAgICAgICAgICAgIHRoaXMuaGVhcC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5wZXJjVXAodGhpcy5oZWFwLmxlbmd0aC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVuc2hpZnQobm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGVhcC5wdXNoKG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hpZnQoKSB7XG4gICAgICAgICAgICBsZXQgW3RvcF0gPSB0aGlzLmhlYXA7XG5cbiAgICAgICAgICAgIHRoaXMuaGVhcFswXSA9IHRoaXMuaGVhcFt0aGlzLmhlYXAubGVuZ3RoLTFdO1xuICAgICAgICAgICAgdGhpcy5oZWFwLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy5wZXJjRG93bigwKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvQXJyYXkoKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLnRoaXNdO1xuICAgICAgICB9XG5cbiAgICAgICAgKltTeW1ib2wuaXRlcmF0b3JdICgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5oZWFwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgdGhpcy5oZWFwW2ldLmRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZW1vdmUgKHRlc3RGbikge1xuICAgICAgICAgICAgbGV0IGogPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmhlYXAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRlc3RGbih0aGlzLmhlYXBbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhcFtqXSA9IHRoaXMuaGVhcFtpXTtcbiAgICAgICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5oZWFwLnNwbGljZShqKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBhcmVudCh0aGlzLmhlYXAubGVuZ3RoLTEpOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVyY0Rvd24oaSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGVmdENoaShpKSB7XG4gICAgICAgIHJldHVybiAoaTw8MSkrMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJlbnQoaSkge1xuICAgICAgICByZXR1cm4gKChpKzEpPj4xKS0xO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNtYWxsZXIoeCwgeSkge1xuICAgICAgICBpZiAoeC5wcmlvcml0eSAhPT0geS5wcmlvcml0eSkge1xuICAgICAgICAgICAgcmV0dXJuIHgucHJpb3JpdHkgPCB5LnByaW9yaXR5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHgucHVzaENvdW50IDwgeS5wdXNoQ291bnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYXN5bmMucXVldWVde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX0gb25seSB0YXNrcyBhcmUgYXNzaWduZWQgYSBwcmlvcml0eSBhbmRcbiAgICAgKiBjb21wbGV0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5IG9yZGVyLlxuICAgICAqXG4gICAgICogQG5hbWUgcHJpb3JpdHlRdWV1ZVxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLnF1ZXVlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucXVldWV9XG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gd29ya2VyIC0gQW4gYXN5bmMgZnVuY3Rpb24gZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZWQgdGFzay5cbiAgICAgKiBJZiB5b3Ugd2FudCB0byBoYW5kbGUgZXJyb3JzIGZyb20gYW4gaW5kaXZpZHVhbCB0YXNrLCBwYXNzIGEgY2FsbGJhY2sgdG9cbiAgICAgKiBgcS5wdXNoKClgLlxuICAgICAqIEludm9rZWQgd2l0aCAodGFzaywgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb25jdXJyZW5jeSAtIEFuIGBpbnRlZ2VyYCBmb3IgZGV0ZXJtaW5pbmcgaG93IG1hbnkgYHdvcmtlcmBcbiAgICAgKiBmdW5jdGlvbnMgc2hvdWxkIGJlIHJ1biBpbiBwYXJhbGxlbC4gIElmIG9taXR0ZWQsIHRoZSBjb25jdXJyZW5jeSBkZWZhdWx0cyB0b1xuICAgICAqIGAxYC4gIElmIHRoZSBjb25jdXJyZW5jeSBpcyBgMGAsIGFuIGVycm9yIGlzIHRocm93bi5cbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOkNvbnRyb2xGbG93LlF1ZXVlT2JqZWN0fSBBIHByaW9yaXR5UXVldWUgb2JqZWN0IHRvIG1hbmFnZSB0aGUgdGFza3MuIFRoZXJlIGFyZSB0aHJlZVxuICAgICAqIGRpZmZlcmVuY2VzIGJldHdlZW4gYHF1ZXVlYCBhbmQgYHByaW9yaXR5UXVldWVgIG9iamVjdHM6XG4gICAgICogKiBgcHVzaCh0YXNrLCBwcmlvcml0eSwgW2NhbGxiYWNrXSlgIC0gYHByaW9yaXR5YCBzaG91bGQgYmUgYSBudW1iZXIuIElmIGFuXG4gICAgICogICBhcnJheSBvZiBgdGFza3NgIGlzIGdpdmVuLCBhbGwgdGFza3Mgd2lsbCBiZSBhc3NpZ25lZCB0aGUgc2FtZSBwcmlvcml0eS5cbiAgICAgKiAqIGBwdXNoQXN5bmModGFzaywgcHJpb3JpdHksIFtjYWxsYmFja10pYCAtIHRoZSBzYW1lIGFzIGBwcmlvcml0eVF1ZXVlLnB1c2hgLFxuICAgICAqICAgZXhjZXB0IHRoaXMgcmV0dXJucyBhIHByb21pc2UgdGhhdCByZWplY3RzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKiAqIFRoZSBgdW5zaGlmdGAgYW5kIGB1bnNoaWZ0QXN5bmNgIG1ldGhvZHMgd2VyZSByZW1vdmVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByaW9yaXR5UXVldWUod29ya2VyLCBjb25jdXJyZW5jeSkge1xuICAgICAgICAvLyBTdGFydCB3aXRoIGEgbm9ybWFsIHF1ZXVlXG4gICAgICAgIHZhciBxID0gcXVldWUkMSh3b3JrZXIsIGNvbmN1cnJlbmN5KTtcblxuICAgICAgICB2YXIge1xuICAgICAgICAgICAgcHVzaCxcbiAgICAgICAgICAgIHB1c2hBc3luY1xuICAgICAgICB9ID0gcTtcblxuICAgICAgICBxLl90YXNrcyA9IG5ldyBIZWFwKCk7XG4gICAgICAgIHEuX2NyZWF0ZVRhc2tJdGVtID0gKHtkYXRhLCBwcmlvcml0eX0sIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gY3JlYXRlRGF0YUl0ZW1zKHRhc2tzLCBwcmlvcml0eSkge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhc2tzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7ZGF0YTogdGFza3MsIHByaW9yaXR5fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0YXNrcy5tYXAoZGF0YSA9PiB7IHJldHVybiB7ZGF0YSwgcHJpb3JpdHl9OyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE92ZXJyaWRlIHB1c2ggdG8gYWNjZXB0IHNlY29uZCBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHByaW9yaXR5XG4gICAgICAgIHEucHVzaCA9IGZ1bmN0aW9uKGRhdGEsIHByaW9yaXR5ID0gMCwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBwdXNoKGNyZWF0ZURhdGFJdGVtcyhkYXRhLCBwcmlvcml0eSksIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcblxuICAgICAgICBxLnB1c2hBc3luYyA9IGZ1bmN0aW9uKGRhdGEsIHByaW9yaXR5ID0gMCwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBwdXNoQXN5bmMoY3JlYXRlRGF0YUl0ZW1zKGRhdGEsIHByaW9yaXR5KSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFJlbW92ZSB1bnNoaWZ0IGZ1bmN0aW9uc1xuICAgICAgICBkZWxldGUgcS51bnNoaWZ0O1xuICAgICAgICBkZWxldGUgcS51bnNoaWZ0QXN5bmM7XG5cbiAgICAgICAgcmV0dXJuIHE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVucyB0aGUgYHRhc2tzYCBhcnJheSBvZiBmdW5jdGlvbnMgaW4gcGFyYWxsZWwsIHdpdGhvdXQgd2FpdGluZyB1bnRpbCB0aGVcbiAgICAgKiBwcmV2aW91cyBmdW5jdGlvbiBoYXMgY29tcGxldGVkLiBPbmNlIGFueSBvZiB0aGUgYHRhc2tzYCBjb21wbGV0ZSBvciBwYXNzIGFuXG4gICAgICogZXJyb3IgdG8gaXRzIGNhbGxiYWNrLCB0aGUgbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZC4gSXQnc1xuICAgICAqIGVxdWl2YWxlbnQgdG8gYFByb21pc2UucmFjZSgpYC5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJhY2VcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBcnJheX0gdGFza3MgLSBBbiBhcnJheSBjb250YWluaW5nIFthc3luYyBmdW5jdGlvbnNde0BsaW5rIEFzeW5jRnVuY3Rpb259XG4gICAgICogdG8gcnVuLiBFYWNoIGZ1bmN0aW9uIGNhbiBjb21wbGV0ZSB3aXRoIGFuIG9wdGlvbmFsIGByZXN1bHRgIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gQSBjYWxsYmFjayB0byBydW4gb25jZSBhbnkgb2YgdGhlIGZ1bmN0aW9ucyBoYXZlXG4gICAgICogY29tcGxldGVkLiBUaGlzIGZ1bmN0aW9uIGdldHMgYW4gZXJyb3Igb3IgcmVzdWx0IGZyb20gdGhlIGZpcnN0IGZ1bmN0aW9uIHRoYXRcbiAgICAgKiBjb21wbGV0ZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIGEgY2FsbGJhY2sgaXMgb21pdHRlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBhc3luYy5yYWNlKFtcbiAgICAgKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScpO1xuICAgICAqICAgICAgICAgfSwgMjAwKTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICAgICAqICAgICAgICAgfSwgMTAwKTtcbiAgICAgKiAgICAgfVxuICAgICAqIF0sXG4gICAgICogLy8gbWFpbiBjYWxsYmFja1xuICAgICAqIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICogICAgIC8vIHRoZSByZXN1bHQgd2lsbCBiZSBlcXVhbCB0byAndHdvJyBhcyBpdCBmaW5pc2hlcyBlYXJsaWVyXG4gICAgICogfSk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gcmFjZSh0YXNrcywgY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrKTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhc2tzKSkgcmV0dXJuIGNhbGxiYWNrKG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IHRvIHJhY2UgbXVzdCBiZSBhbiBhcnJheSBvZiBmdW5jdGlvbnMnKSk7XG4gICAgICAgIGlmICghdGFza3MubGVuZ3RoKSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0YXNrcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIHdyYXBBc3luYyh0YXNrc1tpXSkoY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJhY2UkMSA9IGF3YWl0aWZ5KHJhY2UsIDIpO1xuXG4gICAgLyoqXG4gICAgICogU2FtZSBhcyBbYHJlZHVjZWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5yZWR1Y2V9LCBvbmx5IG9wZXJhdGVzIG9uIGBhcnJheWAgaW4gcmV2ZXJzZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJlZHVjZVJpZ2h0XG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMucmVkdWNlXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMucmVkdWNlfVxuICAgICAqIEBhbGlhcyBmb2xkclxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Kn0gbWVtbyAtIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSByZWR1Y3Rpb24uXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gYXBwbGllZCB0byBlYWNoIGl0ZW0gaW4gdGhlXG4gICAgICogYXJyYXkgdG8gcHJvZHVjZSB0aGUgbmV4dCBzdGVwIGluIHRoZSByZWR1Y3Rpb24uXG4gICAgICogVGhlIGBpdGVyYXRlZWAgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIG5leHQgc3RhdGUgb2YgdGhlIHJlZHVjdGlvbi5cbiAgICAgKiBJZiB0aGUgaXRlcmF0ZWUgY29tcGxldGVzIHdpdGggYW4gZXJyb3IsIHRoZSByZWR1Y3Rpb24gaXMgc3RvcHBlZCBhbmQgdGhlXG4gICAgICogbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSBlcnJvci5cbiAgICAgKiBJbnZva2VkIHdpdGggKG1lbW8sIGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICAgICAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCBpcyB0aGUgcmVkdWNlZCB2YWx1ZS4gSW52b2tlZCB3aXRoXG4gICAgICogKGVyciwgcmVzdWx0KS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwYXNzZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2VSaWdodCAoYXJyYXksIG1lbW8sIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgcmV2ZXJzZWQgPSBbLi4uYXJyYXldLnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIHJlZHVjZSQxKHJldmVyc2VkLCBtZW1vLCBpdGVyYXRlZSwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyYXBzIHRoZSBhc3luYyBmdW5jdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgYWx3YXlzIGNvbXBsZXRlcyB3aXRoIGFcbiAgICAgKiByZXN1bHQgb2JqZWN0LCBldmVuIHdoZW4gaXQgZXJyb3JzLlxuICAgICAqXG4gICAgICogVGhlIHJlc3VsdCBvYmplY3QgaGFzIGVpdGhlciB0aGUgcHJvcGVydHkgYGVycm9yYCBvciBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQG5hbWUgcmVmbGVjdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBmbiAtIFRoZSBhc3luYyBmdW5jdGlvbiB5b3Ugd2FudCB0byB3cmFwXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSAtIEEgZnVuY3Rpb24gdGhhdCBhbHdheXMgcGFzc2VzIG51bGwgdG8gaXQncyBjYWxsYmFjayBhc1xuICAgICAqIHRoZSBlcnJvci4gVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgY2FsbGJhY2sgd2lsbCBiZSBhbiBgb2JqZWN0YCB3aXRoXG4gICAgICogZWl0aGVyIGFuIGBlcnJvcmAgb3IgYSBgdmFsdWVgIHByb3BlcnR5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBhc3luYy5wYXJhbGxlbChbXG4gICAgICogICAgIGFzeW5jLnJlZmxlY3QoZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIC8vIGRvIHNvbWUgc3R1ZmYgLi4uXG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gICAgICogICAgIH0pLFxuICAgICAqICAgICBhc3luYy5yZWZsZWN0KGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAvLyBkbyBzb21lIG1vcmUgc3R1ZmYgYnV0IGVycm9yIC4uLlxuICAgICAqICAgICAgICAgY2FsbGJhY2soJ2JhZCBzdHVmZiBoYXBwZW5lZCcpO1xuICAgICAqICAgICB9KSxcbiAgICAgKiAgICAgYXN5bmMucmVmbGVjdChmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgLy8gZG8gc29tZSBtb3JlIHN0dWZmIC4uLlxuICAgICAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICAgICAqICAgICB9KVxuICAgICAqIF0sXG4gICAgICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAgICAgKiBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgLy8gdmFsdWVzXG4gICAgICogICAgIC8vIHJlc3VsdHNbMF0udmFsdWUgPSAnb25lJ1xuICAgICAqICAgICAvLyByZXN1bHRzWzFdLmVycm9yID0gJ2JhZCBzdHVmZiBoYXBwZW5lZCdcbiAgICAgKiAgICAgLy8gcmVzdWx0c1syXS52YWx1ZSA9ICd0d28nXG4gICAgICogfSk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVmbGVjdChmbikge1xuICAgICAgICB2YXIgX2ZuID0gd3JhcEFzeW5jKGZuKTtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxQYXJhbXMoZnVuY3Rpb24gcmVmbGVjdE9uKGFyZ3MsIHJlZmxlY3RDYWxsYmFjaykge1xuICAgICAgICAgICAgYXJncy5wdXNoKChlcnJvciwgLi4uY2JBcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJldFZhbCA9IHt9O1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNiQXJncy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY2JBcmdzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2JBcmdzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdID0gY2JBcmdzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWZsZWN0Q2FsbGJhY2sobnVsbCwgcmV0VmFsKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gX2ZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdyYXBzIGFuIGFycmF5IG9yIGFuIG9iamVjdCBvZiBmdW5jdGlvbnMgd2l0aCBgcmVmbGVjdGAuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZWZsZWN0QWxsXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMucmVmbGVjdF17QGxpbmsgbW9kdWxlOlV0aWxzLnJlZmxlY3R9XG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxJdGVyYWJsZX0gdGFza3MgLSBUaGUgY29sbGVjdGlvbiBvZlxuICAgICAqIFthc3luYyBmdW5jdGlvbnNde0BsaW5rIEFzeW5jRnVuY3Rpb259IHRvIHdyYXAgaW4gYGFzeW5jLnJlZmxlY3RgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBhc3luYyBmdW5jdGlvbnMsIGVhY2ggd3JhcHBlZCBpblxuICAgICAqIGBhc3luYy5yZWZsZWN0YFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBsZXQgdGFza3MgPSBbXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAgICAgKiAgICAgICAgIH0sIDIwMCk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAvLyBkbyBzb21lIG1vcmUgc3R1ZmYgYnV0IGVycm9yIC4uLlxuICAgICAqICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdiYWQgc3R1ZmYgaGFwcGVuZWQnKSk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0d28nKTtcbiAgICAgKiAgICAgICAgIH0sIDEwMCk7XG4gICAgICogICAgIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogYXN5bmMucGFyYWxsZWwoYXN5bmMucmVmbGVjdEFsbCh0YXNrcyksXG4gICAgICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAgICAgKiBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgLy8gdmFsdWVzXG4gICAgICogICAgIC8vIHJlc3VsdHNbMF0udmFsdWUgPSAnb25lJ1xuICAgICAqICAgICAvLyByZXN1bHRzWzFdLmVycm9yID0gRXJyb3IoJ2JhZCBzdHVmZiBoYXBwZW5lZCcpXG4gICAgICogICAgIC8vIHJlc3VsdHNbMl0udmFsdWUgPSAndHdvJ1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gYW4gZXhhbXBsZSB1c2luZyBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheVxuICAgICAqIGxldCB0YXNrcyA9IHtcbiAgICAgKiAgICAgb25lOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gICAgICogICAgICAgICB9LCAyMDApO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICB0d286IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBjYWxsYmFjaygndHdvJyk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIHRocmVlOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAndGhyZWUnKTtcbiAgICAgKiAgICAgICAgIH0sIDEwMCk7XG4gICAgICogICAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogYXN5bmMucGFyYWxsZWwoYXN5bmMucmVmbGVjdEFsbCh0YXNrcyksXG4gICAgICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAgICAgKiBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgLy8gdmFsdWVzXG4gICAgICogICAgIC8vIHJlc3VsdHMub25lLnZhbHVlID0gJ29uZSdcbiAgICAgKiAgICAgLy8gcmVzdWx0cy50d28uZXJyb3IgPSAndHdvJ1xuICAgICAqICAgICAvLyByZXN1bHRzLnRocmVlLnZhbHVlID0gJ3RocmVlJ1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZmxlY3RBbGwodGFza3MpIHtcbiAgICAgICAgdmFyIHJlc3VsdHM7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhc2tzKSkge1xuICAgICAgICAgICAgcmVzdWx0cyA9IHRhc2tzLm1hcChyZWZsZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdHMgPSB7fTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRhc2tzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c1trZXldID0gcmVmbGVjdC5jYWxsKHRoaXMsIHRhc2tzW2tleV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0KGVhY2hmbiwgYXJyLCBfaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnN0IGl0ZXJhdGVlID0gd3JhcEFzeW5jKF9pdGVyYXRlZSk7XG4gICAgICAgIHJldHVybiBfZmlsdGVyKGVhY2hmbiwgYXJyLCAodmFsdWUsIGNiKSA9PiB7XG4gICAgICAgICAgICBpdGVyYXRlZSh2YWx1ZSwgKGVyciwgdikgPT4ge1xuICAgICAgICAgICAgICAgIGNiKGVyciwgIXYpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgW2BmaWx0ZXJgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZmlsdGVyfS4gUmVtb3ZlcyB2YWx1ZXMgdGhhdCBwYXNzIGFuIGBhc3luY2AgdHJ1dGggdGVzdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJlamVjdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLmZpbHRlcl17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmZpbHRlcn1cbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAgICAgKiBgY29sbGAuXG4gICAgICogVGhlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBhcyBpdHMgYHJlc3VsdGAuXG4gICAgICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIGRpcjEgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMS50eHQsIGZpbGUyLnR4dFxuICAgICAqIC8vIGRpcjIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMy50eHQsIGZpbGU0LnR4dFxuICAgICAqIC8vIGRpcjMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlNS50eHRcbiAgICAgKlxuICAgICAqIGNvbnN0IGZpbGVMaXN0ID0gWydkaXIxL2ZpbGUxLnR4dCcsJ2RpcjIvZmlsZTMudHh0JywnZGlyMy9maWxlNi50eHQnXTtcbiAgICAgKlxuICAgICAqIC8vIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBhIGZpbGUgZXhpc3RzXG4gICAgICogZnVuY3Rpb24gZmlsZUV4aXN0cyhmaWxlLCBjYWxsYmFjaykge1xuICAgICAqICAgIGZzLmFjY2VzcyhmaWxlLCBmcy5jb25zdGFudHMuRl9PSywgKGVycikgPT4ge1xuICAgICAqICAgICAgICBjYWxsYmFjayhudWxsLCAhZXJyKTtcbiAgICAgKiAgICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjYWxsYmFja3NcbiAgICAgKiBhc3luYy5yZWplY3QoZmlsZUxpc3QsIGZpbGVFeGlzdHMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAqICAgIC8vIFsgJ2RpcjMvZmlsZTYudHh0JyBdXG4gICAgICogICAgLy8gcmVzdWx0cyBub3cgZXF1YWxzIGFuIGFycmF5IG9mIHRoZSBub24tZXhpc3RpbmcgZmlsZXNcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMucmVqZWN0KGZpbGVMaXN0LCBmaWxlRXhpc3RzKVxuICAgICAqIC50aGVuKCByZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIC8vIFsgJ2RpcjMvZmlsZTYudHh0JyBdXG4gICAgICogICAgIC8vIHJlc3VsdHMgbm93IGVxdWFscyBhbiBhcnJheSBvZiB0aGUgbm9uLWV4aXN0aW5nIGZpbGVzXG4gICAgICogfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMucmVqZWN0KGZpbGVMaXN0LCBmaWxlRXhpc3RzKTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICAgICAgLy8gWyAnZGlyMy9maWxlNi50eHQnIF1cbiAgICAgKiAgICAgICAgIC8vIHJlc3VsdHMgbm93IGVxdWFscyBhbiBhcnJheSBvZiB0aGUgbm9uLWV4aXN0aW5nIGZpbGVzXG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdCQxIChjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlYWNoT2YkMSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cbiAgICB2YXIgcmVqZWN0JDIgPSBhd2FpdGlmeShyZWplY3QkMSwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYHJlamVjdGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5yZWplY3R9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICAgICAqIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZWplY3RMaW1pdFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLnJlamVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLnJlamVjdH1cbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gICAgICogYGNvbGxgLlxuICAgICAqIFRoZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gdmFsdWUgYXMgaXRzIGByZXN1bHRgLlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gICAgICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdExpbWl0IChjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZWFjaE9mTGltaXQobGltaXQpLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuICAgIHZhciByZWplY3RMaW1pdCQxID0gYXdhaXRpZnkocmVqZWN0TGltaXQsIDQpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMgW2ByZWplY3RgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMucmVqZWN0fSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZWplY3RTZXJpZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5yZWplY3Rde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5yZWplY3R9XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gICAgICogYGNvbGxgLlxuICAgICAqIFRoZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gdmFsdWUgYXMgaXRzIGByZXN1bHRgLlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gICAgICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdFNlcmllcyAoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZWFjaE9mU2VyaWVzJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG4gICAgdmFyIHJlamVjdFNlcmllcyQxID0gYXdhaXRpZnkocmVqZWN0U2VyaWVzLCAzKTtcblxuICAgIGZ1bmN0aW9uIGNvbnN0YW50JDEodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGVtcHRzIHRvIGdldCBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBgdGFza2Agbm8gbW9yZSB0aGFuIGB0aW1lc2AgdGltZXNcbiAgICAgKiBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBJZiB0aGUgdGFzayBpcyBzdWNjZXNzZnVsLCB0aGUgYGNhbGxiYWNrYCB3aWxsIGJlXG4gICAgICogcGFzc2VkIHRoZSByZXN1bHQgb2YgdGhlIHN1Y2Nlc3NmdWwgdGFzay4gSWYgYWxsIGF0dGVtcHRzIGZhaWwsIHRoZSBjYWxsYmFja1xuICAgICAqIHdpbGwgYmUgcGFzc2VkIHRoZSBlcnJvciBhbmQgcmVzdWx0IChpZiBhbnkpIG9mIHRoZSBmaW5hbCBhdHRlbXB0LlxuICAgICAqXG4gICAgICogQG5hbWUgcmV0cnlcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHNlZSBbYXN5bmMucmV0cnlhYmxlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucmV0cnlhYmxlfVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fG51bWJlcn0gW29wdHMgPSB7dGltZXM6IDUsIGludGVydmFsOiAwfXwgNV0gLSBDYW4gYmUgZWl0aGVyIGFuXG4gICAgICogb2JqZWN0IHdpdGggYHRpbWVzYCBhbmQgYGludGVydmFsYCBvciBhIG51bWJlci5cbiAgICAgKiAqIGB0aW1lc2AgLSBUaGUgbnVtYmVyIG9mIGF0dGVtcHRzIHRvIG1ha2UgYmVmb3JlIGdpdmluZyB1cC4gIFRoZSBkZWZhdWx0XG4gICAgICogICBpcyBgNWAuXG4gICAgICogKiBgaW50ZXJ2YWxgIC0gVGhlIHRpbWUgdG8gd2FpdCBiZXR3ZWVuIHJldHJpZXMsIGluIG1pbGxpc2Vjb25kcy4gIFRoZVxuICAgICAqICAgZGVmYXVsdCBpcyBgMGAuIFRoZSBpbnRlcnZhbCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYSBmdW5jdGlvbiBvZiB0aGVcbiAgICAgKiAgIHJldHJ5IGNvdW50IChzZWUgZXhhbXBsZSkuXG4gICAgICogKiBgZXJyb3JGaWx0ZXJgIC0gQW4gb3B0aW9uYWwgc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkIG9uXG4gICAgICogICBlcnJvbmVvdXMgcmVzdWx0LiBJZiBpdCByZXR1cm5zIGB0cnVlYCB0aGUgcmV0cnkgYXR0ZW1wdHMgd2lsbCBjb250aW51ZTtcbiAgICAgKiAgIGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAgdGhlIHJldHJ5IGZsb3cgaXMgYWJvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gICAgICogICBhdHRlbXB0J3MgZXJyb3IgYW5kIHJlc3VsdCBiZWluZyByZXR1cm5lZCB0byB0aGUgZmluYWwgY2FsbGJhY2suXG4gICAgICogICBJbnZva2VkIHdpdGggKGVycikuXG4gICAgICogKiBJZiBgb3B0c2AgaXMgYSBudW1iZXIsIHRoZSBudW1iZXIgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnksXG4gICAgICogICB3aXRoIHRoZSBkZWZhdWx0IGludGVydmFsIG9mIGAwYC5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHRhc2sgLSBBbiBhc3luYyBmdW5jdGlvbiB0byByZXRyeS5cbiAgICAgKiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlXG4gICAgICogdGFzayBoYXMgc3VjY2VlZGVkLCBvciBhZnRlciB0aGUgZmluYWwgZmFpbGVkIGF0dGVtcHQuIEl0IHJlY2VpdmVzIHRoZSBgZXJyYFxuICAgICAqIGFuZCBgcmVzdWx0YCBhcmd1bWVudHMgb2YgdGhlIGxhc3QgYXR0ZW1wdCBhdCBjb21wbGV0aW5nIHRoZSBgdGFza2AuIEludm9rZWRcbiAgICAgKiB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UgaWYgbm8gY2FsbGJhY2sgcHJvdmlkZWRcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYHJldHJ5YCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHN0YW5kLWFsb25lIGNvbnRyb2wgZmxvdyBieSBwYXNzaW5nXG4gICAgICogLy8gYSBjYWxsYmFjaywgYXMgc2hvd24gYmVsb3c6XG4gICAgICpcbiAgICAgKiAvLyB0cnkgY2FsbGluZyBhcGlNZXRob2QgMyB0aW1lc1xuICAgICAqIGFzeW5jLnJldHJ5KDMsIGFwaU1ldGhvZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdFxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gdHJ5IGNhbGxpbmcgYXBpTWV0aG9kIDMgdGltZXMsIHdhaXRpbmcgMjAwIG1zIGJldHdlZW4gZWFjaCByZXRyeVxuICAgICAqIGFzeW5jLnJldHJ5KHt0aW1lczogMywgaW50ZXJ2YWw6IDIwMH0sIGFwaU1ldGhvZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdFxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gdHJ5IGNhbGxpbmcgYXBpTWV0aG9kIDEwIHRpbWVzIHdpdGggZXhwb25lbnRpYWwgYmFja29mZlxuICAgICAqIC8vIChpLmUuIGludGVydmFscyBvZiAxMDAsIDIwMCwgNDAwLCA4MDAsIDE2MDAsIC4uLiBtaWxsaXNlY29uZHMpXG4gICAgICogYXN5bmMucmV0cnkoe1xuICAgICAqICAgdGltZXM6IDEwLFxuICAgICAqICAgaW50ZXJ2YWw6IGZ1bmN0aW9uKHJldHJ5Q291bnQpIHtcbiAgICAgKiAgICAgcmV0dXJuIDUwICogTWF0aC5wb3coMiwgcmV0cnlDb3VudCk7XG4gICAgICogICB9XG4gICAgICogfSwgYXBpTWV0aG9kLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyB0cnkgY2FsbGluZyBhcGlNZXRob2QgdGhlIGRlZmF1bHQgNSB0aW1lcyBubyBkZWxheSBiZXR3ZWVuIGVhY2ggcmV0cnlcbiAgICAgKiBhc3luYy5yZXRyeShhcGlNZXRob2QsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICogICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZXN1bHRcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIHRyeSBjYWxsaW5nIGFwaU1ldGhvZCBvbmx5IHdoZW4gZXJyb3IgY29uZGl0aW9uIHNhdGlzZmllcywgYWxsIG90aGVyXG4gICAgICogLy8gZXJyb3JzIHdpbGwgYWJvcnQgdGhlIHJldHJ5IGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHRvIGZpbmFsIGNhbGxiYWNrXG4gICAgICogYXN5bmMucmV0cnkoe1xuICAgICAqICAgZXJyb3JGaWx0ZXI6IGZ1bmN0aW9uKGVycikge1xuICAgICAqICAgICByZXR1cm4gZXJyLm1lc3NhZ2UgPT09ICdUZW1wb3JhcnkgZXJyb3InOyAvLyBvbmx5IHJldHJ5IG9uIGEgc3BlY2lmaWMgZXJyb3JcbiAgICAgKiAgIH1cbiAgICAgKiB9LCBhcGlNZXRob2QsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICogICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZXN1bHRcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIHRvIHJldHJ5IGluZGl2aWR1YWwgbWV0aG9kcyB0aGF0IGFyZSBub3QgYXMgcmVsaWFibGUgd2l0aGluIG90aGVyXG4gICAgICogLy8gY29udHJvbCBmbG93IGZ1bmN0aW9ucywgdXNlIHRoZSBgcmV0cnlhYmxlYCB3cmFwcGVyOlxuICAgICAqIGFzeW5jLmF1dG8oe1xuICAgICAqICAgICB1c2VyczogYXBpLmdldFVzZXJzLmJpbmQoYXBpKSxcbiAgICAgKiAgICAgcGF5bWVudHM6IGFzeW5jLnJldHJ5YWJsZSgzLCBhcGkuZ2V0UGF5bWVudHMuYmluZChhcGkpKVxuICAgICAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0c1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICovXG4gICAgY29uc3QgREVGQVVMVF9USU1FUyA9IDU7XG4gICAgY29uc3QgREVGQVVMVF9JTlRFUlZBTCA9IDA7XG5cbiAgICBmdW5jdGlvbiByZXRyeShvcHRzLCB0YXNrLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHRpbWVzOiBERUZBVUxUX1RJTUVTLFxuICAgICAgICAgICAgaW50ZXJ2YWxGdW5jOiBjb25zdGFudCQxKERFRkFVTFRfSU5URVJWQUwpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzICYmIHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IHRhc2sgfHwgcHJvbWlzZUNhbGxiYWNrKCk7XG4gICAgICAgICAgICB0YXNrID0gb3B0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnNlVGltZXMob3B0aW9ucywgb3B0cyk7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IHByb21pc2VDYWxsYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0YXNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgYXN5bmMucmV0cnlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3Rhc2sgPSB3cmFwQXN5bmModGFzayk7XG5cbiAgICAgICAgdmFyIGF0dGVtcHQgPSAxO1xuICAgICAgICBmdW5jdGlvbiByZXRyeUF0dGVtcHQoKSB7XG4gICAgICAgICAgICBfdGFzaygoZXJyLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChlcnIgJiYgYXR0ZW1wdCsrIDwgb3B0aW9ucy50aW1lcyAmJlxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIG9wdGlvbnMuZXJyb3JGaWx0ZXIgIT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5lcnJvckZpbHRlcihlcnIpKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJldHJ5QXR0ZW1wdCwgb3B0aW9ucy5pbnRlcnZhbEZ1bmMoYXR0ZW1wdCAtIDEpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0cnlBdHRlbXB0KCk7XG4gICAgICAgIHJldHVybiBjYWxsYmFja1tQUk9NSVNFX1NZTUJPTF1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVRpbWVzKGFjYywgdCkge1xuICAgICAgICBpZiAodHlwZW9mIHQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBhY2MudGltZXMgPSArdC50aW1lcyB8fCBERUZBVUxUX1RJTUVTO1xuXG4gICAgICAgICAgICBhY2MuaW50ZXJ2YWxGdW5jID0gdHlwZW9mIHQuaW50ZXJ2YWwgPT09ICdmdW5jdGlvbicgP1xuICAgICAgICAgICAgICAgIHQuaW50ZXJ2YWwgOlxuICAgICAgICAgICAgICAgIGNvbnN0YW50JDEoK3QuaW50ZXJ2YWwgfHwgREVGQVVMVF9JTlRFUlZBTCk7XG5cbiAgICAgICAgICAgIGFjYy5lcnJvckZpbHRlciA9IHQuZXJyb3JGaWx0ZXI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHQgPT09ICdudW1iZXInIHx8IHR5cGVvZiB0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgYWNjLnRpbWVzID0gK3QgfHwgREVGQVVMVF9USU1FUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzIGZvciBhc3luYy5yZXRyeVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgY2xvc2UgcmVsYXRpdmUgb2YgW2ByZXRyeWBde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5yZXRyeX0uICBUaGlzIG1ldGhvZFxuICAgICAqIHdyYXBzIGEgdGFzayBhbmQgbWFrZXMgaXQgcmV0cnlhYmxlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBjYWxsaW5nIGl0XG4gICAgICogd2l0aCByZXRyaWVzLlxuICAgICAqXG4gICAgICogQG5hbWUgcmV0cnlhYmxlXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHNlZSBbYXN5bmMucmV0cnlde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5yZXRyeX1cbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtPYmplY3R8bnVtYmVyfSBbb3B0cyA9IHt0aW1lczogNSwgaW50ZXJ2YWw6IDB9fCA1XSAtIG9wdGlvbmFsXG4gICAgICogb3B0aW9ucywgZXhhY3RseSB0aGUgc2FtZSBhcyBmcm9tIGByZXRyeWAsIGV4Y2VwdCBmb3IgYSBgb3B0cy5hcml0eWAgdGhhdFxuICAgICAqIGlzIHRoZSBhcml0eSBvZiB0aGUgYHRhc2tgIGZ1bmN0aW9uLCBkZWZhdWx0aW5nIHRvIGB0YXNrLmxlbmd0aGBcbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHRhc2sgLSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHBhc3NlZCBhbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmV0dXJuZWQgd3JhcHBlci5cbiAgICAgKiBJbnZva2VkIHdpdGggKC4uLmFyZ3MsIGNhbGxiYWNrKS5cbiAgICAgKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gVGhlIHdyYXBwZWQgZnVuY3Rpb24sIHdoaWNoIHdoZW4gaW52b2tlZCwgd2lsbFxuICAgICAqIHJldHJ5IG9uIGFuIGVycm9yLCBiYXNlZCBvbiB0aGUgcGFyYW1ldGVycyBzcGVjaWZpZWQgaW4gYG9wdHNgLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhY2NlcHQgdGhlIHNhbWUgcGFyYW1ldGVycyBhcyBgdGFza2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGFzeW5jLmF1dG8oe1xuICAgICAqICAgICBkZXAxOiBhc3luYy5yZXRyeWFibGUoMywgZ2V0RnJvbUZsYWt5U2VydmljZSksXG4gICAgICogICAgIHByb2Nlc3M6IFtcImRlcDFcIiwgYXN5bmMucmV0cnlhYmxlKDMsIGZ1bmN0aW9uIChyZXN1bHRzLCBjYikge1xuICAgICAqICAgICAgICAgbWF5YmVQcm9jZXNzRGF0YShyZXN1bHRzLmRlcDEsIGNiKTtcbiAgICAgKiAgICAgfSldXG4gICAgICogfSwgY2FsbGJhY2spO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJldHJ5YWJsZSAob3B0cywgdGFzaykge1xuICAgICAgICBpZiAoIXRhc2spIHtcbiAgICAgICAgICAgIHRhc2sgPSBvcHRzO1xuICAgICAgICAgICAgb3B0cyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFyaXR5ID0gKG9wdHMgJiYgb3B0cy5hcml0eSkgfHwgdGFzay5sZW5ndGg7XG4gICAgICAgIGlmIChpc0FzeW5jKHRhc2spKSB7XG4gICAgICAgICAgICBhcml0eSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfdGFzayA9IHdyYXBBc3luYyh0YXNrKTtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxQYXJhbXMoKGFyZ3MsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPCBhcml0eSAtIDEgfHwgY2FsbGJhY2sgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBwcm9taXNlQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIHRhc2tGbihjYikge1xuICAgICAgICAgICAgICAgIF90YXNrKC4uLmFyZ3MsIGNiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdHMpIHJldHJ5KG9wdHMsIHRhc2tGbiwgY2FsbGJhY2spO1xuICAgICAgICAgICAgZWxzZSByZXRyeSh0YXNrRm4sIGNhbGxiYWNrKTtcblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrW1BST01JU0VfU1lNQk9MXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGhlIGZ1bmN0aW9ucyBpbiB0aGUgYHRhc2tzYCBjb2xsZWN0aW9uIGluIHNlcmllcywgZWFjaCBvbmUgcnVubmluZyBvbmNlXG4gICAgICogdGhlIHByZXZpb3VzIGZ1bmN0aW9uIGhhcyBjb21wbGV0ZWQuIElmIGFueSBmdW5jdGlvbnMgaW4gdGhlIHNlcmllcyBwYXNzIGFuXG4gICAgICogZXJyb3IgdG8gaXRzIGNhbGxiYWNrLCBubyBtb3JlIGZ1bmN0aW9ucyBhcmUgcnVuLCBhbmQgYGNhbGxiYWNrYCBpc1xuICAgICAqIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgZXJyb3IuIE90aGVyd2lzZSwgYGNhbGxiYWNrYFxuICAgICAqIHJlY2VpdmVzIGFuIGFycmF5IG9mIHJlc3VsdHMgd2hlbiBgdGFza3NgIGhhdmUgY29tcGxldGVkLlxuICAgICAqXG4gICAgICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXkuIEVhY2ggcHJvcGVydHkgd2lsbFxuICAgICAqIGJlIHJ1biBhcyBhIGZ1bmN0aW9uLCBhbmQgdGhlIHJlc3VsdHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGZpbmFsIGBjYWxsYmFja2BcbiAgICAgKiBhcyBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheS4gVGhpcyBjYW4gYmUgYSBtb3JlIHJlYWRhYmxlIHdheSBvZiBoYW5kbGluZ1xuICAgICAqICByZXN1bHRzIGZyb20ge0BsaW5rIGFzeW5jLnNlcmllc30uXG4gICAgICpcbiAgICAgKiAqKk5vdGUqKiB0aGF0IHdoaWxlIG1hbnkgaW1wbGVtZW50YXRpb25zIHByZXNlcnZlIHRoZSBvcmRlciBvZiBvYmplY3RcbiAgICAgKiBwcm9wZXJ0aWVzLCB0aGUgW0VDTUFTY3JpcHQgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbl0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTguNilcbiAgICAgKiBleHBsaWNpdGx5IHN0YXRlcyB0aGF0XG4gICAgICpcbiAgICAgKiA+IFRoZSBtZWNoYW5pY3MgYW5kIG9yZGVyIG9mIGVudW1lcmF0aW5nIHRoZSBwcm9wZXJ0aWVzIGlzIG5vdCBzcGVjaWZpZWQuXG4gICAgICpcbiAgICAgKiBTbyBpZiB5b3UgcmVseSBvbiB0aGUgb3JkZXIgaW4gd2hpY2ggeW91ciBzZXJpZXMgb2YgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCxcbiAgICAgKiBhbmQgd2FudCB0aGlzIHRvIHdvcmsgb24gYWxsIHBsYXRmb3JtcywgY29uc2lkZXIgdXNpbmcgYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAbmFtZSBzZXJpZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gdGFza3MgLSBBIGNvbGxlY3Rpb24gY29udGFpbmluZ1xuICAgICAqIFthc3luYyBmdW5jdGlvbnNde0BsaW5rIEFzeW5jRnVuY3Rpb259IHRvIHJ1biBpbiBzZXJpZXMuXG4gICAgICogRWFjaCBmdW5jdGlvbiBjYW4gY29tcGxldGUgd2l0aCBhbnkgbnVtYmVyIG9mIG9wdGlvbmFsIGByZXN1bHRgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gcnVuIG9uY2UgYWxsIHRoZVxuICAgICAqIGZ1bmN0aW9ucyBoYXZlIGNvbXBsZXRlZC4gVGhpcyBmdW5jdGlvbiBnZXRzIGEgcmVzdWx0cyBhcnJheSAob3Igb2JqZWN0KVxuICAgICAqIGNvbnRhaW5pbmcgYWxsIHRoZSByZXN1bHQgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYHRhc2tgIGNhbGxiYWNrcy4gSW52b2tlZFxuICAgICAqIHdpdGggKGVyciwgcmVzdWx0KS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvL1VzaW5nIENhbGxiYWNrc1xuICAgICAqIGFzeW5jLnNlcmllcyhbXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIC8vIGRvIHNvbWUgYXN5bmMgdGFza1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAgICAgKiAgICAgICAgIH0sIDIwMCk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIC8vIHRoZW4gZG8gYW5vdGhlciBhc3luYyB0YXNrXG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICAgICAqICAgICAgICAgfSwgMTAwKTtcbiAgICAgKiAgICAgfVxuICAgICAqIF0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0byBbJ29uZScsJ3R3byddXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBhbiBleGFtcGxlIHVzaW5nIG9iamVjdHMgaW5zdGVhZCBvZiBhcnJheXNcbiAgICAgKiBhc3luYy5zZXJpZXMoe1xuICAgICAqICAgICBvbmU6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIC8vIGRvIHNvbWUgYXN5bmMgdGFza1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIDEpO1xuICAgICAqICAgICAgICAgfSwgMjAwKTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgdHdvOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICAvLyB0aGVuIGRvIGFub3RoZXIgYXN5bmMgdGFza1xuICAgICAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIDIpO1xuICAgICAqICAgICAgICAgfSwgMTAwKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiAgICAgLy8gcmVzdWx0cyBpcyBlcXVhbCB0bzogeyBvbmU6IDEsIHR3bzogMiB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvL1VzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMuc2VyaWVzKFtcbiAgICAgKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScpO1xuICAgICAqICAgICAgICAgfSwgMjAwKTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICAgICAqICAgICAgICAgfSwgMTAwKTtcbiAgICAgKiAgICAgfVxuICAgICAqIF0pLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICAvLyByZXN1bHRzIGlzIGVxdWFsIHRvIFsnb25lJywndHdvJ11cbiAgICAgKiB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gYW4gZXhhbXBsZSB1c2luZyBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheVxuICAgICAqIGFzeW5jLnNlcmllcyh7XG4gICAgICogICAgIG9uZTogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgLy8gZG8gc29tZSBhc3luYyB0YXNrXG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMSk7XG4gICAgICogICAgICAgICB9LCAyMDApO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICB0d286IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAqICAgICAgICAgICAgIC8vIHRoZW4gZG8gYW5vdGhlciBhc3luYyB0YXNrXG4gICAgICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMik7XG4gICAgICogICAgICAgICB9LCAxMDApO1xuICAgICAqICAgICB9XG4gICAgICogfSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIC8vIHJlc3VsdHMgaXMgZXF1YWwgdG86IHsgb25lOiAxLCB0d286IDIgfVxuICAgICAqIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvL1VzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogYXN5bmMgKCkgPT4ge1xuICAgICAqICAgICB0cnkge1xuICAgICAqICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBhc3luYy5zZXJpZXMoW1xuICAgICAqICAgICAgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgICAgICAgICAvLyBkbyBzb21lIGFzeW5jIHRhc2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAgICAgKiAgICAgICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgKiAgICAgICAgICAgICB9LFxuICAgICAqICAgICAgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICogICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIGRvIGFub3RoZXIgYXN5bmMgdGFza1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICAgICAqICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAqICAgICAgICAgICAgIH1cbiAgICAgKiAgICAgICAgIF0pO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAvLyByZXN1bHRzIGlzIGVxdWFsIHRvIFsnb25lJywndHdvJ11cbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy8gYW4gZXhhbXBsZSB1c2luZyBhbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBhcnJheVxuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMucGFyYWxsZWwoe1xuICAgICAqICAgICAgICAgICAgIG9uZTogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHNvbWUgYXN5bmMgdGFza1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMSk7XG4gICAgICogICAgICAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICogICAgICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgICAgIHR3bzogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZG8gYW5vdGhlciBhc3luYyB0YXNrXG4gICAgICogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAyKTtcbiAgICAgKiAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgKiAgICAgICAgICAgIH1cbiAgICAgKiAgICAgICAgIH0pO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAvLyByZXN1bHRzIGlzIGVxdWFsIHRvOiB7IG9uZTogMSwgdHdvOiAyIH1cbiAgICAgKiAgICAgfVxuICAgICAqICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2VyaWVzKHRhc2tzLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gcGFyYWxsZWwoZWFjaE9mU2VyaWVzJDEsIHRhc2tzLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIGBjb2xsYCBzYXRpc2ZpZXMgYW4gYXN5bmMgdGVzdC5cbiAgICAgKiBJZiBhbnkgaXRlcmF0ZWUgY2FsbCByZXR1cm5zIGB0cnVlYCwgdGhlIG1haW4gYGNhbGxiYWNrYCBpcyBpbW1lZGlhdGVseVxuICAgICAqIGNhbGxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIHNvbWVcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAYWxpYXMgYW55XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfEFzeW5jSXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW1cbiAgICAgKiBpbiB0aGUgY29sbGVjdGlvbnMgaW4gcGFyYWxsZWwuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiBgcmVzdWx0YCB2YWx1ZS5cbiAgICAgKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAgICAgKiBpdGVyYXRlZSByZXR1cm5zIGB0cnVlYCwgb3IgYWZ0ZXIgYWxsIHRoZSBpdGVyYXRlZSBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAgICAgKiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jXG4gICAgICogdGVzdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIGRpcjEgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMS50eHQsIGZpbGUyLnR4dFxuICAgICAqIC8vIGRpcjIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlMy50eHQsIGZpbGU0LnR4dFxuICAgICAqIC8vIGRpcjMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBmaWxlNS50eHRcbiAgICAgKiAvLyBkaXI0IGRvZXMgbm90IGV4aXN0XG4gICAgICpcbiAgICAgKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYSBmaWxlIGV4aXN0c1xuICAgICAqIGZ1bmN0aW9uIGZpbGVFeGlzdHMoZmlsZSwgY2FsbGJhY2spIHtcbiAgICAgKiAgICBmcy5hY2Nlc3MoZmlsZSwgZnMuY29uc3RhbnRzLkZfT0ssIChlcnIpID0+IHtcbiAgICAgKiAgICAgICAgY2FsbGJhY2sobnVsbCwgIWVycik7XG4gICAgICogICAgfSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy8gVXNpbmcgY2FsbGJhY2tzXG4gICAgICogYXN5bmMuc29tZShbJ2RpcjEvbWlzc2luZy50eHQnLCdkaXIyL21pc3NpbmcudHh0JywnZGlyMy9maWxlNS50eHQnXSwgZmlsZUV4aXN0cyxcbiAgICAgKiAgICBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAqICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAgICAvLyB0cnVlXG4gICAgICogICAgICAgIC8vIHJlc3VsdCBpcyB0cnVlIHNpbmNlIHNvbWUgZmlsZSBpbiB0aGUgbGlzdCBleGlzdHNcbiAgICAgKiAgICB9XG4gICAgICopO1xuICAgICAqXG4gICAgICogYXN5bmMuc29tZShbJ2RpcjEvbWlzc2luZy50eHQnLCdkaXIyL21pc3NpbmcudHh0JywnZGlyNC9taXNzaW5nLnR4dCddLCBmaWxlRXhpc3RzLFxuICAgICAqICAgIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICogICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgICAgIC8vIGZhbHNlXG4gICAgICogICAgICAgIC8vIHJlc3VsdCBpcyBmYWxzZSBzaW5jZSBub25lIG9mIHRoZSBmaWxlcyBleGlzdHNcbiAgICAgKiAgICB9XG4gICAgICopO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgUHJvbWlzZXNcbiAgICAgKiBhc3luYy5zb21lKFsnZGlyMS9taXNzaW5nLnR4dCcsJ2RpcjIvbWlzc2luZy50eHQnLCdkaXIzL2ZpbGU1LnR4dCddLCBmaWxlRXhpc3RzKVxuICAgICAqIC50aGVuKCByZXN1bHQgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAvLyB0cnVlXG4gICAgICogICAgIC8vIHJlc3VsdCBpcyB0cnVlIHNpbmNlIHNvbWUgZmlsZSBpbiB0aGUgbGlzdCBleGlzdHNcbiAgICAgKiB9KS5jYXRjaCggZXJyID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzeW5jLnNvbWUoWydkaXIxL21pc3NpbmcudHh0JywnZGlyMi9taXNzaW5nLnR4dCcsJ2RpcjQvbWlzc2luZy50eHQnXSwgZmlsZUV4aXN0cylcbiAgICAgKiAudGhlbiggcmVzdWx0ID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgLy8gZmFsc2VcbiAgICAgKiAgICAgLy8gcmVzdWx0IGlzIGZhbHNlIHNpbmNlIG5vbmUgb2YgdGhlIGZpbGVzIGV4aXN0c1xuICAgICAqIH0pLmNhdGNoKCBlcnIgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgYXN5bmMvYXdhaXRcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmMuc29tZShbJ2RpcjEvbWlzc2luZy50eHQnLCdkaXIyL21pc3NpbmcudHh0JywnZGlyMy9maWxlNS50eHQnXSwgZmlsZUV4aXN0cyk7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAgICAgLy8gdHJ1ZVxuICAgICAqICAgICAgICAgLy8gcmVzdWx0IGlzIHRydWUgc2luY2Ugc29tZSBmaWxlIGluIHRoZSBsaXN0IGV4aXN0c1xuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYXN5bmMuc29tZShbJ2RpcjEvbWlzc2luZy50eHQnLCdkaXIyL21pc3NpbmcudHh0JywnZGlyNC9taXNzaW5nLnR4dCddLCBmaWxlRXhpc3RzKTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgICAgICAvLyBmYWxzZVxuICAgICAqICAgICAgICAgLy8gcmVzdWx0IGlzIGZhbHNlIHNpbmNlIG5vbmUgb2YgdGhlIGZpbGVzIGV4aXN0c1xuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb21lKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gX2NyZWF0ZVRlc3RlcihCb29sZWFuLCByZXMgPT4gcmVzKShlYWNoT2YkMSwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKVxuICAgIH1cbiAgICB2YXIgc29tZSQxID0gYXdhaXRpZnkoc29tZSwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYHNvbWVgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuc29tZX0gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBzb21lTGltaXRcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5zb21lXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuc29tZX1cbiAgICAgKiBAYWxpYXMgYW55TGltaXRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW1cbiAgICAgKiBpbiB0aGUgY29sbGVjdGlvbnMgaW4gcGFyYWxsZWwuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiBgcmVzdWx0YCB2YWx1ZS5cbiAgICAgKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAgICAgKiBpdGVyYXRlZSByZXR1cm5zIGB0cnVlYCwgb3IgYWZ0ZXIgYWxsIHRoZSBpdGVyYXRlZSBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAgICAgKiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jXG4gICAgICogdGVzdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZUxpbWl0KGNvbGwsIGxpbWl0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIF9jcmVhdGVUZXN0ZXIoQm9vbGVhbiwgcmVzID0+IHJlcykoZWFjaE9mTGltaXQobGltaXQpLCBjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuICAgIHZhciBzb21lTGltaXQkMSA9IGF3YWl0aWZ5KHNvbWVMaW1pdCwgNCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbYHNvbWVgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuc29tZX0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgc29tZVNlcmllc1xuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLnNvbWVde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5zb21lfVxuICAgICAqIEBhbGlhcyBhbnlTZXJpZXNcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbVxuICAgICAqIGluIHRoZSBjb2xsZWN0aW9ucyBpbiBzZXJpZXMuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiBgcmVzdWx0YCB2YWx1ZS5cbiAgICAgKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAgICAgKiBpdGVyYXRlZSByZXR1cm5zIGB0cnVlYCwgb3IgYWZ0ZXIgYWxsIHRoZSBpdGVyYXRlZSBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAgICAgKiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jXG4gICAgICogdGVzdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZVNlcmllcyhjb2xsLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIF9jcmVhdGVUZXN0ZXIoQm9vbGVhbiwgcmVzID0+IHJlcykoZWFjaE9mU2VyaWVzJDEsIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG4gICAgdmFyIHNvbWVTZXJpZXMkMSA9IGF3YWl0aWZ5KHNvbWVTZXJpZXMsIDMpO1xuXG4gICAgLyoqXG4gICAgICogU29ydHMgYSBsaXN0IGJ5IHRoZSByZXN1bHRzIG9mIHJ1bm5pbmcgZWFjaCBgY29sbGAgdmFsdWUgdGhyb3VnaCBhbiBhc3luY1xuICAgICAqIGBpdGVyYXRlZWAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBzb3J0QnlcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8QXN5bmNJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAgICAgKiBgY29sbGAuXG4gICAgICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgdmFsdWUgdG8gdXNlIGFzIHRoZSBzb3J0IGNyaXRlcmlhIGFzXG4gICAgICogaXRzIGByZXN1bHRgLlxuICAgICAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICAgICAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gUmVzdWx0cyBpcyB0aGUgaXRlbXNcbiAgICAgKiBmcm9tIHRoZSBvcmlnaW5hbCBgY29sbGAgc29ydGVkIGJ5IHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGBpdGVyYXRlZWBcbiAgICAgKiBjYWxscy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHBhc3NlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBiaWdmaWxlLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAyNTExMDAgYnl0ZXMgaW4gc2l6ZVxuICAgICAqIC8vIG1lZGl1bWZpbGUudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDExMDAwIGJ5dGVzIGluIHNpemVcbiAgICAgKiAvLyBzbWFsbGZpbGUudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDEyMSBieXRlcyBpbiBzaXplXG4gICAgICpcbiAgICAgKiAvLyBhc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBmaWxlIHNpemUgaW4gYnl0ZXNcbiAgICAgKiBmdW5jdGlvbiBnZXRGaWxlU2l6ZUluQnl0ZXMoZmlsZSwgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgZnMuc3RhdChmaWxlLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAgICAgKiAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHN0YXQuc2l6ZSk7XG4gICAgICogICAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGNhbGxiYWNrc1xuICAgICAqIGFzeW5jLnNvcnRCeShbJ21lZGl1bWZpbGUudHh0Jywnc21hbGxmaWxlLnR4dCcsJ2JpZ2ZpbGUudHh0J10sIGdldEZpbGVTaXplSW5CeXRlcyxcbiAgICAgKiAgICAgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAgICAgLy8gcmVzdWx0cyBpcyBub3cgdGhlIG9yaWdpbmFsIGFycmF5IG9mIGZpbGVzIHNvcnRlZCBieVxuICAgICAqICAgICAgICAgICAgIC8vIGZpbGUgc2l6ZSAoYXNjZW5kaW5nIGJ5IGRlZmF1bHQpLCBlLmcuXG4gICAgICogICAgICAgICAgICAgLy8gWyAnc21hbGxmaWxlLnR4dCcsICdtZWRpdW1maWxlLnR4dCcsICdiaWdmaWxlLnR4dCddXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgIH1cbiAgICAgKiApO1xuICAgICAqXG4gICAgICogLy8gQnkgbW9kaWZ5aW5nIHRoZSBjYWxsYmFjayBwYXJhbWV0ZXIgdGhlXG4gICAgICogLy8gc29ydGluZyBvcmRlciBjYW4gYmUgaW5mbHVlbmNlZDpcbiAgICAgKlxuICAgICAqIC8vIGFzY2VuZGluZyBvcmRlclxuICAgICAqIGFzeW5jLnNvcnRCeShbJ21lZGl1bWZpbGUudHh0Jywnc21hbGxmaWxlLnR4dCcsJ2JpZ2ZpbGUudHh0J10sIGZ1bmN0aW9uKGZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGdldEZpbGVTaXplSW5CeXRlcyhmaWxlLCBmdW5jdGlvbihnZXRGaWxlU2l6ZUVyciwgZmlsZVNpemUpIHtcbiAgICAgKiAgICAgICAgIGlmIChnZXRGaWxlU2l6ZUVycikgcmV0dXJuIGNhbGxiYWNrKGdldEZpbGVTaXplRXJyKTtcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIGZpbGVTaXplKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAgICAgLy8gcmVzdWx0cyBpcyBub3cgdGhlIG9yaWdpbmFsIGFycmF5IG9mIGZpbGVzIHNvcnRlZCBieVxuICAgICAqICAgICAgICAgICAgIC8vIGZpbGUgc2l6ZSAoYXNjZW5kaW5nIGJ5IGRlZmF1bHQpLCBlLmcuXG4gICAgICogICAgICAgICAgICAgLy8gWyAnc21hbGxmaWxlLnR4dCcsICdtZWRpdW1maWxlLnR4dCcsICdiaWdmaWxlLnR4dCddXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgIH1cbiAgICAgKiApO1xuICAgICAqXG4gICAgICogLy8gZGVzY2VuZGluZyBvcmRlclxuICAgICAqIGFzeW5jLnNvcnRCeShbJ2JpZ2ZpbGUudHh0JywnbWVkaXVtZmlsZS50eHQnLCdzbWFsbGZpbGUudHh0J10sIGZ1bmN0aW9uKGZpbGUsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGdldEZpbGVTaXplSW5CeXRlcyhmaWxlLCBmdW5jdGlvbihnZXRGaWxlU2l6ZUVyciwgZmlsZVNpemUpIHtcbiAgICAgKiAgICAgICAgIGlmIChnZXRGaWxlU2l6ZUVycikge1xuICAgICAqICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhnZXRGaWxlU2l6ZUVycik7XG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCBmaWxlU2l6ZSAqIC0xKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICogICAgICAgICBpZiAoZXJyKSB7XG4gICAgICogICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgICAgICAgICAgLy8gcmVzdWx0cyBpcyBub3cgdGhlIG9yaWdpbmFsIGFycmF5IG9mIGZpbGVzIHNvcnRlZCBieVxuICAgICAqICAgICAgICAgICAgIC8vIGZpbGUgc2l6ZSAoYXNjZW5kaW5nIGJ5IGRlZmF1bHQpLCBlLmcuXG4gICAgICogICAgICAgICAgICAgLy8gWyAnYmlnZmlsZS50eHQnLCAnbWVkaXVtZmlsZS50eHQnLCAnc21hbGxmaWxlLnR4dCddXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgIH1cbiAgICAgKiApO1xuICAgICAqXG4gICAgICogLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgKiBhc3luYy5zb3J0QnkoWydtZWRpdW1maWxlLnR4dCcsJ3NtYWxsZmlsZS50eHQnLCdtaXNzaW5nZmlsZS50eHQnXSwgZ2V0RmlsZVNpemVJbkJ5dGVzLFxuICAgICAqICAgICBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAqICAgICAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgICAgICB9IGVsc2Uge1xuICAgICAqICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICB9XG4gICAgICogKTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIFByb21pc2VzXG4gICAgICogYXN5bmMuc29ydEJ5KFsnbWVkaXVtZmlsZS50eHQnLCdzbWFsbGZpbGUudHh0JywnYmlnZmlsZS50eHQnXSwgZ2V0RmlsZVNpemVJbkJ5dGVzKVxuICAgICAqIC50aGVuKCByZXN1bHRzID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIC8vIHJlc3VsdHMgaXMgbm93IHRoZSBvcmlnaW5hbCBhcnJheSBvZiBmaWxlcyBzb3J0ZWQgYnlcbiAgICAgKiAgICAgLy8gZmlsZSBzaXplIChhc2NlbmRpbmcgYnkgZGVmYXVsdCksIGUuZy5cbiAgICAgKiAgICAgLy8gWyAnc21hbGxmaWxlLnR4dCcsICdtZWRpdW1maWxlLnR4dCcsICdiaWdmaWxlLnR4dCddXG4gICAgICogfSkuY2F0Y2goIGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBFcnJvciBoYW5kbGluZ1xuICAgICAqIGFzeW5jLnNvcnRCeShbJ21lZGl1bWZpbGUudHh0Jywnc21hbGxmaWxlLnR4dCcsJ21pc3NpbmdmaWxlLnR4dCddLCBnZXRGaWxlU2l6ZUluQnl0ZXMpXG4gICAgICogLnRoZW4oIHJlc3VsdHMgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICAgKiB9KS5jYXRjaCggZXJyID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgLy8gWyBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IF1cbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogKGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgYXN5bmMuc29ydEJ5KFsnYmlnZmlsZS50eHQnLCdtZWRpdW1maWxlLnR4dCcsJ3NtYWxsZmlsZS50eHQnXSwgZ2V0RmlsZVNpemVJbkJ5dGVzKTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xuICAgICAqICAgICAgICAgLy8gcmVzdWx0cyBpcyBub3cgdGhlIG9yaWdpbmFsIGFycmF5IG9mIGZpbGVzIHNvcnRlZCBieVxuICAgICAqICAgICAgICAgLy8gZmlsZSBzaXplIChhc2NlbmRpbmcgYnkgZGVmYXVsdCksIGUuZy5cbiAgICAgKiAgICAgICAgIC8vIFsgJ3NtYWxsZmlsZS50eHQnLCAnbWVkaXVtZmlsZS50eHQnLCAnYmlnZmlsZS50eHQnXVxuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH1cbiAgICAgKiB9KSgpO1xuICAgICAqXG4gICAgICogLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgKiBhc3luYyAoKSA9PiB7XG4gICAgICogICAgIHRyeSB7XG4gICAgICogICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IGFzeW5jLnNvcnRCeShbJ21pc3NpbmdmaWxlLnR4dCcsJ21lZGl1bWZpbGUudHh0Jywnc21hbGxmaWxlLnR4dCddLCBnZXRGaWxlU2l6ZUluQnl0ZXMpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgICAgIC8vIFsgRXJyb3I6IEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBdXG4gICAgICogICAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0QnkgKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgX2l0ZXJhdGVlID0gd3JhcEFzeW5jKGl0ZXJhdGVlKTtcbiAgICAgICAgcmV0dXJuIG1hcCQxKGNvbGwsICh4LCBpdGVyQ2IpID0+IHtcbiAgICAgICAgICAgIF9pdGVyYXRlZSh4LCAoZXJyLCBjcml0ZXJpYSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBpdGVyQ2IoZXJyKTtcbiAgICAgICAgICAgICAgICBpdGVyQ2IoZXJyLCB7dmFsdWU6IHgsIGNyaXRlcmlhfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgKGVyciwgcmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHRzLnNvcnQoY29tcGFyYXRvcikubWFwKHYgPT4gdi52YWx1ZSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBjb21wYXJhdG9yKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgICAgICB2YXIgYSA9IGxlZnQuY3JpdGVyaWEsIGIgPSByaWdodC5jcml0ZXJpYTtcbiAgICAgICAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgc29ydEJ5JDEgPSBhd2FpdGlmeShzb3J0QnksIDMpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBhIHRpbWUgbGltaXQgb24gYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uLiBJZiB0aGUgZnVuY3Rpb24gZG9lcyBub3QgY2FsbFxuICAgICAqIGl0cyBjYWxsYmFjayB3aXRoaW4gdGhlIHNwZWNpZmllZCBtaWxsaXNlY29uZHMsIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggYVxuICAgICAqIHRpbWVvdXQgZXJyb3IuIFRoZSBjb2RlIHByb3BlcnR5IGZvciB0aGUgZXJyb3Igb2JqZWN0IHdpbGwgYmUgYCdFVElNRURPVVQnYC5cbiAgICAgKlxuICAgICAqIEBuYW1lIHRpbWVvdXRcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gYXN5bmNGbiAtIFRoZSBhc3luYyBmdW5jdGlvbiB0byBsaW1pdCBpbiB0aW1lLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBUaGUgc3BlY2lmaWVkIHRpbWUgbGltaXQuXG4gICAgICogQHBhcmFtIHsqfSBbaW5mb10gLSBBbnkgdmFyaWFibGUgeW91IHdhbnQgYXR0YWNoZWQgKGBzdHJpbmdgLCBgb2JqZWN0YCwgZXRjKVxuICAgICAqIHRvIHRpbWVvdXQgRXJyb3IgZm9yIG1vcmUgaW5mb3JtYXRpb24uLlxuICAgICAqIEByZXR1cm5zIHtBc3luY0Z1bmN0aW9ufSBSZXR1cm5zIGEgd3JhcHBlZCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggYW55XG4gICAgICogb2YgdGhlIGNvbnRyb2wgZmxvdyBmdW5jdGlvbnMuXG4gICAgICogSW52b2tlIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzIHlvdSB3b3VsZCBgYXN5bmNGdW5jYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gbXlGdW5jdGlvbihmb28sIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGRvQXN5bmNUYXNrKGZvbywgZnVuY3Rpb24oZXJyLCBkYXRhKSB7XG4gICAgICogICAgICAgICAvLyBoYW5kbGUgZXJyb3JzXG4gICAgICogICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgKlxuICAgICAqICAgICAgICAgLy8gZG8gc29tZSBzdHVmZiAuLi5cbiAgICAgKlxuICAgICAqICAgICAgICAgLy8gcmV0dXJuIHByb2Nlc3NlZCBkYXRhXG4gICAgICogICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgZGF0YSk7XG4gICAgICogICAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gYXN5bmMudGltZW91dChteUZ1bmN0aW9uLCAxMDAwKTtcbiAgICAgKlxuICAgICAqIC8vIGNhbGwgYHdyYXBwZWRgIGFzIHlvdSB3b3VsZCBgbXlGdW5jdGlvbmBcbiAgICAgKiB3cmFwcGVkKHsgYmFyOiAnYmFyJyB9LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgKiAgICAgLy8gaWYgYG15RnVuY3Rpb25gIHRha2VzIDwgMTAwMCBtcyB0byBleGVjdXRlLCBgZXJyYFxuICAgICAqICAgICAvLyBhbmQgYGRhdGFgIHdpbGwgaGF2ZSB0aGVpciBleHBlY3RlZCB2YWx1ZXNcbiAgICAgKlxuICAgICAqICAgICAvLyBlbHNlIGBlcnJgIHdpbGwgYmUgYW4gRXJyb3Igd2l0aCB0aGUgY29kZSAnRVRJTUVET1VUJ1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVvdXQoYXN5bmNGbiwgbWlsbGlzZWNvbmRzLCBpbmZvKSB7XG4gICAgICAgIHZhciBmbiA9IHdyYXBBc3luYyhhc3luY0ZuKTtcblxuICAgICAgICByZXR1cm4gaW5pdGlhbFBhcmFtcygoYXJncywgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIHZhciB0aW1lZE91dCA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHRpbWVyO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiB0aW1lb3V0Q2FsbGJhY2soKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBhc3luY0ZuLm5hbWUgfHwgJ2Fub255bW91cyc7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9yICA9IG5ldyBFcnJvcignQ2FsbGJhY2sgZnVuY3Rpb24gXCInICsgbmFtZSArICdcIiB0aW1lZCBvdXQuJyk7XG4gICAgICAgICAgICAgICAgZXJyb3IuY29kZSA9ICdFVElNRURPVVQnO1xuICAgICAgICAgICAgICAgIGlmIChpbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLmluZm8gPSBpbmZvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aW1lZE91dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcmdzLnB1c2goKC4uLmNiQXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGltZWRPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soLi4uY2JBcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gc2V0dXAgdGltZXIgYW5kIGNhbGwgb3JpZ2luYWwgZnVuY3Rpb25cbiAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dCh0aW1lb3V0Q2FsbGJhY2ssIG1pbGxpc2Vjb25kcyk7XG4gICAgICAgICAgICBmbiguLi5hcmdzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmFuZ2Uoc2l6ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gQXJyYXkoc2l6ZSk7XG4gICAgICAgIHdoaWxlIChzaXplLS0pIHtcbiAgICAgICAgICAgIHJlc3VsdFtzaXplXSA9IHNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbdGltZXNde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy50aW1lc30gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhXG4gICAgICogdGltZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHRpbWVzTGltaXRcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy50aW1lc117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnRpbWVzfVxuICAgICAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgLSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCBgbmAgdGltZXMuXG4gICAgICogSW52b2tlZCB3aXRoIHRoZSBpdGVyYXRpb24gaW5kZXggYW5kIGEgY2FsbGJhY2s6IChuLCBuZXh0KS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIHNlZSBbYXN5bmMubWFwXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBubyBjYWxsYmFjayBpcyBwcm92aWRlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzTGltaXQoY291bnQsIGxpbWl0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyhpdGVyYXRlZSk7XG4gICAgICAgIHJldHVybiBtYXBMaW1pdCQxKHJhbmdlKGNvdW50KSwgbGltaXQsIF9pdGVyYXRlZSwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uIGBuYCB0aW1lcywgYW5kIGFjY3VtdWxhdGVzIHJlc3VsdHMgaW4gdGhlIHNhbWVcbiAgICAgKiBtYW5uZXIgeW91IHdvdWxkIHVzZSB3aXRoIFttYXBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXB9LlxuICAgICAqXG4gICAgICogQG5hbWUgdGltZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5tYXBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXB9XG4gICAgICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIC0gVGhlIG51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCBgbmAgdGltZXMuXG4gICAgICogSW52b2tlZCB3aXRoIHRoZSBpdGVyYXRpb24gaW5kZXggYW5kIGEgY2FsbGJhY2s6IChuLCBuZXh0KS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIHNlZSB7QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0uXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcHJvdmlkZWRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gUHJldGVuZCB0aGlzIGlzIHNvbWUgY29tcGxpY2F0ZWQgYXN5bmMgZmFjdG9yeVxuICAgICAqIHZhciBjcmVhdGVVc2VyID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIGNhbGxiYWNrKG51bGwsIHtcbiAgICAgKiAgICAgICAgIGlkOiAndXNlcicgKyBpZFxuICAgICAqICAgICB9KTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogLy8gZ2VuZXJhdGUgNSB1c2Vyc1xuICAgICAqIGFzeW5jLnRpbWVzKDUsIGZ1bmN0aW9uKG4sIG5leHQpIHtcbiAgICAgKiAgICAgY3JlYXRlVXNlcihuLCBmdW5jdGlvbihlcnIsIHVzZXIpIHtcbiAgICAgKiAgICAgICAgIG5leHQoZXJyLCB1c2VyKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogfSwgZnVuY3Rpb24oZXJyLCB1c2Vycykge1xuICAgICAqICAgICAvLyB3ZSBzaG91bGQgbm93IGhhdmUgNSB1c2Vyc1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzIChuLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIHRpbWVzTGltaXQobiwgSW5maW5pdHksIGl0ZXJhdGVlLCBjYWxsYmFjaylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyBbdGltZXNde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy50aW1lc30gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICAgICAqXG4gICAgICogQG5hbWUgdGltZXNTZXJpZXNcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy50aW1lc117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnRpbWVzfVxuICAgICAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiAtIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcnVuIHRoZSBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwgYG5gIHRpbWVzLlxuICAgICAqIEludm9rZWQgd2l0aCB0aGUgaXRlcmF0aW9uIGluZGV4IGFuZCBhIGNhbGxiYWNrOiAobiwgbmV4dCkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBzZWUge0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXB9LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHByb3ZpZGVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGltZXNTZXJpZXMgKG4sIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGltZXNMaW1pdChuLCAxLCBpdGVyYXRlZSwgY2FsbGJhY2spXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSByZWxhdGl2ZSBvZiBgcmVkdWNlYC4gIFRha2VzIGFuIE9iamVjdCBvciBBcnJheSwgYW5kIGl0ZXJhdGVzIG92ZXIgZWFjaFxuICAgICAqIGVsZW1lbnQgaW4gcGFyYWxsZWwsIGVhY2ggc3RlcCBwb3RlbnRpYWxseSBtdXRhdGluZyBhbiBgYWNjdW11bGF0b3JgIHZhbHVlLlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBhY2N1bXVsYXRvciBkZWZhdWx0cyB0byB0aGUgdHlwZSBvZiBjb2xsZWN0aW9uIHBhc3NlZCBpbi5cbiAgICAgKlxuICAgICAqIEBuYW1lIHRyYW5zZm9ybVxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIC0gVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHRyYW5zZm9ybS4gIElmIG9taXR0ZWQsXG4gICAgICogaXQgd2lsbCBkZWZhdWx0IHRvIGFuIGVtcHR5IE9iamVjdCBvciBBcnJheSwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGBjb2xsYFxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIGFwcGxpZWQgdG8gZWFjaCBpdGVtIGluIHRoZVxuICAgICAqIGNvbGxlY3Rpb24gdGhhdCBwb3RlbnRpYWxseSBtb2RpZmllcyB0aGUgYWNjdW11bGF0b3IuXG4gICAgICogSW52b2tlZCB3aXRoIChhY2N1bXVsYXRvciwgaXRlbSwga2V5LCBjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAgICAgKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBSZXN1bHQgaXMgdGhlIHRyYW5zZm9ybWVkIGFjY3VtdWxhdG9yLlxuICAgICAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIHByb3ZpZGVkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIGZpbGUxLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAxMDAwIGJ5dGVzIGluIHNpemVcbiAgICAgKiAvLyBmaWxlMi50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMjAwMCBieXRlcyBpbiBzaXplXG4gICAgICogLy8gZmlsZTMudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDMwMDAgYnl0ZXMgaW4gc2l6ZVxuICAgICAqXG4gICAgICogLy8gaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBodW1hbi1yZWFkYWJsZSBzaXplIGZvcm1hdCBmcm9tIGJ5dGVzXG4gICAgICogZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXMsIGRlY2ltYWxzID0gMikge1xuICAgICAqICAgLy8gaW1wbGVtZW50YXRpb24gbm90IGluY2x1ZGVkIGZvciBicmV2aXR5XG4gICAgICogICByZXR1cm4gaHVtYW5SZWFkYmxlRmlsZXNpemU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogY29uc3QgZmlsZUxpc3QgPSBbJ2ZpbGUxLnR4dCcsJ2ZpbGUyLnR4dCcsJ2ZpbGUzLnR4dCddO1xuICAgICAqXG4gICAgICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgZmlsZSBzaXplLCB0cmFuc2Zvcm1lZCB0byBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAgICAgKiAvLyBlLmcuIDEwMjQgYnl0ZXMgPSAxS0IsIDEyMzQgYnl0ZXMgPSAxLjIxIEtCLCAxMDQ4NTc2IGJ5dGVzID0gMU1CLCBldGMuXG4gICAgICogZnVuY3Rpb24gdHJhbnNmb3JtRmlsZVNpemUoYWNjLCB2YWx1ZSwga2V5LCBjYWxsYmFjaykge1xuICAgICAqICAgICBmcy5zdGF0KHZhbHVlLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAgICAgKiAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICAgIGFjY1trZXldID0gZm9ybWF0Qnl0ZXMoc3RhdC5zaXplKTtcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgICAqICAgICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjYWxsYmFja3NcbiAgICAgKiBhc3luYy50cmFuc2Zvcm0oZmlsZUxpc3QsIHRyYW5zZm9ybUZpbGVTaXplLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAqICAgICBpZihlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH0gZWxzZSB7XG4gICAgICogICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAgICAgLy8gWyAnMTAwMCBCeXRlcycsICcxLjk1IEtCJywgJzIuOTMgS0InIF1cbiAgICAgKiAgICAgfVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgUHJvbWlzZXNcbiAgICAgKiBhc3luYy50cmFuc2Zvcm0oZmlsZUxpc3QsIHRyYW5zZm9ybUZpbGVTaXplKVxuICAgICAqIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgIC8vIFsgJzEwMDAgQnl0ZXMnLCAnMS45NSBLQicsICcyLjkzIEtCJyBdXG4gICAgICogfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGFzeW5jL2F3YWl0XG4gICAgICogKGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy50cmFuc2Zvcm0oZmlsZUxpc3QsIHRyYW5zZm9ybUZpbGVTaXplKTtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgICAgICAvLyBbICcxMDAwIEJ5dGVzJywgJzEuOTUgS0InLCAnMi45MyBLQicgXVxuICAgICAqICAgICB9XG4gICAgICogICAgIGNhdGNoIChlcnIpIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogICAgIH1cbiAgICAgKiB9KSgpO1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIGZpbGUxLnR4dCBpcyBhIGZpbGUgdGhhdCBpcyAxMDAwIGJ5dGVzIGluIHNpemVcbiAgICAgKiAvLyBmaWxlMi50eHQgaXMgYSBmaWxlIHRoYXQgaXMgMjAwMCBieXRlcyBpbiBzaXplXG4gICAgICogLy8gZmlsZTMudHh0IGlzIGEgZmlsZSB0aGF0IGlzIDMwMDAgYnl0ZXMgaW4gc2l6ZVxuICAgICAqXG4gICAgICogLy8gaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBodW1hbi1yZWFkYWJsZSBzaXplIGZvcm1hdCBmcm9tIGJ5dGVzXG4gICAgICogZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXMsIGRlY2ltYWxzID0gMikge1xuICAgICAqICAgLy8gaW1wbGVtZW50YXRpb24gbm90IGluY2x1ZGVkIGZvciBicmV2aXR5XG4gICAgICogICByZXR1cm4gaHVtYW5SZWFkYmxlRmlsZXNpemU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogY29uc3QgZmlsZU1hcCA9IHsgZjE6ICdmaWxlMS50eHQnLCBmMjogJ2ZpbGUyLnR4dCcsIGYzOiAnZmlsZTMudHh0JyB9O1xuICAgICAqXG4gICAgICogLy8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgZmlsZSBzaXplLCB0cmFuc2Zvcm1lZCB0byBodW1hbi1yZWFkYWJsZSBmb3JtYXRcbiAgICAgKiAvLyBlLmcuIDEwMjQgYnl0ZXMgPSAxS0IsIDEyMzQgYnl0ZXMgPSAxLjIxIEtCLCAxMDQ4NTc2IGJ5dGVzID0gMU1CLCBldGMuXG4gICAgICogZnVuY3Rpb24gdHJhbnNmb3JtRmlsZVNpemUoYWNjLCB2YWx1ZSwga2V5LCBjYWxsYmFjaykge1xuICAgICAqICAgICBmcy5zdGF0KHZhbHVlLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAgICAgKiAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgKiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICAgIGFjY1trZXldID0gZm9ybWF0Qnl0ZXMoc3RhdC5zaXplKTtcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgICAqICAgICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjYWxsYmFja3NcbiAgICAgKiBhc3luYy50cmFuc2Zvcm0oZmlsZU1hcCwgdHJhbnNmb3JtRmlsZVNpemUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICogICAgIGlmKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfSBlbHNlIHtcbiAgICAgKiAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgICogICAgICAgICAvLyB7IGYxOiAnMTAwMCBCeXRlcycsIGYyOiAnMS45NSBLQicsIGYzOiAnMi45MyBLQicgfVxuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBQcm9taXNlc1xuICAgICAqIGFzeW5jLnRyYW5zZm9ybShmaWxlTWFwLCB0cmFuc2Zvcm1GaWxlU2l6ZSlcbiAgICAgKiAudGhlbihyZXN1bHQgPT4ge1xuICAgICAqICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAqICAgICAvLyB7IGYxOiAnMTAwMCBCeXRlcycsIGYyOiAnMS45NSBLQicsIGYzOiAnMi45MyBLQicgfVxuICAgICAqIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBhc3luYy9hd2FpdFxuICAgICAqIGFzeW5jICgpID0+IHtcbiAgICAgKiAgICAgdHJ5IHtcbiAgICAgKiAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBhc3luYy50cmFuc2Zvcm0oZmlsZU1hcCwgdHJhbnNmb3JtRmlsZVNpemUpO1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgKiAgICAgICAgIC8vIHsgZjE6ICcxMDAwIEJ5dGVzJywgZjI6ICcxLjk1IEtCJywgZjM6ICcyLjkzIEtCJyB9XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgY2F0Y2ggKGVycikge1xuICAgICAqICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgKiAgICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybSAoY29sbCwgYWNjdW11bGF0b3IsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8PSAzICYmIHR5cGVvZiBhY2N1bXVsYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBpdGVyYXRlZTtcbiAgICAgICAgICAgIGl0ZXJhdGVlID0gYWNjdW11bGF0b3I7XG4gICAgICAgICAgICBhY2N1bXVsYXRvciA9IEFycmF5LmlzQXJyYXkoY29sbCkgPyBbXSA6IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayB8fCBwcm9taXNlQ2FsbGJhY2soKSk7XG4gICAgICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMoaXRlcmF0ZWUpO1xuXG4gICAgICAgIGVhY2hPZiQxKGNvbGwsICh2LCBrLCBjYikgPT4ge1xuICAgICAgICAgICAgX2l0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2LCBrLCBjYik7XG4gICAgICAgIH0sIGVyciA9PiBjYWxsYmFjayhlcnIsIGFjY3VtdWxhdG9yKSk7XG4gICAgICAgIHJldHVybiBjYWxsYmFja1tQUk9NSVNFX1NZTUJPTF1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdCBydW5zIGVhY2ggdGFzayBpbiBzZXJpZXMgYnV0IHN0b3BzIHdoZW5ldmVyIGFueSBvZiB0aGUgZnVuY3Rpb25zIHdlcmVcbiAgICAgKiBzdWNjZXNzZnVsLiBJZiBvbmUgb2YgdGhlIHRhc2tzIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlIGBjYWxsYmFja2Agd2lsbCBiZVxuICAgICAqIHBhc3NlZCB0aGUgcmVzdWx0IG9mIHRoZSBzdWNjZXNzZnVsIHRhc2suIElmIGFsbCB0YXNrcyBmYWlsLCB0aGUgY2FsbGJhY2tcbiAgICAgKiB3aWxsIGJlIHBhc3NlZCB0aGUgZXJyb3IgYW5kIHJlc3VsdCAoaWYgYW55KSBvZiB0aGUgZmluYWwgYXR0ZW1wdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIHRyeUVhY2hcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxBc3luY0l0ZXJhYmxlfE9iamVjdH0gdGFza3MgLSBBIGNvbGxlY3Rpb24gY29udGFpbmluZyBmdW5jdGlvbnMgdG9cbiAgICAgKiBydW4sIGVhY2ggZnVuY3Rpb24gaXMgcGFzc2VkIGEgYGNhbGxiYWNrKGVyciwgcmVzdWx0KWAgaXQgbXVzdCBjYWxsIG9uXG4gICAgICogY29tcGxldGlvbiB3aXRoIGFuIGVycm9yIGBlcnJgICh3aGljaCBjYW4gYmUgYG51bGxgKSBhbmQgYW4gb3B0aW9uYWwgYHJlc3VsdGBcbiAgICAgKiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gb25lXG4gICAgICogb2YgdGhlIHRhc2tzIGhhcyBzdWNjZWVkZWQsIG9yIGFsbCBoYXZlIGZhaWxlZC4gSXQgcmVjZWl2ZXMgdGhlIGBlcnJgIGFuZFxuICAgICAqIGByZXN1bHRgIGFyZ3VtZW50cyBvZiB0aGUgbGFzdCBhdHRlbXB0IGF0IGNvbXBsZXRpbmcgdGhlIGB0YXNrYC4gSW52b2tlZCB3aXRoXG4gICAgICogKGVyciwgcmVzdWx0cykuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgbm8gY2FsbGJhY2sgaXMgcGFzc2VkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhc3luYy50cnlFYWNoKFtcbiAgICAgKiAgICAgZnVuY3Rpb24gZ2V0RGF0YUZyb21GaXJzdFdlYnNpdGUoY2FsbGJhY2spIHtcbiAgICAgKiAgICAgICAgIC8vIFRyeSBnZXR0aW5nIHRoZSBkYXRhIGZyb20gdGhlIGZpcnN0IHdlYnNpdGVcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKGVyciwgZGF0YSk7XG4gICAgICogICAgIH0sXG4gICAgICogICAgIGZ1bmN0aW9uIGdldERhdGFGcm9tU2Vjb25kV2Vic2l0ZShjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgLy8gRmlyc3Qgd2Vic2l0ZSBmYWlsZWQsXG4gICAgICogICAgICAgICAvLyBUcnkgZ2V0dGluZyB0aGUgZGF0YSBmcm9tIHRoZSBiYWNrdXAgd2Vic2l0ZVxuICAgICAqICAgICAgICAgY2FsbGJhY2soZXJyLCBkYXRhKTtcbiAgICAgKiAgICAgfVxuICAgICAqIF0sXG4gICAgICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAgICAgKiBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgKiAgICAgTm93IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLlxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJ5RWFjaCh0YXNrcywgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGVycm9yID0gbnVsbDtcbiAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIGVhY2hTZXJpZXMkMSh0YXNrcywgKHRhc2ssIHRhc2tDYikgPT4ge1xuICAgICAgICAgICAgd3JhcEFzeW5jKHRhc2spKChlcnIsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyID09PSBmYWxzZSkgcmV0dXJuIHRhc2tDYihlcnIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICBbcmVzdWx0XSA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXJncztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlcnI7XG4gICAgICAgICAgICAgICAgdGFza0NiKGVyciA/IG51bGwgOiB7fSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgKCkgPT4gY2FsbGJhY2soZXJyb3IsIHJlc3VsdCkpO1xuICAgIH1cblxuICAgIHZhciB0cnlFYWNoJDEgPSBhd2FpdGlmeSh0cnlFYWNoKTtcblxuICAgIC8qKlxuICAgICAqIFVuZG9lcyBhIFttZW1vaXplXXtAbGluayBtb2R1bGU6VXRpbHMubWVtb2l6ZX1kIGZ1bmN0aW9uLCByZXZlcnRpbmcgaXQgdG8gdGhlIG9yaWdpbmFsLFxuICAgICAqIHVubWVtb2l6ZWQgZm9ybS4gSGFuZHkgZm9yIHRlc3RpbmcuXG4gICAgICpcbiAgICAgKiBAbmFtZSB1bm1lbW9pemVcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAc2VlIFthc3luYy5tZW1vaXplXXtAbGluayBtb2R1bGU6VXRpbHMubWVtb2l6ZX1cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gZm4gLSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gYSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCB1bm1lbW9pemVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5tZW1vaXplKGZuKSB7XG4gICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChmbi51bm1lbW9pemVkIHx8IGZuKSguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBlYXRlZGx5IGNhbGwgYGl0ZXJhdGVlYCwgd2hpbGUgYHRlc3RgIHJldHVybnMgYHRydWVgLiBDYWxscyBgY2FsbGJhY2tgIHdoZW5cbiAgICAgKiBzdG9wcGVkLCBvciBhbiBlcnJvciBvY2N1cnMuXG4gICAgICpcbiAgICAgKiBAbmFtZSB3aGlsc3RcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSB0ZXN0IC0gYXN5bmNocm9ub3VzIHRydXRoIHRlc3QgdG8gcGVyZm9ybSBiZWZvcmUgZWFjaFxuICAgICAqIGV4ZWN1dGlvbiBvZiBgaXRlcmF0ZWVgLiBJbnZva2VkIHdpdGggKCkuXG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBlYWNoIHRpbWVcbiAgICAgKiBgdGVzdGAgcGFzc2VzLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHRlc3RcbiAgICAgKiBmdW5jdGlvbiBoYXMgZmFpbGVkIGFuZCByZXBlYXRlZCBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYCBoYXMgc3RvcHBlZC4gYGNhbGxiYWNrYFxuICAgICAqIHdpbGwgYmUgcGFzc2VkIGFuIGVycm9yIGFuZCBhbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZmluYWwgYGl0ZXJhdGVlYCdzXG4gICAgICogY2FsbGJhY2suIEludm9rZWQgd2l0aCAoZXJyLCBbcmVzdWx0c10pO1xuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBhIHByb21pc2UsIGlmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgY291bnQgPSAwO1xuICAgICAqIGFzeW5jLndoaWxzdChcbiAgICAgKiAgICAgZnVuY3Rpb24gdGVzdChjYikgeyBjYihudWxsLCBjb3VudCA8IDUpOyB9LFxuICAgICAqICAgICBmdW5jdGlvbiBpdGVyKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBjb3VudCsrO1xuICAgICAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBjb3VudCk7XG4gICAgICogICAgICAgICB9LCAxMDAwKTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgZnVuY3Rpb24gKGVyciwgbikge1xuICAgICAqICAgICAgICAgLy8gNSBzZWNvbmRzIGhhdmUgcGFzc2VkLCBuID0gNVxuICAgICAqICAgICB9XG4gICAgICogKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3aGlsc3QodGVzdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb25seU9uY2UoY2FsbGJhY2spO1xuICAgICAgICB2YXIgX2ZuID0gd3JhcEFzeW5jKGl0ZXJhdGVlKTtcbiAgICAgICAgdmFyIF90ZXN0ID0gd3JhcEFzeW5jKHRlc3QpO1xuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuXG4gICAgICAgIGZ1bmN0aW9uIG5leHQoZXJyLCAuLi5yZXN0KSB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgIHJlc3VsdHMgPSByZXN0O1xuICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVybjtcbiAgICAgICAgICAgIF90ZXN0KGNoZWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNoZWNrKGVyciwgdHJ1dGgpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVybjtcbiAgICAgICAgICAgIGlmICghdHJ1dGgpIHJldHVybiBjYWxsYmFjayhudWxsLCAuLi5yZXN1bHRzKTtcbiAgICAgICAgICAgIF9mbihuZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBfdGVzdChjaGVjayk7XG4gICAgfVxuICAgIHZhciB3aGlsc3QkMSA9IGF3YWl0aWZ5KHdoaWxzdCwgMyk7XG5cbiAgICAvKipcbiAgICAgKiBSZXBlYXRlZGx5IGNhbGwgYGl0ZXJhdGVlYCB1bnRpbCBgdGVzdGAgcmV0dXJucyBgdHJ1ZWAuIENhbGxzIGBjYWxsYmFja2Agd2hlblxuICAgICAqIHN0b3BwZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gYGNhbGxiYWNrYCB3aWxsIGJlIHBhc3NlZCBhbiBlcnJvciBhbmQgYW55XG4gICAgICogYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZmluYWwgYGl0ZXJhdGVlYCdzIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogVGhlIGludmVyc2Ugb2YgW3doaWxzdF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LndoaWxzdH0uXG4gICAgICpcbiAgICAgKiBAbmFtZSB1bnRpbFxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gICAgICogQG1ldGhvZFxuICAgICAqIEBzZWUgW2FzeW5jLndoaWxzdF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LndoaWxzdH1cbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSB0ZXN0IC0gYXN5bmNocm9ub3VzIHRydXRoIHRlc3QgdG8gcGVyZm9ybSBiZWZvcmUgZWFjaFxuICAgICAqIGV4ZWN1dGlvbiBvZiBgaXRlcmF0ZWVgLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAgICAgKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZVxuICAgICAqIGB0ZXN0YCBmYWlscy4gSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIHRoZSB0ZXN0XG4gICAgICogZnVuY3Rpb24gaGFzIHBhc3NlZCBhbmQgcmVwZWF0ZWQgZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAgaGFzIHN0b3BwZWQuIGBjYWxsYmFja2BcbiAgICAgKiB3aWxsIGJlIHBhc3NlZCBhbiBlcnJvciBhbmQgYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZpbmFsIGBpdGVyYXRlZWAnc1xuICAgICAqIGNhbGxiYWNrLiBJbnZva2VkIHdpdGggKGVyciwgW3Jlc3VsdHNdKTtcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gYSBwcm9taXNlLCBpZiBhIGNhbGxiYWNrIGlzIG5vdCBwYXNzZWRcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcmVzdWx0cyA9IFtdXG4gICAgICogbGV0IGZpbmlzaGVkID0gZmFsc2VcbiAgICAgKiBhc3luYy51bnRpbChmdW5jdGlvbiB0ZXN0KGNiKSB7XG4gICAgICogICAgIGNiKG51bGwsIGZpbmlzaGVkKVxuICAgICAqIH0sIGZ1bmN0aW9uIGl0ZXIobmV4dCkge1xuICAgICAqICAgICBmZXRjaFBhZ2UodXJsLCAoZXJyLCBib2R5KSA9PiB7XG4gICAgICogICAgICAgICBpZiAoZXJyKSByZXR1cm4gbmV4dChlcnIpXG4gICAgICogICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoYm9keS5vYmplY3RzKVxuICAgICAqICAgICAgICAgZmluaXNoZWQgPSAhIWJvZHkubmV4dFxuICAgICAqICAgICAgICAgbmV4dChlcnIpXG4gICAgICogICAgIH0pXG4gICAgICogfSwgZnVuY3Rpb24gZG9uZSAoZXJyKSB7XG4gICAgICogICAgIC8vIGFsbCBwYWdlcyBoYXZlIGJlZW4gZmV0Y2hlZFxuICAgICAqIH0pXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW50aWwodGVzdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnN0IF90ZXN0ID0gd3JhcEFzeW5jKHRlc3QpO1xuICAgICAgICByZXR1cm4gd2hpbHN0JDEoKGNiKSA9PiBfdGVzdCgoZXJyLCB0cnV0aCkgPT4gY2IgKGVyciwgIXRydXRoKSksIGl0ZXJhdGVlLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVucyB0aGUgYHRhc2tzYCBhcnJheSBvZiBmdW5jdGlvbnMgaW4gc2VyaWVzLCBlYWNoIHBhc3NpbmcgdGhlaXIgcmVzdWx0cyB0b1xuICAgICAqIHRoZSBuZXh0IGluIHRoZSBhcnJheS4gSG93ZXZlciwgaWYgYW55IG9mIHRoZSBgdGFza3NgIHBhc3MgYW4gZXJyb3IgdG8gdGhlaXJcbiAgICAgKiBvd24gY2FsbGJhY2ssIHRoZSBuZXh0IGZ1bmN0aW9uIGlzIG5vdCBleGVjdXRlZCwgYW5kIHRoZSBtYWluIGBjYWxsYmFja2AgaXNcbiAgICAgKiBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IuXG4gICAgICpcbiAgICAgKiBAbmFtZSB3YXRlcmZhbGxcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICAgICAqIEBtZXRob2RcbiAgICAgKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gICAgICogQHBhcmFtIHtBcnJheX0gdGFza3MgLSBBbiBhcnJheSBvZiBbYXN5bmMgZnVuY3Rpb25zXXtAbGluayBBc3luY0Z1bmN0aW9ufVxuICAgICAqIHRvIHJ1bi5cbiAgICAgKiBFYWNoIGZ1bmN0aW9uIHNob3VsZCBjb21wbGV0ZSB3aXRoIGFueSBudW1iZXIgb2YgYHJlc3VsdGAgdmFsdWVzLlxuICAgICAqIFRoZSBgcmVzdWx0YCB2YWx1ZXMgd2lsbCBiZSBwYXNzZWQgYXMgYXJndW1lbnRzLCBpbiBvcmRlciwgdG8gdGhlIG5leHQgdGFzay5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gcnVuIG9uY2UgYWxsIHRoZVxuICAgICAqIGZ1bmN0aW9ucyBoYXZlIGNvbXBsZXRlZC4gVGhpcyB3aWxsIGJlIHBhc3NlZCB0aGUgcmVzdWx0cyBvZiB0aGUgbGFzdCB0YXNrJ3NcbiAgICAgKiBjYWxsYmFjay4gSW52b2tlZCB3aXRoIChlcnIsIFtyZXN1bHRzXSkuXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IGEgcHJvbWlzZSwgaWYgYSBjYWxsYmFjayBpcyBvbWl0dGVkXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGFzeW5jLndhdGVyZmFsbChbXG4gICAgICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJywgJ3R3bycpO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICBmdW5jdGlvbihhcmcxLCBhcmcyLCBjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgLy8gYXJnMSBub3cgZXF1YWxzICdvbmUnIGFuZCBhcmcyIG5vdyBlcXVhbHMgJ3R3bydcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0aHJlZScpO1xuICAgICAqICAgICB9LFxuICAgICAqICAgICBmdW5jdGlvbihhcmcxLCBjYWxsYmFjaykge1xuICAgICAqICAgICAgICAgLy8gYXJnMSBub3cgZXF1YWxzICd0aHJlZSdcbiAgICAgKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdkb25lJyk7XG4gICAgICogICAgIH1cbiAgICAgKiBdLCBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgLy8gcmVzdWx0IG5vdyBlcXVhbHMgJ2RvbmUnXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBPciwgd2l0aCBuYW1lZCBmdW5jdGlvbnM6XG4gICAgICogYXN5bmMud2F0ZXJmYWxsKFtcbiAgICAgKiAgICAgbXlGaXJzdEZ1bmN0aW9uLFxuICAgICAqICAgICBteVNlY29uZEZ1bmN0aW9uLFxuICAgICAqICAgICBteUxhc3RGdW5jdGlvbixcbiAgICAgKiBdLCBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAgICAgKiAgICAgLy8gcmVzdWx0IG5vdyBlcXVhbHMgJ2RvbmUnXG4gICAgICogfSk7XG4gICAgICogZnVuY3Rpb24gbXlGaXJzdEZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICogICAgIGNhbGxiYWNrKG51bGwsICdvbmUnLCAndHdvJyk7XG4gICAgICogfVxuICAgICAqIGZ1bmN0aW9uIG15U2Vjb25kRnVuY3Rpb24oYXJnMSwgYXJnMiwgY2FsbGJhY2spIHtcbiAgICAgKiAgICAgLy8gYXJnMSBub3cgZXF1YWxzICdvbmUnIGFuZCBhcmcyIG5vdyBlcXVhbHMgJ3R3bydcbiAgICAgKiAgICAgY2FsbGJhY2sobnVsbCwgJ3RocmVlJyk7XG4gICAgICogfVxuICAgICAqIGZ1bmN0aW9uIG15TGFzdEZ1bmN0aW9uKGFyZzEsIGNhbGxiYWNrKSB7XG4gICAgICogICAgIC8vIGFyZzEgbm93IGVxdWFscyAndGhyZWUnXG4gICAgICogICAgIGNhbGxiYWNrKG51bGwsICdkb25lJyk7XG4gICAgICogfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdhdGVyZmFsbCAodGFza3MsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0YXNrcykpIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IHRvIHdhdGVyZmFsbCBtdXN0IGJlIGFuIGFycmF5IG9mIGZ1bmN0aW9ucycpKTtcbiAgICAgICAgaWYgKCF0YXNrcy5sZW5ndGgpIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICB2YXIgdGFza0luZGV4ID0gMDtcblxuICAgICAgICBmdW5jdGlvbiBuZXh0VGFzayhhcmdzKSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9IHdyYXBBc3luYyh0YXNrc1t0YXNrSW5kZXgrK10pO1xuICAgICAgICAgICAgdGFzayguLi5hcmdzLCBvbmx5T25jZShuZXh0KSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBuZXh0KGVyciwgLi4uYXJncykge1xuICAgICAgICAgICAgaWYgKGVyciA9PT0gZmFsc2UpIHJldHVyblxuICAgICAgICAgICAgaWYgKGVyciB8fCB0YXNrSW5kZXggPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dFRhc2soYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0VGFzayhbXSk7XG4gICAgfVxuXG4gICAgdmFyIHdhdGVyZmFsbCQxID0gYXdhaXRpZnkod2F0ZXJmYWxsKTtcblxuICAgIC8qKlxuICAgICAqIEFuIFwiYXN5bmMgZnVuY3Rpb25cIiBpbiB0aGUgY29udGV4dCBvZiBBc3luYyBpcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gd2l0aFxuICAgICAqIGEgdmFyaWFibGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIHdpdGggdGhlIGZpbmFsIHBhcmFtZXRlciBiZWluZyBhIGNhbGxiYWNrLlxuICAgICAqIChgZnVuY3Rpb24gKGFyZzEsIGFyZzIsIC4uLiwgY2FsbGJhY2spIHt9YClcbiAgICAgKiBUaGUgZmluYWwgY2FsbGJhY2sgaXMgb2YgdGhlIGZvcm0gYGNhbGxiYWNrKGVyciwgcmVzdWx0cy4uLilgLCB3aGljaCBtdXN0IGJlXG4gICAgICogY2FsbGVkIG9uY2UgdGhlIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZC4gIFRoZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkIHdpdGggYVxuICAgICAqIEVycm9yIGFzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBzaWduYWwgdGhhdCBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgKiBPdGhlcndpc2UsIGlmIG5vIGVycm9yIG9jY3VycmVkLCBpdCBzaG91bGQgYmUgY2FsbGVkIHdpdGggYG51bGxgIGFzIHRoZSBmaXJzdFxuICAgICAqIGFyZ3VtZW50LCBhbmQgYW55IGFkZGl0aW9uYWwgYHJlc3VsdGAgYXJndW1lbnRzIHRoYXQgbWF5IGFwcGx5LCB0byBzaWduYWxcbiAgICAgKiBzdWNjZXNzZnVsIGNvbXBsZXRpb24uXG4gICAgICogVGhlIGNhbGxiYWNrIG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSwgaWRlYWxseSBvbiBhIGxhdGVyIHRpY2sgb2YgdGhlXG4gICAgICogSmF2YVNjcmlwdCBldmVudCBsb29wLlxuICAgICAqXG4gICAgICogVGhpcyB0eXBlIG9mIGZ1bmN0aW9uIGlzIGFsc28gcmVmZXJyZWQgdG8gYXMgYSBcIk5vZGUtc3R5bGUgYXN5bmMgZnVuY3Rpb25cIixcbiAgICAgKiBvciBhIFwiY29udGludWF0aW9uIHBhc3Npbmctc3R5bGUgZnVuY3Rpb25cIiAoQ1BTKS4gTW9zdCBvZiB0aGUgbWV0aG9kcyBvZiB0aGlzXG4gICAgICogbGlicmFyeSBhcmUgdGhlbXNlbHZlcyBDUFMvTm9kZS1zdHlsZSBhc3luYyBmdW5jdGlvbnMsIG9yIGZ1bmN0aW9ucyB0aGF0XG4gICAgICogcmV0dXJuIENQUy9Ob2RlLXN0eWxlIGFzeW5jIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIFdoZXJldmVyIHdlIGFjY2VwdCBhIE5vZGUtc3R5bGUgYXN5bmMgZnVuY3Rpb24sIHdlIGFsc28gZGlyZWN0bHkgYWNjZXB0IGFuXG4gICAgICogW0VTMjAxNyBgYXN5bmNgIGZ1bmN0aW9uXXtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9TdGF0ZW1lbnRzL2FzeW5jX2Z1bmN0aW9ufS5cbiAgICAgKiBJbiB0aGlzIGNhc2UsIHRoZSBgYXN5bmNgIGZ1bmN0aW9uIHdpbGwgbm90IGJlIHBhc3NlZCBhIGZpbmFsIGNhbGxiYWNrXG4gICAgICogYXJndW1lbnQsIGFuZCBhbnkgdGhyb3duIGVycm9yIHdpbGwgYmUgdXNlZCBhcyB0aGUgYGVycmAgYXJndW1lbnQgb2YgdGhlXG4gICAgICogaW1wbGljaXQgY2FsbGJhY2ssIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyB0aGUgYHJlc3VsdGAgdmFsdWUuXG4gICAgICogKGkuZS4gYSBgcmVqZWN0ZWRgIG9mIHRoZSByZXR1cm5lZCBQcm9taXNlIGJlY29tZXMgdGhlIGBlcnJgIGNhbGxiYWNrXG4gICAgICogYXJndW1lbnQsIGFuZCBhIGByZXNvbHZlZGAgdmFsdWUgYmVjb21lcyB0aGUgYHJlc3VsdGAuKVxuICAgICAqXG4gICAgICogTm90ZSwgZHVlIHRvIEphdmFTY3JpcHQgbGltaXRhdGlvbnMsIHdlIGNhbiBvbmx5IGRldGVjdCBuYXRpdmUgYGFzeW5jYFxuICAgICAqIGZ1bmN0aW9ucyBhbmQgbm90IHRyYW5zcGlsaWVkIGltcGxlbWVudGF0aW9ucy5cbiAgICAgKiBZb3VyIGVudmlyb25tZW50IG11c3QgaGF2ZSBgYXN5bmNgL2Bhd2FpdGAgc3VwcG9ydCBmb3IgdGhpcyB0byB3b3JrLlxuICAgICAqIChlLmcuIE5vZGUgPiB2Ny42LCBvciBhIHJlY2VudCB2ZXJzaW9uIG9mIGEgbW9kZXJuIGJyb3dzZXIpLlxuICAgICAqIElmIHlvdSBhcmUgdXNpbmcgYGFzeW5jYCBmdW5jdGlvbnMgdGhyb3VnaCBhIHRyYW5zcGlsZXIgKGUuZy4gQmFiZWwpLCB5b3VcbiAgICAgKiBtdXN0IHN0aWxsIHdyYXAgdGhlIGZ1bmN0aW9uIHdpdGggW2FzeW5jaWZ5XXtAbGluayBtb2R1bGU6VXRpbHMuYXN5bmNpZnl9LFxuICAgICAqIGJlY2F1c2UgdGhlIGBhc3luYyBmdW5jdGlvbmAgd2lsbCBiZSBjb21waWxlZCB0byBhbiBvcmRpbmFyeSBmdW5jdGlvbiB0aGF0XG4gICAgICogcmV0dXJucyBhIHByb21pc2UuXG4gICAgICpcbiAgICAgKiBAdHlwZWRlZiB7RnVuY3Rpb259IEFzeW5jRnVuY3Rpb25cbiAgICAgKiBAc3RhdGljXG4gICAgICovXG5cbiAgICB2YXIgaW5kZXggPSB7XG4gICAgICAgIGFwcGx5LFxuICAgICAgICBhcHBseUVhY2g6IGFwcGx5RWFjaCQxLFxuICAgICAgICBhcHBseUVhY2hTZXJpZXMsXG4gICAgICAgIGFzeW5jaWZ5LFxuICAgICAgICBhdXRvLFxuICAgICAgICBhdXRvSW5qZWN0LFxuICAgICAgICBjYXJnbyxcbiAgICAgICAgY2FyZ29RdWV1ZTogY2FyZ28kMSxcbiAgICAgICAgY29tcG9zZSxcbiAgICAgICAgY29uY2F0OiBjb25jYXQkMSxcbiAgICAgICAgY29uY2F0TGltaXQ6IGNvbmNhdExpbWl0JDEsXG4gICAgICAgIGNvbmNhdFNlcmllczogY29uY2F0U2VyaWVzJDEsXG4gICAgICAgIGNvbnN0YW50LFxuICAgICAgICBkZXRlY3Q6IGRldGVjdCQxLFxuICAgICAgICBkZXRlY3RMaW1pdDogZGV0ZWN0TGltaXQkMSxcbiAgICAgICAgZGV0ZWN0U2VyaWVzOiBkZXRlY3RTZXJpZXMkMSxcbiAgICAgICAgZGlyLFxuICAgICAgICBkb1VudGlsLFxuICAgICAgICBkb1doaWxzdDogZG9XaGlsc3QkMSxcbiAgICAgICAgZWFjaCxcbiAgICAgICAgZWFjaExpbWl0OiBlYWNoTGltaXQkMixcbiAgICAgICAgZWFjaE9mOiBlYWNoT2YkMSxcbiAgICAgICAgZWFjaE9mTGltaXQ6IGVhY2hPZkxpbWl0JDIsXG4gICAgICAgIGVhY2hPZlNlcmllczogZWFjaE9mU2VyaWVzJDEsXG4gICAgICAgIGVhY2hTZXJpZXM6IGVhY2hTZXJpZXMkMSxcbiAgICAgICAgZW5zdXJlQXN5bmMsXG4gICAgICAgIGV2ZXJ5OiBldmVyeSQxLFxuICAgICAgICBldmVyeUxpbWl0OiBldmVyeUxpbWl0JDEsXG4gICAgICAgIGV2ZXJ5U2VyaWVzOiBldmVyeVNlcmllcyQxLFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciQxLFxuICAgICAgICBmaWx0ZXJMaW1pdDogZmlsdGVyTGltaXQkMSxcbiAgICAgICAgZmlsdGVyU2VyaWVzOiBmaWx0ZXJTZXJpZXMkMSxcbiAgICAgICAgZm9yZXZlcjogZm9yZXZlciQxLFxuICAgICAgICBncm91cEJ5LFxuICAgICAgICBncm91cEJ5TGltaXQ6IGdyb3VwQnlMaW1pdCQxLFxuICAgICAgICBncm91cEJ5U2VyaWVzLFxuICAgICAgICBsb2csXG4gICAgICAgIG1hcDogbWFwJDEsXG4gICAgICAgIG1hcExpbWl0OiBtYXBMaW1pdCQxLFxuICAgICAgICBtYXBTZXJpZXM6IG1hcFNlcmllcyQxLFxuICAgICAgICBtYXBWYWx1ZXMsXG4gICAgICAgIG1hcFZhbHVlc0xpbWl0OiBtYXBWYWx1ZXNMaW1pdCQxLFxuICAgICAgICBtYXBWYWx1ZXNTZXJpZXMsXG4gICAgICAgIG1lbW9pemUsXG4gICAgICAgIG5leHRUaWNrLFxuICAgICAgICBwYXJhbGxlbDogcGFyYWxsZWwkMSxcbiAgICAgICAgcGFyYWxsZWxMaW1pdCxcbiAgICAgICAgcHJpb3JpdHlRdWV1ZSxcbiAgICAgICAgcXVldWU6IHF1ZXVlJDEsXG4gICAgICAgIHJhY2U6IHJhY2UkMSxcbiAgICAgICAgcmVkdWNlOiByZWR1Y2UkMSxcbiAgICAgICAgcmVkdWNlUmlnaHQsXG4gICAgICAgIHJlZmxlY3QsXG4gICAgICAgIHJlZmxlY3RBbGwsXG4gICAgICAgIHJlamVjdDogcmVqZWN0JDIsXG4gICAgICAgIHJlamVjdExpbWl0OiByZWplY3RMaW1pdCQxLFxuICAgICAgICByZWplY3RTZXJpZXM6IHJlamVjdFNlcmllcyQxLFxuICAgICAgICByZXRyeSxcbiAgICAgICAgcmV0cnlhYmxlLFxuICAgICAgICBzZXEsXG4gICAgICAgIHNlcmllcyxcbiAgICAgICAgc2V0SW1tZWRpYXRlOiBzZXRJbW1lZGlhdGUkMSxcbiAgICAgICAgc29tZTogc29tZSQxLFxuICAgICAgICBzb21lTGltaXQ6IHNvbWVMaW1pdCQxLFxuICAgICAgICBzb21lU2VyaWVzOiBzb21lU2VyaWVzJDEsXG4gICAgICAgIHNvcnRCeTogc29ydEJ5JDEsXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICAgIHRpbWVzLFxuICAgICAgICB0aW1lc0xpbWl0LFxuICAgICAgICB0aW1lc1NlcmllcyxcbiAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICB0cnlFYWNoOiB0cnlFYWNoJDEsXG4gICAgICAgIHVubWVtb2l6ZSxcbiAgICAgICAgdW50aWwsXG4gICAgICAgIHdhdGVyZmFsbDogd2F0ZXJmYWxsJDEsXG4gICAgICAgIHdoaWxzdDogd2hpbHN0JDEsXG5cbiAgICAgICAgLy8gYWxpYXNlc1xuICAgICAgICBhbGw6IGV2ZXJ5JDEsXG4gICAgICAgIGFsbExpbWl0OiBldmVyeUxpbWl0JDEsXG4gICAgICAgIGFsbFNlcmllczogZXZlcnlTZXJpZXMkMSxcbiAgICAgICAgYW55OiBzb21lJDEsXG4gICAgICAgIGFueUxpbWl0OiBzb21lTGltaXQkMSxcbiAgICAgICAgYW55U2VyaWVzOiBzb21lU2VyaWVzJDEsXG4gICAgICAgIGZpbmQ6IGRldGVjdCQxLFxuICAgICAgICBmaW5kTGltaXQ6IGRldGVjdExpbWl0JDEsXG4gICAgICAgIGZpbmRTZXJpZXM6IGRldGVjdFNlcmllcyQxLFxuICAgICAgICBmbGF0TWFwOiBjb25jYXQkMSxcbiAgICAgICAgZmxhdE1hcExpbWl0OiBjb25jYXRMaW1pdCQxLFxuICAgICAgICBmbGF0TWFwU2VyaWVzOiBjb25jYXRTZXJpZXMkMSxcbiAgICAgICAgZm9yRWFjaDogZWFjaCxcbiAgICAgICAgZm9yRWFjaFNlcmllczogZWFjaFNlcmllcyQxLFxuICAgICAgICBmb3JFYWNoTGltaXQ6IGVhY2hMaW1pdCQyLFxuICAgICAgICBmb3JFYWNoT2Y6IGVhY2hPZiQxLFxuICAgICAgICBmb3JFYWNoT2ZTZXJpZXM6IGVhY2hPZlNlcmllcyQxLFxuICAgICAgICBmb3JFYWNoT2ZMaW1pdDogZWFjaE9mTGltaXQkMixcbiAgICAgICAgaW5qZWN0OiByZWR1Y2UkMSxcbiAgICAgICAgZm9sZGw6IHJlZHVjZSQxLFxuICAgICAgICBmb2xkcjogcmVkdWNlUmlnaHQsXG4gICAgICAgIHNlbGVjdDogZmlsdGVyJDEsXG4gICAgICAgIHNlbGVjdExpbWl0OiBmaWx0ZXJMaW1pdCQxLFxuICAgICAgICBzZWxlY3RTZXJpZXM6IGZpbHRlclNlcmllcyQxLFxuICAgICAgICB3cmFwU3luYzogYXN5bmNpZnksXG4gICAgICAgIGR1cmluZzogd2hpbHN0JDEsXG4gICAgICAgIGRvRHVyaW5nOiBkb1doaWxzdCQxXG4gICAgfTtcblxuICAgIGV4cG9ydHMuZGVmYXVsdCA9IGluZGV4O1xuICAgIGV4cG9ydHMuYXBwbHkgPSBhcHBseTtcbiAgICBleHBvcnRzLmFwcGx5RWFjaCA9IGFwcGx5RWFjaCQxO1xuICAgIGV4cG9ydHMuYXBwbHlFYWNoU2VyaWVzID0gYXBwbHlFYWNoU2VyaWVzO1xuICAgIGV4cG9ydHMuYXN5bmNpZnkgPSBhc3luY2lmeTtcbiAgICBleHBvcnRzLmF1dG8gPSBhdXRvO1xuICAgIGV4cG9ydHMuYXV0b0luamVjdCA9IGF1dG9JbmplY3Q7XG4gICAgZXhwb3J0cy5jYXJnbyA9IGNhcmdvO1xuICAgIGV4cG9ydHMuY2FyZ29RdWV1ZSA9IGNhcmdvJDE7XG4gICAgZXhwb3J0cy5jb21wb3NlID0gY29tcG9zZTtcbiAgICBleHBvcnRzLmNvbmNhdCA9IGNvbmNhdCQxO1xuICAgIGV4cG9ydHMuY29uY2F0TGltaXQgPSBjb25jYXRMaW1pdCQxO1xuICAgIGV4cG9ydHMuY29uY2F0U2VyaWVzID0gY29uY2F0U2VyaWVzJDE7XG4gICAgZXhwb3J0cy5jb25zdGFudCA9IGNvbnN0YW50O1xuICAgIGV4cG9ydHMuZGV0ZWN0ID0gZGV0ZWN0JDE7XG4gICAgZXhwb3J0cy5kZXRlY3RMaW1pdCA9IGRldGVjdExpbWl0JDE7XG4gICAgZXhwb3J0cy5kZXRlY3RTZXJpZXMgPSBkZXRlY3RTZXJpZXMkMTtcbiAgICBleHBvcnRzLmRpciA9IGRpcjtcbiAgICBleHBvcnRzLmRvVW50aWwgPSBkb1VudGlsO1xuICAgIGV4cG9ydHMuZG9XaGlsc3QgPSBkb1doaWxzdCQxO1xuICAgIGV4cG9ydHMuZWFjaCA9IGVhY2g7XG4gICAgZXhwb3J0cy5lYWNoTGltaXQgPSBlYWNoTGltaXQkMjtcbiAgICBleHBvcnRzLmVhY2hPZiA9IGVhY2hPZiQxO1xuICAgIGV4cG9ydHMuZWFjaE9mTGltaXQgPSBlYWNoT2ZMaW1pdCQyO1xuICAgIGV4cG9ydHMuZWFjaE9mU2VyaWVzID0gZWFjaE9mU2VyaWVzJDE7XG4gICAgZXhwb3J0cy5lYWNoU2VyaWVzID0gZWFjaFNlcmllcyQxO1xuICAgIGV4cG9ydHMuZW5zdXJlQXN5bmMgPSBlbnN1cmVBc3luYztcbiAgICBleHBvcnRzLmV2ZXJ5ID0gZXZlcnkkMTtcbiAgICBleHBvcnRzLmV2ZXJ5TGltaXQgPSBldmVyeUxpbWl0JDE7XG4gICAgZXhwb3J0cy5ldmVyeVNlcmllcyA9IGV2ZXJ5U2VyaWVzJDE7XG4gICAgZXhwb3J0cy5maWx0ZXIgPSBmaWx0ZXIkMTtcbiAgICBleHBvcnRzLmZpbHRlckxpbWl0ID0gZmlsdGVyTGltaXQkMTtcbiAgICBleHBvcnRzLmZpbHRlclNlcmllcyA9IGZpbHRlclNlcmllcyQxO1xuICAgIGV4cG9ydHMuZm9yZXZlciA9IGZvcmV2ZXIkMTtcbiAgICBleHBvcnRzLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGV4cG9ydHMuZ3JvdXBCeUxpbWl0ID0gZ3JvdXBCeUxpbWl0JDE7XG4gICAgZXhwb3J0cy5ncm91cEJ5U2VyaWVzID0gZ3JvdXBCeVNlcmllcztcbiAgICBleHBvcnRzLmxvZyA9IGxvZztcbiAgICBleHBvcnRzLm1hcCA9IG1hcCQxO1xuICAgIGV4cG9ydHMubWFwTGltaXQgPSBtYXBMaW1pdCQxO1xuICAgIGV4cG9ydHMubWFwU2VyaWVzID0gbWFwU2VyaWVzJDE7XG4gICAgZXhwb3J0cy5tYXBWYWx1ZXMgPSBtYXBWYWx1ZXM7XG4gICAgZXhwb3J0cy5tYXBWYWx1ZXNMaW1pdCA9IG1hcFZhbHVlc0xpbWl0JDE7XG4gICAgZXhwb3J0cy5tYXBWYWx1ZXNTZXJpZXMgPSBtYXBWYWx1ZXNTZXJpZXM7XG4gICAgZXhwb3J0cy5tZW1vaXplID0gbWVtb2l6ZTtcbiAgICBleHBvcnRzLm5leHRUaWNrID0gbmV4dFRpY2s7XG4gICAgZXhwb3J0cy5wYXJhbGxlbCA9IHBhcmFsbGVsJDE7XG4gICAgZXhwb3J0cy5wYXJhbGxlbExpbWl0ID0gcGFyYWxsZWxMaW1pdDtcbiAgICBleHBvcnRzLnByaW9yaXR5UXVldWUgPSBwcmlvcml0eVF1ZXVlO1xuICAgIGV4cG9ydHMucXVldWUgPSBxdWV1ZSQxO1xuICAgIGV4cG9ydHMucmFjZSA9IHJhY2UkMTtcbiAgICBleHBvcnRzLnJlZHVjZSA9IHJlZHVjZSQxO1xuICAgIGV4cG9ydHMucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBleHBvcnRzLnJlZmxlY3QgPSByZWZsZWN0O1xuICAgIGV4cG9ydHMucmVmbGVjdEFsbCA9IHJlZmxlY3RBbGw7XG4gICAgZXhwb3J0cy5yZWplY3QgPSByZWplY3QkMjtcbiAgICBleHBvcnRzLnJlamVjdExpbWl0ID0gcmVqZWN0TGltaXQkMTtcbiAgICBleHBvcnRzLnJlamVjdFNlcmllcyA9IHJlamVjdFNlcmllcyQxO1xuICAgIGV4cG9ydHMucmV0cnkgPSByZXRyeTtcbiAgICBleHBvcnRzLnJldHJ5YWJsZSA9IHJldHJ5YWJsZTtcbiAgICBleHBvcnRzLnNlcSA9IHNlcTtcbiAgICBleHBvcnRzLnNlcmllcyA9IHNlcmllcztcbiAgICBleHBvcnRzLnNldEltbWVkaWF0ZSA9IHNldEltbWVkaWF0ZSQxO1xuICAgIGV4cG9ydHMuc29tZSA9IHNvbWUkMTtcbiAgICBleHBvcnRzLnNvbWVMaW1pdCA9IHNvbWVMaW1pdCQxO1xuICAgIGV4cG9ydHMuc29tZVNlcmllcyA9IHNvbWVTZXJpZXMkMTtcbiAgICBleHBvcnRzLnNvcnRCeSA9IHNvcnRCeSQxO1xuICAgIGV4cG9ydHMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgZXhwb3J0cy50aW1lcyA9IHRpbWVzO1xuICAgIGV4cG9ydHMudGltZXNMaW1pdCA9IHRpbWVzTGltaXQ7XG4gICAgZXhwb3J0cy50aW1lc1NlcmllcyA9IHRpbWVzU2VyaWVzO1xuICAgIGV4cG9ydHMudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGV4cG9ydHMudHJ5RWFjaCA9IHRyeUVhY2gkMTtcbiAgICBleHBvcnRzLnVubWVtb2l6ZSA9IHVubWVtb2l6ZTtcbiAgICBleHBvcnRzLnVudGlsID0gdW50aWw7XG4gICAgZXhwb3J0cy53YXRlcmZhbGwgPSB3YXRlcmZhbGwkMTtcbiAgICBleHBvcnRzLndoaWxzdCA9IHdoaWxzdCQxO1xuICAgIGV4cG9ydHMuYWxsID0gZXZlcnkkMTtcbiAgICBleHBvcnRzLmFsbExpbWl0ID0gZXZlcnlMaW1pdCQxO1xuICAgIGV4cG9ydHMuYWxsU2VyaWVzID0gZXZlcnlTZXJpZXMkMTtcbiAgICBleHBvcnRzLmFueSA9IHNvbWUkMTtcbiAgICBleHBvcnRzLmFueUxpbWl0ID0gc29tZUxpbWl0JDE7XG4gICAgZXhwb3J0cy5hbnlTZXJpZXMgPSBzb21lU2VyaWVzJDE7XG4gICAgZXhwb3J0cy5maW5kID0gZGV0ZWN0JDE7XG4gICAgZXhwb3J0cy5maW5kTGltaXQgPSBkZXRlY3RMaW1pdCQxO1xuICAgIGV4cG9ydHMuZmluZFNlcmllcyA9IGRldGVjdFNlcmllcyQxO1xuICAgIGV4cG9ydHMuZmxhdE1hcCA9IGNvbmNhdCQxO1xuICAgIGV4cG9ydHMuZmxhdE1hcExpbWl0ID0gY29uY2F0TGltaXQkMTtcbiAgICBleHBvcnRzLmZsYXRNYXBTZXJpZXMgPSBjb25jYXRTZXJpZXMkMTtcbiAgICBleHBvcnRzLmZvckVhY2ggPSBlYWNoO1xuICAgIGV4cG9ydHMuZm9yRWFjaFNlcmllcyA9IGVhY2hTZXJpZXMkMTtcbiAgICBleHBvcnRzLmZvckVhY2hMaW1pdCA9IGVhY2hMaW1pdCQyO1xuICAgIGV4cG9ydHMuZm9yRWFjaE9mID0gZWFjaE9mJDE7XG4gICAgZXhwb3J0cy5mb3JFYWNoT2ZTZXJpZXMgPSBlYWNoT2ZTZXJpZXMkMTtcbiAgICBleHBvcnRzLmZvckVhY2hPZkxpbWl0ID0gZWFjaE9mTGltaXQkMjtcbiAgICBleHBvcnRzLmluamVjdCA9IHJlZHVjZSQxO1xuICAgIGV4cG9ydHMuZm9sZGwgPSByZWR1Y2UkMTtcbiAgICBleHBvcnRzLmZvbGRyID0gcmVkdWNlUmlnaHQ7XG4gICAgZXhwb3J0cy5zZWxlY3QgPSBmaWx0ZXIkMTtcbiAgICBleHBvcnRzLnNlbGVjdExpbWl0ID0gZmlsdGVyTGltaXQkMTtcbiAgICBleHBvcnRzLnNlbGVjdFNlcmllcyA9IGZpbHRlclNlcmllcyQxO1xuICAgIGV4cG9ydHMud3JhcFN5bmMgPSBhc3luY2lmeTtcbiAgICBleHBvcnRzLmR1cmluZyA9IHdoaWxzdCQxO1xuICAgIGV4cG9ydHMuZG9EdXJpbmcgPSBkb1doaWxzdCQxO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpKTtcbiIsICJjb25zdCB7IGhhc093blByb3BlcnR5IH0gPSBPYmplY3QucHJvdG90eXBlXG5cbmNvbnN0IGVvbCA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gJ1xcclxcbicgOiAnXFxuJ1xuXG5jb25zdCBlbmNvZGUgPSAob2JqLCBvcHQpID0+IHtcbiAgY29uc3QgY2hpbGRyZW4gPSBbXVxuICBsZXQgb3V0ID0gJydcblxuICBpZiAodHlwZW9mIG9wdCA9PT0gJ3N0cmluZycpIHtcbiAgICBvcHQgPSB7XG4gICAgICBzZWN0aW9uOiBvcHQsXG4gICAgICB3aGl0ZXNwYWNlOiBmYWxzZSxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3B0ID0gb3B0IHx8IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICBvcHQud2hpdGVzcGFjZSA9IG9wdC53aGl0ZXNwYWNlID09PSB0cnVlXG4gIH1cblxuICBjb25zdCBzZXBhcmF0b3IgPSBvcHQud2hpdGVzcGFjZSA/ICcgPSAnIDogJz0nXG5cbiAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKG9iaikpIHtcbiAgICBjb25zdCB2YWwgPSBvYmpba11cbiAgICBpZiAodmFsICYmIEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbClcbiAgICAgICAgb3V0ICs9IHNhZmUoayArICdbXScpICsgc2VwYXJhdG9yICsgc2FmZShpdGVtKSArICdcXG4nXG4gICAgfSBlbHNlIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpXG4gICAgICBjaGlsZHJlbi5wdXNoKGspXG4gICAgZWxzZVxuICAgICAgb3V0ICs9IHNhZmUoaykgKyBzZXBhcmF0b3IgKyBzYWZlKHZhbCkgKyBlb2xcbiAgfVxuXG4gIGlmIChvcHQuc2VjdGlvbiAmJiBvdXQubGVuZ3RoKVxuICAgIG91dCA9ICdbJyArIHNhZmUob3B0LnNlY3Rpb24pICsgJ10nICsgZW9sICsgb3V0XG5cbiAgZm9yIChjb25zdCBrIG9mIGNoaWxkcmVuKSB7XG4gICAgY29uc3QgbmsgPSBkb3RTcGxpdChrKS5qb2luKCdcXFxcLicpXG4gICAgY29uc3Qgc2VjdGlvbiA9IChvcHQuc2VjdGlvbiA/IG9wdC5zZWN0aW9uICsgJy4nIDogJycpICsgbmtcbiAgICBjb25zdCB7IHdoaXRlc3BhY2UgfSA9IG9wdFxuICAgIGNvbnN0IGNoaWxkID0gZW5jb2RlKG9ialtrXSwge1xuICAgICAgc2VjdGlvbixcbiAgICAgIHdoaXRlc3BhY2UsXG4gICAgfSlcbiAgICBpZiAob3V0Lmxlbmd0aCAmJiBjaGlsZC5sZW5ndGgpXG4gICAgICBvdXQgKz0gZW9sXG5cbiAgICBvdXQgKz0gY2hpbGRcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuY29uc3QgZG90U3BsaXQgPSBzdHIgPT5cbiAgc3RyLnJlcGxhY2UoL1xcMS9nLCAnXFx1MDAwMkxJVEVSQUxcXFxcMUxJVEVSQUxcXHUwMDAyJylcbiAgICAucmVwbGFjZSgvXFxcXFxcLi9nLCAnXFx1MDAwMScpXG4gICAgLnNwbGl0KC9cXC4vKVxuICAgIC5tYXAocGFydCA9PlxuICAgICAgcGFydC5yZXBsYWNlKC9cXDEvZywgJ1xcXFwuJylcbiAgICAgICAgLnJlcGxhY2UoL1xcMkxJVEVSQUxcXFxcMUxJVEVSQUxcXDIvZywgJ1xcdTAwMDEnKSlcblxuY29uc3QgZGVjb2RlID0gc3RyID0+IHtcbiAgY29uc3Qgb3V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICBsZXQgcCA9IG91dFxuICBsZXQgc2VjdGlvbiA9IG51bGxcbiAgLy8gICAgICAgICAgc2VjdGlvbiAgICAgfGtleSAgICAgID0gdmFsdWVcbiAgY29uc3QgcmUgPSAvXlxcWyhbXlxcXV0qKVxcXSR8XihbXj1dKykoPSguKikpPyQvaVxuICBjb25zdCBsaW5lcyA9IHN0ci5zcGxpdCgvW1xcclxcbl0rL2cpXG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgaWYgKCFsaW5lIHx8IGxpbmUubWF0Y2goL15cXHMqWzsjXS8pKVxuICAgICAgY29udGludWVcbiAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2gocmUpXG4gICAgaWYgKCFtYXRjaClcbiAgICAgIGNvbnRpbnVlXG4gICAgaWYgKG1hdGNoWzFdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlY3Rpb24gPSB1bnNhZmUobWF0Y2hbMV0pXG4gICAgICBpZiAoc2VjdGlvbiA9PT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgLy8gbm90IGFsbG93ZWRcbiAgICAgICAgLy8ga2VlcCBwYXJzaW5nIHRoZSBzZWN0aW9uLCBidXQgZG9uJ3QgYXR0YWNoIGl0LlxuICAgICAgICBwID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgcCA9IG91dFtzZWN0aW9uXSA9IG91dFtzZWN0aW9uXSB8fCBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBrZXlSYXcgPSB1bnNhZmUobWF0Y2hbMl0pXG4gICAgY29uc3QgaXNBcnJheSA9IGtleVJhdy5sZW5ndGggPiAyICYmIGtleVJhdy5zbGljZSgtMikgPT09ICdbXSdcbiAgICBjb25zdCBrZXkgPSBpc0FycmF5ID8ga2V5UmF3LnNsaWNlKDAsIC0yKSA6IGtleVJhd1xuICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nKVxuICAgICAgY29udGludWVcbiAgICBjb25zdCB2YWx1ZVJhdyA9IG1hdGNoWzNdID8gdW5zYWZlKG1hdGNoWzRdKSA6IHRydWVcbiAgICBjb25zdCB2YWx1ZSA9IHZhbHVlUmF3ID09PSAndHJ1ZScgfHxcbiAgICAgIHZhbHVlUmF3ID09PSAnZmFsc2UnIHx8XG4gICAgICB2YWx1ZVJhdyA9PT0gJ251bGwnID8gSlNPTi5wYXJzZSh2YWx1ZVJhdylcbiAgICAgIDogdmFsdWVSYXdcblxuICAgIC8vIENvbnZlcnQga2V5cyB3aXRoICdbXScgc3VmZml4IHRvIGFuIGFycmF5XG4gICAgaWYgKGlzQXJyYXkpIHtcbiAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChwLCBrZXkpKVxuICAgICAgICBwW2tleV0gPSBbXVxuICAgICAgZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkocFtrZXldKSlcbiAgICAgICAgcFtrZXldID0gW3Bba2V5XV1cbiAgICB9XG5cbiAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCByZXNldHRpbmcgYSBwcmV2aW91c2x5IGRlZmluZWRcbiAgICAvLyBhcnJheSBieSBhY2NpZGVudGFsbHkgZm9yZ2V0dGluZyB0aGUgYnJhY2tldHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwW2tleV0pKVxuICAgICAgcFtrZXldLnB1c2godmFsdWUpXG4gICAgZWxzZVxuICAgICAgcFtrZXldID0gdmFsdWVcbiAgfVxuXG4gIC8vIHthOnt5OjF9LFwiYS5iXCI6e3g6Mn19IC0tPiB7YTp7eToxLGI6e3g6Mn19fVxuICAvLyB1c2UgYSBmaWx0ZXIgdG8gcmV0dXJuIHRoZSBrZXlzIHRoYXQgaGF2ZSB0byBiZSBkZWxldGVkLlxuICBjb25zdCByZW1vdmUgPSBbXVxuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMob3V0KSkge1xuICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvdXQsIGspIHx8XG4gICAgICAgIHR5cGVvZiBvdXRba10gIT09ICdvYmplY3QnIHx8XG4gICAgICAgIEFycmF5LmlzQXJyYXkob3V0W2tdKSlcbiAgICAgIGNvbnRpbnVlXG5cbiAgICAvLyBzZWUgaWYgdGhlIHBhcmVudCBzZWN0aW9uIGlzIGFsc28gYW4gb2JqZWN0LlxuICAgIC8vIGlmIHNvLCBhZGQgaXQgdG8gdGhhdCwgYW5kIG1hcmsgdGhpcyBvbmUgZm9yIGRlbGV0aW9uXG4gICAgY29uc3QgcGFydHMgPSBkb3RTcGxpdChrKVxuICAgIGxldCBwID0gb3V0XG4gICAgY29uc3QgbCA9IHBhcnRzLnBvcCgpXG4gICAgY29uc3QgbmwgPSBsLnJlcGxhY2UoL1xcXFxcXC4vZywgJy4nKVxuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgaWYgKHBhcnQgPT09ICdfX3Byb3RvX18nKVxuICAgICAgICBjb250aW51ZVxuICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHAsIHBhcnQpIHx8IHR5cGVvZiBwW3BhcnRdICE9PSAnb2JqZWN0JylcbiAgICAgICAgcFtwYXJ0XSA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICAgIHAgPSBwW3BhcnRdXG4gICAgfVxuICAgIGlmIChwID09PSBvdXQgJiYgbmwgPT09IGwpXG4gICAgICBjb250aW51ZVxuXG4gICAgcFtubF0gPSBvdXRba11cbiAgICByZW1vdmUucHVzaChrKVxuICB9XG4gIGZvciAoY29uc3QgZGVsIG9mIHJlbW92ZSlcbiAgICBkZWxldGUgb3V0W2RlbF1cblxuICByZXR1cm4gb3V0XG59XG5cbmNvbnN0IGlzUXVvdGVkID0gdmFsID0+XG4gICh2YWwuY2hhckF0KDApID09PSAnXCInICYmIHZhbC5zbGljZSgtMSkgPT09ICdcIicpIHx8XG4gICAgKHZhbC5jaGFyQXQoMCkgPT09IFwiJ1wiICYmIHZhbC5zbGljZSgtMSkgPT09IFwiJ1wiKVxuXG5jb25zdCBzYWZlID0gdmFsID0+XG4gICh0eXBlb2YgdmFsICE9PSAnc3RyaW5nJyB8fFxuICAgIHZhbC5tYXRjaCgvWz1cXHJcXG5dLykgfHxcbiAgICB2YWwubWF0Y2goL15cXFsvKSB8fFxuICAgICh2YWwubGVuZ3RoID4gMSAmJlxuICAgICBpc1F1b3RlZCh2YWwpKSB8fFxuICAgIHZhbCAhPT0gdmFsLnRyaW0oKSlcbiAgICA/IEpTT04uc3RyaW5naWZ5KHZhbClcbiAgICA6IHZhbC5yZXBsYWNlKC87L2csICdcXFxcOycpLnJlcGxhY2UoLyMvZywgJ1xcXFwjJylcblxuY29uc3QgdW5zYWZlID0gKHZhbCwgZG9VbmVzYykgPT4ge1xuICB2YWwgPSAodmFsIHx8ICcnKS50cmltKClcbiAgaWYgKGlzUXVvdGVkKHZhbCkpIHtcbiAgICAvLyByZW1vdmUgdGhlIHNpbmdsZSBxdW90ZXMgYmVmb3JlIGNhbGxpbmcgSlNPTi5wYXJzZVxuICAgIGlmICh2YWwuY2hhckF0KDApID09PSBcIidcIilcbiAgICAgIHZhbCA9IHZhbC5zdWJzdHIoMSwgdmFsLmxlbmd0aCAtIDIpXG5cbiAgICB0cnkge1xuICAgICAgdmFsID0gSlNPTi5wYXJzZSh2YWwpXG4gICAgfSBjYXRjaCAoXykge31cbiAgfSBlbHNlIHtcbiAgICAvLyB3YWxrIHRoZSB2YWwgdG8gZmluZCB0aGUgZmlyc3Qgbm90LWVzY2FwZWQgOyBjaGFyYWN0ZXJcbiAgICBsZXQgZXNjID0gZmFsc2VcbiAgICBsZXQgdW5lc2MgPSAnJ1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgYyA9IHZhbC5jaGFyQXQoaSlcbiAgICAgIGlmIChlc2MpIHtcbiAgICAgICAgaWYgKCdcXFxcOyMnLmluZGV4T2YoYykgIT09IC0xKVxuICAgICAgICAgIHVuZXNjICs9IGNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHVuZXNjICs9ICdcXFxcJyArIGNcblxuICAgICAgICBlc2MgPSBmYWxzZVxuICAgICAgfSBlbHNlIGlmICgnOyMnLmluZGV4T2YoYykgIT09IC0xKVxuICAgICAgICBicmVha1xuICAgICAgZWxzZSBpZiAoYyA9PT0gJ1xcXFwnKVxuICAgICAgICBlc2MgPSB0cnVlXG4gICAgICBlbHNlXG4gICAgICAgIHVuZXNjICs9IGNcbiAgICB9XG4gICAgaWYgKGVzYylcbiAgICAgIHVuZXNjICs9ICdcXFxcJ1xuXG4gICAgcmV0dXJuIHVuZXNjLnRyaW0oKVxuICB9XG4gIHJldHVybiB2YWxcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBhcnNlOiBkZWNvZGUsXG4gIGRlY29kZSxcbiAgc3RyaW5naWZ5OiBlbmNvZGUsXG4gIGVuY29kZSxcbiAgc2FmZSxcbiAgdW5zYWZlLFxufVxuIiwgIi8qXG4gKiBmb3JtYXRzLmpzOiBEZWZhdWx0IGZvcm1hdHMgc3VwcG9ydGVkIGJ5IG5jb25mXG4gKlxuICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucyBhbmQgdGhlIENvbnRyaWJ1dG9ycy5cbiAqXG4gKi9cblxudmFyIGluaSA9IHJlcXVpcmUoJ2luaScpO1xuXG52YXIgZm9ybWF0cyA9IGV4cG9ydHM7XG5cbi8vXG4vLyAjIyMgQGpzb25cbi8vIFN0YW5kYXJkIEpTT04gZm9ybWF0IHdoaWNoIHByZXR0eSBwcmludHMgYC5zdHJpbmdpZnkoKWAuXG4vL1xuZm9ybWF0cy5qc29uID0ge1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIChvYmosIHJlcGxhY2VyLCBzcGFjaW5nKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgcmVwbGFjZXIgfHwgbnVsbCwgc3BhY2luZyB8fCAyKVxuICB9LFxuICBwYXJzZTogSlNPTi5wYXJzZVxufTtcblxuLy9cbi8vICMjIyBAaW5pXG4vLyBTdGFuZGFyZCBJTkkgZm9ybWF0IHN1cHBsaWVkIGZyb20gdGhlIGBpbmlgIG1vZHVsZVxuLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JTklfZmlsZVxuLy9cbmZvcm1hdHMuaW5pID0gaW5pO1xuIiwgIi8qXG4gKiBtZW1vcnkuanM6IFNpbXBsZSBtZW1vcnkgc3RvcmFnZSBlbmdpbmUgZm9yIG5jb25mIGNvbmZpZ3VyYXRpb24ocylcbiAqXG4gKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zIGFuZCB0aGUgQ29udHJpYnV0b3JzLlxuICpcbiAqL1xuXG5jb25zdCBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcblxuY29uc3QgREVGQVVMVF9BQ0NFU1NfU0VQQVJBVE9SID0gJzonO1xuY29uc3QgREVGQVVMVF9JTlBVVF9TRVBBUkFUT1IgPSAnX18nO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHByZXBhcmluZyBhIHN0cmluZyBmb3IgcmVnZXggbWF0Y2hpbmdcbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHJpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdHJpbmcgPT09ICdzdHJpbmcnICYmIHN0cmluZy5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpOyAvLyAkJiBtZWFucyB0aGUgd2hvbGUgbWF0Y2hlZCBzdHJpbmdcbn1cblxuLy9cbi8vICMjIyBmdW5jdGlvbiBNZW1vcnkgKG9wdGlvbnMpXG4vLyAjIyMjIEBvcHRpb25zIHtPYmplY3R9IE9wdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2Vcbi8vIENvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciB0aGUgTWVtb3J5IG5jb25mIHN0b3JlIHdoaWNoIG1haW50YWluc1xuLy8gYSBuZXN0ZWQganNvbiBzdHJ1Y3R1cmUgYmFzZWQgb24ga2V5IGRlbGltaXRlcnMgYDpgLlxuLy9cbi8vIGUuZy4gYG15Om5lc3RlZDprZXlgID09PiBgeyBteTogeyBuZXN0ZWQ6IHsga2V5OiB9IH0gfWBcbi8vXG52YXIgTWVtb3J5ID0gZXhwb3J0cy5NZW1vcnkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBvcHRpb25zICAgICAgID0gb3B0aW9ucyB8fCB7fTtcbiAgdGhpcy50eXBlICAgICA9ICdtZW1vcnknO1xuICB0aGlzLnN0b3JlICAgID0ge307XG4gIHRoaXMubXRpbWVzICAgPSB7fTtcbiAgdGhpcy5yZWFkT25seSA9IGZhbHNlO1xuICB0aGlzLmxvYWRGcm9tID0gb3B0aW9ucy5sb2FkRnJvbSB8fCBudWxsO1xuICB0aGlzLmFjY2Vzc1NlcGFyYXRvciA9IG9wdGlvbnMuYWNjZXNzU2VwYXJhdG9yIHx8IERFRkFVTFRfQUNDRVNTX1NFUEFSQVRPUjtcbiAgdGhpcy5pbnB1dFNlcGFyYXRvciA9IG9wdGlvbnMuaW5wdXRTZXBhcmF0b3IgfHwgREVGQVVMVF9JTlBVVF9TRVBBUkFUT1I7XG4gIHRoaXMucGFyc2VWYWx1ZXMgPSBvcHRpb25zLnBhcnNlVmFsdWVzIHx8IGZhbHNlO1xuICB0aGlzLmRpc2FibGVEZWZhdWx0QWNjZXNzU2VwYXJhdG9yID0gb3B0aW9ucy5kaXNhYmxlRGVmYXVsdEFjY2Vzc1NlcGFyYXRvciB8fCBmYWxzZTtcblxuICBpZiAodHlwZW9mKG9wdGlvbnMpID09PSAnc3RyaW5nJyB8fCBvcHRpb25zIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgdGhpcy5pbnB1dFNlcGFyYXRvciA9IG9wdGlvbnM7XG4gIH1cblxuICBpZiAodGhpcy5sb2FkRnJvbSkge1xuICAgIHRoaXMuc3RvcmUgPSBjb21tb24ubG9hZEZpbGVzU3luYyh0aGlzLmxvYWRGcm9tKTtcbiAgfVxufTtcblxuTWVtb3J5LnByb3RvdHlwZS5fbm9ybWFsaXplS2V5ID0gZnVuY3Rpb24gKGtleSkge1xuICBsZXQgaW5wdXRTZXBhcmF0b3IgPSB0aGlzLmlucHV0U2VwYXJhdG9yO1xuICBpZiAoaW5wdXRTZXBhcmF0b3IgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICBpbnB1dFNlcGFyYXRvciA9IGlucHV0U2VwYXJhdG9yLnNvdXJjZTtcbiAgfSBlbHNlIHtcbiAgICBpbnB1dFNlcGFyYXRvciA9IGVzY2FwZVJlZ0V4cChpbnB1dFNlcGFyYXRvcik7XG4gIH1cbiAgbGV0IHNlcGFyYXRvclJlZ2V4U3RyID0gYCR7ZXNjYXBlUmVnRXhwKHRoaXMuYWNjZXNzU2VwYXJhdG9yKX18JHtpbnB1dFNlcGFyYXRvcn1gO1xuXG4gIGlmICghdGhpcy5kaXNhYmxlRGVmYXVsdEFjY2Vzc1NlcGFyYXRvcikge1xuICAgIHNlcGFyYXRvclJlZ2V4U3RyICs9IGB8JHtERUZBVUxUX0FDQ0VTU19TRVBBUkFUT1J9YDtcbiAgfVxuXG4gIGNvbnN0IHNlcGFyYXRvclJlZ0V4ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3JSZWdleFN0ciwgJ2cnKTtcbiAgcmV0dXJuIGtleSAmJiBrZXkucmVwbGFjZShzZXBhcmF0b3JSZWdFeCwgdGhpcy5hY2Nlc3NTZXBhcmF0b3IpO1xufVxuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGdldCAoa2V5KVxuLy8gIyMjIyBAa2V5IHtzdHJpbmd9IEtleSB0byByZXRyaWV2ZSBmb3IgdGhpcyBpbnN0YW5jZS5cbi8vIFJldHJpZXZlcyB0aGUgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5IChpZiBhbnkpLlxuLy9cbk1lbW9yeS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICB2YXIgdGFyZ2V0ID0gdGhpcy5zdG9yZSxcbiAgICAgIHBhdGggICA9IGNvbW1vbi5wYXRoKHRoaXMuX25vcm1hbGl6ZUtleShrZXkpLCB0aGlzLmFjY2Vzc1NlcGFyYXRvcik7XG5cbiAgLy9cbiAgLy8gU2NvcGUgaW50byB0aGUgb2JqZWN0IHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgbmVzdGVkIGNvbnRleHRcbiAgLy9cbiAgd2hpbGUgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgIGtleSA9IHBhdGguc2hpZnQoKTtcbiAgICBpZiAodGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQgIT09ICdzdHJpbmcnICYmIE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwga2V5KSkge1xuICAgICAgdGFyZ2V0ID0gdGFyZ2V0W2tleV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIHNldCAoa2V5LCB2YWx1ZSlcbi8vICMjIyMgQGtleSB7c3RyaW5nfSBLZXkgdG8gc2V0IGluIHRoaXMgaW5zdGFuY2Vcbi8vICMjIyMgQHZhbHVlIHtsaXRlcmFsfE9iamVjdH0gVmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5XG4vLyBTZXRzIHRoZSBgdmFsdWVgIGZvciB0aGUgc3BlY2lmaWVkIGBrZXlgIGluIHRoaXMgaW5zdGFuY2UuXG4vL1xuTWVtb3J5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciB0YXJnZXQgPSB0aGlzLnN0b3JlLFxuICAgICAgcGF0aCAgID0gY29tbW9uLnBhdGgodGhpcy5fbm9ybWFsaXplS2V5KGtleSksIHRoaXMuYWNjZXNzU2VwYXJhdG9yKTtcblxuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAvL1xuICAgIC8vIFJvb3QgbXVzdCBiZSBhbiBvYmplY3RcbiAgICAvL1xuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIHRoaXMuc3RvcmUgPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIFVwZGF0ZSB0aGUgYG10aW1lYCAobW9kaWZpZWQgdGltZSkgb2YgdGhlIGtleVxuICAvL1xuICB0aGlzLm10aW1lc1trZXldID0gRGF0ZS5ub3coKTtcblxuICAvL1xuICAvLyBTY29wZSBpbnRvIHRoZSBvYmplY3QgdG8gZ2V0IHRoZSBhcHByb3ByaWF0ZSBuZXN0ZWQgY29udGV4dFxuICAvL1xuICB3aGlsZSAocGF0aC5sZW5ndGggPiAxKSB7XG4gICAga2V5ID0gcGF0aC5zaGlmdCgpO1xuICAgIGlmICghdGFyZ2V0W2tleV0gfHwgdHlwZW9mIHRhcmdldFtrZXldICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGFyZ2V0W2tleV0gPSB7fTtcbiAgICB9XG5cbiAgICB0YXJnZXQgPSB0YXJnZXRba2V5XTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgc3BlY2lmaWVkIHZhbHVlIGluIHRoZSBuZXN0ZWQgSlNPTiBzdHJ1Y3R1cmVcbiAga2V5ID0gcGF0aC5zaGlmdCgpO1xuICBpZiAodGhpcy5wYXJzZVZhbHVlcykge1xuICAgIHZhbHVlID0gY29tbW9uLnBhcnNlVmFsdWVzLmNhbGwoY29tbW9uLCB2YWx1ZSk7XG4gIH1cbiAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGNsZWFyIChrZXkpXG4vLyAjIyMjIEBrZXkge3N0cmluZ30gS2V5IHRvIHJlbW92ZSBmcm9tIHRoaXMgaW5zdGFuY2Vcbi8vIFJlbW92ZXMgdGhlIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGBrZXlgIGZyb20gdGhpcyBpbnN0YW5jZS5cbi8vXG5NZW1vcnkucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKGtleSkge1xuICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciB0YXJnZXQgPSB0aGlzLnN0b3JlLFxuICAgICAgdmFsdWUgID0gdGFyZ2V0LFxuICAgICAgcGF0aCAgID0gY29tbW9uLnBhdGgoa2V5LCB0aGlzLmFjY2Vzc1NlcGFyYXRvcik7XG5cbiAgLy9cbiAgLy8gUmVtb3ZlIHRoZSBrZXkgZnJvbSB0aGUgc2V0IG9mIGBtdGltZXNgIChtb2RpZmllZCB0aW1lcylcbiAgLy9cbiAgZGVsZXRlIHRoaXMubXRpbWVzW2tleV07XG5cbiAgLy9cbiAgLy8gU2NvcGUgaW50byB0aGUgb2JqZWN0IHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgbmVzdGVkIGNvbnRleHRcbiAgLy9cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGtleSA9IHBhdGhbaV07XG4gICAgdmFsdWUgPSB0YXJnZXRba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGFyZ2V0ID0gdmFsdWU7XG4gIH1cblxuICAvLyBEZWxldGUgdGhlIGtleSBmcm9tIHRoZSBuZXN0ZWQgSlNPTiBzdHJ1Y3R1cmVcbiAga2V5ID0gcGF0aFtpXTtcbiAgZGVsZXRlIHRhcmdldFtrZXldO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gbWVyZ2UgKGtleSwgdmFsdWUpXG4vLyAjIyMjIEBrZXkge3N0cmluZ30gS2V5IHRvIG1lcmdlIHRoZSB2YWx1ZSBpbnRvXG4vLyAjIyMjIEB2YWx1ZSB7bGl0ZXJhbHxPYmplY3R9IFZhbHVlIHRvIG1lcmdlIGludG8gdGhlIGtleVxuLy8gTWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIGluIGB2YWx1ZWAgaW50byB0aGUgZXhpc3Rpbmcgb2JqZWN0IHZhbHVlXG4vLyBhdCBga2V5YC4gSWYgdGhlIGV4aXN0aW5nIHZhbHVlIGBrZXlgIGlzIG5vdCBhbiBPYmplY3QsIGl0IHdpbGwgYmVcbi8vIGNvbXBsZXRlbHkgb3ZlcndyaXR0ZW4uXG4vL1xuTWVtb3J5LnByb3RvdHlwZS5tZXJnZSA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy9cbiAgLy8gSWYgdGhlIGtleSBpcyBub3QgYW4gYE9iamVjdGAgb3IgaXMgYW4gYEFycmF5YCxcbiAgLy8gdGhlbiBzaW1wbHkgc2V0IGl0LiBNZXJnaW5nIGlzIGZvciBPYmplY3RzLlxuICAvL1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLnNldChrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHZhciBzZWxmICAgID0gdGhpcyxcbiAgICAgIHRhcmdldCAgPSB0aGlzLnN0b3JlLFxuICAgICAgcGF0aCAgICA9IGNvbW1vbi5wYXRoKGtleSwgdGhpcy5hY2Nlc3NTZXBhcmF0b3IpLFxuICAgICAgZnVsbEtleSA9IGtleTtcblxuICAvL1xuICAvLyBVcGRhdGUgdGhlIGBtdGltZWAgKG1vZGlmaWVkIHRpbWUpIG9mIHRoZSBrZXlcbiAgLy9cbiAgdGhpcy5tdGltZXNba2V5XSA9IERhdGUubm93KCk7XG5cbiAgLy9cbiAgLy8gU2NvcGUgaW50byB0aGUgb2JqZWN0IHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgbmVzdGVkIGNvbnRleHRcbiAgLy9cbiAgd2hpbGUgKHBhdGgubGVuZ3RoID4gMSkge1xuICAgIGtleSA9IHBhdGguc2hpZnQoKTtcbiAgICBpZiAoIXRhcmdldFtrZXldKSB7XG4gICAgICB0YXJnZXRba2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHRhcmdldCA9IHRhcmdldFtrZXldO1xuICB9XG5cbiAgLy8gU2V0IHRoZSBzcGVjaWZpZWQgdmFsdWUgaW4gdGhlIG5lc3RlZCBKU09OIHN0cnVjdHVyZVxuICBrZXkgPSBwYXRoLnNoaWZ0KCk7XG5cbiAgLy9cbiAgLy8gSWYgdGhlIGN1cnJlbnQgdmFsdWUgYXQgdGhlIGtleSB0YXJnZXQgaXMgbm90IGFuIGBPYmplY3RgLFxuICAvLyBvciBpcyBhbiBgQXJyYXlgIHRoZW4gc2ltcGx5IG92ZXJyaWRlIGl0IGJlY2F1c2UgdGhlIG5ldyB2YWx1ZVxuICAvLyBpcyBhbiBPYmplY3QuXG4gIC8vXG4gIGlmICh0eXBlb2YgdGFyZ2V0W2tleV0gIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkodGFyZ2V0W2tleV0pKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkuZXZlcnkoZnVuY3Rpb24gKG5lc3RlZCkge1xuICAgIHJldHVybiBzZWxmLm1lcmdlKGNvbW1vbi5rZXllZChzZWxmLmFjY2Vzc1NlcGFyYXRvciwgZnVsbEtleSwgbmVzdGVkKSwgdmFsdWVbbmVzdGVkXSk7XG4gIH0pO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiByZXNldCAoY2FsbGJhY2spXG4vLyBDbGVhcnMgYWxsIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2UuXG4vL1xuTWVtb3J5LnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0aGlzLm10aW1lcyA9IHt9O1xuICB0aGlzLnN0b3JlICA9IHt9O1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gbG9hZFN5bmNcbi8vIFJldHVybnMgdGhlIHN0b3JlIG1hbmFnZWQgYnkgdGhpcyBpbnN0YW5jZVxuLy9cbk1lbW9yeS5wcm90b3R5cGUubG9hZFN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnN0b3JlIHx8IHt9O1xufTtcbiIsICIvKlxuICogdXRpbHMuanM6IFV0aWxpdHkgZnVuY3Rpb25zIGZvciB0aGUgbmNvbmYgbW9kdWxlLlxuICpcbiAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMgYW5kIHRoZSBDb250cmlidXRvcnMuXG4gKlxuICovXG5cbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJyksXG4gICAgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpLFxuICAgIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKSxcbiAgICBNZW1vcnkgPSByZXF1aXJlKCcuL3N0b3Jlcy9tZW1vcnknKS5NZW1vcnk7XG5cbnZhciBjb21tb24gPSBleHBvcnRzO1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIHBhdGggKGtleSlcbi8vICMjIyMgQGtleSB7c3RyaW5nfSBUaGUgJzonIGRlbGltaXRlZCBrZXkgdG8gc3BsaXRcbi8vIFJldHVybnMgYSBmdWxseS1xdWFsaWZpZWQgcGF0aCB0byBhIG5lc3RlZCBuY29uZiBrZXkuXG4vLyBJZiBnaXZlbiBudWxsIG9yIHVuZGVmaW5lZCBpdCBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHBhdGguXG4vLyAnJyBzaG91bGQgc3RpbGwgYmUgcmVzcGVjdGVkIGFzIGEgcGF0aC5cbi8vXG5jb21tb24ucGF0aCA9IGZ1bmN0aW9uIChrZXksIHNlcGFyYXRvcikge1xuICBzZXBhcmF0b3IgPSBzZXBhcmF0b3IgfHwgJzonO1xuICByZXR1cm4ga2V5ID09IG51bGwgPyBbXSA6IGtleS5zcGxpdChzZXBhcmF0b3IpO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBrZXkgKGFyZ3VtZW50cylcbi8vIFJldHVybnMgYSBgOmAgam9pbmVkIHN0cmluZyBmcm9tIHRoZSBgYXJndW1lbnRzYC5cbi8vXG5jb21tb24ua2V5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCc6Jyk7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGtleSAoYXJndW1lbnRzKVxuLy8gUmV0dXJucyBhIGpvaW5lZCBzdHJpbmcgZnJvbSB0aGUgYGFyZ3VtZW50c2AsXG4vLyBmaXJzdCBhcmd1bWVudCBpcyB0aGUgam9pbiBkZWxpbWl0ZXIuXG4vL1xuY29tbW9uLmtleWVkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKS5qb2luKGFyZ3VtZW50c1swXSk7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGxvYWRGaWxlcyAoZmlsZXMsIGNhbGxiYWNrKVxuLy8gIyMjIyBAZmlsZXMge09iamVjdHxBcnJheX0gTGlzdCBvZiBmaWxlcyAob3Igc2V0dGluZ3Mgb2JqZWN0KSB0byBsb2FkLlxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSBDb250aW51YXRpb24gdG8gcmVzcG9uZCB0byB3aGVuIGNvbXBsZXRlLlxuLy8gTG9hZHMgYWxsIHRoZSBkYXRhIGluIHRoZSBzcGVjaWZpZWQgYGZpbGVzYC5cbi8vXG5jb21tb24ubG9hZEZpbGVzID0gZnVuY3Rpb24gKGZpbGVzLCBjYWxsYmFjaykge1xuICBpZiAoIWZpbGVzKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHt9KTtcbiAgfVxuXG4gIHZhciBvcHRpb25zID0gQXJyYXkuaXNBcnJheShmaWxlcykgPyB7IGZpbGVzOiBmaWxlcyB9IDogZmlsZXM7XG5cbiAgLy9cbiAgLy8gU2V0IHRoZSBkZWZhdWx0IEpTT04gZm9ybWF0IGlmIG5vdCBhbHJlYWR5XG4gIC8vIHNwZWNpZmllZFxuICAvL1xuICBvcHRpb25zLmZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0IHx8IGZvcm1hdHMuanNvbjtcblxuICBmdW5jdGlvbiBwYXJzZUZpbGUgKGZpbGUsIG5leHQpIHtcbiAgICBmcy5yZWFkRmlsZShmaWxlLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICByZXR1cm4gIWVyclxuICAgICAgICA/IG5leHQobnVsbCwgb3B0aW9ucy5mb3JtYXQucGFyc2UoZGF0YS50b1N0cmluZygpKSlcbiAgICAgICAgOiBuZXh0KGVycik7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYy5tYXAob3B0aW9ucy5maWxlcywgcGFyc2VGaWxlLCBmdW5jdGlvbiAoZXJyLCBvYmpzKSB7XG4gICAgcmV0dXJuIGVyciA/IGNhbGxiYWNrKGVycikgOiBjYWxsYmFjayhudWxsLCBjb21tb24ubWVyZ2Uob2JqcykpO1xuICB9KTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gbG9hZEZpbGVzU3luYyAoZmlsZXMpXG4vLyAjIyMjIEBmaWxlcyB7T2JqZWN0fEFycmF5fSBMaXN0IG9mIGZpbGVzIChvciBzZXR0aW5ncyBvYmplY3QpIHRvIGxvYWQuXG4vLyBMb2FkcyBhbGwgdGhlIGRhdGEgaW4gdGhlIHNwZWNpZmllZCBgZmlsZXNgIHN5bmNocm9ub3VzbHkuXG4vL1xuY29tbW9uLmxvYWRGaWxlc1N5bmMgPSBmdW5jdGlvbiAoZmlsZXMpIHtcbiAgaWYgKCFmaWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vXG4gIC8vIFNldCB0aGUgZGVmYXVsdCBKU09OIGZvcm1hdCBpZiBub3QgYWxyZWFkeVxuICAvLyBzcGVjaWZpZWRcbiAgLy9cbiAgdmFyIG9wdGlvbnMgPSBBcnJheS5pc0FycmF5KGZpbGVzKSA/IHsgZmlsZXM6IGZpbGVzIH0gOiBmaWxlcztcbiAgb3B0aW9ucy5mb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCBmb3JtYXRzLmpzb247XG5cbiAgcmV0dXJuIGNvbW1vbi5tZXJnZShvcHRpb25zLmZpbGVzLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgIHJldHVybiBvcHRpb25zLmZvcm1hdC5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKSk7XG4gIH0pKTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gbWVyZ2UgKG9ianMpXG4vLyAjIyMjIEBvYmpzIHtBcnJheX0gQXJyYXkgb2Ygb2JqZWN0IGxpdGVyYWxzIHRvIG1lcmdlXG4vLyBNZXJnZXMgdGhlIHNwZWNpZmllZCBgb2Jqc2AgdXNpbmcgYSB0ZW1wb3JhcnkgaW5zdGFuY2Vcbi8vIG9mIGBzdG9yZXMuTWVtb3J5YC5cbi8vXG5jb21tb24ubWVyZ2UgPSBmdW5jdGlvbiAob2Jqcykge1xuICB2YXIgc3RvcmUgPSBuZXcgTWVtb3J5KCk7XG5cbiAgb2Jqcy5mb3JFYWNoKGZ1bmN0aW9uIChvYmopIHtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgc3RvcmUubWVyZ2Uoa2V5LCBvYmpba2V5XSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZS5zdG9yZTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gY2FwaXRhbGl6ZSAoc3RyKVxuLy8gIyMjIyBAc3RyIHtzdHJpbmd9IFN0cmluZyB0byBjYXBpdGFsaXplXG4vLyBDYXBpdGFsaXplcyB0aGUgc3BlY2lmaWVkIGBzdHJgLlxuLy9cbmNvbW1vbi5jYXBpdGFsaXplID0gZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyICYmIHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBwYXJzZVZhbHVlcyAoYW55KVxuLy8gIyMjIyBAYW55IHtzdHJpbmd9IFN0cmluZyB0byBwYXJzZSBhcyBuYXRpdmUgZGF0YS10eXBlIG9yIHJldHVybiBhcyBpc1xuLy8gdHJ5IHRvIHBhcnNlIGBhbnlgIGFzIGEgbmF0aXZlIGRhdGEtdHlwZVxuLy9cbmNvbW1vbi5wYXJzZVZhbHVlcyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgdmFsID0gdmFsdWU7XG4gIFxuICB0cnkge1xuICAgIHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xuICB9IGNhdGNoIChpZ25vcmUpIHtcbiAgICAvLyBDaGVjayBmb3IgYW55IG90aGVyIHdlbGwta25vd24gc3RyaW5ncyB0aGF0IHNob3VsZCBiZSBcInBhcnNlZFwiXG4gICAgaWYgKHZhbHVlID09PSAndW5kZWZpbmVkJyl7XG4gICAgICB2YWwgPSB2b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbDtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gdHJhbnNmb3JtKG1hcCwgZm4pXG4vLyAjIyMjIEBtYXAge29iamVjdH0gT2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycyB0byBhcHBseSBgZm5gIHRvXG4vLyAjIyMjIEBmbiB7ZnVuY3Rpb259IFRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIGV2ZXJ5IGtleS92YWx1ZSBwYWlyXG4vLyB0cmFuc2Zvcm0gYSBzZXQgb2Yga2V5L3ZhbHVlIHBhaXJzIGFuZCByZXR1cm4gdGhlIHRyYW5zZm9ybWVkIHJlc3VsdFxuY29tbW9uLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKG1hcCwgZm4pIHtcbiAgdmFyIHBhaXJzID0gT2JqZWN0LmtleXMobWFwKS5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgdmFyIG9iaiA9IHsga2V5OiBrZXksIHZhbHVlOiBtYXBba2V5XX07XG4gICAgdmFyIHJlc3VsdCA9IGZuLmNhbGwobnVsbCwgb2JqKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5rZXkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdUcmFuc2Zvcm0gZnVuY3Rpb24gcGFzc2VkIHRvIHN0b3JlIHJldHVybmVkIGFuIGludmFsaWQgZm9ybWF0OiAnICsgSlNPTi5zdHJpbmdpZnkocmVzdWx0KSk7XG4gICAgZXJyb3IubmFtZSA9ICdSdW50aW1lRXJyb3InO1xuICAgIHRocm93IGVycm9yO1xuICB9KTtcblxuXG4gIHJldHVybiBwYWlyc1xuICAgIC5maWx0ZXIoZnVuY3Rpb24ocGFpcikge1xuICAgICAgcmV0dXJuIHBhaXIgIT09IG51bGw7XG4gICAgfSlcbiAgICAucmVkdWNlKGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCBwYWlyKSB7XG4gICAgICBhY2N1bXVsYXRvcltwYWlyLmtleV0gPSBwYWlyLnZhbHVlO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH0sIHt9KTtcbn1cbiIsICIvKlxuICogcHJvdmlkZXIuanM6IEFic3RyYWN0aW9uIHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgaW50byBwbHVnZ2FibGUgY29uZmlndXJhdGlvbiBzdG9yYWdlLlxuICpcbiAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMgYW5kIHRoZSBDb250cmlidXRvcnMuXG4gKlxuICovXG5cbnZhciBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJyksXG4gICAgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBQcm92aWRlciAob3B0aW9ucylcbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS5cbi8vIENvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciB0aGUgUHJvdmlkZXIgb2JqZWN0IHJlc3BvbnNpYmxlXG4vLyBmb3IgZXhwb3NpbmcgdGhlIHBsdWdnYWJsZSBzdG9yYWdlIGZlYXR1cmVzIG9mIGBuY29uZmAuXG4vL1xudmFyIFByb3ZpZGVyID0gZXhwb3J0cy5Qcm92aWRlciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIC8vXG4gIC8vIFNldHVwIGRlZmF1bHQgb3B0aW9ucyBmb3Igd29ya2luZyB3aXRoIGBzdG9yZXNgLFxuICAvLyBgb3ZlcnJpZGVzYCwgYHByb2Nlc3MuZW52YCBhbmQgYHByb2Nlc3MuYXJndmAuXG4gIC8vXG4gIG9wdGlvbnMgICAgICAgPSBvcHRpb25zIHx8IHt9O1xuICB0aGlzLnN0b3JlcyAgPSB7fTtcbiAgdGhpcy5zb3VyY2VzID0gW107XG4gIHRoaXMuaW5pdChvcHRpb25zKTtcbn07XG5cbi8vXG4vLyBEZWZpbmUgd3JhcHBlciBmdW5jdGlvbnMgZm9yIHVzaW5nIGJhc2ljIHN0b3Jlc1xuLy8gaW4gdGhpcyBpbnN0YW5jZVxuLy9cblxuWydhcmd2JywgJ2VudiddLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgUHJvdmlkZXIucHJvdG90eXBlW3R5cGVdID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gW3R5cGVdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICByZXR1cm4gdGhpcy5hZGQuYXBwbHkodGhpcywgYXJncyk7XG4gIH07XG59KTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBmaWxlIChrZXksIG9wdGlvbnMpXG4vLyAjIyMjIEBrZXkge3N0cmluZ3xPYmplY3R9IEZ1bGx5IHF1YWxpZmllZCBvcHRpb25zLCBuYW1lIG9mIGZpbGUgc3RvcmUsIG9yIHBhdGguXG4vLyAjIyMjIEBwYXRoIHtzdHJpbmd8T2JqZWN0fSAqKk9wdGlvbmFsKiogRnVsbCBxdWFsaWZpZWQgb3B0aW9ucywgb3IgcGF0aC5cbi8vIEFkZHMgYSBuZXcgYEZpbGVgIHN0b3JlIHRvIHRoaXMgaW5zdGFuY2UuIEFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zXG4vL1xuLy8gICAgbmNvbmYuZmlsZSh7IGZpbGU6ICcuaml0c3Vjb25mJywgZGlyOiBwcm9jZXNzLmVudi5IT01FLCBzZWFyY2g6IHRydWUgfSk7XG4vLyAgICBuY29uZi5maWxlKCdwYXRoL3RvL2NvbmZpZy9maWxlJyk7XG4vLyAgICBuY29uZi5maWxlKCd1c2VyY29uZmlnJywgJ3BhdGgvdG8vY29uZmlnL2ZpbGUnKTtcbi8vICAgIG5jb25mLmZpbGUoJ3VzZXJjb25maWcnLCB7IGZpbGU6ICcuaml0c3Vjb25mJywgc2VhcmNoOiB0cnVlIH0pO1xuLy9cblByb3ZpZGVyLnByb3RvdHlwZS5maWxlID0gZnVuY3Rpb24gKGtleSwgb3B0aW9ucykge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7XG4gICAgb3B0aW9ucyA9IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnID8geyBmaWxlOiBrZXkgfSA6IGtleTtcbiAgICBrZXkgPSAnZmlsZSc7XG4gIH1cbiAgZWxzZSB7XG4gICAgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJ1xuICAgICAgPyB7IGZpbGU6IG9wdGlvbnMgfVxuICAgICAgOiBvcHRpb25zO1xuICB9XG5cbiAgb3B0aW9ucy50eXBlID0gJ2ZpbGUnO1xuICByZXR1cm4gdGhpcy5hZGQoa2V5LCBvcHRpb25zKTtcbn07XG5cbi8vXG4vLyBEZWZpbmUgd3JhcHBlciBmdW5jdGlvbnMgZm9yIHVzaW5nXG4vLyBvdmVycmlkZXMgYW5kIGRlZmF1bHRzXG4vL1xuWydkZWZhdWx0cycsICdvdmVycmlkZXMnXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIFByb3ZpZGVyLnByb3RvdHlwZVt0eXBlXSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgaWYgKCFvcHRpb25zLnR5cGUpIHtcbiAgICAgIG9wdGlvbnMudHlwZSA9ICdsaXRlcmFsJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGQodHlwZSwgb3B0aW9ucyk7XG4gIH07XG59KTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiB1c2UgKG5hbWUsIG9wdGlvbnMpXG4vLyAjIyMjIEB0eXBlIHtzdHJpbmd9IFR5cGUgb2YgdGhlIG5jb25mIHN0b3JlIHRvIHVzZS5cbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyBmb3IgdGhlIHN0b3JlIGluc3RhbmNlLlxuLy8gQWRkcyAob3IgcmVwbGFjZXMpIGEgbmV3IHN0b3JlIHdpdGggdGhlIHNwZWNpZmllZCBgbmFtZWBcbi8vIGFuZCBgb3B0aW9uc2AuIElmIGBvcHRpb25zLnR5cGVgIGlzIG5vdCBzZXQsIHRoZW4gYG5hbWVgXG4vLyB3aWxsIGJlIHVzZWQgaW5zdGVhZDpcbi8vXG4vLyAgICBwcm92aWRlci51c2UoJ2ZpbGUnKTtcbi8vICAgIHByb3ZpZGVyLnVzZSgnZmlsZScsIHsgdHlwZTogJ2ZpbGUnLCBmaWxlbmFtZTogJy9wYXRoL3RvL3VzZXJjb25mJyB9KVxuLy9cblByb3ZpZGVyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykge1xuICBvcHRpb25zICA9IG9wdGlvbnMgICAgICB8fCB7fTtcblxuICBmdW5jdGlvbiBzYW1lT3B0aW9ucyAoc3RvcmUpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob3B0aW9ucykuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNba2V5XSA9PT0gc3RvcmVba2V5XTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBzdG9yZSA9IHRoaXMuc3RvcmVzW25hbWVdLFxuICAgICAgdXBkYXRlID0gc3RvcmUgJiYgIXNhbWVPcHRpb25zKHN0b3JlKTtcblxuICBpZiAoIXN0b3JlIHx8IHVwZGF0ZSkge1xuICAgIGlmICh1cGRhdGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlKG5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGFkZCAobmFtZSwgb3B0aW9ucylcbi8vICMjIyMgQG5hbWUge3N0cmluZ30gTmFtZSBvZiB0aGUgc3RvcmUgdG8gYWRkIHRvIHRoaXMgaW5zdGFuY2Vcbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyBmb3IgdGhlIHN0b3JlIHRvIGNyZWF0ZVxuLy8gQWRkcyBhIG5ldyBzdG9yZSB3aXRoIHRoZSBzcGVjaWZpZWQgYG5hbWVgIGFuZCBgb3B0aW9uc2AuIElmIGBvcHRpb25zLnR5cGVgXG4vLyBpcyBub3Qgc2V0LCB0aGVuIGBuYW1lYCB3aWxsIGJlIHVzZWQgaW5zdGVhZDpcbi8vXG4vLyAgICBwcm92aWRlci5hZGQoJ21lbW9yeScpO1xuLy8gICAgcHJvdmlkZXIuYWRkKCd1c2VyY29uZicsIHsgdHlwZTogJ2ZpbGUnLCBmaWxlbmFtZTogJy9wYXRoL3RvL3VzZXJjb25mJyB9KVxuLy9cblByb3ZpZGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucywgdXNhZ2UpIHtcbiAgb3B0aW9ucyAgPSBvcHRpb25zICAgICAgfHwge307XG4gIHZhciB0eXBlID0gb3B0aW9ucy50eXBlIHx8IG5hbWU7XG5cbiAgaWYgKCFyZXF1aXJlKCcuLi9uY29uZicpW2NvbW1vbi5jYXBpdGFsaXplKHR5cGUpXSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFkZCBzdG9yZSB3aXRoIHVua25vd24gdHlwZTogJyArIHR5cGUpO1xuICB9XG5cbiAgdGhpcy5zdG9yZXNbbmFtZV0gPSB0aGlzLmNyZWF0ZSh0eXBlLCBvcHRpb25zLCB1c2FnZSk7XG5cbiAgaWYgKHRoaXMuc3RvcmVzW25hbWVdLmxvYWRTeW5jKSB7XG4gICAgdGhpcy5zdG9yZXNbbmFtZV0ubG9hZFN5bmMoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiByZW1vdmUgKG5hbWUpXG4vLyAjIyMjIEBuYW1lIHtzdHJpbmd9IE5hbWUgb2YgdGhlIHN0b3JlIHRvIHJlbW92ZSBmcm9tIHRoaXMgaW5zdGFuY2Vcbi8vIFJlbW92ZXMgYSBzdG9yZSB3aXRoIHRoZSBzcGVjaWZpZWQgYG5hbWVgIGZyb20gdGhpcyBpbnN0YW5jZS4gVXNlcnNcbi8vIGFyZSBhbGxvd2VkIHRvIHBhc3MgaW4gYSB0eXBlIGFyZ3VtZW50IChlLmcuIGBtZW1vcnlgKSBhcyBuYW1lIGlmXG4vLyB0aGlzIHdhcyB1c2VkIGluIHRoZSBjYWxsIHRvIGAuYWRkKClgLlxuLy9cblByb3ZpZGVyLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAobmFtZSkge1xuICBkZWxldGUgdGhpcy5zdG9yZXNbbmFtZV07XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBjcmVhdGUgKHR5cGUsIG9wdGlvbnMpXG4vLyAjIyMjIEB0eXBlIHtzdHJpbmd9IFR5cGUgb2YgdGhlIG5jb25mIHN0b3JlIHRvIHVzZS5cbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyBmb3IgdGhlIHN0b3JlIGluc3RhbmNlLlxuLy8gQ3JlYXRlcyBhIHN0b3JlIG9mIHRoZSBzcGVjaWZpZWQgYHR5cGVgIHVzaW5nIHRoZVxuLy8gc3BlY2lmaWVkIGBvcHRpb25zYC5cbi8vXG5Qcm92aWRlci5wcm90b3R5cGUuY3JlYXRlID0gZnVuY3Rpb24gKHR5cGUsIG9wdGlvbnMsIHVzYWdlKSB7XG4gIHJldHVybiBuZXcgKHJlcXVpcmUoJy4uL25jb25mJylbY29tbW9uLmNhcGl0YWxpemUodHlwZS50b0xvd2VyQ2FzZSgpKV0pKG9wdGlvbnMsIHVzYWdlKTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gaW5pdCAob3B0aW9ucylcbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyB0byBpbml0aWFsaXplIHRoaXMgaW5zdGFuY2Ugd2l0aC5cbi8vIEluaXRpYWxpemVzIHRoaXMgaW5zdGFuY2Ugd2l0aCBhZGRpdGlvbmFsIGBzdG9yZXNgIG9yIGBzb3VyY2VzYCBpbiB0aGVcbi8vIGBvcHRpb25zYCBzdXBwbGllZC5cbi8vXG5Qcm92aWRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvL1xuICAvLyBBZGQgYW55IHN0b3JlcyBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgb3B0aW9uc1xuICAvLyB0byB0aGlzIGluc3RhbmNlLlxuICAvL1xuICBpZiAob3B0aW9ucy50eXBlKSB7XG4gICAgdGhpcy5hZGQob3B0aW9ucy50eXBlLCBvcHRpb25zKTtcbiAgfVxuICBlbHNlIGlmIChvcHRpb25zLnN0b3JlKSB7XG4gICAgdGhpcy5hZGQob3B0aW9ucy5zdG9yZS5uYW1lIHx8IG9wdGlvbnMuc3RvcmUudHlwZSwgb3B0aW9ucy5zdG9yZSk7XG4gIH1cbiAgZWxzZSBpZiAob3B0aW9ucy5zdG9yZXMpIHtcbiAgICBPYmplY3Qua2V5cyhvcHRpb25zLnN0b3JlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHN0b3JlID0gb3B0aW9ucy5zdG9yZXNbbmFtZV07XG4gICAgICBzZWxmLmFkZChzdG9yZS5uYW1lIHx8IG5hbWUgfHwgc3RvcmUudHlwZSwgc3RvcmUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy9cbiAgLy8gQWRkIGFueSByZWFkLW9ubHkgc291cmNlcyB0byB0aGlzIGluc3RhbmNlXG4gIC8vXG4gIGlmIChvcHRpb25zLnNvdXJjZSkge1xuICAgIHRoaXMuc291cmNlcy5wdXNoKHRoaXMuY3JlYXRlKG9wdGlvbnMuc291cmNlLnR5cGUgfHwgb3B0aW9ucy5zb3VyY2UubmFtZSwgb3B0aW9ucy5zb3VyY2UpKTtcbiAgfVxuICBlbHNlIGlmIChvcHRpb25zLnNvdXJjZXMpIHtcbiAgICBPYmplY3Qua2V5cyhvcHRpb25zLnNvdXJjZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBvcHRpb25zLnNvdXJjZXNbbmFtZV07XG4gICAgICBzZWxmLnNvdXJjZXMucHVzaChzZWxmLmNyZWF0ZShzb3VyY2UudHlwZSB8fCBzb3VyY2UubmFtZSB8fCBuYW1lLCBzb3VyY2UpKTtcbiAgICB9KTtcbiAgfVxufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBnZXQgKGtleSwgY2FsbGJhY2spXG4vLyAjIyMjIEBrZXkge3N0cmluZ30gS2V5IHRvIHJldHJpZXZlIGZvciB0aGlzIGluc3RhbmNlLlxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSAqKk9wdGlvbmFsKiogQ29udGludWF0aW9uIHRvIHJlc3BvbmQgdG8gd2hlbiBjb21wbGV0ZS5cbi8vIFJldHJpZXZlcyB0aGUgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5IChpZiBhbnkpLlxuLy9cblByb3ZpZGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEFsbG93IGEgKiBrZXkgY2FsbCB0byBiZSBtYWRlXG4gICAgY2FsbGJhY2sgPSBrZXk7XG4gICAga2V5ID0gbnVsbDtcbiAgfVxuXG4gIC8vXG4gIC8vIElmIHRoZXJlIGlzIG5vIGNhbGxiYWNrIHdlIGNhbiBzaG9ydC1jaXJjdWl0IGludG8gdGhlIGRlZmF1bHRcbiAgLy8gbG9naWMgZm9yIHRyYXZlcnNpbmcgc3RvcmVzLlxuICAvL1xuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V4ZWN1dGUoJ2dldCcsIDEsIGtleSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLy9cbiAgLy8gT3RoZXJ3aXNlIHRoZSBhc3luY2hyb25vdXMsIGhpZXJhcmNoaWNhbCBgZ2V0YCBpc1xuICAvLyBzbGlnaHRseSBtb3JlIGNvbXBsaWNhdGVkIGJlY2F1c2Ugd2UgZG8gbm90IG5lZWQgdG8gdHJhdmVyc2VcbiAgLy8gdGhlIGVudGlyZSBzZXQgb2Ygc3RvcmVzLCBidXQgdXAgdW50aWwgdGhlcmUgaXMgYSBkZWZpbmVkIHZhbHVlLlxuICAvL1xuICB2YXIgY3VycmVudCA9IDAsXG4gICAgICBuYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuc3RvcmVzKSxcbiAgICAgIHNlbGYgPSB0aGlzLFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBtZXJnZU9ianMgPSBbXTtcblxuICBhc3luYy53aGlsc3QoZnVuY3Rpb24gKGNiKSB7XG4gICAgY2IobnVsbCwgdHlwZW9mIHJlc3BvbnNlID09PSAndW5kZWZpbmVkJyAmJiBjdXJyZW50IDwgbmFtZXMubGVuZ3RoKTtcbiAgfSwgZnVuY3Rpb24gKG5leHQpIHtcbiAgICB2YXIgc3RvcmUgPSBzZWxmLnN0b3Jlc1tuYW1lc1tjdXJyZW50XV07XG4gICAgY3VycmVudCsrO1xuXG4gICAgaWYgKHN0b3JlLmdldC5sZW5ndGggPj0gMikge1xuICAgICAgcmV0dXJuIHN0b3JlLmdldChrZXksIGZ1bmN0aW9uIChlcnIsIHZhbHVlKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzcG9uc2UgPSB2YWx1ZTtcblxuICAgICAgICAvLyBNZXJnZSBvYmplY3RzIGlmIG5lY2Vzc2FyeVxuICAgICAgICBpZiAocmVzcG9uc2UgJiYgdHlwZW9mIHJlc3BvbnNlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXNwb25zZSkpIHtcbiAgICAgICAgICBtZXJnZU9ianMucHVzaChyZXNwb25zZSk7XG4gICAgICAgICAgcmVzcG9uc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNwb25zZSA9IHN0b3JlLmdldChrZXkpO1xuXG4gICAgLy8gTWVyZ2Ugb2JqZWN0cyBpZiBuZWNlc3NhcnlcbiAgICBpZiAocmVzcG9uc2UgJiYgdHlwZW9mIHJlc3BvbnNlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXNwb25zZSkpIHtcbiAgICAgIG1lcmdlT2Jqcy5wdXNoKHJlc3BvbnNlKTtcbiAgICAgIHJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG5leHQoKTtcbiAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmICghZXJyICYmIG1lcmdlT2Jqcy5sZW5ndGgpIHtcbiAgICAgIHJlc3BvbnNlID0gY29tbW9uLm1lcmdlKG1lcmdlT2Jqcy5yZXZlcnNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gZXJyID8gY2FsbGJhY2soZXJyKSA6IGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlKTtcbiAgfSk7XG59O1xuXG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gYW55IChrZXlzLCBjYWxsYmFjaylcbi8vICMjIyMgQGtleXMge2FycmF5fHN0cmluZy4uLn0gQXJyYXkgb2Yga2V5cyB0byBxdWVyeSwgb3IgYSB2YXJpYWJsZSBsaXN0IG9mIHN0cmluZ3Ncbi8vICMjIyMgQGNhbGxiYWNrIHtmdW5jdGlvbn0gKipPcHRpb25hbCoqIENvbnRpbnVhdGlvbiB0byByZXNwb25kIHRvIHdoZW4gY29tcGxldGUuXG4vLyBSZXRyaWV2ZXMgdGhlIGZpcnN0IHRydXRoeSB2YWx1ZSAoaWYgYW55KSBmb3IgdGhlIHNwZWNpZmllZCBsaXN0IG9mIGtleXMuXG4vL1xuUHJvdmlkZXIucHJvdG90eXBlLmFueSA9IGZ1bmN0aW9uIChrZXlzLCBjYWxsYmFjaykge1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkge1xuICAgIGtleXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYgdHlwZW9mIGtleXNba2V5cy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FsbGJhY2sgPSBrZXlzLnBvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gSWYgdGhlcmUgaXMgbm8gY2FsbGJhY2ssIHVzZSB0aGUgc2hvcnQtY2lyY3VpdGVkIFwiZ2V0XCJcbiAgLy8gb24gZWFjaCBrZXkgaW4gdHVybi5cbiAgLy9cbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIHZhciB2YWw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YWwgPSB0aGlzLl9leGVjdXRlKCdnZXQnLCAxLCBrZXlzW2ldLCBjYWxsYmFjayk7XG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGtleUluZGV4ID0gMCxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHNlbGYgPSB0aGlzO1xuICBcbiAgYXN5bmMud2hpbHN0KGZ1bmN0aW9uKGNiKSB7XG4gICAgY2IobnVsbCwgIXJlc3VsdCAmJiBrZXlJbmRleCA8IGtleXMubGVuZ3RoKTtcbiAgfSwgZnVuY3Rpb24obmV4dCkge1xuICAgIHZhciBrZXkgPSBrZXlzW2tleUluZGV4XTtcbiAgICBrZXlJbmRleCsrO1xuXG4gICAgc2VsZi5nZXQoa2V5LCBmdW5jdGlvbihlcnIsIHYpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgbmV4dChlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdjtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICByZXR1cm4gZXJyID8gY2FsbGJhY2soZXJyKSA6IGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gIH0pO1xufTtcblxuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIHNldCAoa2V5LCB2YWx1ZSwgY2FsbGJhY2spXG4vLyAjIyMjIEBrZXkge3N0cmluZ30gS2V5IHRvIHNldCBpbiB0aGlzIGluc3RhbmNlXG4vLyAjIyMjIEB2YWx1ZSB7bGl0ZXJhbHxPYmplY3R9IFZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleVxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSAqKk9wdGlvbmFsKiogQ29udGludWF0aW9uIHRvIHJlc3BvbmQgdG8gd2hlbiBjb21wbGV0ZS5cbi8vIFNldHMgdGhlIGB2YWx1ZWAgZm9yIHRoZSBzcGVjaWZpZWQgYGtleWAgaW4gdGhpcyBpbnN0YW5jZS5cbi8vXG5Qcm92aWRlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUsIGNhbGxiYWNrKSB7XG4gIHJldHVybiB0aGlzLl9leGVjdXRlKCdzZXQnLCAyLCBrZXksIHZhbHVlLCBjYWxsYmFjayk7XG59O1xuXG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gcmVxdWlyZWQgKGtleXMpXG4vLyAjIyMjIEBrZXlzIHthcnJheX0gTGlzdCBvZiBrZXlzXG4vLyBUaHJvd3MgYW4gZXJyb3IgaWYgYW55IG9mIGBrZXlzYCBoYXMgbm8gdmFsdWUsIG90aGVyd2lzZSByZXR1cm5zIGB0cnVlYFxuUHJvdmlkZXIucHJvdG90eXBlLnJlcXVpcmVkID0gZnVuY3Rpb24gKGtleXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGtleXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvcnJlY3QgcGFyYW1ldGVyLCBhcnJheSBleHBlY3RlZCcpO1xuICB9XG5cbiAgdmFyIG1pc3NpbmcgPSBbXTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5nZXQoa2V5KSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG1pc3NpbmcucHVzaChrZXkpO1xuICAgIH1cbiAgfSwgdGhpcyk7XG5cbiAgaWYgKG1pc3NpbmcubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGtleXM6ICcgKyBtaXNzaW5nLmpvaW4oJywgJykpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gcmVzZXQgKGNhbGxiYWNrKVxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSAqKk9wdGlvbmFsKiogQ29udGludWF0aW9uIHRvIHJlc3BvbmQgdG8gd2hlbiBjb21wbGV0ZS5cbi8vIENsZWFycyBhbGwga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnN0YW5jZS5cbi8vXG5Qcm92aWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgcmV0dXJuIHRoaXMuX2V4ZWN1dGUoJ3Jlc2V0JywgMCwgY2FsbGJhY2spO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBjbGVhciAoa2V5LCBjYWxsYmFjaylcbi8vICMjIyMgQGtleSB7c3RyaW5nfSBLZXkgdG8gcmVtb3ZlIGZyb20gdGhpcyBpbnN0YW5jZVxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSAqKk9wdGlvbmFsKiogQ29udGludWF0aW9uIHRvIHJlc3BvbmQgdG8gd2hlbiBjb21wbGV0ZS5cbi8vIFJlbW92ZXMgdGhlIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGBrZXlgIGZyb20gdGhpcyBpbnN0YW5jZS5cbi8vXG5Qcm92aWRlci5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoa2V5LCBjYWxsYmFjaykge1xuICByZXR1cm4gdGhpcy5fZXhlY3V0ZSgnY2xlYXInLCAxLCBrZXksIGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gbWVyZ2UgKFtrZXksXSB2YWx1ZSBbLCBjYWxsYmFja10pXG4vLyAjIyMjIEBrZXkge3N0cmluZ30gS2V5IHRvIG1lcmdlIHRoZSB2YWx1ZSBpbnRvXG4vLyAjIyMjIEB2YWx1ZSB7bGl0ZXJhbHxPYmplY3R9IFZhbHVlIHRvIG1lcmdlIGludG8gdGhlIGtleVxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSAqKk9wdGlvbmFsKiogQ29udGludWF0aW9uIHRvIHJlc3BvbmQgdG8gd2hlbiBjb21wbGV0ZS5cbi8vIE1lcmdlcyB0aGUgcHJvcGVydGllcyBpbiBgdmFsdWVgIGludG8gdGhlIGV4aXN0aW5nIG9iamVjdCB2YWx1ZSBhdCBga2V5YC5cbi8vXG4vLyAxLiBJZiB0aGUgZXhpc3RpbmcgdmFsdWUgYGtleWAgaXMgbm90IGFuIE9iamVjdCwgaXQgd2lsbCBiZSBjb21wbGV0ZWx5IG92ZXJ3cml0dGVuLlxuLy8gMi4gSWYgYGtleWAgaXMgbm90IHN1cHBsaWVkLCB0aGVuIHRoZSBgdmFsdWVgIHdpbGwgYmUgbWVyZ2VkIGludG8gdGhlIHJvb3QuXG4vL1xuUHJvdmlkZXIucHJvdG90eXBlLm1lcmdlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxcbiAgICAgIGNhbGxiYWNrID0gdHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJyAmJiBhcmdzLnBvcCgpLFxuICAgICAgdmFsdWUgPSBhcmdzLnBvcCgpLFxuICAgICAga2V5ID0gYXJncy5wb3AoKTtcblxuICBmdW5jdGlvbiBtZXJnZVByb3BlcnR5IChwcm9wLCBuZXh0KSB7XG4gICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGUoJ21lcmdlJywgMiwgcHJvcCwgdmFsdWVbcHJvcF0sIG5leHQpO1xuICB9XG5cbiAgaWYgKCFrZXkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIG9uRXJyb3IobmV3IEVycm9yKCdDYW5ub3QgbWVyZ2Ugbm9uLU9iamVjdCBpbnRvIHRvcC1sZXZlbC4nKSwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBhc3luYy5mb3JFYWNoKE9iamVjdC5rZXlzKHZhbHVlKSwgbWVyZ2VQcm9wZXJ0eSwgY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkgeyB9KVxuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2V4ZWN1dGUoJ21lcmdlJywgMiwga2V5LCB2YWx1ZSwgY2FsbGJhY2spO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBsb2FkIChjYWxsYmFjaylcbi8vICMjIyMgQGNhbGxiYWNrIHtmdW5jdGlvbn0gQ29udGludWF0aW9uIHRvIHJlc3BvbmQgdG8gd2hlbiBjb21wbGV0ZS5cbi8vIFJlc3BvbmRzIHdpdGggYW4gT2JqZWN0IHJlcHJlc2VudGluZyBhbGwga2V5cyBhc3NvY2lhdGVkIGluIHRoaXMgaW5zdGFuY2UuXG4vL1xuUHJvdmlkZXIucHJvdG90eXBlLmxvYWQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIGdldFN0b3JlcyAoKSB7XG4gICAgdmFyIHN0b3JlcyA9IE9iamVjdC5rZXlzKHNlbGYuc3RvcmVzKTtcbiAgICBzdG9yZXMucmV2ZXJzZSgpO1xuICAgIHJldHVybiBzdG9yZXMubWFwKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICByZXR1cm4gc2VsZi5zdG9yZXNbbmFtZV07XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2FkU3RvcmVTeW5jKHN0b3JlKSB7XG4gICAgaWYgKCFzdG9yZS5sb2FkU3luYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCduY29uZiBzdG9yZSAnICsgc3RvcmUudHlwZSArICcgaGFzIG5vIGxvYWRTeW5jKCkgbWV0aG9kJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0b3JlLmxvYWRTeW5jKCk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2FkU3RvcmUoc3RvcmUsIG5leHQpIHtcbiAgICBpZiAoIXN0b3JlLmxvYWQgJiYgIXN0b3JlLmxvYWRTeW5jKSB7XG4gICAgICByZXR1cm4gbmV4dChuZXcgRXJyb3IoJ25jb25mIHN0b3JlICcgKyBzdG9yZS50eXBlICsgJyBoYXMgbm8gbG9hZCgpIG1ldGhvZCcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcmUubG9hZFN5bmNcbiAgICAgID8gbmV4dChudWxsLCBzdG9yZS5sb2FkU3luYygpKVxuICAgICAgOiBzdG9yZS5sb2FkKG5leHQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9hZEJhdGNoICh0YXJnZXRzLCBkb25lKSB7XG4gICAgaWYgKCFkb25lKSB7XG4gICAgICByZXR1cm4gY29tbW9uLm1lcmdlKHRhcmdldHMubWFwKGxvYWRTdG9yZVN5bmMpKTtcbiAgICB9XG5cbiAgICBhc3luYy5tYXAodGFyZ2V0cywgbG9hZFN0b3JlLCBmdW5jdGlvbiAoZXJyLCBvYmpzKSB7XG4gICAgICByZXR1cm4gZXJyID8gZG9uZShlcnIpIDogZG9uZShudWxsLCBjb21tb24ubWVyZ2Uob2JqcykpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2VTb3VyY2VzIChkYXRhKSB7XG4gICAgLy9cbiAgICAvLyBJZiBgZGF0YWAgd2FzIHJldHVybmVkIHRoZW4gbWVyZ2UgaXQgaW50b1xuICAgIC8vIHRoZSBzeXN0ZW0gc3RvcmUuXG4gICAgLy9cbiAgICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHNlbGYudXNlKCdzb3VyY2VzJywge1xuICAgICAgICB0eXBlOiAnbGl0ZXJhbCcsXG4gICAgICAgIHN0b3JlOiBkYXRhXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsb2FkU291cmNlcyAoKSB7XG4gICAgdmFyIHNvdXJjZUhpZXJhcmNoeSA9IHNlbGYuc291cmNlcy5zcGxpY2UoMCk7XG4gICAgc291cmNlSGllcmFyY2h5LnJldmVyc2UoKTtcblxuICAgIC8vXG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGNhbGxiYWNrIGFuZCB0aGUgY3VycmVudFxuICAgIC8vIHN0b3JlIGlzIGNhcGFibGUgb2YgbG9hZGluZyBzeW5jaHJvbm91c2x5XG4gICAgLy8gdGhlbiBkbyBzby5cbiAgICAvL1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIG1lcmdlU291cmNlcyhsb2FkQmF0Y2goc291cmNlSGllcmFyY2h5KSk7XG4gICAgICByZXR1cm4gbG9hZEJhdGNoKGdldFN0b3JlcygpKTtcbiAgICB9XG5cbiAgICBsb2FkQmF0Y2goc291cmNlSGllcmFyY2h5LCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgfVxuXG4gICAgICBtZXJnZVNvdXJjZXMoZGF0YSk7XG4gICAgICByZXR1cm4gbG9hZEJhdGNoKGdldFN0b3JlcygpLCBjYWxsYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2VsZi5zb3VyY2VzLmxlbmd0aFxuICAgID8gbG9hZFNvdXJjZXMoKVxuICAgIDogbG9hZEJhdGNoKGdldFN0b3JlcygpLCBjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIHNhdmUgKGNhbGxiYWNrKVxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSAqKm9wdGlvbmFsKiogIENvbnRpbnVhdGlvbiB0byByZXNwb25kIHRvIHdoZW5cbi8vIGNvbXBsZXRlLlxuLy8gSW5zdHJ1Y3RzIGVhY2ggcHJvdmlkZXIgdG8gc2F2ZS4gIElmIGEgY2FsbGJhY2sgaXMgcHJvdmlkZWQsIHdlIHdpbGwgYXR0ZW1wdFxuLy8gYXN5bmNocm9ub3VzIHNhdmVzIG9uIHRoZSBwcm92aWRlcnMsIGZhbGxpbmcgYmFjayB0byBzeW5jaHJvbm91cyBzYXZlcyBpZlxuLy8gdGhpcyBpc24ndCBwb3NzaWJsZS4gIElmIGEgcHJvdmlkZXIgZG9lcyBub3Qga25vdyBob3cgdG8gc2F2ZSwgaXQgd2lsbCBiZVxuLy8gaWdub3JlZC4gIFJldHVybnMgYW4gb2JqZWN0IGNvbnNpc3Rpbmcgb2YgYWxsIG9mIHRoZSBkYXRhIHdoaWNoIHdhc1xuLy8gYWN0dWFsbHkgc2F2ZWQuXG4vL1xuUHJvdmlkZXIucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiAodmFsdWUsIGNhbGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2sgJiYgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSB2YWx1ZTtcbiAgICB2YWx1ZSA9IG51bGw7XG4gIH1cblxuICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICBuYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuc3RvcmVzKTtcblxuICBmdW5jdGlvbiBzYXZlU3RvcmVTeW5jKG1lbW8sIG5hbWUpIHtcbiAgICB2YXIgc3RvcmUgPSBzZWxmLnN0b3Jlc1tuYW1lXTtcblxuICAgIC8vXG4gICAgLy8gSWYgdGhlIGBzdG9yZWAgZG9lc24ndCBoYXZlIGEgYHNhdmVTeW5jYCBtZXRob2QsXG4gICAgLy8ganVzdCBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlLlxuICAgIC8vXG4gICAgaWYgKHN0b3JlLnNhdmVTeW5jKSB7XG4gICAgICB2YXIgcmV0ID0gc3RvcmUuc2F2ZVN5bmMoKTtcbiAgICAgIGlmICh0eXBlb2YgcmV0ID09ICdvYmplY3QnICYmIHJldCAhPT0gbnVsbCkge1xuICAgICAgICBtZW1vLnB1c2gocmV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lbW87XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RvcmUobWVtbywgbmFtZSwgbmV4dCkge1xuICAgIHZhciBzdG9yZSA9IHNlbGYuc3RvcmVzW25hbWVdO1xuXG4gICAgLy9cbiAgICAvLyBJZiB0aGUgYHN0b3JlYCBkb2Vzbid0IGhhdmUgYSBgc2F2ZWAgb3Igc2F2ZVN5bmNgXG4gICAgLy8gbWV0aG9kKHMpLCBqdXN0IGlnbm9yZSBpdCBhbmQgY29udGludWUuXG4gICAgLy9cblxuICAgIGlmIChzdG9yZS5zYXZlKSB7XG4gICAgICByZXR1cm4gc3RvcmUuc2F2ZSh2YWx1ZSwgZnVuY3Rpb24gKGVyciwgZGF0YSkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PSAnb2JqZWN0JyAmJiBkYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgbWVtby5wdXNoKGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV4dChudWxsLCBtZW1vKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdG9yZS5zYXZlU3luYykge1xuICAgICAgbWVtby5wdXNoKHN0b3JlLnNhdmVTeW5jKCkpO1xuICAgIH1cblxuICAgIG5leHQobnVsbCwgbWVtbyk7XG4gIH1cblxuICAvL1xuICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgY2FsbGJhY2sgYW5kIHRoZSBjdXJyZW50XG4gIC8vIHN0b3JlIGlzIGNhcGFibGUgb2Ygc2F2aW5nIHN5bmNocm9ub3VzbHlcbiAgLy8gdGhlbiBkbyBzby5cbiAgLy9cbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIHJldHVybiBjb21tb24ubWVyZ2UobmFtZXMucmVkdWNlKHNhdmVTdG9yZVN5bmMsIFtdKSk7XG4gIH1cblxuICBhc3luYy5yZWR1Y2UobmFtZXMsIFtdLCBzYXZlU3RvcmUsIGZ1bmN0aW9uIChlcnIsIG9ianMpIHtcbiAgICByZXR1cm4gZXJyID8gY2FsbGJhY2soZXJyKSA6IGNhbGxiYWNrKG51bGwsIGNvbW1vbi5tZXJnZShvYmpzKSk7XG4gIH0pO1xufTtcblxuLy9cbi8vICMjIyBAcHJpdmF0ZSBmdW5jdGlvbiBfZXhlY3V0ZSAoYWN0aW9uLCBzeW5jTGVuZ3RoLCBbYXJndW1lbnRzXSlcbi8vICMjIyMgQGFjdGlvbiB7c3RyaW5nfSBBY3Rpb24gdG8gZXhlY3V0ZSBvbiBgdGhpcy5zdG9yZWAuXG4vLyAjIyMjIEBzeW5jTGVuZ3RoIHtudW1iZXJ9IEZ1bmN0aW9uIGxlbmd0aCBvZiB0aGUgc3luYyB2ZXJzaW9uLlxuLy8gIyMjIyBAYXJndW1lbnRzIHtBcnJheX0gQXJndW1lbnRzIGFycmF5IHRvIGFwcGx5IHRvIHRoZSBhY3Rpb25cbi8vIEV4ZWN1dGVzIHRoZSBzcGVjaWZpZWQgYGFjdGlvbmAgb24gYWxsIHN0b3JlcyBmb3IgdGhpcyBpbnN0YW5jZSwgZW5zdXJpbmcgYSBjYWxsYmFjayBzdXBwbGllZFxuLy8gdG8gYSBzeW5jaHJvbm91cyBzdG9yZSBmdW5jdGlvbiBpcyBzdGlsbCBpbnZva2VkLlxuLy9cblByb3ZpZGVyLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uIChhY3Rpb24sIHN5bmNMZW5ndGggLyogW2FyZ3VtZW50c10gKi8pIHtcbiAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgY2FsbGJhY2sgPSB0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nICYmIGFyZ3MucG9wKCksXG4gICAgICBkZXN0cnVjdGl2ZSA9IFsnc2V0JywgJ2NsZWFyJywgJ21lcmdlJywgJ3Jlc2V0J10uaW5kZXhPZihhY3Rpb24pICE9PSAtMSxcbiAgICAgIHNlbGYgPSB0aGlzLFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBtZXJnZU9ianMgPSBbXSxcbiAgICAgIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnN0b3Jlcyk7XG5cblxuICBmdW5jdGlvbiBydW5BY3Rpb24gKG5hbWUsIG5leHQpIHtcbiAgICB2YXIgc3RvcmUgPSBzZWxmLnN0b3Jlc1tuYW1lXTtcblxuICAgIGlmIChkZXN0cnVjdGl2ZSAmJiBzdG9yZS5yZWFkT25seSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcmVbYWN0aW9uXS5sZW5ndGggPiBzeW5jTGVuZ3RoXG4gICAgICA/IHN0b3JlW2FjdGlvbl0uYXBwbHkoc3RvcmUsIGFyZ3MuY29uY2F0KG5leHQpKVxuICAgICAgOiBuZXh0KG51bGwsIHN0b3JlW2FjdGlvbl0uYXBwbHkoc3RvcmUsIGFyZ3MpKTtcbiAgfVxuXG4gIGlmIChjYWxsYmFjaykge1xuICAgIHJldHVybiBhc3luYy5mb3JFYWNoKGtleXMsIHJ1bkFjdGlvbiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgcmV0dXJuIGVyciA/IGNhbGxiYWNrKGVycikgOiBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdG9yZSA9IHNlbGYuc3RvcmVzW25hbWVdO1xuXG4gICAgICBpZiAoZGVzdHJ1Y3RpdmUgJiYgc3RvcmUucmVhZE9ubHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNwb25zZSA9IHN0b3JlW2FjdGlvbl0uYXBwbHkoc3RvcmUsIGFyZ3MpO1xuXG4gICAgICAvLyBNZXJnZSBvYmplY3RzIGlmIG5lY2Vzc2FyeVxuICAgICAgaWYgKHJlc3BvbnNlICYmIGFjdGlvbiA9PT0gJ2dldCcgJiYgdHlwZW9mIHJlc3BvbnNlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXNwb25zZSkpIHtcbiAgICAgICAgbWVyZ2VPYmpzLnB1c2gocmVzcG9uc2UpO1xuICAgICAgICByZXNwb25zZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGlmIChtZXJnZU9ianMubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UgPSBjb21tb24ubWVyZ2UobWVyZ2VPYmpzLnJldmVyc2UoKSk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbi8vXG4vLyBUaHJvdyB0aGUgYGVycmAgaWYgYSBjYWxsYmFjayBpcyBub3Qgc3VwcGxpZWRcbi8vXG5mdW5jdGlvbiBvbkVycm9yKGVyciwgY2FsbGJhY2spIHtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gIH1cblxuICB0aHJvdyBlcnI7XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZnMgPSByZXF1aXJlKCdmcycpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxubGV0IHNoaW07XG5jbGFzcyBZMThOIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIC8vIGNvbmZpZ3VyYWJsZSBvcHRpb25zLlxuICAgICAgICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgICAgICAgdGhpcy5kaXJlY3RvcnkgPSBvcHRzLmRpcmVjdG9yeSB8fCAnLi9sb2NhbGVzJztcbiAgICAgICAgdGhpcy51cGRhdGVGaWxlcyA9IHR5cGVvZiBvcHRzLnVwZGF0ZUZpbGVzID09PSAnYm9vbGVhbicgPyBvcHRzLnVwZGF0ZUZpbGVzIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2NhbGUgPSBvcHRzLmxvY2FsZSB8fCAnZW4nO1xuICAgICAgICB0aGlzLmZhbGxiYWNrVG9MYW5ndWFnZSA9IHR5cGVvZiBvcHRzLmZhbGxiYWNrVG9MYW5ndWFnZSA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5mYWxsYmFja1RvTGFuZ3VhZ2UgOiB0cnVlO1xuICAgICAgICAvLyBpbnRlcm5hbCBzdHVmZi5cbiAgICAgICAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMud3JpdGVRdWV1ZSA9IFtdO1xuICAgIH1cbiAgICBfXyguLi5hcmdzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RhZ2dlZExpdGVyYWwoYXJndW1lbnRzWzBdLCAuLi5hcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0ciA9IGFyZ3Muc2hpZnQoKTtcbiAgICAgICAgbGV0IGNiID0gZnVuY3Rpb24gKCkgeyB9OyAvLyBzdGFydCB3aXRoIG5vb3AuXG4gICAgICAgIGlmICh0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgY2IgPSBhcmdzLnBvcCgpO1xuICAgICAgICBjYiA9IGNiIHx8IGZ1bmN0aW9uICgpIHsgfTsgLy8gbm9vcC5cbiAgICAgICAgaWYgKCF0aGlzLmNhY2hlW3RoaXMubG9jYWxlXSlcbiAgICAgICAgICAgIHRoaXMuX3JlYWRMb2NhbGVGaWxlKCk7XG4gICAgICAgIC8vIHdlJ3ZlIG9ic2VydmVkIGEgbmV3IHN0cmluZywgdXBkYXRlIHRoZSBsYW5ndWFnZSBmaWxlLlxuICAgICAgICBpZiAoIXRoaXMuY2FjaGVbdGhpcy5sb2NhbGVdW3N0cl0gJiYgdGhpcy51cGRhdGVGaWxlcykge1xuICAgICAgICAgICAgdGhpcy5jYWNoZVt0aGlzLmxvY2FsZV1bc3RyXSA9IHN0cjtcbiAgICAgICAgICAgIC8vIGluY2x1ZGUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBsb2NhbGUsXG4gICAgICAgICAgICAvLyBzaW5jZSB0aGVzZSB2YWx1ZXMgY291bGQgY2hhbmdlIGJlZm9yZSB0aGVcbiAgICAgICAgICAgIC8vIHdyaXRlIGlzIHBlcmZvcm1lZC5cbiAgICAgICAgICAgIHRoaXMuX2VucXVldWVXcml0ZSh7XG4gICAgICAgICAgICAgICAgZGlyZWN0b3J5OiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNiKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNoaW0uZm9ybWF0LmFwcGx5KHNoaW0uZm9ybWF0LCBbdGhpcy5jYWNoZVt0aGlzLmxvY2FsZV1bc3RyXSB8fCBzdHJdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICAgIF9fbigpIHtcbiAgICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIGNvbnN0IHNpbmd1bGFyID0gYXJncy5zaGlmdCgpO1xuICAgICAgICBjb25zdCBwbHVyYWwgPSBhcmdzLnNoaWZ0KCk7XG4gICAgICAgIGNvbnN0IHF1YW50aXR5ID0gYXJncy5zaGlmdCgpO1xuICAgICAgICBsZXQgY2IgPSBmdW5jdGlvbiAoKSB7IH07IC8vIHN0YXJ0IHdpdGggbm9vcC5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICBjYiA9IGFyZ3MucG9wKCk7XG4gICAgICAgIGlmICghdGhpcy5jYWNoZVt0aGlzLmxvY2FsZV0pXG4gICAgICAgICAgICB0aGlzLl9yZWFkTG9jYWxlRmlsZSgpO1xuICAgICAgICBsZXQgc3RyID0gcXVhbnRpdHkgPT09IDEgPyBzaW5ndWxhciA6IHBsdXJhbDtcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVbdGhpcy5sb2NhbGVdW3Npbmd1bGFyXSkge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmNhY2hlW3RoaXMubG9jYWxlXVtzaW5ndWxhcl07XG4gICAgICAgICAgICBzdHIgPSBlbnRyeVtxdWFudGl0eSA9PT0gMSA/ICdvbmUnIDogJ290aGVyJ107XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2UndmUgb2JzZXJ2ZWQgYSBuZXcgc3RyaW5nLCB1cGRhdGUgdGhlIGxhbmd1YWdlIGZpbGUuXG4gICAgICAgIGlmICghdGhpcy5jYWNoZVt0aGlzLmxvY2FsZV1bc2luZ3VsYXJdICYmIHRoaXMudXBkYXRlRmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVbdGhpcy5sb2NhbGVdW3Npbmd1bGFyXSA9IHtcbiAgICAgICAgICAgICAgICBvbmU6IHNpbmd1bGFyLFxuICAgICAgICAgICAgICAgIG90aGVyOiBwbHVyYWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBpbmNsdWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgbG9jYWxlLFxuICAgICAgICAgICAgLy8gc2luY2UgdGhlc2UgdmFsdWVzIGNvdWxkIGNoYW5nZSBiZWZvcmUgdGhlXG4gICAgICAgICAgICAvLyB3cml0ZSBpcyBwZXJmb3JtZWQuXG4gICAgICAgICAgICB0aGlzLl9lbnF1ZXVlV3JpdGUoe1xuICAgICAgICAgICAgICAgIGRpcmVjdG9yeTogdGhpcy5kaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGEgJWQgcGxhY2Vob2xkZXIgaXMgcHJvdmlkZWQsIGFkZCBxdWFudGl0eVxuICAgICAgICAvLyB0byB0aGUgYXJndW1lbnRzIGV4cGFuZGVkIGJ5IHV0aWwuZm9ybWF0LlxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBbc3RyXTtcbiAgICAgICAgaWYgKH5zdHIuaW5kZXhPZignJWQnKSlcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHF1YW50aXR5KTtcbiAgICAgICAgcmV0dXJuIHNoaW0uZm9ybWF0LmFwcGx5KHNoaW0uZm9ybWF0LCB2YWx1ZXMuY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gICAgc2V0TG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcbiAgICB9XG4gICAgZ2V0TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGU7XG4gICAgfVxuICAgIHVwZGF0ZUxvY2FsZShvYmopIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhY2hlW3RoaXMubG9jYWxlXSlcbiAgICAgICAgICAgIHRoaXMuX3JlYWRMb2NhbGVGaWxlKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlW3RoaXMubG9jYWxlXVtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgX3RhZ2dlZExpdGVyYWwocGFydHMsIC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IHN0ciA9ICcnO1xuICAgICAgICBwYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJ0LCBpKSB7XG4gICAgICAgICAgICBjb25zdCBhcmcgPSBhcmdzW2kgKyAxXTtcbiAgICAgICAgICAgIHN0ciArPSBwYXJ0O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmcgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgc3RyICs9ICclcyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5fXy5hcHBseSh0aGlzLCBbc3RyXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmdzLCAxKSkpO1xuICAgIH1cbiAgICBfZW5xdWV1ZVdyaXRlKHdvcmspIHtcbiAgICAgICAgdGhpcy53cml0ZVF1ZXVlLnB1c2god29yayk7XG4gICAgICAgIGlmICh0aGlzLndyaXRlUXVldWUubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1dyaXRlUXVldWUoKTtcbiAgICB9XG4gICAgX3Byb2Nlc3NXcml0ZVF1ZXVlKCkge1xuICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHdvcmsgPSB0aGlzLndyaXRlUXVldWVbMF07XG4gICAgICAgIC8vIGRlc3RydWN0dXJlIHRoZSBlbnF1ZXVlZCB3b3JrLlxuICAgICAgICBjb25zdCBkaXJlY3RvcnkgPSB3b3JrLmRpcmVjdG9yeTtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gd29yay5sb2NhbGU7XG4gICAgICAgIGNvbnN0IGNiID0gd29yay5jYjtcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2VGaWxlID0gdGhpcy5fcmVzb2x2ZUxvY2FsZUZpbGUoZGlyZWN0b3J5LCBsb2NhbGUpO1xuICAgICAgICBjb25zdCBzZXJpYWxpemVkTG9jYWxlID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jYWNoZVtsb2NhbGVdLCBudWxsLCAyKTtcbiAgICAgICAgc2hpbS5mcy53cml0ZUZpbGUobGFuZ3VhZ2VGaWxlLCBzZXJpYWxpemVkTG9jYWxlLCAndXRmLTgnLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBfdGhpcy53cml0ZVF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAoX3RoaXMud3JpdGVRdWV1ZS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIF90aGlzLl9wcm9jZXNzV3JpdGVRdWV1ZSgpO1xuICAgICAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9yZWFkTG9jYWxlRmlsZSgpIHtcbiAgICAgICAgbGV0IGxvY2FsZUxvb2t1cCA9IHt9O1xuICAgICAgICBjb25zdCBsYW5ndWFnZUZpbGUgPSB0aGlzLl9yZXNvbHZlTG9jYWxlRmlsZSh0aGlzLmRpcmVjdG9yeSwgdGhpcy5sb2NhbGUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB1c2luZyBhIGJ1bmRsZXIgc3VjaCBhcyB3ZWJwYWNrLCByZWFkRmlsZVN5bmMgbWF5IG5vdCBiZSBkZWZpbmVkOlxuICAgICAgICAgICAgaWYgKHNoaW0uZnMucmVhZEZpbGVTeW5jKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlTG9va3VwID0gSlNPTi5wYXJzZShzaGltLmZzLnJlYWRGaWxlU3luYyhsYW5ndWFnZUZpbGUsICd1dGYtOCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZSA9ICdzeW50YXggZXJyb3IgaW4gJyArIGxhbmd1YWdlRmlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpXG4gICAgICAgICAgICAgICAgbG9jYWxlTG9va3VwID0ge307XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FjaGVbdGhpcy5sb2NhbGVdID0gbG9jYWxlTG9va3VwO1xuICAgIH1cbiAgICBfcmVzb2x2ZUxvY2FsZUZpbGUoZGlyZWN0b3J5LCBsb2NhbGUpIHtcbiAgICAgICAgbGV0IGZpbGUgPSBzaGltLnJlc29sdmUoZGlyZWN0b3J5LCAnLi8nLCBsb2NhbGUgKyAnLmpzb24nKTtcbiAgICAgICAgaWYgKHRoaXMuZmFsbGJhY2tUb0xhbmd1YWdlICYmICF0aGlzLl9maWxlRXhpc3RzU3luYyhmaWxlKSAmJiB+bG9jYWxlLmxhc3RJbmRleE9mKCdfJykpIHtcbiAgICAgICAgICAgIC8vIGF0dGVtcHQgZmFsbGJhY2sgdG8gbGFuZ3VhZ2Ugb25seVxuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2VGaWxlID0gc2hpbS5yZXNvbHZlKGRpcmVjdG9yeSwgJy4vJywgbG9jYWxlLnNwbGl0KCdfJylbMF0gKyAnLmpzb24nKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9maWxlRXhpc3RzU3luYyhsYW5ndWFnZUZpbGUpKVxuICAgICAgICAgICAgICAgIGZpbGUgPSBsYW5ndWFnZUZpbGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuICAgIF9maWxlRXhpc3RzU3luYyhmaWxlKSB7XG4gICAgICAgIHJldHVybiBzaGltLmV4aXN0cyhmaWxlKTtcbiAgICB9XG59XG5mdW5jdGlvbiB5MThuJDEob3B0cywgX3NoaW0pIHtcbiAgICBzaGltID0gX3NoaW07XG4gICAgY29uc3QgeTE4biA9IG5ldyBZMThOKG9wdHMpO1xuICAgIHJldHVybiB7XG4gICAgICAgIF9fOiB5MThuLl9fLmJpbmQoeTE4biksXG4gICAgICAgIF9fbjogeTE4bi5fX24uYmluZCh5MThuKSxcbiAgICAgICAgc2V0TG9jYWxlOiB5MThuLnNldExvY2FsZS5iaW5kKHkxOG4pLFxuICAgICAgICBnZXRMb2NhbGU6IHkxOG4uZ2V0TG9jYWxlLmJpbmQoeTE4biksXG4gICAgICAgIHVwZGF0ZUxvY2FsZTogeTE4bi51cGRhdGVMb2NhbGUuYmluZCh5MThuKSxcbiAgICAgICAgbG9jYWxlOiB5MThuLmxvY2FsZVxuICAgIH07XG59XG5cbnZhciBub2RlUGxhdGZvcm1TaGltID0ge1xuICAgIGZzOiB7XG4gICAgICAgIHJlYWRGaWxlU3luYzogZnMucmVhZEZpbGVTeW5jLFxuICAgICAgICB3cml0ZUZpbGU6IGZzLndyaXRlRmlsZVxuICAgIH0sXG4gICAgZm9ybWF0OiB1dGlsLmZvcm1hdCxcbiAgICByZXNvbHZlOiBwYXRoLnJlc29sdmUsXG4gICAgZXhpc3RzOiAoZmlsZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGZzLnN0YXRTeW5jKGZpbGUpLmlzRmlsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNvbnN0IHkxOG4gPSAob3B0cykgPT4ge1xuICAgIHJldHVybiB5MThuJDEob3B0cywgbm9kZVBsYXRmb3JtU2hpbSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHkxOG47XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcblxuZnVuY3Rpb24gY2FtZWxDYXNlKHN0cikge1xuICAgIGNvbnN0IGlzQ2FtZWxDYXNlID0gc3RyICE9PSBzdHIudG9Mb3dlckNhc2UoKSAmJiBzdHIgIT09IHN0ci50b1VwcGVyQ2FzZSgpO1xuICAgIGlmICghaXNDYW1lbENhc2UpIHtcbiAgICAgICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIGlmIChzdHIuaW5kZXhPZignLScpID09PSAtMSAmJiBzdHIuaW5kZXhPZignXycpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGV0IGNhbWVsY2FzZSA9ICcnO1xuICAgICAgICBsZXQgbmV4dENoclVwcGVyID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGxlYWRpbmdIeXBoZW5zID0gc3RyLm1hdGNoKC9eLSsvKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGxlYWRpbmdIeXBoZW5zID8gbGVhZGluZ0h5cGhlbnNbMF0ubGVuZ3RoIDogMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNociA9IHN0ci5jaGFyQXQoaSk7XG4gICAgICAgICAgICBpZiAobmV4dENoclVwcGVyKSB7XG4gICAgICAgICAgICAgICAgbmV4dENoclVwcGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY2hyID0gY2hyLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaSAhPT0gMCAmJiAoY2hyID09PSAnLScgfHwgY2hyID09PSAnXycpKSB7XG4gICAgICAgICAgICAgICAgbmV4dENoclVwcGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNociAhPT0gJy0nICYmIGNociAhPT0gJ18nKSB7XG4gICAgICAgICAgICAgICAgY2FtZWxjYXNlICs9IGNocjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FtZWxjYXNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRlY2FtZWxpemUoc3RyLCBqb2luU3RyaW5nKSB7XG4gICAgY29uc3QgbG93ZXJjYXNlID0gc3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgam9pblN0cmluZyA9IGpvaW5TdHJpbmcgfHwgJy0nO1xuICAgIGxldCBub3RDYW1lbGNhc2UgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaHJMb3dlciA9IGxvd2VyY2FzZS5jaGFyQXQoaSk7XG4gICAgICAgIGNvbnN0IGNoclN0cmluZyA9IHN0ci5jaGFyQXQoaSk7XG4gICAgICAgIGlmIChjaHJMb3dlciAhPT0gY2hyU3RyaW5nICYmIGkgPiAwKSB7XG4gICAgICAgICAgICBub3RDYW1lbGNhc2UgKz0gYCR7am9pblN0cmluZ30ke2xvd2VyY2FzZS5jaGFyQXQoaSl9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vdENhbWVsY2FzZSArPSBjaHJTdHJpbmc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vdENhbWVsY2FzZTtcbn1cbmZ1bmN0aW9uIGxvb2tzTGlrZU51bWJlcih4KSB7XG4gICAgaWYgKHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiB4ID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKC9eMHhbMC05YS1mXSskL2kudGVzdCh4KSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKC9eMFteLl0vLnRlc3QoeCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gL15bLV0/KD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKShlWy0rXT9cXGQrKT8kLy50ZXN0KHgpO1xufVxuXG5mdW5jdGlvbiB0b2tlbml6ZUFyZ1N0cmluZyhhcmdTdHJpbmcpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiBhcmdTdHJpbmcubWFwKGUgPT4gdHlwZW9mIGUgIT09ICdzdHJpbmcnID8gZSArICcnIDogZSk7XG4gICAgfVxuICAgIGFyZ1N0cmluZyA9IGFyZ1N0cmluZy50cmltKCk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBwcmV2QyA9IG51bGw7XG4gICAgbGV0IGMgPSBudWxsO1xuICAgIGxldCBvcGVuaW5nID0gbnVsbDtcbiAgICBjb25zdCBhcmdzID0gW107XG4gICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IGFyZ1N0cmluZy5sZW5ndGg7IGlpKyspIHtcbiAgICAgICAgcHJldkMgPSBjO1xuICAgICAgICBjID0gYXJnU3RyaW5nLmNoYXJBdChpaSk7XG4gICAgICAgIGlmIChjID09PSAnICcgJiYgIW9wZW5pbmcpIHtcbiAgICAgICAgICAgIGlmICghKHByZXZDID09PSAnICcpKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgPT09IG9wZW5pbmcpIHtcbiAgICAgICAgICAgIG9wZW5pbmcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKChjID09PSBcIidcIiB8fCBjID09PSAnXCInKSAmJiAhb3BlbmluZykge1xuICAgICAgICAgICAgb3BlbmluZyA9IGM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcmdzW2ldKVxuICAgICAgICAgICAgYXJnc1tpXSA9ICcnO1xuICAgICAgICBhcmdzW2ldICs9IGM7XG4gICAgfVxuICAgIHJldHVybiBhcmdzO1xufVxuXG52YXIgRGVmYXVsdFZhbHVlc0ZvclR5cGVLZXk7XG4oZnVuY3Rpb24gKERlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5KSB7XG4gICAgRGVmYXVsdFZhbHVlc0ZvclR5cGVLZXlbXCJCT09MRUFOXCJdID0gXCJib29sZWFuXCI7XG4gICAgRGVmYXVsdFZhbHVlc0ZvclR5cGVLZXlbXCJTVFJJTkdcIl0gPSBcInN0cmluZ1wiO1xuICAgIERlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5W1wiTlVNQkVSXCJdID0gXCJudW1iZXJcIjtcbiAgICBEZWZhdWx0VmFsdWVzRm9yVHlwZUtleVtcIkFSUkFZXCJdID0gXCJhcnJheVwiO1xufSkoRGVmYXVsdFZhbHVlc0ZvclR5cGVLZXkgfHwgKERlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5ID0ge30pKTtcblxubGV0IG1peGluO1xuY2xhc3MgWWFyZ3NQYXJzZXIge1xuICAgIGNvbnN0cnVjdG9yKF9taXhpbikge1xuICAgICAgICBtaXhpbiA9IF9taXhpbjtcbiAgICB9XG4gICAgcGFyc2UoYXJnc0lucHV0LCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICAgIGFsaWFzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBhcnJheTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYm9vbGVhbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29uZmlnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb25maWdPYmplY3RzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb2VyY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvdW50OiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICBlbnZQcmVmaXg6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5hcmc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5vcm1hbGl6ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc3RyaW5nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF9fOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBrZXk6IHVuZGVmaW5lZFxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgYXJncyA9IHRva2VuaXplQXJnU3RyaW5nKGFyZ3NJbnB1dCk7XG4gICAgICAgIGNvbnN0IGlucHV0SXNTdHJpbmcgPSB0eXBlb2YgYXJnc0lucHV0ID09PSAnc3RyaW5nJztcbiAgICAgICAgY29uc3QgYWxpYXNlcyA9IGNvbWJpbmVBbGlhc2VzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSwgb3B0cy5hbGlhcykpO1xuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAnYm9vbGVhbi1uZWdhdGlvbic6IHRydWUsXG4gICAgICAgICAgICAnY2FtZWwtY2FzZS1leHBhbnNpb24nOiB0cnVlLFxuICAgICAgICAgICAgJ2NvbWJpbmUtYXJyYXlzJzogZmFsc2UsXG4gICAgICAgICAgICAnZG90LW5vdGF0aW9uJzogdHJ1ZSxcbiAgICAgICAgICAgICdkdXBsaWNhdGUtYXJndW1lbnRzLWFycmF5JzogdHJ1ZSxcbiAgICAgICAgICAgICdmbGF0dGVuLWR1cGxpY2F0ZS1hcnJheXMnOiB0cnVlLFxuICAgICAgICAgICAgJ2dyZWVkeS1hcnJheXMnOiB0cnVlLFxuICAgICAgICAgICAgJ2hhbHQtYXQtbm9uLW9wdGlvbic6IGZhbHNlLFxuICAgICAgICAgICAgJ25hcmdzLWVhdHMtb3B0aW9ucyc6IGZhbHNlLFxuICAgICAgICAgICAgJ25lZ2F0aW9uLXByZWZpeCc6ICduby0nLFxuICAgICAgICAgICAgJ3BhcnNlLW51bWJlcnMnOiB0cnVlLFxuICAgICAgICAgICAgJ3BhcnNlLXBvc2l0aW9uYWwtbnVtYmVycyc6IHRydWUsXG4gICAgICAgICAgICAncG9wdWxhdGUtLSc6IGZhbHNlLFxuICAgICAgICAgICAgJ3NldC1wbGFjZWhvbGRlci1rZXknOiBmYWxzZSxcbiAgICAgICAgICAgICdzaG9ydC1vcHRpb24tZ3JvdXBzJzogdHJ1ZSxcbiAgICAgICAgICAgICdzdHJpcC1hbGlhc2VkJzogZmFsc2UsXG4gICAgICAgICAgICAnc3RyaXAtZGFzaGVkJzogZmFsc2UsXG4gICAgICAgICAgICAndW5rbm93bi1vcHRpb25zLWFzLWFyZ3MnOiBmYWxzZVxuICAgICAgICB9LCBvcHRzLmNvbmZpZ3VyYXRpb24pO1xuICAgICAgICBjb25zdCBkZWZhdWx0cyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSwgb3B0cy5kZWZhdWx0KTtcbiAgICAgICAgY29uc3QgY29uZmlnT2JqZWN0cyA9IG9wdHMuY29uZmlnT2JqZWN0cyB8fCBbXTtcbiAgICAgICAgY29uc3QgZW52UHJlZml4ID0gb3B0cy5lbnZQcmVmaXg7XG4gICAgICAgIGNvbnN0IG5vdEZsYWdzT3B0aW9uID0gY29uZmlndXJhdGlvblsncG9wdWxhdGUtLSddO1xuICAgICAgICBjb25zdCBub3RGbGFnc0FyZ3YgPSBub3RGbGFnc09wdGlvbiA/ICctLScgOiAnXyc7XG4gICAgICAgIGNvbnN0IG5ld0FsaWFzZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBjb25zdCBkZWZhdWx0ZWQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBjb25zdCBfXyA9IG9wdHMuX18gfHwgbWl4aW4uZm9ybWF0O1xuICAgICAgICBjb25zdCBmbGFncyA9IHtcbiAgICAgICAgICAgIGFsaWFzZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICAgICAgICBhcnJheXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICAgICAgICBib29sczogT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgICAgICAgIHN0cmluZ3M6IE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICAgICAgICBudW1iZXJzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgICAgICAgY291bnRzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgICAgICAgbm9ybWFsaXplOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgICAgICAgY29uZmlnczogT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgICAgICAgIG5hcmdzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgICAgICAgY29lcmNpb25zOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgICAgICAga2V5czogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmVnYXRpdmUgPSAvXi0oWzAtOV0rKFxcLlswLTldKyk/fFxcLlswLTldKykkLztcbiAgICAgICAgY29uc3QgbmVnYXRlZEJvb2xlYW4gPSBuZXcgUmVnRXhwKCdeLS0nICsgY29uZmlndXJhdGlvblsnbmVnYXRpb24tcHJlZml4J10gKyAnKC4rKScpO1xuICAgICAgICBbXS5jb25jYXQob3B0cy5hcnJheSB8fCBbXSkuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goZnVuY3Rpb24gKG9wdCkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdHlwZW9mIG9wdCA9PT0gJ29iamVjdCcgPyBvcHQua2V5IDogb3B0O1xuICAgICAgICAgICAgY29uc3QgYXNzaWdubWVudCA9IE9iamVjdC5rZXlzKG9wdCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheUZsYWdLZXlzID0ge1xuICAgICAgICAgICAgICAgICAgICBib29sZWFuOiAnYm9vbHMnLFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmc6ICdzdHJpbmdzJyxcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyOiAnbnVtYmVycydcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhcnJheUZsYWdLZXlzW2tleV07XG4gICAgICAgICAgICB9KS5maWx0ZXIoQm9vbGVhbikucG9wKCk7XG4gICAgICAgICAgICBpZiAoYXNzaWdubWVudCkge1xuICAgICAgICAgICAgICAgIGZsYWdzW2Fzc2lnbm1lbnRdW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmxhZ3MuYXJyYXlzW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgZmxhZ3Mua2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH0pO1xuICAgICAgICBbXS5jb25jYXQob3B0cy5ib29sZWFuIHx8IFtdKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBmbGFncy5ib29sc1trZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIGZsYWdzLmtleXMucHVzaChrZXkpO1xuICAgICAgICB9KTtcbiAgICAgICAgW10uY29uY2F0KG9wdHMuc3RyaW5nIHx8IFtdKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBmbGFncy5zdHJpbmdzW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgZmxhZ3Mua2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH0pO1xuICAgICAgICBbXS5jb25jYXQob3B0cy5udW1iZXIgfHwgW10pLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGZsYWdzLm51bWJlcnNba2V5XSA9IHRydWU7XG4gICAgICAgICAgICBmbGFncy5rZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIFtdLmNvbmNhdChvcHRzLmNvdW50IHx8IFtdKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBmbGFncy5jb3VudHNba2V5XSA9IHRydWU7XG4gICAgICAgICAgICBmbGFncy5rZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIFtdLmNvbmNhdChvcHRzLm5vcm1hbGl6ZSB8fCBbXSkuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgZmxhZ3Mubm9ybWFsaXplW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgZmxhZ3Mua2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHlwZW9mIG9wdHMubmFyZyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG9wdHMubmFyZykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MubmFyZ3Nba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBmbGFncy5rZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9wdHMuY29lcmNlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMob3B0cy5jb2VyY2UpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuY29lcmNpb25zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3Mua2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzLmNvbmZpZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdHMuY29uZmlnKSB8fCB0eXBlb2Ygb3B0cy5jb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgW10uY29uY2F0KG9wdHMuY29uZmlnKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNvbmZpZ3Nba2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2Ygb3B0cy5jb25maWcgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMob3B0cy5jb25maWcpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFncy5jb25maWdzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGV4dGVuZEFsaWFzZXMob3B0cy5rZXksIGFsaWFzZXMsIG9wdHMuZGVmYXVsdCwgZmxhZ3MuYXJyYXlzKTtcbiAgICAgICAgT2JqZWN0LmtleXMoZGVmYXVsdHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgKGZsYWdzLmFsaWFzZXNba2V5XSB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoYWxpYXMpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1thbGlhc10gPSBkZWZhdWx0c1trZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgICAgICBjaGVja0NvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgbGV0IG5vdEZsYWdzID0gW107XG4gICAgICAgIGNvbnN0IGFyZ3YgPSBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksIHsgXzogW10gfSk7XG4gICAgICAgIGNvbnN0IGFyZ3ZSZXR1cm4gPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhcmcgPSBhcmdzW2ldO1xuICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkQXJnID0gYXJnLnJlcGxhY2UoL14tezMsfS8sICctLS0nKTtcbiAgICAgICAgICAgIGxldCBicm9rZW47XG4gICAgICAgICAgICBsZXQga2V5O1xuICAgICAgICAgICAgbGV0IGxldHRlcnM7XG4gICAgICAgICAgICBsZXQgbTtcbiAgICAgICAgICAgIGxldCBuZXh0O1xuICAgICAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICAgICAgaWYgKGFyZyAhPT0gJy0tJyAmJiAvXi0vLnRlc3QoYXJnKSAmJiBpc1Vua25vd25PcHRpb25Bc0FyZyhhcmcpKSB7XG4gICAgICAgICAgICAgICAgcHVzaFBvc2l0aW9uYWwoYXJnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRydW5jYXRlZEFyZy5tYXRjaCgvXi0tLSsoPXwkKS8pKSB7XG4gICAgICAgICAgICAgICAgcHVzaFBvc2l0aW9uYWwoYXJnKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFyZy5tYXRjaCgvXi0tLis9LykgfHwgKCFjb25maWd1cmF0aW9uWydzaG9ydC1vcHRpb24tZ3JvdXBzJ10gJiYgYXJnLm1hdGNoKC9eLS4rPS8pKSkge1xuICAgICAgICAgICAgICAgIG0gPSBhcmcubWF0Y2goL14tLT8oW149XSspPShbXFxzXFxTXSopJC8pO1xuICAgICAgICAgICAgICAgIGlmIChtICE9PSBudWxsICYmIEFycmF5LmlzQXJyYXkobSkgJiYgbS5sZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tBbGxBbGlhc2VzKG1bMV0sIGZsYWdzLmFycmF5cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlYXRBcnJheShpLCBtWzFdLCBhcmdzLCBtWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGVja0FsbEFsaWFzZXMobVsxXSwgZmxhZ3MubmFyZ3MpICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVhdE5hcmdzKGksIG1bMV0sIGFyZ3MsIG1bMl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKG1bMV0sIG1bMl0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXJnLm1hdGNoKG5lZ2F0ZWRCb29sZWFuKSAmJiBjb25maWd1cmF0aW9uWydib29sZWFuLW5lZ2F0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICBtID0gYXJnLm1hdGNoKG5lZ2F0ZWRCb29sZWFuKTtcbiAgICAgICAgICAgICAgICBpZiAobSAhPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KG0pICYmIG0ubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gbVsxXTtcbiAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYXJyYXlzKSA/IFtmYWxzZV0gOiBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXJnLm1hdGNoKC9eLS0uKy8pIHx8ICghY29uZmlndXJhdGlvblsnc2hvcnQtb3B0aW9uLWdyb3VwcyddICYmIGFyZy5tYXRjaCgvXi1bXi1dKy8pKSkge1xuICAgICAgICAgICAgICAgIG0gPSBhcmcubWF0Y2goL14tLT8oLispLyk7XG4gICAgICAgICAgICAgICAgaWYgKG0gIT09IG51bGwgJiYgQXJyYXkuaXNBcnJheShtKSAmJiBtLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleSA9IG1bMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5hcnJheXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gZWF0QXJyYXkoaSwga2V5LCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5uYXJncykgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gZWF0TmFyZ3MoaSwga2V5LCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBhcmdzW2kgKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9PSB1bmRlZmluZWQgJiYgKCFuZXh0Lm1hdGNoKC9eLS8pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5tYXRjaChuZWdhdGl2ZSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLmJvb2xzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5jb3VudHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgbmV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoL14odHJ1ZXxmYWxzZSkkLy50ZXN0KG5leHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgbmV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgZGVmYXVsdFZhbHVlKGtleSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXJnLm1hdGNoKC9eLS5cXC4uKz0vKSkge1xuICAgICAgICAgICAgICAgIG0gPSBhcmcubWF0Y2goL14tKFtePV0rKT0oW1xcc1xcU10qKSQvKTtcbiAgICAgICAgICAgICAgICBpZiAobSAhPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KG0pICYmIG0ubGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0QXJnKG1bMV0sIG1bMl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFyZy5tYXRjaCgvXi0uXFwuLisvKSAmJiAhYXJnLm1hdGNoKG5lZ2F0aXZlKSkge1xuICAgICAgICAgICAgICAgIG5leHQgPSBhcmdzW2kgKyAxXTtcbiAgICAgICAgICAgICAgICBtID0gYXJnLm1hdGNoKC9eLSguXFwuLispLyk7XG4gICAgICAgICAgICAgICAgaWYgKG0gIT09IG51bGwgJiYgQXJyYXkuaXNBcnJheShtKSAmJiBtLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleSA9IG1bMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9PSB1bmRlZmluZWQgJiYgIW5leHQubWF0Y2goL14tLykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5ib29scykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5jb3VudHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBcmcoa2V5LCBuZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEFyZyhrZXksIGRlZmF1bHRWYWx1ZShrZXkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFyZy5tYXRjaCgvXi1bXi1dKy8pICYmICFhcmcubWF0Y2gobmVnYXRpdmUpKSB7XG4gICAgICAgICAgICAgICAgbGV0dGVycyA9IGFyZy5zbGljZSgxLCAtMSkuc3BsaXQoJycpO1xuICAgICAgICAgICAgICAgIGJyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGV0dGVycy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gYXJnLnNsaWNlKGogKyAyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxldHRlcnNbaiArIDFdICYmIGxldHRlcnNbaiArIDFdID09PSAnPScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYXJnLnNsaWNlKGogKyAzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IGxldHRlcnNbal07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYXJyYXlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlYXRBcnJheShpLCBrZXksIGFyZ3MsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLm5hcmdzKSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZWF0TmFyZ3MoaSwga2V5LCBhcmdzLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicm9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgPT09ICctJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGxldHRlcnNbal0sIG5leHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKC9bQS1aYS16XS8udGVzdChsZXR0ZXJzW2pdKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgL14tP1xcZCsoXFwuXFxkKik/KGUtP1xcZCspPyQvLnRlc3QobmV4dCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQWxsQWxpYXNlcyhuZXh0LCBmbGFncy5ib29scykgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBcmcobGV0dGVyc1tqXSwgbmV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicm9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxldHRlcnNbaiArIDFdICYmIGxldHRlcnNbaiArIDFdLm1hdGNoKC9cXFcvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGxldHRlcnNbal0sIG5leHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGxldHRlcnNbal0sIGRlZmF1bHRWYWx1ZShsZXR0ZXJzW2pdKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAga2V5ID0gYXJnLnNsaWNlKC0xKVswXTtcbiAgICAgICAgICAgICAgICBpZiAoIWJyb2tlbiAmJiBrZXkgIT09ICctJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYXJyYXlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVhdEFycmF5KGksIGtleSwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MubmFyZ3MpICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVhdE5hcmdzKGksIGtleSwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gYXJnc1tpICsgMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPT0gdW5kZWZpbmVkICYmICghL14oLXwtLSlbXi1dLy50ZXN0KG5leHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5tYXRjaChuZWdhdGl2ZSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLmJvb2xzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5jb3VudHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgbmV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoL14odHJ1ZXxmYWxzZSkkLy50ZXN0KG5leHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgbmV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgZGVmYXVsdFZhbHVlKGtleSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXJnLm1hdGNoKC9eLVswLTldJC8pICYmXG4gICAgICAgICAgICAgICAgYXJnLm1hdGNoKG5lZ2F0aXZlKSAmJlxuICAgICAgICAgICAgICAgIGNoZWNrQWxsQWxpYXNlcyhhcmcuc2xpY2UoMSksIGZsYWdzLmJvb2xzKSkge1xuICAgICAgICAgICAgICAgIGtleSA9IGFyZy5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICBzZXRBcmcoa2V5LCBkZWZhdWx0VmFsdWUoa2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhcmcgPT09ICctLScpIHtcbiAgICAgICAgICAgICAgICBub3RGbGFncyA9IGFyZ3Muc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvblsnaGFsdC1hdC1ub24tb3B0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICBub3RGbGFncyA9IGFyZ3Muc2xpY2UoaSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwdXNoUG9zaXRpb25hbChhcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFwcGx5RW52VmFycyhhcmd2LCB0cnVlKTtcbiAgICAgICAgYXBwbHlFbnZWYXJzKGFyZ3YsIGZhbHNlKTtcbiAgICAgICAgc2V0Q29uZmlnKGFyZ3YpO1xuICAgICAgICBzZXRDb25maWdPYmplY3RzKCk7XG4gICAgICAgIGFwcGx5RGVmYXVsdHNBbmRBbGlhc2VzKGFyZ3YsIGZsYWdzLmFsaWFzZXMsIGRlZmF1bHRzLCB0cnVlKTtcbiAgICAgICAgYXBwbHlDb2VyY2lvbnMoYXJndik7XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uWydzZXQtcGxhY2Vob2xkZXIta2V5J10pXG4gICAgICAgICAgICBzZXRQbGFjZWhvbGRlcktleXMoYXJndik7XG4gICAgICAgIE9iamVjdC5rZXlzKGZsYWdzLmNvdW50cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoIWhhc0tleShhcmd2LCBrZXkuc3BsaXQoJy4nKSkpXG4gICAgICAgICAgICAgICAgc2V0QXJnKGtleSwgMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobm90RmxhZ3NPcHRpb24gJiYgbm90RmxhZ3MubGVuZ3RoKVxuICAgICAgICAgICAgYXJndltub3RGbGFnc0FyZ3ZdID0gW107XG4gICAgICAgIG5vdEZsYWdzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgYXJndltub3RGbGFnc0FyZ3ZdLnB1c2goa2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uWydjYW1lbC1jYXNlLWV4cGFuc2lvbiddICYmIGNvbmZpZ3VyYXRpb25bJ3N0cmlwLWRhc2hlZCddKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhhcmd2KS5maWx0ZXIoa2V5ID0+IGtleSAhPT0gJy0tJyAmJiBrZXkuaW5jbHVkZXMoJy0nKSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBhcmd2W2tleV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlndXJhdGlvblsnc3RyaXAtYWxpYXNlZCddKSB7XG4gICAgICAgICAgICBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoYWxpYXNlcykubWFwKGsgPT4gYWxpYXNlc1trXSkpLmZvckVhY2goYWxpYXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uWydjYW1lbC1jYXNlLWV4cGFuc2lvbiddICYmIGFsaWFzLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFyZ3ZbYWxpYXMuc3BsaXQoJy4nKS5tYXAocHJvcCA9PiBjYW1lbENhc2UocHJvcCkpLmpvaW4oJy4nKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBhcmd2W2FsaWFzXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHB1c2hQb3NpdGlvbmFsKGFyZykge1xuICAgICAgICAgICAgY29uc3QgbWF5YmVDb2VyY2VkTnVtYmVyID0gbWF5YmVDb2VyY2VOdW1iZXIoJ18nLCBhcmcpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXliZUNvZXJjZWROdW1iZXIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBtYXliZUNvZXJjZWROdW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgYXJndi5fLnB1c2gobWF5YmVDb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBlYXROYXJncyhpLCBrZXksIGFyZ3MsIGFyZ0FmdGVyRXF1YWxTaWduKSB7XG4gICAgICAgICAgICBsZXQgaWk7XG4gICAgICAgICAgICBsZXQgdG9FYXQgPSBjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5uYXJncyk7XG4gICAgICAgICAgICB0b0VhdCA9IHR5cGVvZiB0b0VhdCAhPT0gJ251bWJlcicgfHwgaXNOYU4odG9FYXQpID8gMSA6IHRvRWF0O1xuICAgICAgICAgICAgaWYgKHRvRWF0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChhcmdBZnRlckVxdWFsU2lnbikpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBFcnJvcihfXygnQXJndW1lbnQgdW5leHBlY3RlZCBmb3I6ICVzJywga2V5KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldEFyZyhrZXksIGRlZmF1bHRWYWx1ZShrZXkpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhdmFpbGFibGUgPSBpc1VuZGVmaW5lZChhcmdBZnRlckVxdWFsU2lnbikgPyAwIDogMTtcbiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uWyduYXJncy1lYXRzLW9wdGlvbnMnXSkge1xuICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCAtIChpICsgMSkgKyBhdmFpbGFibGUgPCB0b0VhdCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IEVycm9yKF9fKCdOb3QgZW5vdWdoIGFyZ3VtZW50cyBmb2xsb3dpbmc6ICVzJywga2V5KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF2YWlsYWJsZSA9IHRvRWF0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChpaSA9IGkgKyAxOyBpaSA8IGFyZ3MubGVuZ3RoOyBpaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXJnc1tpaV0ubWF0Y2goL14tW14wLTldLykgfHwgYXJnc1tpaV0ubWF0Y2gobmVnYXRpdmUpIHx8IGlzVW5rbm93bk9wdGlvbkFzQXJnKGFyZ3NbaWldKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSsrO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSA8IHRvRWF0KVxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IEVycm9yKF9fKCdOb3QgZW5vdWdoIGFyZ3VtZW50cyBmb2xsb3dpbmc6ICVzJywga2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY29uc3VtZWQgPSBNYXRoLm1pbihhdmFpbGFibGUsIHRvRWF0KTtcbiAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoYXJnQWZ0ZXJFcXVhbFNpZ24pICYmIGNvbnN1bWVkID4gMCkge1xuICAgICAgICAgICAgICAgIHNldEFyZyhrZXksIGFyZ0FmdGVyRXF1YWxTaWduKTtcbiAgICAgICAgICAgICAgICBjb25zdW1lZC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChpaSA9IGkgKyAxOyBpaSA8IChjb25zdW1lZCArIGkgKyAxKTsgaWkrKykge1xuICAgICAgICAgICAgICAgIHNldEFyZyhrZXksIGFyZ3NbaWldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoaSArIGNvbnN1bWVkKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBlYXRBcnJheShpLCBrZXksIGFyZ3MsIGFyZ0FmdGVyRXF1YWxTaWduKSB7XG4gICAgICAgICAgICBsZXQgYXJnc1RvU2V0ID0gW107XG4gICAgICAgICAgICBsZXQgbmV4dCA9IGFyZ0FmdGVyRXF1YWxTaWduIHx8IGFyZ3NbaSArIDFdO1xuICAgICAgICAgICAgY29uc3QgbmFyZ3NDb3VudCA9IGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLm5hcmdzKTtcbiAgICAgICAgICAgIGlmIChjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5ib29scykgJiYgISgvXih0cnVlfGZhbHNlKSQvLnRlc3QobmV4dCkpKSB7XG4gICAgICAgICAgICAgICAgYXJnc1RvU2V0LnB1c2godHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZChuZXh0KSB8fFxuICAgICAgICAgICAgICAgIChpc1VuZGVmaW5lZChhcmdBZnRlckVxdWFsU2lnbikgJiYgL14tLy50ZXN0KG5leHQpICYmICFuZWdhdGl2ZS50ZXN0KG5leHQpICYmICFpc1Vua25vd25PcHRpb25Bc0FyZyhuZXh0KSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdHNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZlZhbCA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NUb1NldCA9IEFycmF5LmlzQXJyYXkoZGVmVmFsKSA/IGRlZlZhbCA6IFtkZWZWYWxdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoYXJnQWZ0ZXJFcXVhbFNpZ24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NUb1NldC5wdXNoKHByb2Nlc3NWYWx1ZShrZXksIGFyZ0FmdGVyRXF1YWxTaWduLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGlpID0gaSArIDE7IGlpIDwgYXJncy5sZW5ndGg7IGlpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCghY29uZmlndXJhdGlvblsnZ3JlZWR5LWFycmF5cyddICYmIGFyZ3NUb1NldC5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG5hcmdzQ291bnQgJiYgdHlwZW9mIG5hcmdzQ291bnQgPT09ICdudW1iZXInICYmIGFyZ3NUb1NldC5sZW5ndGggPj0gbmFyZ3NDb3VudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGFyZ3NbaWldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoL14tLy50ZXN0KG5leHQpICYmICFuZWdhdGl2ZS50ZXN0KG5leHQpICYmICFpc1Vua25vd25PcHRpb25Bc0FyZyhuZXh0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBpID0gaWk7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NUb1NldC5wdXNoKHByb2Nlc3NWYWx1ZShrZXksIG5leHQsIGlucHV0SXNTdHJpbmcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5hcmdzQ291bnQgPT09ICdudW1iZXInICYmICgobmFyZ3NDb3VudCAmJiBhcmdzVG9TZXQubGVuZ3RoIDwgbmFyZ3NDb3VudCkgfHxcbiAgICAgICAgICAgICAgICAoaXNOYU4obmFyZ3NDb3VudCkgJiYgYXJnc1RvU2V0Lmxlbmd0aCA9PT0gMCkpKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBFcnJvcihfXygnTm90IGVub3VnaCBhcmd1bWVudHMgZm9sbG93aW5nOiAlcycsIGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0QXJnKGtleSwgYXJnc1RvU2V0KTtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNldEFyZyhrZXksIHZhbCwgc2hvdWxkU3RyaXBRdW90ZXMgPSBpbnB1dElzU3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAoLy0vLnRlc3Qoa2V5KSAmJiBjb25maWd1cmF0aW9uWydjYW1lbC1jYXNlLWV4cGFuc2lvbiddKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxpYXMgPSBrZXkuc3BsaXQoJy4nKS5tYXAoZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbWVsQ2FzZShwcm9wKTtcbiAgICAgICAgICAgICAgICB9KS5qb2luKCcuJyk7XG4gICAgICAgICAgICAgICAgYWRkTmV3QWxpYXMoa2V5LCBhbGlhcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3NWYWx1ZShrZXksIHZhbCwgc2hvdWxkU3RyaXBRdW90ZXMpO1xuICAgICAgICAgICAgY29uc3Qgc3BsaXRLZXkgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIHNldEtleShhcmd2LCBzcGxpdEtleSwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKGZsYWdzLmFsaWFzZXNba2V5XSkge1xuICAgICAgICAgICAgICAgIGZsYWdzLmFsaWFzZXNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleVByb3BlcnRpZXMgPSB4LnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgICAgIHNldEtleShhcmd2LCBrZXlQcm9wZXJ0aWVzLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3BsaXRLZXkubGVuZ3RoID4gMSAmJiBjb25maWd1cmF0aW9uWydkb3Qtbm90YXRpb24nXSkge1xuICAgICAgICAgICAgICAgIChmbGFncy5hbGlhc2VzW3NwbGl0S2V5WzBdXSB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQga2V5UHJvcGVydGllcyA9IHguc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IFtdLmNvbmNhdChzcGxpdEtleSk7XG4gICAgICAgICAgICAgICAgICAgIGEuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAga2V5UHJvcGVydGllcyA9IGtleVByb3BlcnRpZXMuY29uY2F0KGEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShmbGFncy5hbGlhc2VzW2tleV0gfHwgW10pLmluY2x1ZGVzKGtleVByb3BlcnRpZXMuam9pbignLicpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0S2V5KGFyZ3YsIGtleVByb3BlcnRpZXMsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLm5vcm1hbGl6ZSkgJiYgIWNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLmFycmF5cykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gW2tleV0uY29uY2F0KGZsYWdzLmFsaWFzZXNba2V5XSB8fCBbXSk7XG4gICAgICAgICAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFyZ3ZSZXR1cm4sIGtleSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBtaXhpbi5ub3JtYWxpemUodmFsdWUpIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGFkZE5ld0FsaWFzKGtleSwgYWxpYXMpIHtcbiAgICAgICAgICAgIGlmICghKGZsYWdzLmFsaWFzZXNba2V5XSAmJiBmbGFncy5hbGlhc2VzW2tleV0ubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIGZsYWdzLmFsaWFzZXNba2V5XSA9IFthbGlhc107XG4gICAgICAgICAgICAgICAgbmV3QWxpYXNlc1thbGlhc10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEoZmxhZ3MuYWxpYXNlc1thbGlhc10gJiYgZmxhZ3MuYWxpYXNlc1thbGlhc10ubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIGFkZE5ld0FsaWFzKGFsaWFzLCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NWYWx1ZShrZXksIHZhbCwgc2hvdWxkU3RyaXBRdW90ZXMpIHtcbiAgICAgICAgICAgIGlmIChzaG91bGRTdHJpcFF1b3Rlcykge1xuICAgICAgICAgICAgICAgIHZhbCA9IHN0cmlwUXVvdGVzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYm9vbHMpIHx8IGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLmNvdW50cykpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbCA9PT0gJ3RydWUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWwpXG4gICAgICAgICAgICAgICAgPyB2YWwubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiBtYXliZUNvZXJjZU51bWJlcihrZXksIHYpOyB9KVxuICAgICAgICAgICAgICAgIDogbWF5YmVDb2VyY2VOdW1iZXIoa2V5LCB2YWwpO1xuICAgICAgICAgICAgaWYgKGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLmNvdW50cykgJiYgKGlzVW5kZWZpbmVkKHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGluY3JlbWVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLm5vcm1hbGl6ZSkgJiYgY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYXJyYXlzKSkge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsLm1hcCgodmFsKSA9PiB7IHJldHVybiBtaXhpbi5ub3JtYWxpemUodmFsKTsgfSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1peGluLm5vcm1hbGl6ZSh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG1heWJlQ29lcmNlTnVtYmVyKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmICghY29uZmlndXJhdGlvblsncGFyc2UtcG9zaXRpb25hbC1udW1iZXJzJ10gJiYga2V5ID09PSAnXycpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgaWYgKCFjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5zdHJpbmdzKSAmJiAhY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYm9vbHMpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZENvZXJjZU51bWJlciA9IGxvb2tzTGlrZU51bWJlcih2YWx1ZSkgJiYgY29uZmlndXJhdGlvblsncGFyc2UtbnVtYmVycyddICYmIChOdW1iZXIuaXNTYWZlSW50ZWdlcihNYXRoLmZsb29yKHBhcnNlRmxvYXQoYCR7dmFsdWV9YCkpKSk7XG4gICAgICAgICAgICAgICAgaWYgKHNob3VsZENvZXJjZU51bWJlciB8fCAoIWlzVW5kZWZpbmVkKHZhbHVlKSAmJiBjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5udW1iZXJzKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXRDb25maWcoYXJndikge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnTG9va3VwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICAgIGFwcGx5RGVmYXVsdHNBbmRBbGlhc2VzKGNvbmZpZ0xvb2t1cCwgZmxhZ3MuYWxpYXNlcywgZGVmYXVsdHMpO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZmxhZ3MuY29uZmlncykuZm9yRWFjaChmdW5jdGlvbiAoY29uZmlnS2V5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGFyZ3ZbY29uZmlnS2V5XSB8fCBjb25maWdMb29rdXBbY29uZmlnS2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnUGF0aCkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZENvbmZpZ1BhdGggPSBtaXhpbi5yZXNvbHZlKG1peGluLmN3ZCgpLCBjb25maWdQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVDb25maWcgPSBmbGFncy5jb25maWdzW2NvbmZpZ0tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc29sdmVDb25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPSByZXNvbHZlQ29uZmlnKHJlc29sdmVkQ29uZmlnUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGNvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9IG1peGluLnJlcXVpcmUocmVzb2x2ZWRDb25maWdQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbmZpZ09iamVjdChjb25maWcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Lm5hbWUgPT09ICdQZXJtaXNzaW9uRGVuaWVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJndltjb25maWdLZXldKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gRXJyb3IoX18oJ0ludmFsaWQgSlNPTiBjb25maWcgZmlsZTogJXMnLCBjb25maWdQYXRoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXRDb25maWdPYmplY3QoY29uZmlnLCBwcmV2KSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW2tleV07XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbEtleSA9IHByZXYgPyBwcmV2ICsgJy4nICsga2V5IDoga2V5O1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBjb25maWd1cmF0aW9uWydkb3Qtbm90YXRpb24nXSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRDb25maWdPYmplY3QodmFsdWUsIGZ1bGxLZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkoYXJndiwgZnVsbEtleS5zcGxpdCgnLicpKSB8fCAoY2hlY2tBbGxBbGlhc2VzKGZ1bGxLZXksIGZsYWdzLmFycmF5cykgJiYgY29uZmlndXJhdGlvblsnY29tYmluZS1hcnJheXMnXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEFyZyhmdWxsS2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXRDb25maWdPYmplY3RzKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWdPYmplY3RzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGNvbmZpZ09iamVjdHMuZm9yRWFjaChmdW5jdGlvbiAoY29uZmlnT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldENvbmZpZ09iamVjdChjb25maWdPYmplY3QpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5RW52VmFycyhhcmd2LCBjb25maWdPbmx5KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVudlByZWZpeCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gdHlwZW9mIGVudlByZWZpeCA9PT0gJ3N0cmluZycgPyBlbnZQcmVmaXggOiAnJztcbiAgICAgICAgICAgIGNvbnN0IGVudiA9IG1peGluLmVudigpO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZW52KS5mb3JFYWNoKGZ1bmN0aW9uIChlbnZWYXIpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJlZml4ID09PSAnJyB8fCBlbnZWYXIubGFzdEluZGV4T2YocHJlZml4LCAwKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gZW52VmFyLnNwbGl0KCdfXycpLm1hcChmdW5jdGlvbiAoa2V5LCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IGtleS5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FtZWxDYXNlKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKChjb25maWdPbmx5ICYmIGZsYWdzLmNvbmZpZ3Nba2V5cy5qb2luKCcuJyldKSB8fCAhY29uZmlnT25seSkgJiYgIWhhc0tleShhcmd2LCBrZXlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJnKGtleXMuam9pbignLicpLCBlbnZbZW52VmFyXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhcHBseUNvZXJjaW9ucyhhcmd2KSB7XG4gICAgICAgICAgICBsZXQgY29lcmNlO1xuICAgICAgICAgICAgY29uc3QgYXBwbGllZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGFyZ3YpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIGlmICghYXBwbGllZC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBjb2VyY2UgPSBjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5jb2VyY2lvbnMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvZXJjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG1heWJlQ29lcmNlTnVtYmVyKGtleSwgY29lcmNlKGFyZ3Zba2V5XSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbXS5jb25jYXQoZmxhZ3MuYWxpYXNlc1trZXldIHx8IFtdLCBrZXkpKS5mb3JFYWNoKGFsaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpZWQuYWRkKGFsaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3ZbYWxpXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2V0UGxhY2Vob2xkZXJLZXlzKGFyZ3YpIHtcbiAgICAgICAgICAgIGZsYWdzLmtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKH5rZXkuaW5kZXhPZignLicpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmd2W2tleV0gPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICBhcmd2W2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBhcmd2O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5RGVmYXVsdHNBbmRBbGlhc2VzKG9iaiwgYWxpYXNlcywgZGVmYXVsdHMsIGNhbkxvZyA9IGZhbHNlKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkZWZhdWx0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkob2JqLCBrZXkuc3BsaXQoJy4nKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0S2V5KG9iaiwga2V5LnNwbGl0KCcuJyksIGRlZmF1bHRzW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FuTG9nKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdGVkW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAoYWxpYXNlc1trZXldIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzS2V5KG9iaiwgeC5zcGxpdCgnLicpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRLZXkob2JqLCB4LnNwbGl0KCcuJyksIGRlZmF1bHRzW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBoYXNLZXkob2JqLCBrZXlzKSB7XG4gICAgICAgICAgICBsZXQgbyA9IG9iajtcbiAgICAgICAgICAgIGlmICghY29uZmlndXJhdGlvblsnZG90LW5vdGF0aW9uJ10pXG4gICAgICAgICAgICAgICAga2V5cyA9IFtrZXlzLmpvaW4oJy4nKV07XG4gICAgICAgICAgICBrZXlzLnNsaWNlKDAsIC0xKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICBvID0gKG9ba2V5XSB8fCB7fSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbyAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBrZXkgaW4gbztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXRLZXkob2JqLCBrZXlzLCB2YWx1ZSkge1xuICAgICAgICAgICAgbGV0IG8gPSBvYmo7XG4gICAgICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb25bJ2RvdC1ub3RhdGlvbiddKVxuICAgICAgICAgICAgICAgIGtleXMgPSBba2V5cy5qb2luKCcuJyldO1xuICAgICAgICAgICAga2V5cy5zbGljZSgwLCAtMSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAga2V5ID0gc2FuaXRpemVLZXkoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG8gPT09ICdvYmplY3QnICYmIG9ba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ba2V5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9ba2V5XSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShvW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9ba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ba2V5XS5wdXNoKHt9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ba2V5XSA9IFtvW2tleV0sIHt9XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvID0gb1trZXldW29ba2V5XS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG8gPSBvW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBzYW5pdGl6ZUtleShrZXlzW2tleXMubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgY29uc3QgaXNUeXBlQXJyYXkgPSBjaGVja0FsbEFsaWFzZXMoa2V5cy5qb2luKCcuJyksIGZsYWdzLmFycmF5cyk7XG4gICAgICAgICAgICBjb25zdCBpc1ZhbHVlQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICAgICAgICAgIGxldCBkdXBsaWNhdGUgPSBjb25maWd1cmF0aW9uWydkdXBsaWNhdGUtYXJndW1lbnRzLWFycmF5J107XG4gICAgICAgICAgICBpZiAoIWR1cGxpY2F0ZSAmJiBjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5uYXJncykpIHtcbiAgICAgICAgICAgICAgICBkdXBsaWNhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICgoIWlzVW5kZWZpbmVkKG9ba2V5XSkgJiYgZmxhZ3MubmFyZ3Nba2V5XSA9PT0gMSkgfHwgKEFycmF5LmlzQXJyYXkob1trZXldKSAmJiBvW2tleV0ubGVuZ3RoID09PSBmbGFncy5uYXJnc1trZXldKSkge1xuICAgICAgICAgICAgICAgICAgICBvW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBpbmNyZW1lbnQoKSkge1xuICAgICAgICAgICAgICAgIG9ba2V5XSA9IGluY3JlbWVudChvW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgaWYgKGR1cGxpY2F0ZSAmJiBpc1R5cGVBcnJheSAmJiBpc1ZhbHVlQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgb1trZXldID0gY29uZmlndXJhdGlvblsnZmxhdHRlbi1kdXBsaWNhdGUtYXJyYXlzJ10gPyBvW2tleV0uY29uY2F0KHZhbHVlKSA6IChBcnJheS5pc0FycmF5KG9ba2V5XVswXSkgPyBvW2tleV0gOiBbb1trZXldXSkuY29uY2F0KFt2YWx1ZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghZHVwbGljYXRlICYmIEJvb2xlYW4oaXNUeXBlQXJyYXkpID09PSBCb29sZWFuKGlzVmFsdWVBcnJheSkpIHtcbiAgICAgICAgICAgICAgICAgICAgb1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvW2tleV0gPSBvW2tleV0uY29uY2F0KFt2YWx1ZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9ba2V5XSA9PT0gdW5kZWZpbmVkICYmIGlzVHlwZUFycmF5KSB7XG4gICAgICAgICAgICAgICAgb1trZXldID0gaXNWYWx1ZUFycmF5ID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZHVwbGljYXRlICYmICEob1trZXldID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICBjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5jb3VudHMpIHx8XG4gICAgICAgICAgICAgICAgY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYm9vbHMpKSkge1xuICAgICAgICAgICAgICAgIG9ba2V5XSA9IFtvW2tleV0sIHZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG9ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGV4dGVuZEFsaWFzZXMoLi4uYXJncykge1xuICAgICAgICAgICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvYmogfHwge30pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MuYWxpYXNlc1trZXldKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBmbGFncy5hbGlhc2VzW2tleV0gPSBbXS5jb25jYXQoYWxpYXNlc1trZXldIHx8IFtdKTtcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYWxpYXNlc1trZXldLmNvbmNhdChrZXkpLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvLS8udGVzdCh4KSAmJiBjb25maWd1cmF0aW9uWydjYW1lbC1jYXNlLWV4cGFuc2lvbiddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IGNhbWVsQ2FzZSh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPT0ga2V5ICYmIGZsYWdzLmFsaWFzZXNba2V5XS5pbmRleE9mKGMpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncy5hbGlhc2VzW2tleV0ucHVzaChjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QWxpYXNlc1tjXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYWxpYXNlc1trZXldLmNvbmNhdChrZXkpLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lmxlbmd0aCA+IDEgJiYgL1tBLVpdLy50ZXN0KHgpICYmIGNvbmZpZ3VyYXRpb25bJ2NhbWVsLWNhc2UtZXhwYW5zaW9uJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjID0gZGVjYW1lbGl6ZSh4LCAnLScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjICE9PSBrZXkgJiYgZmxhZ3MuYWxpYXNlc1trZXldLmluZGV4T2YoYykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLmFsaWFzZXNba2V5XS5wdXNoKGMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdBbGlhc2VzW2NdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBmbGFncy5hbGlhc2VzW2tleV0uZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYWxpYXNlc1t4XSA9IFtrZXldLmNvbmNhdChmbGFncy5hbGlhc2VzW2tleV0uZmlsdGVyKGZ1bmN0aW9uICh5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHggIT09IHk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZykge1xuICAgICAgICAgICAgY29uc3QgdG9DaGVjayA9IFtdLmNvbmNhdChmbGFncy5hbGlhc2VzW2tleV0gfHwgW10sIGtleSk7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmxhZyk7XG4gICAgICAgICAgICBjb25zdCBzZXRBbGlhcyA9IHRvQ2hlY2suZmluZChrZXkgPT4ga2V5cy5pbmNsdWRlcyhrZXkpKTtcbiAgICAgICAgICAgIHJldHVybiBzZXRBbGlhcyA/IGZsYWdbc2V0QWxpYXNdIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaGFzQW55RmxhZyhrZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZsYWdzS2V5cyA9IE9iamVjdC5rZXlzKGZsYWdzKTtcbiAgICAgICAgICAgIGNvbnN0IHRvQ2hlY2sgPSBbXS5jb25jYXQoZmxhZ3NLZXlzLm1hcChrID0+IGZsYWdzW2tdKSk7XG4gICAgICAgICAgICByZXR1cm4gdG9DaGVjay5zb21lKGZ1bmN0aW9uIChmbGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZmxhZykgPyBmbGFnLmluY2x1ZGVzKGtleSkgOiBmbGFnW2tleV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBoYXNGbGFnc01hdGNoaW5nKGFyZywgLi4ucGF0dGVybnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvQ2hlY2sgPSBbXS5jb25jYXQoLi4ucGF0dGVybnMpO1xuICAgICAgICAgICAgcmV0dXJuIHRvQ2hlY2suc29tZShmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gYXJnLm1hdGNoKHBhdHRlcm4pO1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaCAmJiBoYXNBbnlGbGFnKG1hdGNoWzFdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGhhc0FsbFNob3J0RmxhZ3MoYXJnKSB7XG4gICAgICAgICAgICBpZiAoYXJnLm1hdGNoKG5lZ2F0aXZlKSB8fCAhYXJnLm1hdGNoKC9eLVteLV0rLykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaGFzQWxsRmxhZ3MgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IG5leHQ7XG4gICAgICAgICAgICBjb25zdCBsZXR0ZXJzID0gYXJnLnNsaWNlKDEpLnNwbGl0KCcnKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGV0dGVycy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIG5leHQgPSBhcmcuc2xpY2UoaiArIDIpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzQW55RmxhZyhsZXR0ZXJzW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICBoYXNBbGxGbGFncyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKChsZXR0ZXJzW2ogKyAxXSAmJiBsZXR0ZXJzW2ogKyAxXSA9PT0gJz0nKSB8fFxuICAgICAgICAgICAgICAgICAgICBuZXh0ID09PSAnLScgfHxcbiAgICAgICAgICAgICAgICAgICAgKC9bQS1aYS16XS8udGVzdChsZXR0ZXJzW2pdKSAmJiAvXi0/XFxkKyhcXC5cXGQqKT8oZS0/XFxkKyk/JC8udGVzdChuZXh0KSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGxldHRlcnNbaiArIDFdICYmIGxldHRlcnNbaiArIDFdLm1hdGNoKC9cXFcvKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGhhc0FsbEZsYWdzO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzVW5rbm93bk9wdGlvbkFzQXJnKGFyZykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb25bJ3Vua25vd24tb3B0aW9ucy1hcy1hcmdzJ10gJiYgaXNVbmtub3duT3B0aW9uKGFyZyk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaXNVbmtub3duT3B0aW9uKGFyZykge1xuICAgICAgICAgICAgYXJnID0gYXJnLnJlcGxhY2UoL14tezMsfS8sICctLScpO1xuICAgICAgICAgICAgaWYgKGFyZy5tYXRjaChuZWdhdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzQWxsU2hvcnRGbGFncyhhcmcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmxhZ1dpdGhFcXVhbHMgPSAvXi0rKFtePV0rPyk9W1xcc1xcU10qJC87XG4gICAgICAgICAgICBjb25zdCBub3JtYWxGbGFnID0gL14tKyhbXj1dKz8pJC87XG4gICAgICAgICAgICBjb25zdCBmbGFnRW5kaW5nSW5IeXBoZW4gPSAvXi0rKFtePV0rPyktJC87XG4gICAgICAgICAgICBjb25zdCBmbGFnRW5kaW5nSW5EaWdpdHMgPSAvXi0rKFtePV0rP1xcZCspJC87XG4gICAgICAgICAgICBjb25zdCBmbGFnRW5kaW5nSW5Ob25Xb3JkQ2hhcmFjdGVycyA9IC9eLSsoW149XSs/KVxcVysuKiQvO1xuICAgICAgICAgICAgcmV0dXJuICFoYXNGbGFnc01hdGNoaW5nKGFyZywgZmxhZ1dpdGhFcXVhbHMsIG5lZ2F0ZWRCb29sZWFuLCBub3JtYWxGbGFnLCBmbGFnRW5kaW5nSW5IeXBoZW4sIGZsYWdFbmRpbmdJbkRpZ2l0cywgZmxhZ0VuZGluZ0luTm9uV29yZENoYXJhY3RlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRlZmF1bHRWYWx1ZShrZXkpIHtcbiAgICAgICAgICAgIGlmICghY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3MuYm9vbHMpICYmXG4gICAgICAgICAgICAgICAgIWNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLmNvdW50cykgJiZcbiAgICAgICAgICAgICAgICBgJHtrZXl9YCBpbiBkZWZhdWx0cykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0c1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRGb3JUeXBlKGd1ZXNzVHlwZShrZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkZWZhdWx0Rm9yVHlwZSh0eXBlKSB7XG4gICAgICAgICAgICBjb25zdCBkZWYgPSB7XG4gICAgICAgICAgICAgICAgW0RlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5LkJPT0xFQU5dOiB0cnVlLFxuICAgICAgICAgICAgICAgIFtEZWZhdWx0VmFsdWVzRm9yVHlwZUtleS5TVFJJTkddOiAnJyxcbiAgICAgICAgICAgICAgICBbRGVmYXVsdFZhbHVlc0ZvclR5cGVLZXkuTlVNQkVSXTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIFtEZWZhdWx0VmFsdWVzRm9yVHlwZUtleS5BUlJBWV06IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGRlZlt0eXBlXTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBndWVzc1R5cGUoa2V5KSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IERlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5LkJPT0xFQU47XG4gICAgICAgICAgICBpZiAoY2hlY2tBbGxBbGlhc2VzKGtleSwgZmxhZ3Muc3RyaW5ncykpXG4gICAgICAgICAgICAgICAgdHlwZSA9IERlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5LlNUUklORztcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLm51bWJlcnMpKVxuICAgICAgICAgICAgICAgIHR5cGUgPSBEZWZhdWx0VmFsdWVzRm9yVHlwZUtleS5OVU1CRVI7XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5ib29scykpXG4gICAgICAgICAgICAgICAgdHlwZSA9IERlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5LkJPT0xFQU47XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5hcnJheXMpKVxuICAgICAgICAgICAgICAgIHR5cGUgPSBEZWZhdWx0VmFsdWVzRm9yVHlwZUtleS5BUlJBWTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG51bSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bSA9PT0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNoZWNrQ29uZmlndXJhdGlvbigpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZsYWdzLmNvdW50cykuZmluZChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGVja0FsbEFsaWFzZXMoa2V5LCBmbGFncy5hcnJheXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gRXJyb3IoX18oJ0ludmFsaWQgY29uZmlndXJhdGlvbjogJXMsIG9wdHMuY291bnQgZXhjbHVkZXMgb3B0cy5hcnJheS4nLCBrZXkpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrQWxsQWxpYXNlcyhrZXksIGZsYWdzLm5hcmdzKSkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IEVycm9yKF9fKCdJbnZhbGlkIGNvbmZpZ3VyYXRpb246ICVzLCBvcHRzLmNvdW50IGV4Y2x1ZGVzIG9wdHMubmFyZy4nLCBrZXkpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbGlhc2VzOiBPYmplY3QuYXNzaWduKHt9LCBmbGFncy5hbGlhc2VzKSxcbiAgICAgICAgICAgIGFyZ3Y6IE9iamVjdC5hc3NpZ24oYXJndlJldHVybiwgYXJndiksXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiBjb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgZGVmYXVsdGVkOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0ZWQpLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgbmV3QWxpYXNlczogT2JqZWN0LmFzc2lnbih7fSwgbmV3QWxpYXNlcylcbiAgICAgICAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb21iaW5lQWxpYXNlcyhhbGlhc2VzKSB7XG4gICAgY29uc3QgYWxpYXNBcnJheXMgPSBbXTtcbiAgICBjb25zdCBjb21iaW5lZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgbGV0IGNoYW5nZSA9IHRydWU7XG4gICAgT2JqZWN0LmtleXMoYWxpYXNlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGFsaWFzQXJyYXlzLnB1c2goW10uY29uY2F0KGFsaWFzZXNba2V5XSwga2V5KSk7XG4gICAgfSk7XG4gICAgd2hpbGUgKGNoYW5nZSkge1xuICAgICAgICBjaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGlhc0FycmF5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaWkgPSBpICsgMTsgaWkgPCBhbGlhc0FycmF5cy5sZW5ndGg7IGlpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnRlcnNlY3QgPSBhbGlhc0FycmF5c1tpXS5maWx0ZXIoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsaWFzQXJyYXlzW2lpXS5pbmRleE9mKHYpICE9PSAtMTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc0FycmF5c1tpXSA9IGFsaWFzQXJyYXlzW2ldLmNvbmNhdChhbGlhc0FycmF5c1tpaV0pO1xuICAgICAgICAgICAgICAgICAgICBhbGlhc0FycmF5cy5zcGxpY2UoaWksIDEpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWxpYXNBcnJheXMuZm9yRWFjaChmdW5jdGlvbiAoYWxpYXNBcnJheSkge1xuICAgICAgICBhbGlhc0FycmF5ID0gYWxpYXNBcnJheS5maWx0ZXIoZnVuY3Rpb24gKHYsIGksIHNlbGYpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodikgPT09IGk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBsYXN0QWxpYXMgPSBhbGlhc0FycmF5LnBvcCgpO1xuICAgICAgICBpZiAobGFzdEFsaWFzICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGxhc3RBbGlhcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkW2xhc3RBbGlhc10gPSBhbGlhc0FycmF5O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbWJpbmVkO1xufVxuZnVuY3Rpb24gaW5jcmVtZW50KG9yaWcpIHtcbiAgICByZXR1cm4gb3JpZyAhPT0gdW5kZWZpbmVkID8gb3JpZyArIDEgOiAxO1xufVxuZnVuY3Rpb24gc2FuaXRpemVLZXkoa2V5KSB7XG4gICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycpXG4gICAgICAgIHJldHVybiAnX19fcHJvdG9fX18nO1xuICAgIHJldHVybiBrZXk7XG59XG5mdW5jdGlvbiBzdHJpcFF1b3Rlcyh2YWwpIHtcbiAgICByZXR1cm4gKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICh2YWxbMF0gPT09IFwiJ1wiIHx8IHZhbFswXSA9PT0gJ1wiJykgJiZcbiAgICAgICAgdmFsW3ZhbC5sZW5ndGggLSAxXSA9PT0gdmFsWzBdKVxuICAgICAgICA/IHZhbC5zdWJzdHJpbmcoMSwgdmFsLmxlbmd0aCAtIDEpXG4gICAgICAgIDogdmFsO1xufVxuXG52YXIgX2EsIF9iLCBfYztcbmNvbnN0IG1pbk5vZGVWZXJzaW9uID0gKHByb2Nlc3MgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuWUFSR1NfTUlOX05PREVfVkVSU0lPTilcbiAgICA/IE51bWJlcihwcm9jZXNzLmVudi5ZQVJHU19NSU5fTk9ERV9WRVJTSU9OKVxuICAgIDogMTI7XG5jb25zdCBub2RlVmVyc2lvbiA9IChfYiA9IChfYSA9IHByb2Nlc3MgPT09IG51bGwgfHwgcHJvY2VzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJvY2Vzcy52ZXJzaW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IChfYyA9IHByb2Nlc3MgPT09IG51bGwgfHwgcHJvY2VzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJvY2Vzcy52ZXJzaW9uKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc2xpY2UoMSk7XG5pZiAobm9kZVZlcnNpb24pIHtcbiAgICBjb25zdCBtYWpvciA9IE51bWJlcihub2RlVmVyc2lvbi5tYXRjaCgvXihbXi5dKykvKVsxXSk7XG4gICAgaWYgKG1ham9yIDwgbWluTm9kZVZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYHlhcmdzIHBhcnNlciBzdXBwb3J0cyBhIG1pbmltdW0gTm9kZS5qcyB2ZXJzaW9uIG9mICR7bWluTm9kZVZlcnNpb259LiBSZWFkIG91ciB2ZXJzaW9uIHN1cHBvcnQgcG9saWN5OiBodHRwczovL2dpdGh1Yi5jb20veWFyZ3MveWFyZ3MtcGFyc2VyI3N1cHBvcnRlZC1ub2RlanMtdmVyc2lvbnNgKTtcbiAgICB9XG59XG5jb25zdCBlbnYgPSBwcm9jZXNzID8gcHJvY2Vzcy5lbnYgOiB7fTtcbmNvbnN0IHBhcnNlciA9IG5ldyBZYXJnc1BhcnNlcih7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCxcbiAgICBlbnY6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGVudjtcbiAgICB9LFxuICAgIGZvcm1hdDogdXRpbC5mb3JtYXQsXG4gICAgbm9ybWFsaXplOiBwYXRoLm5vcm1hbGl6ZSxcbiAgICByZXNvbHZlOiBwYXRoLnJlc29sdmUsXG4gICAgcmVxdWlyZTogKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1aXJlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGF0aC5tYXRjaCgvXFwuanNvbiQvKSkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGgsICd1dGY4JykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ29ubHkgLmpzb24gY29uZmlnIGZpbGVzIGFyZSBzdXBwb3J0ZWQgaW4gRVNNJyk7XG4gICAgICAgIH1cbiAgICB9XG59KTtcbmNvbnN0IHlhcmdzUGFyc2VyID0gZnVuY3Rpb24gUGFyc2VyKGFyZ3MsIG9wdHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIucGFyc2UoYXJncy5zbGljZSgpLCBvcHRzKTtcbiAgICByZXR1cm4gcmVzdWx0LmFyZ3Y7XG59O1xueWFyZ3NQYXJzZXIuZGV0YWlsZWQgPSBmdW5jdGlvbiAoYXJncywgb3B0cykge1xuICAgIHJldHVybiBwYXJzZXIucGFyc2UoYXJncy5zbGljZSgpLCBvcHRzKTtcbn07XG55YXJnc1BhcnNlci5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG55YXJnc1BhcnNlci5kZWNhbWVsaXplID0gZGVjYW1lbGl6ZTtcbnlhcmdzUGFyc2VyLmxvb2tzTGlrZU51bWJlciA9IGxvb2tzTGlrZU51bWJlcjtcblxubW9kdWxlLmV4cG9ydHMgPSB5YXJnc1BhcnNlcjtcbiIsICIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gKHtvbmx5Rmlyc3QgPSBmYWxzZX0gPSB7fSkgPT4ge1xuXHRjb25zdCBwYXR0ZXJuID0gW1xuXHRcdCdbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpJyxcblx0XHQnKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSknXG5cdF0uam9pbignfCcpO1xuXG5cdHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4sIG9ubHlGaXJzdCA/IHVuZGVmaW5lZCA6ICdnJyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IGFuc2lSZWdleCA9IHJlcXVpcmUoJ2Fuc2ktcmVnZXgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmcgPT4gdHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycgPyBzdHJpbmcucmVwbGFjZShhbnNpUmVnZXgoKSwgJycpIDogc3RyaW5nO1xuIiwgIi8qIGVzbGludC1kaXNhYmxlIHlvZGEgKi9cbid1c2Ugc3RyaWN0JztcblxuY29uc3QgaXNGdWxsd2lkdGhDb2RlUG9pbnQgPSBjb2RlUG9pbnQgPT4ge1xuXHRpZiAoTnVtYmVyLmlzTmFOKGNvZGVQb2ludCkpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBDb2RlIHBvaW50cyBhcmUgZGVyaXZlZCBmcm9tOlxuXHQvLyBodHRwOi8vd3d3LnVuaXgub3JnL1B1YmxpYy9VTklEQVRBL0Vhc3RBc2lhbldpZHRoLnR4dFxuXHRpZiAoXG5cdFx0Y29kZVBvaW50ID49IDB4MTEwMCAmJiAoXG5cdFx0XHRjb2RlUG9pbnQgPD0gMHgxMTVGIHx8IC8vIEhhbmd1bCBKYW1vXG5cdFx0XHRjb2RlUG9pbnQgPT09IDB4MjMyOSB8fCAvLyBMRUZULVBPSU5USU5HIEFOR0xFIEJSQUNLRVRcblx0XHRcdGNvZGVQb2ludCA9PT0gMHgyMzJBIHx8IC8vIFJJR0hULVBPSU5USU5HIEFOR0xFIEJSQUNLRVRcblx0XHRcdC8vIENKSyBSYWRpY2FscyBTdXBwbGVtZW50IC4uIEVuY2xvc2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHNcblx0XHRcdCgweDJFODAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyNDcgJiYgY29kZVBvaW50ICE9PSAweDMwM0YpIHx8XG5cdFx0XHQvLyBFbmNsb3NlZCBDSksgTGV0dGVycyBhbmQgTW9udGhzIC4uIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEFcblx0XHRcdCgweDMyNTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDREQkYpIHx8XG5cdFx0XHQvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIC4uIFlpIFJhZGljYWxzXG5cdFx0XHQoMHg0RTAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhBNEM2KSB8fFxuXHRcdFx0Ly8gSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQVxuXHRcdFx0KDB4QTk2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4QTk3QykgfHxcblx0XHRcdC8vIEhhbmd1bCBTeWxsYWJsZXNcblx0XHRcdCgweEFDMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3QTMpIHx8XG5cdFx0XHQvLyBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzXG5cdFx0XHQoMHhGOTAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGQUZGKSB8fFxuXHRcdFx0Ly8gVmVydGljYWwgRm9ybXNcblx0XHRcdCgweEZFMTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFMTkpIHx8XG5cdFx0XHQvLyBDSksgQ29tcGF0aWJpbGl0eSBGb3JtcyAuLiBTbWFsbCBGb3JtIFZhcmlhbnRzXG5cdFx0XHQoMHhGRTMwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRTZCKSB8fFxuXHRcdFx0Ly8gSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXNcblx0XHRcdCgweEZGMDEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZGNjApIHx8XG5cdFx0XHQoMHhGRkUwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkU2KSB8fFxuXHRcdFx0Ly8gS2FuYSBTdXBwbGVtZW50XG5cdFx0XHQoMHgxQjAwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUIwMDEpIHx8XG5cdFx0XHQvLyBFbmNsb3NlZCBJZGVvZ3JhcGhpYyBTdXBwbGVtZW50XG5cdFx0XHQoMHgxRjIwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUYyNTEpIHx8XG5cdFx0XHQvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBCIC4uIFRlcnRpYXJ5IElkZW9ncmFwaGljIFBsYW5lXG5cdFx0XHQoMHgyMDAwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4M0ZGRkQpXG5cdFx0KVxuXHQpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHJldHVybiBmYWxzZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdWxsd2lkdGhDb2RlUG9pbnQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gaXNGdWxsd2lkdGhDb2RlUG9pbnQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICAvLyBodHRwczovL210aHMuYmUvZW1vamlcbiAgcmV0dXJuIC9cXHVEODNDXFx1REZGNFxcdURCNDBcXHVEQzY3XFx1REI0MFxcdURDNjIoPzpcXHVEQjQwXFx1REM2NVxcdURCNDBcXHVEQzZFXFx1REI0MFxcdURDNjd8XFx1REI0MFxcdURDNzNcXHVEQjQwXFx1REM2M1xcdURCNDBcXHVEQzc0fFxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3MylcXHVEQjQwXFx1REM3RnxcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1xcdURGRkJ8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkVcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRF0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRFxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkNdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRFxcdURDNjh8KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzY2XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVEQzY3XFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKSl8XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGfFxcdUQ4M0RbXFx1REM2NlxcdURDNjddfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSlcXHVGRTBGfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGQ1xcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OSlcXHVEODNDXFx1REZGQnxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRlxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZDXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkRcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ10pfFxcdUQ4M0RcXHVEQzY5KD86XFx1RDgzQ1xcdURGRkVcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkNcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkJcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRFxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pfFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkZcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkRcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRVxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRF0pfFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY5XFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXwoPzpcXHVEODNEXFx1REM0MVxcdUZFMEZcXHUyMDBEXFx1RDgzRFxcdURERTh8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfCg/Oig/OlxcdTI2Rjl8XFx1RDgzQ1tcXHVERkNCXFx1REZDQ118XFx1RDgzRFxcdURENzUpXFx1RkUwRnxcXHVEODNEXFx1REM2RnxcXHVEODNFW1xcdUREM0NcXHVERERFXFx1RERERl0pXFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml18KD86XFx1MjZGOXxcXHVEODNDW1xcdURGQ0JcXHVERkNDXXxcXHVEODNEXFx1REQ3NSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pXFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml18KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENi1cXHVEREREXSkoPzooPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pXFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml18XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml0pfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjApXFx1RkUwRnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0NcXHVEREZEXFx1RDgzQ1xcdURERjB8XFx1RDgzQ1xcdURERjRcXHVEODNDXFx1RERGMnxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERGOSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVEXFx1RERFRi1cXHVEREY0XFx1RERGN1xcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkZdKXxcXHVEODNDXFx1RERFQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERURcXHVEREY3LVxcdURERkFdKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0NcXHVEREYyKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOC1cXHVEREVEXFx1RERGMC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERTYoPzpcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERGRSg/OlxcdUQ4M0NbXFx1RERFQVxcdURERjldKXxcXHVEODNDXFx1RERFQyg/OlxcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUVcXHVEREYxLVxcdURERjNcXHVEREY1LVxcdURERkFcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERUIoPzpcXHVEODNDW1xcdURERUUtXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGN10pfFxcdUQ4M0NcXHVEREY1KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFQS1cXHVEREVEXFx1RERGMC1cXHVEREYzXFx1RERGNy1cXHVEREY5XFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERGQig/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERUVcXHVEREYzXFx1RERGQV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkEoPzpcXHVEODNDW1xcdURERTZcXHVEREVDXFx1RERGMlxcdURERjNcXHVEREY4XFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRSg/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVBXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XSl8XFx1RDgzQ1xcdURERUYoPzpcXHVEODNDW1xcdURERUFcXHVEREYyXFx1RERGNFxcdURERjVdKXwoPzpcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ2LVxcdURERERdKSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8KD86XFx1MjZGOXxcXHVEODNDW1xcdURGQ0JcXHVERkNDXXxcXHVEODNEXFx1REQ3NSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQS1cXHUyNzBEXXxcXHVEODNDW1xcdURGODVcXHVERkMyXFx1REZDN118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjZcXHVEQzY3XFx1REM2Qi1cXHVEQzZEXFx1REM3MFxcdURDNzJcXHVEQzc0LVxcdURDNzZcXHVEQzc4XFx1REM3Q1xcdURDODNcXHVEQzg1XFx1RENBQVxcdURENzRcXHVERDdBXFx1REQ5MFxcdUREOTVcXHVERDk2XFx1REU0Q1xcdURFNEZcXHVERUMwXFx1REVDQ118XFx1RDgzRVtcXHVERDBGXFx1REQxOC1cXHVERDFDXFx1REQxRVxcdUREMUZcXHVERDMwLVxcdUREMzZcXHVEREI1XFx1RERCNlxcdUREQkJcXHVEREQyLVxcdURERDVdKSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8KD86W1xcdTIzMUFcXHUyMzFCXFx1MjNFOS1cXHUyM0VDXFx1MjNGMFxcdTIzRjNcXHUyNUZEXFx1MjVGRVxcdTI2MTRcXHUyNjE1XFx1MjY0OC1cXHUyNjUzXFx1MjY3RlxcdTI2OTNcXHUyNkExXFx1MjZBQVxcdTI2QUJcXHUyNkJEXFx1MjZCRVxcdTI2QzRcXHUyNkM1XFx1MjZDRVxcdTI2RDRcXHUyNkVBXFx1MjZGMlxcdTI2RjNcXHUyNkY1XFx1MjZGQVxcdTI2RkRcXHUyNzA1XFx1MjcwQVxcdTI3MEJcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURERTYtXFx1RERGRlxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjkzXFx1REZBMC1cXHVERkNBXFx1REZDRi1cXHVERkQzXFx1REZFMC1cXHVERkYwXFx1REZGNFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDM0VcXHVEQzQwXFx1REM0Mi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1REQ3QVxcdUREOTVcXHVERDk2XFx1RERBNFxcdURERkItXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0NcXHVERUQwLVxcdURFRDJcXHVERUQ1XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkFcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRC1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDcxXFx1REQ3My1cXHVERDc2XFx1REQ3QS1cXHVEREEyXFx1RERBNS1cXHVEREFBXFx1RERBRS1cXHVERENBXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTczXFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTgyXFx1REU5MC1cXHVERTk1XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QjBcXHUyNkIxXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2QzhcXHUyNkNFXFx1MjZDRlxcdTI2RDFcXHUyNkQzXFx1MjZENFxcdTI2RTlcXHUyNkVBXFx1MjZGMC1cXHUyNkY1XFx1MjZGNy1cXHUyNkZBXFx1MjZGRFxcdTI3MDJcXHUyNzA1XFx1MjcwOC1cXHUyNzBEXFx1MjcwRlxcdTI3MTJcXHUyNzE0XFx1MjcxNlxcdTI3MURcXHUyNzIxXFx1MjcyOFxcdTI3MzNcXHUyNzM0XFx1Mjc0NFxcdTI3NDdcXHUyNzRDXFx1Mjc0RVxcdTI3NTMtXFx1Mjc1NVxcdTI3NTdcXHUyNzYzXFx1Mjc2NFxcdTI3OTUtXFx1Mjc5N1xcdTI3QTFcXHUyN0IwXFx1MjdCRlxcdTI5MzRcXHUyOTM1XFx1MkIwNS1cXHUyQjA3XFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NVxcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REMwNFxcdURDQ0ZcXHVERDcwXFx1REQ3MVxcdUREN0VcXHVERDdGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURERTYtXFx1RERGRlxcdURFMDFcXHVERTAyXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMVxcdURGMjQtXFx1REY5M1xcdURGOTZcXHVERjk3XFx1REY5OS1cXHVERjlCXFx1REY5RS1cXHVERkYwXFx1REZGMy1cXHVERkY1XFx1REZGNy1cXHVERkZGXXxcXHVEODNEW1xcdURDMDAtXFx1RENGRFxcdURDRkYtXFx1REQzRFxcdURENDktXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdURENkZcXHVERDcwXFx1REQ3My1cXHVERDdBXFx1REQ4N1xcdUREOEEtXFx1REQ4RFxcdUREOTBcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQS1cXHVERTRGXFx1REU4MC1cXHVERUM1XFx1REVDQi1cXHVERUQyXFx1REVENVxcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkFcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRC1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDcxXFx1REQ3My1cXHVERDc2XFx1REQ3QS1cXHVEREEyXFx1RERBNS1cXHVEREFBXFx1RERBRS1cXHVERENBXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTczXFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTgyXFx1REU5MC1cXHVERTk1XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwRlxcdUREMTgtXFx1REQxRlxcdUREMjZcXHVERDMwLVxcdUREMzlcXHVERDNDLVxcdUREM0VcXHVEREI1XFx1RERCNlxcdUREQjhcXHVEREI5XFx1RERCQlxcdUREQ0QtXFx1RERDRlxcdURERDEtXFx1RERERF0pL2c7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IHN0cmlwQW5zaSA9IHJlcXVpcmUoJ3N0cmlwLWFuc2knKTtcbmNvbnN0IGlzRnVsbHdpZHRoQ29kZVBvaW50ID0gcmVxdWlyZSgnaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQnKTtcbmNvbnN0IGVtb2ppUmVnZXggPSByZXF1aXJlKCdlbW9qaS1yZWdleCcpO1xuXG5jb25zdCBzdHJpbmdXaWR0aCA9IHN0cmluZyA9PiB7XG5cdGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJyB8fCBzdHJpbmcubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRzdHJpbmcgPSBzdHJpcEFuc2koc3RyaW5nKTtcblxuXHRpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0c3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZW1vamlSZWdleCgpLCAnICAnKTtcblxuXHRsZXQgd2lkdGggPSAwO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY29kZSA9IHN0cmluZy5jb2RlUG9pbnRBdChpKTtcblxuXHRcdC8vIElnbm9yZSBjb250cm9sIGNoYXJhY3RlcnNcblx0XHRpZiAoY29kZSA8PSAweDFGIHx8IChjb2RlID49IDB4N0YgJiYgY29kZSA8PSAweDlGKSkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSWdub3JlIGNvbWJpbmluZyBjaGFyYWN0ZXJzXG5cdFx0aWYgKGNvZGUgPj0gMHgzMDAgJiYgY29kZSA8PSAweDM2Rikge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gU3Vycm9nYXRlc1xuXHRcdGlmIChjb2RlID4gMHhGRkZGKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0d2lkdGggKz0gaXNGdWxsd2lkdGhDb2RlUG9pbnQoY29kZSkgPyAyIDogMTtcblx0fVxuXG5cdHJldHVybiB3aWR0aDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nV2lkdGg7XG4vLyBUT0RPOiByZW1vdmUgdGhpcyBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gc3RyaW5nV2lkdGg7XG4iLCAiJ3VzZSBzdHJpY3QnXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuXHRcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXHJcblx0XCJhbnRpcXVld2hpdGVcIjogWzI1MCwgMjM1LCAyMTVdLFxyXG5cdFwiYXF1YVwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXHJcblx0XCJhenVyZVwiOiBbMjQwLCAyNTUsIDI1NV0sXHJcblx0XCJiZWlnZVwiOiBbMjQ1LCAyNDUsIDIyMF0sXHJcblx0XCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxyXG5cdFwiYmxhY2tcIjogWzAsIDAsIDBdLFxyXG5cdFwiYmxhbmNoZWRhbG1vbmRcIjogWzI1NSwgMjM1LCAyMDVdLFxyXG5cdFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcclxuXHRcImJsdWV2aW9sZXRcIjogWzEzOCwgNDMsIDIyNl0sXHJcblx0XCJicm93blwiOiBbMTY1LCA0MiwgNDJdLFxyXG5cdFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcclxuXHRcImNhZGV0Ymx1ZVwiOiBbOTUsIDE1OCwgMTYwXSxcclxuXHRcImNoYXJ0cmV1c2VcIjogWzEyNywgMjU1LCAwXSxcclxuXHRcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcclxuXHRcImNvcmFsXCI6IFsyNTUsIDEyNywgODBdLFxyXG5cdFwiY29ybmZsb3dlcmJsdWVcIjogWzEwMCwgMTQ5LCAyMzddLFxyXG5cdFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxyXG5cdFwiY3JpbXNvblwiOiBbMjIwLCAyMCwgNjBdLFxyXG5cdFwiY3lhblwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXHJcblx0XCJkYXJrY3lhblwiOiBbMCwgMTM5LCAxMzldLFxyXG5cdFwiZGFya2dvbGRlbnJvZFwiOiBbMTg0LCAxMzQsIDExXSxcclxuXHRcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtncmVlblwiOiBbMCwgMTAwLCAwXSxcclxuXHRcImRhcmtncmV5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXHJcblx0XCJkYXJrbWFnZW50YVwiOiBbMTM5LCAwLCAxMzldLFxyXG5cdFwiZGFya29saXZlZ3JlZW5cIjogWzg1LCAxMDcsIDQ3XSxcclxuXHRcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcclxuXHRcImRhcmtvcmNoaWRcIjogWzE1MywgNTAsIDIwNF0sXHJcblx0XCJkYXJrcmVkXCI6IFsxMzksIDAsIDBdLFxyXG5cdFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXHJcblx0XCJkYXJrc2VhZ3JlZW5cIjogWzE0MywgMTg4LCAxNDNdLFxyXG5cdFwiZGFya3NsYXRlYmx1ZVwiOiBbNzIsIDYxLCAxMzldLFxyXG5cdFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXHJcblx0XCJkYXJrc2xhdGVncmV5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmt0dXJxdW9pc2VcIjogWzAsIDIwNiwgMjA5XSxcclxuXHRcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcclxuXHRcImRlZXBwaW5rXCI6IFsyNTUsIDIwLCAxNDddLFxyXG5cdFwiZGVlcHNreWJsdWVcIjogWzAsIDE5MSwgMjU1XSxcclxuXHRcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxyXG5cdFwiZGltZ3JleVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkb2RnZXJibHVlXCI6IFszMCwgMTQ0LCAyNTVdLFxyXG5cdFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXHJcblx0XCJmbG9yYWx3aGl0ZVwiOiBbMjU1LCAyNTAsIDI0MF0sXHJcblx0XCJmb3Jlc3RncmVlblwiOiBbMzQsIDEzOSwgMzRdLFxyXG5cdFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxyXG5cdFwiZ2FpbnNib3JvXCI6IFsyMjAsIDIyMCwgMjIwXSxcclxuXHRcImdob3N0d2hpdGVcIjogWzI0OCwgMjQ4LCAyNTVdLFxyXG5cdFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxyXG5cdFwiZ29sZGVucm9kXCI6IFsyMTgsIDE2NSwgMzJdLFxyXG5cdFwiZ3JheVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJncmVlblwiOiBbMCwgMTI4LCAwXSxcclxuXHRcImdyZWVueWVsbG93XCI6IFsxNzMsIDI1NSwgNDddLFxyXG5cdFwiZ3JleVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXHJcblx0XCJob3RwaW5rXCI6IFsyNTUsIDEwNSwgMTgwXSxcclxuXHRcImluZGlhbnJlZFwiOiBbMjA1LCA5MiwgOTJdLFxyXG5cdFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcclxuXHRcIml2b3J5XCI6IFsyNTUsIDI1NSwgMjQwXSxcclxuXHRcImtoYWtpXCI6IFsyNDAsIDIzMCwgMTQwXSxcclxuXHRcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcclxuXHRcImxhdmVuZGVyYmx1c2hcIjogWzI1NSwgMjQwLCAyNDVdLFxyXG5cdFwibGF3bmdyZWVuXCI6IFsxMjQsIDI1MiwgMF0sXHJcblx0XCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxyXG5cdFwibGlnaHRibHVlXCI6IFsxNzMsIDIxNiwgMjMwXSxcclxuXHRcImxpZ2h0Y29yYWxcIjogWzI0MCwgMTI4LCAxMjhdLFxyXG5cdFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcclxuXHRcImxpZ2h0Z29sZGVucm9keWVsbG93XCI6IFsyNTAsIDI1MCwgMjEwXSxcclxuXHRcImxpZ2h0Z3JheVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcclxuXHRcImxpZ2h0Z3JleVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodHBpbmtcIjogWzI1NSwgMTgyLCAxOTNdLFxyXG5cdFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxyXG5cdFwibGlnaHRzZWFncmVlblwiOiBbMzIsIDE3OCwgMTcwXSxcclxuXHRcImxpZ2h0c2t5Ymx1ZVwiOiBbMTM1LCAyMDYsIDI1MF0sXHJcblx0XCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHNsYXRlZ3JleVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHN0ZWVsYmx1ZVwiOiBbMTc2LCAxOTYsIDIyMl0sXHJcblx0XCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXHJcblx0XCJsaW1lXCI6IFswLCAyNTUsIDBdLFxyXG5cdFwibGltZWdyZWVuXCI6IFs1MCwgMjA1LCA1MF0sXHJcblx0XCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXHJcblx0XCJtYWdlbnRhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJtYXJvb25cIjogWzEyOCwgMCwgMF0sXHJcblx0XCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcclxuXHRcIm1lZGl1bWJsdWVcIjogWzAsIDAsIDIwNV0sXHJcblx0XCJtZWRpdW1vcmNoaWRcIjogWzE4NiwgODUsIDIxMV0sXHJcblx0XCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxyXG5cdFwibWVkaXVtc2VhZ3JlZW5cIjogWzYwLCAxNzksIDExM10sXHJcblx0XCJtZWRpdW1zbGF0ZWJsdWVcIjogWzEyMywgMTA0LCAyMzhdLFxyXG5cdFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcclxuXHRcIm1lZGl1bXR1cnF1b2lzZVwiOiBbNzIsIDIwOSwgMjA0XSxcclxuXHRcIm1lZGl1bXZpb2xldHJlZFwiOiBbMTk5LCAyMSwgMTMzXSxcclxuXHRcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxyXG5cdFwibWludGNyZWFtXCI6IFsyNDUsIDI1NSwgMjUwXSxcclxuXHRcIm1pc3R5cm9zZVwiOiBbMjU1LCAyMjgsIDIyNV0sXHJcblx0XCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXHJcblx0XCJuYXZham93aGl0ZVwiOiBbMjU1LCAyMjIsIDE3M10sXHJcblx0XCJuYXZ5XCI6IFswLCAwLCAxMjhdLFxyXG5cdFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXHJcblx0XCJvbGl2ZVwiOiBbMTI4LCAxMjgsIDBdLFxyXG5cdFwib2xpdmVkcmFiXCI6IFsxMDcsIDE0MiwgMzVdLFxyXG5cdFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXHJcblx0XCJvcmFuZ2VyZWRcIjogWzI1NSwgNjksIDBdLFxyXG5cdFwib3JjaGlkXCI6IFsyMTgsIDExMiwgMjE0XSxcclxuXHRcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxyXG5cdFwicGFsZWdyZWVuXCI6IFsxNTIsIDI1MSwgMTUyXSxcclxuXHRcInBhbGV0dXJxdW9pc2VcIjogWzE3NSwgMjM4LCAyMzhdLFxyXG5cdFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXHJcblx0XCJwYXBheWF3aGlwXCI6IFsyNTUsIDIzOSwgMjEzXSxcclxuXHRcInBlYWNocHVmZlwiOiBbMjU1LCAyMTgsIDE4NV0sXHJcblx0XCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxyXG5cdFwicGlua1wiOiBbMjU1LCAxOTIsIDIwM10sXHJcblx0XCJwbHVtXCI6IFsyMjEsIDE2MCwgMjIxXSxcclxuXHRcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxyXG5cdFwicHVycGxlXCI6IFsxMjgsIDAsIDEyOF0sXHJcblx0XCJyZWJlY2NhcHVycGxlXCI6IFsxMDIsIDUxLCAxNTNdLFxyXG5cdFwicmVkXCI6IFsyNTUsIDAsIDBdLFxyXG5cdFwicm9zeWJyb3duXCI6IFsxODgsIDE0MywgMTQzXSxcclxuXHRcInJveWFsYmx1ZVwiOiBbNjUsIDEwNSwgMjI1XSxcclxuXHRcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXHJcblx0XCJzYWxtb25cIjogWzI1MCwgMTI4LCAxMTRdLFxyXG5cdFwic2FuZHlicm93blwiOiBbMjQ0LCAxNjQsIDk2XSxcclxuXHRcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXHJcblx0XCJzZWFzaGVsbFwiOiBbMjU1LCAyNDUsIDIzOF0sXHJcblx0XCJzaWVubmFcIjogWzE2MCwgODIsIDQ1XSxcclxuXHRcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXHJcblx0XCJza3libHVlXCI6IFsxMzUsIDIwNiwgMjM1XSxcclxuXHRcInNsYXRlYmx1ZVwiOiBbMTA2LCA5MCwgMjA1XSxcclxuXHRcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbGF0ZWdyZXlcIjogWzExMiwgMTI4LCAxNDRdLFxyXG5cdFwic25vd1wiOiBbMjU1LCAyNTAsIDI1MF0sXHJcblx0XCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxyXG5cdFwic3RlZWxibHVlXCI6IFs3MCwgMTMwLCAxODBdLFxyXG5cdFwidGFuXCI6IFsyMTAsIDE4MCwgMTQwXSxcclxuXHRcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcclxuXHRcInRoaXN0bGVcIjogWzIxNiwgMTkxLCAyMTZdLFxyXG5cdFwidG9tYXRvXCI6IFsyNTUsIDk5LCA3MV0sXHJcblx0XCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXHJcblx0XCJ2aW9sZXRcIjogWzIzOCwgMTMwLCAyMzhdLFxyXG5cdFwid2hlYXRcIjogWzI0NSwgMjIyLCAxNzldLFxyXG5cdFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxyXG5cdFwid2hpdGVzbW9rZVwiOiBbMjQ1LCAyNDUsIDI0NV0sXHJcblx0XCJ5ZWxsb3dcIjogWzI1NSwgMjU1LCAwXSxcclxuXHRcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXHJcbn07XHJcbiIsICIvKiBNSVQgbGljZW5zZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbWl4ZWQtb3BlcmF0b3JzICovXG5jb25zdCBjc3NLZXl3b3JkcyA9IHJlcXVpcmUoJ2NvbG9yLW5hbWUnKTtcblxuLy8gTk9URTogY29udmVyc2lvbnMgc2hvdWxkIG9ubHkgcmV0dXJuIHByaW1pdGl2ZSB2YWx1ZXMgKGkuZS4gYXJyYXlzLCBvclxuLy8gICAgICAgdmFsdWVzIHRoYXQgZ2l2ZSBjb3JyZWN0IGB0eXBlb2ZgIHJlc3VsdHMpLlxuLy8gICAgICAgZG8gbm90IHVzZSBib3ggdmFsdWVzIHR5cGVzIChpLmUuIE51bWJlcigpLCBTdHJpbmcoKSwgZXRjLilcblxuY29uc3QgcmV2ZXJzZUtleXdvcmRzID0ge307XG5mb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjc3NLZXl3b3JkcykpIHtcblx0cmV2ZXJzZUtleXdvcmRzW2Nzc0tleXdvcmRzW2tleV1dID0ga2V5O1xufVxuXG5jb25zdCBjb252ZXJ0ID0ge1xuXHRyZ2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAncmdiJ30sXG5cdGhzbDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc2wnfSxcblx0aHN2OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2hzdid9LFxuXHRod2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHdiJ30sXG5cdGNteWs6IHtjaGFubmVsczogNCwgbGFiZWxzOiAnY215ayd9LFxuXHR4eXo6IHtjaGFubmVsczogMywgbGFiZWxzOiAneHl6J30sXG5cdGxhYjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsYWInfSxcblx0bGNoOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2xjaCd9LFxuXHRoZXg6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2hleCddfSxcblx0a2V5d29yZDoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsna2V5d29yZCddfSxcblx0YW5zaTE2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMTYnXX0sXG5cdGFuc2kyNTY6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2Fuc2kyNTYnXX0sXG5cdGhjZzoge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsnaCcsICdjJywgJ2cnXX0sXG5cdGFwcGxlOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogWydyMTYnLCAnZzE2JywgJ2IxNiddfSxcblx0Z3JheToge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnZ3JheSddfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0O1xuXG4vLyBIaWRlIC5jaGFubmVscyBhbmQgLmxhYmVscyBwcm9wZXJ0aWVzXG5mb3IgKGNvbnN0IG1vZGVsIG9mIE9iamVjdC5rZXlzKGNvbnZlcnQpKSB7XG5cdGlmICghKCdjaGFubmVscycgaW4gY29udmVydFttb2RlbF0pKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHR9XG5cblx0aWYgKCEoJ2xhYmVscycgaW4gY29udmVydFttb2RlbF0pKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWwgbGFiZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHR9XG5cblx0aWYgKGNvbnZlcnRbbW9kZWxdLmxhYmVscy5sZW5ndGggIT09IGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdjaGFubmVsIGFuZCBsYWJlbCBjb3VudHMgbWlzbWF0Y2g6ICcgKyBtb2RlbCk7XG5cdH1cblxuXHRjb25zdCB7Y2hhbm5lbHMsIGxhYmVsc30gPSBjb252ZXJ0W21vZGVsXTtcblx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzO1xuXHRkZWxldGUgY29udmVydFttb2RlbF0ubGFiZWxzO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY2hhbm5lbHN9KTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbbW9kZWxdLCAnbGFiZWxzJywge3ZhbHVlOiBsYWJlbHN9KTtcbn1cblxuY29udmVydC5yZ2IuaHNsID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblx0Y29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG5cdGNvbnN0IGRlbHRhID0gbWF4IC0gbWluO1xuXHRsZXQgaDtcblx0bGV0IHM7XG5cblx0aWYgKG1heCA9PT0gbWluKSB7XG5cdFx0aCA9IDA7XG5cdH0gZWxzZSBpZiAociA9PT0gbWF4KSB7XG5cdFx0aCA9IChnIC0gYikgLyBkZWx0YTtcblx0fSBlbHNlIGlmIChnID09PSBtYXgpIHtcblx0XHRoID0gMiArIChiIC0gcikgLyBkZWx0YTtcblx0fSBlbHNlIGlmIChiID09PSBtYXgpIHtcblx0XHRoID0gNCArIChyIC0gZykgLyBkZWx0YTtcblx0fVxuXG5cdGggPSBNYXRoLm1pbihoICogNjAsIDM2MCk7XG5cblx0aWYgKGggPCAwKSB7XG5cdFx0aCArPSAzNjA7XG5cdH1cblxuXHRjb25zdCBsID0gKG1pbiArIG1heCkgLyAyO1xuXG5cdGlmIChtYXggPT09IG1pbikge1xuXHRcdHMgPSAwO1xuXHR9IGVsc2UgaWYgKGwgPD0gMC41KSB7XG5cdFx0cyA9IGRlbHRhIC8gKG1heCArIG1pbik7XG5cdH0gZWxzZSB7XG5cdFx0cyA9IGRlbHRhIC8gKDIgLSBtYXggLSBtaW4pO1xuXHR9XG5cblx0cmV0dXJuIFtoLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmhzdiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0bGV0IHJkaWY7XG5cdGxldCBnZGlmO1xuXHRsZXQgYmRpZjtcblx0bGV0IGg7XG5cdGxldCBzO1xuXG5cdGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XG5cdGNvbnN0IGIgPSByZ2JbMl0gLyAyNTU7XG5cdGNvbnN0IHYgPSBNYXRoLm1heChyLCBnLCBiKTtcblx0Y29uc3QgZGlmZiA9IHYgLSBNYXRoLm1pbihyLCBnLCBiKTtcblx0Y29uc3QgZGlmZmMgPSBmdW5jdGlvbiAoYykge1xuXHRcdHJldHVybiAodiAtIGMpIC8gNiAvIGRpZmYgKyAxIC8gMjtcblx0fTtcblxuXHRpZiAoZGlmZiA9PT0gMCkge1xuXHRcdGggPSAwO1xuXHRcdHMgPSAwO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkaWZmIC8gdjtcblx0XHRyZGlmID0gZGlmZmMocik7XG5cdFx0Z2RpZiA9IGRpZmZjKGcpO1xuXHRcdGJkaWYgPSBkaWZmYyhiKTtcblxuXHRcdGlmIChyID09PSB2KSB7XG5cdFx0XHRoID0gYmRpZiAtIGdkaWY7XG5cdFx0fSBlbHNlIGlmIChnID09PSB2KSB7XG5cdFx0XHRoID0gKDEgLyAzKSArIHJkaWYgLSBiZGlmO1xuXHRcdH0gZWxzZSBpZiAoYiA9PT0gdikge1xuXHRcdFx0aCA9ICgyIC8gMykgKyBnZGlmIC0gcmRpZjtcblx0XHR9XG5cblx0XHRpZiAoaCA8IDApIHtcblx0XHRcdGggKz0gMTtcblx0XHR9IGVsc2UgaWYgKGggPiAxKSB7XG5cdFx0XHRoIC09IDE7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIFtcblx0XHRoICogMzYwLFxuXHRcdHMgKiAxMDAsXG5cdFx0diAqIDEwMFxuXHRdO1xufTtcblxuY29udmVydC5yZ2IuaHdiID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdO1xuXHRjb25zdCBnID0gcmdiWzFdO1xuXHRsZXQgYiA9IHJnYlsyXTtcblx0Y29uc3QgaCA9IGNvbnZlcnQucmdiLmhzbChyZ2IpWzBdO1xuXHRjb25zdCB3ID0gMSAvIDI1NSAqIE1hdGgubWluKHIsIE1hdGgubWluKGcsIGIpKTtcblxuXHRiID0gMSAtIDEgLyAyNTUgKiBNYXRoLm1heChyLCBNYXRoLm1heChnLCBiKSk7XG5cblx0cmV0dXJuIFtoLCB3ICogMTAwLCBiICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmNteWsgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XG5cdGNvbnN0IGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Y29uc3QgayA9IE1hdGgubWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xuXHRjb25zdCBjID0gKDEgLSByIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdGNvbnN0IG0gPSAoMSAtIGcgLSBrKSAvICgxIC0gaykgfHwgMDtcblx0Y29uc3QgeSA9ICgxIC0gYiAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXG5cdHJldHVybiBbYyAqIDEwMCwgbSAqIDEwMCwgeSAqIDEwMCwgayAqIDEwMF07XG59O1xuXG5mdW5jdGlvbiBjb21wYXJhdGl2ZURpc3RhbmNlKHgsIHkpIHtcblx0Lypcblx0XHRTZWUgaHR0cHM6Ly9lbi5tLndpa2lwZWRpYS5vcmcvd2lraS9FdWNsaWRlYW5fZGlzdGFuY2UjU3F1YXJlZF9FdWNsaWRlYW5fZGlzdGFuY2Vcblx0Ki9cblx0cmV0dXJuIChcblx0XHQoKHhbMF0gLSB5WzBdKSAqKiAyKSArXG5cdFx0KCh4WzFdIC0geVsxXSkgKiogMikgK1xuXHRcdCgoeFsyXSAtIHlbMl0pICoqIDIpXG5cdCk7XG59XG5cbmNvbnZlcnQucmdiLmtleXdvcmQgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHJldmVyc2VkID0gcmV2ZXJzZUtleXdvcmRzW3JnYl07XG5cdGlmIChyZXZlcnNlZCkge1xuXHRcdHJldHVybiByZXZlcnNlZDtcblx0fVxuXG5cdGxldCBjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gSW5maW5pdHk7XG5cdGxldCBjdXJyZW50Q2xvc2VzdEtleXdvcmQ7XG5cblx0Zm9yIChjb25zdCBrZXl3b3JkIG9mIE9iamVjdC5rZXlzKGNzc0tleXdvcmRzKSkge1xuXHRcdGNvbnN0IHZhbHVlID0gY3NzS2V5d29yZHNba2V5d29yZF07XG5cblx0XHQvLyBDb21wdXRlIGNvbXBhcmF0aXZlIGRpc3RhbmNlXG5cdFx0Y29uc3QgZGlzdGFuY2UgPSBjb21wYXJhdGl2ZURpc3RhbmNlKHJnYiwgdmFsdWUpO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgaXRzIGxlc3MsIGlmIHNvIHNldCBhcyBjbG9zZXN0XG5cdFx0aWYgKGRpc3RhbmNlIDwgY3VycmVudENsb3Nlc3REaXN0YW5jZSkge1xuXHRcdFx0Y3VycmVudENsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xuXHRcdFx0Y3VycmVudENsb3Nlc3RLZXl3b3JkID0ga2V5d29yZDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY3VycmVudENsb3Nlc3RLZXl3b3JkO1xufTtcblxuY29udmVydC5rZXl3b3JkLnJnYiA9IGZ1bmN0aW9uIChrZXl3b3JkKSB7XG5cdHJldHVybiBjc3NLZXl3b3Jkc1trZXl3b3JkXTtcbn07XG5cbmNvbnZlcnQucmdiLnh5eiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0bGV0IHIgPSByZ2JbMF0gLyAyNTU7XG5cdGxldCBnID0gcmdiWzFdIC8gMjU1O1xuXHRsZXQgYiA9IHJnYlsyXSAvIDI1NTtcblxuXHQvLyBBc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDQwNDUgPyAoKChyICsgMC4wNTUpIC8gMS4wNTUpICoqIDIuNCkgOiAociAvIDEyLjkyKTtcblx0ZyA9IGcgPiAwLjA0MDQ1ID8gKCgoZyArIDAuMDU1KSAvIDEuMDU1KSAqKiAyLjQpIDogKGcgLyAxMi45Mik7XG5cdGIgPSBiID4gMC4wNDA0NSA/ICgoKGIgKyAwLjA1NSkgLyAxLjA1NSkgKiogMi40KSA6IChiIC8gMTIuOTIpO1xuXG5cdGNvbnN0IHggPSAociAqIDAuNDEyNCkgKyAoZyAqIDAuMzU3NikgKyAoYiAqIDAuMTgwNSk7XG5cdGNvbnN0IHkgPSAociAqIDAuMjEyNikgKyAoZyAqIDAuNzE1MikgKyAoYiAqIDAuMDcyMik7XG5cdGNvbnN0IHogPSAociAqIDAuMDE5MykgKyAoZyAqIDAuMTE5MikgKyAoYiAqIDAuOTUwNSk7XG5cblx0cmV0dXJuIFt4ICogMTAwLCB5ICogMTAwLCB6ICogMTAwXTtcbn07XG5cbmNvbnZlcnQucmdiLmxhYiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgeHl6ID0gY29udmVydC5yZ2IueHl6KHJnYik7XG5cdGxldCB4ID0geHl6WzBdO1xuXHRsZXQgeSA9IHh5elsxXTtcblx0bGV0IHogPSB4eXpbMl07XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/ICh4ICoqICgxIC8gMykpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gKHkgKiogKDEgLyAzKSkgOiAoNy43ODcgKiB5KSArICgxNiAvIDExNik7XG5cdHogPSB6ID4gMC4wMDg4NTYgPyAoeiAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRjb25zdCBsID0gKDExNiAqIHkpIC0gMTY7XG5cdGNvbnN0IGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRjb25zdCBiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5oc2wucmdiID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBoID0gaHNsWzBdIC8gMzYwO1xuXHRjb25zdCBzID0gaHNsWzFdIC8gMTAwO1xuXHRjb25zdCBsID0gaHNsWzJdIC8gMTAwO1xuXHRsZXQgdDI7XG5cdGxldCB0Mztcblx0bGV0IHZhbDtcblxuXHRpZiAocyA9PT0gMCkge1xuXHRcdHZhbCA9IGwgKiAyNTU7XG5cdFx0cmV0dXJuIFt2YWwsIHZhbCwgdmFsXTtcblx0fVxuXG5cdGlmIChsIDwgMC41KSB7XG5cdFx0dDIgPSBsICogKDEgKyBzKTtcblx0fSBlbHNlIHtcblx0XHR0MiA9IGwgKyBzIC0gbCAqIHM7XG5cdH1cblxuXHRjb25zdCB0MSA9IDIgKiBsIC0gdDI7XG5cblx0Y29uc3QgcmdiID0gWzAsIDAsIDBdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdHQzID0gaCArIDEgLyAzICogLShpIC0gMSk7XG5cdFx0aWYgKHQzIDwgMCkge1xuXHRcdFx0dDMrKztcblx0XHR9XG5cblx0XHRpZiAodDMgPiAxKSB7XG5cdFx0XHR0My0tO1xuXHRcdH1cblxuXHRcdGlmICg2ICogdDMgPCAxKSB7XG5cdFx0XHR2YWwgPSB0MSArICh0MiAtIHQxKSAqIDYgKiB0Mztcblx0XHR9IGVsc2UgaWYgKDIgKiB0MyA8IDEpIHtcblx0XHRcdHZhbCA9IHQyO1xuXHRcdH0gZWxzZSBpZiAoMyAqIHQzIDwgMikge1xuXHRcdFx0dmFsID0gdDEgKyAodDIgLSB0MSkgKiAoMiAvIDMgLSB0MykgKiA2O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWwgPSB0MTtcblx0XHR9XG5cblx0XHRyZ2JbaV0gPSB2YWwgKiAyNTU7XG5cdH1cblxuXHRyZXR1cm4gcmdiO1xufTtcblxuY29udmVydC5oc2wuaHN2ID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBoID0gaHNsWzBdO1xuXHRsZXQgcyA9IGhzbFsxXSAvIDEwMDtcblx0bGV0IGwgPSBoc2xbMl0gLyAxMDA7XG5cdGxldCBzbWluID0gcztcblx0Y29uc3QgbG1pbiA9IE1hdGgubWF4KGwsIDAuMDEpO1xuXG5cdGwgKj0gMjtcblx0cyAqPSAobCA8PSAxKSA/IGwgOiAyIC0gbDtcblx0c21pbiAqPSBsbWluIDw9IDEgPyBsbWluIDogMiAtIGxtaW47XG5cdGNvbnN0IHYgPSAobCArIHMpIC8gMjtcblx0Y29uc3Qgc3YgPSBsID09PSAwID8gKDIgKiBzbWluKSAvIChsbWluICsgc21pbikgOiAoMiAqIHMpIC8gKGwgKyBzKTtcblxuXHRyZXR1cm4gW2gsIHN2ICogMTAwLCB2ICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaHN2LnJnYiA9IGZ1bmN0aW9uIChoc3YpIHtcblx0Y29uc3QgaCA9IGhzdlswXSAvIDYwO1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRsZXQgdiA9IGhzdlsyXSAvIDEwMDtcblx0Y29uc3QgaGkgPSBNYXRoLmZsb29yKGgpICUgNjtcblxuXHRjb25zdCBmID0gaCAtIE1hdGguZmxvb3IoaCk7XG5cdGNvbnN0IHAgPSAyNTUgKiB2ICogKDEgLSBzKTtcblx0Y29uc3QgcSA9IDI1NSAqIHYgKiAoMSAtIChzICogZikpO1xuXHRjb25zdCB0ID0gMjU1ICogdiAqICgxIC0gKHMgKiAoMSAtIGYpKSk7XG5cdHYgKj0gMjU1O1xuXG5cdHN3aXRjaCAoaGkpIHtcblx0XHRjYXNlIDA6XG5cdFx0XHRyZXR1cm4gW3YsIHQsIHBdO1xuXHRcdGNhc2UgMTpcblx0XHRcdHJldHVybiBbcSwgdiwgcF07XG5cdFx0Y2FzZSAyOlxuXHRcdFx0cmV0dXJuIFtwLCB2LCB0XTtcblx0XHRjYXNlIDM6XG5cdFx0XHRyZXR1cm4gW3AsIHEsIHZdO1xuXHRcdGNhc2UgNDpcblx0XHRcdHJldHVybiBbdCwgcCwgdl07XG5cdFx0Y2FzZSA1OlxuXHRcdFx0cmV0dXJuIFt2LCBwLCBxXTtcblx0fVxufTtcblxuY29udmVydC5oc3YuaHNsID0gZnVuY3Rpb24gKGhzdikge1xuXHRjb25zdCBoID0gaHN2WzBdO1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRjb25zdCB2ID0gaHN2WzJdIC8gMTAwO1xuXHRjb25zdCB2bWluID0gTWF0aC5tYXgodiwgMC4wMSk7XG5cdGxldCBzbDtcblx0bGV0IGw7XG5cblx0bCA9ICgyIC0gcykgKiB2O1xuXHRjb25zdCBsbWluID0gKDIgLSBzKSAqIHZtaW47XG5cdHNsID0gcyAqIHZtaW47XG5cdHNsIC89IChsbWluIDw9IDEpID8gbG1pbiA6IDIgLSBsbWluO1xuXHRzbCA9IHNsIHx8IDA7XG5cdGwgLz0gMjtcblxuXHRyZXR1cm4gW2gsIHNsICogMTAwLCBsICogMTAwXTtcbn07XG5cbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1jb2xvci8jaHdiLXRvLXJnYlxuY29udmVydC5od2IucmdiID0gZnVuY3Rpb24gKGh3Yikge1xuXHRjb25zdCBoID0gaHdiWzBdIC8gMzYwO1xuXHRsZXQgd2ggPSBod2JbMV0gLyAxMDA7XG5cdGxldCBibCA9IGh3YlsyXSAvIDEwMDtcblx0Y29uc3QgcmF0aW8gPSB3aCArIGJsO1xuXHRsZXQgZjtcblxuXHQvLyBXaCArIGJsIGNhbnQgYmUgPiAxXG5cdGlmIChyYXRpbyA+IDEpIHtcblx0XHR3aCAvPSByYXRpbztcblx0XHRibCAvPSByYXRpbztcblx0fVxuXG5cdGNvbnN0IGkgPSBNYXRoLmZsb29yKDYgKiBoKTtcblx0Y29uc3QgdiA9IDEgLSBibDtcblx0ZiA9IDYgKiBoIC0gaTtcblxuXHRpZiAoKGkgJiAweDAxKSAhPT0gMCkge1xuXHRcdGYgPSAxIC0gZjtcblx0fVxuXG5cdGNvbnN0IG4gPSB3aCArIGYgKiAodiAtIHdoKTsgLy8gTGluZWFyIGludGVycG9sYXRpb25cblxuXHRsZXQgcjtcblx0bGV0IGc7XG5cdGxldCBiO1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cy1wZXItbGluZSxuby1tdWx0aS1zcGFjZXMgKi9cblx0c3dpdGNoIChpKSB7XG5cdFx0ZGVmYXVsdDpcblx0XHRjYXNlIDY6XG5cdFx0Y2FzZSAwOiByID0gdjsgIGcgPSBuOyAgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDE6IHIgPSBuOyAgZyA9IHY7ICBiID0gd2g7IGJyZWFrO1xuXHRcdGNhc2UgMjogciA9IHdoOyBnID0gdjsgIGIgPSBuOyBicmVhaztcblx0XHRjYXNlIDM6IHIgPSB3aDsgZyA9IG47ICBiID0gdjsgYnJlYWs7XG5cdFx0Y2FzZSA0OiByID0gbjsgIGcgPSB3aDsgYiA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgNTogciA9IHY7ICBnID0gd2g7IGIgPSBuOyBicmVhaztcblx0fVxuXHQvKiBlc2xpbnQtZW5hYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lLG5vLW11bHRpLXNwYWNlcyAqL1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmNteWsucmdiID0gZnVuY3Rpb24gKGNteWspIHtcblx0Y29uc3QgYyA9IGNteWtbMF0gLyAxMDA7XG5cdGNvbnN0IG0gPSBjbXlrWzFdIC8gMTAwO1xuXHRjb25zdCB5ID0gY215a1syXSAvIDEwMDtcblx0Y29uc3QgayA9IGNteWtbM10gLyAxMDA7XG5cblx0Y29uc3QgciA9IDEgLSBNYXRoLm1pbigxLCBjICogKDEgLSBrKSArIGspO1xuXHRjb25zdCBnID0gMSAtIE1hdGgubWluKDEsIG0gKiAoMSAtIGspICsgayk7XG5cdGNvbnN0IGIgPSAxIC0gTWF0aC5taW4oMSwgeSAqICgxIC0gaykgKyBrKTtcblxuXHRyZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xufTtcblxuY29udmVydC54eXoucmdiID0gZnVuY3Rpb24gKHh5eikge1xuXHRjb25zdCB4ID0geHl6WzBdIC8gMTAwO1xuXHRjb25zdCB5ID0geHl6WzFdIC8gMTAwO1xuXHRjb25zdCB6ID0geHl6WzJdIC8gMTAwO1xuXHRsZXQgcjtcblx0bGV0IGc7XG5cdGxldCBiO1xuXG5cdHIgPSAoeCAqIDMuMjQwNikgKyAoeSAqIC0xLjUzNzIpICsgKHogKiAtMC40OTg2KTtcblx0ZyA9ICh4ICogLTAuOTY4OSkgKyAoeSAqIDEuODc1OCkgKyAoeiAqIDAuMDQxNSk7XG5cdGIgPSAoeCAqIDAuMDU1NykgKyAoeSAqIC0wLjIwNDApICsgKHogKiAxLjA1NzApO1xuXG5cdC8vIEFzc3VtZSBzUkdCXG5cdHIgPSByID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKHIgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogciAqIDEyLjkyO1xuXG5cdGcgPSBnID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKGcgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogZyAqIDEyLjkyO1xuXG5cdGIgPSBiID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogKGIgKiogKDEuMCAvIDIuNCkpKSAtIDAuMDU1KVxuXHRcdDogYiAqIDEyLjkyO1xuXG5cdHIgPSBNYXRoLm1pbihNYXRoLm1heCgwLCByKSwgMSk7XG5cdGcgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBnKSwgMSk7XG5cdGIgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBiKSwgMSk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LmxhYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0bGV0IHggPSB4eXpbMF07XG5cdGxldCB5ID0geHl6WzFdO1xuXHRsZXQgeiA9IHh5elsyXTtcblxuXHR4IC89IDk1LjA0Nztcblx0eSAvPSAxMDA7XG5cdHogLz0gMTA4Ljg4MztcblxuXHR4ID0geCA+IDAuMDA4ODU2ID8gKHggKiogKDEgLyAzKSkgOiAoNy43ODcgKiB4KSArICgxNiAvIDExNik7XG5cdHkgPSB5ID4gMC4wMDg4NTYgPyAoeSAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHkpICsgKDE2IC8gMTE2KTtcblx0eiA9IHogPiAwLjAwODg1NiA/ICh6ICoqICgxIC8gMykpIDogKDcuNzg3ICogeikgKyAoMTYgLyAxMTYpO1xuXG5cdGNvbnN0IGwgPSAoMTE2ICogeSkgLSAxNjtcblx0Y29uc3QgYSA9IDUwMCAqICh4IC0geSk7XG5cdGNvbnN0IGIgPSAyMDAgKiAoeSAtIHopO1xuXG5cdHJldHVybiBbbCwgYSwgYl07XG59O1xuXG5jb252ZXJ0LmxhYi54eXogPSBmdW5jdGlvbiAobGFiKSB7XG5cdGNvbnN0IGwgPSBsYWJbMF07XG5cdGNvbnN0IGEgPSBsYWJbMV07XG5cdGNvbnN0IGIgPSBsYWJbMl07XG5cdGxldCB4O1xuXHRsZXQgeTtcblx0bGV0IHo7XG5cblx0eSA9IChsICsgMTYpIC8gMTE2O1xuXHR4ID0gYSAvIDUwMCArIHk7XG5cdHogPSB5IC0gYiAvIDIwMDtcblxuXHRjb25zdCB5MiA9IHkgKiogMztcblx0Y29uc3QgeDIgPSB4ICoqIDM7XG5cdGNvbnN0IHoyID0geiAqKiAzO1xuXHR5ID0geTIgPiAwLjAwODg1NiA/IHkyIDogKHkgLSAxNiAvIDExNikgLyA3Ljc4Nztcblx0eCA9IHgyID4gMC4wMDg4NTYgPyB4MiA6ICh4IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHogPSB6MiA+IDAuMDA4ODU2ID8gejIgOiAoeiAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXG5cdHggKj0gOTUuMDQ3O1xuXHR5ICo9IDEwMDtcblx0eiAqPSAxMDguODgzO1xuXG5cdHJldHVybiBbeCwgeSwgel07XG59O1xuXG5jb252ZXJ0LmxhYi5sY2ggPSBmdW5jdGlvbiAobGFiKSB7XG5cdGNvbnN0IGwgPSBsYWJbMF07XG5cdGNvbnN0IGEgPSBsYWJbMV07XG5cdGNvbnN0IGIgPSBsYWJbMl07XG5cdGxldCBoO1xuXG5cdGNvbnN0IGhyID0gTWF0aC5hdGFuMihiLCBhKTtcblx0aCA9IGhyICogMzYwIC8gMiAvIE1hdGguUEk7XG5cblx0aWYgKGggPCAwKSB7XG5cdFx0aCArPSAzNjA7XG5cdH1cblxuXHRjb25zdCBjID0gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIpO1xuXG5cdHJldHVybiBbbCwgYywgaF07XG59O1xuXG5jb252ZXJ0LmxjaC5sYWIgPSBmdW5jdGlvbiAobGNoKSB7XG5cdGNvbnN0IGwgPSBsY2hbMF07XG5cdGNvbnN0IGMgPSBsY2hbMV07XG5cdGNvbnN0IGggPSBsY2hbMl07XG5cblx0Y29uc3QgaHIgPSBoIC8gMzYwICogMiAqIE1hdGguUEk7XG5cdGNvbnN0IGEgPSBjICogTWF0aC5jb3MoaHIpO1xuXHRjb25zdCBiID0gYyAqIE1hdGguc2luKGhyKTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5yZ2IuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MsIHNhdHVyYXRpb24gPSBudWxsKSB7XG5cdGNvbnN0IFtyLCBnLCBiXSA9IGFyZ3M7XG5cdGxldCB2YWx1ZSA9IHNhdHVyYXRpb24gPT09IG51bGwgPyBjb252ZXJ0LnJnYi5oc3YoYXJncylbMl0gOiBzYXR1cmF0aW9uOyAvLyBIc3YgLT4gYW5zaTE2IG9wdGltaXphdGlvblxuXG5cdHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAvIDUwKTtcblxuXHRpZiAodmFsdWUgPT09IDApIHtcblx0XHRyZXR1cm4gMzA7XG5cdH1cblxuXHRsZXQgYW5zaSA9IDMwXG5cdFx0KyAoKE1hdGgucm91bmQoYiAvIDI1NSkgPDwgMilcblx0XHR8IChNYXRoLnJvdW5kKGcgLyAyNTUpIDw8IDEpXG5cdFx0fCBNYXRoLnJvdW5kKHIgLyAyNTUpKTtcblxuXHRpZiAodmFsdWUgPT09IDIpIHtcblx0XHRhbnNpICs9IDYwO1xuXHR9XG5cblx0cmV0dXJuIGFuc2k7XG59O1xuXG5jb252ZXJ0Lmhzdi5hbnNpMTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBPcHRpbWl6YXRpb24gaGVyZTsgd2UgYWxyZWFkeSBrbm93IHRoZSB2YWx1ZSBhbmQgZG9uJ3QgbmVlZCB0byBnZXRcblx0Ly8gaXQgY29udmVydGVkIGZvciB1cy5cblx0cmV0dXJuIGNvbnZlcnQucmdiLmFuc2kxNihjb252ZXJ0Lmhzdi5yZ2IoYXJncyksIGFyZ3NbMl0pO1xufTtcblxuY29udmVydC5yZ2IuYW5zaTI1NiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IHIgPSBhcmdzWzBdO1xuXHRjb25zdCBnID0gYXJnc1sxXTtcblx0Y29uc3QgYiA9IGFyZ3NbMl07XG5cblx0Ly8gV2UgdXNlIHRoZSBleHRlbmRlZCBncmV5c2NhbGUgcGFsZXR0ZSBoZXJlLCB3aXRoIHRoZSBleGNlcHRpb24gb2Zcblx0Ly8gYmxhY2sgYW5kIHdoaXRlLiBub3JtYWwgcGFsZXR0ZSBvbmx5IGhhcyA0IGdyZXlzY2FsZSBzaGFkZXMuXG5cdGlmIChyID09PSBnICYmIGcgPT09IGIpIHtcblx0XHRpZiAociA8IDgpIHtcblx0XHRcdHJldHVybiAxNjtcblx0XHR9XG5cblx0XHRpZiAociA+IDI0OCkge1xuXHRcdFx0cmV0dXJuIDIzMTtcblx0XHR9XG5cblx0XHRyZXR1cm4gTWF0aC5yb3VuZCgoKHIgLSA4KSAvIDI0NykgKiAyNCkgKyAyMzI7XG5cdH1cblxuXHRjb25zdCBhbnNpID0gMTZcblx0XHQrICgzNiAqIE1hdGgucm91bmQociAvIDI1NSAqIDUpKVxuXHRcdCsgKDYgKiBNYXRoLnJvdW5kKGcgLyAyNTUgKiA1KSlcblx0XHQrIE1hdGgucm91bmQoYiAvIDI1NSAqIDUpO1xuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5hbnNpMTYucmdiID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0bGV0IGNvbG9yID0gYXJncyAlIDEwO1xuXG5cdC8vIEhhbmRsZSBncmV5c2NhbGVcblx0aWYgKGNvbG9yID09PSAwIHx8IGNvbG9yID09PSA3KSB7XG5cdFx0aWYgKGFyZ3MgPiA1MCkge1xuXHRcdFx0Y29sb3IgKz0gMy41O1xuXHRcdH1cblxuXHRcdGNvbG9yID0gY29sb3IgLyAxMC41ICogMjU1O1xuXG5cdFx0cmV0dXJuIFtjb2xvciwgY29sb3IsIGNvbG9yXTtcblx0fVxuXG5cdGNvbnN0IG11bHQgPSAofn4oYXJncyA+IDUwKSArIDEpICogMC41O1xuXHRjb25zdCByID0gKChjb2xvciAmIDEpICogbXVsdCkgKiAyNTU7XG5cdGNvbnN0IGcgPSAoKChjb2xvciA+PiAxKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cdGNvbnN0IGIgPSAoKChjb2xvciA+PiAyKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQuYW5zaTI1Ni5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBIYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChhcmdzID49IDIzMikge1xuXHRcdGNvbnN0IGMgPSAoYXJncyAtIDIzMikgKiAxMCArIDg7XG5cdFx0cmV0dXJuIFtjLCBjLCBjXTtcblx0fVxuXG5cdGFyZ3MgLT0gMTY7XG5cblx0bGV0IHJlbTtcblx0Y29uc3QgciA9IE1hdGguZmxvb3IoYXJncyAvIDM2KSAvIDUgKiAyNTU7XG5cdGNvbnN0IGcgPSBNYXRoLmZsb29yKChyZW0gPSBhcmdzICUgMzYpIC8gNikgLyA1ICogMjU1O1xuXHRjb25zdCBiID0gKHJlbSAlIDYpIC8gNSAqIDI1NTtcblxuXHRyZXR1cm4gW3IsIGcsIGJdO1xufTtcblxuY29udmVydC5yZ2IuaGV4ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Y29uc3QgaW50ZWdlciA9ICgoTWF0aC5yb3VuZChhcmdzWzBdKSAmIDB4RkYpIDw8IDE2KVxuXHRcdCsgKChNYXRoLnJvdW5kKGFyZ3NbMV0pICYgMHhGRikgPDwgOClcblx0XHQrIChNYXRoLnJvdW5kKGFyZ3NbMl0pICYgMHhGRik7XG5cblx0Y29uc3Qgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQuaGV4LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IG1hdGNoID0gYXJncy50b1N0cmluZygxNikubWF0Y2goL1thLWYwLTldezZ9fFthLWYwLTldezN9L2kpO1xuXHRpZiAoIW1hdGNoKSB7XG5cdFx0cmV0dXJuIFswLCAwLCAwXTtcblx0fVxuXG5cdGxldCBjb2xvclN0cmluZyA9IG1hdGNoWzBdO1xuXG5cdGlmIChtYXRjaFswXS5sZW5ndGggPT09IDMpIHtcblx0XHRjb2xvclN0cmluZyA9IGNvbG9yU3RyaW5nLnNwbGl0KCcnKS5tYXAoY2hhciA9PiB7XG5cdFx0XHRyZXR1cm4gY2hhciArIGNoYXI7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHRjb25zdCBpbnRlZ2VyID0gcGFyc2VJbnQoY29sb3JTdHJpbmcsIDE2KTtcblx0Y29uc3QgciA9IChpbnRlZ2VyID4+IDE2KSAmIDB4RkY7XG5cdGNvbnN0IGcgPSAoaW50ZWdlciA+PiA4KSAmIDB4RkY7XG5cdGNvbnN0IGIgPSBpbnRlZ2VyICYgMHhGRjtcblxuXHRyZXR1cm4gW3IsIGcsIGJdO1xufTtcblxuY29udmVydC5yZ2IuaGNnID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCBtYXggPSBNYXRoLm1heChNYXRoLm1heChyLCBnKSwgYik7XG5cdGNvbnN0IG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTtcblx0Y29uc3QgY2hyb21hID0gKG1heCAtIG1pbik7XG5cdGxldCBncmF5c2NhbGU7XG5cdGxldCBodWU7XG5cblx0aWYgKGNocm9tYSA8IDEpIHtcblx0XHRncmF5c2NhbGUgPSBtaW4gLyAoMSAtIGNocm9tYSk7XG5cdH0gZWxzZSB7XG5cdFx0Z3JheXNjYWxlID0gMDtcblx0fVxuXG5cdGlmIChjaHJvbWEgPD0gMCkge1xuXHRcdGh1ZSA9IDA7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSByKSB7XG5cdFx0aHVlID0gKChnIC0gYikgLyBjaHJvbWEpICUgNjtcblx0fSBlbHNlXG5cdGlmIChtYXggPT09IGcpIHtcblx0XHRodWUgPSAyICsgKGIgLSByKSAvIGNocm9tYTtcblx0fSBlbHNlIHtcblx0XHRodWUgPSA0ICsgKHIgLSBnKSAvIGNocm9tYTtcblx0fVxuXG5cdGh1ZSAvPSA2O1xuXHRodWUgJT0gMTtcblxuXHRyZXR1cm4gW2h1ZSAqIDM2MCwgY2hyb21hICogMTAwLCBncmF5c2NhbGUgKiAxMDBdO1xufTtcblxuY29udmVydC5oc2wuaGNnID0gZnVuY3Rpb24gKGhzbCkge1xuXHRjb25zdCBzID0gaHNsWzFdIC8gMTAwO1xuXHRjb25zdCBsID0gaHNsWzJdIC8gMTAwO1xuXG5cdGNvbnN0IGMgPSBsIDwgMC41ID8gKDIuMCAqIHMgKiBsKSA6ICgyLjAgKiBzICogKDEuMCAtIGwpKTtcblxuXHRsZXQgZiA9IDA7XG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9IChsIC0gMC41ICogYykgLyAoMS4wIC0gYyk7XG5cdH1cblxuXHRyZXR1cm4gW2hzbFswXSwgYyAqIDEwMCwgZiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5oY2cgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdGNvbnN0IHMgPSBoc3ZbMV0gLyAxMDA7XG5cdGNvbnN0IHYgPSBoc3ZbMl0gLyAxMDA7XG5cblx0Y29uc3QgYyA9IHMgKiB2O1xuXHRsZXQgZiA9IDA7XG5cblx0aWYgKGMgPCAxLjApIHtcblx0XHRmID0gKHYgLSBjKSAvICgxIC0gYyk7XG5cdH1cblxuXHRyZXR1cm4gW2hzdlswXSwgYyAqIDEwMCwgZiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhjZy5yZ2IgPSBmdW5jdGlvbiAoaGNnKSB7XG5cdGNvbnN0IGggPSBoY2dbMF0gLyAzNjA7XG5cdGNvbnN0IGMgPSBoY2dbMV0gLyAxMDA7XG5cdGNvbnN0IGcgPSBoY2dbMl0gLyAxMDA7XG5cblx0aWYgKGMgPT09IDAuMCkge1xuXHRcdHJldHVybiBbZyAqIDI1NSwgZyAqIDI1NSwgZyAqIDI1NV07XG5cdH1cblxuXHRjb25zdCBwdXJlID0gWzAsIDAsIDBdO1xuXHRjb25zdCBoaSA9IChoICUgMSkgKiA2O1xuXHRjb25zdCB2ID0gaGkgJSAxO1xuXHRjb25zdCB3ID0gMSAtIHY7XG5cdGxldCBtZyA9IDA7XG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUgKi9cblx0c3dpdGNoIChNYXRoLmZsb29yKGhpKSkge1xuXHRcdGNhc2UgMDpcblx0XHRcdHB1cmVbMF0gPSAxOyBwdXJlWzFdID0gdjsgcHVyZVsyXSA9IDA7IGJyZWFrO1xuXHRcdGNhc2UgMTpcblx0XHRcdHB1cmVbMF0gPSB3OyBwdXJlWzFdID0gMTsgcHVyZVsyXSA9IDA7IGJyZWFrO1xuXHRcdGNhc2UgMjpcblx0XHRcdHB1cmVbMF0gPSAwOyBwdXJlWzFdID0gMTsgcHVyZVsyXSA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgMzpcblx0XHRcdHB1cmVbMF0gPSAwOyBwdXJlWzFdID0gdzsgcHVyZVsyXSA9IDE7IGJyZWFrO1xuXHRcdGNhc2UgNDpcblx0XHRcdHB1cmVbMF0gPSB2OyBwdXJlWzFdID0gMDsgcHVyZVsyXSA9IDE7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRwdXJlWzBdID0gMTsgcHVyZVsxXSA9IDA7IHB1cmVbMl0gPSB3O1xuXHR9XG5cdC8qIGVzbGludC1lbmFibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUgKi9cblxuXHRtZyA9ICgxLjAgLSBjKSAqIGc7XG5cblx0cmV0dXJuIFtcblx0XHQoYyAqIHB1cmVbMF0gKyBtZykgKiAyNTUsXG5cdFx0KGMgKiBwdXJlWzFdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsyXSArIG1nKSAqIDI1NVxuXHRdO1xufTtcblxuY29udmVydC5oY2cuaHN2ID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGNvbnN0IHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0bGV0IGYgPSAwO1xuXG5cdGlmICh2ID4gMC4wKSB7XG5cdFx0ZiA9IGMgLyB2O1xuXHR9XG5cblx0cmV0dXJuIFtoY2dbMF0sIGYgKiAxMDAsIHYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cuaHNsID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGNvbnN0IGwgPSBnICogKDEuMCAtIGMpICsgMC41ICogYztcblx0bGV0IHMgPSAwO1xuXG5cdGlmIChsID4gMC4wICYmIGwgPCAwLjUpIHtcblx0XHRzID0gYyAvICgyICogbCk7XG5cdH0gZWxzZVxuXHRpZiAobCA+PSAwLjUgJiYgbCA8IDEuMCkge1xuXHRcdHMgPSBjIC8gKDIgKiAoMSAtIGwpKTtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmh3YiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblx0Y29uc3QgdiA9IGMgKyBnICogKDEuMCAtIGMpO1xuXHRyZXR1cm4gW2hjZ1swXSwgKHYgLSBjKSAqIDEwMCwgKDEgLSB2KSAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmh3Yi5oY2cgPSBmdW5jdGlvbiAoaHdiKSB7XG5cdGNvbnN0IHcgPSBod2JbMV0gLyAxMDA7XG5cdGNvbnN0IGIgPSBod2JbMl0gLyAxMDA7XG5cdGNvbnN0IHYgPSAxIC0gYjtcblx0Y29uc3QgYyA9IHYgLSB3O1xuXHRsZXQgZyA9IDA7XG5cblx0aWYgKGMgPCAxKSB7XG5cdFx0ZyA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtod2JbMF0sIGMgKiAxMDAsIGcgKiAxMDBdO1xufTtcblxuY29udmVydC5hcHBsZS5yZ2IgPSBmdW5jdGlvbiAoYXBwbGUpIHtcblx0cmV0dXJuIFsoYXBwbGVbMF0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsxXSAvIDY1NTM1KSAqIDI1NSwgKGFwcGxlWzJdIC8gNjU1MzUpICogMjU1XTtcbn07XG5cbmNvbnZlcnQucmdiLmFwcGxlID0gZnVuY3Rpb24gKHJnYikge1xuXHRyZXR1cm4gWyhyZ2JbMF0gLyAyNTUpICogNjU1MzUsIChyZ2JbMV0gLyAyNTUpICogNjU1MzUsIChyZ2JbMl0gLyAyNTUpICogNjU1MzVdO1xufTtcblxuY29udmVydC5ncmF5LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHJldHVybiBbYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmdyYXkuaHNsID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0cmV0dXJuIFswLCAwLCBhcmdzWzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5oc3YgPSBjb252ZXJ0LmdyYXkuaHNsO1xuXG5jb252ZXJ0LmdyYXkuaHdiID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAxMDAsIGdyYXlbMF1dO1xufTtcblxuY29udmVydC5ncmF5LmNteWsgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gWzAsIDAsIDAsIGdyYXlbMF1dO1xufTtcblxuY29udmVydC5ncmF5LmxhYiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbZ3JheVswXSwgMCwgMF07XG59O1xuXG5jb252ZXJ0LmdyYXkuaGV4ID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0Y29uc3QgdmFsID0gTWF0aC5yb3VuZChncmF5WzBdIC8gMTAwICogMjU1KSAmIDB4RkY7XG5cdGNvbnN0IGludGVnZXIgPSAodmFsIDw8IDE2KSArICh2YWwgPDwgOCkgKyB2YWw7XG5cblx0Y29uc3Qgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQucmdiLmdyYXkgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHZhbCA9IChyZ2JbMF0gKyByZ2JbMV0gKyByZ2JbMl0pIC8gMztcblx0cmV0dXJuIFt2YWwgLyAyNTUgKiAxMDBdO1xufTtcbiIsICJjb25zdCBjb252ZXJzaW9ucyA9IHJlcXVpcmUoJy4vY29udmVyc2lvbnMnKTtcblxuLypcblx0VGhpcyBmdW5jdGlvbiByb3V0ZXMgYSBtb2RlbCB0byBhbGwgb3RoZXIgbW9kZWxzLlxuXG5cdGFsbCBmdW5jdGlvbnMgdGhhdCBhcmUgcm91dGVkIGhhdmUgYSBwcm9wZXJ0eSBgLmNvbnZlcnNpb25gIGF0dGFjaGVkXG5cdHRvIHRoZSByZXR1cm5lZCBzeW50aGV0aWMgZnVuY3Rpb24uIFRoaXMgcHJvcGVydHkgaXMgYW4gYXJyYXlcblx0b2Ygc3RyaW5ncywgZWFjaCB3aXRoIHRoZSBzdGVwcyBpbiBiZXR3ZWVuIHRoZSAnZnJvbScgYW5kICd0bydcblx0Y29sb3IgbW9kZWxzIChpbmNsdXNpdmUpLlxuXG5cdGNvbnZlcnNpb25zIHRoYXQgYXJlIG5vdCBwb3NzaWJsZSBzaW1wbHkgYXJlIG5vdCBpbmNsdWRlZC5cbiovXG5cbmZ1bmN0aW9uIGJ1aWxkR3JhcGgoKSB7XG5cdGNvbnN0IGdyYXBoID0ge307XG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS9vYmplY3Qta2V5cy12cy1mb3ItaW4td2l0aC1jbG9zdXJlLzNcblx0Y29uc3QgbW9kZWxzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnMpO1xuXG5cdGZvciAobGV0IGxlbiA9IG1vZGVscy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRncmFwaFttb2RlbHNbaV1dID0ge1xuXHRcdFx0Ly8gaHR0cDovL2pzcGVyZi5jb20vMS12cy1pbmZpbml0eVxuXHRcdFx0Ly8gbWljcm8tb3B0LCBidXQgdGhpcyBpcyBzaW1wbGUuXG5cdFx0XHRkaXN0YW5jZTogLTEsXG5cdFx0XHRwYXJlbnQ6IG51bGxcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIGdyYXBoO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CcmVhZHRoLWZpcnN0X3NlYXJjaFxuZnVuY3Rpb24gZGVyaXZlQkZTKGZyb21Nb2RlbCkge1xuXHRjb25zdCBncmFwaCA9IGJ1aWxkR3JhcGgoKTtcblx0Y29uc3QgcXVldWUgPSBbZnJvbU1vZGVsXTsgLy8gVW5zaGlmdCAtPiBxdWV1ZSAtPiBwb3BcblxuXHRncmFwaFtmcm9tTW9kZWxdLmRpc3RhbmNlID0gMDtcblxuXHR3aGlsZSAocXVldWUubGVuZ3RoKSB7XG5cdFx0Y29uc3QgY3VycmVudCA9IHF1ZXVlLnBvcCgpO1xuXHRcdGNvbnN0IGFkamFjZW50cyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zW2N1cnJlbnRdKTtcblxuXHRcdGZvciAobGV0IGxlbiA9IGFkamFjZW50cy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGNvbnN0IGFkamFjZW50ID0gYWRqYWNlbnRzW2ldO1xuXHRcdFx0Y29uc3Qgbm9kZSA9IGdyYXBoW2FkamFjZW50XTtcblxuXHRcdFx0aWYgKG5vZGUuZGlzdGFuY2UgPT09IC0xKSB7XG5cdFx0XHRcdG5vZGUuZGlzdGFuY2UgPSBncmFwaFtjdXJyZW50XS5kaXN0YW5jZSArIDE7XG5cdFx0XHRcdG5vZGUucGFyZW50ID0gY3VycmVudDtcblx0XHRcdFx0cXVldWUudW5zaGlmdChhZGphY2VudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGdyYXBoO1xufVxuXG5mdW5jdGlvbiBsaW5rKGZyb20sIHRvKSB7XG5cdHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuXHRcdHJldHVybiB0byhmcm9tKGFyZ3MpKTtcblx0fTtcbn1cblxuZnVuY3Rpb24gd3JhcENvbnZlcnNpb24odG9Nb2RlbCwgZ3JhcGgpIHtcblx0Y29uc3QgcGF0aCA9IFtncmFwaFt0b01vZGVsXS5wYXJlbnQsIHRvTW9kZWxdO1xuXHRsZXQgZm4gPSBjb252ZXJzaW9uc1tncmFwaFt0b01vZGVsXS5wYXJlbnRdW3RvTW9kZWxdO1xuXG5cdGxldCBjdXIgPSBncmFwaFt0b01vZGVsXS5wYXJlbnQ7XG5cdHdoaWxlIChncmFwaFtjdXJdLnBhcmVudCkge1xuXHRcdHBhdGgudW5zaGlmdChncmFwaFtjdXJdLnBhcmVudCk7XG5cdFx0Zm4gPSBsaW5rKGNvbnZlcnNpb25zW2dyYXBoW2N1cl0ucGFyZW50XVtjdXJdLCBmbik7XG5cdFx0Y3VyID0gZ3JhcGhbY3VyXS5wYXJlbnQ7XG5cdH1cblxuXHRmbi5jb252ZXJzaW9uID0gcGF0aDtcblx0cmV0dXJuIGZuO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmcm9tTW9kZWwpIHtcblx0Y29uc3QgZ3JhcGggPSBkZXJpdmVCRlMoZnJvbU1vZGVsKTtcblx0Y29uc3QgY29udmVyc2lvbiA9IHt9O1xuXG5cdGNvbnN0IG1vZGVscyA9IE9iamVjdC5rZXlzKGdyYXBoKTtcblx0Zm9yIChsZXQgbGVuID0gbW9kZWxzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdGNvbnN0IHRvTW9kZWwgPSBtb2RlbHNbaV07XG5cdFx0Y29uc3Qgbm9kZSA9IGdyYXBoW3RvTW9kZWxdO1xuXG5cdFx0aWYgKG5vZGUucGFyZW50ID09PSBudWxsKSB7XG5cdFx0XHQvLyBObyBwb3NzaWJsZSBjb252ZXJzaW9uLCBvciB0aGlzIG5vZGUgaXMgdGhlIHNvdXJjZSBtb2RlbC5cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnZlcnNpb25bdG9Nb2RlbF0gPSB3cmFwQ29udmVyc2lvbih0b01vZGVsLCBncmFwaCk7XG5cdH1cblxuXHRyZXR1cm4gY29udmVyc2lvbjtcbn07XG5cbiIsICJjb25zdCBjb252ZXJzaW9ucyA9IHJlcXVpcmUoJy4vY29udmVyc2lvbnMnKTtcbmNvbnN0IHJvdXRlID0gcmVxdWlyZSgnLi9yb3V0ZScpO1xuXG5jb25zdCBjb252ZXJ0ID0ge307XG5cbmNvbnN0IG1vZGVscyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zKTtcblxuZnVuY3Rpb24gd3JhcFJhdyhmbikge1xuXHRjb25zdCB3cmFwcGVkRm4gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuXHRcdGNvbnN0IGFyZzAgPSBhcmdzWzBdO1xuXHRcdGlmIChhcmcwID09PSB1bmRlZmluZWQgfHwgYXJnMCA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZzA7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZzAubGVuZ3RoID4gMSkge1xuXHRcdFx0YXJncyA9IGFyZzA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZuKGFyZ3MpO1xuXHR9O1xuXG5cdC8vIFByZXNlcnZlIC5jb252ZXJzaW9uIHByb3BlcnR5IGlmIHRoZXJlIGlzIG9uZVxuXHRpZiAoJ2NvbnZlcnNpb24nIGluIGZuKSB7XG5cdFx0d3JhcHBlZEZuLmNvbnZlcnNpb24gPSBmbi5jb252ZXJzaW9uO1xuXHR9XG5cblx0cmV0dXJuIHdyYXBwZWRGbjtcbn1cblxuZnVuY3Rpb24gd3JhcFJvdW5kZWQoZm4pIHtcblx0Y29uc3Qgd3JhcHBlZEZuID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRjb25zdCBhcmcwID0gYXJnc1swXTtcblxuXHRcdGlmIChhcmcwID09PSB1bmRlZmluZWQgfHwgYXJnMCA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZzA7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZzAubGVuZ3RoID4gMSkge1xuXHRcdFx0YXJncyA9IGFyZzA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0ID0gZm4oYXJncyk7XG5cblx0XHQvLyBXZSdyZSBhc3N1bWluZyB0aGUgcmVzdWx0IGlzIGFuIGFycmF5IGhlcmUuXG5cdFx0Ly8gc2VlIG5vdGljZSBpbiBjb252ZXJzaW9ucy5qczsgZG9uJ3QgdXNlIGJveCB0eXBlc1xuXHRcdC8vIGluIGNvbnZlcnNpb24gZnVuY3Rpb25zLlxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Zm9yIChsZXQgbGVuID0gcmVzdWx0Lmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRyZXN1bHRbaV0gPSBNYXRoLnJvdW5kKHJlc3VsdFtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyBQcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbm1vZGVscy5mb3JFYWNoKGZyb21Nb2RlbCA9PiB7XG5cdGNvbnZlcnRbZnJvbU1vZGVsXSA9IHt9O1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W2Zyb21Nb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY29udmVyc2lvbnNbZnJvbU1vZGVsXS5jaGFubmVsc30pO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFtmcm9tTW9kZWxdLCAnbGFiZWxzJywge3ZhbHVlOiBjb252ZXJzaW9uc1tmcm9tTW9kZWxdLmxhYmVsc30pO1xuXG5cdGNvbnN0IHJvdXRlcyA9IHJvdXRlKGZyb21Nb2RlbCk7XG5cdGNvbnN0IHJvdXRlTW9kZWxzID0gT2JqZWN0LmtleXMocm91dGVzKTtcblxuXHRyb3V0ZU1vZGVscy5mb3JFYWNoKHRvTW9kZWwgPT4ge1xuXHRcdGNvbnN0IGZuID0gcm91dGVzW3RvTW9kZWxdO1xuXG5cdFx0Y29udmVydFtmcm9tTW9kZWxdW3RvTW9kZWxdID0gd3JhcFJvdW5kZWQoZm4pO1xuXHRcdGNvbnZlcnRbZnJvbU1vZGVsXVt0b01vZGVsXS5yYXcgPSB3cmFwUmF3KGZuKTtcblx0fSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgd3JhcEFuc2kxNiA9IChmbiwgb2Zmc2V0KSA9PiAoLi4uYXJncykgPT4ge1xuXHRjb25zdCBjb2RlID0gZm4oLi4uYXJncyk7XG5cdHJldHVybiBgXFx1MDAxQlske2NvZGUgKyBvZmZzZXR9bWA7XG59O1xuXG5jb25zdCB3cmFwQW5zaTI1NiA9IChmbiwgb2Zmc2V0KSA9PiAoLi4uYXJncykgPT4ge1xuXHRjb25zdCBjb2RlID0gZm4oLi4uYXJncyk7XG5cdHJldHVybiBgXFx1MDAxQlskezM4ICsgb2Zmc2V0fTs1OyR7Y29kZX1tYDtcbn07XG5cbmNvbnN0IHdyYXBBbnNpMTZtID0gKGZuLCBvZmZzZXQpID0+ICguLi5hcmdzKSA9PiB7XG5cdGNvbnN0IHJnYiA9IGZuKC4uLmFyZ3MpO1xuXHRyZXR1cm4gYFxcdTAwMUJbJHszOCArIG9mZnNldH07Mjske3JnYlswXX07JHtyZ2JbMV19OyR7cmdiWzJdfW1gO1xufTtcblxuY29uc3QgYW5zaTJhbnNpID0gbiA9PiBuO1xuY29uc3QgcmdiMnJnYiA9IChyLCBnLCBiKSA9PiBbciwgZywgYl07XG5cbmNvbnN0IHNldExhenlQcm9wZXJ0eSA9IChvYmplY3QsIHByb3BlcnR5LCBnZXQpID0+IHtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgcHJvcGVydHksIHtcblx0XHRnZXQ6ICgpID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gZ2V0KCk7XG5cblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5LCB7XG5cdFx0XHRcdHZhbHVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHR9KTtcbn07XG5cbi8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnY29sb3ItY29udmVydCcpfSAqL1xubGV0IGNvbG9yQ29udmVydDtcbmNvbnN0IG1ha2VEeW5hbWljU3R5bGVzID0gKHdyYXAsIHRhcmdldFNwYWNlLCBpZGVudGl0eSwgaXNCYWNrZ3JvdW5kKSA9PiB7XG5cdGlmIChjb2xvckNvbnZlcnQgPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbG9yQ29udmVydCA9IHJlcXVpcmUoJ2NvbG9yLWNvbnZlcnQnKTtcblx0fVxuXG5cdGNvbnN0IG9mZnNldCA9IGlzQmFja2dyb3VuZCA/IDEwIDogMDtcblx0Y29uc3Qgc3R5bGVzID0ge307XG5cblx0Zm9yIChjb25zdCBbc291cmNlU3BhY2UsIHN1aXRlXSBvZiBPYmplY3QuZW50cmllcyhjb2xvckNvbnZlcnQpKSB7XG5cdFx0Y29uc3QgbmFtZSA9IHNvdXJjZVNwYWNlID09PSAnYW5zaTE2JyA/ICdhbnNpJyA6IHNvdXJjZVNwYWNlO1xuXHRcdGlmIChzb3VyY2VTcGFjZSA9PT0gdGFyZ2V0U3BhY2UpIHtcblx0XHRcdHN0eWxlc1tuYW1lXSA9IHdyYXAoaWRlbnRpdHksIG9mZnNldCk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2Ygc3VpdGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRzdHlsZXNbbmFtZV0gPSB3cmFwKHN1aXRlW3RhcmdldFNwYWNlXSwgb2Zmc2V0KTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gc3R5bGVzO1xufTtcblxuZnVuY3Rpb24gYXNzZW1ibGVTdHlsZXMoKSB7XG5cdGNvbnN0IGNvZGVzID0gbmV3IE1hcCgpO1xuXHRjb25zdCBzdHlsZXMgPSB7XG5cdFx0bW9kaWZpZXI6IHtcblx0XHRcdHJlc2V0OiBbMCwgMF0sXG5cdFx0XHQvLyAyMSBpc24ndCB3aWRlbHkgc3VwcG9ydGVkIGFuZCAyMiBkb2VzIHRoZSBzYW1lIHRoaW5nXG5cdFx0XHRib2xkOiBbMSwgMjJdLFxuXHRcdFx0ZGltOiBbMiwgMjJdLFxuXHRcdFx0aXRhbGljOiBbMywgMjNdLFxuXHRcdFx0dW5kZXJsaW5lOiBbNCwgMjRdLFxuXHRcdFx0aW52ZXJzZTogWzcsIDI3XSxcblx0XHRcdGhpZGRlbjogWzgsIDI4XSxcblx0XHRcdHN0cmlrZXRocm91Z2g6IFs5LCAyOV1cblx0XHR9LFxuXHRcdGNvbG9yOiB7XG5cdFx0XHRibGFjazogWzMwLCAzOV0sXG5cdFx0XHRyZWQ6IFszMSwgMzldLFxuXHRcdFx0Z3JlZW46IFszMiwgMzldLFxuXHRcdFx0eWVsbG93OiBbMzMsIDM5XSxcblx0XHRcdGJsdWU6IFszNCwgMzldLFxuXHRcdFx0bWFnZW50YTogWzM1LCAzOV0sXG5cdFx0XHRjeWFuOiBbMzYsIDM5XSxcblx0XHRcdHdoaXRlOiBbMzcsIDM5XSxcblxuXHRcdFx0Ly8gQnJpZ2h0IGNvbG9yXG5cdFx0XHRibGFja0JyaWdodDogWzkwLCAzOV0sXG5cdFx0XHRyZWRCcmlnaHQ6IFs5MSwgMzldLFxuXHRcdFx0Z3JlZW5CcmlnaHQ6IFs5MiwgMzldLFxuXHRcdFx0eWVsbG93QnJpZ2h0OiBbOTMsIDM5XSxcblx0XHRcdGJsdWVCcmlnaHQ6IFs5NCwgMzldLFxuXHRcdFx0bWFnZW50YUJyaWdodDogWzk1LCAzOV0sXG5cdFx0XHRjeWFuQnJpZ2h0OiBbOTYsIDM5XSxcblx0XHRcdHdoaXRlQnJpZ2h0OiBbOTcsIDM5XVxuXHRcdH0sXG5cdFx0YmdDb2xvcjoge1xuXHRcdFx0YmdCbGFjazogWzQwLCA0OV0sXG5cdFx0XHRiZ1JlZDogWzQxLCA0OV0sXG5cdFx0XHRiZ0dyZWVuOiBbNDIsIDQ5XSxcblx0XHRcdGJnWWVsbG93OiBbNDMsIDQ5XSxcblx0XHRcdGJnQmx1ZTogWzQ0LCA0OV0sXG5cdFx0XHRiZ01hZ2VudGE6IFs0NSwgNDldLFxuXHRcdFx0YmdDeWFuOiBbNDYsIDQ5XSxcblx0XHRcdGJnV2hpdGU6IFs0NywgNDldLFxuXG5cdFx0XHQvLyBCcmlnaHQgY29sb3Jcblx0XHRcdGJnQmxhY2tCcmlnaHQ6IFsxMDAsIDQ5XSxcblx0XHRcdGJnUmVkQnJpZ2h0OiBbMTAxLCA0OV0sXG5cdFx0XHRiZ0dyZWVuQnJpZ2h0OiBbMTAyLCA0OV0sXG5cdFx0XHRiZ1llbGxvd0JyaWdodDogWzEwMywgNDldLFxuXHRcdFx0YmdCbHVlQnJpZ2h0OiBbMTA0LCA0OV0sXG5cdFx0XHRiZ01hZ2VudGFCcmlnaHQ6IFsxMDUsIDQ5XSxcblx0XHRcdGJnQ3lhbkJyaWdodDogWzEwNiwgNDldLFxuXHRcdFx0YmdXaGl0ZUJyaWdodDogWzEwNywgNDldXG5cdFx0fVxuXHR9O1xuXG5cdC8vIEFsaWFzIGJyaWdodCBibGFjayBhcyBncmF5IChhbmQgZ3JleSlcblx0c3R5bGVzLmNvbG9yLmdyYXkgPSBzdHlsZXMuY29sb3IuYmxhY2tCcmlnaHQ7XG5cdHN0eWxlcy5iZ0NvbG9yLmJnR3JheSA9IHN0eWxlcy5iZ0NvbG9yLmJnQmxhY2tCcmlnaHQ7XG5cdHN0eWxlcy5jb2xvci5ncmV5ID0gc3R5bGVzLmNvbG9yLmJsYWNrQnJpZ2h0O1xuXHRzdHlsZXMuYmdDb2xvci5iZ0dyZXkgPSBzdHlsZXMuYmdDb2xvci5iZ0JsYWNrQnJpZ2h0O1xuXG5cdGZvciAoY29uc3QgW2dyb3VwTmFtZSwgZ3JvdXBdIG9mIE9iamVjdC5lbnRyaWVzKHN0eWxlcykpIHtcblx0XHRmb3IgKGNvbnN0IFtzdHlsZU5hbWUsIHN0eWxlXSBvZiBPYmplY3QuZW50cmllcyhncm91cCkpIHtcblx0XHRcdHN0eWxlc1tzdHlsZU5hbWVdID0ge1xuXHRcdFx0XHRvcGVuOiBgXFx1MDAxQlske3N0eWxlWzBdfW1gLFxuXHRcdFx0XHRjbG9zZTogYFxcdTAwMUJbJHtzdHlsZVsxXX1tYFxuXHRcdFx0fTtcblxuXHRcdFx0Z3JvdXBbc3R5bGVOYW1lXSA9IHN0eWxlc1tzdHlsZU5hbWVdO1xuXG5cdFx0XHRjb2Rlcy5zZXQoc3R5bGVbMF0sIHN0eWxlWzFdKTtcblx0XHR9XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3R5bGVzLCBncm91cE5hbWUsIHtcblx0XHRcdHZhbHVlOiBncm91cCxcblx0XHRcdGVudW1lcmFibGU6IGZhbHNlXG5cdFx0fSk7XG5cdH1cblxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3R5bGVzLCAnY29kZXMnLCB7XG5cdFx0dmFsdWU6IGNvZGVzLFxuXHRcdGVudW1lcmFibGU6IGZhbHNlXG5cdH0pO1xuXG5cdHN0eWxlcy5jb2xvci5jbG9zZSA9ICdcXHUwMDFCWzM5bSc7XG5cdHN0eWxlcy5iZ0NvbG9yLmNsb3NlID0gJ1xcdTAwMUJbNDltJztcblxuXHRzZXRMYXp5UHJvcGVydHkoc3R5bGVzLmNvbG9yLCAnYW5zaScsICgpID0+IG1ha2VEeW5hbWljU3R5bGVzKHdyYXBBbnNpMTYsICdhbnNpMTYnLCBhbnNpMmFuc2ksIGZhbHNlKSk7XG5cdHNldExhenlQcm9wZXJ0eShzdHlsZXMuY29sb3IsICdhbnNpMjU2JywgKCkgPT4gbWFrZUR5bmFtaWNTdHlsZXMod3JhcEFuc2kyNTYsICdhbnNpMjU2JywgYW5zaTJhbnNpLCBmYWxzZSkpO1xuXHRzZXRMYXp5UHJvcGVydHkoc3R5bGVzLmNvbG9yLCAnYW5zaTE2bScsICgpID0+IG1ha2VEeW5hbWljU3R5bGVzKHdyYXBBbnNpMTZtLCAncmdiJywgcmdiMnJnYiwgZmFsc2UpKTtcblx0c2V0TGF6eVByb3BlcnR5KHN0eWxlcy5iZ0NvbG9yLCAnYW5zaScsICgpID0+IG1ha2VEeW5hbWljU3R5bGVzKHdyYXBBbnNpMTYsICdhbnNpMTYnLCBhbnNpMmFuc2ksIHRydWUpKTtcblx0c2V0TGF6eVByb3BlcnR5KHN0eWxlcy5iZ0NvbG9yLCAnYW5zaTI1NicsICgpID0+IG1ha2VEeW5hbWljU3R5bGVzKHdyYXBBbnNpMjU2LCAnYW5zaTI1NicsIGFuc2kyYW5zaSwgdHJ1ZSkpO1xuXHRzZXRMYXp5UHJvcGVydHkoc3R5bGVzLmJnQ29sb3IsICdhbnNpMTZtJywgKCkgPT4gbWFrZUR5bmFtaWNTdHlsZXMod3JhcEFuc2kxNm0sICdyZ2InLCByZ2IycmdiLCB0cnVlKSk7XG5cblx0cmV0dXJuIHN0eWxlcztcbn1cblxuLy8gTWFrZSB0aGUgZXhwb3J0IGltbXV0YWJsZVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdGVudW1lcmFibGU6IHRydWUsXG5cdGdldDogYXNzZW1ibGVTdHlsZXNcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IHN0cmluZ1dpZHRoID0gcmVxdWlyZSgnc3RyaW5nLXdpZHRoJyk7XG5jb25zdCBzdHJpcEFuc2kgPSByZXF1aXJlKCdzdHJpcC1hbnNpJyk7XG5jb25zdCBhbnNpU3R5bGVzID0gcmVxdWlyZSgnYW5zaS1zdHlsZXMnKTtcblxuY29uc3QgRVNDQVBFUyA9IG5ldyBTZXQoW1xuXHQnXFx1MDAxQicsXG5cdCdcXHUwMDlCJ1xuXSk7XG5cbmNvbnN0IEVORF9DT0RFID0gMzk7XG5cbmNvbnN0IEFOU0lfRVNDQVBFX0JFTEwgPSAnXFx1MDAwNyc7XG5jb25zdCBBTlNJX0NTSSA9ICdbJztcbmNvbnN0IEFOU0lfT1NDID0gJ10nO1xuY29uc3QgQU5TSV9TR1JfVEVSTUlOQVRPUiA9ICdtJztcbmNvbnN0IEFOU0lfRVNDQVBFX0xJTksgPSBgJHtBTlNJX09TQ304OztgO1xuXG5jb25zdCB3cmFwQW5zaSA9IGNvZGUgPT4gYCR7RVNDQVBFUy52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHtBTlNJX0NTSX0ke2NvZGV9JHtBTlNJX1NHUl9URVJNSU5BVE9SfWA7XG5jb25zdCB3cmFwQW5zaUh5cGVybGluayA9IHVyaSA9PiBgJHtFU0NBUEVTLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke0FOU0lfRVNDQVBFX0xJTkt9JHt1cml9JHtBTlNJX0VTQ0FQRV9CRUxMfWA7XG5cbi8vIENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHdvcmRzIHNwbGl0IG9uICcgJywgaWdub3Jpbmdcbi8vIHRoZSBleHRyYSBjaGFyYWN0ZXJzIGFkZGVkIGJ5IGFuc2kgZXNjYXBlIGNvZGVzXG5jb25zdCB3b3JkTGVuZ3RocyA9IHN0cmluZyA9PiBzdHJpbmcuc3BsaXQoJyAnKS5tYXAoY2hhcmFjdGVyID0+IHN0cmluZ1dpZHRoKGNoYXJhY3RlcikpO1xuXG4vLyBXcmFwIGEgbG9uZyB3b3JkIGFjcm9zcyBtdWx0aXBsZSByb3dzXG4vLyBBbnNpIGVzY2FwZSBjb2RlcyBkbyBub3QgY291bnQgdG93YXJkcyBsZW5ndGhcbmNvbnN0IHdyYXBXb3JkID0gKHJvd3MsIHdvcmQsIGNvbHVtbnMpID0+IHtcblx0Y29uc3QgY2hhcmFjdGVycyA9IFsuLi53b3JkXTtcblxuXHRsZXQgaXNJbnNpZGVFc2NhcGUgPSBmYWxzZTtcblx0bGV0IGlzSW5zaWRlTGlua0VzY2FwZSA9IGZhbHNlO1xuXHRsZXQgdmlzaWJsZSA9IHN0cmluZ1dpZHRoKHN0cmlwQW5zaShyb3dzW3Jvd3MubGVuZ3RoIC0gMV0pKTtcblxuXHRmb3IgKGNvbnN0IFtpbmRleCwgY2hhcmFjdGVyXSBvZiBjaGFyYWN0ZXJzLmVudHJpZXMoKSkge1xuXHRcdGNvbnN0IGNoYXJhY3Rlckxlbmd0aCA9IHN0cmluZ1dpZHRoKGNoYXJhY3Rlcik7XG5cblx0XHRpZiAodmlzaWJsZSArIGNoYXJhY3Rlckxlbmd0aCA8PSBjb2x1bW5zKSB7XG5cdFx0XHRyb3dzW3Jvd3MubGVuZ3RoIC0gMV0gKz0gY2hhcmFjdGVyO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyb3dzLnB1c2goY2hhcmFjdGVyKTtcblx0XHRcdHZpc2libGUgPSAwO1xuXHRcdH1cblxuXHRcdGlmIChFU0NBUEVTLmhhcyhjaGFyYWN0ZXIpKSB7XG5cdFx0XHRpc0luc2lkZUVzY2FwZSA9IHRydWU7XG5cdFx0XHRpc0luc2lkZUxpbmtFc2NhcGUgPSBjaGFyYWN0ZXJzLnNsaWNlKGluZGV4ICsgMSkuam9pbignJykuc3RhcnRzV2l0aChBTlNJX0VTQ0FQRV9MSU5LKTtcblx0XHR9XG5cblx0XHRpZiAoaXNJbnNpZGVFc2NhcGUpIHtcblx0XHRcdGlmIChpc0luc2lkZUxpbmtFc2NhcGUpIHtcblx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PT0gQU5TSV9FU0NBUEVfQkVMTCkge1xuXHRcdFx0XHRcdGlzSW5zaWRlRXNjYXBlID0gZmFsc2U7XG5cdFx0XHRcdFx0aXNJbnNpZGVMaW5rRXNjYXBlID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBBTlNJX1NHUl9URVJNSU5BVE9SKSB7XG5cdFx0XHRcdGlzSW5zaWRlRXNjYXBlID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdHZpc2libGUgKz0gY2hhcmFjdGVyTGVuZ3RoO1xuXG5cdFx0aWYgKHZpc2libGUgPT09IGNvbHVtbnMgJiYgaW5kZXggPCBjaGFyYWN0ZXJzLmxlbmd0aCAtIDEpIHtcblx0XHRcdHJvd3MucHVzaCgnJyk7XG5cdFx0XHR2aXNpYmxlID0gMDtcblx0XHR9XG5cdH1cblxuXHQvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGxhc3Qgcm93IHdlIGNvcHkgb3ZlciBpcyBvbmx5XG5cdC8vIGFuc2kgZXNjYXBlIGNoYXJhY3RlcnMsIGhhbmRsZSB0aGlzIGVkZ2UtY2FzZVxuXHRpZiAoIXZpc2libGUgJiYgcm93c1tyb3dzLmxlbmd0aCAtIDFdLmxlbmd0aCA+IDAgJiYgcm93cy5sZW5ndGggPiAxKSB7XG5cdFx0cm93c1tyb3dzLmxlbmd0aCAtIDJdICs9IHJvd3MucG9wKCk7XG5cdH1cbn07XG5cbi8vIFRyaW1zIHNwYWNlcyBmcm9tIGEgc3RyaW5nIGlnbm9yaW5nIGludmlzaWJsZSBzZXF1ZW5jZXNcbmNvbnN0IHN0cmluZ1Zpc2libGVUcmltU3BhY2VzUmlnaHQgPSBzdHJpbmcgPT4ge1xuXHRjb25zdCB3b3JkcyA9IHN0cmluZy5zcGxpdCgnICcpO1xuXHRsZXQgbGFzdCA9IHdvcmRzLmxlbmd0aDtcblxuXHR3aGlsZSAobGFzdCA+IDApIHtcblx0XHRpZiAoc3RyaW5nV2lkdGgod29yZHNbbGFzdCAtIDFdKSA+IDApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGxhc3QtLTtcblx0fVxuXG5cdGlmIChsYXN0ID09PSB3b3Jkcy5sZW5ndGgpIHtcblx0XHRyZXR1cm4gc3RyaW5nO1xuXHR9XG5cblx0cmV0dXJuIHdvcmRzLnNsaWNlKDAsIGxhc3QpLmpvaW4oJyAnKSArIHdvcmRzLnNsaWNlKGxhc3QpLmpvaW4oJycpO1xufTtcblxuLy8gVGhlIHdyYXAtYW5zaSBtb2R1bGUgY2FuIGJlIGludm9rZWQgaW4gZWl0aGVyICdoYXJkJyBvciAnc29mdCcgd3JhcCBtb2RlXG4vL1xuLy8gJ2hhcmQnIHdpbGwgbmV2ZXIgYWxsb3cgYSBzdHJpbmcgdG8gdGFrZSB1cCBtb3JlIHRoYW4gY29sdW1ucyBjaGFyYWN0ZXJzXG4vL1xuLy8gJ3NvZnQnIGFsbG93cyBsb25nIHdvcmRzIHRvIGV4cGFuZCBwYXN0IHRoZSBjb2x1bW4gbGVuZ3RoXG5jb25zdCBleGVjID0gKHN0cmluZywgY29sdW1ucywgb3B0aW9ucyA9IHt9KSA9PiB7XG5cdGlmIChvcHRpb25zLnRyaW0gIT09IGZhbHNlICYmIHN0cmluZy50cmltKCkgPT09ICcnKSB7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0bGV0IHJldHVyblZhbHVlID0gJyc7XG5cdGxldCBlc2NhcGVDb2RlO1xuXHRsZXQgZXNjYXBlVXJsO1xuXG5cdGNvbnN0IGxlbmd0aHMgPSB3b3JkTGVuZ3RocyhzdHJpbmcpO1xuXHRsZXQgcm93cyA9IFsnJ107XG5cblx0Zm9yIChjb25zdCBbaW5kZXgsIHdvcmRdIG9mIHN0cmluZy5zcGxpdCgnICcpLmVudHJpZXMoKSkge1xuXHRcdGlmIChvcHRpb25zLnRyaW0gIT09IGZhbHNlKSB7XG5cdFx0XHRyb3dzW3Jvd3MubGVuZ3RoIC0gMV0gPSByb3dzW3Jvd3MubGVuZ3RoIC0gMV0udHJpbVN0YXJ0KCk7XG5cdFx0fVxuXG5cdFx0bGV0IHJvd0xlbmd0aCA9IHN0cmluZ1dpZHRoKHJvd3Nbcm93cy5sZW5ndGggLSAxXSk7XG5cblx0XHRpZiAoaW5kZXggIT09IDApIHtcblx0XHRcdGlmIChyb3dMZW5ndGggPj0gY29sdW1ucyAmJiAob3B0aW9ucy53b3JkV3JhcCA9PT0gZmFsc2UgfHwgb3B0aW9ucy50cmltID09PSBmYWxzZSkpIHtcblx0XHRcdFx0Ly8gSWYgd2Ugc3RhcnQgd2l0aCBhIG5ldyB3b3JkIGJ1dCB0aGUgY3VycmVudCByb3cgbGVuZ3RoIGVxdWFscyB0aGUgbGVuZ3RoIG9mIHRoZSBjb2x1bW5zLCBhZGQgYSBuZXcgcm93XG5cdFx0XHRcdHJvd3MucHVzaCgnJyk7XG5cdFx0XHRcdHJvd0xlbmd0aCA9IDA7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChyb3dMZW5ndGggPiAwIHx8IG9wdGlvbnMudHJpbSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0cm93c1tyb3dzLmxlbmd0aCAtIDFdICs9ICcgJztcblx0XHRcdFx0cm93TGVuZ3RoKys7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSW4gJ2hhcmQnIHdyYXAgbW9kZSwgdGhlIGxlbmd0aCBvZiBhIGxpbmUgaXMgbmV2ZXIgYWxsb3dlZCB0byBleHRlbmQgcGFzdCAnY29sdW1ucydcblx0XHRpZiAob3B0aW9ucy5oYXJkICYmIGxlbmd0aHNbaW5kZXhdID4gY29sdW1ucykge1xuXHRcdFx0Y29uc3QgcmVtYWluaW5nQ29sdW1ucyA9IChjb2x1bW5zIC0gcm93TGVuZ3RoKTtcblx0XHRcdGNvbnN0IGJyZWFrc1N0YXJ0aW5nVGhpc0xpbmUgPSAxICsgTWF0aC5mbG9vcigobGVuZ3Roc1tpbmRleF0gLSByZW1haW5pbmdDb2x1bW5zIC0gMSkgLyBjb2x1bW5zKTtcblx0XHRcdGNvbnN0IGJyZWFrc1N0YXJ0aW5nTmV4dExpbmUgPSBNYXRoLmZsb29yKChsZW5ndGhzW2luZGV4XSAtIDEpIC8gY29sdW1ucyk7XG5cdFx0XHRpZiAoYnJlYWtzU3RhcnRpbmdOZXh0TGluZSA8IGJyZWFrc1N0YXJ0aW5nVGhpc0xpbmUpIHtcblx0XHRcdFx0cm93cy5wdXNoKCcnKTtcblx0XHRcdH1cblxuXHRcdFx0d3JhcFdvcmQocm93cywgd29yZCwgY29sdW1ucyk7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRpZiAocm93TGVuZ3RoICsgbGVuZ3Roc1tpbmRleF0gPiBjb2x1bW5zICYmIHJvd0xlbmd0aCA+IDAgJiYgbGVuZ3Roc1tpbmRleF0gPiAwKSB7XG5cdFx0XHRpZiAob3B0aW9ucy53b3JkV3JhcCA9PT0gZmFsc2UgJiYgcm93TGVuZ3RoIDwgY29sdW1ucykge1xuXHRcdFx0XHR3cmFwV29yZChyb3dzLCB3b3JkLCBjb2x1bW5zKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHJvd3MucHVzaCgnJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHJvd0xlbmd0aCArIGxlbmd0aHNbaW5kZXhdID4gY29sdW1ucyAmJiBvcHRpb25zLndvcmRXcmFwID09PSBmYWxzZSkge1xuXHRcdFx0d3JhcFdvcmQocm93cywgd29yZCwgY29sdW1ucyk7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRyb3dzW3Jvd3MubGVuZ3RoIC0gMV0gKz0gd29yZDtcblx0fVxuXG5cdGlmIChvcHRpb25zLnRyaW0gIT09IGZhbHNlKSB7XG5cdFx0cm93cyA9IHJvd3MubWFwKHN0cmluZ1Zpc2libGVUcmltU3BhY2VzUmlnaHQpO1xuXHR9XG5cblx0Y29uc3QgcHJlID0gWy4uLnJvd3Muam9pbignXFxuJyldO1xuXG5cdGZvciAoY29uc3QgW2luZGV4LCBjaGFyYWN0ZXJdIG9mIHByZS5lbnRyaWVzKCkpIHtcblx0XHRyZXR1cm5WYWx1ZSArPSBjaGFyYWN0ZXI7XG5cblx0XHRpZiAoRVNDQVBFUy5oYXMoY2hhcmFjdGVyKSkge1xuXHRcdFx0Y29uc3Qge2dyb3Vwc30gPSBuZXcgUmVnRXhwKGAoPzpcXFxcJHtBTlNJX0NTSX0oPzxjb2RlPlxcXFxkKyltfFxcXFwke0FOU0lfRVNDQVBFX0xJTkt9KD88dXJpPi4qKSR7QU5TSV9FU0NBUEVfQkVMTH0pYCkuZXhlYyhwcmUuc2xpY2UoaW5kZXgpLmpvaW4oJycpKSB8fCB7Z3JvdXBzOiB7fX07XG5cdFx0XHRpZiAoZ3JvdXBzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjb25zdCBjb2RlID0gTnVtYmVyLnBhcnNlRmxvYXQoZ3JvdXBzLmNvZGUpO1xuXHRcdFx0XHRlc2NhcGVDb2RlID0gY29kZSA9PT0gRU5EX0NPREUgPyB1bmRlZmluZWQgOiBjb2RlO1xuXHRcdFx0fSBlbHNlIGlmIChncm91cHMudXJpICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0ZXNjYXBlVXJsID0gZ3JvdXBzLnVyaS5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiBncm91cHMudXJpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGNvZGUgPSBhbnNpU3R5bGVzLmNvZGVzLmdldChOdW1iZXIoZXNjYXBlQ29kZSkpO1xuXG5cdFx0aWYgKHByZVtpbmRleCArIDFdID09PSAnXFxuJykge1xuXHRcdFx0aWYgKGVzY2FwZVVybCkge1xuXHRcdFx0XHRyZXR1cm5WYWx1ZSArPSB3cmFwQW5zaUh5cGVybGluaygnJyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChlc2NhcGVDb2RlICYmIGNvZGUpIHtcblx0XHRcdFx0cmV0dXJuVmFsdWUgKz0gd3JhcEFuc2koY29kZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09ICdcXG4nKSB7XG5cdFx0XHRpZiAoZXNjYXBlQ29kZSAmJiBjb2RlKSB7XG5cdFx0XHRcdHJldHVyblZhbHVlICs9IHdyYXBBbnNpKGVzY2FwZUNvZGUpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZXNjYXBlVXJsKSB7XG5cdFx0XHRcdHJldHVyblZhbHVlICs9IHdyYXBBbnNpSHlwZXJsaW5rKGVzY2FwZVVybCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJldHVyblZhbHVlO1xufTtcblxuLy8gRm9yIGVhY2ggbmV3bGluZSwgaW52b2tlIHRoZSBtZXRob2Qgc2VwYXJhdGVseVxubW9kdWxlLmV4cG9ydHMgPSAoc3RyaW5nLCBjb2x1bW5zLCBvcHRpb25zKSA9PiB7XG5cdHJldHVybiBTdHJpbmcoc3RyaW5nKVxuXHRcdC5ub3JtYWxpemUoKVxuXHRcdC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpXG5cdFx0LnNwbGl0KCdcXG4nKVxuXHRcdC5tYXAobGluZSA9PiBleGVjKGxpbmUsIGNvbHVtbnMsIG9wdGlvbnMpKVxuXHRcdC5qb2luKCdcXG4nKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBhbGlnbiA9IHtcbiAgICByaWdodDogYWxpZ25SaWdodCxcbiAgICBjZW50ZXI6IGFsaWduQ2VudGVyXG59O1xuY29uc3QgdG9wID0gMDtcbmNvbnN0IHJpZ2h0ID0gMTtcbmNvbnN0IGJvdHRvbSA9IDI7XG5jb25zdCBsZWZ0ID0gMztcbmNsYXNzIFVJIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdGhpcy53aWR0aCA9IG9wdHMud2lkdGg7XG4gICAgICAgIHRoaXMud3JhcCA9IChfYSA9IG9wdHMud3JhcCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgfVxuICAgIHNwYW4oLi4uYXJncykge1xuICAgICAgICBjb25zdCBjb2xzID0gdGhpcy5kaXYoLi4uYXJncyk7XG4gICAgICAgIGNvbHMuc3BhbiA9IHRydWU7XG4gICAgfVxuICAgIHJlc2V0T3V0cHV0KCkge1xuICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICB9XG4gICAgZGl2KC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmRpdignJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMud3JhcCAmJiB0aGlzLnNob3VsZEFwcGx5TGF5b3V0RFNMKC4uLmFyZ3MpICYmIHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMYXlvdXREU0woYXJnc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29scyA9IGFyZ3MubWFwKGFyZyA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xGcm9tU3RyaW5nKGFyZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXJnO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3dzLnB1c2goY29scyk7XG4gICAgICAgIHJldHVybiBjb2xzO1xuICAgIH1cbiAgICBzaG91bGRBcHBseUxheW91dERTTCguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIC9bXFx0XFxuXS8udGVzdChhcmdzWzBdKTtcbiAgICB9XG4gICAgYXBwbHlMYXlvdXREU0woc3RyKSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChyb3cgPT4gcm93LnNwbGl0KCdcXHQnKSk7XG4gICAgICAgIGxldCBsZWZ0Q29sdW1uV2lkdGggPSAwO1xuICAgICAgICAvLyBzaW1wbGUgaGV1cmlzdGljIGZvciBsYXlvdXQsIG1ha2Ugc3VyZSB0aGVcbiAgICAgICAgLy8gc2Vjb25kIGNvbHVtbiBsaW5lcyB1cCBhbG9uZyB0aGUgbGVmdC1oYW5kLlxuICAgICAgICAvLyBkb24ndCBhbGxvdyB0aGUgZmlyc3QgY29sdW1uIHRvIHRha2UgdXAgbW9yZVxuICAgICAgICAvLyB0aGFuIDUwJSBvZiB0aGUgc2NyZWVuLlxuICAgICAgICByb3dzLmZvckVhY2goY29sdW1ucyA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAxICYmIG1peGluLnN0cmluZ1dpZHRoKGNvbHVtbnNbMF0pID4gbGVmdENvbHVtbldpZHRoKSB7XG4gICAgICAgICAgICAgICAgbGVmdENvbHVtbldpZHRoID0gTWF0aC5taW4oTWF0aC5mbG9vcih0aGlzLndpZHRoICogMC41KSwgbWl4aW4uc3RyaW5nV2lkdGgoY29sdW1uc1swXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZ2VuZXJhdGUgYSB0YWJsZTpcbiAgICAgICAgLy8gIHJlcGxhY2luZyAnICcgd2l0aCBwYWRkaW5nIGNhbGN1bGF0aW9ucy5cbiAgICAgICAgLy8gIHVzaW5nIHRoZSBhbGdvcml0aG1pY2FsbHkgZ2VuZXJhdGVkIHdpZHRoLlxuICAgICAgICByb3dzLmZvckVhY2goY29sdW1ucyA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpdiguLi5jb2x1bW5zLm1hcCgociwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHIudHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB0aGlzLm1lYXN1cmVQYWRkaW5nKHIpLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogKGkgPT09IDAgJiYgY29sdW1ucy5sZW5ndGggPiAxKSA/IGxlZnRDb2x1bW5XaWR0aCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dzW3RoaXMucm93cy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgY29sRnJvbVN0cmluZyh0ZXh0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgcGFkZGluZzogdGhpcy5tZWFzdXJlUGFkZGluZyh0ZXh0KVxuICAgICAgICB9O1xuICAgIH1cbiAgICBtZWFzdXJlUGFkZGluZyhzdHIpIHtcbiAgICAgICAgLy8gbWVhc3VyZSBwYWRkaW5nIHdpdGhvdXQgYW5zaSBlc2NhcGUgY29kZXNcbiAgICAgICAgY29uc3Qgbm9BbnNpID0gbWl4aW4uc3RyaXBBbnNpKHN0cik7XG4gICAgICAgIHJldHVybiBbMCwgbm9BbnNpLm1hdGNoKC9cXHMqJC8pWzBdLmxlbmd0aCwgMCwgbm9BbnNpLm1hdGNoKC9eXFxzKi8pWzBdLmxlbmd0aF07XG4gICAgfVxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgICAgICB0aGlzLnJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3dUb1N0cmluZyhyb3csIGxpbmVzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGRvbid0IGRpc3BsYXkgYW55IGxpbmVzIHdpdGggdGhlXG4gICAgICAgIC8vIGhpZGRlbiBmbGFnIHNldC5cbiAgICAgICAgcmV0dXJuIGxpbmVzXG4gICAgICAgICAgICAuZmlsdGVyKGxpbmUgPT4gIWxpbmUuaGlkZGVuKVxuICAgICAgICAgICAgLm1hcChsaW5lID0+IGxpbmUudGV4dClcbiAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgcm93VG9TdHJpbmcocm93LCBsaW5lcykge1xuICAgICAgICB0aGlzLnJhc3Rlcml6ZShyb3cpLmZvckVhY2goKHJyb3csIHIpID0+IHtcbiAgICAgICAgICAgIGxldCBzdHIgPSAnJztcbiAgICAgICAgICAgIHJyb3cuZm9yRWFjaCgoY29sLCBjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gcm93W2NdOyAvLyB0aGUgd2lkdGggd2l0aCBwYWRkaW5nLlxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBXaWR0aCA9IHRoaXMubmVnYXRlUGFkZGluZyhyb3dbY10pOyAvLyB0aGUgd2lkdGggd2l0aG91dCBwYWRkaW5nLlxuICAgICAgICAgICAgICAgIGxldCB0cyA9IGNvbDsgLy8gdGVtcG9yYXJ5IHN0cmluZyB1c2VkIGR1cmluZyBhbGlnbm1lbnQvcGFkZGluZy5cbiAgICAgICAgICAgICAgICBpZiAod3JhcFdpZHRoID4gbWl4aW4uc3RyaW5nV2lkdGgoY29sKSkge1xuICAgICAgICAgICAgICAgICAgICB0cyArPSAnICcucmVwZWF0KHdyYXBXaWR0aCAtIG1peGluLnN0cmluZ1dpZHRoKGNvbCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBhbGlnbiB0aGUgc3RyaW5nIHdpdGhpbiBpdHMgY29sdW1uLlxuICAgICAgICAgICAgICAgIGlmIChyb3dbY10uYWxpZ24gJiYgcm93W2NdLmFsaWduICE9PSAnbGVmdCcgJiYgdGhpcy53cmFwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZuID0gYWxpZ25bcm93W2NdLmFsaWduXTtcbiAgICAgICAgICAgICAgICAgICAgdHMgPSBmbih0cywgd3JhcFdpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1peGluLnN0cmluZ1dpZHRoKHRzKSA8IHdyYXBXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHMgKz0gJyAnLnJlcGVhdCgod2lkdGggfHwgMCkgLSBtaXhpbi5zdHJpbmdXaWR0aCh0cykgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBhcHBseSBib3JkZXIgYW5kIHBhZGRpbmcgdG8gc3RyaW5nLlxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZGRpbmcgPSByb3dbY10ucGFkZGluZyB8fCBbMCwgMCwgMCwgMF07XG4gICAgICAgICAgICAgICAgaWYgKHBhZGRpbmdbbGVmdF0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyICs9ICcgJy5yZXBlYXQocGFkZGluZ1tsZWZ0XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ciArPSBhZGRCb3JkZXIocm93W2NdLCB0cywgJ3wgJyk7XG4gICAgICAgICAgICAgICAgc3RyICs9IHRzO1xuICAgICAgICAgICAgICAgIHN0ciArPSBhZGRCb3JkZXIocm93W2NdLCB0cywgJyB8Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHBhZGRpbmdbcmlnaHRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ciArPSAnICcucmVwZWF0KHBhZGRpbmdbcmlnaHRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaWYgcHJpb3Igcm93IGlzIHNwYW4sIHRyeSB0byByZW5kZXIgdGhlXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCByb3cgb24gdGhlIHByaW9yIGxpbmUuXG4gICAgICAgICAgICAgICAgaWYgKHIgPT09IDAgJiYgbGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdHIgPSB0aGlzLnJlbmRlcklubGluZShzdHIsIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlLlxuICAgICAgICAgICAgbGluZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgdGV4dDogc3RyLnJlcGxhY2UoLyArJC8sICcnKSxcbiAgICAgICAgICAgICAgICBzcGFuOiByb3cuc3BhblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgfVxuICAgIC8vIGlmIHRoZSBmdWxsICdzb3VyY2UnIGNhbiByZW5kZXIgaW5cbiAgICAvLyB0aGUgdGFyZ2V0IGxpbmUsIGRvIHNvLlxuICAgIHJlbmRlcklubGluZShzb3VyY2UsIHByZXZpb3VzTGluZSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHNvdXJjZS5tYXRjaCgvXiAqLyk7XG4gICAgICAgIGNvbnN0IGxlYWRpbmdXaGl0ZXNwYWNlID0gbWF0Y2ggPyBtYXRjaFswXS5sZW5ndGggOiAwO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBwcmV2aW91c0xpbmUudGV4dDtcbiAgICAgICAgY29uc3QgdGFyZ2V0VGV4dFdpZHRoID0gbWl4aW4uc3RyaW5nV2lkdGgodGFyZ2V0LnRyaW1SaWdodCgpKTtcbiAgICAgICAgaWYgKCFwcmV2aW91c0xpbmUuc3Bhbikge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB3ZSdyZSBub3QgYXBwbHlpbmcgd3JhcHBpbmcgbG9naWMsXG4gICAgICAgIC8vIGp1c3QgYWx3YXlzIGFwcGVuZCB0byB0aGUgc3Bhbi5cbiAgICAgICAgaWYgKCF0aGlzLndyYXApIHtcbiAgICAgICAgICAgIHByZXZpb3VzTGluZS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldCArIHNvdXJjZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGVhZGluZ1doaXRlc3BhY2UgPCB0YXJnZXRUZXh0V2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cbiAgICAgICAgcHJldmlvdXNMaW5lLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIHJldHVybiB0YXJnZXQudHJpbVJpZ2h0KCkgKyAnICcucmVwZWF0KGxlYWRpbmdXaGl0ZXNwYWNlIC0gdGFyZ2V0VGV4dFdpZHRoKSArIHNvdXJjZS50cmltTGVmdCgpO1xuICAgIH1cbiAgICByYXN0ZXJpemUocm93KSB7XG4gICAgICAgIGNvbnN0IHJyb3dzID0gW107XG4gICAgICAgIGNvbnN0IHdpZHRocyA9IHRoaXMuY29sdW1uV2lkdGhzKHJvdyk7XG4gICAgICAgIGxldCB3cmFwcGVkO1xuICAgICAgICAvLyB3b3JkIHdyYXAgYWxsIGNvbHVtbnMsIGFuZCBjcmVhdGVcbiAgICAgICAgLy8gYSBkYXRhLXN0cnVjdHVyZSB0aGF0IGlzIGVhc3kgdG8gcmFzdGVyaXplLlxuICAgICAgICByb3cuZm9yRWFjaCgoY29sLCBjKSA9PiB7XG4gICAgICAgICAgICAvLyBsZWF2ZSByb29tIGZvciBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuICAgICAgICAgICAgY29sLndpZHRoID0gd2lkdGhzW2NdO1xuICAgICAgICAgICAgaWYgKHRoaXMud3JhcCkge1xuICAgICAgICAgICAgICAgIHdyYXBwZWQgPSBtaXhpbi53cmFwKGNvbC50ZXh0LCB0aGlzLm5lZ2F0ZVBhZGRpbmcoY29sKSwgeyBoYXJkOiB0cnVlIH0pLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHdyYXBwZWQgPSBjb2wudGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sLmJvcmRlcikge1xuICAgICAgICAgICAgICAgIHdyYXBwZWQudW5zaGlmdCgnLicgKyAnLScucmVwZWF0KHRoaXMubmVnYXRlUGFkZGluZyhjb2wpICsgMikgKyAnLicpO1xuICAgICAgICAgICAgICAgIHdyYXBwZWQucHVzaChcIidcIiArICctJy5yZXBlYXQodGhpcy5uZWdhdGVQYWRkaW5nKGNvbCkgKyAyKSArIFwiJ1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGFkZCB0b3AgYW5kIGJvdHRvbSBwYWRkaW5nLlxuICAgICAgICAgICAgaWYgKGNvbC5wYWRkaW5nKSB7XG4gICAgICAgICAgICAgICAgd3JhcHBlZC51bnNoaWZ0KC4uLm5ldyBBcnJheShjb2wucGFkZGluZ1t0b3BdIHx8IDApLmZpbGwoJycpKTtcbiAgICAgICAgICAgICAgICB3cmFwcGVkLnB1c2goLi4ubmV3IEFycmF5KGNvbC5wYWRkaW5nW2JvdHRvbV0gfHwgMCkuZmlsbCgnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JhcHBlZC5mb3JFYWNoKChzdHIsIHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJyb3dzW3JdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJyb3dzLnB1c2goW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBycm93ID0gcnJvd3Nbcl07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJyb3dbaV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcnJvdy5wdXNoKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBycm93LnB1c2goc3RyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJyb3dzO1xuICAgIH1cbiAgICBuZWdhdGVQYWRkaW5nKGNvbCkge1xuICAgICAgICBsZXQgd3JhcFdpZHRoID0gY29sLndpZHRoIHx8IDA7XG4gICAgICAgIGlmIChjb2wucGFkZGluZykge1xuICAgICAgICAgICAgd3JhcFdpZHRoIC09IChjb2wucGFkZGluZ1tsZWZ0XSB8fCAwKSArIChjb2wucGFkZGluZ1tyaWdodF0gfHwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbC5ib3JkZXIpIHtcbiAgICAgICAgICAgIHdyYXBXaWR0aCAtPSA0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3cmFwV2lkdGg7XG4gICAgfVxuICAgIGNvbHVtbldpZHRocyhyb3cpIHtcbiAgICAgICAgaWYgKCF0aGlzLndyYXApIHtcbiAgICAgICAgICAgIHJldHVybiByb3cubWFwKGNvbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbC53aWR0aCB8fCBtaXhpbi5zdHJpbmdXaWR0aChjb2wudGV4dCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdW5zZXQgPSByb3cubGVuZ3RoO1xuICAgICAgICBsZXQgcmVtYWluaW5nV2lkdGggPSB0aGlzLndpZHRoO1xuICAgICAgICAvLyBjb2x1bW4gd2lkdGhzIGNhbiBiZSBzZXQgaW4gY29uZmlnLlxuICAgICAgICBjb25zdCB3aWR0aHMgPSByb3cubWFwKGNvbCA9PiB7XG4gICAgICAgICAgICBpZiAoY29sLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgdW5zZXQtLTtcbiAgICAgICAgICAgICAgICByZW1haW5pbmdXaWR0aCAtPSBjb2wud2lkdGg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbC53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBhbnkgdW5zZXQgd2lkdGhzIHNob3VsZCBiZSBjYWxjdWxhdGVkLlxuICAgICAgICBjb25zdCB1bnNldFdpZHRoID0gdW5zZXQgPyBNYXRoLmZsb29yKHJlbWFpbmluZ1dpZHRoIC8gdW5zZXQpIDogMDtcbiAgICAgICAgcmV0dXJuIHdpZHRocy5tYXAoKHcsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh3ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodW5zZXRXaWR0aCwgX21pbldpZHRoKHJvd1tpXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHc7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZEJvcmRlcihjb2wsIHRzLCBzdHlsZSkge1xuICAgIGlmIChjb2wuYm9yZGVyKSB7XG4gICAgICAgIGlmICgvWy4nXS0rWy4nXS8udGVzdCh0cykpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHMudHJpbSgpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnICAnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59XG4vLyBjYWxjdWxhdGVzIHRoZSBtaW5pbXVtIHdpZHRoIG9mXG4vLyBhIGNvbHVtbiwgYmFzZWQgb24gcGFkZGluZyBwcmVmZXJlbmNlcy5cbmZ1bmN0aW9uIF9taW5XaWR0aChjb2wpIHtcbiAgICBjb25zdCBwYWRkaW5nID0gY29sLnBhZGRpbmcgfHwgW107XG4gICAgY29uc3QgbWluV2lkdGggPSAxICsgKHBhZGRpbmdbbGVmdF0gfHwgMCkgKyAocGFkZGluZ1tyaWdodF0gfHwgMCk7XG4gICAgaWYgKGNvbC5ib3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIG1pbldpZHRoICsgNDtcbiAgICB9XG4gICAgcmV0dXJuIG1pbldpZHRoO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93V2lkdGgoKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRlcGVuZHMgb24gdGVybWluYWwgKi9cbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmIHByb2Nlc3Muc3Rkb3V0ICYmIHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnM7XG4gICAgfVxuICAgIHJldHVybiA4MDtcbn1cbmZ1bmN0aW9uIGFsaWduUmlnaHQoc3RyLCB3aWR0aCkge1xuICAgIHN0ciA9IHN0ci50cmltKCk7XG4gICAgY29uc3Qgc3RyV2lkdGggPSBtaXhpbi5zdHJpbmdXaWR0aChzdHIpO1xuICAgIGlmIChzdHJXaWR0aCA8IHdpZHRoKSB7XG4gICAgICAgIHJldHVybiAnICcucmVwZWF0KHdpZHRoIC0gc3RyV2lkdGgpICsgc3RyO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufVxuZnVuY3Rpb24gYWxpZ25DZW50ZXIoc3RyLCB3aWR0aCkge1xuICAgIHN0ciA9IHN0ci50cmltKCk7XG4gICAgY29uc3Qgc3RyV2lkdGggPSBtaXhpbi5zdHJpbmdXaWR0aChzdHIpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHN0cldpZHRoID49IHdpZHRoKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIHJldHVybiAnICcucmVwZWF0KCh3aWR0aCAtIHN0cldpZHRoKSA+PiAxKSArIHN0cjtcbn1cbmxldCBtaXhpbjtcbmZ1bmN0aW9uIGNsaXVpKG9wdHMsIF9taXhpbikge1xuICAgIG1peGluID0gX21peGluO1xuICAgIHJldHVybiBuZXcgVUkoe1xuICAgICAgICB3aWR0aDogKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy53aWR0aCkgfHwgZ2V0V2luZG93V2lkdGgoKSxcbiAgICAgICAgd3JhcDogb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLndyYXBcbiAgICB9KTtcbn1cblxuLy8gQm9vdHN0cmFwIGNsaXVpIHdpdGggQ29tbW9uSlMgZGVwZW5kZW5jaWVzOlxuY29uc3Qgc3RyaW5nV2lkdGggPSByZXF1aXJlKCdzdHJpbmctd2lkdGgnKTtcbmNvbnN0IHN0cmlwQW5zaSA9IHJlcXVpcmUoJ3N0cmlwLWFuc2knKTtcbmNvbnN0IHdyYXAgPSByZXF1aXJlKCd3cmFwLWFuc2knKTtcbmZ1bmN0aW9uIHVpKG9wdHMpIHtcbiAgICByZXR1cm4gY2xpdWkob3B0cywge1xuICAgICAgICBzdHJpbmdXaWR0aCxcbiAgICAgICAgc3RyaXBBbnNpLFxuICAgICAgICB3cmFwXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdWk7XG4iLCAiY29uc3QgeyBkaXJuYW1lLCByZXNvbHZlIH0gPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB7IHJlYWRkaXJTeW5jLCBzdGF0U3luYyB9ID0gcmVxdWlyZSgnZnMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RhcnQsIGNhbGxiYWNrKSB7XG5cdGxldCBkaXIgPSByZXNvbHZlKCcuJywgc3RhcnQpO1xuXHRsZXQgdG1wLCBzdGF0cyA9IHN0YXRTeW5jKGRpcik7XG5cblx0aWYgKCFzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG5cdFx0ZGlyID0gZGlybmFtZShkaXIpO1xuXHR9XG5cblx0d2hpbGUgKHRydWUpIHtcblx0XHR0bXAgPSBjYWxsYmFjayhkaXIsIHJlYWRkaXJTeW5jKGRpcikpO1xuXHRcdGlmICh0bXApIHJldHVybiByZXNvbHZlKGRpciwgdG1wKTtcblx0XHRkaXIgPSBkaXJuYW1lKHRtcCA9IGRpcik7XG5cdFx0aWYgKHRtcCA9PT0gZGlyKSBicmVhaztcblx0fVxufVxuIiwgbnVsbCwgIid1c2Ugc3RyaWN0JztcblxudmFyIGZzID0gcmVxdWlyZSgnZnMnKSxcbiAgam9pbiA9IHJlcXVpcmUoJ3BhdGgnKS5qb2luLFxuICByZXNvbHZlID0gcmVxdWlyZSgncGF0aCcpLnJlc29sdmUsXG4gIGRpcm5hbWUgPSByZXF1aXJlKCdwYXRoJykuZGlybmFtZSxcbiAgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgZXh0ZW5zaW9uczogWydqcycsICdqc29uJywgJ2NvZmZlZSddLFxuICAgIHJlY3Vyc2U6IHRydWUsXG4gICAgcmVuYW1lOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfSxcbiAgICB2aXNpdDogZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gIH07XG5cbmZ1bmN0aW9uIGNoZWNrRmlsZUluY2x1c2lvbihwYXRoLCBmaWxlbmFtZSwgb3B0aW9ucykge1xuICByZXR1cm4gKFxuICAgIC8vIHZlcmlmeSBmaWxlIGhhcyB2YWxpZCBleHRlbnNpb25cbiAgICAobmV3IFJlZ0V4cCgnXFxcXC4oJyArIG9wdGlvbnMuZXh0ZW5zaW9ucy5qb2luKCd8JykgKyAnKSQnLCAnaScpLnRlc3QoZmlsZW5hbWUpKSAmJlxuXG4gICAgLy8gaWYgb3B0aW9ucy5pbmNsdWRlIGlzIGEgUmVnRXhwLCBldmFsdWF0ZSBpdCBhbmQgbWFrZSBzdXJlIHRoZSBwYXRoIHBhc3Nlc1xuICAgICEob3B0aW9ucy5pbmNsdWRlICYmIG9wdGlvbnMuaW5jbHVkZSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiAhb3B0aW9ucy5pbmNsdWRlLnRlc3QocGF0aCkpICYmXG5cbiAgICAvLyBpZiBvcHRpb25zLmluY2x1ZGUgaXMgYSBmdW5jdGlvbiwgZXZhbHVhdGUgaXQgYW5kIG1ha2Ugc3VyZSB0aGUgcGF0aCBwYXNzZXNcbiAgICAhKG9wdGlvbnMuaW5jbHVkZSAmJiB0eXBlb2Ygb3B0aW9ucy5pbmNsdWRlID09PSAnZnVuY3Rpb24nICYmICFvcHRpb25zLmluY2x1ZGUocGF0aCwgZmlsZW5hbWUpKSAmJlxuXG4gICAgLy8gaWYgb3B0aW9ucy5leGNsdWRlIGlzIGEgUmVnRXhwLCBldmFsdWF0ZSBpdCBhbmQgbWFrZSBzdXJlIHRoZSBwYXRoIGRvZXNuJ3QgcGFzc1xuICAgICEob3B0aW9ucy5leGNsdWRlICYmIG9wdGlvbnMuZXhjbHVkZSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiBvcHRpb25zLmV4Y2x1ZGUudGVzdChwYXRoKSkgJiZcblxuICAgIC8vIGlmIG9wdGlvbnMuZXhjbHVkZSBpcyBhIGZ1bmN0aW9uLCBldmFsdWF0ZSBpdCBhbmQgbWFrZSBzdXJlIHRoZSBwYXRoIGRvZXNuJ3QgcGFzc1xuICAgICEob3B0aW9ucy5leGNsdWRlICYmIHR5cGVvZiBvcHRpb25zLmV4Y2x1ZGUgPT09ICdmdW5jdGlvbicgJiYgb3B0aW9ucy5leGNsdWRlKHBhdGgsIGZpbGVuYW1lKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVxdWlyZURpcmVjdG9yeShtLCBwYXRoLCBvcHRpb25zKSB7XG4gIHZhciByZXR2YWwgPSB7fTtcblxuICAvLyBwYXRoIGlzIG9wdGlvbmFsXG4gIGlmIChwYXRoICYmICFvcHRpb25zICYmIHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgIG9wdGlvbnMgPSBwYXRoO1xuICAgIHBhdGggPSBudWxsO1xuICB9XG5cbiAgLy8gZGVmYXVsdCBvcHRpb25zXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKHZhciBwcm9wIGluIGRlZmF1bHRPcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zW3Byb3BdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgb3B0aW9uc1twcm9wXSA9IGRlZmF1bHRPcHRpb25zW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIG5vIHBhdGggd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoZSBlcXVpdmVsYW50IG9mIF9fZGlybmFtZSBmcm9tIGNhbGxlclxuICAvLyBvdGhlcndpc2UsIHJlc29sdmUgcGF0aCByZWxhdGl2ZSB0byB0aGUgZXF1aXZhbGVudCBvZiBfX2Rpcm5hbWVcbiAgcGF0aCA9ICFwYXRoID8gZGlybmFtZShtLmZpbGVuYW1lKSA6IHJlc29sdmUoZGlybmFtZShtLmZpbGVuYW1lKSwgcGF0aCk7XG5cbiAgLy8gZ2V0IHRoZSBwYXRoIG9mIGVhY2ggZmlsZSBpbiBzcGVjaWZpZWQgZGlyZWN0b3J5LCBhcHBlbmQgdG8gY3VycmVudCB0cmVlIG5vZGUsIHJlY3Vyc2VcbiAgZnMucmVhZGRpclN5bmMocGF0aCkuZm9yRWFjaChmdW5jdGlvbiAoZmlsZW5hbWUpIHtcbiAgICB2YXIgam9pbmVkID0gam9pbihwYXRoLCBmaWxlbmFtZSksXG4gICAgICBmaWxlcyxcbiAgICAgIGtleSxcbiAgICAgIG9iajtcblxuICAgIGlmIChmcy5zdGF0U3luYyhqb2luZWQpLmlzRGlyZWN0b3J5KCkgJiYgb3B0aW9ucy5yZWN1cnNlKSB7XG4gICAgICAvLyB0aGlzIG5vZGUgaXMgYSBkaXJlY3Rvcnk7IHJlY3Vyc2VcbiAgICAgIGZpbGVzID0gcmVxdWlyZURpcmVjdG9yeShtLCBqb2luZWQsIG9wdGlvbnMpO1xuICAgICAgLy8gZXhjbHVkZSBlbXB0eSBkaXJlY3Rvcmllc1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGZpbGVzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dmFsW29wdGlvbnMucmVuYW1lKGZpbGVuYW1lLCBqb2luZWQsIGZpbGVuYW1lKV0gPSBmaWxlcztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGpvaW5lZCAhPT0gbS5maWxlbmFtZSAmJiBjaGVja0ZpbGVJbmNsdXNpb24oam9pbmVkLCBmaWxlbmFtZSwgb3B0aW9ucykpIHtcbiAgICAgICAgLy8gaGFzaCBub2RlIGtleSBzaG91bGRuJ3QgaW5jbHVkZSBmaWxlIGV4dGVuc2lvblxuICAgICAgICBrZXkgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKSk7XG4gICAgICAgIG9iaiA9IG0ucmVxdWlyZShqb2luZWQpO1xuICAgICAgICByZXR2YWxbb3B0aW9ucy5yZW5hbWUoa2V5LCBqb2luZWQsIGZpbGVuYW1lKV0gPSBvcHRpb25zLnZpc2l0KG9iaiwgam9pbmVkLCBmaWxlbmFtZSkgfHwgb2JqO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJldHZhbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlRGlyZWN0b3J5O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdHMgPSBkZWZhdWx0T3B0aW9ucztcbiIsICJcInVzZSBzdHJpY3RcIjt2YXIgdD1yZXF1aXJlKFwiYXNzZXJ0XCIpO2NsYXNzIGUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0fHxcInlhcmdzIGVycm9yXCIpLHRoaXMubmFtZT1cIllFcnJvclwiLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGUpfX1sZXQgcyxpPVtdO2Z1bmN0aW9uIG4odCxvLGEsaCl7cz1oO2xldCBsPXt9O2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LFwiZXh0ZW5kc1wiKSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQuZXh0ZW5kcylyZXR1cm4gbDtjb25zdCByPS9cXC5qc29ufFxcLi4qcmMkLy50ZXN0KHQuZXh0ZW5kcyk7bGV0IGg9bnVsbDtpZihyKWg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcy5wYXRoLnJlc29sdmUodCxlKX0obyx0LmV4dGVuZHMpO2Vsc2UgdHJ5e2g9cmVxdWlyZS5yZXNvbHZlKHQuZXh0ZW5kcyl9Y2F0Y2goZSl7cmV0dXJuIHR9IWZ1bmN0aW9uKHQpe2lmKGkuaW5kZXhPZih0KT4tMSl0aHJvdyBuZXcgZShgQ2lyY3VsYXIgZXh0ZW5kZWQgY29uZmlndXJhdGlvbnM6ICcke3R9Jy5gKX0oaCksaS5wdXNoKGgpLGw9cj9KU09OLnBhcnNlKHMucmVhZEZpbGVTeW5jKGgsXCJ1dGY4XCIpKTpyZXF1aXJlKHQuZXh0ZW5kcyksZGVsZXRlIHQuZXh0ZW5kcyxsPW4obCxzLnBhdGguZGlybmFtZShoKSxhLHMpfXJldHVybiBpPVtdLGE/cihsLHQpOk9iamVjdC5hc3NpZ24oe30sbCx0KX1mdW5jdGlvbiByKHQsZSl7Y29uc3Qgcz17fTtmdW5jdGlvbiBpKHQpe3JldHVybiB0JiZcIm9iamVjdFwiPT10eXBlb2YgdCYmIUFycmF5LmlzQXJyYXkodCl9T2JqZWN0LmFzc2lnbihzLHQpO2Zvcihjb25zdCBuIG9mIE9iamVjdC5rZXlzKGUpKWkoZVtuXSkmJmkoc1tuXSk/c1tuXT1yKHRbbl0sZVtuXSk6c1tuXT1lW25dO3JldHVybiBzfWZ1bmN0aW9uIG8odCl7Y29uc3QgZT10LnJlcGxhY2UoL1xcc3syLH0vZyxcIiBcIikuc3BsaXQoL1xccysoPyFbXltdKl18W148XSo+KS8pLHM9L1xcLipbXFxdWzw+XS9nLGk9ZS5zaGlmdCgpO2lmKCFpKXRocm93IG5ldyBFcnJvcihgTm8gY29tbWFuZCBmb3VuZCBpbjogJHt0fWApO2NvbnN0IG49e2NtZDppLnJlcGxhY2UocyxcIlwiKSxkZW1hbmRlZDpbXSxvcHRpb25hbDpbXX07cmV0dXJuIGUuZm9yRWFjaCgoKHQsaSk9PntsZXQgcj0hMTt0PXQucmVwbGFjZSgvXFxzL2csXCJcIiksL1xcLitbXFxdPl0vLnRlc3QodCkmJmk9PT1lLmxlbmd0aC0xJiYocj0hMCksL15cXFsvLnRlc3QodCk/bi5vcHRpb25hbC5wdXNoKHtjbWQ6dC5yZXBsYWNlKHMsXCJcIikuc3BsaXQoXCJ8XCIpLHZhcmlhZGljOnJ9KTpuLmRlbWFuZGVkLnB1c2goe2NtZDp0LnJlcGxhY2UocyxcIlwiKS5zcGxpdChcInxcIiksdmFyaWFkaWM6cn0pfSkpLG59Y29uc3QgYT1bXCJmaXJzdFwiLFwic2Vjb25kXCIsXCJ0aGlyZFwiLFwiZm91cnRoXCIsXCJmaWZ0aFwiLFwic2l4dGhcIl07ZnVuY3Rpb24gaCh0LHMsaSl7dHJ5e2xldCBuPTA7Y29uc3RbcixhLGhdPVwib2JqZWN0XCI9PXR5cGVvZiB0P1t7ZGVtYW5kZWQ6W10sb3B0aW9uYWw6W119LHQsc106W28oYGNtZCAke3R9YCkscyxpXSxmPVtdLnNsaWNlLmNhbGwoYSk7Zm9yKDtmLmxlbmd0aCYmdm9pZCAwPT09ZltmLmxlbmd0aC0xXTspZi5wb3AoKTtjb25zdCBkPWh8fGYubGVuZ3RoO2lmKGQ8ci5kZW1hbmRlZC5sZW5ndGgpdGhyb3cgbmV3IGUoYE5vdCBlbm91Z2ggYXJndW1lbnRzIHByb3ZpZGVkLiBFeHBlY3RlZCAke3IuZGVtYW5kZWQubGVuZ3RofSBidXQgcmVjZWl2ZWQgJHtmLmxlbmd0aH0uYCk7Y29uc3QgdT1yLmRlbWFuZGVkLmxlbmd0aCtyLm9wdGlvbmFsLmxlbmd0aDtpZihkPnUpdGhyb3cgbmV3IGUoYFRvbyBtYW55IGFyZ3VtZW50cyBwcm92aWRlZC4gRXhwZWN0ZWQgbWF4ICR7dX0gYnV0IHJlY2VpdmVkICR7ZH0uYCk7ci5kZW1hbmRlZC5mb3JFYWNoKCh0PT57Y29uc3QgZT1sKGYuc2hpZnQoKSk7MD09PXQuY21kLmZpbHRlcigodD0+dD09PWV8fFwiKlwiPT09dCkpLmxlbmd0aCYmYyhlLHQuY21kLG4pLG4rPTF9KSksci5vcHRpb25hbC5mb3JFYWNoKCh0PT57aWYoMD09PWYubGVuZ3RoKXJldHVybjtjb25zdCBlPWwoZi5zaGlmdCgpKTswPT09dC5jbWQuZmlsdGVyKCh0PT50PT09ZXx8XCIqXCI9PT10KSkubGVuZ3RoJiZjKGUsdC5jbWQsbiksbis9MX0pKX1jYXRjaCh0KXtjb25zb2xlLndhcm4odC5zdGFjayl9fWZ1bmN0aW9uIGwodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/XCJhcnJheVwiOm51bGw9PT10P1wibnVsbFwiOnR5cGVvZiB0fWZ1bmN0aW9uIGModCxzLGkpe3Rocm93IG5ldyBlKGBJbnZhbGlkICR7YVtpXXx8XCJtYW55aXRoXCJ9IGFyZ3VtZW50LiBFeHBlY3RlZCAke3Muam9pbihcIiBvciBcIil9IGJ1dCByZWNlaXZlZCAke3R9LmApfWZ1bmN0aW9uIGYodCl7cmV0dXJuISF0JiYhIXQudGhlbiYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC50aGVufWZ1bmN0aW9uIGQodCxlLHMsaSl7cy5hc3NlcnQubm90U3RyaWN0RXF1YWwodCxlLGkpfWZ1bmN0aW9uIHUodCxlKXtlLmFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgdCxcInN0cmluZ1wiKX1mdW5jdGlvbiBwKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX1mdW5jdGlvbiBnKHQ9e30sZT0oKCk9PiEwKSl7Y29uc3Qgcz17fTtyZXR1cm4gcCh0KS5mb3JFYWNoKChpPT57ZShpLHRbaV0pJiYoc1tpXT10W2ldKX0pKSxzfWZ1bmN0aW9uIG0oKXtyZXR1cm4gcHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiYmIXByb2Nlc3MuZGVmYXVsdEFwcD8wOjF9ZnVuY3Rpb24geSgpe3JldHVybiBwcm9jZXNzLmFyZ3ZbbSgpXX12YXIgYj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxoaWRlQmluOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKG0oKSsxKX0sZ2V0UHJvY2Vzc0FyZ3ZCaW46eX0pO2Z1bmN0aW9uIHYodCxlLHMsaSl7aWYoXCJhXCI9PT1zJiYhaSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGU/dCE9PWV8fCFpOiFlLmhhcyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO3JldHVyblwibVwiPT09cz9pOlwiYVwiPT09cz9pLmNhbGwodCk6aT9pLnZhbHVlOmUuZ2V0KHQpfWZ1bmN0aW9uIE8odCxlLHMsaSxuKXtpZihcIm1cIj09PWkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtpZihcImFcIj09PWkmJiFuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZT90IT09ZXx8IW46IWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtyZXR1cm5cImFcIj09PWk/bi5jYWxsKHQscyk6bj9uLnZhbHVlPXM6ZS5zZXQodCxzKSxzfWNsYXNzIHd7Y29uc3RydWN0b3IodCl7dGhpcy5nbG9iYWxNaWRkbGV3YXJlPVtdLHRoaXMuZnJvemVucz1bXSx0aGlzLnlhcmdzPXR9YWRkTWlkZGxld2FyZSh0LGUscz0hMCxpPSExKXtpZihoKFwiPGFycmF5fGZ1bmN0aW9uPiBbYm9vbGVhbl0gW2Jvb2xlYW5dIFtib29sZWFuXVwiLFt0LGUsc10sYXJndW1lbnRzLmxlbmd0aCksQXJyYXkuaXNBcnJheSh0KSl7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHRbaV0pdGhyb3cgRXJyb3IoXCJtaWRkbGV3YXJlIG11c3QgYmUgYSBmdW5jdGlvblwiKTtjb25zdCBuPXRbaV07bi5hcHBseUJlZm9yZVZhbGlkYXRpb249ZSxuLmdsb2JhbD1zfUFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMuZ2xvYmFsTWlkZGxld2FyZSx0KX1lbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpe2NvbnN0IG49dDtuLmFwcGx5QmVmb3JlVmFsaWRhdGlvbj1lLG4uZ2xvYmFsPXMsbi5tdXRhdGVzPWksdGhpcy5nbG9iYWxNaWRkbGV3YXJlLnB1c2godCl9cmV0dXJuIHRoaXMueWFyZ3N9YWRkQ29lcmNlTWlkZGxld2FyZSh0LGUpe2NvbnN0IHM9dGhpcy55YXJncy5nZXRBbGlhc2VzKCk7cmV0dXJuIHRoaXMuZ2xvYmFsTWlkZGxld2FyZT10aGlzLmdsb2JhbE1pZGRsZXdhcmUuZmlsdGVyKCh0PT57Y29uc3QgaT1bLi4uc1tlXXx8W10sZV07cmV0dXJuIXQub3B0aW9ufHwhaS5pbmNsdWRlcyh0Lm9wdGlvbil9KSksdC5vcHRpb249ZSx0aGlzLmFkZE1pZGRsZXdhcmUodCwhMCwhMCwhMCl9Z2V0TWlkZGxld2FyZSgpe3JldHVybiB0aGlzLmdsb2JhbE1pZGRsZXdhcmV9ZnJlZXplKCl7dGhpcy5mcm96ZW5zLnB1c2goWy4uLnRoaXMuZ2xvYmFsTWlkZGxld2FyZV0pfXVuZnJlZXplKCl7Y29uc3QgdD10aGlzLmZyb3plbnMucG9wKCk7dm9pZCAwIT09dCYmKHRoaXMuZ2xvYmFsTWlkZGxld2FyZT10KX1yZXNldCgpe3RoaXMuZ2xvYmFsTWlkZGxld2FyZT10aGlzLmdsb2JhbE1pZGRsZXdhcmUuZmlsdGVyKCh0PT50Lmdsb2JhbCkpfX1mdW5jdGlvbiBDKHQsZSxzLGkpe3JldHVybiBzLnJlZHVjZSgoKHQscyk9PntpZihzLmFwcGx5QmVmb3JlVmFsaWRhdGlvbiE9PWkpcmV0dXJuIHQ7aWYocy5tdXRhdGVzKXtpZihzLmFwcGxpZWQpcmV0dXJuIHQ7cy5hcHBsaWVkPSEwfWlmKGYodCkpcmV0dXJuIHQudGhlbigodD0+UHJvbWlzZS5hbGwoW3Qscyh0LGUpXSkpKS50aGVuKCgoW3QsZV0pPT5PYmplY3QuYXNzaWduKHQsZSkpKTt7Y29uc3QgaT1zKHQsZSk7cmV0dXJuIGYoaSk/aS50aGVuKChlPT5PYmplY3QuYXNzaWduKHQsZSkpKTpPYmplY3QuYXNzaWduKHQsaSl9fSksdCl9ZnVuY3Rpb24gaih0LGUscz0odD0+e3Rocm93IHR9KSl7dHJ5e2NvbnN0IHM9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90KCk6dDtyZXR1cm4gZihzKT9zLnRoZW4oKHQ9PmUodCkpKTplKHMpfWNhdGNoKHQpe3JldHVybiBzKHQpfX1jb25zdCBfPS8oXlxcKil8KF5cXCQwKS87Y2xhc3MgTXtjb25zdHJ1Y3Rvcih0LGUscyxpKXt0aGlzLnJlcXVpcmVDYWNoZT1uZXcgU2V0LHRoaXMuaGFuZGxlcnM9e30sdGhpcy5hbGlhc01hcD17fSx0aGlzLmZyb3plbnM9W10sdGhpcy5zaGltPWksdGhpcy51c2FnZT10LHRoaXMuZ2xvYmFsTWlkZGxld2FyZT1zLHRoaXMudmFsaWRhdGlvbj1lfWFkZERpcmVjdG9yeSh0LGUscyxpKXtcImJvb2xlYW5cIiE9dHlwZW9mKGk9aXx8e30pLnJlY3Vyc2UmJihpLnJlY3Vyc2U9ITEpLEFycmF5LmlzQXJyYXkoaS5leHRlbnNpb25zKXx8KGkuZXh0ZW5zaW9ucz1bXCJqc1wiXSk7Y29uc3Qgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBpLnZpc2l0P2kudmlzaXQ6dD0+dDtpLnZpc2l0PSh0LGUscyk9Pntjb25zdCBpPW4odCxlLHMpO2lmKGkpe2lmKHRoaXMucmVxdWlyZUNhY2hlLmhhcyhlKSlyZXR1cm4gaTt0aGlzLnJlcXVpcmVDYWNoZS5hZGQoZSksdGhpcy5hZGRIYW5kbGVyKGkpfXJldHVybiBpfSx0aGlzLnNoaW0ucmVxdWlyZURpcmVjdG9yeSh7cmVxdWlyZTplLGZpbGVuYW1lOnN9LHQsaSl9YWRkSGFuZGxlcih0LGUscyxpLG4scil7bGV0IGE9W107Y29uc3QgaD1mdW5jdGlvbih0KXtyZXR1cm4gdD90Lm1hcCgodD0+KHQuYXBwbHlCZWZvcmVWYWxpZGF0aW9uPSExLHQpKSk6W119KG4pO2lmKGk9aXx8KCgpPT57fSksQXJyYXkuaXNBcnJheSh0KSlpZihmdW5jdGlvbih0KXtyZXR1cm4gdC5ldmVyeSgodD0+XCJzdHJpbmdcIj09dHlwZW9mIHQpKX0odCkpW3QsLi4uYV09dDtlbHNlIGZvcihjb25zdCBlIG9mIHQpdGhpcy5hZGRIYW5kbGVyKGUpO2Vsc2V7aWYoZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQmJiFBcnJheS5pc0FycmF5KHQpfSh0KSl7bGV0IGU9QXJyYXkuaXNBcnJheSh0LmNvbW1hbmQpfHxcInN0cmluZ1wiPT10eXBlb2YgdC5jb21tYW5kP3QuY29tbWFuZDp0aGlzLm1vZHVsZU5hbWUodCk7cmV0dXJuIHQuYWxpYXNlcyYmKGU9W10uY29uY2F0KGUpLmNvbmNhdCh0LmFsaWFzZXMpKSx2b2lkIHRoaXMuYWRkSGFuZGxlcihlLHRoaXMuZXh0cmFjdERlc2ModCksdC5idWlsZGVyLHQuaGFuZGxlcix0Lm1pZGRsZXdhcmVzLHQuZGVwcmVjYXRlZCl9aWYoayhzKSlyZXR1cm4gdm9pZCB0aGlzLmFkZEhhbmRsZXIoW3RdLmNvbmNhdChhKSxlLHMuYnVpbGRlcixzLmhhbmRsZXIscy5taWRkbGV3YXJlcyxzLmRlcHJlY2F0ZWQpfWlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXtjb25zdCBuPW8odCk7YT1hLm1hcCgodD0+byh0KS5jbWQpKTtsZXQgbD0hMTtjb25zdCBjPVtuLmNtZF0uY29uY2F0KGEpLmZpbHRlcigodD0+IV8udGVzdCh0KXx8KGw9ITAsITEpKSk7MD09PWMubGVuZ3RoJiZsJiZjLnB1c2goXCIkMFwiKSxsJiYobi5jbWQ9Y1swXSxhPWMuc2xpY2UoMSksdD10LnJlcGxhY2UoXyxuLmNtZCkpLGEuZm9yRWFjaCgodD0+e3RoaXMuYWxpYXNNYXBbdF09bi5jbWR9KSksITEhPT1lJiZ0aGlzLnVzYWdlLmNvbW1hbmQodCxlLGwsYSxyKSx0aGlzLmhhbmRsZXJzW24uY21kXT17b3JpZ2luYWw6dCxkZXNjcmlwdGlvbjplLGhhbmRsZXI6aSxidWlsZGVyOnN8fHt9LG1pZGRsZXdhcmVzOmgsZGVwcmVjYXRlZDpyLGRlbWFuZGVkOm4uZGVtYW5kZWQsb3B0aW9uYWw6bi5vcHRpb25hbH0sbCYmKHRoaXMuZGVmYXVsdENvbW1hbmQ9dGhpcy5oYW5kbGVyc1tuLmNtZF0pfX1nZXRDb21tYW5kSGFuZGxlcnMoKXtyZXR1cm4gdGhpcy5oYW5kbGVyc31nZXRDb21tYW5kcygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmhhbmRsZXJzKS5jb25jYXQoT2JqZWN0LmtleXModGhpcy5hbGlhc01hcCkpfWhhc0RlZmF1bHRDb21tYW5kKCl7cmV0dXJuISF0aGlzLmRlZmF1bHRDb21tYW5kfXJ1bkNvbW1hbmQodCxlLHMsaSxuLHIpe2NvbnN0IG89dGhpcy5oYW5kbGVyc1t0XXx8dGhpcy5oYW5kbGVyc1t0aGlzLmFsaWFzTWFwW3RdXXx8dGhpcy5kZWZhdWx0Q29tbWFuZCxhPWUuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0Q29udGV4dCgpLGg9YS5jb21tYW5kcy5zbGljZSgpLGw9IXQ7dCYmKGEuY29tbWFuZHMucHVzaCh0KSxhLmZ1bGxDb21tYW5kcy5wdXNoKG8ub3JpZ2luYWwpKTtjb25zdCBjPXRoaXMuYXBwbHlCdWlsZGVyVXBkYXRlVXNhZ2VBbmRQYXJzZShsLG8sZSxzLmFsaWFzZXMsaCxpLG4scik7cmV0dXJuIGYoYyk/Yy50aGVuKCh0PT50aGlzLmFwcGx5TWlkZGxld2FyZUFuZEdldFJlc3VsdChsLG8sdC5pbm5lckFyZ3YsYSxuLHQuYWxpYXNlcyxlKSkpOnRoaXMuYXBwbHlNaWRkbGV3YXJlQW5kR2V0UmVzdWx0KGwsbyxjLmlubmVyQXJndixhLG4sYy5hbGlhc2VzLGUpfWFwcGx5QnVpbGRlclVwZGF0ZVVzYWdlQW5kUGFyc2UodCxlLHMsaSxuLHIsbyxhKXtjb25zdCBoPWUuYnVpbGRlcjtsZXQgbD1zO2lmKHgoaCkpe2NvbnN0IGM9aChzLmdldEludGVybmFsTWV0aG9kcygpLnJlc2V0KGkpLGEpO2lmKGYoYykpcmV0dXJuIGMudGhlbigoaT0+e3ZhciBhO3JldHVybiBsPShhPWkpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmdldEludGVybmFsTWV0aG9kcz9pOnMsdGhpcy5wYXJzZUFuZFVwZGF0ZVVzYWdlKHQsZSxsLG4scixvKX0pKX1lbHNlKGZ1bmN0aW9uKHQpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiB0fSkoaCkmJihsPXMuZ2V0SW50ZXJuYWxNZXRob2RzKCkucmVzZXQoaSksT2JqZWN0LmtleXMoZS5idWlsZGVyKS5mb3JFYWNoKCh0PT57bC5vcHRpb24odCxoW3RdKX0pKSk7cmV0dXJuIHRoaXMucGFyc2VBbmRVcGRhdGVVc2FnZSh0LGUsbCxuLHIsbyl9cGFyc2VBbmRVcGRhdGVVc2FnZSh0LGUscyxpLG4scil7dCYmcy5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRVc2FnZUluc3RhbmNlKCkudW5mcmVlemUoITApLHRoaXMuc2hvdWxkVXBkYXRlVXNhZ2UocykmJnMuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0VXNhZ2VJbnN0YW5jZSgpLnVzYWdlKHRoaXMudXNhZ2VGcm9tUGFyZW50Q29tbWFuZHNDb21tYW5kSGFuZGxlcihpLGUpLGUuZGVzY3JpcHRpb24pO2NvbnN0IG89cy5nZXRJbnRlcm5hbE1ldGhvZHMoKS5ydW5ZYXJnc1BhcnNlckFuZEV4ZWN1dGVDb21tYW5kcyhudWxsLHZvaWQgMCwhMCxuLHIpO3JldHVybiBmKG8pP28udGhlbigodD0+KHthbGlhc2VzOnMucGFyc2VkLmFsaWFzZXMsaW5uZXJBcmd2OnR9KSkpOnthbGlhc2VzOnMucGFyc2VkLmFsaWFzZXMsaW5uZXJBcmd2Om99fXNob3VsZFVwZGF0ZVVzYWdlKHQpe3JldHVybiF0LmdldEludGVybmFsTWV0aG9kcygpLmdldFVzYWdlSW5zdGFuY2UoKS5nZXRVc2FnZURpc2FibGVkKCkmJjA9PT10LmdldEludGVybmFsTWV0aG9kcygpLmdldFVzYWdlSW5zdGFuY2UoKS5nZXRVc2FnZSgpLmxlbmd0aH11c2FnZUZyb21QYXJlbnRDb21tYW5kc0NvbW1hbmRIYW5kbGVyKHQsZSl7Y29uc3Qgcz1fLnRlc3QoZS5vcmlnaW5hbCk/ZS5vcmlnaW5hbC5yZXBsYWNlKF8sXCJcIikudHJpbSgpOmUub3JpZ2luYWwsaT10LmZpbHRlcigodD0+IV8udGVzdCh0KSkpO3JldHVybiBpLnB1c2gocyksYCQwICR7aS5qb2luKFwiIFwiKX1gfWhhbmRsZVZhbGlkYXRpb25BbmRHZXRSZXN1bHQodCxlLHMsaSxuLHIsbyxhKXtpZighci5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRIYXNPdXRwdXQoKSl7Y29uc3QgZT1yLmdldEludGVybmFsTWV0aG9kcygpLnJ1blZhbGlkYXRpb24obixhLHIucGFyc2VkLmVycm9yLHQpO3M9aihzLCh0PT4oZSh0KSx0KSkpfWlmKGUuaGFuZGxlciYmIXIuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0SGFzT3V0cHV0KCkpe3IuZ2V0SW50ZXJuYWxNZXRob2RzKCkuc2V0SGFzT3V0cHV0KCk7Y29uc3QgaT0hIXIuZ2V0T3B0aW9ucygpLmNvbmZpZ3VyYXRpb25bXCJwb3B1bGF0ZS0tXCJdO3IuZ2V0SW50ZXJuYWxNZXRob2RzKCkucG9zdFByb2Nlc3MocyxpLCExLCExKSxzPWoocz1DKHMscixvLCExKSwodD0+e2NvbnN0IHM9ZS5oYW5kbGVyKHQpO3JldHVybiBmKHMpP3MudGhlbigoKCk9PnQpKTp0fSkpLHR8fHIuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0VXNhZ2VJbnN0YW5jZSgpLmNhY2hlSGVscE1lc3NhZ2UoKSxmKHMpJiYhci5nZXRJbnRlcm5hbE1ldGhvZHMoKS5oYXNQYXJzZUNhbGxiYWNrKCkmJnMuY2F0Y2goKHQ9Pnt0cnl7ci5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRVc2FnZUluc3RhbmNlKCkuZmFpbChudWxsLHQpfWNhdGNoKHQpe319KSl9cmV0dXJuIHR8fChpLmNvbW1hbmRzLnBvcCgpLGkuZnVsbENvbW1hbmRzLnBvcCgpKSxzfWFwcGx5TWlkZGxld2FyZUFuZEdldFJlc3VsdCh0LGUscyxpLG4scixvKXtsZXQgYT17fTtpZihuKXJldHVybiBzO28uZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0SGFzT3V0cHV0KCl8fChhPXRoaXMucG9wdWxhdGVQb3NpdGlvbmFscyhlLHMsaSxvKSk7Y29uc3QgaD10aGlzLmdsb2JhbE1pZGRsZXdhcmUuZ2V0TWlkZGxld2FyZSgpLnNsaWNlKDApLmNvbmNhdChlLm1pZGRsZXdhcmVzKSxsPUMocyxvLGgsITApO3JldHVybiBmKGwpP2wudGhlbigocz0+dGhpcy5oYW5kbGVWYWxpZGF0aW9uQW5kR2V0UmVzdWx0KHQsZSxzLGkscixvLGgsYSkpKTp0aGlzLmhhbmRsZVZhbGlkYXRpb25BbmRHZXRSZXN1bHQodCxlLGwsaSxyLG8saCxhKX1wb3B1bGF0ZVBvc2l0aW9uYWxzKHQsZSxzLGkpe2UuXz1lLl8uc2xpY2Uocy5jb21tYW5kcy5sZW5ndGgpO2NvbnN0IG49dC5kZW1hbmRlZC5zbGljZSgwKSxyPXQub3B0aW9uYWwuc2xpY2UoMCksbz17fTtmb3IodGhpcy52YWxpZGF0aW9uLnBvc2l0aW9uYWxDb3VudChuLmxlbmd0aCxlLl8ubGVuZ3RoKTtuLmxlbmd0aDspe2NvbnN0IHQ9bi5zaGlmdCgpO3RoaXMucG9wdWxhdGVQb3NpdGlvbmFsKHQsZSxvKX1mb3IoO3IubGVuZ3RoOyl7Y29uc3QgdD1yLnNoaWZ0KCk7dGhpcy5wb3B1bGF0ZVBvc2l0aW9uYWwodCxlLG8pfXJldHVybiBlLl89cy5jb21tYW5kcy5jb25jYXQoZS5fLm1hcCgodD0+XCJcIit0KSkpLHRoaXMucG9zdFByb2Nlc3NQb3NpdGlvbmFscyhlLG8sdGhpcy5jbWRUb1BhcnNlT3B0aW9ucyh0Lm9yaWdpbmFsKSxpKSxvfXBvcHVsYXRlUG9zaXRpb25hbCh0LGUscyl7Y29uc3QgaT10LmNtZFswXTt0LnZhcmlhZGljP3NbaV09ZS5fLnNwbGljZSgwKS5tYXAoU3RyaW5nKTplLl8ubGVuZ3RoJiYoc1tpXT1bU3RyaW5nKGUuXy5zaGlmdCgpKV0pfWNtZFRvUGFyc2VPcHRpb25zKHQpe2NvbnN0IGU9e2FycmF5OltdLGRlZmF1bHQ6e30sYWxpYXM6e30sZGVtYW5kOnt9fSxzPW8odCk7cmV0dXJuIHMuZGVtYW5kZWQuZm9yRWFjaCgodD0+e2NvbnN0W3MsLi4uaV09dC5jbWQ7dC52YXJpYWRpYyYmKGUuYXJyYXkucHVzaChzKSxlLmRlZmF1bHRbc109W10pLGUuYWxpYXNbc109aSxlLmRlbWFuZFtzXT0hMH0pKSxzLm9wdGlvbmFsLmZvckVhY2goKHQ9Pntjb25zdFtzLC4uLmldPXQuY21kO3QudmFyaWFkaWMmJihlLmFycmF5LnB1c2gocyksZS5kZWZhdWx0W3NdPVtdKSxlLmFsaWFzW3NdPWl9KSksZX1wb3N0UHJvY2Vzc1Bvc2l0aW9uYWxzKHQsZSxzLGkpe2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSxpLmdldE9wdGlvbnMoKSk7bi5kZWZhdWx0PU9iamVjdC5hc3NpZ24ocy5kZWZhdWx0LG4uZGVmYXVsdCk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMocy5hbGlhcykpbi5hbGlhc1t0XT0obi5hbGlhc1t0XXx8W10pLmNvbmNhdChzLmFsaWFzW3RdKTtuLmFycmF5PW4uYXJyYXkuY29uY2F0KHMuYXJyYXkpLG4uY29uZmlnPXt9O2NvbnN0IHI9W107aWYoT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+e2VbdF0ubWFwKChlPT57bi5jb25maWd1cmF0aW9uW1widW5rbm93bi1vcHRpb25zLWFzLWFyZ3NcIl0mJihuLmtleVt0XT0hMCksci5wdXNoKGAtLSR7dH1gKSxyLnB1c2goZSl9KSl9KSksIXIubGVuZ3RoKXJldHVybjtjb25zdCBvPU9iamVjdC5hc3NpZ24oe30sbi5jb25maWd1cmF0aW9uLHtcInBvcHVsYXRlLS1cIjohMX0pLGE9dGhpcy5zaGltLlBhcnNlci5kZXRhaWxlZChyLE9iamVjdC5hc3NpZ24oe30sbix7Y29uZmlndXJhdGlvbjpvfSkpO2lmKGEuZXJyb3IpaS5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRVc2FnZUluc3RhbmNlKCkuZmFpbChhLmVycm9yLm1lc3NhZ2UsYS5lcnJvcik7ZWxzZXtjb25zdCBzPU9iamVjdC5rZXlzKGUpO09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9PntzLnB1c2goLi4uYS5hbGlhc2VzW3RdKX0pKSxPYmplY3Qua2V5cyhhLmFyZ3YpLmZvckVhY2goKG49PntzLmluY2x1ZGVzKG4pJiYoZVtuXXx8KGVbbl09YS5hcmd2W25dKSwhdGhpcy5pc0luQ29uZmlncyhpLG4pJiYhdGhpcy5pc0RlZmF1bHRlZChpLG4pJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEuYXJndixuKSYmKEFycmF5LmlzQXJyYXkodFtuXSl8fEFycmF5LmlzQXJyYXkoYS5hcmd2W25dKSk/dFtuXT1bXS5jb25jYXQodFtuXSxhLmFyZ3Zbbl0pOnRbbl09YS5hcmd2W25dKX0pKX19aXNEZWZhdWx0ZWQodCxlKXtjb25zdHtkZWZhdWx0OnN9PXQuZ2V0T3B0aW9ucygpO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocyxlKXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsdGhpcy5zaGltLlBhcnNlci5jYW1lbENhc2UoZSkpfWlzSW5Db25maWdzKHQsZSl7Y29uc3R7Y29uZmlnT2JqZWN0czpzfT10LmdldE9wdGlvbnMoKTtyZXR1cm4gcy5zb21lKCh0PT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSkpfHxzLnNvbWUoKHQ9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHRoaXMuc2hpbS5QYXJzZXIuY2FtZWxDYXNlKGUpKSkpfXJ1bkRlZmF1bHRCdWlsZGVyT24odCl7aWYoIXRoaXMuZGVmYXVsdENvbW1hbmQpcmV0dXJuO2lmKHRoaXMuc2hvdWxkVXBkYXRlVXNhZ2UodCkpe2NvbnN0IGU9Xy50ZXN0KHRoaXMuZGVmYXVsdENvbW1hbmQub3JpZ2luYWwpP3RoaXMuZGVmYXVsdENvbW1hbmQub3JpZ2luYWw6dGhpcy5kZWZhdWx0Q29tbWFuZC5vcmlnaW5hbC5yZXBsYWNlKC9eW15bXFxdPD5dKi8sXCIkMCBcIik7dC5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRVc2FnZUluc3RhbmNlKCkudXNhZ2UoZSx0aGlzLmRlZmF1bHRDb21tYW5kLmRlc2NyaXB0aW9uKX1jb25zdCBlPXRoaXMuZGVmYXVsdENvbW1hbmQuYnVpbGRlcjtpZih4KGUpKXJldHVybiBlKHQsITApO2soZSl8fE9iamVjdC5rZXlzKGUpLmZvckVhY2goKHM9Pnt0Lm9wdGlvbihzLGVbc10pfSkpfW1vZHVsZU5hbWUodCl7Y29uc3QgZT1mdW5jdGlvbih0KXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgcmVxdWlyZSlyZXR1cm4gbnVsbDtmb3IobGV0IGUscz0wLGk9T2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSk7czxpLmxlbmd0aDtzKyspaWYoZT1yZXF1aXJlLmNhY2hlW2lbc11dLGUuZXhwb3J0cz09PXQpcmV0dXJuIGU7cmV0dXJuIG51bGx9KHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcihgTm8gY29tbWFuZCBuYW1lIGdpdmVuIGZvciBtb2R1bGU6ICR7dGhpcy5zaGltLmluc3BlY3QodCl9YCk7cmV0dXJuIHRoaXMuY29tbWFuZEZyb21GaWxlbmFtZShlLmZpbGVuYW1lKX1jb21tYW5kRnJvbUZpbGVuYW1lKHQpe3JldHVybiB0aGlzLnNoaW0ucGF0aC5iYXNlbmFtZSh0LHRoaXMuc2hpbS5wYXRoLmV4dG5hbWUodCkpfWV4dHJhY3REZXNjKHtkZXNjcmliZTp0LGRlc2NyaXB0aW9uOmUsZGVzYzpzfSl7Zm9yKGNvbnN0IGkgb2ZbdCxlLHNdKXtpZihcInN0cmluZ1wiPT10eXBlb2YgaXx8ITE9PT1pKXJldHVybiBpO2QoaSwhMCx0aGlzLnNoaW0pfXJldHVybiExfWZyZWV6ZSgpe3RoaXMuZnJvemVucy5wdXNoKHtoYW5kbGVyczp0aGlzLmhhbmRsZXJzLGFsaWFzTWFwOnRoaXMuYWxpYXNNYXAsZGVmYXVsdENvbW1hbmQ6dGhpcy5kZWZhdWx0Q29tbWFuZH0pfXVuZnJlZXplKCl7Y29uc3QgdD10aGlzLmZyb3plbnMucG9wKCk7ZCh0LHZvaWQgMCx0aGlzLnNoaW0pLCh7aGFuZGxlcnM6dGhpcy5oYW5kbGVycyxhbGlhc01hcDp0aGlzLmFsaWFzTWFwLGRlZmF1bHRDb21tYW5kOnRoaXMuZGVmYXVsdENvbW1hbmR9PXQpfXJlc2V0KCl7cmV0dXJuIHRoaXMuaGFuZGxlcnM9e30sdGhpcy5hbGlhc01hcD17fSx0aGlzLmRlZmF1bHRDb21tYW5kPXZvaWQgMCx0aGlzLnJlcXVpcmVDYWNoZT1uZXcgU2V0LHRoaXN9fWZ1bmN0aW9uIGsodCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQmJiEhdC5idWlsZGVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmhhbmRsZXJ9ZnVuY3Rpb24geCh0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIEUodCl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJltwcm9jZXNzLnN0ZG91dCxwcm9jZXNzLnN0ZGVycl0uZm9yRWFjaCgoZT0+e2NvbnN0IHM9ZTtzLl9oYW5kbGUmJnMuaXNUVFkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHMuX2hhbmRsZS5zZXRCbG9ja2luZyYmcy5faGFuZGxlLnNldEJsb2NraW5nKHQpfSkpfWZ1bmN0aW9uIEEodCl7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIFAodCxzKXtjb25zdCBpPXMueTE4bi5fXyxuPXt9LHI9W107bi5mYWlsRm49ZnVuY3Rpb24odCl7ci5wdXNoKHQpfTtsZXQgbz1udWxsLGE9bnVsbCxoPSEwO24uc2hvd0hlbHBPbkZhaWw9ZnVuY3Rpb24oZT0hMCxzKXtjb25zdFtpLHJdPVwic3RyaW5nXCI9PXR5cGVvZiBlP1shMCxlXTpbZSxzXTtyZXR1cm4gdC5nZXRJbnRlcm5hbE1ldGhvZHMoKS5pc0dsb2JhbENvbnRleHQoKSYmKGE9ciksbz1yLGg9aSxufTtsZXQgbD0hMTtuLmZhaWw9ZnVuY3Rpb24ocyxpKXtjb25zdCBjPXQuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0TG9nZ2VySW5zdGFuY2UoKTtpZighci5sZW5ndGgpe2lmKHQuZ2V0RXhpdFByb2Nlc3MoKSYmRSghMCksIWwpe2w9ITAsaCYmKHQuc2hvd0hlbHAoXCJlcnJvclwiKSxjLmVycm9yKCkpLChzfHxpKSYmYy5lcnJvcihzfHxpKTtjb25zdCBlPW98fGE7ZSYmKChzfHxpKSYmYy5lcnJvcihcIlwiKSxjLmVycm9yKGUpKX1pZihpPWl8fG5ldyBlKHMpLHQuZ2V0RXhpdFByb2Nlc3MoKSlyZXR1cm4gdC5leGl0KDEpO2lmKHQuZ2V0SW50ZXJuYWxNZXRob2RzKCkuaGFzUGFyc2VDYWxsYmFjaygpKXJldHVybiB0LmV4aXQoMSxpKTt0aHJvdyBpfWZvcihsZXQgdD1yLmxlbmd0aC0xO3Q+PTA7LS10KXtjb25zdCBlPXJbdF07aWYoQShlKSl7aWYoaSl0aHJvdyBpO2lmKHMpdGhyb3cgRXJyb3Iocyl9ZWxzZSBlKHMsaSxuKX19O2xldCBjPVtdLGY9ITE7bi51c2FnZT0odCxlKT0+bnVsbD09PXQ/KGY9ITAsYz1bXSxuKTooZj0hMSxjLnB1c2goW3QsZXx8XCJcIl0pLG4pLG4uZ2V0VXNhZ2U9KCk9PmMsbi5nZXRVc2FnZURpc2FibGVkPSgpPT5mLG4uZ2V0UG9zaXRpb25hbEdyb3VwTmFtZT0oKT0+aShcIlBvc2l0aW9uYWxzOlwiKTtsZXQgZD1bXTtuLmV4YW1wbGU9KHQsZSk9PntkLnB1c2goW3QsZXx8XCJcIl0pfTtsZXQgdT1bXTtuLmNvbW1hbmQ9ZnVuY3Rpb24odCxlLHMsaSxuPSExKXtzJiYodT11Lm1hcCgodD0+KHRbMl09ITEsdCkpKSksdS5wdXNoKFt0LGV8fFwiXCIscyxpLG5dKX0sbi5nZXRDb21tYW5kcz0oKT0+dTtsZXQgcD17fTtuLmRlc2NyaWJlPWZ1bmN0aW9uKHQsZSl7QXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2goKHQ9PntuLmRlc2NyaWJlKHQsZSl9KSk6XCJvYmplY3RcIj09dHlwZW9mIHQ/T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e24uZGVzY3JpYmUoZSx0W2VdKX0pKTpwW3RdPWV9LG4uZ2V0RGVzY3JpcHRpb25zPSgpPT5wO2xldCBtPVtdO24uZXBpbG9nPXQ9PnttLnB1c2godCl9O2xldCB5LGI9ITE7ZnVuY3Rpb24gdigpe3JldHVybiBifHwoeT1mdW5jdGlvbigpe2NvbnN0IHQ9ODA7cmV0dXJuIHMucHJvY2Vzcy5zdGRDb2x1bW5zP01hdGgubWluKHQscy5wcm9jZXNzLnN0ZENvbHVtbnMpOnR9KCksYj0hMCkseX1uLndyYXA9dD0+e2I9ITAseT10fTtjb25zdCBPPVwiX195YXJnc1N0cmluZ19fOlwiO2Z1bmN0aW9uIHcodCxlLGkpe2xldCBuPTA7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl8fCh0PU9iamVjdC52YWx1ZXModCkubWFwKCh0PT5bdF0pKSksdC5mb3JFYWNoKCh0PT57bj1NYXRoLm1heChzLnN0cmluZ1dpZHRoKGk/YCR7aX0gJHtJKHRbMF0pfWA6SSh0WzBdKSkrJCh0WzBdKSxuKX0pKSxlJiYobj1NYXRoLm1pbihuLHBhcnNlSW50KCguNSplKS50b1N0cmluZygpLDEwKSkpLG59bGV0IEM7ZnVuY3Rpb24gaihlKXtyZXR1cm4gdC5nZXRPcHRpb25zKCkuaGlkZGVuT3B0aW9ucy5pbmRleE9mKGUpPDB8fHQucGFyc2VkLmFyZ3ZbdC5nZXRPcHRpb25zKCkuc2hvd0hpZGRlbk9wdF19ZnVuY3Rpb24gXyh0LGUpe2xldCBzPWBbJHtpKFwiZGVmYXVsdDpcIil9IGA7aWYodm9pZCAwPT09dCYmIWUpcmV0dXJuIG51bGw7aWYoZSlzKz1lO2Vsc2Ugc3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJzdHJpbmdcIjpzKz1gXCIke3R9XCJgO2JyZWFrO2Nhc2VcIm9iamVjdFwiOnMrPUpTT04uc3RyaW5naWZ5KHQpO2JyZWFrO2RlZmF1bHQ6cys9dH1yZXR1cm5gJHtzfV1gfW4uZGVmZXJZMThuTG9va3VwPXQ9Pk8rdCxuLmhlbHA9ZnVuY3Rpb24oKXtpZihDKXJldHVybiBDOyFmdW5jdGlvbigpe2NvbnN0IGU9dC5nZXREZW1hbmRlZE9wdGlvbnMoKSxzPXQuZ2V0T3B0aW9ucygpOyhPYmplY3Qua2V5cyhzLmFsaWFzKXx8W10pLmZvckVhY2goKGk9PntzLmFsaWFzW2ldLmZvckVhY2goKHI9PntwW3JdJiZuLmRlc2NyaWJlKGkscFtyXSksciBpbiBlJiZ0LmRlbWFuZE9wdGlvbihpLGVbcl0pLHMuYm9vbGVhbi5pbmNsdWRlcyhyKSYmdC5ib29sZWFuKGkpLHMuY291bnQuaW5jbHVkZXMocikmJnQuY291bnQoaSkscy5zdHJpbmcuaW5jbHVkZXMocikmJnQuc3RyaW5nKGkpLHMubm9ybWFsaXplLmluY2x1ZGVzKHIpJiZ0Lm5vcm1hbGl6ZShpKSxzLmFycmF5LmluY2x1ZGVzKHIpJiZ0LmFycmF5KGkpLHMubnVtYmVyLmluY2x1ZGVzKHIpJiZ0Lm51bWJlcihpKX0pKX0pKX0oKTtjb25zdCBlPXQuY3VzdG9tU2NyaXB0TmFtZT90LiQwOnMucGF0aC5iYXNlbmFtZSh0LiQwKSxyPXQuZ2V0RGVtYW5kZWRPcHRpb25zKCksbz10LmdldERlbWFuZGVkQ29tbWFuZHMoKSxhPXQuZ2V0RGVwcmVjYXRlZE9wdGlvbnMoKSxoPXQuZ2V0R3JvdXBzKCksbD10LmdldE9wdGlvbnMoKTtsZXQgZz1bXTtnPWcuY29uY2F0KE9iamVjdC5rZXlzKHApKSxnPWcuY29uY2F0KE9iamVjdC5rZXlzKHIpKSxnPWcuY29uY2F0KE9iamVjdC5rZXlzKG8pKSxnPWcuY29uY2F0KE9iamVjdC5rZXlzKGwuZGVmYXVsdCkpLGc9Zy5maWx0ZXIoaiksZz1PYmplY3Qua2V5cyhnLnJlZHVjZSgoKHQsZSk9PihcIl9cIiE9PWUmJih0W2VdPSEwKSx0KSkse30pKTtjb25zdCB5PXYoKSxiPXMuY2xpdWkoe3dpZHRoOnksd3JhcDohIXl9KTtpZighZilpZihjLmxlbmd0aCljLmZvckVhY2goKHQ9PntiLmRpdih7dGV4dDpgJHt0WzBdLnJlcGxhY2UoL1xcJDAvZyxlKX1gfSksdFsxXSYmYi5kaXYoe3RleHQ6YCR7dFsxXX1gLHBhZGRpbmc6WzEsMCwwLDBdfSl9KSksYi5kaXYoKTtlbHNlIGlmKHUubGVuZ3RoKXtsZXQgdD1udWxsO3Q9by5fP2Ake2V9IDwke2koXCJjb21tYW5kXCIpfT5cXG5gOmAke2V9IFske2koXCJjb21tYW5kXCIpfV1cXG5gLGIuZGl2KGAke3R9YCl9aWYodS5sZW5ndGg+MXx8MT09PXUubGVuZ3RoJiYhdVswXVsyXSl7Yi5kaXYoaShcIkNvbW1hbmRzOlwiKSk7Y29uc3Qgcz10LmdldEludGVybmFsTWV0aG9kcygpLmdldENvbnRleHQoKSxuPXMuY29tbWFuZHMubGVuZ3RoP2Ake3MuY29tbWFuZHMuam9pbihcIiBcIil9IGA6XCJcIjshMD09PXQuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0UGFyc2VyQ29uZmlndXJhdGlvbigpW1wic29ydC1jb21tYW5kc1wiXSYmKHU9dS5zb3J0KCgodCxlKT0+dFswXS5sb2NhbGVDb21wYXJlKGVbMF0pKSkpO2NvbnN0IHI9ZT9gJHtlfSBgOlwiXCI7dS5mb3JFYWNoKCh0PT57Y29uc3Qgcz1gJHtyfSR7bn0ke3RbMF0ucmVwbGFjZSgvXlxcJDAgPy8sXCJcIil9YDtiLnNwYW4oe3RleHQ6cyxwYWRkaW5nOlswLDIsMCwyXSx3aWR0aDp3KHUseSxgJHtlfSR7bn1gKSs0fSx7dGV4dDp0WzFdfSk7Y29uc3Qgbz1bXTt0WzJdJiZvLnB1c2goYFske2koXCJkZWZhdWx0XCIpfV1gKSx0WzNdJiZ0WzNdLmxlbmd0aCYmby5wdXNoKGBbJHtpKFwiYWxpYXNlczpcIil9ICR7dFszXS5qb2luKFwiLCBcIil9XWApLHRbNF0mJihcInN0cmluZ1wiPT10eXBlb2YgdFs0XT9vLnB1c2goYFske2koXCJkZXByZWNhdGVkOiAlc1wiLHRbNF0pfV1gKTpvLnB1c2goYFske2koXCJkZXByZWNhdGVkXCIpfV1gKSksby5sZW5ndGg/Yi5kaXYoe3RleHQ6by5qb2luKFwiIFwiKSxwYWRkaW5nOlswLDAsMCwyXSxhbGlnbjpcInJpZ2h0XCJ9KTpiLmRpdigpfSkpLGIuZGl2KCl9Y29uc3QgTT0oT2JqZWN0LmtleXMobC5hbGlhcyl8fFtdKS5jb25jYXQoT2JqZWN0LmtleXModC5wYXJzZWQubmV3QWxpYXNlcyl8fFtdKTtnPWcuZmlsdGVyKChlPT4hdC5wYXJzZWQubmV3QWxpYXNlc1tlXSYmTS5ldmVyeSgodD0+LTE9PT0obC5hbGlhc1t0XXx8W10pLmluZGV4T2YoZSkpKSkpO2NvbnN0IGs9aShcIk9wdGlvbnM6XCIpO2hba118fChoW2tdPVtdKSxmdW5jdGlvbih0LGUscyxpKXtsZXQgbj1bXSxyPW51bGw7T2JqZWN0LmtleXMocykuZm9yRWFjaCgodD0+e249bi5jb25jYXQoc1t0XSl9KSksdC5mb3JFYWNoKCh0PT57cj1bdF0uY29uY2F0KGVbdF0pLHIuc29tZSgodD0+LTEhPT1uLmluZGV4T2YodCkpKXx8c1tpXS5wdXNoKHQpfSkpfShnLGwuYWxpYXMsaCxrKTtjb25zdCB4PXQ9Pi9eLS0vLnRlc3QoSSh0KSksRT1PYmplY3Qua2V5cyhoKS5maWx0ZXIoKHQ9PmhbdF0ubGVuZ3RoPjApKS5tYXAoKHQ9Pih7Z3JvdXBOYW1lOnQsbm9ybWFsaXplZEtleXM6aFt0XS5maWx0ZXIoaikubWFwKCh0PT57aWYoTS5pbmNsdWRlcyh0KSlyZXR1cm4gdDtmb3IobGV0IGUscz0wO3ZvaWQgMCE9PShlPU1bc10pO3MrKylpZigobC5hbGlhc1tlXXx8W10pLmluY2x1ZGVzKHQpKXJldHVybiBlO3JldHVybiB0fSkpfSkpKS5maWx0ZXIoKCh7bm9ybWFsaXplZEtleXM6dH0pPT50Lmxlbmd0aD4wKSkubWFwKCgoe2dyb3VwTmFtZTp0LG5vcm1hbGl6ZWRLZXlzOmV9KT0+e2NvbnN0IHM9ZS5yZWR1Y2UoKChlLHMpPT4oZVtzXT1bc10uY29uY2F0KGwuYWxpYXNbc118fFtdKS5tYXAoKGU9PnQ9PT1uLmdldFBvc2l0aW9uYWxHcm91cE5hbWUoKT9lOigvXlswLTldJC8udGVzdChlKT9sLmJvb2xlYW4uaW5jbHVkZXMocyk/XCItXCI6XCItLVwiOmUubGVuZ3RoPjE/XCItLVwiOlwiLVwiKStlKSkuc29ydCgoKHQsZSk9PngodCk9PT14KGUpPzA6eCh0KT8xOi0xKSkuam9pbihcIiwgXCIpLGUpKSx7fSk7cmV0dXJue2dyb3VwTmFtZTp0LG5vcm1hbGl6ZWRLZXlzOmUsc3dpdGNoZXM6c319KSk7aWYoRS5maWx0ZXIoKCh7Z3JvdXBOYW1lOnR9KT0+dCE9PW4uZ2V0UG9zaXRpb25hbEdyb3VwTmFtZSgpKSkuc29tZSgoKHtub3JtYWxpemVkS2V5czp0LHN3aXRjaGVzOmV9KT0+IXQuZXZlcnkoKHQ9PngoZVt0XSkpKSkpJiZFLmZpbHRlcigoKHtncm91cE5hbWU6dH0pPT50IT09bi5nZXRQb3NpdGlvbmFsR3JvdXBOYW1lKCkpKS5mb3JFYWNoKCgoe25vcm1hbGl6ZWRLZXlzOnQsc3dpdGNoZXM6ZX0pPT57dC5mb3JFYWNoKCh0PT57dmFyIHMsaTt4KGVbdF0pJiYoZVt0XT0ocz1lW3RdLGk9XCIteCwgXCIubGVuZ3RoLFMocyk/e3RleHQ6cy50ZXh0LGluZGVudGF0aW9uOnMuaW5kZW50YXRpb24raX06e3RleHQ6cyxpbmRlbnRhdGlvbjppfSkpfSkpfSkpLEUuZm9yRWFjaCgoKHtncm91cE5hbWU6dCxub3JtYWxpemVkS2V5czplLHN3aXRjaGVzOnN9KT0+e2IuZGl2KHQpLGUuZm9yRWFjaCgodD0+e2NvbnN0IGU9c1t0XTtsZXQgbz1wW3RdfHxcIlwiLGg9bnVsbDtvLmluY2x1ZGVzKE8pJiYobz1pKG8uc3Vic3RyaW5nKE8ubGVuZ3RoKSkpLGwuYm9vbGVhbi5pbmNsdWRlcyh0KSYmKGg9YFske2koXCJib29sZWFuXCIpfV1gKSxsLmNvdW50LmluY2x1ZGVzKHQpJiYoaD1gWyR7aShcImNvdW50XCIpfV1gKSxsLnN0cmluZy5pbmNsdWRlcyh0KSYmKGg9YFske2koXCJzdHJpbmdcIil9XWApLGwubm9ybWFsaXplLmluY2x1ZGVzKHQpJiYoaD1gWyR7aShcInN0cmluZ1wiKX1dYCksbC5hcnJheS5pbmNsdWRlcyh0KSYmKGg9YFske2koXCJhcnJheVwiKX1dYCksbC5udW1iZXIuaW5jbHVkZXModCkmJihoPWBbJHtpKFwibnVtYmVyXCIpfV1gKTtjb25zdCBjPVt0IGluIGE/KGY9YVt0XSxcInN0cmluZ1wiPT10eXBlb2YgZj9gWyR7aShcImRlcHJlY2F0ZWQ6ICVzXCIsZil9XWA6YFske2koXCJkZXByZWNhdGVkXCIpfV1gKTpudWxsLGgsdCBpbiByP2BbJHtpKFwicmVxdWlyZWRcIil9XWA6bnVsbCxsLmNob2ljZXMmJmwuY2hvaWNlc1t0XT9gWyR7aShcImNob2ljZXM6XCIpfSAke24uc3RyaW5naWZpZWRWYWx1ZXMobC5jaG9pY2VzW3RdKX1dYDpudWxsLF8obC5kZWZhdWx0W3RdLGwuZGVmYXVsdERlc2NyaXB0aW9uW3RdKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO3ZhciBmO2Iuc3Bhbih7dGV4dDpJKGUpLHBhZGRpbmc6WzAsMiwwLDIrJChlKV0sd2lkdGg6dyhzLHkpKzR9LG8pLGM/Yi5kaXYoe3RleHQ6YyxwYWRkaW5nOlswLDAsMCwyXSxhbGlnbjpcInJpZ2h0XCJ9KTpiLmRpdigpfSkpLGIuZGl2KCl9KSksZC5sZW5ndGgmJihiLmRpdihpKFwiRXhhbXBsZXM6XCIpKSxkLmZvckVhY2goKHQ9Pnt0WzBdPXRbMF0ucmVwbGFjZSgvXFwkMC9nLGUpfSkpLGQuZm9yRWFjaCgodD0+e1wiXCI9PT10WzFdP2IuZGl2KHt0ZXh0OnRbMF0scGFkZGluZzpbMCwyLDAsMl19KTpiLmRpdih7dGV4dDp0WzBdLHBhZGRpbmc6WzAsMiwwLDJdLHdpZHRoOncoZCx5KSs0fSx7dGV4dDp0WzFdfSl9KSksYi5kaXYoKSksbS5sZW5ndGg+MCl7Y29uc3QgdD1tLm1hcCgodD0+dC5yZXBsYWNlKC9cXCQwL2csZSkpKS5qb2luKFwiXFxuXCIpO2IuZGl2KGAke3R9XFxuYCl9cmV0dXJuIGIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMqJC8sXCJcIil9LG4uY2FjaGVIZWxwTWVzc2FnZT1mdW5jdGlvbigpe0M9dGhpcy5oZWxwKCl9LG4uY2xlYXJDYWNoZWRIZWxwTWVzc2FnZT1mdW5jdGlvbigpe0M9dm9pZCAwfSxuLmhhc0NhY2hlZEhlbHBNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuISFDfSxuLnNob3dIZWxwPWU9Pntjb25zdCBzPXQuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0TG9nZ2VySW5zdGFuY2UoKTtlfHwoZT1cImVycm9yXCIpOyhcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2U6c1tlXSkobi5oZWxwKCkpfSxuLmZ1bmN0aW9uRGVzY3JpcHRpb249dD0+W1wiKFwiLHQubmFtZT9zLlBhcnNlci5kZWNhbWVsaXplKHQubmFtZSxcIi1cIik6aShcImdlbmVyYXRlZC12YWx1ZVwiKSxcIilcIl0uam9pbihcIlwiKSxuLnN0cmluZ2lmaWVkVmFsdWVzPWZ1bmN0aW9uKHQsZSl7bGV0IHM9XCJcIjtjb25zdCBpPWV8fFwiLCBcIixuPVtdLmNvbmNhdCh0KTtyZXR1cm4gdCYmbi5sZW5ndGg/KG4uZm9yRWFjaCgodD0+e3MubGVuZ3RoJiYocys9aSkscys9SlNPTi5zdHJpbmdpZnkodCl9KSkscyk6c307bGV0IE09bnVsbDtuLnZlcnNpb249dD0+e009dH0sbi5zaG93VmVyc2lvbj1lPT57Y29uc3Qgcz10LmdldEludGVybmFsTWV0aG9kcygpLmdldExvZ2dlckluc3RhbmNlKCk7ZXx8KGU9XCJlcnJvclwiKTsoXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOnNbZV0pKE0pfSxuLnJlc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBvPW51bGwsbD0hMSxjPVtdLGY9ITEsbT1bXSxkPVtdLHU9W10scD1nKHAsKGU9PiF0W2VdKSksbn07Y29uc3Qgaz1bXTtyZXR1cm4gbi5mcmVlemU9ZnVuY3Rpb24oKXtrLnB1c2goe2ZhaWxNZXNzYWdlOm8sZmFpbHVyZU91dHB1dDpsLHVzYWdlczpjLHVzYWdlRGlzYWJsZWQ6ZixlcGlsb2dzOm0sZXhhbXBsZXM6ZCxjb21tYW5kczp1LGRlc2NyaXB0aW9uczpwfSl9LG4udW5mcmVlemU9ZnVuY3Rpb24odD0hMSl7Y29uc3QgZT1rLnBvcCgpO2UmJih0PyhwPXsuLi5lLmRlc2NyaXB0aW9ucywuLi5wfSx1PVsuLi5lLmNvbW1hbmRzLC4uLnVdLGM9Wy4uLmUudXNhZ2VzLC4uLmNdLGQ9Wy4uLmUuZXhhbXBsZXMsLi4uZF0sbT1bLi4uZS5lcGlsb2dzLC4uLm1dKTooe2ZhaWxNZXNzYWdlOm8sZmFpbHVyZU91dHB1dDpsLHVzYWdlczpjLHVzYWdlRGlzYWJsZWQ6ZixlcGlsb2dzOm0sZXhhbXBsZXM6ZCxjb21tYW5kczp1LGRlc2NyaXB0aW9uczpwfT1lKSl9LG59ZnVuY3Rpb24gUyh0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdH1mdW5jdGlvbiAkKHQpe3JldHVybiBTKHQpP3QuaW5kZW50YXRpb246MH1mdW5jdGlvbiBJKHQpe3JldHVybiBTKHQpP3QudGV4dDp0fWNsYXNzIER7Y29uc3RydWN0b3IodCxlLHMsaSl7dmFyIG4scixvO3RoaXMueWFyZ3M9dCx0aGlzLnVzYWdlPWUsdGhpcy5jb21tYW5kPXMsdGhpcy5zaGltPWksdGhpcy5jb21wbGV0aW9uS2V5PVwiZ2V0LXlhcmdzLWNvbXBsZXRpb25zXCIsdGhpcy5hbGlhc2VzPW51bGwsdGhpcy5jdXN0b21Db21wbGV0aW9uRnVuY3Rpb249bnVsbCx0aGlzLmluZGV4QWZ0ZXJMYXN0UmVzZXQ9MCx0aGlzLnpzaFNoZWxsPW51bGwhPT0obz0obnVsbD09PShuPXRoaXMuc2hpbS5nZXRFbnYoXCJTSEVMTFwiKSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uaW5jbHVkZXMoXCJ6c2hcIikpfHwobnVsbD09PShyPXRoaXMuc2hpbS5nZXRFbnYoXCJaU0hfTkFNRVwiKSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuaW5jbHVkZXMoXCJ6c2hcIikpKSYmdm9pZCAwIT09byYmb31kZWZhdWx0Q29tcGxldGlvbih0LGUscyxpKXtjb25zdCBuPXRoaXMuY29tbWFuZC5nZXRDb21tYW5kSGFuZGxlcnMoKTtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8czsrK2UpaWYoblt0W2VdXSYmblt0W2VdXS5idWlsZGVyKXtjb25zdCBzPW5bdFtlXV0uYnVpbGRlcjtpZih4KHMpKXt0aGlzLmluZGV4QWZ0ZXJMYXN0UmVzZXQ9ZSsxO2NvbnN0IHQ9dGhpcy55YXJncy5nZXRJbnRlcm5hbE1ldGhvZHMoKS5yZXNldCgpO3JldHVybiBzKHQsITApLHQuYXJndn19Y29uc3Qgcj1bXTt0aGlzLmNvbW1hbmRDb21wbGV0aW9ucyhyLHQscyksdGhpcy5vcHRpb25Db21wbGV0aW9ucyhyLHQsZSxzKSx0aGlzLmNob2ljZXNGcm9tT3B0aW9uc0NvbXBsZXRpb25zKHIsdCxlLHMpLHRoaXMuY2hvaWNlc0Zyb21Qb3NpdGlvbmFsc0NvbXBsZXRpb25zKHIsdCxlLHMpLGkobnVsbCxyKX1jb21tYW5kQ29tcGxldGlvbnModCxlLHMpe2NvbnN0IGk9dGhpcy55YXJncy5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRDb250ZXh0KCkuY29tbWFuZHM7cy5tYXRjaCgvXi0vKXx8aVtpLmxlbmd0aC0xXT09PXN8fHRoaXMucHJldmlvdXNBcmdIYXNDaG9pY2VzKGUpfHx0aGlzLnVzYWdlLmdldENvbW1hbmRzKCkuZm9yRWFjaCgocz0+e2NvbnN0IGk9byhzWzBdKS5jbWQ7aWYoLTE9PT1lLmluZGV4T2YoaSkpaWYodGhpcy56c2hTaGVsbCl7Y29uc3QgZT1zWzFdfHxcIlwiO3QucHVzaChpLnJlcGxhY2UoLzovZyxcIlxcXFw6XCIpK1wiOlwiK2UpfWVsc2UgdC5wdXNoKGkpfSkpfW9wdGlvbkNvbXBsZXRpb25zKHQsZSxzLGkpe2lmKChpLm1hdGNoKC9eLS8pfHxcIlwiPT09aSYmMD09PXQubGVuZ3RoKSYmIXRoaXMucHJldmlvdXNBcmdIYXNDaG9pY2VzKGUpKXtjb25zdCBzPXRoaXMueWFyZ3MuZ2V0T3B0aW9ucygpLG49dGhpcy55YXJncy5nZXRHcm91cHMoKVt0aGlzLnVzYWdlLmdldFBvc2l0aW9uYWxHcm91cE5hbWUoKV18fFtdO09iamVjdC5rZXlzKHMua2V5KS5mb3JFYWNoKChyPT57Y29uc3Qgbz0hIXMuY29uZmlndXJhdGlvbltcImJvb2xlYW4tbmVnYXRpb25cIl0mJnMuYm9vbGVhbi5pbmNsdWRlcyhyKTtuLmluY2x1ZGVzKHIpfHxzLmhpZGRlbk9wdGlvbnMuaW5jbHVkZXMocil8fHRoaXMuYXJnc0NvbnRhaW5LZXkoZSxyLG8pfHwodGhpcy5jb21wbGV0ZU9wdGlvbktleShyLHQsaSksbyYmcy5kZWZhdWx0W3JdJiZ0aGlzLmNvbXBsZXRlT3B0aW9uS2V5KGBuby0ke3J9YCx0LGkpKX0pKX19Y2hvaWNlc0Zyb21PcHRpb25zQ29tcGxldGlvbnModCxlLHMsaSl7aWYodGhpcy5wcmV2aW91c0FyZ0hhc0Nob2ljZXMoZSkpe2NvbnN0IHM9dGhpcy5nZXRQcmV2aW91c0FyZ0Nob2ljZXMoZSk7cyYmcy5sZW5ndGg+MCYmdC5wdXNoKC4uLnMubWFwKCh0PT50LnJlcGxhY2UoLzovZyxcIlxcXFw6XCIpKSkpfX1jaG9pY2VzRnJvbVBvc2l0aW9uYWxzQ29tcGxldGlvbnModCxlLHMsaSl7aWYoXCJcIj09PWkmJnQubGVuZ3RoPjAmJnRoaXMucHJldmlvdXNBcmdIYXNDaG9pY2VzKGUpKXJldHVybjtjb25zdCBuPXRoaXMueWFyZ3MuZ2V0R3JvdXBzKClbdGhpcy51c2FnZS5nZXRQb3NpdGlvbmFsR3JvdXBOYW1lKCldfHxbXSxyPU1hdGgubWF4KHRoaXMuaW5kZXhBZnRlckxhc3RSZXNldCx0aGlzLnlhcmdzLmdldEludGVybmFsTWV0aG9kcygpLmdldENvbnRleHQoKS5jb21tYW5kcy5sZW5ndGgrMSksbz1uW3MuXy5sZW5ndGgtci0xXTtpZighbylyZXR1cm47Y29uc3QgYT10aGlzLnlhcmdzLmdldE9wdGlvbnMoKS5jaG9pY2VzW29dfHxbXTtmb3IoY29uc3QgZSBvZiBhKWUuc3RhcnRzV2l0aChpKSYmdC5wdXNoKGUucmVwbGFjZSgvOi9nLFwiXFxcXDpcIikpfWdldFByZXZpb3VzQXJnQ2hvaWNlcyh0KXtpZih0Lmxlbmd0aDwxKXJldHVybjtsZXQgZT10W3QubGVuZ3RoLTFdLHM9XCJcIjtpZighZS5zdGFydHNXaXRoKFwiLVwiKSYmdC5sZW5ndGg+MSYmKHM9ZSxlPXRbdC5sZW5ndGgtMl0pLCFlLnN0YXJ0c1dpdGgoXCItXCIpKXJldHVybjtjb25zdCBpPWUucmVwbGFjZSgvXi0rLyxcIlwiKSxuPXRoaXMueWFyZ3MuZ2V0T3B0aW9ucygpLHI9W2ksLi4udGhpcy55YXJncy5nZXRBbGlhc2VzKClbaV18fFtdXTtsZXQgbztmb3IoY29uc3QgdCBvZiByKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLmtleSx0KSYmQXJyYXkuaXNBcnJheShuLmNob2ljZXNbdF0pKXtvPW4uY2hvaWNlc1t0XTticmVha31yZXR1cm4gbz9vLmZpbHRlcigodD0+IXN8fHQuc3RhcnRzV2l0aChzKSkpOnZvaWQgMH1wcmV2aW91c0FyZ0hhc0Nob2ljZXModCl7Y29uc3QgZT10aGlzLmdldFByZXZpb3VzQXJnQ2hvaWNlcyh0KTtyZXR1cm4gdm9pZCAwIT09ZSYmZS5sZW5ndGg+MH1hcmdzQ29udGFpbktleSh0LGUscyl7Y29uc3QgaT1lPT4tMSE9PXQuaW5kZXhPZigoL15bXjAtOV0kLy50ZXN0KGUpP1wiLVwiOlwiLS1cIikrZSk7aWYoaShlKSlyZXR1cm4hMDtpZihzJiZpKGBuby0ke2V9YCkpcmV0dXJuITA7aWYodGhpcy5hbGlhc2VzKWZvcihjb25zdCB0IG9mIHRoaXMuYWxpYXNlc1tlXSlpZihpKHQpKXJldHVybiEwO3JldHVybiExfWNvbXBsZXRlT3B0aW9uS2V5KHQsZSxzKXtjb25zdCBpPXRoaXMudXNhZ2UuZ2V0RGVzY3JpcHRpb25zKCksbj0hL14tLS8udGVzdChzKSYmKHQ9Pi9eW14wLTldJC8udGVzdCh0KSkodCk/XCItXCI6XCItLVwiO2lmKHRoaXMuenNoU2hlbGwpe2NvbnN0IHM9aVt0XXx8XCJcIjtlLnB1c2gobitgJHt0LnJlcGxhY2UoLzovZyxcIlxcXFw6XCIpfToke3MucmVwbGFjZShcIl9feWFyZ3NTdHJpbmdfXzpcIixcIlwiKX1gKX1lbHNlIGUucHVzaChuK3QpfWN1c3RvbUNvbXBsZXRpb24odCxlLHMsaSl7aWYoZCh0aGlzLmN1c3RvbUNvbXBsZXRpb25GdW5jdGlvbixudWxsLHRoaXMuc2hpbSksdGhpcy5jdXN0b21Db21wbGV0aW9uRnVuY3Rpb24ubGVuZ3RoPDMpe2NvbnN0IHQ9dGhpcy5jdXN0b21Db21wbGV0aW9uRnVuY3Rpb24ocyxlKTtyZXR1cm4gZih0KT90LnRoZW4oKHQ9Pnt0aGlzLnNoaW0ucHJvY2Vzcy5uZXh0VGljaygoKCk9PntpKG51bGwsdCl9KSl9KSkuY2F0Y2goKHQ9Pnt0aGlzLnNoaW0ucHJvY2Vzcy5uZXh0VGljaygoKCk9PntpKHQsdm9pZCAwKX0pKX0pKTppKG51bGwsdCl9cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4zfSh0aGlzLmN1c3RvbUNvbXBsZXRpb25GdW5jdGlvbik/dGhpcy5jdXN0b21Db21wbGV0aW9uRnVuY3Rpb24ocyxlLCgobj1pKT0+dGhpcy5kZWZhdWx0Q29tcGxldGlvbih0LGUscyxuKSksKHQ9PntpKG51bGwsdCl9KSk6dGhpcy5jdXN0b21Db21wbGV0aW9uRnVuY3Rpb24ocyxlLCh0PT57aShudWxsLHQpfSkpfWdldENvbXBsZXRpb24odCxlKXtjb25zdCBzPXQubGVuZ3RoP3RbdC5sZW5ndGgtMV06XCJcIixpPXRoaXMueWFyZ3MucGFyc2UodCwhMCksbj10aGlzLmN1c3RvbUNvbXBsZXRpb25GdW5jdGlvbj9pPT50aGlzLmN1c3RvbUNvbXBsZXRpb24odCxpLHMsZSk6aT0+dGhpcy5kZWZhdWx0Q29tcGxldGlvbih0LGkscyxlKTtyZXR1cm4gZihpKT9pLnRoZW4obik6bihpKX1nZW5lcmF0ZUNvbXBsZXRpb25TY3JpcHQodCxlKXtsZXQgcz10aGlzLnpzaFNoZWxsPycjY29tcGRlZiB7e2FwcF9uYW1lfX1cXG4jIyMtYmVnaW4te3thcHBfbmFtZX19LWNvbXBsZXRpb25zLSMjI1xcbiNcXG4jIHlhcmdzIGNvbW1hbmQgY29tcGxldGlvbiBzY3JpcHRcXG4jXFxuIyBJbnN0YWxsYXRpb246IHt7YXBwX3BhdGh9fSB7e2NvbXBsZXRpb25fY29tbWFuZH19ID4+IH4vLnpzaHJjXFxuIyAgICBvciB7e2FwcF9wYXRofX0ge3tjb21wbGV0aW9uX2NvbW1hbmR9fSA+PiB+Ly56cHJvZmlsZSBvbiBPU1guXFxuI1xcbl97e2FwcF9uYW1lfX1feWFyZ3NfY29tcGxldGlvbnMoKVxcbntcXG4gIGxvY2FsIHJlcGx5XFxuICBsb2NhbCBzaT0kSUZTXFxuICBJRlM9JFxcJ1xcblxcJyByZXBseT0oJChDT01QX0NXT1JEPVwiJCgoQ1VSUkVOVC0xKSlcIiBDT01QX0xJTkU9XCIkQlVGRkVSXCIgQ09NUF9QT0lOVD1cIiRDVVJTT1JcIiB7e2FwcF9wYXRofX0gLS1nZXQteWFyZ3MtY29tcGxldGlvbnMgXCIke3dvcmRzW0BdfVwiKSlcXG4gIElGUz0kc2lcXG4gIF9kZXNjcmliZSBcXCd2YWx1ZXNcXCcgcmVwbHlcXG59XFxuY29tcGRlZiBfe3thcHBfbmFtZX19X3lhcmdzX2NvbXBsZXRpb25zIHt7YXBwX25hbWV9fVxcbiMjIy1lbmQte3thcHBfbmFtZX19LWNvbXBsZXRpb25zLSMjI1xcbic6JyMjIy1iZWdpbi17e2FwcF9uYW1lfX0tY29tcGxldGlvbnMtIyMjXFxuI1xcbiMgeWFyZ3MgY29tbWFuZCBjb21wbGV0aW9uIHNjcmlwdFxcbiNcXG4jIEluc3RhbGxhdGlvbjoge3thcHBfcGF0aH19IHt7Y29tcGxldGlvbl9jb21tYW5kfX0gPj4gfi8uYmFzaHJjXFxuIyAgICBvciB7e2FwcF9wYXRofX0ge3tjb21wbGV0aW9uX2NvbW1hbmR9fSA+PiB+Ly5iYXNoX3Byb2ZpbGUgb24gT1NYLlxcbiNcXG5fe3thcHBfbmFtZX19X3lhcmdzX2NvbXBsZXRpb25zKClcXG57XFxuICAgIGxvY2FsIGN1cl93b3JkIGFyZ3MgdHlwZV9saXN0XFxuXFxuICAgIGN1cl93b3JkPVwiJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfVwiXFxuICAgIGFyZ3M9KFwiJHtDT01QX1dPUkRTW0BdfVwiKVxcblxcbiAgICAjIGFzayB5YXJncyB0byBnZW5lcmF0ZSBjb21wbGV0aW9ucy5cXG4gICAgdHlwZV9saXN0PSQoe3thcHBfcGF0aH19IC0tZ2V0LXlhcmdzLWNvbXBsZXRpb25zIFwiJHthcmdzW0BdfVwiKVxcblxcbiAgICBDT01QUkVQTFk9KCAkKGNvbXBnZW4gLVcgXCIke3R5cGVfbGlzdH1cIiAtLSAke2N1cl93b3JkfSkgKVxcblxcbiAgICAjIGlmIG5vIG1hdGNoIHdhcyBmb3VuZCwgZmFsbCBiYWNrIHRvIGZpbGVuYW1lIGNvbXBsZXRpb25cXG4gICAgaWYgWyAkeyNDT01QUkVQTFlbQF19IC1lcSAwIF07IHRoZW5cXG4gICAgICBDT01QUkVQTFk9KClcXG4gICAgZmlcXG5cXG4gICAgcmV0dXJuIDBcXG59XFxuY29tcGxldGUgLW8gYmFzaGRlZmF1bHQgLW8gZGVmYXVsdCAtRiBfe3thcHBfbmFtZX19X3lhcmdzX2NvbXBsZXRpb25zIHt7YXBwX25hbWV9fVxcbiMjIy1lbmQte3thcHBfbmFtZX19LWNvbXBsZXRpb25zLSMjI1xcbic7Y29uc3QgaT10aGlzLnNoaW0ucGF0aC5iYXNlbmFtZSh0KTtyZXR1cm4gdC5tYXRjaCgvXFwuanMkLykmJih0PWAuLyR7dH1gKSxzPXMucmVwbGFjZSgve3thcHBfbmFtZX19L2csaSkscz1zLnJlcGxhY2UoL3t7Y29tcGxldGlvbl9jb21tYW5kfX0vZyxlKSxzLnJlcGxhY2UoL3t7YXBwX3BhdGh9fS9nLHQpfXJlZ2lzdGVyRnVuY3Rpb24odCl7dGhpcy5jdXN0b21Db21wbGV0aW9uRnVuY3Rpb249dH1zZXRQYXJzZWQodCl7dGhpcy5hbGlhc2VzPXQuYWxpYXNlc319ZnVuY3Rpb24gTih0LGUpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gZS5sZW5ndGg7aWYoMD09PWUubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtjb25zdCBzPVtdO2xldCBpLG47Zm9yKGk9MDtpPD1lLmxlbmd0aDtpKyspc1tpXT1baV07Zm9yKG49MDtuPD10Lmxlbmd0aDtuKyspc1swXVtuXT1uO2ZvcihpPTE7aTw9ZS5sZW5ndGg7aSsrKWZvcihuPTE7bjw9dC5sZW5ndGg7bisrKWUuY2hhckF0KGktMSk9PT10LmNoYXJBdChuLTEpP3NbaV1bbl09c1tpLTFdW24tMV06aT4xJiZuPjEmJmUuY2hhckF0KGktMik9PT10LmNoYXJBdChuLTEpJiZlLmNoYXJBdChpLTEpPT09dC5jaGFyQXQobi0yKT9zW2ldW25dPXNbaS0yXVtuLTJdKzE6c1tpXVtuXT1NYXRoLm1pbihzW2ktMV1bbi0xXSsxLE1hdGgubWluKHNbaV1bbi0xXSsxLHNbaS0xXVtuXSsxKSk7cmV0dXJuIHNbZS5sZW5ndGhdW3QubGVuZ3RoXX1jb25zdCBIPVtcIiQwXCIsXCItLVwiLFwiX1wiXTt2YXIgeixxLFcsRixVLEwsVixHLFIsVCxLLEIsWSxKLFosWCxRLHR0LGV0LHN0LGl0LG50LHJ0LG90LGF0LGh0LGx0LGN0LGZ0LGR0LHV0LHB0LGd0LG10O2NvbnN0IHl0PVN5bWJvbChcImNvcHlEb3VibGVEYXNoXCIpLGJ0PVN5bWJvbChcImNvcHlEb3VibGVEYXNoXCIpLHZ0PVN5bWJvbChcImRlbGV0ZUZyb21QYXJzZXJIaW50T2JqZWN0XCIpLE90PVN5bWJvbChcImVtaXRXYXJuaW5nXCIpLHd0PVN5bWJvbChcImZyZWV6ZVwiKSxDdD1TeW1ib2woXCJnZXREb2xsYXJaZXJvXCIpLGp0PVN5bWJvbChcImdldFBhcnNlckNvbmZpZ3VyYXRpb25cIiksX3Q9U3ltYm9sKFwiZ3Vlc3NMb2NhbGVcIiksTXQ9U3ltYm9sKFwiZ3Vlc3NWZXJzaW9uXCIpLGt0PVN5bWJvbChcInBhcnNlUG9zaXRpb25hbE51bWJlcnNcIikseHQ9U3ltYm9sKFwicGtnVXBcIiksRXQ9U3ltYm9sKFwicG9wdWxhdGVQYXJzZXJIaW50QXJyYXlcIiksQXQ9U3ltYm9sKFwicG9wdWxhdGVQYXJzZXJIaW50U2luZ2xlVmFsdWVEaWN0aW9uYXJ5XCIpLFB0PVN5bWJvbChcInBvcHVsYXRlUGFyc2VySGludEFycmF5RGljdGlvbmFyeVwiKSxTdD1TeW1ib2woXCJwb3B1bGF0ZVBhcnNlckhpbnREaWN0aW9uYXJ5XCIpLCR0PVN5bWJvbChcInNhbml0aXplS2V5XCIpLEl0PVN5bWJvbChcInNldEtleVwiKSxEdD1TeW1ib2woXCJ1bmZyZWV6ZVwiKSxOdD1TeW1ib2woXCJ2YWxpZGF0ZUFzeW5jXCIpLEh0PVN5bWJvbChcImdldENvbW1hbmRJbnN0YW5jZVwiKSx6dD1TeW1ib2woXCJnZXRDb250ZXh0XCIpLHF0PVN5bWJvbChcImdldEhhc091dHB1dFwiKSxXdD1TeW1ib2woXCJnZXRMb2dnZXJJbnN0YW5jZVwiKSxGdD1TeW1ib2woXCJnZXRQYXJzZUNvbnRleHRcIiksVXQ9U3ltYm9sKFwiZ2V0VXNhZ2VJbnN0YW5jZVwiKSxMdD1TeW1ib2woXCJnZXRWYWxpZGF0aW9uSW5zdGFuY2VcIiksVnQ9U3ltYm9sKFwiaGFzUGFyc2VDYWxsYmFja1wiKSxHdD1TeW1ib2woXCJpc0dsb2JhbENvbnRleHRcIiksUnQ9U3ltYm9sKFwicG9zdFByb2Nlc3NcIiksVHQ9U3ltYm9sKFwicmViYXNlXCIpLEt0PVN5bWJvbChcInJlc2V0XCIpLEJ0PVN5bWJvbChcInJ1bllhcmdzUGFyc2VyQW5kRXhlY3V0ZUNvbW1hbmRzXCIpLFl0PVN5bWJvbChcInJ1blZhbGlkYXRpb25cIiksSnQ9U3ltYm9sKFwic2V0SGFzT3V0cHV0XCIpLFp0PVN5bWJvbChcImtUcmFja01hbnVhbGx5U2V0S2V5c1wiKTtjbGFzcyBYdHtjb25zdHJ1Y3Rvcih0PVtdLGUscyxpKXt0aGlzLmN1c3RvbVNjcmlwdE5hbWU9ITEsdGhpcy5wYXJzZWQ9ITEsei5zZXQodGhpcyx2b2lkIDApLHEuc2V0KHRoaXMsdm9pZCAwKSxXLnNldCh0aGlzLHtjb21tYW5kczpbXSxmdWxsQ29tbWFuZHM6W119KSxGLnNldCh0aGlzLG51bGwpLFUuc2V0KHRoaXMsbnVsbCksTC5zZXQodGhpcyxcInNob3ctaGlkZGVuXCIpLFYuc2V0KHRoaXMsbnVsbCksRy5zZXQodGhpcywhMCksUi5zZXQodGhpcyx7fSksVC5zZXQodGhpcywhMCksSy5zZXQodGhpcyxbXSksQi5zZXQodGhpcyx2b2lkIDApLFkuc2V0KHRoaXMse30pLEouc2V0KHRoaXMsITEpLFouc2V0KHRoaXMsbnVsbCksWC5zZXQodGhpcywhMCksUS5zZXQodGhpcyx2b2lkIDApLHR0LnNldCh0aGlzLFwiXCIpLGV0LnNldCh0aGlzLHZvaWQgMCksc3Quc2V0KHRoaXMsdm9pZCAwKSxpdC5zZXQodGhpcyx7fSksbnQuc2V0KHRoaXMsbnVsbCkscnQuc2V0KHRoaXMsbnVsbCksb3Quc2V0KHRoaXMse30pLGF0LnNldCh0aGlzLHt9KSxodC5zZXQodGhpcyx2b2lkIDApLGx0LnNldCh0aGlzLCExKSxjdC5zZXQodGhpcyx2b2lkIDApLGZ0LnNldCh0aGlzLCExKSxkdC5zZXQodGhpcywhMSksdXQuc2V0KHRoaXMsITEpLHB0LnNldCh0aGlzLHZvaWQgMCksZ3Quc2V0KHRoaXMsbnVsbCksbXQuc2V0KHRoaXMsdm9pZCAwKSxPKHRoaXMsY3QsaSxcImZcIiksTyh0aGlzLGh0LHQsXCJmXCIpLE8odGhpcyxxLGUsXCJmXCIpLE8odGhpcyxzdCxzLFwiZlwiKSxPKHRoaXMsQixuZXcgdyh0aGlzKSxcImZcIiksdGhpcy4kMD10aGlzW0N0XSgpLHRoaXNbS3RdKCksTyh0aGlzLHosdih0aGlzLHosXCJmXCIpLFwiZlwiKSxPKHRoaXMscHQsdih0aGlzLHB0LFwiZlwiKSxcImZcIiksTyh0aGlzLG10LHYodGhpcyxtdCxcImZcIiksXCJmXCIpLE8odGhpcyxldCx2KHRoaXMsZXQsXCJmXCIpLFwiZlwiKSx2KHRoaXMsZXQsXCJmXCIpLnNob3dIaWRkZW5PcHQ9dih0aGlzLEwsXCJmXCIpLE8odGhpcyxRLHRoaXNbYnRdKCksXCJmXCIpfWFkZEhlbHBPcHQodCxlKXtyZXR1cm4gaChcIltzdHJpbmd8Ym9vbGVhbl0gW3N0cmluZ11cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKSx2KHRoaXMsWixcImZcIikmJih0aGlzW3Z0XSh2KHRoaXMsWixcImZcIikpLE8odGhpcyxaLG51bGwsXCJmXCIpKSwhMT09PXQmJnZvaWQgMD09PWV8fChPKHRoaXMsWixcInN0cmluZ1wiPT10eXBlb2YgdD90OlwiaGVscFwiLFwiZlwiKSx0aGlzLmJvb2xlYW4odih0aGlzLFosXCJmXCIpKSx0aGlzLmRlc2NyaWJlKHYodGhpcyxaLFwiZlwiKSxlfHx2KHRoaXMscHQsXCJmXCIpLmRlZmVyWTE4bkxvb2t1cChcIlNob3cgaGVscFwiKSkpLHRoaXN9aGVscCh0LGUpe3JldHVybiB0aGlzLmFkZEhlbHBPcHQodCxlKX1hZGRTaG93SGlkZGVuT3B0KHQsZSl7aWYoaChcIltzdHJpbmd8Ym9vbGVhbl0gW3N0cmluZ11cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKSwhMT09PXQmJnZvaWQgMD09PWUpcmV0dXJuIHRoaXM7Y29uc3Qgcz1cInN0cmluZ1wiPT10eXBlb2YgdD90OnYodGhpcyxMLFwiZlwiKTtyZXR1cm4gdGhpcy5ib29sZWFuKHMpLHRoaXMuZGVzY3JpYmUocyxlfHx2KHRoaXMscHQsXCJmXCIpLmRlZmVyWTE4bkxvb2t1cChcIlNob3cgaGlkZGVuIG9wdGlvbnNcIikpLHYodGhpcyxldCxcImZcIikuc2hvd0hpZGRlbk9wdD1zLHRoaXN9c2hvd0hpZGRlbih0LGUpe3JldHVybiB0aGlzLmFkZFNob3dIaWRkZW5PcHQodCxlKX1hbGlhcyh0LGUpe3JldHVybiBoKFwiPG9iamVjdHxzdHJpbmd8YXJyYXk+IFtzdHJpbmd8YXJyYXldXCIsW3QsZV0sYXJndW1lbnRzLmxlbmd0aCksdGhpc1tQdF0odGhpcy5hbGlhcy5iaW5kKHRoaXMpLFwiYWxpYXNcIix0LGUpLHRoaXN9YXJyYXkodCl7cmV0dXJuIGgoXCI8YXJyYXl8c3RyaW5nPlwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSx0aGlzW0V0XShcImFycmF5XCIsdCksdGhpc1tadF0odCksdGhpc31ib29sZWFuKHQpe3JldHVybiBoKFwiPGFycmF5fHN0cmluZz5cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksdGhpc1tFdF0oXCJib29sZWFuXCIsdCksdGhpc1tadF0odCksdGhpc31jaGVjayh0LGUpe3JldHVybiBoKFwiPGZ1bmN0aW9uPiBbYm9vbGVhbl1cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKSx0aGlzLm1pZGRsZXdhcmUoKChlLHMpPT5qKCgoKT0+dChlLHMuZ2V0T3B0aW9ucygpKSksKHM9PihzPyhcInN0cmluZ1wiPT10eXBlb2Ygc3x8cyBpbnN0YW5jZW9mIEVycm9yKSYmdih0aGlzLHB0LFwiZlwiKS5mYWlsKHMudG9TdHJpbmcoKSxzKTp2KHRoaXMscHQsXCJmXCIpLmZhaWwodih0aGlzLGN0LFwiZlwiKS55MThuLl9fKFwiQXJndW1lbnQgY2hlY2sgZmFpbGVkOiAlc1wiLHQudG9TdHJpbmcoKSkpLGUpKSwodD0+KHYodGhpcyxwdCxcImZcIikuZmFpbCh0Lm1lc3NhZ2U/dC5tZXNzYWdlOnQudG9TdHJpbmcoKSx0KSxlKSkpKSwhMSxlKSx0aGlzfWNob2ljZXModCxlKXtyZXR1cm4gaChcIjxvYmplY3R8c3RyaW5nfGFycmF5PiBbc3RyaW5nfGFycmF5XVwiLFt0LGVdLGFyZ3VtZW50cy5sZW5ndGgpLHRoaXNbUHRdKHRoaXMuY2hvaWNlcy5iaW5kKHRoaXMpLFwiY2hvaWNlc1wiLHQsZSksdGhpc31jb2VyY2UodCxzKXtpZihoKFwiPG9iamVjdHxzdHJpbmd8YXJyYXk+IFtmdW5jdGlvbl1cIixbdCxzXSxhcmd1bWVudHMubGVuZ3RoKSxBcnJheS5pc0FycmF5KHQpKXtpZighcyl0aHJvdyBuZXcgZShcImNvZXJjZSBjYWxsYmFjayBtdXN0IGJlIHByb3ZpZGVkXCIpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5jb2VyY2UoZSxzKTtyZXR1cm4gdGhpc31pZihcIm9iamVjdFwiPT10eXBlb2YgdCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXModCkpdGhpcy5jb2VyY2UoZSx0W2VdKTtyZXR1cm4gdGhpc31pZighcyl0aHJvdyBuZXcgZShcImNvZXJjZSBjYWxsYmFjayBtdXN0IGJlIHByb3ZpZGVkXCIpO3JldHVybiB2KHRoaXMsZXQsXCJmXCIpLmtleVt0XT0hMCx2KHRoaXMsQixcImZcIikuYWRkQ29lcmNlTWlkZGxld2FyZSgoKGksbik9PntsZXQgcjtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksdCk/aigoKCk9PihyPW4uZ2V0QWxpYXNlcygpLHMoaVt0XSkpKSwoZT0+e2lbdF09ZTtjb25zdCBzPW4uZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0UGFyc2VyQ29uZmlndXJhdGlvbigpW1wic3RyaXAtYWxpYXNlZFwiXTtpZihyW3RdJiYhMCE9PXMpZm9yKGNvbnN0IHMgb2Ygclt0XSlpW3NdPWU7cmV0dXJuIGl9KSwodD0+e3Rocm93IG5ldyBlKHQubWVzc2FnZSl9KSk6aX0pLHQpLHRoaXN9Y29uZmxpY3RzKHQsZSl7cmV0dXJuIGgoXCI8c3RyaW5nfG9iamVjdD4gW3N0cmluZ3xhcnJheV1cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKSx2KHRoaXMsbXQsXCJmXCIpLmNvbmZsaWN0cyh0LGUpLHRoaXN9Y29uZmlnKHQ9XCJjb25maWdcIixlLHMpe3JldHVybiBoKFwiW29iamVjdHxzdHJpbmddIFtzdHJpbmd8ZnVuY3Rpb25dIFtmdW5jdGlvbl1cIixbdCxlLHNdLGFyZ3VtZW50cy5sZW5ndGgpLFwib2JqZWN0XCIhPXR5cGVvZiB0fHxBcnJheS5pc0FycmF5KHQpPyhcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYocz1lLGU9dm9pZCAwKSx0aGlzLmRlc2NyaWJlKHQsZXx8dih0aGlzLHB0LFwiZlwiKS5kZWZlclkxOG5Mb29rdXAoXCJQYXRoIHRvIEpTT04gY29uZmlnIGZpbGVcIikpLChBcnJheS5pc0FycmF5KHQpP3Q6W3RdKS5mb3JFYWNoKCh0PT57dih0aGlzLGV0LFwiZlwiKS5jb25maWdbdF09c3x8ITB9KSksdGhpcyk6KHQ9bih0LHYodGhpcyxxLFwiZlwiKSx0aGlzW2p0XSgpW1wiZGVlcC1tZXJnZS1jb25maWdcIl18fCExLHYodGhpcyxjdCxcImZcIikpLHYodGhpcyxldCxcImZcIikuY29uZmlnT2JqZWN0cz0odih0aGlzLGV0LFwiZlwiKS5jb25maWdPYmplY3RzfHxbXSkuY29uY2F0KHQpLHRoaXMpfWNvbXBsZXRpb24odCxlLHMpe3JldHVybiBoKFwiW3N0cmluZ10gW3N0cmluZ3xib29sZWFufGZ1bmN0aW9uXSBbZnVuY3Rpb25dXCIsW3QsZSxzXSxhcmd1bWVudHMubGVuZ3RoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYocz1lLGU9dm9pZCAwKSxPKHRoaXMsVSx0fHx2KHRoaXMsVSxcImZcIil8fFwiY29tcGxldGlvblwiLFwiZlwiKSxlfHwhMT09PWV8fChlPVwiZ2VuZXJhdGUgY29tcGxldGlvbiBzY3JpcHRcIiksdGhpcy5jb21tYW5kKHYodGhpcyxVLFwiZlwiKSxlKSxzJiZ2KHRoaXMsRixcImZcIikucmVnaXN0ZXJGdW5jdGlvbihzKSx0aGlzfWNvbW1hbmQodCxlLHMsaSxuLHIpe3JldHVybiBoKFwiPHN0cmluZ3xhcnJheXxvYmplY3Q+IFtzdHJpbmd8Ym9vbGVhbl0gW2Z1bmN0aW9ufG9iamVjdF0gW2Z1bmN0aW9uXSBbYXJyYXldIFtib29sZWFufHN0cmluZ11cIixbdCxlLHMsaSxuLHJdLGFyZ3VtZW50cy5sZW5ndGgpLHYodGhpcyx6LFwiZlwiKS5hZGRIYW5kbGVyKHQsZSxzLGksbixyKSx0aGlzfWNvbW1hbmRzKHQsZSxzLGksbixyKXtyZXR1cm4gdGhpcy5jb21tYW5kKHQsZSxzLGksbixyKX1jb21tYW5kRGlyKHQsZSl7aChcIjxzdHJpbmc+IFtvYmplY3RdXCIsW3QsZV0sYXJndW1lbnRzLmxlbmd0aCk7Y29uc3Qgcz12KHRoaXMsc3QsXCJmXCIpfHx2KHRoaXMsY3QsXCJmXCIpLnJlcXVpcmU7cmV0dXJuIHYodGhpcyx6LFwiZlwiKS5hZGREaXJlY3RvcnkodCxzLHYodGhpcyxjdCxcImZcIikuZ2V0Q2FsbGVyRmlsZSgpLGUpLHRoaXN9Y291bnQodCl7cmV0dXJuIGgoXCI8YXJyYXl8c3RyaW5nPlwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSx0aGlzW0V0XShcImNvdW50XCIsdCksdGhpc1tadF0odCksdGhpc31kZWZhdWx0KHQsZSxzKXtyZXR1cm4gaChcIjxvYmplY3R8c3RyaW5nfGFycmF5PiBbKl0gW3N0cmluZ11cIixbdCxlLHNdLGFyZ3VtZW50cy5sZW5ndGgpLHMmJih1KHQsdih0aGlzLGN0LFwiZlwiKSksdih0aGlzLGV0LFwiZlwiKS5kZWZhdWx0RGVzY3JpcHRpb25bdF09cyksXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKHUodCx2KHRoaXMsY3QsXCJmXCIpKSx2KHRoaXMsZXQsXCJmXCIpLmRlZmF1bHREZXNjcmlwdGlvblt0XXx8KHYodGhpcyxldCxcImZcIikuZGVmYXVsdERlc2NyaXB0aW9uW3RdPXYodGhpcyxwdCxcImZcIikuZnVuY3Rpb25EZXNjcmlwdGlvbihlKSksZT1lLmNhbGwoKSksdGhpc1tBdF0odGhpcy5kZWZhdWx0LmJpbmQodGhpcyksXCJkZWZhdWx0XCIsdCxlKSx0aGlzfWRlZmF1bHRzKHQsZSxzKXtyZXR1cm4gdGhpcy5kZWZhdWx0KHQsZSxzKX1kZW1hbmRDb21tYW5kKHQ9MSxlLHMsaSl7cmV0dXJuIGgoXCJbbnVtYmVyXSBbbnVtYmVyfHN0cmluZ10gW3N0cmluZ3xudWxsfHVuZGVmaW5lZF0gW3N0cmluZ3xudWxsfHVuZGVmaW5lZF1cIixbdCxlLHMsaV0sYXJndW1lbnRzLmxlbmd0aCksXCJudW1iZXJcIiE9dHlwZW9mIGUmJihzPWUsZT0xLzApLHRoaXMuZ2xvYmFsKFwiX1wiLCExKSx2KHRoaXMsZXQsXCJmXCIpLmRlbWFuZGVkQ29tbWFuZHMuXz17bWluOnQsbWF4OmUsbWluTXNnOnMsbWF4TXNnOml9LHRoaXN9ZGVtYW5kKHQsZSxzKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8oZS5mb3JFYWNoKCh0PT57ZChzLCEwLHYodGhpcyxjdCxcImZcIikpLHRoaXMuZGVtYW5kT3B0aW9uKHQscyl9KSksZT0xLzApOlwibnVtYmVyXCIhPXR5cGVvZiBlJiYocz1lLGU9MS8wKSxcIm51bWJlclwiPT10eXBlb2YgdD8oZChzLCEwLHYodGhpcyxjdCxcImZcIikpLHRoaXMuZGVtYW5kQ29tbWFuZCh0LGUscyxzKSk6QXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2goKHQ9PntkKHMsITAsdih0aGlzLGN0LFwiZlwiKSksdGhpcy5kZW1hbmRPcHRpb24odCxzKX0pKTpcInN0cmluZ1wiPT10eXBlb2Ygcz90aGlzLmRlbWFuZE9wdGlvbih0LHMpOiEwIT09cyYmdm9pZCAwIT09c3x8dGhpcy5kZW1hbmRPcHRpb24odCksdGhpc31kZW1hbmRPcHRpb24odCxlKXtyZXR1cm4gaChcIjxvYmplY3R8c3RyaW5nfGFycmF5PiBbc3RyaW5nXVwiLFt0LGVdLGFyZ3VtZW50cy5sZW5ndGgpLHRoaXNbQXRdKHRoaXMuZGVtYW5kT3B0aW9uLmJpbmQodGhpcyksXCJkZW1hbmRlZE9wdGlvbnNcIix0LGUpLHRoaXN9ZGVwcmVjYXRlT3B0aW9uKHQsZSl7cmV0dXJuIGgoXCI8c3RyaW5nPiBbc3RyaW5nfGJvb2xlYW5dXCIsW3QsZV0sYXJndW1lbnRzLmxlbmd0aCksdih0aGlzLGV0LFwiZlwiKS5kZXByZWNhdGVkT3B0aW9uc1t0XT1lLHRoaXN9ZGVzY3JpYmUodCxlKXtyZXR1cm4gaChcIjxvYmplY3R8c3RyaW5nfGFycmF5PiBbc3RyaW5nXVwiLFt0LGVdLGFyZ3VtZW50cy5sZW5ndGgpLHRoaXNbSXRdKHQsITApLHYodGhpcyxwdCxcImZcIikuZGVzY3JpYmUodCxlKSx0aGlzfWRldGVjdExvY2FsZSh0KXtyZXR1cm4gaChcIjxib29sZWFuPlwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSxPKHRoaXMsRyx0LFwiZlwiKSx0aGlzfWVudih0KXtyZXR1cm4gaChcIltzdHJpbmd8Ym9vbGVhbl1cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksITE9PT10P2RlbGV0ZSB2KHRoaXMsZXQsXCJmXCIpLmVudlByZWZpeDp2KHRoaXMsZXQsXCJmXCIpLmVudlByZWZpeD10fHxcIlwiLHRoaXN9ZXBpbG9ndWUodCl7cmV0dXJuIGgoXCI8c3RyaW5nPlwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSx2KHRoaXMscHQsXCJmXCIpLmVwaWxvZyh0KSx0aGlzfWVwaWxvZyh0KXtyZXR1cm4gdGhpcy5lcGlsb2d1ZSh0KX1leGFtcGxlKHQsZSl7cmV0dXJuIGgoXCI8c3RyaW5nfGFycmF5PiBbc3RyaW5nXVwiLFt0LGVdLGFyZ3VtZW50cy5sZW5ndGgpLEFycmF5LmlzQXJyYXkodCk/dC5mb3JFYWNoKCh0PT50aGlzLmV4YW1wbGUoLi4udCkpKTp2KHRoaXMscHQsXCJmXCIpLmV4YW1wbGUodCxlKSx0aGlzfWV4aXQodCxlKXtPKHRoaXMsSiwhMCxcImZcIiksTyh0aGlzLFYsZSxcImZcIiksdih0aGlzLFQsXCJmXCIpJiZ2KHRoaXMsY3QsXCJmXCIpLnByb2Nlc3MuZXhpdCh0KX1leGl0UHJvY2Vzcyh0PSEwKXtyZXR1cm4gaChcIltib29sZWFuXVwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSxPKHRoaXMsVCx0LFwiZlwiKSx0aGlzfWZhaWwodCl7aWYoaChcIjxmdW5jdGlvbnxib29sZWFuPlwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSxcImJvb2xlYW5cIj09dHlwZW9mIHQmJiExIT09dCl0aHJvdyBuZXcgZShcIkludmFsaWQgZmlyc3QgYXJndW1lbnQuIEV4cGVjdGVkIGZ1bmN0aW9uIG9yIGJvb2xlYW4gJ2ZhbHNlJ1wiKTtyZXR1cm4gdih0aGlzLHB0LFwiZlwiKS5mYWlsRm4odCksdGhpc31nZXRBbGlhc2VzKCl7cmV0dXJuIHRoaXMucGFyc2VkP3RoaXMucGFyc2VkLmFsaWFzZXM6e319YXN5bmMgZ2V0Q29tcGxldGlvbih0LGUpe3JldHVybiBoKFwiPGFycmF5PiBbZnVuY3Rpb25dXCIsW3QsZV0sYXJndW1lbnRzLmxlbmd0aCksZT92KHRoaXMsRixcImZcIikuZ2V0Q29tcGxldGlvbih0LGUpOm5ldyBQcm9taXNlKCgoZSxzKT0+e3YodGhpcyxGLFwiZlwiKS5nZXRDb21wbGV0aW9uKHQsKCh0LGkpPT57dD9zKHQpOmUoaSl9KSl9KSl9Z2V0RGVtYW5kZWRPcHRpb25zKCl7cmV0dXJuIGgoW10sMCksdih0aGlzLGV0LFwiZlwiKS5kZW1hbmRlZE9wdGlvbnN9Z2V0RGVtYW5kZWRDb21tYW5kcygpe3JldHVybiBoKFtdLDApLHYodGhpcyxldCxcImZcIikuZGVtYW5kZWRDb21tYW5kc31nZXREZXByZWNhdGVkT3B0aW9ucygpe3JldHVybiBoKFtdLDApLHYodGhpcyxldCxcImZcIikuZGVwcmVjYXRlZE9wdGlvbnN9Z2V0RGV0ZWN0TG9jYWxlKCl7cmV0dXJuIHYodGhpcyxHLFwiZlwiKX1nZXRFeGl0UHJvY2Vzcygpe3JldHVybiB2KHRoaXMsVCxcImZcIil9Z2V0R3JvdXBzKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdih0aGlzLFksXCJmXCIpLHYodGhpcyxhdCxcImZcIikpfWdldEhlbHAoKXtpZihPKHRoaXMsSiwhMCxcImZcIiksIXYodGhpcyxwdCxcImZcIikuaGFzQ2FjaGVkSGVscE1lc3NhZ2UoKSl7aWYoIXRoaXMucGFyc2VkKXtjb25zdCB0PXRoaXNbQnRdKHYodGhpcyxodCxcImZcIiksdm9pZCAwLHZvaWQgMCwwLCEwKTtpZihmKHQpKXJldHVybiB0LnRoZW4oKCgpPT52KHRoaXMscHQsXCJmXCIpLmhlbHAoKSkpfWNvbnN0IHQ9dih0aGlzLHosXCJmXCIpLnJ1bkRlZmF1bHRCdWlsZGVyT24odGhpcyk7aWYoZih0KSlyZXR1cm4gdC50aGVuKCgoKT0+dih0aGlzLHB0LFwiZlwiKS5oZWxwKCkpKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYodGhpcyxwdCxcImZcIikuaGVscCgpKX1nZXRPcHRpb25zKCl7cmV0dXJuIHYodGhpcyxldCxcImZcIil9Z2V0U3RyaWN0KCl7cmV0dXJuIHYodGhpcyxmdCxcImZcIil9Z2V0U3RyaWN0Q29tbWFuZHMoKXtyZXR1cm4gdih0aGlzLGR0LFwiZlwiKX1nZXRTdHJpY3RPcHRpb25zKCl7cmV0dXJuIHYodGhpcyx1dCxcImZcIil9Z2xvYmFsKHQsZSl7cmV0dXJuIGgoXCI8c3RyaW5nfGFycmF5PiBbYm9vbGVhbl1cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKSx0PVtdLmNvbmNhdCh0KSwhMSE9PWU/dih0aGlzLGV0LFwiZlwiKS5sb2NhbD12KHRoaXMsZXQsXCJmXCIpLmxvY2FsLmZpbHRlcigoZT0+LTE9PT10LmluZGV4T2YoZSkpKTp0LmZvckVhY2goKHQ9Pnt2KHRoaXMsZXQsXCJmXCIpLmxvY2FsLmluY2x1ZGVzKHQpfHx2KHRoaXMsZXQsXCJmXCIpLmxvY2FsLnB1c2godCl9KSksdGhpc31ncm91cCh0LGUpe2goXCI8c3RyaW5nfGFycmF5PiA8c3RyaW5nPlwiLFt0LGVdLGFyZ3VtZW50cy5sZW5ndGgpO2NvbnN0IHM9dih0aGlzLGF0LFwiZlwiKVtlXXx8dih0aGlzLFksXCJmXCIpW2VdO3YodGhpcyxhdCxcImZcIilbZV0mJmRlbGV0ZSB2KHRoaXMsYXQsXCJmXCIpW2VdO2NvbnN0IGk9e307cmV0dXJuIHYodGhpcyxZLFwiZlwiKVtlXT0oc3x8W10pLmNvbmNhdCh0KS5maWx0ZXIoKHQ9PiFpW3RdJiYoaVt0XT0hMCkpKSx0aGlzfWhpZGUodCl7cmV0dXJuIGgoXCI8c3RyaW5nPlwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSx2KHRoaXMsZXQsXCJmXCIpLmhpZGRlbk9wdGlvbnMucHVzaCh0KSx0aGlzfWltcGxpZXModCxlKXtyZXR1cm4gaChcIjxzdHJpbmd8b2JqZWN0PiBbbnVtYmVyfHN0cmluZ3xhcnJheV1cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKSx2KHRoaXMsbXQsXCJmXCIpLmltcGxpZXModCxlKSx0aGlzfWxvY2FsZSh0KXtyZXR1cm4gaChcIltzdHJpbmddXCIsW3RdLGFyZ3VtZW50cy5sZW5ndGgpLHZvaWQgMD09PXQ/KHRoaXNbX3RdKCksdih0aGlzLGN0LFwiZlwiKS55MThuLmdldExvY2FsZSgpKTooTyh0aGlzLEcsITEsXCJmXCIpLHYodGhpcyxjdCxcImZcIikueTE4bi5zZXRMb2NhbGUodCksdGhpcyl9bWlkZGxld2FyZSh0LGUscyl7cmV0dXJuIHYodGhpcyxCLFwiZlwiKS5hZGRNaWRkbGV3YXJlKHQsISFlLHMpfW5hcmdzKHQsZSl7cmV0dXJuIGgoXCI8c3RyaW5nfG9iamVjdHxhcnJheT4gW251bWJlcl1cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKSx0aGlzW0F0XSh0aGlzLm5hcmdzLmJpbmQodGhpcyksXCJuYXJnXCIsdCxlKSx0aGlzfW5vcm1hbGl6ZSh0KXtyZXR1cm4gaChcIjxhcnJheXxzdHJpbmc+XCIsW3RdLGFyZ3VtZW50cy5sZW5ndGgpLHRoaXNbRXRdKFwibm9ybWFsaXplXCIsdCksdGhpc31udW1iZXIodCl7cmV0dXJuIGgoXCI8YXJyYXl8c3RyaW5nPlwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSx0aGlzW0V0XShcIm51bWJlclwiLHQpLHRoaXNbWnRdKHQpLHRoaXN9b3B0aW9uKHQsZSl7aWYoaChcIjxzdHJpbmd8b2JqZWN0PiBbb2JqZWN0XVwiLFt0LGVdLGFyZ3VtZW50cy5sZW5ndGgpLFwib2JqZWN0XCI9PXR5cGVvZiB0KU9iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pnt0aGlzLm9wdGlvbnMoZSx0W2VdKX0pKTtlbHNle1wib2JqZWN0XCIhPXR5cGVvZiBlJiYoZT17fSksdGhpc1tadF0odCksIXYodGhpcyxndCxcImZcIil8fFwidmVyc2lvblwiIT09dCYmXCJ2ZXJzaW9uXCIhPT0obnVsbD09ZT92b2lkIDA6ZS5hbGlhcyl8fHRoaXNbT3RdKFsnXCJ2ZXJzaW9uXCIgaXMgYSByZXNlcnZlZCB3b3JkLicsXCJQbGVhc2UgZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6XCIsJy0gRGlzYWJsZSB2ZXJzaW9uIHdpdGggYHlhcmdzLnZlcnNpb24oZmFsc2UpYCBpZiB1c2luZyBcInZlcnNpb25cIiBhcyBhbiBvcHRpb24nLFwiLSBVc2UgdGhlIGJ1aWx0LWluIGB5YXJncy52ZXJzaW9uYCBtZXRob2QgaW5zdGVhZCAoaWYgYXBwbGljYWJsZSlcIixcIi0gVXNlIGEgZGlmZmVyZW50IG9wdGlvbiBrZXlcIixcImh0dHBzOi8veWFyZ3MuanMub3JnL2RvY3MvI2FwaS1yZWZlcmVuY2UtdmVyc2lvblwiXS5qb2luKFwiXFxuXCIpLHZvaWQgMCxcInZlcnNpb25XYXJuaW5nXCIpLHYodGhpcyxldCxcImZcIikua2V5W3RdPSEwLGUuYWxpYXMmJnRoaXMuYWxpYXModCxlLmFsaWFzKTtjb25zdCBzPWUuZGVwcmVjYXRlfHxlLmRlcHJlY2F0ZWQ7cyYmdGhpcy5kZXByZWNhdGVPcHRpb24odCxzKTtjb25zdCBpPWUuZGVtYW5kfHxlLnJlcXVpcmVkfHxlLnJlcXVpcmU7aSYmdGhpcy5kZW1hbmQodCxpKSxlLmRlbWFuZE9wdGlvbiYmdGhpcy5kZW1hbmRPcHRpb24odCxcInN0cmluZ1wiPT10eXBlb2YgZS5kZW1hbmRPcHRpb24/ZS5kZW1hbmRPcHRpb246dm9pZCAwKSxlLmNvbmZsaWN0cyYmdGhpcy5jb25mbGljdHModCxlLmNvbmZsaWN0cyksXCJkZWZhdWx0XCJpbiBlJiZ0aGlzLmRlZmF1bHQodCxlLmRlZmF1bHQpLHZvaWQgMCE9PWUuaW1wbGllcyYmdGhpcy5pbXBsaWVzKHQsZS5pbXBsaWVzKSx2b2lkIDAhPT1lLm5hcmdzJiZ0aGlzLm5hcmdzKHQsZS5uYXJncyksZS5jb25maWcmJnRoaXMuY29uZmlnKHQsZS5jb25maWdQYXJzZXIpLGUubm9ybWFsaXplJiZ0aGlzLm5vcm1hbGl6ZSh0KSxlLmNob2ljZXMmJnRoaXMuY2hvaWNlcyh0LGUuY2hvaWNlcyksZS5jb2VyY2UmJnRoaXMuY29lcmNlKHQsZS5jb2VyY2UpLGUuZ3JvdXAmJnRoaXMuZ3JvdXAodCxlLmdyb3VwKSwoZS5ib29sZWFufHxcImJvb2xlYW5cIj09PWUudHlwZSkmJih0aGlzLmJvb2xlYW4odCksZS5hbGlhcyYmdGhpcy5ib29sZWFuKGUuYWxpYXMpKSwoZS5hcnJheXx8XCJhcnJheVwiPT09ZS50eXBlKSYmKHRoaXMuYXJyYXkodCksZS5hbGlhcyYmdGhpcy5hcnJheShlLmFsaWFzKSksKGUubnVtYmVyfHxcIm51bWJlclwiPT09ZS50eXBlKSYmKHRoaXMubnVtYmVyKHQpLGUuYWxpYXMmJnRoaXMubnVtYmVyKGUuYWxpYXMpKSwoZS5zdHJpbmd8fFwic3RyaW5nXCI9PT1lLnR5cGUpJiYodGhpcy5zdHJpbmcodCksZS5hbGlhcyYmdGhpcy5zdHJpbmcoZS5hbGlhcykpLChlLmNvdW50fHxcImNvdW50XCI9PT1lLnR5cGUpJiZ0aGlzLmNvdW50KHQpLFwiYm9vbGVhblwiPT10eXBlb2YgZS5nbG9iYWwmJnRoaXMuZ2xvYmFsKHQsZS5nbG9iYWwpLGUuZGVmYXVsdERlc2NyaXB0aW9uJiYodih0aGlzLGV0LFwiZlwiKS5kZWZhdWx0RGVzY3JpcHRpb25bdF09ZS5kZWZhdWx0RGVzY3JpcHRpb24pLGUuc2tpcFZhbGlkYXRpb24mJnRoaXMuc2tpcFZhbGlkYXRpb24odCk7Y29uc3Qgbj1lLmRlc2NyaWJlfHxlLmRlc2NyaXB0aW9ufHxlLmRlc2M7dGhpcy5kZXNjcmliZSh0LG4pLGUuaGlkZGVuJiZ0aGlzLmhpZGUodCksZS5yZXF1aXJlc0FyZyYmdGhpcy5yZXF1aXJlc0FyZyh0KX1yZXR1cm4gdGhpc31vcHRpb25zKHQsZSl7cmV0dXJuIHRoaXMub3B0aW9uKHQsZSl9cGFyc2UodCxlLHMpe2goXCJbc3RyaW5nfGFycmF5XSBbZnVuY3Rpb258Ym9vbGVhbnxvYmplY3RdIFtmdW5jdGlvbl1cIixbdCxlLHNdLGFyZ3VtZW50cy5sZW5ndGgpLHRoaXNbd3RdKCksdm9pZCAwPT09dCYmKHQ9dih0aGlzLGh0LFwiZlwiKSksXCJvYmplY3RcIj09dHlwZW9mIGUmJihPKHRoaXMscnQsZSxcImZcIiksZT1zKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYoTyh0aGlzLG50LGUsXCJmXCIpLGU9ITEpLGV8fE8odGhpcyxodCx0LFwiZlwiKSx2KHRoaXMsbnQsXCJmXCIpJiZPKHRoaXMsVCwhMSxcImZcIik7Y29uc3QgaT10aGlzW0J0XSh0LCEhZSksbj10aGlzLnBhcnNlZDtyZXR1cm4gdih0aGlzLEYsXCJmXCIpLnNldFBhcnNlZCh0aGlzLnBhcnNlZCksZihpKT9pLnRoZW4oKHQ9Pih2KHRoaXMsbnQsXCJmXCIpJiZ2KHRoaXMsbnQsXCJmXCIpLmNhbGwodGhpcyx2KHRoaXMsVixcImZcIiksdCx2KHRoaXMsdHQsXCJmXCIpKSx0KSkpLmNhdGNoKCh0PT57dGhyb3cgdih0aGlzLG50LFwiZlwiKSYmdih0aGlzLG50LFwiZlwiKSh0LHRoaXMucGFyc2VkLmFyZ3Ysdih0aGlzLHR0LFwiZlwiKSksdH0pKS5maW5hbGx5KCgoKT0+e3RoaXNbRHRdKCksdGhpcy5wYXJzZWQ9bn0pKToodih0aGlzLG50LFwiZlwiKSYmdih0aGlzLG50LFwiZlwiKS5jYWxsKHRoaXMsdih0aGlzLFYsXCJmXCIpLGksdih0aGlzLHR0LFwiZlwiKSksdGhpc1tEdF0oKSx0aGlzLnBhcnNlZD1uLGkpfXBhcnNlQXN5bmModCxlLHMpe2NvbnN0IGk9dGhpcy5wYXJzZSh0LGUscyk7cmV0dXJuIGYoaSk/aTpQcm9taXNlLnJlc29sdmUoaSl9cGFyc2VTeW5jKHQscyxpKXtjb25zdCBuPXRoaXMucGFyc2UodCxzLGkpO2lmKGYobikpdGhyb3cgbmV3IGUoXCIucGFyc2VTeW5jKCkgbXVzdCBub3QgYmUgdXNlZCB3aXRoIGFzeW5jaHJvbm91cyBidWlsZGVycywgaGFuZGxlcnMsIG9yIG1pZGRsZXdhcmVcIik7cmV0dXJuIG59cGFyc2VyQ29uZmlndXJhdGlvbih0KXtyZXR1cm4gaChcIjxvYmplY3Q+XCIsW3RdLGFyZ3VtZW50cy5sZW5ndGgpLE8odGhpcyxpdCx0LFwiZlwiKSx0aGlzfXBrZ0NvbmYodCxlKXtoKFwiPHN0cmluZz4gW3N0cmluZ11cIixbdCxlXSxhcmd1bWVudHMubGVuZ3RoKTtsZXQgcz1udWxsO2NvbnN0IGk9dGhpc1t4dF0oZXx8dih0aGlzLHEsXCJmXCIpKTtyZXR1cm4gaVt0XSYmXCJvYmplY3RcIj09dHlwZW9mIGlbdF0mJihzPW4oaVt0XSxlfHx2KHRoaXMscSxcImZcIiksdGhpc1tqdF0oKVtcImRlZXAtbWVyZ2UtY29uZmlnXCJdfHwhMSx2KHRoaXMsY3QsXCJmXCIpKSx2KHRoaXMsZXQsXCJmXCIpLmNvbmZpZ09iamVjdHM9KHYodGhpcyxldCxcImZcIikuY29uZmlnT2JqZWN0c3x8W10pLmNvbmNhdChzKSksdGhpc31wb3NpdGlvbmFsKHQsZSl7aChcIjxzdHJpbmc+IDxvYmplY3Q+XCIsW3QsZV0sYXJndW1lbnRzLmxlbmd0aCk7Y29uc3Qgcz1bXCJkZWZhdWx0XCIsXCJkZWZhdWx0RGVzY3JpcHRpb25cIixcImltcGxpZXNcIixcIm5vcm1hbGl6ZVwiLFwiY2hvaWNlc1wiLFwiY29uZmxpY3RzXCIsXCJjb2VyY2VcIixcInR5cGVcIixcImRlc2NyaWJlXCIsXCJkZXNjXCIsXCJkZXNjcmlwdGlvblwiLFwiYWxpYXNcIl07ZT1nKGUsKCh0LGUpPT4hKFwidHlwZVwiPT09dCYmIVtcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJib29sZWFuXCJdLmluY2x1ZGVzKGUpKSYmcy5pbmNsdWRlcyh0KSkpO2NvbnN0IGk9dih0aGlzLFcsXCJmXCIpLmZ1bGxDb21tYW5kc1t2KHRoaXMsVyxcImZcIikuZnVsbENvbW1hbmRzLmxlbmd0aC0xXSxuPWk/dih0aGlzLHosXCJmXCIpLmNtZFRvUGFyc2VPcHRpb25zKGkpOnthcnJheTpbXSxhbGlhczp7fSxkZWZhdWx0Ont9LGRlbWFuZDp7fX07cmV0dXJuIHAobikuZm9yRWFjaCgocz0+e2NvbnN0IGk9bltzXTtBcnJheS5pc0FycmF5KGkpPy0xIT09aS5pbmRleE9mKHQpJiYoZVtzXT0hMCk6aVt0XSYmIShzIGluIGUpJiYoZVtzXT1pW3RdKX0pKSx0aGlzLmdyb3VwKHQsdih0aGlzLHB0LFwiZlwiKS5nZXRQb3NpdGlvbmFsR3JvdXBOYW1lKCkpLHRoaXMub3B0aW9uKHQsZSl9cmVjb21tZW5kQ29tbWFuZHModD0hMCl7cmV0dXJuIGgoXCJbYm9vbGVhbl1cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksTyh0aGlzLGx0LHQsXCJmXCIpLHRoaXN9cmVxdWlyZWQodCxlLHMpe3JldHVybiB0aGlzLmRlbWFuZCh0LGUscyl9cmVxdWlyZSh0LGUscyl7cmV0dXJuIHRoaXMuZGVtYW5kKHQsZSxzKX1yZXF1aXJlc0FyZyh0KXtyZXR1cm4gaChcIjxhcnJheXxzdHJpbmd8b2JqZWN0PiBbbnVtYmVyXVwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSxcInN0cmluZ1wiPT10eXBlb2YgdCYmdih0aGlzLGV0LFwiZlwiKS5uYXJnW3RdfHx0aGlzW0F0XSh0aGlzLnJlcXVpcmVzQXJnLmJpbmQodGhpcyksXCJuYXJnXCIsdCxOYU4pLHRoaXN9c2hvd0NvbXBsZXRpb25TY3JpcHQodCxlKXtyZXR1cm4gaChcIltzdHJpbmddIFtzdHJpbmddXCIsW3QsZV0sYXJndW1lbnRzLmxlbmd0aCksdD10fHx0aGlzLiQwLHYodGhpcyxRLFwiZlwiKS5sb2codih0aGlzLEYsXCJmXCIpLmdlbmVyYXRlQ29tcGxldGlvblNjcmlwdCh0LGV8fHYodGhpcyxVLFwiZlwiKXx8XCJjb21wbGV0aW9uXCIpKSx0aGlzfXNob3dIZWxwKHQpe2lmKGgoXCJbc3RyaW5nfGZ1bmN0aW9uXVwiLFt0XSxhcmd1bWVudHMubGVuZ3RoKSxPKHRoaXMsSiwhMCxcImZcIiksIXYodGhpcyxwdCxcImZcIikuaGFzQ2FjaGVkSGVscE1lc3NhZ2UoKSl7aWYoIXRoaXMucGFyc2VkKXtjb25zdCBlPXRoaXNbQnRdKHYodGhpcyxodCxcImZcIiksdm9pZCAwLHZvaWQgMCwwLCEwKTtpZihmKGUpKXJldHVybiBlLnRoZW4oKCgpPT57dih0aGlzLHB0LFwiZlwiKS5zaG93SGVscCh0KX0pKSx0aGlzfWNvbnN0IGU9dih0aGlzLHosXCJmXCIpLnJ1bkRlZmF1bHRCdWlsZGVyT24odGhpcyk7aWYoZihlKSlyZXR1cm4gZS50aGVuKCgoKT0+e3YodGhpcyxwdCxcImZcIikuc2hvd0hlbHAodCl9KSksdGhpc31yZXR1cm4gdih0aGlzLHB0LFwiZlwiKS5zaG93SGVscCh0KSx0aGlzfXNjcmlwdE5hbWUodCl7cmV0dXJuIHRoaXMuY3VzdG9tU2NyaXB0TmFtZT0hMCx0aGlzLiQwPXQsdGhpc31zaG93SGVscE9uRmFpbCh0LGUpe3JldHVybiBoKFwiW2Jvb2xlYW58c3RyaW5nXSBbc3RyaW5nXVwiLFt0LGVdLGFyZ3VtZW50cy5sZW5ndGgpLHYodGhpcyxwdCxcImZcIikuc2hvd0hlbHBPbkZhaWwodCxlKSx0aGlzfXNob3dWZXJzaW9uKHQpe3JldHVybiBoKFwiW3N0cmluZ3xmdW5jdGlvbl1cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksdih0aGlzLHB0LFwiZlwiKS5zaG93VmVyc2lvbih0KSx0aGlzfXNraXBWYWxpZGF0aW9uKHQpe3JldHVybiBoKFwiPGFycmF5fHN0cmluZz5cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksdGhpc1tFdF0oXCJza2lwVmFsaWRhdGlvblwiLHQpLHRoaXN9c3RyaWN0KHQpe3JldHVybiBoKFwiW2Jvb2xlYW5dXCIsW3RdLGFyZ3VtZW50cy5sZW5ndGgpLE8odGhpcyxmdCwhMSE9PXQsXCJmXCIpLHRoaXN9c3RyaWN0Q29tbWFuZHModCl7cmV0dXJuIGgoXCJbYm9vbGVhbl1cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksTyh0aGlzLGR0LCExIT09dCxcImZcIiksdGhpc31zdHJpY3RPcHRpb25zKHQpe3JldHVybiBoKFwiW2Jvb2xlYW5dXCIsW3RdLGFyZ3VtZW50cy5sZW5ndGgpLE8odGhpcyx1dCwhMSE9PXQsXCJmXCIpLHRoaXN9c3RyaW5nKHQpe3JldHVybiBoKFwiPGFycmF5fHN0cmluZz5cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksdGhpc1tFdF0oXCJzdHJpbmdcIix0KSx0aGlzW1p0XSh0KSx0aGlzfXRlcm1pbmFsV2lkdGgoKXtyZXR1cm4gaChbXSwwKSx2KHRoaXMsY3QsXCJmXCIpLnByb2Nlc3Muc3RkQ29sdW1uc311cGRhdGVMb2NhbGUodCl7cmV0dXJuIHRoaXMudXBkYXRlU3RyaW5ncyh0KX11cGRhdGVTdHJpbmdzKHQpe3JldHVybiBoKFwiPG9iamVjdD5cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksTyh0aGlzLEcsITEsXCJmXCIpLHYodGhpcyxjdCxcImZcIikueTE4bi51cGRhdGVMb2NhbGUodCksdGhpc311c2FnZSh0LHMsaSxuKXtpZihoKFwiPHN0cmluZ3xudWxsfHVuZGVmaW5lZD4gW3N0cmluZ3xib29sZWFuXSBbZnVuY3Rpb258b2JqZWN0XSBbZnVuY3Rpb25dXCIsW3QscyxpLG5dLGFyZ3VtZW50cy5sZW5ndGgpLHZvaWQgMCE9PXMpe2lmKGQodCxudWxsLHYodGhpcyxjdCxcImZcIikpLCh0fHxcIlwiKS5tYXRjaCgvXlxcJDAoIHwkKS8pKXJldHVybiB0aGlzLmNvbW1hbmQodCxzLGksbik7dGhyb3cgbmV3IGUoXCIudXNhZ2UoKSBkZXNjcmlwdGlvbiBtdXN0IHN0YXJ0IHdpdGggJDAgaWYgYmVpbmcgdXNlZCBhcyBhbGlhcyBmb3IgLmNvbW1hbmQoKVwiKX1yZXR1cm4gdih0aGlzLHB0LFwiZlwiKS51c2FnZSh0KSx0aGlzfXZlcnNpb24odCxlLHMpe2NvbnN0IGk9XCJ2ZXJzaW9uXCI7aWYoaChcIltib29sZWFufHN0cmluZ10gW3N0cmluZ10gW3N0cmluZ11cIixbdCxlLHNdLGFyZ3VtZW50cy5sZW5ndGgpLHYodGhpcyxndCxcImZcIikmJih0aGlzW3Z0XSh2KHRoaXMsZ3QsXCJmXCIpKSx2KHRoaXMscHQsXCJmXCIpLnZlcnNpb24odm9pZCAwKSxPKHRoaXMsZ3QsbnVsbCxcImZcIikpLDA9PT1hcmd1bWVudHMubGVuZ3RoKXM9dGhpc1tNdF0oKSx0PWk7ZWxzZSBpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7aWYoITE9PT10KXJldHVybiB0aGlzO3M9dCx0PWl9ZWxzZSAyPT09YXJndW1lbnRzLmxlbmd0aCYmKHM9ZSxlPXZvaWQgMCk7cmV0dXJuIE8odGhpcyxndCxcInN0cmluZ1wiPT10eXBlb2YgdD90OmksXCJmXCIpLGU9ZXx8dih0aGlzLHB0LFwiZlwiKS5kZWZlclkxOG5Mb29rdXAoXCJTaG93IHZlcnNpb24gbnVtYmVyXCIpLHYodGhpcyxwdCxcImZcIikudmVyc2lvbihzfHx2b2lkIDApLHRoaXMuYm9vbGVhbih2KHRoaXMsZ3QsXCJmXCIpKSx0aGlzLmRlc2NyaWJlKHYodGhpcyxndCxcImZcIiksZSksdGhpc313cmFwKHQpe3JldHVybiBoKFwiPG51bWJlcnxudWxsfHVuZGVmaW5lZD5cIixbdF0sYXJndW1lbnRzLmxlbmd0aCksdih0aGlzLHB0LFwiZlwiKS53cmFwKHQpLHRoaXN9Wyh6PW5ldyBXZWFrTWFwLHE9bmV3IFdlYWtNYXAsVz1uZXcgV2Vha01hcCxGPW5ldyBXZWFrTWFwLFU9bmV3IFdlYWtNYXAsTD1uZXcgV2Vha01hcCxWPW5ldyBXZWFrTWFwLEc9bmV3IFdlYWtNYXAsUj1uZXcgV2Vha01hcCxUPW5ldyBXZWFrTWFwLEs9bmV3IFdlYWtNYXAsQj1uZXcgV2Vha01hcCxZPW5ldyBXZWFrTWFwLEo9bmV3IFdlYWtNYXAsWj1uZXcgV2Vha01hcCxYPW5ldyBXZWFrTWFwLFE9bmV3IFdlYWtNYXAsdHQ9bmV3IFdlYWtNYXAsZXQ9bmV3IFdlYWtNYXAsc3Q9bmV3IFdlYWtNYXAsaXQ9bmV3IFdlYWtNYXAsbnQ9bmV3IFdlYWtNYXAscnQ9bmV3IFdlYWtNYXAsb3Q9bmV3IFdlYWtNYXAsYXQ9bmV3IFdlYWtNYXAsaHQ9bmV3IFdlYWtNYXAsbHQ9bmV3IFdlYWtNYXAsY3Q9bmV3IFdlYWtNYXAsZnQ9bmV3IFdlYWtNYXAsZHQ9bmV3IFdlYWtNYXAsdXQ9bmV3IFdlYWtNYXAscHQ9bmV3IFdlYWtNYXAsZ3Q9bmV3IFdlYWtNYXAsbXQ9bmV3IFdlYWtNYXAseXQpXSh0KXtpZighdC5ffHwhdFtcIi0tXCJdKXJldHVybiB0O3QuXy5wdXNoLmFwcGx5KHQuXyx0W1wiLS1cIl0pO3RyeXtkZWxldGUgdFtcIi0tXCJdfWNhdGNoKHQpe31yZXR1cm4gdH1bYnRdKCl7cmV0dXJue2xvZzooLi4udCk9Pnt0aGlzW1Z0XSgpfHxjb25zb2xlLmxvZyguLi50KSxPKHRoaXMsSiwhMCxcImZcIiksdih0aGlzLHR0LFwiZlwiKS5sZW5ndGgmJk8odGhpcyx0dCx2KHRoaXMsdHQsXCJmXCIpK1wiXFxuXCIsXCJmXCIpLE8odGhpcyx0dCx2KHRoaXMsdHQsXCJmXCIpK3Quam9pbihcIiBcIiksXCJmXCIpfSxlcnJvcjooLi4udCk9Pnt0aGlzW1Z0XSgpfHxjb25zb2xlLmVycm9yKC4uLnQpLE8odGhpcyxKLCEwLFwiZlwiKSx2KHRoaXMsdHQsXCJmXCIpLmxlbmd0aCYmTyh0aGlzLHR0LHYodGhpcyx0dCxcImZcIikrXCJcXG5cIixcImZcIiksTyh0aGlzLHR0LHYodGhpcyx0dCxcImZcIikrdC5qb2luKFwiIFwiKSxcImZcIil9fX1bdnRdKHQpe3Aodih0aGlzLGV0LFwiZlwiKSkuZm9yRWFjaCgoZT0+e2lmKFwiY29uZmlnT2JqZWN0c1wiPT09ZSlyZXR1cm47Y29uc3Qgcz12KHRoaXMsZXQsXCJmXCIpW2VdO0FycmF5LmlzQXJyYXkocyk/cy5pbmNsdWRlcyh0KSYmcy5zcGxpY2Uocy5pbmRleE9mKHQpLDEpOlwib2JqZWN0XCI9PXR5cGVvZiBzJiZkZWxldGUgc1t0XX0pKSxkZWxldGUgdih0aGlzLHB0LFwiZlwiKS5nZXREZXNjcmlwdGlvbnMoKVt0XX1bT3RdKHQsZSxzKXt2KHRoaXMsUixcImZcIilbc118fCh2KHRoaXMsY3QsXCJmXCIpLnByb2Nlc3MuZW1pdFdhcm5pbmcodCxlKSx2KHRoaXMsUixcImZcIilbc109ITApfVt3dF0oKXt2KHRoaXMsSyxcImZcIikucHVzaCh7b3B0aW9uczp2KHRoaXMsZXQsXCJmXCIpLGNvbmZpZ09iamVjdHM6dih0aGlzLGV0LFwiZlwiKS5jb25maWdPYmplY3RzLnNsaWNlKDApLGV4aXRQcm9jZXNzOnYodGhpcyxULFwiZlwiKSxncm91cHM6dih0aGlzLFksXCJmXCIpLHN0cmljdDp2KHRoaXMsZnQsXCJmXCIpLHN0cmljdENvbW1hbmRzOnYodGhpcyxkdCxcImZcIiksc3RyaWN0T3B0aW9uczp2KHRoaXMsdXQsXCJmXCIpLGNvbXBsZXRpb25Db21tYW5kOnYodGhpcyxVLFwiZlwiKSxvdXRwdXQ6dih0aGlzLHR0LFwiZlwiKSxleGl0RXJyb3I6dih0aGlzLFYsXCJmXCIpLGhhc091dHB1dDp2KHRoaXMsSixcImZcIikscGFyc2VkOnRoaXMucGFyc2VkLHBhcnNlRm46dih0aGlzLG50LFwiZlwiKSxwYXJzZUNvbnRleHQ6dih0aGlzLHJ0LFwiZlwiKX0pLHYodGhpcyxwdCxcImZcIikuZnJlZXplKCksdih0aGlzLG10LFwiZlwiKS5mcmVlemUoKSx2KHRoaXMseixcImZcIikuZnJlZXplKCksdih0aGlzLEIsXCJmXCIpLmZyZWV6ZSgpfVtDdF0oKXtsZXQgdCxlPVwiXCI7cmV0dXJuIHQ9L1xcYihub2RlfGlvanN8ZWxlY3Ryb24pKFxcLmV4ZSk/JC8udGVzdCh2KHRoaXMsY3QsXCJmXCIpLnByb2Nlc3MuYXJndigpWzBdKT92KHRoaXMsY3QsXCJmXCIpLnByb2Nlc3MuYXJndigpLnNsaWNlKDEsMik6dih0aGlzLGN0LFwiZlwiKS5wcm9jZXNzLmFyZ3YoKS5zbGljZSgwLDEpLGU9dC5tYXAoKHQ9Pntjb25zdCBlPXRoaXNbVHRdKHYodGhpcyxxLFwiZlwiKSx0KTtyZXR1cm4gdC5tYXRjaCgvXihcXC98KFthLXpBLVpdOik/XFxcXCkvKSYmZS5sZW5ndGg8dC5sZW5ndGg/ZTp0fSkpLmpvaW4oXCIgXCIpLnRyaW0oKSx2KHRoaXMsY3QsXCJmXCIpLmdldEVudihcIl9cIikmJnYodGhpcyxjdCxcImZcIikuZ2V0UHJvY2Vzc0FyZ3ZCaW4oKT09PXYodGhpcyxjdCxcImZcIikuZ2V0RW52KFwiX1wiKSYmKGU9dih0aGlzLGN0LFwiZlwiKS5nZXRFbnYoXCJfXCIpLnJlcGxhY2UoYCR7dih0aGlzLGN0LFwiZlwiKS5wYXRoLmRpcm5hbWUodih0aGlzLGN0LFwiZlwiKS5wcm9jZXNzLmV4ZWNQYXRoKCkpfS9gLFwiXCIpKSxlfVtqdF0oKXtyZXR1cm4gdih0aGlzLGl0LFwiZlwiKX1bX3RdKCl7aWYoIXYodGhpcyxHLFwiZlwiKSlyZXR1cm47Y29uc3QgdD12KHRoaXMsY3QsXCJmXCIpLmdldEVudihcIkxDX0FMTFwiKXx8dih0aGlzLGN0LFwiZlwiKS5nZXRFbnYoXCJMQ19NRVNTQUdFU1wiKXx8dih0aGlzLGN0LFwiZlwiKS5nZXRFbnYoXCJMQU5HXCIpfHx2KHRoaXMsY3QsXCJmXCIpLmdldEVudihcIkxBTkdVQUdFXCIpfHxcImVuX1VTXCI7dGhpcy5sb2NhbGUodC5yZXBsYWNlKC9bLjpdLiovLFwiXCIpKX1bTXRdKCl7cmV0dXJuIHRoaXNbeHRdKCkudmVyc2lvbnx8XCJ1bmtub3duXCJ9W2t0XSh0KXtjb25zdCBlPXRbXCItLVwiXT90W1wiLS1cIl06dC5fO2ZvcihsZXQgdCxzPTA7dm9pZCAwIT09KHQ9ZVtzXSk7cysrKXYodGhpcyxjdCxcImZcIikuUGFyc2VyLmxvb2tzTGlrZU51bWJlcih0KSYmTnVtYmVyLmlzU2FmZUludGVnZXIoTWF0aC5mbG9vcihwYXJzZUZsb2F0KGAke3R9YCkpKSYmKGVbc109TnVtYmVyKHQpKTtyZXR1cm4gdH1beHRdKHQpe2NvbnN0IGU9dHx8XCIqXCI7aWYodih0aGlzLG90LFwiZlwiKVtlXSlyZXR1cm4gdih0aGlzLG90LFwiZlwiKVtlXTtsZXQgcz17fTt0cnl7bGV0IGU9dHx8dih0aGlzLGN0LFwiZlwiKS5tYWluRmlsZW5hbWU7IXQmJnYodGhpcyxjdCxcImZcIikucGF0aC5leHRuYW1lKGUpJiYoZT12KHRoaXMsY3QsXCJmXCIpLnBhdGguZGlybmFtZShlKSk7Y29uc3QgaT12KHRoaXMsY3QsXCJmXCIpLmZpbmRVcChlLCgodCxlKT0+ZS5pbmNsdWRlcyhcInBhY2thZ2UuanNvblwiKT9cInBhY2thZ2UuanNvblwiOnZvaWQgMCkpO2QoaSx2b2lkIDAsdih0aGlzLGN0LFwiZlwiKSkscz1KU09OLnBhcnNlKHYodGhpcyxjdCxcImZcIikucmVhZEZpbGVTeW5jKGksXCJ1dGY4XCIpKX1jYXRjaCh0KXt9cmV0dXJuIHYodGhpcyxvdCxcImZcIilbZV09c3x8e30sdih0aGlzLG90LFwiZlwiKVtlXX1bRXRdKHQsZSl7KGU9W10uY29uY2F0KGUpKS5mb3JFYWNoKChlPT57ZT10aGlzWyR0XShlKSx2KHRoaXMsZXQsXCJmXCIpW3RdLnB1c2goZSl9KSl9W0F0XSh0LGUscyxpKXt0aGlzW1N0XSh0LGUscyxpLCgodCxlLHMpPT57dih0aGlzLGV0LFwiZlwiKVt0XVtlXT1zfSkpfVtQdF0odCxlLHMsaSl7dGhpc1tTdF0odCxlLHMsaSwoKHQsZSxzKT0+e3YodGhpcyxldCxcImZcIilbdF1bZV09KHYodGhpcyxldCxcImZcIilbdF1bZV18fFtdKS5jb25jYXQocyl9KSl9W1N0XSh0LGUscyxpLG4pe2lmKEFycmF5LmlzQXJyYXkocykpcy5mb3JFYWNoKChlPT57dChlLGkpfSkpO2Vsc2UgaWYoKHQ9Plwib2JqZWN0XCI9PXR5cGVvZiB0KShzKSlmb3IoY29uc3QgZSBvZiBwKHMpKXQoZSxzW2VdKTtlbHNlIG4oZSx0aGlzWyR0XShzKSxpKX1bJHRdKHQpe3JldHVyblwiX19wcm90b19fXCI9PT10P1wiX19fcHJvdG9fX19cIjp0fVtJdF0odCxlKXtyZXR1cm4gdGhpc1tBdF0odGhpc1tJdF0uYmluZCh0aGlzKSxcImtleVwiLHQsZSksdGhpc31bRHRdKCl7dmFyIHQsZSxzLGksbixyLG8sYSxoLGwsYyxmO2NvbnN0IHU9dih0aGlzLEssXCJmXCIpLnBvcCgpO2xldCBwO2QodSx2b2lkIDAsdih0aGlzLGN0LFwiZlwiKSksdD10aGlzLGU9dGhpcyxzPXRoaXMsaT10aGlzLG49dGhpcyxyPXRoaXMsbz10aGlzLGE9dGhpcyxoPXRoaXMsbD10aGlzLGM9dGhpcyxmPXRoaXMsKHtvcHRpb25zOntzZXQgdmFsdWUoZSl7Tyh0LGV0LGUsXCJmXCIpfX0udmFsdWUsY29uZmlnT2JqZWN0czpwLGV4aXRQcm9jZXNzOntzZXQgdmFsdWUodCl7TyhlLFQsdCxcImZcIil9fS52YWx1ZSxncm91cHM6e3NldCB2YWx1ZSh0KXtPKHMsWSx0LFwiZlwiKX19LnZhbHVlLG91dHB1dDp7c2V0IHZhbHVlKHQpe08oaSx0dCx0LFwiZlwiKX19LnZhbHVlLGV4aXRFcnJvcjp7c2V0IHZhbHVlKHQpe08obixWLHQsXCJmXCIpfX0udmFsdWUsaGFzT3V0cHV0OntzZXQgdmFsdWUodCl7TyhyLEosdCxcImZcIil9fS52YWx1ZSxwYXJzZWQ6dGhpcy5wYXJzZWQsc3RyaWN0OntzZXQgdmFsdWUodCl7TyhvLGZ0LHQsXCJmXCIpfX0udmFsdWUsc3RyaWN0Q29tbWFuZHM6e3NldCB2YWx1ZSh0KXtPKGEsZHQsdCxcImZcIil9fS52YWx1ZSxzdHJpY3RPcHRpb25zOntzZXQgdmFsdWUodCl7TyhoLHV0LHQsXCJmXCIpfX0udmFsdWUsY29tcGxldGlvbkNvbW1hbmQ6e3NldCB2YWx1ZSh0KXtPKGwsVSx0LFwiZlwiKX19LnZhbHVlLHBhcnNlRm46e3NldCB2YWx1ZSh0KXtPKGMsbnQsdCxcImZcIil9fS52YWx1ZSxwYXJzZUNvbnRleHQ6e3NldCB2YWx1ZSh0KXtPKGYscnQsdCxcImZcIil9fS52YWx1ZX09dSksdih0aGlzLGV0LFwiZlwiKS5jb25maWdPYmplY3RzPXAsdih0aGlzLHB0LFwiZlwiKS51bmZyZWV6ZSgpLHYodGhpcyxtdCxcImZcIikudW5mcmVlemUoKSx2KHRoaXMseixcImZcIikudW5mcmVlemUoKSx2KHRoaXMsQixcImZcIikudW5mcmVlemUoKX1bTnRdKHQsZSl7cmV0dXJuIGooZSwoZT0+KHQoZSksZSkpKX1nZXRJbnRlcm5hbE1ldGhvZHMoKXtyZXR1cm57Z2V0Q29tbWFuZEluc3RhbmNlOnRoaXNbSHRdLmJpbmQodGhpcyksZ2V0Q29udGV4dDp0aGlzW3p0XS5iaW5kKHRoaXMpLGdldEhhc091dHB1dDp0aGlzW3F0XS5iaW5kKHRoaXMpLGdldExvZ2dlckluc3RhbmNlOnRoaXNbV3RdLmJpbmQodGhpcyksZ2V0UGFyc2VDb250ZXh0OnRoaXNbRnRdLmJpbmQodGhpcyksZ2V0UGFyc2VyQ29uZmlndXJhdGlvbjp0aGlzW2p0XS5iaW5kKHRoaXMpLGdldFVzYWdlSW5zdGFuY2U6dGhpc1tVdF0uYmluZCh0aGlzKSxnZXRWYWxpZGF0aW9uSW5zdGFuY2U6dGhpc1tMdF0uYmluZCh0aGlzKSxoYXNQYXJzZUNhbGxiYWNrOnRoaXNbVnRdLmJpbmQodGhpcyksaXNHbG9iYWxDb250ZXh0OnRoaXNbR3RdLmJpbmQodGhpcykscG9zdFByb2Nlc3M6dGhpc1tSdF0uYmluZCh0aGlzKSxyZXNldDp0aGlzW0t0XS5iaW5kKHRoaXMpLHJ1blZhbGlkYXRpb246dGhpc1tZdF0uYmluZCh0aGlzKSxydW5ZYXJnc1BhcnNlckFuZEV4ZWN1dGVDb21tYW5kczp0aGlzW0J0XS5iaW5kKHRoaXMpLHNldEhhc091dHB1dDp0aGlzW0p0XS5iaW5kKHRoaXMpfX1bSHRdKCl7cmV0dXJuIHYodGhpcyx6LFwiZlwiKX1benRdKCl7cmV0dXJuIHYodGhpcyxXLFwiZlwiKX1bcXRdKCl7cmV0dXJuIHYodGhpcyxKLFwiZlwiKX1bV3RdKCl7cmV0dXJuIHYodGhpcyxRLFwiZlwiKX1bRnRdKCl7cmV0dXJuIHYodGhpcyxydCxcImZcIil8fHt9fVtVdF0oKXtyZXR1cm4gdih0aGlzLHB0LFwiZlwiKX1bTHRdKCl7cmV0dXJuIHYodGhpcyxtdCxcImZcIil9W1Z0XSgpe3JldHVybiEhdih0aGlzLG50LFwiZlwiKX1bR3RdKCl7cmV0dXJuIHYodGhpcyxYLFwiZlwiKX1bUnRdKHQsZSxzLGkpe2lmKHMpcmV0dXJuIHQ7aWYoZih0KSlyZXR1cm4gdDtlfHwodD10aGlzW3l0XSh0KSk7cmV0dXJuKHRoaXNbanRdKClbXCJwYXJzZS1wb3NpdGlvbmFsLW51bWJlcnNcIl18fHZvaWQgMD09PXRoaXNbanRdKClbXCJwYXJzZS1wb3NpdGlvbmFsLW51bWJlcnNcIl0pJiYodD10aGlzW2t0XSh0KSksaSYmKHQ9Qyh0LHRoaXMsdih0aGlzLEIsXCJmXCIpLmdldE1pZGRsZXdhcmUoKSwhMSkpLHR9W0t0XSh0PXt9KXtPKHRoaXMsZXQsdih0aGlzLGV0LFwiZlwiKXx8e30sXCJmXCIpO2NvbnN0IGU9e307ZS5sb2NhbD12KHRoaXMsZXQsXCJmXCIpLmxvY2FsfHxbXSxlLmNvbmZpZ09iamVjdHM9dih0aGlzLGV0LFwiZlwiKS5jb25maWdPYmplY3RzfHxbXTtjb25zdCBzPXt9O2UubG9jYWwuZm9yRWFjaCgoZT0+e3NbZV09ITAsKHRbZV18fFtdKS5mb3JFYWNoKCh0PT57c1t0XT0hMH0pKX0pKSxPYmplY3QuYXNzaWduKHYodGhpcyxhdCxcImZcIiksT2JqZWN0LmtleXModih0aGlzLFksXCJmXCIpKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3QgaT12KHRoaXMsWSxcImZcIilbZV0uZmlsdGVyKCh0PT4hKHQgaW4gcykpKTtyZXR1cm4gaS5sZW5ndGg+MCYmKHRbZV09aSksdH0pLHt9KSksTyh0aGlzLFkse30sXCJmXCIpO3JldHVybltcImFycmF5XCIsXCJib29sZWFuXCIsXCJzdHJpbmdcIixcInNraXBWYWxpZGF0aW9uXCIsXCJjb3VudFwiLFwibm9ybWFsaXplXCIsXCJudW1iZXJcIixcImhpZGRlbk9wdGlvbnNcIl0uZm9yRWFjaCgodD0+e2VbdF09KHYodGhpcyxldCxcImZcIilbdF18fFtdKS5maWx0ZXIoKHQ9PiFzW3RdKSl9KSksW1wibmFyZ1wiLFwia2V5XCIsXCJhbGlhc1wiLFwiZGVmYXVsdFwiLFwiZGVmYXVsdERlc2NyaXB0aW9uXCIsXCJjb25maWdcIixcImNob2ljZXNcIixcImRlbWFuZGVkT3B0aW9uc1wiLFwiZGVtYW5kZWRDb21tYW5kc1wiLFwiZGVwcmVjYXRlZE9wdGlvbnNcIl0uZm9yRWFjaCgodD0+e2VbdF09Zyh2KHRoaXMsZXQsXCJmXCIpW3RdLCh0PT4hc1t0XSkpfSkpLGUuZW52UHJlZml4PXYodGhpcyxldCxcImZcIikuZW52UHJlZml4LE8odGhpcyxldCxlLFwiZlwiKSxPKHRoaXMscHQsdih0aGlzLHB0LFwiZlwiKT92KHRoaXMscHQsXCJmXCIpLnJlc2V0KHMpOlAodGhpcyx2KHRoaXMsY3QsXCJmXCIpKSxcImZcIiksTyh0aGlzLG10LHYodGhpcyxtdCxcImZcIik/dih0aGlzLG10LFwiZlwiKS5yZXNldChzKTpmdW5jdGlvbih0LGUscyl7Y29uc3QgaT1zLnkxOG4uX18sbj1zLnkxOG4uX19uLHI9e25vbk9wdGlvbkNvdW50OmZ1bmN0aW9uKHMpe2NvbnN0IGk9dC5nZXREZW1hbmRlZENvbW1hbmRzKCkscj1zLl8ubGVuZ3RoKyhzW1wiLS1cIl0/c1tcIi0tXCJdLmxlbmd0aDowKS10LmdldEludGVybmFsTWV0aG9kcygpLmdldENvbnRleHQoKS5jb21tYW5kcy5sZW5ndGg7aS5fJiYocjxpLl8ubWlufHxyPmkuXy5tYXgpJiYocjxpLl8ubWluP3ZvaWQgMCE9PWkuXy5taW5Nc2c/ZS5mYWlsKGkuXy5taW5Nc2c/aS5fLm1pbk1zZy5yZXBsYWNlKC9cXCQwL2csci50b1N0cmluZygpKS5yZXBsYWNlKC9cXCQxLyxpLl8ubWluLnRvU3RyaW5nKCkpOm51bGwpOmUuZmFpbChuKFwiTm90IGVub3VnaCBub24tb3B0aW9uIGFyZ3VtZW50czogZ290ICVzLCBuZWVkIGF0IGxlYXN0ICVzXCIsXCJOb3QgZW5vdWdoIG5vbi1vcHRpb24gYXJndW1lbnRzOiBnb3QgJXMsIG5lZWQgYXQgbGVhc3QgJXNcIixyLHIudG9TdHJpbmcoKSxpLl8ubWluLnRvU3RyaW5nKCkpKTpyPmkuXy5tYXgmJih2b2lkIDAhPT1pLl8ubWF4TXNnP2UuZmFpbChpLl8ubWF4TXNnP2kuXy5tYXhNc2cucmVwbGFjZSgvXFwkMC9nLHIudG9TdHJpbmcoKSkucmVwbGFjZSgvXFwkMS8saS5fLm1heC50b1N0cmluZygpKTpudWxsKTplLmZhaWwobihcIlRvbyBtYW55IG5vbi1vcHRpb24gYXJndW1lbnRzOiBnb3QgJXMsIG1heGltdW0gb2YgJXNcIixcIlRvbyBtYW55IG5vbi1vcHRpb24gYXJndW1lbnRzOiBnb3QgJXMsIG1heGltdW0gb2YgJXNcIixyLHIudG9TdHJpbmcoKSxpLl8ubWF4LnRvU3RyaW5nKCkpKSkpfSxwb3NpdGlvbmFsQ291bnQ6ZnVuY3Rpb24odCxzKXtzPHQmJmUuZmFpbChuKFwiTm90IGVub3VnaCBub24tb3B0aW9uIGFyZ3VtZW50czogZ290ICVzLCBuZWVkIGF0IGxlYXN0ICVzXCIsXCJOb3QgZW5vdWdoIG5vbi1vcHRpb24gYXJndW1lbnRzOiBnb3QgJXMsIG5lZWQgYXQgbGVhc3QgJXNcIixzLHMrXCJcIix0K1wiXCIpKX0scmVxdWlyZWRBcmd1bWVudHM6ZnVuY3Rpb24odCxzKXtsZXQgaT1udWxsO2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKHMpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiZ2b2lkIDAhPT10W2VdfHwoaT1pfHx7fSxpW2VdPXNbZV0pO2lmKGkpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMoaSkpe2NvbnN0IHM9aVtlXTtzJiZ0LmluZGV4T2Yocyk8MCYmdC5wdXNoKHMpfWNvbnN0IHM9dC5sZW5ndGg/YFxcbiR7dC5qb2luKFwiXFxuXCIpfWA6XCJcIjtlLmZhaWwobihcIk1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQ6ICVzXCIsXCJNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50czogJXNcIixPYmplY3Qua2V5cyhpKS5sZW5ndGgsT2JqZWN0LmtleXMoaSkuam9pbihcIiwgXCIpK3MpKX19LHVua25vd25Bcmd1bWVudHM6ZnVuY3Rpb24ocyxpLG8sYSxoPSEwKXt2YXIgbDtjb25zdCBjPXQuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0Q29tbWFuZEluc3RhbmNlKCkuZ2V0Q29tbWFuZHMoKSxmPVtdLGQ9dC5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRDb250ZXh0KCk7aWYoT2JqZWN0LmtleXMocykuZm9yRWFjaCgoZT0+e0guaW5jbHVkZXMoZSl8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLGUpfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodC5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRQYXJzZUNvbnRleHQoKSxlKXx8ci5pc1ZhbGlkQW5kU29tZUFsaWFzSXNOb3ROZXcoZSxpKXx8Zi5wdXNoKGUpfSkpLGgmJihkLmNvbW1hbmRzLmxlbmd0aD4wfHxjLmxlbmd0aD4wfHxhKSYmcy5fLnNsaWNlKGQuY29tbWFuZHMubGVuZ3RoKS5mb3JFYWNoKCh0PT57Yy5pbmNsdWRlcyhcIlwiK3QpfHxmLnB1c2goXCJcIit0KX0pKSxoKXtjb25zdCBlPShudWxsPT09KGw9dC5nZXREZW1hbmRlZENvbW1hbmRzKCkuXyl8fHZvaWQgMD09PWw/dm9pZCAwOmwubWF4KXx8MCxpPWQuY29tbWFuZHMubGVuZ3RoK2U7aTxzLl8ubGVuZ3RoJiZzLl8uc2xpY2UoaSkuZm9yRWFjaCgodD0+e3Q9U3RyaW5nKHQpLGQuY29tbWFuZHMuaW5jbHVkZXModCl8fGYuaW5jbHVkZXModCl8fGYucHVzaCh0KX0pKX1mLmxlbmd0aCYmZS5mYWlsKG4oXCJVbmtub3duIGFyZ3VtZW50OiAlc1wiLFwiVW5rbm93biBhcmd1bWVudHM6ICVzXCIsZi5sZW5ndGgsZi5tYXAoKHQ9PnQudHJpbSgpP3Q6YFwiJHt0fVwiYCkpLmpvaW4oXCIsIFwiKSkpfSx1bmtub3duQ29tbWFuZHM6ZnVuY3Rpb24ocyl7Y29uc3QgaT10LmdldEludGVybmFsTWV0aG9kcygpLmdldENvbW1hbmRJbnN0YW5jZSgpLmdldENvbW1hbmRzKCkscj1bXSxvPXQuZ2V0SW50ZXJuYWxNZXRob2RzKCkuZ2V0Q29udGV4dCgpO3JldHVybihvLmNvbW1hbmRzLmxlbmd0aD4wfHxpLmxlbmd0aD4wKSYmcy5fLnNsaWNlKG8uY29tbWFuZHMubGVuZ3RoKS5mb3JFYWNoKCh0PT57aS5pbmNsdWRlcyhcIlwiK3QpfHxyLnB1c2goXCJcIit0KX0pKSxyLmxlbmd0aD4wJiYoZS5mYWlsKG4oXCJVbmtub3duIGNvbW1hbmQ6ICVzXCIsXCJVbmtub3duIGNvbW1hbmRzOiAlc1wiLHIubGVuZ3RoLHIuam9pbihcIiwgXCIpKSksITApfSxpc1ZhbGlkQW5kU29tZUFsaWFzSXNOb3ROZXc6ZnVuY3Rpb24oZSxzKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsZSkpcmV0dXJuITE7Y29uc3QgaT10LnBhcnNlZC5uZXdBbGlhc2VzO3JldHVybltlLC4uLnNbZV1dLnNvbWUoKHQ9PiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSx0KXx8IWlbZV0pKX0sbGltaXRlZENob2ljZXM6ZnVuY3Rpb24ocyl7Y29uc3Qgbj10LmdldE9wdGlvbnMoKSxyPXt9O2lmKCFPYmplY3Qua2V5cyhuLmNob2ljZXMpLmxlbmd0aClyZXR1cm47T2JqZWN0LmtleXMocykuZm9yRWFjaCgodD0+ey0xPT09SC5pbmRleE9mKHQpJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobi5jaG9pY2VzLHQpJiZbXS5jb25jYXQoc1t0XSkuZm9yRWFjaCgoZT0+ey0xPT09bi5jaG9pY2VzW3RdLmluZGV4T2YoZSkmJnZvaWQgMCE9PWUmJihyW3RdPShyW3RdfHxbXSkuY29uY2F0KGUpKX0pKX0pKTtjb25zdCBvPU9iamVjdC5rZXlzKHIpO2lmKCFvLmxlbmd0aClyZXR1cm47bGV0IGE9aShcIkludmFsaWQgdmFsdWVzOlwiKTtvLmZvckVhY2goKHQ9PnthKz1gXFxuICAke2koXCJBcmd1bWVudDogJXMsIEdpdmVuOiAlcywgQ2hvaWNlczogJXNcIix0LGUuc3RyaW5naWZpZWRWYWx1ZXMoclt0XSksZS5zdHJpbmdpZmllZFZhbHVlcyhuLmNob2ljZXNbdF0pKX1gfSkpLGUuZmFpbChhKX19O2xldCBvPXt9O2Z1bmN0aW9uIGEodCxlKXtjb25zdCBzPU51bWJlcihlKTtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YoZT1pc05hTihzKT9lOnMpP2U9dC5fLmxlbmd0aD49ZTplLm1hdGNoKC9eLS1uby0uKy8pPyhlPWUubWF0Y2goL14tLW5vLSguKykvKVsxXSxlPSFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSk6ZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSxlfXIuaW1wbGllcz1mdW5jdGlvbihlLGkpe2goXCI8c3RyaW5nfG9iamVjdD4gW2FycmF5fG51bWJlcnxzdHJpbmddXCIsW2UsaV0sYXJndW1lbnRzLmxlbmd0aCksXCJvYmplY3RcIj09dHlwZW9mIGU/T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+e3IuaW1wbGllcyh0LGVbdF0pfSkpOih0Lmdsb2JhbChlKSxvW2VdfHwob1tlXT1bXSksQXJyYXkuaXNBcnJheShpKT9pLmZvckVhY2goKHQ9PnIuaW1wbGllcyhlLHQpKSk6KGQoaSx2b2lkIDAscyksb1tlXS5wdXNoKGkpKSl9LHIuZ2V0SW1wbGllZD1mdW5jdGlvbigpe3JldHVybiBvfSxyLmltcGxpY2F0aW9ucz1mdW5jdGlvbih0KXtjb25zdCBzPVtdO2lmKE9iamVjdC5rZXlzKG8pLmZvckVhY2goKGU9Pntjb25zdCBpPWU7KG9bZV18fFtdKS5mb3JFYWNoKChlPT57bGV0IG49aTtjb25zdCByPWU7bj1hKHQsbiksZT1hKHQsZSksbiYmIWUmJnMucHVzaChgICR7aX0gLT4gJHtyfWApfSkpfSkpLHMubGVuZ3RoKXtsZXQgdD1gJHtpKFwiSW1wbGljYXRpb25zIGZhaWxlZDpcIil9XFxuYDtzLmZvckVhY2goKGU9Pnt0Kz1lfSkpLGUuZmFpbCh0KX19O2xldCBsPXt9O3IuY29uZmxpY3RzPWZ1bmN0aW9uKGUscyl7aChcIjxzdHJpbmd8b2JqZWN0PiBbYXJyYXl8c3RyaW5nXVwiLFtlLHNdLGFyZ3VtZW50cy5sZW5ndGgpLFwib2JqZWN0XCI9PXR5cGVvZiBlP09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9PntyLmNvbmZsaWN0cyh0LGVbdF0pfSkpOih0Lmdsb2JhbChlKSxsW2VdfHwobFtlXT1bXSksQXJyYXkuaXNBcnJheShzKT9zLmZvckVhY2goKHQ9PnIuY29uZmxpY3RzKGUsdCkpKTpsW2VdLnB1c2gocykpfSxyLmdldENvbmZsaWN0aW5nPSgpPT5sLHIuY29uZmxpY3Rpbmc9ZnVuY3Rpb24obil7T2JqZWN0LmtleXMobikuZm9yRWFjaCgodD0+e2xbdF0mJmxbdF0uZm9yRWFjaCgocz0+e3MmJnZvaWQgMCE9PW5bdF0mJnZvaWQgMCE9PW5bc10mJmUuZmFpbChpKFwiQXJndW1lbnRzICVzIGFuZCAlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXCIsdCxzKSl9KSl9KSksdC5nZXRJbnRlcm5hbE1ldGhvZHMoKS5nZXRQYXJzZXJDb25maWd1cmF0aW9uKClbXCJzdHJpcC1kYXNoZWRcIl0mJk9iamVjdC5rZXlzKGwpLmZvckVhY2goKHQ9PntsW3RdLmZvckVhY2goKHI9PntyJiZ2b2lkIDAhPT1uW3MuUGFyc2VyLmNhbWVsQ2FzZSh0KV0mJnZvaWQgMCE9PW5bcy5QYXJzZXIuY2FtZWxDYXNlKHIpXSYmZS5mYWlsKGkoXCJBcmd1bWVudHMgJXMgYW5kICVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmVcIix0LHIpKX0pKX0pKX0sci5yZWNvbW1lbmRDb21tYW5kcz1mdW5jdGlvbih0LHMpe3M9cy5zb3J0KCgodCxlKT0+ZS5sZW5ndGgtdC5sZW5ndGgpKTtsZXQgbj1udWxsLHI9MS8wO2ZvcihsZXQgZSxpPTA7dm9pZCAwIT09KGU9c1tpXSk7aSsrKXtjb25zdCBzPU4odCxlKTtzPD0zJiZzPHImJihyPXMsbj1lKX1uJiZlLmZhaWwoaShcIkRpZCB5b3UgbWVhbiAlcz9cIixuKSl9LHIucmVzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG89ZyhvLChlPT4hdFtlXSkpLGw9ZyhsLChlPT4hdFtlXSkpLHJ9O2NvbnN0IGM9W107cmV0dXJuIHIuZnJlZXplPWZ1bmN0aW9uKCl7Yy5wdXNoKHtpbXBsaWVkOm8sY29uZmxpY3Rpbmc6bH0pfSxyLnVuZnJlZXplPWZ1bmN0aW9uKCl7Y29uc3QgdD1jLnBvcCgpO2QodCx2b2lkIDAscyksKHtpbXBsaWVkOm8sY29uZmxpY3Rpbmc6bH09dCl9LHJ9KHRoaXMsdih0aGlzLHB0LFwiZlwiKSx2KHRoaXMsY3QsXCJmXCIpKSxcImZcIiksTyh0aGlzLHosdih0aGlzLHosXCJmXCIpP3YodGhpcyx6LFwiZlwiKS5yZXNldCgpOmZ1bmN0aW9uKHQsZSxzLGkpe3JldHVybiBuZXcgTSh0LGUscyxpKX0odih0aGlzLHB0LFwiZlwiKSx2KHRoaXMsbXQsXCJmXCIpLHYodGhpcyxCLFwiZlwiKSx2KHRoaXMsY3QsXCJmXCIpKSxcImZcIiksdih0aGlzLEYsXCJmXCIpfHxPKHRoaXMsRixmdW5jdGlvbih0LGUscyxpKXtyZXR1cm4gbmV3IEQodCxlLHMsaSl9KHRoaXMsdih0aGlzLHB0LFwiZlwiKSx2KHRoaXMseixcImZcIiksdih0aGlzLGN0LFwiZlwiKSksXCJmXCIpLHYodGhpcyxCLFwiZlwiKS5yZXNldCgpLE8odGhpcyxVLG51bGwsXCJmXCIpLE8odGhpcyx0dCxcIlwiLFwiZlwiKSxPKHRoaXMsVixudWxsLFwiZlwiKSxPKHRoaXMsSiwhMSxcImZcIiksdGhpcy5wYXJzZWQ9ITEsdGhpc31bVHRdKHQsZSl7cmV0dXJuIHYodGhpcyxjdCxcImZcIikucGF0aC5yZWxhdGl2ZSh0LGUpfVtCdF0odCxzLGksbj0wLHI9ITEpe2xldCBvPSEhaXx8cjt0PXR8fHYodGhpcyxodCxcImZcIiksdih0aGlzLGV0LFwiZlwiKS5fXz12KHRoaXMsY3QsXCJmXCIpLnkxOG4uX18sdih0aGlzLGV0LFwiZlwiKS5jb25maWd1cmF0aW9uPXRoaXNbanRdKCk7Y29uc3QgYT0hIXYodGhpcyxldCxcImZcIikuY29uZmlndXJhdGlvbltcInBvcHVsYXRlLS1cIl0saD1PYmplY3QuYXNzaWduKHt9LHYodGhpcyxldCxcImZcIikuY29uZmlndXJhdGlvbix7XCJwb3B1bGF0ZS0tXCI6ITB9KSxsPXYodGhpcyxjdCxcImZcIikuUGFyc2VyLmRldGFpbGVkKHQsT2JqZWN0LmFzc2lnbih7fSx2KHRoaXMsZXQsXCJmXCIpLHtjb25maWd1cmF0aW9uOntcInBhcnNlLXBvc2l0aW9uYWwtbnVtYmVyc1wiOiExLC4uLmh9fSkpLGM9T2JqZWN0LmFzc2lnbihsLmFyZ3Ysdih0aGlzLHJ0LFwiZlwiKSk7bGV0IGQ7Y29uc3QgdT1sLmFsaWFzZXM7bGV0IHA9ITEsZz0hMTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKCh0PT57dD09PXYodGhpcyxaLFwiZlwiKSYmY1t0XT9wPSEwOnQ9PT12KHRoaXMsZ3QsXCJmXCIpJiZjW3RdJiYoZz0hMCl9KSksYy4kMD10aGlzLiQwLHRoaXMucGFyc2VkPWwsMD09PW4mJnYodGhpcyxwdCxcImZcIikuY2xlYXJDYWNoZWRIZWxwTWVzc2FnZSgpO3RyeXtpZih0aGlzW190XSgpLHMpcmV0dXJuIHRoaXNbUnRdKGMsYSwhIWksITEpO2lmKHYodGhpcyxaLFwiZlwiKSl7W3YodGhpcyxaLFwiZlwiKV0uY29uY2F0KHVbdih0aGlzLFosXCJmXCIpXXx8W10pLmZpbHRlcigodD0+dC5sZW5ndGg+MSkpLmluY2x1ZGVzKFwiXCIrYy5fW2MuXy5sZW5ndGgtMV0pJiYoYy5fLnBvcCgpLHA9ITApfU8odGhpcyxYLCExLFwiZlwiKTtjb25zdCBoPXYodGhpcyx6LFwiZlwiKS5nZXRDb21tYW5kcygpLG09dih0aGlzLEYsXCJmXCIpLmNvbXBsZXRpb25LZXkgaW4gYyx5PXB8fG18fHI7aWYoYy5fLmxlbmd0aCl7aWYoaC5sZW5ndGgpe2xldCB0O2ZvcihsZXQgZSxzPW58fDA7dm9pZCAwIT09Yy5fW3NdO3MrKyl7aWYoZT1TdHJpbmcoYy5fW3NdKSxoLmluY2x1ZGVzKGUpJiZlIT09dih0aGlzLFUsXCJmXCIpKXtjb25zdCB0PXYodGhpcyx6LFwiZlwiKS5ydW5Db21tYW5kKGUsdGhpcyxsLHMrMSxyLHB8fGd8fHIpO3JldHVybiB0aGlzW1J0XSh0LGEsISFpLCExKX1pZighdCYmZSE9PXYodGhpcyxVLFwiZlwiKSl7dD1lO2JyZWFrfX0hdih0aGlzLHosXCJmXCIpLmhhc0RlZmF1bHRDb21tYW5kKCkmJnYodGhpcyxsdCxcImZcIikmJnQmJiF5JiZ2KHRoaXMsbXQsXCJmXCIpLnJlY29tbWVuZENvbW1hbmRzKHQsaCl9dih0aGlzLFUsXCJmXCIpJiZjLl8uaW5jbHVkZXModih0aGlzLFUsXCJmXCIpKSYmIW0mJih2KHRoaXMsVCxcImZcIikmJkUoITApLHRoaXMuc2hvd0NvbXBsZXRpb25TY3JpcHQoKSx0aGlzLmV4aXQoMCkpfWlmKHYodGhpcyx6LFwiZlwiKS5oYXNEZWZhdWx0Q29tbWFuZCgpJiYheSl7Y29uc3QgdD12KHRoaXMseixcImZcIikucnVuQ29tbWFuZChudWxsLHRoaXMsbCwwLHIscHx8Z3x8cik7cmV0dXJuIHRoaXNbUnRdKHQsYSwhIWksITEpfWlmKG0pe3YodGhpcyxULFwiZlwiKSYmRSghMCk7Y29uc3Qgcz0odD1bXS5jb25jYXQodCkpLnNsaWNlKHQuaW5kZXhPZihgLS0ke3YodGhpcyxGLFwiZlwiKS5jb21wbGV0aW9uS2V5fWApKzEpO3JldHVybiB2KHRoaXMsRixcImZcIikuZ2V0Q29tcGxldGlvbihzLCgodCxzKT0+e2lmKHQpdGhyb3cgbmV3IGUodC5tZXNzYWdlKTsoc3x8W10pLmZvckVhY2goKHQ9Pnt2KHRoaXMsUSxcImZcIikubG9nKHQpfSkpLHRoaXMuZXhpdCgwKX0pKSx0aGlzW1J0XShjLCFhLCEhaSwhMSl9aWYodih0aGlzLEosXCJmXCIpfHwocD8odih0aGlzLFQsXCJmXCIpJiZFKCEwKSxvPSEwLHRoaXMuc2hvd0hlbHAoXCJsb2dcIiksdGhpcy5leGl0KDApKTpnJiYodih0aGlzLFQsXCJmXCIpJiZFKCEwKSxvPSEwLHYodGhpcyxwdCxcImZcIikuc2hvd1ZlcnNpb24oXCJsb2dcIiksdGhpcy5leGl0KDApKSksIW8mJnYodGhpcyxldCxcImZcIikuc2tpcFZhbGlkYXRpb24ubGVuZ3RoPjAmJihvPU9iamVjdC5rZXlzKGMpLnNvbWUoKHQ9PnYodGhpcyxldCxcImZcIikuc2tpcFZhbGlkYXRpb24uaW5kZXhPZih0KT49MCYmITA9PT1jW3RdKSkpLCFvKXtpZihsLmVycm9yKXRocm93IG5ldyBlKGwuZXJyb3IubWVzc2FnZSk7aWYoIW0pe2NvbnN0IHQ9dGhpc1tZdF0odSx7fSxsLmVycm9yKTtpfHwoZD1DKGMsdGhpcyx2KHRoaXMsQixcImZcIikuZ2V0TWlkZGxld2FyZSgpLCEwKSksZD10aGlzW050XSh0LG51bGwhPWQ/ZDpjKSxmKGQpJiYhaSYmKGQ9ZC50aGVuKCgoKT0+QyhjLHRoaXMsdih0aGlzLEIsXCJmXCIpLmdldE1pZGRsZXdhcmUoKSwhMSkpKSl9fX1jYXRjaCh0KXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyB0O3YodGhpcyxwdCxcImZcIikuZmFpbCh0Lm1lc3NhZ2UsdCl9cmV0dXJuIHRoaXNbUnRdKG51bGwhPWQ/ZDpjLGEsISFpLCEwKX1bWXRdKHQscyxpLG4pe2NvbnN0IHI9ey4uLnRoaXMuZ2V0RGVtYW5kZWRPcHRpb25zKCl9O3JldHVybiBvPT57aWYoaSl0aHJvdyBuZXcgZShpLm1lc3NhZ2UpO3YodGhpcyxtdCxcImZcIikubm9uT3B0aW9uQ291bnQobyksdih0aGlzLG10LFwiZlwiKS5yZXF1aXJlZEFyZ3VtZW50cyhvLHIpO2xldCBhPSExO3YodGhpcyxkdCxcImZcIikmJihhPXYodGhpcyxtdCxcImZcIikudW5rbm93bkNvbW1hbmRzKG8pKSx2KHRoaXMsZnQsXCJmXCIpJiYhYT92KHRoaXMsbXQsXCJmXCIpLnVua25vd25Bcmd1bWVudHMobyx0LHMsISFuKTp2KHRoaXMsdXQsXCJmXCIpJiZ2KHRoaXMsbXQsXCJmXCIpLnVua25vd25Bcmd1bWVudHMobyx0LHt9LCExLCExKSx2KHRoaXMsbXQsXCJmXCIpLmxpbWl0ZWRDaG9pY2VzKG8pLHYodGhpcyxtdCxcImZcIikuaW1wbGljYXRpb25zKG8pLHYodGhpcyxtdCxcImZcIikuY29uZmxpY3Rpbmcobyl9fVtKdF0oKXtPKHRoaXMsSiwhMCxcImZcIil9W1p0XSh0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl2KHRoaXMsZXQsXCJmXCIpLmtleVt0XT0hMDtlbHNlIGZvcihjb25zdCBlIG9mIHQpdih0aGlzLGV0LFwiZlwiKS5rZXlbZV09ITB9fXZhciBRdCx0ZTtjb25zdHtyZWFkRmlsZVN5bmM6ZWV9PXJlcXVpcmUoXCJmc1wiKSx7aW5zcGVjdDpzZX09cmVxdWlyZShcInV0aWxcIikse3Jlc29sdmU6aWV9PXJlcXVpcmUoXCJwYXRoXCIpLG5lPXJlcXVpcmUoXCJ5MThuXCIpLHJlPXJlcXVpcmUoXCJ5YXJncy1wYXJzZXJcIik7dmFyIG9lLGFlPXthc3NlcnQ6e25vdFN0cmljdEVxdWFsOnQubm90U3RyaWN0RXF1YWwsc3RyaWN0RXF1YWw6dC5zdHJpY3RFcXVhbH0sY2xpdWk6cmVxdWlyZShcImNsaXVpXCIpLGZpbmRVcDpyZXF1aXJlKFwiZXNjYWxhZGUvc3luY1wiKSxnZXRFbnY6dD0+cHJvY2Vzcy5lbnZbdF0sZ2V0Q2FsbGVyRmlsZTpyZXF1aXJlKFwiZ2V0LWNhbGxlci1maWxlXCIpLGdldFByb2Nlc3NBcmd2QmluOnksaW5zcGVjdDpzZSxtYWluRmlsZW5hbWU6bnVsbCE9PSh0ZT1udWxsPT09KFF0PW51bGw9PT1yZXF1aXJlfHx2b2lkIDA9PT1yZXF1aXJlP3ZvaWQgMDpyZXF1aXJlLm1haW4pfHx2b2lkIDA9PT1RdD92b2lkIDA6UXQuZmlsZW5hbWUpJiZ2b2lkIDAhPT10ZT90ZTpwcm9jZXNzLmN3ZCgpLFBhcnNlcjpyZSxwYXRoOnJlcXVpcmUoXCJwYXRoXCIpLHByb2Nlc3M6e2FyZ3Y6KCk9PnByb2Nlc3MuYXJndixjd2Q6cHJvY2Vzcy5jd2QsZW1pdFdhcm5pbmc6KHQsZSk9PnByb2Nlc3MuZW1pdFdhcm5pbmcodCxlKSxleGVjUGF0aDooKT0+cHJvY2Vzcy5leGVjUGF0aCxleGl0OnQ9Pntwcm9jZXNzLmV4aXQodCl9LG5leHRUaWNrOnByb2Nlc3MubmV4dFRpY2ssc3RkQ29sdW1uczp2b2lkIDAhPT1wcm9jZXNzLnN0ZG91dC5jb2x1bW5zP3Byb2Nlc3Muc3Rkb3V0LmNvbHVtbnM6bnVsbH0scmVhZEZpbGVTeW5jOmVlLHJlcXVpcmU6cmVxdWlyZSxyZXF1aXJlRGlyZWN0b3J5OnJlcXVpcmUoXCJyZXF1aXJlLWRpcmVjdG9yeVwiKSxzdHJpbmdXaWR0aDpyZXF1aXJlKFwic3RyaW5nLXdpZHRoXCIpLHkxOG46bmUoe2RpcmVjdG9yeTppZShfX2Rpcm5hbWUsXCIuLi9sb2NhbGVzXCIpLHVwZGF0ZUZpbGVzOiExfSl9O2NvbnN0IGhlPShudWxsPT09KG9lPW51bGw9PT1wcm9jZXNzfHx2b2lkIDA9PT1wcm9jZXNzP3ZvaWQgMDpwcm9jZXNzLmVudil8fHZvaWQgMD09PW9lP3ZvaWQgMDpvZS5ZQVJHU19NSU5fTk9ERV9WRVJTSU9OKT9OdW1iZXIocHJvY2Vzcy5lbnYuWUFSR1NfTUlOX05PREVfVkVSU0lPTik6MTI7aWYocHJvY2VzcyYmcHJvY2Vzcy52ZXJzaW9uKXtpZihOdW1iZXIocHJvY2Vzcy52ZXJzaW9uLm1hdGNoKC92KFteLl0rKS8pWzFdKTxoZSl0aHJvdyBFcnJvcihgeWFyZ3Mgc3VwcG9ydHMgYSBtaW5pbXVtIE5vZGUuanMgdmVyc2lvbiBvZiAke2hlfS4gUmVhZCBvdXIgdmVyc2lvbiBzdXBwb3J0IHBvbGljeTogaHR0cHM6Ly9naXRodWIuY29tL3lhcmdzL3lhcmdzI3N1cHBvcnRlZC1ub2RlanMtdmVyc2lvbnNgKX1jb25zdCBsZT1yZXF1aXJlKFwieWFyZ3MtcGFyc2VyXCIpO3ZhciBjZSxmZT17YXBwbHlFeHRlbmRzOm4sY2pzUGxhdGZvcm1TaGltOmFlLFlhcmdzOihjZT1hZSwodD1bXSxlPWNlLnByb2Nlc3MuY3dkKCkscyk9Pntjb25zdCBpPW5ldyBYdCh0LGUscyxjZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLFwiYXJndlwiLHtnZXQ6KCk9PmkucGFyc2UoKSxlbnVtZXJhYmxlOiEwfSksaS5oZWxwKCksaS52ZXJzaW9uKCksaX0pLGFyZ3NlcnQ6aCxpc1Byb21pc2U6ZixvYmpGaWx0ZXI6ZyxwYXJzZUNvbW1hbmQ6byxQYXJzZXI6bGUscHJvY2Vzc0FyZ3Y6YixZRXJyb3I6ZX07bW9kdWxlLmV4cG9ydHM9ZmU7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gY2xhc3NpYyBzaW5nbGV0b24geWFyZ3MgQVBJLCB0byB1c2UgeWFyZ3Ncbi8vIHdpdGhvdXQgcnVubmluZyBhcyBhIHNpbmdsZXRvbiBkbzpcbi8vIHJlcXVpcmUoJ3lhcmdzL3lhcmdzJykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKVxuY29uc3Qge1lhcmdzLCBwcm9jZXNzQXJndn0gPSByZXF1aXJlKCcuL2J1aWxkL2luZGV4LmNqcycpO1xuXG5Bcmd2KHByb2Nlc3NBcmd2LmhpZGVCaW4ocHJvY2Vzcy5hcmd2KSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJndjtcblxuZnVuY3Rpb24gQXJndihwcm9jZXNzQXJncywgY3dkKSB7XG4gIGNvbnN0IGFyZ3YgPSBZYXJncyhwcm9jZXNzQXJncywgY3dkLCByZXF1aXJlKTtcbiAgc2luZ2xldG9uaWZ5KGFyZ3YpO1xuICAvLyBUT0RPKGJjb2UpOiB3YXJuIGlmIGFyZ3YucGFyc2UoKSBvciBhcmd2LmFyZ3YgaXMgdXNlZCBkaXJlY3RseS5cbiAgcmV0dXJuIGFyZ3Y7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUdldHRlcihvYmosIGtleSwgZ2V0dGVyKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZ2V0dGVyLFxuICB9KTtcbn1cbmZ1bmN0aW9uIGxvb2t1cEdldHRlcihvYmosIGtleSkge1xuICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmICh0eXBlb2YgZGVzYyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZGVzYy5nZXQ7XG4gIH1cbn1cblxuLyogIEhhY2sgYW4gaW5zdGFuY2Ugb2YgQXJndiB3aXRoIHByb2Nlc3MuYXJndiBpbnRvIEFyZ3ZcbiAgICBzbyBwZW9wbGUgY2FuIGRvXG4gICAgcmVxdWlyZSgneWFyZ3MnKShbJy0tYmVlYmxlPTEnLCcteicsJ3ppenpsZSddKS5hcmd2XG4gICAgdG8gcGFyc2UgYSBsaXN0IG9mIGFyZ3MgYW5kXG4gICAgcmVxdWlyZSgneWFyZ3MnKS5hcmd2XG4gICAgdG8gZ2V0IGEgcGFyc2VkIHZlcnNpb24gb2YgcHJvY2Vzcy5hcmd2LlxuKi9cbmZ1bmN0aW9uIHNpbmdsZXRvbmlmeShpbnN0KSB7XG4gIFtcbiAgICAuLi5PYmplY3Qua2V5cyhpbnN0KSxcbiAgICAuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbnN0LmNvbnN0cnVjdG9yLnByb3RvdHlwZSksXG4gIF0uZm9yRWFjaChrZXkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdhcmd2Jykge1xuICAgICAgZGVmaW5lR2V0dGVyKEFyZ3YsIGtleSwgbG9va3VwR2V0dGVyKGluc3QsIGtleSkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGluc3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgQXJndltrZXldID0gaW5zdFtrZXldLmJpbmQoaW5zdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmluZUdldHRlcihBcmd2LCAnJDAnLCAoKSA9PiBpbnN0LiQwKTtcbiAgICAgIGRlZmluZUdldHRlcihBcmd2LCAncGFyc2VkJywgKCkgPT4gaW5zdC5wYXJzZWQpO1xuICAgIH1cbiAgfSk7XG59XG4iLCAiLypcbiAqIGFyZ3YuanM6IFNpbXBsZSBtZW1vcnktYmFzZWQgc3RvcmUgZm9yIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuXG4gKlxuICogKEMpIDIwMTEsIENoYXJsaWUgUm9iYmlucyBhbmQgdGhlIENvbnRyaWJ1dG9ycy5cbiAqXG4gKi9cblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyksXG4gICAgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyksXG4gICAgTWVtb3J5ID0gcmVxdWlyZSgnLi9tZW1vcnknKS5NZW1vcnk7XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gQXJndiAob3B0aW9ucylcbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS5cbi8vIENvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciB0aGUgQXJndiBuY29uZiBzdG9yZSwgYSBzaW1wbGUgYWJzdHJhY3Rpb25cbi8vIGFyb3VuZCB0aGUgTWVtb3J5IHN0b3JlIHRoYXQgY2FuIHJlYWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cbi8vXG52YXIgQXJndiA9IGV4cG9ydHMuQXJndiA9IGZ1bmN0aW9uIChvcHRpb25zLCB1c2FnZSkge1xuICBNZW1vcnkuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBvcHRpb25zICAgICAgICA9IG9wdGlvbnMgfHwge307XG4gIHRoaXMudHlwZSAgICAgPSAnYXJndic7XG4gIHRoaXMucmVhZE9ubHkgID0gb3B0aW9ucy5yZWFkT25seSAhPT0gdW5kZWZpbmVkPyBvcHRpb25zLnJlYWRPbmx5IDogdHJ1ZTtcbiAgdGhpcy5vcHRpb25zICA9IG9wdGlvbnM7XG4gIHRoaXMudXNhZ2UgICAgPSB1c2FnZTtcblxuICBpZih0eXBlb2Ygb3B0aW9ucy5yZWFkT25seSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdGhpcy5yZWFkT25seSAgPSBvcHRpb25zLnJlYWRPbmx5O1xuICAgIGRlbGV0ZSBvcHRpb25zLnJlYWRPbmx5O1xuICAgIC8vIEZJWE1FOyBzaG91bGQgbm90IG11dGF0ZSBvcHRpb25zISEhIVxuICB9IGVsc2Uge1xuICAgIHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJylcdTAwQTB7XG4gICAgICB0aGlzLnRyYW5zZm9ybSA9IG9wdGlvbnMudHJhbnNmb3JtO1xuICAgICAgZGVsZXRlIG9wdGlvbnMudHJhbnNmb3JtO1xuICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2Zvcm0gPSBmYWxzZTtcbiAgfVxufTtcblxuLy8gSW5oZXJpdCBmcm9tIHRoZSBNZW1vcnkgc3RvcmVcbnV0aWwuaW5oZXJpdHMoQXJndiwgTWVtb3J5KTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBsb2FkU3luYyAoKVxuLy8gTG9hZHMgdGhlIGRhdGEgcGFzc2VkIGluIGZyb20gYHByb2Nlc3MuYXJndmAgaW50byB0aGlzIGluc3RhbmNlLlxuLy9cbkFyZ3YucHJvdG90eXBlLmxvYWRTeW5jID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvYWRBcmd2KCk7XG4gIHJldHVybiB0aGlzLnN0b3JlO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBsb2FkQXJndiAoKVxuLy8gTG9hZHMgdGhlIGRhdGEgcGFzc2VkIGluIGZyb20gdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHNcbi8vIGludG8gdGhpcyBpbnN0YW5jZS5cbi8vXG5Bcmd2LnByb3RvdHlwZS5sb2FkQXJndiA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgeWFyZ3MsIGFyZ3Y7XG5cbiAgeWFyZ3MgPSBpc1lhcmdzKHRoaXMub3B0aW9ucykgP1xuICAgIHRoaXMub3B0aW9ucyA6XG4gICAgdHlwZW9mIHRoaXMub3B0aW9ucyA9PT0gJ29iamVjdCcgP1xuICAgICAgcmVxdWlyZSgneWFyZ3MnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpLm9wdGlvbnModGhpcy5vcHRpb25zKSA6XG4gICAgICByZXF1aXJlKCd5YXJncycpKHByb2Nlc3MuYXJndi5zbGljZSgyKSk7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLnVzYWdlID09PSAnc3RyaW5nJykgeyB5YXJncy51c2FnZSh0aGlzLnVzYWdlKSB9XG5cbiAgYXJndiA9IHlhcmdzLmFyZ3ZcblxuICBpZiAoIWFyZ3YpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy50cmFuc2Zvcm0pIHtcbiAgICBhcmd2ID0gY29tbW9uLnRyYW5zZm9ybShhcmd2LCB0aGlzLnRyYW5zZm9ybSk7XG4gIH1cblxuICB2YXIgdGVtcFdyaXRlID0gZmFsc2U7XG5cbiAgaWYodGhpcy5yZWFkT25seSkge1xuICAgIHRoaXMucmVhZE9ubHkgPSBmYWxzZTtcbiAgICB0ZW1wV3JpdGUgPSB0cnVlO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoYXJndikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbCA9IGFyZ3Zba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKHNlbGYucGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgdmFsID0gY29tbW9uLnBhcnNlVmFsdWVzKHZhbCk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KGtleSwgdmFsKTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuc2hvd0hlbHAgPSB5YXJncy5zaG93SGVscFxuICB0aGlzLmhlbHAgICAgID0geWFyZ3MuaGVscFxuXG4gIGlmICh0ZW1wV3JpdGUpIHtcbiAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5zdG9yZTtcbn07XG5cbmZ1bmN0aW9uIGlzWWFyZ3Mob2JqKSB7XG4gIHJldHVybiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JykgJiYgKCdhcmd2JyBpbiBvYmopO1xufVxuIiwgIi8qXG4gKiBlbnYuanM6IFNpbXBsZSBtZW1vcnktYmFzZWQgc3RvcmUgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICpcbiAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMgYW5kIHRoZSBDb250cmlidXRvcnMuXG4gKlxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpLFxuICAgIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpLFxuICAgIE1lbW9yeSA9IHJlcXVpcmUoJy4vbWVtb3J5JykuTWVtb3J5O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIEVudiAob3B0aW9ucylcbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS5cbi8vIENvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciB0aGUgRW52IG5jb25mIHN0b3JlLCBhIHNpbXBsZSBhYnN0cmFjdGlvblxuLy8gYXJvdW5kIHRoZSBNZW1vcnkgc3RvcmUgdGhhdCBjYW4gcmVhZCBwcm9jZXNzIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbi8vXG52YXIgRW52ID0gZXhwb3J0cy5FbnYgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBNZW1vcnkuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBvcHRpb25zICAgICAgICA9IG9wdGlvbnMgfHwge307XG4gIHRoaXMudHlwZSAgICAgID0gJ2Vudic7XG4gIHRoaXMucmVhZE9ubHkgID0gb3B0aW9ucy5yZWFkT25seSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5yZWFkT25seSA6IHRydWU7XG4gIHRoaXMud2hpdGVsaXN0ID0gb3B0aW9ucy53aGl0ZWxpc3QgfHwgW107XG4gIHRoaXMubG93ZXJDYXNlID0gb3B0aW9ucy5sb3dlckNhc2UgfHwgZmFsc2U7XG4gIHRoaXMucGFyc2VWYWx1ZXMgPSBvcHRpb25zLnBhcnNlVmFsdWVzIHx8IGZhbHNlO1xuICB0aGlzLnRyYW5zZm9ybSA9IG9wdGlvbnMudHJhbnNmb3JtIHx8IGZhbHNlO1xuXG4gIGlmICgoe30pLnRvU3RyaW5nLmNhbGwob3B0aW9ucy5tYXRjaCkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG4gICAgICAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLm1hdGNoID0gb3B0aW9ucy5tYXRjaDtcbiAgfVxuXG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICB0aGlzLndoaXRlbGlzdCA9IG9wdGlvbnM7XG4gIH1cbn07XG5cbi8vIEluaGVyaXQgZnJvbSB0aGUgTWVtb3J5IHN0b3JlXG51dGlsLmluaGVyaXRzKEVudiwgTWVtb3J5KTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBsb2FkU3luYyAoKVxuLy8gTG9hZHMgdGhlIGRhdGEgcGFzc2VkIGluIGZyb20gYHByb2Nlc3MuZW52YCBpbnRvIHRoaXMgaW5zdGFuY2UuXG4vL1xuRW52LnByb3RvdHlwZS5sb2FkU3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sb2FkRW52KCk7XG4gIHJldHVybiB0aGlzLnN0b3JlO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBsb2FkRW52ICgpXG4vLyBMb2FkcyB0aGUgZGF0YSBwYXNzZWQgaW4gZnJvbSBgcHJvY2Vzcy5lbnZgIGludG8gdGhpcyBpbnN0YW5jZS5cbi8vXG5FbnYucHJvdG90eXBlLmxvYWRFbnYgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICB2YXIgZW52ID0gcHJvY2Vzcy5lbnY7XG5cbiAgaWYgKHRoaXMubG93ZXJDYXNlKSB7XG4gICAgZW52ID0ge307XG4gICAgT2JqZWN0LmtleXMocHJvY2Vzcy5lbnYpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgZW52W2tleS50b0xvd2VyQ2FzZSgpXSA9IHByb2Nlc3MuZW52W2tleV07XG4gICAgfSk7XG4gIH1cblxuICBpZiAodGhpcy50cmFuc2Zvcm0pIHtcbiAgICBlbnYgPSBjb21tb24udHJhbnNmb3JtKGVudiwgdGhpcy50cmFuc2Zvcm0pO1xuICB9XG5cbiAgdmFyIHRlbXBXcml0ZSA9IGZhbHNlO1xuXG4gIGlmKHRoaXMucmVhZE9ubHkpIHtcbiAgICB0aGlzLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgdGVtcFdyaXRlID0gdHJ1ZTtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKGVudikuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoc2VsZi5tYXRjaCAmJiBzZWxmLndoaXRlbGlzdC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBrZXkubWF0Y2goc2VsZi5tYXRjaCkgfHwgc2VsZi53aGl0ZWxpc3QuaW5kZXhPZihrZXkpICE9PSAtMVxuICAgIH1cbiAgICBlbHNlIGlmIChzZWxmLm1hdGNoKSB7XG4gICAgICByZXR1cm4ga2V5Lm1hdGNoKHNlbGYubWF0Y2gpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiAhc2VsZi53aGl0ZWxpc3QubGVuZ3RoIHx8IHNlbGYud2hpdGVsaXN0LmluZGV4T2Yoa2V5KSAhPT0gLTFcbiAgICB9XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXG4gICAgdmFyIHZhbCA9IGVudltrZXldO1xuXG4gICAgaWYgKHNlbGYucGFyc2VWYWx1ZXMpIHtcbiAgICAgIHZhbCA9IGNvbW1vbi5wYXJzZVZhbHVlcyh2YWwpO1xuICAgIH1cblxuICAgIHNlbGYuc2V0KGtleSwgdmFsKTtcbiAgfSk7XG5cbiAgaWYgKHRlbXBXcml0ZSkge1xuICAgIHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc3RvcmU7XG59O1xuIiwgIi8qXG4gKiBmaWxlLmpzOiBTaW1wbGUgZmlsZSBzdG9yYWdlIGVuZ2luZSBmb3IgbmNvbmYgZmlsZXNcbiAqXG4gKiAoQykgMjAxMSwgQ2hhcmxpZSBSb2JiaW5zIGFuZCB0aGUgQ29udHJpYnV0b3JzLlxuICpcbiAqL1xuXG52YXIgb3MgPSByZXF1aXJlKCdvcycpLFxuICAgIGZzID0gcmVxdWlyZSgnZnMnKSxcbiAgICBwYXRoID0gcmVxdWlyZSgncGF0aCcpLFxuICAgIHV0aWwgPSByZXF1aXJlKCd1dGlsJyksXG4gICAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyksXG4gICAgZm9ybWF0cyA9IHJlcXVpcmUoJy4uL2Zvcm1hdHMnKSxcbiAgICBNZW1vcnkgPSByZXF1aXJlKCcuL21lbW9yeScpLk1lbW9yeTtcblxudmFyIGV4aXN0cyA9IGZzLmV4aXN0cyB8fCBwYXRoLmV4aXN0cyxcbiAgICBleGlzdHNTeW5jID0gZnMuZXhpc3RzU3luYyB8fCBwYXRoLmV4aXN0c1N5bmM7XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gRmlsZSAob3B0aW9ucylcbi8vICMjIyMgQG9wdGlvbnMge09iamVjdH0gT3B0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZVxuLy8gQ29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIHRoZSBGaWxlIG5jb25mIHN0b3JlLCBhIHNpbXBsZSBhYnN0cmFjdGlvblxuLy8gYXJvdW5kIHRoZSBNZW1vcnkgc3RvcmUgdGhhdCBjYW4gcGVyc2lzdCBjb25maWd1cmF0aW9uIHRvIGRpc2suXG4vL1xudmFyIEZpbGUgPSBleHBvcnRzLkZpbGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMuZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBvcHRpb24gYGZpbGVgJyk7XG4gIH1cblxuICBNZW1vcnkuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB0aGlzLnR5cGUgICAgPSAnZmlsZSc7XG4gIHRoaXMuZmlsZSAgICA9IG9wdGlvbnMuZmlsZTtcbiAgdGhpcy5kaXIgICAgID0gb3B0aW9ucy5kaXIgICAgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgdGhpcy5mb3JtYXQgID0gb3B0aW9ucy5mb3JtYXQgfHwgZm9ybWF0cy5qc29uO1xuICB0aGlzLnNlY3VyZSAgPSBvcHRpb25zLnNlY3VyZTtcbiAgdGhpcy5zcGFjaW5nID0gb3B0aW9ucy5qc29uX3NwYWNpbmdcbiAgICB8fCBvcHRpb25zLnNwYWNpbmdcbiAgICB8fCAyO1xuICB0aGlzLmVvbCAgICAgPSAhKG9wdGlvbnMuZW9sID09PSBmYWxzZSk7XG5cbiAgaWYgKHRoaXMuc2VjdXJlKSB7XG4gICAgdGhpcy5zZWN1cmUgPSBCdWZmZXIuaXNCdWZmZXIodGhpcy5zZWN1cmUpIHx8IHR5cGVvZiB0aGlzLnNlY3VyZSA9PT0gJ3N0cmluZydcbiAgICAgID8geyBzZWNyZXQ6IHRoaXMuc2VjdXJlLnRvU3RyaW5nKCkgfVxuICAgICAgOiB0aGlzLnNlY3VyZTtcblxuICAgIHRoaXMuc2VjdXJlLmFsZyA9IHRoaXMuc2VjdXJlLmFsZyB8fCAnYWVzLTI1Ni1jdHInO1xuICAgIGlmICh0aGlzLnNlY3VyZS5zZWNyZXRQYXRoKSB7XG4gICAgICB0aGlzLnNlY3VyZS5zZWNyZXQgPSBmcy5yZWFkRmlsZVN5bmModGhpcy5zZWN1cmUuc2VjcmV0UGF0aCwgJ3V0ZjgnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VjdXJlLnNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZWN1cmUuc2VjcmV0IG9wdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNlYXJjaCkge1xuICAgIHRoaXMuc2VhcmNoKHRoaXMuZGlyKTtcbiAgfVxufTtcblxuLy8gSW5oZXJpdCBmcm9tIHRoZSBNZW1vcnkgc3RvcmVcbnV0aWwuaW5oZXJpdHMoRmlsZSwgTWVtb3J5KTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBzYXZlICh2YWx1ZSwgY2FsbGJhY2spXG4vLyAjIyMjIEB2YWx1ZSB7T2JqZWN0fSBfSWdub3JlZF8gTGVmdCBoZXJlIGZvciBjb25zaXN0ZW5jeVxuLy8gIyMjIyBAY2FsbGJhY2sge2Z1bmN0aW9ufSBDb250aW51YXRpb24gdG8gcmVzcG9uZCB0byB3aGVuIGNvbXBsZXRlLlxuLy8gU2F2ZXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gZGlzayBhdCBgdGhpcy5maWxlYFxuLy8gdXNpbmcgdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgYHRoaXMuZm9ybWF0YC5cbi8vXG5GaWxlLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKHZhbHVlLCBjYWxsYmFjaykge1xuICB0aGlzLnNhdmVUb0ZpbGUodGhpcy5maWxlLCB2YWx1ZSwgY2FsbGJhY2spO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBzYXZlVG9GaWxlIChwYXRoLCB2YWx1ZSwgY2FsbGJhY2spXG4vLyAjIyMjIEBwYXRoIHtzdHJpbmd9IFRoZSBwYXRoIHRvIHRoZSBmaWxlIHdoZXJlIHdlIHNhdmUgdGhlIGNvbmZpZ3VyYXRpb24gdG9cbi8vICMjIyMgQGZvcm1hdCB7T2JqZWN0fSBPcHRpb25hbCBmb3JtYXR0ZXIsIGRlZmF1bHQgYmVoaW5nIHRoZSBvbmUgb2YgdGhlIHN0b3JlXG4vLyAjIyMjIEBjYWxsYmFjayB7ZnVuY3Rpb259IENvbnRpbnVhdGlvbiB0byByZXNwb25kIHRvIHdoZW4gY29tcGxldGUuXG4vLyBTYXZlcyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIG9iamVjdCB0byBkaXNrIGF0IGB0aGlzLmZpbGVgXG4vLyB1c2luZyB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSBgdGhpcy5mb3JtYXRgLlxuLy9cbkZpbGUucHJvdG90eXBlLnNhdmVUb0ZpbGUgPSBmdW5jdGlvbiAocGF0aCwgZm9ybWF0LCBjYWxsYmFjaykge1xuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBmb3JtYXQ7XG4gICAgZm9ybWF0ID0gdGhpcy5mb3JtYXQ7XG4gIH1cblxuICBmcy53cml0ZUZpbGUocGF0aCwgdGhpcy5zdHJpbmdpZnkoZm9ybWF0KSwgY2FsbGJhY2spO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBzYXZlU3luYyAodmFsdWUsIGNhbGxiYWNrKVxuLy8gU2F2ZXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gZGlzayBhdCBgdGhpcy5maWxlYFxuLy8gdXNpbmcgdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgYHRoaXMuZm9ybWF0YCBzeW5jaHJvbm91c2x5LlxuLy9cbkZpbGUucHJvdG90eXBlLnNhdmVTeW5jID0gZnVuY3Rpb24gKCkge1xuICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZmlsZSwgdGhpcy5zdHJpbmdpZnkoKSk7XG4gIHJldHVybiB0aGlzLnN0b3JlO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBsb2FkIChjYWxsYmFjaylcbi8vICMjIyMgQGNhbGxiYWNrIHtmdW5jdGlvbn0gQ29udGludWF0aW9uIHRvIHJlc3BvbmQgdG8gd2hlbiBjb21wbGV0ZS5cbi8vIFJlc3BvbmRzIHdpdGggYW4gT2JqZWN0IHJlcHJlc2VudGluZyBhbGwga2V5cyBhc3NvY2lhdGVkIGluIHRoaXMgaW5zdGFuY2UuXG4vL1xuRmlsZS5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgZXhpc3RzKHNlbGYuZmlsZSwgZnVuY3Rpb24gKGV4aXN0cykge1xuICAgIGlmICghZXhpc3RzKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwge30pO1xuICAgIH1cblxuICAgIC8vXG4gICAgLy8gRWxzZSwgdGhlIHBhdGggZXhpc3RzLCByZWFkIGl0IGZyb20gZGlza1xuICAgIC8vXG4gICAgZnMucmVhZEZpbGUoc2VsZi5maWxlLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBEZWFscyB3aXRoIHN0cmluZyB0aGF0IGluY2x1ZGUgQk9NXG4gICAgICAgIHZhciBzdHJpbmdEYXRhID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICBpZiAoc3RyaW5nRGF0YS5jaGFyQXQoMCkgPT09ICdcXHVGRUZGJykge1xuICAgICAgICAgIHN0cmluZ0RhdGEgPSBzdHJpbmdEYXRhLnN1YnN0cigxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuc3RvcmUgPSBzZWxmLnBhcnNlKHN0cmluZ0RhdGEpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGV4KSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciBwYXJzaW5nIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlOiBbXCIgKyBzZWxmLmZpbGUgKyAnXTogJyArIGV4Lm1lc3NhZ2UpKTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2sobnVsbCwgc2VsZi5zdG9yZSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBsb2FkU3luYyAoY2FsbGJhY2spXG4vLyBBdHRlbXB0cyB0byBsb2FkIHRoZSBkYXRhIHN0b3JlZCBpbiBgdGhpcy5maWxlYCBzeW5jaHJvbm91c2x5XG4vLyBhbmQgcmVzcG9uZHMgYXBwcm9wcmlhdGVseS5cbi8vXG5GaWxlLnByb3RvdHlwZS5sb2FkU3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCFleGlzdHNTeW5jKHRoaXMuZmlsZSkpIHtcbiAgICB0aGlzLnN0b3JlID0ge307XG4gICAgcmV0dXJuIHRoaXMuc3RvcmU7XG4gIH1cblxuICAvL1xuICAvLyBFbHNlLCB0aGUgcGF0aCBleGlzdHMsIHJlYWQgaXQgZnJvbSBkaXNrXG4gIC8vXG4gIHRyeSB7XG4gICAgLy8gRGVhbHMgd2l0aCBmaWxlIHRoYXQgaW5jbHVkZSBCT01cbiAgICB2YXIgZmlsZURhdGEgPSBmcy5yZWFkRmlsZVN5bmModGhpcy5maWxlLCAndXRmOCcpO1xuICAgIGlmIChmaWxlRGF0YS5jaGFyQXQoMCkgPT09ICdcXHVGRUZGJykge1xuICAgICAgZmlsZURhdGEgPSBmaWxlRGF0YS5zdWJzdHIoMSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZSA9IHRoaXMucGFyc2UoZmlsZURhdGEpO1xuICB9XG4gIGNhdGNoIChleCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIHBhcnNpbmcgeW91ciBjb25maWd1cmF0aW9uIGZpbGU6IFtcIiArIHRoaXMuZmlsZSArICddOiAnICsgZXgubWVzc2FnZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5zdG9yZTtcbn07XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gc3RyaW5naWZ5ICgpXG4vLyBSZXR1cm5zIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBjb250ZW50cyBJSUZcbi8vIGB0aGlzLnNlY3VyZWAgaXMgZW5hYmxlZFxuLy9cbkZpbGUucHJvdG90eXBlLnN0cmluZ2lmeSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLnN0b3JlO1xuICBpZiAoIWZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gdGhpcy5mb3JtYXRcbiAgfVxuXG4gIGlmICh0aGlzLnNlY3VyZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBkYXRhID0gT2JqZWN0LmtleXMoZGF0YSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZm9ybWF0LnN0cmluZ2lmeShkYXRhW2tleV0pO1xuICAgICAgdmFyIGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KTtcbiAgICAgIHZhciBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoc2VsZi5zZWN1cmUuYWxnLCBzZWxmLnNlY3VyZS5zZWNyZXQsIGl2KTtcbiAgICAgIHZhciBjaXBoZXJ0ZXh0ID0gY2lwaGVyLnVwZGF0ZSh2YWx1ZSwgJ3V0ZjgnLCAnaGV4Jyk7XG4gICAgICBjaXBoZXJ0ZXh0ICs9IGNpcGhlci5maW5hbCgnaGV4Jyk7XG4gICAgICBhY2Nba2V5XSA9IHsgYWxnOiBzZWxmLnNlY3VyZS5hbGcsIHZhbHVlOiBjaXBoZXJ0ZXh0LCBpdjogaXYudG9TdHJpbmcoJ2hleCcpIH07XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHZhciBzdHJpbmdpZmllZCA9IGZvcm1hdC5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgdGhpcy5zcGFjaW5nKTtcbiAgdmFyIG5lZWRzRU9MID0gdGhpcy5lb2wgJiYgc3RyaW5naWZpZWQuc2xpY2UoLTEpICE9PSBvcy5FT0w7XG5cbiAgcmV0dXJuIHN0cmluZ2lmaWVkICsgKG5lZWRzRU9MID8gb3MuRU9MIDogJycpO1xufTtcblxuLy9cbi8vICMjIyBmdW5jdGlvbiBwYXJzZSAoY29udGVudHMpXG4vLyBSZXR1cm5zIGEgZGVjcnlwdGVkIHZlcnNpb24gb2YgdGhlIGNvbnRlbnRzIElGRlxuLy8gYHRoaXMuc2VjdXJlYCBpcyBlbmFibGVkLlxuLy9cbkZpbGUucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKGNvbnRlbnRzKSB7XG4gIHZhciBwYXJzZWQgPSB0aGlzLmZvcm1hdC5wYXJzZShjb250ZW50cyk7XG5cbiAgaWYgKHRoaXMuc2VjdXJlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHBhcnNlZCA9IE9iamVjdC5rZXlzKHBhcnNlZCkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gcGFyc2VkW2tleV07XG5cbiAgICAgIGlmICghdmFsdWUuaXYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3VyIGVuY3J5cHRlZCBmaWxlIGlzIG91dGRhdGVkIChlbmNyeXB0ZWQgd2l0aG91dCBpdikuIFBsZWFzZSByZS1lbmNyeXB0IHlvdXIgZmlsZSB1c2luZyBhIHByZS12MSByZWxlYXNlIG9mIG5jb25mLCB2MC4xMCBvciBhYm92ZS4nKTtcbiAgICAgIH1cbiAgICAgIGxldCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KHZhbHVlLmFsZywgc2VsZi5zZWN1cmUuc2VjcmV0LCBCdWZmZXIuZnJvbSh2YWx1ZS5pdiwgJ2hleCcpKTtcblxuICAgICAgdmFyIHBsYWludGV4dCA9IGRlY2lwaGVyLnVwZGF0ZSh2YWx1ZS52YWx1ZSwgJ2hleCcsICd1dGY4Jyk7XG4gICAgICBwbGFpbnRleHQgKz0gZGVjaXBoZXIuZmluYWwoJ3V0ZjgnKTtcbiAgICAgIGFjY1trZXldID0gc2VsZi5mb3JtYXQucGFyc2UocGxhaW50ZXh0KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcblxufTtcblxuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIHNlYXJjaCAoYmFzZSlcbi8vICMjIyMgQGJhc2Uge3N0cmluZ30gQmFzZSBkaXJlY3RvcnkgKG9yIGZpbGUpIHRvIGJlZ2luIHNlYXJjaGluZyBmb3IgdGhlIHRhcmdldCBmaWxlLlxuLy8gQXR0ZW1wdHMgdG8gZmluZCBgdGhpcy5maWxlYCBieSBpdGVyYXRpdmVseSBzZWFyY2hpbmcgdXAgdGhlXG4vLyBkaXJlY3Rvcnkgc3RydWN0dXJlXG4vL1xuRmlsZS5wcm90b3R5cGUuc2VhcmNoID0gZnVuY3Rpb24gKGJhc2UpIHtcbiAgdmFyIGxvb2tpbmcgPSB0cnVlLFxuICAgICAgZnVsbHBhdGgsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIHN0YXRzO1xuXG4gIGJhc2UgPSBiYXNlIHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgaWYgKHRoaXMuZmlsZVswXSA9PT0gJy8nKSB7XG4gICAgLy9cbiAgICAvLyBJZiBmaWxlbmFtZSBmb3IgdGhpcyBpbnN0YW5jZSBpcyBhIGZ1bGx5IHF1YWxpZmllZCBwYXRoXG4gICAgLy8gKGkuZS4gaXQgc3RhcnRzIHdpdGggYSBgJy8nYCkgdGhlbiBjaGVjayBpZiBpdCBleGlzdHNcbiAgICAvL1xuICAgIHRyeSB7XG4gICAgICBzdGF0cyA9IGZzLnN0YXRTeW5jKGZzLnJlYWxwYXRoU3luYyh0aGlzLmZpbGUpKTtcbiAgICAgIGlmIChzdGF0cy5pc0ZpbGUoKSkge1xuICAgICAgICBmdWxscGF0aCA9IHRoaXMuZmlsZTtcbiAgICAgICAgbG9va2luZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXgpIHtcbiAgICAgIC8vXG4gICAgICAvLyBJZ25vcmUgZXJyb3JzXG4gICAgICAvL1xuICAgIH1cbiAgfVxuXG4gIGlmIChsb29raW5nICYmIGJhc2UpIHtcbiAgICAvL1xuICAgIC8vIEF0dGVtcHQgdG8gc3RhdCB0aGUgcmVhbHBhdGggbG9jYXRlZCBhdCBgYmFzZWBcbiAgICAvLyBpZiB0aGUgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0IHRoZW4gcmV0dXJuIGZhbHNlLlxuICAgIC8vXG4gICAgdHJ5IHtcbiAgICAgIHZhciBzdGF0ID0gZnMuc3RhdFN5bmMoZnMucmVhbHBhdGhTeW5jKGJhc2UpKTtcbiAgICAgIGxvb2tpbmcgPSBzdGF0LmlzRGlyZWN0b3J5KCk7XG4gICAgfVxuICAgIGNhdGNoIChleCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHdoaWxlIChsb29raW5nKSB7XG4gICAgLy9cbiAgICAvLyBJdGVyYXRpdmVseSBsb29rIHVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZyb20gYGJhc2VgXG4gICAgLy9cbiAgICB0cnkge1xuICAgICAgc3RhdHMgPSBmcy5zdGF0U3luYyhmcy5yZWFscGF0aFN5bmMoZnVsbHBhdGggPSBwYXRoLmpvaW4oYmFzZSwgdGhpcy5maWxlKSkpO1xuICAgICAgbG9va2luZyA9IHN0YXRzLmlzRGlyZWN0b3J5KCk7XG4gICAgfVxuICAgIGNhdGNoIChleCkge1xuICAgICAgcHJldmlvdXMgPSBiYXNlO1xuICAgICAgYmFzZSA9IHBhdGguZGlybmFtZShiYXNlKTtcblxuICAgICAgaWYgKHByZXZpb3VzID09PSBiYXNlKSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgdGhlIHRvcCBvZiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSB0aGVuIHNpbXBseSB1c2VcbiAgICAgICAgLy8gdGhlIGRlZmF1bHQgZmlsZSBwYXRoLlxuICAgICAgICAvL1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHN0YXRzID0gZnMuc3RhdFN5bmMoZnMucmVhbHBhdGhTeW5jKGZ1bGxwYXRoID0gcGF0aC5qb2luKHRoaXMuZGlyLCB0aGlzLmZpbGUpKSk7XG4gICAgICAgICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgIGZ1bGxwYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnNcbiAgICAgICAgICAvL1xuICAgICAgICB9XG5cbiAgICAgICAgbG9va2luZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIFNldCB0aGUgZmlsZSBmb3IgdGhpcyBpbnN0YW5jZSB0byB0aGUgZnVsbHBhdGhcbiAgLy8gdGhhdCB3ZSBoYXZlIGZvdW5kIGR1cmluZyB0aGUgc2VhcmNoLiBJbiB0aGUgZXZlbnQgdGhhdFxuICAvLyB0aGUgc2VhcmNoIHdhcyB1bnN1Y2Nlc3NmdWwgdXNlIHRoZSBvcmlnaW5hbCB2YWx1ZSBmb3IgYHRoaXMuZmlsZWAuXG4gIC8vXG4gIHRoaXMuZmlsZSA9IGZ1bGxwYXRoIHx8IHRoaXMuZmlsZTtcblxuICByZXR1cm4gZnVsbHBhdGg7XG59O1xuIiwgIi8qXG4gKiBsaXRlcmFsLmpzOiBTaW1wbGUgbGl0ZXJhbCBPYmplY3Qgc3RvcmUgZm9yIG5jb25mLlxuICpcbiAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMgYW5kIHRoZSBDb250cmlidXRvcnMuXG4gKlxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpLFxuICAgIE1lbW9yeSA9IHJlcXVpcmUoJy4vbWVtb3J5JykuTWVtb3J5XG5cbnZhciBMaXRlcmFsID0gZXhwb3J0cy5MaXRlcmFsID0gZnVuY3Rpb24gTGl0ZXJhbCAob3B0aW9ucykge1xuICBNZW1vcnkuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBvcHRpb25zICAgICAgID0gb3B0aW9ucyB8fCB7fVxuICB0aGlzLnR5cGUgICAgID0gJ2xpdGVyYWwnO1xuICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgdGhpcy5zdG9yZSAgICA9IG9wdGlvbnMuc3RvcmUgfHwgb3B0aW9ucztcbn07XG5cbi8vIEluaGVyaXQgZnJvbSBNZW1vcnkgc3RvcmUuXG51dGlsLmluaGVyaXRzKExpdGVyYWwsIE1lbW9yeSk7XG5cbi8vXG4vLyAjIyMgZnVuY3Rpb24gbG9hZFN5bmMgKGNhbGxiYWNrKVxuLy8gUmV0dXJucyB0aGUgZGF0YSBzdG9yZWQgaW4gYHRoaXMuc3RvcmVgIHN5bmNocm9ub3VzbHkuXG4vL1xuTGl0ZXJhbC5wcm90b3R5cGUubG9hZFN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnN0b3JlO1xufTsiLCAiLypcbiAqIG5jb25mLmpzOiBUb3AtbGV2ZWwgaW5jbHVkZSBmb3IgdGhlIG5jb25mIG1vZHVsZVxuICpcbiAqIChDKSAyMDExLCBDaGFybGllIFJvYmJpbnMgYW5kIHRoZSBDb250cmlidXRvcnMuXG4gKlxuICovXG5cbnZhciBjb21tb24gPSByZXF1aXJlKCcuL25jb25mL2NvbW1vbicpLFxuICAgIFByb3ZpZGVyID0gcmVxdWlyZSgnLi9uY29uZi9wcm92aWRlcicpLlByb3ZpZGVyO1xuXG4vL1xuLy8gYG5jb25mYCBpcyBieSBkZWZhdWx0IGFuIGluc3RhbmNlIG9mIGBuY29uZi5Qcm92aWRlcmAuXG4vL1xudmFyIG5jb25mID0gbW9kdWxlLmV4cG9ydHMgPSBuZXcgUHJvdmlkZXIoKTtcblxuLy9cbi8vIEV4cG9zZSB0aGUgdmVyc2lvbiBmcm9tIHRoZSBwYWNrYWdlLmpzb25cbi8vXG5uY29uZi52ZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcblxuLy9cbi8vIFNldHVwIGFsbCBzdG9yZXMgYXMgbGF6eS1sb2FkZWQgZ2V0dGVycy5cbi8vXG5uY29uZi5fX2RlZmluZUdldHRlcl9fKCdBcmd2JywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZXF1aXJlKCcuL25jb25mL3N0b3Jlcy9hcmd2JykuQXJndjtcbn0pO1xuXG5uY29uZi5fX2RlZmluZUdldHRlcl9fKCdFbnYnLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJlcXVpcmUoJy4vbmNvbmYvc3RvcmVzL2VudicpLkVudjtcbn0pO1xuXG5uY29uZi5fX2RlZmluZUdldHRlcl9fKCdGaWxlJywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZXF1aXJlKCcuL25jb25mL3N0b3Jlcy9maWxlJykuRmlsZTtcbn0pO1xuXG5uY29uZi5fX2RlZmluZUdldHRlcl9fKCdMaXRlcmFsJywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZXF1aXJlKCcuL25jb25mL3N0b3Jlcy9saXRlcmFsJykuTGl0ZXJhbDtcbn0pO1xuXG5uY29uZi5fX2RlZmluZUdldHRlcl9fKCdNZW1vcnknLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJlcXVpcmUoJy4vbmNvbmYvc3RvcmVzL21lbW9yeScpLk1lbW9yeTtcbn0pO1xuXG4vL1xuLy8gRXhwb3NlIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgaW5jbHVkZWQgd2l0aCBuY29uZlxuLy9cbm5jb25mLmtleSAgICAgICAgICAgPSBjb21tb24ua2V5O1xubmNvbmYucGF0aCAgICAgICAgICA9IGNvbW1vbi5wYXRoO1xubmNvbmYubG9hZEZpbGVzICAgICA9IGNvbW1vbi5sb2FkRmlsZXM7XG5uY29uZi5sb2FkRmlsZXNTeW5jID0gY29tbW9uLmxvYWRGaWxlc1N5bmM7XG5uY29uZi5mb3JtYXRzICAgICAgID0gcmVxdWlyZSgnLi9uY29uZi9mb3JtYXRzJyk7XG5uY29uZi5Qcm92aWRlciAgICAgID0gUHJvdmlkZXI7XG4iLCBudWxsLCBudWxsLCBudWxsLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBybmc7XG5cbnZhciBfY3J5cHRvID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY3J5cHRvXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuY29uc3Qgcm5kczhQb29sID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsgLy8gIyBvZiByYW5kb20gdmFsdWVzIHRvIHByZS1hbGxvY2F0ZVxuXG5sZXQgcG9vbFB0ciA9IHJuZHM4UG9vbC5sZW5ndGg7XG5cbmZ1bmN0aW9uIHJuZygpIHtcbiAgaWYgKHBvb2xQdHIgPiBybmRzOFBvb2wubGVuZ3RoIC0gMTYpIHtcbiAgICBfY3J5cHRvLmRlZmF1bHQucmFuZG9tRmlsbFN5bmMocm5kczhQb29sKTtcblxuICAgIHBvb2xQdHIgPSAwO1xuICB9XG5cbiAgcmV0dXJuIHJuZHM4UG9vbC5zbGljZShwb29sUHRyLCBwb29sUHRyICs9IDE2KTtcbn0iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2RlZmF1bHQgPSAvXig/OlswLTlhLWZdezh9LVswLTlhLWZdezR9LVsxLTVdWzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcmVnZXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3JlZ2V4LmpzXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gdmFsaWRhdGUodXVpZCkge1xuICByZXR1cm4gdHlwZW9mIHV1aWQgPT09ICdzdHJpbmcnICYmIF9yZWdleC5kZWZhdWx0LnRlc3QodXVpZCk7XG59XG5cbnZhciBfZGVmYXVsdCA9IHZhbGlkYXRlO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwgIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3ZhbGlkYXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi92YWxpZGF0ZS5qc1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29udmVydCBhcnJheSBvZiAxNiBieXRlIHZhbHVlcyB0byBVVUlEIHN0cmluZyBmb3JtYXQgb2YgdGhlIGZvcm06XG4gKiBYWFhYWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYWFhYWFhYWFhcbiAqL1xuY29uc3QgYnl0ZVRvSGV4ID0gW107XG5cbmZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgYnl0ZVRvSGV4LnB1c2goKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShhcnIsIG9mZnNldCA9IDApIHtcbiAgLy8gTm90ZTogQmUgY2FyZWZ1bCBlZGl0aW5nIHRoaXMgY29kZSEgIEl0J3MgYmVlbiB0dW5lZCBmb3IgcGVyZm9ybWFuY2VcbiAgLy8gYW5kIHdvcmtzIGluIHdheXMgeW91IG1heSBub3QgZXhwZWN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkL3B1bGwvNDM0XG4gIGNvbnN0IHV1aWQgPSAoYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDFdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAzXV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDRdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNV1dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA2XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDddXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA5XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDExXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEyXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEzXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE0XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE1XV0pLnRvTG93ZXJDYXNlKCk7IC8vIENvbnNpc3RlbmN5IGNoZWNrIGZvciB2YWxpZCBVVUlELiAgSWYgdGhpcyB0aHJvd3MsIGl0J3MgbGlrZWx5IGR1ZSB0byBvbmVcbiAgLy8gb2YgdGhlIGZvbGxvd2luZzpcbiAgLy8gLSBPbmUgb3IgbW9yZSBpbnB1dCBhcnJheSB2YWx1ZXMgZG9uJ3QgbWFwIHRvIGEgaGV4IG9jdGV0IChsZWFkaW5nIHRvXG4gIC8vIFwidW5kZWZpbmVkXCIgaW4gdGhlIHV1aWQpXG4gIC8vIC0gSW52YWxpZCBpbnB1dCB2YWx1ZXMgZm9yIHRoZSBSRkMgYHZlcnNpb25gIG9yIGB2YXJpYW50YCBmaWVsZHNcblxuICBpZiAoISgwLCBfdmFsaWRhdGUuZGVmYXVsdCkodXVpZCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZ2lmaWVkIFVVSUQgaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgcmV0dXJuIHV1aWQ7XG59XG5cbnZhciBfZGVmYXVsdCA9IHN0cmluZ2lmeTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsICJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9ybmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3JuZy5qc1wiKSk7XG5cbnZhciBfc3RyaW5naWZ5ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zdHJpbmdpZnkuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vLyAqKmB2MSgpYCAtIEdlbmVyYXRlIHRpbWUtYmFzZWQgVVVJRCoqXG4vL1xuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL0xpb3NLL1VVSUQuanNcbi8vIGFuZCBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvdXVpZC5odG1sXG5sZXQgX25vZGVJZDtcblxubGV0IF9jbG9ja3NlcTsgLy8gUHJldmlvdXMgdXVpZCBjcmVhdGlvbiB0aW1lXG5cblxubGV0IF9sYXN0TVNlY3MgPSAwO1xubGV0IF9sYXN0TlNlY3MgPSAwOyAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkIGZvciBBUEkgZGV0YWlsc1xuXG5mdW5jdGlvbiB2MShvcHRpb25zLCBidWYsIG9mZnNldCkge1xuICBsZXQgaSA9IGJ1ZiAmJiBvZmZzZXQgfHwgMDtcbiAgY29uc3QgYiA9IGJ1ZiB8fCBuZXcgQXJyYXkoMTYpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGV0IG5vZGUgPSBvcHRpb25zLm5vZGUgfHwgX25vZGVJZDtcbiAgbGV0IGNsb2Nrc2VxID0gb3B0aW9ucy5jbG9ja3NlcSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5jbG9ja3NlcSA6IF9jbG9ja3NlcTsgLy8gbm9kZSBhbmQgY2xvY2tzZXEgbmVlZCB0byBiZSBpbml0aWFsaXplZCB0byByYW5kb20gdmFsdWVzIGlmIHRoZXkncmUgbm90XG4gIC8vIHNwZWNpZmllZC4gIFdlIGRvIHRoaXMgbGF6aWx5IHRvIG1pbmltaXplIGlzc3VlcyByZWxhdGVkIHRvIGluc3VmZmljaWVudFxuICAvLyBzeXN0ZW0gZW50cm9weS4gIFNlZSAjMTg5XG5cbiAgaWYgKG5vZGUgPT0gbnVsbCB8fCBjbG9ja3NlcSA9PSBudWxsKSB7XG4gICAgY29uc3Qgc2VlZEJ5dGVzID0gb3B0aW9ucy5yYW5kb20gfHwgKG9wdGlvbnMucm5nIHx8IF9ybmcuZGVmYXVsdCkoKTtcblxuICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgIC8vIFBlciA0LjUsIGNyZWF0ZSBhbmQgNDgtYml0IG5vZGUgaWQsICg0NyByYW5kb20gYml0cyArIG11bHRpY2FzdCBiaXQgPSAxKVxuICAgICAgbm9kZSA9IF9ub2RlSWQgPSBbc2VlZEJ5dGVzWzBdIHwgMHgwMSwgc2VlZEJ5dGVzWzFdLCBzZWVkQnl0ZXNbMl0sIHNlZWRCeXRlc1szXSwgc2VlZEJ5dGVzWzRdLCBzZWVkQnl0ZXNbNV1dO1xuICAgIH1cblxuICAgIGlmIChjbG9ja3NlcSA9PSBudWxsKSB7XG4gICAgICAvLyBQZXIgNC4yLjIsIHJhbmRvbWl6ZSAoMTQgYml0KSBjbG9ja3NlcVxuICAgICAgY2xvY2tzZXEgPSBfY2xvY2tzZXEgPSAoc2VlZEJ5dGVzWzZdIDw8IDggfCBzZWVkQnl0ZXNbN10pICYgMHgzZmZmO1xuICAgIH1cbiAgfSAvLyBVVUlEIHRpbWVzdGFtcHMgYXJlIDEwMCBuYW5vLXNlY29uZCB1bml0cyBzaW5jZSB0aGUgR3JlZ29yaWFuIGVwb2NoLFxuICAvLyAoMTU4Mi0xMC0xNSAwMDowMCkuICBKU051bWJlcnMgYXJlbid0IHByZWNpc2UgZW5vdWdoIGZvciB0aGlzLCBzb1xuICAvLyB0aW1lIGlzIGhhbmRsZWQgaW50ZXJuYWxseSBhcyAnbXNlY3MnIChpbnRlZ2VyIG1pbGxpc2Vjb25kcykgYW5kICduc2VjcydcbiAgLy8gKDEwMC1uYW5vc2Vjb25kcyBvZmZzZXQgZnJvbSBtc2Vjcykgc2luY2UgdW5peCBlcG9jaCwgMTk3MC0wMS0wMSAwMDowMC5cblxuXG4gIGxldCBtc2VjcyA9IG9wdGlvbnMubXNlY3MgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubXNlY3MgOiBEYXRlLm5vdygpOyAvLyBQZXIgNC4yLjEuMiwgdXNlIGNvdW50IG9mIHV1aWQncyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBjdXJyZW50IGNsb2NrXG4gIC8vIGN5Y2xlIHRvIHNpbXVsYXRlIGhpZ2hlciByZXNvbHV0aW9uIGNsb2NrXG5cbiAgbGV0IG5zZWNzID0gb3B0aW9ucy5uc2VjcyAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uc2VjcyA6IF9sYXN0TlNlY3MgKyAxOyAvLyBUaW1lIHNpbmNlIGxhc3QgdXVpZCBjcmVhdGlvbiAoaW4gbXNlY3MpXG5cbiAgY29uc3QgZHQgPSBtc2VjcyAtIF9sYXN0TVNlY3MgKyAobnNlY3MgLSBfbGFzdE5TZWNzKSAvIDEwMDAwOyAvLyBQZXIgNC4yLjEuMiwgQnVtcCBjbG9ja3NlcSBvbiBjbG9jayByZWdyZXNzaW9uXG5cbiAgaWYgKGR0IDwgMCAmJiBvcHRpb25zLmNsb2Nrc2VxID09PSB1bmRlZmluZWQpIHtcbiAgICBjbG9ja3NlcSA9IGNsb2Nrc2VxICsgMSAmIDB4M2ZmZjtcbiAgfSAvLyBSZXNldCBuc2VjcyBpZiBjbG9jayByZWdyZXNzZXMgKG5ldyBjbG9ja3NlcSkgb3Igd2UndmUgbW92ZWQgb250byBhIG5ld1xuICAvLyB0aW1lIGludGVydmFsXG5cblxuICBpZiAoKGR0IDwgMCB8fCBtc2VjcyA+IF9sYXN0TVNlY3MpICYmIG9wdGlvbnMubnNlY3MgPT09IHVuZGVmaW5lZCkge1xuICAgIG5zZWNzID0gMDtcbiAgfSAvLyBQZXIgNC4yLjEuMiBUaHJvdyBlcnJvciBpZiB0b28gbWFueSB1dWlkcyBhcmUgcmVxdWVzdGVkXG5cblxuICBpZiAobnNlY3MgPj0gMTAwMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1dWlkLnYxKCk6IENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gMTBNIHV1aWRzL3NlY1wiKTtcbiAgfVxuXG4gIF9sYXN0TVNlY3MgPSBtc2VjcztcbiAgX2xhc3ROU2VjcyA9IG5zZWNzO1xuICBfY2xvY2tzZXEgPSBjbG9ja3NlcTsgLy8gUGVyIDQuMS40IC0gQ29udmVydCBmcm9tIHVuaXggZXBvY2ggdG8gR3JlZ29yaWFuIGVwb2NoXG5cbiAgbXNlY3MgKz0gMTIyMTkyOTI4MDAwMDA7IC8vIGB0aW1lX2xvd2BcblxuICBjb25zdCB0bCA9ICgobXNlY3MgJiAweGZmZmZmZmYpICogMTAwMDAgKyBuc2VjcykgJSAweDEwMDAwMDAwMDtcbiAgYltpKytdID0gdGwgPj4+IDI0ICYgMHhmZjtcbiAgYltpKytdID0gdGwgPj4+IDE2ICYgMHhmZjtcbiAgYltpKytdID0gdGwgPj4+IDggJiAweGZmO1xuICBiW2krK10gPSB0bCAmIDB4ZmY7IC8vIGB0aW1lX21pZGBcblxuICBjb25zdCB0bWggPSBtc2VjcyAvIDB4MTAwMDAwMDAwICogMTAwMDAgJiAweGZmZmZmZmY7XG4gIGJbaSsrXSA9IHRtaCA+Pj4gOCAmIDB4ZmY7XG4gIGJbaSsrXSA9IHRtaCAmIDB4ZmY7IC8vIGB0aW1lX2hpZ2hfYW5kX3ZlcnNpb25gXG5cbiAgYltpKytdID0gdG1oID4+PiAyNCAmIDB4ZiB8IDB4MTA7IC8vIGluY2x1ZGUgdmVyc2lvblxuXG4gIGJbaSsrXSA9IHRtaCA+Pj4gMTYgJiAweGZmOyAvLyBgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZGAgKFBlciA0LjIuMiAtIGluY2x1ZGUgdmFyaWFudClcblxuICBiW2krK10gPSBjbG9ja3NlcSA+Pj4gOCB8IDB4ODA7IC8vIGBjbG9ja19zZXFfbG93YFxuXG4gIGJbaSsrXSA9IGNsb2Nrc2VxICYgMHhmZjsgLy8gYG5vZGVgXG5cbiAgZm9yIChsZXQgbiA9IDA7IG4gPCA2OyArK24pIHtcbiAgICBiW2kgKyBuXSA9IG5vZGVbbl07XG4gIH1cblxuICByZXR1cm4gYnVmIHx8ICgwLCBfc3RyaW5naWZ5LmRlZmF1bHQpKGIpO1xufVxuXG52YXIgX2RlZmF1bHQgPSB2MTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsICJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF92YWxpZGF0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdmFsaWRhdGUuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBwYXJzZSh1dWlkKSB7XG4gIGlmICghKDAsIF92YWxpZGF0ZS5kZWZhdWx0KSh1dWlkKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignSW52YWxpZCBVVUlEJyk7XG4gIH1cblxuICBsZXQgdjtcbiAgY29uc3QgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOyAvLyBQYXJzZSAjIyMjIyMjIy0uLi4uLS4uLi4tLi4uLi0uLi4uLi4uLi4uLi5cblxuICBhcnJbMF0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMCwgOCksIDE2KSkgPj4+IDI0O1xuICBhcnJbMV0gPSB2ID4+PiAxNiAmIDB4ZmY7XG4gIGFyclsyXSA9IHYgPj4+IDggJiAweGZmO1xuICBhcnJbM10gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tIyMjIy0uLi4uLS4uLi4tLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzRdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDksIDEzKSwgMTYpKSA+Pj4gODtcbiAgYXJyWzVdID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLS4uLi4tIyMjIy0uLi4uLS4uLi4uLi4uLi4uLlxuXG4gIGFycls2XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSgxNCwgMTgpLCAxNikpID4+PiA4O1xuICBhcnJbN10gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tLi4uLi0uLi4uLSMjIyMtLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzhdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDE5LCAyMyksIDE2KSkgPj4+IDg7XG4gIGFycls5XSA9IHYgJiAweGZmOyAvLyBQYXJzZSAuLi4uLi4uLi0uLi4uLS4uLi4tLi4uLi0jIyMjIyMjIyMjIyNcbiAgLy8gKFVzZSBcIi9cIiB0byBhdm9pZCAzMi1iaXQgdHJ1bmNhdGlvbiB3aGVuIGJpdC1zaGlmdGluZyBoaWdoLW9yZGVyIGJ5dGVzKVxuXG4gIGFyclsxMF0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMjQsIDM2KSwgMTYpKSAvIDB4MTAwMDAwMDAwMDAgJiAweGZmO1xuICBhcnJbMTFdID0gdiAvIDB4MTAwMDAwMDAwICYgMHhmZjtcbiAgYXJyWzEyXSA9IHYgPj4+IDI0ICYgMHhmZjtcbiAgYXJyWzEzXSA9IHYgPj4+IDE2ICYgMHhmZjtcbiAgYXJyWzE0XSA9IHYgPj4+IDggJiAweGZmO1xuICBhcnJbMTVdID0gdiAmIDB4ZmY7XG4gIHJldHVybiBhcnI7XG59XG5cbnZhciBfZGVmYXVsdCA9IHBhcnNlO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwgIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG5leHBvcnRzLlVSTCA9IGV4cG9ydHMuRE5TID0gdm9pZCAwO1xuXG52YXIgX3N0cmluZ2lmeSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc3RyaW5naWZ5LmpzXCIpKTtcblxudmFyIF9wYXJzZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcGFyc2UuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHN0cikge1xuICBzdHIgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSk7IC8vIFVURjggZXNjYXBlXG5cbiAgY29uc3QgYnl0ZXMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGJ5dGVzLnB1c2goc3RyLmNoYXJDb2RlQXQoaSkpO1xuICB9XG5cbiAgcmV0dXJuIGJ5dGVzO1xufVxuXG5jb25zdCBETlMgPSAnNmJhN2I4MTAtOWRhZC0xMWQxLTgwYjQtMDBjMDRmZDQzMGM4JztcbmV4cG9ydHMuRE5TID0gRE5TO1xuY29uc3QgVVJMID0gJzZiYTdiODExLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCc7XG5leHBvcnRzLlVSTCA9IFVSTDtcblxuZnVuY3Rpb24gX2RlZmF1bHQobmFtZSwgdmVyc2lvbiwgaGFzaGZ1bmMpIHtcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKHZhbHVlLCBuYW1lc3BhY2UsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gc3RyaW5nVG9CeXRlcyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBuYW1lc3BhY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBuYW1lc3BhY2UgPSAoMCwgX3BhcnNlLmRlZmF1bHQpKG5hbWVzcGFjZSk7XG4gICAgfVxuXG4gICAgaWYgKG5hbWVzcGFjZS5sZW5ndGggIT09IDE2KSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ05hbWVzcGFjZSBtdXN0IGJlIGFycmF5LWxpa2UgKDE2IGl0ZXJhYmxlIGludGVnZXIgdmFsdWVzLCAwLTI1NSknKTtcbiAgICB9IC8vIENvbXB1dGUgaGFzaCBvZiBuYW1lc3BhY2UgYW5kIHZhbHVlLCBQZXIgNC4zXG4gICAgLy8gRnV0dXJlOiBVc2Ugc3ByZWFkIHN5bnRheCB3aGVuIHN1cHBvcnRlZCBvbiBhbGwgcGxhdGZvcm1zLCBlLmcuIGBieXRlcyA9XG4gICAgLy8gaGFzaGZ1bmMoWy4uLm5hbWVzcGFjZSwgLi4uIHZhbHVlXSlgXG5cblxuICAgIGxldCBieXRlcyA9IG5ldyBVaW50OEFycmF5KDE2ICsgdmFsdWUubGVuZ3RoKTtcbiAgICBieXRlcy5zZXQobmFtZXNwYWNlKTtcbiAgICBieXRlcy5zZXQodmFsdWUsIG5hbWVzcGFjZS5sZW5ndGgpO1xuICAgIGJ5dGVzID0gaGFzaGZ1bmMoYnl0ZXMpO1xuICAgIGJ5dGVzWzZdID0gYnl0ZXNbNl0gJiAweDBmIHwgdmVyc2lvbjtcbiAgICBieXRlc1s4XSA9IGJ5dGVzWzhdICYgMHgzZiB8IDB4ODA7XG5cbiAgICBpZiAoYnVmKSB7XG4gICAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgKytpKSB7XG4gICAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IGJ5dGVzW2ldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cblxuICAgIHJldHVybiAoMCwgX3N0cmluZ2lmeS5kZWZhdWx0KShieXRlcyk7XG4gIH0gLy8gRnVuY3Rpb24jbmFtZSBpcyBub3Qgc2V0dGFibGUgb24gc29tZSBwbGF0Zm9ybXMgKCMyNzApXG5cblxuICB0cnkge1xuICAgIGdlbmVyYXRlVVVJRC5uYW1lID0gbmFtZTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gIH0gY2F0Y2ggKGVycikge30gLy8gRm9yIENvbW1vbkpTIGRlZmF1bHQgZXhwb3J0IHN1cHBvcnRcblxuXG4gIGdlbmVyYXRlVVVJRC5ETlMgPSBETlM7XG4gIGdlbmVyYXRlVVVJRC5VUkwgPSBVUkw7XG4gIHJldHVybiBnZW5lcmF0ZVVVSUQ7XG59IiwgIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2NyeXB0byA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNyeXB0b1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIG1kNShieXRlcykge1xuICBpZiAoQXJyYXkuaXNBcnJheShieXRlcykpIHtcbiAgICBieXRlcyA9IEJ1ZmZlci5mcm9tKGJ5dGVzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgYnl0ZXMgPSBCdWZmZXIuZnJvbShieXRlcywgJ3V0ZjgnKTtcbiAgfVxuXG4gIHJldHVybiBfY3J5cHRvLmRlZmF1bHQuY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKGJ5dGVzKS5kaWdlc3QoKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gbWQ1O1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwgIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3YgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3YzNS5qc1wiKSk7XG5cbnZhciBfbWQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL21kNS5qc1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmNvbnN0IHYzID0gKDAsIF92LmRlZmF1bHQpKCd2MycsIDB4MzAsIF9tZC5kZWZhdWx0KTtcbnZhciBfZGVmYXVsdCA9IHYzO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwgIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3JuZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcm5nLmpzXCIpKTtcblxudmFyIF9zdHJpbmdpZnkgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3N0cmluZ2lmeS5qc1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGNvbnN0IHJuZHMgPSBvcHRpb25zLnJhbmRvbSB8fCAob3B0aW9ucy5ybmcgfHwgX3JuZy5kZWZhdWx0KSgpOyAvLyBQZXIgNC40LCBzZXQgYml0cyBmb3IgdmVyc2lvbiBhbmQgYGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWRgXG5cblxuICBybmRzWzZdID0gcm5kc1s2XSAmIDB4MGYgfCAweDQwO1xuICBybmRzWzhdID0gcm5kc1s4XSAmIDB4M2YgfCAweDgwOyAvLyBDb3B5IGJ5dGVzIHRvIGJ1ZmZlciwgaWYgcHJvdmlkZWRcblxuICBpZiAoYnVmKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIHJldHVybiAoMCwgX3N0cmluZ2lmeS5kZWZhdWx0KShybmRzKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gdjQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfY3J5cHRvID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY3J5cHRvXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gc2hhMShieXRlcykge1xuICBpZiAoQXJyYXkuaXNBcnJheShieXRlcykpIHtcbiAgICBieXRlcyA9IEJ1ZmZlci5mcm9tKGJ5dGVzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgYnl0ZXMgPSBCdWZmZXIuZnJvbShieXRlcywgJ3V0ZjgnKTtcbiAgfVxuXG4gIHJldHVybiBfY3J5cHRvLmRlZmF1bHQuY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShieXRlcykuZGlnZXN0KCk7XG59XG5cbnZhciBfZGVmYXVsdCA9IHNoYTE7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdjM1LmpzXCIpKTtcblxudmFyIF9zaGEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3NoYTEuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5jb25zdCB2NSA9ICgwLCBfdi5kZWZhdWx0KSgndjUnLCAweDUwLCBfc2hhLmRlZmF1bHQpO1xudmFyIF9kZWZhdWx0ID0gdjU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2RlZmF1bHQgPSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJztcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsICJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF92YWxpZGF0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdmFsaWRhdGUuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB2ZXJzaW9uKHV1aWQpIHtcbiAgaWYgKCEoMCwgX3ZhbGlkYXRlLmRlZmF1bHQpKHV1aWQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdJbnZhbGlkIFVVSUQnKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZUludCh1dWlkLnN1YnN0cigxNCwgMSksIDE2KTtcbn1cblxudmFyIF9kZWZhdWx0ID0gdmVyc2lvbjtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsICJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInYxXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF92LmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidjNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3YyLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidjRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3YzLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidjVcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3Y0LmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTklMXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9uaWwuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ2ZXJzaW9uXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF92ZXJzaW9uLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidmFsaWRhdGVcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3ZhbGlkYXRlLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5XCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJwYXJzZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfcGFyc2UuZGVmYXVsdDtcbiAgfVxufSk7XG5cbnZhciBfdiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdjEuanNcIikpO1xuXG52YXIgX3YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi92My5qc1wiKSk7XG5cbnZhciBfdjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3Y0LmpzXCIpKTtcblxudmFyIF92NCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdjUuanNcIikpO1xuXG52YXIgX25pbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbmlsLmpzXCIpKTtcblxudmFyIF92ZXJzaW9uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi92ZXJzaW9uLmpzXCIpKTtcblxudmFyIF92YWxpZGF0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdmFsaWRhdGUuanNcIikpO1xuXG52YXIgX3N0cmluZ2lmeSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc3RyaW5naWZ5LmpzXCIpKTtcblxudmFyIF9wYXJzZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcGFyc2UuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfSIsIG51bGwsICIndXNlIHN0cmljdCc7XG5cbnZhciBuZXQgPSByZXF1aXJlKCduZXQnKTtcbnZhciB0bHMgPSByZXF1aXJlKCd0bHMnKTtcbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xudmFyIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKTtcbnZhciBldmVudHMgPSByZXF1aXJlKCdldmVudHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5cbmV4cG9ydHMuaHR0cE92ZXJIdHRwID0gaHR0cE92ZXJIdHRwO1xuZXhwb3J0cy5odHRwc092ZXJIdHRwID0gaHR0cHNPdmVySHR0cDtcbmV4cG9ydHMuaHR0cE92ZXJIdHRwcyA9IGh0dHBPdmVySHR0cHM7XG5leHBvcnRzLmh0dHBzT3Zlckh0dHBzID0gaHR0cHNPdmVySHR0cHM7XG5cblxuZnVuY3Rpb24gaHR0cE92ZXJIdHRwKG9wdGlvbnMpIHtcbiAgdmFyIGFnZW50ID0gbmV3IFR1bm5lbGluZ0FnZW50KG9wdGlvbnMpO1xuICBhZ2VudC5yZXF1ZXN0ID0gaHR0cC5yZXF1ZXN0O1xuICByZXR1cm4gYWdlbnQ7XG59XG5cbmZ1bmN0aW9uIGh0dHBzT3Zlckh0dHAob3B0aW9ucykge1xuICB2YXIgYWdlbnQgPSBuZXcgVHVubmVsaW5nQWdlbnQob3B0aW9ucyk7XG4gIGFnZW50LnJlcXVlc3QgPSBodHRwLnJlcXVlc3Q7XG4gIGFnZW50LmNyZWF0ZVNvY2tldCA9IGNyZWF0ZVNlY3VyZVNvY2tldDtcbiAgYWdlbnQuZGVmYXVsdFBvcnQgPSA0NDM7XG4gIHJldHVybiBhZ2VudDtcbn1cblxuZnVuY3Rpb24gaHR0cE92ZXJIdHRwcyhvcHRpb25zKSB7XG4gIHZhciBhZ2VudCA9IG5ldyBUdW5uZWxpbmdBZ2VudChvcHRpb25zKTtcbiAgYWdlbnQucmVxdWVzdCA9IGh0dHBzLnJlcXVlc3Q7XG4gIHJldHVybiBhZ2VudDtcbn1cblxuZnVuY3Rpb24gaHR0cHNPdmVySHR0cHMob3B0aW9ucykge1xuICB2YXIgYWdlbnQgPSBuZXcgVHVubmVsaW5nQWdlbnQob3B0aW9ucyk7XG4gIGFnZW50LnJlcXVlc3QgPSBodHRwcy5yZXF1ZXN0O1xuICBhZ2VudC5jcmVhdGVTb2NrZXQgPSBjcmVhdGVTZWN1cmVTb2NrZXQ7XG4gIGFnZW50LmRlZmF1bHRQb3J0ID0gNDQzO1xuICByZXR1cm4gYWdlbnQ7XG59XG5cblxuZnVuY3Rpb24gVHVubmVsaW5nQWdlbnQob3B0aW9ucykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHNlbGYucHJveHlPcHRpb25zID0gc2VsZi5vcHRpb25zLnByb3h5IHx8IHt9O1xuICBzZWxmLm1heFNvY2tldHMgPSBzZWxmLm9wdGlvbnMubWF4U29ja2V0cyB8fCBodHRwLkFnZW50LmRlZmF1bHRNYXhTb2NrZXRzO1xuICBzZWxmLnJlcXVlc3RzID0gW107XG4gIHNlbGYuc29ja2V0cyA9IFtdO1xuXG4gIHNlbGYub24oJ2ZyZWUnLCBmdW5jdGlvbiBvbkZyZWUoc29ja2V0LCBob3N0LCBwb3J0LCBsb2NhbEFkZHJlc3MpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRvT3B0aW9ucyhob3N0LCBwb3J0LCBsb2NhbEFkZHJlc3MpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzZWxmLnJlcXVlc3RzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYucmVxdWVzdHNbaV07XG4gICAgICBpZiAocGVuZGluZy5ob3N0ID09PSBvcHRpb25zLmhvc3QgJiYgcGVuZGluZy5wb3J0ID09PSBvcHRpb25zLnBvcnQpIHtcbiAgICAgICAgLy8gRGV0ZWN0IHRoZSByZXF1ZXN0IHRvIGNvbm5lY3Qgc2FtZSBvcmlnaW4gc2VydmVyLFxuICAgICAgICAvLyByZXVzZSB0aGUgY29ubmVjdGlvbi5cbiAgICAgICAgc2VsZi5yZXF1ZXN0cy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIHBlbmRpbmcucmVxdWVzdC5vblNvY2tldChzb2NrZXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgc2VsZi5yZW1vdmVTb2NrZXQoc29ja2V0KTtcbiAgfSk7XG59XG51dGlsLmluaGVyaXRzKFR1bm5lbGluZ0FnZW50LCBldmVudHMuRXZlbnRFbWl0dGVyKTtcblxuVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLmFkZFJlcXVlc3QgPSBmdW5jdGlvbiBhZGRSZXF1ZXN0KHJlcSwgaG9zdCwgcG9ydCwgbG9jYWxBZGRyZXNzKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoe3JlcXVlc3Q6IHJlcX0sIHNlbGYub3B0aW9ucywgdG9PcHRpb25zKGhvc3QsIHBvcnQsIGxvY2FsQWRkcmVzcykpO1xuXG4gIGlmIChzZWxmLnNvY2tldHMubGVuZ3RoID49IHRoaXMubWF4U29ja2V0cykge1xuICAgIC8vIFdlIGFyZSBvdmVyIGxpbWl0IHNvIHdlJ2xsIGFkZCBpdCB0byB0aGUgcXVldWUuXG4gICAgc2VsZi5yZXF1ZXN0cy5wdXNoKG9wdGlvbnMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIHdlIGFyZSB1bmRlciBtYXhTb2NrZXRzIGNyZWF0ZSBhIG5ldyBvbmUuXG4gIHNlbGYuY3JlYXRlU29ja2V0KG9wdGlvbnMsIGZ1bmN0aW9uKHNvY2tldCkge1xuICAgIHNvY2tldC5vbignZnJlZScsIG9uRnJlZSk7XG4gICAgc29ja2V0Lm9uKCdjbG9zZScsIG9uQ2xvc2VPclJlbW92ZSk7XG4gICAgc29ja2V0Lm9uKCdhZ2VudFJlbW92ZScsIG9uQ2xvc2VPclJlbW92ZSk7XG4gICAgcmVxLm9uU29ja2V0KHNvY2tldCk7XG5cbiAgICBmdW5jdGlvbiBvbkZyZWUoKSB7XG4gICAgICBzZWxmLmVtaXQoJ2ZyZWUnLCBzb2NrZXQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uQ2xvc2VPclJlbW92ZShlcnIpIHtcbiAgICAgIHNlbGYucmVtb3ZlU29ja2V0KHNvY2tldCk7XG4gICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2ZyZWUnLCBvbkZyZWUpO1xuICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uQ2xvc2VPclJlbW92ZSk7XG4gICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2FnZW50UmVtb3ZlJywgb25DbG9zZU9yUmVtb3ZlKTtcbiAgICB9XG4gIH0pO1xufTtcblxuVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLmNyZWF0ZVNvY2tldCA9IGZ1bmN0aW9uIGNyZWF0ZVNvY2tldChvcHRpb25zLCBjYikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBwbGFjZWhvbGRlciA9IHt9O1xuICBzZWxmLnNvY2tldHMucHVzaChwbGFjZWhvbGRlcik7XG5cbiAgdmFyIGNvbm5lY3RPcHRpb25zID0gbWVyZ2VPcHRpb25zKHt9LCBzZWxmLnByb3h5T3B0aW9ucywge1xuICAgIG1ldGhvZDogJ0NPTk5FQ1QnLFxuICAgIHBhdGg6IG9wdGlvbnMuaG9zdCArICc6JyArIG9wdGlvbnMucG9ydCxcbiAgICBhZ2VudDogZmFsc2UsXG4gICAgaGVhZGVyczoge1xuICAgICAgaG9zdDogb3B0aW9ucy5ob3N0ICsgJzonICsgb3B0aW9ucy5wb3J0XG4gICAgfVxuICB9KTtcbiAgaWYgKG9wdGlvbnMubG9jYWxBZGRyZXNzKSB7XG4gICAgY29ubmVjdE9wdGlvbnMubG9jYWxBZGRyZXNzID0gb3B0aW9ucy5sb2NhbEFkZHJlc3M7XG4gIH1cbiAgaWYgKGNvbm5lY3RPcHRpb25zLnByb3h5QXV0aCkge1xuICAgIGNvbm5lY3RPcHRpb25zLmhlYWRlcnMgPSBjb25uZWN0T3B0aW9ucy5oZWFkZXJzIHx8IHt9O1xuICAgIGNvbm5lY3RPcHRpb25zLmhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnICtcbiAgICAgICAgbmV3IEJ1ZmZlcihjb25uZWN0T3B0aW9ucy5wcm94eUF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIGRlYnVnKCdtYWtpbmcgQ09OTkVDVCByZXF1ZXN0Jyk7XG4gIHZhciBjb25uZWN0UmVxID0gc2VsZi5yZXF1ZXN0KGNvbm5lY3RPcHRpb25zKTtcbiAgY29ubmVjdFJlcS51c2VDaHVua2VkRW5jb2RpbmdCeURlZmF1bHQgPSBmYWxzZTsgLy8gZm9yIHYwLjZcbiAgY29ubmVjdFJlcS5vbmNlKCdyZXNwb25zZScsIG9uUmVzcG9uc2UpOyAvLyBmb3IgdjAuNlxuICBjb25uZWN0UmVxLm9uY2UoJ3VwZ3JhZGUnLCBvblVwZ3JhZGUpOyAgIC8vIGZvciB2MC42XG4gIGNvbm5lY3RSZXEub25jZSgnY29ubmVjdCcsIG9uQ29ubmVjdCk7ICAgLy8gZm9yIHYwLjcgb3IgbGF0ZXJcbiAgY29ubmVjdFJlcS5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuICBjb25uZWN0UmVxLmVuZCgpO1xuXG4gIGZ1bmN0aW9uIG9uUmVzcG9uc2UocmVzKSB7XG4gICAgLy8gVmVyeSBoYWNreS4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgaHR0cC1wYXJzZXIgbGVha3MuXG4gICAgcmVzLnVwZ3JhZGUgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gb25VcGdyYWRlKHJlcywgc29ja2V0LCBoZWFkKSB7XG4gICAgLy8gSGFja3kuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpIHtcbiAgICAgIG9uQ29ubmVjdChyZXMsIHNvY2tldCwgaGVhZCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkNvbm5lY3QocmVzLCBzb2NrZXQsIGhlYWQpIHtcbiAgICBjb25uZWN0UmVxLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIHNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcblxuICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICBkZWJ1ZygndHVubmVsaW5nIHNvY2tldCBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsIHN0YXR1c0NvZGU9JWQnLFxuICAgICAgICByZXMuc3RhdHVzQ29kZSk7XG4gICAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCd0dW5uZWxpbmcgc29ja2V0IGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCwgJyArXG4gICAgICAgICdzdGF0dXNDb2RlPScgKyByZXMuc3RhdHVzQ29kZSk7XG4gICAgICBlcnJvci5jb2RlID0gJ0VDT05OUkVTRVQnO1xuICAgICAgb3B0aW9ucy5yZXF1ZXN0LmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgc2VsZi5yZW1vdmVTb2NrZXQocGxhY2Vob2xkZXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaGVhZC5sZW5ndGggPiAwKSB7XG4gICAgICBkZWJ1ZygnZ290IGlsbGVnYWwgcmVzcG9uc2UgYm9keSBmcm9tIHByb3h5Jyk7XG4gICAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdnb3QgaWxsZWdhbCByZXNwb25zZSBib2R5IGZyb20gcHJveHknKTtcbiAgICAgIGVycm9yLmNvZGUgPSAnRUNPTk5SRVNFVCc7XG4gICAgICBvcHRpb25zLnJlcXVlc3QuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gICAgICBzZWxmLnJlbW92ZVNvY2tldChwbGFjZWhvbGRlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRlYnVnKCd0dW5uZWxpbmcgY29ubmVjdGlvbiBoYXMgZXN0YWJsaXNoZWQnKTtcbiAgICBzZWxmLnNvY2tldHNbc2VsZi5zb2NrZXRzLmluZGV4T2YocGxhY2Vob2xkZXIpXSA9IHNvY2tldDtcbiAgICByZXR1cm4gY2Ioc29ja2V0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRXJyb3IoY2F1c2UpIHtcbiAgICBjb25uZWN0UmVxLnJlbW92ZUFsbExpc3RlbmVycygpO1xuXG4gICAgZGVidWcoJ3R1bm5lbGluZyBzb2NrZXQgY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCBjYXVzZT0lc1xcbicsXG4gICAgICAgICAgY2F1c2UubWVzc2FnZSwgY2F1c2Uuc3RhY2spO1xuICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigndHVubmVsaW5nIHNvY2tldCBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnY2F1c2U9JyArIGNhdXNlLm1lc3NhZ2UpO1xuICAgIGVycm9yLmNvZGUgPSAnRUNPTk5SRVNFVCc7XG4gICAgb3B0aW9ucy5yZXF1ZXN0LmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICAgIHNlbGYucmVtb3ZlU29ja2V0KHBsYWNlaG9sZGVyKTtcbiAgfVxufTtcblxuVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLnJlbW92ZVNvY2tldCA9IGZ1bmN0aW9uIHJlbW92ZVNvY2tldChzb2NrZXQpIHtcbiAgdmFyIHBvcyA9IHRoaXMuc29ja2V0cy5pbmRleE9mKHNvY2tldClcbiAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5zb2NrZXRzLnNwbGljZShwb3MsIDEpO1xuXG4gIHZhciBwZW5kaW5nID0gdGhpcy5yZXF1ZXN0cy5zaGlmdCgpO1xuICBpZiAocGVuZGluZykge1xuICAgIC8vIElmIHdlIGhhdmUgcGVuZGluZyByZXF1ZXN0cyBhbmQgYSBzb2NrZXQgZ2V0cyBjbG9zZWQgYSBuZXcgb25lXG4gICAgLy8gbmVlZHMgdG8gYmUgY3JlYXRlZCB0byB0YWtlIG92ZXIgaW4gdGhlIHBvb2wgZm9yIHRoZSBvbmUgdGhhdCBjbG9zZWQuXG4gICAgdGhpcy5jcmVhdGVTb2NrZXQocGVuZGluZywgZnVuY3Rpb24oc29ja2V0KSB7XG4gICAgICBwZW5kaW5nLnJlcXVlc3Qub25Tb2NrZXQoc29ja2V0KTtcbiAgICB9KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gY3JlYXRlU2VjdXJlU29ja2V0KG9wdGlvbnMsIGNiKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgVHVubmVsaW5nQWdlbnQucHJvdG90eXBlLmNyZWF0ZVNvY2tldC5jYWxsKHNlbGYsIG9wdGlvbnMsIGZ1bmN0aW9uKHNvY2tldCkge1xuICAgIHZhciBob3N0SGVhZGVyID0gb3B0aW9ucy5yZXF1ZXN0LmdldEhlYWRlcignaG9zdCcpO1xuICAgIHZhciB0bHNPcHRpb25zID0gbWVyZ2VPcHRpb25zKHt9LCBzZWxmLm9wdGlvbnMsIHtcbiAgICAgIHNvY2tldDogc29ja2V0LFxuICAgICAgc2VydmVybmFtZTogaG9zdEhlYWRlciA/IGhvc3RIZWFkZXIucmVwbGFjZSgvOi4qJC8sICcnKSA6IG9wdGlvbnMuaG9zdFxuICAgIH0pO1xuXG4gICAgLy8gMCBpcyBkdW1teSBwb3J0IGZvciB2MC42XG4gICAgdmFyIHNlY3VyZVNvY2tldCA9IHRscy5jb25uZWN0KDAsIHRsc09wdGlvbnMpO1xuICAgIHNlbGYuc29ja2V0c1tzZWxmLnNvY2tldHMuaW5kZXhPZihzb2NrZXQpXSA9IHNlY3VyZVNvY2tldDtcbiAgICBjYihzZWN1cmVTb2NrZXQpO1xuICB9KTtcbn1cblxuXG5mdW5jdGlvbiB0b09wdGlvbnMoaG9zdCwgcG9ydCwgbG9jYWxBZGRyZXNzKSB7XG4gIGlmICh0eXBlb2YgaG9zdCA9PT0gJ3N0cmluZycpIHsgLy8gc2luY2UgdjAuMTBcbiAgICByZXR1cm4ge1xuICAgICAgaG9zdDogaG9zdCxcbiAgICAgIHBvcnQ6IHBvcnQsXG4gICAgICBsb2NhbEFkZHJlc3M6IGxvY2FsQWRkcmVzc1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGhvc3Q7IC8vIGZvciB2MC4xMSBvciBsYXRlclxufVxuXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnModGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICB2YXIgb3ZlcnJpZGVzID0gYXJndW1lbnRzW2ldO1xuICAgIGlmICh0eXBlb2Ygb3ZlcnJpZGVzID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZXMpO1xuICAgICAgZm9yICh2YXIgaiA9IDAsIGtleUxlbiA9IGtleXMubGVuZ3RoOyBqIDwga2V5TGVuOyArK2opIHtcbiAgICAgICAgdmFyIGsgPSBrZXlzW2pdO1xuICAgICAgICBpZiAob3ZlcnJpZGVzW2tdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0YXJnZXRba10gPSBvdmVycmlkZXNba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuXG52YXIgZGVidWc7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyAmJiAvXFxidHVubmVsXFxiLy50ZXN0KHByb2Nlc3MuZW52Lk5PREVfREVCVUcpKSB7XG4gIGRlYnVnID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGFyZ3NbMF0gPSAnVFVOTkVMOiAnICsgYXJnc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncy51bnNoaWZ0KCdUVU5ORUw6Jyk7XG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSwgYXJncyk7XG4gIH1cbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24oKSB7fTtcbn1cbmV4cG9ydHMuZGVidWcgPSBkZWJ1ZzsgLy8gZm9yIHRlc3RcbiIsICJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL3R1bm5lbCcpO1xuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSAoZmxhZywgYXJndiA9IHByb2Nlc3MuYXJndikgPT4ge1xuXHRjb25zdCBwcmVmaXggPSBmbGFnLnN0YXJ0c1dpdGgoJy0nKSA/ICcnIDogKGZsYWcubGVuZ3RoID09PSAxID8gJy0nIDogJy0tJyk7XG5cdGNvbnN0IHBvc2l0aW9uID0gYXJndi5pbmRleE9mKHByZWZpeCArIGZsYWcpO1xuXHRjb25zdCB0ZXJtaW5hdG9yUG9zaXRpb24gPSBhcmd2LmluZGV4T2YoJy0tJyk7XG5cdHJldHVybiBwb3NpdGlvbiAhPT0gLTEgJiYgKHRlcm1pbmF0b3JQb3NpdGlvbiA9PT0gLTEgfHwgcG9zaXRpb24gPCB0ZXJtaW5hdG9yUG9zaXRpb24pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCBvcyA9IHJlcXVpcmUoJ29zJyk7XG5jb25zdCB0dHkgPSByZXF1aXJlKCd0dHknKTtcbmNvbnN0IGhhc0ZsYWcgPSByZXF1aXJlKCdoYXMtZmxhZycpO1xuXG5jb25zdCB7ZW52fSA9IHByb2Nlc3M7XG5cbmxldCBmb3JjZUNvbG9yO1xuaWYgKGhhc0ZsYWcoJ25vLWNvbG9yJykgfHxcblx0aGFzRmxhZygnbm8tY29sb3JzJykgfHxcblx0aGFzRmxhZygnY29sb3I9ZmFsc2UnKSB8fFxuXHRoYXNGbGFnKCdjb2xvcj1uZXZlcicpKSB7XG5cdGZvcmNlQ29sb3IgPSAwO1xufSBlbHNlIGlmIChoYXNGbGFnKCdjb2xvcicpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9ycycpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9yPXRydWUnKSB8fFxuXHRoYXNGbGFnKCdjb2xvcj1hbHdheXMnKSkge1xuXHRmb3JjZUNvbG9yID0gMTtcbn1cblxuaWYgKCdGT1JDRV9DT0xPUicgaW4gZW52KSB7XG5cdGlmIChlbnYuRk9SQ0VfQ09MT1IgPT09ICd0cnVlJykge1xuXHRcdGZvcmNlQ29sb3IgPSAxO1xuXHR9IGVsc2UgaWYgKGVudi5GT1JDRV9DT0xPUiA9PT0gJ2ZhbHNlJykge1xuXHRcdGZvcmNlQ29sb3IgPSAwO1xuXHR9IGVsc2Uge1xuXHRcdGZvcmNlQ29sb3IgPSBlbnYuRk9SQ0VfQ09MT1IubGVuZ3RoID09PSAwID8gMSA6IE1hdGgubWluKHBhcnNlSW50KGVudi5GT1JDRV9DT0xPUiwgMTApLCAzKTtcblx0fVxufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVMZXZlbChsZXZlbCkge1xuXHRpZiAobGV2ZWwgPT09IDApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdGxldmVsLFxuXHRcdGhhc0Jhc2ljOiB0cnVlLFxuXHRcdGhhczI1NjogbGV2ZWwgPj0gMixcblx0XHRoYXMxNm06IGxldmVsID49IDNcblx0fTtcbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNDb2xvcihoYXZlU3RyZWFtLCBzdHJlYW1Jc1RUWSkge1xuXHRpZiAoZm9yY2VDb2xvciA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0aWYgKGhhc0ZsYWcoJ2NvbG9yPTE2bScpIHx8XG5cdFx0aGFzRmxhZygnY29sb3I9ZnVsbCcpIHx8XG5cdFx0aGFzRmxhZygnY29sb3I9dHJ1ZWNvbG9yJykpIHtcblx0XHRyZXR1cm4gMztcblx0fVxuXG5cdGlmIChoYXNGbGFnKCdjb2xvcj0yNTYnKSkge1xuXHRcdHJldHVybiAyO1xuXHR9XG5cblx0aWYgKGhhdmVTdHJlYW0gJiYgIXN0cmVhbUlzVFRZICYmIGZvcmNlQ29sb3IgPT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Y29uc3QgbWluID0gZm9yY2VDb2xvciB8fCAwO1xuXG5cdGlmIChlbnYuVEVSTSA9PT0gJ2R1bWInKSB7XG5cdFx0cmV0dXJuIG1pbjtcblx0fVxuXG5cdGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG5cdFx0Ly8gV2luZG93cyAxMCBidWlsZCAxMDU4NiBpcyB0aGUgZmlyc3QgV2luZG93cyByZWxlYXNlIHRoYXQgc3VwcG9ydHMgMjU2IGNvbG9ycy5cblx0XHQvLyBXaW5kb3dzIDEwIGJ1aWxkIDE0OTMxIGlzIHRoZSBmaXJzdCByZWxlYXNlIHRoYXQgc3VwcG9ydHMgMTZtL1RydWVDb2xvci5cblx0XHRjb25zdCBvc1JlbGVhc2UgPSBvcy5yZWxlYXNlKCkuc3BsaXQoJy4nKTtcblx0XHRpZiAoXG5cdFx0XHROdW1iZXIob3NSZWxlYXNlWzBdKSA+PSAxMCAmJlxuXHRcdFx0TnVtYmVyKG9zUmVsZWFzZVsyXSkgPj0gMTA1ODZcblx0XHQpIHtcblx0XHRcdHJldHVybiBOdW1iZXIob3NSZWxlYXNlWzJdKSA+PSAxNDkzMSA/IDMgOiAyO1xuXHRcdH1cblxuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0aWYgKCdDSScgaW4gZW52KSB7XG5cdFx0aWYgKFsnVFJBVklTJywgJ0NJUkNMRUNJJywgJ0FQUFZFWU9SJywgJ0dJVExBQl9DSScsICdHSVRIVUJfQUNUSU9OUycsICdCVUlMREtJVEUnXS5zb21lKHNpZ24gPT4gc2lnbiBpbiBlbnYpIHx8IGVudi5DSV9OQU1FID09PSAnY29kZXNoaXAnKSB7XG5cdFx0XHRyZXR1cm4gMTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbWluO1xuXHR9XG5cblx0aWYgKCdURUFNQ0lUWV9WRVJTSU9OJyBpbiBlbnYpIHtcblx0XHRyZXR1cm4gL14oOVxcLigwKlsxLTldXFxkKilcXC58XFxkezIsfVxcLikvLnRlc3QoZW52LlRFQU1DSVRZX1ZFUlNJT04pID8gMSA6IDA7XG5cdH1cblxuXHRpZiAoZW52LkNPTE9SVEVSTSA9PT0gJ3RydWVjb2xvcicpIHtcblx0XHRyZXR1cm4gMztcblx0fVxuXG5cdGlmICgnVEVSTV9QUk9HUkFNJyBpbiBlbnYpIHtcblx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQoKGVudi5URVJNX1BST0dSQU1fVkVSU0lPTiB8fCAnJykuc3BsaXQoJy4nKVswXSwgMTApO1xuXG5cdFx0c3dpdGNoIChlbnYuVEVSTV9QUk9HUkFNKSB7XG5cdFx0XHRjYXNlICdpVGVybS5hcHAnOlxuXHRcdFx0XHRyZXR1cm4gdmVyc2lvbiA+PSAzID8gMyA6IDI7XG5cdFx0XHRjYXNlICdBcHBsZV9UZXJtaW5hbCc6XG5cdFx0XHRcdHJldHVybiAyO1xuXHRcdFx0Ly8gTm8gZGVmYXVsdFxuXHRcdH1cblx0fVxuXG5cdGlmICgvLTI1Nihjb2xvcik/JC9pLnRlc3QoZW52LlRFUk0pKSB7XG5cdFx0cmV0dXJuIDI7XG5cdH1cblxuXHRpZiAoL15zY3JlZW58Xnh0ZXJtfF52dDEwMHxednQyMjB8XnJ4dnR8Y29sb3J8YW5zaXxjeWd3aW58bGludXgvaS50ZXN0KGVudi5URVJNKSkge1xuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0aWYgKCdDT0xPUlRFUk0nIGluIGVudikge1xuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0cmV0dXJuIG1pbjtcbn1cblxuZnVuY3Rpb24gZ2V0U3VwcG9ydExldmVsKHN0cmVhbSkge1xuXHRjb25zdCBsZXZlbCA9IHN1cHBvcnRzQ29sb3Ioc3RyZWFtLCBzdHJlYW0gJiYgc3RyZWFtLmlzVFRZKTtcblx0cmV0dXJuIHRyYW5zbGF0ZUxldmVsKGxldmVsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cdHN1cHBvcnRzQ29sb3I6IGdldFN1cHBvcnRMZXZlbCxcblx0c3Rkb3V0OiB0cmFuc2xhdGVMZXZlbChzdXBwb3J0c0NvbG9yKHRydWUsIHR0eS5pc2F0dHkoMSkpKSxcblx0c3RkZXJyOiB0cmFuc2xhdGVMZXZlbChzdXBwb3J0c0NvbG9yKHRydWUsIHR0eS5pc2F0dHkoMikpKVxufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHN0cmluZ1JlcGxhY2VBbGwgPSAoc3RyaW5nLCBzdWJzdHJpbmcsIHJlcGxhY2VyKSA9PiB7XG5cdGxldCBpbmRleCA9IHN0cmluZy5pbmRleE9mKHN1YnN0cmluZyk7XG5cdGlmIChpbmRleCA9PT0gLTEpIHtcblx0XHRyZXR1cm4gc3RyaW5nO1xuXHR9XG5cblx0Y29uc3Qgc3Vic3RyaW5nTGVuZ3RoID0gc3Vic3RyaW5nLmxlbmd0aDtcblx0bGV0IGVuZEluZGV4ID0gMDtcblx0bGV0IHJldHVyblZhbHVlID0gJyc7XG5cdGRvIHtcblx0XHRyZXR1cm5WYWx1ZSArPSBzdHJpbmcuc3Vic3RyKGVuZEluZGV4LCBpbmRleCAtIGVuZEluZGV4KSArIHN1YnN0cmluZyArIHJlcGxhY2VyO1xuXHRcdGVuZEluZGV4ID0gaW5kZXggKyBzdWJzdHJpbmdMZW5ndGg7XG5cdFx0aW5kZXggPSBzdHJpbmcuaW5kZXhPZihzdWJzdHJpbmcsIGVuZEluZGV4KTtcblx0fSB3aGlsZSAoaW5kZXggIT09IC0xKTtcblxuXHRyZXR1cm5WYWx1ZSArPSBzdHJpbmcuc3Vic3RyKGVuZEluZGV4KTtcblx0cmV0dXJuIHJldHVyblZhbHVlO1xufTtcblxuY29uc3Qgc3RyaW5nRW5jYXNlQ1JMRldpdGhGaXJzdEluZGV4ID0gKHN0cmluZywgcHJlZml4LCBwb3N0Zml4LCBpbmRleCkgPT4ge1xuXHRsZXQgZW5kSW5kZXggPSAwO1xuXHRsZXQgcmV0dXJuVmFsdWUgPSAnJztcblx0ZG8ge1xuXHRcdGNvbnN0IGdvdENSID0gc3RyaW5nW2luZGV4IC0gMV0gPT09ICdcXHInO1xuXHRcdHJldHVyblZhbHVlICs9IHN0cmluZy5zdWJzdHIoZW5kSW5kZXgsIChnb3RDUiA/IGluZGV4IC0gMSA6IGluZGV4KSAtIGVuZEluZGV4KSArIHByZWZpeCArIChnb3RDUiA/ICdcXHJcXG4nIDogJ1xcbicpICsgcG9zdGZpeDtcblx0XHRlbmRJbmRleCA9IGluZGV4ICsgMTtcblx0XHRpbmRleCA9IHN0cmluZy5pbmRleE9mKCdcXG4nLCBlbmRJbmRleCk7XG5cdH0gd2hpbGUgKGluZGV4ICE9PSAtMSk7XG5cblx0cmV0dXJuVmFsdWUgKz0gc3RyaW5nLnN1YnN0cihlbmRJbmRleCk7XG5cdHJldHVybiByZXR1cm5WYWx1ZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuXHRzdHJpbmdSZXBsYWNlQWxsLFxuXHRzdHJpbmdFbmNhc2VDUkxGV2l0aEZpcnN0SW5kZXhcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3QgVEVNUExBVEVfUkVHRVggPSAvKD86XFxcXCh1KD86W2EtZlxcZF17NH18XFx7W2EtZlxcZF17MSw2fVxcfSl8eFthLWZcXGRdezJ9fC4pKXwoPzpcXHsofik/KFxcdysoPzpcXChbXildKlxcKSk/KD86XFwuXFx3Kyg/OlxcKFteKV0qXFwpKT8pKikoPzpbIFxcdF18KD89XFxyP1xcbikpKXwoXFx9KXwoKD86LnxbXFxyXFxuXFxmXSkrPykvZ2k7XG5jb25zdCBTVFlMRV9SRUdFWCA9IC8oPzpefFxcLikoXFx3KykoPzpcXCgoW14pXSopXFwpKT8vZztcbmNvbnN0IFNUUklOR19SRUdFWCA9IC9eKFsnXCJdKSgoPzpcXFxcLnwoPyFcXDEpW15cXFxcXSkqKVxcMSQvO1xuY29uc3QgRVNDQVBFX1JFR0VYID0gL1xcXFwodSg/OlthLWZcXGRdezR9fHtbYS1mXFxkXXsxLDZ9fSl8eFthLWZcXGRdezJ9fC4pfChbXlxcXFxdKS9naTtcblxuY29uc3QgRVNDQVBFUyA9IG5ldyBNYXAoW1xuXHRbJ24nLCAnXFxuJ10sXG5cdFsncicsICdcXHInXSxcblx0Wyd0JywgJ1xcdCddLFxuXHRbJ2InLCAnXFxiJ10sXG5cdFsnZicsICdcXGYnXSxcblx0Wyd2JywgJ1xcdiddLFxuXHRbJzAnLCAnXFwwJ10sXG5cdFsnXFxcXCcsICdcXFxcJ10sXG5cdFsnZScsICdcXHUwMDFCJ10sXG5cdFsnYScsICdcXHUwMDA3J11cbl0pO1xuXG5mdW5jdGlvbiB1bmVzY2FwZShjKSB7XG5cdGNvbnN0IHUgPSBjWzBdID09PSAndSc7XG5cdGNvbnN0IGJyYWNrZXQgPSBjWzFdID09PSAneyc7XG5cblx0aWYgKCh1ICYmICFicmFja2V0ICYmIGMubGVuZ3RoID09PSA1KSB8fCAoY1swXSA9PT0gJ3gnICYmIGMubGVuZ3RoID09PSAzKSkge1xuXHRcdHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGMuc2xpY2UoMSksIDE2KSk7XG5cdH1cblxuXHRpZiAodSAmJiBicmFja2V0KSB7XG5cdFx0cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KGMuc2xpY2UoMiwgLTEpLCAxNikpO1xuXHR9XG5cblx0cmV0dXJuIEVTQ0FQRVMuZ2V0KGMpIHx8IGM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKG5hbWUsIGFyZ3VtZW50c18pIHtcblx0Y29uc3QgcmVzdWx0cyA9IFtdO1xuXHRjb25zdCBjaHVua3MgPSBhcmd1bWVudHNfLnRyaW0oKS5zcGxpdCgvXFxzKixcXHMqL2cpO1xuXHRsZXQgbWF0Y2hlcztcblxuXHRmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuXHRcdGNvbnN0IG51bWJlciA9IE51bWJlcihjaHVuayk7XG5cdFx0aWYgKCFOdW1iZXIuaXNOYU4obnVtYmVyKSkge1xuXHRcdFx0cmVzdWx0cy5wdXNoKG51bWJlcik7XG5cdFx0fSBlbHNlIGlmICgobWF0Y2hlcyA9IGNodW5rLm1hdGNoKFNUUklOR19SRUdFWCkpKSB7XG5cdFx0XHRyZXN1bHRzLnB1c2gobWF0Y2hlc1syXS5yZXBsYWNlKEVTQ0FQRV9SRUdFWCwgKG0sIGVzY2FwZSwgY2hhcmFjdGVyKSA9PiBlc2NhcGUgPyB1bmVzY2FwZShlc2NhcGUpIDogY2hhcmFjdGVyKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDaGFsayB0ZW1wbGF0ZSBzdHlsZSBhcmd1bWVudDogJHtjaHVua30gKGluIHN0eWxlICcke25hbWV9JylgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHlsZShzdHlsZSkge1xuXHRTVFlMRV9SRUdFWC5sYXN0SW5kZXggPSAwO1xuXG5cdGNvbnN0IHJlc3VsdHMgPSBbXTtcblx0bGV0IG1hdGNoZXM7XG5cblx0d2hpbGUgKChtYXRjaGVzID0gU1RZTEVfUkVHRVguZXhlYyhzdHlsZSkpICE9PSBudWxsKSB7XG5cdFx0Y29uc3QgbmFtZSA9IG1hdGNoZXNbMV07XG5cblx0XHRpZiAobWF0Y2hlc1syXSkge1xuXHRcdFx0Y29uc3QgYXJncyA9IHBhcnNlQXJndW1lbnRzKG5hbWUsIG1hdGNoZXNbMl0pO1xuXHRcdFx0cmVzdWx0cy5wdXNoKFtuYW1lXS5jb25jYXQoYXJncykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXN1bHRzLnB1c2goW25hbWVdKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gYnVpbGRTdHlsZShjaGFsaywgc3R5bGVzKSB7XG5cdGNvbnN0IGVuYWJsZWQgPSB7fTtcblxuXHRmb3IgKGNvbnN0IGxheWVyIG9mIHN0eWxlcykge1xuXHRcdGZvciAoY29uc3Qgc3R5bGUgb2YgbGF5ZXIuc3R5bGVzKSB7XG5cdFx0XHRlbmFibGVkW3N0eWxlWzBdXSA9IGxheWVyLmludmVyc2UgPyBudWxsIDogc3R5bGUuc2xpY2UoMSk7XG5cdFx0fVxuXHR9XG5cblx0bGV0IGN1cnJlbnQgPSBjaGFsaztcblx0Zm9yIChjb25zdCBbc3R5bGVOYW1lLCBzdHlsZXNdIG9mIE9iamVjdC5lbnRyaWVzKGVuYWJsZWQpKSB7XG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHN0eWxlcykpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGlmICghKHN0eWxlTmFtZSBpbiBjdXJyZW50KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIENoYWxrIHN0eWxlOiAke3N0eWxlTmFtZX1gKTtcblx0XHR9XG5cblx0XHRjdXJyZW50ID0gc3R5bGVzLmxlbmd0aCA+IDAgPyBjdXJyZW50W3N0eWxlTmFtZV0oLi4uc3R5bGVzKSA6IGN1cnJlbnRbc3R5bGVOYW1lXTtcblx0fVxuXG5cdHJldHVybiBjdXJyZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IChjaGFsaywgdGVtcG9yYXJ5KSA9PiB7XG5cdGNvbnN0IHN0eWxlcyA9IFtdO1xuXHRjb25zdCBjaHVua3MgPSBbXTtcblx0bGV0IGNodW5rID0gW107XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcblx0dGVtcG9yYXJ5LnJlcGxhY2UoVEVNUExBVEVfUkVHRVgsIChtLCBlc2NhcGVDaGFyYWN0ZXIsIGludmVyc2UsIHN0eWxlLCBjbG9zZSwgY2hhcmFjdGVyKSA9PiB7XG5cdFx0aWYgKGVzY2FwZUNoYXJhY3Rlcikge1xuXHRcdFx0Y2h1bmsucHVzaCh1bmVzY2FwZShlc2NhcGVDaGFyYWN0ZXIpKTtcblx0XHR9IGVsc2UgaWYgKHN0eWxlKSB7XG5cdFx0XHRjb25zdCBzdHJpbmcgPSBjaHVuay5qb2luKCcnKTtcblx0XHRcdGNodW5rID0gW107XG5cdFx0XHRjaHVua3MucHVzaChzdHlsZXMubGVuZ3RoID09PSAwID8gc3RyaW5nIDogYnVpbGRTdHlsZShjaGFsaywgc3R5bGVzKShzdHJpbmcpKTtcblx0XHRcdHN0eWxlcy5wdXNoKHtpbnZlcnNlLCBzdHlsZXM6IHBhcnNlU3R5bGUoc3R5bGUpfSk7XG5cdFx0fSBlbHNlIGlmIChjbG9zZSkge1xuXHRcdFx0aWYgKHN0eWxlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdGb3VuZCBleHRyYW5lb3VzIH0gaW4gQ2hhbGsgdGVtcGxhdGUgbGl0ZXJhbCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRjaHVua3MucHVzaChidWlsZFN0eWxlKGNoYWxrLCBzdHlsZXMpKGNodW5rLmpvaW4oJycpKSk7XG5cdFx0XHRjaHVuayA9IFtdO1xuXHRcdFx0c3R5bGVzLnBvcCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjaHVuay5wdXNoKGNoYXJhY3Rlcik7XG5cdFx0fVxuXHR9KTtcblxuXHRjaHVua3MucHVzaChjaHVuay5qb2luKCcnKSk7XG5cblx0aWYgKHN0eWxlcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3QgZXJyTWVzc2FnZSA9IGBDaGFsayB0ZW1wbGF0ZSBsaXRlcmFsIGlzIG1pc3NpbmcgJHtzdHlsZXMubGVuZ3RofSBjbG9zaW5nIGJyYWNrZXQke3N0eWxlcy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ30gKFxcYH1cXGApYDtcblx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyTWVzc2FnZSk7XG5cdH1cblxuXHRyZXR1cm4gY2h1bmtzLmpvaW4oJycpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCBhbnNpU3R5bGVzID0gcmVxdWlyZSgnYW5zaS1zdHlsZXMnKTtcbmNvbnN0IHtzdGRvdXQ6IHN0ZG91dENvbG9yLCBzdGRlcnI6IHN0ZGVyckNvbG9yfSA9IHJlcXVpcmUoJ3N1cHBvcnRzLWNvbG9yJyk7XG5jb25zdCB7XG5cdHN0cmluZ1JlcGxhY2VBbGwsXG5cdHN0cmluZ0VuY2FzZUNSTEZXaXRoRmlyc3RJbmRleFxufSA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5jb25zdCB7aXNBcnJheX0gPSBBcnJheTtcblxuLy8gYHN1cHBvcnRzQ29sb3IubGV2ZWxgIFx1MjE5MiBgYW5zaVN0eWxlcy5jb2xvcltuYW1lXWAgbWFwcGluZ1xuY29uc3QgbGV2ZWxNYXBwaW5nID0gW1xuXHQnYW5zaScsXG5cdCdhbnNpJyxcblx0J2Fuc2kyNTYnLFxuXHQnYW5zaTE2bSdcbl07XG5cbmNvbnN0IHN0eWxlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmNvbnN0IGFwcGx5T3B0aW9ucyA9IChvYmplY3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuXHRpZiAob3B0aW9ucy5sZXZlbCAmJiAhKE51bWJlci5pc0ludGVnZXIob3B0aW9ucy5sZXZlbCkgJiYgb3B0aW9ucy5sZXZlbCA+PSAwICYmIG9wdGlvbnMubGV2ZWwgPD0gMykpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgbGV2ZWxgIG9wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBmcm9tIDAgdG8gMycpO1xuXHR9XG5cblx0Ly8gRGV0ZWN0IGxldmVsIGlmIG5vdCBzZXQgbWFudWFsbHlcblx0Y29uc3QgY29sb3JMZXZlbCA9IHN0ZG91dENvbG9yID8gc3Rkb3V0Q29sb3IubGV2ZWwgOiAwO1xuXHRvYmplY3QubGV2ZWwgPSBvcHRpb25zLmxldmVsID09PSB1bmRlZmluZWQgPyBjb2xvckxldmVsIDogb3B0aW9ucy5sZXZlbDtcbn07XG5cbmNsYXNzIENoYWxrQ2xhc3Mge1xuXHRjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0cnVjdG9yLXJldHVyblxuXHRcdHJldHVybiBjaGFsa0ZhY3Rvcnkob3B0aW9ucyk7XG5cdH1cbn1cblxuY29uc3QgY2hhbGtGYWN0b3J5ID0gb3B0aW9ucyA9PiB7XG5cdGNvbnN0IGNoYWxrID0ge307XG5cdGFwcGx5T3B0aW9ucyhjaGFsaywgb3B0aW9ucyk7XG5cblx0Y2hhbGsudGVtcGxhdGUgPSAoLi4uYXJndW1lbnRzXykgPT4gY2hhbGtUYWcoY2hhbGsudGVtcGxhdGUsIC4uLmFyZ3VtZW50c18pO1xuXG5cdE9iamVjdC5zZXRQcm90b3R5cGVPZihjaGFsaywgQ2hhbGsucHJvdG90eXBlKTtcblx0T2JqZWN0LnNldFByb3RvdHlwZU9mKGNoYWxrLnRlbXBsYXRlLCBjaGFsayk7XG5cblx0Y2hhbGsudGVtcGxhdGUuY29uc3RydWN0b3IgPSAoKSA9PiB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdgY2hhbGsuY29uc3RydWN0b3IoKWAgaXMgZGVwcmVjYXRlZC4gVXNlIGBuZXcgY2hhbGsuSW5zdGFuY2UoKWAgaW5zdGVhZC4nKTtcblx0fTtcblxuXHRjaGFsay50ZW1wbGF0ZS5JbnN0YW5jZSA9IENoYWxrQ2xhc3M7XG5cblx0cmV0dXJuIGNoYWxrLnRlbXBsYXRlO1xufTtcblxuZnVuY3Rpb24gQ2hhbGsob3B0aW9ucykge1xuXHRyZXR1cm4gY2hhbGtGYWN0b3J5KG9wdGlvbnMpO1xufVxuXG5mb3IgKGNvbnN0IFtzdHlsZU5hbWUsIHN0eWxlXSBvZiBPYmplY3QuZW50cmllcyhhbnNpU3R5bGVzKSkge1xuXHRzdHlsZXNbc3R5bGVOYW1lXSA9IHtcblx0XHRnZXQoKSB7XG5cdFx0XHRjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih0aGlzLCBjcmVhdGVTdHlsZXIoc3R5bGUub3Blbiwgc3R5bGUuY2xvc2UsIHRoaXMuX3N0eWxlciksIHRoaXMuX2lzRW1wdHkpO1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHN0eWxlTmFtZSwge3ZhbHVlOiBidWlsZGVyfSk7XG5cdFx0XHRyZXR1cm4gYnVpbGRlcjtcblx0XHR9XG5cdH07XG59XG5cbnN0eWxlcy52aXNpYmxlID0ge1xuXHRnZXQoKSB7XG5cdFx0Y29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGhpcywgdGhpcy5fc3R5bGVyLCB0cnVlKTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3Zpc2libGUnLCB7dmFsdWU6IGJ1aWxkZXJ9KTtcblx0XHRyZXR1cm4gYnVpbGRlcjtcblx0fVxufTtcblxuY29uc3QgdXNlZE1vZGVscyA9IFsncmdiJywgJ2hleCcsICdrZXl3b3JkJywgJ2hzbCcsICdoc3YnLCAnaHdiJywgJ2Fuc2knLCAnYW5zaTI1NiddO1xuXG5mb3IgKGNvbnN0IG1vZGVsIG9mIHVzZWRNb2RlbHMpIHtcblx0c3R5bGVzW21vZGVsXSA9IHtcblx0XHRnZXQoKSB7XG5cdFx0XHRjb25zdCB7bGV2ZWx9ID0gdGhpcztcblx0XHRcdHJldHVybiBmdW5jdGlvbiAoLi4uYXJndW1lbnRzXykge1xuXHRcdFx0XHRjb25zdCBzdHlsZXIgPSBjcmVhdGVTdHlsZXIoYW5zaVN0eWxlcy5jb2xvcltsZXZlbE1hcHBpbmdbbGV2ZWxdXVttb2RlbF0oLi4uYXJndW1lbnRzXyksIGFuc2lTdHlsZXMuY29sb3IuY2xvc2UsIHRoaXMuX3N0eWxlcik7XG5cdFx0XHRcdHJldHVybiBjcmVhdGVCdWlsZGVyKHRoaXMsIHN0eWxlciwgdGhpcy5faXNFbXB0eSk7XG5cdFx0XHR9O1xuXHRcdH1cblx0fTtcbn1cblxuZm9yIChjb25zdCBtb2RlbCBvZiB1c2VkTW9kZWxzKSB7XG5cdGNvbnN0IGJnTW9kZWwgPSAnYmcnICsgbW9kZWxbMF0udG9VcHBlckNhc2UoKSArIG1vZGVsLnNsaWNlKDEpO1xuXHRzdHlsZXNbYmdNb2RlbF0gPSB7XG5cdFx0Z2V0KCkge1xuXHRcdFx0Y29uc3Qge2xldmVsfSA9IHRoaXM7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3VtZW50c18pIHtcblx0XHRcdFx0Y29uc3Qgc3R5bGVyID0gY3JlYXRlU3R5bGVyKGFuc2lTdHlsZXMuYmdDb2xvcltsZXZlbE1hcHBpbmdbbGV2ZWxdXVttb2RlbF0oLi4uYXJndW1lbnRzXyksIGFuc2lTdHlsZXMuYmdDb2xvci5jbG9zZSwgdGhpcy5fc3R5bGVyKTtcblx0XHRcdFx0cmV0dXJuIGNyZWF0ZUJ1aWxkZXIodGhpcywgc3R5bGVyLCB0aGlzLl9pc0VtcHR5KTtcblx0XHRcdH07XG5cdFx0fVxuXHR9O1xufVxuXG5jb25zdCBwcm90byA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCgpID0+IHt9LCB7XG5cdC4uLnN0eWxlcyxcblx0bGV2ZWw6IHtcblx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdGdldCgpIHtcblx0XHRcdHJldHVybiB0aGlzLl9nZW5lcmF0b3IubGV2ZWw7XG5cdFx0fSxcblx0XHRzZXQobGV2ZWwpIHtcblx0XHRcdHRoaXMuX2dlbmVyYXRvci5sZXZlbCA9IGxldmVsO1xuXHRcdH1cblx0fVxufSk7XG5cbmNvbnN0IGNyZWF0ZVN0eWxlciA9IChvcGVuLCBjbG9zZSwgcGFyZW50KSA9PiB7XG5cdGxldCBvcGVuQWxsO1xuXHRsZXQgY2xvc2VBbGw7XG5cdGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCkge1xuXHRcdG9wZW5BbGwgPSBvcGVuO1xuXHRcdGNsb3NlQWxsID0gY2xvc2U7XG5cdH0gZWxzZSB7XG5cdFx0b3BlbkFsbCA9IHBhcmVudC5vcGVuQWxsICsgb3Blbjtcblx0XHRjbG9zZUFsbCA9IGNsb3NlICsgcGFyZW50LmNsb3NlQWxsO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRvcGVuLFxuXHRcdGNsb3NlLFxuXHRcdG9wZW5BbGwsXG5cdFx0Y2xvc2VBbGwsXG5cdFx0cGFyZW50XG5cdH07XG59O1xuXG5jb25zdCBjcmVhdGVCdWlsZGVyID0gKHNlbGYsIF9zdHlsZXIsIF9pc0VtcHR5KSA9PiB7XG5cdGNvbnN0IGJ1aWxkZXIgPSAoLi4uYXJndW1lbnRzXykgPT4ge1xuXHRcdGlmIChpc0FycmF5KGFyZ3VtZW50c19bMF0pICYmIGlzQXJyYXkoYXJndW1lbnRzX1swXS5yYXcpKSB7XG5cdFx0XHQvLyBDYWxsZWQgYXMgYSB0ZW1wbGF0ZSBsaXRlcmFsLCBmb3IgZXhhbXBsZTogY2hhbGsucmVkYDIgKyAzID0ge2JvbGQgJHsyKzN9fWBcblx0XHRcdHJldHVybiBhcHBseVN0eWxlKGJ1aWxkZXIsIGNoYWxrVGFnKGJ1aWxkZXIsIC4uLmFyZ3VtZW50c18pKTtcblx0XHR9XG5cblx0XHQvLyBTaW5nbGUgYXJndW1lbnQgaXMgaG90IHBhdGgsIGltcGxpY2l0IGNvZXJjaW9uIGlzIGZhc3RlciB0aGFuIGFueXRoaW5nXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWltcGxpY2l0LWNvZXJjaW9uXG5cdFx0cmV0dXJuIGFwcGx5U3R5bGUoYnVpbGRlciwgKGFyZ3VtZW50c18ubGVuZ3RoID09PSAxKSA/ICgnJyArIGFyZ3VtZW50c19bMF0pIDogYXJndW1lbnRzXy5qb2luKCcgJykpO1xuXHR9O1xuXG5cdC8vIFdlIGFsdGVyIHRoZSBwcm90b3R5cGUgYmVjYXVzZSB3ZSBtdXN0IHJldHVybiBhIGZ1bmN0aW9uLCBidXQgdGhlcmUgaXNcblx0Ly8gbm8gd2F5IHRvIGNyZWF0ZSBhIGZ1bmN0aW9uIHdpdGggYSBkaWZmZXJlbnQgcHJvdG90eXBlXG5cdE9iamVjdC5zZXRQcm90b3R5cGVPZihidWlsZGVyLCBwcm90byk7XG5cblx0YnVpbGRlci5fZ2VuZXJhdG9yID0gc2VsZjtcblx0YnVpbGRlci5fc3R5bGVyID0gX3N0eWxlcjtcblx0YnVpbGRlci5faXNFbXB0eSA9IF9pc0VtcHR5O1xuXG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuY29uc3QgYXBwbHlTdHlsZSA9IChzZWxmLCBzdHJpbmcpID0+IHtcblx0aWYgKHNlbGYubGV2ZWwgPD0gMCB8fCAhc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHNlbGYuX2lzRW1wdHkgPyAnJyA6IHN0cmluZztcblx0fVxuXG5cdGxldCBzdHlsZXIgPSBzZWxmLl9zdHlsZXI7XG5cblx0aWYgKHN0eWxlciA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHN0cmluZztcblx0fVxuXG5cdGNvbnN0IHtvcGVuQWxsLCBjbG9zZUFsbH0gPSBzdHlsZXI7XG5cdGlmIChzdHJpbmcuaW5kZXhPZignXFx1MDAxQicpICE9PSAtMSkge1xuXHRcdHdoaWxlIChzdHlsZXIgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gUmVwbGFjZSBhbnkgaW5zdGFuY2VzIGFscmVhZHkgcHJlc2VudCB3aXRoIGEgcmUtb3BlbmluZyBjb2RlXG5cdFx0XHQvLyBvdGhlcndpc2Ugb25seSB0aGUgcGFydCBvZiB0aGUgc3RyaW5nIHVudGlsIHNhaWQgY2xvc2luZyBjb2RlXG5cdFx0XHQvLyB3aWxsIGJlIGNvbG9yZWQsIGFuZCB0aGUgcmVzdCB3aWxsIHNpbXBseSBiZSAncGxhaW4nLlxuXHRcdFx0c3RyaW5nID0gc3RyaW5nUmVwbGFjZUFsbChzdHJpbmcsIHN0eWxlci5jbG9zZSwgc3R5bGVyLm9wZW4pO1xuXG5cdFx0XHRzdHlsZXIgPSBzdHlsZXIucGFyZW50O1xuXHRcdH1cblx0fVxuXG5cdC8vIFdlIGNhbiBtb3ZlIGJvdGggbmV4dCBhY3Rpb25zIG91dCBvZiBsb29wLCBiZWNhdXNlIHJlbWFpbmluZyBhY3Rpb25zIGluIGxvb3Agd29uJ3QgaGF2ZVxuXHQvLyBhbnkvdmlzaWJsZSBlZmZlY3Qgb24gcGFydHMgd2UgYWRkIGhlcmUuIENsb3NlIHRoZSBzdHlsaW5nIGJlZm9yZSBhIGxpbmVicmVhayBhbmQgcmVvcGVuXG5cdC8vIGFmdGVyIG5leHQgbGluZSB0byBmaXggYSBibGVlZCBpc3N1ZSBvbiBtYWNPUzogaHR0cHM6Ly9naXRodWIuY29tL2NoYWxrL2NoYWxrL3B1bGwvOTJcblx0Y29uc3QgbGZJbmRleCA9IHN0cmluZy5pbmRleE9mKCdcXG4nKTtcblx0aWYgKGxmSW5kZXggIT09IC0xKSB7XG5cdFx0c3RyaW5nID0gc3RyaW5nRW5jYXNlQ1JMRldpdGhGaXJzdEluZGV4KHN0cmluZywgY2xvc2VBbGwsIG9wZW5BbGwsIGxmSW5kZXgpO1xuXHR9XG5cblx0cmV0dXJuIG9wZW5BbGwgKyBzdHJpbmcgKyBjbG9zZUFsbDtcbn07XG5cbmxldCB0ZW1wbGF0ZTtcbmNvbnN0IGNoYWxrVGFnID0gKGNoYWxrLCAuLi5zdHJpbmdzKSA9PiB7XG5cdGNvbnN0IFtmaXJzdFN0cmluZ10gPSBzdHJpbmdzO1xuXG5cdGlmICghaXNBcnJheShmaXJzdFN0cmluZykgfHwgIWlzQXJyYXkoZmlyc3RTdHJpbmcucmF3KSkge1xuXHRcdC8vIElmIGNoYWxrKCkgd2FzIGNhbGxlZCBieSBpdHNlbGYgb3Igd2l0aCBhIHN0cmluZyxcblx0XHQvLyByZXR1cm4gdGhlIHN0cmluZyBpdHNlbGYgYXMgYSBzdHJpbmcuXG5cdFx0cmV0dXJuIHN0cmluZ3Muam9pbignICcpO1xuXHR9XG5cblx0Y29uc3QgYXJndW1lbnRzXyA9IHN0cmluZ3Muc2xpY2UoMSk7XG5cdGNvbnN0IHBhcnRzID0gW2ZpcnN0U3RyaW5nLnJhd1swXV07XG5cblx0Zm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdFN0cmluZy5sZW5ndGg7IGkrKykge1xuXHRcdHBhcnRzLnB1c2goXG5cdFx0XHRTdHJpbmcoYXJndW1lbnRzX1tpIC0gMV0pLnJlcGxhY2UoL1t7fVxcXFxdL2csICdcXFxcJCYnKSxcblx0XHRcdFN0cmluZyhmaXJzdFN0cmluZy5yYXdbaV0pXG5cdFx0KTtcblx0fVxuXG5cdGlmICh0ZW1wbGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGVtcGxhdGUgPSByZXF1aXJlKCcuL3RlbXBsYXRlcycpO1xuXHR9XG5cblx0cmV0dXJuIHRlbXBsYXRlKGNoYWxrLCBwYXJ0cy5qb2luKCcnKSk7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhDaGFsay5wcm90b3R5cGUsIHN0eWxlcyk7XG5cbmNvbnN0IGNoYWxrID0gQ2hhbGsoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5jaGFsay5zdXBwb3J0c0NvbG9yID0gc3Rkb3V0Q29sb3I7XG5jaGFsay5zdGRlcnIgPSBDaGFsayh7bGV2ZWw6IHN0ZGVyckNvbG9yID8gc3RkZXJyQ29sb3IubGV2ZWwgOiAwfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuY2hhbGsuc3RkZXJyLnN1cHBvcnRzQ29sb3IgPSBzdGRlcnJDb2xvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBjaGFsaztcbiIsICIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCAidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwgInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG4iLCAiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwgInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsICIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiIsICJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwgInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbm1vZHVsZS5leHBvcnRzID0gY29yZUpzRGF0YTtcbiIsICJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsICIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iLCAidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc01hc2tlZCA9IHJlcXVpcmUoJy4vX2lzTWFza2VkJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hdGl2ZTtcbiIsICIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsICJ2YXIgYmFzZUlzTmF0aXZlID0gcmVxdWlyZSgnLi9fYmFzZUlzTmF0aXZlJyksXG4gICAgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiIsICJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iLCAidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsICJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0O1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iLCAidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwgIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0xlbmd0aDtcbiIsICJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcbiIsICJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpbmc7XG4iLCAiLyoqXG4gKiBDb252ZXJ0cyBgaXRlcmF0b3JgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gaXRlcmF0b3IgVGhlIGl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gaXRlcmF0b3JUb0FycmF5KGl0ZXJhdG9yKSB7XG4gIHZhciBkYXRhLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCEoZGF0YSA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgIHJlc3VsdC5wdXNoKGRhdGEudmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXRlcmF0b3JUb0FycmF5O1xuIiwgIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcbiIsICIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCAiLyoqXG4gKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc2NpaVRvQXJyYXk7XG4iLCAiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHdpdGggW3plcm8td2lkdGggam9pbmVycyBvciBjb2RlIHBvaW50cyBmcm9tIHRoZSBhc3RyYWwgcGxhbmVzXShodHRwOi8vZWV2LmVlL2Jsb2cvMjAxNS8wOS8xMi9kYXJrLWNvcm5lcnMtb2YtdW5pY29kZS8pLiAqL1xudmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIFVuaWNvZGUgc3ltYm9scy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSBzeW1ib2wgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzVW5pY29kZShzdHJpbmcpIHtcbiAgcmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzVW5pY29kZTtcbiIsICIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xudmFyIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4vKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xudmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gdW5pY29kZVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmljb2RlVG9BcnJheTtcbiIsICJ2YXIgYXNjaWlUb0FycmF5ID0gcmVxdWlyZSgnLi9fYXNjaWlUb0FycmF5JyksXG4gICAgaGFzVW5pY29kZSA9IHJlcXVpcmUoJy4vX2hhc1VuaWNvZGUnKSxcbiAgICB1bmljb2RlVG9BcnJheSA9IHJlcXVpcmUoJy4vX3VuaWNvZGVUb0FycmF5Jyk7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICA/IHVuaWNvZGVUb0FycmF5KHN0cmluZylcbiAgICA6IGFzY2lpVG9BcnJheShzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1RvQXJyYXk7XG4iLCAiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheU1hcDtcbiIsICJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVmFsdWVzO1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuIiwgInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwgInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsICIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIiwgInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsICIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcbiIsICJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsICIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwgInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vZGVVdGlsO1xuIiwgInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwgInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsICIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iLCAiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsICJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCAidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iLCAidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzO1xuIiwgInZhciBiYXNlVmFsdWVzID0gcmVxdWlyZSgnLi9fYmFzZVZhbHVlcycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8udmFsdWVzKCdoaScpO1xuICogLy8gPT4gWydoJywgJ2knXVxuICovXG5mdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsdWVzO1xuIiwgInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgICBpdGVyYXRvclRvQXJyYXkgPSByZXF1aXJlKCcuL19pdGVyYXRvclRvQXJyYXknKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5JyksXG4gICAgc3RyaW5nVG9BcnJheSA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvQXJyYXknKSxcbiAgICB2YWx1ZXMgPSByZXF1aXJlKCcuL3ZhbHVlcycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bUl0ZXJhdG9yID0gU3ltYm9sID8gU3ltYm9sLml0ZXJhdG9yIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0FycmF5KHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiBfLnRvQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gKlxuICogXy50b0FycmF5KDEpO1xuICogLy8gPT4gW11cbiAqXG4gKiBfLnRvQXJyYXkobnVsbCk7XG4gKiAvLyA9PiBbXVxuICovXG5mdW5jdGlvbiB0b0FycmF5KHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gIH1cbiAgaWYgKHN5bUl0ZXJhdG9yICYmIHZhbHVlW3N5bUl0ZXJhdG9yXSkge1xuICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICByZXR1cm4gZnVuYyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9BcnJheTtcbiIsICIvKmpzbGludCBub2RlOiB0cnVlKi9cbnZhciB0b0FycmF5ID0gcmVxdWlyZSgnbG9kYXNoL3RvQXJyYXknKTtcbnZhciBlbW9qaUJ5TmFtZSA9IHJlcXVpcmUoJy4vZW1vamkuanNvbicpO1xuXG5cInVzZSBzdHJpY3RcIjtcblxuLyoqXG4gKiByZWdleCB0byBwYXJzZSBlbW9qaSBpbiBhIHN0cmluZyAtIGZpbmRzIGVtb2ppLCBlLmcuIDpjb2ZmZWU6XG4gKi9cbnZhciBlbW9qaU5hbWVSZWdleCA9IC86KFthLXpBLVowLTlfXFwtXFwrXSspOi9nO1xuXG4vKipcbiAqIHJlZ2V4IHRvIHRyaW0gd2hpdGVzcGFjZVxuICogdXNlIGluc3RlYWQgb2YgU3RyaW5nLnByb3RvdHlwZS50cmltKCkgZm9yIElFOCBzdXBwb3J0XG4gKi9cbnZhciB0cmltU3BhY2VSZWdleCA9IC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZztcblxuLyoqXG4gKiBSZW1vdmVzIGNvbG9ucyBvbiBlaXRoZXIgc2lkZVxuICogb2YgdGhlIHN0cmluZyBpZiBwcmVzZW50XG4gKiBAcGFyYW0gIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpcENvbG9ucyAoc3RyKSB7XG4gIHZhciBjb2xvbkluZGV4ID0gc3RyLmluZGV4T2YoJzonKTtcbiAgaWYgKGNvbG9uSW5kZXggPiAtMSkge1xuICAgIC8vIDplbW9qaTogKGh0dHA6Ly93d3cuZW1vamktY2hlYXQtc2hlZXQuY29tLylcbiAgICBpZiAoY29sb25JbmRleCA9PT0gc3RyLmxlbmd0aCAtIDEpIHtcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7XG4gICAgICByZXR1cm4gc3RyaXBDb2xvbnMoc3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gc3RyLnN1YnN0cihjb2xvbkluZGV4ICsgMSk7XG4gICAgICByZXR1cm4gc3RyaXBDb2xvbnMoc3RyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIEFkZHMgY29sb25zIHRvIGVpdGhlciBzaWRlXG4gKiBvZiB0aGUgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHdyYXBDb2xvbnMgKHN0cikge1xuICByZXR1cm4gKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnICYmIHN0ci5sZW5ndGggPiAwKSA/ICc6JyArIHN0ciArICc6JyA6IHN0cjtcbn1cblxuLyoqXG4gKiBFbnN1cmUgdGhhdCB0aGUgd29yZCBpcyB3cmFwcGVkIGluIGNvbG9uc1xuICogYnkgb25seSBhZGRpbmcgdGhlbSwgaWYgdGhleSBhcmUgbm90IHRoZXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlbnN1cmVDb2xvbnMgKHN0cikge1xuICByZXR1cm4gKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnICYmIHN0clswXSAhPT0gJzonKSA/IHdyYXBDb2xvbnMoc3RyKSA6IHN0cjtcbn1cblxuLy8gTm9uIHNwYWNpbmcgbWFyaywgc29tZSBlbW90aWNvbnMgaGF2ZSB0aGVtLiBJdCdzIHRoZSAnVmFyaWFudCBGb3JtJyxcbi8vIHdoaWNoIHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpb24gc28gdGhhdCBlbW90aWNvbnMgY2FuIGJlIHJlbmRlcmVkIGFzXG4vLyBtb3JlIGNvbG9yZnVsIGdyYXBoaWNzLiBGRTBFIGlzIGEgdW5pY29kZSB0ZXh0IHZlcnNpb24sIHdoZXJlIGFzIEZFMEZcbi8vIHNob3VsZCBiZSByZW5kZXJlZCBhcyBhIGdyYXBoaWNhbCB2ZXJzaW9uLiBUaGUgY29kZSBncmFjZWZ1bGx5IGRlZ3JhZGVzLlxudmFyIE5PTl9TUEFDSU5HX01BUksgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1MDM5KTsgLy8gNjUwMzkgLSAnXHVGRTBGJyAtIDB4RkUwRjtcbnZhciBub25TcGFjaW5nUmVnZXggPSBuZXcgUmVnRXhwKE5PTl9TUEFDSU5HX01BUkssICdnJylcblxuLy8gUmVtb3ZlIHRoZSBub24tc3BhY2luZy1tYXJrIGZyb20gdGhlIGNvZGUsIG5ldmVyIHNlbmQgYSBzdHJpcHBlZCB2ZXJzaW9uXG4vLyB0byB0aGUgY2xpZW50LCBhcyBpdCBraWxscyBncmFwaGljYWwgZW1vdGljb25zLlxuZnVuY3Rpb24gc3RyaXBOU0IgKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUucmVwbGFjZShub25TcGFjaW5nUmVnZXgsICcnKTtcbn07XG5cbi8vIFJldmVyc2VkIGhhc2ggdGFibGUsIHdoZXJlIGFzIGVtb2ppQnlOYW1lIGNvbnRhaW5zIGEgeyBoZWFydDogJ1x1Mjc2NCcgfVxuLy8gZGljdGlvbmFyeSBlbW9qaUJ5Q29kZSBjb250YWlucyB7IFx1Mjc2NDogJ2hlYXJ0JyB9LiBUaGUgY29kZXMgYXJlIG5vcm1hbGl6ZWRcbi8vIHRvIHRoZSB0ZXh0IHZlcnNpb24uXG52YXIgZW1vamlCeUNvZGUgPSBPYmplY3Qua2V5cyhlbW9qaUJ5TmFtZSkucmVkdWNlKGZ1bmN0aW9uKGgsaykge1xuICBoW3N0cmlwTlNCKGVtb2ppQnlOYW1lW2tdKV0gPSBrO1xuICByZXR1cm4gaDtcbn0sIHt9KTtcblxuLyoqXG4gKiBFbW9qaSBuYW1lc3BhY2VcbiAqL1xudmFyIEVtb2ppID0ge1xuICBlbW9qaTogZW1vamlCeU5hbWUsXG59O1xuXG4vKipcbiAqIGdldCBlbW9qaSBjb2RlIGZyb20gbmFtZS4gcmV0dXJuIGVtb2ppIGNvZGUgYmFjayBpZiBjb2RlIGlzIHBhc3NlZCBpbi5cbiAqIEBwYXJhbSAge3N0cmluZ30gZW1vamlcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkuX2dldCA9IGZ1bmN0aW9uIF9nZXQgKGVtb2ppKSB7XG4gIGlmIChlbW9qaUJ5Q29kZVtzdHJpcE5TQihlbW9qaSldKSB7XG4gICAgcmV0dXJuIGVtb2ppO1xuICB9IGVsc2UgaWYgKGVtb2ppQnlOYW1lLmhhc093blByb3BlcnR5KGVtb2ppKSkge1xuICAgIHJldHVybiBlbW9qaUJ5TmFtZVtlbW9qaV07XG4gIH1cblxuICByZXR1cm4gZW5zdXJlQ29sb25zKGVtb2ppKTtcbn07XG5cbi8qKlxuICogZ2V0IGVtb2ppIGNvZGUgZnJvbSA6ZW1vamk6IHN0cmluZyBvciBuYW1lXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGVtb2ppXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbkVtb2ppLmdldCA9IGZ1bmN0aW9uIGdldCAoZW1vamkpIHtcbiAgZW1vamkgPSBzdHJpcENvbG9ucyhlbW9qaSk7XG5cbiAgcmV0dXJuIEVtb2ppLl9nZXQoZW1vamkpO1xufTtcblxuLyoqXG4gKiBmaW5kIHRoZSBlbW9qaSBieSBlaXRoZXIgY29kZSBvciBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9yQ29kZSBUaGUgZW1vamkgdG8gZmluZCwgZWl0aGVyIGBjb2ZmZWVgLCBgOmNvZmZlZTpgIG9yIGBcdTI2MTVgO1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5FbW9qaS5maW5kID0gZnVuY3Rpb24gZmluZCAobmFtZU9yQ29kZSkge1xuICByZXR1cm4gRW1vamkuZmluZEJ5TmFtZShuYW1lT3JDb2RlKSB8fCBFbW9qaS5maW5kQnlDb2RlKG5hbWVPckNvZGUpO1xufTtcblxuLyoqXG4gKiBmaW5kIHRoZSBlbW9qaSBieSBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgZW1vamkgdG8gZmluZCBlaXRoZXIgYGNvZmZlZWAgb3IgYDpjb2ZmZWU6YDtcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuRW1vamkuZmluZEJ5TmFtZSA9IGZ1bmN0aW9uIGZpbmRCeU5hbWUgKG5hbWUpIHtcbiAgdmFyIHN0cmlwcGVkID0gc3RyaXBDb2xvbnMobmFtZSk7XG4gIHZhciBlbW9qaSA9IGVtb2ppQnlOYW1lW3N0cmlwcGVkXTtcblxuICByZXR1cm4gZW1vamkgPyAoeyBlbW9qaTogZW1vamksIGtleTogc3RyaXBwZWQgfSkgOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIGZpbmQgdGhlIGVtb2ppIGJ5IGNvZGUgKGVtb2ppKVxuICogQHBhcmFtIHtzdHJpbmd9IGNvZGUgVGhlIGVtb2ppIHRvIGZpbmQ7IGZvciBleGFtcGxlIGBcdTI2MTVgIG9yIGBcdTI2MTRgXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmZpbmRCeUNvZGUgPSBmdW5jdGlvbiBmaW5kQnlDb2RlIChjb2RlKSB7XG4gIHZhciBzdHJpcHBlZCA9IHN0cmlwTlNCKGNvZGUpO1xuICB2YXIgbmFtZSA9IGVtb2ppQnlDb2RlW3N0cmlwcGVkXTtcblxuICAvLyBsb29rdXAgZW1vamkgdG8gZW5zdXJlIHRoZSBWYXJpYW50IEZvcm0gaXMgcmV0dXJuZWRcbiAgcmV0dXJuIG5hbWUgPyAoeyBlbW9qaTogZW1vamlCeU5hbWVbbmFtZV0sIGtleTogbmFtZSB9KSA6IHVuZGVmaW5lZDtcbn07XG5cblxuLyoqXG4gKiBDaGVjayBpZiBhbiBlbW9qaSBpcyBrbm93biBieSB0aGlzIGxpYnJhcnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JDb2RlIFRoZSBlbW9qaSB0byB2YWxpZGF0ZSwgZWl0aGVyIGBjb2ZmZWVgLCBgOmNvZmZlZTpgIG9yIGBcdTI2MTVgO1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5FbW9qaS5oYXNFbW9qaSA9IGZ1bmN0aW9uIGhhc0Vtb2ppIChuYW1lT3JDb2RlKSB7XG4gIHJldHVybiBFbW9qaS5oYXNFbW9qaUJ5TmFtZShuYW1lT3JDb2RlKSB8fCBFbW9qaS5oYXNFbW9qaUJ5Q29kZShuYW1lT3JDb2RlKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYW4gZW1vamkgd2l0aCBnaXZlbiBuYW1lIGlzIGtub3duIGJ5IHRoaXMgbGlicmFyeVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIGVtb2ppIHRvIHZhbGlkYXRlIGVpdGhlciBgY29mZmVlYCBvciBgOmNvZmZlZTpgO1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5FbW9qaS5oYXNFbW9qaUJ5TmFtZSA9IGZ1bmN0aW9uIGhhc0Vtb2ppQnlOYW1lIChuYW1lKSB7XG4gIHZhciByZXN1bHQgPSBFbW9qaS5maW5kQnlOYW1lKG5hbWUpO1xuICByZXR1cm4gISFyZXN1bHQgJiYgcmVzdWx0LmtleSA9PT0gc3RyaXBDb2xvbnMobmFtZSk7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgZ2l2ZW4gZW1vamkgaXMga25vd24gYnkgdGhpcyBsaWJyYXJ5XG4gKiBAcGFyYW0ge3N0cmluZ30gY29kZSBUaGUgZW1vamkgdG8gdmFsaWRhdGU7IGZvciBleGFtcGxlIGBcdTI2MTVgIG9yIGBcdTI2MTRgXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmhhc0Vtb2ppQnlDb2RlID0gZnVuY3Rpb24gaGFzRW1vamlCeUNvZGUgKGNvZGUpIHtcbiAgdmFyIHJlc3VsdCA9IEVtb2ppLmZpbmRCeUNvZGUoY29kZSk7XG4gIHJldHVybiAhIXJlc3VsdCAmJiBzdHJpcE5TQihyZXN1bHQuZW1vamkpID09PSBzdHJpcE5TQihjb2RlKTtcbn07XG5cbi8qKlxuICogZ2V0IGVtb2ppIG5hbWUgZnJvbSBjb2RlXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGVtb2ppXG4gKiBAcGFyYW0gIHtib29sZWFufSBpbmNsdWRlQ29sb25zIHNob3VsZCB0aGUgcmVzdWx0IGluY2x1ZGUgdGhlIDo6XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbkVtb2ppLndoaWNoID0gZnVuY3Rpb24gd2hpY2ggKGVtb2ppX2NvZGUsIGluY2x1ZGVDb2xvbnMpIHtcbiAgdmFyIGNvZGUgPSBzdHJpcE5TQihlbW9qaV9jb2RlKTtcbiAgdmFyIHdvcmQgPSBlbW9qaUJ5Q29kZVtjb2RlXTtcblxuICByZXR1cm4gaW5jbHVkZUNvbG9ucyA/IHdyYXBDb2xvbnMod29yZCkgOiB3b3JkO1xufTtcblxuLyoqXG4gKiBlbW9qaWZ5IGEgc3RyaW5nIChyZXBsYWNlIDplbW9qaTogd2l0aCBhbiBlbW9qaSlcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gb25fbWlzc2luZyAoZ2V0cyBlbW9qaSBuYW1lIHdpdGhvdXQgOjogYW5kIHJldHVybnMgYSBwcm9wZXIgZW1vamkgaWYgbm8gZW1vamkgd2FzIGZvdW5kKVxuICogQHBhcmFtICB7ZnVuY3Rpb259IGZvcm1hdCAod3JhcCB0aGUgcmV0dXJuZWQgZW1vamkgaW4gYSBjdXN0b20gZWxlbWVudClcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkuZW1vamlmeSA9IGZ1bmN0aW9uIGVtb2ppZnkgKHN0ciwgb25fbWlzc2luZywgZm9ybWF0KSB7XG4gIGlmICghc3RyKSByZXR1cm4gJyc7XG5cbiAgcmV0dXJuIHN0ci5zcGxpdChlbW9qaU5hbWVSZWdleCkgLy8gcGFyc2UgZW1vamkgdmlhIHJlZ2V4XG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIHBhcnNlRW1vamkocywgaSkge1xuICAgICAgICAgICAgICAvLyBldmVyeSBzZWNvbmQgZWxlbWVudCBpcyBhbiBlbW9qaSwgZS5nLiBcInRlc3QgOmZhc3RfZm9yd2FyZDpcIiAtPiBbIFwidGVzdCBcIiwgXCJmYXN0X2ZvcndhcmRcIiBdXG4gICAgICAgICAgICAgIGlmIChpICUgMiA9PT0gMCkgcmV0dXJuIHM7XG4gICAgICAgICAgICAgIHZhciBlbW9qaSA9IEVtb2ppLl9nZXQocyk7XG4gICAgICAgICAgICAgIHZhciBpc01pc3NpbmcgPSBlbW9qaS5pbmRleE9mKCc6JykgPiAtMTtcblxuICAgICAgICAgICAgICBpZiAoaXNNaXNzaW5nICYmIHR5cGVvZiBvbl9taXNzaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9uX21pc3Npbmcocyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIWlzTWlzc2luZyAmJiB0eXBlb2YgZm9ybWF0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdChlbW9qaSwgcyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gZW1vamk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJycpIC8vIGNvbnZlcnQgYmFjayB0byBzdHJpbmdcbiAgO1xufTtcblxuLyoqXG4gKiByZXR1cm4gYSByYW5kb20gZW1vamlcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkucmFuZG9tID0gZnVuY3Rpb24gcmFuZG9tICgpIHtcbiAgdmFyIGVtb2ppS2V5cyA9IE9iamVjdC5rZXlzKGVtb2ppQnlOYW1lKTtcbiAgdmFyIHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZW1vamlLZXlzLmxlbmd0aCk7XG4gIHZhciBrZXkgPSBlbW9qaUtleXNbcmFuZG9tSW5kZXhdO1xuICB2YXIgZW1vamkgPSBFbW9qaS5fZ2V0KGtleSk7XG4gIHJldHVybiB7IGtleToga2V5LCBlbW9qaTogZW1vamkgfTtcbn1cblxuLyoqXG4gKiAgcmV0dXJuIGFuIGNvbGxlY3Rpb24gb2YgcG90ZW50aWFsIGVtb2ppIG1hdGNoZXNcbiAqICBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiAgQHJldHVybiB7QXJyYXkuPE9iamVjdD59XG4gKi9cbkVtb2ppLnNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaCAoc3RyKSB7XG4gIHZhciBlbW9qaUtleXMgPSBPYmplY3Qua2V5cyhlbW9qaUJ5TmFtZSk7XG4gIHZhciBtYXRjaGVyID0gc3RyaXBDb2xvbnMoc3RyKVxuICB2YXIgbWF0Y2hpbmdLZXlzID0gZW1vamlLZXlzLmZpbHRlcihmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4ga2V5LnRvU3RyaW5nKCkuaW5kZXhPZihtYXRjaGVyKSA9PT0gMDtcbiAgfSk7XG4gIHJldHVybiBtYXRjaGluZ0tleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIGVtb2ppOiBFbW9qaS5fZ2V0KGtleSksXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogdW5lbW9qaWZ5IGEgc3RyaW5nIChyZXBsYWNlIGVtb2ppIHdpdGggOmVtb2ppOilcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbkVtb2ppLnVuZW1vamlmeSA9IGZ1bmN0aW9uIHVuZW1vamlmeSAoc3RyKSB7XG4gIGlmICghc3RyKSByZXR1cm4gJyc7XG4gIHZhciB3b3JkcyA9IHRvQXJyYXkoc3RyKTtcblxuICByZXR1cm4gd29yZHMubWFwKGZ1bmN0aW9uKHdvcmQpIHtcbiAgICByZXR1cm4gRW1vamkud2hpY2god29yZCwgdHJ1ZSkgfHwgd29yZDtcbiAgfSkuam9pbignJyk7XG59O1xuXG4vKipcbiAqIHJlcGxhY2UgZW1vamlzIHdpdGggcmVwbGFjZW1lbnQgdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7ZnVuY3Rpb258c3RyaW5nfSB0aGUgc3RyaW5nIG9yIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHJlcGxhY2UgdGhlIGVtb2ppIHdpdGhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkIHRyYWlsaW5nIHdoaXRlc3BhY2VzIGJlIGNsZWFuZWQ/IERlZmF1bHRzIGZhbHNlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbkVtb2ppLnJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlIChzdHIsIHJlcGxhY2VtZW50LCBjbGVhblNwYWNlcykge1xuICBpZiAoIXN0cikgcmV0dXJuICcnO1xuXG4gIHZhciByZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VtZW50ID09PSAnZnVuY3Rpb24nID8gcmVwbGFjZW1lbnQgOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcGxhY2VtZW50OyB9O1xuICB2YXIgd29yZHMgPSB0b0FycmF5KHN0cik7XG5cbiAgdmFyIHJlcGxhY2VkID0gd29yZHMubWFwKGZ1bmN0aW9uKHdvcmQsIGlkeCkge1xuICAgIHZhciBlbW9qaSA9IEVtb2ppLmZpbmRCeUNvZGUod29yZCk7XG5cbiAgICBpZiAoZW1vamkgJiYgY2xlYW5TcGFjZXMgJiYgd29yZHNbaWR4ICsgMV0gPT09ICcgJykge1xuICAgICAgd29yZHNbaWR4ICsgMV0gPSAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gZW1vamkgPyByZXBsYWNlKGVtb2ppKSA6IHdvcmQ7XG4gIH0pLmpvaW4oJycpO1xuXG4gIHJldHVybiBjbGVhblNwYWNlcyA/IHJlcGxhY2VkLnJlcGxhY2UodHJpbVNwYWNlUmVnZXgsICcnKSA6IHJlcGxhY2VkO1xufTtcblxuXG4vKipcbiAqIHJlbW92ZSBhbGwgZW1vamlzIGZyb20gYSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoc3RyKSB7XG4gIHJldHVybiBFbW9qaS5yZXBsYWNlKHN0ciwgJycsIHRydWUpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFbW9qaTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2Vtb2ppJyk7IiwgIihmdW5jdGlvbiAoZmFjdG9yeSkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIikge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKGZhY3RvcnkpO1xuICB9IGVsc2Uge1xuICAgIHZhciByb290ID1cbiAgICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgID8gZ2xvYmFsVGhpc1xuICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgPyBnbG9iYWxcbiAgICAgICAgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICA/IHNlbGZcbiAgICAgICAgOiB0aGlzIHx8IHt9O1xuICAgIHJvb3QuZG9jID0gZmFjdG9yeSgpO1xuICB9XG59KShmdW5jdGlvbigpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG4gIHZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICB2YXIgX19jb21tb25KUyA9IChjYiwgbW9kKSA9PiBmdW5jdGlvbiBfX3JlcXVpcmUoKSB7XG4gICAgcmV0dXJuIG1vZCB8fCAoMCwgY2JbX19nZXRPd25Qcm9wTmFtZXMoY2IpWzBdXSkoKG1vZCA9IHsgZXhwb3J0czoge30gfSkuZXhwb3J0cywgbW9kKSwgbW9kLmV4cG9ydHM7XG4gIH07XG5cbiAgLy8gZGlzdC9fZG9jLmpzLnVtZC5qc1xuICB2YXIgcmVxdWlyZV9kb2NfanNfdW1kID0gX19jb21tb25KUyh7XG4gICAgXCJkaXN0L19kb2MuanMudW1kLmpzXCIoZXhwb3J0cywgbW9kdWxlKSB7XG4gICAgICB2YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuICAgICAgdmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbiAgICAgIHZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICAgIHZhciBfX2dldE93blByb3BOYW1lczIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgICAgIHZhciBfX2dldFByb3RvT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gICAgICB2YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgICAgIHZhciBfX2VzbSA9IChmbiwgcmVzKSA9PiBmdW5jdGlvbiBfX2luaXQoKSB7XG4gICAgICAgIHJldHVybiBmbiAmJiAocmVzID0gKDAsIGZuW19fZ2V0T3duUHJvcE5hbWVzMihmbilbMF1dKShmbiA9IDApKSwgcmVzO1xuICAgICAgfTtcbiAgICAgIHZhciBfX2NvbW1vbkpTMiA9IChjYiwgbW9kKSA9PiBmdW5jdGlvbiBfX3JlcXVpcmUoKSB7XG4gICAgICAgIHJldHVybiBtb2QgfHwgKDAsIGNiW19fZ2V0T3duUHJvcE5hbWVzMihjYilbMF1dKSgobW9kID0ge1xuICAgICAgICAgIGV4cG9ydHM6IHt9XG4gICAgICAgIH0pLmV4cG9ydHMsIG1vZCksIG1vZC5leHBvcnRzO1xuICAgICAgfTtcbiAgICAgIHZhciBfX2V4cG9ydCA9ICh0YXJnZXQsIGFsbCkgPT4ge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIGFsbClcbiAgICAgICAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgICAgICBnZXQ6IGFsbFtuYW1lXSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICB2YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICAgICAgICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzMihmcm9tKSlcbiAgICAgICAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodG8sIGtleSkgJiYga2V5ICE9PSBleGNlcHQpXG4gICAgICAgICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7XG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBmcm9tW2tleV0sXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogIShkZXNjID0gX19nZXRPd25Qcm9wRGVzYyhmcm9tLCBrZXkpKSB8fCBkZXNjLmVudW1lcmFibGVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvO1xuICAgICAgfTtcbiAgICAgIHZhciBfX3RvRVNNID0gKG1vZCwgaXNOb2RlTW9kZSwgdGFyZ2V0KSA9PiAodGFyZ2V0ID0gbW9kICE9IG51bGwgPyBfX2NyZWF0ZShfX2dldFByb3RvT2YobW9kKSkgOiB7fSwgX19jb3B5UHJvcHMoaXNOb2RlTW9kZSB8fCAhbW9kIHx8ICFtb2QuX19lc01vZHVsZSA/IF9fZGVmUHJvcCh0YXJnZXQsIFwiZGVmYXVsdFwiLCB7XG4gICAgICAgIHZhbHVlOiBtb2QsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pIDogdGFyZ2V0LCBtb2QpKTtcbiAgICAgIHZhciBfX3RvQ29tbW9uSlMgPSAobW9kKSA9PiBfX2NvcHlQcm9wcyhfX2RlZlByb3Aoe30sIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiB0cnVlXG4gICAgICB9KSwgbW9kKTtcbiAgICAgIHZhciBpbml0X2RlZmluZV9wcm9jZXNzID0gX19lc20oe1xuICAgICAgICBcIjxkZWZpbmU6cHJvY2Vzcz5cIigpIHtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgcmVxdWlyZV9kb2NfYnVpbGRlcnMgPSBfX2NvbW1vbkpTMih7XG4gICAgICAgIFwic3JjL2RvY3VtZW50L2RvYy1idWlsZGVycy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgICAgaW5pdF9kZWZpbmVfcHJvY2VzcygpO1xuICAgICAgICAgIGZ1bmN0aW9uIGNvbmNhdChwYXJ0cykge1xuICAgICAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgICAgICAgICAgIGFzc2VydERvYyhwYXJ0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJjb25jYXRcIixcbiAgICAgICAgICAgICAgcGFydHNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGluZGVudChjb250ZW50cykge1xuICAgICAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgICAgIGFzc2VydERvYyhjb250ZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiBcImluZGVudFwiLFxuICAgICAgICAgICAgICBjb250ZW50c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gYWxpZ24od2lkdGhPclN0cmluZywgY29udGVudHMpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgICBhc3NlcnREb2MoY29udGVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJhbGlnblwiLFxuICAgICAgICAgICAgICBjb250ZW50cyxcbiAgICAgICAgICAgICAgbjogd2lkdGhPclN0cmluZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gZ3JvdXAoY29udGVudHMpIHtcbiAgICAgICAgICAgIGxldCBvcHRzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB2b2lkIDAgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgICBhc3NlcnREb2MoY29udGVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJncm91cFwiLFxuICAgICAgICAgICAgICBpZDogb3B0cy5pZCxcbiAgICAgICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgICAgIGJyZWFrOiBCb29sZWFuKG9wdHMuc2hvdWxkQnJlYWspLFxuICAgICAgICAgICAgICBleHBhbmRlZFN0YXRlczogb3B0cy5leHBhbmRlZFN0YXRlc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gZGVkZW50VG9Sb290KGNvbnRlbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYWxpZ24oTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCBjb250ZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIG1hcmtBc1Jvb3QoY29udGVudHMpIHtcbiAgICAgICAgICAgIHJldHVybiBhbGlnbih7XG4gICAgICAgICAgICAgIHR5cGU6IFwicm9vdFwiXG4gICAgICAgICAgICB9LCBjb250ZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGRlZGVudChjb250ZW50cykge1xuICAgICAgICAgICAgcmV0dXJuIGFsaWduKC0xLCBjb250ZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGNvbmRpdGlvbmFsR3JvdXAoc3RhdGVzLCBvcHRzKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXAoc3RhdGVzWzBdLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdHMpLCB7fSwge1xuICAgICAgICAgICAgICBleHBhbmRlZFN0YXRlczogc3RhdGVzXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGZpbGwocGFydHMpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnREb2MocGFydCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZmlsbFwiLFxuICAgICAgICAgICAgICBwYXJ0c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gaWZCcmVhayhicmVha0NvbnRlbnRzLCBmbGF0Q29udGVudHMpIHtcbiAgICAgICAgICAgIGxldCBvcHRzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB2b2lkIDAgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgICBpZiAoYnJlYWtDb250ZW50cykge1xuICAgICAgICAgICAgICAgIGFzc2VydERvYyhicmVha0NvbnRlbnRzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZmxhdENvbnRlbnRzKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0RG9jKGZsYXRDb250ZW50cyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiaWYtYnJlYWtcIixcbiAgICAgICAgICAgICAgYnJlYWtDb250ZW50cyxcbiAgICAgICAgICAgICAgZmxhdENvbnRlbnRzLFxuICAgICAgICAgICAgICBncm91cElkOiBvcHRzLmdyb3VwSWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGluZGVudElmQnJlYWsoY29udGVudHMsIG9wdHMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiaW5kZW50LWlmLWJyZWFrXCIsXG4gICAgICAgICAgICAgIGNvbnRlbnRzLFxuICAgICAgICAgICAgICBncm91cElkOiBvcHRzLmdyb3VwSWQsXG4gICAgICAgICAgICAgIG5lZ2F0ZTogb3B0cy5uZWdhdGVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGxpbmVTdWZmaXgoY29udGVudHMpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgICBhc3NlcnREb2MoY29udGVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJsaW5lLXN1ZmZpeFwiLFxuICAgICAgICAgICAgICBjb250ZW50c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGxpbmVTdWZmaXhCb3VuZGFyeSA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwibGluZS1zdWZmaXgtYm91bmRhcnlcIlxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIGJyZWFrUGFyZW50ID0ge1xuICAgICAgICAgICAgdHlwZTogXCJicmVhay1wYXJlbnRcIlxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIHRyaW0gPSB7XG4gICAgICAgICAgICB0eXBlOiBcInRyaW1cIlxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIGhhcmRsaW5lV2l0aG91dEJyZWFrUGFyZW50ID0ge1xuICAgICAgICAgICAgdHlwZTogXCJsaW5lXCIsXG4gICAgICAgICAgICBoYXJkOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgbGl0ZXJhbGxpbmVXaXRob3V0QnJlYWtQYXJlbnQgPSB7XG4gICAgICAgICAgICB0eXBlOiBcImxpbmVcIixcbiAgICAgICAgICAgIGhhcmQ6IHRydWUsXG4gICAgICAgICAgICBsaXRlcmFsOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgbGluZSA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwibGluZVwiXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgc29mdGxpbmUgPSB7XG4gICAgICAgICAgICB0eXBlOiBcImxpbmVcIixcbiAgICAgICAgICAgIHNvZnQ6IHRydWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIHZhciBoYXJkbGluZSA9IGNvbmNhdChbaGFyZGxpbmVXaXRob3V0QnJlYWtQYXJlbnQsIGJyZWFrUGFyZW50XSk7XG4gICAgICAgICAgdmFyIGxpdGVyYWxsaW5lID0gY29uY2F0KFtsaXRlcmFsbGluZVdpdGhvdXRCcmVha1BhcmVudCwgYnJlYWtQYXJlbnRdKTtcbiAgICAgICAgICB2YXIgY3Vyc29yID0ge1xuICAgICAgICAgICAgdHlwZTogXCJjdXJzb3JcIixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBTeW1ib2woXCJjdXJzb3JcIilcbiAgICAgICAgICB9O1xuICAgICAgICAgIGZ1bmN0aW9uIGpvaW4oc2VwLCBhcnIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGkgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChzZXApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcy5wdXNoKGFycltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29uY2F0KHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGFkZEFsaWdubWVudFRvRG9jKGRvYywgc2l6ZSwgdGFiV2lkdGgpIHtcbiAgICAgICAgICAgIGxldCBhbGlnbmVkID0gZG9jO1xuICAgICAgICAgICAgaWYgKHNpemUgPiAwKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5mbG9vcihzaXplIC8gdGFiV2lkdGgpOyArK2kpIHtcbiAgICAgICAgICAgICAgICBhbGlnbmVkID0gaW5kZW50KGFsaWduZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFsaWduZWQgPSBhbGlnbihzaXplICUgdGFiV2lkdGgsIGFsaWduZWQpO1xuICAgICAgICAgICAgICBhbGlnbmVkID0gYWxpZ24oTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCBhbGlnbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhbGlnbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBsYWJlbChsYWJlbDIsIGNvbnRlbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiBcImxhYmVsXCIsXG4gICAgICAgICAgICAgIGxhYmVsOiBsYWJlbDIsXG4gICAgICAgICAgICAgIGNvbnRlbnRzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICAgICAgICBjb25jYXQsXG4gICAgICAgICAgICBqb2luLFxuICAgICAgICAgICAgbGluZSxcbiAgICAgICAgICAgIHNvZnRsaW5lLFxuICAgICAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgICAgICBsaXRlcmFsbGluZSxcbiAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgY29uZGl0aW9uYWxHcm91cCxcbiAgICAgICAgICAgIGZpbGwsXG4gICAgICAgICAgICBsaW5lU3VmZml4LFxuICAgICAgICAgICAgbGluZVN1ZmZpeEJvdW5kYXJ5LFxuICAgICAgICAgICAgY3Vyc29yLFxuICAgICAgICAgICAgYnJlYWtQYXJlbnQsXG4gICAgICAgICAgICBpZkJyZWFrLFxuICAgICAgICAgICAgdHJpbSxcbiAgICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICAgIGluZGVudElmQnJlYWssXG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGFkZEFsaWdubWVudFRvRG9jLFxuICAgICAgICAgICAgbWFya0FzUm9vdCxcbiAgICAgICAgICAgIGRlZGVudFRvUm9vdCxcbiAgICAgICAgICAgIGRlZGVudCxcbiAgICAgICAgICAgIGhhcmRsaW5lV2l0aG91dEJyZWFrUGFyZW50LFxuICAgICAgICAgICAgbGl0ZXJhbGxpbmVXaXRob3V0QnJlYWtQYXJlbnQsXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHJlcXVpcmVfZW5kX29mX2xpbmUgPSBfX2NvbW1vbkpTMih7XG4gICAgICAgIFwic3JjL2NvbW1vbi9lbmQtb2YtbGluZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgICAgaW5pdF9kZWZpbmVfcHJvY2VzcygpO1xuICAgICAgICAgIGZ1bmN0aW9uIGd1ZXNzRW5kT2ZMaW5lKHRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGV4dC5pbmRleE9mKFwiXFxyXCIpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KGluZGV4ICsgMSkgPT09IFwiXFxuXCIgPyBcImNybGZcIiA6IFwiY3JcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcImxmXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGNvbnZlcnRFbmRPZkxpbmVUb0NoYXJzKHZhbHVlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJjclwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlxcclwiO1xuICAgICAgICAgICAgICBjYXNlIFwiY3JsZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlxcclxcblwiO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlxcblwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBjb3VudEVuZE9mTGluZUNoYXJzKHRleHQsIGVvbCkge1xuICAgICAgICAgICAgbGV0IHJlZ2V4O1xuICAgICAgICAgICAgc3dpdGNoIChlb2wpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICAgICAgICAgIHJlZ2V4ID0gL1xcbi9nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiXFxyXCI6XG4gICAgICAgICAgICAgICAgcmVnZXggPSAvXFxyL2c7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJcXHJcXG5cIjpcbiAgICAgICAgICAgICAgICByZWdleCA9IC9cXHJcXG4vZztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgXCJlb2xcIiAnLmNvbmNhdChKU09OLnN0cmluZ2lmeShlb2wpLCBcIi5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZW5kT2ZMaW5lcyA9IHRleHQubWF0Y2gocmVnZXgpO1xuICAgICAgICAgICAgcmV0dXJuIGVuZE9mTGluZXMgPyBlbmRPZkxpbmVzLmxlbmd0aCA6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUVuZE9mTGluZSh0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICAgICAgICBndWVzc0VuZE9mTGluZSxcbiAgICAgICAgICAgIGNvbnZlcnRFbmRPZkxpbmVUb0NoYXJzLFxuICAgICAgICAgICAgY291bnRFbmRPZkxpbmVDaGFycyxcbiAgICAgICAgICAgIG5vcm1hbGl6ZUVuZE9mTGluZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHJlcXVpcmVfZ2V0X2xhc3QgPSBfX2NvbW1vbkpTMih7XG4gICAgICAgIFwic3JjL3V0aWxzL2dldC1sYXN0LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgICBpbml0X2RlZmluZV9wcm9jZXNzKCk7XG4gICAgICAgICAgdmFyIGdldExhc3QgPSAoYXJyKSA9PiBhcnJbYXJyLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIG1vZHVsZTIuZXhwb3J0cyA9IGdldExhc3Q7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZnVuY3Rpb24gYW5zaVJlZ2V4KCkge1xuICAgICAgICBsZXQge1xuICAgICAgICAgIG9ubHlGaXJzdCA9IGZhbHNlXG4gICAgICAgIH0gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHZvaWQgMCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgICAgICBjb25zdCBwYXR0ZXJuID0gW1wiW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KVwiLCBcIig/Oig/OlxcXFxkezEsNH0oPzo7XFxcXGR7MCw0fSkqKT9bXFxcXGRBLVBSLVRaY2YtbnRxcnk9Pjx+XSkpXCJdLmpvaW4oXCJ8XCIpO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuLCBvbmx5Rmlyc3QgPyB2b2lkIDAgOiBcImdcIik7XG4gICAgICB9XG4gICAgICB2YXIgaW5pdF9hbnNpX3JlZ2V4ID0gX19lc20oe1xuICAgICAgICBcIm5vZGVfbW9kdWxlcy9zdHJpcC1hbnNpL25vZGVfbW9kdWxlcy9hbnNpLXJlZ2V4L2luZGV4LmpzXCIoKSB7XG4gICAgICAgICAgaW5pdF9kZWZpbmVfcHJvY2VzcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGZ1bmN0aW9uIHN0cmlwQW5zaShzdHJpbmcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHJpbmcgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBgc3RyaW5nYCwgZ290IGBcIi5jb25jYXQodHlwZW9mIHN0cmluZywgXCJgXCIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoYW5zaVJlZ2V4KCksIFwiXCIpO1xuICAgICAgfVxuICAgICAgdmFyIGluaXRfc3RyaXBfYW5zaSA9IF9fZXNtKHtcbiAgICAgICAgXCJub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9pbmRleC5qc1wiKCkge1xuICAgICAgICAgIGluaXRfZGVmaW5lX3Byb2Nlc3MoKTtcbiAgICAgICAgICBpbml0X2Fuc2lfcmVnZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBmdW5jdGlvbiBpc0Z1bGx3aWR0aENvZGVQb2ludChjb2RlUG9pbnQpIHtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGNvZGVQb2ludCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvZGVQb2ludCA+PSA0MzUyICYmIChjb2RlUG9pbnQgPD0gNDQ0NyB8fCBjb2RlUG9pbnQgPT09IDkwMDEgfHwgY29kZVBvaW50ID09PSA5MDAyIHx8IDExOTA0IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMTI4NzEgJiYgY29kZVBvaW50ICE9PSAxMjM1MSB8fCAxMjg4MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDE5OTAzIHx8IDE5OTY4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gNDIxODIgfHwgNDMzNjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSA0MzM4OCB8fCA0NDAzMiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDU1MjAzIHx8IDYzNzQ0IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gNjQyNTUgfHwgNjUwNDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSA2NTA0OSB8fCA2NTA3MiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDY1MTMxIHx8IDY1MjgxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gNjUzNzYgfHwgNjU1MDQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSA2NTUxMCB8fCAxMTA1OTIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAxMTA1OTMgfHwgMTI3NDg4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMTI3NTY5IHx8IDEzMTA3MiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDI2MjE0MSk7XG4gICAgICB9XG4gICAgICB2YXIgaW5pdF9pc19mdWxsd2lkdGhfY29kZV9wb2ludCA9IF9fZXNtKHtcbiAgICAgICAgXCJub2RlX21vZHVsZXMvaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQvaW5kZXguanNcIigpIHtcbiAgICAgICAgICBpbml0X2RlZmluZV9wcm9jZXNzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHJlcXVpcmVfZW1vamlfcmVnZXggPSBfX2NvbW1vbkpTMih7XG4gICAgICAgIFwibm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgICBpbml0X2RlZmluZV9wcm9jZXNzKCk7XG4gICAgICAgICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZztcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBzdHJpbmdfd2lkdGhfZXhwb3J0cyA9IHt9O1xuICAgICAgX19leHBvcnQoc3RyaW5nX3dpZHRoX2V4cG9ydHMsIHtcbiAgICAgICAgZGVmYXVsdDogKCkgPT4gc3RyaW5nV2lkdGhcbiAgICAgIH0pO1xuICAgICAgZnVuY3Rpb24gc3RyaW5nV2lkdGgoc3RyaW5nKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RyaW5nICE9PSBcInN0cmluZ1wiIHx8IHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBzdHJpbmcgPSBzdHJpcEFuc2koc3RyaW5nKTtcbiAgICAgICAgaWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgoMCwgaW1wb3J0X2Vtb2ppX3JlZ2V4LmRlZmF1bHQpKCksIFwiICBcIik7XG4gICAgICAgIGxldCB3aWR0aCA9IDA7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzdHJpbmcubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgY29uc3QgY29kZVBvaW50ID0gc3RyaW5nLmNvZGVQb2ludEF0KGluZGV4KTtcbiAgICAgICAgICBpZiAoY29kZVBvaW50IDw9IDMxIHx8IGNvZGVQb2ludCA+PSAxMjcgJiYgY29kZVBvaW50IDw9IDE1OSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb2RlUG9pbnQgPj0gNzY4ICYmIGNvZGVQb2ludCA8PSA4NzkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29kZVBvaW50ID4gNjU1MzUpIHtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdpZHRoICs9IGlzRnVsbHdpZHRoQ29kZVBvaW50KGNvZGVQb2ludCkgPyAyIDogMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd2lkdGg7XG4gICAgICB9XG4gICAgICB2YXIgaW1wb3J0X2Vtb2ppX3JlZ2V4O1xuICAgICAgdmFyIGluaXRfc3RyaW5nX3dpZHRoID0gX19lc20oe1xuICAgICAgICBcIm5vZGVfbW9kdWxlcy9zdHJpbmctd2lkdGgvaW5kZXguanNcIigpIHtcbiAgICAgICAgICBpbml0X2RlZmluZV9wcm9jZXNzKCk7XG4gICAgICAgICAgaW5pdF9zdHJpcF9hbnNpKCk7XG4gICAgICAgICAgaW5pdF9pc19mdWxsd2lkdGhfY29kZV9wb2ludCgpO1xuICAgICAgICAgIGltcG9ydF9lbW9qaV9yZWdleCA9IF9fdG9FU00ocmVxdWlyZV9lbW9qaV9yZWdleCgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgcmVxdWlyZV9nZXRfc3RyaW5nX3dpZHRoID0gX19jb21tb25KUzIoe1xuICAgICAgICBcInNyYy91dGlscy9nZXQtc3RyaW5nLXdpZHRoLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgICBpbml0X2RlZmluZV9wcm9jZXNzKCk7XG4gICAgICAgICAgdmFyIHN0cmluZ1dpZHRoMiA9IChpbml0X3N0cmluZ193aWR0aCgpLCBfX3RvQ29tbW9uSlMoc3RyaW5nX3dpZHRoX2V4cG9ydHMpKS5kZWZhdWx0O1xuICAgICAgICAgIHZhciBub3RBc2NpaVJlZ2V4ID0gL1teXFx4MjAtXFx4N0ZdLztcbiAgICAgICAgICBmdW5jdGlvbiBnZXRTdHJpbmdXaWR0aCh0ZXh0KSB7XG4gICAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW5vdEFzY2lpUmVnZXgudGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGV4dC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nV2lkdGgyKHRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2R1bGUyLmV4cG9ydHMgPSBnZXRTdHJpbmdXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgcmVxdWlyZV9kb2NfdXRpbHMgPSBfX2NvbW1vbkpTMih7XG4gICAgICAgIFwic3JjL2RvY3VtZW50L2RvYy11dGlscy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgICAgaW5pdF9kZWZpbmVfcHJvY2VzcygpO1xuICAgICAgICAgIHZhciBnZXRMYXN0ID0gcmVxdWlyZV9nZXRfbGFzdCgpO1xuICAgICAgICAgIHZhciB7XG4gICAgICAgICAgICBsaXRlcmFsbGluZSxcbiAgICAgICAgICAgIGpvaW5cbiAgICAgICAgICB9ID0gcmVxdWlyZV9kb2NfYnVpbGRlcnMoKTtcbiAgICAgICAgICB2YXIgaXNDb25jYXQgPSAoZG9jKSA9PiBBcnJheS5pc0FycmF5KGRvYykgfHwgZG9jICYmIGRvYy50eXBlID09PSBcImNvbmNhdFwiO1xuICAgICAgICAgIHZhciBnZXREb2NQYXJ0cyA9IChkb2MpID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRvYykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkb2MudHlwZSAhPT0gXCJjb25jYXRcIiAmJiBkb2MudHlwZSAhPT0gXCJmaWxsXCIpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0IGRvYyB0eXBlIHRvIGJlIGBjb25jYXRgIG9yIGBmaWxsYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZG9jLnBhcnRzO1xuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIHRyYXZlcnNlRG9jT25FeGl0U3RhY2tNYXJrZXIgPSB7fTtcbiAgICAgICAgICBmdW5jdGlvbiB0cmF2ZXJzZURvYyhkb2MsIG9uRW50ZXIsIG9uRXhpdCwgc2hvdWxkVHJhdmVyc2VDb25kaXRpb25hbEdyb3Vwcykge1xuICAgICAgICAgICAgY29uc3QgZG9jc1N0YWNrID0gW2RvY107XG4gICAgICAgICAgICB3aGlsZSAoZG9jc1N0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jMiA9IGRvY3NTdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgaWYgKGRvYzIgPT09IHRyYXZlcnNlRG9jT25FeGl0U3RhY2tNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBvbkV4aXQoZG9jc1N0YWNrLnBvcCgpKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAob25FeGl0KSB7XG4gICAgICAgICAgICAgICAgZG9jc1N0YWNrLnB1c2goZG9jMiwgdHJhdmVyc2VEb2NPbkV4aXRTdGFja01hcmtlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFvbkVudGVyIHx8IG9uRW50ZXIoZG9jMikgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzQ29uY2F0KGRvYzIpIHx8IGRvYzIudHlwZSA9PT0gXCJmaWxsXCIpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZ2V0RG9jUGFydHMoZG9jMik7XG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCBpYyA9IHBhcnRzLmxlbmd0aCwgaSA9IGljIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jc1N0YWNrLnB1c2gocGFydHNbaV0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9jMi50eXBlID09PSBcImlmLWJyZWFrXCIpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChkb2MyLmZsYXRDb250ZW50cykge1xuICAgICAgICAgICAgICAgICAgICBkb2NzU3RhY2sucHVzaChkb2MyLmZsYXRDb250ZW50cyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoZG9jMi5icmVha0NvbnRlbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3NTdGFjay5wdXNoKGRvYzIuYnJlYWtDb250ZW50cyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MyLnR5cGUgPT09IFwiZ3JvdXBcIiAmJiBkb2MyLmV4cGFuZGVkU3RhdGVzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhdmVyc2VDb25kaXRpb25hbEdyb3Vwcykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpYyA9IGRvYzIuZXhwYW5kZWRTdGF0ZXMubGVuZ3RoLCBpID0gaWMgLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgICAgICAgIGRvY3NTdGFjay5wdXNoKGRvYzIuZXhwYW5kZWRTdGF0ZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkb2NzU3RhY2sucHVzaChkb2MyLmNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvYzIuY29udGVudHMpIHtcbiAgICAgICAgICAgICAgICAgIGRvY3NTdGFjay5wdXNoKGRvYzIuY29udGVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBtYXBEb2MoZG9jLCBjYikge1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgICAgICAgIHJldHVybiByZWMoZG9jKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlYyhkb2MyKSB7XG4gICAgICAgICAgICAgIGlmIChtYXBwZWQuaGFzKGRvYzIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlZC5nZXQoZG9jMik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2VzczIoZG9jMik7XG4gICAgICAgICAgICAgIG1hcHBlZC5zZXQoZG9jMiwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3MyKGRvYzIpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZG9jMikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2IoZG9jMi5tYXAocmVjKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGRvYzIudHlwZSA9PT0gXCJjb25jYXRcIiB8fCBkb2MyLnR5cGUgPT09IFwiZmlsbFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFydHMgPSBkb2MyLnBhcnRzLm1hcChyZWMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvYzIpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgcGFydHNcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGRvYzIudHlwZSA9PT0gXCJpZi1icmVha1wiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJlYWtDb250ZW50cyA9IGRvYzIuYnJlYWtDb250ZW50cyAmJiByZWMoZG9jMi5icmVha0NvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmbGF0Q29udGVudHMgPSBkb2MyLmZsYXRDb250ZW50cyAmJiByZWMoZG9jMi5mbGF0Q29udGVudHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvYzIpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgYnJlYWtDb250ZW50cyxcbiAgICAgICAgICAgICAgICAgIGZsYXRDb250ZW50c1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZG9jMi50eXBlID09PSBcImdyb3VwXCIgJiYgZG9jMi5leHBhbmRlZFN0YXRlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkU3RhdGVzID0gZG9jMi5leHBhbmRlZFN0YXRlcy5tYXAocmVjKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50cyA9IGV4cGFuZGVkU3RhdGVzWzBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvYzIpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgICAgICAgICBleHBhbmRlZFN0YXRlc1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZG9jMi5jb250ZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gcmVjKGRvYzIuY29udGVudHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvYzIpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgY29udGVudHNcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGNiKGRvYzIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBmaW5kSW5Eb2MoZG9jLCBmbiwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgbGV0IGhhc1N0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZpbmRJbkRvY09uRW50ZXJGbihkb2MyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1heWJlUmVzdWx0ID0gZm4oZG9jMik7XG4gICAgICAgICAgICAgIGlmIChtYXliZVJlc3VsdCAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgaGFzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWF5YmVSZXN1bHQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGhhc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyYXZlcnNlRG9jKGRvYywgZmluZEluRG9jT25FbnRlckZuKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIHdpbGxCcmVha0ZuKGRvYykge1xuICAgICAgICAgICAgaWYgKGRvYy50eXBlID09PSBcImdyb3VwXCIgJiYgZG9jLmJyZWFrKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRvYy50eXBlID09PSBcImxpbmVcIiAmJiBkb2MuaGFyZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkb2MudHlwZSA9PT0gXCJicmVhay1wYXJlbnRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gd2lsbEJyZWFrKGRvYykge1xuICAgICAgICAgICAgcmV0dXJuIGZpbmRJbkRvYyhkb2MsIHdpbGxCcmVha0ZuLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGJyZWFrUGFyZW50R3JvdXAoZ3JvdXBTdGFjaykge1xuICAgICAgICAgICAgaWYgKGdyb3VwU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCBwYXJlbnRHcm91cCA9IGdldExhc3QoZ3JvdXBTdGFjayk7XG4gICAgICAgICAgICAgIGlmICghcGFyZW50R3JvdXAuZXhwYW5kZWRTdGF0ZXMgJiYgIXBhcmVudEdyb3VwLmJyZWFrKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50R3JvdXAuYnJlYWsgPSBcInByb3BhZ2F0ZWRcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIHByb3BhZ2F0ZUJyZWFrcyhkb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFscmVhZHlWaXNpdGVkU2V0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU3RhY2sgPSBbXTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHByb3BhZ2F0ZUJyZWFrc09uRW50ZXJGbihkb2MyKSB7XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwiYnJlYWstcGFyZW50XCIpIHtcbiAgICAgICAgICAgICAgICBicmVha1BhcmVudEdyb3VwKGdyb3VwU3RhY2spO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwiZ3JvdXBcIikge1xuICAgICAgICAgICAgICAgIGdyb3VwU3RhY2sucHVzaChkb2MyKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxyZWFkeVZpc2l0ZWRTZXQuaGFzKGRvYzIpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFscmVhZHlWaXNpdGVkU2V0LmFkZChkb2MyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gcHJvcGFnYXRlQnJlYWtzT25FeGl0Rm4oZG9jMikge1xuICAgICAgICAgICAgICBpZiAoZG9jMi50eXBlID09PSBcImdyb3VwXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGdyb3VwU3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwLmJyZWFrKSB7XG4gICAgICAgICAgICAgICAgICBicmVha1BhcmVudEdyb3VwKGdyb3VwU3RhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJhdmVyc2VEb2MoZG9jLCBwcm9wYWdhdGVCcmVha3NPbkVudGVyRm4sIHByb3BhZ2F0ZUJyZWFrc09uRXhpdEZuLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlTGluZXNGbihkb2MpIHtcbiAgICAgICAgICAgIGlmIChkb2MudHlwZSA9PT0gXCJsaW5lXCIgJiYgIWRvYy5oYXJkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkb2Muc29mdCA/IFwiXCIgOiBcIiBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkb2MudHlwZSA9PT0gXCJpZi1icmVha1wiKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkb2MuZmxhdENvbnRlbnRzIHx8IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiByZW1vdmVMaW5lcyhkb2MpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBEb2MoZG9jLCByZW1vdmVMaW5lc0ZuKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGlzSGFyZGxpbmUgPSAoZG9jLCBuZXh0RG9jKSA9PiBkb2MgJiYgZG9jLnR5cGUgPT09IFwibGluZVwiICYmIGRvYy5oYXJkICYmIG5leHREb2MgJiYgbmV4dERvYy50eXBlID09PSBcImJyZWFrLXBhcmVudFwiO1xuICAgICAgICAgIGZ1bmN0aW9uIHN0cmlwRG9jVHJhaWxpbmdIYXJkbGluZUZyb21Eb2MoZG9jKSB7XG4gICAgICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQ29uY2F0KGRvYykgfHwgZG9jLnR5cGUgPT09IFwiZmlsbFwiKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZ2V0RG9jUGFydHMoZG9jKTtcbiAgICAgICAgICAgICAgd2hpbGUgKHBhcnRzLmxlbmd0aCA+IDEgJiYgaXNIYXJkbGluZSguLi5wYXJ0cy5zbGljZSgtMikpKSB7XG4gICAgICAgICAgICAgICAgcGFydHMubGVuZ3RoIC09IDI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0UGFydCA9IHN0cmlwRG9jVHJhaWxpbmdIYXJkbGluZUZyb21Eb2MoZ2V0TGFzdChwYXJ0cykpO1xuICAgICAgICAgICAgICAgIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID0gbGFzdFBhcnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZG9jKSA/IHBhcnRzIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb2MpLCB7fSwge1xuICAgICAgICAgICAgICAgIHBhcnRzXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChkb2MudHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFwiYWxpZ25cIjpcbiAgICAgICAgICAgICAgY2FzZSBcImluZGVudFwiOlxuICAgICAgICAgICAgICBjYXNlIFwiaW5kZW50LWlmLWJyZWFrXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJncm91cFwiOlxuICAgICAgICAgICAgICBjYXNlIFwibGluZS1zdWZmaXhcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50cyA9IHN0cmlwRG9jVHJhaWxpbmdIYXJkbGluZUZyb21Eb2MoZG9jLmNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb2MpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgY29udGVudHNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIFwiaWYtYnJlYWtcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFrQ29udGVudHMgPSBzdHJpcERvY1RyYWlsaW5nSGFyZGxpbmVGcm9tRG9jKGRvYy5icmVha0NvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmbGF0Q29udGVudHMgPSBzdHJpcERvY1RyYWlsaW5nSGFyZGxpbmVGcm9tRG9jKGRvYy5mbGF0Q29udGVudHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvYyksIHt9LCB7XG4gICAgICAgICAgICAgICAgICBicmVha0NvbnRlbnRzLFxuICAgICAgICAgICAgICAgICAgZmxhdENvbnRlbnRzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIHN0cmlwVHJhaWxpbmdIYXJkbGluZShkb2MpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpcERvY1RyYWlsaW5nSGFyZGxpbmVGcm9tRG9jKGNsZWFuRG9jKGRvYykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBjbGVhbkRvY0ZuKGRvYykge1xuICAgICAgICAgICAgc3dpdGNoIChkb2MudHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFwiZmlsbFwiOlxuICAgICAgICAgICAgICAgIGlmIChkb2MucGFydHMuZXZlcnkoKHBhcnQpID0+IHBhcnQgPT09IFwiXCIpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJncm91cFwiOlxuICAgICAgICAgICAgICAgIGlmICghZG9jLmNvbnRlbnRzICYmICFkb2MuaWQgJiYgIWRvYy5icmVhayAmJiAhZG9jLmV4cGFuZGVkU3RhdGVzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRvYy5jb250ZW50cy50eXBlID09PSBcImdyb3VwXCIgJiYgZG9jLmNvbnRlbnRzLmlkID09PSBkb2MuaWQgJiYgZG9jLmNvbnRlbnRzLmJyZWFrID09PSBkb2MuYnJlYWsgJiYgZG9jLmNvbnRlbnRzLmV4cGFuZGVkU3RhdGVzID09PSBkb2MuZXhwYW5kZWRTdGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkb2MuY29udGVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiYWxpZ25cIjpcbiAgICAgICAgICAgICAgY2FzZSBcImluZGVudFwiOlxuICAgICAgICAgICAgICBjYXNlIFwiaW5kZW50LWlmLWJyZWFrXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJsaW5lLXN1ZmZpeFwiOlxuICAgICAgICAgICAgICAgIGlmICghZG9jLmNvbnRlbnRzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJpZi1icmVha1wiOlxuICAgICAgICAgICAgICAgIGlmICghZG9jLmZsYXRDb250ZW50cyAmJiAhZG9jLmJyZWFrQ29udGVudHMpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNDb25jYXQoZG9jKSkge1xuICAgICAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFydCBvZiBnZXREb2NQYXJ0cyhkb2MpKSB7XG4gICAgICAgICAgICAgIGlmICghcGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IFtjdXJyZW50UGFydCwgLi4ucmVzdFBhcnRzXSA9IGlzQ29uY2F0KHBhcnQpID8gZ2V0RG9jUGFydHMocGFydCkgOiBbcGFydF07XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFBhcnQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGdldExhc3QocGFydHMpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gKz0gY3VycmVudFBhcnQ7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChjdXJyZW50UGFydCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGFydHMucHVzaCguLi5yZXN0UGFydHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBhcnRzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZG9jKSA/IHBhcnRzIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb2MpLCB7fSwge1xuICAgICAgICAgICAgICBwYXJ0c1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGNsZWFuRG9jKGRvYykge1xuICAgICAgICAgICAgcmV0dXJuIG1hcERvYyhkb2MsIChjdXJyZW50RG9jKSA9PiBjbGVhbkRvY0ZuKGN1cnJlbnREb2MpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gbm9ybWFsaXplUGFydHMocGFydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhcnRzID0gW107XG4gICAgICAgICAgICBjb25zdCByZXN0UGFydHMgPSBwYXJ0cy5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICB3aGlsZSAocmVzdFBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgcGFydCA9IHJlc3RQYXJ0cy5zaGlmdCgpO1xuICAgICAgICAgICAgICBpZiAoIXBhcnQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaXNDb25jYXQocGFydCkpIHtcbiAgICAgICAgICAgICAgICByZXN0UGFydHMudW5zaGlmdCguLi5nZXREb2NQYXJ0cyhwYXJ0KSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKG5ld1BhcnRzLmxlbmd0aCA+IDAgJiYgdHlwZW9mIGdldExhc3QobmV3UGFydHMpID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBwYXJ0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbmV3UGFydHNbbmV3UGFydHMubGVuZ3RoIC0gMV0gKz0gcGFydDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBuZXdQYXJ0cy5wdXNoKHBhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ld1BhcnRzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBub3JtYWxpemVEb2MoZG9jKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwRG9jKGRvYywgKGN1cnJlbnREb2MpID0+IHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudERvYykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplUGFydHMoY3VycmVudERvYyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFjdXJyZW50RG9jLnBhcnRzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnREb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY3VycmVudERvYyksIHt9LCB7XG4gICAgICAgICAgICAgICAgcGFydHM6IG5vcm1hbGl6ZVBhcnRzKGN1cnJlbnREb2MucGFydHMpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VFbmRPZkxpbmUoZG9jKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwRG9jKGRvYywgKGN1cnJlbnREb2MpID0+IHR5cGVvZiBjdXJyZW50RG9jID09PSBcInN0cmluZ1wiICYmIGN1cnJlbnREb2MuaW5jbHVkZXMoXCJcXG5cIikgPyByZXBsYWNlVGV4dEVuZE9mTGluZShjdXJyZW50RG9jKSA6IGN1cnJlbnREb2MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiByZXBsYWNlVGV4dEVuZE9mTGluZSh0ZXh0KSB7XG4gICAgICAgICAgICBsZXQgcmVwbGFjZW1lbnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHZvaWQgMCA/IGFyZ3VtZW50c1sxXSA6IGxpdGVyYWxsaW5lO1xuICAgICAgICAgICAgcmV0dXJuIGpvaW4ocmVwbGFjZW1lbnQsIHRleHQuc3BsaXQoXCJcXG5cIikpLnBhcnRzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBjYW5CcmVha0ZuKGRvYykge1xuICAgICAgICAgICAgaWYgKGRvYy50eXBlID09PSBcImxpbmVcIikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gY2FuQnJlYWsoZG9jKSB7XG4gICAgICAgICAgICByZXR1cm4gZmluZEluRG9jKGRvYywgY2FuQnJlYWtGbiwgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICAgICAgICBpc0NvbmNhdCxcbiAgICAgICAgICAgIGdldERvY1BhcnRzLFxuICAgICAgICAgICAgd2lsbEJyZWFrLFxuICAgICAgICAgICAgdHJhdmVyc2VEb2MsXG4gICAgICAgICAgICBmaW5kSW5Eb2MsXG4gICAgICAgICAgICBtYXBEb2MsXG4gICAgICAgICAgICBwcm9wYWdhdGVCcmVha3MsXG4gICAgICAgICAgICByZW1vdmVMaW5lcyxcbiAgICAgICAgICAgIHN0cmlwVHJhaWxpbmdIYXJkbGluZSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZVBhcnRzLFxuICAgICAgICAgICAgbm9ybWFsaXplRG9jLFxuICAgICAgICAgICAgY2xlYW5Eb2MsXG4gICAgICAgICAgICByZXBsYWNlVGV4dEVuZE9mTGluZSxcbiAgICAgICAgICAgIHJlcGxhY2VFbmRPZkxpbmUsXG4gICAgICAgICAgICBjYW5CcmVha1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHJlcXVpcmVfZG9jX3ByaW50ZXIgPSBfX2NvbW1vbkpTMih7XG4gICAgICAgIFwic3JjL2RvY3VtZW50L2RvYy1wcmludGVyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgICBpbml0X2RlZmluZV9wcm9jZXNzKCk7XG4gICAgICAgICAgdmFyIHtcbiAgICAgICAgICAgIGNvbnZlcnRFbmRPZkxpbmVUb0NoYXJzXG4gICAgICAgICAgfSA9IHJlcXVpcmVfZW5kX29mX2xpbmUoKTtcbiAgICAgICAgICB2YXIgZ2V0TGFzdCA9IHJlcXVpcmVfZ2V0X2xhc3QoKTtcbiAgICAgICAgICB2YXIgZ2V0U3RyaW5nV2lkdGggPSByZXF1aXJlX2dldF9zdHJpbmdfd2lkdGgoKTtcbiAgICAgICAgICB2YXIge1xuICAgICAgICAgICAgZmlsbCxcbiAgICAgICAgICAgIGN1cnNvcixcbiAgICAgICAgICAgIGluZGVudFxuICAgICAgICAgIH0gPSByZXF1aXJlX2RvY19idWlsZGVycygpO1xuICAgICAgICAgIHZhciB7XG4gICAgICAgICAgICBpc0NvbmNhdCxcbiAgICAgICAgICAgIGdldERvY1BhcnRzXG4gICAgICAgICAgfSA9IHJlcXVpcmVfZG9jX3V0aWxzKCk7XG4gICAgICAgICAgdmFyIGdyb3VwTW9kZU1hcDtcbiAgICAgICAgICB2YXIgTU9ERV9CUkVBSyA9IDE7XG4gICAgICAgICAgdmFyIE1PREVfRkxBVCA9IDI7XG4gICAgICAgICAgZnVuY3Rpb24gcm9vdEluZGVudCgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICBsZW5ndGg6IDAsXG4gICAgICAgICAgICAgIHF1ZXVlOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gbWFrZUluZGVudChpbmQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUluZChpbmQsIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJpbmRlbnRcIlxuICAgICAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIG1ha2VBbGlnbihpbmRlbnQyLCB3aWR0aE9yRG9jLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAod2lkdGhPckRvYyA9PT0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSB7XG4gICAgICAgICAgICAgIHJldHVybiBpbmRlbnQyLnJvb3QgfHwgcm9vdEluZGVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpZHRoT3JEb2MgPCAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUluZChpbmRlbnQyLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJkZWRlbnRcIlxuICAgICAgICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghd2lkdGhPckRvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaW5kZW50MjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3aWR0aE9yRG9jLnR5cGUgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluZGVudDIpLCB7fSwge1xuICAgICAgICAgICAgICAgIHJvb3Q6IGluZGVudDJcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbGlnblR5cGUgPSB0eXBlb2Ygd2lkdGhPckRvYyA9PT0gXCJzdHJpbmdcIiA/IFwic3RyaW5nQWxpZ25cIiA6IFwibnVtYmVyQWxpZ25cIjtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUluZChpbmRlbnQyLCB7XG4gICAgICAgICAgICAgIHR5cGU6IGFsaWduVHlwZSxcbiAgICAgICAgICAgICAgbjogd2lkdGhPckRvY1xuICAgICAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlSW5kKGluZCwgbmV3UGFydCwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgcXVldWUgPSBuZXdQYXJ0LnR5cGUgPT09IFwiZGVkZW50XCIgPyBpbmQucXVldWUuc2xpY2UoMCwgLTEpIDogWy4uLmluZC5xdWV1ZSwgbmV3UGFydF07XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgICAgICAgICBsZXQgbGFzdFRhYnMgPSAwO1xuICAgICAgICAgICAgbGV0IGxhc3RTcGFjZXMgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHF1ZXVlKSB7XG4gICAgICAgICAgICAgIHN3aXRjaCAocGFydC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImluZGVudFwiOlxuICAgICAgICAgICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnVzZVRhYnMpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkVGFicygxKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFNwYWNlcyhvcHRpb25zLnRhYldpZHRoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdBbGlnblwiOlxuICAgICAgICAgICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgICAgICAgICAgIHZhbHVlICs9IHBhcnQubjtcbiAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSBwYXJ0Lm4ubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlckFsaWduXCI6XG4gICAgICAgICAgICAgICAgICBsYXN0VGFicyArPSAxO1xuICAgICAgICAgICAgICAgICAgbGFzdFNwYWNlcyArPSBwYXJ0Lm47XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCB0eXBlICdcIi5jb25jYXQocGFydC50eXBlLCBcIidcIikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbHVzaFNwYWNlcygpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5kKSwge30sIHtcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgICAgcXVldWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZnVuY3Rpb24gYWRkVGFicyhjb3VudCkge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBcIlx0XCIucmVwZWF0KGNvdW50KTtcbiAgICAgICAgICAgICAgbGVuZ3RoICs9IG9wdGlvbnMudGFiV2lkdGggKiBjb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGFkZFNwYWNlcyhjb3VudCkge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBcIiBcIi5yZXBlYXQoY291bnQpO1xuICAgICAgICAgICAgICBsZW5ndGggKz0gY291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlVGFicykge1xuICAgICAgICAgICAgICAgIGZsdXNoVGFicygpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZsdXNoU3BhY2VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGZsdXNoVGFicygpIHtcbiAgICAgICAgICAgICAgaWYgKGxhc3RUYWJzID4gMCkge1xuICAgICAgICAgICAgICAgIGFkZFRhYnMobGFzdFRhYnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlc2V0TGFzdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZmx1c2hTcGFjZXMoKSB7XG4gICAgICAgICAgICAgIGlmIChsYXN0U3BhY2VzID4gMCkge1xuICAgICAgICAgICAgICAgIGFkZFNwYWNlcyhsYXN0U3BhY2VzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXNldExhc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0TGFzdCgpIHtcbiAgICAgICAgICAgICAgbGFzdFRhYnMgPSAwO1xuICAgICAgICAgICAgICBsYXN0U3BhY2VzID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gdHJpbShvdXQpIHtcbiAgICAgICAgICAgIGlmIChvdXQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRyaW1Db3VudCA9IDA7XG4gICAgICAgICAgICB3aGlsZSAob3V0Lmxlbmd0aCA+IDAgJiYgdHlwZW9mIGdldExhc3Qob3V0KSA9PT0gXCJzdHJpbmdcIiAmJiAvXltcXHQgXSokLy50ZXN0KGdldExhc3Qob3V0KSkpIHtcbiAgICAgICAgICAgICAgdHJpbUNvdW50ICs9IG91dC5wb3AoKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3V0Lmxlbmd0aCA+IDAgJiYgdHlwZW9mIGdldExhc3Qob3V0KSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICBjb25zdCB0cmltbWVkID0gZ2V0TGFzdChvdXQpLnJlcGxhY2UoL1tcXHQgXSokLywgXCJcIik7XG4gICAgICAgICAgICAgIHRyaW1Db3VudCArPSBnZXRMYXN0KG91dCkubGVuZ3RoIC0gdHJpbW1lZC5sZW5ndGg7XG4gICAgICAgICAgICAgIG91dFtvdXQubGVuZ3RoIC0gMV0gPSB0cmltbWVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRyaW1Db3VudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gZml0cyhuZXh0LCByZXN0Q29tbWFuZHMsIHdpZHRoLCBvcHRpb25zLCBoYXNMaW5lU3VmZml4LCBtdXN0QmVGbGF0KSB7XG4gICAgICAgICAgICBsZXQgcmVzdElkeCA9IHJlc3RDb21tYW5kcy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBjbWRzID0gW25leHRdO1xuICAgICAgICAgICAgY29uc3Qgb3V0ID0gW107XG4gICAgICAgICAgICB3aGlsZSAod2lkdGggPj0gMCkge1xuICAgICAgICAgICAgICBpZiAoY21kcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdElkeCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNtZHMucHVzaChyZXN0Q29tbWFuZHNbcmVzdElkeCAtIDFdKTtcbiAgICAgICAgICAgICAgICByZXN0SWR4LS07XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgW2luZCwgbW9kZSwgZG9jXSA9IGNtZHMucG9wKCk7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goZG9jKTtcbiAgICAgICAgICAgICAgICB3aWR0aCAtPSBnZXRTdHJpbmdXaWR0aChkb2MpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ29uY2F0KGRvYykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGdldERvY1BhcnRzKGRvYyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW2luZCwgbW9kZSwgcGFydHNbaV1dKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChkb2MudHlwZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImluZGVudFwiOlxuICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW21ha2VJbmRlbnQoaW5kLCBvcHRpb25zKSwgbW9kZSwgZG9jLmNvbnRlbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImFsaWduXCI6XG4gICAgICAgICAgICAgICAgICAgIGNtZHMucHVzaChbbWFrZUFsaWduKGluZCwgZG9jLm4sIG9wdGlvbnMpLCBtb2RlLCBkb2MuY29udGVudHNdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwidHJpbVwiOlxuICAgICAgICAgICAgICAgICAgICB3aWR0aCArPSB0cmltKG91dCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImdyb3VwXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11c3RCZUZsYXQgJiYgZG9jLmJyZWFrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwTW9kZSA9IGRvYy5icmVhayA/IE1PREVfQlJFQUsgOiBtb2RlO1xuICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW2luZCwgZ3JvdXBNb2RlLCBkb2MuZXhwYW5kZWRTdGF0ZXMgJiYgZ3JvdXBNb2RlID09PSBNT0RFX0JSRUFLID8gZ2V0TGFzdChkb2MuZXhwYW5kZWRTdGF0ZXMpIDogZG9jLmNvbnRlbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2MuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBncm91cE1vZGVNYXBbZG9jLmlkXSA9IGdyb3VwTW9kZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmaWxsXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkb2MucGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW2luZCwgbW9kZSwgZG9jLnBhcnRzW2ldXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiaWYtYnJlYWtcIjpcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbmRlbnQtaWYtYnJlYWtcIjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cE1vZGUgPSBkb2MuZ3JvdXBJZCA/IGdyb3VwTW9kZU1hcFtkb2MuZ3JvdXBJZF0gOiBtb2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBNb2RlID09PSBNT0RFX0JSRUFLKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnJlYWtDb250ZW50cyA9IGRvYy50eXBlID09PSBcImlmLWJyZWFrXCIgPyBkb2MuYnJlYWtDb250ZW50cyA6IGRvYy5uZWdhdGUgPyBkb2MuY29udGVudHMgOiBpbmRlbnQoZG9jLmNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtDb250ZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKFtpbmQsIG1vZGUsIGJyZWFrQ29udGVudHNdKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwTW9kZSA9PT0gTU9ERV9GTEFUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhdENvbnRlbnRzID0gZG9jLnR5cGUgPT09IFwiaWYtYnJlYWtcIiA/IGRvYy5mbGF0Q29udGVudHMgOiBkb2MubmVnYXRlID8gaW5kZW50KGRvYy5jb250ZW50cykgOiBkb2MuY29udGVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYXRDb250ZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKFtpbmQsIG1vZGUsIGZsYXRDb250ZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9GTEFUOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb2MuaGFyZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRvYy5zb2Z0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goXCIgXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfQlJFQUs6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5lLXN1ZmZpeFwiOlxuICAgICAgICAgICAgICAgICAgICBoYXNMaW5lU3VmZml4ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwibGluZS1zdWZmaXgtYm91bmRhcnlcIjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0xpbmVTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwibGFiZWxcIjpcbiAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKFtpbmQsIG1vZGUsIGRvYy5jb250ZW50c10pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gcHJpbnREb2NUb1N0cmluZyhkb2MsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGdyb3VwTW9kZU1hcCA9IHt9O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBvcHRpb25zLnByaW50V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBuZXdMaW5lID0gY29udmVydEVuZE9mTGluZVRvQ2hhcnMob3B0aW9ucy5lbmRPZkxpbmUpO1xuICAgICAgICAgICAgbGV0IHBvcyA9IDA7XG4gICAgICAgICAgICBjb25zdCBjbWRzID0gW1tyb290SW5kZW50KCksIE1PREVfQlJFQUssIGRvY11dO1xuICAgICAgICAgICAgY29uc3Qgb3V0ID0gW107XG4gICAgICAgICAgICBsZXQgc2hvdWxkUmVtZWFzdXJlID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbGluZVN1ZmZpeCA9IFtdO1xuICAgICAgICAgICAgd2hpbGUgKGNtZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCBbaW5kLCBtb2RlLCBkb2MyXSA9IGNtZHMucG9wKCk7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jMiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IG5ld0xpbmUgIT09IFwiXFxuXCIgPyBkb2MyLnJlcGxhY2UoL1xcbi9nLCBuZXdMaW5lKSA6IGRvYzI7XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goZm9ybWF0dGVkKTtcbiAgICAgICAgICAgICAgICBwb3MgKz0gZ2V0U3RyaW5nV2lkdGgoZm9ybWF0dGVkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0NvbmNhdChkb2MyKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZ2V0RG9jUGFydHMoZG9jMik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW2luZCwgbW9kZSwgcGFydHNbaV1dKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChkb2MyLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjdXJzb3JcIjpcbiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goY3Vyc29yLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiaW5kZW50XCI6XG4gICAgICAgICAgICAgICAgICAgIGNtZHMucHVzaChbbWFrZUluZGVudChpbmQsIG9wdGlvbnMpLCBtb2RlLCBkb2MyLmNvbnRlbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImFsaWduXCI6XG4gICAgICAgICAgICAgICAgICAgIGNtZHMucHVzaChbbWFrZUFsaWduKGluZCwgZG9jMi5uLCBvcHRpb25zKSwgbW9kZSwgZG9jMi5jb250ZW50c10pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0cmltXCI6XG4gICAgICAgICAgICAgICAgICAgIHBvcyAtPSB0cmltKG91dCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImdyb3VwXCI6XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9GTEFUOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRSZW1lYXN1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKFtpbmQsIGRvYzIuYnJlYWsgPyBNT0RFX0JSRUFLIDogTU9ERV9GTEFULCBkb2MyLmNvbnRlbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9CUkVBSzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkUmVtZWFzdXJlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gW2luZCwgTU9ERV9GTEFULCBkb2MyLmNvbnRlbnRzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbSA9IHdpZHRoIC0gcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzTGluZVN1ZmZpeCA9IGxpbmVTdWZmaXgubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZG9jMi5icmVhayAmJiBmaXRzKG5leHQsIGNtZHMsIHJlbSwgb3B0aW9ucywgaGFzTGluZVN1ZmZpeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKG5leHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvYzIuZXhwYW5kZWRTdGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3N0RXhwYW5kZWQgPSBnZXRMYXN0KGRvYzIuZXhwYW5kZWRTdGF0ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2MyLmJyZWFrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW2luZCwgTU9ERV9CUkVBSywgbW9zdEV4cGFuZGVkXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBkb2MyLmV4cGFuZGVkU3RhdGVzLmxlbmd0aCArIDE7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBkb2MyLmV4cGFuZGVkU3RhdGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHMucHVzaChbaW5kLCBNT0RFX0JSRUFLLCBtb3N0RXhwYW5kZWRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZSA9IGRvYzIuZXhwYW5kZWRTdGF0ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21kID0gW2luZCwgTU9ERV9GTEFULCBzdGF0ZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpdHMoY21kLCBjbWRzLCByZW0sIG9wdGlvbnMsIGhhc0xpbmVTdWZmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2goY21kKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW2luZCwgTU9ERV9CUkVBSywgZG9jMi5jb250ZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvYzIuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBncm91cE1vZGVNYXBbZG9jMi5pZF0gPSBnZXRMYXN0KGNtZHMpWzFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImZpbGxcIjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW0gPSB3aWR0aCAtIHBvcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgIHBhcnRzXG4gICAgICAgICAgICAgICAgICAgIH0gPSBkb2MyO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2NvbnRlbnQsIHdoaXRlc3BhY2VdID0gcGFydHM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRGbGF0Q21kID0gW2luZCwgTU9ERV9GTEFULCBjb250ZW50XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudEJyZWFrQ21kID0gW2luZCwgTU9ERV9CUkVBSywgY29udGVudF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRGaXRzID0gZml0cyhjb250ZW50RmxhdENtZCwgW10sIHJlbSwgb3B0aW9ucywgbGluZVN1ZmZpeC5sZW5ndGggPiAwLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50Rml0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKGNvbnRlbnRGbGF0Q21kKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKGNvbnRlbnRCcmVha0NtZCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdoaXRlc3BhY2VGbGF0Q21kID0gW2luZCwgTU9ERV9GTEFULCB3aGl0ZXNwYWNlXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2hpdGVzcGFjZUJyZWFrQ21kID0gW2luZCwgTU9ERV9CUkVBSywgd2hpdGVzcGFjZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudEZpdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNtZHMucHVzaCh3aGl0ZXNwYWNlRmxhdENtZCwgY29udGVudEZsYXRDbWQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2god2hpdGVzcGFjZUJyZWFrQ21kLCBjb250ZW50QnJlYWtDbWQpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXJ0cy5zcGxpY2UoMCwgMik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ0NtZCA9IFtpbmQsIG1vZGUsIGZpbGwocGFydHMpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kQ29udGVudCA9IHBhcnRzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEFuZFNlY29uZENvbnRlbnRGbGF0Q21kID0gW2luZCwgTU9ERV9GTEFULCBbY29udGVudCwgd2hpdGVzcGFjZSwgc2Vjb25kQ29udGVudF1dO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEFuZFNlY29uZENvbnRlbnRGaXRzID0gZml0cyhmaXJzdEFuZFNlY29uZENvbnRlbnRGbGF0Q21kLCBbXSwgcmVtLCBvcHRpb25zLCBsaW5lU3VmZml4Lmxlbmd0aCA+IDAsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RBbmRTZWNvbmRDb250ZW50Rml0cykge1xuICAgICAgICAgICAgICAgICAgICAgIGNtZHMucHVzaChyZW1haW5pbmdDbWQsIHdoaXRlc3BhY2VGbGF0Q21kLCBjb250ZW50RmxhdENtZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudEZpdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2gocmVtYWluaW5nQ21kLCB3aGl0ZXNwYWNlQnJlYWtDbWQsIGNvbnRlbnRGbGF0Q21kKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2gocmVtYWluaW5nQ21kLCB3aGl0ZXNwYWNlQnJlYWtDbWQsIGNvbnRlbnRCcmVha0NtZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiaWYtYnJlYWtcIjpcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbmRlbnQtaWYtYnJlYWtcIjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cE1vZGUgPSBkb2MyLmdyb3VwSWQgPyBncm91cE1vZGVNYXBbZG9jMi5ncm91cElkXSA6IG1vZGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cE1vZGUgPT09IE1PREVfQlJFQUspIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBicmVha0NvbnRlbnRzID0gZG9jMi50eXBlID09PSBcImlmLWJyZWFrXCIgPyBkb2MyLmJyZWFrQ29udGVudHMgOiBkb2MyLm5lZ2F0ZSA/IGRvYzIuY29udGVudHMgOiBpbmRlbnQoZG9jMi5jb250ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFrQ29udGVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNtZHMucHVzaChbaW5kLCBtb2RlLCBicmVha0NvbnRlbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cE1vZGUgPT09IE1PREVfRkxBVCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYXRDb250ZW50cyA9IGRvYzIudHlwZSA9PT0gXCJpZi1icmVha1wiID8gZG9jMi5mbGF0Q29udGVudHMgOiBkb2MyLm5lZ2F0ZSA/IGluZGVudChkb2MyLmNvbnRlbnRzKSA6IGRvYzIuY29udGVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYXRDb250ZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKFtpbmQsIG1vZGUsIGZsYXRDb250ZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5lLXN1ZmZpeFwiOlxuICAgICAgICAgICAgICAgICAgICBsaW5lU3VmZml4LnB1c2goW2luZCwgbW9kZSwgZG9jMi5jb250ZW50c10pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5lLXN1ZmZpeC1ib3VuZGFyeVwiOlxuICAgICAgICAgICAgICAgICAgICBpZiAobGluZVN1ZmZpeC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKFtpbmQsIG1vZGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibGluZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFyZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9GTEFUOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb2MyLmhhcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkb2MyLnNvZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSZW1lYXN1cmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9CUkVBSzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lU3VmZml4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY21kcy5wdXNoKFtpbmQsIG1vZGUsIGRvYzJdLCAuLi5saW5lU3VmZml4LnJldmVyc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVTdWZmaXggPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jMi5saXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmQucm9vdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKG5ld0xpbmUsIGluZC5yb290LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBpbmQucm9vdC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2gobmV3TGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zIC09IHRyaW0ob3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2gobmV3TGluZSArIGluZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGluZC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJsYWJlbFwiOlxuICAgICAgICAgICAgICAgICAgICBjbWRzLnB1c2goW2luZCwgbW9kZSwgZG9jMi5jb250ZW50c10pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjbWRzLmxlbmd0aCA9PT0gMCAmJiBsaW5lU3VmZml4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjbWRzLnB1c2goLi4ubGluZVN1ZmZpeC5yZXZlcnNlKCkpO1xuICAgICAgICAgICAgICAgIGxpbmVTdWZmaXggPSBbXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3Vyc29yUGxhY2Vob2xkZXJJbmRleCA9IG91dC5pbmRleE9mKGN1cnNvci5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICBpZiAoY3Vyc29yUGxhY2Vob2xkZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3RoZXJDdXJzb3JQbGFjZWhvbGRlckluZGV4ID0gb3V0LmluZGV4T2YoY3Vyc29yLnBsYWNlaG9sZGVyLCBjdXJzb3JQbGFjZWhvbGRlckluZGV4ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUN1cnNvciA9IG91dC5zbGljZSgwLCBjdXJzb3JQbGFjZWhvbGRlckluZGV4KS5qb2luKFwiXCIpO1xuICAgICAgICAgICAgICBjb25zdCBhcm91bmRDdXJzb3IgPSBvdXQuc2xpY2UoY3Vyc29yUGxhY2Vob2xkZXJJbmRleCArIDEsIG90aGVyQ3Vyc29yUGxhY2Vob2xkZXJJbmRleCkuam9pbihcIlwiKTtcbiAgICAgICAgICAgICAgY29uc3QgYWZ0ZXJDdXJzb3IgPSBvdXQuc2xpY2Uob3RoZXJDdXJzb3JQbGFjZWhvbGRlckluZGV4ICsgMSkuam9pbihcIlwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWQ6IGJlZm9yZUN1cnNvciArIGFyb3VuZEN1cnNvciArIGFmdGVyQ3Vyc29yLFxuICAgICAgICAgICAgICAgIGN1cnNvck5vZGVTdGFydDogYmVmb3JlQ3Vyc29yLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBjdXJzb3JOb2RlVGV4dDogYXJvdW5kQ3Vyc29yXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmb3JtYXR0ZWQ6IG91dC5qb2luKFwiXCIpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICAgICAgICBwcmludERvY1RvU3RyaW5nXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgcmVxdWlyZV9kb2NfZGVidWcgPSBfX2NvbW1vbkpTMih7XG4gICAgICAgIFwic3JjL2RvY3VtZW50L2RvYy1kZWJ1Zy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgICAgaW5pdF9kZWZpbmVfcHJvY2VzcygpO1xuICAgICAgICAgIHZhciB7XG4gICAgICAgICAgICBpc0NvbmNhdCxcbiAgICAgICAgICAgIGdldERvY1BhcnRzXG4gICAgICAgICAgfSA9IHJlcXVpcmVfZG9jX3V0aWxzKCk7XG4gICAgICAgICAgZnVuY3Rpb24gZmxhdHRlbkRvYyhkb2MpIHtcbiAgICAgICAgICAgIGlmICghZG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQ29uY2F0KGRvYykpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgcGFydCBvZiBnZXREb2NQYXJ0cyhkb2MpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzQ29uY2F0KHBhcnQpKSB7XG4gICAgICAgICAgICAgICAgICByZXMucHVzaCguLi5mbGF0dGVuRG9jKHBhcnQpLnBhcnRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmxhdHRlbmVkID0gZmxhdHRlbkRvYyhwYXJ0KTtcbiAgICAgICAgICAgICAgICAgIGlmIChmbGF0dGVuZWQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goZmxhdHRlbmVkKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImNvbmNhdFwiLFxuICAgICAgICAgICAgICAgIHBhcnRzOiByZXNcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkb2MudHlwZSA9PT0gXCJpZi1icmVha1wiKSB7XG4gICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvYyksIHt9LCB7XG4gICAgICAgICAgICAgICAgYnJlYWtDb250ZW50czogZmxhdHRlbkRvYyhkb2MuYnJlYWtDb250ZW50cyksXG4gICAgICAgICAgICAgICAgZmxhdENvbnRlbnRzOiBmbGF0dGVuRG9jKGRvYy5mbGF0Q29udGVudHMpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRvYy50eXBlID09PSBcImdyb3VwXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZG9jKSwge30sIHtcbiAgICAgICAgICAgICAgICBjb250ZW50czogZmxhdHRlbkRvYyhkb2MuY29udGVudHMpLFxuICAgICAgICAgICAgICAgIGV4cGFuZGVkU3RhdGVzOiBkb2MuZXhwYW5kZWRTdGF0ZXMgJiYgZG9jLmV4cGFuZGVkU3RhdGVzLm1hcChmbGF0dGVuRG9jKVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkb2MudHlwZSA9PT0gXCJmaWxsXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImZpbGxcIixcbiAgICAgICAgICAgICAgICBwYXJ0czogZG9jLnBhcnRzLm1hcChmbGF0dGVuRG9jKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRvYy5jb250ZW50cykge1xuICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb2MpLCB7fSwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBmbGF0dGVuRG9jKGRvYy5jb250ZW50cylcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBwcmludERvY1RvRGVidWcoZG9jKSB7XG4gICAgICAgICAgICBjb25zdCBwcmludGVkU3ltYm9scyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgY29uc3QgdXNlZEtleXNGb3JTeW1ib2xzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgICAgICAgIHJldHVybiBwcmludERvYyhmbGF0dGVuRG9jKGRvYykpO1xuICAgICAgICAgICAgZnVuY3Rpb24gcHJpbnREb2MoZG9jMiwgaW5kZXgsIHBhcmVudFBhcnRzKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jMiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkb2MyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaXNDb25jYXQoZG9jMikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmludGVkID0gZ2V0RG9jUGFydHMoZG9jMikubWFwKHByaW50RG9jKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByaW50ZWQubGVuZ3RoID09PSAxID8gcHJpbnRlZFswXSA6IFwiW1wiLmNvbmNhdChwcmludGVkLmpvaW4oXCIsIFwiKSwgXCJdXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwibGluZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2l0aEJyZWFrUGFyZW50ID0gQXJyYXkuaXNBcnJheShwYXJlbnRQYXJ0cykgJiYgcGFyZW50UGFydHNbaW5kZXggKyAxXSAmJiBwYXJlbnRQYXJ0c1tpbmRleCArIDFdLnR5cGUgPT09IFwiYnJlYWstcGFyZW50XCI7XG4gICAgICAgICAgICAgICAgaWYgKGRvYzIubGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhCcmVha1BhcmVudCA/IFwibGl0ZXJhbGxpbmVcIiA6IFwibGl0ZXJhbGxpbmVXaXRob3V0QnJlYWtQYXJlbnRcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRvYzIuaGFyZCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhCcmVha1BhcmVudCA/IFwiaGFyZGxpbmVcIiA6IFwiaGFyZGxpbmVXaXRob3V0QnJlYWtQYXJlbnRcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRvYzIuc29mdCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFwic29mdGxpbmVcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibGluZVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwiYnJlYWstcGFyZW50XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZnRlckhhcmRsaW5lID0gQXJyYXkuaXNBcnJheShwYXJlbnRQYXJ0cykgJiYgcGFyZW50UGFydHNbaW5kZXggLSAxXSAmJiBwYXJlbnRQYXJ0c1tpbmRleCAtIDFdLnR5cGUgPT09IFwibGluZVwiICYmIHBhcmVudFBhcnRzW2luZGV4IC0gMV0uaGFyZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWZ0ZXJIYXJkbGluZSA/IHZvaWQgMCA6IFwiYnJlYWtQYXJlbnRcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZG9jMi50eXBlID09PSBcInRyaW1cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInRyaW1cIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZG9jMi50eXBlID09PSBcImluZGVudFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaW5kZW50KFwiICsgcHJpbnREb2MoZG9jMi5jb250ZW50cykgKyBcIilcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZG9jMi50eXBlID09PSBcImFsaWduXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9jMi5uID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPyBcImRlZGVudFRvUm9vdChcIiArIHByaW50RG9jKGRvYzIuY29udGVudHMpICsgXCIpXCIgOiBkb2MyLm4gPCAwID8gXCJkZWRlbnQoXCIgKyBwcmludERvYyhkb2MyLmNvbnRlbnRzKSArIFwiKVwiIDogZG9jMi5uLnR5cGUgPT09IFwicm9vdFwiID8gXCJtYXJrQXNSb290KFwiICsgcHJpbnREb2MoZG9jMi5jb250ZW50cykgKyBcIilcIiA6IFwiYWxpZ24oXCIgKyBKU09OLnN0cmluZ2lmeShkb2MyLm4pICsgXCIsIFwiICsgcHJpbnREb2MoZG9jMi5jb250ZW50cykgKyBcIilcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZG9jMi50eXBlID09PSBcImlmLWJyZWFrXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpZkJyZWFrKFwiICsgcHJpbnREb2MoZG9jMi5icmVha0NvbnRlbnRzKSArIChkb2MyLmZsYXRDb250ZW50cyA/IFwiLCBcIiArIHByaW50RG9jKGRvYzIuZmxhdENvbnRlbnRzKSA6IFwiXCIpICsgKGRvYzIuZ3JvdXBJZCA/ICghZG9jMi5mbGF0Q29udGVudHMgPyAnLCBcIlwiJyA6IFwiXCIpICsgXCIsIHsgZ3JvdXBJZDogXCIuY29uY2F0KHByaW50R3JvdXBJZChkb2MyLmdyb3VwSWQpLCBcIiB9XCIpIDogXCJcIikgKyBcIilcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZG9jMi50eXBlID09PSBcImluZGVudC1pZi1icmVha1wiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uc1BhcnRzID0gW107XG4gICAgICAgICAgICAgICAgaWYgKGRvYzIubmVnYXRlKSB7XG4gICAgICAgICAgICAgICAgICBvcHRpb25zUGFydHMucHVzaChcIm5lZ2F0ZTogdHJ1ZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRvYzIuZ3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgb3B0aW9uc1BhcnRzLnB1c2goXCJncm91cElkOiBcIi5jb25jYXQocHJpbnRHcm91cElkKGRvYzIuZ3JvdXBJZCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IG9wdGlvbnNQYXJ0cy5sZW5ndGggPiAwID8gXCIsIHsgXCIuY29uY2F0KG9wdGlvbnNQYXJ0cy5qb2luKFwiLCBcIiksIFwiIH1cIikgOiBcIlwiO1xuICAgICAgICAgICAgICAgIHJldHVybiBcImluZGVudElmQnJlYWsoXCIuY29uY2F0KHByaW50RG9jKGRvYzIuY29udGVudHMpKS5jb25jYXQob3B0aW9ucywgXCIpXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwiZ3JvdXBcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNQYXJ0cyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChkb2MyLmJyZWFrICYmIGRvYzIuYnJlYWsgIT09IFwicHJvcGFnYXRlZFwiKSB7XG4gICAgICAgICAgICAgICAgICBvcHRpb25zUGFydHMucHVzaChcInNob3VsZEJyZWFrOiB0cnVlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZG9jMi5pZCkge1xuICAgICAgICAgICAgICAgICAgb3B0aW9uc1BhcnRzLnB1c2goXCJpZDogXCIuY29uY2F0KHByaW50R3JvdXBJZChkb2MyLmlkKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uc1BhcnRzLmxlbmd0aCA+IDAgPyBcIiwgeyBcIi5jb25jYXQob3B0aW9uc1BhcnRzLmpvaW4oXCIsIFwiKSwgXCIgfVwiKSA6IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYgKGRvYzIuZXhwYW5kZWRTdGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBcImNvbmRpdGlvbmFsR3JvdXAoW1wiLmNvbmNhdChkb2MyLmV4cGFuZGVkU3RhdGVzLm1hcCgocGFydCkgPT4gcHJpbnREb2MocGFydCkpLmpvaW4oXCIsXCIpLCBcIl1cIikuY29uY2F0KG9wdGlvbnMsIFwiKVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZ3JvdXAoXCIuY29uY2F0KHByaW50RG9jKGRvYzIuY29udGVudHMpKS5jb25jYXQob3B0aW9ucywgXCIpXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwiZmlsbFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZmlsbChbXCIuY29uY2F0KGRvYzIucGFydHMubWFwKChwYXJ0KSA9PiBwcmludERvYyhwYXJ0KSkuam9pbihcIiwgXCIpLCBcIl0pXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwibGluZS1zdWZmaXhcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImxpbmVTdWZmaXgoXCIgKyBwcmludERvYyhkb2MyLmNvbnRlbnRzKSArIFwiKVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwibGluZS1zdWZmaXgtYm91bmRhcnlcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImxpbmVTdWZmaXhCb3VuZGFyeVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkb2MyLnR5cGUgPT09IFwibGFiZWxcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImxhYmVsKFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeShkb2MyLmxhYmVsKSwgXCIsIFwiKS5jb25jYXQocHJpbnREb2MoZG9jMi5jb250ZW50cyksIFwiKVwiKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGRvYyB0eXBlIFwiICsgZG9jMi50eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIHByaW50R3JvdXBJZChpZCkge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGlkICE9PSBcInN5bWJvbFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFN0cmluZyhpZCkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChpZCBpbiBwcmludGVkU3ltYm9scykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmludGVkU3ltYm9sc1tpZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gU3RyaW5nKGlkKS5zbGljZSg3LCAtMSkgfHwgXCJzeW1ib2xcIjtcbiAgICAgICAgICAgICAgZm9yIChsZXQgY291bnRlciA9IDA7IDsgY291bnRlcisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJlZml4ICsgKGNvdW50ZXIgPiAwID8gXCIgI1wiLmNvbmNhdChjb3VudGVyKSA6IFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmICghdXNlZEtleXNGb3JTeW1ib2xzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICB1c2VkS2V5c0ZvclN5bWJvbHMuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbnRlZFN5bWJvbHNbaWRdID0gXCJTeW1ib2wuZm9yKFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeShrZXkpLCBcIilcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgICAgICAgIHByaW50RG9jVG9EZWJ1Z1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaW5pdF9kZWZpbmVfcHJvY2VzcygpO1xuICAgICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIGJ1aWxkZXJzOiByZXF1aXJlX2RvY19idWlsZGVycygpLFxuICAgICAgICBwcmludGVyOiByZXF1aXJlX2RvY19wcmludGVyKCksXG4gICAgICAgIHV0aWxzOiByZXF1aXJlX2RvY191dGlscygpLFxuICAgICAgICBkZWJ1ZzogcmVxdWlyZV9kb2NfZGVidWcoKVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVxdWlyZV9kb2NfanNfdW1kKCk7XG59KTsiLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIGRpc3QvX3RoaXJkLXBhcnR5LmpzLmNqcy5qc1xudmFyIF9fZ2V0T3duUHJvcE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgX19jb21tb25KUyA9IChjYiwgbW9kKSA9PiBmdW5jdGlvbiBfX3JlcXVpcmUoKSB7XG4gIHJldHVybiBtb2QgfHwgKDAsIGNiW19fZ2V0T3duUHJvcE5hbWVzKGNiKVswXV0pKChtb2QgPSB7XG4gICAgZXhwb3J0czoge31cbiAgfSkuZXhwb3J0cywgbW9kKSwgbW9kLmV4cG9ydHM7XG59O1xudmFyIHJlcXVpcmVfcmVzb2x2ZV9mcm9tID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2ltcG9ydC1mcmVzaC9ub2RlX21vZHVsZXMvcmVzb2x2ZS1mcm9tL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciBNb2R1bGUgPSByZXF1aXJlKFwibW9kdWxlXCIpO1xuICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICB2YXIgcmVzb2x2ZUZyb20gPSAoZnJvbURpciwgbW9kdWxlSWQsIHNpbGVudCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBmcm9tRGlyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIFxcYGZyb21EaXJcXGAgdG8gYmUgb2YgdHlwZSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBmcm9tRGlyfVxcYGApO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBtb2R1bGVJZCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBcXGBtb2R1bGVJZFxcYCB0byBiZSBvZiB0eXBlIFxcYHN0cmluZ1xcYCwgZ290IFxcYCR7dHlwZW9mIG1vZHVsZUlkfVxcYGApO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgZnJvbURpciA9IGZzLnJlYWxwYXRoU3luYyhmcm9tRGlyKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgICAgICAgICBmcm9tRGlyID0gcGF0aC5yZXNvbHZlKGZyb21EaXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHNpbGVudCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZnJvbUZpbGUgPSBwYXRoLmpvaW4oZnJvbURpciwgXCJub29wLmpzXCIpO1xuICAgICAgY29uc3QgcmVzb2x2ZUZpbGVOYW1lID0gKCkgPT4gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWUobW9kdWxlSWQsIHtcbiAgICAgICAgaWQ6IGZyb21GaWxlLFxuICAgICAgICBmaWxlbmFtZTogZnJvbUZpbGUsXG4gICAgICAgIHBhdGhzOiBNb2R1bGUuX25vZGVNb2R1bGVQYXRocyhmcm9tRGlyKVxuICAgICAgfSk7XG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmVGaWxlTmFtZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmVGaWxlTmFtZSgpO1xuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKGZyb21EaXIsIG1vZHVsZUlkKSA9PiByZXNvbHZlRnJvbShmcm9tRGlyLCBtb2R1bGVJZCk7XG4gICAgbW9kdWxlMi5leHBvcnRzLnNpbGVudCA9IChmcm9tRGlyLCBtb2R1bGVJZCkgPT4gcmVzb2x2ZUZyb20oZnJvbURpciwgbW9kdWxlSWQsIHRydWUpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcmVudF9tb2R1bGUgPSBfX2NvbW1vbkpTKHtcbiAgXCJzY3JpcHRzL2J1aWxkL3NoaW1zL3BhcmVudC1tb2R1bGUuY2pzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSAoZmlsZSkgPT4gZmlsZTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pbXBvcnRfZnJlc2ggPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvaW1wb3J0LWZyZXNoL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciByZXNvbHZlRnJvbSA9IHJlcXVpcmVfcmVzb2x2ZV9mcm9tKCk7XG4gICAgdmFyIHBhcmVudE1vZHVsZSA9IHJlcXVpcmVfcGFyZW50X21vZHVsZSgpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IChtb2R1bGVJZCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBtb2R1bGVJZCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBzdHJpbmdcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnRQYXRoID0gcGFyZW50TW9kdWxlKF9fZmlsZW5hbWUpO1xuICAgICAgY29uc3QgY3dkID0gcGFyZW50UGF0aCA/IHBhdGguZGlybmFtZShwYXJlbnRQYXRoKSA6IF9fZGlybmFtZTtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gcmVzb2x2ZUZyb20oY3dkLCBtb2R1bGVJZCk7XG4gICAgICBjb25zdCBvbGRNb2R1bGUgPSByZXF1aXJlLmNhY2hlW2ZpbGVQYXRoXTtcbiAgICAgIGlmIChvbGRNb2R1bGUgJiYgb2xkTW9kdWxlLnBhcmVudCkge1xuICAgICAgICBsZXQgaSA9IG9sZE1vZHVsZS5wYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgaWYgKG9sZE1vZHVsZS5wYXJlbnQuY2hpbGRyZW5baV0uaWQgPT09IGZpbGVQYXRoKSB7XG4gICAgICAgICAgICBvbGRNb2R1bGUucGFyZW50LmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2ZpbGVQYXRoXTtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHJlcXVpcmUuY2FjaGVbcGFyZW50UGF0aF07XG4gICAgICByZXR1cm4gcGFyZW50ID09PSB2b2lkIDAgPyByZXF1aXJlKGZpbGVQYXRoKSA6IHBhcmVudC5yZXF1aXJlKGZpbGVQYXRoKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2lzX2FycmF5aXNoID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2lzLWFycmF5aXNoL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0FycmF5aXNoKG9iaikge1xuICAgICAgaWYgKCFvYmopIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIEFycmF5IHx8IEFycmF5LmlzQXJyYXkob2JqKSB8fCBvYmoubGVuZ3RoID49IDAgJiYgb2JqLnNwbGljZSBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZXJyb3JfZXggPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvZXJyb3ItZXgvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB1dGlsID0gcmVxdWlyZShcInV0aWxcIik7XG4gICAgdmFyIGlzQXJyYXlpc2ggPSByZXF1aXJlX2lzX2FycmF5aXNoKCk7XG4gICAgdmFyIGVycm9yRXggPSBmdW5jdGlvbiBlcnJvckV4MihuYW1lLCBwcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAoIW5hbWUgfHwgbmFtZS5jb25zdHJ1Y3RvciAhPT0gU3RyaW5nKSB7XG4gICAgICAgIHByb3BlcnRpZXMgPSBuYW1lIHx8IHt9O1xuICAgICAgICBuYW1lID0gRXJyb3IubmFtZTtcbiAgICAgIH1cbiAgICAgIHZhciBlcnJvckV4RXJyb3IgPSBmdW5jdGlvbiBFcnJvckVYRXJyb3IobWVzc2FnZSkge1xuICAgICAgICBpZiAoIXRoaXMpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yRVhFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yID8gbWVzc2FnZS5tZXNzYWdlIDogbWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2U7XG4gICAgICAgIEVycm9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIGVycm9yRXhFcnJvcik7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc3NhZ2VcIiwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIG5ld01lc3NhZ2UgPSBtZXNzYWdlLnNwbGl0KC9cXHI/XFxuL2cpO1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgbW9kaWZpZXIgPSBwcm9wZXJ0aWVzW2tleV07XG4gICAgICAgICAgICAgIGlmIChcIm1lc3NhZ2VcIiBpbiBtb2RpZmllcikge1xuICAgICAgICAgICAgICAgIG5ld01lc3NhZ2UgPSBtb2RpZmllci5tZXNzYWdlKHRoaXNba2V5XSwgbmV3TWVzc2FnZSkgfHwgbmV3TWVzc2FnZTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlpc2gobmV3TWVzc2FnZSkpIHtcbiAgICAgICAgICAgICAgICAgIG5ld01lc3NhZ2UgPSBbbmV3TWVzc2FnZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3TWVzc2FnZS5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0OiBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gdjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgb3ZlcndyaXR0ZW5TdGFjayA9IG51bGw7XG4gICAgICAgIHZhciBzdGFja0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFwic3RhY2tcIik7XG4gICAgICAgIHZhciBzdGFja0dldHRlciA9IHN0YWNrRGVzY3JpcHRvci5nZXQ7XG4gICAgICAgIHZhciBzdGFja1ZhbHVlID0gc3RhY2tEZXNjcmlwdG9yLnZhbHVlO1xuICAgICAgICBkZWxldGUgc3RhY2tEZXNjcmlwdG9yLnZhbHVlO1xuICAgICAgICBkZWxldGUgc3RhY2tEZXNjcmlwdG9yLndyaXRhYmxlO1xuICAgICAgICBzdGFja0Rlc2NyaXB0b3Iuc2V0ID0gZnVuY3Rpb24obmV3c3RhY2spIHtcbiAgICAgICAgICBvdmVyd3JpdHRlblN0YWNrID0gbmV3c3RhY2s7XG4gICAgICAgIH07XG4gICAgICAgIHN0YWNrRGVzY3JpcHRvci5nZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgc3RhY2sgPSAob3ZlcndyaXR0ZW5TdGFjayB8fCAoc3RhY2tHZXR0ZXIgPyBzdGFja0dldHRlci5jYWxsKHRoaXMpIDogc3RhY2tWYWx1ZSkpLnNwbGl0KC9cXHI/XFxuKy9nKTtcbiAgICAgICAgICBpZiAoIW92ZXJ3cml0dGVuU3RhY2spIHtcbiAgICAgICAgICAgIHN0YWNrWzBdID0gdGhpcy5uYW1lICsgXCI6IFwiICsgdGhpcy5tZXNzYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgbGluZUNvdW50ID0gMTtcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbW9kaWZpZXIgPSBwcm9wZXJ0aWVzW2tleV07XG4gICAgICAgICAgICBpZiAoXCJsaW5lXCIgaW4gbW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgdmFyIGxpbmUgPSBtb2RpZmllci5saW5lKHRoaXNba2V5XSk7XG4gICAgICAgICAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgICAgICAgICAgc3RhY2suc3BsaWNlKGxpbmVDb3VudCsrLCAwLCBcIiAgICBcIiArIGxpbmUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXCJzdGFja1wiIGluIG1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgIG1vZGlmaWVyLnN0YWNrKHRoaXNba2V5XSwgc3RhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc3RhY2suam9pbihcIlxcblwiKTtcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwic3RhY2tcIiwgc3RhY2tEZXNjcmlwdG9yKTtcbiAgICAgIH07XG4gICAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihlcnJvckV4RXJyb3IucHJvdG90eXBlLCBFcnJvci5wcm90b3R5cGUpO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZXJyb3JFeEVycm9yLCBFcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGlsLmluaGVyaXRzKGVycm9yRXhFcnJvciwgRXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yRXhFcnJvcjtcbiAgICB9O1xuICAgIGVycm9yRXguYXBwZW5kID0gZnVuY3Rpb24oc3RyLCBkZWYpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2U6IGZ1bmN0aW9uKHYsIG1lc3NhZ2UpIHtcbiAgICAgICAgICB2ID0gdiB8fCBkZWY7XG4gICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VbMF0gKz0gXCIgXCIgKyBzdHIucmVwbGFjZShcIiVzXCIsIHYudG9TdHJpbmcoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXJyb3JFeC5saW5lID0gZnVuY3Rpb24oc3RyLCBkZWYpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICB2ID0gdiB8fCBkZWY7XG4gICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZShcIiVzXCIsIHYudG9TdHJpbmcoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZXJyb3JFeDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9qc29uX3BhcnNlX2V2ZW5fYmV0dGVyX2Vycm9ycyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9qc29uLXBhcnNlLWV2ZW4tYmV0dGVyLWVycm9ycy9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGhleGlmeSA9IChjaGFyKSA9PiB7XG4gICAgICBjb25zdCBoID0gY2hhci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgcmV0dXJuIFwiMHhcIiArIChoLmxlbmd0aCAlIDIgPyBcIjBcIiA6IFwiXCIpICsgaDtcbiAgICB9O1xuICAgIHZhciBwYXJzZUVycm9yID0gKGUsIHR4dCwgY29udGV4dCkgPT4ge1xuICAgICAgaWYgKCF0eHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UgKyBcIiB3aGlsZSBwYXJzaW5nIGVtcHR5IHN0cmluZ1wiLFxuICAgICAgICAgIHBvc2l0aW9uOiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBiYWRUb2tlbiA9IGUubWVzc2FnZS5tYXRjaCgvXlVuZXhwZWN0ZWQgdG9rZW4gKC4pIC4qcG9zaXRpb25cXHMrKFxcZCspL2kpO1xuICAgICAgY29uc3QgZXJySWR4ID0gYmFkVG9rZW4gPyArYmFkVG9rZW5bMl0gOiBlLm1lc3NhZ2UubWF0Y2goL15VbmV4cGVjdGVkIGVuZCBvZiBKU09OLiovaSkgPyB0eHQubGVuZ3RoIC0gMSA6IG51bGw7XG4gICAgICBjb25zdCBtc2cgPSBiYWRUb2tlbiA/IGUubWVzc2FnZS5yZXBsYWNlKC9eVW5leHBlY3RlZCB0b2tlbiAuLywgYFVuZXhwZWN0ZWQgdG9rZW4gJHtKU09OLnN0cmluZ2lmeShiYWRUb2tlblsxXSl9ICgke2hleGlmeShiYWRUb2tlblsxXSl9KWApIDogZS5tZXNzYWdlO1xuICAgICAgaWYgKGVycklkeCAhPT0gbnVsbCAmJiBlcnJJZHggIT09IHZvaWQgMCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGVycklkeCA8PSBjb250ZXh0ID8gMCA6IGVycklkeCAtIGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGVuZCA9IGVycklkeCArIGNvbnRleHQgPj0gdHh0Lmxlbmd0aCA/IHR4dC5sZW5ndGggOiBlcnJJZHggKyBjb250ZXh0O1xuICAgICAgICBjb25zdCBzbGljZSA9IChzdGFydCA9PT0gMCA/IFwiXCIgOiBcIi4uLlwiKSArIHR4dC5zbGljZShzdGFydCwgZW5kKSArIChlbmQgPT09IHR4dC5sZW5ndGggPyBcIlwiIDogXCIuLi5cIik7XG4gICAgICAgIGNvbnN0IG5lYXIgPSB0eHQgPT09IHNsaWNlID8gXCJcIiA6IFwibmVhciBcIjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBtc2cgKyBgIHdoaWxlIHBhcnNpbmcgJHtuZWFyfSR7SlNPTi5zdHJpbmdpZnkoc2xpY2UpfWAsXG4gICAgICAgICAgcG9zaXRpb246IGVycklkeFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBtc2cgKyBgIHdoaWxlIHBhcnNpbmcgJyR7dHh0LnNsaWNlKDAsIGNvbnRleHQgKiAyKX0nYCxcbiAgICAgICAgICBwb3NpdGlvbjogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIEpTT05QYXJzZUVycm9yID0gY2xhc3MgZXh0ZW5kcyBTeW50YXhFcnJvciB7XG4gICAgICBjb25zdHJ1Y3RvcihlciwgdHh0LCBjb250ZXh0LCBjYWxsZXIpIHtcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgMjA7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gcGFyc2VFcnJvcihlciwgdHh0LCBjb250ZXh0KTtcbiAgICAgICAgc3VwZXIobWV0YWRhdGEubWVzc2FnZSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgbWV0YWRhdGEpO1xuICAgICAgICB0aGlzLmNvZGUgPSBcIkVKU09OUEFSU0VcIjtcbiAgICAgICAgdGhpcy5zeXN0ZW1FcnJvciA9IGVyO1xuICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBjYWxsZXIgfHwgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gICAgICB9XG4gICAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICAgIH1cbiAgICAgIHNldCBuYW1lKG4pIHtcbiAgICAgIH1cbiAgICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBrSW5kZW50ID0gU3ltYm9sLmZvcihcImluZGVudFwiKTtcbiAgICB2YXIga05ld2xpbmUgPSBTeW1ib2wuZm9yKFwibmV3bGluZVwiKTtcbiAgICB2YXIgZm9ybWF0UkUgPSAvXlxccypbe1xcW10oKD86XFxyP1xcbikrKShbXFxzXFx0XSopLztcbiAgICB2YXIgZW1wdHlSRSA9IC9eKD86XFx7XFx9fFxcW1xcXSkoKD86XFxyP1xcbikrKT8kLztcbiAgICB2YXIgcGFyc2VKc29uID0gKHR4dCwgcmV2aXZlciwgY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgcGFyc2VUZXh0ID0gc3RyaXBCT00odHh0KTtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IDIwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgWywgbmV3bGluZSA9IFwiXFxuXCIsIGluZGVudCA9IFwiICBcIl0gPSBwYXJzZVRleHQubWF0Y2goZW1wdHlSRSkgfHwgcGFyc2VUZXh0Lm1hdGNoKGZvcm1hdFJFKSB8fCBbLCBcIlwiLCBcIlwiXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShwYXJzZVRleHQsIHJldml2ZXIpO1xuICAgICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICByZXN1bHRba05ld2xpbmVdID0gbmV3bGluZTtcbiAgICAgICAgICByZXN1bHRba0luZGVudF0gPSBpbmRlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0eHQgIT09IFwic3RyaW5nXCIgJiYgIUJ1ZmZlci5pc0J1ZmZlcih0eHQpKSB7XG4gICAgICAgICAgY29uc3QgaXNFbXB0eUFycmF5ID0gQXJyYXkuaXNBcnJheSh0eHQpICYmIHR4dC5sZW5ndGggPT09IDA7XG4gICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgVHlwZUVycm9yKGBDYW5ub3QgcGFyc2UgJHtpc0VtcHR5QXJyYXkgPyBcImFuIGVtcHR5IGFycmF5XCIgOiBTdHJpbmcodHh0KX1gKSwge1xuICAgICAgICAgICAgY29kZTogXCJFSlNPTlBBUlNFXCIsXG4gICAgICAgICAgICBzeXN0ZW1FcnJvcjogZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBKU09OUGFyc2VFcnJvcihlLCBwYXJzZVRleHQsIGNvbnRleHQsIHBhcnNlSnNvbik7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgc3RyaXBCT00gPSAodHh0KSA9PiBTdHJpbmcodHh0KS5yZXBsYWNlKC9eXFx1RkVGRi8sIFwiXCIpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHBhcnNlSnNvbjtcbiAgICBwYXJzZUpzb24uSlNPTlBhcnNlRXJyb3IgPSBKU09OUGFyc2VFcnJvcjtcbiAgICBwYXJzZUpzb24ubm9FeGNlcHRpb25zID0gKHR4dCwgcmV2aXZlcikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyaXBCT00odHh0KSwgcmV2aXZlcik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9idWlsZCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9wYXJzZS1qc29uL25vZGVfbW9kdWxlcy9saW5lcy1hbmQtY29sdW1ucy9idWlsZC9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgZXhwb3J0czIuX19lc01vZHVsZSA9IHRydWU7XG4gICAgZXhwb3J0czIuTGluZXNBbmRDb2x1bW5zID0gdm9pZCAwO1xuICAgIHZhciBMRiA9IFwiXFxuXCI7XG4gICAgdmFyIENSID0gXCJcXHJcIjtcbiAgICB2YXIgTGluZXNBbmRDb2x1bW5zID0gZnVuY3Rpb24oKSB7XG4gICAgICBmdW5jdGlvbiBMaW5lc0FuZENvbHVtbnMyKHN0cmluZykge1xuICAgICAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICAgICAgdmFyIG9mZnNldHMgPSBbMF07XG4gICAgICAgIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IHN0cmluZy5sZW5ndGg7ICkge1xuICAgICAgICAgIHN3aXRjaCAoc3RyaW5nW29mZnNldF0pIHtcbiAgICAgICAgICAgIGNhc2UgTEY6XG4gICAgICAgICAgICAgIG9mZnNldCArPSBMRi5sZW5ndGg7XG4gICAgICAgICAgICAgIG9mZnNldHMucHVzaChvZmZzZXQpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ1I6XG4gICAgICAgICAgICAgIG9mZnNldCArPSBDUi5sZW5ndGg7XG4gICAgICAgICAgICAgIGlmIChzdHJpbmdbb2Zmc2V0XSA9PT0gTEYpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gTEYubGVuZ3RoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9mZnNldHMucHVzaChvZmZzZXQpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXRzID0gb2Zmc2V0cztcbiAgICAgIH1cbiAgICAgIExpbmVzQW5kQ29sdW1uczIucHJvdG90eXBlLmxvY2F0aW9uRm9ySW5kZXggPSBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5zdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxpbmUgPSAwO1xuICAgICAgICB2YXIgb2Zmc2V0cyA9IHRoaXMub2Zmc2V0cztcbiAgICAgICAgd2hpbGUgKG9mZnNldHNbbGluZSArIDFdIDw9IGluZGV4KSB7XG4gICAgICAgICAgbGluZSsrO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb2x1bW4gPSBpbmRleCAtIG9mZnNldHNbbGluZV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGluZSxcbiAgICAgICAgICBjb2x1bW5cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBMaW5lc0FuZENvbHVtbnMyLnByb3RvdHlwZS5pbmRleEZvckxvY2F0aW9uID0gZnVuY3Rpb24obG9jYXRpb24pIHtcbiAgICAgICAgdmFyIGxpbmUgPSBsb2NhdGlvbi5saW5lLCBjb2x1bW4gPSBsb2NhdGlvbi5jb2x1bW47XG4gICAgICAgIGlmIChsaW5lIDwgMCB8fCBsaW5lID49IHRoaXMub2Zmc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29sdW1uIDwgMCB8fCBjb2x1bW4gPiB0aGlzLmxlbmd0aE9mTGluZShsaW5lKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9mZnNldHNbbGluZV0gKyBjb2x1bW47XG4gICAgICB9O1xuICAgICAgTGluZXNBbmRDb2x1bW5zMi5wcm90b3R5cGUubGVuZ3RoT2ZMaW5lID0gZnVuY3Rpb24obGluZSkge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXRzW2xpbmVdO1xuICAgICAgICB2YXIgbmV4dE9mZnNldCA9IGxpbmUgPT09IHRoaXMub2Zmc2V0cy5sZW5ndGggLSAxID8gdGhpcy5zdHJpbmcubGVuZ3RoIDogdGhpcy5vZmZzZXRzW2xpbmUgKyAxXTtcbiAgICAgICAgcmV0dXJuIG5leHRPZmZzZXQgLSBvZmZzZXQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIExpbmVzQW5kQ29sdW1uczI7XG4gICAgfSgpO1xuICAgIGV4cG9ydHMyLkxpbmVzQW5kQ29sdW1ucyA9IExpbmVzQW5kQ29sdW1ucztcbiAgICBleHBvcnRzMltcImRlZmF1bHRcIl0gPSBMaW5lc0FuZENvbHVtbnM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfanNfdG9rZW5zID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2pzLXRva2Vucy9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gLygoWydcIl0pKD86KD8hXFwyfFxcXFwpLnxcXFxcKD86XFxyXFxufFtcXHNcXFNdKSkqKFxcMik/fGAoPzpbXmBcXFxcJF18XFxcXFtcXHNcXFNdfFxcJCg/IVxceyl8XFwkXFx7KD86W157fV18XFx7W159XSpcXH0/KSpcXH0/KSooYCk/KXwoXFwvXFwvLiopfChcXC9cXCooPzpbXipdfFxcKig/IVxcLykpKihcXCpcXC8pPyl8KFxcLyg/IVxcKikoPzpcXFsoPzooPyFbXFxdXFxcXF0pLnxcXFxcLikqXFxdfCg/IVtcXC9cXF1cXFxcXSkufFxcXFwuKStcXC8oPzooPyFcXHMqKD86XFxifFtcXHUwMDgwLVxcdUZGRkYkXFxcXCdcIn4oe118WytcXC0hXSg/IT0pfFxcLj9cXGQpKXxbZ21peXVzXXsxLDZ9XFxiKD8hW1xcdTAwODAtXFx1RkZGRiRcXFxcXXxcXHMqKD86WytcXC0qJSZ8Xjw+IT0/KHtdfFxcLyg/IVtcXC8qXSkpKSkpfCgwW3hYXVtcXGRhLWZBLUZdK3wwW29PXVswLTddK3wwW2JCXVswMV0rfCg/OlxcZCpcXC5cXGQrfFxcZCtcXC4/KSg/OltlRV1bKy1dP1xcZCspPyl8KCg/IVxcZCkoPzooPyFcXHMpWyRcXHdcXHUwMDgwLVxcdUZGRkZdfFxcXFx1W1xcZGEtZkEtRl17NH18XFxcXHVcXHtbXFxkYS1mQS1GXStcXH0pKyl8KC0tfFxcK1xcK3wmJnxcXHxcXHx8PT58XFwuezN9fCg/OlsrXFwtXFwvJSZ8Xl18XFwqezEsMn18PHsxLDJ9fD57MSwzfXwhPT98PXsxLDJ9KT0/fFs/fi4sOjtbXFxdKCl7fV0pfChcXHMrKXwoXiR8W1xcc1xcU10pL2c7XG4gICAgZXhwb3J0czIubWF0Y2hUb1Rva2VuID0gZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgIHZhciB0b2tlbiA9IHtcbiAgICAgICAgdHlwZTogXCJpbnZhbGlkXCIsXG4gICAgICAgIHZhbHVlOiBtYXRjaFswXSxcbiAgICAgICAgY2xvc2VkOiB2b2lkIDBcbiAgICAgIH07XG4gICAgICBpZiAobWF0Y2hbMV0pXG4gICAgICAgIHRva2VuLnR5cGUgPSBcInN0cmluZ1wiLCB0b2tlbi5jbG9zZWQgPSAhIShtYXRjaFszXSB8fCBtYXRjaFs0XSk7XG4gICAgICBlbHNlIGlmIChtYXRjaFs1XSlcbiAgICAgICAgdG9rZW4udHlwZSA9IFwiY29tbWVudFwiO1xuICAgICAgZWxzZSBpZiAobWF0Y2hbNl0pXG4gICAgICAgIHRva2VuLnR5cGUgPSBcImNvbW1lbnRcIiwgdG9rZW4uY2xvc2VkID0gISFtYXRjaFs3XTtcbiAgICAgIGVsc2UgaWYgKG1hdGNoWzhdKVxuICAgICAgICB0b2tlbi50eXBlID0gXCJyZWdleFwiO1xuICAgICAgZWxzZSBpZiAobWF0Y2hbOV0pXG4gICAgICAgIHRva2VuLnR5cGUgPSBcIm51bWJlclwiO1xuICAgICAgZWxzZSBpZiAobWF0Y2hbMTBdKVxuICAgICAgICB0b2tlbi50eXBlID0gXCJuYW1lXCI7XG4gICAgICBlbHNlIGlmIChtYXRjaFsxMV0pXG4gICAgICAgIHRva2VuLnR5cGUgPSBcInB1bmN0dWF0b3JcIjtcbiAgICAgIGVsc2UgaWYgKG1hdGNoWzEyXSlcbiAgICAgICAgdG9rZW4udHlwZSA9IFwid2hpdGVzcGFjZVwiO1xuICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaWRlbnRpZmllciA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9AYmFiZWwvaGVscGVyLXZhbGlkYXRvci1pZGVudGlmaWVyL2xpYi9pZGVudGlmaWVyLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmlzSWRlbnRpZmllckNoYXIgPSBpc0lkZW50aWZpZXJDaGFyO1xuICAgIGV4cG9ydHMyLmlzSWRlbnRpZmllck5hbWUgPSBpc0lkZW50aWZpZXJOYW1lO1xuICAgIGV4cG9ydHMyLmlzSWRlbnRpZmllclN0YXJ0ID0gaXNJZGVudGlmaWVyU3RhcnQ7XG4gICAgdmFyIG5vbkFTQ0lJaWRlbnRpZmllclN0YXJ0Q2hhcnMgPSBcIlxceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYwLVxcdTA1ODhcXHUwNUQwLVxcdTA1RUFcXHUwNUVGLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDg3MC1cXHUwODg3XFx1MDg4OS1cXHUwODhFXFx1MDhBMC1cXHUwOEM5XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNURcXHUwQzYwXFx1MEM2MVxcdTBDODBcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNC1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDU0LVxcdTBENTZcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg2LVxcdTBFOEFcXHUwRThDLVxcdTBFQTNcXHUwRUE1XFx1MEVBNy1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MTFcXHUxNzFGLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3OFxcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRDXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQzkwLVxcdTFDQkFcXHUxQ0JELVxcdTFDQkZcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjNcXHUxQ0Y1XFx1MUNGNlxcdTFDRkFcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE4LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlCLVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkZcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkZcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQkZcXHU0RTAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5RFxcdUE2QTAtXFx1QTZFRlxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTdDQVxcdUE3RDBcXHVBN0QxXFx1QTdEM1xcdUE3RDUtXFx1QTdEOVxcdUE3RjItXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QThGRVxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNjlcXHVBQjcwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENcIjtcbiAgICB2YXIgbm9uQVNDSUlpZGVudGlmaWVyQ2hhcnMgPSBcIlxcdTIwMENcXHUyMDBEXFx4QjdcXHUwMzAwLVxcdTAzNkZcXHUwMzg3XFx1MDQ4My1cXHUwNDg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDYxMC1cXHUwNjFBXFx1MDY0Qi1cXHUwNjY5XFx1MDY3MFxcdTA2RDYtXFx1MDZEQ1xcdTA2REYtXFx1MDZFNFxcdTA2RTdcXHUwNkU4XFx1MDZFQS1cXHUwNkVEXFx1MDZGMC1cXHUwNkY5XFx1MDcxMVxcdTA3MzAtXFx1MDc0QVxcdTA3QTYtXFx1MDdCMFxcdTA3QzAtXFx1MDdDOVxcdTA3RUItXFx1MDdGM1xcdTA3RkRcXHUwODE2LVxcdTA4MTlcXHUwODFCLVxcdTA4MjNcXHUwODI1LVxcdTA4MjdcXHUwODI5LVxcdTA4MkRcXHUwODU5LVxcdTA4NUJcXHUwODk4LVxcdTA4OUZcXHUwOENBLVxcdTA4RTFcXHUwOEUzLVxcdTA5MDNcXHUwOTNBLVxcdTA5M0NcXHUwOTNFLVxcdTA5NEZcXHUwOTUxLVxcdTA5NTdcXHUwOTYyXFx1MDk2M1xcdTA5NjYtXFx1MDk2RlxcdTA5ODEtXFx1MDk4M1xcdTA5QkNcXHUwOUJFLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRFxcdTA5RDdcXHUwOUUyXFx1MDlFM1xcdTA5RTYtXFx1MDlFRlxcdTA5RkVcXHUwQTAxLVxcdTBBMDNcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE2Ni1cXHUwQTcxXFx1MEE3NVxcdTBBODEtXFx1MEE4M1xcdTBBQkNcXHUwQUJFLVxcdTBBQzVcXHUwQUM3LVxcdTBBQzlcXHUwQUNCLVxcdTBBQ0RcXHUwQUUyXFx1MEFFM1xcdTBBRTYtXFx1MEFFRlxcdTBBRkEtXFx1MEFGRlxcdTBCMDEtXFx1MEIwM1xcdTBCM0NcXHUwQjNFLVxcdTBCNDRcXHUwQjQ3XFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNTUtXFx1MEI1N1xcdTBCNjJcXHUwQjYzXFx1MEI2Ni1cXHUwQjZGXFx1MEI4MlxcdTBCQkUtXFx1MEJDMlxcdTBCQzYtXFx1MEJDOFxcdTBCQ0EtXFx1MEJDRFxcdTBCRDdcXHUwQkU2LVxcdTBCRUZcXHUwQzAwLVxcdTBDMDRcXHUwQzNDXFx1MEMzRS1cXHUwQzQ0XFx1MEM0Ni1cXHUwQzQ4XFx1MEM0QS1cXHUwQzREXFx1MEM1NVxcdTBDNTZcXHUwQzYyXFx1MEM2M1xcdTBDNjYtXFx1MEM2RlxcdTBDODEtXFx1MEM4M1xcdTBDQkNcXHUwQ0JFLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDRTJcXHUwQ0UzXFx1MENFNi1cXHUwQ0VGXFx1MEQwMC1cXHUwRDAzXFx1MEQzQlxcdTBEM0NcXHUwRDNFLVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENERcXHUwRDU3XFx1MEQ2MlxcdTBENjNcXHUwRDY2LVxcdTBENkZcXHUwRDgxLVxcdTBEODNcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERTYtXFx1MERFRlxcdTBERjJcXHUwREYzXFx1MEUzMVxcdTBFMzQtXFx1MEUzQVxcdTBFNDctXFx1MEU0RVxcdTBFNTAtXFx1MEU1OVxcdTBFQjFcXHUwRUI0LVxcdTBFQkNcXHUwRUM4LVxcdTBFQ0RcXHUwRUQwLVxcdTBFRDlcXHUwRjE4XFx1MEYxOVxcdTBGMjAtXFx1MEYyOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0VcXHUwRjNGXFx1MEY3MS1cXHUwRjg0XFx1MEY4NlxcdTBGODdcXHUwRjhELVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAyQi1cXHUxMDNFXFx1MTA0MC1cXHUxMDQ5XFx1MTA1Ni1cXHUxMDU5XFx1MTA1RS1cXHUxMDYwXFx1MTA2Mi1cXHUxMDY0XFx1MTA2Ny1cXHUxMDZEXFx1MTA3MS1cXHUxMDc0XFx1MTA4Mi1cXHUxMDhEXFx1MTA4Ri1cXHUxMDlEXFx1MTM1RC1cXHUxMzVGXFx1MTM2OS1cXHUxMzcxXFx1MTcxMi1cXHUxNzE1XFx1MTczMi1cXHUxNzM0XFx1MTc1MlxcdTE3NTNcXHUxNzcyXFx1MTc3M1xcdTE3QjQtXFx1MTdEM1xcdTE3RERcXHUxN0UwLVxcdTE3RTlcXHUxODBCLVxcdTE4MERcXHUxODBGLVxcdTE4MTlcXHUxOEE5XFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTk0Ni1cXHUxOTRGXFx1MTlEMC1cXHUxOURBXFx1MUExNy1cXHUxQTFCXFx1MUE1NS1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3Ri1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUFCMC1cXHUxQUJEXFx1MUFCRi1cXHUxQUNFXFx1MUIwMC1cXHUxQjA0XFx1MUIzNC1cXHUxQjQ0XFx1MUI1MC1cXHUxQjU5XFx1MUI2Qi1cXHUxQjczXFx1MUI4MC1cXHUxQjgyXFx1MUJBMS1cXHUxQkFEXFx1MUJCMC1cXHUxQkI5XFx1MUJFNi1cXHUxQkYzXFx1MUMyNC1cXHUxQzM3XFx1MUM0MC1cXHUxQzQ5XFx1MUM1MC1cXHUxQzU5XFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0U4XFx1MUNFRFxcdTFDRjRcXHUxQ0Y3LVxcdTFDRjlcXHUxREMwLVxcdTFERkZcXHUyMDNGXFx1MjA0MFxcdTIwNTRcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MkNFRi1cXHUyQ0YxXFx1MkQ3RlxcdTJERTAtXFx1MkRGRlxcdTMwMkEtXFx1MzAyRlxcdTMwOTlcXHUzMDlBXFx1QTYyMC1cXHVBNjI5XFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2OUVcXHVBNjlGXFx1QTZGMFxcdUE2RjFcXHVBODAyXFx1QTgwNlxcdUE4MEJcXHVBODIzLVxcdUE4MjdcXHVBODJDXFx1QTg4MFxcdUE4ODFcXHVBOEI0LVxcdUE4QzVcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjFcXHVBOEZGLVxcdUE5MDlcXHVBOTI2LVxcdUE5MkRcXHVBOTQ3LVxcdUE5NTNcXHVBOTgwLVxcdUE5ODNcXHVBOUIzLVxcdUE5QzBcXHVBOUQwLVxcdUE5RDlcXHVBOUU1XFx1QTlGMC1cXHVBOUY5XFx1QUEyOS1cXHVBQTM2XFx1QUE0M1xcdUFBNENcXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE3Qi1cXHVBQTdEXFx1QUFCMFxcdUFBQjItXFx1QUFCNFxcdUFBQjdcXHVBQUI4XFx1QUFCRVxcdUFBQkZcXHVBQUMxXFx1QUFFQi1cXHVBQUVGXFx1QUFGNVxcdUFBRjZcXHVBQkUzLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUFCRjAtXFx1QUJGOVxcdUZCMUVcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkZcXHVGRTMzXFx1RkUzNFxcdUZFNEQtXFx1RkU0RlxcdUZGMTAtXFx1RkYxOVxcdUZGM0ZcIjtcbiAgICB2YXIgbm9uQVNDSUlpZGVudGlmaWVyU3RhcnQgPSBuZXcgUmVnRXhwKFwiW1wiICsgbm9uQVNDSUlpZGVudGlmaWVyU3RhcnRDaGFycyArIFwiXVwiKTtcbiAgICB2YXIgbm9uQVNDSUlpZGVudGlmaWVyID0gbmV3IFJlZ0V4cChcIltcIiArIG5vbkFTQ0lJaWRlbnRpZmllclN0YXJ0Q2hhcnMgKyBub25BU0NJSWlkZW50aWZpZXJDaGFycyArIFwiXVwiKTtcbiAgICBub25BU0NJSWlkZW50aWZpZXJTdGFydENoYXJzID0gbm9uQVNDSUlpZGVudGlmaWVyQ2hhcnMgPSBudWxsO1xuICAgIHZhciBhc3RyYWxJZGVudGlmaWVyU3RhcnRDb2RlcyA9IFswLCAxMSwgMiwgMjUsIDIsIDE4LCAyLCAxLCAyLCAxNCwgMywgMTMsIDM1LCAxMjIsIDcwLCA1MiwgMjY4LCAyOCwgNCwgNDgsIDQ4LCAzMSwgMTQsIDI5LCA2LCAzNywgMTEsIDI5LCAzLCAzNSwgNSwgNywgMiwgNCwgNDMsIDE1NywgMTksIDM1LCA1LCAzNSwgNSwgMzksIDksIDUxLCAxMywgMTAsIDIsIDE0LCAyLCA2LCAyLCAxLCAyLCAxMCwgMiwgMTQsIDIsIDYsIDIsIDEsIDY4LCAzMTAsIDEwLCAyMSwgMTEsIDcsIDI1LCA1LCAyLCA0MSwgMiwgOCwgNzAsIDUsIDMsIDAsIDIsIDQzLCAyLCAxLCA0LCAwLCAzLCAyMiwgMTEsIDIyLCAxMCwgMzAsIDY2LCAxOCwgMiwgMSwgMTEsIDIxLCAxMSwgMjUsIDcxLCA1NSwgNywgMSwgNjUsIDAsIDE2LCAzLCAyLCAyLCAyLCAyOCwgNDMsIDI4LCA0LCAyOCwgMzYsIDcsIDIsIDI3LCAyOCwgNTMsIDExLCAyMSwgMTEsIDE4LCAxNCwgMTcsIDExMSwgNzIsIDU2LCA1MCwgMTQsIDUwLCAxNCwgMzUsIDM0OSwgNDEsIDcsIDEsIDc5LCAyOCwgMTEsIDAsIDksIDIxLCA0MywgMTcsIDQ3LCAyMCwgMjgsIDIyLCAxMywgNTIsIDU4LCAxLCAzLCAwLCAxNCwgNDQsIDMzLCAyNCwgMjcsIDM1LCAzMCwgMCwgMywgMCwgOSwgMzQsIDQsIDAsIDEzLCA0NywgMTUsIDMsIDIyLCAwLCAyLCAwLCAzNiwgMTcsIDIsIDI0LCA4NSwgNiwgMiwgMCwgMiwgMywgMiwgMTQsIDIsIDksIDgsIDQ2LCAzOSwgNywgMywgMSwgMywgMjEsIDIsIDYsIDIsIDEsIDIsIDQsIDQsIDAsIDE5LCAwLCAxMywgNCwgMTU5LCA1MiwgMTksIDMsIDIxLCAyLCAzMSwgNDcsIDIxLCAxLCAyLCAwLCAxODUsIDQ2LCA0MiwgMywgMzcsIDQ3LCAyMSwgMCwgNjAsIDQyLCAxNCwgMCwgNzIsIDI2LCAzOCwgNiwgMTg2LCA0MywgMTE3LCA2MywgMzIsIDcsIDMsIDAsIDMsIDcsIDIsIDEsIDIsIDIzLCAxNiwgMCwgMiwgMCwgOTUsIDcsIDMsIDM4LCAxNywgMCwgMiwgMCwgMjksIDAsIDExLCAzOSwgOCwgMCwgMjIsIDAsIDEyLCA0NSwgMjAsIDAsIDE5LCA3MiwgMjY0LCA4LCAyLCAzNiwgMTgsIDAsIDUwLCAyOSwgMTEzLCA2LCAyLCAxLCAyLCAzNywgMjIsIDAsIDI2LCA1LCAyLCAxLCAyLCAzMSwgMTUsIDAsIDMyOCwgMTgsIDE5MCwgMCwgODAsIDkyMSwgMTAzLCAxMTAsIDE4LCAxOTUsIDI2MzcsIDk2LCAxNiwgMTA3MCwgNDA1MCwgNTgyLCA4NjM0LCA1NjgsIDgsIDMwLCAxOCwgNzgsIDE4LCAyOSwgMTksIDQ3LCAxNywgMywgMzIsIDIwLCA2LCAxOCwgNjg5LCA2MywgMTI5LCA3NCwgNiwgMCwgNjcsIDEyLCA2NSwgMSwgMiwgMCwgMjksIDYxMzUsIDksIDEyMzcsIDQzLCA4LCA4OTM2LCAzLCAyLCA2LCAyLCAxLCAyLCAyOTAsIDQ2LCAyLCAxOCwgMywgOSwgMzk1LCAyMzA5LCAxMDYsIDYsIDEyLCA0LCA4LCA4LCA5LCA1OTkxLCA4NCwgMiwgNzAsIDIsIDEsIDMsIDAsIDMsIDEsIDMsIDMsIDIsIDExLCAyLCAwLCAyLCA2LCAyLCA2NCwgMiwgMywgMywgNywgMiwgNiwgMiwgMjcsIDIsIDMsIDIsIDQsIDIsIDAsIDQsIDYsIDIsIDMzOSwgMywgMjQsIDIsIDI0LCAyLCAzMCwgMiwgMjQsIDIsIDMwLCAyLCAyNCwgMiwgMzAsIDIsIDI0LCAyLCAzMCwgMiwgMjQsIDIsIDcsIDE4NDUsIDMwLCA0ODIsIDQ0LCAxMSwgNiwgMTcsIDAsIDMyMiwgMjksIDE5LCA0MywgMTI2OSwgNiwgMiwgMywgMiwgMSwgMiwgMTQsIDIsIDE5NiwgNjAsIDY3LCA4LCAwLCAxMjA1LCAzLCAyLCAyNiwgMiwgMSwgMiwgMCwgMywgMCwgMiwgOSwgMiwgMywgMiwgMCwgMiwgMCwgNywgMCwgNSwgMCwgMiwgMCwgMiwgMCwgMiwgMiwgMiwgMSwgMiwgMCwgMywgMCwgMiwgMCwgMiwgMCwgMiwgMCwgMiwgMCwgMiwgMSwgMiwgMCwgMywgMywgMiwgNiwgMiwgMywgMiwgMywgMiwgMCwgMiwgOSwgMiwgMTYsIDYsIDIsIDIsIDQsIDIsIDE2LCA0NDIxLCA0MjcxOSwgMzMsIDQxNTIsIDgsIDIyMSwgMywgNTc2MSwgMTUsIDc0NzIsIDMxMDQsIDU0MSwgMTUwNywgNDkzOF07XG4gICAgdmFyIGFzdHJhbElkZW50aWZpZXJDb2RlcyA9IFs1MDksIDAsIDIyNywgMCwgMTUwLCA0LCAyOTQsIDksIDEzNjgsIDIsIDIsIDEsIDYsIDMsIDQxLCAyLCA1LCAwLCAxNjYsIDEsIDU3NCwgMywgOSwgOSwgMzcwLCAxLCAxNTQsIDEwLCA1MCwgMywgMTIzLCAyLCA1NCwgMTQsIDMyLCAxMCwgMywgMSwgMTEsIDMsIDQ2LCAxMCwgOCwgMCwgNDYsIDksIDcsIDIsIDM3LCAxMywgMiwgOSwgNiwgMSwgNDUsIDAsIDEzLCAyLCA0OSwgMTMsIDksIDMsIDIsIDExLCA4MywgMTEsIDcsIDAsIDE2MSwgMTEsIDYsIDksIDcsIDMsIDU2LCAxLCAyLCA2LCAzLCAxLCAzLCAyLCAxMCwgMCwgMTEsIDEsIDMsIDYsIDQsIDQsIDE5MywgMTcsIDEwLCA5LCA1LCAwLCA4MiwgMTksIDEzLCA5LCAyMTQsIDYsIDMsIDgsIDI4LCAxLCA4MywgMTYsIDE2LCA5LCA4MiwgMTIsIDksIDksIDg0LCAxNCwgNSwgOSwgMjQzLCAxNCwgMTY2LCA5LCA3MSwgNSwgMiwgMSwgMywgMywgMiwgMCwgMiwgMSwgMTMsIDksIDEyMCwgNiwgMywgNiwgNCwgMCwgMjksIDksIDQxLCA2LCAyLCAzLCA5LCAwLCAxMCwgMTAsIDQ3LCAxNSwgNDA2LCA3LCAyLCA3LCAxNywgOSwgNTcsIDIxLCAyLCAxMywgMTIzLCA1LCA0LCAwLCAyLCAxLCAyLCA2LCAyLCAwLCA5LCA5LCA0OSwgNCwgMiwgMSwgMiwgNCwgOSwgOSwgMzMwLCAzLCAxOTMwNiwgOSwgODcsIDksIDM5LCA0LCA2MCwgNiwgMjYsIDksIDEwMTQsIDAsIDIsIDU0LCA4LCAzLCA4MiwgMCwgMTIsIDEsIDE5NjI4LCAxLCA0NzA2LCA0NSwgMywgMjIsIDU0MywgNCwgNCwgNSwgOSwgNywgMywgNiwgMzEsIDMsIDE0OSwgMiwgMTQxOCwgNDksIDUxMywgNTQsIDUsIDQ5LCA5LCAwLCAxNSwgMCwgMjMsIDQsIDIsIDE0LCAxMzYxLCA2LCAyLCAxNiwgMywgNiwgMiwgMSwgMiwgNCwgMjYyLCA2LCAxMCwgOSwgMzU3LCAwLCA2MiwgMTMsIDE0OTUsIDYsIDExMCwgNiwgNiwgOSwgNDc1OSwgOSwgNzg3NzE5LCAyMzldO1xuICAgIGZ1bmN0aW9uIGlzSW5Bc3RyYWxTZXQoY29kZSwgc2V0KSB7XG4gICAgICBsZXQgcG9zID0gNjU1MzY7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gc2V0Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHBvcyArPSBzZXRbaV07XG4gICAgICAgIGlmIChwb3MgPiBjb2RlKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcG9zICs9IHNldFtpICsgMV07XG4gICAgICAgIGlmIChwb3MgPj0gY29kZSlcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyU3RhcnQoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPCA2NSlcbiAgICAgICAgcmV0dXJuIGNvZGUgPT09IDM2O1xuICAgICAgaWYgKGNvZGUgPD0gOTApXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGNvZGUgPCA5NylcbiAgICAgICAgcmV0dXJuIGNvZGUgPT09IDk1O1xuICAgICAgaWYgKGNvZGUgPD0gMTIyKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChjb2RlIDw9IDY1NTM1KSB7XG4gICAgICAgIHJldHVybiBjb2RlID49IDE3MCAmJiBub25BU0NJSWlkZW50aWZpZXJTdGFydC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzSW5Bc3RyYWxTZXQoY29kZSwgYXN0cmFsSWRlbnRpZmllclN0YXJ0Q29kZXMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJDaGFyKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlIDwgNDgpXG4gICAgICAgIHJldHVybiBjb2RlID09PSAzNjtcbiAgICAgIGlmIChjb2RlIDwgNTgpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGNvZGUgPCA2NSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKGNvZGUgPD0gOTApXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGNvZGUgPCA5NylcbiAgICAgICAgcmV0dXJuIGNvZGUgPT09IDk1O1xuICAgICAgaWYgKGNvZGUgPD0gMTIyKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChjb2RlIDw9IDY1NTM1KSB7XG4gICAgICAgIHJldHVybiBjb2RlID49IDE3MCAmJiBub25BU0NJSWlkZW50aWZpZXIudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0luQXN0cmFsU2V0KGNvZGUsIGFzdHJhbElkZW50aWZpZXJTdGFydENvZGVzKSB8fCBpc0luQXN0cmFsU2V0KGNvZGUsIGFzdHJhbElkZW50aWZpZXJDb2Rlcyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWUobmFtZSkge1xuICAgICAgbGV0IGlzRmlyc3QgPSB0cnVlO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBjcCA9IG5hbWUuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKChjcCAmIDY0NTEyKSA9PT0gNTUyOTYgJiYgaSArIDEgPCBuYW1lLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHRyYWlsID0gbmFtZS5jaGFyQ29kZUF0KCsraSk7XG4gICAgICAgICAgaWYgKCh0cmFpbCAmIDY0NTEyKSA9PT0gNTYzMjApIHtcbiAgICAgICAgICAgIGNwID0gNjU1MzYgKyAoKGNwICYgMTAyMykgPDwgMTApICsgKHRyYWlsICYgMTAyMyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpcnN0KSB7XG4gICAgICAgICAgaXNGaXJzdCA9IGZhbHNlO1xuICAgICAgICAgIGlmICghaXNJZGVudGlmaWVyU3RhcnQoY3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFpc0lkZW50aWZpZXJDaGFyKGNwKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICFpc0ZpcnN0O1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9rZXl3b3JkID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZpZXIvbGliL2tleXdvcmQuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuaXNLZXl3b3JkID0gaXNLZXl3b3JkO1xuICAgIGV4cG9ydHMyLmlzUmVzZXJ2ZWRXb3JkID0gaXNSZXNlcnZlZFdvcmQ7XG4gICAgZXhwb3J0czIuaXNTdHJpY3RCaW5kT25seVJlc2VydmVkV29yZCA9IGlzU3RyaWN0QmluZE9ubHlSZXNlcnZlZFdvcmQ7XG4gICAgZXhwb3J0czIuaXNTdHJpY3RCaW5kUmVzZXJ2ZWRXb3JkID0gaXNTdHJpY3RCaW5kUmVzZXJ2ZWRXb3JkO1xuICAgIGV4cG9ydHMyLmlzU3RyaWN0UmVzZXJ2ZWRXb3JkID0gaXNTdHJpY3RSZXNlcnZlZFdvcmQ7XG4gICAgdmFyIHJlc2VydmVkV29yZHMgPSB7XG4gICAgICBrZXl3b3JkOiBbXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNvbnRpbnVlXCIsIFwiZGVidWdnZXJcIiwgXCJkZWZhdWx0XCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZ1bmN0aW9uXCIsIFwiaWZcIiwgXCJyZXR1cm5cIiwgXCJzd2l0Y2hcIiwgXCJ0aHJvd1wiLCBcInRyeVwiLCBcInZhclwiLCBcImNvbnN0XCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwibmV3XCIsIFwidGhpc1wiLCBcInN1cGVyXCIsIFwiY2xhc3NcIiwgXCJleHRlbmRzXCIsIFwiZXhwb3J0XCIsIFwiaW1wb3J0XCIsIFwibnVsbFwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcImluXCIsIFwiaW5zdGFuY2VvZlwiLCBcInR5cGVvZlwiLCBcInZvaWRcIiwgXCJkZWxldGVcIl0sXG4gICAgICBzdHJpY3Q6IFtcImltcGxlbWVudHNcIiwgXCJpbnRlcmZhY2VcIiwgXCJsZXRcIiwgXCJwYWNrYWdlXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInN0YXRpY1wiLCBcInlpZWxkXCJdLFxuICAgICAgc3RyaWN0QmluZDogW1wiZXZhbFwiLCBcImFyZ3VtZW50c1wiXVxuICAgIH07XG4gICAgdmFyIGtleXdvcmRzID0gbmV3IFNldChyZXNlcnZlZFdvcmRzLmtleXdvcmQpO1xuICAgIHZhciByZXNlcnZlZFdvcmRzU3RyaWN0U2V0ID0gbmV3IFNldChyZXNlcnZlZFdvcmRzLnN0cmljdCk7XG4gICAgdmFyIHJlc2VydmVkV29yZHNTdHJpY3RCaW5kU2V0ID0gbmV3IFNldChyZXNlcnZlZFdvcmRzLnN0cmljdEJpbmQpO1xuICAgIGZ1bmN0aW9uIGlzUmVzZXJ2ZWRXb3JkKHdvcmQsIGluTW9kdWxlKSB7XG4gICAgICByZXR1cm4gaW5Nb2R1bGUgJiYgd29yZCA9PT0gXCJhd2FpdFwiIHx8IHdvcmQgPT09IFwiZW51bVwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1N0cmljdFJlc2VydmVkV29yZCh3b3JkLCBpbk1vZHVsZSkge1xuICAgICAgcmV0dXJuIGlzUmVzZXJ2ZWRXb3JkKHdvcmQsIGluTW9kdWxlKSB8fCByZXNlcnZlZFdvcmRzU3RyaWN0U2V0Lmhhcyh3b3JkKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTdHJpY3RCaW5kT25seVJlc2VydmVkV29yZCh3b3JkKSB7XG4gICAgICByZXR1cm4gcmVzZXJ2ZWRXb3Jkc1N0cmljdEJpbmRTZXQuaGFzKHdvcmQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1N0cmljdEJpbmRSZXNlcnZlZFdvcmQod29yZCwgaW5Nb2R1bGUpIHtcbiAgICAgIHJldHVybiBpc1N0cmljdFJlc2VydmVkV29yZCh3b3JkLCBpbk1vZHVsZSkgfHwgaXNTdHJpY3RCaW5kT25seVJlc2VydmVkV29yZCh3b3JkKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNLZXl3b3JkKHdvcmQpIHtcbiAgICAgIHJldHVybiBrZXl3b3Jkcy5oYXMod29yZCk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2xpYiA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9AYmFiZWwvaGVscGVyLXZhbGlkYXRvci1pZGVudGlmaWVyL2xpYi9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiaXNJZGVudGlmaWVyQ2hhclwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9pZGVudGlmaWVyLmlzSWRlbnRpZmllckNoYXI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcImlzSWRlbnRpZmllck5hbWVcIiwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfaWRlbnRpZmllci5pc0lkZW50aWZpZXJOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJpc0lkZW50aWZpZXJTdGFydFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9pZGVudGlmaWVyLmlzSWRlbnRpZmllclN0YXJ0O1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJpc0tleXdvcmRcIiwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfa2V5d29yZC5pc0tleXdvcmQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcImlzUmVzZXJ2ZWRXb3JkXCIsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2tleXdvcmQuaXNSZXNlcnZlZFdvcmQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcImlzU3RyaWN0QmluZE9ubHlSZXNlcnZlZFdvcmRcIiwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfa2V5d29yZC5pc1N0cmljdEJpbmRPbmx5UmVzZXJ2ZWRXb3JkO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJpc1N0cmljdEJpbmRSZXNlcnZlZFdvcmRcIiwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfa2V5d29yZC5pc1N0cmljdEJpbmRSZXNlcnZlZFdvcmQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcImlzU3RyaWN0UmVzZXJ2ZWRXb3JkXCIsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2tleXdvcmQuaXNTdHJpY3RSZXNlcnZlZFdvcmQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIF9pZGVudGlmaWVyID0gcmVxdWlyZV9pZGVudGlmaWVyKCk7XG4gICAgdmFyIF9rZXl3b3JkID0gcmVxdWlyZV9rZXl3b3JkKCk7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZXNjYXBlX3N0cmluZ19yZWdleHAgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvQGJhYmVsL2hpZ2hsaWdodC9ub2RlX21vZHVsZXMvZXNjYXBlLXN0cmluZy1yZWdleHAvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBtYXRjaE9wZXJhdG9yc1JlID0gL1t8XFxcXHt9KClbXFxdXiQrKj8uXS9nO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgaWYgKHR5cGVvZiBzdHIgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKG1hdGNoT3BlcmF0b3JzUmUsIFwiXFxcXCQmXCIpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29sb3JfbmFtZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb2xvci1uYW1lL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXG4gICAgICBcImFudGlxdWV3aGl0ZVwiOiBbMjUwLCAyMzUsIDIxNV0sXG4gICAgICBcImFxdWFcIjogWzAsIDI1NSwgMjU1XSxcbiAgICAgIFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXG4gICAgICBcImF6dXJlXCI6IFsyNDAsIDI1NSwgMjU1XSxcbiAgICAgIFwiYmVpZ2VcIjogWzI0NSwgMjQ1LCAyMjBdLFxuICAgICAgXCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxuICAgICAgXCJibGFja1wiOiBbMCwgMCwgMF0sXG4gICAgICBcImJsYW5jaGVkYWxtb25kXCI6IFsyNTUsIDIzNSwgMjA1XSxcbiAgICAgIFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcbiAgICAgIFwiYmx1ZXZpb2xldFwiOiBbMTM4LCA0MywgMjI2XSxcbiAgICAgIFwiYnJvd25cIjogWzE2NSwgNDIsIDQyXSxcbiAgICAgIFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcbiAgICAgIFwiY2FkZXRibHVlXCI6IFs5NSwgMTU4LCAxNjBdLFxuICAgICAgXCJjaGFydHJldXNlXCI6IFsxMjcsIDI1NSwgMF0sXG4gICAgICBcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcbiAgICAgIFwiY29yYWxcIjogWzI1NSwgMTI3LCA4MF0sXG4gICAgICBcImNvcm5mbG93ZXJibHVlXCI6IFsxMDAsIDE0OSwgMjM3XSxcbiAgICAgIFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxuICAgICAgXCJjcmltc29uXCI6IFsyMjAsIDIwLCA2MF0sXG4gICAgICBcImN5YW5cIjogWzAsIDI1NSwgMjU1XSxcbiAgICAgIFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXG4gICAgICBcImRhcmtjeWFuXCI6IFswLCAxMzksIDEzOV0sXG4gICAgICBcImRhcmtnb2xkZW5yb2RcIjogWzE4NCwgMTM0LCAxMV0sXG4gICAgICBcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcbiAgICAgIFwiZGFya2dyZWVuXCI6IFswLCAxMDAsIDBdLFxuICAgICAgXCJkYXJrZ3JleVwiOiBbMTY5LCAxNjksIDE2OV0sXG4gICAgICBcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXG4gICAgICBcImRhcmttYWdlbnRhXCI6IFsxMzksIDAsIDEzOV0sXG4gICAgICBcImRhcmtvbGl2ZWdyZWVuXCI6IFs4NSwgMTA3LCA0N10sXG4gICAgICBcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcbiAgICAgIFwiZGFya29yY2hpZFwiOiBbMTUzLCA1MCwgMjA0XSxcbiAgICAgIFwiZGFya3JlZFwiOiBbMTM5LCAwLCAwXSxcbiAgICAgIFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXG4gICAgICBcImRhcmtzZWFncmVlblwiOiBbMTQzLCAxODgsIDE0M10sXG4gICAgICBcImRhcmtzbGF0ZWJsdWVcIjogWzcyLCA2MSwgMTM5XSxcbiAgICAgIFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXG4gICAgICBcImRhcmtzbGF0ZWdyZXlcIjogWzQ3LCA3OSwgNzldLFxuICAgICAgXCJkYXJrdHVycXVvaXNlXCI6IFswLCAyMDYsIDIwOV0sXG4gICAgICBcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcbiAgICAgIFwiZGVlcHBpbmtcIjogWzI1NSwgMjAsIDE0N10sXG4gICAgICBcImRlZXBza3libHVlXCI6IFswLCAxOTEsIDI1NV0sXG4gICAgICBcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxuICAgICAgXCJkaW1ncmV5XCI6IFsxMDUsIDEwNSwgMTA1XSxcbiAgICAgIFwiZG9kZ2VyYmx1ZVwiOiBbMzAsIDE0NCwgMjU1XSxcbiAgICAgIFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXG4gICAgICBcImZsb3JhbHdoaXRlXCI6IFsyNTUsIDI1MCwgMjQwXSxcbiAgICAgIFwiZm9yZXN0Z3JlZW5cIjogWzM0LCAxMzksIDM0XSxcbiAgICAgIFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxuICAgICAgXCJnYWluc2Jvcm9cIjogWzIyMCwgMjIwLCAyMjBdLFxuICAgICAgXCJnaG9zdHdoaXRlXCI6IFsyNDgsIDI0OCwgMjU1XSxcbiAgICAgIFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxuICAgICAgXCJnb2xkZW5yb2RcIjogWzIxOCwgMTY1LCAzMl0sXG4gICAgICBcImdyYXlcIjogWzEyOCwgMTI4LCAxMjhdLFxuICAgICAgXCJncmVlblwiOiBbMCwgMTI4LCAwXSxcbiAgICAgIFwiZ3JlZW55ZWxsb3dcIjogWzE3MywgMjU1LCA0N10sXG4gICAgICBcImdyZXlcIjogWzEyOCwgMTI4LCAxMjhdLFxuICAgICAgXCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXG4gICAgICBcImhvdHBpbmtcIjogWzI1NSwgMTA1LCAxODBdLFxuICAgICAgXCJpbmRpYW5yZWRcIjogWzIwNSwgOTIsIDkyXSxcbiAgICAgIFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcbiAgICAgIFwiaXZvcnlcIjogWzI1NSwgMjU1LCAyNDBdLFxuICAgICAgXCJraGFraVwiOiBbMjQwLCAyMzAsIDE0MF0sXG4gICAgICBcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcbiAgICAgIFwibGF2ZW5kZXJibHVzaFwiOiBbMjU1LCAyNDAsIDI0NV0sXG4gICAgICBcImxhd25ncmVlblwiOiBbMTI0LCAyNTIsIDBdLFxuICAgICAgXCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxuICAgICAgXCJsaWdodGJsdWVcIjogWzE3MywgMjE2LCAyMzBdLFxuICAgICAgXCJsaWdodGNvcmFsXCI6IFsyNDAsIDEyOCwgMTI4XSxcbiAgICAgIFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcbiAgICAgIFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIjogWzI1MCwgMjUwLCAyMTBdLFxuICAgICAgXCJsaWdodGdyYXlcIjogWzIxMSwgMjExLCAyMTFdLFxuICAgICAgXCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcbiAgICAgIFwibGlnaHRncmV5XCI6IFsyMTEsIDIxMSwgMjExXSxcbiAgICAgIFwibGlnaHRwaW5rXCI6IFsyNTUsIDE4MiwgMTkzXSxcbiAgICAgIFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxuICAgICAgXCJsaWdodHNlYWdyZWVuXCI6IFszMiwgMTc4LCAxNzBdLFxuICAgICAgXCJsaWdodHNreWJsdWVcIjogWzEzNSwgMjA2LCAyNTBdLFxuICAgICAgXCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXG4gICAgICBcImxpZ2h0c2xhdGVncmV5XCI6IFsxMTksIDEzNiwgMTUzXSxcbiAgICAgIFwibGlnaHRzdGVlbGJsdWVcIjogWzE3NiwgMTk2LCAyMjJdLFxuICAgICAgXCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXG4gICAgICBcImxpbWVcIjogWzAsIDI1NSwgMF0sXG4gICAgICBcImxpbWVncmVlblwiOiBbNTAsIDIwNSwgNTBdLFxuICAgICAgXCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXG4gICAgICBcIm1hZ2VudGFcIjogWzI1NSwgMCwgMjU1XSxcbiAgICAgIFwibWFyb29uXCI6IFsxMjgsIDAsIDBdLFxuICAgICAgXCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcbiAgICAgIFwibWVkaXVtYmx1ZVwiOiBbMCwgMCwgMjA1XSxcbiAgICAgIFwibWVkaXVtb3JjaGlkXCI6IFsxODYsIDg1LCAyMTFdLFxuICAgICAgXCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxuICAgICAgXCJtZWRpdW1zZWFncmVlblwiOiBbNjAsIDE3OSwgMTEzXSxcbiAgICAgIFwibWVkaXVtc2xhdGVibHVlXCI6IFsxMjMsIDEwNCwgMjM4XSxcbiAgICAgIFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcbiAgICAgIFwibWVkaXVtdHVycXVvaXNlXCI6IFs3MiwgMjA5LCAyMDRdLFxuICAgICAgXCJtZWRpdW12aW9sZXRyZWRcIjogWzE5OSwgMjEsIDEzM10sXG4gICAgICBcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxuICAgICAgXCJtaW50Y3JlYW1cIjogWzI0NSwgMjU1LCAyNTBdLFxuICAgICAgXCJtaXN0eXJvc2VcIjogWzI1NSwgMjI4LCAyMjVdLFxuICAgICAgXCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXG4gICAgICBcIm5hdmFqb3doaXRlXCI6IFsyNTUsIDIyMiwgMTczXSxcbiAgICAgIFwibmF2eVwiOiBbMCwgMCwgMTI4XSxcbiAgICAgIFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXG4gICAgICBcIm9saXZlXCI6IFsxMjgsIDEyOCwgMF0sXG4gICAgICBcIm9saXZlZHJhYlwiOiBbMTA3LCAxNDIsIDM1XSxcbiAgICAgIFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXG4gICAgICBcIm9yYW5nZXJlZFwiOiBbMjU1LCA2OSwgMF0sXG4gICAgICBcIm9yY2hpZFwiOiBbMjE4LCAxMTIsIDIxNF0sXG4gICAgICBcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxuICAgICAgXCJwYWxlZ3JlZW5cIjogWzE1MiwgMjUxLCAxNTJdLFxuICAgICAgXCJwYWxldHVycXVvaXNlXCI6IFsxNzUsIDIzOCwgMjM4XSxcbiAgICAgIFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXG4gICAgICBcInBhcGF5YXdoaXBcIjogWzI1NSwgMjM5LCAyMTNdLFxuICAgICAgXCJwZWFjaHB1ZmZcIjogWzI1NSwgMjE4LCAxODVdLFxuICAgICAgXCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxuICAgICAgXCJwaW5rXCI6IFsyNTUsIDE5MiwgMjAzXSxcbiAgICAgIFwicGx1bVwiOiBbMjIxLCAxNjAsIDIyMV0sXG4gICAgICBcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxuICAgICAgXCJwdXJwbGVcIjogWzEyOCwgMCwgMTI4XSxcbiAgICAgIFwicmViZWNjYXB1cnBsZVwiOiBbMTAyLCA1MSwgMTUzXSxcbiAgICAgIFwicmVkXCI6IFsyNTUsIDAsIDBdLFxuICAgICAgXCJyb3N5YnJvd25cIjogWzE4OCwgMTQzLCAxNDNdLFxuICAgICAgXCJyb3lhbGJsdWVcIjogWzY1LCAxMDUsIDIyNV0sXG4gICAgICBcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXG4gICAgICBcInNhbG1vblwiOiBbMjUwLCAxMjgsIDExNF0sXG4gICAgICBcInNhbmR5YnJvd25cIjogWzI0NCwgMTY0LCA5Nl0sXG4gICAgICBcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXG4gICAgICBcInNlYXNoZWxsXCI6IFsyNTUsIDI0NSwgMjM4XSxcbiAgICAgIFwic2llbm5hXCI6IFsxNjAsIDgyLCA0NV0sXG4gICAgICBcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXG4gICAgICBcInNreWJsdWVcIjogWzEzNSwgMjA2LCAyMzVdLFxuICAgICAgXCJzbGF0ZWJsdWVcIjogWzEwNiwgOTAsIDIwNV0sXG4gICAgICBcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXG4gICAgICBcInNsYXRlZ3JleVwiOiBbMTEyLCAxMjgsIDE0NF0sXG4gICAgICBcInNub3dcIjogWzI1NSwgMjUwLCAyNTBdLFxuICAgICAgXCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxuICAgICAgXCJzdGVlbGJsdWVcIjogWzcwLCAxMzAsIDE4MF0sXG4gICAgICBcInRhblwiOiBbMjEwLCAxODAsIDE0MF0sXG4gICAgICBcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcbiAgICAgIFwidGhpc3RsZVwiOiBbMjE2LCAxOTEsIDIxNl0sXG4gICAgICBcInRvbWF0b1wiOiBbMjU1LCA5OSwgNzFdLFxuICAgICAgXCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXG4gICAgICBcInZpb2xldFwiOiBbMjM4LCAxMzAsIDIzOF0sXG4gICAgICBcIndoZWF0XCI6IFsyNDUsIDIyMiwgMTc5XSxcbiAgICAgIFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxuICAgICAgXCJ3aGl0ZXNtb2tlXCI6IFsyNDUsIDI0NSwgMjQ1XSxcbiAgICAgIFwieWVsbG93XCI6IFsyNTUsIDI1NSwgMF0sXG4gICAgICBcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb252ZXJzaW9ucyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L2NvbnZlcnNpb25zLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgY3NzS2V5d29yZHMgPSByZXF1aXJlX2NvbG9yX25hbWUoKTtcbiAgICB2YXIgcmV2ZXJzZUtleXdvcmRzID0ge307XG4gICAgZm9yIChrZXkgaW4gY3NzS2V5d29yZHMpIHtcbiAgICAgIGlmIChjc3NLZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHJldmVyc2VLZXl3b3Jkc1tjc3NLZXl3b3Jkc1trZXldXSA9IGtleTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGtleTtcbiAgICB2YXIgY29udmVydCA9IG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHJnYjoge1xuICAgICAgICBjaGFubmVsczogMyxcbiAgICAgICAgbGFiZWxzOiBcInJnYlwiXG4gICAgICB9LFxuICAgICAgaHNsOiB7XG4gICAgICAgIGNoYW5uZWxzOiAzLFxuICAgICAgICBsYWJlbHM6IFwiaHNsXCJcbiAgICAgIH0sXG4gICAgICBoc3Y6IHtcbiAgICAgICAgY2hhbm5lbHM6IDMsXG4gICAgICAgIGxhYmVsczogXCJoc3ZcIlxuICAgICAgfSxcbiAgICAgIGh3Yjoge1xuICAgICAgICBjaGFubmVsczogMyxcbiAgICAgICAgbGFiZWxzOiBcImh3YlwiXG4gICAgICB9LFxuICAgICAgY215azoge1xuICAgICAgICBjaGFubmVsczogNCxcbiAgICAgICAgbGFiZWxzOiBcImNteWtcIlxuICAgICAgfSxcbiAgICAgIHh5ejoge1xuICAgICAgICBjaGFubmVsczogMyxcbiAgICAgICAgbGFiZWxzOiBcInh5elwiXG4gICAgICB9LFxuICAgICAgbGFiOiB7XG4gICAgICAgIGNoYW5uZWxzOiAzLFxuICAgICAgICBsYWJlbHM6IFwibGFiXCJcbiAgICAgIH0sXG4gICAgICBsY2g6IHtcbiAgICAgICAgY2hhbm5lbHM6IDMsXG4gICAgICAgIGxhYmVsczogXCJsY2hcIlxuICAgICAgfSxcbiAgICAgIGhleDoge1xuICAgICAgICBjaGFubmVsczogMSxcbiAgICAgICAgbGFiZWxzOiBbXCJoZXhcIl1cbiAgICAgIH0sXG4gICAgICBrZXl3b3JkOiB7XG4gICAgICAgIGNoYW5uZWxzOiAxLFxuICAgICAgICBsYWJlbHM6IFtcImtleXdvcmRcIl1cbiAgICAgIH0sXG4gICAgICBhbnNpMTY6IHtcbiAgICAgICAgY2hhbm5lbHM6IDEsXG4gICAgICAgIGxhYmVsczogW1wiYW5zaTE2XCJdXG4gICAgICB9LFxuICAgICAgYW5zaTI1Njoge1xuICAgICAgICBjaGFubmVsczogMSxcbiAgICAgICAgbGFiZWxzOiBbXCJhbnNpMjU2XCJdXG4gICAgICB9LFxuICAgICAgaGNnOiB7XG4gICAgICAgIGNoYW5uZWxzOiAzLFxuICAgICAgICBsYWJlbHM6IFtcImhcIiwgXCJjXCIsIFwiZ1wiXVxuICAgICAgfSxcbiAgICAgIGFwcGxlOiB7XG4gICAgICAgIGNoYW5uZWxzOiAzLFxuICAgICAgICBsYWJlbHM6IFtcInIxNlwiLCBcImcxNlwiLCBcImIxNlwiXVxuICAgICAgfSxcbiAgICAgIGdyYXk6IHtcbiAgICAgICAgY2hhbm5lbHM6IDEsXG4gICAgICAgIGxhYmVsczogW1wiZ3JheVwiXVxuICAgICAgfVxuICAgIH07XG4gICAgZm9yIChtb2RlbCBpbiBjb252ZXJ0KSB7XG4gICAgICBpZiAoY29udmVydC5oYXNPd25Qcm9wZXJ0eShtb2RlbCkpIHtcbiAgICAgICAgaWYgKCEoXCJjaGFubmVsc1wiIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm1pc3NpbmcgY2hhbm5lbHMgcHJvcGVydHk6IFwiICsgbW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKFwibGFiZWxzXCIgaW4gY29udmVydFttb2RlbF0pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibWlzc2luZyBjaGFubmVsIGxhYmVscyBwcm9wZXJ0eTogXCIgKyBtb2RlbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnZlcnRbbW9kZWxdLmxhYmVscy5sZW5ndGggIT09IGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2hhbm5lbCBhbmQgbGFiZWwgY291bnRzIG1pc21hdGNoOiBcIiArIG1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgICBjaGFubmVscyA9IGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzO1xuICAgICAgICBsYWJlbHMgPSBjb252ZXJ0W21vZGVsXS5sYWJlbHM7XG4gICAgICAgIGRlbGV0ZSBjb252ZXJ0W21vZGVsXS5jaGFubmVscztcbiAgICAgICAgZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmxhYmVscztcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbbW9kZWxdLCBcImNoYW5uZWxzXCIsIHtcbiAgICAgICAgICB2YWx1ZTogY2hhbm5lbHNcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W21vZGVsXSwgXCJsYWJlbHNcIiwge1xuICAgICAgICAgIHZhbHVlOiBsYWJlbHNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjaGFubmVscztcbiAgICB2YXIgbGFiZWxzO1xuICAgIHZhciBtb2RlbDtcbiAgICBjb252ZXJ0LnJnYi5oc2wgPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHZhciByID0gcmdiWzBdIC8gMjU1O1xuICAgICAgdmFyIGcgPSByZ2JbMV0gLyAyNTU7XG4gICAgICB2YXIgYiA9IHJnYlsyXSAvIDI1NTtcbiAgICAgIHZhciBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcbiAgICAgIHZhciBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgICAgIHZhciBkZWx0YSA9IG1heCAtIG1pbjtcbiAgICAgIHZhciBoO1xuICAgICAgdmFyIHM7XG4gICAgICB2YXIgbDtcbiAgICAgIGlmIChtYXggPT09IG1pbikge1xuICAgICAgICBoID0gMDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gbWF4KSB7XG4gICAgICAgIGggPSAoZyAtIGIpIC8gZGVsdGE7XG4gICAgICB9IGVsc2UgaWYgKGcgPT09IG1heCkge1xuICAgICAgICBoID0gMiArIChiIC0gcikgLyBkZWx0YTtcbiAgICAgIH0gZWxzZSBpZiAoYiA9PT0gbWF4KSB7XG4gICAgICAgIGggPSA0ICsgKHIgLSBnKSAvIGRlbHRhO1xuICAgICAgfVxuICAgICAgaCA9IE1hdGgubWluKGggKiA2MCwgMzYwKTtcbiAgICAgIGlmIChoIDwgMCkge1xuICAgICAgICBoICs9IDM2MDtcbiAgICAgIH1cbiAgICAgIGwgPSAobWluICsgbWF4KSAvIDI7XG4gICAgICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICAgICAgcyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGwgPD0gMC41KSB7XG4gICAgICAgIHMgPSBkZWx0YSAvIChtYXggKyBtaW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcyA9IGRlbHRhIC8gKDIgLSBtYXggLSBtaW4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtoLCBzICogMTAwLCBsICogMTAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQucmdiLmhzdiA9IGZ1bmN0aW9uKHJnYikge1xuICAgICAgdmFyIHJkaWY7XG4gICAgICB2YXIgZ2RpZjtcbiAgICAgIHZhciBiZGlmO1xuICAgICAgdmFyIGg7XG4gICAgICB2YXIgcztcbiAgICAgIHZhciByID0gcmdiWzBdIC8gMjU1O1xuICAgICAgdmFyIGcgPSByZ2JbMV0gLyAyNTU7XG4gICAgICB2YXIgYiA9IHJnYlsyXSAvIDI1NTtcbiAgICAgIHZhciB2ID0gTWF0aC5tYXgociwgZywgYik7XG4gICAgICB2YXIgZGlmZiA9IHYgLSBNYXRoLm1pbihyLCBnLCBiKTtcbiAgICAgIHZhciBkaWZmYyA9IGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgcmV0dXJuICh2IC0gYykgLyA2IC8gZGlmZiArIDEgLyAyO1xuICAgICAgfTtcbiAgICAgIGlmIChkaWZmID09PSAwKSB7XG4gICAgICAgIGggPSBzID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMgPSBkaWZmIC8gdjtcbiAgICAgICAgcmRpZiA9IGRpZmZjKHIpO1xuICAgICAgICBnZGlmID0gZGlmZmMoZyk7XG4gICAgICAgIGJkaWYgPSBkaWZmYyhiKTtcbiAgICAgICAgaWYgKHIgPT09IHYpIHtcbiAgICAgICAgICBoID0gYmRpZiAtIGdkaWY7XG4gICAgICAgIH0gZWxzZSBpZiAoZyA9PT0gdikge1xuICAgICAgICAgIGggPSAxIC8gMyArIHJkaWYgLSBiZGlmO1xuICAgICAgICB9IGVsc2UgaWYgKGIgPT09IHYpIHtcbiAgICAgICAgICBoID0gMiAvIDMgKyBnZGlmIC0gcmRpZjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaCA8IDApIHtcbiAgICAgICAgICBoICs9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAoaCA+IDEpIHtcbiAgICAgICAgICBoIC09IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBbaCAqIDM2MCwgcyAqIDEwMCwgdiAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi5od2IgPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHZhciByID0gcmdiWzBdO1xuICAgICAgdmFyIGcgPSByZ2JbMV07XG4gICAgICB2YXIgYiA9IHJnYlsyXTtcbiAgICAgIHZhciBoID0gY29udmVydC5yZ2IuaHNsKHJnYilbMF07XG4gICAgICB2YXIgdyA9IDEgLyAyNTUgKiBNYXRoLm1pbihyLCBNYXRoLm1pbihnLCBiKSk7XG4gICAgICBiID0gMSAtIDEgLyAyNTUgKiBNYXRoLm1heChyLCBNYXRoLm1heChnLCBiKSk7XG4gICAgICByZXR1cm4gW2gsIHcgKiAxMDAsIGIgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuY215ayA9IGZ1bmN0aW9uKHJnYikge1xuICAgICAgdmFyIHIgPSByZ2JbMF0gLyAyNTU7XG4gICAgICB2YXIgZyA9IHJnYlsxXSAvIDI1NTtcbiAgICAgIHZhciBiID0gcmdiWzJdIC8gMjU1O1xuICAgICAgdmFyIGM7XG4gICAgICB2YXIgbTtcbiAgICAgIHZhciB5O1xuICAgICAgdmFyIGs7XG4gICAgICBrID0gTWF0aC5taW4oMSAtIHIsIDEgLSBnLCAxIC0gYik7XG4gICAgICBjID0gKDEgLSByIC0gaykgLyAoMSAtIGspIHx8IDA7XG4gICAgICBtID0gKDEgLSBnIC0gaykgLyAoMSAtIGspIHx8IDA7XG4gICAgICB5ID0gKDEgLSBiIC0gaykgLyAoMSAtIGspIHx8IDA7XG4gICAgICByZXR1cm4gW2MgKiAxMDAsIG0gKiAxMDAsIHkgKiAxMDAsIGsgKiAxMDBdO1xuICAgIH07XG4gICAgZnVuY3Rpb24gY29tcGFyYXRpdmVEaXN0YW5jZSh4LCB5KSB7XG4gICAgICByZXR1cm4gTWF0aC5wb3coeFswXSAtIHlbMF0sIDIpICsgTWF0aC5wb3coeFsxXSAtIHlbMV0sIDIpICsgTWF0aC5wb3coeFsyXSAtIHlbMl0sIDIpO1xuICAgIH1cbiAgICBjb252ZXJ0LnJnYi5rZXl3b3JkID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICB2YXIgcmV2ZXJzZWQgPSByZXZlcnNlS2V5d29yZHNbcmdiXTtcbiAgICAgIGlmIChyZXZlcnNlZCkge1xuICAgICAgICByZXR1cm4gcmV2ZXJzZWQ7XG4gICAgICB9XG4gICAgICB2YXIgY3VycmVudENsb3Nlc3REaXN0YW5jZSA9IEluZmluaXR5O1xuICAgICAgdmFyIGN1cnJlbnRDbG9zZXN0S2V5d29yZDtcbiAgICAgIGZvciAodmFyIGtleXdvcmQgaW4gY3NzS2V5d29yZHMpIHtcbiAgICAgICAgaWYgKGNzc0tleXdvcmRzLmhhc093blByb3BlcnR5KGtleXdvcmQpKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gY3NzS2V5d29yZHNba2V5d29yZF07XG4gICAgICAgICAgdmFyIGRpc3RhbmNlID0gY29tcGFyYXRpdmVEaXN0YW5jZShyZ2IsIHZhbHVlKTtcbiAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBjdXJyZW50Q2xvc2VzdERpc3RhbmNlKSB7XG4gICAgICAgICAgICBjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICAgICAgICBjdXJyZW50Q2xvc2VzdEtleXdvcmQgPSBrZXl3b3JkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnRDbG9zZXN0S2V5d29yZDtcbiAgICB9O1xuICAgIGNvbnZlcnQua2V5d29yZC5yZ2IgPSBmdW5jdGlvbihrZXl3b3JkKSB7XG4gICAgICByZXR1cm4gY3NzS2V5d29yZHNba2V5d29yZF07XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi54eXogPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHZhciByID0gcmdiWzBdIC8gMjU1O1xuICAgICAgdmFyIGcgPSByZ2JbMV0gLyAyNTU7XG4gICAgICB2YXIgYiA9IHJnYlsyXSAvIDI1NTtcbiAgICAgIHIgPSByID4gMC4wNDA0NSA/IE1hdGgucG93KChyICsgMC4wNTUpIC8gMS4wNTUsIDIuNCkgOiByIC8gMTIuOTI7XG4gICAgICBnID0gZyA+IDAuMDQwNDUgPyBNYXRoLnBvdygoZyArIDAuMDU1KSAvIDEuMDU1LCAyLjQpIDogZyAvIDEyLjkyO1xuICAgICAgYiA9IGIgPiAwLjA0MDQ1ID8gTWF0aC5wb3coKGIgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSA6IGIgLyAxMi45MjtcbiAgICAgIHZhciB4ID0gciAqIDAuNDEyNCArIGcgKiAwLjM1NzYgKyBiICogMC4xODA1O1xuICAgICAgdmFyIHkgPSByICogMC4yMTI2ICsgZyAqIDAuNzE1MiArIGIgKiAwLjA3MjI7XG4gICAgICB2YXIgeiA9IHIgKiAwLjAxOTMgKyBnICogMC4xMTkyICsgYiAqIDAuOTUwNTtcbiAgICAgIHJldHVybiBbeCAqIDEwMCwgeSAqIDEwMCwgeiAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi5sYWIgPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHZhciB4eXogPSBjb252ZXJ0LnJnYi54eXoocmdiKTtcbiAgICAgIHZhciB4ID0geHl6WzBdO1xuICAgICAgdmFyIHkgPSB4eXpbMV07XG4gICAgICB2YXIgeiA9IHh5elsyXTtcbiAgICAgIHZhciBsO1xuICAgICAgdmFyIGE7XG4gICAgICB2YXIgYjtcbiAgICAgIHggLz0gOTUuMDQ3O1xuICAgICAgeSAvPSAxMDA7XG4gICAgICB6IC89IDEwOC44ODM7XG4gICAgICB4ID0geCA+IDg4NTZlLTYgPyBNYXRoLnBvdyh4LCAxIC8gMykgOiA3Ljc4NyAqIHggKyAxNiAvIDExNjtcbiAgICAgIHkgPSB5ID4gODg1NmUtNiA/IE1hdGgucG93KHksIDEgLyAzKSA6IDcuNzg3ICogeSArIDE2IC8gMTE2O1xuICAgICAgeiA9IHogPiA4ODU2ZS02ID8gTWF0aC5wb3coeiwgMSAvIDMpIDogNy43ODcgKiB6ICsgMTYgLyAxMTY7XG4gICAgICBsID0gMTE2ICogeSAtIDE2O1xuICAgICAgYSA9IDUwMCAqICh4IC0geSk7XG4gICAgICBiID0gMjAwICogKHkgLSB6KTtcbiAgICAgIHJldHVybiBbbCwgYSwgYl07XG4gICAgfTtcbiAgICBjb252ZXJ0LmhzbC5yZ2IgPSBmdW5jdGlvbihoc2wpIHtcbiAgICAgIHZhciBoID0gaHNsWzBdIC8gMzYwO1xuICAgICAgdmFyIHMgPSBoc2xbMV0gLyAxMDA7XG4gICAgICB2YXIgbCA9IGhzbFsyXSAvIDEwMDtcbiAgICAgIHZhciB0MTtcbiAgICAgIHZhciB0MjtcbiAgICAgIHZhciB0MztcbiAgICAgIHZhciByZ2I7XG4gICAgICB2YXIgdmFsO1xuICAgICAgaWYgKHMgPT09IDApIHtcbiAgICAgICAgdmFsID0gbCAqIDI1NTtcbiAgICAgICAgcmV0dXJuIFt2YWwsIHZhbCwgdmFsXTtcbiAgICAgIH1cbiAgICAgIGlmIChsIDwgMC41KSB7XG4gICAgICAgIHQyID0gbCAqICgxICsgcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0MiA9IGwgKyBzIC0gbCAqIHM7XG4gICAgICB9XG4gICAgICB0MSA9IDIgKiBsIC0gdDI7XG4gICAgICByZ2IgPSBbMCwgMCwgMF07XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICB0MyA9IGggKyAxIC8gMyAqIC0oaSAtIDEpO1xuICAgICAgICBpZiAodDMgPCAwKSB7XG4gICAgICAgICAgdDMrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodDMgPiAxKSB7XG4gICAgICAgICAgdDMtLTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoNiAqIHQzIDwgMSkge1xuICAgICAgICAgIHZhbCA9IHQxICsgKHQyIC0gdDEpICogNiAqIHQzO1xuICAgICAgICB9IGVsc2UgaWYgKDIgKiB0MyA8IDEpIHtcbiAgICAgICAgICB2YWwgPSB0MjtcbiAgICAgICAgfSBlbHNlIGlmICgzICogdDMgPCAyKSB7XG4gICAgICAgICAgdmFsID0gdDEgKyAodDIgLSB0MSkgKiAoMiAvIDMgLSB0MykgKiA2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbCA9IHQxO1xuICAgICAgICB9XG4gICAgICAgIHJnYltpXSA9IHZhbCAqIDI1NTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZ2I7XG4gICAgfTtcbiAgICBjb252ZXJ0LmhzbC5oc3YgPSBmdW5jdGlvbihoc2wpIHtcbiAgICAgIHZhciBoID0gaHNsWzBdO1xuICAgICAgdmFyIHMgPSBoc2xbMV0gLyAxMDA7XG4gICAgICB2YXIgbCA9IGhzbFsyXSAvIDEwMDtcbiAgICAgIHZhciBzbWluID0gcztcbiAgICAgIHZhciBsbWluID0gTWF0aC5tYXgobCwgMC4wMSk7XG4gICAgICB2YXIgc3Y7XG4gICAgICB2YXIgdjtcbiAgICAgIGwgKj0gMjtcbiAgICAgIHMgKj0gbCA8PSAxID8gbCA6IDIgLSBsO1xuICAgICAgc21pbiAqPSBsbWluIDw9IDEgPyBsbWluIDogMiAtIGxtaW47XG4gICAgICB2ID0gKGwgKyBzKSAvIDI7XG4gICAgICBzdiA9IGwgPT09IDAgPyAyICogc21pbiAvIChsbWluICsgc21pbikgOiAyICogcyAvIChsICsgcyk7XG4gICAgICByZXR1cm4gW2gsIHN2ICogMTAwLCB2ICogMTAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuaHN2LnJnYiA9IGZ1bmN0aW9uKGhzdikge1xuICAgICAgdmFyIGggPSBoc3ZbMF0gLyA2MDtcbiAgICAgIHZhciBzID0gaHN2WzFdIC8gMTAwO1xuICAgICAgdmFyIHYgPSBoc3ZbMl0gLyAxMDA7XG4gICAgICB2YXIgaGkgPSBNYXRoLmZsb29yKGgpICUgNjtcbiAgICAgIHZhciBmID0gaCAtIE1hdGguZmxvb3IoaCk7XG4gICAgICB2YXIgcCA9IDI1NSAqIHYgKiAoMSAtIHMpO1xuICAgICAgdmFyIHEgPSAyNTUgKiB2ICogKDEgLSBzICogZik7XG4gICAgICB2YXIgdCA9IDI1NSAqIHYgKiAoMSAtIHMgKiAoMSAtIGYpKTtcbiAgICAgIHYgKj0gMjU1O1xuICAgICAgc3dpdGNoIChoaSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIFt2LCB0LCBwXTtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJldHVybiBbcSwgdiwgcF07XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gW3AsIHYsIHRdO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcmV0dXJuIFtwLCBxLCB2XTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbdCwgcCwgdl07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gW3YsIHAsIHFdO1xuICAgICAgfVxuICAgIH07XG4gICAgY29udmVydC5oc3YuaHNsID0gZnVuY3Rpb24oaHN2KSB7XG4gICAgICB2YXIgaCA9IGhzdlswXTtcbiAgICAgIHZhciBzID0gaHN2WzFdIC8gMTAwO1xuICAgICAgdmFyIHYgPSBoc3ZbMl0gLyAxMDA7XG4gICAgICB2YXIgdm1pbiA9IE1hdGgubWF4KHYsIDAuMDEpO1xuICAgICAgdmFyIGxtaW47XG4gICAgICB2YXIgc2w7XG4gICAgICB2YXIgbDtcbiAgICAgIGwgPSAoMiAtIHMpICogdjtcbiAgICAgIGxtaW4gPSAoMiAtIHMpICogdm1pbjtcbiAgICAgIHNsID0gcyAqIHZtaW47XG4gICAgICBzbCAvPSBsbWluIDw9IDEgPyBsbWluIDogMiAtIGxtaW47XG4gICAgICBzbCA9IHNsIHx8IDA7XG4gICAgICBsIC89IDI7XG4gICAgICByZXR1cm4gW2gsIHNsICogMTAwLCBsICogMTAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuaHdiLnJnYiA9IGZ1bmN0aW9uKGh3Yikge1xuICAgICAgdmFyIGggPSBod2JbMF0gLyAzNjA7XG4gICAgICB2YXIgd2ggPSBod2JbMV0gLyAxMDA7XG4gICAgICB2YXIgYmwgPSBod2JbMl0gLyAxMDA7XG4gICAgICB2YXIgcmF0aW8gPSB3aCArIGJsO1xuICAgICAgdmFyIGk7XG4gICAgICB2YXIgdjtcbiAgICAgIHZhciBmO1xuICAgICAgdmFyIG47XG4gICAgICBpZiAocmF0aW8gPiAxKSB7XG4gICAgICAgIHdoIC89IHJhdGlvO1xuICAgICAgICBibCAvPSByYXRpbztcbiAgICAgIH1cbiAgICAgIGkgPSBNYXRoLmZsb29yKDYgKiBoKTtcbiAgICAgIHYgPSAxIC0gYmw7XG4gICAgICBmID0gNiAqIGggLSBpO1xuICAgICAgaWYgKChpICYgMSkgIT09IDApIHtcbiAgICAgICAgZiA9IDEgLSBmO1xuICAgICAgfVxuICAgICAgbiA9IHdoICsgZiAqICh2IC0gd2gpO1xuICAgICAgdmFyIHI7XG4gICAgICB2YXIgZztcbiAgICAgIHZhciBiO1xuICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHIgPSB2O1xuICAgICAgICAgIGcgPSBuO1xuICAgICAgICAgIGIgPSB3aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHIgPSBuO1xuICAgICAgICAgIGcgPSB2O1xuICAgICAgICAgIGIgPSB3aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHIgPSB3aDtcbiAgICAgICAgICBnID0gdjtcbiAgICAgICAgICBiID0gbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHIgPSB3aDtcbiAgICAgICAgICBnID0gbjtcbiAgICAgICAgICBiID0gdjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHIgPSBuO1xuICAgICAgICAgIGcgPSB3aDtcbiAgICAgICAgICBiID0gdjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHIgPSB2O1xuICAgICAgICAgIGcgPSB3aDtcbiAgICAgICAgICBiID0gbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG4gICAgfTtcbiAgICBjb252ZXJ0LmNteWsucmdiID0gZnVuY3Rpb24oY215aykge1xuICAgICAgdmFyIGMgPSBjbXlrWzBdIC8gMTAwO1xuICAgICAgdmFyIG0gPSBjbXlrWzFdIC8gMTAwO1xuICAgICAgdmFyIHkgPSBjbXlrWzJdIC8gMTAwO1xuICAgICAgdmFyIGsgPSBjbXlrWzNdIC8gMTAwO1xuICAgICAgdmFyIHI7XG4gICAgICB2YXIgZztcbiAgICAgIHZhciBiO1xuICAgICAgciA9IDEgLSBNYXRoLm1pbigxLCBjICogKDEgLSBrKSArIGspO1xuICAgICAgZyA9IDEgLSBNYXRoLm1pbigxLCBtICogKDEgLSBrKSArIGspO1xuICAgICAgYiA9IDEgLSBNYXRoLm1pbigxLCB5ICogKDEgLSBrKSArIGspO1xuICAgICAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbiAgICB9O1xuICAgIGNvbnZlcnQueHl6LnJnYiA9IGZ1bmN0aW9uKHh5eikge1xuICAgICAgdmFyIHggPSB4eXpbMF0gLyAxMDA7XG4gICAgICB2YXIgeSA9IHh5elsxXSAvIDEwMDtcbiAgICAgIHZhciB6ID0geHl6WzJdIC8gMTAwO1xuICAgICAgdmFyIHI7XG4gICAgICB2YXIgZztcbiAgICAgIHZhciBiO1xuICAgICAgciA9IHggKiAzLjI0MDYgKyB5ICogLTEuNTM3MiArIHogKiAtMC40OTg2O1xuICAgICAgZyA9IHggKiAtMC45Njg5ICsgeSAqIDEuODc1OCArIHogKiAwLjA0MTU7XG4gICAgICBiID0geCAqIDAuMDU1NyArIHkgKiAtMC4yMDQgKyB6ICogMS4wNTc7XG4gICAgICByID0gciA+IDMxMzA4ZS03ID8gMS4wNTUgKiBNYXRoLnBvdyhyLCAxIC8gMi40KSAtIDAuMDU1IDogciAqIDEyLjkyO1xuICAgICAgZyA9IGcgPiAzMTMwOGUtNyA/IDEuMDU1ICogTWF0aC5wb3coZywgMSAvIDIuNCkgLSAwLjA1NSA6IGcgKiAxMi45MjtcbiAgICAgIGIgPSBiID4gMzEzMDhlLTcgPyAxLjA1NSAqIE1hdGgucG93KGIsIDEgLyAyLjQpIC0gMC4wNTUgOiBiICogMTIuOTI7XG4gICAgICByID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgciksIDEpO1xuICAgICAgZyA9IE1hdGgubWluKE1hdGgubWF4KDAsIGcpLCAxKTtcbiAgICAgIGIgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBiKSwgMSk7XG4gICAgICByZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xuICAgIH07XG4gICAgY29udmVydC54eXoubGFiID0gZnVuY3Rpb24oeHl6KSB7XG4gICAgICB2YXIgeCA9IHh5elswXTtcbiAgICAgIHZhciB5ID0geHl6WzFdO1xuICAgICAgdmFyIHogPSB4eXpbMl07XG4gICAgICB2YXIgbDtcbiAgICAgIHZhciBhO1xuICAgICAgdmFyIGI7XG4gICAgICB4IC89IDk1LjA0NztcbiAgICAgIHkgLz0gMTAwO1xuICAgICAgeiAvPSAxMDguODgzO1xuICAgICAgeCA9IHggPiA4ODU2ZS02ID8gTWF0aC5wb3coeCwgMSAvIDMpIDogNy43ODcgKiB4ICsgMTYgLyAxMTY7XG4gICAgICB5ID0geSA+IDg4NTZlLTYgPyBNYXRoLnBvdyh5LCAxIC8gMykgOiA3Ljc4NyAqIHkgKyAxNiAvIDExNjtcbiAgICAgIHogPSB6ID4gODg1NmUtNiA/IE1hdGgucG93KHosIDEgLyAzKSA6IDcuNzg3ICogeiArIDE2IC8gMTE2O1xuICAgICAgbCA9IDExNiAqIHkgLSAxNjtcbiAgICAgIGEgPSA1MDAgKiAoeCAtIHkpO1xuICAgICAgYiA9IDIwMCAqICh5IC0geik7XG4gICAgICByZXR1cm4gW2wsIGEsIGJdO1xuICAgIH07XG4gICAgY29udmVydC5sYWIueHl6ID0gZnVuY3Rpb24obGFiKSB7XG4gICAgICB2YXIgbCA9IGxhYlswXTtcbiAgICAgIHZhciBhID0gbGFiWzFdO1xuICAgICAgdmFyIGIgPSBsYWJbMl07XG4gICAgICB2YXIgeDtcbiAgICAgIHZhciB5O1xuICAgICAgdmFyIHo7XG4gICAgICB5ID0gKGwgKyAxNikgLyAxMTY7XG4gICAgICB4ID0gYSAvIDUwMCArIHk7XG4gICAgICB6ID0geSAtIGIgLyAyMDA7XG4gICAgICB2YXIgeTIgPSBNYXRoLnBvdyh5LCAzKTtcbiAgICAgIHZhciB4MiA9IE1hdGgucG93KHgsIDMpO1xuICAgICAgdmFyIHoyID0gTWF0aC5wb3coeiwgMyk7XG4gICAgICB5ID0geTIgPiA4ODU2ZS02ID8geTIgOiAoeSAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuICAgICAgeCA9IHgyID4gODg1NmUtNiA/IHgyIDogKHggLSAxNiAvIDExNikgLyA3Ljc4NztcbiAgICAgIHogPSB6MiA+IDg4NTZlLTYgPyB6MiA6ICh6IC0gMTYgLyAxMTYpIC8gNy43ODc7XG4gICAgICB4ICo9IDk1LjA0NztcbiAgICAgIHkgKj0gMTAwO1xuICAgICAgeiAqPSAxMDguODgzO1xuICAgICAgcmV0dXJuIFt4LCB5LCB6XTtcbiAgICB9O1xuICAgIGNvbnZlcnQubGFiLmxjaCA9IGZ1bmN0aW9uKGxhYikge1xuICAgICAgdmFyIGwgPSBsYWJbMF07XG4gICAgICB2YXIgYSA9IGxhYlsxXTtcbiAgICAgIHZhciBiID0gbGFiWzJdO1xuICAgICAgdmFyIGhyO1xuICAgICAgdmFyIGg7XG4gICAgICB2YXIgYztcbiAgICAgIGhyID0gTWF0aC5hdGFuMihiLCBhKTtcbiAgICAgIGggPSBociAqIDM2MCAvIDIgLyBNYXRoLlBJO1xuICAgICAgaWYgKGggPCAwKSB7XG4gICAgICAgIGggKz0gMzYwO1xuICAgICAgfVxuICAgICAgYyA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTtcbiAgICAgIHJldHVybiBbbCwgYywgaF07XG4gICAgfTtcbiAgICBjb252ZXJ0LmxjaC5sYWIgPSBmdW5jdGlvbihsY2gpIHtcbiAgICAgIHZhciBsID0gbGNoWzBdO1xuICAgICAgdmFyIGMgPSBsY2hbMV07XG4gICAgICB2YXIgaCA9IGxjaFsyXTtcbiAgICAgIHZhciBhO1xuICAgICAgdmFyIGI7XG4gICAgICB2YXIgaHI7XG4gICAgICBociA9IGggLyAzNjAgKiAyICogTWF0aC5QSTtcbiAgICAgIGEgPSBjICogTWF0aC5jb3MoaHIpO1xuICAgICAgYiA9IGMgKiBNYXRoLnNpbihocik7XG4gICAgICByZXR1cm4gW2wsIGEsIGJdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuYW5zaTE2ID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgdmFyIHIgPSBhcmdzWzBdO1xuICAgICAgdmFyIGcgPSBhcmdzWzFdO1xuICAgICAgdmFyIGIgPSBhcmdzWzJdO1xuICAgICAgdmFyIHZhbHVlID0gMSBpbiBhcmd1bWVudHMgPyBhcmd1bWVudHNbMV0gOiBjb252ZXJ0LnJnYi5oc3YoYXJncylbMl07XG4gICAgICB2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgLyA1MCk7XG4gICAgICBpZiAodmFsdWUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgfVxuICAgICAgdmFyIGFuc2kgPSAzMCArIChNYXRoLnJvdW5kKGIgLyAyNTUpIDw8IDIgfCBNYXRoLnJvdW5kKGcgLyAyNTUpIDw8IDEgfCBNYXRoLnJvdW5kKHIgLyAyNTUpKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gMikge1xuICAgICAgICBhbnNpICs9IDYwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFuc2k7XG4gICAgfTtcbiAgICBjb252ZXJ0Lmhzdi5hbnNpMTYgPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICByZXR1cm4gY29udmVydC5yZ2IuYW5zaTE2KGNvbnZlcnQuaHN2LnJnYihhcmdzKSwgYXJnc1syXSk7XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi5hbnNpMjU2ID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgdmFyIHIgPSBhcmdzWzBdO1xuICAgICAgdmFyIGcgPSBhcmdzWzFdO1xuICAgICAgdmFyIGIgPSBhcmdzWzJdO1xuICAgICAgaWYgKHIgPT09IGcgJiYgZyA9PT0gYikge1xuICAgICAgICBpZiAociA8IDgpIHtcbiAgICAgICAgICByZXR1cm4gMTY7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHIgPiAyNDgpIHtcbiAgICAgICAgICByZXR1cm4gMjMxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKChyIC0gOCkgLyAyNDcgKiAyNCkgKyAyMzI7XG4gICAgICB9XG4gICAgICB2YXIgYW5zaSA9IDE2ICsgMzYgKiBNYXRoLnJvdW5kKHIgLyAyNTUgKiA1KSArIDYgKiBNYXRoLnJvdW5kKGcgLyAyNTUgKiA1KSArIE1hdGgucm91bmQoYiAvIDI1NSAqIDUpO1xuICAgICAgcmV0dXJuIGFuc2k7XG4gICAgfTtcbiAgICBjb252ZXJ0LmFuc2kxNi5yZ2IgPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICB2YXIgY29sb3IgPSBhcmdzICUgMTA7XG4gICAgICBpZiAoY29sb3IgPT09IDAgfHwgY29sb3IgPT09IDcpIHtcbiAgICAgICAgaWYgKGFyZ3MgPiA1MCkge1xuICAgICAgICAgIGNvbG9yICs9IDMuNTtcbiAgICAgICAgfVxuICAgICAgICBjb2xvciA9IGNvbG9yIC8gMTAuNSAqIDI1NTtcbiAgICAgICAgcmV0dXJuIFtjb2xvciwgY29sb3IsIGNvbG9yXTtcbiAgICAgIH1cbiAgICAgIHZhciBtdWx0ID0gKH5+KGFyZ3MgPiA1MCkgKyAxKSAqIDAuNTtcbiAgICAgIHZhciByID0gKGNvbG9yICYgMSkgKiBtdWx0ICogMjU1O1xuICAgICAgdmFyIGcgPSAoY29sb3IgPj4gMSAmIDEpICogbXVsdCAqIDI1NTtcbiAgICAgIHZhciBiID0gKGNvbG9yID4+IDIgJiAxKSAqIG11bHQgKiAyNTU7XG4gICAgICByZXR1cm4gW3IsIGcsIGJdO1xuICAgIH07XG4gICAgY29udmVydC5hbnNpMjU2LnJnYiA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIGlmIChhcmdzID49IDIzMikge1xuICAgICAgICB2YXIgYyA9IChhcmdzIC0gMjMyKSAqIDEwICsgODtcbiAgICAgICAgcmV0dXJuIFtjLCBjLCBjXTtcbiAgICAgIH1cbiAgICAgIGFyZ3MgLT0gMTY7XG4gICAgICB2YXIgcmVtO1xuICAgICAgdmFyIHIgPSBNYXRoLmZsb29yKGFyZ3MgLyAzNikgLyA1ICogMjU1O1xuICAgICAgdmFyIGcgPSBNYXRoLmZsb29yKChyZW0gPSBhcmdzICUgMzYpIC8gNikgLyA1ICogMjU1O1xuICAgICAgdmFyIGIgPSByZW0gJSA2IC8gNSAqIDI1NTtcbiAgICAgIHJldHVybiBbciwgZywgYl07XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi5oZXggPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICB2YXIgaW50ZWdlciA9ICgoTWF0aC5yb3VuZChhcmdzWzBdKSAmIDI1NSkgPDwgMTYpICsgKChNYXRoLnJvdW5kKGFyZ3NbMV0pICYgMjU1KSA8PCA4KSArIChNYXRoLnJvdW5kKGFyZ3NbMl0pICYgMjU1KTtcbiAgICAgIHZhciBzdHJpbmcgPSBpbnRlZ2VyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgcmV0dXJuIFwiMDAwMDAwXCIuc3Vic3RyaW5nKHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xuICAgIH07XG4gICAgY29udmVydC5oZXgucmdiID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgdmFyIG1hdGNoID0gYXJncy50b1N0cmluZygxNikubWF0Y2goL1thLWYwLTldezZ9fFthLWYwLTldezN9L2kpO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICByZXR1cm4gWzAsIDAsIDBdO1xuICAgICAgfVxuICAgICAgdmFyIGNvbG9yU3RyaW5nID0gbWF0Y2hbMF07XG4gICAgICBpZiAobWF0Y2hbMF0ubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGNvbG9yU3RyaW5nID0gY29sb3JTdHJpbmcuc3BsaXQoXCJcIikubWFwKGZ1bmN0aW9uKGNoYXIpIHtcbiAgICAgICAgICByZXR1cm4gY2hhciArIGNoYXI7XG4gICAgICAgIH0pLmpvaW4oXCJcIik7XG4gICAgICB9XG4gICAgICB2YXIgaW50ZWdlciA9IHBhcnNlSW50KGNvbG9yU3RyaW5nLCAxNik7XG4gICAgICB2YXIgciA9IGludGVnZXIgPj4gMTYgJiAyNTU7XG4gICAgICB2YXIgZyA9IGludGVnZXIgPj4gOCAmIDI1NTtcbiAgICAgIHZhciBiID0gaW50ZWdlciAmIDI1NTtcbiAgICAgIHJldHVybiBbciwgZywgYl07XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi5oY2cgPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHZhciByID0gcmdiWzBdIC8gMjU1O1xuICAgICAgdmFyIGcgPSByZ2JbMV0gLyAyNTU7XG4gICAgICB2YXIgYiA9IHJnYlsyXSAvIDI1NTtcbiAgICAgIHZhciBtYXggPSBNYXRoLm1heChNYXRoLm1heChyLCBnKSwgYik7XG4gICAgICB2YXIgbWluID0gTWF0aC5taW4oTWF0aC5taW4ociwgZyksIGIpO1xuICAgICAgdmFyIGNocm9tYSA9IG1heCAtIG1pbjtcbiAgICAgIHZhciBncmF5c2NhbGU7XG4gICAgICB2YXIgaHVlO1xuICAgICAgaWYgKGNocm9tYSA8IDEpIHtcbiAgICAgICAgZ3JheXNjYWxlID0gbWluIC8gKDEgLSBjaHJvbWEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JheXNjYWxlID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjaHJvbWEgPD0gMCkge1xuICAgICAgICBodWUgPSAwO1xuICAgICAgfSBlbHNlIGlmIChtYXggPT09IHIpIHtcbiAgICAgICAgaHVlID0gKGcgLSBiKSAvIGNocm9tYSAlIDY7XG4gICAgICB9IGVsc2UgaWYgKG1heCA9PT0gZykge1xuICAgICAgICBodWUgPSAyICsgKGIgLSByKSAvIGNocm9tYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGh1ZSA9IDQgKyAociAtIGcpIC8gY2hyb21hICsgNDtcbiAgICAgIH1cbiAgICAgIGh1ZSAvPSA2O1xuICAgICAgaHVlICU9IDE7XG4gICAgICByZXR1cm4gW2h1ZSAqIDM2MCwgY2hyb21hICogMTAwLCBncmF5c2NhbGUgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5oc2wuaGNnID0gZnVuY3Rpb24oaHNsKSB7XG4gICAgICB2YXIgcyA9IGhzbFsxXSAvIDEwMDtcbiAgICAgIHZhciBsID0gaHNsWzJdIC8gMTAwO1xuICAgICAgdmFyIGMgPSAxO1xuICAgICAgdmFyIGYgPSAwO1xuICAgICAgaWYgKGwgPCAwLjUpIHtcbiAgICAgICAgYyA9IDIgKiBzICogbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGMgPSAyICogcyAqICgxIC0gbCk7XG4gICAgICB9XG4gICAgICBpZiAoYyA8IDEpIHtcbiAgICAgICAgZiA9IChsIC0gMC41ICogYykgLyAoMSAtIGMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtoc2xbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5oc3YuaGNnID0gZnVuY3Rpb24oaHN2KSB7XG4gICAgICB2YXIgcyA9IGhzdlsxXSAvIDEwMDtcbiAgICAgIHZhciB2ID0gaHN2WzJdIC8gMTAwO1xuICAgICAgdmFyIGMgPSBzICogdjtcbiAgICAgIHZhciBmID0gMDtcbiAgICAgIGlmIChjIDwgMSkge1xuICAgICAgICBmID0gKHYgLSBjKSAvICgxIC0gYyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW2hzdlswXSwgYyAqIDEwMCwgZiAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0LmhjZy5yZ2IgPSBmdW5jdGlvbihoY2cpIHtcbiAgICAgIHZhciBoID0gaGNnWzBdIC8gMzYwO1xuICAgICAgdmFyIGMgPSBoY2dbMV0gLyAxMDA7XG4gICAgICB2YXIgZyA9IGhjZ1syXSAvIDEwMDtcbiAgICAgIGlmIChjID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbZyAqIDI1NSwgZyAqIDI1NSwgZyAqIDI1NV07XG4gICAgICB9XG4gICAgICB2YXIgcHVyZSA9IFswLCAwLCAwXTtcbiAgICAgIHZhciBoaSA9IGggJSAxICogNjtcbiAgICAgIHZhciB2ID0gaGkgJSAxO1xuICAgICAgdmFyIHcgPSAxIC0gdjtcbiAgICAgIHZhciBtZyA9IDA7XG4gICAgICBzd2l0Y2ggKE1hdGguZmxvb3IoaGkpKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICBwdXJlWzBdID0gMTtcbiAgICAgICAgICBwdXJlWzFdID0gdjtcbiAgICAgICAgICBwdXJlWzJdID0gMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHB1cmVbMF0gPSB3O1xuICAgICAgICAgIHB1cmVbMV0gPSAxO1xuICAgICAgICAgIHB1cmVbMl0gPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcHVyZVswXSA9IDA7XG4gICAgICAgICAgcHVyZVsxXSA9IDE7XG4gICAgICAgICAgcHVyZVsyXSA9IHY7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBwdXJlWzBdID0gMDtcbiAgICAgICAgICBwdXJlWzFdID0gdztcbiAgICAgICAgICBwdXJlWzJdID0gMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHB1cmVbMF0gPSB2O1xuICAgICAgICAgIHB1cmVbMV0gPSAwO1xuICAgICAgICAgIHB1cmVbMl0gPSAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHB1cmVbMF0gPSAxO1xuICAgICAgICAgIHB1cmVbMV0gPSAwO1xuICAgICAgICAgIHB1cmVbMl0gPSB3O1xuICAgICAgfVxuICAgICAgbWcgPSAoMSAtIGMpICogZztcbiAgICAgIHJldHVybiBbKGMgKiBwdXJlWzBdICsgbWcpICogMjU1LCAoYyAqIHB1cmVbMV0gKyBtZykgKiAyNTUsIChjICogcHVyZVsyXSArIG1nKSAqIDI1NV07XG4gICAgfTtcbiAgICBjb252ZXJ0LmhjZy5oc3YgPSBmdW5jdGlvbihoY2cpIHtcbiAgICAgIHZhciBjID0gaGNnWzFdIC8gMTAwO1xuICAgICAgdmFyIGcgPSBoY2dbMl0gLyAxMDA7XG4gICAgICB2YXIgdiA9IGMgKyBnICogKDEgLSBjKTtcbiAgICAgIHZhciBmID0gMDtcbiAgICAgIGlmICh2ID4gMCkge1xuICAgICAgICBmID0gYyAvIHY7XG4gICAgICB9XG4gICAgICByZXR1cm4gW2hjZ1swXSwgZiAqIDEwMCwgdiAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0LmhjZy5oc2wgPSBmdW5jdGlvbihoY2cpIHtcbiAgICAgIHZhciBjID0gaGNnWzFdIC8gMTAwO1xuICAgICAgdmFyIGcgPSBoY2dbMl0gLyAxMDA7XG4gICAgICB2YXIgbCA9IGcgKiAoMSAtIGMpICsgMC41ICogYztcbiAgICAgIHZhciBzID0gMDtcbiAgICAgIGlmIChsID4gMCAmJiBsIDwgMC41KSB7XG4gICAgICAgIHMgPSBjIC8gKDIgKiBsKTtcbiAgICAgIH0gZWxzZSBpZiAobCA+PSAwLjUgJiYgbCA8IDEpIHtcbiAgICAgICAgcyA9IGMgLyAoMiAqICgxIC0gbCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtoY2dbMF0sIHMgKiAxMDAsIGwgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5oY2cuaHdiID0gZnVuY3Rpb24oaGNnKSB7XG4gICAgICB2YXIgYyA9IGhjZ1sxXSAvIDEwMDtcbiAgICAgIHZhciBnID0gaGNnWzJdIC8gMTAwO1xuICAgICAgdmFyIHYgPSBjICsgZyAqICgxIC0gYyk7XG4gICAgICByZXR1cm4gW2hjZ1swXSwgKHYgLSBjKSAqIDEwMCwgKDEgLSB2KSAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0Lmh3Yi5oY2cgPSBmdW5jdGlvbihod2IpIHtcbiAgICAgIHZhciB3ID0gaHdiWzFdIC8gMTAwO1xuICAgICAgdmFyIGIgPSBod2JbMl0gLyAxMDA7XG4gICAgICB2YXIgdiA9IDEgLSBiO1xuICAgICAgdmFyIGMgPSB2IC0gdztcbiAgICAgIHZhciBnID0gMDtcbiAgICAgIGlmIChjIDwgMSkge1xuICAgICAgICBnID0gKHYgLSBjKSAvICgxIC0gYyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW2h3YlswXSwgYyAqIDEwMCwgZyAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0LmFwcGxlLnJnYiA9IGZ1bmN0aW9uKGFwcGxlKSB7XG4gICAgICByZXR1cm4gW2FwcGxlWzBdIC8gNjU1MzUgKiAyNTUsIGFwcGxlWzFdIC8gNjU1MzUgKiAyNTUsIGFwcGxlWzJdIC8gNjU1MzUgKiAyNTVdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuYXBwbGUgPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHJldHVybiBbcmdiWzBdIC8gMjU1ICogNjU1MzUsIHJnYlsxXSAvIDI1NSAqIDY1NTM1LCByZ2JbMl0gLyAyNTUgKiA2NTUzNV07XG4gICAgfTtcbiAgICBjb252ZXJ0LmdyYXkucmdiID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgcmV0dXJuIFthcmdzWzBdIC8gMTAwICogMjU1LCBhcmdzWzBdIC8gMTAwICogMjU1LCBhcmdzWzBdIC8gMTAwICogMjU1XTtcbiAgICB9O1xuICAgIGNvbnZlcnQuZ3JheS5oc2wgPSBjb252ZXJ0LmdyYXkuaHN2ID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgcmV0dXJuIFswLCAwLCBhcmdzWzBdXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuZ3JheS5od2IgPSBmdW5jdGlvbihncmF5KSB7XG4gICAgICByZXR1cm4gWzAsIDEwMCwgZ3JheVswXV07XG4gICAgfTtcbiAgICBjb252ZXJ0LmdyYXkuY215ayA9IGZ1bmN0aW9uKGdyYXkpIHtcbiAgICAgIHJldHVybiBbMCwgMCwgMCwgZ3JheVswXV07XG4gICAgfTtcbiAgICBjb252ZXJ0LmdyYXkubGFiID0gZnVuY3Rpb24oZ3JheSkge1xuICAgICAgcmV0dXJuIFtncmF5WzBdLCAwLCAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuZ3JheS5oZXggPSBmdW5jdGlvbihncmF5KSB7XG4gICAgICB2YXIgdmFsID0gTWF0aC5yb3VuZChncmF5WzBdIC8gMTAwICogMjU1KSAmIDI1NTtcbiAgICAgIHZhciBpbnRlZ2VyID0gKHZhbCA8PCAxNikgKyAodmFsIDw8IDgpICsgdmFsO1xuICAgICAgdmFyIHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgICByZXR1cm4gXCIwMDAwMDBcIi5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi5ncmF5ID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICB2YXIgdmFsID0gKHJnYlswXSArIHJnYlsxXSArIHJnYlsyXSkgLyAzO1xuICAgICAgcmV0dXJuIFt2YWwgLyAyNTUgKiAxMDBdO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcm91dGUgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9yb3V0ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGNvbnZlcnNpb25zID0gcmVxdWlyZV9jb252ZXJzaW9ucygpO1xuICAgIGZ1bmN0aW9uIGJ1aWxkR3JhcGgoKSB7XG4gICAgICB2YXIgZ3JhcGggPSB7fTtcbiAgICAgIHZhciBtb2RlbHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9ucyk7XG4gICAgICBmb3IgKHZhciBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGdyYXBoW21vZGVsc1tpXV0gPSB7XG4gICAgICAgICAgZGlzdGFuY2U6IC0xLFxuICAgICAgICAgIHBhcmVudDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdyYXBoO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXJpdmVCRlMoZnJvbU1vZGVsKSB7XG4gICAgICB2YXIgZ3JhcGggPSBidWlsZEdyYXBoKCk7XG4gICAgICB2YXIgcXVldWUgPSBbZnJvbU1vZGVsXTtcbiAgICAgIGdyYXBoW2Zyb21Nb2RlbF0uZGlzdGFuY2UgPSAwO1xuICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICB2YXIgY3VycmVudCA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICB2YXIgYWRqYWNlbnRzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnNbY3VycmVudF0pO1xuICAgICAgICBmb3IgKHZhciBsZW4gPSBhZGphY2VudHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgdmFyIGFkamFjZW50ID0gYWRqYWNlbnRzW2ldO1xuICAgICAgICAgIHZhciBub2RlID0gZ3JhcGhbYWRqYWNlbnRdO1xuICAgICAgICAgIGlmIChub2RlLmRpc3RhbmNlID09PSAtMSkge1xuICAgICAgICAgICAgbm9kZS5kaXN0YW5jZSA9IGdyYXBoW2N1cnJlbnRdLmRpc3RhbmNlICsgMTtcbiAgICAgICAgICAgIG5vZGUucGFyZW50ID0gY3VycmVudDtcbiAgICAgICAgICAgIHF1ZXVlLnVuc2hpZnQoYWRqYWNlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGdyYXBoO1xuICAgIH1cbiAgICBmdW5jdGlvbiBsaW5rKGZyb20sIHRvKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oYXJncykge1xuICAgICAgICByZXR1cm4gdG8oZnJvbShhcmdzKSk7XG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiB3cmFwQ29udmVyc2lvbih0b01vZGVsLCBncmFwaCkge1xuICAgICAgdmFyIHBhdGggPSBbZ3JhcGhbdG9Nb2RlbF0ucGFyZW50LCB0b01vZGVsXTtcbiAgICAgIHZhciBmbiA9IGNvbnZlcnNpb25zW2dyYXBoW3RvTW9kZWxdLnBhcmVudF1bdG9Nb2RlbF07XG4gICAgICB2YXIgY3VyID0gZ3JhcGhbdG9Nb2RlbF0ucGFyZW50O1xuICAgICAgd2hpbGUgKGdyYXBoW2N1cl0ucGFyZW50KSB7XG4gICAgICAgIHBhdGgudW5zaGlmdChncmFwaFtjdXJdLnBhcmVudCk7XG4gICAgICAgIGZuID0gbGluayhjb252ZXJzaW9uc1tncmFwaFtjdXJdLnBhcmVudF1bY3VyXSwgZm4pO1xuICAgICAgICBjdXIgPSBncmFwaFtjdXJdLnBhcmVudDtcbiAgICAgIH1cbiAgICAgIGZuLmNvbnZlcnNpb24gPSBwYXRoO1xuICAgICAgcmV0dXJuIGZuO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihmcm9tTW9kZWwpIHtcbiAgICAgIHZhciBncmFwaCA9IGRlcml2ZUJGUyhmcm9tTW9kZWwpO1xuICAgICAgdmFyIGNvbnZlcnNpb24gPSB7fTtcbiAgICAgIHZhciBtb2RlbHMgPSBPYmplY3Qua2V5cyhncmFwaCk7XG4gICAgICBmb3IgKHZhciBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciB0b01vZGVsID0gbW9kZWxzW2ldO1xuICAgICAgICB2YXIgbm9kZSA9IGdyYXBoW3RvTW9kZWxdO1xuICAgICAgICBpZiAobm9kZS5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb252ZXJzaW9uW3RvTW9kZWxdID0gd3JhcENvbnZlcnNpb24odG9Nb2RlbCwgZ3JhcGgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnZlcnNpb247XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb2xvcl9jb252ZXJ0ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvbG9yLWNvbnZlcnQvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBjb252ZXJzaW9ucyA9IHJlcXVpcmVfY29udmVyc2lvbnMoKTtcbiAgICB2YXIgcm91dGUgPSByZXF1aXJlX3JvdXRlKCk7XG4gICAgdmFyIGNvbnZlcnQgPSB7fTtcbiAgICB2YXIgbW9kZWxzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnMpO1xuICAgIGZ1bmN0aW9uIHdyYXBSYXcoZm4pIHtcbiAgICAgIHZhciB3cmFwcGVkRm4gPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIGlmIChhcmdzID09PSB2b2lkIDAgfHwgYXJncyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbihhcmdzKTtcbiAgICAgIH07XG4gICAgICBpZiAoXCJjb252ZXJzaW9uXCIgaW4gZm4pIHtcbiAgICAgICAgd3JhcHBlZEZuLmNvbnZlcnNpb24gPSBmbi5jb252ZXJzaW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZWRGbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gd3JhcFJvdW5kZWQoZm4pIHtcbiAgICAgIHZhciB3cmFwcGVkRm4gPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIGlmIChhcmdzID09PSB2b2lkIDAgfHwgYXJncyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmbihhcmdzKTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBmb3IgKHZhciBsZW4gPSByZXN1bHQubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBNYXRoLnJvdW5kKHJlc3VsdFtpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgaWYgKFwiY29udmVyc2lvblwiIGluIGZuKSB7XG4gICAgICAgIHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVkRm47XG4gICAgfVxuICAgIG1vZGVscy5mb3JFYWNoKGZ1bmN0aW9uKGZyb21Nb2RlbCkge1xuICAgICAgY29udmVydFtmcm9tTW9kZWxdID0ge307XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFtmcm9tTW9kZWxdLCBcImNoYW5uZWxzXCIsIHtcbiAgICAgICAgdmFsdWU6IGNvbnZlcnNpb25zW2Zyb21Nb2RlbF0uY2hhbm5lbHNcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbZnJvbU1vZGVsXSwgXCJsYWJlbHNcIiwge1xuICAgICAgICB2YWx1ZTogY29udmVyc2lvbnNbZnJvbU1vZGVsXS5sYWJlbHNcbiAgICAgIH0pO1xuICAgICAgdmFyIHJvdXRlcyA9IHJvdXRlKGZyb21Nb2RlbCk7XG4gICAgICB2YXIgcm91dGVNb2RlbHMgPSBPYmplY3Qua2V5cyhyb3V0ZXMpO1xuICAgICAgcm91dGVNb2RlbHMuZm9yRWFjaChmdW5jdGlvbih0b01vZGVsKSB7XG4gICAgICAgIHZhciBmbiA9IHJvdXRlc1t0b01vZGVsXTtcbiAgICAgICAgY29udmVydFtmcm9tTW9kZWxdW3RvTW9kZWxdID0gd3JhcFJvdW5kZWQoZm4pO1xuICAgICAgICBjb252ZXJ0W2Zyb21Nb2RlbF1bdG9Nb2RlbF0ucmF3ID0gd3JhcFJhdyhmbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBjb252ZXJ0O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2Fuc2lfc3R5bGVzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2Fuc2ktc3R5bGVzL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgY29sb3JDb252ZXJ0ID0gcmVxdWlyZV9jb2xvcl9jb252ZXJ0KCk7XG4gICAgdmFyIHdyYXBBbnNpMTYgPSAoZm4sIG9mZnNldCkgPT4gZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBjb2RlID0gZm4uYXBwbHkoY29sb3JDb252ZXJ0LCBhcmd1bWVudHMpO1xuICAgICAgcmV0dXJuIGBcXHgxQlske2NvZGUgKyBvZmZzZXR9bWA7XG4gICAgfTtcbiAgICB2YXIgd3JhcEFuc2kyNTYgPSAoZm4sIG9mZnNldCkgPT4gZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBjb2RlID0gZm4uYXBwbHkoY29sb3JDb252ZXJ0LCBhcmd1bWVudHMpO1xuICAgICAgcmV0dXJuIGBcXHgxQlskezM4ICsgb2Zmc2V0fTs1OyR7Y29kZX1tYDtcbiAgICB9O1xuICAgIHZhciB3cmFwQW5zaTE2bSA9IChmbiwgb2Zmc2V0KSA9PiBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IHJnYiA9IGZuLmFwcGx5KGNvbG9yQ29udmVydCwgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBgXFx4MUJbJHszOCArIG9mZnNldH07Mjske3JnYlswXX07JHtyZ2JbMV19OyR7cmdiWzJdfW1gO1xuICAgIH07XG4gICAgZnVuY3Rpb24gYXNzZW1ibGVTdHlsZXMoKSB7XG4gICAgICBjb25zdCBjb2RlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIG1vZGlmaWVyOiB7XG4gICAgICAgICAgcmVzZXQ6IFswLCAwXSxcbiAgICAgICAgICBib2xkOiBbMSwgMjJdLFxuICAgICAgICAgIGRpbTogWzIsIDIyXSxcbiAgICAgICAgICBpdGFsaWM6IFszLCAyM10sXG4gICAgICAgICAgdW5kZXJsaW5lOiBbNCwgMjRdLFxuICAgICAgICAgIGludmVyc2U6IFs3LCAyN10sXG4gICAgICAgICAgaGlkZGVuOiBbOCwgMjhdLFxuICAgICAgICAgIHN0cmlrZXRocm91Z2g6IFs5LCAyOV1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICBibGFjazogWzMwLCAzOV0sXG4gICAgICAgICAgcmVkOiBbMzEsIDM5XSxcbiAgICAgICAgICBncmVlbjogWzMyLCAzOV0sXG4gICAgICAgICAgeWVsbG93OiBbMzMsIDM5XSxcbiAgICAgICAgICBibHVlOiBbMzQsIDM5XSxcbiAgICAgICAgICBtYWdlbnRhOiBbMzUsIDM5XSxcbiAgICAgICAgICBjeWFuOiBbMzYsIDM5XSxcbiAgICAgICAgICB3aGl0ZTogWzM3LCAzOV0sXG4gICAgICAgICAgZ3JheTogWzkwLCAzOV0sXG4gICAgICAgICAgcmVkQnJpZ2h0OiBbOTEsIDM5XSxcbiAgICAgICAgICBncmVlbkJyaWdodDogWzkyLCAzOV0sXG4gICAgICAgICAgeWVsbG93QnJpZ2h0OiBbOTMsIDM5XSxcbiAgICAgICAgICBibHVlQnJpZ2h0OiBbOTQsIDM5XSxcbiAgICAgICAgICBtYWdlbnRhQnJpZ2h0OiBbOTUsIDM5XSxcbiAgICAgICAgICBjeWFuQnJpZ2h0OiBbOTYsIDM5XSxcbiAgICAgICAgICB3aGl0ZUJyaWdodDogWzk3LCAzOV1cbiAgICAgICAgfSxcbiAgICAgICAgYmdDb2xvcjoge1xuICAgICAgICAgIGJnQmxhY2s6IFs0MCwgNDldLFxuICAgICAgICAgIGJnUmVkOiBbNDEsIDQ5XSxcbiAgICAgICAgICBiZ0dyZWVuOiBbNDIsIDQ5XSxcbiAgICAgICAgICBiZ1llbGxvdzogWzQzLCA0OV0sXG4gICAgICAgICAgYmdCbHVlOiBbNDQsIDQ5XSxcbiAgICAgICAgICBiZ01hZ2VudGE6IFs0NSwgNDldLFxuICAgICAgICAgIGJnQ3lhbjogWzQ2LCA0OV0sXG4gICAgICAgICAgYmdXaGl0ZTogWzQ3LCA0OV0sXG4gICAgICAgICAgYmdCbGFja0JyaWdodDogWzEwMCwgNDldLFxuICAgICAgICAgIGJnUmVkQnJpZ2h0OiBbMTAxLCA0OV0sXG4gICAgICAgICAgYmdHcmVlbkJyaWdodDogWzEwMiwgNDldLFxuICAgICAgICAgIGJnWWVsbG93QnJpZ2h0OiBbMTAzLCA0OV0sXG4gICAgICAgICAgYmdCbHVlQnJpZ2h0OiBbMTA0LCA0OV0sXG4gICAgICAgICAgYmdNYWdlbnRhQnJpZ2h0OiBbMTA1LCA0OV0sXG4gICAgICAgICAgYmdDeWFuQnJpZ2h0OiBbMTA2LCA0OV0sXG4gICAgICAgICAgYmdXaGl0ZUJyaWdodDogWzEwNywgNDldXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBzdHlsZXMuY29sb3IuZ3JleSA9IHN0eWxlcy5jb2xvci5ncmF5O1xuICAgICAgZm9yIChjb25zdCBncm91cE5hbWUgb2YgT2JqZWN0LmtleXMoc3R5bGVzKSkge1xuICAgICAgICBjb25zdCBncm91cCA9IHN0eWxlc1tncm91cE5hbWVdO1xuICAgICAgICBmb3IgKGNvbnN0IHN0eWxlTmFtZSBvZiBPYmplY3Qua2V5cyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBzdHlsZSA9IGdyb3VwW3N0eWxlTmFtZV07XG4gICAgICAgICAgc3R5bGVzW3N0eWxlTmFtZV0gPSB7XG4gICAgICAgICAgICBvcGVuOiBgXFx4MUJbJHtzdHlsZVswXX1tYCxcbiAgICAgICAgICAgIGNsb3NlOiBgXFx4MUJbJHtzdHlsZVsxXX1tYFxuICAgICAgICAgIH07XG4gICAgICAgICAgZ3JvdXBbc3R5bGVOYW1lXSA9IHN0eWxlc1tzdHlsZU5hbWVdO1xuICAgICAgICAgIGNvZGVzLnNldChzdHlsZVswXSwgc3R5bGVbMV0pO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdHlsZXMsIGdyb3VwTmFtZSwge1xuICAgICAgICAgIHZhbHVlOiBncm91cCxcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0eWxlcywgXCJjb2Rlc1wiLCB7XG4gICAgICAgICAgdmFsdWU6IGNvZGVzLFxuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgYW5zaTJhbnNpID0gKG4pID0+IG47XG4gICAgICBjb25zdCByZ2IycmdiID0gKHIsIGcsIGIpID0+IFtyLCBnLCBiXTtcbiAgICAgIHN0eWxlcy5jb2xvci5jbG9zZSA9IFwiXFx4MUJbMzltXCI7XG4gICAgICBzdHlsZXMuYmdDb2xvci5jbG9zZSA9IFwiXFx4MUJbNDltXCI7XG4gICAgICBzdHlsZXMuY29sb3IuYW5zaSA9IHtcbiAgICAgICAgYW5zaTogd3JhcEFuc2kxNihhbnNpMmFuc2ksIDApXG4gICAgICB9O1xuICAgICAgc3R5bGVzLmNvbG9yLmFuc2kyNTYgPSB7XG4gICAgICAgIGFuc2kyNTY6IHdyYXBBbnNpMjU2KGFuc2kyYW5zaSwgMClcbiAgICAgIH07XG4gICAgICBzdHlsZXMuY29sb3IuYW5zaTE2bSA9IHtcbiAgICAgICAgcmdiOiB3cmFwQW5zaTE2bShyZ2IycmdiLCAwKVxuICAgICAgfTtcbiAgICAgIHN0eWxlcy5iZ0NvbG9yLmFuc2kgPSB7XG4gICAgICAgIGFuc2k6IHdyYXBBbnNpMTYoYW5zaTJhbnNpLCAxMClcbiAgICAgIH07XG4gICAgICBzdHlsZXMuYmdDb2xvci5hbnNpMjU2ID0ge1xuICAgICAgICBhbnNpMjU2OiB3cmFwQW5zaTI1NihhbnNpMmFuc2ksIDEwKVxuICAgICAgfTtcbiAgICAgIHN0eWxlcy5iZ0NvbG9yLmFuc2kxNm0gPSB7XG4gICAgICAgIHJnYjogd3JhcEFuc2kxNm0ocmdiMnJnYiwgMTApXG4gICAgICB9O1xuICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGNvbG9yQ29udmVydCkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb2xvckNvbnZlcnRba2V5XSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1aXRlID0gY29sb3JDb252ZXJ0W2tleV07XG4gICAgICAgIGlmIChrZXkgPT09IFwiYW5zaTE2XCIpIHtcbiAgICAgICAgICBrZXkgPSBcImFuc2lcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJhbnNpMTZcIiBpbiBzdWl0ZSkge1xuICAgICAgICAgIHN0eWxlcy5jb2xvci5hbnNpW2tleV0gPSB3cmFwQW5zaTE2KHN1aXRlLmFuc2kxNiwgMCk7XG4gICAgICAgICAgc3R5bGVzLmJnQ29sb3IuYW5zaVtrZXldID0gd3JhcEFuc2kxNihzdWl0ZS5hbnNpMTYsIDEwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJhbnNpMjU2XCIgaW4gc3VpdGUpIHtcbiAgICAgICAgICBzdHlsZXMuY29sb3IuYW5zaTI1NltrZXldID0gd3JhcEFuc2kyNTYoc3VpdGUuYW5zaTI1NiwgMCk7XG4gICAgICAgICAgc3R5bGVzLmJnQ29sb3IuYW5zaTI1NltrZXldID0gd3JhcEFuc2kyNTYoc3VpdGUuYW5zaTI1NiwgMTApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcInJnYlwiIGluIHN1aXRlKSB7XG4gICAgICAgICAgc3R5bGVzLmNvbG9yLmFuc2kxNm1ba2V5XSA9IHdyYXBBbnNpMTZtKHN1aXRlLnJnYiwgMCk7XG4gICAgICAgICAgc3R5bGVzLmJnQ29sb3IuYW5zaTE2bVtrZXldID0gd3JhcEFuc2kxNm0oc3VpdGUucmdiLCAxMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUyLCBcImV4cG9ydHNcIiwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogYXNzZW1ibGVTdHlsZXNcbiAgICB9KTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9oYXNfZmxhZyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9AYmFiZWwvaGlnaGxpZ2h0L25vZGVfbW9kdWxlcy9oYXMtZmxhZy9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKGZsYWcsIGFyZ3YpID0+IHtcbiAgICAgIGFyZ3YgPSBhcmd2IHx8IHByb2Nlc3MuYXJndjtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGZsYWcuc3RhcnRzV2l0aChcIi1cIikgPyBcIlwiIDogZmxhZy5sZW5ndGggPT09IDEgPyBcIi1cIiA6IFwiLS1cIjtcbiAgICAgIGNvbnN0IHBvcyA9IGFyZ3YuaW5kZXhPZihwcmVmaXggKyBmbGFnKTtcbiAgICAgIGNvbnN0IHRlcm1pbmF0b3JQb3MgPSBhcmd2LmluZGV4T2YoXCItLVwiKTtcbiAgICAgIHJldHVybiBwb3MgIT09IC0xICYmICh0ZXJtaW5hdG9yUG9zID09PSAtMSA/IHRydWUgOiBwb3MgPCB0ZXJtaW5hdG9yUG9zKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3N1cHBvcnRzX2NvbG9yID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oaWdobGlnaHQvbm9kZV9tb2R1bGVzL3N1cHBvcnRzLWNvbG9yL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgb3MgPSByZXF1aXJlKFwib3NcIik7XG4gICAgdmFyIGhhc0ZsYWcgPSByZXF1aXJlX2hhc19mbGFnKCk7XG4gICAgdmFyIGVudiA9IHByb2Nlc3MuZW52O1xuICAgIHZhciBmb3JjZUNvbG9yO1xuICAgIGlmIChoYXNGbGFnKFwibm8tY29sb3JcIikgfHwgaGFzRmxhZyhcIm5vLWNvbG9yc1wiKSB8fCBoYXNGbGFnKFwiY29sb3I9ZmFsc2VcIikpIHtcbiAgICAgIGZvcmNlQ29sb3IgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGhhc0ZsYWcoXCJjb2xvclwiKSB8fCBoYXNGbGFnKFwiY29sb3JzXCIpIHx8IGhhc0ZsYWcoXCJjb2xvcj10cnVlXCIpIHx8IGhhc0ZsYWcoXCJjb2xvcj1hbHdheXNcIikpIHtcbiAgICAgIGZvcmNlQ29sb3IgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoXCJGT1JDRV9DT0xPUlwiIGluIGVudikge1xuICAgICAgZm9yY2VDb2xvciA9IGVudi5GT1JDRV9DT0xPUi5sZW5ndGggPT09IDAgfHwgcGFyc2VJbnQoZW52LkZPUkNFX0NPTE9SLCAxMCkgIT09IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZUxldmVsKGxldmVsKSB7XG4gICAgICBpZiAobGV2ZWwgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGV2ZWwsXG4gICAgICAgIGhhc0Jhc2ljOiB0cnVlLFxuICAgICAgICBoYXMyNTY6IGxldmVsID49IDIsXG4gICAgICAgIGhhczE2bTogbGV2ZWwgPj0gM1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3VwcG9ydHNDb2xvcihzdHJlYW0pIHtcbiAgICAgIGlmIChmb3JjZUNvbG9yID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNGbGFnKFwiY29sb3I9MTZtXCIpIHx8IGhhc0ZsYWcoXCJjb2xvcj1mdWxsXCIpIHx8IGhhc0ZsYWcoXCJjb2xvcj10cnVlY29sb3JcIikpIHtcbiAgICAgICAgcmV0dXJuIDM7XG4gICAgICB9XG4gICAgICBpZiAoaGFzRmxhZyhcImNvbG9yPTI1NlwiKSkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHJlYW0gJiYgIXN0cmVhbS5pc1RUWSAmJiBmb3JjZUNvbG9yICE9PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgY29uc3QgbWluID0gZm9yY2VDb2xvciA/IDEgOiAwO1xuICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIikge1xuICAgICAgICBjb25zdCBvc1JlbGVhc2UgPSBvcy5yZWxlYXNlKCkuc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAoTnVtYmVyKHByb2Nlc3MudmVyc2lvbnMubm9kZS5zcGxpdChcIi5cIilbMF0pID49IDggJiYgTnVtYmVyKG9zUmVsZWFzZVswXSkgPj0gMTAgJiYgTnVtYmVyKG9zUmVsZWFzZVsyXSkgPj0gMTA1ODYpIHtcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKG9zUmVsZWFzZVsyXSkgPj0gMTQ5MzEgPyAzIDogMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGlmIChcIkNJXCIgaW4gZW52KSB7XG4gICAgICAgIGlmIChbXCJUUkFWSVNcIiwgXCJDSVJDTEVDSVwiLCBcIkFQUFZFWU9SXCIsIFwiR0lUTEFCX0NJXCJdLnNvbWUoKHNpZ24pID0+IHNpZ24gaW4gZW52KSB8fCBlbnYuQ0lfTkFNRSA9PT0gXCJjb2Rlc2hpcFwiKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGlmIChcIlRFQU1DSVRZX1ZFUlNJT05cIiBpbiBlbnYpIHtcbiAgICAgICAgcmV0dXJuIC9eKDlcXC4oMCpbMS05XVxcZCopXFwufFxcZHsyLH1cXC4pLy50ZXN0KGVudi5URUFNQ0lUWV9WRVJTSU9OKSA/IDEgOiAwO1xuICAgICAgfVxuICAgICAgaWYgKGVudi5DT0xPUlRFUk0gPT09IFwidHJ1ZWNvbG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIDM7XG4gICAgICB9XG4gICAgICBpZiAoXCJURVJNX1BST0dSQU1cIiBpbiBlbnYpIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KChlbnYuVEVSTV9QUk9HUkFNX1ZFUlNJT04gfHwgXCJcIikuc3BsaXQoXCIuXCIpWzBdLCAxMCk7XG4gICAgICAgIHN3aXRjaCAoZW52LlRFUk1fUFJPR1JBTSkge1xuICAgICAgICAgIGNhc2UgXCJpVGVybS5hcHBcIjpcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uID49IDMgPyAzIDogMjtcbiAgICAgICAgICBjYXNlIFwiQXBwbGVfVGVybWluYWxcIjpcbiAgICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoLy0yNTYoY29sb3IpPyQvaS50ZXN0KGVudi5URVJNKSkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH1cbiAgICAgIGlmICgvXnNjcmVlbnxeeHRlcm18XnZ0MTAwfF52dDIyMHxecnh2dHxjb2xvcnxhbnNpfGN5Z3dpbnxsaW51eC9pLnRlc3QoZW52LlRFUk0pKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKFwiQ09MT1JURVJNXCIgaW4gZW52KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKGVudi5URVJNID09PSBcImR1bWJcIikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0U3VwcG9ydExldmVsKHN0cmVhbSkge1xuICAgICAgY29uc3QgbGV2ZWwgPSBzdXBwb3J0c0NvbG9yKHN0cmVhbSk7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBzdXBwb3J0c0NvbG9yOiBnZXRTdXBwb3J0TGV2ZWwsXG4gICAgICBzdGRvdXQ6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZG91dCksXG4gICAgICBzdGRlcnI6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZGVycilcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3RlbXBsYXRlcyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9AYmFiZWwvaGlnaGxpZ2h0L25vZGVfbW9kdWxlcy9jaGFsay90ZW1wbGF0ZXMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBURU1QTEFURV9SRUdFWCA9IC8oPzpcXFxcKHVbYS1mXFxkXXs0fXx4W2EtZlxcZF17Mn18LikpfCg/Olxceyh+KT8oXFx3Kyg/OlxcKFteKV0qXFwpKT8oPzpcXC5cXHcrKD86XFwoW14pXSpcXCkpPykqKSg/OlsgXFx0XXwoPz1cXHI/XFxuKSkpfChcXH0pfCgoPzoufFtcXHJcXG5cXGZdKSs/KS9naTtcbiAgICB2YXIgU1RZTEVfUkVHRVggPSAvKD86XnxcXC4pKFxcdyspKD86XFwoKFteKV0qKVxcKSk/L2c7XG4gICAgdmFyIFNUUklOR19SRUdFWCA9IC9eKFsnXCJdKSgoPzpcXFxcLnwoPyFcXDEpW15cXFxcXSkqKVxcMSQvO1xuICAgIHZhciBFU0NBUEVfUkVHRVggPSAvXFxcXCh1W2EtZlxcZF17NH18eFthLWZcXGRdezJ9fC4pfChbXlxcXFxdKS9naTtcbiAgICB2YXIgRVNDQVBFUyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKFtbXCJuXCIsIFwiXFxuXCJdLCBbXCJyXCIsIFwiXFxyXCJdLCBbXCJ0XCIsIFwiXHRcIl0sIFtcImJcIiwgXCJcXGJcIl0sIFtcImZcIiwgXCJcXGZcIl0sIFtcInZcIiwgXCJcXHZcIl0sIFtcIjBcIiwgXCJcXDBcIl0sIFtcIlxcXFxcIiwgXCJcXFxcXCJdLCBbXCJlXCIsIFwiXFx4MUJcIl0sIFtcImFcIiwgXCJcXHgwN1wiXV0pO1xuICAgIGZ1bmN0aW9uIHVuZXNjYXBlKGMpIHtcbiAgICAgIGlmIChjWzBdID09PSBcInVcIiAmJiBjLmxlbmd0aCA9PT0gNSB8fCBjWzBdID09PSBcInhcIiAmJiBjLmxlbmd0aCA9PT0gMykge1xuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChjLnNsaWNlKDEpLCAxNikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEVTQ0FQRVMuZ2V0KGMpIHx8IGM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKG5hbWUsIGFyZ3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgIGNvbnN0IGNodW5rcyA9IGFyZ3MudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovZyk7XG4gICAgICBsZXQgbWF0Y2hlcztcbiAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG4gICAgICAgIGlmICghaXNOYU4oY2h1bmspKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKE51bWJlcihjaHVuaykpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoZXMgPSBjaHVuay5tYXRjaChTVFJJTkdfUkVHRVgpKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKG1hdGNoZXNbMl0ucmVwbGFjZShFU0NBUEVfUkVHRVgsIChtLCBlc2NhcGUsIGNocikgPT4gZXNjYXBlID8gdW5lc2NhcGUoZXNjYXBlKSA6IGNocikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDaGFsayB0ZW1wbGF0ZSBzdHlsZSBhcmd1bWVudDogJHtjaHVua30gKGluIHN0eWxlICcke25hbWV9JylgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlU3R5bGUoc3R5bGUpIHtcbiAgICAgIFNUWUxFX1JFR0VYLmxhc3RJbmRleCA9IDA7XG4gICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICBsZXQgbWF0Y2hlcztcbiAgICAgIHdoaWxlICgobWF0Y2hlcyA9IFNUWUxFX1JFR0VYLmV4ZWMoc3R5bGUpKSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuYW1lID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgaWYgKG1hdGNoZXNbMl0pIHtcbiAgICAgICAgICBjb25zdCBhcmdzID0gcGFyc2VBcmd1bWVudHMobmFtZSwgbWF0Y2hlc1syXSk7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKFtuYW1lXS5jb25jYXQoYXJncykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdHMucHVzaChbbmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gYnVpbGRTdHlsZShjaGFsaywgc3R5bGVzKSB7XG4gICAgICBjb25zdCBlbmFibGVkID0ge307XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHN0eWxlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIGxheWVyLnN0eWxlcykge1xuICAgICAgICAgIGVuYWJsZWRbc3R5bGVbMF1dID0gbGF5ZXIuaW52ZXJzZSA/IG51bGwgOiBzdHlsZS5zbGljZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGN1cnJlbnQgPSBjaGFsaztcbiAgICAgIGZvciAoY29uc3Qgc3R5bGVOYW1lIG9mIE9iamVjdC5rZXlzKGVuYWJsZWQpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVuYWJsZWRbc3R5bGVOYW1lXSkpIHtcbiAgICAgICAgICBpZiAoIShzdHlsZU5hbWUgaW4gY3VycmVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBDaGFsayBzdHlsZTogJHtzdHlsZU5hbWV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbmFibGVkW3N0eWxlTmFtZV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbc3R5bGVOYW1lXS5hcHBseShjdXJyZW50LCBlbmFibGVkW3N0eWxlTmFtZV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtzdHlsZU5hbWVdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IChjaGFsaywgdG1wKSA9PiB7XG4gICAgICBjb25zdCBzdHlsZXMgPSBbXTtcbiAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgbGV0IGNodW5rID0gW107XG4gICAgICB0bXAucmVwbGFjZShURU1QTEFURV9SRUdFWCwgKG0sIGVzY2FwZUNoYXIsIGludmVyc2UsIHN0eWxlLCBjbG9zZSwgY2hyKSA9PiB7XG4gICAgICAgIGlmIChlc2NhcGVDaGFyKSB7XG4gICAgICAgICAgY2h1bmsucHVzaCh1bmVzY2FwZShlc2NhcGVDaGFyKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3R5bGUpIHtcbiAgICAgICAgICBjb25zdCBzdHIgPSBjaHVuay5qb2luKFwiXCIpO1xuICAgICAgICAgIGNodW5rID0gW107XG4gICAgICAgICAgY2h1bmtzLnB1c2goc3R5bGVzLmxlbmd0aCA9PT0gMCA/IHN0ciA6IGJ1aWxkU3R5bGUoY2hhbGssIHN0eWxlcykoc3RyKSk7XG4gICAgICAgICAgc3R5bGVzLnB1c2goe1xuICAgICAgICAgICAgaW52ZXJzZSxcbiAgICAgICAgICAgIHN0eWxlczogcGFyc2VTdHlsZShzdHlsZSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbG9zZSkge1xuICAgICAgICAgIGlmIChzdHlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGb3VuZCBleHRyYW5lb3VzIH0gaW4gQ2hhbGsgdGVtcGxhdGUgbGl0ZXJhbFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2h1bmtzLnB1c2goYnVpbGRTdHlsZShjaGFsaywgc3R5bGVzKShjaHVuay5qb2luKFwiXCIpKSk7XG4gICAgICAgICAgY2h1bmsgPSBbXTtcbiAgICAgICAgICBzdHlsZXMucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2h1bmsucHVzaChjaHIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNodW5rcy5wdXNoKGNodW5rLmpvaW4oXCJcIikpO1xuICAgICAgaWYgKHN0eWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGVyck1zZyA9IGBDaGFsayB0ZW1wbGF0ZSBsaXRlcmFsIGlzIG1pc3NpbmcgJHtzdHlsZXMubGVuZ3RofSBjbG9zaW5nIGJyYWNrZXQke3N0eWxlcy5sZW5ndGggPT09IDEgPyBcIlwiIDogXCJzXCJ9IChcXGB9XFxgKWA7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJNc2cpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNodW5rcy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY2hhbGsgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvQGJhYmVsL2hpZ2hsaWdodC9ub2RlX21vZHVsZXMvY2hhbGsvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBlc2NhcGVTdHJpbmdSZWdleHAgPSByZXF1aXJlX2VzY2FwZV9zdHJpbmdfcmVnZXhwKCk7XG4gICAgdmFyIGFuc2lTdHlsZXMgPSByZXF1aXJlX2Fuc2lfc3R5bGVzKCk7XG4gICAgdmFyIHN0ZG91dENvbG9yID0gcmVxdWlyZV9zdXBwb3J0c19jb2xvcigpLnN0ZG91dDtcbiAgICB2YXIgdGVtcGxhdGUgPSByZXF1aXJlX3RlbXBsYXRlcygpO1xuICAgIHZhciBpc1NpbXBsZVdpbmRvd3NUZXJtID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiICYmICEocHJvY2Vzcy5lbnYuVEVSTSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJ4dGVybVwiKTtcbiAgICB2YXIgbGV2ZWxNYXBwaW5nID0gW1wiYW5zaVwiLCBcImFuc2lcIiwgXCJhbnNpMjU2XCIsIFwiYW5zaTE2bVwiXTtcbiAgICB2YXIgc2tpcE1vZGVscyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcImdyYXlcIl0pO1xuICAgIHZhciBzdHlsZXMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBmdW5jdGlvbiBhcHBseU9wdGlvbnMob2JqLCBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgIGNvbnN0IHNjTGV2ZWwgPSBzdGRvdXRDb2xvciA/IHN0ZG91dENvbG9yLmxldmVsIDogMDtcbiAgICAgIG9iai5sZXZlbCA9IG9wdGlvbnMubGV2ZWwgPT09IHZvaWQgMCA/IHNjTGV2ZWwgOiBvcHRpb25zLmxldmVsO1xuICAgICAgb2JqLmVuYWJsZWQgPSBcImVuYWJsZWRcIiBpbiBvcHRpb25zID8gb3B0aW9ucy5lbmFibGVkIDogb2JqLmxldmVsID4gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gQ2hhbGsob3B0aW9ucykge1xuICAgICAgaWYgKCF0aGlzIHx8ICEodGhpcyBpbnN0YW5jZW9mIENoYWxrKSB8fCB0aGlzLnRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IGNoYWxrID0ge307XG4gICAgICAgIGFwcGx5T3B0aW9ucyhjaGFsaywgb3B0aW9ucyk7XG4gICAgICAgIGNoYWxrLnRlbXBsYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY29uc3QgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICByZXR1cm4gY2hhbGtUYWcuYXBwbHkobnVsbCwgW2NoYWxrLnRlbXBsYXRlXS5jb25jYXQoYXJncykpO1xuICAgICAgICB9O1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoY2hhbGssIENoYWxrLnByb3RvdHlwZSk7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihjaGFsay50ZW1wbGF0ZSwgY2hhbGspO1xuICAgICAgICBjaGFsay50ZW1wbGF0ZS5jb25zdHJ1Y3RvciA9IENoYWxrO1xuICAgICAgICByZXR1cm4gY2hhbGsudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBhcHBseU9wdGlvbnModGhpcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChpc1NpbXBsZVdpbmRvd3NUZXJtKSB7XG4gICAgICBhbnNpU3R5bGVzLmJsdWUub3BlbiA9IFwiXFx4MUJbOTRtXCI7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGFuc2lTdHlsZXMpKSB7XG4gICAgICBhbnNpU3R5bGVzW2tleV0uY2xvc2VSZSA9IG5ldyBSZWdFeHAoZXNjYXBlU3RyaW5nUmVnZXhwKGFuc2lTdHlsZXNba2V5XS5jbG9zZSksIFwiZ1wiKTtcbiAgICAgIHN0eWxlc1trZXldID0ge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgY29uc3QgY29kZXMgPSBhbnNpU3R5bGVzW2tleV07XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkLmNhbGwodGhpcywgdGhpcy5fc3R5bGVzID8gdGhpcy5fc3R5bGVzLmNvbmNhdChjb2RlcykgOiBbY29kZXNdLCB0aGlzLl9lbXB0eSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgc3R5bGVzLnZpc2libGUgPSB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBidWlsZC5jYWxsKHRoaXMsIHRoaXMuX3N0eWxlcyB8fCBbXSwgdHJ1ZSwgXCJ2aXNpYmxlXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgYW5zaVN0eWxlcy5jb2xvci5jbG9zZVJlID0gbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdSZWdleHAoYW5zaVN0eWxlcy5jb2xvci5jbG9zZSksIFwiZ1wiKTtcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIE9iamVjdC5rZXlzKGFuc2lTdHlsZXMuY29sb3IuYW5zaSkpIHtcbiAgICAgIGlmIChza2lwTW9kZWxzLmhhcyhtb2RlbCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzdHlsZXNbbW9kZWxdID0ge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgY29uc3QgbGV2ZWwgPSB0aGlzLmxldmVsO1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZW4gPSBhbnNpU3R5bGVzLmNvbG9yW2xldmVsTWFwcGluZ1tsZXZlbF1dW21vZGVsXS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgY29uc3QgY29kZXMgPSB7XG4gICAgICAgICAgICAgIG9wZW4sXG4gICAgICAgICAgICAgIGNsb3NlOiBhbnNpU3R5bGVzLmNvbG9yLmNsb3NlLFxuICAgICAgICAgICAgICBjbG9zZVJlOiBhbnNpU3R5bGVzLmNvbG9yLmNsb3NlUmVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gYnVpbGQuY2FsbCh0aGlzLCB0aGlzLl9zdHlsZXMgPyB0aGlzLl9zdHlsZXMuY29uY2F0KGNvZGVzKSA6IFtjb2Rlc10sIHRoaXMuX2VtcHR5LCBtb2RlbCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgYW5zaVN0eWxlcy5iZ0NvbG9yLmNsb3NlUmUgPSBuZXcgUmVnRXhwKGVzY2FwZVN0cmluZ1JlZ2V4cChhbnNpU3R5bGVzLmJnQ29sb3IuY2xvc2UpLCBcImdcIik7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBPYmplY3Qua2V5cyhhbnNpU3R5bGVzLmJnQ29sb3IuYW5zaSkpIHtcbiAgICAgIGlmIChza2lwTW9kZWxzLmhhcyhtb2RlbCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBiZ01vZGVsID0gXCJiZ1wiICsgbW9kZWxbMF0udG9VcHBlckNhc2UoKSArIG1vZGVsLnNsaWNlKDEpO1xuICAgICAgc3R5bGVzW2JnTW9kZWxdID0ge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgY29uc3QgbGV2ZWwgPSB0aGlzLmxldmVsO1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZW4gPSBhbnNpU3R5bGVzLmJnQ29sb3JbbGV2ZWxNYXBwaW5nW2xldmVsXV1bbW9kZWxdLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBjb25zdCBjb2RlcyA9IHtcbiAgICAgICAgICAgICAgb3BlbixcbiAgICAgICAgICAgICAgY2xvc2U6IGFuc2lTdHlsZXMuYmdDb2xvci5jbG9zZSxcbiAgICAgICAgICAgICAgY2xvc2VSZTogYW5zaVN0eWxlcy5iZ0NvbG9yLmNsb3NlUmVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gYnVpbGQuY2FsbCh0aGlzLCB0aGlzLl9zdHlsZXMgPyB0aGlzLl9zdHlsZXMuY29uY2F0KGNvZGVzKSA6IFtjb2Rlc10sIHRoaXMuX2VtcHR5LCBtb2RlbCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHByb3RvID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoKCkgPT4ge1xuICAgIH0sIHN0eWxlcyk7XG4gICAgZnVuY3Rpb24gYnVpbGQoX3N0eWxlcywgX2VtcHR5LCBrZXkpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFwcGx5U3R5bGUuYXBwbHkoYnVpbGRlciwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBidWlsZGVyLl9zdHlsZXMgPSBfc3R5bGVzO1xuICAgICAgYnVpbGRlci5fZW1wdHkgPSBfZW1wdHk7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShidWlsZGVyLCBcImxldmVsXCIsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBzZWxmLmxldmVsO1xuICAgICAgICB9LFxuICAgICAgICBzZXQobGV2ZWwpIHtcbiAgICAgICAgICBzZWxmLmxldmVsID0gbGV2ZWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJ1aWxkZXIsIFwiZW5hYmxlZFwiLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gc2VsZi5lbmFibGVkO1xuICAgICAgICB9LFxuICAgICAgICBzZXQoZW5hYmxlZCkge1xuICAgICAgICAgIHNlbGYuZW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYnVpbGRlci5oYXNHcmV5ID0gdGhpcy5oYXNHcmV5IHx8IGtleSA9PT0gXCJncmF5XCIgfHwga2V5ID09PSBcImdyZXlcIjtcbiAgICAgIGJ1aWxkZXIuX19wcm90b19fID0gcHJvdG87XG4gICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG4gICAgZnVuY3Rpb24gYXBwbHlTdHlsZSgpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBjb25zdCBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gICAgICBsZXQgc3RyID0gU3RyaW5nKGFyZ3VtZW50c1swXSk7XG4gICAgICBpZiAoYXJnc0xlbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzTGVuID4gMSkge1xuICAgICAgICBmb3IgKGxldCBhID0gMTsgYSA8IGFyZ3NMZW47IGErKykge1xuICAgICAgICAgIHN0ciArPSBcIiBcIiArIGFyZ3NbYV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5lbmFibGVkIHx8IHRoaXMubGV2ZWwgPD0gMCB8fCAhc3RyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbXB0eSA/IFwiXCIgOiBzdHI7XG4gICAgICB9XG4gICAgICBjb25zdCBvcmlnaW5hbERpbSA9IGFuc2lTdHlsZXMuZGltLm9wZW47XG4gICAgICBpZiAoaXNTaW1wbGVXaW5kb3dzVGVybSAmJiB0aGlzLmhhc0dyZXkpIHtcbiAgICAgICAgYW5zaVN0eWxlcy5kaW0ub3BlbiA9IFwiXCI7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGNvZGUgb2YgdGhpcy5fc3R5bGVzLnNsaWNlKCkucmV2ZXJzZSgpKSB7XG4gICAgICAgIHN0ciA9IGNvZGUub3BlbiArIHN0ci5yZXBsYWNlKGNvZGUuY2xvc2VSZSwgY29kZS5vcGVuKSArIGNvZGUuY2xvc2U7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXHI/XFxuL2csIGAke2NvZGUuY2xvc2V9JCYke2NvZGUub3Blbn1gKTtcbiAgICAgIH1cbiAgICAgIGFuc2lTdHlsZXMuZGltLm9wZW4gPSBvcmlnaW5hbERpbTtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoYWxrVGFnKGNoYWxrLCBzdHJpbmdzKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoc3RyaW5ncykpIHtcbiAgICAgICAgcmV0dXJuIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKS5qb2luKFwiIFwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtzdHJpbmdzLnJhd1swXV07XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydHMucHVzaChTdHJpbmcoYXJnc1tpIC0gMV0pLnJlcGxhY2UoL1t7fVxcXFxdL2csIFwiXFxcXCQmXCIpKTtcbiAgICAgICAgcGFydHMucHVzaChTdHJpbmcoc3RyaW5ncy5yYXdbaV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZW1wbGF0ZShjaGFsaywgcGFydHMuam9pbihcIlwiKSk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKENoYWxrLnByb3RvdHlwZSwgc3R5bGVzKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBDaGFsaygpO1xuICAgIG1vZHVsZTIuZXhwb3J0cy5zdXBwb3J0c0NvbG9yID0gc3Rkb3V0Q29sb3I7XG4gICAgbW9kdWxlMi5leHBvcnRzLmRlZmF1bHQgPSBtb2R1bGUyLmV4cG9ydHM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbGliMiA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9AYmFiZWwvaGlnaGxpZ2h0L2xpYi9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gaGlnaGxpZ2h0O1xuICAgIGV4cG9ydHMyLmdldENoYWxrID0gZ2V0Q2hhbGs7XG4gICAgZXhwb3J0czIuc2hvdWxkSGlnaGxpZ2h0ID0gc2hvdWxkSGlnaGxpZ2h0O1xuICAgIHZhciBfanNUb2tlbnMgPSByZXF1aXJlX2pzX3Rva2VucygpO1xuICAgIHZhciBfaGVscGVyVmFsaWRhdG9ySWRlbnRpZmllciA9IHJlcXVpcmVfbGliKCk7XG4gICAgdmFyIF9jaGFsayA9IHJlcXVpcmVfY2hhbGsoKTtcbiAgICB2YXIgc29tZXRpbWVzS2V5d29yZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJhc1wiLCBcImFzeW5jXCIsIFwiZnJvbVwiLCBcImdldFwiLCBcIm9mXCIsIFwic2V0XCJdKTtcbiAgICBmdW5jdGlvbiBnZXREZWZzKGNoYWxrKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXl3b3JkOiBjaGFsay5jeWFuLFxuICAgICAgICBjYXBpdGFsaXplZDogY2hhbGsueWVsbG93LFxuICAgICAgICBqc3hJZGVudGlmaWVyOiBjaGFsay55ZWxsb3csXG4gICAgICAgIHB1bmN0dWF0b3I6IGNoYWxrLnllbGxvdyxcbiAgICAgICAgbnVtYmVyOiBjaGFsay5tYWdlbnRhLFxuICAgICAgICBzdHJpbmc6IGNoYWxrLmdyZWVuLFxuICAgICAgICByZWdleDogY2hhbGsubWFnZW50YSxcbiAgICAgICAgY29tbWVudDogY2hhbGsuZ3JleSxcbiAgICAgICAgaW52YWxpZDogY2hhbGsud2hpdGUuYmdSZWQuYm9sZFxuICAgICAgfTtcbiAgICB9XG4gICAgdmFyIE5FV0xJTkUgPSAvXFxyXFxufFtcXG5cXHJcXHUyMDI4XFx1MjAyOV0vO1xuICAgIHZhciBCUkFDS0VUID0gL15bKClbXFxde31dJC87XG4gICAgdmFyIHRva2VuaXplO1xuICAgIHtcbiAgICAgIGNvbnN0IEpTWF9UQUcgPSAvXlthLXpdW1xcdy1dKiQvaTtcbiAgICAgIGNvbnN0IGdldFRva2VuVHlwZSA9IGZ1bmN0aW9uKHRva2VuLCBvZmZzZXQsIHRleHQpIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFwibmFtZVwiKSB7XG4gICAgICAgICAgaWYgKCgwLCBfaGVscGVyVmFsaWRhdG9ySWRlbnRpZmllci5pc0tleXdvcmQpKHRva2VuLnZhbHVlKSB8fCAoMCwgX2hlbHBlclZhbGlkYXRvcklkZW50aWZpZXIuaXNTdHJpY3RSZXNlcnZlZFdvcmQpKHRva2VuLnZhbHVlLCB0cnVlKSB8fCBzb21ldGltZXNLZXl3b3Jkcy5oYXModG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJrZXl3b3JkXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChKU1hfVEFHLnRlc3QodG9rZW4udmFsdWUpICYmICh0ZXh0W29mZnNldCAtIDFdID09PSBcIjxcIiB8fCB0ZXh0LnN1YnN0cihvZmZzZXQgLSAyLCAyKSA9PSBcIjwvXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJqc3hJZGVudGlmaWVyXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0b2tlbi52YWx1ZVswXSAhPT0gdG9rZW4udmFsdWVbMF0udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiY2FwaXRhbGl6ZWRcIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFwicHVuY3R1YXRvclwiICYmIEJSQUNLRVQudGVzdCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gXCJicmFja2V0XCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFwiaW52YWxpZFwiICYmICh0b2tlbi52YWx1ZSA9PT0gXCJAXCIgfHwgdG9rZW4udmFsdWUgPT09IFwiI1wiKSkge1xuICAgICAgICAgIHJldHVybiBcInB1bmN0dWF0b3JcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW4udHlwZTtcbiAgICAgIH07XG4gICAgICB0b2tlbml6ZSA9IGZ1bmN0aW9uKiAodGV4dCkge1xuICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgIHdoaWxlIChtYXRjaCA9IF9qc1Rva2Vucy5kZWZhdWx0LmV4ZWModGV4dCkpIHtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IF9qc1Rva2Vucy5tYXRjaFRvVG9rZW4obWF0Y2gpO1xuICAgICAgICAgIHlpZWxkIHtcbiAgICAgICAgICAgIHR5cGU6IGdldFRva2VuVHlwZSh0b2tlbiwgbWF0Y2guaW5kZXgsIHRleHQpLFxuICAgICAgICAgICAgdmFsdWU6IHRva2VuLnZhbHVlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGlnaGxpZ2h0VG9rZW5zKGRlZnMsIHRleHQpIHtcbiAgICAgIGxldCBoaWdobGlnaHRlZCA9IFwiXCI7XG4gICAgICBmb3IgKGNvbnN0IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmFsdWVcbiAgICAgIH0gb2YgdG9rZW5pemUodGV4dCkpIHtcbiAgICAgICAgY29uc3QgY29sb3JpemUgPSBkZWZzW3R5cGVdO1xuICAgICAgICBpZiAoY29sb3JpemUpIHtcbiAgICAgICAgICBoaWdobGlnaHRlZCArPSB2YWx1ZS5zcGxpdChORVdMSU5FKS5tYXAoKHN0cikgPT4gY29sb3JpemUoc3RyKSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoaWdobGlnaHRlZCArPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGRIaWdobGlnaHQob3B0aW9ucykge1xuICAgICAgcmV0dXJuICEhX2NoYWxrLnN1cHBvcnRzQ29sb3IgfHwgb3B0aW9ucy5mb3JjZUNvbG9yO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDaGFsayhvcHRpb25zKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5mb3JjZUNvbG9yID8gbmV3IF9jaGFsay5jb25zdHJ1Y3Rvcih7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGxldmVsOiAxXG4gICAgICB9KSA6IF9jaGFsaztcbiAgICB9XG4gICAgZnVuY3Rpb24gaGlnaGxpZ2h0KGNvZGUsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgaWYgKGNvZGUgIT09IFwiXCIgJiYgc2hvdWxkSGlnaGxpZ2h0KG9wdGlvbnMpKSB7XG4gICAgICAgIGNvbnN0IGNoYWxrID0gZ2V0Q2hhbGsob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGRlZnMgPSBnZXREZWZzKGNoYWxrKTtcbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodFRva2VucyhkZWZzLCBjb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9saWIzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9jb2RlLWZyYW1lL2xpYi9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5jb2RlRnJhbWVDb2x1bW5zID0gY29kZUZyYW1lQ29sdW1ucztcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gICAgdmFyIF9oaWdobGlnaHQgPSByZXF1aXJlX2xpYjIoKTtcbiAgICB2YXIgZGVwcmVjYXRpb25XYXJuaW5nU2hvd24gPSBmYWxzZTtcbiAgICBmdW5jdGlvbiBnZXREZWZzKGNoYWxrKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBndXR0ZXI6IGNoYWxrLmdyZXksXG4gICAgICAgIG1hcmtlcjogY2hhbGsucmVkLmJvbGQsXG4gICAgICAgIG1lc3NhZ2U6IGNoYWxrLnJlZC5ib2xkXG4gICAgICB9O1xuICAgIH1cbiAgICB2YXIgTkVXTElORSA9IC9cXHJcXG58W1xcblxcclxcdTIwMjhcXHUyMDI5XS87XG4gICAgZnVuY3Rpb24gZ2V0TWFya2VyTGluZXMobG9jLCBzb3VyY2UsIG9wdHMpIHtcbiAgICAgIGNvbnN0IHN0YXJ0TG9jID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGNvbHVtbjogMCxcbiAgICAgICAgbGluZTogLTFcbiAgICAgIH0sIGxvYy5zdGFydCk7XG4gICAgICBjb25zdCBlbmRMb2MgPSBPYmplY3QuYXNzaWduKHt9LCBzdGFydExvYywgbG9jLmVuZCk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxpbmVzQWJvdmUgPSAyLFxuICAgICAgICBsaW5lc0JlbG93ID0gM1xuICAgICAgfSA9IG9wdHMgfHwge307XG4gICAgICBjb25zdCBzdGFydExpbmUgPSBzdGFydExvYy5saW5lO1xuICAgICAgY29uc3Qgc3RhcnRDb2x1bW4gPSBzdGFydExvYy5jb2x1bW47XG4gICAgICBjb25zdCBlbmRMaW5lID0gZW5kTG9jLmxpbmU7XG4gICAgICBjb25zdCBlbmRDb2x1bW4gPSBlbmRMb2MuY29sdW1uO1xuICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnRMaW5lIC0gKGxpbmVzQWJvdmUgKyAxKSwgMCk7XG4gICAgICBsZXQgZW5kID0gTWF0aC5taW4oc291cmNlLmxlbmd0aCwgZW5kTGluZSArIGxpbmVzQmVsb3cpO1xuICAgICAgaWYgKHN0YXJ0TGluZSA9PT0gLTEpIHtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGVuZExpbmUgPT09IC0xKSB7XG4gICAgICAgIGVuZCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW5lRGlmZiA9IGVuZExpbmUgLSBzdGFydExpbmU7XG4gICAgICBjb25zdCBtYXJrZXJMaW5lcyA9IHt9O1xuICAgICAgaWYgKGxpbmVEaWZmKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGxpbmVEaWZmOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBsaW5lTnVtYmVyID0gaSArIHN0YXJ0TGluZTtcbiAgICAgICAgICBpZiAoIXN0YXJ0Q29sdW1uKSB7XG4gICAgICAgICAgICBtYXJrZXJMaW5lc1tsaW5lTnVtYmVyXSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VMZW5ndGggPSBzb3VyY2VbbGluZU51bWJlciAtIDFdLmxlbmd0aDtcbiAgICAgICAgICAgIG1hcmtlckxpbmVzW2xpbmVOdW1iZXJdID0gW3N0YXJ0Q29sdW1uLCBzb3VyY2VMZW5ndGggLSBzdGFydENvbHVtbiArIDFdO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gbGluZURpZmYpIHtcbiAgICAgICAgICAgIG1hcmtlckxpbmVzW2xpbmVOdW1iZXJdID0gWzAsIGVuZENvbHVtbl07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUxlbmd0aCA9IHNvdXJjZVtsaW5lTnVtYmVyIC0gaV0ubGVuZ3RoO1xuICAgICAgICAgICAgbWFya2VyTGluZXNbbGluZU51bWJlcl0gPSBbMCwgc291cmNlTGVuZ3RoXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdGFydENvbHVtbiA9PT0gZW5kQ29sdW1uKSB7XG4gICAgICAgICAgaWYgKHN0YXJ0Q29sdW1uKSB7XG4gICAgICAgICAgICBtYXJrZXJMaW5lc1tzdGFydExpbmVdID0gW3N0YXJ0Q29sdW1uLCAwXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFya2VyTGluZXNbc3RhcnRMaW5lXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hcmtlckxpbmVzW3N0YXJ0TGluZV0gPSBbc3RhcnRDb2x1bW4sIGVuZENvbHVtbiAtIHN0YXJ0Q29sdW1uXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIGVuZCxcbiAgICAgICAgbWFya2VyTGluZXNcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvZGVGcmFtZUNvbHVtbnMocmF3TGluZXMsIGxvYywgb3B0cyA9IHt9KSB7XG4gICAgICBjb25zdCBoaWdobGlnaHRlZCA9IChvcHRzLmhpZ2hsaWdodENvZGUgfHwgb3B0cy5mb3JjZUNvbG9yKSAmJiAoMCwgX2hpZ2hsaWdodC5zaG91bGRIaWdobGlnaHQpKG9wdHMpO1xuICAgICAgY29uc3QgY2hhbGsgPSAoMCwgX2hpZ2hsaWdodC5nZXRDaGFsaykob3B0cyk7XG4gICAgICBjb25zdCBkZWZzID0gZ2V0RGVmcyhjaGFsayk7XG4gICAgICBjb25zdCBtYXliZUhpZ2hsaWdodCA9IChjaGFsa0ZuLCBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkID8gY2hhbGtGbihzdHJpbmcpIDogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGxpbmVzID0gcmF3TGluZXMuc3BsaXQoTkVXTElORSk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBlbmQsXG4gICAgICAgIG1hcmtlckxpbmVzXG4gICAgICB9ID0gZ2V0TWFya2VyTGluZXMobG9jLCBsaW5lcywgb3B0cyk7XG4gICAgICBjb25zdCBoYXNDb2x1bW5zID0gbG9jLnN0YXJ0ICYmIHR5cGVvZiBsb2Muc3RhcnQuY29sdW1uID09PSBcIm51bWJlclwiO1xuICAgICAgY29uc3QgbnVtYmVyTWF4V2lkdGggPSBTdHJpbmcoZW5kKS5sZW5ndGg7XG4gICAgICBjb25zdCBoaWdobGlnaHRlZExpbmVzID0gaGlnaGxpZ2h0ZWQgPyAoMCwgX2hpZ2hsaWdodC5kZWZhdWx0KShyYXdMaW5lcywgb3B0cykgOiByYXdMaW5lcztcbiAgICAgIGxldCBmcmFtZSA9IGhpZ2hsaWdodGVkTGluZXMuc3BsaXQoTkVXTElORSwgZW5kKS5zbGljZShzdGFydCwgZW5kKS5tYXAoKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG51bWJlciA9IHN0YXJ0ICsgMSArIGluZGV4O1xuICAgICAgICBjb25zdCBwYWRkZWROdW1iZXIgPSBgICR7bnVtYmVyfWAuc2xpY2UoLW51bWJlck1heFdpZHRoKTtcbiAgICAgICAgY29uc3QgZ3V0dGVyID0gYCAke3BhZGRlZE51bWJlcn0gfGA7XG4gICAgICAgIGNvbnN0IGhhc01hcmtlciA9IG1hcmtlckxpbmVzW251bWJlcl07XG4gICAgICAgIGNvbnN0IGxhc3RNYXJrZXJMaW5lID0gIW1hcmtlckxpbmVzW251bWJlciArIDFdO1xuICAgICAgICBpZiAoaGFzTWFya2VyKSB7XG4gICAgICAgICAgbGV0IG1hcmtlckxpbmUgPSBcIlwiO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGhhc01hcmtlcikpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlclNwYWNpbmcgPSBsaW5lLnNsaWNlKDAsIE1hdGgubWF4KGhhc01hcmtlclswXSAtIDEsIDApKS5yZXBsYWNlKC9bXlxcdF0vZywgXCIgXCIpO1xuICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZNYXJrZXJzID0gaGFzTWFya2VyWzFdIHx8IDE7XG4gICAgICAgICAgICBtYXJrZXJMaW5lID0gW1wiXFxuIFwiLCBtYXliZUhpZ2hsaWdodChkZWZzLmd1dHRlciwgZ3V0dGVyLnJlcGxhY2UoL1xcZC9nLCBcIiBcIikpLCBcIiBcIiwgbWFya2VyU3BhY2luZywgbWF5YmVIaWdobGlnaHQoZGVmcy5tYXJrZXIsIFwiXlwiKS5yZXBlYXQobnVtYmVyT2ZNYXJrZXJzKV0uam9pbihcIlwiKTtcbiAgICAgICAgICAgIGlmIChsYXN0TWFya2VyTGluZSAmJiBvcHRzLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgbWFya2VyTGluZSArPSBcIiBcIiArIG1heWJlSGlnaGxpZ2h0KGRlZnMubWVzc2FnZSwgb3B0cy5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFttYXliZUhpZ2hsaWdodChkZWZzLm1hcmtlciwgXCI+XCIpLCBtYXliZUhpZ2hsaWdodChkZWZzLmd1dHRlciwgZ3V0dGVyKSwgbGluZS5sZW5ndGggPiAwID8gYCAke2xpbmV9YCA6IFwiXCIsIG1hcmtlckxpbmVdLmpvaW4oXCJcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGAgJHttYXliZUhpZ2hsaWdodChkZWZzLmd1dHRlciwgZ3V0dGVyKX0ke2xpbmUubGVuZ3RoID4gMCA/IGAgJHtsaW5lfWAgOiBcIlwifWA7XG4gICAgICAgIH1cbiAgICAgIH0pLmpvaW4oXCJcXG5cIik7XG4gICAgICBpZiAob3B0cy5tZXNzYWdlICYmICFoYXNDb2x1bW5zKSB7XG4gICAgICAgIGZyYW1lID0gYCR7XCIgXCIucmVwZWF0KG51bWJlck1heFdpZHRoICsgMSl9JHtvcHRzLm1lc3NhZ2V9XG4ke2ZyYW1lfWA7XG4gICAgICB9XG4gICAgICBpZiAoaGlnaGxpZ2h0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGNoYWxrLnJlc2V0KGZyYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmcmFtZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX2RlZmF1bHQocmF3TGluZXMsIGxpbmVOdW1iZXIsIGNvbE51bWJlciwgb3B0cyA9IHt9KSB7XG4gICAgICBpZiAoIWRlcHJlY2F0aW9uV2FybmluZ1Nob3duKSB7XG4gICAgICAgIGRlcHJlY2F0aW9uV2FybmluZ1Nob3duID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IFwiUGFzc2luZyBsaW5lTnVtYmVyIGFuZCBjb2xOdW1iZXIgaXMgZGVwcmVjYXRlZCB0byBAYmFiZWwvY29kZS1mcmFtZS4gUGxlYXNlIHVzZSBgY29kZUZyYW1lQ29sdW1uc2AuXCI7XG4gICAgICAgIGlmIChwcm9jZXNzLmVtaXRXYXJuaW5nKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0V2FybmluZyhtZXNzYWdlLCBcIkRlcHJlY2F0aW9uV2FybmluZ1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkZXByZWNhdGlvbkVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgIGRlcHJlY2F0aW9uRXJyb3IubmFtZSA9IFwiRGVwcmVjYXRpb25XYXJuaW5nXCI7XG4gICAgICAgICAgY29uc29sZS53YXJuKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbE51bWJlciA9IE1hdGgubWF4KGNvbE51bWJlciwgMCk7XG4gICAgICBjb25zdCBsb2NhdGlvbiA9IHtcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICBjb2x1bW46IGNvbE51bWJlcixcbiAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gY29kZUZyYW1lQ29sdW1ucyhyYXdMaW5lcywgbG9jYXRpb24sIG9wdHMpO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJzZV9qc29uID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL3BhcnNlLWpzb24vaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBlcnJvckV4ID0gcmVxdWlyZV9lcnJvcl9leCgpO1xuICAgIHZhciBmYWxsYmFjayA9IHJlcXVpcmVfanNvbl9wYXJzZV9ldmVuX2JldHRlcl9lcnJvcnMoKTtcbiAgICB2YXIge1xuICAgICAgZGVmYXVsdDogTGluZXNBbmRDb2x1bW5zXG4gICAgfSA9IHJlcXVpcmVfYnVpbGQoKTtcbiAgICB2YXIge1xuICAgICAgY29kZUZyYW1lQ29sdW1uc1xuICAgIH0gPSByZXF1aXJlX2xpYjMoKTtcbiAgICB2YXIgSlNPTkVycm9yID0gZXJyb3JFeChcIkpTT05FcnJvclwiLCB7XG4gICAgICBmaWxlTmFtZTogZXJyb3JFeC5hcHBlbmQoXCJpbiAlc1wiKSxcbiAgICAgIGNvZGVGcmFtZTogZXJyb3JFeC5hcHBlbmQoXCJcXG5cXG4lc1xcblwiKVxuICAgIH0pO1xuICAgIHZhciBwYXJzZUpzb24gPSAoc3RyaW5nLCByZXZpdmVyLCBmaWxlbmFtZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZXZpdmVyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZpbGVuYW1lID0gcmV2aXZlcjtcbiAgICAgICAgcmV2aXZlciA9IG51bGw7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0cmluZywgcmV2aXZlcik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZmFsbGJhY2soc3RyaW5nLCByZXZpdmVyKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgICBjb25zdCBpbmRleE1hdGNoID0gZXJyb3IubWVzc2FnZS5tYXRjaCgvaW4gSlNPTiBhdCBwb3NpdGlvbiAoXFxkKykgd2hpbGUgcGFyc2luZy8pO1xuICAgICAgICBjb25zdCBqc29uRXJyb3IgPSBuZXcgSlNPTkVycm9yKGVycm9yKTtcbiAgICAgICAgaWYgKGZpbGVuYW1lKSB7XG4gICAgICAgICAganNvbkVycm9yLmZpbGVOYW1lID0gZmlsZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4TWF0Y2ggJiYgaW5kZXhNYXRjaC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSBuZXcgTGluZXNBbmRDb2x1bW5zKHN0cmluZyk7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBOdW1iZXIoaW5kZXhNYXRjaFsxXSk7XG4gICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBsaW5lcy5sb2NhdGlvbkZvckluZGV4KGluZGV4KTtcbiAgICAgICAgICBjb25zdCBjb2RlRnJhbWUgPSBjb2RlRnJhbWVDb2x1bW5zKHN0cmluZywge1xuICAgICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgICAgbGluZTogbG9jYXRpb24ubGluZSArIDEsXG4gICAgICAgICAgICAgIGNvbHVtbjogbG9jYXRpb24uY29sdW1uICsgMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIGhpZ2hsaWdodENvZGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBqc29uRXJyb3IuY29kZUZyYW1lID0gY29kZUZyYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGpzb25FcnJvcjtcbiAgICAgIH1cbiAgICB9O1xuICAgIHBhcnNlSnNvbi5KU09ORXJyb3IgPSBKU09ORXJyb3I7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gcGFyc2VKc29uO1xuICB9XG59KTtcbnZhciByZXF1aXJlX1BsYWluVmFsdWVfZWM4ZTU4OGUgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMveWFtbC9kaXN0L1BsYWluVmFsdWUtZWM4ZTU4OGUuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBDaGFyID0ge1xuICAgICAgQU5DSE9SOiBcIiZcIixcbiAgICAgIENPTU1FTlQ6IFwiI1wiLFxuICAgICAgVEFHOiBcIiFcIixcbiAgICAgIERJUkVDVElWRVNfRU5EOiBcIi1cIixcbiAgICAgIERPQ1VNRU5UX0VORDogXCIuXCJcbiAgICB9O1xuICAgIHZhciBUeXBlID0ge1xuICAgICAgQUxJQVM6IFwiQUxJQVNcIixcbiAgICAgIEJMQU5LX0xJTkU6IFwiQkxBTktfTElORVwiLFxuICAgICAgQkxPQ0tfRk9MREVEOiBcIkJMT0NLX0ZPTERFRFwiLFxuICAgICAgQkxPQ0tfTElURVJBTDogXCJCTE9DS19MSVRFUkFMXCIsXG4gICAgICBDT01NRU5UOiBcIkNPTU1FTlRcIixcbiAgICAgIERJUkVDVElWRTogXCJESVJFQ1RJVkVcIixcbiAgICAgIERPQ1VNRU5UOiBcIkRPQ1VNRU5UXCIsXG4gICAgICBGTE9XX01BUDogXCJGTE9XX01BUFwiLFxuICAgICAgRkxPV19TRVE6IFwiRkxPV19TRVFcIixcbiAgICAgIE1BUDogXCJNQVBcIixcbiAgICAgIE1BUF9LRVk6IFwiTUFQX0tFWVwiLFxuICAgICAgTUFQX1ZBTFVFOiBcIk1BUF9WQUxVRVwiLFxuICAgICAgUExBSU46IFwiUExBSU5cIixcbiAgICAgIFFVT1RFX0RPVUJMRTogXCJRVU9URV9ET1VCTEVcIixcbiAgICAgIFFVT1RFX1NJTkdMRTogXCJRVU9URV9TSU5HTEVcIixcbiAgICAgIFNFUTogXCJTRVFcIixcbiAgICAgIFNFUV9JVEVNOiBcIlNFUV9JVEVNXCJcbiAgICB9O1xuICAgIHZhciBkZWZhdWx0VGFnUHJlZml4ID0gXCJ0YWc6eWFtbC5vcmcsMjAwMjpcIjtcbiAgICB2YXIgZGVmYXVsdFRhZ3MgPSB7XG4gICAgICBNQVA6IFwidGFnOnlhbWwub3JnLDIwMDI6bWFwXCIsXG4gICAgICBTRVE6IFwidGFnOnlhbWwub3JnLDIwMDI6c2VxXCIsXG4gICAgICBTVFI6IFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXCJcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZpbmRMaW5lU3RhcnRzKHNyYykge1xuICAgICAgY29uc3QgbHMgPSBbMF07XG4gICAgICBsZXQgb2Zmc2V0ID0gc3JjLmluZGV4T2YoXCJcXG5cIik7XG4gICAgICB3aGlsZSAob2Zmc2V0ICE9PSAtMSkge1xuICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgbHMucHVzaChvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgPSBzcmMuaW5kZXhPZihcIlxcblwiLCBvZmZzZXQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTcmNJbmZvKGNzdCkge1xuICAgICAgbGV0IGxpbmVTdGFydHMsIHNyYztcbiAgICAgIGlmICh0eXBlb2YgY3N0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGxpbmVTdGFydHMgPSBmaW5kTGluZVN0YXJ0cyhjc3QpO1xuICAgICAgICBzcmMgPSBjc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjc3QpKVxuICAgICAgICAgIGNzdCA9IGNzdFswXTtcbiAgICAgICAgaWYgKGNzdCAmJiBjc3QuY29udGV4dCkge1xuICAgICAgICAgIGlmICghY3N0LmxpbmVTdGFydHMpXG4gICAgICAgICAgICBjc3QubGluZVN0YXJ0cyA9IGZpbmRMaW5lU3RhcnRzKGNzdC5jb250ZXh0LnNyYyk7XG4gICAgICAgICAgbGluZVN0YXJ0cyA9IGNzdC5saW5lU3RhcnRzO1xuICAgICAgICAgIHNyYyA9IGNzdC5jb250ZXh0LnNyYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGluZVN0YXJ0cyxcbiAgICAgICAgc3JjXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRMaW5lUG9zKG9mZnNldCwgY3N0KSB7XG4gICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gXCJudW1iZXJcIiB8fCBvZmZzZXQgPCAwKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbGluZVN0YXJ0cyxcbiAgICAgICAgc3JjXG4gICAgICB9ID0gZ2V0U3JjSW5mbyhjc3QpO1xuICAgICAgaWYgKCFsaW5lU3RhcnRzIHx8ICFzcmMgfHwgb2Zmc2V0ID4gc3JjLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVTdGFydHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBsaW5lU3RhcnRzW2ldO1xuICAgICAgICBpZiAob2Zmc2V0IDwgc3RhcnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGluZTogaSxcbiAgICAgICAgICAgIGNvbDogb2Zmc2V0IC0gbGluZVN0YXJ0c1tpIC0gMV0gKyAxXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2Zmc2V0ID09PSBzdGFydClcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGluZTogaSArIDEsXG4gICAgICAgICAgICBjb2w6IDFcbiAgICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgbGluZSA9IGxpbmVTdGFydHMubGVuZ3RoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgY29sOiBvZmZzZXQgLSBsaW5lU3RhcnRzW2xpbmUgLSAxXSArIDFcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldExpbmUobGluZSwgY3N0KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxpbmVTdGFydHMsXG4gICAgICAgIHNyY1xuICAgICAgfSA9IGdldFNyY0luZm8oY3N0KTtcbiAgICAgIGlmICghbGluZVN0YXJ0cyB8fCAhKGxpbmUgPj0gMSkgfHwgbGluZSA+IGxpbmVTdGFydHMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gbGluZVN0YXJ0c1tsaW5lIC0gMV07XG4gICAgICBsZXQgZW5kID0gbGluZVN0YXJ0c1tsaW5lXTtcbiAgICAgIHdoaWxlIChlbmQgJiYgZW5kID4gc3RhcnQgJiYgc3JjW2VuZCAtIDFdID09PSBcIlxcblwiKVxuICAgICAgICAtLWVuZDtcbiAgICAgIHJldHVybiBzcmMuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFByZXR0eUNvbnRleHQoe1xuICAgICAgc3RhcnQsXG4gICAgICBlbmRcbiAgICB9LCBjc3QsIG1heFdpZHRoID0gODApIHtcbiAgICAgIGxldCBzcmMgPSBnZXRMaW5lKHN0YXJ0LmxpbmUsIGNzdCk7XG4gICAgICBpZiAoIXNyYylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBsZXQge1xuICAgICAgICBjb2xcbiAgICAgIH0gPSBzdGFydDtcbiAgICAgIGlmIChzcmMubGVuZ3RoID4gbWF4V2lkdGgpIHtcbiAgICAgICAgaWYgKGNvbCA8PSBtYXhXaWR0aCAtIDEwKSB7XG4gICAgICAgICAgc3JjID0gc3JjLnN1YnN0cigwLCBtYXhXaWR0aCAtIDEpICsgXCJcXHUyMDI2XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaGFsZldpZHRoID0gTWF0aC5yb3VuZChtYXhXaWR0aCAvIDIpO1xuICAgICAgICAgIGlmIChzcmMubGVuZ3RoID4gY29sICsgaGFsZldpZHRoKVxuICAgICAgICAgICAgc3JjID0gc3JjLnN1YnN0cigwLCBjb2wgKyBoYWxmV2lkdGggLSAxKSArIFwiXFx1MjAyNlwiO1xuICAgICAgICAgIGNvbCAtPSBzcmMubGVuZ3RoIC0gbWF4V2lkdGg7XG4gICAgICAgICAgc3JjID0gXCJcXHUyMDI2XCIgKyBzcmMuc3Vic3RyKDEgLSBtYXhXaWR0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCBlcnJMZW4gPSAxO1xuICAgICAgbGV0IGVyckVuZCA9IFwiXCI7XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIGlmIChlbmQubGluZSA9PT0gc3RhcnQubGluZSAmJiBjb2wgKyAoZW5kLmNvbCAtIHN0YXJ0LmNvbCkgPD0gbWF4V2lkdGggKyAxKSB7XG4gICAgICAgICAgZXJyTGVuID0gZW5kLmNvbCAtIHN0YXJ0LmNvbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnJMZW4gPSBNYXRoLm1pbihzcmMubGVuZ3RoICsgMSwgbWF4V2lkdGgpIC0gY29sO1xuICAgICAgICAgIGVyckVuZCA9IFwiXFx1MjAyNlwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBvZmZzZXQgPSBjb2wgPiAxID8gXCIgXCIucmVwZWF0KGNvbCAtIDEpIDogXCJcIjtcbiAgICAgIGNvbnN0IGVyciA9IFwiXlwiLnJlcGVhdChlcnJMZW4pO1xuICAgICAgcmV0dXJuIGAke3NyY31cbiR7b2Zmc2V0fSR7ZXJyfSR7ZXJyRW5kfWA7XG4gICAgfVxuICAgIHZhciBSYW5nZSA9IGNsYXNzIHtcbiAgICAgIHN0YXRpYyBjb3B5KG9yaWcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZShvcmlnLnN0YXJ0LCBvcmlnLmVuZCk7XG4gICAgICB9XG4gICAgICBjb25zdHJ1Y3RvcihzdGFydCwgZW5kKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQgfHwgc3RhcnQ7XG4gICAgICB9XG4gICAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3RhcnQgIT09IFwibnVtYmVyXCIgfHwgIXRoaXMuZW5kIHx8IHRoaXMuZW5kIDw9IHRoaXMuc3RhcnQ7XG4gICAgICB9XG4gICAgICBzZXRPcmlnUmFuZ2UoY3IsIG9mZnNldCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kXG4gICAgICAgIH0gPSB0aGlzO1xuICAgICAgICBpZiAoY3IubGVuZ3RoID09PSAwIHx8IGVuZCA8PSBjclswXSkge1xuICAgICAgICAgIHRoaXMub3JpZ1N0YXJ0ID0gc3RhcnQ7XG4gICAgICAgICAgdGhpcy5vcmlnRW5kID0gZW5kO1xuICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkgPSBvZmZzZXQ7XG4gICAgICAgIHdoaWxlIChpIDwgY3IubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGNyW2ldID4gc3RhcnQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICArK2k7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcmlnU3RhcnQgPSBzdGFydCArIGk7XG4gICAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSBpO1xuICAgICAgICB3aGlsZSAoaSA8IGNyLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChjcltpXSA+PSBlbmQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICArK2k7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcmlnRW5kID0gZW5kICsgaTtcbiAgICAgICAgcmV0dXJuIG5leHRPZmZzZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgTm9kZSA9IGNsYXNzIHtcbiAgICAgIHN0YXRpYyBhZGRTdHJpbmdUZXJtaW5hdG9yKHNyYywgb2Zmc2V0LCBzdHIpIHtcbiAgICAgICAgaWYgKHN0cltzdHIubGVuZ3RoIC0gMV0gPT09IFwiXFxuXCIpXG4gICAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgICAgY29uc3QgbmV4dCA9IE5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG5leHQgPj0gc3JjLmxlbmd0aCB8fCBzcmNbbmV4dF0gPT09IFwiXFxuXCIgPyBzdHIgKyBcIlxcblwiIDogc3RyO1xuICAgICAgfVxuICAgICAgc3RhdGljIGF0RG9jdW1lbnRCb3VuZGFyeShzcmMsIG9mZnNldCwgc2VwKSB7XG4gICAgICAgIGNvbnN0IGNoMCA9IHNyY1tvZmZzZXRdO1xuICAgICAgICBpZiAoIWNoMClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgcHJldiA9IHNyY1tvZmZzZXQgLSAxXTtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldiAhPT0gXCJcXG5cIilcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChzZXApIHtcbiAgICAgICAgICBpZiAoY2gwICE9PSBzZXApXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGNoMCAhPT0gQ2hhci5ESVJFQ1RJVkVTX0VORCAmJiBjaDAgIT09IENoYXIuRE9DVU1FTlRfRU5EKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoMSA9IHNyY1tvZmZzZXQgKyAxXTtcbiAgICAgICAgY29uc3QgY2gyID0gc3JjW29mZnNldCArIDJdO1xuICAgICAgICBpZiAoY2gxICE9PSBjaDAgfHwgY2gyICE9PSBjaDApXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBjaDMgPSBzcmNbb2Zmc2V0ICsgM107XG4gICAgICAgIHJldHVybiAhY2gzIHx8IGNoMyA9PT0gXCJcXG5cIiB8fCBjaDMgPT09IFwiXHRcIiB8fCBjaDMgPT09IFwiIFwiO1xuICAgICAgfVxuICAgICAgc3RhdGljIGVuZE9mSWRlbnRpZmllcihzcmMsIG9mZnNldCkge1xuICAgICAgICBsZXQgY2ggPSBzcmNbb2Zmc2V0XTtcbiAgICAgICAgY29uc3QgaXNWZXJiYXRpbSA9IGNoID09PSBcIjxcIjtcbiAgICAgICAgY29uc3Qgbm90T2sgPSBpc1ZlcmJhdGltID8gW1wiXFxuXCIsIFwiXHRcIiwgXCIgXCIsIFwiPlwiXSA6IFtcIlxcblwiLCBcIlx0XCIsIFwiIFwiLCBcIltcIiwgXCJdXCIsIFwie1wiLCBcIn1cIiwgXCIsXCJdO1xuICAgICAgICB3aGlsZSAoY2ggJiYgbm90T2suaW5kZXhPZihjaCkgPT09IC0xKVxuICAgICAgICAgIGNoID0gc3JjW29mZnNldCArPSAxXTtcbiAgICAgICAgaWYgKGlzVmVyYmF0aW0gJiYgY2ggPT09IFwiPlwiKVxuICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc3RhdGljIGVuZE9mSW5kZW50KHNyYywgb2Zmc2V0KSB7XG4gICAgICAgIGxldCBjaCA9IHNyY1tvZmZzZXRdO1xuICAgICAgICB3aGlsZSAoY2ggPT09IFwiIFwiKVxuICAgICAgICAgIGNoID0gc3JjW29mZnNldCArPSAxXTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBlbmRPZkxpbmUoc3JjLCBvZmZzZXQpIHtcbiAgICAgICAgbGV0IGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIHdoaWxlIChjaCAmJiBjaCAhPT0gXCJcXG5cIilcbiAgICAgICAgICBjaCA9IHNyY1tvZmZzZXQgKz0gMV07XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICBzdGF0aWMgZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0KSB7XG4gICAgICAgIGxldCBjaCA9IHNyY1tvZmZzZXRdO1xuICAgICAgICB3aGlsZSAoY2ggPT09IFwiXHRcIiB8fCBjaCA9PT0gXCIgXCIpXG4gICAgICAgICAgY2ggPSBzcmNbb2Zmc2V0ICs9IDFdO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc3RhdGljIHN0YXJ0T2ZMaW5lKHNyYywgb2Zmc2V0KSB7XG4gICAgICAgIGxldCBjaCA9IHNyY1tvZmZzZXQgLSAxXTtcbiAgICAgICAgaWYgKGNoID09PSBcIlxcblwiKVxuICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgIHdoaWxlIChjaCAmJiBjaCAhPT0gXCJcXG5cIilcbiAgICAgICAgICBjaCA9IHNyY1tvZmZzZXQgLT0gMV07XG4gICAgICAgIHJldHVybiBvZmZzZXQgKyAxO1xuICAgICAgfVxuICAgICAgc3RhdGljIGVuZE9mQmxvY2tJbmRlbnQoc3JjLCBpbmRlbnQsIGxpbmVTdGFydCkge1xuICAgICAgICBjb25zdCBpbkVuZCA9IE5vZGUuZW5kT2ZJbmRlbnQoc3JjLCBsaW5lU3RhcnQpO1xuICAgICAgICBpZiAoaW5FbmQgPiBsaW5lU3RhcnQgKyBpbmRlbnQpIHtcbiAgICAgICAgICByZXR1cm4gaW5FbmQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgd3NFbmQgPSBOb2RlLmVuZE9mV2hpdGVTcGFjZShzcmMsIGluRW5kKTtcbiAgICAgICAgICBjb25zdCBjaCA9IHNyY1t3c0VuZF07XG4gICAgICAgICAgaWYgKCFjaCB8fCBjaCA9PT0gXCJcXG5cIilcbiAgICAgICAgICAgIHJldHVybiB3c0VuZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBhdEJsYW5rKHNyYywgb2Zmc2V0LCBlbmRBc0JsYW5rKSB7XG4gICAgICAgIGNvbnN0IGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIHJldHVybiBjaCA9PT0gXCJcXG5cIiB8fCBjaCA9PT0gXCJcdFwiIHx8IGNoID09PSBcIiBcIiB8fCBlbmRBc0JsYW5rICYmICFjaDtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBuZXh0Tm9kZUlzSW5kZW50ZWQoY2gsIGluZGVudERpZmYsIGluZGljYXRvckFzSW5kZW50KSB7XG4gICAgICAgIGlmICghY2ggfHwgaW5kZW50RGlmZiA8IDApXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoaW5kZW50RGlmZiA+IDApXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBpbmRpY2F0b3JBc0luZGVudCAmJiBjaCA9PT0gXCItXCI7XG4gICAgICB9XG4gICAgICBzdGF0aWMgbm9ybWFsaXplT2Zmc2V0KHNyYywgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIHJldHVybiAhY2ggPyBvZmZzZXQgOiBjaCAhPT0gXCJcXG5cIiAmJiBzcmNbb2Zmc2V0IC0gMV0gPT09IFwiXFxuXCIgPyBvZmZzZXQgLSAxIDogTm9kZS5lbmRPZldoaXRlU3BhY2Uoc3JjLCBvZmZzZXQpO1xuICAgICAgfVxuICAgICAgc3RhdGljIGZvbGROZXdsaW5lKHNyYywgb2Zmc2V0LCBpbmRlbnQpIHtcbiAgICAgICAgbGV0IGluQ291bnQgPSAwO1xuICAgICAgICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgbGV0IGZvbGQgPSBcIlwiO1xuICAgICAgICBsZXQgY2ggPSBzcmNbb2Zmc2V0ICsgMV07XG4gICAgICAgIHdoaWxlIChjaCA9PT0gXCIgXCIgfHwgY2ggPT09IFwiXHRcIiB8fCBjaCA9PT0gXCJcXG5cIikge1xuICAgICAgICAgIHN3aXRjaCAoY2gpIHtcbiAgICAgICAgICAgIGNhc2UgXCJcXG5cIjpcbiAgICAgICAgICAgICAgaW5Db3VudCA9IDA7XG4gICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICBmb2xkICs9IFwiXFxuXCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlx0XCI6XG4gICAgICAgICAgICAgIGlmIChpbkNvdW50IDw9IGluZGVudClcbiAgICAgICAgICAgICAgICBlcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIG9mZnNldCA9IE5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0ICsgMikgLSAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgICAgIGluQ291bnQgKz0gMTtcbiAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaCA9IHNyY1tvZmZzZXQgKyAxXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZvbGQpXG4gICAgICAgICAgZm9sZCA9IFwiIFwiO1xuICAgICAgICBpZiAoY2ggJiYgaW5Db3VudCA8PSBpbmRlbnQpXG4gICAgICAgICAgZXJyb3IgPSB0cnVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZvbGQsXG4gICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgIGVycm9yXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdHJ1Y3Rvcih0eXBlLCBwcm9wcywgY29udGV4dCkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJjb250ZXh0XCIsIHtcbiAgICAgICAgICB2YWx1ZTogY29udGV4dCB8fCBudWxsLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5yYW5nZSA9IG51bGw7XG4gICAgICAgIHRoaXMudmFsdWVSYW5nZSA9IG51bGw7XG4gICAgICAgIHRoaXMucHJvcHMgPSBwcm9wcyB8fCBbXTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBnZXRQcm9wVmFsdWUoaWR4LCBrZXksIHNraXBLZXkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRleHQpXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3QgcHJvcCA9IHRoaXMucHJvcHNbaWR4XTtcbiAgICAgICAgcmV0dXJuIHByb3AgJiYgc3JjW3Byb3Auc3RhcnRdID09PSBrZXkgPyBzcmMuc2xpY2UocHJvcC5zdGFydCArIChza2lwS2V5ID8gMSA6IDApLCBwcm9wLmVuZCkgOiBudWxsO1xuICAgICAgfVxuICAgICAgZ2V0IGFuY2hvcigpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb3BzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5nZXRQcm9wVmFsdWUoaSwgQ2hhci5BTkNIT1IsIHRydWUpO1xuICAgICAgICAgIGlmIChhbmNob3IgIT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBhbmNob3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBnZXQgY29tbWVudCgpIHtcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb3BzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY29uc3QgY29tbWVudCA9IHRoaXMuZ2V0UHJvcFZhbHVlKGksIENoYXIuQ09NTUVOVCwgdHJ1ZSk7XG4gICAgICAgICAgaWYgKGNvbW1lbnQgIT0gbnVsbClcbiAgICAgICAgICAgIGNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbW1lbnRzLmxlbmd0aCA+IDAgPyBjb21tZW50cy5qb2luKFwiXFxuXCIpIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbW1lbnRIYXNSZXF1aXJlZFdoaXRlc3BhY2Uoc3RhcnQpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHNyY1xuICAgICAgICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBpZiAodGhpcy5oZWFkZXIgJiYgc3RhcnQgPT09IHRoaXMuaGVhZGVyLmVuZClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZVJhbmdlKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGVuZFxuICAgICAgICB9ID0gdGhpcy52YWx1ZVJhbmdlO1xuICAgICAgICByZXR1cm4gc3RhcnQgIT09IGVuZCB8fCBOb2RlLmF0Qmxhbmsoc3JjLCBlbmQgLSAxKTtcbiAgICAgIH1cbiAgICAgIGdldCBoYXNDb21tZW50KCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvcHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChzcmNbdGhpcy5wcm9wc1tpXS5zdGFydF0gPT09IENoYXIuQ09NTUVOVClcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGdldCBoYXNQcm9wcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHNyY1xuICAgICAgICAgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb3BzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAoc3JjW3RoaXMucHJvcHNbaV0uc3RhcnRdICE9PSBDaGFyLkNPTU1FTlQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBnZXQgaW5jbHVkZXNUcmFpbGluZ0xpbmVzKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBnZXQganNvbkxpa2UoKSB7XG4gICAgICAgIGNvbnN0IGpzb25MaWtlVHlwZXMgPSBbVHlwZS5GTE9XX01BUCwgVHlwZS5GTE9XX1NFUSwgVHlwZS5RVU9URV9ET1VCTEUsIFR5cGUuUVVPVEVfU0lOR0xFXTtcbiAgICAgICAgcmV0dXJuIGpzb25MaWtlVHlwZXMuaW5kZXhPZih0aGlzLnR5cGUpICE9PSAtMTtcbiAgICAgIH1cbiAgICAgIGdldCByYW5nZUFzTGluZVBvcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlIHx8ICF0aGlzLmNvbnRleHQpXG4gICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBnZXRMaW5lUG9zKHRoaXMucmFuZ2Uuc3RhcnQsIHRoaXMuY29udGV4dC5yb290KTtcbiAgICAgICAgaWYgKCFzdGFydClcbiAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgICBjb25zdCBlbmQgPSBnZXRMaW5lUG9zKHRoaXMucmFuZ2UuZW5kLCB0aGlzLmNvbnRleHQucm9vdCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBnZXQgcmF3VmFsdWUoKSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZVJhbmdlIHx8ICF0aGlzLmNvbnRleHQpXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfSA9IHRoaXMudmFsdWVSYW5nZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5zcmMuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgICBnZXQgdGFnKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvcHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBjb25zdCB0YWcgPSB0aGlzLmdldFByb3BWYWx1ZShpLCBDaGFyLlRBRywgZmFsc2UpO1xuICAgICAgICAgIGlmICh0YWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRhZ1sxXSA9PT0gXCI8XCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2ZXJiYXRpbTogdGFnLnNsaWNlKDIsIC0xKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgW18sIGhhbmRsZSwgc3VmZml4XSA9IHRhZy5tYXRjaCgvXiguKiEpKFteIV0qKSQvKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoYW5kbGUsXG4gICAgICAgICAgICAgICAgc3VmZml4XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZ2V0IHZhbHVlUmFuZ2VDb250YWluc05ld2xpbmUoKSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZVJhbmdlIHx8ICF0aGlzLmNvbnRleHQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kXG4gICAgICAgIH0gPSB0aGlzLnZhbHVlUmFuZ2U7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgICAgICBpZiAoc3JjW2ldID09PSBcIlxcblwiKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcGFyc2VDb21tZW50KHN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgaWYgKHNyY1tzdGFydF0gPT09IENoYXIuQ09NTUVOVCkge1xuICAgICAgICAgIGNvbnN0IGVuZCA9IE5vZGUuZW5kT2ZMaW5lKHNyYywgc3RhcnQgKyAxKTtcbiAgICAgICAgICBjb25zdCBjb21tZW50UmFuZ2UgPSBuZXcgUmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgdGhpcy5wcm9wcy5wdXNoKGNvbW1lbnRSYW5nZSk7XG4gICAgICAgICAgcmV0dXJuIGVuZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcnQ7XG4gICAgICB9XG4gICAgICBzZXRPcmlnUmFuZ2VzKGNyLCBvZmZzZXQpIHtcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpXG4gICAgICAgICAgb2Zmc2V0ID0gdGhpcy5yYW5nZS5zZXRPcmlnUmFuZ2UoY3IsIG9mZnNldCk7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlUmFuZ2UpXG4gICAgICAgICAgdGhpcy52YWx1ZVJhbmdlLnNldE9yaWdSYW5nZShjciwgb2Zmc2V0KTtcbiAgICAgICAgdGhpcy5wcm9wcy5mb3JFYWNoKChwcm9wKSA9PiBwcm9wLnNldE9yaWdSYW5nZShjciwgb2Zmc2V0KSk7XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIHNyY1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSA9IHRoaXM7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKVxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgY29uc3Qgc3RyID0gc3JjLnNsaWNlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpO1xuICAgICAgICByZXR1cm4gTm9kZS5hZGRTdHJpbmdUZXJtaW5hdG9yKHNyYywgcmFuZ2UuZW5kLCBzdHIpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIFlBTUxFcnJvciA9IGNsYXNzIGV4dGVuZHMgRXJyb3Ige1xuICAgICAgY29uc3RydWN0b3IobmFtZSwgc291cmNlLCBtZXNzYWdlKSB7XG4gICAgICAgIGlmICghbWVzc2FnZSB8fCAhKHNvdXJjZSBpbnN0YW5jZW9mIE5vZGUpKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhcmd1bWVudHMgZm9yIG5ldyAke25hbWV9YCk7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgfVxuICAgICAgbWFrZVByZXR0eSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNvdXJjZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMubm9kZVR5cGUgPSB0aGlzLnNvdXJjZS50eXBlO1xuICAgICAgICBjb25zdCBjc3QgPSB0aGlzLnNvdXJjZS5jb250ZXh0ICYmIHRoaXMuc291cmNlLmNvbnRleHQucm9vdDtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9mZnNldCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIHRoaXMucmFuZ2UgPSBuZXcgUmFuZ2UodGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICsgMSk7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBjc3QgJiYgZ2V0TGluZVBvcyh0aGlzLm9mZnNldCwgY3N0KTtcbiAgICAgICAgICBpZiAoc3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IHtcbiAgICAgICAgICAgICAgbGluZTogc3RhcnQubGluZSxcbiAgICAgICAgICAgICAgY29sOiBzdGFydC5jb2wgKyAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5saW5lUG9zID0ge1xuICAgICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgdGhpcy5vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yYW5nZSA9IHRoaXMuc291cmNlLnJhbmdlO1xuICAgICAgICAgIHRoaXMubGluZVBvcyA9IHRoaXMuc291cmNlLnJhbmdlQXNMaW5lUG9zO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxpbmVQb3MpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBsaW5lLFxuICAgICAgICAgICAgY29sXG4gICAgICAgICAgfSA9IHRoaXMubGluZVBvcy5zdGFydDtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gYCBhdCBsaW5lICR7bGluZX0sIGNvbHVtbiAke2NvbH1gO1xuICAgICAgICAgIGNvbnN0IGN0eCA9IGNzdCAmJiBnZXRQcmV0dHlDb250ZXh0KHRoaXMubGluZVBvcywgY3N0KTtcbiAgICAgICAgICBpZiAoY3R4KVxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlICs9IGA6XG5cbiR7Y3R4fVxuYDtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5zb3VyY2U7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgWUFNTFJlZmVyZW5jZUVycm9yID0gY2xhc3MgZXh0ZW5kcyBZQU1MRXJyb3Ige1xuICAgICAgY29uc3RydWN0b3Ioc291cmNlLCBtZXNzYWdlKSB7XG4gICAgICAgIHN1cGVyKFwiWUFNTFJlZmVyZW5jZUVycm9yXCIsIHNvdXJjZSwgbWVzc2FnZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgWUFNTFNlbWFudGljRXJyb3IgPSBjbGFzcyBleHRlbmRzIFlBTUxFcnJvciB7XG4gICAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIoXCJZQU1MU2VtYW50aWNFcnJvclwiLCBzb3VyY2UsIG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIFlBTUxTeW50YXhFcnJvciA9IGNsYXNzIGV4dGVuZHMgWUFNTEVycm9yIHtcbiAgICAgIGNvbnN0cnVjdG9yKHNvdXJjZSwgbWVzc2FnZSkge1xuICAgICAgICBzdXBlcihcIllBTUxTeW50YXhFcnJvclwiLCBzb3VyY2UsIG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIFlBTUxXYXJuaW5nID0gY2xhc3MgZXh0ZW5kcyBZQU1MRXJyb3Ige1xuICAgICAgY29uc3RydWN0b3Ioc291cmNlLCBtZXNzYWdlKSB7XG4gICAgICAgIHN1cGVyKFwiWUFNTFdhcm5pbmdcIiwgc291cmNlLCBtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHZhciBQbGFpblZhbHVlID0gY2xhc3MgZXh0ZW5kcyBOb2RlIHtcbiAgICAgIHN0YXRpYyBlbmRPZkxpbmUoc3JjLCBzdGFydCwgaW5GbG93KSB7XG4gICAgICAgIGxldCBjaCA9IHNyY1tzdGFydF07XG4gICAgICAgIGxldCBvZmZzZXQgPSBzdGFydDtcbiAgICAgICAgd2hpbGUgKGNoICYmIGNoICE9PSBcIlxcblwiKSB7XG4gICAgICAgICAgaWYgKGluRmxvdyAmJiAoY2ggPT09IFwiW1wiIHx8IGNoID09PSBcIl1cIiB8fCBjaCA9PT0gXCJ7XCIgfHwgY2ggPT09IFwifVwiIHx8IGNoID09PSBcIixcIikpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjb25zdCBuZXh0ID0gc3JjW29mZnNldCArIDFdO1xuICAgICAgICAgIGlmIChjaCA9PT0gXCI6XCIgJiYgKCFuZXh0IHx8IG5leHQgPT09IFwiXFxuXCIgfHwgbmV4dCA9PT0gXCJcdFwiIHx8IG5leHQgPT09IFwiIFwiIHx8IGluRmxvdyAmJiBuZXh0ID09PSBcIixcIikpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBpZiAoKGNoID09PSBcIiBcIiB8fCBjaCA9PT0gXCJcdFwiKSAmJiBuZXh0ID09PSBcIiNcIilcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgIGNoID0gbmV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfVxuICAgICAgZ2V0IHN0clZhbHVlKCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWVSYW5nZSB8fCAhdGhpcy5jb250ZXh0KVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBsZXQge1xuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuZFxuICAgICAgICB9ID0gdGhpcy52YWx1ZVJhbmdlO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGxldCBjaCA9IHNyY1tlbmQgLSAxXTtcbiAgICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kICYmIChjaCA9PT0gXCJcXG5cIiB8fCBjaCA9PT0gXCJcdFwiIHx8IGNoID09PSBcIiBcIikpXG4gICAgICAgICAgY2ggPSBzcmNbLS1lbmQgLSAxXTtcbiAgICAgICAgbGV0IHN0ciA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgY29uc3QgY2gyID0gc3JjW2ldO1xuICAgICAgICAgIGlmIChjaDIgPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgZm9sZCxcbiAgICAgICAgICAgICAgb2Zmc2V0XG4gICAgICAgICAgICB9ID0gTm9kZS5mb2xkTmV3bGluZShzcmMsIGksIC0xKTtcbiAgICAgICAgICAgIHN0ciArPSBmb2xkO1xuICAgICAgICAgICAgaSA9IG9mZnNldDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoMiA9PT0gXCIgXCIgfHwgY2gyID09PSBcIlx0XCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHdzU3RhcnQgPSBpO1xuICAgICAgICAgICAgbGV0IG5leHQgPSBzcmNbaSArIDFdO1xuICAgICAgICAgICAgd2hpbGUgKGkgPCBlbmQgJiYgKG5leHQgPT09IFwiIFwiIHx8IG5leHQgPT09IFwiXHRcIikpIHtcbiAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICBuZXh0ID0gc3JjW2kgKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0ICE9PSBcIlxcblwiKVxuICAgICAgICAgICAgICBzdHIgKz0gaSA+IHdzU3RhcnQgPyBzcmMuc2xpY2Uod3NTdGFydCwgaSArIDEpIDogY2gyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHIgKz0gY2gyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaDAgPSBzcmNbc3RhcnRdO1xuICAgICAgICBzd2l0Y2ggKGNoMCkge1xuICAgICAgICAgIGNhc2UgXCJcdFwiOiB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBcIlBsYWluIHZhbHVlIGNhbm5vdCBzdGFydCB3aXRoIGEgdGFiIGNoYXJhY3RlclwiO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gW25ldyBZQU1MU2VtYW50aWNFcnJvcih0aGlzLCBtc2cpXTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiQFwiOlxuICAgICAgICAgIGNhc2UgXCJgXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBQbGFpbiB2YWx1ZSBjYW5ub3Qgc3RhcnQgd2l0aCByZXNlcnZlZCBjaGFyYWN0ZXIgJHtjaDB9YDtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IFtuZXcgWUFNTFNlbWFudGljRXJyb3IodGhpcywgbXNnKV07XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzdHI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcnNlQmxvY2tWYWx1ZShzdGFydCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaW5kZW50LFxuICAgICAgICAgIGluRmxvdyxcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgbGV0IG9mZnNldCA9IHN0YXJ0O1xuICAgICAgICBsZXQgdmFsdWVFbmQgPSBzdGFydDtcbiAgICAgICAgZm9yIChsZXQgY2ggPSBzcmNbb2Zmc2V0XTsgY2ggPT09IFwiXFxuXCI7IGNoID0gc3JjW29mZnNldF0pIHtcbiAgICAgICAgICBpZiAoTm9kZS5hdERvY3VtZW50Qm91bmRhcnkoc3JjLCBvZmZzZXQgKyAxKSlcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNvbnN0IGVuZCA9IE5vZGUuZW5kT2ZCbG9ja0luZGVudChzcmMsIGluZGVudCwgb2Zmc2V0ICsgMSk7XG4gICAgICAgICAgaWYgKGVuZCA9PT0gbnVsbCB8fCBzcmNbZW5kXSA9PT0gXCIjXCIpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBpZiAoc3JjW2VuZF0gPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IGVuZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWVFbmQgPSBQbGFpblZhbHVlLmVuZE9mTGluZShzcmMsIGVuZCwgaW5GbG93KTtcbiAgICAgICAgICAgIG9mZnNldCA9IHZhbHVlRW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZVJhbmdlLmlzRW1wdHkoKSlcbiAgICAgICAgICB0aGlzLnZhbHVlUmFuZ2Uuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgdGhpcy52YWx1ZVJhbmdlLmVuZCA9IHZhbHVlRW5kO1xuICAgICAgICByZXR1cm4gdmFsdWVFbmQ7XG4gICAgICB9XG4gICAgICBwYXJzZShjb250ZXh0LCBzdGFydCkge1xuICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaW5GbG93LFxuICAgICAgICAgIHNyY1xuICAgICAgICB9ID0gY29udGV4dDtcbiAgICAgICAgbGV0IG9mZnNldCA9IHN0YXJ0O1xuICAgICAgICBjb25zdCBjaCA9IHNyY1tvZmZzZXRdO1xuICAgICAgICBpZiAoY2ggJiYgY2ggIT09IFwiI1wiICYmIGNoICE9PSBcIlxcblwiKSB7XG4gICAgICAgICAgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5lbmRPZkxpbmUoc3JjLCBzdGFydCwgaW5GbG93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlUmFuZ2UgPSBuZXcgUmFuZ2Uoc3RhcnQsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCA9IE5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0KTtcbiAgICAgICAgb2Zmc2V0ID0gdGhpcy5wYXJzZUNvbW1lbnQob2Zmc2V0KTtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0NvbW1lbnQgfHwgdGhpcy52YWx1ZVJhbmdlLmlzRW1wdHkoKSkge1xuICAgICAgICAgIG9mZnNldCA9IHRoaXMucGFyc2VCbG9ja1ZhbHVlKG9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLkNoYXIgPSBDaGFyO1xuICAgIGV4cG9ydHMyLk5vZGUgPSBOb2RlO1xuICAgIGV4cG9ydHMyLlBsYWluVmFsdWUgPSBQbGFpblZhbHVlO1xuICAgIGV4cG9ydHMyLlJhbmdlID0gUmFuZ2U7XG4gICAgZXhwb3J0czIuVHlwZSA9IFR5cGU7XG4gICAgZXhwb3J0czIuWUFNTEVycm9yID0gWUFNTEVycm9yO1xuICAgIGV4cG9ydHMyLllBTUxSZWZlcmVuY2VFcnJvciA9IFlBTUxSZWZlcmVuY2VFcnJvcjtcbiAgICBleHBvcnRzMi5ZQU1MU2VtYW50aWNFcnJvciA9IFlBTUxTZW1hbnRpY0Vycm9yO1xuICAgIGV4cG9ydHMyLllBTUxTeW50YXhFcnJvciA9IFlBTUxTeW50YXhFcnJvcjtcbiAgICBleHBvcnRzMi5ZQU1MV2FybmluZyA9IFlBTUxXYXJuaW5nO1xuICAgIGV4cG9ydHMyLl9kZWZpbmVQcm9wZXJ0eSA9IF9kZWZpbmVQcm9wZXJ0eTtcbiAgICBleHBvcnRzMi5kZWZhdWx0VGFnUHJlZml4ID0gZGVmYXVsdFRhZ1ByZWZpeDtcbiAgICBleHBvcnRzMi5kZWZhdWx0VGFncyA9IGRlZmF1bHRUYWdzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlX2NzdCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy95YW1sL2Rpc3QvcGFyc2UtY3N0LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgUGxhaW5WYWx1ZSA9IHJlcXVpcmVfUGxhaW5WYWx1ZV9lYzhlNTg4ZSgpO1xuICAgIHZhciBCbGFua0xpbmUgPSBjbGFzcyBleHRlbmRzIFBsYWluVmFsdWUuTm9kZSB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoUGxhaW5WYWx1ZS5UeXBlLkJMQU5LX0xJTkUpO1xuICAgICAgfVxuICAgICAgZ2V0IGluY2x1ZGVzVHJhaWxpbmdMaW5lcygpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBwYXJzZShjb250ZXh0LCBzdGFydCkge1xuICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICB0aGlzLnJhbmdlID0gbmV3IFBsYWluVmFsdWUuUmFuZ2Uoc3RhcnQsIHN0YXJ0ICsgMSk7XG4gICAgICAgIHJldHVybiBzdGFydCArIDE7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgQ29sbGVjdGlvbkl0ZW0gPSBjbGFzcyBleHRlbmRzIFBsYWluVmFsdWUuTm9kZSB7XG4gICAgICBjb25zdHJ1Y3Rvcih0eXBlLCBwcm9wcykge1xuICAgICAgICBzdXBlcih0eXBlLCBwcm9wcyk7XG4gICAgICAgIHRoaXMubm9kZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBnZXQgaW5jbHVkZXNUcmFpbGluZ0xpbmVzKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmluY2x1ZGVzVHJhaWxpbmdMaW5lcztcbiAgICAgIH1cbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBwYXJzZU5vZGUsXG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSBjb250ZXh0O1xuICAgICAgICBsZXQge1xuICAgICAgICAgIGF0TGluZVN0YXJ0LFxuICAgICAgICAgIGxpbmVTdGFydFxuICAgICAgICB9ID0gY29udGV4dDtcbiAgICAgICAgaWYgKCFhdExpbmVTdGFydCAmJiB0aGlzLnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5TRVFfSVRFTSlcbiAgICAgICAgICB0aGlzLmVycm9yID0gbmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IodGhpcywgXCJTZXF1ZW5jZSBpdGVtcyBtdXN0IG5vdCBoYXZlIHByZWNlZGluZyBjb250ZW50IG9uIHRoZSBzYW1lIGxpbmVcIik7XG4gICAgICAgIGNvbnN0IGluZGVudCA9IGF0TGluZVN0YXJ0ID8gc3RhcnQgLSBsaW5lU3RhcnQgOiBjb250ZXh0LmluZGVudDtcbiAgICAgICAgbGV0IG9mZnNldCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZldoaXRlU3BhY2Uoc3JjLCBzdGFydCArIDEpO1xuICAgICAgICBsZXQgY2ggPSBzcmNbb2Zmc2V0XTtcbiAgICAgICAgY29uc3QgaW5saW5lQ29tbWVudCA9IGNoID09PSBcIiNcIjtcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSBbXTtcbiAgICAgICAgbGV0IGJsYW5rTGluZSA9IG51bGw7XG4gICAgICAgIHdoaWxlIChjaCA9PT0gXCJcXG5cIiB8fCBjaCA9PT0gXCIjXCIpIHtcbiAgICAgICAgICBpZiAoY2ggPT09IFwiI1wiKSB7XG4gICAgICAgICAgICBjb25zdCBlbmQyID0gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mTGluZShzcmMsIG9mZnNldCArIDEpO1xuICAgICAgICAgICAgY29tbWVudHMucHVzaChuZXcgUGxhaW5WYWx1ZS5SYW5nZShvZmZzZXQsIGVuZDIpKTtcbiAgICAgICAgICAgIG9mZnNldCA9IGVuZDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF0TGluZVN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGxpbmVTdGFydCA9IG9mZnNldCArIDE7XG4gICAgICAgICAgICBjb25zdCB3c0VuZCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZldoaXRlU3BhY2Uoc3JjLCBsaW5lU3RhcnQpO1xuICAgICAgICAgICAgaWYgKHNyY1t3c0VuZF0gPT09IFwiXFxuXCIgJiYgY29tbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGJsYW5rTGluZSA9IG5ldyBCbGFua0xpbmUoKTtcbiAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gYmxhbmtMaW5lLnBhcnNlKHtcbiAgICAgICAgICAgICAgICBzcmNcbiAgICAgICAgICAgICAgfSwgbGluZVN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9mZnNldCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZkluZGVudChzcmMsIGxpbmVTdGFydCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWluVmFsdWUuTm9kZS5uZXh0Tm9kZUlzSW5kZW50ZWQoY2gsIG9mZnNldCAtIChsaW5lU3RhcnQgKyBpbmRlbnQpLCB0aGlzLnR5cGUgIT09IFBsYWluVmFsdWUuVHlwZS5TRVFfSVRFTSkpIHtcbiAgICAgICAgICB0aGlzLm5vZGUgPSBwYXJzZU5vZGUoe1xuICAgICAgICAgICAgYXRMaW5lU3RhcnQsXG4gICAgICAgICAgICBpbkNvbGxlY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgaW5kZW50LFxuICAgICAgICAgICAgbGluZVN0YXJ0LFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzXG4gICAgICAgICAgfSwgb2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIGlmIChjaCAmJiBsaW5lU3RhcnQgPiBzdGFydCArIDEpIHtcbiAgICAgICAgICBvZmZzZXQgPSBsaW5lU3RhcnQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgICAgICBpZiAoYmxhbmtMaW5lKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IGNvbnRleHQucGFyZW50Lml0ZW1zIHx8IGNvbnRleHQucGFyZW50LmNvbnRlbnRzO1xuICAgICAgICAgICAgaWYgKGl0ZW1zKVxuICAgICAgICAgICAgICBpdGVtcy5wdXNoKGJsYW5rTGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb21tZW50cy5sZW5ndGgpXG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLnByb3BzLCBjb21tZW50cyk7XG4gICAgICAgICAgb2Zmc2V0ID0gdGhpcy5ub2RlLnJhbmdlLmVuZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaW5saW5lQ29tbWVudCkge1xuICAgICAgICAgICAgY29uc3QgYyA9IGNvbW1lbnRzWzBdO1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5wdXNoKGMpO1xuICAgICAgICAgICAgb2Zmc2V0ID0gYy5lbmQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9mZnNldCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZkxpbmUoc3JjLCBzdGFydCArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLm5vZGUgPyB0aGlzLm5vZGUudmFsdWVSYW5nZS5lbmQgOiBvZmZzZXQ7XG4gICAgICAgIHRoaXMudmFsdWVSYW5nZSA9IG5ldyBQbGFpblZhbHVlLlJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc2V0T3JpZ1Jhbmdlcyhjciwgb2Zmc2V0KSB7XG4gICAgICAgIG9mZnNldCA9IHN1cGVyLnNldE9yaWdSYW5nZXMoY3IsIG9mZnNldCk7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUgPyB0aGlzLm5vZGUuc2V0T3JpZ1Jhbmdlcyhjciwgb2Zmc2V0KSA6IG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgfSxcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgIH0gPSB0aGlzO1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIGNvbnN0IHN0ciA9IG5vZGUgPyBzcmMuc2xpY2UocmFuZ2Uuc3RhcnQsIG5vZGUucmFuZ2Uuc3RhcnQpICsgU3RyaW5nKG5vZGUpIDogc3JjLnNsaWNlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpO1xuICAgICAgICByZXR1cm4gUGxhaW5WYWx1ZS5Ob2RlLmFkZFN0cmluZ1Rlcm1pbmF0b3Ioc3JjLCByYW5nZS5lbmQsIHN0cik7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgQ29tbWVudCA9IGNsYXNzIGV4dGVuZHMgUGxhaW5WYWx1ZS5Ob2RlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihQbGFpblZhbHVlLlR5cGUuQ09NTUVOVCk7XG4gICAgICB9XG4gICAgICBwYXJzZShjb250ZXh0LCBzdGFydCkge1xuICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnBhcnNlQ29tbWVudChzdGFydCk7XG4gICAgICAgIHRoaXMucmFuZ2UgPSBuZXcgUGxhaW5WYWx1ZS5SYW5nZShzdGFydCwgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdyYWJDb2xsZWN0aW9uRW5kQ29tbWVudHMobm9kZSkge1xuICAgICAgbGV0IGNub2RlID0gbm9kZTtcbiAgICAgIHdoaWxlIChjbm9kZSBpbnN0YW5jZW9mIENvbGxlY3Rpb25JdGVtKVxuICAgICAgICBjbm9kZSA9IGNub2RlLm5vZGU7XG4gICAgICBpZiAoIShjbm9kZSBpbnN0YW5jZW9mIENvbGxlY3Rpb24pKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IGxlbiA9IGNub2RlLml0ZW1zLmxlbmd0aDtcbiAgICAgIGxldCBjaSA9IC0xO1xuICAgICAgZm9yIChsZXQgaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIGNvbnN0IG4gPSBjbm9kZS5pdGVtc1tpXTtcbiAgICAgICAgaWYgKG4udHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkNPTU1FTlQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpbmRlbnQsXG4gICAgICAgICAgICBsaW5lU3RhcnRcbiAgICAgICAgICB9ID0gbi5jb250ZXh0O1xuICAgICAgICAgIGlmIChpbmRlbnQgPiAwICYmIG4ucmFuZ2Uuc3RhcnQgPj0gbGluZVN0YXJ0ICsgaW5kZW50KVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2kgPSBpO1xuICAgICAgICB9IGVsc2UgaWYgKG4udHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkJMQU5LX0xJTkUpXG4gICAgICAgICAgY2kgPSBpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoY2kgPT09IC0xKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IGNhID0gY25vZGUuaXRlbXMuc3BsaWNlKGNpLCBsZW4gLSBjaSk7XG4gICAgICBjb25zdCBwcmV2RW5kID0gY2FbMF0ucmFuZ2Uuc3RhcnQ7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjbm9kZS5yYW5nZS5lbmQgPSBwcmV2RW5kO1xuICAgICAgICBpZiAoY25vZGUudmFsdWVSYW5nZSAmJiBjbm9kZS52YWx1ZVJhbmdlLmVuZCA+IHByZXZFbmQpXG4gICAgICAgICAgY25vZGUudmFsdWVSYW5nZS5lbmQgPSBwcmV2RW5kO1xuICAgICAgICBpZiAoY25vZGUgPT09IG5vZGUpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNub2RlID0gY25vZGUuY29udGV4dC5wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2E7XG4gICAgfVxuICAgIHZhciBDb2xsZWN0aW9uID0gY2xhc3MgZXh0ZW5kcyBQbGFpblZhbHVlLk5vZGUge1xuICAgICAgc3RhdGljIG5leHRDb250ZW50SGFzSW5kZW50KHNyYywgb2Zmc2V0LCBpbmRlbnQpIHtcbiAgICAgICAgY29uc3QgbGluZVN0YXJ0ID0gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mTGluZShzcmMsIG9mZnNldCkgKyAxO1xuICAgICAgICBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgbGluZVN0YXJ0KTtcbiAgICAgICAgY29uc3QgY2ggPSBzcmNbb2Zmc2V0XTtcbiAgICAgICAgaWYgKCFjaClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChvZmZzZXQgPj0gbGluZVN0YXJ0ICsgaW5kZW50KVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAoY2ggIT09IFwiI1wiICYmIGNoICE9PSBcIlxcblwiKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIENvbGxlY3Rpb24ubmV4dENvbnRlbnRIYXNJbmRlbnQoc3JjLCBvZmZzZXQsIGluZGVudCk7XG4gICAgICB9XG4gICAgICBjb25zdHJ1Y3RvcihmaXJzdEl0ZW0pIHtcbiAgICAgICAgc3VwZXIoZmlyc3RJdGVtLnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5TRVFfSVRFTSA/IFBsYWluVmFsdWUuVHlwZS5TRVEgOiBQbGFpblZhbHVlLlR5cGUuTUFQKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGZpcnN0SXRlbS5wcm9wcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgIGlmIChmaXJzdEl0ZW0ucHJvcHNbaV0uc3RhcnQgPCBmaXJzdEl0ZW0uY29udGV4dC5saW5lU3RhcnQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMgPSBmaXJzdEl0ZW0ucHJvcHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICAgICAgZmlyc3RJdGVtLnByb3BzID0gZmlyc3RJdGVtLnByb3BzLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1SYW5nZSA9IGZpcnN0SXRlbS5wcm9wc1swXSB8fCBmaXJzdEl0ZW0udmFsdWVSYW5nZTtcbiAgICAgICAgICAgIGZpcnN0SXRlbS5yYW5nZS5zdGFydCA9IGl0ZW1SYW5nZS5zdGFydDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1zID0gW2ZpcnN0SXRlbV07XG4gICAgICAgIGNvbnN0IGVjID0gZ3JhYkNvbGxlY3Rpb25FbmRDb21tZW50cyhmaXJzdEl0ZW0pO1xuICAgICAgICBpZiAoZWMpXG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5pdGVtcywgZWMpO1xuICAgICAgfVxuICAgICAgZ2V0IGluY2x1ZGVzVHJhaWxpbmdMaW5lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoID4gMDtcbiAgICAgIH1cbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBwYXJzZU5vZGUsXG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSBjb250ZXh0O1xuICAgICAgICBsZXQgbGluZVN0YXJ0ID0gUGxhaW5WYWx1ZS5Ob2RlLnN0YXJ0T2ZMaW5lKHNyYywgc3RhcnQpO1xuICAgICAgICBjb25zdCBmaXJzdEl0ZW0gPSB0aGlzLml0ZW1zWzBdO1xuICAgICAgICBmaXJzdEl0ZW0uY29udGV4dC5wYXJlbnQgPSB0aGlzO1xuICAgICAgICB0aGlzLnZhbHVlUmFuZ2UgPSBQbGFpblZhbHVlLlJhbmdlLmNvcHkoZmlyc3RJdGVtLnZhbHVlUmFuZ2UpO1xuICAgICAgICBjb25zdCBpbmRlbnQgPSBmaXJzdEl0ZW0ucmFuZ2Uuc3RhcnQgLSBmaXJzdEl0ZW0uY29udGV4dC5saW5lU3RhcnQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBzdGFydDtcbiAgICAgICAgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5Ob2RlLm5vcm1hbGl6ZU9mZnNldChzcmMsIG9mZnNldCk7XG4gICAgICAgIGxldCBjaCA9IHNyY1tvZmZzZXRdO1xuICAgICAgICBsZXQgYXRMaW5lU3RhcnQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgbGluZVN0YXJ0KSA9PT0gb2Zmc2V0O1xuICAgICAgICBsZXQgcHJldkluY2x1ZGVzVHJhaWxpbmdMaW5lcyA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAoY2gpIHtcbiAgICAgICAgICB3aGlsZSAoY2ggPT09IFwiXFxuXCIgfHwgY2ggPT09IFwiI1wiKSB7XG4gICAgICAgICAgICBpZiAoYXRMaW5lU3RhcnQgJiYgY2ggPT09IFwiXFxuXCIgJiYgIXByZXZJbmNsdWRlc1RyYWlsaW5nTGluZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgYmxhbmtMaW5lID0gbmV3IEJsYW5rTGluZSgpO1xuICAgICAgICAgICAgICBvZmZzZXQgPSBibGFua0xpbmUucGFyc2Uoe1xuICAgICAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgICB9LCBvZmZzZXQpO1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlUmFuZ2UuZW5kID0gb2Zmc2V0O1xuICAgICAgICAgICAgICBpZiAob2Zmc2V0ID49IHNyYy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjaCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGJsYW5rTGluZSk7XG4gICAgICAgICAgICAgIG9mZnNldCAtPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gXCIjXCIpIHtcbiAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IGxpbmVTdGFydCArIGluZGVudCAmJiAhQ29sbGVjdGlvbi5uZXh0Q29udGVudEhhc0luZGVudChzcmMsIG9mZnNldCwgaW5kZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgY29tbWVudCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgICAgICAgIG9mZnNldCA9IGNvbW1lbnQucGFyc2Uoe1xuICAgICAgICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICAgICAgICBsaW5lU3RhcnQsXG4gICAgICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICAgIH0sIG9mZnNldCk7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVJhbmdlLmVuZCA9IG9mZnNldDtcbiAgICAgICAgICAgICAgaWYgKG9mZnNldCA+PSBzcmMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2ggPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lU3RhcnQgPSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mSW5kZW50KHNyYywgbGluZVN0YXJ0KTtcbiAgICAgICAgICAgIGlmIChQbGFpblZhbHVlLk5vZGUuYXRCbGFuayhzcmMsIG9mZnNldCkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgd3NFbmQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHNyY1t3c0VuZF07XG4gICAgICAgICAgICAgIGlmICghbmV4dCB8fCBuZXh0ID09PSBcIlxcblwiIHx8IG5leHQgPT09IFwiI1wiKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gd3NFbmQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoID0gc3JjW29mZnNldF07XG4gICAgICAgICAgICBhdExpbmVTdGFydCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY2gpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBsaW5lU3RhcnQgKyBpbmRlbnQgJiYgKGF0TGluZVN0YXJ0IHx8IGNoICE9PSBcIjpcIikpIHtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCBsaW5lU3RhcnQgKyBpbmRlbnQpIHtcbiAgICAgICAgICAgICAgaWYgKGxpbmVTdGFydCA+IHN0YXJ0KVxuICAgICAgICAgICAgICAgIG9mZnNldCA9IGxpbmVTdGFydDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1zZyA9IFwiQWxsIGNvbGxlY3Rpb24gaXRlbXMgbXVzdCBzdGFydCBhdCB0aGUgc2FtZSBjb2x1bW5cIjtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IG5ldyBQbGFpblZhbHVlLllBTUxTeW50YXhFcnJvcih0aGlzLCBtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmlyc3RJdGVtLnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5TRVFfSVRFTSkge1xuICAgICAgICAgICAgaWYgKGNoICE9PSBcIi1cIikge1xuICAgICAgICAgICAgICBpZiAobGluZVN0YXJ0ID4gc3RhcnQpXG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbGluZVN0YXJ0O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSBcIi1cIiAmJiAhdGhpcy5lcnJvcikge1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IHNyY1tvZmZzZXQgKyAxXTtcbiAgICAgICAgICAgIGlmICghbmV4dCB8fCBuZXh0ID09PSBcIlxcblwiIHx8IG5leHQgPT09IFwiXHRcIiB8fCBuZXh0ID09PSBcIiBcIikge1xuICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkEgY29sbGVjdGlvbiBjYW5ub3QgYmUgYm90aCBhIG1hcHBpbmcgYW5kIGEgc2VxdWVuY2VcIjtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IG5ldyBQbGFpblZhbHVlLllBTUxTeW50YXhFcnJvcih0aGlzLCBtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBub2RlID0gcGFyc2VOb2RlKHtcbiAgICAgICAgICAgIGF0TGluZVN0YXJ0LFxuICAgICAgICAgICAgaW5Db2xsZWN0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaW5kZW50LFxuICAgICAgICAgICAgbGluZVN0YXJ0LFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzXG4gICAgICAgICAgfSwgb2Zmc2V0KTtcbiAgICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChub2RlKTtcbiAgICAgICAgICB0aGlzLnZhbHVlUmFuZ2UuZW5kID0gbm9kZS52YWx1ZVJhbmdlLmVuZDtcbiAgICAgICAgICBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUubm9ybWFsaXplT2Zmc2V0KHNyYywgbm9kZS5yYW5nZS5lbmQpO1xuICAgICAgICAgIGNoID0gc3JjW29mZnNldF07XG4gICAgICAgICAgYXRMaW5lU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICBwcmV2SW5jbHVkZXNUcmFpbGluZ0xpbmVzID0gbm9kZS5pbmNsdWRlc1RyYWlsaW5nTGluZXM7XG4gICAgICAgICAgaWYgKGNoKSB7XG4gICAgICAgICAgICBsZXQgbHMgPSBvZmZzZXQgLSAxO1xuICAgICAgICAgICAgbGV0IHByZXYgPSBzcmNbbHNdO1xuICAgICAgICAgICAgd2hpbGUgKHByZXYgPT09IFwiIFwiIHx8IHByZXYgPT09IFwiXHRcIilcbiAgICAgICAgICAgICAgcHJldiA9IHNyY1stLWxzXTtcbiAgICAgICAgICAgIGlmIChwcmV2ID09PSBcIlxcblwiKSB7XG4gICAgICAgICAgICAgIGxpbmVTdGFydCA9IGxzICsgMTtcbiAgICAgICAgICAgICAgYXRMaW5lU3RhcnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBlYyA9IGdyYWJDb2xsZWN0aW9uRW5kQ29tbWVudHMobm9kZSk7XG4gICAgICAgICAgaWYgKGVjKVxuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5pdGVtcywgZWMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICBzZXRPcmlnUmFuZ2VzKGNyLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gc3VwZXIuc2V0T3JpZ1Jhbmdlcyhjciwgb2Zmc2V0KTtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgb2Zmc2V0ID0gbm9kZS5zZXRPcmlnUmFuZ2VzKGNyLCBvZmZzZXQpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICByYW5nZSxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICBsZXQgc3RyID0gc3JjLnNsaWNlKHJhbmdlLnN0YXJ0LCBpdGVtc1swXS5yYW5nZS5zdGFydCkgKyBTdHJpbmcoaXRlbXNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0TGluZVN0YXJ0LFxuICAgICAgICAgICAgaW5kZW50XG4gICAgICAgICAgfSA9IGl0ZW0uY29udGV4dDtcbiAgICAgICAgICBpZiAoYXRMaW5lU3RhcnQpXG4gICAgICAgICAgICBmb3IgKGxldCBpMiA9IDA7IGkyIDwgaW5kZW50OyArK2kyKVxuICAgICAgICAgICAgICBzdHIgKz0gXCIgXCI7XG4gICAgICAgICAgc3RyICs9IFN0cmluZyhpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUGxhaW5WYWx1ZS5Ob2RlLmFkZFN0cmluZ1Rlcm1pbmF0b3Ioc3JjLCByYW5nZS5lbmQsIHN0cik7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgRGlyZWN0aXZlID0gY2xhc3MgZXh0ZW5kcyBQbGFpblZhbHVlLk5vZGUge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFBsYWluVmFsdWUuVHlwZS5ESVJFQ1RJVkUpO1xuICAgICAgICB0aGlzLm5hbWUgPSBudWxsO1xuICAgICAgfVxuICAgICAgZ2V0IHBhcmFtZXRlcnMoKSB7XG4gICAgICAgIGNvbnN0IHJhdyA9IHRoaXMucmF3VmFsdWU7XG4gICAgICAgIHJldHVybiByYXcgPyByYXcudHJpbSgpLnNwbGl0KC9bIFxcdF0rLykgOiBbXTtcbiAgICAgIH1cbiAgICAgIHBhcnNlTmFtZShzdGFydCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBzdGFydDtcbiAgICAgICAgbGV0IGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIHdoaWxlIChjaCAmJiBjaCAhPT0gXCJcXG5cIiAmJiBjaCAhPT0gXCJcdFwiICYmIGNoICE9PSBcIiBcIilcbiAgICAgICAgICBjaCA9IHNyY1tvZmZzZXQgKz0gMV07XG4gICAgICAgIHRoaXMubmFtZSA9IHNyYy5zbGljZShzdGFydCwgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHBhcnNlUGFyYW1ldGVycyhzdGFydCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBzdGFydDtcbiAgICAgICAgbGV0IGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIHdoaWxlIChjaCAmJiBjaCAhPT0gXCJcXG5cIiAmJiBjaCAhPT0gXCIjXCIpXG4gICAgICAgICAgY2ggPSBzcmNbb2Zmc2V0ICs9IDFdO1xuICAgICAgICB0aGlzLnZhbHVlUmFuZ2UgPSBuZXcgUGxhaW5WYWx1ZS5SYW5nZShzdGFydCwgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSB0aGlzLnBhcnNlTmFtZShzdGFydCArIDEpO1xuICAgICAgICBvZmZzZXQgPSB0aGlzLnBhcnNlUGFyYW1ldGVycyhvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgPSB0aGlzLnBhcnNlQ29tbWVudChvZmZzZXQpO1xuICAgICAgICB0aGlzLnJhbmdlID0gbmV3IFBsYWluVmFsdWUuUmFuZ2Uoc3RhcnQsIG9mZnNldCk7XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgRG9jdW1lbnQgPSBjbGFzcyBleHRlbmRzIFBsYWluVmFsdWUuTm9kZSB7XG4gICAgICBzdGF0aWMgc3RhcnRDb21tZW50T3JFbmRCbGFua0xpbmUoc3JjLCBzdGFydCkge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgc3RhcnQpO1xuICAgICAgICBjb25zdCBjaCA9IHNyY1tvZmZzZXRdO1xuICAgICAgICByZXR1cm4gY2ggPT09IFwiI1wiIHx8IGNoID09PSBcIlxcblwiID8gb2Zmc2V0IDogc3RhcnQ7XG4gICAgICB9XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoUGxhaW5WYWx1ZS5UeXBlLkRPQ1VNRU5UKTtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb250ZW50cyA9IG51bGw7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlciA9IG51bGw7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRFbmRNYXJrZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgcGFyc2VEaXJlY3RpdmVzKHN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gW107XG4gICAgICAgIGxldCBhdExpbmVTdGFydCA9IHRydWU7XG4gICAgICAgIGxldCBoYXNEaXJlY3RpdmVzID0gZmFsc2U7XG4gICAgICAgIGxldCBvZmZzZXQgPSBzdGFydDtcbiAgICAgICAgd2hpbGUgKCFQbGFpblZhbHVlLk5vZGUuYXREb2N1bWVudEJvdW5kYXJ5KHNyYywgb2Zmc2V0LCBQbGFpblZhbHVlLkNoYXIuRElSRUNUSVZFU19FTkQpKSB7XG4gICAgICAgICAgb2Zmc2V0ID0gRG9jdW1lbnQuc3RhcnRDb21tZW50T3JFbmRCbGFua0xpbmUoc3JjLCBvZmZzZXQpO1xuICAgICAgICAgIHN3aXRjaCAoc3JjW29mZnNldF0pIHtcbiAgICAgICAgICAgIGNhc2UgXCJcXG5cIjpcbiAgICAgICAgICAgICAgaWYgKGF0TGluZVN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxhbmtMaW5lID0gbmV3IEJsYW5rTGluZSgpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGJsYW5rTGluZS5wYXJzZSh7XG4gICAgICAgICAgICAgICAgICBzcmNcbiAgICAgICAgICAgICAgICB9LCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCBzcmMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXMucHVzaChibGFua0xpbmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICBhdExpbmVTdGFydCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiI1wiOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWVudCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gY29tbWVudC5wYXJzZSh7XG4gICAgICAgICAgICAgICAgICBzcmNcbiAgICAgICAgICAgICAgICB9LCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIGF0TGluZVN0YXJ0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiJVwiOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlID0gbmV3IERpcmVjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGRpcmVjdGl2ZS5wYXJzZSh7XG4gICAgICAgICAgICAgICAgICBwYXJlbnQ6IHRoaXMsXG4gICAgICAgICAgICAgICAgICBzcmNcbiAgICAgICAgICAgICAgICB9LCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcy5wdXNoKGRpcmVjdGl2ZSk7XG4gICAgICAgICAgICAgICAgaGFzRGlyZWN0aXZlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXRMaW5lU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGlmIChoYXNEaXJlY3RpdmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKHRoaXMsIFwiTWlzc2luZyBkaXJlY3RpdmVzLWVuZCBpbmRpY2F0b3IgbGluZVwiKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRpcmVjdGl2ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSB0aGlzLmRpcmVjdGl2ZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gW107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNyY1tvZmZzZXRdKSB7XG4gICAgICAgICAgdGhpcy5kaXJlY3RpdmVzRW5kTWFya2VyID0gbmV3IFBsYWluVmFsdWUuUmFuZ2Uob2Zmc2V0LCBvZmZzZXQgKyAzKTtcbiAgICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzRGlyZWN0aXZlcykge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSBuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLCBcIk1pc3NpbmcgZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yIGxpbmVcIik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXJlY3RpdmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gdGhpcy5kaXJlY3RpdmVzO1xuICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICBwYXJzZUNvbnRlbnRzKHN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBwYXJzZU5vZGUsXG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGlmICghdGhpcy5jb250ZW50cylcbiAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gW107XG4gICAgICAgIGxldCBsaW5lU3RhcnQgPSBzdGFydDtcbiAgICAgICAgd2hpbGUgKHNyY1tsaW5lU3RhcnQgLSAxXSA9PT0gXCItXCIpXG4gICAgICAgICAgbGluZVN0YXJ0IC09IDE7XG4gICAgICAgIGxldCBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgc3RhcnQpO1xuICAgICAgICBsZXQgYXRMaW5lU3RhcnQgPSBsaW5lU3RhcnQgPT09IHN0YXJ0O1xuICAgICAgICB0aGlzLnZhbHVlUmFuZ2UgPSBuZXcgUGxhaW5WYWx1ZS5SYW5nZShvZmZzZXQpO1xuICAgICAgICB3aGlsZSAoIVBsYWluVmFsdWUuTm9kZS5hdERvY3VtZW50Qm91bmRhcnkoc3JjLCBvZmZzZXQsIFBsYWluVmFsdWUuQ2hhci5ET0NVTUVOVF9FTkQpKSB7XG4gICAgICAgICAgc3dpdGNoIChzcmNbb2Zmc2V0XSkge1xuICAgICAgICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICAgICAgICBpZiAoYXRMaW5lU3RhcnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBibGFua0xpbmUgPSBuZXcgQmxhbmtMaW5lKCk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gYmxhbmtMaW5lLnBhcnNlKHtcbiAgICAgICAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgICAgIH0sIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IHNyYy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudHMucHVzaChibGFua0xpbmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICBhdExpbmVTdGFydCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCIjXCI6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50ID0gbmV3IENvbW1lbnQoKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSBjb21tZW50LnBhcnNlKHtcbiAgICAgICAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgICAgIH0sIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIGF0TGluZVN0YXJ0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlFbmQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZJbmRlbnQoc3JjLCBvZmZzZXQpO1xuICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIGF0TGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIGluZGVudDogLTEsXG4gICAgICAgICAgICAgICAgaW5GbG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbkNvbGxlY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpbmVTdGFydCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IHRoaXNcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHBhcnNlTm9kZShjb250ZXh0LCBpRW5kKTtcbiAgICAgICAgICAgICAgaWYgKCFub2RlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlUmFuZ2UuZW5kID0gaUVuZDtcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICBvZmZzZXQgPSBub2RlLnJhbmdlLmVuZDtcbiAgICAgICAgICAgICAgYXRMaW5lU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY29uc3QgZWMgPSBncmFiQ29sbGVjdGlvbkVuZENvbW1lbnRzKG5vZGUpO1xuICAgICAgICAgICAgICBpZiAoZWMpXG4gICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5jb250ZW50cywgZWMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBvZmZzZXQgPSBEb2N1bWVudC5zdGFydENvbW1lbnRPckVuZEJsYW5rTGluZShzcmMsIG9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZVJhbmdlLmVuZCA9IG9mZnNldDtcbiAgICAgICAgaWYgKHNyY1tvZmZzZXRdKSB7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudEVuZE1hcmtlciA9IG5ldyBQbGFpblZhbHVlLlJhbmdlKG9mZnNldCwgb2Zmc2V0ICsgMyk7XG4gICAgICAgICAgb2Zmc2V0ICs9IDM7XG4gICAgICAgICAgaWYgKHNyY1tvZmZzZXRdKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0KTtcbiAgICAgICAgICAgIGlmIChzcmNbb2Zmc2V0XSA9PT0gXCIjXCIpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29tbWVudCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgICAgICAgIG9mZnNldCA9IGNvbW1lbnQucGFyc2Uoe1xuICAgICAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgICB9LCBvZmZzZXQpO1xuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRzLnB1c2goY29tbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKHNyY1tvZmZzZXRdKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJcXG5cIjpcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSB2b2lkIDA6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IG5ldyBQbGFpblZhbHVlLllBTUxTeW50YXhFcnJvcih0aGlzLCBcIkRvY3VtZW50IGVuZCBtYXJrZXIgbGluZSBjYW5ub3QgaGF2ZSBhIG5vbi1jb21tZW50IHN1ZmZpeFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIGNvbnRleHQucm9vdCA9IHRoaXM7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IGNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBzcmMuY2hhckNvZGVBdChzdGFydCkgPT09IDY1Mjc5ID8gc3RhcnQgKyAxIDogc3RhcnQ7XG4gICAgICAgIG9mZnNldCA9IHRoaXMucGFyc2VEaXJlY3RpdmVzKG9mZnNldCk7XG4gICAgICAgIG9mZnNldCA9IHRoaXMucGFyc2VDb250ZW50cyhvZmZzZXQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc2V0T3JpZ1Jhbmdlcyhjciwgb2Zmc2V0KSB7XG4gICAgICAgIG9mZnNldCA9IHN1cGVyLnNldE9yaWdSYW5nZXMoY3IsIG9mZnNldCk7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgb2Zmc2V0ID0gbm9kZS5zZXRPcmlnUmFuZ2VzKGNyLCBvZmZzZXQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlcilcbiAgICAgICAgICBvZmZzZXQgPSB0aGlzLmRpcmVjdGl2ZXNFbmRNYXJrZXIuc2V0T3JpZ1JhbmdlKGNyLCBvZmZzZXQpO1xuICAgICAgICB0aGlzLmNvbnRlbnRzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICBvZmZzZXQgPSBub2RlLnNldE9yaWdSYW5nZXMoY3IsIG9mZnNldCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudEVuZE1hcmtlcilcbiAgICAgICAgICBvZmZzZXQgPSB0aGlzLmRvY3VtZW50RW5kTWFya2VyLnNldE9yaWdSYW5nZShjciwgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgZGlyZWN0aXZlcyxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICBsZXQgc3RyID0gZGlyZWN0aXZlcy5qb2luKFwiXCIpO1xuICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCA+IDAgfHwgY29udGVudHNbMF0udHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkNPTU1FTlQpXG4gICAgICAgICAgICBzdHIgKz0gXCItLS1cXG5cIjtcbiAgICAgICAgICBzdHIgKz0gY29udGVudHMuam9pbihcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyW3N0ci5sZW5ndGggLSAxXSAhPT0gXCJcXG5cIilcbiAgICAgICAgICBzdHIgKz0gXCJcXG5cIjtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBBbGlhcyA9IGNsYXNzIGV4dGVuZHMgUGxhaW5WYWx1ZS5Ob2RlIHtcbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IGNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZJZGVudGlmaWVyKHNyYywgc3RhcnQgKyAxKTtcbiAgICAgICAgdGhpcy52YWx1ZVJhbmdlID0gbmV3IFBsYWluVmFsdWUuUmFuZ2Uoc3RhcnQgKyAxLCBvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0KTtcbiAgICAgICAgb2Zmc2V0ID0gdGhpcy5wYXJzZUNvbW1lbnQob2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBDaG9tcCA9IHtcbiAgICAgIENMSVA6IFwiQ0xJUFwiLFxuICAgICAgS0VFUDogXCJLRUVQXCIsXG4gICAgICBTVFJJUDogXCJTVFJJUFwiXG4gICAgfTtcbiAgICB2YXIgQmxvY2tWYWx1ZSA9IGNsYXNzIGV4dGVuZHMgUGxhaW5WYWx1ZS5Ob2RlIHtcbiAgICAgIGNvbnN0cnVjdG9yKHR5cGUsIHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIHByb3BzKTtcbiAgICAgICAgdGhpcy5ibG9ja0luZGVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuY2hvbXBpbmcgPSBDaG9tcC5DTElQO1xuICAgICAgICB0aGlzLmhlYWRlciA9IG51bGw7XG4gICAgICB9XG4gICAgICBnZXQgaW5jbHVkZXNUcmFpbGluZ0xpbmVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaG9tcGluZyA9PT0gQ2hvbXAuS0VFUDtcbiAgICAgIH1cbiAgICAgIGdldCBzdHJWYWx1ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlUmFuZ2UgfHwgIXRoaXMuY29udGV4dClcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfSA9IHRoaXMudmFsdWVSYW5nZTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVSYW5nZS5pc0VtcHR5KCkpXG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGxldCBsYXN0TmV3TGluZSA9IG51bGw7XG4gICAgICAgIGxldCBjaCA9IHNyY1tlbmQgLSAxXTtcbiAgICAgICAgd2hpbGUgKGNoID09PSBcIlxcblwiIHx8IGNoID09PSBcIlx0XCIgfHwgY2ggPT09IFwiIFwiKSB7XG4gICAgICAgICAgZW5kIC09IDE7XG4gICAgICAgICAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hvbXBpbmcgPT09IENob21wLktFRVApXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNoID09PSBcIlxcblwiKVxuICAgICAgICAgICAgbGFzdE5ld0xpbmUgPSBlbmQ7XG4gICAgICAgICAgY2ggPSBzcmNbZW5kIC0gMV07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGtlZXBTdGFydCA9IGVuZCArIDE7XG4gICAgICAgIGlmIChsYXN0TmV3TGluZSkge1xuICAgICAgICAgIGlmICh0aGlzLmNob21waW5nID09PSBDaG9tcC5LRUVQKSB7XG4gICAgICAgICAgICBrZWVwU3RhcnQgPSBsYXN0TmV3TGluZTtcbiAgICAgICAgICAgIGVuZCA9IHRoaXMudmFsdWVSYW5nZS5lbmQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVuZCA9IGxhc3ROZXdMaW5lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiaSA9IGluZGVudCArIHRoaXMuYmxvY2tJbmRlbnQ7XG4gICAgICAgIGNvbnN0IGZvbGRlZCA9IHRoaXMudHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkJMT0NLX0ZPTERFRDtcbiAgICAgICAgbGV0IGF0U3RhcnQgPSB0cnVlO1xuICAgICAgICBsZXQgc3RyID0gXCJcIjtcbiAgICAgICAgbGV0IHNlcCA9IFwiXCI7XG4gICAgICAgIGxldCBwcmV2TW9yZUluZGVudGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBiaTsgKytqKSB7XG4gICAgICAgICAgICBpZiAoc3JjW2ldICE9PSBcIiBcIilcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGNoMiA9IHNyY1tpXTtcbiAgICAgICAgICBpZiAoY2gyID09PSBcIlxcblwiKSB7XG4gICAgICAgICAgICBpZiAoc2VwID09PSBcIlxcblwiKVxuICAgICAgICAgICAgICBzdHIgKz0gXCJcXG5cIjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgc2VwID0gXCJcXG5cIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGluZUVuZCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZkxpbmUoc3JjLCBpKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBzcmMuc2xpY2UoaSwgbGluZUVuZCk7XG4gICAgICAgICAgICBpID0gbGluZUVuZDtcbiAgICAgICAgICAgIGlmIChmb2xkZWQgJiYgKGNoMiA9PT0gXCIgXCIgfHwgY2gyID09PSBcIlx0XCIpICYmIGkgPCBrZWVwU3RhcnQpIHtcbiAgICAgICAgICAgICAgaWYgKHNlcCA9PT0gXCIgXCIpXG4gICAgICAgICAgICAgICAgc2VwID0gXCJcXG5cIjtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoIXByZXZNb3JlSW5kZW50ZWQgJiYgIWF0U3RhcnQgJiYgc2VwID09PSBcIlxcblwiKVxuICAgICAgICAgICAgICAgIHNlcCA9IFwiXFxuXFxuXCI7XG4gICAgICAgICAgICAgIHN0ciArPSBzZXAgKyBsaW5lO1xuICAgICAgICAgICAgICBzZXAgPSBsaW5lRW5kIDwgZW5kICYmIHNyY1tsaW5lRW5kXSB8fCBcIlwiO1xuICAgICAgICAgICAgICBwcmV2TW9yZUluZGVudGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0ciArPSBzZXAgKyBsaW5lO1xuICAgICAgICAgICAgICBzZXAgPSBmb2xkZWQgJiYgaSA8IGtlZXBTdGFydCA/IFwiIFwiIDogXCJcXG5cIjtcbiAgICAgICAgICAgICAgcHJldk1vcmVJbmRlbnRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGF0U3RhcnQgJiYgbGluZSAhPT0gXCJcIilcbiAgICAgICAgICAgICAgYXRTdGFydCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaG9tcGluZyA9PT0gQ2hvbXAuU1RSSVAgPyBzdHIgOiBzdHIgKyBcIlxcblwiO1xuICAgICAgfVxuICAgICAgcGFyc2VCbG9ja0hlYWRlcihzdGFydCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBzdGFydCArIDE7XG4gICAgICAgIGxldCBiaSA9IFwiXCI7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgY29uc3QgY2ggPSBzcmNbb2Zmc2V0XTtcbiAgICAgICAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgICAgICBjYXNlIFwiLVwiOlxuICAgICAgICAgICAgICB0aGlzLmNob21waW5nID0gQ2hvbXAuU1RSSVA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIitcIjpcbiAgICAgICAgICAgICAgdGhpcy5jaG9tcGluZyA9IENob21wLktFRVA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIjBcIjpcbiAgICAgICAgICAgIGNhc2UgXCIxXCI6XG4gICAgICAgICAgICBjYXNlIFwiMlwiOlxuICAgICAgICAgICAgY2FzZSBcIjNcIjpcbiAgICAgICAgICAgIGNhc2UgXCI0XCI6XG4gICAgICAgICAgICBjYXNlIFwiNVwiOlxuICAgICAgICAgICAgY2FzZSBcIjZcIjpcbiAgICAgICAgICAgIGNhc2UgXCI3XCI6XG4gICAgICAgICAgICBjYXNlIFwiOFwiOlxuICAgICAgICAgICAgY2FzZSBcIjlcIjpcbiAgICAgICAgICAgICAgYmkgKz0gY2g7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhpcy5ibG9ja0luZGVudCA9IE51bWJlcihiaSkgfHwgbnVsbDtcbiAgICAgICAgICAgICAgdGhpcy5oZWFkZXIgPSBuZXcgUGxhaW5WYWx1ZS5SYW5nZShzdGFydCwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcnNlQmxvY2tWYWx1ZShzdGFydCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaW5kZW50LFxuICAgICAgICAgIHNyY1xuICAgICAgICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBjb25zdCBleHBsaWNpdCA9ICEhdGhpcy5ibG9ja0luZGVudDtcbiAgICAgICAgbGV0IG9mZnNldCA9IHN0YXJ0O1xuICAgICAgICBsZXQgdmFsdWVFbmQgPSBzdGFydDtcbiAgICAgICAgbGV0IG1pbkJsb2NrSW5kZW50ID0gMTtcbiAgICAgICAgZm9yIChsZXQgY2ggPSBzcmNbb2Zmc2V0XTsgY2ggPT09IFwiXFxuXCI7IGNoID0gc3JjW29mZnNldF0pIHtcbiAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICBpZiAoUGxhaW5WYWx1ZS5Ob2RlLmF0RG9jdW1lbnRCb3VuZGFyeShzcmMsIG9mZnNldCkpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjb25zdCBlbmQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZCbG9ja0luZGVudChzcmMsIGluZGVudCwgb2Zmc2V0KTtcbiAgICAgICAgICBpZiAoZW5kID09PSBudWxsKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY29uc3QgY2gyID0gc3JjW2VuZF07XG4gICAgICAgICAgY29uc3QgbGluZUluZGVudCA9IGVuZCAtIChvZmZzZXQgKyBpbmRlbnQpO1xuICAgICAgICAgIGlmICghdGhpcy5ibG9ja0luZGVudCkge1xuICAgICAgICAgICAgaWYgKHNyY1tlbmRdICE9PSBcIlxcblwiKSB7XG4gICAgICAgICAgICAgIGlmIChsaW5lSW5kZW50IDwgbWluQmxvY2tJbmRlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkJsb2NrIHNjYWxhcnMgd2l0aCBtb3JlLWluZGVudGVkIGxlYWRpbmcgZW1wdHkgbGluZXMgbXVzdCB1c2UgYW4gZXhwbGljaXQgaW5kZW50YXRpb24gaW5kaWNhdG9yXCI7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKHRoaXMsIG1zZyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5ibG9ja0luZGVudCA9IGxpbmVJbmRlbnQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmVJbmRlbnQgPiBtaW5CbG9ja0luZGVudCkge1xuICAgICAgICAgICAgICBtaW5CbG9ja0luZGVudCA9IGxpbmVJbmRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChjaDIgJiYgY2gyICE9PSBcIlxcblwiICYmIGxpbmVJbmRlbnQgPCB0aGlzLmJsb2NrSW5kZW50KSB7XG4gICAgICAgICAgICBpZiAoc3JjW2VuZF0gPT09IFwiI1wiKVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGlmICghdGhpcy5lcnJvcikge1xuICAgICAgICAgICAgICBjb25zdCBzcmMyID0gZXhwbGljaXQgPyBcImV4cGxpY2l0IGluZGVudGF0aW9uIGluZGljYXRvclwiIDogXCJmaXJzdCBsaW5lXCI7XG4gICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBCbG9jayBzY2FsYXJzIG11c3Qgbm90IGJlIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGVpciAke3NyYzJ9YDtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKHRoaXMsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzcmNbZW5kXSA9PT0gXCJcXG5cIikge1xuICAgICAgICAgICAgb2Zmc2V0ID0gZW5kO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvZmZzZXQgPSB2YWx1ZUVuZCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZkxpbmUoc3JjLCBlbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jaG9tcGluZyAhPT0gQ2hvbXAuS0VFUCkge1xuICAgICAgICAgIG9mZnNldCA9IHNyY1t2YWx1ZUVuZF0gPyB2YWx1ZUVuZCArIDEgOiB2YWx1ZUVuZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlUmFuZ2UgPSBuZXcgUGxhaW5WYWx1ZS5SYW5nZShzdGFydCArIDEsIG9mZnNldCk7XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICBwYXJzZShjb250ZXh0LCBzdGFydCkge1xuICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSBjb250ZXh0O1xuICAgICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5wYXJzZUJsb2NrSGVhZGVyKHN0YXJ0KTtcbiAgICAgICAgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzcmMsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCA9IHRoaXMucGFyc2VDb21tZW50KG9mZnNldCk7XG4gICAgICAgIG9mZnNldCA9IHRoaXMucGFyc2VCbG9ja1ZhbHVlKG9mZnNldCk7XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICBzZXRPcmlnUmFuZ2VzKGNyLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gc3VwZXIuc2V0T3JpZ1Jhbmdlcyhjciwgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVhZGVyID8gdGhpcy5oZWFkZXIuc2V0T3JpZ1JhbmdlKGNyLCBvZmZzZXQpIDogb2Zmc2V0O1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIEZsb3dDb2xsZWN0aW9uID0gY2xhc3MgZXh0ZW5kcyBQbGFpblZhbHVlLk5vZGUge1xuICAgICAgY29uc3RydWN0b3IodHlwZSwgcHJvcHMpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgcHJvcHMpO1xuICAgICAgICB0aGlzLml0ZW1zID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHByZXZOb2RlSXNKc29uTGlrZShpZHggPSB0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5pdGVtc1tpZHggLSAxXTtcbiAgICAgICAgcmV0dXJuICEhbm9kZSAmJiAobm9kZS5qc29uTGlrZSB8fCBub2RlLnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5DT01NRU5UICYmIHRoaXMucHJldk5vZGVJc0pzb25MaWtlKGlkeCAtIDEpKTtcbiAgICAgIH1cbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBwYXJzZU5vZGUsXG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSBjb250ZXh0O1xuICAgICAgICBsZXQge1xuICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICBsaW5lU3RhcnRcbiAgICAgICAgfSA9IGNvbnRleHQ7XG4gICAgICAgIGxldCBjaGFyID0gc3JjW3N0YXJ0XTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFt7XG4gICAgICAgICAgY2hhcixcbiAgICAgICAgICBvZmZzZXQ6IHN0YXJ0XG4gICAgICAgIH1dO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzcmMsIHN0YXJ0ICsgMSk7XG4gICAgICAgIGNoYXIgPSBzcmNbb2Zmc2V0XTtcbiAgICAgICAgd2hpbGUgKGNoYXIgJiYgY2hhciAhPT0gXCJdXCIgJiYgY2hhciAhPT0gXCJ9XCIpIHtcbiAgICAgICAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgICAgICAgIGNhc2UgXCJcXG5cIjpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxpbmVTdGFydCA9IG9mZnNldCArIDE7XG4gICAgICAgICAgICAgICAgY29uc3Qgd3NFbmQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgbGluZVN0YXJ0KTtcbiAgICAgICAgICAgICAgICBpZiAoc3JjW3dzRW5kXSA9PT0gXCJcXG5cIikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgYmxhbmtMaW5lID0gbmV3IEJsYW5rTGluZSgpO1xuICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gYmxhbmtMaW5lLnBhcnNlKHtcbiAgICAgICAgICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICAgICAgICB9LCBsaW5lU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGJsYW5rTGluZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9mZnNldCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZkluZGVudChzcmMsIGxpbmVTdGFydCk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8PSBsaW5lU3RhcnQgKyBpbmRlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGNoYXIgPSBzcmNbb2Zmc2V0XTtcbiAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCBsaW5lU3RhcnQgKyBpbmRlbnQgfHwgY2hhciAhPT0gXCJdXCIgJiYgY2hhciAhPT0gXCJ9XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gXCJJbnN1ZmZpY2llbnQgaW5kZW50YXRpb24gaW4gZmxvdyBjb2xsZWN0aW9uXCI7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLCBtc2cpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCIsXCI6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgY2hhcixcbiAgICAgICAgICAgICAgICAgIG9mZnNldFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIiNcIjpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnQgPSBuZXcgQ29tbWVudCgpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGNvbW1lbnQucGFyc2Uoe1xuICAgICAgICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICAgICAgfSwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goY29tbWVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiP1wiOlxuICAgICAgICAgICAgY2FzZSBcIjpcIjoge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gc3JjW29mZnNldCArIDFdO1xuICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gXCJcXG5cIiB8fCBuZXh0ID09PSBcIlx0XCIgfHwgbmV4dCA9PT0gXCIgXCIgfHwgbmV4dCA9PT0gXCIsXCIgfHwgY2hhciA9PT0gXCI6XCIgJiYgdGhpcy5wcmV2Tm9kZUlzSnNvbkxpa2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBjaGFyLFxuICAgICAgICAgICAgICAgICAgb2Zmc2V0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHBhcnNlTm9kZSh7XG4gICAgICAgICAgICAgICAgYXRMaW5lU3RhcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGluQ29sbGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgaW5GbG93OiB0cnVlLFxuICAgICAgICAgICAgICAgIGluZGVudDogLTEsXG4gICAgICAgICAgICAgICAgbGluZVN0YXJ0LFxuICAgICAgICAgICAgICAgIHBhcmVudDogdGhpc1xuICAgICAgICAgICAgICB9LCBvZmZzZXQpO1xuICAgICAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlUmFuZ2UgPSBuZXcgUGxhaW5WYWx1ZS5SYW5nZShzdGFydCwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5Ob2RlLm5vcm1hbGl6ZU9mZnNldChzcmMsIG5vZGUucmFuZ2UuZW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzcmMsIG9mZnNldCk7XG4gICAgICAgICAgY2hhciA9IHNyY1tvZmZzZXRdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVSYW5nZSA9IG5ldyBQbGFpblZhbHVlLlJhbmdlKHN0YXJ0LCBvZmZzZXQgKyAxKTtcbiAgICAgICAgaWYgKGNoYXIpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgY2hhcixcbiAgICAgICAgICAgIG9mZnNldFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG9mZnNldCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZldoaXRlU3BhY2Uoc3JjLCBvZmZzZXQgKyAxKTtcbiAgICAgICAgICBvZmZzZXQgPSB0aGlzLnBhcnNlQ29tbWVudChvZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICBzZXRPcmlnUmFuZ2VzKGNyLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gc3VwZXIuc2V0T3JpZ1Jhbmdlcyhjciwgb2Zmc2V0KTtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBQbGFpblZhbHVlLk5vZGUpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IG5vZGUuc2V0T3JpZ1Jhbmdlcyhjciwgb2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgbm9kZS5vcmlnT2Zmc2V0ID0gbm9kZS5vZmZzZXQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpID0gb2Zmc2V0O1xuICAgICAgICAgICAgd2hpbGUgKGkgPCBjci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgaWYgKGNyW2ldID4gbm9kZS5vZmZzZXQpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub2RlLm9yaWdPZmZzZXQgPSBub2RlLm9mZnNldCArIGk7XG4gICAgICAgICAgICBvZmZzZXQgPSBpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICB9XG4gICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIHNyY1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSA9IHRoaXM7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKVxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gaW5zdGFuY2VvZiBQbGFpblZhbHVlLk5vZGUpO1xuICAgICAgICBsZXQgc3RyID0gXCJcIjtcbiAgICAgICAgbGV0IHByZXZFbmQgPSByYW5nZS5zdGFydDtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHNyYy5zbGljZShwcmV2RW5kLCBub2RlLnJhbmdlLnN0YXJ0KTtcbiAgICAgICAgICBwcmV2RW5kID0gbm9kZS5yYW5nZS5lbmQ7XG4gICAgICAgICAgc3RyICs9IHByZWZpeCArIFN0cmluZyhub2RlKTtcbiAgICAgICAgICBpZiAoc3RyW3N0ci5sZW5ndGggLSAxXSA9PT0gXCJcXG5cIiAmJiBzcmNbcHJldkVuZCAtIDFdICE9PSBcIlxcblwiICYmIHNyY1twcmV2RW5kXSA9PT0gXCJcXG5cIikge1xuICAgICAgICAgICAgcHJldkVuZCArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHN0ciArPSBzcmMuc2xpY2UocHJldkVuZCwgcmFuZ2UuZW5kKTtcbiAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuTm9kZS5hZGRTdHJpbmdUZXJtaW5hdG9yKHNyYywgcmFuZ2UuZW5kLCBzdHIpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIFF1b3RlRG91YmxlID0gY2xhc3MgZXh0ZW5kcyBQbGFpblZhbHVlLk5vZGUge1xuICAgICAgc3RhdGljIGVuZE9mUXVvdGUoc3JjLCBvZmZzZXQpIHtcbiAgICAgICAgbGV0IGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIHdoaWxlIChjaCAmJiBjaCAhPT0gJ1wiJykge1xuICAgICAgICAgIG9mZnNldCArPSBjaCA9PT0gXCJcXFxcXCIgPyAyIDogMTtcbiAgICAgICAgICBjaCA9IHNyY1tvZmZzZXRdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQgKyAxO1xuICAgICAgfVxuICAgICAgZ2V0IHN0clZhbHVlKCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWVSYW5nZSB8fCAhdGhpcy5jb250ZXh0KVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuZFxuICAgICAgICB9ID0gdGhpcy52YWx1ZVJhbmdlO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaW5kZW50LFxuICAgICAgICAgIHNyY1xuICAgICAgICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBpZiAoc3JjW2VuZCAtIDFdICE9PSAnXCInKVxuICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTeW50YXhFcnJvcih0aGlzLCAnTWlzc2luZyBjbG9zaW5nIFwicXVvdGUnKSk7XG4gICAgICAgIGxldCBzdHIgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQgKyAxOyBpIDwgZW5kIC0gMTsgKytpKSB7XG4gICAgICAgICAgY29uc3QgY2ggPSBzcmNbaV07XG4gICAgICAgICAgaWYgKGNoID09PSBcIlxcblwiKSB7XG4gICAgICAgICAgICBpZiAoUGxhaW5WYWx1ZS5Ob2RlLmF0RG9jdW1lbnRCb3VuZGFyeShzcmMsIGkgKyAxKSlcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IodGhpcywgXCJEb2N1bWVudCBib3VuZGFyeSBpbmRpY2F0b3JzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gc3RyaW5nIHZhbHVlc1wiKSk7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGZvbGQsXG4gICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0gPSBQbGFpblZhbHVlLk5vZGUuZm9sZE5ld2xpbmUoc3JjLCBpLCBpbmRlbnQpO1xuICAgICAgICAgICAgc3RyICs9IGZvbGQ7XG4gICAgICAgICAgICBpID0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGVycm9yKVxuICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLCBcIk11bHRpLWxpbmUgZG91YmxlLXF1b3RlZCBzdHJpbmcgbmVlZHMgdG8gYmUgc3VmZmljaWVudGx5IGluZGVudGVkXCIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgc3dpdGNoIChzcmNbaV0pIHtcbiAgICAgICAgICAgICAgY2FzZSBcIjBcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCJcXDBcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcImFcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCJcXHgwN1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiYlwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIlxcYlwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiZVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIlxceDFCXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJmXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiXFxmXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJuXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiXFxuXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJyXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiXFxyXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJ0XCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiXHRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcInZcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCJcXHZcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIk5cIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCJcXHg4NVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiX1wiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIlxceEEwXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJMXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiXFx1MjAyOFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiUFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIlxcdTIwMjlcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIiBcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCIgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgICAgICBzdHIgKz0gJ1wiJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIi9cIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCIvXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJcXFxcXCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiXFxcXFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiXHRcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCJcdFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwieFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSB0aGlzLnBhcnNlQ2hhckNvZGUoaSArIDEsIDIsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaSArPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwidVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSB0aGlzLnBhcnNlQ2hhckNvZGUoaSArIDEsIDQsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaSArPSA0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiVVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSB0aGlzLnBhcnNlQ2hhckNvZGUoaSArIDEsIDgsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaSArPSA4O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiXFxuXCI6XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNyY1tpICsgMV0gPT09IFwiIFwiIHx8IHNyY1tpICsgMV0gPT09IFwiXHRcIilcbiAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU3ludGF4RXJyb3IodGhpcywgYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlICR7c3JjLnN1YnN0cihpIC0gMSwgMil9YCkpO1xuICAgICAgICAgICAgICAgIHN0ciArPSBcIlxcXFxcIiArIHNyY1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSBcIiBcIiB8fCBjaCA9PT0gXCJcdFwiKSB7XG4gICAgICAgICAgICBjb25zdCB3c1N0YXJ0ID0gaTtcbiAgICAgICAgICAgIGxldCBuZXh0ID0gc3JjW2kgKyAxXTtcbiAgICAgICAgICAgIHdoaWxlIChuZXh0ID09PSBcIiBcIiB8fCBuZXh0ID09PSBcIlx0XCIpIHtcbiAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICBuZXh0ID0gc3JjW2kgKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0ICE9PSBcIlxcblwiKVxuICAgICAgICAgICAgICBzdHIgKz0gaSA+IHdzU3RhcnQgPyBzcmMuc2xpY2Uod3NTdGFydCwgaSArIDEpIDogY2g7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPiAwID8ge1xuICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICBzdHJcbiAgICAgICAgfSA6IHN0cjtcbiAgICAgIH1cbiAgICAgIHBhcnNlQ2hhckNvZGUob2Zmc2V0LCBsZW5ndGgsIGVycm9ycykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3JjXG4gICAgICAgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGNjID0gc3JjLnN1YnN0cihvZmZzZXQsIGxlbmd0aCk7XG4gICAgICAgIGNvbnN0IG9rID0gY2MubGVuZ3RoID09PSBsZW5ndGggJiYgL15bMC05YS1mQS1GXSskLy50ZXN0KGNjKTtcbiAgICAgICAgY29uc3QgY29kZSA9IG9rID8gcGFyc2VJbnQoY2MsIDE2KSA6IE5hTjtcbiAgICAgICAgaWYgKGlzTmFOKGNvZGUpKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFN5bnRheEVycm9yKHRoaXMsIGBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAke3NyYy5zdWJzdHIob2Zmc2V0IC0gMiwgbGVuZ3RoICsgMil9YCkpO1xuICAgICAgICAgIHJldHVybiBzcmMuc3Vic3RyKG9mZnNldCAtIDIsIGxlbmd0aCArIDIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlKTtcbiAgICAgIH1cbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IGNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBRdW90ZURvdWJsZS5lbmRPZlF1b3RlKHNyYywgc3RhcnQgKyAxKTtcbiAgICAgICAgdGhpcy52YWx1ZVJhbmdlID0gbmV3IFBsYWluVmFsdWUuUmFuZ2Uoc3RhcnQsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZldoaXRlU3BhY2Uoc3JjLCBvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgPSB0aGlzLnBhcnNlQ29tbWVudChvZmZzZXQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIFF1b3RlU2luZ2xlID0gY2xhc3MgZXh0ZW5kcyBQbGFpblZhbHVlLk5vZGUge1xuICAgICAgc3RhdGljIGVuZE9mUXVvdGUoc3JjLCBvZmZzZXQpIHtcbiAgICAgICAgbGV0IGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIHdoaWxlIChjaCkge1xuICAgICAgICAgIGlmIChjaCA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgIGlmIChzcmNbb2Zmc2V0ICsgMV0gIT09IFwiJ1wiKVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNoID0gc3JjW29mZnNldCArPSAyXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2ggPSBzcmNbb2Zmc2V0ICs9IDFdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTtcbiAgICAgIH1cbiAgICAgIGdldCBzdHJWYWx1ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlUmFuZ2UgfHwgIXRoaXMuY29udGV4dClcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gW107XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfSA9IHRoaXMudmFsdWVSYW5nZTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgaWYgKHNyY1tlbmQgLSAxXSAhPT0gXCInXCIpXG4gICAgICAgICAgZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFN5bnRheEVycm9yKHRoaXMsIFwiTWlzc2luZyBjbG9zaW5nICdxdW90ZVwiKSk7XG4gICAgICAgIGxldCBzdHIgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQgKyAxOyBpIDwgZW5kIC0gMTsgKytpKSB7XG4gICAgICAgICAgY29uc3QgY2ggPSBzcmNbaV07XG4gICAgICAgICAgaWYgKGNoID09PSBcIlxcblwiKSB7XG4gICAgICAgICAgICBpZiAoUGxhaW5WYWx1ZS5Ob2RlLmF0RG9jdW1lbnRCb3VuZGFyeShzcmMsIGkgKyAxKSlcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IodGhpcywgXCJEb2N1bWVudCBib3VuZGFyeSBpbmRpY2F0b3JzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gc3RyaW5nIHZhbHVlc1wiKSk7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGZvbGQsXG4gICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0gPSBQbGFpblZhbHVlLk5vZGUuZm9sZE5ld2xpbmUoc3JjLCBpLCBpbmRlbnQpO1xuICAgICAgICAgICAgc3RyICs9IGZvbGQ7XG4gICAgICAgICAgICBpID0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGVycm9yKVxuICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLCBcIk11bHRpLWxpbmUgc2luZ2xlLXF1b3RlZCBzdHJpbmcgbmVlZHMgdG8gYmUgc3VmZmljaWVudGx5IGluZGVudGVkXCIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSBcIidcIikge1xuICAgICAgICAgICAgc3RyICs9IGNoO1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgaWYgKHNyY1tpXSAhPT0gXCInXCIpXG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTeW50YXhFcnJvcih0aGlzLCBcIlVuZXNjYXBlZCBzaW5nbGUgcXVvdGU/IFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uXCIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSBcIiBcIiB8fCBjaCA9PT0gXCJcdFwiKSB7XG4gICAgICAgICAgICBjb25zdCB3c1N0YXJ0ID0gaTtcbiAgICAgICAgICAgIGxldCBuZXh0ID0gc3JjW2kgKyAxXTtcbiAgICAgICAgICAgIHdoaWxlIChuZXh0ID09PSBcIiBcIiB8fCBuZXh0ID09PSBcIlx0XCIpIHtcbiAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICBuZXh0ID0gc3JjW2kgKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0ICE9PSBcIlxcblwiKVxuICAgICAgICAgICAgICBzdHIgKz0gaSA+IHdzU3RhcnQgPyBzcmMuc2xpY2Uod3NTdGFydCwgaSArIDEpIDogY2g7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0ciArPSBjaDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPiAwID8ge1xuICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICBzdHJcbiAgICAgICAgfSA6IHN0cjtcbiAgICAgIH1cbiAgICAgIHBhcnNlKGNvbnRleHQsIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzcmNcbiAgICAgICAgfSA9IGNvbnRleHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBRdW90ZVNpbmdsZS5lbmRPZlF1b3RlKHNyYywgc3RhcnQgKyAxKTtcbiAgICAgICAgdGhpcy52YWx1ZVJhbmdlID0gbmV3IFBsYWluVmFsdWUuUmFuZ2Uoc3RhcnQsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZldoaXRlU3BhY2Uoc3JjLCBvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgPSB0aGlzLnBhcnNlQ29tbWVudChvZmZzZXQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gY3JlYXRlTmV3Tm9kZSh0eXBlLCBwcm9wcykge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkFMSUFTOlxuICAgICAgICAgIHJldHVybiBuZXcgQWxpYXModHlwZSwgcHJvcHMpO1xuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5CTE9DS19GT0xERUQ6XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkJMT0NLX0xJVEVSQUw6XG4gICAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1ZhbHVlKHR5cGUsIHByb3BzKTtcbiAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuRkxPV19NQVA6XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkZMT1dfU0VROlxuICAgICAgICAgIHJldHVybiBuZXcgRmxvd0NvbGxlY3Rpb24odHlwZSwgcHJvcHMpO1xuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5NQVBfS0VZOlxuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5NQVBfVkFMVUU6XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLlNFUV9JVEVNOlxuICAgICAgICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbkl0ZW0odHlwZSwgcHJvcHMpO1xuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5DT01NRU5UOlxuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5QTEFJTjpcbiAgICAgICAgICByZXR1cm4gbmV3IFBsYWluVmFsdWUuUGxhaW5WYWx1ZSh0eXBlLCBwcm9wcyk7XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLlFVT1RFX0RPVUJMRTpcbiAgICAgICAgICByZXR1cm4gbmV3IFF1b3RlRG91YmxlKHR5cGUsIHByb3BzKTtcbiAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuUVVPVEVfU0lOR0xFOlxuICAgICAgICAgIHJldHVybiBuZXcgUXVvdGVTaW5nbGUodHlwZSwgcHJvcHMpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgUGFyc2VDb250ZXh0ID0gY2xhc3Mge1xuICAgICAgc3RhdGljIHBhcnNlVHlwZShzcmMsIG9mZnNldCwgaW5GbG93KSB7XG4gICAgICAgIHN3aXRjaCAoc3JjW29mZnNldF0pIHtcbiAgICAgICAgICBjYXNlIFwiKlwiOlxuICAgICAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuVHlwZS5BTElBUztcbiAgICAgICAgICBjYXNlIFwiPlwiOlxuICAgICAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuVHlwZS5CTE9DS19GT0xERUQ7XG4gICAgICAgICAgY2FzZSBcInxcIjpcbiAgICAgICAgICAgIHJldHVybiBQbGFpblZhbHVlLlR5cGUuQkxPQ0tfTElURVJBTDtcbiAgICAgICAgICBjYXNlIFwie1wiOlxuICAgICAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuVHlwZS5GTE9XX01BUDtcbiAgICAgICAgICBjYXNlIFwiW1wiOlxuICAgICAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuVHlwZS5GTE9XX1NFUTtcbiAgICAgICAgICBjYXNlIFwiP1wiOlxuICAgICAgICAgICAgcmV0dXJuICFpbkZsb3cgJiYgUGxhaW5WYWx1ZS5Ob2RlLmF0Qmxhbmsoc3JjLCBvZmZzZXQgKyAxLCB0cnVlKSA/IFBsYWluVmFsdWUuVHlwZS5NQVBfS0VZIDogUGxhaW5WYWx1ZS5UeXBlLlBMQUlOO1xuICAgICAgICAgIGNhc2UgXCI6XCI6XG4gICAgICAgICAgICByZXR1cm4gIWluRmxvdyAmJiBQbGFpblZhbHVlLk5vZGUuYXRCbGFuayhzcmMsIG9mZnNldCArIDEsIHRydWUpID8gUGxhaW5WYWx1ZS5UeXBlLk1BUF9WQUxVRSA6IFBsYWluVmFsdWUuVHlwZS5QTEFJTjtcbiAgICAgICAgICBjYXNlIFwiLVwiOlxuICAgICAgICAgICAgcmV0dXJuICFpbkZsb3cgJiYgUGxhaW5WYWx1ZS5Ob2RlLmF0Qmxhbmsoc3JjLCBvZmZzZXQgKyAxLCB0cnVlKSA/IFBsYWluVmFsdWUuVHlwZS5TRVFfSVRFTSA6IFBsYWluVmFsdWUuVHlwZS5QTEFJTjtcbiAgICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICByZXR1cm4gUGxhaW5WYWx1ZS5UeXBlLlFVT1RFX0RPVUJMRTtcbiAgICAgICAgICBjYXNlIFwiJ1wiOlxuICAgICAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuVHlwZS5RVU9URV9TSU5HTEU7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBQbGFpblZhbHVlLlR5cGUuUExBSU47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0cnVjdG9yKG9yaWcgPSB7fSwge1xuICAgICAgICBhdExpbmVTdGFydCxcbiAgICAgICAgaW5Db2xsZWN0aW9uLFxuICAgICAgICBpbkZsb3csXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgbGluZVN0YXJ0LFxuICAgICAgICBwYXJlbnRcbiAgICAgIH0gPSB7fSkge1xuICAgICAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInBhcnNlTm9kZVwiLCAob3ZlcmxheSwgc3RhcnQpID0+IHtcbiAgICAgICAgICBpZiAoUGxhaW5WYWx1ZS5Ob2RlLmF0RG9jdW1lbnRCb3VuZGFyeSh0aGlzLnNyYywgc3RhcnQpKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBQYXJzZUNvbnRleHQodGhpcywgb3ZlcmxheSk7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgdmFsdWVTdGFydFxuICAgICAgICAgIH0gPSBjb250ZXh0LnBhcnNlUHJvcHMoc3RhcnQpO1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSBjcmVhdGVOZXdOb2RlKHR5cGUsIHByb3BzKTtcbiAgICAgICAgICBsZXQgb2Zmc2V0ID0gbm9kZS5wYXJzZShjb250ZXh0LCB2YWx1ZVN0YXJ0KTtcbiAgICAgICAgICBub2RlLnJhbmdlID0gbmV3IFBsYWluVmFsdWUuUmFuZ2Uoc3RhcnQsIG9mZnNldCk7XG4gICAgICAgICAgaWYgKG9mZnNldCA8PSBzdGFydCkge1xuICAgICAgICAgICAgbm9kZS5lcnJvciA9IG5ldyBFcnJvcihgTm9kZSNwYXJzZSBjb25zdW1lZCBubyBjaGFyYWN0ZXJzYCk7XG4gICAgICAgICAgICBub2RlLmVycm9yLnBhcnNlRW5kID0gb2Zmc2V0O1xuICAgICAgICAgICAgbm9kZS5lcnJvci5zb3VyY2UgPSBub2RlO1xuICAgICAgICAgICAgbm9kZS5yYW5nZS5lbmQgPSBzdGFydCArIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb250ZXh0Lm5vZGVTdGFydHNDb2xsZWN0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgICBpZiAoIW5vZGUuZXJyb3IgJiYgIWNvbnRleHQuYXRMaW5lU3RhcnQgJiYgY29udGV4dC5wYXJlbnQudHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkRPQ1VNRU5UKSB7XG4gICAgICAgICAgICAgIG5vZGUuZXJyb3IgPSBuZXcgUGxhaW5WYWx1ZS5ZQU1MU3ludGF4RXJyb3Iobm9kZSwgXCJCbG9jayBjb2xsZWN0aW9uIG11c3Qgbm90IGhhdmUgcHJlY2VkaW5nIGNvbnRlbnQgaGVyZSAoZS5nLiBkaXJlY3RpdmVzLWVuZCBpbmRpY2F0b3IpXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBDb2xsZWN0aW9uKG5vZGUpO1xuICAgICAgICAgICAgb2Zmc2V0ID0gY29sbGVjdGlvbi5wYXJzZShuZXcgUGFyc2VDb250ZXh0KGNvbnRleHQpLCBvZmZzZXQpO1xuICAgICAgICAgICAgY29sbGVjdGlvbi5yYW5nZSA9IG5ldyBQbGFpblZhbHVlLlJhbmdlKHN0YXJ0LCBvZmZzZXQpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdExpbmVTdGFydCA9IGF0TGluZVN0YXJ0ICE9IG51bGwgPyBhdExpbmVTdGFydCA6IG9yaWcuYXRMaW5lU3RhcnQgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuaW5Db2xsZWN0aW9uID0gaW5Db2xsZWN0aW9uICE9IG51bGwgPyBpbkNvbGxlY3Rpb24gOiBvcmlnLmluQ29sbGVjdGlvbiB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy5pbkZsb3cgPSBpbkZsb3cgIT0gbnVsbCA/IGluRmxvdyA6IG9yaWcuaW5GbG93IHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmluZGVudCA9IGluZGVudCAhPSBudWxsID8gaW5kZW50IDogb3JpZy5pbmRlbnQ7XG4gICAgICAgIHRoaXMubGluZVN0YXJ0ID0gbGluZVN0YXJ0ICE9IG51bGwgPyBsaW5lU3RhcnQgOiBvcmlnLmxpbmVTdGFydDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQgIT0gbnVsbCA/IHBhcmVudCA6IG9yaWcucGFyZW50IHx8IHt9O1xuICAgICAgICB0aGlzLnJvb3QgPSBvcmlnLnJvb3Q7XG4gICAgICAgIHRoaXMuc3JjID0gb3JpZy5zcmM7XG4gICAgICB9XG4gICAgICBub2RlU3RhcnRzQ29sbGVjdGlvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpbkNvbGxlY3Rpb24sXG4gICAgICAgICAgaW5GbG93LFxuICAgICAgICAgIHNyY1xuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgaWYgKGluQ29sbGVjdGlvbiB8fCBpbkZsb3cpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENvbGxlY3Rpb25JdGVtKVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gbm9kZS5yYW5nZS5lbmQ7XG4gICAgICAgIGlmIChzcmNbb2Zmc2V0XSA9PT0gXCJcXG5cIiB8fCBzcmNbb2Zmc2V0IC0gMV0gPT09IFwiXFxuXCIpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBvZmZzZXQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHNyYywgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIHNyY1tvZmZzZXRdID09PSBcIjpcIjtcbiAgICAgIH1cbiAgICAgIHBhcnNlUHJvcHMob2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpbkZsb3csXG4gICAgICAgICAgcGFyZW50LFxuICAgICAgICAgIHNyY1xuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICAgICAgbGV0IGxpbmVIYXNQcm9wcyA9IGZhbHNlO1xuICAgICAgICBvZmZzZXQgPSB0aGlzLmF0TGluZVN0YXJ0ID8gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mSW5kZW50KHNyYywgb2Zmc2V0KSA6IFBsYWluVmFsdWUuTm9kZS5lbmRPZldoaXRlU3BhY2Uoc3JjLCBvZmZzZXQpO1xuICAgICAgICBsZXQgY2ggPSBzcmNbb2Zmc2V0XTtcbiAgICAgICAgd2hpbGUgKGNoID09PSBQbGFpblZhbHVlLkNoYXIuQU5DSE9SIHx8IGNoID09PSBQbGFpblZhbHVlLkNoYXIuQ09NTUVOVCB8fCBjaCA9PT0gUGxhaW5WYWx1ZS5DaGFyLlRBRyB8fCBjaCA9PT0gXCJcXG5cIikge1xuICAgICAgICAgIGlmIChjaCA9PT0gXCJcXG5cIikge1xuICAgICAgICAgICAgbGV0IGluRW5kID0gb2Zmc2V0O1xuICAgICAgICAgICAgbGV0IGxpbmVTdGFydDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5FbmQgKyAxO1xuICAgICAgICAgICAgICBpbkVuZCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZkluZGVudChzcmMsIGxpbmVTdGFydCk7XG4gICAgICAgICAgICB9IHdoaWxlIChzcmNbaW5FbmRdID09PSBcIlxcblwiKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGVudERpZmYgPSBpbkVuZCAtIChsaW5lU3RhcnQgKyB0aGlzLmluZGVudCk7XG4gICAgICAgICAgICBjb25zdCBub0luZGljYXRvckFzSW5kZW50ID0gcGFyZW50LnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5TRVFfSVRFTSAmJiBwYXJlbnQuY29udGV4dC5hdExpbmVTdGFydDtcbiAgICAgICAgICAgIGlmIChzcmNbaW5FbmRdICE9PSBcIiNcIiAmJiAhUGxhaW5WYWx1ZS5Ob2RlLm5leHROb2RlSXNJbmRlbnRlZChzcmNbaW5FbmRdLCBpbmRlbnREaWZmLCAhbm9JbmRpY2F0b3JBc0luZGVudCkpXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdGhpcy5hdExpbmVTdGFydCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxpbmVTdGFydCA9IGxpbmVTdGFydDtcbiAgICAgICAgICAgIGxpbmVIYXNQcm9wcyA9IGZhbHNlO1xuICAgICAgICAgICAgb2Zmc2V0ID0gaW5FbmQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gUGxhaW5WYWx1ZS5DaGFyLkNPTU1FTlQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZkxpbmUoc3JjLCBvZmZzZXQgKyAxKTtcbiAgICAgICAgICAgIHByb3BzLnB1c2gobmV3IFBsYWluVmFsdWUuUmFuZ2Uob2Zmc2V0LCBlbmQpKTtcbiAgICAgICAgICAgIG9mZnNldCA9IGVuZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGVuZCA9IFBsYWluVmFsdWUuTm9kZS5lbmRPZklkZW50aWZpZXIoc3JjLCBvZmZzZXQgKyAxKTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gUGxhaW5WYWx1ZS5DaGFyLlRBRyAmJiBzcmNbZW5kXSA9PT0gXCIsXCIgJiYgL15bYS16QS1aMC05LV0rXFwuW2EtekEtWjAtOS1dKyxcXGRcXGRcXGRcXGQoLVxcZFxcZCl7MCwyfVxcL1xcUy8udGVzdChzcmMuc2xpY2Uob2Zmc2V0ICsgMSwgZW5kICsgMTMpKSkge1xuICAgICAgICAgICAgICBlbmQgPSBQbGFpblZhbHVlLk5vZGUuZW5kT2ZJZGVudGlmaWVyKHNyYywgZW5kICsgNSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm9wcy5wdXNoKG5ldyBQbGFpblZhbHVlLlJhbmdlKG9mZnNldCwgZW5kKSk7XG4gICAgICAgICAgICBsaW5lSGFzUHJvcHMgPSB0cnVlO1xuICAgICAgICAgICAgb2Zmc2V0ID0gUGxhaW5WYWx1ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzcmMsIGVuZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNoID0gc3JjW29mZnNldF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmVIYXNQcm9wcyAmJiBjaCA9PT0gXCI6XCIgJiYgUGxhaW5WYWx1ZS5Ob2RlLmF0Qmxhbmsoc3JjLCBvZmZzZXQgKyAxLCB0cnVlKSlcbiAgICAgICAgICBvZmZzZXQgLT0gMTtcbiAgICAgICAgY29uc3QgdHlwZSA9IFBhcnNlQ29udGV4dC5wYXJzZVR5cGUoc3JjLCBvZmZzZXQsIGluRmxvdyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB2YWx1ZVN0YXJ0OiBvZmZzZXRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIHBhcnNlKHNyYykge1xuICAgICAgY29uc3QgY3IgPSBbXTtcbiAgICAgIGlmIChzcmMuaW5kZXhPZihcIlxcclwiKSAhPT0gLTEpIHtcbiAgICAgICAgc3JjID0gc3JjLnJlcGxhY2UoL1xcclxcbj8vZywgKG1hdGNoLCBvZmZzZXQyKSA9PiB7XG4gICAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICBjci5wdXNoKG9mZnNldDIpO1xuICAgICAgICAgIHJldHVybiBcIlxcblwiO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvY3VtZW50cyA9IFtdO1xuICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICBkbyB7XG4gICAgICAgIGNvbnN0IGRvYyA9IG5ldyBEb2N1bWVudCgpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IFBhcnNlQ29udGV4dCh7XG4gICAgICAgICAgc3JjXG4gICAgICAgIH0pO1xuICAgICAgICBvZmZzZXQgPSBkb2MucGFyc2UoY29udGV4dCwgb2Zmc2V0KTtcbiAgICAgICAgZG9jdW1lbnRzLnB1c2goZG9jKTtcbiAgICAgIH0gd2hpbGUgKG9mZnNldCA8IHNyYy5sZW5ndGgpO1xuICAgICAgZG9jdW1lbnRzLnNldE9yaWdSYW5nZXMgPSAoKSA9PiB7XG4gICAgICAgIGlmIChjci5sZW5ndGggPT09IDApXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNyLmxlbmd0aDsgKytpKVxuICAgICAgICAgIGNyW2ldIC09IGk7XG4gICAgICAgIGxldCBjck9mZnNldCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9jdW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY3JPZmZzZXQgPSBkb2N1bWVudHNbaV0uc2V0T3JpZ1JhbmdlcyhjciwgY3JPZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNyLnNwbGljZSgwLCBjci5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgICBkb2N1bWVudHMudG9TdHJpbmcgPSAoKSA9PiBkb2N1bWVudHMuam9pbihcIi4uLlxcblwiKTtcbiAgICAgIHJldHVybiBkb2N1bWVudHM7XG4gICAgfVxuICAgIGV4cG9ydHMyLnBhcnNlID0gcGFyc2U7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcmVzb2x2ZVNlcV9kMDNjYjAzNyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy95YW1sL2Rpc3QvcmVzb2x2ZVNlcS1kMDNjYjAzNy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIFBsYWluVmFsdWUgPSByZXF1aXJlX1BsYWluVmFsdWVfZWM4ZTU4OGUoKTtcbiAgICBmdW5jdGlvbiBhZGRDb21tZW50QmVmb3JlKHN0ciwgaW5kZW50LCBjb21tZW50KSB7XG4gICAgICBpZiAoIWNvbW1lbnQpXG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICBjb25zdCBjYyA9IGNvbW1lbnQucmVwbGFjZSgvW1xcc1xcU11eL2dtLCBgJCYke2luZGVudH0jYCk7XG4gICAgICByZXR1cm4gYCMke2NjfVxuJHtpbmRlbnR9JHtzdHJ9YDtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkQ29tbWVudChzdHIsIGluZGVudCwgY29tbWVudCkge1xuICAgICAgcmV0dXJuICFjb21tZW50ID8gc3RyIDogY29tbWVudC5pbmRleE9mKFwiXFxuXCIpID09PSAtMSA/IGAke3N0cn0gIyR7Y29tbWVudH1gIDogYCR7c3RyfVxuYCArIGNvbW1lbnQucmVwbGFjZSgvXi9nbSwgYCR7aW5kZW50IHx8IFwiXCJ9I2ApO1xuICAgIH1cbiAgICB2YXIgTm9kZSA9IGNsYXNzIHtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIHRvSlNPTih2YWx1ZSwgYXJnLCBjdHgpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgodiwgaSkgPT4gdG9KU09OKHYsIFN0cmluZyhpKSwgY3R4KSk7XG4gICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGN0eCAmJiBjdHguYW5jaG9ycyAmJiBjdHguYW5jaG9ycy5nZXQodmFsdWUpO1xuICAgICAgICBpZiAoYW5jaG9yKVxuICAgICAgICAgIGN0eC5vbkNyZWF0ZSA9IChyZXMyKSA9PiB7XG4gICAgICAgICAgICBhbmNob3IucmVzID0gcmVzMjtcbiAgICAgICAgICAgIGRlbGV0ZSBjdHgub25DcmVhdGU7XG4gICAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gdmFsdWUudG9KU09OKGFyZywgY3R4KTtcbiAgICAgICAgaWYgKGFuY2hvciAmJiBjdHgub25DcmVhdGUpXG4gICAgICAgICAgY3R4Lm9uQ3JlYXRlKHJlcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9XG4gICAgICBpZiAoKCFjdHggfHwgIWN0eC5rZWVwKSAmJiB0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICB2YXIgU2NhbGFyID0gY2xhc3MgZXh0ZW5kcyBOb2RlIHtcbiAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHRvSlNPTihhcmcsIGN0eCkge1xuICAgICAgICByZXR1cm4gY3R4ICYmIGN0eC5rZWVwID8gdGhpcy52YWx1ZSA6IHRvSlNPTih0aGlzLnZhbHVlLCBhcmcsIGN0eCk7XG4gICAgICB9XG4gICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGNvbGxlY3Rpb25Gcm9tUGF0aChzY2hlbWEsIHBhdGgsIHZhbHVlKSB7XG4gICAgICBsZXQgdiA9IHZhbHVlO1xuICAgICAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgY29uc3QgayA9IHBhdGhbaV07XG4gICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGspICYmIGsgPj0gMCkge1xuICAgICAgICAgIGNvbnN0IGEgPSBbXTtcbiAgICAgICAgICBhW2tdID0gdjtcbiAgICAgICAgICB2ID0gYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvID0ge307XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGssIHtcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdiA9IG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzY2hlbWEuY3JlYXRlTm9kZSh2LCBmYWxzZSk7XG4gICAgfVxuICAgIHZhciBpc0VtcHR5UGF0aCA9IChwYXRoKSA9PiBwYXRoID09IG51bGwgfHwgdHlwZW9mIHBhdGggPT09IFwib2JqZWN0XCIgJiYgcGF0aFtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmU7XG4gICAgdmFyIENvbGxlY3Rpb24gPSBjbGFzcyBleHRlbmRzIE5vZGUge1xuICAgICAgY29uc3RydWN0b3Ioc2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIFBsYWluVmFsdWUuX2RlZmluZVByb3BlcnR5KHRoaXMsIFwiaXRlbXNcIiwgW10pO1xuICAgICAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgICAgIH1cbiAgICAgIGFkZEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0VtcHR5UGF0aChwYXRoKSlcbiAgICAgICAgICB0aGlzLmFkZCh2YWx1ZSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXQoa2V5LCB0cnVlKTtcbiAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENvbGxlY3Rpb24pXG4gICAgICAgICAgICBub2RlLmFkZEluKHJlc3QsIHZhbHVlKTtcbiAgICAgICAgICBlbHNlIGlmIChub2RlID09PSB2b2lkIDAgJiYgdGhpcy5zY2hlbWEpXG4gICAgICAgICAgICB0aGlzLnNldChrZXksIGNvbGxlY3Rpb25Gcm9tUGF0aCh0aGlzLnNjaGVtYSwgcmVzdCwgdmFsdWUpKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFlBTUwgY29sbGVjdGlvbiBhdCAke2tleX0uIFJlbWFpbmluZyBwYXRoOiAke3Jlc3R9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlbGV0ZUluKFtrZXksIC4uLnJlc3RdKSB7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZWxldGUoa2V5KTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0KGtleSwgdHJ1ZSk7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ29sbGVjdGlvbilcbiAgICAgICAgICByZXR1cm4gbm9kZS5kZWxldGVJbihyZXN0KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgWUFNTCBjb2xsZWN0aW9uIGF0ICR7a2V5fS4gUmVtYWluaW5nIHBhdGg6ICR7cmVzdH1gKTtcbiAgICAgIH1cbiAgICAgIGdldEluKFtrZXksIC4uLnJlc3RdLCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICBpZiAocmVzdC5sZW5ndGggPT09IDApXG4gICAgICAgICAgcmV0dXJuICFrZWVwU2NhbGFyICYmIG5vZGUgaW5zdGFuY2VvZiBTY2FsYXIgPyBub2RlLnZhbHVlIDogbm9kZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJldHVybiBub2RlIGluc3RhbmNlb2YgQ29sbGVjdGlvbiA/IG5vZGUuZ2V0SW4ocmVzdCwga2VlcFNjYWxhcikgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgICBoYXNBbGxOdWxsVmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5ldmVyeSgobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICghbm9kZSB8fCBub2RlLnR5cGUgIT09IFwiUEFJUlwiKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIGNvbnN0IG4gPSBub2RlLnZhbHVlO1xuICAgICAgICAgIHJldHVybiBuID09IG51bGwgfHwgbiBpbnN0YW5jZW9mIFNjYWxhciAmJiBuLnZhbHVlID09IG51bGwgJiYgIW4uY29tbWVudEJlZm9yZSAmJiAhbi5jb21tZW50ICYmICFuLnRhZztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBoYXNJbihba2V5LCAuLi5yZXN0XSkge1xuICAgICAgICBpZiAocmVzdC5sZW5ndGggPT09IDApXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFzKGtleSk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIENvbGxlY3Rpb24gPyBub2RlLmhhc0luKHJlc3QpIDogZmFsc2U7XG4gICAgICB9XG4gICAgICBzZXRJbihba2V5LCAuLi5yZXN0XSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0KGtleSwgdHJ1ZSk7XG4gICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDb2xsZWN0aW9uKVxuICAgICAgICAgICAgbm9kZS5zZXRJbihyZXN0LCB2YWx1ZSk7XG4gICAgICAgICAgZWxzZSBpZiAobm9kZSA9PT0gdm9pZCAwICYmIHRoaXMuc2NoZW1hKVxuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCBjb2xsZWN0aW9uRnJvbVBhdGgodGhpcy5zY2hlbWEsIHJlc3QsIHZhbHVlKSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHtrZXl9LiBSZW1haW5pbmcgcGF0aDogJHtyZXN0fWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdG9TdHJpbmcoY3R4LCB7XG4gICAgICAgIGJsb2NrSXRlbSxcbiAgICAgICAgZmxvd0NoYXJzLFxuICAgICAgICBpc01hcCxcbiAgICAgICAgaXRlbUluZGVudFxuICAgICAgfSwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaW5kZW50LFxuICAgICAgICAgIGluZGVudFN0ZXAsXG4gICAgICAgICAgc3RyaW5naWZ5XG4gICAgICAgIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IGluRmxvdyA9IHRoaXMudHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkZMT1dfTUFQIHx8IHRoaXMudHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkZMT1dfU0VRIHx8IGN0eC5pbkZsb3c7XG4gICAgICAgIGlmIChpbkZsb3cpXG4gICAgICAgICAgaXRlbUluZGVudCArPSBpbmRlbnRTdGVwO1xuICAgICAgICBjb25zdCBhbGxOdWxsVmFsdWVzID0gaXNNYXAgJiYgdGhpcy5oYXNBbGxOdWxsVmFsdWVzKCk7XG4gICAgICAgIGN0eCA9IE9iamVjdC5hc3NpZ24oe30sIGN0eCwge1xuICAgICAgICAgIGFsbE51bGxWYWx1ZXMsXG4gICAgICAgICAgaW5kZW50OiBpdGVtSW5kZW50LFxuICAgICAgICAgIGluRmxvdyxcbiAgICAgICAgICB0eXBlOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgICAgIGxldCBoYXNJdGVtV2l0aE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLml0ZW1zLnJlZHVjZSgobm9kZXMyLCBpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgbGV0IGNvbW1lbnQ7XG4gICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIGlmICghY2hvbXBLZWVwICYmIGl0ZW0uc3BhY2VCZWZvcmUpXG4gICAgICAgICAgICAgIG5vZGVzMi5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImNvbW1lbnRcIixcbiAgICAgICAgICAgICAgICBzdHI6IFwiXCJcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jb21tZW50QmVmb3JlKVxuICAgICAgICAgICAgICBpdGVtLmNvbW1lbnRCZWZvcmUubWF0Y2goL14uKiQvZ20pLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBub2RlczIucHVzaCh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNvbW1lbnRcIixcbiAgICAgICAgICAgICAgICAgIHN0cjogYCMke2xpbmV9YFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnQpXG4gICAgICAgICAgICAgIGNvbW1lbnQgPSBpdGVtLmNvbW1lbnQ7XG4gICAgICAgICAgICBpZiAoaW5GbG93ICYmICghY2hvbXBLZWVwICYmIGl0ZW0uc3BhY2VCZWZvcmUgfHwgaXRlbS5jb21tZW50QmVmb3JlIHx8IGl0ZW0uY29tbWVudCB8fCBpdGVtLmtleSAmJiAoaXRlbS5rZXkuY29tbWVudEJlZm9yZSB8fCBpdGVtLmtleS5jb21tZW50KSB8fCBpdGVtLnZhbHVlICYmIChpdGVtLnZhbHVlLmNvbW1lbnRCZWZvcmUgfHwgaXRlbS52YWx1ZS5jb21tZW50KSkpXG4gICAgICAgICAgICAgIGhhc0l0ZW1XaXRoTmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNob21wS2VlcCA9IGZhbHNlO1xuICAgICAgICAgIGxldCBzdHIyID0gc3RyaW5naWZ5KGl0ZW0sIGN0eCwgKCkgPT4gY29tbWVudCA9IG51bGwsICgpID0+IGNob21wS2VlcCA9IHRydWUpO1xuICAgICAgICAgIGlmIChpbkZsb3cgJiYgIWhhc0l0ZW1XaXRoTmV3TGluZSAmJiBzdHIyLmluY2x1ZGVzKFwiXFxuXCIpKVxuICAgICAgICAgICAgaGFzSXRlbVdpdGhOZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoaW5GbG93ICYmIGkgPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICBzdHIyICs9IFwiLFwiO1xuICAgICAgICAgIHN0cjIgPSBhZGRDb21tZW50KHN0cjIsIGl0ZW1JbmRlbnQsIGNvbW1lbnQpO1xuICAgICAgICAgIGlmIChjaG9tcEtlZXAgJiYgKGNvbW1lbnQgfHwgaW5GbG93KSlcbiAgICAgICAgICAgIGNob21wS2VlcCA9IGZhbHNlO1xuICAgICAgICAgIG5vZGVzMi5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwiaXRlbVwiLFxuICAgICAgICAgICAgc3RyOiBzdHIyXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIG5vZGVzMjtcbiAgICAgICAgfSwgW10pO1xuICAgICAgICBsZXQgc3RyO1xuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc3RyID0gZmxvd0NoYXJzLnN0YXJ0ICsgZmxvd0NoYXJzLmVuZDtcbiAgICAgICAgfSBlbHNlIGlmIChpbkZsb3cpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIH0gPSBmbG93Q2hhcnM7XG4gICAgICAgICAgY29uc3Qgc3RyaW5ncyA9IG5vZGVzLm1hcCgobikgPT4gbi5zdHIpO1xuICAgICAgICAgIGlmIChoYXNJdGVtV2l0aE5ld0xpbmUgfHwgc3RyaW5ncy5yZWR1Y2UoKHN1bSwgc3RyMikgPT4gc3VtICsgc3RyMi5sZW5ndGggKyAyLCAyKSA+IENvbGxlY3Rpb24ubWF4Rmxvd1N0cmluZ1NpbmdsZUxpbmVMZW5ndGgpIHtcbiAgICAgICAgICAgIHN0ciA9IHN0YXJ0O1xuICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIHN0cmluZ3MpIHtcbiAgICAgICAgICAgICAgc3RyICs9IHMgPyBgXG4ke2luZGVudFN0ZXB9JHtpbmRlbnR9JHtzfWAgOiBcIlxcblwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RyICs9IGBcbiR7aW5kZW50fSR7ZW5kfWA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0ciA9IGAke3N0YXJ0fSAke3N0cmluZ3Muam9pbihcIiBcIil9ICR7ZW5kfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHN0cmluZ3MgPSBub2Rlcy5tYXAoYmxvY2tJdGVtKTtcbiAgICAgICAgICBzdHIgPSBzdHJpbmdzLnNoaWZ0KCk7XG4gICAgICAgICAgZm9yIChjb25zdCBzIG9mIHN0cmluZ3MpXG4gICAgICAgICAgICBzdHIgKz0gcyA/IGBcbiR7aW5kZW50fSR7c31gIDogXCJcXG5cIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21tZW50KSB7XG4gICAgICAgICAgc3RyICs9IFwiXFxuXCIgKyB0aGlzLmNvbW1lbnQucmVwbGFjZSgvXi9nbSwgYCR7aW5kZW50fSNgKTtcbiAgICAgICAgICBpZiAob25Db21tZW50KVxuICAgICAgICAgICAgb25Db21tZW50KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hvbXBLZWVwICYmIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9XG4gICAgfTtcbiAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eShDb2xsZWN0aW9uLCBcIm1heEZsb3dTdHJpbmdTaW5nbGVMaW5lTGVuZ3RoXCIsIDYwKTtcbiAgICBmdW5jdGlvbiBhc0l0ZW1JbmRleChrZXkpIHtcbiAgICAgIGxldCBpZHggPSBrZXkgaW5zdGFuY2VvZiBTY2FsYXIgPyBrZXkudmFsdWUgOiBrZXk7XG4gICAgICBpZiAoaWR4ICYmIHR5cGVvZiBpZHggPT09IFwic3RyaW5nXCIpXG4gICAgICAgIGlkeCA9IE51bWJlcihpZHgpO1xuICAgICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIoaWR4KSAmJiBpZHggPj0gMCA/IGlkeCA6IG51bGw7XG4gICAgfVxuICAgIHZhciBZQU1MU2VxID0gY2xhc3MgZXh0ZW5kcyBDb2xsZWN0aW9uIHtcbiAgICAgIGFkZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLml0ZW1zLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgICAgZGVsZXRlKGtleSkge1xuICAgICAgICBjb25zdCBpZHggPSBhc0l0ZW1JbmRleChrZXkpO1xuICAgICAgICBpZiAodHlwZW9mIGlkeCAhPT0gXCJudW1iZXJcIilcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRlbCA9IHRoaXMuaXRlbXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIHJldHVybiBkZWwubGVuZ3RoID4gMDtcbiAgICAgIH1cbiAgICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgY29uc3QgaXQgPSB0aGlzLml0ZW1zW2lkeF07XG4gICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpdCBpbnN0YW5jZW9mIFNjYWxhciA/IGl0LnZhbHVlIDogaXQ7XG4gICAgICB9XG4gICAgICBoYXMoa2V5KSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGFzSXRlbUluZGV4KGtleSk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaWR4ID09PSBcIm51bWJlclwiICYmIGlkeCA8IHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIHZhbGlkIGluZGV4LCBub3QgJHtrZXl9LmApO1xuICAgICAgICB0aGlzLml0ZW1zW2lkeF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHRvSlNPTihfLCBjdHgpIHtcbiAgICAgICAgY29uc3Qgc2VxID0gW107XG4gICAgICAgIGlmIChjdHggJiYgY3R4Lm9uQ3JlYXRlKVxuICAgICAgICAgIGN0eC5vbkNyZWF0ZShzZXEpO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKVxuICAgICAgICAgIHNlcS5wdXNoKHRvSlNPTihpdGVtLCBTdHJpbmcoaSsrKSwgY3R4KSk7XG4gICAgICAgIHJldHVybiBzZXE7XG4gICAgICB9XG4gICAgICB0b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgICAgaWYgKCFjdHgpXG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoY3R4LCB7XG4gICAgICAgICAgYmxvY2tJdGVtOiAobikgPT4gbi50eXBlID09PSBcImNvbW1lbnRcIiA/IG4uc3RyIDogYC0gJHtuLnN0cn1gLFxuICAgICAgICAgIGZsb3dDaGFyczoge1xuICAgICAgICAgICAgc3RhcnQ6IFwiW1wiLFxuICAgICAgICAgICAgZW5kOiBcIl1cIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgaXNNYXA6IGZhbHNlLFxuICAgICAgICAgIGl0ZW1JbmRlbnQ6IChjdHguaW5kZW50IHx8IFwiXCIpICsgXCIgIFwiXG4gICAgICAgIH0sIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIHN0cmluZ2lmeUtleSA9IChrZXksIGpzS2V5LCBjdHgpID0+IHtcbiAgICAgIGlmIChqc0tleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICBpZiAodHlwZW9mIGpzS2V5ICE9PSBcIm9iamVjdFwiKVxuICAgICAgICByZXR1cm4gU3RyaW5nKGpzS2V5KTtcbiAgICAgIGlmIChrZXkgaW5zdGFuY2VvZiBOb2RlICYmIGN0eCAmJiBjdHguZG9jKVxuICAgICAgICByZXR1cm4ga2V5LnRvU3RyaW5nKHtcbiAgICAgICAgICBhbmNob3JzOiAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgICAgICBkb2M6IGN0eC5kb2MsXG4gICAgICAgICAgaW5kZW50OiBcIlwiLFxuICAgICAgICAgIGluZGVudFN0ZXA6IGN0eC5pbmRlbnRTdGVwLFxuICAgICAgICAgIGluRmxvdzogdHJ1ZSxcbiAgICAgICAgICBpblN0cmluZ2lmeUtleTogdHJ1ZSxcbiAgICAgICAgICBzdHJpbmdpZnk6IGN0eC5zdHJpbmdpZnlcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoanNLZXkpO1xuICAgIH07XG4gICAgdmFyIFBhaXIgPSBjbGFzcyBleHRlbmRzIE5vZGUge1xuICAgICAgY29uc3RydWN0b3Ioa2V5LCB2YWx1ZSA9IG51bGwpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy50eXBlID0gUGFpci5UeXBlLlBBSVI7XG4gICAgICB9XG4gICAgICBnZXQgY29tbWVudEJlZm9yZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5IGluc3RhbmNlb2YgTm9kZSA/IHRoaXMua2V5LmNvbW1lbnRCZWZvcmUgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgICBzZXQgY29tbWVudEJlZm9yZShjYikge1xuICAgICAgICBpZiAodGhpcy5rZXkgPT0gbnVsbClcbiAgICAgICAgICB0aGlzLmtleSA9IG5ldyBTY2FsYXIobnVsbCk7XG4gICAgICAgIGlmICh0aGlzLmtleSBpbnN0YW5jZW9mIE5vZGUpXG4gICAgICAgICAgdGhpcy5rZXkuY29tbWVudEJlZm9yZSA9IGNiO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBtc2cgPSBcIlBhaXIuY29tbWVudEJlZm9yZSBpcyBhbiBhbGlhcyBmb3IgUGFpci5rZXkuY29tbWVudEJlZm9yZS4gVG8gc2V0IGl0LCB0aGUga2V5IG11c3QgYmUgYSBOb2RlLlwiO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRUb0pTTWFwKGN0eCwgbWFwKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRvSlNPTih0aGlzLmtleSwgXCJcIiwgY3R4KTtcbiAgICAgICAgaWYgKG1hcCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdG9KU09OKHRoaXMudmFsdWUsIGtleSwgY3R4KTtcbiAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcCBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICAgIG1hcC5hZGQoa2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzdHJpbmdLZXkgPSBzdHJpbmdpZnlLZXkodGhpcy5rZXksIGtleSwgY3R4KTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRvSlNPTih0aGlzLnZhbHVlLCBzdHJpbmdLZXksIGN0eCk7XG4gICAgICAgICAgaWYgKHN0cmluZ0tleSBpbiBtYXApXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobWFwLCBzdHJpbmdLZXksIHtcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hcFtzdHJpbmdLZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH1cbiAgICAgIHRvSlNPTihfLCBjdHgpIHtcbiAgICAgICAgY29uc3QgcGFpciA9IGN0eCAmJiBjdHgubWFwQXNNYXAgPyAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpIDoge307XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFRvSlNNYXAoY3R4LCBwYWlyKTtcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBpZiAoIWN0eCB8fCAhY3R4LmRvYylcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpbmRlbnQ6IGluZGVudFNpemUsXG4gICAgICAgICAgaW5kZW50U2VxLFxuICAgICAgICAgIHNpbXBsZUtleXNcbiAgICAgICAgfSA9IGN0eC5kb2Mub3B0aW9ucztcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSA9IHRoaXM7XG4gICAgICAgIGxldCBrZXlDb21tZW50ID0ga2V5IGluc3RhbmNlb2YgTm9kZSAmJiBrZXkuY29tbWVudDtcbiAgICAgICAgaWYgKHNpbXBsZUtleXMpIHtcbiAgICAgICAgICBpZiAoa2V5Q29tbWVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV2l0aCBzaW1wbGUga2V5cywga2V5IG5vZGVzIGNhbm5vdCBoYXZlIGNvbW1lbnRzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5IGluc3RhbmNlb2YgQ29sbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gXCJXaXRoIHNpbXBsZSBrZXlzLCBjb2xsZWN0aW9uIGNhbm5vdCBiZSB1c2VkIGFzIGEga2V5IHZhbHVlXCI7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGV4cGxpY2l0S2V5ID0gIXNpbXBsZUtleXMgJiYgKCFrZXkgfHwga2V5Q29tbWVudCB8fCAoa2V5IGluc3RhbmNlb2YgTm9kZSA/IGtleSBpbnN0YW5jZW9mIENvbGxlY3Rpb24gfHwga2V5LnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5CTE9DS19GT0xERUQgfHwga2V5LnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5CTE9DS19MSVRFUkFMIDogdHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIikpO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgZG9jLFxuICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICBpbmRlbnRTdGVwLFxuICAgICAgICAgIHN0cmluZ2lmeVxuICAgICAgICB9ID0gY3R4O1xuICAgICAgICBjdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHtcbiAgICAgICAgICBpbXBsaWNpdEtleTogIWV4cGxpY2l0S2V5LFxuICAgICAgICAgIGluZGVudDogaW5kZW50ICsgaW5kZW50U3RlcFxuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGNob21wS2VlcCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RyID0gc3RyaW5naWZ5KGtleSwgY3R4LCAoKSA9PiBrZXlDb21tZW50ID0gbnVsbCwgKCkgPT4gY2hvbXBLZWVwID0gdHJ1ZSk7XG4gICAgICAgIHN0ciA9IGFkZENvbW1lbnQoc3RyLCBjdHguaW5kZW50LCBrZXlDb21tZW50KTtcbiAgICAgICAgaWYgKCFleHBsaWNpdEtleSAmJiBzdHIubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICAgIGlmIChzaW1wbGVLZXlzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV2l0aCBzaW1wbGUga2V5cywgc2luZ2xlIGxpbmUgc2NhbGFyIG11c3Qgbm90IHNwYW4gbW9yZSB0aGFuIDEwMjQgY2hhcmFjdGVyc1wiKTtcbiAgICAgICAgICBleHBsaWNpdEtleSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5hbGxOdWxsVmFsdWVzICYmICFzaW1wbGVLZXlzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29tbWVudCkge1xuICAgICAgICAgICAgc3RyID0gYWRkQ29tbWVudChzdHIsIGN0eC5pbmRlbnQsIHRoaXMuY29tbWVudCk7XG4gICAgICAgICAgICBpZiAob25Db21tZW50KVxuICAgICAgICAgICAgICBvbkNvbW1lbnQoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNob21wS2VlcCAmJiAha2V5Q29tbWVudCAmJiBvbkNob21wS2VlcClcbiAgICAgICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgICAgICAgcmV0dXJuIGN0eC5pbkZsb3cgJiYgIWV4cGxpY2l0S2V5ID8gc3RyIDogYD8gJHtzdHJ9YDtcbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBleHBsaWNpdEtleSA/IGA/ICR7c3RyfVxuJHtpbmRlbnR9OmAgOiBgJHtzdHJ9OmA7XG4gICAgICAgIGlmICh0aGlzLmNvbW1lbnQpIHtcbiAgICAgICAgICBzdHIgPSBhZGRDb21tZW50KHN0ciwgY3R4LmluZGVudCwgdGhpcy5jb21tZW50KTtcbiAgICAgICAgICBpZiAob25Db21tZW50KVxuICAgICAgICAgICAgb25Db21tZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZjYiA9IFwiXCI7XG4gICAgICAgIGxldCB2YWx1ZUNvbW1lbnQgPSBudWxsO1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOb2RlKSB7XG4gICAgICAgICAgaWYgKHZhbHVlLnNwYWNlQmVmb3JlKVxuICAgICAgICAgICAgdmNiID0gXCJcXG5cIjtcbiAgICAgICAgICBpZiAodmFsdWUuY29tbWVudEJlZm9yZSkge1xuICAgICAgICAgICAgY29uc3QgY3MgPSB2YWx1ZS5jb21tZW50QmVmb3JlLnJlcGxhY2UoL14vZ20sIGAke2N0eC5pbmRlbnR9I2ApO1xuICAgICAgICAgICAgdmNiICs9IGBcbiR7Y3N9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFsdWVDb21tZW50ID0gdmFsdWUuY29tbWVudDtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICB2YWx1ZSA9IGRvYy5zY2hlbWEuY3JlYXRlTm9kZSh2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY3R4LmltcGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgIGlmICghZXhwbGljaXRLZXkgJiYgIXRoaXMuY29tbWVudCAmJiB2YWx1ZSBpbnN0YW5jZW9mIFNjYWxhcilcbiAgICAgICAgICBjdHguaW5kZW50QXRTdGFydCA9IHN0ci5sZW5ndGggKyAxO1xuICAgICAgICBjaG9tcEtlZXAgPSBmYWxzZTtcbiAgICAgICAgaWYgKCFpbmRlbnRTZXEgJiYgaW5kZW50U2l6ZSA+PSAyICYmICFjdHguaW5GbG93ICYmICFleHBsaWNpdEtleSAmJiB2YWx1ZSBpbnN0YW5jZW9mIFlBTUxTZXEgJiYgdmFsdWUudHlwZSAhPT0gUGxhaW5WYWx1ZS5UeXBlLkZMT1dfU0VRICYmICF2YWx1ZS50YWcgJiYgIWRvYy5hbmNob3JzLmdldE5hbWUodmFsdWUpKSB7XG4gICAgICAgICAgY3R4LmluZGVudCA9IGN0eC5pbmRlbnQuc3Vic3RyKDIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlU3RyID0gc3RyaW5naWZ5KHZhbHVlLCBjdHgsICgpID0+IHZhbHVlQ29tbWVudCA9IG51bGwsICgpID0+IGNob21wS2VlcCA9IHRydWUpO1xuICAgICAgICBsZXQgd3MgPSBcIiBcIjtcbiAgICAgICAgaWYgKHZjYiB8fCB0aGlzLmNvbW1lbnQpIHtcbiAgICAgICAgICB3cyA9IGAke3ZjYn1cbiR7Y3R4LmluZGVudH1gO1xuICAgICAgICB9IGVsc2UgaWYgKCFleHBsaWNpdEtleSAmJiB2YWx1ZSBpbnN0YW5jZW9mIENvbGxlY3Rpb24pIHtcbiAgICAgICAgICBjb25zdCBmbG93ID0gdmFsdWVTdHJbMF0gPT09IFwiW1wiIHx8IHZhbHVlU3RyWzBdID09PSBcIntcIjtcbiAgICAgICAgICBpZiAoIWZsb3cgfHwgdmFsdWVTdHIuaW5jbHVkZXMoXCJcXG5cIikpXG4gICAgICAgICAgICB3cyA9IGBcbiR7Y3R4LmluZGVudH1gO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlU3RyWzBdID09PSBcIlxcblwiKVxuICAgICAgICAgIHdzID0gXCJcIjtcbiAgICAgICAgaWYgKGNob21wS2VlcCAmJiAhdmFsdWVDb21tZW50ICYmIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgICAgIHJldHVybiBhZGRDb21tZW50KHN0ciArIHdzICsgdmFsdWVTdHIsIGN0eC5pbmRlbnQsIHZhbHVlQ29tbWVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eShQYWlyLCBcIlR5cGVcIiwge1xuICAgICAgUEFJUjogXCJQQUlSXCIsXG4gICAgICBNRVJHRV9QQUlSOiBcIk1FUkdFX1BBSVJcIlxuICAgIH0pO1xuICAgIHZhciBnZXRBbGlhc0NvdW50ID0gKG5vZGUsIGFuY2hvcnMpID0+IHtcbiAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQWxpYXMpIHtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gYW5jaG9ycy5nZXQobm9kZS5zb3VyY2UpO1xuICAgICAgICByZXR1cm4gYW5jaG9yLmNvdW50ICogYW5jaG9yLmFsaWFzQ291bnQ7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBDb2xsZWN0aW9uKSB7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBub2RlLml0ZW1zKSB7XG4gICAgICAgICAgY29uc3QgYyA9IGdldEFsaWFzQ291bnQoaXRlbSwgYW5jaG9ycyk7XG4gICAgICAgICAgaWYgKGMgPiBjb3VudClcbiAgICAgICAgICAgIGNvdW50ID0gYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBQYWlyKSB7XG4gICAgICAgIGNvbnN0IGtjID0gZ2V0QWxpYXNDb3VudChub2RlLmtleSwgYW5jaG9ycyk7XG4gICAgICAgIGNvbnN0IHZjID0gZ2V0QWxpYXNDb3VudChub2RlLnZhbHVlLCBhbmNob3JzKTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KGtjLCB2Yyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gMTtcbiAgICB9O1xuICAgIHZhciBBbGlhcyA9IGNsYXNzIGV4dGVuZHMgTm9kZSB7XG4gICAgICBzdGF0aWMgc3RyaW5naWZ5KHtcbiAgICAgICAgcmFuZ2UsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSwge1xuICAgICAgICBhbmNob3JzLFxuICAgICAgICBkb2MsXG4gICAgICAgIGltcGxpY2l0S2V5LFxuICAgICAgICBpblN0cmluZ2lmeUtleVxuICAgICAgfSkge1xuICAgICAgICBsZXQgYW5jaG9yID0gT2JqZWN0LmtleXMoYW5jaG9ycykuZmluZCgoYSkgPT4gYW5jaG9yc1thXSA9PT0gc291cmNlKTtcbiAgICAgICAgaWYgKCFhbmNob3IgJiYgaW5TdHJpbmdpZnlLZXkpXG4gICAgICAgICAgYW5jaG9yID0gZG9jLmFuY2hvcnMuZ2V0TmFtZShzb3VyY2UpIHx8IGRvYy5hbmNob3JzLm5ld05hbWUoKTtcbiAgICAgICAgaWYgKGFuY2hvcilcbiAgICAgICAgICByZXR1cm4gYCoke2FuY2hvcn0ke2ltcGxpY2l0S2V5ID8gXCIgXCIgOiBcIlwifWA7XG4gICAgICAgIGNvbnN0IG1zZyA9IGRvYy5hbmNob3JzLmdldE5hbWUoc291cmNlKSA/IFwiQWxpYXMgbm9kZSBtdXN0IGJlIGFmdGVyIHNvdXJjZSBub2RlXCIgOiBcIlNvdXJjZSBub2RlIG5vdCBmb3VuZCBmb3IgYWxpYXMgbm9kZVwiO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bXNnfSBbJHtyYW5nZX1dYCk7XG4gICAgICB9XG4gICAgICBjb25zdHJ1Y3Rvcihzb3VyY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHRoaXMudHlwZSA9IFBsYWluVmFsdWUuVHlwZS5BTElBUztcbiAgICAgIH1cbiAgICAgIHNldCB0YWcodCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbGlhcyBub2RlcyBjYW5ub3QgaGF2ZSB0YWdzXCIpO1xuICAgICAgfVxuICAgICAgdG9KU09OKGFyZywgY3R4KSB7XG4gICAgICAgIGlmICghY3R4KVxuICAgICAgICAgIHJldHVybiB0b0pTT04odGhpcy5zb3VyY2UsIGFyZywgY3R4KTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGFuY2hvcnMsXG4gICAgICAgICAgbWF4QWxpYXNDb3VudFxuICAgICAgICB9ID0gY3R4O1xuICAgICAgICBjb25zdCBhbmNob3IgPSBhbmNob3JzLmdldCh0aGlzLnNvdXJjZSk7XG4gICAgICAgIGlmICghYW5jaG9yIHx8IGFuY2hvci5yZXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IFwiVGhpcyBzaG91bGQgbm90IGhhcHBlbjogQWxpYXMgYW5jaG9yIHdhcyBub3QgcmVzb2x2ZWQ/XCI7XG4gICAgICAgICAgaWYgKHRoaXMuY3N0Tm9kZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBQbGFpblZhbHVlLllBTUxSZWZlcmVuY2VFcnJvcih0aGlzLmNzdE5vZGUsIG1zZyk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1heEFsaWFzQ291bnQgPj0gMCkge1xuICAgICAgICAgIGFuY2hvci5jb3VudCArPSAxO1xuICAgICAgICAgIGlmIChhbmNob3IuYWxpYXNDb3VudCA9PT0gMClcbiAgICAgICAgICAgIGFuY2hvci5hbGlhc0NvdW50ID0gZ2V0QWxpYXNDb3VudCh0aGlzLnNvdXJjZSwgYW5jaG9ycyk7XG4gICAgICAgICAgaWYgKGFuY2hvci5jb3VudCAqIGFuY2hvci5hbGlhc0NvdW50ID4gbWF4QWxpYXNDb3VudCkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gXCJFeGNlc3NpdmUgYWxpYXMgY291bnQgaW5kaWNhdGVzIGEgcmVzb3VyY2UgZXhoYXVzdGlvbiBhdHRhY2tcIjtcbiAgICAgICAgICAgIGlmICh0aGlzLmNzdE5vZGUpXG4gICAgICAgICAgICAgIHRocm93IG5ldyBQbGFpblZhbHVlLllBTUxSZWZlcmVuY2VFcnJvcih0aGlzLmNzdE5vZGUsIG1zZyk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihtc2cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYW5jaG9yLnJlcztcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKGN0eCkge1xuICAgICAgICByZXR1cm4gQWxpYXMuc3RyaW5naWZ5KHRoaXMsIGN0eCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eShBbGlhcywgXCJkZWZhdWx0XCIsIHRydWUpO1xuICAgIGZ1bmN0aW9uIGZpbmRQYWlyKGl0ZW1zLCBrZXkpIHtcbiAgICAgIGNvbnN0IGsgPSBrZXkgaW5zdGFuY2VvZiBTY2FsYXIgPyBrZXkudmFsdWUgOiBrZXk7XG4gICAgICBmb3IgKGNvbnN0IGl0IG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChpdCBpbnN0YW5jZW9mIFBhaXIpIHtcbiAgICAgICAgICBpZiAoaXQua2V5ID09PSBrZXkgfHwgaXQua2V5ID09PSBrKVxuICAgICAgICAgICAgcmV0dXJuIGl0O1xuICAgICAgICAgIGlmIChpdC5rZXkgJiYgaXQua2V5LnZhbHVlID09PSBrKVxuICAgICAgICAgICAgcmV0dXJuIGl0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICB2YXIgWUFNTE1hcCA9IGNsYXNzIGV4dGVuZHMgQ29sbGVjdGlvbiB7XG4gICAgICBhZGQocGFpciwgb3ZlcndyaXRlKSB7XG4gICAgICAgIGlmICghcGFpcilcbiAgICAgICAgICBwYWlyID0gbmV3IFBhaXIocGFpcik7XG4gICAgICAgIGVsc2UgaWYgKCEocGFpciBpbnN0YW5jZW9mIFBhaXIpKVxuICAgICAgICAgIHBhaXIgPSBuZXcgUGFpcihwYWlyLmtleSB8fCBwYWlyLCBwYWlyLnZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJldiA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIHBhaXIua2V5KTtcbiAgICAgICAgY29uc3Qgc29ydEVudHJpZXMgPSB0aGlzLnNjaGVtYSAmJiB0aGlzLnNjaGVtYS5zb3J0TWFwRW50cmllcztcbiAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICBpZiAob3ZlcndyaXRlKVxuICAgICAgICAgICAgcHJldi52YWx1ZSA9IHBhaXIudmFsdWU7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtwYWlyLmtleX0gYWxyZWFkeSBzZXRgKTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0RW50cmllcykge1xuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLml0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gc29ydEVudHJpZXMocGFpciwgaXRlbSkgPCAwKTtcbiAgICAgICAgICBpZiAoaSA9PT0gLTEpXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2gocGFpcik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaSwgMCwgcGFpcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWxldGUoa2V5KSB7XG4gICAgICAgIGNvbnN0IGl0ID0gZmluZFBhaXIodGhpcy5pdGVtcywga2V5KTtcbiAgICAgICAgaWYgKCFpdClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRlbCA9IHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihpdCksIDEpO1xuICAgICAgICByZXR1cm4gZGVsLmxlbmd0aCA+IDA7XG4gICAgICB9XG4gICAgICBnZXQoa2V5LCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIGNvbnN0IGl0ID0gZmluZFBhaXIodGhpcy5pdGVtcywga2V5KTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGl0ICYmIGl0LnZhbHVlO1xuICAgICAgICByZXR1cm4gIWtlZXBTY2FsYXIgJiYgbm9kZSBpbnN0YW5jZW9mIFNjYWxhciA/IG5vZGUudmFsdWUgOiBub2RlO1xuICAgICAgfVxuICAgICAgaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgfVxuICAgICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5hZGQobmV3IFBhaXIoa2V5LCB2YWx1ZSksIHRydWUpO1xuICAgICAgfVxuICAgICAgdG9KU09OKF8sIGN0eCwgVHlwZSkge1xuICAgICAgICBjb25zdCBtYXAgPSBUeXBlID8gbmV3IFR5cGUoKSA6IGN0eCAmJiBjdHgubWFwQXNNYXAgPyAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpIDoge307XG4gICAgICAgIGlmIChjdHggJiYgY3R4Lm9uQ3JlYXRlKVxuICAgICAgICAgIGN0eC5vbkNyZWF0ZShtYXApO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcylcbiAgICAgICAgICBpdGVtLmFkZFRvSlNNYXAoY3R4LCBtYXApO1xuICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgfVxuICAgICAgdG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIGlmICghY3R4KVxuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgICBpZiAoIShpdGVtIGluc3RhbmNlb2YgUGFpcikpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hcCBpdGVtcyBtdXN0IGFsbCBiZSBwYWlyczsgZm91bmQgJHtKU09OLnN0cmluZ2lmeShpdGVtKX0gaW5zdGVhZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdXBlci50b1N0cmluZyhjdHgsIHtcbiAgICAgICAgICBibG9ja0l0ZW06IChuKSA9PiBuLnN0cixcbiAgICAgICAgICBmbG93Q2hhcnM6IHtcbiAgICAgICAgICAgIHN0YXJ0OiBcIntcIixcbiAgICAgICAgICAgIGVuZDogXCJ9XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTWFwOiB0cnVlLFxuICAgICAgICAgIGl0ZW1JbmRlbnQ6IGN0eC5pbmRlbnQgfHwgXCJcIlxuICAgICAgICB9LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBNRVJHRV9LRVkgPSBcIjw8XCI7XG4gICAgdmFyIE1lcmdlID0gY2xhc3MgZXh0ZW5kcyBQYWlyIHtcbiAgICAgIGNvbnN0cnVjdG9yKHBhaXIpIHtcbiAgICAgICAgaWYgKHBhaXIgaW5zdGFuY2VvZiBQYWlyKSB7XG4gICAgICAgICAgbGV0IHNlcSA9IHBhaXIudmFsdWU7XG4gICAgICAgICAgaWYgKCEoc2VxIGluc3RhbmNlb2YgWUFNTFNlcSkpIHtcbiAgICAgICAgICAgIHNlcSA9IG5ldyBZQU1MU2VxKCk7XG4gICAgICAgICAgICBzZXEuaXRlbXMucHVzaChwYWlyLnZhbHVlKTtcbiAgICAgICAgICAgIHNlcS5yYW5nZSA9IHBhaXIudmFsdWUucmFuZ2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN1cGVyKHBhaXIua2V5LCBzZXEpO1xuICAgICAgICAgIHRoaXMucmFuZ2UgPSBwYWlyLnJhbmdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1cGVyKG5ldyBTY2FsYXIoTUVSR0VfS0VZKSwgbmV3IFlBTUxTZXEoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50eXBlID0gUGFpci5UeXBlLk1FUkdFX1BBSVI7XG4gICAgICB9XG4gICAgICBhZGRUb0pTTWFwKGN0eCwgbWFwKSB7XG4gICAgICAgIGZvciAoY29uc3Qge1xuICAgICAgICAgIHNvdXJjZVxuICAgICAgICB9IG9mIHRoaXMudmFsdWUuaXRlbXMpIHtcbiAgICAgICAgICBpZiAoIShzb3VyY2UgaW5zdGFuY2VvZiBZQU1MTWFwKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1lcmdlIHNvdXJjZXMgbXVzdCBiZSBtYXBzXCIpO1xuICAgICAgICAgIGNvbnN0IHNyY01hcCA9IHNvdXJjZS50b0pTT04obnVsbCwgY3R4LCBNYXApO1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHNyY01hcCkge1xuICAgICAgICAgICAgaWYgKG1hcCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgICBpZiAoIW1hcC5oYXMoa2V5KSlcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXAgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgICAgbWFwLmFkZChrZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkge1xuICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobWFwLCBrZXksIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKGN0eCwgb25Db21tZW50KSB7XG4gICAgICAgIGNvbnN0IHNlcSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChzZXEuaXRlbXMubGVuZ3RoID4gMSlcbiAgICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQpO1xuICAgICAgICB0aGlzLnZhbHVlID0gc2VxLml0ZW1zWzBdO1xuICAgICAgICBjb25zdCBzdHIgPSBzdXBlci50b1N0cmluZyhjdHgsIG9uQ29tbWVudCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzZXE7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgYmluYXJ5T3B0aW9ucyA9IHtcbiAgICAgIGRlZmF1bHRUeXBlOiBQbGFpblZhbHVlLlR5cGUuQkxPQ0tfTElURVJBTCxcbiAgICAgIGxpbmVXaWR0aDogNzZcbiAgICB9O1xuICAgIHZhciBib29sT3B0aW9ucyA9IHtcbiAgICAgIHRydWVTdHI6IFwidHJ1ZVwiLFxuICAgICAgZmFsc2VTdHI6IFwiZmFsc2VcIlxuICAgIH07XG4gICAgdmFyIGludE9wdGlvbnMgPSB7XG4gICAgICBhc0JpZ0ludDogZmFsc2VcbiAgICB9O1xuICAgIHZhciBudWxsT3B0aW9ucyA9IHtcbiAgICAgIG51bGxTdHI6IFwibnVsbFwiXG4gICAgfTtcbiAgICB2YXIgc3RyT3B0aW9ucyA9IHtcbiAgICAgIGRlZmF1bHRUeXBlOiBQbGFpblZhbHVlLlR5cGUuUExBSU4sXG4gICAgICBkb3VibGVRdW90ZWQ6IHtcbiAgICAgICAganNvbkVuY29kaW5nOiBmYWxzZSxcbiAgICAgICAgbWluTXVsdGlMaW5lTGVuZ3RoOiA0MFxuICAgICAgfSxcbiAgICAgIGZvbGQ6IHtcbiAgICAgICAgbGluZVdpZHRoOiA4MCxcbiAgICAgICAgbWluQ29udGVudFdpZHRoOiAyMFxuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gcmVzb2x2ZVNjYWxhcihzdHIsIHRhZ3MsIHNjYWxhckZhbGxiYWNrKSB7XG4gICAgICBmb3IgKGNvbnN0IHtcbiAgICAgICAgZm9ybWF0LFxuICAgICAgICB0ZXN0LFxuICAgICAgICByZXNvbHZlXG4gICAgICB9IG9mIHRhZ3MpIHtcbiAgICAgICAgaWYgKHRlc3QpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHN0ci5tYXRjaCh0ZXN0KTtcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGxldCByZXMgPSByZXNvbHZlLmFwcGx5KG51bGwsIG1hdGNoKTtcbiAgICAgICAgICAgIGlmICghKHJlcyBpbnN0YW5jZW9mIFNjYWxhcikpXG4gICAgICAgICAgICAgIHJlcyA9IG5ldyBTY2FsYXIocmVzKTtcbiAgICAgICAgICAgIGlmIChmb3JtYXQpXG4gICAgICAgICAgICAgIHJlcy5mb3JtYXQgPSBmb3JtYXQ7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNjYWxhckZhbGxiYWNrKVxuICAgICAgICBzdHIgPSBzY2FsYXJGYWxsYmFjayhzdHIpO1xuICAgICAgcmV0dXJuIG5ldyBTY2FsYXIoc3RyKTtcbiAgICB9XG4gICAgdmFyIEZPTERfRkxPVyA9IFwiZmxvd1wiO1xuICAgIHZhciBGT0xEX0JMT0NLID0gXCJibG9ja1wiO1xuICAgIHZhciBGT0xEX1FVT1RFRCA9IFwicXVvdGVkXCI7XG4gICAgdmFyIGNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyA9ICh0ZXh0LCBpKSA9PiB7XG4gICAgICBsZXQgY2ggPSB0ZXh0W2kgKyAxXTtcbiAgICAgIHdoaWxlIChjaCA9PT0gXCIgXCIgfHwgY2ggPT09IFwiXHRcIikge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY2ggPSB0ZXh0W2kgKz0gMV07XG4gICAgICAgIH0gd2hpbGUgKGNoICYmIGNoICE9PSBcIlxcblwiKTtcbiAgICAgICAgY2ggPSB0ZXh0W2kgKyAxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gZm9sZEZsb3dMaW5lcyh0ZXh0LCBpbmRlbnQsIG1vZGUsIHtcbiAgICAgIGluZGVudEF0U3RhcnQsXG4gICAgICBsaW5lV2lkdGggPSA4MCxcbiAgICAgIG1pbkNvbnRlbnRXaWR0aCA9IDIwLFxuICAgICAgb25Gb2xkLFxuICAgICAgb25PdmVyZmxvd1xuICAgIH0pIHtcbiAgICAgIGlmICghbGluZVdpZHRoIHx8IGxpbmVXaWR0aCA8IDApXG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgY29uc3QgZW5kU3RlcCA9IE1hdGgubWF4KDEgKyBtaW5Db250ZW50V2lkdGgsIDEgKyBsaW5lV2lkdGggLSBpbmRlbnQubGVuZ3RoKTtcbiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA8PSBlbmRTdGVwKVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgIGNvbnN0IGZvbGRzID0gW107XG4gICAgICBjb25zdCBlc2NhcGVkRm9sZHMgPSB7fTtcbiAgICAgIGxldCBlbmQgPSBsaW5lV2lkdGggLSBpbmRlbnQubGVuZ3RoO1xuICAgICAgaWYgKHR5cGVvZiBpbmRlbnRBdFN0YXJ0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGlmIChpbmRlbnRBdFN0YXJ0ID4gbGluZVdpZHRoIC0gTWF0aC5tYXgoMiwgbWluQ29udGVudFdpZHRoKSlcbiAgICAgICAgICBmb2xkcy5wdXNoKDApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZW5kID0gbGluZVdpZHRoIC0gaW5kZW50QXRTdGFydDtcbiAgICAgIH1cbiAgICAgIGxldCBzcGxpdCA9IHZvaWQgMDtcbiAgICAgIGxldCBwcmV2ID0gdm9pZCAwO1xuICAgICAgbGV0IG92ZXJmbG93ID0gZmFsc2U7XG4gICAgICBsZXQgaSA9IC0xO1xuICAgICAgbGV0IGVzY1N0YXJ0ID0gLTE7XG4gICAgICBsZXQgZXNjRW5kID0gLTE7XG4gICAgICBpZiAobW9kZSA9PT0gRk9MRF9CTE9DSykge1xuICAgICAgICBpID0gY29uc3VtZU1vcmVJbmRlbnRlZExpbmVzKHRleHQsIGkpO1xuICAgICAgICBpZiAoaSAhPT0gLTEpXG4gICAgICAgICAgZW5kID0gaSArIGVuZFN0ZXA7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBjaDsgY2ggPSB0ZXh0W2kgKz0gMV07ICkge1xuICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9RVU9URUQgJiYgY2ggPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgZXNjU3RhcnQgPSBpO1xuICAgICAgICAgIHN3aXRjaCAodGV4dFtpICsgMV0pIHtcbiAgICAgICAgICAgIGNhc2UgXCJ4XCI6XG4gICAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwidVwiOlxuICAgICAgICAgICAgICBpICs9IDU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlVcIjpcbiAgICAgICAgICAgICAgaSArPSA5O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXNjRW5kID0gaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2ggPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9CTE9DSylcbiAgICAgICAgICAgIGkgPSBjb25zdW1lTW9yZUluZGVudGVkTGluZXModGV4dCwgaSk7XG4gICAgICAgICAgZW5kID0gaSArIGVuZFN0ZXA7XG4gICAgICAgICAgc3BsaXQgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGNoID09PSBcIiBcIiAmJiBwcmV2ICYmIHByZXYgIT09IFwiIFwiICYmIHByZXYgIT09IFwiXFxuXCIgJiYgcHJldiAhPT0gXCJcdFwiKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gdGV4dFtpICsgMV07XG4gICAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0ICE9PSBcIiBcIiAmJiBuZXh0ICE9PSBcIlxcblwiICYmIG5leHQgIT09IFwiXHRcIilcbiAgICAgICAgICAgICAgc3BsaXQgPSBpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaSA+PSBlbmQpIHtcbiAgICAgICAgICAgIGlmIChzcGxpdCkge1xuICAgICAgICAgICAgICBmb2xkcy5wdXNoKHNwbGl0KTtcbiAgICAgICAgICAgICAgZW5kID0gc3BsaXQgKyBlbmRTdGVwO1xuICAgICAgICAgICAgICBzcGxpdCA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gRk9MRF9RVU9URUQpIHtcbiAgICAgICAgICAgICAgd2hpbGUgKHByZXYgPT09IFwiIFwiIHx8IHByZXYgPT09IFwiXHRcIikge1xuICAgICAgICAgICAgICAgIHByZXYgPSBjaDtcbiAgICAgICAgICAgICAgICBjaCA9IHRleHRbaSArPSAxXTtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgaiA9IGkgPiBlc2NFbmQgKyAxID8gaSAtIDIgOiBlc2NTdGFydCAtIDE7XG4gICAgICAgICAgICAgIGlmIChlc2NhcGVkRm9sZHNbal0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgICAgICAgIGZvbGRzLnB1c2goaik7XG4gICAgICAgICAgICAgIGVzY2FwZWRGb2xkc1tqXSA9IHRydWU7XG4gICAgICAgICAgICAgIGVuZCA9IGogKyBlbmRTdGVwO1xuICAgICAgICAgICAgICBzcGxpdCA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJldiA9IGNoO1xuICAgICAgfVxuICAgICAgaWYgKG92ZXJmbG93ICYmIG9uT3ZlcmZsb3cpXG4gICAgICAgIG9uT3ZlcmZsb3coKTtcbiAgICAgIGlmIChmb2xkcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgaWYgKG9uRm9sZClcbiAgICAgICAgb25Gb2xkKCk7XG4gICAgICBsZXQgcmVzID0gdGV4dC5zbGljZSgwLCBmb2xkc1swXSk7XG4gICAgICBmb3IgKGxldCBpMiA9IDA7IGkyIDwgZm9sZHMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIGNvbnN0IGZvbGQgPSBmb2xkc1tpMl07XG4gICAgICAgIGNvbnN0IGVuZDIgPSBmb2xkc1tpMiArIDFdIHx8IHRleHQubGVuZ3RoO1xuICAgICAgICBpZiAoZm9sZCA9PT0gMClcbiAgICAgICAgICByZXMgPSBgXG4ke2luZGVudH0ke3RleHQuc2xpY2UoMCwgZW5kMil9YDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKG1vZGUgPT09IEZPTERfUVVPVEVEICYmIGVzY2FwZWRGb2xkc1tmb2xkXSlcbiAgICAgICAgICAgIHJlcyArPSBgJHt0ZXh0W2ZvbGRdfVxcXFxgO1xuICAgICAgICAgIHJlcyArPSBgXG4ke2luZGVudH0ke3RleHQuc2xpY2UoZm9sZCArIDEsIGVuZDIpfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIHZhciBnZXRGb2xkT3B0aW9ucyA9ICh7XG4gICAgICBpbmRlbnRBdFN0YXJ0XG4gICAgfSkgPT4gaW5kZW50QXRTdGFydCA/IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaW5kZW50QXRTdGFydFxuICAgIH0sIHN0ck9wdGlvbnMuZm9sZCkgOiBzdHJPcHRpb25zLmZvbGQ7XG4gICAgdmFyIGNvbnRhaW5zRG9jdW1lbnRNYXJrZXIgPSAoc3RyKSA9PiAvXiglfC0tLXxcXC5cXC5cXC4pL20udGVzdChzdHIpO1xuICAgIGZ1bmN0aW9uIGxpbmVMZW5ndGhPdmVyTGltaXQoc3RyLCBsaW5lV2lkdGgsIGluZGVudExlbmd0aCkge1xuICAgICAgaWYgKCFsaW5lV2lkdGggfHwgbGluZVdpZHRoIDwgMClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgbGltaXQgPSBsaW5lV2lkdGggLSBpbmRlbnRMZW5ndGg7XG4gICAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuICAgICAgaWYgKHN0ckxlbiA8PSBsaW1pdClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIHN0YXJ0ID0gMDsgaSA8IHN0ckxlbjsgKytpKSB7XG4gICAgICAgIGlmIChzdHJbaV0gPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICBpZiAoaSAtIHN0YXJ0ID4gbGltaXQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgIGlmIChzdHJMZW4gLSBzdGFydCA8PSBsaW1pdClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGltcGxpY2l0S2V5XG4gICAgICB9ID0gY3R4O1xuICAgICAgY29uc3Qge1xuICAgICAgICBqc29uRW5jb2RpbmcsXG4gICAgICAgIG1pbk11bHRpTGluZUxlbmd0aFxuICAgICAgfSA9IHN0ck9wdGlvbnMuZG91YmxlUXVvdGVkO1xuICAgICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIGlmIChqc29uRW5jb2RpbmcpXG4gICAgICAgIHJldHVybiBqc29uO1xuICAgICAgY29uc3QgaW5kZW50ID0gY3R4LmluZGVudCB8fCAoY29udGFpbnNEb2N1bWVudE1hcmtlcih2YWx1ZSkgPyBcIiAgXCIgOiBcIlwiKTtcbiAgICAgIGxldCBzdHIgPSBcIlwiO1xuICAgICAgbGV0IHN0YXJ0ID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBjaCA9IGpzb25baV07IGNoOyBjaCA9IGpzb25bKytpXSkge1xuICAgICAgICBpZiAoY2ggPT09IFwiIFwiICYmIGpzb25baSArIDFdID09PSBcIlxcXFxcIiAmJiBqc29uW2kgKyAyXSA9PT0gXCJuXCIpIHtcbiAgICAgICAgICBzdHIgKz0ganNvbi5zbGljZShzdGFydCwgaSkgKyBcIlxcXFwgXCI7XG4gICAgICAgICAgaSArPSAxO1xuICAgICAgICAgIHN0YXJ0ID0gaTtcbiAgICAgICAgICBjaCA9IFwiXFxcXFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaCA9PT0gXCJcXFxcXCIpXG4gICAgICAgICAgc3dpdGNoIChqc29uW2kgKyAxXSkge1xuICAgICAgICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0ciArPSBqc29uLnNsaWNlKHN0YXJ0LCBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlID0ganNvbi5zdWJzdHIoaSArIDIsIDQpO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIjAwMDBcIjpcbiAgICAgICAgICAgICAgICAgICAgc3RyICs9IFwiXFxcXDBcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiMDAwN1wiOlxuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gXCJcXFxcYVwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCIwMDBiXCI6XG4gICAgICAgICAgICAgICAgICAgIHN0ciArPSBcIlxcXFx2XCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIjAwMWJcIjpcbiAgICAgICAgICAgICAgICAgICAgc3RyICs9IFwiXFxcXGVcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiMDA4NVwiOlxuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gXCJcXFxcTlwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCIwMGEwXCI6XG4gICAgICAgICAgICAgICAgICAgIHN0ciArPSBcIlxcXFxfXCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIjIwMjhcIjpcbiAgICAgICAgICAgICAgICAgICAgc3RyICs9IFwiXFxcXExcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiMjAyOVwiOlxuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gXCJcXFxcUFwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlLnN1YnN0cigwLCAyKSA9PT0gXCIwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBcIlxcXFx4XCIgKyBjb2RlLnN1YnN0cigyKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBqc29uLnN1YnN0cihpLCA2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaSArPSA1O1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiblwiOlxuICAgICAgICAgICAgICBpZiAoaW1wbGljaXRLZXkgfHwganNvbltpICsgMl0gPT09ICdcIicgfHwganNvbi5sZW5ndGggPCBtaW5NdWx0aUxpbmVMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RyICs9IGpzb24uc2xpY2Uoc3RhcnQsIGkpICsgXCJcXG5cXG5cIjtcbiAgICAgICAgICAgICAgICB3aGlsZSAoanNvbltpICsgMl0gPT09IFwiXFxcXFwiICYmIGpzb25baSArIDNdID09PSBcIm5cIiAmJiBqc29uW2kgKyA0XSAhPT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgc3RyICs9IFwiXFxuXCI7XG4gICAgICAgICAgICAgICAgICBpICs9IDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ciArPSBpbmRlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGpzb25baSArIDJdID09PSBcIiBcIilcbiAgICAgICAgICAgICAgICAgIHN0ciArPSBcIlxcXFxcIjtcbiAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdHIgPSBzdGFydCA/IHN0ciArIGpzb24uc2xpY2Uoc3RhcnQpIDoganNvbjtcbiAgICAgIHJldHVybiBpbXBsaWNpdEtleSA/IHN0ciA6IGZvbGRGbG93TGluZXMoc3RyLCBpbmRlbnQsIEZPTERfUVVPVEVELCBnZXRGb2xkT3B0aW9ucyhjdHgpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2luZ2xlUXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpIHtcbiAgICAgIGlmIChjdHguaW1wbGljaXRLZXkpIHtcbiAgICAgICAgaWYgKC9cXG4vLnRlc3QodmFsdWUpKVxuICAgICAgICAgIHJldHVybiBkb3VibGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoL1sgXFx0XVxcbnxcXG5bIFxcdF0vLnRlc3QodmFsdWUpKVxuICAgICAgICAgIHJldHVybiBkb3VibGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRlbnQgPSBjdHguaW5kZW50IHx8IChjb250YWluc0RvY3VtZW50TWFya2VyKHZhbHVlKSA/IFwiICBcIiA6IFwiXCIpO1xuICAgICAgY29uc3QgcmVzID0gXCInXCIgKyB2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJydcIikucmVwbGFjZSgvXFxuKy9nLCBgJCZcbiR7aW5kZW50fWApICsgXCInXCI7XG4gICAgICByZXR1cm4gY3R4LmltcGxpY2l0S2V5ID8gcmVzIDogZm9sZEZsb3dMaW5lcyhyZXMsIGluZGVudCwgRk9MRF9GTE9XLCBnZXRGb2xkT3B0aW9ucyhjdHgpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYmxvY2tTdHJpbmcoe1xuICAgICAgY29tbWVudCxcbiAgICAgIHR5cGUsXG4gICAgICB2YWx1ZVxuICAgIH0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgaWYgKC9cXG5bXFx0IF0rJC8udGVzdCh2YWx1ZSkgfHwgL15cXHMqJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvdWJsZVF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGVudCA9IGN0eC5pbmRlbnQgfHwgKGN0eC5mb3JjZUJsb2NrSW5kZW50IHx8IGNvbnRhaW5zRG9jdW1lbnRNYXJrZXIodmFsdWUpID8gXCIgIFwiIDogXCJcIik7XG4gICAgICBjb25zdCBpbmRlbnRTaXplID0gaW5kZW50ID8gXCIyXCIgOiBcIjFcIjtcbiAgICAgIGNvbnN0IGxpdGVyYWwgPSB0eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQkxPQ0tfRk9MREVEID8gZmFsc2UgOiB0eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQkxPQ0tfTElURVJBTCA/IHRydWUgOiAhbGluZUxlbmd0aE92ZXJMaW1pdCh2YWx1ZSwgc3RyT3B0aW9ucy5mb2xkLmxpbmVXaWR0aCwgaW5kZW50Lmxlbmd0aCk7XG4gICAgICBsZXQgaGVhZGVyID0gbGl0ZXJhbCA/IFwifFwiIDogXCI+XCI7XG4gICAgICBpZiAoIXZhbHVlKVxuICAgICAgICByZXR1cm4gaGVhZGVyICsgXCJcXG5cIjtcbiAgICAgIGxldCB3c1N0YXJ0ID0gXCJcIjtcbiAgICAgIGxldCB3c0VuZCA9IFwiXCI7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1tcXG5cXHQgXSokLywgKHdzKSA9PiB7XG4gICAgICAgIGNvbnN0IG4gPSB3cy5pbmRleE9mKFwiXFxuXCIpO1xuICAgICAgICBpZiAobiA9PT0gLTEpIHtcbiAgICAgICAgICBoZWFkZXIgKz0gXCItXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHdzIHx8IG4gIT09IHdzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBoZWFkZXIgKz0gXCIrXCI7XG4gICAgICAgICAgaWYgKG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgb25DaG9tcEtlZXAoKTtcbiAgICAgICAgfVxuICAgICAgICB3c0VuZCA9IHdzLnJlcGxhY2UoL1xcbiQvLCBcIlwiKTtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9KS5yZXBsYWNlKC9eW1xcbiBdKi8sICh3cykgPT4ge1xuICAgICAgICBpZiAod3MuaW5kZXhPZihcIiBcIikgIT09IC0xKVxuICAgICAgICAgIGhlYWRlciArPSBpbmRlbnRTaXplO1xuICAgICAgICBjb25zdCBtID0gd3MubWF0Y2goLyArJC8pO1xuICAgICAgICBpZiAobSkge1xuICAgICAgICAgIHdzU3RhcnQgPSB3cy5zbGljZSgwLCAtbVswXS5sZW5ndGgpO1xuICAgICAgICAgIHJldHVybiBtWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdzU3RhcnQgPSB3cztcbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAod3NFbmQpXG4gICAgICAgIHdzRW5kID0gd3NFbmQucmVwbGFjZSgvXFxuKyg/IVxcbnwkKS9nLCBgJCYke2luZGVudH1gKTtcbiAgICAgIGlmICh3c1N0YXJ0KVxuICAgICAgICB3c1N0YXJ0ID0gd3NTdGFydC5yZXBsYWNlKC9cXG4rL2csIGAkJiR7aW5kZW50fWApO1xuICAgICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgaGVhZGVyICs9IFwiICNcIiArIGNvbW1lbnQucmVwbGFjZSgvID9bXFxyXFxuXSsvZywgXCIgXCIpO1xuICAgICAgICBpZiAob25Db21tZW50KVxuICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgICAgfVxuICAgICAgaWYgKCF2YWx1ZSlcbiAgICAgICAgcmV0dXJuIGAke2hlYWRlcn0ke2luZGVudFNpemV9XG4ke2luZGVudH0ke3dzRW5kfWA7XG4gICAgICBpZiAobGl0ZXJhbCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgYCQmJHtpbmRlbnR9YCk7XG4gICAgICAgIHJldHVybiBgJHtoZWFkZXJ9XG4ke2luZGVudH0ke3dzU3RhcnR9JHt2YWx1ZX0ke3dzRW5kfWA7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgXCJcXG4kJlwiKS5yZXBsYWNlKC8oPzpefFxcbikoW1xcdCBdLiopKD86KFtcXG5cXHQgXSopXFxuKD8hW1xcblxcdCBdKSk/L2csIFwiJDEkMlwiKS5yZXBsYWNlKC9cXG4rL2csIGAkJiR7aW5kZW50fWApO1xuICAgICAgY29uc3QgYm9keSA9IGZvbGRGbG93TGluZXMoYCR7d3NTdGFydH0ke3ZhbHVlfSR7d3NFbmR9YCwgaW5kZW50LCBGT0xEX0JMT0NLLCBzdHJPcHRpb25zLmZvbGQpO1xuICAgICAgcmV0dXJuIGAke2hlYWRlcn1cbiR7aW5kZW50fSR7Ym9keX1gO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwbGFpblN0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY29tbWVudCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmFsdWVcbiAgICAgIH0gPSBpdGVtO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhY3R1YWxTdHJpbmcsXG4gICAgICAgIGltcGxpY2l0S2V5LFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGluRmxvd1xuICAgICAgfSA9IGN0eDtcbiAgICAgIGlmIChpbXBsaWNpdEtleSAmJiAvW1xcbltcXF17fSxdLy50ZXN0KHZhbHVlKSB8fCBpbkZsb3cgJiYgL1tbXFxde30sXS8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvdWJsZVF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICAgIH1cbiAgICAgIGlmICghdmFsdWUgfHwgL15bXFxuXFx0ICxbXFxde30jJiohfD4nXCIlQGBdfF5bPy1dJHxeWz8tXVsgXFx0XXxbXFxuOl1bIFxcdF18WyBcXHRdXFxufFtcXG5cXHQgXSN8W1xcblxcdCA6XSQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpbXBsaWNpdEtleSB8fCBpbkZsb3cgfHwgdmFsdWUuaW5kZXhPZihcIlxcblwiKSA9PT0gLTEgPyB2YWx1ZS5pbmRleE9mKCdcIicpICE9PSAtMSAmJiB2YWx1ZS5pbmRleE9mKFwiJ1wiKSA9PT0gLTEgPyBzaW5nbGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCkgOiBkb3VibGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCkgOiBibG9ja1N0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgfVxuICAgICAgaWYgKCFpbXBsaWNpdEtleSAmJiAhaW5GbG93ICYmIHR5cGUgIT09IFBsYWluVmFsdWUuVHlwZS5QTEFJTiAmJiB2YWx1ZS5pbmRleE9mKFwiXFxuXCIpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gYmxvY2tTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRlbnQgPT09IFwiXCIgJiYgY29udGFpbnNEb2N1bWVudE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgICAgY3R4LmZvcmNlQmxvY2tJbmRlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gYmxvY2tTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgYCQmXG4ke2luZGVudH1gKTtcbiAgICAgIGlmIChhY3R1YWxTdHJpbmcpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRhZ3NcbiAgICAgICAgfSA9IGN0eC5kb2Muc2NoZW1hO1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVTY2FsYXIoc3RyLCB0YWdzLCB0YWdzLnNjYWxhckZhbGxiYWNrKS52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZCAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgICByZXR1cm4gZG91YmxlUXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpO1xuICAgICAgfVxuICAgICAgY29uc3QgYm9keSA9IGltcGxpY2l0S2V5ID8gc3RyIDogZm9sZEZsb3dMaW5lcyhzdHIsIGluZGVudCwgRk9MRF9GTE9XLCBnZXRGb2xkT3B0aW9ucyhjdHgpKTtcbiAgICAgIGlmIChjb21tZW50ICYmICFpbkZsb3cgJiYgKGJvZHkuaW5kZXhPZihcIlxcblwiKSAhPT0gLTEgfHwgY29tbWVudC5pbmRleE9mKFwiXFxuXCIpICE9PSAtMSkpIHtcbiAgICAgICAgaWYgKG9uQ29tbWVudClcbiAgICAgICAgICBvbkNvbW1lbnQoKTtcbiAgICAgICAgcmV0dXJuIGFkZENvbW1lbnRCZWZvcmUoYm9keSwgaW5kZW50LCBjb21tZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBib2R5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdHJpbmdpZnlTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGRlZmF1bHRUeXBlXG4gICAgICB9ID0gc3RyT3B0aW9ucztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaW1wbGljaXRLZXksXG4gICAgICAgIGluRmxvd1xuICAgICAgfSA9IGN0eDtcbiAgICAgIGxldCB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHZhbHVlXG4gICAgICB9ID0gaXRlbTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICAgICAgICBpdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwge1xuICAgICAgICAgIHZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgX3N0cmluZ2lmeSA9IChfdHlwZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKF90eXBlKSB7XG4gICAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuQkxPQ0tfRk9MREVEOlxuICAgICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkJMT0NLX0xJVEVSQUw6XG4gICAgICAgICAgICByZXR1cm4gYmxvY2tTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5RVU9URV9ET1VCTEU6XG4gICAgICAgICAgICByZXR1cm4gZG91YmxlUXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpO1xuICAgICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLlFVT1RFX1NJTkdMRTpcbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuUExBSU46XG4gICAgICAgICAgICByZXR1cm4gcGxhaW5TdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBpZiAodHlwZSAhPT0gUGxhaW5WYWx1ZS5UeXBlLlFVT1RFX0RPVUJMRSAmJiAvW1xceDAwLVxceDA4XFx4MGItXFx4MWZcXHg3Zi1cXHg5Zl0vLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHR5cGUgPSBQbGFpblZhbHVlLlR5cGUuUVVPVEVfRE9VQkxFO1xuICAgICAgfSBlbHNlIGlmICgoaW1wbGljaXRLZXkgfHwgaW5GbG93KSAmJiAodHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkJMT0NLX0ZPTERFRCB8fCB0eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQkxPQ0tfTElURVJBTCkpIHtcbiAgICAgICAgdHlwZSA9IFBsYWluVmFsdWUuVHlwZS5RVU9URV9ET1VCTEU7XG4gICAgICB9XG4gICAgICBsZXQgcmVzID0gX3N0cmluZ2lmeSh0eXBlKTtcbiAgICAgIGlmIChyZXMgPT09IG51bGwpIHtcbiAgICAgICAgcmVzID0gX3N0cmluZ2lmeShkZWZhdWx0VHlwZSk7XG4gICAgICAgIGlmIChyZXMgPT09IG51bGwpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBkZWZhdWx0IHN0cmluZyB0eXBlICR7ZGVmYXVsdFR5cGV9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdHJpbmdpZnlOdW1iZXIoe1xuICAgICAgZm9ybWF0LFxuICAgICAgbWluRnJhY3Rpb25EaWdpdHMsXG4gICAgICB0YWcsXG4gICAgICB2YWx1ZVxuICAgIH0pIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgaWYgKCFpc0Zpbml0ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgPyBcIi5uYW5cIiA6IHZhbHVlIDwgMCA/IFwiLS5pbmZcIiA6IFwiLmluZlwiO1xuICAgICAgbGV0IG4gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICBpZiAoIWZvcm1hdCAmJiBtaW5GcmFjdGlvbkRpZ2l0cyAmJiAoIXRhZyB8fCB0YWcgPT09IFwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIikgJiYgL15cXGQvLnRlc3QobikpIHtcbiAgICAgICAgbGV0IGkgPSBuLmluZGV4T2YoXCIuXCIpO1xuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICBpID0gbi5sZW5ndGg7XG4gICAgICAgICAgbiArPSBcIi5cIjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZCA9IG1pbkZyYWN0aW9uRGlnaXRzIC0gKG4ubGVuZ3RoIC0gaSAtIDEpO1xuICAgICAgICB3aGlsZSAoZC0tID4gMClcbiAgICAgICAgICBuICs9IFwiMFwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG47XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrRmxvd0NvbGxlY3Rpb25FbmQoZXJyb3JzLCBjc3QpIHtcbiAgICAgIGxldCBjaGFyLCBuYW1lO1xuICAgICAgc3dpdGNoIChjc3QudHlwZSkge1xuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5GTE9XX01BUDpcbiAgICAgICAgICBjaGFyID0gXCJ9XCI7XG4gICAgICAgICAgbmFtZSA9IFwiZmxvdyBtYXBcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuRkxPV19TRVE6XG4gICAgICAgICAgY2hhciA9IFwiXVwiO1xuICAgICAgICAgIG5hbWUgPSBcImZsb3cgc2VxdWVuY2VcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBlcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihjc3QsIFwiTm90IGEgZmxvdyBjb2xsZWN0aW9uIT9cIikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBsYXN0SXRlbTtcbiAgICAgIGZvciAobGV0IGkgPSBjc3QuaXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGNzdC5pdGVtc1tpXTtcbiAgICAgICAgaWYgKCFpdGVtIHx8IGl0ZW0udHlwZSAhPT0gUGxhaW5WYWx1ZS5UeXBlLkNPTU1FTlQpIHtcbiAgICAgICAgICBsYXN0SXRlbSA9IGl0ZW07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsYXN0SXRlbSAmJiBsYXN0SXRlbS5jaGFyICE9PSBjaGFyKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IGBFeHBlY3RlZCAke25hbWV9IHRvIGVuZCB3aXRoICR7Y2hhcn1gO1xuICAgICAgICBsZXQgZXJyO1xuICAgICAgICBpZiAodHlwZW9mIGxhc3RJdGVtLm9mZnNldCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGVyciA9IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGNzdCwgbXNnKTtcbiAgICAgICAgICBlcnIub2Zmc2V0ID0gbGFzdEl0ZW0ub2Zmc2V0ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnIgPSBuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihsYXN0SXRlbSwgbXNnKTtcbiAgICAgICAgICBpZiAobGFzdEl0ZW0ucmFuZ2UgJiYgbGFzdEl0ZW0ucmFuZ2UuZW5kKVxuICAgICAgICAgICAgZXJyLm9mZnNldCA9IGxhc3RJdGVtLnJhbmdlLmVuZCAtIGxhc3RJdGVtLnJhbmdlLnN0YXJ0O1xuICAgICAgICB9XG4gICAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrRmxvd0NvbW1lbnRTcGFjZShlcnJvcnMsIGNvbW1lbnQpIHtcbiAgICAgIGNvbnN0IHByZXYgPSBjb21tZW50LmNvbnRleHQuc3JjW2NvbW1lbnQucmFuZ2Uuc3RhcnQgLSAxXTtcbiAgICAgIGlmIChwcmV2ICE9PSBcIlxcblwiICYmIHByZXYgIT09IFwiXHRcIiAmJiBwcmV2ICE9PSBcIiBcIikge1xuICAgICAgICBjb25zdCBtc2cgPSBcIkNvbW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gb3RoZXIgdG9rZW5zIGJ5IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnNcIjtcbiAgICAgICAgZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IoY29tbWVudCwgbXNnKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldExvbmdLZXlFcnJvcihzb3VyY2UsIGtleSkge1xuICAgICAgY29uc3Qgc2sgPSBTdHJpbmcoa2V5KTtcbiAgICAgIGNvbnN0IGsgPSBzay5zdWJzdHIoMCwgOCkgKyBcIi4uLlwiICsgc2suc3Vic3RyKC04KTtcbiAgICAgIHJldHVybiBuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihzb3VyY2UsIGBUaGUgXCIke2t9XCIga2V5IGlzIHRvbyBsb25nYCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVDb21tZW50cyhjb2xsZWN0aW9uLCBjb21tZW50cykge1xuICAgICAgZm9yIChjb25zdCB7XG4gICAgICAgIGFmdGVyS2V5LFxuICAgICAgICBiZWZvcmUsXG4gICAgICAgIGNvbW1lbnRcbiAgICAgIH0gb2YgY29tbWVudHMpIHtcbiAgICAgICAgbGV0IGl0ZW0gPSBjb2xsZWN0aW9uLml0ZW1zW2JlZm9yZV07XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgIGlmIChjb21tZW50ICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uLmNvbW1lbnQpXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb24uY29tbWVudCArPSBcIlxcblwiICsgY29tbWVudDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgY29sbGVjdGlvbi5jb21tZW50ID0gY29tbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGFmdGVyS2V5ICYmIGl0ZW0udmFsdWUpXG4gICAgICAgICAgICBpdGVtID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICBpZiAoY29tbWVudCA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBpZiAoYWZ0ZXJLZXkgfHwgIWl0ZW0uY29tbWVudEJlZm9yZSlcbiAgICAgICAgICAgICAgaXRlbS5zcGFjZUJlZm9yZSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnRCZWZvcmUpXG4gICAgICAgICAgICAgIGl0ZW0uY29tbWVudEJlZm9yZSArPSBcIlxcblwiICsgY29tbWVudDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgaXRlbS5jb21tZW50QmVmb3JlID0gY29tbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZVN0cmluZyhkb2MsIG5vZGUpIHtcbiAgICAgIGNvbnN0IHJlcyA9IG5vZGUuc3RyVmFsdWU7XG4gICAgICBpZiAoIXJlcylcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICBpZiAodHlwZW9mIHJlcyA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIHJlcy5lcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCFlcnJvci5zb3VyY2UpXG4gICAgICAgICAgZXJyb3Iuc291cmNlID0gbm9kZTtcbiAgICAgICAgZG9jLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcy5zdHI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVUYWdIYW5kbGUoZG9jLCBub2RlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGhhbmRsZSxcbiAgICAgICAgc3VmZml4XG4gICAgICB9ID0gbm9kZS50YWc7XG4gICAgICBsZXQgcHJlZml4ID0gZG9jLnRhZ1ByZWZpeGVzLmZpbmQoKHApID0+IHAuaGFuZGxlID09PSBoYW5kbGUpO1xuICAgICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgY29uc3QgZHRwID0gZG9jLmdldERlZmF1bHRzKCkudGFnUHJlZml4ZXM7XG4gICAgICAgIGlmIChkdHApXG4gICAgICAgICAgcHJlZml4ID0gZHRwLmZpbmQoKHApID0+IHAuaGFuZGxlID09PSBoYW5kbGUpO1xuICAgICAgICBpZiAoIXByZWZpeClcbiAgICAgICAgICB0aHJvdyBuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihub2RlLCBgVGhlICR7aGFuZGxlfSB0YWcgaGFuZGxlIGlzIG5vbi1kZWZhdWx0IGFuZCB3YXMgbm90IGRlY2xhcmVkLmApO1xuICAgICAgfVxuICAgICAgaWYgKCFzdWZmaXgpXG4gICAgICAgIHRocm93IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKG5vZGUsIGBUaGUgJHtoYW5kbGV9IHRhZyBoYXMgbm8gc3VmZml4LmApO1xuICAgICAgaWYgKGhhbmRsZSA9PT0gXCIhXCIgJiYgKGRvYy52ZXJzaW9uIHx8IGRvYy5vcHRpb25zLnZlcnNpb24pID09PSBcIjEuMFwiKSB7XG4gICAgICAgIGlmIChzdWZmaXhbMF0gPT09IFwiXlwiKSB7XG4gICAgICAgICAgZG9jLndhcm5pbmdzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFdhcm5pbmcobm9kZSwgXCJZQU1MIDEuMCBeIHRhZyBleHBhbnNpb24gaXMgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgICAgICAgcmV0dXJuIHN1ZmZpeDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoL1s6L10vLnRlc3Qoc3VmZml4KSkge1xuICAgICAgICAgIGNvbnN0IHZvY2FiID0gc3VmZml4Lm1hdGNoKC9eKFthLXowLTktXSspXFwvKC4qKS9pKTtcbiAgICAgICAgICByZXR1cm4gdm9jYWIgPyBgdGFnOiR7dm9jYWJbMV19LnlhbWwub3JnLDIwMDI6JHt2b2NhYlsyXX1gIDogYHRhZzoke3N1ZmZpeH1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJlZml4LnByZWZpeCArIGRlY29kZVVSSUNvbXBvbmVudChzdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlVGFnTmFtZShkb2MsIG5vZGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdGFnLFxuICAgICAgICB0eXBlXG4gICAgICB9ID0gbm9kZTtcbiAgICAgIGxldCBub25TcGVjaWZpYyA9IGZhbHNlO1xuICAgICAgaWYgKHRhZykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFuZGxlLFxuICAgICAgICAgIHN1ZmZpeCxcbiAgICAgICAgICB2ZXJiYXRpbVxuICAgICAgICB9ID0gdGFnO1xuICAgICAgICBpZiAodmVyYmF0aW0pIHtcbiAgICAgICAgICBpZiAodmVyYmF0aW0gIT09IFwiIVwiICYmIHZlcmJhdGltICE9PSBcIiEhXCIpXG4gICAgICAgICAgICByZXR1cm4gdmVyYmF0aW07XG4gICAgICAgICAgY29uc3QgbXNnID0gYFZlcmJhdGltIHRhZ3MgYXJlbid0IHJlc29sdmVkLCBzbyAke3ZlcmJhdGltfSBpcyBpbnZhbGlkLmA7XG4gICAgICAgICAgZG9jLmVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKG5vZGUsIG1zZykpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZSA9PT0gXCIhXCIgJiYgIXN1ZmZpeCkge1xuICAgICAgICAgIG5vblNwZWNpZmljID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVUYWdIYW5kbGUoZG9jLCBub2RlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5CTE9DS19GT0xERUQ6XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkJMT0NLX0xJVEVSQUw6XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLlFVT1RFX0RPVUJMRTpcbiAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuUVVPVEVfU0lOR0xFOlxuICAgICAgICAgIHJldHVybiBQbGFpblZhbHVlLmRlZmF1bHRUYWdzLlNUUjtcbiAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuRkxPV19NQVA6XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLk1BUDpcbiAgICAgICAgICByZXR1cm4gUGxhaW5WYWx1ZS5kZWZhdWx0VGFncy5NQVA7XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkZMT1dfU0VROlxuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5TRVE6XG4gICAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuZGVmYXVsdFRhZ3MuU0VRO1xuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5QTEFJTjpcbiAgICAgICAgICByZXR1cm4gbm9uU3BlY2lmaWMgPyBQbGFpblZhbHVlLmRlZmF1bHRUYWdzLlNUUiA6IG51bGw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVCeVRhZ05hbWUoZG9jLCBub2RlLCB0YWdOYW1lKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHRhZ3NcbiAgICAgIH0gPSBkb2Muc2NoZW1hO1xuICAgICAgY29uc3QgbWF0Y2hXaXRoVGVzdCA9IFtdO1xuICAgICAgZm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuICAgICAgICBpZiAodGFnLnRhZyA9PT0gdGFnTmFtZSkge1xuICAgICAgICAgIGlmICh0YWcudGVzdClcbiAgICAgICAgICAgIG1hdGNoV2l0aFRlc3QucHVzaCh0YWcpO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGFnLnJlc29sdmUoZG9jLCBub2RlKTtcbiAgICAgICAgICAgIHJldHVybiByZXMgaW5zdGFuY2VvZiBDb2xsZWN0aW9uID8gcmVzIDogbmV3IFNjYWxhcihyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3Qgc3RyID0gcmVzb2x2ZVN0cmluZyhkb2MsIG5vZGUpO1xuICAgICAgaWYgKHR5cGVvZiBzdHIgPT09IFwic3RyaW5nXCIgJiYgbWF0Y2hXaXRoVGVzdC5sZW5ndGggPiAwKVxuICAgICAgICByZXR1cm4gcmVzb2x2ZVNjYWxhcihzdHIsIG1hdGNoV2l0aFRlc3QsIHRhZ3Muc2NhbGFyRmFsbGJhY2spO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEZhbGxiYWNrVGFnTmFtZSh7XG4gICAgICB0eXBlXG4gICAgfSkge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkZMT1dfTUFQOlxuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5NQVA6XG4gICAgICAgICAgcmV0dXJuIFBsYWluVmFsdWUuZGVmYXVsdFRhZ3MuTUFQO1xuICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5GTE9XX1NFUTpcbiAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuU0VROlxuICAgICAgICAgIHJldHVybiBQbGFpblZhbHVlLmRlZmF1bHRUYWdzLlNFUTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gUGxhaW5WYWx1ZS5kZWZhdWx0VGFncy5TVFI7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVUYWcoZG9jLCBub2RlLCB0YWdOYW1lKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSByZXNvbHZlQnlUYWdOYW1lKGRvYywgbm9kZSwgdGFnTmFtZSk7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICBpZiAodGFnTmFtZSAmJiBub2RlLnRhZylcbiAgICAgICAgICAgIHJlcy50YWcgPSB0YWdOYW1lO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICghZXJyb3Iuc291cmNlKVxuICAgICAgICAgIGVycm9yLnNvdXJjZSA9IG5vZGU7XG4gICAgICAgIGRvYy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2sgPSBnZXRGYWxsYmFja1RhZ05hbWUobm9kZSk7XG4gICAgICAgIGlmICghZmFsbGJhY2spXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdGFnICR7dGFnTmFtZX0gaXMgdW5hdmFpbGFibGVgKTtcbiAgICAgICAgY29uc3QgbXNnID0gYFRoZSB0YWcgJHt0YWdOYW1lfSBpcyB1bmF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvICR7ZmFsbGJhY2t9YDtcbiAgICAgICAgZG9jLndhcm5pbmdzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFdhcm5pbmcobm9kZSwgbXNnKSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHJlc29sdmVCeVRhZ05hbWUoZG9jLCBub2RlLCBmYWxsYmFjayk7XG4gICAgICAgIHJlcy50YWcgPSB0YWdOYW1lO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgcmVmRXJyb3IgPSBuZXcgUGxhaW5WYWx1ZS5ZQU1MUmVmZXJlbmNlRXJyb3Iobm9kZSwgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIHJlZkVycm9yLnN0YWNrID0gZXJyb3Iuc3RhY2s7XG4gICAgICAgIGRvYy5lcnJvcnMucHVzaChyZWZFcnJvcik7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgaXNDb2xsZWN0aW9uSXRlbSA9IChub2RlKSA9PiB7XG4gICAgICBpZiAoIW5vZGUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdHlwZVxuICAgICAgfSA9IG5vZGU7XG4gICAgICByZXR1cm4gdHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLk1BUF9LRVkgfHwgdHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLk1BUF9WQUxVRSB8fCB0eXBlID09PSBQbGFpblZhbHVlLlR5cGUuU0VRX0lURU07XG4gICAgfTtcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZVByb3BzKGVycm9ycywgbm9kZSkge1xuICAgICAgY29uc3QgY29tbWVudHMgPSB7XG4gICAgICAgIGJlZm9yZTogW10sXG4gICAgICAgIGFmdGVyOiBbXVxuICAgICAgfTtcbiAgICAgIGxldCBoYXNBbmNob3IgPSBmYWxzZTtcbiAgICAgIGxldCBoYXNUYWcgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHByb3BzID0gaXNDb2xsZWN0aW9uSXRlbShub2RlLmNvbnRleHQucGFyZW50KSA/IG5vZGUuY29udGV4dC5wYXJlbnQucHJvcHMuY29uY2F0KG5vZGUucHJvcHMpIDogbm9kZS5wcm9wcztcbiAgICAgIGZvciAoY29uc3Qge1xuICAgICAgICBzdGFydCxcbiAgICAgICAgZW5kXG4gICAgICB9IG9mIHByb3BzKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS5jb250ZXh0LnNyY1tzdGFydF0pIHtcbiAgICAgICAgICBjYXNlIFBsYWluVmFsdWUuQ2hhci5DT01NRU5UOiB7XG4gICAgICAgICAgICBpZiAoIW5vZGUuY29tbWVudEhhc1JlcXVpcmVkV2hpdGVzcGFjZShzdGFydCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgbXNnID0gXCJDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzXCI7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKG5vZGUsIG1zZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBoZWFkZXIsXG4gICAgICAgICAgICAgIHZhbHVlUmFuZ2VcbiAgICAgICAgICAgIH0gPSBub2RlO1xuICAgICAgICAgICAgY29uc3QgY2MgPSB2YWx1ZVJhbmdlICYmIChzdGFydCA+IHZhbHVlUmFuZ2Uuc3RhcnQgfHwgaGVhZGVyICYmIHN0YXJ0ID4gaGVhZGVyLnN0YXJ0KSA/IGNvbW1lbnRzLmFmdGVyIDogY29tbWVudHMuYmVmb3JlO1xuICAgICAgICAgICAgY2MucHVzaChub2RlLmNvbnRleHQuc3JjLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBQbGFpblZhbHVlLkNoYXIuQU5DSE9SOlxuICAgICAgICAgICAgaWYgKGhhc0FuY2hvcikge1xuICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkEgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBhbmNob3JcIjtcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3Iobm9kZSwgbXNnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXNBbmNob3IgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBQbGFpblZhbHVlLkNoYXIuVEFHOlxuICAgICAgICAgICAgaWYgKGhhc1RhZykge1xuICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkEgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSB0YWdcIjtcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3Iobm9kZSwgbXNnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXNUYWcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1lbnRzLFxuICAgICAgICBoYXNBbmNob3IsXG4gICAgICAgIGhhc1RhZ1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVWYWx1ZShkb2MsIG5vZGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYW5jaG9ycyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBzY2hlbWFcbiAgICAgIH0gPSBkb2M7XG4gICAgICBpZiAobm9kZS50eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQUxJQVMpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IG5vZGUucmF3VmFsdWU7XG4gICAgICAgIGNvbnN0IHNyYyA9IGFuY2hvcnMuZ2V0Tm9kZShuYW1lKTtcbiAgICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgICBjb25zdCBtc2cgPSBgQWxpYXNlZCBhbmNob3Igbm90IGZvdW5kOiAke25hbWV9YDtcbiAgICAgICAgICBlcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MUmVmZXJlbmNlRXJyb3Iobm9kZSwgbXNnKSk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFsaWFzKHNyYyk7XG4gICAgICAgIGFuY2hvcnMuX2NzdEFsaWFzZXMucHVzaChyZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFnTmFtZSA9IHJlc29sdmVUYWdOYW1lKGRvYywgbm9kZSk7XG4gICAgICBpZiAodGFnTmFtZSlcbiAgICAgICAgcmV0dXJuIHJlc29sdmVUYWcoZG9jLCBub2RlLCB0YWdOYW1lKTtcbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFBsYWluVmFsdWUuVHlwZS5QTEFJTikge1xuICAgICAgICBjb25zdCBtc2cgPSBgRmFpbGVkIHRvIHJlc29sdmUgJHtub2RlLnR5cGV9IG5vZGUgaGVyZWA7XG4gICAgICAgIGVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTeW50YXhFcnJvcihub2RlLCBtc2cpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzdHIgPSByZXNvbHZlU3RyaW5nKGRvYywgbm9kZSk7XG4gICAgICAgIHJldHVybiByZXNvbHZlU2NhbGFyKHN0ciwgc2NoZW1hLnRhZ3MsIHNjaGVtYS50YWdzLnNjYWxhckZhbGxiYWNrKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICghZXJyb3Iuc291cmNlKVxuICAgICAgICAgIGVycm9yLnNvdXJjZSA9IG5vZGU7XG4gICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVOb2RlKGRvYywgbm9kZSkge1xuICAgICAgaWYgKCFub2RlKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChub2RlLmVycm9yKVxuICAgICAgICBkb2MuZXJyb3JzLnB1c2gobm9kZS5lcnJvcik7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbW1lbnRzLFxuICAgICAgICBoYXNBbmNob3IsXG4gICAgICAgIGhhc1RhZ1xuICAgICAgfSA9IHJlc29sdmVOb2RlUHJvcHMoZG9jLmVycm9ycywgbm9kZSk7XG4gICAgICBpZiAoaGFzQW5jaG9yKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBhbmNob3JzXG4gICAgICAgIH0gPSBkb2M7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBub2RlLmFuY2hvcjtcbiAgICAgICAgY29uc3QgcHJldiA9IGFuY2hvcnMuZ2V0Tm9kZShuYW1lKTtcbiAgICAgICAgaWYgKHByZXYpXG4gICAgICAgICAgYW5jaG9ycy5tYXBbYW5jaG9ycy5uZXdOYW1lKG5hbWUpXSA9IHByZXY7XG4gICAgICAgIGFuY2hvcnMubWFwW25hbWVdID0gbm9kZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5BTElBUyAmJiAoaGFzQW5jaG9yIHx8IGhhc1RhZykpIHtcbiAgICAgICAgY29uc3QgbXNnID0gXCJBbiBhbGlhcyBub2RlIG11c3Qgbm90IHNwZWNpZnkgYW55IHByb3BlcnRpZXNcIjtcbiAgICAgICAgZG9jLmVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKG5vZGUsIG1zZykpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzID0gcmVzb2x2ZU5vZGVWYWx1ZShkb2MsIG5vZGUpO1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICByZXMucmFuZ2UgPSBbbm9kZS5yYW5nZS5zdGFydCwgbm9kZS5yYW5nZS5lbmRdO1xuICAgICAgICBpZiAoZG9jLm9wdGlvbnMua2VlcENzdE5vZGVzKVxuICAgICAgICAgIHJlcy5jc3ROb2RlID0gbm9kZTtcbiAgICAgICAgaWYgKGRvYy5vcHRpb25zLmtlZXBOb2RlVHlwZXMpXG4gICAgICAgICAgcmVzLnR5cGUgPSBub2RlLnR5cGU7XG4gICAgICAgIGNvbnN0IGNiID0gY29tbWVudHMuYmVmb3JlLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIGlmIChjYikge1xuICAgICAgICAgIHJlcy5jb21tZW50QmVmb3JlID0gcmVzLmNvbW1lbnRCZWZvcmUgPyBgJHtyZXMuY29tbWVudEJlZm9yZX1cbiR7Y2J9YCA6IGNiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhID0gY29tbWVudHMuYWZ0ZXIuam9pbihcIlxcblwiKTtcbiAgICAgICAgaWYgKGNhKVxuICAgICAgICAgIHJlcy5jb21tZW50ID0gcmVzLmNvbW1lbnQgPyBgJHtyZXMuY29tbWVudH1cbiR7Y2F9YCA6IGNhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGUucmVzb2x2ZWQgPSByZXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVNYXAoZG9jLCBjc3QpIHtcbiAgICAgIGlmIChjc3QudHlwZSAhPT0gUGxhaW5WYWx1ZS5UeXBlLk1BUCAmJiBjc3QudHlwZSAhPT0gUGxhaW5WYWx1ZS5UeXBlLkZMT1dfTUFQKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IGBBICR7Y3N0LnR5cGV9IG5vZGUgY2Fubm90IGJlIHJlc29sdmVkIGFzIGEgbWFwcGluZ2A7XG4gICAgICAgIGRvYy5lcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU3ludGF4RXJyb3IoY3N0LCBtc2cpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbW1lbnRzLFxuICAgICAgICBpdGVtc1xuICAgICAgfSA9IGNzdC50eXBlID09PSBQbGFpblZhbHVlLlR5cGUuRkxPV19NQVAgPyByZXNvbHZlRmxvd01hcEl0ZW1zKGRvYywgY3N0KSA6IHJlc29sdmVCbG9ja01hcEl0ZW1zKGRvYywgY3N0KTtcbiAgICAgIGNvbnN0IG1hcCA9IG5ldyBZQU1MTWFwKCk7XG4gICAgICBtYXAuaXRlbXMgPSBpdGVtcztcbiAgICAgIHJlc29sdmVDb21tZW50cyhtYXAsIGNvbW1lbnRzKTtcbiAgICAgIGxldCBoYXNDb2xsZWN0aW9uS2V5ID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBrZXk6IGlLZXlcbiAgICAgICAgfSA9IGl0ZW1zW2ldO1xuICAgICAgICBpZiAoaUtleSBpbnN0YW5jZW9mIENvbGxlY3Rpb24pXG4gICAgICAgICAgaGFzQ29sbGVjdGlvbktleSA9IHRydWU7XG4gICAgICAgIGlmIChkb2Muc2NoZW1hLm1lcmdlICYmIGlLZXkgJiYgaUtleS52YWx1ZSA9PT0gTUVSR0VfS0VZKSB7XG4gICAgICAgICAgaXRlbXNbaV0gPSBuZXcgTWVyZ2UoaXRlbXNbaV0pO1xuICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBpdGVtc1tpXS52YWx1ZS5pdGVtcztcbiAgICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZXMuc29tZSgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBbGlhcykge1xuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgICB9ID0gbm9kZS5zb3VyY2U7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSBQbGFpblZhbHVlLlR5cGUuTUFQIHx8IHR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5GTE9XX01BUClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBlcnJvciA9IFwiTWVyZ2Ugbm9kZXMgYWxpYXNlcyBjYW4gb25seSBwb2ludCB0byBtYXBzXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXJyb3IgPSBcIk1lcmdlIG5vZGVzIGNhbiBvbmx5IGhhdmUgQWxpYXMgbm9kZXMgYXMgdmFsdWVzXCI7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGVycm9yKVxuICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGNzdCwgZXJyb3IpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBpdGVtcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBrZXk6IGpLZXlcbiAgICAgICAgICAgIH0gPSBpdGVtc1tqXTtcbiAgICAgICAgICAgIGlmIChpS2V5ID09PSBqS2V5IHx8IGlLZXkgJiYgaktleSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaUtleSwgXCJ2YWx1ZVwiKSAmJiBpS2V5LnZhbHVlID09PSBqS2V5LnZhbHVlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBNYXAga2V5cyBtdXN0IGJlIHVuaXF1ZTsgXCIke2lLZXl9XCIgaXMgcmVwZWF0ZWRgO1xuICAgICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IoY3N0LCBtc2cpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaGFzQ29sbGVjdGlvbktleSAmJiAhZG9jLm9wdGlvbnMubWFwQXNNYXApIHtcbiAgICAgICAgY29uc3Qgd2FybiA9IFwiS2V5cyB3aXRoIGNvbGxlY3Rpb24gdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWQgYXMgWUFNTCBkdWUgdG8gSlMgT2JqZWN0IHJlc3RyaWN0aW9ucy4gVXNlIG1hcEFzTWFwOiB0cnVlIHRvIGF2b2lkIHRoaXMuXCI7XG4gICAgICAgIGRvYy53YXJuaW5ncy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxXYXJuaW5nKGNzdCwgd2FybikpO1xuICAgICAgfVxuICAgICAgY3N0LnJlc29sdmVkID0gbWFwO1xuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgdmFyIHZhbHVlSGFzUGFpckNvbW1lbnQgPSAoe1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBsaW5lU3RhcnQsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHNyY1xuICAgICAgfSxcbiAgICAgIHByb3BzXG4gICAgfSkgPT4ge1xuICAgICAgaWYgKHByb3BzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBzdGFydFxuICAgICAgfSA9IHByb3BzWzBdO1xuICAgICAgaWYgKG5vZGUgJiYgc3RhcnQgPiBub2RlLnZhbHVlUmFuZ2Uuc3RhcnQpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmIChzcmNbc3RhcnRdICE9PSBQbGFpblZhbHVlLkNoYXIuQ09NTUVOVClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChsZXQgaSA9IGxpbmVTdGFydDsgaSA8IHN0YXJ0OyArK2kpXG4gICAgICAgIGlmIChzcmNbaV0gPT09IFwiXFxuXCIpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBmdW5jdGlvbiByZXNvbHZlUGFpckNvbW1lbnQoaXRlbSwgcGFpcikge1xuICAgICAgaWYgKCF2YWx1ZUhhc1BhaXJDb21tZW50KGl0ZW0pKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBjb21tZW50ID0gaXRlbS5nZXRQcm9wVmFsdWUoMCwgUGxhaW5WYWx1ZS5DaGFyLkNPTU1FTlQsIHRydWUpO1xuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBjb25zdCBjYiA9IHBhaXIudmFsdWUuY29tbWVudEJlZm9yZTtcbiAgICAgIGlmIChjYiAmJiBjYi5zdGFydHNXaXRoKGNvbW1lbnQpKSB7XG4gICAgICAgIHBhaXIudmFsdWUuY29tbWVudEJlZm9yZSA9IGNiLnN1YnN0cihjb21tZW50Lmxlbmd0aCArIDEpO1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjYyA9IHBhaXIudmFsdWUuY29tbWVudDtcbiAgICAgICAgaWYgKCFpdGVtLm5vZGUgJiYgY2MgJiYgY2Muc3RhcnRzV2l0aChjb21tZW50KSkge1xuICAgICAgICAgIHBhaXIudmFsdWUuY29tbWVudCA9IGNjLnN1YnN0cihjb21tZW50Lmxlbmd0aCArIDEpO1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKVxuICAgICAgICBwYWlyLmNvbW1lbnQgPSBjb21tZW50O1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlQmxvY2tNYXBJdGVtcyhkb2MsIGNzdCkge1xuICAgICAgY29uc3QgY29tbWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICBsZXQga2V5ID0gdm9pZCAwO1xuICAgICAgbGV0IGtleVN0YXJ0ID0gbnVsbDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3N0Lml0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBjc3QuaXRlbXNbaV07XG4gICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuQkxBTktfTElORTpcbiAgICAgICAgICAgIGNvbW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICBhZnRlcktleTogISFrZXksXG4gICAgICAgICAgICAgIGJlZm9yZTogaXRlbXMubGVuZ3RoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkNPTU1FTlQ6XG4gICAgICAgICAgICBjb21tZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgYWZ0ZXJLZXk6ICEha2V5LFxuICAgICAgICAgICAgICBiZWZvcmU6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLk1BUF9LRVk6XG4gICAgICAgICAgICBpZiAoa2V5ICE9PSB2b2lkIDApXG4gICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IFBhaXIoa2V5KSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5lcnJvcilcbiAgICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKGl0ZW0uZXJyb3IpO1xuICAgICAgICAgICAga2V5ID0gcmVzb2x2ZU5vZGUoZG9jLCBpdGVtLm5vZGUpO1xuICAgICAgICAgICAga2V5U3RhcnQgPSBudWxsO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuTUFQX1ZBTFVFOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2b2lkIDApXG4gICAgICAgICAgICAgICAga2V5ID0gbnVsbDtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uZXJyb3IpXG4gICAgICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKGl0ZW0uZXJyb3IpO1xuICAgICAgICAgICAgICBpZiAoIWl0ZW0uY29udGV4dC5hdExpbmVTdGFydCAmJiBpdGVtLm5vZGUgJiYgaXRlbS5ub2RlLnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5NQVAgJiYgIWl0ZW0ubm9kZS5jb250ZXh0LmF0TGluZVN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gXCJOZXN0ZWQgbWFwcGluZ3MgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBhY3QgbWFwcGluZ3NcIjtcbiAgICAgICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IoaXRlbS5ub2RlLCBtc2cpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsZXQgdmFsdWVOb2RlID0gaXRlbS5ub2RlO1xuICAgICAgICAgICAgICBpZiAoIXZhbHVlTm9kZSAmJiBpdGVtLnByb3BzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZU5vZGUgPSBuZXcgUGxhaW5WYWx1ZS5QbGFpblZhbHVlKFBsYWluVmFsdWUuVHlwZS5QTEFJTiwgW10pO1xuICAgICAgICAgICAgICAgIHZhbHVlTm9kZS5jb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgcGFyZW50OiBpdGVtLFxuICAgICAgICAgICAgICAgICAgc3JjOiBpdGVtLmNvbnRleHQuc3JjXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSBpdGVtLnJhbmdlLnN0YXJ0ICsgMTtcbiAgICAgICAgICAgICAgICB2YWx1ZU5vZGUucmFuZ2UgPSB7XG4gICAgICAgICAgICAgICAgICBzdGFydDogcG9zLFxuICAgICAgICAgICAgICAgICAgZW5kOiBwb3NcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHZhbHVlTm9kZS52YWx1ZVJhbmdlID0ge1xuICAgICAgICAgICAgICAgICAgc3RhcnQ6IHBvcyxcbiAgICAgICAgICAgICAgICAgIGVuZDogcG9zXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0ucmFuZ2Uub3JpZ1N0YXJ0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvcmlnUG9zID0gaXRlbS5yYW5nZS5vcmlnU3RhcnQgKyAxO1xuICAgICAgICAgICAgICAgICAgdmFsdWVOb2RlLnJhbmdlLm9yaWdTdGFydCA9IHZhbHVlTm9kZS5yYW5nZS5vcmlnRW5kID0gb3JpZ1BvcztcbiAgICAgICAgICAgICAgICAgIHZhbHVlTm9kZS52YWx1ZVJhbmdlLm9yaWdTdGFydCA9IHZhbHVlTm9kZS52YWx1ZVJhbmdlLm9yaWdFbmQgPSBvcmlnUG9zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBwYWlyID0gbmV3IFBhaXIoa2V5LCByZXNvbHZlTm9kZShkb2MsIHZhbHVlTm9kZSkpO1xuICAgICAgICAgICAgICByZXNvbHZlUGFpckNvbW1lbnQoaXRlbSwgcGFpcik7XG4gICAgICAgICAgICAgIGl0ZW1zLnB1c2gocGFpcik7XG4gICAgICAgICAgICAgIGlmIChrZXkgJiYgdHlwZW9mIGtleVN0YXJ0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ucmFuZ2Uuc3RhcnQgPiBrZXlTdGFydCArIDEwMjQpXG4gICAgICAgICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2goZ2V0TG9uZ0tleUVycm9yKGNzdCwga2V5KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAga2V5ID0gdm9pZCAwO1xuICAgICAgICAgICAgICBrZXlTdGFydCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKGtleSAhPT0gdm9pZCAwKVxuICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBQYWlyKGtleSkpO1xuICAgICAgICAgICAga2V5ID0gcmVzb2x2ZU5vZGUoZG9jLCBpdGVtKTtcbiAgICAgICAgICAgIGtleVN0YXJ0ID0gaXRlbS5yYW5nZS5zdGFydDtcbiAgICAgICAgICAgIGlmIChpdGVtLmVycm9yKVxuICAgICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2goaXRlbS5lcnJvcik7XG4gICAgICAgICAgICBuZXh0OlxuICAgICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IDsgKytqKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEl0ZW0gPSBjc3QuaXRlbXNbal07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChuZXh0SXRlbSAmJiBuZXh0SXRlbS50eXBlKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIFBsYWluVmFsdWUuVHlwZS5CTEFOS19MSU5FOlxuICAgICAgICAgICAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuQ09NTUVOVDpcbiAgICAgICAgICAgICAgICAgICAgY29udGludWUgbmV4dDtcbiAgICAgICAgICAgICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLk1BUF9WQUxVRTpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgbmV4dDtcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gXCJJbXBsaWNpdCBtYXAga2V5cyBuZWVkIHRvIGJlIGZvbGxvd2VkIGJ5IG1hcCB2YWx1ZXNcIjtcbiAgICAgICAgICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGl0ZW0sIG1zZykpO1xuICAgICAgICAgICAgICAgICAgICBicmVhayBuZXh0O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWVSYW5nZUNvbnRhaW5zTmV3bGluZSkge1xuICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgb24gYSBzaW5nbGUgbGluZVwiO1xuICAgICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IoaXRlbSwgbXNnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChrZXkgIT09IHZvaWQgMClcbiAgICAgICAgaXRlbXMucHVzaChuZXcgUGFpcihrZXkpKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1lbnRzLFxuICAgICAgICBpdGVtc1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUZsb3dNYXBJdGVtcyhkb2MsIGNzdCkge1xuICAgICAgY29uc3QgY29tbWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICBsZXQga2V5ID0gdm9pZCAwO1xuICAgICAgbGV0IGV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICBsZXQgbmV4dCA9IFwie1wiO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjc3QuaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGNzdC5pdGVtc1tpXTtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtLmNoYXIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFyLFxuICAgICAgICAgICAgb2Zmc2V0XG4gICAgICAgICAgfSA9IGl0ZW07XG4gICAgICAgICAgaWYgKGNoYXIgPT09IFwiP1wiICYmIGtleSA9PT0gdm9pZCAwICYmICFleHBsaWNpdEtleSkge1xuICAgICAgICAgICAgZXhwbGljaXRLZXkgPSB0cnVlO1xuICAgICAgICAgICAgbmV4dCA9IFwiOlwiO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjaGFyID09PSBcIjpcIikge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgICBrZXkgPSBudWxsO1xuICAgICAgICAgICAgaWYgKG5leHQgPT09IFwiOlwiKSB7XG4gICAgICAgICAgICAgIG5leHQgPSBcIixcIjtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChleHBsaWNpdEtleSkge1xuICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2b2lkIDAgJiYgY2hhciAhPT0gXCIsXCIpXG4gICAgICAgICAgICAgICAga2V5ID0gbnVsbDtcbiAgICAgICAgICAgICAgZXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrZXkgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBQYWlyKGtleSkpO1xuICAgICAgICAgICAgICBrZXkgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIGlmIChjaGFyID09PSBcIixcIikge1xuICAgICAgICAgICAgICAgIG5leHQgPSBcIjpcIjtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hhciA9PT0gXCJ9XCIpIHtcbiAgICAgICAgICAgIGlmIChpID09PSBjc3QuaXRlbXMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBuZXh0KSB7XG4gICAgICAgICAgICBuZXh0ID0gXCI6XCI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbXNnID0gYEZsb3cgbWFwIGNvbnRhaW5zIGFuIHVuZXhwZWN0ZWQgJHtjaGFyfWA7XG4gICAgICAgICAgY29uc3QgZXJyID0gbmV3IFBsYWluVmFsdWUuWUFNTFN5bnRheEVycm9yKGNzdCwgbXNnKTtcbiAgICAgICAgICBlcnIub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChlcnIpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gUGxhaW5WYWx1ZS5UeXBlLkJMQU5LX0xJTkUpIHtcbiAgICAgICAgICBjb21tZW50cy5wdXNoKHtcbiAgICAgICAgICAgIGFmdGVyS2V5OiAhIWtleSxcbiAgICAgICAgICAgIGJlZm9yZTogaXRlbXMubGVuZ3RoXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQ09NTUVOVCkge1xuICAgICAgICAgIGNoZWNrRmxvd0NvbW1lbnRTcGFjZShkb2MuZXJyb3JzLCBpdGVtKTtcbiAgICAgICAgICBjb21tZW50cy5wdXNoKHtcbiAgICAgICAgICAgIGFmdGVyS2V5OiAhIWtleSxcbiAgICAgICAgICAgIGJlZm9yZTogaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSB2b2lkIDApIHtcbiAgICAgICAgICBpZiAobmV4dCA9PT0gXCIsXCIpXG4gICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IoaXRlbSwgXCJTZXBhcmF0b3IgLCBtaXNzaW5nIGluIGZsb3cgbWFwXCIpKTtcbiAgICAgICAgICBrZXkgPSByZXNvbHZlTm9kZShkb2MsIGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuZXh0ICE9PSBcIixcIilcbiAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihpdGVtLCBcIkluZGljYXRvciA6IG1pc3NpbmcgaW4gZmxvdyBtYXAgZW50cnlcIikpO1xuICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IFBhaXIoa2V5LCByZXNvbHZlTm9kZShkb2MsIGl0ZW0pKSk7XG4gICAgICAgICAga2V5ID0gdm9pZCAwO1xuICAgICAgICAgIGV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrRmxvd0NvbGxlY3Rpb25FbmQoZG9jLmVycm9ycywgY3N0KTtcbiAgICAgIGlmIChrZXkgIT09IHZvaWQgMClcbiAgICAgICAgaXRlbXMucHVzaChuZXcgUGFpcihrZXkpKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1lbnRzLFxuICAgICAgICBpdGVtc1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZVNlcShkb2MsIGNzdCkge1xuICAgICAgaWYgKGNzdC50eXBlICE9PSBQbGFpblZhbHVlLlR5cGUuU0VRICYmIGNzdC50eXBlICE9PSBQbGFpblZhbHVlLlR5cGUuRkxPV19TRVEpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYEEgJHtjc3QudHlwZX0gbm9kZSBjYW5ub3QgYmUgcmVzb2x2ZWQgYXMgYSBzZXF1ZW5jZWA7XG4gICAgICAgIGRvYy5lcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU3ludGF4RXJyb3IoY3N0LCBtc2cpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbW1lbnRzLFxuICAgICAgICBpdGVtc1xuICAgICAgfSA9IGNzdC50eXBlID09PSBQbGFpblZhbHVlLlR5cGUuRkxPV19TRVEgPyByZXNvbHZlRmxvd1NlcUl0ZW1zKGRvYywgY3N0KSA6IHJlc29sdmVCbG9ja1NlcUl0ZW1zKGRvYywgY3N0KTtcbiAgICAgIGNvbnN0IHNlcSA9IG5ldyBZQU1MU2VxKCk7XG4gICAgICBzZXEuaXRlbXMgPSBpdGVtcztcbiAgICAgIHJlc29sdmVDb21tZW50cyhzZXEsIGNvbW1lbnRzKTtcbiAgICAgIGlmICghZG9jLm9wdGlvbnMubWFwQXNNYXAgJiYgaXRlbXMuc29tZSgoaXQpID0+IGl0IGluc3RhbmNlb2YgUGFpciAmJiBpdC5rZXkgaW5zdGFuY2VvZiBDb2xsZWN0aW9uKSkge1xuICAgICAgICBjb25zdCB3YXJuID0gXCJLZXlzIHdpdGggY29sbGVjdGlvbiB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZCBhcyBZQU1MIGR1ZSB0byBKUyBPYmplY3QgcmVzdHJpY3Rpb25zLiBVc2UgbWFwQXNNYXA6IHRydWUgdG8gYXZvaWQgdGhpcy5cIjtcbiAgICAgICAgZG9jLndhcm5pbmdzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFdhcm5pbmcoY3N0LCB3YXJuKSk7XG4gICAgICB9XG4gICAgICBjc3QucmVzb2x2ZWQgPSBzZXE7XG4gICAgICByZXR1cm4gc2VxO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlQmxvY2tTZXFJdGVtcyhkb2MsIGNzdCkge1xuICAgICAgY29uc3QgY29tbWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNzdC5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBpdGVtID0gY3N0Lml0ZW1zW2ldO1xuICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xuICAgICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLkJMQU5LX0xJTkU6XG4gICAgICAgICAgICBjb21tZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgYmVmb3JlOiBpdGVtcy5sZW5ndGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBQbGFpblZhbHVlLlR5cGUuQ09NTUVOVDpcbiAgICAgICAgICAgIGNvbW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb21tZW50OiBpdGVtLmNvbW1lbnQsXG4gICAgICAgICAgICAgIGJlZm9yZTogaXRlbXMubGVuZ3RoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUGxhaW5WYWx1ZS5UeXBlLlNFUV9JVEVNOlxuICAgICAgICAgICAgaWYgKGl0ZW0uZXJyb3IpXG4gICAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChpdGVtLmVycm9yKTtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2gocmVzb2x2ZU5vZGUoZG9jLCBpdGVtLm5vZGUpKTtcbiAgICAgICAgICAgIGlmIChpdGVtLmhhc1Byb3BzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1zZyA9IFwiU2VxdWVuY2UgaXRlbXMgY2Fubm90IGhhdmUgdGFncyBvciBhbmNob3JzIGJlZm9yZSB0aGUgLSBpbmRpY2F0b3JcIjtcbiAgICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGl0ZW0sIG1zZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmIChpdGVtLmVycm9yKVxuICAgICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2goaXRlbS5lcnJvcik7XG4gICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFN5bnRheEVycm9yKGl0ZW0sIGBVbmV4cGVjdGVkICR7aXRlbS50eXBlfSBub2RlIGluIHNlcXVlbmNlYCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21tZW50cyxcbiAgICAgICAgaXRlbXNcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVGbG93U2VxSXRlbXMoZG9jLCBjc3QpIHtcbiAgICAgIGNvbnN0IGNvbW1lbnRzID0gW107XG4gICAgICBjb25zdCBpdGVtcyA9IFtdO1xuICAgICAgbGV0IGV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICBsZXQga2V5ID0gdm9pZCAwO1xuICAgICAgbGV0IGtleVN0YXJ0ID0gbnVsbDtcbiAgICAgIGxldCBuZXh0ID0gXCJbXCI7XG4gICAgICBsZXQgcHJldkl0ZW0gPSBudWxsO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjc3QuaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGNzdC5pdGVtc1tpXTtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtLmNoYXIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFyLFxuICAgICAgICAgICAgb2Zmc2V0XG4gICAgICAgICAgfSA9IGl0ZW07XG4gICAgICAgICAgaWYgKGNoYXIgIT09IFwiOlwiICYmIChleHBsaWNpdEtleSB8fCBrZXkgIT09IHZvaWQgMCkpIHtcbiAgICAgICAgICAgIGlmIChleHBsaWNpdEtleSAmJiBrZXkgPT09IHZvaWQgMClcbiAgICAgICAgICAgICAga2V5ID0gbmV4dCA/IGl0ZW1zLnBvcCgpIDogbnVsbDtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IFBhaXIoa2V5KSk7XG4gICAgICAgICAgICBleHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICAgICAga2V5ID0gdm9pZCAwO1xuICAgICAgICAgICAga2V5U3RhcnQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hhciA9PT0gbmV4dCkge1xuICAgICAgICAgICAgbmV4dCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIGlmICghbmV4dCAmJiBjaGFyID09PSBcIj9cIikge1xuICAgICAgICAgICAgZXhwbGljaXRLZXkgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmV4dCAhPT0gXCJbXCIgJiYgY2hhciA9PT0gXCI6XCIgJiYga2V5ID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIGlmIChuZXh0ID09PSBcIixcIikge1xuICAgICAgICAgICAgICBrZXkgPSBpdGVtcy5wb3AoKTtcbiAgICAgICAgICAgICAgaWYgKGtleSBpbnN0YW5jZW9mIFBhaXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkNoYWluaW5nIGZsb3cgc2VxdWVuY2UgcGFpcnMgaXMgaW52YWxpZFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGNzdCwgbXNnKTtcbiAgICAgICAgICAgICAgICBlcnIub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChlcnIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghZXhwbGljaXRLZXkgJiYgdHlwZW9mIGtleVN0YXJ0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5RW5kID0gaXRlbS5yYW5nZSA/IGl0ZW0ucmFuZ2Uuc3RhcnQgOiBpdGVtLm9mZnNldDtcbiAgICAgICAgICAgICAgICBpZiAoa2V5RW5kID4ga2V5U3RhcnQgKyAxMDI0KVxuICAgICAgICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKGdldExvbmdLZXlFcnJvcihjc3QsIGtleSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgICAgIH0gPSBwcmV2SXRlbS5jb250ZXh0O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkyID0ga2V5U3RhcnQ7IGkyIDwga2V5RW5kOyArK2kyKVxuICAgICAgICAgICAgICAgICAgaWYgKHNyY1tpMl0gPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gXCJJbXBsaWNpdCBrZXlzIG9mIGZsb3cgc2VxdWVuY2UgcGFpcnMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lXCI7XG4gICAgICAgICAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihwcmV2SXRlbSwgbXNnKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBrZXkgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2V5U3RhcnQgPSBudWxsO1xuICAgICAgICAgICAgZXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgIG5leHQgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmV4dCA9PT0gXCJbXCIgfHwgY2hhciAhPT0gXCJdXCIgfHwgaSA8IGNzdC5pdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgRmxvdyBzZXF1ZW5jZSBjb250YWlucyBhbiB1bmV4cGVjdGVkICR7Y2hhcn1gO1xuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IFBsYWluVmFsdWUuWUFNTFN5bnRheEVycm9yKGNzdCwgbXNnKTtcbiAgICAgICAgICAgIGVyci5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2goZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQkxBTktfTElORSkge1xuICAgICAgICAgIGNvbW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgYmVmb3JlOiBpdGVtcy5sZW5ndGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5DT01NRU5UKSB7XG4gICAgICAgICAgY2hlY2tGbG93Q29tbWVudFNwYWNlKGRvYy5lcnJvcnMsIGl0ZW0pO1xuICAgICAgICAgIGNvbW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgY29tbWVudDogaXRlbS5jb21tZW50LFxuICAgICAgICAgICAgYmVmb3JlOiBpdGVtcy5sZW5ndGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gYEV4cGVjdGVkIGEgJHtuZXh0fSBpbiBmbG93IHNlcXVlbmNlYDtcbiAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihpdGVtLCBtc2cpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlTm9kZShkb2MsIGl0ZW0pO1xuICAgICAgICAgIGlmIChrZXkgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICBwcmV2SXRlbSA9IGl0ZW07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IFBhaXIoa2V5LCB2YWx1ZSkpO1xuICAgICAgICAgICAga2V5ID0gdm9pZCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBrZXlTdGFydCA9IGl0ZW0ucmFuZ2Uuc3RhcnQ7XG4gICAgICAgICAgbmV4dCA9IFwiLFwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjaGVja0Zsb3dDb2xsZWN0aW9uRW5kKGRvYy5lcnJvcnMsIGNzdCk7XG4gICAgICBpZiAoa2V5ICE9PSB2b2lkIDApXG4gICAgICAgIGl0ZW1zLnB1c2gobmV3IFBhaXIoa2V5KSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21tZW50cyxcbiAgICAgICAgaXRlbXNcbiAgICAgIH07XG4gICAgfVxuICAgIGV4cG9ydHMyLkFsaWFzID0gQWxpYXM7XG4gICAgZXhwb3J0czIuQ29sbGVjdGlvbiA9IENvbGxlY3Rpb247XG4gICAgZXhwb3J0czIuTWVyZ2UgPSBNZXJnZTtcbiAgICBleHBvcnRzMi5Ob2RlID0gTm9kZTtcbiAgICBleHBvcnRzMi5QYWlyID0gUGFpcjtcbiAgICBleHBvcnRzMi5TY2FsYXIgPSBTY2FsYXI7XG4gICAgZXhwb3J0czIuWUFNTE1hcCA9IFlBTUxNYXA7XG4gICAgZXhwb3J0czIuWUFNTFNlcSA9IFlBTUxTZXE7XG4gICAgZXhwb3J0czIuYWRkQ29tbWVudCA9IGFkZENvbW1lbnQ7XG4gICAgZXhwb3J0czIuYmluYXJ5T3B0aW9ucyA9IGJpbmFyeU9wdGlvbnM7XG4gICAgZXhwb3J0czIuYm9vbE9wdGlvbnMgPSBib29sT3B0aW9ucztcbiAgICBleHBvcnRzMi5maW5kUGFpciA9IGZpbmRQYWlyO1xuICAgIGV4cG9ydHMyLmludE9wdGlvbnMgPSBpbnRPcHRpb25zO1xuICAgIGV4cG9ydHMyLmlzRW1wdHlQYXRoID0gaXNFbXB0eVBhdGg7XG4gICAgZXhwb3J0czIubnVsbE9wdGlvbnMgPSBudWxsT3B0aW9ucztcbiAgICBleHBvcnRzMi5yZXNvbHZlTWFwID0gcmVzb2x2ZU1hcDtcbiAgICBleHBvcnRzMi5yZXNvbHZlTm9kZSA9IHJlc29sdmVOb2RlO1xuICAgIGV4cG9ydHMyLnJlc29sdmVTZXEgPSByZXNvbHZlU2VxO1xuICAgIGV4cG9ydHMyLnJlc29sdmVTdHJpbmcgPSByZXNvbHZlU3RyaW5nO1xuICAgIGV4cG9ydHMyLnN0ck9wdGlvbnMgPSBzdHJPcHRpb25zO1xuICAgIGV4cG9ydHMyLnN0cmluZ2lmeU51bWJlciA9IHN0cmluZ2lmeU51bWJlcjtcbiAgICBleHBvcnRzMi5zdHJpbmdpZnlTdHJpbmcgPSBzdHJpbmdpZnlTdHJpbmc7XG4gICAgZXhwb3J0czIudG9KU09OID0gdG9KU09OO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3dhcm5pbmdzXzEwMDBhMzcyID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL3lhbWwvZGlzdC93YXJuaW5ncy0xMDAwYTM3Mi5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIFBsYWluVmFsdWUgPSByZXF1aXJlX1BsYWluVmFsdWVfZWM4ZTU4OGUoKTtcbiAgICB2YXIgcmVzb2x2ZVNlcSA9IHJlcXVpcmVfcmVzb2x2ZVNlcV9kMDNjYjAzNygpO1xuICAgIHZhciBiaW5hcnkgPSB7XG4gICAgICBpZGVudGlmeTogKHZhbHVlKSA9PiB2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnlcIixcbiAgICAgIHJlc29sdmU6IChkb2MsIG5vZGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3JjID0gcmVzb2x2ZVNlcS5yZXNvbHZlU3RyaW5nKGRvYywgbm9kZSk7XG4gICAgICAgIGlmICh0eXBlb2YgQnVmZmVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oc3JjLCBcImJhc2U2NFwiKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXRvYiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY29uc3Qgc3RyID0gYXRvYihzcmMucmVwbGFjZSgvW1xcblxccl0vZywgXCJcIikpO1xuICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGgpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgYnVmZmVyW2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBtc2cgPSBcIlRoaXMgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIGJpbmFyeSB0YWdzOyBlaXRoZXIgQnVmZmVyIG9yIGF0b2IgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFJlZmVyZW5jZUVycm9yKG5vZGUsIG1zZykpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogcmVzb2x2ZVNlcS5iaW5hcnlPcHRpb25zLFxuICAgICAgc3RyaW5naWZ5OiAoe1xuICAgICAgICBjb21tZW50LFxuICAgICAgICB0eXBlLFxuICAgICAgICB2YWx1ZVxuICAgICAgfSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSA9PiB7XG4gICAgICAgIGxldCBzcmM7XG4gICAgICAgIGlmICh0eXBlb2YgQnVmZmVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBzcmMgPSB2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlciA/IHZhbHVlLnRvU3RyaW5nKFwiYmFzZTY0XCIpIDogQnVmZmVyLmZyb20odmFsdWUuYnVmZmVyKS50b1N0cmluZyhcImJhc2U2NFwiKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgbGV0IHMgPSBcIlwiO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWVbaV0pO1xuICAgICAgICAgIHNyYyA9IGJ0b2Eocyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IHdyaXRpbmcgYmluYXJ5IHRhZ3M7IGVpdGhlciBCdWZmZXIgb3IgYnRvYSBpcyByZXF1aXJlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXR5cGUpXG4gICAgICAgICAgdHlwZSA9IHJlc29sdmVTZXEuYmluYXJ5T3B0aW9ucy5kZWZhdWx0VHlwZTtcbiAgICAgICAgaWYgKHR5cGUgPT09IFBsYWluVmFsdWUuVHlwZS5RVU9URV9ET1VCTEUpIHtcbiAgICAgICAgICB2YWx1ZSA9IHNyYztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBsaW5lV2lkdGhcbiAgICAgICAgICB9ID0gcmVzb2x2ZVNlcS5iaW5hcnlPcHRpb25zO1xuICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLmNlaWwoc3JjLmxlbmd0aCAvIGxpbmVXaWR0aCk7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXkobik7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG8gPSAwOyBpIDwgbjsgKytpLCBvICs9IGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgbGluZXNbaV0gPSBzcmMuc3Vic3RyKG8sIGxpbmVXaWR0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhbHVlID0gbGluZXMuam9pbih0eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQkxPQ0tfTElURVJBTCA/IFwiXFxuXCIgOiBcIiBcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc29sdmVTZXEuc3RyaW5naWZ5U3RyaW5nKHtcbiAgICAgICAgICBjb21tZW50LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIHBhcnNlUGFpcnMoZG9jLCBjc3QpIHtcbiAgICAgIGNvbnN0IHNlcSA9IHJlc29sdmVTZXEucmVzb2x2ZVNlcShkb2MsIGNzdCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcS5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBsZXQgaXRlbSA9IHNlcS5pdGVtc1tpXTtcbiAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiByZXNvbHZlU2VxLlBhaXIpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiByZXNvbHZlU2VxLllBTUxNYXApIHtcbiAgICAgICAgICBpZiAoaXRlbS5pdGVtcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBcIkVhY2ggcGFpciBtdXN0IGhhdmUgaXRzIG93biBzZXF1ZW5jZSBpbmRpY2F0b3JcIjtcbiAgICAgICAgICAgIHRocm93IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGNzdCwgbXNnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcGFpciA9IGl0ZW0uaXRlbXNbMF0gfHwgbmV3IHJlc29sdmVTZXEuUGFpcigpO1xuICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnRCZWZvcmUpXG4gICAgICAgICAgICBwYWlyLmNvbW1lbnRCZWZvcmUgPSBwYWlyLmNvbW1lbnRCZWZvcmUgPyBgJHtpdGVtLmNvbW1lbnRCZWZvcmV9XG4ke3BhaXIuY29tbWVudEJlZm9yZX1gIDogaXRlbS5jb21tZW50QmVmb3JlO1xuICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnQpXG4gICAgICAgICAgICBwYWlyLmNvbW1lbnQgPSBwYWlyLmNvbW1lbnQgPyBgJHtpdGVtLmNvbW1lbnR9XG4ke3BhaXIuY29tbWVudH1gIDogaXRlbS5jb21tZW50O1xuICAgICAgICAgIGl0ZW0gPSBwYWlyO1xuICAgICAgICB9XG4gICAgICAgIHNlcS5pdGVtc1tpXSA9IGl0ZW0gaW5zdGFuY2VvZiByZXNvbHZlU2VxLlBhaXIgPyBpdGVtIDogbmV3IHJlc29sdmVTZXEuUGFpcihpdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhaXJzKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgICAgY29uc3QgcGFpcnMyID0gbmV3IHJlc29sdmVTZXEuWUFNTFNlcShzY2hlbWEpO1xuICAgICAgcGFpcnMyLnRhZyA9IFwidGFnOnlhbWwub3JnLDIwMDI6cGFpcnNcIjtcbiAgICAgIGZvciAoY29uc3QgaXQgb2YgaXRlcmFibGUpIHtcbiAgICAgICAgbGV0IGtleSwgdmFsdWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0KSkge1xuICAgICAgICAgIGlmIChpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGtleSA9IGl0WzBdO1xuICAgICAgICAgICAgdmFsdWUgPSBpdFsxXTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIFtrZXksIHZhbHVlXSB0dXBsZTogJHtpdH1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdCAmJiBpdCBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpdCk7XG4gICAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXlzWzBdO1xuICAgICAgICAgICAgdmFsdWUgPSBpdFtrZXldO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgeyBrZXk6IHZhbHVlIH0gdHVwbGU6ICR7aXR9YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5ID0gaXQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFpciA9IHNjaGVtYS5jcmVhdGVQYWlyKGtleSwgdmFsdWUsIGN0eCk7XG4gICAgICAgIHBhaXJzMi5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhaXJzMjtcbiAgICB9XG4gICAgdmFyIHBhaXJzID0ge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6cGFpcnNcIixcbiAgICAgIHJlc29sdmU6IHBhcnNlUGFpcnMsXG4gICAgICBjcmVhdGVOb2RlOiBjcmVhdGVQYWlyc1xuICAgIH07XG4gICAgdmFyIFlBTUxPTWFwID0gY2xhc3MgZXh0ZW5kcyByZXNvbHZlU2VxLllBTUxTZXEge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIFBsYWluVmFsdWUuX2RlZmluZVByb3BlcnR5KHRoaXMsIFwiYWRkXCIsIHJlc29sdmVTZXEuWUFNTE1hcC5wcm90b3R5cGUuYWRkLmJpbmQodGhpcykpO1xuICAgICAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImRlbGV0ZVwiLCByZXNvbHZlU2VxLllBTUxNYXAucHJvdG90eXBlLmRlbGV0ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgUGxhaW5WYWx1ZS5fZGVmaW5lUHJvcGVydHkodGhpcywgXCJnZXRcIiwgcmVzb2x2ZVNlcS5ZQU1MTWFwLnByb3RvdHlwZS5nZXQuYmluZCh0aGlzKSk7XG4gICAgICAgIFBsYWluVmFsdWUuX2RlZmluZVByb3BlcnR5KHRoaXMsIFwiaGFzXCIsIHJlc29sdmVTZXEuWUFNTE1hcC5wcm90b3R5cGUuaGFzLmJpbmQodGhpcykpO1xuICAgICAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInNldFwiLCByZXNvbHZlU2VxLllBTUxNYXAucHJvdG90eXBlLnNldC5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy50YWcgPSBZQU1MT01hcC50YWc7XG4gICAgICB9XG4gICAgICB0b0pTT04oXywgY3R4KSB7XG4gICAgICAgIGNvbnN0IG1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICAgIGlmIChjdHggJiYgY3R4Lm9uQ3JlYXRlKVxuICAgICAgICAgIGN0eC5vbkNyZWF0ZShtYXApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgdGhpcy5pdGVtcykge1xuICAgICAgICAgIGxldCBrZXksIHZhbHVlO1xuICAgICAgICAgIGlmIChwYWlyIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5QYWlyKSB7XG4gICAgICAgICAgICBrZXkgPSByZXNvbHZlU2VxLnRvSlNPTihwYWlyLmtleSwgXCJcIiwgY3R4KTtcbiAgICAgICAgICAgIHZhbHVlID0gcmVzb2x2ZVNlcS50b0pTT04ocGFpci52YWx1ZSwga2V5LCBjdHgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXkgPSByZXNvbHZlU2VxLnRvSlNPTihwYWlyLCBcIlwiLCBjdHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWFwLmhhcyhrZXkpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT3JkZXJlZCBtYXBzIG11c3Qgbm90IGluY2x1ZGUgZHVwbGljYXRlIGtleXNcIik7XG4gICAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgfVxuICAgIH07XG4gICAgUGxhaW5WYWx1ZS5fZGVmaW5lUHJvcGVydHkoWUFNTE9NYXAsIFwidGFnXCIsIFwidGFnOnlhbWwub3JnLDIwMDI6b21hcFwiKTtcbiAgICBmdW5jdGlvbiBwYXJzZU9NYXAoZG9jLCBjc3QpIHtcbiAgICAgIGNvbnN0IHBhaXJzMiA9IHBhcnNlUGFpcnMoZG9jLCBjc3QpO1xuICAgICAgY29uc3Qgc2VlbktleXMgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qge1xuICAgICAgICBrZXlcbiAgICAgIH0gb2YgcGFpcnMyLml0ZW1zKSB7XG4gICAgICAgIGlmIChrZXkgaW5zdGFuY2VvZiByZXNvbHZlU2VxLlNjYWxhcikge1xuICAgICAgICAgIGlmIChzZWVuS2V5cy5pbmNsdWRlcyhrZXkudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBcIk9yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzXCI7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGxhaW5WYWx1ZS5ZQU1MU2VtYW50aWNFcnJvcihjc3QsIG1zZyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlZW5LZXlzLnB1c2goa2V5LnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBZQU1MT01hcCgpLCBwYWlyczIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVPTWFwKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgICAgY29uc3QgcGFpcnMyID0gY3JlYXRlUGFpcnMoc2NoZW1hLCBpdGVyYWJsZSwgY3R4KTtcbiAgICAgIGNvbnN0IG9tYXAyID0gbmV3IFlBTUxPTWFwKCk7XG4gICAgICBvbWFwMi5pdGVtcyA9IHBhaXJzMi5pdGVtcztcbiAgICAgIHJldHVybiBvbWFwMjtcbiAgICB9XG4gICAgdmFyIG9tYXAgPSB7XG4gICAgICBpZGVudGlmeTogKHZhbHVlKSA9PiB2YWx1ZSBpbnN0YW5jZW9mIE1hcCxcbiAgICAgIG5vZGVDbGFzczogWUFNTE9NYXAsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwXCIsXG4gICAgICByZXNvbHZlOiBwYXJzZU9NYXAsXG4gICAgICBjcmVhdGVOb2RlOiBjcmVhdGVPTWFwXG4gICAgfTtcbiAgICB2YXIgWUFNTFNldCA9IGNsYXNzIGV4dGVuZHMgcmVzb2x2ZVNlcS5ZQU1MTWFwIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IFlBTUxTZXQudGFnO1xuICAgICAgfVxuICAgICAgYWRkKGtleSkge1xuICAgICAgICBjb25zdCBwYWlyID0ga2V5IGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5QYWlyID8ga2V5IDogbmV3IHJlc29sdmVTZXEuUGFpcihrZXkpO1xuICAgICAgICBjb25zdCBwcmV2ID0gcmVzb2x2ZVNlcS5maW5kUGFpcih0aGlzLml0ZW1zLCBwYWlyLmtleSk7XG4gICAgICAgIGlmICghcHJldilcbiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2gocGFpcik7XG4gICAgICB9XG4gICAgICBnZXQoa2V5LCBrZWVwUGFpcikge1xuICAgICAgICBjb25zdCBwYWlyID0gcmVzb2x2ZVNlcS5maW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICByZXR1cm4gIWtlZXBQYWlyICYmIHBhaXIgaW5zdGFuY2VvZiByZXNvbHZlU2VxLlBhaXIgPyBwYWlyLmtleSBpbnN0YW5jZW9mIHJlc29sdmVTZXEuU2NhbGFyID8gcGFpci5rZXkudmFsdWUgOiBwYWlyLmtleSA6IHBhaXI7XG4gICAgICB9XG4gICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImJvb2xlYW5cIilcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJvb2xlYW4gdmFsdWUgZm9yIHNldChrZXksIHZhbHVlKSBpbiBhIFlBTUwgc2V0LCBub3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICAgIGNvbnN0IHByZXYgPSByZXNvbHZlU2VxLmZpbmRQYWlyKHRoaXMuaXRlbXMsIGtleSk7XG4gICAgICAgIGlmIChwcmV2ICYmICF2YWx1ZSkge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihwcmV2KSwgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXByZXYgJiYgdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2gobmV3IHJlc29sdmVTZXEuUGFpcihrZXkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICByZXR1cm4gc3VwZXIudG9KU09OKF8sIGN0eCwgU2V0KTtcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLmhhc0FsbE51bGxWYWx1ZXMoKSlcbiAgICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgUGxhaW5WYWx1ZS5fZGVmaW5lUHJvcGVydHkoWUFNTFNldCwgXCJ0YWdcIiwgXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXRcIik7XG4gICAgZnVuY3Rpb24gcGFyc2VTZXQoZG9jLCBjc3QpIHtcbiAgICAgIGNvbnN0IG1hcCA9IHJlc29sdmVTZXEucmVzb2x2ZU1hcChkb2MsIGNzdCk7XG4gICAgICBpZiAoIW1hcC5oYXNBbGxOdWxsVmFsdWVzKCkpXG4gICAgICAgIHRocm93IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGNzdCwgXCJTZXQgaXRlbXMgbXVzdCBhbGwgaGF2ZSBudWxsIHZhbHVlc1wiKTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBZQU1MU2V0KCksIG1hcCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVNldChzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpIHtcbiAgICAgIGNvbnN0IHNldDIgPSBuZXcgWUFNTFNldCgpO1xuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBpdGVyYWJsZSlcbiAgICAgICAgc2V0Mi5pdGVtcy5wdXNoKHNjaGVtYS5jcmVhdGVQYWlyKHZhbHVlLCBudWxsLCBjdHgpKTtcbiAgICAgIHJldHVybiBzZXQyO1xuICAgIH1cbiAgICB2YXIgc2V0ID0ge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdmFsdWUgaW5zdGFuY2VvZiBTZXQsXG4gICAgICBub2RlQ2xhc3M6IFlBTUxTZXQsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXRcIixcbiAgICAgIHJlc29sdmU6IHBhcnNlU2V0LFxuICAgICAgY3JlYXRlTm9kZTogY3JlYXRlU2V0XG4gICAgfTtcbiAgICB2YXIgcGFyc2VTZXhhZ2VzaW1hbCA9IChzaWduLCBwYXJ0cykgPT4ge1xuICAgICAgY29uc3QgbiA9IHBhcnRzLnNwbGl0KFwiOlwiKS5yZWR1Y2UoKG4yLCBwKSA9PiBuMiAqIDYwICsgTnVtYmVyKHApLCAwKTtcbiAgICAgIHJldHVybiBzaWduID09PSBcIi1cIiA/IC1uIDogbjtcbiAgICB9O1xuICAgIHZhciBzdHJpbmdpZnlTZXhhZ2VzaW1hbCA9ICh7XG4gICAgICB2YWx1ZVxuICAgIH0pID0+IHtcbiAgICAgIGlmIChpc05hTih2YWx1ZSkgfHwgIWlzRmluaXRlKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHJlc29sdmVTZXEuc3RyaW5naWZ5TnVtYmVyKHZhbHVlKTtcbiAgICAgIGxldCBzaWduID0gXCJcIjtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgc2lnbiA9IFwiLVwiO1xuICAgICAgICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnRzID0gW3ZhbHVlICUgNjBdO1xuICAgICAgaWYgKHZhbHVlIDwgNjApIHtcbiAgICAgICAgcGFydHMudW5zaGlmdCgwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCgodmFsdWUgLSBwYXJ0c1swXSkgLyA2MCk7XG4gICAgICAgIHBhcnRzLnVuc2hpZnQodmFsdWUgJSA2MCk7XG4gICAgICAgIGlmICh2YWx1ZSA+PSA2MCkge1xuICAgICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCgodmFsdWUgLSBwYXJ0c1swXSkgLyA2MCk7XG4gICAgICAgICAgcGFydHMudW5zaGlmdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzaWduICsgcGFydHMubWFwKChuKSA9PiBuIDwgMTAgPyBcIjBcIiArIFN0cmluZyhuKSA6IFN0cmluZyhuKSkuam9pbihcIjpcIikucmVwbGFjZSgvMDAwMDAwXFxkKiQvLCBcIlwiKTtcbiAgICB9O1xuICAgIHZhciBpbnRUaW1lID0ge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcIixcbiAgICAgIGZvcm1hdDogXCJUSU1FXCIsXG4gICAgICB0ZXN0OiAvXihbLStdPykoWzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKSspJC8sXG4gICAgICByZXNvbHZlOiAoc3RyLCBzaWduLCBwYXJ0cykgPT4gcGFyc2VTZXhhZ2VzaW1hbChzaWduLCBwYXJ0cy5yZXBsYWNlKC9fL2csIFwiXCIpKSxcbiAgICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5U2V4YWdlc2ltYWxcbiAgICB9O1xuICAgIHZhciBmbG9hdFRpbWUgPSB7XG4gICAgICBpZGVudGlmeTogKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsXG4gICAgICBmb3JtYXQ6IFwiVElNRVwiLFxuICAgICAgdGVzdDogL14oWy0rXT8pKFswLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFwuWzAtOV9dKikkLyxcbiAgICAgIHJlc29sdmU6IChzdHIsIHNpZ24sIHBhcnRzKSA9PiBwYXJzZVNleGFnZXNpbWFsKHNpZ24sIHBhcnRzLnJlcGxhY2UoL18vZywgXCJcIikpLFxuICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlTZXhhZ2VzaW1hbFxuICAgIH07XG4gICAgdmFyIHRpbWVzdGFtcCA9IHtcbiAgICAgIGlkZW50aWZ5OiAodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wXCIsXG4gICAgICB0ZXN0OiBSZWdFeHAoXCJeKD86KFswLTldezR9KS0oWzAtOV17MSwyfSktKFswLTldezEsMn0pKD86KD86dHxUfFsgXFxcXHRdKykoWzAtOV17MSwyfSk6KFswLTldezEsMn0pOihbMC05XXsxLDJ9KFxcXFwuWzAtOV0rKT8pKD86WyBcXFxcdF0qKFp8Wy0rXVswMTJdP1swLTldKD86OlswLTldezJ9KT8pKT8pPykkXCIpLFxuICAgICAgcmVzb2x2ZTogKHN0ciwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2VjLCB0eikgPT4ge1xuICAgICAgICBpZiAobWlsbGlzZWMpXG4gICAgICAgICAgbWlsbGlzZWMgPSAobWlsbGlzZWMgKyBcIjAwXCIpLnN1YnN0cigxLCAzKTtcbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlLlVUQyh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciB8fCAwLCBtaW51dGUgfHwgMCwgc2Vjb25kIHx8IDAsIG1pbGxpc2VjIHx8IDApO1xuICAgICAgICBpZiAodHogJiYgdHogIT09IFwiWlwiKSB7XG4gICAgICAgICAgbGV0IGQgPSBwYXJzZVNleGFnZXNpbWFsKHR6WzBdLCB0ei5zbGljZSgxKSk7XG4gICAgICAgICAgaWYgKE1hdGguYWJzKGQpIDwgMzApXG4gICAgICAgICAgICBkICo9IDYwO1xuICAgICAgICAgIGRhdGUgLT0gNmU0ICogZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSk7XG4gICAgICB9LFxuICAgICAgc3RyaW5naWZ5OiAoe1xuICAgICAgICB2YWx1ZVxuICAgICAgfSkgPT4gdmFsdWUudG9JU09TdHJpbmcoKS5yZXBsYWNlKC8oKFQwMDowMCk/OjAwKT9cXC4wMDBaJC8sIFwiXCIpXG4gICAgfTtcbiAgICBmdW5jdGlvbiBzaG91bGRXYXJuKGRlcHJlY2F0aW9uKSB7XG4gICAgICBjb25zdCBlbnYgPSB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzLmVudiB8fCB7fTtcbiAgICAgIGlmIChkZXByZWNhdGlvbikge1xuICAgICAgICBpZiAodHlwZW9mIFlBTUxfU0lMRU5DRV9ERVBSRUNBVElPTl9XQVJOSU5HUyAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICByZXR1cm4gIVlBTUxfU0lMRU5DRV9ERVBSRUNBVElPTl9XQVJOSU5HUztcbiAgICAgICAgcmV0dXJuICFlbnYuWUFNTF9TSUxFTkNFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBZQU1MX1NJTEVOQ0VfV0FSTklOR1MgIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgIHJldHVybiAhWUFNTF9TSUxFTkNFX1dBUk5JTkdTO1xuICAgICAgcmV0dXJuICFlbnYuWUFNTF9TSUxFTkNFX1dBUk5JTkdTO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3YXJuKHdhcm5pbmcsIHR5cGUpIHtcbiAgICAgIGlmIChzaG91bGRXYXJuKGZhbHNlKSkge1xuICAgICAgICBjb25zdCBlbWl0ID0gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbWl0V2FybmluZztcbiAgICAgICAgaWYgKGVtaXQpXG4gICAgICAgICAgZW1pdCh3YXJuaW5nLCB0eXBlKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKHR5cGUgPyBgJHt0eXBlfTogJHt3YXJuaW5nfWAgOiB3YXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB3YXJuRmlsZURlcHJlY2F0aW9uKGZpbGVuYW1lKSB7XG4gICAgICBpZiAoc2hvdWxkV2Fybih0cnVlKSkge1xuICAgICAgICBjb25zdCBwYXRoID0gZmlsZW5hbWUucmVwbGFjZSgvLip5YW1sWy9cXFxcXS9pLCBcIlwiKS5yZXBsYWNlKC9cXC5qcyQvLCBcIlwiKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgICAgICAgd2FybihgVGhlIGVuZHBvaW50ICd5YW1sLyR7cGF0aH0nIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLmAsIFwiRGVwcmVjYXRpb25XYXJuaW5nXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgd2FybmVkID0ge307XG4gICAgZnVuY3Rpb24gd2Fybk9wdGlvbkRlcHJlY2F0aW9uKG5hbWUsIGFsdGVybmF0aXZlKSB7XG4gICAgICBpZiAoIXdhcm5lZFtuYW1lXSAmJiBzaG91bGRXYXJuKHRydWUpKSB7XG4gICAgICAgIHdhcm5lZFtuYW1lXSA9IHRydWU7XG4gICAgICAgIGxldCBtc2cgPSBgVGhlIG9wdGlvbiAnJHtuYW1lfScgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2VgO1xuICAgICAgICBtc2cgKz0gYWx0ZXJuYXRpdmUgPyBgLCB1c2UgJyR7YWx0ZXJuYXRpdmV9JyBpbnN0ZWFkLmAgOiBcIi5cIjtcbiAgICAgICAgd2Fybihtc2csIFwiRGVwcmVjYXRpb25XYXJuaW5nXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBleHBvcnRzMi5iaW5hcnkgPSBiaW5hcnk7XG4gICAgZXhwb3J0czIuZmxvYXRUaW1lID0gZmxvYXRUaW1lO1xuICAgIGV4cG9ydHMyLmludFRpbWUgPSBpbnRUaW1lO1xuICAgIGV4cG9ydHMyLm9tYXAgPSBvbWFwO1xuICAgIGV4cG9ydHMyLnBhaXJzID0gcGFpcnM7XG4gICAgZXhwb3J0czIuc2V0ID0gc2V0O1xuICAgIGV4cG9ydHMyLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcbiAgICBleHBvcnRzMi53YXJuID0gd2FybjtcbiAgICBleHBvcnRzMi53YXJuRmlsZURlcHJlY2F0aW9uID0gd2FybkZpbGVEZXByZWNhdGlvbjtcbiAgICBleHBvcnRzMi53YXJuT3B0aW9uRGVwcmVjYXRpb24gPSB3YXJuT3B0aW9uRGVwcmVjYXRpb247XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfU2NoZW1hXzg4ZTMyM2E3ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9TY2hlbWEtODhlMzIzYTcuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBQbGFpblZhbHVlID0gcmVxdWlyZV9QbGFpblZhbHVlX2VjOGU1ODhlKCk7XG4gICAgdmFyIHJlc29sdmVTZXEgPSByZXF1aXJlX3Jlc29sdmVTZXFfZDAzY2IwMzcoKTtcbiAgICB2YXIgd2FybmluZ3MgPSByZXF1aXJlX3dhcm5pbmdzXzEwMDBhMzcyKCk7XG4gICAgZnVuY3Rpb24gY3JlYXRlTWFwKHNjaGVtYSwgb2JqLCBjdHgpIHtcbiAgICAgIGNvbnN0IG1hcDIgPSBuZXcgcmVzb2x2ZVNlcS5ZQU1MTWFwKHNjaGVtYSk7XG4gICAgICBpZiAob2JqIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIG9iailcbiAgICAgICAgICBtYXAyLml0ZW1zLnB1c2goc2NoZW1hLmNyZWF0ZVBhaXIoa2V5LCB2YWx1ZSwgY3R4KSk7XG4gICAgICB9IGVsc2UgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iaikpXG4gICAgICAgICAgbWFwMi5pdGVtcy5wdXNoKHNjaGVtYS5jcmVhdGVQYWlyKGtleSwgb2JqW2tleV0sIGN0eCkpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuc29ydE1hcEVudHJpZXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBtYXAyLml0ZW1zLnNvcnQoc2NoZW1hLnNvcnRNYXBFbnRyaWVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXAyO1xuICAgIH1cbiAgICB2YXIgbWFwID0ge1xuICAgICAgY3JlYXRlTm9kZTogY3JlYXRlTWFwLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIG5vZGVDbGFzczogcmVzb2x2ZVNlcS5ZQU1MTWFwLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOm1hcFwiLFxuICAgICAgcmVzb2x2ZTogcmVzb2x2ZVNlcS5yZXNvbHZlTWFwXG4gICAgfTtcbiAgICBmdW5jdGlvbiBjcmVhdGVTZXEoc2NoZW1hLCBvYmosIGN0eCkge1xuICAgICAgY29uc3Qgc2VxMiA9IG5ldyByZXNvbHZlU2VxLllBTUxTZXEoc2NoZW1hKTtcbiAgICAgIGlmIChvYmogJiYgb2JqW1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgICAgZm9yIChjb25zdCBpdCBvZiBvYmopIHtcbiAgICAgICAgICBjb25zdCB2ID0gc2NoZW1hLmNyZWF0ZU5vZGUoaXQsIGN0eC53cmFwU2NhbGFycywgbnVsbCwgY3R4KTtcbiAgICAgICAgICBzZXEyLml0ZW1zLnB1c2godik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXEyO1xuICAgIH1cbiAgICB2YXIgc2VxID0ge1xuICAgICAgY3JlYXRlTm9kZTogY3JlYXRlU2VxLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIG5vZGVDbGFzczogcmVzb2x2ZVNlcS5ZQU1MU2VxLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOnNlcVwiLFxuICAgICAgcmVzb2x2ZTogcmVzb2x2ZVNlcS5yZXNvbHZlU2VxXG4gICAgfTtcbiAgICB2YXIgc3RyaW5nID0ge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpzdHJcIixcbiAgICAgIHJlc29sdmU6IHJlc29sdmVTZXEucmVzb2x2ZVN0cmluZyxcbiAgICAgIHN0cmluZ2lmeShpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgICAgY3R4ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgYWN0dWFsU3RyaW5nOiB0cnVlXG4gICAgICAgIH0sIGN0eCk7XG4gICAgICAgIHJldHVybiByZXNvbHZlU2VxLnN0cmluZ2lmeVN0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHJlc29sdmVTZXEuc3RyT3B0aW9uc1xuICAgIH07XG4gICAgdmFyIGZhaWxzYWZlID0gW21hcCwgc2VxLCBzdHJpbmddO1xuICAgIHZhciBpbnRJZGVudGlmeSQyID0gKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG4gICAgdmFyIGludFJlc29sdmUkMSA9IChzcmMsIHBhcnQsIHJhZGl4KSA9PiByZXNvbHZlU2VxLmludE9wdGlvbnMuYXNCaWdJbnQgPyBCaWdJbnQoc3JjKSA6IHBhcnNlSW50KHBhcnQsIHJhZGl4KTtcbiAgICBmdW5jdGlvbiBpbnRTdHJpbmdpZnkkMShub2RlLCByYWRpeCwgcHJlZml4KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlXG4gICAgICB9ID0gbm9kZTtcbiAgICAgIGlmIChpbnRJZGVudGlmeSQyKHZhbHVlKSAmJiB2YWx1ZSA+PSAwKVxuICAgICAgICByZXR1cm4gcHJlZml4ICsgdmFsdWUudG9TdHJpbmcocmFkaXgpO1xuICAgICAgcmV0dXJuIHJlc29sdmVTZXEuc3RyaW5naWZ5TnVtYmVyKG5vZGUpO1xuICAgIH1cbiAgICB2YXIgbnVsbE9iaiA9IHtcbiAgICAgIGlkZW50aWZ5OiAodmFsdWUpID0+IHZhbHVlID09IG51bGwsXG4gICAgICBjcmVhdGVOb2RlOiAoc2NoZW1hLCB2YWx1ZSwgY3R4KSA9PiBjdHgud3JhcFNjYWxhcnMgPyBuZXcgcmVzb2x2ZVNlcS5TY2FsYXIobnVsbCkgOiBudWxsLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpudWxsXCIsXG4gICAgICB0ZXN0OiAvXig/On58W05uXXVsbHxOVUxMKT8kLyxcbiAgICAgIHJlc29sdmU6ICgpID0+IG51bGwsXG4gICAgICBvcHRpb25zOiByZXNvbHZlU2VxLm51bGxPcHRpb25zLFxuICAgICAgc3RyaW5naWZ5OiAoKSA9PiByZXNvbHZlU2VxLm51bGxPcHRpb25zLm51bGxTdHJcbiAgICB9O1xuICAgIHZhciBib29sT2JqID0ge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6Ym9vbFwiLFxuICAgICAgdGVzdDogL14oPzpbVHRdcnVlfFRSVUV8W0ZmXWFsc2V8RkFMU0UpJC8sXG4gICAgICByZXNvbHZlOiAoc3RyKSA9PiBzdHJbMF0gPT09IFwidFwiIHx8IHN0clswXSA9PT0gXCJUXCIsXG4gICAgICBvcHRpb25zOiByZXNvbHZlU2VxLmJvb2xPcHRpb25zLFxuICAgICAgc3RyaW5naWZ5OiAoe1xuICAgICAgICB2YWx1ZVxuICAgICAgfSkgPT4gdmFsdWUgPyByZXNvbHZlU2VxLmJvb2xPcHRpb25zLnRydWVTdHIgOiByZXNvbHZlU2VxLmJvb2xPcHRpb25zLmZhbHNlU3RyXG4gICAgfTtcbiAgICB2YXIgb2N0T2JqID0ge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gaW50SWRlbnRpZnkkMih2YWx1ZSkgJiYgdmFsdWUgPj0gMCxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsXG4gICAgICBmb3JtYXQ6IFwiT0NUXCIsXG4gICAgICB0ZXN0OiAvXjBvKFswLTddKykkLyxcbiAgICAgIHJlc29sdmU6IChzdHIsIG9jdCkgPT4gaW50UmVzb2x2ZSQxKHN0ciwgb2N0LCA4KSxcbiAgICAgIG9wdGlvbnM6IHJlc29sdmVTZXEuaW50T3B0aW9ucyxcbiAgICAgIHN0cmluZ2lmeTogKG5vZGUpID0+IGludFN0cmluZ2lmeSQxKG5vZGUsIDgsIFwiMG9cIilcbiAgICB9O1xuICAgIHZhciBpbnRPYmogPSB7XG4gICAgICBpZGVudGlmeTogaW50SWRlbnRpZnkkMixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsXG4gICAgICB0ZXN0OiAvXlstK10/WzAtOV0rJC8sXG4gICAgICByZXNvbHZlOiAoc3RyKSA9PiBpbnRSZXNvbHZlJDEoc3RyLCBzdHIsIDEwKSxcbiAgICAgIG9wdGlvbnM6IHJlc29sdmVTZXEuaW50T3B0aW9ucyxcbiAgICAgIHN0cmluZ2lmeTogcmVzb2x2ZVNlcS5zdHJpbmdpZnlOdW1iZXJcbiAgICB9O1xuICAgIHZhciBoZXhPYmogPSB7XG4gICAgICBpZGVudGlmeTogKHZhbHVlKSA9PiBpbnRJZGVudGlmeSQyKHZhbHVlKSAmJiB2YWx1ZSA+PSAwLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcIixcbiAgICAgIGZvcm1hdDogXCJIRVhcIixcbiAgICAgIHRlc3Q6IC9eMHgoWzAtOWEtZkEtRl0rKSQvLFxuICAgICAgcmVzb2x2ZTogKHN0ciwgaGV4KSA9PiBpbnRSZXNvbHZlJDEoc3RyLCBoZXgsIDE2KSxcbiAgICAgIG9wdGlvbnM6IHJlc29sdmVTZXEuaW50T3B0aW9ucyxcbiAgICAgIHN0cmluZ2lmeTogKG5vZGUpID0+IGludFN0cmluZ2lmeSQxKG5vZGUsIDE2LCBcIjB4XCIpXG4gICAgfTtcbiAgICB2YXIgbmFuT2JqID0ge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLFxuICAgICAgdGVzdDogL14oPzpbLStdP1xcLmluZnwoXFwubmFuKSkkL2ksXG4gICAgICByZXNvbHZlOiAoc3RyLCBuYW4pID0+IG5hbiA/IE5hTiA6IHN0clswXSA9PT0gXCItXCIgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgICBzdHJpbmdpZnk6IHJlc29sdmVTZXEuc3RyaW5naWZ5TnVtYmVyXG4gICAgfTtcbiAgICB2YXIgZXhwT2JqID0ge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLFxuICAgICAgZm9ybWF0OiBcIkVYUFwiLFxuICAgICAgdGVzdDogL15bLStdPyg/OlxcLlswLTldK3xbMC05XSsoPzpcXC5bMC05XSopPylbZUVdWy0rXT9bMC05XSskLyxcbiAgICAgIHJlc29sdmU6IChzdHIpID0+IHBhcnNlRmxvYXQoc3RyKSxcbiAgICAgIHN0cmluZ2lmeTogKHtcbiAgICAgICAgdmFsdWVcbiAgICAgIH0pID0+IE51bWJlcih2YWx1ZSkudG9FeHBvbmVudGlhbCgpXG4gICAgfTtcbiAgICB2YXIgZmxvYXRPYmogPSB7XG4gICAgICBpZGVudGlmeTogKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsXG4gICAgICB0ZXN0OiAvXlstK10/KD86XFwuKFswLTldKyl8WzAtOV0rXFwuKFswLTldKikpJC8sXG4gICAgICByZXNvbHZlKHN0ciwgZnJhYzEsIGZyYWMyKSB7XG4gICAgICAgIGNvbnN0IGZyYWMgPSBmcmFjMSB8fCBmcmFjMjtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyByZXNvbHZlU2VxLlNjYWxhcihwYXJzZUZsb2F0KHN0cikpO1xuICAgICAgICBpZiAoZnJhYyAmJiBmcmFjW2ZyYWMubGVuZ3RoIC0gMV0gPT09IFwiMFwiKVxuICAgICAgICAgIG5vZGUubWluRnJhY3Rpb25EaWdpdHMgPSBmcmFjLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9LFxuICAgICAgc3RyaW5naWZ5OiByZXNvbHZlU2VxLnN0cmluZ2lmeU51bWJlclxuICAgIH07XG4gICAgdmFyIGNvcmUgPSBmYWlsc2FmZS5jb25jYXQoW251bGxPYmosIGJvb2xPYmosIG9jdE9iaiwgaW50T2JqLCBoZXhPYmosIG5hbk9iaiwgZXhwT2JqLCBmbG9hdE9ial0pO1xuICAgIHZhciBpbnRJZGVudGlmeSQxID0gKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG4gICAgdmFyIHN0cmluZ2lmeUpTT04gPSAoe1xuICAgICAgdmFsdWVcbiAgICB9KSA9PiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgdmFyIGpzb24gPSBbbWFwLCBzZXEsIHtcbiAgICAgIGlkZW50aWZ5OiAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXCIsXG4gICAgICByZXNvbHZlOiByZXNvbHZlU2VxLnJlc29sdmVTdHJpbmcsXG4gICAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeUpTT05cbiAgICB9LCB7XG4gICAgICBpZGVudGlmeTogKHZhbHVlKSA9PiB2YWx1ZSA9PSBudWxsLFxuICAgICAgY3JlYXRlTm9kZTogKHNjaGVtYSwgdmFsdWUsIGN0eCkgPT4gY3R4LndyYXBTY2FsYXJzID8gbmV3IHJlc29sdmVTZXEuU2NhbGFyKG51bGwpIDogbnVsbCxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6bnVsbFwiLFxuICAgICAgdGVzdDogL15udWxsJC8sXG4gICAgICByZXNvbHZlOiAoKSA9PiBudWxsLFxuICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlKU09OXG4gICAgfSwge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6Ym9vbFwiLFxuICAgICAgdGVzdDogL150cnVlfGZhbHNlJC8sXG4gICAgICByZXNvbHZlOiAoc3RyKSA9PiBzdHIgPT09IFwidHJ1ZVwiLFxuICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlKU09OXG4gICAgfSwge1xuICAgICAgaWRlbnRpZnk6IGludElkZW50aWZ5JDEsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLFxuICAgICAgdGVzdDogL14tPyg/OjB8WzEtOV1bMC05XSopJC8sXG4gICAgICByZXNvbHZlOiAoc3RyKSA9PiByZXNvbHZlU2VxLmludE9wdGlvbnMuYXNCaWdJbnQgPyBCaWdJbnQoc3RyKSA6IHBhcnNlSW50KHN0ciwgMTApLFxuICAgICAgc3RyaW5naWZ5OiAoe1xuICAgICAgICB2YWx1ZVxuICAgICAgfSkgPT4gaW50SWRlbnRpZnkkMSh2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZygpIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgfSwge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLFxuICAgICAgdGVzdDogL14tPyg/OjB8WzEtOV1bMC05XSopKD86XFwuWzAtOV0qKT8oPzpbZUVdWy0rXT9bMC05XSspPyQvLFxuICAgICAgcmVzb2x2ZTogKHN0cikgPT4gcGFyc2VGbG9hdChzdHIpLFxuICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlKU09OXG4gICAgfV07XG4gICAganNvbi5zY2FsYXJGYWxsYmFjayA9IChzdHIpID0+IHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgVW5yZXNvbHZlZCBwbGFpbiBzY2FsYXIgJHtKU09OLnN0cmluZ2lmeShzdHIpfWApO1xuICAgIH07XG4gICAgdmFyIGJvb2xTdHJpbmdpZnkgPSAoe1xuICAgICAgdmFsdWVcbiAgICB9KSA9PiB2YWx1ZSA/IHJlc29sdmVTZXEuYm9vbE9wdGlvbnMudHJ1ZVN0ciA6IHJlc29sdmVTZXEuYm9vbE9wdGlvbnMuZmFsc2VTdHI7XG4gICAgdmFyIGludElkZW50aWZ5ID0gKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG4gICAgZnVuY3Rpb24gaW50UmVzb2x2ZShzaWduLCBzcmMsIHJhZGl4KSB7XG4gICAgICBsZXQgc3RyID0gc3JjLnJlcGxhY2UoL18vZywgXCJcIik7XG4gICAgICBpZiAocmVzb2x2ZVNlcS5pbnRPcHRpb25zLmFzQmlnSW50KSB7XG4gICAgICAgIHN3aXRjaCAocmFkaXgpIHtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBzdHIgPSBgMGIke3N0cn1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgc3RyID0gYDBvJHtzdHJ9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICBzdHIgPSBgMHgke3N0cn1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbjIgPSBCaWdJbnQoc3RyKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gPT09IFwiLVwiID8gQmlnSW50KC0xKSAqIG4yIDogbjI7XG4gICAgICB9XG4gICAgICBjb25zdCBuID0gcGFyc2VJbnQoc3RyLCByYWRpeCk7XG4gICAgICByZXR1cm4gc2lnbiA9PT0gXCItXCIgPyAtMSAqIG4gOiBuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpbnRTdHJpbmdpZnkobm9kZSwgcmFkaXgsIHByZWZpeCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB2YWx1ZVxuICAgICAgfSA9IG5vZGU7XG4gICAgICBpZiAoaW50SWRlbnRpZnkodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKHJhZGl4KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/IFwiLVwiICsgcHJlZml4ICsgc3RyLnN1YnN0cigxKSA6IHByZWZpeCArIHN0cjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlU2VxLnN0cmluZ2lmeU51bWJlcihub2RlKTtcbiAgICB9XG4gICAgdmFyIHlhbWwxMSA9IGZhaWxzYWZlLmNvbmNhdChbe1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdmFsdWUgPT0gbnVsbCxcbiAgICAgIGNyZWF0ZU5vZGU6IChzY2hlbWEsIHZhbHVlLCBjdHgpID0+IGN0eC53cmFwU2NhbGFycyA/IG5ldyByZXNvbHZlU2VxLlNjYWxhcihudWxsKSA6IG51bGwsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOm51bGxcIixcbiAgICAgIHRlc3Q6IC9eKD86fnxbTm5ddWxsfE5VTEwpPyQvLFxuICAgICAgcmVzb2x2ZTogKCkgPT4gbnVsbCxcbiAgICAgIG9wdGlvbnM6IHJlc29sdmVTZXEubnVsbE9wdGlvbnMsXG4gICAgICBzdHJpbmdpZnk6ICgpID0+IHJlc29sdmVTZXEubnVsbE9wdGlvbnMubnVsbFN0clxuICAgIH0sIHtcbiAgICAgIGlkZW50aWZ5OiAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmJvb2xcIixcbiAgICAgIHRlc3Q6IC9eKD86WXx5fFtZeV1lc3xZRVN8W1R0XXJ1ZXxUUlVFfFtPb11ufE9OKSQvLFxuICAgICAgcmVzb2x2ZTogKCkgPT4gdHJ1ZSxcbiAgICAgIG9wdGlvbnM6IHJlc29sdmVTZXEuYm9vbE9wdGlvbnMsXG4gICAgICBzdHJpbmdpZnk6IGJvb2xTdHJpbmdpZnlcbiAgICB9LCB7XG4gICAgICBpZGVudGlmeTogKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpib29sXCIsXG4gICAgICB0ZXN0OiAvXig/Ok58bnxbTm5db3xOT3xbRmZdYWxzZXxGQUxTRXxbT29dZmZ8T0ZGKSQvaSxcbiAgICAgIHJlc29sdmU6ICgpID0+IGZhbHNlLFxuICAgICAgb3B0aW9uczogcmVzb2x2ZVNlcS5ib29sT3B0aW9ucyxcbiAgICAgIHN0cmluZ2lmeTogYm9vbFN0cmluZ2lmeVxuICAgIH0sIHtcbiAgICAgIGlkZW50aWZ5OiBpbnRJZGVudGlmeSxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsXG4gICAgICBmb3JtYXQ6IFwiQklOXCIsXG4gICAgICB0ZXN0OiAvXihbLStdPykwYihbMC0xX10rKSQvLFxuICAgICAgcmVzb2x2ZTogKHN0ciwgc2lnbiwgYmluKSA9PiBpbnRSZXNvbHZlKHNpZ24sIGJpbiwgMiksXG4gICAgICBzdHJpbmdpZnk6IChub2RlKSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgMiwgXCIwYlwiKVxuICAgIH0sIHtcbiAgICAgIGlkZW50aWZ5OiBpbnRJZGVudGlmeSxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsXG4gICAgICBmb3JtYXQ6IFwiT0NUXCIsXG4gICAgICB0ZXN0OiAvXihbLStdPykwKFswLTdfXSspJC8sXG4gICAgICByZXNvbHZlOiAoc3RyLCBzaWduLCBvY3QpID0+IGludFJlc29sdmUoc2lnbiwgb2N0LCA4KSxcbiAgICAgIHN0cmluZ2lmeTogKG5vZGUpID0+IGludFN0cmluZ2lmeShub2RlLCA4LCBcIjBcIilcbiAgICB9LCB7XG4gICAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLFxuICAgICAgdGVzdDogL14oWy0rXT8pKFswLTldWzAtOV9dKikkLyxcbiAgICAgIHJlc29sdmU6IChzdHIsIHNpZ24sIGFicykgPT4gaW50UmVzb2x2ZShzaWduLCBhYnMsIDEwKSxcbiAgICAgIHN0cmluZ2lmeTogcmVzb2x2ZVNlcS5zdHJpbmdpZnlOdW1iZXJcbiAgICB9LCB7XG4gICAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLFxuICAgICAgZm9ybWF0OiBcIkhFWFwiLFxuICAgICAgdGVzdDogL14oWy0rXT8pMHgoWzAtOWEtZkEtRl9dKykkLyxcbiAgICAgIHJlc29sdmU6IChzdHIsIHNpZ24sIGhleCkgPT4gaW50UmVzb2x2ZShzaWduLCBoZXgsIDE2KSxcbiAgICAgIHN0cmluZ2lmeTogKG5vZGUpID0+IGludFN0cmluZ2lmeShub2RlLCAxNiwgXCIweFwiKVxuICAgIH0sIHtcbiAgICAgIGlkZW50aWZ5OiAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIixcbiAgICAgIHRlc3Q6IC9eKD86Wy0rXT9cXC5pbmZ8KFxcLm5hbikpJC9pLFxuICAgICAgcmVzb2x2ZTogKHN0ciwgbmFuKSA9PiBuYW4gPyBOYU4gOiBzdHJbMF0gPT09IFwiLVwiID8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgICAgc3RyaW5naWZ5OiByZXNvbHZlU2VxLnN0cmluZ2lmeU51bWJlclxuICAgIH0sIHtcbiAgICAgIGlkZW50aWZ5OiAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIixcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIixcbiAgICAgIGZvcm1hdDogXCJFWFBcIixcbiAgICAgIHRlc3Q6IC9eWy0rXT8oWzAtOV1bMC05X10qKT8oXFwuWzAtOV9dKik/W2VFXVstK10/WzAtOV0rJC8sXG4gICAgICByZXNvbHZlOiAoc3RyKSA9PiBwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9fL2csIFwiXCIpKSxcbiAgICAgIHN0cmluZ2lmeTogKHtcbiAgICAgICAgdmFsdWVcbiAgICAgIH0pID0+IE51bWJlcih2YWx1ZSkudG9FeHBvbmVudGlhbCgpXG4gICAgfSwge1xuICAgICAgaWRlbnRpZnk6ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLFxuICAgICAgdGVzdDogL15bLStdPyg/OlswLTldWzAtOV9dKik/XFwuKFswLTlfXSopJC8sXG4gICAgICByZXNvbHZlKHN0ciwgZnJhYykge1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IHJlc29sdmVTZXEuU2NhbGFyKHBhcnNlRmxvYXQoc3RyLnJlcGxhY2UoL18vZywgXCJcIikpKTtcbiAgICAgICAgaWYgKGZyYWMpIHtcbiAgICAgICAgICBjb25zdCBmID0gZnJhYy5yZXBsYWNlKC9fL2csIFwiXCIpO1xuICAgICAgICAgIGlmIChmW2YubGVuZ3RoIC0gMV0gPT09IFwiMFwiKVxuICAgICAgICAgICAgbm9kZS5taW5GcmFjdGlvbkRpZ2l0cyA9IGYubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfSxcbiAgICAgIHN0cmluZ2lmeTogcmVzb2x2ZVNlcS5zdHJpbmdpZnlOdW1iZXJcbiAgICB9XSwgd2FybmluZ3MuYmluYXJ5LCB3YXJuaW5ncy5vbWFwLCB3YXJuaW5ncy5wYWlycywgd2FybmluZ3Muc2V0LCB3YXJuaW5ncy5pbnRUaW1lLCB3YXJuaW5ncy5mbG9hdFRpbWUsIHdhcm5pbmdzLnRpbWVzdGFtcCk7XG4gICAgdmFyIHNjaGVtYXMgPSB7XG4gICAgICBjb3JlLFxuICAgICAgZmFpbHNhZmUsXG4gICAgICBqc29uLFxuICAgICAgeWFtbDExXG4gICAgfTtcbiAgICB2YXIgdGFncyA9IHtcbiAgICAgIGJpbmFyeTogd2FybmluZ3MuYmluYXJ5LFxuICAgICAgYm9vbDogYm9vbE9iaixcbiAgICAgIGZsb2F0OiBmbG9hdE9iaixcbiAgICAgIGZsb2F0RXhwOiBleHBPYmosXG4gICAgICBmbG9hdE5hTjogbmFuT2JqLFxuICAgICAgZmxvYXRUaW1lOiB3YXJuaW5ncy5mbG9hdFRpbWUsXG4gICAgICBpbnQ6IGludE9iaixcbiAgICAgIGludEhleDogaGV4T2JqLFxuICAgICAgaW50T2N0OiBvY3RPYmosXG4gICAgICBpbnRUaW1lOiB3YXJuaW5ncy5pbnRUaW1lLFxuICAgICAgbWFwLFxuICAgICAgbnVsbDogbnVsbE9iaixcbiAgICAgIG9tYXA6IHdhcm5pbmdzLm9tYXAsXG4gICAgICBwYWlyczogd2FybmluZ3MucGFpcnMsXG4gICAgICBzZXEsXG4gICAgICBzZXQ6IHdhcm5pbmdzLnNldCxcbiAgICAgIHRpbWVzdGFtcDogd2FybmluZ3MudGltZXN0YW1wXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmaW5kVGFnT2JqZWN0KHZhbHVlLCB0YWdOYW1lLCB0YWdzMikge1xuICAgICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0YWdzMi5maWx0ZXIoKHQpID0+IHQudGFnID09PSB0YWdOYW1lKTtcbiAgICAgICAgY29uc3QgdGFnT2JqID0gbWF0Y2guZmluZCgodCkgPT4gIXQuZm9ybWF0KSB8fCBtYXRjaFswXTtcbiAgICAgICAgaWYgKCF0YWdPYmopXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUYWcgJHt0YWdOYW1lfSBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuIHRhZ09iajtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YWdzMi5maW5kKCh0KSA9PiAodC5pZGVudGlmeSAmJiB0LmlkZW50aWZ5KHZhbHVlKSB8fCB0LmNsYXNzICYmIHZhbHVlIGluc3RhbmNlb2YgdC5jbGFzcykgJiYgIXQuZm9ybWF0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlTm9kZSh2YWx1ZSwgdGFnTmFtZSwgY3R4KSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiByZXNvbHZlU2VxLk5vZGUpXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGVmYXVsdFByZWZpeCxcbiAgICAgICAgb25UYWdPYmosXG4gICAgICAgIHByZXZPYmplY3RzLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHdyYXBTY2FsYXJzXG4gICAgICB9ID0gY3R4O1xuICAgICAgaWYgKHRhZ05hbWUgJiYgdGFnTmFtZS5zdGFydHNXaXRoKFwiISFcIikpXG4gICAgICAgIHRhZ05hbWUgPSBkZWZhdWx0UHJlZml4ICsgdGFnTmFtZS5zbGljZSgyKTtcbiAgICAgIGxldCB0YWdPYmogPSBmaW5kVGFnT2JqZWN0KHZhbHVlLCB0YWdOYW1lLCBzY2hlbWEudGFncyk7XG4gICAgICBpZiAoIXRhZ09iaikge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9KU09OKCk7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKVxuICAgICAgICAgIHJldHVybiB3cmFwU2NhbGFycyA/IG5ldyByZXNvbHZlU2VxLlNjYWxhcih2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgdGFnT2JqID0gdmFsdWUgaW5zdGFuY2VvZiBNYXAgPyBtYXAgOiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID8gc2VxIDogbWFwO1xuICAgICAgfVxuICAgICAgaWYgKG9uVGFnT2JqKSB7XG4gICAgICAgIG9uVGFnT2JqKHRhZ09iaik7XG4gICAgICAgIGRlbGV0ZSBjdHgub25UYWdPYmo7XG4gICAgICB9XG4gICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgIHZhbHVlOiB2b2lkIDAsXG4gICAgICAgIG5vZGU6IHZvaWQgMFxuICAgICAgfTtcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgcHJldk9iamVjdHMpIHtcbiAgICAgICAgY29uc3QgcHJldiA9IHByZXZPYmplY3RzLmdldCh2YWx1ZSk7XG4gICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgY29uc3QgYWxpYXMgPSBuZXcgcmVzb2x2ZVNlcS5BbGlhcyhwcmV2KTtcbiAgICAgICAgICBjdHguYWxpYXNOb2Rlcy5wdXNoKGFsaWFzKTtcbiAgICAgICAgICByZXR1cm4gYWxpYXM7XG4gICAgICAgIH1cbiAgICAgICAgb2JqLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHByZXZPYmplY3RzLnNldCh2YWx1ZSwgb2JqKTtcbiAgICAgIH1cbiAgICAgIG9iai5ub2RlID0gdGFnT2JqLmNyZWF0ZU5vZGUgPyB0YWdPYmouY3JlYXRlTm9kZShjdHguc2NoZW1hLCB2YWx1ZSwgY3R4KSA6IHdyYXBTY2FsYXJzID8gbmV3IHJlc29sdmVTZXEuU2NhbGFyKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgaWYgKHRhZ05hbWUgJiYgb2JqLm5vZGUgaW5zdGFuY2VvZiByZXNvbHZlU2VxLk5vZGUpXG4gICAgICAgIG9iai5ub2RlLnRhZyA9IHRhZ05hbWU7XG4gICAgICByZXR1cm4gb2JqLm5vZGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFNjaGVtYVRhZ3Moc2NoZW1hczIsIGtub3duVGFncywgY3VzdG9tVGFncywgc2NoZW1hSWQpIHtcbiAgICAgIGxldCB0YWdzMiA9IHNjaGVtYXMyW3NjaGVtYUlkLnJlcGxhY2UoL1xcVy9nLCBcIlwiKV07XG4gICAgICBpZiAoIXRhZ3MyKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWFzMikubWFwKChrZXkpID0+IEpTT04uc3RyaW5naWZ5KGtleSkpLmpvaW4oXCIsIFwiKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHNjaGVtYSBcIiR7c2NoZW1hSWR9XCI7IHVzZSBvbmUgb2YgJHtrZXlzfWApO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VzdG9tVGFncykpIHtcbiAgICAgICAgZm9yIChjb25zdCB0YWcgb2YgY3VzdG9tVGFncylcbiAgICAgICAgICB0YWdzMiA9IHRhZ3MyLmNvbmNhdCh0YWcpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY3VzdG9tVGFncyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRhZ3MyID0gY3VzdG9tVGFncyh0YWdzMi5zbGljZSgpKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnczIubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgdGFnID0gdGFnczJbaV07XG4gICAgICAgIGlmICh0eXBlb2YgdGFnID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgY29uc3QgdGFnT2JqID0ga25vd25UYWdzW3RhZ107XG4gICAgICAgICAgaWYgKCF0YWdPYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhrbm93blRhZ3MpLm1hcCgoa2V5KSA9PiBKU09OLnN0cmluZ2lmeShrZXkpKS5qb2luKFwiLCBcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY3VzdG9tIHRhZyBcIiR7dGFnfVwiOyB1c2Ugb25lIG9mICR7a2V5c31gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGFnczJbaV0gPSB0YWdPYmo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0YWdzMjtcbiAgICB9XG4gICAgdmFyIHNvcnRNYXBFbnRyaWVzQnlLZXkgPSAoYSwgYikgPT4gYS5rZXkgPCBiLmtleSA/IC0xIDogYS5rZXkgPiBiLmtleSA/IDEgOiAwO1xuICAgIHZhciBTY2hlbWEgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIGN1c3RvbVRhZ3MsXG4gICAgICAgIG1lcmdlLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNvcnRNYXBFbnRyaWVzLFxuICAgICAgICB0YWdzOiBkZXByZWNhdGVkQ3VzdG9tVGFnc1xuICAgICAgfSkge1xuICAgICAgICB0aGlzLm1lcmdlID0gISFtZXJnZTtcbiAgICAgICAgdGhpcy5uYW1lID0gc2NoZW1hO1xuICAgICAgICB0aGlzLnNvcnRNYXBFbnRyaWVzID0gc29ydE1hcEVudHJpZXMgPT09IHRydWUgPyBzb3J0TWFwRW50cmllc0J5S2V5IDogc29ydE1hcEVudHJpZXMgfHwgbnVsbDtcbiAgICAgICAgaWYgKCFjdXN0b21UYWdzICYmIGRlcHJlY2F0ZWRDdXN0b21UYWdzKVxuICAgICAgICAgIHdhcm5pbmdzLndhcm5PcHRpb25EZXByZWNhdGlvbihcInRhZ3NcIiwgXCJjdXN0b21UYWdzXCIpO1xuICAgICAgICB0aGlzLnRhZ3MgPSBnZXRTY2hlbWFUYWdzKHNjaGVtYXMsIHRhZ3MsIGN1c3RvbVRhZ3MgfHwgZGVwcmVjYXRlZEN1c3RvbVRhZ3MsIHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBjcmVhdGVOb2RlKHZhbHVlLCB3cmFwU2NhbGFycywgdGFnTmFtZSwgY3R4KSB7XG4gICAgICAgIGNvbnN0IGJhc2VDdHggPSB7XG4gICAgICAgICAgZGVmYXVsdFByZWZpeDogU2NoZW1hLmRlZmF1bHRQcmVmaXgsXG4gICAgICAgICAgc2NoZW1hOiB0aGlzLFxuICAgICAgICAgIHdyYXBTY2FsYXJzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNyZWF0ZUN0eCA9IGN0eCA/IE9iamVjdC5hc3NpZ24oY3R4LCBiYXNlQ3R4KSA6IGJhc2VDdHg7XG4gICAgICAgIHJldHVybiBjcmVhdGVOb2RlKHZhbHVlLCB0YWdOYW1lLCBjcmVhdGVDdHgpO1xuICAgICAgfVxuICAgICAgY3JlYXRlUGFpcihrZXksIHZhbHVlLCBjdHgpIHtcbiAgICAgICAgaWYgKCFjdHgpXG4gICAgICAgICAgY3R4ID0ge1xuICAgICAgICAgICAgd3JhcFNjYWxhcnM6IHRydWVcbiAgICAgICAgICB9O1xuICAgICAgICBjb25zdCBrID0gdGhpcy5jcmVhdGVOb2RlKGtleSwgY3R4LndyYXBTY2FsYXJzLCBudWxsLCBjdHgpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVOb2RlKHZhbHVlLCBjdHgud3JhcFNjYWxhcnMsIG51bGwsIGN0eCk7XG4gICAgICAgIHJldHVybiBuZXcgcmVzb2x2ZVNlcS5QYWlyKGssIHYpO1xuICAgICAgfVxuICAgIH07XG4gICAgUGxhaW5WYWx1ZS5fZGVmaW5lUHJvcGVydHkoU2NoZW1hLCBcImRlZmF1bHRQcmVmaXhcIiwgUGxhaW5WYWx1ZS5kZWZhdWx0VGFnUHJlZml4KTtcbiAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eShTY2hlbWEsIFwiZGVmYXVsdFRhZ3NcIiwgUGxhaW5WYWx1ZS5kZWZhdWx0VGFncyk7XG4gICAgZXhwb3J0czIuU2NoZW1hID0gU2NoZW1hO1xuICB9XG59KTtcbnZhciByZXF1aXJlX0RvY3VtZW50XzliNDU2MGExID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9Eb2N1bWVudC05YjQ1NjBhMS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIFBsYWluVmFsdWUgPSByZXF1aXJlX1BsYWluVmFsdWVfZWM4ZTU4OGUoKTtcbiAgICB2YXIgcmVzb2x2ZVNlcSA9IHJlcXVpcmVfcmVzb2x2ZVNlcV9kMDNjYjAzNygpO1xuICAgIHZhciBTY2hlbWEgPSByZXF1aXJlX1NjaGVtYV84OGUzMjNhNygpO1xuICAgIHZhciBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIGFuY2hvclByZWZpeDogXCJhXCIsXG4gICAgICBjdXN0b21UYWdzOiBudWxsLFxuICAgICAgaW5kZW50OiAyLFxuICAgICAgaW5kZW50U2VxOiB0cnVlLFxuICAgICAga2VlcENzdE5vZGVzOiBmYWxzZSxcbiAgICAgIGtlZXBOb2RlVHlwZXM6IHRydWUsXG4gICAgICBrZWVwQmxvYnNJbkpTT046IHRydWUsXG4gICAgICBtYXBBc01hcDogZmFsc2UsXG4gICAgICBtYXhBbGlhc0NvdW50OiAxMDAsXG4gICAgICBwcmV0dHlFcnJvcnM6IGZhbHNlLFxuICAgICAgc2ltcGxlS2V5czogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBcIjEuMlwiXG4gICAgfTtcbiAgICB2YXIgc2NhbGFyT3B0aW9ucyA9IHtcbiAgICAgIGdldCBiaW5hcnkoKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlU2VxLmJpbmFyeU9wdGlvbnM7XG4gICAgICB9LFxuICAgICAgc2V0IGJpbmFyeShvcHQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZXNvbHZlU2VxLmJpbmFyeU9wdGlvbnMsIG9wdCk7XG4gICAgICB9LFxuICAgICAgZ2V0IGJvb2woKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlU2VxLmJvb2xPcHRpb25zO1xuICAgICAgfSxcbiAgICAgIHNldCBib29sKG9wdCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHJlc29sdmVTZXEuYm9vbE9wdGlvbnMsIG9wdCk7XG4gICAgICB9LFxuICAgICAgZ2V0IGludCgpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVTZXEuaW50T3B0aW9ucztcbiAgICAgIH0sXG4gICAgICBzZXQgaW50KG9wdCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHJlc29sdmVTZXEuaW50T3B0aW9ucywgb3B0KTtcbiAgICAgIH0sXG4gICAgICBnZXQgbnVsbCgpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVTZXEubnVsbE9wdGlvbnM7XG4gICAgICB9LFxuICAgICAgc2V0IG51bGwob3B0KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocmVzb2x2ZVNlcS5udWxsT3B0aW9ucywgb3B0KTtcbiAgICAgIH0sXG4gICAgICBnZXQgc3RyKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVNlcS5zdHJPcHRpb25zO1xuICAgICAgfSxcbiAgICAgIHNldCBzdHIob3B0KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocmVzb2x2ZVNlcS5zdHJPcHRpb25zLCBvcHQpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIGRvY3VtZW50T3B0aW9ucyA9IHtcbiAgICAgIFwiMS4wXCI6IHtcbiAgICAgICAgc2NoZW1hOiBcInlhbWwtMS4xXCIsXG4gICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICB0YWdQcmVmaXhlczogW3tcbiAgICAgICAgICBoYW5kbGU6IFwiIVwiLFxuICAgICAgICAgIHByZWZpeDogUGxhaW5WYWx1ZS5kZWZhdWx0VGFnUHJlZml4XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBoYW5kbGU6IFwiISFcIixcbiAgICAgICAgICBwcmVmaXg6IFwidGFnOnByaXZhdGUueWFtbC5vcmcsMjAwMjpcIlxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIDEuMToge1xuICAgICAgICBzY2hlbWE6IFwieWFtbC0xLjFcIixcbiAgICAgICAgbWVyZ2U6IHRydWUsXG4gICAgICAgIHRhZ1ByZWZpeGVzOiBbe1xuICAgICAgICAgIGhhbmRsZTogXCIhXCIsXG4gICAgICAgICAgcHJlZml4OiBcIiFcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgaGFuZGxlOiBcIiEhXCIsXG4gICAgICAgICAgcHJlZml4OiBQbGFpblZhbHVlLmRlZmF1bHRUYWdQcmVmaXhcbiAgICAgICAgfV1cbiAgICAgIH0sXG4gICAgICAxLjI6IHtcbiAgICAgICAgc2NoZW1hOiBcImNvcmVcIixcbiAgICAgICAgbWVyZ2U6IGZhbHNlLFxuICAgICAgICB0YWdQcmVmaXhlczogW3tcbiAgICAgICAgICBoYW5kbGU6IFwiIVwiLFxuICAgICAgICAgIHByZWZpeDogXCIhXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIGhhbmRsZTogXCIhIVwiLFxuICAgICAgICAgIHByZWZpeDogUGxhaW5WYWx1ZS5kZWZhdWx0VGFnUHJlZml4XG4gICAgICAgIH1dXG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBzdHJpbmdpZnlUYWcoZG9jLCB0YWcpIHtcbiAgICAgIGlmICgoZG9jLnZlcnNpb24gfHwgZG9jLm9wdGlvbnMudmVyc2lvbikgPT09IFwiMS4wXCIpIHtcbiAgICAgICAgY29uc3QgcHJpdiA9IHRhZy5tYXRjaCgvXnRhZzpwcml2YXRlXFwueWFtbFxcLm9yZywyMDAyOihbXjovXSspJC8pO1xuICAgICAgICBpZiAocHJpdilcbiAgICAgICAgICByZXR1cm4gXCIhXCIgKyBwcml2WzFdO1xuICAgICAgICBjb25zdCB2b2NhYiA9IHRhZy5tYXRjaCgvXnRhZzooW2EtekEtWjAtOS1dKylcXC55YW1sXFwub3JnLDIwMDI6KC4qKS8pO1xuICAgICAgICByZXR1cm4gdm9jYWIgPyBgISR7dm9jYWJbMV19LyR7dm9jYWJbMl19YCA6IGAhJHt0YWcucmVwbGFjZSgvXnRhZzovLCBcIlwiKX1gO1xuICAgICAgfVxuICAgICAgbGV0IHAgPSBkb2MudGFnUHJlZml4ZXMuZmluZCgocDIpID0+IHRhZy5pbmRleE9mKHAyLnByZWZpeCkgPT09IDApO1xuICAgICAgaWYgKCFwKSB7XG4gICAgICAgIGNvbnN0IGR0cCA9IGRvYy5nZXREZWZhdWx0cygpLnRhZ1ByZWZpeGVzO1xuICAgICAgICBwID0gZHRwICYmIGR0cC5maW5kKChwMikgPT4gdGFnLmluZGV4T2YocDIucHJlZml4KSA9PT0gMCk7XG4gICAgICB9XG4gICAgICBpZiAoIXApXG4gICAgICAgIHJldHVybiB0YWdbMF0gPT09IFwiIVwiID8gdGFnIDogYCE8JHt0YWd9PmA7XG4gICAgICBjb25zdCBzdWZmaXggPSB0YWcuc3Vic3RyKHAucHJlZml4Lmxlbmd0aCkucmVwbGFjZSgvWyEsW1xcXXt9XS9nLCAoY2gpID0+ICh7XG4gICAgICAgIFwiIVwiOiBcIiUyMVwiLFxuICAgICAgICBcIixcIjogXCIlMkNcIixcbiAgICAgICAgXCJbXCI6IFwiJTVCXCIsXG4gICAgICAgIFwiXVwiOiBcIiU1RFwiLFxuICAgICAgICBcIntcIjogXCIlN0JcIixcbiAgICAgICAgXCJ9XCI6IFwiJTdEXCJcbiAgICAgIH0pW2NoXSk7XG4gICAgICByZXR1cm4gcC5oYW5kbGUgKyBzdWZmaXg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFRhZ09iamVjdCh0YWdzLCBpdGVtKSB7XG4gICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIHJlc29sdmVTZXEuQWxpYXMpXG4gICAgICAgIHJldHVybiByZXNvbHZlU2VxLkFsaWFzO1xuICAgICAgaWYgKGl0ZW0udGFnKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGFncy5maWx0ZXIoKHQpID0+IHQudGFnID09PSBpdGVtLnRhZyk7XG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAwKVxuICAgICAgICAgIHJldHVybiBtYXRjaC5maW5kKCh0KSA9PiB0LmZvcm1hdCA9PT0gaXRlbS5mb3JtYXQpIHx8IG1hdGNoWzBdO1xuICAgICAgfVxuICAgICAgbGV0IHRhZ09iaiwgb2JqO1xuICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiByZXNvbHZlU2VxLlNjYWxhcikge1xuICAgICAgICBvYmogPSBpdGVtLnZhbHVlO1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRhZ3MuZmlsdGVyKCh0KSA9PiB0LmlkZW50aWZ5ICYmIHQuaWRlbnRpZnkob2JqKSB8fCB0LmNsYXNzICYmIG9iaiBpbnN0YW5jZW9mIHQuY2xhc3MpO1xuICAgICAgICB0YWdPYmogPSBtYXRjaC5maW5kKCh0KSA9PiB0LmZvcm1hdCA9PT0gaXRlbS5mb3JtYXQpIHx8IG1hdGNoLmZpbmQoKHQpID0+ICF0LmZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmogPSBpdGVtO1xuICAgICAgICB0YWdPYmogPSB0YWdzLmZpbmQoKHQpID0+IHQubm9kZUNsYXNzICYmIG9iaiBpbnN0YW5jZW9mIHQubm9kZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGFnT2JqKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBvYmogJiYgb2JqLmNvbnN0cnVjdG9yID8gb2JqLmNvbnN0cnVjdG9yLm5hbWUgOiB0eXBlb2Ygb2JqO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhZyBub3QgcmVzb2x2ZWQgZm9yICR7bmFtZX0gdmFsdWVgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YWdPYmo7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeVByb3BzKG5vZGUsIHRhZ09iaiwge1xuICAgICAgYW5jaG9ycyxcbiAgICAgIGRvY1xuICAgIH0pIHtcbiAgICAgIGNvbnN0IHByb3BzID0gW107XG4gICAgICBjb25zdCBhbmNob3IgPSBkb2MuYW5jaG9ycy5nZXROYW1lKG5vZGUpO1xuICAgICAgaWYgKGFuY2hvcikge1xuICAgICAgICBhbmNob3JzW2FuY2hvcl0gPSBub2RlO1xuICAgICAgICBwcm9wcy5wdXNoKGAmJHthbmNob3J9YCk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50YWcpIHtcbiAgICAgICAgcHJvcHMucHVzaChzdHJpbmdpZnlUYWcoZG9jLCBub2RlLnRhZykpO1xuICAgICAgfSBlbHNlIGlmICghdGFnT2JqLmRlZmF1bHQpIHtcbiAgICAgICAgcHJvcHMucHVzaChzdHJpbmdpZnlUYWcoZG9jLCB0YWdPYmoudGFnKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMuam9pbihcIiBcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeShpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYW5jaG9ycyxcbiAgICAgICAgc2NoZW1hXG4gICAgICB9ID0gY3R4LmRvYztcbiAgICAgIGxldCB0YWdPYmo7XG4gICAgICBpZiAoIShpdGVtIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5Ob2RlKSkge1xuICAgICAgICBjb25zdCBjcmVhdGVDdHggPSB7XG4gICAgICAgICAgYWxpYXNOb2RlczogW10sXG4gICAgICAgICAgb25UYWdPYmo6IChvKSA9PiB0YWdPYmogPSBvLFxuICAgICAgICAgIHByZXZPYmplY3RzOiAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpXG4gICAgICAgIH07XG4gICAgICAgIGl0ZW0gPSBzY2hlbWEuY3JlYXRlTm9kZShpdGVtLCB0cnVlLCBudWxsLCBjcmVhdGVDdHgpO1xuICAgICAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIGNyZWF0ZUN0eC5hbGlhc05vZGVzKSB7XG4gICAgICAgICAgYWxpYXMuc291cmNlID0gYWxpYXMuc291cmNlLm5vZGU7XG4gICAgICAgICAgbGV0IG5hbWUgPSBhbmNob3JzLmdldE5hbWUoYWxpYXMuc291cmNlKTtcbiAgICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICAgIG5hbWUgPSBhbmNob3JzLm5ld05hbWUoKTtcbiAgICAgICAgICAgIGFuY2hvcnMubWFwW25hbWVdID0gYWxpYXMuc291cmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiByZXNvbHZlU2VxLlBhaXIpXG4gICAgICAgIHJldHVybiBpdGVtLnRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgICBpZiAoIXRhZ09iailcbiAgICAgICAgdGFnT2JqID0gZ2V0VGFnT2JqZWN0KHNjaGVtYS50YWdzLCBpdGVtKTtcbiAgICAgIGNvbnN0IHByb3BzID0gc3RyaW5naWZ5UHJvcHMoaXRlbSwgdGFnT2JqLCBjdHgpO1xuICAgICAgaWYgKHByb3BzLmxlbmd0aCA+IDApXG4gICAgICAgIGN0eC5pbmRlbnRBdFN0YXJ0ID0gKGN0eC5pbmRlbnRBdFN0YXJ0IHx8IDApICsgcHJvcHMubGVuZ3RoICsgMTtcbiAgICAgIGNvbnN0IHN0ciA9IHR5cGVvZiB0YWdPYmouc3RyaW5naWZ5ID09PSBcImZ1bmN0aW9uXCIgPyB0YWdPYmouc3RyaW5naWZ5KGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkgOiBpdGVtIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5TY2FsYXIgPyByZXNvbHZlU2VxLnN0cmluZ2lmeVN0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIDogaXRlbS50b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgaWYgKCFwcm9wcylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5TY2FsYXIgfHwgc3RyWzBdID09PSBcIntcIiB8fCBzdHJbMF0gPT09IFwiW1wiID8gYCR7cHJvcHN9ICR7c3RyfWAgOiBgJHtwcm9wc31cbiR7Y3R4LmluZGVudH0ke3N0cn1gO1xuICAgIH1cbiAgICB2YXIgQW5jaG9ycyA9IGNsYXNzIHtcbiAgICAgIHN0YXRpYyB2YWxpZEFuY2hvck5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIHJlc29sdmVTZXEuU2NhbGFyIHx8IG5vZGUgaW5zdGFuY2VvZiByZXNvbHZlU2VxLllBTUxTZXEgfHwgbm9kZSBpbnN0YW5jZW9mIHJlc29sdmVTZXEuWUFNTE1hcDtcbiAgICAgIH1cbiAgICAgIGNvbnN0cnVjdG9yKHByZWZpeCkge1xuICAgICAgICBQbGFpblZhbHVlLl9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1hcFwiLCAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgICAgfVxuICAgICAgY3JlYXRlQWxpYXMobm9kZSwgbmFtZSkge1xuICAgICAgICB0aGlzLnNldEFuY2hvcihub2RlLCBuYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ldyByZXNvbHZlU2VxLkFsaWFzKG5vZGUpO1xuICAgICAgfVxuICAgICAgY3JlYXRlTWVyZ2VQYWlyKC4uLnNvdXJjZXMpIHtcbiAgICAgICAgY29uc3QgbWVyZ2UgPSBuZXcgcmVzb2x2ZVNlcS5NZXJnZSgpO1xuICAgICAgICBtZXJnZS52YWx1ZS5pdGVtcyA9IHNvdXJjZXMubWFwKChzKSA9PiB7XG4gICAgICAgICAgaWYgKHMgaW5zdGFuY2VvZiByZXNvbHZlU2VxLkFsaWFzKSB7XG4gICAgICAgICAgICBpZiAocy5zb3VyY2UgaW5zdGFuY2VvZiByZXNvbHZlU2VxLllBTUxNYXApXG4gICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgIH0gZWxzZSBpZiAocyBpbnN0YW5jZW9mIHJlc29sdmVTZXEuWUFNTE1hcCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQWxpYXMocyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1lcmdlIHNvdXJjZXMgbXVzdCBiZSBNYXAgbm9kZXMgb3IgdGhlaXIgQWxpYXNlc1wiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtZXJnZTtcbiAgICAgIH1cbiAgICAgIGdldE5hbWUobm9kZSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgbWFwXG4gICAgICAgIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5maW5kKChhKSA9PiBtYXBbYV0gPT09IG5vZGUpO1xuICAgICAgfVxuICAgICAgZ2V0TmFtZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1hcCk7XG4gICAgICB9XG4gICAgICBnZXROb2RlKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwW25hbWVdO1xuICAgICAgfVxuICAgICAgbmV3TmFtZShwcmVmaXgpIHtcbiAgICAgICAgaWYgKCFwcmVmaXgpXG4gICAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXg7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXModGhpcy5tYXApO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgdHJ1ZTsgKytpKSB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IGAke3ByZWZpeH0ke2l9YDtcbiAgICAgICAgICBpZiAoIW5hbWVzLmluY2x1ZGVzKG5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc29sdmVOb2RlcygpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG1hcCxcbiAgICAgICAgICBfY3N0QWxpYXNlc1xuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKChhKSA9PiB7XG4gICAgICAgICAgbWFwW2FdID0gbWFwW2FdLnJlc29sdmVkO1xuICAgICAgICB9KTtcbiAgICAgICAgX2NzdEFsaWFzZXMuZm9yRWFjaCgoYSkgPT4ge1xuICAgICAgICAgIGEuc291cmNlID0gYS5zb3VyY2UucmVzb2x2ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBkZWxldGUgdGhpcy5fY3N0QWxpYXNlcztcbiAgICAgIH1cbiAgICAgIHNldEFuY2hvcihub2RlLCBuYW1lKSB7XG4gICAgICAgIGlmIChub2RlICE9IG51bGwgJiYgIUFuY2hvcnMudmFsaWRBbmNob3JOb2RlKG5vZGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQW5jaG9ycyBtYXkgb25seSBiZSBzZXQgZm9yIFNjYWxhciwgU2VxIGFuZCBNYXAgbm9kZXNcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgJiYgL1tcXHgwMC1cXHgxOVxccyxbXFxde31dLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQW5jaG9yIG5hbWVzIG11c3Qgbm90IGNvbnRhaW4gd2hpdGVzcGFjZSBvciBjb250cm9sIGNoYXJhY3RlcnNcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG1hcFxuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgcHJldiA9IG5vZGUgJiYgT2JqZWN0LmtleXMobWFwKS5maW5kKChhKSA9PiBtYXBbYV0gPT09IG5vZGUpO1xuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgfSBlbHNlIGlmIChwcmV2ICE9PSBuYW1lKSB7XG4gICAgICAgICAgICBkZWxldGUgbWFwW3ByZXZdO1xuICAgICAgICAgICAgbWFwW25hbWVdID0gbm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbmFtZSA9IHRoaXMubmV3TmFtZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBbbmFtZV0gPSBub2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIHZpc2l0ID0gKG5vZGUsIHRhZ3MpID0+IHtcbiAgICAgIGlmIChub2RlICYmIHR5cGVvZiBub2RlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0YWdcbiAgICAgICAgfSA9IG5vZGU7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5Db2xsZWN0aW9uKSB7XG4gICAgICAgICAgaWYgKHRhZylcbiAgICAgICAgICAgIHRhZ3NbdGFnXSA9IHRydWU7XG4gICAgICAgICAgbm9kZS5pdGVtcy5mb3JFYWNoKChuKSA9PiB2aXNpdChuLCB0YWdzKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIHJlc29sdmVTZXEuUGFpcikge1xuICAgICAgICAgIHZpc2l0KG5vZGUua2V5LCB0YWdzKTtcbiAgICAgICAgICB2aXNpdChub2RlLnZhbHVlLCB0YWdzKTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5TY2FsYXIpIHtcbiAgICAgICAgICBpZiAodGFnKVxuICAgICAgICAgICAgdGFnc1t0YWddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRhZ3M7XG4gICAgfTtcbiAgICB2YXIgbGlzdFRhZ05hbWVzID0gKG5vZGUpID0+IE9iamVjdC5rZXlzKHZpc2l0KG5vZGUsIHt9KSk7XG4gICAgZnVuY3Rpb24gcGFyc2VDb250ZW50cyhkb2MsIGNvbnRlbnRzKSB7XG4gICAgICBjb25zdCBjb21tZW50cyA9IHtcbiAgICAgICAgYmVmb3JlOiBbXSxcbiAgICAgICAgYWZ0ZXI6IFtdXG4gICAgICB9O1xuICAgICAgbGV0IGJvZHkgPSB2b2lkIDA7XG4gICAgICBsZXQgc3BhY2VCZWZvcmUgPSBmYWxzZTtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjb250ZW50cykge1xuICAgICAgICBpZiAobm9kZS52YWx1ZVJhbmdlKSB7XG4gICAgICAgICAgaWYgKGJvZHkgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gXCJEb2N1bWVudCBjb250YWlucyB0cmFpbGluZyBjb250ZW50IG5vdCBzZXBhcmF0ZWQgYnkgYSAuLi4gb3IgLS0tIGxpbmVcIjtcbiAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MU3ludGF4RXJyb3Iobm9kZSwgbXNnKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVzID0gcmVzb2x2ZVNlcS5yZXNvbHZlTm9kZShkb2MsIG5vZGUpO1xuICAgICAgICAgIGlmIChzcGFjZUJlZm9yZSkge1xuICAgICAgICAgICAgcmVzLnNwYWNlQmVmb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgIHNwYWNlQmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJvZHkgPSByZXM7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5jb21tZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgY2MgPSBib2R5ID09PSB2b2lkIDAgPyBjb21tZW50cy5iZWZvcmUgOiBjb21tZW50cy5hZnRlcjtcbiAgICAgICAgICBjYy5wdXNoKG5vZGUuY29tbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBQbGFpblZhbHVlLlR5cGUuQkxBTktfTElORSkge1xuICAgICAgICAgIHNwYWNlQmVmb3JlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoYm9keSA9PT0gdm9pZCAwICYmIGNvbW1lbnRzLmJlZm9yZS5sZW5ndGggPiAwICYmICFkb2MuY29tbWVudEJlZm9yZSkge1xuICAgICAgICAgICAgZG9jLmNvbW1lbnRCZWZvcmUgPSBjb21tZW50cy5iZWZvcmUuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgIGNvbW1lbnRzLmJlZm9yZSA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG9jLmNvbnRlbnRzID0gYm9keSB8fCBudWxsO1xuICAgICAgaWYgKCFib2R5KSB7XG4gICAgICAgIGRvYy5jb21tZW50ID0gY29tbWVudHMuYmVmb3JlLmNvbmNhdChjb21tZW50cy5hZnRlcikuam9pbihcIlxcblwiKSB8fCBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY2IgPSBjb21tZW50cy5iZWZvcmUuam9pbihcIlxcblwiKTtcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgY29uc3QgY2JOb2RlID0gYm9keSBpbnN0YW5jZW9mIHJlc29sdmVTZXEuQ29sbGVjdGlvbiAmJiBib2R5Lml0ZW1zWzBdID8gYm9keS5pdGVtc1swXSA6IGJvZHk7XG4gICAgICAgICAgY2JOb2RlLmNvbW1lbnRCZWZvcmUgPSBjYk5vZGUuY29tbWVudEJlZm9yZSA/IGAke2NifVxuJHtjYk5vZGUuY29tbWVudEJlZm9yZX1gIDogY2I7XG4gICAgICAgIH1cbiAgICAgICAgZG9jLmNvbW1lbnQgPSBjb21tZW50cy5hZnRlci5qb2luKFwiXFxuXCIpIHx8IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVUYWdEaXJlY3RpdmUoe1xuICAgICAgdGFnUHJlZml4ZXNcbiAgICB9LCBkaXJlY3RpdmUpIHtcbiAgICAgIGNvbnN0IFtoYW5kbGUsIHByZWZpeF0gPSBkaXJlY3RpdmUucGFyYW1ldGVycztcbiAgICAgIGlmICghaGFuZGxlIHx8ICFwcmVmaXgpIHtcbiAgICAgICAgY29uc3QgbXNnID0gXCJJbnN1ZmZpY2llbnQgcGFyYW1ldGVycyBnaXZlbiBmb3IgJVRBRyBkaXJlY3RpdmVcIjtcbiAgICAgICAgdGhyb3cgbmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IoZGlyZWN0aXZlLCBtc2cpO1xuICAgICAgfVxuICAgICAgaWYgKHRhZ1ByZWZpeGVzLnNvbWUoKHApID0+IHAuaGFuZGxlID09PSBoYW5kbGUpKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IFwiVGhlICVUQUcgZGlyZWN0aXZlIG11c3Qgb25seSBiZSBnaXZlbiBhdCBtb3N0IG9uY2UgcGVyIGhhbmRsZSBpbiB0aGUgc2FtZSBkb2N1bWVudC5cIjtcbiAgICAgICAgdGhyb3cgbmV3IFBsYWluVmFsdWUuWUFNTFNlbWFudGljRXJyb3IoZGlyZWN0aXZlLCBtc2cpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGFuZGxlLFxuICAgICAgICBwcmVmaXhcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVZYW1sRGlyZWN0aXZlKGRvYywgZGlyZWN0aXZlKSB7XG4gICAgICBsZXQgW3ZlcnNpb25dID0gZGlyZWN0aXZlLnBhcmFtZXRlcnM7XG4gICAgICBpZiAoZGlyZWN0aXZlLm5hbWUgPT09IFwiWUFNTDoxLjBcIilcbiAgICAgICAgdmVyc2lvbiA9IFwiMS4wXCI7XG4gICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgbXNnID0gXCJJbnN1ZmZpY2llbnQgcGFyYW1ldGVycyBnaXZlbiBmb3IgJVlBTUwgZGlyZWN0aXZlXCI7XG4gICAgICAgIHRocm93IG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGRpcmVjdGl2ZSwgbXNnKTtcbiAgICAgIH1cbiAgICAgIGlmICghZG9jdW1lbnRPcHRpb25zW3ZlcnNpb25dKSB7XG4gICAgICAgIGNvbnN0IHYwID0gZG9jLnZlcnNpb24gfHwgZG9jLm9wdGlvbnMudmVyc2lvbjtcbiAgICAgICAgY29uc3QgbXNnID0gYERvY3VtZW50IHdpbGwgYmUgcGFyc2VkIGFzIFlBTUwgJHt2MH0gcmF0aGVyIHRoYW4gWUFNTCAke3ZlcnNpb259YDtcbiAgICAgICAgZG9jLndhcm5pbmdzLnB1c2gobmV3IFBsYWluVmFsdWUuWUFNTFdhcm5pbmcoZGlyZWN0aXZlLCBtc2cpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZURpcmVjdGl2ZXMoZG9jLCBkaXJlY3RpdmVzLCBwcmV2RG9jKSB7XG4gICAgICBjb25zdCBkaXJlY3RpdmVDb21tZW50cyA9IFtdO1xuICAgICAgbGV0IGhhc0RpcmVjdGl2ZXMgPSBmYWxzZTtcbiAgICAgIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIGRpcmVjdGl2ZXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbW1lbnQsXG4gICAgICAgICAgbmFtZVxuICAgICAgICB9ID0gZGlyZWN0aXZlO1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiVEFHXCI6XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBkb2MudGFnUHJlZml4ZXMucHVzaChyZXNvbHZlVGFnRGlyZWN0aXZlKGRvYywgZGlyZWN0aXZlKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFzRGlyZWN0aXZlcyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiWUFNTFwiOlxuICAgICAgICAgIGNhc2UgXCJZQU1MOjEuMFwiOlxuICAgICAgICAgICAgaWYgKGRvYy52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1zZyA9IFwiVGhlICVZQU1MIGRpcmVjdGl2ZSBtdXN0IG9ubHkgYmUgZ2l2ZW4gYXQgbW9zdCBvbmNlIHBlciBkb2N1bWVudC5cIjtcbiAgICAgICAgICAgICAgZG9jLmVycm9ycy5wdXNoKG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGRpcmVjdGl2ZSwgbXNnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBkb2MudmVyc2lvbiA9IHJlc29sdmVZYW1sRGlyZWN0aXZlKGRvYywgZGlyZWN0aXZlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIGRvYy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgICBjb25zdCBtc2cgPSBgWUFNTCBvbmx5IHN1cHBvcnRzICVUQUcgYW5kICVZQU1MIGRpcmVjdGl2ZXMsIGFuZCBub3QgJSR7bmFtZX1gO1xuICAgICAgICAgICAgICBkb2Mud2FybmluZ3MucHVzaChuZXcgUGxhaW5WYWx1ZS5ZQU1MV2FybmluZyhkaXJlY3RpdmUsIG1zZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgIGRpcmVjdGl2ZUNvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAocHJldkRvYyAmJiAhaGFzRGlyZWN0aXZlcyAmJiAoZG9jLnZlcnNpb24gfHwgcHJldkRvYy52ZXJzaW9uIHx8IGRvYy5vcHRpb25zLnZlcnNpb24pID09PSBcIjEuMVwiKSB7XG4gICAgICAgIGNvbnN0IGNvcHlUYWdQcmVmaXggPSAoe1xuICAgICAgICAgIGhhbmRsZSxcbiAgICAgICAgICBwcmVmaXhcbiAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICBoYW5kbGUsXG4gICAgICAgICAgcHJlZml4XG4gICAgICAgIH0pO1xuICAgICAgICBkb2MudGFnUHJlZml4ZXMgPSBwcmV2RG9jLnRhZ1ByZWZpeGVzLm1hcChjb3B5VGFnUHJlZml4KTtcbiAgICAgICAgZG9jLnZlcnNpb24gPSBwcmV2RG9jLnZlcnNpb247XG4gICAgICB9XG4gICAgICBkb2MuY29tbWVudEJlZm9yZSA9IGRpcmVjdGl2ZUNvbW1lbnRzLmpvaW4oXCJcXG5cIikgfHwgbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gYXNzZXJ0Q29sbGVjdGlvbihjb250ZW50cykge1xuICAgICAgaWYgKGNvbnRlbnRzIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5Db2xsZWN0aW9uKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGEgWUFNTCBjb2xsZWN0aW9uIGFzIGRvY3VtZW50IGNvbnRlbnRzXCIpO1xuICAgIH1cbiAgICB2YXIgRG9jdW1lbnQgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuYW5jaG9ycyA9IG5ldyBBbmNob3JzKG9wdGlvbnMuYW5jaG9yUHJlZml4KTtcbiAgICAgICAgdGhpcy5jb21tZW50QmVmb3JlID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb21tZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb250ZW50cyA9IG51bGw7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlciA9IG51bGw7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2NoZW1hID0gbnVsbDtcbiAgICAgICAgdGhpcy50YWdQcmVmaXhlcyA9IFtdO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSBudWxsO1xuICAgICAgICB0aGlzLndhcm5pbmdzID0gW107XG4gICAgICB9XG4gICAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudHMuYWRkKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGFkZEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGFzc2VydENvbGxlY3Rpb24odGhpcy5jb250ZW50cyk7XG4gICAgICAgIHRoaXMuY29udGVudHMuYWRkSW4ocGF0aCwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgZGVsZXRlKGtleSkge1xuICAgICAgICBhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50cy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZUluKHBhdGgpIHtcbiAgICAgICAgaWYgKHJlc29sdmVTZXEuaXNFbXB0eVBhdGgocGF0aCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb250ZW50cyA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHRoaXMuY29udGVudHMgPSBudWxsO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGFzc2VydENvbGxlY3Rpb24odGhpcy5jb250ZW50cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzLmRlbGV0ZUluKHBhdGgpO1xuICAgICAgfVxuICAgICAgZ2V0RGVmYXVsdHMoKSB7XG4gICAgICAgIHJldHVybiBEb2N1bWVudC5kZWZhdWx0c1t0aGlzLnZlcnNpb25dIHx8IERvY3VtZW50LmRlZmF1bHRzW3RoaXMub3B0aW9ucy52ZXJzaW9uXSB8fCB7fTtcbiAgICAgIH1cbiAgICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudHMgaW5zdGFuY2VvZiByZXNvbHZlU2VxLkNvbGxlY3Rpb24gPyB0aGlzLmNvbnRlbnRzLmdldChrZXksIGtlZXBTY2FsYXIpIDogdm9pZCAwO1xuICAgICAgfVxuICAgICAgZ2V0SW4ocGF0aCwga2VlcFNjYWxhcikge1xuICAgICAgICBpZiAocmVzb2x2ZVNlcS5pc0VtcHR5UGF0aChwYXRoKSlcbiAgICAgICAgICByZXR1cm4gIWtlZXBTY2FsYXIgJiYgdGhpcy5jb250ZW50cyBpbnN0YW5jZW9mIHJlc29sdmVTZXEuU2NhbGFyID8gdGhpcy5jb250ZW50cy52YWx1ZSA6IHRoaXMuY29udGVudHM7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5Db2xsZWN0aW9uID8gdGhpcy5jb250ZW50cy5nZXRJbihwYXRoLCBrZWVwU2NhbGFyKSA6IHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGhhcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudHMgaW5zdGFuY2VvZiByZXNvbHZlU2VxLkNvbGxlY3Rpb24gPyB0aGlzLmNvbnRlbnRzLmhhcyhrZXkpIDogZmFsc2U7XG4gICAgICB9XG4gICAgICBoYXNJbihwYXRoKSB7XG4gICAgICAgIGlmIChyZXNvbHZlU2VxLmlzRW1wdHlQYXRoKHBhdGgpKVxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzICE9PSB2b2lkIDA7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5Db2xsZWN0aW9uID8gdGhpcy5jb250ZW50cy5oYXNJbihwYXRoKSA6IGZhbHNlO1xuICAgICAgfVxuICAgICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKTtcbiAgICAgICAgdGhpcy5jb250ZW50cy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICBzZXRJbihwYXRoLCB2YWx1ZSkge1xuICAgICAgICBpZiAocmVzb2x2ZVNlcS5pc0VtcHR5UGF0aChwYXRoKSlcbiAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gdmFsdWU7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFzc2VydENvbGxlY3Rpb24odGhpcy5jb250ZW50cyk7XG4gICAgICAgICAgdGhpcy5jb250ZW50cy5zZXRJbihwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFNjaGVtYShpZCwgY3VzdG9tVGFncykge1xuICAgICAgICBpZiAoIWlkICYmICFjdXN0b21UYWdzICYmIHRoaXMuc2NoZW1hKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICBpZCA9IGlkLnRvRml4ZWQoMSk7XG4gICAgICAgIGlmIChpZCA9PT0gXCIxLjBcIiB8fCBpZCA9PT0gXCIxLjFcIiB8fCBpZCA9PT0gXCIxLjJcIikge1xuICAgICAgICAgIGlmICh0aGlzLnZlcnNpb24pXG4gICAgICAgICAgICB0aGlzLnZlcnNpb24gPSBpZDtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMudmVyc2lvbiA9IGlkO1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuc2NoZW1hO1xuICAgICAgICB9IGVsc2UgaWYgKGlkICYmIHR5cGVvZiBpZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHRoaXMub3B0aW9ucy5zY2hlbWEgPSBpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXN0b21UYWdzKSlcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tVGFncyA9IGN1c3RvbVRhZ3M7XG4gICAgICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0RGVmYXVsdHMoKSwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5zY2hlbWEgPSBuZXcgU2NoZW1hLlNjaGVtYShvcHQpO1xuICAgICAgfVxuICAgICAgcGFyc2Uobm9kZSwgcHJldkRvYykge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmtlZXBDc3ROb2RlcylcbiAgICAgICAgICB0aGlzLmNzdE5vZGUgPSBub2RlO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmtlZXBOb2RlVHlwZXMpXG4gICAgICAgICAgdGhpcy50eXBlID0gXCJET0NVTUVOVFwiO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgZGlyZWN0aXZlcyA9IFtdLFxuICAgICAgICAgIGNvbnRlbnRzID0gW10sXG4gICAgICAgICAgZGlyZWN0aXZlc0VuZE1hcmtlcixcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgICB2YWx1ZVJhbmdlXG4gICAgICAgIH0gPSBub2RlO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoIWVycm9yLnNvdXJjZSlcbiAgICAgICAgICAgIGVycm9yLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgICAgdGhpcy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VEaXJlY3RpdmVzKHRoaXMsIGRpcmVjdGl2ZXMsIHByZXZEb2MpO1xuICAgICAgICBpZiAoZGlyZWN0aXZlc0VuZE1hcmtlcilcbiAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXNFbmRNYXJrZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnJhbmdlID0gdmFsdWVSYW5nZSA/IFt2YWx1ZVJhbmdlLnN0YXJ0LCB2YWx1ZVJhbmdlLmVuZF0gOiBudWxsO1xuICAgICAgICB0aGlzLnNldFNjaGVtYSgpO1xuICAgICAgICB0aGlzLmFuY2hvcnMuX2NzdEFsaWFzZXMgPSBbXTtcbiAgICAgICAgcGFyc2VDb250ZW50cyh0aGlzLCBjb250ZW50cyk7XG4gICAgICAgIHRoaXMuYW5jaG9ycy5yZXNvbHZlTm9kZXMoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wcmV0dHlFcnJvcnMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGVycm9yMiBvZiB0aGlzLmVycm9ycylcbiAgICAgICAgICAgIGlmIChlcnJvcjIgaW5zdGFuY2VvZiBQbGFpblZhbHVlLllBTUxFcnJvcilcbiAgICAgICAgICAgICAgZXJyb3IyLm1ha2VQcmV0dHkoKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdhcm4gb2YgdGhpcy53YXJuaW5ncylcbiAgICAgICAgICAgIGlmICh3YXJuIGluc3RhbmNlb2YgUGxhaW5WYWx1ZS5ZQU1MRXJyb3IpXG4gICAgICAgICAgICAgIHdhcm4ubWFrZVByZXR0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgbGlzdE5vbkRlZmF1bHRUYWdzKCkge1xuICAgICAgICByZXR1cm4gbGlzdFRhZ05hbWVzKHRoaXMuY29udGVudHMpLmZpbHRlcigodCkgPT4gdC5pbmRleE9mKFNjaGVtYS5TY2hlbWEuZGVmYXVsdFByZWZpeCkgIT09IDApO1xuICAgICAgfVxuICAgICAgc2V0VGFnUHJlZml4KGhhbmRsZSwgcHJlZml4KSB7XG4gICAgICAgIGlmIChoYW5kbGVbMF0gIT09IFwiIVwiIHx8IGhhbmRsZVtoYW5kbGUubGVuZ3RoIC0gMV0gIT09IFwiIVwiKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkhhbmRsZSBtdXN0IHN0YXJ0IGFuZCBlbmQgd2l0aCAhXCIpO1xuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgY29uc3QgcHJldiA9IHRoaXMudGFnUHJlZml4ZXMuZmluZCgocCkgPT4gcC5oYW5kbGUgPT09IGhhbmRsZSk7XG4gICAgICAgICAgaWYgKHByZXYpXG4gICAgICAgICAgICBwcmV2LnByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnRhZ1ByZWZpeGVzLnB1c2goe1xuICAgICAgICAgICAgICBoYW5kbGUsXG4gICAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50YWdQcmVmaXhlcyA9IHRoaXMudGFnUHJlZml4ZXMuZmlsdGVyKChwKSA9PiBwLmhhbmRsZSAhPT0gaGFuZGxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdG9KU09OKGFyZywgb25BbmNob3IpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGtlZXBCbG9ic0luSlNPTixcbiAgICAgICAgICBtYXBBc01hcCxcbiAgICAgICAgICBtYXhBbGlhc0NvdW50XG4gICAgICAgIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGtlZXAgPSBrZWVwQmxvYnNJbkpTT04gJiYgKHR5cGVvZiBhcmcgIT09IFwic3RyaW5nXCIgfHwgISh0aGlzLmNvbnRlbnRzIGluc3RhbmNlb2YgcmVzb2x2ZVNlcS5TY2FsYXIpKTtcbiAgICAgICAgY29uc3QgY3R4ID0ge1xuICAgICAgICAgIGRvYzogdGhpcyxcbiAgICAgICAgICBpbmRlbnRTdGVwOiBcIiAgXCIsXG4gICAgICAgICAga2VlcCxcbiAgICAgICAgICBtYXBBc01hcDoga2VlcCAmJiAhIW1hcEFzTWFwLFxuICAgICAgICAgIG1heEFsaWFzQ291bnQsXG4gICAgICAgICAgc3RyaW5naWZ5XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFuY2hvck5hbWVzID0gT2JqZWN0LmtleXModGhpcy5hbmNob3JzLm1hcCk7XG4gICAgICAgIGlmIChhbmNob3JOYW1lcy5sZW5ndGggPiAwKVxuICAgICAgICAgIGN0eC5hbmNob3JzID0gbmV3IE1hcChhbmNob3JOYW1lcy5tYXAoKG5hbWUpID0+IFt0aGlzLmFuY2hvcnMubWFwW25hbWVdLCB7XG4gICAgICAgICAgICBhbGlhczogW10sXG4gICAgICAgICAgICBhbGlhc0NvdW50OiAwLFxuICAgICAgICAgICAgY291bnQ6IDFcbiAgICAgICAgICB9XSkpO1xuICAgICAgICBjb25zdCByZXMgPSByZXNvbHZlU2VxLnRvSlNPTih0aGlzLmNvbnRlbnRzLCBhcmcsIGN0eCk7XG4gICAgICAgIGlmICh0eXBlb2Ygb25BbmNob3IgPT09IFwiZnVuY3Rpb25cIiAmJiBjdHguYW5jaG9ycylcbiAgICAgICAgICBmb3IgKGNvbnN0IHtcbiAgICAgICAgICAgIGNvdW50LFxuICAgICAgICAgICAgcmVzOiByZXMyXG4gICAgICAgICAgfSBvZiBjdHguYW5jaG9ycy52YWx1ZXMoKSlcbiAgICAgICAgICAgIG9uQW5jaG9yKHJlczIsIGNvdW50KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBpZiAodGhpcy5lcnJvcnMubGVuZ3RoID4gMClcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEb2N1bWVudCB3aXRoIGVycm9ycyBjYW5ub3QgYmUgc3RyaW5naWZpZWRcIik7XG4gICAgICAgIGNvbnN0IGluZGVudFNpemUgPSB0aGlzLm9wdGlvbnMuaW5kZW50O1xuICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoaW5kZW50U2l6ZSkgfHwgaW5kZW50U2l6ZSA8PSAwKSB7XG4gICAgICAgICAgY29uc3QgcyA9IEpTT04uc3RyaW5naWZ5KGluZGVudFNpemUpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJpbmRlbnRcIiBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIG5vdCAke3N9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTY2hlbWEoKTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICAgICAgbGV0IGhhc0RpcmVjdGl2ZXMgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbikge1xuICAgICAgICAgIGxldCB2ZCA9IFwiJVlBTUwgMS4yXCI7XG4gICAgICAgICAgaWYgKHRoaXMuc2NoZW1hLm5hbWUgPT09IFwieWFtbC0xLjFcIikge1xuICAgICAgICAgICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gXCIxLjBcIilcbiAgICAgICAgICAgICAgdmQgPSBcIiVZQU1MOjEuMFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52ZXJzaW9uID09PSBcIjEuMVwiKVxuICAgICAgICAgICAgICB2ZCA9IFwiJVlBTUwgMS4xXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpbmVzLnB1c2godmQpO1xuICAgICAgICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhZ05hbWVzID0gdGhpcy5saXN0Tm9uRGVmYXVsdFRhZ3MoKTtcbiAgICAgICAgdGhpcy50YWdQcmVmaXhlcy5mb3JFYWNoKCh7XG4gICAgICAgICAgaGFuZGxlLFxuICAgICAgICAgIHByZWZpeFxuICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgaWYgKHRhZ05hbWVzLnNvbWUoKHQpID0+IHQuaW5kZXhPZihwcmVmaXgpID09PSAwKSkge1xuICAgICAgICAgICAgbGluZXMucHVzaChgJVRBRyAke2hhbmRsZX0gJHtwcmVmaXh9YCk7XG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaGFzRGlyZWN0aXZlcyB8fCB0aGlzLmRpcmVjdGl2ZXNFbmRNYXJrZXIpXG4gICAgICAgICAgbGluZXMucHVzaChcIi0tLVwiKTtcbiAgICAgICAgaWYgKHRoaXMuY29tbWVudEJlZm9yZSkge1xuICAgICAgICAgIGlmIChoYXNEaXJlY3RpdmVzIHx8ICF0aGlzLmRpcmVjdGl2ZXNFbmRNYXJrZXIpXG4gICAgICAgICAgICBsaW5lcy51bnNoaWZ0KFwiXCIpO1xuICAgICAgICAgIGxpbmVzLnVuc2hpZnQodGhpcy5jb21tZW50QmVmb3JlLnJlcGxhY2UoL14vZ20sIFwiI1wiKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3R4ID0ge1xuICAgICAgICAgIGFuY2hvcnM6IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgICAgIGRvYzogdGhpcyxcbiAgICAgICAgICBpbmRlbnQ6IFwiXCIsXG4gICAgICAgICAgaW5kZW50U3RlcDogXCIgXCIucmVwZWF0KGluZGVudFNpemUpLFxuICAgICAgICAgIHN0cmluZ2lmeVxuICAgICAgICB9O1xuICAgICAgICBsZXQgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgICAgIGxldCBjb250ZW50Q29tbWVudCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29udGVudHMgaW5zdGFuY2VvZiByZXNvbHZlU2VxLk5vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRzLnNwYWNlQmVmb3JlICYmIChoYXNEaXJlY3RpdmVzIHx8IHRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlcikpXG4gICAgICAgICAgICAgIGxpbmVzLnB1c2goXCJcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50cy5jb21tZW50QmVmb3JlKVxuICAgICAgICAgICAgICBsaW5lcy5wdXNoKHRoaXMuY29udGVudHMuY29tbWVudEJlZm9yZS5yZXBsYWNlKC9eL2dtLCBcIiNcIikpO1xuICAgICAgICAgICAgY3R4LmZvcmNlQmxvY2tJbmRlbnQgPSAhIXRoaXMuY29tbWVudDtcbiAgICAgICAgICAgIGNvbnRlbnRDb21tZW50ID0gdGhpcy5jb250ZW50cy5jb21tZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBvbkNob21wS2VlcCA9IGNvbnRlbnRDb21tZW50ID8gbnVsbCA6ICgpID0+IGNob21wS2VlcCA9IHRydWU7XG4gICAgICAgICAgY29uc3QgYm9keSA9IHN0cmluZ2lmeSh0aGlzLmNvbnRlbnRzLCBjdHgsICgpID0+IGNvbnRlbnRDb21tZW50ID0gbnVsbCwgb25DaG9tcEtlZXApO1xuICAgICAgICAgIGxpbmVzLnB1c2gocmVzb2x2ZVNlcS5hZGRDb21tZW50KGJvZHksIFwiXCIsIGNvbnRlbnRDb21tZW50KSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZW50cyAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgbGluZXMucHVzaChzdHJpbmdpZnkodGhpcy5jb250ZW50cywgY3R4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tbWVudCkge1xuICAgICAgICAgIGlmICgoIWNob21wS2VlcCB8fCBjb250ZW50Q29tbWVudCkgJiYgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0gIT09IFwiXCIpXG4gICAgICAgICAgICBsaW5lcy5wdXNoKFwiXCIpO1xuICAgICAgICAgIGxpbmVzLnB1c2godGhpcy5jb21tZW50LnJlcGxhY2UoL14vZ20sIFwiI1wiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIikgKyBcIlxcblwiO1xuICAgICAgfVxuICAgIH07XG4gICAgUGxhaW5WYWx1ZS5fZGVmaW5lUHJvcGVydHkoRG9jdW1lbnQsIFwiZGVmYXVsdHNcIiwgZG9jdW1lbnRPcHRpb25zKTtcbiAgICBleHBvcnRzMi5Eb2N1bWVudCA9IERvY3VtZW50O1xuICAgIGV4cG9ydHMyLmRlZmF1bHRPcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgZXhwb3J0czIuc2NhbGFyT3B0aW9ucyA9IHNjYWxhck9wdGlvbnM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZGlzdCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy95YW1sL2Rpc3QvaW5kZXguanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBwYXJzZUNzdCA9IHJlcXVpcmVfcGFyc2VfY3N0KCk7XG4gICAgdmFyIERvY3VtZW50JDEgPSByZXF1aXJlX0RvY3VtZW50XzliNDU2MGExKCk7XG4gICAgdmFyIFNjaGVtYSA9IHJlcXVpcmVfU2NoZW1hXzg4ZTMyM2E3KCk7XG4gICAgdmFyIFBsYWluVmFsdWUgPSByZXF1aXJlX1BsYWluVmFsdWVfZWM4ZTU4OGUoKTtcbiAgICB2YXIgd2FybmluZ3MgPSByZXF1aXJlX3dhcm5pbmdzXzEwMDBhMzcyKCk7XG4gICAgcmVxdWlyZV9yZXNvbHZlU2VxX2QwM2NiMDM3KCk7XG4gICAgZnVuY3Rpb24gY3JlYXRlTm9kZSh2YWx1ZSwgd3JhcFNjYWxhcnMgPSB0cnVlLCB0YWcpIHtcbiAgICAgIGlmICh0YWcgPT09IHZvaWQgMCAmJiB0eXBlb2Ygd3JhcFNjYWxhcnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGFnID0gd3JhcFNjYWxhcnM7XG4gICAgICAgIHdyYXBTY2FsYXJzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBEb2N1bWVudCQxLkRvY3VtZW50LmRlZmF1bHRzW0RvY3VtZW50JDEuZGVmYXVsdE9wdGlvbnMudmVyc2lvbl0sIERvY3VtZW50JDEuZGVmYXVsdE9wdGlvbnMpO1xuICAgICAgY29uc3Qgc2NoZW1hID0gbmV3IFNjaGVtYS5TY2hlbWEob3B0aW9ucyk7XG4gICAgICByZXR1cm4gc2NoZW1hLmNyZWF0ZU5vZGUodmFsdWUsIHdyYXBTY2FsYXJzLCB0YWcpO1xuICAgIH1cbiAgICB2YXIgRG9jdW1lbnQgPSBjbGFzcyBleHRlbmRzIERvY3VtZW50JDEuRG9jdW1lbnQge1xuICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihPYmplY3QuYXNzaWduKHt9LCBEb2N1bWVudCQxLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBwYXJzZUFsbERvY3VtZW50cyhzcmMsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IFtdO1xuICAgICAgbGV0IHByZXY7XG4gICAgICBmb3IgKGNvbnN0IGNzdERvYyBvZiBwYXJzZUNzdC5wYXJzZShzcmMpKSB7XG4gICAgICAgIGNvbnN0IGRvYyA9IG5ldyBEb2N1bWVudChvcHRpb25zKTtcbiAgICAgICAgZG9jLnBhcnNlKGNzdERvYywgcHJldik7XG4gICAgICAgIHN0cmVhbS5wdXNoKGRvYyk7XG4gICAgICAgIHByZXYgPSBkb2M7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyZWFtO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZURvY3VtZW50KHNyYywgb3B0aW9ucykge1xuICAgICAgY29uc3QgY3N0ID0gcGFyc2VDc3QucGFyc2Uoc3JjKTtcbiAgICAgIGNvbnN0IGRvYyA9IG5ldyBEb2N1bWVudChvcHRpb25zKS5wYXJzZShjc3RbMF0pO1xuICAgICAgaWYgKGNzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IGVyck1zZyA9IFwiU291cmNlIGNvbnRhaW5zIG11bHRpcGxlIGRvY3VtZW50czsgcGxlYXNlIHVzZSBZQU1MLnBhcnNlQWxsRG9jdW1lbnRzKClcIjtcbiAgICAgICAgZG9jLmVycm9ycy51bnNoaWZ0KG5ldyBQbGFpblZhbHVlLllBTUxTZW1hbnRpY0Vycm9yKGNzdFsxXSwgZXJyTXNnKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZG9jO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZShzcmMsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRvYyA9IHBhcnNlRG9jdW1lbnQoc3JjLCBvcHRpb25zKTtcbiAgICAgIGRvYy53YXJuaW5ncy5mb3JFYWNoKCh3YXJuaW5nKSA9PiB3YXJuaW5ncy53YXJuKHdhcm5pbmcpKTtcbiAgICAgIGlmIChkb2MuZXJyb3JzLmxlbmd0aCA+IDApXG4gICAgICAgIHRocm93IGRvYy5lcnJvcnNbMF07XG4gICAgICByZXR1cm4gZG9jLnRvSlNPTigpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRvYyA9IG5ldyBEb2N1bWVudChvcHRpb25zKTtcbiAgICAgIGRvYy5jb250ZW50cyA9IHZhbHVlO1xuICAgICAgcmV0dXJuIFN0cmluZyhkb2MpO1xuICAgIH1cbiAgICB2YXIgWUFNTCA9IHtcbiAgICAgIGNyZWF0ZU5vZGUsXG4gICAgICBkZWZhdWx0T3B0aW9uczogRG9jdW1lbnQkMS5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIERvY3VtZW50LFxuICAgICAgcGFyc2UsXG4gICAgICBwYXJzZUFsbERvY3VtZW50cyxcbiAgICAgIHBhcnNlQ1NUOiBwYXJzZUNzdC5wYXJzZSxcbiAgICAgIHBhcnNlRG9jdW1lbnQsXG4gICAgICBzY2FsYXJPcHRpb25zOiBEb2N1bWVudCQxLnNjYWxhck9wdGlvbnMsXG4gICAgICBzdHJpbmdpZnlcbiAgICB9O1xuICAgIGV4cG9ydHMyLllBTUwgPSBZQU1MO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3lhbWwgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMveWFtbC9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gcmVxdWlyZV9kaXN0KCkuWUFNTDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sb2FkZXJzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2Nvc21pY29uZmlnL2Rpc3QvbG9hZGVycy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5sb2FkZXJzID0gdm9pZCAwO1xuICAgIHZhciBpbXBvcnRGcmVzaDtcbiAgICB2YXIgbG9hZEpzID0gZnVuY3Rpb24gbG9hZEpzMihmaWxlcGF0aCkge1xuICAgICAgaWYgKGltcG9ydEZyZXNoID09PSB2b2lkIDApIHtcbiAgICAgICAgaW1wb3J0RnJlc2ggPSByZXF1aXJlX2ltcG9ydF9mcmVzaCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gaW1wb3J0RnJlc2goZmlsZXBhdGgpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHZhciBwYXJzZUpzb247XG4gICAgdmFyIGxvYWRKc29uID0gZnVuY3Rpb24gbG9hZEpzb24yKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gICAgICBpZiAocGFyc2VKc29uID09PSB2b2lkIDApIHtcbiAgICAgICAgcGFyc2VKc29uID0gcmVxdWlyZV9wYXJzZV9qc29uKCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBwYXJzZUpzb24oY29udGVudCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvci5tZXNzYWdlID0gYEpTT04gRXJyb3IgaW4gJHtmaWxlcGF0aH06XG4ke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgeWFtbDtcbiAgICB2YXIgbG9hZFlhbWwgPSBmdW5jdGlvbiBsb2FkWWFtbDIoZmlsZXBhdGgsIGNvbnRlbnQpIHtcbiAgICAgIGlmICh5YW1sID09PSB2b2lkIDApIHtcbiAgICAgICAgeWFtbCA9IHJlcXVpcmVfeWFtbCgpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0geWFtbC5wYXJzZShjb250ZW50LCB7XG4gICAgICAgICAgcHJldHR5RXJyb3JzOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBZQU1MIEVycm9yIGluICR7ZmlsZXBhdGh9OlxuJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIGxvYWRlcnMgPSB7XG4gICAgICBsb2FkSnMsXG4gICAgICBsb2FkSnNvbixcbiAgICAgIGxvYWRZYW1sXG4gICAgfTtcbiAgICBleHBvcnRzMi5sb2FkZXJzID0gbG9hZGVycztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9nZXRQcm9wZXJ0eUJ5UGF0aCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3NtaWNvbmZpZy9kaXN0L2dldFByb3BlcnR5QnlQYXRoLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmdldFByb3BlcnR5QnlQYXRoID0gZ2V0UHJvcGVydHlCeVBhdGg7XG4gICAgZnVuY3Rpb24gZ2V0UHJvcGVydHlCeVBhdGgoc291cmNlLCBwYXRoKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwgcGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZVtwYXRoXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnNlZFBhdGggPSB0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIiA/IHBhdGguc3BsaXQoXCIuXCIpIDogcGF0aDtcbiAgICAgIHJldHVybiBwYXJzZWRQYXRoLnJlZHVjZSgocHJldmlvdXMsIGtleSkgPT4ge1xuICAgICAgICBpZiAocHJldmlvdXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldmlvdXNba2V5XTtcbiAgICAgIH0sIHNvdXJjZSk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX0V4cGxvcmVyQmFzZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3NtaWNvbmZpZy9kaXN0L0V4cGxvcmVyQmFzZS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5nZXRFeHRlbnNpb25EZXNjcmlwdGlvbiA9IGdldEV4dGVuc2lvbkRlc2NyaXB0aW9uO1xuICAgIGV4cG9ydHMyLkV4cGxvcmVyQmFzZSA9IHZvaWQgMDtcbiAgICB2YXIgX3BhdGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJwYXRoXCIpKTtcbiAgICB2YXIgX2xvYWRlcnMgPSByZXF1aXJlX2xvYWRlcnMoKTtcbiAgICB2YXIgX2dldFByb3BlcnR5QnlQYXRoID0gcmVxdWlyZV9nZXRQcm9wZXJ0eUJ5UGF0aCgpO1xuICAgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICAgIH07XG4gICAgfVxuICAgIHZhciBFeHBsb3JlckJhc2UgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNhY2hlID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy5sb2FkQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgICAgIHRoaXMuc2VhcmNoQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbmZpZygpO1xuICAgICAgfVxuICAgICAgY2xlYXJMb2FkQ2FjaGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRDYWNoZSkge1xuICAgICAgICAgIHRoaXMubG9hZENhY2hlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsZWFyU2VhcmNoQ2FjaGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaENhY2hlKSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hDYWNoZS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjbGVhckNhY2hlcygpIHtcbiAgICAgICAgdGhpcy5jbGVhckxvYWRDYWNoZSgpO1xuICAgICAgICB0aGlzLmNsZWFyU2VhcmNoQ2FjaGUoKTtcbiAgICAgIH1cbiAgICAgIHZhbGlkYXRlQ29uZmlnKCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICAgICAgY29uZmlnLnNlYXJjaFBsYWNlcy5mb3JFYWNoKChwbGFjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvYWRlcktleSA9IF9wYXRoLmRlZmF1bHQuZXh0bmFtZShwbGFjZSkgfHwgXCJub0V4dFwiO1xuICAgICAgICAgIGNvbnN0IGxvYWRlciA9IGNvbmZpZy5sb2FkZXJzW2xvYWRlcktleV07XG4gICAgICAgICAgaWYgKCFsb2FkZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbG9hZGVyIHNwZWNpZmllZCBmb3IgJHtnZXRFeHRlbnNpb25EZXNjcmlwdGlvbihwbGFjZSl9LCBzbyBzZWFyY2hQbGFjZXMgaXRlbSBcIiR7cGxhY2V9XCIgaXMgaW52YWxpZGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIGxvYWRlciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxvYWRlciBmb3IgJHtnZXRFeHRlbnNpb25EZXNjcmlwdGlvbihwbGFjZSl9IGlzIG5vdCBhIGZ1bmN0aW9uICh0eXBlIHByb3ZpZGVkOiBcIiR7dHlwZW9mIGxvYWRlcn1cIiksIHNvIHNlYXJjaFBsYWNlcyBpdGVtIFwiJHtwbGFjZX1cIiBpcyBpbnZhbGlkYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHNob3VsZFNlYXJjaFN0b3BXaXRoUmVzdWx0KHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0VtcHR5ICYmIHRoaXMuY29uZmlnLmlnbm9yZUVtcHR5U2VhcmNoUGxhY2VzKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBuZXh0RGlyZWN0b3J5VG9TZWFyY2goY3VycmVudERpciwgY3VycmVudFJlc3VsdCkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRTZWFyY2hTdG9wV2l0aFJlc3VsdChjdXJyZW50UmVzdWx0KSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHREaXIgPSBuZXh0RGlyVXAoY3VycmVudERpcik7XG4gICAgICAgIGlmIChuZXh0RGlyID09PSBjdXJyZW50RGlyIHx8IGN1cnJlbnREaXIgPT09IHRoaXMuY29uZmlnLnN0b3BEaXIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dERpcjtcbiAgICAgIH1cbiAgICAgIGxvYWRQYWNrYWdlUHJvcChmaWxlcGF0aCwgY29udGVudCkge1xuICAgICAgICBjb25zdCBwYXJzZWRDb250ZW50ID0gX2xvYWRlcnMubG9hZGVycy5sb2FkSnNvbihmaWxlcGF0aCwgY29udGVudCk7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VQcm9wVmFsdWUgPSAoMCwgX2dldFByb3BlcnR5QnlQYXRoLmdldFByb3BlcnR5QnlQYXRoKShwYXJzZWRDb250ZW50LCB0aGlzLmNvbmZpZy5wYWNrYWdlUHJvcCk7XG4gICAgICAgIHJldHVybiBwYWNrYWdlUHJvcFZhbHVlIHx8IG51bGw7XG4gICAgICB9XG4gICAgICBnZXRMb2FkZXJFbnRyeUZvckZpbGUoZmlsZXBhdGgpIHtcbiAgICAgICAgaWYgKF9wYXRoLmRlZmF1bHQuYmFzZW5hbWUoZmlsZXBhdGgpID09PSBcInBhY2thZ2UuanNvblwiKSB7XG4gICAgICAgICAgY29uc3QgbG9hZGVyMiA9IHRoaXMubG9hZFBhY2thZ2VQcm9wLmJpbmQodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIGxvYWRlcjI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9hZGVyS2V5ID0gX3BhdGguZGVmYXVsdC5leHRuYW1lKGZpbGVwYXRoKSB8fCBcIm5vRXh0XCI7XG4gICAgICAgIGNvbnN0IGxvYWRlciA9IHRoaXMuY29uZmlnLmxvYWRlcnNbbG9hZGVyS2V5XTtcbiAgICAgICAgaWYgKCFsb2FkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGxvYWRlciBzcGVjaWZpZWQgZm9yICR7Z2V0RXh0ZW5zaW9uRGVzY3JpcHRpb24oZmlsZXBhdGgpfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2FkZXI7XG4gICAgICB9XG4gICAgICBsb2FkZWRDb250ZW50VG9Db3NtaWNvbmZpZ1Jlc3VsdChmaWxlcGF0aCwgbG9hZGVkQ29udGVudCkge1xuICAgICAgICBpZiAobG9hZGVkQ29udGVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2FkZWRDb250ZW50ID09PSB2b2lkIDApIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZXBhdGgsXG4gICAgICAgICAgICBjb25maWc6IHZvaWQgMCxcbiAgICAgICAgICAgIGlzRW1wdHk6IHRydWVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29uZmlnOiBsb2FkZWRDb250ZW50LFxuICAgICAgICAgIGZpbGVwYXRoXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZUZpbGVQYXRoKGZpbGVwYXRoKSB7XG4gICAgICAgIGlmICghZmlsZXBhdGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJsb2FkIG11c3QgcGFzcyBhIG5vbi1lbXB0eSBzdHJpbmdcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLkV4cGxvcmVyQmFzZSA9IEV4cGxvcmVyQmFzZTtcbiAgICBmdW5jdGlvbiBuZXh0RGlyVXAoZGlyKSB7XG4gICAgICByZXR1cm4gX3BhdGguZGVmYXVsdC5kaXJuYW1lKGRpcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEV4dGVuc2lvbkRlc2NyaXB0aW9uKGZpbGVwYXRoKSB7XG4gICAgICBjb25zdCBleHQgPSBfcGF0aC5kZWZhdWx0LmV4dG5hbWUoZmlsZXBhdGgpO1xuICAgICAgcmV0dXJuIGV4dCA/IGBleHRlbnNpb24gXCIke2V4dH1cImAgOiBcImZpbGVzIHdpdGhvdXQgZXh0ZW5zaW9uc1wiO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9yZWFkRmlsZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3NtaWNvbmZpZy9kaXN0L3JlYWRGaWxlLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLnJlYWRGaWxlID0gcmVhZEZpbGU7XG4gICAgZXhwb3J0czIucmVhZEZpbGVTeW5jID0gcmVhZEZpbGVTeW5jO1xuICAgIHZhciBfZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJmc1wiKSk7XG4gICAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gZnNSZWFkRmlsZUFzeW5jKHBhdGhuYW1lLCBlbmNvZGluZykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgX2ZzLmRlZmF1bHQucmVhZEZpbGUocGF0aG5hbWUsIGVuY29kaW5nLCAoZXJyb3IsIGNvbnRlbnRzKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKGNvbnRlbnRzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGUoZmlsZXBhdGgsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgY29uc3QgdGhyb3dOb3RGb3VuZCA9IG9wdGlvbnMudGhyb3dOb3RGb3VuZCA9PT0gdHJ1ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmc1JlYWRGaWxlQXN5bmMoZmlsZXBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAodGhyb3dOb3RGb3VuZCA9PT0gZmFsc2UgJiYgKGVycm9yLmNvZGUgPT09IFwiRU5PRU5UXCIgfHwgZXJyb3IuY29kZSA9PT0gXCJFSVNESVJcIikpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVhZEZpbGVTeW5jKGZpbGVwYXRoLCBvcHRpb25zID0ge30pIHtcbiAgICAgIGNvbnN0IHRocm93Tm90Rm91bmQgPSBvcHRpb25zLnRocm93Tm90Rm91bmQgPT09IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gX2ZzLmRlZmF1bHQucmVhZEZpbGVTeW5jKGZpbGVwYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKHRocm93Tm90Rm91bmQgPT09IGZhbHNlICYmIChlcnJvci5jb2RlID09PSBcIkVOT0VOVFwiIHx8IGVycm9yLmNvZGUgPT09IFwiRUlTRElSXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2NhY2hlV3JhcHBlciA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3NtaWNvbmZpZy9kaXN0L2NhY2hlV3JhcHBlci5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5jYWNoZVdyYXBwZXIgPSBjYWNoZVdyYXBwZXI7XG4gICAgZXhwb3J0czIuY2FjaGVXcmFwcGVyU3luYyA9IGNhY2hlV3JhcHBlclN5bmM7XG4gICAgYXN5bmMgZnVuY3Rpb24gY2FjaGVXcmFwcGVyKGNhY2hlLCBrZXksIGZuKSB7XG4gICAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIGlmIChjYWNoZWQgIT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgIGNhY2hlLnNldChrZXksIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjYWNoZVdyYXBwZXJTeW5jKGNhY2hlLCBrZXksIGZuKSB7XG4gICAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIGlmIChjYWNoZWQgIT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gZm4oKTtcbiAgICAgIGNhY2hlLnNldChrZXksIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXRoX3R5cGUgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvcGF0aC10eXBlL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgcHJvbWlzaWZ5XG4gICAgfSA9IHJlcXVpcmUoXCJ1dGlsXCIpO1xuICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICBhc3luYyBmdW5jdGlvbiBpc1R5cGUoZnNTdGF0VHlwZSwgc3RhdHNNZXRob2ROYW1lLCBmaWxlUGF0aCkge1xuICAgICAgaWYgKHR5cGVvZiBmaWxlUGF0aCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIHN0cmluZywgZ290ICR7dHlwZW9mIGZpbGVQYXRofWApO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBwcm9taXNpZnkoZnNbZnNTdGF0VHlwZV0pKGZpbGVQYXRoKTtcbiAgICAgICAgcmV0dXJuIHN0YXRzW3N0YXRzTWV0aG9kTmFtZV0oKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5jb2RlID09PSBcIkVOT0VOVFwiKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpc1R5cGVTeW5jKGZzU3RhdFR5cGUsIHN0YXRzTWV0aG9kTmFtZSwgZmlsZVBhdGgpIHtcbiAgICAgIGlmICh0eXBlb2YgZmlsZVBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBzdHJpbmcsIGdvdCAke3R5cGVvZiBmaWxlUGF0aH1gKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmc1tmc1N0YXRUeXBlXShmaWxlUGF0aClbc3RhdHNNZXRob2ROYW1lXSgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzRmlsZSA9IGlzVHlwZS5iaW5kKG51bGwsIFwic3RhdFwiLCBcImlzRmlsZVwiKTtcbiAgICBleHBvcnRzMi5pc0RpcmVjdG9yeSA9IGlzVHlwZS5iaW5kKG51bGwsIFwic3RhdFwiLCBcImlzRGlyZWN0b3J5XCIpO1xuICAgIGV4cG9ydHMyLmlzU3ltbGluayA9IGlzVHlwZS5iaW5kKG51bGwsIFwibHN0YXRcIiwgXCJpc1N5bWJvbGljTGlua1wiKTtcbiAgICBleHBvcnRzMi5pc0ZpbGVTeW5jID0gaXNUeXBlU3luYy5iaW5kKG51bGwsIFwic3RhdFN5bmNcIiwgXCJpc0ZpbGVcIik7XG4gICAgZXhwb3J0czIuaXNEaXJlY3RvcnlTeW5jID0gaXNUeXBlU3luYy5iaW5kKG51bGwsIFwic3RhdFN5bmNcIiwgXCJpc0RpcmVjdG9yeVwiKTtcbiAgICBleHBvcnRzMi5pc1N5bWxpbmtTeW5jID0gaXNUeXBlU3luYy5iaW5kKG51bGwsIFwibHN0YXRTeW5jXCIsIFwiaXNTeW1ib2xpY0xpbmtcIik7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZ2V0RGlyZWN0b3J5ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2Nvc21pY29uZmlnL2Rpc3QvZ2V0RGlyZWN0b3J5LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmdldERpcmVjdG9yeSA9IGdldERpcmVjdG9yeTtcbiAgICBleHBvcnRzMi5nZXREaXJlY3RvcnlTeW5jID0gZ2V0RGlyZWN0b3J5U3luYztcbiAgICB2YXIgX3BhdGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJwYXRoXCIpKTtcbiAgICB2YXIgX3BhdGhUeXBlID0gcmVxdWlyZV9wYXRoX3R5cGUoKTtcbiAgICBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiBnZXREaXJlY3RvcnkoZmlsZXBhdGgpIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoSXNEaXJlY3RvcnkgPSBhd2FpdCAoMCwgX3BhdGhUeXBlLmlzRGlyZWN0b3J5KShmaWxlcGF0aCk7XG4gICAgICBpZiAoZmlsZVBhdGhJc0RpcmVjdG9yeSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gZmlsZXBhdGg7XG4gICAgICB9XG4gICAgICBjb25zdCBkaXJlY3RvcnkgPSBfcGF0aC5kZWZhdWx0LmRpcm5hbWUoZmlsZXBhdGgpO1xuICAgICAgcmV0dXJuIGRpcmVjdG9yeTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0RGlyZWN0b3J5U3luYyhmaWxlcGF0aCkge1xuICAgICAgY29uc3QgZmlsZVBhdGhJc0RpcmVjdG9yeSA9ICgwLCBfcGF0aFR5cGUuaXNEaXJlY3RvcnlTeW5jKShmaWxlcGF0aCk7XG4gICAgICBpZiAoZmlsZVBhdGhJc0RpcmVjdG9yeSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gZmlsZXBhdGg7XG4gICAgICB9XG4gICAgICBjb25zdCBkaXJlY3RvcnkgPSBfcGF0aC5kZWZhdWx0LmRpcm5hbWUoZmlsZXBhdGgpO1xuICAgICAgcmV0dXJuIGRpcmVjdG9yeTtcbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfRXhwbG9yZXIgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29zbWljb25maWcvZGlzdC9FeHBsb3Jlci5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5FeHBsb3JlciA9IHZvaWQgMDtcbiAgICB2YXIgX3BhdGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJwYXRoXCIpKTtcbiAgICB2YXIgX0V4cGxvcmVyQmFzZSA9IHJlcXVpcmVfRXhwbG9yZXJCYXNlKCk7XG4gICAgdmFyIF9yZWFkRmlsZSA9IHJlcXVpcmVfcmVhZEZpbGUoKTtcbiAgICB2YXIgX2NhY2hlV3JhcHBlciA9IHJlcXVpcmVfY2FjaGVXcmFwcGVyKCk7XG4gICAgdmFyIF9nZXREaXJlY3RvcnkgPSByZXF1aXJlX2dldERpcmVjdG9yeSgpO1xuICAgIGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICAgIH07XG4gICAgfVxuICAgIHZhciBFeHBsb3JlciA9IGNsYXNzIGV4dGVuZHMgX0V4cGxvcmVyQmFzZS5FeHBsb3JlckJhc2Uge1xuICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIGFzeW5jIHNlYXJjaChzZWFyY2hGcm9tID0gcHJvY2Vzcy5jd2QoKSkge1xuICAgICAgICBjb25zdCBzdGFydERpcmVjdG9yeSA9IGF3YWl0ICgwLCBfZ2V0RGlyZWN0b3J5LmdldERpcmVjdG9yeSkoc2VhcmNoRnJvbSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2VhcmNoRnJvbURpcmVjdG9yeShzdGFydERpcmVjdG9yeSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBhc3luYyBzZWFyY2hGcm9tRGlyZWN0b3J5KGRpcikge1xuICAgICAgICBjb25zdCBhYnNvbHV0ZURpciA9IF9wYXRoLmRlZmF1bHQucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBkaXIpO1xuICAgICAgICBjb25zdCBydW4gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZWFyY2hEaXJlY3RvcnkoYWJzb2x1dGVEaXIpO1xuICAgICAgICAgIGNvbnN0IG5leHREaXIgPSB0aGlzLm5leHREaXJlY3RvcnlUb1NlYXJjaChhYnNvbHV0ZURpciwgcmVzdWx0KTtcbiAgICAgICAgICBpZiAobmV4dERpcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoRnJvbURpcmVjdG9yeShuZXh0RGlyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtUmVzdWx0ID0gYXdhaXQgdGhpcy5jb25maWcudHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ2FjaGUpIHtcbiAgICAgICAgICByZXR1cm4gKDAsIF9jYWNoZVdyYXBwZXIuY2FjaGVXcmFwcGVyKSh0aGlzLnNlYXJjaENhY2hlLCBhYnNvbHV0ZURpciwgcnVuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcnVuKCk7XG4gICAgICB9XG4gICAgICBhc3luYyBzZWFyY2hEaXJlY3RvcnkoZGlyKSB7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGxhY2Ugb2YgdGhpcy5jb25maWcuc2VhcmNoUGxhY2VzKSB7XG4gICAgICAgICAgY29uc3QgcGxhY2VSZXN1bHQgPSBhd2FpdCB0aGlzLmxvYWRTZWFyY2hQbGFjZShkaXIsIHBsYWNlKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG91bGRTZWFyY2hTdG9wV2l0aFJlc3VsdChwbGFjZVJlc3VsdCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBwbGFjZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBhc3luYyBsb2FkU2VhcmNoUGxhY2UoZGlyLCBwbGFjZSkge1xuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IF9wYXRoLmRlZmF1bHQuam9pbihkaXIsIHBsYWNlKTtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnRzID0gYXdhaXQgKDAsIF9yZWFkRmlsZS5yZWFkRmlsZSkoZmlsZXBhdGgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNyZWF0ZUNvc21pY29uZmlnUmVzdWx0KGZpbGVwYXRoLCBmaWxlQ29udGVudHMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgYXN5bmMgbG9hZEZpbGVDb250ZW50KGZpbGVwYXRoLCBjb250ZW50KSB7XG4gICAgICAgIGlmIChjb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRlbnQudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmdldExvYWRlckVudHJ5Rm9yRmlsZShmaWxlcGF0aCk7XG4gICAgICAgIGNvbnN0IGxvYWRlclJlc3VsdCA9IGF3YWl0IGxvYWRlcihmaWxlcGF0aCwgY29udGVudCk7XG4gICAgICAgIHJldHVybiBsb2FkZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgICBhc3luYyBjcmVhdGVDb3NtaWNvbmZpZ1Jlc3VsdChmaWxlcGF0aCwgY29udGVudCkge1xuICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IHRoaXMubG9hZEZpbGVDb250ZW50KGZpbGVwYXRoLCBjb250ZW50KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5sb2FkZWRDb250ZW50VG9Db3NtaWNvbmZpZ1Jlc3VsdChmaWxlcGF0aCwgZmlsZUNvbnRlbnQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgYXN5bmMgbG9hZChmaWxlcGF0aCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlRmlsZVBhdGgoZmlsZXBhdGgpO1xuICAgICAgICBjb25zdCBhYnNvbHV0ZUZpbGVQYXRoID0gX3BhdGguZGVmYXVsdC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGZpbGVwYXRoKTtcbiAgICAgICAgY29uc3QgcnVuTG9hZCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWxlQ29udGVudHMgPSBhd2FpdCAoMCwgX3JlYWRGaWxlLnJlYWRGaWxlKShhYnNvbHV0ZUZpbGVQYXRoLCB7XG4gICAgICAgICAgICB0aHJvd05vdEZvdW5kOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jcmVhdGVDb3NtaWNvbmZpZ1Jlc3VsdChhYnNvbHV0ZUZpbGVQYXRoLCBmaWxlQ29udGVudHMpO1xuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybVJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlnLnRyYW5zZm9ybShyZXN1bHQpO1xuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1SZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmxvYWRDYWNoZSkge1xuICAgICAgICAgIHJldHVybiAoMCwgX2NhY2hlV3JhcHBlci5jYWNoZVdyYXBwZXIpKHRoaXMubG9hZENhY2hlLCBhYnNvbHV0ZUZpbGVQYXRoLCBydW5Mb2FkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcnVuTG9hZCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuRXhwbG9yZXIgPSBFeHBsb3JlcjtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9FeHBsb3JlclN5bmMgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29zbWljb25maWcvZGlzdC9FeHBsb3JlclN5bmMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuRXhwbG9yZXJTeW5jID0gdm9pZCAwO1xuICAgIHZhciBfcGF0aCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInBhdGhcIikpO1xuICAgIHZhciBfRXhwbG9yZXJCYXNlID0gcmVxdWlyZV9FeHBsb3JlckJhc2UoKTtcbiAgICB2YXIgX3JlYWRGaWxlID0gcmVxdWlyZV9yZWFkRmlsZSgpO1xuICAgIHZhciBfY2FjaGVXcmFwcGVyID0gcmVxdWlyZV9jYWNoZVdyYXBwZXIoKTtcbiAgICB2YXIgX2dldERpcmVjdG9yeSA9IHJlcXVpcmVfZ2V0RGlyZWN0b3J5KCk7XG4gICAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgfTtcbiAgICB9XG4gICAgdmFyIEV4cGxvcmVyU3luYyA9IGNsYXNzIGV4dGVuZHMgX0V4cGxvcmVyQmFzZS5FeHBsb3JlckJhc2Uge1xuICAgICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHNlYXJjaFN5bmMoc2VhcmNoRnJvbSA9IHByb2Nlc3MuY3dkKCkpIHtcbiAgICAgICAgY29uc3Qgc3RhcnREaXJlY3RvcnkgPSAoMCwgX2dldERpcmVjdG9yeS5nZXREaXJlY3RvcnlTeW5jKShzZWFyY2hGcm9tKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2hGcm9tRGlyZWN0b3J5U3luYyhzdGFydERpcmVjdG9yeSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBzZWFyY2hGcm9tRGlyZWN0b3J5U3luYyhkaXIpIHtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVEaXIgPSBfcGF0aC5kZWZhdWx0LnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZGlyKTtcbiAgICAgICAgY29uc3QgcnVuID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoRGlyZWN0b3J5U3luYyhhYnNvbHV0ZURpcik7XG4gICAgICAgICAgY29uc3QgbmV4dERpciA9IHRoaXMubmV4dERpcmVjdG9yeVRvU2VhcmNoKGFic29sdXRlRGlyLCByZXN1bHQpO1xuICAgICAgICAgIGlmIChuZXh0RGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hGcm9tRGlyZWN0b3J5U3luYyhuZXh0RGlyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtUmVzdWx0ID0gdGhpcy5jb25maWcudHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ2FjaGUpIHtcbiAgICAgICAgICByZXR1cm4gKDAsIF9jYWNoZVdyYXBwZXIuY2FjaGVXcmFwcGVyU3luYykodGhpcy5zZWFyY2hDYWNoZSwgYWJzb2x1dGVEaXIsIHJ1bik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJ1bigpO1xuICAgICAgfVxuICAgICAgc2VhcmNoRGlyZWN0b3J5U3luYyhkaXIpIHtcbiAgICAgICAgZm9yIChjb25zdCBwbGFjZSBvZiB0aGlzLmNvbmZpZy5zZWFyY2hQbGFjZXMpIHtcbiAgICAgICAgICBjb25zdCBwbGFjZVJlc3VsdCA9IHRoaXMubG9hZFNlYXJjaFBsYWNlU3luYyhkaXIsIHBsYWNlKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG91bGRTZWFyY2hTdG9wV2l0aFJlc3VsdChwbGFjZVJlc3VsdCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBwbGFjZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBsb2FkU2VhcmNoUGxhY2VTeW5jKGRpciwgcGxhY2UpIHtcbiAgICAgICAgY29uc3QgZmlsZXBhdGggPSBfcGF0aC5kZWZhdWx0LmpvaW4oZGlyLCBwbGFjZSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoMCwgX3JlYWRGaWxlLnJlYWRGaWxlU3luYykoZmlsZXBhdGgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNyZWF0ZUNvc21pY29uZmlnUmVzdWx0U3luYyhmaWxlcGF0aCwgY29udGVudCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBsb2FkRmlsZUNvbnRlbnRTeW5jKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gICAgICAgIGlmIChjb250ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRlbnQudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmdldExvYWRlckVudHJ5Rm9yRmlsZShmaWxlcGF0aCk7XG4gICAgICAgIGNvbnN0IGxvYWRlclJlc3VsdCA9IGxvYWRlcihmaWxlcGF0aCwgY29udGVudCk7XG4gICAgICAgIHJldHVybiBsb2FkZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgICBjcmVhdGVDb3NtaWNvbmZpZ1Jlc3VsdFN5bmMoZmlsZXBhdGgsIGNvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSB0aGlzLmxvYWRGaWxlQ29udGVudFN5bmMoZmlsZXBhdGgsIGNvbnRlbnQpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmxvYWRlZENvbnRlbnRUb0Nvc21pY29uZmlnUmVzdWx0KGZpbGVwYXRoLCBmaWxlQ29udGVudCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBsb2FkU3luYyhmaWxlcGF0aCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlRmlsZVBhdGgoZmlsZXBhdGgpO1xuICAgICAgICBjb25zdCBhYnNvbHV0ZUZpbGVQYXRoID0gX3BhdGguZGVmYXVsdC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGZpbGVwYXRoKTtcbiAgICAgICAgY29uc3QgcnVuTG9hZFN5bmMgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9ICgwLCBfcmVhZEZpbGUucmVhZEZpbGVTeW5jKShhYnNvbHV0ZUZpbGVQYXRoLCB7XG4gICAgICAgICAgICB0aHJvd05vdEZvdW5kOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgY29zbWljb25maWdSZXN1bHQgPSB0aGlzLmNyZWF0ZUNvc21pY29uZmlnUmVzdWx0U3luYyhhYnNvbHV0ZUZpbGVQYXRoLCBjb250ZW50KTtcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1SZXN1bHQgPSB0aGlzLmNvbmZpZy50cmFuc2Zvcm0oY29zbWljb25maWdSZXN1bHQpO1xuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1SZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmxvYWRDYWNoZSkge1xuICAgICAgICAgIHJldHVybiAoMCwgX2NhY2hlV3JhcHBlci5jYWNoZVdyYXBwZXJTeW5jKSh0aGlzLmxvYWRDYWNoZSwgYWJzb2x1dGVGaWxlUGF0aCwgcnVuTG9hZFN5bmMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBydW5Mb2FkU3luYygpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuRXhwbG9yZXJTeW5jID0gRXhwbG9yZXJTeW5jO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3R5cGVzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2Nvc21pY29uZmlnL2Rpc3QvdHlwZXMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZGlzdDIgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29zbWljb25maWcvZGlzdC9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5jb3NtaWNvbmZpZyA9IGNvc21pY29uZmlnO1xuICAgIGV4cG9ydHMyLmNvc21pY29uZmlnU3luYyA9IGNvc21pY29uZmlnU3luYztcbiAgICBleHBvcnRzMi5kZWZhdWx0TG9hZGVycyA9IHZvaWQgMDtcbiAgICB2YXIgX29zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwib3NcIikpO1xuICAgIHZhciBfRXhwbG9yZXIgPSByZXF1aXJlX0V4cGxvcmVyKCk7XG4gICAgdmFyIF9FeHBsb3JlclN5bmMgPSByZXF1aXJlX0V4cGxvcmVyU3luYygpO1xuICAgIHZhciBfbG9hZGVycyA9IHJlcXVpcmVfbG9hZGVycygpO1xuICAgIHZhciBfdHlwZXMgPSByZXF1aXJlX3R5cGVzKCk7XG4gICAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29zbWljb25maWcobW9kdWxlTmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkT3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnMobW9kdWxlTmFtZSwgb3B0aW9ucyk7XG4gICAgICBjb25zdCBleHBsb3JlciA9IG5ldyBfRXhwbG9yZXIuRXhwbG9yZXIobm9ybWFsaXplZE9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VhcmNoOiBleHBsb3Jlci5zZWFyY2guYmluZChleHBsb3JlciksXG4gICAgICAgIGxvYWQ6IGV4cGxvcmVyLmxvYWQuYmluZChleHBsb3JlciksXG4gICAgICAgIGNsZWFyTG9hZENhY2hlOiBleHBsb3Jlci5jbGVhckxvYWRDYWNoZS5iaW5kKGV4cGxvcmVyKSxcbiAgICAgICAgY2xlYXJTZWFyY2hDYWNoZTogZXhwbG9yZXIuY2xlYXJTZWFyY2hDYWNoZS5iaW5kKGV4cGxvcmVyKSxcbiAgICAgICAgY2xlYXJDYWNoZXM6IGV4cGxvcmVyLmNsZWFyQ2FjaGVzLmJpbmQoZXhwbG9yZXIpXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb3NtaWNvbmZpZ1N5bmMobW9kdWxlTmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkT3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnMobW9kdWxlTmFtZSwgb3B0aW9ucyk7XG4gICAgICBjb25zdCBleHBsb3JlclN5bmMgPSBuZXcgX0V4cGxvcmVyU3luYy5FeHBsb3JlclN5bmMobm9ybWFsaXplZE9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VhcmNoOiBleHBsb3JlclN5bmMuc2VhcmNoU3luYy5iaW5kKGV4cGxvcmVyU3luYyksXG4gICAgICAgIGxvYWQ6IGV4cGxvcmVyU3luYy5sb2FkU3luYy5iaW5kKGV4cGxvcmVyU3luYyksXG4gICAgICAgIGNsZWFyTG9hZENhY2hlOiBleHBsb3JlclN5bmMuY2xlYXJMb2FkQ2FjaGUuYmluZChleHBsb3JlclN5bmMpLFxuICAgICAgICBjbGVhclNlYXJjaENhY2hlOiBleHBsb3JlclN5bmMuY2xlYXJTZWFyY2hDYWNoZS5iaW5kKGV4cGxvcmVyU3luYyksXG4gICAgICAgIGNsZWFyQ2FjaGVzOiBleHBsb3JlclN5bmMuY2xlYXJDYWNoZXMuYmluZChleHBsb3JlclN5bmMpXG4gICAgICB9O1xuICAgIH1cbiAgICB2YXIgZGVmYXVsdExvYWRlcnMgPSBPYmplY3QuZnJlZXplKHtcbiAgICAgIFwiLmNqc1wiOiBfbG9hZGVycy5sb2FkZXJzLmxvYWRKcyxcbiAgICAgIFwiLmpzXCI6IF9sb2FkZXJzLmxvYWRlcnMubG9hZEpzLFxuICAgICAgXCIuanNvblwiOiBfbG9hZGVycy5sb2FkZXJzLmxvYWRKc29uLFxuICAgICAgXCIueWFtbFwiOiBfbG9hZGVycy5sb2FkZXJzLmxvYWRZYW1sLFxuICAgICAgXCIueW1sXCI6IF9sb2FkZXJzLmxvYWRlcnMubG9hZFlhbWwsXG4gICAgICBub0V4dDogX2xvYWRlcnMubG9hZGVycy5sb2FkWWFtbFxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmRlZmF1bHRMb2FkZXJzID0gZGVmYXVsdExvYWRlcnM7XG4gICAgdmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gaWRlbnRpdHkyKHgpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH07XG4gICAgZnVuY3Rpb24gbm9ybWFsaXplT3B0aW9ucyhtb2R1bGVOYW1lLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgICAgcGFja2FnZVByb3A6IG1vZHVsZU5hbWUsXG4gICAgICAgIHNlYXJjaFBsYWNlczogW1wicGFja2FnZS5qc29uXCIsIGAuJHttb2R1bGVOYW1lfXJjYCwgYC4ke21vZHVsZU5hbWV9cmMuanNvbmAsIGAuJHttb2R1bGVOYW1lfXJjLnlhbWxgLCBgLiR7bW9kdWxlTmFtZX1yYy55bWxgLCBgLiR7bW9kdWxlTmFtZX1yYy5qc2AsIGAuJHttb2R1bGVOYW1lfXJjLmNqc2AsIGAke21vZHVsZU5hbWV9LmNvbmZpZy5qc2AsIGAke21vZHVsZU5hbWV9LmNvbmZpZy5janNgXSxcbiAgICAgICAgaWdub3JlRW1wdHlTZWFyY2hQbGFjZXM6IHRydWUsXG4gICAgICAgIHN0b3BEaXI6IF9vcy5kZWZhdWx0LmhvbWVkaXIoKSxcbiAgICAgICAgY2FjaGU6IHRydWUsXG4gICAgICAgIHRyYW5zZm9ybTogaWRlbnRpdHksXG4gICAgICAgIGxvYWRlcnM6IGRlZmF1bHRMb2FkZXJzXG4gICAgICB9O1xuICAgICAgY29uc3Qgbm9ybWFsaXplZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMpLCBvcHRpb25zKSwge30sIHtcbiAgICAgICAgbG9hZGVyczogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cy5sb2FkZXJzKSwgb3B0aW9ucy5sb2FkZXJzKVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZE9wdGlvbnM7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2ZpbmRfcGFyZW50X2RpciA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9maW5kLXBhcmVudC1kaXIvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgIHZhciBleGlzdHMgPSBmcy5leGlzdHMgfHwgcGF0aC5leGlzdHM7XG4gICAgdmFyIGV4aXN0c1N5bmMgPSBmcy5leGlzdHNTeW5jIHx8IHBhdGguZXhpc3RzU3luYztcbiAgICBmdW5jdGlvbiBzcGxpdFBhdGgocGF0aDIpIHtcbiAgICAgIHZhciBwYXJ0cyA9IHBhdGgyLnNwbGl0KC8oXFwvfFxcXFwpLyk7XG4gICAgICBpZiAoIXBhcnRzLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgcmV0dXJuICFwYXJ0c1swXS5sZW5ndGggPyBwYXJ0cy5zbGljZSgxKSA6IHBhcnRzO1xuICAgIH1cbiAgICBleHBvcnRzMiA9IG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGN1cnJlbnRGdWxsUGF0aCwgY2x1ZSwgY2IpIHtcbiAgICAgIGZ1bmN0aW9uIHRlc3REaXIocGFydHMpIHtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICByZXR1cm4gY2IobnVsbCwgbnVsbCk7XG4gICAgICAgIHZhciBwID0gcGFydHMuam9pbihcIlwiKTtcbiAgICAgICAgZXhpc3RzKHBhdGguam9pbihwLCBjbHVlKSwgZnVuY3Rpb24oaXRkb2VzKSB7XG4gICAgICAgICAgaWYgKGl0ZG9lcylcbiAgICAgICAgICAgIHJldHVybiBjYihudWxsLCBwKTtcbiAgICAgICAgICB0ZXN0RGlyKHBhcnRzLnNsaWNlKDAsIC0xKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGVzdERpcihzcGxpdFBhdGgoY3VycmVudEZ1bGxQYXRoKSk7XG4gICAgfTtcbiAgICBleHBvcnRzMi5zeW5jID0gZnVuY3Rpb24oY3VycmVudEZ1bGxQYXRoLCBjbHVlKSB7XG4gICAgICBmdW5jdGlvbiB0ZXN0RGlyKHBhcnRzKSB7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHZhciBwID0gcGFydHMuam9pbihcIlwiKTtcbiAgICAgICAgdmFyIGl0ZG9lcyA9IGV4aXN0c1N5bmMocGF0aC5qb2luKHAsIGNsdWUpKTtcbiAgICAgICAgcmV0dXJuIGl0ZG9lcyA/IHAgOiB0ZXN0RGlyKHBhcnRzLnNsaWNlKDAsIC0xKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGVzdERpcihzcGxpdFBhdGgoY3VycmVudEZ1bGxQYXRoKSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9nZXRfc3RkaW4gPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvZ2V0LXN0ZGluL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgc3RkaW5cbiAgICB9ID0gcHJvY2VzcztcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICAgIGlmIChzdGRpbi5pc1RUWSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgc3RkaW4uc2V0RW5jb2RpbmcoXCJ1dGY4XCIpO1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzdGRpbikge1xuICAgICAgICByZXN1bHQgKz0gY2h1bms7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzLmJ1ZmZlciA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgICBpZiAoc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW10pO1xuICAgICAgfVxuICAgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzdGRpbikge1xuICAgICAgICByZXN1bHQucHVzaChjaHVuayk7XG4gICAgICAgIGxlbmd0aCArPSBjaHVuay5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChyZXN1bHQsIGxlbmd0aCk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV92ZW5kb3JzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NpLWluZm8vdmVuZG9ycy5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBbe1xuICAgICAgbmFtZTogXCJBcHBWZXlvclwiLFxuICAgICAgY29uc3RhbnQ6IFwiQVBQVkVZT1JcIixcbiAgICAgIGVudjogXCJBUFBWRVlPUlwiLFxuICAgICAgcHI6IFwiQVBQVkVZT1JfUFVMTF9SRVFVRVNUX05VTUJFUlwiXG4gICAgfSwge1xuICAgICAgbmFtZTogXCJBenVyZSBQaXBlbGluZXNcIixcbiAgICAgIGNvbnN0YW50OiBcIkFaVVJFX1BJUEVMSU5FU1wiLFxuICAgICAgZW52OiBcIlNZU1RFTV9URUFNRk9VTkRBVElPTkNPTExFQ1RJT05VUklcIixcbiAgICAgIHByOiBcIlNZU1RFTV9QVUxMUkVRVUVTVF9QVUxMUkVRVUVTVElEXCJcbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkFwcGNpcmNsZVwiLFxuICAgICAgY29uc3RhbnQ6IFwiQVBQQ0lSQ0xFXCIsXG4gICAgICBlbnY6IFwiQUNfQVBQQ0lSQ0xFXCJcbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkJhbWJvb1wiLFxuICAgICAgY29uc3RhbnQ6IFwiQkFNQk9PXCIsXG4gICAgICBlbnY6IFwiYmFtYm9vX3BsYW5LZXlcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiQml0YnVja2V0IFBpcGVsaW5lc1wiLFxuICAgICAgY29uc3RhbnQ6IFwiQklUQlVDS0VUXCIsXG4gICAgICBlbnY6IFwiQklUQlVDS0VUX0NPTU1JVFwiLFxuICAgICAgcHI6IFwiQklUQlVDS0VUX1BSX0lEXCJcbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkJpdHJpc2VcIixcbiAgICAgIGNvbnN0YW50OiBcIkJJVFJJU0VcIixcbiAgICAgIGVudjogXCJCSVRSSVNFX0lPXCIsXG4gICAgICBwcjogXCJCSVRSSVNFX1BVTExfUkVRVUVTVFwiXG4gICAgfSwge1xuICAgICAgbmFtZTogXCJCdWRkeVwiLFxuICAgICAgY29uc3RhbnQ6IFwiQlVERFlcIixcbiAgICAgIGVudjogXCJCVUREWV9XT1JLU1BBQ0VfSURcIixcbiAgICAgIHByOiBcIkJVRERZX0VYRUNVVElPTl9QVUxMX1JFUVVFU1RfSURcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiQnVpbGRraXRlXCIsXG4gICAgICBjb25zdGFudDogXCJCVUlMREtJVEVcIixcbiAgICAgIGVudjogXCJCVUlMREtJVEVcIixcbiAgICAgIHByOiB7XG4gICAgICAgIGVudjogXCJCVUlMREtJVEVfUFVMTF9SRVFVRVNUXCIsXG4gICAgICAgIG5lOiBcImZhbHNlXCJcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkNpcmNsZUNJXCIsXG4gICAgICBjb25zdGFudDogXCJDSVJDTEVcIixcbiAgICAgIGVudjogXCJDSVJDTEVDSVwiLFxuICAgICAgcHI6IFwiQ0lSQ0xFX1BVTExfUkVRVUVTVFwiXG4gICAgfSwge1xuICAgICAgbmFtZTogXCJDaXJydXMgQ0lcIixcbiAgICAgIGNvbnN0YW50OiBcIkNJUlJVU1wiLFxuICAgICAgZW52OiBcIkNJUlJVU19DSVwiLFxuICAgICAgcHI6IFwiQ0lSUlVTX1BSXCJcbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkFXUyBDb2RlQnVpbGRcIixcbiAgICAgIGNvbnN0YW50OiBcIkNPREVCVUlMRFwiLFxuICAgICAgZW52OiBcIkNPREVCVUlMRF9CVUlMRF9BUk5cIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiQ29kZWZyZXNoXCIsXG4gICAgICBjb25zdGFudDogXCJDT0RFRlJFU0hcIixcbiAgICAgIGVudjogXCJDRl9CVUlMRF9JRFwiLFxuICAgICAgcHI6IHtcbiAgICAgICAgYW55OiBbXCJDRl9QVUxMX1JFUVVFU1RfTlVNQkVSXCIsIFwiQ0ZfUFVMTF9SRVFVRVNUX0lEXCJdXG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogXCJDb2Rlc2hpcFwiLFxuICAgICAgY29uc3RhbnQ6IFwiQ09ERVNISVBcIixcbiAgICAgIGVudjoge1xuICAgICAgICBDSV9OQU1FOiBcImNvZGVzaGlwXCJcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkRyb25lXCIsXG4gICAgICBjb25zdGFudDogXCJEUk9ORVwiLFxuICAgICAgZW52OiBcIkRST05FXCIsXG4gICAgICBwcjoge1xuICAgICAgICBEUk9ORV9CVUlMRF9FVkVOVDogXCJwdWxsX3JlcXVlc3RcIlxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiZHNhcmlcIixcbiAgICAgIGNvbnN0YW50OiBcIkRTQVJJXCIsXG4gICAgICBlbnY6IFwiRFNBUklcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiRXhwbyBBcHBsaWNhdGlvbiBTZXJ2aWNlc1wiLFxuICAgICAgY29uc3RhbnQ6IFwiRUFTXCIsXG4gICAgICBlbnY6IFwiRUFTX0JVSUxEXCJcbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkdpdEh1YiBBY3Rpb25zXCIsXG4gICAgICBjb25zdGFudDogXCJHSVRIVUJfQUNUSU9OU1wiLFxuICAgICAgZW52OiBcIkdJVEhVQl9BQ1RJT05TXCIsXG4gICAgICBwcjoge1xuICAgICAgICBHSVRIVUJfRVZFTlRfTkFNRTogXCJwdWxsX3JlcXVlc3RcIlxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiR2l0TGFiIENJXCIsXG4gICAgICBjb25zdGFudDogXCJHSVRMQUJcIixcbiAgICAgIGVudjogXCJHSVRMQUJfQ0lcIixcbiAgICAgIHByOiBcIkNJX01FUkdFX1JFUVVFU1RfSURcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiR29DRFwiLFxuICAgICAgY29uc3RhbnQ6IFwiR09DRFwiLFxuICAgICAgZW52OiBcIkdPX1BJUEVMSU5FX0xBQkVMXCJcbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIkxheWVyQ0lcIixcbiAgICAgIGNvbnN0YW50OiBcIkxBWUVSQ0lcIixcbiAgICAgIGVudjogXCJMQVlFUkNJXCIsXG4gICAgICBwcjogXCJMQVlFUkNJX1BVTExfUkVRVUVTVFwiXG4gICAgfSwge1xuICAgICAgbmFtZTogXCJIdWRzb25cIixcbiAgICAgIGNvbnN0YW50OiBcIkhVRFNPTlwiLFxuICAgICAgZW52OiBcIkhVRFNPTl9VUkxcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiSmVua2luc1wiLFxuICAgICAgY29uc3RhbnQ6IFwiSkVOS0lOU1wiLFxuICAgICAgZW52OiBbXCJKRU5LSU5TX1VSTFwiLCBcIkJVSUxEX0lEXCJdLFxuICAgICAgcHI6IHtcbiAgICAgICAgYW55OiBbXCJnaHByYlB1bGxJZFwiLCBcIkNIQU5HRV9JRFwiXVxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiTWFnbnVtIENJXCIsXG4gICAgICBjb25zdGFudDogXCJNQUdOVU1cIixcbiAgICAgIGVudjogXCJNQUdOVU1cIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiTmV0bGlmeSBDSVwiLFxuICAgICAgY29uc3RhbnQ6IFwiTkVUTElGWVwiLFxuICAgICAgZW52OiBcIk5FVExJRllcIixcbiAgICAgIHByOiB7XG4gICAgICAgIGVudjogXCJQVUxMX1JFUVVFU1RcIixcbiAgICAgICAgbmU6IFwiZmFsc2VcIlxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiTmV2ZXJjb2RlXCIsXG4gICAgICBjb25zdGFudDogXCJORVZFUkNPREVcIixcbiAgICAgIGVudjogXCJORVZFUkNPREVcIixcbiAgICAgIHByOiB7XG4gICAgICAgIGVudjogXCJORVZFUkNPREVfUFVMTF9SRVFVRVNUXCIsXG4gICAgICAgIG5lOiBcImZhbHNlXCJcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIlJlbmRlclwiLFxuICAgICAgY29uc3RhbnQ6IFwiUkVOREVSXCIsXG4gICAgICBlbnY6IFwiUkVOREVSXCIsXG4gICAgICBwcjoge1xuICAgICAgICBJU19QVUxMX1JFUVVFU1Q6IFwidHJ1ZVwiXG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogXCJTYWlsIENJXCIsXG4gICAgICBjb25zdGFudDogXCJTQUlMXCIsXG4gICAgICBlbnY6IFwiU0FJTENJXCIsXG4gICAgICBwcjogXCJTQUlMX1BVTExfUkVRVUVTVF9OVU1CRVJcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiU2VtYXBob3JlXCIsXG4gICAgICBjb25zdGFudDogXCJTRU1BUEhPUkVcIixcbiAgICAgIGVudjogXCJTRU1BUEhPUkVcIixcbiAgICAgIHByOiBcIlBVTExfUkVRVUVTVF9OVU1CRVJcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiU2NyZXdkcml2ZXJcIixcbiAgICAgIGNvbnN0YW50OiBcIlNDUkVXRFJJVkVSXCIsXG4gICAgICBlbnY6IFwiU0NSRVdEUklWRVJcIixcbiAgICAgIHByOiB7XG4gICAgICAgIGVudjogXCJTRF9QVUxMX1JFUVVFU1RcIixcbiAgICAgICAgbmU6IFwiZmFsc2VcIlxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiU2hpcHBhYmxlXCIsXG4gICAgICBjb25zdGFudDogXCJTSElQUEFCTEVcIixcbiAgICAgIGVudjogXCJTSElQUEFCTEVcIixcbiAgICAgIHByOiB7XG4gICAgICAgIElTX1BVTExfUkVRVUVTVDogXCJ0cnVlXCJcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIlNvbGFubyBDSVwiLFxuICAgICAgY29uc3RhbnQ6IFwiU09MQU5PXCIsXG4gICAgICBlbnY6IFwiVERESVVNXCIsXG4gICAgICBwcjogXCJURERJVU1fUFJfSURcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiU3RyaWRlciBDRFwiLFxuICAgICAgY29uc3RhbnQ6IFwiU1RSSURFUlwiLFxuICAgICAgZW52OiBcIlNUUklERVJcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiVGFza0NsdXN0ZXJcIixcbiAgICAgIGNvbnN0YW50OiBcIlRBU0tDTFVTVEVSXCIsXG4gICAgICBlbnY6IFtcIlRBU0tfSURcIiwgXCJSVU5fSURcIl1cbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIlRlYW1DaXR5XCIsXG4gICAgICBjb25zdGFudDogXCJURUFNQ0lUWVwiLFxuICAgICAgZW52OiBcIlRFQU1DSVRZX1ZFUlNJT05cIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiVHJhdmlzIENJXCIsXG4gICAgICBjb25zdGFudDogXCJUUkFWSVNcIixcbiAgICAgIGVudjogXCJUUkFWSVNcIixcbiAgICAgIHByOiB7XG4gICAgICAgIGVudjogXCJUUkFWSVNfUFVMTF9SRVFVRVNUXCIsXG4gICAgICAgIG5lOiBcImZhbHNlXCJcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiBcIlZlcmNlbFwiLFxuICAgICAgY29uc3RhbnQ6IFwiVkVSQ0VMXCIsXG4gICAgICBlbnY6IFwiTk9XX0JVSUxERVJcIlxuICAgIH0sIHtcbiAgICAgIG5hbWU6IFwiVmlzdWFsIFN0dWRpbyBBcHAgQ2VudGVyXCIsXG4gICAgICBjb25zdGFudDogXCJBUFBDRU5URVJcIixcbiAgICAgIGVudjogXCJBUFBDRU5URVJfQlVJTERfSURcIlxuICAgIH1dO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NpX2luZm8gPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY2ktaW5mby9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHZlbmRvcnMgPSByZXF1aXJlX3ZlbmRvcnMoKTtcbiAgICB2YXIgZW52ID0gcHJvY2Vzcy5lbnY7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl92ZW5kb3JzXCIsIHtcbiAgICAgIHZhbHVlOiB2ZW5kb3JzLm1hcChmdW5jdGlvbih2KSB7XG4gICAgICAgIHJldHVybiB2LmNvbnN0YW50O1xuICAgICAgfSlcbiAgICB9KTtcbiAgICBleHBvcnRzMi5uYW1lID0gbnVsbDtcbiAgICBleHBvcnRzMi5pc1BSID0gbnVsbDtcbiAgICB2ZW5kb3JzLmZvckVhY2goZnVuY3Rpb24odmVuZG9yKSB7XG4gICAgICBjb25zdCBlbnZzID0gQXJyYXkuaXNBcnJheSh2ZW5kb3IuZW52KSA/IHZlbmRvci5lbnYgOiBbdmVuZG9yLmVudl07XG4gICAgICBjb25zdCBpc0NJID0gZW52cy5ldmVyeShmdW5jdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrRW52KG9iaik7XG4gICAgICB9KTtcbiAgICAgIGV4cG9ydHMyW3ZlbmRvci5jb25zdGFudF0gPSBpc0NJO1xuICAgICAgaWYgKGlzQ0kpIHtcbiAgICAgICAgZXhwb3J0czIubmFtZSA9IHZlbmRvci5uYW1lO1xuICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2ZW5kb3IucHIpIHtcbiAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICBleHBvcnRzMi5pc1BSID0gISFlbnZbdmVuZG9yLnByXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgIGlmIChcImVudlwiIGluIHZlbmRvci5wcikge1xuICAgICAgICAgICAgICBleHBvcnRzMi5pc1BSID0gdmVuZG9yLnByLmVudiBpbiBlbnYgJiYgZW52W3ZlbmRvci5wci5lbnZdICE9PSB2ZW5kb3IucHIubmU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFwiYW55XCIgaW4gdmVuZG9yLnByKSB7XG4gICAgICAgICAgICAgIGV4cG9ydHMyLmlzUFIgPSB2ZW5kb3IucHIuYW55LnNvbWUoZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhZW52W2tleV07XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZXhwb3J0czIuaXNQUiA9IGNoZWNrRW52KHZlbmRvci5wcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZXhwb3J0czIuaXNQUiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBleHBvcnRzMi5pc0NJID0gISEoZW52LkNJIHx8IGVudi5DT05USU5VT1VTX0lOVEVHUkFUSU9OIHx8IGVudi5CVUlMRF9OVU1CRVIgfHwgZW52LlJVTl9JRCB8fCBleHBvcnRzMi5uYW1lIHx8IGZhbHNlKTtcbiAgICBmdW5jdGlvbiBjaGVja0VudihvYmopIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gISFlbnZbb2JqXTtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmV2ZXJ5KGZ1bmN0aW9uKGspIHtcbiAgICAgICAgcmV0dXJuIGVudltrXSA9PT0gb2JqW2tdO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb3NtaWNvbmZpZzogcmVxdWlyZV9kaXN0MigpLmNvc21pY29uZmlnLFxuICBjb3NtaWNvbmZpZ1N5bmM6IHJlcXVpcmVfZGlzdDIoKS5jb3NtaWNvbmZpZ1N5bmMsXG4gIGZpbmRQYXJlbnREaXI6IHJlcXVpcmVfZmluZF9wYXJlbnRfZGlyKCkuc3luYyxcbiAgZ2V0U3RkaW46IHJlcXVpcmVfZ2V0X3N0ZGluKCksXG4gIGlzQ0k6ICgpID0+IHJlcXVpcmVfY2lfaW5mbygpLmlzQ0lcbn07XG4iLCAiKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlPT1cIm9iamVjdFwiKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKHR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZClkZWZpbmUoZSk7ZWxzZXt2YXIgaT10eXBlb2YgZ2xvYmFsVGhpczxcInVcIj9nbG9iYWxUaGlzOnR5cGVvZiBnbG9iYWw8XCJ1XCI/Z2xvYmFsOnR5cGVvZiBzZWxmPFwidVwiP3NlbGY6dGhpc3x8e307aS5wcmV0dGllclBsdWdpbnM9aS5wcmV0dGllclBsdWdpbnN8fHt9LGkucHJldHRpZXJQbHVnaW5zLmJhYmVsPWUoKX19KShmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBiPShoLGwpPT4oKT0+KGx8fGgoKGw9e2V4cG9ydHM6e319KS5leHBvcnRzLGwpLGwuZXhwb3J0cyk7dmFyIEc9YigoemYsSnIpPT57dmFyIFR0PWZ1bmN0aW9uKGgpe3JldHVybiBoJiZoLk1hdGg9PU1hdGgmJmh9O0pyLmV4cG9ydHM9VHQodHlwZW9mIGdsb2JhbFRoaXM9PVwib2JqZWN0XCImJmdsb2JhbFRoaXMpfHxUdCh0eXBlb2Ygd2luZG93PT1cIm9iamVjdFwiJiZ3aW5kb3cpfHxUdCh0eXBlb2Ygc2VsZj09XCJvYmplY3RcIiYmc2VsZil8fFR0KHR5cGVvZiBnbG9iYWw9PVwib2JqZWN0XCImJmdsb2JhbCl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX0pO3ZhciBBZT1iKChLZixZcik9PntZci5leHBvcnRzPWZ1bmN0aW9uKGgpe3RyeXtyZXR1cm4hIWgoKX1jYXRjaHtyZXR1cm4hMH19fSk7dmFyIGtlPWIoKFZmLCRyKT0+e3ZhciBobD1BZSgpOyRyLmV4cG9ydHM9IWhsKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXSE9N30pfSk7dmFyIEV0PWIoKEhmLFFyKT0+e3ZhciBsbD1BZSgpO1FyLmV4cG9ydHM9IWxsKGZ1bmN0aW9uKCl7dmFyIGg9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4gdHlwZW9mIGghPVwiZnVuY3Rpb25cInx8aC5oYXNPd25Qcm9wZXJ0eShcInByb3RvdHlwZVwiKX0pfSk7dmFyIGJ0PWIoKFdmLFpyKT0+e3ZhciB1bD1FdCgpLEN0PUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1pyLmV4cG9ydHM9dWw/Q3QuYmluZChDdCk6ZnVuY3Rpb24oKXtyZXR1cm4gQ3QuYXBwbHkoQ3QsYXJndW1lbnRzKX19KTt2YXIgcmk9YihzaT0+e1widXNlIHN0cmljdFwiO3ZhciBlaT17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSx0aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGNsPXRpJiYhZWkuY2FsbCh7MToyfSwxKTtzaS5mPWNsP2Z1bmN0aW9uKGwpe3ZhciBwPXRpKHRoaXMsbCk7cmV0dXJuISFwJiZwLmVudW1lcmFibGV9OmVpfSk7dmFyIG1zPWIoKFhmLGlpKT0+e2lpLmV4cG9ydHM9ZnVuY3Rpb24oaCxsKXtyZXR1cm57ZW51bWVyYWJsZTohKGgmMSksY29uZmlndXJhYmxlOiEoaCYyKSx3cml0YWJsZTohKGgmNCksdmFsdWU6bH19fSk7dmFyIGllPWIoKEpmLG9pKT0+e3ZhciBhaT1FdCgpLG5pPUZ1bmN0aW9uLnByb3RvdHlwZSxwbD1uaS5iaW5kLHlzPW5pLmNhbGwsZmw9YWkmJnBsLmJpbmQoeXMseXMpO29pLmV4cG9ydHM9YWk/ZnVuY3Rpb24oaCl7cmV0dXJuIGgmJmZsKGgpfTpmdW5jdGlvbihoKXtyZXR1cm4gaCYmZnVuY3Rpb24oKXtyZXR1cm4geXMuYXBwbHkoaCxhcmd1bWVudHMpfX19KTt2YXIgdnQ9YigoWWYsbGkpPT57dmFyIGhpPWllKCksZGw9aGkoe30udG9TdHJpbmcpLG1sPWhpKFwiXCIuc2xpY2UpO2xpLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIG1sKGRsKGgpLDgsLTEpfX0pO3ZhciBjaT1iKCgkZix1aSk9Pnt2YXIgeWw9RygpLHhsPWllKCksZ2w9QWUoKSxBbD12dCgpLHhzPXlsLk9iamVjdCxQbD14bChcIlwiLnNwbGl0KTt1aS5leHBvcnRzPWdsKGZ1bmN0aW9uKCl7cmV0dXJuIXhzKFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKGgpe3JldHVybiBBbChoKT09XCJTdHJpbmdcIj9QbChoLFwiXCIpOnhzKGgpfTp4c30pO3ZhciBncz1iKChRZixwaSk9Pnt2YXIgVGw9RygpLEVsPVRsLlR5cGVFcnJvcjtwaS5leHBvcnRzPWZ1bmN0aW9uKGgpe2lmKGg9PW51bGwpdGhyb3cgRWwoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIitoKTtyZXR1cm4gaH19KTt2YXIgU3Q9YigoWmYsZmkpPT57dmFyIENsPWNpKCksYmw9Z3MoKTtmaS5leHBvcnRzPWZ1bmN0aW9uKGgpe3JldHVybiBDbChibChoKSl9fSk7dmFyIGFlPWIoKGVkLGRpKT0+e2RpLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIHR5cGVvZiBoPT1cImZ1bmN0aW9uXCJ9fSk7dmFyIERlPWIoKHRkLG1pKT0+e3ZhciB2bD1hZSgpO21pLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIHR5cGVvZiBoPT1cIm9iamVjdFwiP2ghPT1udWxsOnZsKGgpfX0pO3ZhciBRZT1iKChzZCx5aSk9Pnt2YXIgQXM9RygpLFNsPWFlKCksd2w9ZnVuY3Rpb24oaCl7cmV0dXJuIFNsKGgpP2g6dm9pZCAwfTt5aS5leHBvcnRzPWZ1bmN0aW9uKGgsbCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj93bChBc1toXSk6QXNbaF0mJkFzW2hdW2xdfX0pO3ZhciBnaT1iKChyZCx4aSk9Pnt2YXIgTmw9aWUoKTt4aS5leHBvcnRzPU5sKHt9LmlzUHJvdG90eXBlT2YpfSk7dmFyIFBpPWIoKGlkLEFpKT0+e3ZhciBJbD1RZSgpO0FpLmV4cG9ydHM9SWwoXCJuYXZpZ2F0b3JcIixcInVzZXJBZ2VudFwiKXx8XCJcIn0pO3ZhciB3aT1iKChhZCxTaSk9Pnt2YXIgdmk9RygpLFBzPVBpKCksVGk9dmkucHJvY2VzcyxFaT12aS5EZW5vLENpPVRpJiZUaS52ZXJzaW9uc3x8RWkmJkVpLnZlcnNpb24sYmk9Q2kmJkNpLnY4LG9lLHd0O2JpJiYob2U9Ymkuc3BsaXQoXCIuXCIpLHd0PW9lWzBdPjAmJm9lWzBdPDQ/MTorKG9lWzBdK29lWzFdKSk7IXd0JiZQcyYmKG9lPVBzLm1hdGNoKC9FZGdlXFwvKFxcZCspLyksKCFvZXx8b2VbMV0+PTc0KSYmKG9lPVBzLm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKSxvZSYmKHd0PStvZVsxXSkpKTtTaS5leHBvcnRzPXd0fSk7dmFyIFRzPWIoKG5kLElpKT0+e3ZhciBOaT13aSgpLGtsPUFlKCk7SWkuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFrbChmdW5jdGlvbigpe3ZhciBoPVN5bWJvbCgpO3JldHVybiFTdHJpbmcoaCl8fCEoT2JqZWN0KGgpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJk5pJiZOaTw0MX0pfSk7dmFyIEVzPWIoKG9kLGtpKT0+e3ZhciBEbD1UcygpO2tpLmV4cG9ydHM9RGwmJiFTeW1ib2wuc2hhbSYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09XCJzeW1ib2xcIn0pO3ZhciBDcz1iKChoZCxEaSk9Pnt2YXIgRmw9RygpLExsPVFlKCksT2w9YWUoKSxCbD1naSgpLE1sPUVzKCksUmw9RmwuT2JqZWN0O0RpLmV4cG9ydHM9TWw/ZnVuY3Rpb24oaCl7cmV0dXJuIHR5cGVvZiBoPT1cInN5bWJvbFwifTpmdW5jdGlvbihoKXt2YXIgbD1MbChcIlN5bWJvbFwiKTtyZXR1cm4gT2wobCkmJkJsKGwucHJvdG90eXBlLFJsKGgpKX19KTt2YXIgTGk9YigobGQsRmkpPT57dmFyIGpsPUcoKSxxbD1qbC5TdHJpbmc7RmkuZXhwb3J0cz1mdW5jdGlvbihoKXt0cnl7cmV0dXJuIHFsKGgpfWNhdGNoe3JldHVyblwiT2JqZWN0XCJ9fX0pO3ZhciBOdD1iKCh1ZCxPaSk9Pnt2YXIgVWw9RygpLF9sPWFlKCksemw9TGkoKSxLbD1VbC5UeXBlRXJyb3I7T2kuZXhwb3J0cz1mdW5jdGlvbihoKXtpZihfbChoKSlyZXR1cm4gaDt0aHJvdyBLbCh6bChoKStcIiBpcyBub3QgYSBmdW5jdGlvblwiKX19KTt2YXIgTWk9YigoY2QsQmkpPT57dmFyIFZsPU50KCk7QmkuZXhwb3J0cz1mdW5jdGlvbihoLGwpe3ZhciBwPWhbbF07cmV0dXJuIHA9PW51bGw/dm9pZCAwOlZsKHApfX0pO3ZhciBqaT1iKChwZCxSaSk9Pnt2YXIgSGw9RygpLGJzPWJ0KCksdnM9YWUoKSxTcz1EZSgpLFdsPUhsLlR5cGVFcnJvcjtSaS5leHBvcnRzPWZ1bmN0aW9uKGgsbCl7dmFyIHAsZDtpZihsPT09XCJzdHJpbmdcIiYmdnMocD1oLnRvU3RyaW5nKSYmIVNzKGQ9YnMocCxoKSl8fHZzKHA9aC52YWx1ZU9mKSYmIVNzKGQ9YnMocCxoKSl8fGwhPT1cInN0cmluZ1wiJiZ2cyhwPWgudG9TdHJpbmcpJiYhU3MoZD1icyhwLGgpKSlyZXR1cm4gZDt0aHJvdyBXbChcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19KTt2YXIgVWk9YigoZmQscWkpPT57cWkuZXhwb3J0cz0hMX0pO3ZhciBJdD1iKChkZCx6aSk9Pnt2YXIgX2k9RygpLEdsPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt6aS5leHBvcnRzPWZ1bmN0aW9uKGgsbCl7dHJ5e0dsKF9pLGgse3ZhbHVlOmwsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2h7X2lbaF09bH1yZXR1cm4gbH19KTt2YXIga3Q9YigobWQsVmkpPT57dmFyIFhsPUcoKSxKbD1JdCgpLEtpPVwiX19jb3JlLWpzX3NoYXJlZF9fXCIsWWw9WGxbS2ldfHxKbChLaSx7fSk7VmkuZXhwb3J0cz1ZbH0pO3ZhciB3cz1iKCh5ZCxXaSk9Pnt2YXIgJGw9VWkoKSxIaT1rdCgpOyhXaS5leHBvcnRzPWZ1bmN0aW9uKGgsbCl7cmV0dXJuIEhpW2hdfHwoSGlbaF09bCE9PXZvaWQgMD9sOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpcIjMuMjIuMlwiLG1vZGU6JGw/XCJwdXJlXCI6XCJnbG9iYWxcIixjb3B5cmlnaHQ6XCJcXHhBOSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlcIixsaWNlbnNlOlwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMi4yL0xJQ0VOU0VcIixzb3VyY2U6XCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qc1wifSl9KTt2YXIgTnM9YigoeGQsR2kpPT57dmFyIFFsPUcoKSxabD1ncygpLGV1PVFsLk9iamVjdDtHaS5leHBvcnRzPWZ1bmN0aW9uKGgpe3JldHVybiBldShabChoKSl9fSk7dmFyIGJlPWIoKGdkLFhpKT0+e3ZhciB0dT1pZSgpLHN1PU5zKCkscnU9dHUoe30uaGFzT3duUHJvcGVydHkpO1hpLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24obCxwKXtyZXR1cm4gcnUoc3UobCkscCl9fSk7dmFyIElzPWIoKEFkLEppKT0+e3ZhciBpdT1pZSgpLGF1PTAsbnU9TWF0aC5yYW5kb20oKSxvdT1pdSgxIC50b1N0cmluZyk7SmkuZXhwb3J0cz1mdW5jdGlvbihoKXtyZXR1cm5cIlN5bWJvbChcIisoaD09PXZvaWQgMD9cIlwiOmgpK1wiKV9cIitvdSgrK2F1K251LDM2KX19KTt2YXIgWmU9YigoUGQsZWEpPT57dmFyIGh1PUcoKSxsdT13cygpLFlpPWJlKCksdXU9SXMoKSwkaT1UcygpLFppPUVzKCksX2U9bHUoXCJ3a3NcIiksRmU9aHUuU3ltYm9sLFFpPUZlJiZGZS5mb3IsY3U9Wmk/RmU6RmUmJkZlLndpdGhvdXRTZXR0ZXJ8fHV1O2VhLmV4cG9ydHM9ZnVuY3Rpb24oaCl7aWYoIVlpKF9lLGgpfHwhKCRpfHx0eXBlb2YgX2VbaF09PVwic3RyaW5nXCIpKXt2YXIgbD1cIlN5bWJvbC5cIitoOyRpJiZZaShGZSxoKT9fZVtoXT1GZVtoXTpaaSYmUWk/X2VbaF09UWkobCk6X2VbaF09Y3UobCl9cmV0dXJuIF9lW2hdfX0pO3ZhciBpYT1iKChUZCxyYSk9Pnt2YXIgcHU9RygpLGZ1PWJ0KCksdGE9RGUoKSxzYT1DcygpLGR1PU1pKCksbXU9amkoKSx5dT1aZSgpLHh1PXB1LlR5cGVFcnJvcixndT15dShcInRvUHJpbWl0aXZlXCIpO3JhLmV4cG9ydHM9ZnVuY3Rpb24oaCxsKXtpZighdGEoaCl8fHNhKGgpKXJldHVybiBoO3ZhciBwPWR1KGgsZ3UpLGQ7aWYocCl7aWYobD09PXZvaWQgMCYmKGw9XCJkZWZhdWx0XCIpLGQ9ZnUocCxoLGwpLCF0YShkKXx8c2EoZCkpcmV0dXJuIGQ7dGhyb3cgeHUoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9cmV0dXJuIGw9PT12b2lkIDAmJihsPVwibnVtYmVyXCIpLG11KGgsbCl9fSk7dmFyIGtzPWIoKEVkLGFhKT0+e3ZhciBBdT1pYSgpLFB1PUNzKCk7YWEuZXhwb3J0cz1mdW5jdGlvbihoKXt2YXIgbD1BdShoLFwic3RyaW5nXCIpO3JldHVybiBQdShsKT9sOmwrXCJcIn19KTt2YXIgaGE9YigoQ2Qsb2EpPT57dmFyIFR1PUcoKSxuYT1EZSgpLERzPVR1LmRvY3VtZW50LEV1PW5hKERzKSYmbmEoRHMuY3JlYXRlRWxlbWVudCk7b2EuZXhwb3J0cz1mdW5jdGlvbihoKXtyZXR1cm4gRXU/RHMuY3JlYXRlRWxlbWVudChoKTp7fX19KTt2YXIgRnM9YigoYmQsbGEpPT57dmFyIEN1PWtlKCksYnU9QWUoKSx2dT1oYSgpO2xhLmV4cG9ydHM9IUN1JiYhYnUoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHZ1KFwiZGl2XCIpLFwiYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hIT03fSl9KTt2YXIgTHM9YihjYT0+e3ZhciBTdT1rZSgpLHd1PWJ0KCksTnU9cmkoKSxJdT1tcygpLGt1PVN0KCksRHU9a3MoKSxGdT1iZSgpLEx1PUZzKCksdWE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtjYS5mPVN1P3VhOmZ1bmN0aW9uKGwscCl7aWYobD1rdShsKSxwPUR1KHApLEx1KXRyeXtyZXR1cm4gdWEobCxwKX1jYXRjaHt9aWYoRnUobCxwKSlyZXR1cm4gSXUoIXd1KE51LmYsbCxwKSxsW3BdKX19KTt2YXIgZmE9YigoU2QscGEpPT57dmFyIE91PWtlKCksQnU9QWUoKTtwYS5leHBvcnRzPU91JiZCdShmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKXt9LFwicHJvdG90eXBlXCIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlIT00Mn0pfSk7dmFyIE9zPWIoKHdkLG1hKT0+e3ZhciBkYT1HKCksTXU9RGUoKSxSdT1kYS5TdHJpbmcsanU9ZGEuVHlwZUVycm9yO21hLmV4cG9ydHM9ZnVuY3Rpb24oaCl7aWYoTXUoaCkpcmV0dXJuIGg7dGhyb3cganUoUnUoaCkrXCIgaXMgbm90IGFuIG9iamVjdFwiKX19KTt2YXIgcXM9Yih4YT0+e3ZhciBxdT1HKCksVXU9a2UoKSxfdT1GcygpLHp1PWZhKCksRHQ9T3MoKSx5YT1rcygpLEt1PXF1LlR5cGVFcnJvcixCcz1PYmplY3QuZGVmaW5lUHJvcGVydHksVnU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixNcz1cImVudW1lcmFibGVcIixScz1cImNvbmZpZ3VyYWJsZVwiLGpzPVwid3JpdGFibGVcIjt4YS5mPVV1P3p1P2Z1bmN0aW9uKGwscCxkKXtpZihEdChsKSxwPXlhKHApLER0KGQpLHR5cGVvZiBsPT1cImZ1bmN0aW9uXCImJnA9PT1cInByb3RvdHlwZVwiJiZcInZhbHVlXCJpbiBkJiZqcyBpbiBkJiYhZFtqc10pe3ZhciBtPVZ1KGwscCk7bSYmbVtqc10mJihsW3BdPWQudmFsdWUsZD17Y29uZmlndXJhYmxlOlJzIGluIGQ/ZFtSc106bVtSc10sZW51bWVyYWJsZTpNcyBpbiBkP2RbTXNdOm1bTXNdLHdyaXRhYmxlOiExfSl9cmV0dXJuIEJzKGwscCxkKX06QnM6ZnVuY3Rpb24obCxwLGQpe2lmKER0KGwpLHA9eWEocCksRHQoZCksX3UpdHJ5e3JldHVybiBCcyhsLHAsZCl9Y2F0Y2h7fWlmKFwiZ2V0XCJpbiBkfHxcInNldFwiaW4gZCl0aHJvdyBLdShcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkXCIpO3JldHVyblwidmFsdWVcImluIGQmJihsW3BdPWQudmFsdWUpLGx9fSk7dmFyIEZ0PWIoKElkLGdhKT0+e3ZhciBIdT1rZSgpLFd1PXFzKCksR3U9bXMoKTtnYS5leHBvcnRzPUh1P2Z1bmN0aW9uKGgsbCxwKXtyZXR1cm4gV3UuZihoLGwsR3UoMSxwKSl9OmZ1bmN0aW9uKGgsbCxwKXtyZXR1cm4gaFtsXT1wLGh9fSk7dmFyIEx0PWIoKGtkLEFhKT0+e3ZhciBYdT1pZSgpLEp1PWFlKCksVXM9a3QoKSxZdT1YdShGdW5jdGlvbi50b1N0cmluZyk7SnUoVXMuaW5zcGVjdFNvdXJjZSl8fChVcy5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGgpe3JldHVybiBZdShoKX0pO0FhLmV4cG9ydHM9VXMuaW5zcGVjdFNvdXJjZX0pO3ZhciBFYT1iKChEZCxUYSk9Pnt2YXIgJHU9RygpLFF1PWFlKCksWnU9THQoKSxQYT0kdS5XZWFrTWFwO1RhLmV4cG9ydHM9UXUoUGEpJiYvbmF0aXZlIGNvZGUvLnRlc3QoWnUoUGEpKX0pO3ZhciB2YT1iKChGZCxiYSk9Pnt2YXIgZWM9d3MoKSx0Yz1JcygpLENhPWVjKFwia2V5c1wiKTtiYS5leHBvcnRzPWZ1bmN0aW9uKGgpe3JldHVybiBDYVtoXXx8KENhW2hdPXRjKGgpKX19KTt2YXIgX3M9YigoTGQsU2EpPT57U2EuZXhwb3J0cz17fX0pO3ZhciBGYT1iKChPZCxEYSk9Pnt2YXIgc2M9RWEoKSxrYT1HKCksenM9aWUoKSxyYz1EZSgpLGljPUZ0KCksS3M9YmUoKSxWcz1rdCgpLGFjPXZhKCksbmM9X3MoKSx3YT1cIk9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkXCIsV3M9a2EuVHlwZUVycm9yLG9jPWthLldlYWtNYXAsT3QsZXQsQnQsaGM9ZnVuY3Rpb24oaCl7cmV0dXJuIEJ0KGgpP2V0KGgpOk90KGgse30pfSxsYz1mdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24obCl7dmFyIHA7aWYoIXJjKGwpfHwocD1ldChsKSkudHlwZSE9PWgpdGhyb3cgV3MoXCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFwiK2grXCIgcmVxdWlyZWRcIik7cmV0dXJuIHB9fTtzY3x8VnMuc3RhdGU/KHZlPVZzLnN0YXRlfHwoVnMuc3RhdGU9bmV3IG9jKSxOYT16cyh2ZS5nZXQpLEhzPXpzKHZlLmhhcyksSWE9enModmUuc2V0KSxPdD1mdW5jdGlvbihoLGwpe2lmKEhzKHZlLGgpKXRocm93IG5ldyBXcyh3YSk7cmV0dXJuIGwuZmFjYWRlPWgsSWEodmUsaCxsKSxsfSxldD1mdW5jdGlvbihoKXtyZXR1cm4gTmEodmUsaCl8fHt9fSxCdD1mdW5jdGlvbihoKXtyZXR1cm4gSHModmUsaCl9KTooTGU9YWMoXCJzdGF0ZVwiKSxuY1tMZV09ITAsT3Q9ZnVuY3Rpb24oaCxsKXtpZihLcyhoLExlKSl0aHJvdyBuZXcgV3Mod2EpO3JldHVybiBsLmZhY2FkZT1oLGljKGgsTGUsbCksbH0sZXQ9ZnVuY3Rpb24oaCl7cmV0dXJuIEtzKGgsTGUpP2hbTGVdOnt9fSxCdD1mdW5jdGlvbihoKXtyZXR1cm4gS3MoaCxMZSl9KTt2YXIgdmUsTmEsSHMsSWEsTGU7RGEuZXhwb3J0cz17c2V0Ok90LGdldDpldCxoYXM6QnQsZW5mb3JjZTpoYyxnZXR0ZXJGb3I6bGN9fSk7dmFyIEJhPWIoKEJkLE9hKT0+e3ZhciBHcz1rZSgpLHVjPWJlKCksTGE9RnVuY3Rpb24ucHJvdG90eXBlLGNjPUdzJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFhzPXVjKExhLFwibmFtZVwiKSxwYz1YcyYmZnVuY3Rpb24oKXt9Lm5hbWU9PT1cInNvbWV0aGluZ1wiLGZjPVhzJiYoIUdzfHxHcyYmY2MoTGEsXCJuYW1lXCIpLmNvbmZpZ3VyYWJsZSk7T2EuZXhwb3J0cz17RVhJU1RTOlhzLFBST1BFUjpwYyxDT05GSUdVUkFCTEU6ZmN9fSk7dmFyIFVhPWIoKE1kLHFhKT0+e3ZhciBkYz1HKCksTWE9YWUoKSxtYz1iZSgpLFJhPUZ0KCkseWM9SXQoKSx4Yz1MdCgpLGphPUZhKCksZ2M9QmEoKS5DT05GSUdVUkFCTEUsQWM9amEuZ2V0LFBjPWphLmVuZm9yY2UsVGM9U3RyaW5nKFN0cmluZykuc3BsaXQoXCJTdHJpbmdcIik7KHFhLmV4cG9ydHM9ZnVuY3Rpb24oaCxsLHAsZCl7dmFyIG09ZD8hIWQudW5zYWZlOiExLEE9ZD8hIWQuZW51bWVyYWJsZTohMSxnPWQ/ISFkLm5vVGFyZ2V0R2V0OiExLHg9ZCYmZC5uYW1lIT09dm9pZCAwP2QubmFtZTpsLFQ7aWYoTWEocCkmJihTdHJpbmcoeCkuc2xpY2UoMCw3KT09PVwiU3ltYm9sKFwiJiYoeD1cIltcIitTdHJpbmcoeCkucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLFwiJDFcIikrXCJdXCIpLCghbWMocCxcIm5hbWVcIil8fGdjJiZwLm5hbWUhPT14KSYmUmEocCxcIm5hbWVcIix4KSxUPVBjKHApLFQuc291cmNlfHwoVC5zb3VyY2U9VGMuam9pbih0eXBlb2YgeD09XCJzdHJpbmdcIj94OlwiXCIpKSksaD09PWRjKXtBP2hbbF09cDp5YyhsLHApO3JldHVybn1lbHNlIG0/IWcmJmhbbF0mJihBPSEwKTpkZWxldGUgaFtsXTtBP2hbbF09cDpSYShoLGwscCl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIE1hKHRoaXMpJiZBYyh0aGlzKS5zb3VyY2V8fHhjKHRoaXMpfSl9KTt2YXIgSnM9YigoUmQsX2EpPT57dmFyIEVjPU1hdGguY2VpbCxDYz1NYXRoLmZsb29yO19hLmV4cG9ydHM9ZnVuY3Rpb24oaCl7dmFyIGw9K2g7cmV0dXJuIGwhPT1sfHxsPT09MD8wOihsPjA/Q2M6RWMpKGwpfX0pO3ZhciBLYT1iKChqZCx6YSk9Pnt2YXIgYmM9SnMoKSx2Yz1NYXRoLm1heCxTYz1NYXRoLm1pbjt6YS5leHBvcnRzPWZ1bmN0aW9uKGgsbCl7dmFyIHA9YmMoaCk7cmV0dXJuIHA8MD92YyhwK2wsMCk6U2MocCxsKX19KTt2YXIgSGE9YigocWQsVmEpPT57dmFyIHdjPUpzKCksTmM9TWF0aC5taW47VmEuZXhwb3J0cz1mdW5jdGlvbihoKXtyZXR1cm4gaD4wP05jKHdjKGgpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSk7dmFyIE10PWIoKFVkLFdhKT0+e3ZhciBJYz1IYSgpO1dhLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIEljKGgubGVuZ3RoKX19KTt2YXIgSmE9YigoX2QsWGEpPT57dmFyIGtjPVN0KCksRGM9S2EoKSxGYz1NdCgpLEdhPWZ1bmN0aW9uKGgpe3JldHVybiBmdW5jdGlvbihsLHAsZCl7dmFyIG09a2MobCksQT1GYyhtKSxnPURjKGQsQSkseDtpZihoJiZwIT1wKXtmb3IoO0E+ZzspaWYoeD1tW2crK10seCE9eClyZXR1cm4hMH1lbHNlIGZvcig7QT5nO2crKylpZigoaHx8ZyBpbiBtKSYmbVtnXT09PXApcmV0dXJuIGh8fGd8fDA7cmV0dXJuIWgmJi0xfX07WGEuZXhwb3J0cz17aW5jbHVkZXM6R2EoITApLGluZGV4T2Y6R2EoITEpfX0pO3ZhciBRYT1iKCh6ZCwkYSk9Pnt2YXIgTGM9aWUoKSxZcz1iZSgpLE9jPVN0KCksQmM9SmEoKS5pbmRleE9mLE1jPV9zKCksWWE9TGMoW10ucHVzaCk7JGEuZXhwb3J0cz1mdW5jdGlvbihoLGwpe3ZhciBwPU9jKGgpLGQ9MCxtPVtdLEE7Zm9yKEEgaW4gcCkhWXMoTWMsQSkmJllzKHAsQSkmJllhKG0sQSk7Zm9yKDtsLmxlbmd0aD5kOylZcyhwLEE9bFtkKytdKSYmKH5CYyhtLEEpfHxZYShtLEEpKTtyZXR1cm4gbX19KTt2YXIgZW49YigoS2QsWmEpPT57WmEuZXhwb3J0cz1bXCJjb25zdHJ1Y3RvclwiLFwiaGFzT3duUHJvcGVydHlcIixcImlzUHJvdG90eXBlT2ZcIixcInByb3BlcnR5SXNFbnVtZXJhYmxlXCIsXCJ0b0xvY2FsZVN0cmluZ1wiLFwidG9TdHJpbmdcIixcInZhbHVlT2ZcIl19KTt2YXIgc249Yih0bj0+e3ZhciBSYz1RYSgpLGpjPWVuKCkscWM9amMuY29uY2F0KFwibGVuZ3RoXCIsXCJwcm90b3R5cGVcIik7dG4uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24obCl7cmV0dXJuIFJjKGwscWMpfX0pO3ZhciBhbj1iKHJuPT57cm4uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSk7dmFyIG9uPWIoKFdkLG5uKT0+e3ZhciBVYz1RZSgpLF9jPWllKCksemM9c24oKSxLYz1hbigpLFZjPU9zKCksSGM9X2MoW10uY29uY2F0KTtubi5leHBvcnRzPVVjKFwiUmVmbGVjdFwiLFwib3duS2V5c1wiKXx8ZnVuY3Rpb24obCl7dmFyIHA9emMuZihWYyhsKSksZD1LYy5mO3JldHVybiBkP0hjKHAsZChsKSk6cH19KTt2YXIgdW49YigoR2QsbG4pPT57dmFyIGhuPWJlKCksV2M9b24oKSxHYz1McygpLFhjPXFzKCk7bG4uZXhwb3J0cz1mdW5jdGlvbihoLGwscCl7Zm9yKHZhciBkPVdjKGwpLG09WGMuZixBPUdjLmYsZz0wO2c8ZC5sZW5ndGg7ZysrKXt2YXIgeD1kW2ddOyFobihoLHgpJiYhKHAmJmhuKHAseCkpJiZtKGgseCxBKGwseCkpfX19KTt2YXIgcG49YigoWGQsY24pPT57dmFyIEpjPUFlKCksWWM9YWUoKSwkYz0vI3xcXC5wcm90b3R5cGVcXC4vLHR0PWZ1bmN0aW9uKGgsbCl7dmFyIHA9WmNbUWMoaCldO3JldHVybiBwPT10cD8hMDpwPT1lcD8hMTpZYyhsKT9KYyhsKTohIWx9LFFjPXR0Lm5vcm1hbGl6ZT1mdW5jdGlvbihoKXtyZXR1cm4gU3RyaW5nKGgpLnJlcGxhY2UoJGMsXCIuXCIpLnRvTG93ZXJDYXNlKCl9LFpjPXR0LmRhdGE9e30sZXA9dHQuTkFUSVZFPVwiTlwiLHRwPXR0LlBPTFlGSUxMPVwiUFwiO2NuLmV4cG9ydHM9dHR9KTt2YXIgUXM9YigoSmQsZm4pPT57dmFyICRzPUcoKSxzcD1McygpLmYscnA9RnQoKSxpcD1VYSgpLGFwPUl0KCksbnA9dW4oKSxvcD1wbigpO2ZuLmV4cG9ydHM9ZnVuY3Rpb24oaCxsKXt2YXIgcD1oLnRhcmdldCxkPWguZ2xvYmFsLG09aC5zdGF0LEEsZyx4LFQsayxEO2lmKGQ/Zz0kczptP2c9JHNbcF18fGFwKHAse30pOmc9KCRzW3BdfHx7fSkucHJvdG90eXBlLGcpZm9yKHggaW4gbCl7aWYoaz1sW3hdLGgubm9UYXJnZXRHZXQ/KEQ9c3AoZyx4KSxUPUQmJkQudmFsdWUpOlQ9Z1t4XSxBPW9wKGQ/eDpwKyhtP1wiLlwiOlwiI1wiKSt4LGguZm9yY2VkKSwhQSYmVCE9PXZvaWQgMCl7aWYodHlwZW9mIGs9PXR5cGVvZiBUKWNvbnRpbnVlO25wKGssVCl9KGguc2hhbXx8VCYmVC5zaGFtKSYmcnAoayxcInNoYW1cIiwhMCksaXAoZyx4LGssaCl9fX0pO3ZhciBkbj1iKCgpPT57dmFyIGhwPVFzKCksbHA9RygpO2hwKHtnbG9iYWw6ITB9LHtnbG9iYWxUaGlzOmxwfSl9KTt2YXIgbW49YigoKT0+e2RuKCl9KTt2YXIgWnM9YigoZW0seW4pPT57dmFyIHVwPXZ0KCk7eW4uZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihsKXtyZXR1cm4gdXAobCk9PVwiQXJyYXlcIn19KTt2YXIgQW49YigodG0sZ24pPT57dmFyIHhuPWllKCksY3A9TnQoKSxwcD1FdCgpLGZwPXhuKHhuLmJpbmQpO2duLmV4cG9ydHM9ZnVuY3Rpb24oaCxsKXtyZXR1cm4gY3AoaCksbD09PXZvaWQgMD9oOnBwP2ZwKGgsbCk6ZnVuY3Rpb24oKXtyZXR1cm4gaC5hcHBseShsLGFyZ3VtZW50cyl9fX0pO3ZhciBFbj1iKChzbSxUbik9PntcInVzZSBzdHJpY3RcIjt2YXIgZHA9RygpLG1wPVpzKCkseXA9TXQoKSx4cD1BbigpLGdwPWRwLlR5cGVFcnJvcixQbj1mdW5jdGlvbihoLGwscCxkLG0sQSxnLHgpe2Zvcih2YXIgVD1tLGs9MCxEPWc/eHAoZyx4KTohMSxFLEw7azxkOyl7aWYoayBpbiBwKXtpZihFPUQ/RChwW2tdLGssbCk6cFtrXSxBPjAmJm1wKEUpKUw9eXAoRSksVD1QbihoLGwsRSxMLFQsQS0xKS0xO2Vsc2V7aWYoVD49OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBncChcIkV4Y2VlZCB0aGUgYWNjZXB0YWJsZSBhcnJheSBsZW5ndGhcIik7aFtUXT1FfVQrK31rKyt9cmV0dXJuIFR9O1RuLmV4cG9ydHM9UG59KTt2YXIgdm49Yigocm0sYm4pPT57dmFyIEFwPVplKCksUHA9QXAoXCJ0b1N0cmluZ1RhZ1wiKSxDbj17fTtDbltQcF09XCJ6XCI7Ym4uZXhwb3J0cz1TdHJpbmcoQ24pPT09XCJbb2JqZWN0IHpdXCJ9KTt2YXIgd249YigoaW0sU24pPT57dmFyIFRwPUcoKSxFcD12bigpLENwPWFlKCksUnQ9dnQoKSxicD1aZSgpLHZwPWJwKFwidG9TdHJpbmdUYWdcIiksU3A9VHAuT2JqZWN0LHdwPVJ0KGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk9PVwiQXJndW1lbnRzXCIsTnA9ZnVuY3Rpb24oaCxsKXt0cnl7cmV0dXJuIGhbbF19Y2F0Y2h7fX07U24uZXhwb3J0cz1FcD9SdDpmdW5jdGlvbihoKXt2YXIgbCxwLGQ7cmV0dXJuIGg9PT12b2lkIDA/XCJVbmRlZmluZWRcIjpoPT09bnVsbD9cIk51bGxcIjp0eXBlb2YocD1OcChsPVNwKGgpLHZwKSk9PVwic3RyaW5nXCI/cDp3cD9SdChsKTooZD1SdChsKSk9PVwiT2JqZWN0XCImJkNwKGwuY2FsbGVlKT9cIkFyZ3VtZW50c1wiOmR9fSk7dmFyIExuPWIoKGFtLEZuKT0+e3ZhciBJcD1pZSgpLGtwPUFlKCksTm49YWUoKSxEcD13bigpLEZwPVFlKCksTHA9THQoKSxJbj1mdW5jdGlvbigpe30sT3A9W10sa249RnAoXCJSZWZsZWN0XCIsXCJjb25zdHJ1Y3RcIiksZXI9L15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLyxCcD1JcChlci5leGVjKSxNcD0hZXIuZXhlYyhJbiksc3Q9ZnVuY3Rpb24obCl7aWYoIU5uKGwpKXJldHVybiExO3RyeXtyZXR1cm4ga24oSW4sT3AsbCksITB9Y2F0Y2h7cmV0dXJuITF9fSxEbj1mdW5jdGlvbihsKXtpZighTm4obCkpcmV0dXJuITE7c3dpdGNoKERwKGwpKXtjYXNlXCJBc3luY0Z1bmN0aW9uXCI6Y2FzZVwiR2VuZXJhdG9yRnVuY3Rpb25cIjpjYXNlXCJBc3luY0dlbmVyYXRvckZ1bmN0aW9uXCI6cmV0dXJuITF9dHJ5e3JldHVybiBNcHx8ISFCcChlcixMcChsKSl9Y2F0Y2h7cmV0dXJuITB9fTtEbi5zaGFtPSEwO0ZuLmV4cG9ydHM9IWtufHxrcChmdW5jdGlvbigpe3ZhciBoO3JldHVybiBzdChzdC5jYWxsKXx8IXN0KE9iamVjdCl8fCFzdChmdW5jdGlvbigpe2g9ITB9KXx8aH0pP0RuOnN0fSk7dmFyIFJuPWIoKG5tLE1uKT0+e3ZhciBScD1HKCksT249WnMoKSxqcD1MbigpLHFwPURlKCksVXA9WmUoKSxfcD1VcChcInNwZWNpZXNcIiksQm49UnAuQXJyYXk7TW4uZXhwb3J0cz1mdW5jdGlvbihoKXt2YXIgbDtyZXR1cm4gT24oaCkmJihsPWguY29uc3RydWN0b3IsanAobCkmJihsPT09Qm58fE9uKGwucHJvdG90eXBlKSk/bD12b2lkIDA6cXAobCkmJihsPWxbX3BdLGw9PT1udWxsJiYobD12b2lkIDApKSksbD09PXZvaWQgMD9CbjpsfX0pO3ZhciBxbj1iKChvbSxqbik9Pnt2YXIgenA9Um4oKTtqbi5leHBvcnRzPWZ1bmN0aW9uKGgsbCl7cmV0dXJuIG5ldyh6cChoKSkobD09PTA/MDpsKX19KTt2YXIgVW49YigoKT0+e1widXNlIHN0cmljdFwiO3ZhciBLcD1RcygpLFZwPUVuKCksSHA9TnQoKSxXcD1OcygpLEdwPU10KCksWHA9cW4oKTtLcCh7dGFyZ2V0OlwiQXJyYXlcIixwcm90bzohMH0se2ZsYXRNYXA6ZnVuY3Rpb24obCl7dmFyIHA9V3AodGhpcyksZD1HcChwKSxtO3JldHVybiBIcChsKSxtPVhwKHAsMCksbS5sZW5ndGg9VnAobSxwLHAsZCwwLDEsbCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksbX19KX0pO3ZhciBxZj1iKCh1bSxFbyk9Pnt2YXIgX24sem4sS24sVm4sSG47ZnVuY3Rpb24gcnQoaCxsKXtyZXR1cm4gbHx8KGw9aC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhoLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUobCl9fSkpfW1uKCk7VW4oKTt2YXIgaXI9T2JqZWN0LmRlZmluZVByb3BlcnR5LEpwPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsYXI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsWXA9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwkbj0oaCxsKT0+ZnVuY3Rpb24oKXtyZXR1cm4gaCYmKGw9KDAsaFthcihoKVswXV0pKGg9MCkpLGx9LEg9KGgsbCk9PmZ1bmN0aW9uKCl7cmV0dXJuIGx8fCgwLGhbYXIoaClbMF1dKSgobD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsbCksbC5leHBvcnRzfSwkcD0oaCxsKT0+e2Zvcih2YXIgcCBpbiBsKWlyKGgscCx7Z2V0OmxbcF0sZW51bWVyYWJsZTohMH0pfSxRcD0oaCxsLHAsZCk9PntpZihsJiZ0eXBlb2YgbD09XCJvYmplY3RcInx8dHlwZW9mIGw9PVwiZnVuY3Rpb25cIilmb3IobGV0IG0gb2YgYXIobCkpIVlwLmNhbGwoaCxtKSYmbSE9PXAmJmlyKGgsbSx7Z2V0OigpPT5sW21dLGVudW1lcmFibGU6IShkPUpwKGwsbSkpfHxkLmVudW1lcmFibGV9KTtyZXR1cm4gaH0sWnA9aD0+UXAoaXIoe30sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksaCksVj0kbih7XCI8ZGVmaW5lOnByb2Nlc3M+XCIoKXt9fSksZWY9SCh7XCJzcmMvdXRpbHMvdHJ5LWNvbWJpbmF0aW9ucy5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO2Z1bmN0aW9uIHAoKXtsZXQgZDtmb3IodmFyIG09YXJndW1lbnRzLmxlbmd0aCxBPW5ldyBBcnJheShtKSxnPTA7ZzxtO2crKylBW2ddPWFyZ3VtZW50c1tnXTtmb3IobGV0W3gsVF1vZiBBLmVudHJpZXMoKSl0cnl7cmV0dXJue3Jlc3VsdDpUKCl9fWNhdGNoKGspe3g9PT0wJiYoZD1rKX1yZXR1cm57ZXJyb3I6ZH19bC5leHBvcnRzPXB9fSksUW49SCh7XCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvZ2V0LXNoZWJhbmcuanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTtmdW5jdGlvbiBwKGQpe2lmKCFkLnN0YXJ0c1dpdGgoXCIjIVwiKSlyZXR1cm5cIlwiO2xldCBtPWQuaW5kZXhPZihgXG5gKTtyZXR1cm4gbT09PS0xP2Q6ZC5zbGljZSgwLG0pfWwuZXhwb3J0cz1wfX0pLHRmPUgoe1wic3JjL3V0aWxzL3RleHQvc2tpcC1pbmxpbmUtY29tbWVudC5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO2Z1bmN0aW9uIHAoZCxtKXtpZihtPT09ITEpcmV0dXJuITE7aWYoZC5jaGFyQXQobSk9PT1cIi9cIiYmZC5jaGFyQXQobSsxKT09PVwiKlwiKXtmb3IobGV0IEE9bSsyO0E8ZC5sZW5ndGg7KytBKWlmKGQuY2hhckF0KEEpPT09XCIqXCImJmQuY2hhckF0KEErMSk9PT1cIi9cIilyZXR1cm4gQSsyfXJldHVybiBtfWwuZXhwb3J0cz1wfX0pLHNmPUgoe1wic3JjL3V0aWxzL3RleHQvc2tpcC1uZXdsaW5lLmpzXCIoaCxsKXtcInVzZSBzdHJpY3RcIjtWKCk7ZnVuY3Rpb24gcChkLG0sQSl7bGV0IGc9QSYmQS5iYWNrd2FyZHM7aWYobT09PSExKXJldHVybiExO2xldCB4PWQuY2hhckF0KG0pO2lmKGcpe2lmKGQuY2hhckF0KG0tMSk9PT1cIlxcclwiJiZ4PT09YFxuYClyZXR1cm4gbS0yO2lmKHg9PT1gXG5gfHx4PT09XCJcXHJcInx8eD09PVwiXFx1MjAyOFwifHx4PT09XCJcXHUyMDI5XCIpcmV0dXJuIG0tMX1lbHNle2lmKHg9PT1cIlxcclwiJiZkLmNoYXJBdChtKzEpPT09YFxuYClyZXR1cm4gbSsyO2lmKHg9PT1gXG5gfHx4PT09XCJcXHJcInx8eD09PVwiXFx1MjAyOFwifHx4PT09XCJcXHUyMDI5XCIpcmV0dXJuIG0rMX1yZXR1cm4gbX1sLmV4cG9ydHM9cH19KSxabj1IKHtcInNyYy91dGlscy90ZXh0L3NraXAuanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTtmdW5jdGlvbiBwKHgpe3JldHVybihULGssRCk9PntsZXQgRT1EJiZELmJhY2t3YXJkcztpZihrPT09ITEpcmV0dXJuITE7bGV0e2xlbmd0aDpMfT1ULFI9aztmb3IoO1I+PTAmJlI8TDspe2xldCBGPVQuY2hhckF0KFIpO2lmKHggaW5zdGFuY2VvZiBSZWdFeHApe2lmKCF4LnRlc3QoRikpcmV0dXJuIFJ9ZWxzZSBpZigheC5pbmNsdWRlcyhGKSlyZXR1cm4gUjtFP1ItLTpSKyt9cmV0dXJuIFI9PT0tMXx8Uj09PUw/UjohMX19dmFyIGQ9cCgvXFxzLyksbT1wKFwiIFx0XCIpLEE9cChcIiw7IFx0XCIpLGc9cCgvW15cXG5cXHJdLyk7bC5leHBvcnRzPXtza2lwV2hpdGVzcGFjZTpkLHNraXBTcGFjZXM6bSxza2lwVG9MaW5lRW5kOkEsc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lOmd9fX0pLHJmPUgoe1wic3JjL3V0aWxzL3RleHQvc2tpcC10cmFpbGluZy1jb21tZW50LmpzXCIoaCxsKXtcInVzZSBzdHJpY3RcIjtWKCk7dmFye3NraXBFdmVyeXRoaW5nQnV0TmV3TGluZTpwfT1abigpO2Z1bmN0aW9uIGQobSxBKXtyZXR1cm4gQT09PSExPyExOm0uY2hhckF0KEEpPT09XCIvXCImJm0uY2hhckF0KEErMSk9PT1cIi9cIj9wKG0sQSk6QX1sLmV4cG9ydHM9ZH19KSxhZj1IKHtcInNyYy91dGlscy90ZXh0L2dldC1uZXh0LW5vbi1zcGFjZS1ub24tY29tbWVudC1jaGFyYWN0ZXItaW5kZXgtd2l0aC1zdGFydC1pbmRleC5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO3ZhciBwPXRmKCksZD1zZigpLG09cmYoKSx7c2tpcFNwYWNlczpBfT1abigpO2Z1bmN0aW9uIGcoeCxUKXtsZXQgaz1udWxsLEQ9VDtmb3IoO0QhPT1rOylrPUQsRD1BKHgsRCksRD1wKHgsRCksRD1tKHgsRCksRD1kKHgsRCk7cmV0dXJuIER9bC5leHBvcnRzPWd9fSksZW89e307JHAoZW8se0VPTDooKT0+cnIsYXJjaDooKT0+bmYsY3B1czooKT0+b28sZGVmYXVsdDooKT0+cG8sZW5kaWFubmVzczooKT0+dG8sZnJlZW1lbTooKT0+YW8sZ2V0TmV0d29ya0ludGVyZmFjZXM6KCk9PmNvLGhvc3RuYW1lOigpPT5zbyxsb2FkYXZnOigpPT5ybyxuZXR3b3JrSW50ZXJmYWNlczooKT0+dW8scGxhdGZvcm06KCk9Pm9mLHJlbGVhc2U6KCk9PmxvLHRtcERpcjooKT0+dHIsdG1wZGlyOigpPT5zcix0b3RhbG1lbTooKT0+bm8sdHlwZTooKT0+aG8sdXB0aW1lOigpPT5pb30pO2Z1bmN0aW9uIHRvKCl7aWYodHlwZW9mIGp0PlwidVwiKXt2YXIgaD1uZXcgQXJyYXlCdWZmZXIoMiksbD1uZXcgVWludDhBcnJheShoKSxwPW5ldyBVaW50MTZBcnJheShoKTtpZihsWzBdPTEsbFsxXT0yLHBbMF09PT0yNTgpanQ9XCJCRVwiO2Vsc2UgaWYocFswXT09PTUxMylqdD1cIkxFXCI7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZmlndXJlIG91dCBlbmRpYW5lc3NcIil9cmV0dXJuIGp0fWZ1bmN0aW9uIHNvKCl7cmV0dXJuIHR5cGVvZiBnbG9iYWxUaGlzLmxvY2F0aW9uPFwidVwiP2dsb2JhbFRoaXMubG9jYXRpb24uaG9zdG5hbWU6XCJcIn1mdW5jdGlvbiBybygpe3JldHVybltdfWZ1bmN0aW9uIGlvKCl7cmV0dXJuIDB9ZnVuY3Rpb24gYW8oKXtyZXR1cm4gTnVtYmVyLk1BWF9WQUxVRX1mdW5jdGlvbiBubygpe3JldHVybiBOdW1iZXIuTUFYX1ZBTFVFfWZ1bmN0aW9uIG9vKCl7cmV0dXJuW119ZnVuY3Rpb24gaG8oKXtyZXR1cm5cIkJyb3dzZXJcIn1mdW5jdGlvbiBsbygpe3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpcy5uYXZpZ2F0b3I8XCJ1XCI/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IuYXBwVmVyc2lvbjpcIlwifWZ1bmN0aW9uIHVvKCl7fWZ1bmN0aW9uIGNvKCl7fWZ1bmN0aW9uIG5mKCl7cmV0dXJuXCJqYXZhc2NyaXB0XCJ9ZnVuY3Rpb24gb2YoKXtyZXR1cm5cImJyb3dzZXJcIn1mdW5jdGlvbiB0cigpe3JldHVyblwiL3RtcFwifXZhciBqdCxzcixycixwbyxoZj0kbih7XCJub2RlLW1vZHVsZXMtcG9seWZpbGxzOm9zXCIoKXtWKCksc3I9dHIscnI9YFxuYCxwbz17RU9MOnJyLHRtcGRpcjpzcix0bXBEaXI6dHIsbmV0d29ya0ludGVyZmFjZXM6dW8sZ2V0TmV0d29ya0ludGVyZmFjZXM6Y28scmVsZWFzZTpsbyx0eXBlOmhvLGNwdXM6b28sdG90YWxtZW06bm8sZnJlZW1lbTphbyx1cHRpbWU6aW8sbG9hZGF2Zzpybyxob3N0bmFtZTpzbyxlbmRpYW5uZXNzOnRvfX19KSxsZj1IKHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHMtY29tbW9uanM6b3NcIihoLGwpe1YoKTt2YXIgcD0oaGYoKSxacChlbykpO2lmKHAmJnAuZGVmYXVsdCl7bC5leHBvcnRzPXAuZGVmYXVsdDtmb3IobGV0IGQgaW4gcClsLmV4cG9ydHNbZF09cFtkXX1lbHNlIHAmJihsLmV4cG9ydHM9cCl9fSksdWY9SCh7XCJub2RlX21vZHVsZXMvZGV0ZWN0LW5ld2xpbmUvaW5kZXguanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTt2YXIgcD1kPT57aWYodHlwZW9mIGQhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO2xldCBtPWQubWF0Y2goLyg/Olxccj9cXG4pL2cpfHxbXTtpZihtLmxlbmd0aD09PTApcmV0dXJuO2xldCBBPW0uZmlsdGVyKHg9Png9PT1gXFxyXG5gKS5sZW5ndGgsZz1tLmxlbmd0aC1BO3JldHVybiBBPmc/YFxcclxuYDpgXG5gfTtsLmV4cG9ydHM9cCxsLmV4cG9ydHMuZ3JhY2VmdWw9ZD0+dHlwZW9mIGQ9PVwic3RyaW5nXCImJnAoZCl8fGBcbmB9fSksY2Y9SCh7XCJub2RlX21vZHVsZXMvamVzdC1kb2NibG9jay9idWlsZC9pbmRleC5qc1wiKGgpe1widXNlIHN0cmljdFwiO1YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxoLmV4dHJhY3Q9UixoLnBhcnNlPVcsaC5wYXJzZVdpdGhDb21tZW50cz1ZLGgucHJpbnQ9TSxoLnN0cmlwPUY7ZnVuY3Rpb24gbCgpe2xldCB1PWxmKCk7cmV0dXJuIGw9ZnVuY3Rpb24oKXtyZXR1cm4gdX0sdX1mdW5jdGlvbiBwKCl7bGV0IHU9ZCh1ZigpKTtyZXR1cm4gcD1mdW5jdGlvbigpe3JldHVybiB1fSx1fWZ1bmN0aW9uIGQodSl7cmV0dXJuIHUmJnUuX19lc01vZHVsZT91OntkZWZhdWx0OnV9fXZhciBtPS9cXCpcXC8kLyxBPS9eXFwvXFwqXFwqLyxnPS9eXFxzKihcXC9cXCpcXCo/KC58XFxyP1xcbikqP1xcKlxcLykvLHg9LyhefFxccyspXFwvXFwvKFteXFxyXFxuXSopL2csVD0vXihcXHI/XFxuKSsvLGs9Lyg/Ol58XFxyP1xcbikgKihAW15cXHJcXG5dKj8pICpcXHI/XFxuICooPyFbXkBcXHJcXG5dKlxcL1xcL1teXSopKFteQFxcclxcblxcc11bXkBcXHJcXG5dKz8pICpcXHI/XFxuL2csRD0vKD86XnxcXHI/XFxuKSAqQChcXFMrKSAqKFteXFxyXFxuXSopL2csRT0vKFxccj9cXG58XikgKlxcKiA/L2csTD1bXTtmdW5jdGlvbiBSKHUpe2xldCBYPXUubWF0Y2goZyk7cmV0dXJuIFg/WFswXS50cmltTGVmdCgpOlwiXCJ9ZnVuY3Rpb24gRih1KXtsZXQgWD11Lm1hdGNoKGcpO3JldHVybiBYJiZYWzBdP3Uuc3Vic3RyaW5nKFhbMF0ubGVuZ3RoKTp1fWZ1bmN0aW9uIFcodSl7cmV0dXJuIFkodSkucHJhZ21hc31mdW5jdGlvbiBZKHUpe2xldCBYPSgwLHAoKS5kZWZhdWx0KSh1KXx8bCgpLkVPTDt1PXUucmVwbGFjZShBLFwiXCIpLnJlcGxhY2UobSxcIlwiKS5yZXBsYWNlKEUsXCIkMVwiKTtsZXQgc2U9XCJcIjtmb3IoO3NlIT09dTspc2U9dSx1PXUucmVwbGFjZShrLFwiXCIuY29uY2F0KFgsXCIkMSAkMlwiKS5jb25jYXQoWCkpO3U9dS5yZXBsYWNlKFQsXCJcIikudHJpbVJpZ2h0KCk7bGV0IEo9T2JqZWN0LmNyZWF0ZShudWxsKSxPZT11LnJlcGxhY2UoRCxcIlwiKS5yZXBsYWNlKFQsXCJcIikudHJpbVJpZ2h0KCksJDtmb3IoOyQ9RC5leGVjKHUpOyl7bGV0IHo9JFsyXS5yZXBsYWNlKHgsXCJcIik7dHlwZW9mIEpbJFsxXV09PVwic3RyaW5nXCJ8fEFycmF5LmlzQXJyYXkoSlskWzFdXSk/SlskWzFdXT1MLmNvbmNhdChKWyRbMV1dLHopOkpbJFsxXV09en1yZXR1cm57Y29tbWVudHM6T2UscHJhZ21hczpKfX1mdW5jdGlvbiBNKHUpe2xldHtjb21tZW50czpYPVwiXCIscHJhZ21hczpzZT17fX09dSxKPSgwLHAoKS5kZWZhdWx0KShYKXx8bCgpLkVPTCxPZT1cIi8qKlwiLCQ9XCIgKlwiLHo9XCIgKi9cIixPPU9iamVjdC5rZXlzKHNlKSxDPU8ubWFwKFo9PmooWixzZVtaXSkpLnJlZHVjZSgoWixoZSk9PlouY29uY2F0KGhlKSxbXSkubWFwKFo9PiQrXCIgXCIrWitKKS5qb2luKFwiXCIpO2lmKCFYKXtpZihPLmxlbmd0aD09PTApcmV0dXJuXCJcIjtpZihPLmxlbmd0aD09PTEmJiFBcnJheS5pc0FycmF5KHNlW09bMF1dKSl7bGV0IFo9c2VbT1swXV07cmV0dXJuXCJcIi5jb25jYXQoT2UsXCIgXCIpLmNvbmNhdChqKE9bMF0sWilbMF0pLmNvbmNhdCh6KX19bGV0IFZlPVguc3BsaXQoSikubWFwKFo9PlwiXCIuY29uY2F0KCQsXCIgXCIpLmNvbmNhdChaKSkuam9pbihKKStKO3JldHVybiBPZStKKyhYP1ZlOlwiXCIpKyhYJiZPLmxlbmd0aD8kK0o6XCJcIikrQyt6fWZ1bmN0aW9uIGoodSxYKXtyZXR1cm4gTC5jb25jYXQoWCkubWFwKHNlPT5cIkBcIi5jb25jYXQodSxcIiBcIikuY29uY2F0KHNlKS50cmltKCkpfX19KSxwZj1IKHtcInNyYy9jb21tb24vZW5kLW9mLWxpbmUuanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTtmdW5jdGlvbiBwKGcpe2xldCB4PWcuaW5kZXhPZihcIlxcclwiKTtyZXR1cm4geD49MD9nLmNoYXJBdCh4KzEpPT09YFxuYD9cImNybGZcIjpcImNyXCI6XCJsZlwifWZ1bmN0aW9uIGQoZyl7c3dpdGNoKGcpe2Nhc2VcImNyXCI6cmV0dXJuXCJcXHJcIjtjYXNlXCJjcmxmXCI6cmV0dXJuYFxcclxuYDtkZWZhdWx0OnJldHVybmBcbmB9fWZ1bmN0aW9uIG0oZyx4KXtsZXQgVDtzd2l0Y2goeCl7Y2FzZWBcbmA6VD0vXFxuL2c7YnJlYWs7Y2FzZVwiXFxyXCI6VD0vXFxyL2c7YnJlYWs7Y2FzZWBcXHJcbmA6VD0vXFxyXFxuL2c7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgXCJlb2xcIiAnLmNvbmNhdChKU09OLnN0cmluZ2lmeSh4KSxcIi5cIikpfWxldCBrPWcubWF0Y2goVCk7cmV0dXJuIGs/ay5sZW5ndGg6MH1mdW5jdGlvbiBBKGcpe3JldHVybiBnLnJlcGxhY2UoL1xcclxcbj8vZyxgXG5gKX1sLmV4cG9ydHM9e2d1ZXNzRW5kT2ZMaW5lOnAsY29udmVydEVuZE9mTGluZVRvQ2hhcnM6ZCxjb3VudEVuZE9mTGluZUNoYXJzOm0sbm9ybWFsaXplRW5kT2ZMaW5lOkF9fX0pLGZmPUgoe1wic3JjL2xhbmd1YWdlLWpzL3ByYWdtYS5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO3ZhcntwYXJzZVdpdGhDb21tZW50czpwLHN0cmlwOmQsZXh0cmFjdDptLHByaW50OkF9PWNmKCkse25vcm1hbGl6ZUVuZE9mTGluZTpnfT1wZigpLHg9UW4oKTtmdW5jdGlvbiBUKEUpe2xldCBMPXgoRSk7TCYmKEU9RS5zbGljZShMLmxlbmd0aCsxKSk7bGV0IFI9bShFKSx7cHJhZ21hczpGLGNvbW1lbnRzOld9PXAoUik7cmV0dXJue3NoZWJhbmc6TCx0ZXh0OkUscHJhZ21hczpGLGNvbW1lbnRzOld9fWZ1bmN0aW9uIGsoRSl7bGV0IEw9T2JqZWN0LmtleXMoVChFKS5wcmFnbWFzKTtyZXR1cm4gTC5pbmNsdWRlcyhcInByZXR0aWVyXCIpfHxMLmluY2x1ZGVzKFwiZm9ybWF0XCIpfWZ1bmN0aW9uIEQoRSl7bGV0e3NoZWJhbmc6TCx0ZXh0OlIscHJhZ21hczpGLGNvbW1lbnRzOld9PVQoRSksWT1kKFIpLE09QSh7cHJhZ21hczpPYmplY3QuYXNzaWduKHtmb3JtYXQ6XCJcIn0sRiksY29tbWVudHM6Vy50cmltU3RhcnQoKX0pO3JldHVybihMP1wiXCIuY29uY2F0KEwsYFxuYCk6XCJcIikrZyhNKSsoWS5zdGFydHNXaXRoKGBcbmApP2BcbmA6YFxuXG5gKStZfWwuZXhwb3J0cz17aGFzUHJhZ21hOmssaW5zZXJ0UHJhZ21hOkR9fX0pLGZvPUgoe1wic3JjL3V0aWxzL2lzLW5vbi1lbXB0eS1hcnJheS5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO2Z1bmN0aW9uIHAoZCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCkmJmQubGVuZ3RoPjB9bC5leHBvcnRzPXB9fSksbW89SCh7XCJzcmMvbGFuZ3VhZ2UtanMvbG9jLmpzXCIoaCxsKXtcInVzZSBzdHJpY3RcIjtWKCk7dmFyIHA9Zm8oKTtmdW5jdGlvbiBkKFQsayl7bGV0e2lnbm9yZURlY29yYXRvcnM6RH09a3x8e307aWYoIUQpe2xldCBFPVQuZGVjbGFyYXRpb24mJlQuZGVjbGFyYXRpb24uZGVjb3JhdG9yc3x8VC5kZWNvcmF0b3JzO2lmKHAoRSkpcmV0dXJuIGQoRVswXSl9cmV0dXJuIFQucmFuZ2U/VC5yYW5nZVswXTpULnN0YXJ0fWZ1bmN0aW9uIG0oVCl7cmV0dXJuIFQucmFuZ2U/VC5yYW5nZVsxXTpULmVuZH1mdW5jdGlvbiBBKFQsayl7bGV0IEQ9ZChUKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihEKSYmRD09PWQoayl9ZnVuY3Rpb24gZyhULGspe2xldCBEPW0oVCk7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoRCkmJkQ9PT1tKGspfWZ1bmN0aW9uIHgoVCxrKXtyZXR1cm4gQShULGspJiZnKFQsayl9bC5leHBvcnRzPXtsb2NTdGFydDpkLGxvY0VuZDptLGhhc1NhbWVMb2NTdGFydDpBLGhhc1NhbWVMb2M6eH19fSkseW89SCh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvdXRpbHMvY3JlYXRlLXBhcnNlci5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO3ZhcntoYXNQcmFnbWE6cH09ZmYoKSx7bG9jU3RhcnQ6ZCxsb2NFbmQ6bX09bW8oKTtmdW5jdGlvbiBBKGcpe3JldHVybiBnPXR5cGVvZiBnPT1cImZ1bmN0aW9uXCI/e3BhcnNlOmd9OmcsT2JqZWN0LmFzc2lnbih7YXN0Rm9ybWF0OlwiZXN0cmVlXCIsaGFzUHJhZ21hOnAsbG9jU3RhcnQ6ZCxsb2NFbmQ6bX0sZyl9bC5leHBvcnRzPUF9fSksbnI9SCh7XCJzcmMvY29tbW9uL3BhcnNlci1jcmVhdGUtZXJyb3IuanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTtmdW5jdGlvbiBwKGQsbSl7bGV0IEE9bmV3IFN5bnRheEVycm9yKGQrXCIgKFwiK20uc3RhcnQubGluZStcIjpcIittLnN0YXJ0LmNvbHVtbitcIilcIik7cmV0dXJuIEEubG9jPW0sQX1sLmV4cG9ydHM9cH19KSx4bz1IKHtcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS91dGlscy9jcmVhdGUtYmFiZWwtcGFyc2UtZXJyb3IuanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTt2YXIgcD1ucigpO2Z1bmN0aW9uIGQobSl7bGV0e21lc3NhZ2U6QSxsb2M6Z309bTtyZXR1cm4gcChBLnJlcGxhY2UoLyBcXCguKlxcKS8sXCJcIikse3N0YXJ0OntsaW5lOmc/Zy5saW5lOjAsY29sdW1uOmc/Zy5jb2x1bW4rMTowfX0pfWwuZXhwb3J0cz1kfX0pLGRmPUgoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2lzLXRzLWtleXdvcmQtdHlwZS5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO2Z1bmN0aW9uIHAoZCl7bGV0e3R5cGU6bX09ZDtyZXR1cm4gbS5zdGFydHNXaXRoKFwiVFNcIikmJm0uZW5kc1dpdGgoXCJLZXl3b3JkXCIpfWwuZXhwb3J0cz1wfX0pLG1mPUgoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2lzLWJsb2NrLWNvbW1lbnQuanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTt2YXIgcD1uZXcgU2V0KFtcIkJsb2NrXCIsXCJDb21tZW50QmxvY2tcIixcIk11bHRpTGluZVwiXSksZD1tPT5wLmhhcyhtPT1udWxsP3ZvaWQgMDptLnR5cGUpO2wuZXhwb3J0cz1kfX0pLHlmPUgoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2lzLXR5cGUtY2FzdC1jb21tZW50LmpzXCIoaCxsKXtcInVzZSBzdHJpY3RcIjtWKCk7dmFyIHA9bWYoKTtmdW5jdGlvbiBkKG0pe3JldHVybiBwKG0pJiZtLnZhbHVlWzBdPT09XCIqXCImJi9AdHlwZVxcYi8udGVzdChtLnZhbHVlKX1sLmV4cG9ydHM9ZH19KSx4Zj1IKHtcInNyYy91dGlscy9nZXQtbGFzdC5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO3ZhciBwPWQ9PmRbZC5sZW5ndGgtMV07bC5leHBvcnRzPXB9fSksZ289SCh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvdmlzaXQtbm9kZS5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO2Z1bmN0aW9uIHAoZCxtKXtpZihBcnJheS5pc0FycmF5KGQpKXtmb3IobGV0IEE9MDtBPGQubGVuZ3RoO0ErKylkW0FdPXAoZFtBXSxtKTtyZXR1cm4gZH1pZihkJiZ0eXBlb2YgZD09XCJvYmplY3RcIiYmdHlwZW9mIGQudHlwZT09XCJzdHJpbmdcIil7bGV0IEE9T2JqZWN0LmtleXMoZCk7Zm9yKGxldCBnPTA7ZzxBLmxlbmd0aDtnKyspZFtBW2ddXT1wKGRbQVtnXV0sbSk7cmV0dXJuIG0oZCl8fGR9cmV0dXJuIGR9bC5leHBvcnRzPXB9fSksQW89SCh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvdGhyb3ctc3ludGF4LWVycm9yLmpzXCIoaCxsKXtcInVzZSBzdHJpY3RcIjtWKCk7dmFyIHA9bnIoKTtmdW5jdGlvbiBkKG0sQSl7bGV0e3N0YXJ0OmcsZW5kOnh9PW0ubG9jO3Rocm93IHAoQSx7c3RhcnQ6e2xpbmU6Zy5saW5lLGNvbHVtbjpnLmNvbHVtbisxfSxlbmQ6e2xpbmU6eC5saW5lLGNvbHVtbjp4LmNvbHVtbisxfX0pfWwuZXhwb3J0cz1kfX0pLGdmPUgoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL3R5cGVzY3JpcHQuanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTt2YXIgcD1nbygpLGQ9QW8oKTtmdW5jdGlvbiBtKHgsVCxrKXtsZXQgRD14LmRlY29yYXRvcnM7aWYoIUFycmF5LmlzQXJyYXkoRCkpcmV0dXJuO2xldCBFPVQuZGVjb3JhdG9yczsoIUFycmF5LmlzQXJyYXkoRSl8fEUubGVuZ3RoIT09RC5sZW5ndGh8fEQuc29tZShMPT57bGV0IFI9ay5nZXQoTCk7cmV0dXJuIVJ8fCFFLmluY2x1ZGVzKFIpfSkpJiZkKFQsXCJMZWFkaW5nIGRlY29yYXRvcnMgbXVzdCBiZSBhdHRhY2hlZCB0byBhIGNsYXNzIGRlY2xhcmF0aW9uXCIpfWZ1bmN0aW9uIEEoeCxUKXt4LmtpbmQhPT0xNjd8fHgubW9kaWZpZXJzJiYheC5tb2RpZmllcnMuc29tZShFPT5FLmtpbmQ9PT0xMjYpfHx4LmluaXRpYWxpemVyJiZULnZhbHVlPT09bnVsbCYmZChULFwiQWJzdHJhY3QgcHJvcGVydHkgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXJcIil9ZnVuY3Rpb24gZyh4LFQpe2xldHtlc1RyZWVOb2RlVG9UU05vZGVNYXA6ayx0c05vZGVUb0VTVHJlZU5vZGVNYXA6RH09VC50c1BhcnNlUmVzdWx0O3AoeCxFPT57bGV0IEw9ay5nZXQoRSk7aWYoIUwpcmV0dXJuO2xldCBSPUQuZ2V0KEwpO1I9PT1FJiYobShMLFIsRCksQShMLFIpKX0pfWwuZXhwb3J0cz17dGhyb3dFcnJvckZvckludmFsaWROb2RlczpnfX19KSxBZj1IKHtcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS9wb3N0cHJvY2Vzcy9pbmRleC5qc1wiKGgsbCl7XCJ1c2Ugc3RyaWN0XCI7VigpO3Zhcntsb2NTdGFydDpwLGxvY0VuZDpkfT1tbygpLG09ZGYoKSxBPXlmKCksZz14ZigpLHg9Z28oKSx7dGhyb3dFcnJvckZvckludmFsaWROb2RlczpUfT1nZigpLGs9QW8oKTtmdW5jdGlvbiBEKEYsVyl7aWYoVy5wYXJzZXI9PT1cInR5cGVzY3JpcHRcIiYmL0B8YWJzdHJhY3QvLnRlc3QoVy5vcmlnaW5hbFRleHQpJiZUKEYsVyksVy5wYXJzZXIhPT1cInR5cGVzY3JpcHRcIiYmVy5wYXJzZXIhPT1cImZsb3dcIiYmVy5wYXJzZXIhPT1cImFjb3JuXCImJlcucGFyc2VyIT09XCJlc3ByZWVcIiYmVy5wYXJzZXIhPT1cIm1lcml5YWhcIil7bGV0IE09bmV3IFNldDtGPXgoRixqPT57ai5sZWFkaW5nQ29tbWVudHMmJmoubGVhZGluZ0NvbW1lbnRzLnNvbWUoQSkmJk0uYWRkKHAoaikpfSksRj14KEYsaj0+e2lmKGoudHlwZT09PVwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIil7bGV0e2V4cHJlc3Npb246dX09ajtpZih1LnR5cGU9PT1cIlR5cGVDYXN0RXhwcmVzc2lvblwiKXJldHVybiB1LnJhbmdlPWoucmFuZ2UsdTtsZXQgWD1wKGopO2lmKCFNLmhhcyhYKSlyZXR1cm4gdS5leHRyYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdS5leHRyYSkse30se3BhcmVudGhlc2l6ZWQ6ITB9KSx1fX0pfXJldHVybiBGPXgoRixNPT57c3dpdGNoKE0udHlwZSl7Y2FzZVwiQ2hhaW5FeHByZXNzaW9uXCI6cmV0dXJuIEUoTS5leHByZXNzaW9uKTtjYXNlXCJMb2dpY2FsRXhwcmVzc2lvblwiOntpZihMKE0pKXJldHVybiBSKE0pO2JyZWFrfWNhc2VcIlZhcmlhYmxlRGVjbGFyYXRpb25cIjp7bGV0IGo9ZyhNLmRlY2xhcmF0aW9ucyk7aiYmai5pbml0JiZZKE0saik7YnJlYWt9Y2FzZVwiVFNQYXJlbnRoZXNpemVkVHlwZVwiOnJldHVybiBtKE0udHlwZUFubm90YXRpb24pfHxNLnR5cGVBbm5vdGF0aW9uLnR5cGU9PT1cIlRTVGhpc1R5cGVcInx8KE0udHlwZUFubm90YXRpb24ucmFuZ2U9W3AoTSksZChNKV0pLE0udHlwZUFubm90YXRpb247Y2FzZVwiVFNUeXBlUGFyYW1ldGVyXCI6aWYodHlwZW9mIE0ubmFtZT09XCJzdHJpbmdcIil7bGV0IGo9cChNKTtNLm5hbWU9e3R5cGU6XCJJZGVudGlmaWVyXCIsbmFtZTpNLm5hbWUscmFuZ2U6W2osaitNLm5hbWUubGVuZ3RoXX19YnJlYWs7Y2FzZVwiT2JqZWN0RXhwcmVzc2lvblwiOmlmKFcucGFyc2VyPT09XCJ0eXBlc2NyaXB0XCIpe2xldCBqPU0ucHJvcGVydGllcy5maW5kKHU9PnUudHlwZT09PVwiUHJvcGVydHlcIiYmdS52YWx1ZS50eXBlPT09XCJUU0VtcHR5Qm9keUZ1bmN0aW9uRXhwcmVzc2lvblwiKTtqJiZrKGoudmFsdWUsXCJVbmV4cGVjdGVkIHRva2VuLlwiKX1icmVhaztjYXNlXCJTZXF1ZW5jZUV4cHJlc3Npb25cIjp7bGV0IGo9ZyhNLmV4cHJlc3Npb25zKTtNLnJhbmdlPVtwKE0pLE1hdGgubWluKGQoaiksZChNKSldO2JyZWFrfWNhc2VcIlRvcGljUmVmZXJlbmNlXCI6Vy5fX2lzVXNpbmdIYWNrUGlwZWxpbmU9ITA7YnJlYWs7Y2FzZVwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIjp7bGV0e2V4cG9ydGVkOmp9PU07aWYoVy5wYXJzZXI9PT1cIm1lcml5YWhcIiYmaiYmai50eXBlPT09XCJJZGVudGlmaWVyXCIpe2xldCB1PVcub3JpZ2luYWxUZXh0LnNsaWNlKHAoaiksZChqKSk7KHUuc3RhcnRzV2l0aCgnXCInKXx8dS5zdGFydHNXaXRoKFwiJ1wiKSkmJihNLmV4cG9ydGVkPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxNLmV4cG9ydGVkKSx7fSx7dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTpNLmV4cG9ydGVkLm5hbWUscmF3OnV9KSl9YnJlYWt9fX0pLEY7ZnVuY3Rpb24gWShNLGope1cub3JpZ2luYWxUZXh0W2QoaildIT09XCI7XCImJihNLnJhbmdlPVtwKE0pLGQoaildKX19ZnVuY3Rpb24gRShGKXtzd2l0Y2goRi50eXBlKXtjYXNlXCJDYWxsRXhwcmVzc2lvblwiOkYudHlwZT1cIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIixGLmNhbGxlZT1FKEYuY2FsbGVlKTticmVhaztjYXNlXCJNZW1iZXJFeHByZXNzaW9uXCI6Ri50eXBlPVwiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCIsRi5vYmplY3Q9RShGLm9iamVjdCk7YnJlYWs7Y2FzZVwiVFNOb25OdWxsRXhwcmVzc2lvblwiOkYuZXhwcmVzc2lvbj1FKEYuZXhwcmVzc2lvbik7YnJlYWt9cmV0dXJuIEZ9ZnVuY3Rpb24gTChGKXtyZXR1cm4gRi50eXBlPT09XCJMb2dpY2FsRXhwcmVzc2lvblwiJiZGLnJpZ2h0LnR5cGU9PT1cIkxvZ2ljYWxFeHByZXNzaW9uXCImJkYub3BlcmF0b3I9PT1GLnJpZ2h0Lm9wZXJhdG9yfWZ1bmN0aW9uIFIoRil7cmV0dXJuIEwoRik/Uih7dHlwZTpcIkxvZ2ljYWxFeHByZXNzaW9uXCIsb3BlcmF0b3I6Ri5vcGVyYXRvcixsZWZ0OlIoe3R5cGU6XCJMb2dpY2FsRXhwcmVzc2lvblwiLG9wZXJhdG9yOkYub3BlcmF0b3IsbGVmdDpGLmxlZnQscmlnaHQ6Ri5yaWdodC5sZWZ0LHJhbmdlOltwKEYubGVmdCksZChGLnJpZ2h0LmxlZnQpXX0pLHJpZ2h0OkYucmlnaHQucmlnaHQscmFuZ2U6W3AoRiksZChGKV19KTpGfWwuZXhwb3J0cz1EfX0pLFBvPUgoe1wibm9kZV9tb2R1bGVzL0BiYWJlbC9wYXJzZXIvbGliL2luZGV4LmpzXCIoaCl7XCJ1c2Ugc3RyaWN0XCI7VigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2Z1bmN0aW9uIGwodCxlKXtpZih0PT1udWxsKXJldHVybnt9O3ZhciBzPXt9LHI9T2JqZWN0LmtleXModCksaSxhO2ZvcihhPTA7YTxyLmxlbmd0aDthKyspaT1yW2FdLCEoZS5pbmRleE9mKGkpPj0wKSYmKHNbaV09dFtpXSk7cmV0dXJuIHN9dmFyIHA9Y2xhc3N7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMubGluZT12b2lkIDAsdGhpcy5jb2x1bW49dm9pZCAwLHRoaXMuaW5kZXg9dm9pZCAwLHRoaXMubGluZT10LHRoaXMuY29sdW1uPWUsdGhpcy5pbmRleD1zfX0sZD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RhcnQ9dm9pZCAwLHRoaXMuZW5kPXZvaWQgMCx0aGlzLmZpbGVuYW1lPXZvaWQgMCx0aGlzLmlkZW50aWZpZXJOYW1lPXZvaWQgMCx0aGlzLnN0YXJ0PXQsdGhpcy5lbmQ9ZX19O2Z1bmN0aW9uIG0odCxlKXtsZXR7bGluZTpzLGNvbHVtbjpyLGluZGV4Oml9PXQ7cmV0dXJuIG5ldyBwKHMscitlLGkrZSl9dmFyIEE9T2JqZWN0LmZyZWV6ZSh7U3ludGF4RXJyb3I6XCJCQUJFTF9QQVJTRVJfU1lOVEFYX0VSUk9SXCIsU291cmNlVHlwZU1vZHVsZUVycm9yOlwiQkFCRUxfUEFSU0VSX1NPVVJDRVRZUEVfTU9EVUxFX1JFUVVJUkVEXCJ9KSxnPWZ1bmN0aW9uKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp0Lmxlbmd0aC0xO3JldHVybntnZXQoKXtyZXR1cm4gdC5yZWR1Y2UoKHMscik9PnNbcl0sdGhpcyl9LHNldChzKXt0LnJlZHVjZSgocixpLGEpPT5hPT09ZT9yW2ldPXM6cltpXSx0aGlzKX19fSx4PSh0LGUscyk9Pk9iamVjdC5rZXlzKHMpLm1hcChyPT5bcixzW3JdXSkuZmlsdGVyKHI9PntsZXRbLGldPXI7cmV0dXJuISFpfSkubWFwKHI9PntsZXRbaSxhXT1yO3JldHVybltpLHR5cGVvZiBhPT1cImZ1bmN0aW9uXCI/e3ZhbHVlOmEsZW51bWVyYWJsZTohMX06dHlwZW9mIGEucmVmbGVjdD09XCJzdHJpbmdcIj9PYmplY3QuYXNzaWduKHt9LGEsZyhhLnJlZmxlY3Quc3BsaXQoXCIuXCIpKSk6YV19KS5yZWR1Y2UoKHIsaSk9PntsZXRbYSxuXT1pO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocixhLE9iamVjdC5hc3NpZ24oe2NvbmZpZ3VyYWJsZTohMH0sbikpfSxPYmplY3QuYXNzaWduKG5ldyB0LGUpKSxUPXQ9Pih7SW1wb3J0TWV0YU91dHNpZGVNb2R1bGU6dChgaW1wb3J0Lm1ldGEgbWF5IGFwcGVhciBvbmx5IHdpdGggJ3NvdXJjZVR5cGU6IFwibW9kdWxlXCInYCx7Y29kZTpBLlNvdXJjZVR5cGVNb2R1bGVFcnJvcn0pLEltcG9ydE91dHNpZGVNb2R1bGU6dChgJ2ltcG9ydCcgYW5kICdleHBvcnQnIG1heSBhcHBlYXIgb25seSB3aXRoICdzb3VyY2VUeXBlOiBcIm1vZHVsZVwiJ2Ase2NvZGU6QS5Tb3VyY2VUeXBlTW9kdWxlRXJyb3J9KX0pLGs9e0FycmF5UGF0dGVybjpcImFycmF5IGRlc3RydWN0dXJpbmcgcGF0dGVyblwiLEFzc2lnbm1lbnRFeHByZXNzaW9uOlwiYXNzaWdubWVudCBleHByZXNzaW9uXCIsQXNzaWdubWVudFBhdHRlcm46XCJhc3NpZ25tZW50IGV4cHJlc3Npb25cIixBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjpcImFycm93IGZ1bmN0aW9uIGV4cHJlc3Npb25cIixDb25kaXRpb25hbEV4cHJlc3Npb246XCJjb25kaXRpb25hbCBleHByZXNzaW9uXCIsRm9yT2ZTdGF0ZW1lbnQ6XCJmb3Itb2Ygc3RhdGVtZW50XCIsRm9ySW5TdGF0ZW1lbnQ6XCJmb3ItaW4gc3RhdGVtZW50XCIsRm9yU3RhdGVtZW50OlwiZm9yLWxvb3BcIixGb3JtYWxQYXJhbWV0ZXJzOlwiZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RcIixJZGVudGlmaWVyOlwiaWRlbnRpZmllclwiLE9iamVjdFBhdHRlcm46XCJvYmplY3QgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuXCIsUGFyZW50aGVzaXplZEV4cHJlc3Npb246XCJwYXJlbnRoZXNpemVkIGV4cHJlc3Npb25cIixSZXN0RWxlbWVudDpcInJlc3QgZWxlbWVudFwiLFVwZGF0ZUV4cHJlc3Npb246e3RydWU6XCJwcmVmaXggb3BlcmF0aW9uXCIsZmFsc2U6XCJwb3N0Zml4IG9wZXJhdGlvblwifSxWYXJpYWJsZURlY2xhcmF0b3I6XCJ2YXJpYWJsZSBkZWNsYXJhdGlvblwiLFlpZWxkRXhwcmVzc2lvbjpcInlpZWxkIGV4cHJlc3Npb25cIn0sRD10PT57bGV0e3R5cGU6ZSxwcmVmaXg6c309dDtyZXR1cm4gZT09PVwiVXBkYXRlRXhwcmVzc2lvblwiP2suVXBkYXRlRXhwcmVzc2lvbltTdHJpbmcocyldOmtbZV19LEU9dD0+KHtBY2Nlc3NvcklzR2VuZXJhdG9yOnQoZT0+e2xldHtraW5kOnN9PWU7cmV0dXJuXCJBIFwiLmNvbmNhdChzLFwidGVyIGNhbm5vdCBiZSBhIGdlbmVyYXRvci5cIil9KSxBcmd1bWVudHNJbkNsYXNzOnQoXCInYXJndW1lbnRzJyBpcyBvbmx5IGFsbG93ZWQgaW4gZnVuY3Rpb25zIGFuZCBjbGFzcyBtZXRob2RzLlwiKSxBc3luY0Z1bmN0aW9uSW5TaW5nbGVTdGF0ZW1lbnRDb250ZXh0OnQoXCJBc3luYyBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgYXQgdGhlIHRvcCBsZXZlbCBvciBpbnNpZGUgYSBibG9jay5cIiksQXdhaXRCaW5kaW5nSWRlbnRpZmllcjp0KFwiQ2FuIG5vdCB1c2UgJ2F3YWl0JyBhcyBpZGVudGlmaWVyIGluc2lkZSBhbiBhc3luYyBmdW5jdGlvbi5cIiksQXdhaXRCaW5kaW5nSWRlbnRpZmllckluU3RhdGljQmxvY2s6dChcIkNhbiBub3QgdXNlICdhd2FpdCcgYXMgaWRlbnRpZmllciBpbnNpZGUgYSBzdGF0aWMgYmxvY2suXCIpLEF3YWl0RXhwcmVzc2lvbkZvcm1hbFBhcmFtZXRlcjp0KFwiJ2F3YWl0JyBpcyBub3QgYWxsb3dlZCBpbiBhc3luYyBmdW5jdGlvbiBwYXJhbWV0ZXJzLlwiKSxBd2FpdE5vdEluQXN5bmNDb250ZXh0OnQoXCInYXdhaXQnIGlzIG9ubHkgYWxsb3dlZCB3aXRoaW4gYXN5bmMgZnVuY3Rpb25zIGFuZCBhdCB0aGUgdG9wIGxldmVscyBvZiBtb2R1bGVzLlwiKSxBd2FpdE5vdEluQXN5bmNGdW5jdGlvbjp0KFwiJ2F3YWl0JyBpcyBvbmx5IGFsbG93ZWQgd2l0aGluIGFzeW5jIGZ1bmN0aW9ucy5cIiksQmFkR2V0dGVyQXJpdHk6dChcIkEgJ2dldCcgYWNjZXNvciBtdXN0IG5vdCBoYXZlIGFueSBmb3JtYWwgcGFyYW1ldGVycy5cIiksQmFkU2V0dGVyQXJpdHk6dChcIkEgJ3NldCcgYWNjZXNvciBtdXN0IGhhdmUgZXhhY3RseSBvbmUgZm9ybWFsIHBhcmFtZXRlci5cIiksQmFkU2V0dGVyUmVzdFBhcmFtZXRlcjp0KFwiQSAnc2V0JyBhY2Nlc29yIGZ1bmN0aW9uIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgcmVzdCBwYXJhbWV0ZXIuXCIpLENvbnN0cnVjdG9yQ2xhc3NGaWVsZDp0KFwiQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InLlwiKSxDb25zdHJ1Y3RvckNsYXNzUHJpdmF0ZUZpZWxkOnQoXCJDbGFzc2VzIG1heSBub3QgaGF2ZSBhIHByaXZhdGUgZmllbGQgbmFtZWQgJyNjb25zdHJ1Y3RvcicuXCIpLENvbnN0cnVjdG9ySXNBY2Nlc3Nvcjp0KFwiQ2xhc3MgY29uc3RydWN0b3IgbWF5IG5vdCBiZSBhbiBhY2Nlc3Nvci5cIiksQ29uc3RydWN0b3JJc0FzeW5jOnQoXCJDb25zdHJ1Y3RvciBjYW4ndCBiZSBhbiBhc3luYyBmdW5jdGlvbi5cIiksQ29uc3RydWN0b3JJc0dlbmVyYXRvcjp0KFwiQ29uc3RydWN0b3IgY2FuJ3QgYmUgYSBnZW5lcmF0b3IuXCIpLERlY2xhcmF0aW9uTWlzc2luZ0luaXRpYWxpemVyOnQoZT0+e2xldHtraW5kOnN9PWU7cmV0dXJuXCJNaXNzaW5nIGluaXRpYWxpemVyIGluIFwiLmNvbmNhdChzLFwiIGRlY2xhcmF0aW9uLlwiKX0pLERlY29yYXRvckJlZm9yZUV4cG9ydDp0KFwiRGVjb3JhdG9ycyBtdXN0IGJlIHBsYWNlZCAqYmVmb3JlKiB0aGUgJ2V4cG9ydCcga2V5d29yZC4gWW91IGNhbiBzZXQgdGhlICdkZWNvcmF0b3JzQmVmb3JlRXhwb3J0JyBvcHRpb24gdG8gZmFsc2UgdG8gdXNlIHRoZSAnZXhwb3J0IEBkZWNvcmF0b3IgY2xhc3Mge30nIHN5bnRheC5cIiksRGVjb3JhdG9yQ29uc3RydWN0b3I6dChcIkRlY29yYXRvcnMgY2FuJ3QgYmUgdXNlZCB3aXRoIGEgY29uc3RydWN0b3IuIERpZCB5b3UgbWVhbiAnQGRlYyBjbGFzcyB7IC4uLiB9Jz9cIiksRGVjb3JhdG9yRXhwb3J0Q2xhc3M6dChcIlVzaW5nIHRoZSBleHBvcnQga2V5d29yZCBiZXR3ZWVuIGEgZGVjb3JhdG9yIGFuZCBhIGNsYXNzIGlzIG5vdCBhbGxvd2VkLiBQbGVhc2UgdXNlIGBleHBvcnQgQGRlYyBjbGFzc2AgaW5zdGVhZC5cIiksRGVjb3JhdG9yU2VtaWNvbG9uOnQoXCJEZWNvcmF0b3JzIG11c3Qgbm90IGJlIGZvbGxvd2VkIGJ5IGEgc2VtaWNvbG9uLlwiKSxEZWNvcmF0b3JTdGF0aWNCbG9jazp0KFwiRGVjb3JhdG9ycyBjYW4ndCBiZSB1c2VkIHdpdGggYSBzdGF0aWMgYmxvY2suXCIpLERlbGV0ZVByaXZhdGVGaWVsZDp0KFwiRGVsZXRpbmcgYSBwcml2YXRlIGZpZWxkIGlzIG5vdCBhbGxvd2VkLlwiKSxEZXN0cnVjdHVyZU5hbWVkSW1wb3J0OnQoXCJFUzIwMTUgbmFtZWQgaW1wb3J0cyBkbyBub3QgZGVzdHJ1Y3R1cmUuIFVzZSBhbm90aGVyIHN0YXRlbWVudCBmb3IgZGVzdHJ1Y3R1cmluZyBhZnRlciB0aGUgaW1wb3J0LlwiKSxEdXBsaWNhdGVDb25zdHJ1Y3Rvcjp0KFwiRHVwbGljYXRlIGNvbnN0cnVjdG9yIGluIHRoZSBzYW1lIGNsYXNzLlwiKSxEdXBsaWNhdGVEZWZhdWx0RXhwb3J0OnQoXCJPbmx5IG9uZSBkZWZhdWx0IGV4cG9ydCBhbGxvd2VkIHBlciBtb2R1bGUuXCIpLER1cGxpY2F0ZUV4cG9ydDp0KGU9PntsZXR7ZXhwb3J0TmFtZTpzfT1lO3JldHVyblwiYFwiLmNvbmNhdChzLFwiYCBoYXMgYWxyZWFkeSBiZWVuIGV4cG9ydGVkLiBFeHBvcnRlZCBpZGVudGlmaWVycyBtdXN0IGJlIHVuaXF1ZS5cIil9KSxEdXBsaWNhdGVQcm90bzp0KFwiUmVkZWZpbml0aW9uIG9mIF9fcHJvdG9fXyBwcm9wZXJ0eS5cIiksRHVwbGljYXRlUmVnRXhwRmxhZ3M6dChcIkR1cGxpY2F0ZSByZWd1bGFyIGV4cHJlc3Npb24gZmxhZy5cIiksRWxlbWVudEFmdGVyUmVzdDp0KFwiUmVzdCBlbGVtZW50IG11c3QgYmUgbGFzdCBlbGVtZW50LlwiKSxFc2NhcGVkQ2hhck5vdEFuSWRlbnRpZmllcjp0KFwiSW52YWxpZCBVbmljb2RlIGVzY2FwZS5cIiksRXhwb3J0QmluZGluZ0lzU3RyaW5nOnQoZT0+e2xldHtsb2NhbE5hbWU6cyxleHBvcnROYW1lOnJ9PWU7cmV0dXJuXCJBIHN0cmluZyBsaXRlcmFsIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGV4cG9ydGVkIGJpbmRpbmcgd2l0aG91dCBgZnJvbWAuXFxuLSBEaWQgeW91IG1lYW4gYGV4cG9ydCB7ICdcIi5jb25jYXQocyxcIicgYXMgJ1wiKS5jb25jYXQocixcIicgfSBmcm9tICdzb21lLW1vZHVsZSdgP1wiKX0pLEV4cG9ydERlZmF1bHRGcm9tQXNJZGVudGlmaWVyOnQoXCInZnJvbScgaXMgbm90IGFsbG93ZWQgYXMgYW4gaWRlbnRpZmllciBhZnRlciAnZXhwb3J0IGRlZmF1bHQnLlwiKSxGb3JJbk9mTG9vcEluaXRpYWxpemVyOnQoZT0+e2xldHt0eXBlOnN9PWU7cmV0dXJuXCInXCIuY29uY2F0KHM9PT1cIkZvckluU3RhdGVtZW50XCI/XCJmb3ItaW5cIjpcImZvci1vZlwiLFwiJyBsb29wIHZhcmlhYmxlIGRlY2xhcmF0aW9uIG1heSBub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIil9KSxGb3JPZkFzeW5jOnQoXCJUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSBmb3Itb2YgbG9vcCBtYXkgbm90IGJlICdhc3luYycuXCIpLEZvck9mTGV0OnQoXCJUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSBmb3Itb2YgbG9vcCBtYXkgbm90IHN0YXJ0IHdpdGggJ2xldCcuXCIpLEdlbmVyYXRvckluU2luZ2xlU3RhdGVtZW50Q29udGV4dDp0KFwiR2VuZXJhdG9ycyBjYW4gb25seSBiZSBkZWNsYXJlZCBhdCB0aGUgdG9wIGxldmVsIG9yIGluc2lkZSBhIGJsb2NrLlwiKSxJbGxlZ2FsQnJlYWtDb250aW51ZTp0KGU9PntsZXR7dHlwZTpzfT1lO3JldHVyblwiVW5zeW50YWN0aWMgXCIuY29uY2F0KHM9PT1cIkJyZWFrU3RhdGVtZW50XCI/XCJicmVha1wiOlwiY29udGludWVcIixcIi5cIil9KSxJbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlOnQoXCJJbGxlZ2FsICd1c2Ugc3RyaWN0JyBkaXJlY3RpdmUgaW4gZnVuY3Rpb24gd2l0aCBub24tc2ltcGxlIHBhcmFtZXRlciBsaXN0LlwiKSxJbGxlZ2FsUmV0dXJuOnQoXCIncmV0dXJuJyBvdXRzaWRlIG9mIGZ1bmN0aW9uLlwiKSxJbXBvcnRCaW5kaW5nSXNTdHJpbmc6dChlPT57bGV0e2ltcG9ydE5hbWU6c309ZTtyZXR1cm4nQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nLlxcbi0gRGlkIHlvdSBtZWFuIGBpbXBvcnQgeyBcIicuY29uY2F0KHMsJ1wiIGFzIGZvbyB9YD8nKX0pLEltcG9ydENhbGxBcmd1bWVudFRyYWlsaW5nQ29tbWE6dChcIlRyYWlsaW5nIGNvbW1hIGlzIGRpc2FsbG93ZWQgaW5zaWRlIGltcG9ydCguLi4pIGFyZ3VtZW50cy5cIiksSW1wb3J0Q2FsbEFyaXR5OnQoZT0+e2xldHttYXhBcmd1bWVudENvdW50OnN9PWU7cmV0dXJuXCJgaW1wb3J0KClgIHJlcXVpcmVzIGV4YWN0bHkgXCIuY29uY2F0KHM9PT0xP1wib25lIGFyZ3VtZW50XCI6XCJvbmUgb3IgdHdvIGFyZ3VtZW50c1wiLFwiLlwiKX0pLEltcG9ydENhbGxOb3ROZXdFeHByZXNzaW9uOnQoXCJDYW5ub3QgdXNlIG5ldyB3aXRoIGltcG9ydCguLi4pLlwiKSxJbXBvcnRDYWxsU3ByZWFkQXJndW1lbnQ6dChcImAuLi5gIGlzIG5vdCBhbGxvd2VkIGluIGBpbXBvcnQoKWAuXCIpLEluY29tcGF0aWJsZVJlZ0V4cFVWRmxhZ3M6dChcIlRoZSAndScgYW5kICd2JyByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MgY2Fubm90IGJlIGVuYWJsZWQgYXQgdGhlIHNhbWUgdGltZS5cIiksSW52YWxpZEJpZ0ludExpdGVyYWw6dChcIkludmFsaWQgQmlnSW50TGl0ZXJhbC5cIiksSW52YWxpZENvZGVQb2ludDp0KFwiQ29kZSBwb2ludCBvdXQgb2YgYm91bmRzLlwiKSxJbnZhbGlkQ292ZXJJbml0aWFsaXplZE5hbWU6dChcIkludmFsaWQgc2hvcnRoYW5kIHByb3BlcnR5IGluaXRpYWxpemVyLlwiKSxJbnZhbGlkRGVjaW1hbDp0KFwiSW52YWxpZCBkZWNpbWFsLlwiKSxJbnZhbGlkRGlnaXQ6dChlPT57bGV0e3JhZGl4OnN9PWU7cmV0dXJuXCJFeHBlY3RlZCBudW1iZXIgaW4gcmFkaXggXCIuY29uY2F0KHMsXCIuXCIpfSksSW52YWxpZEVzY2FwZVNlcXVlbmNlOnQoXCJCYWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZS5cIiksSW52YWxpZEVzY2FwZVNlcXVlbmNlVGVtcGxhdGU6dChcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHRlbXBsYXRlLlwiKSxJbnZhbGlkRXNjYXBlZFJlc2VydmVkV29yZDp0KGU9PntsZXR7cmVzZXJ2ZWRXb3JkOnN9PWU7cmV0dXJuXCJFc2NhcGUgc2VxdWVuY2UgaW4ga2V5d29yZCBcIi5jb25jYXQocyxcIi5cIil9KSxJbnZhbGlkSWRlbnRpZmllcjp0KGU9PntsZXR7aWRlbnRpZmllck5hbWU6c309ZTtyZXR1cm5cIkludmFsaWQgaWRlbnRpZmllciBcIi5jb25jYXQocyxcIi5cIil9KSxJbnZhbGlkTGhzOnQoZT0+e2xldHthbmNlc3RvcjpzfT1lO3JldHVyblwiSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBcIi5jb25jYXQoRChzKSxcIi5cIil9KSxJbnZhbGlkTGhzQmluZGluZzp0KGU9PntsZXR7YW5jZXN0b3I6c309ZTtyZXR1cm5cIkJpbmRpbmcgaW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBcIi5jb25jYXQoRChzKSxcIi5cIil9KSxJbnZhbGlkTnVtYmVyOnQoXCJJbnZhbGlkIG51bWJlci5cIiksSW52YWxpZE9yTWlzc2luZ0V4cG9uZW50OnQoXCJGbG9hdGluZy1wb2ludCBudW1iZXJzIHJlcXVpcmUgYSB2YWxpZCBleHBvbmVudCBhZnRlciB0aGUgJ2UnLlwiKSxJbnZhbGlkT3JVbmV4cGVjdGVkVG9rZW46dChlPT57bGV0e3VuZXhwZWN0ZWQ6c309ZTtyZXR1cm5cIlVuZXhwZWN0ZWQgY2hhcmFjdGVyICdcIi5jb25jYXQocyxcIicuXCIpfSksSW52YWxpZFBhcmVudGhlc2l6ZWRBc3NpZ25tZW50OnQoXCJJbnZhbGlkIHBhcmVudGhlc2l6ZWQgYXNzaWdubWVudCBwYXR0ZXJuLlwiKSxJbnZhbGlkUHJpdmF0ZUZpZWxkUmVzb2x1dGlvbjp0KGU9PntsZXR7aWRlbnRpZmllck5hbWU6c309ZTtyZXR1cm5cIlByaXZhdGUgbmFtZSAjXCIuY29uY2F0KHMsXCIgaXMgbm90IGRlZmluZWQuXCIpfSksSW52YWxpZFByb3BlcnR5QmluZGluZ1BhdHRlcm46dChcIkJpbmRpbmcgbWVtYmVyIGV4cHJlc3Npb24uXCIpLEludmFsaWRSZWNvcmRQcm9wZXJ0eTp0KFwiT25seSBwcm9wZXJ0aWVzIGFuZCBzcHJlYWQgZWxlbWVudHMgYXJlIGFsbG93ZWQgaW4gcmVjb3JkIGRlZmluaXRpb25zLlwiKSxJbnZhbGlkUmVzdEFzc2lnbm1lbnRQYXR0ZXJuOnQoXCJJbnZhbGlkIHJlc3Qgb3BlcmF0b3IncyBhcmd1bWVudC5cIiksTGFiZWxSZWRlY2xhcmF0aW9uOnQoZT0+e2xldHtsYWJlbE5hbWU6c309ZTtyZXR1cm5cIkxhYmVsICdcIi5jb25jYXQocyxcIicgaXMgYWxyZWFkeSBkZWNsYXJlZC5cIil9KSxMZXRJbkxleGljYWxCaW5kaW5nOnQoXCInbGV0JyBpcyBub3QgYWxsb3dlZCB0byBiZSB1c2VkIGFzIGEgbmFtZSBpbiAnbGV0JyBvciAnY29uc3QnIGRlY2xhcmF0aW9ucy5cIiksTGluZVRlcm1pbmF0b3JCZWZvcmVBcnJvdzp0KFwiTm8gbGluZSBicmVhayBpcyBhbGxvd2VkIGJlZm9yZSAnPT4nLlwiKSxNYWxmb3JtZWRSZWdFeHBGbGFnczp0KFwiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZy5cIiksTWlzc2luZ0NsYXNzTmFtZTp0KFwiQSBjbGFzcyBuYW1lIGlzIHJlcXVpcmVkLlwiKSxNaXNzaW5nRXFJbkFzc2lnbm1lbnQ6dChcIk9ubHkgJz0nIG9wZXJhdG9yIGNhbiBiZSB1c2VkIGZvciBzcGVjaWZ5aW5nIGRlZmF1bHQgdmFsdWUuXCIpLE1pc3NpbmdTZW1pY29sb246dChcIk1pc3Npbmcgc2VtaWNvbG9uLlwiKSxNaXNzaW5nUGx1Z2luOnQoZT0+e2xldHttaXNzaW5nUGx1Z2luOnN9PWU7cmV0dXJuXCJUaGlzIGV4cGVyaW1lbnRhbCBzeW50YXggcmVxdWlyZXMgZW5hYmxpbmcgdGhlIHBhcnNlciBwbHVnaW46IFwiLmNvbmNhdChzLm1hcChyPT5KU09OLnN0cmluZ2lmeShyKSkuam9pbihcIiwgXCIpLFwiLlwiKX0pLE1pc3NpbmdPbmVPZlBsdWdpbnM6dChlPT57bGV0e21pc3NpbmdQbHVnaW46c309ZTtyZXR1cm5cIlRoaXMgZXhwZXJpbWVudGFsIHN5bnRheCByZXF1aXJlcyBlbmFibGluZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBwYXJzZXIgcGx1Z2luKHMpOiBcIi5jb25jYXQocy5tYXAocj0+SlNPTi5zdHJpbmdpZnkocikpLmpvaW4oXCIsIFwiKSxcIi5cIil9KSxNaXNzaW5nVW5pY29kZUVzY2FwZTp0KFwiRXhwZWN0aW5nIFVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlIFxcXFx1WFhYWC5cIiksTWl4aW5nQ29hbGVzY2VXaXRoTG9naWNhbDp0KFwiTnVsbGlzaCBjb2FsZXNjaW5nIG9wZXJhdG9yKD8/KSByZXF1aXJlcyBwYXJlbnMgd2hlbiBtaXhpbmcgd2l0aCBsb2dpY2FsIG9wZXJhdG9ycy5cIiksTW9kdWxlQXR0cmlidXRlRGlmZmVyZW50RnJvbVR5cGU6dChcIlRoZSBvbmx5IGFjY2VwdGVkIG1vZHVsZSBhdHRyaWJ1dGUgaXMgYHR5cGVgLlwiKSxNb2R1bGVBdHRyaWJ1dGVJbnZhbGlkVmFsdWU6dChcIk9ubHkgc3RyaW5nIGxpdGVyYWxzIGFyZSBhbGxvd2VkIGFzIG1vZHVsZSBhdHRyaWJ1dGUgdmFsdWVzLlwiKSxNb2R1bGVBdHRyaWJ1dGVzV2l0aER1cGxpY2F0ZUtleXM6dChlPT57bGV0e2tleTpzfT1lO3JldHVybidEdXBsaWNhdGUga2V5IFwiJy5jb25jYXQocywnXCIgaXMgbm90IGFsbG93ZWQgaW4gbW9kdWxlIGF0dHJpYnV0ZXMuJyl9KSxNb2R1bGVFeHBvcnROYW1lSGFzTG9uZVN1cnJvZ2F0ZTp0KGU9PntsZXR7c3Vycm9nYXRlQ2hhckNvZGU6c309ZTtyZXR1cm5cIkFuIGV4cG9ydCBuYW1lIGNhbm5vdCBpbmNsdWRlIGEgbG9uZSBzdXJyb2dhdGUsIGZvdW5kICdcXFxcdVwiLmNvbmNhdChzLnRvU3RyaW5nKDE2KSxcIicuXCIpfSksTW9kdWxlRXhwb3J0VW5kZWZpbmVkOnQoZT0+e2xldHtsb2NhbE5hbWU6c309ZTtyZXR1cm5cIkV4cG9ydCAnXCIuY29uY2F0KHMsXCInIGlzIG5vdCBkZWZpbmVkLlwiKX0pLE11bHRpcGxlRGVmYXVsdHNJblN3aXRjaDp0KFwiTXVsdGlwbGUgZGVmYXVsdCBjbGF1c2VzLlwiKSxOZXdsaW5lQWZ0ZXJUaHJvdzp0KFwiSWxsZWdhbCBuZXdsaW5lIGFmdGVyIHRocm93LlwiKSxOb0NhdGNoT3JGaW5hbGx5OnQoXCJNaXNzaW5nIGNhdGNoIG9yIGZpbmFsbHkgY2xhdXNlLlwiKSxOdW1iZXJJZGVudGlmaWVyOnQoXCJJZGVudGlmaWVyIGRpcmVjdGx5IGFmdGVyIG51bWJlci5cIiksTnVtZXJpY1NlcGFyYXRvckluRXNjYXBlU2VxdWVuY2U6dChcIk51bWVyaWMgc2VwYXJhdG9ycyBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIHVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlcyBvciBoZXggZXNjYXBlIHNlcXVlbmNlcy5cIiksT2Jzb2xldGVBd2FpdFN0YXI6dChcIidhd2FpdConIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgYXN5bmMgZnVuY3Rpb25zIHByb3Bvc2FsLiBVc2UgUHJvbWlzZS5hbGwoKSBpbnN0ZWFkLlwiKSxPcHRpb25hbENoYWluaW5nTm9OZXc6dChcIkNvbnN0cnVjdG9ycyBpbi9hZnRlciBhbiBPcHRpb25hbCBDaGFpbiBhcmUgbm90IGFsbG93ZWQuXCIpLE9wdGlvbmFsQ2hhaW5pbmdOb1RlbXBsYXRlOnQoXCJUYWdnZWQgVGVtcGxhdGUgTGl0ZXJhbHMgYXJlIG5vdCBhbGxvd2VkIGluIG9wdGlvbmFsQ2hhaW4uXCIpLE92ZXJyaWRlT25Db25zdHJ1Y3Rvcjp0KFwiJ292ZXJyaWRlJyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCIpLFBhcmFtRHVwZTp0KFwiQXJndW1lbnQgbmFtZSBjbGFzaC5cIiksUGF0dGVybkhhc0FjY2Vzc29yOnQoXCJPYmplY3QgcGF0dGVybiBjYW4ndCBjb250YWluIGdldHRlciBvciBzZXR0ZXIuXCIpLFBhdHRlcm5IYXNNZXRob2Q6dChcIk9iamVjdCBwYXR0ZXJuIGNhbid0IGNvbnRhaW4gbWV0aG9kcy5cIiksUHJpdmF0ZUluRXhwZWN0ZWRJbjp0KGU9PntsZXR7aWRlbnRpZmllck5hbWU6c309ZTtyZXR1cm5cIlByaXZhdGUgbmFtZXMgYXJlIG9ubHkgYWxsb3dlZCBpbiBwcm9wZXJ0eSBhY2Nlc3NlcyAoYG9iai4jXCIuY29uY2F0KHMsXCJgKSBvciBpbiBgaW5gIGV4cHJlc3Npb25zIChgI1wiKS5jb25jYXQocyxcIiBpbiBvYmpgKS5cIil9KSxQcml2YXRlTmFtZVJlZGVjbGFyYXRpb246dChlPT57bGV0e2lkZW50aWZpZXJOYW1lOnN9PWU7cmV0dXJuXCJEdXBsaWNhdGUgcHJpdmF0ZSBuYW1lICNcIi5jb25jYXQocyxcIi5cIil9KSxSZWNvcmRFeHByZXNzaW9uQmFySW5jb3JyZWN0RW5kU3ludGF4VHlwZTp0KFwiUmVjb3JkIGV4cHJlc3Npb25zIGVuZGluZyB3aXRoICd8fScgYXJlIG9ubHkgYWxsb3dlZCB3aGVuIHRoZSAnc3ludGF4VHlwZScgb3B0aW9uIG9mIHRoZSAncmVjb3JkQW5kVHVwbGUnIHBsdWdpbiBpcyBzZXQgdG8gJ2JhcicuXCIpLFJlY29yZEV4cHJlc3Npb25CYXJJbmNvcnJlY3RTdGFydFN5bnRheFR5cGU6dChcIlJlY29yZCBleHByZXNzaW9ucyBzdGFydGluZyB3aXRoICd7fCcgYXJlIG9ubHkgYWxsb3dlZCB3aGVuIHRoZSAnc3ludGF4VHlwZScgb3B0aW9uIG9mIHRoZSAncmVjb3JkQW5kVHVwbGUnIHBsdWdpbiBpcyBzZXQgdG8gJ2JhcicuXCIpLFJlY29yZEV4cHJlc3Npb25IYXNoSW5jb3JyZWN0U3RhcnRTeW50YXhUeXBlOnQoXCJSZWNvcmQgZXhwcmVzc2lvbnMgc3RhcnRpbmcgd2l0aCAnI3snIGFyZSBvbmx5IGFsbG93ZWQgd2hlbiB0aGUgJ3N5bnRheFR5cGUnIG9wdGlvbiBvZiB0aGUgJ3JlY29yZEFuZFR1cGxlJyBwbHVnaW4gaXMgc2V0IHRvICdoYXNoJy5cIiksUmVjb3JkTm9Qcm90bzp0KFwiJ19fcHJvdG9fXycgaXMgbm90IGFsbG93ZWQgaW4gUmVjb3JkIGV4cHJlc3Npb25zLlwiKSxSZXN0VHJhaWxpbmdDb21tYTp0KFwiVW5leHBlY3RlZCB0cmFpbGluZyBjb21tYSBhZnRlciByZXN0IGVsZW1lbnQuXCIpLFNsb3BweUZ1bmN0aW9uOnQoXCJJbiBub24tc3RyaWN0IG1vZGUgY29kZSwgZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGF0IHRvcCBsZXZlbCwgaW5zaWRlIGEgYmxvY2ssIG9yIGFzIHRoZSBib2R5IG9mIGFuIGlmIHN0YXRlbWVudC5cIiksU3RhdGljUHJvdG90eXBlOnQoXCJDbGFzc2VzIG1heSBub3QgaGF2ZSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgcHJvdG90eXBlLlwiKSxTdXBlck5vdEFsbG93ZWQ6dChcImBzdXBlcigpYCBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIGNsYXNzIGNvbnN0cnVjdG9yIG9mIGEgc3ViY2xhc3MuIE1heWJlIGEgdHlwbyBpbiB0aGUgbWV0aG9kIG5hbWUgKCdjb25zdHJ1Y3RvcicpIG9yIG5vdCBleHRlbmRpbmcgYW5vdGhlciBjbGFzcz9cIiksU3VwZXJQcml2YXRlRmllbGQ6dChcIlByaXZhdGUgZmllbGRzIGNhbid0IGJlIGFjY2Vzc2VkIG9uIHN1cGVyLlwiKSxUcmFpbGluZ0RlY29yYXRvcjp0KFwiRGVjb3JhdG9ycyBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgY2xhc3MgZWxlbWVudC5cIiksVHVwbGVFeHByZXNzaW9uQmFySW5jb3JyZWN0RW5kU3ludGF4VHlwZTp0KFwiVHVwbGUgZXhwcmVzc2lvbnMgZW5kaW5nIHdpdGggJ3xdJyBhcmUgb25seSBhbGxvd2VkIHdoZW4gdGhlICdzeW50YXhUeXBlJyBvcHRpb24gb2YgdGhlICdyZWNvcmRBbmRUdXBsZScgcGx1Z2luIGlzIHNldCB0byAnYmFyJy5cIiksVHVwbGVFeHByZXNzaW9uQmFySW5jb3JyZWN0U3RhcnRTeW50YXhUeXBlOnQoXCJUdXBsZSBleHByZXNzaW9ucyBzdGFydGluZyB3aXRoICdbfCcgYXJlIG9ubHkgYWxsb3dlZCB3aGVuIHRoZSAnc3ludGF4VHlwZScgb3B0aW9uIG9mIHRoZSAncmVjb3JkQW5kVHVwbGUnIHBsdWdpbiBpcyBzZXQgdG8gJ2JhcicuXCIpLFR1cGxlRXhwcmVzc2lvbkhhc2hJbmNvcnJlY3RTdGFydFN5bnRheFR5cGU6dChcIlR1cGxlIGV4cHJlc3Npb25zIHN0YXJ0aW5nIHdpdGggJyNbJyBhcmUgb25seSBhbGxvd2VkIHdoZW4gdGhlICdzeW50YXhUeXBlJyBvcHRpb24gb2YgdGhlICdyZWNvcmRBbmRUdXBsZScgcGx1Z2luIGlzIHNldCB0byAnaGFzaCcuXCIpLFVuZXhwZWN0ZWRBcmd1bWVudFBsYWNlaG9sZGVyOnQoXCJVbmV4cGVjdGVkIGFyZ3VtZW50IHBsYWNlaG9sZGVyLlwiKSxVbmV4cGVjdGVkQXdhaXRBZnRlclBpcGVsaW5lQm9keTp0KCdVbmV4cGVjdGVkIFwiYXdhaXRcIiBhZnRlciBwaXBlbGluZSBib2R5OyBhd2FpdCBtdXN0IGhhdmUgcGFyZW50aGVzZXMgaW4gbWluaW1hbCBwcm9wb3NhbC4nKSxVbmV4cGVjdGVkRGlnaXRBZnRlckhhc2g6dChcIlVuZXhwZWN0ZWQgZGlnaXQgYWZ0ZXIgaGFzaCB0b2tlbi5cIiksVW5leHBlY3RlZEltcG9ydEV4cG9ydDp0KFwiJ2ltcG9ydCcgYW5kICdleHBvcnQnIG1heSBvbmx5IGFwcGVhciBhdCB0aGUgdG9wIGxldmVsLlwiKSxVbmV4cGVjdGVkS2V5d29yZDp0KGU9PntsZXR7a2V5d29yZDpzfT1lO3JldHVyblwiVW5leHBlY3RlZCBrZXl3b3JkICdcIi5jb25jYXQocyxcIicuXCIpfSksVW5leHBlY3RlZExlYWRpbmdEZWNvcmF0b3I6dChcIkxlYWRpbmcgZGVjb3JhdG9ycyBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgY2xhc3MgZGVjbGFyYXRpb24uXCIpLFVuZXhwZWN0ZWRMZXhpY2FsRGVjbGFyYXRpb246dChcIkxleGljYWwgZGVjbGFyYXRpb24gY2Fubm90IGFwcGVhciBpbiBhIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dC5cIiksVW5leHBlY3RlZE5ld1RhcmdldDp0KFwiYG5ldy50YXJnZXRgIGNhbiBvbmx5IGJlIHVzZWQgaW4gZnVuY3Rpb25zIG9yIGNsYXNzIHByb3BlcnRpZXMuXCIpLFVuZXhwZWN0ZWROdW1lcmljU2VwYXJhdG9yOnQoXCJBIG51bWVyaWMgc2VwYXJhdG9yIGlzIG9ubHkgYWxsb3dlZCBiZXR3ZWVuIHR3byBkaWdpdHMuXCIpLFVuZXhwZWN0ZWRQcml2YXRlRmllbGQ6dChcIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lLlwiKSxVbmV4cGVjdGVkUmVzZXJ2ZWRXb3JkOnQoZT0+e2xldHtyZXNlcnZlZFdvcmQ6c309ZTtyZXR1cm5cIlVuZXhwZWN0ZWQgcmVzZXJ2ZWQgd29yZCAnXCIuY29uY2F0KHMsXCInLlwiKX0pLFVuZXhwZWN0ZWRTdXBlcjp0KFwiJ3N1cGVyJyBpcyBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1ldGhvZHMgYW5kIGNsYXNzZXMuXCIpLFVuZXhwZWN0ZWRUb2tlbjp0KGU9PntsZXR7ZXhwZWN0ZWQ6cyx1bmV4cGVjdGVkOnJ9PWU7cmV0dXJuXCJVbmV4cGVjdGVkIHRva2VuXCIuY29uY2F0KHI/XCIgJ1wiLmNvbmNhdChyLFwiJy5cIik6XCJcIikuY29uY2F0KHM/JywgZXhwZWN0ZWQgXCInLmNvbmNhdChzLCdcIicpOlwiXCIpfSksVW5leHBlY3RlZFRva2VuVW5hcnlFeHBvbmVudGlhdGlvbjp0KFwiSWxsZWdhbCBleHByZXNzaW9uLiBXcmFwIGxlZnQgaGFuZCBzaWRlIG9yIGVudGlyZSBleHBvbmVudGlhdGlvbiBpbiBwYXJlbnRoZXNlcy5cIiksVW5zdXBwb3J0ZWRCaW5kOnQoXCJCaW5kaW5nIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gb2JqZWN0IHByb3BlcnR5LlwiKSxVbnN1cHBvcnRlZERlY29yYXRvckV4cG9ydDp0KFwiQSBkZWNvcmF0ZWQgZXhwb3J0IG11c3QgZXhwb3J0IGEgY2xhc3MgZGVjbGFyYXRpb24uXCIpLFVuc3VwcG9ydGVkRGVmYXVsdEV4cG9ydDp0KFwiT25seSBleHByZXNzaW9ucywgZnVuY3Rpb25zIG9yIGNsYXNzZXMgYXJlIGFsbG93ZWQgYXMgdGhlIGBkZWZhdWx0YCBleHBvcnQuXCIpLFVuc3VwcG9ydGVkSW1wb3J0OnQoXCJgaW1wb3J0YCBjYW4gb25seSBiZSB1c2VkIGluIGBpbXBvcnQoKWAgb3IgYGltcG9ydC5tZXRhYC5cIiksVW5zdXBwb3J0ZWRNZXRhUHJvcGVydHk6dChlPT57bGV0e3RhcmdldDpzLG9ubHlWYWxpZFByb3BlcnR5TmFtZTpyfT1lO3JldHVyblwiVGhlIG9ubHkgdmFsaWQgbWV0YSBwcm9wZXJ0eSBmb3IgXCIuY29uY2F0KHMsXCIgaXMgXCIpLmNvbmNhdChzLFwiLlwiKS5jb25jYXQocixcIi5cIil9KSxVbnN1cHBvcnRlZFBhcmFtZXRlckRlY29yYXRvcjp0KFwiRGVjb3JhdG9ycyBjYW5ub3QgYmUgdXNlZCB0byBkZWNvcmF0ZSBwYXJhbWV0ZXJzLlwiKSxVbnN1cHBvcnRlZFByb3BlcnR5RGVjb3JhdG9yOnQoXCJEZWNvcmF0b3JzIGNhbm5vdCBiZSB1c2VkIHRvIGRlY29yYXRlIG9iamVjdCBsaXRlcmFsIHByb3BlcnRpZXMuXCIpLFVuc3VwcG9ydGVkU3VwZXI6dChcIidzdXBlcicgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGZ1bmN0aW9uIGNhbGxzIChpLmUuIHN1cGVyKCkpIG9yIGluIHByb3BlcnR5IGFjY2Vzc2VzIChpLmUuIHN1cGVyLnByb3Agb3Igc3VwZXJbcHJvcF0pLlwiKSxVbnRlcm1pbmF0ZWRDb21tZW50OnQoXCJVbnRlcm1pbmF0ZWQgY29tbWVudC5cIiksVW50ZXJtaW5hdGVkUmVnRXhwOnQoXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uLlwiKSxVbnRlcm1pbmF0ZWRTdHJpbmc6dChcIlVudGVybWluYXRlZCBzdHJpbmcgY29uc3RhbnQuXCIpLFVudGVybWluYXRlZFRlbXBsYXRlOnQoXCJVbnRlcm1pbmF0ZWQgdGVtcGxhdGUuXCIpLFZhclJlZGVjbGFyYXRpb246dChlPT57bGV0e2lkZW50aWZpZXJOYW1lOnN9PWU7cmV0dXJuXCJJZGVudGlmaWVyICdcIi5jb25jYXQocyxcIicgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZC5cIil9KSxZaWVsZEJpbmRpbmdJZGVudGlmaWVyOnQoXCJDYW4gbm90IHVzZSAneWllbGQnIGFzIGlkZW50aWZpZXIgaW5zaWRlIGEgZ2VuZXJhdG9yLlwiKSxZaWVsZEluUGFyYW1ldGVyOnQoXCJZaWVsZCBleHByZXNzaW9uIGlzIG5vdCBhbGxvd2VkIGluIGZvcm1hbCBwYXJhbWV0ZXJzLlwiKSxaZXJvRGlnaXROdW1lcmljU2VwYXJhdG9yOnQoXCJOdW1lcmljIHNlcGFyYXRvciBjYW4gbm90IGJlIHVzZWQgYWZ0ZXIgbGVhZGluZyAwLlwiKX0pLEw9dD0+KHtTdHJpY3REZWxldGU6dChcIkRlbGV0aW5nIGxvY2FsIHZhcmlhYmxlIGluIHN0cmljdCBtb2RlLlwiKSxTdHJpY3RFdmFsQXJndW1lbnRzOnQoZT0+e2xldHtyZWZlcmVuY2VOYW1lOnN9PWU7cmV0dXJuXCJBc3NpZ25pbmcgdG8gJ1wiLmNvbmNhdChzLFwiJyBpbiBzdHJpY3QgbW9kZS5cIil9KSxTdHJpY3RFdmFsQXJndW1lbnRzQmluZGluZzp0KGU9PntsZXR7YmluZGluZ05hbWU6c309ZTtyZXR1cm5cIkJpbmRpbmcgJ1wiLmNvbmNhdChzLFwiJyBpbiBzdHJpY3QgbW9kZS5cIil9KSxTdHJpY3RGdW5jdGlvbjp0KFwiSW4gc3RyaWN0IG1vZGUgY29kZSwgZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGF0IHRvcCBsZXZlbCBvciBpbnNpZGUgYSBibG9jay5cIiksU3RyaWN0TnVtZXJpY0VzY2FwZTp0KFwiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0IG1vZGUgaXMgJ1xcXFwwJy5cIiksU3RyaWN0T2N0YWxMaXRlcmFsOnQoXCJMZWdhY3kgb2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLlwiKSxTdHJpY3RXaXRoOnQoXCInd2l0aCcgaW4gc3RyaWN0IG1vZGUuXCIpfSksUj1uZXcgU2V0KFtcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIsXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiLFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIsXCJZaWVsZEV4cHJlc3Npb25cIl0pLEY9dD0+KHtQaXBlQm9keUlzVGlnaHRlcjp0KFwiVW5leHBlY3RlZCB5aWVsZCBhZnRlciBwaXBlbGluZSBib2R5OyBhbnkgeWllbGQgZXhwcmVzc2lvbiBhY3RpbmcgYXMgSGFjay1zdHlsZSBwaXBlIGJvZHkgbXVzdCBiZSBwYXJlbnRoZXNpemVkIGR1ZSB0byBpdHMgbG9vc2Ugb3BlcmF0b3IgcHJlY2VkZW5jZS5cIiksUGlwZVRvcGljUmVxdWlyZXNIYWNrUGlwZXM6dCgnVG9waWMgcmVmZXJlbmNlIGlzIHVzZWQsIGJ1dCB0aGUgcGlwZWxpbmVPcGVyYXRvciBwbHVnaW4gd2FzIG5vdCBwYXNzZWQgYSBcInByb3Bvc2FsXCI6IFwiaGFja1wiIG9yIFwic21hcnRcIiBvcHRpb24uJyksUGlwZVRvcGljVW5ib3VuZDp0KFwiVG9waWMgcmVmZXJlbmNlIGlzIHVuYm91bmQ7IGl0IG11c3QgYmUgaW5zaWRlIGEgcGlwZSBib2R5LlwiKSxQaXBlVG9waWNVbmNvbmZpZ3VyZWRUb2tlbjp0KGU9PntsZXR7dG9rZW46c309ZTtyZXR1cm5cIkludmFsaWQgdG9waWMgdG9rZW4gXCIuY29uY2F0KHMsXCIuIEluIG9yZGVyIHRvIHVzZSBcIikuY29uY2F0KHMsJyBhcyBhIHRvcGljIHJlZmVyZW5jZSwgdGhlIHBpcGVsaW5lT3BlcmF0b3IgcGx1Z2luIG11c3QgYmUgY29uZmlndXJlZCB3aXRoIHsgXCJwcm9wb3NhbFwiOiBcImhhY2tcIiwgXCJ0b3BpY1Rva2VuXCI6IFwiJykuY29uY2F0KHMsJ1wiIH0uJyl9KSxQaXBlVG9waWNVbnVzZWQ6dChcIkhhY2stc3R5bGUgcGlwZSBib2R5IGRvZXMgbm90IGNvbnRhaW4gYSB0b3BpYyByZWZlcmVuY2U7IEhhY2stc3R5bGUgcGlwZXMgbXVzdCB1c2UgdG9waWMgYXQgbGVhc3Qgb25jZS5cIiksUGlwZVVucGFyZW50aGVzaXplZEJvZHk6dChlPT57bGV0e3R5cGU6c309ZTtyZXR1cm5cIkhhY2stc3R5bGUgcGlwZSBib2R5IGNhbm5vdCBiZSBhbiB1bnBhcmVudGhlc2l6ZWQgXCIuY29uY2F0KEQoe3R5cGU6c30pLFwiOyBwbGVhc2Ugd3JhcCBpdCBpbiBwYXJlbnRoZXNlcy5cIil9KSxQaXBlbGluZUJvZHlOb0Fycm93OnQoJ1VuZXhwZWN0ZWQgYXJyb3cgXCI9PlwiIGFmdGVyIHBpcGVsaW5lIGJvZHk7IGFycm93IGZ1bmN0aW9uIGluIHBpcGVsaW5lIGJvZHkgbXVzdCBiZSBwYXJlbnRoZXNpemVkLicpLFBpcGVsaW5lQm9keVNlcXVlbmNlRXhwcmVzc2lvbjp0KFwiUGlwZWxpbmUgYm9keSBtYXkgbm90IGJlIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIGV4cHJlc3Npb24uXCIpLFBpcGVsaW5lSGVhZFNlcXVlbmNlRXhwcmVzc2lvbjp0KFwiUGlwZWxpbmUgaGVhZCBzaG91bGQgbm90IGJlIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIGV4cHJlc3Npb24uXCIpLFBpcGVsaW5lVG9waWNVbnVzZWQ6dChcIlBpcGVsaW5lIGlzIGluIHRvcGljIHN0eWxlIGJ1dCBkb2VzIG5vdCB1c2UgdG9waWMgcmVmZXJlbmNlLlwiKSxQcmltYXJ5VG9waWNOb3RBbGxvd2VkOnQoXCJUb3BpYyByZWZlcmVuY2Ugd2FzIHVzZWQgaW4gYSBsZXhpY2FsIGNvbnRleHQgd2l0aG91dCB0b3BpYyBiaW5kaW5nLlwiKSxQcmltYXJ5VG9waWNSZXF1aXJlc1NtYXJ0UGlwZWxpbmU6dCgnVG9waWMgcmVmZXJlbmNlIGlzIHVzZWQsIGJ1dCB0aGUgcGlwZWxpbmVPcGVyYXRvciBwbHVnaW4gd2FzIG5vdCBwYXNzZWQgYSBcInByb3Bvc2FsXCI6IFwiaGFja1wiIG9yIFwic21hcnRcIiBvcHRpb24uJyl9KSxXPVtcInRvTWVzc2FnZVwiXTtmdW5jdGlvbiBZKHQpe2xldHt0b01lc3NhZ2U6ZX09dCxzPWwodCxXKTtyZXR1cm4gZnVuY3Rpb24gcihpKXtsZXR7bG9jOmEsZGV0YWlsczpufT1pO3JldHVybiB4KFN5bnRheEVycm9yLE9iamVjdC5hc3NpZ24oe30scyx7bG9jOmF9KSx7Y2xvbmUoKXtsZXQgbz1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30sYz1vLmxvY3x8e307cmV0dXJuIHIoe2xvYzpuZXcgcChcImxpbmVcImluIGM/Yy5saW5lOnRoaXMubG9jLmxpbmUsXCJjb2x1bW5cImluIGM/Yy5jb2x1bW46dGhpcy5sb2MuY29sdW1uLFwiaW5kZXhcImluIGM/Yy5pbmRleDp0aGlzLmxvYy5pbmRleCksZGV0YWlsczpPYmplY3QuYXNzaWduKHt9LHRoaXMuZGV0YWlscyxvLmRldGFpbHMpfSl9LGRldGFpbHM6e3ZhbHVlOm4sZW51bWVyYWJsZTohMX0sbWVzc2FnZTp7Z2V0KCl7cmV0dXJuXCJcIi5jb25jYXQoZSh0aGlzLmRldGFpbHMpLFwiIChcIikuY29uY2F0KHRoaXMubG9jLmxpbmUsXCI6XCIpLmNvbmNhdCh0aGlzLmxvYy5jb2x1bW4sXCIpXCIpfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJtZXNzYWdlXCIse3ZhbHVlOm99KX19LHBvczp7cmVmbGVjdDpcImxvYy5pbmRleFwiLGVudW1lcmFibGU6ITB9LG1pc3NpbmdQbHVnaW46XCJtaXNzaW5nUGx1Z2luXCJpbiBuJiZ7cmVmbGVjdDpcImRldGFpbHMubWlzc2luZ1BsdWdpblwiLGVudW1lcmFibGU6ITB9fSl9fWZ1bmN0aW9uIE0odCxlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7dG9NZXNzYWdlOnR5cGVvZiB0PT1cInN0cmluZ1wiPygpPT50OnR9LGUpfWZ1bmN0aW9uIGoodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBpPT5qKGksdFswXSk7bGV0IHM9dChNKSxyPXt9O2ZvcihsZXQgaSBvZiBPYmplY3Qua2V5cyhzKSlyW2ldPVkoT2JqZWN0LmFzc2lnbih7Y29kZTpBLlN5bnRheEVycm9yLHJlYXNvbkNvZGU6aX0sZT97c3ludGF4UGx1Z2luOmV9Ont9LHNbaV0pKTtyZXR1cm4gcn12YXIgdT1PYmplY3QuYXNzaWduKHt9LGooVCksaihFKSxqKEwpLGooX258fChfbj1ydChbXCJwaXBlbGluZU9wZXJhdG9yXCJdKSkpKEYpKSx7ZGVmaW5lUHJvcGVydHk6WH09T2JqZWN0LHNlPSh0LGUpPT5YKHQsZSx7ZW51bWVyYWJsZTohMSx2YWx1ZTp0W2VdfSk7ZnVuY3Rpb24gSih0KXtyZXR1cm4gc2UodC5sb2Muc3RhcnQsXCJpbmRleFwiKSxzZSh0LmxvYy5lbmQsXCJpbmRleFwiKSx0fXZhciBPZT10PT5jbGFzcyBleHRlbmRzIHR7cGFyc2UoKXtsZXQgZT1KKHN1cGVyLnBhcnNlKCkpO3JldHVybiB0aGlzLm9wdGlvbnMudG9rZW5zJiYoZS50b2tlbnM9ZS50b2tlbnMubWFwKEopKSxlfXBhcnNlUmVnRXhwTGl0ZXJhbChlKXtsZXR7cGF0dGVybjpzLGZsYWdzOnJ9PWUsaT1udWxsO3RyeXtpPW5ldyBSZWdFeHAocyxyKX1jYXRjaHt9bGV0IGE9dGhpcy5lc3RyZWVQYXJzZUxpdGVyYWwoaSk7cmV0dXJuIGEucmVnZXg9e3BhdHRlcm46cyxmbGFnczpyfSxhfXBhcnNlQmlnSW50TGl0ZXJhbChlKXtsZXQgczt0cnl7cz1CaWdJbnQoZSl9Y2F0Y2h7cz1udWxsfWxldCByPXRoaXMuZXN0cmVlUGFyc2VMaXRlcmFsKHMpO3JldHVybiByLmJpZ2ludD1TdHJpbmcoci52YWx1ZXx8ZSkscn1wYXJzZURlY2ltYWxMaXRlcmFsKGUpe2xldCByPXRoaXMuZXN0cmVlUGFyc2VMaXRlcmFsKG51bGwpO3JldHVybiByLmRlY2ltYWw9U3RyaW5nKHIudmFsdWV8fGUpLHJ9ZXN0cmVlUGFyc2VMaXRlcmFsKGUpe3JldHVybiB0aGlzLnBhcnNlTGl0ZXJhbChlLFwiTGl0ZXJhbFwiKX1wYXJzZVN0cmluZ0xpdGVyYWwoZSl7cmV0dXJuIHRoaXMuZXN0cmVlUGFyc2VMaXRlcmFsKGUpfXBhcnNlTnVtZXJpY0xpdGVyYWwoZSl7cmV0dXJuIHRoaXMuZXN0cmVlUGFyc2VMaXRlcmFsKGUpfXBhcnNlTnVsbExpdGVyYWwoKXtyZXR1cm4gdGhpcy5lc3RyZWVQYXJzZUxpdGVyYWwobnVsbCl9cGFyc2VCb29sZWFuTGl0ZXJhbChlKXtyZXR1cm4gdGhpcy5lc3RyZWVQYXJzZUxpdGVyYWwoZSl9ZGlyZWN0aXZlVG9TdG10KGUpe2xldCBzPWUudmFsdWUscj10aGlzLnN0YXJ0Tm9kZUF0KGUuc3RhcnQsZS5sb2Muc3RhcnQpLGk9dGhpcy5zdGFydE5vZGVBdChzLnN0YXJ0LHMubG9jLnN0YXJ0KTtyZXR1cm4gaS52YWx1ZT1zLmV4dHJhLmV4cHJlc3Npb25WYWx1ZSxpLnJhdz1zLmV4dHJhLnJhdyxyLmV4cHJlc3Npb249dGhpcy5maW5pc2hOb2RlQXQoaSxcIkxpdGVyYWxcIixzLmxvYy5lbmQpLHIuZGlyZWN0aXZlPXMuZXh0cmEucmF3LnNsaWNlKDEsLTEpLHRoaXMuZmluaXNoTm9kZUF0KHIsXCJFeHByZXNzaW9uU3RhdGVtZW50XCIsZS5sb2MuZW5kKX1pbml0RnVuY3Rpb24oZSxzKXtzdXBlci5pbml0RnVuY3Rpb24oZSxzKSxlLmV4cHJlc3Npb249ITF9Y2hlY2tEZWNsYXJhdGlvbihlKXtlIT1udWxsJiZ0aGlzLmlzT2JqZWN0UHJvcGVydHkoZSk/dGhpcy5jaGVja0RlY2xhcmF0aW9uKGUudmFsdWUpOnN1cGVyLmNoZWNrRGVjbGFyYXRpb24oZSl9Z2V0T2JqZWN0T3JDbGFzc01ldGhvZFBhcmFtcyhlKXtyZXR1cm4gZS52YWx1ZS5wYXJhbXN9aXNWYWxpZERpcmVjdGl2ZShlKXt2YXIgcztyZXR1cm4gZS50eXBlPT09XCJFeHByZXNzaW9uU3RhdGVtZW50XCImJmUuZXhwcmVzc2lvbi50eXBlPT09XCJMaXRlcmFsXCImJnR5cGVvZiBlLmV4cHJlc3Npb24udmFsdWU9PVwic3RyaW5nXCImJiEoKHM9ZS5leHByZXNzaW9uLmV4dHJhKSE9bnVsbCYmcy5wYXJlbnRoZXNpemVkKX1wYXJzZUJsb2NrQm9keShlKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShzPjE/cy0xOjApLGk9MTtpPHM7aSsrKXJbaS0xXT1hcmd1bWVudHNbaV07c3VwZXIucGFyc2VCbG9ja0JvZHkoZSwuLi5yKTtsZXQgYT1lLmRpcmVjdGl2ZXMubWFwKG49PnRoaXMuZGlyZWN0aXZlVG9TdG10KG4pKTtlLmJvZHk9YS5jb25jYXQoZS5ib2R5KSxkZWxldGUgZS5kaXJlY3RpdmVzfXB1c2hDbGFzc01ldGhvZChlLHMscixpLGEsbil7dGhpcy5wYXJzZU1ldGhvZChzLHIsaSxhLG4sXCJDbGFzc01ldGhvZFwiLCEwKSxzLnR5cGVQYXJhbWV0ZXJzJiYocy52YWx1ZS50eXBlUGFyYW1ldGVycz1zLnR5cGVQYXJhbWV0ZXJzLGRlbGV0ZSBzLnR5cGVQYXJhbWV0ZXJzKSxlLmJvZHkucHVzaChzKX1wYXJzZVByaXZhdGVOYW1lKCl7bGV0IGU9c3VwZXIucGFyc2VQcml2YXRlTmFtZSgpO3JldHVybiB0aGlzLmdldFBsdWdpbk9wdGlvbihcImVzdHJlZVwiLFwiY2xhc3NGZWF0dXJlc1wiKT90aGlzLmNvbnZlcnRQcml2YXRlTmFtZVRvUHJpdmF0ZUlkZW50aWZpZXIoZSk6ZX1jb252ZXJ0UHJpdmF0ZU5hbWVUb1ByaXZhdGVJZGVudGlmaWVyKGUpe2xldCBzPXN1cGVyLmdldFByaXZhdGVOYW1lU1YoZSk7cmV0dXJuIGU9ZSxkZWxldGUgZS5pZCxlLm5hbWU9cyxlLnR5cGU9XCJQcml2YXRlSWRlbnRpZmllclwiLGV9aXNQcml2YXRlTmFtZShlKXtyZXR1cm4gdGhpcy5nZXRQbHVnaW5PcHRpb24oXCJlc3RyZWVcIixcImNsYXNzRmVhdHVyZXNcIik/ZS50eXBlPT09XCJQcml2YXRlSWRlbnRpZmllclwiOnN1cGVyLmlzUHJpdmF0ZU5hbWUoZSl9Z2V0UHJpdmF0ZU5hbWVTVihlKXtyZXR1cm4gdGhpcy5nZXRQbHVnaW5PcHRpb24oXCJlc3RyZWVcIixcImNsYXNzRmVhdHVyZXNcIik/ZS5uYW1lOnN1cGVyLmdldFByaXZhdGVOYW1lU1YoZSl9cGFyc2VMaXRlcmFsKGUscyl7bGV0IHI9c3VwZXIucGFyc2VMaXRlcmFsKGUscyk7cmV0dXJuIHIucmF3PXIuZXh0cmEucmF3LGRlbGV0ZSByLmV4dHJhLHJ9cGFyc2VGdW5jdGlvbkJvZHkoZSxzKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITE7c3VwZXIucGFyc2VGdW5jdGlvbkJvZHkoZSxzLHIpLGUuZXhwcmVzc2lvbj1lLmJvZHkudHlwZSE9PVwiQmxvY2tTdGF0ZW1lbnRcIn1wYXJzZU1ldGhvZChlLHMscixpLGEsbil7bGV0IG89YXJndW1lbnRzLmxlbmd0aD42JiZhcmd1bWVudHNbNl0hPT12b2lkIDA/YXJndW1lbnRzWzZdOiExLGM9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gYy5raW5kPWUua2luZCxjPXN1cGVyLnBhcnNlTWV0aG9kKGMscyxyLGksYSxuLG8pLGMudHlwZT1cIkZ1bmN0aW9uRXhwcmVzc2lvblwiLGRlbGV0ZSBjLmtpbmQsZS52YWx1ZT1jLG49PT1cIkNsYXNzUHJpdmF0ZU1ldGhvZFwiJiYoZS5jb21wdXRlZD0hMSksbj1cIk1ldGhvZERlZmluaXRpb25cIix0aGlzLmZpbmlzaE5vZGUoZSxuKX1wYXJzZUNsYXNzUHJvcGVydHkoKXtsZXQgZT1zdXBlci5wYXJzZUNsYXNzUHJvcGVydHkoLi4uYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5nZXRQbHVnaW5PcHRpb24oXCJlc3RyZWVcIixcImNsYXNzRmVhdHVyZXNcIikmJihlLnR5cGU9XCJQcm9wZXJ0eURlZmluaXRpb25cIiksZX1wYXJzZUNsYXNzUHJpdmF0ZVByb3BlcnR5KCl7bGV0IGU9c3VwZXIucGFyc2VDbGFzc1ByaXZhdGVQcm9wZXJ0eSguLi5hcmd1bWVudHMpO3JldHVybiB0aGlzLmdldFBsdWdpbk9wdGlvbihcImVzdHJlZVwiLFwiY2xhc3NGZWF0dXJlc1wiKSYmKGUudHlwZT1cIlByb3BlcnR5RGVmaW5pdGlvblwiLGUuY29tcHV0ZWQ9ITEpLGV9cGFyc2VPYmplY3RNZXRob2QoZSxzLHIsaSxhKXtsZXQgbj1zdXBlci5wYXJzZU9iamVjdE1ldGhvZChlLHMscixpLGEpO3JldHVybiBuJiYobi50eXBlPVwiUHJvcGVydHlcIixuLmtpbmQ9PT1cIm1ldGhvZFwiJiYobi5raW5kPVwiaW5pdFwiKSxuLnNob3J0aGFuZD0hMSksbn1wYXJzZU9iamVjdFByb3BlcnR5KGUscyxyLGksYSl7bGV0IG49c3VwZXIucGFyc2VPYmplY3RQcm9wZXJ0eShlLHMscixpLGEpO3JldHVybiBuJiYobi5raW5kPVwiaW5pdFwiLG4udHlwZT1cIlByb3BlcnR5XCIpLG59aXNWYWxpZExWYWwoZSl7Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkocz4xP3MtMTowKSxpPTE7aTxzO2krKylyW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiBlPT09XCJQcm9wZXJ0eVwiP1widmFsdWVcIjpzdXBlci5pc1ZhbGlkTFZhbChlLC4uLnIpfWlzQXNzaWduYWJsZShlLHMpe3JldHVybiBlIT1udWxsJiZ0aGlzLmlzT2JqZWN0UHJvcGVydHkoZSk/dGhpcy5pc0Fzc2lnbmFibGUoZS52YWx1ZSxzKTpzdXBlci5pc0Fzc2lnbmFibGUoZSxzKX10b0Fzc2lnbmFibGUoZSl7bGV0IHM9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOiExO2lmKGUhPW51bGwmJnRoaXMuaXNPYmplY3RQcm9wZXJ0eShlKSl7bGV0e2tleTpyLHZhbHVlOml9PWU7dGhpcy5pc1ByaXZhdGVOYW1lKHIpJiZ0aGlzLmNsYXNzU2NvcGUudXNlUHJpdmF0ZU5hbWUodGhpcy5nZXRQcml2YXRlTmFtZVNWKHIpLHIubG9jLnN0YXJ0KSx0aGlzLnRvQXNzaWduYWJsZShpLHMpfWVsc2Ugc3VwZXIudG9Bc3NpZ25hYmxlKGUscyl9dG9Bc3NpZ25hYmxlT2JqZWN0RXhwcmVzc2lvblByb3AoZSl7ZS5raW5kPT09XCJnZXRcInx8ZS5raW5kPT09XCJzZXRcIj90aGlzLnJhaXNlKHUuUGF0dGVybkhhc0FjY2Vzc29yLHthdDplLmtleX0pOmUubWV0aG9kP3RoaXMucmFpc2UodS5QYXR0ZXJuSGFzTWV0aG9kLHthdDplLmtleX0pOnN1cGVyLnRvQXNzaWduYWJsZU9iamVjdEV4cHJlc3Npb25Qcm9wKC4uLmFyZ3VtZW50cyl9ZmluaXNoQ2FsbEV4cHJlc3Npb24oZSxzKXtpZihzdXBlci5maW5pc2hDYWxsRXhwcmVzc2lvbihlLHMpLGUuY2FsbGVlLnR5cGU9PT1cIkltcG9ydFwiKXtpZihlLnR5cGU9XCJJbXBvcnRFeHByZXNzaW9uXCIsZS5zb3VyY2U9ZS5hcmd1bWVudHNbMF0sdGhpcy5oYXNQbHVnaW4oXCJpbXBvcnRBc3NlcnRpb25zXCIpKXt2YXIgcjtlLmF0dHJpYnV0ZXM9KHI9ZS5hcmd1bWVudHNbMV0pIT1udWxsP3I6bnVsbH1kZWxldGUgZS5hcmd1bWVudHMsZGVsZXRlIGUuY2FsbGVlfXJldHVybiBlfXRvUmVmZXJlbmNlZEFyZ3VtZW50cyhlKXtlLnR5cGUhPT1cIkltcG9ydEV4cHJlc3Npb25cIiYmc3VwZXIudG9SZWZlcmVuY2VkQXJndW1lbnRzKGUpfXBhcnNlRXhwb3J0KGUpe3N3aXRjaChzdXBlci5wYXJzZUV4cG9ydChlKSxlLnR5cGUpe2Nhc2VcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCI6ZS5leHBvcnRlZD1udWxsO2JyZWFrO2Nhc2VcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIjplLnNwZWNpZmllcnMubGVuZ3RoPT09MSYmZS5zcGVjaWZpZXJzWzBdLnR5cGU9PT1cIkV4cG9ydE5hbWVzcGFjZVNwZWNpZmllclwiJiYoZS50eXBlPVwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIixlLmV4cG9ydGVkPWUuc3BlY2lmaWVyc1swXS5leHBvcnRlZCxkZWxldGUgZS5zcGVjaWZpZXJzKTticmVha31yZXR1cm4gZX1wYXJzZVN1YnNjcmlwdChlLHMscixpLGEpe2xldCBuPXN1cGVyLnBhcnNlU3Vic2NyaXB0KGUscyxyLGksYSk7aWYoYS5vcHRpb25hbENoYWluTWVtYmVyKXtpZigobi50eXBlPT09XCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cInx8bi50eXBlPT09XCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCIpJiYobi50eXBlPW4udHlwZS5zdWJzdHJpbmcoOCkpLGEuc3RvcCl7bGV0IG89dGhpcy5zdGFydE5vZGVBdE5vZGUobik7cmV0dXJuIG8uZXhwcmVzc2lvbj1uLHRoaXMuZmluaXNoTm9kZShvLFwiQ2hhaW5FeHByZXNzaW9uXCIpfX1lbHNlKG4udHlwZT09PVwiTWVtYmVyRXhwcmVzc2lvblwifHxuLnR5cGU9PT1cIkNhbGxFeHByZXNzaW9uXCIpJiYobi5vcHRpb25hbD0hMSk7cmV0dXJuIG59aGFzUHJvcGVydHlBc1ByaXZhdGVOYW1lKGUpe3JldHVybiBlLnR5cGU9PT1cIkNoYWluRXhwcmVzc2lvblwiJiYoZT1lLmV4cHJlc3Npb24pLHN1cGVyLmhhc1Byb3BlcnR5QXNQcml2YXRlTmFtZShlKX1pc09wdGlvbmFsQ2hhaW4oZSl7cmV0dXJuIGUudHlwZT09PVwiQ2hhaW5FeHByZXNzaW9uXCJ9aXNPYmplY3RQcm9wZXJ0eShlKXtyZXR1cm4gZS50eXBlPT09XCJQcm9wZXJ0eVwiJiZlLmtpbmQ9PT1cImluaXRcIiYmIWUubWV0aG9kfWlzT2JqZWN0TWV0aG9kKGUpe3JldHVybiBlLm1ldGhvZHx8ZS5raW5kPT09XCJnZXRcInx8ZS5raW5kPT09XCJzZXRcIn1maW5pc2hOb2RlQXQoZSxzLHIpe3JldHVybiBKKHN1cGVyLmZpbmlzaE5vZGVBdChlLHMscikpfXJlc2V0RW5kTG9jYXRpb24oZSl7bGV0IHM9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnRoaXMuc3RhdGUubGFzdFRva0VuZExvYztzdXBlci5yZXNldEVuZExvY2F0aW9uKGUscyksSihlKX19LCQ9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnRva2VuPXZvaWQgMCx0aGlzLnByZXNlcnZlU3BhY2U9dm9pZCAwLHRoaXMudG9rZW49dCx0aGlzLnByZXNlcnZlU3BhY2U9ISFlfX0sej17YnJhY2U6bmV3ICQoXCJ7XCIpLGpfb1RhZzpuZXcgJChcIjx0YWdcIiksal9jVGFnOm5ldyAkKFwiPC90YWdcIiksal9leHByOm5ldyAkKFwiPHRhZz4uLi48L3RhZz5cIiwhMCl9O3oudGVtcGxhdGU9bmV3ICQoXCJgXCIsITApO3ZhciBPPSEwLEM9ITAsVmU9ITAsWj0hMCxoZT0hMCxDbz0hMCxvcj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307dGhpcy5sYWJlbD12b2lkIDAsdGhpcy5rZXl3b3JkPXZvaWQgMCx0aGlzLmJlZm9yZUV4cHI9dm9pZCAwLHRoaXMuc3RhcnRzRXhwcj12b2lkIDAsdGhpcy5yaWdodEFzc29jaWF0aXZlPXZvaWQgMCx0aGlzLmlzTG9vcD12b2lkIDAsdGhpcy5pc0Fzc2lnbj12b2lkIDAsdGhpcy5wcmVmaXg9dm9pZCAwLHRoaXMucG9zdGZpeD12b2lkIDAsdGhpcy5iaW5vcD12b2lkIDAsdGhpcy5sYWJlbD10LHRoaXMua2V5d29yZD1lLmtleXdvcmQsdGhpcy5iZWZvcmVFeHByPSEhZS5iZWZvcmVFeHByLHRoaXMuc3RhcnRzRXhwcj0hIWUuc3RhcnRzRXhwcix0aGlzLnJpZ2h0QXNzb2NpYXRpdmU9ISFlLnJpZ2h0QXNzb2NpYXRpdmUsdGhpcy5pc0xvb3A9ISFlLmlzTG9vcCx0aGlzLmlzQXNzaWduPSEhZS5pc0Fzc2lnbix0aGlzLnByZWZpeD0hIWUucHJlZml4LHRoaXMucG9zdGZpeD0hIWUucG9zdGZpeCx0aGlzLmJpbm9wPWUuYmlub3AhPW51bGw/ZS5iaW5vcDpudWxsLHRoaXMudXBkYXRlQ29udGV4dD1udWxsfX0scXQ9bmV3IE1hcDtmdW5jdGlvbiBxKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtlLmtleXdvcmQ9dDtsZXQgcz13KHQsZSk7cmV0dXJuIHF0LnNldCh0LHMpLHN9ZnVuY3Rpb24gdGUodCxlKXtyZXR1cm4gdyh0LHtiZWZvcmVFeHByOk8sYmlub3A6ZX0pfXZhciBIZT0tMSxjZT1bXSxVdD1bXSxpdD1bXSxfdD1bXSx6dD1bXSxLdD1bXTtmdW5jdGlvbiB3KHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTt2YXIgcyxyLGksYTtyZXR1cm4rK0hlLFV0LnB1c2godCksaXQucHVzaCgocz1lLmJpbm9wKSE9bnVsbD9zOi0xKSxfdC5wdXNoKChyPWUuYmVmb3JlRXhwcikhPW51bGw/cjohMSksenQucHVzaCgoaT1lLnN0YXJ0c0V4cHIpIT1udWxsP2k6ITEpLEt0LnB1c2goKGE9ZS5wcmVmaXgpIT1udWxsP2E6ITEpLGNlLnB1c2gobmV3IG9yKHQsZSkpLEhlfWZ1bmN0aW9uIFUodCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O3ZhciBzLHIsaSxhO3JldHVybisrSGUscXQuc2V0KHQsSGUpLFV0LnB1c2godCksaXQucHVzaCgocz1lLmJpbm9wKSE9bnVsbD9zOi0xKSxfdC5wdXNoKChyPWUuYmVmb3JlRXhwcikhPW51bGw/cjohMSksenQucHVzaCgoaT1lLnN0YXJ0c0V4cHIpIT1udWxsP2k6ITEpLEt0LnB1c2goKGE9ZS5wcmVmaXgpIT1udWxsP2E6ITEpLGNlLnB1c2gobmV3IG9yKFwibmFtZVwiLGUpKSxIZX12YXIgYm89e2JyYWNrZXRMOncoXCJbXCIse2JlZm9yZUV4cHI6TyxzdGFydHNFeHByOkN9KSxicmFja2V0SGFzaEw6dyhcIiNbXCIse2JlZm9yZUV4cHI6TyxzdGFydHNFeHByOkN9KSxicmFja2V0QmFyTDp3KFwiW3xcIix7YmVmb3JlRXhwcjpPLHN0YXJ0c0V4cHI6Q30pLGJyYWNrZXRSOncoXCJdXCIpLGJyYWNrZXRCYXJSOncoXCJ8XVwiKSxicmFjZUw6dyhcIntcIix7YmVmb3JlRXhwcjpPLHN0YXJ0c0V4cHI6Q30pLGJyYWNlQmFyTDp3KFwie3xcIix7YmVmb3JlRXhwcjpPLHN0YXJ0c0V4cHI6Q30pLGJyYWNlSGFzaEw6dyhcIiN7XCIse2JlZm9yZUV4cHI6TyxzdGFydHNFeHByOkN9KSxicmFjZVI6dyhcIn1cIiksYnJhY2VCYXJSOncoXCJ8fVwiKSxwYXJlbkw6dyhcIihcIix7YmVmb3JlRXhwcjpPLHN0YXJ0c0V4cHI6Q30pLHBhcmVuUjp3KFwiKVwiKSxjb21tYTp3KFwiLFwiLHtiZWZvcmVFeHByOk99KSxzZW1pOncoXCI7XCIse2JlZm9yZUV4cHI6T30pLGNvbG9uOncoXCI6XCIse2JlZm9yZUV4cHI6T30pLGRvdWJsZUNvbG9uOncoXCI6OlwiLHtiZWZvcmVFeHByOk99KSxkb3Q6dyhcIi5cIikscXVlc3Rpb246dyhcIj9cIix7YmVmb3JlRXhwcjpPfSkscXVlc3Rpb25Eb3Q6dyhcIj8uXCIpLGFycm93OncoXCI9PlwiLHtiZWZvcmVFeHByOk99KSx0ZW1wbGF0ZTp3KFwidGVtcGxhdGVcIiksZWxsaXBzaXM6dyhcIi4uLlwiLHtiZWZvcmVFeHByOk99KSxiYWNrUXVvdGU6dyhcImBcIix7c3RhcnRzRXhwcjpDfSksZG9sbGFyQnJhY2VMOncoXCIke1wiLHtiZWZvcmVFeHByOk8sc3RhcnRzRXhwcjpDfSksdGVtcGxhdGVUYWlsOncoXCIuLi5gXCIse3N0YXJ0c0V4cHI6Q30pLHRlbXBsYXRlTm9uVGFpbDp3KFwiLi4uJHtcIix7YmVmb3JlRXhwcjpPLHN0YXJ0c0V4cHI6Q30pLGF0OncoXCJAXCIpLGhhc2g6dyhcIiNcIix7c3RhcnRzRXhwcjpDfSksaW50ZXJwcmV0ZXJEaXJlY3RpdmU6dyhcIiMhLi4uXCIpLGVxOncoXCI9XCIse2JlZm9yZUV4cHI6Tyxpc0Fzc2lnbjpafSksYXNzaWduOncoXCJfPVwiLHtiZWZvcmVFeHByOk8saXNBc3NpZ246Wn0pLHNsYXNoQXNzaWduOncoXCJfPVwiLHtiZWZvcmVFeHByOk8saXNBc3NpZ246Wn0pLHhvckFzc2lnbjp3KFwiXz1cIix7YmVmb3JlRXhwcjpPLGlzQXNzaWduOlp9KSxtb2R1bG9Bc3NpZ246dyhcIl89XCIse2JlZm9yZUV4cHI6Tyxpc0Fzc2lnbjpafSksaW5jRGVjOncoXCIrKy8tLVwiLHtwcmVmaXg6aGUscG9zdGZpeDpDbyxzdGFydHNFeHByOkN9KSxiYW5nOncoXCIhXCIse2JlZm9yZUV4cHI6TyxwcmVmaXg6aGUsc3RhcnRzRXhwcjpDfSksdGlsZGU6dyhcIn5cIix7YmVmb3JlRXhwcjpPLHByZWZpeDpoZSxzdGFydHNFeHByOkN9KSxkb3VibGVDYXJldDp3KFwiXl5cIix7c3RhcnRzRXhwcjpDfSksZG91YmxlQXQ6dyhcIkBAXCIse3N0YXJ0c0V4cHI6Q30pLHBpcGVsaW5lOnRlKFwifD5cIiwwKSxudWxsaXNoQ29hbGVzY2luZzp0ZShcIj8/XCIsMSksbG9naWNhbE9SOnRlKFwifHxcIiwxKSxsb2dpY2FsQU5EOnRlKFwiJiZcIiwyKSxiaXR3aXNlT1I6dGUoXCJ8XCIsMyksYml0d2lzZVhPUjp0ZShcIl5cIiw0KSxiaXR3aXNlQU5EOnRlKFwiJlwiLDUpLGVxdWFsaXR5OnRlKFwiPT0vIT0vPT09LyE9PVwiLDYpLGx0OnRlKFwiPC8+Lzw9Lz49XCIsNyksZ3Q6dGUoXCI8Lz4vPD0vPj1cIiw3KSxyZWxhdGlvbmFsOnRlKFwiPC8+Lzw9Lz49XCIsNyksYml0U2hpZnQ6dGUoXCI8PC8+Pi8+Pj5cIiw4KSxiaXRTaGlmdEw6dGUoXCI8PC8+Pi8+Pj5cIiw4KSxiaXRTaGlmdFI6dGUoXCI8PC8+Pi8+Pj5cIiw4KSxwbHVzTWluOncoXCIrLy1cIix7YmVmb3JlRXhwcjpPLGJpbm9wOjkscHJlZml4OmhlLHN0YXJ0c0V4cHI6Q30pLG1vZHVsbzp3KFwiJVwiLHtiaW5vcDoxMCxzdGFydHNFeHByOkN9KSxzdGFyOncoXCIqXCIse2Jpbm9wOjEwfSksc2xhc2g6dGUoXCIvXCIsMTApLGV4cG9uZW50OncoXCIqKlwiLHtiZWZvcmVFeHByOk8sYmlub3A6MTEscmlnaHRBc3NvY2lhdGl2ZTohMH0pLF9pbjpxKFwiaW5cIix7YmVmb3JlRXhwcjpPLGJpbm9wOjd9KSxfaW5zdGFuY2VvZjpxKFwiaW5zdGFuY2VvZlwiLHtiZWZvcmVFeHByOk8sYmlub3A6N30pLF9icmVhazpxKFwiYnJlYWtcIiksX2Nhc2U6cShcImNhc2VcIix7YmVmb3JlRXhwcjpPfSksX2NhdGNoOnEoXCJjYXRjaFwiKSxfY29udGludWU6cShcImNvbnRpbnVlXCIpLF9kZWJ1Z2dlcjpxKFwiZGVidWdnZXJcIiksX2RlZmF1bHQ6cShcImRlZmF1bHRcIix7YmVmb3JlRXhwcjpPfSksX2Vsc2U6cShcImVsc2VcIix7YmVmb3JlRXhwcjpPfSksX2ZpbmFsbHk6cShcImZpbmFsbHlcIiksX2Z1bmN0aW9uOnEoXCJmdW5jdGlvblwiLHtzdGFydHNFeHByOkN9KSxfaWY6cShcImlmXCIpLF9yZXR1cm46cShcInJldHVyblwiLHtiZWZvcmVFeHByOk99KSxfc3dpdGNoOnEoXCJzd2l0Y2hcIiksX3Rocm93OnEoXCJ0aHJvd1wiLHtiZWZvcmVFeHByOk8scHJlZml4OmhlLHN0YXJ0c0V4cHI6Q30pLF90cnk6cShcInRyeVwiKSxfdmFyOnEoXCJ2YXJcIiksX2NvbnN0OnEoXCJjb25zdFwiKSxfd2l0aDpxKFwid2l0aFwiKSxfbmV3OnEoXCJuZXdcIix7YmVmb3JlRXhwcjpPLHN0YXJ0c0V4cHI6Q30pLF90aGlzOnEoXCJ0aGlzXCIse3N0YXJ0c0V4cHI6Q30pLF9zdXBlcjpxKFwic3VwZXJcIix7c3RhcnRzRXhwcjpDfSksX2NsYXNzOnEoXCJjbGFzc1wiLHtzdGFydHNFeHByOkN9KSxfZXh0ZW5kczpxKFwiZXh0ZW5kc1wiLHtiZWZvcmVFeHByOk99KSxfZXhwb3J0OnEoXCJleHBvcnRcIiksX2ltcG9ydDpxKFwiaW1wb3J0XCIse3N0YXJ0c0V4cHI6Q30pLF9udWxsOnEoXCJudWxsXCIse3N0YXJ0c0V4cHI6Q30pLF90cnVlOnEoXCJ0cnVlXCIse3N0YXJ0c0V4cHI6Q30pLF9mYWxzZTpxKFwiZmFsc2VcIix7c3RhcnRzRXhwcjpDfSksX3R5cGVvZjpxKFwidHlwZW9mXCIse2JlZm9yZUV4cHI6TyxwcmVmaXg6aGUsc3RhcnRzRXhwcjpDfSksX3ZvaWQ6cShcInZvaWRcIix7YmVmb3JlRXhwcjpPLHByZWZpeDpoZSxzdGFydHNFeHByOkN9KSxfZGVsZXRlOnEoXCJkZWxldGVcIix7YmVmb3JlRXhwcjpPLHByZWZpeDpoZSxzdGFydHNFeHByOkN9KSxfZG86cShcImRvXCIse2lzTG9vcDpWZSxiZWZvcmVFeHByOk99KSxfZm9yOnEoXCJmb3JcIix7aXNMb29wOlZlfSksX3doaWxlOnEoXCJ3aGlsZVwiLHtpc0xvb3A6VmV9KSxfYXM6VShcImFzXCIse3N0YXJ0c0V4cHI6Q30pLF9hc3NlcnQ6VShcImFzc2VydFwiLHtzdGFydHNFeHByOkN9KSxfYXN5bmM6VShcImFzeW5jXCIse3N0YXJ0c0V4cHI6Q30pLF9hd2FpdDpVKFwiYXdhaXRcIix7c3RhcnRzRXhwcjpDfSksX2Zyb206VShcImZyb21cIix7c3RhcnRzRXhwcjpDfSksX2dldDpVKFwiZ2V0XCIse3N0YXJ0c0V4cHI6Q30pLF9sZXQ6VShcImxldFwiLHtzdGFydHNFeHByOkN9KSxfbWV0YTpVKFwibWV0YVwiLHtzdGFydHNFeHByOkN9KSxfb2Y6VShcIm9mXCIse3N0YXJ0c0V4cHI6Q30pLF9zZW50OlUoXCJzZW50XCIse3N0YXJ0c0V4cHI6Q30pLF9zZXQ6VShcInNldFwiLHtzdGFydHNFeHByOkN9KSxfc3RhdGljOlUoXCJzdGF0aWNcIix7c3RhcnRzRXhwcjpDfSksX3lpZWxkOlUoXCJ5aWVsZFwiLHtzdGFydHNFeHByOkN9KSxfYXNzZXJ0czpVKFwiYXNzZXJ0c1wiLHtzdGFydHNFeHByOkN9KSxfY2hlY2tzOlUoXCJjaGVja3NcIix7c3RhcnRzRXhwcjpDfSksX2V4cG9ydHM6VShcImV4cG9ydHNcIix7c3RhcnRzRXhwcjpDfSksX2dsb2JhbDpVKFwiZ2xvYmFsXCIse3N0YXJ0c0V4cHI6Q30pLF9pbXBsZW1lbnRzOlUoXCJpbXBsZW1lbnRzXCIse3N0YXJ0c0V4cHI6Q30pLF9pbnRyaW5zaWM6VShcImludHJpbnNpY1wiLHtzdGFydHNFeHByOkN9KSxfaW5mZXI6VShcImluZmVyXCIse3N0YXJ0c0V4cHI6Q30pLF9pczpVKFwiaXNcIix7c3RhcnRzRXhwcjpDfSksX21peGluczpVKFwibWl4aW5zXCIse3N0YXJ0c0V4cHI6Q30pLF9wcm90bzpVKFwicHJvdG9cIix7c3RhcnRzRXhwcjpDfSksX3JlcXVpcmU6VShcInJlcXVpcmVcIix7c3RhcnRzRXhwcjpDfSksX2tleW9mOlUoXCJrZXlvZlwiLHtzdGFydHNFeHByOkN9KSxfcmVhZG9ubHk6VShcInJlYWRvbmx5XCIse3N0YXJ0c0V4cHI6Q30pLF91bmlxdWU6VShcInVuaXF1ZVwiLHtzdGFydHNFeHByOkN9KSxfYWJzdHJhY3Q6VShcImFic3RyYWN0XCIse3N0YXJ0c0V4cHI6Q30pLF9kZWNsYXJlOlUoXCJkZWNsYXJlXCIse3N0YXJ0c0V4cHI6Q30pLF9lbnVtOlUoXCJlbnVtXCIse3N0YXJ0c0V4cHI6Q30pLF9tb2R1bGU6VShcIm1vZHVsZVwiLHtzdGFydHNFeHByOkN9KSxfbmFtZXNwYWNlOlUoXCJuYW1lc3BhY2VcIix7c3RhcnRzRXhwcjpDfSksX2ludGVyZmFjZTpVKFwiaW50ZXJmYWNlXCIse3N0YXJ0c0V4cHI6Q30pLF90eXBlOlUoXCJ0eXBlXCIse3N0YXJ0c0V4cHI6Q30pLF9vcGFxdWU6VShcIm9wYXF1ZVwiLHtzdGFydHNFeHByOkN9KSxuYW1lOncoXCJuYW1lXCIse3N0YXJ0c0V4cHI6Q30pLHN0cmluZzp3KFwic3RyaW5nXCIse3N0YXJ0c0V4cHI6Q30pLG51bTp3KFwibnVtXCIse3N0YXJ0c0V4cHI6Q30pLGJpZ2ludDp3KFwiYmlnaW50XCIse3N0YXJ0c0V4cHI6Q30pLGRlY2ltYWw6dyhcImRlY2ltYWxcIix7c3RhcnRzRXhwcjpDfSkscmVnZXhwOncoXCJyZWdleHBcIix7c3RhcnRzRXhwcjpDfSkscHJpdmF0ZU5hbWU6dyhcIiNuYW1lXCIse3N0YXJ0c0V4cHI6Q30pLGVvZjp3KFwiZW9mXCIpLGpzeE5hbWU6dyhcImpzeE5hbWVcIiksanN4VGV4dDp3KFwianN4VGV4dFwiLHtiZWZvcmVFeHByOiEwfSksanN4VGFnU3RhcnQ6dyhcImpzeFRhZ1N0YXJ0XCIse3N0YXJ0c0V4cHI6ITB9KSxqc3hUYWdFbmQ6dyhcImpzeFRhZ0VuZFwiKSxwbGFjZWhvbGRlcjp3KFwiJSVcIix7c3RhcnRzRXhwcjohMH0pfTtmdW5jdGlvbiBLKHQpe3JldHVybiB0Pj05MyYmdDw9MTI4fWZ1bmN0aW9uIHZvKHQpe3JldHVybiB0PD05Mn1mdW5jdGlvbiBwZSh0KXtyZXR1cm4gdD49NTgmJnQ8PTEyOH1mdW5jdGlvbiBocih0KXtyZXR1cm4gdD49NTgmJnQ8PTEzMn1mdW5jdGlvbiBTbyh0KXtyZXR1cm4gX3RbdF19ZnVuY3Rpb24gVnQodCl7cmV0dXJuIHp0W3RdfWZ1bmN0aW9uIHdvKHQpe3JldHVybiB0Pj0yOSYmdDw9MzN9ZnVuY3Rpb24gbHIodCl7cmV0dXJuIHQ+PTEyNSYmdDw9MTI3fWZ1bmN0aW9uIE5vKHQpe3JldHVybiB0Pj05MCYmdDw9OTJ9ZnVuY3Rpb24gSHQodCl7cmV0dXJuIHQ+PTU4JiZ0PD05Mn1mdW5jdGlvbiBJbyh0KXtyZXR1cm4gdD49MzkmJnQ8PTU5fWZ1bmN0aW9uIGtvKHQpe3JldHVybiB0PT09MzR9ZnVuY3Rpb24gRG8odCl7cmV0dXJuIEt0W3RdfWZ1bmN0aW9uIEZvKHQpe3JldHVybiB0Pj0xMTcmJnQ8PTExOX1mdW5jdGlvbiBMbyh0KXtyZXR1cm4gdD49MTIwJiZ0PD0xMjZ9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIFV0W3RdfWZ1bmN0aW9uIGF0KHQpe3JldHVybiBpdFt0XX1mdW5jdGlvbiBPbyh0KXtyZXR1cm4gaXRbdF0hPT0tMX1mdW5jdGlvbiBCbyh0KXtyZXR1cm4gdD09PTU3fWZ1bmN0aW9uIG50KHQpe3JldHVybiB0Pj0yNCYmdDw9MjV9ZnVuY3Rpb24gZmUodCl7cmV0dXJuIGNlW3RdfWNlWzhdLnVwZGF0ZUNvbnRleHQ9dD0+e3QucG9wKCl9LGNlWzVdLnVwZGF0ZUNvbnRleHQ9Y2VbN10udXBkYXRlQ29udGV4dD1jZVsyM10udXBkYXRlQ29udGV4dD10PT57dC5wdXNoKHouYnJhY2UpfSxjZVsyMl0udXBkYXRlQ29udGV4dD10PT57dFt0Lmxlbmd0aC0xXT09PXoudGVtcGxhdGU/dC5wb3AoKTp0LnB1c2goei50ZW1wbGF0ZSl9LGNlWzEzOF0udXBkYXRlQ29udGV4dD10PT57dC5wdXNoKHoual9leHByLHoual9vVGFnKX07dmFyIFd0PVwiXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjAtXFx1MDU4OFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwODYwLVxcdTA4NkFcXHUwODcwLVxcdTA4ODdcXHUwODg5LVxcdTA4OEVcXHUwOEEwLVxcdTA4QzlcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTA5RkNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM1RFxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0REXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA0LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENTQtXFx1MEQ1NlxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODYtXFx1MEU4QVxcdTBFOEMtXFx1MEVBM1xcdTBFQTVcXHUwRUE3LVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcxMVxcdTE3MUYtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc4XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNENcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDODAtXFx1MUM4OFxcdTFDOTAtXFx1MUNCQVxcdTFDQkQtXFx1MUNCRlxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGM1xcdTFDRjVcXHUxQ0Y2XFx1MUNGQVxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUItXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkVGXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0NBXFx1QTdEMFxcdUE3RDFcXHVBN0QzXFx1QTdENS1cXHVBN0Q5XFx1QTdGMi1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2OVxcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ1wiLHVyPVwiXFx1MjAwQ1xcdTIwMERcXHhCN1xcdTAzMDAtXFx1MDM2RlxcdTAzODdcXHUwNDgzLVxcdTA0ODdcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNjEwLVxcdTA2MUFcXHUwNjRCLVxcdTA2NjlcXHUwNjcwXFx1MDZENi1cXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFN1xcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNkYwLVxcdTA2RjlcXHUwNzExXFx1MDczMC1cXHUwNzRBXFx1MDdBNi1cXHUwN0IwXFx1MDdDMC1cXHUwN0M5XFx1MDdFQi1cXHUwN0YzXFx1MDdGRFxcdTA4MTYtXFx1MDgxOVxcdTA4MUItXFx1MDgyM1xcdTA4MjUtXFx1MDgyN1xcdTA4MjktXFx1MDgyRFxcdTA4NTktXFx1MDg1QlxcdTA4OTgtXFx1MDg5RlxcdTA4Q0EtXFx1MDhFMVxcdTA4RTMtXFx1MDkwM1xcdTA5M0EtXFx1MDkzQ1xcdTA5M0UtXFx1MDk0RlxcdTA5NTEtXFx1MDk1N1xcdTA5NjJcXHUwOTYzXFx1MDk2Ni1cXHUwOTZGXFx1MDk4MS1cXHUwOTgzXFx1MDlCQ1xcdTA5QkUtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNEXFx1MDlEN1xcdTA5RTJcXHUwOUUzXFx1MDlFNi1cXHUwOUVGXFx1MDlGRVxcdTBBMDEtXFx1MEEwM1xcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTY2LVxcdTBBNzFcXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEFCQ1xcdTBBQkUtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRTJcXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEFGQS1cXHUwQUZGXFx1MEIwMS1cXHUwQjAzXFx1MEIzQ1xcdTBCM0UtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NS1cXHUwQjU3XFx1MEI2MlxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjgyXFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDAtXFx1MEMwNFxcdTBDM0NcXHUwQzNFLVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNjJcXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MS1cXHUwQzgzXFx1MENCQ1xcdTBDQkUtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENFMlxcdTBDRTNcXHUwQ0U2LVxcdTBDRUZcXHUwRDAwLVxcdTBEMDNcXHUwRDNCXFx1MEQzQ1xcdTBEM0UtXFx1MEQ0NFxcdTBENDYtXFx1MEQ0OFxcdTBENEEtXFx1MEQ0RFxcdTBENTdcXHUwRDYyXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEODEtXFx1MEQ4M1xcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERFNi1cXHUwREVGXFx1MERGMlxcdTBERjNcXHUwRTMxXFx1MEUzNC1cXHUwRTNBXFx1MEU0Ny1cXHUwRTRFXFx1MEU1MC1cXHUwRTU5XFx1MEVCMVxcdTBFQjQtXFx1MEVCQ1xcdTBFQzgtXFx1MEVDRFxcdTBFRDAtXFx1MEVEOVxcdTBGMThcXHUwRjE5XFx1MEYyMC1cXHUwRjI5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRVxcdTBGM0ZcXHUwRjcxLVxcdTBGODRcXHUwRjg2XFx1MEY4N1xcdTBGOEQtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDJCLVxcdTEwM0VcXHUxMDQwLVxcdTEwNDlcXHUxMDU2LVxcdTEwNTlcXHUxMDVFLVxcdTEwNjBcXHUxMDYyLVxcdTEwNjRcXHUxMDY3LVxcdTEwNkRcXHUxMDcxLVxcdTEwNzRcXHUxMDgyLVxcdTEwOERcXHUxMDhGLVxcdTEwOURcXHUxMzVELVxcdTEzNUZcXHUxMzY5LVxcdTEzNzFcXHUxNzEyLVxcdTE3MTVcXHUxNzMyLVxcdTE3MzRcXHUxNzUyXFx1MTc1M1xcdTE3NzJcXHUxNzczXFx1MTdCNC1cXHUxN0QzXFx1MTdERFxcdTE3RTAtXFx1MTdFOVxcdTE4MEItXFx1MTgwRFxcdTE4MEYtXFx1MTgxOVxcdTE4QTlcXHUxOTIwLVxcdTE5MkJcXHUxOTMwLVxcdTE5M0JcXHUxOTQ2LVxcdTE5NEZcXHUxOUQwLVxcdTE5REFcXHUxQTE3LVxcdTFBMUJcXHUxQTU1LVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQUIwLVxcdTFBQkRcXHUxQUJGLVxcdTFBQ0VcXHUxQjAwLVxcdTFCMDRcXHUxQjM0LVxcdTFCNDRcXHUxQjUwLVxcdTFCNTlcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCODJcXHUxQkExLVxcdTFCQURcXHUxQkIwLVxcdTFCQjlcXHUxQkU2LVxcdTFCRjNcXHUxQzI0LVxcdTFDMzdcXHUxQzQwLVxcdTFDNDlcXHUxQzUwLVxcdTFDNTlcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRThcXHUxQ0VEXFx1MUNGNFxcdTFDRjctXFx1MUNGOVxcdTFEQzAtXFx1MURGRlxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRjBcXHUyQ0VGLVxcdTJDRjFcXHUyRDdGXFx1MkRFMC1cXHUyREZGXFx1MzAyQS1cXHUzMDJGXFx1MzA5OVxcdTMwOUFcXHVBNjIwLVxcdUE2MjlcXHVBNjZGXFx1QTY3NC1cXHVBNjdEXFx1QTY5RVxcdUE2OUZcXHVBNkYwXFx1QTZGMVxcdUE4MDJcXHVBODA2XFx1QTgwQlxcdUE4MjMtXFx1QTgyN1xcdUE4MkNcXHVBODgwXFx1QTg4MVxcdUE4QjQtXFx1QThDNVxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGMVxcdUE4RkYtXFx1QTkwOVxcdUE5MjYtXFx1QTkyRFxcdUE5NDctXFx1QTk1M1xcdUE5ODAtXFx1QTk4M1xcdUE5QjMtXFx1QTlDMFxcdUE5RDAtXFx1QTlEOVxcdUE5RTVcXHVBOUYwLVxcdUE5RjlcXHVBQTI5LVxcdUFBMzZcXHVBQTQzXFx1QUE0Q1xcdUFBNERcXHVBQTUwLVxcdUFBNTlcXHVBQTdCLVxcdUFBN0RcXHVBQUIwXFx1QUFCMi1cXHVBQUI0XFx1QUFCN1xcdUFBQjhcXHVBQUJFXFx1QUFCRlxcdUFBQzFcXHVBQUVCLVxcdUFBRUZcXHVBQUY1XFx1QUFGNlxcdUFCRTMtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1RkIxRVxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRlxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkYxMC1cXHVGRjE5XFx1RkYzRlwiLE1vPW5ldyBSZWdFeHAoXCJbXCIrV3QrXCJdXCIpLFJvPW5ldyBSZWdFeHAoXCJbXCIrV3QrdXIrXCJdXCIpO1d0PXVyPW51bGw7dmFyIGNyPVswLDExLDIsMjUsMiwxOCwyLDEsMiwxNCwzLDEzLDM1LDEyMiw3MCw1MiwyNjgsMjgsNCw0OCw0OCwzMSwxNCwyOSw2LDM3LDExLDI5LDMsMzUsNSw3LDIsNCw0MywxNTcsMTksMzUsNSwzNSw1LDM5LDksNTEsMTMsMTAsMiwxNCwyLDYsMiwxLDIsMTAsMiwxNCwyLDYsMiwxLDY4LDMxMCwxMCwyMSwxMSw3LDI1LDUsMiw0MSwyLDgsNzAsNSwzLDAsMiw0MywyLDEsNCwwLDMsMjIsMTEsMjIsMTAsMzAsNjYsMTgsMiwxLDExLDIxLDExLDI1LDcxLDU1LDcsMSw2NSwwLDE2LDMsMiwyLDIsMjgsNDMsMjgsNCwyOCwzNiw3LDIsMjcsMjgsNTMsMTEsMjEsMTEsMTgsMTQsMTcsMTExLDcyLDU2LDUwLDE0LDUwLDE0LDM1LDM0OSw0MSw3LDEsNzksMjgsMTEsMCw5LDIxLDQzLDE3LDQ3LDIwLDI4LDIyLDEzLDUyLDU4LDEsMywwLDE0LDQ0LDMzLDI0LDI3LDM1LDMwLDAsMywwLDksMzQsNCwwLDEzLDQ3LDE1LDMsMjIsMCwyLDAsMzYsMTcsMiwyNCw4NSw2LDIsMCwyLDMsMiwxNCwyLDksOCw0NiwzOSw3LDMsMSwzLDIxLDIsNiwyLDEsMiw0LDQsMCwxOSwwLDEzLDQsMTU5LDUyLDE5LDMsMjEsMiwzMSw0NywyMSwxLDIsMCwxODUsNDYsNDIsMywzNyw0NywyMSwwLDYwLDQyLDE0LDAsNzIsMjYsMzgsNiwxODYsNDMsMTE3LDYzLDMyLDcsMywwLDMsNywyLDEsMiwyMywxNiwwLDIsMCw5NSw3LDMsMzgsMTcsMCwyLDAsMjksMCwxMSwzOSw4LDAsMjIsMCwxMiw0NSwyMCwwLDE5LDcyLDI2NCw4LDIsMzYsMTgsMCw1MCwyOSwxMTMsNiwyLDEsMiwzNywyMiwwLDI2LDUsMiwxLDIsMzEsMTUsMCwzMjgsMTgsMTkwLDAsODAsOTIxLDEwMywxMTAsMTgsMTk1LDI2MzcsOTYsMTYsMTA3MCw0MDUwLDU4Miw4NjM0LDU2OCw4LDMwLDE4LDc4LDE4LDI5LDE5LDQ3LDE3LDMsMzIsMjAsNiwxOCw2ODksNjMsMTI5LDc0LDYsMCw2NywxMiw2NSwxLDIsMCwyOSw2MTM1LDksMTIzNyw0Myw4LDg5MzYsMywyLDYsMiwxLDIsMjkwLDQ2LDIsMTgsMyw5LDM5NSwyMzA5LDEwNiw2LDEyLDQsOCw4LDksNTk5MSw4NCwyLDcwLDIsMSwzLDAsMywxLDMsMywyLDExLDIsMCwyLDYsMiw2NCwyLDMsMyw3LDIsNiwyLDI3LDIsMywyLDQsMiwwLDQsNiwyLDMzOSwzLDI0LDIsMjQsMiwzMCwyLDI0LDIsMzAsMiwyNCwyLDMwLDIsMjQsMiwzMCwyLDI0LDIsNywxODQ1LDMwLDQ4Miw0NCwxMSw2LDE3LDAsMzIyLDI5LDE5LDQzLDEyNjksNiwyLDMsMiwxLDIsMTQsMiwxOTYsNjAsNjcsOCwwLDEyMDUsMywyLDI2LDIsMSwyLDAsMywwLDIsOSwyLDMsMiwwLDIsMCw3LDAsNSwwLDIsMCwyLDAsMiwyLDIsMSwyLDAsMywwLDIsMCwyLDAsMiwwLDIsMCwyLDEsMiwwLDMsMywyLDYsMiwzLDIsMywyLDAsMiw5LDIsMTYsNiwyLDIsNCwyLDE2LDQ0MjEsNDI3MTksMzMsNDE1Miw4LDIyMSwzLDU3NjEsMTUsNzQ3MiwzMTA0LDU0MSwxNTA3LDQ5MzhdLGpvPVs1MDksMCwyMjcsMCwxNTAsNCwyOTQsOSwxMzY4LDIsMiwxLDYsMyw0MSwyLDUsMCwxNjYsMSw1NzQsMyw5LDksMzcwLDEsMTU0LDEwLDUwLDMsMTIzLDIsNTQsMTQsMzIsMTAsMywxLDExLDMsNDYsMTAsOCwwLDQ2LDksNywyLDM3LDEzLDIsOSw2LDEsNDUsMCwxMywyLDQ5LDEzLDksMywyLDExLDgzLDExLDcsMCwxNjEsMTEsNiw5LDcsMyw1NiwxLDIsNiwzLDEsMywyLDEwLDAsMTEsMSwzLDYsNCw0LDE5MywxNywxMCw5LDUsMCw4MiwxOSwxMyw5LDIxNCw2LDMsOCwyOCwxLDgzLDE2LDE2LDksODIsMTIsOSw5LDg0LDE0LDUsOSwyNDMsMTQsMTY2LDksNzEsNSwyLDEsMywzLDIsMCwyLDEsMTMsOSwxMjAsNiwzLDYsNCwwLDI5LDksNDEsNiwyLDMsOSwwLDEwLDEwLDQ3LDE1LDQwNiw3LDIsNywxNyw5LDU3LDIxLDIsMTMsMTIzLDUsNCwwLDIsMSwyLDYsMiwwLDksOSw0OSw0LDIsMSwyLDQsOSw5LDMzMCwzLDE5MzA2LDksODcsOSwzOSw0LDYwLDYsMjYsOSwxMDE0LDAsMiw1NCw4LDMsODIsMCwxMiwxLDE5NjI4LDEsNDcwNiw0NSwzLDIyLDU0Myw0LDQsNSw5LDcsMyw2LDMxLDMsMTQ5LDIsMTQxOCw0OSw1MTMsNTQsNSw0OSw5LDAsMTUsMCwyMyw0LDIsMTQsMTM2MSw2LDIsMTYsMyw2LDIsMSwyLDQsMjYyLDYsMTAsOSwzNTcsMCw2MiwxMywxNDk1LDYsMTEwLDYsNiw5LDQ3NTksOSw3ODc3MTksMjM5XTtmdW5jdGlvbiBHdCh0LGUpe2xldCBzPTY1NTM2O2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrPTIpe2lmKHMrPWVbcl0scz50KXJldHVybiExO2lmKHMrPWVbcisxXSxzPj10KXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGRlKHQpe3JldHVybiB0PDY1P3Q9PT0zNjp0PD05MD8hMDp0PDk3P3Q9PT05NTp0PD0xMjI/ITA6dDw9NjU1MzU/dD49MTcwJiZNby50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOkd0KHQsY3IpfWZ1bmN0aW9uIEJlKHQpe3JldHVybiB0PDQ4P3Q9PT0zNjp0PDU4PyEwOnQ8NjU/ITE6dDw9OTA/ITA6dDw5Nz90PT09OTU6dDw9MTIyPyEwOnQ8PTY1NTM1P3Q+PTE3MCYmUm8udGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTpHdCh0LGNyKXx8R3QodCxqbyl9dmFyIFh0PXtrZXl3b3JkOltcImJyZWFrXCIsXCJjYXNlXCIsXCJjYXRjaFwiLFwiY29udGludWVcIixcImRlYnVnZ2VyXCIsXCJkZWZhdWx0XCIsXCJkb1wiLFwiZWxzZVwiLFwiZmluYWxseVwiLFwiZm9yXCIsXCJmdW5jdGlvblwiLFwiaWZcIixcInJldHVyblwiLFwic3dpdGNoXCIsXCJ0aHJvd1wiLFwidHJ5XCIsXCJ2YXJcIixcImNvbnN0XCIsXCJ3aGlsZVwiLFwid2l0aFwiLFwibmV3XCIsXCJ0aGlzXCIsXCJzdXBlclwiLFwiY2xhc3NcIixcImV4dGVuZHNcIixcImV4cG9ydFwiLFwiaW1wb3J0XCIsXCJudWxsXCIsXCJ0cnVlXCIsXCJmYWxzZVwiLFwiaW5cIixcImluc3RhbmNlb2ZcIixcInR5cGVvZlwiLFwidm9pZFwiLFwiZGVsZXRlXCJdLHN0cmljdDpbXCJpbXBsZW1lbnRzXCIsXCJpbnRlcmZhY2VcIixcImxldFwiLFwicGFja2FnZVwiLFwicHJpdmF0ZVwiLFwicHJvdGVjdGVkXCIsXCJwdWJsaWNcIixcInN0YXRpY1wiLFwieWllbGRcIl0sc3RyaWN0QmluZDpbXCJldmFsXCIsXCJhcmd1bWVudHNcIl19LHFvPW5ldyBTZXQoWHQua2V5d29yZCksVW89bmV3IFNldChYdC5zdHJpY3QpLF9vPW5ldyBTZXQoWHQuc3RyaWN0QmluZCk7ZnVuY3Rpb24gcHIodCxlKXtyZXR1cm4gZSYmdD09PVwiYXdhaXRcInx8dD09PVwiZW51bVwifWZ1bmN0aW9uIGZyKHQsZSl7cmV0dXJuIHByKHQsZSl8fFVvLmhhcyh0KX1mdW5jdGlvbiBkcih0KXtyZXR1cm4gX28uaGFzKHQpfWZ1bmN0aW9uIG1yKHQsZSl7cmV0dXJuIGZyKHQsZSl8fGRyKHQpfWZ1bmN0aW9uIHpvKHQpe3JldHVybiBxby5oYXModCl9ZnVuY3Rpb24gS28odCxlLHMpe3JldHVybiB0PT09NjQmJmU9PT02NCYmZGUocyl9dmFyIFZvPW5ldyBTZXQoW1wiYnJlYWtcIixcImNhc2VcIixcImNhdGNoXCIsXCJjb250aW51ZVwiLFwiZGVidWdnZXJcIixcImRlZmF1bHRcIixcImRvXCIsXCJlbHNlXCIsXCJmaW5hbGx5XCIsXCJmb3JcIixcImZ1bmN0aW9uXCIsXCJpZlwiLFwicmV0dXJuXCIsXCJzd2l0Y2hcIixcInRocm93XCIsXCJ0cnlcIixcInZhclwiLFwiY29uc3RcIixcIndoaWxlXCIsXCJ3aXRoXCIsXCJuZXdcIixcInRoaXNcIixcInN1cGVyXCIsXCJjbGFzc1wiLFwiZXh0ZW5kc1wiLFwiZXhwb3J0XCIsXCJpbXBvcnRcIixcIm51bGxcIixcInRydWVcIixcImZhbHNlXCIsXCJpblwiLFwiaW5zdGFuY2VvZlwiLFwidHlwZW9mXCIsXCJ2b2lkXCIsXCJkZWxldGVcIixcImltcGxlbWVudHNcIixcImludGVyZmFjZVwiLFwibGV0XCIsXCJwYWNrYWdlXCIsXCJwcml2YXRlXCIsXCJwcm90ZWN0ZWRcIixcInB1YmxpY1wiLFwic3RhdGljXCIsXCJ5aWVsZFwiLFwiZXZhbFwiLFwiYXJndW1lbnRzXCIsXCJlbnVtXCIsXCJhd2FpdFwiXSk7ZnVuY3Rpb24gSG8odCl7cmV0dXJuIFZvLmhhcyh0KX12YXIgTWU9MCxXZT0xLG1lPTIsSnQ9NCx5cj04LG90PTE2LHhyPTMyLFNlPTY0LFl0PTEyOCxodD0yNTYsbHQ9V2V8bWV8aHQseWU9MSxSZT0yLGdyPTQsVGU9OCx1dD0xNixBcj02NCxjdD0xMjgsJHQ9MjU2LFF0PTUxMixadD0xMDI0LGVzPTIwNDgsUHI9eWV8UmV8VGV8Y3QseGU9eWV8MHxUZXwwLHB0PXllfDB8Z3J8MCxUcj15ZXwwfHV0fDAsV289MHxSZXwwfGN0LEdvPTB8UmV8MHwwLEVyPXllfFJlfFRlfCR0LENyPTB8WnQsd2U9MHxBcixYbz15ZXwwfDB8QXIsSm89RXJ8UXQsWW89MHxadCwkbz1lcyxmdD00LHRzPTIsc3M9MSxycz10c3xzcyxRbz10c3xmdCxabz1zc3xmdCxlaD10cyx0aD1zcyxpcz0wLHNoPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zYXdVbmFtYmlndW91c0VTTT0hMSx0aGlzLmFtYmlndW91c1NjcmlwdERpZmZlcmVudEFzdD0hMX1oYXNQbHVnaW4odCl7aWYodHlwZW9mIHQ9PVwic3RyaW5nXCIpcmV0dXJuIHRoaXMucGx1Z2lucy5oYXModCk7e2xldFtlLHNdPXQ7aWYoIXRoaXMuaGFzUGx1Z2luKGUpKXJldHVybiExO2xldCByPXRoaXMucGx1Z2lucy5nZXQoZSk7Zm9yKGxldCBpIG9mIE9iamVjdC5rZXlzKHMpKWlmKChyPT1udWxsP3ZvaWQgMDpyW2ldKSE9PXNbaV0pcmV0dXJuITE7cmV0dXJuITB9fWdldFBsdWdpbk9wdGlvbih0LGUpe3ZhciBzO3JldHVybihzPXRoaXMucGx1Z2lucy5nZXQodCkpPT1udWxsP3ZvaWQgMDpzW2VdfX07ZnVuY3Rpb24gYnIodCxlKXt0LnRyYWlsaW5nQ29tbWVudHM9PT12b2lkIDA/dC50cmFpbGluZ0NvbW1lbnRzPWU6dC50cmFpbGluZ0NvbW1lbnRzLnVuc2hpZnQoLi4uZSl9ZnVuY3Rpb24gcmgodCxlKXt0LmxlYWRpbmdDb21tZW50cz09PXZvaWQgMD90LmxlYWRpbmdDb21tZW50cz1lOnQubGVhZGluZ0NvbW1lbnRzLnVuc2hpZnQoLi4uZSl9ZnVuY3Rpb24gR2UodCxlKXt0LmlubmVyQ29tbWVudHM9PT12b2lkIDA/dC5pbm5lckNvbW1lbnRzPWU6dC5pbm5lckNvbW1lbnRzLnVuc2hpZnQoLi4uZSl9ZnVuY3Rpb24gWGUodCxlLHMpe2xldCByPW51bGwsaT1lLmxlbmd0aDtmb3IoO3I9PT1udWxsJiZpPjA7KXI9ZVstLWldO3I9PT1udWxsfHxyLnN0YXJ0PnMuc3RhcnQ/R2UodCxzLmNvbW1lbnRzKTpicihyLHMuY29tbWVudHMpfXZhciBpaD1jbGFzcyBleHRlbmRzIHNoe2FkZENvbW1lbnQodCl7dGhpcy5maWxlbmFtZSYmKHQubG9jLmZpbGVuYW1lPXRoaXMuZmlsZW5hbWUpLHRoaXMuc3RhdGUuY29tbWVudHMucHVzaCh0KX1wcm9jZXNzQ29tbWVudCh0KXtsZXR7Y29tbWVudFN0YWNrOmV9PXRoaXMuc3RhdGUscz1lLmxlbmd0aDtpZihzPT09MClyZXR1cm47bGV0IHI9cy0xLGk9ZVtyXTtpLnN0YXJ0PT09dC5lbmQmJihpLmxlYWRpbmdOb2RlPXQsci0tKTtsZXR7c3RhcnQ6YX09dDtmb3IoO3I+PTA7ci0tKXtsZXQgbj1lW3JdLG89bi5lbmQ7aWYobz5hKW4uY29udGFpbmluZ05vZGU9dCx0aGlzLmZpbmFsaXplQ29tbWVudChuKSxlLnNwbGljZShyLDEpO2Vsc2V7bz09PWEmJihuLnRyYWlsaW5nTm9kZT10KTticmVha319fWZpbmFsaXplQ29tbWVudCh0KXtsZXR7Y29tbWVudHM6ZX09dDtpZih0LmxlYWRpbmdOb2RlIT09bnVsbHx8dC50cmFpbGluZ05vZGUhPT1udWxsKXQubGVhZGluZ05vZGUhPT1udWxsJiZicih0LmxlYWRpbmdOb2RlLGUpLHQudHJhaWxpbmdOb2RlIT09bnVsbCYmcmgodC50cmFpbGluZ05vZGUsZSk7ZWxzZXtsZXR7Y29udGFpbmluZ05vZGU6cyxzdGFydDpyfT10O2lmKHRoaXMuaW5wdXQuY2hhckNvZGVBdChyLTEpPT09NDQpc3dpdGNoKHMudHlwZSl7Y2FzZVwiT2JqZWN0RXhwcmVzc2lvblwiOmNhc2VcIk9iamVjdFBhdHRlcm5cIjpjYXNlXCJSZWNvcmRFeHByZXNzaW9uXCI6WGUocyxzLnByb3BlcnRpZXMsdCk7YnJlYWs7Y2FzZVwiQ2FsbEV4cHJlc3Npb25cIjpjYXNlXCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCI6WGUocyxzLmFyZ3VtZW50cyx0KTticmVhaztjYXNlXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCI6Y2FzZVwiRnVuY3Rpb25FeHByZXNzaW9uXCI6Y2FzZVwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIjpjYXNlXCJPYmplY3RNZXRob2RcIjpjYXNlXCJDbGFzc01ldGhvZFwiOmNhc2VcIkNsYXNzUHJpdmF0ZU1ldGhvZFwiOlhlKHMscy5wYXJhbXMsdCk7YnJlYWs7Y2FzZVwiQXJyYXlFeHByZXNzaW9uXCI6Y2FzZVwiQXJyYXlQYXR0ZXJuXCI6Y2FzZVwiVHVwbGVFeHByZXNzaW9uXCI6WGUocyxzLmVsZW1lbnRzLHQpO2JyZWFrO2Nhc2VcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIjpjYXNlXCJJbXBvcnREZWNsYXJhdGlvblwiOlhlKHMscy5zcGVjaWZpZXJzLHQpO2JyZWFrO2RlZmF1bHQ6R2UocyxlKX1lbHNlIEdlKHMsZSl9fWZpbmFsaXplUmVtYWluaW5nQ29tbWVudHMoKXtsZXR7Y29tbWVudFN0YWNrOnR9PXRoaXMuc3RhdGU7Zm9yKGxldCBlPXQubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy5maW5hbGl6ZUNvbW1lbnQodFtlXSk7dGhpcy5zdGF0ZS5jb21tZW50U3RhY2s9W119cmVzZXRQcmV2aW91c05vZGVUcmFpbGluZ0NvbW1lbnRzKHQpe2xldHtjb21tZW50U3RhY2s6ZX09dGhpcy5zdGF0ZSx7bGVuZ3RoOnN9PWU7aWYocz09PTApcmV0dXJuO2xldCByPWVbcy0xXTtyLmxlYWRpbmdOb2RlPT09dCYmKHIubGVhZGluZ05vZGU9bnVsbCl9dGFrZVN1cnJvdW5kaW5nQ29tbWVudHModCxlLHMpe2xldHtjb21tZW50U3RhY2s6cn09dGhpcy5zdGF0ZSxpPXIubGVuZ3RoO2lmKGk9PT0wKXJldHVybjtsZXQgYT1pLTE7Zm9yKDthPj0wO2EtLSl7bGV0IG49clthXSxvPW4uZW5kO2lmKG4uc3RhcnQ9PT1zKW4ubGVhZGluZ05vZGU9dDtlbHNlIGlmKG89PT1lKW4udHJhaWxpbmdOb2RlPXQ7ZWxzZSBpZihvPGUpYnJlYWt9fX0sYXM9L1xcclxcbj98W1xcblxcdTIwMjhcXHUyMDI5XS8sZHQ9bmV3IFJlZ0V4cChhcy5zb3VyY2UsXCJnXCIpO2Z1bmN0aW9uIE5lKHQpe3N3aXRjaCh0KXtjYXNlIDEwOmNhc2UgMTM6Y2FzZSA4MjMyOmNhc2UgODIzMzpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX12YXIgbnM9Lyg/Olxcc3xcXC9cXC8uKnxcXC9cXCpbXl0qP1xcKlxcLykqL2csYWg9Lyg/OlteXFxTXFxuXFxyXFx1MjAyOFxcdTIwMjldfFxcL1xcLy4qfFxcL1xcKi4qP1xcKlxcLykqL3ksdnI9bmV3IFJlZ0V4cChcIig/PShcIithaC5zb3VyY2UrXCIpKVxcXFwxXCIrLyg/PVtcXG5cXHJcXHUyMDI4XFx1MjAyOV18XFwvXFwqKD8hLio/XFwqXFwvKXwkKS8uc291cmNlLFwieVwiKTtmdW5jdGlvbiBuaCh0KXtzd2l0Y2godCl7Y2FzZSA5OmNhc2UgMTE6Y2FzZSAxMjpjYXNlIDMyOmNhc2UgMTYwOmNhc2UgNTc2MDpjYXNlIDgxOTI6Y2FzZSA4MTkzOmNhc2UgODE5NDpjYXNlIDgxOTU6Y2FzZSA4MTk2OmNhc2UgODE5NzpjYXNlIDgxOTg6Y2FzZSA4MTk5OmNhc2UgODIwMDpjYXNlIDgyMDE6Y2FzZSA4MjAyOmNhc2UgODIzOTpjYXNlIDgyODc6Y2FzZSAxMjI4ODpjYXNlIDY1Mjc5OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBTcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaWN0PXZvaWQgMCx0aGlzLmN1ckxpbmU9dm9pZCAwLHRoaXMubGluZVN0YXJ0PXZvaWQgMCx0aGlzLnN0YXJ0TG9jPXZvaWQgMCx0aGlzLmVuZExvYz12b2lkIDAsdGhpcy5lcnJvcnM9W10sdGhpcy5wb3RlbnRpYWxBcnJvd0F0PS0xLHRoaXMubm9BcnJvd0F0PVtdLHRoaXMubm9BcnJvd1BhcmFtc0NvbnZlcnNpb25BdD1bXSx0aGlzLm1heWJlSW5BcnJvd1BhcmFtZXRlcnM9ITEsdGhpcy5pblR5cGU9ITEsdGhpcy5ub0Fub25GdW5jdGlvblR5cGU9ITEsdGhpcy5oYXNGbG93Q29tbWVudD0hMSx0aGlzLmlzQW1iaWVudENvbnRleHQ9ITEsdGhpcy5pbkFic3RyYWN0Q2xhc3M9ITEsdGhpcy5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQ9ITEsdGhpcy50b3BpY0NvbnRleHQ9e21heE51bU9mUmVzb2x2YWJsZVRvcGljczowLG1heFRvcGljSW5kZXg6bnVsbH0sdGhpcy5zb2xvQXdhaXQ9ITEsdGhpcy5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keT0hMSx0aGlzLmxhYmVscz1bXSx0aGlzLmRlY29yYXRvclN0YWNrPVtbXV0sdGhpcy5jb21tZW50cz1bXSx0aGlzLmNvbW1lbnRTdGFjaz1bXSx0aGlzLnBvcz0wLHRoaXMudHlwZT0xMzUsdGhpcy52YWx1ZT1udWxsLHRoaXMuc3RhcnQ9MCx0aGlzLmVuZD0wLHRoaXMubGFzdFRva0VuZExvYz1udWxsLHRoaXMubGFzdFRva1N0YXJ0TG9jPW51bGwsdGhpcy5sYXN0VG9rU3RhcnQ9MCx0aGlzLmNvbnRleHQ9W3ouYnJhY2VdLHRoaXMuY2FuU3RhcnRKU1hFbGVtZW50PSEwLHRoaXMuY29udGFpbnNFc2M9ITEsdGhpcy5zdHJpY3RFcnJvcnM9bmV3IE1hcCx0aGlzLnRva2Vuc0xlbmd0aD0wfWluaXQodCl7bGV0e3N0cmljdE1vZGU6ZSxzb3VyY2VUeXBlOnMsc3RhcnRMaW5lOnIsc3RhcnRDb2x1bW46aX09dDt0aGlzLnN0cmljdD1lPT09ITE/ITE6ZT09PSEwPyEwOnM9PT1cIm1vZHVsZVwiLHRoaXMuY3VyTGluZT1yLHRoaXMubGluZVN0YXJ0PS1pLHRoaXMuc3RhcnRMb2M9dGhpcy5lbmRMb2M9bmV3IHAocixpLDApfWN1clBvc2l0aW9uKCl7cmV0dXJuIG5ldyBwKHRoaXMuY3VyTGluZSx0aGlzLnBvcy10aGlzLmxpbmVTdGFydCx0aGlzLnBvcyl9Y2xvbmUodCl7bGV0IGU9bmV3IFNyLHM9T2JqZWN0LmtleXModGhpcyk7Zm9yKGxldCByPTAsaT1zLmxlbmd0aDtyPGk7cisrKXtsZXQgYT1zW3JdLG49dGhpc1thXTshdCYmQXJyYXkuaXNBcnJheShuKSYmKG49bi5zbGljZSgpKSxlW2FdPW59cmV0dXJuIGV9fSxvaD1bXCJhdFwiXSxoaD1bXCJhdFwiXSxsaD1mdW5jdGlvbihlKXtyZXR1cm4gZT49NDgmJmU8PTU3fSx1aD1uZXcgU2V0KFsxMDMsMTA5LDExNSwxMDUsMTIxLDExNywxMDAsMTE4XSksd3I9e2RlY0Jpbk9jdDpuZXcgU2V0KFs0Niw2Niw2OSw3OSw5NSw5OCwxMDEsMTExXSksaGV4Om5ldyBTZXQoWzQ2LDg4LDk1LDEyMF0pfSxtdD17YmluOnQ9PnQ9PT00OHx8dD09PTQ5LG9jdDp0PT50Pj00OCYmdDw9NTUsZGVjOnQ9PnQ+PTQ4JiZ0PD01NyxoZXg6dD0+dD49NDgmJnQ8PTU3fHx0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDJ9LEVlPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMudHlwZT10LnR5cGUsdGhpcy52YWx1ZT10LnZhbHVlLHRoaXMuc3RhcnQ9dC5zdGFydCx0aGlzLmVuZD10LmVuZCx0aGlzLmxvYz1uZXcgZCh0LnN0YXJ0TG9jLHQuZW5kTG9jKX19LGNoPWNsYXNzIGV4dGVuZHMgaWh7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuaXNMb29rYWhlYWQ9dm9pZCAwLHRoaXMudG9rZW5zPVtdLHRoaXMuc3RhdGU9bmV3IFNyLHRoaXMuc3RhdGUuaW5pdCh0KSx0aGlzLmlucHV0PWUsdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5pc0xvb2thaGVhZD0hMX1wdXNoVG9rZW4odCl7dGhpcy50b2tlbnMubGVuZ3RoPXRoaXMuc3RhdGUudG9rZW5zTGVuZ3RoLHRoaXMudG9rZW5zLnB1c2godCksKyt0aGlzLnN0YXRlLnRva2Vuc0xlbmd0aH1uZXh0KCl7dGhpcy5jaGVja0tleXdvcmRFc2NhcGVzKCksdGhpcy5vcHRpb25zLnRva2VucyYmdGhpcy5wdXNoVG9rZW4obmV3IEVlKHRoaXMuc3RhdGUpKSx0aGlzLnN0YXRlLmxhc3RUb2tTdGFydD10aGlzLnN0YXRlLnN0YXJ0LHRoaXMuc3RhdGUubGFzdFRva0VuZExvYz10aGlzLnN0YXRlLmVuZExvYyx0aGlzLnN0YXRlLmxhc3RUb2tTdGFydExvYz10aGlzLnN0YXRlLnN0YXJ0TG9jLHRoaXMubmV4dFRva2VuKCl9ZWF0KHQpe3JldHVybiB0aGlzLm1hdGNoKHQpPyh0aGlzLm5leHQoKSwhMCk6ITF9bWF0Y2godCl7cmV0dXJuIHRoaXMuc3RhdGUudHlwZT09PXR9Y3JlYXRlTG9va2FoZWFkU3RhdGUodCl7cmV0dXJue3Bvczp0LnBvcyx2YWx1ZTpudWxsLHR5cGU6dC50eXBlLHN0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kLGNvbnRleHQ6W3RoaXMuY3VyQ29udGV4dCgpXSxpblR5cGU6dC5pblR5cGUsc3RhcnRMb2M6dC5zdGFydExvYyxsYXN0VG9rRW5kTG9jOnQubGFzdFRva0VuZExvYyxjdXJMaW5lOnQuY3VyTGluZSxsaW5lU3RhcnQ6dC5saW5lU3RhcnQsY3VyUG9zaXRpb246dC5jdXJQb3NpdGlvbn19bG9va2FoZWFkKCl7bGV0IHQ9dGhpcy5zdGF0ZTt0aGlzLnN0YXRlPXRoaXMuY3JlYXRlTG9va2FoZWFkU3RhdGUodCksdGhpcy5pc0xvb2thaGVhZD0hMCx0aGlzLm5leHRUb2tlbigpLHRoaXMuaXNMb29rYWhlYWQ9ITE7bGV0IGU9dGhpcy5zdGF0ZTtyZXR1cm4gdGhpcy5zdGF0ZT10LGV9bmV4dFRva2VuU3RhcnQoKXtyZXR1cm4gdGhpcy5uZXh0VG9rZW5TdGFydFNpbmNlKHRoaXMuc3RhdGUucG9zKX1uZXh0VG9rZW5TdGFydFNpbmNlKHQpe3JldHVybiBucy5sYXN0SW5kZXg9dCxucy50ZXN0KHRoaXMuaW5wdXQpP25zLmxhc3RJbmRleDp0fWxvb2thaGVhZENoYXJDb2RlKCl7cmV0dXJuIHRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLm5leHRUb2tlblN0YXJ0KCkpfWNvZGVQb2ludEF0UG9zKHQpe2xldCBlPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0KTtpZigoZSY2NDUxMik9PT01NTI5NiYmKyt0PHRoaXMuaW5wdXQubGVuZ3RoKXtsZXQgcz10aGlzLmlucHV0LmNoYXJDb2RlQXQodCk7KHMmNjQ1MTIpPT09NTYzMjAmJihlPTY1NTM2KygoZSYxMDIzKTw8MTApKyhzJjEwMjMpKX1yZXR1cm4gZX1zZXRTdHJpY3QodCl7dGhpcy5zdGF0ZS5zdHJpY3Q9dCx0JiYodGhpcy5zdGF0ZS5zdHJpY3RFcnJvcnMuZm9yRWFjaChlPT57bGV0W3Mscl09ZTtyZXR1cm4gdGhpcy5yYWlzZShzLHthdDpyfSl9KSx0aGlzLnN0YXRlLnN0cmljdEVycm9ycy5jbGVhcigpKX1jdXJDb250ZXh0KCl7cmV0dXJuIHRoaXMuc3RhdGUuY29udGV4dFt0aGlzLnN0YXRlLmNvbnRleHQubGVuZ3RoLTFdfW5leHRUb2tlbigpe2lmKHRoaXMuc2tpcFNwYWNlKCksdGhpcy5zdGF0ZS5zdGFydD10aGlzLnN0YXRlLnBvcyx0aGlzLmlzTG9va2FoZWFkfHwodGhpcy5zdGF0ZS5zdGFydExvYz10aGlzLnN0YXRlLmN1clBvc2l0aW9uKCkpLHRoaXMuc3RhdGUucG9zPj10aGlzLmxlbmd0aCl7dGhpcy5maW5pc2hUb2tlbigxMzUpO3JldHVybn10aGlzLmdldFRva2VuRnJvbUNvZGUodGhpcy5jb2RlUG9pbnRBdFBvcyh0aGlzLnN0YXRlLnBvcykpfXNraXBCbG9ja0NvbW1lbnQoKXtsZXQgdDt0aGlzLmlzTG9va2FoZWFkfHwodD10aGlzLnN0YXRlLmN1clBvc2l0aW9uKCkpO2xldCBlPXRoaXMuc3RhdGUucG9zLHM9dGhpcy5pbnB1dC5pbmRleE9mKFwiKi9cIixlKzIpO2lmKHM9PT0tMSl0aHJvdyB0aGlzLnJhaXNlKHUuVW50ZXJtaW5hdGVkQ29tbWVudCx7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSk7Zm9yKHRoaXMuc3RhdGUucG9zPXMrMixkdC5sYXN0SW5kZXg9ZSsyO2R0LnRlc3QodGhpcy5pbnB1dCkmJmR0Lmxhc3RJbmRleDw9czspKyt0aGlzLnN0YXRlLmN1ckxpbmUsdGhpcy5zdGF0ZS5saW5lU3RhcnQ9ZHQubGFzdEluZGV4O2lmKHRoaXMuaXNMb29rYWhlYWQpcmV0dXJuO2xldCByPXt0eXBlOlwiQ29tbWVudEJsb2NrXCIsdmFsdWU6dGhpcy5pbnB1dC5zbGljZShlKzIscyksc3RhcnQ6ZSxlbmQ6cysyLGxvYzpuZXcgZCh0LHRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKSl9O3JldHVybiB0aGlzLm9wdGlvbnMudG9rZW5zJiZ0aGlzLnB1c2hUb2tlbihyKSxyfXNraXBMaW5lQ29tbWVudCh0KXtsZXQgZT10aGlzLnN0YXRlLnBvcyxzO3RoaXMuaXNMb29rYWhlYWR8fChzPXRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKSk7bGV0IHI9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKz10KTtpZih0aGlzLnN0YXRlLnBvczx0aGlzLmxlbmd0aClmb3IoOyFOZShyKSYmKyt0aGlzLnN0YXRlLnBvczx0aGlzLmxlbmd0aDspcj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MpO2lmKHRoaXMuaXNMb29rYWhlYWQpcmV0dXJuO2xldCBpPXRoaXMuc3RhdGUucG9zLGE9dGhpcy5pbnB1dC5zbGljZShlK3QsaSksbj17dHlwZTpcIkNvbW1lbnRMaW5lXCIsdmFsdWU6YSxzdGFydDplLGVuZDppLGxvYzpuZXcgZChzLHRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKSl9O3JldHVybiB0aGlzLm9wdGlvbnMudG9rZW5zJiZ0aGlzLnB1c2hUb2tlbihuKSxufXNraXBTcGFjZSgpe2xldCB0PXRoaXMuc3RhdGUucG9zLGU9W107ZTpmb3IoO3RoaXMuc3RhdGUucG9zPHRoaXMubGVuZ3RoOyl7bGV0IHM9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKTtzd2l0Y2gocyl7Y2FzZSAzMjpjYXNlIDE2MDpjYXNlIDk6Kyt0aGlzLnN0YXRlLnBvczticmVhaztjYXNlIDEzOnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcysxKT09PTEwJiYrK3RoaXMuc3RhdGUucG9zO2Nhc2UgMTA6Y2FzZSA4MjMyOmNhc2UgODIzMzorK3RoaXMuc3RhdGUucG9zLCsrdGhpcy5zdGF0ZS5jdXJMaW5lLHRoaXMuc3RhdGUubGluZVN0YXJ0PXRoaXMuc3RhdGUucG9zO2JyZWFrO2Nhc2UgNDc6c3dpdGNoKHRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcysxKSl7Y2FzZSA0Mjp7bGV0IHI9dGhpcy5za2lwQmxvY2tDb21tZW50KCk7ciE9PXZvaWQgMCYmKHRoaXMuYWRkQ29tbWVudChyKSx0aGlzLm9wdGlvbnMuYXR0YWNoQ29tbWVudCYmZS5wdXNoKHIpKTticmVha31jYXNlIDQ3OntsZXQgcj10aGlzLnNraXBMaW5lQ29tbWVudCgyKTtyIT09dm9pZCAwJiYodGhpcy5hZGRDb21tZW50KHIpLHRoaXMub3B0aW9ucy5hdHRhY2hDb21tZW50JiZlLnB1c2gocikpO2JyZWFrfWRlZmF1bHQ6YnJlYWsgZX1icmVhaztkZWZhdWx0OmlmKG5oKHMpKSsrdGhpcy5zdGF0ZS5wb3M7ZWxzZSBpZihzPT09NDUmJiF0aGlzLmluTW9kdWxlKXtsZXQgcj10aGlzLnN0YXRlLnBvcztpZih0aGlzLmlucHV0LmNoYXJDb2RlQXQocisxKT09PTQ1JiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQocisyKT09PTYyJiYodD09PTB8fHRoaXMuc3RhdGUubGluZVN0YXJ0PnQpKXtsZXQgaT10aGlzLnNraXBMaW5lQ29tbWVudCgzKTtpIT09dm9pZCAwJiYodGhpcy5hZGRDb21tZW50KGkpLHRoaXMub3B0aW9ucy5hdHRhY2hDb21tZW50JiZlLnB1c2goaSkpfWVsc2UgYnJlYWsgZX1lbHNlIGlmKHM9PT02MCYmIXRoaXMuaW5Nb2R1bGUpe2xldCByPXRoaXMuc3RhdGUucG9zO2lmKHRoaXMuaW5wdXQuY2hhckNvZGVBdChyKzEpPT09MzMmJnRoaXMuaW5wdXQuY2hhckNvZGVBdChyKzIpPT09NDUmJnRoaXMuaW5wdXQuY2hhckNvZGVBdChyKzMpPT09NDUpe2xldCBpPXRoaXMuc2tpcExpbmVDb21tZW50KDQpO2khPT12b2lkIDAmJih0aGlzLmFkZENvbW1lbnQoaSksdGhpcy5vcHRpb25zLmF0dGFjaENvbW1lbnQmJmUucHVzaChpKSl9ZWxzZSBicmVhayBlfWVsc2UgYnJlYWsgZX19aWYoZS5sZW5ndGg+MCl7bGV0IHM9dGhpcy5zdGF0ZS5wb3Mscj17c3RhcnQ6dCxlbmQ6cyxjb21tZW50czplLGxlYWRpbmdOb2RlOm51bGwsdHJhaWxpbmdOb2RlOm51bGwsY29udGFpbmluZ05vZGU6bnVsbH07dGhpcy5zdGF0ZS5jb21tZW50U3RhY2sucHVzaChyKX19ZmluaXNoVG9rZW4odCxlKXt0aGlzLnN0YXRlLmVuZD10aGlzLnN0YXRlLnBvcyx0aGlzLnN0YXRlLmVuZExvYz10aGlzLnN0YXRlLmN1clBvc2l0aW9uKCk7bGV0IHM9dGhpcy5zdGF0ZS50eXBlO3RoaXMuc3RhdGUudHlwZT10LHRoaXMuc3RhdGUudmFsdWU9ZSx0aGlzLmlzTG9va2FoZWFkfHx0aGlzLnVwZGF0ZUNvbnRleHQocyl9cmVwbGFjZVRva2VuKHQpe3RoaXMuc3RhdGUudHlwZT10LHRoaXMudXBkYXRlQ29udGV4dCgpfXJlYWRUb2tlbl9udW1iZXJTaWduKCl7aWYodGhpcy5zdGF0ZS5wb3M9PT0wJiZ0aGlzLnJlYWRUb2tlbl9pbnRlcnByZXRlcigpKXJldHVybjtsZXQgdD10aGlzLnN0YXRlLnBvcysxLGU9dGhpcy5jb2RlUG9pbnRBdFBvcyh0KTtpZihlPj00OCYmZTw9NTcpdGhyb3cgdGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWREaWdpdEFmdGVySGFzaCx7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSk7aWYoZT09PTEyM3x8ZT09PTkxJiZ0aGlzLmhhc1BsdWdpbihcInJlY29yZEFuZFR1cGxlXCIpKXtpZih0aGlzLmV4cGVjdFBsdWdpbihcInJlY29yZEFuZFR1cGxlXCIpLHRoaXMuZ2V0UGx1Z2luT3B0aW9uKFwicmVjb3JkQW5kVHVwbGVcIixcInN5bnRheFR5cGVcIikhPT1cImhhc2hcIil0aHJvdyB0aGlzLnJhaXNlKGU9PT0xMjM/dS5SZWNvcmRFeHByZXNzaW9uSGFzaEluY29ycmVjdFN0YXJ0U3ludGF4VHlwZTp1LlR1cGxlRXhwcmVzc2lvbkhhc2hJbmNvcnJlY3RTdGFydFN5bnRheFR5cGUse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO3RoaXMuc3RhdGUucG9zKz0yLGU9PT0xMjM/dGhpcy5maW5pc2hUb2tlbig3KTp0aGlzLmZpbmlzaFRva2VuKDEpfWVsc2UgZGUoZSk/KCsrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbigxMzQsdGhpcy5yZWFkV29yZDEoZSkpKTplPT09OTI/KCsrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbigxMzQsdGhpcy5yZWFkV29yZDEoKSkpOnRoaXMuZmluaXNoT3AoMjcsMSl9cmVhZFRva2VuX2RvdCgpe2xldCB0PXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcysxKTtpZih0Pj00OCYmdDw9NTcpe3RoaXMucmVhZE51bWJlcighMCk7cmV0dXJufXQ9PT00NiYmdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzIpPT09NDY/KHRoaXMuc3RhdGUucG9zKz0zLHRoaXMuZmluaXNoVG9rZW4oMjEpKTooKyt0aGlzLnN0YXRlLnBvcyx0aGlzLmZpbmlzaFRva2VuKDE2KSl9cmVhZFRva2VuX3NsYXNoKCl7dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpPT09NjE/dGhpcy5maW5pc2hPcCgzMSwyKTp0aGlzLmZpbmlzaE9wKDU2LDEpfXJlYWRUb2tlbl9pbnRlcnByZXRlcigpe2lmKHRoaXMuc3RhdGUucG9zIT09MHx8dGhpcy5sZW5ndGg8MilyZXR1cm4hMTtsZXQgdD10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk7aWYodCE9PTMzKXJldHVybiExO2xldCBlPXRoaXMuc3RhdGUucG9zO2Zvcih0aGlzLnN0YXRlLnBvcys9MTshTmUodCkmJisrdGhpcy5zdGF0ZS5wb3M8dGhpcy5sZW5ndGg7KXQ9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKTtsZXQgcz10aGlzLmlucHV0LnNsaWNlKGUrMix0aGlzLnN0YXRlLnBvcyk7cmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oMjgscyksITB9cmVhZFRva2VuX211bHRfbW9kdWxvKHQpe2xldCBlPXQ9PT00Mj81NTo1NCxzPTEscj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk7dD09PTQyJiZyPT09NDImJihzKysscj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMiksZT01Nykscj09PTYxJiYhdGhpcy5zdGF0ZS5pblR5cGUmJihzKyssZT10PT09Mzc/MzM6MzApLHRoaXMuZmluaXNoT3AoZSxzKX1yZWFkVG9rZW5fcGlwZV9hbXAodCl7bGV0IGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpO2lmKGU9PT10KXt0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMik9PT02MT90aGlzLmZpbmlzaE9wKDMwLDMpOnRoaXMuZmluaXNoT3AodD09PTEyND80MTo0MiwyKTtyZXR1cm59aWYodD09PTEyNCl7aWYoZT09PTYyKXt0aGlzLmZpbmlzaE9wKDM5LDIpO3JldHVybn1pZih0aGlzLmhhc1BsdWdpbihcInJlY29yZEFuZFR1cGxlXCIpJiZlPT09MTI1KXtpZih0aGlzLmdldFBsdWdpbk9wdGlvbihcInJlY29yZEFuZFR1cGxlXCIsXCJzeW50YXhUeXBlXCIpIT09XCJiYXJcIil0aHJvdyB0aGlzLnJhaXNlKHUuUmVjb3JkRXhwcmVzc2lvbkJhckluY29ycmVjdEVuZFN5bnRheFR5cGUse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO3RoaXMuc3RhdGUucG9zKz0yLHRoaXMuZmluaXNoVG9rZW4oOSk7cmV0dXJufWlmKHRoaXMuaGFzUGx1Z2luKFwicmVjb3JkQW5kVHVwbGVcIikmJmU9PT05Myl7aWYodGhpcy5nZXRQbHVnaW5PcHRpb24oXCJyZWNvcmRBbmRUdXBsZVwiLFwic3ludGF4VHlwZVwiKSE9PVwiYmFyXCIpdGhyb3cgdGhpcy5yYWlzZSh1LlR1cGxlRXhwcmVzc2lvbkJhckluY29ycmVjdEVuZFN5bnRheFR5cGUse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO3RoaXMuc3RhdGUucG9zKz0yLHRoaXMuZmluaXNoVG9rZW4oNCk7cmV0dXJufX1pZihlPT09NjEpe3RoaXMuZmluaXNoT3AoMzAsMik7cmV0dXJufXRoaXMuZmluaXNoT3AodD09PTEyND80Mzo0NSwxKX1yZWFkVG9rZW5fY2FyZXQoKXtsZXQgdD10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk7aWYodD09PTYxJiYhdGhpcy5zdGF0ZS5pblR5cGUpdGhpcy5maW5pc2hPcCgzMiwyKTtlbHNlIGlmKHQ9PT05NCYmdGhpcy5oYXNQbHVnaW4oW1wicGlwZWxpbmVPcGVyYXRvclwiLHtwcm9wb3NhbDpcImhhY2tcIix0b3BpY1Rva2VuOlwiXl5cIn1dKSl7aWYodGhpcy5maW5pc2hPcCgzNywyKSx0aGlzLmlucHV0LmNvZGVQb2ludEF0KHRoaXMuc3RhdGUucG9zKT09PTk0KXRocm93IHRoaXMudW5leHBlY3RlZCgpfWVsc2UgdGhpcy5maW5pc2hPcCg0NCwxKX1yZWFkVG9rZW5fYXRTaWduKCl7dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpPT09NjQmJnRoaXMuaGFzUGx1Z2luKFtcInBpcGVsaW5lT3BlcmF0b3JcIix7cHJvcG9zYWw6XCJoYWNrXCIsdG9waWNUb2tlbjpcIkBAXCJ9XSk/dGhpcy5maW5pc2hPcCgzOCwyKTp0aGlzLmZpbmlzaE9wKDI2LDEpfXJlYWRUb2tlbl9wbHVzX21pbih0KXtsZXQgZT10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk7aWYoZT09PXQpe3RoaXMuZmluaXNoT3AoMzQsMik7cmV0dXJufWU9PT02MT90aGlzLmZpbmlzaE9wKDMwLDIpOnRoaXMuZmluaXNoT3AoNTMsMSl9cmVhZFRva2VuX2x0KCl7bGV0e3Bvczp0fT10aGlzLnN0YXRlLGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHQrMSk7aWYoZT09PTYwKXtpZih0aGlzLmlucHV0LmNoYXJDb2RlQXQodCsyKT09PTYxKXt0aGlzLmZpbmlzaE9wKDMwLDMpO3JldHVybn10aGlzLmZpbmlzaE9wKDUxLDIpO3JldHVybn1pZihlPT09NjEpe3RoaXMuZmluaXNoT3AoNDksMik7cmV0dXJufXRoaXMuZmluaXNoT3AoNDcsMSl9cmVhZFRva2VuX2d0KCl7bGV0e3Bvczp0fT10aGlzLnN0YXRlLGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHQrMSk7aWYoZT09PTYyKXtsZXQgcz10aGlzLmlucHV0LmNoYXJDb2RlQXQodCsyKT09PTYyPzM6MjtpZih0aGlzLmlucHV0LmNoYXJDb2RlQXQodCtzKT09PTYxKXt0aGlzLmZpbmlzaE9wKDMwLHMrMSk7cmV0dXJufXRoaXMuZmluaXNoT3AoNTIscyk7cmV0dXJufWlmKGU9PT02MSl7dGhpcy5maW5pc2hPcCg0OSwyKTtyZXR1cm59dGhpcy5maW5pc2hPcCg0OCwxKX1yZWFkVG9rZW5fZXFfZXhjbCh0KXtsZXQgZT10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk7aWYoZT09PTYxKXt0aGlzLmZpbmlzaE9wKDQ2LHRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcysyKT09PTYxPzM6Mik7cmV0dXJufWlmKHQ9PT02MSYmZT09PTYyKXt0aGlzLnN0YXRlLnBvcys9Mix0aGlzLmZpbmlzaFRva2VuKDE5KTtyZXR1cm59dGhpcy5maW5pc2hPcCh0PT09NjE/Mjk6MzUsMSl9cmVhZFRva2VuX3F1ZXN0aW9uKCl7bGV0IHQ9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpLGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzIpO3Q9PT02Mz9lPT09NjE/dGhpcy5maW5pc2hPcCgzMCwzKTp0aGlzLmZpbmlzaE9wKDQwLDIpOnQ9PT00NiYmIShlPj00OCYmZTw9NTcpPyh0aGlzLnN0YXRlLnBvcys9Mix0aGlzLmZpbmlzaFRva2VuKDE4KSk6KCsrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbigxNykpfWdldFRva2VuRnJvbUNvZGUodCl7c3dpdGNoKHQpe2Nhc2UgNDY6dGhpcy5yZWFkVG9rZW5fZG90KCk7cmV0dXJuO2Nhc2UgNDA6Kyt0aGlzLnN0YXRlLnBvcyx0aGlzLmZpbmlzaFRva2VuKDEwKTtyZXR1cm47Y2FzZSA0MTorK3RoaXMuc3RhdGUucG9zLHRoaXMuZmluaXNoVG9rZW4oMTEpO3JldHVybjtjYXNlIDU5OisrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbigxMyk7cmV0dXJuO2Nhc2UgNDQ6Kyt0aGlzLnN0YXRlLnBvcyx0aGlzLmZpbmlzaFRva2VuKDEyKTtyZXR1cm47Y2FzZSA5MTppZih0aGlzLmhhc1BsdWdpbihcInJlY29yZEFuZFR1cGxlXCIpJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk9PT0xMjQpe2lmKHRoaXMuZ2V0UGx1Z2luT3B0aW9uKFwicmVjb3JkQW5kVHVwbGVcIixcInN5bnRheFR5cGVcIikhPT1cImJhclwiKXRocm93IHRoaXMucmFpc2UodS5UdXBsZUV4cHJlc3Npb25CYXJJbmNvcnJlY3RTdGFydFN5bnRheFR5cGUse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO3RoaXMuc3RhdGUucG9zKz0yLHRoaXMuZmluaXNoVG9rZW4oMil9ZWxzZSsrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbigwKTtyZXR1cm47Y2FzZSA5MzorK3RoaXMuc3RhdGUucG9zLHRoaXMuZmluaXNoVG9rZW4oMyk7cmV0dXJuO2Nhc2UgMTIzOmlmKHRoaXMuaGFzUGx1Z2luKFwicmVjb3JkQW5kVHVwbGVcIikmJnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcysxKT09PTEyNCl7aWYodGhpcy5nZXRQbHVnaW5PcHRpb24oXCJyZWNvcmRBbmRUdXBsZVwiLFwic3ludGF4VHlwZVwiKSE9PVwiYmFyXCIpdGhyb3cgdGhpcy5yYWlzZSh1LlJlY29yZEV4cHJlc3Npb25CYXJJbmNvcnJlY3RTdGFydFN5bnRheFR5cGUse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO3RoaXMuc3RhdGUucG9zKz0yLHRoaXMuZmluaXNoVG9rZW4oNil9ZWxzZSsrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbig1KTtyZXR1cm47Y2FzZSAxMjU6Kyt0aGlzLnN0YXRlLnBvcyx0aGlzLmZpbmlzaFRva2VuKDgpO3JldHVybjtjYXNlIDU4OnRoaXMuaGFzUGx1Z2luKFwiZnVuY3Rpb25CaW5kXCIpJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk9PT01OD90aGlzLmZpbmlzaE9wKDE1LDIpOigrK3RoaXMuc3RhdGUucG9zLHRoaXMuZmluaXNoVG9rZW4oMTQpKTtyZXR1cm47Y2FzZSA2Mzp0aGlzLnJlYWRUb2tlbl9xdWVzdGlvbigpO3JldHVybjtjYXNlIDk2OnRoaXMucmVhZFRlbXBsYXRlVG9rZW4oKTtyZXR1cm47Y2FzZSA0ODp7bGV0IGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpO2lmKGU9PT0xMjB8fGU9PT04OCl7dGhpcy5yZWFkUmFkaXhOdW1iZXIoMTYpO3JldHVybn1pZihlPT09MTExfHxlPT09Nzkpe3RoaXMucmVhZFJhZGl4TnVtYmVyKDgpO3JldHVybn1pZihlPT09OTh8fGU9PT02Nil7dGhpcy5yZWFkUmFkaXhOdW1iZXIoMik7cmV0dXJufX1jYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1Nzp0aGlzLnJlYWROdW1iZXIoITEpO3JldHVybjtjYXNlIDM0OmNhc2UgMzk6dGhpcy5yZWFkU3RyaW5nKHQpO3JldHVybjtjYXNlIDQ3OnRoaXMucmVhZFRva2VuX3NsYXNoKCk7cmV0dXJuO2Nhc2UgMzc6Y2FzZSA0Mjp0aGlzLnJlYWRUb2tlbl9tdWx0X21vZHVsbyh0KTtyZXR1cm47Y2FzZSAxMjQ6Y2FzZSAzODp0aGlzLnJlYWRUb2tlbl9waXBlX2FtcCh0KTtyZXR1cm47Y2FzZSA5NDp0aGlzLnJlYWRUb2tlbl9jYXJldCgpO3JldHVybjtjYXNlIDQzOmNhc2UgNDU6dGhpcy5yZWFkVG9rZW5fcGx1c19taW4odCk7cmV0dXJuO2Nhc2UgNjA6dGhpcy5yZWFkVG9rZW5fbHQoKTtyZXR1cm47Y2FzZSA2Mjp0aGlzLnJlYWRUb2tlbl9ndCgpO3JldHVybjtjYXNlIDYxOmNhc2UgMzM6dGhpcy5yZWFkVG9rZW5fZXFfZXhjbCh0KTtyZXR1cm47Y2FzZSAxMjY6dGhpcy5maW5pc2hPcCgzNiwxKTtyZXR1cm47Y2FzZSA2NDp0aGlzLnJlYWRUb2tlbl9hdFNpZ24oKTtyZXR1cm47Y2FzZSAzNTp0aGlzLnJlYWRUb2tlbl9udW1iZXJTaWduKCk7cmV0dXJuO2Nhc2UgOTI6dGhpcy5yZWFkV29yZCgpO3JldHVybjtkZWZhdWx0OmlmKGRlKHQpKXt0aGlzLnJlYWRXb3JkKHQpO3JldHVybn19dGhyb3cgdGhpcy5yYWlzZSh1LkludmFsaWRPclVuZXhwZWN0ZWRUb2tlbix7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpLHVuZXhwZWN0ZWQ6U3RyaW5nLmZyb21Db2RlUG9pbnQodCl9KX1maW5pc2hPcCh0LGUpe2xldCBzPXRoaXMuaW5wdXQuc2xpY2UodGhpcy5zdGF0ZS5wb3MsdGhpcy5zdGF0ZS5wb3MrZSk7dGhpcy5zdGF0ZS5wb3MrPWUsdGhpcy5maW5pc2hUb2tlbih0LHMpfXJlYWRSZWdleHAoKXtsZXQgdD10aGlzLnN0YXRlLnN0YXJ0TG9jLGU9dGhpcy5zdGF0ZS5zdGFydCsxLHMscix7cG9zOml9PXRoaXMuc3RhdGU7Zm9yKDs7KytpKXtpZihpPj10aGlzLmxlbmd0aCl0aHJvdyB0aGlzLnJhaXNlKHUuVW50ZXJtaW5hdGVkUmVnRXhwLHthdDptKHQsMSl9KTtsZXQgYz10aGlzLmlucHV0LmNoYXJDb2RlQXQoaSk7aWYoTmUoYykpdGhyb3cgdGhpcy5yYWlzZSh1LlVudGVybWluYXRlZFJlZ0V4cCx7YXQ6bSh0LDEpfSk7aWYocylzPSExO2Vsc2V7aWYoYz09PTkxKXI9ITA7ZWxzZSBpZihjPT09OTMmJnIpcj0hMTtlbHNlIGlmKGM9PT00NyYmIXIpYnJlYWs7cz1jPT09OTJ9fWxldCBhPXRoaXMuaW5wdXQuc2xpY2UoZSxpKTsrK2k7bGV0IG49XCJcIixvPSgpPT5tKHQsaSsyLWUpO2Zvcig7aTx0aGlzLmxlbmd0aDspe2xldCBjPXRoaXMuY29kZVBvaW50QXRQb3MoaSksZj1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpO2lmKHVoLmhhcyhjKSljPT09MTE4Pyh0aGlzLmV4cGVjdFBsdWdpbihcInJlZ2V4cFVuaWNvZGVTZXRzXCIsbygpKSxuLmluY2x1ZGVzKFwidVwiKSYmdGhpcy5yYWlzZSh1LkluY29tcGF0aWJsZVJlZ0V4cFVWRmxhZ3Mse2F0Om8oKX0pKTpjPT09MTE3JiZuLmluY2x1ZGVzKFwidlwiKSYmdGhpcy5yYWlzZSh1LkluY29tcGF0aWJsZVJlZ0V4cFVWRmxhZ3Mse2F0Om8oKX0pLG4uaW5jbHVkZXMoZikmJnRoaXMucmFpc2UodS5EdXBsaWNhdGVSZWdFeHBGbGFncyx7YXQ6bygpfSk7ZWxzZSBpZihCZShjKXx8Yz09PTkyKXRoaXMucmFpc2UodS5NYWxmb3JtZWRSZWdFeHBGbGFncyx7YXQ6bygpfSk7ZWxzZSBicmVhazsrK2ksbis9Zn10aGlzLnN0YXRlLnBvcz1pLHRoaXMuZmluaXNoVG9rZW4oMTMzLHtwYXR0ZXJuOmEsZmxhZ3M6bn0pfXJlYWRJbnQodCxlLHMpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTohMCxpPXRoaXMuc3RhdGUucG9zLGE9dD09PTE2P3dyLmhleDp3ci5kZWNCaW5PY3Qsbj10PT09MTY/bXQuaGV4OnQ9PT0xMD9tdC5kZWM6dD09PTg/bXQub2N0Om10LmJpbixvPSExLGM9MDtmb3IobGV0IGY9MCx5PWU9PW51bGw/MS8wOmU7Zjx5OysrZil7bGV0IFA9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKSx2O2lmKFA9PT05NSYmciE9PVwiYmFpbFwiKXtsZXQgTj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MtMSksQj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk7cj8oTnVtYmVyLmlzTmFOKEIpfHwhbihCKXx8YS5oYXMoTil8fGEuaGFzKEIpKSYmdGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWROdW1lcmljU2VwYXJhdG9yLHthdDp0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCl9KTp0aGlzLnJhaXNlKHUuTnVtZXJpY1NlcGFyYXRvckluRXNjYXBlU2VxdWVuY2Use2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pLCsrdGhpcy5zdGF0ZS5wb3M7Y29udGludWV9aWYoUD49OTc/dj1QLTk3KzEwOlA+PTY1P3Y9UC02NSsxMDpsaChQKT92PVAtNDg6dj0xLzAsdj49dClpZih0aGlzLm9wdGlvbnMuZXJyb3JSZWNvdmVyeSYmdjw9OSl2PTAsdGhpcy5yYWlzZSh1LkludmFsaWREaWdpdCx7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpLHJhZGl4OnR9KTtlbHNlIGlmKHMpdj0wLG89ITA7ZWxzZSBicmVhazsrK3RoaXMuc3RhdGUucG9zLGM9Yyp0K3Z9cmV0dXJuIHRoaXMuc3RhdGUucG9zPT09aXx8ZSE9bnVsbCYmdGhpcy5zdGF0ZS5wb3MtaSE9PWV8fG8/bnVsbDpjfXJlYWRSYWRpeE51bWJlcih0KXtsZXQgZT10aGlzLnN0YXRlLmN1clBvc2l0aW9uKCkscz0hMTt0aGlzLnN0YXRlLnBvcys9MjtsZXQgcj10aGlzLnJlYWRJbnQodCk7cj09bnVsbCYmdGhpcy5yYWlzZSh1LkludmFsaWREaWdpdCx7YXQ6bShlLDIpLHJhZGl4OnR9KTtsZXQgaT10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MpO2lmKGk9PT0xMTApKyt0aGlzLnN0YXRlLnBvcyxzPSEwO2Vsc2UgaWYoaT09PTEwOSl0aHJvdyB0aGlzLnJhaXNlKHUuSW52YWxpZERlY2ltYWwse2F0OmV9KTtpZihkZSh0aGlzLmNvZGVQb2ludEF0UG9zKHRoaXMuc3RhdGUucG9zKSkpdGhyb3cgdGhpcy5yYWlzZSh1Lk51bWJlcklkZW50aWZpZXIse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO2lmKHMpe2xldCBhPXRoaXMuaW5wdXQuc2xpY2UoZS5pbmRleCx0aGlzLnN0YXRlLnBvcykucmVwbGFjZSgvW19uXS9nLFwiXCIpO3RoaXMuZmluaXNoVG9rZW4oMTMxLGEpO3JldHVybn10aGlzLmZpbmlzaFRva2VuKDEzMCxyKX1yZWFkTnVtYmVyKHQpe2xldCBlPXRoaXMuc3RhdGUucG9zLHM9dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpLHI9ITEsaT0hMSxhPSExLG49ITEsbz0hMTshdCYmdGhpcy5yZWFkSW50KDEwKT09PW51bGwmJnRoaXMucmFpc2UodS5JbnZhbGlkTnVtYmVyLHthdDp0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCl9KTtsZXQgYz10aGlzLnN0YXRlLnBvcy1lPj0yJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQoZSk9PT00ODtpZihjKXtsZXQgdj10aGlzLmlucHV0LnNsaWNlKGUsdGhpcy5zdGF0ZS5wb3MpO2lmKHRoaXMucmVjb3JkU3RyaWN0TW9kZUVycm9ycyh1LlN0cmljdE9jdGFsTGl0ZXJhbCx7YXQ6c30pLCF0aGlzLnN0YXRlLnN0cmljdCl7bGV0IE49di5pbmRleE9mKFwiX1wiKTtOPjAmJnRoaXMucmFpc2UodS5aZXJvRGlnaXROdW1lcmljU2VwYXJhdG9yLHthdDptKHMsTil9KX1vPWMmJiEvWzg5XS8udGVzdCh2KX1sZXQgZj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MpO2lmKGY9PT00NiYmIW8mJigrK3RoaXMuc3RhdGUucG9zLHRoaXMucmVhZEludCgxMCkscj0hMCxmPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcykpLChmPT09Njl8fGY9PT0xMDEpJiYhbyYmKGY9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KCsrdGhpcy5zdGF0ZS5wb3MpLChmPT09NDN8fGY9PT00NSkmJisrdGhpcy5zdGF0ZS5wb3MsdGhpcy5yZWFkSW50KDEwKT09PW51bGwmJnRoaXMucmFpc2UodS5JbnZhbGlkT3JNaXNzaW5nRXhwb25lbnQse2F0OnN9KSxyPSEwLG49ITAsZj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MpKSxmPT09MTEwJiYoKHJ8fGMpJiZ0aGlzLnJhaXNlKHUuSW52YWxpZEJpZ0ludExpdGVyYWwse2F0OnN9KSwrK3RoaXMuc3RhdGUucG9zLGk9ITApLGY9PT0xMDkmJih0aGlzLmV4cGVjdFBsdWdpbihcImRlY2ltYWxcIix0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCkpLChufHxjKSYmdGhpcy5yYWlzZSh1LkludmFsaWREZWNpbWFsLHthdDpzfSksKyt0aGlzLnN0YXRlLnBvcyxhPSEwKSxkZSh0aGlzLmNvZGVQb2ludEF0UG9zKHRoaXMuc3RhdGUucG9zKSkpdGhyb3cgdGhpcy5yYWlzZSh1Lk51bWJlcklkZW50aWZpZXIse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO2xldCB5PXRoaXMuaW5wdXQuc2xpY2UoZSx0aGlzLnN0YXRlLnBvcykucmVwbGFjZSgvW19tbl0vZyxcIlwiKTtpZihpKXt0aGlzLmZpbmlzaFRva2VuKDEzMSx5KTtyZXR1cm59aWYoYSl7dGhpcy5maW5pc2hUb2tlbigxMzIseSk7cmV0dXJufWxldCBQPW8/cGFyc2VJbnQoeSw4KTpwYXJzZUZsb2F0KHkpO3RoaXMuZmluaXNoVG9rZW4oMTMwLFApfXJlYWRDb2RlUG9pbnQodCl7bGV0IGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKSxzO2lmKGU9PT0xMjMpe2lmKCsrdGhpcy5zdGF0ZS5wb3Mscz10aGlzLnJlYWRIZXhDaGFyKHRoaXMuaW5wdXQuaW5kZXhPZihcIn1cIix0aGlzLnN0YXRlLnBvcyktdGhpcy5zdGF0ZS5wb3MsITAsdCksKyt0aGlzLnN0YXRlLnBvcyxzIT09bnVsbCYmcz4xMTE0MTExKWlmKHQpdGhpcy5yYWlzZSh1LkludmFsaWRDb2RlUG9pbnQse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO2Vsc2UgcmV0dXJuIG51bGx9ZWxzZSBzPXRoaXMucmVhZEhleENoYXIoNCwhMSx0KTtyZXR1cm4gc31yZWFkU3RyaW5nKHQpe2xldCBlPVwiXCIscz0rK3RoaXMuc3RhdGUucG9zO2Zvcig7Oyl7aWYodGhpcy5zdGF0ZS5wb3M+PXRoaXMubGVuZ3RoKXRocm93IHRoaXMucmFpc2UodS5VbnRlcm1pbmF0ZWRTdHJpbmcse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtsZXQgcj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MpO2lmKHI9PT10KWJyZWFrO2lmKHI9PT05MillKz10aGlzLmlucHV0LnNsaWNlKHMsdGhpcy5zdGF0ZS5wb3MpLGUrPXRoaXMucmVhZEVzY2FwZWRDaGFyKCExKSxzPXRoaXMuc3RhdGUucG9zO2Vsc2UgaWYocj09PTgyMzJ8fHI9PT04MjMzKSsrdGhpcy5zdGF0ZS5wb3MsKyt0aGlzLnN0YXRlLmN1ckxpbmUsdGhpcy5zdGF0ZS5saW5lU3RhcnQ9dGhpcy5zdGF0ZS5wb3M7ZWxzZXtpZihOZShyKSl0aHJvdyB0aGlzLnJhaXNlKHUuVW50ZXJtaW5hdGVkU3RyaW5nLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7Kyt0aGlzLnN0YXRlLnBvc319ZSs9dGhpcy5pbnB1dC5zbGljZShzLHRoaXMuc3RhdGUucG9zKyspLHRoaXMuZmluaXNoVG9rZW4oMTI5LGUpfXJlYWRUZW1wbGF0ZUNvbnRpbnVhdGlvbigpe3RoaXMubWF0Y2goOCl8fHRoaXMudW5leHBlY3RlZChudWxsLDgpLHRoaXMuc3RhdGUucG9zLS0sdGhpcy5yZWFkVGVtcGxhdGVUb2tlbigpfXJlYWRUZW1wbGF0ZVRva2VuKCl7bGV0IHQ9XCJcIixlPXRoaXMuc3RhdGUucG9zLHM9ITE7Zm9yKCsrdGhpcy5zdGF0ZS5wb3M7Oyl7aWYodGhpcy5zdGF0ZS5wb3M+PXRoaXMubGVuZ3RoKXRocm93IHRoaXMucmFpc2UodS5VbnRlcm1pbmF0ZWRUZW1wbGF0ZSx7YXQ6bSh0aGlzLnN0YXRlLnN0YXJ0TG9jLDEpfSk7bGV0IHI9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKTtpZihyPT09OTYpeysrdGhpcy5zdGF0ZS5wb3MsdCs9dGhpcy5pbnB1dC5zbGljZShlLHRoaXMuc3RhdGUucG9zKSx0aGlzLmZpbmlzaFRva2VuKDI0LHM/bnVsbDp0KTtyZXR1cm59aWYocj09PTM2JiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSk9PT0xMjMpe3RoaXMuc3RhdGUucG9zKz0yLHQrPXRoaXMuaW5wdXQuc2xpY2UoZSx0aGlzLnN0YXRlLnBvcyksdGhpcy5maW5pc2hUb2tlbigyNSxzP251bGw6dCk7cmV0dXJufWlmKHI9PT05Mil7dCs9dGhpcy5pbnB1dC5zbGljZShlLHRoaXMuc3RhdGUucG9zKTtsZXQgaT10aGlzLnJlYWRFc2NhcGVkQ2hhcighMCk7aT09PW51bGw/cz0hMDp0Kz1pLGU9dGhpcy5zdGF0ZS5wb3N9ZWxzZSBpZihOZShyKSl7c3dpdGNoKHQrPXRoaXMuaW5wdXQuc2xpY2UoZSx0aGlzLnN0YXRlLnBvcyksKyt0aGlzLnN0YXRlLnBvcyxyKXtjYXNlIDEzOnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcyk9PT0xMCYmKyt0aGlzLnN0YXRlLnBvcztjYXNlIDEwOnQrPWBcbmA7YnJlYWs7ZGVmYXVsdDp0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpO2JyZWFrfSsrdGhpcy5zdGF0ZS5jdXJMaW5lLHRoaXMuc3RhdGUubGluZVN0YXJ0PXRoaXMuc3RhdGUucG9zLGU9dGhpcy5zdGF0ZS5wb3N9ZWxzZSsrdGhpcy5zdGF0ZS5wb3N9fXJlY29yZFN0cmljdE1vZGVFcnJvcnModCxlKXtsZXR7YXQ6c309ZSxyPXMuaW5kZXg7dGhpcy5zdGF0ZS5zdHJpY3QmJiF0aGlzLnN0YXRlLnN0cmljdEVycm9ycy5oYXMocik/dGhpcy5yYWlzZSh0LHthdDpzfSk6dGhpcy5zdGF0ZS5zdHJpY3RFcnJvcnMuc2V0KHIsW3Qsc10pfXJlYWRFc2NhcGVkQ2hhcih0KXtsZXQgZT0hdCxzPXRoaXMuaW5wdXQuY2hhckNvZGVBdCgrK3RoaXMuc3RhdGUucG9zKTtzd2l0Y2goKyt0aGlzLnN0YXRlLnBvcyxzKXtjYXNlIDExMDpyZXR1cm5gXG5gO2Nhc2UgMTE0OnJldHVyblwiXFxyXCI7Y2FzZSAxMjA6e2xldCByPXRoaXMucmVhZEhleENoYXIoMiwhMSxlKTtyZXR1cm4gcj09PW51bGw/bnVsbDpTdHJpbmcuZnJvbUNoYXJDb2RlKHIpfWNhc2UgMTE3OntsZXQgcj10aGlzLnJlYWRDb2RlUG9pbnQoZSk7cmV0dXJuIHI9PT1udWxsP251bGw6U3RyaW5nLmZyb21Db2RlUG9pbnQocil9Y2FzZSAxMTY6cmV0dXJuXCJcdFwiO2Nhc2UgOTg6cmV0dXJuXCJcXGJcIjtjYXNlIDExODpyZXR1cm5cIlxcdlwiO2Nhc2UgMTAyOnJldHVyblwiXFxmXCI7Y2FzZSAxMzp0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MpPT09MTAmJisrdGhpcy5zdGF0ZS5wb3M7Y2FzZSAxMDp0aGlzLnN0YXRlLmxpbmVTdGFydD10aGlzLnN0YXRlLnBvcywrK3RoaXMuc3RhdGUuY3VyTGluZTtjYXNlIDgyMzI6Y2FzZSA4MjMzOnJldHVyblwiXCI7Y2FzZSA1NjpjYXNlIDU3OmlmKHQpcmV0dXJuIG51bGw7dGhpcy5yZWNvcmRTdHJpY3RNb2RlRXJyb3JzKHUuU3RyaWN0TnVtZXJpY0VzY2FwZSx7YXQ6bSh0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCksLTEpfSk7ZGVmYXVsdDppZihzPj00OCYmczw9NTUpe2xldCByPW0odGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpLC0xKSxhPXRoaXMuaW5wdXQuc2xpY2UodGhpcy5zdGF0ZS5wb3MtMSx0aGlzLnN0YXRlLnBvcysyKS5tYXRjaCgvXlswLTddKy8pWzBdLG49cGFyc2VJbnQoYSw4KTtuPjI1NSYmKGE9YS5zbGljZSgwLC0xKSxuPXBhcnNlSW50KGEsOCkpLHRoaXMuc3RhdGUucG9zKz1hLmxlbmd0aC0xO2xldCBvPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcyk7aWYoYSE9PVwiMFwifHxvPT09NTZ8fG89PT01Nyl7aWYodClyZXR1cm4gbnVsbDt0aGlzLnJlY29yZFN0cmljdE1vZGVFcnJvcnModS5TdHJpY3ROdW1lcmljRXNjYXBlLHthdDpyfSl9cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobil9cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocyl9fXJlYWRIZXhDaGFyKHQsZSxzKXtsZXQgcj10aGlzLnN0YXRlLmN1clBvc2l0aW9uKCksaT10aGlzLnJlYWRJbnQoMTYsdCxlLCExKTtyZXR1cm4gaT09PW51bGwmJihzP3RoaXMucmFpc2UodS5JbnZhbGlkRXNjYXBlU2VxdWVuY2Use2F0OnJ9KTp0aGlzLnN0YXRlLnBvcz1yLmluZGV4LTEpLGl9cmVhZFdvcmQxKHQpe3RoaXMuc3RhdGUuY29udGFpbnNFc2M9ITE7bGV0IGU9XCJcIixzPXRoaXMuc3RhdGUucG9zLHI9dGhpcy5zdGF0ZS5wb3M7Zm9yKHQhPT12b2lkIDAmJih0aGlzLnN0YXRlLnBvcys9dDw9NjU1MzU/MToyKTt0aGlzLnN0YXRlLnBvczx0aGlzLmxlbmd0aDspe2xldCBpPXRoaXMuY29kZVBvaW50QXRQb3ModGhpcy5zdGF0ZS5wb3MpO2lmKEJlKGkpKXRoaXMuc3RhdGUucG9zKz1pPD02NTUzNT8xOjI7ZWxzZSBpZihpPT09OTIpe3RoaXMuc3RhdGUuY29udGFpbnNFc2M9ITAsZSs9dGhpcy5pbnB1dC5zbGljZShyLHRoaXMuc3RhdGUucG9zKTtsZXQgYT10aGlzLnN0YXRlLmN1clBvc2l0aW9uKCksbj10aGlzLnN0YXRlLnBvcz09PXM/ZGU6QmU7aWYodGhpcy5pbnB1dC5jaGFyQ29kZUF0KCsrdGhpcy5zdGF0ZS5wb3MpIT09MTE3KXt0aGlzLnJhaXNlKHUuTWlzc2luZ1VuaWNvZGVFc2NhcGUse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pLHI9dGhpcy5zdGF0ZS5wb3MtMTtjb250aW51ZX0rK3RoaXMuc3RhdGUucG9zO2xldCBvPXRoaXMucmVhZENvZGVQb2ludCghMCk7byE9PW51bGwmJihuKG8pfHx0aGlzLnJhaXNlKHUuRXNjYXBlZENoYXJOb3RBbklkZW50aWZpZXIse2F0OmF9KSxlKz1TdHJpbmcuZnJvbUNvZGVQb2ludChvKSkscj10aGlzLnN0YXRlLnBvc31lbHNlIGJyZWFrfXJldHVybiBlK3RoaXMuaW5wdXQuc2xpY2Uocix0aGlzLnN0YXRlLnBvcyl9cmVhZFdvcmQodCl7bGV0IGU9dGhpcy5yZWFkV29yZDEodCkscz1xdC5nZXQoZSk7cyE9PXZvaWQgMD90aGlzLmZpbmlzaFRva2VuKHMsUGUocykpOnRoaXMuZmluaXNoVG9rZW4oMTI4LGUpfWNoZWNrS2V5d29yZEVzY2FwZXMoKXtsZXR7dHlwZTp0fT10aGlzLnN0YXRlO0h0KHQpJiZ0aGlzLnN0YXRlLmNvbnRhaW5zRXNjJiZ0aGlzLnJhaXNlKHUuSW52YWxpZEVzY2FwZWRSZXNlcnZlZFdvcmQse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2MscmVzZXJ2ZWRXb3JkOlBlKHQpfSl9cmFpc2UodCxlKXtsZXR7YXQ6c309ZSxyPWwoZSxvaCksaT1zIGluc3RhbmNlb2YgcD9zOnMubG9jLnN0YXJ0LGE9dCh7bG9jOmksZGV0YWlsczpyfSk7aWYoIXRoaXMub3B0aW9ucy5lcnJvclJlY292ZXJ5KXRocm93IGE7cmV0dXJuIHRoaXMuaXNMb29rYWhlYWR8fHRoaXMuc3RhdGUuZXJyb3JzLnB1c2goYSksYX1yYWlzZU92ZXJ3cml0ZSh0LGUpe2xldHthdDpzfT1lLHI9bChlLGhoKSxpPXMgaW5zdGFuY2VvZiBwP3M6cy5sb2Muc3RhcnQsYT1pLmluZGV4LG49dGhpcy5zdGF0ZS5lcnJvcnM7Zm9yKGxldCBvPW4ubGVuZ3RoLTE7bz49MDtvLS0pe2xldCBjPW5bb107aWYoYy5sb2MuaW5kZXg9PT1hKXJldHVybiBuW29dPXQoe2xvYzppLGRldGFpbHM6cn0pO2lmKGMubG9jLmluZGV4PGEpYnJlYWt9cmV0dXJuIHRoaXMucmFpc2UodCxlKX11cGRhdGVDb250ZXh0KHQpe311bmV4cGVjdGVkKHQsZSl7dGhyb3cgdGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWRUb2tlbix7ZXhwZWN0ZWQ6ZT9QZShlKTpudWxsLGF0OnQhPW51bGw/dDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSl9ZXhwZWN0UGx1Z2luKHQsZSl7aWYodGhpcy5oYXNQbHVnaW4odCkpcmV0dXJuITA7dGhyb3cgdGhpcy5yYWlzZSh1Lk1pc3NpbmdQbHVnaW4se2F0OmUhPW51bGw/ZTp0aGlzLnN0YXRlLnN0YXJ0TG9jLG1pc3NpbmdQbHVnaW46W3RdfSl9ZXhwZWN0T25lUGx1Z2luKHQpe2lmKCF0LnNvbWUoZT0+dGhpcy5oYXNQbHVnaW4oZSkpKXRocm93IHRoaXMucmFpc2UodS5NaXNzaW5nT25lT2ZQbHVnaW5zLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jLG1pc3NpbmdQbHVnaW46dH0pfX0sb3M9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy52YXI9bmV3IFNldCx0aGlzLmxleGljYWw9bmV3IFNldCx0aGlzLmZ1bmN0aW9ucz1uZXcgU2V0LHRoaXMuZmxhZ3M9dH19LGhzPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5wYXJzZXI9dm9pZCAwLHRoaXMuc2NvcGVTdGFjaz1bXSx0aGlzLmluTW9kdWxlPXZvaWQgMCx0aGlzLnVuZGVmaW5lZEV4cG9ydHM9bmV3IE1hcCx0aGlzLnBhcnNlcj10LHRoaXMuaW5Nb2R1bGU9ZX1nZXQgaW5GdW5jdGlvbigpe3JldHVybih0aGlzLmN1cnJlbnRWYXJTY29wZUZsYWdzKCkmbWUpPjB9Z2V0IGFsbG93U3VwZXIoKXtyZXR1cm4odGhpcy5jdXJyZW50VGhpc1Njb3BlRmxhZ3MoKSZvdCk+MH1nZXQgYWxsb3dEaXJlY3RTdXBlcigpe3JldHVybih0aGlzLmN1cnJlbnRUaGlzU2NvcGVGbGFncygpJnhyKT4wfWdldCBpbkNsYXNzKCl7cmV0dXJuKHRoaXMuY3VycmVudFRoaXNTY29wZUZsYWdzKCkmU2UpPjB9Z2V0IGluQ2xhc3NBbmROb3RJbk5vbkFycm93RnVuY3Rpb24oKXtsZXQgdD10aGlzLmN1cnJlbnRUaGlzU2NvcGVGbGFncygpO3JldHVybih0JlNlKT4wJiYodCZtZSk9PT0wfWdldCBpblN0YXRpY0Jsb2NrKCl7Zm9yKGxldCB0PXRoaXMuc2NvcGVTdGFjay5sZW5ndGgtMTs7dC0tKXtsZXR7ZmxhZ3M6ZX09dGhpcy5zY29wZVN0YWNrW3RdO2lmKGUmWXQpcmV0dXJuITA7aWYoZSYobHR8U2UpKXJldHVybiExfX1nZXQgaW5Ob25BcnJvd0Z1bmN0aW9uKCl7cmV0dXJuKHRoaXMuY3VycmVudFRoaXNTY29wZUZsYWdzKCkmbWUpPjB9Z2V0IHRyZWF0RnVuY3Rpb25zQXNWYXIoKXtyZXR1cm4gdGhpcy50cmVhdEZ1bmN0aW9uc0FzVmFySW5TY29wZSh0aGlzLmN1cnJlbnRTY29wZSgpKX1jcmVhdGVTY29wZSh0KXtyZXR1cm4gbmV3IG9zKHQpfWVudGVyKHQpe3RoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuY3JlYXRlU2NvcGUodCkpfWV4aXQoKXt0aGlzLnNjb3BlU3RhY2sucG9wKCl9dHJlYXRGdW5jdGlvbnNBc1ZhckluU2NvcGUodCl7cmV0dXJuISEodC5mbGFncyYobWV8WXQpfHwhdGhpcy5wYXJzZXIuaW5Nb2R1bGUmJnQuZmxhZ3MmV2UpfWRlY2xhcmVOYW1lKHQsZSxzKXtsZXQgcj10aGlzLmN1cnJlbnRTY29wZSgpO2lmKGUmVGV8fGUmdXQpdGhpcy5jaGVja1JlZGVjbGFyYXRpb25JblNjb3BlKHIsdCxlLHMpLGUmdXQ/ci5mdW5jdGlvbnMuYWRkKHQpOnIubGV4aWNhbC5hZGQodCksZSZUZSYmdGhpcy5tYXliZUV4cG9ydERlZmluZWQocix0KTtlbHNlIGlmKGUmZ3IpZm9yKGxldCBpPXRoaXMuc2NvcGVTdGFjay5sZW5ndGgtMTtpPj0wJiYocj10aGlzLnNjb3BlU3RhY2tbaV0sdGhpcy5jaGVja1JlZGVjbGFyYXRpb25JblNjb3BlKHIsdCxlLHMpLHIudmFyLmFkZCh0KSx0aGlzLm1heWJlRXhwb3J0RGVmaW5lZChyLHQpLCEoci5mbGFncyZsdCkpOy0taSk7dGhpcy5wYXJzZXIuaW5Nb2R1bGUmJnIuZmxhZ3MmV2UmJnRoaXMudW5kZWZpbmVkRXhwb3J0cy5kZWxldGUodCl9bWF5YmVFeHBvcnREZWZpbmVkKHQsZSl7dGhpcy5wYXJzZXIuaW5Nb2R1bGUmJnQuZmxhZ3MmV2UmJnRoaXMudW5kZWZpbmVkRXhwb3J0cy5kZWxldGUoZSl9Y2hlY2tSZWRlY2xhcmF0aW9uSW5TY29wZSh0LGUscyxyKXt0aGlzLmlzUmVkZWNsYXJlZEluU2NvcGUodCxlLHMpJiZ0aGlzLnBhcnNlci5yYWlzZSh1LlZhclJlZGVjbGFyYXRpb24se2F0OnIsaWRlbnRpZmllck5hbWU6ZX0pfWlzUmVkZWNsYXJlZEluU2NvcGUodCxlLHMpe3JldHVybiBzJnllP3MmVGU/dC5sZXhpY2FsLmhhcyhlKXx8dC5mdW5jdGlvbnMuaGFzKGUpfHx0LnZhci5oYXMoZSk6cyZ1dD90LmxleGljYWwuaGFzKGUpfHwhdGhpcy50cmVhdEZ1bmN0aW9uc0FzVmFySW5TY29wZSh0KSYmdC52YXIuaGFzKGUpOnQubGV4aWNhbC5oYXMoZSkmJiEodC5mbGFncyZ5ciYmdC5sZXhpY2FsLnZhbHVlcygpLm5leHQoKS52YWx1ZT09PWUpfHwhdGhpcy50cmVhdEZ1bmN0aW9uc0FzVmFySW5TY29wZSh0KSYmdC5mdW5jdGlvbnMuaGFzKGUpOiExfWNoZWNrTG9jYWxFeHBvcnQodCl7bGV0e25hbWU6ZX09dCxzPXRoaXMuc2NvcGVTdGFja1swXTshcy5sZXhpY2FsLmhhcyhlKSYmIXMudmFyLmhhcyhlKSYmIXMuZnVuY3Rpb25zLmhhcyhlKSYmdGhpcy51bmRlZmluZWRFeHBvcnRzLnNldChlLHQubG9jLnN0YXJ0KX1jdXJyZW50U2NvcGUoKXtyZXR1cm4gdGhpcy5zY29wZVN0YWNrW3RoaXMuc2NvcGVTdGFjay5sZW5ndGgtMV19Y3VycmVudFZhclNjb3BlRmxhZ3MoKXtmb3IobGV0IHQ9dGhpcy5zY29wZVN0YWNrLmxlbmd0aC0xOzt0LS0pe2xldHtmbGFnczplfT10aGlzLnNjb3BlU3RhY2tbdF07aWYoZSZsdClyZXR1cm4gZX19Y3VycmVudFRoaXNTY29wZUZsYWdzKCl7Zm9yKGxldCB0PXRoaXMuc2NvcGVTdGFjay5sZW5ndGgtMTs7dC0tKXtsZXR7ZmxhZ3M6ZX09dGhpcy5zY29wZVN0YWNrW3RdO2lmKGUmKGx0fFNlKSYmIShlJkp0KSlyZXR1cm4gZX19fSxwaD1jbGFzcyBleHRlbmRzIG9ze2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmRlY2xhcmVGdW5jdGlvbnM9bmV3IFNldH19LGZoPWNsYXNzIGV4dGVuZHMgaHN7Y3JlYXRlU2NvcGUodCl7cmV0dXJuIG5ldyBwaCh0KX1kZWNsYXJlTmFtZSh0LGUscyl7bGV0IHI9dGhpcy5jdXJyZW50U2NvcGUoKTtpZihlJmVzKXt0aGlzLmNoZWNrUmVkZWNsYXJhdGlvbkluU2NvcGUocix0LGUscyksdGhpcy5tYXliZUV4cG9ydERlZmluZWQocix0KSxyLmRlY2xhcmVGdW5jdGlvbnMuYWRkKHQpO3JldHVybn1zdXBlci5kZWNsYXJlTmFtZSguLi5hcmd1bWVudHMpfWlzUmVkZWNsYXJlZEluU2NvcGUodCxlLHMpe3JldHVybiBzdXBlci5pc1JlZGVjbGFyZWRJblNjb3BlKC4uLmFyZ3VtZW50cyk/ITA6cyZlcz8hdC5kZWNsYXJlRnVuY3Rpb25zLmhhcyhlKSYmKHQubGV4aWNhbC5oYXMoZSl8fHQuZnVuY3Rpb25zLmhhcyhlKSk6ITF9Y2hlY2tMb2NhbEV4cG9ydCh0KXt0aGlzLnNjb3BlU3RhY2tbMF0uZGVjbGFyZUZ1bmN0aW9ucy5oYXModC5uYW1lKXx8c3VwZXIuY2hlY2tMb2NhbEV4cG9ydCh0KX19LGRoPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5wcml2YXRlTmFtZXM9bmV3IFNldCx0aGlzLmxvbmVBY2Nlc3NvcnM9bmV3IE1hcCx0aGlzLnVuZGVmaW5lZFByaXZhdGVOYW1lcz1uZXcgTWFwfX0sbWg9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5wYXJzZXI9dm9pZCAwLHRoaXMuc3RhY2s9W10sdGhpcy51bmRlZmluZWRQcml2YXRlTmFtZXM9bmV3IE1hcCx0aGlzLnBhcnNlcj10fWN1cnJlbnQoKXtyZXR1cm4gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXX1lbnRlcigpe3RoaXMuc3RhY2sucHVzaChuZXcgZGgpfWV4aXQoKXtsZXQgdD10aGlzLnN0YWNrLnBvcCgpLGU9dGhpcy5jdXJyZW50KCk7Zm9yKGxldFtzLHJdb2YgQXJyYXkuZnJvbSh0LnVuZGVmaW5lZFByaXZhdGVOYW1lcykpZT9lLnVuZGVmaW5lZFByaXZhdGVOYW1lcy5oYXMocyl8fGUudW5kZWZpbmVkUHJpdmF0ZU5hbWVzLnNldChzLHIpOnRoaXMucGFyc2VyLnJhaXNlKHUuSW52YWxpZFByaXZhdGVGaWVsZFJlc29sdXRpb24se2F0OnIsaWRlbnRpZmllck5hbWU6c30pfWRlY2xhcmVQcml2YXRlTmFtZSh0LGUscyl7bGV0e3ByaXZhdGVOYW1lczpyLGxvbmVBY2Nlc3NvcnM6aSx1bmRlZmluZWRQcml2YXRlTmFtZXM6YX09dGhpcy5jdXJyZW50KCksbj1yLmhhcyh0KTtpZihlJnJzKXtsZXQgbz1uJiZpLmdldCh0KTtpZihvKXtsZXQgYz1vJmZ0LGY9ZSZmdCx5PW8mcnMsUD1lJnJzO249eT09PVB8fGMhPT1mLG58fGkuZGVsZXRlKHQpfWVsc2Ugbnx8aS5zZXQodCxlKX1uJiZ0aGlzLnBhcnNlci5yYWlzZSh1LlByaXZhdGVOYW1lUmVkZWNsYXJhdGlvbix7YXQ6cyxpZGVudGlmaWVyTmFtZTp0fSksci5hZGQodCksYS5kZWxldGUodCl9dXNlUHJpdmF0ZU5hbWUodCxlKXtsZXQgcztmb3IocyBvZiB0aGlzLnN0YWNrKWlmKHMucHJpdmF0ZU5hbWVzLmhhcyh0KSlyZXR1cm47cz9zLnVuZGVmaW5lZFByaXZhdGVOYW1lcy5zZXQodCxlKTp0aGlzLnBhcnNlci5yYWlzZSh1LkludmFsaWRQcml2YXRlRmllbGRSZXNvbHV0aW9uLHthdDplLGlkZW50aWZpZXJOYW1lOnR9KX19LHloPTAsTnI9MSxscz0yLElyPTMseXQ9Y2xhc3N7Y29uc3RydWN0b3IoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06eWg7dGhpcy50eXBlPXZvaWQgMCx0aGlzLnR5cGU9dH1jYW5CZUFycm93UGFyYW1ldGVyRGVjbGFyYXRpb24oKXtyZXR1cm4gdGhpcy50eXBlPT09bHN8fHRoaXMudHlwZT09PU5yfWlzQ2VydGFpbmx5UGFyYW1ldGVyRGVjbGFyYXRpb24oKXtyZXR1cm4gdGhpcy50eXBlPT09SXJ9fSxrcj1jbGFzcyBleHRlbmRzIHl0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuZGVjbGFyYXRpb25FcnJvcnM9bmV3IE1hcH1yZWNvcmREZWNsYXJhdGlvbkVycm9yKHQsZSl7bGV0e2F0OnN9PWUscj1zLmluZGV4O3RoaXMuZGVjbGFyYXRpb25FcnJvcnMuc2V0KHIsW3Qsc10pfWNsZWFyRGVjbGFyYXRpb25FcnJvcih0KXt0aGlzLmRlY2xhcmF0aW9uRXJyb3JzLmRlbGV0ZSh0KX1pdGVyYXRlRXJyb3JzKHQpe3RoaXMuZGVjbGFyYXRpb25FcnJvcnMuZm9yRWFjaCh0KX19LHhoPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMucGFyc2VyPXZvaWQgMCx0aGlzLnN0YWNrPVtuZXcgeXRdLHRoaXMucGFyc2VyPXR9ZW50ZXIodCl7dGhpcy5zdGFjay5wdXNoKHQpfWV4aXQoKXt0aGlzLnN0YWNrLnBvcCgpfXJlY29yZFBhcmFtZXRlckluaXRpYWxpemVyRXJyb3IodCxlKXtsZXR7YXQ6c309ZSxyPXthdDpzLmxvYy5zdGFydH0se3N0YWNrOml9PXRoaXMsYT1pLmxlbmd0aC0xLG49aVthXTtmb3IoOyFuLmlzQ2VydGFpbmx5UGFyYW1ldGVyRGVjbGFyYXRpb24oKTspe2lmKG4uY2FuQmVBcnJvd1BhcmFtZXRlckRlY2xhcmF0aW9uKCkpbi5yZWNvcmREZWNsYXJhdGlvbkVycm9yKHQscik7ZWxzZSByZXR1cm47bj1pWy0tYV19dGhpcy5wYXJzZXIucmFpc2UodCxyKX1yZWNvcmRBcnJvd1BhcmVtZXRlckJpbmRpbmdFcnJvcih0LGUpe2xldHthdDpzfT1lLHtzdGFjazpyfT10aGlzLGk9cltyLmxlbmd0aC0xXSxhPXthdDpzLmxvYy5zdGFydH07aWYoaS5pc0NlcnRhaW5seVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpdGhpcy5wYXJzZXIucmFpc2UodCxhKTtlbHNlIGlmKGkuY2FuQmVBcnJvd1BhcmFtZXRlckRlY2xhcmF0aW9uKCkpaS5yZWNvcmREZWNsYXJhdGlvbkVycm9yKHQsYSk7ZWxzZSByZXR1cm59cmVjb3JkQXN5bmNBcnJvd1BhcmFtZXRlcnNFcnJvcih0KXtsZXR7YXQ6ZX09dCx7c3RhY2s6c309dGhpcyxyPXMubGVuZ3RoLTEsaT1zW3JdO2Zvcig7aS5jYW5CZUFycm93UGFyYW1ldGVyRGVjbGFyYXRpb24oKTspaS50eXBlPT09bHMmJmkucmVjb3JkRGVjbGFyYXRpb25FcnJvcih1LkF3YWl0QmluZGluZ0lkZW50aWZpZXIse2F0OmV9KSxpPXNbLS1yXX12YWxpZGF0ZUFzUGF0dGVybigpe2xldHtzdGFjazp0fT10aGlzLGU9dFt0Lmxlbmd0aC0xXTshZS5jYW5CZUFycm93UGFyYW1ldGVyRGVjbGFyYXRpb24oKXx8ZS5pdGVyYXRlRXJyb3JzKHM9PntsZXRbcixpXT1zO3RoaXMucGFyc2VyLnJhaXNlKHIse2F0Oml9KTtsZXQgYT10Lmxlbmd0aC0yLG49dFthXTtmb3IoO24uY2FuQmVBcnJvd1BhcmFtZXRlckRlY2xhcmF0aW9uKCk7KW4uY2xlYXJEZWNsYXJhdGlvbkVycm9yKGkuaW5kZXgpLG49dFstLWFdfSl9fTtmdW5jdGlvbiBnaCgpe3JldHVybiBuZXcgeXQoSXIpfWZ1bmN0aW9uIEFoKCl7cmV0dXJuIG5ldyBrcihOcil9ZnVuY3Rpb24gUGgoKXtyZXR1cm4gbmV3IGtyKGxzKX1mdW5jdGlvbiBEcigpe3JldHVybiBuZXcgeXR9dmFyIGplPTAsRnI9MSx4dD0yLExyPTQscWU9OCxUaD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RhY2tzPVtdfWVudGVyKHQpe3RoaXMuc3RhY2tzLnB1c2godCl9ZXhpdCgpe3RoaXMuc3RhY2tzLnBvcCgpfWN1cnJlbnRGbGFncygpe3JldHVybiB0aGlzLnN0YWNrc1t0aGlzLnN0YWNrcy5sZW5ndGgtMV19Z2V0IGhhc0F3YWl0KCl7cmV0dXJuKHRoaXMuY3VycmVudEZsYWdzKCkmeHQpPjB9Z2V0IGhhc1lpZWxkKCl7cmV0dXJuKHRoaXMuY3VycmVudEZsYWdzKCkmRnIpPjB9Z2V0IGhhc1JldHVybigpe3JldHVybih0aGlzLmN1cnJlbnRGbGFncygpJkxyKT4wfWdldCBoYXNJbigpe3JldHVybih0aGlzLmN1cnJlbnRGbGFncygpJnFlKT4wfX07ZnVuY3Rpb24gZ3QodCxlKXtyZXR1cm4odD94dDowKXwoZT9GcjowKX12YXIgRWg9Y2xhc3MgZXh0ZW5kcyBjaHthZGRFeHRyYSh0LGUscyl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOiEwO2lmKCF0KXJldHVybjtsZXQgaT10LmV4dHJhPXQuZXh0cmF8fHt9O3I/aVtlXT1zOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGUse2VudW1lcmFibGU6cix2YWx1ZTpzfSl9aXNDb250ZXh0dWFsKHQpe3JldHVybiB0aGlzLnN0YXRlLnR5cGU9PT10JiYhdGhpcy5zdGF0ZS5jb250YWluc0VzY31pc1VucGFyc2VkQ29udGV4dHVhbCh0LGUpe2xldCBzPXQrZS5sZW5ndGg7aWYodGhpcy5pbnB1dC5zbGljZSh0LHMpPT09ZSl7bGV0IHI9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHMpO3JldHVybiEoQmUocil8fChyJjY0NTEyKT09PTU1Mjk2KX1yZXR1cm4hMX1pc0xvb2thaGVhZENvbnRleHR1YWwodCl7bGV0IGU9dGhpcy5uZXh0VG9rZW5TdGFydCgpO3JldHVybiB0aGlzLmlzVW5wYXJzZWRDb250ZXh0dWFsKGUsdCl9ZWF0Q29udGV4dHVhbCh0KXtyZXR1cm4gdGhpcy5pc0NvbnRleHR1YWwodCk/KHRoaXMubmV4dCgpLCEwKTohMX1leHBlY3RDb250ZXh0dWFsKHQsZSl7aWYoIXRoaXMuZWF0Q29udGV4dHVhbCh0KSl0aHJvdyBlIT1udWxsP3RoaXMucmFpc2UoZSx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pOnRoaXMudW5leHBlY3RlZChudWxsLHQpfWNhbkluc2VydFNlbWljb2xvbigpe3JldHVybiB0aGlzLm1hdGNoKDEzNSl8fHRoaXMubWF0Y2goOCl8fHRoaXMuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCl9aGFzUHJlY2VkaW5nTGluZUJyZWFrKCl7cmV0dXJuIGFzLnRlc3QodGhpcy5pbnB1dC5zbGljZSh0aGlzLnN0YXRlLmxhc3RUb2tFbmRMb2MuaW5kZXgsdGhpcy5zdGF0ZS5zdGFydCkpfWhhc0ZvbGxvd2luZ0xpbmVCcmVhaygpe3JldHVybiB2ci5sYXN0SW5kZXg9dGhpcy5zdGF0ZS5lbmQsdnIudGVzdCh0aGlzLmlucHV0KX1pc0xpbmVUZXJtaW5hdG9yKCl7cmV0dXJuIHRoaXMuZWF0KDEzKXx8dGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKX1zZW1pY29sb24oKXsoKGFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTohMCk/dGhpcy5pc0xpbmVUZXJtaW5hdG9yKCk6dGhpcy5lYXQoMTMpKXx8dGhpcy5yYWlzZSh1Lk1pc3NpbmdTZW1pY29sb24se2F0OnRoaXMuc3RhdGUubGFzdFRva0VuZExvY30pfWV4cGVjdCh0LGUpe3RoaXMuZWF0KHQpfHx0aGlzLnVuZXhwZWN0ZWQoZSx0KX10cnlQYXJzZSh0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06dGhpcy5zdGF0ZS5jbG9uZSgpLHM9e25vZGU6bnVsbH07dHJ5e2xldCByPXQoZnVuY3Rpb24oKXtsZXQgaT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06bnVsbDt0aHJvdyBzLm5vZGU9aSxzfSk7aWYodGhpcy5zdGF0ZS5lcnJvcnMubGVuZ3RoPmUuZXJyb3JzLmxlbmd0aCl7bGV0IGk9dGhpcy5zdGF0ZTtyZXR1cm4gdGhpcy5zdGF0ZT1lLHRoaXMuc3RhdGUudG9rZW5zTGVuZ3RoPWkudG9rZW5zTGVuZ3RoLHtub2RlOnIsZXJyb3I6aS5lcnJvcnNbZS5lcnJvcnMubGVuZ3RoXSx0aHJvd246ITEsYWJvcnRlZDohMSxmYWlsU3RhdGU6aX19cmV0dXJue25vZGU6cixlcnJvcjpudWxsLHRocm93bjohMSxhYm9ydGVkOiExLGZhaWxTdGF0ZTpudWxsfX1jYXRjaChyKXtsZXQgaT10aGlzLnN0YXRlO2lmKHRoaXMuc3RhdGU9ZSxyIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpcmV0dXJue25vZGU6bnVsbCxlcnJvcjpyLHRocm93bjohMCxhYm9ydGVkOiExLGZhaWxTdGF0ZTppfTtpZihyPT09cylyZXR1cm57bm9kZTpzLm5vZGUsZXJyb3I6bnVsbCx0aHJvd246ITEsYWJvcnRlZDohMCxmYWlsU3RhdGU6aX07dGhyb3cgcn19Y2hlY2tFeHByZXNzaW9uRXJyb3JzKHQsZSl7aWYoIXQpcmV0dXJuITE7bGV0e3Nob3J0aGFuZEFzc2lnbkxvYzpzLGRvdWJsZVByb3RvTG9jOnIscHJpdmF0ZUtleUxvYzppLG9wdGlvbmFsUGFyYW1ldGVyc0xvYzphfT10LG49ISFzfHwhIXJ8fCEhYXx8ISFpO2lmKCFlKXJldHVybiBuO3MhPW51bGwmJnRoaXMucmFpc2UodS5JbnZhbGlkQ292ZXJJbml0aWFsaXplZE5hbWUse2F0OnN9KSxyIT1udWxsJiZ0aGlzLnJhaXNlKHUuRHVwbGljYXRlUHJvdG8se2F0OnJ9KSxpIT1udWxsJiZ0aGlzLnJhaXNlKHUuVW5leHBlY3RlZFByaXZhdGVGaWVsZCx7YXQ6aX0pLGEhPW51bGwmJnRoaXMudW5leHBlY3RlZChhKX1pc0xpdGVyYWxQcm9wZXJ0eU5hbWUoKXtyZXR1cm4gaHIodGhpcy5zdGF0ZS50eXBlKX1pc1ByaXZhdGVOYW1lKHQpe3JldHVybiB0LnR5cGU9PT1cIlByaXZhdGVOYW1lXCJ9Z2V0UHJpdmF0ZU5hbWVTVih0KXtyZXR1cm4gdC5pZC5uYW1lfWhhc1Byb3BlcnR5QXNQcml2YXRlTmFtZSh0KXtyZXR1cm4odC50eXBlPT09XCJNZW1iZXJFeHByZXNzaW9uXCJ8fHQudHlwZT09PVwiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCIpJiZ0aGlzLmlzUHJpdmF0ZU5hbWUodC5wcm9wZXJ0eSl9aXNPcHRpb25hbENoYWluKHQpe3JldHVybiB0LnR5cGU9PT1cIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwifHx0LnR5cGU9PT1cIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIn1pc09iamVjdFByb3BlcnR5KHQpe3JldHVybiB0LnR5cGU9PT1cIk9iamVjdFByb3BlcnR5XCJ9aXNPYmplY3RNZXRob2QodCl7cmV0dXJuIHQudHlwZT09PVwiT2JqZWN0TWV0aG9kXCJ9aW5pdGlhbGl6ZVNjb3Blcygpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp0aGlzLm9wdGlvbnMuc291cmNlVHlwZT09PVwibW9kdWxlXCIsZT10aGlzLnN0YXRlLmxhYmVsczt0aGlzLnN0YXRlLmxhYmVscz1bXTtsZXQgcz10aGlzLmV4cG9ydGVkSWRlbnRpZmllcnM7dGhpcy5leHBvcnRlZElkZW50aWZpZXJzPW5ldyBTZXQ7bGV0IHI9dGhpcy5pbk1vZHVsZTt0aGlzLmluTW9kdWxlPXQ7bGV0IGk9dGhpcy5zY29wZSxhPXRoaXMuZ2V0U2NvcGVIYW5kbGVyKCk7dGhpcy5zY29wZT1uZXcgYSh0aGlzLHQpO2xldCBuPXRoaXMucHJvZFBhcmFtO3RoaXMucHJvZFBhcmFtPW5ldyBUaDtsZXQgbz10aGlzLmNsYXNzU2NvcGU7dGhpcy5jbGFzc1Njb3BlPW5ldyBtaCh0aGlzKTtsZXQgYz10aGlzLmV4cHJlc3Npb25TY29wZTtyZXR1cm4gdGhpcy5leHByZXNzaW9uU2NvcGU9bmV3IHhoKHRoaXMpLCgpPT57dGhpcy5zdGF0ZS5sYWJlbHM9ZSx0aGlzLmV4cG9ydGVkSWRlbnRpZmllcnM9cyx0aGlzLmluTW9kdWxlPXIsdGhpcy5zY29wZT1pLHRoaXMucHJvZFBhcmFtPW4sdGhpcy5jbGFzc1Njb3BlPW8sdGhpcy5leHByZXNzaW9uU2NvcGU9Y319ZW50ZXJJbml0aWFsU2NvcGVzKCl7bGV0IHQ9amU7dGhpcy5pbk1vZHVsZSYmKHR8PXh0KSx0aGlzLnNjb3BlLmVudGVyKFdlKSx0aGlzLnByb2RQYXJhbS5lbnRlcih0KX1jaGVja0Rlc3RydWN0dXJpbmdQcml2YXRlKHQpe2xldHtwcml2YXRlS2V5TG9jOmV9PXQ7ZSE9PW51bGwmJnRoaXMuZXhwZWN0UGx1Z2luKFwiZGVzdHJ1Y3R1cmluZ1ByaXZhdGVcIixlKX19LEF0PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zaG9ydGhhbmRBc3NpZ25Mb2M9bnVsbCx0aGlzLmRvdWJsZVByb3RvTG9jPW51bGwsdGhpcy5wcml2YXRlS2V5TG9jPW51bGwsdGhpcy5vcHRpb25hbFBhcmFtZXRlcnNMb2M9bnVsbH19LFB0PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxzKXt0aGlzLnR5cGU9XCJcIix0aGlzLnN0YXJ0PWUsdGhpcy5lbmQ9MCx0aGlzLmxvYz1uZXcgZChzKSx0IT1udWxsJiZ0Lm9wdGlvbnMucmFuZ2VzJiYodGhpcy5yYW5nZT1bZSwwXSksdCE9bnVsbCYmdC5maWxlbmFtZSYmKHRoaXMubG9jLmZpbGVuYW1lPXQuZmlsZW5hbWUpfX0sdXM9UHQucHJvdG90eXBlO3VzLl9fY2xvbmU9ZnVuY3Rpb24oKXtsZXQgdD1uZXcgUHQsZT1PYmplY3Qua2V5cyh0aGlzKTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKyspe2xldCBpPWVbc107aSE9PVwibGVhZGluZ0NvbW1lbnRzXCImJmkhPT1cInRyYWlsaW5nQ29tbWVudHNcIiYmaSE9PVwiaW5uZXJDb21tZW50c1wiJiYodFtpXT10aGlzW2ldKX1yZXR1cm4gdH07ZnVuY3Rpb24gQ2godCl7cmV0dXJuIGdlKHQpfWZ1bmN0aW9uIGdlKHQpe2xldHt0eXBlOmUsc3RhcnQ6cyxlbmQ6cixsb2M6aSxyYW5nZTphLGV4dHJhOm4sbmFtZTpvfT10LGM9T2JqZWN0LmNyZWF0ZSh1cyk7cmV0dXJuIGMudHlwZT1lLGMuc3RhcnQ9cyxjLmVuZD1yLGMubG9jPWksYy5yYW5nZT1hLGMuZXh0cmE9bixjLm5hbWU9byxlPT09XCJQbGFjZWhvbGRlclwiJiYoYy5leHBlY3RlZE5vZGU9dC5leHBlY3RlZE5vZGUpLGN9ZnVuY3Rpb24gYmgodCl7bGV0e3R5cGU6ZSxzdGFydDpzLGVuZDpyLGxvYzppLHJhbmdlOmEsZXh0cmE6bn09dDtpZihlPT09XCJQbGFjZWhvbGRlclwiKXJldHVybiBDaCh0KTtsZXQgbz1PYmplY3QuY3JlYXRlKHVzKTtyZXR1cm4gby50eXBlPWUsby5zdGFydD1zLG8uZW5kPXIsby5sb2M9aSxvLnJhbmdlPWEsdC5yYXchPT12b2lkIDA/by5yYXc9dC5yYXc6by5leHRyYT1uLG8udmFsdWU9dC52YWx1ZSxvfXZhciB2aD1jbGFzcyBleHRlbmRzIEVoe3N0YXJ0Tm9kZSgpe3JldHVybiBuZXcgUHQodGhpcyx0aGlzLnN0YXRlLnN0YXJ0LHRoaXMuc3RhdGUuc3RhcnRMb2MpfXN0YXJ0Tm9kZUF0KHQsZSl7cmV0dXJuIG5ldyBQdCh0aGlzLHQsZSl9c3RhcnROb2RlQXROb2RlKHQpe3JldHVybiB0aGlzLnN0YXJ0Tm9kZUF0KHQuc3RhcnQsdC5sb2Muc3RhcnQpfWZpbmlzaE5vZGUodCxlKXtyZXR1cm4gdGhpcy5maW5pc2hOb2RlQXQodCxlLHRoaXMuc3RhdGUubGFzdFRva0VuZExvYyl9ZmluaXNoTm9kZUF0KHQsZSxzKXtyZXR1cm4gdC50eXBlPWUsdC5lbmQ9cy5pbmRleCx0LmxvYy5lbmQ9cyx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodC5yYW5nZVsxXT1zLmluZGV4KSx0aGlzLm9wdGlvbnMuYXR0YWNoQ29tbWVudCYmdGhpcy5wcm9jZXNzQ29tbWVudCh0KSx0fXJlc2V0U3RhcnRMb2NhdGlvbih0LGUscyl7dC5zdGFydD1lLHQubG9jLnN0YXJ0PXMsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHQucmFuZ2VbMF09ZSl9cmVzZXRFbmRMb2NhdGlvbih0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06dGhpcy5zdGF0ZS5sYXN0VG9rRW5kTG9jO3QuZW5kPWUuaW5kZXgsdC5sb2MuZW5kPWUsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHQucmFuZ2VbMV09ZS5pbmRleCl9cmVzZXRTdGFydExvY2F0aW9uRnJvbU5vZGUodCxlKXt0aGlzLnJlc2V0U3RhcnRMb2NhdGlvbih0LGUuc3RhcnQsZS5sb2Muc3RhcnQpfX0sU2g9bmV3IFNldChbXCJfXCIsXCJhbnlcIixcImJvb2xcIixcImJvb2xlYW5cIixcImVtcHR5XCIsXCJleHRlbmRzXCIsXCJmYWxzZVwiLFwiaW50ZXJmYWNlXCIsXCJtaXhlZFwiLFwibnVsbFwiLFwibnVtYmVyXCIsXCJzdGF0aWNcIixcInN0cmluZ1wiLFwidHJ1ZVwiLFwidHlwZW9mXCIsXCJ2b2lkXCJdKSxJPWooem58fCh6bj1ydChbXCJmbG93XCJdKSkpKHQ9Pih7QW1iaWd1b3VzQ29uZGl0aW9uYWxBcnJvdzp0KFwiQW1iaWd1b3VzIGV4cHJlc3Npb246IHdyYXAgdGhlIGFycm93IGZ1bmN0aW9ucyBpbiBwYXJlbnRoZXNlcyB0byBkaXNhbWJpZ3VhdGUuXCIpLEFtYmlndW91c0RlY2xhcmVNb2R1bGVLaW5kOnQoXCJGb3VuZCBib3RoIGBkZWNsYXJlIG1vZHVsZS5leHBvcnRzYCBhbmQgYGRlY2xhcmUgZXhwb3J0YCBpbiB0aGUgc2FtZSBtb2R1bGUuIE1vZHVsZXMgY2FuIG9ubHkgaGF2ZSAxIHNpbmNlIHRoZXkgYXJlIGVpdGhlciBhbiBFUyBtb2R1bGUgb3IgdGhleSBhcmUgYSBDb21tb25KUyBtb2R1bGUuXCIpLEFzc2lnblJlc2VydmVkVHlwZTp0KGU9PntsZXR7cmVzZXJ2ZWRUeXBlOnN9PWU7cmV0dXJuXCJDYW5ub3Qgb3ZlcndyaXRlIHJlc2VydmVkIHR5cGUgXCIuY29uY2F0KHMsXCIuXCIpfSksRGVjbGFyZUNsYXNzRWxlbWVudDp0KFwiVGhlIGBkZWNsYXJlYCBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gY2xhc3MgZmllbGRzLlwiKSxEZWNsYXJlQ2xhc3NGaWVsZEluaXRpYWxpemVyOnQoXCJJbml0aWFsaXplcnMgYXJlIG5vdCBhbGxvd2VkIGluIGZpZWxkcyB3aXRoIHRoZSBgZGVjbGFyZWAgbW9kaWZpZXIuXCIpLER1cGxpY2F0ZURlY2xhcmVNb2R1bGVFeHBvcnRzOnQoXCJEdXBsaWNhdGUgYGRlY2xhcmUgbW9kdWxlLmV4cG9ydHNgIHN0YXRlbWVudC5cIiksRW51bUJvb2xlYW5NZW1iZXJOb3RJbml0aWFsaXplZDp0KGU9PntsZXR7bWVtYmVyTmFtZTpzLGVudW1OYW1lOnJ9PWU7cmV0dXJuXCJCb29sZWFuIGVudW0gbWVtYmVycyBuZWVkIHRvIGJlIGluaXRpYWxpemVkLiBVc2UgZWl0aGVyIGBcIi5jb25jYXQocyxcIiA9IHRydWUsYCBvciBgXCIpLmNvbmNhdChzLFwiID0gZmFsc2UsYCBpbiBlbnVtIGBcIikuY29uY2F0KHIsXCJgLlwiKX0pLEVudW1EdXBsaWNhdGVNZW1iZXJOYW1lOnQoZT0+e2xldHttZW1iZXJOYW1lOnMsZW51bU5hbWU6cn09ZTtyZXR1cm5cIkVudW0gbWVtYmVyIG5hbWVzIG5lZWQgdG8gYmUgdW5pcXVlLCBidXQgdGhlIG5hbWUgYFwiLmNvbmNhdChzLFwiYCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgYmVmb3JlIGluIGVudW0gYFwiKS5jb25jYXQocixcImAuXCIpfSksRW51bUluY29uc2lzdGVudE1lbWJlclZhbHVlczp0KGU9PntsZXR7ZW51bU5hbWU6c309ZTtyZXR1cm5cIkVudW0gYFwiLmNvbmNhdChzLFwiYCBoYXMgaW5jb25zaXN0ZW50IG1lbWJlciBpbml0aWFsaXplcnMuIEVpdGhlciB1c2Ugbm8gaW5pdGlhbGl6ZXJzLCBvciBjb25zaXN0ZW50bHkgdXNlIGxpdGVyYWxzIChlaXRoZXIgYm9vbGVhbnMsIG51bWJlcnMsIG9yIHN0cmluZ3MpIGZvciBhbGwgbWVtYmVyIGluaXRpYWxpemVycy5cIil9KSxFbnVtSW52YWxpZEV4cGxpY2l0VHlwZTp0KGU9PntsZXR7aW52YWxpZEVudW1UeXBlOnMsZW51bU5hbWU6cn09ZTtyZXR1cm5cIkVudW0gdHlwZSBgXCIuY29uY2F0KHMsXCJgIGlzIG5vdCB2YWxpZC4gVXNlIG9uZSBvZiBgYm9vbGVhbmAsIGBudW1iZXJgLCBgc3RyaW5nYCwgb3IgYHN5bWJvbGAgaW4gZW51bSBgXCIpLmNvbmNhdChyLFwiYC5cIil9KSxFbnVtSW52YWxpZEV4cGxpY2l0VHlwZVVua25vd25TdXBwbGllZDp0KGU9PntsZXR7ZW51bU5hbWU6c309ZTtyZXR1cm5cIlN1cHBsaWVkIGVudW0gdHlwZSBpcyBub3QgdmFsaWQuIFVzZSBvbmUgb2YgYGJvb2xlYW5gLCBgbnVtYmVyYCwgYHN0cmluZ2AsIG9yIGBzeW1ib2xgIGluIGVudW0gYFwiLmNvbmNhdChzLFwiYC5cIil9KSxFbnVtSW52YWxpZE1lbWJlckluaXRpYWxpemVyUHJpbWFyeVR5cGU6dChlPT57bGV0e2VudW1OYW1lOnMsbWVtYmVyTmFtZTpyLGV4cGxpY2l0VHlwZTppfT1lO3JldHVyblwiRW51bSBgXCIuY29uY2F0KHMsXCJgIGhhcyB0eXBlIGBcIikuY29uY2F0KGksXCJgLCBzbyB0aGUgaW5pdGlhbGl6ZXIgb2YgYFwiKS5jb25jYXQocixcImAgbmVlZHMgdG8gYmUgYSBcIikuY29uY2F0KGksXCIgbGl0ZXJhbC5cIil9KSxFbnVtSW52YWxpZE1lbWJlckluaXRpYWxpemVyU3ltYm9sVHlwZTp0KGU9PntsZXR7ZW51bU5hbWU6cyxtZW1iZXJOYW1lOnJ9PWU7cmV0dXJuXCJTeW1ib2wgZW51bSBtZW1iZXJzIGNhbm5vdCBiZSBpbml0aWFsaXplZC4gVXNlIGBcIi5jb25jYXQocixcIixgIGluIGVudW0gYFwiKS5jb25jYXQocyxcImAuXCIpfSksRW51bUludmFsaWRNZW1iZXJJbml0aWFsaXplclVua25vd25UeXBlOnQoZT0+e2xldHtlbnVtTmFtZTpzLG1lbWJlck5hbWU6cn09ZTtyZXR1cm5cIlRoZSBlbnVtIG1lbWJlciBpbml0aWFsaXplciBmb3IgYFwiLmNvbmNhdChyLFwiYCBuZWVkcyB0byBiZSBhIGxpdGVyYWwgKGVpdGhlciBhIGJvb2xlYW4sIG51bWJlciwgb3Igc3RyaW5nKSBpbiBlbnVtIGBcIikuY29uY2F0KHMsXCJgLlwiKX0pLEVudW1JbnZhbGlkTWVtYmVyTmFtZTp0KGU9PntsZXR7ZW51bU5hbWU6cyxtZW1iZXJOYW1lOnIsc3VnZ2VzdGlvbjppfT1lO3JldHVyblwiRW51bSBtZW1iZXIgbmFtZXMgY2Fubm90IHN0YXJ0IHdpdGggbG93ZXJjYXNlICdhJyB0aHJvdWdoICd6Jy4gSW5zdGVhZCBvZiB1c2luZyBgXCIuY29uY2F0KHIsXCJgLCBjb25zaWRlciB1c2luZyBgXCIpLmNvbmNhdChpLFwiYCwgaW4gZW51bSBgXCIpLmNvbmNhdChzLFwiYC5cIil9KSxFbnVtTnVtYmVyTWVtYmVyTm90SW5pdGlhbGl6ZWQ6dChlPT57bGV0e2VudW1OYW1lOnMsbWVtYmVyTmFtZTpyfT1lO3JldHVyblwiTnVtYmVyIGVudW0gbWVtYmVycyBuZWVkIHRvIGJlIGluaXRpYWxpemVkLCBlLmcuIGBcIi5jb25jYXQocixcIiA9IDFgIGluIGVudW0gYFwiKS5jb25jYXQocyxcImAuXCIpfSksRW51bVN0cmluZ01lbWJlckluY29uc2lzdGVudGx5SW5pdGFpbGl6ZWQ6dChlPT57bGV0e2VudW1OYW1lOnN9PWU7cmV0dXJuXCJTdHJpbmcgZW51bSBtZW1iZXJzIG5lZWQgdG8gY29uc2lzdGVudGx5IGVpdGhlciBhbGwgdXNlIGluaXRpYWxpemVycywgb3IgdXNlIG5vIGluaXRpYWxpemVycywgaW4gZW51bSBgXCIuY29uY2F0KHMsXCJgLlwiKX0pLEdldHRlck1heU5vdEhhdmVUaGlzUGFyYW06dChcIkEgZ2V0dGVyIGNhbm5vdCBoYXZlIGEgYHRoaXNgIHBhcmFtZXRlci5cIiksSW1wb3J0VHlwZVNob3J0aGFuZE9ubHlJblB1cmVJbXBvcnQ6dChcIlRoZSBgdHlwZWAgYW5kIGB0eXBlb2ZgIGtleXdvcmRzIG9uIG5hbWVkIGltcG9ydHMgY2FuIG9ubHkgYmUgdXNlZCBvbiByZWd1bGFyIGBpbXBvcnRgIHN0YXRlbWVudHMuIEl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYGltcG9ydCB0eXBlYCBvciBgaW1wb3J0IHR5cGVvZmAgc3RhdGVtZW50cy5cIiksSW5leGFjdEluc2lkZUV4YWN0OnQoXCJFeHBsaWNpdCBpbmV4YWN0IHN5bnRheCBjYW5ub3QgYXBwZWFyIGluc2lkZSBhbiBleHBsaWNpdCBleGFjdCBvYmplY3QgdHlwZS5cIiksSW5leGFjdEluc2lkZU5vbk9iamVjdDp0KFwiRXhwbGljaXQgaW5leGFjdCBzeW50YXggY2Fubm90IGFwcGVhciBpbiBjbGFzcyBvciBpbnRlcmZhY2UgZGVmaW5pdGlvbnMuXCIpLEluZXhhY3RWYXJpYW5jZTp0KFwiRXhwbGljaXQgaW5leGFjdCBzeW50YXggY2Fubm90IGhhdmUgdmFyaWFuY2UuXCIpLEludmFsaWROb25UeXBlSW1wb3J0SW5EZWNsYXJlTW9kdWxlOnQoXCJJbXBvcnRzIHdpdGhpbiBhIGBkZWNsYXJlIG1vZHVsZWAgYm9keSBtdXN0IGFsd2F5cyBiZSBgaW1wb3J0IHR5cGVgIG9yIGBpbXBvcnQgdHlwZW9mYC5cIiksTWlzc2luZ1R5cGVQYXJhbURlZmF1bHQ6dChcIlR5cGUgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIG5lZWRzIGEgZGVmYXVsdCwgc2luY2UgYSBwcmVjZWRpbmcgdHlwZSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gaGFzIGEgZGVmYXVsdC5cIiksTmVzdGVkRGVjbGFyZU1vZHVsZTp0KFwiYGRlY2xhcmUgbW9kdWxlYCBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYW5vdGhlciBgZGVjbGFyZSBtb2R1bGVgLlwiKSxOZXN0ZWRGbG93Q29tbWVudDp0KFwiQ2Fubm90IGhhdmUgYSBmbG93IGNvbW1lbnQgaW5zaWRlIGFub3RoZXIgZmxvdyBjb21tZW50LlwiKSxQYXR0ZXJuSXNPcHRpb25hbDp0KFwiQSBiaW5kaW5nIHBhdHRlcm4gcGFyYW1ldGVyIGNhbm5vdCBiZSBvcHRpb25hbCBpbiBhbiBpbXBsZW1lbnRhdGlvbiBzaWduYXR1cmUuXCIse3JlYXNvbkNvZGU6XCJPcHRpb25hbEJpbmRpbmdQYXR0ZXJuXCJ9KSxTZXR0ZXJNYXlOb3RIYXZlVGhpc1BhcmFtOnQoXCJBIHNldHRlciBjYW5ub3QgaGF2ZSBhIGB0aGlzYCBwYXJhbWV0ZXIuXCIpLFNwcmVhZFZhcmlhbmNlOnQoXCJTcHJlYWQgcHJvcGVydGllcyBjYW5ub3QgaGF2ZSB2YXJpYW5jZS5cIiksVGhpc1BhcmFtQW5ub3RhdGlvblJlcXVpcmVkOnQoXCJBIHR5cGUgYW5ub3RhdGlvbiBpcyByZXF1aXJlZCBmb3IgdGhlIGB0aGlzYCBwYXJhbWV0ZXIuXCIpLFRoaXNQYXJhbUJhbm5lZEluQ29uc3RydWN0b3I6dChcIkNvbnN0cnVjdG9ycyBjYW5ub3QgaGF2ZSBhIGB0aGlzYCBwYXJhbWV0ZXI7IGNvbnN0cnVjdG9ycyBkb24ndCBiaW5kIGB0aGlzYCBsaWtlIG90aGVyIGZ1bmN0aW9ucy5cIiksVGhpc1BhcmFtTWF5Tm90QmVPcHRpb25hbDp0KFwiVGhlIGB0aGlzYCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsLlwiKSxUaGlzUGFyYW1NdXN0QmVGaXJzdDp0KFwiVGhlIGB0aGlzYCBwYXJhbWV0ZXIgbXVzdCBiZSB0aGUgZmlyc3QgZnVuY3Rpb24gcGFyYW1ldGVyLlwiKSxUaGlzUGFyYW1Ob0RlZmF1bHQ6dChcIlRoZSBgdGhpc2AgcGFyYW1ldGVyIG1heSBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUuXCIpLFR5cGVCZWZvcmVJbml0aWFsaXplcjp0KFwiVHlwZSBhbm5vdGF0aW9ucyBtdXN0IGNvbWUgYmVmb3JlIGRlZmF1bHQgYXNzaWdubWVudHMsIGUuZy4gaW5zdGVhZCBvZiBgYWdlID0gMjU6IG51bWJlcmAgdXNlIGBhZ2U6IG51bWJlciA9IDI1YC5cIiksVHlwZUNhc3RJblBhdHRlcm46dChcIlRoZSB0eXBlIGNhc3QgZXhwcmVzc2lvbiBpcyBleHBlY3RlZCB0byBiZSB3cmFwcGVkIHdpdGggcGFyZW50aGVzaXMuXCIpLFVuZXhwZWN0ZWRFeHBsaWNpdEluZXhhY3RJbk9iamVjdDp0KFwiRXhwbGljaXQgaW5leGFjdCBzeW50YXggbXVzdCBhcHBlYXIgYXQgdGhlIGVuZCBvZiBhbiBpbmV4YWN0IG9iamVjdC5cIiksVW5leHBlY3RlZFJlc2VydmVkVHlwZTp0KGU9PntsZXR7cmVzZXJ2ZWRUeXBlOnN9PWU7cmV0dXJuXCJVbmV4cGVjdGVkIHJlc2VydmVkIHR5cGUgXCIuY29uY2F0KHMsXCIuXCIpfSksVW5leHBlY3RlZFJlc2VydmVkVW5kZXJzY29yZTp0KFwiYF9gIGlzIG9ubHkgYWxsb3dlZCBhcyBhIHR5cGUgYXJndW1lbnQgdG8gY2FsbCBvciBuZXcuXCIpLFVuZXhwZWN0ZWRTcGFjZUJldHdlZW5Nb2R1bG9DaGVja3M6dChcIlNwYWNlcyBiZXR3ZWVuIGAlYCBhbmQgYGNoZWNrc2AgYXJlIG5vdCBhbGxvd2VkIGhlcmUuXCIpLFVuZXhwZWN0ZWRTcHJlYWRUeXBlOnQoXCJTcHJlYWQgb3BlcmF0b3IgY2Fubm90IGFwcGVhciBpbiBjbGFzcyBvciBpbnRlcmZhY2UgZGVmaW5pdGlvbnMuXCIpLFVuZXhwZWN0ZWRTdWJ0cmFjdGlvbk9wZXJhbmQ6dCgnVW5leHBlY3RlZCB0b2tlbiwgZXhwZWN0ZWQgXCJudW1iZXJcIiBvciBcImJpZ2ludFwiLicpLFVuZXhwZWN0ZWRUb2tlbkFmdGVyVHlwZVBhcmFtZXRlcjp0KFwiRXhwZWN0ZWQgYW4gYXJyb3cgZnVuY3Rpb24gYWZ0ZXIgdGhpcyB0eXBlIHBhcmFtZXRlciBkZWNsYXJhdGlvbi5cIiksVW5leHBlY3RlZFR5cGVQYXJhbWV0ZXJCZWZvcmVBc3luY0Fycm93RnVuY3Rpb246dChcIlR5cGUgcGFyYW1ldGVycyBtdXN0IGNvbWUgYWZ0ZXIgdGhlIGFzeW5jIGtleXdvcmQsIGUuZy4gaW5zdGVhZCBvZiBgPFQ+IGFzeW5jICgpID0+IHt9YCwgdXNlIGBhc3luYyA8VD4oKSA9PiB7fWAuXCIpLFVuc3VwcG9ydGVkRGVjbGFyZUV4cG9ydEtpbmQ6dChlPT57bGV0e3Vuc3VwcG9ydGVkRXhwb3J0S2luZDpzLHN1Z2dlc3Rpb246cn09ZTtyZXR1cm5cImBkZWNsYXJlIGV4cG9ydCBcIi5jb25jYXQocyxcImAgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGBcIikuY29uY2F0KHIsXCJgIGluc3RlYWQuXCIpfSksVW5zdXBwb3J0ZWRTdGF0ZW1lbnRJbkRlY2xhcmVNb2R1bGU6dChcIk9ubHkgZGVjbGFyZXMgYW5kIHR5cGUgaW1wb3J0cyBhcmUgYWxsb3dlZCBpbnNpZGUgZGVjbGFyZSBtb2R1bGUuXCIpLFVudGVybWluYXRlZEZsb3dDb21tZW50OnQoXCJVbnRlcm1pbmF0ZWQgZmxvdy1jb21tZW50LlwiKX0pKTtmdW5jdGlvbiB3aCh0KXtyZXR1cm4gdC50eXBlPT09XCJEZWNsYXJlRXhwb3J0QWxsRGVjbGFyYXRpb25cInx8dC50eXBlPT09XCJEZWNsYXJlRXhwb3J0RGVjbGFyYXRpb25cIiYmKCF0LmRlY2xhcmF0aW9ufHx0LmRlY2xhcmF0aW9uLnR5cGUhPT1cIlR5cGVBbGlhc1wiJiZ0LmRlY2xhcmF0aW9uLnR5cGUhPT1cIkludGVyZmFjZURlY2xhcmF0aW9uXCIpfWZ1bmN0aW9uIGNzKHQpe3JldHVybiB0LmltcG9ydEtpbmQ9PT1cInR5cGVcInx8dC5pbXBvcnRLaW5kPT09XCJ0eXBlb2ZcIn1mdW5jdGlvbiBPcih0KXtyZXR1cm4gcGUodCkmJnQhPT05N312YXIgTmg9e2NvbnN0OlwiZGVjbGFyZSBleHBvcnQgdmFyXCIsbGV0OlwiZGVjbGFyZSBleHBvcnQgdmFyXCIsdHlwZTpcImV4cG9ydCB0eXBlXCIsaW50ZXJmYWNlOlwiZXhwb3J0IGludGVyZmFjZVwifTtmdW5jdGlvbiBJaCh0LGUpe2xldCBzPVtdLHI9W107Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspKGUodFtpXSxpLHQpP3M6cikucHVzaCh0W2ldKTtyZXR1cm5bcyxyXX12YXIga2g9L1xcKj9cXHMqQCgoPzpubyk/ZmxvdylcXGIvLERoPXQ9PmNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5mbG93UHJhZ21hPXZvaWQgMH1nZXRTY29wZUhhbmRsZXIoKXtyZXR1cm4gZmh9c2hvdWxkUGFyc2VUeXBlcygpe3JldHVybiB0aGlzLmdldFBsdWdpbk9wdGlvbihcImZsb3dcIixcImFsbFwiKXx8dGhpcy5mbG93UHJhZ21hPT09XCJmbG93XCJ9c2hvdWxkUGFyc2VFbnVtcygpe3JldHVybiEhdGhpcy5nZXRQbHVnaW5PcHRpb24oXCJmbG93XCIsXCJlbnVtc1wiKX1maW5pc2hUb2tlbihlLHMpe3JldHVybiBlIT09MTI5JiZlIT09MTMmJmUhPT0yOCYmdGhpcy5mbG93UHJhZ21hPT09dm9pZCAwJiYodGhpcy5mbG93UHJhZ21hPW51bGwpLHN1cGVyLmZpbmlzaFRva2VuKGUscyl9YWRkQ29tbWVudChlKXtpZih0aGlzLmZsb3dQcmFnbWE9PT12b2lkIDApe2xldCBzPWtoLmV4ZWMoZS52YWx1ZSk7aWYocylpZihzWzFdPT09XCJmbG93XCIpdGhpcy5mbG93UHJhZ21hPVwiZmxvd1wiO2Vsc2UgaWYoc1sxXT09PVwibm9mbG93XCIpdGhpcy5mbG93UHJhZ21hPVwibm9mbG93XCI7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGZsb3cgcHJhZ21hXCIpfXJldHVybiBzdXBlci5hZGRDb21tZW50KGUpfWZsb3dQYXJzZVR5cGVJbml0aWFsaXNlcihlKXtsZXQgcz10aGlzLnN0YXRlLmluVHlwZTt0aGlzLnN0YXRlLmluVHlwZT0hMCx0aGlzLmV4cGVjdChlfHwxNCk7bGV0IHI9dGhpcy5mbG93UGFyc2VUeXBlKCk7cmV0dXJuIHRoaXMuc3RhdGUuaW5UeXBlPXMscn1mbG93UGFyc2VQcmVkaWNhdGUoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpLHM9dGhpcy5zdGF0ZS5zdGFydExvYztyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5leHBlY3RDb250ZXh0dWFsKDEwNyksdGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnQ+cy5pbmRleCsxJiZ0aGlzLnJhaXNlKEkuVW5leHBlY3RlZFNwYWNlQmV0d2Vlbk1vZHVsb0NoZWNrcyx7YXQ6c30pLHRoaXMuZWF0KDEwKT8oZS52YWx1ZT10aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuZXhwZWN0KDExKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkRlY2xhcmVkUHJlZGljYXRlXCIpKTp0aGlzLmZpbmlzaE5vZGUoZSxcIkluZmVycmVkUHJlZGljYXRlXCIpfWZsb3dQYXJzZVR5cGVBbmRQcmVkaWNhdGVJbml0aWFsaXNlcigpe2xldCBlPXRoaXMuc3RhdGUuaW5UeXBlO3RoaXMuc3RhdGUuaW5UeXBlPSEwLHRoaXMuZXhwZWN0KDE0KTtsZXQgcz1udWxsLHI9bnVsbDtyZXR1cm4gdGhpcy5tYXRjaCg1NCk/KHRoaXMuc3RhdGUuaW5UeXBlPWUscj10aGlzLmZsb3dQYXJzZVByZWRpY2F0ZSgpKToocz10aGlzLmZsb3dQYXJzZVR5cGUoKSx0aGlzLnN0YXRlLmluVHlwZT1lLHRoaXMubWF0Y2goNTQpJiYocj10aGlzLmZsb3dQYXJzZVByZWRpY2F0ZSgpKSksW3Mscl19Zmxvd1BhcnNlRGVjbGFyZUNsYXNzKGUpe3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmZsb3dQYXJzZUludGVyZmFjZWlzaChlLCEwKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkRlY2xhcmVDbGFzc1wiKX1mbG93UGFyc2VEZWNsYXJlRnVuY3Rpb24oZSl7dGhpcy5uZXh0KCk7bGV0IHM9ZS5pZD10aGlzLnBhcnNlSWRlbnRpZmllcigpLHI9dGhpcy5zdGFydE5vZGUoKSxpPXRoaXMuc3RhcnROb2RlKCk7dGhpcy5tYXRjaCg0Nyk/ci50eXBlUGFyYW1ldGVycz10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpOnIudHlwZVBhcmFtZXRlcnM9bnVsbCx0aGlzLmV4cGVjdCgxMCk7bGV0IGE9dGhpcy5mbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbXMoKTtyZXR1cm4gci5wYXJhbXM9YS5wYXJhbXMsci5yZXN0PWEucmVzdCxyLnRoaXM9YS5fdGhpcyx0aGlzLmV4cGVjdCgxMSksW3IucmV0dXJuVHlwZSxlLnByZWRpY2F0ZV09dGhpcy5mbG93UGFyc2VUeXBlQW5kUHJlZGljYXRlSW5pdGlhbGlzZXIoKSxpLnR5cGVBbm5vdGF0aW9uPXRoaXMuZmluaXNoTm9kZShyLFwiRnVuY3Rpb25UeXBlQW5ub3RhdGlvblwiKSxzLnR5cGVBbm5vdGF0aW9uPXRoaXMuZmluaXNoTm9kZShpLFwiVHlwZUFubm90YXRpb25cIiksdGhpcy5yZXNldEVuZExvY2F0aW9uKHMpLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5zY29wZS5kZWNsYXJlTmFtZShlLmlkLm5hbWUsJG8sZS5pZC5sb2Muc3RhcnQpLHRoaXMuZmluaXNoTm9kZShlLFwiRGVjbGFyZUZ1bmN0aW9uXCIpfWZsb3dQYXJzZURlY2xhcmUoZSxzKXtpZih0aGlzLm1hdGNoKDgwKSlyZXR1cm4gdGhpcy5mbG93UGFyc2VEZWNsYXJlQ2xhc3MoZSk7aWYodGhpcy5tYXRjaCg2OCkpcmV0dXJuIHRoaXMuZmxvd1BhcnNlRGVjbGFyZUZ1bmN0aW9uKGUpO2lmKHRoaXMubWF0Y2goNzQpKXJldHVybiB0aGlzLmZsb3dQYXJzZURlY2xhcmVWYXJpYWJsZShlKTtpZih0aGlzLmVhdENvbnRleHR1YWwoMTIzKSlyZXR1cm4gdGhpcy5tYXRjaCgxNik/dGhpcy5mbG93UGFyc2VEZWNsYXJlTW9kdWxlRXhwb3J0cyhlKToocyYmdGhpcy5yYWlzZShJLk5lc3RlZERlY2xhcmVNb2R1bGUse2F0OnRoaXMuc3RhdGUubGFzdFRva1N0YXJ0TG9jfSksdGhpcy5mbG93UGFyc2VEZWNsYXJlTW9kdWxlKGUpKTtpZih0aGlzLmlzQ29udGV4dHVhbCgxMjYpKXJldHVybiB0aGlzLmZsb3dQYXJzZURlY2xhcmVUeXBlQWxpYXMoZSk7aWYodGhpcy5pc0NvbnRleHR1YWwoMTI3KSlyZXR1cm4gdGhpcy5mbG93UGFyc2VEZWNsYXJlT3BhcXVlVHlwZShlKTtpZih0aGlzLmlzQ29udGV4dHVhbCgxMjUpKXJldHVybiB0aGlzLmZsb3dQYXJzZURlY2xhcmVJbnRlcmZhY2UoZSk7aWYodGhpcy5tYXRjaCg4MikpcmV0dXJuIHRoaXMuZmxvd1BhcnNlRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uKGUscyk7dGhyb3cgdGhpcy51bmV4cGVjdGVkKCl9Zmxvd1BhcnNlRGVjbGFyZVZhcmlhYmxlKGUpe3JldHVybiB0aGlzLm5leHQoKSxlLmlkPXRoaXMuZmxvd1BhcnNlVHlwZUFubm90YXRhYmxlSWRlbnRpZmllcighMCksdGhpcy5zY29wZS5kZWNsYXJlTmFtZShlLmlkLm5hbWUscHQsZS5pZC5sb2Muc3RhcnQpLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKGUsXCJEZWNsYXJlVmFyaWFibGVcIil9Zmxvd1BhcnNlRGVjbGFyZU1vZHVsZShlKXt0aGlzLnNjb3BlLmVudGVyKE1lKSx0aGlzLm1hdGNoKDEyOSk/ZS5pZD10aGlzLnBhcnNlRXhwckF0b20oKTplLmlkPXRoaXMucGFyc2VJZGVudGlmaWVyKCk7bGV0IHM9ZS5ib2R5PXRoaXMuc3RhcnROb2RlKCkscj1zLmJvZHk9W107Zm9yKHRoaXMuZXhwZWN0KDUpOyF0aGlzLm1hdGNoKDgpOyl7bGV0IG49dGhpcy5zdGFydE5vZGUoKTt0aGlzLm1hdGNoKDgzKT8odGhpcy5uZXh0KCksIXRoaXMuaXNDb250ZXh0dWFsKDEyNikmJiF0aGlzLm1hdGNoKDg3KSYmdGhpcy5yYWlzZShJLkludmFsaWROb25UeXBlSW1wb3J0SW5EZWNsYXJlTW9kdWxlLHthdDp0aGlzLnN0YXRlLmxhc3RUb2tTdGFydExvY30pLHRoaXMucGFyc2VJbXBvcnQobikpOih0aGlzLmV4cGVjdENvbnRleHR1YWwoMTIxLEkuVW5zdXBwb3J0ZWRTdGF0ZW1lbnRJbkRlY2xhcmVNb2R1bGUpLG49dGhpcy5mbG93UGFyc2VEZWNsYXJlKG4sITApKSxyLnB1c2gobil9dGhpcy5zY29wZS5leGl0KCksdGhpcy5leHBlY3QoOCksdGhpcy5maW5pc2hOb2RlKHMsXCJCbG9ja1N0YXRlbWVudFwiKTtsZXQgaT1udWxsLGE9ITE7cmV0dXJuIHIuZm9yRWFjaChuPT57d2gobik/KGk9PT1cIkNvbW1vbkpTXCImJnRoaXMucmFpc2UoSS5BbWJpZ3VvdXNEZWNsYXJlTW9kdWxlS2luZCx7YXQ6bn0pLGk9XCJFU1wiKTpuLnR5cGU9PT1cIkRlY2xhcmVNb2R1bGVFeHBvcnRzXCImJihhJiZ0aGlzLnJhaXNlKEkuRHVwbGljYXRlRGVjbGFyZU1vZHVsZUV4cG9ydHMse2F0Om59KSxpPT09XCJFU1wiJiZ0aGlzLnJhaXNlKEkuQW1iaWd1b3VzRGVjbGFyZU1vZHVsZUtpbmQse2F0Om59KSxpPVwiQ29tbW9uSlNcIixhPSEwKX0pLGUua2luZD1pfHxcIkNvbW1vbkpTXCIsdGhpcy5maW5pc2hOb2RlKGUsXCJEZWNsYXJlTW9kdWxlXCIpfWZsb3dQYXJzZURlY2xhcmVFeHBvcnREZWNsYXJhdGlvbihlLHMpe2lmKHRoaXMuZXhwZWN0KDgyKSx0aGlzLmVhdCg2NSkpcmV0dXJuIHRoaXMubWF0Y2goNjgpfHx0aGlzLm1hdGNoKDgwKT9lLmRlY2xhcmF0aW9uPXRoaXMuZmxvd1BhcnNlRGVjbGFyZSh0aGlzLnN0YXJ0Tm9kZSgpKTooZS5kZWNsYXJhdGlvbj10aGlzLmZsb3dQYXJzZVR5cGUoKSx0aGlzLnNlbWljb2xvbigpKSxlLmRlZmF1bHQ9ITAsdGhpcy5maW5pc2hOb2RlKGUsXCJEZWNsYXJlRXhwb3J0RGVjbGFyYXRpb25cIik7aWYodGhpcy5tYXRjaCg3NSl8fHRoaXMuaXNMZXQoKXx8KHRoaXMuaXNDb250ZXh0dWFsKDEyNil8fHRoaXMuaXNDb250ZXh0dWFsKDEyNSkpJiYhcyl7bGV0IHI9dGhpcy5zdGF0ZS52YWx1ZTt0aHJvdyB0aGlzLnJhaXNlKEkuVW5zdXBwb3J0ZWREZWNsYXJlRXhwb3J0S2luZCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvYyx1bnN1cHBvcnRlZEV4cG9ydEtpbmQ6cixzdWdnZXN0aW9uOk5oW3JdfSl9aWYodGhpcy5tYXRjaCg3NCl8fHRoaXMubWF0Y2goNjgpfHx0aGlzLm1hdGNoKDgwKXx8dGhpcy5pc0NvbnRleHR1YWwoMTI3KSlyZXR1cm4gZS5kZWNsYXJhdGlvbj10aGlzLmZsb3dQYXJzZURlY2xhcmUodGhpcy5zdGFydE5vZGUoKSksZS5kZWZhdWx0PSExLHRoaXMuZmluaXNoTm9kZShlLFwiRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uXCIpO2lmKHRoaXMubWF0Y2goNTUpfHx0aGlzLm1hdGNoKDUpfHx0aGlzLmlzQ29udGV4dHVhbCgxMjUpfHx0aGlzLmlzQ29udGV4dHVhbCgxMjYpfHx0aGlzLmlzQ29udGV4dHVhbCgxMjcpKXJldHVybiBlPXRoaXMucGFyc2VFeHBvcnQoZSksZS50eXBlPT09XCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCImJihlLnR5cGU9XCJFeHBvcnREZWNsYXJhdGlvblwiLGUuZGVmYXVsdD0hMSxkZWxldGUgZS5leHBvcnRLaW5kKSxlLnR5cGU9XCJEZWNsYXJlXCIrZS50eXBlLGU7dGhyb3cgdGhpcy51bmV4cGVjdGVkKCl9Zmxvd1BhcnNlRGVjbGFyZU1vZHVsZUV4cG9ydHMoZSl7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZXhwZWN0Q29udGV4dHVhbCgxMDgpLGUudHlwZUFubm90YXRpb249dGhpcy5mbG93UGFyc2VUeXBlQW5ub3RhdGlvbigpLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKGUsXCJEZWNsYXJlTW9kdWxlRXhwb3J0c1wiKX1mbG93UGFyc2VEZWNsYXJlVHlwZUFsaWFzKGUpe3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmZsb3dQYXJzZVR5cGVBbGlhcyhlKSxlLnR5cGU9XCJEZWNsYXJlVHlwZUFsaWFzXCIsZX1mbG93UGFyc2VEZWNsYXJlT3BhcXVlVHlwZShlKXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5mbG93UGFyc2VPcGFxdWVUeXBlKGUsITApLGUudHlwZT1cIkRlY2xhcmVPcGFxdWVUeXBlXCIsZX1mbG93UGFyc2VEZWNsYXJlSW50ZXJmYWNlKGUpe3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmZsb3dQYXJzZUludGVyZmFjZWlzaChlKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkRlY2xhcmVJbnRlcmZhY2VcIil9Zmxvd1BhcnNlSW50ZXJmYWNlaXNoKGUpe2xldCBzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMTtpZihlLmlkPXRoaXMuZmxvd1BhcnNlUmVzdHJpY3RlZElkZW50aWZpZXIoIXMsITApLHRoaXMuc2NvcGUuZGVjbGFyZU5hbWUoZS5pZC5uYW1lLHM/VHI6eGUsZS5pZC5sb2Muc3RhcnQpLHRoaXMubWF0Y2goNDcpP2UudHlwZVBhcmFtZXRlcnM9dGhpcy5mbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKTplLnR5cGVQYXJhbWV0ZXJzPW51bGwsZS5leHRlbmRzPVtdLGUuaW1wbGVtZW50cz1bXSxlLm1peGlucz1bXSx0aGlzLmVhdCg4MSkpZG8gZS5leHRlbmRzLnB1c2godGhpcy5mbG93UGFyc2VJbnRlcmZhY2VFeHRlbmRzKCkpO3doaWxlKCFzJiZ0aGlzLmVhdCgxMikpO2lmKHRoaXMuaXNDb250ZXh0dWFsKDExNCkpe3RoaXMubmV4dCgpO2RvIGUubWl4aW5zLnB1c2godGhpcy5mbG93UGFyc2VJbnRlcmZhY2VFeHRlbmRzKCkpO3doaWxlKHRoaXMuZWF0KDEyKSl9aWYodGhpcy5pc0NvbnRleHR1YWwoMTEwKSl7dGhpcy5uZXh0KCk7ZG8gZS5pbXBsZW1lbnRzLnB1c2godGhpcy5mbG93UGFyc2VJbnRlcmZhY2VFeHRlbmRzKCkpO3doaWxlKHRoaXMuZWF0KDEyKSl9ZS5ib2R5PXRoaXMuZmxvd1BhcnNlT2JqZWN0VHlwZSh7YWxsb3dTdGF0aWM6cyxhbGxvd0V4YWN0OiExLGFsbG93U3ByZWFkOiExLGFsbG93UHJvdG86cyxhbGxvd0luZXhhY3Q6ITF9KX1mbG93UGFyc2VJbnRlcmZhY2VFeHRlbmRzKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gZS5pZD10aGlzLmZsb3dQYXJzZVF1YWxpZmllZFR5cGVJZGVudGlmaWVyKCksdGhpcy5tYXRjaCg0Nyk/ZS50eXBlUGFyYW1ldGVycz10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uKCk6ZS50eXBlUGFyYW1ldGVycz1udWxsLHRoaXMuZmluaXNoTm9kZShlLFwiSW50ZXJmYWNlRXh0ZW5kc1wiKX1mbG93UGFyc2VJbnRlcmZhY2UoZSl7cmV0dXJuIHRoaXMuZmxvd1BhcnNlSW50ZXJmYWNlaXNoKGUpLHRoaXMuZmluaXNoTm9kZShlLFwiSW50ZXJmYWNlRGVjbGFyYXRpb25cIil9Y2hlY2tOb3RVbmRlcnNjb3JlKGUpe2U9PT1cIl9cIiYmdGhpcy5yYWlzZShJLlVuZXhwZWN0ZWRSZXNlcnZlZFVuZGVyc2NvcmUse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KX1jaGVja1Jlc2VydmVkVHlwZShlLHMscil7IVNoLmhhcyhlKXx8dGhpcy5yYWlzZShyP0kuQXNzaWduUmVzZXJ2ZWRUeXBlOkkuVW5leHBlY3RlZFJlc2VydmVkVHlwZSx7YXQ6cyxyZXNlcnZlZFR5cGU6ZX0pfWZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKGUscyl7cmV0dXJuIHRoaXMuY2hlY2tSZXNlcnZlZFR5cGUodGhpcy5zdGF0ZS52YWx1ZSx0aGlzLnN0YXRlLnN0YXJ0TG9jLHMpLHRoaXMucGFyc2VJZGVudGlmaWVyKGUpfWZsb3dQYXJzZVR5cGVBbGlhcyhlKXtyZXR1cm4gZS5pZD10aGlzLmZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKCExLCEwKSx0aGlzLnNjb3BlLmRlY2xhcmVOYW1lKGUuaWQubmFtZSx4ZSxlLmlkLmxvYy5zdGFydCksdGhpcy5tYXRjaCg0Nyk/ZS50eXBlUGFyYW1ldGVycz10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpOmUudHlwZVBhcmFtZXRlcnM9bnVsbCxlLnJpZ2h0PXRoaXMuZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKDI5KSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiVHlwZUFsaWFzXCIpfWZsb3dQYXJzZU9wYXF1ZVR5cGUoZSxzKXtyZXR1cm4gdGhpcy5leHBlY3RDb250ZXh0dWFsKDEyNiksZS5pZD10aGlzLmZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKCEwLCEwKSx0aGlzLnNjb3BlLmRlY2xhcmVOYW1lKGUuaWQubmFtZSx4ZSxlLmlkLmxvYy5zdGFydCksdGhpcy5tYXRjaCg0Nyk/ZS50eXBlUGFyYW1ldGVycz10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpOmUudHlwZVBhcmFtZXRlcnM9bnVsbCxlLnN1cGVydHlwZT1udWxsLHRoaXMubWF0Y2goMTQpJiYoZS5zdXBlcnR5cGU9dGhpcy5mbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoMTQpKSxlLmltcGx0eXBlPW51bGwsc3x8KGUuaW1wbHR5cGU9dGhpcy5mbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoMjkpKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiT3BhcXVlVHlwZVwiKX1mbG93UGFyc2VUeXBlUGFyYW1ldGVyKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOiExLHM9dGhpcy5zdGF0ZS5zdGFydExvYyxyPXRoaXMuc3RhcnROb2RlKCksaT10aGlzLmZsb3dQYXJzZVZhcmlhbmNlKCksYT10aGlzLmZsb3dQYXJzZVR5cGVBbm5vdGF0YWJsZUlkZW50aWZpZXIoKTtyZXR1cm4gci5uYW1lPWEubmFtZSxyLnZhcmlhbmNlPWksci5ib3VuZD1hLnR5cGVBbm5vdGF0aW9uLHRoaXMubWF0Y2goMjkpPyh0aGlzLmVhdCgyOSksci5kZWZhdWx0PXRoaXMuZmxvd1BhcnNlVHlwZSgpKTplJiZ0aGlzLnJhaXNlKEkuTWlzc2luZ1R5cGVQYXJhbURlZmF1bHQse2F0OnN9KSx0aGlzLmZpbmlzaE5vZGUocixcIlR5cGVQYXJhbWV0ZXJcIil9Zmxvd1BhcnNlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKCl7bGV0IGU9dGhpcy5zdGF0ZS5pblR5cGUscz10aGlzLnN0YXJ0Tm9kZSgpO3MucGFyYW1zPVtdLHRoaXMuc3RhdGUuaW5UeXBlPSEwLHRoaXMubWF0Y2goNDcpfHx0aGlzLm1hdGNoKDEzOCk/dGhpcy5uZXh0KCk6dGhpcy51bmV4cGVjdGVkKCk7bGV0IHI9ITE7ZG97bGV0IGk9dGhpcy5mbG93UGFyc2VUeXBlUGFyYW1ldGVyKHIpO3MucGFyYW1zLnB1c2goaSksaS5kZWZhdWx0JiYocj0hMCksdGhpcy5tYXRjaCg0OCl8fHRoaXMuZXhwZWN0KDEyKX13aGlsZSghdGhpcy5tYXRjaCg0OCkpO3JldHVybiB0aGlzLmV4cGVjdCg0OCksdGhpcy5zdGF0ZS5pblR5cGU9ZSx0aGlzLmZpbmlzaE5vZGUocyxcIlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvblwiKX1mbG93UGFyc2VUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbigpe2xldCBlPXRoaXMuc3RhcnROb2RlKCkscz10aGlzLnN0YXRlLmluVHlwZTtlLnBhcmFtcz1bXSx0aGlzLnN0YXRlLmluVHlwZT0hMCx0aGlzLmV4cGVjdCg0Nyk7bGV0IHI9dGhpcy5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGU7Zm9yKHRoaXMuc3RhdGUubm9Bbm9uRnVuY3Rpb25UeXBlPSExOyF0aGlzLm1hdGNoKDQ4KTspZS5wYXJhbXMucHVzaCh0aGlzLmZsb3dQYXJzZVR5cGUoKSksdGhpcy5tYXRjaCg0OCl8fHRoaXMuZXhwZWN0KDEyKTtyZXR1cm4gdGhpcy5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGU9cix0aGlzLmV4cGVjdCg0OCksdGhpcy5zdGF0ZS5pblR5cGU9cyx0aGlzLmZpbmlzaE5vZGUoZSxcIlR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uXCIpfWZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uQ2FsbE9yTmV3KCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKSxzPXRoaXMuc3RhdGUuaW5UeXBlO2ZvcihlLnBhcmFtcz1bXSx0aGlzLnN0YXRlLmluVHlwZT0hMCx0aGlzLmV4cGVjdCg0Nyk7IXRoaXMubWF0Y2goNDgpOyllLnBhcmFtcy5wdXNoKHRoaXMuZmxvd1BhcnNlVHlwZU9ySW1wbGljaXRJbnN0YW50aWF0aW9uKCkpLHRoaXMubWF0Y2goNDgpfHx0aGlzLmV4cGVjdCgxMik7cmV0dXJuIHRoaXMuZXhwZWN0KDQ4KSx0aGlzLnN0YXRlLmluVHlwZT1zLHRoaXMuZmluaXNoTm9kZShlLFwiVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb25cIil9Zmxvd1BhcnNlSW50ZXJmYWNlVHlwZSgpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7aWYodGhpcy5leHBlY3RDb250ZXh0dWFsKDEyNSksZS5leHRlbmRzPVtdLHRoaXMuZWF0KDgxKSlkbyBlLmV4dGVuZHMucHVzaCh0aGlzLmZsb3dQYXJzZUludGVyZmFjZUV4dGVuZHMoKSk7d2hpbGUodGhpcy5lYXQoMTIpKTtyZXR1cm4gZS5ib2R5PXRoaXMuZmxvd1BhcnNlT2JqZWN0VHlwZSh7YWxsb3dTdGF0aWM6ITEsYWxsb3dFeGFjdDohMSxhbGxvd1NwcmVhZDohMSxhbGxvd1Byb3RvOiExLGFsbG93SW5leGFjdDohMX0pLHRoaXMuZmluaXNoTm9kZShlLFwiSW50ZXJmYWNlVHlwZUFubm90YXRpb25cIil9Zmxvd1BhcnNlT2JqZWN0UHJvcGVydHlLZXkoKXtyZXR1cm4gdGhpcy5tYXRjaCgxMzApfHx0aGlzLm1hdGNoKDEyOSk/dGhpcy5wYXJzZUV4cHJBdG9tKCk6dGhpcy5wYXJzZUlkZW50aWZpZXIoITApfWZsb3dQYXJzZU9iamVjdFR5cGVJbmRleGVyKGUscyxyKXtyZXR1cm4gZS5zdGF0aWM9cyx0aGlzLmxvb2thaGVhZCgpLnR5cGU9PT0xND8oZS5pZD10aGlzLmZsb3dQYXJzZU9iamVjdFByb3BlcnR5S2V5KCksZS5rZXk9dGhpcy5mbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoKSk6KGUuaWQ9bnVsbCxlLmtleT10aGlzLmZsb3dQYXJzZVR5cGUoKSksdGhpcy5leHBlY3QoMyksZS52YWx1ZT10aGlzLmZsb3dQYXJzZVR5cGVJbml0aWFsaXNlcigpLGUudmFyaWFuY2U9cix0aGlzLmZpbmlzaE5vZGUoZSxcIk9iamVjdFR5cGVJbmRleGVyXCIpfWZsb3dQYXJzZU9iamVjdFR5cGVJbnRlcm5hbFNsb3QoZSxzKXtyZXR1cm4gZS5zdGF0aWM9cyxlLmlkPXRoaXMuZmxvd1BhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSx0aGlzLmV4cGVjdCgzKSx0aGlzLmV4cGVjdCgzKSx0aGlzLm1hdGNoKDQ3KXx8dGhpcy5tYXRjaCgxMCk/KGUubWV0aG9kPSEwLGUub3B0aW9uYWw9ITEsZS52YWx1ZT10aGlzLmZsb3dQYXJzZU9iamVjdFR5cGVNZXRob2Rpc2godGhpcy5zdGFydE5vZGVBdChlLnN0YXJ0LGUubG9jLnN0YXJ0KSkpOihlLm1ldGhvZD0hMSx0aGlzLmVhdCgxNykmJihlLm9wdGlvbmFsPSEwKSxlLnZhbHVlPXRoaXMuZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKCkpLHRoaXMuZmluaXNoTm9kZShlLFwiT2JqZWN0VHlwZUludGVybmFsU2xvdFwiKX1mbG93UGFyc2VPYmplY3RUeXBlTWV0aG9kaXNoKGUpe2ZvcihlLnBhcmFtcz1bXSxlLnJlc3Q9bnVsbCxlLnR5cGVQYXJhbWV0ZXJzPW51bGwsZS50aGlzPW51bGwsdGhpcy5tYXRjaCg0NykmJihlLnR5cGVQYXJhbWV0ZXJzPXRoaXMuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpLHRoaXMuZXhwZWN0KDEwKSx0aGlzLm1hdGNoKDc4KSYmKGUudGhpcz10aGlzLmZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtKCEwKSxlLnRoaXMubmFtZT1udWxsLHRoaXMubWF0Y2goMTEpfHx0aGlzLmV4cGVjdCgxMikpOyF0aGlzLm1hdGNoKDExKSYmIXRoaXMubWF0Y2goMjEpOyllLnBhcmFtcy5wdXNoKHRoaXMuZmxvd1BhcnNlRnVuY3Rpb25UeXBlUGFyYW0oITEpKSx0aGlzLm1hdGNoKDExKXx8dGhpcy5leHBlY3QoMTIpO3JldHVybiB0aGlzLmVhdCgyMSkmJihlLnJlc3Q9dGhpcy5mbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbSghMSkpLHRoaXMuZXhwZWN0KDExKSxlLnJldHVyblR5cGU9dGhpcy5mbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkZ1bmN0aW9uVHlwZUFubm90YXRpb25cIil9Zmxvd1BhcnNlT2JqZWN0VHlwZUNhbGxQcm9wZXJ0eShlLHMpe2xldCByPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIGUuc3RhdGljPXMsZS52YWx1ZT10aGlzLmZsb3dQYXJzZU9iamVjdFR5cGVNZXRob2Rpc2gociksdGhpcy5maW5pc2hOb2RlKGUsXCJPYmplY3RUeXBlQ2FsbFByb3BlcnR5XCIpfWZsb3dQYXJzZU9iamVjdFR5cGUoZSl7bGV0e2FsbG93U3RhdGljOnMsYWxsb3dFeGFjdDpyLGFsbG93U3ByZWFkOmksYWxsb3dQcm90bzphLGFsbG93SW5leGFjdDpufT1lLG89dGhpcy5zdGF0ZS5pblR5cGU7dGhpcy5zdGF0ZS5pblR5cGU9ITA7bGV0IGM9dGhpcy5zdGFydE5vZGUoKTtjLmNhbGxQcm9wZXJ0aWVzPVtdLGMucHJvcGVydGllcz1bXSxjLmluZGV4ZXJzPVtdLGMuaW50ZXJuYWxTbG90cz1bXTtsZXQgZix5LFA9ITE7Zm9yKHImJnRoaXMubWF0Y2goNik/KHRoaXMuZXhwZWN0KDYpLGY9OSx5PSEwKToodGhpcy5leHBlY3QoNSksZj04LHk9ITEpLGMuZXhhY3Q9eTshdGhpcy5tYXRjaChmKTspe2xldCBOPSExLEI9bnVsbCxfPW51bGwsUT10aGlzLnN0YXJ0Tm9kZSgpO2lmKGEmJnRoaXMuaXNDb250ZXh0dWFsKDExNSkpe2xldCBuZT10aGlzLmxvb2thaGVhZCgpO25lLnR5cGUhPT0xNCYmbmUudHlwZSE9PTE3JiYodGhpcy5uZXh0KCksQj10aGlzLnN0YXRlLnN0YXJ0TG9jLHM9ITEpfWlmKHMmJnRoaXMuaXNDb250ZXh0dWFsKDEwNCkpe2xldCBuZT10aGlzLmxvb2thaGVhZCgpO25lLnR5cGUhPT0xNCYmbmUudHlwZSE9PTE3JiYodGhpcy5uZXh0KCksTj0hMCl9bGV0IHJlPXRoaXMuZmxvd1BhcnNlVmFyaWFuY2UoKTtpZih0aGlzLmVhdCgwKSlCIT1udWxsJiZ0aGlzLnVuZXhwZWN0ZWQoQiksdGhpcy5lYXQoMCk/KHJlJiZ0aGlzLnVuZXhwZWN0ZWQocmUubG9jLnN0YXJ0KSxjLmludGVybmFsU2xvdHMucHVzaCh0aGlzLmZsb3dQYXJzZU9iamVjdFR5cGVJbnRlcm5hbFNsb3QoUSxOKSkpOmMuaW5kZXhlcnMucHVzaCh0aGlzLmZsb3dQYXJzZU9iamVjdFR5cGVJbmRleGVyKFEsTixyZSkpO2Vsc2UgaWYodGhpcy5tYXRjaCgxMCl8fHRoaXMubWF0Y2goNDcpKUIhPW51bGwmJnRoaXMudW5leHBlY3RlZChCKSxyZSYmdGhpcy51bmV4cGVjdGVkKHJlLmxvYy5zdGFydCksYy5jYWxsUHJvcGVydGllcy5wdXNoKHRoaXMuZmxvd1BhcnNlT2JqZWN0VHlwZUNhbGxQcm9wZXJ0eShRLE4pKTtlbHNle2xldCBuZT1cImluaXRcIjtpZih0aGlzLmlzQ29udGV4dHVhbCg5OCl8fHRoaXMuaXNDb250ZXh0dWFsKDEwMykpe2xldCBsZT10aGlzLmxvb2thaGVhZCgpO2hyKGxlLnR5cGUpJiYobmU9dGhpcy5zdGF0ZS52YWx1ZSx0aGlzLm5leHQoKSl9bGV0ICRlPXRoaXMuZmxvd1BhcnNlT2JqZWN0VHlwZVByb3BlcnR5KFEsTixCLHJlLG5lLGksbiE9bnVsbD9uOiF5KTskZT09PW51bGw/KFA9ITAsXz10aGlzLnN0YXRlLmxhc3RUb2tTdGFydExvYyk6Yy5wcm9wZXJ0aWVzLnB1c2goJGUpfXRoaXMuZmxvd09iamVjdFR5cGVTZW1pY29sb24oKSxfJiYhdGhpcy5tYXRjaCg4KSYmIXRoaXMubWF0Y2goOSkmJnRoaXMucmFpc2UoSS5VbmV4cGVjdGVkRXhwbGljaXRJbmV4YWN0SW5PYmplY3Qse2F0Ol99KX10aGlzLmV4cGVjdChmKSxpJiYoYy5pbmV4YWN0PVApO2xldCB2PXRoaXMuZmluaXNoTm9kZShjLFwiT2JqZWN0VHlwZUFubm90YXRpb25cIik7cmV0dXJuIHRoaXMuc3RhdGUuaW5UeXBlPW8sdn1mbG93UGFyc2VPYmplY3RUeXBlUHJvcGVydHkoZSxzLHIsaSxhLG4sbyl7aWYodGhpcy5lYXQoMjEpKXJldHVybiB0aGlzLm1hdGNoKDEyKXx8dGhpcy5tYXRjaCgxMyl8fHRoaXMubWF0Y2goOCl8fHRoaXMubWF0Y2goOSk/KG4/b3x8dGhpcy5yYWlzZShJLkluZXhhY3RJbnNpZGVFeGFjdCx7YXQ6dGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2N9KTp0aGlzLnJhaXNlKEkuSW5leGFjdEluc2lkZU5vbk9iamVjdCx7YXQ6dGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2N9KSxpJiZ0aGlzLnJhaXNlKEkuSW5leGFjdFZhcmlhbmNlLHthdDppfSksbnVsbCk6KG58fHRoaXMucmFpc2UoSS5VbmV4cGVjdGVkU3ByZWFkVHlwZSx7YXQ6dGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2N9KSxyIT1udWxsJiZ0aGlzLnVuZXhwZWN0ZWQociksaSYmdGhpcy5yYWlzZShJLlNwcmVhZFZhcmlhbmNlLHthdDppfSksZS5hcmd1bWVudD10aGlzLmZsb3dQYXJzZVR5cGUoKSx0aGlzLmZpbmlzaE5vZGUoZSxcIk9iamVjdFR5cGVTcHJlYWRQcm9wZXJ0eVwiKSk7e2Uua2V5PXRoaXMuZmxvd1BhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSxlLnN0YXRpYz1zLGUucHJvdG89ciE9bnVsbCxlLmtpbmQ9YTtsZXQgYz0hMTtyZXR1cm4gdGhpcy5tYXRjaCg0Nyl8fHRoaXMubWF0Y2goMTApPyhlLm1ldGhvZD0hMCxyIT1udWxsJiZ0aGlzLnVuZXhwZWN0ZWQociksaSYmdGhpcy51bmV4cGVjdGVkKGkubG9jLnN0YXJ0KSxlLnZhbHVlPXRoaXMuZmxvd1BhcnNlT2JqZWN0VHlwZU1ldGhvZGlzaCh0aGlzLnN0YXJ0Tm9kZUF0KGUuc3RhcnQsZS5sb2Muc3RhcnQpKSwoYT09PVwiZ2V0XCJ8fGE9PT1cInNldFwiKSYmdGhpcy5mbG93Q2hlY2tHZXR0ZXJTZXR0ZXJQYXJhbXMoZSksIW4mJmUua2V5Lm5hbWU9PT1cImNvbnN0cnVjdG9yXCImJmUudmFsdWUudGhpcyYmdGhpcy5yYWlzZShJLlRoaXNQYXJhbUJhbm5lZEluQ29uc3RydWN0b3Ise2F0OmUudmFsdWUudGhpc30pKTooYSE9PVwiaW5pdFwiJiZ0aGlzLnVuZXhwZWN0ZWQoKSxlLm1ldGhvZD0hMSx0aGlzLmVhdCgxNykmJihjPSEwKSxlLnZhbHVlPXRoaXMuZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKCksZS52YXJpYW5jZT1pKSxlLm9wdGlvbmFsPWMsdGhpcy5maW5pc2hOb2RlKGUsXCJPYmplY3RUeXBlUHJvcGVydHlcIil9fWZsb3dDaGVja0dldHRlclNldHRlclBhcmFtcyhlKXtsZXQgcz1lLmtpbmQ9PT1cImdldFwiPzA6MSxyPWUudmFsdWUucGFyYW1zLmxlbmd0aCsoZS52YWx1ZS5yZXN0PzE6MCk7ZS52YWx1ZS50aGlzJiZ0aGlzLnJhaXNlKGUua2luZD09PVwiZ2V0XCI/SS5HZXR0ZXJNYXlOb3RIYXZlVGhpc1BhcmFtOkkuU2V0dGVyTWF5Tm90SGF2ZVRoaXNQYXJhbSx7YXQ6ZS52YWx1ZS50aGlzfSksciE9PXMmJnRoaXMucmFpc2UoZS5raW5kPT09XCJnZXRcIj91LkJhZEdldHRlckFyaXR5OnUuQmFkU2V0dGVyQXJpdHkse2F0OmV9KSxlLmtpbmQ9PT1cInNldFwiJiZlLnZhbHVlLnJlc3QmJnRoaXMucmFpc2UodS5CYWRTZXR0ZXJSZXN0UGFyYW1ldGVyLHthdDplfSl9Zmxvd09iamVjdFR5cGVTZW1pY29sb24oKXshdGhpcy5lYXQoMTMpJiYhdGhpcy5lYXQoMTIpJiYhdGhpcy5tYXRjaCg4KSYmIXRoaXMubWF0Y2goOSkmJnRoaXMudW5leHBlY3RlZCgpfWZsb3dQYXJzZVF1YWxpZmllZFR5cGVJZGVudGlmaWVyKGUscyxyKXtlPWV8fHRoaXMuc3RhdGUuc3RhcnQscz1zfHx0aGlzLnN0YXRlLnN0YXJ0TG9jO2xldCBpPXJ8fHRoaXMuZmxvd1BhcnNlUmVzdHJpY3RlZElkZW50aWZpZXIoITApO2Zvcig7dGhpcy5lYXQoMTYpOyl7bGV0IGE9dGhpcy5zdGFydE5vZGVBdChlLHMpO2EucXVhbGlmaWNhdGlvbj1pLGEuaWQ9dGhpcy5mbG93UGFyc2VSZXN0cmljdGVkSWRlbnRpZmllcighMCksaT10aGlzLmZpbmlzaE5vZGUoYSxcIlF1YWxpZmllZFR5cGVJZGVudGlmaWVyXCIpfXJldHVybiBpfWZsb3dQYXJzZUdlbmVyaWNUeXBlKGUscyxyKXtsZXQgaT10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7cmV0dXJuIGkudHlwZVBhcmFtZXRlcnM9bnVsbCxpLmlkPXRoaXMuZmxvd1BhcnNlUXVhbGlmaWVkVHlwZUlkZW50aWZpZXIoZSxzLHIpLHRoaXMubWF0Y2goNDcpJiYoaS50eXBlUGFyYW1ldGVycz10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uKCkpLHRoaXMuZmluaXNoTm9kZShpLFwiR2VuZXJpY1R5cGVBbm5vdGF0aW9uXCIpfWZsb3dQYXJzZVR5cGVvZlR5cGUoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLmV4cGVjdCg4NyksZS5hcmd1bWVudD10aGlzLmZsb3dQYXJzZVByaW1hcnlUeXBlKCksdGhpcy5maW5pc2hOb2RlKGUsXCJUeXBlb2ZUeXBlQW5ub3RhdGlvblwiKX1mbG93UGFyc2VUdXBsZVR5cGUoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO2ZvcihlLnR5cGVzPVtdLHRoaXMuZXhwZWN0KDApO3RoaXMuc3RhdGUucG9zPHRoaXMubGVuZ3RoJiYhdGhpcy5tYXRjaCgzKSYmKGUudHlwZXMucHVzaCh0aGlzLmZsb3dQYXJzZVR5cGUoKSksIXRoaXMubWF0Y2goMykpOyl0aGlzLmV4cGVjdCgxMik7cmV0dXJuIHRoaXMuZXhwZWN0KDMpLHRoaXMuZmluaXNoTm9kZShlLFwiVHVwbGVUeXBlQW5ub3RhdGlvblwiKX1mbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbShlKXtsZXQgcz1udWxsLHI9ITEsaT1udWxsLGE9dGhpcy5zdGFydE5vZGUoKSxuPXRoaXMubG9va2FoZWFkKCksbz10aGlzLnN0YXRlLnR5cGU9PT03ODtyZXR1cm4gbi50eXBlPT09MTR8fG4udHlwZT09PTE3PyhvJiYhZSYmdGhpcy5yYWlzZShJLlRoaXNQYXJhbU11c3RCZUZpcnN0LHthdDphfSkscz10aGlzLnBhcnNlSWRlbnRpZmllcihvKSx0aGlzLmVhdCgxNykmJihyPSEwLG8mJnRoaXMucmFpc2UoSS5UaGlzUGFyYW1NYXlOb3RCZU9wdGlvbmFsLHthdDphfSkpLGk9dGhpcy5mbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoKSk6aT10aGlzLmZsb3dQYXJzZVR5cGUoKSxhLm5hbWU9cyxhLm9wdGlvbmFsPXIsYS50eXBlQW5ub3RhdGlvbj1pLHRoaXMuZmluaXNoTm9kZShhLFwiRnVuY3Rpb25UeXBlUGFyYW1cIil9cmVpbnRlcnByZXRUeXBlQXNGdW5jdGlvblR5cGVQYXJhbShlKXtsZXQgcz10aGlzLnN0YXJ0Tm9kZUF0KGUuc3RhcnQsZS5sb2Muc3RhcnQpO3JldHVybiBzLm5hbWU9bnVsbCxzLm9wdGlvbmFsPSExLHMudHlwZUFubm90YXRpb249ZSx0aGlzLmZpbmlzaE5vZGUocyxcIkZ1bmN0aW9uVHlwZVBhcmFtXCIpfWZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtcygpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpbXSxzPW51bGwscj1udWxsO2Zvcih0aGlzLm1hdGNoKDc4KSYmKHI9dGhpcy5mbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbSghMCksci5uYW1lPW51bGwsdGhpcy5tYXRjaCgxMSl8fHRoaXMuZXhwZWN0KDEyKSk7IXRoaXMubWF0Y2goMTEpJiYhdGhpcy5tYXRjaCgyMSk7KWUucHVzaCh0aGlzLmZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtKCExKSksdGhpcy5tYXRjaCgxMSl8fHRoaXMuZXhwZWN0KDEyKTtyZXR1cm4gdGhpcy5lYXQoMjEpJiYocz10aGlzLmZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtKCExKSkse3BhcmFtczplLHJlc3Q6cyxfdGhpczpyfX1mbG93SWRlbnRUb1R5cGVBbm5vdGF0aW9uKGUscyxyLGkpe3N3aXRjaChpLm5hbWUpe2Nhc2VcImFueVwiOnJldHVybiB0aGlzLmZpbmlzaE5vZGUocixcIkFueVR5cGVBbm5vdGF0aW9uXCIpO2Nhc2VcImJvb2xcIjpjYXNlXCJib29sZWFuXCI6cmV0dXJuIHRoaXMuZmluaXNoTm9kZShyLFwiQm9vbGVhblR5cGVBbm5vdGF0aW9uXCIpO2Nhc2VcIm1peGVkXCI6cmV0dXJuIHRoaXMuZmluaXNoTm9kZShyLFwiTWl4ZWRUeXBlQW5ub3RhdGlvblwiKTtjYXNlXCJlbXB0eVwiOnJldHVybiB0aGlzLmZpbmlzaE5vZGUocixcIkVtcHR5VHlwZUFubm90YXRpb25cIik7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIHRoaXMuZmluaXNoTm9kZShyLFwiTnVtYmVyVHlwZUFubm90YXRpb25cIik7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHRoaXMuZmluaXNoTm9kZShyLFwiU3RyaW5nVHlwZUFubm90YXRpb25cIik7Y2FzZVwic3ltYm9sXCI6cmV0dXJuIHRoaXMuZmluaXNoTm9kZShyLFwiU3ltYm9sVHlwZUFubm90YXRpb25cIik7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jaGVja05vdFVuZGVyc2NvcmUoaS5uYW1lKSx0aGlzLmZsb3dQYXJzZUdlbmVyaWNUeXBlKGUscyxpKX19Zmxvd1BhcnNlUHJpbWFyeVR5cGUoKXtsZXQgZT10aGlzLnN0YXRlLnN0YXJ0LHM9dGhpcy5zdGF0ZS5zdGFydExvYyxyPXRoaXMuc3RhcnROb2RlKCksaSxhLG49ITEsbz10aGlzLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZTtzd2l0Y2godGhpcy5zdGF0ZS50eXBlKXtjYXNlIDU6cmV0dXJuIHRoaXMuZmxvd1BhcnNlT2JqZWN0VHlwZSh7YWxsb3dTdGF0aWM6ITEsYWxsb3dFeGFjdDohMSxhbGxvd1NwcmVhZDohMCxhbGxvd1Byb3RvOiExLGFsbG93SW5leGFjdDohMH0pO2Nhc2UgNjpyZXR1cm4gdGhpcy5mbG93UGFyc2VPYmplY3RUeXBlKHthbGxvd1N0YXRpYzohMSxhbGxvd0V4YWN0OiEwLGFsbG93U3ByZWFkOiEwLGFsbG93UHJvdG86ITEsYWxsb3dJbmV4YWN0OiExfSk7Y2FzZSAwOnJldHVybiB0aGlzLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZT0hMSxhPXRoaXMuZmxvd1BhcnNlVHVwbGVUeXBlKCksdGhpcy5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGU9byxhO2Nhc2UgNDc6cmV0dXJuIHIudHlwZVBhcmFtZXRlcnM9dGhpcy5mbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSx0aGlzLmV4cGVjdCgxMCksaT10aGlzLmZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtcygpLHIucGFyYW1zPWkucGFyYW1zLHIucmVzdD1pLnJlc3Qsci50aGlzPWkuX3RoaXMsdGhpcy5leHBlY3QoMTEpLHRoaXMuZXhwZWN0KDE5KSxyLnJldHVyblR5cGU9dGhpcy5mbG93UGFyc2VUeXBlKCksdGhpcy5maW5pc2hOb2RlKHIsXCJGdW5jdGlvblR5cGVBbm5vdGF0aW9uXCIpO2Nhc2UgMTA6aWYodGhpcy5uZXh0KCksIXRoaXMubWF0Y2goMTEpJiYhdGhpcy5tYXRjaCgyMSkpaWYoSyh0aGlzLnN0YXRlLnR5cGUpfHx0aGlzLm1hdGNoKDc4KSl7bGV0IGM9dGhpcy5sb29rYWhlYWQoKS50eXBlO249YyE9PTE3JiZjIT09MTR9ZWxzZSBuPSEwO2lmKG4pe2lmKHRoaXMuc3RhdGUubm9Bbm9uRnVuY3Rpb25UeXBlPSExLGE9dGhpcy5mbG93UGFyc2VUeXBlKCksdGhpcy5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGU9byx0aGlzLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZXx8ISh0aGlzLm1hdGNoKDEyKXx8dGhpcy5tYXRjaCgxMSkmJnRoaXMubG9va2FoZWFkKCkudHlwZT09PTE5KSlyZXR1cm4gdGhpcy5leHBlY3QoMTEpLGE7dGhpcy5lYXQoMTIpfXJldHVybiBhP2k9dGhpcy5mbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbXMoW3RoaXMucmVpbnRlcnByZXRUeXBlQXNGdW5jdGlvblR5cGVQYXJhbShhKV0pOmk9dGhpcy5mbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbXMoKSxyLnBhcmFtcz1pLnBhcmFtcyxyLnJlc3Q9aS5yZXN0LHIudGhpcz1pLl90aGlzLHRoaXMuZXhwZWN0KDExKSx0aGlzLmV4cGVjdCgxOSksci5yZXR1cm5UeXBlPXRoaXMuZmxvd1BhcnNlVHlwZSgpLHIudHlwZVBhcmFtZXRlcnM9bnVsbCx0aGlzLmZpbmlzaE5vZGUocixcIkZ1bmN0aW9uVHlwZUFubm90YXRpb25cIik7Y2FzZSAxMjk6cmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsKHRoaXMuc3RhdGUudmFsdWUsXCJTdHJpbmdMaXRlcmFsVHlwZUFubm90YXRpb25cIik7Y2FzZSA4NTpjYXNlIDg2OnJldHVybiByLnZhbHVlPXRoaXMubWF0Y2goODUpLHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShyLFwiQm9vbGVhbkxpdGVyYWxUeXBlQW5ub3RhdGlvblwiKTtjYXNlIDUzOmlmKHRoaXMuc3RhdGUudmFsdWU9PT1cIi1cIil7aWYodGhpcy5uZXh0KCksdGhpcy5tYXRjaCgxMzApKXJldHVybiB0aGlzLnBhcnNlTGl0ZXJhbEF0Tm9kZSgtdGhpcy5zdGF0ZS52YWx1ZSxcIk51bWJlckxpdGVyYWxUeXBlQW5ub3RhdGlvblwiLHIpO2lmKHRoaXMubWF0Y2goMTMxKSlyZXR1cm4gdGhpcy5wYXJzZUxpdGVyYWxBdE5vZGUoLXRoaXMuc3RhdGUudmFsdWUsXCJCaWdJbnRMaXRlcmFsVHlwZUFubm90YXRpb25cIixyKTt0aHJvdyB0aGlzLnJhaXNlKEkuVW5leHBlY3RlZFN1YnRyYWN0aW9uT3BlcmFuZCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pfXRocm93IHRoaXMudW5leHBlY3RlZCgpO2Nhc2UgMTMwOnJldHVybiB0aGlzLnBhcnNlTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlLFwiTnVtYmVyTGl0ZXJhbFR5cGVBbm5vdGF0aW9uXCIpO2Nhc2UgMTMxOnJldHVybiB0aGlzLnBhcnNlTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlLFwiQmlnSW50TGl0ZXJhbFR5cGVBbm5vdGF0aW9uXCIpO2Nhc2UgODg6cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShyLFwiVm9pZFR5cGVBbm5vdGF0aW9uXCIpO2Nhc2UgODQ6cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShyLFwiTnVsbExpdGVyYWxUeXBlQW5ub3RhdGlvblwiKTtjYXNlIDc4OnJldHVybiB0aGlzLm5leHQoKSx0aGlzLmZpbmlzaE5vZGUocixcIlRoaXNUeXBlQW5ub3RhdGlvblwiKTtjYXNlIDU1OnJldHVybiB0aGlzLm5leHQoKSx0aGlzLmZpbmlzaE5vZGUocixcIkV4aXN0c1R5cGVBbm5vdGF0aW9uXCIpO2Nhc2UgODc6cmV0dXJuIHRoaXMuZmxvd1BhcnNlVHlwZW9mVHlwZSgpO2RlZmF1bHQ6aWYoSHQodGhpcy5zdGF0ZS50eXBlKSl7bGV0IGM9UGUodGhpcy5zdGF0ZS50eXBlKTtyZXR1cm4gdGhpcy5uZXh0KCksc3VwZXIuY3JlYXRlSWRlbnRpZmllcihyLGMpfWVsc2UgaWYoSyh0aGlzLnN0YXRlLnR5cGUpKXJldHVybiB0aGlzLmlzQ29udGV4dHVhbCgxMjUpP3RoaXMuZmxvd1BhcnNlSW50ZXJmYWNlVHlwZSgpOnRoaXMuZmxvd0lkZW50VG9UeXBlQW5ub3RhdGlvbihlLHMscix0aGlzLnBhcnNlSWRlbnRpZmllcigpKX10aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKX1mbG93UGFyc2VQb3N0Zml4VHlwZSgpe2xldCBlPXRoaXMuc3RhdGUuc3RhcnQscz10aGlzLnN0YXRlLnN0YXJ0TG9jLHI9dGhpcy5mbG93UGFyc2VQcmltYXJ5VHlwZSgpLGk9ITE7Zm9yKDsodGhpcy5tYXRjaCgwKXx8dGhpcy5tYXRjaCgxOCkpJiYhdGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKTspe2xldCBhPXRoaXMuc3RhcnROb2RlQXQoZSxzKSxuPXRoaXMuZWF0KDE4KTtpPWl8fG4sdGhpcy5leHBlY3QoMCksIW4mJnRoaXMubWF0Y2goMyk/KGEuZWxlbWVudFR5cGU9cix0aGlzLm5leHQoKSxyPXRoaXMuZmluaXNoTm9kZShhLFwiQXJyYXlUeXBlQW5ub3RhdGlvblwiKSk6KGEub2JqZWN0VHlwZT1yLGEuaW5kZXhUeXBlPXRoaXMuZmxvd1BhcnNlVHlwZSgpLHRoaXMuZXhwZWN0KDMpLGk/KGEub3B0aW9uYWw9bixyPXRoaXMuZmluaXNoTm9kZShhLFwiT3B0aW9uYWxJbmRleGVkQWNjZXNzVHlwZVwiKSk6cj10aGlzLmZpbmlzaE5vZGUoYSxcIkluZGV4ZWRBY2Nlc3NUeXBlXCIpKX1yZXR1cm4gcn1mbG93UGFyc2VQcmVmaXhUeXBlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5lYXQoMTcpPyhlLnR5cGVBbm5vdGF0aW9uPXRoaXMuZmxvd1BhcnNlUHJlZml4VHlwZSgpLHRoaXMuZmluaXNoTm9kZShlLFwiTnVsbGFibGVUeXBlQW5ub3RhdGlvblwiKSk6dGhpcy5mbG93UGFyc2VQb3N0Zml4VHlwZSgpfWZsb3dQYXJzZUFub25GdW5jdGlvbldpdGhvdXRQYXJlbnMoKXtsZXQgZT10aGlzLmZsb3dQYXJzZVByZWZpeFR5cGUoKTtpZighdGhpcy5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGUmJnRoaXMuZWF0KDE5KSl7bGV0IHM9dGhpcy5zdGFydE5vZGVBdChlLnN0YXJ0LGUubG9jLnN0YXJ0KTtyZXR1cm4gcy5wYXJhbXM9W3RoaXMucmVpbnRlcnByZXRUeXBlQXNGdW5jdGlvblR5cGVQYXJhbShlKV0scy5yZXN0PW51bGwscy50aGlzPW51bGwscy5yZXR1cm5UeXBlPXRoaXMuZmxvd1BhcnNlVHlwZSgpLHMudHlwZVBhcmFtZXRlcnM9bnVsbCx0aGlzLmZpbmlzaE5vZGUocyxcIkZ1bmN0aW9uVHlwZUFubm90YXRpb25cIil9cmV0dXJuIGV9Zmxvd1BhcnNlSW50ZXJzZWN0aW9uVHlwZSgpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7dGhpcy5lYXQoNDUpO2xldCBzPXRoaXMuZmxvd1BhcnNlQW5vbkZ1bmN0aW9uV2l0aG91dFBhcmVucygpO2ZvcihlLnR5cGVzPVtzXTt0aGlzLmVhdCg0NSk7KWUudHlwZXMucHVzaCh0aGlzLmZsb3dQYXJzZUFub25GdW5jdGlvbldpdGhvdXRQYXJlbnMoKSk7cmV0dXJuIGUudHlwZXMubGVuZ3RoPT09MT9zOnRoaXMuZmluaXNoTm9kZShlLFwiSW50ZXJzZWN0aW9uVHlwZUFubm90YXRpb25cIil9Zmxvd1BhcnNlVW5pb25UeXBlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTt0aGlzLmVhdCg0Myk7bGV0IHM9dGhpcy5mbG93UGFyc2VJbnRlcnNlY3Rpb25UeXBlKCk7Zm9yKGUudHlwZXM9W3NdO3RoaXMuZWF0KDQzKTspZS50eXBlcy5wdXNoKHRoaXMuZmxvd1BhcnNlSW50ZXJzZWN0aW9uVHlwZSgpKTtyZXR1cm4gZS50eXBlcy5sZW5ndGg9PT0xP3M6dGhpcy5maW5pc2hOb2RlKGUsXCJVbmlvblR5cGVBbm5vdGF0aW9uXCIpfWZsb3dQYXJzZVR5cGUoKXtsZXQgZT10aGlzLnN0YXRlLmluVHlwZTt0aGlzLnN0YXRlLmluVHlwZT0hMDtsZXQgcz10aGlzLmZsb3dQYXJzZVVuaW9uVHlwZSgpO3JldHVybiB0aGlzLnN0YXRlLmluVHlwZT1lLHN9Zmxvd1BhcnNlVHlwZU9ySW1wbGljaXRJbnN0YW50aWF0aW9uKCl7aWYodGhpcy5zdGF0ZS50eXBlPT09MTI4JiZ0aGlzLnN0YXRlLnZhbHVlPT09XCJfXCIpe2xldCBlPXRoaXMuc3RhdGUuc3RhcnQscz10aGlzLnN0YXRlLnN0YXJ0TG9jLHI9dGhpcy5wYXJzZUlkZW50aWZpZXIoKTtyZXR1cm4gdGhpcy5mbG93UGFyc2VHZW5lcmljVHlwZShlLHMscil9ZWxzZSByZXR1cm4gdGhpcy5mbG93UGFyc2VUeXBlKCl9Zmxvd1BhcnNlVHlwZUFubm90YXRpb24oKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiBlLnR5cGVBbm5vdGF0aW9uPXRoaXMuZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKCksdGhpcy5maW5pc2hOb2RlKGUsXCJUeXBlQW5ub3RhdGlvblwiKX1mbG93UGFyc2VUeXBlQW5ub3RhdGFibGVJZGVudGlmaWVyKGUpe2xldCBzPWU/dGhpcy5wYXJzZUlkZW50aWZpZXIoKTp0aGlzLmZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKCk7cmV0dXJuIHRoaXMubWF0Y2goMTQpJiYocy50eXBlQW5ub3RhdGlvbj10aGlzLmZsb3dQYXJzZVR5cGVBbm5vdGF0aW9uKCksdGhpcy5yZXNldEVuZExvY2F0aW9uKHMpKSxzfXR5cGVDYXN0VG9QYXJhbWV0ZXIoZSl7cmV0dXJuIGUuZXhwcmVzc2lvbi50eXBlQW5ub3RhdGlvbj1lLnR5cGVBbm5vdGF0aW9uLHRoaXMucmVzZXRFbmRMb2NhdGlvbihlLmV4cHJlc3Npb24sZS50eXBlQW5ub3RhdGlvbi5sb2MuZW5kKSxlLmV4cHJlc3Npb259Zmxvd1BhcnNlVmFyaWFuY2UoKXtsZXQgZT1udWxsO3JldHVybiB0aGlzLm1hdGNoKDUzKSYmKGU9dGhpcy5zdGFydE5vZGUoKSx0aGlzLnN0YXRlLnZhbHVlPT09XCIrXCI/ZS5raW5kPVwicGx1c1wiOmUua2luZD1cIm1pbnVzXCIsdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKGUsXCJWYXJpYW5jZVwiKSksZX1wYXJzZUZ1bmN0aW9uQm9keShlLHMpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMTtyZXR1cm4gcz90aGlzLmZvcndhcmROb0Fycm93UGFyYW1zQ29udmVyc2lvbkF0KGUsKCk9PnN1cGVyLnBhcnNlRnVuY3Rpb25Cb2R5KGUsITAscikpOnN1cGVyLnBhcnNlRnVuY3Rpb25Cb2R5KGUsITEscil9cGFyc2VGdW5jdGlvbkJvZHlBbmRGaW5pc2goZSxzKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITE7aWYodGhpcy5tYXRjaCgxNCkpe2xldCBpPXRoaXMuc3RhcnROb2RlKCk7W2kudHlwZUFubm90YXRpb24sZS5wcmVkaWNhdGVdPXRoaXMuZmxvd1BhcnNlVHlwZUFuZFByZWRpY2F0ZUluaXRpYWxpc2VyKCksZS5yZXR1cm5UeXBlPWkudHlwZUFubm90YXRpb24/dGhpcy5maW5pc2hOb2RlKGksXCJUeXBlQW5ub3RhdGlvblwiKTpudWxsfXN1cGVyLnBhcnNlRnVuY3Rpb25Cb2R5QW5kRmluaXNoKGUscyxyKX1wYXJzZVN0YXRlbWVudChlLHMpe2lmKHRoaXMuc3RhdGUuc3RyaWN0JiZ0aGlzLmlzQ29udGV4dHVhbCgxMjUpKXtsZXQgaT10aGlzLmxvb2thaGVhZCgpO2lmKHBlKGkudHlwZSkpe2xldCBhPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZmxvd1BhcnNlSW50ZXJmYWNlKGEpfX1lbHNlIGlmKHRoaXMuc2hvdWxkUGFyc2VFbnVtcygpJiZ0aGlzLmlzQ29udGV4dHVhbCgxMjIpKXtsZXQgaT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmZsb3dQYXJzZUVudW1EZWNsYXJhdGlvbihpKX1sZXQgcj1zdXBlci5wYXJzZVN0YXRlbWVudChlLHMpO3JldHVybiB0aGlzLmZsb3dQcmFnbWE9PT12b2lkIDAmJiF0aGlzLmlzVmFsaWREaXJlY3RpdmUocikmJih0aGlzLmZsb3dQcmFnbWE9bnVsbCkscn1wYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoZSxzKXtpZihzLnR5cGU9PT1cIklkZW50aWZpZXJcIil7aWYocy5uYW1lPT09XCJkZWNsYXJlXCIpe2lmKHRoaXMubWF0Y2goODApfHxLKHRoaXMuc3RhdGUudHlwZSl8fHRoaXMubWF0Y2goNjgpfHx0aGlzLm1hdGNoKDc0KXx8dGhpcy5tYXRjaCg4MikpcmV0dXJuIHRoaXMuZmxvd1BhcnNlRGVjbGFyZShlKX1lbHNlIGlmKEsodGhpcy5zdGF0ZS50eXBlKSl7aWYocy5uYW1lPT09XCJpbnRlcmZhY2VcIilyZXR1cm4gdGhpcy5mbG93UGFyc2VJbnRlcmZhY2UoZSk7aWYocy5uYW1lPT09XCJ0eXBlXCIpcmV0dXJuIHRoaXMuZmxvd1BhcnNlVHlwZUFsaWFzKGUpO2lmKHMubmFtZT09PVwib3BhcXVlXCIpcmV0dXJuIHRoaXMuZmxvd1BhcnNlT3BhcXVlVHlwZShlLCExKX19cmV0dXJuIHN1cGVyLnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChlLHMpfXNob3VsZFBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKXtsZXR7dHlwZTplfT10aGlzLnN0YXRlO3JldHVybiBscihlKXx8dGhpcy5zaG91bGRQYXJzZUVudW1zKCkmJmU9PT0xMjI/IXRoaXMuc3RhdGUuY29udGFpbnNFc2M6c3VwZXIuc2hvdWxkUGFyc2VFeHBvcnREZWNsYXJhdGlvbigpfWlzRXhwb3J0RGVmYXVsdFNwZWNpZmllcigpe2xldHt0eXBlOmV9PXRoaXMuc3RhdGU7cmV0dXJuIGxyKGUpfHx0aGlzLnNob3VsZFBhcnNlRW51bXMoKSYmZT09PTEyMj90aGlzLnN0YXRlLmNvbnRhaW5zRXNjOnN1cGVyLmlzRXhwb3J0RGVmYXVsdFNwZWNpZmllcigpfXBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24oKXtpZih0aGlzLnNob3VsZFBhcnNlRW51bXMoKSYmdGhpcy5pc0NvbnRleHR1YWwoMTIyKSl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5mbG93UGFyc2VFbnVtRGVjbGFyYXRpb24oZSl9cmV0dXJuIHN1cGVyLnBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24oKX1wYXJzZUNvbmRpdGlvbmFsKGUscyxyLGkpe2lmKCF0aGlzLm1hdGNoKDE3KSlyZXR1cm4gZTtpZih0aGlzLnN0YXRlLm1heWJlSW5BcnJvd1BhcmFtZXRlcnMpe2xldCB2PXRoaXMubG9va2FoZWFkQ2hhckNvZGUoKTtpZih2PT09NDR8fHY9PT02MXx8dj09PTU4fHx2PT09NDEpcmV0dXJuIHRoaXMuc2V0T3B0aW9uYWxQYXJhbWV0ZXJzRXJyb3IoaSksZX10aGlzLmV4cGVjdCgxNyk7bGV0IGE9dGhpcy5zdGF0ZS5jbG9uZSgpLG49dGhpcy5zdGF0ZS5ub0Fycm93QXQsbz10aGlzLnN0YXJ0Tm9kZUF0KHMscikse2NvbnNlcXVlbnQ6YyxmYWlsZWQ6Zn09dGhpcy50cnlQYXJzZUNvbmRpdGlvbmFsQ29uc2VxdWVudCgpLFt5LFBdPXRoaXMuZ2V0QXJyb3dMaWtlRXhwcmVzc2lvbnMoYyk7aWYoZnx8UC5sZW5ndGg+MCl7bGV0IHY9Wy4uLm5dO2lmKFAubGVuZ3RoPjApe3RoaXMuc3RhdGU9YSx0aGlzLnN0YXRlLm5vQXJyb3dBdD12O2ZvcihsZXQgTj0wO048UC5sZW5ndGg7TisrKXYucHVzaChQW05dLnN0YXJ0KTsoe2NvbnNlcXVlbnQ6YyxmYWlsZWQ6Zn09dGhpcy50cnlQYXJzZUNvbmRpdGlvbmFsQ29uc2VxdWVudCgpKSxbeSxQXT10aGlzLmdldEFycm93TGlrZUV4cHJlc3Npb25zKGMpfWYmJnkubGVuZ3RoPjEmJnRoaXMucmFpc2UoSS5BbWJpZ3VvdXNDb25kaXRpb25hbEFycm93LHthdDphLnN0YXJ0TG9jfSksZiYmeS5sZW5ndGg9PT0xJiYodGhpcy5zdGF0ZT1hLHYucHVzaCh5WzBdLnN0YXJ0KSx0aGlzLnN0YXRlLm5vQXJyb3dBdD12LHtjb25zZXF1ZW50OmMsZmFpbGVkOmZ9PXRoaXMudHJ5UGFyc2VDb25kaXRpb25hbENvbnNlcXVlbnQoKSl9cmV0dXJuIHRoaXMuZ2V0QXJyb3dMaWtlRXhwcmVzc2lvbnMoYywhMCksdGhpcy5zdGF0ZS5ub0Fycm93QXQ9bix0aGlzLmV4cGVjdCgxNCksby50ZXN0PWUsby5jb25zZXF1ZW50PWMsby5hbHRlcm5hdGU9dGhpcy5mb3J3YXJkTm9BcnJvd1BhcmFtc0NvbnZlcnNpb25BdChvLCgpPT50aGlzLnBhcnNlTWF5YmVBc3NpZ24odm9pZCAwLHZvaWQgMCkpLHRoaXMuZmluaXNoTm9kZShvLFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIpfXRyeVBhcnNlQ29uZGl0aW9uYWxDb25zZXF1ZW50KCl7dGhpcy5zdGF0ZS5ub0Fycm93UGFyYW1zQ29udmVyc2lvbkF0LnB1c2godGhpcy5zdGF0ZS5zdGFydCk7bGV0IGU9dGhpcy5wYXJzZU1heWJlQXNzaWduQWxsb3dJbigpLHM9IXRoaXMubWF0Y2goMTQpO3JldHVybiB0aGlzLnN0YXRlLm5vQXJyb3dQYXJhbXNDb252ZXJzaW9uQXQucG9wKCkse2NvbnNlcXVlbnQ6ZSxmYWlsZWQ6c319Z2V0QXJyb3dMaWtlRXhwcmVzc2lvbnMoZSxzKXtsZXQgcj1bZV0saT1bXTtmb3IoO3IubGVuZ3RoIT09MDspe2xldCBhPXIucG9wKCk7YS50eXBlPT09XCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiPyhhLnR5cGVQYXJhbWV0ZXJzfHwhYS5yZXR1cm5UeXBlP3RoaXMuZmluaXNoQXJyb3dWYWxpZGF0aW9uKGEpOmkucHVzaChhKSxyLnB1c2goYS5ib2R5KSk6YS50eXBlPT09XCJDb25kaXRpb25hbEV4cHJlc3Npb25cIiYmKHIucHVzaChhLmNvbnNlcXVlbnQpLHIucHVzaChhLmFsdGVybmF0ZSkpfXJldHVybiBzPyhpLmZvckVhY2goYT0+dGhpcy5maW5pc2hBcnJvd1ZhbGlkYXRpb24oYSkpLFtpLFtdXSk6SWgoaSxhPT5hLnBhcmFtcy5ldmVyeShuPT50aGlzLmlzQXNzaWduYWJsZShuLCEwKSkpfWZpbmlzaEFycm93VmFsaWRhdGlvbihlKXt2YXIgczt0aGlzLnRvQXNzaWduYWJsZUxpc3QoZS5wYXJhbXMsKHM9ZS5leHRyYSk9PW51bGw/dm9pZCAwOnMudHJhaWxpbmdDb21tYUxvYywhMSksdGhpcy5zY29wZS5lbnRlcihtZXxKdCksc3VwZXIuY2hlY2tQYXJhbXMoZSwhMSwhMCksdGhpcy5zY29wZS5leGl0KCl9Zm9yd2FyZE5vQXJyb3dQYXJhbXNDb252ZXJzaW9uQXQoZSxzKXtsZXQgcjtyZXR1cm4gdGhpcy5zdGF0ZS5ub0Fycm93UGFyYW1zQ29udmVyc2lvbkF0LmluZGV4T2YoZS5zdGFydCkhPT0tMT8odGhpcy5zdGF0ZS5ub0Fycm93UGFyYW1zQ29udmVyc2lvbkF0LnB1c2godGhpcy5zdGF0ZS5zdGFydCkscj1zKCksdGhpcy5zdGF0ZS5ub0Fycm93UGFyYW1zQ29udmVyc2lvbkF0LnBvcCgpKTpyPXMoKSxyfXBhcnNlUGFyZW5JdGVtKGUscyxyKXtpZihlPXN1cGVyLnBhcnNlUGFyZW5JdGVtKGUscyxyKSx0aGlzLmVhdCgxNykmJihlLm9wdGlvbmFsPSEwLHRoaXMucmVzZXRFbmRMb2NhdGlvbihlKSksdGhpcy5tYXRjaCgxNCkpe2xldCBpPXRoaXMuc3RhcnROb2RlQXQocyxyKTtyZXR1cm4gaS5leHByZXNzaW9uPWUsaS50eXBlQW5ub3RhdGlvbj10aGlzLmZsb3dQYXJzZVR5cGVBbm5vdGF0aW9uKCksdGhpcy5maW5pc2hOb2RlKGksXCJUeXBlQ2FzdEV4cHJlc3Npb25cIil9cmV0dXJuIGV9YXNzZXJ0TW9kdWxlTm9kZUFsbG93ZWQoZSl7ZS50eXBlPT09XCJJbXBvcnREZWNsYXJhdGlvblwiJiYoZS5pbXBvcnRLaW5kPT09XCJ0eXBlXCJ8fGUuaW1wb3J0S2luZD09PVwidHlwZW9mXCIpfHxlLnR5cGU9PT1cIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiYmZS5leHBvcnRLaW5kPT09XCJ0eXBlXCJ8fGUudHlwZT09PVwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIiYmZS5leHBvcnRLaW5kPT09XCJ0eXBlXCJ8fHN1cGVyLmFzc2VydE1vZHVsZU5vZGVBbGxvd2VkKGUpfXBhcnNlRXhwb3J0KGUpe2xldCBzPXN1cGVyLnBhcnNlRXhwb3J0KGUpO3JldHVybihzLnR5cGU9PT1cIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cInx8cy50eXBlPT09XCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiKSYmKHMuZXhwb3J0S2luZD1zLmV4cG9ydEtpbmR8fFwidmFsdWVcIiksc31wYXJzZUV4cG9ydERlY2xhcmF0aW9uKGUpe2lmKHRoaXMuaXNDb250ZXh0dWFsKDEyNikpe2UuZXhwb3J0S2luZD1cInR5cGVcIjtsZXQgcz10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLm1hdGNoKDUpPyhlLnNwZWNpZmllcnM9dGhpcy5wYXJzZUV4cG9ydFNwZWNpZmllcnMoITApLHRoaXMucGFyc2VFeHBvcnRGcm9tKGUpLG51bGwpOnRoaXMuZmxvd1BhcnNlVHlwZUFsaWFzKHMpfWVsc2UgaWYodGhpcy5pc0NvbnRleHR1YWwoMTI3KSl7ZS5leHBvcnRLaW5kPVwidHlwZVwiO2xldCBzPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZmxvd1BhcnNlT3BhcXVlVHlwZShzLCExKX1lbHNlIGlmKHRoaXMuaXNDb250ZXh0dWFsKDEyNSkpe2UuZXhwb3J0S2luZD1cInR5cGVcIjtsZXQgcz10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmZsb3dQYXJzZUludGVyZmFjZShzKX1lbHNlIGlmKHRoaXMuc2hvdWxkUGFyc2VFbnVtcygpJiZ0aGlzLmlzQ29udGV4dHVhbCgxMjIpKXtlLmV4cG9ydEtpbmQ9XCJ2YWx1ZVwiO2xldCBzPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZmxvd1BhcnNlRW51bURlY2xhcmF0aW9uKHMpfWVsc2UgcmV0dXJuIHN1cGVyLnBhcnNlRXhwb3J0RGVjbGFyYXRpb24oZSl9ZWF0RXhwb3J0U3RhcihlKXtyZXR1cm4gc3VwZXIuZWF0RXhwb3J0U3RhciguLi5hcmd1bWVudHMpPyEwOnRoaXMuaXNDb250ZXh0dWFsKDEyNikmJnRoaXMubG9va2FoZWFkKCkudHlwZT09PTU1PyhlLmV4cG9ydEtpbmQ9XCJ0eXBlXCIsdGhpcy5uZXh0KCksdGhpcy5uZXh0KCksITApOiExfW1heWJlUGFyc2VFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXIoZSl7bGV0e3N0YXJ0TG9jOnN9PXRoaXMuc3RhdGUscj1zdXBlci5tYXliZVBhcnNlRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyKGUpO3JldHVybiByJiZlLmV4cG9ydEtpbmQ9PT1cInR5cGVcIiYmdGhpcy51bmV4cGVjdGVkKHMpLHJ9cGFyc2VDbGFzc0lkKGUscyxyKXtzdXBlci5wYXJzZUNsYXNzSWQoZSxzLHIpLHRoaXMubWF0Y2goNDcpJiYoZS50eXBlUGFyYW1ldGVycz10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKX1wYXJzZUNsYXNzTWVtYmVyKGUscyxyKXtsZXR7c3RhcnRMb2M6aX09dGhpcy5zdGF0ZTtpZih0aGlzLmlzQ29udGV4dHVhbCgxMjEpKXtpZih0aGlzLnBhcnNlQ2xhc3NNZW1iZXJGcm9tTW9kaWZpZXIoZSxzKSlyZXR1cm47cy5kZWNsYXJlPSEwfXN1cGVyLnBhcnNlQ2xhc3NNZW1iZXIoZSxzLHIpLHMuZGVjbGFyZSYmKHMudHlwZSE9PVwiQ2xhc3NQcm9wZXJ0eVwiJiZzLnR5cGUhPT1cIkNsYXNzUHJpdmF0ZVByb3BlcnR5XCImJnMudHlwZSE9PVwiUHJvcGVydHlEZWZpbml0aW9uXCI/dGhpcy5yYWlzZShJLkRlY2xhcmVDbGFzc0VsZW1lbnQse2F0Oml9KTpzLnZhbHVlJiZ0aGlzLnJhaXNlKEkuRGVjbGFyZUNsYXNzRmllbGRJbml0aWFsaXplcix7YXQ6cy52YWx1ZX0pKX1pc0l0ZXJhdG9yKGUpe3JldHVybiBlPT09XCJpdGVyYXRvclwifHxlPT09XCJhc3luY0l0ZXJhdG9yXCJ9cmVhZEl0ZXJhdG9yKCl7bGV0IGU9c3VwZXIucmVhZFdvcmQxKCkscz1cIkBAXCIrZTsoIXRoaXMuaXNJdGVyYXRvcihlKXx8IXRoaXMuc3RhdGUuaW5UeXBlKSYmdGhpcy5yYWlzZSh1LkludmFsaWRJZGVudGlmaWVyLHthdDp0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCksaWRlbnRpZmllck5hbWU6c30pLHRoaXMuZmluaXNoVG9rZW4oMTI4LHMpfWdldFRva2VuRnJvbUNvZGUoZSl7bGV0IHM9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpO3JldHVybiBlPT09MTIzJiZzPT09MTI0P3RoaXMuZmluaXNoT3AoNiwyKTp0aGlzLnN0YXRlLmluVHlwZSYmKGU9PT02Mnx8ZT09PTYwKT90aGlzLmZpbmlzaE9wKGU9PT02Mj80ODo0NywxKTp0aGlzLnN0YXRlLmluVHlwZSYmZT09PTYzP3M9PT00Nj90aGlzLmZpbmlzaE9wKDE4LDIpOnRoaXMuZmluaXNoT3AoMTcsMSk6S28oZSxzLHRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcysyKSk/KHRoaXMuc3RhdGUucG9zKz0yLHRoaXMucmVhZEl0ZXJhdG9yKCkpOnN1cGVyLmdldFRva2VuRnJvbUNvZGUoZSl9aXNBc3NpZ25hYmxlKGUscyl7cmV0dXJuIGUudHlwZT09PVwiVHlwZUNhc3RFeHByZXNzaW9uXCI/dGhpcy5pc0Fzc2lnbmFibGUoZS5leHByZXNzaW9uLHMpOnN1cGVyLmlzQXNzaWduYWJsZShlLHMpfXRvQXNzaWduYWJsZShlKXshKGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMSkmJmUudHlwZT09PVwiQXNzaWdubWVudEV4cHJlc3Npb25cIiYmZS5sZWZ0LnR5cGU9PT1cIlR5cGVDYXN0RXhwcmVzc2lvblwiJiYoZS5sZWZ0PXRoaXMudHlwZUNhc3RUb1BhcmFtZXRlcihlLmxlZnQpKSxzdXBlci50b0Fzc2lnbmFibGUoLi4uYXJndW1lbnRzKX10b0Fzc2lnbmFibGVMaXN0KGUscyxyKXtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7bGV0IGE9ZVtpXTsoYT09bnVsbD92b2lkIDA6YS50eXBlKT09PVwiVHlwZUNhc3RFeHByZXNzaW9uXCImJihlW2ldPXRoaXMudHlwZUNhc3RUb1BhcmFtZXRlcihhKSl9c3VwZXIudG9Bc3NpZ25hYmxlTGlzdChlLHMscil9dG9SZWZlcmVuY2VkTGlzdChlLHMpe2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgcjtsZXQgYT1lW2ldO2EmJmEudHlwZT09PVwiVHlwZUNhc3RFeHByZXNzaW9uXCImJiEoKHI9YS5leHRyYSkhPW51bGwmJnIucGFyZW50aGVzaXplZCkmJihlLmxlbmd0aD4xfHwhcykmJnRoaXMucmFpc2UoSS5UeXBlQ2FzdEluUGF0dGVybix7YXQ6YS50eXBlQW5ub3RhdGlvbn0pfXJldHVybiBlfXBhcnNlQXJyYXlMaWtlKGUscyxyLGkpe2xldCBhPXN1cGVyLnBhcnNlQXJyYXlMaWtlKGUscyxyLGkpO3JldHVybiBzJiYhdGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzJiZ0aGlzLnRvUmVmZXJlbmNlZExpc3QoYS5lbGVtZW50cyksYX1pc1ZhbGlkTFZhbChlKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShzPjE/cy0xOjApLGk9MTtpPHM7aSsrKXJbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIGU9PT1cIlR5cGVDYXN0RXhwcmVzc2lvblwifHxzdXBlci5pc1ZhbGlkTFZhbChlLC4uLnIpfXBhcnNlQ2xhc3NQcm9wZXJ0eShlKXtyZXR1cm4gdGhpcy5tYXRjaCgxNCkmJihlLnR5cGVBbm5vdGF0aW9uPXRoaXMuZmxvd1BhcnNlVHlwZUFubm90YXRpb24oKSksc3VwZXIucGFyc2VDbGFzc1Byb3BlcnR5KGUpfXBhcnNlQ2xhc3NQcml2YXRlUHJvcGVydHkoZSl7cmV0dXJuIHRoaXMubWF0Y2goMTQpJiYoZS50eXBlQW5ub3RhdGlvbj10aGlzLmZsb3dQYXJzZVR5cGVBbm5vdGF0aW9uKCkpLHN1cGVyLnBhcnNlQ2xhc3NQcml2YXRlUHJvcGVydHkoZSl9aXNDbGFzc01ldGhvZCgpe3JldHVybiB0aGlzLm1hdGNoKDQ3KXx8c3VwZXIuaXNDbGFzc01ldGhvZCgpfWlzQ2xhc3NQcm9wZXJ0eSgpe3JldHVybiB0aGlzLm1hdGNoKDE0KXx8c3VwZXIuaXNDbGFzc1Byb3BlcnR5KCl9aXNOb25zdGF0aWNDb25zdHJ1Y3RvcihlKXtyZXR1cm4hdGhpcy5tYXRjaCgxNCkmJnN1cGVyLmlzTm9uc3RhdGljQ29uc3RydWN0b3IoZSl9cHVzaENsYXNzTWV0aG9kKGUscyxyLGksYSxuKXtpZihzLnZhcmlhbmNlJiZ0aGlzLnVuZXhwZWN0ZWQocy52YXJpYW5jZS5sb2Muc3RhcnQpLGRlbGV0ZSBzLnZhcmlhbmNlLHRoaXMubWF0Y2goNDcpJiYocy50eXBlUGFyYW1ldGVycz10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSxzdXBlci5wdXNoQ2xhc3NNZXRob2QoZSxzLHIsaSxhLG4pLHMucGFyYW1zJiZhKXtsZXQgbz1zLnBhcmFtcztvLmxlbmd0aD4wJiZ0aGlzLmlzVGhpc1BhcmFtKG9bMF0pJiZ0aGlzLnJhaXNlKEkuVGhpc1BhcmFtQmFubmVkSW5Db25zdHJ1Y3Rvcix7YXQ6c30pfWVsc2UgaWYocy50eXBlPT09XCJNZXRob2REZWZpbml0aW9uXCImJmEmJnMudmFsdWUucGFyYW1zKXtsZXQgbz1zLnZhbHVlLnBhcmFtcztvLmxlbmd0aD4wJiZ0aGlzLmlzVGhpc1BhcmFtKG9bMF0pJiZ0aGlzLnJhaXNlKEkuVGhpc1BhcmFtQmFubmVkSW5Db25zdHJ1Y3Rvcix7YXQ6c30pfX1wdXNoQ2xhc3NQcml2YXRlTWV0aG9kKGUscyxyLGkpe3MudmFyaWFuY2UmJnRoaXMudW5leHBlY3RlZChzLnZhcmlhbmNlLmxvYy5zdGFydCksZGVsZXRlIHMudmFyaWFuY2UsdGhpcy5tYXRjaCg0NykmJihzLnR5cGVQYXJhbWV0ZXJzPXRoaXMuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpLHN1cGVyLnB1c2hDbGFzc1ByaXZhdGVNZXRob2QoZSxzLHIsaSl9cGFyc2VDbGFzc1N1cGVyKGUpe2lmKHN1cGVyLnBhcnNlQ2xhc3NTdXBlcihlKSxlLnN1cGVyQ2xhc3MmJnRoaXMubWF0Y2goNDcpJiYoZS5zdXBlclR5cGVQYXJhbWV0ZXJzPXRoaXMuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24oKSksdGhpcy5pc0NvbnRleHR1YWwoMTEwKSl7dGhpcy5uZXh0KCk7bGV0IHM9ZS5pbXBsZW1lbnRzPVtdO2Rve2xldCByPXRoaXMuc3RhcnROb2RlKCk7ci5pZD10aGlzLmZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKCEwKSx0aGlzLm1hdGNoKDQ3KT9yLnR5cGVQYXJhbWV0ZXJzPXRoaXMuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24oKTpyLnR5cGVQYXJhbWV0ZXJzPW51bGwscy5wdXNoKHRoaXMuZmluaXNoTm9kZShyLFwiQ2xhc3NJbXBsZW1lbnRzXCIpKX13aGlsZSh0aGlzLmVhdCgxMikpfX1jaGVja0dldHRlclNldHRlclBhcmFtcyhlKXtzdXBlci5jaGVja0dldHRlclNldHRlclBhcmFtcyhlKTtsZXQgcz10aGlzLmdldE9iamVjdE9yQ2xhc3NNZXRob2RQYXJhbXMoZSk7aWYocy5sZW5ndGg+MCl7bGV0IHI9c1swXTt0aGlzLmlzVGhpc1BhcmFtKHIpJiZlLmtpbmQ9PT1cImdldFwiP3RoaXMucmFpc2UoSS5HZXR0ZXJNYXlOb3RIYXZlVGhpc1BhcmFtLHthdDpyfSk6dGhpcy5pc1RoaXNQYXJhbShyKSYmdGhpcy5yYWlzZShJLlNldHRlck1heU5vdEhhdmVUaGlzUGFyYW0se2F0OnJ9KX19cGFyc2VQcm9wZXJ0eU5hbWVQcmVmaXhPcGVyYXRvcihlKXtlLnZhcmlhbmNlPXRoaXMuZmxvd1BhcnNlVmFyaWFuY2UoKX1wYXJzZU9ialByb3BWYWx1ZShlLHMscixpLGEsbixvLGMpe2UudmFyaWFuY2UmJnRoaXMudW5leHBlY3RlZChlLnZhcmlhbmNlLmxvYy5zdGFydCksZGVsZXRlIGUudmFyaWFuY2U7bGV0IGY7dGhpcy5tYXRjaCg0NykmJiFvJiYoZj10aGlzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpLHRoaXMubWF0Y2goMTApfHx0aGlzLnVuZXhwZWN0ZWQoKSksc3VwZXIucGFyc2VPYmpQcm9wVmFsdWUoZSxzLHIsaSxhLG4sbyxjKSxmJiYoKGUudmFsdWV8fGUpLnR5cGVQYXJhbWV0ZXJzPWYpfXBhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMoZSl7cmV0dXJuIHRoaXMuZWF0KDE3KSYmKGUudHlwZSE9PVwiSWRlbnRpZmllclwiJiZ0aGlzLnJhaXNlKEkuUGF0dGVybklzT3B0aW9uYWwse2F0OmV9KSx0aGlzLmlzVGhpc1BhcmFtKGUpJiZ0aGlzLnJhaXNlKEkuVGhpc1BhcmFtTWF5Tm90QmVPcHRpb25hbCx7YXQ6ZX0pLGUub3B0aW9uYWw9ITApLHRoaXMubWF0Y2goMTQpP2UudHlwZUFubm90YXRpb249dGhpcy5mbG93UGFyc2VUeXBlQW5ub3RhdGlvbigpOnRoaXMuaXNUaGlzUGFyYW0oZSkmJnRoaXMucmFpc2UoSS5UaGlzUGFyYW1Bbm5vdGF0aW9uUmVxdWlyZWQse2F0OmV9KSx0aGlzLm1hdGNoKDI5KSYmdGhpcy5pc1RoaXNQYXJhbShlKSYmdGhpcy5yYWlzZShJLlRoaXNQYXJhbU5vRGVmYXVsdCx7YXQ6ZX0pLHRoaXMucmVzZXRFbmRMb2NhdGlvbihlKSxlfXBhcnNlTWF5YmVEZWZhdWx0KGUscyxyKXtsZXQgaT1zdXBlci5wYXJzZU1heWJlRGVmYXVsdChlLHMscik7cmV0dXJuIGkudHlwZT09PVwiQXNzaWdubWVudFBhdHRlcm5cIiYmaS50eXBlQW5ub3RhdGlvbiYmaS5yaWdodC5zdGFydDxpLnR5cGVBbm5vdGF0aW9uLnN0YXJ0JiZ0aGlzLnJhaXNlKEkuVHlwZUJlZm9yZUluaXRpYWxpemVyLHthdDppLnR5cGVBbm5vdGF0aW9ufSksaX1zaG91bGRQYXJzZURlZmF1bHRJbXBvcnQoZSl7cmV0dXJuIGNzKGUpP09yKHRoaXMuc3RhdGUudHlwZSk6c3VwZXIuc2hvdWxkUGFyc2VEZWZhdWx0SW1wb3J0KGUpfXBhcnNlSW1wb3J0U3BlY2lmaWVyTG9jYWwoZSxzLHIpe3MubG9jYWw9Y3MoZSk/dGhpcy5mbG93UGFyc2VSZXN0cmljdGVkSWRlbnRpZmllcighMCwhMCk6dGhpcy5wYXJzZUlkZW50aWZpZXIoKSxlLnNwZWNpZmllcnMucHVzaCh0aGlzLmZpbmlzaEltcG9ydFNwZWNpZmllcihzLHIpKX1tYXliZVBhcnNlRGVmYXVsdEltcG9ydFNwZWNpZmllcihlKXtlLmltcG9ydEtpbmQ9XCJ2YWx1ZVwiO2xldCBzPW51bGw7aWYodGhpcy5tYXRjaCg4Nyk/cz1cInR5cGVvZlwiOnRoaXMuaXNDb250ZXh0dWFsKDEyNikmJihzPVwidHlwZVwiKSxzKXtsZXQgcj10aGlzLmxvb2thaGVhZCgpLHt0eXBlOml9PXI7cz09PVwidHlwZVwiJiZpPT09NTUmJnRoaXMudW5leHBlY3RlZChudWxsLHIudHlwZSksKE9yKGkpfHxpPT09NXx8aT09PTU1KSYmKHRoaXMubmV4dCgpLGUuaW1wb3J0S2luZD1zKX1yZXR1cm4gc3VwZXIubWF5YmVQYXJzZURlZmF1bHRJbXBvcnRTcGVjaWZpZXIoZSl9cGFyc2VJbXBvcnRTcGVjaWZpZXIoZSxzLHIsaSl7bGV0IGE9ZS5pbXBvcnRlZCxuPW51bGw7YS50eXBlPT09XCJJZGVudGlmaWVyXCImJihhLm5hbWU9PT1cInR5cGVcIj9uPVwidHlwZVwiOmEubmFtZT09PVwidHlwZW9mXCImJihuPVwidHlwZW9mXCIpKTtsZXQgbz0hMTtpZih0aGlzLmlzQ29udGV4dHVhbCg5MykmJiF0aGlzLmlzTG9va2FoZWFkQ29udGV4dHVhbChcImFzXCIpKXtsZXQgZj10aGlzLnBhcnNlSWRlbnRpZmllcighMCk7biE9PW51bGwmJiFwZSh0aGlzLnN0YXRlLnR5cGUpPyhlLmltcG9ydGVkPWYsZS5pbXBvcnRLaW5kPW4sZS5sb2NhbD1nZShmKSk6KGUuaW1wb3J0ZWQ9YSxlLmltcG9ydEtpbmQ9bnVsbCxlLmxvY2FsPXRoaXMucGFyc2VJZGVudGlmaWVyKCkpfWVsc2V7aWYobiE9PW51bGwmJnBlKHRoaXMuc3RhdGUudHlwZSkpZS5pbXBvcnRlZD10aGlzLnBhcnNlSWRlbnRpZmllcighMCksZS5pbXBvcnRLaW5kPW47ZWxzZXtpZihzKXRocm93IHRoaXMucmFpc2UodS5JbXBvcnRCaW5kaW5nSXNTdHJpbmcse2F0OmUsaW1wb3J0TmFtZTphLnZhbHVlfSk7ZS5pbXBvcnRlZD1hLGUuaW1wb3J0S2luZD1udWxsfXRoaXMuZWF0Q29udGV4dHVhbCg5Myk/ZS5sb2NhbD10aGlzLnBhcnNlSWRlbnRpZmllcigpOihvPSEwLGUubG9jYWw9Z2UoZS5pbXBvcnRlZCkpfWxldCBjPWNzKGUpO3JldHVybiByJiZjJiZ0aGlzLnJhaXNlKEkuSW1wb3J0VHlwZVNob3J0aGFuZE9ubHlJblB1cmVJbXBvcnQse2F0OmV9KSwocnx8YykmJnRoaXMuY2hlY2tSZXNlcnZlZFR5cGUoZS5sb2NhbC5uYW1lLGUubG9jYWwubG9jLnN0YXJ0LCEwKSxvJiYhciYmIWMmJnRoaXMuY2hlY2tSZXNlcnZlZFdvcmQoZS5sb2NhbC5uYW1lLGUubG9jLnN0YXJ0LCEwLCEwKSx0aGlzLmZpbmlzaEltcG9ydFNwZWNpZmllcihlLFwiSW1wb3J0U3BlY2lmaWVyXCIpfXBhcnNlQmluZGluZ0F0b20oKXtzd2l0Y2godGhpcy5zdGF0ZS50eXBlKXtjYXNlIDc4OnJldHVybiB0aGlzLnBhcnNlSWRlbnRpZmllcighMCk7ZGVmYXVsdDpyZXR1cm4gc3VwZXIucGFyc2VCaW5kaW5nQXRvbSgpfX1wYXJzZUZ1bmN0aW9uUGFyYW1zKGUscyl7bGV0IHI9ZS5raW5kO3IhPT1cImdldFwiJiZyIT09XCJzZXRcIiYmdGhpcy5tYXRjaCg0NykmJihlLnR5cGVQYXJhbWV0ZXJzPXRoaXMuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpLHN1cGVyLnBhcnNlRnVuY3Rpb25QYXJhbXMoZSxzKX1wYXJzZVZhcklkKGUscyl7c3VwZXIucGFyc2VWYXJJZChlLHMpLHRoaXMubWF0Y2goMTQpJiYoZS5pZC50eXBlQW5ub3RhdGlvbj10aGlzLmZsb3dQYXJzZVR5cGVBbm5vdGF0aW9uKCksdGhpcy5yZXNldEVuZExvY2F0aW9uKGUuaWQpKX1wYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24oZSxzKXtpZih0aGlzLm1hdGNoKDE0KSl7bGV0IHI9dGhpcy5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGU7dGhpcy5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGU9ITAsZS5yZXR1cm5UeXBlPXRoaXMuZmxvd1BhcnNlVHlwZUFubm90YXRpb24oKSx0aGlzLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZT1yfXJldHVybiBzdXBlci5wYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24oZSxzKX1zaG91bGRQYXJzZUFzeW5jQXJyb3coKXtyZXR1cm4gdGhpcy5tYXRjaCgxNCl8fHN1cGVyLnNob3VsZFBhcnNlQXN5bmNBcnJvdygpfXBhcnNlTWF5YmVBc3NpZ24oZSxzKXt2YXIgcjtsZXQgaT1udWxsLGE7aWYodGhpcy5oYXNQbHVnaW4oXCJqc3hcIikmJih0aGlzLm1hdGNoKDEzOCl8fHRoaXMubWF0Y2goNDcpKSl7aWYoaT10aGlzLnN0YXRlLmNsb25lKCksYT10aGlzLnRyeVBhcnNlKCgpPT5zdXBlci5wYXJzZU1heWJlQXNzaWduKGUscyksaSksIWEuZXJyb3IpcmV0dXJuIGEubm9kZTtsZXR7Y29udGV4dDpjfT10aGlzLnN0YXRlLGY9Y1tjLmxlbmd0aC0xXTsoZj09PXoual9vVGFnfHxmPT09ei5qX2V4cHIpJiZjLnBvcCgpfWlmKChyPWEpIT1udWxsJiZyLmVycm9yfHx0aGlzLm1hdGNoKDQ3KSl7dmFyIG4sbztpPWl8fHRoaXMuc3RhdGUuY2xvbmUoKTtsZXQgYyxmPXRoaXMudHJ5UGFyc2UoUD0+e3ZhciB2O2M9dGhpcy5mbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKTtsZXQgTj10aGlzLmZvcndhcmROb0Fycm93UGFyYW1zQ29udmVyc2lvbkF0KGMsKCk9PntsZXQgXz1zdXBlci5wYXJzZU1heWJlQXNzaWduKGUscyk7cmV0dXJuIHRoaXMucmVzZXRTdGFydExvY2F0aW9uRnJvbU5vZGUoXyxjKSxffSk7KHY9Ti5leHRyYSkhPW51bGwmJnYucGFyZW50aGVzaXplZCYmUCgpO2xldCBCPXRoaXMubWF5YmVVbndyYXBUeXBlQ2FzdEV4cHJlc3Npb24oTik7cmV0dXJuIEIudHlwZSE9PVwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiYmUCgpLEIudHlwZVBhcmFtZXRlcnM9Yyx0aGlzLnJlc2V0U3RhcnRMb2NhdGlvbkZyb21Ob2RlKEIsYyksTn0saSkseT1udWxsO2lmKGYubm9kZSYmdGhpcy5tYXliZVVud3JhcFR5cGVDYXN0RXhwcmVzc2lvbihmLm5vZGUpLnR5cGU9PT1cIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIpe2lmKCFmLmVycm9yJiYhZi5hYm9ydGVkKXJldHVybiBmLm5vZGUuYXN5bmMmJnRoaXMucmFpc2UoSS5VbmV4cGVjdGVkVHlwZVBhcmFtZXRlckJlZm9yZUFzeW5jQXJyb3dGdW5jdGlvbix7YXQ6Y30pLGYubm9kZTt5PWYubm9kZX1pZigobj1hKSE9bnVsbCYmbi5ub2RlKXJldHVybiB0aGlzLnN0YXRlPWEuZmFpbFN0YXRlLGEubm9kZTtpZih5KXJldHVybiB0aGlzLnN0YXRlPWYuZmFpbFN0YXRlLHk7dGhyb3cobz1hKSE9bnVsbCYmby50aHJvd24/YS5lcnJvcjpmLnRocm93bj9mLmVycm9yOnRoaXMucmFpc2UoSS5VbmV4cGVjdGVkVG9rZW5BZnRlclR5cGVQYXJhbWV0ZXIse2F0OmN9KX1yZXR1cm4gc3VwZXIucGFyc2VNYXliZUFzc2lnbihlLHMpfXBhcnNlQXJyb3coZSl7aWYodGhpcy5tYXRjaCgxNCkpe2xldCBzPXRoaXMudHJ5UGFyc2UoKCk9PntsZXQgcj10aGlzLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZTt0aGlzLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZT0hMDtsZXQgaT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybltpLnR5cGVBbm5vdGF0aW9uLGUucHJlZGljYXRlXT10aGlzLmZsb3dQYXJzZVR5cGVBbmRQcmVkaWNhdGVJbml0aWFsaXNlcigpLHRoaXMuc3RhdGUubm9Bbm9uRnVuY3Rpb25UeXBlPXIsdGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKSYmdGhpcy51bmV4cGVjdGVkKCksdGhpcy5tYXRjaCgxOSl8fHRoaXMudW5leHBlY3RlZCgpLGl9KTtpZihzLnRocm93bilyZXR1cm4gbnVsbDtzLmVycm9yJiYodGhpcy5zdGF0ZT1zLmZhaWxTdGF0ZSksZS5yZXR1cm5UeXBlPXMubm9kZS50eXBlQW5ub3RhdGlvbj90aGlzLmZpbmlzaE5vZGUocy5ub2RlLFwiVHlwZUFubm90YXRpb25cIik6bnVsbH1yZXR1cm4gc3VwZXIucGFyc2VBcnJvdyhlKX1zaG91bGRQYXJzZUFycm93KGUpe3JldHVybiB0aGlzLm1hdGNoKDE0KXx8c3VwZXIuc2hvdWxkUGFyc2VBcnJvdyhlKX1zZXRBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyhlLHMpe3RoaXMuc3RhdGUubm9BcnJvd1BhcmFtc0NvbnZlcnNpb25BdC5pbmRleE9mKGUuc3RhcnQpIT09LTE/ZS5wYXJhbXM9czpzdXBlci5zZXRBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyhlLHMpfWNoZWNrUGFyYW1zKGUscyxyKXtpZighKHImJnRoaXMuc3RhdGUubm9BcnJvd1BhcmFtc0NvbnZlcnNpb25BdC5pbmRleE9mKGUuc3RhcnQpIT09LTEpKXtmb3IobGV0IGk9MDtpPGUucGFyYW1zLmxlbmd0aDtpKyspdGhpcy5pc1RoaXNQYXJhbShlLnBhcmFtc1tpXSkmJmk+MCYmdGhpcy5yYWlzZShJLlRoaXNQYXJhbU11c3RCZUZpcnN0LHthdDplLnBhcmFtc1tpXX0pO3JldHVybiBzdXBlci5jaGVja1BhcmFtcyguLi5hcmd1bWVudHMpfX1wYXJzZVBhcmVuQW5kRGlzdGluZ3Vpc2hFeHByZXNzaW9uKGUpe3JldHVybiBzdXBlci5wYXJzZVBhcmVuQW5kRGlzdGluZ3Vpc2hFeHByZXNzaW9uKGUmJnRoaXMuc3RhdGUubm9BcnJvd0F0LmluZGV4T2YodGhpcy5zdGF0ZS5zdGFydCk9PT0tMSl9cGFyc2VTdWJzY3JpcHRzKGUscyxyLGkpe2lmKGUudHlwZT09PVwiSWRlbnRpZmllclwiJiZlLm5hbWU9PT1cImFzeW5jXCImJnRoaXMuc3RhdGUubm9BcnJvd0F0LmluZGV4T2YocykhPT0tMSl7dGhpcy5uZXh0KCk7bGV0IGE9dGhpcy5zdGFydE5vZGVBdChzLHIpO2EuY2FsbGVlPWUsYS5hcmd1bWVudHM9dGhpcy5wYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzKDExLCExKSxlPXRoaXMuZmluaXNoTm9kZShhLFwiQ2FsbEV4cHJlc3Npb25cIil9ZWxzZSBpZihlLnR5cGU9PT1cIklkZW50aWZpZXJcIiYmZS5uYW1lPT09XCJhc3luY1wiJiZ0aGlzLm1hdGNoKDQ3KSl7bGV0IGE9dGhpcy5zdGF0ZS5jbG9uZSgpLG49dGhpcy50cnlQYXJzZShjPT50aGlzLnBhcnNlQXN5bmNBcnJvd1dpdGhUeXBlUGFyYW1ldGVycyhzLHIpfHxjKCksYSk7aWYoIW4uZXJyb3ImJiFuLmFib3J0ZWQpcmV0dXJuIG4ubm9kZTtsZXQgbz10aGlzLnRyeVBhcnNlKCgpPT5zdXBlci5wYXJzZVN1YnNjcmlwdHMoZSxzLHIsaSksYSk7aWYoby5ub2RlJiYhby5lcnJvcilyZXR1cm4gby5ub2RlO2lmKG4ubm9kZSlyZXR1cm4gdGhpcy5zdGF0ZT1uLmZhaWxTdGF0ZSxuLm5vZGU7aWYoby5ub2RlKXJldHVybiB0aGlzLnN0YXRlPW8uZmFpbFN0YXRlLG8ubm9kZTt0aHJvdyBuLmVycm9yfHxvLmVycm9yfXJldHVybiBzdXBlci5wYXJzZVN1YnNjcmlwdHMoZSxzLHIsaSl9cGFyc2VTdWJzY3JpcHQoZSxzLHIsaSxhKXtpZih0aGlzLm1hdGNoKDE4KSYmdGhpcy5pc0xvb2thaGVhZFRva2VuX2x0KCkpe2lmKGEub3B0aW9uYWxDaGFpbk1lbWJlcj0hMCxpKXJldHVybiBhLnN0b3A9ITAsZTt0aGlzLm5leHQoKTtsZXQgbj10aGlzLnN0YXJ0Tm9kZUF0KHMscik7cmV0dXJuIG4uY2FsbGVlPWUsbi50eXBlQXJndW1lbnRzPXRoaXMuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24oKSx0aGlzLmV4cGVjdCgxMCksbi5hcmd1bWVudHM9dGhpcy5wYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzKDExLCExKSxuLm9wdGlvbmFsPSEwLHRoaXMuZmluaXNoQ2FsbEV4cHJlc3Npb24obiwhMCl9ZWxzZSBpZighaSYmdGhpcy5zaG91bGRQYXJzZVR5cGVzKCkmJnRoaXMubWF0Y2goNDcpKXtsZXQgbj10aGlzLnN0YXJ0Tm9kZUF0KHMscik7bi5jYWxsZWU9ZTtsZXQgbz10aGlzLnRyeVBhcnNlKCgpPT4obi50eXBlQXJndW1lbnRzPXRoaXMuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb25DYWxsT3JOZXcoKSx0aGlzLmV4cGVjdCgxMCksbi5hcmd1bWVudHM9dGhpcy5wYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzKDExLCExKSxhLm9wdGlvbmFsQ2hhaW5NZW1iZXImJihuLm9wdGlvbmFsPSExKSx0aGlzLmZpbmlzaENhbGxFeHByZXNzaW9uKG4sYS5vcHRpb25hbENoYWluTWVtYmVyKSkpO2lmKG8ubm9kZSlyZXR1cm4gby5lcnJvciYmKHRoaXMuc3RhdGU9by5mYWlsU3RhdGUpLG8ubm9kZX1yZXR1cm4gc3VwZXIucGFyc2VTdWJzY3JpcHQoZSxzLHIsaSxhKX1wYXJzZU5ld0NhbGxlZShlKXtzdXBlci5wYXJzZU5ld0NhbGxlZShlKTtsZXQgcz1udWxsO3RoaXMuc2hvdWxkUGFyc2VUeXBlcygpJiZ0aGlzLm1hdGNoKDQ3KSYmKHM9dGhpcy50cnlQYXJzZSgoKT0+dGhpcy5mbG93UGFyc2VUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbkNhbGxPck5ldygpKS5ub2RlKSxlLnR5cGVBcmd1bWVudHM9c31wYXJzZUFzeW5jQXJyb3dXaXRoVHlwZVBhcmFtZXRlcnMoZSxzKXtsZXQgcj10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7aWYodGhpcy5wYXJzZUZ1bmN0aW9uUGFyYW1zKHIpLCEhdGhpcy5wYXJzZUFycm93KHIpKXJldHVybiB0aGlzLnBhcnNlQXJyb3dFeHByZXNzaW9uKHIsdm9pZCAwLCEwKX1yZWFkVG9rZW5fbXVsdF9tb2R1bG8oZSl7bGV0IHM9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpO2lmKGU9PT00MiYmcz09PTQ3JiZ0aGlzLnN0YXRlLmhhc0Zsb3dDb21tZW50KXt0aGlzLnN0YXRlLmhhc0Zsb3dDb21tZW50PSExLHRoaXMuc3RhdGUucG9zKz0yLHRoaXMubmV4dFRva2VuKCk7cmV0dXJufXN1cGVyLnJlYWRUb2tlbl9tdWx0X21vZHVsbyhlKX1yZWFkVG9rZW5fcGlwZV9hbXAoZSl7bGV0IHM9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKzEpO2lmKGU9PT0xMjQmJnM9PT0xMjUpe3RoaXMuZmluaXNoT3AoOSwyKTtyZXR1cm59c3VwZXIucmVhZFRva2VuX3BpcGVfYW1wKGUpfXBhcnNlVG9wTGV2ZWwoZSxzKXtsZXQgcj1zdXBlci5wYXJzZVRvcExldmVsKGUscyk7cmV0dXJuIHRoaXMuc3RhdGUuaGFzRmxvd0NvbW1lbnQmJnRoaXMucmFpc2UoSS5VbnRlcm1pbmF0ZWRGbG93Q29tbWVudCx7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSkscn1za2lwQmxvY2tDb21tZW50KCl7aWYodGhpcy5oYXNQbHVnaW4oXCJmbG93Q29tbWVudHNcIikmJnRoaXMuc2tpcEZsb3dDb21tZW50KCkpe2lmKHRoaXMuc3RhdGUuaGFzRmxvd0NvbW1lbnQpdGhyb3cgdGhpcy5yYWlzZShJLk5lc3RlZEZsb3dDb21tZW50LHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7dGhpcy5oYXNGbG93Q29tbWVudENvbXBsZXRpb24oKSx0aGlzLnN0YXRlLnBvcys9dGhpcy5za2lwRmxvd0NvbW1lbnQoKSx0aGlzLnN0YXRlLmhhc0Zsb3dDb21tZW50PSEwO3JldHVybn1pZih0aGlzLnN0YXRlLmhhc0Zsb3dDb21tZW50KXtsZXQgZT10aGlzLmlucHV0LmluZGV4T2YoXCIqLS9cIix0aGlzLnN0YXRlLnBvcysyKTtpZihlPT09LTEpdGhyb3cgdGhpcy5yYWlzZSh1LlVudGVybWluYXRlZENvbW1lbnQse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pO3RoaXMuc3RhdGUucG9zPWUrMiszO3JldHVybn1yZXR1cm4gc3VwZXIuc2tpcEJsb2NrQ29tbWVudCgpfXNraXBGbG93Q29tbWVudCgpe2xldHtwb3M6ZX09dGhpcy5zdGF0ZSxzPTI7Zm9yKDtbMzIsOV0uaW5jbHVkZXModGhpcy5pbnB1dC5jaGFyQ29kZUF0KGUrcykpOylzKys7bGV0IHI9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHMrZSksaT10aGlzLmlucHV0LmNoYXJDb2RlQXQocytlKzEpO3JldHVybiByPT09NTgmJmk9PT01OD9zKzI6dGhpcy5pbnB1dC5zbGljZShzK2UscytlKzEyKT09PVwiZmxvdy1pbmNsdWRlXCI/cysxMjpyPT09NTgmJmkhPT01OD9zOiExfWhhc0Zsb3dDb21tZW50Q29tcGxldGlvbigpe2lmKHRoaXMuaW5wdXQuaW5kZXhPZihcIiovXCIsdGhpcy5zdGF0ZS5wb3MpPT09LTEpdGhyb3cgdGhpcy5yYWlzZSh1LlVudGVybWluYXRlZENvbW1lbnQse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pfWZsb3dFbnVtRXJyb3JCb29sZWFuTWVtYmVyTm90SW5pdGlhbGl6ZWQoZSxzKXtsZXR7ZW51bU5hbWU6cixtZW1iZXJOYW1lOml9PXM7dGhpcy5yYWlzZShJLkVudW1Cb29sZWFuTWVtYmVyTm90SW5pdGlhbGl6ZWQse2F0OmUsbWVtYmVyTmFtZTppLGVudW1OYW1lOnJ9KX1mbG93RW51bUVycm9ySW52YWxpZE1lbWJlckluaXRpYWxpemVyKGUscyl7cmV0dXJuIHRoaXMucmFpc2Uocy5leHBsaWNpdFR5cGU/cy5leHBsaWNpdFR5cGU9PT1cInN5bWJvbFwiP0kuRW51bUludmFsaWRNZW1iZXJJbml0aWFsaXplclN5bWJvbFR5cGU6SS5FbnVtSW52YWxpZE1lbWJlckluaXRpYWxpemVyUHJpbWFyeVR5cGU6SS5FbnVtSW52YWxpZE1lbWJlckluaXRpYWxpemVyVW5rbm93blR5cGUsT2JqZWN0LmFzc2lnbih7YXQ6ZX0scykpfWZsb3dFbnVtRXJyb3JOdW1iZXJNZW1iZXJOb3RJbml0aWFsaXplZChlLHMpe2xldHtlbnVtTmFtZTpyLG1lbWJlck5hbWU6aX09czt0aGlzLnJhaXNlKEkuRW51bU51bWJlck1lbWJlck5vdEluaXRpYWxpemVkLHthdDplLGVudW1OYW1lOnIsbWVtYmVyTmFtZTppfSl9Zmxvd0VudW1FcnJvclN0cmluZ01lbWJlckluY29uc2lzdGVudGx5SW5pdGFpbGl6ZWQoZSxzKXtsZXR7ZW51bU5hbWU6cn09czt0aGlzLnJhaXNlKEkuRW51bVN0cmluZ01lbWJlckluY29uc2lzdGVudGx5SW5pdGFpbGl6ZWQse2F0OmUsZW51bU5hbWU6cn0pfWZsb3dFbnVtTWVtYmVySW5pdCgpe2xldCBlPXRoaXMuc3RhdGUuc3RhcnRMb2Mscz0oKT0+dGhpcy5tYXRjaCgxMil8fHRoaXMubWF0Y2goOCk7c3dpdGNoKHRoaXMuc3RhdGUudHlwZSl7Y2FzZSAxMzA6e2xldCByPXRoaXMucGFyc2VOdW1lcmljTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlKTtyZXR1cm4gcygpP3t0eXBlOlwibnVtYmVyXCIsbG9jOnIubG9jLnN0YXJ0LHZhbHVlOnJ9Ont0eXBlOlwiaW52YWxpZFwiLGxvYzplfX1jYXNlIDEyOTp7bGV0IHI9dGhpcy5wYXJzZVN0cmluZ0xpdGVyYWwodGhpcy5zdGF0ZS52YWx1ZSk7cmV0dXJuIHMoKT97dHlwZTpcInN0cmluZ1wiLGxvYzpyLmxvYy5zdGFydCx2YWx1ZTpyfTp7dHlwZTpcImludmFsaWRcIixsb2M6ZX19Y2FzZSA4NTpjYXNlIDg2OntsZXQgcj10aGlzLnBhcnNlQm9vbGVhbkxpdGVyYWwodGhpcy5tYXRjaCg4NSkpO3JldHVybiBzKCk/e3R5cGU6XCJib29sZWFuXCIsbG9jOnIubG9jLnN0YXJ0LHZhbHVlOnJ9Ont0eXBlOlwiaW52YWxpZFwiLGxvYzplfX1kZWZhdWx0OnJldHVybnt0eXBlOlwiaW52YWxpZFwiLGxvYzplfX19Zmxvd0VudW1NZW1iZXJSYXcoKXtsZXQgZT10aGlzLnN0YXRlLnN0YXJ0TG9jLHM9dGhpcy5wYXJzZUlkZW50aWZpZXIoITApLHI9dGhpcy5lYXQoMjkpP3RoaXMuZmxvd0VudW1NZW1iZXJJbml0KCk6e3R5cGU6XCJub25lXCIsbG9jOmV9O3JldHVybntpZDpzLGluaXQ6cn19Zmxvd0VudW1DaGVja0V4cGxpY2l0VHlwZU1pc21hdGNoKGUscyxyKXtsZXR7ZXhwbGljaXRUeXBlOml9PXM7aSE9PW51bGwmJmkhPT1yJiZ0aGlzLmZsb3dFbnVtRXJyb3JJbnZhbGlkTWVtYmVySW5pdGlhbGl6ZXIoZSxzKX1mbG93RW51bU1lbWJlcnMoZSl7bGV0e2VudW1OYW1lOnMsZXhwbGljaXRUeXBlOnJ9PWUsaT1uZXcgU2V0LGE9e2Jvb2xlYW5NZW1iZXJzOltdLG51bWJlck1lbWJlcnM6W10sc3RyaW5nTWVtYmVyczpbXSxkZWZhdWx0ZWRNZW1iZXJzOltdfSxuPSExO2Zvcig7IXRoaXMubWF0Y2goOCk7KXtpZih0aGlzLmVhdCgyMSkpe249ITA7YnJlYWt9bGV0IG89dGhpcy5zdGFydE5vZGUoKSx7aWQ6Yyxpbml0OmZ9PXRoaXMuZmxvd0VudW1NZW1iZXJSYXcoKSx5PWMubmFtZTtpZih5PT09XCJcIiljb250aW51ZTsvXlthLXpdLy50ZXN0KHkpJiZ0aGlzLnJhaXNlKEkuRW51bUludmFsaWRNZW1iZXJOYW1lLHthdDpjLG1lbWJlck5hbWU6eSxzdWdnZXN0aW9uOnlbMF0udG9VcHBlckNhc2UoKSt5LnNsaWNlKDEpLGVudW1OYW1lOnN9KSxpLmhhcyh5KSYmdGhpcy5yYWlzZShJLkVudW1EdXBsaWNhdGVNZW1iZXJOYW1lLHthdDpjLG1lbWJlck5hbWU6eSxlbnVtTmFtZTpzfSksaS5hZGQoeSk7bGV0IFA9e2VudW1OYW1lOnMsZXhwbGljaXRUeXBlOnIsbWVtYmVyTmFtZTp5fTtzd2l0Y2goby5pZD1jLGYudHlwZSl7Y2FzZVwiYm9vbGVhblwiOnt0aGlzLmZsb3dFbnVtQ2hlY2tFeHBsaWNpdFR5cGVNaXNtYXRjaChmLmxvYyxQLFwiYm9vbGVhblwiKSxvLmluaXQ9Zi52YWx1ZSxhLmJvb2xlYW5NZW1iZXJzLnB1c2godGhpcy5maW5pc2hOb2RlKG8sXCJFbnVtQm9vbGVhbk1lbWJlclwiKSk7YnJlYWt9Y2FzZVwibnVtYmVyXCI6e3RoaXMuZmxvd0VudW1DaGVja0V4cGxpY2l0VHlwZU1pc21hdGNoKGYubG9jLFAsXCJudW1iZXJcIiksby5pbml0PWYudmFsdWUsYS5udW1iZXJNZW1iZXJzLnB1c2godGhpcy5maW5pc2hOb2RlKG8sXCJFbnVtTnVtYmVyTWVtYmVyXCIpKTticmVha31jYXNlXCJzdHJpbmdcIjp7dGhpcy5mbG93RW51bUNoZWNrRXhwbGljaXRUeXBlTWlzbWF0Y2goZi5sb2MsUCxcInN0cmluZ1wiKSxvLmluaXQ9Zi52YWx1ZSxhLnN0cmluZ01lbWJlcnMucHVzaCh0aGlzLmZpbmlzaE5vZGUobyxcIkVudW1TdHJpbmdNZW1iZXJcIikpO2JyZWFrfWNhc2VcImludmFsaWRcIjp0aHJvdyB0aGlzLmZsb3dFbnVtRXJyb3JJbnZhbGlkTWVtYmVySW5pdGlhbGl6ZXIoZi5sb2MsUCk7Y2FzZVwibm9uZVwiOnN3aXRjaChyKXtjYXNlXCJib29sZWFuXCI6dGhpcy5mbG93RW51bUVycm9yQm9vbGVhbk1lbWJlck5vdEluaXRpYWxpemVkKGYubG9jLFApO2JyZWFrO2Nhc2VcIm51bWJlclwiOnRoaXMuZmxvd0VudW1FcnJvck51bWJlck1lbWJlck5vdEluaXRpYWxpemVkKGYubG9jLFApO2JyZWFrO2RlZmF1bHQ6YS5kZWZhdWx0ZWRNZW1iZXJzLnB1c2godGhpcy5maW5pc2hOb2RlKG8sXCJFbnVtRGVmYXVsdGVkTWVtYmVyXCIpKX19dGhpcy5tYXRjaCg4KXx8dGhpcy5leHBlY3QoMTIpfXJldHVybnttZW1iZXJzOmEsaGFzVW5rbm93bk1lbWJlcnM6bn19Zmxvd0VudW1TdHJpbmdNZW1iZXJzKGUscyxyKXtsZXR7ZW51bU5hbWU6aX09cjtpZihlLmxlbmd0aD09PTApcmV0dXJuIHM7aWYocy5sZW5ndGg9PT0wKXJldHVybiBlO2lmKHMubGVuZ3RoPmUubGVuZ3RoKXtmb3IobGV0IGEgb2YgZSl0aGlzLmZsb3dFbnVtRXJyb3JTdHJpbmdNZW1iZXJJbmNvbnNpc3RlbnRseUluaXRhaWxpemVkKGEse2VudW1OYW1lOml9KTtyZXR1cm4gc31lbHNle2ZvcihsZXQgYSBvZiBzKXRoaXMuZmxvd0VudW1FcnJvclN0cmluZ01lbWJlckluY29uc2lzdGVudGx5SW5pdGFpbGl6ZWQoYSx7ZW51bU5hbWU6aX0pO3JldHVybiBlfX1mbG93RW51bVBhcnNlRXhwbGljaXRUeXBlKGUpe2xldHtlbnVtTmFtZTpzfT1lO2lmKCF0aGlzLmVhdENvbnRleHR1YWwoMTAxKSlyZXR1cm4gbnVsbDtpZighSyh0aGlzLnN0YXRlLnR5cGUpKXRocm93IHRoaXMucmFpc2UoSS5FbnVtSW52YWxpZEV4cGxpY2l0VHlwZVVua25vd25TdXBwbGllZCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvYyxlbnVtTmFtZTpzfSk7bGV0e3ZhbHVlOnJ9PXRoaXMuc3RhdGU7cmV0dXJuIHRoaXMubmV4dCgpLHIhPT1cImJvb2xlYW5cIiYmciE9PVwibnVtYmVyXCImJnIhPT1cInN0cmluZ1wiJiZyIT09XCJzeW1ib2xcIiYmdGhpcy5yYWlzZShJLkVudW1JbnZhbGlkRXhwbGljaXRUeXBlLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jLGVudW1OYW1lOnMsaW52YWxpZEVudW1UeXBlOnJ9KSxyfWZsb3dFbnVtQm9keShlLHMpe2xldCByPXMubmFtZSxpPXMubG9jLnN0YXJ0LGE9dGhpcy5mbG93RW51bVBhcnNlRXhwbGljaXRUeXBlKHtlbnVtTmFtZTpyfSk7dGhpcy5leHBlY3QoNSk7bGV0e21lbWJlcnM6bixoYXNVbmtub3duTWVtYmVyczpvfT10aGlzLmZsb3dFbnVtTWVtYmVycyh7ZW51bU5hbWU6cixleHBsaWNpdFR5cGU6YX0pO3N3aXRjaChlLmhhc1Vua25vd25NZW1iZXJzPW8sYSl7Y2FzZVwiYm9vbGVhblwiOnJldHVybiBlLmV4cGxpY2l0VHlwZT0hMCxlLm1lbWJlcnM9bi5ib29sZWFuTWVtYmVycyx0aGlzLmV4cGVjdCg4KSx0aGlzLmZpbmlzaE5vZGUoZSxcIkVudW1Cb29sZWFuQm9keVwiKTtjYXNlXCJudW1iZXJcIjpyZXR1cm4gZS5leHBsaWNpdFR5cGU9ITAsZS5tZW1iZXJzPW4ubnVtYmVyTWVtYmVycyx0aGlzLmV4cGVjdCg4KSx0aGlzLmZpbmlzaE5vZGUoZSxcIkVudW1OdW1iZXJCb2R5XCIpO2Nhc2VcInN0cmluZ1wiOnJldHVybiBlLmV4cGxpY2l0VHlwZT0hMCxlLm1lbWJlcnM9dGhpcy5mbG93RW51bVN0cmluZ01lbWJlcnMobi5zdHJpbmdNZW1iZXJzLG4uZGVmYXVsdGVkTWVtYmVycyx7ZW51bU5hbWU6cn0pLHRoaXMuZXhwZWN0KDgpLHRoaXMuZmluaXNoTm9kZShlLFwiRW51bVN0cmluZ0JvZHlcIik7Y2FzZVwic3ltYm9sXCI6cmV0dXJuIGUubWVtYmVycz1uLmRlZmF1bHRlZE1lbWJlcnMsdGhpcy5leHBlY3QoOCksdGhpcy5maW5pc2hOb2RlKGUsXCJFbnVtU3ltYm9sQm9keVwiKTtkZWZhdWx0OntsZXQgYz0oKT0+KGUubWVtYmVycz1bXSx0aGlzLmV4cGVjdCg4KSx0aGlzLmZpbmlzaE5vZGUoZSxcIkVudW1TdHJpbmdCb2R5XCIpKTtlLmV4cGxpY2l0VHlwZT0hMTtsZXQgZj1uLmJvb2xlYW5NZW1iZXJzLmxlbmd0aCx5PW4ubnVtYmVyTWVtYmVycy5sZW5ndGgsUD1uLnN0cmluZ01lbWJlcnMubGVuZ3RoLHY9bi5kZWZhdWx0ZWRNZW1iZXJzLmxlbmd0aDtpZighZiYmIXkmJiFQJiYhdilyZXR1cm4gYygpO2lmKCFmJiYheSlyZXR1cm4gZS5tZW1iZXJzPXRoaXMuZmxvd0VudW1TdHJpbmdNZW1iZXJzKG4uc3RyaW5nTWVtYmVycyxuLmRlZmF1bHRlZE1lbWJlcnMse2VudW1OYW1lOnJ9KSx0aGlzLmV4cGVjdCg4KSx0aGlzLmZpbmlzaE5vZGUoZSxcIkVudW1TdHJpbmdCb2R5XCIpO2lmKCF5JiYhUCYmZj49dil7Zm9yKGxldCBOIG9mIG4uZGVmYXVsdGVkTWVtYmVycyl0aGlzLmZsb3dFbnVtRXJyb3JCb29sZWFuTWVtYmVyTm90SW5pdGlhbGl6ZWQoTi5sb2Muc3RhcnQse2VudW1OYW1lOnIsbWVtYmVyTmFtZTpOLmlkLm5hbWV9KTtyZXR1cm4gZS5tZW1iZXJzPW4uYm9vbGVhbk1lbWJlcnMsdGhpcy5leHBlY3QoOCksdGhpcy5maW5pc2hOb2RlKGUsXCJFbnVtQm9vbGVhbkJvZHlcIil9ZWxzZSBpZighZiYmIVAmJnk+PXYpe2ZvcihsZXQgTiBvZiBuLmRlZmF1bHRlZE1lbWJlcnMpdGhpcy5mbG93RW51bUVycm9yTnVtYmVyTWVtYmVyTm90SW5pdGlhbGl6ZWQoTi5sb2Muc3RhcnQse2VudW1OYW1lOnIsbWVtYmVyTmFtZTpOLmlkLm5hbWV9KTtyZXR1cm4gZS5tZW1iZXJzPW4ubnVtYmVyTWVtYmVycyx0aGlzLmV4cGVjdCg4KSx0aGlzLmZpbmlzaE5vZGUoZSxcIkVudW1OdW1iZXJCb2R5XCIpfWVsc2UgcmV0dXJuIHRoaXMucmFpc2UoSS5FbnVtSW5jb25zaXN0ZW50TWVtYmVyVmFsdWVzLHthdDppLGVudW1OYW1lOnJ9KSxjKCl9fX1mbG93UGFyc2VFbnVtRGVjbGFyYXRpb24oZSl7bGV0IHM9dGhpcy5wYXJzZUlkZW50aWZpZXIoKTtyZXR1cm4gZS5pZD1zLGUuYm9keT10aGlzLmZsb3dFbnVtQm9keSh0aGlzLnN0YXJ0Tm9kZSgpLHMpLHRoaXMuZmluaXNoTm9kZShlLFwiRW51bURlY2xhcmF0aW9uXCIpfWlzTG9va2FoZWFkVG9rZW5fbHQoKXtsZXQgZT10aGlzLm5leHRUb2tlblN0YXJ0KCk7aWYodGhpcy5pbnB1dC5jaGFyQ29kZUF0KGUpPT09NjApe2xldCBzPXRoaXMuaW5wdXQuY2hhckNvZGVBdChlKzEpO3JldHVybiBzIT09NjAmJnMhPT02MX1yZXR1cm4hMX1tYXliZVVud3JhcFR5cGVDYXN0RXhwcmVzc2lvbihlKXtyZXR1cm4gZS50eXBlPT09XCJUeXBlQ2FzdEV4cHJlc3Npb25cIj9lLmV4cHJlc3Npb246ZX19LEZoPXtfX3Byb3RvX186bnVsbCxxdW90OidcIicsYW1wOlwiJlwiLGFwb3M6XCInXCIsbHQ6XCI8XCIsZ3Q6XCI+XCIsbmJzcDpcIlxceEEwXCIsaWV4Y2w6XCJcXHhBMVwiLGNlbnQ6XCJcXHhBMlwiLHBvdW5kOlwiXFx4QTNcIixjdXJyZW46XCJcXHhBNFwiLHllbjpcIlxceEE1XCIsYnJ2YmFyOlwiXFx4QTZcIixzZWN0OlwiXFx4QTdcIix1bWw6XCJcXHhBOFwiLGNvcHk6XCJcXHhBOVwiLG9yZGY6XCJcXHhBQVwiLGxhcXVvOlwiXFx4QUJcIixub3Q6XCJcXHhBQ1wiLHNoeTpcIlxceEFEXCIscmVnOlwiXFx4QUVcIixtYWNyOlwiXFx4QUZcIixkZWc6XCJcXHhCMFwiLHBsdXNtbjpcIlxceEIxXCIsc3VwMjpcIlxceEIyXCIsc3VwMzpcIlxceEIzXCIsYWN1dGU6XCJcXHhCNFwiLG1pY3JvOlwiXFx4QjVcIixwYXJhOlwiXFx4QjZcIixtaWRkb3Q6XCJcXHhCN1wiLGNlZGlsOlwiXFx4QjhcIixzdXAxOlwiXFx4QjlcIixvcmRtOlwiXFx4QkFcIixyYXF1bzpcIlxceEJCXCIsZnJhYzE0OlwiXFx4QkNcIixmcmFjMTI6XCJcXHhCRFwiLGZyYWMzNDpcIlxceEJFXCIsaXF1ZXN0OlwiXFx4QkZcIixBZ3JhdmU6XCJcXHhDMFwiLEFhY3V0ZTpcIlxceEMxXCIsQWNpcmM6XCJcXHhDMlwiLEF0aWxkZTpcIlxceEMzXCIsQXVtbDpcIlxceEM0XCIsQXJpbmc6XCJcXHhDNVwiLEFFbGlnOlwiXFx4QzZcIixDY2VkaWw6XCJcXHhDN1wiLEVncmF2ZTpcIlxceEM4XCIsRWFjdXRlOlwiXFx4QzlcIixFY2lyYzpcIlxceENBXCIsRXVtbDpcIlxceENCXCIsSWdyYXZlOlwiXFx4Q0NcIixJYWN1dGU6XCJcXHhDRFwiLEljaXJjOlwiXFx4Q0VcIixJdW1sOlwiXFx4Q0ZcIixFVEg6XCJcXHhEMFwiLE50aWxkZTpcIlxceEQxXCIsT2dyYXZlOlwiXFx4RDJcIixPYWN1dGU6XCJcXHhEM1wiLE9jaXJjOlwiXFx4RDRcIixPdGlsZGU6XCJcXHhENVwiLE91bWw6XCJcXHhENlwiLHRpbWVzOlwiXFx4RDdcIixPc2xhc2g6XCJcXHhEOFwiLFVncmF2ZTpcIlxceEQ5XCIsVWFjdXRlOlwiXFx4REFcIixVY2lyYzpcIlxceERCXCIsVXVtbDpcIlxceERDXCIsWWFjdXRlOlwiXFx4RERcIixUSE9STjpcIlxceERFXCIsc3psaWc6XCJcXHhERlwiLGFncmF2ZTpcIlxceEUwXCIsYWFjdXRlOlwiXFx4RTFcIixhY2lyYzpcIlxceEUyXCIsYXRpbGRlOlwiXFx4RTNcIixhdW1sOlwiXFx4RTRcIixhcmluZzpcIlxceEU1XCIsYWVsaWc6XCJcXHhFNlwiLGNjZWRpbDpcIlxceEU3XCIsZWdyYXZlOlwiXFx4RThcIixlYWN1dGU6XCJcXHhFOVwiLGVjaXJjOlwiXFx4RUFcIixldW1sOlwiXFx4RUJcIixpZ3JhdmU6XCJcXHhFQ1wiLGlhY3V0ZTpcIlxceEVEXCIsaWNpcmM6XCJcXHhFRVwiLGl1bWw6XCJcXHhFRlwiLGV0aDpcIlxceEYwXCIsbnRpbGRlOlwiXFx4RjFcIixvZ3JhdmU6XCJcXHhGMlwiLG9hY3V0ZTpcIlxceEYzXCIsb2NpcmM6XCJcXHhGNFwiLG90aWxkZTpcIlxceEY1XCIsb3VtbDpcIlxceEY2XCIsZGl2aWRlOlwiXFx4RjdcIixvc2xhc2g6XCJcXHhGOFwiLHVncmF2ZTpcIlxceEY5XCIsdWFjdXRlOlwiXFx4RkFcIix1Y2lyYzpcIlxceEZCXCIsdXVtbDpcIlxceEZDXCIseWFjdXRlOlwiXFx4RkRcIix0aG9ybjpcIlxceEZFXCIseXVtbDpcIlxceEZGXCIsT0VsaWc6XCJcXHUwMTUyXCIsb2VsaWc6XCJcXHUwMTUzXCIsU2Nhcm9uOlwiXFx1MDE2MFwiLHNjYXJvbjpcIlxcdTAxNjFcIixZdW1sOlwiXFx1MDE3OFwiLGZub2Y6XCJcXHUwMTkyXCIsY2lyYzpcIlxcdTAyQzZcIix0aWxkZTpcIlxcdTAyRENcIixBbHBoYTpcIlxcdTAzOTFcIixCZXRhOlwiXFx1MDM5MlwiLEdhbW1hOlwiXFx1MDM5M1wiLERlbHRhOlwiXFx1MDM5NFwiLEVwc2lsb246XCJcXHUwMzk1XCIsWmV0YTpcIlxcdTAzOTZcIixFdGE6XCJcXHUwMzk3XCIsVGhldGE6XCJcXHUwMzk4XCIsSW90YTpcIlxcdTAzOTlcIixLYXBwYTpcIlxcdTAzOUFcIixMYW1iZGE6XCJcXHUwMzlCXCIsTXU6XCJcXHUwMzlDXCIsTnU6XCJcXHUwMzlEXCIsWGk6XCJcXHUwMzlFXCIsT21pY3JvbjpcIlxcdTAzOUZcIixQaTpcIlxcdTAzQTBcIixSaG86XCJcXHUwM0ExXCIsU2lnbWE6XCJcXHUwM0EzXCIsVGF1OlwiXFx1MDNBNFwiLFVwc2lsb246XCJcXHUwM0E1XCIsUGhpOlwiXFx1MDNBNlwiLENoaTpcIlxcdTAzQTdcIixQc2k6XCJcXHUwM0E4XCIsT21lZ2E6XCJcXHUwM0E5XCIsYWxwaGE6XCJcXHUwM0IxXCIsYmV0YTpcIlxcdTAzQjJcIixnYW1tYTpcIlxcdTAzQjNcIixkZWx0YTpcIlxcdTAzQjRcIixlcHNpbG9uOlwiXFx1MDNCNVwiLHpldGE6XCJcXHUwM0I2XCIsZXRhOlwiXFx1MDNCN1wiLHRoZXRhOlwiXFx1MDNCOFwiLGlvdGE6XCJcXHUwM0I5XCIsa2FwcGE6XCJcXHUwM0JBXCIsbGFtYmRhOlwiXFx1MDNCQlwiLG11OlwiXFx1MDNCQ1wiLG51OlwiXFx1MDNCRFwiLHhpOlwiXFx1MDNCRVwiLG9taWNyb246XCJcXHUwM0JGXCIscGk6XCJcXHUwM0MwXCIscmhvOlwiXFx1MDNDMVwiLHNpZ21hZjpcIlxcdTAzQzJcIixzaWdtYTpcIlxcdTAzQzNcIix0YXU6XCJcXHUwM0M0XCIsdXBzaWxvbjpcIlxcdTAzQzVcIixwaGk6XCJcXHUwM0M2XCIsY2hpOlwiXFx1MDNDN1wiLHBzaTpcIlxcdTAzQzhcIixvbWVnYTpcIlxcdTAzQzlcIix0aGV0YXN5bTpcIlxcdTAzRDFcIix1cHNpaDpcIlxcdTAzRDJcIixwaXY6XCJcXHUwM0Q2XCIsZW5zcDpcIlxcdTIwMDJcIixlbXNwOlwiXFx1MjAwM1wiLHRoaW5zcDpcIlxcdTIwMDlcIix6d25qOlwiXFx1MjAwQ1wiLHp3ajpcIlxcdTIwMERcIixscm06XCJcXHUyMDBFXCIscmxtOlwiXFx1MjAwRlwiLG5kYXNoOlwiXFx1MjAxM1wiLG1kYXNoOlwiXFx1MjAxNFwiLGxzcXVvOlwiXFx1MjAxOFwiLHJzcXVvOlwiXFx1MjAxOVwiLHNicXVvOlwiXFx1MjAxQVwiLGxkcXVvOlwiXFx1MjAxQ1wiLHJkcXVvOlwiXFx1MjAxRFwiLGJkcXVvOlwiXFx1MjAxRVwiLGRhZ2dlcjpcIlxcdTIwMjBcIixEYWdnZXI6XCJcXHUyMDIxXCIsYnVsbDpcIlxcdTIwMjJcIixoZWxsaXA6XCJcXHUyMDI2XCIscGVybWlsOlwiXFx1MjAzMFwiLHByaW1lOlwiXFx1MjAzMlwiLFByaW1lOlwiXFx1MjAzM1wiLGxzYXF1bzpcIlxcdTIwMzlcIixyc2FxdW86XCJcXHUyMDNBXCIsb2xpbmU6XCJcXHUyMDNFXCIsZnJhc2w6XCJcXHUyMDQ0XCIsZXVybzpcIlxcdTIwQUNcIixpbWFnZTpcIlxcdTIxMTFcIix3ZWllcnA6XCJcXHUyMTE4XCIscmVhbDpcIlxcdTIxMUNcIix0cmFkZTpcIlxcdTIxMjJcIixhbGVmc3ltOlwiXFx1MjEzNVwiLGxhcnI6XCJcXHUyMTkwXCIsdWFycjpcIlxcdTIxOTFcIixyYXJyOlwiXFx1MjE5MlwiLGRhcnI6XCJcXHUyMTkzXCIsaGFycjpcIlxcdTIxOTRcIixjcmFycjpcIlxcdTIxQjVcIixsQXJyOlwiXFx1MjFEMFwiLHVBcnI6XCJcXHUyMUQxXCIsckFycjpcIlxcdTIxRDJcIixkQXJyOlwiXFx1MjFEM1wiLGhBcnI6XCJcXHUyMUQ0XCIsZm9yYWxsOlwiXFx1MjIwMFwiLHBhcnQ6XCJcXHUyMjAyXCIsZXhpc3Q6XCJcXHUyMjAzXCIsZW1wdHk6XCJcXHUyMjA1XCIsbmFibGE6XCJcXHUyMjA3XCIsaXNpbjpcIlxcdTIyMDhcIixub3RpbjpcIlxcdTIyMDlcIixuaTpcIlxcdTIyMEJcIixwcm9kOlwiXFx1MjIwRlwiLHN1bTpcIlxcdTIyMTFcIixtaW51czpcIlxcdTIyMTJcIixsb3dhc3Q6XCJcXHUyMjE3XCIscmFkaWM6XCJcXHUyMjFBXCIscHJvcDpcIlxcdTIyMURcIixpbmZpbjpcIlxcdTIyMUVcIixhbmc6XCJcXHUyMjIwXCIsYW5kOlwiXFx1MjIyN1wiLG9yOlwiXFx1MjIyOFwiLGNhcDpcIlxcdTIyMjlcIixjdXA6XCJcXHUyMjJBXCIsaW50OlwiXFx1MjIyQlwiLHRoZXJlNDpcIlxcdTIyMzRcIixzaW06XCJcXHUyMjNDXCIsY29uZzpcIlxcdTIyNDVcIixhc3ltcDpcIlxcdTIyNDhcIixuZTpcIlxcdTIyNjBcIixlcXVpdjpcIlxcdTIyNjFcIixsZTpcIlxcdTIyNjRcIixnZTpcIlxcdTIyNjVcIixzdWI6XCJcXHUyMjgyXCIsc3VwOlwiXFx1MjI4M1wiLG5zdWI6XCJcXHUyMjg0XCIsc3ViZTpcIlxcdTIyODZcIixzdXBlOlwiXFx1MjI4N1wiLG9wbHVzOlwiXFx1MjI5NVwiLG90aW1lczpcIlxcdTIyOTdcIixwZXJwOlwiXFx1MjJBNVwiLHNkb3Q6XCJcXHUyMkM1XCIsbGNlaWw6XCJcXHUyMzA4XCIscmNlaWw6XCJcXHUyMzA5XCIsbGZsb29yOlwiXFx1MjMwQVwiLHJmbG9vcjpcIlxcdTIzMEJcIixsYW5nOlwiXFx1MjMyOVwiLHJhbmc6XCJcXHUyMzJBXCIsbG96OlwiXFx1MjVDQVwiLHNwYWRlczpcIlxcdTI2NjBcIixjbHViczpcIlxcdTI2NjNcIixoZWFydHM6XCJcXHUyNjY1XCIsZGlhbXM6XCJcXHUyNjY2XCJ9LEllPWooS258fChLbj1ydChbXCJqc3hcIl0pKSkodD0+KHtBdHRyaWJ1dGVJc0VtcHR5OnQoXCJKU1ggYXR0cmlidXRlcyBtdXN0IG9ubHkgYmUgYXNzaWduZWQgYSBub24tZW1wdHkgZXhwcmVzc2lvbi5cIiksTWlzc2luZ0Nsb3NpbmdUYWdFbGVtZW50OnQoZT0+e2xldHtvcGVuaW5nVGFnTmFtZTpzfT1lO3JldHVyblwiRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDxcIi5jb25jYXQocyxcIj4uXCIpfSksTWlzc2luZ0Nsb3NpbmdUYWdGcmFnbWVudDp0KFwiRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDw+LlwiKSxVbmV4cGVjdGVkU2VxdWVuY2VFeHByZXNzaW9uOnQoXCJTZXF1ZW5jZSBleHByZXNzaW9ucyBjYW5ub3QgYmUgZGlyZWN0bHkgbmVzdGVkIGluc2lkZSBKU1guIERpZCB5b3UgbWVhbiB0byB3cmFwIGl0IGluIHBhcmVudGhlc2VzICguLi4pP1wiKSxVbmV4cGVjdGVkVG9rZW46dChlPT57bGV0e3VuZXhwZWN0ZWQ6cyxIVE1MRW50aXR5OnJ9PWU7cmV0dXJuXCJVbmV4cGVjdGVkIHRva2VuIGBcIi5jb25jYXQocyxcImAuIERpZCB5b3UgbWVhbiBgXCIpLmNvbmNhdChyLFwiYCBvciBgeydcIikuY29uY2F0KHMsXCInfWA/XCIpfSksVW5zdXBwb3J0ZWRKc3hWYWx1ZTp0KFwiSlNYIHZhbHVlIHNob3VsZCBiZSBlaXRoZXIgYW4gZXhwcmVzc2lvbiBvciBhIHF1b3RlZCBKU1ggdGV4dC5cIiksVW50ZXJtaW5hdGVkSnN4Q29udGVudDp0KFwiVW50ZXJtaW5hdGVkIEpTWCBjb250ZW50cy5cIiksVW53cmFwcGVkQWRqYWNlbnRKU1hFbGVtZW50czp0KFwiQWRqYWNlbnQgSlNYIGVsZW1lbnRzIG11c3QgYmUgd3JhcHBlZCBpbiBhbiBlbmNsb3NpbmcgdGFnLiBEaWQgeW91IHdhbnQgYSBKU1ggZnJhZ21lbnQgPD4uLi48Lz4/XCIpfSkpO2Z1bmN0aW9uIENlKHQpe3JldHVybiB0P3QudHlwZT09PVwiSlNYT3BlbmluZ0ZyYWdtZW50XCJ8fHQudHlwZT09PVwiSlNYQ2xvc2luZ0ZyYWdtZW50XCI6ITF9ZnVuY3Rpb24gVWUodCl7aWYodC50eXBlPT09XCJKU1hJZGVudGlmaWVyXCIpcmV0dXJuIHQubmFtZTtpZih0LnR5cGU9PT1cIkpTWE5hbWVzcGFjZWROYW1lXCIpcmV0dXJuIHQubmFtZXNwYWNlLm5hbWUrXCI6XCIrdC5uYW1lLm5hbWU7aWYodC50eXBlPT09XCJKU1hNZW1iZXJFeHByZXNzaW9uXCIpcmV0dXJuIFVlKHQub2JqZWN0KStcIi5cIitVZSh0LnByb3BlcnR5KTt0aHJvdyBuZXcgRXJyb3IoXCJOb2RlIGhhZCB1bmV4cGVjdGVkIHR5cGU6IFwiK3QudHlwZSl9dmFyIExoPXQ9PmNsYXNzIGV4dGVuZHMgdHtqc3hSZWFkVG9rZW4oKXtsZXQgZT1cIlwiLHM9dGhpcy5zdGF0ZS5wb3M7Zm9yKDs7KXtpZih0aGlzLnN0YXRlLnBvcz49dGhpcy5sZW5ndGgpdGhyb3cgdGhpcy5yYWlzZShJZS5VbnRlcm1pbmF0ZWRKc3hDb250ZW50LHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7bGV0IHI9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKTtzd2l0Y2gocil7Y2FzZSA2MDpjYXNlIDEyMzpyZXR1cm4gdGhpcy5zdGF0ZS5wb3M9PT10aGlzLnN0YXRlLnN0YXJ0P3I9PT02MCYmdGhpcy5zdGF0ZS5jYW5TdGFydEpTWEVsZW1lbnQ/KCsrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbigxMzgpKTpzdXBlci5nZXRUb2tlbkZyb21Db2RlKHIpOihlKz10aGlzLmlucHV0LnNsaWNlKHMsdGhpcy5zdGF0ZS5wb3MpLHRoaXMuZmluaXNoVG9rZW4oMTM3LGUpKTtjYXNlIDM4OmUrPXRoaXMuaW5wdXQuc2xpY2Uocyx0aGlzLnN0YXRlLnBvcyksZSs9dGhpcy5qc3hSZWFkRW50aXR5KCkscz10aGlzLnN0YXRlLnBvczticmVhaztjYXNlIDYyOmNhc2UgMTI1OmRlZmF1bHQ6TmUocik/KGUrPXRoaXMuaW5wdXQuc2xpY2Uocyx0aGlzLnN0YXRlLnBvcyksZSs9dGhpcy5qc3hSZWFkTmV3TGluZSghMCkscz10aGlzLnN0YXRlLnBvcyk6Kyt0aGlzLnN0YXRlLnBvc319fWpzeFJlYWROZXdMaW5lKGUpe2xldCBzPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcykscjtyZXR1cm4rK3RoaXMuc3RhdGUucG9zLHM9PT0xMyYmdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKT09PTEwPygrK3RoaXMuc3RhdGUucG9zLHI9ZT9gXG5gOmBcXHJcbmApOnI9U3RyaW5nLmZyb21DaGFyQ29kZShzKSwrK3RoaXMuc3RhdGUuY3VyTGluZSx0aGlzLnN0YXRlLmxpbmVTdGFydD10aGlzLnN0YXRlLnBvcyxyfWpzeFJlYWRTdHJpbmcoZSl7bGV0IHM9XCJcIixyPSsrdGhpcy5zdGF0ZS5wb3M7Zm9yKDs7KXtpZih0aGlzLnN0YXRlLnBvcz49dGhpcy5sZW5ndGgpdGhyb3cgdGhpcy5yYWlzZSh1LlVudGVybWluYXRlZFN0cmluZyx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pO2xldCBpPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcyk7aWYoaT09PWUpYnJlYWs7aT09PTM4PyhzKz10aGlzLmlucHV0LnNsaWNlKHIsdGhpcy5zdGF0ZS5wb3MpLHMrPXRoaXMuanN4UmVhZEVudGl0eSgpLHI9dGhpcy5zdGF0ZS5wb3MpOk5lKGkpPyhzKz10aGlzLmlucHV0LnNsaWNlKHIsdGhpcy5zdGF0ZS5wb3MpLHMrPXRoaXMuanN4UmVhZE5ld0xpbmUoITEpLHI9dGhpcy5zdGF0ZS5wb3MpOisrdGhpcy5zdGF0ZS5wb3N9cmV0dXJuIHMrPXRoaXMuaW5wdXQuc2xpY2Uocix0aGlzLnN0YXRlLnBvcysrKSx0aGlzLmZpbmlzaFRva2VuKDEyOSxzKX1qc3hSZWFkRW50aXR5KCl7bGV0IGU9Kyt0aGlzLnN0YXRlLnBvcztpZih0aGlzLmNvZGVQb2ludEF0UG9zKHRoaXMuc3RhdGUucG9zKT09PTM1KXsrK3RoaXMuc3RhdGUucG9zO2xldCBzPTEwO3RoaXMuY29kZVBvaW50QXRQb3ModGhpcy5zdGF0ZS5wb3MpPT09MTIwJiYocz0xNiwrK3RoaXMuc3RhdGUucG9zKTtsZXQgcj10aGlzLnJlYWRJbnQocyx2b2lkIDAsITEsXCJiYWlsXCIpO2lmKHIhPT1udWxsJiZ0aGlzLmNvZGVQb2ludEF0UG9zKHRoaXMuc3RhdGUucG9zKT09PTU5KXJldHVybisrdGhpcy5zdGF0ZS5wb3MsU3RyaW5nLmZyb21Db2RlUG9pbnQocil9ZWxzZXtsZXQgcz0wLHI9ITE7Zm9yKDtzKys8MTAmJnRoaXMuc3RhdGUucG9zPHRoaXMubGVuZ3RoJiYhKHI9dGhpcy5jb2RlUG9pbnRBdFBvcyh0aGlzLnN0YXRlLnBvcyk9PTU5KTspKyt0aGlzLnN0YXRlLnBvcztpZihyKXtsZXQgaT10aGlzLmlucHV0LnNsaWNlKGUsdGhpcy5zdGF0ZS5wb3MpLGE9RmhbaV07aWYoKyt0aGlzLnN0YXRlLnBvcyxhKXJldHVybiBhfX1yZXR1cm4gdGhpcy5zdGF0ZS5wb3M9ZSxcIiZcIn1qc3hSZWFkV29yZCgpe2xldCBlLHM9dGhpcy5zdGF0ZS5wb3M7ZG8gZT10aGlzLmlucHV0LmNoYXJDb2RlQXQoKyt0aGlzLnN0YXRlLnBvcyk7d2hpbGUoQmUoZSl8fGU9PT00NSk7cmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oMTM2LHRoaXMuaW5wdXQuc2xpY2Uocyx0aGlzLnN0YXRlLnBvcykpfWpzeFBhcnNlSWRlbnRpZmllcigpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubWF0Y2goMTM2KT9lLm5hbWU9dGhpcy5zdGF0ZS52YWx1ZTpIdCh0aGlzLnN0YXRlLnR5cGUpP2UubmFtZT1QZSh0aGlzLnN0YXRlLnR5cGUpOnRoaXMudW5leHBlY3RlZCgpLHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShlLFwiSlNYSWRlbnRpZmllclwiKX1qc3hQYXJzZU5hbWVzcGFjZWROYW1lKCl7bGV0IGU9dGhpcy5zdGF0ZS5zdGFydCxzPXRoaXMuc3RhdGUuc3RhcnRMb2Mscj10aGlzLmpzeFBhcnNlSWRlbnRpZmllcigpO2lmKCF0aGlzLmVhdCgxNCkpcmV0dXJuIHI7bGV0IGk9dGhpcy5zdGFydE5vZGVBdChlLHMpO3JldHVybiBpLm5hbWVzcGFjZT1yLGkubmFtZT10aGlzLmpzeFBhcnNlSWRlbnRpZmllcigpLHRoaXMuZmluaXNoTm9kZShpLFwiSlNYTmFtZXNwYWNlZE5hbWVcIil9anN4UGFyc2VFbGVtZW50TmFtZSgpe2xldCBlPXRoaXMuc3RhdGUuc3RhcnQscz10aGlzLnN0YXRlLnN0YXJ0TG9jLHI9dGhpcy5qc3hQYXJzZU5hbWVzcGFjZWROYW1lKCk7aWYoci50eXBlPT09XCJKU1hOYW1lc3BhY2VkTmFtZVwiKXJldHVybiByO2Zvcig7dGhpcy5lYXQoMTYpOyl7bGV0IGk9dGhpcy5zdGFydE5vZGVBdChlLHMpO2kub2JqZWN0PXIsaS5wcm9wZXJ0eT10aGlzLmpzeFBhcnNlSWRlbnRpZmllcigpLHI9dGhpcy5maW5pc2hOb2RlKGksXCJKU1hNZW1iZXJFeHByZXNzaW9uXCIpfXJldHVybiByfWpzeFBhcnNlQXR0cmlidXRlVmFsdWUoKXtsZXQgZTtzd2l0Y2godGhpcy5zdGF0ZS50eXBlKXtjYXNlIDU6cmV0dXJuIGU9dGhpcy5zdGFydE5vZGUoKSx0aGlzLnNldENvbnRleHQoei5icmFjZSksdGhpcy5uZXh0KCksZT10aGlzLmpzeFBhcnNlRXhwcmVzc2lvbkNvbnRhaW5lcihlLHoual9vVGFnKSxlLmV4cHJlc3Npb24udHlwZT09PVwiSlNYRW1wdHlFeHByZXNzaW9uXCImJnRoaXMucmFpc2UoSWUuQXR0cmlidXRlSXNFbXB0eSx7YXQ6ZX0pLGU7Y2FzZSAxMzg6Y2FzZSAxMjk6cmV0dXJuIHRoaXMucGFyc2VFeHByQXRvbSgpO2RlZmF1bHQ6dGhyb3cgdGhpcy5yYWlzZShJZS5VbnN1cHBvcnRlZEpzeFZhbHVlLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSl9fWpzeFBhcnNlRW1wdHlFeHByZXNzaW9uKCl7bGV0IGU9dGhpcy5zdGFydE5vZGVBdCh0aGlzLnN0YXRlLmxhc3RUb2tFbmRMb2MuaW5kZXgsdGhpcy5zdGF0ZS5sYXN0VG9rRW5kTG9jKTtyZXR1cm4gdGhpcy5maW5pc2hOb2RlQXQoZSxcIkpTWEVtcHR5RXhwcmVzc2lvblwiLHRoaXMuc3RhdGUuc3RhcnRMb2MpfWpzeFBhcnNlU3ByZWFkQ2hpbGQoZSl7cmV0dXJuIHRoaXMubmV4dCgpLGUuZXhwcmVzc2lvbj10aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuc2V0Q29udGV4dCh6Lmpfb1RhZyksdGhpcy5zdGF0ZS5jYW5TdGFydEpTWEVsZW1lbnQ9ITAsdGhpcy5leHBlY3QoOCksdGhpcy5maW5pc2hOb2RlKGUsXCJKU1hTcHJlYWRDaGlsZFwiKX1qc3hQYXJzZUV4cHJlc3Npb25Db250YWluZXIoZSxzKXtpZih0aGlzLm1hdGNoKDgpKWUuZXhwcmVzc2lvbj10aGlzLmpzeFBhcnNlRW1wdHlFeHByZXNzaW9uKCk7ZWxzZXtsZXQgcj10aGlzLnBhcnNlRXhwcmVzc2lvbigpO2UuZXhwcmVzc2lvbj1yfXJldHVybiB0aGlzLnNldENvbnRleHQocyksdGhpcy5zdGF0ZS5jYW5TdGFydEpTWEVsZW1lbnQ9ITAsdGhpcy5leHBlY3QoOCksdGhpcy5maW5pc2hOb2RlKGUsXCJKU1hFeHByZXNzaW9uQ29udGFpbmVyXCIpfWpzeFBhcnNlQXR0cmlidXRlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5tYXRjaCg1KT8odGhpcy5zZXRDb250ZXh0KHouYnJhY2UpLHRoaXMubmV4dCgpLHRoaXMuZXhwZWN0KDIxKSxlLmFyZ3VtZW50PXRoaXMucGFyc2VNYXliZUFzc2lnbkFsbG93SW4oKSx0aGlzLnNldENvbnRleHQoei5qX29UYWcpLHRoaXMuc3RhdGUuY2FuU3RhcnRKU1hFbGVtZW50PSEwLHRoaXMuZXhwZWN0KDgpLHRoaXMuZmluaXNoTm9kZShlLFwiSlNYU3ByZWFkQXR0cmlidXRlXCIpKTooZS5uYW1lPXRoaXMuanN4UGFyc2VOYW1lc3BhY2VkTmFtZSgpLGUudmFsdWU9dGhpcy5lYXQoMjkpP3RoaXMuanN4UGFyc2VBdHRyaWJ1dGVWYWx1ZSgpOm51bGwsdGhpcy5maW5pc2hOb2RlKGUsXCJKU1hBdHRyaWJ1dGVcIikpfWpzeFBhcnNlT3BlbmluZ0VsZW1lbnRBdChlLHMpe2xldCByPXRoaXMuc3RhcnROb2RlQXQoZSxzKTtyZXR1cm4gdGhpcy5lYXQoMTM5KT90aGlzLmZpbmlzaE5vZGUocixcIkpTWE9wZW5pbmdGcmFnbWVudFwiKTooci5uYW1lPXRoaXMuanN4UGFyc2VFbGVtZW50TmFtZSgpLHRoaXMuanN4UGFyc2VPcGVuaW5nRWxlbWVudEFmdGVyTmFtZShyKSl9anN4UGFyc2VPcGVuaW5nRWxlbWVudEFmdGVyTmFtZShlKXtsZXQgcz1bXTtmb3IoOyF0aGlzLm1hdGNoKDU2KSYmIXRoaXMubWF0Y2goMTM5KTspcy5wdXNoKHRoaXMuanN4UGFyc2VBdHRyaWJ1dGUoKSk7cmV0dXJuIGUuYXR0cmlidXRlcz1zLGUuc2VsZkNsb3Npbmc9dGhpcy5lYXQoNTYpLHRoaXMuZXhwZWN0KDEzOSksdGhpcy5maW5pc2hOb2RlKGUsXCJKU1hPcGVuaW5nRWxlbWVudFwiKX1qc3hQYXJzZUNsb3NpbmdFbGVtZW50QXQoZSxzKXtsZXQgcj10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7cmV0dXJuIHRoaXMuZWF0KDEzOSk/dGhpcy5maW5pc2hOb2RlKHIsXCJKU1hDbG9zaW5nRnJhZ21lbnRcIik6KHIubmFtZT10aGlzLmpzeFBhcnNlRWxlbWVudE5hbWUoKSx0aGlzLmV4cGVjdCgxMzkpLHRoaXMuZmluaXNoTm9kZShyLFwiSlNYQ2xvc2luZ0VsZW1lbnRcIikpfWpzeFBhcnNlRWxlbWVudEF0KGUscyl7bGV0IHI9dGhpcy5zdGFydE5vZGVBdChlLHMpLGk9W10sYT10aGlzLmpzeFBhcnNlT3BlbmluZ0VsZW1lbnRBdChlLHMpLG49bnVsbDtpZighYS5zZWxmQ2xvc2luZyl7ZTpmb3IoOzspc3dpdGNoKHRoaXMuc3RhdGUudHlwZSl7Y2FzZSAxMzg6aWYoZT10aGlzLnN0YXRlLnN0YXJ0LHM9dGhpcy5zdGF0ZS5zdGFydExvYyx0aGlzLm5leHQoKSx0aGlzLmVhdCg1Nikpe249dGhpcy5qc3hQYXJzZUNsb3NpbmdFbGVtZW50QXQoZSxzKTticmVhayBlfWkucHVzaCh0aGlzLmpzeFBhcnNlRWxlbWVudEF0KGUscykpO2JyZWFrO2Nhc2UgMTM3OmkucHVzaCh0aGlzLnBhcnNlRXhwckF0b20oKSk7YnJlYWs7Y2FzZSA1OntsZXQgbz10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMuc2V0Q29udGV4dCh6LmJyYWNlKSx0aGlzLm5leHQoKSx0aGlzLm1hdGNoKDIxKT9pLnB1c2godGhpcy5qc3hQYXJzZVNwcmVhZENoaWxkKG8pKTppLnB1c2godGhpcy5qc3hQYXJzZUV4cHJlc3Npb25Db250YWluZXIobyx6LmpfZXhwcikpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgdGhpcy51bmV4cGVjdGVkKCl9Q2UoYSkmJiFDZShuKSYmbiE9PW51bGw/dGhpcy5yYWlzZShJZS5NaXNzaW5nQ2xvc2luZ1RhZ0ZyYWdtZW50LHthdDpufSk6IUNlKGEpJiZDZShuKT90aGlzLnJhaXNlKEllLk1pc3NpbmdDbG9zaW5nVGFnRWxlbWVudCx7YXQ6bixvcGVuaW5nVGFnTmFtZTpVZShhLm5hbWUpfSk6IUNlKGEpJiYhQ2UobikmJlVlKG4ubmFtZSkhPT1VZShhLm5hbWUpJiZ0aGlzLnJhaXNlKEllLk1pc3NpbmdDbG9zaW5nVGFnRWxlbWVudCx7YXQ6bixvcGVuaW5nVGFnTmFtZTpVZShhLm5hbWUpfSl9aWYoQ2UoYSk/KHIub3BlbmluZ0ZyYWdtZW50PWEsci5jbG9zaW5nRnJhZ21lbnQ9bik6KHIub3BlbmluZ0VsZW1lbnQ9YSxyLmNsb3NpbmdFbGVtZW50PW4pLHIuY2hpbGRyZW49aSx0aGlzLm1hdGNoKDQ3KSl0aHJvdyB0aGlzLnJhaXNlKEllLlVud3JhcHBlZEFkamFjZW50SlNYRWxlbWVudHMse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtyZXR1cm4gQ2UoYSk/dGhpcy5maW5pc2hOb2RlKHIsXCJKU1hGcmFnbWVudFwiKTp0aGlzLmZpbmlzaE5vZGUocixcIkpTWEVsZW1lbnRcIil9anN4UGFyc2VFbGVtZW50KCl7bGV0IGU9dGhpcy5zdGF0ZS5zdGFydCxzPXRoaXMuc3RhdGUuc3RhcnRMb2M7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuanN4UGFyc2VFbGVtZW50QXQoZSxzKX1zZXRDb250ZXh0KGUpe2xldHtjb250ZXh0OnN9PXRoaXMuc3RhdGU7c1tzLmxlbmd0aC0xXT1lfXBhcnNlRXhwckF0b20oZSl7cmV0dXJuIHRoaXMubWF0Y2goMTM3KT90aGlzLnBhcnNlTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlLFwiSlNYVGV4dFwiKTp0aGlzLm1hdGNoKDEzOCk/dGhpcy5qc3hQYXJzZUVsZW1lbnQoKTp0aGlzLm1hdGNoKDQ3KSYmdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuc3RhdGUucG9zKSE9PTMzPyh0aGlzLnJlcGxhY2VUb2tlbigxMzgpLHRoaXMuanN4UGFyc2VFbGVtZW50KCkpOnN1cGVyLnBhcnNlRXhwckF0b20oZSl9c2tpcFNwYWNlKCl7dGhpcy5jdXJDb250ZXh0KCkucHJlc2VydmVTcGFjZXx8c3VwZXIuc2tpcFNwYWNlKCl9Z2V0VG9rZW5Gcm9tQ29kZShlKXtsZXQgcz10aGlzLmN1ckNvbnRleHQoKTtpZihzPT09ei5qX2V4cHIpcmV0dXJuIHRoaXMuanN4UmVhZFRva2VuKCk7aWYocz09PXoual9vVGFnfHxzPT09ei5qX2NUYWcpe2lmKGRlKGUpKXJldHVybiB0aGlzLmpzeFJlYWRXb3JkKCk7aWYoZT09PTYyKXJldHVybisrdGhpcy5zdGF0ZS5wb3MsdGhpcy5maW5pc2hUb2tlbigxMzkpO2lmKChlPT09MzR8fGU9PT0zOSkmJnM9PT16Lmpfb1RhZylyZXR1cm4gdGhpcy5qc3hSZWFkU3RyaW5nKGUpfXJldHVybiBlPT09NjAmJnRoaXMuc3RhdGUuY2FuU3RhcnRKU1hFbGVtZW50JiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5zdGF0ZS5wb3MrMSkhPT0zMz8oKyt0aGlzLnN0YXRlLnBvcyx0aGlzLmZpbmlzaFRva2VuKDEzOCkpOnN1cGVyLmdldFRva2VuRnJvbUNvZGUoZSl9dXBkYXRlQ29udGV4dChlKXtsZXR7Y29udGV4dDpzLHR5cGU6cn09dGhpcy5zdGF0ZTtpZihyPT09NTYmJmU9PT0xMzgpcy5zcGxpY2UoLTIsMix6LmpfY1RhZyksdGhpcy5zdGF0ZS5jYW5TdGFydEpTWEVsZW1lbnQ9ITE7ZWxzZSBpZihyPT09MTM4KXMucHVzaCh6Lmpfb1RhZyk7ZWxzZSBpZihyPT09MTM5KXtsZXQgaT1zW3MubGVuZ3RoLTFdO2k9PT16Lmpfb1RhZyYmZT09PTU2fHxpPT09ei5qX2NUYWc/KHMucG9wKCksdGhpcy5zdGF0ZS5jYW5TdGFydEpTWEVsZW1lbnQ9c1tzLmxlbmd0aC0xXT09PXoual9leHByKToodGhpcy5zZXRDb250ZXh0KHoual9leHByKSx0aGlzLnN0YXRlLmNhblN0YXJ0SlNYRWxlbWVudD0hMCl9ZWxzZSB0aGlzLnN0YXRlLmNhblN0YXJ0SlNYRWxlbWVudD1TbyhyKX19LE9oPWNsYXNzIGV4dGVuZHMgb3N7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZXM9bmV3IFNldCx0aGlzLmVudW1zPW5ldyBTZXQsdGhpcy5jb25zdEVudW1zPW5ldyBTZXQsdGhpcy5jbGFzc2VzPW5ldyBTZXQsdGhpcy5leHBvcnRPbmx5QmluZGluZ3M9bmV3IFNldH19LEJoPWNsYXNzIGV4dGVuZHMgaHN7Y3JlYXRlU2NvcGUodCl7cmV0dXJuIG5ldyBPaCh0KX1kZWNsYXJlTmFtZSh0LGUscyl7bGV0IHI9dGhpcy5jdXJyZW50U2NvcGUoKTtpZihlJlp0KXt0aGlzLm1heWJlRXhwb3J0RGVmaW5lZChyLHQpLHIuZXhwb3J0T25seUJpbmRpbmdzLmFkZCh0KTtyZXR1cm59c3VwZXIuZGVjbGFyZU5hbWUoLi4uYXJndW1lbnRzKSxlJlJlJiYoZSZ5ZXx8KHRoaXMuY2hlY2tSZWRlY2xhcmF0aW9uSW5TY29wZShyLHQsZSxzKSx0aGlzLm1heWJlRXhwb3J0RGVmaW5lZChyLHQpKSxyLnR5cGVzLmFkZCh0KSksZSYkdCYmci5lbnVtcy5hZGQodCksZSZRdCYmci5jb25zdEVudW1zLmFkZCh0KSxlJmN0JiZyLmNsYXNzZXMuYWRkKHQpfWlzUmVkZWNsYXJlZEluU2NvcGUodCxlLHMpe2lmKHQuZW51bXMuaGFzKGUpKXtpZihzJiR0KXtsZXQgcj0hIShzJlF0KSxpPXQuY29uc3RFbnVtcy5oYXMoZSk7cmV0dXJuIHIhPT1pfXJldHVybiEwfXJldHVybiBzJmN0JiZ0LmNsYXNzZXMuaGFzKGUpP3QubGV4aWNhbC5oYXMoZSk/ISEocyZ5ZSk6ITE6cyZSZSYmdC50eXBlcy5oYXMoZSk/ITA6c3VwZXIuaXNSZWRlY2xhcmVkSW5TY29wZSguLi5hcmd1bWVudHMpfWNoZWNrTG9jYWxFeHBvcnQodCl7bGV0IGU9dGhpcy5zY29wZVN0YWNrWzBdLHtuYW1lOnN9PXQ7IWUudHlwZXMuaGFzKHMpJiYhZS5leHBvcnRPbmx5QmluZGluZ3MuaGFzKHMpJiZzdXBlci5jaGVja0xvY2FsRXhwb3J0KHQpfX0sTWg9KHQsZSk9Pk9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJnRbZV07ZnVuY3Rpb24gUmgodCl7aWYodD09bnVsbCl0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFwiLmNvbmNhdCh0LFwiIHZhbHVlLlwiKSk7cmV0dXJuIHR9ZnVuY3Rpb24gQnIodCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwiQXNzZXJ0IGZhaWxcIil9ZnVuY3Rpb24gamgodCl7cmV0dXJuIFZ0KHQpfHxPbyh0KX12YXIgUz1qKFZufHwoVm49cnQoW1widHlwZXNjcmlwdFwiXSkpKSh0PT4oe0Fic3RyYWN0TWV0aG9kSGFzSW1wbGVtZW50YXRpb246dChlPT57bGV0e21ldGhvZE5hbWU6c309ZTtyZXR1cm5cIk1ldGhvZCAnXCIuY29uY2F0KHMsXCInIGNhbm5vdCBoYXZlIGFuIGltcGxlbWVudGF0aW9uIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFic3RyYWN0LlwiKX0pLEFic3RyYWN0UHJvcGVydHlIYXNJbml0aWFsaXplcjp0KGU9PntsZXR7cHJvcGVydHlOYW1lOnN9PWU7cmV0dXJuXCJQcm9wZXJ0eSAnXCIuY29uY2F0KHMsXCInIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFic3RyYWN0LlwiKX0pLEFjY2Vzb3JDYW5ub3REZWNsYXJlVGhpc1BhcmFtZXRlcjp0KFwiJ2dldCcgYW5kICdzZXQnIGFjY2Vzc29ycyBjYW5ub3QgZGVjbGFyZSAndGhpcycgcGFyYW1ldGVycy5cIiksQWNjZXNvckNhbm5vdEhhdmVUeXBlUGFyYW1ldGVyczp0KFwiQW4gYWNjZXNzb3IgY2Fubm90IGhhdmUgdHlwZSBwYXJhbWV0ZXJzLlwiKSxDYW5ub3RGaW5kTmFtZTp0KGU9PntsZXR7bmFtZTpzfT1lO3JldHVyblwiQ2Fubm90IGZpbmQgbmFtZSAnXCIuY29uY2F0KHMsXCInLlwiKX0pLENsYXNzTWV0aG9kSGFzRGVjbGFyZTp0KFwiQ2xhc3MgbWV0aG9kcyBjYW5ub3QgaGF2ZSB0aGUgJ2RlY2xhcmUnIG1vZGlmaWVyLlwiKSxDbGFzc01ldGhvZEhhc1JlYWRvbmx5OnQoXCJDbGFzcyBtZXRob2RzIGNhbm5vdCBoYXZlIHRoZSAncmVhZG9ubHknIG1vZGlmaWVyLlwiKSxDb25zdEluaXRpYWlsaXplck11c3RCZVN0cmluZ09yTnVtZXJpY0xpdGVyYWxPckxpdGVyYWxFbnVtUmVmZXJlbmNlOnQoXCJBICdjb25zdCcgaW5pdGlhbGl6ZXIgaW4gYW4gYW1iaWVudCBjb250ZXh0IG11c3QgYmUgYSBzdHJpbmcgb3IgbnVtZXJpYyBsaXRlcmFsIG9yIGxpdGVyYWwgZW51bSByZWZlcmVuY2UuXCIpLENvbnN0cnVjdG9ySGFzVHlwZVBhcmFtZXRlcnM6dChcIlR5cGUgcGFyYW1ldGVycyBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCIpLERlY2xhcmVBY2Nlc3Nvcjp0KGU9PntsZXR7a2luZDpzfT1lO3JldHVyblwiJ2RlY2xhcmUnIGlzIG5vdCBhbGxvd2VkIGluIFwiLmNvbmNhdChzLFwidGVycy5cIil9KSxEZWNsYXJlQ2xhc3NGaWVsZEhhc0luaXRpYWxpemVyOnQoXCJJbml0aWFsaXplcnMgYXJlIG5vdCBhbGxvd2VkIGluIGFtYmllbnQgY29udGV4dHMuXCIpLERlY2xhcmVGdW5jdGlvbkhhc0ltcGxlbWVudGF0aW9uOnQoXCJBbiBpbXBsZW1lbnRhdGlvbiBjYW5ub3QgYmUgZGVjbGFyZWQgaW4gYW1iaWVudCBjb250ZXh0cy5cIiksRHVwbGljYXRlQWNjZXNzaWJpbGl0eU1vZGlmaWVyOnQoZT0+e2xldHttb2RpZmllcjpzfT1lO3JldHVyblwiQWNjZXNzaWJpbGl0eSBtb2RpZmllciBhbHJlYWR5IHNlZW4uXCJ9KSxEdXBsaWNhdGVNb2RpZmllcjp0KGU9PntsZXR7bW9kaWZpZXI6c309ZTtyZXR1cm5cIkR1cGxpY2F0ZSBtb2RpZmllcjogJ1wiLmNvbmNhdChzLFwiJy5cIil9KSxFbXB0eUhlcml0YWdlQ2xhdXNlVHlwZTp0KGU9PntsZXR7dG9rZW46c309ZTtyZXR1cm5cIidcIi5jb25jYXQocyxcIicgbGlzdCBjYW5ub3QgYmUgZW1wdHkuXCIpfSksRW1wdHlUeXBlQXJndW1lbnRzOnQoXCJUeXBlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGVtcHR5LlwiKSxFbXB0eVR5cGVQYXJhbWV0ZXJzOnQoXCJUeXBlIHBhcmFtZXRlciBsaXN0IGNhbm5vdCBiZSBlbXB0eS5cIiksRXhwZWN0ZWRBbWJpZW50QWZ0ZXJFeHBvcnREZWNsYXJlOnQoXCInZXhwb3J0IGRlY2xhcmUnIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gYW1iaWVudCBkZWNsYXJhdGlvbi5cIiksSW1wb3J0QWxpYXNIYXNJbXBvcnRUeXBlOnQoXCJBbiBpbXBvcnQgYWxpYXMgY2FuIG5vdCB1c2UgJ2ltcG9ydCB0eXBlJy5cIiksSW5jb21wYXRpYmxlTW9kaWZpZXJzOnQoZT0+e2xldHttb2RpZmllcnM6c309ZTtyZXR1cm5cIidcIi5jb25jYXQoc1swXSxcIicgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCAnXCIpLmNvbmNhdChzWzFdLFwiJyBtb2RpZmllci5cIil9KSxJbmRleFNpZ25hdHVyZUhhc0Fic3RyYWN0OnQoXCJJbmRleCBzaWduYXR1cmVzIGNhbm5vdCBoYXZlIHRoZSAnYWJzdHJhY3QnIG1vZGlmaWVyLlwiKSxJbmRleFNpZ25hdHVyZUhhc0FjY2Vzc2liaWxpdHk6dChlPT57bGV0e21vZGlmaWVyOnN9PWU7cmV0dXJuXCJJbmRleCBzaWduYXR1cmVzIGNhbm5vdCBoYXZlIGFuIGFjY2Vzc2liaWxpdHkgbW9kaWZpZXIgKCdcIi5jb25jYXQocyxcIicpLlwiKX0pLEluZGV4U2lnbmF0dXJlSGFzRGVjbGFyZTp0KFwiSW5kZXggc2lnbmF0dXJlcyBjYW5ub3QgaGF2ZSB0aGUgJ2RlY2xhcmUnIG1vZGlmaWVyLlwiKSxJbmRleFNpZ25hdHVyZUhhc092ZXJyaWRlOnQoXCInb3ZlcnJpZGUnIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYW4gaW5kZXggc2lnbmF0dXJlLlwiKSxJbmRleFNpZ25hdHVyZUhhc1N0YXRpYzp0KFwiSW5kZXggc2lnbmF0dXJlcyBjYW5ub3QgaGF2ZSB0aGUgJ3N0YXRpYycgbW9kaWZpZXIuXCIpLEluaXRpYWxpemVyTm90QWxsb3dlZEluQW1iaWVudENvbnRleHQ6dChcIkluaXRpYWxpemVycyBhcmUgbm90IGFsbG93ZWQgaW4gYW1iaWVudCBjb250ZXh0cy5cIiksSW52YWxpZE1vZGlmaWVyT25UeXBlTWVtYmVyOnQoZT0+e2xldHttb2RpZmllcjpzfT1lO3JldHVyblwiJ1wiLmNvbmNhdChzLFwiJyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgdHlwZSBtZW1iZXIuXCIpfSksSW52YWxpZE1vZGlmaWVyT25UeXBlUGFyYW1ldGVyOnQoZT0+e2xldHttb2RpZmllcjpzfT1lO3JldHVyblwiJ1wiLmNvbmNhdChzLFwiJyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIuXCIpfSksSW52YWxpZE1vZGlmaWVyT25UeXBlUGFyYW1ldGVyUG9zaXRpb25zOnQoZT0+e2xldHttb2RpZmllcjpzfT1lO3JldHVyblwiJ1wiLmNvbmNhdChzLFwiJyBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlciBvZiBhIGNsYXNzLCBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcy5cIil9KSxJbnZhbGlkTW9kaWZpZXJzT3JkZXI6dChlPT57bGV0e29yZGVyZWRNb2RpZmllcnM6c309ZTtyZXR1cm5cIidcIi5jb25jYXQoc1swXSxcIicgbW9kaWZpZXIgbXVzdCBwcmVjZWRlICdcIikuY29uY2F0KHNbMV0sXCInIG1vZGlmaWVyLlwiKX0pLEludmFsaWRUdXBsZU1lbWJlckxhYmVsOnQoXCJUdXBsZSBtZW1iZXJzIG11c3QgYmUgbGFiZWxlZCB3aXRoIGEgc2ltcGxlIGlkZW50aWZpZXIuXCIpLE1pc3NpbmdJbnRlcmZhY2VOYW1lOnQoXCInaW50ZXJmYWNlJyBkZWNsYXJhdGlvbnMgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiBpZGVudGlmaWVyLlwiKSxNaXhlZExhYmVsZWRBbmRVbmxhYmVsZWRFbGVtZW50czp0KFwiVHVwbGUgbWVtYmVycyBtdXN0IGFsbCBoYXZlIG5hbWVzIG9yIGFsbCBub3QgaGF2ZSBuYW1lcy5cIiksTm9uQWJzdHJhY3RDbGFzc0hhc0Fic3RyYWN0TWV0aG9kOnQoXCJBYnN0cmFjdCBtZXRob2RzIGNhbiBvbmx5IGFwcGVhciB3aXRoaW4gYW4gYWJzdHJhY3QgY2xhc3MuXCIpLE5vbkNsYXNzTWV0aG9kUHJvcGVydHlIYXNBYnN0cmFjdE1vZGlmZXI6dChcIidhYnN0cmFjdCcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3MsIG1ldGhvZCwgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCIpLE9wdGlvbmFsVHlwZUJlZm9yZVJlcXVpcmVkOnQoXCJBIHJlcXVpcmVkIGVsZW1lbnQgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBlbGVtZW50LlwiKSxPdmVycmlkZU5vdEluU3ViQ2xhc3M6dChcIlRoaXMgbWVtYmVyIGNhbm5vdCBoYXZlIGFuICdvdmVycmlkZScgbW9kaWZpZXIgYmVjYXVzZSBpdHMgY29udGFpbmluZyBjbGFzcyBkb2VzIG5vdCBleHRlbmQgYW5vdGhlciBjbGFzcy5cIiksUGF0dGVybklzT3B0aW9uYWw6dChcIkEgYmluZGluZyBwYXR0ZXJuIHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWwgaW4gYW4gaW1wbGVtZW50YXRpb24gc2lnbmF0dXJlLlwiKSxQcml2YXRlRWxlbWVudEhhc0Fic3RyYWN0OnQoXCJQcml2YXRlIGVsZW1lbnRzIGNhbm5vdCBoYXZlIHRoZSAnYWJzdHJhY3QnIG1vZGlmaWVyLlwiKSxQcml2YXRlRWxlbWVudEhhc0FjY2Vzc2liaWxpdHk6dChlPT57bGV0e21vZGlmaWVyOnN9PWU7cmV0dXJuXCJQcml2YXRlIGVsZW1lbnRzIGNhbm5vdCBoYXZlIGFuIGFjY2Vzc2liaWxpdHkgbW9kaWZpZXIgKCdcIi5jb25jYXQocyxcIicpLlwiKX0pLFJlYWRvbmx5Rm9yTWV0aG9kU2lnbmF0dXJlOnQoXCIncmVhZG9ubHknIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIHByb3BlcnR5IGRlY2xhcmF0aW9uIG9yIGluZGV4IHNpZ25hdHVyZS5cIiksUmVzZXJ2ZWRBcnJvd1R5cGVQYXJhbTp0KFwiVGhpcyBzeW50YXggaXMgcmVzZXJ2ZWQgaW4gZmlsZXMgd2l0aCB0aGUgLm10cyBvciAuY3RzIGV4dGVuc2lvbi4gQWRkIGEgdHJhaWxpbmcgY29tbWEsIGFzIGluIGA8VCw+KCkgPT4gLi4uYC5cIiksUmVzZXJ2ZWRUeXBlQXNzZXJ0aW9uOnQoXCJUaGlzIHN5bnRheCBpcyByZXNlcnZlZCBpbiBmaWxlcyB3aXRoIHRoZSAubXRzIG9yIC5jdHMgZXh0ZW5zaW9uLiBVc2UgYW4gYGFzYCBleHByZXNzaW9uIGluc3RlYWQuXCIpLFNldEFjY2Vzb3JDYW5ub3RIYXZlT3B0aW9uYWxQYXJhbWV0ZXI6dChcIkEgJ3NldCcgYWNjZXNzb3IgY2Fubm90IGhhdmUgYW4gb3B0aW9uYWwgcGFyYW1ldGVyLlwiKSxTZXRBY2Nlc29yQ2Fubm90SGF2ZVJlc3RQYXJhbWV0ZXI6dChcIkEgJ3NldCcgYWNjZXNzb3IgY2Fubm90IGhhdmUgcmVzdCBwYXJhbWV0ZXIuXCIpLFNldEFjY2Vzb3JDYW5ub3RIYXZlUmV0dXJuVHlwZTp0KFwiQSAnc2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBhIHJldHVybiB0eXBlIGFubm90YXRpb24uXCIpLFNpbmdsZVR5cGVQYXJhbWV0ZXJXaXRob3V0VHJhaWxpbmdDb21tYTp0KGU9PntsZXR7dHlwZVBhcmFtZXRlck5hbWU6c309ZTtyZXR1cm5cIlNpbmdsZSB0eXBlIHBhcmFtZXRlciBcIi5jb25jYXQocyxcIiBzaG91bGQgaGF2ZSBhIHRyYWlsaW5nIGNvbW1hLiBFeGFtcGxlIHVzYWdlOiA8XCIpLmNvbmNhdChzLFwiLD4uXCIpfSksU3RhdGljQmxvY2tDYW5ub3RIYXZlTW9kaWZpZXI6dChcIlN0YXRpYyBjbGFzcyBibG9ja3MgY2Fubm90IGhhdmUgYW55IG1vZGlmaWVyLlwiKSxUeXBlQW5ub3RhdGlvbkFmdGVyQXNzaWduOnQoXCJUeXBlIGFubm90YXRpb25zIG11c3QgY29tZSBiZWZvcmUgZGVmYXVsdCBhc3NpZ25tZW50cywgZS5nLiBpbnN0ZWFkIG9mIGBhZ2UgPSAyNTogbnVtYmVyYCB1c2UgYGFnZTogbnVtYmVyID0gMjVgLlwiKSxUeXBlSW1wb3J0Q2Fubm90U3BlY2lmeURlZmF1bHRBbmROYW1lZDp0KFwiQSB0eXBlLW9ubHkgaW1wb3J0IGNhbiBzcGVjaWZ5IGEgZGVmYXVsdCBpbXBvcnQgb3IgbmFtZWQgYmluZGluZ3MsIGJ1dCBub3QgYm90aC5cIiksVHlwZU1vZGlmaWVySXNVc2VkSW5UeXBlRXhwb3J0czp0KFwiVGhlICd0eXBlJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBvbiBhIG5hbWVkIGV4cG9ydCB3aGVuICdleHBvcnQgdHlwZScgaXMgdXNlZCBvbiBpdHMgZXhwb3J0IHN0YXRlbWVudC5cIiksVHlwZU1vZGlmaWVySXNVc2VkSW5UeXBlSW1wb3J0czp0KFwiVGhlICd0eXBlJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBvbiBhIG5hbWVkIGltcG9ydCB3aGVuICdpbXBvcnQgdHlwZScgaXMgdXNlZCBvbiBpdHMgaW1wb3J0IHN0YXRlbWVudC5cIiksVW5leHBlY3RlZFBhcmFtZXRlck1vZGlmaWVyOnQoXCJBIHBhcmFtZXRlciBwcm9wZXJ0eSBpcyBvbmx5IGFsbG93ZWQgaW4gYSBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbi5cIiksVW5leHBlY3RlZFJlYWRvbmx5OnQoXCIncmVhZG9ubHknIHR5cGUgbW9kaWZpZXIgaXMgb25seSBwZXJtaXR0ZWQgb24gYXJyYXkgYW5kIHR1cGxlIGxpdGVyYWwgdHlwZXMuXCIpLFVuZXhwZWN0ZWRUeXBlQW5ub3RhdGlvbjp0KFwiRGlkIG5vdCBleHBlY3QgYSB0eXBlIGFubm90YXRpb24gaGVyZS5cIiksVW5leHBlY3RlZFR5cGVDYXN0SW5QYXJhbWV0ZXI6dChcIlVuZXhwZWN0ZWQgdHlwZSBjYXN0IGluIHBhcmFtZXRlciBwb3NpdGlvbi5cIiksVW5zdXBwb3J0ZWRJbXBvcnRUeXBlQXJndW1lbnQ6dChcIkFyZ3VtZW50IGluIGEgdHlwZSBpbXBvcnQgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsLlwiKSxVbnN1cHBvcnRlZFBhcmFtZXRlclByb3BlcnR5S2luZDp0KFwiQSBwYXJhbWV0ZXIgcHJvcGVydHkgbWF5IG5vdCBiZSBkZWNsYXJlZCB1c2luZyBhIGJpbmRpbmcgcGF0dGVybi5cIiksVW5zdXBwb3J0ZWRTaWduYXR1cmVQYXJhbWV0ZXJLaW5kOnQoZT0+e2xldHt0eXBlOnN9PWU7cmV0dXJuXCJOYW1lIGluIGEgc2lnbmF0dXJlIG11c3QgYmUgYW4gSWRlbnRpZmllciwgT2JqZWN0UGF0dGVybiBvciBBcnJheVBhdHRlcm4sIGluc3RlYWQgZ290IFwiLmNvbmNhdChzLFwiLlwiKX0pfSkpO2Z1bmN0aW9uIHFoKHQpe3N3aXRjaCh0KXtjYXNlXCJhbnlcIjpyZXR1cm5cIlRTQW55S2V5d29yZFwiO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm5cIlRTQm9vbGVhbktleXdvcmRcIjtjYXNlXCJiaWdpbnRcIjpyZXR1cm5cIlRTQmlnSW50S2V5d29yZFwiO2Nhc2VcIm5ldmVyXCI6cmV0dXJuXCJUU05ldmVyS2V5d29yZFwiO2Nhc2VcIm51bWJlclwiOnJldHVyblwiVFNOdW1iZXJLZXl3b3JkXCI7Y2FzZVwib2JqZWN0XCI6cmV0dXJuXCJUU09iamVjdEtleXdvcmRcIjtjYXNlXCJzdHJpbmdcIjpyZXR1cm5cIlRTU3RyaW5nS2V5d29yZFwiO2Nhc2VcInN5bWJvbFwiOnJldHVyblwiVFNTeW1ib2xLZXl3b3JkXCI7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuXCJUU1VuZGVmaW5lZEtleXdvcmRcIjtjYXNlXCJ1bmtub3duXCI6cmV0dXJuXCJUU1Vua25vd25LZXl3b3JkXCI7ZGVmYXVsdDpyZXR1cm59fWZ1bmN0aW9uIE1yKHQpe3JldHVybiB0PT09XCJwcml2YXRlXCJ8fHQ9PT1cInB1YmxpY1wifHx0PT09XCJwcm90ZWN0ZWRcIn1mdW5jdGlvbiBVaCh0KXtyZXR1cm4gdD09PVwiaW5cInx8dD09PVwib3V0XCJ9dmFyIF9oPXQ9PmNsYXNzIGV4dGVuZHMgdHtnZXRTY29wZUhhbmRsZXIoKXtyZXR1cm4gQmh9dHNJc0lkZW50aWZpZXIoKXtyZXR1cm4gSyh0aGlzLnN0YXRlLnR5cGUpfXRzVG9rZW5DYW5Gb2xsb3dNb2RpZmllcigpe3JldHVybih0aGlzLm1hdGNoKDApfHx0aGlzLm1hdGNoKDUpfHx0aGlzLm1hdGNoKDU1KXx8dGhpcy5tYXRjaCgyMSl8fHRoaXMubWF0Y2goMTM0KXx8dGhpcy5pc0xpdGVyYWxQcm9wZXJ0eU5hbWUoKSkmJiF0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpfXRzTmV4dFRva2VuQ2FuRm9sbG93TW9kaWZpZXIoKXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy50c1Rva2VuQ2FuRm9sbG93TW9kaWZpZXIoKX10c1BhcnNlTW9kaWZpZXIoZSxzKXtpZighSyh0aGlzLnN0YXRlLnR5cGUpJiZ0aGlzLnN0YXRlLnR5cGUhPT01OClyZXR1cm47bGV0IHI9dGhpcy5zdGF0ZS52YWx1ZTtpZihlLmluZGV4T2YocikhPT0tMSl7aWYocyYmdGhpcy50c0lzU3RhcnRPZlN0YXRpY0Jsb2NrcygpKXJldHVybjtpZih0aGlzLnRzVHJ5UGFyc2UodGhpcy50c05leHRUb2tlbkNhbkZvbGxvd01vZGlmaWVyLmJpbmQodGhpcykpKXJldHVybiByfX10c1BhcnNlTW9kaWZpZXJzKGUpe2xldHttb2RpZmllZDpzLGFsbG93ZWRNb2RpZmllcnM6cixkaXNhbGxvd2VkTW9kaWZpZXJzOmksc3RvcE9uU3RhcnRPZkNsYXNzU3RhdGljQmxvY2s6YSxlcnJvclRlbXBsYXRlOm49Uy5JbnZhbGlkTW9kaWZpZXJPblR5cGVNZW1iZXJ9PWUsbz0oZix5LFAsdik9Pnt5PT09UCYmc1t2XSYmdGhpcy5yYWlzZShTLkludmFsaWRNb2RpZmllcnNPcmRlcix7YXQ6ZixvcmRlcmVkTW9kaWZpZXJzOltQLHZdfSl9LGM9KGYseSxQLHYpPT57KHNbUF0mJnk9PT12fHxzW3ZdJiZ5PT09UCkmJnRoaXMucmFpc2UoUy5JbmNvbXBhdGlibGVNb2RpZmllcnMse2F0OmYsbW9kaWZpZXJzOltQLHZdfSl9O2Zvcig7Oyl7bGV0e3N0YXJ0TG9jOmZ9PXRoaXMuc3RhdGUseT10aGlzLnRzUGFyc2VNb2RpZmllcihyLmNvbmNhdChpIT1udWxsP2k6W10pLGEpO2lmKCF5KWJyZWFrO01yKHkpP3MuYWNjZXNzaWJpbGl0eT90aGlzLnJhaXNlKFMuRHVwbGljYXRlQWNjZXNzaWJpbGl0eU1vZGlmaWVyLHthdDpmLG1vZGlmaWVyOnl9KToobyhmLHkseSxcIm92ZXJyaWRlXCIpLG8oZix5LHksXCJzdGF0aWNcIiksbyhmLHkseSxcInJlYWRvbmx5XCIpLHMuYWNjZXNzaWJpbGl0eT15KTpVaCh5KT8oc1t5XSYmdGhpcy5yYWlzZShTLkR1cGxpY2F0ZU1vZGlmaWVyLHthdDpmLG1vZGlmaWVyOnl9KSxzW3ldPSEwLG8oZix5LFwiaW5cIixcIm91dFwiKSk6KE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMseSk/dGhpcy5yYWlzZShTLkR1cGxpY2F0ZU1vZGlmaWVyLHthdDpmLG1vZGlmaWVyOnl9KToobyhmLHksXCJzdGF0aWNcIixcInJlYWRvbmx5XCIpLG8oZix5LFwic3RhdGljXCIsXCJvdmVycmlkZVwiKSxvKGYseSxcIm92ZXJyaWRlXCIsXCJyZWFkb25seVwiKSxvKGYseSxcImFic3RyYWN0XCIsXCJvdmVycmlkZVwiKSxjKGYseSxcImRlY2xhcmVcIixcIm92ZXJyaWRlXCIpLGMoZix5LFwic3RhdGljXCIsXCJhYnN0cmFjdFwiKSksc1t5XT0hMCksaSE9bnVsbCYmaS5pbmNsdWRlcyh5KSYmdGhpcy5yYWlzZShuLHthdDpmLG1vZGlmaWVyOnl9KX19dHNJc0xpc3RUZXJtaW5hdG9yKGUpe3N3aXRjaChlKXtjYXNlXCJFbnVtTWVtYmVyc1wiOmNhc2VcIlR5cGVNZW1iZXJzXCI6cmV0dXJuIHRoaXMubWF0Y2goOCk7Y2FzZVwiSGVyaXRhZ2VDbGF1c2VFbGVtZW50XCI6cmV0dXJuIHRoaXMubWF0Y2goNSk7Y2FzZVwiVHVwbGVFbGVtZW50VHlwZXNcIjpyZXR1cm4gdGhpcy5tYXRjaCgzKTtjYXNlXCJUeXBlUGFyYW1ldGVyc09yQXJndW1lbnRzXCI6cmV0dXJuIHRoaXMubWF0Y2goNDgpfXRocm93IG5ldyBFcnJvcihcIlVucmVhY2hhYmxlXCIpfXRzUGFyc2VMaXN0KGUscyl7bGV0IHI9W107Zm9yKDshdGhpcy50c0lzTGlzdFRlcm1pbmF0b3IoZSk7KXIucHVzaChzKCkpO3JldHVybiByfXRzUGFyc2VEZWxpbWl0ZWRMaXN0KGUscyxyKXtyZXR1cm4gUmgodGhpcy50c1BhcnNlRGVsaW1pdGVkTGlzdFdvcmtlcihlLHMsITAscikpfXRzUGFyc2VEZWxpbWl0ZWRMaXN0V29ya2VyKGUscyxyLGkpe2xldCBhPVtdLG49LTE7Zm9yKDshdGhpcy50c0lzTGlzdFRlcm1pbmF0b3IoZSk7KXtuPS0xO2xldCBvPXMoKTtpZihvPT1udWxsKXJldHVybjtpZihhLnB1c2gobyksdGhpcy5lYXQoMTIpKXtuPXRoaXMuc3RhdGUubGFzdFRva1N0YXJ0O2NvbnRpbnVlfWlmKHRoaXMudHNJc0xpc3RUZXJtaW5hdG9yKGUpKWJyZWFrO3ImJnRoaXMuZXhwZWN0KDEyKTtyZXR1cm59cmV0dXJuIGkmJihpLnZhbHVlPW4pLGF9dHNQYXJzZUJyYWNrZXRlZExpc3QoZSxzLHIsaSxhKXtpfHwocj90aGlzLmV4cGVjdCgwKTp0aGlzLmV4cGVjdCg0NykpO2xldCBuPXRoaXMudHNQYXJzZURlbGltaXRlZExpc3QoZSxzLGEpO3JldHVybiByP3RoaXMuZXhwZWN0KDMpOnRoaXMuZXhwZWN0KDQ4KSxufXRzUGFyc2VJbXBvcnRUeXBlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5leHBlY3QoODMpLHRoaXMuZXhwZWN0KDEwKSx0aGlzLm1hdGNoKDEyOSl8fHRoaXMucmFpc2UoUy5VbnN1cHBvcnRlZEltcG9ydFR5cGVBcmd1bWVudCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pLGUuYXJndW1lbnQ9dGhpcy5wYXJzZUV4cHJBdG9tKCksdGhpcy5leHBlY3QoMTEpLHRoaXMuZWF0KDE2KSYmKGUucXVhbGlmaWVyPXRoaXMudHNQYXJzZUVudGl0eU5hbWUoKSksdGhpcy5tYXRjaCg0NykmJihlLnR5cGVQYXJhbWV0ZXJzPXRoaXMudHNQYXJzZVR5cGVBcmd1bWVudHMoKSksdGhpcy5maW5pc2hOb2RlKGUsXCJUU0ltcG9ydFR5cGVcIil9dHNQYXJzZUVudGl0eU5hbWUoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06ITAscz10aGlzLnBhcnNlSWRlbnRpZmllcihlKTtmb3IoO3RoaXMuZWF0KDE2KTspe2xldCByPXRoaXMuc3RhcnROb2RlQXROb2RlKHMpO3IubGVmdD1zLHIucmlnaHQ9dGhpcy5wYXJzZUlkZW50aWZpZXIoZSkscz10aGlzLmZpbmlzaE5vZGUocixcIlRTUXVhbGlmaWVkTmFtZVwiKX1yZXR1cm4gc310c1BhcnNlVHlwZVJlZmVyZW5jZSgpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIGUudHlwZU5hbWU9dGhpcy50c1BhcnNlRW50aXR5TmFtZSgpLCF0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpJiZ0aGlzLm1hdGNoKDQ3KSYmKGUudHlwZVBhcmFtZXRlcnM9dGhpcy50c1BhcnNlVHlwZUFyZ3VtZW50cygpKSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTVHlwZVJlZmVyZW5jZVwiKX10c1BhcnNlVGhpc1R5cGVQcmVkaWNhdGUoZSl7dGhpcy5uZXh0KCk7bGV0IHM9dGhpcy5zdGFydE5vZGVBdE5vZGUoZSk7cmV0dXJuIHMucGFyYW1ldGVyTmFtZT1lLHMudHlwZUFubm90YXRpb249dGhpcy50c1BhcnNlVHlwZUFubm90YXRpb24oITEpLHMuYXNzZXJ0cz0hMSx0aGlzLmZpbmlzaE5vZGUocyxcIlRTVHlwZVByZWRpY2F0ZVwiKX10c1BhcnNlVGhpc1R5cGVOb2RlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKGUsXCJUU1RoaXNUeXBlXCIpfXRzUGFyc2VUeXBlUXVlcnkoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLmV4cGVjdCg4NyksdGhpcy5tYXRjaCg4Myk/ZS5leHByTmFtZT10aGlzLnRzUGFyc2VJbXBvcnRUeXBlKCk6ZS5leHByTmFtZT10aGlzLnRzUGFyc2VFbnRpdHlOYW1lKCksIXRoaXMuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJnRoaXMubWF0Y2goNDcpJiYoZS50eXBlUGFyYW1ldGVycz10aGlzLnRzUGFyc2VUeXBlQXJndW1lbnRzKCkpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNUeXBlUXVlcnlcIil9dHNQYXJzZUluT3V0TW9kaWZpZXJzKGUpe3RoaXMudHNQYXJzZU1vZGlmaWVycyh7bW9kaWZpZWQ6ZSxhbGxvd2VkTW9kaWZpZXJzOltcImluXCIsXCJvdXRcIl0sZGlzYWxsb3dlZE1vZGlmaWVyczpbXCJwdWJsaWNcIixcInByaXZhdGVcIixcInByb3RlY3RlZFwiLFwicmVhZG9ubHlcIixcImRlY2xhcmVcIixcImFic3RyYWN0XCIsXCJvdmVycmlkZVwiXSxlcnJvclRlbXBsYXRlOlMuSW52YWxpZE1vZGlmaWVyT25UeXBlUGFyYW1ldGVyfSl9dHNQYXJzZU5vbmVNb2RpZmllcnMoZSl7dGhpcy50c1BhcnNlTW9kaWZpZXJzKHttb2RpZmllZDplLGFsbG93ZWRNb2RpZmllcnM6W10sZGlzYWxsb3dlZE1vZGlmaWVyczpbXCJpblwiLFwib3V0XCJdLGVycm9yVGVtcGxhdGU6Uy5JbnZhbGlkTW9kaWZpZXJPblR5cGVQYXJhbWV0ZXJQb3NpdGlvbnN9KX10c1BhcnNlVHlwZVBhcmFtZXRlcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp0aGlzLnRzUGFyc2VOb25lTW9kaWZpZXJzLmJpbmQodGhpcykscz10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiBlKHMpLHMubmFtZT10aGlzLnRzUGFyc2VUeXBlUGFyYW1ldGVyTmFtZSgpLHMuY29uc3RyYWludD10aGlzLnRzRWF0VGhlblBhcnNlVHlwZSg4MSkscy5kZWZhdWx0PXRoaXMudHNFYXRUaGVuUGFyc2VUeXBlKDI5KSx0aGlzLmZpbmlzaE5vZGUocyxcIlRTVHlwZVBhcmFtZXRlclwiKX10c1RyeVBhcnNlVHlwZVBhcmFtZXRlcnMoZSl7aWYodGhpcy5tYXRjaCg0NykpcmV0dXJuIHRoaXMudHNQYXJzZVR5cGVQYXJhbWV0ZXJzKGUpfXRzUGFyc2VUeXBlUGFyYW1ldGVycyhlKXtsZXQgcz10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMubWF0Y2goNDcpfHx0aGlzLm1hdGNoKDEzOCk/dGhpcy5uZXh0KCk6dGhpcy51bmV4cGVjdGVkKCk7bGV0IHI9e3ZhbHVlOi0xfTtyZXR1cm4gcy5wYXJhbXM9dGhpcy50c1BhcnNlQnJhY2tldGVkTGlzdChcIlR5cGVQYXJhbWV0ZXJzT3JBcmd1bWVudHNcIix0aGlzLnRzUGFyc2VUeXBlUGFyYW1ldGVyLmJpbmQodGhpcyxlKSwhMSwhMCxyKSxzLnBhcmFtcy5sZW5ndGg9PT0wJiZ0aGlzLnJhaXNlKFMuRW1wdHlUeXBlUGFyYW1ldGVycyx7YXQ6c30pLHIudmFsdWUhPT0tMSYmdGhpcy5hZGRFeHRyYShzLFwidHJhaWxpbmdDb21tYVwiLHIudmFsdWUpLHRoaXMuZmluaXNoTm9kZShzLFwiVFNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25cIil9dHNUcnlOZXh0UGFyc2VDb25zdGFudENvbnRleHQoKXtpZih0aGlzLmxvb2thaGVhZCgpLnR5cGUhPT03NSlyZXR1cm4gbnVsbDt0aGlzLm5leHQoKTtsZXQgZT10aGlzLnRzUGFyc2VUeXBlUmVmZXJlbmNlKCk7cmV0dXJuIGUudHlwZVBhcmFtZXRlcnMmJnRoaXMucmFpc2UoUy5DYW5ub3RGaW5kTmFtZSx7YXQ6ZS50eXBlTmFtZSxuYW1lOlwiY29uc3RcIn0pLGV9dHNGaWxsU2lnbmF0dXJlKGUscyl7bGV0IHI9ZT09PTE5LGk9XCJwYXJhbWV0ZXJzXCIsYT1cInR5cGVBbm5vdGF0aW9uXCI7cy50eXBlUGFyYW1ldGVycz10aGlzLnRzVHJ5UGFyc2VUeXBlUGFyYW1ldGVycygpLHRoaXMuZXhwZWN0KDEwKSxzW2ldPXRoaXMudHNQYXJzZUJpbmRpbmdMaXN0Rm9yU2lnbmF0dXJlKCkscj9zW2FdPXRoaXMudHNQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKGUpOnRoaXMubWF0Y2goZSkmJihzW2FdPXRoaXMudHNQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKGUpKX10c1BhcnNlQmluZGluZ0xpc3RGb3JTaWduYXR1cmUoKXtyZXR1cm4gdGhpcy5wYXJzZUJpbmRpbmdMaXN0KDExLDQxKS5tYXAoZT0+KGUudHlwZSE9PVwiSWRlbnRpZmllclwiJiZlLnR5cGUhPT1cIlJlc3RFbGVtZW50XCImJmUudHlwZSE9PVwiT2JqZWN0UGF0dGVyblwiJiZlLnR5cGUhPT1cIkFycmF5UGF0dGVyblwiJiZ0aGlzLnJhaXNlKFMuVW5zdXBwb3J0ZWRTaWduYXR1cmVQYXJhbWV0ZXJLaW5kLHthdDplLHR5cGU6ZS50eXBlfSksZSkpfXRzUGFyc2VUeXBlTWVtYmVyU2VtaWNvbG9uKCl7IXRoaXMuZWF0KDEyKSYmIXRoaXMuaXNMaW5lVGVybWluYXRvcigpJiZ0aGlzLmV4cGVjdCgxMyl9dHNQYXJzZVNpZ25hdHVyZU1lbWJlcihlLHMpe3JldHVybiB0aGlzLnRzRmlsbFNpZ25hdHVyZSgxNCxzKSx0aGlzLnRzUGFyc2VUeXBlTWVtYmVyU2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKHMsZSl9dHNJc1VuYW1iaWd1b3VzbHlJbmRleFNpZ25hdHVyZSgpe3JldHVybiB0aGlzLm5leHQoKSxLKHRoaXMuc3RhdGUudHlwZSk/KHRoaXMubmV4dCgpLHRoaXMubWF0Y2goMTQpKTohMX10c1RyeVBhcnNlSW5kZXhTaWduYXR1cmUoZSl7aWYoISh0aGlzLm1hdGNoKDApJiZ0aGlzLnRzTG9va0FoZWFkKHRoaXMudHNJc1VuYW1iaWd1b3VzbHlJbmRleFNpZ25hdHVyZS5iaW5kKHRoaXMpKSkpcmV0dXJuO3RoaXMuZXhwZWN0KDApO2xldCBzPXRoaXMucGFyc2VJZGVudGlmaWVyKCk7cy50eXBlQW5ub3RhdGlvbj10aGlzLnRzUGFyc2VUeXBlQW5ub3RhdGlvbigpLHRoaXMucmVzZXRFbmRMb2NhdGlvbihzKSx0aGlzLmV4cGVjdCgzKSxlLnBhcmFtZXRlcnM9W3NdO2xldCByPXRoaXMudHNUcnlQYXJzZVR5cGVBbm5vdGF0aW9uKCk7cmV0dXJuIHImJihlLnR5cGVBbm5vdGF0aW9uPXIpLHRoaXMudHNQYXJzZVR5cGVNZW1iZXJTZW1pY29sb24oKSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTSW5kZXhTaWduYXR1cmVcIil9dHNQYXJzZVByb3BlcnR5T3JNZXRob2RTaWduYXR1cmUoZSxzKXt0aGlzLmVhdCgxNykmJihlLm9wdGlvbmFsPSEwKTtsZXQgcj1lO2lmKHRoaXMubWF0Y2goMTApfHx0aGlzLm1hdGNoKDQ3KSl7cyYmdGhpcy5yYWlzZShTLlJlYWRvbmx5Rm9yTWV0aG9kU2lnbmF0dXJlLHthdDplfSk7bGV0IGk9cjtpLmtpbmQmJnRoaXMubWF0Y2goNDcpJiZ0aGlzLnJhaXNlKFMuQWNjZXNvckNhbm5vdEhhdmVUeXBlUGFyYW1ldGVycyx7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSksdGhpcy50c0ZpbGxTaWduYXR1cmUoMTQsaSksdGhpcy50c1BhcnNlVHlwZU1lbWJlclNlbWljb2xvbigpO2xldCBhPVwicGFyYW1ldGVyc1wiLG49XCJ0eXBlQW5ub3RhdGlvblwiO2lmKGkua2luZD09PVwiZ2V0XCIpaVthXS5sZW5ndGg+MCYmKHRoaXMucmFpc2UodS5CYWRHZXR0ZXJBcml0eSx7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSksdGhpcy5pc1RoaXNQYXJhbShpW2FdWzBdKSYmdGhpcy5yYWlzZShTLkFjY2Vzb3JDYW5ub3REZWNsYXJlVGhpc1BhcmFtZXRlcix7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSkpO2Vsc2UgaWYoaS5raW5kPT09XCJzZXRcIil7aWYoaVthXS5sZW5ndGghPT0xKXRoaXMucmFpc2UodS5CYWRTZXR0ZXJBcml0eSx7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSk7ZWxzZXtsZXQgbz1pW2FdWzBdO3RoaXMuaXNUaGlzUGFyYW0obykmJnRoaXMucmFpc2UoUy5BY2Nlc29yQ2Fubm90RGVjbGFyZVRoaXNQYXJhbWV0ZXIse2F0OnRoaXMuc3RhdGUuY3VyUG9zaXRpb24oKX0pLG8udHlwZT09PVwiSWRlbnRpZmllclwiJiZvLm9wdGlvbmFsJiZ0aGlzLnJhaXNlKFMuU2V0QWNjZXNvckNhbm5vdEhhdmVPcHRpb25hbFBhcmFtZXRlcix7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpfSksby50eXBlPT09XCJSZXN0RWxlbWVudFwiJiZ0aGlzLnJhaXNlKFMuU2V0QWNjZXNvckNhbm5vdEhhdmVSZXN0UGFyYW1ldGVyLHthdDp0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCl9KX1pW25dJiZ0aGlzLnJhaXNlKFMuU2V0QWNjZXNvckNhbm5vdEhhdmVSZXR1cm5UeXBlLHthdDppW25dfSl9ZWxzZSBpLmtpbmQ9XCJtZXRob2RcIjtyZXR1cm4gdGhpcy5maW5pc2hOb2RlKGksXCJUU01ldGhvZFNpZ25hdHVyZVwiKX1lbHNle2xldCBpPXI7cyYmKGkucmVhZG9ubHk9ITApO2xldCBhPXRoaXMudHNUcnlQYXJzZVR5cGVBbm5vdGF0aW9uKCk7cmV0dXJuIGEmJihpLnR5cGVBbm5vdGF0aW9uPWEpLHRoaXMudHNQYXJzZVR5cGVNZW1iZXJTZW1pY29sb24oKSx0aGlzLmZpbmlzaE5vZGUoaSxcIlRTUHJvcGVydHlTaWduYXR1cmVcIil9fXRzUGFyc2VUeXBlTWVtYmVyKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtpZih0aGlzLm1hdGNoKDEwKXx8dGhpcy5tYXRjaCg0NykpcmV0dXJuIHRoaXMudHNQYXJzZVNpZ25hdHVyZU1lbWJlcihcIlRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uXCIsZSk7aWYodGhpcy5tYXRjaCg3Nykpe2xldCByPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMubWF0Y2goMTApfHx0aGlzLm1hdGNoKDQ3KT90aGlzLnRzUGFyc2VTaWduYXR1cmVNZW1iZXIoXCJUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uXCIsZSk6KGUua2V5PXRoaXMuY3JlYXRlSWRlbnRpZmllcihyLFwibmV3XCIpLHRoaXMudHNQYXJzZVByb3BlcnR5T3JNZXRob2RTaWduYXR1cmUoZSwhMSkpfXRoaXMudHNQYXJzZU1vZGlmaWVycyh7bW9kaWZpZWQ6ZSxhbGxvd2VkTW9kaWZpZXJzOltcInJlYWRvbmx5XCJdLGRpc2FsbG93ZWRNb2RpZmllcnM6W1wiZGVjbGFyZVwiLFwiYWJzdHJhY3RcIixcInByaXZhdGVcIixcInByb3RlY3RlZFwiLFwicHVibGljXCIsXCJzdGF0aWNcIixcIm92ZXJyaWRlXCJdfSk7bGV0IHM9dGhpcy50c1RyeVBhcnNlSW5kZXhTaWduYXR1cmUoZSk7cmV0dXJuIHN8fCh0aGlzLnBhcnNlUHJvcGVydHlOYW1lKGUpLCFlLmNvbXB1dGVkJiZlLmtleS50eXBlPT09XCJJZGVudGlmaWVyXCImJihlLmtleS5uYW1lPT09XCJnZXRcInx8ZS5rZXkubmFtZT09PVwic2V0XCIpJiZ0aGlzLnRzVG9rZW5DYW5Gb2xsb3dNb2RpZmllcigpJiYoZS5raW5kPWUua2V5Lm5hbWUsdGhpcy5wYXJzZVByb3BlcnR5TmFtZShlKSksdGhpcy50c1BhcnNlUHJvcGVydHlPck1ldGhvZFNpZ25hdHVyZShlLCEhZS5yZWFkb25seSkpfXRzUGFyc2VUeXBlTGl0ZXJhbCgpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIGUubWVtYmVycz10aGlzLnRzUGFyc2VPYmplY3RUeXBlTWVtYmVycygpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNUeXBlTGl0ZXJhbFwiKX10c1BhcnNlT2JqZWN0VHlwZU1lbWJlcnMoKXt0aGlzLmV4cGVjdCg1KTtsZXQgZT10aGlzLnRzUGFyc2VMaXN0KFwiVHlwZU1lbWJlcnNcIix0aGlzLnRzUGFyc2VUeXBlTWVtYmVyLmJpbmQodGhpcykpO3JldHVybiB0aGlzLmV4cGVjdCg4KSxlfXRzSXNTdGFydE9mTWFwcGVkVHlwZSgpe3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmVhdCg1Myk/dGhpcy5pc0NvbnRleHR1YWwoMTE4KToodGhpcy5pc0NvbnRleHR1YWwoMTE4KSYmdGhpcy5uZXh0KCksIXRoaXMubWF0Y2goMCl8fCh0aGlzLm5leHQoKSwhdGhpcy50c0lzSWRlbnRpZmllcigpKT8hMToodGhpcy5uZXh0KCksdGhpcy5tYXRjaCg1OCkpKX10c1BhcnNlTWFwcGVkVHlwZVBhcmFtZXRlcigpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIGUubmFtZT10aGlzLnRzUGFyc2VUeXBlUGFyYW1ldGVyTmFtZSgpLGUuY29uc3RyYWludD10aGlzLnRzRXhwZWN0VGhlblBhcnNlVHlwZSg1OCksdGhpcy5maW5pc2hOb2RlKGUsXCJUU1R5cGVQYXJhbWV0ZXJcIil9dHNQYXJzZU1hcHBlZFR5cGUoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLmV4cGVjdCg1KSx0aGlzLm1hdGNoKDUzKT8oZS5yZWFkb25seT10aGlzLnN0YXRlLnZhbHVlLHRoaXMubmV4dCgpLHRoaXMuZXhwZWN0Q29udGV4dHVhbCgxMTgpKTp0aGlzLmVhdENvbnRleHR1YWwoMTE4KSYmKGUucmVhZG9ubHk9ITApLHRoaXMuZXhwZWN0KDApLGUudHlwZVBhcmFtZXRlcj10aGlzLnRzUGFyc2VNYXBwZWRUeXBlUGFyYW1ldGVyKCksZS5uYW1lVHlwZT10aGlzLmVhdENvbnRleHR1YWwoOTMpP3RoaXMudHNQYXJzZVR5cGUoKTpudWxsLHRoaXMuZXhwZWN0KDMpLHRoaXMubWF0Y2goNTMpPyhlLm9wdGlvbmFsPXRoaXMuc3RhdGUudmFsdWUsdGhpcy5uZXh0KCksdGhpcy5leHBlY3QoMTcpKTp0aGlzLmVhdCgxNykmJihlLm9wdGlvbmFsPSEwKSxlLnR5cGVBbm5vdGF0aW9uPXRoaXMudHNUcnlQYXJzZVR5cGUoKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZXhwZWN0KDgpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNNYXBwZWRUeXBlXCIpfXRzUGFyc2VUdXBsZVR5cGUoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO2UuZWxlbWVudFR5cGVzPXRoaXMudHNQYXJzZUJyYWNrZXRlZExpc3QoXCJUdXBsZUVsZW1lbnRUeXBlc1wiLHRoaXMudHNQYXJzZVR1cGxlRWxlbWVudFR5cGUuYmluZCh0aGlzKSwhMCwhMSk7bGV0IHM9ITEscj1udWxsO3JldHVybiBlLmVsZW1lbnRUeXBlcy5mb3JFYWNoKGk9Pnt2YXIgYTtsZXR7dHlwZTpufT1pO3MmJm4hPT1cIlRTUmVzdFR5cGVcIiYmbiE9PVwiVFNPcHRpb25hbFR5cGVcIiYmIShuPT09XCJUU05hbWVkVHVwbGVNZW1iZXJcIiYmaS5vcHRpb25hbCkmJnRoaXMucmFpc2UoUy5PcHRpb25hbFR5cGVCZWZvcmVSZXF1aXJlZCx7YXQ6aX0pLHM9c3x8bj09PVwiVFNOYW1lZFR1cGxlTWVtYmVyXCImJmkub3B0aW9uYWx8fG49PT1cIlRTT3B0aW9uYWxUeXBlXCIsbj09PVwiVFNSZXN0VHlwZVwiJiYoaT1pLnR5cGVBbm5vdGF0aW9uLG49aS50eXBlKTtsZXQgbz1uPT09XCJUU05hbWVkVHVwbGVNZW1iZXJcIjtyPShhPXIpIT1udWxsP2E6byxyIT09byYmdGhpcy5yYWlzZShTLk1peGVkTGFiZWxlZEFuZFVubGFiZWxlZEVsZW1lbnRzLHthdDppfSl9KSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTVHVwbGVUeXBlXCIpfXRzUGFyc2VUdXBsZUVsZW1lbnRUeXBlKCl7bGV0e3N0YXJ0OmUsc3RhcnRMb2M6c309dGhpcy5zdGF0ZSxyPXRoaXMuZWF0KDIxKSxpPXRoaXMudHNQYXJzZVR5cGUoKSxhPXRoaXMuZWF0KDE3KTtpZih0aGlzLmVhdCgxNCkpe2xldCBvPXRoaXMuc3RhcnROb2RlQXROb2RlKGkpO28ub3B0aW9uYWw9YSxpLnR5cGU9PT1cIlRTVHlwZVJlZmVyZW5jZVwiJiYhaS50eXBlUGFyYW1ldGVycyYmaS50eXBlTmFtZS50eXBlPT09XCJJZGVudGlmaWVyXCI/by5sYWJlbD1pLnR5cGVOYW1lOih0aGlzLnJhaXNlKFMuSW52YWxpZFR1cGxlTWVtYmVyTGFiZWwse2F0Oml9KSxvLmxhYmVsPWkpLG8uZWxlbWVudFR5cGU9dGhpcy50c1BhcnNlVHlwZSgpLGk9dGhpcy5maW5pc2hOb2RlKG8sXCJUU05hbWVkVHVwbGVNZW1iZXJcIil9ZWxzZSBpZihhKXtsZXQgbz10aGlzLnN0YXJ0Tm9kZUF0Tm9kZShpKTtvLnR5cGVBbm5vdGF0aW9uPWksaT10aGlzLmZpbmlzaE5vZGUobyxcIlRTT3B0aW9uYWxUeXBlXCIpfWlmKHIpe2xldCBvPXRoaXMuc3RhcnROb2RlQXQoZSxzKTtvLnR5cGVBbm5vdGF0aW9uPWksaT10aGlzLmZpbmlzaE5vZGUobyxcIlRTUmVzdFR5cGVcIil9cmV0dXJuIGl9dHNQYXJzZVBhcmVudGhlc2l6ZWRUeXBlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5leHBlY3QoMTApLGUudHlwZUFubm90YXRpb249dGhpcy50c1BhcnNlVHlwZSgpLHRoaXMuZXhwZWN0KDExKSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTUGFyZW50aGVzaXplZFR5cGVcIil9dHNQYXJzZUZ1bmN0aW9uT3JDb25zdHJ1Y3RvclR5cGUoZSxzKXtsZXQgcj10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiBlPT09XCJUU0NvbnN0cnVjdG9yVHlwZVwiJiYoci5hYnN0cmFjdD0hIXMscyYmdGhpcy5uZXh0KCksdGhpcy5uZXh0KCkpLHRoaXMudHNGaWxsU2lnbmF0dXJlKDE5LHIpLHRoaXMuZmluaXNoTm9kZShyLGUpfXRzUGFyc2VMaXRlcmFsVHlwZU5vZGUoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiBlLmxpdGVyYWw9KCgpPT57c3dpdGNoKHRoaXMuc3RhdGUudHlwZSl7Y2FzZSAxMzA6Y2FzZSAxMzE6Y2FzZSAxMjk6Y2FzZSA4NTpjYXNlIDg2OnJldHVybiB0aGlzLnBhcnNlRXhwckF0b20oKTtkZWZhdWx0OnRocm93IHRoaXMudW5leHBlY3RlZCgpfX0pKCksdGhpcy5maW5pc2hOb2RlKGUsXCJUU0xpdGVyYWxUeXBlXCIpfXRzUGFyc2VUZW1wbGF0ZUxpdGVyYWxUeXBlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gZS5saXRlcmFsPXRoaXMucGFyc2VUZW1wbGF0ZSghMSksdGhpcy5maW5pc2hOb2RlKGUsXCJUU0xpdGVyYWxUeXBlXCIpfXBhcnNlVGVtcGxhdGVTdWJzdGl0dXRpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZS5pblR5cGU/dGhpcy50c1BhcnNlVHlwZSgpOnN1cGVyLnBhcnNlVGVtcGxhdGVTdWJzdGl0dXRpb24oKX10c1BhcnNlVGhpc1R5cGVPclRoaXNUeXBlUHJlZGljYXRlKCl7bGV0IGU9dGhpcy50c1BhcnNlVGhpc1R5cGVOb2RlKCk7cmV0dXJuIHRoaXMuaXNDb250ZXh0dWFsKDExMykmJiF0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpP3RoaXMudHNQYXJzZVRoaXNUeXBlUHJlZGljYXRlKGUpOmV9dHNQYXJzZU5vbkFycmF5VHlwZSgpe3N3aXRjaCh0aGlzLnN0YXRlLnR5cGUpe2Nhc2UgMTI5OmNhc2UgMTMwOmNhc2UgMTMxOmNhc2UgODU6Y2FzZSA4NjpyZXR1cm4gdGhpcy50c1BhcnNlTGl0ZXJhbFR5cGVOb2RlKCk7Y2FzZSA1MzppZih0aGlzLnN0YXRlLnZhbHVlPT09XCItXCIpe2xldCBlPXRoaXMuc3RhcnROb2RlKCkscz10aGlzLmxvb2thaGVhZCgpO2lmKHMudHlwZSE9PTEzMCYmcy50eXBlIT09MTMxKXRocm93IHRoaXMudW5leHBlY3RlZCgpO3JldHVybiBlLmxpdGVyYWw9dGhpcy5wYXJzZU1heWJlVW5hcnkoKSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTTGl0ZXJhbFR5cGVcIil9YnJlYWs7Y2FzZSA3ODpyZXR1cm4gdGhpcy50c1BhcnNlVGhpc1R5cGVPclRoaXNUeXBlUHJlZGljYXRlKCk7Y2FzZSA4NzpyZXR1cm4gdGhpcy50c1BhcnNlVHlwZVF1ZXJ5KCk7Y2FzZSA4MzpyZXR1cm4gdGhpcy50c1BhcnNlSW1wb3J0VHlwZSgpO2Nhc2UgNTpyZXR1cm4gdGhpcy50c0xvb2tBaGVhZCh0aGlzLnRzSXNTdGFydE9mTWFwcGVkVHlwZS5iaW5kKHRoaXMpKT90aGlzLnRzUGFyc2VNYXBwZWRUeXBlKCk6dGhpcy50c1BhcnNlVHlwZUxpdGVyYWwoKTtjYXNlIDA6cmV0dXJuIHRoaXMudHNQYXJzZVR1cGxlVHlwZSgpO2Nhc2UgMTA6cmV0dXJuIHRoaXMudHNQYXJzZVBhcmVudGhlc2l6ZWRUeXBlKCk7Y2FzZSAyNTpjYXNlIDI0OnJldHVybiB0aGlzLnRzUGFyc2VUZW1wbGF0ZUxpdGVyYWxUeXBlKCk7ZGVmYXVsdDp7bGV0e3R5cGU6ZX09dGhpcy5zdGF0ZTtpZihLKGUpfHxlPT09ODh8fGU9PT04NCl7bGV0IHM9ZT09PTg4P1wiVFNWb2lkS2V5d29yZFwiOmU9PT04ND9cIlRTTnVsbEtleXdvcmRcIjpxaCh0aGlzLnN0YXRlLnZhbHVlKTtpZihzIT09dm9pZCAwJiZ0aGlzLmxvb2thaGVhZENoYXJDb2RlKCkhPT00Nil7bGV0IHI9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKHIscyl9cmV0dXJuIHRoaXMudHNQYXJzZVR5cGVSZWZlcmVuY2UoKX19fXRocm93IHRoaXMudW5leHBlY3RlZCgpfXRzUGFyc2VBcnJheVR5cGVPckhpZ2hlcigpe2xldCBlPXRoaXMudHNQYXJzZU5vbkFycmF5VHlwZSgpO2Zvcig7IXRoaXMuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJnRoaXMuZWF0KDApOylpZih0aGlzLm1hdGNoKDMpKXtsZXQgcz10aGlzLnN0YXJ0Tm9kZUF0Tm9kZShlKTtzLmVsZW1lbnRUeXBlPWUsdGhpcy5leHBlY3QoMyksZT10aGlzLmZpbmlzaE5vZGUocyxcIlRTQXJyYXlUeXBlXCIpfWVsc2V7bGV0IHM9dGhpcy5zdGFydE5vZGVBdE5vZGUoZSk7cy5vYmplY3RUeXBlPWUscy5pbmRleFR5cGU9dGhpcy50c1BhcnNlVHlwZSgpLHRoaXMuZXhwZWN0KDMpLGU9dGhpcy5maW5pc2hOb2RlKHMsXCJUU0luZGV4ZWRBY2Nlc3NUeXBlXCIpfXJldHVybiBlfXRzUGFyc2VUeXBlT3BlcmF0b3IoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpLHM9dGhpcy5zdGF0ZS52YWx1ZTtyZXR1cm4gdGhpcy5uZXh0KCksZS5vcGVyYXRvcj1zLGUudHlwZUFubm90YXRpb249dGhpcy50c1BhcnNlVHlwZU9wZXJhdG9yT3JIaWdoZXIoKSxzPT09XCJyZWFkb25seVwiJiZ0aGlzLnRzQ2hlY2tUeXBlQW5ub3RhdGlvbkZvclJlYWRPbmx5KGUpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNUeXBlT3BlcmF0b3JcIil9dHNDaGVja1R5cGVBbm5vdGF0aW9uRm9yUmVhZE9ubHkoZSl7c3dpdGNoKGUudHlwZUFubm90YXRpb24udHlwZSl7Y2FzZVwiVFNUdXBsZVR5cGVcIjpjYXNlXCJUU0FycmF5VHlwZVwiOnJldHVybjtkZWZhdWx0OnRoaXMucmFpc2UoUy5VbmV4cGVjdGVkUmVhZG9ubHkse2F0OmV9KX19dHNQYXJzZUluZmVyVHlwZSgpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7dGhpcy5leHBlY3RDb250ZXh0dWFsKDExMik7bGV0IHM9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gcy5uYW1lPXRoaXMudHNQYXJzZVR5cGVQYXJhbWV0ZXJOYW1lKCkscy5jb25zdHJhaW50PXRoaXMudHNUcnlQYXJzZSgoKT0+dGhpcy50c1BhcnNlQ29uc3RyYWludEZvckluZmVyVHlwZSgpKSxlLnR5cGVQYXJhbWV0ZXI9dGhpcy5maW5pc2hOb2RlKHMsXCJUU1R5cGVQYXJhbWV0ZXJcIiksdGhpcy5maW5pc2hOb2RlKGUsXCJUU0luZmVyVHlwZVwiKX10c1BhcnNlQ29uc3RyYWludEZvckluZmVyVHlwZSgpe2lmKHRoaXMuZWF0KDgxKSl7bGV0IGU9dGhpcy50c0luRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dCgoKT0+dGhpcy50c1BhcnNlVHlwZSgpKTtpZih0aGlzLnN0YXRlLmluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dHx8IXRoaXMubWF0Y2goMTcpKXJldHVybiBlfX10c1BhcnNlVHlwZU9wZXJhdG9yT3JIaWdoZXIoKXtyZXR1cm4gRm8odGhpcy5zdGF0ZS50eXBlKSYmIXRoaXMuc3RhdGUuY29udGFpbnNFc2M/dGhpcy50c1BhcnNlVHlwZU9wZXJhdG9yKCk6dGhpcy5pc0NvbnRleHR1YWwoMTEyKT90aGlzLnRzUGFyc2VJbmZlclR5cGUoKTp0aGlzLnRzSW5BbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0KCgpPT50aGlzLnRzUGFyc2VBcnJheVR5cGVPckhpZ2hlcigpKX10c1BhcnNlVW5pb25PckludGVyc2VjdGlvblR5cGUoZSxzLHIpe2xldCBpPXRoaXMuc3RhcnROb2RlKCksYT10aGlzLmVhdChyKSxuPVtdO2RvIG4ucHVzaChzKCkpO3doaWxlKHRoaXMuZWF0KHIpKTtyZXR1cm4gbi5sZW5ndGg9PT0xJiYhYT9uWzBdOihpLnR5cGVzPW4sdGhpcy5maW5pc2hOb2RlKGksZSkpfXRzUGFyc2VJbnRlcnNlY3Rpb25UeXBlT3JIaWdoZXIoKXtyZXR1cm4gdGhpcy50c1BhcnNlVW5pb25PckludGVyc2VjdGlvblR5cGUoXCJUU0ludGVyc2VjdGlvblR5cGVcIix0aGlzLnRzUGFyc2VUeXBlT3BlcmF0b3JPckhpZ2hlci5iaW5kKHRoaXMpLDQ1KX10c1BhcnNlVW5pb25UeXBlT3JIaWdoZXIoKXtyZXR1cm4gdGhpcy50c1BhcnNlVW5pb25PckludGVyc2VjdGlvblR5cGUoXCJUU1VuaW9uVHlwZVwiLHRoaXMudHNQYXJzZUludGVyc2VjdGlvblR5cGVPckhpZ2hlci5iaW5kKHRoaXMpLDQzKX10c0lzU3RhcnRPZkZ1bmN0aW9uVHlwZSgpe3JldHVybiB0aGlzLm1hdGNoKDQ3KT8hMDp0aGlzLm1hdGNoKDEwKSYmdGhpcy50c0xvb2tBaGVhZCh0aGlzLnRzSXNVbmFtYmlndW91c2x5U3RhcnRPZkZ1bmN0aW9uVHlwZS5iaW5kKHRoaXMpKX10c1NraXBQYXJhbWV0ZXJTdGFydCgpe2lmKEsodGhpcy5zdGF0ZS50eXBlKXx8dGhpcy5tYXRjaCg3OCkpcmV0dXJuIHRoaXMubmV4dCgpLCEwO2lmKHRoaXMubWF0Y2goNSkpe2xldHtlcnJvcnM6ZX09dGhpcy5zdGF0ZSxzPWUubGVuZ3RoO3RyeXtyZXR1cm4gdGhpcy5wYXJzZU9iamVjdExpa2UoOCwhMCksZS5sZW5ndGg9PT1zfWNhdGNoe3JldHVybiExfX1pZih0aGlzLm1hdGNoKDApKXt0aGlzLm5leHQoKTtsZXR7ZXJyb3JzOmV9PXRoaXMuc3RhdGUscz1lLmxlbmd0aDt0cnl7cmV0dXJuIHRoaXMucGFyc2VCaW5kaW5nTGlzdCgzLDkzLCEwKSxlLmxlbmd0aD09PXN9Y2F0Y2h7cmV0dXJuITF9fXJldHVybiExfXRzSXNVbmFtYmlndW91c2x5U3RhcnRPZkZ1bmN0aW9uVHlwZSgpe3JldHVybiB0aGlzLm5leHQoKSwhISh0aGlzLm1hdGNoKDExKXx8dGhpcy5tYXRjaCgyMSl8fHRoaXMudHNTa2lwUGFyYW1ldGVyU3RhcnQoKSYmKHRoaXMubWF0Y2goMTQpfHx0aGlzLm1hdGNoKDEyKXx8dGhpcy5tYXRjaCgxNyl8fHRoaXMubWF0Y2goMjkpfHx0aGlzLm1hdGNoKDExKSYmKHRoaXMubmV4dCgpLHRoaXMubWF0Y2goMTkpKSkpfXRzUGFyc2VUeXBlT3JUeXBlUHJlZGljYXRlQW5ub3RhdGlvbihlKXtyZXR1cm4gdGhpcy50c0luVHlwZSgoKT0+e2xldCBzPXRoaXMuc3RhcnROb2RlKCk7dGhpcy5leHBlY3QoZSk7bGV0IHI9dGhpcy5zdGFydE5vZGUoKSxpPSEhdGhpcy50c1RyeVBhcnNlKHRoaXMudHNQYXJzZVR5cGVQcmVkaWNhdGVBc3NlcnRzLmJpbmQodGhpcykpO2lmKGkmJnRoaXMubWF0Y2goNzgpKXtsZXQgbz10aGlzLnRzUGFyc2VUaGlzVHlwZU9yVGhpc1R5cGVQcmVkaWNhdGUoKTtyZXR1cm4gby50eXBlPT09XCJUU1RoaXNUeXBlXCI/KHIucGFyYW1ldGVyTmFtZT1vLHIuYXNzZXJ0cz0hMCxyLnR5cGVBbm5vdGF0aW9uPW51bGwsbz10aGlzLmZpbmlzaE5vZGUocixcIlRTVHlwZVByZWRpY2F0ZVwiKSk6KHRoaXMucmVzZXRTdGFydExvY2F0aW9uRnJvbU5vZGUobyxyKSxvLmFzc2VydHM9ITApLHMudHlwZUFubm90YXRpb249byx0aGlzLmZpbmlzaE5vZGUocyxcIlRTVHlwZUFubm90YXRpb25cIil9bGV0IGE9dGhpcy50c0lzSWRlbnRpZmllcigpJiZ0aGlzLnRzVHJ5UGFyc2UodGhpcy50c1BhcnNlVHlwZVByZWRpY2F0ZVByZWZpeC5iaW5kKHRoaXMpKTtpZighYSlyZXR1cm4gaT8oci5wYXJhbWV0ZXJOYW1lPXRoaXMucGFyc2VJZGVudGlmaWVyKCksci5hc3NlcnRzPWksci50eXBlQW5ub3RhdGlvbj1udWxsLHMudHlwZUFubm90YXRpb249dGhpcy5maW5pc2hOb2RlKHIsXCJUU1R5cGVQcmVkaWNhdGVcIiksdGhpcy5maW5pc2hOb2RlKHMsXCJUU1R5cGVBbm5vdGF0aW9uXCIpKTp0aGlzLnRzUGFyc2VUeXBlQW5ub3RhdGlvbighMSxzKTtsZXQgbj10aGlzLnRzUGFyc2VUeXBlQW5ub3RhdGlvbighMSk7cmV0dXJuIHIucGFyYW1ldGVyTmFtZT1hLHIudHlwZUFubm90YXRpb249bixyLmFzc2VydHM9aSxzLnR5cGVBbm5vdGF0aW9uPXRoaXMuZmluaXNoTm9kZShyLFwiVFNUeXBlUHJlZGljYXRlXCIpLHRoaXMuZmluaXNoTm9kZShzLFwiVFNUeXBlQW5ub3RhdGlvblwiKX0pfXRzVHJ5UGFyc2VUeXBlT3JUeXBlUHJlZGljYXRlQW5ub3RhdGlvbigpe3JldHVybiB0aGlzLm1hdGNoKDE0KT90aGlzLnRzUGFyc2VUeXBlT3JUeXBlUHJlZGljYXRlQW5ub3RhdGlvbigxNCk6dm9pZCAwfXRzVHJ5UGFyc2VUeXBlQW5ub3RhdGlvbigpe3JldHVybiB0aGlzLm1hdGNoKDE0KT90aGlzLnRzUGFyc2VUeXBlQW5ub3RhdGlvbigpOnZvaWQgMH10c1RyeVBhcnNlVHlwZSgpe3JldHVybiB0aGlzLnRzRWF0VGhlblBhcnNlVHlwZSgxNCl9dHNQYXJzZVR5cGVQcmVkaWNhdGVQcmVmaXgoKXtsZXQgZT10aGlzLnBhcnNlSWRlbnRpZmllcigpO2lmKHRoaXMuaXNDb250ZXh0dWFsKDExMykmJiF0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpKXJldHVybiB0aGlzLm5leHQoKSxlfXRzUGFyc2VUeXBlUHJlZGljYXRlQXNzZXJ0cygpe2lmKHRoaXMuc3RhdGUudHlwZSE9PTEwNilyZXR1cm4hMTtsZXQgZT10aGlzLnN0YXRlLmNvbnRhaW5zRXNjO3JldHVybiB0aGlzLm5leHQoKSwhSyh0aGlzLnN0YXRlLnR5cGUpJiYhdGhpcy5tYXRjaCg3OCk/ITE6KGUmJnRoaXMucmFpc2UodS5JbnZhbGlkRXNjYXBlZFJlc2VydmVkV29yZCx7YXQ6dGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2MscmVzZXJ2ZWRXb3JkOlwiYXNzZXJ0c1wifSksITApfXRzUGFyc2VUeXBlQW5ub3RhdGlvbigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTohMCxzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp0aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLnRzSW5UeXBlKCgpPT57ZSYmdGhpcy5leHBlY3QoMTQpLHMudHlwZUFubm90YXRpb249dGhpcy50c1BhcnNlVHlwZSgpfSksdGhpcy5maW5pc2hOb2RlKHMsXCJUU1R5cGVBbm5vdGF0aW9uXCIpfXRzUGFyc2VUeXBlKCl7QnIodGhpcy5zdGF0ZS5pblR5cGUpO2xldCBlPXRoaXMudHNQYXJzZU5vbkNvbmRpdGlvbmFsVHlwZSgpO2lmKHRoaXMuc3RhdGUuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0fHx0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpfHwhdGhpcy5lYXQoODEpKXJldHVybiBlO2xldCBzPXRoaXMuc3RhcnROb2RlQXROb2RlKGUpO3JldHVybiBzLmNoZWNrVHlwZT1lLHMuZXh0ZW5kc1R5cGU9dGhpcy50c0luRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dCgoKT0+dGhpcy50c1BhcnNlTm9uQ29uZGl0aW9uYWxUeXBlKCkpLHRoaXMuZXhwZWN0KDE3KSxzLnRydWVUeXBlPXRoaXMudHNJbkFsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQoKCk9PnRoaXMudHNQYXJzZVR5cGUoKSksdGhpcy5leHBlY3QoMTQpLHMuZmFsc2VUeXBlPXRoaXMudHNJbkFsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQoKCk9PnRoaXMudHNQYXJzZVR5cGUoKSksdGhpcy5maW5pc2hOb2RlKHMsXCJUU0NvbmRpdGlvbmFsVHlwZVwiKX1pc0Fic3RyYWN0Q29uc3RydWN0b3JTaWduYXR1cmUoKXtyZXR1cm4gdGhpcy5pc0NvbnRleHR1YWwoMTIwKSYmdGhpcy5sb29rYWhlYWQoKS50eXBlPT09Nzd9dHNQYXJzZU5vbkNvbmRpdGlvbmFsVHlwZSgpe3JldHVybiB0aGlzLnRzSXNTdGFydE9mRnVuY3Rpb25UeXBlKCk/dGhpcy50c1BhcnNlRnVuY3Rpb25PckNvbnN0cnVjdG9yVHlwZShcIlRTRnVuY3Rpb25UeXBlXCIpOnRoaXMubWF0Y2goNzcpP3RoaXMudHNQYXJzZUZ1bmN0aW9uT3JDb25zdHJ1Y3RvclR5cGUoXCJUU0NvbnN0cnVjdG9yVHlwZVwiKTp0aGlzLmlzQWJzdHJhY3RDb25zdHJ1Y3RvclNpZ25hdHVyZSgpP3RoaXMudHNQYXJzZUZ1bmN0aW9uT3JDb25zdHJ1Y3RvclR5cGUoXCJUU0NvbnN0cnVjdG9yVHlwZVwiLCEwKTp0aGlzLnRzUGFyc2VVbmlvblR5cGVPckhpZ2hlcigpfXRzUGFyc2VUeXBlQXNzZXJ0aW9uKCl7dGhpcy5nZXRQbHVnaW5PcHRpb24oXCJ0eXBlc2NyaXB0XCIsXCJkaXNhbGxvd0FtYmlndW91c0pTWExpa2VcIikmJnRoaXMucmFpc2UoUy5SZXNlcnZlZFR5cGVBc3NlcnRpb24se2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpLHM9dGhpcy50c1RyeU5leHRQYXJzZUNvbnN0YW50Q29udGV4dCgpO3JldHVybiBlLnR5cGVBbm5vdGF0aW9uPXN8fHRoaXMudHNOZXh0VGhlblBhcnNlVHlwZSgpLHRoaXMuZXhwZWN0KDQ4KSxlLmV4cHJlc3Npb249dGhpcy5wYXJzZU1heWJlVW5hcnkoKSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTVHlwZUFzc2VydGlvblwiKX10c1BhcnNlSGVyaXRhZ2VDbGF1c2UoZSl7bGV0IHM9dGhpcy5zdGF0ZS5zdGFydExvYyxyPXRoaXMudHNQYXJzZURlbGltaXRlZExpc3QoXCJIZXJpdGFnZUNsYXVzZUVsZW1lbnRcIiwoKT0+e2xldCBpPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIGkuZXhwcmVzc2lvbj10aGlzLnRzUGFyc2VFbnRpdHlOYW1lKCksdGhpcy5tYXRjaCg0NykmJihpLnR5cGVQYXJhbWV0ZXJzPXRoaXMudHNQYXJzZVR5cGVBcmd1bWVudHMoKSksdGhpcy5maW5pc2hOb2RlKGksXCJUU0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50c1wiKX0pO3JldHVybiByLmxlbmd0aHx8dGhpcy5yYWlzZShTLkVtcHR5SGVyaXRhZ2VDbGF1c2VUeXBlLHthdDpzLHRva2VuOmV9KSxyfXRzUGFyc2VJbnRlcmZhY2VEZWNsYXJhdGlvbihlKXtsZXQgcz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307aWYodGhpcy5oYXNGb2xsb3dpbmdMaW5lQnJlYWsoKSlyZXR1cm4gbnVsbDt0aGlzLmV4cGVjdENvbnRleHR1YWwoMTI1KSxzLmRlY2xhcmUmJihlLmRlY2xhcmU9ITApLEsodGhpcy5zdGF0ZS50eXBlKT8oZS5pZD10aGlzLnBhcnNlSWRlbnRpZmllcigpLHRoaXMuY2hlY2tJZGVudGlmaWVyKGUuaWQsV28pKTooZS5pZD1udWxsLHRoaXMucmFpc2UoUy5NaXNzaW5nSW50ZXJmYWNlTmFtZSx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pKSxlLnR5cGVQYXJhbWV0ZXJzPXRoaXMudHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzKHRoaXMudHNQYXJzZUluT3V0TW9kaWZpZXJzLmJpbmQodGhpcykpLHRoaXMuZWF0KDgxKSYmKGUuZXh0ZW5kcz10aGlzLnRzUGFyc2VIZXJpdGFnZUNsYXVzZShcImV4dGVuZHNcIikpO2xldCByPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHIuYm9keT10aGlzLnRzSW5UeXBlKHRoaXMudHNQYXJzZU9iamVjdFR5cGVNZW1iZXJzLmJpbmQodGhpcykpLGUuYm9keT10aGlzLmZpbmlzaE5vZGUocixcIlRTSW50ZXJmYWNlQm9keVwiKSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTSW50ZXJmYWNlRGVjbGFyYXRpb25cIil9dHNQYXJzZVR5cGVBbGlhc0RlY2xhcmF0aW9uKGUpe3JldHVybiBlLmlkPXRoaXMucGFyc2VJZGVudGlmaWVyKCksdGhpcy5jaGVja0lkZW50aWZpZXIoZS5pZCxHbyksZS50eXBlQW5ub3RhdGlvbj10aGlzLnRzSW5UeXBlKCgpPT57aWYoZS50eXBlUGFyYW1ldGVycz10aGlzLnRzVHJ5UGFyc2VUeXBlUGFyYW1ldGVycyh0aGlzLnRzUGFyc2VJbk91dE1vZGlmaWVycy5iaW5kKHRoaXMpKSx0aGlzLmV4cGVjdCgyOSksdGhpcy5pc0NvbnRleHR1YWwoMTExKSYmdGhpcy5sb29rYWhlYWQoKS50eXBlIT09MTYpe2xldCBzPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShzLFwiVFNJbnRyaW5zaWNLZXl3b3JkXCIpfXJldHVybiB0aGlzLnRzUGFyc2VUeXBlKCl9KSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNUeXBlQWxpYXNEZWNsYXJhdGlvblwiKX10c0luTm9Db250ZXh0KGUpe2xldCBzPXRoaXMuc3RhdGUuY29udGV4dDt0aGlzLnN0YXRlLmNvbnRleHQ9W3NbMF1dO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7dGhpcy5zdGF0ZS5jb250ZXh0PXN9fXRzSW5UeXBlKGUpe2xldCBzPXRoaXMuc3RhdGUuaW5UeXBlO3RoaXMuc3RhdGUuaW5UeXBlPSEwO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7dGhpcy5zdGF0ZS5pblR5cGU9c319dHNJbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQoZSl7bGV0IHM9dGhpcy5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQ7dGhpcy5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQ9ITA7dHJ5e3JldHVybiBlKCl9ZmluYWxseXt0aGlzLnN0YXRlLmluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dD1zfX10c0luQWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dChlKXtsZXQgcz10aGlzLnN0YXRlLmluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dDt0aGlzLnN0YXRlLmluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dD0hMTt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e3RoaXMuc3RhdGUuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0PXN9fXRzRWF0VGhlblBhcnNlVHlwZShlKXtyZXR1cm4gdGhpcy5tYXRjaChlKT90aGlzLnRzTmV4dFRoZW5QYXJzZVR5cGUoKTp2b2lkIDB9dHNFeHBlY3RUaGVuUGFyc2VUeXBlKGUpe3JldHVybiB0aGlzLnRzRG9UaGVuUGFyc2VUeXBlKCgpPT50aGlzLmV4cGVjdChlKSl9dHNOZXh0VGhlblBhcnNlVHlwZSgpe3JldHVybiB0aGlzLnRzRG9UaGVuUGFyc2VUeXBlKCgpPT50aGlzLm5leHQoKSl9dHNEb1RoZW5QYXJzZVR5cGUoZSl7cmV0dXJuIHRoaXMudHNJblR5cGUoKCk9PihlKCksdGhpcy50c1BhcnNlVHlwZSgpKSl9dHNQYXJzZUVudW1NZW1iZXIoKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiBlLmlkPXRoaXMubWF0Y2goMTI5KT90aGlzLnBhcnNlRXhwckF0b20oKTp0aGlzLnBhcnNlSWRlbnRpZmllcighMCksdGhpcy5lYXQoMjkpJiYoZS5pbml0aWFsaXplcj10aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKCkpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNFbnVtTWVtYmVyXCIpfXRzUGFyc2VFbnVtRGVjbGFyYXRpb24oZSl7bGV0IHM9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O3JldHVybiBzLmNvbnN0JiYoZS5jb25zdD0hMCkscy5kZWNsYXJlJiYoZS5kZWNsYXJlPSEwKSx0aGlzLmV4cGVjdENvbnRleHR1YWwoMTIyKSxlLmlkPXRoaXMucGFyc2VJZGVudGlmaWVyKCksdGhpcy5jaGVja0lkZW50aWZpZXIoZS5pZCxlLmNvbnN0P0pvOkVyKSx0aGlzLmV4cGVjdCg1KSxlLm1lbWJlcnM9dGhpcy50c1BhcnNlRGVsaW1pdGVkTGlzdChcIkVudW1NZW1iZXJzXCIsdGhpcy50c1BhcnNlRW51bU1lbWJlci5iaW5kKHRoaXMpKSx0aGlzLmV4cGVjdCg4KSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTRW51bURlY2xhcmF0aW9uXCIpfXRzUGFyc2VNb2R1bGVCbG9jaygpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMuc2NvcGUuZW50ZXIoTWUpLHRoaXMuZXhwZWN0KDUpLHRoaXMucGFyc2VCbG9ja09yTW9kdWxlQmxvY2tCb2R5KGUuYm9keT1bXSx2b2lkIDAsITAsOCksdGhpcy5zY29wZS5leGl0KCksdGhpcy5maW5pc2hOb2RlKGUsXCJUU01vZHVsZUJsb2NrXCIpfXRzUGFyc2VNb2R1bGVPck5hbWVzcGFjZURlY2xhcmF0aW9uKGUpe2xldCBzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMTtpZihlLmlkPXRoaXMucGFyc2VJZGVudGlmaWVyKCksc3x8dGhpcy5jaGVja0lkZW50aWZpZXIoZS5pZCxZbyksdGhpcy5lYXQoMTYpKXtsZXQgcj10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMudHNQYXJzZU1vZHVsZU9yTmFtZXNwYWNlRGVjbGFyYXRpb24ociwhMCksZS5ib2R5PXJ9ZWxzZSB0aGlzLnNjb3BlLmVudGVyKGh0KSx0aGlzLnByb2RQYXJhbS5lbnRlcihqZSksZS5ib2R5PXRoaXMudHNQYXJzZU1vZHVsZUJsb2NrKCksdGhpcy5wcm9kUGFyYW0uZXhpdCgpLHRoaXMuc2NvcGUuZXhpdCgpO3JldHVybiB0aGlzLmZpbmlzaE5vZGUoZSxcIlRTTW9kdWxlRGVjbGFyYXRpb25cIil9dHNQYXJzZUFtYmllbnRFeHRlcm5hbE1vZHVsZURlY2xhcmF0aW9uKGUpe3JldHVybiB0aGlzLmlzQ29udGV4dHVhbCgxMDkpPyhlLmdsb2JhbD0hMCxlLmlkPXRoaXMucGFyc2VJZGVudGlmaWVyKCkpOnRoaXMubWF0Y2goMTI5KT9lLmlkPXRoaXMucGFyc2VFeHByQXRvbSgpOnRoaXMudW5leHBlY3RlZCgpLHRoaXMubWF0Y2goNSk/KHRoaXMuc2NvcGUuZW50ZXIoaHQpLHRoaXMucHJvZFBhcmFtLmVudGVyKGplKSxlLmJvZHk9dGhpcy50c1BhcnNlTW9kdWxlQmxvY2soKSx0aGlzLnByb2RQYXJhbS5leGl0KCksdGhpcy5zY29wZS5leGl0KCkpOnRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKGUsXCJUU01vZHVsZURlY2xhcmF0aW9uXCIpfXRzUGFyc2VJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihlLHMpe2UuaXNFeHBvcnQ9c3x8ITEsZS5pZD10aGlzLnBhcnNlSWRlbnRpZmllcigpLHRoaXMuY2hlY2tJZGVudGlmaWVyKGUuaWQseGUpLHRoaXMuZXhwZWN0KDI5KTtsZXQgcj10aGlzLnRzUGFyc2VNb2R1bGVSZWZlcmVuY2UoKTtyZXR1cm4gZS5pbXBvcnRLaW5kPT09XCJ0eXBlXCImJnIudHlwZSE9PVwiVFNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZVwiJiZ0aGlzLnJhaXNlKFMuSW1wb3J0QWxpYXNIYXNJbXBvcnRUeXBlLHthdDpyfSksZS5tb2R1bGVSZWZlcmVuY2U9cix0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvblwiKX10c0lzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UoKXtyZXR1cm4gdGhpcy5pc0NvbnRleHR1YWwoMTE2KSYmdGhpcy5sb29rYWhlYWRDaGFyQ29kZSgpPT09NDB9dHNQYXJzZU1vZHVsZVJlZmVyZW5jZSgpe3JldHVybiB0aGlzLnRzSXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSgpP3RoaXMudHNQYXJzZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlKCk6dGhpcy50c1BhcnNlRW50aXR5TmFtZSghMSl9dHNQYXJzZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtpZih0aGlzLmV4cGVjdENvbnRleHR1YWwoMTE2KSx0aGlzLmV4cGVjdCgxMCksIXRoaXMubWF0Y2goMTI5KSl0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtyZXR1cm4gZS5leHByZXNzaW9uPXRoaXMucGFyc2VFeHByQXRvbSgpLHRoaXMuZXhwZWN0KDExKSx0aGlzLmZpbmlzaE5vZGUoZSxcIlRTRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2VcIil9dHNMb29rQWhlYWQoZSl7bGV0IHM9dGhpcy5zdGF0ZS5jbG9uZSgpLHI9ZSgpO3JldHVybiB0aGlzLnN0YXRlPXMscn10c1RyeVBhcnNlQW5kQ2F0Y2goZSl7bGV0IHM9dGhpcy50cnlQYXJzZShyPT5lKCl8fHIoKSk7aWYoIShzLmFib3J0ZWR8fCFzLm5vZGUpKXJldHVybiBzLmVycm9yJiYodGhpcy5zdGF0ZT1zLmZhaWxTdGF0ZSkscy5ub2RlfXRzVHJ5UGFyc2UoZSl7bGV0IHM9dGhpcy5zdGF0ZS5jbG9uZSgpLHI9ZSgpO2lmKHIhPT12b2lkIDAmJnIhPT0hMSlyZXR1cm4gcjt0aGlzLnN0YXRlPXN9dHNUcnlQYXJzZURlY2xhcmUoZSl7aWYodGhpcy5pc0xpbmVUZXJtaW5hdG9yKCkpcmV0dXJuO2xldCBzPXRoaXMuc3RhdGUudHlwZSxyO3JldHVybiB0aGlzLmlzQ29udGV4dHVhbCg5OSkmJihzPTc0LHI9XCJsZXRcIiksdGhpcy50c0luQW1iaWVudENvbnRleHQoKCk9PntpZihzPT09NjgpcmV0dXJuIGUuZGVjbGFyZT0hMCx0aGlzLnBhcnNlRnVuY3Rpb25TdGF0ZW1lbnQoZSwhMSwhMCk7aWYocz09PTgwKXJldHVybiBlLmRlY2xhcmU9ITAsdGhpcy5wYXJzZUNsYXNzKGUsITAsITEpO2lmKHM9PT0xMjIpcmV0dXJuIHRoaXMudHNQYXJzZUVudW1EZWNsYXJhdGlvbihlLHtkZWNsYXJlOiEwfSk7aWYocz09PTEwOSlyZXR1cm4gdGhpcy50c1BhcnNlQW1iaWVudEV4dGVybmFsTW9kdWxlRGVjbGFyYXRpb24oZSk7aWYocz09PTc1fHxzPT09NzQpcmV0dXJuIXRoaXMubWF0Y2goNzUpfHwhdGhpcy5pc0xvb2thaGVhZENvbnRleHR1YWwoXCJlbnVtXCIpPyhlLmRlY2xhcmU9ITAsdGhpcy5wYXJzZVZhclN0YXRlbWVudChlLHJ8fHRoaXMuc3RhdGUudmFsdWUsITApKToodGhpcy5leHBlY3QoNzUpLHRoaXMudHNQYXJzZUVudW1EZWNsYXJhdGlvbihlLHtjb25zdDohMCxkZWNsYXJlOiEwfSkpO2lmKHM9PT0xMjUpe2xldCBpPXRoaXMudHNQYXJzZUludGVyZmFjZURlY2xhcmF0aW9uKGUse2RlY2xhcmU6ITB9KTtpZihpKXJldHVybiBpfWlmKEsocykpcmV0dXJuIHRoaXMudHNQYXJzZURlY2xhcmF0aW9uKGUsdGhpcy5zdGF0ZS52YWx1ZSwhMCl9KX10c1RyeVBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKXtyZXR1cm4gdGhpcy50c1BhcnNlRGVjbGFyYXRpb24odGhpcy5zdGFydE5vZGUoKSx0aGlzLnN0YXRlLnZhbHVlLCEwKX10c1BhcnNlRXhwcmVzc2lvblN0YXRlbWVudChlLHMpe3N3aXRjaChzLm5hbWUpe2Nhc2VcImRlY2xhcmVcIjp7bGV0IHI9dGhpcy50c1RyeVBhcnNlRGVjbGFyZShlKTtpZihyKXJldHVybiByLmRlY2xhcmU9ITAscjticmVha31jYXNlXCJnbG9iYWxcIjppZih0aGlzLm1hdGNoKDUpKXt0aGlzLnNjb3BlLmVudGVyKGh0KSx0aGlzLnByb2RQYXJhbS5lbnRlcihqZSk7bGV0IHI9ZTtyZXR1cm4gci5nbG9iYWw9ITAsci5pZD1zLHIuYm9keT10aGlzLnRzUGFyc2VNb2R1bGVCbG9jaygpLHRoaXMuc2NvcGUuZXhpdCgpLHRoaXMucHJvZFBhcmFtLmV4aXQoKSx0aGlzLmZpbmlzaE5vZGUocixcIlRTTW9kdWxlRGVjbGFyYXRpb25cIil9YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy50c1BhcnNlRGVjbGFyYXRpb24oZSxzLm5hbWUsITEpfX10c1BhcnNlRGVjbGFyYXRpb24oZSxzLHIpe3N3aXRjaChzKXtjYXNlXCJhYnN0cmFjdFwiOmlmKHRoaXMudHNDaGVja0xpbmVUZXJtaW5hdG9yKHIpJiYodGhpcy5tYXRjaCg4MCl8fEsodGhpcy5zdGF0ZS50eXBlKSkpcmV0dXJuIHRoaXMudHNQYXJzZUFic3RyYWN0RGVjbGFyYXRpb24oZSk7YnJlYWs7Y2FzZVwibW9kdWxlXCI6aWYodGhpcy50c0NoZWNrTGluZVRlcm1pbmF0b3Iocikpe2lmKHRoaXMubWF0Y2goMTI5KSlyZXR1cm4gdGhpcy50c1BhcnNlQW1iaWVudEV4dGVybmFsTW9kdWxlRGVjbGFyYXRpb24oZSk7aWYoSyh0aGlzLnN0YXRlLnR5cGUpKXJldHVybiB0aGlzLnRzUGFyc2VNb2R1bGVPck5hbWVzcGFjZURlY2xhcmF0aW9uKGUpfWJyZWFrO2Nhc2VcIm5hbWVzcGFjZVwiOmlmKHRoaXMudHNDaGVja0xpbmVUZXJtaW5hdG9yKHIpJiZLKHRoaXMuc3RhdGUudHlwZSkpcmV0dXJuIHRoaXMudHNQYXJzZU1vZHVsZU9yTmFtZXNwYWNlRGVjbGFyYXRpb24oZSk7YnJlYWs7Y2FzZVwidHlwZVwiOmlmKHRoaXMudHNDaGVja0xpbmVUZXJtaW5hdG9yKHIpJiZLKHRoaXMuc3RhdGUudHlwZSkpcmV0dXJuIHRoaXMudHNQYXJzZVR5cGVBbGlhc0RlY2xhcmF0aW9uKGUpO2JyZWFrfX10c0NoZWNrTGluZVRlcm1pbmF0b3IoZSl7cmV0dXJuIGU/dGhpcy5oYXNGb2xsb3dpbmdMaW5lQnJlYWsoKT8hMToodGhpcy5uZXh0KCksITApOiF0aGlzLmlzTGluZVRlcm1pbmF0b3IoKX10c1RyeVBhcnNlR2VuZXJpY0FzeW5jQXJyb3dGdW5jdGlvbihlLHMpe2lmKCF0aGlzLm1hdGNoKDQ3KSlyZXR1cm47bGV0IHI9dGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzO3RoaXMuc3RhdGUubWF5YmVJbkFycm93UGFyYW1ldGVycz0hMDtsZXQgaT10aGlzLnRzVHJ5UGFyc2VBbmRDYXRjaCgoKT0+e2xldCBhPXRoaXMuc3RhcnROb2RlQXQoZSxzKTtyZXR1cm4gYS50eXBlUGFyYW1ldGVycz10aGlzLnRzUGFyc2VUeXBlUGFyYW1ldGVycygpLHN1cGVyLnBhcnNlRnVuY3Rpb25QYXJhbXMoYSksYS5yZXR1cm5UeXBlPXRoaXMudHNUcnlQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKCksdGhpcy5leHBlY3QoMTkpLGF9KTtpZih0aGlzLnN0YXRlLm1heWJlSW5BcnJvd1BhcmFtZXRlcnM9ciwhIWkpcmV0dXJuIHRoaXMucGFyc2VBcnJvd0V4cHJlc3Npb24oaSxudWxsLCEwKX10c1BhcnNlVHlwZUFyZ3VtZW50c0luRXhwcmVzc2lvbigpe2lmKHRoaXMucmVTY2FuX2x0KCk9PT00NylyZXR1cm4gdGhpcy50c1BhcnNlVHlwZUFyZ3VtZW50cygpfXRzUGFyc2VUeXBlQXJndW1lbnRzKCl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gZS5wYXJhbXM9dGhpcy50c0luVHlwZSgoKT0+dGhpcy50c0luTm9Db250ZXh0KCgpPT4odGhpcy5leHBlY3QoNDcpLHRoaXMudHNQYXJzZURlbGltaXRlZExpc3QoXCJUeXBlUGFyYW1ldGVyc09yQXJndW1lbnRzXCIsdGhpcy50c1BhcnNlVHlwZS5iaW5kKHRoaXMpKSkpKSxlLnBhcmFtcy5sZW5ndGg9PT0wJiZ0aGlzLnJhaXNlKFMuRW1wdHlUeXBlQXJndW1lbnRzLHthdDplfSksdGhpcy5leHBlY3QoNDgpLHRoaXMuZmluaXNoTm9kZShlLFwiVFNUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvblwiKX10c0lzRGVjbGFyYXRpb25TdGFydCgpe3JldHVybiBMbyh0aGlzLnN0YXRlLnR5cGUpfWlzRXhwb3J0RGVmYXVsdFNwZWNpZmllcigpe3JldHVybiB0aGlzLnRzSXNEZWNsYXJhdGlvblN0YXJ0KCk/ITE6c3VwZXIuaXNFeHBvcnREZWZhdWx0U3BlY2lmaWVyKCl9cGFyc2VBc3NpZ25hYmxlTGlzdEl0ZW0oZSxzKXtsZXQgcj10aGlzLnN0YXRlLnN0YXJ0LGk9dGhpcy5zdGF0ZS5zdGFydExvYyxhLG49ITEsbz0hMTtpZihlIT09dm9pZCAwKXtsZXQgeT17fTt0aGlzLnRzUGFyc2VNb2RpZmllcnMoe21vZGlmaWVkOnksYWxsb3dlZE1vZGlmaWVyczpbXCJwdWJsaWNcIixcInByaXZhdGVcIixcInByb3RlY3RlZFwiLFwib3ZlcnJpZGVcIixcInJlYWRvbmx5XCJdfSksYT15LmFjY2Vzc2liaWxpdHksbz15Lm92ZXJyaWRlLG49eS5yZWFkb25seSxlPT09ITEmJihhfHxufHxvKSYmdGhpcy5yYWlzZShTLlVuZXhwZWN0ZWRQYXJhbWV0ZXJNb2RpZmllcix7YXQ6aX0pfWxldCBjPXRoaXMucGFyc2VNYXliZURlZmF1bHQoKTt0aGlzLnBhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMoYyk7bGV0IGY9dGhpcy5wYXJzZU1heWJlRGVmYXVsdChjLnN0YXJ0LGMubG9jLnN0YXJ0LGMpO2lmKGF8fG58fG8pe2xldCB5PXRoaXMuc3RhcnROb2RlQXQocixpKTtyZXR1cm4gcy5sZW5ndGgmJih5LmRlY29yYXRvcnM9cyksYSYmKHkuYWNjZXNzaWJpbGl0eT1hKSxuJiYoeS5yZWFkb25seT1uKSxvJiYoeS5vdmVycmlkZT1vKSxmLnR5cGUhPT1cIklkZW50aWZpZXJcIiYmZi50eXBlIT09XCJBc3NpZ25tZW50UGF0dGVyblwiJiZ0aGlzLnJhaXNlKFMuVW5zdXBwb3J0ZWRQYXJhbWV0ZXJQcm9wZXJ0eUtpbmQse2F0Onl9KSx5LnBhcmFtZXRlcj1mLHRoaXMuZmluaXNoTm9kZSh5LFwiVFNQYXJhbWV0ZXJQcm9wZXJ0eVwiKX1yZXR1cm4gcy5sZW5ndGgmJihjLmRlY29yYXRvcnM9cyksZn1pc1NpbXBsZVBhcmFtZXRlcihlKXtyZXR1cm4gZS50eXBlPT09XCJUU1BhcmFtZXRlclByb3BlcnR5XCImJnN1cGVyLmlzU2ltcGxlUGFyYW1ldGVyKGUucGFyYW1ldGVyKXx8c3VwZXIuaXNTaW1wbGVQYXJhbWV0ZXIoZSl9cGFyc2VGdW5jdGlvbkJvZHlBbmRGaW5pc2goZSxzKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITE7dGhpcy5tYXRjaCgxNCkmJihlLnJldHVyblR5cGU9dGhpcy50c1BhcnNlVHlwZU9yVHlwZVByZWRpY2F0ZUFubm90YXRpb24oMTQpKTtsZXQgaT1zPT09XCJGdW5jdGlvbkRlY2xhcmF0aW9uXCI/XCJUU0RlY2xhcmVGdW5jdGlvblwiOnM9PT1cIkNsYXNzTWV0aG9kXCJ8fHM9PT1cIkNsYXNzUHJpdmF0ZU1ldGhvZFwiP1wiVFNEZWNsYXJlTWV0aG9kXCI6dm9pZCAwO2lmKGkmJiF0aGlzLm1hdGNoKDUpJiZ0aGlzLmlzTGluZVRlcm1pbmF0b3IoKSl7dGhpcy5maW5pc2hOb2RlKGUsaSk7cmV0dXJufWlmKGk9PT1cIlRTRGVjbGFyZUZ1bmN0aW9uXCImJnRoaXMuc3RhdGUuaXNBbWJpZW50Q29udGV4dCYmKHRoaXMucmFpc2UoUy5EZWNsYXJlRnVuY3Rpb25IYXNJbXBsZW1lbnRhdGlvbix7YXQ6ZX0pLGUuZGVjbGFyZSkpe3N1cGVyLnBhcnNlRnVuY3Rpb25Cb2R5QW5kRmluaXNoKGUsaSxyKTtyZXR1cm59c3VwZXIucGFyc2VGdW5jdGlvbkJvZHlBbmRGaW5pc2goZSxzLHIpfXJlZ2lzdGVyRnVuY3Rpb25TdGF0ZW1lbnRJZChlKXshZS5ib2R5JiZlLmlkP3RoaXMuY2hlY2tJZGVudGlmaWVyKGUuaWQsQ3IpOnN1cGVyLnJlZ2lzdGVyRnVuY3Rpb25TdGF0ZW1lbnRJZCguLi5hcmd1bWVudHMpfXRzQ2hlY2tGb3JJbnZhbGlkVHlwZUNhc3RzKGUpe2UuZm9yRWFjaChzPT57KHM9PW51bGw/dm9pZCAwOnMudHlwZSk9PT1cIlRTVHlwZUNhc3RFeHByZXNzaW9uXCImJnRoaXMucmFpc2UoUy5VbmV4cGVjdGVkVHlwZUFubm90YXRpb24se2F0OnMudHlwZUFubm90YXRpb259KX0pfXRvUmVmZXJlbmNlZExpc3QoZSxzKXtyZXR1cm4gdGhpcy50c0NoZWNrRm9ySW52YWxpZFR5cGVDYXN0cyhlKSxlfXBhcnNlQXJyYXlMaWtlKCl7bGV0IGU9c3VwZXIucGFyc2VBcnJheUxpa2UoLi4uYXJndW1lbnRzKTtyZXR1cm4gZS50eXBlPT09XCJBcnJheUV4cHJlc3Npb25cIiYmdGhpcy50c0NoZWNrRm9ySW52YWxpZFR5cGVDYXN0cyhlLmVsZW1lbnRzKSxlfXBhcnNlU3Vic2NyaXB0KGUscyxyLGksYSl7aWYoIXRoaXMuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJnRoaXMubWF0Y2goMzUpKXt0aGlzLnN0YXRlLmNhblN0YXJ0SlNYRWxlbWVudD0hMSx0aGlzLm5leHQoKTtsZXQgbz10aGlzLnN0YXJ0Tm9kZUF0KHMscik7cmV0dXJuIG8uZXhwcmVzc2lvbj1lLHRoaXMuZmluaXNoTm9kZShvLFwiVFNOb25OdWxsRXhwcmVzc2lvblwiKX1sZXQgbj0hMTtpZih0aGlzLm1hdGNoKDE4KSYmdGhpcy5sb29rYWhlYWRDaGFyQ29kZSgpPT09NjApe2lmKGkpcmV0dXJuIGEuc3RvcD0hMCxlO2Eub3B0aW9uYWxDaGFpbk1lbWJlcj1uPSEwLHRoaXMubmV4dCgpfWlmKHRoaXMubWF0Y2goNDcpfHx0aGlzLm1hdGNoKDUxKSl7bGV0IG8sYz10aGlzLnRzVHJ5UGFyc2VBbmRDYXRjaCgoKT0+e2lmKCFpJiZ0aGlzLmF0UG9zc2libGVBc3luY0Fycm93KGUpKXtsZXQgUD10aGlzLnRzVHJ5UGFyc2VHZW5lcmljQXN5bmNBcnJvd0Z1bmN0aW9uKHMscik7aWYoUClyZXR1cm4gUH1sZXQgZj10aGlzLnRzUGFyc2VUeXBlQXJndW1lbnRzSW5FeHByZXNzaW9uKCk7aWYoIWYpdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7aWYobiYmIXRoaXMubWF0Y2goMTApKXRocm93IG89dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpLHRoaXMudW5leHBlY3RlZCgpO2lmKG50KHRoaXMuc3RhdGUudHlwZSkpe2xldCBQPXRoaXMucGFyc2VUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oZSxzLHIsYSk7cmV0dXJuIFAudHlwZVBhcmFtZXRlcnM9ZixQfWlmKCFpJiZ0aGlzLmVhdCgxMCkpe2xldCBQPXRoaXMuc3RhcnROb2RlQXQocyxyKTtyZXR1cm4gUC5jYWxsZWU9ZSxQLmFyZ3VtZW50cz10aGlzLnBhcnNlQ2FsbEV4cHJlc3Npb25Bcmd1bWVudHMoMTEsITEpLHRoaXMudHNDaGVja0ZvckludmFsaWRUeXBlQ2FzdHMoUC5hcmd1bWVudHMpLFAudHlwZVBhcmFtZXRlcnM9ZixhLm9wdGlvbmFsQ2hhaW5NZW1iZXImJihQLm9wdGlvbmFsPW4pLHRoaXMuZmluaXNoQ2FsbEV4cHJlc3Npb24oUCxhLm9wdGlvbmFsQ2hhaW5NZW1iZXIpfWlmKGpoKHRoaXMuc3RhdGUudHlwZSkmJnRoaXMuc3RhdGUudHlwZSE9PTEwKXRocm93IHRoaXMudW5leHBlY3RlZCgpO2xldCB5PXRoaXMuc3RhcnROb2RlQXQocyxyKTtyZXR1cm4geS5leHByZXNzaW9uPWUseS50eXBlUGFyYW1ldGVycz1mLHRoaXMuZmluaXNoTm9kZSh5LFwiVFNJbnN0YW50aWF0aW9uRXhwcmVzc2lvblwiKX0pO2lmKG8mJnRoaXMudW5leHBlY3RlZChvLDEwKSxjKXJldHVybiBjfXJldHVybiBzdXBlci5wYXJzZVN1YnNjcmlwdChlLHMscixpLGEpfXBhcnNlTmV3Q2FsbGVlKGUpe3ZhciBzO3N1cGVyLnBhcnNlTmV3Q2FsbGVlKGUpO2xldHtjYWxsZWU6cn09ZTtyLnR5cGU9PT1cIlRTSW5zdGFudGlhdGlvbkV4cHJlc3Npb25cIiYmISgocz1yLmV4dHJhKSE9bnVsbCYmcy5wYXJlbnRoZXNpemVkKSYmKGUudHlwZVBhcmFtZXRlcnM9ci50eXBlUGFyYW1ldGVycyxlLmNhbGxlZT1yLmV4cHJlc3Npb24pfXBhcnNlRXhwck9wKGUscyxyLGkpe2lmKGF0KDU4KT5pJiYhdGhpcy5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSYmdGhpcy5pc0NvbnRleHR1YWwoOTMpKXtsZXQgYT10aGlzLnN0YXJ0Tm9kZUF0KHMscik7YS5leHByZXNzaW9uPWU7bGV0IG49dGhpcy50c1RyeU5leHRQYXJzZUNvbnN0YW50Q29udGV4dCgpO3JldHVybiBuP2EudHlwZUFubm90YXRpb249bjphLnR5cGVBbm5vdGF0aW9uPXRoaXMudHNOZXh0VGhlblBhcnNlVHlwZSgpLHRoaXMuZmluaXNoTm9kZShhLFwiVFNBc0V4cHJlc3Npb25cIiksdGhpcy5yZVNjYW5fbHRfZ3QoKSx0aGlzLnBhcnNlRXhwck9wKGEscyxyLGkpfXJldHVybiBzdXBlci5wYXJzZUV4cHJPcChlLHMscixpKX1jaGVja1Jlc2VydmVkV29yZChlLHMscixpKXt0aGlzLnN0YXRlLmlzQW1iaWVudENvbnRleHR8fHN1cGVyLmNoZWNrUmVzZXJ2ZWRXb3JkKGUscyxyLGkpfWNoZWNrRHVwbGljYXRlRXhwb3J0cygpe31wYXJzZUltcG9ydChlKXtpZihlLmltcG9ydEtpbmQ9XCJ2YWx1ZVwiLEsodGhpcy5zdGF0ZS50eXBlKXx8dGhpcy5tYXRjaCg1NSl8fHRoaXMubWF0Y2goNSkpe2xldCByPXRoaXMubG9va2FoZWFkKCk7aWYodGhpcy5pc0NvbnRleHR1YWwoMTI2KSYmci50eXBlIT09MTImJnIudHlwZSE9PTk3JiZyLnR5cGUhPT0yOSYmKGUuaW1wb3J0S2luZD1cInR5cGVcIix0aGlzLm5leHQoKSxyPXRoaXMubG9va2FoZWFkKCkpLEsodGhpcy5zdGF0ZS50eXBlKSYmci50eXBlPT09MjkpcmV0dXJuIHRoaXMudHNQYXJzZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKGUpfWxldCBzPXN1cGVyLnBhcnNlSW1wb3J0KGUpO3JldHVybiBzLmltcG9ydEtpbmQ9PT1cInR5cGVcIiYmcy5zcGVjaWZpZXJzLmxlbmd0aD4xJiZzLnNwZWNpZmllcnNbMF0udHlwZT09PVwiSW1wb3J0RGVmYXVsdFNwZWNpZmllclwiJiZ0aGlzLnJhaXNlKFMuVHlwZUltcG9ydENhbm5vdFNwZWNpZnlEZWZhdWx0QW5kTmFtZWQse2F0OnN9KSxzfXBhcnNlRXhwb3J0KGUpe2lmKHRoaXMubWF0Y2goODMpKXJldHVybiB0aGlzLm5leHQoKSx0aGlzLmlzQ29udGV4dHVhbCgxMjYpJiZ0aGlzLmxvb2thaGVhZENoYXJDb2RlKCkhPT02MT8oZS5pbXBvcnRLaW5kPVwidHlwZVwiLHRoaXMubmV4dCgpKTplLmltcG9ydEtpbmQ9XCJ2YWx1ZVwiLHRoaXMudHNQYXJzZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKGUsITApO2lmKHRoaXMuZWF0KDI5KSl7bGV0IHM9ZTtyZXR1cm4gcy5leHByZXNzaW9uPXRoaXMucGFyc2VFeHByZXNzaW9uKCksdGhpcy5zZW1pY29sb24oKSx0aGlzLmZpbmlzaE5vZGUocyxcIlRTRXhwb3J0QXNzaWdubWVudFwiKX1lbHNlIGlmKHRoaXMuZWF0Q29udGV4dHVhbCg5Mykpe2xldCBzPWU7cmV0dXJuIHRoaXMuZXhwZWN0Q29udGV4dHVhbCgxMjQpLHMuaWQ9dGhpcy5wYXJzZUlkZW50aWZpZXIoKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShzLFwiVFNOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvblwiKX1lbHNlIHJldHVybiB0aGlzLmlzQ29udGV4dHVhbCgxMjYpJiZ0aGlzLmxvb2thaGVhZCgpLnR5cGU9PT01Pyh0aGlzLm5leHQoKSxlLmV4cG9ydEtpbmQ9XCJ0eXBlXCIpOmUuZXhwb3J0S2luZD1cInZhbHVlXCIsc3VwZXIucGFyc2VFeHBvcnQoZSl9aXNBYnN0cmFjdENsYXNzKCl7cmV0dXJuIHRoaXMuaXNDb250ZXh0dWFsKDEyMCkmJnRoaXMubG9va2FoZWFkKCkudHlwZT09PTgwfXBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24oKXtpZih0aGlzLmlzQWJzdHJhY3RDbGFzcygpKXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSxlLmFic3RyYWN0PSEwLHRoaXMucGFyc2VDbGFzcyhlLCEwLCEwKSxlfWlmKHRoaXMubWF0Y2goMTI1KSl7bGV0IGU9dGhpcy50c1BhcnNlSW50ZXJmYWNlRGVjbGFyYXRpb24odGhpcy5zdGFydE5vZGUoKSk7aWYoZSlyZXR1cm4gZX1yZXR1cm4gc3VwZXIucGFyc2VFeHBvcnREZWZhdWx0RXhwcmVzc2lvbigpfXBhcnNlVmFyU3RhdGVtZW50KGUscyl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOiExLHtpc0FtYmllbnRDb250ZXh0Oml9PXRoaXMuc3RhdGUsYT1zdXBlci5wYXJzZVZhclN0YXRlbWVudChlLHMscnx8aSk7aWYoIWkpcmV0dXJuIGE7Zm9yKGxldHtpZDpuLGluaXQ6b31vZiBhLmRlY2xhcmF0aW9ucykhb3x8KHMhPT1cImNvbnN0XCJ8fCEhbi50eXBlQW5ub3RhdGlvbj90aGlzLnJhaXNlKFMuSW5pdGlhbGl6ZXJOb3RBbGxvd2VkSW5BbWJpZW50Q29udGV4dCx7YXQ6b30pOm8udHlwZSE9PVwiU3RyaW5nTGl0ZXJhbFwiJiZvLnR5cGUhPT1cIkJvb2xlYW5MaXRlcmFsXCImJm8udHlwZSE9PVwiTnVtZXJpY0xpdGVyYWxcIiYmby50eXBlIT09XCJCaWdJbnRMaXRlcmFsXCImJihvLnR5cGUhPT1cIlRlbXBsYXRlTGl0ZXJhbFwifHxvLmV4cHJlc3Npb25zLmxlbmd0aD4wKSYmIXpoKG8pJiZ0aGlzLnJhaXNlKFMuQ29uc3RJbml0aWFpbGl6ZXJNdXN0QmVTdHJpbmdPck51bWVyaWNMaXRlcmFsT3JMaXRlcmFsRW51bVJlZmVyZW5jZSx7YXQ6b30pKTtyZXR1cm4gYX1wYXJzZVN0YXRlbWVudENvbnRlbnQoZSxzKXtpZih0aGlzLm1hdGNoKDc1KSYmdGhpcy5pc0xvb2thaGVhZENvbnRleHR1YWwoXCJlbnVtXCIpKXtsZXQgcj10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLmV4cGVjdCg3NSksdGhpcy50c1BhcnNlRW51bURlY2xhcmF0aW9uKHIse2NvbnN0OiEwfSl9aWYodGhpcy5pc0NvbnRleHR1YWwoMTIyKSlyZXR1cm4gdGhpcy50c1BhcnNlRW51bURlY2xhcmF0aW9uKHRoaXMuc3RhcnROb2RlKCkpO2lmKHRoaXMuaXNDb250ZXh0dWFsKDEyNSkpe2xldCByPXRoaXMudHNQYXJzZUludGVyZmFjZURlY2xhcmF0aW9uKHRoaXMuc3RhcnROb2RlKCkpO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIHN1cGVyLnBhcnNlU3RhdGVtZW50Q29udGVudChlLHMpfXBhcnNlQWNjZXNzTW9kaWZpZXIoKXtyZXR1cm4gdGhpcy50c1BhcnNlTW9kaWZpZXIoW1wicHVibGljXCIsXCJwcm90ZWN0ZWRcIixcInByaXZhdGVcIl0pfXRzSGFzU29tZU1vZGlmaWVycyhlLHMpe3JldHVybiBzLnNvbWUocj0+TXIocik/ZS5hY2Nlc3NpYmlsaXR5PT09cjohIWVbcl0pfXRzSXNTdGFydE9mU3RhdGljQmxvY2tzKCl7cmV0dXJuIHRoaXMuaXNDb250ZXh0dWFsKDEwNCkmJnRoaXMubG9va2FoZWFkQ2hhckNvZGUoKT09PTEyM31wYXJzZUNsYXNzTWVtYmVyKGUscyxyKXtsZXQgaT1bXCJkZWNsYXJlXCIsXCJwcml2YXRlXCIsXCJwdWJsaWNcIixcInByb3RlY3RlZFwiLFwib3ZlcnJpZGVcIixcImFic3RyYWN0XCIsXCJyZWFkb25seVwiLFwic3RhdGljXCJdO3RoaXMudHNQYXJzZU1vZGlmaWVycyh7bW9kaWZpZWQ6cyxhbGxvd2VkTW9kaWZpZXJzOmksZGlzYWxsb3dlZE1vZGlmaWVyczpbXCJpblwiLFwib3V0XCJdLHN0b3BPblN0YXJ0T2ZDbGFzc1N0YXRpY0Jsb2NrOiEwLGVycm9yVGVtcGxhdGU6Uy5JbnZhbGlkTW9kaWZpZXJPblR5cGVQYXJhbWV0ZXJQb3NpdGlvbnN9KTtsZXQgYT0oKT0+e3RoaXMudHNJc1N0YXJ0T2ZTdGF0aWNCbG9ja3MoKT8odGhpcy5uZXh0KCksdGhpcy5uZXh0KCksdGhpcy50c0hhc1NvbWVNb2RpZmllcnMocyxpKSYmdGhpcy5yYWlzZShTLlN0YXRpY0Jsb2NrQ2Fubm90SGF2ZU1vZGlmaWVyLHthdDp0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCl9KSx0aGlzLnBhcnNlQ2xhc3NTdGF0aWNCbG9jayhlLHMpKTp0aGlzLnBhcnNlQ2xhc3NNZW1iZXJXaXRoSXNTdGF0aWMoZSxzLHIsISFzLnN0YXRpYyl9O3MuZGVjbGFyZT90aGlzLnRzSW5BbWJpZW50Q29udGV4dChhKTphKCl9cGFyc2VDbGFzc01lbWJlcldpdGhJc1N0YXRpYyhlLHMscixpKXtsZXQgYT10aGlzLnRzVHJ5UGFyc2VJbmRleFNpZ25hdHVyZShzKTtpZihhKXtlLmJvZHkucHVzaChhKSxzLmFic3RyYWN0JiZ0aGlzLnJhaXNlKFMuSW5kZXhTaWduYXR1cmVIYXNBYnN0cmFjdCx7YXQ6c30pLHMuYWNjZXNzaWJpbGl0eSYmdGhpcy5yYWlzZShTLkluZGV4U2lnbmF0dXJlSGFzQWNjZXNzaWJpbGl0eSx7YXQ6cyxtb2RpZmllcjpzLmFjY2Vzc2liaWxpdHl9KSxzLmRlY2xhcmUmJnRoaXMucmFpc2UoUy5JbmRleFNpZ25hdHVyZUhhc0RlY2xhcmUse2F0OnN9KSxzLm92ZXJyaWRlJiZ0aGlzLnJhaXNlKFMuSW5kZXhTaWduYXR1cmVIYXNPdmVycmlkZSx7YXQ6c30pO3JldHVybn0hdGhpcy5zdGF0ZS5pbkFic3RyYWN0Q2xhc3MmJnMuYWJzdHJhY3QmJnRoaXMucmFpc2UoUy5Ob25BYnN0cmFjdENsYXNzSGFzQWJzdHJhY3RNZXRob2Qse2F0OnN9KSxzLm92ZXJyaWRlJiYoci5oYWRTdXBlckNsYXNzfHx0aGlzLnJhaXNlKFMuT3ZlcnJpZGVOb3RJblN1YkNsYXNzLHthdDpzfSkpLHN1cGVyLnBhcnNlQ2xhc3NNZW1iZXJXaXRoSXNTdGF0aWMoZSxzLHIsaSl9cGFyc2VQb3N0TWVtYmVyTmFtZU1vZGlmaWVycyhlKXt0aGlzLmVhdCgxNykmJihlLm9wdGlvbmFsPSEwKSxlLnJlYWRvbmx5JiZ0aGlzLm1hdGNoKDEwKSYmdGhpcy5yYWlzZShTLkNsYXNzTWV0aG9kSGFzUmVhZG9ubHkse2F0OmV9KSxlLmRlY2xhcmUmJnRoaXMubWF0Y2goMTApJiZ0aGlzLnJhaXNlKFMuQ2xhc3NNZXRob2RIYXNEZWNsYXJlLHthdDplfSl9cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KGUscyl7cmV0dXJuKHMudHlwZT09PVwiSWRlbnRpZmllclwiP3RoaXMudHNQYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoZSxzKTp2b2lkIDApfHxzdXBlci5wYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoZSxzKX1zaG91bGRQYXJzZUV4cG9ydERlY2xhcmF0aW9uKCl7cmV0dXJuIHRoaXMudHNJc0RlY2xhcmF0aW9uU3RhcnQoKT8hMDpzdXBlci5zaG91bGRQYXJzZUV4cG9ydERlY2xhcmF0aW9uKCl9cGFyc2VDb25kaXRpb25hbChlLHMscixpKXtpZighdGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzfHwhdGhpcy5tYXRjaCgxNykpcmV0dXJuIHN1cGVyLnBhcnNlQ29uZGl0aW9uYWwoZSxzLHIsaSk7bGV0IGE9dGhpcy50cnlQYXJzZSgoKT0+c3VwZXIucGFyc2VDb25kaXRpb25hbChlLHMscikpO3JldHVybiBhLm5vZGU/KGEuZXJyb3ImJih0aGlzLnN0YXRlPWEuZmFpbFN0YXRlKSxhLm5vZGUpOihhLmVycm9yJiZzdXBlci5zZXRPcHRpb25hbFBhcmFtZXRlcnNFcnJvcihpLGEuZXJyb3IpLGUpfXBhcnNlUGFyZW5JdGVtKGUscyxyKXtpZihlPXN1cGVyLnBhcnNlUGFyZW5JdGVtKGUscyxyKSx0aGlzLmVhdCgxNykmJihlLm9wdGlvbmFsPSEwLHRoaXMucmVzZXRFbmRMb2NhdGlvbihlKSksdGhpcy5tYXRjaCgxNCkpe2xldCBpPXRoaXMuc3RhcnROb2RlQXQocyxyKTtyZXR1cm4gaS5leHByZXNzaW9uPWUsaS50eXBlQW5ub3RhdGlvbj10aGlzLnRzUGFyc2VUeXBlQW5ub3RhdGlvbigpLHRoaXMuZmluaXNoTm9kZShpLFwiVFNUeXBlQ2FzdEV4cHJlc3Npb25cIil9cmV0dXJuIGV9cGFyc2VFeHBvcnREZWNsYXJhdGlvbihlKXtpZighdGhpcy5zdGF0ZS5pc0FtYmllbnRDb250ZXh0JiZ0aGlzLmlzQ29udGV4dHVhbCgxMjEpKXJldHVybiB0aGlzLnRzSW5BbWJpZW50Q29udGV4dCgoKT0+dGhpcy5wYXJzZUV4cG9ydERlY2xhcmF0aW9uKGUpKTtsZXQgcz10aGlzLnN0YXRlLnN0YXJ0LHI9dGhpcy5zdGF0ZS5zdGFydExvYyxpPXRoaXMuZWF0Q29udGV4dHVhbCgxMjEpO2lmKGkmJih0aGlzLmlzQ29udGV4dHVhbCgxMjEpfHwhdGhpcy5zaG91bGRQYXJzZUV4cG9ydERlY2xhcmF0aW9uKCkpKXRocm93IHRoaXMucmFpc2UoUy5FeHBlY3RlZEFtYmllbnRBZnRlckV4cG9ydERlY2xhcmUse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtsZXQgbj1LKHRoaXMuc3RhdGUudHlwZSkmJnRoaXMudHNUcnlQYXJzZUV4cG9ydERlY2xhcmF0aW9uKCl8fHN1cGVyLnBhcnNlRXhwb3J0RGVjbGFyYXRpb24oZSk7cmV0dXJuIG4/KChuLnR5cGU9PT1cIlRTSW50ZXJmYWNlRGVjbGFyYXRpb25cInx8bi50eXBlPT09XCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCJ8fGkpJiYoZS5leHBvcnRLaW5kPVwidHlwZVwiKSxpJiYodGhpcy5yZXNldFN0YXJ0TG9jYXRpb24obixzLHIpLG4uZGVjbGFyZT0hMCksbik6bnVsbH1wYXJzZUNsYXNzSWQoZSxzLHIpe2lmKCghc3x8cikmJnRoaXMuaXNDb250ZXh0dWFsKDExMCkpcmV0dXJuO3N1cGVyLnBhcnNlQ2xhc3NJZChlLHMscixlLmRlY2xhcmU/Q3I6UHIpO2xldCBpPXRoaXMudHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzKHRoaXMudHNQYXJzZUluT3V0TW9kaWZpZXJzLmJpbmQodGhpcykpO2kmJihlLnR5cGVQYXJhbWV0ZXJzPWkpfXBhcnNlQ2xhc3NQcm9wZXJ0eUFubm90YXRpb24oZSl7IWUub3B0aW9uYWwmJnRoaXMuZWF0KDM1KSYmKGUuZGVmaW5pdGU9ITApO2xldCBzPXRoaXMudHNUcnlQYXJzZVR5cGVBbm5vdGF0aW9uKCk7cyYmKGUudHlwZUFubm90YXRpb249cyl9cGFyc2VDbGFzc1Byb3BlcnR5KGUpe2lmKHRoaXMucGFyc2VDbGFzc1Byb3BlcnR5QW5ub3RhdGlvbihlKSx0aGlzLnN0YXRlLmlzQW1iaWVudENvbnRleHQmJnRoaXMubWF0Y2goMjkpJiZ0aGlzLnJhaXNlKFMuRGVjbGFyZUNsYXNzRmllbGRIYXNJbml0aWFsaXplcix7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pLGUuYWJzdHJhY3QmJnRoaXMubWF0Y2goMjkpKXtsZXR7a2V5OnN9PWU7dGhpcy5yYWlzZShTLkFic3RyYWN0UHJvcGVydHlIYXNJbml0aWFsaXplcix7YXQ6dGhpcy5zdGF0ZS5zdGFydExvYyxwcm9wZXJ0eU5hbWU6cy50eXBlPT09XCJJZGVudGlmaWVyXCImJiFlLmNvbXB1dGVkP3MubmFtZTpcIltcIi5jb25jYXQodGhpcy5pbnB1dC5zbGljZShzLnN0YXJ0LHMuZW5kKSxcIl1cIil9KX1yZXR1cm4gc3VwZXIucGFyc2VDbGFzc1Byb3BlcnR5KGUpfXBhcnNlQ2xhc3NQcml2YXRlUHJvcGVydHkoZSl7cmV0dXJuIGUuYWJzdHJhY3QmJnRoaXMucmFpc2UoUy5Qcml2YXRlRWxlbWVudEhhc0Fic3RyYWN0LHthdDplfSksZS5hY2Nlc3NpYmlsaXR5JiZ0aGlzLnJhaXNlKFMuUHJpdmF0ZUVsZW1lbnRIYXNBY2Nlc3NpYmlsaXR5LHthdDplLG1vZGlmaWVyOmUuYWNjZXNzaWJpbGl0eX0pLHRoaXMucGFyc2VDbGFzc1Byb3BlcnR5QW5ub3RhdGlvbihlKSxzdXBlci5wYXJzZUNsYXNzUHJpdmF0ZVByb3BlcnR5KGUpfXB1c2hDbGFzc01ldGhvZChlLHMscixpLGEsbil7bGV0IG89dGhpcy50c1RyeVBhcnNlVHlwZVBhcmFtZXRlcnMoKTtvJiZhJiZ0aGlzLnJhaXNlKFMuQ29uc3RydWN0b3JIYXNUeXBlUGFyYW1ldGVycyx7YXQ6b30pO2xldHtkZWNsYXJlOmM9ITEsa2luZDpmfT1zO2MmJihmPT09XCJnZXRcInx8Zj09PVwic2V0XCIpJiZ0aGlzLnJhaXNlKFMuRGVjbGFyZUFjY2Vzc29yLHthdDpzLGtpbmQ6Zn0pLG8mJihzLnR5cGVQYXJhbWV0ZXJzPW8pLHN1cGVyLnB1c2hDbGFzc01ldGhvZChlLHMscixpLGEsbil9cHVzaENsYXNzUHJpdmF0ZU1ldGhvZChlLHMscixpKXtsZXQgYT10aGlzLnRzVHJ5UGFyc2VUeXBlUGFyYW1ldGVycygpO2EmJihzLnR5cGVQYXJhbWV0ZXJzPWEpLHN1cGVyLnB1c2hDbGFzc1ByaXZhdGVNZXRob2QoZSxzLHIsaSl9ZGVjbGFyZUNsYXNzUHJpdmF0ZU1ldGhvZEluU2NvcGUoZSxzKXtlLnR5cGUhPT1cIlRTRGVjbGFyZU1ldGhvZFwiJiYoZS50eXBlPT09XCJNZXRob2REZWZpbml0aW9uXCImJiFlLnZhbHVlLmJvZHl8fHN1cGVyLmRlY2xhcmVDbGFzc1ByaXZhdGVNZXRob2RJblNjb3BlKGUscykpfXBhcnNlQ2xhc3NTdXBlcihlKXtzdXBlci5wYXJzZUNsYXNzU3VwZXIoZSksZS5zdXBlckNsYXNzJiYodGhpcy5tYXRjaCg0Nyl8fHRoaXMubWF0Y2goNTEpKSYmKGUuc3VwZXJUeXBlUGFyYW1ldGVycz10aGlzLnRzUGFyc2VUeXBlQXJndW1lbnRzSW5FeHByZXNzaW9uKCkpLHRoaXMuZWF0Q29udGV4dHVhbCgxMTApJiYoZS5pbXBsZW1lbnRzPXRoaXMudHNQYXJzZUhlcml0YWdlQ2xhdXNlKFwiaW1wbGVtZW50c1wiKSl9cGFyc2VPYmpQcm9wVmFsdWUoZSl7bGV0IHM9dGhpcy50c1RyeVBhcnNlVHlwZVBhcmFtZXRlcnMoKTtzJiYoZS50eXBlUGFyYW1ldGVycz1zKTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShyPjE/ci0xOjApLGE9MTthPHI7YSsrKWlbYS0xXT1hcmd1bWVudHNbYV07c3VwZXIucGFyc2VPYmpQcm9wVmFsdWUoZSwuLi5pKX1wYXJzZUZ1bmN0aW9uUGFyYW1zKGUscyl7bGV0IHI9dGhpcy50c1RyeVBhcnNlVHlwZVBhcmFtZXRlcnMoKTtyJiYoZS50eXBlUGFyYW1ldGVycz1yKSxzdXBlci5wYXJzZUZ1bmN0aW9uUGFyYW1zKGUscyl9cGFyc2VWYXJJZChlLHMpe3N1cGVyLnBhcnNlVmFySWQoZSxzKSxlLmlkLnR5cGU9PT1cIklkZW50aWZpZXJcIiYmIXRoaXMuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJnRoaXMuZWF0KDM1KSYmKGUuZGVmaW5pdGU9ITApO2xldCByPXRoaXMudHNUcnlQYXJzZVR5cGVBbm5vdGF0aW9uKCk7ciYmKGUuaWQudHlwZUFubm90YXRpb249cix0aGlzLnJlc2V0RW5kTG9jYXRpb24oZS5pZCkpfXBhcnNlQXN5bmNBcnJvd0Zyb21DYWxsRXhwcmVzc2lvbihlLHMpe3JldHVybiB0aGlzLm1hdGNoKDE0KSYmKGUucmV0dXJuVHlwZT10aGlzLnRzUGFyc2VUeXBlQW5ub3RhdGlvbigpKSxzdXBlci5wYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24oZSxzKX1wYXJzZU1heWJlQXNzaWduKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspc1tyXT1hcmd1bWVudHNbcl07dmFyIGksYSxuLG8sYyxmLHk7bGV0IFAsdixOO2lmKHRoaXMuaGFzUGx1Z2luKFwianN4XCIpJiYodGhpcy5tYXRjaCgxMzgpfHx0aGlzLm1hdGNoKDQ3KSkpe2lmKFA9dGhpcy5zdGF0ZS5jbG9uZSgpLHY9dGhpcy50cnlQYXJzZSgoKT0+c3VwZXIucGFyc2VNYXliZUFzc2lnbiguLi5zKSxQKSwhdi5lcnJvcilyZXR1cm4gdi5ub2RlO2xldHtjb250ZXh0OlF9PXRoaXMuc3RhdGUscmU9UVtRLmxlbmd0aC0xXTsocmU9PT16Lmpfb1RhZ3x8cmU9PT16LmpfZXhwcikmJlEucG9wKCl9aWYoISgoaT12KSE9bnVsbCYmaS5lcnJvcikmJiF0aGlzLm1hdGNoKDQ3KSlyZXR1cm4gc3VwZXIucGFyc2VNYXliZUFzc2lnbiguLi5zKTtsZXQgQjtQPVB8fHRoaXMuc3RhdGUuY2xvbmUoKTtsZXQgXz10aGlzLnRyeVBhcnNlKFE9Pnt2YXIgcmUsbmUsJGU7Qj10aGlzLnRzUGFyc2VUeXBlUGFyYW1ldGVycygpO2xldCBsZT1zdXBlci5wYXJzZU1heWJlQXNzaWduKC4uLnMpO3JldHVybihsZS50eXBlIT09XCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwifHwocmU9bGUuZXh0cmEpIT1udWxsJiZyZS5wYXJlbnRoZXNpemVkKSYmUSgpLCgobmU9Qik9PW51bGw/dm9pZCAwOm5lLnBhcmFtcy5sZW5ndGgpIT09MCYmdGhpcy5yZXNldFN0YXJ0TG9jYXRpb25Gcm9tTm9kZShsZSxCKSxsZS50eXBlUGFyYW1ldGVycz1CLHRoaXMuaGFzUGx1Z2luKFwianN4XCIpJiZsZS50eXBlUGFyYW1ldGVycy5wYXJhbXMubGVuZ3RoPT09MSYmISgoJGU9bGUudHlwZVBhcmFtZXRlcnMuZXh0cmEpIT1udWxsJiYkZS50cmFpbGluZ0NvbW1hKSYmbGUudHlwZVBhcmFtZXRlcnMucGFyYW1zWzBdLmNvbnN0cmFpbnQsbGV9LFApO2lmKCFfLmVycm9yJiYhXy5hYm9ydGVkKXJldHVybiBCJiZ0aGlzLnJlcG9ydFJlc2VydmVkQXJyb3dUeXBlUGFyYW0oQiksXy5ub2RlO2lmKCF2JiYoQnIoIXRoaXMuaGFzUGx1Z2luKFwianN4XCIpKSxOPXRoaXMudHJ5UGFyc2UoKCk9PnN1cGVyLnBhcnNlTWF5YmVBc3NpZ24oLi4ucyksUCksIU4uZXJyb3IpKXJldHVybiBOLm5vZGU7aWYoKGE9dikhPW51bGwmJmEubm9kZSlyZXR1cm4gdGhpcy5zdGF0ZT12LmZhaWxTdGF0ZSx2Lm5vZGU7aWYoXy5ub2RlKXJldHVybiB0aGlzLnN0YXRlPV8uZmFpbFN0YXRlLEImJnRoaXMucmVwb3J0UmVzZXJ2ZWRBcnJvd1R5cGVQYXJhbShCKSxfLm5vZGU7aWYoKG49TikhPW51bGwmJm4ubm9kZSlyZXR1cm4gdGhpcy5zdGF0ZT1OLmZhaWxTdGF0ZSxOLm5vZGU7dGhyb3cobz12KSE9bnVsbCYmby50aHJvd24/di5lcnJvcjpfLnRocm93bj9fLmVycm9yOihjPU4pIT1udWxsJiZjLnRocm93bj9OLmVycm9yOigoZj12KT09bnVsbD92b2lkIDA6Zi5lcnJvcil8fF8uZXJyb3J8fCgoeT1OKT09bnVsbD92b2lkIDA6eS5lcnJvcil9cmVwb3J0UmVzZXJ2ZWRBcnJvd1R5cGVQYXJhbShlKXt2YXIgcztlLnBhcmFtcy5sZW5ndGg9PT0xJiYhKChzPWUuZXh0cmEpIT1udWxsJiZzLnRyYWlsaW5nQ29tbWEpJiZ0aGlzLmdldFBsdWdpbk9wdGlvbihcInR5cGVzY3JpcHRcIixcImRpc2FsbG93QW1iaWd1b3VzSlNYTGlrZVwiKSYmdGhpcy5yYWlzZShTLlJlc2VydmVkQXJyb3dUeXBlUGFyYW0se2F0OmV9KX1wYXJzZU1heWJlVW5hcnkoZSl7cmV0dXJuIXRoaXMuaGFzUGx1Z2luKFwianN4XCIpJiZ0aGlzLm1hdGNoKDQ3KT90aGlzLnRzUGFyc2VUeXBlQXNzZXJ0aW9uKCk6c3VwZXIucGFyc2VNYXliZVVuYXJ5KGUpfXBhcnNlQXJyb3coZSl7aWYodGhpcy5tYXRjaCgxNCkpe2xldCBzPXRoaXMudHJ5UGFyc2Uocj0+e2xldCBpPXRoaXMudHNQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKDE0KTtyZXR1cm4odGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKXx8IXRoaXMubWF0Y2goMTkpKSYmcigpLGl9KTtpZihzLmFib3J0ZWQpcmV0dXJuO3MudGhyb3dufHwocy5lcnJvciYmKHRoaXMuc3RhdGU9cy5mYWlsU3RhdGUpLGUucmV0dXJuVHlwZT1zLm5vZGUpfXJldHVybiBzdXBlci5wYXJzZUFycm93KGUpfXBhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMoZSl7dGhpcy5lYXQoMTcpJiYoZS50eXBlIT09XCJJZGVudGlmaWVyXCImJiF0aGlzLnN0YXRlLmlzQW1iaWVudENvbnRleHQmJiF0aGlzLnN0YXRlLmluVHlwZSYmdGhpcy5yYWlzZShTLlBhdHRlcm5Jc09wdGlvbmFsLHthdDplfSksZS5vcHRpb25hbD0hMCk7bGV0IHM9dGhpcy50c1RyeVBhcnNlVHlwZUFubm90YXRpb24oKTtyZXR1cm4gcyYmKGUudHlwZUFubm90YXRpb249cyksdGhpcy5yZXNldEVuZExvY2F0aW9uKGUpLGV9aXNBc3NpZ25hYmxlKGUscyl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiVFNUeXBlQ2FzdEV4cHJlc3Npb25cIjpyZXR1cm4gdGhpcy5pc0Fzc2lnbmFibGUoZS5leHByZXNzaW9uLHMpO2Nhc2VcIlRTUGFyYW1ldGVyUHJvcGVydHlcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiBzdXBlci5pc0Fzc2lnbmFibGUoZSxzKX19dG9Bc3NpZ25hYmxlKGUpe2xldCBzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMTtzd2l0Y2goZS50eXBlKXtjYXNlXCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiOnRoaXMudG9Bc3NpZ25hYmxlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oZSxzKTticmVhaztjYXNlXCJUU0FzRXhwcmVzc2lvblwiOmNhc2VcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjpjYXNlXCJUU1R5cGVBc3NlcnRpb25cIjpzP3RoaXMuZXhwcmVzc2lvblNjb3BlLnJlY29yZEFycm93UGFyZW1ldGVyQmluZGluZ0Vycm9yKFMuVW5leHBlY3RlZFR5cGVDYXN0SW5QYXJhbWV0ZXIse2F0OmV9KTp0aGlzLnJhaXNlKFMuVW5leHBlY3RlZFR5cGVDYXN0SW5QYXJhbWV0ZXIse2F0OmV9KSx0aGlzLnRvQXNzaWduYWJsZShlLmV4cHJlc3Npb24scyk7YnJlYWs7Y2FzZVwiQXNzaWdubWVudEV4cHJlc3Npb25cIjohcyYmZS5sZWZ0LnR5cGU9PT1cIlRTVHlwZUNhc3RFeHByZXNzaW9uXCImJihlLmxlZnQ9dGhpcy50eXBlQ2FzdFRvUGFyYW1ldGVyKGUubGVmdCkpO2RlZmF1bHQ6c3VwZXIudG9Bc3NpZ25hYmxlKGUscyl9fXRvQXNzaWduYWJsZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGUscyl7c3dpdGNoKGUuZXhwcmVzc2lvbi50eXBlKXtjYXNlXCJUU0FzRXhwcmVzc2lvblwiOmNhc2VcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjpjYXNlXCJUU1R5cGVBc3NlcnRpb25cIjpjYXNlXCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiOnRoaXMudG9Bc3NpZ25hYmxlKGUuZXhwcmVzc2lvbixzKTticmVhaztkZWZhdWx0OnN1cGVyLnRvQXNzaWduYWJsZShlLHMpfX1jaGVja1RvUmVzdENvbnZlcnNpb24oZSxzKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJUU0FzRXhwcmVzc2lvblwiOmNhc2VcIlRTVHlwZUFzc2VydGlvblwiOmNhc2VcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjp0aGlzLmNoZWNrVG9SZXN0Q29udmVyc2lvbihlLmV4cHJlc3Npb24sITEpO2JyZWFrO2RlZmF1bHQ6c3VwZXIuY2hlY2tUb1Jlc3RDb252ZXJzaW9uKGUscyl9fWlzVmFsaWRMVmFsKGUscyxyKXtyZXR1cm4gTWgoe1RTVHlwZUNhc3RFeHByZXNzaW9uOiEwLFRTUGFyYW1ldGVyUHJvcGVydHk6XCJwYXJhbWV0ZXJcIixUU05vbk51bGxFeHByZXNzaW9uOlwiZXhwcmVzc2lvblwiLFRTQXNFeHByZXNzaW9uOihyIT09d2V8fCFzKSYmW1wiZXhwcmVzc2lvblwiLCEwXSxUU1R5cGVBc3NlcnRpb246KHIhPT13ZXx8IXMpJiZbXCJleHByZXNzaW9uXCIsITBdfSxlKXx8c3VwZXIuaXNWYWxpZExWYWwoZSxzLHIpfXBhcnNlQmluZGluZ0F0b20oKXtzd2l0Y2godGhpcy5zdGF0ZS50eXBlKXtjYXNlIDc4OnJldHVybiB0aGlzLnBhcnNlSWRlbnRpZmllcighMCk7ZGVmYXVsdDpyZXR1cm4gc3VwZXIucGFyc2VCaW5kaW5nQXRvbSgpfX1wYXJzZU1heWJlRGVjb3JhdG9yQXJndW1lbnRzKGUpe2lmKHRoaXMubWF0Y2goNDcpfHx0aGlzLm1hdGNoKDUxKSl7bGV0IHM9dGhpcy50c1BhcnNlVHlwZUFyZ3VtZW50c0luRXhwcmVzc2lvbigpO2lmKHRoaXMubWF0Y2goMTApKXtsZXQgcj1zdXBlci5wYXJzZU1heWJlRGVjb3JhdG9yQXJndW1lbnRzKGUpO3JldHVybiByLnR5cGVQYXJhbWV0ZXJzPXMscn10aGlzLnVuZXhwZWN0ZWQobnVsbCwxMCl9cmV0dXJuIHN1cGVyLnBhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHMoZSl9Y2hlY2tDb21tYUFmdGVyUmVzdChlKXtyZXR1cm4gdGhpcy5zdGF0ZS5pc0FtYmllbnRDb250ZXh0JiZ0aGlzLm1hdGNoKDEyKSYmdGhpcy5sb29rYWhlYWRDaGFyQ29kZSgpPT09ZT8odGhpcy5uZXh0KCksITEpOnN1cGVyLmNoZWNrQ29tbWFBZnRlclJlc3QoZSl9aXNDbGFzc01ldGhvZCgpe3JldHVybiB0aGlzLm1hdGNoKDQ3KXx8c3VwZXIuaXNDbGFzc01ldGhvZCgpfWlzQ2xhc3NQcm9wZXJ0eSgpe3JldHVybiB0aGlzLm1hdGNoKDM1KXx8dGhpcy5tYXRjaCgxNCl8fHN1cGVyLmlzQ2xhc3NQcm9wZXJ0eSgpfXBhcnNlTWF5YmVEZWZhdWx0KCl7bGV0IGU9c3VwZXIucGFyc2VNYXliZURlZmF1bHQoLi4uYXJndW1lbnRzKTtyZXR1cm4gZS50eXBlPT09XCJBc3NpZ25tZW50UGF0dGVyblwiJiZlLnR5cGVBbm5vdGF0aW9uJiZlLnJpZ2h0LnN0YXJ0PGUudHlwZUFubm90YXRpb24uc3RhcnQmJnRoaXMucmFpc2UoUy5UeXBlQW5ub3RhdGlvbkFmdGVyQXNzaWduLHthdDplLnR5cGVBbm5vdGF0aW9ufSksZX1nZXRUb2tlbkZyb21Db2RlKGUpe2lmKHRoaXMuc3RhdGUuaW5UeXBlKXtpZihlPT09NjIpcmV0dXJuIHRoaXMuZmluaXNoT3AoNDgsMSk7aWYoZT09PTYwKXJldHVybiB0aGlzLmZpbmlzaE9wKDQ3LDEpfXJldHVybiBzdXBlci5nZXRUb2tlbkZyb21Db2RlKGUpfXJlU2Nhbl9sdF9ndCgpe2xldHt0eXBlOmV9PXRoaXMuc3RhdGU7ZT09PTQ3Pyh0aGlzLnN0YXRlLnBvcy09MSx0aGlzLnJlYWRUb2tlbl9sdCgpKTplPT09NDgmJih0aGlzLnN0YXRlLnBvcy09MSx0aGlzLnJlYWRUb2tlbl9ndCgpKX1yZVNjYW5fbHQoKXtsZXR7dHlwZTplfT10aGlzLnN0YXRlO3JldHVybiBlPT09NTE/KHRoaXMuc3RhdGUucG9zLT0yLHRoaXMuZmluaXNoT3AoNDcsMSksNDcpOmV9dG9Bc3NpZ25hYmxlTGlzdChlKXtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IHI9ZVtzXTsocj09bnVsbD92b2lkIDA6ci50eXBlKT09PVwiVFNUeXBlQ2FzdEV4cHJlc3Npb25cIiYmKGVbc109dGhpcy50eXBlQ2FzdFRvUGFyYW1ldGVyKHIpKX1zdXBlci50b0Fzc2lnbmFibGVMaXN0KC4uLmFyZ3VtZW50cyl9dHlwZUNhc3RUb1BhcmFtZXRlcihlKXtyZXR1cm4gZS5leHByZXNzaW9uLnR5cGVBbm5vdGF0aW9uPWUudHlwZUFubm90YXRpb24sdGhpcy5yZXNldEVuZExvY2F0aW9uKGUuZXhwcmVzc2lvbixlLnR5cGVBbm5vdGF0aW9uLmxvYy5lbmQpLGUuZXhwcmVzc2lvbn1zaG91bGRQYXJzZUFycm93KGUpe3JldHVybiB0aGlzLm1hdGNoKDE0KT9lLmV2ZXJ5KHM9PnRoaXMuaXNBc3NpZ25hYmxlKHMsITApKTpzdXBlci5zaG91bGRQYXJzZUFycm93KGUpfXNob3VsZFBhcnNlQXN5bmNBcnJvdygpe3JldHVybiB0aGlzLm1hdGNoKDE0KXx8c3VwZXIuc2hvdWxkUGFyc2VBc3luY0Fycm93KCl9Y2FuSGF2ZUxlYWRpbmdEZWNvcmF0b3IoKXtyZXR1cm4gc3VwZXIuY2FuSGF2ZUxlYWRpbmdEZWNvcmF0b3IoKXx8dGhpcy5pc0Fic3RyYWN0Q2xhc3MoKX1qc3hQYXJzZU9wZW5pbmdFbGVtZW50QWZ0ZXJOYW1lKGUpe2lmKHRoaXMubWF0Y2goNDcpfHx0aGlzLm1hdGNoKDUxKSl7bGV0IHM9dGhpcy50c1RyeVBhcnNlQW5kQ2F0Y2goKCk9PnRoaXMudHNQYXJzZVR5cGVBcmd1bWVudHNJbkV4cHJlc3Npb24oKSk7cyYmKGUudHlwZVBhcmFtZXRlcnM9cyl9cmV0dXJuIHN1cGVyLmpzeFBhcnNlT3BlbmluZ0VsZW1lbnRBZnRlck5hbWUoZSl9Z2V0R2V0dGVyU2V0dGVyRXhwZWN0ZWRQYXJhbUNvdW50KGUpe2xldCBzPXN1cGVyLmdldEdldHRlclNldHRlckV4cGVjdGVkUGFyYW1Db3VudChlKSxpPXRoaXMuZ2V0T2JqZWN0T3JDbGFzc01ldGhvZFBhcmFtcyhlKVswXTtyZXR1cm4gaSYmdGhpcy5pc1RoaXNQYXJhbShpKT9zKzE6c31wYXJzZUNhdGNoQ2xhdXNlUGFyYW0oKXtsZXQgZT1zdXBlci5wYXJzZUNhdGNoQ2xhdXNlUGFyYW0oKSxzPXRoaXMudHNUcnlQYXJzZVR5cGVBbm5vdGF0aW9uKCk7cmV0dXJuIHMmJihlLnR5cGVBbm5vdGF0aW9uPXMsdGhpcy5yZXNldEVuZExvY2F0aW9uKGUpKSxlfXRzSW5BbWJpZW50Q29udGV4dChlKXtsZXQgcz10aGlzLnN0YXRlLmlzQW1iaWVudENvbnRleHQ7dGhpcy5zdGF0ZS5pc0FtYmllbnRDb250ZXh0PSEwO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7dGhpcy5zdGF0ZS5pc0FtYmllbnRDb250ZXh0PXN9fXBhcnNlQ2xhc3MoZSl7bGV0IHM9dGhpcy5zdGF0ZS5pbkFic3RyYWN0Q2xhc3M7dGhpcy5zdGF0ZS5pbkFic3RyYWN0Q2xhc3M9ISFlLmFic3RyYWN0O3RyeXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShyPjE/ci0xOjApLGE9MTthPHI7YSsrKWlbYS0xXT1hcmd1bWVudHNbYV07cmV0dXJuIHN1cGVyLnBhcnNlQ2xhc3MoZSwuLi5pKX1maW5hbGx5e3RoaXMuc3RhdGUuaW5BYnN0cmFjdENsYXNzPXN9fXRzUGFyc2VBYnN0cmFjdERlY2xhcmF0aW9uKGUpe2lmKHRoaXMubWF0Y2goODApKXJldHVybiBlLmFic3RyYWN0PSEwLHRoaXMucGFyc2VDbGFzcyhlLCEwLCExKTtpZih0aGlzLmlzQ29udGV4dHVhbCgxMjUpKXtpZighdGhpcy5oYXNGb2xsb3dpbmdMaW5lQnJlYWsoKSlyZXR1cm4gZS5hYnN0cmFjdD0hMCx0aGlzLnJhaXNlKFMuTm9uQ2xhc3NNZXRob2RQcm9wZXJ0eUhhc0Fic3RyYWN0TW9kaWZlcix7YXQ6ZX0pLHRoaXMudHNQYXJzZUludGVyZmFjZURlY2xhcmF0aW9uKGUpfWVsc2UgdGhpcy51bmV4cGVjdGVkKG51bGwsODApfXBhcnNlTWV0aG9kKCl7bGV0IGU9c3VwZXIucGFyc2VNZXRob2QoLi4uYXJndW1lbnRzKTtpZihlLmFic3RyYWN0JiYodGhpcy5oYXNQbHVnaW4oXCJlc3RyZWVcIik/ISFlLnZhbHVlLmJvZHk6ISFlLmJvZHkpKXtsZXR7a2V5OnJ9PWU7dGhpcy5yYWlzZShTLkFic3RyYWN0TWV0aG9kSGFzSW1wbGVtZW50YXRpb24se2F0OmUsbWV0aG9kTmFtZTpyLnR5cGU9PT1cIklkZW50aWZpZXJcIiYmIWUuY29tcHV0ZWQ/ci5uYW1lOlwiW1wiLmNvbmNhdCh0aGlzLmlucHV0LnNsaWNlKHIuc3RhcnQsci5lbmQpLFwiXVwiKX0pfXJldHVybiBlfXRzUGFyc2VUeXBlUGFyYW1ldGVyTmFtZSgpe3JldHVybiB0aGlzLnBhcnNlSWRlbnRpZmllcigpLm5hbWV9c2hvdWxkUGFyc2VBc0FtYmllbnRDb250ZXh0KCl7cmV0dXJuISF0aGlzLmdldFBsdWdpbk9wdGlvbihcInR5cGVzY3JpcHRcIixcImR0c1wiKX1wYXJzZSgpe3JldHVybiB0aGlzLnNob3VsZFBhcnNlQXNBbWJpZW50Q29udGV4dCgpJiYodGhpcy5zdGF0ZS5pc0FtYmllbnRDb250ZXh0PSEwKSxzdXBlci5wYXJzZSgpfWdldEV4cHJlc3Npb24oKXtyZXR1cm4gdGhpcy5zaG91bGRQYXJzZUFzQW1iaWVudENvbnRleHQoKSYmKHRoaXMuc3RhdGUuaXNBbWJpZW50Q29udGV4dD0hMCksc3VwZXIuZ2V0RXhwcmVzc2lvbigpfXBhcnNlRXhwb3J0U3BlY2lmaWVyKGUscyxyLGkpe3JldHVybiFzJiZpPyh0aGlzLnBhcnNlVHlwZU9ubHlJbXBvcnRFeHBvcnRTcGVjaWZpZXIoZSwhMSxyKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkV4cG9ydFNwZWNpZmllclwiKSk6KGUuZXhwb3J0S2luZD1cInZhbHVlXCIsc3VwZXIucGFyc2VFeHBvcnRTcGVjaWZpZXIoZSxzLHIsaSkpfXBhcnNlSW1wb3J0U3BlY2lmaWVyKGUscyxyLGkpe3JldHVybiFzJiZpPyh0aGlzLnBhcnNlVHlwZU9ubHlJbXBvcnRFeHBvcnRTcGVjaWZpZXIoZSwhMCxyKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkltcG9ydFNwZWNpZmllclwiKSk6KGUuaW1wb3J0S2luZD1cInZhbHVlXCIsc3VwZXIucGFyc2VJbXBvcnRTcGVjaWZpZXIoZSxzLHIsaSkpfXBhcnNlVHlwZU9ubHlJbXBvcnRFeHBvcnRTcGVjaWZpZXIoZSxzLHIpe2xldCBpPXM/XCJpbXBvcnRlZFwiOlwibG9jYWxcIixhPXM/XCJsb2NhbFwiOlwiZXhwb3J0ZWRcIixuPWVbaV0sbyxjPSExLGY9ITAseT1uLmxvYy5zdGFydDtpZih0aGlzLmlzQ29udGV4dHVhbCg5Mykpe2xldCB2PXRoaXMucGFyc2VJZGVudGlmaWVyKCk7aWYodGhpcy5pc0NvbnRleHR1YWwoOTMpKXtsZXQgTj10aGlzLnBhcnNlSWRlbnRpZmllcigpO3BlKHRoaXMuc3RhdGUudHlwZSk/KGM9ITAsbj12LG89cz90aGlzLnBhcnNlSWRlbnRpZmllcigpOnRoaXMucGFyc2VNb2R1bGVFeHBvcnROYW1lKCksZj0hMSk6KG89TixmPSExKX1lbHNlIHBlKHRoaXMuc3RhdGUudHlwZSk/KGY9ITEsbz1zP3RoaXMucGFyc2VJZGVudGlmaWVyKCk6dGhpcy5wYXJzZU1vZHVsZUV4cG9ydE5hbWUoKSk6KGM9ITAsbj12KX1lbHNlIHBlKHRoaXMuc3RhdGUudHlwZSkmJihjPSEwLHM/KG49dGhpcy5wYXJzZUlkZW50aWZpZXIoITApLHRoaXMuaXNDb250ZXh0dWFsKDkzKXx8dGhpcy5jaGVja1Jlc2VydmVkV29yZChuLm5hbWUsbi5sb2Muc3RhcnQsITAsITApKTpuPXRoaXMucGFyc2VNb2R1bGVFeHBvcnROYW1lKCkpO2MmJnImJnRoaXMucmFpc2Uocz9TLlR5cGVNb2RpZmllcklzVXNlZEluVHlwZUltcG9ydHM6Uy5UeXBlTW9kaWZpZXJJc1VzZWRJblR5cGVFeHBvcnRzLHthdDp5fSksZVtpXT1uLGVbYV09bztsZXQgUD1zP1wiaW1wb3J0S2luZFwiOlwiZXhwb3J0S2luZFwiO2VbUF09Yz9cInR5cGVcIjpcInZhbHVlXCIsZiYmdGhpcy5lYXRDb250ZXh0dWFsKDkzKSYmKGVbYV09cz90aGlzLnBhcnNlSWRlbnRpZmllcigpOnRoaXMucGFyc2VNb2R1bGVFeHBvcnROYW1lKCkpLGVbYV18fChlW2FdPWdlKGVbaV0pKSxzJiZ0aGlzLmNoZWNrSWRlbnRpZmllcihlW2FdLHhlKX19O2Z1bmN0aW9uIHpoKHQpe2lmKHQudHlwZSE9PVwiTWVtYmVyRXhwcmVzc2lvblwiKXJldHVybiExO2xldHtjb21wdXRlZDplLHByb3BlcnR5OnN9PXQ7cmV0dXJuIGUmJnMudHlwZSE9PVwiU3RyaW5nTGl0ZXJhbFwiJiYocy50eXBlIT09XCJUZW1wbGF0ZUxpdGVyYWxcInx8cy5leHByZXNzaW9ucy5sZW5ndGg+MCk/ITE6UnIodC5vYmplY3QpfWZ1bmN0aW9uIFJyKHQpe3JldHVybiB0LnR5cGU9PT1cIklkZW50aWZpZXJcIj8hMDp0LnR5cGUhPT1cIk1lbWJlckV4cHJlc3Npb25cInx8dC5jb21wdXRlZD8hMTpScih0Lm9iamVjdCl9dmFyIGpyPWooSG58fChIbj1ydChbXCJwbGFjZWhvbGRlcnNcIl0pKSkodD0+KHtDbGFzc05hbWVJc1JlcXVpcmVkOnQoXCJBIGNsYXNzIG5hbWUgaXMgcmVxdWlyZWQuXCIpLFVuZXhwZWN0ZWRTcGFjZTp0KFwiVW5leHBlY3RlZCBzcGFjZSBpbiBwbGFjZWhvbGRlci5cIil9KSksS2g9dD0+Y2xhc3MgZXh0ZW5kcyB0e3BhcnNlUGxhY2Vob2xkZXIoZSl7aWYodGhpcy5tYXRjaCgxNDApKXtsZXQgcz10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmFzc2VydE5vU3BhY2UoKSxzLm5hbWU9c3VwZXIucGFyc2VJZGVudGlmaWVyKCEwKSx0aGlzLmFzc2VydE5vU3BhY2UoKSx0aGlzLmV4cGVjdCgxNDApLHRoaXMuZmluaXNoUGxhY2Vob2xkZXIocyxlKX19ZmluaXNoUGxhY2Vob2xkZXIoZSxzKXtsZXQgcj0hIShlLmV4cGVjdGVkTm9kZSYmZS50eXBlPT09XCJQbGFjZWhvbGRlclwiKTtyZXR1cm4gZS5leHBlY3RlZE5vZGU9cyxyP2U6dGhpcy5maW5pc2hOb2RlKGUsXCJQbGFjZWhvbGRlclwiKX1nZXRUb2tlbkZyb21Db2RlKGUpe3JldHVybiBlPT09MzcmJnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnN0YXRlLnBvcysxKT09PTM3P3RoaXMuZmluaXNoT3AoMTQwLDIpOnN1cGVyLmdldFRva2VuRnJvbUNvZGUoLi4uYXJndW1lbnRzKX1wYXJzZUV4cHJBdG9tKCl7cmV0dXJuIHRoaXMucGFyc2VQbGFjZWhvbGRlcihcIkV4cHJlc3Npb25cIil8fHN1cGVyLnBhcnNlRXhwckF0b20oLi4uYXJndW1lbnRzKX1wYXJzZUlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5wYXJzZVBsYWNlaG9sZGVyKFwiSWRlbnRpZmllclwiKXx8c3VwZXIucGFyc2VJZGVudGlmaWVyKC4uLmFyZ3VtZW50cyl9Y2hlY2tSZXNlcnZlZFdvcmQoZSl7ZSE9PXZvaWQgMCYmc3VwZXIuY2hlY2tSZXNlcnZlZFdvcmQoLi4uYXJndW1lbnRzKX1wYXJzZUJpbmRpbmdBdG9tKCl7cmV0dXJuIHRoaXMucGFyc2VQbGFjZWhvbGRlcihcIlBhdHRlcm5cIil8fHN1cGVyLnBhcnNlQmluZGluZ0F0b20oLi4uYXJndW1lbnRzKX1pc1ZhbGlkTFZhbChlKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShzPjE/cy0xOjApLGk9MTtpPHM7aSsrKXJbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIGU9PT1cIlBsYWNlaG9sZGVyXCJ8fHN1cGVyLmlzVmFsaWRMVmFsKGUsLi4ucil9dG9Bc3NpZ25hYmxlKGUpe2UmJmUudHlwZT09PVwiUGxhY2Vob2xkZXJcIiYmZS5leHBlY3RlZE5vZGU9PT1cIkV4cHJlc3Npb25cIj9lLmV4cGVjdGVkTm9kZT1cIlBhdHRlcm5cIjpzdXBlci50b0Fzc2lnbmFibGUoLi4uYXJndW1lbnRzKX1pc0xldChlKXtyZXR1cm4gc3VwZXIuaXNMZXQoZSk/ITA6IXRoaXMuaXNDb250ZXh0dWFsKDk5KXx8ZT8hMTp0aGlzLmxvb2thaGVhZCgpLnR5cGU9PT0xNDB9dmVyaWZ5QnJlYWtDb250aW51ZShlKXtlLmxhYmVsJiZlLmxhYmVsLnR5cGU9PT1cIlBsYWNlaG9sZGVyXCJ8fHN1cGVyLnZlcmlmeUJyZWFrQ29udGludWUoLi4uYXJndW1lbnRzKX1wYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoZSxzKXtpZihzLnR5cGUhPT1cIlBsYWNlaG9sZGVyXCJ8fHMuZXh0cmEmJnMuZXh0cmEucGFyZW50aGVzaXplZClyZXR1cm4gc3VwZXIucGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KC4uLmFyZ3VtZW50cyk7aWYodGhpcy5tYXRjaCgxNCkpe2xldCByPWU7cmV0dXJuIHIubGFiZWw9dGhpcy5maW5pc2hQbGFjZWhvbGRlcihzLFwiSWRlbnRpZmllclwiKSx0aGlzLm5leHQoKSxyLmJvZHk9dGhpcy5wYXJzZVN0YXRlbWVudChcImxhYmVsXCIpLHRoaXMuZmluaXNoTm9kZShyLFwiTGFiZWxlZFN0YXRlbWVudFwiKX1yZXR1cm4gdGhpcy5zZW1pY29sb24oKSxlLm5hbWU9cy5uYW1lLHRoaXMuZmluaXNoUGxhY2Vob2xkZXIoZSxcIlN0YXRlbWVudFwiKX1wYXJzZUJsb2NrKCl7cmV0dXJuIHRoaXMucGFyc2VQbGFjZWhvbGRlcihcIkJsb2NrU3RhdGVtZW50XCIpfHxzdXBlci5wYXJzZUJsb2NrKC4uLmFyZ3VtZW50cyl9cGFyc2VGdW5jdGlvbklkKCl7cmV0dXJuIHRoaXMucGFyc2VQbGFjZWhvbGRlcihcIklkZW50aWZpZXJcIil8fHN1cGVyLnBhcnNlRnVuY3Rpb25JZCguLi5hcmd1bWVudHMpfXBhcnNlQ2xhc3MoZSxzLHIpe2xldCBpPXM/XCJDbGFzc0RlY2xhcmF0aW9uXCI6XCJDbGFzc0V4cHJlc3Npb25cIjt0aGlzLm5leHQoKSx0aGlzLnRha2VEZWNvcmF0b3JzKGUpO2xldCBhPXRoaXMuc3RhdGUuc3RyaWN0LG49dGhpcy5wYXJzZVBsYWNlaG9sZGVyKFwiSWRlbnRpZmllclwiKTtpZihuKWlmKHRoaXMubWF0Y2goODEpfHx0aGlzLm1hdGNoKDE0MCl8fHRoaXMubWF0Y2goNSkpZS5pZD1uO2Vsc2V7aWYocnx8IXMpcmV0dXJuIGUuaWQ9bnVsbCxlLmJvZHk9dGhpcy5maW5pc2hQbGFjZWhvbGRlcihuLFwiQ2xhc3NCb2R5XCIpLHRoaXMuZmluaXNoTm9kZShlLGkpO3Rocm93IHRoaXMucmFpc2UoanIuQ2xhc3NOYW1lSXNSZXF1aXJlZCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pfWVsc2UgdGhpcy5wYXJzZUNsYXNzSWQoZSxzLHIpO3JldHVybiB0aGlzLnBhcnNlQ2xhc3NTdXBlcihlKSxlLmJvZHk9dGhpcy5wYXJzZVBsYWNlaG9sZGVyKFwiQ2xhc3NCb2R5XCIpfHx0aGlzLnBhcnNlQ2xhc3NCb2R5KCEhZS5zdXBlckNsYXNzLGEpLHRoaXMuZmluaXNoTm9kZShlLGkpfXBhcnNlRXhwb3J0KGUpe2xldCBzPXRoaXMucGFyc2VQbGFjZWhvbGRlcihcIklkZW50aWZpZXJcIik7aWYoIXMpcmV0dXJuIHN1cGVyLnBhcnNlRXhwb3J0KC4uLmFyZ3VtZW50cyk7aWYoIXRoaXMuaXNDb250ZXh0dWFsKDk3KSYmIXRoaXMubWF0Y2goMTIpKXJldHVybiBlLnNwZWNpZmllcnM9W10sZS5zb3VyY2U9bnVsbCxlLmRlY2xhcmF0aW9uPXRoaXMuZmluaXNoUGxhY2Vob2xkZXIocyxcIkRlY2xhcmF0aW9uXCIpLHRoaXMuZmluaXNoTm9kZShlLFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiKTt0aGlzLmV4cGVjdFBsdWdpbihcImV4cG9ydERlZmF1bHRGcm9tXCIpO2xldCByPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHIuZXhwb3J0ZWQ9cyxlLnNwZWNpZmllcnM9W3RoaXMuZmluaXNoTm9kZShyLFwiRXhwb3J0RGVmYXVsdFNwZWNpZmllclwiKV0sc3VwZXIucGFyc2VFeHBvcnQoZSl9aXNFeHBvcnREZWZhdWx0U3BlY2lmaWVyKCl7aWYodGhpcy5tYXRjaCg2NSkpe2xldCBlPXRoaXMubmV4dFRva2VuU3RhcnQoKTtpZih0aGlzLmlzVW5wYXJzZWRDb250ZXh0dWFsKGUsXCJmcm9tXCIpJiZ0aGlzLmlucHV0LnN0YXJ0c1dpdGgoUGUoMTQwKSx0aGlzLm5leHRUb2tlblN0YXJ0U2luY2UoZSs0KSkpcmV0dXJuITB9cmV0dXJuIHN1cGVyLmlzRXhwb3J0RGVmYXVsdFNwZWNpZmllcigpfW1heWJlUGFyc2VFeHBvcnREZWZhdWx0U3BlY2lmaWVyKGUpe3JldHVybiBlLnNwZWNpZmllcnMmJmUuc3BlY2lmaWVycy5sZW5ndGg+MD8hMDpzdXBlci5tYXliZVBhcnNlRXhwb3J0RGVmYXVsdFNwZWNpZmllciguLi5hcmd1bWVudHMpfWNoZWNrRXhwb3J0KGUpe2xldHtzcGVjaWZpZXJzOnN9PWU7cyE9bnVsbCYmcy5sZW5ndGgmJihlLnNwZWNpZmllcnM9cy5maWx0ZXIocj0+ci5leHBvcnRlZC50eXBlPT09XCJQbGFjZWhvbGRlclwiKSksc3VwZXIuY2hlY2tFeHBvcnQoZSksZS5zcGVjaWZpZXJzPXN9cGFyc2VJbXBvcnQoZSl7bGV0IHM9dGhpcy5wYXJzZVBsYWNlaG9sZGVyKFwiSWRlbnRpZmllclwiKTtpZighcylyZXR1cm4gc3VwZXIucGFyc2VJbXBvcnQoLi4uYXJndW1lbnRzKTtpZihlLnNwZWNpZmllcnM9W10sIXRoaXMuaXNDb250ZXh0dWFsKDk3KSYmIXRoaXMubWF0Y2goMTIpKXJldHVybiBlLnNvdXJjZT10aGlzLmZpbmlzaFBsYWNlaG9sZGVyKHMsXCJTdHJpbmdMaXRlcmFsXCIpLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKGUsXCJJbXBvcnREZWNsYXJhdGlvblwiKTtsZXQgcj10aGlzLnN0YXJ0Tm9kZUF0Tm9kZShzKTtyZXR1cm4gci5sb2NhbD1zLHRoaXMuZmluaXNoTm9kZShyLFwiSW1wb3J0RGVmYXVsdFNwZWNpZmllclwiKSxlLnNwZWNpZmllcnMucHVzaChyKSx0aGlzLmVhdCgxMikmJih0aGlzLm1heWJlUGFyc2VTdGFySW1wb3J0U3BlY2lmaWVyKGUpfHx0aGlzLnBhcnNlTmFtZWRJbXBvcnRTcGVjaWZpZXJzKGUpKSx0aGlzLmV4cGVjdENvbnRleHR1YWwoOTcpLGUuc291cmNlPXRoaXMucGFyc2VJbXBvcnRTb3VyY2UoKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiSW1wb3J0RGVjbGFyYXRpb25cIil9cGFyc2VJbXBvcnRTb3VyY2UoKXtyZXR1cm4gdGhpcy5wYXJzZVBsYWNlaG9sZGVyKFwiU3RyaW5nTGl0ZXJhbFwiKXx8c3VwZXIucGFyc2VJbXBvcnRTb3VyY2UoLi4uYXJndW1lbnRzKX1hc3NlcnROb1NwYWNlKCl7dGhpcy5zdGF0ZS5zdGFydD50aGlzLnN0YXRlLmxhc3RUb2tFbmRMb2MuaW5kZXgmJnRoaXMucmFpc2UoanIuVW5leHBlY3RlZFNwYWNlLHthdDp0aGlzLnN0YXRlLmxhc3RUb2tFbmRMb2N9KX19LFZoPXQ9PmNsYXNzIGV4dGVuZHMgdHtwYXJzZVY4SW50cmluc2ljKCl7aWYodGhpcy5tYXRjaCg1NCkpe2xldCBlPXRoaXMuc3RhdGUuc3RhcnRMb2Mscz10aGlzLnN0YXJ0Tm9kZSgpO2lmKHRoaXMubmV4dCgpLEsodGhpcy5zdGF0ZS50eXBlKSl7bGV0IHI9dGhpcy5wYXJzZUlkZW50aWZpZXJOYW1lKHRoaXMuc3RhdGUuc3RhcnQpLGk9dGhpcy5jcmVhdGVJZGVudGlmaWVyKHMscik7aWYoaS50eXBlPVwiVjhJbnRyaW5zaWNJZGVudGlmaWVyXCIsdGhpcy5tYXRjaCgxMCkpcmV0dXJuIGl9dGhpcy51bmV4cGVjdGVkKGUpfX1wYXJzZUV4cHJBdG9tKCl7cmV0dXJuIHRoaXMucGFyc2VWOEludHJpbnNpYygpfHxzdXBlci5wYXJzZUV4cHJBdG9tKC4uLmFyZ3VtZW50cyl9fTtmdW5jdGlvbiBlZSh0LGUpe2xldFtzLHJdPXR5cGVvZiBlPT1cInN0cmluZ1wiP1tlLHt9XTplLGk9T2JqZWN0LmtleXMociksYT1pLmxlbmd0aD09PTA7cmV0dXJuIHQuc29tZShuPT57aWYodHlwZW9mIG49PVwic3RyaW5nXCIpcmV0dXJuIGEmJm49PT1zO3tsZXRbbyxjXT1uO2lmKG8hPT1zKXJldHVybiExO2ZvcihsZXQgZiBvZiBpKWlmKGNbZl0hPT1yW2ZdKXJldHVybiExO3JldHVybiEwfX0pfWZ1bmN0aW9uIEplKHQsZSxzKXtsZXQgcj10LmZpbmQoaT0+QXJyYXkuaXNBcnJheShpKT9pWzBdPT09ZTppPT09ZSk7cmV0dXJuIHImJkFycmF5LmlzQXJyYXkocik/clsxXVtzXTpudWxsfXZhciBxcj1bXCJtaW5pbWFsXCIsXCJmc2hhcnBcIixcImhhY2tcIixcInNtYXJ0XCJdLFVyPVtcIl5eXCIsXCJAQFwiLFwiXlwiLFwiJVwiLFwiI1wiXSxfcj1bXCJoYXNoXCIsXCJiYXJcIl07ZnVuY3Rpb24gSGgodCl7aWYoZWUodCxcImRlY29yYXRvcnNcIikpe2lmKGVlKHQsXCJkZWNvcmF0b3JzLWxlZ2FjeVwiKSl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIHRoZSBkZWNvcmF0b3JzIGFuZCBkZWNvcmF0b3JzLWxlZ2FjeSBwbHVnaW4gdG9nZXRoZXJcIik7bGV0IGU9SmUodCxcImRlY29yYXRvcnNcIixcImRlY29yYXRvcnNCZWZvcmVFeHBvcnRcIik7aWYoZT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgJ2RlY29yYXRvcnMnIHBsdWdpbiByZXF1aXJlcyBhICdkZWNvcmF0b3JzQmVmb3JlRXhwb3J0JyBvcHRpb24sIHdob3NlIHZhbHVlIG11c3QgYmUgYSBib29sZWFuLiBJZiB5b3UgYXJlIG1pZ3JhdGluZyBmcm9tIEJhYnlsb24vQmFiZWwgNiBvciB3YW50IHRvIHVzZSB0aGUgb2xkIGRlY29yYXRvcnMgcHJvcG9zYWwsIHlvdSBzaG91bGQgdXNlIHRoZSAnZGVjb3JhdG9ycy1sZWdhY3knIHBsdWdpbiBpbnN0ZWFkIG9mICdkZWNvcmF0b3JzJy5cIik7aWYodHlwZW9mIGUhPVwiYm9vbGVhblwiKXRocm93IG5ldyBFcnJvcihcIidkZWNvcmF0b3JzQmVmb3JlRXhwb3J0JyBtdXN0IGJlIGEgYm9vbGVhbi5cIil9aWYoZWUodCxcImZsb3dcIikmJmVlKHQsXCJ0eXBlc2NyaXB0XCIpKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjb21iaW5lIGZsb3cgYW5kIHR5cGVzY3JpcHQgcGx1Z2lucy5cIik7aWYoZWUodCxcInBsYWNlaG9sZGVyc1wiKSYmZWUodCxcInY4aW50cmluc2ljXCIpKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjb21iaW5lIHBsYWNlaG9sZGVycyBhbmQgdjhpbnRyaW5zaWMgcGx1Z2lucy5cIik7aWYoZWUodCxcInBpcGVsaW5lT3BlcmF0b3JcIikpe2xldCBlPUplKHQsXCJwaXBlbGluZU9wZXJhdG9yXCIsXCJwcm9wb3NhbFwiKTtpZighcXIuaW5jbHVkZXMoZSkpe2xldCByPXFyLm1hcChpPT4nXCInLmNvbmNhdChpLCdcIicpKS5qb2luKFwiLCBcIik7dGhyb3cgbmV3IEVycm9yKCdcInBpcGVsaW5lT3BlcmF0b3JcIiByZXF1aXJlcyBcInByb3Bvc2FsXCIgb3B0aW9uIHdob3NlIHZhbHVlIG11c3QgYmUgb25lIG9mOiAnLmNvbmNhdChyLFwiLlwiKSl9bGV0IHM9ZWUodCxbXCJyZWNvcmRBbmRUdXBsZVwiLHtzeW50YXhUeXBlOlwiaGFzaFwifV0pO2lmKGU9PT1cImhhY2tcIil7aWYoZWUodCxcInBsYWNlaG9sZGVyc1wiKSl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29tYmluZSBwbGFjZWhvbGRlcnMgcGx1Z2luIGFuZCBIYWNrLXN0eWxlIHBpcGVzLlwiKTtpZihlZSh0LFwidjhpbnRyaW5zaWNcIikpdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNvbWJpbmUgdjhpbnRyaW5zaWMgcGx1Z2luIGFuZCBIYWNrLXN0eWxlIHBpcGVzLlwiKTtsZXQgcj1KZSh0LFwicGlwZWxpbmVPcGVyYXRvclwiLFwidG9waWNUb2tlblwiKTtpZighVXIuaW5jbHVkZXMocikpe2xldCBpPVVyLm1hcChhPT4nXCInLmNvbmNhdChhLCdcIicpKS5qb2luKFwiLCBcIik7dGhyb3cgbmV3IEVycm9yKCdcInBpcGVsaW5lT3BlcmF0b3JcIiBpbiBcInByb3Bvc2FsXCI6IFwiaGFja1wiIG1vZGUgYWxzbyByZXF1aXJlcyBhIFwidG9waWNUb2tlblwiIG9wdGlvbiB3aG9zZSB2YWx1ZSBtdXN0IGJlIG9uZSBvZjogJy5jb25jYXQoaSxcIi5cIikpfWlmKHI9PT1cIiNcIiYmcyl0aHJvdyBuZXcgRXJyb3IoJ1BsdWdpbiBjb25mbGljdCBiZXR3ZWVuIGBbXCJwaXBlbGluZU9wZXJhdG9yXCIsIHsgcHJvcG9zYWw6IFwiaGFja1wiLCB0b3BpY1Rva2VuOiBcIiNcIiB9XWAgYW5kIGBbXCJyZWNvcmRBbmR0dXBsZVwiLCB7IHN5bnRheFR5cGU6IFwiaGFzaFwifV1gLicpfWVsc2UgaWYoZT09PVwic21hcnRcIiYmcyl0aHJvdyBuZXcgRXJyb3IoJ1BsdWdpbiBjb25mbGljdCBiZXR3ZWVuIGBbXCJwaXBlbGluZU9wZXJhdG9yXCIsIHsgcHJvcG9zYWw6IFwic21hcnRcIiB9XWAgYW5kIGBbXCJyZWNvcmRBbmR0dXBsZVwiLCB7IHN5bnRheFR5cGU6IFwiaGFzaFwifV1gLicpfWlmKGVlKHQsXCJtb2R1bGVBdHRyaWJ1dGVzXCIpKXtpZihlZSh0LFwiaW1wb3J0QXNzZXJ0aW9uc1wiKSl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29tYmluZSBpbXBvcnRBc3NlcnRpb25zIGFuZCBtb2R1bGVBdHRyaWJ1dGVzIHBsdWdpbnMuXCIpO2lmKEplKHQsXCJtb2R1bGVBdHRyaWJ1dGVzXCIsXCJ2ZXJzaW9uXCIpIT09XCJtYXktMjAyMFwiKXRocm93IG5ldyBFcnJvcihcIlRoZSAnbW9kdWxlQXR0cmlidXRlcycgcGx1Z2luIHJlcXVpcmVzIGEgJ3ZlcnNpb24nIG9wdGlvbiwgcmVwcmVzZW50aW5nIHRoZSBsYXN0IHByb3Bvc2FsIHVwZGF0ZS4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgdmFsdWUgaXMgJ21heS0yMDIwJy5cIil9aWYoZWUodCxcInJlY29yZEFuZFR1cGxlXCIpJiYhX3IuaW5jbHVkZXMoSmUodCxcInJlY29yZEFuZFR1cGxlXCIsXCJzeW50YXhUeXBlXCIpKSl0aHJvdyBuZXcgRXJyb3IoXCIncmVjb3JkQW5kVHVwbGUnIHJlcXVpcmVzICdzeW50YXhUeXBlJyBvcHRpb24gd2hvc2UgdmFsdWUgc2hvdWxkIGJlIG9uZSBvZjogXCIrX3IubWFwKGU9PlwiJ1wiLmNvbmNhdChlLFwiJ1wiKSkuam9pbihcIiwgXCIpKTtpZihlZSh0LFwiYXN5bmNEb0V4cHJlc3Npb25zXCIpJiYhZWUodCxcImRvRXhwcmVzc2lvbnNcIikpe2xldCBlPW5ldyBFcnJvcihcIidhc3luY0RvRXhwcmVzc2lvbnMnIHJlcXVpcmVzICdkb0V4cHJlc3Npb25zJywgcGxlYXNlIGFkZCAnZG9FeHByZXNzaW9ucycgdG8gcGFyc2VyIHBsdWdpbnMuXCIpO3Rocm93IGUubWlzc2luZ1BsdWdpbnM9XCJkb0V4cHJlc3Npb25zXCIsZX19dmFyIHpyPXtlc3RyZWU6T2UsanN4OkxoLGZsb3c6RGgsdHlwZXNjcmlwdDpfaCx2OGludHJpbnNpYzpWaCxwbGFjZWhvbGRlcnM6S2h9LFdoPU9iamVjdC5rZXlzKHpyKSxLcj17c291cmNlVHlwZTpcInNjcmlwdFwiLHNvdXJjZUZpbGVuYW1lOnZvaWQgMCxzdGFydENvbHVtbjowLHN0YXJ0TGluZToxLGFsbG93QXdhaXRPdXRzaWRlRnVuY3Rpb246ITEsYWxsb3dSZXR1cm5PdXRzaWRlRnVuY3Rpb246ITEsYWxsb3dJbXBvcnRFeHBvcnRFdmVyeXdoZXJlOiExLGFsbG93U3VwZXJPdXRzaWRlTWV0aG9kOiExLGFsbG93VW5kZWNsYXJlZEV4cG9ydHM6ITEscGx1Z2luczpbXSxzdHJpY3RNb2RlOm51bGwscmFuZ2VzOiExLHRva2VuczohMSxjcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbnM6ITEsZXJyb3JSZWNvdmVyeTohMSxhdHRhY2hDb21tZW50OiEwfTtmdW5jdGlvbiBHaCh0KXtsZXQgZT17fTtmb3IobGV0IHMgb2YgT2JqZWN0LmtleXMoS3IpKWVbc109dCYmdFtzXSE9bnVsbD90W3NdOktyW3NdO3JldHVybiBlfXZhciBYaD0odCxlKT0+T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmdFtlXSxWcj10PT50LnR5cGU9PT1cIlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uXCI/VnIodC5leHByZXNzaW9uKTp0LEpoPWNsYXNzIGV4dGVuZHMgdmh7dG9Bc3NpZ25hYmxlKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMTt2YXIgcyxyO2xldCBpO3N3aXRjaCgodC50eXBlPT09XCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwifHwocz10LmV4dHJhKSE9bnVsbCYmcy5wYXJlbnRoZXNpemVkKSYmKGk9VnIodCksZT9pLnR5cGU9PT1cIklkZW50aWZpZXJcIj90aGlzLmV4cHJlc3Npb25TY29wZS5yZWNvcmRBcnJvd1BhcmVtZXRlckJpbmRpbmdFcnJvcih1LkludmFsaWRQYXJlbnRoZXNpemVkQXNzaWdubWVudCx7YXQ6dH0pOmkudHlwZSE9PVwiTWVtYmVyRXhwcmVzc2lvblwiJiZ0aGlzLnJhaXNlKHUuSW52YWxpZFBhcmVudGhlc2l6ZWRBc3NpZ25tZW50LHthdDp0fSk6dGhpcy5yYWlzZSh1LkludmFsaWRQYXJlbnRoZXNpemVkQXNzaWdubWVudCx7YXQ6dH0pKSx0LnR5cGUpe2Nhc2VcIklkZW50aWZpZXJcIjpjYXNlXCJPYmplY3RQYXR0ZXJuXCI6Y2FzZVwiQXJyYXlQYXR0ZXJuXCI6Y2FzZVwiQXNzaWdubWVudFBhdHRlcm5cIjpjYXNlXCJSZXN0RWxlbWVudFwiOmJyZWFrO2Nhc2VcIk9iamVjdEV4cHJlc3Npb25cIjp0LnR5cGU9XCJPYmplY3RQYXR0ZXJuXCI7Zm9yKGxldCBuPTAsbz10LnByb3BlcnRpZXMubGVuZ3RoLGM9by0xO248bztuKyspe3ZhciBhO2xldCBmPXQucHJvcGVydGllc1tuXSx5PW49PT1jO3RoaXMudG9Bc3NpZ25hYmxlT2JqZWN0RXhwcmVzc2lvblByb3AoZix5LGUpLHkmJmYudHlwZT09PVwiUmVzdEVsZW1lbnRcIiYmKGE9dC5leHRyYSkhPW51bGwmJmEudHJhaWxpbmdDb21tYUxvYyYmdGhpcy5yYWlzZSh1LlJlc3RUcmFpbGluZ0NvbW1hLHthdDp0LmV4dHJhLnRyYWlsaW5nQ29tbWFMb2N9KX1icmVhaztjYXNlXCJPYmplY3RQcm9wZXJ0eVwiOntsZXR7a2V5Om4sdmFsdWU6b309dDt0aGlzLmlzUHJpdmF0ZU5hbWUobikmJnRoaXMuY2xhc3NTY29wZS51c2VQcml2YXRlTmFtZSh0aGlzLmdldFByaXZhdGVOYW1lU1Yobiksbi5sb2Muc3RhcnQpLHRoaXMudG9Bc3NpZ25hYmxlKG8sZSk7YnJlYWt9Y2FzZVwiU3ByZWFkRWxlbWVudFwiOnRocm93IG5ldyBFcnJvcihcIkludGVybmFsIEBiYWJlbC9wYXJzZXIgZXJyb3IgKHRoaXMgaXMgYSBidWcsIHBsZWFzZSByZXBvcnQgaXQpLiBTcHJlYWRFbGVtZW50IHNob3VsZCBiZSBjb252ZXJ0ZWQgYnkgLnRvQXNzaWduYWJsZSdzIGNhbGxlci5cIik7Y2FzZVwiQXJyYXlFeHByZXNzaW9uXCI6dC50eXBlPVwiQXJyYXlQYXR0ZXJuXCIsdGhpcy50b0Fzc2lnbmFibGVMaXN0KHQuZWxlbWVudHMsKHI9dC5leHRyYSk9PW51bGw/dm9pZCAwOnIudHJhaWxpbmdDb21tYUxvYyxlKTticmVhaztjYXNlXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiOnQub3BlcmF0b3IhPT1cIj1cIiYmdGhpcy5yYWlzZSh1Lk1pc3NpbmdFcUluQXNzaWdubWVudCx7YXQ6dC5sZWZ0LmxvYy5lbmR9KSx0LnR5cGU9XCJBc3NpZ25tZW50UGF0dGVyblwiLGRlbGV0ZSB0Lm9wZXJhdG9yLHRoaXMudG9Bc3NpZ25hYmxlKHQubGVmdCxlKTticmVhaztjYXNlXCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiOnRoaXMudG9Bc3NpZ25hYmxlKGksZSk7YnJlYWt9fXRvQXNzaWduYWJsZU9iamVjdEV4cHJlc3Npb25Qcm9wKHQsZSxzKXtpZih0LnR5cGU9PT1cIk9iamVjdE1ldGhvZFwiKXRoaXMucmFpc2UodC5raW5kPT09XCJnZXRcInx8dC5raW5kPT09XCJzZXRcIj91LlBhdHRlcm5IYXNBY2Nlc3Nvcjp1LlBhdHRlcm5IYXNNZXRob2Qse2F0OnQua2V5fSk7ZWxzZSBpZih0LnR5cGU9PT1cIlNwcmVhZEVsZW1lbnRcIil7dC50eXBlPVwiUmVzdEVsZW1lbnRcIjtsZXQgcj10LmFyZ3VtZW50O3RoaXMuY2hlY2tUb1Jlc3RDb252ZXJzaW9uKHIsITEpLHRoaXMudG9Bc3NpZ25hYmxlKHIscyksZXx8dGhpcy5yYWlzZSh1LlJlc3RUcmFpbGluZ0NvbW1hLHthdDp0fSl9ZWxzZSB0aGlzLnRvQXNzaWduYWJsZSh0LHMpfXRvQXNzaWduYWJsZUxpc3QodCxlLHMpe2xldCByPXQubGVuZ3RoLTE7Zm9yKGxldCBpPTA7aTw9cjtpKyspe2xldCBhPXRbaV07aWYoISFhKXtpZihhLnR5cGU9PT1cIlNwcmVhZEVsZW1lbnRcIil7YS50eXBlPVwiUmVzdEVsZW1lbnRcIjtsZXQgbj1hLmFyZ3VtZW50O3RoaXMuY2hlY2tUb1Jlc3RDb252ZXJzaW9uKG4sITApLHRoaXMudG9Bc3NpZ25hYmxlKG4scyl9ZWxzZSB0aGlzLnRvQXNzaWduYWJsZShhLHMpO2EudHlwZT09PVwiUmVzdEVsZW1lbnRcIiYmKGk8cj90aGlzLnJhaXNlKHUuUmVzdFRyYWlsaW5nQ29tbWEse2F0OmF9KTplJiZ0aGlzLnJhaXNlKHUuUmVzdFRyYWlsaW5nQ29tbWEse2F0OmV9KSl9fX1pc0Fzc2lnbmFibGUodCxlKXtzd2l0Y2godC50eXBlKXtjYXNlXCJJZGVudGlmaWVyXCI6Y2FzZVwiT2JqZWN0UGF0dGVyblwiOmNhc2VcIkFycmF5UGF0dGVyblwiOmNhc2VcIkFzc2lnbm1lbnRQYXR0ZXJuXCI6Y2FzZVwiUmVzdEVsZW1lbnRcIjpyZXR1cm4hMDtjYXNlXCJPYmplY3RFeHByZXNzaW9uXCI6e2xldCBzPXQucHJvcGVydGllcy5sZW5ndGgtMTtyZXR1cm4gdC5wcm9wZXJ0aWVzLmV2ZXJ5KChyLGkpPT5yLnR5cGUhPT1cIk9iamVjdE1ldGhvZFwiJiYoaT09PXN8fHIudHlwZSE9PVwiU3ByZWFkRWxlbWVudFwiKSYmdGhpcy5pc0Fzc2lnbmFibGUocikpfWNhc2VcIk9iamVjdFByb3BlcnR5XCI6cmV0dXJuIHRoaXMuaXNBc3NpZ25hYmxlKHQudmFsdWUpO2Nhc2VcIlNwcmVhZEVsZW1lbnRcIjpyZXR1cm4gdGhpcy5pc0Fzc2lnbmFibGUodC5hcmd1bWVudCk7Y2FzZVwiQXJyYXlFeHByZXNzaW9uXCI6cmV0dXJuIHQuZWxlbWVudHMuZXZlcnkocz0+cz09PW51bGx8fHRoaXMuaXNBc3NpZ25hYmxlKHMpKTtjYXNlXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiOnJldHVybiB0Lm9wZXJhdG9yPT09XCI9XCI7Y2FzZVwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIjpyZXR1cm4gdGhpcy5pc0Fzc2lnbmFibGUodC5leHByZXNzaW9uKTtjYXNlXCJNZW1iZXJFeHByZXNzaW9uXCI6Y2FzZVwiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCI6cmV0dXJuIWU7ZGVmYXVsdDpyZXR1cm4hMX19dG9SZWZlcmVuY2VkTGlzdCh0LGUpe3JldHVybiB0fXRvUmVmZXJlbmNlZExpc3REZWVwKHQsZSl7dGhpcy50b1JlZmVyZW5jZWRMaXN0KHQsZSk7Zm9yKGxldCBzIG9mIHQpKHM9PW51bGw/dm9pZCAwOnMudHlwZSk9PT1cIkFycmF5RXhwcmVzc2lvblwiJiZ0aGlzLnRvUmVmZXJlbmNlZExpc3REZWVwKHMuZWxlbWVudHMpfXBhcnNlU3ByZWFkKHQsZSl7bGV0IHM9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCkscy5hcmd1bWVudD10aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKHQsdm9pZCAwLGUpLHRoaXMuZmluaXNoTm9kZShzLFwiU3ByZWFkRWxlbWVudFwiKX1wYXJzZVJlc3RCaW5kaW5nKCl7bGV0IHQ9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksdC5hcmd1bWVudD10aGlzLnBhcnNlQmluZGluZ0F0b20oKSx0aGlzLmZpbmlzaE5vZGUodCxcIlJlc3RFbGVtZW50XCIpfXBhcnNlQmluZGluZ0F0b20oKXtzd2l0Y2godGhpcy5zdGF0ZS50eXBlKXtjYXNlIDA6e2xldCB0PXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLHQuZWxlbWVudHM9dGhpcy5wYXJzZUJpbmRpbmdMaXN0KDMsOTMsITApLHRoaXMuZmluaXNoTm9kZSh0LFwiQXJyYXlQYXR0ZXJuXCIpfWNhc2UgNTpyZXR1cm4gdGhpcy5wYXJzZU9iamVjdExpa2UoOCwhMCl9cmV0dXJuIHRoaXMucGFyc2VJZGVudGlmaWVyKCl9cGFyc2VCaW5kaW5nTGlzdCh0LGUscyxyKXtsZXQgaT1bXSxhPSEwO2Zvcig7IXRoaXMuZWF0KHQpOylpZihhP2E9ITE6dGhpcy5leHBlY3QoMTIpLHMmJnRoaXMubWF0Y2goMTIpKWkucHVzaChudWxsKTtlbHNle2lmKHRoaXMuZWF0KHQpKWJyZWFrO2lmKHRoaXMubWF0Y2goMjEpKXtpZihpLnB1c2godGhpcy5wYXJzZUFzc2lnbmFibGVMaXN0SXRlbVR5cGVzKHRoaXMucGFyc2VSZXN0QmluZGluZygpKSksIXRoaXMuY2hlY2tDb21tYUFmdGVyUmVzdChlKSl7dGhpcy5leHBlY3QodCk7YnJlYWt9fWVsc2V7bGV0IG49W107Zm9yKHRoaXMubWF0Y2goMjYpJiZ0aGlzLmhhc1BsdWdpbihcImRlY29yYXRvcnNcIikmJnRoaXMucmFpc2UodS5VbnN1cHBvcnRlZFBhcmFtZXRlckRlY29yYXRvcix7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pO3RoaXMubWF0Y2goMjYpOyluLnB1c2godGhpcy5wYXJzZURlY29yYXRvcigpKTtpLnB1c2godGhpcy5wYXJzZUFzc2lnbmFibGVMaXN0SXRlbShyLG4pKX19cmV0dXJuIGl9cGFyc2VCaW5kaW5nUmVzdFByb3BlcnR5KHQpe3JldHVybiB0aGlzLm5leHQoKSx0LmFyZ3VtZW50PXRoaXMucGFyc2VJZGVudGlmaWVyKCksdGhpcy5jaGVja0NvbW1hQWZ0ZXJSZXN0KDEyNSksdGhpcy5maW5pc2hOb2RlKHQsXCJSZXN0RWxlbWVudFwiKX1wYXJzZUJpbmRpbmdQcm9wZXJ0eSgpe2xldCB0PXRoaXMuc3RhcnROb2RlKCkse3R5cGU6ZSxzdGFydDpzLHN0YXJ0TG9jOnJ9PXRoaXMuc3RhdGU7cmV0dXJuIGU9PT0yMT90aGlzLnBhcnNlQmluZGluZ1Jlc3RQcm9wZXJ0eSh0KTooZT09PTEzND8odGhpcy5leHBlY3RQbHVnaW4oXCJkZXN0cnVjdHVyaW5nUHJpdmF0ZVwiLHIpLHRoaXMuY2xhc3NTY29wZS51c2VQcml2YXRlTmFtZSh0aGlzLnN0YXRlLnZhbHVlLHIpLHQua2V5PXRoaXMucGFyc2VQcml2YXRlTmFtZSgpKTp0aGlzLnBhcnNlUHJvcGVydHlOYW1lKHQpLHQubWV0aG9kPSExLHRoaXMucGFyc2VPYmpQcm9wVmFsdWUodCxzLHIsITEsITEsITAsITEpLHQpfXBhcnNlQXNzaWduYWJsZUxpc3RJdGVtKHQsZSl7bGV0IHM9dGhpcy5wYXJzZU1heWJlRGVmYXVsdCgpO3RoaXMucGFyc2VBc3NpZ25hYmxlTGlzdEl0ZW1UeXBlcyhzKTtsZXQgcj10aGlzLnBhcnNlTWF5YmVEZWZhdWx0KHMuc3RhcnQscy5sb2Muc3RhcnQscyk7cmV0dXJuIGUubGVuZ3RoJiYocy5kZWNvcmF0b3JzPWUpLHJ9cGFyc2VBc3NpZ25hYmxlTGlzdEl0ZW1UeXBlcyh0KXtyZXR1cm4gdH1wYXJzZU1heWJlRGVmYXVsdCh0LGUscyl7dmFyIHIsaSxhO2lmKGU9KHI9ZSkhPW51bGw/cjp0aGlzLnN0YXRlLnN0YXJ0TG9jLHQ9KGk9dCkhPW51bGw/aTp0aGlzLnN0YXRlLnN0YXJ0LHM9KGE9cykhPW51bGw/YTp0aGlzLnBhcnNlQmluZGluZ0F0b20oKSwhdGhpcy5lYXQoMjkpKXJldHVybiBzO2xldCBuPXRoaXMuc3RhcnROb2RlQXQodCxlKTtyZXR1cm4gbi5sZWZ0PXMsbi5yaWdodD10aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKCksdGhpcy5maW5pc2hOb2RlKG4sXCJBc3NpZ25tZW50UGF0dGVyblwiKX1pc1ZhbGlkTFZhbCh0LGUscyl7cmV0dXJuIFhoKHtBc3NpZ25tZW50UGF0dGVybjpcImxlZnRcIixSZXN0RWxlbWVudDpcImFyZ3VtZW50XCIsT2JqZWN0UHJvcGVydHk6XCJ2YWx1ZVwiLFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uOlwiZXhwcmVzc2lvblwiLEFycmF5UGF0dGVybjpcImVsZW1lbnRzXCIsT2JqZWN0UGF0dGVybjpcInByb3BlcnRpZXNcIn0sdCl9Y2hlY2tMVmFsKHQsZSl7bGV0e2luOnMsYmluZGluZzpyPXdlLGNoZWNrQ2xhc2hlczppPSExLHN0cmljdE1vZGVDaGFuZ2VkOmE9ITEsYWxsb3dpbmdTbG9wcHlMZXRCaW5kaW5nOm49IShyJlRlKSxoYXNQYXJlbnRoZXNpemVkQW5jZXN0b3I6bz0hMX09ZTt2YXIgYztsZXQgZj10LnR5cGU7aWYodGhpcy5pc09iamVjdE1ldGhvZCh0KSlyZXR1cm47aWYoZj09PVwiTWVtYmVyRXhwcmVzc2lvblwiKXtyIT09d2UmJnRoaXMucmFpc2UodS5JbnZhbGlkUHJvcGVydHlCaW5kaW5nUGF0dGVybix7YXQ6dH0pO3JldHVybn1pZih0LnR5cGU9PT1cIklkZW50aWZpZXJcIil7dGhpcy5jaGVja0lkZW50aWZpZXIodCxyLGEsbik7bGV0e25hbWU6Qn09dDtpJiYoaS5oYXMoQik/dGhpcy5yYWlzZSh1LlBhcmFtRHVwZSx7YXQ6dH0pOmkuYWRkKEIpKTtyZXR1cm59bGV0IHk9dGhpcy5pc1ZhbGlkTFZhbCh0LnR5cGUsIShvfHwoYz10LmV4dHJhKSE9bnVsbCYmYy5wYXJlbnRoZXNpemVkKSYmcy50eXBlPT09XCJBc3NpZ25tZW50RXhwcmVzc2lvblwiLHIpO2lmKHk9PT0hMClyZXR1cm47aWYoeT09PSExKXtsZXQgQj1yPT09d2U/dS5JbnZhbGlkTGhzOnUuSW52YWxpZExoc0JpbmRpbmc7dGhpcy5yYWlzZShCLHthdDp0LGFuY2VzdG9yOnMudHlwZT09PVwiVXBkYXRlRXhwcmVzc2lvblwiP3t0eXBlOlwiVXBkYXRlRXhwcmVzc2lvblwiLHByZWZpeDpzLnByZWZpeH06e3R5cGU6cy50eXBlfX0pO3JldHVybn1sZXRbUCx2XT1BcnJheS5pc0FycmF5KHkpP3k6W3ksZj09PVwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIl0sTj10LnR5cGU9PT1cIkFycmF5UGF0dGVyblwifHx0LnR5cGU9PT1cIk9iamVjdFBhdHRlcm5cInx8dC50eXBlPT09XCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiP3Q6cztmb3IobGV0IEIgb2ZbXS5jb25jYXQodFtQXSkpQiYmdGhpcy5jaGVja0xWYWwoQix7aW46TixiaW5kaW5nOnIsY2hlY2tDbGFzaGVzOmksYWxsb3dpbmdTbG9wcHlMZXRCaW5kaW5nOm4sc3RyaWN0TW9kZUNoYW5nZWQ6YSxoYXNQYXJlbnRoZXNpemVkQW5jZXN0b3I6dn0pfWNoZWNrSWRlbnRpZmllcih0LGUpe2xldCBzPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMSxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTohKGUmVGUpO3RoaXMuc3RhdGUuc3RyaWN0JiYocz9tcih0Lm5hbWUsdGhpcy5pbk1vZHVsZSk6ZHIodC5uYW1lKSkmJihlPT09d2U/dGhpcy5yYWlzZSh1LlN0cmljdEV2YWxBcmd1bWVudHMse2F0OnQscmVmZXJlbmNlTmFtZTp0Lm5hbWV9KTp0aGlzLnJhaXNlKHUuU3RyaWN0RXZhbEFyZ3VtZW50c0JpbmRpbmcse2F0OnQsYmluZGluZ05hbWU6dC5uYW1lfSkpLCFyJiZ0Lm5hbWU9PT1cImxldFwiJiZ0aGlzLnJhaXNlKHUuTGV0SW5MZXhpY2FsQmluZGluZyx7YXQ6dH0pLGUmd2V8fHRoaXMuZGVjbGFyZU5hbWVGcm9tSWRlbnRpZmllcih0LGUpfWRlY2xhcmVOYW1lRnJvbUlkZW50aWZpZXIodCxlKXt0aGlzLnNjb3BlLmRlY2xhcmVOYW1lKHQubmFtZSxlLHQubG9jLnN0YXJ0KX1jaGVja1RvUmVzdENvbnZlcnNpb24odCxlKXtzd2l0Y2godC50eXBlKXtjYXNlXCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiOnRoaXMuY2hlY2tUb1Jlc3RDb252ZXJzaW9uKHQuZXhwcmVzc2lvbixlKTticmVhaztjYXNlXCJJZGVudGlmaWVyXCI6Y2FzZVwiTWVtYmVyRXhwcmVzc2lvblwiOmJyZWFrO2Nhc2VcIkFycmF5RXhwcmVzc2lvblwiOmNhc2VcIk9iamVjdEV4cHJlc3Npb25cIjppZihlKWJyZWFrO2RlZmF1bHQ6dGhpcy5yYWlzZSh1LkludmFsaWRSZXN0QXNzaWdubWVudFBhdHRlcm4se2F0OnR9KX19Y2hlY2tDb21tYUFmdGVyUmVzdCh0KXtyZXR1cm4gdGhpcy5tYXRjaCgxMik/KHRoaXMucmFpc2UodGhpcy5sb29rYWhlYWRDaGFyQ29kZSgpPT09dD91LlJlc3RUcmFpbGluZ0NvbW1hOnUuRWxlbWVudEFmdGVyUmVzdCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pLCEwKTohMX19LFloPWNsYXNzIGV4dGVuZHMgSmh7Y2hlY2tQcm90byh0LGUscyxyKXtpZih0LnR5cGU9PT1cIlNwcmVhZEVsZW1lbnRcInx8dGhpcy5pc09iamVjdE1ldGhvZCh0KXx8dC5jb21wdXRlZHx8dC5zaG9ydGhhbmQpcmV0dXJuO2xldCBpPXQua2V5O2lmKChpLnR5cGU9PT1cIklkZW50aWZpZXJcIj9pLm5hbWU6aS52YWx1ZSk9PT1cIl9fcHJvdG9fX1wiKXtpZihlKXt0aGlzLnJhaXNlKHUuUmVjb3JkTm9Qcm90byx7YXQ6aX0pO3JldHVybn1zLnVzZWQmJihyP3IuZG91YmxlUHJvdG9Mb2M9PT1udWxsJiYoci5kb3VibGVQcm90b0xvYz1pLmxvYy5zdGFydCk6dGhpcy5yYWlzZSh1LkR1cGxpY2F0ZVByb3RvLHthdDppfSkpLHMudXNlZD0hMH19c2hvdWxkRXhpdERlc2NlbmRpbmcodCxlKXtyZXR1cm4gdC50eXBlPT09XCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiJiZ0LnN0YXJ0PT09ZX1nZXRFeHByZXNzaW9uKCl7dGhpcy5lbnRlckluaXRpYWxTY29wZXMoKSx0aGlzLm5leHRUb2tlbigpO2xldCB0PXRoaXMucGFyc2VFeHByZXNzaW9uKCk7cmV0dXJuIHRoaXMubWF0Y2goMTM1KXx8dGhpcy51bmV4cGVjdGVkKCksdGhpcy5maW5hbGl6ZVJlbWFpbmluZ0NvbW1lbnRzKCksdC5jb21tZW50cz10aGlzLnN0YXRlLmNvbW1lbnRzLHQuZXJyb3JzPXRoaXMuc3RhdGUuZXJyb3JzLHRoaXMub3B0aW9ucy50b2tlbnMmJih0LnRva2Vucz10aGlzLnRva2VucyksdH1wYXJzZUV4cHJlc3Npb24odCxlKXtyZXR1cm4gdD90aGlzLmRpc2FsbG93SW5BbmQoKCk9PnRoaXMucGFyc2VFeHByZXNzaW9uQmFzZShlKSk6dGhpcy5hbGxvd0luQW5kKCgpPT50aGlzLnBhcnNlRXhwcmVzc2lvbkJhc2UoZSkpfXBhcnNlRXhwcmVzc2lvbkJhc2UodCl7bGV0IGU9dGhpcy5zdGF0ZS5zdGFydCxzPXRoaXMuc3RhdGUuc3RhcnRMb2Mscj10aGlzLnBhcnNlTWF5YmVBc3NpZ24odCk7aWYodGhpcy5tYXRjaCgxMikpe2xldCBpPXRoaXMuc3RhcnROb2RlQXQoZSxzKTtmb3IoaS5leHByZXNzaW9ucz1bcl07dGhpcy5lYXQoMTIpOylpLmV4cHJlc3Npb25zLnB1c2godGhpcy5wYXJzZU1heWJlQXNzaWduKHQpKTtyZXR1cm4gdGhpcy50b1JlZmVyZW5jZWRMaXN0KGkuZXhwcmVzc2lvbnMpLHRoaXMuZmluaXNoTm9kZShpLFwiU2VxdWVuY2VFeHByZXNzaW9uXCIpfXJldHVybiByfXBhcnNlTWF5YmVBc3NpZ25EaXNhbGxvd0luKHQsZSl7cmV0dXJuIHRoaXMuZGlzYWxsb3dJbkFuZCgoKT0+dGhpcy5wYXJzZU1heWJlQXNzaWduKHQsZSkpfXBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKHQsZSl7cmV0dXJuIHRoaXMuYWxsb3dJbkFuZCgoKT0+dGhpcy5wYXJzZU1heWJlQXNzaWduKHQsZSkpfXNldE9wdGlvbmFsUGFyYW1ldGVyc0Vycm9yKHQsZSl7dmFyIHM7dC5vcHRpb25hbFBhcmFtZXRlcnNMb2M9KHM9ZT09bnVsbD92b2lkIDA6ZS5sb2MpIT1udWxsP3M6dGhpcy5zdGF0ZS5zdGFydExvY31wYXJzZU1heWJlQXNzaWduKHQsZSl7bGV0IHM9dGhpcy5zdGF0ZS5zdGFydCxyPXRoaXMuc3RhdGUuc3RhcnRMb2M7aWYodGhpcy5pc0NvbnRleHR1YWwoMTA1KSYmdGhpcy5wcm9kUGFyYW0uaGFzWWllbGQpe2xldCBvPXRoaXMucGFyc2VZaWVsZCgpO3JldHVybiBlJiYobz1lLmNhbGwodGhpcyxvLHMscikpLG99bGV0IGk7dD9pPSExOih0PW5ldyBBdCxpPSEwKTtsZXR7dHlwZTphfT10aGlzLnN0YXRlOyhhPT09MTB8fEsoYSkpJiYodGhpcy5zdGF0ZS5wb3RlbnRpYWxBcnJvd0F0PXRoaXMuc3RhdGUuc3RhcnQpO2xldCBuPXRoaXMucGFyc2VNYXliZUNvbmRpdGlvbmFsKHQpO2lmKGUmJihuPWUuY2FsbCh0aGlzLG4scyxyKSksd28odGhpcy5zdGF0ZS50eXBlKSl7bGV0IG89dGhpcy5zdGFydE5vZGVBdChzLHIpLGM9dGhpcy5zdGF0ZS52YWx1ZTtyZXR1cm4gby5vcGVyYXRvcj1jLHRoaXMubWF0Y2goMjkpPyh0aGlzLnRvQXNzaWduYWJsZShuLCEwKSxvLmxlZnQ9bix0LmRvdWJsZVByb3RvTG9jIT1udWxsJiZ0LmRvdWJsZVByb3RvTG9jLmluZGV4Pj1zJiYodC5kb3VibGVQcm90b0xvYz1udWxsKSx0LnNob3J0aGFuZEFzc2lnbkxvYyE9bnVsbCYmdC5zaG9ydGhhbmRBc3NpZ25Mb2MuaW5kZXg+PXMmJih0LnNob3J0aGFuZEFzc2lnbkxvYz1udWxsKSx0LnByaXZhdGVLZXlMb2MhPW51bGwmJnQucHJpdmF0ZUtleUxvYy5pbmRleD49cyYmKHRoaXMuY2hlY2tEZXN0cnVjdHVyaW5nUHJpdmF0ZSh0KSx0LnByaXZhdGVLZXlMb2M9bnVsbCkpOm8ubGVmdD1uLHRoaXMubmV4dCgpLG8ucmlnaHQ9dGhpcy5wYXJzZU1heWJlQXNzaWduKCksdGhpcy5jaGVja0xWYWwobix7aW46dGhpcy5maW5pc2hOb2RlKG8sXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiKX0pLG99ZWxzZSBpJiZ0aGlzLmNoZWNrRXhwcmVzc2lvbkVycm9ycyh0LCEwKTtyZXR1cm4gbn1wYXJzZU1heWJlQ29uZGl0aW9uYWwodCl7bGV0IGU9dGhpcy5zdGF0ZS5zdGFydCxzPXRoaXMuc3RhdGUuc3RhcnRMb2Mscj10aGlzLnN0YXRlLnBvdGVudGlhbEFycm93QXQsaT10aGlzLnBhcnNlRXhwck9wcyh0KTtyZXR1cm4gdGhpcy5zaG91bGRFeGl0RGVzY2VuZGluZyhpLHIpP2k6dGhpcy5wYXJzZUNvbmRpdGlvbmFsKGksZSxzLHQpfXBhcnNlQ29uZGl0aW9uYWwodCxlLHMscil7aWYodGhpcy5lYXQoMTcpKXtsZXQgaT10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7cmV0dXJuIGkudGVzdD10LGkuY29uc2VxdWVudD10aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKCksdGhpcy5leHBlY3QoMTQpLGkuYWx0ZXJuYXRlPXRoaXMucGFyc2VNYXliZUFzc2lnbigpLHRoaXMuZmluaXNoTm9kZShpLFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIpfXJldHVybiB0fXBhcnNlTWF5YmVVbmFyeU9yUHJpdmF0ZSh0KXtyZXR1cm4gdGhpcy5tYXRjaCgxMzQpP3RoaXMucGFyc2VQcml2YXRlTmFtZSgpOnRoaXMucGFyc2VNYXliZVVuYXJ5KHQpfXBhcnNlRXhwck9wcyh0KXtsZXQgZT10aGlzLnN0YXRlLnN0YXJ0LHM9dGhpcy5zdGF0ZS5zdGFydExvYyxyPXRoaXMuc3RhdGUucG90ZW50aWFsQXJyb3dBdCxpPXRoaXMucGFyc2VNYXliZVVuYXJ5T3JQcml2YXRlKHQpO3JldHVybiB0aGlzLnNob3VsZEV4aXREZXNjZW5kaW5nKGkscik/aTp0aGlzLnBhcnNlRXhwck9wKGksZSxzLC0xKX1wYXJzZUV4cHJPcCh0LGUscyxyKXtpZih0aGlzLmlzUHJpdmF0ZU5hbWUodCkpe2xldCBhPXRoaXMuZ2V0UHJpdmF0ZU5hbWVTVih0KTsocj49YXQoNTgpfHwhdGhpcy5wcm9kUGFyYW0uaGFzSW58fCF0aGlzLm1hdGNoKDU4KSkmJnRoaXMucmFpc2UodS5Qcml2YXRlSW5FeHBlY3RlZEluLHthdDp0LGlkZW50aWZpZXJOYW1lOmF9KSx0aGlzLmNsYXNzU2NvcGUudXNlUHJpdmF0ZU5hbWUoYSx0LmxvYy5zdGFydCl9bGV0IGk9dGhpcy5zdGF0ZS50eXBlO2lmKElvKGkpJiYodGhpcy5wcm9kUGFyYW0uaGFzSW58fCF0aGlzLm1hdGNoKDU4KSkpe2xldCBhPWF0KGkpO2lmKGE+cil7aWYoaT09PTM5KXtpZih0aGlzLmV4cGVjdFBsdWdpbihcInBpcGVsaW5lT3BlcmF0b3JcIiksdGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keSlyZXR1cm4gdDt0aGlzLmNoZWNrUGlwZWxpbmVBdEluZml4T3BlcmF0b3IodCxzKX1sZXQgbj10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7bi5sZWZ0PXQsbi5vcGVyYXRvcj10aGlzLnN0YXRlLnZhbHVlO2xldCBvPWk9PT00MXx8aT09PTQyLGM9aT09PTQwO2lmKGMmJihhPWF0KDQyKSksdGhpcy5uZXh0KCksaT09PTM5JiZ0aGlzLmhhc1BsdWdpbihbXCJwaXBlbGluZU9wZXJhdG9yXCIse3Byb3Bvc2FsOlwibWluaW1hbFwifV0pJiZ0aGlzLnN0YXRlLnR5cGU9PT05NiYmdGhpcy5wcm9kUGFyYW0uaGFzQXdhaXQpdGhyb3cgdGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWRBd2FpdEFmdGVyUGlwZWxpbmVCb2R5LHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7bi5yaWdodD10aGlzLnBhcnNlRXhwck9wUmlnaHRFeHByKGksYSksdGhpcy5maW5pc2hOb2RlKG4sb3x8Yz9cIkxvZ2ljYWxFeHByZXNzaW9uXCI6XCJCaW5hcnlFeHByZXNzaW9uXCIpO2xldCBmPXRoaXMuc3RhdGUudHlwZTtpZihjJiYoZj09PTQxfHxmPT09NDIpfHxvJiZmPT09NDApdGhyb3cgdGhpcy5yYWlzZSh1Lk1peGluZ0NvYWxlc2NlV2l0aExvZ2ljYWwse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtyZXR1cm4gdGhpcy5wYXJzZUV4cHJPcChuLGUscyxyKX19cmV0dXJuIHR9cGFyc2VFeHByT3BSaWdodEV4cHIodCxlKXtsZXQgcz10aGlzLnN0YXRlLnN0YXJ0LHI9dGhpcy5zdGF0ZS5zdGFydExvYztzd2l0Y2godCl7Y2FzZSAzOTpzd2l0Y2godGhpcy5nZXRQbHVnaW5PcHRpb24oXCJwaXBlbGluZU9wZXJhdG9yXCIsXCJwcm9wb3NhbFwiKSl7Y2FzZVwiaGFja1wiOnJldHVybiB0aGlzLndpdGhUb3BpY0JpbmRpbmdDb250ZXh0KCgpPT50aGlzLnBhcnNlSGFja1BpcGVCb2R5KCkpO2Nhc2VcInNtYXJ0XCI6cmV0dXJuIHRoaXMud2l0aFRvcGljQmluZGluZ0NvbnRleHQoKCk9PntpZih0aGlzLnByb2RQYXJhbS5oYXNZaWVsZCYmdGhpcy5pc0NvbnRleHR1YWwoMTA1KSl0aHJvdyB0aGlzLnJhaXNlKHUuUGlwZUJvZHlJc1RpZ2h0ZXIse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtyZXR1cm4gdGhpcy5wYXJzZVNtYXJ0UGlwZWxpbmVCb2R5SW5TdHlsZSh0aGlzLnBhcnNlRXhwck9wQmFzZVJpZ2h0RXhwcih0LGUpLHMscil9KTtjYXNlXCJmc2hhcnBcIjpyZXR1cm4gdGhpcy53aXRoU29sb0F3YWl0UGVybWl0dGluZ0NvbnRleHQoKCk9PnRoaXMucGFyc2VGU2hhcnBQaXBlbGluZUJvZHkoZSkpfWRlZmF1bHQ6cmV0dXJuIHRoaXMucGFyc2VFeHByT3BCYXNlUmlnaHRFeHByKHQsZSl9fXBhcnNlRXhwck9wQmFzZVJpZ2h0RXhwcih0LGUpe2xldCBzPXRoaXMuc3RhdGUuc3RhcnQscj10aGlzLnN0YXRlLnN0YXJ0TG9jO3JldHVybiB0aGlzLnBhcnNlRXhwck9wKHRoaXMucGFyc2VNYXliZVVuYXJ5T3JQcml2YXRlKCkscyxyLEJvKHQpP2UtMTplKX1wYXJzZUhhY2tQaXBlQm9keSgpe3ZhciB0O2xldHtzdGFydExvYzplfT10aGlzLnN0YXRlLHM9dGhpcy5wYXJzZU1heWJlQXNzaWduKCk7cmV0dXJuIFIuaGFzKHMudHlwZSkmJiEoKHQ9cy5leHRyYSkhPW51bGwmJnQucGFyZW50aGVzaXplZCkmJnRoaXMucmFpc2UodS5QaXBlVW5wYXJlbnRoZXNpemVkQm9keSx7YXQ6ZSx0eXBlOnMudHlwZX0pLHRoaXMudG9waWNSZWZlcmVuY2VXYXNVc2VkSW5DdXJyZW50Q29udGV4dCgpfHx0aGlzLnJhaXNlKHUuUGlwZVRvcGljVW51c2VkLHthdDplfSksc31jaGVja0V4cG9uZW50aWFsQWZ0ZXJVbmFyeSh0KXt0aGlzLm1hdGNoKDU3KSYmdGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWRUb2tlblVuYXJ5RXhwb25lbnRpYXRpb24se2F0OnQuYXJndW1lbnR9KX1wYXJzZU1heWJlVW5hcnkodCxlKXtsZXQgcz10aGlzLnN0YXRlLnN0YXJ0LHI9dGhpcy5zdGF0ZS5zdGFydExvYyxpPXRoaXMuaXNDb250ZXh0dWFsKDk2KTtpZihpJiZ0aGlzLmlzQXdhaXRBbGxvd2VkKCkpe3RoaXMubmV4dCgpO2xldCBjPXRoaXMucGFyc2VBd2FpdChzLHIpO3JldHVybiBlfHx0aGlzLmNoZWNrRXhwb25lbnRpYWxBZnRlclVuYXJ5KGMpLGN9bGV0IGE9dGhpcy5tYXRjaCgzNCksbj10aGlzLnN0YXJ0Tm9kZSgpO2lmKERvKHRoaXMuc3RhdGUudHlwZSkpe24ub3BlcmF0b3I9dGhpcy5zdGF0ZS52YWx1ZSxuLnByZWZpeD0hMCx0aGlzLm1hdGNoKDcyKSYmdGhpcy5leHBlY3RQbHVnaW4oXCJ0aHJvd0V4cHJlc3Npb25zXCIpO2xldCBjPXRoaXMubWF0Y2goODkpO2lmKHRoaXMubmV4dCgpLG4uYXJndW1lbnQ9dGhpcy5wYXJzZU1heWJlVW5hcnkobnVsbCwhMCksdGhpcy5jaGVja0V4cHJlc3Npb25FcnJvcnModCwhMCksdGhpcy5zdGF0ZS5zdHJpY3QmJmMpe2xldCBmPW4uYXJndW1lbnQ7Zi50eXBlPT09XCJJZGVudGlmaWVyXCI/dGhpcy5yYWlzZSh1LlN0cmljdERlbGV0ZSx7YXQ6bn0pOnRoaXMuaGFzUHJvcGVydHlBc1ByaXZhdGVOYW1lKGYpJiZ0aGlzLnJhaXNlKHUuRGVsZXRlUHJpdmF0ZUZpZWxkLHthdDpufSl9aWYoIWEpcmV0dXJuIGV8fHRoaXMuY2hlY2tFeHBvbmVudGlhbEFmdGVyVW5hcnkobiksdGhpcy5maW5pc2hOb2RlKG4sXCJVbmFyeUV4cHJlc3Npb25cIil9bGV0IG89dGhpcy5wYXJzZVVwZGF0ZShuLGEsdCk7aWYoaSl7bGV0e3R5cGU6Y309dGhpcy5zdGF0ZTtpZigodGhpcy5oYXNQbHVnaW4oXCJ2OGludHJpbnNpY1wiKT9WdChjKTpWdChjKSYmIXRoaXMubWF0Y2goNTQpKSYmIXRoaXMuaXNBbWJpZ3VvdXNBd2FpdCgpKXJldHVybiB0aGlzLnJhaXNlT3ZlcndyaXRlKHUuQXdhaXROb3RJbkFzeW5jQ29udGV4dCx7YXQ6cn0pLHRoaXMucGFyc2VBd2FpdChzLHIpfXJldHVybiBvfXBhcnNlVXBkYXRlKHQsZSxzKXtpZihlKXJldHVybiB0aGlzLmNoZWNrTFZhbCh0LmFyZ3VtZW50LHtpbjp0aGlzLmZpbmlzaE5vZGUodCxcIlVwZGF0ZUV4cHJlc3Npb25cIil9KSx0O2xldCByPXRoaXMuc3RhdGUuc3RhcnQsaT10aGlzLnN0YXRlLnN0YXJ0TG9jLGE9dGhpcy5wYXJzZUV4cHJTdWJzY3JpcHRzKHMpO2lmKHRoaXMuY2hlY2tFeHByZXNzaW9uRXJyb3JzKHMsITEpKXJldHVybiBhO2Zvcig7a28odGhpcy5zdGF0ZS50eXBlKSYmIXRoaXMuY2FuSW5zZXJ0U2VtaWNvbG9uKCk7KXtsZXQgbj10aGlzLnN0YXJ0Tm9kZUF0KHIsaSk7bi5vcGVyYXRvcj10aGlzLnN0YXRlLnZhbHVlLG4ucHJlZml4PSExLG4uYXJndW1lbnQ9YSx0aGlzLm5leHQoKSx0aGlzLmNoZWNrTFZhbChhLHtpbjphPXRoaXMuZmluaXNoTm9kZShuLFwiVXBkYXRlRXhwcmVzc2lvblwiKX0pfXJldHVybiBhfXBhcnNlRXhwclN1YnNjcmlwdHModCl7bGV0IGU9dGhpcy5zdGF0ZS5zdGFydCxzPXRoaXMuc3RhdGUuc3RhcnRMb2Mscj10aGlzLnN0YXRlLnBvdGVudGlhbEFycm93QXQsaT10aGlzLnBhcnNlRXhwckF0b20odCk7cmV0dXJuIHRoaXMuc2hvdWxkRXhpdERlc2NlbmRpbmcoaSxyKT9pOnRoaXMucGFyc2VTdWJzY3JpcHRzKGksZSxzKX1wYXJzZVN1YnNjcmlwdHModCxlLHMscil7bGV0IGk9e29wdGlvbmFsQ2hhaW5NZW1iZXI6ITEsbWF5YmVBc3luY0Fycm93OnRoaXMuYXRQb3NzaWJsZUFzeW5jQXJyb3codCksc3RvcDohMX07ZG8gdD10aGlzLnBhcnNlU3Vic2NyaXB0KHQsZSxzLHIsaSksaS5tYXliZUFzeW5jQXJyb3c9ITE7d2hpbGUoIWkuc3RvcCk7cmV0dXJuIHR9cGFyc2VTdWJzY3JpcHQodCxlLHMscixpKXtsZXR7dHlwZTphfT10aGlzLnN0YXRlO2lmKCFyJiZhPT09MTUpcmV0dXJuIHRoaXMucGFyc2VCaW5kKHQsZSxzLHIsaSk7aWYobnQoYSkpcmV0dXJuIHRoaXMucGFyc2VUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24odCxlLHMsaSk7bGV0IG49ITE7aWYoYT09PTE4KXtpZihyJiZ0aGlzLmxvb2thaGVhZENoYXJDb2RlKCk9PT00MClyZXR1cm4gaS5zdG9wPSEwLHQ7aS5vcHRpb25hbENoYWluTWVtYmVyPW49ITAsdGhpcy5uZXh0KCl9aWYoIXImJnRoaXMubWF0Y2goMTApKXJldHVybiB0aGlzLnBhcnNlQ292ZXJDYWxsQW5kQXN5bmNBcnJvd0hlYWQodCxlLHMsaSxuKTt7bGV0IG89dGhpcy5lYXQoMCk7cmV0dXJuIG98fG58fHRoaXMuZWF0KDE2KT90aGlzLnBhcnNlTWVtYmVyKHQsZSxzLGksbyxuKTooaS5zdG9wPSEwLHQpfX1wYXJzZU1lbWJlcih0LGUscyxyLGksYSl7bGV0IG49dGhpcy5zdGFydE5vZGVBdChlLHMpO3JldHVybiBuLm9iamVjdD10LG4uY29tcHV0ZWQ9aSxpPyhuLnByb3BlcnR5PXRoaXMucGFyc2VFeHByZXNzaW9uKCksdGhpcy5leHBlY3QoMykpOnRoaXMubWF0Y2goMTM0KT8odC50eXBlPT09XCJTdXBlclwiJiZ0aGlzLnJhaXNlKHUuU3VwZXJQcml2YXRlRmllbGQse2F0OnN9KSx0aGlzLmNsYXNzU2NvcGUudXNlUHJpdmF0ZU5hbWUodGhpcy5zdGF0ZS52YWx1ZSx0aGlzLnN0YXRlLnN0YXJ0TG9jKSxuLnByb3BlcnR5PXRoaXMucGFyc2VQcml2YXRlTmFtZSgpKTpuLnByb3BlcnR5PXRoaXMucGFyc2VJZGVudGlmaWVyKCEwKSxyLm9wdGlvbmFsQ2hhaW5NZW1iZXI/KG4ub3B0aW9uYWw9YSx0aGlzLmZpbmlzaE5vZGUobixcIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwiKSk6dGhpcy5maW5pc2hOb2RlKG4sXCJNZW1iZXJFeHByZXNzaW9uXCIpfXBhcnNlQmluZCh0LGUscyxyLGkpe2xldCBhPXRoaXMuc3RhcnROb2RlQXQoZSxzKTtyZXR1cm4gYS5vYmplY3Q9dCx0aGlzLm5leHQoKSxhLmNhbGxlZT10aGlzLnBhcnNlTm9DYWxsRXhwcigpLGkuc3RvcD0hMCx0aGlzLnBhcnNlU3Vic2NyaXB0cyh0aGlzLmZpbmlzaE5vZGUoYSxcIkJpbmRFeHByZXNzaW9uXCIpLGUscyxyKX1wYXJzZUNvdmVyQ2FsbEFuZEFzeW5jQXJyb3dIZWFkKHQsZSxzLHIsaSl7bGV0IGE9dGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzLG49bnVsbDt0aGlzLnN0YXRlLm1heWJlSW5BcnJvd1BhcmFtZXRlcnM9ITAsdGhpcy5uZXh0KCk7bGV0IG89dGhpcy5zdGFydE5vZGVBdChlLHMpO28uY2FsbGVlPXQ7bGV0e21heWJlQXN5bmNBcnJvdzpjLG9wdGlvbmFsQ2hhaW5NZW1iZXI6Zn09cjtyZXR1cm4gYyYmKHRoaXMuZXhwcmVzc2lvblNjb3BlLmVudGVyKFBoKCkpLG49bmV3IEF0KSxmJiYoby5vcHRpb25hbD1pKSxpP28uYXJndW1lbnRzPXRoaXMucGFyc2VDYWxsRXhwcmVzc2lvbkFyZ3VtZW50cygxMSk6by5hcmd1bWVudHM9dGhpcy5wYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzKDExLHQudHlwZT09PVwiSW1wb3J0XCIsdC50eXBlIT09XCJTdXBlclwiLG8sbiksdGhpcy5maW5pc2hDYWxsRXhwcmVzc2lvbihvLGYpLGMmJnRoaXMuc2hvdWxkUGFyc2VBc3luY0Fycm93KCkmJiFpPyhyLnN0b3A9ITAsdGhpcy5jaGVja0Rlc3RydWN0dXJpbmdQcml2YXRlKG4pLHRoaXMuZXhwcmVzc2lvblNjb3BlLnZhbGlkYXRlQXNQYXR0ZXJuKCksdGhpcy5leHByZXNzaW9uU2NvcGUuZXhpdCgpLG89dGhpcy5wYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24odGhpcy5zdGFydE5vZGVBdChlLHMpLG8pKTooYyYmKHRoaXMuY2hlY2tFeHByZXNzaW9uRXJyb3JzKG4sITApLHRoaXMuZXhwcmVzc2lvblNjb3BlLmV4aXQoKSksdGhpcy50b1JlZmVyZW5jZWRBcmd1bWVudHMobykpLHRoaXMuc3RhdGUubWF5YmVJbkFycm93UGFyYW1ldGVycz1hLG99dG9SZWZlcmVuY2VkQXJndW1lbnRzKHQsZSl7dGhpcy50b1JlZmVyZW5jZWRMaXN0RGVlcCh0LmFyZ3VtZW50cyxlKX1wYXJzZVRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbih0LGUscyxyKXtsZXQgaT10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7cmV0dXJuIGkudGFnPXQsaS5xdWFzaT10aGlzLnBhcnNlVGVtcGxhdGUoITApLHIub3B0aW9uYWxDaGFpbk1lbWJlciYmdGhpcy5yYWlzZSh1Lk9wdGlvbmFsQ2hhaW5pbmdOb1RlbXBsYXRlLHthdDpzfSksdGhpcy5maW5pc2hOb2RlKGksXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIil9YXRQb3NzaWJsZUFzeW5jQXJyb3codCl7cmV0dXJuIHQudHlwZT09PVwiSWRlbnRpZmllclwiJiZ0Lm5hbWU9PT1cImFzeW5jXCImJnRoaXMuc3RhdGUubGFzdFRva0VuZExvYy5pbmRleD09PXQuZW5kJiYhdGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKSYmdC5lbmQtdC5zdGFydD09PTUmJnQuc3RhcnQ9PT10aGlzLnN0YXRlLnBvdGVudGlhbEFycm93QXR9ZmluaXNoQ2FsbEV4cHJlc3Npb24odCxlKXtpZih0LmNhbGxlZS50eXBlPT09XCJJbXBvcnRcIilpZih0LmFyZ3VtZW50cy5sZW5ndGg9PT0yJiYodGhpcy5oYXNQbHVnaW4oXCJtb2R1bGVBdHRyaWJ1dGVzXCIpfHx0aGlzLmV4cGVjdFBsdWdpbihcImltcG9ydEFzc2VydGlvbnNcIikpLHQuYXJndW1lbnRzLmxlbmd0aD09PTB8fHQuYXJndW1lbnRzLmxlbmd0aD4yKXRoaXMucmFpc2UodS5JbXBvcnRDYWxsQXJpdHkse2F0OnQsbWF4QXJndW1lbnRDb3VudDp0aGlzLmhhc1BsdWdpbihcImltcG9ydEFzc2VydGlvbnNcIil8fHRoaXMuaGFzUGx1Z2luKFwibW9kdWxlQXR0cmlidXRlc1wiKT8yOjF9KTtlbHNlIGZvcihsZXQgcyBvZiB0LmFyZ3VtZW50cylzLnR5cGU9PT1cIlNwcmVhZEVsZW1lbnRcIiYmdGhpcy5yYWlzZSh1LkltcG9ydENhbGxTcHJlYWRBcmd1bWVudCx7YXQ6c30pO3JldHVybiB0aGlzLmZpbmlzaE5vZGUodCxlP1wiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiOlwiQ2FsbEV4cHJlc3Npb25cIil9cGFyc2VDYWxsRXhwcmVzc2lvbkFyZ3VtZW50cyh0LGUscyxyLGkpe2xldCBhPVtdLG49ITAsbz10aGlzLnN0YXRlLmluRlNoYXJwUGlwZWxpbmVEaXJlY3RCb2R5O2Zvcih0aGlzLnN0YXRlLmluRlNoYXJwUGlwZWxpbmVEaXJlY3RCb2R5PSExOyF0aGlzLmVhdCh0KTspe2lmKG4pbj0hMTtlbHNlIGlmKHRoaXMuZXhwZWN0KDEyKSx0aGlzLm1hdGNoKHQpKXtlJiYhdGhpcy5oYXNQbHVnaW4oXCJpbXBvcnRBc3NlcnRpb25zXCIpJiYhdGhpcy5oYXNQbHVnaW4oXCJtb2R1bGVBdHRyaWJ1dGVzXCIpJiZ0aGlzLnJhaXNlKHUuSW1wb3J0Q2FsbEFyZ3VtZW50VHJhaWxpbmdDb21tYSx7YXQ6dGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2N9KSxyJiZ0aGlzLmFkZFRyYWlsaW5nQ29tbWFFeHRyYVRvTm9kZShyKSx0aGlzLm5leHQoKTticmVha31hLnB1c2godGhpcy5wYXJzZUV4cHJMaXN0SXRlbSghMSxpLHMpKX1yZXR1cm4gdGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keT1vLGF9c2hvdWxkUGFyc2VBc3luY0Fycm93KCl7cmV0dXJuIHRoaXMubWF0Y2goMTkpJiYhdGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKX1wYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24odCxlKXt2YXIgcztyZXR1cm4gdGhpcy5yZXNldFByZXZpb3VzTm9kZVRyYWlsaW5nQ29tbWVudHMoZSksdGhpcy5leHBlY3QoMTkpLHRoaXMucGFyc2VBcnJvd0V4cHJlc3Npb24odCxlLmFyZ3VtZW50cywhMCwocz1lLmV4dHJhKT09bnVsbD92b2lkIDA6cy50cmFpbGluZ0NvbW1hTG9jKSxlLmlubmVyQ29tbWVudHMmJkdlKHQsZS5pbm5lckNvbW1lbnRzKSxlLmNhbGxlZS50cmFpbGluZ0NvbW1lbnRzJiZHZSh0LGUuY2FsbGVlLnRyYWlsaW5nQ29tbWVudHMpLHR9cGFyc2VOb0NhbGxFeHByKCl7bGV0IHQ9dGhpcy5zdGF0ZS5zdGFydCxlPXRoaXMuc3RhdGUuc3RhcnRMb2M7cmV0dXJuIHRoaXMucGFyc2VTdWJzY3JpcHRzKHRoaXMucGFyc2VFeHByQXRvbSgpLHQsZSwhMCl9cGFyc2VFeHByQXRvbSh0KXtsZXQgZSx7dHlwZTpzfT10aGlzLnN0YXRlO3N3aXRjaChzKXtjYXNlIDc5OnJldHVybiB0aGlzLnBhcnNlU3VwZXIoKTtjYXNlIDgzOnJldHVybiBlPXRoaXMuc3RhcnROb2RlKCksdGhpcy5uZXh0KCksdGhpcy5tYXRjaCgxNik/dGhpcy5wYXJzZUltcG9ydE1ldGFQcm9wZXJ0eShlKToodGhpcy5tYXRjaCgxMCl8fHRoaXMucmFpc2UodS5VbnN1cHBvcnRlZEltcG9ydCx7YXQ6dGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2N9KSx0aGlzLmZpbmlzaE5vZGUoZSxcIkltcG9ydFwiKSk7Y2FzZSA3ODpyZXR1cm4gZT10aGlzLnN0YXJ0Tm9kZSgpLHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShlLFwiVGhpc0V4cHJlc3Npb25cIik7Y2FzZSA5MDpyZXR1cm4gdGhpcy5wYXJzZURvKHRoaXMuc3RhcnROb2RlKCksITEpO2Nhc2UgNTY6Y2FzZSAzMTpyZXR1cm4gdGhpcy5yZWFkUmVnZXhwKCksdGhpcy5wYXJzZVJlZ0V4cExpdGVyYWwodGhpcy5zdGF0ZS52YWx1ZSk7Y2FzZSAxMzA6cmV0dXJuIHRoaXMucGFyc2VOdW1lcmljTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlKTtjYXNlIDEzMTpyZXR1cm4gdGhpcy5wYXJzZUJpZ0ludExpdGVyYWwodGhpcy5zdGF0ZS52YWx1ZSk7Y2FzZSAxMzI6cmV0dXJuIHRoaXMucGFyc2VEZWNpbWFsTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlKTtjYXNlIDEyOTpyZXR1cm4gdGhpcy5wYXJzZVN0cmluZ0xpdGVyYWwodGhpcy5zdGF0ZS52YWx1ZSk7Y2FzZSA4NDpyZXR1cm4gdGhpcy5wYXJzZU51bGxMaXRlcmFsKCk7Y2FzZSA4NTpyZXR1cm4gdGhpcy5wYXJzZUJvb2xlYW5MaXRlcmFsKCEwKTtjYXNlIDg2OnJldHVybiB0aGlzLnBhcnNlQm9vbGVhbkxpdGVyYWwoITEpO2Nhc2UgMTA6e2xldCByPXRoaXMuc3RhdGUucG90ZW50aWFsQXJyb3dBdD09PXRoaXMuc3RhdGUuc3RhcnQ7cmV0dXJuIHRoaXMucGFyc2VQYXJlbkFuZERpc3Rpbmd1aXNoRXhwcmVzc2lvbihyKX1jYXNlIDI6Y2FzZSAxOnJldHVybiB0aGlzLnBhcnNlQXJyYXlMaWtlKHRoaXMuc3RhdGUudHlwZT09PTI/NDozLCExLCEwKTtjYXNlIDA6cmV0dXJuIHRoaXMucGFyc2VBcnJheUxpa2UoMywhMCwhMSx0KTtjYXNlIDY6Y2FzZSA3OnJldHVybiB0aGlzLnBhcnNlT2JqZWN0TGlrZSh0aGlzLnN0YXRlLnR5cGU9PT02Pzk6OCwhMSwhMCk7Y2FzZSA1OnJldHVybiB0aGlzLnBhcnNlT2JqZWN0TGlrZSg4LCExLCExLHQpO2Nhc2UgNjg6cmV0dXJuIHRoaXMucGFyc2VGdW5jdGlvbk9yRnVuY3Rpb25TZW50KCk7Y2FzZSAyNjp0aGlzLnBhcnNlRGVjb3JhdG9ycygpO2Nhc2UgODA6cmV0dXJuIGU9dGhpcy5zdGFydE5vZGUoKSx0aGlzLnRha2VEZWNvcmF0b3JzKGUpLHRoaXMucGFyc2VDbGFzcyhlLCExKTtjYXNlIDc3OnJldHVybiB0aGlzLnBhcnNlTmV3T3JOZXdUYXJnZXQoKTtjYXNlIDI1OmNhc2UgMjQ6cmV0dXJuIHRoaXMucGFyc2VUZW1wbGF0ZSghMSk7Y2FzZSAxNTp7ZT10aGlzLnN0YXJ0Tm9kZSgpLHRoaXMubmV4dCgpLGUub2JqZWN0PW51bGw7bGV0IHI9ZS5jYWxsZWU9dGhpcy5wYXJzZU5vQ2FsbEV4cHIoKTtpZihyLnR5cGU9PT1cIk1lbWJlckV4cHJlc3Npb25cIilyZXR1cm4gdGhpcy5maW5pc2hOb2RlKGUsXCJCaW5kRXhwcmVzc2lvblwiKTt0aHJvdyB0aGlzLnJhaXNlKHUuVW5zdXBwb3J0ZWRCaW5kLHthdDpyfSl9Y2FzZSAxMzQ6cmV0dXJuIHRoaXMucmFpc2UodS5Qcml2YXRlSW5FeHBlY3RlZEluLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jLGlkZW50aWZpZXJOYW1lOnRoaXMuc3RhdGUudmFsdWV9KSx0aGlzLnBhcnNlUHJpdmF0ZU5hbWUoKTtjYXNlIDMzOnJldHVybiB0aGlzLnBhcnNlVG9waWNSZWZlcmVuY2VUaGVuRXF1YWxzU2lnbig1NCxcIiVcIik7Y2FzZSAzMjpyZXR1cm4gdGhpcy5wYXJzZVRvcGljUmVmZXJlbmNlVGhlbkVxdWFsc1NpZ24oNDQsXCJeXCIpO2Nhc2UgMzc6Y2FzZSAzODpyZXR1cm4gdGhpcy5wYXJzZVRvcGljUmVmZXJlbmNlKFwiaGFja1wiKTtjYXNlIDQ0OmNhc2UgNTQ6Y2FzZSAyNzp7bGV0IHI9dGhpcy5nZXRQbHVnaW5PcHRpb24oXCJwaXBlbGluZU9wZXJhdG9yXCIsXCJwcm9wb3NhbFwiKTtpZihyKXJldHVybiB0aGlzLnBhcnNlVG9waWNSZWZlcmVuY2Uocik7dGhyb3cgdGhpcy51bmV4cGVjdGVkKCl9Y2FzZSA0Nzp7bGV0IHI9dGhpcy5pbnB1dC5jb2RlUG9pbnRBdCh0aGlzLm5leHRUb2tlblN0YXJ0KCkpO2lmKGRlKHIpfHxyPT09NjIpe3RoaXMuZXhwZWN0T25lUGx1Z2luKFtcImpzeFwiLFwiZmxvd1wiLFwidHlwZXNjcmlwdFwiXSk7YnJlYWt9ZWxzZSB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKX1kZWZhdWx0OmlmKEsocykpe2lmKHRoaXMuaXNDb250ZXh0dWFsKDEyMykmJnRoaXMubG9va2FoZWFkQ2hhckNvZGUoKT09PTEyMyYmIXRoaXMuaGFzRm9sbG93aW5nTGluZUJyZWFrKCkpcmV0dXJuIHRoaXMucGFyc2VNb2R1bGVFeHByZXNzaW9uKCk7bGV0IHI9dGhpcy5zdGF0ZS5wb3RlbnRpYWxBcnJvd0F0PT09dGhpcy5zdGF0ZS5zdGFydCxpPXRoaXMuc3RhdGUuY29udGFpbnNFc2MsYT10aGlzLnBhcnNlSWRlbnRpZmllcigpO2lmKCFpJiZhLm5hbWU9PT1cImFzeW5jXCImJiF0aGlzLmNhbkluc2VydFNlbWljb2xvbigpKXtsZXR7dHlwZTpufT10aGlzLnN0YXRlO2lmKG49PT02OClyZXR1cm4gdGhpcy5yZXNldFByZXZpb3VzTm9kZVRyYWlsaW5nQ29tbWVudHMoYSksdGhpcy5uZXh0KCksdGhpcy5wYXJzZUZ1bmN0aW9uKHRoaXMuc3RhcnROb2RlQXROb2RlKGEpLHZvaWQgMCwhMCk7aWYoSyhuKSlyZXR1cm4gdGhpcy5sb29rYWhlYWRDaGFyQ29kZSgpPT09NjE/dGhpcy5wYXJzZUFzeW5jQXJyb3dVbmFyeUZ1bmN0aW9uKHRoaXMuc3RhcnROb2RlQXROb2RlKGEpKTphO2lmKG49PT05MClyZXR1cm4gdGhpcy5yZXNldFByZXZpb3VzTm9kZVRyYWlsaW5nQ29tbWVudHMoYSksdGhpcy5wYXJzZURvKHRoaXMuc3RhcnROb2RlQXROb2RlKGEpLCEwKX1yZXR1cm4gciYmdGhpcy5tYXRjaCgxOSkmJiF0aGlzLmNhbkluc2VydFNlbWljb2xvbigpPyh0aGlzLm5leHQoKSx0aGlzLnBhcnNlQXJyb3dFeHByZXNzaW9uKHRoaXMuc3RhcnROb2RlQXROb2RlKGEpLFthXSwhMSkpOmF9ZWxzZSB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKX19cGFyc2VUb3BpY1JlZmVyZW5jZVRoZW5FcXVhbHNTaWduKHQsZSl7bGV0IHM9dGhpcy5nZXRQbHVnaW5PcHRpb24oXCJwaXBlbGluZU9wZXJhdG9yXCIsXCJwcm9wb3NhbFwiKTtpZihzKXJldHVybiB0aGlzLnN0YXRlLnR5cGU9dCx0aGlzLnN0YXRlLnZhbHVlPWUsdGhpcy5zdGF0ZS5wb3MtLSx0aGlzLnN0YXRlLmVuZC0tLHRoaXMuc3RhdGUuZW5kTG9jPW0odGhpcy5zdGF0ZS5lbmRMb2MsLTEpLHRoaXMucGFyc2VUb3BpY1JlZmVyZW5jZShzKTt0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKX1wYXJzZVRvcGljUmVmZXJlbmNlKHQpe2xldCBlPXRoaXMuc3RhcnROb2RlKCkscz10aGlzLnN0YXRlLnN0YXJ0TG9jLHI9dGhpcy5zdGF0ZS50eXBlO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmZpbmlzaFRvcGljUmVmZXJlbmNlKGUscyx0LHIpfWZpbmlzaFRvcGljUmVmZXJlbmNlKHQsZSxzLHIpe2lmKHRoaXMudGVzdFRvcGljUmVmZXJlbmNlQ29uZmlndXJhdGlvbihzLGUscikpe2xldCBpPXM9PT1cInNtYXJ0XCI/XCJQaXBlbGluZVByaW1hcnlUb3BpY1JlZmVyZW5jZVwiOlwiVG9waWNSZWZlcmVuY2VcIjtyZXR1cm4gdGhpcy50b3BpY1JlZmVyZW5jZUlzQWxsb3dlZEluQ3VycmVudENvbnRleHQoKXx8dGhpcy5yYWlzZShzPT09XCJzbWFydFwiP3UuUHJpbWFyeVRvcGljTm90QWxsb3dlZDp1LlBpcGVUb3BpY1VuYm91bmQse2F0OmV9KSx0aGlzLnJlZ2lzdGVyVG9waWNSZWZlcmVuY2UoKSx0aGlzLmZpbmlzaE5vZGUodCxpKX1lbHNlIHRocm93IHRoaXMucmFpc2UodS5QaXBlVG9waWNVbmNvbmZpZ3VyZWRUb2tlbix7YXQ6ZSx0b2tlbjpQZShyKX0pfXRlc3RUb3BpY1JlZmVyZW5jZUNvbmZpZ3VyYXRpb24odCxlLHMpe3N3aXRjaCh0KXtjYXNlXCJoYWNrXCI6cmV0dXJuIHRoaXMuaGFzUGx1Z2luKFtcInBpcGVsaW5lT3BlcmF0b3JcIix7dG9waWNUb2tlbjpQZShzKX1dKTtjYXNlXCJzbWFydFwiOnJldHVybiBzPT09Mjc7ZGVmYXVsdDp0aHJvdyB0aGlzLnJhaXNlKHUuUGlwZVRvcGljUmVxdWlyZXNIYWNrUGlwZXMse2F0OmV9KX19cGFyc2VBc3luY0Fycm93VW5hcnlGdW5jdGlvbih0KXt0aGlzLnByb2RQYXJhbS5lbnRlcihndCghMCx0aGlzLnByb2RQYXJhbS5oYXNZaWVsZCkpO2xldCBlPVt0aGlzLnBhcnNlSWRlbnRpZmllcigpXTtyZXR1cm4gdGhpcy5wcm9kUGFyYW0uZXhpdCgpLHRoaXMuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJnRoaXMucmFpc2UodS5MaW5lVGVybWluYXRvckJlZm9yZUFycm93LHthdDp0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCl9KSx0aGlzLmV4cGVjdCgxOSksdGhpcy5wYXJzZUFycm93RXhwcmVzc2lvbih0LGUsITApLHR9cGFyc2VEbyh0LGUpe3RoaXMuZXhwZWN0UGx1Z2luKFwiZG9FeHByZXNzaW9uc1wiKSxlJiZ0aGlzLmV4cGVjdFBsdWdpbihcImFzeW5jRG9FeHByZXNzaW9uc1wiKSx0LmFzeW5jPWUsdGhpcy5uZXh0KCk7bGV0IHM9dGhpcy5zdGF0ZS5sYWJlbHM7cmV0dXJuIHRoaXMuc3RhdGUubGFiZWxzPVtdLGU/KHRoaXMucHJvZFBhcmFtLmVudGVyKHh0KSx0LmJvZHk9dGhpcy5wYXJzZUJsb2NrKCksdGhpcy5wcm9kUGFyYW0uZXhpdCgpKTp0LmJvZHk9dGhpcy5wYXJzZUJsb2NrKCksdGhpcy5zdGF0ZS5sYWJlbHM9cyx0aGlzLmZpbmlzaE5vZGUodCxcIkRvRXhwcmVzc2lvblwiKX1wYXJzZVN1cGVyKCl7bGV0IHQ9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5tYXRjaCgxMCkmJiF0aGlzLnNjb3BlLmFsbG93RGlyZWN0U3VwZXImJiF0aGlzLm9wdGlvbnMuYWxsb3dTdXBlck91dHNpZGVNZXRob2Q/dGhpcy5yYWlzZSh1LlN1cGVyTm90QWxsb3dlZCx7YXQ6dH0pOiF0aGlzLnNjb3BlLmFsbG93U3VwZXImJiF0aGlzLm9wdGlvbnMuYWxsb3dTdXBlck91dHNpZGVNZXRob2QmJnRoaXMucmFpc2UodS5VbmV4cGVjdGVkU3VwZXIse2F0OnR9KSwhdGhpcy5tYXRjaCgxMCkmJiF0aGlzLm1hdGNoKDApJiYhdGhpcy5tYXRjaCgxNikmJnRoaXMucmFpc2UodS5VbnN1cHBvcnRlZFN1cGVyLHthdDp0fSksdGhpcy5maW5pc2hOb2RlKHQsXCJTdXBlclwiKX1wYXJzZVByaXZhdGVOYW1lKCl7bGV0IHQ9dGhpcy5zdGFydE5vZGUoKSxlPXRoaXMuc3RhcnROb2RlQXQodGhpcy5zdGF0ZS5zdGFydCsxLG5ldyBwKHRoaXMuc3RhdGUuY3VyTGluZSx0aGlzLnN0YXRlLnN0YXJ0KzEtdGhpcy5zdGF0ZS5saW5lU3RhcnQsdGhpcy5zdGF0ZS5zdGFydCsxKSkscz10aGlzLnN0YXRlLnZhbHVlO3JldHVybiB0aGlzLm5leHQoKSx0LmlkPXRoaXMuY3JlYXRlSWRlbnRpZmllcihlLHMpLHRoaXMuZmluaXNoTm9kZSh0LFwiUHJpdmF0ZU5hbWVcIil9cGFyc2VGdW5jdGlvbk9yRnVuY3Rpb25TZW50KCl7bGV0IHQ9dGhpcy5zdGFydE5vZGUoKTtpZih0aGlzLm5leHQoKSx0aGlzLnByb2RQYXJhbS5oYXNZaWVsZCYmdGhpcy5tYXRjaCgxNikpe2xldCBlPXRoaXMuY3JlYXRlSWRlbnRpZmllcih0aGlzLnN0YXJ0Tm9kZUF0Tm9kZSh0KSxcImZ1bmN0aW9uXCIpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLm1hdGNoKDEwMik/dGhpcy5leHBlY3RQbHVnaW4oXCJmdW5jdGlvblNlbnRcIik6dGhpcy5oYXNQbHVnaW4oXCJmdW5jdGlvblNlbnRcIil8fHRoaXMudW5leHBlY3RlZCgpLHRoaXMucGFyc2VNZXRhUHJvcGVydHkodCxlLFwic2VudFwiKX1yZXR1cm4gdGhpcy5wYXJzZUZ1bmN0aW9uKHQpfXBhcnNlTWV0YVByb3BlcnR5KHQsZSxzKXt0Lm1ldGE9ZTtsZXQgcj10aGlzLnN0YXRlLmNvbnRhaW5zRXNjO3JldHVybiB0LnByb3BlcnR5PXRoaXMucGFyc2VJZGVudGlmaWVyKCEwKSwodC5wcm9wZXJ0eS5uYW1lIT09c3x8cikmJnRoaXMucmFpc2UodS5VbnN1cHBvcnRlZE1ldGFQcm9wZXJ0eSx7YXQ6dC5wcm9wZXJ0eSx0YXJnZXQ6ZS5uYW1lLG9ubHlWYWxpZFByb3BlcnR5TmFtZTpzfSksdGhpcy5maW5pc2hOb2RlKHQsXCJNZXRhUHJvcGVydHlcIil9cGFyc2VJbXBvcnRNZXRhUHJvcGVydHkodCl7bGV0IGU9dGhpcy5jcmVhdGVJZGVudGlmaWVyKHRoaXMuc3RhcnROb2RlQXROb2RlKHQpLFwiaW1wb3J0XCIpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmlzQ29udGV4dHVhbCgxMDApJiYodGhpcy5pbk1vZHVsZXx8dGhpcy5yYWlzZSh1LkltcG9ydE1ldGFPdXRzaWRlTW9kdWxlLHthdDplfSksdGhpcy5zYXdVbmFtYmlndW91c0VTTT0hMCksdGhpcy5wYXJzZU1ldGFQcm9wZXJ0eSh0LGUsXCJtZXRhXCIpfXBhcnNlTGl0ZXJhbEF0Tm9kZSh0LGUscyl7cmV0dXJuIHRoaXMuYWRkRXh0cmEocyxcInJhd1ZhbHVlXCIsdCksdGhpcy5hZGRFeHRyYShzLFwicmF3XCIsdGhpcy5pbnB1dC5zbGljZShzLnN0YXJ0LHRoaXMuc3RhdGUuZW5kKSkscy52YWx1ZT10LHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShzLGUpfXBhcnNlTGl0ZXJhbCh0LGUpe2xldCBzPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsQXROb2RlKHQsZSxzKX1wYXJzZVN0cmluZ0xpdGVyYWwodCl7cmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsKHQsXCJTdHJpbmdMaXRlcmFsXCIpfXBhcnNlTnVtZXJpY0xpdGVyYWwodCl7cmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsKHQsXCJOdW1lcmljTGl0ZXJhbFwiKX1wYXJzZUJpZ0ludExpdGVyYWwodCl7cmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsKHQsXCJCaWdJbnRMaXRlcmFsXCIpfXBhcnNlRGVjaW1hbExpdGVyYWwodCl7cmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsKHQsXCJEZWNpbWFsTGl0ZXJhbFwiKX1wYXJzZVJlZ0V4cExpdGVyYWwodCl7bGV0IGU9dGhpcy5wYXJzZUxpdGVyYWwodC52YWx1ZSxcIlJlZ0V4cExpdGVyYWxcIik7cmV0dXJuIGUucGF0dGVybj10LnBhdHRlcm4sZS5mbGFncz10LmZsYWdzLGV9cGFyc2VCb29sZWFuTGl0ZXJhbCh0KXtsZXQgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiBlLnZhbHVlPXQsdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKGUsXCJCb29sZWFuTGl0ZXJhbFwiKX1wYXJzZU51bGxMaXRlcmFsKCl7bGV0IHQ9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKHQsXCJOdWxsTGl0ZXJhbFwiKX1wYXJzZVBhcmVuQW5kRGlzdGluZ3Vpc2hFeHByZXNzaW9uKHQpe2xldCBlPXRoaXMuc3RhdGUuc3RhcnQscz10aGlzLnN0YXRlLnN0YXJ0TG9jLHI7dGhpcy5uZXh0KCksdGhpcy5leHByZXNzaW9uU2NvcGUuZW50ZXIoQWgoKSk7bGV0IGk9dGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzLGE9dGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keTt0aGlzLnN0YXRlLm1heWJlSW5BcnJvd1BhcmFtZXRlcnM9ITAsdGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keT0hMTtsZXQgbj10aGlzLnN0YXRlLnN0YXJ0LG89dGhpcy5zdGF0ZS5zdGFydExvYyxjPVtdLGY9bmV3IEF0LHk9ITAsUCx2O2Zvcig7IXRoaXMubWF0Y2goMTEpOyl7aWYoeSl5PSExO2Vsc2UgaWYodGhpcy5leHBlY3QoMTIsZi5vcHRpb25hbFBhcmFtZXRlcnNMb2M9PT1udWxsP251bGw6Zi5vcHRpb25hbFBhcmFtZXRlcnNMb2MpLHRoaXMubWF0Y2goMTEpKXt2PXRoaXMuc3RhdGUuc3RhcnRMb2M7YnJlYWt9aWYodGhpcy5tYXRjaCgyMSkpe2xldCBfPXRoaXMuc3RhdGUuc3RhcnQsUT10aGlzLnN0YXRlLnN0YXJ0TG9jO2lmKFA9dGhpcy5zdGF0ZS5zdGFydExvYyxjLnB1c2godGhpcy5wYXJzZVBhcmVuSXRlbSh0aGlzLnBhcnNlUmVzdEJpbmRpbmcoKSxfLFEpKSwhdGhpcy5jaGVja0NvbW1hQWZ0ZXJSZXN0KDQxKSlicmVha31lbHNlIGMucHVzaCh0aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKGYsdGhpcy5wYXJzZVBhcmVuSXRlbSkpfWxldCBOPXRoaXMuc3RhdGUubGFzdFRva0VuZExvYzt0aGlzLmV4cGVjdCgxMSksdGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzPWksdGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keT1hO2xldCBCPXRoaXMuc3RhcnROb2RlQXQoZSxzKTtyZXR1cm4gdCYmdGhpcy5zaG91bGRQYXJzZUFycm93KGMpJiYoQj10aGlzLnBhcnNlQXJyb3coQikpPyh0aGlzLmNoZWNrRGVzdHJ1Y3R1cmluZ1ByaXZhdGUoZiksdGhpcy5leHByZXNzaW9uU2NvcGUudmFsaWRhdGVBc1BhdHRlcm4oKSx0aGlzLmV4cHJlc3Npb25TY29wZS5leGl0KCksdGhpcy5wYXJzZUFycm93RXhwcmVzc2lvbihCLGMsITEpLEIpOih0aGlzLmV4cHJlc3Npb25TY29wZS5leGl0KCksYy5sZW5ndGh8fHRoaXMudW5leHBlY3RlZCh0aGlzLnN0YXRlLmxhc3RUb2tTdGFydExvYyksdiYmdGhpcy51bmV4cGVjdGVkKHYpLFAmJnRoaXMudW5leHBlY3RlZChQKSx0aGlzLmNoZWNrRXhwcmVzc2lvbkVycm9ycyhmLCEwKSx0aGlzLnRvUmVmZXJlbmNlZExpc3REZWVwKGMsITApLGMubGVuZ3RoPjE/KHI9dGhpcy5zdGFydE5vZGVBdChuLG8pLHIuZXhwcmVzc2lvbnM9Yyx0aGlzLmZpbmlzaE5vZGUocixcIlNlcXVlbmNlRXhwcmVzc2lvblwiKSx0aGlzLnJlc2V0RW5kTG9jYXRpb24ocixOKSk6cj1jWzBdLHRoaXMud3JhcFBhcmVudGhlc2lzKGUscyxyKSl9d3JhcFBhcmVudGhlc2lzKHQsZSxzKXtpZighdGhpcy5vcHRpb25zLmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9ucylyZXR1cm4gdGhpcy5hZGRFeHRyYShzLFwicGFyZW50aGVzaXplZFwiLCEwKSx0aGlzLmFkZEV4dHJhKHMsXCJwYXJlblN0YXJ0XCIsdCksdGhpcy50YWtlU3Vycm91bmRpbmdDb21tZW50cyhzLHQsdGhpcy5zdGF0ZS5sYXN0VG9rRW5kTG9jLmluZGV4KSxzO2xldCByPXRoaXMuc3RhcnROb2RlQXQodCxlKTtyZXR1cm4gci5leHByZXNzaW9uPXMsdGhpcy5maW5pc2hOb2RlKHIsXCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiKSxyfXNob3VsZFBhcnNlQXJyb3codCl7cmV0dXJuIXRoaXMuY2FuSW5zZXJ0U2VtaWNvbG9uKCl9cGFyc2VBcnJvdyh0KXtpZih0aGlzLmVhdCgxOSkpcmV0dXJuIHR9cGFyc2VQYXJlbkl0ZW0odCxlLHMpe3JldHVybiB0fXBhcnNlTmV3T3JOZXdUYXJnZXQoKXtsZXQgdD10aGlzLnN0YXJ0Tm9kZSgpO2lmKHRoaXMubmV4dCgpLHRoaXMubWF0Y2goMTYpKXtsZXQgZT10aGlzLmNyZWF0ZUlkZW50aWZpZXIodGhpcy5zdGFydE5vZGVBdE5vZGUodCksXCJuZXdcIik7dGhpcy5uZXh0KCk7bGV0IHM9dGhpcy5wYXJzZU1ldGFQcm9wZXJ0eSh0LGUsXCJ0YXJnZXRcIik7cmV0dXJuIXRoaXMuc2NvcGUuaW5Ob25BcnJvd0Z1bmN0aW9uJiYhdGhpcy5zY29wZS5pbkNsYXNzJiZ0aGlzLnJhaXNlKHUuVW5leHBlY3RlZE5ld1RhcmdldCx7YXQ6c30pLHN9cmV0dXJuIHRoaXMucGFyc2VOZXcodCl9cGFyc2VOZXcodCl7aWYodGhpcy5wYXJzZU5ld0NhbGxlZSh0KSx0aGlzLmVhdCgxMCkpe2xldCBlPXRoaXMucGFyc2VFeHByTGlzdCgxMSk7dGhpcy50b1JlZmVyZW5jZWRMaXN0KGUpLHQuYXJndW1lbnRzPWV9ZWxzZSB0LmFyZ3VtZW50cz1bXTtyZXR1cm4gdGhpcy5maW5pc2hOb2RlKHQsXCJOZXdFeHByZXNzaW9uXCIpfXBhcnNlTmV3Q2FsbGVlKHQpe3QuY2FsbGVlPXRoaXMucGFyc2VOb0NhbGxFeHByKCksdC5jYWxsZWUudHlwZT09PVwiSW1wb3J0XCI/dGhpcy5yYWlzZSh1LkltcG9ydENhbGxOb3ROZXdFeHByZXNzaW9uLHthdDp0LmNhbGxlZX0pOnRoaXMuaXNPcHRpb25hbENoYWluKHQuY2FsbGVlKT90aGlzLnJhaXNlKHUuT3B0aW9uYWxDaGFpbmluZ05vTmV3LHthdDp0aGlzLnN0YXRlLmxhc3RUb2tFbmRMb2N9KTp0aGlzLmVhdCgxOCkmJnRoaXMucmFpc2UodS5PcHRpb25hbENoYWluaW5nTm9OZXcse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KX1wYXJzZVRlbXBsYXRlRWxlbWVudCh0KXtsZXR7c3RhcnQ6ZSxzdGFydExvYzpzLGVuZDpyLHZhbHVlOml9PXRoaXMuc3RhdGUsYT1lKzEsbj10aGlzLnN0YXJ0Tm9kZUF0KGEsbShzLDEpKTtpPT09bnVsbCYmKHR8fHRoaXMucmFpc2UodS5JbnZhbGlkRXNjYXBlU2VxdWVuY2VUZW1wbGF0ZSx7YXQ6bShzLDIpfSkpO2xldCBvPXRoaXMubWF0Y2goMjQpLGM9bz8tMTotMixmPXIrYztyZXR1cm4gbi52YWx1ZT17cmF3OnRoaXMuaW5wdXQuc2xpY2UoYSxmKS5yZXBsYWNlKC9cXHJcXG4/L2csYFxuYCksY29va2VkOmk9PT1udWxsP251bGw6aS5zbGljZSgxLGMpfSxuLnRhaWw9byx0aGlzLm5leHQoKSx0aGlzLmZpbmlzaE5vZGUobixcIlRlbXBsYXRlRWxlbWVudFwiKSx0aGlzLnJlc2V0RW5kTG9jYXRpb24obixtKHRoaXMuc3RhdGUubGFzdFRva0VuZExvYyxjKSksbn1wYXJzZVRlbXBsYXRlKHQpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7ZS5leHByZXNzaW9ucz1bXTtsZXQgcz10aGlzLnBhcnNlVGVtcGxhdGVFbGVtZW50KHQpO2ZvcihlLnF1YXNpcz1bc107IXMudGFpbDspZS5leHByZXNzaW9ucy5wdXNoKHRoaXMucGFyc2VUZW1wbGF0ZVN1YnN0aXR1dGlvbigpKSx0aGlzLnJlYWRUZW1wbGF0ZUNvbnRpbnVhdGlvbigpLGUucXVhc2lzLnB1c2gocz10aGlzLnBhcnNlVGVtcGxhdGVFbGVtZW50KHQpKTtyZXR1cm4gdGhpcy5maW5pc2hOb2RlKGUsXCJUZW1wbGF0ZUxpdGVyYWxcIil9cGFyc2VUZW1wbGF0ZVN1YnN0aXR1dGlvbigpe3JldHVybiB0aGlzLnBhcnNlRXhwcmVzc2lvbigpfXBhcnNlT2JqZWN0TGlrZSh0LGUscyxyKXtzJiZ0aGlzLmV4cGVjdFBsdWdpbihcInJlY29yZEFuZFR1cGxlXCIpO2xldCBpPXRoaXMuc3RhdGUuaW5GU2hhcnBQaXBlbGluZURpcmVjdEJvZHk7dGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keT0hMTtsZXQgYT1PYmplY3QuY3JlYXRlKG51bGwpLG49ITAsbz10aGlzLnN0YXJ0Tm9kZSgpO2ZvcihvLnByb3BlcnRpZXM9W10sdGhpcy5uZXh0KCk7IXRoaXMubWF0Y2godCk7KXtpZihuKW49ITE7ZWxzZSBpZih0aGlzLmV4cGVjdCgxMiksdGhpcy5tYXRjaCh0KSl7dGhpcy5hZGRUcmFpbGluZ0NvbW1hRXh0cmFUb05vZGUobyk7YnJlYWt9bGV0IGY7ZT9mPXRoaXMucGFyc2VCaW5kaW5nUHJvcGVydHkoKTooZj10aGlzLnBhcnNlUHJvcGVydHlEZWZpbml0aW9uKHIpLHRoaXMuY2hlY2tQcm90byhmLHMsYSxyKSkscyYmIXRoaXMuaXNPYmplY3RQcm9wZXJ0eShmKSYmZi50eXBlIT09XCJTcHJlYWRFbGVtZW50XCImJnRoaXMucmFpc2UodS5JbnZhbGlkUmVjb3JkUHJvcGVydHkse2F0OmZ9KSxmLnNob3J0aGFuZCYmdGhpcy5hZGRFeHRyYShmLFwic2hvcnRoYW5kXCIsITApLG8ucHJvcGVydGllcy5wdXNoKGYpfXRoaXMubmV4dCgpLHRoaXMuc3RhdGUuaW5GU2hhcnBQaXBlbGluZURpcmVjdEJvZHk9aTtsZXQgYz1cIk9iamVjdEV4cHJlc3Npb25cIjtyZXR1cm4gZT9jPVwiT2JqZWN0UGF0dGVyblwiOnMmJihjPVwiUmVjb3JkRXhwcmVzc2lvblwiKSx0aGlzLmZpbmlzaE5vZGUobyxjKX1hZGRUcmFpbGluZ0NvbW1hRXh0cmFUb05vZGUodCl7dGhpcy5hZGRFeHRyYSh0LFwidHJhaWxpbmdDb21tYVwiLHRoaXMuc3RhdGUubGFzdFRva1N0YXJ0KSx0aGlzLmFkZEV4dHJhKHQsXCJ0cmFpbGluZ0NvbW1hTG9jXCIsdGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2MsITEpfW1heWJlQXN5bmNPckFjY2Vzc29yUHJvcCh0KXtyZXR1cm4hdC5jb21wdXRlZCYmdC5rZXkudHlwZT09PVwiSWRlbnRpZmllclwiJiYodGhpcy5pc0xpdGVyYWxQcm9wZXJ0eU5hbWUoKXx8dGhpcy5tYXRjaCgwKXx8dGhpcy5tYXRjaCg1NSkpfXBhcnNlUHJvcGVydHlEZWZpbml0aW9uKHQpe2xldCBlPVtdO2lmKHRoaXMubWF0Y2goMjYpKWZvcih0aGlzLmhhc1BsdWdpbihcImRlY29yYXRvcnNcIikmJnRoaXMucmFpc2UodS5VbnN1cHBvcnRlZFByb3BlcnR5RGVjb3JhdG9yLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7dGhpcy5tYXRjaCgyNik7KWUucHVzaCh0aGlzLnBhcnNlRGVjb3JhdG9yKCkpO2xldCBzPXRoaXMuc3RhcnROb2RlKCkscj0hMSxpPSExLGEsbjtpZih0aGlzLm1hdGNoKDIxKSlyZXR1cm4gZS5sZW5ndGgmJnRoaXMudW5leHBlY3RlZCgpLHRoaXMucGFyc2VTcHJlYWQoKTtlLmxlbmd0aCYmKHMuZGVjb3JhdG9ycz1lLGU9W10pLHMubWV0aG9kPSExLHQmJihhPXRoaXMuc3RhdGUuc3RhcnQsbj10aGlzLnN0YXRlLnN0YXJ0TG9jKTtsZXQgbz10aGlzLmVhdCg1NSk7dGhpcy5wYXJzZVByb3BlcnR5TmFtZVByZWZpeE9wZXJhdG9yKHMpO2xldCBjPXRoaXMuc3RhdGUuY29udGFpbnNFc2MsZj10aGlzLnBhcnNlUHJvcGVydHlOYW1lKHMsdCk7aWYoIW8mJiFjJiZ0aGlzLm1heWJlQXN5bmNPckFjY2Vzc29yUHJvcChzKSl7bGV0IHk9Zi5uYW1lO3k9PT1cImFzeW5jXCImJiF0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpJiYocj0hMCx0aGlzLnJlc2V0UHJldmlvdXNOb2RlVHJhaWxpbmdDb21tZW50cyhmKSxvPXRoaXMuZWF0KDU1KSx0aGlzLnBhcnNlUHJvcGVydHlOYW1lKHMpKSwoeT09PVwiZ2V0XCJ8fHk9PT1cInNldFwiKSYmKGk9ITAsdGhpcy5yZXNldFByZXZpb3VzTm9kZVRyYWlsaW5nQ29tbWVudHMoZikscy5raW5kPXksdGhpcy5tYXRjaCg1NSkmJihvPSEwLHRoaXMucmFpc2UodS5BY2Nlc3NvcklzR2VuZXJhdG9yLHthdDp0aGlzLnN0YXRlLmN1clBvc2l0aW9uKCksa2luZDp5fSksdGhpcy5uZXh0KCkpLHRoaXMucGFyc2VQcm9wZXJ0eU5hbWUocykpfXJldHVybiB0aGlzLnBhcnNlT2JqUHJvcFZhbHVlKHMsYSxuLG8sciwhMSxpLHQpLHN9Z2V0R2V0dGVyU2V0dGVyRXhwZWN0ZWRQYXJhbUNvdW50KHQpe3JldHVybiB0LmtpbmQ9PT1cImdldFwiPzA6MX1nZXRPYmplY3RPckNsYXNzTWV0aG9kUGFyYW1zKHQpe3JldHVybiB0LnBhcmFtc31jaGVja0dldHRlclNldHRlclBhcmFtcyh0KXt2YXIgZTtsZXQgcz10aGlzLmdldEdldHRlclNldHRlckV4cGVjdGVkUGFyYW1Db3VudCh0KSxyPXRoaXMuZ2V0T2JqZWN0T3JDbGFzc01ldGhvZFBhcmFtcyh0KTtyLmxlbmd0aCE9PXMmJnRoaXMucmFpc2UodC5raW5kPT09XCJnZXRcIj91LkJhZEdldHRlckFyaXR5OnUuQmFkU2V0dGVyQXJpdHkse2F0OnR9KSx0LmtpbmQ9PT1cInNldFwiJiYoKGU9cltyLmxlbmd0aC0xXSk9PW51bGw/dm9pZCAwOmUudHlwZSk9PT1cIlJlc3RFbGVtZW50XCImJnRoaXMucmFpc2UodS5CYWRTZXR0ZXJSZXN0UGFyYW1ldGVyLHthdDp0fSl9cGFyc2VPYmplY3RNZXRob2QodCxlLHMscixpKXtpZihpKXJldHVybiB0aGlzLnBhcnNlTWV0aG9kKHQsZSwhMSwhMSwhMSxcIk9iamVjdE1ldGhvZFwiKSx0aGlzLmNoZWNrR2V0dGVyU2V0dGVyUGFyYW1zKHQpLHQ7aWYoc3x8ZXx8dGhpcy5tYXRjaCgxMCkpcmV0dXJuIHImJnRoaXMudW5leHBlY3RlZCgpLHQua2luZD1cIm1ldGhvZFwiLHQubWV0aG9kPSEwLHRoaXMucGFyc2VNZXRob2QodCxlLHMsITEsITEsXCJPYmplY3RNZXRob2RcIil9cGFyc2VPYmplY3RQcm9wZXJ0eSh0LGUscyxyLGkpe2lmKHQuc2hvcnRoYW5kPSExLHRoaXMuZWF0KDE0KSlyZXR1cm4gdC52YWx1ZT1yP3RoaXMucGFyc2VNYXliZURlZmF1bHQodGhpcy5zdGF0ZS5zdGFydCx0aGlzLnN0YXRlLnN0YXJ0TG9jKTp0aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKGkpLHRoaXMuZmluaXNoTm9kZSh0LFwiT2JqZWN0UHJvcGVydHlcIik7aWYoIXQuY29tcHV0ZWQmJnQua2V5LnR5cGU9PT1cIklkZW50aWZpZXJcIil7aWYodGhpcy5jaGVja1Jlc2VydmVkV29yZCh0LmtleS5uYW1lLHQua2V5LmxvYy5zdGFydCwhMCwhMSkscil0LnZhbHVlPXRoaXMucGFyc2VNYXliZURlZmF1bHQoZSxzLGdlKHQua2V5KSk7ZWxzZSBpZih0aGlzLm1hdGNoKDI5KSl7bGV0IGE9dGhpcy5zdGF0ZS5zdGFydExvYztpIT1udWxsP2kuc2hvcnRoYW5kQXNzaWduTG9jPT09bnVsbCYmKGkuc2hvcnRoYW5kQXNzaWduTG9jPWEpOnRoaXMucmFpc2UodS5JbnZhbGlkQ292ZXJJbml0aWFsaXplZE5hbWUse2F0OmF9KSx0LnZhbHVlPXRoaXMucGFyc2VNYXliZURlZmF1bHQoZSxzLGdlKHQua2V5KSl9ZWxzZSB0LnZhbHVlPWdlKHQua2V5KTtyZXR1cm4gdC5zaG9ydGhhbmQ9ITAsdGhpcy5maW5pc2hOb2RlKHQsXCJPYmplY3RQcm9wZXJ0eVwiKX19cGFyc2VPYmpQcm9wVmFsdWUodCxlLHMscixpLGEsbixvKXtsZXQgYz10aGlzLnBhcnNlT2JqZWN0TWV0aG9kKHQscixpLGEsbil8fHRoaXMucGFyc2VPYmplY3RQcm9wZXJ0eSh0LGUscyxhLG8pO3JldHVybiBjfHx0aGlzLnVuZXhwZWN0ZWQoKSxjfXBhcnNlUHJvcGVydHlOYW1lKHQsZSl7aWYodGhpcy5lYXQoMCkpdC5jb21wdXRlZD0hMCx0LmtleT10aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKCksdGhpcy5leHBlY3QoMyk7ZWxzZXtsZXR7dHlwZTpzLHZhbHVlOnJ9PXRoaXMuc3RhdGUsaTtpZihwZShzKSlpPXRoaXMucGFyc2VJZGVudGlmaWVyKCEwKTtlbHNlIHN3aXRjaChzKXtjYXNlIDEzMDppPXRoaXMucGFyc2VOdW1lcmljTGl0ZXJhbChyKTticmVhaztjYXNlIDEyOTppPXRoaXMucGFyc2VTdHJpbmdMaXRlcmFsKHIpO2JyZWFrO2Nhc2UgMTMxOmk9dGhpcy5wYXJzZUJpZ0ludExpdGVyYWwocik7YnJlYWs7Y2FzZSAxMzI6aT10aGlzLnBhcnNlRGVjaW1hbExpdGVyYWwocik7YnJlYWs7Y2FzZSAxMzQ6e2xldCBhPXRoaXMuc3RhdGUuc3RhcnRMb2M7ZSE9bnVsbD9lLnByaXZhdGVLZXlMb2M9PT1udWxsJiYoZS5wcml2YXRlS2V5TG9jPWEpOnRoaXMucmFpc2UodS5VbmV4cGVjdGVkUHJpdmF0ZUZpZWxkLHthdDphfSksaT10aGlzLnBhcnNlUHJpdmF0ZU5hbWUoKTticmVha31kZWZhdWx0OnRocm93IHRoaXMudW5leHBlY3RlZCgpfXQua2V5PWkscyE9PTEzNCYmKHQuY29tcHV0ZWQ9ITEpfXJldHVybiB0LmtleX1pbml0RnVuY3Rpb24odCxlKXt0LmlkPW51bGwsdC5nZW5lcmF0b3I9ITEsdC5hc3luYz0hIWV9cGFyc2VNZXRob2QodCxlLHMscixpLGEpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+NiYmYXJndW1lbnRzWzZdIT09dm9pZCAwP2FyZ3VtZW50c1s2XTohMTt0aGlzLmluaXRGdW5jdGlvbih0LHMpLHQuZ2VuZXJhdG9yPSEhZTtsZXQgbz1yO3JldHVybiB0aGlzLnNjb3BlLmVudGVyKG1lfG90fChuP1NlOjApfChpP3hyOjApKSx0aGlzLnByb2RQYXJhbS5lbnRlcihndChzLHQuZ2VuZXJhdG9yKSksdGhpcy5wYXJzZUZ1bmN0aW9uUGFyYW1zKHQsbyksdGhpcy5wYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaCh0LGEsITApLHRoaXMucHJvZFBhcmFtLmV4aXQoKSx0aGlzLnNjb3BlLmV4aXQoKSx0fXBhcnNlQXJyYXlMaWtlKHQsZSxzLHIpe3MmJnRoaXMuZXhwZWN0UGx1Z2luKFwicmVjb3JkQW5kVHVwbGVcIik7bGV0IGk9dGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keTt0aGlzLnN0YXRlLmluRlNoYXJwUGlwZWxpbmVEaXJlY3RCb2R5PSExO2xldCBhPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLGEuZWxlbWVudHM9dGhpcy5wYXJzZUV4cHJMaXN0KHQsIXMscixhKSx0aGlzLnN0YXRlLmluRlNoYXJwUGlwZWxpbmVEaXJlY3RCb2R5PWksdGhpcy5maW5pc2hOb2RlKGEscz9cIlR1cGxlRXhwcmVzc2lvblwiOlwiQXJyYXlFeHByZXNzaW9uXCIpfXBhcnNlQXJyb3dFeHByZXNzaW9uKHQsZSxzLHIpe3RoaXMuc2NvcGUuZW50ZXIobWV8SnQpO2xldCBpPWd0KHMsITEpOyF0aGlzLm1hdGNoKDUpJiZ0aGlzLnByb2RQYXJhbS5oYXNJbiYmKGl8PXFlKSx0aGlzLnByb2RQYXJhbS5lbnRlcihpKSx0aGlzLmluaXRGdW5jdGlvbih0LHMpO2xldCBhPXRoaXMuc3RhdGUubWF5YmVJbkFycm93UGFyYW1ldGVycztyZXR1cm4gZSYmKHRoaXMuc3RhdGUubWF5YmVJbkFycm93UGFyYW1ldGVycz0hMCx0aGlzLnNldEFycm93RnVuY3Rpb25QYXJhbWV0ZXJzKHQsZSxyKSksdGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzPSExLHRoaXMucGFyc2VGdW5jdGlvbkJvZHkodCwhMCksdGhpcy5wcm9kUGFyYW0uZXhpdCgpLHRoaXMuc2NvcGUuZXhpdCgpLHRoaXMuc3RhdGUubWF5YmVJbkFycm93UGFyYW1ldGVycz1hLHRoaXMuZmluaXNoTm9kZSh0LFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIil9c2V0QXJyb3dGdW5jdGlvblBhcmFtZXRlcnModCxlLHMpe3RoaXMudG9Bc3NpZ25hYmxlTGlzdChlLHMsITEpLHQucGFyYW1zPWV9cGFyc2VGdW5jdGlvbkJvZHlBbmRGaW5pc2godCxlKXtsZXQgcz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITE7dGhpcy5wYXJzZUZ1bmN0aW9uQm9keSh0LCExLHMpLHRoaXMuZmluaXNoTm9kZSh0LGUpfXBhcnNlRnVuY3Rpb25Cb2R5KHQsZSl7bGV0IHM9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOiExLHI9ZSYmIXRoaXMubWF0Y2goNSk7aWYodGhpcy5leHByZXNzaW9uU2NvcGUuZW50ZXIoRHIoKSkscil0LmJvZHk9dGhpcy5wYXJzZU1heWJlQXNzaWduKCksdGhpcy5jaGVja1BhcmFtcyh0LCExLGUsITEpO2Vsc2V7bGV0IGk9dGhpcy5zdGF0ZS5zdHJpY3QsYT10aGlzLnN0YXRlLmxhYmVsczt0aGlzLnN0YXRlLmxhYmVscz1bXSx0aGlzLnByb2RQYXJhbS5lbnRlcih0aGlzLnByb2RQYXJhbS5jdXJyZW50RmxhZ3MoKXxMciksdC5ib2R5PXRoaXMucGFyc2VCbG9jayghMCwhMSxuPT57bGV0IG89IXRoaXMuaXNTaW1wbGVQYXJhbUxpc3QodC5wYXJhbXMpO24mJm8mJnRoaXMucmFpc2UodS5JbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlLHthdDoodC5raW5kPT09XCJtZXRob2RcInx8dC5raW5kPT09XCJjb25zdHJ1Y3RvclwiKSYmISF0LmtleT90LmtleS5sb2MuZW5kOnR9KTtsZXQgYz0haSYmdGhpcy5zdGF0ZS5zdHJpY3Q7dGhpcy5jaGVja1BhcmFtcyh0LCF0aGlzLnN0YXRlLnN0cmljdCYmIWUmJiFzJiYhbyxlLGMpLHRoaXMuc3RhdGUuc3RyaWN0JiZ0LmlkJiZ0aGlzLmNoZWNrSWRlbnRpZmllcih0LmlkLFhvLGMpfSksdGhpcy5wcm9kUGFyYW0uZXhpdCgpLHRoaXMuc3RhdGUubGFiZWxzPWF9dGhpcy5leHByZXNzaW9uU2NvcGUuZXhpdCgpfWlzU2ltcGxlUGFyYW1ldGVyKHQpe3JldHVybiB0LnR5cGU9PT1cIklkZW50aWZpZXJcIn1pc1NpbXBsZVBhcmFtTGlzdCh0KXtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKyspaWYoIXRoaXMuaXNTaW1wbGVQYXJhbWV0ZXIodFtlXSkpcmV0dXJuITE7cmV0dXJuITB9Y2hlY2tQYXJhbXModCxlLHMpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTohMCxpPSFlJiZuZXcgU2V0LGE9e3R5cGU6XCJGb3JtYWxQYXJhbWV0ZXJzXCJ9O2ZvcihsZXQgbiBvZiB0LnBhcmFtcyl0aGlzLmNoZWNrTFZhbChuLHtpbjphLGJpbmRpbmc6cHQsY2hlY2tDbGFzaGVzOmksc3RyaWN0TW9kZUNoYW5nZWQ6cn0pfXBhcnNlRXhwckxpc3QodCxlLHMscil7bGV0IGk9W10sYT0hMDtmb3IoOyF0aGlzLmVhdCh0KTspe2lmKGEpYT0hMTtlbHNlIGlmKHRoaXMuZXhwZWN0KDEyKSx0aGlzLm1hdGNoKHQpKXtyJiZ0aGlzLmFkZFRyYWlsaW5nQ29tbWFFeHRyYVRvTm9kZShyKSx0aGlzLm5leHQoKTticmVha31pLnB1c2godGhpcy5wYXJzZUV4cHJMaXN0SXRlbShlLHMpKX1yZXR1cm4gaX1wYXJzZUV4cHJMaXN0SXRlbSh0LGUscyl7bGV0IHI7aWYodGhpcy5tYXRjaCgxMikpdHx8dGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWRUb2tlbix7YXQ6dGhpcy5zdGF0ZS5jdXJQb3NpdGlvbigpLHVuZXhwZWN0ZWQ6XCIsXCJ9KSxyPW51bGw7ZWxzZSBpZih0aGlzLm1hdGNoKDIxKSl7bGV0IGk9dGhpcy5zdGF0ZS5zdGFydCxhPXRoaXMuc3RhdGUuc3RhcnRMb2M7cj10aGlzLnBhcnNlUGFyZW5JdGVtKHRoaXMucGFyc2VTcHJlYWQoZSksaSxhKX1lbHNlIGlmKHRoaXMubWF0Y2goMTcpKXt0aGlzLmV4cGVjdFBsdWdpbihcInBhcnRpYWxBcHBsaWNhdGlvblwiKSxzfHx0aGlzLnJhaXNlKHUuVW5leHBlY3RlZEFyZ3VtZW50UGxhY2Vob2xkZXIse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtsZXQgaT10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMubmV4dCgpLHI9dGhpcy5maW5pc2hOb2RlKGksXCJBcmd1bWVudFBsYWNlaG9sZGVyXCIpfWVsc2Ugcj10aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKGUsdGhpcy5wYXJzZVBhcmVuSXRlbSk7cmV0dXJuIHJ9cGFyc2VJZGVudGlmaWVyKHQpe2xldCBlPXRoaXMuc3RhcnROb2RlKCkscz10aGlzLnBhcnNlSWRlbnRpZmllck5hbWUoZS5zdGFydCx0KTtyZXR1cm4gdGhpcy5jcmVhdGVJZGVudGlmaWVyKGUscyl9Y3JlYXRlSWRlbnRpZmllcih0LGUpe3JldHVybiB0Lm5hbWU9ZSx0LmxvYy5pZGVudGlmaWVyTmFtZT1lLHRoaXMuZmluaXNoTm9kZSh0LFwiSWRlbnRpZmllclwiKX1wYXJzZUlkZW50aWZpZXJOYW1lKHQsZSl7bGV0IHMse3N0YXJ0TG9jOnIsdHlwZTppfT10aGlzLnN0YXRlO2lmKHBlKGkpKXM9dGhpcy5zdGF0ZS52YWx1ZTtlbHNlIHRocm93IHRoaXMudW5leHBlY3RlZCgpO2xldCBhPXZvKGkpO3JldHVybiBlP2EmJnRoaXMucmVwbGFjZVRva2VuKDEyOCk6dGhpcy5jaGVja1Jlc2VydmVkV29yZChzLHIsYSwhMSksdGhpcy5uZXh0KCksc31jaGVja1Jlc2VydmVkV29yZCh0LGUscyxyKXtpZih0Lmxlbmd0aD4xMHx8IUhvKHQpKXJldHVybjtpZih0PT09XCJ5aWVsZFwiKXtpZih0aGlzLnByb2RQYXJhbS5oYXNZaWVsZCl7dGhpcy5yYWlzZSh1LllpZWxkQmluZGluZ0lkZW50aWZpZXIse2F0OmV9KTtyZXR1cm59fWVsc2UgaWYodD09PVwiYXdhaXRcIil7aWYodGhpcy5wcm9kUGFyYW0uaGFzQXdhaXQpe3RoaXMucmFpc2UodS5Bd2FpdEJpbmRpbmdJZGVudGlmaWVyLHthdDplfSk7cmV0dXJufWlmKHRoaXMuc2NvcGUuaW5TdGF0aWNCbG9jayl7dGhpcy5yYWlzZSh1LkF3YWl0QmluZGluZ0lkZW50aWZpZXJJblN0YXRpY0Jsb2NrLHthdDplfSk7cmV0dXJufXRoaXMuZXhwcmVzc2lvblNjb3BlLnJlY29yZEFzeW5jQXJyb3dQYXJhbWV0ZXJzRXJyb3Ioe2F0OmV9KX1lbHNlIGlmKHQ9PT1cImFyZ3VtZW50c1wiJiZ0aGlzLnNjb3BlLmluQ2xhc3NBbmROb3RJbk5vbkFycm93RnVuY3Rpb24pe3RoaXMucmFpc2UodS5Bcmd1bWVudHNJbkNsYXNzLHthdDplfSk7cmV0dXJufWlmKHMmJnpvKHQpKXt0aGlzLnJhaXNlKHUuVW5leHBlY3RlZEtleXdvcmQse2F0OmUsa2V5d29yZDp0fSk7cmV0dXJufSh0aGlzLnN0YXRlLnN0cmljdD9yP21yOmZyOnByKSh0LHRoaXMuaW5Nb2R1bGUpJiZ0aGlzLnJhaXNlKHUuVW5leHBlY3RlZFJlc2VydmVkV29yZCx7YXQ6ZSxyZXNlcnZlZFdvcmQ6dH0pfWlzQXdhaXRBbGxvd2VkKCl7cmV0dXJuISEodGhpcy5wcm9kUGFyYW0uaGFzQXdhaXR8fHRoaXMub3B0aW9ucy5hbGxvd0F3YWl0T3V0c2lkZUZ1bmN0aW9uJiYhdGhpcy5zY29wZS5pbkZ1bmN0aW9uKX1wYXJzZUF3YWl0KHQsZSl7bGV0IHM9dGhpcy5zdGFydE5vZGVBdCh0LGUpO3JldHVybiB0aGlzLmV4cHJlc3Npb25TY29wZS5yZWNvcmRQYXJhbWV0ZXJJbml0aWFsaXplckVycm9yKHUuQXdhaXRFeHByZXNzaW9uRm9ybWFsUGFyYW1ldGVyLHthdDpzfSksdGhpcy5lYXQoNTUpJiZ0aGlzLnJhaXNlKHUuT2Jzb2xldGVBd2FpdFN0YXIse2F0OnN9KSwhdGhpcy5zY29wZS5pbkZ1bmN0aW9uJiYhdGhpcy5vcHRpb25zLmFsbG93QXdhaXRPdXRzaWRlRnVuY3Rpb24mJih0aGlzLmlzQW1iaWd1b3VzQXdhaXQoKT90aGlzLmFtYmlndW91c1NjcmlwdERpZmZlcmVudEFzdD0hMDp0aGlzLnNhd1VuYW1iaWd1b3VzRVNNPSEwKSx0aGlzLnN0YXRlLnNvbG9Bd2FpdHx8KHMuYXJndW1lbnQ9dGhpcy5wYXJzZU1heWJlVW5hcnkobnVsbCwhMCkpLHRoaXMuZmluaXNoTm9kZShzLFwiQXdhaXRFeHByZXNzaW9uXCIpfWlzQW1iaWd1b3VzQXdhaXQoKXtpZih0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpKXJldHVybiEwO2xldHt0eXBlOnR9PXRoaXMuc3RhdGU7cmV0dXJuIHQ9PT01M3x8dD09PTEwfHx0PT09MHx8bnQodCl8fHQ9PT0xMzN8fHQ9PT01Nnx8dGhpcy5oYXNQbHVnaW4oXCJ2OGludHJpbnNpY1wiKSYmdD09PTU0fXBhcnNlWWllbGQoKXtsZXQgdD10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMuZXhwcmVzc2lvblNjb3BlLnJlY29yZFBhcmFtZXRlckluaXRpYWxpemVyRXJyb3IodS5ZaWVsZEluUGFyYW1ldGVyLHthdDp0fSksdGhpcy5uZXh0KCk7bGV0IGU9ITEscz1udWxsO2lmKCF0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpKXN3aXRjaChlPXRoaXMuZWF0KDU1KSx0aGlzLnN0YXRlLnR5cGUpe2Nhc2UgMTM6Y2FzZSAxMzU6Y2FzZSA4OmNhc2UgMTE6Y2FzZSAzOmNhc2UgOTpjYXNlIDE0OmNhc2UgMTI6aWYoIWUpYnJlYWs7ZGVmYXVsdDpzPXRoaXMucGFyc2VNYXliZUFzc2lnbigpfXJldHVybiB0LmRlbGVnYXRlPWUsdC5hcmd1bWVudD1zLHRoaXMuZmluaXNoTm9kZSh0LFwiWWllbGRFeHByZXNzaW9uXCIpfWNoZWNrUGlwZWxpbmVBdEluZml4T3BlcmF0b3IodCxlKXt0aGlzLmhhc1BsdWdpbihbXCJwaXBlbGluZU9wZXJhdG9yXCIse3Byb3Bvc2FsOlwic21hcnRcIn1dKSYmdC50eXBlPT09XCJTZXF1ZW5jZUV4cHJlc3Npb25cIiYmdGhpcy5yYWlzZSh1LlBpcGVsaW5lSGVhZFNlcXVlbmNlRXhwcmVzc2lvbix7YXQ6ZX0pfXBhcnNlU21hcnRQaXBlbGluZUJvZHlJblN0eWxlKHQsZSxzKXtsZXQgcj10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7cmV0dXJuIHRoaXMuaXNTaW1wbGVSZWZlcmVuY2UodCk/KHIuY2FsbGVlPXQsdGhpcy5maW5pc2hOb2RlKHIsXCJQaXBlbGluZUJhcmVGdW5jdGlvblwiKSk6KHRoaXMuY2hlY2tTbWFydFBpcGVUb3BpY0JvZHlFYXJseUVycm9ycyhzKSxyLmV4cHJlc3Npb249dCx0aGlzLmZpbmlzaE5vZGUocixcIlBpcGVsaW5lVG9waWNFeHByZXNzaW9uXCIpKX1pc1NpbXBsZVJlZmVyZW5jZSh0KXtzd2l0Y2godC50eXBlKXtjYXNlXCJNZW1iZXJFeHByZXNzaW9uXCI6cmV0dXJuIXQuY29tcHV0ZWQmJnRoaXMuaXNTaW1wbGVSZWZlcmVuY2UodC5vYmplY3QpO2Nhc2VcIklkZW50aWZpZXJcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1jaGVja1NtYXJ0UGlwZVRvcGljQm9keUVhcmx5RXJyb3JzKHQpe2lmKHRoaXMubWF0Y2goMTkpKXRocm93IHRoaXMucmFpc2UodS5QaXBlbGluZUJvZHlOb0Fycm93LHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7dGhpcy50b3BpY1JlZmVyZW5jZVdhc1VzZWRJbkN1cnJlbnRDb250ZXh0KCl8fHRoaXMucmFpc2UodS5QaXBlbGluZVRvcGljVW51c2VkLHthdDp0fSl9d2l0aFRvcGljQmluZGluZ0NvbnRleHQodCl7bGV0IGU9dGhpcy5zdGF0ZS50b3BpY0NvbnRleHQ7dGhpcy5zdGF0ZS50b3BpY0NvbnRleHQ9e21heE51bU9mUmVzb2x2YWJsZVRvcGljczoxLG1heFRvcGljSW5kZXg6bnVsbH07dHJ5e3JldHVybiB0KCl9ZmluYWxseXt0aGlzLnN0YXRlLnRvcGljQ29udGV4dD1lfX13aXRoU21hcnRNaXhUb3BpY0ZvcmJpZGRpbmdDb250ZXh0KHQpe2lmKHRoaXMuaGFzUGx1Z2luKFtcInBpcGVsaW5lT3BlcmF0b3JcIix7cHJvcG9zYWw6XCJzbWFydFwifV0pKXtsZXQgZT10aGlzLnN0YXRlLnRvcGljQ29udGV4dDt0aGlzLnN0YXRlLnRvcGljQ29udGV4dD17bWF4TnVtT2ZSZXNvbHZhYmxlVG9waWNzOjAsbWF4VG9waWNJbmRleDpudWxsfTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3RoaXMuc3RhdGUudG9waWNDb250ZXh0PWV9fWVsc2UgcmV0dXJuIHQoKX13aXRoU29sb0F3YWl0UGVybWl0dGluZ0NvbnRleHQodCl7bGV0IGU9dGhpcy5zdGF0ZS5zb2xvQXdhaXQ7dGhpcy5zdGF0ZS5zb2xvQXdhaXQ9ITA7dHJ5e3JldHVybiB0KCl9ZmluYWxseXt0aGlzLnN0YXRlLnNvbG9Bd2FpdD1lfX1hbGxvd0luQW5kKHQpe2xldCBlPXRoaXMucHJvZFBhcmFtLmN1cnJlbnRGbGFncygpO2lmKHFlJn5lKXt0aGlzLnByb2RQYXJhbS5lbnRlcihlfHFlKTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3RoaXMucHJvZFBhcmFtLmV4aXQoKX19cmV0dXJuIHQoKX1kaXNhbGxvd0luQW5kKHQpe2xldCBlPXRoaXMucHJvZFBhcmFtLmN1cnJlbnRGbGFncygpO2lmKHFlJmUpe3RoaXMucHJvZFBhcmFtLmVudGVyKGUmfnFlKTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3RoaXMucHJvZFBhcmFtLmV4aXQoKX19cmV0dXJuIHQoKX1yZWdpc3RlclRvcGljUmVmZXJlbmNlKCl7dGhpcy5zdGF0ZS50b3BpY0NvbnRleHQubWF4VG9waWNJbmRleD0wfXRvcGljUmVmZXJlbmNlSXNBbGxvd2VkSW5DdXJyZW50Q29udGV4dCgpe3JldHVybiB0aGlzLnN0YXRlLnRvcGljQ29udGV4dC5tYXhOdW1PZlJlc29sdmFibGVUb3BpY3M+PTF9dG9waWNSZWZlcmVuY2VXYXNVc2VkSW5DdXJyZW50Q29udGV4dCgpe3JldHVybiB0aGlzLnN0YXRlLnRvcGljQ29udGV4dC5tYXhUb3BpY0luZGV4IT1udWxsJiZ0aGlzLnN0YXRlLnRvcGljQ29udGV4dC5tYXhUb3BpY0luZGV4Pj0wfXBhcnNlRlNoYXJwUGlwZWxpbmVCb2R5KHQpe2xldCBlPXRoaXMuc3RhdGUuc3RhcnQscz10aGlzLnN0YXRlLnN0YXJ0TG9jO3RoaXMuc3RhdGUucG90ZW50aWFsQXJyb3dBdD10aGlzLnN0YXRlLnN0YXJ0O2xldCByPXRoaXMuc3RhdGUuaW5GU2hhcnBQaXBlbGluZURpcmVjdEJvZHk7dGhpcy5zdGF0ZS5pbkZTaGFycFBpcGVsaW5lRGlyZWN0Qm9keT0hMDtsZXQgaT10aGlzLnBhcnNlRXhwck9wKHRoaXMucGFyc2VNYXliZVVuYXJ5T3JQcml2YXRlKCksZSxzLHQpO3JldHVybiB0aGlzLnN0YXRlLmluRlNoYXJwUGlwZWxpbmVEaXJlY3RCb2R5PXIsaX1wYXJzZU1vZHVsZUV4cHJlc3Npb24oKXt0aGlzLmV4cGVjdFBsdWdpbihcIm1vZHVsZUJsb2Nrc1wiKTtsZXQgdD10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMubmV4dCgpLHRoaXMuZWF0KDUpO2xldCBlPXRoaXMuaW5pdGlhbGl6ZVNjb3BlcyghMCk7dGhpcy5lbnRlckluaXRpYWxTY29wZXMoKTtsZXQgcz10aGlzLnN0YXJ0Tm9kZSgpO3RyeXt0LmJvZHk9dGhpcy5wYXJzZVByb2dyYW0ocyw4LFwibW9kdWxlXCIpfWZpbmFsbHl7ZSgpfXJldHVybiB0aGlzLmVhdCg4KSx0aGlzLmZpbmlzaE5vZGUodCxcIk1vZHVsZUV4cHJlc3Npb25cIil9cGFyc2VQcm9wZXJ0eU5hbWVQcmVmaXhPcGVyYXRvcih0KXt9fSxwcz17a2luZDpcImxvb3BcIn0sJGg9e2tpbmQ6XCJzd2l0Y2hcIn0sUWg9MCxmcz0xLEhyPTIsV3I9NCxaaD0vW1xcdUQ4MDAtXFx1REZGRl0vdSxkcz0vaW4oPzpzdGFuY2VvZik/L3k7ZnVuY3Rpb24gZWwodCxlKXtmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrKyl7bGV0IHI9dFtzXSx7dHlwZTppfT1yO2lmKHR5cGVvZiBpPT1cIm51bWJlclwiKXt7aWYoaT09PTEzNCl7bGV0e2xvYzphLHN0YXJ0Om4sdmFsdWU6byxlbmQ6Y309cixmPW4rMSx5PW0oYS5zdGFydCwxKTt0LnNwbGljZShzLDEsbmV3IEVlKHt0eXBlOmZlKDI3KSx2YWx1ZTpcIiNcIixzdGFydDpuLGVuZDpmLHN0YXJ0TG9jOmEuc3RhcnQsZW5kTG9jOnl9KSxuZXcgRWUoe3R5cGU6ZmUoMTI4KSx2YWx1ZTpvLHN0YXJ0OmYsZW5kOmMsc3RhcnRMb2M6eSxlbmRMb2M6YS5lbmR9KSkscysrO2NvbnRpbnVlfWlmKG50KGkpKXtsZXR7bG9jOmEsc3RhcnQ6bix2YWx1ZTpvLGVuZDpjfT1yLGY9bisxLHk9bShhLnN0YXJ0LDEpLFA7ZS5jaGFyQ29kZUF0KG4pPT09OTY/UD1uZXcgRWUoe3R5cGU6ZmUoMjIpLHZhbHVlOlwiYFwiLHN0YXJ0Om4sZW5kOmYsc3RhcnRMb2M6YS5zdGFydCxlbmRMb2M6eX0pOlA9bmV3IEVlKHt0eXBlOmZlKDgpLHZhbHVlOlwifVwiLHN0YXJ0Om4sZW5kOmYsc3RhcnRMb2M6YS5zdGFydCxlbmRMb2M6eX0pO2xldCB2LE4sQixfO2k9PT0yND8oTj1jLTEsQj1tKGEuZW5kLC0xKSx2PW89PT1udWxsP251bGw6by5zbGljZSgxLC0xKSxfPW5ldyBFZSh7dHlwZTpmZSgyMiksdmFsdWU6XCJgXCIsc3RhcnQ6TixlbmQ6YyxzdGFydExvYzpCLGVuZExvYzphLmVuZH0pKTooTj1jLTIsQj1tKGEuZW5kLC0yKSx2PW89PT1udWxsP251bGw6by5zbGljZSgxLC0yKSxfPW5ldyBFZSh7dHlwZTpmZSgyMyksdmFsdWU6XCIke1wiLHN0YXJ0Ok4sZW5kOmMsc3RhcnRMb2M6QixlbmRMb2M6YS5lbmR9KSksdC5zcGxpY2UocywxLFAsbmV3IEVlKHt0eXBlOmZlKDIwKSx2YWx1ZTp2LHN0YXJ0OmYsZW5kOk4sc3RhcnRMb2M6eSxlbmRMb2M6Qn0pLF8pLHMrPTI7Y29udGludWV9fXIudHlwZT1mZShpKX19cmV0dXJuIHR9dmFyIHRsPWNsYXNzIGV4dGVuZHMgWWh7cGFyc2VUb3BMZXZlbCh0LGUpe3JldHVybiB0LnByb2dyYW09dGhpcy5wYXJzZVByb2dyYW0oZSksdC5jb21tZW50cz10aGlzLnN0YXRlLmNvbW1lbnRzLHRoaXMub3B0aW9ucy50b2tlbnMmJih0LnRva2Vucz1lbCh0aGlzLnRva2Vucyx0aGlzLmlucHV0KSksdGhpcy5maW5pc2hOb2RlKHQsXCJGaWxlXCIpfXBhcnNlUHJvZ3JhbSh0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06MTM1LHM9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnRoaXMub3B0aW9ucy5zb3VyY2VUeXBlO2lmKHQuc291cmNlVHlwZT1zLHQuaW50ZXJwcmV0ZXI9dGhpcy5wYXJzZUludGVycHJldGVyRGlyZWN0aXZlKCksdGhpcy5wYXJzZUJsb2NrQm9keSh0LCEwLCEwLGUpLHRoaXMuaW5Nb2R1bGUmJiF0aGlzLm9wdGlvbnMuYWxsb3dVbmRlY2xhcmVkRXhwb3J0cyYmdGhpcy5zY29wZS51bmRlZmluZWRFeHBvcnRzLnNpemU+MClmb3IobGV0W3IsaV1vZiBBcnJheS5mcm9tKHRoaXMuc2NvcGUudW5kZWZpbmVkRXhwb3J0cykpdGhpcy5yYWlzZSh1Lk1vZHVsZUV4cG9ydFVuZGVmaW5lZCx7YXQ6aSxsb2NhbE5hbWU6cn0pO3JldHVybiB0aGlzLmZpbmlzaE5vZGUodCxcIlByb2dyYW1cIil9c3RtdFRvRGlyZWN0aXZlKHQpe2xldCBlPXQ7ZS50eXBlPVwiRGlyZWN0aXZlXCIsZS52YWx1ZT1lLmV4cHJlc3Npb24sZGVsZXRlIGUuZXhwcmVzc2lvbjtsZXQgcz1lLnZhbHVlLHI9cy52YWx1ZSxpPXRoaXMuaW5wdXQuc2xpY2Uocy5zdGFydCxzLmVuZCksYT1zLnZhbHVlPWkuc2xpY2UoMSwtMSk7cmV0dXJuIHRoaXMuYWRkRXh0cmEocyxcInJhd1wiLGkpLHRoaXMuYWRkRXh0cmEocyxcInJhd1ZhbHVlXCIsYSksdGhpcy5hZGRFeHRyYShzLFwiZXhwcmVzc2lvblZhbHVlXCIscikscy50eXBlPVwiRGlyZWN0aXZlTGl0ZXJhbFwiLGV9cGFyc2VJbnRlcnByZXRlckRpcmVjdGl2ZSgpe2lmKCF0aGlzLm1hdGNoKDI4KSlyZXR1cm4gbnVsbDtsZXQgdD10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0LnZhbHVlPXRoaXMuc3RhdGUudmFsdWUsdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKHQsXCJJbnRlcnByZXRlckRpcmVjdGl2ZVwiKX1pc0xldCh0KXtyZXR1cm4gdGhpcy5pc0NvbnRleHR1YWwoOTkpP3RoaXMuaXNMZXRLZXl3b3JkKHQpOiExfWlzTGV0S2V5d29yZCh0KXtsZXQgZT10aGlzLm5leHRUb2tlblN0YXJ0KCkscz10aGlzLmNvZGVQb2ludEF0UG9zKGUpO2lmKHM9PT05Mnx8cz09PTkxKXJldHVybiEwO2lmKHQpcmV0dXJuITE7aWYocz09PTEyMylyZXR1cm4hMDtpZihkZShzKSl7aWYoZHMubGFzdEluZGV4PWUsZHMudGVzdCh0aGlzLmlucHV0KSl7bGV0IHI9dGhpcy5jb2RlUG9pbnRBdFBvcyhkcy5sYXN0SW5kZXgpO2lmKCFCZShyKSYmciE9PTkyKXJldHVybiExfXJldHVybiEwfXJldHVybiExfXBhcnNlU3RhdGVtZW50KHQsZSl7cmV0dXJuIHRoaXMubWF0Y2goMjYpJiZ0aGlzLnBhcnNlRGVjb3JhdG9ycyghMCksdGhpcy5wYXJzZVN0YXRlbWVudENvbnRlbnQodCxlKX1wYXJzZVN0YXRlbWVudENvbnRlbnQodCxlKXtsZXQgcz10aGlzLnN0YXRlLnR5cGUscj10aGlzLnN0YXJ0Tm9kZSgpLGk7c3dpdGNoKHRoaXMuaXNMZXQodCkmJihzPTc0LGk9XCJsZXRcIikscyl7Y2FzZSA2MDpyZXR1cm4gdGhpcy5wYXJzZUJyZWFrQ29udGludWVTdGF0ZW1lbnQociwhMCk7Y2FzZSA2MzpyZXR1cm4gdGhpcy5wYXJzZUJyZWFrQ29udGludWVTdGF0ZW1lbnQociwhMSk7Y2FzZSA2NDpyZXR1cm4gdGhpcy5wYXJzZURlYnVnZ2VyU3RhdGVtZW50KHIpO2Nhc2UgOTA6cmV0dXJuIHRoaXMucGFyc2VEb1N0YXRlbWVudChyKTtjYXNlIDkxOnJldHVybiB0aGlzLnBhcnNlRm9yU3RhdGVtZW50KHIpO2Nhc2UgNjg6aWYodGhpcy5sb29rYWhlYWRDaGFyQ29kZSgpPT09NDYpYnJlYWs7cmV0dXJuIHQmJih0aGlzLnN0YXRlLnN0cmljdD90aGlzLnJhaXNlKHUuU3RyaWN0RnVuY3Rpb24se2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTp0IT09XCJpZlwiJiZ0IT09XCJsYWJlbFwiJiZ0aGlzLnJhaXNlKHUuU2xvcHB5RnVuY3Rpb24se2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KSksdGhpcy5wYXJzZUZ1bmN0aW9uU3RhdGVtZW50KHIsITEsIXQpO2Nhc2UgODA6cmV0dXJuIHQmJnRoaXMudW5leHBlY3RlZCgpLHRoaXMucGFyc2VDbGFzcyhyLCEwKTtjYXNlIDY5OnJldHVybiB0aGlzLnBhcnNlSWZTdGF0ZW1lbnQocik7Y2FzZSA3MDpyZXR1cm4gdGhpcy5wYXJzZVJldHVyblN0YXRlbWVudChyKTtjYXNlIDcxOnJldHVybiB0aGlzLnBhcnNlU3dpdGNoU3RhdGVtZW50KHIpO2Nhc2UgNzI6cmV0dXJuIHRoaXMucGFyc2VUaHJvd1N0YXRlbWVudChyKTtjYXNlIDczOnJldHVybiB0aGlzLnBhcnNlVHJ5U3RhdGVtZW50KHIpO2Nhc2UgNzU6Y2FzZSA3NDpyZXR1cm4gaT1pfHx0aGlzLnN0YXRlLnZhbHVlLHQmJmkhPT1cInZhclwiJiZ0aGlzLnJhaXNlKHUuVW5leHBlY3RlZExleGljYWxEZWNsYXJhdGlvbix7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pLHRoaXMucGFyc2VWYXJTdGF0ZW1lbnQocixpKTtjYXNlIDkyOnJldHVybiB0aGlzLnBhcnNlV2hpbGVTdGF0ZW1lbnQocik7Y2FzZSA3NjpyZXR1cm4gdGhpcy5wYXJzZVdpdGhTdGF0ZW1lbnQocik7Y2FzZSA1OnJldHVybiB0aGlzLnBhcnNlQmxvY2soKTtjYXNlIDEzOnJldHVybiB0aGlzLnBhcnNlRW1wdHlTdGF0ZW1lbnQocik7Y2FzZSA4Mzp7bGV0IG89dGhpcy5sb29rYWhlYWRDaGFyQ29kZSgpO2lmKG89PT00MHx8bz09PTQ2KWJyZWFrfWNhc2UgODI6eyF0aGlzLm9wdGlvbnMuYWxsb3dJbXBvcnRFeHBvcnRFdmVyeXdoZXJlJiYhZSYmdGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWRJbXBvcnRFeHBvcnQse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KSx0aGlzLm5leHQoKTtsZXQgbztyZXR1cm4gcz09PTgzPyhvPXRoaXMucGFyc2VJbXBvcnQociksby50eXBlPT09XCJJbXBvcnREZWNsYXJhdGlvblwiJiYoIW8uaW1wb3J0S2luZHx8by5pbXBvcnRLaW5kPT09XCJ2YWx1ZVwiKSYmKHRoaXMuc2F3VW5hbWJpZ3VvdXNFU009ITApKToobz10aGlzLnBhcnNlRXhwb3J0KHIpLChvLnR5cGU9PT1cIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiYmKCFvLmV4cG9ydEtpbmR8fG8uZXhwb3J0S2luZD09PVwidmFsdWVcIil8fG8udHlwZT09PVwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIiYmKCFvLmV4cG9ydEtpbmR8fG8uZXhwb3J0S2luZD09PVwidmFsdWVcIil8fG8udHlwZT09PVwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCIpJiYodGhpcy5zYXdVbmFtYmlndW91c0VTTT0hMCkpLHRoaXMuYXNzZXJ0TW9kdWxlTm9kZUFsbG93ZWQociksb31kZWZhdWx0OmlmKHRoaXMuaXNBc3luY0Z1bmN0aW9uKCkpcmV0dXJuIHQmJnRoaXMucmFpc2UodS5Bc3luY0Z1bmN0aW9uSW5TaW5nbGVTdGF0ZW1lbnRDb250ZXh0LHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSksdGhpcy5uZXh0KCksdGhpcy5wYXJzZUZ1bmN0aW9uU3RhdGVtZW50KHIsITAsIXQpfWxldCBhPXRoaXMuc3RhdGUudmFsdWUsbj10aGlzLnBhcnNlRXhwcmVzc2lvbigpO3JldHVybiBLKHMpJiZuLnR5cGU9PT1cIklkZW50aWZpZXJcIiYmdGhpcy5lYXQoMTQpP3RoaXMucGFyc2VMYWJlbGVkU3RhdGVtZW50KHIsYSxuLHQpOnRoaXMucGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KHIsbil9YXNzZXJ0TW9kdWxlTm9kZUFsbG93ZWQodCl7IXRoaXMub3B0aW9ucy5hbGxvd0ltcG9ydEV4cG9ydEV2ZXJ5d2hlcmUmJiF0aGlzLmluTW9kdWxlJiZ0aGlzLnJhaXNlKHUuSW1wb3J0T3V0c2lkZU1vZHVsZSx7YXQ6dH0pfXRha2VEZWNvcmF0b3JzKHQpe2xldCBlPXRoaXMuc3RhdGUuZGVjb3JhdG9yU3RhY2tbdGhpcy5zdGF0ZS5kZWNvcmF0b3JTdGFjay5sZW5ndGgtMV07ZS5sZW5ndGgmJih0LmRlY29yYXRvcnM9ZSx0aGlzLnJlc2V0U3RhcnRMb2NhdGlvbkZyb21Ob2RlKHQsZVswXSksdGhpcy5zdGF0ZS5kZWNvcmF0b3JTdGFja1t0aGlzLnN0YXRlLmRlY29yYXRvclN0YWNrLmxlbmd0aC0xXT1bXSl9Y2FuSGF2ZUxlYWRpbmdEZWNvcmF0b3IoKXtyZXR1cm4gdGhpcy5tYXRjaCg4MCl9cGFyc2VEZWNvcmF0b3JzKHQpe2xldCBlPXRoaXMuc3RhdGUuZGVjb3JhdG9yU3RhY2tbdGhpcy5zdGF0ZS5kZWNvcmF0b3JTdGFjay5sZW5ndGgtMV07Zm9yKDt0aGlzLm1hdGNoKDI2KTspe2xldCBzPXRoaXMucGFyc2VEZWNvcmF0b3IoKTtlLnB1c2gocyl9aWYodGhpcy5tYXRjaCg4MikpdHx8dGhpcy51bmV4cGVjdGVkKCksdGhpcy5oYXNQbHVnaW4oXCJkZWNvcmF0b3JzXCIpJiYhdGhpcy5nZXRQbHVnaW5PcHRpb24oXCJkZWNvcmF0b3JzXCIsXCJkZWNvcmF0b3JzQmVmb3JlRXhwb3J0XCIpJiZ0aGlzLnJhaXNlKHUuRGVjb3JhdG9yRXhwb3J0Q2xhc3Mse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtlbHNlIGlmKCF0aGlzLmNhbkhhdmVMZWFkaW5nRGVjb3JhdG9yKCkpdGhyb3cgdGhpcy5yYWlzZSh1LlVuZXhwZWN0ZWRMZWFkaW5nRGVjb3JhdG9yLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSl9cGFyc2VEZWNvcmF0b3IoKXt0aGlzLmV4cGVjdE9uZVBsdWdpbihbXCJkZWNvcmF0b3JzLWxlZ2FjeVwiLFwiZGVjb3JhdG9yc1wiXSk7bGV0IHQ9dGhpcy5zdGFydE5vZGUoKTtpZih0aGlzLm5leHQoKSx0aGlzLmhhc1BsdWdpbihcImRlY29yYXRvcnNcIikpe3RoaXMuc3RhdGUuZGVjb3JhdG9yU3RhY2sucHVzaChbXSk7bGV0IGU9dGhpcy5zdGF0ZS5zdGFydCxzPXRoaXMuc3RhdGUuc3RhcnRMb2MscjtpZih0aGlzLm1hdGNoKDEwKSl7bGV0IGk9dGhpcy5zdGF0ZS5zdGFydCxhPXRoaXMuc3RhdGUuc3RhcnRMb2M7dGhpcy5uZXh0KCkscj10aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuZXhwZWN0KDExKSxyPXRoaXMud3JhcFBhcmVudGhlc2lzKGksYSxyKX1lbHNlIGZvcihyPXRoaXMucGFyc2VJZGVudGlmaWVyKCExKTt0aGlzLmVhdCgxNik7KXtsZXQgaT10aGlzLnN0YXJ0Tm9kZUF0KGUscyk7aS5vYmplY3Q9cixpLnByb3BlcnR5PXRoaXMucGFyc2VJZGVudGlmaWVyKCEwKSxpLmNvbXB1dGVkPSExLHI9dGhpcy5maW5pc2hOb2RlKGksXCJNZW1iZXJFeHByZXNzaW9uXCIpfXQuZXhwcmVzc2lvbj10aGlzLnBhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHMociksdGhpcy5zdGF0ZS5kZWNvcmF0b3JTdGFjay5wb3AoKX1lbHNlIHQuZXhwcmVzc2lvbj10aGlzLnBhcnNlRXhwclN1YnNjcmlwdHMoKTtyZXR1cm4gdGhpcy5maW5pc2hOb2RlKHQsXCJEZWNvcmF0b3JcIil9cGFyc2VNYXliZURlY29yYXRvckFyZ3VtZW50cyh0KXtpZih0aGlzLmVhdCgxMCkpe2xldCBlPXRoaXMuc3RhcnROb2RlQXROb2RlKHQpO3JldHVybiBlLmNhbGxlZT10LGUuYXJndW1lbnRzPXRoaXMucGFyc2VDYWxsRXhwcmVzc2lvbkFyZ3VtZW50cygxMSwhMSksdGhpcy50b1JlZmVyZW5jZWRMaXN0KGUuYXJndW1lbnRzKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkNhbGxFeHByZXNzaW9uXCIpfXJldHVybiB0fXBhcnNlQnJlYWtDb250aW51ZVN0YXRlbWVudCh0LGUpe3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmlzTGluZVRlcm1pbmF0b3IoKT90LmxhYmVsPW51bGw6KHQubGFiZWw9dGhpcy5wYXJzZUlkZW50aWZpZXIoKSx0aGlzLnNlbWljb2xvbigpKSx0aGlzLnZlcmlmeUJyZWFrQ29udGludWUodCxlKSx0aGlzLmZpbmlzaE5vZGUodCxlP1wiQnJlYWtTdGF0ZW1lbnRcIjpcIkNvbnRpbnVlU3RhdGVtZW50XCIpfXZlcmlmeUJyZWFrQ29udGludWUodCxlKXtsZXQgcztmb3Iocz0wO3M8dGhpcy5zdGF0ZS5sYWJlbHMubGVuZ3RoOysrcyl7bGV0IHI9dGhpcy5zdGF0ZS5sYWJlbHNbc107aWYoKHQubGFiZWw9PW51bGx8fHIubmFtZT09PXQubGFiZWwubmFtZSkmJihyLmtpbmQhPW51bGwmJihlfHxyLmtpbmQ9PT1cImxvb3BcIil8fHQubGFiZWwmJmUpKWJyZWFrfWlmKHM9PT10aGlzLnN0YXRlLmxhYmVscy5sZW5ndGgpe2xldCByPWU/XCJCcmVha1N0YXRlbWVudFwiOlwiQ29udGludWVTdGF0ZW1lbnRcIjt0aGlzLnJhaXNlKHUuSWxsZWdhbEJyZWFrQ29udGludWUse2F0OnQsdHlwZTpyfSl9fXBhcnNlRGVidWdnZXJTdGF0ZW1lbnQodCl7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKHQsXCJEZWJ1Z2dlclN0YXRlbWVudFwiKX1wYXJzZUhlYWRlckV4cHJlc3Npb24oKXt0aGlzLmV4cGVjdCgxMCk7bGV0IHQ9dGhpcy5wYXJzZUV4cHJlc3Npb24oKTtyZXR1cm4gdGhpcy5leHBlY3QoMTEpLHR9cGFyc2VEb1N0YXRlbWVudCh0KXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5zdGF0ZS5sYWJlbHMucHVzaChwcyksdC5ib2R5PXRoaXMud2l0aFNtYXJ0TWl4VG9waWNGb3JiaWRkaW5nQ29udGV4dCgoKT0+dGhpcy5wYXJzZVN0YXRlbWVudChcImRvXCIpKSx0aGlzLnN0YXRlLmxhYmVscy5wb3AoKSx0aGlzLmV4cGVjdCg5MiksdC50ZXN0PXRoaXMucGFyc2VIZWFkZXJFeHByZXNzaW9uKCksdGhpcy5lYXQoMTMpLHRoaXMuZmluaXNoTm9kZSh0LFwiRG9XaGlsZVN0YXRlbWVudFwiKX1wYXJzZUZvclN0YXRlbWVudCh0KXt0aGlzLm5leHQoKSx0aGlzLnN0YXRlLmxhYmVscy5wdXNoKHBzKTtsZXQgZT1udWxsO2lmKHRoaXMuaXNBd2FpdEFsbG93ZWQoKSYmdGhpcy5lYXRDb250ZXh0dWFsKDk2KSYmKGU9dGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2MpLHRoaXMuc2NvcGUuZW50ZXIoTWUpLHRoaXMuZXhwZWN0KDEwKSx0aGlzLm1hdGNoKDEzKSlyZXR1cm4gZSE9PW51bGwmJnRoaXMudW5leHBlY3RlZChlKSx0aGlzLnBhcnNlRm9yKHQsbnVsbCk7bGV0IHM9dGhpcy5pc0NvbnRleHR1YWwoOTkpLHI9cyYmdGhpcy5pc0xldEtleXdvcmQoKTtpZih0aGlzLm1hdGNoKDc0KXx8dGhpcy5tYXRjaCg3NSl8fHIpe2xldCBjPXRoaXMuc3RhcnROb2RlKCksZj1yP1wibGV0XCI6dGhpcy5zdGF0ZS52YWx1ZTtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5wYXJzZVZhcihjLCEwLGYpLHRoaXMuZmluaXNoTm9kZShjLFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSwodGhpcy5tYXRjaCg1OCl8fHRoaXMuaXNDb250ZXh0dWFsKDEwMSkpJiZjLmRlY2xhcmF0aW9ucy5sZW5ndGg9PT0xP3RoaXMucGFyc2VGb3JJbih0LGMsZSk6KGUhPT1udWxsJiZ0aGlzLnVuZXhwZWN0ZWQoZSksdGhpcy5wYXJzZUZvcih0LGMpKX1sZXQgaT10aGlzLmlzQ29udGV4dHVhbCg5NSksYT1uZXcgQXQsbj10aGlzLnBhcnNlRXhwcmVzc2lvbighMCxhKSxvPXRoaXMuaXNDb250ZXh0dWFsKDEwMSk7aWYobyYmKHMmJnRoaXMucmFpc2UodS5Gb3JPZkxldCx7YXQ6bn0pLGU9PT1udWxsJiZpJiZuLnR5cGU9PT1cIklkZW50aWZpZXJcIiYmdGhpcy5yYWlzZSh1LkZvck9mQXN5bmMse2F0Om59KSksb3x8dGhpcy5tYXRjaCg1OCkpe3RoaXMuY2hlY2tEZXN0cnVjdHVyaW5nUHJpdmF0ZShhKSx0aGlzLnRvQXNzaWduYWJsZShuLCEwKTtsZXQgYz1vP1wiRm9yT2ZTdGF0ZW1lbnRcIjpcIkZvckluU3RhdGVtZW50XCI7cmV0dXJuIHRoaXMuY2hlY2tMVmFsKG4se2luOnt0eXBlOmN9fSksdGhpcy5wYXJzZUZvckluKHQsbixlKX1lbHNlIHRoaXMuY2hlY2tFeHByZXNzaW9uRXJyb3JzKGEsITApO3JldHVybiBlIT09bnVsbCYmdGhpcy51bmV4cGVjdGVkKGUpLHRoaXMucGFyc2VGb3IodCxuKX1wYXJzZUZ1bmN0aW9uU3RhdGVtZW50KHQsZSxzKXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5wYXJzZUZ1bmN0aW9uKHQsZnN8KHM/MDpIciksZSl9cGFyc2VJZlN0YXRlbWVudCh0KXtyZXR1cm4gdGhpcy5uZXh0KCksdC50ZXN0PXRoaXMucGFyc2VIZWFkZXJFeHByZXNzaW9uKCksdC5jb25zZXF1ZW50PXRoaXMucGFyc2VTdGF0ZW1lbnQoXCJpZlwiKSx0LmFsdGVybmF0ZT10aGlzLmVhdCg2Nik/dGhpcy5wYXJzZVN0YXRlbWVudChcImlmXCIpOm51bGwsdGhpcy5maW5pc2hOb2RlKHQsXCJJZlN0YXRlbWVudFwiKX1wYXJzZVJldHVyblN0YXRlbWVudCh0KXtyZXR1cm4hdGhpcy5wcm9kUGFyYW0uaGFzUmV0dXJuJiYhdGhpcy5vcHRpb25zLmFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uJiZ0aGlzLnJhaXNlKHUuSWxsZWdhbFJldHVybix7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pLHRoaXMubmV4dCgpLHRoaXMuaXNMaW5lVGVybWluYXRvcigpP3QuYXJndW1lbnQ9bnVsbDoodC5hcmd1bWVudD10aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuc2VtaWNvbG9uKCkpLHRoaXMuZmluaXNoTm9kZSh0LFwiUmV0dXJuU3RhdGVtZW50XCIpfXBhcnNlU3dpdGNoU3RhdGVtZW50KHQpe3RoaXMubmV4dCgpLHQuZGlzY3JpbWluYW50PXRoaXMucGFyc2VIZWFkZXJFeHByZXNzaW9uKCk7bGV0IGU9dC5jYXNlcz1bXTt0aGlzLmV4cGVjdCg1KSx0aGlzLnN0YXRlLmxhYmVscy5wdXNoKCRoKSx0aGlzLnNjb3BlLmVudGVyKE1lKTtsZXQgcztmb3IobGV0IHI7IXRoaXMubWF0Y2goOCk7KWlmKHRoaXMubWF0Y2goNjEpfHx0aGlzLm1hdGNoKDY1KSl7bGV0IGk9dGhpcy5tYXRjaCg2MSk7cyYmdGhpcy5maW5pc2hOb2RlKHMsXCJTd2l0Y2hDYXNlXCIpLGUucHVzaChzPXRoaXMuc3RhcnROb2RlKCkpLHMuY29uc2VxdWVudD1bXSx0aGlzLm5leHQoKSxpP3MudGVzdD10aGlzLnBhcnNlRXhwcmVzc2lvbigpOihyJiZ0aGlzLnJhaXNlKHUuTXVsdGlwbGVEZWZhdWx0c0luU3dpdGNoLHthdDp0aGlzLnN0YXRlLmxhc3RUb2tTdGFydExvY30pLHI9ITAscy50ZXN0PW51bGwpLHRoaXMuZXhwZWN0KDE0KX1lbHNlIHM/cy5jb25zZXF1ZW50LnB1c2godGhpcy5wYXJzZVN0YXRlbWVudChudWxsKSk6dGhpcy51bmV4cGVjdGVkKCk7cmV0dXJuIHRoaXMuc2NvcGUuZXhpdCgpLHMmJnRoaXMuZmluaXNoTm9kZShzLFwiU3dpdGNoQ2FzZVwiKSx0aGlzLm5leHQoKSx0aGlzLnN0YXRlLmxhYmVscy5wb3AoKSx0aGlzLmZpbmlzaE5vZGUodCxcIlN3aXRjaFN0YXRlbWVudFwiKX1wYXJzZVRocm93U3RhdGVtZW50KHQpe3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpJiZ0aGlzLnJhaXNlKHUuTmV3bGluZUFmdGVyVGhyb3cse2F0OnRoaXMuc3RhdGUubGFzdFRva0VuZExvY30pLHQuYXJndW1lbnQ9dGhpcy5wYXJzZUV4cHJlc3Npb24oKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZSh0LFwiVGhyb3dTdGF0ZW1lbnRcIil9cGFyc2VDYXRjaENsYXVzZVBhcmFtKCl7bGV0IHQ9dGhpcy5wYXJzZUJpbmRpbmdBdG9tKCksZT10LnR5cGU9PT1cIklkZW50aWZpZXJcIjtyZXR1cm4gdGhpcy5zY29wZS5lbnRlcihlP3lyOjApLHRoaXMuY2hlY2tMVmFsKHQse2luOnt0eXBlOlwiQ2F0Y2hDbGF1c2VcIn0sYmluZGluZzp4ZSxhbGxvd2luZ1Nsb3BweUxldEJpbmRpbmc6ITB9KSx0fXBhcnNlVHJ5U3RhdGVtZW50KHQpe2lmKHRoaXMubmV4dCgpLHQuYmxvY2s9dGhpcy5wYXJzZUJsb2NrKCksdC5oYW5kbGVyPW51bGwsdGhpcy5tYXRjaCg2Mikpe2xldCBlPXRoaXMuc3RhcnROb2RlKCk7dGhpcy5uZXh0KCksdGhpcy5tYXRjaCgxMCk/KHRoaXMuZXhwZWN0KDEwKSxlLnBhcmFtPXRoaXMucGFyc2VDYXRjaENsYXVzZVBhcmFtKCksdGhpcy5leHBlY3QoMTEpKTooZS5wYXJhbT1udWxsLHRoaXMuc2NvcGUuZW50ZXIoTWUpKSxlLmJvZHk9dGhpcy53aXRoU21hcnRNaXhUb3BpY0ZvcmJpZGRpbmdDb250ZXh0KCgpPT50aGlzLnBhcnNlQmxvY2soITEsITEpKSx0aGlzLnNjb3BlLmV4aXQoKSx0LmhhbmRsZXI9dGhpcy5maW5pc2hOb2RlKGUsXCJDYXRjaENsYXVzZVwiKX1yZXR1cm4gdC5maW5hbGl6ZXI9dGhpcy5lYXQoNjcpP3RoaXMucGFyc2VCbG9jaygpOm51bGwsIXQuaGFuZGxlciYmIXQuZmluYWxpemVyJiZ0aGlzLnJhaXNlKHUuTm9DYXRjaE9yRmluYWxseSx7YXQ6dH0pLHRoaXMuZmluaXNoTm9kZSh0LFwiVHJ5U3RhdGVtZW50XCIpfXBhcnNlVmFyU3RhdGVtZW50KHQsZSl7bGV0IHM9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOiExO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLnBhcnNlVmFyKHQsITEsZSxzKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZSh0LFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKX1wYXJzZVdoaWxlU3RhdGVtZW50KHQpe3JldHVybiB0aGlzLm5leHQoKSx0LnRlc3Q9dGhpcy5wYXJzZUhlYWRlckV4cHJlc3Npb24oKSx0aGlzLnN0YXRlLmxhYmVscy5wdXNoKHBzKSx0LmJvZHk9dGhpcy53aXRoU21hcnRNaXhUb3BpY0ZvcmJpZGRpbmdDb250ZXh0KCgpPT50aGlzLnBhcnNlU3RhdGVtZW50KFwid2hpbGVcIikpLHRoaXMuc3RhdGUubGFiZWxzLnBvcCgpLHRoaXMuZmluaXNoTm9kZSh0LFwiV2hpbGVTdGF0ZW1lbnRcIil9cGFyc2VXaXRoU3RhdGVtZW50KHQpe3JldHVybiB0aGlzLnN0YXRlLnN0cmljdCYmdGhpcy5yYWlzZSh1LlN0cmljdFdpdGgse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KSx0aGlzLm5leHQoKSx0Lm9iamVjdD10aGlzLnBhcnNlSGVhZGVyRXhwcmVzc2lvbigpLHQuYm9keT10aGlzLndpdGhTbWFydE1peFRvcGljRm9yYmlkZGluZ0NvbnRleHQoKCk9PnRoaXMucGFyc2VTdGF0ZW1lbnQoXCJ3aXRoXCIpKSx0aGlzLmZpbmlzaE5vZGUodCxcIldpdGhTdGF0ZW1lbnRcIil9cGFyc2VFbXB0eVN0YXRlbWVudCh0KXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKHQsXCJFbXB0eVN0YXRlbWVudFwiKX1wYXJzZUxhYmVsZWRTdGF0ZW1lbnQodCxlLHMscil7Zm9yKGxldCBhIG9mIHRoaXMuc3RhdGUubGFiZWxzKWEubmFtZT09PWUmJnRoaXMucmFpc2UodS5MYWJlbFJlZGVjbGFyYXRpb24se2F0OnMsbGFiZWxOYW1lOmV9KTtsZXQgaT1Obyh0aGlzLnN0YXRlLnR5cGUpP1wibG9vcFwiOnRoaXMubWF0Y2goNzEpP1wic3dpdGNoXCI6bnVsbDtmb3IobGV0IGE9dGhpcy5zdGF0ZS5sYWJlbHMubGVuZ3RoLTE7YT49MDthLS0pe2xldCBuPXRoaXMuc3RhdGUubGFiZWxzW2FdO2lmKG4uc3RhdGVtZW50U3RhcnQ9PT10LnN0YXJ0KW4uc3RhdGVtZW50U3RhcnQ9dGhpcy5zdGF0ZS5zdGFydCxuLmtpbmQ9aTtlbHNlIGJyZWFrfXJldHVybiB0aGlzLnN0YXRlLmxhYmVscy5wdXNoKHtuYW1lOmUsa2luZDppLHN0YXRlbWVudFN0YXJ0OnRoaXMuc3RhdGUuc3RhcnR9KSx0LmJvZHk9dGhpcy5wYXJzZVN0YXRlbWVudChyP3IuaW5kZXhPZihcImxhYmVsXCIpPT09LTE/citcImxhYmVsXCI6cjpcImxhYmVsXCIpLHRoaXMuc3RhdGUubGFiZWxzLnBvcCgpLHQubGFiZWw9cyx0aGlzLmZpbmlzaE5vZGUodCxcIkxhYmVsZWRTdGF0ZW1lbnRcIil9cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KHQsZSl7cmV0dXJuIHQuZXhwcmVzc2lvbj1lLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKHQsXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpfXBhcnNlQmxvY2soKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06ITEsZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06ITAscz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxyPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHQmJnRoaXMuc3RhdGUuc3RyaWN0RXJyb3JzLmNsZWFyKCksdGhpcy5leHBlY3QoNSksZSYmdGhpcy5zY29wZS5lbnRlcihNZSksdGhpcy5wYXJzZUJsb2NrQm9keShyLHQsITEsOCxzKSxlJiZ0aGlzLnNjb3BlLmV4aXQoKSx0aGlzLmZpbmlzaE5vZGUocixcIkJsb2NrU3RhdGVtZW50XCIpfWlzVmFsaWREaXJlY3RpdmUodCl7cmV0dXJuIHQudHlwZT09PVwiRXhwcmVzc2lvblN0YXRlbWVudFwiJiZ0LmV4cHJlc3Npb24udHlwZT09PVwiU3RyaW5nTGl0ZXJhbFwiJiYhdC5leHByZXNzaW9uLmV4dHJhLnBhcmVudGhlc2l6ZWR9cGFyc2VCbG9ja0JvZHkodCxlLHMscixpKXtsZXQgYT10LmJvZHk9W10sbj10LmRpcmVjdGl2ZXM9W107dGhpcy5wYXJzZUJsb2NrT3JNb2R1bGVCbG9ja0JvZHkoYSxlP246dm9pZCAwLHMscixpKX1wYXJzZUJsb2NrT3JNb2R1bGVCbG9ja0JvZHkodCxlLHMscixpKXtsZXQgYT10aGlzLnN0YXRlLnN0cmljdCxuPSExLG89ITE7Zm9yKDshdGhpcy5tYXRjaChyKTspe2xldCBjPXRoaXMucGFyc2VTdGF0ZW1lbnQobnVsbCxzKTtpZihlJiYhbyl7aWYodGhpcy5pc1ZhbGlkRGlyZWN0aXZlKGMpKXtsZXQgZj10aGlzLnN0bXRUb0RpcmVjdGl2ZShjKTtlLnB1c2goZiksIW4mJmYudmFsdWUudmFsdWU9PT1cInVzZSBzdHJpY3RcIiYmKG49ITAsdGhpcy5zZXRTdHJpY3QoITApKTtjb250aW51ZX1vPSEwLHRoaXMuc3RhdGUuc3RyaWN0RXJyb3JzLmNsZWFyKCl9dC5wdXNoKGMpfWkmJmkuY2FsbCh0aGlzLG4pLGF8fHRoaXMuc2V0U3RyaWN0KCExKSx0aGlzLm5leHQoKX1wYXJzZUZvcih0LGUpe3JldHVybiB0LmluaXQ9ZSx0aGlzLnNlbWljb2xvbighMSksdC50ZXN0PXRoaXMubWF0Y2goMTMpP251bGw6dGhpcy5wYXJzZUV4cHJlc3Npb24oKSx0aGlzLnNlbWljb2xvbighMSksdC51cGRhdGU9dGhpcy5tYXRjaCgxMSk/bnVsbDp0aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuZXhwZWN0KDExKSx0LmJvZHk9dGhpcy53aXRoU21hcnRNaXhUb3BpY0ZvcmJpZGRpbmdDb250ZXh0KCgpPT50aGlzLnBhcnNlU3RhdGVtZW50KFwiZm9yXCIpKSx0aGlzLnNjb3BlLmV4aXQoKSx0aGlzLnN0YXRlLmxhYmVscy5wb3AoKSx0aGlzLmZpbmlzaE5vZGUodCxcIkZvclN0YXRlbWVudFwiKX1wYXJzZUZvckluKHQsZSxzKXtsZXQgcj10aGlzLm1hdGNoKDU4KTtyZXR1cm4gdGhpcy5uZXh0KCkscj9zIT09bnVsbCYmdGhpcy51bmV4cGVjdGVkKHMpOnQuYXdhaXQ9cyE9PW51bGwsZS50eXBlPT09XCJWYXJpYWJsZURlY2xhcmF0aW9uXCImJmUuZGVjbGFyYXRpb25zWzBdLmluaXQhPW51bGwmJighcnx8dGhpcy5zdGF0ZS5zdHJpY3R8fGUua2luZCE9PVwidmFyXCJ8fGUuZGVjbGFyYXRpb25zWzBdLmlkLnR5cGUhPT1cIklkZW50aWZpZXJcIikmJnRoaXMucmFpc2UodS5Gb3JJbk9mTG9vcEluaXRpYWxpemVyLHthdDplLHR5cGU6cj9cIkZvckluU3RhdGVtZW50XCI6XCJGb3JPZlN0YXRlbWVudFwifSksZS50eXBlPT09XCJBc3NpZ25tZW50UGF0dGVyblwiJiZ0aGlzLnJhaXNlKHUuSW52YWxpZExocyx7YXQ6ZSxhbmNlc3Rvcjp7dHlwZTpcIkZvclN0YXRlbWVudFwifX0pLHQubGVmdD1lLHQucmlnaHQ9cj90aGlzLnBhcnNlRXhwcmVzc2lvbigpOnRoaXMucGFyc2VNYXliZUFzc2lnbkFsbG93SW4oKSx0aGlzLmV4cGVjdCgxMSksdC5ib2R5PXRoaXMud2l0aFNtYXJ0TWl4VG9waWNGb3JiaWRkaW5nQ29udGV4dCgoKT0+dGhpcy5wYXJzZVN0YXRlbWVudChcImZvclwiKSksdGhpcy5zY29wZS5leGl0KCksdGhpcy5zdGF0ZS5sYWJlbHMucG9wKCksdGhpcy5maW5pc2hOb2RlKHQscj9cIkZvckluU3RhdGVtZW50XCI6XCJGb3JPZlN0YXRlbWVudFwiKX1wYXJzZVZhcih0LGUscyl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOiExLGk9dC5kZWNsYXJhdGlvbnM9W107Zm9yKHQua2luZD1zOzspe2xldCBhPXRoaXMuc3RhcnROb2RlKCk7aWYodGhpcy5wYXJzZVZhcklkKGEscyksYS5pbml0PXRoaXMuZWF0KDI5KT9lP3RoaXMucGFyc2VNYXliZUFzc2lnbkRpc2FsbG93SW4oKTp0aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKCk6bnVsbCxhLmluaXQ9PT1udWxsJiYhciYmKGEuaWQudHlwZSE9PVwiSWRlbnRpZmllclwiJiYhKGUmJih0aGlzLm1hdGNoKDU4KXx8dGhpcy5pc0NvbnRleHR1YWwoMTAxKSkpP3RoaXMucmFpc2UodS5EZWNsYXJhdGlvbk1pc3NpbmdJbml0aWFsaXplcix7YXQ6dGhpcy5zdGF0ZS5sYXN0VG9rRW5kTG9jLGtpbmQ6XCJkZXN0cnVjdHVyaW5nXCJ9KTpzPT09XCJjb25zdFwiJiYhKHRoaXMubWF0Y2goNTgpfHx0aGlzLmlzQ29udGV4dHVhbCgxMDEpKSYmdGhpcy5yYWlzZSh1LkRlY2xhcmF0aW9uTWlzc2luZ0luaXRpYWxpemVyLHthdDp0aGlzLnN0YXRlLmxhc3RUb2tFbmRMb2Msa2luZDpcImNvbnN0XCJ9KSksaS5wdXNoKHRoaXMuZmluaXNoTm9kZShhLFwiVmFyaWFibGVEZWNsYXJhdG9yXCIpKSwhdGhpcy5lYXQoMTIpKWJyZWFrfXJldHVybiB0fXBhcnNlVmFySWQodCxlKXt0LmlkPXRoaXMucGFyc2VCaW5kaW5nQXRvbSgpLHRoaXMuY2hlY2tMVmFsKHQuaWQse2luOnt0eXBlOlwiVmFyaWFibGVEZWNsYXJhdG9yXCJ9LGJpbmRpbmc6ZT09PVwidmFyXCI/cHQ6eGV9KX1wYXJzZUZ1bmN0aW9uKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpRaCxzPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMSxyPWUmZnMsaT1lJkhyLGE9ISFyJiYhKGUmV3IpO3RoaXMuaW5pdEZ1bmN0aW9uKHQscyksdGhpcy5tYXRjaCg1NSkmJmkmJnRoaXMucmFpc2UodS5HZW5lcmF0b3JJblNpbmdsZVN0YXRlbWVudENvbnRleHQse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KSx0LmdlbmVyYXRvcj10aGlzLmVhdCg1NSksciYmKHQuaWQ9dGhpcy5wYXJzZUZ1bmN0aW9uSWQoYSkpO2xldCBuPXRoaXMuc3RhdGUubWF5YmVJbkFycm93UGFyYW1ldGVycztyZXR1cm4gdGhpcy5zdGF0ZS5tYXliZUluQXJyb3dQYXJhbWV0ZXJzPSExLHRoaXMuc2NvcGUuZW50ZXIobWUpLHRoaXMucHJvZFBhcmFtLmVudGVyKGd0KHMsdC5nZW5lcmF0b3IpKSxyfHwodC5pZD10aGlzLnBhcnNlRnVuY3Rpb25JZCgpKSx0aGlzLnBhcnNlRnVuY3Rpb25QYXJhbXModCwhMSksdGhpcy53aXRoU21hcnRNaXhUb3BpY0ZvcmJpZGRpbmdDb250ZXh0KCgpPT57dGhpcy5wYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaCh0LHI/XCJGdW5jdGlvbkRlY2xhcmF0aW9uXCI6XCJGdW5jdGlvbkV4cHJlc3Npb25cIil9KSx0aGlzLnByb2RQYXJhbS5leGl0KCksdGhpcy5zY29wZS5leGl0KCksciYmIWkmJnRoaXMucmVnaXN0ZXJGdW5jdGlvblN0YXRlbWVudElkKHQpLHRoaXMuc3RhdGUubWF5YmVJbkFycm93UGFyYW1ldGVycz1uLHR9cGFyc2VGdW5jdGlvbklkKHQpe3JldHVybiB0fHxLKHRoaXMuc3RhdGUudHlwZSk/dGhpcy5wYXJzZUlkZW50aWZpZXIoKTpudWxsfXBhcnNlRnVuY3Rpb25QYXJhbXModCxlKXt0aGlzLmV4cGVjdCgxMCksdGhpcy5leHByZXNzaW9uU2NvcGUuZW50ZXIoZ2goKSksdC5wYXJhbXM9dGhpcy5wYXJzZUJpbmRpbmdMaXN0KDExLDQxLCExLGUpLHRoaXMuZXhwcmVzc2lvblNjb3BlLmV4aXQoKX1yZWdpc3RlckZ1bmN0aW9uU3RhdGVtZW50SWQodCl7IXQuaWR8fHRoaXMuc2NvcGUuZGVjbGFyZU5hbWUodC5pZC5uYW1lLHRoaXMuc3RhdGUuc3RyaWN0fHx0LmdlbmVyYXRvcnx8dC5hc3luYz90aGlzLnNjb3BlLnRyZWF0RnVuY3Rpb25zQXNWYXI/cHQ6eGU6VHIsdC5pZC5sb2Muc3RhcnQpfXBhcnNlQ2xhc3ModCxlLHMpe3RoaXMubmV4dCgpLHRoaXMudGFrZURlY29yYXRvcnModCk7bGV0IHI9dGhpcy5zdGF0ZS5zdHJpY3Q7cmV0dXJuIHRoaXMuc3RhdGUuc3RyaWN0PSEwLHRoaXMucGFyc2VDbGFzc0lkKHQsZSxzKSx0aGlzLnBhcnNlQ2xhc3NTdXBlcih0KSx0LmJvZHk9dGhpcy5wYXJzZUNsYXNzQm9keSghIXQuc3VwZXJDbGFzcyxyKSx0aGlzLmZpbmlzaE5vZGUodCxlP1wiQ2xhc3NEZWNsYXJhdGlvblwiOlwiQ2xhc3NFeHByZXNzaW9uXCIpfWlzQ2xhc3NQcm9wZXJ0eSgpe3JldHVybiB0aGlzLm1hdGNoKDI5KXx8dGhpcy5tYXRjaCgxMyl8fHRoaXMubWF0Y2goOCl9aXNDbGFzc01ldGhvZCgpe3JldHVybiB0aGlzLm1hdGNoKDEwKX1pc05vbnN0YXRpY0NvbnN0cnVjdG9yKHQpe3JldHVybiF0LmNvbXB1dGVkJiYhdC5zdGF0aWMmJih0LmtleS5uYW1lPT09XCJjb25zdHJ1Y3RvclwifHx0LmtleS52YWx1ZT09PVwiY29uc3RydWN0b3JcIil9cGFyc2VDbGFzc0JvZHkodCxlKXt0aGlzLmNsYXNzU2NvcGUuZW50ZXIoKTtsZXQgcz17aGFkQ29uc3RydWN0b3I6ITEsaGFkU3VwZXJDbGFzczp0fSxyPVtdLGk9dGhpcy5zdGFydE5vZGUoKTtpZihpLmJvZHk9W10sdGhpcy5leHBlY3QoNSksdGhpcy53aXRoU21hcnRNaXhUb3BpY0ZvcmJpZGRpbmdDb250ZXh0KCgpPT57Zm9yKDshdGhpcy5tYXRjaCg4KTspe2lmKHRoaXMuZWF0KDEzKSl7aWYoci5sZW5ndGg+MCl0aHJvdyB0aGlzLnJhaXNlKHUuRGVjb3JhdG9yU2VtaWNvbG9uLHthdDp0aGlzLnN0YXRlLmxhc3RUb2tFbmRMb2N9KTtjb250aW51ZX1pZih0aGlzLm1hdGNoKDI2KSl7ci5wdXNoKHRoaXMucGFyc2VEZWNvcmF0b3IoKSk7Y29udGludWV9bGV0IGE9dGhpcy5zdGFydE5vZGUoKTtyLmxlbmd0aCYmKGEuZGVjb3JhdG9ycz1yLHRoaXMucmVzZXRTdGFydExvY2F0aW9uRnJvbU5vZGUoYSxyWzBdKSxyPVtdKSx0aGlzLnBhcnNlQ2xhc3NNZW1iZXIoaSxhLHMpLGEua2luZD09PVwiY29uc3RydWN0b3JcIiYmYS5kZWNvcmF0b3JzJiZhLmRlY29yYXRvcnMubGVuZ3RoPjAmJnRoaXMucmFpc2UodS5EZWNvcmF0b3JDb25zdHJ1Y3Rvcix7YXQ6YX0pfX0pLHRoaXMuc3RhdGUuc3RyaWN0PWUsdGhpcy5uZXh0KCksci5sZW5ndGgpdGhyb3cgdGhpcy5yYWlzZSh1LlRyYWlsaW5nRGVjb3JhdG9yLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7cmV0dXJuIHRoaXMuY2xhc3NTY29wZS5leGl0KCksdGhpcy5maW5pc2hOb2RlKGksXCJDbGFzc0JvZHlcIil9cGFyc2VDbGFzc01lbWJlckZyb21Nb2RpZmllcih0LGUpe2xldCBzPXRoaXMucGFyc2VJZGVudGlmaWVyKCEwKTtpZih0aGlzLmlzQ2xhc3NNZXRob2QoKSl7bGV0IHI9ZTtyZXR1cm4gci5raW5kPVwibWV0aG9kXCIsci5jb21wdXRlZD0hMSxyLmtleT1zLHIuc3RhdGljPSExLHRoaXMucHVzaENsYXNzTWV0aG9kKHQsciwhMSwhMSwhMSwhMSksITB9ZWxzZSBpZih0aGlzLmlzQ2xhc3NQcm9wZXJ0eSgpKXtsZXQgcj1lO3JldHVybiByLmNvbXB1dGVkPSExLHIua2V5PXMsci5zdGF0aWM9ITEsdC5ib2R5LnB1c2godGhpcy5wYXJzZUNsYXNzUHJvcGVydHkocikpLCEwfXJldHVybiB0aGlzLnJlc2V0UHJldmlvdXNOb2RlVHJhaWxpbmdDb21tZW50cyhzKSwhMX1wYXJzZUNsYXNzTWVtYmVyKHQsZSxzKXtsZXQgcj10aGlzLmlzQ29udGV4dHVhbCgxMDQpO2lmKHIpe2lmKHRoaXMucGFyc2VDbGFzc01lbWJlckZyb21Nb2RpZmllcih0LGUpKXJldHVybjtpZih0aGlzLmVhdCg1KSl7dGhpcy5wYXJzZUNsYXNzU3RhdGljQmxvY2sodCxlKTtyZXR1cm59fXRoaXMucGFyc2VDbGFzc01lbWJlcldpdGhJc1N0YXRpYyh0LGUscyxyKX1wYXJzZUNsYXNzTWVtYmVyV2l0aElzU3RhdGljKHQsZSxzLHIpe2xldCBpPWUsYT1lLG49ZSxvPWUsYz1lLGY9aSx5PWk7aWYoZS5zdGF0aWM9cix0aGlzLnBhcnNlUHJvcGVydHlOYW1lUHJlZml4T3BlcmF0b3IoZSksdGhpcy5lYXQoNTUpKXtmLmtpbmQ9XCJtZXRob2RcIjtsZXQgXz10aGlzLm1hdGNoKDEzNCk7aWYodGhpcy5wYXJzZUNsYXNzRWxlbWVudE5hbWUoZiksXyl7dGhpcy5wdXNoQ2xhc3NQcml2YXRlTWV0aG9kKHQsYSwhMCwhMSk7cmV0dXJufXRoaXMuaXNOb25zdGF0aWNDb25zdHJ1Y3RvcihpKSYmdGhpcy5yYWlzZSh1LkNvbnN0cnVjdG9ySXNHZW5lcmF0b3Ise2F0Omkua2V5fSksdGhpcy5wdXNoQ2xhc3NNZXRob2QodCxpLCEwLCExLCExLCExKTtyZXR1cm59bGV0IFA9Syh0aGlzLnN0YXRlLnR5cGUpJiYhdGhpcy5zdGF0ZS5jb250YWluc0VzYyx2PXRoaXMubWF0Y2goMTM0KSxOPXRoaXMucGFyc2VDbGFzc0VsZW1lbnROYW1lKGUpLEI9dGhpcy5zdGF0ZS5zdGFydExvYztpZih0aGlzLnBhcnNlUG9zdE1lbWJlck5hbWVNb2RpZmllcnMoeSksdGhpcy5pc0NsYXNzTWV0aG9kKCkpe2lmKGYua2luZD1cIm1ldGhvZFwiLHYpe3RoaXMucHVzaENsYXNzUHJpdmF0ZU1ldGhvZCh0LGEsITEsITEpO3JldHVybn1sZXQgXz10aGlzLmlzTm9uc3RhdGljQ29uc3RydWN0b3IoaSksUT0hMTtfJiYoaS5raW5kPVwiY29uc3RydWN0b3JcIixzLmhhZENvbnN0cnVjdG9yJiYhdGhpcy5oYXNQbHVnaW4oXCJ0eXBlc2NyaXB0XCIpJiZ0aGlzLnJhaXNlKHUuRHVwbGljYXRlQ29uc3RydWN0b3Ise2F0Ok59KSxfJiZ0aGlzLmhhc1BsdWdpbihcInR5cGVzY3JpcHRcIikmJmUub3ZlcnJpZGUmJnRoaXMucmFpc2UodS5PdmVycmlkZU9uQ29uc3RydWN0b3Ise2F0Ok59KSxzLmhhZENvbnN0cnVjdG9yPSEwLFE9cy5oYWRTdXBlckNsYXNzKSx0aGlzLnB1c2hDbGFzc01ldGhvZCh0LGksITEsITEsXyxRKX1lbHNlIGlmKHRoaXMuaXNDbGFzc1Byb3BlcnR5KCkpdj90aGlzLnB1c2hDbGFzc1ByaXZhdGVQcm9wZXJ0eSh0LG8pOnRoaXMucHVzaENsYXNzUHJvcGVydHkodCxuKTtlbHNlIGlmKFAmJk4ubmFtZT09PVwiYXN5bmNcIiYmIXRoaXMuaXNMaW5lVGVybWluYXRvcigpKXt0aGlzLnJlc2V0UHJldmlvdXNOb2RlVHJhaWxpbmdDb21tZW50cyhOKTtsZXQgXz10aGlzLmVhdCg1NSk7eS5vcHRpb25hbCYmdGhpcy51bmV4cGVjdGVkKEIpLGYua2luZD1cIm1ldGhvZFwiO2xldCBRPXRoaXMubWF0Y2goMTM0KTt0aGlzLnBhcnNlQ2xhc3NFbGVtZW50TmFtZShmKSx0aGlzLnBhcnNlUG9zdE1lbWJlck5hbWVNb2RpZmllcnMoeSksUT90aGlzLnB1c2hDbGFzc1ByaXZhdGVNZXRob2QodCxhLF8sITApOih0aGlzLmlzTm9uc3RhdGljQ29uc3RydWN0b3IoaSkmJnRoaXMucmFpc2UodS5Db25zdHJ1Y3RvcklzQXN5bmMse2F0Omkua2V5fSksdGhpcy5wdXNoQ2xhc3NNZXRob2QodCxpLF8sITAsITEsITEpKX1lbHNlIGlmKFAmJihOLm5hbWU9PT1cImdldFwifHxOLm5hbWU9PT1cInNldFwiKSYmISh0aGlzLm1hdGNoKDU1KSYmdGhpcy5pc0xpbmVUZXJtaW5hdG9yKCkpKXt0aGlzLnJlc2V0UHJldmlvdXNOb2RlVHJhaWxpbmdDb21tZW50cyhOKSxmLmtpbmQ9Ti5uYW1lO2xldCBfPXRoaXMubWF0Y2goMTM0KTt0aGlzLnBhcnNlQ2xhc3NFbGVtZW50TmFtZShpKSxfP3RoaXMucHVzaENsYXNzUHJpdmF0ZU1ldGhvZCh0LGEsITEsITEpOih0aGlzLmlzTm9uc3RhdGljQ29uc3RydWN0b3IoaSkmJnRoaXMucmFpc2UodS5Db25zdHJ1Y3RvcklzQWNjZXNzb3Ise2F0Omkua2V5fSksdGhpcy5wdXNoQ2xhc3NNZXRob2QodCxpLCExLCExLCExLCExKSksdGhpcy5jaGVja0dldHRlclNldHRlclBhcmFtcyhpKX1lbHNlIGlmKFAmJk4ubmFtZT09PVwiYWNjZXNzb3JcIiYmIXRoaXMuaXNMaW5lVGVybWluYXRvcigpKXt0aGlzLmV4cGVjdFBsdWdpbihcImRlY29yYXRvckF1dG9BY2Nlc3NvcnNcIiksdGhpcy5yZXNldFByZXZpb3VzTm9kZVRyYWlsaW5nQ29tbWVudHMoTik7bGV0IF89dGhpcy5tYXRjaCgxMzQpO3RoaXMucGFyc2VDbGFzc0VsZW1lbnROYW1lKG4pLHRoaXMucHVzaENsYXNzQWNjZXNzb3JQcm9wZXJ0eSh0LGMsXyl9ZWxzZSB0aGlzLmlzTGluZVRlcm1pbmF0b3IoKT92P3RoaXMucHVzaENsYXNzUHJpdmF0ZVByb3BlcnR5KHQsbyk6dGhpcy5wdXNoQ2xhc3NQcm9wZXJ0eSh0LG4pOnRoaXMudW5leHBlY3RlZCgpfXBhcnNlQ2xhc3NFbGVtZW50TmFtZSh0KXtsZXR7dHlwZTplLHZhbHVlOnN9PXRoaXMuc3RhdGU7aWYoKGU9PT0xMjh8fGU9PT0xMjkpJiZ0LnN0YXRpYyYmcz09PVwicHJvdG90eXBlXCImJnRoaXMucmFpc2UodS5TdGF0aWNQcm90b3R5cGUse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KSxlPT09MTM0KXtzPT09XCJjb25zdHJ1Y3RvclwiJiZ0aGlzLnJhaXNlKHUuQ29uc3RydWN0b3JDbGFzc1ByaXZhdGVGaWVsZCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pO2xldCByPXRoaXMucGFyc2VQcml2YXRlTmFtZSgpO3JldHVybiB0LmtleT1yLHJ9cmV0dXJuIHRoaXMucGFyc2VQcm9wZXJ0eU5hbWUodCl9cGFyc2VDbGFzc1N0YXRpY0Jsb2NrKHQsZSl7dmFyIHM7dGhpcy5zY29wZS5lbnRlcihTZXxZdHxvdCk7bGV0IHI9dGhpcy5zdGF0ZS5sYWJlbHM7dGhpcy5zdGF0ZS5sYWJlbHM9W10sdGhpcy5wcm9kUGFyYW0uZW50ZXIoamUpO2xldCBpPWUuYm9keT1bXTt0aGlzLnBhcnNlQmxvY2tPck1vZHVsZUJsb2NrQm9keShpLHZvaWQgMCwhMSw4KSx0aGlzLnByb2RQYXJhbS5leGl0KCksdGhpcy5zY29wZS5leGl0KCksdGhpcy5zdGF0ZS5sYWJlbHM9cix0LmJvZHkucHVzaCh0aGlzLmZpbmlzaE5vZGUoZSxcIlN0YXRpY0Jsb2NrXCIpKSwocz1lLmRlY29yYXRvcnMpIT1udWxsJiZzLmxlbmd0aCYmdGhpcy5yYWlzZSh1LkRlY29yYXRvclN0YXRpY0Jsb2NrLHthdDplfSl9cHVzaENsYXNzUHJvcGVydHkodCxlKXshZS5jb21wdXRlZCYmKGUua2V5Lm5hbWU9PT1cImNvbnN0cnVjdG9yXCJ8fGUua2V5LnZhbHVlPT09XCJjb25zdHJ1Y3RvclwiKSYmdGhpcy5yYWlzZSh1LkNvbnN0cnVjdG9yQ2xhc3NGaWVsZCx7YXQ6ZS5rZXl9KSx0LmJvZHkucHVzaCh0aGlzLnBhcnNlQ2xhc3NQcm9wZXJ0eShlKSl9cHVzaENsYXNzUHJpdmF0ZVByb3BlcnR5KHQsZSl7bGV0IHM9dGhpcy5wYXJzZUNsYXNzUHJpdmF0ZVByb3BlcnR5KGUpO3QuYm9keS5wdXNoKHMpLHRoaXMuY2xhc3NTY29wZS5kZWNsYXJlUHJpdmF0ZU5hbWUodGhpcy5nZXRQcml2YXRlTmFtZVNWKHMua2V5KSxpcyxzLmtleS5sb2Muc3RhcnQpfXB1c2hDbGFzc0FjY2Vzc29yUHJvcGVydHkodCxlLHMpe2lmKCFzJiYhZS5jb21wdXRlZCl7bGV0IGk9ZS5rZXk7KGkubmFtZT09PVwiY29uc3RydWN0b3JcInx8aS52YWx1ZT09PVwiY29uc3RydWN0b3JcIikmJnRoaXMucmFpc2UodS5Db25zdHJ1Y3RvckNsYXNzRmllbGQse2F0Oml9KX1sZXQgcj10aGlzLnBhcnNlQ2xhc3NBY2Nlc3NvclByb3BlcnR5KGUpO3QuYm9keS5wdXNoKHIpLHMmJnRoaXMuY2xhc3NTY29wZS5kZWNsYXJlUHJpdmF0ZU5hbWUodGhpcy5nZXRQcml2YXRlTmFtZVNWKHIua2V5KSxpcyxyLmtleS5sb2Muc3RhcnQpfXB1c2hDbGFzc01ldGhvZCh0LGUscyxyLGksYSl7dC5ib2R5LnB1c2godGhpcy5wYXJzZU1ldGhvZChlLHMscixpLGEsXCJDbGFzc01ldGhvZFwiLCEwKSl9cHVzaENsYXNzUHJpdmF0ZU1ldGhvZCh0LGUscyxyKXtsZXQgaT10aGlzLnBhcnNlTWV0aG9kKGUscyxyLCExLCExLFwiQ2xhc3NQcml2YXRlTWV0aG9kXCIsITApO3QuYm9keS5wdXNoKGkpO2xldCBhPWkua2luZD09PVwiZ2V0XCI/aS5zdGF0aWM/UW86ZWg6aS5raW5kPT09XCJzZXRcIj9pLnN0YXRpYz9abzp0aDppczt0aGlzLmRlY2xhcmVDbGFzc1ByaXZhdGVNZXRob2RJblNjb3BlKGksYSl9ZGVjbGFyZUNsYXNzUHJpdmF0ZU1ldGhvZEluU2NvcGUodCxlKXt0aGlzLmNsYXNzU2NvcGUuZGVjbGFyZVByaXZhdGVOYW1lKHRoaXMuZ2V0UHJpdmF0ZU5hbWVTVih0LmtleSksZSx0LmtleS5sb2Muc3RhcnQpfXBhcnNlUG9zdE1lbWJlck5hbWVNb2RpZmllcnModCl7fXBhcnNlQ2xhc3NQcml2YXRlUHJvcGVydHkodCl7cmV0dXJuIHRoaXMucGFyc2VJbml0aWFsaXplcih0KSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZSh0LFwiQ2xhc3NQcml2YXRlUHJvcGVydHlcIil9cGFyc2VDbGFzc1Byb3BlcnR5KHQpe3JldHVybiB0aGlzLnBhcnNlSW5pdGlhbGl6ZXIodCksdGhpcy5zZW1pY29sb24oKSx0aGlzLmZpbmlzaE5vZGUodCxcIkNsYXNzUHJvcGVydHlcIil9cGFyc2VDbGFzc0FjY2Vzc29yUHJvcGVydHkodCl7cmV0dXJuIHRoaXMucGFyc2VJbml0aWFsaXplcih0KSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZSh0LFwiQ2xhc3NBY2Nlc3NvclByb3BlcnR5XCIpfXBhcnNlSW5pdGlhbGl6ZXIodCl7dGhpcy5zY29wZS5lbnRlcihTZXxvdCksdGhpcy5leHByZXNzaW9uU2NvcGUuZW50ZXIoRHIoKSksdGhpcy5wcm9kUGFyYW0uZW50ZXIoamUpLHQudmFsdWU9dGhpcy5lYXQoMjkpP3RoaXMucGFyc2VNYXliZUFzc2lnbkFsbG93SW4oKTpudWxsLHRoaXMuZXhwcmVzc2lvblNjb3BlLmV4aXQoKSx0aGlzLnByb2RQYXJhbS5leGl0KCksdGhpcy5zY29wZS5leGl0KCl9cGFyc2VDbGFzc0lkKHQsZSxzKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106UHI7aWYoSyh0aGlzLnN0YXRlLnR5cGUpKXQuaWQ9dGhpcy5wYXJzZUlkZW50aWZpZXIoKSxlJiZ0aGlzLmRlY2xhcmVOYW1lRnJvbUlkZW50aWZpZXIodC5pZCxyKTtlbHNlIGlmKHN8fCFlKXQuaWQ9bnVsbDtlbHNlIHRocm93IHRoaXMucmFpc2UodS5NaXNzaW5nQ2xhc3NOYW1lLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSl9cGFyc2VDbGFzc1N1cGVyKHQpe3Quc3VwZXJDbGFzcz10aGlzLmVhdCg4MSk/dGhpcy5wYXJzZUV4cHJTdWJzY3JpcHRzKCk6bnVsbH1wYXJzZUV4cG9ydCh0KXtsZXQgZT10aGlzLm1heWJlUGFyc2VFeHBvcnREZWZhdWx0U3BlY2lmaWVyKHQpLHM9IWV8fHRoaXMuZWF0KDEyKSxyPXMmJnRoaXMuZWF0RXhwb3J0U3Rhcih0KSxpPXImJnRoaXMubWF5YmVQYXJzZUV4cG9ydE5hbWVzcGFjZVNwZWNpZmllcih0KSxhPXMmJighaXx8dGhpcy5lYXQoMTIpKSxuPWV8fHI7aWYociYmIWkpcmV0dXJuIGUmJnRoaXMudW5leHBlY3RlZCgpLHRoaXMucGFyc2VFeHBvcnRGcm9tKHQsITApLHRoaXMuZmluaXNoTm9kZSh0LFwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIik7bGV0IG89dGhpcy5tYXliZVBhcnNlRXhwb3J0TmFtZWRTcGVjaWZpZXJzKHQpO2lmKGUmJnMmJiFyJiYhb3x8aSYmYSYmIW8pdGhyb3cgdGhpcy51bmV4cGVjdGVkKG51bGwsNSk7bGV0IGM7aWYobnx8bz8oYz0hMSx0aGlzLnBhcnNlRXhwb3J0RnJvbSh0LG4pKTpjPXRoaXMubWF5YmVQYXJzZUV4cG9ydERlY2xhcmF0aW9uKHQpLG58fG98fGMpcmV0dXJuIHRoaXMuY2hlY2tFeHBvcnQodCwhMCwhMSwhIXQuc291cmNlKSx0aGlzLmZpbmlzaE5vZGUodCxcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIik7aWYodGhpcy5lYXQoNjUpKXJldHVybiB0LmRlY2xhcmF0aW9uPXRoaXMucGFyc2VFeHBvcnREZWZhdWx0RXhwcmVzc2lvbigpLHRoaXMuY2hlY2tFeHBvcnQodCwhMCwhMCksdGhpcy5maW5pc2hOb2RlKHQsXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIik7dGhyb3cgdGhpcy51bmV4cGVjdGVkKG51bGwsNSl9ZWF0RXhwb3J0U3Rhcih0KXtyZXR1cm4gdGhpcy5lYXQoNTUpfW1heWJlUGFyc2VFeHBvcnREZWZhdWx0U3BlY2lmaWVyKHQpe2lmKHRoaXMuaXNFeHBvcnREZWZhdWx0U3BlY2lmaWVyKCkpe3RoaXMuZXhwZWN0UGx1Z2luKFwiZXhwb3J0RGVmYXVsdEZyb21cIik7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gZS5leHBvcnRlZD10aGlzLnBhcnNlSWRlbnRpZmllcighMCksdC5zcGVjaWZpZXJzPVt0aGlzLmZpbmlzaE5vZGUoZSxcIkV4cG9ydERlZmF1bHRTcGVjaWZpZXJcIildLCEwfXJldHVybiExfW1heWJlUGFyc2VFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXIodCl7aWYodGhpcy5pc0NvbnRleHR1YWwoOTMpKXt0LnNwZWNpZmllcnN8fCh0LnNwZWNpZmllcnM9W10pO2xldCBlPXRoaXMuc3RhcnROb2RlQXQodGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnQsdGhpcy5zdGF0ZS5sYXN0VG9rU3RhcnRMb2MpO3JldHVybiB0aGlzLm5leHQoKSxlLmV4cG9ydGVkPXRoaXMucGFyc2VNb2R1bGVFeHBvcnROYW1lKCksdC5zcGVjaWZpZXJzLnB1c2godGhpcy5maW5pc2hOb2RlKGUsXCJFeHBvcnROYW1lc3BhY2VTcGVjaWZpZXJcIikpLCEwfXJldHVybiExfW1heWJlUGFyc2VFeHBvcnROYW1lZFNwZWNpZmllcnModCl7aWYodGhpcy5tYXRjaCg1KSl7dC5zcGVjaWZpZXJzfHwodC5zcGVjaWZpZXJzPVtdKTtsZXQgZT10LmV4cG9ydEtpbmQ9PT1cInR5cGVcIjtyZXR1cm4gdC5zcGVjaWZpZXJzLnB1c2goLi4udGhpcy5wYXJzZUV4cG9ydFNwZWNpZmllcnMoZSkpLHQuc291cmNlPW51bGwsdC5kZWNsYXJhdGlvbj1udWxsLHRoaXMuaGFzUGx1Z2luKFwiaW1wb3J0QXNzZXJ0aW9uc1wiKSYmKHQuYXNzZXJ0aW9ucz1bXSksITB9cmV0dXJuITF9bWF5YmVQYXJzZUV4cG9ydERlY2xhcmF0aW9uKHQpe3JldHVybiB0aGlzLnNob3VsZFBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKT8odC5zcGVjaWZpZXJzPVtdLHQuc291cmNlPW51bGwsdGhpcy5oYXNQbHVnaW4oXCJpbXBvcnRBc3NlcnRpb25zXCIpJiYodC5hc3NlcnRpb25zPVtdKSx0LmRlY2xhcmF0aW9uPXRoaXMucGFyc2VFeHBvcnREZWNsYXJhdGlvbih0KSwhMCk6ITF9aXNBc3luY0Z1bmN0aW9uKCl7aWYoIXRoaXMuaXNDb250ZXh0dWFsKDk1KSlyZXR1cm4hMTtsZXQgdD10aGlzLm5leHRUb2tlblN0YXJ0KCk7cmV0dXJuIWFzLnRlc3QodGhpcy5pbnB1dC5zbGljZSh0aGlzLnN0YXRlLnBvcyx0KSkmJnRoaXMuaXNVbnBhcnNlZENvbnRleHR1YWwodCxcImZ1bmN0aW9uXCIpfXBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24oKXtsZXQgdD10aGlzLnN0YXJ0Tm9kZSgpLGU9dGhpcy5pc0FzeW5jRnVuY3Rpb24oKTtpZih0aGlzLm1hdGNoKDY4KXx8ZSlyZXR1cm4gdGhpcy5uZXh0KCksZSYmdGhpcy5uZXh0KCksdGhpcy5wYXJzZUZ1bmN0aW9uKHQsZnN8V3IsZSk7aWYodGhpcy5tYXRjaCg4MCkpcmV0dXJuIHRoaXMucGFyc2VDbGFzcyh0LCEwLCEwKTtpZih0aGlzLm1hdGNoKDI2KSlyZXR1cm4gdGhpcy5oYXNQbHVnaW4oXCJkZWNvcmF0b3JzXCIpJiZ0aGlzLmdldFBsdWdpbk9wdGlvbihcImRlY29yYXRvcnNcIixcImRlY29yYXRvcnNCZWZvcmVFeHBvcnRcIikmJnRoaXMucmFpc2UodS5EZWNvcmF0b3JCZWZvcmVFeHBvcnQse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KSx0aGlzLnBhcnNlRGVjb3JhdG9ycyghMSksdGhpcy5wYXJzZUNsYXNzKHQsITAsITApO2lmKHRoaXMubWF0Y2goNzUpfHx0aGlzLm1hdGNoKDc0KXx8dGhpcy5pc0xldCgpKXRocm93IHRoaXMucmFpc2UodS5VbnN1cHBvcnRlZERlZmF1bHRFeHBvcnQse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtsZXQgcz10aGlzLnBhcnNlTWF5YmVBc3NpZ25BbGxvd0luKCk7cmV0dXJuIHRoaXMuc2VtaWNvbG9uKCksc31wYXJzZUV4cG9ydERlY2xhcmF0aW9uKHQpe3JldHVybiB0aGlzLnBhcnNlU3RhdGVtZW50KG51bGwpfWlzRXhwb3J0RGVmYXVsdFNwZWNpZmllcigpe2xldHt0eXBlOnR9PXRoaXMuc3RhdGU7aWYoSyh0KSl7aWYodD09PTk1JiYhdGhpcy5zdGF0ZS5jb250YWluc0VzY3x8dD09PTk5KXJldHVybiExO2lmKCh0PT09MTI2fHx0PT09MTI1KSYmIXRoaXMuc3RhdGUuY29udGFpbnNFc2Mpe2xldHt0eXBlOnJ9PXRoaXMubG9va2FoZWFkKCk7aWYoSyhyKSYmciE9PTk3fHxyPT09NSlyZXR1cm4gdGhpcy5leHBlY3RPbmVQbHVnaW4oW1wiZmxvd1wiLFwidHlwZXNjcmlwdFwiXSksITF9fWVsc2UgaWYoIXRoaXMubWF0Y2goNjUpKXJldHVybiExO2xldCBlPXRoaXMubmV4dFRva2VuU3RhcnQoKSxzPXRoaXMuaXNVbnBhcnNlZENvbnRleHR1YWwoZSxcImZyb21cIik7aWYodGhpcy5pbnB1dC5jaGFyQ29kZUF0KGUpPT09NDR8fEsodGhpcy5zdGF0ZS50eXBlKSYmcylyZXR1cm4hMDtpZih0aGlzLm1hdGNoKDY1KSYmcyl7bGV0IHI9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMubmV4dFRva2VuU3RhcnRTaW5jZShlKzQpKTtyZXR1cm4gcj09PTM0fHxyPT09Mzl9cmV0dXJuITF9cGFyc2VFeHBvcnRGcm9tKHQsZSl7aWYodGhpcy5lYXRDb250ZXh0dWFsKDk3KSl7dC5zb3VyY2U9dGhpcy5wYXJzZUltcG9ydFNvdXJjZSgpLHRoaXMuY2hlY2tFeHBvcnQodCk7bGV0IHM9dGhpcy5tYXliZVBhcnNlSW1wb3J0QXNzZXJ0aW9ucygpO3MmJih0LmFzc2VydGlvbnM9cyl9ZWxzZSBlJiZ0aGlzLnVuZXhwZWN0ZWQoKTt0aGlzLnNlbWljb2xvbigpfXNob3VsZFBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKXtsZXR7dHlwZTp0fT10aGlzLnN0YXRlO2lmKHQ9PT0yNiYmKHRoaXMuZXhwZWN0T25lUGx1Z2luKFtcImRlY29yYXRvcnNcIixcImRlY29yYXRvcnMtbGVnYWN5XCJdKSx0aGlzLmhhc1BsdWdpbihcImRlY29yYXRvcnNcIikpKXtpZih0aGlzLmdldFBsdWdpbk9wdGlvbihcImRlY29yYXRvcnNcIixcImRlY29yYXRvcnNCZWZvcmVFeHBvcnRcIikpdGhyb3cgdGhpcy5yYWlzZSh1LkRlY29yYXRvckJlZm9yZUV4cG9ydCx7YXQ6dGhpcy5zdGF0ZS5zdGFydExvY30pO3JldHVybiEwfXJldHVybiB0PT09NzR8fHQ9PT03NXx8dD09PTY4fHx0PT09ODB8fHRoaXMuaXNMZXQoKXx8dGhpcy5pc0FzeW5jRnVuY3Rpb24oKX1jaGVja0V4cG9ydCh0LGUscyxyKXtpZihlKXtpZihzKXtpZih0aGlzLmNoZWNrRHVwbGljYXRlRXhwb3J0cyh0LFwiZGVmYXVsdFwiKSx0aGlzLmhhc1BsdWdpbihcImV4cG9ydERlZmF1bHRGcm9tXCIpKXt2YXIgaTtsZXQgbj10LmRlY2xhcmF0aW9uO24udHlwZT09PVwiSWRlbnRpZmllclwiJiZuLm5hbWU9PT1cImZyb21cIiYmbi5lbmQtbi5zdGFydD09PTQmJiEoKGk9bi5leHRyYSkhPW51bGwmJmkucGFyZW50aGVzaXplZCkmJnRoaXMucmFpc2UodS5FeHBvcnREZWZhdWx0RnJvbUFzSWRlbnRpZmllcix7YXQ6bn0pfX1lbHNlIGlmKHQuc3BlY2lmaWVycyYmdC5zcGVjaWZpZXJzLmxlbmd0aClmb3IobGV0IG4gb2YgdC5zcGVjaWZpZXJzKXtsZXR7ZXhwb3J0ZWQ6b309bixjPW8udHlwZT09PVwiSWRlbnRpZmllclwiP28ubmFtZTpvLnZhbHVlO2lmKHRoaXMuY2hlY2tEdXBsaWNhdGVFeHBvcnRzKG4sYyksIXImJm4ubG9jYWwpe2xldHtsb2NhbDpmfT1uO2YudHlwZSE9PVwiSWRlbnRpZmllclwiP3RoaXMucmFpc2UodS5FeHBvcnRCaW5kaW5nSXNTdHJpbmcse2F0Om4sbG9jYWxOYW1lOmYudmFsdWUsZXhwb3J0TmFtZTpjfSk6KHRoaXMuY2hlY2tSZXNlcnZlZFdvcmQoZi5uYW1lLGYubG9jLnN0YXJ0LCEwLCExKSx0aGlzLnNjb3BlLmNoZWNrTG9jYWxFeHBvcnQoZikpfX1lbHNlIGlmKHQuZGVjbGFyYXRpb24pe2lmKHQuZGVjbGFyYXRpb24udHlwZT09PVwiRnVuY3Rpb25EZWNsYXJhdGlvblwifHx0LmRlY2xhcmF0aW9uLnR5cGU9PT1cIkNsYXNzRGVjbGFyYXRpb25cIil7bGV0IG49dC5kZWNsYXJhdGlvbi5pZDtpZighbil0aHJvdyBuZXcgRXJyb3IoXCJBc3NlcnRpb24gZmFpbHVyZVwiKTt0aGlzLmNoZWNrRHVwbGljYXRlRXhwb3J0cyh0LG4ubmFtZSl9ZWxzZSBpZih0LmRlY2xhcmF0aW9uLnR5cGU9PT1cIlZhcmlhYmxlRGVjbGFyYXRpb25cIilmb3IobGV0IG4gb2YgdC5kZWNsYXJhdGlvbi5kZWNsYXJhdGlvbnMpdGhpcy5jaGVja0RlY2xhcmF0aW9uKG4uaWQpfX1pZih0aGlzLnN0YXRlLmRlY29yYXRvclN0YWNrW3RoaXMuc3RhdGUuZGVjb3JhdG9yU3RhY2subGVuZ3RoLTFdLmxlbmd0aCl0aHJvdyB0aGlzLnJhaXNlKHUuVW5zdXBwb3J0ZWREZWNvcmF0b3JFeHBvcnQse2F0OnR9KX1jaGVja0RlY2xhcmF0aW9uKHQpe2lmKHQudHlwZT09PVwiSWRlbnRpZmllclwiKXRoaXMuY2hlY2tEdXBsaWNhdGVFeHBvcnRzKHQsdC5uYW1lKTtlbHNlIGlmKHQudHlwZT09PVwiT2JqZWN0UGF0dGVyblwiKWZvcihsZXQgZSBvZiB0LnByb3BlcnRpZXMpdGhpcy5jaGVja0RlY2xhcmF0aW9uKGUpO2Vsc2UgaWYodC50eXBlPT09XCJBcnJheVBhdHRlcm5cIilmb3IobGV0IGUgb2YgdC5lbGVtZW50cyllJiZ0aGlzLmNoZWNrRGVjbGFyYXRpb24oZSk7ZWxzZSB0LnR5cGU9PT1cIk9iamVjdFByb3BlcnR5XCI/dGhpcy5jaGVja0RlY2xhcmF0aW9uKHQudmFsdWUpOnQudHlwZT09PVwiUmVzdEVsZW1lbnRcIj90aGlzLmNoZWNrRGVjbGFyYXRpb24odC5hcmd1bWVudCk6dC50eXBlPT09XCJBc3NpZ25tZW50UGF0dGVyblwiJiZ0aGlzLmNoZWNrRGVjbGFyYXRpb24odC5sZWZ0KX1jaGVja0R1cGxpY2F0ZUV4cG9ydHModCxlKXt0aGlzLmV4cG9ydGVkSWRlbnRpZmllcnMuaGFzKGUpJiYoZT09PVwiZGVmYXVsdFwiP3RoaXMucmFpc2UodS5EdXBsaWNhdGVEZWZhdWx0RXhwb3J0LHthdDp0fSk6dGhpcy5yYWlzZSh1LkR1cGxpY2F0ZUV4cG9ydCx7YXQ6dCxleHBvcnROYW1lOmV9KSksdGhpcy5leHBvcnRlZElkZW50aWZpZXJzLmFkZChlKX1wYXJzZUV4cG9ydFNwZWNpZmllcnModCl7bGV0IGU9W10scz0hMDtmb3IodGhpcy5leHBlY3QoNSk7IXRoaXMuZWF0KDgpOyl7aWYocylzPSExO2Vsc2UgaWYodGhpcy5leHBlY3QoMTIpLHRoaXMuZWF0KDgpKWJyZWFrO2xldCByPXRoaXMuaXNDb250ZXh0dWFsKDEyNiksaT10aGlzLm1hdGNoKDEyOSksYT10aGlzLnN0YXJ0Tm9kZSgpO2EubG9jYWw9dGhpcy5wYXJzZU1vZHVsZUV4cG9ydE5hbWUoKSxlLnB1c2godGhpcy5wYXJzZUV4cG9ydFNwZWNpZmllcihhLGksdCxyKSl9cmV0dXJuIGV9cGFyc2VFeHBvcnRTcGVjaWZpZXIodCxlLHMscil7cmV0dXJuIHRoaXMuZWF0Q29udGV4dHVhbCg5Myk/dC5leHBvcnRlZD10aGlzLnBhcnNlTW9kdWxlRXhwb3J0TmFtZSgpOmU/dC5leHBvcnRlZD1iaCh0LmxvY2FsKTp0LmV4cG9ydGVkfHwodC5leHBvcnRlZD1nZSh0LmxvY2FsKSksdGhpcy5maW5pc2hOb2RlKHQsXCJFeHBvcnRTcGVjaWZpZXJcIil9cGFyc2VNb2R1bGVFeHBvcnROYW1lKCl7aWYodGhpcy5tYXRjaCgxMjkpKXtsZXQgdD10aGlzLnBhcnNlU3RyaW5nTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlKSxlPXQudmFsdWUubWF0Y2goWmgpO3JldHVybiBlJiZ0aGlzLnJhaXNlKHUuTW9kdWxlRXhwb3J0TmFtZUhhc0xvbmVTdXJyb2dhdGUse2F0OnQsc3Vycm9nYXRlQ2hhckNvZGU6ZVswXS5jaGFyQ29kZUF0KDApfSksdH1yZXR1cm4gdGhpcy5wYXJzZUlkZW50aWZpZXIoITApfXBhcnNlSW1wb3J0KHQpe2lmKHQuc3BlY2lmaWVycz1bXSwhdGhpcy5tYXRjaCgxMjkpKXtsZXQgcj0hdGhpcy5tYXliZVBhcnNlRGVmYXVsdEltcG9ydFNwZWNpZmllcih0KXx8dGhpcy5lYXQoMTIpLGk9ciYmdGhpcy5tYXliZVBhcnNlU3RhckltcG9ydFNwZWNpZmllcih0KTtyJiYhaSYmdGhpcy5wYXJzZU5hbWVkSW1wb3J0U3BlY2lmaWVycyh0KSx0aGlzLmV4cGVjdENvbnRleHR1YWwoOTcpfXQuc291cmNlPXRoaXMucGFyc2VJbXBvcnRTb3VyY2UoKTtsZXQgZT10aGlzLm1heWJlUGFyc2VJbXBvcnRBc3NlcnRpb25zKCk7aWYoZSl0LmFzc2VydGlvbnM9ZTtlbHNle2xldCBzPXRoaXMubWF5YmVQYXJzZU1vZHVsZUF0dHJpYnV0ZXMoKTtzJiYodC5hdHRyaWJ1dGVzPXMpfXJldHVybiB0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZSh0LFwiSW1wb3J0RGVjbGFyYXRpb25cIil9cGFyc2VJbXBvcnRTb3VyY2UoKXtyZXR1cm4gdGhpcy5tYXRjaCgxMjkpfHx0aGlzLnVuZXhwZWN0ZWQoKSx0aGlzLnBhcnNlRXhwckF0b20oKX1zaG91bGRQYXJzZURlZmF1bHRJbXBvcnQodCl7cmV0dXJuIEsodGhpcy5zdGF0ZS50eXBlKX1wYXJzZUltcG9ydFNwZWNpZmllckxvY2FsKHQsZSxzKXtlLmxvY2FsPXRoaXMucGFyc2VJZGVudGlmaWVyKCksdC5zcGVjaWZpZXJzLnB1c2godGhpcy5maW5pc2hJbXBvcnRTcGVjaWZpZXIoZSxzKSl9ZmluaXNoSW1wb3J0U3BlY2lmaWVyKHQsZSl7cmV0dXJuIHRoaXMuY2hlY2tMVmFsKHQubG9jYWwse2luOnQsYmluZGluZzp4ZX0pLHRoaXMuZmluaXNoTm9kZSh0LGUpfXBhcnNlQXNzZXJ0RW50cmllcygpe2xldCB0PVtdLGU9bmV3IFNldDtkb3tpZih0aGlzLm1hdGNoKDgpKWJyZWFrO2xldCBzPXRoaXMuc3RhcnROb2RlKCkscj10aGlzLnN0YXRlLnZhbHVlO2lmKGUuaGFzKHIpJiZ0aGlzLnJhaXNlKHUuTW9kdWxlQXR0cmlidXRlc1dpdGhEdXBsaWNhdGVLZXlzLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jLGtleTpyfSksZS5hZGQociksdGhpcy5tYXRjaCgxMjkpP3Mua2V5PXRoaXMucGFyc2VTdHJpbmdMaXRlcmFsKHIpOnMua2V5PXRoaXMucGFyc2VJZGVudGlmaWVyKCEwKSx0aGlzLmV4cGVjdCgxNCksIXRoaXMubWF0Y2goMTI5KSl0aHJvdyB0aGlzLnJhaXNlKHUuTW9kdWxlQXR0cmlidXRlSW52YWxpZFZhbHVlLHthdDp0aGlzLnN0YXRlLnN0YXJ0TG9jfSk7cy52YWx1ZT10aGlzLnBhcnNlU3RyaW5nTGl0ZXJhbCh0aGlzLnN0YXRlLnZhbHVlKSx0aGlzLmZpbmlzaE5vZGUocyxcIkltcG9ydEF0dHJpYnV0ZVwiKSx0LnB1c2gocyl9d2hpbGUodGhpcy5lYXQoMTIpKTtyZXR1cm4gdH1tYXliZVBhcnNlTW9kdWxlQXR0cmlidXRlcygpe2lmKHRoaXMubWF0Y2goNzYpJiYhdGhpcy5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSl0aGlzLmV4cGVjdFBsdWdpbihcIm1vZHVsZUF0dHJpYnV0ZXNcIiksdGhpcy5uZXh0KCk7ZWxzZSByZXR1cm4gdGhpcy5oYXNQbHVnaW4oXCJtb2R1bGVBdHRyaWJ1dGVzXCIpP1tdOm51bGw7bGV0IHQ9W10sZT1uZXcgU2V0O2Rve2xldCBzPXRoaXMuc3RhcnROb2RlKCk7aWYocy5rZXk9dGhpcy5wYXJzZUlkZW50aWZpZXIoITApLHMua2V5Lm5hbWUhPT1cInR5cGVcIiYmdGhpcy5yYWlzZSh1Lk1vZHVsZUF0dHJpYnV0ZURpZmZlcmVudEZyb21UeXBlLHthdDpzLmtleX0pLGUuaGFzKHMua2V5Lm5hbWUpJiZ0aGlzLnJhaXNlKHUuTW9kdWxlQXR0cmlidXRlc1dpdGhEdXBsaWNhdGVLZXlzLHthdDpzLmtleSxrZXk6cy5rZXkubmFtZX0pLGUuYWRkKHMua2V5Lm5hbWUpLHRoaXMuZXhwZWN0KDE0KSwhdGhpcy5tYXRjaCgxMjkpKXRocm93IHRoaXMucmFpc2UodS5Nb2R1bGVBdHRyaWJ1dGVJbnZhbGlkVmFsdWUse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtzLnZhbHVlPXRoaXMucGFyc2VTdHJpbmdMaXRlcmFsKHRoaXMuc3RhdGUudmFsdWUpLHRoaXMuZmluaXNoTm9kZShzLFwiSW1wb3J0QXR0cmlidXRlXCIpLHQucHVzaChzKX13aGlsZSh0aGlzLmVhdCgxMikpO3JldHVybiB0fW1heWJlUGFyc2VJbXBvcnRBc3NlcnRpb25zKCl7aWYodGhpcy5pc0NvbnRleHR1YWwoOTQpJiYhdGhpcy5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSl0aGlzLmV4cGVjdFBsdWdpbihcImltcG9ydEFzc2VydGlvbnNcIiksdGhpcy5uZXh0KCk7ZWxzZSByZXR1cm4gdGhpcy5oYXNQbHVnaW4oXCJpbXBvcnRBc3NlcnRpb25zXCIpP1tdOm51bGw7dGhpcy5lYXQoNSk7bGV0IHQ9dGhpcy5wYXJzZUFzc2VydEVudHJpZXMoKTtyZXR1cm4gdGhpcy5lYXQoOCksdH1tYXliZVBhcnNlRGVmYXVsdEltcG9ydFNwZWNpZmllcih0KXtyZXR1cm4gdGhpcy5zaG91bGRQYXJzZURlZmF1bHRJbXBvcnQodCk/KHRoaXMucGFyc2VJbXBvcnRTcGVjaWZpZXJMb2NhbCh0LHRoaXMuc3RhcnROb2RlKCksXCJJbXBvcnREZWZhdWx0U3BlY2lmaWVyXCIpLCEwKTohMX1tYXliZVBhcnNlU3RhckltcG9ydFNwZWNpZmllcih0KXtpZih0aGlzLm1hdGNoKDU1KSl7bGV0IGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5leHBlY3RDb250ZXh0dWFsKDkzKSx0aGlzLnBhcnNlSW1wb3J0U3BlY2lmaWVyTG9jYWwodCxlLFwiSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyXCIpLCEwfXJldHVybiExfXBhcnNlTmFtZWRJbXBvcnRTcGVjaWZpZXJzKHQpe2xldCBlPSEwO2Zvcih0aGlzLmV4cGVjdCg1KTshdGhpcy5lYXQoOCk7KXtpZihlKWU9ITE7ZWxzZXtpZih0aGlzLmVhdCgxNCkpdGhyb3cgdGhpcy5yYWlzZSh1LkRlc3RydWN0dXJlTmFtZWRJbXBvcnQse2F0OnRoaXMuc3RhdGUuc3RhcnRMb2N9KTtpZih0aGlzLmV4cGVjdCgxMiksdGhpcy5lYXQoOCkpYnJlYWt9bGV0IHM9dGhpcy5zdGFydE5vZGUoKSxyPXRoaXMubWF0Y2goMTI5KSxpPXRoaXMuaXNDb250ZXh0dWFsKDEyNik7cy5pbXBvcnRlZD10aGlzLnBhcnNlTW9kdWxlRXhwb3J0TmFtZSgpO2xldCBhPXRoaXMucGFyc2VJbXBvcnRTcGVjaWZpZXIocyxyLHQuaW1wb3J0S2luZD09PVwidHlwZVwifHx0LmltcG9ydEtpbmQ9PT1cInR5cGVvZlwiLGkpO3Quc3BlY2lmaWVycy5wdXNoKGEpfX1wYXJzZUltcG9ydFNwZWNpZmllcih0LGUscyxyKXtpZih0aGlzLmVhdENvbnRleHR1YWwoOTMpKXQubG9jYWw9dGhpcy5wYXJzZUlkZW50aWZpZXIoKTtlbHNle2xldHtpbXBvcnRlZDppfT10O2lmKGUpdGhyb3cgdGhpcy5yYWlzZSh1LkltcG9ydEJpbmRpbmdJc1N0cmluZyx7YXQ6dCxpbXBvcnROYW1lOmkudmFsdWV9KTt0aGlzLmNoZWNrUmVzZXJ2ZWRXb3JkKGkubmFtZSx0LmxvYy5zdGFydCwhMCwhMCksdC5sb2NhbHx8KHQubG9jYWw9Z2UoaSkpfXJldHVybiB0aGlzLmZpbmlzaEltcG9ydFNwZWNpZmllcih0LFwiSW1wb3J0U3BlY2lmaWVyXCIpfWlzVGhpc1BhcmFtKHQpe3JldHVybiB0LnR5cGU9PT1cIklkZW50aWZpZXJcIiYmdC5uYW1lPT09XCJ0aGlzXCJ9fSxHcj1jbGFzcyBleHRlbmRzIHRse2NvbnN0cnVjdG9yKHQsZSl7dD1HaCh0KSxzdXBlcih0LGUpLHRoaXMub3B0aW9ucz10LHRoaXMuaW5pdGlhbGl6ZVNjb3BlcygpLHRoaXMucGx1Z2lucz1zbCh0aGlzLm9wdGlvbnMucGx1Z2lucyksdGhpcy5maWxlbmFtZT10LnNvdXJjZUZpbGVuYW1lfWdldFNjb3BlSGFuZGxlcigpe3JldHVybiBoc31wYXJzZSgpe3RoaXMuZW50ZXJJbml0aWFsU2NvcGVzKCk7bGV0IHQ9dGhpcy5zdGFydE5vZGUoKSxlPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dFRva2VuKCksdC5lcnJvcnM9bnVsbCx0aGlzLnBhcnNlVG9wTGV2ZWwodCxlKSx0LmVycm9ycz10aGlzLnN0YXRlLmVycm9ycyx0fX07ZnVuY3Rpb24gc2wodCl7bGV0IGU9bmV3IE1hcDtmb3IobGV0IHMgb2YgdCl7bGV0W3IsaV09QXJyYXkuaXNBcnJheShzKT9zOltzLHt9XTtlLmhhcyhyKXx8ZS5zZXQocixpfHx7fSl9cmV0dXJuIGV9ZnVuY3Rpb24gcmwodCxlKXt2YXIgcztpZigoKHM9ZSk9PW51bGw/dm9pZCAwOnMuc291cmNlVHlwZSk9PT1cInVuYW1iaWd1b3VzXCIpe2U9T2JqZWN0LmFzc2lnbih7fSxlKTt0cnl7ZS5zb3VyY2VUeXBlPVwibW9kdWxlXCI7bGV0IHI9WWUoZSx0KSxpPXIucGFyc2UoKTtpZihyLnNhd1VuYW1iaWd1b3VzRVNNKXJldHVybiBpO2lmKHIuYW1iaWd1b3VzU2NyaXB0RGlmZmVyZW50QXN0KXRyeXtyZXR1cm4gZS5zb3VyY2VUeXBlPVwic2NyaXB0XCIsWWUoZSx0KS5wYXJzZSgpfWNhdGNoe31lbHNlIGkucHJvZ3JhbS5zb3VyY2VUeXBlPVwic2NyaXB0XCI7cmV0dXJuIGl9Y2F0Y2gocil7dHJ5e3JldHVybiBlLnNvdXJjZVR5cGU9XCJzY3JpcHRcIixZZShlLHQpLnBhcnNlKCl9Y2F0Y2h7fXRocm93IHJ9fWVsc2UgcmV0dXJuIFllKGUsdCkucGFyc2UoKX1mdW5jdGlvbiBpbCh0LGUpe2xldCBzPVllKGUsdCk7cmV0dXJuIHMub3B0aW9ucy5zdHJpY3RNb2RlJiYocy5zdGF0ZS5zdHJpY3Q9ITApLHMuZ2V0RXhwcmVzc2lvbigpfWZ1bmN0aW9uIGFsKHQpe2xldCBlPXt9O2ZvcihsZXQgcyBvZiBPYmplY3Qua2V5cyh0KSllW3NdPWZlKHRbc10pO3JldHVybiBlfXZhciBubD1hbChibyk7ZnVuY3Rpb24gWWUodCxlKXtsZXQgcz1HcjtyZXR1cm4gdCE9bnVsbCYmdC5wbHVnaW5zJiYoSGgodC5wbHVnaW5zKSxzPW9sKHQucGx1Z2lucykpLG5ldyBzKHQsZSl9dmFyIFhyPXt9O2Z1bmN0aW9uIG9sKHQpe2xldCBlPVdoLmZpbHRlcihpPT5lZSh0LGkpKSxzPWUuam9pbihcIi9cIikscj1YcltzXTtpZighcil7cj1Hcjtmb3IobGV0IGkgb2YgZSlyPXpyW2ldKHIpO1hyW3NdPXJ9cmV0dXJuIHJ9aC5wYXJzZT1ybCxoLnBhcnNlRXhwcmVzc2lvbj1pbCxoLnRva1R5cGVzPW5sfX0pLFBmPUgoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL2pzb24uanNcIihoLGwpe1widXNlIHN0cmljdFwiO1YoKTt2YXIgcD1mbygpLGQ9bnIoKSxtPXlvKCksQT14bygpO2Z1bmN0aW9uIGcoKXtsZXQgRT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30se2FsbG93Q29tbWVudHM6TD0hMH09RTtyZXR1cm4gZnVuY3Rpb24oRil7bGV0e3BhcnNlRXhwcmVzc2lvbjpXfT1QbygpLFk7dHJ5e1k9VyhGLHt0b2tlbnM6ITAscmFuZ2VzOiEwfSl9Y2F0Y2goTSl7dGhyb3cgQShNKX1pZighTCYmcChZLmNvbW1lbnRzKSl0aHJvdyB4KFkuY29tbWVudHNbMF0sXCJDb21tZW50XCIpO3JldHVybiBUKFkpLFl9fWZ1bmN0aW9uIHgoRSxMKXtsZXRbUixGXT1bRS5sb2Muc3RhcnQsRS5sb2MuZW5kXS5tYXAoVz0+e2xldHtsaW5lOlksY29sdW1uOk19PVc7cmV0dXJue2xpbmU6WSxjb2x1bW46TSsxfX0pO3JldHVybiBkKFwiXCIuY29uY2F0KEwsXCIgaXMgbm90IGFsbG93ZWQgaW4gSlNPTi5cIikse3N0YXJ0OlIsZW5kOkZ9KX1mdW5jdGlvbiBUKEUpe3N3aXRjaChFLnR5cGUpe2Nhc2VcIkFycmF5RXhwcmVzc2lvblwiOmZvcihsZXQgTCBvZiBFLmVsZW1lbnRzKUwhPT1udWxsJiZUKEwpO3JldHVybjtjYXNlXCJPYmplY3RFeHByZXNzaW9uXCI6Zm9yKGxldCBMIG9mIEUucHJvcGVydGllcylUKEwpO3JldHVybjtjYXNlXCJPYmplY3RQcm9wZXJ0eVwiOmlmKEUuY29tcHV0ZWQpdGhyb3cgeChFLmtleSxcIkNvbXB1dGVkIGtleVwiKTtpZihFLnNob3J0aGFuZCl0aHJvdyB4KEUua2V5LFwiU2hvcnRoYW5kIHByb3BlcnR5XCIpO0Uua2V5LnR5cGUhPT1cIklkZW50aWZpZXJcIiYmVChFLmtleSksVChFLnZhbHVlKTtyZXR1cm47Y2FzZVwiVW5hcnlFeHByZXNzaW9uXCI6e2xldHtvcGVyYXRvcjpMLGFyZ3VtZW50OlJ9PUU7aWYoTCE9PVwiK1wiJiZMIT09XCItXCIpdGhyb3cgeChFLFwiT3BlcmF0b3IgJ1wiLmNvbmNhdChFLm9wZXJhdG9yLFwiJ1wiKSk7aWYoUi50eXBlPT09XCJOdW1lcmljTGl0ZXJhbFwifHxSLnR5cGU9PT1cIklkZW50aWZpZXJcIiYmKFIubmFtZT09PVwiSW5maW5pdHlcInx8Ui5uYW1lPT09XCJOYU5cIikpcmV0dXJuO3Rocm93IHgoUixcIk9wZXJhdG9yICdcIi5jb25jYXQoTCxcIicgYmVmb3JlICdcIikuY29uY2F0KFIudHlwZSxcIidcIikpfWNhc2VcIklkZW50aWZpZXJcIjppZihFLm5hbWUhPT1cIkluZmluaXR5XCImJkUubmFtZSE9PVwiTmFOXCImJkUubmFtZSE9PVwidW5kZWZpbmVkXCIpdGhyb3cgeChFLFwiSWRlbnRpZmllciAnXCIuY29uY2F0KEUubmFtZSxcIidcIikpO3JldHVybjtjYXNlXCJUZW1wbGF0ZUxpdGVyYWxcIjppZihwKEUuZXhwcmVzc2lvbnMpKXRocm93IHgoRS5leHByZXNzaW9uc1swXSxcIidUZW1wbGF0ZUxpdGVyYWwnIHdpdGggZXhwcmVzc2lvblwiKTtmb3IobGV0IEwgb2YgRS5xdWFzaXMpVChMKTtyZXR1cm47Y2FzZVwiTnVsbExpdGVyYWxcIjpjYXNlXCJCb29sZWFuTGl0ZXJhbFwiOmNhc2VcIk51bWVyaWNMaXRlcmFsXCI6Y2FzZVwiU3RyaW5nTGl0ZXJhbFwiOmNhc2VcIlRlbXBsYXRlRWxlbWVudFwiOnJldHVybjtkZWZhdWx0OnRocm93IHgoRSxcIidcIi5jb25jYXQoRS50eXBlLFwiJ1wiKSl9fXZhciBrPWcoKSxEPXtqc29uOm0oe3BhcnNlOmssaGFzUHJhZ21hKCl7cmV0dXJuITB9fSksanNvbjU6bShrKSxcImpzb24tc3RyaW5naWZ5XCI6bSh7cGFyc2U6Zyh7YWxsb3dDb21tZW50czohMX0pLGFzdEZvcm1hdDpcImVzdHJlZS1qc29uXCJ9KX07bC5leHBvcnRzPUR9fSk7VigpO3ZhciBUZj1lZigpLEVmPVFuKCksQ2Y9YWYoKSx6ZT15bygpLGJmPXhvKCksdmY9QWYoKSxTZj1QZigpLHdmPXtzb3VyY2VUeXBlOlwibW9kdWxlXCIsYWxsb3dJbXBvcnRFeHBvcnRFdmVyeXdoZXJlOiEwLGFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uOiEwLGFsbG93U3VwZXJPdXRzaWRlTWV0aG9kOiEwLGFsbG93VW5kZWNsYXJlZEV4cG9ydHM6ITAsZXJyb3JSZWNvdmVyeTohMCxjcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbnM6ITAscGx1Z2luczpbXCJkb0V4cHJlc3Npb25zXCIsXCJleHBvcnREZWZhdWx0RnJvbVwiLFwiZnVuY3Rpb25CaW5kXCIsXCJmdW5jdGlvblNlbnRcIixcInRocm93RXhwcmVzc2lvbnNcIixcInBhcnRpYWxBcHBsaWNhdGlvblwiLFtcImRlY29yYXRvcnNcIix7ZGVjb3JhdG9yc0JlZm9yZUV4cG9ydDohMX1dLFwiaW1wb3J0QXNzZXJ0aW9uc1wiLFwiZGVjaW1hbFwiLFwibW9kdWxlQmxvY2tzXCIsXCJhc3luY0RvRXhwcmVzc2lvbnNcIixcInJlZ2V4cFVuaWNvZGVTZXRzXCIsXCJkZXN0cnVjdHVyaW5nUHJpdmF0ZVwiLFwiZGVjb3JhdG9yQXV0b0FjY2Vzc29yc1wiXSx0b2tlbnM6ITAscmFuZ2VzOiEwfSxOZj1bXCJyZWNvcmRBbmRUdXBsZVwiLHtzeW50YXhUeXBlOlwiaGFzaFwifV0sV249XCJ2OGludHJpbnNpY1wiLEduPVtbXCJwaXBlbGluZU9wZXJhdG9yXCIse3Byb3Bvc2FsOlwiaGFja1wiLHRvcGljVG9rZW46XCIlXCJ9XSxbXCJwaXBlbGluZU9wZXJhdG9yXCIse3Byb3Bvc2FsOlwibWluaW1hbFwifV0sW1wicGlwZWxpbmVPcGVyYXRvclwiLHtwcm9wb3NhbDpcImZzaGFycFwifV1dLHVlPWZ1bmN0aW9uKGgpe2xldCBsPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp3ZjtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHt9LHtwbHVnaW5zOlsuLi5sLnBsdWdpbnMsLi4uaF19KX0sSWY9L0AoPzpubyk/Zmxvd1xcYi87ZnVuY3Rpb24ga2YoaCxsKXtpZihsLmZpbGVwYXRoJiZsLmZpbGVwYXRoLmVuZHNXaXRoKFwiLmpzLmZsb3dcIikpcmV0dXJuITA7bGV0IHA9RWYoaCk7cCYmKGg9aC5zbGljZShwLmxlbmd0aCkpO2xldCBkPUNmKGgsMCk7cmV0dXJuIGQhPT0hMSYmKGg9aC5zbGljZSgwLGQpKSxJZi50ZXN0KGgpfWZ1bmN0aW9uIERmKGgsbCxwKXtsZXQgbT1QbygpW2hdKGwscCksQT1tLmVycm9ycy5maW5kKGc9PiFSZi5oYXMoZy5yZWFzb25Db2RlKSk7aWYoQSl0aHJvdyBBO3JldHVybiBtfWZ1bmN0aW9uIEtlKGgpe2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLHA9bmV3IEFycmF5KGw+MT9sLTE6MCksZD0xO2Q8bDtkKyspcFtkLTFdPWFyZ3VtZW50c1tkXTtyZXR1cm4gZnVuY3Rpb24obSxBKXtsZXQgZz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e307aWYoKGcucGFyc2VyPT09XCJiYWJlbFwifHxnLnBhcnNlcj09PVwiX19iYWJlbF9lc3RyZWVcIikmJmtmKG0sZykpcmV0dXJuIGcucGFyc2VyPVwiYmFiZWwtZmxvd1wiLFRvKG0sQSxnKTtsZXQgeD1wO2cuX19iYWJlbFNvdXJjZVR5cGU9PT1cInNjcmlwdFwiJiYoeD14Lm1hcChFPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sRSkse30se3NvdXJjZVR5cGU6XCJzY3JpcHRcIn0pKSksLyNbW3tdLy50ZXN0KG0pJiYoeD14Lm1hcChFPT51ZShbTmZdLEUpKSk7bGV0IFQ9LyVbQS1aXS8udGVzdChtKTttLmluY2x1ZGVzKFwifD5cIik/eD0oVD9bLi4uR24sV25dOkduKS5mbGF0TWFwKEw9PngubWFwKFI9PnVlKFtMXSxSKSkpOlQmJih4PXgubWFwKEU9PnVlKFtXbl0sRSkpKTtsZXR7cmVzdWx0OmssZXJyb3I6RH09VGYoLi4ueC5tYXAoRT0+KCk9PkRmKGgsbSxFKSkpO2lmKCFrKXRocm93IGJmKEQpO3JldHVybiBnLm9yaWdpbmFsVGV4dD1tLHZmKGssZyl9fXZhciBGZj1LZShcInBhcnNlXCIsdWUoW1wianN4XCIsXCJmbG93XCJdKSksVG89S2UoXCJwYXJzZVwiLHVlKFtcImpzeFwiLFtcImZsb3dcIix7YWxsOiEwLGVudW1zOiEwfV1dKSksTGY9S2UoXCJwYXJzZVwiLHVlKFtcImpzeFwiLFwidHlwZXNjcmlwdFwiXSksdWUoW1widHlwZXNjcmlwdFwiXSkpLE9mPUtlKFwicGFyc2VcIix1ZShbXCJqc3hcIixcImZsb3dcIixcImVzdHJlZVwiXSkpLEJmPUtlKFwicGFyc2VFeHByZXNzaW9uXCIsdWUoW1wianN4XCJdKSksTWY9S2UoXCJwYXJzZUV4cHJlc3Npb25cIix1ZShbXCJ0eXBlc2NyaXB0XCJdKSksUmY9bmV3IFNldChbXCJTdHJpY3ROdW1lcmljRXNjYXBlXCIsXCJTdHJpY3RXaXRoXCIsXCJTdHJpY3RPY3RhbExpdGVyYWxcIixcIlN0cmljdERlbGV0ZVwiLFwiU3RyaWN0RXZhbEFyZ3VtZW50c1wiLFwiU3RyaWN0RXZhbEFyZ3VtZW50c0JpbmRpbmdcIixcIlN0cmljdEZ1bmN0aW9uXCIsXCJFbXB0eVR5cGVBcmd1bWVudHNcIixcIkVtcHR5VHlwZVBhcmFtZXRlcnNcIixcIkNvbnN0cnVjdG9ySGFzVHlwZVBhcmFtZXRlcnNcIixcIlVuc3VwcG9ydGVkUGFyYW1ldGVyUHJvcGVydHlLaW5kXCIsXCJVbmV4cGVjdGVkUGFyYW1ldGVyTW9kaWZpZXJcIixcIk1peGVkTGFiZWxlZEFuZFVubGFiZWxlZEVsZW1lbnRzXCIsXCJJbnZhbGlkVHVwbGVNZW1iZXJMYWJlbFwiLFwiTm9uQ2xhc3NNZXRob2RQcm9wZXJ0eUhhc0Fic3RyYWN0TW9kaWZlclwiLFwiUmVhZG9ubHlGb3JNZXRob2RTaWduYXR1cmVcIixcIkNsYXNzTWV0aG9kSGFzRGVjbGFyZVwiLFwiQ2xhc3NNZXRob2RIYXNSZWFkb25seVwiLFwiSW52YWxpZE1vZGlmaWVyT25UeXBlTWVtYmVyXCIsXCJEdXBsaWNhdGVBY2Nlc3NpYmlsaXR5TW9kaWZpZXJcIixcIkluZGV4U2lnbmF0dXJlSGFzRGVjbGFyZVwiLFwiRGVjb3JhdG9yRXhwb3J0Q2xhc3NcIixcIlBhcmFtRHVwZVwiLFwiSW52YWxpZERlY2ltYWxcIixcIlJlc3RUcmFpbGluZ0NvbW1hXCIsXCJVbnN1cHBvcnRlZFBhcmFtZXRlckRlY29yYXRvclwiLFwiVW50ZXJtaW5hdGVkSnN4Q29udGVudFwiLFwiVW5leHBlY3RlZFJlc2VydmVkV29yZFwiLFwiTW9kdWxlQXR0cmlidXRlc1dpdGhEdXBsaWNhdGVLZXlzXCIsXCJMaW5lVGVybWluYXRvckJlZm9yZUFycm93XCIsXCJJbnZhbGlkRXNjYXBlU2VxdWVuY2VUZW1wbGF0ZVwiLFwiTm9uQWJzdHJhY3RDbGFzc0hhc0Fic3RyYWN0TWV0aG9kXCIsXCJVbnN1cHBvcnRlZFByb3BlcnR5RGVjb3JhdG9yXCIsXCJPcHRpb25hbFR5cGVCZWZvcmVSZXF1aXJlZFwiLFwiUGF0dGVybklzT3B0aW9uYWxcIixcIk9wdGlvbmFsQmluZGluZ1BhdHRlcm5cIixcIkRlY2xhcmVDbGFzc0ZpZWxkSGFzSW5pdGlhbGl6ZXJcIixcIlR5cGVJbXBvcnRDYW5ub3RTcGVjaWZ5RGVmYXVsdEFuZE5hbWVkXCIsXCJEZWNsYXJlRnVuY3Rpb25IYXNJbXBsZW1lbnRhdGlvblwiLFwiQ29uc3RydWN0b3JDbGFzc0ZpZWxkXCIsXCJWYXJSZWRlY2xhcmF0aW9uXCIsXCJJbnZhbGlkUHJpdmF0ZUZpZWxkUmVzb2x1dGlvblwiLFwiRHVwbGljYXRlRXhwb3J0XCJdKSxYbj16ZShGZiksSm49emUoTGYpLFluPXplKEJmKSxqZj16ZShNZik7RW8uZXhwb3J0cz17cGFyc2VyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe2JhYmVsOlhuLFwiYmFiZWwtZmxvd1wiOnplKFRvKSxcImJhYmVsLXRzXCI6Sm59LFNmKSx7fSx7X19qc19leHByZXNzaW9uOlluLF9fdnVlX2V4cHJlc3Npb246WW4sX192dWVfdHNfZXhwcmVzc2lvbjpqZixfX3Z1ZV9ldmVudF9iaW5kaW5nOlhuLF9fdnVlX3RzX2V2ZW50X2JpbmRpbmc6Sm4sX19iYWJlbF9lc3RyZWU6emUoT2YpfSl9fSk7cmV0dXJuIHFmKCk7fSk7IiwgIihmdW5jdGlvbihlKXtpZih0eXBlb2YgZXhwb3J0cz09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZT09XCJvYmplY3RcIiltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpZGVmaW5lKGUpO2Vsc2V7dmFyIGk9dHlwZW9mIGdsb2JhbFRoaXM8XCJ1XCI/Z2xvYmFsVGhpczp0eXBlb2YgZ2xvYmFsPFwidVwiP2dsb2JhbDp0eXBlb2Ygc2VsZjxcInVcIj9zZWxmOnRoaXN8fHt9O2kucHJldHRpZXJQbHVnaW5zPWkucHJldHRpZXJQbHVnaW5zfHx7fSxpLnByZXR0aWVyUGx1Z2lucy5mbG93PWUoKX19KShmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBCZT0oSDAsejApPT4oKT0+KHowfHxIMCgoejA9e2V4cG9ydHM6e319KS5leHBvcnRzLHowKSx6MC5leHBvcnRzKTt2YXIgcnU9QmUoKF9vZSxybjApPT57dmFyIGhfPWZ1bmN0aW9uKEgwKXtyZXR1cm4gSDAmJkgwLk1hdGg9PU1hdGgmJkgwfTtybjAuZXhwb3J0cz1oXyh0eXBlb2YgZ2xvYmFsVGhpcz09XCJvYmplY3RcIiYmZ2xvYmFsVGhpcyl8fGhfKHR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCImJndpbmRvdyl8fGhfKHR5cGVvZiBzZWxmPT1cIm9iamVjdFwiJiZzZWxmKXx8aF8odHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfSk7dmFyIFFzPUJlKCh5b2UsZW4wKT0+e2VuMC5leHBvcnRzPWZ1bmN0aW9uKEgwKXt0cnl7cmV0dXJuISFIMCgpfWNhdGNoe3JldHVybiEwfX19KTt2YXIgZnY9QmUoKGhvZSxubjApPT57dmFyIE43ZT1RcygpO25uMC5leHBvcnRzPSFON2UoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT03fSl9KTt2YXIgalI9QmUoKGRvZSx0bjApPT57dmFyIEM3ZT1RcygpO3RuMC5leHBvcnRzPSFDN2UoZnVuY3Rpb24oKXt2YXIgSDA9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4gdHlwZW9mIEgwIT1cImZ1bmN0aW9uXCJ8fEgwLmhhc093blByb3BlcnR5KFwicHJvdG90eXBlXCIpfSl9KTt2YXIga189QmUoKGtvZSx1bjApPT57dmFyIFA3ZT1qUigpLGRfPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO3VuMC5leHBvcnRzPVA3ZT9kXy5iaW5kKGRfKTpmdW5jdGlvbigpe3JldHVybiBkXy5hcHBseShkXyxhcmd1bWVudHMpfX0pO3ZhciBvbjA9QmUoeG4wPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGluMD17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxmbjA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixEN2U9Zm4wJiYhaW4wLmNhbGwoezE6Mn0sMSk7eG4wLmY9RDdlP2Z1bmN0aW9uKHowKXt2YXIgeHI9Zm4wKHRoaXMsejApO3JldHVybiEheHImJnhyLmVudW1lcmFibGV9OmluMH0pO3ZhciBHUj1CZSgoRW9lLGFuMCk9PnthbjAuZXhwb3J0cz1mdW5jdGlvbihIMCx6MCl7cmV0dXJue2VudW1lcmFibGU6IShIMCYxKSxjb25maWd1cmFibGU6IShIMCYyKSx3cml0YWJsZTohKEgwJjQpLHZhbHVlOnowfX19KTt2YXIgemM9QmUoKFNvZSx2bjApPT57dmFyIGNuMD1qUigpLHNuMD1GdW5jdGlvbi5wcm90b3R5cGUsTDdlPXNuMC5iaW5kLE1SPXNuMC5jYWxsLFI3ZT1jbjAmJkw3ZS5iaW5kKE1SLE1SKTt2bjAuZXhwb3J0cz1jbjA/ZnVuY3Rpb24oSDApe3JldHVybiBIMCYmUjdlKEgwKX06ZnVuY3Rpb24oSDApe3JldHVybiBIMCYmZnVuY3Rpb24oKXtyZXR1cm4gTVIuYXBwbHkoSDAsYXJndW1lbnRzKX19fSk7dmFyIHBuMD1CZSgoZ29lLGJuMCk9Pnt2YXIgbG4wPXpjKCksajdlPWxuMCh7fS50b1N0cmluZyksRzdlPWxuMChcIlwiLnNsaWNlKTtibjAuZXhwb3J0cz1mdW5jdGlvbihIMCl7cmV0dXJuIEc3ZShqN2UoSDApLDgsLTEpfX0pO3ZhciBfbjA9QmUoKEZvZSxtbjApPT57dmFyIE03ZT1ydSgpLEI3ZT16YygpLHE3ZT1RcygpLFU3ZT1wbjAoKSxCUj1NN2UuT2JqZWN0LEg3ZT1CN2UoXCJcIi5zcGxpdCk7bW4wLmV4cG9ydHM9cTdlKGZ1bmN0aW9uKCl7cmV0dXJuIUJSKFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKEgwKXtyZXR1cm4gVTdlKEgwKT09XCJTdHJpbmdcIj9IN2UoSDAsXCJcIik6QlIoSDApfTpCUn0pO3ZhciBxUj1CZSgoVG9lLHluMCk9Pnt2YXIgWDdlPXJ1KCksWTdlPVg3ZS5UeXBlRXJyb3I7eW4wLmV4cG9ydHM9ZnVuY3Rpb24oSDApe2lmKEgwPT1udWxsKXRocm93IFk3ZShcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiK0gwKTtyZXR1cm4gSDB9fSk7dmFyIHdfPUJlKChPb2UsaG4wKT0+e3ZhciBWN2U9X24wKCksejdlPXFSKCk7aG4wLmV4cG9ydHM9ZnVuY3Rpb24oSDApe3JldHVybiBWN2UoejdlKEgwKSl9fSk7dmFyIEtjPUJlKChJb2UsZG4wKT0+e2RuMC5leHBvcnRzPWZ1bmN0aW9uKEgwKXtyZXR1cm4gdHlwZW9mIEgwPT1cImZ1bmN0aW9uXCJ9fSk7dmFyIFMyPUJlKChBb2Usa24wKT0+e3ZhciBLN2U9S2MoKTtrbjAuZXhwb3J0cz1mdW5jdGlvbihIMCl7cmV0dXJuIHR5cGVvZiBIMD09XCJvYmplY3RcIj9IMCE9PW51bGw6SzdlKEgwKX19KTt2YXIgRV89QmUoKE5vZSx3bjApPT57dmFyIFVSPXJ1KCksVzdlPUtjKCksSjdlPWZ1bmN0aW9uKEgwKXtyZXR1cm4gVzdlKEgwKT9IMDp2b2lkIDB9O3duMC5leHBvcnRzPWZ1bmN0aW9uKEgwLHowKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP0o3ZShVUltIMF0pOlVSW0gwXSYmVVJbSDBdW3owXX19KTt2YXIgU24wPUJlKChDb2UsRW4wKT0+e3ZhciAkN2U9emMoKTtFbjAuZXhwb3J0cz0kN2Uoe30uaXNQcm90b3R5cGVPZil9KTt2YXIgRm4wPUJlKChQb2UsZ24wKT0+e3ZhciBaN2U9RV8oKTtnbjAuZXhwb3J0cz1aN2UoXCJuYXZpZ2F0b3JcIixcInVzZXJBZ2VudFwiKXx8XCJcIn0pO3ZhciBQbjA9QmUoKERvZSxDbjApPT57dmFyIE5uMD1ydSgpLEhSPUZuMCgpLFRuMD1ObjAucHJvY2VzcyxPbjA9Tm4wLkRlbm8sSW4wPVRuMCYmVG4wLnZlcnNpb25zfHxPbjAmJk9uMC52ZXJzaW9uLEFuMD1JbjAmJkluMC52OCwkaSxTXztBbjAmJigkaT1BbjAuc3BsaXQoXCIuXCIpLFNfPSRpWzBdPjAmJiRpWzBdPDQ/MTorKCRpWzBdKyRpWzFdKSk7IVNfJiZIUiYmKCRpPUhSLm1hdGNoKC9FZGdlXFwvKFxcZCspLyksKCEkaXx8JGlbMV0+PTc0KSYmKCRpPUhSLm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKSwkaSYmKFNfPSskaVsxXSkpKTtDbjAuZXhwb3J0cz1TX30pO3ZhciBYUj1CZSgoTG9lLExuMCk9Pnt2YXIgRG4wPVBuMCgpLFE3ZT1RcygpO0xuMC5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIVE3ZShmdW5jdGlvbigpe3ZhciBIMD1TeW1ib2woKTtyZXR1cm4hU3RyaW5nKEgwKXx8IShPYmplY3QoSDApaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJkRuMCYmRG4wPDQxfSl9KTt2YXIgWVI9QmUoKFJvZSxSbjApPT57dmFyIHJpZT1YUigpO1JuMC5leHBvcnRzPXJpZSYmIVN5bWJvbC5zaGFtJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1cInN5bWJvbFwifSk7dmFyIFZSPUJlKChqb2Usam4wKT0+e3ZhciBlaWU9cnUoKSxuaWU9RV8oKSx0aWU9S2MoKSx1aWU9U24wKCksaWllPVlSKCksZmllPWVpZS5PYmplY3Q7am4wLmV4cG9ydHM9aWllP2Z1bmN0aW9uKEgwKXtyZXR1cm4gdHlwZW9mIEgwPT1cInN5bWJvbFwifTpmdW5jdGlvbihIMCl7dmFyIHowPW5pZShcIlN5bWJvbFwiKTtyZXR1cm4gdGllKHowKSYmdWllKHowLnByb3RvdHlwZSxmaWUoSDApKX19KTt2YXIgTW4wPUJlKChHb2UsR24wKT0+e3ZhciB4aWU9cnUoKSxvaWU9eGllLlN0cmluZztHbjAuZXhwb3J0cz1mdW5jdGlvbihIMCl7dHJ5e3JldHVybiBvaWUoSDApfWNhdGNoe3JldHVyblwiT2JqZWN0XCJ9fX0pO3ZhciBxbjA9QmUoKE1vZSxCbjApPT57dmFyIGFpZT1ydSgpLGNpZT1LYygpLHNpZT1NbjAoKSx2aWU9YWllLlR5cGVFcnJvcjtCbjAuZXhwb3J0cz1mdW5jdGlvbihIMCl7aWYoY2llKEgwKSlyZXR1cm4gSDA7dGhyb3cgdmllKHNpZShIMCkrXCIgaXMgbm90IGEgZnVuY3Rpb25cIil9fSk7dmFyIEhuMD1CZSgoQm9lLFVuMCk9Pnt2YXIgbGllPXFuMCgpO1VuMC5leHBvcnRzPWZ1bmN0aW9uKEgwLHowKXt2YXIgeHI9SDBbejBdO3JldHVybiB4cj09bnVsbD92b2lkIDA6bGllKHhyKX19KTt2YXIgWW4wPUJlKChxb2UsWG4wKT0+e3ZhciBiaWU9cnUoKSx6Uj1rXygpLEtSPUtjKCksV1I9UzIoKSxwaWU9YmllLlR5cGVFcnJvcjtYbjAuZXhwb3J0cz1mdW5jdGlvbihIMCx6MCl7dmFyIHhyLGdyO2lmKHowPT09XCJzdHJpbmdcIiYmS1IoeHI9SDAudG9TdHJpbmcpJiYhV1IoZ3I9elIoeHIsSDApKXx8S1IoeHI9SDAudmFsdWVPZikmJiFXUihncj16Uih4cixIMCkpfHx6MCE9PVwic3RyaW5nXCImJktSKHhyPUgwLnRvU3RyaW5nKSYmIVdSKGdyPXpSKHhyLEgwKSkpcmV0dXJuIGdyO3Rocm93IHBpZShcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19KTt2YXIgem4wPUJlKChVb2UsVm4wKT0+e1ZuMC5leHBvcnRzPSExfSk7dmFyIGdfPUJlKChIb2UsV24wKT0+e3ZhciBLbjA9cnUoKSxtaWU9T2JqZWN0LmRlZmluZVByb3BlcnR5O1duMC5leHBvcnRzPWZ1bmN0aW9uKEgwLHowKXt0cnl7bWllKEtuMCxIMCx7dmFsdWU6ejAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2h7S24wW0gwXT16MH1yZXR1cm4gejB9fSk7dmFyIEZfPUJlKChYb2UsJG4wKT0+e3ZhciBfaWU9cnUoKSx5aWU9Z18oKSxKbjA9XCJfX2NvcmUtanNfc2hhcmVkX19cIixoaWU9X2llW0puMF18fHlpZShKbjAse30pOyRuMC5leHBvcnRzPWhpZX0pO3ZhciBKUj1CZSgoWW9lLFFuMCk9Pnt2YXIgZGllPXpuMCgpLFpuMD1GXygpOyhRbjAuZXhwb3J0cz1mdW5jdGlvbihIMCx6MCl7cmV0dXJuIFpuMFtIMF18fChabjBbSDBdPXowIT09dm9pZCAwP3owOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpcIjMuMjIuMlwiLG1vZGU6ZGllP1wicHVyZVwiOlwiZ2xvYmFsXCIsY29weXJpZ2h0OlwiXFx4QTkgMjAxNC0yMDIyIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpXCIsbGljZW5zZTpcImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMjIuMi9MSUNFTlNFXCIsc291cmNlOlwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanNcIn0pfSk7dmFyIGV0MD1CZSgoVm9lLHJ0MCk9Pnt2YXIga2llPXJ1KCksd2llPXFSKCksRWllPWtpZS5PYmplY3Q7cnQwLmV4cG9ydHM9ZnVuY3Rpb24oSDApe3JldHVybiBFaWUod2llKEgwKSl9fSk7dmFyIHIxPUJlKCh6b2UsbnQwKT0+e3ZhciBTaWU9emMoKSxnaWU9ZXQwKCksRmllPVNpZSh7fS5oYXNPd25Qcm9wZXJ0eSk7bnQwLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24oejAseHIpe3JldHVybiBGaWUoZ2llKHowKSx4cil9fSk7dmFyICRSPUJlKChLb2UsdHQwKT0+e3ZhciBUaWU9emMoKSxPaWU9MCxJaWU9TWF0aC5yYW5kb20oKSxBaWU9VGllKDEgLnRvU3RyaW5nKTt0dDAuZXhwb3J0cz1mdW5jdGlvbihIMCl7cmV0dXJuXCJTeW1ib2woXCIrKEgwPT09dm9pZCAwP1wiXCI6SDApK1wiKV9cIitBaWUoKytPaWUrSWllLDM2KX19KTt2YXIgYXQwPUJlKChXb2Usb3QwKT0+e3ZhciBOaWU9cnUoKSxDaWU9SlIoKSx1dDA9cjEoKSxQaWU9JFIoKSxpdDA9WFIoKSx4dDA9WVIoKSxnMj1DaWUoXCJ3a3NcIikseHY9TmllLlN5bWJvbCxmdDA9eHYmJnh2LmZvcixEaWU9eHQwP3h2Onh2JiZ4di53aXRob3V0U2V0dGVyfHxQaWU7b3QwLmV4cG9ydHM9ZnVuY3Rpb24oSDApe2lmKCF1dDAoZzIsSDApfHwhKGl0MHx8dHlwZW9mIGcyW0gwXT09XCJzdHJpbmdcIikpe3ZhciB6MD1cIlN5bWJvbC5cIitIMDtpdDAmJnV0MCh4dixIMCk/ZzJbSDBdPXh2W0gwXTp4dDAmJmZ0MD9nMltIMF09ZnQwKHowKTpnMltIMF09RGllKHowKX1yZXR1cm4gZzJbSDBdfX0pO3ZhciBsdDA9QmUoKEpvZSx2dDApPT57dmFyIExpZT1ydSgpLFJpZT1rXygpLGN0MD1TMigpLHN0MD1WUigpLGppZT1IbjAoKSxHaWU9WW4wKCksTWllPWF0MCgpLEJpZT1MaWUuVHlwZUVycm9yLHFpZT1NaWUoXCJ0b1ByaW1pdGl2ZVwiKTt2dDAuZXhwb3J0cz1mdW5jdGlvbihIMCx6MCl7aWYoIWN0MChIMCl8fHN0MChIMCkpcmV0dXJuIEgwO3ZhciB4cj1qaWUoSDAscWllKSxncjtpZih4cil7aWYoejA9PT12b2lkIDAmJih6MD1cImRlZmF1bHRcIiksZ3I9UmllKHhyLEgwLHowKSwhY3QwKGdyKXx8c3QwKGdyKSlyZXR1cm4gZ3I7dGhyb3cgQmllKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfXJldHVybiB6MD09PXZvaWQgMCYmKHowPVwibnVtYmVyXCIpLEdpZShIMCx6MCl9fSk7dmFyIFpSPUJlKCgkb2UsYnQwKT0+e3ZhciBVaWU9bHQwKCksSGllPVZSKCk7YnQwLmV4cG9ydHM9ZnVuY3Rpb24oSDApe3ZhciB6MD1VaWUoSDAsXCJzdHJpbmdcIik7cmV0dXJuIEhpZSh6MCk/ejA6ejArXCJcIn19KTt2YXIgX3QwPUJlKChab2UsbXQwKT0+e3ZhciBYaWU9cnUoKSxwdDA9UzIoKSxRUj1YaWUuZG9jdW1lbnQsWWllPXB0MChRUikmJnB0MChRUi5jcmVhdGVFbGVtZW50KTttdDAuZXhwb3J0cz1mdW5jdGlvbihIMCl7cmV0dXJuIFlpZT9RUi5jcmVhdGVFbGVtZW50KEgwKTp7fX19KTt2YXIgcmo9QmUoKFFvZSx5dDApPT57dmFyIFZpZT1mdigpLHppZT1RcygpLEtpZT1fdDAoKTt5dDAuZXhwb3J0cz0hVmllJiYhemllKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLaWUoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmEhPTd9KX0pO3ZhciBlaj1CZShkdDA9Pnt2YXIgV2llPWZ2KCksSmllPWtfKCksJGllPW9uMCgpLFppZT1HUigpLFFpZT13XygpLHJmZT1aUigpLGVmZT1yMSgpLG5mZT1yaigpLGh0MD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2R0MC5mPVdpZT9odDA6ZnVuY3Rpb24oejAseHIpe2lmKHowPVFpZSh6MCkseHI9cmZlKHhyKSxuZmUpdHJ5e3JldHVybiBodDAoejAseHIpfWNhdGNoe31pZihlZmUoejAseHIpKXJldHVybiBaaWUoIUppZSgkaWUuZix6MCx4ciksejBbeHJdKX19KTt2YXIgd3QwPUJlKChlYWUsa3QwKT0+e3ZhciB0ZmU9ZnYoKSx1ZmU9UXMoKTtrdDAuZXhwb3J0cz10ZmUmJnVmZShmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKXt9LFwicHJvdG90eXBlXCIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlIT00Mn0pfSk7dmFyIG5qPUJlKChuYWUsU3QwKT0+e3ZhciBFdDA9cnUoKSxpZmU9UzIoKSxmZmU9RXQwLlN0cmluZyx4ZmU9RXQwLlR5cGVFcnJvcjtTdDAuZXhwb3J0cz1mdW5jdGlvbihIMCl7aWYoaWZlKEgwKSlyZXR1cm4gSDA7dGhyb3cgeGZlKGZmZShIMCkrXCIgaXMgbm90IGFuIG9iamVjdFwiKX19KTt2YXIgeGo9QmUoRnQwPT57dmFyIG9mZT1ydSgpLGFmZT1mdigpLGNmZT1yaigpLHNmZT13dDAoKSxUXz1uaigpLGd0MD1aUigpLHZmZT1vZmUuVHlwZUVycm9yLHRqPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsZmU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcix1aj1cImVudW1lcmFibGVcIixpaj1cImNvbmZpZ3VyYWJsZVwiLGZqPVwid3JpdGFibGVcIjtGdDAuZj1hZmU/c2ZlP2Z1bmN0aW9uKHowLHhyLGdyKXtpZihUXyh6MCkseHI9Z3QwKHhyKSxUXyhnciksdHlwZW9mIHowPT1cImZ1bmN0aW9uXCImJnhyPT09XCJwcm90b3R5cGVcIiYmXCJ2YWx1ZVwiaW4gZ3ImJmZqIGluIGdyJiYhZ3JbZmpdKXt2YXIgZGU9bGZlKHowLHhyKTtkZSYmZGVbZmpdJiYoejBbeHJdPWdyLnZhbHVlLGdyPXtjb25maWd1cmFibGU6aWogaW4gZ3I/Z3JbaWpdOmRlW2lqXSxlbnVtZXJhYmxlOnVqIGluIGdyP2dyW3VqXTpkZVt1al0sd3JpdGFibGU6ITF9KX1yZXR1cm4gdGooejAseHIsZ3IpfTp0ajpmdW5jdGlvbih6MCx4cixncil7aWYoVF8oejApLHhyPWd0MCh4ciksVF8oZ3IpLGNmZSl0cnl7cmV0dXJuIHRqKHowLHhyLGdyKX1jYXRjaHt9aWYoXCJnZXRcImluIGdyfHxcInNldFwiaW4gZ3IpdGhyb3cgdmZlKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWRcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gZ3ImJih6MFt4cl09Z3IudmFsdWUpLHowfX0pO3ZhciBPXz1CZSgodWFlLFR0MCk9Pnt2YXIgYmZlPWZ2KCkscGZlPXhqKCksbWZlPUdSKCk7VHQwLmV4cG9ydHM9YmZlP2Z1bmN0aW9uKEgwLHowLHhyKXtyZXR1cm4gcGZlLmYoSDAsejAsbWZlKDEseHIpKX06ZnVuY3Rpb24oSDAsejAseHIpe3JldHVybiBIMFt6MF09eHIsSDB9fSk7dmFyIGFqPUJlKChpYWUsT3QwKT0+e3ZhciBfZmU9emMoKSx5ZmU9S2MoKSxvaj1GXygpLGhmZT1fZmUoRnVuY3Rpb24udG9TdHJpbmcpO3lmZShvai5pbnNwZWN0U291cmNlKXx8KG9qLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oSDApe3JldHVybiBoZmUoSDApfSk7T3QwLmV4cG9ydHM9b2ouaW5zcGVjdFNvdXJjZX0pO3ZhciBOdDA9QmUoKGZhZSxBdDApPT57dmFyIGRmZT1ydSgpLGtmZT1LYygpLHdmZT1haigpLEl0MD1kZmUuV2Vha01hcDtBdDAuZXhwb3J0cz1rZmUoSXQwKSYmL25hdGl2ZSBjb2RlLy50ZXN0KHdmZShJdDApKX0pO3ZhciBEdDA9QmUoKHhhZSxQdDApPT57dmFyIEVmZT1KUigpLFNmZT0kUigpLEN0MD1FZmUoXCJrZXlzXCIpO1B0MC5leHBvcnRzPWZ1bmN0aW9uKEgwKXtyZXR1cm4gQ3QwW0gwXXx8KEN0MFtIMF09U2ZlKEgwKSl9fSk7dmFyIGNqPUJlKChvYWUsTHQwKT0+e0x0MC5leHBvcnRzPXt9fSk7dmFyIHF0MD1CZSgoYWFlLEJ0MCk9Pnt2YXIgZ2ZlPU50MCgpLE10MD1ydSgpLHNqPXpjKCksRmZlPVMyKCksVGZlPU9fKCksdmo9cjEoKSxsaj1GXygpLE9mZT1EdDAoKSxJZmU9Y2ooKSxSdDA9XCJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZFwiLHBqPU10MC5UeXBlRXJyb3IsQWZlPU10MC5XZWFrTWFwLElfLGE0LEFfLE5mZT1mdW5jdGlvbihIMCl7cmV0dXJuIEFfKEgwKT9hNChIMCk6SV8oSDAse30pfSxDZmU9ZnVuY3Rpb24oSDApe3JldHVybiBmdW5jdGlvbih6MCl7dmFyIHhyO2lmKCFGZmUoejApfHwoeHI9YTQoejApKS50eXBlIT09SDApdGhyb3cgcGooXCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFwiK0gwK1wiIHJlcXVpcmVkXCIpO3JldHVybiB4cn19O2dmZXx8bGouc3RhdGU/KGUxPWxqLnN0YXRlfHwobGouc3RhdGU9bmV3IEFmZSksanQwPXNqKGUxLmdldCksYmo9c2ooZTEuaGFzKSxHdDA9c2ooZTEuc2V0KSxJXz1mdW5jdGlvbihIMCx6MCl7aWYoYmooZTEsSDApKXRocm93IG5ldyBwaihSdDApO3JldHVybiB6MC5mYWNhZGU9SDAsR3QwKGUxLEgwLHowKSx6MH0sYTQ9ZnVuY3Rpb24oSDApe3JldHVybiBqdDAoZTEsSDApfHx7fX0sQV89ZnVuY3Rpb24oSDApe3JldHVybiBiaihlMSxIMCl9KToob3Y9T2ZlKFwic3RhdGVcIiksSWZlW292XT0hMCxJXz1mdW5jdGlvbihIMCx6MCl7aWYodmooSDAsb3YpKXRocm93IG5ldyBwaihSdDApO3JldHVybiB6MC5mYWNhZGU9SDAsVGZlKEgwLG92LHowKSx6MH0sYTQ9ZnVuY3Rpb24oSDApe3JldHVybiB2aihIMCxvdik/SDBbb3ZdOnt9fSxBXz1mdW5jdGlvbihIMCl7cmV0dXJuIHZqKEgwLG92KX0pO3ZhciBlMSxqdDAsYmosR3QwLG92O0J0MC5leHBvcnRzPXtzZXQ6SV8sZ2V0OmE0LGhhczpBXyxlbmZvcmNlOk5mZSxnZXR0ZXJGb3I6Q2ZlfX0pO3ZhciBYdDA9QmUoKGNhZSxIdDApPT57dmFyIG1qPWZ2KCksUGZlPXIxKCksVXQwPUZ1bmN0aW9uLnByb3RvdHlwZSxEZmU9bWomJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsX2o9UGZlKFV0MCxcIm5hbWVcIiksTGZlPV9qJiZmdW5jdGlvbigpe30ubmFtZT09PVwic29tZXRoaW5nXCIsUmZlPV9qJiYoIW1qfHxtaiYmRGZlKFV0MCxcIm5hbWVcIikuY29uZmlndXJhYmxlKTtIdDAuZXhwb3J0cz17RVhJU1RTOl9qLFBST1BFUjpMZmUsQ09ORklHVVJBQkxFOlJmZX19KTt2YXIgV3QwPUJlKChzYWUsS3QwKT0+e3ZhciBqZmU9cnUoKSxZdDA9S2MoKSxHZmU9cjEoKSxWdDA9T18oKSxNZmU9Z18oKSxCZmU9YWooKSx6dDA9cXQwKCkscWZlPVh0MCgpLkNPTkZJR1VSQUJMRSxVZmU9enQwLmdldCxIZmU9enQwLmVuZm9yY2UsWGZlPVN0cmluZyhTdHJpbmcpLnNwbGl0KFwiU3RyaW5nXCIpOyhLdDAuZXhwb3J0cz1mdW5jdGlvbihIMCx6MCx4cixncil7dmFyIGRlPWdyPyEhZ3IudW5zYWZlOiExLFZlPWdyPyEhZ3IuZW51bWVyYWJsZTohMSxEZT1ncj8hIWdyLm5vVGFyZ2V0R2V0OiExLEtlPWdyJiZnci5uYW1lIT09dm9pZCAwP2dyLm5hbWU6ejAsdG47aWYoWXQwKHhyKSYmKFN0cmluZyhLZSkuc2xpY2UoMCw3KT09PVwiU3ltYm9sKFwiJiYoS2U9XCJbXCIrU3RyaW5nKEtlKS5yZXBsYWNlKC9eU3ltYm9sXFwoKFteKV0qKVxcKS8sXCIkMVwiKStcIl1cIiksKCFHZmUoeHIsXCJuYW1lXCIpfHxxZmUmJnhyLm5hbWUhPT1LZSkmJlZ0MCh4cixcIm5hbWVcIixLZSksdG49SGZlKHhyKSx0bi5zb3VyY2V8fCh0bi5zb3VyY2U9WGZlLmpvaW4odHlwZW9mIEtlPT1cInN0cmluZ1wiP0tlOlwiXCIpKSksSDA9PT1qZmUpe1ZlP0gwW3owXT14cjpNZmUoejAseHIpO3JldHVybn1lbHNlIGRlPyFEZSYmSDBbejBdJiYoVmU9ITApOmRlbGV0ZSBIMFt6MF07VmU/SDBbejBdPXhyOlZ0MChIMCx6MCx4cil9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIFl0MCh0aGlzKSYmVWZlKHRoaXMpLnNvdXJjZXx8QmZlKHRoaXMpfSl9KTt2YXIgeWo9QmUoKHZhZSxKdDApPT57dmFyIFlmZT1NYXRoLmNlaWwsVmZlPU1hdGguZmxvb3I7SnQwLmV4cG9ydHM9ZnVuY3Rpb24oSDApe3ZhciB6MD0rSDA7cmV0dXJuIHowIT09ejB8fHowPT09MD8wOih6MD4wP1ZmZTpZZmUpKHowKX19KTt2YXIgWnQwPUJlKChsYWUsJHQwKT0+e3ZhciB6ZmU9eWooKSxLZmU9TWF0aC5tYXgsV2ZlPU1hdGgubWluOyR0MC5leHBvcnRzPWZ1bmN0aW9uKEgwLHowKXt2YXIgeHI9emZlKEgwKTtyZXR1cm4geHI8MD9LZmUoeHIrejAsMCk6V2ZlKHhyLHowKX19KTt2YXIgcnUwPUJlKChiYWUsUXQwKT0+e3ZhciBKZmU9eWooKSwkZmU9TWF0aC5taW47UXQwLmV4cG9ydHM9ZnVuY3Rpb24oSDApe3JldHVybiBIMD4wPyRmZShKZmUoSDApLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSk7dmFyIG51MD1CZSgocGFlLGV1MCk9Pnt2YXIgWmZlPXJ1MCgpO2V1MC5leHBvcnRzPWZ1bmN0aW9uKEgwKXtyZXR1cm4gWmZlKEgwLmxlbmd0aCl9fSk7dmFyIGl1MD1CZSgobWFlLHV1MCk9Pnt2YXIgUWZlPXdfKCkscnhlPVp0MCgpLGV4ZT1udTAoKSx0dTA9ZnVuY3Rpb24oSDApe3JldHVybiBmdW5jdGlvbih6MCx4cixncil7dmFyIGRlPVFmZSh6MCksVmU9ZXhlKGRlKSxEZT1yeGUoZ3IsVmUpLEtlO2lmKEgwJiZ4ciE9eHIpe2Zvcig7VmU+RGU7KWlmKEtlPWRlW0RlKytdLEtlIT1LZSlyZXR1cm4hMH1lbHNlIGZvcig7VmU+RGU7RGUrKylpZigoSDB8fERlIGluIGRlKSYmZGVbRGVdPT09eHIpcmV0dXJuIEgwfHxEZXx8MDtyZXR1cm4hSDAmJi0xfX07dXUwLmV4cG9ydHM9e2luY2x1ZGVzOnR1MCghMCksaW5kZXhPZjp0dTAoITEpfX0pO3ZhciBvdTA9QmUoKF9hZSx4dTApPT57dmFyIG54ZT16YygpLGhqPXIxKCksdHhlPXdfKCksdXhlPWl1MCgpLmluZGV4T2YsaXhlPWNqKCksZnUwPW54ZShbXS5wdXNoKTt4dTAuZXhwb3J0cz1mdW5jdGlvbihIMCx6MCl7dmFyIHhyPXR4ZShIMCksZ3I9MCxkZT1bXSxWZTtmb3IoVmUgaW4geHIpIWhqKGl4ZSxWZSkmJmhqKHhyLFZlKSYmZnUwKGRlLFZlKTtmb3IoO3owLmxlbmd0aD5ncjspaGooeHIsVmU9ejBbZ3IrK10pJiYofnV4ZShkZSxWZSl8fGZ1MChkZSxWZSkpO3JldHVybiBkZX19KTt2YXIgY3UwPUJlKCh5YWUsYXUwKT0+e2F1MC5leHBvcnRzPVtcImNvbnN0cnVjdG9yXCIsXCJoYXNPd25Qcm9wZXJ0eVwiLFwiaXNQcm90b3R5cGVPZlwiLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcInRvTG9jYWxlU3RyaW5nXCIsXCJ0b1N0cmluZ1wiLFwidmFsdWVPZlwiXX0pO3ZhciB2dTA9QmUoc3UwPT57dmFyIGZ4ZT1vdTAoKSx4eGU9Y3UwKCksb3hlPXh4ZS5jb25jYXQoXCJsZW5ndGhcIixcInByb3RvdHlwZVwiKTtzdTAuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24oejApe3JldHVybiBmeGUoejAsb3hlKX19KTt2YXIgYnUwPUJlKGx1MD0+e2x1MC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9KTt2YXIgbXUwPUJlKChrYWUscHUwKT0+e3ZhciBheGU9RV8oKSxjeGU9emMoKSxzeGU9dnUwKCksdnhlPWJ1MCgpLGx4ZT1uaigpLGJ4ZT1jeGUoW10uY29uY2F0KTtwdTAuZXhwb3J0cz1heGUoXCJSZWZsZWN0XCIsXCJvd25LZXlzXCIpfHxmdW5jdGlvbih6MCl7dmFyIHhyPXN4ZS5mKGx4ZSh6MCkpLGdyPXZ4ZS5mO3JldHVybiBncj9ieGUoeHIsZ3IoejApKTp4cn19KTt2YXIgaHUwPUJlKCh3YWUseXUwKT0+e3ZhciBfdTA9cjEoKSxweGU9bXUwKCksbXhlPWVqKCksX3hlPXhqKCk7eXUwLmV4cG9ydHM9ZnVuY3Rpb24oSDAsejAseHIpe2Zvcih2YXIgZ3I9cHhlKHowKSxkZT1feGUuZixWZT1teGUuZixEZT0wO0RlPGdyLmxlbmd0aDtEZSsrKXt2YXIgS2U9Z3JbRGVdOyFfdTAoSDAsS2UpJiYhKHhyJiZfdTAoeHIsS2UpKSYmZGUoSDAsS2UsVmUoejAsS2UpKX19fSk7dmFyIGt1MD1CZSgoRWFlLGR1MCk9Pnt2YXIgeXhlPVFzKCksaHhlPUtjKCksZHhlPS8jfFxcLnByb3RvdHlwZVxcLi8sYzQ9ZnVuY3Rpb24oSDAsejApe3ZhciB4cj13eGVba3hlKEgwKV07cmV0dXJuIHhyPT1TeGU/ITA6eHI9PUV4ZT8hMTpoeGUoejApP3l4ZSh6MCk6ISF6MH0sa3hlPWM0Lm5vcm1hbGl6ZT1mdW5jdGlvbihIMCl7cmV0dXJuIFN0cmluZyhIMCkucmVwbGFjZShkeGUsXCIuXCIpLnRvTG93ZXJDYXNlKCl9LHd4ZT1jNC5kYXRhPXt9LEV4ZT1jNC5OQVRJVkU9XCJOXCIsU3hlPWM0LlBPTFlGSUxMPVwiUFwiO2R1MC5leHBvcnRzPWM0fSk7dmFyIEV1MD1CZSgoU2FlLHd1MCk9Pnt2YXIgZGo9cnUoKSxneGU9ZWooKS5mLEZ4ZT1PXygpLFR4ZT1XdDAoKSxPeGU9Z18oKSxJeGU9aHUwKCksQXhlPWt1MCgpO3d1MC5leHBvcnRzPWZ1bmN0aW9uKEgwLHowKXt2YXIgeHI9SDAudGFyZ2V0LGdyPUgwLmdsb2JhbCxkZT1IMC5zdGF0LFZlLERlLEtlLHRuLFFuLHJ0O2lmKGdyP0RlPWRqOmRlP0RlPWRqW3hyXXx8T3hlKHhyLHt9KTpEZT0oZGpbeHJdfHx7fSkucHJvdG90eXBlLERlKWZvcihLZSBpbiB6MCl7aWYoUW49ejBbS2VdLEgwLm5vVGFyZ2V0R2V0PyhydD1neGUoRGUsS2UpLHRuPXJ0JiZydC52YWx1ZSk6dG49RGVbS2VdLFZlPUF4ZShncj9LZTp4cisoZGU/XCIuXCI6XCIjXCIpK0tlLEgwLmZvcmNlZCksIVZlJiZ0biE9PXZvaWQgMCl7aWYodHlwZW9mIFFuPT10eXBlb2YgdG4pY29udGludWU7SXhlKFFuLHRuKX0oSDAuc2hhbXx8dG4mJnRuLnNoYW0pJiZGeGUoUW4sXCJzaGFtXCIsITApLFR4ZShEZSxLZSxRbixIMCl9fX0pO3ZhciBTdTA9QmUoKCk9Pnt2YXIgTnhlPUV1MCgpLEN4ZT1ydSgpO054ZSh7Z2xvYmFsOiEwfSx7Z2xvYmFsVGhpczpDeGV9KX0pO3ZhciBndTA9QmUoKCk9PntTdTAoKX0pO3ZhciBzb2U9QmUoKElhZSx6dTApPT57Z3UwKCk7dmFyIFpxPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxQeGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixRcT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxEeGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxDXz0oSDAsejApPT5mdW5jdGlvbigpe3JldHVybiBIMCYmKHowPSgwLEgwW1FxKEgwKVswXV0pKEgwPTApKSx6MH0sZXU9KEgwLHowKT0+ZnVuY3Rpb24oKXtyZXR1cm4gejB8fCgwLEgwW1FxKEgwKVswXV0pKCh6MD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsejApLHowLmV4cG9ydHN9LHJVPShIMCx6MCk9Pntmb3IodmFyIHhyIGluIHowKVpxKEgwLHhyLHtnZXQ6ejBbeHJdLGVudW1lcmFibGU6ITB9KX0sTHhlPShIMCx6MCx4cixncik9PntpZih6MCYmdHlwZW9mIHowPT1cIm9iamVjdFwifHx0eXBlb2YgejA9PVwiZnVuY3Rpb25cIilmb3IobGV0IGRlIG9mIFFxKHowKSkhRHhlLmNhbGwoSDAsZGUpJiZkZSE9PXhyJiZacShIMCxkZSx7Z2V0OigpPT56MFtkZV0sZW51bWVyYWJsZTohKGdyPVB4ZSh6MCxkZSkpfHxnci5lbnVtZXJhYmxlfSk7cmV0dXJuIEgwfSxlVT1IMD0+THhlKFpxKHt9LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLEgwKSxQdD1DXyh7XCI8ZGVmaW5lOnByb2Nlc3M+XCIoKXt9fSksRnUwPWV1KHtcInNyYy9jb21tb24vcGFyc2VyLWNyZWF0ZS1lcnJvci5qc1wiKEgwLHowKXtcInVzZSBzdHJpY3RcIjtQdCgpO2Z1bmN0aW9uIHhyKGdyLGRlKXtsZXQgVmU9bmV3IFN5bnRheEVycm9yKGdyK1wiIChcIitkZS5zdGFydC5saW5lK1wiOlwiK2RlLnN0YXJ0LmNvbHVtbitcIilcIik7cmV0dXJuIFZlLmxvYz1kZSxWZX16MC5leHBvcnRzPXhyfX0pLFR1MD17fTtyVShUdTAse0VPTDooKT0+U2osYXJjaDooKT0+UnhlLGNwdXM6KCk9PkR1MCxkZWZhdWx0OigpPT5NdTAsZW5kaWFubmVzczooKT0+T3UwLGZyZWVtZW06KCk9PkN1MCxnZXROZXR3b3JrSW50ZXJmYWNlczooKT0+R3UwLGhvc3RuYW1lOigpPT5JdTAsbG9hZGF2ZzooKT0+QXUwLG5ldHdvcmtJbnRlcmZhY2VzOigpPT5qdTAscGxhdGZvcm06KCk9Pmp4ZSxyZWxlYXNlOigpPT5SdTAsdG1wRGlyOigpPT53aix0bXBkaXI6KCk9PkVqLHRvdGFsbWVtOigpPT5QdTAsdHlwZTooKT0+THUwLHVwdGltZTooKT0+TnUwfSk7ZnVuY3Rpb24gT3UwKCl7aWYodHlwZW9mIE5fPlwidVwiKXt2YXIgSDA9bmV3IEFycmF5QnVmZmVyKDIpLHowPW5ldyBVaW50OEFycmF5KEgwKSx4cj1uZXcgVWludDE2QXJyYXkoSDApO2lmKHowWzBdPTEsejBbMV09Mix4clswXT09PTI1OClOXz1cIkJFXCI7ZWxzZSBpZih4clswXT09PTUxMylOXz1cIkxFXCI7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZmlndXJlIG91dCBlbmRpYW5lc3NcIil9cmV0dXJuIE5ffWZ1bmN0aW9uIEl1MCgpe3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpcy5sb2NhdGlvbjxcInVcIj9nbG9iYWxUaGlzLmxvY2F0aW9uLmhvc3RuYW1lOlwiXCJ9ZnVuY3Rpb24gQXUwKCl7cmV0dXJuW119ZnVuY3Rpb24gTnUwKCl7cmV0dXJuIDB9ZnVuY3Rpb24gQ3UwKCl7cmV0dXJuIE51bWJlci5NQVhfVkFMVUV9ZnVuY3Rpb24gUHUwKCl7cmV0dXJuIE51bWJlci5NQVhfVkFMVUV9ZnVuY3Rpb24gRHUwKCl7cmV0dXJuW119ZnVuY3Rpb24gTHUwKCl7cmV0dXJuXCJCcm93c2VyXCJ9ZnVuY3Rpb24gUnUwKCl7cmV0dXJuIHR5cGVvZiBnbG9iYWxUaGlzLm5hdmlnYXRvcjxcInVcIj9nbG9iYWxUaGlzLm5hdmlnYXRvci5hcHBWZXJzaW9uOlwiXCJ9ZnVuY3Rpb24ganUwKCl7fWZ1bmN0aW9uIEd1MCgpe31mdW5jdGlvbiBSeGUoKXtyZXR1cm5cImphdmFzY3JpcHRcIn1mdW5jdGlvbiBqeGUoKXtyZXR1cm5cImJyb3dzZXJcIn1mdW5jdGlvbiB3aigpe3JldHVyblwiL3RtcFwifXZhciBOXyxFaixTaixNdTAsR3hlPUNfKHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHM6b3NcIigpe1B0KCksRWo9d2osU2o9YFxuYCxNdTA9e0VPTDpTaix0bXBkaXI6RWosdG1wRGlyOndqLG5ldHdvcmtJbnRlcmZhY2VzOmp1MCxnZXROZXR3b3JrSW50ZXJmYWNlczpHdTAscmVsZWFzZTpSdTAsdHlwZTpMdTAsY3B1czpEdTAsdG90YWxtZW06UHUwLGZyZWVtZW06Q3UwLHVwdGltZTpOdTAsbG9hZGF2ZzpBdTAsaG9zdG5hbWU6SXUwLGVuZGlhbm5lc3M6T3UwfX19KSxNeGU9ZXUoe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxscy1jb21tb25qczpvc1wiKEgwLHowKXtQdCgpO3ZhciB4cj0oR3hlKCksZVUoVHUwKSk7aWYoeHImJnhyLmRlZmF1bHQpe3owLmV4cG9ydHM9eHIuZGVmYXVsdDtmb3IobGV0IGdyIGluIHhyKXowLmV4cG9ydHNbZ3JdPXhyW2dyXX1lbHNlIHhyJiYoejAuZXhwb3J0cz14cil9fSksQnhlPWV1KHtcIm5vZGVfbW9kdWxlcy9kZXRlY3QtbmV3bGluZS9pbmRleC5qc1wiKEgwLHowKXtcInVzZSBzdHJpY3RcIjtQdCgpO3ZhciB4cj1ncj0+e2lmKHR5cGVvZiBnciE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBzdHJpbmdcIik7bGV0IGRlPWdyLm1hdGNoKC8oPzpcXHI/XFxuKS9nKXx8W107aWYoZGUubGVuZ3RoPT09MClyZXR1cm47bGV0IFZlPWRlLmZpbHRlcihLZT0+S2U9PT1gXFxyXG5gKS5sZW5ndGgsRGU9ZGUubGVuZ3RoLVZlO3JldHVybiBWZT5EZT9gXFxyXG5gOmBcbmB9O3owLmV4cG9ydHM9eHIsejAuZXhwb3J0cy5ncmFjZWZ1bD1ncj0+dHlwZW9mIGdyPT1cInN0cmluZ1wiJiZ4cihncil8fGBcbmB9fSkscXhlPWV1KHtcIm5vZGVfbW9kdWxlcy9qZXN0LWRvY2Jsb2NrL2J1aWxkL2luZGV4LmpzXCIoSDApe1widXNlIHN0cmljdFwiO1B0KCksT2JqZWN0LmRlZmluZVByb3BlcnR5KEgwLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLEgwLmV4dHJhY3Q9YXUsSDAucGFyc2U9S3QsSDAucGFyc2VXaXRoQ29tbWVudHM9WmksSDAucHJpbnQ9TG4sSDAuc3RyaXA9RW47ZnVuY3Rpb24gejAoKXtsZXQgZm49TXhlKCk7cmV0dXJuIHowPWZ1bmN0aW9uKCl7cmV0dXJuIGZufSxmbn1mdW5jdGlvbiB4cigpe2xldCBmbj1ncihCeGUoKSk7cmV0dXJuIHhyPWZ1bmN0aW9uKCl7cmV0dXJuIGZufSxmbn1mdW5jdGlvbiBncihmbil7cmV0dXJuIGZuJiZmbi5fX2VzTW9kdWxlP2ZuOntkZWZhdWx0OmZufX12YXIgZGU9L1xcKlxcLyQvLFZlPS9eXFwvXFwqXFwqLyxEZT0vXlxccyooXFwvXFwqXFwqPygufFxccj9cXG4pKj9cXCpcXC8pLyxLZT0vKF58XFxzKylcXC9cXC8oW15cXHJcXG5dKikvZyx0bj0vXihcXHI/XFxuKSsvLFFuPS8oPzpefFxccj9cXG4pICooQFteXFxyXFxuXSo/KSAqXFxyP1xcbiAqKD8hW15AXFxyXFxuXSpcXC9cXC9bXl0qKShbXkBcXHJcXG5cXHNdW15AXFxyXFxuXSs/KSAqXFxyP1xcbi9nLHJ0PS8oPzpefFxccj9cXG4pICpAKFxcUyspICooW15cXHJcXG5dKikvZyx0dD0vKFxccj9cXG58XikgKlxcKiA/L2csT3Q9W107ZnVuY3Rpb24gYXUoZm4pe2xldCBIdD1mbi5tYXRjaChEZSk7cmV0dXJuIEh0P0h0WzBdLnRyaW1MZWZ0KCk6XCJcIn1mdW5jdGlvbiBFbihmbil7bGV0IEh0PWZuLm1hdGNoKERlKTtyZXR1cm4gSHQmJkh0WzBdP2ZuLnN1YnN0cmluZyhIdFswXS5sZW5ndGgpOmZufWZ1bmN0aW9uIEt0KGZuKXtyZXR1cm4gWmkoZm4pLnByYWdtYXN9ZnVuY3Rpb24gWmkoZm4pe2xldCBIdD0oMCx4cigpLmRlZmF1bHQpKGZuKXx8ejAoKS5FT0w7Zm49Zm4ucmVwbGFjZShWZSxcIlwiKS5yZXBsYWNlKGRlLFwiXCIpLnJlcGxhY2UodHQsXCIkMVwiKTtsZXQgUzc9XCJcIjtmb3IoO1M3IT09Zm47KVM3PWZuLGZuPWZuLnJlcGxhY2UoUW4sXCJcIi5jb25jYXQoSHQsXCIkMSAkMlwiKS5jb25jYXQoSHQpKTtmbj1mbi5yZXBsYWNlKHRuLFwiXCIpLnRyaW1SaWdodCgpO2xldCBEdD1PYmplY3QuY3JlYXRlKG51bGwpLGtzPWZuLnJlcGxhY2UocnQsXCJcIikucmVwbGFjZSh0bixcIlwiKS50cmltUmlnaHQoKSxJbjtmb3IoO0luPXJ0LmV4ZWMoZm4pOyl7bGV0IFdjPUluWzJdLnJlcGxhY2UoS2UsXCJcIik7dHlwZW9mIER0W0luWzFdXT09XCJzdHJpbmdcInx8QXJyYXkuaXNBcnJheShEdFtJblsxXV0pP0R0W0luWzFdXT1PdC5jb25jYXQoRHRbSW5bMV1dLFdjKTpEdFtJblsxXV09V2N9cmV0dXJue2NvbW1lbnRzOmtzLHByYWdtYXM6RHR9fWZ1bmN0aW9uIExuKGZuKXtsZXR7Y29tbWVudHM6SHQ9XCJcIixwcmFnbWFzOlM3PXt9fT1mbixEdD0oMCx4cigpLmRlZmF1bHQpKEh0KXx8ejAoKS5FT0wsa3M9XCIvKipcIixJbj1cIiAqXCIsV2M9XCIgKi9cIixBaT1PYmplY3Qua2V5cyhTNyksbGk9QWkubWFwKGc3PT5UbihnNyxTN1tnN10pKS5yZWR1Y2UoKGc3LGF2KT0+ZzcuY29uY2F0KGF2KSxbXSkubWFwKGc3PT5JbitcIiBcIitnNytEdCkuam9pbihcIlwiKTtpZighSHQpe2lmKEFpLmxlbmd0aD09PTApcmV0dXJuXCJcIjtpZihBaS5sZW5ndGg9PT0xJiYhQXJyYXkuaXNBcnJheShTN1tBaVswXV0pKXtsZXQgZzc9UzdbQWlbMF1dO3JldHVyblwiXCIuY29uY2F0KGtzLFwiIFwiKS5jb25jYXQoVG4oQWlbMF0sZzcpWzBdKS5jb25jYXQoV2MpfX1sZXQganQ9SHQuc3BsaXQoRHQpLm1hcChnNz0+XCJcIi5jb25jYXQoSW4sXCIgXCIpLmNvbmNhdChnNykpLmpvaW4oRHQpK0R0O3JldHVybiBrcytEdCsoSHQ/anQ6XCJcIikrKEh0JiZBaS5sZW5ndGg/SW4rRHQ6XCJcIikrbGkrV2N9ZnVuY3Rpb24gVG4oZm4sSHQpe3JldHVybiBPdC5jb25jYXQoSHQpLm1hcChTNz0+XCJAXCIuY29uY2F0KGZuLFwiIFwiKS5jb25jYXQoUzcpLnRyaW0oKSl9fX0pLFV4ZT1ldSh7XCJzcmMvY29tbW9uL2VuZC1vZi1saW5lLmpzXCIoSDAsejApe1widXNlIHN0cmljdFwiO1B0KCk7ZnVuY3Rpb24geHIoRGUpe2xldCBLZT1EZS5pbmRleE9mKFwiXFxyXCIpO3JldHVybiBLZT49MD9EZS5jaGFyQXQoS2UrMSk9PT1gXG5gP1wiY3JsZlwiOlwiY3JcIjpcImxmXCJ9ZnVuY3Rpb24gZ3IoRGUpe3N3aXRjaChEZSl7Y2FzZVwiY3JcIjpyZXR1cm5cIlxcclwiO2Nhc2VcImNybGZcIjpyZXR1cm5gXFxyXG5gO2RlZmF1bHQ6cmV0dXJuYFxuYH19ZnVuY3Rpb24gZGUoRGUsS2Upe2xldCB0bjtzd2l0Y2goS2Upe2Nhc2VgXG5gOnRuPS9cXG4vZzticmVhaztjYXNlXCJcXHJcIjp0bj0vXFxyL2c7YnJlYWs7Y2FzZWBcXHJcbmA6dG49L1xcclxcbi9nO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIFwiZW9sXCIgJy5jb25jYXQoSlNPTi5zdHJpbmdpZnkoS2UpLFwiLlwiKSl9bGV0IFFuPURlLm1hdGNoKHRuKTtyZXR1cm4gUW4/UW4ubGVuZ3RoOjB9ZnVuY3Rpb24gVmUoRGUpe3JldHVybiBEZS5yZXBsYWNlKC9cXHJcXG4/L2csYFxuYCl9ejAuZXhwb3J0cz17Z3Vlc3NFbmRPZkxpbmU6eHIsY29udmVydEVuZE9mTGluZVRvQ2hhcnM6Z3IsY291bnRFbmRPZkxpbmVDaGFyczpkZSxub3JtYWxpemVFbmRPZkxpbmU6VmV9fX0pLEh4ZT1ldSh7XCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvZ2V0LXNoZWJhbmcuanNcIihIMCx6MCl7XCJ1c2Ugc3RyaWN0XCI7UHQoKTtmdW5jdGlvbiB4cihncil7aWYoIWdyLnN0YXJ0c1dpdGgoXCIjIVwiKSlyZXR1cm5cIlwiO2xldCBkZT1nci5pbmRleE9mKGBcbmApO3JldHVybiBkZT09PS0xP2dyOmdyLnNsaWNlKDAsZGUpfXowLmV4cG9ydHM9eHJ9fSksWHhlPWV1KHtcInNyYy9sYW5ndWFnZS1qcy9wcmFnbWEuanNcIihIMCx6MCl7XCJ1c2Ugc3RyaWN0XCI7UHQoKTt2YXJ7cGFyc2VXaXRoQ29tbWVudHM6eHIsc3RyaXA6Z3IsZXh0cmFjdDpkZSxwcmludDpWZX09cXhlKCkse25vcm1hbGl6ZUVuZE9mTGluZTpEZX09VXhlKCksS2U9SHhlKCk7ZnVuY3Rpb24gdG4odHQpe2xldCBPdD1LZSh0dCk7T3QmJih0dD10dC5zbGljZShPdC5sZW5ndGgrMSkpO2xldCBhdT1kZSh0dCkse3ByYWdtYXM6RW4sY29tbWVudHM6S3R9PXhyKGF1KTtyZXR1cm57c2hlYmFuZzpPdCx0ZXh0OnR0LHByYWdtYXM6RW4sY29tbWVudHM6S3R9fWZ1bmN0aW9uIFFuKHR0KXtsZXQgT3Q9T2JqZWN0LmtleXModG4odHQpLnByYWdtYXMpO3JldHVybiBPdC5pbmNsdWRlcyhcInByZXR0aWVyXCIpfHxPdC5pbmNsdWRlcyhcImZvcm1hdFwiKX1mdW5jdGlvbiBydCh0dCl7bGV0e3NoZWJhbmc6T3QsdGV4dDphdSxwcmFnbWFzOkVuLGNvbW1lbnRzOkt0fT10bih0dCksWmk9Z3IoYXUpLExuPVZlKHtwcmFnbWFzOk9iamVjdC5hc3NpZ24oe2Zvcm1hdDpcIlwifSxFbiksY29tbWVudHM6S3QudHJpbVN0YXJ0KCl9KTtyZXR1cm4oT3Q/XCJcIi5jb25jYXQoT3QsYFxuYCk6XCJcIikrRGUoTG4pKyhaaS5zdGFydHNXaXRoKGBcbmApP2BcbmA6YFxuXG5gKStaaX16MC5leHBvcnRzPXtoYXNQcmFnbWE6UW4saW5zZXJ0UHJhZ21hOnJ0fX19KSxZeGU9ZXUoe1wic3JjL3V0aWxzL2lzLW5vbi1lbXB0eS1hcnJheS5qc1wiKEgwLHowKXtcInVzZSBzdHJpY3RcIjtQdCgpO2Z1bmN0aW9uIHhyKGdyKXtyZXR1cm4gQXJyYXkuaXNBcnJheShncikmJmdyLmxlbmd0aD4wfXowLmV4cG9ydHM9eHJ9fSksQnUwPWV1KHtcInNyYy9sYW5ndWFnZS1qcy9sb2MuanNcIihIMCx6MCl7XCJ1c2Ugc3RyaWN0XCI7UHQoKTt2YXIgeHI9WXhlKCk7ZnVuY3Rpb24gZ3IodG4sUW4pe2xldHtpZ25vcmVEZWNvcmF0b3JzOnJ0fT1Rbnx8e307aWYoIXJ0KXtsZXQgdHQ9dG4uZGVjbGFyYXRpb24mJnRuLmRlY2xhcmF0aW9uLmRlY29yYXRvcnN8fHRuLmRlY29yYXRvcnM7aWYoeHIodHQpKXJldHVybiBncih0dFswXSl9cmV0dXJuIHRuLnJhbmdlP3RuLnJhbmdlWzBdOnRuLnN0YXJ0fWZ1bmN0aW9uIGRlKHRuKXtyZXR1cm4gdG4ucmFuZ2U/dG4ucmFuZ2VbMV06dG4uZW5kfWZ1bmN0aW9uIFZlKHRuLFFuKXtsZXQgcnQ9Z3IodG4pO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHJ0KSYmcnQ9PT1ncihRbil9ZnVuY3Rpb24gRGUodG4sUW4pe2xldCBydD1kZSh0bik7cmV0dXJuIE51bWJlci5pc0ludGVnZXIocnQpJiZydD09PWRlKFFuKX1mdW5jdGlvbiBLZSh0bixRbil7cmV0dXJuIFZlKHRuLFFuKSYmRGUodG4sUW4pfXowLmV4cG9ydHM9e2xvY1N0YXJ0OmdyLGxvY0VuZDpkZSxoYXNTYW1lTG9jU3RhcnQ6VmUsaGFzU2FtZUxvYzpLZX19fSksVnhlPWV1KHtcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS91dGlscy9jcmVhdGUtcGFyc2VyLmpzXCIoSDAsejApe1widXNlIHN0cmljdFwiO1B0KCk7dmFye2hhc1ByYWdtYTp4cn09WHhlKCkse2xvY1N0YXJ0OmdyLGxvY0VuZDpkZX09QnUwKCk7ZnVuY3Rpb24gVmUoRGUpe3JldHVybiBEZT10eXBlb2YgRGU9PVwiZnVuY3Rpb25cIj97cGFyc2U6RGV9OkRlLE9iamVjdC5hc3NpZ24oe2FzdEZvcm1hdDpcImVzdHJlZVwiLGhhc1ByYWdtYTp4cixsb2NTdGFydDpncixsb2NFbmQ6ZGV9LERlKX16MC5leHBvcnRzPVZlfX0pLHp4ZT1ldSh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvdXRpbHMvcmVwbGFjZS1oYXNoYmFuZy5qc1wiKEgwLHowKXtcInVzZSBzdHJpY3RcIjtQdCgpO2Z1bmN0aW9uIHhyKGdyKXtyZXR1cm4gZ3IuY2hhckF0KDApPT09XCIjXCImJmdyLmNoYXJBdCgxKT09PVwiIVwiP1wiLy9cIitnci5zbGljZSgyKTpncn16MC5leHBvcnRzPXhyfX0pLEt4ZT1ldSh7XCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvaXMtdHMta2V5d29yZC10eXBlLmpzXCIoSDAsejApe1widXNlIHN0cmljdFwiO1B0KCk7ZnVuY3Rpb24geHIoZ3Ipe2xldHt0eXBlOmRlfT1ncjtyZXR1cm4gZGUuc3RhcnRzV2l0aChcIlRTXCIpJiZkZS5lbmRzV2l0aChcIktleXdvcmRcIil9ejAuZXhwb3J0cz14cn19KSxXeGU9ZXUoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2lzLWJsb2NrLWNvbW1lbnQuanNcIihIMCx6MCl7XCJ1c2Ugc3RyaWN0XCI7UHQoKTt2YXIgeHI9bmV3IFNldChbXCJCbG9ja1wiLFwiQ29tbWVudEJsb2NrXCIsXCJNdWx0aUxpbmVcIl0pLGdyPWRlPT54ci5oYXMoZGU9PW51bGw/dm9pZCAwOmRlLnR5cGUpO3owLmV4cG9ydHM9Z3J9fSksSnhlPWV1KHtcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy10eXBlLWNhc3QtY29tbWVudC5qc1wiKEgwLHowKXtcInVzZSBzdHJpY3RcIjtQdCgpO3ZhciB4cj1XeGUoKTtmdW5jdGlvbiBncihkZSl7cmV0dXJuIHhyKGRlKSYmZGUudmFsdWVbMF09PT1cIipcIiYmL0B0eXBlXFxiLy50ZXN0KGRlLnZhbHVlKX16MC5leHBvcnRzPWdyfX0pLCR4ZT1ldSh7XCJzcmMvdXRpbHMvZ2V0LWxhc3QuanNcIihIMCx6MCl7XCJ1c2Ugc3RyaWN0XCI7UHQoKTt2YXIgeHI9Z3I9PmdyW2dyLmxlbmd0aC0xXTt6MC5leHBvcnRzPXhyfX0pLHF1MD1ldSh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvdmlzaXQtbm9kZS5qc1wiKEgwLHowKXtcInVzZSBzdHJpY3RcIjtQdCgpO2Z1bmN0aW9uIHhyKGdyLGRlKXtpZihBcnJheS5pc0FycmF5KGdyKSl7Zm9yKGxldCBWZT0wO1ZlPGdyLmxlbmd0aDtWZSsrKWdyW1ZlXT14cihncltWZV0sZGUpO3JldHVybiBncn1pZihnciYmdHlwZW9mIGdyPT1cIm9iamVjdFwiJiZ0eXBlb2YgZ3IudHlwZT09XCJzdHJpbmdcIil7bGV0IFZlPU9iamVjdC5rZXlzKGdyKTtmb3IobGV0IERlPTA7RGU8VmUubGVuZ3RoO0RlKyspZ3JbVmVbRGVdXT14cihncltWZVtEZV1dLGRlKTtyZXR1cm4gZGUoZ3IpfHxncn1yZXR1cm4gZ3J9ejAuZXhwb3J0cz14cn19KSxVdTA9ZXUoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL3Rocm93LXN5bnRheC1lcnJvci5qc1wiKEgwLHowKXtcInVzZSBzdHJpY3RcIjtQdCgpO3ZhciB4cj1GdTAoKTtmdW5jdGlvbiBncihkZSxWZSl7bGV0e3N0YXJ0OkRlLGVuZDpLZX09ZGUubG9jO3Rocm93IHhyKFZlLHtzdGFydDp7bGluZTpEZS5saW5lLGNvbHVtbjpEZS5jb2x1bW4rMX0sZW5kOntsaW5lOktlLmxpbmUsY29sdW1uOktlLmNvbHVtbisxfX0pfXowLmV4cG9ydHM9Z3J9fSksWnhlPWV1KHtcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS9wb3N0cHJvY2Vzcy90eXBlc2NyaXB0LmpzXCIoSDAsejApe1widXNlIHN0cmljdFwiO1B0KCk7dmFyIHhyPXF1MCgpLGdyPVV1MCgpO2Z1bmN0aW9uIGRlKEtlLHRuLFFuKXtsZXQgcnQ9S2UuZGVjb3JhdG9ycztpZighQXJyYXkuaXNBcnJheShydCkpcmV0dXJuO2xldCB0dD10bi5kZWNvcmF0b3JzOyghQXJyYXkuaXNBcnJheSh0dCl8fHR0Lmxlbmd0aCE9PXJ0Lmxlbmd0aHx8cnQuc29tZShPdD0+e2xldCBhdT1Rbi5nZXQoT3QpO3JldHVybiFhdXx8IXR0LmluY2x1ZGVzKGF1KX0pKSYmZ3IodG4sXCJMZWFkaW5nIGRlY29yYXRvcnMgbXVzdCBiZSBhdHRhY2hlZCB0byBhIGNsYXNzIGRlY2xhcmF0aW9uXCIpfWZ1bmN0aW9uIFZlKEtlLHRuKXtLZS5raW5kIT09MTY3fHxLZS5tb2RpZmllcnMmJiFLZS5tb2RpZmllcnMuc29tZSh0dD0+dHQua2luZD09PTEyNil8fEtlLmluaXRpYWxpemVyJiZ0bi52YWx1ZT09PW51bGwmJmdyKHRuLFwiQWJzdHJhY3QgcHJvcGVydHkgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXJcIil9ZnVuY3Rpb24gRGUoS2UsdG4pe2xldHtlc1RyZWVOb2RlVG9UU05vZGVNYXA6UW4sdHNOb2RlVG9FU1RyZWVOb2RlTWFwOnJ0fT10bi50c1BhcnNlUmVzdWx0O3hyKEtlLHR0PT57bGV0IE90PVFuLmdldCh0dCk7aWYoIU90KXJldHVybjtsZXQgYXU9cnQuZ2V0KE90KTthdT09PXR0JiYoZGUoT3QsYXUscnQpLFZlKE90LGF1KSl9KX16MC5leHBvcnRzPXt0aHJvd0Vycm9yRm9ySW52YWxpZE5vZGVzOkRlfX19KSxReGU9ZXUoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL2luZGV4LmpzXCIoSDAsejApe1widXNlIHN0cmljdFwiO1B0KCk7dmFye2xvY1N0YXJ0OnhyLGxvY0VuZDpncn09QnUwKCksZGU9S3hlKCksVmU9SnhlKCksRGU9JHhlKCksS2U9cXUwKCkse3Rocm93RXJyb3JGb3JJbnZhbGlkTm9kZXM6dG59PVp4ZSgpLFFuPVV1MCgpO2Z1bmN0aW9uIHJ0KEVuLEt0KXtpZihLdC5wYXJzZXI9PT1cInR5cGVzY3JpcHRcIiYmL0B8YWJzdHJhY3QvLnRlc3QoS3Qub3JpZ2luYWxUZXh0KSYmdG4oRW4sS3QpLEt0LnBhcnNlciE9PVwidHlwZXNjcmlwdFwiJiZLdC5wYXJzZXIhPT1cImZsb3dcIiYmS3QucGFyc2VyIT09XCJhY29yblwiJiZLdC5wYXJzZXIhPT1cImVzcHJlZVwiJiZLdC5wYXJzZXIhPT1cIm1lcml5YWhcIil7bGV0IExuPW5ldyBTZXQ7RW49S2UoRW4sVG49PntUbi5sZWFkaW5nQ29tbWVudHMmJlRuLmxlYWRpbmdDb21tZW50cy5zb21lKFZlKSYmTG4uYWRkKHhyKFRuKSl9KSxFbj1LZShFbixUbj0+e2lmKFRuLnR5cGU9PT1cIlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uXCIpe2xldHtleHByZXNzaW9uOmZufT1UbjtpZihmbi50eXBlPT09XCJUeXBlQ2FzdEV4cHJlc3Npb25cIilyZXR1cm4gZm4ucmFuZ2U9VG4ucmFuZ2UsZm47bGV0IEh0PXhyKFRuKTtpZighTG4uaGFzKEh0KSlyZXR1cm4gZm4uZXh0cmE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGZuLmV4dHJhKSx7fSx7cGFyZW50aGVzaXplZDohMH0pLGZufX0pfXJldHVybiBFbj1LZShFbixMbj0+e3N3aXRjaChMbi50eXBlKXtjYXNlXCJDaGFpbkV4cHJlc3Npb25cIjpyZXR1cm4gdHQoTG4uZXhwcmVzc2lvbik7Y2FzZVwiTG9naWNhbEV4cHJlc3Npb25cIjp7aWYoT3QoTG4pKXJldHVybiBhdShMbik7YnJlYWt9Y2FzZVwiVmFyaWFibGVEZWNsYXJhdGlvblwiOntsZXQgVG49RGUoTG4uZGVjbGFyYXRpb25zKTtUbiYmVG4uaW5pdCYmWmkoTG4sVG4pO2JyZWFrfWNhc2VcIlRTUGFyZW50aGVzaXplZFR5cGVcIjpyZXR1cm4gZGUoTG4udHlwZUFubm90YXRpb24pfHxMbi50eXBlQW5ub3RhdGlvbi50eXBlPT09XCJUU1RoaXNUeXBlXCJ8fChMbi50eXBlQW5ub3RhdGlvbi5yYW5nZT1beHIoTG4pLGdyKExuKV0pLExuLnR5cGVBbm5vdGF0aW9uO2Nhc2VcIlRTVHlwZVBhcmFtZXRlclwiOmlmKHR5cGVvZiBMbi5uYW1lPT1cInN0cmluZ1wiKXtsZXQgVG49eHIoTG4pO0xuLm5hbWU9e3R5cGU6XCJJZGVudGlmaWVyXCIsbmFtZTpMbi5uYW1lLHJhbmdlOltUbixUbitMbi5uYW1lLmxlbmd0aF19fWJyZWFrO2Nhc2VcIk9iamVjdEV4cHJlc3Npb25cIjppZihLdC5wYXJzZXI9PT1cInR5cGVzY3JpcHRcIil7bGV0IFRuPUxuLnByb3BlcnRpZXMuZmluZChmbj0+Zm4udHlwZT09PVwiUHJvcGVydHlcIiYmZm4udmFsdWUudHlwZT09PVwiVFNFbXB0eUJvZHlGdW5jdGlvbkV4cHJlc3Npb25cIik7VG4mJlFuKFRuLnZhbHVlLFwiVW5leHBlY3RlZCB0b2tlbi5cIil9YnJlYWs7Y2FzZVwiU2VxdWVuY2VFeHByZXNzaW9uXCI6e2xldCBUbj1EZShMbi5leHByZXNzaW9ucyk7TG4ucmFuZ2U9W3hyKExuKSxNYXRoLm1pbihncihUbiksZ3IoTG4pKV07YnJlYWt9Y2FzZVwiVG9waWNSZWZlcmVuY2VcIjpLdC5fX2lzVXNpbmdIYWNrUGlwZWxpbmU9ITA7YnJlYWs7Y2FzZVwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIjp7bGV0e2V4cG9ydGVkOlRufT1MbjtpZihLdC5wYXJzZXI9PT1cIm1lcml5YWhcIiYmVG4mJlRuLnR5cGU9PT1cIklkZW50aWZpZXJcIil7bGV0IGZuPUt0Lm9yaWdpbmFsVGV4dC5zbGljZSh4cihUbiksZ3IoVG4pKTsoZm4uc3RhcnRzV2l0aCgnXCInKXx8Zm4uc3RhcnRzV2l0aChcIidcIikpJiYoTG4uZXhwb3J0ZWQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LExuLmV4cG9ydGVkKSx7fSx7dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTpMbi5leHBvcnRlZC5uYW1lLHJhdzpmbn0pKX1icmVha319fSksRW47ZnVuY3Rpb24gWmkoTG4sVG4pe0t0Lm9yaWdpbmFsVGV4dFtncihUbildIT09XCI7XCImJihMbi5yYW5nZT1beHIoTG4pLGdyKFRuKV0pfX1mdW5jdGlvbiB0dChFbil7c3dpdGNoKEVuLnR5cGUpe2Nhc2VcIkNhbGxFeHByZXNzaW9uXCI6RW4udHlwZT1cIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIixFbi5jYWxsZWU9dHQoRW4uY2FsbGVlKTticmVhaztjYXNlXCJNZW1iZXJFeHByZXNzaW9uXCI6RW4udHlwZT1cIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwiLEVuLm9iamVjdD10dChFbi5vYmplY3QpO2JyZWFrO2Nhc2VcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjpFbi5leHByZXNzaW9uPXR0KEVuLmV4cHJlc3Npb24pO2JyZWFrfXJldHVybiBFbn1mdW5jdGlvbiBPdChFbil7cmV0dXJuIEVuLnR5cGU9PT1cIkxvZ2ljYWxFeHByZXNzaW9uXCImJkVuLnJpZ2h0LnR5cGU9PT1cIkxvZ2ljYWxFeHByZXNzaW9uXCImJkVuLm9wZXJhdG9yPT09RW4ucmlnaHQub3BlcmF0b3J9ZnVuY3Rpb24gYXUoRW4pe3JldHVybiBPdChFbik/YXUoe3R5cGU6XCJMb2dpY2FsRXhwcmVzc2lvblwiLG9wZXJhdG9yOkVuLm9wZXJhdG9yLGxlZnQ6YXUoe3R5cGU6XCJMb2dpY2FsRXhwcmVzc2lvblwiLG9wZXJhdG9yOkVuLm9wZXJhdG9yLGxlZnQ6RW4ubGVmdCxyaWdodDpFbi5yaWdodC5sZWZ0LHJhbmdlOlt4cihFbi5sZWZ0KSxncihFbi5yaWdodC5sZWZ0KV19KSxyaWdodDpFbi5yaWdodC5yaWdodCxyYW5nZTpbeHIoRW4pLGdyKEVuKV19KTpFbn16MC5leHBvcnRzPXJ0fX0pLEh1MD17fTtyVShIdTAse2RlZmF1bHQ6KCk9Plh1MH0pO3ZhciBYdTAscm9lPUNfKHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHM6ZnNcIigpe1B0KCksWHUwPXt9fX0pLGtqPWV1KHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHMtY29tbW9uanM6ZnNcIihIMCx6MCl7UHQoKTt2YXIgeHI9KHJvZSgpLGVVKEh1MCkpO2lmKHhyJiZ4ci5kZWZhdWx0KXt6MC5leHBvcnRzPXhyLmRlZmF1bHQ7Zm9yKGxldCBnciBpbiB4cil6MC5leHBvcnRzW2dyXT14cltncl19ZWxzZSB4ciYmKHowLmV4cG9ydHM9eHIpfX0pLFl1MD17fTtyVShZdTAse0FMUE5fRU5BQkxFRDooKT0+UHEsQ09QWUZJTEVfRVhDTDooKT0+Q0IsQ09QWUZJTEVfRklDTE9ORTooKT0+REIsQ09QWUZJTEVfRklDTE9ORV9GT1JDRTooKT0+UkIsREhfQ0hFQ0tfUF9OT1RfUFJJTUU6KCk9PkFxLERIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUU6KCk9PklxLERIX05PVF9TVUlUQUJMRV9HRU5FUkFUT1I6KCk9PkNxLERIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1I6KCk9Pk5xLEUyQklHOigpPT5JaixFQUNDRVM6KCk9PkFqLEVBRERSSU5VU0U6KCk9Pk5qLEVBRERSTk9UQVZBSUw6KCk9PkNqLEVBRk5PU1VQUE9SVDooKT0+UGosRUFHQUlOOigpPT5EaixFQUxSRUFEWTooKT0+TGosRUJBREY6KCk9PlJqLEVCQURNU0c6KCk9PmpqLEVCVVNZOigpPT5HaixFQ0FOQ0VMRUQ6KCk9Pk1qLEVDSElMRDooKT0+QmosRUNPTk5BQk9SVEVEOigpPT5xaixFQ09OTlJFRlVTRUQ6KCk9PlVqLEVDT05OUkVTRVQ6KCk9PkhqLEVERUFETEs6KCk9PlhqLEVERVNUQUREUlJFUTooKT0+WWosRURPTTooKT0+VmosRURRVU9UOigpPT56aixFRVhJU1Q6KCk9PktqLEVGQVVMVDooKT0+V2osRUZCSUc6KCk9PkpqLEVIT1NUVU5SRUFDSDooKT0+JGosRUlEUk06KCk9PlpqLEVJTFNFUTooKT0+UWosRUlOUFJPR1JFU1M6KCk9PnJHLEVJTlRSOigpPT5lRyxFSU5WQUw6KCk9Pm5HLEVJTzooKT0+dEcsRUlTQ09OTjooKT0+dUcsRUlTRElSOigpPT5pRyxFTE9PUDooKT0+ZkcsRU1GSUxFOigpPT54RyxFTUxJTks6KCk9Pm9HLEVNU0dTSVpFOigpPT5hRyxFTVVMVElIT1A6KCk9PmNHLEVOQU1FVE9PTE9ORzooKT0+c0csRU5FVERPV046KCk9PnZHLEVORVRSRVNFVDooKT0+bEcsRU5FVFVOUkVBQ0g6KCk9PmJHLEVORklMRTooKT0+cEcsRU5HSU5FX01FVEhPRF9BTEw6KCk9PlRxLEVOR0lORV9NRVRIT0RfQ0lQSEVSUzooKT0+RXEsRU5HSU5FX01FVEhPRF9ESDooKT0+ZHEsRU5HSU5FX01FVEhPRF9ESUdFU1RTOigpPT5TcSxFTkdJTkVfTUVUSE9EX0RTQTooKT0+aHEsRU5HSU5FX01FVEhPRF9FQzooKT0+d3EsRU5HSU5FX01FVEhPRF9OT05FOigpPT5PcSxFTkdJTkVfTUVUSE9EX1BLRVlfQVNOMV9NRVRIUzooKT0+RnEsRU5HSU5FX01FVEhPRF9QS0VZX01FVEhTOigpPT5ncSxFTkdJTkVfTUVUSE9EX1JBTkQ6KCk9PmtxLEVOR0lORV9NRVRIT0RfUlNBOigpPT55cSxFTk9CVUZTOigpPT5tRyxFTk9EQVRBOigpPT5fRyxFTk9ERVY6KCk9PnlHLEVOT0VOVDooKT0+aEcsRU5PRVhFQzooKT0+ZEcsRU5PTENLOigpPT5rRyxFTk9MSU5LOigpPT53RyxFTk9NRU06KCk9PkVHLEVOT01TRzooKT0+U0csRU5PUFJPVE9PUFQ6KCk9PmdHLEVOT1NQQzooKT0+RkcsRU5PU1I6KCk9PlRHLEVOT1NUUjooKT0+T0csRU5PU1lTOigpPT5JRyxFTk9UQ09OTjooKT0+QUcsRU5PVERJUjooKT0+TkcsRU5PVEVNUFRZOigpPT5DRyxFTk9UU09DSzooKT0+UEcsRU5PVFNVUDooKT0+REcsRU5PVFRZOigpPT5MRyxFTlhJTzooKT0+UkcsRU9QTk9UU1VQUDooKT0+akcsRU9WRVJGTE9XOigpPT5HRyxFUEVSTTooKT0+TUcsRVBJUEU6KCk9PkJHLEVQUk9UTzooKT0+cUcsRVBST1RPTk9TVVBQT1JUOigpPT5VRyxFUFJPVE9UWVBFOigpPT5IRyxFUkFOR0U6KCk9PlhHLEVST0ZTOigpPT5ZRyxFU1BJUEU6KCk9PlZHLEVTUkNIOigpPT56RyxFU1RBTEU6KCk9PktHLEVUSU1FOigpPT5XRyxFVElNRURPVVQ6KCk9PkpHLEVUWFRCU1k6KCk9PiRHLEVXT1VMREJMT0NLOigpPT5aRyxFWERFVjooKT0+UUcsRl9PSzooKT0+VEIsT1BFTlNTTF9WRVJTSU9OX05VTUJFUjooKT0+akIsT19BUFBFTkQ6KCk9Pm9CLE9fQ1JFQVQ6KCk9PnVCLE9fRElSRUNUT1JZOigpPT5hQixPX0RTWU5DOigpPT52QixPX0VYQ0w6KCk9PmlCLE9fTk9DVFRZOigpPT5mQixPX05PRk9MTE9XOigpPT5jQixPX05PTkJMT0NLOigpPT5iQixPX1JET05MWTooKT0+TU0sT19SRFdSOigpPT5xTSxPX1NZTUxJTks6KCk9PmxCLE9fU1lOQzooKT0+c0IsT19UUlVOQzooKT0+eEIsT19XUk9OTFk6KCk9PkJNLFBPSU5UX0NPTlZFUlNJT05fQ09NUFJFU1NFRDooKT0+S3EsUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQ6KCk9PkpxLFBPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEOigpPT5XcSxQUklPUklUWV9BQk9WRV9OT1JNQUw6KCk9PnRNLFBSSU9SSVRZX0JFTE9XX05PUk1BTDooKT0+ZU0sUFJJT1JJVFlfSElHSDooKT0+dU0sUFJJT1JJVFlfSElHSEVTVDooKT0+aU0sUFJJT1JJVFlfTE9XOigpPT5yTSxQUklPUklUWV9OT1JNQUw6KCk9Pm5NLFJTQV9OT19QQURESU5HOigpPT5ScSxSU0FfUEtDUzFfT0FFUF9QQURESU5HOigpPT5qcSxSU0FfUEtDUzFfUEFERElORzooKT0+RHEsUlNBX1BLQ1MxX1BTU19QQURESU5HOigpPT5NcSxSU0FfUFNTX1NBTFRMRU5fQVVUTzooKT0+VXEsUlNBX1BTU19TQUxUTEVOX0RJR0VTVDooKT0+QnEsUlNBX1BTU19TQUxUTEVOX01BWF9TSUdOOigpPT5xcSxSU0FfU1NMVjIzX1BBRERJTkc6KCk9PkxxLFJTQV9YOTMxX1BBRERJTkc6KCk9PkdxLFJUTERfR0xPQkFMOigpPT5UaixSVExEX0xBWlk6KCk9PmdqLFJUTERfTE9DQUw6KCk9Pk9qLFJUTERfTk9XOigpPT5GaixSX09LOigpPT5PQixTSUdBQlJUOigpPT5zTSxTSUdBTFJNOigpPT5kTSxTSUdCVVM6KCk9PmxNLFNJR0NITEQ6KCk9PndNLFNJR0NPTlQ6KCk9PkVNLFNJR0ZQRTooKT0+Yk0sU0lHSFVQOigpPT5mTSxTSUdJTEw6KCk9PmFNLFNJR0lORk86KCk9PkxNLFNJR0lOVDooKT0+eE0sU0lHSU86KCk9PkRNLFNJR0lPVDooKT0+dk0sU0lHS0lMTDooKT0+cE0sU0lHUElQRTooKT0+aE0sU0lHUFJPRjooKT0+Q00sU0lHUVVJVDooKT0+b00sU0lHU0VHVjooKT0+X00sU0lHU1RPUDooKT0+U00sU0lHU1lTOigpPT5STSxTSUdURVJNOigpPT5rTSxTSUdUUkFQOigpPT5jTSxTSUdUU1RQOigpPT5nTSxTSUdUVElOOigpPT5GTSxTSUdUVE9VOigpPT5UTSxTSUdVUkc6KCk9Pk9NLFNJR1VTUjE6KCk9Pm1NLFNJR1VTUjI6KCk9PnlNLFNJR1ZUQUxSTTooKT0+Tk0sU0lHV0lOQ0g6KCk9PlBNLFNJR1hDUFU6KCk9PklNLFNJR1hGU1o6KCk9PkFNLFNTTF9PUF9BTEw6KCk9PkdCLFNTTF9PUF9BTExPV19VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT046KCk9Pk1CLFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0U6KCk9PkJCLFNTTF9PUF9DSVNDT19BTllDT05ORUNUOigpPT5xQixTU0xfT1BfQ09PS0lFX0VYQ0hBTkdFOigpPT5VQixTU0xfT1BfQ1JZUFRPUFJPX1RMU0VYVF9CVUc6KCk9PkhCLFNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFM6KCk9PlhCLFNTTF9PUF9FUEhFTUVSQUxfUlNBOigpPT5ZQixTU0xfT1BfTEVHQUNZX1NFUlZFUl9DT05ORUNUOigpPT5WQixTU0xfT1BfTUlDUk9TT0ZUX0JJR19TU0xWM19CVUZGRVI6KCk9PnpCLFNTTF9PUF9NSUNST1NPRlRfU0VTU19JRF9CVUc6KCk9PktCLFNTTF9PUF9NU0lFX1NTTFYyX1JTQV9QQURESU5HOigpPT5XQixTU0xfT1BfTkVUU0NBUEVfQ0FfRE5fQlVHOigpPT5KQixTU0xfT1BfTkVUU0NBUEVfQ0hBTExFTkdFX0JVRzooKT0+JEIsU1NMX09QX05FVFNDQVBFX0RFTU9fQ0lQSEVSX0NIQU5HRV9CVUc6KCk9PlpCLFNTTF9PUF9ORVRTQ0FQRV9SRVVTRV9DSVBIRVJfQ0hBTkdFX0JVRzooKT0+UUIsU1NMX09QX05PX0NPTVBSRVNTSU9OOigpPT5ycSxTU0xfT1BfTk9fUVVFUllfTVRVOigpPT5lcSxTU0xfT1BfTk9fU0VTU0lPTl9SRVNVTVBUSU9OX09OX1JFTkVHT1RJQVRJT046KCk9Pm5xLFNTTF9PUF9OT19TU0x2MjooKT0+dHEsU1NMX09QX05PX1NTTHYzOigpPT51cSxTU0xfT1BfTk9fVElDS0VUOigpPT5pcSxTU0xfT1BfTk9fVExTdjE6KCk9PmZxLFNTTF9PUF9OT19UTFN2MV8xOigpPT54cSxTU0xfT1BfTk9fVExTdjFfMjooKT0+b3EsU1NMX09QX1BLQ1MxX0NIRUNLXzE6KCk9PmFxLFNTTF9PUF9QS0NTMV9DSEVDS18yOigpPT5jcSxTU0xfT1BfU0lOR0xFX0RIX1VTRTooKT0+c3EsU1NMX09QX1NJTkdMRV9FQ0RIX1VTRTooKT0+dnEsU1NMX09QX1NTTEVBWV8wODBfQ0xJRU5UX0RIX0JVRzooKT0+bHEsU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVRzooKT0+YnEsU1NMX09QX1RMU19CTE9DS19QQURESU5HX0JVRzooKT0+cHEsU1NMX09QX1RMU19ENV9CVUc6KCk9Pm1xLFNTTF9PUF9UTFNfUk9MTEJBQ0tfQlVHOigpPT5fcSxTX0lGQkxLOigpPT5yQixTX0lGQ0hSOigpPT5RTSxTX0lGRElSOigpPT5aTSxTX0lGSUZPOigpPT5lQixTX0lGTE5LOigpPT5uQixTX0lGTVQ6KCk9PkpNLFNfSUZSRUc6KCk9PiRNLFNfSUZTT0NLOigpPT50QixTX0lSR1JQOigpPT5kQixTX0lST1RIOigpPT5TQixTX0lSVVNSOigpPT5tQixTX0lSV1hHOigpPT5oQixTX0lSV1hPOigpPT5FQixTX0lSV1hVOigpPT5wQixTX0lXR1JQOigpPT5rQixTX0lXT1RIOigpPT5nQixTX0lXVVNSOigpPT5fQixTX0lYR1JQOigpPT53QixTX0lYT1RIOigpPT5GQixTX0lYVVNSOigpPT55QixUTFMxXzFfVkVSU0lPTjooKT0+WXEsVExTMV8yX1ZFUlNJT046KCk9PlZxLFRMUzFfM19WRVJTSU9OOigpPT56cSxUTFMxX1ZFUlNJT046KCk9PlhxLFVWX0RJUkVOVF9CTE9DSzooKT0+V00sVVZfRElSRU5UX0NIQVI6KCk9PktNLFVWX0RJUkVOVF9ESVI6KCk9PlhNLFVWX0RJUkVOVF9GSUZPOigpPT5WTSxVVl9ESVJFTlRfRklMRTooKT0+SE0sVVZfRElSRU5UX0xJTks6KCk9PllNLFVWX0RJUkVOVF9TT0NLRVQ6KCk9PnpNLFVWX0RJUkVOVF9VTktOT1dOOigpPT5VTSxVVl9GU19DT1BZRklMRV9FWENMOigpPT5OQixVVl9GU19DT1BZRklMRV9GSUNMT05FOigpPT5QQixVVl9GU19DT1BZRklMRV9GSUNMT05FX0ZPUkNFOigpPT5MQixVVl9GU19TWU1MSU5LX0RJUjooKT0+ak0sVVZfRlNfU1lNTElOS19KVU5DVElPTjooKT0+R00sV19PSzooKT0+SUIsWF9PSzooKT0+QUIsZGVmYXVsdDooKT0+VnUwLGRlZmF1bHRDaXBoZXJMaXN0OigpPT4kcSxkZWZhdWx0Q29yZUNpcGhlckxpc3Q6KCk9PkhxfSk7dmFyIGdqLEZqLFRqLE9qLElqLEFqLE5qLENqLFBqLERqLExqLFJqLGpqLEdqLE1qLEJqLHFqLFVqLEhqLFhqLFlqLFZqLHpqLEtqLFdqLEpqLCRqLFpqLFFqLHJHLGVHLG5HLHRHLHVHLGlHLGZHLHhHLG9HLGFHLGNHLHNHLHZHLGxHLGJHLHBHLG1HLF9HLHlHLGhHLGRHLGtHLHdHLEVHLFNHLGdHLEZHLFRHLE9HLElHLEFHLE5HLENHLFBHLERHLExHLFJHLGpHLEdHLE1HLEJHLHFHLFVHLEhHLFhHLFlHLFZHLHpHLEtHLFdHLEpHLCRHLFpHLFFHLHJNLGVNLG5NLHRNLHVNLGlNLGZNLHhNLG9NLGFNLGNNLHNNLHZNLGxNLGJNLHBNLG1NLF9NLHlNLGhNLGRNLGtNLHdNLEVNLFNNLGdNLEZNLFRNLE9NLElNLEFNLE5NLENNLFBNLERNLExNLFJNLGpNLEdNLE1NLEJNLHFNLFVNLEhNLFhNLFlNLFZNLHpNLEtNLFdNLEpNLCRNLFpNLFFNLHJCLGVCLG5CLHRCLHVCLGlCLGZCLHhCLG9CLGFCLGNCLHNCLHZCLGxCLGJCLHBCLG1CLF9CLHlCLGhCLGRCLGtCLHdCLEVCLFNCLGdCLEZCLFRCLE9CLElCLEFCLE5CLENCLFBCLERCLExCLFJCLGpCLEdCLE1CLEJCLHFCLFVCLEhCLFhCLFlCLFZCLHpCLEtCLFdCLEpCLCRCLFpCLFFCLHJxLGVxLG5xLHRxLHVxLGlxLGZxLHhxLG9xLGFxLGNxLHNxLHZxLGxxLGJxLHBxLG1xLF9xLHlxLGhxLGRxLGtxLHdxLEVxLFNxLGdxLEZxLFRxLE9xLElxLEFxLE5xLENxLFBxLERxLExxLFJxLGpxLEdxLE1xLEJxLHFxLFVxLEhxLFhxLFlxLFZxLHpxLEtxLFdxLEpxLCRxLFZ1MCxlb2U9Q18oe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxsczpjb25zdGFudHNcIigpe1B0KCksZ2o9MSxGaj0yLFRqPTgsT2o9NCxJaj03LEFqPTEzLE5qPTQ4LENqPTQ5LFBqPTQ3LERqPTM1LExqPTM3LFJqPTksamo9OTQsR2o9MTYsTWo9ODksQmo9MTAscWo9NTMsVWo9NjEsSGo9NTQsWGo9MTEsWWo9MzksVmo9MzMsemo9NjksS2o9MTcsV2o9MTQsSmo9MjcsJGo9NjUsWmo9OTAsUWo9OTIsckc9MzYsZUc9NCxuRz0yMix0Rz01LHVHPTU2LGlHPTIxLGZHPTYyLHhHPTI0LG9HPTMxLGFHPTQwLGNHPTk1LHNHPTYzLHZHPTUwLGxHPTUyLGJHPTUxLHBHPTIzLG1HPTU1LF9HPTk2LHlHPTE5LGhHPTIsZEc9OCxrRz03Nyx3Rz05NyxFRz0xMixTRz05MSxnRz00MixGRz0yOCxURz05OCxPRz05OSxJRz03OCxBRz01NyxORz0yMCxDRz02NixQRz0zOCxERz00NSxMRz0yNSxSRz02LGpHPTEwMixHRz04NCxNRz0xLEJHPTMyLHFHPTEwMCxVRz00MyxIRz00MSxYRz0zNCxZRz0zMCxWRz0yOSx6Rz0zLEtHPTcwLFdHPTEwMSxKRz02MCwkRz0yNixaRz0zNSxRRz0xOCxyTT0xOSxlTT0xMCxuTT0wLHRNPS03LHVNPS0xNCxpTT0tMjAsZk09MSx4TT0yLG9NPTMsYU09NCxjTT01LHNNPTYsdk09NixsTT0xMCxiTT04LHBNPTksbU09MzAsX009MTEseU09MzEsaE09MTMsZE09MTQsa009MTUsd009MjAsRU09MTksU009MTcsZ009MTgsRk09MjEsVE09MjIsT009MTYsSU09MjQsQU09MjUsTk09MjYsQ009MjcsUE09MjgsRE09MjMsTE09MjksUk09MTIsak09MSxHTT0yLE1NPTAsQk09MSxxTT0yLFVNPTAsSE09MSxYTT0yLFlNPTMsVk09NCx6TT01LEtNPTYsV009NyxKTT02MTQ0MCwkTT0zMjc2OCxaTT0xNjM4NCxRTT04MTkyLHJCPTI0NTc2LGVCPTQwOTYsbkI9NDA5NjAsdEI9NDkxNTIsdUI9NTEyLGlCPTIwNDgsZkI9MTMxMDcyLHhCPTEwMjQsb0I9OCxhQj0xMDQ4NTc2LGNCPTI1NixzQj0xMjgsdkI9NDE5NDMwNCxsQj0yMDk3MTUyLGJCPTQscEI9NDQ4LG1CPTI1NixfQj0xMjgseUI9NjQsaEI9NTYsZEI9MzIsa0I9MTYsd0I9OCxFQj03LFNCPTQsZ0I9MixGQj0xLFRCPTAsT0I9NCxJQj0yLEFCPTEsTkI9MSxDQj0xLFBCPTIsREI9MixMQj00LFJCPTQsakI9MjY5NDg4MTc1LEdCPTIxNDc0ODU3ODAsTUI9MjYyMTQ0LEJCPTQxOTQzMDQscUI9MzI3NjgsVUI9ODE5MixIQj0yMTQ3NDgzNjQ4LFhCPTIwNDgsWUI9MCxWQj00LHpCPTAsS0I9MCxXQj0wLEpCPTAsJEI9MCxaQj0wLFFCPTAscnE9MTMxMDcyLGVxPTQwOTYsbnE9NjU1MzYsdHE9MCx1cT0zMzU1NDQzMixpcT0xNjM4NCxmcT02NzEwODg2NCx4cT0yNjg0MzU0NTYsb3E9MTM0MjE3NzI4LGFxPTAsY3E9MCxzcT0wLHZxPTAsbHE9MCxicT0wLHBxPTAsbXE9MCxfcT04Mzg4NjA4LHlxPTEsaHE9MixkcT00LGtxPTgsd3E9MjA0OCxFcT02NCxTcT0xMjgsZ3E9NTEyLEZxPTEwMjQsVHE9NjU1MzUsT3E9MCxJcT0yLEFxPTEsTnE9NCxDcT04LFBxPTEsRHE9MSxMcT0yLFJxPTMsanE9NCxHcT01LE1xPTYsQnE9LTEscXE9LTIsVXE9LTIsSHE9XCJUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0OlRMU19DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTY6VExTX0FFU18xMjhfR0NNX1NIQTI1NjpFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTY6RUNESEUtRUNEU0EtQUVTMTI4LUdDTS1TSEEyNTY6RUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0OkVDREhFLUVDRFNBLUFFUzI1Ni1HQ00tU0hBMzg0OkRIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTY6RUNESEUtUlNBLUFFUzEyOC1TSEEyNTY6REhFLVJTQS1BRVMxMjgtU0hBMjU2OkVDREhFLVJTQS1BRVMyNTYtU0hBMzg0OkRIRS1SU0EtQUVTMjU2LVNIQTM4NDpFQ0RIRS1SU0EtQUVTMjU2LVNIQTI1NjpESEUtUlNBLUFFUzI1Ni1TSEEyNTY6SElHSDohYU5VTEw6IWVOVUxMOiFFWFBPUlQ6IURFUzohUkM0OiFNRDU6IVBTSzohU1JQOiFDQU1FTExJQVwiLFhxPTc2OSxZcT03NzAsVnE9NzcxLHpxPTc3MixLcT0yLFdxPTQsSnE9NiwkcT1cIlRMU19BRVNfMjU2X0dDTV9TSEEzODQ6VExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NjpUTFNfQUVTXzEyOF9HQ01fU0hBMjU2OkVDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NjpFQ0RIRS1FQ0RTQS1BRVMxMjgtR0NNLVNIQTI1NjpFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQ6RUNESEUtRUNEU0EtQUVTMjU2LUdDTS1TSEEzODQ6REhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NjpFQ0RIRS1SU0EtQUVTMTI4LVNIQTI1NjpESEUtUlNBLUFFUzEyOC1TSEEyNTY6RUNESEUtUlNBLUFFUzI1Ni1TSEEzODQ6REhFLVJTQS1BRVMyNTYtU0hBMzg0OkVDREhFLVJTQS1BRVMyNTYtU0hBMjU2OkRIRS1SU0EtQUVTMjU2LVNIQTI1NjpISUdIOiFhTlVMTDohZU5VTEw6IUVYUE9SVDohREVTOiFSQzQ6IU1ENTohUFNLOiFTUlA6IUNBTUVMTElBXCIsVnUwPXtSVExEX0xBWlk6Z2osUlRMRF9OT1c6RmosUlRMRF9HTE9CQUw6VGosUlRMRF9MT0NBTDpPaixFMkJJRzpJaixFQUNDRVM6QWosRUFERFJJTlVTRTpOaixFQUREUk5PVEFWQUlMOkNqLEVBRk5PU1VQUE9SVDpQaixFQUdBSU46RGosRUFMUkVBRFk6TGosRUJBREY6UmosRUJBRE1TRzpqaixFQlVTWTpHaixFQ0FOQ0VMRUQ6TWosRUNISUxEOkJqLEVDT05OQUJPUlRFRDpxaixFQ09OTlJFRlVTRUQ6VWosRUNPTk5SRVNFVDpIaixFREVBRExLOlhqLEVERVNUQUREUlJFUTpZaixFRE9NOlZqLEVEUVVPVDp6aixFRVhJU1Q6S2osRUZBVUxUOldqLEVGQklHOkpqLEVIT1NUVU5SRUFDSDokaixFSURSTTpaaixFSUxTRVE6UWosRUlOUFJPR1JFU1M6ckcsRUlOVFI6ZUcsRUlOVkFMOm5HLEVJTzp0RyxFSVNDT05OOnVHLEVJU0RJUjppRyxFTE9PUDpmRyxFTUZJTEU6eEcsRU1MSU5LOm9HLEVNU0dTSVpFOmFHLEVNVUxUSUhPUDpjRyxFTkFNRVRPT0xPTkc6c0csRU5FVERPV046dkcsRU5FVFJFU0VUOmxHLEVORVRVTlJFQUNIOmJHLEVORklMRTpwRyxFTk9CVUZTOm1HLEVOT0RBVEE6X0csRU5PREVWOnlHLEVOT0VOVDpoRyxFTk9FWEVDOmRHLEVOT0xDSzprRyxFTk9MSU5LOndHLEVOT01FTTpFRyxFTk9NU0c6U0csRU5PUFJPVE9PUFQ6Z0csRU5PU1BDOkZHLEVOT1NSOlRHLEVOT1NUUjpPRyxFTk9TWVM6SUcsRU5PVENPTk46QUcsRU5PVERJUjpORyxFTk9URU1QVFk6Q0csRU5PVFNPQ0s6UEcsRU5PVFNVUDpERyxFTk9UVFk6TEcsRU5YSU86UkcsRU9QTk9UU1VQUDpqRyxFT1ZFUkZMT1c6R0csRVBFUk06TUcsRVBJUEU6QkcsRVBST1RPOnFHLEVQUk9UT05PU1VQUE9SVDpVRyxFUFJPVE9UWVBFOkhHLEVSQU5HRTpYRyxFUk9GUzpZRyxFU1BJUEU6VkcsRVNSQ0g6ekcsRVNUQUxFOktHLEVUSU1FOldHLEVUSU1FRE9VVDpKRyxFVFhUQlNZOiRHLEVXT1VMREJMT0NLOlpHLEVYREVWOlFHLFBSSU9SSVRZX0xPVzpyTSxQUklPUklUWV9CRUxPV19OT1JNQUw6ZU0sUFJJT1JJVFlfTk9STUFMOm5NLFBSSU9SSVRZX0FCT1ZFX05PUk1BTDp0TSxQUklPUklUWV9ISUdIOnVNLFBSSU9SSVRZX0hJR0hFU1Q6aU0sU0lHSFVQOmZNLFNJR0lOVDp4TSxTSUdRVUlUOm9NLFNJR0lMTDphTSxTSUdUUkFQOmNNLFNJR0FCUlQ6c00sU0lHSU9UOnZNLFNJR0JVUzpsTSxTSUdGUEU6Yk0sU0lHS0lMTDpwTSxTSUdVU1IxOm1NLFNJR1NFR1Y6X00sU0lHVVNSMjp5TSxTSUdQSVBFOmhNLFNJR0FMUk06ZE0sU0lHVEVSTTprTSxTSUdDSExEOndNLFNJR0NPTlQ6RU0sU0lHU1RPUDpTTSxTSUdUU1RQOmdNLFNJR1RUSU46Rk0sU0lHVFRPVTpUTSxTSUdVUkc6T00sU0lHWENQVTpJTSxTSUdYRlNaOkFNLFNJR1ZUQUxSTTpOTSxTSUdQUk9GOkNNLFNJR1dJTkNIOlBNLFNJR0lPOkRNLFNJR0lORk86TE0sU0lHU1lTOlJNLFVWX0ZTX1NZTUxJTktfRElSOmpNLFVWX0ZTX1NZTUxJTktfSlVOQ1RJT046R00sT19SRE9OTFk6TU0sT19XUk9OTFk6Qk0sT19SRFdSOnFNLFVWX0RJUkVOVF9VTktOT1dOOlVNLFVWX0RJUkVOVF9GSUxFOkhNLFVWX0RJUkVOVF9ESVI6WE0sVVZfRElSRU5UX0xJTks6WU0sVVZfRElSRU5UX0ZJRk86Vk0sVVZfRElSRU5UX1NPQ0tFVDp6TSxVVl9ESVJFTlRfQ0hBUjpLTSxVVl9ESVJFTlRfQkxPQ0s6V00sU19JRk1UOkpNLFNfSUZSRUc6JE0sU19JRkRJUjpaTSxTX0lGQ0hSOlFNLFNfSUZCTEs6ckIsU19JRklGTzplQixTX0lGTE5LOm5CLFNfSUZTT0NLOnRCLE9fQ1JFQVQ6dUIsT19FWENMOmlCLE9fTk9DVFRZOmZCLE9fVFJVTkM6eEIsT19BUFBFTkQ6b0IsT19ESVJFQ1RPUlk6YUIsT19OT0ZPTExPVzpjQixPX1NZTkM6c0IsT19EU1lOQzp2QixPX1NZTUxJTks6bEIsT19OT05CTE9DSzpiQixTX0lSV1hVOnBCLFNfSVJVU1I6bUIsU19JV1VTUjpfQixTX0lYVVNSOnlCLFNfSVJXWEc6aEIsU19JUkdSUDpkQixTX0lXR1JQOmtCLFNfSVhHUlA6d0IsU19JUldYTzpFQixTX0lST1RIOlNCLFNfSVdPVEg6Z0IsU19JWE9USDpGQixGX09LOlRCLFJfT0s6T0IsV19PSzpJQixYX09LOkFCLFVWX0ZTX0NPUFlGSUxFX0VYQ0w6TkIsQ09QWUZJTEVfRVhDTDpDQixVVl9GU19DT1BZRklMRV9GSUNMT05FOlBCLENPUFlGSUxFX0ZJQ0xPTkU6REIsVVZfRlNfQ09QWUZJTEVfRklDTE9ORV9GT1JDRTpMQixDT1BZRklMRV9GSUNMT05FX0ZPUkNFOlJCLE9QRU5TU0xfVkVSU0lPTl9OVU1CRVI6akIsU1NMX09QX0FMTDpHQixTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OOk1CLFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0U6QkIsU1NMX09QX0NJU0NPX0FOWUNPTk5FQ1Q6cUIsU1NMX09QX0NPT0tJRV9FWENIQU5HRTpVQixTU0xfT1BfQ1JZUFRPUFJPX1RMU0VYVF9CVUc6SEIsU1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UUzpYQixTU0xfT1BfRVBIRU1FUkFMX1JTQTpZQixTU0xfT1BfTEVHQUNZX1NFUlZFUl9DT05ORUNUOlZCLFNTTF9PUF9NSUNST1NPRlRfQklHX1NTTFYzX0JVRkZFUjp6QixTU0xfT1BfTUlDUk9TT0ZUX1NFU1NfSURfQlVHOktCLFNTTF9PUF9NU0lFX1NTTFYyX1JTQV9QQURESU5HOldCLFNTTF9PUF9ORVRTQ0FQRV9DQV9ETl9CVUc6SkIsU1NMX09QX05FVFNDQVBFX0NIQUxMRU5HRV9CVUc6JEIsU1NMX09QX05FVFNDQVBFX0RFTU9fQ0lQSEVSX0NIQU5HRV9CVUc6WkIsU1NMX09QX05FVFNDQVBFX1JFVVNFX0NJUEhFUl9DSEFOR0VfQlVHOlFCLFNTTF9PUF9OT19DT01QUkVTU0lPTjpycSxTU0xfT1BfTk9fUVVFUllfTVRVOmVxLFNTTF9PUF9OT19TRVNTSU9OX1JFU1VNUFRJT05fT05fUkVORUdPVElBVElPTjpucSxTU0xfT1BfTk9fU1NMdjI6dHEsU1NMX09QX05PX1NTTHYzOnVxLFNTTF9PUF9OT19USUNLRVQ6aXEsU1NMX09QX05PX1RMU3YxOmZxLFNTTF9PUF9OT19UTFN2MV8xOnhxLFNTTF9PUF9OT19UTFN2MV8yOm9xLFNTTF9PUF9QS0NTMV9DSEVDS18xOmFxLFNTTF9PUF9QS0NTMV9DSEVDS18yOmNxLFNTTF9PUF9TSU5HTEVfREhfVVNFOnNxLFNTTF9PUF9TSU5HTEVfRUNESF9VU0U6dnEsU1NMX09QX1NTTEVBWV8wODBfQ0xJRU5UX0RIX0JVRzpscSxTU0xfT1BfU1NMUkVGMl9SRVVTRV9DRVJUX1RZUEVfQlVHOmJxLFNTTF9PUF9UTFNfQkxPQ0tfUEFERElOR19CVUc6cHEsU1NMX09QX1RMU19ENV9CVUc6bXEsU1NMX09QX1RMU19ST0xMQkFDS19CVUc6X3EsRU5HSU5FX01FVEhPRF9SU0E6eXEsRU5HSU5FX01FVEhPRF9EU0E6aHEsRU5HSU5FX01FVEhPRF9ESDpkcSxFTkdJTkVfTUVUSE9EX1JBTkQ6a3EsRU5HSU5FX01FVEhPRF9FQzp3cSxFTkdJTkVfTUVUSE9EX0NJUEhFUlM6RXEsRU5HSU5FX01FVEhPRF9ESUdFU1RTOlNxLEVOR0lORV9NRVRIT0RfUEtFWV9NRVRIUzpncSxFTkdJTkVfTUVUSE9EX1BLRVlfQVNOMV9NRVRIUzpGcSxFTkdJTkVfTUVUSE9EX0FMTDpUcSxFTkdJTkVfTUVUSE9EX05PTkU6T3EsREhfQ0hFQ0tfUF9OT1RfU0FGRV9QUklNRTpJcSxESF9DSEVDS19QX05PVF9QUklNRTpBcSxESF9VTkFCTEVfVE9fQ0hFQ0tfR0VORVJBVE9SOk5xLERIX05PVF9TVUlUQUJMRV9HRU5FUkFUT1I6Q3EsQUxQTl9FTkFCTEVEOlBxLFJTQV9QS0NTMV9QQURESU5HOkRxLFJTQV9TU0xWMjNfUEFERElORzpMcSxSU0FfTk9fUEFERElORzpScSxSU0FfUEtDUzFfT0FFUF9QQURESU5HOmpxLFJTQV9YOTMxX1BBRERJTkc6R3EsUlNBX1BLQ1MxX1BTU19QQURESU5HOk1xLFJTQV9QU1NfU0FMVExFTl9ESUdFU1Q6QnEsUlNBX1BTU19TQUxUTEVOX01BWF9TSUdOOnFxLFJTQV9QU1NfU0FMVExFTl9BVVRPOlVxLGRlZmF1bHRDb3JlQ2lwaGVyTGlzdDpIcSxUTFMxX1ZFUlNJT046WHEsVExTMV8xX1ZFUlNJT046WXEsVExTMV8yX1ZFUlNJT046VnEsVExTMV8zX1ZFUlNJT046enEsUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEOktxLFBPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEOldxLFBPSU5UX0NPTlZFUlNJT05fSFlCUklEOkpxLGRlZmF1bHRDaXBoZXJMaXN0OiRxfX19KSxub2U9ZXUoe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxscy1jb21tb25qczpjb25zdGFudHNcIihIMCx6MCl7UHQoKTt2YXIgeHI9KGVvZSgpLGVVKFl1MCkpO2lmKHhyJiZ4ci5kZWZhdWx0KXt6MC5leHBvcnRzPXhyLmRlZmF1bHQ7Zm9yKGxldCBnciBpbiB4cil6MC5leHBvcnRzW2dyXT14cltncl19ZWxzZSB4ciYmKHowLmV4cG9ydHM9eHIpfX0pLHRvZT1ldSh7XCJub2RlX21vZHVsZXMvZmxvdy1wYXJzZXIvZmxvd19wYXJzZXIuanNcIihIMCl7UHQoKSxmdW5jdGlvbih6MCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHhyPVwibWVtYmVyX3Byb3BlcnR5X2V4cHJlc3Npb25cIixncj04NDgzLGRlPTEyNTM4LFZlPVwiY2hpbGRyZW5cIixEZT1cInByZWRpY2F0ZV9leHByZXNzaW9uXCIsS2U9XCI/P1wiLHRuPVwiSWRlbnRpZmllclwiLFFuPTY0MzExLHJ0PTE5Mix0dD0xMTcxMCxPdD0xMjI2NTQsYXU9MTEwOTQ3LEVuPTY3NTkxLEt0PVwiIVwiLFppPVwiZGlyZWN0aXZlXCIsTG49MTYzLFRuPVwiYmxvY2tcIixmbj0xMjY1NTMsSHQ9MTI3MzUsUzc9NjgwOTYsRHQ9XCJwYXJhbXNcIixrcz05MzA3MSxJbj0xMjIsV2M9NzI3NjcsQWk9MTgxLGxpPVwiZm9yX3N0YXRlbWVudFwiLGp0PTEyOCxnNz1cInN0YXJ0XCIsYXY9NDM4NjcsblU9XCJfbWV0aG9kXCIsUF89NzA0MTQsY3Y9XCI+XCIsUWk9XCJjYXRjaF9ib2R5XCIsRF89MTIwMTIxLHRVPVwidGhlIGVuZCBvZiBhbiBleHByZXNzaW9uIHN0YXRlbWVudCAoYDtgKVwiLExfPTEyNDkwNyx1VT0xMDI3LHM0PTEyNjU1OCxyZj1cImpzeF9mcmFnbWVudFwiLFJfPTQyNTI3LGpfPVwiZGVjb3JhdG9yc1wiLEdfPTgyOTQzLE1fPTcxMDM5LEJfPTExMDg4MixxXz02NzUxNCxpVT04NDcyLGZVPVwidXBkYXRlXCIsVV89MTI3ODMsSF89MTI0MzgsWF89MTIzNTIsWV89ODUxMSxWXz00Mjk2MSxGMj1cIm1ldGhvZFwiLHY0PTEyMDcxMyxlZj04MTkxLG5mPVwiZnVuY3Rpb25fcGFyYW1cIix6Xz02Nzg3MSxGNz1cInRocm93XCIsS189MTE1MDcsdGY9XCJjbGFzc19leHRlbmRzXCIsV189NDM0NzAsdWY9XCJvYmplY3Rfa2V5X2xpdGVyYWxcIixKXz03MTkwMywkXz02NTQzNyxmZj1cImpzeF9jaGlsZFwiLFpfPTQzMzExLGw0PTExOTk5NSxRXz02NzYzNyxiND02ODExNixyeT02NjIwNCxleT02NTQ3MCx4VT1cIjw8PVwiLG55PVwiZVwiLHR5PTY3MzkxLHA0PTExNjMxLG00PTY5OTU2LHN2PVwidHBhcmFtc1wiLHV5PTY2NzM1LGl5PTY0MjE3LGZ5PTQzNjk3LG9VPVwiSW52YWxpZCBiaW5hcnkvb2N0YWwgXCIseHk9LTQzLG95PTQzMjU1LF80PVwiZG9cIixheT00MzMwMSx4Zj1cImJpbmRpbmdfcGF0dGVyblwiLGN5PTEyMDQ4NyxvZj1cImpzeF9hdHRyaWJ1dGVfdmFsdWVfbGl0ZXJhbFwiLHk0PVwicGFja2FnZVwiLGFmPVwiaW50ZXJmYWNlX2RlY2xhcmF0aW9uXCIsc3k9NzI3NTAsdnk9MTE5ODkyLGFVPVwidGFpbFwiLGNVPS01MyxjZj0xMTEsc1U9MTgwLGx5PTExOTgwNyxieT03MTk1OSx2VT04MjA2LHB5PTY1NjEzLEpjPVwidHlwZVwiLG15PTU1MjE1LF95PS00MixzZj1cImV4cG9ydF9kZWZhdWx0X2RlY2xhcmF0aW9uX2RlY2xcIixoND03Mjk3MCxsVT1cImZpbHRlcmVkX291dFwiLHl5PTcwNDE2LGJVPTIyOSx2Zj1cImZ1bmN0aW9uX3RoaXNfcGFyYW1cIixwVT1cIm1vZHVsZVwiLGQ0PVwidHJ5XCIsaHk9NzAxNDMsZHk9MTI1MTgzLGt5PTcwNDEyLGQwPVwiQF0pXCIsbGY9XCJiaW5hcnlcIixtVT1cImluZmluaXR5XCIsazQ9XCJwcml2YXRlXCIsd3k9NjU1MDAsdzQ9XCJoYXNfdW5rbm93bl9tZW1iZXJzXCIsYmY9XCJwYXR0ZXJuX2FycmF5X3Jlc3RfZWxlbWVudFwiLF9VPVwiUHJvcGVydHlcIix3cz1cImltcGxlbWVudHNcIixFeT0xMjU0OCx5VT0yMTEscGY9XCJpZl9hbHRlcm5hdGVfc3RhdGVtZW50XCIsU3k9MTI0OTAzLGd5PTQzMzk1LHZ2PVwic3JjL3BhcnNlci90eXBlX3BhcnNlci5tbFwiLEZ5PTY2OTE1LEU0PTEyNjU1MixUeT0xMjA3MTIsUzQ9MTI2NTU1LE95PTEyMDU5NixjNz1cInJhd1wiLFQ3PTExMixtZj1cImNsYXNzX2RlY2xhcmF0aW9uXCIsX2Y9XCJzdGF0ZW1lbnRcIixJeT0xMjY2MjQsQXk9NzEyMzUseWY9XCJtZXRhX3Byb3BlcnR5XCIsTnk9NDQwMDIsQ3k9ODQ2NyxoZj1cImNsYXNzX3Byb3BlcnR5X3ZhbHVlXCIsUHk9ODMxOCxkZj1cIm9wdGlvbmFsX2NhbGxcIixEeT00Mzc2MSwkYz1cImtpbmRcIixrZj1cImNsYXNzX2lkZW50aWZpZXJcIixMeT02OTk1NSxSeT02NjM3OCxqeT0xMjA1MTIsR3k9NjgyMjAsWHQ9MTEwLE15PTEyMzU4MyxUMj1cImRlY2xhcmVcIix3Zj1cInR5cGVvZl9tZW1iZXJfaWRlbnRpZmllclwiLEVmPVwiY2F0Y2hfY2xhdXNlXCIsQnk9MTE3NDIscXk9NzA4MzEsZzQ9ODQ2OCxTZj1cImZvcl9pbl9hc3NpZ25tZW50X3BhdHRlcm5cIixoVT0tMzIsZ2Y9XCJvYmplY3RfXCIsVXk9NDMyNjIsSHk9XCJtaXhpbnNcIixGZj1cInR5cGVfcGFyYW1cIixkVT1cInZpc2l0X3RyYWlsaW5nX2NvbW1lbnRcIixYeT03MTgzOSxPMj1cImJvb2xlYW5cIixUZj1cImNhbGxcIixrVT1cImV4cGVjdGVkICpcIixZeT00MzAxMCxWeT0yNDEsTnU9XCJleHByZXNzaW9uXCIsSTI9XCJjb2x1bW5cIix6eT00MzU5NSxLeT00MzI1OCxXeT0xOTE0NTYsT2Y9XCJtZW1iZXJfdHlwZV9pZGVudGlmaWVyXCIsQTI9MTE3LEp5PTQzNzU0LEY0PTEyNjU0NCx3VT1cIkFzc2VydF9mYWlsdXJlXCIsJHk9NjY1MTcsWnk9NDI5NjQsSWY9XCJlbnVtX251bWJlcl9tZW1iZXJcIixFVT1cImEgc3RyaW5nXCIsUXk9NjU4NTUscmg9MTE5OTkzLGVoPVwib3BhcXVlXCIsU1U9ODcwNTMwNzc2LG5oPTY3NzExLHRoPTY2OTk0LEFmPVwiZW51bV9zeW1ib2xfYm9keVwiLGdVPTE4NSxGVT0yMTksVDQ9XCJmaWx0ZXJcIix1aD00MzYxNSxPND0xMjY1NjAsaWg9MTk5MDMsbjE9XCJnZXRcIixmaD02NDMxNixUVT1gRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xuYCxJND1cImV4cG9ydGVkXCIsT1U9XCI+PVwiLEp1PVwicmV0dXJuXCIsQTQ9XCJtZW1iZXJzXCIsTjQ9MjU2LHhoPTY2OTYyLG9oPTY0Mjc5LGFoPTY3ODI5LElVPVwiRW51bSBgXCIsQVU9XCImJj1cIixOZj1cIm9iamVjdF9wcm9wZXJ0eVwiLGNoPTY3NTg5LENmPVwicGF0dGVybl9vYmplY3RfcHJvcGVydHlcIixQZj1cInRlbXBsYXRlX2xpdGVyYWxfZWxlbWVudFwiLHNoPTY5NTUxLE5pPTEyNzM0MzYwMCxDND03MDQ1MixEZj1cImNsYXNzX2VsZW1lbnRcIix2aD1cIkVOT0VOVFwiLGxoPTcxMTMxLE5VPTIwMCxiaD0xMjAxMzcscGg9OTQwOTgsUDQ9NzIzNDksQ1U9MTMyOCxMZj1cImZ1bmN0aW9uX2lkZW50aWZpZXJcIixtaD0xMjY1NDMsUmY9XCJqc3hfYXR0cmlidXRlX25hbWVcIixfaD00MzQ4Nyxkcj1cIkBbPDI+eyBcIixQVT1cIkVOT1RFTVBUWVwiLHloPTY1OTA4LGhoPTcyMTkxLEQ0PTEyMDUxMyxkaD05MjkwOSxEVT1cImJvdW5kXCIsa2g9MTYyLExVPTE3MixMND0xMjAwNzAsamY9XCJlbnVtX251bWJlcl9ib2R5XCIsR2Y9XCJ1cGRhdGVfZXhwcmVzc2lvblwiLE1mPVwic3ByZWFkX2VsZW1lbnRcIixCZj1cImZvcl9pbl9sZWZ0X2RlY2xhcmF0aW9uXCIsUjQ9NjQzMTksTjI9XCIlZFwiLHdoPTEyNzAzLGo0PTExNjg3LFJVPVwiQCwpKUBdXCIsRWg9NDIyMzkscWY9XCJ0eXBlX2Nhc3RcIixTaD00MjUwOCxVZj1cImNsYXNzX2ltcGxlbWVudHNfaW50ZXJmYWNlXCIsZ2g9Njc2NDAsRmg9NjA1ODU3Njk1LGpVPVwiQ3lnd2luXCIsR1U9XCJidWZmZXIubWxcIixUaD0xMjQ5MDgsTVU9XCJoYW5kbGVyXCIsT2g9NjYyMDcsSWg9NjY5NjMsRzQ9MTE1NTgsQlU9XCItPVwiLFBuPTExMyxBaD0xMTM3NzUscVU9XCJjb2xsZWN0X2NvbW1lbnRzXCIsTTQ9MTI2NTQwLGx2PVwic2V0XCIsSGY9XCJhc3NpZ25tZW50X3BhdHRlcm5cIixDdT1cInJpZ2h0XCIsWGY9XCJvYmplY3Rfa2V5X2lkZW50aWZpZXJcIixCND0xMjAxMzMsTmg9XCJJbnZhbGlkIG51bWJlciBcIixDaD00Mjk2MyxxND0xMjUzOSxQaD02ODAyMyxEaD00Mzc5OCx0aT0xMDAsWWY9XCJwYXR0ZXJuX2xpdGVyYWxcIixWZj1cImdlbmVyaWNfdHlwZVwiLFVVPVwiKlwiLExoPTQyNzgzLFJoPTQyODkwLGpoPTIzMCxVND1cImVsc2VcIixHaD03MDg1MSxNaD02OTI4OSxIVT1cInRoZSBzdGFydCBvZiBhIHN0YXRlbWVudFwiLEg0PVwicHJvcGVydGllc1wiLEJoPTQzNjk2LHFoPTExMDk1OSx6Zj1cImRlY2xhcmVfZnVuY3Rpb25cIixYND0xMjA1OTcsS2Y9XCJvYmplY3RfaW5kZXhlcl9wcm9wZXJ0eV90eXBlXCIsVWg9NzA0OTIsSGg9MjA0OCxDMj1cImFyZ3VtZW50c1wiLFhyPVwiY29tbWVudHNcIixYaD00MzA0MixaYz0xMDcsWWg9MTEwNTc1LFhVPTE2MSxWaD02NzQzMSxZND1cImxpbmVcIixQMj1cImRlY2xhcmF0aW9uXCIsbnU9XCJzdGF0aWNcIixXZj1cInBhdHRlcm5faWRlbnRpZmllclwiLHpoPTY5OTU4LFlVPVwidGhlXCIsS2g9XCJVbml4LlVuaXhfZXJyb3JcIixXaD00MzgxNCxRYz1cImFubm90XCIsSmg9NjU3ODYsJGg9NjYzMDMsWmg9NjQ5NjcsUWg9NjQyNTUscmQ9ODU4NCxWND0xMjA2NTUsVlU9XCJTdGFja19vdmVyZmxvd1wiLGVkPTQzNzAwLEpmPVwic3ludGF4X29wdFwiLHpVPVwiL3N0YXRpYy9cIiwkZj1cImNvbXByZWhlbnNpb25cIixuZD0yNTMsS1U9XCJOb3RfZm91bmRcIixXVT1cIis9XCIsSlU9MjM1LHRkPTY4NjgwLHVkPTY2OTU0LGlkPTY0MzI0LGZkPTcyOTY2LCRVPTE3NCxaVT0tMTA1MzM4MjM2Nix4ZD1cInJlc3RcIixaZj1cInBhdHRlcm5fYXJyYXlfZWxlbWVudFwiLFFmPVwianN4X2F0dHJpYnV0ZV92YWx1ZV9leHByZXNzaW9uXCIsejQ9NjU1OTUscng9XCJwYXR0ZXJuX2FycmF5X2VcIixRVT0yNDMsb2Q9NDM3MTEsYWQ9XCJybWRpclwiLEs0PVwic3ltYm9sXCIsY2Q9Njk5MjYsVzQ9XCIqZHVtbXkgbWV0aG9kKlwiLHNkPTQzNzQxLE83PVwidHlwZVBhcmFtZXRlcnNcIixEMj1cImNvbnN0XCIsckg9MTAyNixlSD0xNDksdmQ9MTIzNDEsbGQ9NzI4NDcsYmQ9NjY5OTMsbkg9MjAyLENpPVwiZmFsc2VcIixZdD0xMDYscGQ9MTIwMDc2LG1kPTE4NixQaT0xMjgsX2Q9MTI1MTI0LHlkPVwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIixKND02NzU5MyxoZD02OTI5NyxkZD00NDAzMSx0SD0yMzQsa2Q9OTI5Mjcsd2Q9NjgwOTUsJHU9ODIzMSxleD1cIm9iamVjdF9rZXlfY29tcHV0ZWRcIixueD1cImxhYmVsZWRfc3RhdGVtZW50XCIsdHg9XCJmdW5jdGlvbl9wYXJhbV9wYXR0ZXJuXCIsJDQ9MTI2NTkwLEVkPTY1NDgxLFNkPTQzNDQyLHVIPVwiY29sbGVjdF9jb21tZW50c19vcHRcIix1eD1cInZhcmlhYmxlX2RlY2xhcmF0b3JcIixidj1cIl9cIixnZD1cImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIixGZD02Nzk2Nyxwdj1cImNvbXB1dGVkXCIsaXg9XCJvYmplY3RfcHJvcGVydHlfdHlwZVwiLG10PVwiaWRcIixUZD0xMjY1NjIsdDE9MTE0LGlIPVwiY29tbWVudF9ib3VuZHNcIixPZD03MDg1MyxJZD02OTI0NyxmeD1cImNsYXNzX3ByaXZhdGVfZmllbGRcIixBZD00MjIzNyxOZD03MjMyOSxmSD1cIkludmFsaWRfYXJndW1lbnRcIixDZD0xMTM3NzAsWjQ9OTQwMzEsUGQ9MTIwMDkyLHh4PVwiZGVjbGFyZV9jbGFzc1wiLERkPTY3ODM5LExkPTcyMjUwLHhIPVwiJW5pXCIsUmQ9OTI4Nzksb0g9XCJwcm90b3R5cGVcIixFcz1cImAuXCIsb3g9ODI4NyxRND02NTM0NCxqZD1cIiZcIixJNz1cImRlYnVnZ2VyXCIsYXg9XCJ0eXBlX2lkZW50aWZpZXJfcmVmZXJlbmNlXCIsYUg9XCJJbnRlcm5hbCBFcnJvcjogRm91bmQgcHJpdmF0ZSBmaWVsZCBpbiBvYmplY3QgcHJvcHNcIixjeD1cInNlcXVlbmNlXCIsc3g9XCJjYWxsX3R5cGVfYXJnc1wiLGNIPTIzOCxHZD0xMjM0OCxzSD1cIisrXCIsTWQ9Njg4NjMsQmQ9NzIwMDEscWQ9NzAwODQsVWQ9XCJsYWJlbFwiLG12PS00NSx2eD1cImpzeF9vcGVuaW5nX2F0dHJpYnV0ZVwiLEhkPTQzNTgzLHI4PVwiJUZcIixYZD00Mzc4NCxZZD0xMTM3OTEsbHg9XCJjYWxsX2FyZ3VtZW50c1wiLGU4PTEyNjUwMyxWZD00Mzc0MyxadT1cIjBcIix6ZD0xMTk5Njcsbjg9MTI2NTM4LGJ4PVwibmV3X1wiLF92PTQ0OTU0MDE5NyxLZD02NDEwOSxXZD02ODQ2NixKZD0xNzc5ODMsd3Q9MjQ4LHB4PVwicHJvZ3JhbVwiLFhlPVwiQCxdQF1cIiwkZD02ODAzMSxteD1cImZ1bmN0aW9uX3R5cGVcIixfeD1cInR5cGVfXCIsdDg9ODQ4NCxaZD02NzM4MixRZD00MjUzNyxyaz0yMjYsZWs9NjY1NTksbms9NDI5OTMsdGs9NjQyNzQsdTg9NzEyMzYsdWs9MTIwMDY5LGlrPTcyMTA1LGZrPTEyNjU3MCx4az1cIm9iamVjdFwiLG9rPTQyOTU5LEE3PVwiYnJlYWtcIix5eD1cImZvcl9vZl9zdGF0ZW1lbnRcIixhaz00MzY5NSxpOD0xMjY1NTEsY2s9NjY5NTUsZjg9MTI2NTIwLHNrPTY2NDk5LEwyPTEwMjQsdms9Njc0NTUsbGs9NDMwMTgsdkg9MTk4LHg4PTEyNjUyMixoeD1cImZ1bmN0aW9uX2RlY2xhcmF0aW9uXCIsYms9NzMwNjQsZHg9XCJhd2FpdFwiLHBrPTkyNzI4LG1rPTcwNDE4LF9rPTY4MTE5LGt4PVwiZnVuY3Rpb25fcmVzdF9wYXJhbVwiLHlrPTQyNjUzLG84PTExNzAzLGJpPVwibGVmdFwiLGE4PTcwNDQ5LGhrPTE4NCx3eD1cImRlY2xhcmVfdHlwZV9hbGlhc1wiLEV4PTE2Nzc3MjE1LGM4PTcwMzAyLGxIPVwiLz1cIixiSD1cInw9XCIsZGs9NTUyNDIsa2s9MTI2NTgzLHdrPTEyNDkyNyxFaz0xMjQ4OTUsU2s9NzI5NTksZ2s9NjU0OTcscEg9XCJJbnZhbGlkIGxlZ2FjeSBvY3RhbCBcIixycz1cInR5cGVvZlwiLEZrPVwiZXhwbGljaXRfdHlwZVwiLFN4PVwic3RhdGVtZW50X2xpc3RcIixUaz02NTQ5NSxneD1cImNsYXNzX21ldGhvZFwiLHM4PTg1MjYsdjg9MjQ0LE9rPTY3ODYxLGw4PTExOTk5NCxiOD1cImVudW1cIixtSD0yMTQ3NDgzNjQ3LElrPTY5NzYyLF9IPTIwOCxSMj1cImluXCIsQWs9MTE3MDIscDg9Njc2MzgseUg9XCIsIGNoYXJhY3RlcnMgXCIsTms9NzA3NTMseXY9XCJzdXBlclwiLENrPTkyNzgzLFBrPTgzMDQsbTg9MTI2NTA0LEZ4PVwiaW1wb3J0X3NwZWNpZmllclwiLERrPTY4MzI0LExrPTEwMTU4OSxSaz02NzY0NixUeD1cImV4cHJlc3Npb25fb3Jfc3ByZWFkXCIsams9NzQ4NzksR2s9NDM3OTIsXzg9NDMyNjAsTWs9OTMwNTIsaEg9XCJ7XCIsQms9NjU1NzQscWs9MTI1MjU4LGh2PTIyNCxPeD1cImpzeF9lbGVtZW50X25hbWVfbWVtYmVyX2V4cHJlc3Npb25cIixqMj1cImluc3RhbmNlb2ZcIixVaz02OTU5OSxIaz00MzU2MCxJeD1cImZ1bmN0aW9uX2V4cHJlc3Npb25cIix5OD0yMjMsWGs9NzIyNDIsWWs9MTE0OTgsVms9MTI2NDY3LHprPTczMTEyLGRIPTE0MCxoOD03MDEwNyxLaz0xMzMxMSxBeD1cImpzeF9jaGlsZHJlblwiLGQ4PTEyNjU0OCxXaz02Mzc0MyxrOD00MzQ3MSxOeD1cImpzeF9leHByZXNzaW9uXCIsSms9Njk4NjQsJGs9NzE5OTgsWms9NzJlMyx3OD0xMjY1OTEsRTg9MTI1OTIsQ3g9XCJ0eXBlX3BhcmFtc1wiLFFrPTEyNjU3OCxTOD0xMjY1Mzcsa3I9XCJ7IFwiLHJ3PTEyMzYyNyxQeD1cImpzeF9zcHJlYWRfYXR0cmlidXRlXCIsQ2U9XCJALFwiLGV3PTcwMTYxLG53PTE4NyxnOD0xMjY1MDAsRHg9XCJsYWJlbF9pZGVudGlmaWVyXCIsdHc9NDI2MDYsTHg9XCJudW1iZXJfbGl0ZXJhbF90eXBlXCIsRjg9NDI5OTksdXc9NjQzMTAsa0g9LTU5NDk1MzczNyxpdz0xMjI2MjMsVDg9XCJoYXNVbmtub3duTWVtYmVyc1wiLFJ4PVwiYXJyYXlcIix3SD1cIl49XCIsang9XCJlbnVtX3N0cmluZ19tZW1iZXJcIixmdz02NTUzNix4dz02NTYxNSxlcz1cInZvaWRcIixvdz02NTEzNSxaMD1cIilcIixFSD0xMzgsYXc9NzAwMDIsRzI9XCJsZXRcIixjdz03MDI3MSxzdz1cIm5hblwiLFc9XCJAWyVzID1AIFwiLHZ3PTE5NDU1OSxsdz0xMTA1NzksR3g9XCJiaW5kaW5nX3R5cGVfaWRlbnRpZmllclwiLGJ3PTQyNzM1LFNIPTU3MzQzLFF1PVwiL1wiLE14PVwiZm9yX2luX3N0YXRlbWVudF9saHNcIixwdz00MzUwMyxtdz04NTE2LF93PTY2OTM4LHl3PVwiRU5PVERJUlwiLGdIPVwiVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb25cIixodz02OTc0OSxkdz02NTM4MSxrdz04MzUyNixkdj1cIm51bWJlclwiLHd3PTEyNDQ3LEZIPTE1NCxPOD03MDI4NixFdz03MjE2MCxTdz00MzQ5MyxUSD0yMDYsQng9XCJlbnVtX21lbWJlcl9pZGVudGlmaWVyXCIsSTg9NzAyODAsTTI9XCJmdW5jdGlvblwiLEE4PTcwMTYyLGd3PTI1NSxGdz02NzcwMixUdz02Njc3MSxPdz03MDMxMixPSD1cInxcIixJdz05Mzc1OSxJSD1cIkVuZF9vZl9maWxlXCIsQXc9NDM3MDksdTE9XCJuZXdcIixBSD1cIkZhaWx1cmVcIixCMj1cImxvY2FsXCIsTnc9MTAxNjMxLE44PTg0ODksQzg9XCJ3aXRoXCIscXg9XCJlbnVtX2RlY2xhcmF0aW9uXCIsQ3c9MjE4LFB3PTcwNDU3LFA4PTg0ODgsVXg9XCJtZW1iZXJcIixEOD02NDMyNSxEdz0yNDcsTHc9NzA0NDgsUnc9Njk5NjcsTDg9MTI2NTM1LGp3PTcxOTM0LEh4PVwiaW1wb3J0X25hbWVkX3NwZWNpZmllclwiLEd3PTY1MzEyLE13PTEyNjYxOSxYeD1cInR5cGVfYW5ub3RhdGlvblwiLE5IPTU2MzIwLEJ3PTEzMTA3MSxxdz0xMjA3NzAsVXc9NjcwMDIsWXg9XCJ3aXRoX1wiLFZ4PVwic3RhdGVtZW50X2ZvcmtfcG9pbnRcIixDSD1cImZpbmFsaXplclwiLEh3PTEyMzIwLFBIPVwiZWxlbWVudHNcIix6eD1cImxpdGVyYWxcIixYdz02ODYwNyxZdz04NTA3LFI4PVwiZWFjaFwiLERIPVwiU3lzX2Vycm9yXCIsVnc9MTIzNTM1LHp3PTEzMCxLeD1cImJpZ2ludF9saXRlcmFsX3R5cGVcIixLdz02NDgyOSxqOD0xMTcyNyxXdz0xMjA1MzgsV3g9XCJtZW1iZXJfcHJpdmF0ZV9uYW1lXCIsSng9XCJ0eXBlX2FsaWFzXCIsTEg9XCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIsRzg9MTI2NTU2LCR4PVwidGFnZ2VkX3RlbXBsYXRlXCIsWng9XCJwYXR0ZXJuX29iamVjdF9wcm9wZXJ0eV9saXRlcmFsX2tleVwiLEp3PTQzODgxLE04PTcyMTkyLCR3PTY3ODI2LFp3PTEyNDkxMCxRdz02NjUxMSxucz1cImludF9vZl9zdHJpbmdcIixyRT00MzI0OSxucj1cIk5vbmVcIixSSD1cIkZ1bmN0aW9uVHlwZVBhcmFtXCIsdWk9XCJuYW1lXCIsZUU9NzAyODUsczc9MTAzLG5FPTEyMDc0NCxReD0xMjI4OCxybz1cImludGVyc2VjdGlvbl90eXBlXCIsdEU9MTE2NzksQjg9MTE1NTksakg9XCJjYWxsZWVcIix1RT03MTI5NSxpRT03MDAxOCxmRT0xMTU2Nyx4RT00Mjk1NCxHSD1cIiotL1wiLHI3PVwicHJlZGljYXRlXCIsZW89XCJleHByZXNzaW9uX3N0YXRlbWVudFwiLE1IPVwicmVnZXhwXCIsb0U9NjU0NzksQkg9MTMyLGFFPTExMzg5LHF1PVwib3B0aW9uYWxcIixxSD0tNjAyMTYyMzEwLHo9XCJAXVwiLGNFPTEyMDAwMyxzRT03MjI0OSxVSD1cIlVuZXhwZWN0ZWQgXCIsdkU9NzMwMDgscTg9XCJmaW5hbGx5XCIsbm89XCJ0b3BsZXZlbF9zdGF0ZW1lbnRfbGlzdFwiLEhIPVwiZW5kXCIsbEU9MTc4MjA3LFhIPVwiJj1cIixiRT03MDMwMSxZSD1cIiVMaVwiLHBFPTcyMTYxLG1FPTY5NzQ2LF9FPTcwNDYwLHlFPTEyNzk5LFU4PTY1NTM1LGhFPVwibG9jXCIsZEU9NjkzNzUsa0U9NDM1MTgsVkg9MjA1LHdFPTY1NDg3LHRvPVwid2hpbGVfXCIsRUU9MTgzOTgzLHVvPVwidHlwZW9mX2V4cHJlc3Npb25cIixTRT0tNjczOTUwOTMzLGdFPTQyNTU5LHpIPVwifHxcIixGRT0xMjQ5MjYsVEU9NTUyOTEsaW89XCJqc3hfZWxlbWVudF9uYW1lX2lkZW50aWZpZXJcIixmbz04MjM5LEg4PVwibWl4ZWRcIixLSD0xMzYsT0U9LTI1MzMxMzE5NixJRT0xMTczNCxYOD02NzgyNyxBRT02ODI4NyxORT0xMTk5NzYsV0g9XCIqKlwiLEo9XCIgPVwiLFk4PTg4ODk2MDMzMyxDRT0xMjQ5MDIseG89XCJ0dXBsZV90eXBlXCIsSkg9MjI3LFBFPTcwNzI2LERFPTczMTExLFY4PTEyNjYwMixMRT0xMjY1Mjksb289XCJvYmplY3RfcHJvcGVydHlfdmFsdWVfdHlwZVwiLE4wPVwiJWFcIiwkSD1cIiwgXCIsWkg9XCI8PVwiLFJFPTY5NDIzLFFIPTE5OSx6OD0xMTY5NSxqRT0xMjI5NCxLOD0xMTcxMSxHRT02NzU4MyxyWD03MTAsVzg9MTI2NTg0LE1FPTY4Mjk1LEJFPTcyNzAzLHFFPVwicHJlZml4XCIsZVg9LTgwLEo4PTY5NDE1LFVFPTExNDkyLHEyPVwiY2xhc3NcIiwkOD02NTU3NSxONz1cImNvbnRpbnVlXCIsSEU9NjU2NjMsblg9MjA0NyxaOD02ODEyMCxYRT03MTA4NixZRT0xOTk2NyxEaT03ODIxNzY2NjQsVkU9MTIwNzc5LFE4PTg0ODYscGk9XCIgXCIsdFg9XCJ8fD1cIix1WD1cIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXCIsekU9NjY4NjMsaVg9XCJSZXN0RWxlbWVudFwiLHIzPTEyNjYzNCxLRT02NjM3NyxXRT03NDc1MSxhbz1cImpzeF9lbGVtZW50X25hbWVfbmFtZXNwYWNlZFwiLEpFPTQzMzM0LCRFPTY2ODE1LEM3PVwidHlwZUFubm90YXRpb25cIixaRT0xMjAxMjYsY289XCJhcnJheV9lbGVtZW50XCIsZTM9NjQyODUsZlg9MTg5LHhYPVwiKio9XCIsWXI9XCIoKVwiLFFFPTg1NDMsc289XCJkZWNsYXJlX21vZHVsZVwiLHZvPVwiZXhwb3J0X2JhdGNoX3NwZWNpZmllclwiLG9YPVwiJWlcIixhWD1cIj4+Pj1cIixyUz02ODAyOSxjWD1cImltcG9ydEtpbmRcIixQNz1cImV4dGVuZHNcIixlUz02NDI5NixuMz00MzI1OSxuUz03MTY3OSx0Uz02NDkxMyx1Uz0xMTk5NjksaVM9OTQxNzUsZlM9NzI0NDAsdDM9NjUxNDEsbG89XCJmdW5jdGlvbl9cIix4Uz00MzA3MSxvUz00Mjg4OCxhUz02OTgwNyxjdT1cInZhcmlhbmNlXCIsdHM9MTIzLGJvPVwiaW1wb3J0X2RlZmF1bHRfc3BlY2lmaWVyXCIsc1g9XCI+Pj5cIixjUz00Mzc2NCxtaT1cInBhdHRlcm5cIixzUz03MTk0Nyx2Uz03MDY1NSxrdj1cImNvbnNlcXVlbnRcIix2WD00MDk2LGxTPTE4MyxiUz02ODQ0NyxwUz02NTQ3Myx1cz0yNTUsbVM9NzM2NDgscG89XCJjYWxsX3R5cGVfYXJnXCIsbW89ODIzOCxfUz02ODg5OSx5Uz05MzAyNixZZT1cIkBbPDI+W1wiLGhTPTExMDU4OCxfbz1cImNvbW1lbnRcIixsWD0xOTEseW89XCJzd2l0Y2hfY2FzZVwiLGJYPTE3NSxkUz03MTk0Mixobz1cImRvX3doaWxlXCIsd3Y9XCJjb25zdHJ1Y3RvclwiLGtTPTQzNTg3LHdTPTQzNTg2LEV1PVwieWllbGRcIixFUz02NzQ2MixwWD1cImZkIFwiLFNTPS02MSxnUz1cInRhcmdldFwiLHUzPTcyMjcyLFUyPVwidmFyXCIsbVg9XCJpbXBsdHlwZVwiLGkzPTcwMTA4LEgyPVwiMG9cIixGUz0xMTk5NzIsVFM9OTI5OTEsZjM9NzA0NDEseDM9ODQ1MCxPUz0xMjAwNzQsSVM9NjY3MTcsa289XCJpbnRlcmZhY2VfdHlwZVwiLG8zPTQzODgwLEFuPVwiJUJcIixBUz0xMTEzNTUsRXY9NTc2MCxOUz0xMTYzMCxhMz0xMjY0OTksQ1M9XCJvZlwiLF9YPVwiPj5cIix5WD1cIlBvcHBpbmcgbGV4IG1vZGUgZnJvbSBlbXB0eSBzdGFja1wiLGMzPTEyMDYyOSxpcz0xMDgsUFM9NDMwMDIsaFg9XCIlPVwiLHMzPTEyNjUzOSxEUz0xMjY1MDIsd289XCJ0ZW1wbGF0ZV9saXRlcmFsXCIsTFM9XCJzcmMvcGFyc2VyL3N0YXRlbWVudF9wYXJzZXIubWxcIixSUz1cIjogTm90IGEgZGlyZWN0b3J5XCIsZFg9XCJiXCIsalM9Njc0NjEsR1M9MTE1MTksa1g9XCJzcmMvcGFyc2VyL2Zsb3dfbGV4ZXIubWxcIix3WD1cIk91dF9vZl9tZW1vcnlcIixNUz0xMjA1NzAsRW89MTIyODcsQlM9MTI2NTM0LHFTPVwiaW5kZXggb3V0IG9mIGJvdW5kc1wiLFVTPTczMDI5LHYzPVwiX2JpZ2FycjAyXCIsbDM9MTI2NTcxLEVYPVwiKSlcIixTbz1cImZvcl9zdGF0ZW1lbnRfaW5pdFwiLFNYPVwic3VwZXJ0eXBlXCIsZ289XCJjbGFzc19wcm9wZXJ0eVwiLGIzPVwifVwiLGkxPVwidGhpc1wiLEZvPVwiZGVjbGFyZV9tb2R1bGVfZXhwb3J0c1wiLGdYPVwiQFwiLFRvPVwidW5pb25fdHlwZVwiLExpPTY1NTM1LE9vPVwidmFyaWFuY2Vfb3B0XCIsSFM9OTQwMzIsRlg9MjIyLFhTPTQyMTI0LElvPVwidGhpc19leHByZXNzaW9uXCIsQW89XCJqc3hfZWxlbWVudFwiLFRYPVwidHlwZUFyZ3VtZW50c1wiLFlTPTY1MDE5LFZTPTEyNTI1MSx6Uz02NDExMSxLUz04NDcxLE5vPVwidHlwZW9mX3F1YWxpZmllZF9pZGVudGlmaWVyXCIsV1M9NzA0OTcsT1g9XCJFbnVtRGVmYXVsdGVkTWVtYmVyXCIsQ289ODIwMixKUz02NjkyNyxENz1cInN3aXRjaFwiLCRTPTY5NjM0LFBvPVwidW5hcnlfZXhwcmVzc2lvblwiLFpTPTcxMjE1LElYPTEyNixRUz02NzY3OSxyZz02NTU5NyxBWD0yMDcsZWc9MTIwNjg2LHAzPTcyMTYzLG5nPTY3MDAxLHRnPTQyOTYyLHVnPTY0MjYyLFgyPTEyNCxEbz02NTI3OSxpZz0xMjY0OTUsTlg9MTY5LGZnPTcxOTQ0LENYPS0xMCxtMz1cImFsdGVybmF0ZVwiLHhnPTkyOTc1LG9nPTY1NDg5LFkyPTI1MixhZz02NzgwNyxjZz00MzE4NyxzZz02ODg1MCxfMz1cImV4cG9ydFwiLHZnPTY2MzgzLFBYPVwiPT09XCIsTG89XCIuXCIsUm89XCJ0eXBlX2FyZ3NcIixEWD0xNDcsbGc9OTIxNTksTFg9MjQwLGpvPVwianN4X2VsZW1lbnRfbmFtZVwiLGJnPTcyMjgzLHBnPTE3MSxmMT0xMTYsbWc9MTEwNTg3LHkzPTcwMjc5LF9nPTc1MDc1LHlnPTY1MzM4LEdvPVwiZnVuY3Rpb25fcGFyYW1zXCIsaGc9MTI2NjI3LFJYPTIxMyxoMz03MzA2NSxkZz03MTM1MixkMz0xMTk5NzAsa2c9NzAwMDUsd2c9MTIyOTUsazM9MTIwNzcxLEVnPTcxNDk0LFNnPTExNTU3LGdnPTQyMTkxLGpYPVwiZmxhZ3NcIixGZz02ODQzNyxUZz03MDczMCxNbz1cIm9wdGlvbmFsX2luZGV4ZWRfYWNjZXNzXCIsQm89XCJwYXR0ZXJuX29iamVjdF9wXCIsT2c9NDI3ODUscW89XCJudWxsYWJsZV90eXBlXCIsQm49XCJ2YWx1ZVwiLElnPTEyMzQzLEFnPTY4NDE1LE5nPTExNjk0LEdYPTIyMSxDZz0xMTcyNixVbz1cInN5bnRheFwiLFBnPTExOTk2NCxNWD1cIiYmXCIsRGc9Njg0OTcsTGc9NzMwOTcsZnM9XCJudWxsXCIsdzM9MTI2NTIzLFJnPTEyMDA4NCxqZz0xMjY2MDEsR2c9ODQ1NCxNZz1cImV4cHJlc3Npb25zXCIsQmc9NzIxNDQsVjI9J1wiJyxacj1cIihAW1wiLEJYPTEwMjIscVg9MjMxLHFnPTE3MCxFMz0xMjQ0OCxVZz02ODc4NixTMz1cIjxcIixVWD05MzEsSFg9XCIoXCIsWFg9MTk2LFlYPTIwNDgsZzM9XCJhbiBpZGVudGlmaWVyXCIsRjM9Njk5NTksSGc9Njg3OTksVlg9XCJsZWFkaW5nQ29tbWVudHNcIixYZz03Mjk2OSxZZz0xODIsVmc9MTAwMzUxLEhvPVwiZW51bV9kZWZhdWx0ZWRfbWVtYmVyXCIsemc9Njk4MzksS2c9OTQwMjYsV2c9MjA5LHpYPVwiPj49XCIsSmc9MTMxLFQzPTEyMzM2LHY3PVwiZW1wdHlcIixLWD0zMzE0MTY3MzAsV1g9MjA0LCRnPTcwNDc5LFpnPTY5NDg3LFFnPTEwMTY0MCxyRj00MzEyMyxKWD1cIihbXi9dKylcIixPMz04MzE5LCRYPTE2NSxYbz1cIm9iamVjdF90eXBlX3Byb3BlcnR5X3NldHRlclwiLFpYPTkwOSxlRj0xNSxuRj0xMjU5MSxicj0xMjUsdEY9OTI3MzUsUVg9XCJjYXNlc1wiLHVGPTE4Mzk2OSx4MT1cImJpZ2ludFwiLHJZPVwiRGl2aXNpb25fYnlfemVyb1wiLGlGPTY3MDcxLGZGPTEyMzI5LEkzPTEyMDAwNCx4Rj02OTQxNCxBMz1cImlmXCIsb0Y9MTI2NTE5LGFGPVwiaW1tZWRpYXRlbHkgd2l0aGluIGFub3RoZXIgZnVuY3Rpb24uXCIsY0Y9NTUyMzgsc0Y9MTI2NDk4LGVZPVwicXVhbGlmaWNhdGlvblwiLHZGPTY2MjU2LHdyPVwiQCB9QF1cIix6Mj0xMTgsTjM9MTE1NjUsQzM9MTIwMTIyLFlvPVwicGF0dGVybl9vYmplY3RfcmVzdF9wcm9wZXJ0eVwiLGxGPTc0ODYyLFAzPVwiJ1wiLGJGPS0yNjA2NTU1NyxwRj0xMjQ5MTEsU3Y9MTE5LEw3PTEwNCxWbz1cImFzc2lnbm1lbnRcIixtRj04NDU3LEsyPVwiZnJvbVwiLF9GPTY0MzIxLHlGPTExMzgxNyxoRj02NTYyOSxkRj00MjY1NSxSaT0xMDIsa0Y9NDMxMzcsd0Y9MTE1MDIsYTA9XCI7QCBcIixSNz0xMDEsem89XCJwYXR0ZXJuX2FycmF5X2VsZW1lbnRfcGF0dGVyblwiLFduPVwiYm9keVwiLEtvPVwianN4X21lbWJlcl9leHByZXNzaW9uXCIsRUY9NjU1NDcsV289XCJqc3hfYXR0cmlidXRlX3ZhbHVlXCIsSm89XCJqc3hfbmFtZXNwYWNlZF9uYW1lXCIsRDM9NzI5NjcsU0Y9MTI2NTUwLGd2PTI1NCxnRj00MzgwNyxGRj00MzczOCxMMz0xMjY1ODksUjM9ODQ1NSxqMz0xMjY2MjgsVEY9MTE2NzAsblk9XCIqPVwiLEczPTEyMDEzNCwkbz1cImNvbmRpdGlvbmFsXCIsdFk9XCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiLE0zPTExOTk2NSxPRj02OTg5MCxJRj03MjgxNyxBRj0xNjQsTkY9NDM4MjIsQjM9Njk3NDQsdVk9XCJcXFxcXFxcXFwiLENGPTQzNjM4LFBGPTkzMDQ3LERGPVwiQXNzaWdubWVudFBhdHRlcm5cIixxMz02NDMyMixMRj0xMjMxOTAsaVk9MTg4LFpvPVwib2JqZWN0X3NwcmVhZF9wcm9wZXJ0eV90eXBlXCIsUkY9NzA3ODMsakY9MTEzNjYzLGZZPTE2MCxVMz00MjYyMixIMz00MzgyMyxqaT1cImluaXRcIixGdj0xMDksR0Y9NjY1MDMsWDM9XCJwcm90b1wiLE1GPTc0NjQ5LFFvPVwib3B0aW9uYWxfbWVtYmVyXCIsQkY9NDA5ODEscUY9MTIwNjU0LHY9XCJAIFwiLHJhPVwiZW51bV9ib29sZWFuX2JvZHlcIixlYT1cImV4cG9ydF9uYW1lZF9zcGVjaWZpZXJcIixuYT1cImRlY2xhcmVfaW50ZXJmYWNlXCIsVUY9NzA0NTEsdGE9XCJwYXR0ZXJuX29iamVjdF9wcm9wZXJ0eV9jb21wdXRlZF9rZXlcIixZMz0tOTcsVjM9MTIwNTM5LHozPTY0MzE3LEhGPTEyNTQzLHVhPVwiZXhwb3J0X25hbWVkX2RlY2xhcmF0aW9uX3NwZWNpZmllclwiLFhGPTQzMzU5LEszPTEyNjUzMCxXMz03MjcxMyxZRj0xMTM4MDAseFk9MTk1LFZGPTcyMzY3LHpGPTcyMTAzLEtGPTcwMjc4LGlhPVwiaWZfY29uc2VxdWVudF9zdGF0ZW1lbnRcIixXMj0tODUsSjM9MTI2NDk2LGZhPVwidHJ5X2NhdGNoXCIseGE9XCJjb21wdXRlZF9rZXlcIixvYT1cImNsYXNzX1wiLFdGPTE3MzgyMyxhYT1cInBhdHRlcm5fb2JqZWN0X3Byb3BlcnR5X2lkZW50aWZpZXJfa2V5XCIsb1k9XCJmXCIsY2E9XCJhcnJvd19mdW5jdGlvblwiLCQzPTg0ODUsSkY9MTI2NTQ2LHNhPVwiZW51bV9ib29sZWFuX21lbWJlclwiLCRGPTk0MTc3LEoyPVwiZGVsZXRlXCIsWkY9MjMyLGFZPVwiYmxvY2tzXCIsdmE9XCJwYXR0ZXJuX2FycmF5X3Jlc3RfZWxlbWVudF9wYXR0ZXJuXCIsUUY9Nzg4OTQsWjM9NjY1MTIsclQ9OTQxMTEsVHY9XCJzdHJpbmdcIixTcz1cInRlc3RcIixlVD02OTU3MixuVD02NjQ2Myx0VD02NjMzNSx1VD03MjM0OCxpVD03MzA2MSxvMT1cIjpcIixsYT1cImVudW1fYm9keVwiLGZUPTExMDU5MCxiYT1cImZ1bmN0aW9uX3RoaXNfcGFyYW1fdHlwZVwiLHhUPTIxNSxvVD03NzgyMyxjWT1cIm1pbnVzXCIsc1k9MjAxLGFUPTExOTk4MCxwYT1cInByaXZhdGVfbmFtZVwiLG1hPVwib2JqZWN0X2tleVwiLF9hPVwiZnVuY3Rpb25fcGFyYW1fdHlwZVwiLHZZPVwiPDxcIixjVD0xMTcxOCxhMT1cImFzXCIsbFk9XCJkZWxlZ2F0ZVwiLEdpPVwidHJ1ZVwiLHNUPTY3NDEzLFEzPTcwODU0LHZUPTczNDM5LGxUPTQzNzc2LGJUPTcxNzIzLHBUPTExNTA1LG1UPTIxNCxfVD0xMjA2MjgseVQ9NDM1MTMseWE9XCJqc3hfYXR0cmlidXRlX25hbWVfbmFtZXNwYWNlZFwiLHI2PTEyMDEyNyxlNj1cIk1hcC5iYWxcIixuNj1cImFueVwiLGJZPVwiQFtcIixwWT1cImNhbWxpbnRlcm5hbE1vZC5tbFwiLHQ2PTEyNjU1OSxVdT1cImltcG9ydFwiLHU2PTcwNDA0LGhhPVwianN4X3NwcmVhZF9jaGlsZFwiLGhUPTIzMyxkVD02Nzg5NyxrVD0xMTk5NzQsSHU9ODIzMyx3VD02ODQwNSxpNj0yMzksbVk9XCJhdHRyaWJ1dGVzXCIsX1k9MTczLGRhPVwib2JqZWN0X2ludGVybmFsX3Nsb3RfcHJvcGVydHlfdHlwZVwiLEVUPTcxMzUxLFNUPTI0MixnVD02NzY0MyxmNj1cInNob3J0aGFuZFwiLGthPVwiZm9yX2luX3N0YXRlbWVudFwiLEZUPTEyNjQ2MyxUVD03MTMzOCxPVD02OTQ0NSxJVD02NTM3MCxBVD03MzA1NSxOVD0xNjcsQ1Q9NjQ5MTEsd2E9XCJwYXR0ZXJuX29iamVjdF9wcm9wZXJ0eV9wYXR0ZXJuXCIseVk9MjEyLGhZPTE5Nyx4Nj0xMjY1NzksUFQ9NjQyODYsRFQ9XCJleHBsaWNpdFR5cGVcIixMVD02NzY2OSxSVD00Mzg2NixkWT1cIlN5c19ibG9ja2VkX2lvXCIsbzY9XCJjYXRjaFwiLGpUPTEyMzE5NyxHVD02NDQ2NixNVD02NTE0MCxCVD03MzAzMCxxVD02OTQwNCxhNj1cInByb3RlY3RlZFwiLGtZPTgyMDQsVVQ9Njc1MDQsSFQ9MTkzLCQyPTI0NixYVD00MzcxMyxjNj0xMjA1NzEsRWE9XCJhcnJheV90eXBlXCIsd1k9XCIldVwiLFNhPVwiZXhwb3J0X2RlZmF1bHRfZGVjbGFyYXRpb25cIixnYT1cImNsYXNzX2V4cHJlc3Npb25cIixFWT1cInF1YXNpXCIsVnQ9XCIlU1wiLFlUPTg1MjUsczY9MTI2NTE1LFZUPTEyMDQ4NSx2Nj00MzUxOSxsNj0xMjA3NDUsYjY9OTQxNzgselQ9MTI2NTg4LHpuPTEyNyxLVD02Njg1NSxTWT1cIkB7XCIsZ1k9XCJ2aXNpdF9sZWFkaW5nX2NvbW1lbnRcIixXVD02Nzc0MixGWT1cIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIixKVD0xMjAxNDQscDY9XCJyZXR1cm5UeXBlXCIsYzE9LTc0NDEwNjM0MCxzMT0yNDAsRmE9XCItXCIsbTY9ODQ2OSxncz1cImFzeW5jXCIsXzY9MTI2NTIxLCRUPTcyMDk1LHk2PTIxNixUWT1cIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIixaVD0xNzgyMDUsUVQ9ODQ0OSxoNj05NDE3OSxyTz00Mjc3NCxkNj1cImNhc2VcIixlTz02Njk2NSxuTz02NjQzMSxPWT0xOTAsVGE9XCJkZWNsYXJlX2V4cG9ydF9kZWNsYXJhdGlvblwiLFoyPVwidGFyZ3NcIixPYT1cInR5cGVfaWRlbnRpZmllclwiLHRPPTY0Mjg0LHVPPTQzMDEzLGs2PTQzODE1LElhPVwiZnVuY3Rpb25fYm9keV9hbnlcIixpTz02Njk2Nix3Nj0xMjA2ODcsZk89NjY5MzkseE89NjY5NzgsSVk9MTY4LEU2PVwicHVibGljXCIsb089NjgxMTUsYU89NDM3MTIsUzY9NjU1OTgsZzY9MTI2NTQ3LGNPPTExMDU5MSxBYT1cImluZGV4ZWRfYWNjZXNzXCIsQVk9MTI1MjAsZTc9XCJpbnRlcmZhY2VcIixOWT1gKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxuYCx2MT0tNDYsTmE9XCJzdHJpbmdfbGl0ZXJhbF90eXBlXCIsQ2E9XCJpbXBvcnRfbmFtZXNwYWNlX3NwZWNpZmllclwiLHNPPTEyMDEzMixGNj0xMTczNSx2Tz02NzUwNSxUNj0xMTk4OTMsTzY9XCJib29sXCIsUTI9MWUzLF9pPVwiZGVmYXVsdFwiLGxPPTIzNixDPVwiXCIsYk89XCJleHBvcnRLaW5kXCIsQ1k9XCJ0cmFpbGluZ0NvbW1lbnRzXCIsSTY9XCJeXCIscE89NzE5ODMsbU89ODM0OCxfTz02Njk3Nyx5Tz02NTU5NCxQYT1cImxvZ2ljYWxcIixEYT1cImpzeF9tZW1iZXJfZXhwcmVzc2lvbl9pZGVudGlmaWVyXCIsQTY9MjEwLFBZPVwiY29va2VkXCIsTGE9XCJmb3Jfb2ZfbGVmdF9kZWNsYXJhdGlvblwiLE92PTYzLGhPPTcyMjAyLGw3PVwiYXJndW1lbnRcIixkTz0xMjQ0MixrTz00MzY0NSxONj0xMjAwODUsd089NDI1MzksQzY9MTI2NDY4LERZPTE2NixMWT1cIk1hdGNoX2ZhaWx1cmVcIixFTz02ODE5MSxTdT1cInNyYy9wYXJzZXIvZmxvd19hc3QubWxcIixQNj0xMTY0NyxSYT1cImRlY2xhcmVfdmFyaWFibGVcIix4cz1cIitcIixTTz03MTEyNyxENj0xMjAxNDUsamE9XCJkZWNsYXJlX2V4cG9ydF9kZWNsYXJhdGlvbl9kZWNsXCIsTDY9NjQzMTgsUlk9MTc5LEdhPVwiY2xhc3NfaW1wbGVtZW50c1wiLGpZPVwiIT1cIixHWT1cImluZXhhY3RcIixNWT1cIiVsaVwiLEJZPTIzNyxybD1cImFcIixSNj03MzA2MixnTz0xNzgsTWE9NjUyNzgsQmE9XCJmdW5jdGlvbl9yZXN0X3BhcmFtX3R5cGVcIixGTz03NzcxMSxUTz03MDA2NixPTz00MzcxNCxxWT0tNjk2NTEwMjQxLGo2PTcwNDgwLElPPTY5NzQ4LEFPPTExMzc4OCxOTz05NDIwNyxVWT1gXFxyXG5gLHFhPVwiY2xhc3NfYm9keVwiLENPPTEyNjY1MSxQTz02ODczNSxETz00MzI3MyxHNj0xMTk5OTYsTTY9Njc2NDQsSFk9MjI0LFVhPVwiY2F0Y2hfY2xhdXNlX3BhdHRlcm5cIixIYT1cImJvb2xlYW5fbGl0ZXJhbF90eXBlXCIsQjY9MTI2NTU0LHE2PTEyNjU1NyxMTz0xMTM4MDcsVTY9MTI2NTM2LFhZPVwiJVwiLEl2PVwicHJvcGVydHlcIixSTz03MTk1NixZWT1cIiNcIixqTz0xMjMyMTMsZWw9XCJtZXRhXCIsWGE9XCJmb3Jfb2ZfYXNzaWdubWVudF9wYXR0ZXJuXCIsWWE9XCJpZl9zdGF0ZW1lbnRcIixHTz02NjQyMSxNTz04NTA1LEJPPTIyNSxubD0yNTAscU89MTAwMzQzLEg2PVwiTGl0ZXJhbFwiLFVPPTQyODg3LEF2PTExNSxWWT1cIjtcIixITz0xMjU1LFhPPVwiPVwiLFlPPTEyNjU2NixWTz05MzgyMyxWYT1cIm9wYXF1ZV90eXBlXCIselk9XCIhPT1cIix6YT1cImpzeF9hdHRyaWJ1dGVcIixLYT1cInR5cGVfYW5ub3RhdGlvbl9oaW50XCIsTWk9MzI3Njgsek89NzM3MjcsS1k9XCJyYW5nZVwiLFdZPTI0NSxLTz1cImpzRXJyb3JcIixYNj03MDAwNixXTz00MzQ5MixZNj1cIkBdfVwiLHRyPVwiKFNvbWUgXCIsSk89ODQ3NyxKWT0xMjksJE89NzE0ODcsVjY9MTI2NTY0LCRZPWBcbmAsWk89MTI2NTE0LFFPPTcwMDgwLFdhPVwiZ2VuZXJpY19pZGVudGlmaWVyX3R5cGVcIixyST02NjgxMSxKYT1cInR5cGVvZl9pZGVudGlmaWVyXCIsWlk9XCJ+XCIsZUk9NjUwMDcsJGE9XCJwYXR0ZXJuX29iamVjdF9yZXN0X3Byb3BlcnR5X3BhdHRlcm5cIixuST0xOTQsUVk9MTAzOTEwMDY3Myx0ST02NjQ2MSx1ST03MDMxOSx6Nj0xMTcxOSxpST03MjI3MSxXdD0tNDgsWmE9XCJlbnVtX3N0cmluZ19ib2R5XCIsZkk9NzA0NjEsUWE9XCJleHBvcnRfbmFtZWRfZGVjbGFyYXRpb25cIix4ST0xMTA5MzAsb0k9OTI4NjIsclY9XCI/Pz1cIixhST03MDQ0MCxLNj1cIndoaWxlXCIsc3U9XCJjYW1saW50ZXJuYWxGb3JtYXQubWxcIixjST00Mzc4MixlVj0yMDMsc0k9MTczNzkxLHZJPTExMjYzLGxJPTExMTQxMTEsYkk9NDI5NjksVzY9NzA3NTAscmM9XCJqc3hfaWRlbnRpZmllclwiLHBJPTcwMTA1LG1JPTQzMDE0LF9JPTExNTY0LGVjPVwidHlwZW9mX3R5cGVcIixuVj1cIkVFWElTVFwiLHlJPTY0ODQ3LGhJPTcxMTY3LGRJPTQyNTExLGtJPTcyNzEyLHdJPTkyOTk1LEVJPTQzNzA0LHRsPTEyMSxuYz1cIm9iamVjdF9jYWxsX3Byb3BlcnR5X3R5cGVcIixTST02NDQzMyx1bD1cIm9wZXJhdG9yXCIsSjY9NjgyOTYsdGM9XCJjbGFzc19kZWNvcmF0b3JcIix1Yz0xMjAsaWM9XCJmb3Jfb2Zfc3RhdGVtZW50X2xoc1wiLGdJPTExNjIzLEZJPTY3MDA0LFRJPTcxOTk5LE9JPTcwNzA4LElJPTUxMixBST0xMTA5MjcsTkk9NzE0MjMsdFY9MzI3NTIsQ0k9OTM5NTEsUEk9MTIyOTIsZmM9XCJvYmplY3RfdHlwZVwiLCQ2PVwidHlwZXNcIixEST0xMTA1ODAsdVY9MTc3LExJPTEyNjYzMyxSST0xMjY4Nix4Yz04Mjg2LGlWPTE0NCxqST03MzY0NyxmVj0yMjgsWjY9NzA4NTUsbDE9XCIweFwiLEdJPTcwMzY2LE1JPWBcbmAsb2M9XCJ2YXJpYWJsZV9kZWNsYXJhdGlvblwiLEJJPTY1Mjc2LFE2PTExOTk4MSxxST03MTk0NSxVST00Mzg4NyxqNz0xMDUsSEk9ODMzNSxYST0xMjM1NjUsWUk9Njk1MDUsVkk9NzAxODcsYWM9XCJqc3hfYXR0cmlidXRlX25hbWVfaWRlbnRpZmllclwiLGNjPVwic291cmNlXCIsc2M9XCJwYXR0ZXJuX29iamVjdF9wcm9wZXJ0eV9rZXlcIixycD02NTU0OCx6ST02NjE3NSxLST05Mjc2Nix2Yz1cInBhdHRlcm5fYXNzaWdubWVudF9wYXR0ZXJuXCIsbGM9XCJvYmplY3RfdHlwZV9wcm9wZXJ0eV9nZXR0ZXJcIixlcD04MzA1LEc3PVwiZ2VuZXJhdG9yXCIsbnA9XCJmb3JcIix4Vj1cIlByb3BlcnR5RGVmaW5pdGlvblwiLG9WPVwiLS1cIix2dT0tMzYsV0k9XCJta2RpclwiLEpJPTY4MjIzLGJjPVwiZ2VuZXJpY19xdWFsaWZpZWRfaWRlbnRpZmllcl90eXBlXCIsJEk9MTE2ODYscGM9XCJqc3hfY2xvc2luZ19lbGVtZW50XCIsWkk9NDM3OTAsdHA9XCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixRST02OTY4NyxyQT02NjM0OCx1cD03MjE2MixlQT00MzM4OCxuQT03Mjc2OCx0QT02ODM1MSxoPVwiPDI+XCIsaXA9NjQyOTcsdUE9MTI1MjU5LGlBPTIyMCx6cj1cIixAIFwiLGFWPVwid2luMzJcIixmcD03MDI4MSxtYz1cIm1lbWJlcl9wcm9wZXJ0eV9pZGVudGlmaWVyXCIsZkE9NjgxNDkseEE9NjgxMTEsb0E9NzE0NTAsYUE9NDMwMDksX2M9XCJtZW1iZXJfcHJvcGVydHlcIixjQT03MzQ1OCx5aT1cImlkZW50aWZpZXJcIixzQT02NzQyMyx2QT02Njc3NSxsQT0xMTA5NTEsY1Y9XCJJbnRlcm5hbCBFcnJvcjogRm91bmQgb2JqZWN0IHByaXZhdGUgcHJvcFwiLHljPVwic3VwZXJfZXhwcmVzc2lvblwiLGhjPVwianN4X29wZW5pbmdfZWxlbWVudFwiLGJBPTE3Nzk3NixkYz1cInZhcmlhYmxlX2RlY2xhcmF0b3JfcGF0dGVyblwiLGtjPVwicGF0dGVybl9leHByZXNzaW9uXCIsd2M9XCJqc3hfbWVtYmVyX2V4cHJlc3Npb25fb2JqZWN0XCIscEE9NjgyNTIsbUE9Nzc4MDgsTnY9LTgzNTkyNTkxMSxFYz1cImltcG9ydF9kZWNsYXJhdGlvblwiLF9BPTU1MjAzLHNWPVwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIsdlY9XCJ1dGY4XCIsaWk9XCJrZXlcIix5QT00MzcwMixTYz1cInNwcmVhZF9wcm9wZXJ0eVwiLHhwPTEyNjU2MyxoQT04NjM4NTAwNDAsZEE9NzAxMDYsb3A9Njc1OTIsZ2M9XCJmdW5jdGlvbl9leHByZXNzaW9uX29yX21ldGhvZFwiLGtBPTcxOTU4LEZjPVwiZm9yX2luaXRfZGVjbGFyYXRpb25cIix3QT03MTk1NSxhcD0xMjMyMTQsRUE9Njg0NzksbFY9XCI9PVwiLFNBPTQzMDE5LGdBPTEyMzE4MCxjcD0yMTcsQ3Y9XCJzcGVjaWZpZXJzXCIsVGM9XCJmdW5jdGlvbl9ib2R5XCIsRkE9Njk2MjIsc3A9ODQ4NyxUQT00MzY0MSxiVj1cIlVuZXhwZWN0ZWQgdG9rZW4gYFwiLHBWPVwidlwiLE9BPTEyMzEzNSxJQT02OTI5NSx2cD0xMjAwOTMsQUE9ODUyMSxscD00MzY0MixtVj0xNzY7ZnVuY3Rpb24gS3UwKHQsbixlLGkseCl7aWYoaTw9bilmb3IodmFyIGM9MTtjPD14O2MrKyllW2krY109dFtuK2NdO2Vsc2UgZm9yKHZhciBjPXg7Yz49MTtjLS0pZVtpK2NdPXRbbitjXTtyZXR1cm4gMH1mdW5jdGlvbiBXdTAodCl7Zm9yKHZhciBuPVswXTt0IT09MDspe2Zvcih2YXIgZT10WzFdLGk9MTtpPGUubGVuZ3RoO2krKyluLnB1c2goZVtpXSk7dD10WzJdfXJldHVybiBufWZ1bmN0aW9uIEp1MCh0LG4sZSl7dmFyIGk9bmV3IEFycmF5KGUrMSk7aVswXT0wO2Zvcih2YXIgeD0xLGM9bisxO3g8PWU7eCsrLGMrKylpW3hdPXRbY107cmV0dXJuIGl9ZnVuY3Rpb24gTkEodCxuLGUpe3ZhciBpPVN0cmluZy5mcm9tQ2hhckNvZGU7aWYobj09MCYmZTw9dlgmJmU9PXQubGVuZ3RoKXJldHVybiBpLmFwcGx5KG51bGwsdCk7Zm9yKHZhciB4PUM7MDxlO24rPUwyLGUtPUwyKXgrPWkuYXBwbHkobnVsbCx0LnNsaWNlKG4sbitNYXRoLm1pbihlLEwyKSkpO3JldHVybiB4fWZ1bmN0aW9uIGJwKHQpe2lmKHowLlVpbnQ4QXJyYXkpdmFyIG49bmV3IHowLlVpbnQ4QXJyYXkodC5sKTtlbHNlIHZhciBuPW5ldyBBcnJheSh0LmwpO2Zvcih2YXIgZT10LmMsaT1lLmxlbmd0aCx4PTA7eDxpO3grKyluW3hdPWUuY2hhckNvZGVBdCh4KTtmb3IoaT10Lmw7eDxpO3grKyluW3hdPTA7cmV0dXJuIHQuYz1uLHQudD00LG59ZnVuY3Rpb24gRnModCxuLGUsaSx4KXtpZih4PT0wKXJldHVybiAwO2lmKGk9PTAmJih4Pj1lLmx8fGUudD09MiYmeD49ZS5jLmxlbmd0aCkpZS5jPXQudD09ND9OQSh0LmMsbix4KTpuPT0wJiZ0LmMubGVuZ3RoPT14P3QuYzp0LmMuc3Vic3RyKG4seCksZS50PWUuYy5sZW5ndGg9PWUubD8wOjI7ZWxzZSBpZihlLnQ9PTImJmk9PWUuYy5sZW5ndGgpZS5jKz10LnQ9PTQ/TkEodC5jLG4seCk6bj09MCYmdC5jLmxlbmd0aD09eD90LmM6dC5jLnN1YnN0cihuLHgpLGUudD1lLmMubGVuZ3RoPT1lLmw/MDoyO2Vsc2V7ZS50IT00JiZicChlKTt2YXIgYz10LmMscz1lLmM7aWYodC50PT00KWlmKGk8PW4pZm9yKHZhciBwPTA7cDx4O3ArKylzW2krcF09Y1tuK3BdO2Vsc2UgZm9yKHZhciBwPXgtMTtwPj0wO3AtLSlzW2krcF09Y1tuK3BdO2Vsc2V7Zm9yKHZhciB5PU1hdGgubWluKHgsYy5sZW5ndGgtbikscD0wO3A8eTtwKyspc1tpK3BdPWMuY2hhckNvZGVBdChuK3ApO2Zvcig7cDx4O3ArKylzW2krcF09MH19cmV0dXJuIDB9ZnVuY3Rpb24gdm9lKHQpe3JldHVybiB0fWZ1bmN0aW9uIFRzKHQsbixlLGkseCl7cmV0dXJuIEZzKHQsbixlLGkseCksMH1mdW5jdGlvbiAkdTAodCxuKXt0aHJvd1swLHQsbl19ZnVuY3Rpb24gUHYodCxuKXtpZih0PT0wKXJldHVybiBDO2lmKG4ucmVwZWF0KXJldHVybiBuLnJlcGVhdCh0KTtmb3IodmFyIGU9QyxpPTA7Oyl7aWYodCYxJiYoZSs9biksdD4+PTEsdD09MClyZXR1cm4gZTtuKz1uLGkrKyxpPT05JiZuLnNsaWNlKDAsMSl9fWZ1bmN0aW9uIER2KHQpe3QudD09Mj90LmMrPVB2KHQubC10LmMubGVuZ3RoLFwiXFwwXCIpOnQuYz1OQSh0LmMsMCx0LmMubGVuZ3RoKSx0LnQ9MH1mdW5jdGlvbiBfVih0KXtpZih0Lmxlbmd0aDwyNCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaWYodC5jaGFyQ29kZUF0KG4pPnpuKXJldHVybiExO3JldHVybiEwfWVsc2UgcmV0dXJuIS9bXlxceDAwLVxceDdmXS8udGVzdCh0KX1mdW5jdGlvbiBDQSh0KXtmb3IodmFyIG49QyxlPUMsaSx4LGMscyxwPTAseT10Lmxlbmd0aDtwPHk7cCsrKXtpZih4PXQuY2hhckNvZGVBdChwKSx4PFBpKXtmb3IodmFyIFQ9cCsxO1Q8eSYmKHg9dC5jaGFyQ29kZUF0KFQpKTxQaTtUKyspO2lmKFQtcD5JST8oZS5zdWJzdHIoMCwxKSxuKz1lLGU9QyxuKz10LnNsaWNlKHAsVCkpOmUrPXQuc2xpY2UocCxUKSxUPT15KWJyZWFrO3A9VH1zPTEsKytwPHkmJigoYz10LmNoYXJDb2RlQXQocCkpJi02NCk9PWp0JiYoaT1jKyh4PDw2KSx4PEhZPyhzPWktMTI0MTYsczxQaSYmKHM9MSkpOihzPTIsKytwPHkmJigoYz10LmNoYXJDb2RlQXQocCkpJi02NCk9PWp0JiYoaT1jKyhpPDw2KSx4PExYPyhzPWktOTI1ODI0LChzPFlYfHxzPj01NTI5NSYmczw1NzM0NCkmJihzPTIpKToocz0zLCsrcDx5JiYoKGM9dC5jaGFyQ29kZUF0KHApKSYtNjQpPT1qdCYmeDwyNDUmJihzPWMtNjM0NDcxNjgrKGk8PDYpLChzPDY1NTM2fHxzPjExMTQxMTEpJiYocz0zKSkpKSkpLHM8ND8ocC09cyxlKz1cIlxcdUZGRkRcIik6cz5MaT9lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1MjMyKyhzPj4xMCksTkgrKHMmMTAyMykpOmUrPVN0cmluZy5mcm9tQ2hhckNvZGUocyksZS5sZW5ndGg+TDImJihlLnN1YnN0cigwLDEpLG4rPWUsZT1DKX1yZXR1cm4gbitlfWZ1bmN0aW9uIE9jKHQsbixlKXt0aGlzLnQ9dCx0aGlzLmM9bix0aGlzLmw9ZX1PYy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy50KXtjYXNlIDk6cmV0dXJuIHRoaXMuYztkZWZhdWx0OkR2KHRoaXMpO2Nhc2UgMDppZihfVih0aGlzLmMpKXJldHVybiB0aGlzLnQ9OSx0aGlzLmM7dGhpcy50PTg7Y2FzZSA4OnJldHVybiB0aGlzLmN9fSxPYy5wcm90b3R5cGUudG9VdGYxNj1mdW5jdGlvbigpe3ZhciB0PXRoaXMudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy50PT05P3Q6Q0EodCl9LE9jLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMudD09ND90aGlzLmMuc2xpY2UoKTp0aGlzLmM7cmV0dXJuIG5ldyBPYyh0aGlzLnQsdCx0aGlzLmwpfTtmdW5jdGlvbiB5Vih0KXtyZXR1cm4gbmV3IE9jKDAsdCx0Lmxlbmd0aCl9ZnVuY3Rpb24gcih0KXtyZXR1cm4geVYodCl9ZnVuY3Rpb24gUEEodCxuKXskdTAodCxyKG4pKX12YXIgenQ9WzBdO2Z1bmN0aW9uIGx1KHQpe1BBKHp0LkludmFsaWRfYXJndW1lbnQsdCl9ZnVuY3Rpb24gaFYoKXtsdShxUyl9ZnVuY3Rpb24gSm4odCxuLGUpe2lmKGUmPXVzLHQudCE9NCl7aWYobj09dC5jLmxlbmd0aClyZXR1cm4gdC5jKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpLG4rMT09dC5sJiYodC50PTApLDA7YnAodCl9cmV0dXJuIHQuY1tuXT1lLDB9ZnVuY3Rpb24gYjEodCxuLGUpe3JldHVybiBuPj4+MD49dC5sJiZoVigpLEpuKHQsbixlKX1mdW5jdGlvbiBYdSh0LG4pe3N3aXRjaCh0LnQmNil7ZGVmYXVsdDppZihuPj10LmMubGVuZ3RoKXJldHVybiAwO2Nhc2UgMDpyZXR1cm4gdC5jLmNoYXJDb2RlQXQobik7Y2FzZSA0OnJldHVybiB0LmNbbl19fWZ1bmN0aW9uIG9zKHQsbil7aWYodC5mdW4pcmV0dXJuIG9zKHQuZnVuLG4pO2lmKHR5cGVvZiB0IT1cImZ1bmN0aW9uXCIpcmV0dXJuIHQ7dmFyIGU9dC5sZW5ndGh8MDtpZihlPT09MClyZXR1cm4gdC5hcHBseShudWxsLG4pO3ZhciBpPW4ubGVuZ3RofDAseD1lLWl8MDtyZXR1cm4geD09MD90LmFwcGx5KG51bGwsbik6eDwwP29zKHQuYXBwbHkobnVsbCxuLnNsaWNlKDAsZSkpLG4uc2xpY2UoZSkpOmZ1bmN0aW9uKCl7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGg9PTA/MTphcmd1bWVudHMubGVuZ3RoLHM9bmV3IEFycmF5KG4ubGVuZ3RoK2MpLHA9MDtwPG4ubGVuZ3RoO3ArKylzW3BdPW5bcF07Zm9yKHZhciBwPTA7cDxhcmd1bWVudHMubGVuZ3RoO3ArKylzW24ubGVuZ3RoK3BdPWFyZ3VtZW50c1twXTtyZXR1cm4gb3ModCxzKX19ZnVuY3Rpb24gaWwoKXtsdShxUyl9ZnVuY3Rpb24gdHUodCxuKXtyZXR1cm4gbj4+PjA+PXQubGVuZ3RoLTEmJmlsKCksdH1mdW5jdGlvbiBadTAodCl7cmV0dXJuIGlzRmluaXRlKHQpP01hdGguYWJzKHQpPj0yMjI1MDczODU4NTA3MjAxNGUtMzI0PzA6dCE9MD8xOjI6aXNOYU4odCk/NDozfWZ1bmN0aW9uIEljKHQpe3JldHVybih0LnQmNikhPTAmJkR2KHQpLHQuY312YXIgUXUwPU1hdGgubG9nMiYmTWF0aC5sb2cyKDExMjM1NTgyMDkyODg5NDc0ZTI5MSk9PTEwMjA7ZnVuY3Rpb24gcjcwKHQpe2lmKFF1MClyZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIodCkpO3ZhciBuPTA7aWYodD09MClyZXR1cm4tMS8wO2lmKHQ+PTEpZm9yKDt0Pj0yOyl0Lz0yLG4rKztlbHNlIGZvcig7dDwxOyl0Kj0yLG4tLTtyZXR1cm4gbn1mdW5jdGlvbiBEQSh0KXt2YXIgbj1uZXcgejAuRmxvYXQzMkFycmF5KDEpO25bMF09dDt2YXIgZT1uZXcgejAuSW50MzJBcnJheShuLmJ1ZmZlcik7cmV0dXJuIGVbMF18MH12YXIgZFY9TWF0aC5wb3coMiwtMjQpO2Z1bmN0aW9uIGtWKHQpe3Rocm93IHR9ZnVuY3Rpb24gd1YoKXtrVih6dC5EaXZpc2lvbl9ieV96ZXJvKX1mdW5jdGlvbiBzbih0LG4sZSl7dGhpcy5sbz10JkV4LHRoaXMubWk9biZFeCx0aGlzLmhpPWUmTGl9c24ucHJvdG90eXBlLmNhbWxfY3VzdG9tPVwiX2pcIixzbi5wcm90b3R5cGUuY29weT1mdW5jdGlvbigpe3JldHVybiBuZXcgc24odGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpfSxzbi5wcm90b3R5cGUudWNvbXBhcmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGk+dC5oaT8xOnRoaXMuaGk8dC5oaT8tMTp0aGlzLm1pPnQubWk/MTp0aGlzLm1pPHQubWk/LTE6dGhpcy5sbz50LmxvPzE6dGhpcy5sbzx0LmxvPy0xOjB9LHNuLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuaGk8PDE2LGU9dC5oaTw8MTY7cmV0dXJuIG4+ZT8xOm48ZT8tMTp0aGlzLm1pPnQubWk/MTp0aGlzLm1pPHQubWk/LTE6dGhpcy5sbz50LmxvPzE6dGhpcy5sbzx0LmxvPy0xOjB9LHNuLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXt2YXIgdD0tdGhpcy5sbyxuPS10aGlzLm1pKyh0Pj4yNCksZT0tdGhpcy5oaSsobj4+MjQpO3JldHVybiBuZXcgc24odCxuLGUpfSxzbi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMubG8rdC5sbyxlPXRoaXMubWkrdC5taSsobj4+MjQpLGk9dGhpcy5oaSt0LmhpKyhlPj4yNCk7cmV0dXJuIG5ldyBzbihuLGUsaSl9LHNuLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5sby10LmxvLGU9dGhpcy5taS10Lm1pKyhuPj4yNCksaT10aGlzLmhpLXQuaGkrKGU+PjI0KTtyZXR1cm4gbmV3IHNuKG4sZSxpKX0sc24ucHJvdG90eXBlLm11bD1mdW5jdGlvbih0KXt2YXIgbj10aGlzLmxvKnQubG8sZT0obipkVnwwKSt0aGlzLm1pKnQubG8rdGhpcy5sbyp0Lm1pLGk9KGUqZFZ8MCkrdGhpcy5oaSp0LmxvK3RoaXMubWkqdC5taSt0aGlzLmxvKnQuaGk7cmV0dXJuIG5ldyBzbihuLGUsaSl9LHNuLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpPT0wfSxzbi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaTw8MTY8MH0sc24ucHJvdG90eXBlLmFuZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHNuKHRoaXMubG8mdC5sbyx0aGlzLm1pJnQubWksdGhpcy5oaSZ0LmhpKX0sc24ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgc24odGhpcy5sb3x0LmxvLHRoaXMubWl8dC5taSx0aGlzLmhpfHQuaGkpfSxzbi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgc24odGhpcy5sb150LmxvLHRoaXMubWledC5taSx0aGlzLmhpXnQuaGkpfSxzbi5wcm90b3R5cGUuc2hpZnRfbGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gdD10JjYzLHQ9PTA/dGhpczp0PDI0P25ldyBzbih0aGlzLmxvPDx0LHRoaXMubWk8PHR8dGhpcy5sbz4+MjQtdCx0aGlzLmhpPDx0fHRoaXMubWk+PjI0LXQpOnQ8NDg/bmV3IHNuKDAsdGhpcy5sbzw8dC0yNCx0aGlzLm1pPDx0LTI0fHRoaXMubG8+PjQ4LXQpOm5ldyBzbigwLDAsdGhpcy5sbzw8dC00OCl9LHNuLnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZD1mdW5jdGlvbih0KXtyZXR1cm4gdD10JjYzLHQ9PTA/dGhpczp0PDI0P25ldyBzbih0aGlzLmxvPj50fHRoaXMubWk8PDI0LXQsdGhpcy5taT4+dHx0aGlzLmhpPDwyNC10LHRoaXMuaGk+PnQpOnQ8NDg/bmV3IHNuKHRoaXMubWk+PnQtMjR8dGhpcy5oaTw8NDgtdCx0aGlzLmhpPj50LTI0LDApOm5ldyBzbih0aGlzLmhpPj50LTQ4LDAsMCl9LHNuLnByb3RvdHlwZS5zaGlmdF9yaWdodD1mdW5jdGlvbih0KXtpZih0PXQmNjMsdD09MClyZXR1cm4gdGhpczt2YXIgbj10aGlzLmhpPDwxNj4+MTY7aWYodDwyNClyZXR1cm4gbmV3IHNuKHRoaXMubG8+PnR8dGhpcy5taTw8MjQtdCx0aGlzLm1pPj50fG48PDI0LXQsdGhpcy5oaTw8MTY+PnQ+Pj4xNik7dmFyIGU9dGhpcy5oaTw8MTY+PjMxO3JldHVybiB0PDQ4P25ldyBzbih0aGlzLm1pPj50LTI0fHRoaXMuaGk8PDQ4LXQsdGhpcy5oaTw8MTY+PnQtMjQ+PjE2LGUmTGkpOm5ldyBzbih0aGlzLmhpPDwxNj4+dC0zMixlLGUpfSxzbi5wcm90b3R5cGUubHNsMT1mdW5jdGlvbigpe3RoaXMuaGk9dGhpcy5oaTw8MXx0aGlzLm1pPj4yMyx0aGlzLm1pPSh0aGlzLm1pPDwxfHRoaXMubG8+PjIzKSZFeCx0aGlzLmxvPXRoaXMubG88PDEmRXh9LHNuLnByb3RvdHlwZS5sc3IxPWZ1bmN0aW9uKCl7dGhpcy5sbz0odGhpcy5sbz4+PjF8dGhpcy5taTw8MjMpJkV4LHRoaXMubWk9KHRoaXMubWk+Pj4xfHRoaXMuaGk8PDIzKSZFeCx0aGlzLmhpPXRoaXMuaGk+Pj4xfSxzbi5wcm90b3R5cGUudWRpdm1vZD1mdW5jdGlvbih0KXtmb3IodmFyIG49MCxlPXRoaXMuY29weSgpLGk9dC5jb3B5KCkseD1uZXcgc24oMCwwLDApO2UudWNvbXBhcmUoaSk+MDspbisrLGkubHNsMSgpO2Zvcig7bj49MDspbi0tLHgubHNsMSgpLGUudWNvbXBhcmUoaSk+PTAmJih4LmxvKyssZT1lLnN1YihpKSksaS5sc3IxKCk7cmV0dXJue3F1b3RpZW50OngsbW9kdWx1czplfX0sc24ucHJvdG90eXBlLmRpdj1mdW5jdGlvbih0KXt2YXIgbj10aGlzO3QuaXNaZXJvKCkmJndWKCk7dmFyIGU9bi5oaV50LmhpO24uaGkmTWkmJihuPW4ubmVnKCkpLHQuaGkmTWkmJih0PXQubmVnKCkpO3ZhciBpPW4udWRpdm1vZCh0KS5xdW90aWVudDtyZXR1cm4gZSZNaSYmKGk9aS5uZWcoKSksaX0sc24ucHJvdG90eXBlLm1vZD1mdW5jdGlvbih0KXt2YXIgbj10aGlzO3QuaXNaZXJvKCkmJndWKCk7dmFyIGU9bi5oaTtuLmhpJk1pJiYobj1uLm5lZygpKSx0LmhpJk1pJiYodD10Lm5lZygpKTt2YXIgaT1uLnVkaXZtb2QodCkubW9kdWx1cztyZXR1cm4gZSZNaSYmKGk9aS5uZWcoKSksaX0sc24ucHJvdG90eXBlLnRvSW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG98dGhpcy5taTw8MjR9LHNuLnByb3RvdHlwZS50b0Zsb2F0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGk8PDE2KSpNYXRoLnBvdygyLDMyKSt0aGlzLm1pKk1hdGgucG93KDIsMjQpK3RoaXMubG99LHNuLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuaGk+PjgsdGhpcy5oaSZ1cyx0aGlzLm1pPj4xNix0aGlzLm1pPj44JnVzLHRoaXMubWkmdXMsdGhpcy5sbz4+MTYsdGhpcy5sbz4+OCZ1cyx0aGlzLmxvJnVzXX0sc24ucHJvdG90eXBlLmxvMzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb3wodGhpcy5taSZ1cyk8PDI0fSxzbi5wcm90b3R5cGUuaGkzMj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1pPj4+OCZMaXx0aGlzLmhpPDwxNn07ZnVuY3Rpb24gcHAodCxuLGUpe3JldHVybiBuZXcgc24odCxuLGUpfWZ1bmN0aW9uIG1wKHQpe2lmKCFpc0Zpbml0ZSh0KSlyZXR1cm4gaXNOYU4odCk/cHAoMSwwLHRWKTp0PjA/cHAoMCwwLHRWKTpwcCgwLDAsNjU1MjApO3ZhciBuPXQ9PTAmJjEvdD09LTEvMD9NaTp0Pj0wPzA6TWk7biYmKHQ9LXQpO3ZhciBlPXI3MCh0KSsxMDIzO2U8PTA/KGU9MCx0Lz1NYXRoLnBvdygyLC1ySCkpOih0Lz1NYXRoLnBvdygyLGUtdVUpLHQ8MTYmJih0Kj0yLGUtPTEpLGU9PTAmJih0Lz0yKSk7dmFyIGk9TWF0aC5wb3coMiwyNCkseD10fDA7dD0odC14KSppO3ZhciBjPXR8MDt0PSh0LWMpKmk7dmFyIHM9dHwwO3JldHVybiB4PXgmZUZ8bnxlPDw0LHBwKHMsYyx4KX1mdW5jdGlvbiBmbCh0KXtyZXR1cm4gdC50b0FycmF5KCl9ZnVuY3Rpb24gRVYodCxuLGUpe2lmKHQud3JpdGUoMzIsbi5kaW1zLmxlbmd0aCksdC53cml0ZSgzMixuLmtpbmR8bi5sYXlvdXQ8PDgpLG4uY2FtbF9jdXN0b209PXYzKWZvcih2YXIgaT0wO2k8bi5kaW1zLmxlbmd0aDtpKyspbi5kaW1zW2ldPExpP3Qud3JpdGUoMTYsbi5kaW1zW2ldKToodC53cml0ZSgxNixMaSksdC53cml0ZSgzMiwwKSx0LndyaXRlKDMyLG4uZGltc1tpXSkpO2Vsc2UgZm9yKHZhciBpPTA7aTxuLmRpbXMubGVuZ3RoO2krKyl0LndyaXRlKDMyLG4uZGltc1tpXSk7c3dpdGNoKG4ua2luZCl7Y2FzZSAyOmNhc2UgMzpjYXNlIDEyOmZvcih2YXIgaT0wO2k8bi5kYXRhLmxlbmd0aDtpKyspdC53cml0ZSg4LG4uZGF0YVtpXSk7YnJlYWs7Y2FzZSA0OmNhc2UgNTpmb3IodmFyIGk9MDtpPG4uZGF0YS5sZW5ndGg7aSsrKXQud3JpdGUoMTYsbi5kYXRhW2ldKTticmVhaztjYXNlIDY6Zm9yKHZhciBpPTA7aTxuLmRhdGEubGVuZ3RoO2krKyl0LndyaXRlKDMyLG4uZGF0YVtpXSk7YnJlYWs7Y2FzZSA4OmNhc2UgOTp0LndyaXRlKDgsMCk7Zm9yKHZhciBpPTA7aTxuLmRhdGEubGVuZ3RoO2krKyl0LndyaXRlKDMyLG4uZGF0YVtpXSk7YnJlYWs7Y2FzZSA3OmZvcih2YXIgaT0wO2k8bi5kYXRhLmxlbmd0aC8yO2krKylmb3IodmFyIHg9Zmwobi5nZXQoaSkpLGM9MDtjPDg7YysrKXQud3JpdGUoOCx4W2NdKTticmVhaztjYXNlIDE6Zm9yKHZhciBpPTA7aTxuLmRhdGEubGVuZ3RoO2krKylmb3IodmFyIHg9ZmwobXAobi5nZXQoaSkpKSxjPTA7Yzw4O2MrKyl0LndyaXRlKDgseFtjXSk7YnJlYWs7Y2FzZSAwOmZvcih2YXIgaT0wO2k8bi5kYXRhLmxlbmd0aDtpKyspe3ZhciB4PURBKG4uZ2V0KGkpKTt0LndyaXRlKDMyLHgpfWJyZWFrO2Nhc2UgMTA6Zm9yKHZhciBpPTA7aTxuLmRhdGEubGVuZ3RoLzI7aSsrKXt2YXIgYz1uLmdldChpKTt0LndyaXRlKDMyLERBKGNbMV0pKSx0LndyaXRlKDMyLERBKGNbMl0pKX1icmVhaztjYXNlIDExOmZvcih2YXIgaT0wO2k8bi5kYXRhLmxlbmd0aC8yO2krKyl7Zm9yKHZhciBzPW4uZ2V0KGkpLHg9ZmwobXAoc1sxXSkpLGM9MDtjPDg7YysrKXQud3JpdGUoOCx4W2NdKTtmb3IodmFyIHg9ZmwobXAoc1syXSkpLGM9MDtjPDg7YysrKXQud3JpdGUoOCx4W2NdKX1icmVha31lWzBdPSg0K24uZGltcy5sZW5ndGgpKjQsZVsxXT0oNCtuLmRpbXMubGVuZ3RoKSo4fWZ1bmN0aW9uIFNWKHQpe3N3aXRjaCh0KXtjYXNlIDc6Y2FzZSAxMDpjYXNlIDExOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDF9fWZ1bmN0aW9uIGU3MCh0LG4pe3ZhciBlPXowLGk7c3dpdGNoKHQpe2Nhc2UgMDppPWUuRmxvYXQzMkFycmF5O2JyZWFrO2Nhc2UgMTppPWUuRmxvYXQ2NEFycmF5O2JyZWFrO2Nhc2UgMjppPWUuSW50OEFycmF5O2JyZWFrO2Nhc2UgMzppPWUuVWludDhBcnJheTticmVhaztjYXNlIDQ6aT1lLkludDE2QXJyYXk7YnJlYWs7Y2FzZSA1Omk9ZS5VaW50MTZBcnJheTticmVhaztjYXNlIDY6aT1lLkludDMyQXJyYXk7YnJlYWs7Y2FzZSA3Omk9ZS5JbnQzMkFycmF5O2JyZWFrO2Nhc2UgODppPWUuSW50MzJBcnJheTticmVhaztjYXNlIDk6aT1lLkludDMyQXJyYXk7YnJlYWs7Y2FzZSAxMDppPWUuRmxvYXQzMkFycmF5O2JyZWFrO2Nhc2UgMTE6aT1lLkZsb2F0NjRBcnJheTticmVhaztjYXNlIDEyOmk9ZS5VaW50OEFycmF5O2JyZWFrfWl8fGx1KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO3ZhciB4PW5ldyBpKG4qU1YodCkpO3JldHVybiB4fWZ1bmN0aW9uIExBKHQpe3ZhciBuPW5ldyB6MC5JbnQzMkFycmF5KDEpO25bMF09dDt2YXIgZT1uZXcgejAuRmxvYXQzMkFycmF5KG4uYnVmZmVyKTtyZXR1cm4gZVswXX1mdW5jdGlvbiB4bCh0KXtyZXR1cm4gbmV3IHNuKHRbN108PDB8dFs2XTw8OHx0WzVdPDwxNix0WzRdPDwwfHRbM108PDh8dFsyXTw8MTYsdFsxXTw8MHx0WzBdPDw4KX1mdW5jdGlvbiBSQSh0KXt2YXIgbj10LmxvLGU9dC5taSxpPXQuaGkseD0oaSYzMjc2Nyk+PjQ7aWYoeD09blgpcmV0dXJuKG58ZXxpJmVGKT09MD9pJk1pPy0xLzA6MS8wOk5hTjt2YXIgYz1NYXRoLnBvdygyLC0yNCkscz0obipjK2UpKmMrKGkmZUYpO3JldHVybiB4PjA/KHMrPTE2LHMqPU1hdGgucG93KDIseC11VSkpOnMqPU1hdGgucG93KDIsLXJIKSxpJk1pJiYocz0tcyksc31mdW5jdGlvbiBqQSh0KXtmb3IodmFyIG49dC5sZW5ndGgsZT0xLGk9MDtpPG47aSsrKXRbaV08MCYmbHUoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKSxlPWUqdFtpXTtyZXR1cm4gZX1mdW5jdGlvbiBuNzAodCxuKXtyZXR1cm4gbmV3IHNuKHQmRXgsdD4+PjI0JnVzfChuJkxpKTw8OCxuPj4+MTYmTGkpfWZ1bmN0aW9uIEdBKHQpe3JldHVybiB0LmhpMzIoKX1mdW5jdGlvbiBNQSh0KXtyZXR1cm4gdC5sbzMyKCl9dmFyIHQ3MD12MztmdW5jdGlvbiBPcyh0LG4sZSxpKXt0aGlzLmtpbmQ9dCx0aGlzLmxheW91dD1uLHRoaXMuZGltcz1lLHRoaXMuZGF0YT1pfU9zLnByb3RvdHlwZS5jYW1sX2N1c3RvbT10NzAsT3MucHJvdG90eXBlLm9mZnNldD1mdW5jdGlvbih0KXt2YXIgbj0wO2lmKHR5cGVvZiB0PT1cIm51bWJlclwiJiYodD1bdF0pLHQgaW5zdGFuY2VvZiBBcnJheXx8bHUoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIiksdGhpcy5kaW1zLmxlbmd0aCE9dC5sZW5ndGgmJmx1KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpLHRoaXMubGF5b3V0PT0wKWZvcih2YXIgZT0wO2U8dGhpcy5kaW1zLmxlbmd0aDtlKyspKHRbZV08MHx8dFtlXT49dGhpcy5kaW1zW2VdKSYmaWwoKSxuPW4qdGhpcy5kaW1zW2VdK3RbZV07ZWxzZSBmb3IodmFyIGU9dGhpcy5kaW1zLmxlbmd0aC0xO2U+PTA7ZS0tKSh0W2VdPDF8fHRbZV0+dGhpcy5kaW1zW2VdKSYmaWwoKSxuPW4qdGhpcy5kaW1zW2VdKyh0W2VdLTEpO3JldHVybiBufSxPcy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3N3aXRjaCh0aGlzLmtpbmQpe2Nhc2UgNzp2YXIgbj10aGlzLmRhdGFbdCoyKzBdLGU9dGhpcy5kYXRhW3QqMisxXTtyZXR1cm4gbjcwKG4sZSk7Y2FzZSAxMDpjYXNlIDExOnZhciBpPXRoaXMuZGF0YVt0KjIrMF0seD10aGlzLmRhdGFbdCoyKzFdO3JldHVybltndixpLHhdO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZGF0YVt0XX19LE9zLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxuKXtzd2l0Y2godGhpcy5raW5kKXtjYXNlIDc6dGhpcy5kYXRhW3QqMiswXT1NQShuKSx0aGlzLmRhdGFbdCoyKzFdPUdBKG4pO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMTp0aGlzLmRhdGFbdCoyKzBdPW5bMV0sdGhpcy5kYXRhW3QqMisxXT1uWzJdO2JyZWFrO2RlZmF1bHQ6dGhpcy5kYXRhW3RdPW47YnJlYWt9cmV0dXJuIDB9LE9zLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKHQpe3N3aXRjaCh0aGlzLmtpbmQpe2Nhc2UgNzp2YXIgbj1NQSh0KSxlPUdBKHQpO2lmKG49PWUpdGhpcy5kYXRhLmZpbGwobik7ZWxzZSBmb3IodmFyIGk9MDtpPHRoaXMuZGF0YS5sZW5ndGg7aSsrKXRoaXMuZGF0YVtpXT1pJTI9PTA/bjplO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMTp2YXIgeD10WzFdLGM9dFsyXTtpZih4PT1jKXRoaXMuZGF0YS5maWxsKHgpO2Vsc2UgZm9yKHZhciBpPTA7aTx0aGlzLmRhdGEubGVuZ3RoO2krKyl0aGlzLmRhdGFbaV09aSUyPT0wP3g6YzticmVhaztkZWZhdWx0OnRoaXMuZGF0YS5maWxsKHQpO2JyZWFrfX0sT3MucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24odCxuKXtpZih0aGlzLmxheW91dCE9dC5sYXlvdXR8fHRoaXMua2luZCE9dC5raW5kKXt2YXIgZT10aGlzLmtpbmR8dGhpcy5sYXlvdXQ8PDgsaT10LmtpbmR8dC5sYXlvdXQ8PDg7cmV0dXJuIGktZX1pZih0aGlzLmRpbXMubGVuZ3RoIT10LmRpbXMubGVuZ3RoKXJldHVybiB0LmRpbXMubGVuZ3RoLXRoaXMuZGltcy5sZW5ndGg7Zm9yKHZhciB4PTA7eDx0aGlzLmRpbXMubGVuZ3RoO3grKylpZih0aGlzLmRpbXNbeF0hPXQuZGltc1t4XSlyZXR1cm4gdGhpcy5kaW1zW3hdPHQuZGltc1t4XT8tMToxO3N3aXRjaCh0aGlzLmtpbmQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAxMDpjYXNlIDExOmZvcih2YXIgYyxzLHg9MDt4PHRoaXMuZGF0YS5sZW5ndGg7eCsrKXtpZihjPXRoaXMuZGF0YVt4XSxzPXQuZGF0YVt4XSxjPHMpcmV0dXJuLTE7aWYoYz5zKXJldHVybiAxO2lmKGMhPXMpe2lmKCFuKXJldHVybiBOYU47aWYoYz09YylyZXR1cm4gMTtpZihzPT1zKXJldHVybi0xfX1icmVhaztjYXNlIDc6Zm9yKHZhciB4PTA7eDx0aGlzLmRhdGEubGVuZ3RoO3grPTIpe2lmKHRoaXMuZGF0YVt4KzFdPHQuZGF0YVt4KzFdKXJldHVybi0xO2lmKHRoaXMuZGF0YVt4KzFdPnQuZGF0YVt4KzFdKXJldHVybiAxO2lmKHRoaXMuZGF0YVt4XT4+PjA8dC5kYXRhW3hdPj4+MClyZXR1cm4tMTtpZih0aGlzLmRhdGFbeF0+Pj4wPnQuZGF0YVt4XT4+PjApcmV0dXJuIDF9YnJlYWs7Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmNhc2UgNjpjYXNlIDg6Y2FzZSA5OmNhc2UgMTI6Zm9yKHZhciB4PTA7eDx0aGlzLmRhdGEubGVuZ3RoO3grKyl7aWYodGhpcy5kYXRhW3hdPHQuZGF0YVt4XSlyZXR1cm4tMTtpZih0aGlzLmRhdGFbeF0+dC5kYXRhW3hdKXJldHVybiAxfWJyZWFrfXJldHVybiAwfTtmdW5jdGlvbiBMdih0LG4sZSxpKXt0aGlzLmtpbmQ9dCx0aGlzLmxheW91dD1uLHRoaXMuZGltcz1lLHRoaXMuZGF0YT1pfUx2LnByb3RvdHlwZT1uZXcgT3MsTHYucHJvdG90eXBlLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHQhPVwibnVtYmVyXCImJih0IGluc3RhbmNlb2YgQXJyYXkmJnQubGVuZ3RoPT0xP3Q9dFswXTpsdShcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKSksKHQ8MHx8dD49dGhpcy5kaW1zWzBdKSYmaWwoKSx0fSxMdi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRhdGFbdF19LEx2LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5kYXRhW3RdPW4sMH0sTHYucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF0YS5maWxsKHQpLDB9O2Z1bmN0aW9uIGdWKHQsbixlLGkpe3ZhciB4PVNWKHQpO3JldHVybiBqQShlKSp4IT1pLmxlbmd0aCYmbHUoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpLG49PTAmJmUubGVuZ3RoPT0xJiZ4PT0xP25ldyBMdih0LG4sZSxpKTpuZXcgT3ModCxuLGUsaSl9ZnVuY3Rpb24gbjcodCl7UEEoenQuRmFpbHVyZSx0KX1mdW5jdGlvbiBGVih0LG4sZSl7dmFyIGk9dC5yZWFkMzJzKCk7KGk8MHx8aT4xNikmJm43KFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO3ZhciB4PXQucmVhZDMycygpLGM9eCZ1cyxzPXg+PjgmMSxwPVtdO2lmKGU9PXYzKWZvcih2YXIgeT0wO3k8aTt5Kyspe3ZhciBUPXQucmVhZDE2dSgpO2lmKFQ9PUxpKXt2YXIgRT10LnJlYWQzMnUoKSxkPXQucmVhZDMydSgpO0UhPTAmJm43KFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKSxUPWR9cC5wdXNoKFQpfWVsc2UgZm9yKHZhciB5PTA7eTxpO3krKylwLnB1c2godC5yZWFkMzJ1KCkpO3ZhciB3PWpBKHApLEc9ZTcwKGMsdyksQT1nVihjLHMscCxHKTtzd2l0Y2goYyl7Y2FzZSAyOmZvcih2YXIgeT0wO3k8dzt5KyspR1t5XT10LnJlYWQ4cygpO2JyZWFrO2Nhc2UgMzpjYXNlIDEyOmZvcih2YXIgeT0wO3k8dzt5KyspR1t5XT10LnJlYWQ4dSgpO2JyZWFrO2Nhc2UgNDpmb3IodmFyIHk9MDt5PHc7eSsrKUdbeV09dC5yZWFkMTZzKCk7YnJlYWs7Y2FzZSA1OmZvcih2YXIgeT0wO3k8dzt5KyspR1t5XT10LnJlYWQxNnUoKTticmVhaztjYXNlIDY6Zm9yKHZhciB5PTA7eTx3O3krKylHW3ldPXQucmVhZDMycygpO2JyZWFrO2Nhc2UgODpjYXNlIDk6dmFyIFM9dC5yZWFkOHUoKTtTJiZuNyhcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO2Zvcih2YXIgeT0wO3k8dzt5KyspR1t5XT10LnJlYWQzMnMoKTticmVhaztjYXNlIDc6Zm9yKHZhciBrMD1uZXcgQXJyYXkoOCkseT0wO3k8dzt5Kyspe2Zvcih2YXIgTT0wO008ODtNKyspazBbTV09dC5yZWFkOHUoKTt2YXIgSz14bChrMCk7QS5zZXQoeSxLKX1icmVhaztjYXNlIDE6Zm9yKHZhciBrMD1uZXcgQXJyYXkoOCkseT0wO3k8dzt5Kyspe2Zvcih2YXIgTT0wO008ODtNKyspazBbTV09dC5yZWFkOHUoKTt2YXIgVj1SQSh4bChrMCkpO0Euc2V0KHksVil9YnJlYWs7Y2FzZSAwOmZvcih2YXIgeT0wO3k8dzt5Kyspe3ZhciBWPUxBKHQucmVhZDMycygpKTtBLnNldCh5LFYpfWJyZWFrO2Nhc2UgMTA6Zm9yKHZhciB5PTA7eTx3O3krKyl7dmFyIGYwPUxBKHQucmVhZDMycygpKSxtMD1MQSh0LnJlYWQzMnMoKSk7QS5zZXQoeSxbZ3YsZjAsbTBdKX1icmVhaztjYXNlIDExOmZvcih2YXIgazA9bmV3IEFycmF5KDgpLHk9MDt5PHc7eSsrKXtmb3IodmFyIE09MDtNPDg7TSsrKWswW01dPXQucmVhZDh1KCk7Zm9yKHZhciBmMD1SQSh4bChrMCkpLE09MDtNPDg7TSsrKWswW01dPXQucmVhZDh1KCk7dmFyIG0wPVJBKHhsKGswKSk7QS5zZXQoeSxbZ3YsZjAsbTBdKX1icmVha31yZXR1cm4gblswXT0oNCtpKSo0LGdWKGMscyxwLEcpfWZ1bmN0aW9uIFRWKHQsbixlKXtyZXR1cm4gdC5jb21wYXJlKG4sZSl9ZnVuY3Rpb24gT1YodCxuKXtyZXR1cm4gTWF0aC5pbXVsKHQsbil9ZnVuY3Rpb24gYXModCxuKXtyZXR1cm4gbj1PVihuLC04NjIwNDg5NDMpLG49bjw8MTV8bj4+PjMyLTE1LG49T1Yobiw0NjE4NDU5MDcpLHRePW4sdD10PDwxM3x0Pj4+MzItMTMsKHQrKHQ8PDIpfDApKy00MzA2NzUxMDB8MH1mdW5jdGlvbiB1NzAodCxuKXtyZXR1cm4gdD1hcyh0LE1BKG4pKSx0PWFzKHQsR0EobikpLHR9ZnVuY3Rpb24gSVYodCxuKXtyZXR1cm4gdTcwKHQsbXAobikpfWZ1bmN0aW9uIEFWKHQpe3ZhciBuPWpBKHQuZGltcyksZT0wO3N3aXRjaCh0LmtpbmQpe2Nhc2UgMjpjYXNlIDM6Y2FzZSAxMjpuPk40JiYobj1ONCk7dmFyIGk9MCx4PTA7Zm9yKHg9MDt4KzQ8PXQuZGF0YS5sZW5ndGg7eCs9NClpPXQuZGF0YVt4KzBdfHQuZGF0YVt4KzFdPDw4fHQuZGF0YVt4KzJdPDwxNnx0LmRhdGFbeCszXTw8MjQsZT1hcyhlLGkpO3N3aXRjaChpPTAsbiYzKXtjYXNlIDM6aT10LmRhdGFbeCsyXTw8MTY7Y2FzZSAyOml8PXQuZGF0YVt4KzFdPDw4O2Nhc2UgMTppfD10LmRhdGFbeCswXSxlPWFzKGUsaSl9YnJlYWs7Y2FzZSA0OmNhc2UgNTpuPmp0JiYobj1qdCk7dmFyIGk9MCx4PTA7Zm9yKHg9MDt4KzI8PXQuZGF0YS5sZW5ndGg7eCs9MilpPXQuZGF0YVt4KzBdfHQuZGF0YVt4KzFdPDwxNixlPWFzKGUsaSk7KG4mMSkhPTAmJihlPWFzKGUsdC5kYXRhW3hdKSk7YnJlYWs7Y2FzZSA2Om4+NjQmJihuPTY0KTtmb3IodmFyIHg9MDt4PG47eCsrKWU9YXMoZSx0LmRhdGFbeF0pO2JyZWFrO2Nhc2UgODpjYXNlIDk6bj42NCYmKG49NjQpO2Zvcih2YXIgeD0wO3g8bjt4KyspZT1hcyhlLHQuZGF0YVt4XSk7YnJlYWs7Y2FzZSA3Om4+MzImJihuPTMyKSxuKj0yO2Zvcih2YXIgeD0wO3g8bjt4KyspZT1hcyhlLHQuZGF0YVt4XSk7YnJlYWs7Y2FzZSAxMDpuKj0yO2Nhc2UgMDpuPjY0JiYobj02NCk7Zm9yKHZhciB4PTA7eDxuO3grKyllPUlWKGUsdC5kYXRhW3hdKTticmVhaztjYXNlIDExOm4qPTI7Y2FzZSAxOm4+MzImJihuPTMyKTtmb3IodmFyIHg9MDt4PG47eCsrKWU9SVYoZSx0LmRhdGFbeF0pO2JyZWFrfXJldHVybiBlfWZ1bmN0aW9uIGk3MCh0LG4pe3JldHVybiBuWzBdPTQsdC5yZWFkMzJzKCl9ZnVuY3Rpb24gZjcwKHQsbil7c3dpdGNoKHQucmVhZDh1KCkpe2Nhc2UgMTpyZXR1cm4gblswXT00LHQucmVhZDMycygpO2Nhc2UgMjpuNyhcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7ZGVmYXVsdDpuNyhcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpfX1mdW5jdGlvbiB4NzAodCxuKXtmb3IodmFyIGU9bmV3IEFycmF5KDgpLGk9MDtpPDg7aSsrKWVbaV09dC5yZWFkOHUoKTtyZXR1cm4gblswXT04LHhsKGUpfWZ1bmN0aW9uIG83MCh0LG4sZSl7Zm9yKHZhciBpPWZsKG4pLHg9MDt4PDg7eCsrKXQud3JpdGUoOCxpW3hdKTtlWzBdPTgsZVsxXT04fWZ1bmN0aW9uIGE3MCh0LG4sZSl7cmV0dXJuIHQuY29tcGFyZShuKX1mdW5jdGlvbiBjNzAodCl7cmV0dXJuIHQubG8zMigpXnQuaGkzMigpfXZhciBOVj17X2o6e2Rlc2VyaWFsaXplOng3MCxzZXJpYWxpemU6bzcwLGZpeGVkX2xlbmd0aDo4LGNvbXBhcmU6YTcwLGhhc2g6YzcwfSxfaTp7ZGVzZXJpYWxpemU6aTcwLGZpeGVkX2xlbmd0aDo0fSxfbjp7ZGVzZXJpYWxpemU6ZjcwLGZpeGVkX2xlbmd0aDo0fSxfYmlnYXJyYXk6e2Rlc2VyaWFsaXplOmZ1bmN0aW9uKHQsbil7cmV0dXJuIEZWKHQsbixcIl9iaWdhcnJheVwiKX0sc2VyaWFsaXplOkVWLGNvbXBhcmU6VFYsaGFzaDpBVn0sX2JpZ2FycjAyOntkZXNlcmlhbGl6ZTpmdW5jdGlvbih0LG4pe3JldHVybiBGVih0LG4sdjMpfSxzZXJpYWxpemU6RVYsY29tcGFyZTpUVixoYXNoOkFWfX07ZnVuY3Rpb24gQkEodCl7cmV0dXJuIE5WW3QuY2FtbF9jdXN0b21dJiZOVlt0LmNhbWxfY3VzdG9tXS5jb21wYXJlfWZ1bmN0aW9uIENWKHQsbixlLGkpe3ZhciB4PUJBKG4pO2lmKHgpe3ZhciBjPWU+MD94KG4sdCxpKTp4KHQsbixpKTtpZihpJiZjIT1jKXJldHVybiBlO2lmKCtjIT0rYylyZXR1cm4rYztpZigoY3wwKSE9MClyZXR1cm4gY3wwfXJldHVybiBlfWZ1bmN0aW9uIF9wKHQpe3JldHVybiB0IGluc3RhbmNlb2YgT2N9ZnVuY3Rpb24gcUEodCl7cmV0dXJuIF9wKHQpfWZ1bmN0aW9uIFBWKHQpe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXJldHVybiBRMjtpZihfcCh0KSlyZXR1cm4gWTI7aWYocUEodCkpcmV0dXJuIDEyNTI7aWYodCBpbnN0YW5jZW9mIEFycmF5JiZ0WzBdPT09dFswXT4+PjAmJnRbMF08PWd3KXt2YXIgbj10WzBdfDA7cmV0dXJuIG49PWd2PzA6bn1lbHNle2lmKHQgaW5zdGFuY2VvZiBTdHJpbmcpcmV0dXJuIEFZO2lmKHR5cGVvZiB0PT1cInN0cmluZ1wiKXJldHVybiBBWTtpZih0IGluc3RhbmNlb2YgTnVtYmVyKXJldHVybiBRMjtpZih0JiZ0LmNhbWxfY3VzdG9tKXJldHVybiBITztpZih0JiZ0LmNvbXBhcmUpcmV0dXJuIDEyNTY7aWYodHlwZW9mIHQ9PVwiZnVuY3Rpb25cIilyZXR1cm4gMTI0NztpZih0eXBlb2YgdD09XCJzeW1ib2xcIilyZXR1cm4gMTI1MX1yZXR1cm4gMTAwMX1mdW5jdGlvbiBBYyh0LG4pe3JldHVybiB0PG4/LTE6dD09bj8wOjF9ZnVuY3Rpb24gRFYodCxuKXtyZXR1cm4gdC50JjYmJkR2KHQpLG4udCY2JiZEdihuKSx0LmM8bi5jPy0xOnQuYz5uLmM/MTowfWZ1bmN0aW9uIEVlKHQsbil7cmV0dXJuIERWKHQsbil9ZnVuY3Rpb24geXAodCxuLGUpe2Zvcih2YXIgaT1bXTs7KXtpZighKGUmJnQ9PT1uKSl7dmFyIHg9UFYodCk7aWYoeD09bmwpe3Q9dFsxXTtjb250aW51ZX12YXIgYz1QVihuKTtpZihjPT1ubCl7bj1uWzFdO2NvbnRpbnVlfWlmKHghPT1jKXJldHVybiB4PT1RMj9jPT1ITz9DVih0LG4sLTEsZSk6LTE6Yz09UTI/eD09SE8/Q1Yobix0LDEsZSk6MTp4PGM/LTE6MTtzd2l0Y2goeCl7Y2FzZSAyNDc6bHUoZ2QpO2JyZWFrO2Nhc2UgMjQ4OnZhciBwPUFjKHRbMl0sblsyXSk7aWYocCE9MClyZXR1cm4gcHwwO2JyZWFrO2Nhc2UgMjQ5Omx1KGdkKTticmVhaztjYXNlIDI1MDpsdShcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO2JyZWFrO2Nhc2UgMjUxOmx1KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO2JyZWFrO2Nhc2UgMjUyOmlmKHQhPT1uKXt2YXIgcD1EVih0LG4pO2lmKHAhPTApcmV0dXJuIHB8MH1icmVhaztjYXNlIDI1MzpsdShcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7YnJlYWs7Y2FzZSAyNTQ6bHUoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO2JyZWFrO2Nhc2UgMjU1Omx1KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTticmVhaztjYXNlIDEyNDc6bHUoZ2QpO2JyZWFrO2Nhc2UgMTI1NTp2YXIgcz1CQSh0KTtpZihzIT1CQShuKSlyZXR1cm4gdC5jYW1sX2N1c3RvbTxuLmNhbWxfY3VzdG9tPy0xOjE7c3x8bHUoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTt2YXIgcD1zKHQsbixlKTtpZihwIT1wKXJldHVybiBlPy0xOnA7aWYocCE9PShwfDApKXJldHVybi0xO2lmKHAhPTApcmV0dXJuIHB8MDticmVhaztjYXNlIDEyNTY6dmFyIHA9dC5jb21wYXJlKG4sZSk7aWYocCE9cClyZXR1cm4gZT8tMTpwO2lmKHAhPT0ocHwwKSlyZXR1cm4tMTtpZihwIT0wKXJldHVybiBwfDA7YnJlYWs7Y2FzZSAxZTM6aWYodD0rdCxuPStuLHQ8bilyZXR1cm4tMTtpZih0Pm4pcmV0dXJuIDE7aWYodCE9bil7aWYoIWUpcmV0dXJuIE5hTjtpZih0PT10KXJldHVybiAxO2lmKG49PW4pcmV0dXJuLTF9YnJlYWs7Y2FzZSAxMDAxOmlmKHQ8bilyZXR1cm4tMTtpZih0Pm4pcmV0dXJuIDE7aWYodCE9bil7aWYoIWUpcmV0dXJuIE5hTjtpZih0PT10KXJldHVybiAxO2lmKG49PW4pcmV0dXJuLTF9YnJlYWs7Y2FzZSAxMjUxOmlmKHQhPT1uKXJldHVybiBlPzE6TmFOO2JyZWFrO2Nhc2UgMTI1Mjp2YXIgdD1JYyh0KSxuPUljKG4pO2lmKHQhPT1uKXtpZih0PG4pcmV0dXJuLTE7aWYodD5uKXJldHVybiAxfWJyZWFrO2Nhc2UgMTI1MjA6dmFyIHQ9dC50b1N0cmluZygpLG49bi50b1N0cmluZygpO2lmKHQhPT1uKXtpZih0PG4pcmV0dXJuLTE7aWYodD5uKXJldHVybiAxfWJyZWFrO2Nhc2UgMjQ2OmNhc2UgMjU0OmRlZmF1bHQ6aWYodC5sZW5ndGghPW4ubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDxuLmxlbmd0aD8tMToxO3QubGVuZ3RoPjEmJmkucHVzaCh0LG4sMSk7YnJlYWt9fWlmKGkubGVuZ3RoPT0wKXJldHVybiAwO3ZhciB5PWkucG9wKCk7bj1pLnBvcCgpLHQ9aS5wb3AoKSx5KzE8dC5sZW5ndGgmJmkucHVzaCh0LG4seSsxKSx0PXRbeV0sbj1uW3ldfX1mdW5jdGlvbiBMVih0LG4pe3JldHVybiB5cCh0LG4sITApfWZ1bmN0aW9uIHM3MCgpe3JldHVyblswXX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4gdDwwJiZsdShcIkJ5dGVzLmNyZWF0ZVwiKSxuZXcgT2ModD8yOjksQyx0KX1mdW5jdGlvbiBSVih0LG4pe3JldHVybisoeXAodCxuLCExKT09MCl9ZnVuY3Rpb24gdjcwKHQsbixlLGkpe2lmKGU+MClpZihuPT0wJiYoZT49dC5sfHx0LnQ9PTImJmU+PXQuYy5sZW5ndGgpKWk9PTA/KHQuYz1DLHQudD0yKToodC5jPVB2KGUsU3RyaW5nLmZyb21DaGFyQ29kZShpKSksdC50PWU9PXQubD8wOjIpO2Vsc2UgZm9yKHQudCE9NCYmYnAodCksZSs9bjtuPGU7bisrKXQuY1tuXT1pO3JldHVybiAwfWZ1bmN0aW9uIG9sKHQpe3ZhciBuO2lmKHQ9SWModCksbj0rdCx0Lmxlbmd0aD4wJiZuPT09bnx8KHQ9dC5yZXBsYWNlKC9fL2csQyksbj0rdCx0Lmxlbmd0aD4wJiZuPT09bnx8L15bKy1dP25hbiQvaS50ZXN0KHQpKSlyZXR1cm4gbjt2YXIgZT0vXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKilwKFsrLV0/WzAtOV0rKS9pLmV4ZWModCk7aWYoZSl7dmFyIGk9ZVszXS5yZXBsYWNlKC8wKyQvLEMpLHg9cGFyc2VJbnQoZVsxXStlWzJdK2ksMTYpLGM9KGVbNF18MCktNCppLmxlbmd0aDtyZXR1cm4gbj14Kk1hdGgucG93KDIsYyksbn1pZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHQpKXJldHVybiAxLzA7aWYoL14taW5mKGluaXR5KT8kL2kudGVzdCh0KSlyZXR1cm4tMS8wO243KFwiZmxvYXRfb2Zfc3RyaW5nXCIpfWZ1bmN0aW9uIFVBKHQpe3Q9SWModCk7dmFyIG49dC5sZW5ndGg7bj4zMSYmbHUoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7Zm9yKHZhciBlPXtqdXN0aWZ5OnhzLHNpZ25zdHlsZTpGYSxmaWxsZXI6cGksYWx0ZXJuYXRlOiExLGJhc2U6MCxzaWduZWRjb252OiExLHdpZHRoOjAsdXBwZXJjYXNlOiExLHNpZ246MSxwcmVjOi0xLGNvbnY6b1l9LGk9MDtpPG47aSsrKXt2YXIgeD10LmNoYXJBdChpKTtzd2l0Y2goeCl7Y2FzZVwiLVwiOmUuanVzdGlmeT1GYTticmVhaztjYXNlXCIrXCI6Y2FzZVwiIFwiOmUuc2lnbnN0eWxlPXg7YnJlYWs7Y2FzZVwiMFwiOmUuZmlsbGVyPVp1O2JyZWFrO2Nhc2VcIiNcIjplLmFsdGVybmF0ZT0hMDticmVhaztjYXNlXCIxXCI6Y2FzZVwiMlwiOmNhc2VcIjNcIjpjYXNlXCI0XCI6Y2FzZVwiNVwiOmNhc2VcIjZcIjpjYXNlXCI3XCI6Y2FzZVwiOFwiOmNhc2VcIjlcIjpmb3IoZS53aWR0aD0wO3g9dC5jaGFyQ29kZUF0KGkpLTQ4LHg+PTAmJng8PTk7KWUud2lkdGg9ZS53aWR0aCoxMCt4LGkrKztpLS07YnJlYWs7Y2FzZVwiLlwiOmZvcihlLnByZWM9MCxpKys7eD10LmNoYXJDb2RlQXQoaSktNDgseD49MCYmeDw9OTspZS5wcmVjPWUucHJlYyoxMCt4LGkrKztpLS07Y2FzZVwiZFwiOmNhc2VcImlcIjplLnNpZ25lZGNvbnY9ITA7Y2FzZVwidVwiOmUuYmFzZT0xMDticmVhaztjYXNlXCJ4XCI6ZS5iYXNlPTE2O2JyZWFrO2Nhc2VcIlhcIjplLmJhc2U9MTYsZS51cHBlcmNhc2U9ITA7YnJlYWs7Y2FzZVwib1wiOmUuYmFzZT04O2JyZWFrO2Nhc2VcImVcIjpjYXNlXCJmXCI6Y2FzZVwiZ1wiOmUuc2lnbmVkY29udj0hMCxlLmNvbnY9eDticmVhaztjYXNlXCJFXCI6Y2FzZVwiRlwiOmNhc2VcIkdcIjplLnNpZ25lZGNvbnY9ITAsZS51cHBlcmNhc2U9ITAsZS5jb252PXgudG9Mb3dlckNhc2UoKTticmVha319cmV0dXJuIGV9ZnVuY3Rpb24gSEEodCxuKXt0LnVwcGVyY2FzZSYmKG49bi50b1VwcGVyQ2FzZSgpKTt2YXIgZT1uLmxlbmd0aDt0LnNpZ25lZGNvbnYmJih0LnNpZ248MHx8dC5zaWduc3R5bGUhPUZhKSYmZSsrLHQuYWx0ZXJuYXRlJiYodC5iYXNlPT04JiYoZSs9MSksdC5iYXNlPT0xNiYmKGUrPTIpKTt2YXIgaT1DO2lmKHQuanVzdGlmeT09eHMmJnQuZmlsbGVyPT1waSlmb3IodmFyIHg9ZTt4PHQud2lkdGg7eCsrKWkrPXBpO2lmKHQuc2lnbmVkY29udiYmKHQuc2lnbjwwP2krPUZhOnQuc2lnbnN0eWxlIT1GYSYmKGkrPXQuc2lnbnN0eWxlKSksdC5hbHRlcm5hdGUmJnQuYmFzZT09OCYmKGkrPVp1KSx0LmFsdGVybmF0ZSYmdC5iYXNlPT0xNiYmKGkrPWwxKSx0Lmp1c3RpZnk9PXhzJiZ0LmZpbGxlcj09WnUpZm9yKHZhciB4PWU7eDx0LndpZHRoO3grKylpKz1adTtpZihpKz1uLHQuanVzdGlmeT09RmEpZm9yKHZhciB4PWU7eDx0LndpZHRoO3grKylpKz1waTtyZXR1cm4gcihpKX1mdW5jdGlvbiBYQSh0LG4pe2Z1bmN0aW9uIGUoRSxkKXtpZihNYXRoLmFicyhFKTwxKXJldHVybiBFLnRvRml4ZWQoZCk7dmFyIHc9cGFyc2VJbnQoRS50b1N0cmluZygpLnNwbGl0KHhzKVsxXSk7cmV0dXJuIHc+MjA/KHctPTIwLEUvPU1hdGgucG93KDEwLHcpLEUrPW5ldyBBcnJheSh3KzEpLmpvaW4oWnUpLGQ+MCYmKEU9RStMbytuZXcgQXJyYXkoZCsxKS5qb2luKFp1KSksRSk6RS50b0ZpeGVkKGQpfXZhciBpLHg9VUEodCksYz14LnByZWM8MD82OngucHJlYztpZigobjwwfHxuPT0wJiYxL249PS0xLzApJiYoeC5zaWduPS0xLG49LW4pLGlzTmFOKG4pKWk9c3cseC5maWxsZXI9cGk7ZWxzZSBpZighaXNGaW5pdGUobikpaT1cImluZlwiLHguZmlsbGVyPXBpO2Vsc2Ugc3dpdGNoKHguY29udil7Y2FzZVwiZVwiOnZhciBpPW4udG9FeHBvbmVudGlhbChjKSxzPWkubGVuZ3RoO2kuY2hhckF0KHMtMyk9PW55JiYoaT1pLnNsaWNlKDAscy0xKStadStpLnNsaWNlKHMtMSkpO2JyZWFrO2Nhc2VcImZcIjppPWUobixjKTticmVhaztjYXNlXCJnXCI6Yz1jfHwxLGk9bi50b0V4cG9uZW50aWFsKGMtMSk7dmFyIHA9aS5pbmRleE9mKG55KSx5PStpLnNsaWNlKHArMSk7aWYoeTwtNHx8bj49MWUyMXx8bi50b0ZpeGVkKDApLmxlbmd0aD5jKXtmb3IodmFyIHM9cC0xO2kuY2hhckF0KHMpPT1adTspcy0tO2kuY2hhckF0KHMpPT1MbyYmcy0tLGk9aS5zbGljZSgwLHMrMSkraS5zbGljZShwKSxzPWkubGVuZ3RoLGkuY2hhckF0KHMtMyk9PW55JiYoaT1pLnNsaWNlKDAscy0xKStadStpLnNsaWNlKHMtMSkpO2JyZWFrfWVsc2V7dmFyIFQ9YztpZih5PDApVC09eSsxLGk9bi50b0ZpeGVkKFQpO2Vsc2UgZm9yKDtpPW4udG9GaXhlZChUKSxpLmxlbmd0aD5jKzE7KVQtLTtpZihUKXtmb3IodmFyIHM9aS5sZW5ndGgtMTtpLmNoYXJBdChzKT09WnU7KXMtLTtpLmNoYXJBdChzKT09TG8mJnMtLSxpPWkuc2xpY2UoMCxzKzEpfX1icmVha31yZXR1cm4gSEEoeCxpKX1mdW5jdGlvbiBocCh0LG4pe2lmKEljKHQpPT1OMilyZXR1cm4gcihDK24pO3ZhciBlPVVBKHQpO248MCYmKGUuc2lnbmVkY29udj8oZS5zaWduPS0xLG49LW4pOm4+Pj49MCk7dmFyIGk9bi50b1N0cmluZyhlLmJhc2UpO2lmKGUucHJlYz49MCl7ZS5maWxsZXI9cGk7dmFyIHg9ZS5wcmVjLWkubGVuZ3RoO3g+MCYmKGk9UHYoeCxadSkraSl9cmV0dXJuIEhBKGUsaSl9dmFyIGpWPTA7ZnVuY3Rpb24gTTcoKXtyZXR1cm4galYrK31mdW5jdGlvbiBsNzAoKXtyZXR1cm4gMH1mdW5jdGlvbiBHVigpe3JldHVyblswXX12YXIgZHA9W107ZnVuY3Rpb24gUWUodCxuLGUpe3ZhciBpPXRbMV0seD1kcFtlXTtpZih4PT09dm9pZCAwKWZvcih2YXIgYz1kcC5sZW5ndGg7YzxlO2MrKylkcFtjXT0wO2Vsc2UgaWYoaVt4XT09PW4pcmV0dXJuIGlbeC0xXTtmb3IodmFyIHM9MyxwPWlbMV0qMisxLHk7czxwOyl5PXMrcD4+MXwxLG48aVt5KzFdP3A9eS0yOnM9eTtyZXR1cm4gZHBbZV09cysxLG49PWlbcysxXT9pW3NdOjB9ZnVuY3Rpb24gYjcwKHQpe2Zvcih2YXIgbj1DLGU9bixpLHgsYz0wLHM9dC5sZW5ndGg7YzxzO2MrKyl7aWYoaT10LmNoYXJDb2RlQXQoYyksaTxQaSl7Zm9yKHZhciBwPWMrMTtwPHMmJihpPXQuY2hhckNvZGVBdChwKSk8UGk7cCsrKTtpZihwLWM+SUk/KGUuc3Vic3RyKDAsMSksbis9ZSxlPUMsbis9dC5zbGljZShjLHApKTplKz10LnNsaWNlKGMscCkscD09cylicmVhaztjPXB9aTxZWD8oZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgxOTJ8aT4+NiksZSs9U3RyaW5nLmZyb21DaGFyQ29kZShQaXxpJk92KSk6aTw1NTI5Nnx8aT49U0g/ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShIWXxpPj4xMixQaXxpPj42Jk92LFBpfGkmT3YpOmk+PTU2MzE5fHxjKzE9PXN8fCh4PXQuY2hhckNvZGVBdChjKzEpKTxOSHx8eD5TSD9lKz1cIlxceEVGXFx4QkZcXHhCRFwiOihjKyssaT0oaTw8MTApK3gtNTY2MTM4ODgsZSs9U3RyaW5nLmZyb21DaGFyQ29kZShMWHxpPj4xOCxQaXxpPj4xMiZPdixQaXxpPj42Jk92LFBpfGkmT3YpKSxlLmxlbmd0aD5MMiYmKGUuc3Vic3RyKDAsMSksbis9ZSxlPUMpfXJldHVybiBuK2V9ZnVuY3Rpb24gcDcwKHQpe3ZhciBuPTk7cmV0dXJuIF9WKHQpfHwobj04LHQ9YjcwKHQpKSxuZXcgT2Mobix0LHQubGVuZ3RoKX1mdW5jdGlvbiBCNyh0KXtyZXR1cm4gcDcwKHQpfWZ1bmN0aW9uIG03MCh0LG4sZSl7aWYoIWlzRmluaXRlKHQpKXJldHVybiBpc05hTih0KT9CNyhzdyk6QjcodD4wP21VOlwiLWluZmluaXR5XCIpO3ZhciBpPXQ9PTAmJjEvdD09LTEvMD8xOnQ+PTA/MDoxO2kmJih0PS10KTt2YXIgeD0wO2lmKHQhPTApaWYodDwxKWZvcig7dDwxJiZ4Pi1CWDspdCo9Mix4LS07ZWxzZSBmb3IoO3Q+PTI7KXQvPTIseCsrO3ZhciBjPXg8MD9DOnhzLHM9QztpZihpKXM9RmE7ZWxzZSBzd2l0Y2goZSl7Y2FzZSA0MzpzPXhzO2JyZWFrO2Nhc2UgMzI6cz1waTticmVhaztkZWZhdWx0OmJyZWFrfWlmKG4+PTAmJm48MTMpe3ZhciBwPU1hdGgucG93KDIsbio0KTt0PU1hdGgucm91bmQodCpwKS9wfXZhciB5PXQudG9TdHJpbmcoMTYpO2lmKG4+PTApe3ZhciBUPXkuaW5kZXhPZihMbyk7aWYoVDwwKXkrPUxvK1B2KG4sWnUpO2Vsc2V7dmFyIEU9VCsxK247eS5sZW5ndGg8RT95Kz1QdihFLXkubGVuZ3RoLFp1KTp5PXkuc3Vic3RyKDAsRSl9fXJldHVybiBCNyhzK2wxK3krXCJwXCIrYyt4LnRvU3RyaW5nKDEwKSl9ZnVuY3Rpb24gXzcwKHQpe3JldHVybit0LmlzWmVybygpfWZ1bmN0aW9uIGtwKHQpe3JldHVybiBuZXcgc24odCZFeCx0Pj4yNCZFeCx0Pj4zMSZMaSl9ZnVuY3Rpb24geTcwKHQpe3JldHVybiB0LnRvSW50KCl9ZnVuY3Rpb24gaDcwKHQpe3JldHVybit0LmlzTmVnKCl9ZnVuY3Rpb24gTVYodCl7cmV0dXJuIHQubmVnKCl9ZnVuY3Rpb24gZDcwKHQsbil7dmFyIGU9VUEodCk7ZS5zaWduZWRjb252JiZoNzAobikmJihlLnNpZ249LTEsbj1NVihuKSk7dmFyIGk9Qyx4PWtwKGUuYmFzZSksYz1cIjAxMjM0NTY3ODlhYmNkZWZcIjtkb3t2YXIgcz1uLnVkaXZtb2QoeCk7bj1zLnF1b3RpZW50LGk9Yy5jaGFyQXQoeTcwKHMubW9kdWx1cykpK2l9d2hpbGUoIV83MChuKSk7aWYoZS5wcmVjPj0wKXtlLmZpbGxlcj1waTt2YXIgcD1lLnByZWMtaS5sZW5ndGg7cD4wJiYoaT1QdihwLFp1KStpKX1yZXR1cm4gSEEoZSxpKX1mdW5jdGlvbiBiNyh0KXtyZXR1cm4gdC5sfWZ1bmN0aW9uIHVuKHQpe3JldHVybiBiNyh0KX1mdW5jdGlvbiBWcih0LG4pe3JldHVybiBYdSh0LG4pfWZ1bmN0aW9uIGs3MCh0LG4pe3JldHVybiB0LmFkZChuKX1mdW5jdGlvbiB3NzAodCxuKXtyZXR1cm4gdC5tdWwobil9ZnVuY3Rpb24gWUEodCxuKXtyZXR1cm4gdC51Y29tcGFyZShuKTwwfWZ1bmN0aW9uIEJWKHQpe3ZhciBuPTAsZT11bih0KSxpPTEwLHg9MTtpZihlPjApc3dpdGNoKFZyKHQsbikpe2Nhc2UgNDU6bisrLHg9LTE7YnJlYWs7Y2FzZSA0MzpuKysseD0xO2JyZWFrfWlmKG4rMTxlJiZWcih0LG4pPT00OClzd2l0Y2goVnIodCxuKzEpKXtjYXNlIDEyMDpjYXNlIDg4Omk9MTYsbis9MjticmVhaztjYXNlIDExMTpjYXNlIDc5Omk9OCxuKz0yO2JyZWFrO2Nhc2UgOTg6Y2FzZSA2NjppPTIsbis9MjticmVhaztjYXNlIDExNzpjYXNlIDg1Om4rPTI7YnJlYWt9cmV0dXJuW24seCxpXX1mdW5jdGlvbiB3cCh0KXtyZXR1cm4gdD49NDgmJnQ8PTU3P3QtNDg6dD49NjUmJnQ8PTkwP3QtNTU6dD49OTcmJnQ8PUluP3QtODc6LTF9ZnVuY3Rpb24gUnYodCl7dmFyIG49QlYodCksZT1uWzBdLGk9blsxXSx4PW5bMl0sYz1rcCh4KSxzPW5ldyBzbihFeCwyNjg0MzU0NTUsTGkpLnVkaXZtb2QoYykucXVvdGllbnQscD1Wcih0LGUpLHk9d3AocCk7KHk8MHx8eT49eCkmJm43KG5zKTtmb3IodmFyIFQ9a3AoeSk7OylpZihlKysscD1Wcih0LGUpLHAhPTk1KXtpZih5PXdwKHApLHk8MHx8eT49eClicmVhaztZQShzLFQpJiZuNyhucykseT1rcCh5KSxUPWs3MCh3NzAoYyxUKSx5KSxZQShULHkpJiZuNyhucyl9cmV0dXJuIGUhPXVuKHQpJiZuNyhucykseD09MTAmJllBKG5ldyBzbigwLDAsTWkpLFQpJiZuNyhucyksaTwwJiYoVD1NVihUKSksVH1mdW5jdGlvbiBqdih0KXtyZXR1cm4gdC50b0Zsb2F0KCl9ZnVuY3Rpb24gQmkodCl7dmFyIG49QlYodCksZT1uWzBdLGk9blsxXSx4PW5bMl0sYz11bih0KSxzPS0xPj4+MCxwPWU8Yz9Wcih0LGUpOjAseT13cChwKTsoeTwwfHx5Pj14KSYmbjcobnMpO3ZhciBUPXk7Zm9yKGUrKztlPGM7ZSsrKWlmKHA9VnIodCxlKSxwIT05NSl7aWYoeT13cChwKSx5PDB8fHk+PXgpYnJlYWs7VD14KlQreSxUPnMmJm43KG5zKX1yZXR1cm4gZSE9YyYmbjcobnMpLFQ9aSpULHg9PTEwJiYoVHwwKSE9VCYmbjcobnMpLFR8MH1mdW5jdGlvbiBFNzAodCl7cmV0dXJuIHQuc2xpY2UoMSl9ZnVuY3Rpb24gUzcwKHQpe3JldHVybiEhdH1mdW5jdGlvbiBibih0KXtyZXR1cm4gdC50b1V0ZjE2KCl9ZnVuY3Rpb24gZzcwKHQpe2Zvcih2YXIgbj17fSxlPTE7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPXRbZV07bltibihpWzFdKV09aVsyXX1yZXR1cm4gbn1mdW5jdGlvbiBGNzAodCxuKXtyZXR1cm4rKHlwKHQsbiwhMSk8MCl9ZnVuY3Rpb24gR3YoZSxuKXtlPDAmJmlsKCk7dmFyIGU9ZSsxfDAsaT1uZXcgQXJyYXkoZSk7aVswXT0wO2Zvcih2YXIgeD0xO3g8ZTt4KyspaVt4XT1uO3JldHVybiBpfWZ1bmN0aW9uIFQ3MCgpe3JldHVybiAwfWZ1bmN0aW9uIGF0KHQpe1BBKHp0LlN5c19lcnJvcix0KX12YXIgTmM9bmV3IEFycmF5O2Z1bmN0aW9uIHAxKHQpe3ZhciBuPU5jW3RdO2lmKG4ub3BlbmVkfHxhdChcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpLCFuLmJ1ZmZlcnx8bi5idWZmZXI9PUMpcmV0dXJuIDA7aWYobi5mZCYmenQuZmRzW24uZmRdJiZ6dC5mZHNbbi5mZF0ub3V0cHV0KXt2YXIgZT16dC5mZHNbbi5mZF0ub3V0cHV0O3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAyOmUodCxuLmJ1ZmZlcik7YnJlYWs7ZGVmYXVsdDplKG4uYnVmZmVyKX19cmV0dXJuIG4uYnVmZmVyPUMsMH1mdW5jdGlvbiBxVigpe3JldHVybiB0eXBlb2YgejAucHJvY2VzczxcInVcIiYmdHlwZW9mIHowLnByb2Nlc3MudmVyc2lvbnM8XCJ1XCImJnR5cGVvZiB6MC5wcm9jZXNzLnZlcnNpb25zLm5vZGU8XCJ1XCImJnowLnByb2Nlc3MucGxhdGZvcm0hPT1cImJyb3dzZXJcIn1mdW5jdGlvbiBPNzAoKXtmdW5jdGlvbiB0KGUpe2lmKGUuY2hhckF0KDApPT09UXUpcmV0dXJuW0MsZS5zdWJzdHJpbmcoMSldfWZ1bmN0aW9uIG4oZSl7dmFyIGk9L14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvLHg9aS5leGVjKGUpLGM9eFsxXXx8QyxzPUJvb2xlYW4oYyYmYy5jaGFyQXQoMSkhPT1vMSk7aWYoQm9vbGVhbih4WzJdfHxzKSl7dmFyIHA9eFsxXXx8Qyx5PXhbMl18fEM7cmV0dXJuW3AsZS5zdWJzdHJpbmcocC5sZW5ndGgreS5sZW5ndGgpXX19cmV0dXJuIHowLnByb2Nlc3MmJnowLnByb2Nlc3MucGxhdGZvcm0mJnowLnByb2Nlc3MucGxhdGZvcm09PT1hVj9uOnR9dmFyIFZBPU83MCgpO2Z1bmN0aW9uIFVWKHQpe3JldHVybiB0LnNsaWNlKC0xKSE9PVF1P3QrUXU6dH1pZih6MC5wcm9jZXNzJiZ6MC5wcm9jZXNzLmN3ZCl2YXIgYWw9ejAucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csUXUpO2Vsc2UgdmFyIGFsPVwiL3N0YXRpY1wiO2FsPVVWKGFsKTtmdW5jdGlvbiBJNzAodCl7dD1ibih0KSxWQSh0KXx8KHQ9YWwrdCk7Zm9yKHZhciBuPVZBKHQpLGU9blsxXS5zcGxpdChRdSksaT1bXSx4PTA7eDxlLmxlbmd0aDt4Kyspc3dpdGNoKGVbeF0pe2Nhc2VcIi4uXCI6aS5sZW5ndGg+MSYmaS5wb3AoKTticmVhaztjYXNlXCIuXCI6YnJlYWs7ZGVmYXVsdDppLnB1c2goZVt4XSk7YnJlYWt9cmV0dXJuIGkudW5zaGlmdChuWzBdKSxpLm9yaWc9dCxpfXZhciBBNzA9W1wiRTJCSUdcIixcIkVBQ0NFU1wiLFwiRUFHQUlOXCIsXCJFQkFERlwiLFwiRUJVU1lcIixcIkVDSElMRFwiLFwiRURFQURMS1wiLFwiRURPTVwiLG5WLFwiRUZBVUxUXCIsXCJFRkJJR1wiLFwiRUlOVFJcIixcIkVJTlZBTFwiLFwiRUlPXCIsXCJFSVNESVJcIixcIkVNRklMRVwiLFwiRU1MSU5LXCIsXCJFTkFNRVRPT0xPTkdcIixcIkVORklMRVwiLFwiRU5PREVWXCIsdmgsXCJFTk9FWEVDXCIsXCJFTk9MQ0tcIixcIkVOT01FTVwiLFwiRU5PU1BDXCIsXCJFTk9TWVNcIix5dyxQVSxcIkVOT1RUWVwiLFwiRU5YSU9cIixcIkVQRVJNXCIsXCJFUElQRVwiLFwiRVJBTkdFXCIsXCJFUk9GU1wiLFwiRVNQSVBFXCIsXCJFU1JDSFwiLFwiRVhERVZcIixcIkVXT1VMREJMT0NLXCIsXCJFSU5QUk9HUkVTU1wiLFwiRUFMUkVBRFlcIixcIkVOT1RTT0NLXCIsXCJFREVTVEFERFJSRVFcIixcIkVNU0dTSVpFXCIsXCJFUFJPVE9UWVBFXCIsXCJFTk9QUk9UT09QVFwiLFwiRVBST1RPTk9TVVBQT1JUXCIsXCJFU09DS1ROT1NVUFBPUlRcIixcIkVPUE5PVFNVUFBcIixcIkVQRk5PU1VQUE9SVFwiLFwiRUFGTk9TVVBQT1JUXCIsXCJFQUREUklOVVNFXCIsXCJFQUREUk5PVEFWQUlMXCIsXCJFTkVURE9XTlwiLFwiRU5FVFVOUkVBQ0hcIixcIkVORVRSRVNFVFwiLFwiRUNPTk5BQk9SVEVEXCIsXCJFQ09OTlJFU0VUXCIsXCJFTk9CVUZTXCIsXCJFSVNDT05OXCIsXCJFTk9UQ09OTlwiLFwiRVNIVVRET1dOXCIsXCJFVE9PTUFOWVJFRlNcIixcIkVUSU1FRE9VVFwiLFwiRUNPTk5SRUZVU0VEXCIsXCJFSE9TVERPV05cIixcIkVIT1NUVU5SRUFDSFwiLFwiRUxPT1BcIixcIkVPVkVSRkxPV1wiXTtmdW5jdGlvbiBtMSh0LG4sZSxpKXt2YXIgeD1BNzAuaW5kZXhPZih0KTt4PDAmJihpPT1udWxsJiYoaT0tOTk5OSkseD1bMCxpXSk7dmFyIGM9W3gsQjcobnx8QyksQjcoZXx8QyldO3JldHVybiBjfXZhciBIVj17fTtmdW5jdGlvbiBfMSh0KXtyZXR1cm4gSFZbdF19ZnVuY3Rpb24geTEodCxuKXt0aHJvd1swLHRdLmNvbmNhdChuKX1mdW5jdGlvbiBONzAodCl7cmV0dXJuIG5ldyBPYyg0LHQsdC5sZW5ndGgpfWZ1bmN0aW9uIEM3MCh0KXt0PUljKHQpLGF0KHQrdHApfWZ1bmN0aW9uIFA3MCh0LG4pe3JldHVybiBuPj4+MD49dC5sJiZoVigpLFh1KHQsbil9ZnVuY3Rpb24gWFYoKXt9ZnVuY3Rpb24gZ3UodCl7dGhpcy5kYXRhPXR9Z3UucHJvdG90eXBlPW5ldyBYVixndS5wcm90b3R5cGUudHJ1bmNhdGU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5kYXRhO3RoaXMuZGF0YT1MdCh0fDApLEZzKG4sMCx0aGlzLmRhdGEsMCx0KX0sZ3UucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBiNyh0aGlzLmRhdGEpfSxndS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxuLGUsaSl7dmFyIHg9dGhpcy5sZW5ndGgoKTtpZih0K2k+PXgpe3ZhciBjPUx0KHQraSkscz10aGlzLmRhdGE7dGhpcy5kYXRhPWMsRnMocywwLHRoaXMuZGF0YSwwLHgpfXJldHVybiBUcyhuLGUsdGhpcy5kYXRhLHQsaSksMH0sZ3UucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24odCxuLGUsaSl7dmFyIHg9dGhpcy5sZW5ndGgoKTtyZXR1cm4gRnModGhpcy5kYXRhLHQsbixlLGkpLDB9LGd1LnByb3RvdHlwZS5yZWFkX29uZT1mdW5jdGlvbih0KXtyZXR1cm4gUDcwKHRoaXMuZGF0YSx0KX0sZ3UucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7fSxndS5wcm90b3R5cGUuY29uc3RydWN0b3I9Z3U7ZnVuY3Rpb24gdDcodCxuKXt0aGlzLmNvbnRlbnQ9e30sdGhpcy5yb290PXQsdGhpcy5sb29rdXBGdW49bn10Ny5wcm90b3R5cGUubm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucm9vdCt0fSx0Ny5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXQuc3BsaXQoUXUpLGU9QyxpPTA7aTxuLmxlbmd0aC0xO2krKyllKz1uW2ldK1F1LCF0aGlzLmNvbnRlbnRbZV0mJih0aGlzLmNvbnRlbnRbZV09U3ltYm9sKFwiZGlyZWN0b3J5XCIpKX0sdDcucHJvdG90eXBlLnNsYXNoPWZ1bmN0aW9uKHQpe3JldHVybi9cXC8kLy50ZXN0KHQpP3Q6dCtRdX0sdDcucHJvdG90eXBlLmxvb2t1cD1mdW5jdGlvbih0KXtpZighdGhpcy5jb250ZW50W3RdJiZ0aGlzLmxvb2t1cEZ1bil7dmFyIG49dGhpcy5sb29rdXBGdW4ocih0aGlzLnJvb3QpLHIodCkpO24hPT0wJiYodGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0KSx0aGlzLmNvbnRlbnRbdF09bmV3IGd1KG5bMV0pKX19LHQ3LnByb3RvdHlwZS5leGlzdHM9ZnVuY3Rpb24odCl7aWYodD09QylyZXR1cm4gMTt2YXIgbj10aGlzLnNsYXNoKHQpO3JldHVybiB0aGlzLmNvbnRlbnRbbl0/MToodGhpcy5sb29rdXAodCksdGhpcy5jb250ZW50W3RdPzE6MCl9LHQ3LnByb3RvdHlwZS5ta2Rpcj1mdW5jdGlvbih0LG4sZSl7dmFyIGk9ZSYmXzEoS2gpO3RoaXMuZXhpc3RzKHQpJiYoaT95MShpLG0xKG5WLFdJLHRoaXMubm0odCkpKTphdCh0K1wiOiBGaWxlIGV4aXN0c1wiKSk7dmFyIHg9L14oLiopXFwvW14vXSsvLmV4ZWModCk7eD14JiZ4WzFdfHxDLHRoaXMuZXhpc3RzKHgpfHwoaT95MShpLG0xKHZoLFdJLHRoaXMubm0oeCkpKTphdCh4K3RwKSksdGhpcy5pc19kaXIoeCl8fChpP3kxKGksbTEoeXcsV0ksdGhpcy5ubSh4KSkpOmF0KHgrUlMpKSx0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2godCkpfSx0Ny5wcm90b3R5cGUucm1kaXI9ZnVuY3Rpb24odCxuKXt2YXIgZT1uJiZfMShLaCksaT10PT1DP0M6dGhpcy5zbGFzaCh0KSx4PW5ldyBSZWdFeHAoSTYraStKWCk7dGhpcy5leGlzdHModCl8fChlP3kxKGUsbTEodmgsYWQsdGhpcy5ubSh0KSkpOmF0KHQrdHApKSx0aGlzLmlzX2Rpcih0KXx8KGU/eTEoZSxtMSh5dyxhZCx0aGlzLm5tKHQpKSk6YXQodCtSUykpO2Zvcih2YXIgYyBpbiB0aGlzLmNvbnRlbnQpYy5tYXRjaCh4KSYmKGU/eTEoZSxtMShQVSxhZCx0aGlzLm5tKHQpKSk6YXQodGhpcy5ubSh0KStcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKSk7ZGVsZXRlIHRoaXMuY29udGVudFtpXX0sdDcucHJvdG90eXBlLnJlYWRkaXI9ZnVuY3Rpb24odCl7dmFyIG49dD09Qz9DOnRoaXMuc2xhc2godCk7dGhpcy5leGlzdHModCl8fGF0KHQrdHApLHRoaXMuaXNfZGlyKHQpfHxhdCh0K1JTKTt2YXIgZT1uZXcgUmVnRXhwKEk2K24rSlgpLGk9e30seD1bXTtmb3IodmFyIGMgaW4gdGhpcy5jb250ZW50KXt2YXIgcz1jLm1hdGNoKGUpO3MmJiFpW3NbMV1dJiYoaVtzWzFdXT0hMCx4LnB1c2goc1sxXSkpfXJldHVybiB4fSx0Ny5wcm90b3R5cGUuaXNfZGlyPWZ1bmN0aW9uKHQpe2lmKHQ9PUMpcmV0dXJuITA7dmFyIG49dGhpcy5zbGFzaCh0KTtyZXR1cm4gdGhpcy5jb250ZW50W25dPzE6MH0sdDcucHJvdG90eXBlLnVubGluaz1mdW5jdGlvbih0KXt2YXIgbj0hIXRoaXMuY29udGVudFt0XTtyZXR1cm4gZGVsZXRlIHRoaXMuY29udGVudFt0XSxufSx0Ny5wcm90b3R5cGUub3Blbj1mdW5jdGlvbih0LG4pe2lmKG4ucmRvbmx5JiZuLndyb25seSYmYXQodGhpcy5ubSh0KStGWSksbi50ZXh0JiZuLmJpbmFyeSYmYXQodGhpcy5ubSh0KSt0WSksdGhpcy5sb29rdXAodCksdGhpcy5jb250ZW50W3RdKXt0aGlzLmlzX2Rpcih0KSYmYXQodGhpcy5ubSh0KStcIiA6IGlzIGEgZGlyZWN0b3J5XCIpLG4uY3JlYXRlJiZuLmV4Y2wmJmF0KHRoaXMubm0odCkrVFkpO3ZhciBlPXRoaXMuY29udGVudFt0XTtyZXR1cm4gbi50cnVuY2F0ZSYmZS50cnVuY2F0ZSgpLGV9ZWxzZXtpZihuLmNyZWF0ZSlyZXR1cm4gdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0KSx0aGlzLmNvbnRlbnRbdF09bmV3IGd1KEx0KDApKSx0aGlzLmNvbnRlbnRbdF07QzcwKHRoaXMubm0odCkpfX0sdDcucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKHQsbil7dmFyIGU7aWYodGhpcy5jb250ZW50W3RdJiZhdCh0aGlzLm5tKHQpK1RZKSxfcChuKSYmKGU9bmV3IGd1KG4pKSxxQShuKSllPW5ldyBndShuKTtlbHNlIGlmKG4gaW5zdGFuY2VvZiBBcnJheSllPW5ldyBndShONzAobikpO2Vsc2UgaWYodHlwZW9mIG49PVwic3RyaW5nXCIpZT1uZXcgZ3UoeVYobikpO2Vsc2UgaWYobi50b1N0cmluZyl7dmFyIGk9Qjcobi50b1N0cmluZygpKTtlPW5ldyBndShpKX1lPyh0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHQpLHRoaXMuY29udGVudFt0XT1lKTphdCh0aGlzLm5tKHQpK1wiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpfSx0Ny5wcm90b3R5cGUuY29uc3RydWN0b3I9dDc7ZnVuY3Rpb24gRDcwKHQpe2Zvcih2YXIgbj11bih0KSxlPW5ldyBBcnJheShuKSxpPTA7aTxuO2krKyllW2ldPVZyKHQsaSk7cmV0dXJuIGV9ZnVuY3Rpb24gTDcwKHQpe3JldHVybiB0LnQhPTQmJmJwKHQpLHQuY31mdW5jdGlvbiBDYyh0KXt0aGlzLmZzPWtqKCksdGhpcy5mZD10fUNjLnByb3RvdHlwZT1uZXcgWFYsQ2MucHJvdG90eXBlLnRydW5jYXRlPWZ1bmN0aW9uKHQpe3RyeXt0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCx0fDApfWNhdGNoKG4pe2F0KG4udG9TdHJpbmcoKSl9fSxDYy5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplfWNhdGNoKHQpe2F0KHQudG9TdHJpbmcoKSl9fSxDYy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxuLGUsaSl7dmFyIHg9RDcwKG4pO3ggaW5zdGFuY2VvZiB6MC5VaW50OEFycmF5fHwoeD1uZXcgejAuVWludDhBcnJheSh4KSk7dmFyIGM9ejAuQnVmZmVyLmZyb20oeCk7dHJ5e3RoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsYyxlLGksdCl9Y2F0Y2gocyl7YXQocy50b1N0cmluZygpKX1yZXR1cm4gMH0sQ2MucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24odCxuLGUsaSl7dmFyIHg9TDcwKG4pO3ggaW5zdGFuY2VvZiB6MC5VaW50OEFycmF5fHwoeD1uZXcgejAuVWludDhBcnJheSh4KSk7dmFyIGM9ejAuQnVmZmVyLmZyb20oeCk7dHJ5e3RoaXMuZnMucmVhZFN5bmModGhpcy5mZCxjLGUsaSx0KX1jYXRjaChwKXthdChwLnRvU3RyaW5nKCkpfWZvcih2YXIgcz0wO3M8aTtzKyspYjEobixlK3MsY1tlK3NdKTtyZXR1cm4gMH0sQ2MucHJvdG90eXBlLnJlYWRfb25lPWZ1bmN0aW9uKHQpe3ZhciBuPW5ldyB6MC5VaW50OEFycmF5KDEpLGU9ejAuQnVmZmVyLmZyb20obik7dHJ5e3RoaXMuZnMucmVhZFN5bmModGhpcy5mZCxlLDAsMSx0KX1jYXRjaChpKXthdChpLnRvU3RyaW5nKCkpfXJldHVybiBlWzBdfSxDYy5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0cnl7dGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCl9Y2F0Y2godCl7YXQodC50b1N0cmluZygpKX19LENjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1DYztmdW5jdGlvbiBGdSh0KXt0aGlzLmZzPWtqKCksdGhpcy5yb290PXR9RnUucHJvdG90eXBlLm5tPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJvb3QrdH0sRnUucHJvdG90eXBlLmV4aXN0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKHQpKT8xOjB9Y2F0Y2h7cmV0dXJuIDB9fSxGdS5wcm90b3R5cGUubWtkaXI9ZnVuY3Rpb24odCxuLGUpe3RyeXtyZXR1cm4gdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubSh0KSx7bW9kZTpufSksMH1jYXRjaChpKXt0aGlzLnJhaXNlX25vZGVqc19lcnJvcihpLGUpfX0sRnUucHJvdG90eXBlLnJtZGlyPWZ1bmN0aW9uKHQsbil7dHJ5e3JldHVybiB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKHQpKSwwfWNhdGNoKGUpe3RoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGUsbil9fSxGdS5wcm90b3R5cGUucmVhZGRpcj1mdW5jdGlvbih0LG4pe3RyeXtyZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKHQpKX1jYXRjaChlKXt0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlLG4pfX0sRnUucHJvdG90eXBlLmlzX2Rpcj1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubSh0KSkuaXNEaXJlY3RvcnkoKT8xOjB9Y2F0Y2gobil7YXQobi50b1N0cmluZygpKX19LEZ1LnByb3RvdHlwZS51bmxpbms9ZnVuY3Rpb24odCxuKXt0cnl7dmFyIGU9dGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0odCkpPzE6MDtyZXR1cm4gdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0odCkpLGV9Y2F0Y2goaSl7dGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoaSxuKX19LEZ1LnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKHQsbixlKXt2YXIgaT1ub2UoKSx4PTA7Zm9yKHZhciBjIGluIG4pc3dpdGNoKGMpe2Nhc2VcInJkb25seVwiOnh8PWkuT19SRE9OTFk7YnJlYWs7Y2FzZVwid3Jvbmx5XCI6eHw9aS5PX1dST05MWTticmVhaztjYXNlXCJhcHBlbmRcIjp4fD1pLk9fV1JPTkxZfGkuT19BUFBFTkQ7YnJlYWs7Y2FzZVwiY3JlYXRlXCI6eHw9aS5PX0NSRUFUO2JyZWFrO2Nhc2VcInRydW5jYXRlXCI6eHw9aS5PX1RSVU5DO2JyZWFrO2Nhc2VcImV4Y2xcIjp4fD1pLk9fRVhDTDticmVhaztjYXNlXCJiaW5hcnlcIjp4fD1pLk9fQklOQVJZO2JyZWFrO2Nhc2VcInRleHRcIjp4fD1pLk9fVEVYVDticmVhaztjYXNlXCJub25ibG9ja1wiOnh8PWkuT19OT05CTE9DSzticmVha310cnl7dmFyIHM9dGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKHQpLHgpO3JldHVybiBuZXcgQ2Mocyl9Y2F0Y2gocCl7dGhpcy5yYWlzZV9ub2RlanNfZXJyb3IocCxlKX19LEZ1LnByb3RvdHlwZS5yZW5hbWU9ZnVuY3Rpb24odCxuLGUpe3RyeXt0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubSh0KSx0aGlzLm5tKG4pKX1jYXRjaChpKXt0aGlzLnJhaXNlX25vZGVqc19lcnJvcihpLGUpfX0sRnUucHJvdG90eXBlLnN0YXQ9ZnVuY3Rpb24odCxuKXt0cnl7dmFyIGU9dGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKHQpKTtyZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGUpfWNhdGNoKGkpe3RoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGksbil9fSxGdS5wcm90b3R5cGUubHN0YXQ9ZnVuY3Rpb24odCxuKXt0cnl7dmFyIGU9dGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubSh0KSk7cmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhlKX1jYXRjaChpKXt0aGlzLnJhaXNlX25vZGVqc19lcnJvcihpLG4pfX0sRnUucHJvdG90eXBlLnN5bWxpbms9ZnVuY3Rpb24odCxuLGUsaSl7dHJ5e3JldHVybiB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0obiksdGhpcy5ubShlKSx0P1wiZGlyXCI6XCJmaWxlXCIpLDB9Y2F0Y2goeCl7dGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoeCxpKX19LEZ1LnByb3RvdHlwZS5yZWFkbGluaz1mdW5jdGlvbih0LG4pe3RyeXt2YXIgZT10aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKHQpLHZWKTtyZXR1cm4gQjcoZSl9Y2F0Y2goaSl7dGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoaSxuKX19LEZ1LnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3I9ZnVuY3Rpb24odCxuKXt2YXIgZT1fMShLaCk7aWYobiYmZSl7dmFyIGk9bTEodC5jb2RlLHQuc3lzY2FsbCx0LnBhdGgsdC5lcnJubyk7eTEoZSxpKX1lbHNlIGF0KHQudG9TdHJpbmcoKSl9LEZ1LnByb3RvdHlwZS5zdGF0c19mcm9tX2pzPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiB0LmlzRmlsZSgpP249MDp0LmlzRGlyZWN0b3J5KCk/bj0xOnQuaXNDaGFyYWN0ZXJEZXZpY2UoKT9uPTI6dC5pc0Jsb2NrRGV2aWNlKCk/bj0zOnQuaXNTeW1ib2xpY0xpbmsoKT9uPTQ6dC5pc0ZJRk8oKT9uPTU6dC5pc1NvY2tldCgpJiYobj02KSxbMCx0LmRldix0LmlubyxuLHQubW9kZSx0Lm5saW5rLHQudWlkLHQuZ2lkLHQucmRldix0LnNpemUsdC5hdGltZU1zLHQubXRpbWVNcyx0LmN0aW1lTXNdfSxGdS5wcm90b3R5cGUuY29uc3RydWN0b3I9RnU7ZnVuY3Rpb24gWVYodCl7dmFyIG49VkEodCk7aWYoISFuKXJldHVybiBuWzBdK1F1fXZhciBFcD1ZVihhbCl8fG43KFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpLE12PVtdO3FWKCk/TXYucHVzaCh7cGF0aDpFcCxkZXZpY2U6bmV3IEZ1KEVwKX0pOk12LnB1c2goe3BhdGg6RXAsZGV2aWNlOm5ldyB0NyhFcCl9KSxNdi5wdXNoKHtwYXRoOnpVLGRldmljZTpuZXcgdDcoelUpfSk7ZnVuY3Rpb24gUjcwKGUpe2Zvcih2YXIgbj1JNzAoZSksZT1uLmpvaW4oUXUpLGk9VVYoZSkseCxjPTA7YzxNdi5sZW5ndGg7YysrKXt2YXIgcz1NdltjXTtpLnNlYXJjaChzLnBhdGgpPT0wJiYoIXh8fHgucGF0aC5sZW5ndGg8cy5wYXRoLmxlbmd0aCkmJih4PXtwYXRoOnMucGF0aCxkZXZpY2U6cy5kZXZpY2UscmVzdDplLnN1YnN0cmluZyhzLnBhdGgubGVuZ3RoLGUubGVuZ3RoKX0pfWlmKCF4KXt2YXIgcD1ZVihlKTtpZihwJiZwLm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXt2YXIgcz17cGF0aDpwLGRldmljZTpuZXcgRnUocCl9O012LnB1c2gocykseD17cGF0aDpzLnBhdGgsZGV2aWNlOnMuZGV2aWNlLHJlc3Q6ZS5zdWJzdHJpbmcocy5wYXRoLmxlbmd0aCxlLmxlbmd0aCl9fX1pZih4KXJldHVybiB4O2F0KFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIitpKX1mdW5jdGlvbiBWVih0LG4pe3ZhciBlPU5jW3RdLGk9cihuKSx4PXVuKGkpO3JldHVybiBlLmZpbGUud3JpdGUoZS5vZmZzZXQsaSwwLHgpLGUub2Zmc2V0Kz14LDB9ZnVuY3Rpb24gajcwKG4pe3ZhciBuPUNBKG4pLGU9ejA7aWYoZS5wcm9jZXNzJiZlLnByb2Nlc3Muc3Rkb3V0JiZlLnByb2Nlc3Muc3Rkb3V0LndyaXRlKWUucHJvY2Vzcy5zdGRlcnIud3JpdGUobik7ZWxzZXtuLmNoYXJDb2RlQXQobi5sZW5ndGgtMSk9PTEwJiYobj1uLnN1YnN0cigwLG4ubGVuZ3RoLTEpKTt2YXIgaT1lLmNvbnNvbGU7aSYmaS5lcnJvciYmaS5lcnJvcihuKX19ZnVuY3Rpb24gRzcwKG4pe3ZhciBuPUNBKG4pLGU9ejA7aWYoZS5wcm9jZXNzJiZlLnByb2Nlc3Muc3Rkb3V0JiZlLnByb2Nlc3Muc3Rkb3V0LndyaXRlKWUucHJvY2Vzcy5zdGRvdXQud3JpdGUobik7ZWxzZXtuLmNoYXJDb2RlQXQobi5sZW5ndGgtMSk9PTEwJiYobj1uLnN1YnN0cigwLG4ubGVuZ3RoLTEpKTt2YXIgaT1lLmNvbnNvbGU7aSYmaS5sb2cmJmkubG9nKG4pfX1mdW5jdGlvbiBTcCh0LG4sZSxpKXt6dC5mZHM9PT12b2lkIDAmJih6dC5mZHM9bmV3IEFycmF5KSxpPWl8fHt9O3ZhciB4PXt9O3JldHVybiB4LmZpbGU9ZSx4Lm9mZnNldD1pLmFwcGVuZD9lLmxlbmd0aCgpOjAseC5mbGFncz1pLHgub3V0cHV0PW4senQuZmRzW3RdPXgsKCF6dC5mZF9sYXN0X2lkeHx8dD56dC5mZF9sYXN0X2lkeCkmJih6dC5mZF9sYXN0X2lkeD10KSx0fWZ1bmN0aW9uIGxvZSh0LG4sZSl7Zm9yKHZhciBpPXt9O247KXtzd2l0Y2goblsxXSl7Y2FzZSAwOmkucmRvbmx5PTE7YnJlYWs7Y2FzZSAxOmkud3Jvbmx5PTE7YnJlYWs7Y2FzZSAyOmkuYXBwZW5kPTE7YnJlYWs7Y2FzZSAzOmkuY3JlYXRlPTE7YnJlYWs7Y2FzZSA0OmkudHJ1bmNhdGU9MTticmVhaztjYXNlIDU6aS5leGNsPTE7YnJlYWs7Y2FzZSA2OmkuYmluYXJ5PTE7YnJlYWs7Y2FzZSA3OmkudGV4dD0xO2JyZWFrO2Nhc2UgODppLm5vbmJsb2NrPTE7YnJlYWt9bj1uWzJdfWkucmRvbmx5JiZpLndyb25seSYmYXQoSWModCkrRlkpLGkudGV4dCYmaS5iaW5hcnkmJmF0KEljKHQpK3RZKTt2YXIgeD1SNzAodCksYz14LmRldmljZS5vcGVuKHgucmVzdCxpKSxzPXp0LmZkX2xhc3RfaWR4P3p0LmZkX2xhc3RfaWR4OjA7cmV0dXJuIFNwKHMrMSxWVixjLGkpfVNwKDAsVlYsbmV3IGd1KEx0KDApKSksU3AoMSxHNzAsbmV3IGd1KEx0KDApKSksU3AoMixqNzAsbmV3IGd1KEx0KDApKSk7ZnVuY3Rpb24gTTcwKHQpe3ZhciBuPXp0LmZkc1t0XTtuLmZsYWdzLndyb25seSYmYXQocFgrdCtcIiBpcyB3cml0ZW9ubHlcIik7dmFyIGU9bnVsbDtpZih0PT0wJiZxVigpKXt2YXIgaT1raigpO2U9ZnVuY3Rpb24oKXtyZXR1cm4gQjcoaS5yZWFkRmlsZVN5bmMoMCx2VikpfX12YXIgeD17ZmlsZTpuLmZpbGUsb2Zmc2V0Om4ub2Zmc2V0LGZkOnQsb3BlbmVkOiEwLG91dDohMSxyZWZpbGw6ZX07cmV0dXJuIE5jW3guZmRdPXgseC5mZH1mdW5jdGlvbiB6Vih0KXt2YXIgbj16dC5mZHNbdF07bi5mbGFncy5yZG9ubHkmJmF0KHBYK3QrXCIgaXMgcmVhZG9ubHlcIik7dmFyIGU9e2ZpbGU6bi5maWxlLG9mZnNldDpuLm9mZnNldCxmZDp0LG9wZW5lZDohMCxvdXQ6ITAsYnVmZmVyOkN9O3JldHVybiBOY1tlLmZkXT1lLGUuZmR9ZnVuY3Rpb24gQjcwKCl7Zm9yKHZhciB0PTAsbj0wO248TmMubGVuZ3RoO24rKylOY1tuXSYmTmNbbl0ub3BlbmVkJiZOY1tuXS5vdXQmJih0PVswLE5jW25dLmZkLHRdKTtyZXR1cm4gdH1mdW5jdGlvbiBib2UodCl7cmV0dXJuIHR9ZnVuY3Rpb24gcTcwKHQsbixlLGkpe3ZhciB4PU5jW3RdO3gub3BlbmVkfHxhdChcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTt2YXIgYztlPT0wJiZiNyhuKT09aT9jPW46KGM9THQoaSksRnMobixlLGMsMCxpKSk7dmFyIHM9YyxwPUljKHMpLHk9cC5sYXN0SW5kZXhPZigkWSk7cmV0dXJuIHk8MD94LmJ1ZmZlcis9cDooeC5idWZmZXIrPXAuc3Vic3RyKDAseSsxKSxwMSh0KSx4LmJ1ZmZlcis9cC5zdWJzdHIoeSsxKSksMH1mdW5jdGlvbiB6QSh0LG4sZSxpKXtyZXR1cm4gcTcwKHQsbixlLGkpfWZ1bmN0aW9uIEtWKHQsbil7dmFyIGU9cihTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTtyZXR1cm4gekEodCxlLDAsMSksMH1mdW5jdGlvbiBjbCh0LG4pe3JldHVybisoeXAodCxuLCExKSE9MCl9ZnVuY3Rpb24gS0EodCxuKXt2YXIgZT1uZXcgQXJyYXkobisxKTtlWzBdPXQ7Zm9yKHZhciBpPTE7aTw9bjtpKyspZVtpXT0wO3JldHVybiBlfWZ1bmN0aW9uIFU3MCh0LG4pe3JldHVybiB0WzBdPW5sLHRbMV09biwwfWZ1bmN0aW9uIGgxKHQpe3JldHVybiB0IGluc3RhbmNlb2YgQXJyYXkmJnRbMF09PXRbMF0+Pj4wP3RbMF06X3AodCl8fHFBKHQpP1kyOnQgaW5zdGFuY2VvZiBGdW5jdGlvbnx8dHlwZW9mIHQ9PVwiZnVuY3Rpb25cIj9Edzp0JiZ0LmNhbWxfY3VzdG9tP2d3OlEyfWZ1bmN0aW9uIGhpKHQsbixlKXtlJiZ6MC50b3BsZXZlbFJlbG9jJiYodD16MC50b3BsZXZlbFJlbG9jKGUpKSx6dFt0KzFdPW4sZSYmKHp0W2VdPW4pfWZ1bmN0aW9uIFdBKHQsbil7cmV0dXJuIEhWW0ljKHQpXT1uLDB9ZnVuY3Rpb24gSDcwKHQpe3JldHVybiB0WzJdPWpWKyssdH1mdW5jdGlvbiBYNzAodCxuKXtyZXR1cm4gdD09PW4/MToodC50JjYmJkR2KHQpLG4udCY2JiZEdihuKSx0LmM9PW4uYz8xOjApfWZ1bmN0aW9uIHFuKHQsbil7cmV0dXJuIFg3MCh0LG4pfWZ1bmN0aW9uIFk3MCgpe2x1KHFTKX1mdW5jdGlvbiBJdCh0LG4pe3JldHVybiBuPj4+MD49dW4odCkmJlk3MCgpLFZyKHQsbil9ZnVuY3Rpb24gbjAodCxuKXtyZXR1cm4gMS1xbih0LG4pfWZ1bmN0aW9uIFY3MCgpe3JldHVyblswLHIoXCJqc19vZl9vY2FtbFwiKV19ZnVuY3Rpb24gejcwKCl7cmV0dXJuIDIxNDc0ODM2NDcvNHwwfWZ1bmN0aW9uIEs3MCh0KXtyZXR1cm4gMH12YXIgVzcwPXowLnByb2Nlc3MmJnowLnByb2Nlc3MucGxhdGZvcm0mJnowLnByb2Nlc3MucGxhdGZvcm09PWFWP2pVOlwiVW5peFwiO2Z1bmN0aW9uIEo3MCgpe3JldHVyblswLHIoVzcwKSwzMiwwXX1mdW5jdGlvbiAkNzAoKXtrVih6dC5Ob3RfZm91bmQpfWZ1bmN0aW9uIFdWKHQpe3ZhciBuPXowLGU9Ym4odCk7aWYobi5wcm9jZXNzJiZuLnByb2Nlc3MuZW52JiZuLnByb2Nlc3MuZW52W2VdIT1udWxsKXJldHVybiBCNyhuLnByb2Nlc3MuZW52W2VdKTtpZih6MC5qc29vX3N0YXRpY19lbnYmJnowLmpzb29fc3RhdGljX2VudltlXSlyZXR1cm4gQjcoejAuanNvb19zdGF0aWNfZW52W2VdKTskNzAoKX1mdW5jdGlvbiBKQSh0KXtmb3IodmFyIG49MTt0JiZ0Lmpvb190cmFtcDspdD10Lmpvb190cmFtcC5hcHBseShudWxsLHQuam9vX2FyZ3MpLG4rKztyZXR1cm4gdH1mdW5jdGlvbiBUdSh0LG4pe3JldHVybntqb29fdHJhbXA6dCxqb29fYXJnczpufX1mdW5jdGlvbiBOKHQsbil7aWYodHlwZW9mIG49PVwiZnVuY3Rpb25cIilyZXR1cm4gdC5mdW49biwwO2lmKG4uZnVuKXJldHVybiB0LmZ1bj1uLmZ1biwwO2Zvcih2YXIgZT1uLmxlbmd0aDtlLS07KXRbZV09bltlXTtyZXR1cm4gMH1mdW5jdGlvbiBwb2UodCl7cmV0dXJuIHR9ZnVuY3Rpb24gRXQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheT90OnowLlJhbmdlRXJyb3ImJnQgaW5zdGFuY2VvZiB6MC5SYW5nZUVycm9yJiZ0Lm1lc3NhZ2UmJnQubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpfHx6MC5JbnRlcm5hbEVycm9yJiZ0IGluc3RhbmNlb2YgejAuSW50ZXJuYWxFcnJvciYmdC5tZXNzYWdlJiZ0Lm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKT96dC5TdGFja19vdmVyZmxvdzp0IGluc3RhbmNlb2YgejAuRXJyb3ImJl8xKEtPKT9bMCxfMShLTyksdF06WzAsenQuRmFpbHVyZSxCNyhTdHJpbmcodCkpXX1mdW5jdGlvbiBaNzAodCl7c3dpdGNoKHRbMl0pe2Nhc2UtODpjYXNlLTExOmNhc2UtMTI6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gMH19ZnVuY3Rpb24gUTcwKHQpe3ZhciBuPUM7aWYodFswXT09MCl7aWYobis9dFsxXVsxXSx0Lmxlbmd0aD09MyYmdFsyXVswXT09MCYmWjcwKHRbMV0pKXZhciBpPXRbMl0sZT0xO2Vsc2UgdmFyIGU9MixpPXQ7bis9SFg7Zm9yKHZhciB4PWU7eDxpLmxlbmd0aDt4Kyspe3g+ZSYmKG4rPSRIKTt2YXIgYz1pW3hdO3R5cGVvZiBjPT1cIm51bWJlclwiP24rPWMudG9TdHJpbmcoKTpjIGluc3RhbmNlb2YgT2N8fHR5cGVvZiBjPT1cInN0cmluZ1wiP24rPVYyK2MudG9TdHJpbmcoKStWMjpuKz1idn1uKz1aMH1lbHNlIHRbMF09PXd0JiYobis9dFsxXSk7cmV0dXJuIG59ZnVuY3Rpb24gSlYodCl7aWYodCBpbnN0YW5jZW9mIEFycmF5JiYodFswXT09MHx8dFswXT09d3QpKXt2YXIgbj1fMShMSCk7aWYobiluKHQsITEpO2Vsc2V7dmFyIGU9UTcwKHQpLGk9XzEoc1YpO2kmJmkoMCksejAuY29uc29sZS5lcnJvcih5ZCtlKyRZKX19ZWxzZSB0aHJvdyB0fWZ1bmN0aW9uIHJpMCgpe3ZhciB0PXowO3QucHJvY2VzcyYmdC5wcm9jZXNzLm9uP3QucHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsZnVuY3Rpb24obixlKXtKVihuKSx0LnByb2Nlc3MuZXhpdCgyKX0pOnQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixmdW5jdGlvbihuKXtuLmVycm9yJiZKVihuLmVycm9yKX0pfXJpMCgpO2Z1bmN0aW9uIHUodCxuKXtyZXR1cm4gdC5sZW5ndGg9PTE/dChuKTpvcyh0LFtuXSl9ZnVuY3Rpb24gbyh0LG4sZSl7cmV0dXJuIHQubGVuZ3RoPT0yP3QobixlKTpvcyh0LFtuLGVdKX1mdW5jdGlvbiB1cih0LG4sZSxpKXtyZXR1cm4gdC5sZW5ndGg9PTM/dChuLGUsaSk6b3ModCxbbixlLGldKX1mdW5jdGlvbiBSKHQsbixlLGkseCl7cmV0dXJuIHQubGVuZ3RoPT00P3QobixlLGkseCk6b3ModCxbbixlLGkseF0pfWZ1bmN0aW9uIHA3KHQsbixlLGkseCxjKXtyZXR1cm4gdC5sZW5ndGg9PTU/dChuLGUsaSx4LGMpOm9zKHQsW24sZSxpLHgsY10pfWZ1bmN0aW9uIGVpMCh0LG4sZSxpLHgsYyxzLHApe3JldHVybiB0Lmxlbmd0aD09Nz90KG4sZSxpLHgsYyxzLHApOm9zKHQsW24sZSxpLHgsYyxzLHBdKX12YXIgJEE9W3d0LHIod1gpLC0xXSwkVj1bd3QscihESCksLTJdLHE3PVt3dCxyKEFIKSwtM10sWkE9W3d0LHIoZkgpLC00XSxKdD1bd3QscihLVSksLTddLFpWPVt3dCxyKExZKSwtOF0sUVY9W3d0LHIoVlUpLC05XSxTbj1bd3Qscih3VSksLTExXSxzbD1bd3Qscih1WCksLTEyXSxyej1bMCxzN10sbmkwPVs0LDAsMCwwLFsxMiw0NSxbNCwwLDAsMCwwXV1dLFFBPVswLFsxMSxyKCdGaWxlIFwiJyksWzIsMCxbMTEscignXCIsIGxpbmUgJyksWzQsMCwwLDAsWzExLHIoeUgpLFs0LDAsMCwwLFsxMiw0NSxbNCwwLDAsMCxbMTEscihcIjogXCIpLFsyLDAsMF1dXV1dXV1dXV0scignRmlsZSBcIiVzXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzJyldLGV6PVswLDAsWzAsMCwwXSxbMCwwLDBdXSxyTj1yKFwiXHUwMDAxXHUwMDAyXCIpLGVOPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcIiksQnY9WzAsMCwwLDAsMSwwXSxuej1bMCxyKFJ4KSxyKGNvKSxyKEVhKSxyKGNhKSxyKFZvKSxyKEhmKSxyKEt4KSxyKGxmKSxyKHhmKSxyKEd4KSxyKFRuKSxyKEhhKSxyKEE3KSxyKFRmKSxyKGx4KSxyKHBvKSxyKHN4KSxyKFFpKSxyKEVmKSxyKFVhKSxyKG9hKSxyKHFhKSxyKG1mKSxyKHRjKSxyKERmKSxyKGdhKSxyKHRmKSxyKGtmKSxyKEdhKSxyKFVmKSxyKGd4KSxyKGZ4KSxyKGdvKSxyKGhmKSxyKF9vKSxyKCRmKSxyKHhhKSxyKCRvKSxyKE43KSxyKEk3KSxyKHh4KSxyKFRhKSxyKGphKSxyKHpmKSxyKG5hKSxyKHNvKSxyKEZvKSxyKHd4KSxyKFJhKSxyKGhvKSxyKHY3KSxyKGxhKSxyKHJhKSxyKHNhKSxyKHF4KSxyKEhvKSxyKEJ4KSxyKGpmKSxyKElmKSxyKFphKSxyKGp4KSxyKEFmKSxyKHZvKSxyKFNhKSxyKHNmKSxyKFFhKSxyKHVhKSxyKGVhKSxyKE51KSxyKFR4KSxyKGVvKSxyKFNmKSxyKEJmKSxyKGthKSxyKE14KSxyKEZjKSxyKFhhKSxyKExhKSxyKHl4KSxyKGljKSxyKGxpKSxyKFNvKSxyKGxvKSxyKFRjKSxyKElhKSxyKGh4KSxyKEl4KSxyKGdjKSxyKExmKSxyKG5mKSxyKHR4KSxyKF9hKSxyKEdvKSxyKGt4KSxyKEJhKSxyKHZmKSxyKGJhKSxyKG14KSxyKEc3KSxyKFdhKSxyKGJjKSxyKFZmKSxyKHlpKSxyKHBmKSxyKGlhKSxyKFlhKSxyKFV1KSxyKEVjKSxyKGJvKSxyKEh4KSxyKENhKSxyKEZ4KSxyKEFhKSxyKGU3KSxyKGFmKSxyKGtvKSxyKHJvKSxyKHphKSxyKFJmKSxyKGFjKSxyKHlhKSxyKFdvKSxyKFFmKSxyKG9mKSxyKGZmKSxyKEF4KSxyKHBjKSxyKEFvKSxyKGpvKSxyKGlvKSxyKE94KSxyKGFvKSxyKE54KSxyKHJmKSxyKHJjKSxyKEtvKSxyKERhKSxyKHdjKSxyKEpvKSxyKHZ4KSxyKGhjKSxyKFB4KSxyKGhhKSxyKER4KSxyKG54KSxyKHp4KSxyKFBhKSxyKFV4KSxyKFd4KSxyKF9jKSxyKHhyKSxyKG1jKSxyKE9mKSxyKHlmKSxyKGJ4KSxyKHFvKSxyKEx4KSxyKGdmKSxyKG5jKSxyKEtmKSxyKGRhKSxyKG1hKSxyKGV4KSxyKFhmKSxyKHVmKSxyKE5mKSxyKGl4KSxyKG9vKSxyKFpvKSxyKGZjKSxyKGxjKSxyKFhvKSxyKFZhKSxyKGRmKSxyKE1vKSxyKFFvKSxyKG1pKSxyKHJ4KSxyKFpmKSxyKHpvKSxyKGJmKSxyKHZhKSxyKHZjKSxyKGtjKSxyKFdmKSxyKFlmKSxyKEJvKSxyKENmKSxyKHRhKSxyKGFhKSxyKHNjKSxyKFp4KSxyKHdhKSxyKFlvKSxyKCRhKSxyKHI3KSxyKERlKSxyKHBhKSxyKHB4KSxyKEp1KSxyKGN4KSxyKE1mKSxyKFNjKSxyKF9mKSxyKFZ4KSxyKFN4KSxyKE5hKSxyKHljKSxyKEQ3KSxyKHlvKSxyKFVvKSxyKEpmKSxyKCR4KSxyKHdvKSxyKFBmKSxyKElvKSxyKEY3KSxyKG5vKSxyKGZhKSxyKHhvKSxyKF94KSxyKEp4KSxyKFh4KSxyKEthKSxyKFJvKSxyKHFmKSxyKE9hKSxyKGF4KSxyKEZmKSxyKEN4KSxyKHVvKSxyKEphKSxyKHdmKSxyKE5vKSxyKGVjKSxyKFBvKSxyKFRvKSxyKEdmKSxyKG9jKSxyKHV4KSxyKGRjKSxyKGN1KSxyKE9vKSxyKHRvKSxyKFl4KSxyKEV1KV0sdHo9WzAscihcImZpcnN0X2xlYWRpbmdcIikscihcImxhc3RfdHJhaWxpbmdcIildLHV6PVswLDBdO2hpKDExLHNsLHVYKSxoaSgxMCxTbix3VSksaGkoOSxbd3QscihkWSksQ1hdLGRZKSxoaSg4LFFWLFZVKSxoaSg3LFpWLExZKSxoaSg2LEp0LEtVKSxoaSg1LFt3dCxyKHJZKSwtNl0sclkpLGhpKDQsW3d0LHIoSUgpLC01XSxJSCksaGkoMyxaQSxmSCksaGkoMixxNyxBSCksaGkoMSwkVixESCksaGkoMCwkQSx3WCk7dmFyIHRpMD1yKFwib3V0cHV0X3N1YnN0cmluZ1wiKSx1aTA9cihcIiUuMTJnXCIpLGlpMD1yKExvKSxmaTA9cihHaSkseGkwPXIoQ2kpLG9pMD1yKHVZKSxhaTA9cihcIlxcXFwnXCIpLGNpMD1yKFwiXFxcXGJcIiksc2kwPXIoXCJcXFxcdFwiKSx2aTA9cihcIlxcXFxuXCIpLGxpMD1yKFwiXFxcXHJcIiksYmkwPXIoXCJMaXN0Lml0ZXIyXCIpLHBpMD1yKFwidGxcIiksbWkwPXIoXCJoZFwiKSxfaTA9cihcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIikseWkwPXIoXCJCeXRlcy5ibGl0XCIpLGhpMD1yKFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiKSxkaTA9cihcIkFycmF5LmJsaXRcIiksa2kwPXIoXCJBcnJheS5zdWJcIiksd2kwPXIoXCJNYXAucmVtb3ZlX21pbl9lbHRcIiksRWkwPVswLDAsMCwwXSxTaTA9WzAscihcIm1hcC5tbFwiKSw0MDAsMTBdLGdpMD1bMCwwLDBdLEZpMD1yKGU2KSxUaTA9cihlNiksT2kwPXIoZTYpLElpMD1yKGU2KSxBaTA9cihcIlN0ZGxpYi5RdWV1ZS5FbXB0eVwiKSxOaTA9cihcIkNhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXCIpLENpMD1yKFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCIpLFBpMD1yKFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCIpLERpMD1bMCxyKEdVKSw5MywyXSxMaTA9WzAscihHVSksOTQsMl0sUmkwPXIoXCJCdWZmZXIuc3ViXCIpLGppMD1yKFwiJWNcIiksR2kwPXIoXCIlc1wiKSxNaTA9cihvWCksQmkwPXIoTVkpLHFpMD1yKHhIKSxVaTA9cihZSCksSGkwPXIoXCIlZlwiKSxYaTA9cihBbiksWWkwPXIoXCIle1wiKSxWaTA9cihcIiV9XCIpLHppMD1yKFwiJShcIiksS2kwPXIoXCIlKVwiKSxXaTA9cihOMCksSmkwPXIoXCIldFwiKSwkaTA9cihcIiU/XCIpLFppMD1yKFwiJXJcIiksUWkwPXIoXCIlX3JcIikscmYwPVswLHIoc3UpLDg1MCwyM10sZWYwPVswLHIoc3UpLDgxNCwyMV0sbmYwPVswLHIoc3UpLDgxNSwyMV0sdGYwPVswLHIoc3UpLDgxOCwyMV0sdWYwPVswLHIoc3UpLDgxOSwyMV0saWYwPVswLHIoc3UpLDgyMiwxOV0sZmYwPVswLHIoc3UpLDgyMywxOV0seGYwPVswLHIoc3UpLDgyNiwyMl0sb2YwPVswLHIoc3UpLDgyNywyMl0sYWYwPVswLHIoc3UpLDgzMSwzMF0sY2YwPVswLHIoc3UpLDgzMiwzMF0sc2YwPVswLHIoc3UpLDgzNiwyNl0sdmYwPVswLHIoc3UpLDgzNywyNl0sbGYwPVswLHIoc3UpLDg0NiwyOF0sYmYwPVswLHIoc3UpLDg0NywyOF0scGYwPVswLHIoc3UpLDg1MSwyM10sbWYwPXIod1kpLF9mMD1bMCxyKHN1KSwxNTU4LDRdLHlmMD1yKFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSxoZjA9WzAscihzdSksMTYyNiwzOV0sZGYwPVswLHIoc3UpLDE2NDksMzFdLGtmMD1bMCxyKHN1KSwxNjUwLDMxXSx3ZjA9cihcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIiksRWYwPXIoU1kpLFNmMD1yKGJZKSxnZjA9cihTWSksRmYwPXIoYlkpLFRmMD1bMCxbMTEscihcImludmFsaWQgYm94IGRlc2NyaXB0aW9uIFwiKSxbMywwLDBdXSxyKFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIildLE9mMD1yKEMpLElmMD1bMCwwLDRdLEFmMD1yKEMpLE5mMD1yKGRYKSxDZjA9cihcImhcIiksUGYwPXIoXCJob3ZcIiksRGYwPXIoXCJodlwiKSxMZjA9cihwViksUmYwPXIoc3cpLGpmMD1yKFwibmVnX2luZmluaXR5XCIpLEdmMD1yKG1VKSxNZjA9cihMbyksQmYwPXIoXCIlK25kXCIpLHFmMD1yKFwiJSBuZFwiKSxVZjA9cihcIiUrbmlcIiksSGYwPXIoXCIlIG5pXCIpLFhmMD1yKFwiJW54XCIpLFlmMD1yKFwiJSNueFwiKSxWZjA9cihcIiVuWFwiKSx6ZjA9cihcIiUjblhcIiksS2YwPXIoXCIlbm9cIiksV2YwPXIoXCIlI25vXCIpLEpmMD1yKFwiJW5kXCIpLCRmMD1yKHhIKSxaZjA9cihcIiVudVwiKSxRZjA9cihcIiUrbGRcIikscngwPXIoXCIlIGxkXCIpLGV4MD1yKFwiJStsaVwiKSxueDA9cihcIiUgbGlcIiksdHgwPXIoXCIlbHhcIiksdXgwPXIoXCIlI2x4XCIpLGl4MD1yKFwiJWxYXCIpLGZ4MD1yKFwiJSNsWFwiKSx4eDA9cihcIiVsb1wiKSxveDA9cihcIiUjbG9cIiksYXgwPXIoXCIlbGRcIiksY3gwPXIoTVkpLHN4MD1yKFwiJWx1XCIpLHZ4MD1yKFwiJStMZFwiKSxseDA9cihcIiUgTGRcIiksYngwPXIoXCIlK0xpXCIpLHB4MD1yKFwiJSBMaVwiKSxteDA9cihcIiVMeFwiKSxfeDA9cihcIiUjTHhcIikseXgwPXIoXCIlTFhcIiksaHgwPXIoXCIlI0xYXCIpLGR4MD1yKFwiJUxvXCIpLGt4MD1yKFwiJSNMb1wiKSx3eDA9cihcIiVMZFwiKSxFeDA9cihZSCksU3gwPXIoXCIlTHVcIiksZ3gwPXIoXCIlK2RcIiksRngwPXIoXCIlIGRcIiksVHgwPXIoXCIlK2lcIiksT3gwPXIoXCIlIGlcIiksSXgwPXIoXCIleFwiKSxBeDA9cihcIiUjeFwiKSxOeDA9cihcIiVYXCIpLEN4MD1yKFwiJSNYXCIpLFB4MD1yKFwiJW9cIiksRHgwPXIoXCIlI29cIiksTHgwPXIoTjIpLFJ4MD1yKG9YKSxqeDA9cih3WSksR3gwPXIoeiksTXgwPXIoXCJAfVwiKSxCeDA9cihcIkA/XCIpLHF4MD1yKGBAXG5gKSxVeDA9cihcIkAuXCIpLEh4MD1yKFwiQEBcIiksWHgwPXIoXCJAJVwiKSxZeDA9cihnWCksVngwPXIoXCJDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaFwiKSx6eDA9cihDKSxLeDA9WzAsWzExLHIoJEgpLFsyLDAsWzIsMCwwXV1dLHIoXCIsICVzJXNcIildLFd4MD1bMCxbMTEscih5ZCksWzIsMCxbMTIsMTAsMF1dXSxyKFRVKV0sSngwPVswLFsxMSxyKFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiBcIiksWzIsMCxbMTIsMTAsMF1dXSxyKGBGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXG5gKV0sJHgwPXIoXCJGYXRhbCBlcnJvcjogb3V0IG9mIG1lbW9yeSBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlclwiKSxaeDA9WzAsWzExLHIoeWQpLFsyLDAsWzEyLDEwLDBdXV0scihUVSldLFF4MD1bMCxbMiwwLFsxMiwxMCwwXV0scihgJXNcbmApXSxybzA9WzAsWzExLHIoTlkpLDBdLHIoTlkpXSxlbzA9cihcIlJhaXNlZCBhdFwiKSxubzA9cihcIlJlLXJhaXNlZCBhdFwiKSx0bzA9cihcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIpLHVvMD1yKFwiQ2FsbGVkIGZyb21cIiksaW8wPXIoXCIgKGlubGluZWQpXCIpLGZvMD1yKEMpLHhvMD1bMCxbMiwwLFsxMiwzMixbMiwwLFsxMSxyKCcgaW4gZmlsZSBcIicpLFsyLDAsWzEyLDM0LFsyLDAsWzExLHIoXCIsIGxpbmUgXCIpLFs0LDAsMCwwLFsxMSxyKHlIKSxuaTBdXV1dXV1dXV1dLHIoJyVzICVzIGluIGZpbGUgXCIlc1wiJXMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQnKV0sb28wPVswLFsyLDAsWzExLHIoXCIgdW5rbm93biBsb2NhdGlvblwiKSwwXV0scihcIiVzIHVua25vd24gbG9jYXRpb25cIildLGFvMD1yKFwiT3V0IG9mIG1lbW9yeVwiKSxjbzA9cihcIlN0YWNrIG92ZXJmbG93XCIpLHNvMD1yKFwiUGF0dGVybiBtYXRjaGluZyBmYWlsZWRcIiksdm8wPXIoXCJBc3NlcnRpb24gZmFpbGVkXCIpLGxvMD1yKFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIiksYm8wPVswLFsxMiw0MCxbMiwwLFsyLDAsWzEyLDQxLDBdXV1dLHIoXCIoJXMlcylcIildLHBvMD1yKEMpLG1vMD1yKEMpLF9vMD1bMCxbMTIsNDAsWzIsMCxbMTIsNDEsMF1dXSxyKFwiKCVzKVwiKV0seW8wPVswLFs0LDAsMCwwLDBdLHIoTjIpXSxobzA9WzAsWzMsMCwwXSxyKFZ0KV0sZG8wPXIoYnYpLGtvMD1bMCxyKEMpLHIoYChDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxuIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClgKSxyKGAoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcbiBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpYCkscihgKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XG4gYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilgKSxyKGAoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcbiBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xuIC0tIHRvbyBtYW55IG9wZW4gZmlsZXMuIFRyeSBydW5uaW5nIHdpdGggT0NBTUxSVU5QQVJBTT1iPTIpYCldLHdvMD1bMywwLDNdLEVvMD1yKExvKSxTbzA9cihjdiksZ28wPXIoXCI8L1wiKSxGbzA9cihDKSxUbzA9cihjdiksT28wPXIoUzMpLElvMD1yKEMpLEFvMD1yKE1JKSxObzA9cihDKSxDbzA9cihDKSxQbzA9cihDKSxEbzA9cihDKSxMbzA9WzAscihDKV0sUm8wPXIoQyksam8wPXIoQyksR28wPXIoQyksTW8wPXIoQyksQm8wPVswLHIoQyksMCxyKEMpXSxxbzA9cihDKSxVbzA9cihcIlN0ZGxpYi5Gb3JtYXQuU3RyaW5nX3RhZ1wiKSxIbzA9WzAscihcImNhbWxpbnRlcm5hbE9PLm1sXCIpLDI4MSw1MF0sWG8wPXIoQyksWW8wPVswLHIocFkpLDcyLDVdLFZvMD1bMCxyKHBZKSw4MSwyXSx6bzA9cihcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIiksS28wPXIoXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiKSxXbzA9cihcIlRNUERJUlwiKSxKbzA9cihcIlRFTVBcIiksJG8wPXIoalUpLFpvMD1yKFwiV2luMzJcIiksUW8wPVswLHIoXCJzcmMvd3RmOC5tbFwiKSw2NSw5XSxyYTA9cihcIkpzX29mX29jYW1sX19Kcy5FcnJvclwiKSxlYTA9cihLTyksbmEwPVswLFsxNSwwXSxyKE4wKV0sdGEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdWEwPXIoWXIpLGlhMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGZhMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHhhMD1yKFwiRmxvd19hc3QuUHJvZ3JhbS5zdGF0ZW1lbnRzXCIpLG9hMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGFhMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGNhMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sc2EwPVswLFsxNywwLDBdLHIoeildLHZhMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGxhMD1yKFhyKSxiYTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxwYTA9cih0ciksbWEwPXIoWjApLF9hMD1yKG5yKSx5YTA9WzAsWzE3LDAsMF0scih6KV0saGEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZGEwPXIoXCJhbGxfY29tbWVudHNcIiksa2EwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sd2EwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sRWEwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxTYTA9WzAsWzE3LDAsMF0scih6KV0sZ2EwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEZhMD1bMCxbMTUsMF0scihOMCldLFRhMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sT2EwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sSWEwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEFhMD1bMCxbMTUsMF0scihOMCldLE5hMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkZ1bmN0aW9uLkJvZHlCbG9ja1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5GdW5jdGlvbi5Cb2R5QmxvY2tAIFwiKV0sQ2EwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxQYTA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxEYTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTGEwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFJhMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkZ1bmN0aW9uLkJvZHlFeHByZXNzaW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkZ1bmN0aW9uLkJvZHlFeHByZXNzaW9uQCBcIildLGphMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxHYTA9WzAsWzE1LDBdLHIoTjApXSxNYTA9cihZciksQmEwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0scWEwPXIoXCJGbG93X2FzdC5GdW5jdGlvbi5pZFwiKSxVYTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxIYTA9cih0ciksWGEwPXIoWjApLFlhMD1yKG5yKSxWYTA9WzAsWzE3LDAsMF0scih6KV0semEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sS2EwPXIoRHQpLFdhMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEphMD1bMCxbMTcsMCwwXSxyKHopXSwkYTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxaYTA9cihXbiksUWEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scmMwPVswLFsxNywwLDBdLHIoeildLGVjMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG5jMD1yKGdzKSx0YzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx1YzA9WzAsWzksMCwwXSxyKEFuKV0saWMwPVswLFsxNywwLDBdLHIoeildLGZjMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHhjMD1yKEc3KSxvYzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxhYzA9WzAsWzksMCwwXSxyKEFuKV0sY2MwPVswLFsxNywwLDBdLHIoeildLHNjMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHZjMD1yKHI3KSxsYzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxiYzA9cih0cikscGMwPXIoWjApLG1jMD1yKG5yKSxfYzA9WzAsWzE3LDAsMF0scih6KV0seWMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saGMwPXIoSnUpLGRjMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGtjMD1bMCxbMTcsMCwwXSxyKHopXSx3YzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxFYzA9cihzdiksU2MwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZ2MwPXIodHIpLEZjMD1yKFowKSxUYzA9cihuciksT2MwPVswLFsxNywwLDBdLHIoeildLEljMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEFjMD1yKFhyKSxOYzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxDYzA9cih0ciksUGMwPXIoWjApLERjMD1yKG5yKSxMYzA9WzAsWzE3LDAsMF0scih6KV0sUmMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0samMwPXIoXCJzaWdfbG9jXCIpLEdjMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLE1jMD1bMCxbMTcsMCwwXSxyKHopXSxCYzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0scWMwPVswLFsxNSwwXSxyKE4wKV0sVWMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sSGMwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sWGMwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxZYzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxWYzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx6YzA9cihcIkZsb3dfYXN0LkZ1bmN0aW9uLlBhcmFtcy50aGlzX1wiKSxLYzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxXYzA9cih0ciksSmMwPXIoWjApLCRjMD1yKG5yKSxaYzA9WzAsWzE3LDAsMF0scih6KV0sUWMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0scnMwPXIoRHQpLGVzMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG5zMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLHRzMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sdXMwPVswLFsxNywwLDBdLHIoeildLGlzMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGZzMD1yKHhkKSx4czA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxvczA9cih0ciksYXMwPXIoWjApLGNzMD1yKG5yKSxzczA9WzAsWzE3LDAsMF0scih6KV0sdnMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sbHMwPXIoWHIpLGJzMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHBzMD1yKHRyKSxtczA9cihaMCksX3MwPXIobnIpLHlzMD1bMCxbMTcsMCwwXSxyKHopXSxoczA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sZHMwPVswLFsxNSwwXSxyKE4wKV0sa3MwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSx3czA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxFczA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sU3MwPVswLFsxNSwwXSxyKE4wKV0sZ3MwPXIoWXIpLEZzMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFRzMD1yKFwiRmxvd19hc3QuRnVuY3Rpb24uVGhpc1BhcmFtLmFubm90XCIpLE9zMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLElzMD1bMCxbMTcsMCwwXSxyKHopXSxBczA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxOczA9cihYciksQ3MwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUHMwPXIodHIpLERzMD1yKFowKSxMczA9cihuciksUnMwPVswLFsxNywwLDBdLHIoeildLGpzMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxHczA9WzAsWzE1LDBdLHIoTjApXSxNczA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLEJzMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLHFzMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxVczA9WzAsWzE1LDBdLHIoTjApXSxIczA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxYczA9cihcIkZsb3dfYXN0LkZ1bmN0aW9uLlBhcmFtLmFyZ3VtZW50XCIpLFlzMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFZzMD1bMCxbMTcsMCwwXSxyKHopXSx6czA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxLczA9cihfaSksV3MwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSnMwPXIodHIpLCRzMD1yKFowKSxaczA9cihuciksUXMwPVswLFsxNywwLDBdLHIoeildLHIxMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxlMTA9WzAsWzE1LDBdLHIoTjApXSxuMTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLHQxMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLHUxMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxpMTA9WzAsWzE1LDBdLHIoTjApXSxmMTA9cihZcikseDEwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sbzEwPXIoXCJGbG93X2FzdC5GdW5jdGlvbi5SZXN0UGFyYW0uYXJndW1lbnRcIiksYTEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sYzEwPVswLFsxNywwLDBdLHIoeildLHMxMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHYxMD1yKFhyKSxsMTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxiMTA9cih0cikscDEwPXIoWjApLG0xMD1yKG5yKSxfMTA9WzAsWzE3LDAsMF0scih6KV0seTEwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGgxMD1bMCxbMTUsMF0scihOMCldLGQxMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sazEwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sdzEwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEUxMD1bMCxbMTUsMF0scihOMCldLFMxMD1yKFlyKSxnMTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxGMTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxUMTA9cihcIkZsb3dfYXN0LkNsYXNzLmlkXCIpLE8xMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEkxMD1yKHRyKSxBMTA9cihaMCksTjEwPXIobnIpLEMxMD1bMCxbMTcsMCwwXSxyKHopXSxQMTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxEMTA9cihXbiksTDEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUjEwPVswLFsxNywwLDBdLHIoeildLGoxMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEcxMD1yKHN2KSxNMTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCMTA9cih0cikscTEwPXIoWjApLFUxMD1yKG5yKSxIMTA9WzAsWzE3LDAsMF0scih6KV0sWDEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWTEwPXIoUDcpLFYxMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHoxMD1yKHRyKSxLMTA9cihaMCksVzEwPXIobnIpLEoxMD1bMCxbMTcsMCwwXSxyKHopXSwkMTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxaMTA9cih3cyksUTEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scnYwPXIodHIpLGV2MD1yKFowKSxudjA9cihuciksdHYwPVswLFsxNywwLDBdLHIoeildLHV2MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGl2MD1yKFwiY2xhc3NfZGVjb3JhdG9yc1wiKSxmdjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx4djA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxvdjA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLGF2MD1bMCxbMTcsMCwwXSxyKHopXSxjdjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxzdjA9cihYciksdnYwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbHYwPXIodHIpLGJ2MD1yKFowKSxwdjA9cihuciksbXYwPVswLFsxNywwLDBdLHIoeildLF92MD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx5djA9WzAsWzE1LDBdLHIoTjApXSxodjA9cihZciksZHYwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sa3YwPXIoXCJGbG93X2FzdC5DbGFzcy5EZWNvcmF0b3IuZXhwcmVzc2lvblwiKSx3djA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxFdjA9WzAsWzE3LDAsMF0scih6KV0sU3YwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZ3YwPXIoWHIpLEZ2MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFR2MD1yKHRyKSxPdjA9cihaMCksSXYwPXIobnIpLEF2MD1bMCxbMTcsMCwwXSxyKHopXSxOdjA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sQ3YwPVswLFsxNSwwXSxyKE4wKV0sUHYwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxEdjA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxMdjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUnYwPVswLFsxNSwwXSxyKE4wKV0sanYwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuQ2xhc3MuQm9keS5NZXRob2RcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuQ2xhc3MuQm9keS5NZXRob2RAIFwiKV0sR3YwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLE12MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkNsYXNzLkJvZHkuUHJvcGVydHlcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuQ2xhc3MuQm9keS5Qcm9wZXJ0eUAgXCIpXSxCdjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scXYwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuQ2xhc3MuQm9keS5Qcml2YXRlRmllbGRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuQ2xhc3MuQm9keS5Qcml2YXRlRmllbGRAIFwiKV0sVXYwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEh2MD1bMCxbMTUsMF0scihOMCldLFh2MD1yKFlyKSxZdjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxWdjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx6djA9cihcIkZsb3dfYXN0LkNsYXNzLkJvZHkuYm9keVwiKSxLdjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxXdjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxKdjA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLCR2MD1bMCxbMTcsMCwwXSxyKHopXSxadjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxRdjA9cihYcikscjIwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZTIwPXIodHIpLG4yMD1yKFowKSx0MjA9cihuciksdTIwPVswLFsxNywwLDBdLHIoeildLGkyMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxmMjA9WzAsWzE1LDBdLHIoTjApXSx4MjA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLG8yMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGEyMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxjMjA9WzAsWzE1LDBdLHIoTjApXSxzMjA9cihZciksdjIwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sbDIwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sYjIwPXIoXCJGbG93X2FzdC5DbGFzcy5JbXBsZW1lbnRzLmludGVyZmFjZXNcIikscDIwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbTIwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sXzIwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSx5MjA9WzAsWzE3LDAsMF0scih6KV0saDIwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZDIwPXIoWHIpLGsyMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHcyMD1yKHRyKSxFMjA9cihaMCksUzIwPXIobnIpLGcyMD1bMCxbMTcsMCwwXSxyKHopXSxGMjA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sVDIwPVswLFsxNSwwXSxyKE4wKV0sTzIwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxJMjA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxBMjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTjIwPVswLFsxNSwwXSxyKE4wKV0sQzIwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sUDIwPXIoXCJGbG93X2FzdC5DbGFzcy5JbXBsZW1lbnRzLkludGVyZmFjZS5pZFwiKSxEMjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxMMjA9WzAsWzE3LDAsMF0scih6KV0sUjIwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sajIwPXIoWjIpLEcyMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLE0yMD1yKHRyKSxCMjA9cihaMCkscTIwPXIobnIpLFUyMD1bMCxbMTcsMCwwXSxyKHopXSxIMjA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sWDIwPVswLFsxNSwwXSxyKE4wKV0sWTIwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxWMjA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSx6MjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sSzIwPVswLFsxNSwwXSxyKE4wKV0sVzIwPXIoWXIpLEoyMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLCQyMD1yKFwiRmxvd19hc3QuQ2xhc3MuRXh0ZW5kcy5leHByXCIpLFoyMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFEyMD1bMCxbMTcsMCwwXSxyKHopXSxybDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxlbDA9cihaMiksbmwwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sdGwwPXIodHIpLHVsMD1yKFowKSxpbDA9cihuciksZmwwPVswLFsxNywwLDBdLHIoeildLHhsMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG9sMD1yKFhyKSxhbDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxjbDA9cih0ciksc2wwPXIoWjApLHZsMD1yKG5yKSxsbDA9WzAsWzE3LDAsMF0scih6KV0sYmwwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHBsMD1bMCxbMTUsMF0scihOMCldLG1sMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sX2wwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0seWwwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGhsMD1bMCxbMTUsMF0scihOMCldLGRsMD1yKFlyKSxrbDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx3bDA9cihcIkZsb3dfYXN0LkNsYXNzLlByaXZhdGVGaWVsZC5rZXlcIiksRWwwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sU2wwPVswLFsxNywwLDBdLHIoeildLGdsMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEZsMD1yKEJuKSxUbDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxPbDA9WzAsWzE3LDAsMF0scih6KV0sSWwwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQWwwPXIoUWMpLE5sMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLENsMD1bMCxbMTcsMCwwXSxyKHopXSxQbDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxEbDA9cihudSksTGwwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUmwwPVswLFs5LDAsMF0scihBbildLGpsMD1bMCxbMTcsMCwwXSxyKHopXSxHbDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxNbDA9cihjdSksQmwwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scWwwPXIodHIpLFVsMD1yKFowKSxIbDA9cihuciksWGwwPVswLFsxNywwLDBdLHIoeildLFlsMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFZsMD1yKFhyKSx6bDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxLbDA9cih0ciksV2wwPXIoWjApLEpsMD1yKG5yKSwkbDA9WzAsWzE3LDAsMF0scih6KV0sWmwwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFFsMD1bMCxbMTUsMF0scihOMCldLHJiMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sZWIwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sbmIwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHRiMD1bMCxbMTUsMF0scihOMCldLHViMD1yKFwiRmxvd19hc3QuQ2xhc3MuUHJvcGVydHkuVW5pbml0aWFsaXplZFwiKSxpYjA9cihcIkZsb3dfYXN0LkNsYXNzLlByb3BlcnR5LkRlY2xhcmVkXCIpLGZiMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkNsYXNzLlByb3BlcnR5LkluaXRpYWxpemVkXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkNsYXNzLlByb3BlcnR5LkluaXRpYWxpemVkQCBcIildLHhiMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxvYjA9WzAsWzE1LDBdLHIoTjApXSxhYjA9cihZciksY2IwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sc2IwPXIoXCJGbG93X2FzdC5DbGFzcy5Qcm9wZXJ0eS5rZXlcIiksdmIwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbGIwPVswLFsxNywwLDBdLHIoeildLGJiMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHBiMD1yKEJuKSxtYjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxfYjA9WzAsWzE3LDAsMF0scih6KV0seWIwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saGIwPXIoUWMpLGRiMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGtiMD1bMCxbMTcsMCwwXSxyKHopXSx3YjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxFYjA9cihudSksU2IwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZ2IwPVswLFs5LDAsMF0scihBbildLEZiMD1bMCxbMTcsMCwwXSxyKHopXSxUYjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxPYjA9cihjdSksSWIwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQWIwPXIodHIpLE5iMD1yKFowKSxDYjA9cihuciksUGIwPVswLFsxNywwLDBdLHIoeildLERiMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLExiMD1yKFhyKSxSYjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxqYjA9cih0ciksR2IwPXIoWjApLE1iMD1yKG5yKSxCYjA9WzAsWzE3LDAsMF0scih6KV0scWIwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFViMD1bMCxbMTUsMF0scihOMCldLEhiMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sWGIwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sWWIwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFZiMD1bMCxbMTUsMF0scihOMCldLHpiMD1yKFlyKSxLYjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxXYjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxKYjA9cihcIkZsb3dfYXN0LkNsYXNzLk1ldGhvZC5raW5kXCIpLCRiMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFpiMD1bMCxbMTcsMCwwXSxyKHopXSxRYjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxyNDA9cihpaSksZTQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbjQwPVswLFsxNywwLDBdLHIoeildLHQ0MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHU0MD1yKEJuKSxpNDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxmNDA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLHg0MD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLG80MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxhNDA9WzAsWzE3LDAsMF0scih6KV0sYzQwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sczQwPXIobnUpLHY0MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGw0MD1bMCxbOSwwLDBdLHIoQW4pXSxiNDA9WzAsWzE3LDAsMF0scih6KV0scDQwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sbTQwPXIoal8pLF80MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHk0MD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGg0MD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sZDQwPVswLFsxNywwLDBdLHIoeildLGs0MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHc0MD1yKFhyKSxFNDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxTNDA9cih0ciksZzQwPXIoWjApLEY0MD1yKG5yKSxUNDA9WzAsWzE3LDAsMF0scih6KV0sTzQwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEk0MD1bMCxbMTUsMF0scihOMCldLEE0MD1yKFwiRmxvd19hc3QuQ2xhc3MuTWV0aG9kLkNvbnN0cnVjdG9yXCIpLE40MD1yKFwiRmxvd19hc3QuQ2xhc3MuTWV0aG9kLk1ldGhvZFwiKSxDNDA9cihcIkZsb3dfYXN0LkNsYXNzLk1ldGhvZC5HZXRcIiksUDQwPXIoXCJGbG93X2FzdC5DbGFzcy5NZXRob2QuU2V0XCIpLEQ0MD1bMCxbMTUsMF0scihOMCldLEw0MD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sUjQwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sajQwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEc0MD1bMCxbMTUsMF0scihOMCldLE00MD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLEI0MD1yKFwiRmxvd19hc3QuQ29tbWVudC5raW5kXCIpLHE0MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFU0MD1bMCxbMTcsMCwwXSxyKHopXSxINDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxYNDA9cihcInRleHRcIiksWTQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVjQwPVswLFszLDAsMF0scihWdCldLHo0MD1bMCxbMTcsMCwwXSxyKHopXSxLNDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxXNDA9cihcIm9uX25ld2xpbmVcIiksSjQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sJDQwPVswLFs5LDAsMF0scihBbildLFo0MD1bMCxbMTcsMCwwXSxyKHopXSxRNDA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0scjgwPVswLFsxNSwwXSxyKE4wKV0sZTgwPXIoXCJGbG93X2FzdC5Db21tZW50LkxpbmVcIiksbjgwPXIoXCJGbG93X2FzdC5Db21tZW50LkJsb2NrXCIpLHQ4MD1bMCxbMTUsMF0scihOMCldLHU4MD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0saTgwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sZjgwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHg4MD1bMCxbMTUsMF0scihOMCldLG84MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlBhdHRlcm4uT2JqZWN0XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlBhdHRlcm4uT2JqZWN0QCBcIildLGE4MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxjODA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5QYXR0ZXJuLkFycmF5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlBhdHRlcm4uQXJyYXlAIFwiKV0sczgwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHY4MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlBhdHRlcm4uSWRlbnRpZmllclwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5QYXR0ZXJuLklkZW50aWZpZXJAIFwiKV0sbDgwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGI4MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlBhdHRlcm4uRXhwcmVzc2lvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5QYXR0ZXJuLkV4cHJlc3Npb25AIFwiKV0scDgwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLG04MD1bMCxbMTUsMF0scihOMCldLF84MD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0seTgwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0saDgwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGQ4MD1bMCxbMTUsMF0scihOMCldLGs4MD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHc4MD1yKFwiRmxvd19hc3QuUGF0dGVybi5JZGVudGlmaWVyLm5hbWVcIiksRTgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUzgwPVswLFsxNywwLDBdLHIoeildLGc4MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEY4MD1yKFFjKSxUODA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxPODA9WzAsWzE3LDAsMF0scih6KV0sSTgwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQTgwPXIocXUpLE44MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEM4MD1bMCxbOSwwLDBdLHIoQW4pXSxQODA9WzAsWzE3LDAsMF0scih6KV0sRDgwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEw4MD1bMCxbMTUsMF0scihOMCldLFI4MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGo4MD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLEc4MD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sTTgwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQjgwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0scTgwPXIoXCJGbG93X2FzdC5QYXR0ZXJuLkFycmF5LmVsZW1lbnRzXCIpLFU4MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEg4MD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLFg4MD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sWTgwPVswLFsxNywwLDBdLHIoeildLFY4MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHo4MD1yKFFjKSxLODA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxXODA9WzAsWzE3LDAsMF0scih6KV0sSjgwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sJDgwPXIoWHIpLFo4MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFE4MD1yKHRyKSxyMzA9cihaMCksZTMwPXIobnIpLG4zMD1bMCxbMTcsMCwwXSxyKHopXSx0MzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sdTMwPVswLFsxNSwwXSxyKE4wKV0saTMwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuUGF0dGVybi5BcnJheS5FbGVtZW50XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlBhdHRlcm4uQXJyYXkuRWxlbWVudEAgXCIpXSxmMzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0seDMwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuUGF0dGVybi5BcnJheS5SZXN0RWxlbWVudFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5QYXR0ZXJuLkFycmF5LlJlc3RFbGVtZW50QCBcIildLG8zMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxhMzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5QYXR0ZXJuLkFycmF5LkhvbGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuUGF0dGVybi5BcnJheS5Ib2xlQCBcIildLGMzMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxzMzA9WzAsWzE1LDBdLHIoTjApXSx2MzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxsMzA9cihcIkZsb3dfYXN0LlBhdHRlcm4uQXJyYXkuRWxlbWVudC5hcmd1bWVudFwiKSxiMzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxwMzA9WzAsWzE3LDAsMF0scih6KV0sbTMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sXzMwPXIoX2kpLHkzMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGgzMD1yKHRyKSxkMzA9cihaMCksazMwPXIobnIpLHczMD1bMCxbMTcsMCwwXSxyKHopXSxFMzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sUzMwPVswLFsxNSwwXSxyKE4wKV0sZzMwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxGMzA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxUMzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTzMwPVswLFsxNSwwXSxyKE4wKV0sSTMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQTMwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sTjMwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxDMzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxQMzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxEMzA9cihcIkZsb3dfYXN0LlBhdHRlcm4uT2JqZWN0LnByb3BlcnRpZXNcIiksTDMwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUjMwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sajMwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxHMzA9WzAsWzE3LDAsMF0scih6KV0sTTMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQjMwPXIoUWMpLHEzMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFUzMD1bMCxbMTcsMCwwXSxyKHopXSxIMzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxYMzA9cihYciksWTMwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVjMwPXIodHIpLHozMD1yKFowKSxLMzA9cihuciksVzMwPVswLFsxNywwLDBdLHIoeildLEozMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSwkMzA9WzAsWzE1LDBdLHIoTjApXSxaMzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5QYXR0ZXJuLk9iamVjdC5Qcm9wZXJ0eVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5QYXR0ZXJuLk9iamVjdC5Qcm9wZXJ0eUAgXCIpXSxRMzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scjYwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuUGF0dGVybi5PYmplY3QuUmVzdEVsZW1lbnRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuUGF0dGVybi5PYmplY3QuUmVzdEVsZW1lbnRAIFwiKV0sZTYwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLG42MD1bMCxbMTUsMF0scihOMCldLHQ2MD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHU2MD1yKFwiRmxvd19hc3QuUGF0dGVybi5PYmplY3QuUHJvcGVydHkua2V5XCIpLGk2MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGY2MD1bMCxbMTcsMCwwXSxyKHopXSx4NjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxvNjA9cihtaSksYTYwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sYzYwPVswLFsxNywwLDBdLHIoeildLHM2MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHY2MD1yKF9pKSxsNjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxiNjA9cih0cikscDYwPXIoWjApLG02MD1yKG5yKSxfNjA9WzAsWzE3LDAsMF0scih6KV0seTYwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saDYwPXIoZjYpLGQ2MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGs2MD1bMCxbOSwwLDBdLHIoQW4pXSx3NjA9WzAsWzE3LDAsMF0scih6KV0sRTYwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFM2MD1bMCxbMTUsMF0scihOMCldLGc2MD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sRjYwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sVDYwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLE82MD1bMCxbMTUsMF0scihOMCldLEk2MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlBhdHRlcm4uT2JqZWN0LlByb3BlcnR5LkxpdGVyYWxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuUGF0dGVybi5PYmplY3QuUHJvcGVydHkuTGl0ZXJhbEAgXCIpXSxBNjA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLE42MD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLEM2MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxQNjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sRDYwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuUGF0dGVybi5PYmplY3QuUHJvcGVydHkuSWRlbnRpZmllclwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5QYXR0ZXJuLk9iamVjdC5Qcm9wZXJ0eS5JZGVudGlmaWVyQCBcIildLEw2MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxSNjA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5QYXR0ZXJuLk9iamVjdC5Qcm9wZXJ0eS5Db21wdXRlZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5QYXR0ZXJuLk9iamVjdC5Qcm9wZXJ0eS5Db21wdXRlZEAgXCIpXSxqNjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sRzYwPVswLFsxNSwwXSxyKE4wKV0sTTYwPXIoWXIpLEI2MD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHE2MD1yKFwiRmxvd19hc3QuUGF0dGVybi5SZXN0RWxlbWVudC5hcmd1bWVudFwiKSxVNjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxINjA9WzAsWzE3LDAsMF0scih6KV0sWDYwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWTYwPXIoWHIpLFY2MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHo2MD1yKHRyKSxLNjA9cihaMCksVzYwPXIobnIpLEo2MD1bMCxbMTcsMCwwXSxyKHopXSwkNjA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sWjYwPVswLFsxNSwwXSxyKE4wKV0sUTYwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxycDA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxlcDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sbnAwPVswLFsxNSwwXSxyKE4wKV0sdHAwPXIoWXIpLHVwMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGlwMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGZwMD1yKFwiRmxvd19hc3QuSlNYLmZyYWdfb3BlbmluZ19lbGVtZW50XCIpLHhwMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG9wMD1bMCxbMTcsMCwwXSxyKHopXSxhcDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxjcDA9cihcImZyYWdfY2xvc2luZ19lbGVtZW50XCIpLHNwMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHZwMD1bMCxbMTcsMCwwXSxyKHopXSxscDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxicDA9cihcImZyYWdfY2hpbGRyZW5cIikscHAwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbXAwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxfcDA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSx5cDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxocDA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLGRwMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxrcDA9WzAsWzE3LDAsMF0scih6KV0sd3AwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sRXAwPXIoXCJmcmFnX2NvbW1lbnRzXCIpLFNwMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGdwMD1yKHRyKSxGcDA9cihaMCksVHAwPXIobnIpLE9wMD1bMCxbMTcsMCwwXSxyKHopXSxJcDA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sQXAwPVswLFsxNSwwXSxyKE4wKV0sTnAwPXIoWXIpLENwMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFBwMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLERwMD1yKFwiRmxvd19hc3QuSlNYLm9wZW5pbmdfZWxlbWVudFwiKSxMcDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxScDA9WzAsWzE3LDAsMF0scih6KV0sanAwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sR3AwPXIoXCJjbG9zaW5nX2VsZW1lbnRcIiksTXAwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQnAwPXIodHIpLHFwMD1yKFowKSxVcDA9cihuciksSHAwPVswLFsxNywwLDBdLHIoeildLFhwMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFlwMD1yKFZlKSxWcDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx6cDA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLEtwMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLFdwMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLEpwMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sJHAwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFpwMD1bMCxbMTcsMCwwXSxyKHopXSxRcDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxyNTA9cihYciksZTUwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbjUwPXIodHIpLHQ1MD1yKFowKSx1NTA9cihuciksaTUwPVswLFsxNywwLDBdLHIoeildLGY1MD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx4NTA9WzAsWzE1LDBdLHIoTjApXSxvNTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5KU1guRWxlbWVudFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5KU1guRWxlbWVudEAgXCIpXSxhNTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sYzUwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLkZyYWdtZW50XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5GcmFnbWVudEAgXCIpXSxzNTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sdjUwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLkV4cHJlc3Npb25Db250YWluZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuSlNYLkV4cHJlc3Npb25Db250YWluZXJAIFwiKV0sbDUwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGI1MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkpTWC5TcHJlYWRDaGlsZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5KU1guU3ByZWFkQ2hpbGRAIFwiKV0scDUwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLG01MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkpTWC5UZXh0XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5UZXh0QCBcIildLF81MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx5NTA9WzAsWzE1LDBdLHIoTjApXSxoNTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGQ1MD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGs1MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx3NTA9WzAsWzE1LDBdLHIoTjApXSxFNTA9cihZciksUzUwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sZzUwPXIoXCJGbG93X2FzdC5KU1guU3ByZWFkQ2hpbGQuZXhwcmVzc2lvblwiKSxGNTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxUNTA9WzAsWzE3LDAsMF0scih6KV0sTzUwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sSTUwPXIoWHIpLEE1MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLE41MD1yKHRyKSxDNTA9cihaMCksUDUwPXIobnIpLEQ1MD1bMCxbMTcsMCwwXSxyKHopXSxMNTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sUjUwPVswLFsxNSwwXSxyKE4wKV0sajUwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sRzUwPXIoXCJGbG93X2FzdC5KU1guQ2xvc2luZy5uYW1lXCIpLE01MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEI1MD1bMCxbMTcsMCwwXSxyKHopXSxxNTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sVTUwPVswLFsxNSwwXSxyKE4wKV0sSDUwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxYNTA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxZNTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sVjUwPVswLFsxNSwwXSxyKE4wKV0sejUwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sSzUwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sVzUwPXIoXCJGbG93X2FzdC5KU1guT3BlbmluZy5uYW1lXCIpLEo1MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLCQ1MD1bMCxbMTcsMCwwXSxyKHopXSxaNTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxRNTA9cihcInNlbGZfY2xvc2luZ1wiKSxybTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxlbTA9WzAsWzksMCwwXSxyKEFuKV0sbm0wPVswLFsxNywwLDBdLHIoeildLHRtMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHVtMD1yKG1ZKSxpbTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxmbTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSx4bTA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLG9tMD1bMCxbMTcsMCwwXSxyKHopXSxhbTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sY20wPVswLFsxNSwwXSxyKE4wKV0sc20wPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLk9wZW5pbmcuQXR0cmlidXRlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5PcGVuaW5nLkF0dHJpYnV0ZUAgXCIpXSx2bTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sbG0wPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLk9wZW5pbmcuU3ByZWFkQXR0cmlidXRlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5PcGVuaW5nLlNwcmVhZEF0dHJpYnV0ZUAgXCIpXSxibTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scG0wPVswLFsxNSwwXSxyKE4wKV0sbW0wPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxfbTA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSx5bTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0saG0wPVswLFsxNSwwXSxyKE4wKV0sZG0wPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLklkZW50aWZpZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuSlNYLklkZW50aWZpZXJAIFwiKV0sa20wPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHdtMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkpTWC5OYW1lc3BhY2VkTmFtZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5KU1guTmFtZXNwYWNlZE5hbWVAIFwiKV0sRW0wPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFNtMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkpTWC5NZW1iZXJFeHByZXNzaW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5NZW1iZXJFeHByZXNzaW9uQCBcIildLGdtMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxGbTA9WzAsWzE1LDBdLHIoTjApXSxUbTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxPbTA9cihcIkZsb3dfYXN0LkpTWC5NZW1iZXJFeHByZXNzaW9uLl9vYmplY3RcIiksSW0wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQW0wPVswLFsxNywwLDBdLHIoeildLE5tMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLENtMD1yKEl2KSxQbTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxEbTA9WzAsWzE3LDAsMF0scih6KV0sTG0wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFJtMD1bMCxbMTUsMF0scihOMCldLGptMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkpTWC5NZW1iZXJFeHByZXNzaW9uLklkZW50aWZpZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuSlNYLk1lbWJlckV4cHJlc3Npb24uSWRlbnRpZmllckAgXCIpXSxHbTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTW0wPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLk1lbWJlckV4cHJlc3Npb24uTWVtYmVyRXhwcmVzc2lvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5KU1guTWVtYmVyRXhwcmVzc2lvbi5NZW1iZXJFeHByZXNzaW9uQCBcIildLEJtMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxxbTA9WzAsWzE1LDBdLHIoTjApXSxVbTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLEhtMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLFhtMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxZbTA9WzAsWzE1LDBdLHIoTjApXSxWbTA9cihZciksem0wPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sS20wPXIoXCJGbG93X2FzdC5KU1guU3ByZWFkQXR0cmlidXRlLmFyZ3VtZW50XCIpLFdtMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEptMD1bMCxbMTcsMCwwXSxyKHopXSwkbTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxabTA9cihYciksUW0wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scjkwPXIodHIpLGU5MD1yKFowKSxuOTA9cihuciksdDkwPVswLFsxNywwLDBdLHIoeildLHU5MD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxpOTA9WzAsWzE1LDBdLHIoTjApXSxmOTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLHg5MD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLG85MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxhOTA9WzAsWzE1LDBdLHIoTjApXSxjOTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxzOTA9cihcIkZsb3dfYXN0LkpTWC5BdHRyaWJ1dGUubmFtZVwiKSx2OTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxsOTA9WzAsWzE3LDAsMF0scih6KV0sYjkwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0scDkwPXIoQm4pLG05MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLF85MD1yKHRyKSx5OTA9cihaMCksaDkwPXIobnIpLGQ5MD1bMCxbMTcsMCwwXSxyKHopXSxrOTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sdzkwPVswLFsxNSwwXSxyKE4wKV0sRTkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLkF0dHJpYnV0ZS5MaXRlcmFsIChcIiksWzE3LFswLHIoQ2UpLDAsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5BdHRyaWJ1dGUuTGl0ZXJhbCAoQCxcIildLFM5MD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGc5MD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTEscihFWCksWzE3LDAsMF1dXSxyKFJVKV0sRjkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLkF0dHJpYnV0ZS5FeHByZXNzaW9uQ29udGFpbmVyIChcIiksWzE3LFswLHIoQ2UpLDAsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5BdHRyaWJ1dGUuRXhwcmVzc2lvbkNvbnRhaW5lciAoQCxcIildLFQ5MD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLE85MD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTEscihFWCksWzE3LDAsMF1dXSxyKFJVKV0sSTkwPVswLFsxNSwwXSxyKE4wKV0sQTkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLkF0dHJpYnV0ZS5JZGVudGlmaWVyXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkpTWC5BdHRyaWJ1dGUuSWRlbnRpZmllckAgXCIpXSxOOTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQzkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuSlNYLkF0dHJpYnV0ZS5OYW1lc3BhY2VkTmFtZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5KU1guQXR0cmlidXRlLk5hbWVzcGFjZWROYW1lQCBcIildLFA5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxEOTA9WzAsWzE1LDBdLHIoTjApXSxMOTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLFI5MD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGo5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxHOTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxNOTA9cihcIkZsb3dfYXN0LkpTWC5UZXh0LnZhbHVlXCIpLEI5MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHE5MD1bMCxbMywwLDBdLHIoVnQpXSxVOTA9WzAsWzE3LDAsMF0scih6KV0sSDkwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWDkwPXIoYzcpLFk5MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFY5MD1bMCxbMywwLDBdLHIoVnQpXSx6OTA9WzAsWzE3LDAsMF0scih6KV0sSzkwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFc5MD1bMCxbMTUsMF0scihOMCldLEo5MD1bMCxbMTUsMF0scihOMCldLCQ5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkpTWC5FeHByZXNzaW9uQ29udGFpbmVyLkV4cHJlc3Npb25cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuSlNYLkV4cHJlc3Npb25Db250YWluZXIuRXhwcmVzc2lvbkAgXCIpXSxaOTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUTkwPXIoXCJGbG93X2FzdC5KU1guRXhwcmVzc2lvbkNvbnRhaW5lci5FbXB0eUV4cHJlc3Npb25cIikscl8wPVswLFsxNSwwXSxyKE4wKV0sZV8wPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sbl8wPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sdF8wPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSx1XzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxpXzA9cihcIkZsb3dfYXN0LkpTWC5FeHByZXNzaW9uQ29udGFpbmVyLmV4cHJlc3Npb25cIiksZl8wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0seF8wPVswLFsxNywwLDBdLHIoeildLG9fMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGFfMD1yKFhyKSxjXzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxzXzA9cih0ciksdl8wPXIoWjApLGxfMD1yKG5yKSxiXzA9WzAsWzE3LDAsMF0scih6KV0scF8wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLG1fMD1bMCxbMTUsMF0scihOMCldLF9fMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHlfMD1yKFwiRmxvd19hc3QuSlNYLk5hbWVzcGFjZWROYW1lLm5hbWVzcGFjZVwiKSxoXzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxkXzA9WzAsWzE3LDAsMF0scih6KV0sa18wPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sd18wPXIodWkpLEVfMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFNfMD1bMCxbMTcsMCwwXSxyKHopXSxnXzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sRl8wPVswLFsxNSwwXSxyKE4wKV0sVF8wPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxPXzA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxJXzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQV8wPVswLFsxNSwwXSxyKE4wKV0sTl8wPXIoWXIpLENfMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFBfMD1yKFwiRmxvd19hc3QuSlNYLklkZW50aWZpZXIubmFtZVwiKSxEXzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxMXzA9WzAsWzMsMCwwXSxyKFZ0KV0sUl8wPVswLFsxNywwLDBdLHIoeildLGpfMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEdfMD1yKFhyKSxNXzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCXzA9cih0cikscV8wPXIoWjApLFVfMD1yKG5yKSxIXzA9WzAsWzE3LDAsMF0scih6KV0sWF8wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFlfMD1bMCxbMTUsMF0scihOMCldLFZfMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sel8wPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sS18wPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFdfMD1bMCxbMTUsMF0scihOMCldLEpfMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXJyYXlcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5BcnJheUAgXCIpXSwkXzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sWl8wPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5BcnJvd0Z1bmN0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uQXJyb3dGdW5jdGlvbkAgXCIpXSxRXzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scnkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Bc3NpZ25tZW50XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uQXNzaWdubWVudEAgXCIpXSxleTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sbnkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnlcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnlAIFwiKV0sdHkwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHV5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQ2FsbFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLkNhbGxAIFwiKV0saXkwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGZ5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQ2xhc3NcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5DbGFzc0AgXCIpXSx4eTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sb3kwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Db21wcmVoZW5zaW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uQ29tcHJlaGVuc2lvbkAgXCIpXSxheTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sY3kwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Db25kaXRpb25hbFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLkNvbmRpdGlvbmFsQCBcIildLHN5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx2eTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkZ1bmN0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uRnVuY3Rpb25AIFwiKV0sbHkwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGJ5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uR2VuZXJhdG9yXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uR2VuZXJhdG9yQCBcIildLHB5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxteTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLklkZW50aWZpZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5JZGVudGlmaWVyQCBcIildLF95MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx5eTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkltcG9ydFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLkltcG9ydEAgXCIpXSxoeTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sZHkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5KU1hFbGVtZW50XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uSlNYRWxlbWVudEAgXCIpXSxreTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sd3kwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5KU1hGcmFnbWVudFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLkpTWEZyYWdtZW50QCBcIildLEV5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxTeTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkxpdGVyYWxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5MaXRlcmFsQCBcIildLGd5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxGeTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkxvZ2ljYWxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5Mb2dpY2FsQCBcIildLFR5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxPeTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk1lbWJlclwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk1lbWJlckAgXCIpXSxJeTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQXkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5NZXRhUHJvcGVydHlcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5NZXRhUHJvcGVydHlAIFwiKV0sTnkwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEN5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uTmV3XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uTmV3QCBcIildLFB5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxEeTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdEAgXCIpXSxMeTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUnkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5PcHRpb25hbENhbGxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5PcHRpb25hbENhbGxAIFwiKV0sankwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEd5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uT3B0aW9uYWxNZW1iZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5PcHRpb25hbE1lbWJlckAgXCIpXSxNeTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQnkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5TZXF1ZW5jZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLlNlcXVlbmNlQCBcIildLHF5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxVeTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlN1cGVyXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uU3VwZXJAIFwiKV0sSHkwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFh5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVGFnZ2VkVGVtcGxhdGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5UYWdnZWRUZW1wbGF0ZUAgXCIpXSxZeTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sVnkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5UZW1wbGF0ZUxpdGVyYWxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5UZW1wbGF0ZUxpdGVyYWxAIFwiKV0senkwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEt5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVGhpc1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLlRoaXNAIFwiKV0sV3kwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEp5MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVHlwZUNhc3RcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5UeXBlQ2FzdEAgXCIpXSwkeTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sWnkwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5VbmFyeVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLlVuYXJ5QCBcIildLFF5MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxyaDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlVwZGF0ZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLlVwZGF0ZUAgXCIpXSxlaDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sbmgwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5ZaWVsZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLllpZWxkQCBcIildLHRoMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx1aDA9WzAsWzE1LDBdLHIoTjApXSxpaDA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGZoMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLHhoMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxvaDA9WzAsWzE1LDBdLHIoTjApXSxhaDA9cihZciksY2gwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sc2gwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkltcG9ydC5hcmd1bWVudFwiKSx2aDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxsaDA9WzAsWzE3LDAsMF0scih6KV0sYmgwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0scGgwPXIoWHIpLG1oMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLF9oMD1yKHRyKSx5aDA9cihaMCksaGgwPXIobnIpLGRoMD1bMCxbMTcsMCwwXSxyKHopXSxraDA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sd2gwPVswLFsxNSwwXSxyKE4wKV0sRWgwPXIoWXIpLFNoMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGdoMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5TdXBlci5jb21tZW50c1wiKSxGaDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxUaDA9cih0ciksT2gwPXIoWjApLEloMD1yKG5yKSxBaDA9WzAsWzE3LDAsMF0scih6KV0sTmgwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLENoMD1bMCxbMTUsMF0scihOMCldLFBoMD1yKFlyKSxEaDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxMaDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVGhpcy5jb21tZW50c1wiKSxSaDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxqaDA9cih0ciksR2gwPXIoWjApLE1oMD1yKG5yKSxCaDA9WzAsWzE3LDAsMF0scih6KV0scWgwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFVoMD1bMCxbMTUsMF0scihOMCldLEhoMD1yKFlyKSxYaDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxZaDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uTWV0YVByb3BlcnR5Lm1ldGFcIiksVmgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0semgwPVswLFsxNywwLDBdLHIoeildLEtoMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFdoMD1yKEl2KSxKaDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSwkaDA9WzAsWzE3LDAsMF0scih6KV0sWmgwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUWgwPXIoWHIpLHJkMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGVkMD1yKHRyKSxuZDA9cihaMCksdGQwPXIobnIpLHVkMD1bMCxbMTcsMCwwXSxyKHopXSxpZDA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sZmQwPVswLFsxNSwwXSxyKE4wKV0seGQwPXIoWXIpLG9kMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGFkMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5UeXBlQ2FzdC5leHByZXNzaW9uXCIpLGNkMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHNkMD1bMCxbMTcsMCwwXSxyKHopXSx2ZDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxsZDA9cihRYyksYmQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scGQwPVswLFsxNywwLDBdLHIoeildLG1kMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLF9kMD1yKFhyKSx5ZDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxoZDA9cih0ciksZGQwPXIoWjApLGtkMD1yKG5yKSx3ZDA9WzAsWzE3LDAsMF0scih6KV0sRWQwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFNkMD1bMCxbMTUsMF0scihOMCldLGdkMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEZkMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFRkMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5HZW5lcmF0b3IuYmxvY2tzXCIpLE9kMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLElkMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLEFkMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sTmQwPVswLFsxNywwLDBdLHIoeildLENkMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFBkMD1yKFQ0KSxEZDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxMZDA9cih0ciksUmQwPXIoWjApLGpkMD1yKG5yKSxHZDA9WzAsWzE3LDAsMF0scih6KV0sTWQwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEJkMD1bMCxbMTUsMF0scihOMCldLHFkMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFVkMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLEhkMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Db21wcmVoZW5zaW9uLmJsb2Nrc1wiKSxYZDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxZZDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxWZDA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLHpkMD1bMCxbMTcsMCwwXSxyKHopXSxLZDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxXZDA9cihUNCksSmQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sJGQwPXIodHIpLFpkMD1yKFowKSxRZDA9cihucikscmswPVswLFsxNywwLDBdLHIoeildLGVrMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxuazA9WzAsWzE1LDBdLHIoTjApXSx0azA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx1azA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQ29tcHJlaGVuc2lvbi5CbG9jay5sZWZ0XCIpLGlrMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGZrMD1bMCxbMTcsMCwwXSxyKHopXSx4azA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxvazA9cihDdSksYWswPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sY2swPVswLFsxNywwLDBdLHIoeildLHNrMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHZrMD1yKFI4KSxsazA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxiazA9WzAsWzksMCwwXSxyKEFuKV0scGswPVswLFsxNywwLDBdLHIoeildLG1rMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxfazA9WzAsWzE1LDBdLHIoTjApXSx5azA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGhrMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGRrMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxrazA9WzAsWzE1LDBdLHIoTjApXSx3azA9cihZciksRWswPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sU2swPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLllpZWxkLmFyZ3VtZW50XCIpLGdrMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEZrMD1yKHRyKSxUazA9cihaMCksT2swPXIobnIpLElrMD1bMCxbMTcsMCwwXSxyKHopXSxBazA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxOazA9cihYciksQ2swPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUGswPXIodHIpLERrMD1yKFowKSxMazA9cihuciksUmswPVswLFsxNywwLDBdLHIoeildLGprMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEdrMD1yKGxZKSxNazA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCazA9WzAsWzksMCwwXSxyKEFuKV0scWswPVswLFsxNywwLDBdLHIoeildLFVrMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEhrMD1yKFwicmVzdWx0X291dFwiKSxYazA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxZazA9WzAsWzE3LDAsMF0scih6KV0sVmswPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHprMD1bMCxbMTUsMF0scihOMCldLEtrMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFdrMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5PcHRpb25hbE1lbWJlci5tZW1iZXJcIiksSmswPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sJGswPVswLFsxNywwLDBdLHIoeildLFprMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFFrMD1yKGxVKSxydzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxldzA9WzAsWzE3LDAsMF0scih6KV0sbncwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdHcwPXIocXUpLHV3MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGl3MD1bMCxbOSwwLDBdLHIoQW4pXSxmdzA9WzAsWzE3LDAsMF0scih6KV0seHcwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLG93MD1bMCxbMTUsMF0scihOMCldLGF3MD1yKFlyKSxjdzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxzdzA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uTWVtYmVyLl9vYmplY3RcIiksdncwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbHcwPVswLFsxNywwLDBdLHIoeildLGJ3MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHB3MD1yKEl2KSxtdzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxfdzA9WzAsWzE3LDAsMF0scih6KV0seXcwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saHcwPXIoWHIpLGR3MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGt3MD1yKHRyKSx3dzA9cihaMCksRXcwPXIobnIpLFN3MD1bMCxbMTcsMCwwXSxyKHopXSxndzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sRncwPVswLFsxNSwwXSxyKE4wKV0sVHcwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5NZW1iZXIuUHJvcGVydHlJZGVudGlmaWVyXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uTWVtYmVyLlByb3BlcnR5SWRlbnRpZmllckAgXCIpXSxPdzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sSXcwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5NZW1iZXIuUHJvcGVydHlQcml2YXRlTmFtZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk1lbWJlci5Qcm9wZXJ0eVByaXZhdGVOYW1lQCBcIildLEF3MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxOdzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk1lbWJlci5Qcm9wZXJ0eUV4cHJlc3Npb25cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5NZW1iZXIuUHJvcGVydHlFeHByZXNzaW9uQCBcIildLEN3MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxQdzA9WzAsWzE1LDBdLHIoTjApXSxEdzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxMdzA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uT3B0aW9uYWxDYWxsLmNhbGxcIiksUncwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sancwPVswLFsxNywwLDBdLHIoeildLEd3MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLE13MD1yKGxVKSxCdzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxxdzA9WzAsWzE3LDAsMF0scih6KV0sVXcwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sSHcwPXIocXUpLFh3MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFl3MD1bMCxbOSwwLDBdLHIoQW4pXSxWdzA9WzAsWzE3LDAsMF0scih6KV0sencwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEt3MD1bMCxbMTUsMF0scihOMCldLFd3MD1yKFlyKSxKdzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSwkdzA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQ2FsbC5jYWxsZWVcIiksWncwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUXcwPVswLFsxNywwLDBdLHIoeildLHJFMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGVFMD1yKFoyKSxuRTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx0RTA9cih0ciksdUUwPXIoWjApLGlFMD1yKG5yKSxmRTA9WzAsWzE3LDAsMF0scih6KV0seEUwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sb0UwPXIoQzIpLGFFMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGNFMD1bMCxbMTcsMCwwXSxyKHopXSxzRTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx2RTA9cihYciksbEUwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sYkUwPXIodHIpLHBFMD1yKFowKSxtRTA9cihuciksX0UwPVswLFsxNywwLDBdLHIoeildLHlFMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxoRTA9WzAsWzE1LDBdLHIoTjApXSxkRTA9cihZciksa0UwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sd0UwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk5ldy5jYWxsZWVcIiksRUUwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sU0UwPVswLFsxNywwLDBdLHIoeildLGdFMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEZFMD1yKFoyKSxURTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxPRTA9cih0ciksSUUwPXIoWjApLEFFMD1yKG5yKSxORTA9WzAsWzE3LDAsMF0scih6KV0sQ0UwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUEUwPXIoQzIpLERFMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLExFMD1yKHRyKSxSRTA9cihaMCksakUwPXIobnIpLEdFMD1bMCxbMTcsMCwwXSxyKHopXSxNRTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxCRTA9cihYcikscUUwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVUUwPXIodHIpLEhFMD1yKFowKSxYRTA9cihuciksWUUwPVswLFsxNywwLDBdLHIoeildLFZFMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx6RTA9WzAsWzE1LDBdLHIoTjApXSxLRTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxXRTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxKRTA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLCRFMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFpFMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFFFMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5BcmdMaXN0LmFyZ3VtZW50c1wiKSxyUzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxlUzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxuUzA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLHRTMD1bMCxbMTcsMCwwXSxyKHopXSx1UzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxpUzA9cihYciksZlMwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0seFMwPXIodHIpLG9TMD1yKFowKSxhUzA9cihuciksY1MwPVswLFsxNywwLDBdLHIoeildLHNTMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx2UzA9WzAsWzE1LDBdLHIoTjApXSxsUzA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGJTMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLHBTMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxtUzA9WzAsWzE1LDBdLHIoTjApXSxfUzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkV4cHJlc3Npb25cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5FeHByZXNzaW9uQCBcIildLHlTMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxoUzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlNwcmVhZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLlNwcmVhZEAgXCIpXSxkUzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sa1MwPVswLFsxNSwwXSxyKE4wKV0sd1MwPXIoWXIpLEVTMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFNTMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Db25kaXRpb25hbC50ZXN0XCIpLGdTMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEZTMD1bMCxbMTcsMCwwXSxyKHopXSxUUzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxPUzA9cihrdiksSVMwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQVMwPVswLFsxNywwLDBdLHIoeildLE5TMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLENTMD1yKG0zKSxQUzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxEUzA9WzAsWzE3LDAsMF0scih6KV0sTFMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUlMwPXIoWHIpLGpTMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEdTMD1yKHRyKSxNUzA9cihaMCksQlMwPXIobnIpLHFTMD1bMCxbMTcsMCwwXSxyKHopXSxVUzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sSFMwPVswLFsxNSwwXSxyKE4wKV0sWFMwPXIoWXIpLFlTMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFZTMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Mb2dpY2FsLm9wZXJhdG9yXCIpLHpTMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEtTMD1bMCxbMTcsMCwwXSxyKHopXSxXUzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxKUzA9cihiaSksJFMwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWlMwPVswLFsxNywwLDBdLHIoeildLFFTMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHJnMD1yKEN1KSxlZzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxuZzA9WzAsWzE3LDAsMF0scih6KV0sdGcwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdWcwPXIoWHIpLGlnMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGZnMD1yKHRyKSx4ZzA9cihaMCksb2cwPXIobnIpLGFnMD1bMCxbMTcsMCwwXSxyKHopXSxjZzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sc2cwPVswLFsxNSwwXSxyKE4wKV0sdmcwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkxvZ2ljYWwuT3JcIiksbGcwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkxvZ2ljYWwuQW5kXCIpLGJnMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Mb2dpY2FsLk51bGxpc2hDb2FsZXNjZVwiKSxwZzA9WzAsWzE1LDBdLHIoTjApXSxtZzA9cihZciksX2cwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0seWcwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlVwZGF0ZS5vcGVyYXRvclwiKSxoZzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxkZzA9WzAsWzE3LDAsMF0scih6KV0sa2cwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sd2cwPXIobDcpLEVnMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFNnMD1bMCxbMTcsMCwwXSxyKHopXSxnZzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxGZzA9cihxRSksVGcwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sT2cwPVswLFs5LDAsMF0scihBbildLElnMD1bMCxbMTcsMCwwXSxyKHopXSxBZzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxOZzA9cihYciksQ2cwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUGcwPXIodHIpLERnMD1yKFowKSxMZzA9cihuciksUmcwPVswLFsxNywwLDBdLHIoeildLGpnMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxHZzA9WzAsWzE1LDBdLHIoTjApXSxNZzA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVXBkYXRlLkRlY3JlbWVudFwiKSxCZzA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVXBkYXRlLkluY3JlbWVudFwiKSxxZzA9WzAsWzE1LDBdLHIoTjApXSxVZzA9cihZciksSGcwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sWGcwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkFzc2lnbm1lbnQub3BlcmF0b3JcIiksWWcwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVmcwPXIodHIpLHpnMD1yKFowKSxLZzA9cihuciksV2cwPVswLFsxNywwLDBdLHIoeildLEpnMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLCRnMD1yKGJpKSxaZzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxRZzA9WzAsWzE3LDAsMF0scih6KV0sckYwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZUYwPXIoQ3UpLG5GMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHRGMD1bMCxbMTcsMCwwXSxyKHopXSx1RjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxpRjA9cihYciksZkYwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0seEYwPXIodHIpLG9GMD1yKFowKSxhRjA9cihuciksY0YwPVswLFsxNywwLDBdLHIoeildLHNGMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx2RjA9WzAsWzE1LDBdLHIoTjApXSxsRjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXNzaWdubWVudC5QbHVzQXNzaWduXCIpLGJGMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Bc3NpZ25tZW50Lk1pbnVzQXNzaWduXCIpLHBGMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Bc3NpZ25tZW50Lk11bHRBc3NpZ25cIiksbUYwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkFzc2lnbm1lbnQuRXhwQXNzaWduXCIpLF9GMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Bc3NpZ25tZW50LkRpdkFzc2lnblwiKSx5RjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXNzaWdubWVudC5Nb2RBc3NpZ25cIiksaEYwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkFzc2lnbm1lbnQuTFNoaWZ0QXNzaWduXCIpLGRGMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Bc3NpZ25tZW50LlJTaGlmdEFzc2lnblwiKSxrRjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXNzaWdubWVudC5SU2hpZnQzQXNzaWduXCIpLHdGMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Bc3NpZ25tZW50LkJpdE9yQXNzaWduXCIpLEVGMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5Bc3NpZ25tZW50LkJpdFhvckFzc2lnblwiKSxTRjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXNzaWdubWVudC5CaXRBbmRBc3NpZ25cIiksZ0YwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkFzc2lnbm1lbnQuTnVsbGlzaEFzc2lnblwiKSxGRjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXNzaWdubWVudC5BbmRBc3NpZ25cIiksVEYwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkFzc2lnbm1lbnQuT3JBc3NpZ25cIiksT0YwPVswLFsxNSwwXSxyKE4wKV0sSUYwPXIoWXIpLEFGMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLE5GMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkub3BlcmF0b3JcIiksQ0YwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUEYwPVswLFsxNywwLDBdLHIoeildLERGMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLExGMD1yKGJpKSxSRjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxqRjA9WzAsWzE3LDAsMF0scih6KV0sR0YwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sTUYwPXIoQ3UpLEJGMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHFGMD1bMCxbMTcsMCwwXSxyKHopXSxVRjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxIRjA9cihYciksWEYwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWUYwPXIodHIpLFZGMD1yKFowKSx6RjA9cihuciksS0YwPVswLFsxNywwLDBdLHIoeildLFdGMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxKRjA9WzAsWzE1LDBdLHIoTjApXSwkRjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQmluYXJ5LkVxdWFsXCIpLFpGMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkuTm90RXF1YWxcIiksUUYwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5TdHJpY3RFcXVhbFwiKSxyVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQmluYXJ5LlN0cmljdE5vdEVxdWFsXCIpLGVUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkuTGVzc1RoYW5cIiksblQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5MZXNzVGhhbkVxdWFsXCIpLHRUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkuR3JlYXRlclRoYW5cIiksdVQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5HcmVhdGVyVGhhbkVxdWFsXCIpLGlUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkuTFNoaWZ0XCIpLGZUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkuUlNoaWZ0XCIpLHhUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkuUlNoaWZ0M1wiKSxvVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQmluYXJ5LlBsdXNcIiksYVQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5NaW51c1wiKSxjVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQmluYXJ5Lk11bHRcIiksc1QwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5FeHBcIiksdlQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5EaXZcIiksbFQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5Nb2RcIiksYlQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkJpbmFyeS5CaXRPclwiKSxwVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQmluYXJ5LlhvclwiKSxtVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQmluYXJ5LkJpdEFuZFwiKSxfVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQmluYXJ5LkluXCIpLHlUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5CaW5hcnkuSW5zdGFuY2VvZlwiKSxoVDA9WzAsWzE1LDBdLHIoTjApXSxkVDA9cihZciksa1QwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sd1QwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlVuYXJ5Lm9wZXJhdG9yXCIpLEVUMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFNUMD1bMCxbMTcsMCwwXSxyKHopXSxnVDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxGVDA9cihsNyksVFQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sT1QwPVswLFsxNywwLDBdLHIoeildLElUMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEFUMD1yKFhyKSxOVDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxDVDA9cih0ciksUFQwPXIoWjApLERUMD1yKG5yKSxMVDA9WzAsWzE3LDAsMF0scih6KV0sUlQwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGpUMD1bMCxbMTUsMF0scihOMCldLEdUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5VbmFyeS5NaW51c1wiKSxNVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVW5hcnkuUGx1c1wiKSxCVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVW5hcnkuTm90XCIpLHFUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5VbmFyeS5CaXROb3RcIiksVVQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlVuYXJ5LlR5cGVvZlwiKSxIVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVW5hcnkuVm9pZFwiKSxYVDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVW5hcnkuRGVsZXRlXCIpLFlUMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5VbmFyeS5Bd2FpdFwiKSxWVDA9WzAsWzE1LDBdLHIoTjApXSx6VDA9cihZciksS1QwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sV1QwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sSlQwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlNlcXVlbmNlLmV4cHJlc3Npb25zXCIpLCRUMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFpUMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLFFUMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sck8wPVswLFsxNywwLDBdLHIoeildLGVPMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG5PMD1yKFhyKSx0TzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx1TzA9cih0ciksaU8wPXIoWjApLGZPMD1yKG5yKSx4TzA9WzAsWzE3LDAsMF0scih6KV0sb08wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGFPMD1bMCxbMTUsMF0scihOMCldLGNPMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHNPMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLHZPMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sbE8wPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sYk8wPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0scE8wPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5wcm9wZXJ0aWVzXCIpLG1PMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLF9PMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLHlPMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0saE8wPVswLFsxNywwLDBdLHIoeildLGRPMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGtPMD1yKFhyKSx3TzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxFTzA9cih0ciksU08wPXIoWjApLGdPMD1yKG5yKSxGTzA9WzAsWzE3LDAsMF0scih6KV0sVE8wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLE9PMD1bMCxbMTUsMF0scihOMCldLElPMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uT2JqZWN0LlByb3BlcnR5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uT2JqZWN0LlByb3BlcnR5QCBcIildLEFPMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxOTzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5TcHJlYWRQcm9wZXJ0eVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5TcHJlYWRQcm9wZXJ0eUAgXCIpXSxDTzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUE8wPVswLFsxNSwwXSxyKE4wKV0sRE8wPXIoWXIpLExPMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFJPMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5PYmplY3QuU3ByZWFkUHJvcGVydHkuYXJndW1lbnRcIiksak8wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sR08wPVswLFsxNywwLDBdLHIoeildLE1PMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEJPMD1yKFhyKSxxTzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxVTzA9cih0ciksSE8wPXIoWjApLFhPMD1yKG5yKSxZTzA9WzAsWzE3LDAsMF0scih6KV0sVk8wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHpPMD1bMCxbMTUsMF0scihOMCldLEtPMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sV08wPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sSk8wPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLCRPMD1bMCxbMTUsMF0scihOMCldLFpPMD1yKFlyKSxRTzA9cihZciksckkwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5Qcm9wZXJ0eS5Jbml0IHtcIiksWzE3LFswLHIoQ2UpLDAsMF0sMF1dXSxyKFwiQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5Qcm9wZXJ0eS5Jbml0IHtALFwiKV0sZUkwPXIoaWkpLG5JMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHRJMD1bMCxbMTcsMCwwXSxyKHopXSx1STA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxpSTA9cihCbiksZkkwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0seEkwPVswLFsxNywwLDBdLHIoeildLG9JMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGFJMD1yKGY2KSxjSTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxzSTA9WzAsWzksMCwwXSxyKEFuKV0sdkkwPVswLFsxNywwLDBdLHIoeildLGxJMD1bMCxbMTcsMCxbMTIsYnIsMF1dLHIoWTYpXSxiSTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uT2JqZWN0LlByb3BlcnR5Lk1ldGhvZCB7XCIpLFsxNyxbMCxyKENlKSwwLDBdLDBdXV0scihcIkBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5PYmplY3QuUHJvcGVydHkuTWV0aG9kIHtALFwiKV0scEkwPXIoaWkpLG1JMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLF9JMD1bMCxbMTcsMCwwXSxyKHopXSx5STA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxoSTA9cihCbiksZEkwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sa0kwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSx3STA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxFSTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sU0kwPVswLFsxNywwLDBdLHIoeildLGdJMD1bMCxbMTcsMCxbMTIsYnIsMF1dLHIoWTYpXSxGSTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uT2JqZWN0LlByb3BlcnR5LkdldCB7XCIpLFsxNyxbMCxyKENlKSwwLDBdLDBdXV0scihcIkBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5PYmplY3QuUHJvcGVydHkuR2V0IHtALFwiKV0sVEkwPXIoaWkpLE9JMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLElJMD1bMCxbMTcsMCwwXSxyKHopXSxBSTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxOSTA9cihCbiksQ0kwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUEkwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxESTA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxMSTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUkkwPVswLFsxNywwLDBdLHIoeildLGpJMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEdJMD1yKFhyKSxNSTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCSTA9cih0cikscUkwPXIoWjApLFVJMD1yKG5yKSxISTA9WzAsWzE3LDAsMF0scih6KV0sWEkwPVswLFsxNywwLFsxMixiciwwXV0scihZNildLFlJMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5PYmplY3QuUHJvcGVydHkuU2V0IHtcIiksWzE3LFswLHIoQ2UpLDAsMF0sMF1dXSxyKFwiQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5Qcm9wZXJ0eS5TZXQge0AsXCIpXSxWSTA9cihpaSksekkwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sS0kwPVswLFsxNywwLDBdLHIoeildLFdJMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEpJMD1yKEJuKSwkSTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxaSTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLFFJMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLHJBMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxlQTA9WzAsWzE3LDAsMF0scih6KV0sbkEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdEEwPXIoWHIpLHVBMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGlBMD1yKHRyKSxmQTA9cihaMCkseEEwPXIobnIpLG9BMD1bMCxbMTcsMCwwXSxyKHopXSxhQTA9WzAsWzE3LDAsWzEyLGJyLDBdXSxyKFk2KV0sY0EwPVswLFsxNSwwXSxyKE4wKV0sc0EwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSx2QTA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxsQTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sYkEwPVswLFsxNSwwXSxyKE4wKV0scEEwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5PYmplY3QuUHJvcGVydHkuTGl0ZXJhbFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5Qcm9wZXJ0eS5MaXRlcmFsQCBcIildLG1BMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sX0EwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0seUEwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGhBMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxkQTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5Qcm9wZXJ0eS5JZGVudGlmaWVyXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uT2JqZWN0LlByb3BlcnR5LklkZW50aWZpZXJAIFwiKV0sa0EwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHdBMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uT2JqZWN0LlByb3BlcnR5LlByaXZhdGVOYW1lXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uT2JqZWN0LlByb3BlcnR5LlByaXZhdGVOYW1lQCBcIildLEVBMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxTQTA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5Qcm9wZXJ0eS5Db21wdXRlZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLk9iamVjdC5Qcm9wZXJ0eS5Db21wdXRlZEAgXCIpXSxnQTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sRkEwPVswLFsxNSwwXSxyKE4wKV0sVEEwPXIoWXIpLE9BMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLElBMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5UYWdnZWRUZW1wbGF0ZS50YWdcIiksQUEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sTkEwPVswLFsxNywwLDBdLHIoeildLENBMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFBBMD1yKEVZKSxEQTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxMQTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLFJBMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGpBMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxHQTA9WzAsWzE3LDAsMF0scih6KV0sTUEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQkEwPXIoWHIpLHFBMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFVBMD1yKHRyKSxIQTA9cihaMCksWEEwPXIobnIpLFlBMD1bMCxbMTcsMCwwXSxyKHopXSxWQTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sekEwPVswLFsxNSwwXSxyKE4wKV0sS0EwPXIoWXIpLFdBMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEpBMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLCRBMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFpBMD1yKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5UZW1wbGF0ZUxpdGVyYWwucXVhc2lzXCIpLFFBMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHJOMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGVOMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sbk4wPVswLFsxNywwLDBdLHIoeildLHROMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHVOMD1yKE1nKSxpTjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxmTjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSx4TjA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLG9OMD1bMCxbMTcsMCwwXSxyKHopXSxhTjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxjTjA9cihYciksc04wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sdk4wPXIodHIpLGxOMD1yKFowKSxiTjA9cihucikscE4wPVswLFsxNywwLDBdLHIoeildLG1OMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxfTjA9WzAsWzE1LDBdLHIoTjApXSx5TjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxoTjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVGVtcGxhdGVMaXRlcmFsLkVsZW1lbnQudmFsdWVcIiksZE4wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sa04wPVswLFsxNywwLDBdLHIoeildLHdOMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEVOMD1yKGFVKSxTTjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxnTjA9WzAsWzksMCwwXSxyKEFuKV0sRk4wPVswLFsxNywwLDBdLHIoeildLFROMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxPTjA9WzAsWzE1LDBdLHIoTjApXSxJTjA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLEFOMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLE5OMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxDTjA9WzAsWzE1LDBdLHIoTjApXSxQTjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxETjA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uVGVtcGxhdGVMaXRlcmFsLkVsZW1lbnQucmF3XCIpLExOMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFJOMD1bMCxbMywwLDBdLHIoVnQpXSxqTjA9WzAsWzE3LDAsMF0scih6KV0sR04wPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sTU4wPXIoUFkpLEJOMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHFOMD1bMCxbMywwLDBdLHIoVnQpXSxVTjA9WzAsWzE3LDAsMF0scih6KV0sSE4wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFhOMD1bMCxbMTUsMF0scihOMCldLFlOMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFZOMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLHpOMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sS04wPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sV04wPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sSk4wPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkFycmF5LmVsZW1lbnRzXCIpLCROMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFpOMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLFFOMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sckMwPVswLFsxNywwLDBdLHIoeildLGVDMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG5DMD1yKFhyKSx0QzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx1QzA9cih0ciksaUMwPXIoWjApLGZDMD1yKG5yKSx4QzA9WzAsWzE3LDAsMF0scih6KV0sb0MwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGFDMD1bMCxbMTUsMF0scihOMCldLGNDMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXJyYXkuRXhwcmVzc2lvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLkFycmF5LkV4cHJlc3Npb25AIFwiKV0sc0MwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHZDMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQXJyYXkuU3ByZWFkXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uQXJyYXkuU3ByZWFkQCBcIildLGxDMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxiQzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkFycmF5LkhvbGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuRXhwcmVzc2lvbi5BcnJheS5Ib2xlQCBcIildLHBDMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxtQzA9WzAsWzE1LDBdLHIoTjApXSxfQzA9cihZcikseUMwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0saEMwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLlNwcmVhZEVsZW1lbnQuYXJndW1lbnRcIiksZEMwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sa0MwPVswLFsxNywwLDBdLHIoeildLHdDMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEVDMD1yKFhyKSxTQzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxnQzA9cih0ciksRkMwPXIoWjApLFRDMD1yKG5yKSxPQzA9WzAsWzE3LDAsMF0scih6KV0sSUMwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEFDMD1bMCxbMTUsMF0scihOMCldLE5DMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sQ0MwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sUEMwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLERDMD1bMCxbMTUsMF0scihOMCldLExDMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFJDMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGpDMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sR0MwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sTUMwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sQkMwPXIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkNhbGxUeXBlQXJncy5hcmd1bWVudHNcIikscUMwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVUMwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sSEMwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxYQzA9WzAsWzE3LDAsMF0scih6KV0sWUMwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sVkMwPXIoWHIpLHpDMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEtDMD1yKHRyKSxXQzA9cihaMCksSkMwPXIobnIpLCRDMD1bMCxbMTcsMCwwXSxyKHopXSxaQzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sUUMwPVswLFsxNSwwXSxyKE4wKV0sclAwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxlUDA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxuUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sdFAwPVswLFsxNSwwXSxyKE4wKV0sdVAwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuRXhwcmVzc2lvbi5DYWxsVHlwZUFyZy5FeHBsaWNpdFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5FeHByZXNzaW9uLkNhbGxUeXBlQXJnLkV4cGxpY2l0QCBcIildLGlQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxmUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5FeHByZXNzaW9uLkNhbGxUeXBlQXJnLkltcGxpY2l0XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LkV4cHJlc3Npb24uQ2FsbFR5cGVBcmcuSW1wbGljaXRAIFwiKV0seFAwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLG9QMD1bMCxbMTUsMF0scihOMCldLGFQMD1yKFlyKSxjUDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxzUDA9cihcIkZsb3dfYXN0LkV4cHJlc3Npb24uQ2FsbFR5cGVBcmcuSW1wbGljaXQuY29tbWVudHNcIiksdlAwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbFAwPXIodHIpLGJQMD1yKFowKSxwUDA9cihuciksbVAwPVswLFsxNywwLDBdLHIoeildLF9QMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx5UDA9WzAsWzE1LDBdLHIoTjApXSxoUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGRQMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGtQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx3UDA9WzAsWzE1LDBdLHIoTjApXSxFUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuQmxvY2tcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkJsb2NrQCBcIildLFNQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxnUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuQnJlYWtcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkJyZWFrQCBcIildLEZQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxUUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuQ2xhc3NEZWNsYXJhdGlvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuQ2xhc3NEZWNsYXJhdGlvbkAgXCIpXSxPUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sSVAwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkNvbnRpbnVlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5Db250aW51ZUAgXCIpXSxBUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTlAwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlYnVnZ2VyXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5EZWJ1Z2dlckAgXCIpXSxDUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUFAwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVDbGFzc1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUNsYXNzQCBcIildLERQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxMUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlRXhwb3J0RGVjbGFyYXRpb25AIFwiKV0sUlAwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGpQMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlRnVuY3Rpb25cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVGdW5jdGlvbkAgXCIpXSxHUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTVAwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVJbnRlcmZhY2VcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVJbnRlcmZhY2VAIFwiKV0sQlAwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHFQMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlTW9kdWxlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlTW9kdWxlQCBcIildLFVQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxIUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZU1vZHVsZUV4cG9ydHNcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVNb2R1bGVFeHBvcnRzQCBcIildLFhQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxZUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZVR5cGVBbGlhc1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZVR5cGVBbGlhc0AgXCIpXSxWUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0selAwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVPcGFxdWVUeXBlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlT3BhcXVlVHlwZUAgXCIpXSxLUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sV1AwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVWYXJpYWJsZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZVZhcmlhYmxlQCBcIildLEpQMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSwkUDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRG9XaGlsZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRG9XaGlsZUAgXCIpXSxaUDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUVAwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkVtcHR5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5FbXB0eUAgXCIpXSxyRDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sZUQwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRW51bURlY2xhcmF0aW9uQCBcIildLG5EMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx0RDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5FeHBvcnREZWZhdWx0RGVjbGFyYXRpb25AIFwiKV0sdUQwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGlEMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5FeHBvcnROYW1lZERlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5FeHBvcnROYW1lZERlY2xhcmF0aW9uQCBcIildLGZEMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx4RDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwcmVzc2lvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRXhwcmVzc2lvbkAgXCIpXSxvRDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sYUQwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkZvclwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRm9yQCBcIildLGNEMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxzRDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRm9ySW5cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkZvckluQCBcIildLHZEMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxsRDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRm9yT2ZcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkZvck9mQCBcIildLGJEMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxwRDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRnVuY3Rpb25EZWNsYXJhdGlvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRnVuY3Rpb25EZWNsYXJhdGlvbkAgXCIpXSxtRDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sX0QwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LklmXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5JZkAgXCIpXSx5RDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0saEQwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkltcG9ydERlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5JbXBvcnREZWNsYXJhdGlvbkAgXCIpXSxkRDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sa0QwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkludGVyZmFjZURlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5JbnRlcmZhY2VEZWNsYXJhdGlvbkAgXCIpXSx3RDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sRUQwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkxhYmVsZWRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkxhYmVsZWRAIFwiKV0sU0QwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGdEMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5SZXR1cm5cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LlJldHVybkAgXCIpXSxGRDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sVEQwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LlN3aXRjaFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuU3dpdGNoQCBcIildLE9EMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxJRDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuVGhyb3dcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LlRocm93QCBcIildLEFEMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxORDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuVHJ5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5UcnlAIFwiKV0sQ0QwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFBEMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5UeXBlQWxpYXNcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LlR5cGVBbGlhc0AgXCIpXSxERDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTEQwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50Lk9wYXF1ZVR5cGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50Lk9wYXF1ZVR5cGVAIFwiKV0sUkQwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGpEMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5WYXJpYWJsZURlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5WYXJpYWJsZURlY2xhcmF0aW9uQCBcIildLEdEMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxNRDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuV2hpbGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LldoaWxlQCBcIildLEJEMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxxRDA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuV2l0aFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuV2l0aEAgXCIpXSxVRDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sSEQwPVswLFsxNSwwXSxyKE4wKV0sWEQwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxZRDA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxWRDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sekQwPVswLFsxNSwwXSxyKE4wKV0sS0QwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0VmFsdWVcIiksV0QwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0VHlwZVwiKSxKRDA9WzAsWzE1LDBdLHIoTjApXSwkRDA9cihZciksWkQwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sUUQwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRW1wdHkuY29tbWVudHNcIiksckwwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZUwwPXIodHIpLG5MMD1yKFowKSx0TDA9cihuciksdUwwPVswLFsxNywwLDBdLHIoeildLGlMMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxmTDA9WzAsWzE1LDBdLHIoTjApXSx4TDA9cihZciksb0wwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sYUwwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwcmVzc2lvbi5leHByZXNzaW9uXCIpLGNMMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHNMMD1bMCxbMTcsMCwwXSxyKHopXSx2TDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxsTDA9cihaaSksYkwwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scEwwPXIodHIpLG1MMD1bMCxbMywwLDBdLHIoVnQpXSxfTDA9cihaMCkseUwwPXIobnIpLGhMMD1bMCxbMTcsMCwwXSxyKHopXSxkTDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxrTDA9cihYciksd0wwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sRUwwPXIodHIpLFNMMD1yKFowKSxnTDA9cihuciksRkwwPVswLFsxNywwLDBdLHIoeildLFRMMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxPTDA9WzAsWzE1LDBdLHIoTjApXSxJTDA9cihZciksQUwwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sTkwwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuSW1wb3J0RGVjbGFyYXRpb24uaW1wb3J0X2tpbmRcIiksQ0wwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUEwwPVswLFsxNywwLDBdLHIoeildLERMMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLExMMD1yKGNjKSxSTDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxqTDA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLEdMMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLE1MMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxCTDA9WzAsWzE3LDAsMF0scih6KV0scUwwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sVUwwPXIoX2kpLEhMMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFhMMD1yKHRyKSxZTDA9cihaMCksVkwwPXIobnIpLHpMMD1bMCxbMTcsMCwwXSxyKHopXSxLTDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxXTDA9cihDdiksSkwwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sJEwwPXIodHIpLFpMMD1yKFowKSxRTDA9cihuciksclIwPVswLFsxNywwLDBdLHIoeildLGVSMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG5SMD1yKFhyKSx0UjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx1UjA9cih0ciksaVIwPXIoWjApLGZSMD1yKG5yKSx4UjA9WzAsWzE3LDAsMF0scih6KV0sb1IwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGFSMD1bMCxbMTUsMF0scihOMCldLGNSMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHNSMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkltcG9ydERlY2xhcmF0aW9uLmtpbmRcIiksdlIwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbFIwPXIodHIpLGJSMD1yKFowKSxwUjA9cihuciksbVIwPVswLFsxNywwLDBdLHIoeildLF9SMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHlSMD1yKEIyKSxoUjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxkUjA9cih0ciksa1IwPXIoWjApLHdSMD1yKG5yKSxFUjA9WzAsWzE3LDAsMF0scih6KV0sU1IwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZ1IwPXIoXCJyZW1vdGVcIiksRlIwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVFIwPVswLFsxNywwLDBdLHIoeildLE9SMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxJUjA9WzAsWzE1LDBdLHIoTjApXSxBUjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxOUjA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuSW1wb3J0RGVjbGFyYXRpb24uSW1wb3J0TmFtZWRTcGVjaWZpZXJzXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5JbXBvcnREZWNsYXJhdGlvbi5JbXBvcnROYW1lZFNwZWNpZmllcnNAIFwiKV0sQ1IwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sUFIwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxEUjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTFIwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkltcG9ydERlY2xhcmF0aW9uLkltcG9ydE5hbWVzcGFjZVNwZWNpZmllclwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuSW1wb3J0RGVjbGFyYXRpb24uSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyQCBcIildLFJSMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0salIwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sR1IwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLE1SMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxCUjA9WzAsWzE1LDBdLHIoTjApXSxxUjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5JbXBvcnREZWNsYXJhdGlvbi5JbXBvcnRUeXBlXCIpLFVSMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkltcG9ydERlY2xhcmF0aW9uLkltcG9ydFR5cGVvZlwiKSxIUjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5JbXBvcnREZWNsYXJhdGlvbi5JbXBvcnRWYWx1ZVwiKSxYUjA9WzAsWzE1LDBdLHIoTjApXSxZUjA9cihZciksVlIwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0selIwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uLmRlZmF1bHRcIiksS1IwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sV1IwPXIodHIpLEpSMD1yKFowKSwkUjA9cihuciksWlIwPVswLFsxNywwLDBdLHIoeildLFFSMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHJqMD1yKFAyKSxlajA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxuajA9cih0ciksdGowPXIoWjApLHVqMD1yKG5yKSxpajA9WzAsWzE3LDAsMF0scih6KV0sZmowPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0seGowPXIoQ3YpLG9qMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGFqMD1yKHRyKSxjajA9cihaMCksc2owPXIobnIpLHZqMD1bMCxbMTcsMCwwXSxyKHopXSxsajA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxiajA9cihjYykscGowPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbWowPXIodHIpLF9qMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0seWowPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0saGowPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGRqMD1yKFowKSxrajA9cihuciksd2owPVswLFsxNywwLDBdLHIoeildLEVqMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFNqMD1yKFhyKSxnajA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxGajA9cih0ciksVGowPXIoWjApLE9qMD1yKG5yKSxJajA9WzAsWzE3LDAsMF0scih6KV0sQWowPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLE5qMD1bMCxbMTUsMF0scihOMCldLENqMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlRXhwb3J0RGVjbGFyYXRpb24uVmFyaWFibGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVFeHBvcnREZWNsYXJhdGlvbi5WYXJpYWJsZUAgXCIpXSxQajA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLERqMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLExqMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxSajA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0samowPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVFeHBvcnREZWNsYXJhdGlvbi5GdW5jdGlvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uLkZ1bmN0aW9uQCBcIildLEdqMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sTWowPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sQmowPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHFqMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxVajA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uLkNsYXNzXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlRXhwb3J0RGVjbGFyYXRpb24uQ2xhc3NAIFwiKV0sSGowPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxYajA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxZajA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sVmowPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHpqMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlRXhwb3J0RGVjbGFyYXRpb24uRGVmYXVsdFR5cGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVFeHBvcnREZWNsYXJhdGlvbi5EZWZhdWx0VHlwZUAgXCIpXSxLajA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sV2owPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVFeHBvcnREZWNsYXJhdGlvbi5OYW1lZFR5cGVcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVFeHBvcnREZWNsYXJhdGlvbi5OYW1lZFR5cGVAIFwiKV0sSmowPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSwkajA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxaajA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sUWowPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHJHMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlRXhwb3J0RGVjbGFyYXRpb24uTmFtZWRPcGFxdWVUeXBlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlRXhwb3J0RGVjbGFyYXRpb24uTmFtZWRPcGFxdWVUeXBlQCBcIildLGVHMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sbkcwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sdEcwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHVHMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxpRzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uLkludGVyZmFjZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uLkludGVyZmFjZUAgXCIpXSxmRzA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLHhHMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLG9HMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxhRzA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sY0cwPVswLFsxNSwwXSxyKE4wKV0sc0cwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbi5EZWNsYXJhdGlvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uLkRlY2xhcmF0aW9uQCBcIildLHZHMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxsRzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uLkV4cHJlc3Npb25cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbi5FeHByZXNzaW9uQCBcIildLGJHMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxwRzA9WzAsWzE1LDBdLHIoTjApXSxtRzA9cihZciksX0cwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0seUcwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uLmRlZmF1bHRcIiksaEcwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZEcwPVswLFsxNywwLDBdLHIoeildLGtHMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHdHMD1yKFAyKSxFRzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxTRzA9WzAsWzE3LDAsMF0scih6KV0sZ0cwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sRkcwPXIoWHIpLFRHMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLE9HMD1yKHRyKSxJRzA9cihaMCksQUcwPXIobnIpLE5HMD1bMCxbMTcsMCwwXSxyKHopXSxDRzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sUEcwPVswLFsxNSwwXSxyKE4wKV0sREcwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sTEcwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkV4cG9ydE5hbWVkRGVjbGFyYXRpb24uRXhwb3J0U3BlY2lmaWVyc1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0TmFtZWREZWNsYXJhdGlvbi5FeHBvcnRTcGVjaWZpZXJzQCBcIildLFJHMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGpHMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sR0cwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLE1HMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5FeHBvcnROYW1lZERlY2xhcmF0aW9uLkV4cG9ydEJhdGNoU3BlY2lmaWVyXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5FeHBvcnROYW1lZERlY2xhcmF0aW9uLkV4cG9ydEJhdGNoU3BlY2lmaWVyQCBcIildLEJHMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxxRzA9WzAsWzE1LDBdLHIoTjApXSxVRzA9cihZciksSEcwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sWEcwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRXhwb3J0TmFtZWREZWNsYXJhdGlvbi5kZWNsYXJhdGlvblwiKSxZRzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxWRzA9cih0ciksekcwPXIoWjApLEtHMD1yKG5yKSxXRzA9WzAsWzE3LDAsMF0scih6KV0sSkcwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sJEcwPXIoQ3YpLFpHMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFFHMD1yKHRyKSxyTTA9cihaMCksZU0wPXIobnIpLG5NMD1bMCxbMTcsMCwwXSxyKHopXSx0TTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx1TTA9cihjYyksaU0wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZk0wPXIodHIpLHhNMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sb00wPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sYU0wPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGNNMD1yKFowKSxzTTA9cihuciksdk0wPVswLFsxNywwLDBdLHIoeildLGxNMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGJNMD1yKFwiZXhwb3J0X2tpbmRcIikscE0wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbU0wPVswLFsxNywwLDBdLHIoeildLF9NMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHlNMD1yKFhyKSxoTTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxkTTA9cih0ciksa00wPXIoWjApLHdNMD1yKG5yKSxFTTA9WzAsWzE3LDAsMF0scih6KV0sU00wPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGdNMD1bMCxbMTUsMF0scihOMCldLEZNMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sVE0wPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sT00wPXIodHIpLElNMD1yKFowKSxBTTA9cihuciksTk0wPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLENNMD1bMCxbMTUsMF0scihOMCldLFBNMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLERNMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkV4cG9ydE5hbWVkRGVjbGFyYXRpb24uRXhwb3J0U3BlY2lmaWVyLmxvY2FsXCIpLExNMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFJNMD1bMCxbMTcsMCwwXSxyKHopXSxqTTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxHTTA9cihJNCksTU0wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQk0wPXIodHIpLHFNMD1yKFowKSxVTTA9cihuciksSE0wPVswLFsxNywwLDBdLHIoeildLFhNMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxZTTA9WzAsWzE1LDBdLHIoTjApXSxWTTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLHpNMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLEtNMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxXTTA9WzAsWzE1LDBdLHIoTjApXSxKTTA9cihZciksJE0wPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sWk0wPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZU1vZHVsZUV4cG9ydHMuYW5ub3RcIiksUU0wPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sckIwPVswLFsxNywwLDBdLHIoeildLGVCMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG5CMD1yKFhyKSx0QjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx1QjA9cih0ciksaUIwPXIoWjApLGZCMD1yKG5yKSx4QjA9WzAsWzE3LDAsMF0scih6KV0sb0IwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGFCMD1bMCxbMTUsMF0scihOMCldLGNCMD1yKFlyKSxzQjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx2QjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlTW9kdWxlLmlkXCIpLGxCMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGJCMD1bMCxbMTcsMCwwXSxyKHopXSxwQjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxtQjA9cihXbiksX0IwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0seUIwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxoQjA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxkQjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sa0IwPVswLFsxNywwLDBdLHIoeildLHdCMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEVCMD1yKCRjKSxTQjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxnQjA9WzAsWzE3LDAsMF0scih6KV0sRkIwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sVEIwPXIoWHIpLE9CMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLElCMD1yKHRyKSxBQjA9cihaMCksTkIwPXIobnIpLENCMD1bMCxbMTcsMCwwXSxyKHopXSxQQjA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sREIwPVswLFsxNSwwXSxyKE4wKV0sTEIwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZU1vZHVsZS5FU1wiKSxSQjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlTW9kdWxlLkNvbW1vbkpTXCIpLGpCMD1bMCxbMTUsMF0scihOMCldLEdCMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5EZWNsYXJlTW9kdWxlLklkZW50aWZpZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVNb2R1bGUuSWRlbnRpZmllckAgXCIpXSxNQjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQkIwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVNb2R1bGUuTGl0ZXJhbFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZU1vZHVsZS5MaXRlcmFsQCBcIildLHFCMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sVUIwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sSEIwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFhCMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxZQjA9WzAsWzE1LDBdLHIoTjApXSxWQjA9cihZciksekIwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sS0IwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUZ1bmN0aW9uLmlkXCIpLFdCMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEpCMD1bMCxbMTcsMCwwXSxyKHopXSwkQjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxaQjA9cihRYyksUUIwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scnEwPVswLFsxNywwLDBdLHIoeildLGVxMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG5xMD1yKHI3KSx0cTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx1cTA9cih0ciksaXEwPXIoWjApLGZxMD1yKG5yKSx4cTA9WzAsWzE3LDAsMF0scih6KV0sb3EwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sYXEwPXIoWHIpLGNxMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHNxMD1yKHRyKSx2cTA9cihaMCksbHEwPXIobnIpLGJxMD1bMCxbMTcsMCwwXSxyKHopXSxwcTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sbXEwPVswLFsxNSwwXSxyKE4wKV0sX3EwPXIoWXIpLHlxMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGhxMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlY2xhcmVWYXJpYWJsZS5pZFwiKSxkcTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxrcTA9WzAsWzE3LDAsMF0scih6KV0sd3EwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sRXEwPXIoUWMpLFNxMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGdxMD1bMCxbMTcsMCwwXSxyKHopXSxGcTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxUcTA9cihYciksT3EwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSXEwPXIodHIpLEFxMD1yKFowKSxOcTA9cihuciksQ3EwPVswLFsxNywwLDBdLHIoeildLFBxMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxEcTA9WzAsWzE1LDBdLHIoTjApXSxMcTA9cihZciksUnEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sanEwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxHcTA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxNcTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQnEwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0scXEwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRGVjbGFyZUNsYXNzLmlkXCIpLFVxMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEhxMD1bMCxbMTcsMCwwXSxyKHopXSxYcTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxZcTA9cihzdiksVnEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0senEwPXIodHIpLEtxMD1yKFowKSxXcTA9cihuciksSnEwPVswLFsxNywwLDBdLHIoeildLCRxMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFpxMD1yKFduKSxRcTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxyVTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGVVMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLG5VMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx0VTA9WzAsWzE3LDAsMF0scih6KV0sdVUwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saVUwPXIoUDcpLGZVMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHhVMD1yKHRyKSxvVTA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGFVMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGNVMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxzVTA9cihaMCksdlUwPXIobnIpLGxVMD1bMCxbMTcsMCwwXSxyKHopXSxiVTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxwVTA9cihIeSksbVUwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sX1UwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0seVUwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxoVTA9WzAsWzE3LDAsMF0scih6KV0sZFUwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sa1UwPXIod3MpLHdVMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEVVMD1yKHRyKSxTVTA9cihaMCksZ1UwPXIobnIpLEZVMD1bMCxbMTcsMCwwXSxyKHopXSxUVTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxPVTA9cihYciksSVUwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQVUwPXIodHIpLE5VMD1yKFowKSxDVTA9cihuciksUFUwPVswLFsxNywwLDBdLHIoeildLERVMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxMVTA9WzAsWzE1LDBdLHIoTjApXSxSVTA9cihZciksalUwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sR1UwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxNVTA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxCVTA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scVUwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sVVUwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuSW50ZXJmYWNlLmlkXCIpLEhVMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFhVMD1bMCxbMTcsMCwwXSxyKHopXSxZVTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxWVTA9cihzdikselUwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sS1UwPXIodHIpLFdVMD1yKFowKSxKVTA9cihuciksJFUwPVswLFsxNywwLDBdLHIoeildLFpVMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFFVMD1yKFA3KSxySDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxlSDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxuSDA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLHRIMD1bMCxbMTcsMCwwXSxyKHopXSx1SDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxpSDA9cihXbiksZkgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0seEgwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxvSDA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxhSDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sY0gwPVswLFsxNywwLDBdLHIoeildLHNIMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHZIMD1yKFhyKSxsSDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxiSDA9cih0cikscEgwPXIoWjApLG1IMD1yKG5yKSxfSDA9WzAsWzE3LDAsMF0scih6KV0seUgwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGhIMD1bMCxbMTUsMF0scihOMCldLGRIMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uQm9vbGVhbkJvZHlcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5Cb29sZWFuQm9keUAgXCIpXSxrSDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sd0gwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5OdW1iZXJCb2R5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uTnVtYmVyQm9keUAgXCIpXSxFSDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sU0gwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5TdHJpbmdCb2R5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uU3RyaW5nQm9keUAgXCIpXSxnSDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sRkgwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5TeW1ib2xCb2R5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uU3ltYm9sQm9keUAgXCIpXSxUSDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sT0gwPVswLFsxNSwwXSxyKE4wKV0sSUgwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxBSDA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxOSDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQ0gwPVswLFsxNSwwXSxyKE4wKV0sUEgwPXIoWXIpLERIMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLExIMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5pZFwiKSxSSDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxqSDA9WzAsWzE3LDAsMF0scih6KV0sR0gwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sTUgwPXIoV24pLEJIMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHFIMD1bMCxbMTcsMCwwXSxyKHopXSxVSDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxISDA9cihYciksWEgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWUgwPXIodHIpLFZIMD1yKFowKSx6SDA9cihuciksS0gwPVswLFsxNywwLDBdLHIoeildLFdIMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxKSDA9WzAsWzE1LDBdLHIoTjApXSwkSDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxaSDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxRSDA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLHJYMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGVYMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLG5YMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5TeW1ib2xCb2R5Lm1lbWJlcnNcIiksdFgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sdVgwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0saVgwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxmWDA9WzAsWzE3LDAsMF0scih6KV0seFgwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sb1gwPXIodzQpLGFYMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGNYMD1bMCxbOSwwLDBdLHIoQW4pXSxzWDA9WzAsWzE3LDAsMF0scih6KV0sdlgwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sbFgwPXIoWHIpLGJYMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHBYMD1yKHRyKSxtWDA9cihaMCksX1gwPXIobnIpLHlYMD1bMCxbMTcsMCwwXSxyKHopXSxoWDA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sZFgwPVswLFsxNSwwXSxyKE4wKV0sa1gwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sd1gwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sRVgwPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5TdHJpbmdCb2R5LkRlZmF1bHRlZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRW51bURlY2xhcmF0aW9uLlN0cmluZ0JvZHkuRGVmYXVsdGVkQCBcIildLFNYMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGdYMD1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sRlgwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFRYMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uU3RyaW5nQm9keS5Jbml0aWFsaXplZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRW51bURlY2xhcmF0aW9uLlN0cmluZ0JvZHkuSW5pdGlhbGl6ZWRAIFwiKV0sT1gwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sSVgwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxBWDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTlgwPVswLFsxNSwwXSxyKE4wKV0sQ1gwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUFgwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sRFgwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxMWDA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxSWDA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uU3RyaW5nQm9keS5tZW1iZXJzXCIpLGpYMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEdYMD1bMCxbMTcsMCwwXSxyKHopXSxNWDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxCWDA9cihGaykscVgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVVgwPVswLFs5LDAsMF0scihBbildLEhYMD1bMCxbMTcsMCwwXSxyKHopXSxYWDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxZWDA9cih3NCksVlgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0selgwPVswLFs5LDAsMF0scihBbildLEtYMD1bMCxbMTcsMCwwXSxyKHopXSxXWDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxKWDA9cihYciksJFgwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWlgwPXIodHIpLFFYMD1yKFowKSxyWTA9cihuciksZVkwPVswLFsxNywwLDBdLHIoeildLG5ZMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx0WTA9WzAsWzE1LDBdLHIoTjApXSx1WTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxpWTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxmWTA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLHhZMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG9ZMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGFZMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5OdW1iZXJCb2R5Lm1lbWJlcnNcIiksY1kwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sc1kwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sdlkwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxsWTA9WzAsWzE3LDAsMF0scih6KV0sYlkwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0scFkwPXIoRmspLG1ZMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLF9ZMD1bMCxbOSwwLDBdLHIoQW4pXSx5WTA9WzAsWzE3LDAsMF0scih6KV0saFkwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZFkwPXIodzQpLGtZMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHdZMD1bMCxbOSwwLDBdLHIoQW4pXSxFWTA9WzAsWzE3LDAsMF0scih6KV0sU1kwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZ1kwPXIoWHIpLEZZMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFRZMD1yKHRyKSxPWTA9cihaMCksSVkwPXIobnIpLEFZMD1bMCxbMTcsMCwwXSxyKHopXSxOWTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sQ1kwPVswLFsxNSwwXSxyKE4wKV0sUFkwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sRFkwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sTFkwPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxSWTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxqWTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxHWTA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uQm9vbGVhbkJvZHkubWVtYmVyc1wiKSxNWTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCWTA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxxWTA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLFVZMD1bMCxbMTcsMCwwXSxyKHopXSxIWTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxYWTA9cihGayksWVkwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVlkwPVswLFs5LDAsMF0scihBbildLHpZMD1bMCxbMTcsMCwwXSxyKHopXSxLWTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxXWTA9cih3NCksSlkwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sJFkwPVswLFs5LDAsMF0scihBbildLFpZMD1bMCxbMTcsMCwwXSxyKHopXSxRWTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxyVjA9cihYciksZVYwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sblYwPXIodHIpLHRWMD1yKFowKSx1VjA9cihuciksaVYwPVswLFsxNywwLDBdLHIoeildLGZWMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx4VjA9WzAsWzE1LDBdLHIoTjApXSxvVjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxhVjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5FbnVtRGVjbGFyYXRpb24uSW5pdGlhbGl6ZWRNZW1iZXIuaWRcIiksY1YwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sc1YwPVswLFsxNywwLDBdLHIoeildLHZWMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGxWMD1yKGppKSxiVjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxwVjA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLG1WMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLF9WMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx5VjA9WzAsWzE3LDAsMF0scih6KV0saFYwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGRWMD1bMCxbMTUsMF0scihOMCldLGtWMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sd1YwPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sRVYwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFNWMD1bMCxbMTUsMF0scihOMCldLGdWMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLEZWMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkVudW1EZWNsYXJhdGlvbi5EZWZhdWx0ZWRNZW1iZXIuaWRcIiksVFYwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sT1YwPVswLFsxNywwLDBdLHIoeildLElWMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxBVjA9WzAsWzE1LDBdLHIoTjApXSxOVjA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLENWMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLFBWMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxEVjA9WzAsWzE1LDBdLHIoTjApXSxMVjA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRm9yT2YuTGVmdERlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5Gb3JPZi5MZWZ0RGVjbGFyYXRpb25AIFwiKV0sUlYwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxqVjA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxHVjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sTVYwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEJWMD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5Gb3JPZi5MZWZ0UGF0dGVyblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRm9yT2YuTGVmdFBhdHRlcm5AIFwiKV0scVYwPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFVWMD1bMCxbMTUsMF0scihOMCldLEhWMD1yKFlyKSxYVjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxZVjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5Gb3JPZi5sZWZ0XCIpLFZWMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHpWMD1bMCxbMTcsMCwwXSxyKHopXSxLVjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxXVjA9cihDdSksSlYwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sJFYwPVswLFsxNywwLDBdLHIoeildLFpWMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFFWMD1yKFduKSxyejA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxlejA9WzAsWzE3LDAsMF0scih6KV0sbnowPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdHowPXIoZHgpLHV6MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGl6MD1bMCxbOSwwLDBdLHIoQW4pXSxmejA9WzAsWzE3LDAsMF0scih6KV0seHowPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sb3owPXIoWHIpLGF6MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGN6MD1yKHRyKSxzejA9cihaMCksdnowPXIobnIpLGx6MD1bMCxbMTcsMCwwXSxyKHopXSxiejA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0scHowPVswLFsxNSwwXSxyKE4wKV0sbXowPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuU3RhdGVtZW50LkZvckluLkxlZnREZWNsYXJhdGlvblwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5TdGF0ZW1lbnQuRm9ySW4uTGVmdERlY2xhcmF0aW9uQCBcIildLF96MD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0seXowPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0saHowPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGR6MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxrejA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRm9ySW4uTGVmdFBhdHRlcm5cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuU3RhdGVtZW50LkZvckluLkxlZnRQYXR0ZXJuQCBcIildLHd6MD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxFejA9WzAsWzE1LDBdLHIoTjApXSxTejA9cihZciksZ3owPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sRnowPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRm9ySW4ubGVmdFwiKSxUejA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxPejA9WzAsWzE3LDAsMF0scih6KV0sSXowPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQXowPXIoQ3UpLE56MD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEN6MD1bMCxbMTcsMCwwXSxyKHopXSxQejA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxEejA9cihXbiksTHowPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUnowPVswLFsxNywwLDBdLHIoeildLGp6MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEd6MD1yKFI4KSxNejA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCejA9WzAsWzksMCwwXSxyKEFuKV0scXowPVswLFsxNywwLDBdLHIoeildLFV6MD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEh6MD1yKFhyKSxYejA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxZejA9cih0ciksVnowPXIoWjApLHp6MD1yKG5yKSxLejA9WzAsWzE3LDAsMF0scih6KV0sV3owPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEp6MD1bMCxbMTUsMF0scihOMCldLCR6MD1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlN0YXRlbWVudC5Gb3IuSW5pdERlY2xhcmF0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5Gb3IuSW5pdERlY2xhcmF0aW9uQCBcIildLFp6MD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sUXowPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sckswPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGVLMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxuSzA9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuRm9yLkluaXRFeHByZXNzaW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlN0YXRlbWVudC5Gb3IuSW5pdEV4cHJlc3Npb25AIFwiKV0sdEswPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHVLMD1bMCxbMTUsMF0scihOMCldLGlLMD1yKFlyKSxmSzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx4SzA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5Gb3IuaW5pdFwiKSxvSzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxhSzA9cih0ciksY0swPXIoWjApLHNLMD1yKG5yKSx2SzA9WzAsWzE3LDAsMF0scih6KV0sbEswPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sYkswPXIoU3MpLHBLMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG1LMD1yKHRyKSxfSzA9cihaMCkseUswPXIobnIpLGhLMD1bMCxbMTcsMCwwXSxyKHopXSxkSzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxrSzA9cihmVSksd0swPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sRUswPXIodHIpLFNLMD1yKFowKSxnSzA9cihuciksRkswPVswLFsxNywwLDBdLHIoeildLFRLMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLE9LMD1yKFduKSxJSzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxBSzA9WzAsWzE3LDAsMF0scih6KV0sTkswPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQ0swPXIoWHIpLFBLMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLERLMD1yKHRyKSxMSzA9cihaMCksUkswPXIobnIpLGpLMD1bMCxbMTcsMCwwXSxyKHopXSxHSzA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sTUswPVswLFsxNSwwXSxyKE4wKV0sQkswPXIoWXIpLHFLMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFVLMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkRvV2hpbGUuYm9keVwiKSxISzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxYSzA9WzAsWzE3LDAsMF0scih6KV0sWUswPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sVkswPXIoU3MpLHpLMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEtLMD1bMCxbMTcsMCwwXSxyKHopXSxXSzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxKSzA9cihYciksJEswPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWkswPXIodHIpLFFLMD1yKFowKSxyVzA9cihuciksZVcwPVswLFsxNywwLDBdLHIoeildLG5XMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx0VzA9WzAsWzE1LDBdLHIoTjApXSx1VzA9cihZciksaVcwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sZlcwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuV2hpbGUudGVzdFwiKSx4VzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxvVzA9WzAsWzE3LDAsMF0scih6KV0sYVcwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sY1cwPXIoV24pLHNXMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHZXMD1bMCxbMTcsMCwwXSxyKHopXSxsVzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxiVzA9cihYcikscFcwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbVcwPXIodHIpLF9XMD1yKFowKSx5VzA9cihuciksaFcwPVswLFsxNywwLDBdLHIoeildLGRXMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxrVzA9WzAsWzE1LDBdLHIoTjApXSx3VzA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5WYXJpYWJsZURlY2xhcmF0aW9uLlZhclwiKSxFVzA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5WYXJpYWJsZURlY2xhcmF0aW9uLkxldFwiKSxTVzA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5WYXJpYWJsZURlY2xhcmF0aW9uLkNvbnN0XCIpLGdXMD1bMCxbMTUsMF0scihOMCldLEZXMD1yKFlyKSxUVzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxPVzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxJVzA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5WYXJpYWJsZURlY2xhcmF0aW9uLmRlY2xhcmF0aW9uc1wiKSxBVzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxOVzA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxDVzA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLFBXMD1bMCxbMTcsMCwwXSxyKHopXSxEVzA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxMVzA9cigkYyksUlcwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0salcwPVswLFsxNywwLDBdLHIoeildLEdXMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLE1XMD1yKFhyKSxCVzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxxVzA9cih0ciksVVcwPXIoWjApLEhXMD1yKG5yKSxYVzA9WzAsWzE3LDAsMF0scih6KV0sWVcwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFZXMD1bMCxbMTUsMF0scihOMCldLHpXMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLEtXMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LlZhcmlhYmxlRGVjbGFyYXRpb24uRGVjbGFyYXRvci5pZFwiKSxXVzA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxKVzA9WzAsWzE3LDAsMF0scih6KV0sJFcwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWlcwPXIoamkpLFFXMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHJKMD1yKHRyKSxlSjA9cihaMCksbkowPXIobnIpLHRKMD1bMCxbMTcsMCwwXSxyKHopXSx1SjA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0saUowPVswLFsxNSwwXSxyKE4wKV0sZkowPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSx4SjA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxvSjA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sYUowPVswLFsxNSwwXSxyKE4wKV0sY0owPXIoWXIpLHNKMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHZKMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LlRyeS5ibG9ja1wiKSxsSjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxiSjA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLHBKMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLG1KMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxfSjA9WzAsWzE3LDAsMF0scih6KV0seUowPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saEowPXIoTVUpLGRKMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGtKMD1yKHRyKSx3SjA9cihaMCksRUowPXIobnIpLFNKMD1bMCxbMTcsMCwwXSxyKHopXSxnSjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxGSjA9cihDSCksVEowPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sT0owPXIodHIpLElKMD1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sQUowPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sTkowPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLENKMD1yKFowKSxQSjA9cihuciksREowPVswLFsxNywwLDBdLHIoeildLExKMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFJKMD1yKFhyKSxqSjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxHSjA9cih0ciksTUowPXIoWjApLEJKMD1yKG5yKSxxSjA9WzAsWzE3LDAsMF0scih6KV0sVUowPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEhKMD1bMCxbMTUsMF0scihOMCldLFhKMD1yKFlyKSxZSjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxWSjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5UcnkuQ2F0Y2hDbGF1c2UucGFyYW1cIiksekowPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sS0owPXIodHIpLFdKMD1yKFowKSxKSjA9cihuciksJEowPVswLFsxNywwLDBdLHIoeildLFpKMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFFKMD1yKFduKSxyJDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxlJDA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLG4kMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLHQkMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx1JDA9WzAsWzE3LDAsMF0scih6KV0saSQwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZiQwPXIoWHIpLHgkMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG8kMD1yKHRyKSxhJDA9cihaMCksYyQwPXIobnIpLHMkMD1bMCxbMTcsMCwwXSxyKHopXSx2JDA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sbCQwPVswLFsxNSwwXSxyKE4wKV0sYiQwPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxwJDA9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxtJDA9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sXyQwPVswLFsxNSwwXSxyKE4wKV0seSQwPXIoWXIpLGgkMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGQkMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LlRocm93LmFyZ3VtZW50XCIpLGskMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHckMD1bMCxbMTcsMCwwXSxyKHopXSxFJDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxTJDA9cihYciksZyQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sRiQwPXIodHIpLFQkMD1yKFowKSxPJDA9cihuciksSSQwPVswLFsxNywwLDBdLHIoeildLEEkMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxOJDA9WzAsWzE1LDBdLHIoTjApXSxDJDA9cihZciksUCQwPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sRCQwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuUmV0dXJuLmFyZ3VtZW50XCIpLEwkMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFIkMD1yKHRyKSxqJDA9cihaMCksRyQwPXIobnIpLE0kMD1bMCxbMTcsMCwwXSxyKHopXSxCJDA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxxJDA9cihYciksVSQwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSCQwPXIodHIpLFgkMD1yKFowKSxZJDA9cihuciksViQwPVswLFsxNywwLDBdLHIoeildLHokMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEskMD1yKFwicmV0dXJuX291dFwiKSxXJDA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxKJDA9WzAsWzE3LDAsMF0scih6KV0sJCQwPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFokMD1bMCxbMTUsMF0scihOMCldLFEkMD1yKFlyKSxyWjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxlWjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxuWjA9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5Td2l0Y2guZGlzY3JpbWluYW50XCIpLHRaMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHVaMD1bMCxbMTcsMCwwXSxyKHopXSxpWjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxmWjA9cihRWCkseFowPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sb1owPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sYVowPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxjWjA9WzAsWzE3LDAsMF0scih6KV0sc1owPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdlowPXIoWHIpLGxaMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGJaMD1yKHRyKSxwWjA9cihaMCksbVowPXIobnIpLF9aMD1bMCxbMTcsMCwwXSxyKHopXSx5WjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxoWjA9cihcImV4aGF1c3RpdmVfb3V0XCIpLGRaMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGtaMD1bMCxbMTcsMCwwXSxyKHopXSx3WjA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sRVowPVswLFsxNSwwXSxyKE4wKV0sU1owPXIoWXIpLGdaMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEZaMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFRaMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LlN3aXRjaC5DYXNlLnRlc3RcIiksT1owPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSVowPXIodHIpLEFaMD1yKFowKSxOWjA9cihuciksQ1owPVswLFsxNywwLDBdLHIoeildLFBaMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLERaMD1yKGt2KSxMWjA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxSWjA9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxqWjA9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLEdaMD1bMCxbMTcsMCwwXSxyKHopXSxNWjA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxCWjA9cihYcikscVowPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVVowPXIodHIpLEhaMD1yKFowKSxYWjA9cihuciksWVowPVswLFsxNywwLDBdLHIoeildLFZaMD1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx6WjA9WzAsWzE1LDBdLHIoTjApXSxLWjA9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLFdaMD1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLEpaMD1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSwkWjA9WzAsWzE1LDBdLHIoTjApXSxaWjA9cihZciksUVowPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sclEwPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuT3BhcXVlVHlwZS5pZFwiKSxlUTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxuUTA9WzAsWzE3LDAsMF0scih6KV0sdFEwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdVEwPXIoc3YpLGlRMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGZRMD1yKHRyKSx4UTA9cihaMCksb1EwPXIobnIpLGFRMD1bMCxbMTcsMCwwXSxyKHopXSxjUTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxzUTA9cihtWCksdlEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbFEwPXIodHIpLGJRMD1yKFowKSxwUTA9cihuciksbVEwPVswLFsxNywwLDBdLHIoeildLF9RMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHlRMD1yKFNYKSxoUTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxkUTA9cih0ciksa1EwPXIoWjApLHdRMD1yKG5yKSxFUTA9WzAsWzE3LDAsMF0scih6KV0sU1EwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZ1EwPXIoWHIpLEZRMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFRRMD1yKHRyKSxPUTA9cihaMCksSVEwPXIobnIpLEFRMD1bMCxbMTcsMCwwXSxyKHopXSxOUTA9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sQ1EwPVswLFsxNSwwXSxyKE4wKV0sUFEwPXIoWXIpLERRMD1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLExRMD1yKFwiRmxvd19hc3QuU3RhdGVtZW50LlR5cGVBbGlhcy5pZFwiKSxSUTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxqUTA9WzAsWzE3LDAsMF0scih6KV0sR1EwPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sTVEwPXIoc3YpLEJRMD1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHFRMD1yKHRyKSxVUTA9cihaMCksSFEwPXIobnIpLFhRMD1bMCxbMTcsMCwwXSxyKHopXSxZUTA9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxWUTA9cihDdSkselEwPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sS1EwPVswLFsxNywwLDBdLHIoeildLFdRMD1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEpRMD1yKFhyKSwkUTA9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxaUTA9cih0ciksUVEwPXIoWjApLHIwcj1yKG5yKSxlMHI9WzAsWzE3LDAsMF0scih6KV0sbjByPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHQwcj1bMCxbMTUsMF0scihOMCldLHUwcj1yKFlyKSxpMHI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxmMHI9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5XaXRoLl9vYmplY3RcIikseDByPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbzByPVswLFsxNywwLDBdLHIoeildLGEwcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGMwcj1yKFduKSxzMHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx2MHI9WzAsWzE3LDAsMF0scih6KV0sbDByPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sYjByPXIoWHIpLHAwcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG0wcj1yKHRyKSxfMHI9cihaMCkseTByPXIobnIpLGgwcj1bMCxbMTcsMCwwXSxyKHopXSxkMHI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sazByPVswLFsxNSwwXSxyKE4wKV0sdzByPXIoWXIpLEUwcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFMwcj1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkRlYnVnZ2VyLmNvbW1lbnRzXCIpLGcwcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEYwcj1yKHRyKSxUMHI9cihaMCksTzByPXIobnIpLEkwcj1bMCxbMTcsMCwwXSxyKHopXSxBMHI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sTjByPVswLFsxNSwwXSxyKE4wKV0sQzByPXIoWXIpLFAwcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLEQwcj1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkNvbnRpbnVlLmxhYmVsXCIpLEwwcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFIwcj1yKHRyKSxqMHI9cihaMCksRzByPXIobnIpLE0wcj1bMCxbMTcsMCwwXSxyKHopXSxCMHI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxxMHI9cihYciksVTByPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSDByPXIodHIpLFgwcj1yKFowKSxZMHI9cihuciksVjByPVswLFsxNywwLDBdLHIoeildLHowcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxLMHI9WzAsWzE1LDBdLHIoTjApXSxXMHI9cihZciksSjByPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sJDByPXIoXCJGbG93X2FzdC5TdGF0ZW1lbnQuQnJlYWsubGFiZWxcIiksWjByPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUTByPXIodHIpLHJycj1yKFowKSxlcnI9cihuciksbnJyPVswLFsxNywwLDBdLHIoeildLHRycj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHVycj1yKFhyKSxpcnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxmcnI9cih0cikseHJyPXIoWjApLG9ycj1yKG5yKSxhcnI9WzAsWzE3LDAsMF0scih6KV0sY3JyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHNycj1bMCxbMTUsMF0scihOMCldLHZycj1yKFlyKSxscnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxicnI9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5MYWJlbGVkLmxhYmVsXCIpLHBycj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG1ycj1bMCxbMTcsMCwwXSxyKHopXSxfcnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx5cnI9cihXbiksaHJyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZHJyPVswLFsxNywwLDBdLHIoeildLGtycj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHdycj1yKFhyKSxFcnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxTcnI9cih0ciksZ3JyPXIoWjApLEZycj1yKG5yKSxUcnI9WzAsWzE3LDAsMF0scih6KV0sT3JyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLElycj1bMCxbMTUsMF0scihOMCldLEFycj1yKFlyKSxOcnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxDcnI9cihcIkZsb3dfYXN0LlN0YXRlbWVudC5JZi50ZXN0XCIpLFBycj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLERycj1bMCxbMTcsMCwwXSxyKHopXSxMcnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxScnI9cihrdiksanJyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sR3JyPVswLFsxNywwLDBdLHIoeildLE1ycj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEJycj1yKG0zKSxxcnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxVcnI9cih0ciksSHJyPXIoWjApLFhycj1yKG5yKSxZcnI9WzAsWzE3LDAsMF0scih6KV0sVnJyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0senJyPXIoWHIpLEtycj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFdycj1yKHRyKSxKcnI9cihaMCksJHJyPXIobnIpLFpycj1bMCxbMTcsMCwwXSxyKHopXSxRcnI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0scmVyPVswLFsxNSwwXSxyKE4wKV0sZWVyPXIoWXIpLG5lcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHRlcj1yKFwiRmxvd19hc3QuU3RhdGVtZW50LklmLkFsdGVybmF0ZS5ib2R5XCIpLHVlcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGllcj1bMCxbMTcsMCwwXSxyKHopXSxmZXI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx4ZXI9cihYciksb2VyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sYWVyPXIodHIpLGNlcj1yKFowKSxzZXI9cihuciksdmVyPVswLFsxNywwLDBdLHIoeildLGxlcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxiZXI9WzAsWzE1LDBdLHIoTjApXSxwZXI9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLG1lcj1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLF9lcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx5ZXI9WzAsWzE1LDBdLHIoTjApXSxoZXI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxkZXI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxrZXI9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLHdlcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEVlcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFNlcj1yKFwiRmxvd19hc3QuU3RhdGVtZW50LkJsb2NrLmJvZHlcIiksZ2VyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sRmVyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sVGVyPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxPZXI9WzAsWzE3LDAsMF0scih6KV0sSWVyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQWVyPXIoWHIpLE5lcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLENlcj1yKHRyKSxQZXI9cihaMCksRGVyPXIobnIpLExlcj1bMCxbMTcsMCwwXSxyKHopXSxSZXI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0samVyPVswLFsxNSwwXSxyKE4wKV0sR2VyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5QcmVkaWNhdGUuRGVjbGFyZWRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5QcmVkaWNhdGUuRGVjbGFyZWRAIFwiKV0sTWVyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEJlcj1yKFwiRmxvd19hc3QuVHlwZS5QcmVkaWNhdGUuSW5mZXJyZWRcIikscWVyPVswLFsxNSwwXSxyKE4wKV0sVWVyPXIoWXIpLEhlcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFhlcj1yKFwiRmxvd19hc3QuVHlwZS5QcmVkaWNhdGUua2luZFwiKSxZZXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxWZXI9WzAsWzE3LDAsMF0scih6KV0semVyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sS2VyPXIoWHIpLFdlcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEplcj1yKHRyKSwkZXI9cihaMCksWmVyPXIobnIpLFFlcj1bMCxbMTcsMCwwXSxyKHopXSxybnI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sZW5yPVswLFsxNSwwXSxyKE4wKV0sbm5yPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSx0bnI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSx1bnI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0saW5yPVswLFsxNSwwXSxyKE4wKV0sZm5yPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0seG5yPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sb25yPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxhbnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxjbnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxzbnI9cihcIkZsb3dfYXN0LlR5cGUuVHlwZUFyZ3MuYXJndW1lbnRzXCIpLHZucj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGxucj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGJucj1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0scG5yPVswLFsxNywwLDBdLHIoeildLG1ucj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLF9ucj1yKFhyKSx5bnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxobnI9cih0ciksZG5yPXIoWjApLGtucj1yKG5yKSx3bnI9WzAsWzE3LDAsMF0scih6KV0sRW5yPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFNucj1bMCxbMTUsMF0scihOMCldLGducj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sRm5yPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sVG5yPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLE9ucj1bMCxbMTUsMF0scihOMCldLElucj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEFucj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLE5ucj1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sQ25yPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUG5yPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sRG5yPXIoXCJGbG93X2FzdC5UeXBlLlR5cGVQYXJhbXMucGFyYW1zXCIpLExucj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFJucj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLGpucj1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sR25yPVswLFsxNywwLDBdLHIoeildLE1ucj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEJucj1yKFhyKSxxbnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxVbnI9cih0ciksSG5yPXIoWjApLFhucj1yKG5yKSxZbnI9WzAsWzE3LDAsMF0scih6KV0sVm5yPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHpucj1bMCxbMTUsMF0scihOMCldLEtucj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sV25yPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sSm5yPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLCRucj1bMCxbMTUsMF0scihOMCldLFpucj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLFFucj1yKFwiRmxvd19hc3QuVHlwZS5UeXBlUGFyYW0ubmFtZVwiKSxydHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxldHI9WzAsWzE3LDAsMF0scih6KV0sbnRyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdHRyPXIoRFUpLHV0cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGl0cj1bMCxbMTcsMCwwXSxyKHopXSxmdHI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx4dHI9cihjdSksb3RyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sYXRyPXIodHIpLGN0cj1yKFowKSxzdHI9cihuciksdnRyPVswLFsxNywwLDBdLHIoeildLGx0cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLGJ0cj1yKF9pKSxwdHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxtdHI9cih0ciksX3RyPXIoWjApLHl0cj1yKG5yKSxodHI9WzAsWzE3LDAsMF0scih6KV0sZHRyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLGt0cj1bMCxbMTUsMF0scihOMCldLHd0cj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sRXRyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sU3RyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGd0cj1bMCxbMTUsMF0scihOMCldLEZ0cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuTWlzc2luZ1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLk1pc3NpbmdAIFwiKV0sVHRyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLE90cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuQXZhaWxhYmxlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuQXZhaWxhYmxlQCBcIildLEl0cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxBdHI9WzAsWzE1LDBdLHIoTjApXSxOdHI9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLEN0cj1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLFB0cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxEdHI9WzAsWzE1LDBdLHIoTjApXSxMdHI9cihZciksUnRyPXIoWXIpLGp0cj1yKFlyKSxHdHI9cihZciksTXRyPXIoWXIpLEJ0cj1yKFlyKSxxdHI9cihZciksVXRyPXIoWXIpLEh0cj1yKFlyKSxYdHI9cihZciksWXRyPXIoWXIpLFZ0cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuQW55XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuQW55QCBcIildLHp0cj1yKHRyKSxLdHI9cihaMCksV3RyPXIobnIpLEp0cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSwkdHI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLk1peGVkXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuTWl4ZWRAIFwiKV0sWnRyPXIodHIpLFF0cj1yKFowKSxydXI9cihuciksZXVyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLG51cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuRW1wdHlcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5FbXB0eUAgXCIpXSx0dXI9cih0ciksdXVyPXIoWjApLGl1cj1yKG5yKSxmdXI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0seHVyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5Wb2lkXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuVm9pZEAgXCIpXSxvdXI9cih0ciksYXVyPXIoWjApLGN1cj1yKG5yKSxzdXI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sdnVyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5OdWxsXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuTnVsbEAgXCIpXSxsdXI9cih0ciksYnVyPXIoWjApLHB1cj1yKG5yKSxtdXI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sX3VyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5OdW1iZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5OdW1iZXJAIFwiKV0seXVyPXIodHIpLGh1cj1yKFowKSxkdXI9cihuciksa3VyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHd1cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuQmlnSW50XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuQmlnSW50QCBcIildLEV1cj1yKHRyKSxTdXI9cihaMCksZ3VyPXIobnIpLEZ1cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxUdXI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLlN0cmluZ1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLlN0cmluZ0AgXCIpXSxPdXI9cih0ciksSXVyPXIoWjApLEF1cj1yKG5yKSxOdXI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sQ3VyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5Cb29sZWFuXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuQm9vbGVhbkAgXCIpXSxQdXI9cih0ciksRHVyPXIoWjApLEx1cj1yKG5yKSxSdXI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sanVyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5TeW1ib2xcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5TeW1ib2xAIFwiKV0sR3VyPXIodHIpLE11cj1yKFowKSxCdXI9cihucikscXVyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFV1cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuRXhpc3RzXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuRXhpc3RzQCBcIildLEh1cj1yKHRyKSxYdXI9cihaMCksWXVyPXIobnIpLFZ1cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx6dXI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLk51bGxhYmxlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuTnVsbGFibGVAIFwiKV0sS3VyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFd1cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuRnVuY3Rpb25cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5GdW5jdGlvbkAgXCIpXSxKdXI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sJHVyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5PYmplY3RcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5PYmplY3RAIFwiKV0sWnVyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFF1cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuSW50ZXJmYWNlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuSW50ZXJmYWNlQCBcIildLHI3cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxlN3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLkFycmF5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuQXJyYXlAIFwiKV0sbjdyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHQ3cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuR2VuZXJpY1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLkdlbmVyaWNAIFwiKV0sdTdyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGk3cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuSW5kZXhlZEFjY2Vzc1wiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLkluZGV4ZWRBY2Nlc3NAIFwiKV0sZjdyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHg3cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuT3B0aW9uYWxJbmRleGVkQWNjZXNzXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuT3B0aW9uYWxJbmRleGVkQWNjZXNzQCBcIildLG83cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxhN3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLlVuaW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuVW5pb25AIFwiKV0sYzdyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHM3cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuSW50ZXJzZWN0aW9uXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuSW50ZXJzZWN0aW9uQCBcIildLHY3cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxsN3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLlR5cGVvZlwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLlR5cGVvZkAgXCIpXSxiN3I9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scDdyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5UdXBsZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLlR1cGxlQCBcIildLG03cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxfN3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLlN0cmluZ0xpdGVyYWxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5TdHJpbmdMaXRlcmFsQCBcIildLHk3cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxoN3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLk51bWJlckxpdGVyYWxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5OdW1iZXJMaXRlcmFsQCBcIildLGQ3cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxrN3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLkJpZ0ludExpdGVyYWxcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5CaWdJbnRMaXRlcmFsQCBcIildLHc3cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxFN3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLkJvb2xlYW5MaXRlcmFsXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuQm9vbGVhbkxpdGVyYWxAIFwiKV0sUzdyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGc3cj1bMCxbMTUsMF0scihOMCldLEY3cj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sVDdyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sTzdyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEk3cj1bMCxbMTUsMF0scihOMCldLEE3cj1yKFlyKSxON3I9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxDN3I9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxQN3I9cihcIkZsb3dfYXN0LlR5cGUuSW50ZXJzZWN0aW9uLnR5cGVzXCIpLEQ3cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEw3cj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sUjdyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sajdyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sRzdyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sTTdyPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxCN3I9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scTdyPVswLFsxNywwLDBdLHIoeildLFU3cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEg3cj1yKFhyKSxYN3I9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxZN3I9cih0ciksVjdyPXIoWjApLHo3cj1yKG5yKSxLN3I9WzAsWzE3LDAsMF0scih6KV0sVzdyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEo3cj1bMCxbMTUsMF0scihOMCldLCQ3cj1yKFlyKSxaN3I9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxRN3I9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxyaXI9cihcIkZsb3dfYXN0LlR5cGUuVW5pb24udHlwZXNcIiksZWlyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbmlyPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSx0aXI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSx1aXI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxpaXI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxmaXI9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLHhpcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxvaXI9WzAsWzE3LDAsMF0scih6KV0sYWlyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sY2lyPXIoWHIpLHNpcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHZpcj1yKHRyKSxsaXI9cihaMCksYmlyPXIobnIpLHBpcj1bMCxbMTcsMCwwXSxyKHopXSxtaXI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sX2lyPVswLFsxNSwwXSxyKE4wKV0seWlyPXIoWXIpLGhpcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGRpcj1yKFwiRmxvd19hc3QuVHlwZS5BcnJheS5hcmd1bWVudFwiKSxraXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx3aXI9WzAsWzE3LDAsMF0scih6KV0sRWlyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sU2lyPXIoWHIpLGdpcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEZpcj1yKHRyKSxUaXI9cihaMCksT2lyPXIobnIpLElpcj1bMCxbMTcsMCwwXSxyKHopXSxBaXI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sTmlyPVswLFsxNSwwXSxyKE4wKV0sQ2lyPXIoWXIpLFBpcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLERpcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLExpcj1yKFwiRmxvd19hc3QuVHlwZS5UdXBsZS50eXBlc1wiKSxSaXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxqaXI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxHaXI9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLE1pcj1bMCxbMTcsMCwwXSxyKHopXSxCaXI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxxaXI9cihYciksVWlyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSGlyPXIodHIpLFhpcj1yKFowKSxZaXI9cihuciksVmlyPVswLFsxNywwLDBdLHIoeildLHppcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxLaXI9WzAsWzE1LDBdLHIoTjApXSxXaXI9cihZciksSmlyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sJGlyPXIoXCJGbG93X2FzdC5UeXBlLlR5cGVvZi5hcmd1bWVudFwiKSxaaXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxRaXI9WzAsWzE3LDAsMF0scih6KV0scmZyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZWZyPXIoWHIpLG5mcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHRmcj1yKHRyKSx1ZnI9cihaMCksaWZyPXIobnIpLGZmcj1bMCxbMTcsMCwwXSxyKHopXSx4ZnI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sb2ZyPVswLFsxNSwwXSxyKE4wKV0sYWZyPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxjZnI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxzZnI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sdmZyPVswLFsxNSwwXSxyKE4wKV0sbGZyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sYmZyPXIoXCJGbG93X2FzdC5UeXBlLlR5cGVvZi5UYXJnZXQucXVhbGlmaWNhdGlvblwiKSxwZnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxtZnI9WzAsWzE3LDAsMF0scih6KV0sX2ZyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0seWZyPXIobXQpLGhmcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGRmcj1bMCxbMTcsMCwwXSxyKHopXSxrZnI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sd2ZyPVswLFsxNSwwXSxyKE4wKV0sRWZyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5UeXBlb2YuVGFyZ2V0LlVucXVhbGlmaWVkXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuVHlwZW9mLlRhcmdldC5VbnF1YWxpZmllZEAgXCIpXSxTZnI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sZ2ZyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5UeXBlb2YuVGFyZ2V0LlF1YWxpZmllZFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLlR5cGVvZi5UYXJnZXQuUXVhbGlmaWVkQCBcIildLEZmcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxUZnI9WzAsWzE1LDBdLHIoTjApXSxPZnI9cihZciksSWZyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sQWZyPXIoXCJGbG93X2FzdC5UeXBlLk51bGxhYmxlLmFyZ3VtZW50XCIpLE5mcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLENmcj1bMCxbMTcsMCwwXSxyKHopXSxQZnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxEZnI9cihYciksTGZyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUmZyPXIodHIpLGpmcj1yKFowKSxHZnI9cihuciksTWZyPVswLFsxNywwLDBdLHIoeildLEJmcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxxZnI9WzAsWzE1LDBdLHIoTjApXSxVZnI9cihZciksSGZyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWGZyPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxZZnI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxWZnI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0semZyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sS2ZyPXIoXCJGbG93X2FzdC5UeXBlLkludGVyZmFjZS5ib2R5XCIpLFdmcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEpmcj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sJGZyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sWmZyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFFmcj1bMCxbMTcsMCwwXSxyKHopXSxyeHI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxleHI9cihQNyksbnhyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sdHhyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzEyLDkxLDBdXSxyKFllKV0sdXhyPVswLFsxNyxbMCxyKENlKSwwLDBdLFsxMiw5MyxbMTcsMCwwXV1dLHIoWGUpXSxpeHI9WzAsWzE3LDAsMF0scih6KV0sZnhyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0seHhyPXIoWHIpLG94cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGF4cj1yKHRyKSxjeHI9cihaMCksc3hyPXIobnIpLHZ4cj1bMCxbMTcsMCwwXSxyKHopXSxseHI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sYnhyPVswLFsxNSwwXSxyKE4wKV0scHhyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5PYmplY3QuUHJvcGVydHlcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5PYmplY3QuUHJvcGVydHlAIFwiKV0sbXhyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLF94cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuT2JqZWN0LlNwcmVhZFByb3BlcnR5XCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuT2JqZWN0LlNwcmVhZFByb3BlcnR5QCBcIildLHl4cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxoeHI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5JbmRleGVyXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuT2JqZWN0LkluZGV4ZXJAIFwiKV0sZHhyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGt4cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuT2JqZWN0LkNhbGxQcm9wZXJ0eVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLk9iamVjdC5DYWxsUHJvcGVydHlAIFwiKV0sd3hyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEV4cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuT2JqZWN0LkludGVybmFsU2xvdFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLk9iamVjdC5JbnRlcm5hbFNsb3RAIFwiKV0sU3hyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGd4cj1bMCxbMTUsMF0scihOMCldLEZ4cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFR4cj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLE94cj1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sSXhyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQXhyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sTnhyPXIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5leGFjdFwiKSxDeHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxQeHI9WzAsWzksMCwwXSxyKEFuKV0sRHhyPVswLFsxNywwLDBdLHIoeildLEx4cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFJ4cj1yKEdZKSxqeHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxHeHI9WzAsWzksMCwwXSxyKEFuKV0sTXhyPVswLFsxNywwLDBdLHIoeildLEJ4cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHF4cj1yKEg0KSxVeHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxIeHI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxYeHI9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLFl4cj1bMCxbMTcsMCwwXSxyKHopXSxWeHI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx6eHI9cihYciksS3hyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sV3hyPXIodHIpLEp4cj1yKFowKSwkeHI9cihuciksWnhyPVswLFsxNywwLDBdLHIoeildLFF4cj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxyb3I9WzAsWzE1LDBdLHIoTjApXSxlb3I9cihZciksbm9yPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sdG9yPXIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5JbnRlcm5hbFNsb3QuaWRcIiksdW9yPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0saW9yPVswLFsxNywwLDBdLHIoeildLHhvcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLG9vcj1yKEJuKSxhb3I9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxjb3I9WzAsWzE3LDAsMF0scih6KV0sc29yPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdm9yPXIocXUpLGxvcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGJvcj1bMCxbOSwwLDBdLHIoQW4pXSxwb3I9WzAsWzE3LDAsMF0scih6KV0sbW9yPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sX29yPXIobnUpLHlvcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGhvcj1bMCxbOSwwLDBdLHIoQW4pXSxkb3I9WzAsWzE3LDAsMF0scih6KV0sa29yPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sd29yPXIoblUpLEVvcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFNvcj1bMCxbOSwwLDBdLHIoQW4pXSxnb3I9WzAsWzE3LDAsMF0scih6KV0sRm9yPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sVG9yPXIoWHIpLE9vcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLElvcj1yKHRyKSxBb3I9cihaMCksTm9yPXIobnIpLENvcj1bMCxbMTcsMCwwXSxyKHopXSxQb3I9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sRG9yPVswLFsxNSwwXSxyKE4wKV0sTG9yPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxSb3I9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxqb3I9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sR29yPVswLFsxNSwwXSxyKE4wKV0sTW9yPXIoWXIpLEJvcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHFvcj1yKFwiRmxvd19hc3QuVHlwZS5PYmplY3QuQ2FsbFByb3BlcnR5LnZhbHVlXCIpLFVvcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEhvcj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sWG9yPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sWW9yPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFZvcj1bMCxbMTcsMCwwXSxyKHopXSx6b3I9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxLb3I9cihudSksV29yPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSm9yPVswLFs5LDAsMF0scihBbildLCRvcj1bMCxbMTcsMCwwXSxyKHopXSxab3I9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxRb3I9cihYcikscmFyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZWFyPXIodHIpLG5hcj1yKFowKSx0YXI9cihuciksdWFyPVswLFsxNywwLDBdLHIoeildLGlhcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxmYXI9WzAsWzE1LDBdLHIoTjApXSx4YXI9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLG9hcj1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGFhcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxjYXI9WzAsWzE1LDBdLHIoTjApXSxzYXI9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGxhcj1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGJhcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxwYXI9WzAsWzE1LDBdLHIoTjApXSxtYXI9cihZciksX2FyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0seWFyPXIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5JbmRleGVyLmlkXCIpLGhhcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGRhcj1yKHRyKSxrYXI9cihaMCksd2FyPXIobnIpLEVhcj1bMCxbMTcsMCwwXSxyKHopXSxTYXI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxnYXI9cihpaSksRmFyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVGFyPVswLFsxNywwLDBdLHIoeildLE9hcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLElhcj1yKEJuKSxBYXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxOYXI9WzAsWzE3LDAsMF0scih6KV0sQ2FyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUGFyPXIobnUpLERhcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLExhcj1bMCxbOSwwLDBdLHIoQW4pXSxSYXI9WzAsWzE3LDAsMF0scih6KV0samFyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sR2FyPXIoY3UpLE1hcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEJhcj1yKHRyKSxxYXI9cihaMCksVWFyPXIobnIpLEhhcj1bMCxbMTcsMCwwXSxyKHopXSxYYXI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxZYXI9cihYciksVmFyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0semFyPXIodHIpLEthcj1yKFowKSxXYXI9cihuciksSmFyPVswLFsxNywwLDBdLHIoeildLCRhcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxaYXI9WzAsWzE1LDBdLHIoTjApXSxRYXI9cihZcikscmNyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sZWNyPXIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5TcHJlYWRQcm9wZXJ0eS5hcmd1bWVudFwiKSxuY3I9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx0Y3I9WzAsWzE3LDAsMF0scih6KV0sdWNyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saWNyPXIoWHIpLGZjcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHhjcj1yKHRyKSxvY3I9cihaMCksYWNyPXIobnIpLGNjcj1bMCxbMTcsMCwwXSxyKHopXSxzY3I9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sdmNyPVswLFsxNSwwXSxyKE4wKV0sbGNyPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxiY3I9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxwY3I9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sbWNyPVswLFsxNSwwXSxyKE4wKV0sX2NyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuVHlwZS5PYmplY3QuUHJvcGVydHkuSW5pdFwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GbG93X2FzdC5UeXBlLk9iamVjdC5Qcm9wZXJ0eS5Jbml0QCBcIildLHljcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxoY3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5Qcm9wZXJ0eS5HZXRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5PYmplY3QuUHJvcGVydHkuR2V0QCBcIildLGRjcj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sa2NyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sd2NyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEVjcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxTY3I9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5Qcm9wZXJ0eS5TZXRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5PYmplY3QuUHJvcGVydHkuU2V0QCBcIildLGdjcj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sRmNyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sVGNyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLE9jcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxJY3I9WzAsWzE1LDBdLHIoTjApXSxBY3I9cihZciksTmNyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sQ2NyPXIoXCJGbG93X2FzdC5UeXBlLk9iamVjdC5Qcm9wZXJ0eS5rZXlcIiksUGNyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sRGNyPVswLFsxNywwLDBdLHIoeildLExjcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFJjcj1yKEJuKSxqY3I9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxHY3I9WzAsWzE3LDAsMF0scih6KV0sTWNyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sQmNyPXIocXUpLHFjcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFVjcj1bMCxbOSwwLDBdLHIoQW4pXSxIY3I9WzAsWzE3LDAsMF0scih6KV0sWGNyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWWNyPXIobnUpLFZjcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHpjcj1bMCxbOSwwLDBdLHIoQW4pXSxLY3I9WzAsWzE3LDAsMF0scih6KV0sV2NyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sSmNyPXIoWDMpLCRjcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFpjcj1bMCxbOSwwLDBdLHIoQW4pXSxRY3I9WzAsWzE3LDAsMF0scih6KV0scnNyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZXNyPXIoblUpLG5zcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHRzcj1bMCxbOSwwLDBdLHIoQW4pXSx1c3I9WzAsWzE3LDAsMF0scih6KV0saXNyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZnNyPXIoY3UpLHhzcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG9zcj1yKHRyKSxhc3I9cihaMCksY3NyPXIobnIpLHNzcj1bMCxbMTcsMCwwXSxyKHopXSx2c3I9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxsc3I9cihYciksYnNyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scHNyPXIodHIpLG1zcj1yKFowKSxfc3I9cihucikseXNyPVswLFsxNywwLDBdLHIoeildLGhzcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxkc3I9WzAsWzE1LDBdLHIoTjApXSxrc3I9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLHdzcj1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLEVzcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxTc3I9WzAsWzE1LDBdLHIoTjApXSxnc3I9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxGc3I9cihcIkZsb3dfYXN0LlR5cGUuT3B0aW9uYWxJbmRleGVkQWNjZXNzLmluZGV4ZWRfYWNjZXNzXCIpLFRzcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLE9zcj1bMCxbMTcsMCwwXSxyKHopXSxJc3I9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxBc3I9cihxdSksTnNyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQ3NyPVswLFs5LDAsMF0scihBbildLFBzcj1bMCxbMTcsMCwwXSxyKHopXSxEc3I9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sTHNyPVswLFsxNSwwXSxyKE4wKV0sUnNyPXIoWXIpLGpzcj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLEdzcj1yKFwiRmxvd19hc3QuVHlwZS5JbmRleGVkQWNjZXNzLl9vYmplY3RcIiksTXNyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQnNyPVswLFsxNywwLDBdLHIoeildLHFzcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFVzcj1yKFwiaW5kZXhcIiksSHNyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWHNyPVswLFsxNywwLDBdLHIoeildLFlzcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFZzcj1yKFhyKSx6c3I9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxLc3I9cih0ciksV3NyPXIoWjApLEpzcj1yKG5yKSwkc3I9WzAsWzE3LDAsMF0scih6KV0sWnNyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLFFzcj1bMCxbMTUsMF0scihOMCldLHIxcj1yKFlyKSxlMXI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxuMXI9cihcIkZsb3dfYXN0LlR5cGUuR2VuZXJpYy5pZFwiKSx0MXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx1MXI9WzAsWzE3LDAsMF0scih6KV0saTFyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sZjFyPXIoWjIpLHgxcj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLG8xcj1yKHRyKSxhMXI9cihaMCksYzFyPXIobnIpLHMxcj1bMCxbMTcsMCwwXSxyKHopXSx2MXI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxsMXI9cihYciksYjFyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0scDFyPXIodHIpLG0xcj1yKFowKSxfMXI9cihucikseTFyPVswLFsxNywwLDBdLHIoeildLGgxcj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxkMXI9WzAsWzE1LDBdLHIoTjApXSxrMXI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx3MXI9cihcIkZsb3dfYXN0LlR5cGUuR2VuZXJpYy5JZGVudGlmaWVyLnF1YWxpZmljYXRpb25cIiksRTFyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUzFyPVswLFsxNywwLDBdLHIoeildLGcxcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEYxcj1yKG10KSxUMXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxPMXI9WzAsWzE3LDAsMF0scih6KV0sSTFyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEExcj1bMCxbMTUsMF0scihOMCldLE4xcj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sQzFyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sUDFyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLEQxcj1bMCxbMTUsMF0scihOMCldLEwxcj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZsb3dfYXN0LlR5cGUuR2VuZXJpYy5JZGVudGlmaWVyLlVucXVhbGlmaWVkXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZsb3dfYXN0LlR5cGUuR2VuZXJpYy5JZGVudGlmaWVyLlVucXVhbGlmaWVkQCBcIildLFIxcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxqMXI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5UeXBlLkdlbmVyaWMuSWRlbnRpZmllci5RdWFsaWZpZWRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuVHlwZS5HZW5lcmljLklkZW50aWZpZXIuUXVhbGlmaWVkQCBcIildLEcxcj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxNMXI9WzAsWzE1LDBdLHIoTjApXSxCMXI9cihZcikscTFyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sVTFyPXIoXCJGbG93X2FzdC5UeXBlLkZ1bmN0aW9uLnRwYXJhbXNcIiksSDFyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWDFyPXIodHIpLFkxcj1yKFowKSxWMXI9cihuciksejFyPVswLFsxNywwLDBdLHIoeildLEsxcj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFcxcj1yKER0KSxKMXI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSwkMXI9WzAsWzE3LDAsMF0scih6KV0sWjFyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUTFyPXIoSnUpLHJ2cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGV2cj1bMCxbMTcsMCwwXSxyKHopXSxudnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx0dnI9cihYciksdXZyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0saXZyPXIodHIpLGZ2cj1yKFowKSx4dnI9cihuciksb3ZyPVswLFsxNywwLDBdLHIoeildLGF2cj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxjdnI9WzAsWzE1LDBdLHIoTjApXSxzdnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSx2dnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxsdnI9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLGJ2cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHB2cj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLG12cj1yKFwiRmxvd19hc3QuVHlwZS5GdW5jdGlvbi5QYXJhbXMudGhpc19cIiksX3ZyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0seXZyPXIodHIpLGh2cj1yKFowKSxkdnI9cihuciksa3ZyPVswLFsxNywwLDBdLHIoeildLHd2cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEV2cj1yKER0KSxTdnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxndnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxGdnI9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLFR2cj1bMCxbMTcsMCwwXSxyKHopXSxPdnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxJdnI9cih4ZCksQXZyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sTnZyPXIodHIpLEN2cj1yKFowKSxQdnI9cihuciksRHZyPVswLFsxNywwLDBdLHIoeildLEx2cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFJ2cj1yKFhyKSxqdnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxHdnI9cih0ciksTXZyPXIoWjApLEJ2cj1yKG5yKSxxdnI9WzAsWzE3LDAsMF0scih6KV0sVXZyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEh2cj1bMCxbMTUsMF0scihOMCldLFh2cj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sWXZyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sVnZyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHp2cj1bMCxbMTUsMF0scihOMCldLEt2cj1yKFlyKSxXdnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxKdnI9cihcIkZsb3dfYXN0LlR5cGUuRnVuY3Rpb24uVGhpc1BhcmFtLmFubm90XCIpLCR2cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFp2cj1bMCxbMTcsMCwwXSxyKHopXSxRdnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxyMnI9cihYciksZTJyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbjJyPXIodHIpLHQycj1yKFowKSx1MnI9cihuciksaTJyPVswLFsxNywwLDBdLHIoeildLGYycj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSx4MnI9WzAsWzE1LDBdLHIoTjApXSxvMnI9WzAsWzEyLDQwLFsxOCxbMSxbMCwwLHIoQyldXSwwXV0scihacildLGEycj1bMCxbMTIsNDQsWzE3LFswLHIodiksMSwwXSwwXV0scih6cildLGMycj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxzMnI9WzAsWzE1LDBdLHIoTjApXSx2MnI9cihZciksbDJyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sYjJyPXIoXCJGbG93X2FzdC5UeXBlLkZ1bmN0aW9uLlJlc3RQYXJhbS5hcmd1bWVudFwiKSxwMnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxtMnI9WzAsWzE3LDAsMF0scih6KV0sXzJyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0seTJyPXIoWHIpLGgycj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGQycj1yKHRyKSxrMnI9cihaMCksdzJyPXIobnIpLEUycj1bMCxbMTcsMCwwXSxyKHopXSxTMnI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sZzJyPVswLFsxNSwwXSxyKE4wKV0sRjJyPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxUMnI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxPMnI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sSTJyPVswLFsxNSwwXSxyKE4wKV0sQTJyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sTjJyPXIoXCJGbG93X2FzdC5UeXBlLkZ1bmN0aW9uLlBhcmFtLm5hbWVcIiksQzJyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUDJyPXIodHIpLEQycj1yKFowKSxMMnI9cihuciksUjJyPVswLFsxNywwLDBdLHIoeildLGoycj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEcycj1yKFFjKSxNMnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCMnI9WzAsWzE3LDAsMF0scih6KV0scTJyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sVTJyPXIocXUpLEgycj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFgycj1bMCxbOSwwLDBdLHIoQW4pXSxZMnI9WzAsWzE3LDAsMF0scih6KV0sVjJyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHoycj1bMCxbMTUsMF0scihOMCldLEsycj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sVzJyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sSjJyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLCQycj1bMCxbMTUsMF0scihOMCldLFoycj1yKFlyKSxRMnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxybHI9cihcIkZsb3dfYXN0LkNvbXB1dGVkS2V5LmV4cHJlc3Npb25cIiksZWxyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbmxyPVswLFsxNywwLDBdLHIoeildLHRscj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHVscj1yKFhyKSxpbHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxmbHI9cih0cikseGxyPXIoWjApLG9scj1yKG5yKSxhbHI9WzAsWzE3LDAsMF0scih6KV0sY2xyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLHNscj1bMCxbMTUsMF0scihOMCldLHZscj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sbGxyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sYmxyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLHBscj1bMCxbMTUsMF0scihOMCldLG1scj1yKFlyKSxfbHI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx5bHI9cihcIkZsb3dfYXN0LlZhcmlhbmNlLmtpbmRcIiksaGxyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sZGxyPVswLFsxNywwLDBdLHIoeildLGtscj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLHdscj1yKFhyKSxFbHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxTbHI9cih0ciksZ2xyPXIoWjApLEZscj1yKG5yKSxUbHI9WzAsWzE3LDAsMF0scih6KV0sT2xyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLElscj1bMCxbMTUsMF0scihOMCldLEFscj1yKFwiRmxvd19hc3QuVmFyaWFuY2UuTWludXNcIiksTmxyPXIoXCJGbG93X2FzdC5WYXJpYW5jZS5QbHVzXCIpLENscj1bMCxbMTUsMF0scihOMCldLFBscj1bMCxbMTIsNDAsWzE4LFsxLFswLDAscihDKV1dLDBdXSxyKFpyKV0sRGxyPVswLFsxMiw0NCxbMTcsWzAscih2KSwxLDBdLDBdXSxyKHpyKV0sTGxyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLFJscj1bMCxbMTUsMF0scihOMCldLGpscj1yKFlyKSxHbHI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxNbHI9cihcIkZsb3dfYXN0LkJvb2xlYW5MaXRlcmFsLnZhbHVlXCIpLEJscj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHFscj1bMCxbOSwwLDBdLHIoQW4pXSxVbHI9WzAsWzE3LDAsMF0scih6KV0sSGxyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWGxyPXIoWHIpLFlscj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFZscj1yKHRyKSx6bHI9cihaMCksS2xyPXIobnIpLFdscj1bMCxbMTcsMCwwXSxyKHopXSxKbHI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sJGxyPVswLFsxNSwwXSxyKE4wKV0sWmxyPXIoWXIpLFFscj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHJicj1yKFwiRmxvd19hc3QuQmlnSW50TGl0ZXJhbC5hcHByb3hfdmFsdWVcIiksZWJyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sbmJyPVswLFs4LFswLDAsNV0sMCwwLDBdLHIocjgpXSx0YnI9WzAsWzE3LDAsMF0scih6KV0sdWJyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0saWJyPXIoeDEpLGZicj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHhicj1bMCxbMywwLDBdLHIoVnQpXSxvYnI9WzAsWzE3LDAsMF0scih6KV0sYWJyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sY2JyPXIoWHIpLHNicj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHZicj1yKHRyKSxsYnI9cihaMCksYmJyPXIobnIpLHBicj1bMCxbMTcsMCwwXSxyKHopXSxtYnI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sX2JyPVswLFsxNSwwXSxyKE4wKV0seWJyPXIoWXIpLGhicj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLGRicj1yKFwiRmxvd19hc3QuTnVtYmVyTGl0ZXJhbC52YWx1ZVwiKSxrYnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSx3YnI9WzAsWzgsWzAsMCw1XSwwLDAsMF0scihyOCldLEVicj1bMCxbMTcsMCwwXSxyKHopXSxTYnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxnYnI9cihjNyksRmJyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sVGJyPVswLFszLDAsMF0scihWdCldLE9icj1bMCxbMTcsMCwwXSxyKHopXSxJYnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxBYnI9cihYciksTmJyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sQ2JyPXIodHIpLFBicj1yKFowKSxEYnI9cihuciksTGJyPVswLFsxNywwLDBdLHIoeildLFJicj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxqYnI9WzAsWzE1LDBdLHIoTjApXSxHYnI9cihZciksTWJyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sQmJyPXIoXCJGbG93X2FzdC5TdHJpbmdMaXRlcmFsLnZhbHVlXCIpLHFicj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFVicj1bMCxbMywwLDBdLHIoVnQpXSxIYnI9WzAsWzE3LDAsMF0scih6KV0sWGJyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sWWJyPXIoYzcpLFZicj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLHpicj1bMCxbMywwLDBdLHIoVnQpXSxLYnI9WzAsWzE3LDAsMF0scih6KV0sV2JyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sSmJyPXIoWHIpLCRicj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFpicj1yKHRyKSxRYnI9cihaMCkscjRyPXIobnIpLGU0cj1bMCxbMTcsMCwwXSxyKHopXSxuNHI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sdDRyPVswLFsxNSwwXSxyKE4wKV0sdTRyPXIoXCJGbG93X2FzdC5MaXRlcmFsLk51bGxcIiksaTRyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuTGl0ZXJhbC5TdHJpbmdcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuTGl0ZXJhbC5TdHJpbmdAIFwiKV0sZjRyPVswLFszLDAsMF0scihWdCldLHg0cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxvNHI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGbG93X2FzdC5MaXRlcmFsLkJvb2xlYW5cIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuTGl0ZXJhbC5Cb29sZWFuQCBcIildLGE0cj1bMCxbOSwwLDBdLHIoQW4pXSxjNHI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sczRyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuTGl0ZXJhbC5OdW1iZXJcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuTGl0ZXJhbC5OdW1iZXJAIFwiKV0sdjRyPVswLFs4LFswLDAsNV0sMCwwLDBdLHIocjgpXSxsNHI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sYjRyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuTGl0ZXJhbC5CaWdJbnRcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuTGl0ZXJhbC5CaWdJbnRAIFwiKV0scDRyPVswLFs4LFswLDAsNV0sMCwwLDBdLHIocjgpXSxtNHI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sXzRyPVswLFsxMiw0MCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKFwiRmxvd19hc3QuTGl0ZXJhbC5SZWdFeHBcIiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFwiKEBbPDI+Rmxvd19hc3QuTGl0ZXJhbC5SZWdFeHBAIFwiKV0seTRyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGg0cj1bMCxbMTUsMF0scihOMCldLGQ0cj1yKFlyKSxrNHI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSx3NHI9cihcIkZsb3dfYXN0LkxpdGVyYWwudmFsdWVcIiksRTRyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sUzRyPVswLFsxNywwLDBdLHIoeildLGc0cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEY0cj1yKGM3KSxUNHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxPNHI9WzAsWzMsMCwwXSxyKFZ0KV0sSTRyPVswLFsxNywwLDBdLHIoeildLEE0cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLE40cj1yKFhyKSxDNHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxQNHI9cih0ciksRDRyPXIoWjApLEw0cj1yKG5yKSxSNHI9WzAsWzE3LDAsMF0scih6KV0sajRyPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLEc0cj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLE00cj1yKFwiRmxvd19hc3QuTGl0ZXJhbC5SZWdFeHAucGF0dGVyblwiKSxCNHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxxNHI9WzAsWzMsMCwwXSxyKFZ0KV0sVTRyPVswLFsxNywwLDBdLHIoeildLEg0cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFg0cj1yKGpYKSxZNHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxWNHI9WzAsWzMsMCwwXSxyKFZ0KV0sejRyPVswLFsxNywwLDBdLHIoeildLEs0cj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxXNHI9WzAsWzE1LDBdLHIoTjApXSxKNHI9WzAsWzE1LDBdLHIoTjApXSwkNHI9cihZciksWjRyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sUTRyPXIoXCJGbG93X2FzdC5Qcml2YXRlTmFtZS5uYW1lXCIpLHI4cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGU4cj1bMCxbMywwLDBdLHIoVnQpXSxuOHI9WzAsWzE3LDAsMF0scih6KV0sdDhyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sdThyPXIoWHIpLGk4cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGY4cj1yKHRyKSx4OHI9cihaMCksbzhyPXIobnIpLGE4cj1bMCxbMTcsMCwwXSxyKHopXSxjOHI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sczhyPVswLFsxNSwwXSxyKE4wKV0sdjhyPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxsOHI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxiOHI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0scDhyPVswLFsxNSwwXSxyKE4wKV0sbThyPXIoWXIpLF84cj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMSxyKGtyKSwwXV0scihkcildLHk4cj1yKFwiRmxvd19hc3QuSWRlbnRpZmllci5uYW1lXCIpLGg4cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGQ4cj1bMCxbMywwLDBdLHIoVnQpXSxrOHI9WzAsWzE3LDAsMF0scih6KV0sdzhyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sRThyPXIoWHIpLFM4cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLGc4cj1yKHRyKSxGOHI9cihaMCksVDhyPXIobnIpLE84cj1bMCxbMTcsMCwwXSxyKHopXSxJOHI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sQThyPVswLFsxNSwwXSxyKE4wKV0sTjhyPVswLFsxMiw0MCxbMTgsWzEsWzAsMCxyKEMpXV0sMF1dLHIoWnIpXSxDOHI9WzAsWzEyLDQ0LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoenIpXSxQOHI9WzAsWzE3LDAsWzEyLDQxLDBdXSxyKGQwKV0sRDhyPVswLFsxNSwwXSxyKE4wKV0sTDhyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sUjhyPVswLFsxMiw1OSxbMTcsWzAscih2KSwxLDBdLDBdXSxyKGEwKV0sajhyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0sRzhyPXIoXCJGbG93X2FzdC5TeW50YXgubGVhZGluZ1wiKSxNOHI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxCOHI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsOTEsMF1dLHIoWWUpXSxxOHI9WzAsWzE3LFswLHIoQ2UpLDAsMF0sWzEyLDkzLFsxNywwLDBdXV0scihYZSldLFU4cj1bMCxbMTcsMCwwXSxyKHopXSxIOHI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxYOHI9cihcInRyYWlsaW5nXCIpLFk4cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLFY4cj1bMCxbMTgsWzEsWzAsWzExLHIoaCksMF0scihoKV1dLFsxMiw5MSwwXV0scihZZSldLHo4cj1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsOTMsWzE3LDAsMF1dXSxyKFhlKV0sSzhyPVswLFsxNywwLDBdLHIoeildLFc4cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEo4cj1yKFwiaW50ZXJuYWxcIiksJDhyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sWjhyPVswLFsxNywwLDBdLHIoeildLFE4cj1bMCxbMTcsWzAscih2KSwxLDBdLFsxMixicixbMTcsMCwwXV1dLHIod3IpXSxyM3I9WzAsWzAsMCwwXV0sZTNyPVswLHIoU3UpLDIxLDJdLG4zcj1bMCxbMCwwLDAsMCwwXV0sdDNyPVswLHIoU3UpLDMyLDJdLHUzcj1bMCxbMCwwLDAsMCwwXV0saTNyPVswLHIoU3UpLDQzLDJdLGYzcj1bMCxbMCxbMCxbMCwwLDBdXSwwLDAsMCwwXV0seDNyPVswLHIoU3UpLDcwLDJdLG8zcj1bMCxbMCwwLDBdXSxhM3I9WzAscihTdSksODAsMl0sYzNyPVswLFswLDAsMF1dLHMzcj1bMCxyKFN1KSw5MCwyXSx2M3I9WzAsWzAsMCwwXV0sbDNyPVswLHIoU3UpLFI3LDJdLGIzcj1bMCxbMCwwLDBdXSxwM3I9WzAscihTdSksWHQsMl0sbTNyPVswLFswLDAsMCwwLDAsMCwwXV0sXzNyPVswLHIoU3UpLGJyLDJdLHkzcj1bMCxbMCwwLDAsMCwwXV0saDNyPVswLHIoU3UpLEtILDJdLGQzcj1bMCxbMCxbMCxbMCxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMCwwLDBdXSwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMCwwLDBdXSwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSwwLDAsMCwwLDAsMCwwLDAsWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMCwwLDBdXV1dLGszcj1bMCxyKFN1KSw0ODUsMl0sdzNyPVswLFswLFswLFswLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDBdXSwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwXV0sMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMF1dLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMF1dLFswLFswLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSwwLDAsMCwwLDAsMF1dLEUzcj1bMCxyKFN1KSxCWCwyXSxTM3I9WzAsWzAsWzAsWzAsWzAsWzAsMCwwLDAsMF1dLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDAsMCwwXV0sMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sMCwwLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sMCwwLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMF1dLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLDAsMCwwLDBdXSxnM3I9WzAscihTdSksMTQ2MCwyXSxGM3I9WzAsWzAsWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwLDAsMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDAsMCwwXV0sMCwwLFswLFswLDAsMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMF1dLDAsMCwwLDAsMCwwLDAsMF1dLFQzcj1bMCxyKFN1KSwxNjA0LDJdLE8zcj1bMCxbMCxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMF1dLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSwwLDAsMCwwXV0sSTNyPVswLHIoU3UpLDE2ODksMl0sQTNyPVswLFswLDAsMCwwLDAsMCwwXV0sTjNyPVswLHIoU3UpLDE3MDUsMl0sQzNyPVswLFswLFswLFswLDAsMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sMCwwXV0sUDNyPVswLHIoU3UpLDE4MjgsMl0sRDNyPVswLFswLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSwwLDAsMCwwXV0sTDNyPVswLHIoU3UpLDE4OTUsMl0sUjNyPVswLFswLDAsMCwwLDBdXSxqM3I9WzAscihTdSksMTkwNywyXSxHM3I9WzAsWzAsMCwwXV0sTTNyPVswLFswLDAsMCwwLDBdXSxCM3I9WzAsWzAsMCwwLDAsMF1dLHEzcj1bMCxbMCxbMCxbMCwwLDBdXSwwLDAsMCwwXV0sVTNyPVswLFswLDAsMF1dLEgzcj1bMCxbMCwwLDBdXSxYM3I9WzAsWzAsMCwwXV0sWTNyPVswLFswLDAsMF1dLFYzcj1bMCxbMCwwLDAsMCwwLDAsMF1dLHozcj1bMCxbMCwwLDAsMCwwXV0sSzNyPVswLFswLFswLFswLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwLDAsMF1dLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwLDAsMF1dLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLDAsMCwwLDAsMCwwLDAsMCxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMF1dXV0sVzNyPVswLFswLFswLFswLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDBdXSwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwXV0sMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMF1dLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMF1dLFswLFswLDAsMF1dLFswLFswLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSwwLDAsMCwwLDAsMF1dLEozcj1bMCxbMCxbMCxbMCxbMCxbMCwwLDAsMCwwXV0sMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMCwwLDBdXSwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSwwLDAsWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwXV0sMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sWzAsWzAsMCwwXV0sMCwwLDAsMF1dLCQzcj1bMCxbMCxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMCwwLDBdXSwwLDAsWzAsWzAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwXV0sMCwwLDAsMCwwLDAsMCwwXV0sWjNyPVswLFswLFswLFswLDAsMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwLDAsMF1dLDAsMCwwLDBdXSxbMCxbMCxbMCxbMCwwLDAsMCwwXV0sMCwwLDAsMF1dLFswLFswLDAsMF1dLDAsMCwwLDBdXSxRM3I9WzAsWzAsMCwwLDAsMCwwLDBdXSxyNnI9WzAsWzAsWzAsWzAsMCwwLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsWzAsWzAsMCwwLDAsMF1dLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSwwLDBdXSxlNnI9WzAsWzAsWzAsWzAsMCwwLDAsMF1dLFswLFswLDAsMCwwLDBdXSxbMCxbMCwwLDAsMCwwXV0sWzAsWzAsMCwwLDAsMF1dLDAsMCwwLDBdXSxuNnI9WzAsWzAsMCwwLDAsMF1dLHQ2cj1bMCwxXSx1NnI9WzAsMF0saTZyPVswLDJdLGY2cj1bMCwwXSx4NnI9WzAsMV0sbzZyPVswLDFdLGE2cj1bMCwxXSxjNnI9WzAsMV0sczZyPVswLDFdLHY2cj1bMCwwLDBdLGw2cj1bMCwwLDBdLGI2cj1bMCxyKEV1KSxyKFl4KSxyKHRvKSxyKE9vKSxyKGN1KSxyKGRjKSxyKHV4KSxyKG9jKSxyKEdmKSxyKFRvKSxyKFBvKSxyKGVjKSxyKE5vKSxyKHdmKSxyKEphKSxyKHVvKSxyKEN4KSxyKEZmKSxyKGF4KSxyKE9hKSxyKHFmKSxyKFJvKSxyKEthKSxyKFh4KSxyKEp4KSxyKF94KSxyKHhvKSxyKGZhKSxyKG5vKSxyKEY3KSxyKElvKSxyKFBmKSxyKHdvKSxyKCR4KSxyKEpmKSxyKFVvKSxyKHlvKSxyKEQ3KSxyKHljKSxyKE5hKSxyKFN4KSxyKFZ4KSxyKF9mKSxyKFNjKSxyKE1mKSxyKGN4KSxyKEp1KSxyKHB4KSxyKHBhKSxyKERlKSxyKHI3KSxyKCRhKSxyKFlvKSxyKHdhKSxyKFp4KSxyKHNjKSxyKGFhKSxyKHRhKSxyKENmKSxyKEJvKSxyKFlmKSxyKFdmKSxyKGtjKSxyKHZjKSxyKHZhKSxyKGJmKSxyKHpvKSxyKFpmKSxyKHJ4KSxyKG1pKSxyKFFvKSxyKE1vKSxyKGRmKSxyKFZhKSxyKFhvKSxyKGxjKSxyKGZjKSxyKFpvKSxyKG9vKSxyKGl4KSxyKE5mKSxyKHVmKSxyKFhmKSxyKGV4KSxyKG1hKSxyKGRhKSxyKEtmKSxyKG5jKSxyKGdmKSxyKEx4KSxyKHFvKSxyKGJ4KSxyKHlmKSxyKE9mKSxyKG1jKSxyKHhyKSxyKF9jKSxyKFd4KSxyKFV4KSxyKFBhKSxyKHp4KSxyKG54KSxyKER4KSxyKGhhKSxyKFB4KSxyKGhjKSxyKHZ4KSxyKEpvKSxyKHdjKSxyKERhKSxyKEtvKSxyKHJjKSxyKHJmKSxyKE54KSxyKGFvKSxyKE94KSxyKGlvKSxyKGpvKSxyKEFvKSxyKHBjKSxyKEF4KSxyKGZmKSxyKG9mKSxyKFFmKSxyKFdvKSxyKHlhKSxyKGFjKSxyKFJmKSxyKHphKSxyKHJvKSxyKGtvKSxyKGFmKSxyKGU3KSxyKEFhKSxyKEZ4KSxyKENhKSxyKEh4KSxyKGJvKSxyKEVjKSxyKFV1KSxyKFlhKSxyKGlhKSxyKHBmKSxyKHlpKSxyKFZmKSxyKGJjKSxyKFdhKSxyKEc3KSxyKG14KSxyKGJhKSxyKHZmKSxyKEJhKSxyKGt4KSxyKEdvKSxyKF9hKSxyKHR4KSxyKG5mKSxyKExmKSxyKGdjKSxyKEl4KSxyKGh4KSxyKElhKSxyKFRjKSxyKGxvKSxyKFNvKSxyKGxpKSxyKGljKSxyKHl4KSxyKExhKSxyKFhhKSxyKEZjKSxyKE14KSxyKGthKSxyKEJmKSxyKFNmKSxyKGVvKSxyKFR4KSxyKE51KSxyKGVhKSxyKHVhKSxyKFFhKSxyKHNmKSxyKFNhKSxyKHZvKSxyKEFmKSxyKGp4KSxyKFphKSxyKElmKSxyKGpmKSxyKEJ4KSxyKEhvKSxyKHF4KSxyKHNhKSxyKHJhKSxyKGxhKSxyKHY3KSxyKGhvKSxyKFJhKSxyKHd4KSxyKEZvKSxyKHNvKSxyKG5hKSxyKHpmKSxyKGphKSxyKFRhKSxyKHh4KSxyKEk3KSxyKE43KSxyKCRvKSxyKHhhKSxyKCRmKSxyKF9vKSxyKGhmKSxyKGdvKSxyKGZ4KSxyKGd4KSxyKFVmKSxyKEdhKSxyKGtmKSxyKHRmKSxyKGdhKSxyKERmKSxyKHRjKSxyKG1mKSxyKHFhKSxyKG9hKSxyKFVhKSxyKEVmKSxyKFFpKSxyKHN4KSxyKHBvKSxyKGx4KSxyKFRmKSxyKEE3KSxyKEhhKSxyKFRuKSxyKEd4KSxyKHhmKSxyKGxmKSxyKEt4KSxyKEhmKSxyKFZvKSxyKGNhKSxyKEVhKSxyKGNvKSxyKFJ4KSxyKFc0KV0scDZyPVswLHIoX2YpLHIoUWYpLHIoX2EpLHIoVmYpLHIoVGYpLHIoWWYpLHIocW8pLHIoZXgpLHIoTngpLHIoa28pLHIoS2EpLHIoRDcpLHIoWG8pLHIoZWEpLHIodGMpLHIocGMpLHIoYngpLHIoZmYpLHIocmEpLHIoQngpLHIoWXgpLHIobGkpLHIoaGMpLHIoTHgpLHIoV2EpLHIoc2EpLHIoT2YpLHIoeWkpLHIoT28pLHIoTXgpLHIodGEpLHIoemYpLHIoc3gpLHIodHgpLHIoUWkpLHIoam8pLHIoQWYpLHIoYmEpLHIodmMpLHIoaWMpLHIoeW8pLHIoS3gpLHIobWEpLHIoaWEpLHIoU3gpLHIobGEpLHIoUHgpLHIoeWYpLHIodGYpLHIoZ28pLHIoUW8pLHIod2EpLHIoWGYpLHIoWW8pLHIoS28pLHIoVWYpLHIoZmMpLHIocjcpLHIoTmYpLHIoQmEpLHIobWMpLHIoYW8pLHIoQW8pLHIoYmMpLHIobngpLHIoJG8pLHIoSngpLHIoSWYpLHIodWYpLHIocmMpLHIoJGYpLHIoRHgpLHIoR28pLHIoYWEpLHIoRWEpLHIoc28pLHIoU2EpLHIoV3gpLHIocngpLHIoY28pLHIocG8pLHIoY3gpLHIoY3UpLHIoJGEpLHIodW8pLHIoWWEpLHIobGYpLHIoU28pLHIobm8pLHIoYWMpLHIoRGYpLHIobmMpLHIoVW8pLHIodjcpLHIoWGEpLHIoWHgpLHIoRXUpLHIoZmEpLHIoVGEpLHIoZWMpLHIoem8pLHIocHgpLHIoUG8pLHIoaGYpLHIoamEpLHIob2MpLHIoQXgpLHIoWngpLHIocm8pLHIoSG8pLHIoU2YpLHIobGMpLHIodWEpLHIoaGEpLHIoYmYpLHIoa2EpLHIoRmYpLHIoeG8pLHIoZGMpLHIoU2MpLHIoQ3gpLHIoVG8pLHIoR2EpLHIoeXgpLHIoZngpLHIoUGEpLHIoa3gpLHIoR2YpLHIoX28pLHIoZ2YpLHIoSm8pLHIoSGYpLHIoVXgpLHIob2EpLHIoZ2EpLHIoQWEpLHIodmEpLHIoTW8pLHIod2MpLHIoX2MpLHIoVXUpLHIoSnUpLHIoSGEpLHIoSmEpLHIoYXgpLHIoeWMpLHIoa2MpLHIoRjcpLHIoSTcpLHIocGYpLHIoVmEpLHIoVHgpLHIob2YpLHIobWkpLHIoSXgpLHIocXgpLHIoRngpLHIoZ3gpLHIobmYpLHIoengpLHIoV28pLHIoRzcpLHIodmYpLHIod2YpLHIoamYpLHIoRGUpLHIoVGMpLHIoYm8pLHIoWmEpLHIoc2YpLHIoS2YpLHIoTWYpLHIoQ2EpLHIob28pLHIoQ2YpLHIoX3gpLHIoaXgpLHIoT2EpLHIobHgpLHIoRm8pLHIoVWEpLHIobmEpLHIoR3gpLHIoUmYpLHIoSmYpLHIobXgpLHIocGEpLHIoRWMpLHIocWEpLHIoZGEpLHIoaW8pLHIoa2YpLHIoYWYpLHIoaG8pLHIoUm8pLHIoUngpLHIodXgpLHIoRWYpLHIocWYpLHIoUmEpLHIoT3gpLHIoeWEpLHIoeGEpLHIodngpLHIoQm8pLHIoemEpLHIoQmYpLHIoRGEpLHIod28pLHIoVm8pLHIoV2YpLHIoeGYpLHIoTnUpLHIoWmYpLHIoZW8pLHIoaHgpLHIoSWEpLHIoVngpLHIoTjcpLHIoTGYpLHIoc2MpLHIodm8pLHIod3gpLHIoUGYpLHIoJHgpLHIoTmEpLHIobG8pLHIoUWEpLHIoTm8pLHIoTGEpLHIoZGYpLHIoVG4pLHIoSHgpLHIobWYpLHIocmYpLHIoWm8pLHIoZ2MpLHIoeHgpLHIoangpLHIoQTcpLHIoY2EpLHIoZTcpLHIodG8pLHIoRmMpLHIoSW8pLHIoeHIpXSxtNnI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGaWxlX2tleS5MaWJGaWxlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZpbGVfa2V5LkxpYkZpbGVAIFwiKV0sXzZyPVswLFszLDAsMF0scihWdCldLHk2cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxoNnI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGaWxlX2tleS5Tb3VyY2VGaWxlXCIpLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihcIihAWzwyPkZpbGVfa2V5LlNvdXJjZUZpbGVAIFwiKV0sZDZyPVswLFszLDAsMF0scihWdCldLGs2cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSx3NnI9WzAsWzEyLDQwLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoXCJGaWxlX2tleS5Kc29uRmlsZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GaWxlX2tleS5Kc29uRmlsZUAgXCIpXSxFNnI9WzAsWzMsMCwwXSxyKFZ0KV0sUzZyPVswLFsxNywwLFsxMiw0MSwwXV0scihkMCldLGc2cj1bMCxbMTIsNDAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihcIkZpbGVfa2V5LlJlc291cmNlRmlsZVwiKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoXCIoQFs8Mj5GaWxlX2tleS5SZXNvdXJjZUZpbGVAIFwiKV0sRjZyPVswLFszLDAsMF0scihWdCldLFQ2cj1bMCxbMTcsMCxbMTIsNDEsMF1dLHIoZDApXSxPNnI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTEscihrciksMF1dLHIoZHIpXSxJNnI9cihcIkxvYy5saW5lXCIpLEE2cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLE42cj1bMCxbNCwwLDAsMCwwXSxyKE4yKV0sQzZyPVswLFsxNywwLDBdLHIoeildLFA2cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLEQ2cj1yKEkyKSxMNnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxSNnI9WzAsWzQsMCwwLDAsMF0scihOMildLGo2cj1bMCxbMTcsMCwwXSxyKHopXSxHNnI9WzAsWzE3LFswLHIodiksMSwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKHdyKV0sTTZyPVswLFsxNSwwXSxyKE4wKV0sQjZyPVswLFsxOCxbMSxbMCxbMTEscihoKSwwXSxyKGgpXV0sWzExLHIoa3IpLDBdXSxyKGRyKV0scTZyPXIoXCJMb2Muc291cmNlXCIpLFU2cj1bMCxbMTgsWzEsWzAsMCxyKEMpXV0sWzIsMCxbMTEscihKKSxbMTcsWzAscih2KSwxLDBdLDBdXV1dLHIoVyldLEg2cj1yKHRyKSxYNnI9cihaMCksWTZyPXIobnIpLFY2cj1bMCxbMTcsMCwwXSxyKHopXSx6NnI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxLNnI9cihnNyksVzZyPVswLFsxOCxbMSxbMCwwLHIoQyldXSxbMiwwLFsxMSxyKEopLFsxNyxbMCxyKHYpLDEsMF0sMF1dXV0scihXKV0sSjZyPVswLFsxNywwLDBdLHIoeildLCQ2cj1bMCxbMTIsNTksWzE3LFswLHIodiksMSwwXSwwXV0scihhMCldLFo2cj1yKFwiX2VuZFwiKSxRNnI9WzAsWzE4LFsxLFswLDAscihDKV1dLFsyLDAsWzExLHIoSiksWzE3LFswLHIodiksMSwwXSwwXV1dXSxyKFcpXSxycHI9WzAsWzE3LDAsMF0scih6KV0sZXByPVswLFsxNyxbMCxyKHYpLDEsMF0sWzEyLGJyLFsxNywwLDBdXV0scih3cildLG5wcj1bMCxyKFJ4KSxyKGNvKSxyKEVhKSxyKGNhKSxyKFZvKSxyKEhmKSxyKEt4KSxyKGxmKSxyKHhmKSxyKEd4KSxyKFRuKSxyKEhhKSxyKEE3KSxyKFRmKSxyKGx4KSxyKHBvKSxyKHN4KSxyKFFpKSxyKEVmKSxyKFVhKSxyKG9hKSxyKHFhKSxyKG1mKSxyKHRjKSxyKERmKSxyKGdhKSxyKHRmKSxyKGtmKSxyKEdhKSxyKFVmKSxyKGd4KSxyKGZ4KSxyKGdvKSxyKGhmKSxyKF9vKSxyKCRmKSxyKHhhKSxyKCRvKSxyKE43KSxyKEk3KSxyKHh4KSxyKFRhKSxyKGphKSxyKHpmKSxyKG5hKSxyKHNvKSxyKEZvKSxyKHd4KSxyKFJhKSxyKGhvKSxyKHY3KSxyKGxhKSxyKHJhKSxyKHNhKSxyKHF4KSxyKEhvKSxyKEJ4KSxyKGpmKSxyKElmKSxyKFphKSxyKGp4KSxyKEFmKSxyKHZvKSxyKFNhKSxyKHNmKSxyKFFhKSxyKHVhKSxyKGVhKSxyKE51KSxyKFR4KSxyKGVvKSxyKFNmKSxyKEJmKSxyKGthKSxyKE14KSxyKEZjKSxyKFhhKSxyKExhKSxyKHl4KSxyKGljKSxyKGxpKSxyKFNvKSxyKGxvKSxyKFRjKSxyKElhKSxyKGh4KSxyKEl4KSxyKGdjKSxyKExmKSxyKG5mKSxyKHR4KSxyKF9hKSxyKEdvKSxyKGt4KSxyKEJhKSxyKHZmKSxyKGJhKSxyKG14KSxyKEc3KSxyKFdhKSxyKGJjKSxyKFZmKSxyKHlpKSxyKHBmKSxyKGlhKSxyKFlhKSxyKFV1KSxyKEVjKSxyKGJvKSxyKEh4KSxyKENhKSxyKEZ4KSxyKEFhKSxyKGU3KSxyKGFmKSxyKGtvKSxyKHJvKSxyKHphKSxyKFJmKSxyKGFjKSxyKHlhKSxyKFdvKSxyKFFmKSxyKG9mKSxyKGZmKSxyKEF4KSxyKHBjKSxyKEFvKSxyKGpvKSxyKGlvKSxyKE94KSxyKGFvKSxyKE54KSxyKHJmKSxyKHJjKSxyKEtvKSxyKERhKSxyKHdjKSxyKEpvKSxyKHZ4KSxyKGhjKSxyKFB4KSxyKGhhKSxyKER4KSxyKG54KSxyKHp4KSxyKFBhKSxyKFV4KSxyKFd4KSxyKF9jKSxyKHhyKSxyKG1jKSxyKE9mKSxyKHlmKSxyKGJ4KSxyKHFvKSxyKEx4KSxyKGdmKSxyKG5jKSxyKEtmKSxyKGRhKSxyKG1hKSxyKGV4KSxyKFhmKSxyKHVmKSxyKE5mKSxyKGl4KSxyKG9vKSxyKFpvKSxyKGZjKSxyKGxjKSxyKFhvKSxyKFZhKSxyKGRmKSxyKE1vKSxyKFFvKSxyKG1pKSxyKHJ4KSxyKFpmKSxyKHpvKSxyKGJmKSxyKHZhKSxyKHZjKSxyKGtjKSxyKFdmKSxyKFlmKSxyKEJvKSxyKENmKSxyKHRhKSxyKGFhKSxyKHNjKSxyKFp4KSxyKHdhKSxyKFlvKSxyKCRhKSxyKHI3KSxyKERlKSxyKHBhKSxyKHB4KSxyKEp1KSxyKGN4KSxyKE1mKSxyKFNjKSxyKF9mKSxyKFZ4KSxyKFN4KSxyKE5hKSxyKHljKSxyKEQ3KSxyKHlvKSxyKFVvKSxyKEpmKSxyKCR4KSxyKHdvKSxyKFBmKSxyKElvKSxyKEY3KSxyKG5vKSxyKGZhKSxyKHhvKSxyKF94KSxyKEp4KSxyKFh4KSxyKEthKSxyKFJvKSxyKHFmKSxyKE9hKSxyKGF4KSxyKEZmKSxyKEN4KSxyKHVvKSxyKEphKSxyKHdmKSxyKE5vKSxyKGVjKSxyKFBvKSxyKFRvKSxyKEdmKSxyKG9jKSxyKHV4KSxyKGRjKSxyKGN1KSxyKE9vKSxyKHRvKSxyKFl4KSxyKEV1KV0sdHByPVswLHIoRXUpLHIoWXgpLHIodG8pLHIoT28pLHIoY3UpLHIoZGMpLHIodXgpLHIob2MpLHIoR2YpLHIoVG8pLHIoUG8pLHIoZWMpLHIoTm8pLHIod2YpLHIoSmEpLHIodW8pLHIoQ3gpLHIoRmYpLHIoYXgpLHIoT2EpLHIocWYpLHIoUm8pLHIoS2EpLHIoWHgpLHIoSngpLHIoX3gpLHIoeG8pLHIoZmEpLHIobm8pLHIoRjcpLHIoSW8pLHIoUGYpLHIod28pLHIoJHgpLHIoSmYpLHIoVW8pLHIoeW8pLHIoRDcpLHIoeWMpLHIoTmEpLHIoU3gpLHIoVngpLHIoX2YpLHIoU2MpLHIoTWYpLHIoY3gpLHIoSnUpLHIocHgpLHIocGEpLHIoRGUpLHIocjcpLHIoJGEpLHIoWW8pLHIod2EpLHIoWngpLHIoc2MpLHIoYWEpLHIodGEpLHIoQ2YpLHIoQm8pLHIoWWYpLHIoV2YpLHIoa2MpLHIodmMpLHIodmEpLHIoYmYpLHIoem8pLHIoWmYpLHIocngpLHIobWkpLHIoUW8pLHIoTW8pLHIoZGYpLHIoVmEpLHIoWG8pLHIobGMpLHIoZmMpLHIoWm8pLHIob28pLHIoaXgpLHIoTmYpLHIodWYpLHIoWGYpLHIoZXgpLHIobWEpLHIoZGEpLHIoS2YpLHIobmMpLHIoZ2YpLHIoTHgpLHIocW8pLHIoYngpLHIoeWYpLHIoT2YpLHIobWMpLHIoeHIpLHIoX2MpLHIoV3gpLHIoVXgpLHIoUGEpLHIoengpLHIobngpLHIoRHgpLHIoaGEpLHIoUHgpLHIoaGMpLHIodngpLHIoSm8pLHIod2MpLHIoRGEpLHIoS28pLHIocmMpLHIocmYpLHIoTngpLHIoYW8pLHIoT3gpLHIoaW8pLHIoam8pLHIoQW8pLHIocGMpLHIoQXgpLHIoZmYpLHIob2YpLHIoUWYpLHIoV28pLHIoeWEpLHIoYWMpLHIoUmYpLHIoemEpLHIocm8pLHIoa28pLHIoYWYpLHIoZTcpLHIoQWEpLHIoRngpLHIoQ2EpLHIoSHgpLHIoYm8pLHIoRWMpLHIoVXUpLHIoWWEpLHIoaWEpLHIocGYpLHIoeWkpLHIoVmYpLHIoYmMpLHIoV2EpLHIoRzcpLHIobXgpLHIoYmEpLHIodmYpLHIoQmEpLHIoa3gpLHIoR28pLHIoX2EpLHIodHgpLHIobmYpLHIoTGYpLHIoZ2MpLHIoSXgpLHIoaHgpLHIoSWEpLHIoVGMpLHIobG8pLHIoU28pLHIobGkpLHIoaWMpLHIoeXgpLHIoTGEpLHIoWGEpLHIoRmMpLHIoTXgpLHIoa2EpLHIoQmYpLHIoU2YpLHIoZW8pLHIoVHgpLHIoTnUpLHIoZWEpLHIodWEpLHIoUWEpLHIoc2YpLHIoU2EpLHIodm8pLHIoQWYpLHIoangpLHIoWmEpLHIoSWYpLHIoamYpLHIoQngpLHIoSG8pLHIocXgpLHIoc2EpLHIocmEpLHIobGEpLHIodjcpLHIoaG8pLHIoUmEpLHIod3gpLHIoRm8pLHIoc28pLHIobmEpLHIoemYpLHIoamEpLHIoVGEpLHIoeHgpLHIoSTcpLHIoTjcpLHIoJG8pLHIoeGEpLHIoJGYpLHIoX28pLHIoaGYpLHIoZ28pLHIoZngpLHIoZ3gpLHIoVWYpLHIoR2EpLHIoa2YpLHIodGYpLHIoZ2EpLHIoRGYpLHIodGMpLHIobWYpLHIocWEpLHIob2EpLHIoVWEpLHIoRWYpLHIoUWkpLHIoc3gpLHIocG8pLHIobHgpLHIoVGYpLHIoQTcpLHIoSGEpLHIoVG4pLHIoR3gpLHIoeGYpLHIobGYpLHIoS3gpLHIoSGYpLHIoVm8pLHIoY2EpLHIoRWEpLHIoY28pLHIoUngpLHIoVzQpXSx1cHI9WzAscihfZikscihRZikscihfYSkscihWZikscihUZikscihZZikscihxbykscihleCkscihOeCkscihrbykscihLYSkscihENykscihYbykscihlYSkscih0YykscihwYykscihieCkscihmZikscihyYSkscihCeCkscihZeCkscihsaSkscihoYykscihMeCkscihXYSkscihzYSkscihPZikscih5aSkscihPbykscihNeCkscih0YSkscih6ZikscihzeCkscih0eCkscihRaSkscihqbykscihBZikscihiYSkscih2YykscihpYykscih5bykscihLeCkscihtYSkscihpYSkscihTeCkscihsYSkscihQeCkscih5Zikscih0ZikscihnbykscihRbykscih3YSkscihYZikscihZbykscihLbykscihVZikscihmYykscihyNykscihOZikscihCYSkscihtYykscihhbykscihBbykscihiYykscihueCkscigkbykscihKeCkscihJZikscih1ZikscihyYykscigkZikscihEeCkscihHbykscihhYSkscihFYSkscihzbykscihTYSkscihXeCkscihyeCkscihjbykscihwbykscihjeCkscihjdSkscigkYSkscih1bykscihZYSkscihsZikscihTbykscihubykscihhYykscihEZikscihuYykscihVbykscih2NykscihYYSkscihYeCkscihFdSkscihmYSkscihUYSkscihlYykscih6bykscihweCkscihQbykscihoZikscihqYSkscihvYykscihBeCkscihaeCkscihybykscihIbykscihTZikscihsYykscih1YSkscihoYSkscihiZikscihrYSkscihGZikscih4bykscihkYykscihTYykscihDeCkscihUbykscihHYSkscih5eCkscihmeCkscihQYSkscihreCkscihHZikscihfbykscihnZikscihKbykscihIZikscihVeCkscihvYSkscihnYSkscihBYSkscih2YSkscihNbykscih3YykscihfYykscihVdSkscihKdSkscihIYSkscihKYSkscihheCkscih5YykscihrYykscihGNykscihJNykscihwZikscihWYSkscihUeCkscihvZikscihtaSkscihJeCkscihxeCkscihGeCkscihneCkscihuZikscih6eCkscihXbykscihHNykscih2Zikscih3ZikscihqZikscihEZSkscihUYykscihibykscihaYSkscihzZikscihLZikscihNZikscihDYSkscihvbykscihDZikscihfeCkscihpeCkscihPYSkscihseCkscihGbykscihVYSkscihuYSkscihHeCkscihSZikscihKZikscihteCkscihwYSkscihFYykscihxYSkscihkYSkscihpbykscihrZikscihhZikscihobykscihSbykscihSeCkscih1eCkscihFZikscihxZikscihSYSkscihPeCkscih5YSkscih4YSkscih2eCkscihCbykscih6YSkscihCZikscihEYSkscih3bykscihWbykscihXZikscih4ZikscihOdSkscihaZikscihlbykscihoeCkscihJYSkscihWeCkscihONykscihMZikscihzYykscih2bykscih3eCkscihQZikscigkeCkscihOYSkscihsbykscihRYSkscihObykscihMYSkscihkZikscihUbikscihIeCkscihtZikscihyZikscihabykscihnYykscih4eCkscihqeCkscihBNykscihjYSkscihlNykscih0bykscihGYykscihJbykscih4cildLGlwcj1yKGxWKSxmcHI9cihqWSkseHByPXIoUFgpLG9wcj1yKHpZKSxhcHI9cihTMyksY3ByPXIoWkgpLHNwcj1yKGN2KSx2cHI9cihPVSksbHByPXIodlkpLGJwcj1yKF9YKSxwcHI9cihzWCksbXByPXIoeHMpLF9wcj1yKEZhKSx5cHI9cihVVSksaHByPXIoV0gpLGRwcj1yKFF1KSxrcHI9cihYWSksd3ByPXIoT0gpLEVwcj1yKEk2KSxTcHI9cihqZCksZ3ByPXIoUjIpLEZwcj1yKGoyKSxUcHI9cihXVSksT3ByPXIoQlUpLElwcj1yKG5ZKSxBcHI9cih4WCksTnByPXIobEgpLENwcj1yKGhYKSxQcHI9cih4VSksRHByPXIoelgpLExwcj1yKGFYKSxScHI9cihiSCksanByPXIod0gpLEdwcj1yKFhIKSxNcHI9cihyViksQnByPXIoQVUpLHFwcj1yKHRYKSxVcHI9cihcIlNldC5yZW1vdmVfbWluX2VsdFwiKSxIcHI9WzAsWzEyLDU5LFsxNyxbMCxyKHYpLDEsMF0sMF1dLHIoYTApXSxYcHI9WzAsWzE4LFsxLFswLFsxMSxyKGgpLDBdLHIoaCldXSxbMTIsdHMsMF1dLHIoXCJAWzwyPntcIildLFlwcj1bMCxbMTIsMzIsMF0scihwaSldLFZwcj1bMCxbMTIsMzIsMF0scihwaSldLHpwcj1bMCxbMTcsWzAscihDZSksMCwwXSxbMTIsYnIsWzE3LDAsMF1dXSxyKFwiQCx9QF1cIildLEtwcj1bMCxyKFwic3JjL2hhY2tfZm9ya2VkL3V0aWxzL2NvbGxlY3Rpb25zL2Zsb3dfc2V0Lm1sXCIpLDM2MywxNF0sV3ByPVswLFswLDM2LDM3XSxbMCw0OCw1OF0sWzAsNjUsOTFdLFswLDk1LDk2XSxbMCw5Nyx0c10sWzAscWcscGddLFswLEFpLFlnXSxbMCxsUyxoa10sWzAsbWQsbnddLFswLHJ0LHhUXSxbMCx5NixEd10sWzAsd3QsNzA2XSxbMCxyWCw3MjJdLFswLDczNiw3NDFdLFswLDc0OCw3NDldLFswLDc1MCw3NTFdLFswLDc2OCw4ODVdLFswLDg4Niw4ODhdLFswLDg5MCw4OTRdLFswLDg5NSw4OTZdLFswLDkwMiw5MDddLFswLDkwOCxaWF0sWzAsOTEwLDkzMF0sWzAsVVgsMTAxNF0sWzAsMTAxNSwxMTU0XSxbMCwxMTU1LDExNjBdLFswLDExNjIsQ1VdLFswLDEzMjksMTM2N10sWzAsMTM2OSwxMzcwXSxbMCwxMzc2LDE0MTddLFswLDE0MjUsMTQ3MF0sWzAsMTQ3MSwxNDcyXSxbMCwxNDczLDE0NzVdLFswLDE0NzYsMTQ3OF0sWzAsMTQ3OSwxNDgwXSxbMCwxNDg4LDE1MTVdLFswLDE1MTksMTUyM10sWzAsMTU1MiwxNTYzXSxbMCwxNTY4LDE2NDJdLFswLDE2NDYsMTc0OF0sWzAsMTc0OSwxNzU3XSxbMCwxNzU5LDE3NjldLFswLDE3NzAsMTc4OV0sWzAsMTc5MSwxNzkyXSxbMCwxODA4LDE4NjddLFswLDE4NjksMTk3MF0sWzAsMTk4NCwyMDM4XSxbMCwyMDQyLDIwNDNdLFswLDIwNDUsMjA0Nl0sWzAsSGgsMjA5NF0sWzAsMjExMiwyMTQwXSxbMCwyMTQ0LDIxNTVdLFswLDIyMDgsMjIyOV0sWzAsMjIzMCwyMjM4XSxbMCwyMjU5LDIyNzRdLFswLDIyNzUsMjQwNF0sWzAsMjQwNiwyNDE2XSxbMCwyNDE3LDI0MzZdLFswLDI0MzcsMjQ0NV0sWzAsMjQ0NywyNDQ5XSxbMCwyNDUxLDI0NzNdLFswLDI0NzQsMjQ4MV0sWzAsMjQ4MiwyNDgzXSxbMCwyNDg2LDI0OTBdLFswLDI0OTIsMjUwMV0sWzAsMjUwMywyNTA1XSxbMCwyNTA3LDI1MTFdLFswLDI1MTksMjUyMF0sWzAsMjUyNCwyNTI2XSxbMCwyNTI3LDI1MzJdLFswLDI1MzQsMjU0Nl0sWzAsMjU1NiwyNTU3XSxbMCwyNTU4LDI1NTldLFswLDI1NjEsMjU2NF0sWzAsMjU2NSwyNTcxXSxbMCwyNTc1LDI1NzddLFswLDI1NzksMjYwMV0sWzAsMjYwMiwyNjA5XSxbMCwyNjEwLDI2MTJdLFswLDI2MTMsMjYxNV0sWzAsMjYxNiwyNjE4XSxbMCwyNjIwLDI2MjFdLFswLDI2MjIsMjYyN10sWzAsMjYzMSwyNjMzXSxbMCwyNjM1LDI2MzhdLFswLDI2NDEsMjY0Ml0sWzAsMjY0OSwyNjUzXSxbMCwyNjU0LDI2NTVdLFswLDI2NjIsMjY3OF0sWzAsMjY4OSwyNjkyXSxbMCwyNjkzLDI3MDJdLFswLDI3MDMsMjcwNl0sWzAsMjcwNywyNzI5XSxbMCwyNzMwLDI3MzddLFswLDI3MzgsMjc0MF0sWzAsMjc0MSwyNzQ2XSxbMCwyNzQ4LDI3NThdLFswLDI3NTksMjc2Ml0sWzAsMjc2MywyNzY2XSxbMCwyNzY4LDI3NjldLFswLDI3ODQsMjc4OF0sWzAsMjc5MCwyODAwXSxbMCwyODA5LDI4MTZdLFswLDI4MTcsMjgyMF0sWzAsMjgyMSwyODI5XSxbMCwyODMxLDI4MzNdLFswLDI4MzUsMjg1N10sWzAsMjg1OCwyODY1XSxbMCwyODY2LDI4NjhdLFswLDI4NjksMjg3NF0sWzAsMjg3NiwyODg1XSxbMCwyODg3LDI4ODldLFswLDI4OTEsMjg5NF0sWzAsMjkwMiwyOTA0XSxbMCwyOTA4LDI5MTBdLFswLDI5MTEsMjkxNl0sWzAsMjkxOCwyOTI4XSxbMCwyOTI5LDI5MzBdLFswLDI5NDYsMjk0OF0sWzAsMjk0OSwyOTU1XSxbMCwyOTU4LDI5NjFdLFswLDI5NjIsMjk2Nl0sWzAsMjk2OSwyOTcxXSxbMCwyOTcyLDI5NzNdLFswLDI5NzQsMjk3Nl0sWzAsMjk3OSwyOTgxXSxbMCwyOTg0LDI5ODddLFswLDI5OTAsMzAwMl0sWzAsMzAwNiwzMDExXSxbMCwzMDE0LDMwMTddLFswLDMwMTgsMzAyMl0sWzAsMzAyNCwzMDI1XSxbMCwzMDMxLDMwMzJdLFswLDMwNDYsMzA1Nl0sWzAsMzA3MiwzMDg1XSxbMCwzMDg2LDMwODldLFswLDMwOTAsMzExM10sWzAsMzExNCwzMTMwXSxbMCwzMTMzLDMxNDFdLFswLDMxNDIsMzE0NV0sWzAsMzE0NiwzMTUwXSxbMCwzMTU3LDMxNTldLFswLDMxNjAsMzE2M10sWzAsMzE2OCwzMTcyXSxbMCwzMTc0LDMxODRdLFswLDMyMDAsMzIwNF0sWzAsMzIwNSwzMjEzXSxbMCwzMjE0LDMyMTddLFswLDMyMTgsMzI0MV0sWzAsMzI0MiwzMjUyXSxbMCwzMjUzLDMyNThdLFswLDMyNjAsMzI2OV0sWzAsMzI3MCwzMjczXSxbMCwzMjc0LDMyNzhdLFswLDMyODUsMzI4N10sWzAsMzI5NCwzMjk1XSxbMCwzMjk2LDMzMDBdLFswLDMzMDIsMzMxMl0sWzAsMzMxMywzMzE1XSxbMCwzMzI4LDMzMzJdLFswLDMzMzMsMzM0MV0sWzAsMzM0MiwzMzQ1XSxbMCwzMzQ2LDMzOTddLFswLDMzOTgsMzQwMV0sWzAsMzQwMiwzNDA3XSxbMCwzNDEyLDM0MTZdLFswLDM0MjMsMzQyOF0sWzAsMzQzMCwzNDQwXSxbMCwzNDUwLDM0NTZdLFswLDM0NTgsMzQ2MF0sWzAsMzQ2MSwzNDc5XSxbMCwzNDgyLDM1MDZdLFswLDM1MDcsMzUxNl0sWzAsMzUxNywzNTE4XSxbMCwzNTIwLDM1MjddLFswLDM1MzAsMzUzMV0sWzAsMzUzNSwzNTQxXSxbMCwzNTQyLDM1NDNdLFswLDM1NDQsMzU1Ml0sWzAsMzU1OCwzNTY4XSxbMCwzNTcwLDM1NzJdLFswLDM1ODUsMzY0M10sWzAsMzY0OCwzNjYzXSxbMCwzNjY0LDM2NzRdLFswLDM3MTMsMzcxNV0sWzAsMzcxNiwzNzE3XSxbMCwzNzE4LDM3MjNdLFswLDM3MjQsMzc0OF0sWzAsMzc0OSwzNzUwXSxbMCwzNzUxLDM3NzRdLFswLDM3NzYsMzc4MV0sWzAsMzc4MiwzNzgzXSxbMCwzNzg0LDM3OTBdLFswLDM3OTIsMzgwMl0sWzAsMzgwNCwzODA4XSxbMCwzODQwLDM4NDFdLFswLDM4NjQsMzg2Nl0sWzAsMzg3MiwzODgyXSxbMCwzODkzLDM4OTRdLFswLDM4OTUsMzg5Nl0sWzAsMzg5NywzODk4XSxbMCwzOTAyLDM5MTJdLFswLDM5MTMsMzk0OV0sWzAsMzk1MywzOTczXSxbMCwzOTc0LDM5OTJdLFswLDM5OTMsNDAyOV0sWzAsNDAzOCw0MDM5XSxbMCx2WCw0MTcwXSxbMCw0MTc2LDQyNTRdLFswLDQyNTYsNDI5NF0sWzAsNDI5NSw0Mjk2XSxbMCw0MzAxLDQzMDJdLFswLDQzMDQsNDM0N10sWzAsNDM0OCw0NjgxXSxbMCw0NjgyLDQ2ODZdLFswLDQ2ODgsNDY5NV0sWzAsNDY5Niw0Njk3XSxbMCw0Njk4LDQ3MDJdLFswLDQ3MDQsNDc0NV0sWzAsNDc0Niw0NzUwXSxbMCw0NzUyLDQ3ODVdLFswLDQ3ODYsNDc5MF0sWzAsNDc5Miw0Nzk5XSxbMCw0ODAwLDQ4MDFdLFswLDQ4MDIsNDgwNl0sWzAsNDgwOCw0ODIzXSxbMCw0ODI0LDQ4ODFdLFswLDQ4ODIsNDg4Nl0sWzAsNDg4OCw0OTU1XSxbMCw0OTU3LDQ5NjBdLFswLDQ5NjksNDk3OF0sWzAsNDk5Miw1MDA4XSxbMCw1MDI0LDUxMTBdLFswLDUxMTIsNTExOF0sWzAsNTEyMSw1NzQxXSxbMCw1NzQzLEV2XSxbMCw1NzYxLDU3ODddLFswLDU3OTIsNTg2N10sWzAsNTg3MCw1ODgxXSxbMCw1ODg4LDU5MDFdLFswLDU5MDIsNTkwOV0sWzAsNTkyMCw1OTQxXSxbMCw1OTUyLDU5NzJdLFswLDU5ODQsNTk5N10sWzAsNTk5OCw2MDAxXSxbMCw2MDAyLDYwMDRdLFswLDYwMTYsNjEwMF0sWzAsNjEwMyw2MTA0XSxbMCw2MTA4LDYxMTBdLFswLDYxMTIsNjEyMl0sWzAsNjE1NSw2MTU4XSxbMCw2MTYwLDYxNzBdLFswLDYxNzYsNjI2NV0sWzAsNjI3Miw2MzE1XSxbMCw2MzIwLDYzOTBdLFswLDY0MDAsNjQzMV0sWzAsNjQzMiw2NDQ0XSxbMCw2NDQ4LDY0NjBdLFswLDY0NzAsNjUxMF0sWzAsNjUxMiw2NTE3XSxbMCw2NTI4LDY1NzJdLFswLDY1NzYsNjYwMl0sWzAsNjYwOCw2NjE5XSxbMCw2NjU2LDY2ODRdLFswLDY2ODgsNjc1MV0sWzAsNjc1Miw2NzgxXSxbMCw2NzgzLDY3OTRdLFswLDY4MDAsNjgxMF0sWzAsNjgyMyw2ODI0XSxbMCw2ODMyLDY4NDZdLFswLDY5MTIsNjk4OF0sWzAsNjk5Miw3MDAyXSxbMCw3MDE5LDcwMjhdLFswLDcwNDAsNzE1Nl0sWzAsNzE2OCw3MjI0XSxbMCw3MjMyLDcyNDJdLFswLDcyNDUsNzI5NF0sWzAsNzI5Niw3MzA1XSxbMCw3MzEyLDczNTVdLFswLDczNTcsNzM2MF0sWzAsNzM3Niw3Mzc5XSxbMCw3MzgwLDc0MTldLFswLDc0MjQsNzY3NF0sWzAsNzY3NSw3OTU4XSxbMCw3OTYwLDc5NjZdLFswLDc5NjgsODAwNl0sWzAsODAwOCw4MDE0XSxbMCw4MDE2LDgwMjRdLFswLDgwMjUsODAyNl0sWzAsODAyNyw4MDI4XSxbMCw4MDI5LDgwMzBdLFswLDgwMzEsODA2Ml0sWzAsODA2NCw4MTE3XSxbMCw4MTE4LDgxMjVdLFswLDgxMjYsODEyN10sWzAsODEzMCw4MTMzXSxbMCw4MTM0LDgxNDFdLFswLDgxNDQsODE0OF0sWzAsODE1MCw4MTU2XSxbMCw4MTYwLDgxNzNdLFswLDgxNzgsODE4MV0sWzAsODE4Miw4MTg5XSxbMCxrWSx2VV0sWzAsODI1NSw4MjU3XSxbMCw4Mjc2LDgyNzddLFswLGVwLDgzMDZdLFswLE8zLDgzMjBdLFswLDgzMzYsODM0OV0sWzAsODQwMCw4NDEzXSxbMCw4NDE3LDg0MThdLFswLDg0MjEsODQzM10sWzAseDMsODQ1MV0sWzAsUjMsODQ1Nl0sWzAsODQ1OCxnNF0sWzAsbTYsODQ3MF0sWzAsaVUsODQ3OF0sWzAsdDgsJDNdLFswLFE4LHNwXSxbMCxQOCxOOF0sWzAsODQ5MCw4NTA2XSxbMCw4NTA4LDg1MTJdLFswLDg1MTcsODUyMl0sWzAsczgsODUyN10sWzAsODU0NCw4NTg1XSxbMCwxMTI2NCwxMTMxMV0sWzAsMTEzMTIsMTEzNTldLFswLDExMzYwLDExNDkzXSxbMCwxMTQ5OSwxMTUwOF0sWzAsMTE1MjAsRzRdLFswLEI4LDExNTYwXSxbMCxOMywxMTU2Nl0sWzAsMTE1NjgsMTE2MjRdLFswLHA0LDExNjMyXSxbMCxQNiwxMTY3MV0sWzAsMTE2ODAsajRdLFswLDExNjg4LHo4XSxbMCwxMTY5NixvOF0sWzAsMTE3MDQsSzhdLFswLDExNzEyLHo2XSxbMCwxMTcyMCxqOF0sWzAsMTE3MjgsRjZdLFswLDExNzM2LDExNzQzXSxbMCwxMTc0NCwxMTc3Nl0sWzAsMTIyOTMsMTIyOTZdLFswLDEyMzIxLFQzXSxbMCwxMjMzNywxMjM0Ml0sWzAsMTIzNDQsMTIzNDldLFswLDEyMzUzLDEyNDM5XSxbMCwxMjQ0MSxFM10sWzAsMTI0NDkscTRdLFswLDEyNTQwLDEyNTQ0XSxbMCwxMjU0OSxFOF0sWzAsMTI1OTMsMTI2ODddLFswLDEyNzA0LDEyNzMxXSxbMCwxMjc4NCwxMjgwMF0sWzAsMTMzMTIsMTk4OTRdLFswLDE5OTY4LDQwOTQ0XSxbMCw0MDk2MCw0MjEyNV0sWzAsNDIxOTIsNDIyMzhdLFswLDQyMjQwLDQyNTA5XSxbMCw0MjUxMiw0MjU0MF0sWzAsNDI1NjAsNDI2MDhdLFswLDQyNjEyLFUzXSxbMCw0MjYyMyw0MjczOF0sWzAsNDI3NzUsNDI3ODRdLFswLDQyNzg2LDQyODg5XSxbMCw0Mjg5MSw0Mjk0NF0sWzAsNDI5NDYsNDI5NTFdLFswLEY4LDQzMDQ4XSxbMCw0MzA3Miw0MzEyNF0sWzAsNDMxMzYsNDMyMDZdLFswLDQzMjE2LDQzMjI2XSxbMCw0MzIzMiw0MzI1Nl0sWzAsbjMsXzhdLFswLDQzMjYxLDQzMzEwXSxbMCw0MzMxMiw0MzM0OF0sWzAsNDMzNjAsNDMzODldLFswLDQzMzkyLDQzNDU3XSxbMCxrOCw0MzQ4Ml0sWzAsNDM0ODgsdjZdLFswLDQzNTIwLDQzNTc1XSxbMCw0MzU4NCw0MzU5OF0sWzAsNDM2MDAsNDM2MTBdLFswLDQzNjE2LDQzNjM5XSxbMCxscCw0MzcxNV0sWzAsNDM3MzksNDM3NDJdLFswLDQzNzQ0LDQzNzYwXSxbMCw0Mzc2Miw0Mzc2N10sWzAsNDM3NzcsNDM3ODNdLFswLDQzNzg1LDQzNzkxXSxbMCw0Mzc5Myw0Mzc5OV0sWzAsNDM4MDgsazZdLFswLDQzODE2LEgzXSxbMCw0MzgyNCxhdl0sWzAsNDM4NjgsbzNdLFswLDQzODg4LDQ0MDExXSxbMCw0NDAxMiw0NDAxNF0sWzAsNDQwMTYsNDQwMjZdLFswLDQ0MDMyLDU1MjA0XSxbMCw1NTIxNiw1NTIzOV0sWzAsNTUyNDMsNTUyOTJdLFswLDYzNzQ0LDY0MTEwXSxbMCw2NDExMiw2NDIxOF0sWzAsNjQyNTYsNjQyNjNdLFswLDY0Mjc1LDY0MjgwXSxbMCxlMyxpcF0sWzAsNjQyOTgsUW5dLFswLDY0MzEyLHozXSxbMCxMNixSNF0sWzAsNjQzMjAscTNdLFswLDY0MzIzLEQ4XSxbMCw2NDMyNiw2NDQzNF0sWzAsNjQ0NjcsNjQ4MzBdLFswLDY0ODQ4LDY0OTEyXSxbMCw2NDkxNCw2NDk2OF0sWzAsNjUwMDgsNjUwMjBdLFswLDY1MDI0LDY1MDQwXSxbMCw2NTA1Niw2NTA3Ml0sWzAsNjUwNzUsNjUwNzddLFswLDY1MTAxLDY1MTA0XSxbMCw2NTEzNix0M10sWzAsNjUxNDIsNjUyNzddLFswLDY1Mjk2LDY1MzA2XSxbMCw2NTMxMyw2NTMzOV0sWzAsNjUzNDMsUTRdLFswLDY1MzQ1LDY1MzcxXSxbMCw2NTM4Miw2NTQ3MV0sWzAsNjU0NzQsNjU0ODBdLFswLDY1NDgyLDY1NDg4XSxbMCw2NTQ5MCw2NTQ5Nl0sWzAsNjU0OTgsNjU1MDFdLFswLGZ3LHJwXSxbMCw2NTU0OSwkOF0sWzAsNjU1NzYsejRdLFswLDY1NTk2LFM2XSxbMCw2NTU5OSw2NTYxNF0sWzAsNjU2MTYsNjU2MzBdLFswLDY1NjY0LDY1Nzg3XSxbMCw2NTg1Niw2NTkwOV0sWzAsNjYwNDUsNjYwNDZdLFswLDY2MTc2LDY2MjA1XSxbMCw2NjIwOCw2NjI1N10sWzAsNjYyNzIsNjYyNzNdLFswLDY2MzA0LDY2MzM2XSxbMCw2NjM0OSw2NjM3OV0sWzAsNjYzODQsNjY0MjddLFswLDY2NDMyLDY2NDYyXSxbMCw2NjQ2NCw2NjUwMF0sWzAsNjY1MDQsWjNdLFswLDY2NTEzLDY2NTE4XSxbMCw2NjU2MCw2NjcxOF0sWzAsNjY3MjAsNjY3MzBdLFswLDY2NzM2LDY2NzcyXSxbMCw2Njc3Niw2NjgxMl0sWzAsNjY4MTYsNjY4NTZdLFswLDY2ODY0LDY2OTE2XSxbMCw2NzA3Miw2NzM4M10sWzAsNjczOTIsNjc0MTRdLFswLDY3NDI0LDY3NDMyXSxbMCw2NzU4NCw2NzU5MF0sWzAsb3AsSjRdLFswLDY3NTk0LHA4XSxbMCw2NzYzOSw2NzY0MV0sWzAsTTYsNjc2NDVdLFswLDY3NjQ3LDY3NjcwXSxbMCw2NzY4MCw2NzcwM10sWzAsNjc3MTIsNjc3NDNdLFswLDY3ODA4LFg4XSxbMCw2NzgyOCw2NzgzMF0sWzAsNjc4NDAsNjc4NjJdLFswLDY3ODcyLDY3ODk4XSxbMCw2Nzk2OCw2ODAyNF0sWzAsNjgwMzAsNjgwMzJdLFswLFM3LDY4MTAwXSxbMCw2ODEwMSw2ODEwM10sWzAsNjgxMDgsYjRdLFswLDY4MTE3LFo4XSxbMCw2ODEyMSw2ODE1MF0sWzAsNjgxNTIsNjgxNTVdLFswLDY4MTU5LDY4MTYwXSxbMCw2ODE5Miw2ODIyMV0sWzAsNjgyMjQsNjgyNTNdLFswLDY4Mjg4LEo2XSxbMCw2ODI5Nyw2ODMyN10sWzAsNjgzNTIsNjg0MDZdLFswLDY4NDE2LDY4NDM4XSxbMCw2ODQ0OCw2ODQ2N10sWzAsNjg0ODAsNjg0OThdLFswLDY4NjA4LDY4NjgxXSxbMCw2ODczNiw2ODc4N10sWzAsNjg4MDAsNjg4NTFdLFswLDY4ODY0LDY4OTA0XSxbMCw2ODkxMiw2ODkyMl0sWzAsNjkzNzYsNjk0MDVdLFswLEo4LDY5NDE2XSxbMCw2OTQyNCw2OTQ1N10sWzAsNjk2MDAsNjk2MjNdLFswLDY5NjMyLDY5NzAzXSxbMCw2OTczNCxCM10sWzAsNjk3NTksNjk4MTldLFswLDY5ODQwLDY5ODY1XSxbMCw2OTg3Miw2OTg4Ml0sWzAsNjk4ODgsNjk5NDFdLFswLDY5OTQyLDY5OTUyXSxbMCxtNCxGM10sWzAsNjk5NjgsNzAwMDRdLFswLFg2LDcwMDA3XSxbMCw3MDAxNiw3MDA4NV0sWzAsNzAwODksNzAwOTNdLFswLDcwMDk2LGg4XSxbMCxpMyw3MDEwOV0sWzAsNzAxNDQsQThdLFswLDcwMTYzLDcwMjAwXSxbMCw3MDIwNiw3MDIwN10sWzAsNzAyNzIseTNdLFswLEk4LGZwXSxbMCw3MDI4MixPOF0sWzAsNzAyODcsYzhdLFswLDcwMzAzLDcwMzEzXSxbMCw3MDMyMCw3MDM3OV0sWzAsNzAzODQsNzAzOTRdLFswLDcwNDAwLHU2XSxbMCw3MDQwNSw3MDQxM10sWzAsNzA0MTUsNzA0MTddLFswLDcwNDE5LGYzXSxbMCw3MDQ0MixhOF0sWzAsNzA0NTAsQzRdLFswLDcwNDUzLDcwNDU4XSxbMCw3MDQ1OSw3MDQ2OV0sWzAsNzA0NzEsNzA0NzNdLFswLDcwNDc1LDcwNDc4XSxbMCxqNiw3MDQ4MV0sWzAsNzA0ODcsNzA0ODhdLFswLDcwNDkzLDcwNTAwXSxbMCw3MDUwMiw3MDUwOV0sWzAsNzA1MTIsNzA1MTddLFswLDcwNjU2LDcwNzMxXSxbMCw3MDczNiw3MDc0Nl0sWzAsVzYsNzA3NTJdLFswLDcwNzg0LFEzXSxbMCxaNiw3MDg1Nl0sWzAsNzA4NjQsNzA4NzRdLFswLDcxMDQwLDcxMDk0XSxbMCw3MTA5Niw3MTEwNV0sWzAsNzExMjgsNzExMzRdLFswLDcxMTY4LDcxMjMzXSxbMCx1OCw3MTIzN10sWzAsNzEyNDgsNzEyNThdLFswLDcxMjk2LDcxMzUzXSxbMCw3MTM2MCw3MTM3MF0sWzAsNzE0MjQsNzE0NTFdLFswLDcxNDUzLDcxNDY4XSxbMCw3MTQ3Miw3MTQ4Ml0sWzAsNzE2ODAsNzE3MzldLFswLDcxODQwLDcxOTE0XSxbMCw3MTkzNSw3MTkzNl0sWzAsNzIwOTYsNzIxMDRdLFswLDcyMTA2LDcyMTUyXSxbMCw3MjE1NCx1cF0sWzAscDMsNzIxNjVdLFswLE04LDcyMjU1XSxbMCw3MjI2Myw3MjI2NF0sWzAsdTMsNzIzNDZdLFswLFA0LDcyMzUwXSxbMCw3MjM4NCw3MjQ0MV0sWzAsNzI3MDQsVzNdLFswLDcyNzE0LDcyNzU5XSxbMCw3Mjc2MCw3Mjc2OV0sWzAsNzI3ODQsNzI3OTRdLFswLDcyODE4LDcyODQ4XSxbMCw3Mjg1MCw3Mjg3Ml0sWzAsNzI4NzMsNzI4ODddLFswLDcyOTYwLEQzXSxbMCw3Mjk2OCxoNF0sWzAsNzI5NzEsNzMwMTVdLFswLDczMDE4LDczMDE5XSxbMCw3MzAyMCw3MzAyMl0sWzAsNzMwMjMsNzMwMzJdLFswLDczMDQwLDczMDUwXSxbMCw3MzA1NixSNl0sWzAsNzMwNjMsaDNdLFswLDczMDY2LDczMTAzXSxbMCw3MzEwNCw3MzEwNl0sWzAsNzMxMDcsNzMxMTNdLFswLDczMTIwLDczMTMwXSxbMCw3MzQ0MCw3MzQ2M10sWzAsNzM3MjgsNzQ2NTBdLFswLDc0NzUyLDc0ODYzXSxbMCw3NDg4MCw3NTA3Nl0sWzAsNzc4MjQsNzg4OTVdLFswLDgyOTQ0LDgzNTI3XSxbMCw5MjE2MCw5MjcyOV0sWzAsOTI3MzYsOTI3NjddLFswLDkyNzY4LDkyNzc4XSxbMCw5Mjg4MCw5MjkxMF0sWzAsOTI5MTIsOTI5MTddLFswLDkyOTI4LDkyOTgzXSxbMCw5Mjk5Miw5Mjk5Nl0sWzAsOTMwMDgsOTMwMThdLFswLDkzMDI3LDkzMDQ4XSxbMCw5MzA1Myw5MzA3Ml0sWzAsOTM3NjAsOTM4MjRdLFswLDkzOTUyLDk0MDI3XSxbMCxaNCw5NDA4OF0sWzAsOTQwOTUsOTQxMTJdLFswLDk0MTc2LGI2XSxbMCxoNiw5NDE4MF0sWzAsOTQyMDgsMTAwMzQ0XSxbMCwxMDAzNTIsMTAxMTA3XSxbMCwxMTA1OTIsMTEwODc5XSxbMCwxMTA5MjgsMTEwOTMxXSxbMCwxMTA5NDgsMTEwOTUyXSxbMCwxMTA5NjAsMTExMzU2XSxbMCwxMTM2NjQsMTEzNzcxXSxbMCwxMTM3NzYsMTEzNzg5XSxbMCwxMTM3OTIsMTEzODAxXSxbMCwxMTM4MDgsMTEzODE4XSxbMCwxMTM4MjEsMTEzODIzXSxbMCwxMTkxNDEsMTE5MTQ2XSxbMCwxMTkxNDksMTE5MTU1XSxbMCwxMTkxNjMsMTE5MTcxXSxbMCwxMTkxNzMsMTE5MTgwXSxbMCwxMTkyMTAsMTE5MjE0XSxbMCwxMTkzNjIsMTE5MzY1XSxbMCwxMTk4MDgsVDZdLFswLDExOTg5NCxNM10sWzAsMTE5OTY2LDExOTk2OF0sWzAsZDMsMTE5OTcxXSxbMCwxMTk5NzMsMTE5OTc1XSxbMCwxMTk5NzcsUTZdLFswLDExOTk4MixsOF0sWzAsbDQsRzZdLFswLDExOTk5NyxJM10sWzAsMTIwMDA1LEw0XSxbMCwxMjAwNzEsMTIwMDc1XSxbMCwxMjAwNzcsTjZdLFswLDEyMDA4Nix2cF0sWzAsMTIwMDk0LEMzXSxbMCwxMjAxMjMscjZdLFswLDEyMDEyOCxCNF0sWzAsRzMsMTIwMTM1XSxbMCwxMjAxMzgsRDZdLFswLDEyMDE0NiwxMjA0ODZdLFswLDEyMDQ4OCxENF0sWzAsMTIwNTE0LFYzXSxbMCwxMjA1NDAsYzZdLFswLDEyMDU3MixYNF0sWzAsMTIwNTk4LGMzXSxbMCwxMjA2MzAsVjRdLFswLDEyMDY1Nix3Nl0sWzAsMTIwNjg4LHY0XSxbMCwxMjA3MTQsbDZdLFswLDEyMDc0NixrM10sWzAsMTIwNzcyLDEyMDc4MF0sWzAsMTIwNzgyLDEyMDgzMl0sWzAsMTIxMzQ0LDEyMTM5OV0sWzAsMTIxNDAzLDEyMTQ1M10sWzAsMTIxNDYxLDEyMTQ2Ml0sWzAsMTIxNDc2LDEyMTQ3N10sWzAsMTIxNDk5LDEyMTUwNF0sWzAsMTIxNTA1LDEyMTUyMF0sWzAsMTIyODgwLDEyMjg4N10sWzAsMTIyODg4LDEyMjkwNV0sWzAsMTIyOTA3LDEyMjkxNF0sWzAsMTIyOTE1LDEyMjkxN10sWzAsMTIyOTE4LDEyMjkyM10sWzAsMTIzMTM2LDEyMzE4MV0sWzAsMTIzMTg0LDEyMzE5OF0sWzAsMTIzMjAwLDEyMzIxMF0sWzAsYXAsMTIzMjE1XSxbMCwxMjM1ODQsMTIzNjQyXSxbMCwxMjQ5MjgsMTI1MTI1XSxbMCwxMjUxMzYsMTI1MTQzXSxbMCwxMjUxODQsMTI1MjYwXSxbMCwxMjUyNjQsMTI1Mjc0XSxbMCwxMjY0NjQsQzZdLFswLDEyNjQ2OSxKM10sWzAsMTI2NDk3LGEzXSxbMCxnOCwxMjY1MDFdLFswLGU4LG04XSxbMCwxMjY1MDUsczZdLFswLDEyNjUxNixmOF0sWzAsXzYseDhdLFswLHczLDEyNjUyNF0sWzAsSzMsMTI2NTMxXSxbMCxMOCxVNl0sWzAsUzgsbjhdLFswLHMzLE00XSxbMCwxMjY1NDEsRjRdLFswLDEyNjU0NSxnNl0sWzAsZDgsMTI2NTQ5XSxbMCxpOCxFNF0sWzAsZm4sQjZdLFswLFM0LEc4XSxbMCxxNixzNF0sWzAsdDYsTzRdLFswLDEyNjU2MSx4cF0sWzAsVjYsMTI2NTY1XSxbMCwxMjY1NjcsbDNdLFswLDEyNjU3Mix4Nl0sWzAsMTI2NTgwLFc4XSxbMCwxMjY1ODUsTDNdLFswLCQ0LHc4XSxbMCwxMjY1OTIsVjhdLFswLDEyNjYwMywxMjY2MjBdLFswLDEyNjYyNSxqM10sWzAsMTI2NjI5LHIzXSxbMCwxMjY2MzUsMTI2NjUyXSxbMCwxMzEwNzIsMTczNzgzXSxbMCwxNzM4MjQsMTc3OTczXSxbMCwxNzc5ODQsMTc4MjA2XSxbMCwxNzgyMDgsMTgzOTcwXSxbMCwxODM5ODQsMTkxNDU3XSxbMCwxOTQ1NjAsMTk1MTAyXSxbMCw5MTc3NjAsOTE4ZTNdXSxKcHI9cihPMiksJHByPXIoZHYpLFpwcj1yKFR2KSxRcHI9cihLNCkscjVyPXIoXCJDYW5ub3QgZXhwb3J0IGFuIGVudW0gd2l0aCBgZXhwb3J0IHR5cGVgLCB0cnkgYGV4cG9ydCBlbnVtIEUge31gIG9yIGBtb2R1bGUuZXhwb3J0cyA9IEU7YCBpbnN0ZWFkLlwiKSxlNXI9cihcIkVudW0gbWVtYmVycyBhcmUgc2VwYXJhdGVkIHdpdGggYCxgLiBSZXBsYWNlIGA7YCB3aXRoIGAsYC5cIiksbjVyPXIoXCJVbmV4cGVjdGVkIHJlc2VydmVkIHdvcmRcIiksdDVyPXIoXCJVbmV4cGVjdGVkIHJlc2VydmVkIHR5cGVcIiksdTVyPXIoXCJVbmV4cGVjdGVkIGBzdXBlcmAgb3V0c2lkZSBvZiBhIGNsYXNzIG1ldGhvZFwiKSxpNXI9cihcImBzdXBlcigpYCBpcyBvbmx5IHZhbGlkIGluIGEgY2xhc3MgY29uc3RydWN0b3JcIiksZjVyPXIoXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiKSx4NXI9cihcIlVuZXhwZWN0ZWQgdmFyaWFuY2Ugc2lnaWxcIiksbzVyPXIoXCJVbmV4cGVjdGVkIHN0YXRpYyBtb2RpZmllclwiKSxhNXI9cihcIlVuZXhwZWN0ZWQgcHJvdG8gbW9kaWZpZXJcIiksYzVyPXIoXCJUeXBlIGFsaWFzZXMgYXJlIG5vdCBhbGxvd2VkIGluIHVudHlwZWQgbW9kZVwiKSxzNXI9cihcIk9wYXF1ZSB0eXBlIGFsaWFzZXMgYXJlIG5vdCBhbGxvd2VkIGluIHVudHlwZWQgbW9kZVwiKSx2NXI9cihcIlR5cGUgYW5ub3RhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHVudHlwZWQgbW9kZVwiKSxsNXI9cihcIlR5cGUgZGVjbGFyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiB1bnR5cGVkIG1vZGVcIiksYjVyPXIoXCJUeXBlIGltcG9ydHMgYXJlIG5vdCBhbGxvd2VkIGluIHVudHlwZWQgbW9kZVwiKSxwNXI9cihcIlR5cGUgZXhwb3J0cyBhcmUgbm90IGFsbG93ZWQgaW4gdW50eXBlZCBtb2RlXCIpLG01cj1yKFwiSW50ZXJmYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gdW50eXBlZCBtb2RlXCIpLF81cj1yKFwiU3ByZWFkaW5nIGEgdHlwZSBpcyBvbmx5IGFsbG93ZWQgaW5zaWRlIGFuIG9iamVjdCB0eXBlXCIpLHk1cj1yKFwiRXhwbGljaXQgaW5leGFjdCBzeW50YXggbXVzdCBjb21lIGF0IHRoZSBlbmQgb2YgYW4gb2JqZWN0IHR5cGVcIiksaDVyPXIoXCJFeHBsaWNpdCBpbmV4YWN0IHN5bnRheCBjYW5ub3QgYXBwZWFyIGluc2lkZSBhbiBleHBsaWNpdCBleGFjdCBvYmplY3QgdHlwZVwiKSxkNXI9cihcIkV4cGxpY2l0IGluZXhhY3Qgc3ludGF4IGNhbiBvbmx5IGFwcGVhciBpbnNpZGUgYW4gb2JqZWN0IHR5cGVcIiksazVyPXIoXCJJbGxlZ2FsIG5ld2xpbmUgYWZ0ZXIgdGhyb3dcIiksdzVyPXIoXCJBIGJpZ2ludCBsaXRlcmFsIG11c3QgYmUgYW4gaW50ZWdlclwiKSxFNXI9cihcIkEgYmlnaW50IGxpdGVyYWwgY2Fubm90IHVzZSBleHBvbmVudGlhbCBub3RhdGlvblwiKSxTNXI9cihcIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uXCIpLGc1cj1yKFwiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3NpbmcgL1wiKSxGNXI9cihcIkludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gYXNzaWdubWVudFwiKSxUNXI9cihcIkludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gZXhwb25lbnRpYXRpb24gZXhwcmVzc2lvblwiKSxPNXI9cihcIkludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gZm9yLWluXCIpLEk1cj1yKFwiSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBmb3Itb2ZcIiksQTVyPXIoXCJJbnZhbGlkIG9wdGlvbmFsIGluZGV4ZWQgYWNjZXNzLiBJbmRleGVkIGFjY2VzcyB1c2VzIGJyYWNrZXQgbm90YXRpb24uIFVzZSB0aGUgZm9ybWF0IGBUPy5bS11gLlwiKSxONXI9cihcImZvdW5kIGFuIGV4cHJlc3Npb24gaW5zdGVhZFwiKSxDNXI9cihcIkV4cGVjdGVkIGFuIG9iamVjdCBwYXR0ZXJuLCBhcnJheSBwYXR0ZXJuLCBvciBhbiBpZGVudGlmaWVyIGJ1dCBcIiksUDVyPXIoXCJNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBzdGF0ZW1lbnRcIiksRDVyPXIoXCJNaXNzaW5nIGNhdGNoIG9yIGZpbmFsbHkgYWZ0ZXIgdHJ5XCIpLEw1cj1yKFwiSWxsZWdhbCBjb250aW51ZSBzdGF0ZW1lbnRcIiksUjVyPXIoXCJJbGxlZ2FsIGJyZWFrIHN0YXRlbWVudFwiKSxqNXI9cihcIklsbGVnYWwgcmV0dXJuIHN0YXRlbWVudFwiKSxHNXI9cihcIklsbGVnYWwgVW5pY29kZSBlc2NhcGVcIiksTTVyPXIoXCJTdHJpY3QgbW9kZSBjb2RlIG1heSBub3QgaW5jbHVkZSBhIHdpdGggc3RhdGVtZW50XCIpLEI1cj1yKFwiQ2F0Y2ggdmFyaWFibGUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZVwiKSxxNXI9cihcIlZhcmlhYmxlIG5hbWUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZVwiKSxVNXI9cihcIlBhcmFtZXRlciBuYW1lIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlXCIpLEg1cj1yKFwiU3RyaWN0IG1vZGUgZnVuY3Rpb24gbWF5IG5vdCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXNcIiksWDVyPXIoJ0lsbGVnYWwgXCJ1c2Ugc3RyaWN0XCIgZGlyZWN0aXZlIGluIGZ1bmN0aW9uIHdpdGggbm9uLXNpbXBsZSBwYXJhbWV0ZXIgbGlzdCcpLFk1cj1yKFwiRnVuY3Rpb24gbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlXCIpLFY1cj1yKFwiT2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLlwiKSx6NXI9cihcIk51bWJlciBsaXRlcmFscyB3aXRoIGxlYWRpbmcgemVyb3MgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLlwiKSxLNXI9cihcIkRlbGV0ZSBvZiBhbiB1bnF1YWxpZmllZCBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlLlwiKSxXNXI9cihcIkR1cGxpY2F0ZSBkYXRhIHByb3BlcnR5IGluIG9iamVjdCBsaXRlcmFsIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlXCIpLEo1cj1yKFwiT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBoYXZlIGRhdGEgYW5kIGFjY2Vzc29yIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZVwiKSwkNXI9cihcIk9iamVjdCBsaXRlcmFsIG1heSBub3QgaGF2ZSBtdWx0aXBsZSBnZXQvc2V0IGFjY2Vzc29ycyB3aXRoIHRoZSBzYW1lIG5hbWVcIiksWjVyPXIoXCJgdHlwZW9mYCBjYW4gb25seSBiZSB1c2VkIHRvIGdldCB0aGUgdHlwZSBvZiB2YXJpYWJsZXMuXCIpLFE1cj1yKFwiQXNzaWdubWVudCB0byBldmFsIG9yIGFyZ3VtZW50cyBpcyBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZVwiKSxybXI9cihcIlBvc3RmaXggaW5jcmVtZW50L2RlY3JlbWVudCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCBpbiBzdHJpY3QgbW9kZVwiKSxlbXI9cihcIlByZWZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlXCIpLG5tcj1yKFwiVXNlIG9mIGZ1dHVyZSByZXNlcnZlZCB3b3JkIGluIHN0cmljdCBtb2RlXCIpLHRtcj1yKFwiSlNYIGF0dHJpYnV0ZXMgbXVzdCBvbmx5IGJlIGFzc2lnbmVkIGEgbm9uLWVtcHR5IGV4cHJlc3Npb25cIiksdW1yPXIoXCJKU1ggdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBhbiBleHByZXNzaW9uIG9yIGEgcXVvdGVkIEpTWCB0ZXh0XCIpLGltcj1yKFwiQ29uc3QgbXVzdCBiZSBpbml0aWFsaXplZFwiKSxmbXI9cihcIkRlc3RydWN0dXJpbmcgYXNzaWdubWVudCBtdXN0IGJlIGluaXRpYWxpemVkXCIpLHhtcj1yKFwiSWxsZWdhbCBuZXdsaW5lIGJlZm9yZSBhcnJvd1wiKSxvbXI9cihhRiksYW1yPXIoXCJBc3luYyBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgYXQgdG9wIGxldmVsIG9yIFwiKSxjbXI9cihhRiksc21yPXIoXCJHZW5lcmF0b3JzIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGF0IHRvcCBsZXZlbCBvciBcIiksdm1yPXIoXCJlbGVtZW50cyBtdXN0IGJlIHdyYXBwZWQgaW4gYW4gZW5jbG9zaW5nIHBhcmVudCB0YWdcIiksbG1yPXIoXCJVbmV4cGVjdGVkIHRva2VuIDwuIFJlbWVtYmVyLCBhZGphY2VudCBKU1ggXCIpLGJtcj1yKFwiUmVzdCBwYXJhbWV0ZXIgbXVzdCBiZSBmaW5hbCBwYXJhbWV0ZXIgb2YgYW4gYXJndW1lbnQgbGlzdFwiKSxwbXI9cihcIlJlc3QgZWxlbWVudCBtdXN0IGJlIGZpbmFsIGVsZW1lbnQgb2YgYW4gYXJyYXkgcGF0dGVyblwiKSxtbXI9cihcIlJlc3QgcHJvcGVydHkgbXVzdCBiZSBmaW5hbCBwcm9wZXJ0eSBvZiBhbiBvYmplY3QgcGF0dGVyblwiKSxfbXI9cihcImFzeW5jIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgaXNuJ3QgbmVjZXNzYXJ5IGZvciB5b3VyIGRlY2xhcmUgZnVuY3Rpb24gc3RhdGVtZW50LiBJdCBpcyBzdWZmaWNpZW50IGZvciB5b3VyIGRlY2xhcmUgZnVuY3Rpb24gdG8ganVzdCBoYXZlIGEgUHJvbWlzZSByZXR1cm4gdHlwZS5cIikseW1yPXIoXCJgZGVjbGFyZWAgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGNsYXNzIGZpZWxkcy5cIiksaG1yPXIoXCJVbmV4cGVjdGVkIHRva2VuIGA9YC4gSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhIGBkZWNsYXJlYC5cIiksZG1yPXIoXCJVbmV4cGVjdGVkIHRva2VuIGA9YC4gSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhIGBkZWNsYXJlIG9wYXF1ZSB0eXBlYC5cIiksa21yPXIoXCJgZGVjbGFyZSBleHBvcnQgbGV0YCBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYGRlY2xhcmUgZXhwb3J0IHZhcmAgaW5zdGVhZC5cIiksd21yPXIoXCJgZGVjbGFyZSBleHBvcnQgY29uc3RgIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBgZGVjbGFyZSBleHBvcnQgdmFyYCBpbnN0ZWFkLlwiKSxFbXI9cihcImBkZWNsYXJlIGV4cG9ydCB0eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYGV4cG9ydCB0eXBlYCBpbnN0ZWFkLlwiKSxTbXI9cihcImBkZWNsYXJlIGV4cG9ydCBpbnRlcmZhY2VgIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBgZXhwb3J0IGludGVyZmFjZWAgaW5zdGVhZC5cIiksZ21yPXIoXCJgZXhwb3J0ICogYXNgIGlzIGFuIGVhcmx5LXN0YWdlIHByb3Bvc2FsIGFuZCBpcyBub3QgZW5hYmxlZCBieSBkZWZhdWx0LiBUbyBlbmFibGUgc3VwcG9ydCBpbiB0aGUgcGFyc2VyLCB1c2UgdGhlIGBlc3Byb3Bvc2FsX2V4cG9ydF9zdGFyX2FzYCBvcHRpb25cIiksRm1yPXIoXCJGb3VuZCBhIGRlY29yYXRvciBpbiBhbiB1bnN1cHBvcnRlZCBwb3NpdGlvbi5cIiksVG1yPXIoXCJUeXBlIHBhcmFtZXRlciBkZWNsYXJhdGlvbiBuZWVkcyBhIGRlZmF1bHQsIHNpbmNlIGEgcHJlY2VkaW5nIHR5cGUgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIGhhcyBhIGRlZmF1bHQuXCIpLE9tcj1yKFwiRHVwbGljYXRlIGBkZWNsYXJlIG1vZHVsZS5leHBvcnRzYCBzdGF0ZW1lbnQhXCIpLEltcj1yKFwiRm91bmQgYm90aCBgZGVjbGFyZSBtb2R1bGUuZXhwb3J0c2AgYW5kIGBkZWNsYXJlIGV4cG9ydGAgaW4gdGhlIHNhbWUgbW9kdWxlLiBNb2R1bGVzIGNhbiBvbmx5IGhhdmUgMSBzaW5jZSB0aGV5IGFyZSBlaXRoZXIgYW4gRVMgbW9kdWxlIHhvciB0aGV5IGFyZSBhIENvbW1vbkpTIG1vZHVsZS5cIiksQW1yPXIoXCJHZXR0ZXIgc2hvdWxkIGhhdmUgemVybyBwYXJhbWV0ZXJzXCIpLE5tcj1yKFwiU2V0dGVyIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlclwiKSxDbXI9cihcImBpbXBvcnQgdHlwZWAgb3IgYGltcG9ydCB0eXBlb2ZgIVwiKSxQbXI9cihcIkltcG9ydHMgd2l0aGluIGEgYGRlY2xhcmUgbW9kdWxlYCBib2R5IG11c3QgYWx3YXlzIGJlIFwiKSxEbXI9cihcIlRoZSBgdHlwZWAgYW5kIGB0eXBlb2ZgIGtleXdvcmRzIG9uIG5hbWVkIGltcG9ydHMgY2FuIG9ubHkgYmUgdXNlZCBvbiByZWd1bGFyIGBpbXBvcnRgIHN0YXRlbWVudHMuIEl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYGltcG9ydCB0eXBlYCBvciBgaW1wb3J0IHR5cGVvZmAgc3RhdGVtZW50c1wiKSxMbXI9cihcIk1pc3NpbmcgY29tbWEgYmV0d2VlbiBpbXBvcnQgc3BlY2lmaWVyc1wiKSxSbXI9cihcIk1pc3NpbmcgY29tbWEgYmV0d2VlbiBleHBvcnQgc3BlY2lmaWVyc1wiKSxqbXI9cihcIk1hbGZvcm1lZCB1bmljb2RlXCIpLEdtcj1yKFwiQ2xhc3NlcyBtYXkgb25seSBoYXZlIG9uZSBjb25zdHJ1Y3RvclwiKSxNbXI9cihcIlByaXZhdGUgZmllbGRzIG1heSBub3QgYmUgZGVsZXRlZC5cIiksQm1yPXIoXCJQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSByZWZlcmVuY2VkIGZyb20gd2l0aGluIGEgY2xhc3MuXCIpLHFtcj1yKFwiWW91IG1heSBub3QgYWNjZXNzIGEgcHJpdmF0ZSBmaWVsZCB0aHJvdWdoIHRoZSBgc3VwZXJgIGtleXdvcmQuXCIpLFVtcj1yKFwiWWllbGQgZXhwcmVzc2lvbiBub3QgYWxsb3dlZCBpbiBmb3JtYWwgcGFyYW1ldGVyXCIpLEhtcj1yKFwiYGF3YWl0YCBpcyBhbiBpbnZhbGlkIGlkZW50aWZpZXIgaW4gYXN5bmMgZnVuY3Rpb25zXCIpLFhtcj1yKFwiYHlpZWxkYCBpcyBhbiBpbnZhbGlkIGlkZW50aWZpZXIgaW4gZ2VuZXJhdG9yc1wiKSxZbXI9cihcImVpdGhlciBhIGBsZXRgIGJpbmRpbmcgcGF0dGVybiwgb3IgYSBtZW1iZXIgZXhwcmVzc2lvbi5cIiksVm1yPXIoXCJgbGV0IFtgIGlzIGFtYmlndW91cyBpbiB0aGlzIHBvc2l0aW9uIGJlY2F1c2UgaXQgaXMgXCIpLHptcj1yKFwiTGl0ZXJhbHMgY2Fubm90IGJlIHVzZWQgYXMgc2hvcnRoYW5kIHByb3BlcnRpZXMuXCIpLEttcj1yKFwiQ29tcHV0ZWQgcHJvcGVydGllcyBtdXN0IGhhdmUgYSB2YWx1ZS5cIiksV21yPXIoXCJPYmplY3QgcGF0dGVybiBjYW4ndCBjb250YWluIG1ldGhvZHNcIiksSm1yPXIoXCJBIHRyYWlsaW5nIGNvbW1hIGlzIG5vdCBwZXJtaXR0ZWQgYWZ0ZXIgdGhlIHJlc3QgZWxlbWVudFwiKSwkbXI9cihcIkFuIG9wdGlvbmFsIGNoYWluIG1heSBub3QgYmUgdXNlZCBpbiBhIGBuZXdgIGV4cHJlc3Npb24uXCIpLFptcj1yKFwiVGVtcGxhdGUgbGl0ZXJhbHMgbWF5IG5vdCBiZSB1c2VkIGluIGFuIG9wdGlvbmFsIGNoYWluLlwiKSxRbXI9cihcIlVuZXhwZWN0ZWQgd2hpdGVzcGFjZSBiZXR3ZWVuIGAjYCBhbmQgaWRlbnRpZmllclwiKSxyOXI9cihcIkEgdHlwZSBhbm5vdGF0aW9uIGlzIHJlcXVpcmVkIGZvciB0aGUgYHRoaXNgIHBhcmFtZXRlci5cIiksZTlyPXIoXCJUaGUgYHRoaXNgIHBhcmFtZXRlciBtdXN0IGJlIHRoZSBmaXJzdCBmdW5jdGlvbiBwYXJhbWV0ZXIuXCIpLG45cj1yKFwiVGhlIGB0aGlzYCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsLlwiKSx0OXI9cihcIkEgZ2V0dGVyIGNhbm5vdCBoYXZlIGEgYHRoaXNgIHBhcmFtZXRlci5cIiksdTlyPXIoXCJBIHNldHRlciBjYW5ub3QgaGF2ZSBhIGB0aGlzYCBwYXJhbWV0ZXIuXCIpLGk5cj1yKFwiQXJyb3cgZnVuY3Rpb25zIGNhbm5vdCBoYXZlIGEgYHRoaXNgIHBhcmFtZXRlcjsgYXJyb3cgZnVuY3Rpb25zIGF1dG9tYXRpY2FsbHkgYmluZCBgdGhpc2Agd2hlbiBkZWNsYXJlZC5cIiksZjlyPXIoXCJDb25zdHJ1Y3RvcnMgY2Fubm90IGhhdmUgYSBgdGhpc2AgcGFyYW1ldGVyOyBjb25zdHJ1Y3RvcnMgZG9uJ3QgYmluZCBgdGhpc2AgbGlrZSBvdGhlciBmdW5jdGlvbnMuXCIpLHg5cj1bMCxbMTEscihcIkJvb2xlYW4gZW51bSBtZW1iZXJzIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFVzZSBlaXRoZXIgYFwiKSxbMiwwLFsxMSxyKFwiID0gdHJ1ZSxgIG9yIGBcIiksWzIsMCxbMTEscihcIiA9IGZhbHNlLGAgaW4gZW51bSBgXCIpLFsyLDAsWzExLHIoRXMpLDBdXV1dXV1dLHIoXCJCb29sZWFuIGVudW0gbWVtYmVycyBuZWVkIHRvIGJlIGluaXRpYWxpemVkLiBVc2UgZWl0aGVyIGAlcyA9IHRydWUsYCBvciBgJXMgPSBmYWxzZSxgIGluIGVudW0gYCVzYC5cIildLG85cj1bMCxbMTEscihcIkVudW0gbWVtYmVyIG5hbWVzIG5lZWQgdG8gYmUgdW5pcXVlLCBidXQgdGhlIG5hbWUgYFwiKSxbMiwwLFsxMSxyKFwiYCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgYmVmb3JlIGluIGVudW0gYFwiKSxbMiwwLFsxMSxyKEVzKSwwXV1dXV0scihcIkVudW0gbWVtYmVyIG5hbWVzIG5lZWQgdG8gYmUgdW5pcXVlLCBidXQgdGhlIG5hbWUgYCVzYCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgYmVmb3JlIGluIGVudW0gYCVzYC5cIildLGE5cj1bMCxbMTEscihJVSksWzIsMCxbMTEscihcImAgaGFzIGluY29uc2lzdGVudCBtZW1iZXIgaW5pdGlhbGl6ZXJzLiBFaXRoZXIgdXNlIG5vIGluaXRpYWxpemVycywgb3IgY29uc2lzdGVudGx5IHVzZSBsaXRlcmFscyAoZWl0aGVyIGJvb2xlYW5zLCBudW1iZXJzLCBvciBzdHJpbmdzKSBmb3IgYWxsIG1lbWJlciBpbml0aWFsaXplcnMuXCIpLDBdXV0scihcIkVudW0gYCVzYCBoYXMgaW5jb25zaXN0ZW50IG1lbWJlciBpbml0aWFsaXplcnMuIEVpdGhlciB1c2Ugbm8gaW5pdGlhbGl6ZXJzLCBvciBjb25zaXN0ZW50bHkgdXNlIGxpdGVyYWxzIChlaXRoZXIgYm9vbGVhbnMsIG51bWJlcnMsIG9yIHN0cmluZ3MpIGZvciBhbGwgbWVtYmVyIGluaXRpYWxpemVycy5cIildLGM5cj1bMCxbMTEscihcIlVzZSBvbmUgb2YgYGJvb2xlYW5gLCBgbnVtYmVyYCwgYHN0cmluZ2AsIG9yIGBzeW1ib2xgIGluIGVudW0gYFwiKSxbMiwwLFsxMSxyKEVzKSwwXV1dLHIoXCJVc2Ugb25lIG9mIGBib29sZWFuYCwgYG51bWJlcmAsIGBzdHJpbmdgLCBvciBgc3ltYm9sYCBpbiBlbnVtIGAlc2AuXCIpXSxzOXI9WzAsWzExLHIoXCJFbnVtIHR5cGUgYFwiKSxbMiwwLFsxMSxyKFwiYCBpcyBub3QgdmFsaWQuIFwiKSxbMiwwLDBdXV1dLHIoXCJFbnVtIHR5cGUgYCVzYCBpcyBub3QgdmFsaWQuICVzXCIpXSx2OXI9WzAsWzExLHIoXCJTdXBwbGllZCBlbnVtIHR5cGUgaXMgbm90IHZhbGlkLiBcIiksWzIsMCwwXV0scihcIlN1cHBsaWVkIGVudW0gdHlwZSBpcyBub3QgdmFsaWQuICVzXCIpXSxsOXI9WzAsWzExLHIoXCJFbnVtIG1lbWJlciBuYW1lcyBhbmQgaW5pdGlhbGl6ZXJzIGFyZSBzZXBhcmF0ZWQgd2l0aCBgPWAuIFJlcGxhY2UgYFwiKSxbMiwwLFsxMSxyKFwiOmAgd2l0aCBgXCIpLFsyLDAsWzExLHIoXCIgPWAuXCIpLDBdXV1dXSxyKFwiRW51bSBtZW1iZXIgbmFtZXMgYW5kIGluaXRpYWxpemVycyBhcmUgc2VwYXJhdGVkIHdpdGggYD1gLiBSZXBsYWNlIGAlczpgIHdpdGggYCVzID1gLlwiKV0sYjlyPVswLFsxMSxyKFwiU3ltYm9sIGVudW0gbWVtYmVycyBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQuIFVzZSBgXCIpLFsyLDAsWzExLHIoXCIsYCBpbiBlbnVtIGBcIiksWzIsMCxbMTEscihFcyksMF1dXV1dLHIoXCJTeW1ib2wgZW51bSBtZW1iZXJzIGNhbm5vdCBiZSBpbml0aWFsaXplZC4gVXNlIGAlcyxgIGluIGVudW0gYCVzYC5cIildLHA5cj1bMCxbMTEscihJVSksWzIsMCxbMTEscihcImAgaGFzIHR5cGUgYFwiKSxbMiwwLFsxMSxyKFwiYCwgc28gdGhlIGluaXRpYWxpemVyIG9mIGBcIiksWzIsMCxbMTEscihcImAgbmVlZHMgdG8gYmUgYSBcIiksWzIsMCxbMTEscihcIiBsaXRlcmFsLlwiKSwwXV1dXV1dXV1dLHIoXCJFbnVtIGAlc2AgaGFzIHR5cGUgYCVzYCwgc28gdGhlIGluaXRpYWxpemVyIG9mIGAlc2AgbmVlZHMgdG8gYmUgYSAlcyBsaXRlcmFsLlwiKV0sbTlyPVswLFsxMSxyKFwiVGhlIGVudW0gbWVtYmVyIGluaXRpYWxpemVyIGZvciBgXCIpLFsyLDAsWzExLHIoXCJgIG5lZWRzIHRvIGJlIGEgbGl0ZXJhbCAoZWl0aGVyIGEgYm9vbGVhbiwgbnVtYmVyLCBvciBzdHJpbmcpIGluIGVudW0gYFwiKSxbMiwwLFsxMSxyKEVzKSwwXV1dXV0scihcIlRoZSBlbnVtIG1lbWJlciBpbml0aWFsaXplciBmb3IgYCVzYCBuZWVkcyB0byBiZSBhIGxpdGVyYWwgKGVpdGhlciBhIGJvb2xlYW4sIG51bWJlciwgb3Igc3RyaW5nKSBpbiBlbnVtIGAlc2AuXCIpXSxfOXI9WzAsWzExLHIoXCJFbnVtIG1lbWJlciBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBsb3dlcmNhc2UgJ2EnIHRocm91Z2ggJ3onLiBJbnN0ZWFkIG9mIHVzaW5nIGBcIiksWzIsMCxbMTEscihcImAsIGNvbnNpZGVyIHVzaW5nIGBcIiksWzIsMCxbMTEscihcImAsIGluIGVudW0gYFwiKSxbMiwwLFsxMSxyKEVzKSwwXV1dXV1dXSxyKFwiRW51bSBtZW1iZXIgbmFtZXMgY2Fubm90IHN0YXJ0IHdpdGggbG93ZXJjYXNlICdhJyB0aHJvdWdoICd6Jy4gSW5zdGVhZCBvZiB1c2luZyBgJXNgLCBjb25zaWRlciB1c2luZyBgJXNgLCBpbiBlbnVtIGAlc2AuXCIpXSx5OXI9cihcIlRoZSBgLi4uYCBtdXN0IGNvbWUgYXQgdGhlIGVuZCBvZiB0aGUgZW51bSBib2R5LiBSZW1vdmUgdGhlIHRyYWlsaW5nIGNvbW1hLlwiKSxoOXI9cihcIlRoZSBgLi4uYCBtdXN0IGNvbWUgYWZ0ZXIgYWxsIGVudW0gbWVtYmVycy4gTW92ZSBpdCB0byB0aGUgZW5kIG9mIHRoZSBlbnVtIGJvZHkuXCIpLGQ5cj1bMCxbMTEscihcIk51bWJlciBlbnVtIG1lbWJlcnMgbmVlZCB0byBiZSBpbml0aWFsaXplZCwgZS5nLiBgXCIpLFsyLDAsWzExLHIoXCIgPSAxLGAgaW4gZW51bSBgXCIpLFsyLDAsWzExLHIoRXMpLDBdXV1dXSxyKFwiTnVtYmVyIGVudW0gbWVtYmVycyBuZWVkIHRvIGJlIGluaXRpYWxpemVkLCBlLmcuIGAlcyA9IDEsYCBpbiBlbnVtIGAlc2AuXCIpXSxrOXI9WzAsWzExLHIoXCJTdHJpbmcgZW51bSBtZW1iZXJzIG5lZWQgdG8gY29uc2lzdGVudGx5IGVpdGhlciBhbGwgdXNlIGluaXRpYWxpemVycywgb3IgdXNlIG5vIGluaXRpYWxpemVycywgaW4gZW51bSBcIiksWzIsMCxbMTIsNDYsMF1dXSxyKFwiU3RyaW5nIGVudW0gbWVtYmVycyBuZWVkIHRvIGNvbnNpc3RlbnRseSBlaXRoZXIgYWxsIHVzZSBpbml0aWFsaXplcnMsIG9yIHVzZSBubyBpbml0aWFsaXplcnMsIGluIGVudW0gJXMuXCIpXSx3OXI9WzAsWzExLHIoVUgpLFsyLDAsMF1dLHIoXCJVbmV4cGVjdGVkICVzXCIpXSxFOXI9WzAsWzExLHIoVUgpLFsyLDAsWzExLHIoXCIsIGV4cGVjdGVkIFwiKSxbMiwwLDBdXV1dLHIoXCJVbmV4cGVjdGVkICVzLCBleHBlY3RlZCAlc1wiKV0sUzlyPVswLFsxMSxyKGJWKSxbMiwwLFsxMSxyKFwiYC4gRGlkIHlvdSBtZWFuIGBcIiksWzIsMCxbMTEscihcImA/XCIpLDBdXV1dXSxyKFwiVW5leHBlY3RlZCB0b2tlbiBgJXNgLiBEaWQgeW91IG1lYW4gYCVzYD9cIildLGc5cj1yKFAzKSxGOXI9cihcIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yICdcIiksVDlyPXIoXCJSZW1vdmUgdGhlIHBlcmlvZC5cIiksTzlyPXIoXCJJbmRleGVkIGFjY2VzcyB1c2VzIGJyYWNrZXQgbm90YXRpb24uXCIpLEk5cj1bMCxbMTEscihcIkludmFsaWQgaW5kZXhlZCBhY2Nlc3MuIFwiKSxbMiwwLFsxMSxyKFwiIFVzZSB0aGUgZm9ybWF0IGBUW0tdYC5cIiksMF1dXSxyKFwiSW52YWxpZCBpbmRleGVkIGFjY2Vzcy4gJXMgVXNlIHRoZSBmb3JtYXQgYFRbS11gLlwiKV0sQTlyPXIoUDMpLE45cj1yKFwiVW5kZWZpbmVkIGxhYmVsICdcIiksQzlyPXIoXCInIGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWRcIiksUDlyPXIoXCIgJ1wiKSxEOXI9cihcIkV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciBcIiksTDlyPXIoYUYpLFI5cj1yKFwiSW4gc3RyaWN0IG1vZGUgY29kZSwgZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGF0IHRvcCBsZXZlbCBvciBcIiksajlyPXIoXCJpbnNpZGUgYSBibG9jaywgb3IgYXMgdGhlIGJvZHkgb2YgYW4gaWYgc3RhdGVtZW50LlwiKSxHOXI9cihcIkluIG5vbi1zdHJpY3QgbW9kZSBjb2RlLCBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgYXQgdG9wIGxldmVsLCBcIiksTTlyPVswLFsxMSxyKFwiRHVwbGljYXRlIGV4cG9ydCBmb3IgYFwiKSxbMiwwLFsxMiw5NiwwXV1dLHIoXCJEdXBsaWNhdGUgZXhwb3J0IGZvciBgJXNgXCIpXSxCOXI9cihcImAgaXMgZGVjbGFyZWQgbW9yZSB0aGFuIG9uY2UuXCIpLHE5cj1yKFwiUHJpdmF0ZSBmaWVsZHMgbWF5IG9ubHkgYmUgZGVjbGFyZWQgb25jZS4gYCNcIiksVTlyPXIoXCJzdGF0aWMgXCIpLEg5cj1yKEMpLFg5cj1yKFlZKSxZOXI9cihcIm1ldGhvZHNcIiksVjlyPXIoXCJmaWVsZHNcIiksejlyPXIoRXMpLEs5cj1yKFwiIG5hbWVkIGBcIiksVzlyPXIoXCJDbGFzc2VzIG1heSBub3QgaGF2ZSBcIiksSjlyPXIoXCJgIGhhcyBub3QgYmVlbiBkZWNsYXJlZC5cIiksJDlyPXIoXCJQcml2YXRlIGZpZWxkcyBtdXN0IGJlIGRlY2xhcmVkIGJlZm9yZSB0aGV5IGNhbiBiZSByZWZlcmVuY2VkLiBgI1wiKSxaOXI9WzAsWzExLHIoYlYpLFsyLDAsWzExLHIoXCJgLiBQYXJlbnRoZXNlcyBhcmUgcmVxdWlyZWQgdG8gY29tYmluZSBgPz9gIHdpdGggYCYmYCBvciBgfHxgIGV4cHJlc3Npb25zLlwiKSwwXV1dLHIoXCJVbmV4cGVjdGVkIHRva2VuIGAlc2AuIFBhcmVudGhlc2VzIGFyZSByZXF1aXJlZCB0byBjb21iaW5lIGA/P2Agd2l0aCBgJiZgIG9yIGB8fGAgZXhwcmVzc2lvbnMuXCIpXSxROXI9cihcIlBhcnNlX2Vycm9yLkVycm9yXCIpLHJfcj1bMCxyKFwic3JjL3RoaXJkLXBhcnR5L3NlZGxleC9mbG93X3NlZGxleGluZy5tbFwiKSxzMSw0XSxlX3I9cihcIkZsb3dfc2VkbGV4aW5nLk1hbEZvcm1lZFwiKSxuX3I9WzAsMSwwXSx0X3I9WzAsMCxbMCwxLDBdLFswLDEsMF1dLHVfcj1yKFlVKSxpX3I9cihcImVuZCBvZiBpbnB1dFwiKSxmX3I9cihybCkseF9yPXIoXCJ0ZW1wbGF0ZSBsaXRlcmFsIHBhcnRcIiksb19yPXIocmwpLGFfcj1yKE1IKSxjX3I9cihZVSksc19yPXIocmwpLHZfcj1yKGR2KSxsX3I9cihybCksYl9yPXIoeDEpLHBfcj1yKHJsKSxtX3I9cihUdiksX19yPXIoXCJhblwiKSx5X3I9cih5aSksaF9yPXIocGkpLGRfcj1bMCxbMTEscihcInRva2VuIGBcIiksWzIsMCxbMTIsOTYsMF1dXSxyKFwidG9rZW4gYCVzYFwiKV0sa19yPXIoaEgpLHdfcj1yKGIzKSxFX3I9cihcInt8XCIpLFNfcj1yKFwifH1cIiksZ19yPXIoSFgpLEZfcj1yKFowKSxUX3I9cihcIltcIiksT19yPXIoXCJdXCIpLElfcj1yKFZZKSxBX3I9cihcIixcIiksTl9yPXIoTG8pLENfcj1yKFwiPT5cIiksUF9yPXIoXCIuLi5cIiksRF9yPXIoZ1gpLExfcj1yKFlZKSxSX3I9cihNMiksal9yPXIoQTMpLEdfcj1yKFIyKSxNX3I9cihqMiksQl9yPXIoSnUpLHFfcj1yKEQ3KSxVX3I9cihpMSksSF9yPXIoRjcpLFhfcj1yKGQ0KSxZX3I9cihVMiksVl9yPXIoSzYpLHpfcj1yKEM4KSxLX3I9cihEMiksV19yPXIoRzIpLEpfcj1yKGZzKSwkX3I9cihDaSksWl9yPXIoR2kpLFFfcj1yKEE3KSxyeXI9cihkNiksZXlyPXIobzYpLG55cj1yKE43KSx0eXI9cihfaSksdXlyPXIoXzQpLGl5cj1yKHE4KSxmeXI9cihucCkseHlyPXIocTIpLG95cj1yKFA3KSxheXI9cihudSksY3lyPXIoVTQpLHN5cj1yKHUxKSx2eXI9cihKMiksbHlyPXIocnMpLGJ5cj1yKGVzKSxweXI9cihiOCksbXlyPXIoXzMpLF95cj1yKFV1KSx5eXI9cih5diksaHlyPXIod3MpLGR5cj1yKGU3KSxreXI9cih5NCksd3lyPXIoazQpLEV5cj1yKGE2KSxTeXI9cihFNiksZ3lyPXIoRXUpLEZ5cj1yKEk3KSxUeXI9cihUMiksT3lyPXIoSmMpLEl5cj1yKGVoKSxBeXI9cihDUyksTnlyPXIoZ3MpLEN5cj1yKGR4KSxQeXI9cihcIiVjaGVja3NcIiksRHlyPXIoYVgpLEx5cj1yKHpYKSxSeXI9cih4VSksanlyPXIod0gpLEd5cj1yKGJIKSxNeXI9cihYSCksQnlyPXIoaFgpLHF5cj1yKGxIKSxVeXI9cihuWSksSHlyPXIoeFgpLFh5cj1yKEJVKSxZeXI9cihXVSksVnlyPXIoclYpLHp5cj1yKEFVKSxLeXI9cih0WCksV3lyPXIoWE8pLEp5cj1yKFwiPy5cIiksJHlyPXIoS2UpLFp5cj1yKFwiP1wiKSxReXI9cihvMSkscmhyPXIoekgpLGVocj1yKE1YKSxuaHI9cihPSCksdGhyPXIoSTYpLHVocj1yKGpkKSxpaHI9cihsViksZmhyPXIoalkpLHhocj1yKFBYKSxvaHI9cih6WSksYWhyPXIoWkgpLGNocj1yKE9VKSxzaHI9cihTMyksdmhyPXIoY3YpLGxocj1yKHZZKSxiaHI9cihfWCkscGhyPXIoc1gpLG1ocj1yKHhzKSxfaHI9cihGYSkseWhyPXIoUXUpLGhocj1yKFVVKSxkaHI9cihXSCksa2hyPXIoWFkpLHdocj1yKEt0KSxFaHI9cihaWSksU2hyPXIoc0gpLGdocj1yKG9WKSxGaHI9cihDKSxUaHI9cihuNiksT2hyPXIoSDgpLElocj1yKHY3KSxBaHI9cihkdiksTmhyPXIoeDEpLENocj1yKFR2KSxQaHI9cihlcyksRGhyPXIoSzQpLExocj1yKFF1KSxSaHI9cihRdSksamhyPXIoTzIpLEdocj1yKE82KSxNaHI9cihcIlRfTENVUkxZXCIpLEJocj1yKFwiVF9SQ1VSTFlcIikscWhyPXIoXCJUX0xDVVJMWUJBUlwiKSxVaHI9cihcIlRfUkNVUkxZQkFSXCIpLEhocj1yKFwiVF9MUEFSRU5cIiksWGhyPXIoXCJUX1JQQVJFTlwiKSxZaHI9cihcIlRfTEJSQUNLRVRcIiksVmhyPXIoXCJUX1JCUkFDS0VUXCIpLHpocj1yKFwiVF9TRU1JQ09MT05cIiksS2hyPXIoXCJUX0NPTU1BXCIpLFdocj1yKFwiVF9QRVJJT0RcIiksSmhyPXIoXCJUX0FSUk9XXCIpLCRocj1yKFwiVF9FTExJUFNJU1wiKSxaaHI9cihcIlRfQVRcIiksUWhyPXIoXCJUX1BPVU5EXCIpLHJkcj1yKFwiVF9GVU5DVElPTlwiKSxlZHI9cihcIlRfSUZcIiksbmRyPXIoXCJUX0lOXCIpLHRkcj1yKFwiVF9JTlNUQU5DRU9GXCIpLHVkcj1yKFwiVF9SRVRVUk5cIiksaWRyPXIoXCJUX1NXSVRDSFwiKSxmZHI9cihcIlRfVEhJU1wiKSx4ZHI9cihcIlRfVEhST1dcIiksb2RyPXIoXCJUX1RSWVwiKSxhZHI9cihcIlRfVkFSXCIpLGNkcj1yKFwiVF9XSElMRVwiKSxzZHI9cihcIlRfV0lUSFwiKSx2ZHI9cihcIlRfQ09OU1RcIiksbGRyPXIoXCJUX0xFVFwiKSxiZHI9cihcIlRfTlVMTFwiKSxwZHI9cihcIlRfRkFMU0VcIiksbWRyPXIoXCJUX1RSVUVcIiksX2RyPXIoXCJUX0JSRUFLXCIpLHlkcj1yKFwiVF9DQVNFXCIpLGhkcj1yKFwiVF9DQVRDSFwiKSxkZHI9cihcIlRfQ09OVElOVUVcIiksa2RyPXIoXCJUX0RFRkFVTFRcIiksd2RyPXIoXCJUX0RPXCIpLEVkcj1yKFwiVF9GSU5BTExZXCIpLFNkcj1yKFwiVF9GT1JcIiksZ2RyPXIoXCJUX0NMQVNTXCIpLEZkcj1yKFwiVF9FWFRFTkRTXCIpLFRkcj1yKFwiVF9TVEFUSUNcIiksT2RyPXIoXCJUX0VMU0VcIiksSWRyPXIoXCJUX05FV1wiKSxBZHI9cihcIlRfREVMRVRFXCIpLE5kcj1yKFwiVF9UWVBFT0ZcIiksQ2RyPXIoXCJUX1ZPSURcIiksUGRyPXIoXCJUX0VOVU1cIiksRGRyPXIoXCJUX0VYUE9SVFwiKSxMZHI9cihcIlRfSU1QT1JUXCIpLFJkcj1yKFwiVF9TVVBFUlwiKSxqZHI9cihcIlRfSU1QTEVNRU5UU1wiKSxHZHI9cihcIlRfSU5URVJGQUNFXCIpLE1kcj1yKFwiVF9QQUNLQUdFXCIpLEJkcj1yKFwiVF9QUklWQVRFXCIpLHFkcj1yKFwiVF9QUk9URUNURURcIiksVWRyPXIoXCJUX1BVQkxJQ1wiKSxIZHI9cihcIlRfWUlFTERcIiksWGRyPXIoXCJUX0RFQlVHR0VSXCIpLFlkcj1yKFwiVF9ERUNMQVJFXCIpLFZkcj1yKFwiVF9UWVBFXCIpLHpkcj1yKFwiVF9PUEFRVUVcIiksS2RyPXIoXCJUX09GXCIpLFdkcj1yKFwiVF9BU1lOQ1wiKSxKZHI9cihcIlRfQVdBSVRcIiksJGRyPXIoXCJUX0NIRUNLU1wiKSxaZHI9cihcIlRfUlNISUZUM19BU1NJR05cIiksUWRyPXIoXCJUX1JTSElGVF9BU1NJR05cIikscmtyPXIoXCJUX0xTSElGVF9BU1NJR05cIiksZWtyPXIoXCJUX0JJVF9YT1JfQVNTSUdOXCIpLG5rcj1yKFwiVF9CSVRfT1JfQVNTSUdOXCIpLHRrcj1yKFwiVF9CSVRfQU5EX0FTU0lHTlwiKSx1a3I9cihcIlRfTU9EX0FTU0lHTlwiKSxpa3I9cihcIlRfRElWX0FTU0lHTlwiKSxma3I9cihcIlRfTVVMVF9BU1NJR05cIikseGtyPXIoXCJUX0VYUF9BU1NJR05cIiksb2tyPXIoXCJUX01JTlVTX0FTU0lHTlwiKSxha3I9cihcIlRfUExVU19BU1NJR05cIiksY2tyPXIoXCJUX05VTExJU0hfQVNTSUdOXCIpLHNrcj1yKFwiVF9BTkRfQVNTSUdOXCIpLHZrcj1yKFwiVF9PUl9BU1NJR05cIiksbGtyPXIoXCJUX0FTU0lHTlwiKSxia3I9cihcIlRfUExJTkdfUEVSSU9EXCIpLHBrcj1yKFwiVF9QTElOR19QTElOR1wiKSxta3I9cihcIlRfUExJTkdcIiksX2tyPXIoXCJUX0NPTE9OXCIpLHlrcj1yKFwiVF9PUlwiKSxoa3I9cihcIlRfQU5EXCIpLGRrcj1yKFwiVF9CSVRfT1JcIiksa2tyPXIoXCJUX0JJVF9YT1JcIiksd2tyPXIoXCJUX0JJVF9BTkRcIiksRWtyPXIoXCJUX0VRVUFMXCIpLFNrcj1yKFwiVF9OT1RfRVFVQUxcIiksZ2tyPXIoXCJUX1NUUklDVF9FUVVBTFwiKSxGa3I9cihcIlRfU1RSSUNUX05PVF9FUVVBTFwiKSxUa3I9cihcIlRfTEVTU19USEFOX0VRVUFMXCIpLE9rcj1yKFwiVF9HUkVBVEVSX1RIQU5fRVFVQUxcIiksSWtyPXIoXCJUX0xFU1NfVEhBTlwiKSxBa3I9cihcIlRfR1JFQVRFUl9USEFOXCIpLE5rcj1yKFwiVF9MU0hJRlRcIiksQ2tyPXIoXCJUX1JTSElGVFwiKSxQa3I9cihcIlRfUlNISUZUM1wiKSxEa3I9cihcIlRfUExVU1wiKSxMa3I9cihcIlRfTUlOVVNcIiksUmtyPXIoXCJUX0RJVlwiKSxqa3I9cihcIlRfTVVMVFwiKSxHa3I9cihcIlRfRVhQXCIpLE1rcj1yKFwiVF9NT0RcIiksQmtyPXIoXCJUX05PVFwiKSxxa3I9cihcIlRfQklUX05PVFwiKSxVa3I9cihcIlRfSU5DUlwiKSxIa3I9cihcIlRfREVDUlwiKSxYa3I9cihcIlRfRU9GXCIpLFlrcj1yKFwiVF9BTllfVFlQRVwiKSxWa3I9cihcIlRfTUlYRURfVFlQRVwiKSx6a3I9cihcIlRfRU1QVFlfVFlQRVwiKSxLa3I9cihcIlRfTlVNQkVSX1RZUEVcIiksV2tyPXIoXCJUX0JJR0lOVF9UWVBFXCIpLEprcj1yKFwiVF9TVFJJTkdfVFlQRVwiKSwka3I9cihcIlRfVk9JRF9UWVBFXCIpLFprcj1yKFwiVF9TWU1CT0xfVFlQRVwiKSxRa3I9cihcIlRfTlVNQkVSXCIpLHJ3cj1yKFwiVF9CSUdJTlRcIiksZXdyPXIoXCJUX1NUUklOR1wiKSxud3I9cihcIlRfVEVNUExBVEVfUEFSVFwiKSx0d3I9cihcIlRfSURFTlRJRklFUlwiKSx1d3I9cihcIlRfUkVHRVhQXCIpLGl3cj1yKFwiVF9FUlJPUlwiKSxmd3I9cihcIlRfSlNYX0lERU5USUZJRVJcIikseHdyPXIoXCJUX0pTWF9URVhUXCIpLG93cj1yKFwiVF9CT09MRUFOX1RZUEVcIiksYXdyPXIoXCJUX05VTUJFUl9TSU5HTEVUT05fVFlQRVwiKSxjd3I9cihcIlRfQklHSU5UX1NJTkdMRVRPTl9UWVBFXCIpLHN3cj1bMCxyKGtYKSxIVCw5XSx2d3I9WzAscihrWCksQTYsOV0sbHdyPXIoR0gpLGJ3cj1yKFwiKi9cIikscHdyPXIoR0gpLG13cj1yKFwidW5yZWFjaGFibGUgbGluZV9jb21tZW50XCIpLF93cj1yKFwidW5yZWFjaGFibGUgc3RyaW5nX3F1b3RlXCIpLHl3cj1yKFwiXFxcXFwiKSxod3I9cihcInVucmVhY2hhYmxlIHRlbXBsYXRlX3BhcnRcIiksZHdyPXIoXCIke1wiKSxrd3I9cihVWSksd3dyPXIoVVkpLEV3cj1yKE1JKSxTd3I9cihcInVucmVhY2hhYmxlIHJlZ2V4cF9jbGFzc1wiKSxnd3I9cih1WSksRndyPXIoXCJ1bnJlYWNoYWJsZSByZWdleHBfYm9keVwiKSxUd3I9cihDKSxPd3I9cihDKSxJd3I9cihDKSxBd3I9cihDKSxOd3I9cihcInVucmVhY2hhYmxlIGpzeHRleHRcIiksQ3dyPXIoUDMpLFB3cj1yKFYyKSxEd3I9cihTMyksTHdyPXIoY3YpLFJ3cj1yKGhIKSxqd3I9cihiMyksR3dyPXIoXCJ7J30nfVwiKSxNd3I9cihiMyksQndyPXIoXCJ7Jz4nfVwiKSxxd3I9cihjdiksVXdyPXIobDEpLEh3cj1yKFwiaWV4Y2xcIiksWHdyPXIoXCJhZWxpZ1wiKSxZd3I9cihcIk51XCIpLFZ3cj1yKFwiRWFjdXRlXCIpLHp3cj1yKFwiQXRpbGRlXCIpLEt3cj1yKFwiJ2ludCdcIiksV3dyPXIoXCJBRWxpZ1wiKSxKd3I9cihcIkFhY3V0ZVwiKSwkd3I9cihcIkFjaXJjXCIpLFp3cj1yKFwiQWdyYXZlXCIpLFF3cj1yKFwiQWxwaGFcIiksckVyPXIoXCJBcmluZ1wiKSxlRXI9WzAsaFldLG5Fcj1bMCw5MTNdLHRFcj1bMCxydF0sdUVyPVswLG5JXSxpRXI9WzAsSFRdLGZFcj1bMCx2SF0seEVyPVswLDg3NDddLG9Fcj1yKFwiQXVtbFwiKSxhRXI9cihcIkJldGFcIiksY0VyPXIoXCJDY2VkaWxcIiksc0VyPXIoXCJDaGlcIiksdkVyPXIoXCJEYWdnZXJcIiksbEVyPXIoXCJEZWx0YVwiKSxiRXI9cihcIkVUSFwiKSxwRXI9WzAsX0hdLG1Fcj1bMCw5MTZdLF9Fcj1bMCw4MjI1XSx5RXI9WzAsOTM1XSxoRXI9WzAsUUhdLGRFcj1bMCw5MTRdLGtFcj1bMCxYWF0sd0VyPVswLHhZXSxFRXI9cihcIkljaXJjXCIpLFNFcj1yKFwiRWNpcmNcIiksZ0VyPXIoXCJFZ3JhdmVcIiksRkVyPXIoXCJFcHNpbG9uXCIpLFRFcj1yKFwiRXRhXCIpLE9Fcj1yKFwiRXVtbFwiKSxJRXI9cihcIkdhbW1hXCIpLEFFcj1yKFwiSWFjdXRlXCIpLE5Fcj1bMCxWSF0sQ0VyPVswLDkxNV0sUEVyPVswLGVWXSxERXI9WzAsOTE5XSxMRXI9WzAsOTE3XSxSRXI9WzAsTlVdLGpFcj1bMCxuSF0sR0VyPXIoXCJJZ3JhdmVcIiksTUVyPXIoXCJJb3RhXCIpLEJFcj1yKFwiSXVtbFwiKSxxRXI9cihcIkthcHBhXCIpLFVFcj1yKFwiTGFtYmRhXCIpLEhFcj1yKFwiTXVcIiksWEVyPXIoXCJOdGlsZGVcIiksWUVyPVswLFdnXSxWRXI9WzAsOTI0XSx6RXI9WzAsOTIzXSxLRXI9WzAsOTIyXSxXRXI9WzAsQVhdLEpFcj1bMCw5MjFdLCRFcj1bMCxXWF0sWkVyPVswLFRIXSxRRXI9WzAsc1ldLHJTcj1yKFwiU2lnbWFcIiksZVNyPXIoXCJPdGlsZGVcIiksblNyPXIoXCJPRWxpZ1wiKSx0U3I9cihcIk9hY3V0ZVwiKSx1U3I9cihcIk9jaXJjXCIpLGlTcj1yKFwiT2dyYXZlXCIpLGZTcj1yKFwiT21lZ2FcIikseFNyPXIoXCJPbWljcm9uXCIpLG9Tcj1yKFwiT3NsYXNoXCIpLGFTcj1bMCx5Nl0sY1NyPVswLDkyN10sc1NyPVswLDkzN10sdlNyPVswLEE2XSxsU3I9WzAseVldLGJTcj1bMCx5VV0scFNyPVswLDMzOF0sbVNyPXIoXCJPdW1sXCIpLF9Tcj1yKFwiUGhpXCIpLHlTcj1yKFwiUGlcIiksaFNyPXIoXCJQcmltZVwiKSxkU3I9cihcIlBzaVwiKSxrU3I9cihcIlJob1wiKSx3U3I9cihcIlNjYXJvblwiKSxFU3I9WzAsMzUyXSxTU3I9WzAsOTI5XSxnU3I9WzAsOTM2XSxGU3I9WzAsODI0M10sVFNyPVswLDkyOF0sT1NyPVswLDkzNF0sSVNyPVswLG1UXSxBU3I9WzAsUlhdLE5Tcj1yKFwiVXVtbFwiKSxDU3I9cihcIlRIT1JOXCIpLFBTcj1yKFwiVGF1XCIpLERTcj1yKFwiVGhldGFcIiksTFNyPXIoXCJVYWN1dGVcIiksUlNyPXIoXCJVY2lyY1wiKSxqU3I9cihcIlVncmF2ZVwiKSxHU3I9cihcIlVwc2lsb25cIiksTVNyPVswLDkzM10sQlNyPVswLGNwXSxxU3I9WzAsRlVdLFVTcj1bMCxDd10sSFNyPVswLDkyMF0sWFNyPVswLDkzMl0sWVNyPVswLEZYXSxWU3I9cihcIlhpXCIpLHpTcj1yKFwiWWFjdXRlXCIpLEtTcj1yKFwiWXVtbFwiKSxXU3I9cihcIlpldGFcIiksSlNyPXIoXCJhYWN1dGVcIiksJFNyPXIoXCJhY2lyY1wiKSxaU3I9cihcImFjdXRlXCIpLFFTcj1bMCxzVV0scmdyPVswLHJrXSxlZ3I9WzAsQk9dLG5ncj1bMCw5MThdLHRncj1bMCwzNzZdLHVncj1bMCxHWF0saWdyPVswLDkyNl0sZmdyPVswLGlBXSx4Z3I9WzAsVVhdLG9ncj1bMCw5MjVdLGFncj1yKFwiZGVsdGFcIiksY2dyPXIoXCJjYXBcIiksc2dyPXIoXCJhcmluZ1wiKSx2Z3I9cihcImFncmF2ZVwiKSxsZ3I9cihcImFsZWZzeW1cIiksYmdyPXIoXCJhbHBoYVwiKSxwZ3I9cihcImFtcFwiKSxtZ3I9cihcImFuZFwiKSxfZ3I9cihcImFuZ1wiKSx5Z3I9cihcImFwb3NcIiksaGdyPVswLDM5XSxkZ3I9WzAsODczNl0sa2dyPVswLDg3NDNdLHdncj1bMCwzOF0sRWdyPVswLDk0NV0sU2dyPVswLDg1MDFdLGdncj1bMCxodl0sRmdyPXIoXCJhc3ltcFwiKSxUZ3I9cihcImF0aWxkZVwiKSxPZ3I9cihcImF1bWxcIiksSWdyPXIoXCJiZHF1b1wiKSxBZ3I9cihcImJldGFcIiksTmdyPXIoXCJicnZiYXJcIiksQ2dyPXIoXCJidWxsXCIpLFBncj1bMCw4MjI2XSxEZ3I9WzAsRFldLExncj1bMCw5NDZdLFJncj1bMCw4MjIyXSxqZ3I9WzAsZlZdLEdncj1bMCxKSF0sTWdyPVswLDg3NzZdLEJncj1bMCxiVV0scWdyPXIoXCJjb3B5XCIpLFVncj1yKFwiY2NlZGlsXCIpLEhncj1yKFwiY2VkaWxcIiksWGdyPXIoXCJjZW50XCIpLFlncj1yKFwiY2hpXCIpLFZncj1yKFwiY2lyY1wiKSx6Z3I9cihcImNsdWJzXCIpLEtncj1yKFwiY29uZ1wiKSxXZ3I9WzAsODc3M10sSmdyPVswLDk4MjddLCRncj1bMCxyWF0sWmdyPVswLDk2N10sUWdyPVswLGtoXSxyRnI9WzAsaGtdLGVGcj1bMCxxWF0sbkZyPXIoXCJjcmFyclwiKSx0RnI9cihcImN1cFwiKSx1RnI9cihcImN1cnJlblwiKSxpRnI9cihcImRBcnJcIiksZkZyPXIoXCJkYWdnZXJcIikseEZyPXIoXCJkYXJyXCIpLG9Gcj1yKFwiZGVnXCIpLGFGcj1bMCxtVl0sY0ZyPVswLDg1OTVdLHNGcj1bMCw4MjI0XSx2RnI9WzAsODY1OV0sbEZyPVswLEFGXSxiRnI9WzAsODc0Nl0scEZyPVswLDg2MjldLG1Gcj1bMCxOWF0sX0ZyPVswLDg3NDVdLHlGcj1yKFwiZm5vZlwiKSxoRnI9cihcImVuc3BcIiksZEZyPXIoXCJkaWFtc1wiKSxrRnI9cihcImRpdmlkZVwiKSx3RnI9cihcImVhY3V0ZVwiKSxFRnI9cihcImVjaXJjXCIpLFNGcj1yKFwiZWdyYXZlXCIpLGdGcj1yKHY3KSxGRnI9cihcImVtc3BcIiksVEZyPVswLDgxOTVdLE9Gcj1bMCw4NzA5XSxJRnI9WzAsWkZdLEFGcj1bMCx0SF0sTkZyPVswLGhUXSxDRnI9WzAsRHddLFBGcj1bMCw5ODMwXSxERnI9cihcImVwc2lsb25cIiksTEZyPXIoXCJlcXVpdlwiKSxSRnI9cihcImV0YVwiKSxqRnI9cihcImV0aFwiKSxHRnI9cihcImV1bWxcIiksTUZyPXIoXCJldXJvXCIpLEJGcj1yKFwiZXhpc3RcIikscUZyPVswLDg3MDddLFVGcj1bMCw4MzY0XSxIRnI9WzAsSlVdLFhGcj1bMCxzMV0sWUZyPVswLDk1MV0sVkZyPVswLDg4MDFdLHpGcj1bMCw5NDldLEtGcj1bMCw4MTk0XSxXRnI9cihcImd0XCIpLEpGcj1yKFwiZm9yYWxsXCIpLCRGcj1yKFwiZnJhYzEyXCIpLFpGcj1yKFwiZnJhYzE0XCIpLFFGcj1yKFwiZnJhYzM0XCIpLHJUcj1yKFwiZnJhc2xcIiksZVRyPXIoXCJnYW1tYVwiKSxuVHI9cihcImdlXCIpLHRUcj1bMCw4ODA1XSx1VHI9WzAsOTQ3XSxpVHI9WzAsODI2MF0sZlRyPVswLE9ZXSx4VHI9WzAsaVldLG9Ucj1bMCxmWF0sYVRyPVswLDg3MDRdLGNUcj1yKFwiaEFyclwiKSxzVHI9cihcImhhcnJcIiksdlRyPXIoXCJoZWFydHNcIiksbFRyPXIoXCJoZWxsaXBcIiksYlRyPXIoXCJpYWN1dGVcIikscFRyPXIoXCJpY2lyY1wiKSxtVHI9WzAsY0hdLF9Ucj1bMCxCWV0seVRyPVswLDgyMzBdLGhUcj1bMCw5ODI5XSxkVHI9WzAsODU5Nl0sa1RyPVswLDg2NjBdLHdUcj1bMCw2Ml0sRVRyPVswLDQwMl0sU1RyPVswLDk0OF0sZ1RyPVswLGpoXSxGVHI9cihcInByaW1lXCIpLFRUcj1yKFwibmRhc2hcIiksT1RyPXIoXCJsZVwiKSxJVHI9cihcImthcHBhXCIpLEFUcj1yKFwiaWdyYXZlXCIpLE5Ucj1yKFwiaW1hZ2VcIiksQ1RyPXIoXCJpbmZpblwiKSxQVHI9cihcImlvdGFcIiksRFRyPXIoXCJpcXVlc3RcIiksTFRyPXIoXCJpc2luXCIpLFJUcj1yKFwiaXVtbFwiKSxqVHI9WzAsaTZdLEdUcj1bMCw4NzEyXSxNVHI9WzAsbFhdLEJUcj1bMCw5NTNdLHFUcj1bMCw4NzM0XSxVVHI9WzAsODQ2NV0sSFRyPVswLGxPXSxYVHI9cihcImxBcnJcIiksWVRyPXIoXCJsYW1iZGFcIiksVlRyPXIoXCJsYW5nXCIpLHpUcj1yKFwibGFxdW9cIiksS1RyPXIoXCJsYXJyXCIpLFdUcj1yKFwibGNlaWxcIiksSlRyPXIoXCJsZHF1b1wiKSwkVHI9WzAsODIyMF0sWlRyPVswLDg5NjhdLFFUcj1bMCw4NTkyXSxyT3I9WzAscGddLGVPcj1bMCwxMDIxNl0sbk9yPVswLDk1NV0sdE9yPVswLDg2NTZdLHVPcj1bMCw5NTRdLGlPcj1yKFwibWFjclwiKSxmT3I9cihcImxmbG9vclwiKSx4T3I9cihcImxvd2FzdFwiKSxvT3I9cihcImxvelwiKSxhT3I9cihcImxybVwiKSxjT3I9cihcImxzYXF1b1wiKSxzT3I9cihcImxzcXVvXCIpLHZPcj1yKFwibHRcIiksbE9yPVswLDYwXSxiT3I9WzAsODIxNl0scE9yPVswLDgyNDldLG1Pcj1bMCx2VV0sX09yPVswLDk2NzRdLHlPcj1bMCw4NzI3XSxoT3I9WzAsODk3MF0sZE9yPXIoXCJtZGFzaFwiKSxrT3I9cihcIm1pY3JvXCIpLHdPcj1yKFwibWlkZG90XCIpLEVPcj1yKGNZKSxTT3I9cihcIm11XCIpLGdPcj1yKFwibmFibGFcIiksRk9yPXIoXCJuYnNwXCIpLFRPcj1bMCxmWV0sT09yPVswLDg3MTFdLElPcj1bMCw5NTZdLEFPcj1bMCw4NzIyXSxOT3I9WzAsbFNdLENPcj1bMCxBaV0sUE9yPVswLDgyMTJdLERPcj1bMCxiWF0sTE9yPVswLDg4MDRdLFJPcj1yKFwib3JcIiksak9yPXIoXCJvYWN1dGVcIiksR09yPXIoXCJuZVwiKSxNT3I9cihcIm5pXCIpLEJPcj1yKFwibm90XCIpLHFPcj1yKFwibm90aW5cIiksVU9yPXIoXCJuc3ViXCIpLEhPcj1yKFwibnRpbGRlXCIpLFhPcj1yKFwibnVcIiksWU9yPVswLDk1N10sVk9yPVswLFZ5XSx6T3I9WzAsODgzNl0sS09yPVswLDg3MTNdLFdPcj1bMCxMVV0sSk9yPVswLDg3MTVdLCRPcj1bMCw4ODAwXSxaT3I9cihcIm9jaXJjXCIpLFFPcj1yKFwib2VsaWdcIikscklyPXIoXCJvZ3JhdmVcIiksZUlyPXIoXCJvbGluZVwiKSxuSXI9cihcIm9tZWdhXCIpLHRJcj1yKFwib21pY3JvblwiKSx1SXI9cihcIm9wbHVzXCIpLGlJcj1bMCw4ODUzXSxmSXI9WzAsOTU5XSx4SXI9WzAsOTY5XSxvSXI9WzAsODI1NF0sYUlyPVswLFNUXSxjSXI9WzAsMzM5XSxzSXI9WzAsdjhdLHZJcj1bMCxRVV0sbElyPXIoXCJwYXJ0XCIpLGJJcj1yKFwib3JkZlwiKSxwSXI9cihcIm9yZG1cIiksbUlyPXIoXCJvc2xhc2hcIiksX0lyPXIoXCJvdGlsZGVcIikseUlyPXIoXCJvdGltZXNcIiksaElyPXIoXCJvdW1sXCIpLGRJcj1yKFwicGFyYVwiKSxrSXI9WzAsWWddLHdJcj1bMCwkMl0sRUlyPVswLDg4NTVdLFNJcj1bMCxXWV0sZ0lyPVswLHd0XSxGSXI9WzAsbWRdLFRJcj1bMCxxZ10sT0lyPXIoXCJwZXJtaWxcIiksSUlyPXIoXCJwZXJwXCIpLEFJcj1yKFwicGhpXCIpLE5Jcj1yKFwicGlcIiksQ0lyPXIoXCJwaXZcIiksUElyPXIoXCJwbHVzbW5cIiksRElyPXIoXCJwb3VuZFwiKSxMSXI9WzAsTG5dLFJJcj1bMCx1Vl0saklyPVswLDk4Ml0sR0lyPVswLDk2MF0sTUlyPVswLDk2Nl0sQklyPVswLDg4NjldLHFJcj1bMCw4MjQwXSxVSXI9WzAsODcwNl0sSElyPVswLDg3NDRdLFhJcj1bMCw4MjExXSxZSXI9cihcInN1cDFcIiksVklyPXIoXCJybG1cIikseklyPXIoXCJyYXF1b1wiKSxLSXI9cihcInByb2RcIiksV0lyPXIoXCJwcm9wXCIpLEpJcj1yKFwicHNpXCIpLCRJcj1yKFwicXVvdFwiKSxaSXI9cihcInJBcnJcIiksUUlyPXIoXCJyYWRpY1wiKSxyQXI9cihcInJhbmdcIiksZUFyPVswLDEwMjE3XSxuQXI9WzAsODczMF0sdEFyPVswLDg2NThdLHVBcj1bMCwzNF0saUFyPVswLDk2OF0sZkFyPVswLDg3MzNdLHhBcj1bMCw4NzE5XSxvQXI9cihcInJhcnJcIiksYUFyPXIoXCJyY2VpbFwiKSxjQXI9cihcInJkcXVvXCIpLHNBcj1yKFwicmVhbFwiKSx2QXI9cihcInJlZ1wiKSxsQXI9cihcInJmbG9vclwiKSxiQXI9cihcInJob1wiKSxwQXI9WzAsOTYxXSxtQXI9WzAsODk3MV0sX0FyPVswLCRVXSx5QXI9WzAsODQ3Nl0saEFyPVswLDgyMjFdLGRBcj1bMCw4OTY5XSxrQXI9WzAsODU5NF0sd0FyPVswLG53XSxFQXI9cihcInNpZ21hXCIpLFNBcj1yKFwicnNhcXVvXCIpLGdBcj1yKFwicnNxdW9cIiksRkFyPXIoXCJzYnF1b1wiKSxUQXI9cihcInNjYXJvblwiKSxPQXI9cihcInNkb3RcIiksSUFyPXIoXCJzZWN0XCIpLEFBcj1yKFwic2h5XCIpLE5Bcj1bMCxfWV0sQ0FyPVswLE5UXSxQQXI9WzAsODkwMV0sREFyPVswLDM1M10sTEFyPVswLDgyMThdLFJBcj1bMCw4MjE3XSxqQXI9WzAsODI1MF0sR0FyPXIoXCJzaWdtYWZcIiksTUFyPXIoXCJzaW1cIiksQkFyPXIoXCJzcGFkZXNcIikscUFyPXIoXCJzdWJcIiksVUFyPXIoXCJzdWJlXCIpLEhBcj1yKFwic3VtXCIpLFhBcj1yKFwic3VwXCIpLFlBcj1bMCw4ODM1XSxWQXI9WzAsODcyMV0sekFyPVswLDg4MzhdLEtBcj1bMCw4ODM0XSxXQXI9WzAsOTgyNF0sSkFyPVswLDg3NjRdLCRBcj1bMCw5NjJdLFpBcj1bMCw5NjNdLFFBcj1bMCw4MjA3XSxyTnI9cihcInVhcnJcIiksZU5yPXIoXCJ0aGV0YXN5bVwiKSxuTnI9cihcInN1cDJcIiksdE5yPXIoXCJzdXAzXCIpLHVOcj1yKFwic3VwZVwiKSxpTnI9cihcInN6bGlnXCIpLGZOcj1yKFwidGF1XCIpLHhOcj1yKFwidGhlcmU0XCIpLG9Ocj1yKFwidGhldGFcIiksYU5yPVswLDk1Ml0sY05yPVswLDg3NTZdLHNOcj1bMCw5NjRdLHZOcj1bMCx5OF0sbE5yPVswLDg4MzldLGJOcj1bMCxSWV0scE5yPVswLGdPXSxtTnI9cihcInRoaW5zcFwiKSxfTnI9cihcInRob3JuXCIpLHlOcj1yKFwidGlsZGVcIiksaE5yPXIoXCJ0aW1lc1wiKSxkTnI9cihcInRyYWRlXCIpLGtOcj1yKFwidUFyclwiKSx3TnI9cihcInVhY3V0ZVwiKSxFTnI9WzAsbmxdLFNOcj1bMCw4NjU3XSxnTnI9WzAsODQ4Ml0sRk5yPVswLHhUXSxUTnI9WzAsNzMyXSxPTnI9WzAsZ3ZdLElOcj1bMCw4MjAxXSxBTnI9WzAsOTc3XSxOTnI9cihcInhpXCIpLENOcj1yKFwidWNpcmNcIiksUE5yPXIoXCJ1Z3JhdmVcIiksRE5yPXIoXCJ1bWxcIiksTE5yPXIoXCJ1cHNpaFwiKSxSTnI9cihcInVwc2lsb25cIiksak5yPXIoXCJ1dW1sXCIpLEdOcj1yKFwid2VpZXJwXCIpLE1Ocj1bMCxpVV0sQk5yPVswLFkyXSxxTnI9WzAsOTY1XSxVTnI9WzAsOTc4XSxITnI9WzAsSVldLFhOcj1bMCwyNDldLFlOcj1bMCwyNTFdLFZOcj1yKFwieWFjdXRlXCIpLHpOcj1yKFwieWVuXCIpLEtOcj1yKFwieXVtbFwiKSxXTnI9cihcInpldGFcIiksSk5yPXIoXCJ6d2pcIiksJE5yPXIoXCJ6d25qXCIpLFpOcj1bMCxrWV0sUU5yPVswLDgyMDVdLHJDcj1bMCw5NTBdLGVDcj1bMCxnd10sbkNyPVswLCRYXSx0Q3I9WzAsbmRdLHVDcj1bMCw5NThdLGlDcj1bMCw4NTkzXSxmQ3I9WzAsZ1VdLHhDcj1bMCw4MjQyXSxvQ3I9WzAsWFVdLGFDcj1yKFZZKSxjQ3I9cihqZCksc0NyPXIoXCJ1bnJlYWNoYWJsZSBqc3hfY2hpbGRcIiksdkNyPXIoXCJ1bnJlYWNoYWJsZSB0eXBlX3Rva2VuIHdob2xlbnVtYmVyXCIpLGxDcj1yKFwidW5yZWFjaGFibGUgdHlwZV90b2tlbiB3aG9sZWJpZ2ludFwiKSxiQ3I9cihcInVucmVhY2hhYmxlIHR5cGVfdG9rZW4gZmxvYXRiaWdpbnRcIikscENyPXIoXCJ1bnJlYWNoYWJsZSB0eXBlX3Rva2VuIHNjaW51bWJlclwiKSxtQ3I9cihcInVucmVhY2hhYmxlIHR5cGVfdG9rZW4gc2NpYmlnaW50XCIpLF9Dcj1yKFwidW5yZWFjaGFibGUgdHlwZV90b2tlbiBoZXhudW1iZXJcIikseUNyPXIoXCJ1bnJlYWNoYWJsZSB0eXBlX3Rva2VuIGhleGJpZ2ludFwiKSxoQ3I9cihcInVucmVhY2hhYmxlIHR5cGVfdG9rZW4gbGVnYWN5b2N0bnVtYmVyXCIpLGRDcj1yKFwidW5yZWFjaGFibGUgdHlwZV90b2tlbiBvY3RudW1iZXJcIiksa0NyPXIoXCJ1bnJlYWNoYWJsZSB0eXBlX3Rva2VuIG9jdGJpZ2ludFwiKSx3Q3I9cihcInVucmVhY2hhYmxlIHR5cGVfdG9rZW4gYmlubnVtYmVyXCIpLEVDcj1yKFwidW5yZWFjaGFibGUgdHlwZV90b2tlbiBiaWdiaWdpbnRcIiksU0NyPXIoXCJ1bnJlYWNoYWJsZSB0eXBlX3Rva2VuXCIpLGdDcj1yKG8xKSxGQ3I9cihvMSksVENyPXIoa1UpLE9Dcj1yKEg4KSxJQ3I9cihuNiksQUNyPXIoeDEpLE5Dcj1yKE82KSxDQ3I9cihPMiksUENyPXIodjcpLERDcj1yKFA3KSxMQ3I9cihDaSksUkNyPXIoZTcpLGpDcj1bOSwxXSxHQ3I9WzksMF0sTUNyPXIoZnMpLEJDcj1yKGR2KSxxQ3I9cihudSksVUNyPXIoVHYpLEhDcj1yKEs0KSxYQ3I9cihHaSksWUNyPXIocnMpLFZDcj1yKGVzKSx6Q3I9cihcInVucmVhY2hhYmxlIHRlbXBsYXRlX3RhaWxcIiksS0NyPXIoYjMpLFdDcj1bMCxyKEMpLHIoQykscihDKV0sSkNyPXIoXCJ1bnJlYWNoYWJsZSBqc3hfdGFnXCIpLCRDcj1yKFAzKSxaQ3I9cihcInVucmVhY2hhYmxlIHJlZ2V4cFwiKSxRQ3I9cihcInVucmVhY2hhYmxlIHRva2VuIHdob2xlbnVtYmVyXCIpLHJQcj1yKFwidW5yZWFjaGFibGUgdG9rZW4gd2hvbGViaWdpbnRcIiksZVByPXIoXCJ1bnJlYWNoYWJsZSB0b2tlbiBmbG9hdGJpZ2ludFwiKSxuUHI9cihcInVucmVhY2hhYmxlIHRva2VuIHNjaW51bWJlclwiKSx0UHI9cihcInVucmVhY2hhYmxlIHRva2VuIHNjaWJpZ2ludFwiKSx1UHI9cihcInVucmVhY2hhYmxlIHRva2VuIGhleG51bWJlclwiKSxpUHI9cihcInVucmVhY2hhYmxlIHRva2VuIGhleGJpZ2ludFwiKSxmUHI9cihcInVucmVhY2hhYmxlIHRva2VuIGxlZ2FjeW9jdG51bWJlclwiKSx4UHI9cihcInVucmVhY2hhYmxlIHRva2VuIGxlZ2FjeW5vbm9jdG51bWJlclwiKSxvUHI9cihcInVucmVhY2hhYmxlIHRva2VuIG9jdG51bWJlclwiKSxhUHI9cihcInVucmVhY2hhYmxlIHRva2VuIG9jdGJpZ2ludFwiKSxjUHI9cihcInVucmVhY2hhYmxlIHRva2VuIGJpZ251bWJlclwiKSxzUHI9cihcInVucmVhY2hhYmxlIHRva2VuIGJpZ2ludFwiKSx2UHI9cihcInVucmVhY2hhYmxlIHRva2VuXCIpLGxQcj1yKG8xKSxiUHI9cihvMSkscFByPXIoa1UpLG1Qcj1bNixyKFwiIyFcIildLF9Qcj1yKFwiZXhwZWN0ZWQgP1wiKSx5UHI9cihqMiksaFByPXIoXzQpLGRQcj1yKEQyKSxrUHI9cihncyksd1ByPXIoZHgpLEVQcj1yKEE3KSxTUHI9cihkNiksZ1ByPXIobzYpLEZQcj1yKHEyKSxUUHI9cihONyksT1ByPXIoSTcpLElQcj1yKFQyKSxBUHI9cihfaSksTlByPXIoSjIpLENQcj1yKG5wKSxQUHI9cihVNCksRFByPXIoYjgpLExQcj1yKF8zKSxSUHI9cihQNyksalByPXIoQ2kpLEdQcj1yKHE4KSxNUHI9cihNMiksQlByPXIoQTMpLHFQcj1yKHdzKSxVUHI9cihVdSksSFByPXIoUjIpLFhQcj1yKHl2KSxZUHI9cih5NCksVlByPXIoZTcpLHpQcj1yKEcyKSxLUHI9cih1MSksV1ByPXIoZnMpLEpQcj1yKENTKSwkUHI9cihlaCksWlByPXIoazQpLFFQcj1yKGE2KSxyRHI9cihFNiksZURyPXIoSnUpLG5Ecj1yKG51KSx0RHI9cihycyksdURyPXIoRDcpLGlEcj1yKGkxKSxmRHI9cihGNykseERyPXIoR2kpLG9Ecj1yKGQ0KSxhRHI9cihKYyksY0RyPXIoVTIpLHNEcj1yKGVzKSx2RHI9cihLNiksbERyPXIoQzgpLGJEcj1yKEV1KSxwRHI9cihcInVucmVhY2hhYmxlIHN0cmluZ19lc2NhcGVcIiksbURyPXIoWnUpLF9Ecj1yKEgyKSx5RHI9cihIMiksaERyPXIoWnUpLGREcj1yKGRYKSxrRHI9cihvWSksd0RyPXIoXCJuXCIpLEVEcj1yKFwiclwiKSxTRHI9cihcInRcIiksZ0RyPXIocFYpLEZEcj1yKEgyKSxURHI9cihsMSksT0RyPXIobDEpLElEcj1yKFwidW5yZWFjaGFibGUgaWRfY2hhclwiKSxBRHI9cihsMSksTkRyPXIobDEpLENEcj1yKFwiSW52YWxpZCAobGV4ZXIpIGJpZ2ludCBcIiksUERyPXIoXCJJbnZhbGlkIChsZXhlcikgYmlnaW50IGJpbmFyeS9vY3RhbCBcIiksRERyPXIoSDIpLExEcj1yKHBIKSxSRHI9cihvVSksakRyPXIoTmgpLEdEcj1bMTAscihcInRva2VuIElMTEVHQUxcIildLE1Ecj1yKFwiXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXCIpLEJEcj1yKFwiXHUwMDAxXFwwXHUwMDAxXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXCIpLHFEcj1yKFwiXHUwMDAxXFwwXHUwMDAxXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAyXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXCIpLFVEcj1yKFwiXHUwMDAxXFwwXHUwMDAxXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAyXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAzXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXCIpLEhEcj1yKFwiXHUwMDAxXFwwXHUwMDAxXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAyXFwwXHUwMDAzXHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXCIpLFhEcj1yKFwiXHUwMDAxXFwwXFwwXHUwMDAyXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXCIpLFlEcj1yKFwiXHUwMDAxXFwwXHUwMDAxXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAyXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXHUwMDAzXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAxXCIpLFZEcj1yKFwiXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAyXHUwMDAxXHUwMDAxXHUwMDAzXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDA0XCIpLHpEcj1yKFwiXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAyXCIpLEtEcj1yKFwiXHUwMDAxXHUwMDAyXFwwXHUwMDAzXHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XHUwMDA0XCIpLFdEcj1yKFwiXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAyXCIpLEpEcj1yKFwiXHUwMDAxXFwwXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAzXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXHUwMDAzXCIpLCREcj1yKFwiXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXHUwMDAxXCIpLFpEcj1yKFwiXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXFwwXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXHUwMDAxXCIpLFFEcj1yKFwiXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDA0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA1XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA2XHUwMDA1XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA1XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDVcdTAwMDJcXHgwN1wiKSxyTHI9cihcIlx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSxlTHI9cihcIlx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSxuTHI9cihgXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDA0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA1XHUwMDA2XHUwMDA2XHUwMDA2XHUwMDA2XHUwMDA2XHUwMDA2XHUwMDA2XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXGJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxuXHUwMDAyXHUwMDAyXHUwMDAyXFx2XHUwMDAyXFxmXFxyXHUwMDBFXHUwMDAyXHUwMDBGYCksdExyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDJcdTAwMDJcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDVcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDZcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksdUxyPXIoXCJcdTAwMDFcXDBcdTAwMDFcXDBcXDBcdTAwMDJcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcIiksaUxyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcdTAwMDJcIiksZkxyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcdTAwMDFcdTAwMDFcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIikseExyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDNcIiksb0xyPXIoXCJcdTAwMDFcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDNcdTAwMDRcIiksYUxyPXIoXCJcdTAwMDFcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDNcIiksY0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcdTAwMDJcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksc0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksdkxyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDNcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksbExyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDFcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksYkxyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIikscExyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDVcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDZcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksbUxyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksX0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDNcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDNcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIikseUxyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDNcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDRcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDNcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDVcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksaExyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksZExyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDRcdTAwMDRcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDVcdTAwMDFcdTAwMDFcdTAwMDZcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXHgwN1x1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcYlx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwNVx1MDAwMVx1MDAwMVx1MDAwNlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx0XFx4MDdcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXGJcdTAwMDFcdTAwMDFcIiksa0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksd0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDNcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksRUxyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDNcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksU0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDRcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDVcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksZ0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDNcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksRkxyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDNcdTAwMDRcdTAwMDRcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDVcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksVExyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcdTAwMDNcXDBcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDRcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksT0xyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcIiksSUxyPXIoYFx1MDAwMVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwM1x1MDAwM1x1MDAwNVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwNlxceDA3XFxiXHRcblxcdlxceDA3XFxmXFxyXHUwMDBFXHUwMDBGXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE1XHUwMDE1XHUwMDE1XHUwMDE1XHUwMDE1XHUwMDE1XHUwMDE1XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFBXFx4MUJcdTAwMUNcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDFEXHUwMDFFXHUwMDFGIFx0IVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIiMkJVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHRcdFx0XHUwMDAyXHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdTAwMDJcdFx0XHUwMDAyXHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx1MDAwMlx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx1MDAwMlx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHUwMDAyXHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHUwMDAyXHRcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx0XHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx1MDAwMlx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx0XHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx1MDAwMlx0XHUwMDAyXHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx1MDAwMlx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdFx0XHRcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHUwMDAyXHRcdFx0XHRcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdFx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDNcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHUwMDAyXHRcdTAwMDJcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx1MDAwMlx0XHRcdFx0XHRcdFx0XHUwMDAyXHRcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMlx0XHRcdFx0XHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdFx0XHRcdTAwMDJcdFx0XHRcdFx0XHRcdFx1MDAwMlx1MDAwMlx1MDAwMmApLEFMcj1yKFwiXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDA0XHUwMDAzXHUwMDAzXHUwMDA1XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA2XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXCIpLE5Mcj1yKFwiXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDA0XCIpLENMcj1yKFwiXHUwMDAxXFwwXFwwXFwwXFwwXHUwMDAyXCIpLFBMcj1yKGBcdTAwMDFcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDNcdTAwMDNcdTAwMDVcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDNcdTAwMDJcdTAwMDZcdTAwMDJcXHgwN1xcYlx0XHUwMDA2XG5cXHZcXGZcXHJcdTAwMEVcdTAwMEZcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTNcdTAwMTNcdTAwMTNcdTAwMTNcdTAwMTNcdTAwMTNcdTAwMTNcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDFBXFx4MUJcdTAwMUNcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMURcdTAwMUVcdTAwMUZcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDNcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAzXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlxceDA3XHUwMDAyXFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJgKSxETHI9cihgXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDA0XHUwMDAzXHUwMDAzXHUwMDA1XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDA2XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDZcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXGJcdFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxuXHUwMDAyXFx2XFxmXFxyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwRVx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwRlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDNcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XHUwMDAyXFx4MDdcdTAwMDJcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMlxceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1xceDA3XFx4MDdcdTAwMDJcXHgwN1xceDA3XFx4MDdcXHgwN1xceDA3XFx4MDdcXHgwN1x1MDAwMlx1MDAwMlx1MDAwMmApLExMcj1yKFwiXHUwMDAxXFwwXFwwXHUwMDAyXCIpLFJMcj1yKFwiXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA1XCIpLGpMcj1yKFwiXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXCIpLEdMcj1yKFwiXHUwMDAxXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAzXHUwMDAyXHUwMDAyXHUwMDA0XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA1XHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDAyXHUwMDA2XFx4MDdcIiksTUxyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcIiksQkxyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcIikscUxyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDNcXDBcXDBcXDBcXDBcXDBcdTAwMDJcIiksVUxyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDNcIiksSExyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcXDBcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDNcIiksWExyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcIiksWUxyPXIoXCJcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcIiksVkxyPXIoXCJcdTAwMDFcXDBcXDBcXDBcXDBcXDBcXDBcXDBcdTAwMDJcIiksekxyPXIoXCJcdTAwMDFcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDNcdTAwMDJcdTAwMDJcdTAwMDRcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDVcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDJcdTAwMDZcdTAwMDJcdTAwMDJcdTAwMDJcXHgwN1wiKSxLTHI9cihcIlx1MDAwMVxcMFxcMFxcMFxcMFx1MDAwMlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwM1wiKSxXTHI9cihcIlx1MDAwMVx1MDAwMlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlwiKSxKTHI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwM1wiKSwkTHI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVwiKSxaTHI9cihcIlx1MDAwMVxcMFx1MDAwMlx1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1wiKSxRTHI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVwiKSxyUnI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFx1MDAwMlxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVwiKSxlUnI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFx1MDAwMVx1MDAwMVxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVwiKSxuUnI9cihcIlx1MDAwMVxcMFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlwiKSx0UnI9cihcIlx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlxcMFx1MDAwMlxcMFxcMFx1MDAwM1x1MDAwNFx1MDAwNFx1MDAwNFx1MDAwNFx1MDAwNFx1MDAwNFx1MDAwNFx1MDAwNFx1MDAwNFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVwiKSx1UnI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMlx1MDAwMlwiKSxpUnI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSxmUnI9cihcIlx1MDAwMVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwMlx1MDAwNFx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwNVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwNlwiKSx4UnI9cihcIlx1MDAwMVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwMlx1MDAwNFx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1wiKSxvUnI9cihcIlx1MDAwMVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwMlx1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwMlx1MDAwNFx1MDAwMlx1MDAwMlx1MDAwM1x1MDAwMlx1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1x1MDAwM1wiKSxhUnI9cihcIlx1MDAwMVxcMFx1MDAwMlwiKSxjUnI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFx1MDAwMVx1MDAwMVxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVwiKSxzUnI9cihcIlx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSx2UnI9cihcIlx1MDAwMVx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlx1MDAwMlwiKSxsUnI9cihcIlx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwM1wiKSxiUnI9cihcIlx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSxwUnI9cihcIlx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSxtUnI9cihcIlx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSxfUnI9cihcIlx1MDAwMVxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFx1MDAwMlwiKSx5UnI9WzAsWzExLHIoXCJ0aGUgaWRlbnRpZmllciBgXCIpLFsyLDAsWzEyLDk2LDBdXV0scihcInRoZSBpZGVudGlmaWVyIGAlc2BcIildLGhScj1bMCwxXSxkUnI9WzAsMV0sa1JyPXIoXCJAZmxvd1wiKSx3UnI9cih5WCksRVJyPXIoeVgpLFNScj1bMCxbMTEscihcImFuIGlkZW50aWZpZXIuIFdoZW4gZXhwb3J0aW5nIGEgXCIpLFsyLDAsWzExLHIoXCIgYXMgYSBuYW1lZCBleHBvcnQsIHlvdSBtdXN0IHNwZWNpZnkgYSBcIiksWzIsMCxbMTEscihcIiBuYW1lLiBEaWQgeW91IG1lYW4gYGV4cG9ydCBkZWZhdWx0IFwiKSxbMiwwLFsxMSxyKFwiIC4uLmA/XCIpLDBdXV1dXV1dLHIoXCJhbiBpZGVudGlmaWVyLiBXaGVuIGV4cG9ydGluZyBhICVzIGFzIGEgbmFtZWQgZXhwb3J0LCB5b3UgbXVzdCBzcGVjaWZ5IGEgJXMgbmFtZS4gRGlkIHlvdSBtZWFuIGBleHBvcnQgZGVmYXVsdCAlcyAuLi5gP1wiKV0sZ1JyPXIoZzMpLEZScj1yKFwiUGVla2luZyBjdXJyZW50IGxvY2F0aW9uIHdoZW4gbm90IGF2YWlsYWJsZVwiKSxUUnI9cihlNyksT1JyPXIoYnYpLElScj1yKG42KSxBUnI9cih4MSksTlJyPXIoTzYpLENScj1yKE8yKSxQUnI9cih2NyksRFJyPXIoUDcpLExScj1yKENpKSxSUnI9cihIOCksalJyPXIoZnMpLEdScj1yKGR2KSxNUnI9cihudSksQlJyPXIoVHYpLHFScj1yKEdpKSxVUnI9cihycyksSFJyPXIoZXMpLFhScj1yKENpKSxZUnI9cihmcyksVlJyPXIoR2kpLHpScj1yKENpKSxLUnI9cihmcyksV1JyPXIoR2kpLEpScj1yKEMyKSwkUnI9cihcImV2YWxcIiksWlJyPXIod3MpLFFScj1yKGU3KSxyanI9cih5NCksZWpyPXIoazQpLG5qcj1yKGE2KSx0anI9cihFNiksdWpyPXIobnUpLGlqcj1yKEV1KSxmanI9cihiOCkseGpyPXIoQTMpLG9qcj1yKF9pKSxhanI9cihkeCksY2pyPXIoQTcpLHNqcj1yKGQ2KSx2anI9cihvNiksbGpyPXIocTIpLGJqcj1yKEQyKSxwanI9cihONyksbWpyPXIoSTcpLF9qcj1yKEoyKSx5anI9cihfNCksaGpyPXIoVTQpLGRqcj1yKF8zKSxranI9cihQNyksd2pyPXIocTgpLEVqcj1yKG5wKSxTanI9cihNMiksZ2pyPXIoRjcpLEZqcj1yKFV1KSxUanI9cihSMiksT2pyPXIoajIpLElqcj1yKHUxKSxBanI9cihKdSksTmpyPXIoeXYpLENqcj1yKEQ3KSxQanI9cihpMSksRGpyPXIoZDQpLExqcj1yKHJzKSxSanI9cihVMiksampyPXIoZXMpLEdqcj1yKEs2KSxNanI9cihDOCksQmpyPXIoRXUpLHFqcj1bMCxyKFwic3JjL3BhcnNlci9wYXJzZXJfZW52Lm1sXCIpLDM0Myw5XSxVanI9cihcIkludGVybmFsIEVycm9yOiBUcmllZCB0byBhZGRfZGVjbGFyZWRfcHJpdmF0ZSB3aXRoIG91dHNpZGUgb2YgY2xhc3Mgc2NvcGUuXCIpLEhqcj1yKFwiSW50ZXJuYWwgRXJyb3I6IGBleGl0X2NsYXNzYCBjYWxsZWQgYmVmb3JlIGEgbWF0Y2hpbmcgYGVudGVyX2NsYXNzYFwiKSxYanI9cihDKSxZanI9WzAsMCwwXSxWanI9WzAsMCwwXSx6anI9cihcIlBhcnNlcl9lbnYuVHJ5LlJvbGxiYWNrXCIpLEtqcj1yKEMpLFdqcj1yKEMpLEpqcj1bMCxyKEV1KSxyKFl4KSxyKHRvKSxyKGRVKSxyKGdZKSxyKE9vKSxyKGN1KSxyKGRjKSxyKHV4KSxyKG9jKSxyKEdmKSxyKFRvKSxyKFBvKSxyKGVjKSxyKE5vKSxyKHdmKSxyKEphKSxyKHVvKSxyKEN4KSxyKEZmKSxyKGF4KSxyKE9hKSxyKHFmKSxyKFJvKSxyKEthKSxyKFh4KSxyKEp4KSxyKF94KSxyKHhvKSxyKGZhKSxyKG5vKSxyKEY3KSxyKElvKSxyKFBmKSxyKHdvKSxyKCR4KSxyKEpmKSxyKFVvKSxyKHlvKSxyKEQ3KSxyKHljKSxyKE5hKSxyKFN4KSxyKFZ4KSxyKF9mKSxyKFNjKSxyKE1mKSxyKGN4KSxyKEp1KSxyKHB4KSxyKHBhKSxyKERlKSxyKHI3KSxyKCRhKSxyKFlvKSxyKHdhKSxyKFp4KSxyKHNjKSxyKGFhKSxyKHRhKSxyKENmKSxyKEJvKSxyKFlmKSxyKFdmKSxyKGtjKSxyKHZjKSxyKHZhKSxyKGJmKSxyKHpvKSxyKFpmKSxyKHJ4KSxyKG1pKSxyKFFvKSxyKE1vKSxyKGRmKSxyKFZhKSxyKFhvKSxyKGxjKSxyKGZjKSxyKFpvKSxyKG9vKSxyKGl4KSxyKE5mKSxyKHVmKSxyKFhmKSxyKGV4KSxyKG1hKSxyKGRhKSxyKEtmKSxyKG5jKSxyKGdmKSxyKEx4KSxyKHFvKSxyKGJ4KSxyKHlmKSxyKE9mKSxyKG1jKSxyKHhyKSxyKF9jKSxyKFd4KSxyKFV4KSxyKFBhKSxyKHp4KSxyKG54KSxyKER4KSxyKGhhKSxyKFB4KSxyKGhjKSxyKHZ4KSxyKEpvKSxyKHdjKSxyKERhKSxyKEtvKSxyKHJjKSxyKHJmKSxyKE54KSxyKGFvKSxyKE94KSxyKGlvKSxyKGpvKSxyKEFvKSxyKHBjKSxyKEF4KSxyKGZmKSxyKG9mKSxyKFFmKSxyKFdvKSxyKHlhKSxyKGFjKSxyKFJmKSxyKHphKSxyKHJvKSxyKGtvKSxyKGFmKSxyKGU3KSxyKEFhKSxyKEZ4KSxyKENhKSxyKEh4KSxyKGJvKSxyKEVjKSxyKFV1KSxyKFlhKSxyKGlhKSxyKHBmKSxyKHlpKSxyKFZmKSxyKGJjKSxyKFdhKSxyKEc3KSxyKG14KSxyKGJhKSxyKHZmKSxyKEJhKSxyKGt4KSxyKEdvKSxyKF9hKSxyKHR4KSxyKG5mKSxyKExmKSxyKGdjKSxyKEl4KSxyKGh4KSxyKElhKSxyKFRjKSxyKGxvKSxyKFNvKSxyKGxpKSxyKGljKSxyKHl4KSxyKExhKSxyKFhhKSxyKEZjKSxyKE14KSxyKGthKSxyKEJmKSxyKFNmKSxyKGVvKSxyKFR4KSxyKE51KSxyKGVhKSxyKHVhKSxyKFFhKSxyKHNmKSxyKFNhKSxyKHZvKSxyKEFmKSxyKGp4KSxyKFphKSxyKElmKSxyKGpmKSxyKEJ4KSxyKEhvKSxyKHF4KSxyKHNhKSxyKHJhKSxyKGxhKSxyKHY3KSxyKGhvKSxyKFJhKSxyKHd4KSxyKEZvKSxyKHNvKSxyKG5hKSxyKHpmKSxyKGphKSxyKFRhKSxyKHh4KSxyKEk3KSxyKE43KSxyKCRvKSxyKHhhKSxyKCRmKSxyKGlIKSxyKF9vKSxyKHVIKSxyKHFVKSxyKGhmKSxyKGdvKSxyKGZ4KSxyKGd4KSxyKFVmKSxyKEdhKSxyKGtmKSxyKHRmKSxyKGdhKSxyKERmKSxyKHRjKSxyKG1mKSxyKHFhKSxyKG9hKSxyKFVhKSxyKEVmKSxyKFFpKSxyKHN4KSxyKHBvKSxyKGx4KSxyKFRmKSxyKEE3KSxyKEhhKSxyKFRuKSxyKEd4KSxyKHhmKSxyKGxmKSxyKEt4KSxyKEhmKSxyKFZvKSxyKGNhKSxyKEVhKSxyKGNvKSxyKFJ4KSxyKFc0KV0sJGpyPVswLHIoRXUpLHIoWXgpLHIodG8pLHIoT28pLHIoY3UpLHIoZGMpLHIodXgpLHIob2MpLHIoR2YpLHIoVG8pLHIoUG8pLHIoZWMpLHIoTm8pLHIod2YpLHIoSmEpLHIodW8pLHIoQ3gpLHIoRmYpLHIoYXgpLHIoT2EpLHIocWYpLHIoUm8pLHIoS2EpLHIoWHgpLHIoSngpLHIoX3gpLHIoeG8pLHIoZmEpLHIobm8pLHIoRjcpLHIoSW8pLHIoUGYpLHIod28pLHIoJHgpLHIoSmYpLHIoVW8pLHIoeW8pLHIoRDcpLHIoeWMpLHIoTmEpLHIoU3gpLHIoVngpLHIoX2YpLHIoU2MpLHIoTWYpLHIoY3gpLHIoSnUpLHIocHgpLHIocGEpLHIoRGUpLHIocjcpLHIoJGEpLHIoWW8pLHIod2EpLHIoWngpLHIoc2MpLHIoYWEpLHIodGEpLHIoQ2YpLHIoQm8pLHIoWWYpLHIoV2YpLHIoa2MpLHIodmMpLHIodmEpLHIoYmYpLHIoem8pLHIoWmYpLHIocngpLHIobWkpLHIoUW8pLHIoTW8pLHIoZGYpLHIoVmEpLHIoWG8pLHIobGMpLHIoZmMpLHIoWm8pLHIob28pLHIoaXgpLHIoTmYpLHIodWYpLHIoWGYpLHIoZXgpLHIobWEpLHIoZGEpLHIoS2YpLHIobmMpLHIoZ2YpLHIoTHgpLHIocW8pLHIoYngpLHIoeWYpLHIoT2YpLHIobWMpLHIoeHIpLHIoX2MpLHIoV3gpLHIoVXgpLHIoUGEpLHIoengpLHIobngpLHIoRHgpLHIoaGEpLHIoUHgpLHIoaGMpLHIodngpLHIoSm8pLHIod2MpLHIoRGEpLHIoS28pLHIocmMpLHIocmYpLHIoTngpLHIoYW8pLHIoT3gpLHIoaW8pLHIoam8pLHIoQW8pLHIocGMpLHIoQXgpLHIoZmYpLHIob2YpLHIoUWYpLHIoV28pLHIoeWEpLHIoYWMpLHIoUmYpLHIoemEpLHIocm8pLHIoa28pLHIoYWYpLHIoZTcpLHIoQWEpLHIoRngpLHIoQ2EpLHIoSHgpLHIoYm8pLHIoRWMpLHIoVXUpLHIoWWEpLHIoaWEpLHIocGYpLHIoeWkpLHIoVmYpLHIoYmMpLHIoV2EpLHIoRzcpLHIobXgpLHIoYmEpLHIodmYpLHIoQmEpLHIoa3gpLHIoR28pLHIoX2EpLHIodHgpLHIobmYpLHIoTGYpLHIoZ2MpLHIoSXgpLHIoaHgpLHIoSWEpLHIoVGMpLHIobG8pLHIoU28pLHIobGkpLHIoaWMpLHIoeXgpLHIoTGEpLHIoWGEpLHIoRmMpLHIoTXgpLHIoa2EpLHIoQmYpLHIoU2YpLHIoZW8pLHIoVHgpLHIoTnUpLHIoZWEpLHIodWEpLHIoUWEpLHIoc2YpLHIoU2EpLHIodm8pLHIoQWYpLHIoangpLHIoWmEpLHIoSWYpLHIoamYpLHIoQngpLHIoSG8pLHIocXgpLHIoc2EpLHIocmEpLHIobGEpLHIodjcpLHIoaG8pLHIoUmEpLHIod3gpLHIoRm8pLHIoc28pLHIobmEpLHIoemYpLHIoamEpLHIoVGEpLHIoeHgpLHIoSTcpLHIoTjcpLHIoJG8pLHIoeGEpLHIoJGYpLHIoX28pLHIoaGYpLHIoZ28pLHIoZngpLHIoZ3gpLHIoVWYpLHIoR2EpLHIoa2YpLHIodGYpLHIoZ2EpLHIoRGYpLHIodGMpLHIobWYpLHIocWEpLHIob2EpLHIoVWEpLHIoRWYpLHIoUWkpLHIoc3gpLHIocG8pLHIobHgpLHIoVGYpLHIoQTcpLHIoSGEpLHIoVG4pLHIoR3gpLHIoeGYpLHIobGYpLHIoS3gpLHIoSGYpLHIoVm8pLHIoY2EpLHIoRWEpLHIoY28pLHIoUngpLHIoVzQpXSxaanI9WzAscihfZikscihRZikscihfYSkscihWZikscihUZikscihZZikscihxbykscihleCkscihOeCkscihrbykscihLYSkscihENykscihYbykscihlYSkscih0YykscihwYykscihieCkscihmZikscihyYSkscihCeCkscihZeCkscihsaSkscihoYykscihMeCkscihXYSkscihzYSkscihPZikscih5aSkscihPbykscihNeCkscih0YSkscih6ZikscihzeCkscih0eCkscihRaSkscihqbykscihBZikscihiYSkscih2YykscihpYykscih5bykscihLeCkscihtYSkscihpYSkscihTeCkscihsYSkscihQeCkscih5Zikscih0ZikscihnbykscihRbykscih3YSkscihYZikscihZbykscihLbykscihVZikscihmYykscihyNykscihOZikscihCYSkscihtYykscihhbykscihBbykscihiYykscihueCkscigkbykscihKeCkscihJZikscih1ZikscihyYykscigkZikscihEeCkscihHbykscihhYSkscihFYSkscihzbykscihTYSkscihXeCkscihyeCkscihjbykscihwbykscihjeCkscihjdSkscigkYSkscih1bykscihZYSkscihsZikscihTbykscihubykscihhYykscihEZikscihuYykscihVbykscih2NykscihYYSkscihYeCkscihFdSkscihmYSkscihUYSkscihlYykscih6bykscihweCkscihQbykscihoZikscihqYSkscihvYykscihBeCkscihaeCkscihybykscihIbykscihTZikscihsYykscih1YSkscihoYSkscihiZikscihrYSkscihGZikscih4bykscihkYykscihTYykscihDeCkscihUbykscihHYSkscih5eCkscihmeCkscihQYSkscihreCkscihHZikscihfbykscihnZikscihKbykscihIZikscihVeCkscihvYSkscihnYSkscihBYSkscih2YSkscihNbykscih3YykscihfYykscihVdSkscihKdSkscihIYSkscihKYSkscihheCkscih5YykscihrYykscihGNykscihJNykscihwZikscihWYSkscihUeCkscihvZikscihtaSkscihJeCkscihxeCkscihGeCkscihneCkscihuZikscih6eCkscihXbykscihHNykscih2Zikscih3ZikscihqZikscihEZSkscihUYykscihibykscihaYSkscihzZikscihLZikscihNZikscihDYSkscihvbykscihDZikscihfeCkscihpeCkscihPYSkscihseCkscihGbykscihVYSkscihuYSkscihHeCkscihSZikscihKZikscihteCkscihwYSkscihFYykscihxYSkscihkYSkscihpbykscihrZikscihhZikscihobykscihSbykscihSeCkscih1eCkscihFZikscihxZikscihSYSkscihPeCkscih5YSkscih4YSkscih2eCkscihCbykscih6YSkscihCZikscihEYSkscih3bykscihWbykscihXZikscih4ZikscihOdSkscihaZikscihlbykscihoeCkscihJYSkscihWeCkscihONykscihMZikscihzYykscih2bykscih3eCkscihQZikscigkeCkscihOYSkscihsbykscihRYSkscihObykscihMYSkscihkZikscihUbikscihIeCkscihtZikscihyZikscihabykscihnYykscih4eCkscihqeCkscihBNykscihjYSkscihlNykscih0bykscihGYykscihJbykscih4cildLFFqcj1bMCxyKF9mKSxyKFFmKSxyKF9hKSxyKFZmKSxyKFRmKSxyKFlmKSxyKHFvKSxyKGV4KSxyKE54KSxyKGtvKSxyKEthKSxyKEQ3KSxyKFhvKSxyKGVhKSxyKHRjKSxyKHBjKSxyKGJ4KSxyKGZmKSxyKHJhKSxyKEJ4KSxyKFl4KSxyKGxpKSxyKGhjKSxyKEx4KSxyKFdhKSxyKHNhKSxyKE9mKSxyKHlpKSxyKE9vKSxyKGdZKSxyKE14KSxyKHRhKSxyKHpmKSxyKHN4KSxyKHR4KSxyKFFpKSxyKGpvKSxyKEFmKSxyKGJhKSxyKHZjKSxyKGljKSxyKHlvKSxyKEt4KSxyKG1hKSxyKGlhKSxyKFN4KSxyKGxhKSxyKFB4KSxyKHlmKSxyKHRmKSxyKGdvKSxyKFFvKSxyKHdhKSxyKHVIKSxyKFhmKSxyKFlvKSxyKEtvKSxyKFVmKSxyKGZjKSxyKHI3KSxyKE5mKSxyKEJhKSxyKG1jKSxyKGFvKSxyKEFvKSxyKGJjKSxyKG54KSxyKCRvKSxyKEp4KSxyKElmKSxyKHVmKSxyKHJjKSxyKCRmKSxyKER4KSxyKEdvKSxyKGFhKSxyKEVhKSxyKHNvKSxyKFNhKSxyKFd4KSxyKHJ4KSxyKGNvKSxyKHBvKSxyKGN4KSxyKGN1KSxyKCRhKSxyKHVvKSxyKFlhKSxyKGxmKSxyKFNvKSxyKG5vKSxyKGFjKSxyKERmKSxyKG5jKSxyKFVvKSxyKHY3KSxyKFhhKSxyKFh4KSxyKEV1KSxyKGZhKSxyKFRhKSxyKGVjKSxyKHpvKSxyKHB4KSxyKFBvKSxyKGhmKSxyKGphKSxyKG9jKSxyKEF4KSxyKFp4KSxyKHJvKSxyKEhvKSxyKFNmKSxyKGxjKSxyKHVhKSxyKGhhKSxyKGJmKSxyKGthKSxyKEZmKSxyKHhvKSxyKGRjKSxyKFNjKSxyKEN4KSxyKFRvKSxyKEdhKSxyKHl4KSxyKGZ4KSxyKFBhKSxyKGt4KSxyKEdmKSxyKF9vKSxyKGdmKSxyKEpvKSxyKEhmKSxyKFV4KSxyKG9hKSxyKGdhKSxyKEFhKSxyKHZhKSxyKE1vKSxyKHdjKSxyKF9jKSxyKFV1KSxyKEp1KSxyKEhhKSxyKEphKSxyKGF4KSxyKHljKSxyKGtjKSxyKEY3KSxyKEk3KSxyKHBmKSxyKFZhKSxyKFR4KSxyKG9mKSxyKG1pKSxyKEl4KSxyKHF4KSxyKEZ4KSxyKGd4KSxyKG5mKSxyKHp4KSxyKFdvKSxyKEc3KSxyKHZmKSxyKHdmKSxyKGpmKSxyKERlKSxyKFRjKSxyKGJvKSxyKFphKSxyKHNmKSxyKEtmKSxyKE1mKSxyKENhKSxyKG9vKSxyKENmKSxyKF94KSxyKGl4KSxyKE9hKSxyKGx4KSxyKEZvKSxyKFVhKSxyKG5hKSxyKEd4KSxyKFJmKSxyKHFVKSxyKEpmKSxyKG14KSxyKHBhKSxyKEVjKSxyKHFhKSxyKGRhKSxyKGlvKSxyKGtmKSxyKGFmKSxyKGhvKSxyKFJvKSxyKGlIKSxyKFJ4KSxyKHV4KSxyKEVmKSxyKHFmKSxyKGRVKSxyKFJhKSxyKE94KSxyKHlhKSxyKHhhKSxyKHZ4KSxyKEJvKSxyKHphKSxyKEJmKSxyKERhKSxyKHdvKSxyKFZvKSxyKFdmKSxyKHhmKSxyKE51KSxyKFpmKSxyKGVvKSxyKGh4KSxyKElhKSxyKFZ4KSxyKE43KSxyKExmKSxyKHNjKSxyKHZvKSxyKHd4KSxyKFBmKSxyKCR4KSxyKE5hKSxyKGxvKSxyKFFhKSxyKE5vKSxyKExhKSxyKGRmKSxyKFRuKSxyKEh4KSxyKG1mKSxyKHJmKSxyKFpvKSxyKGdjKSxyKHh4KSxyKGp4KSxyKEE3KSxyKGNhKSxyKGU3KSxyKHRvKSxyKEZjKSxyKElvKSxyKHhyKV0sckdyPXIoWTQpLGVHcj1yKEkyKSxuR3I9WzAsWzExLHIoXCJGYWlsdXJlIHdoaWxlIGxvb2tpbmcgdXAgXCIpLFsyLDAsWzExLHIoXCIuIEluZGV4OiBcIiksWzQsMCwwLDAsWzExLHIoXCIuIExlbmd0aDogXCIpLFs0LDAsMCwwLFsxMiw0NiwwXV1dXV1dXSxyKFwiRmFpbHVyZSB3aGlsZSBsb29raW5nIHVwICVzLiBJbmRleDogJWQuIExlbmd0aDogJWQuXCIpXSx0R3I9WzAsMCwwLDBdLHVHcj1yKFwiT2Zmc2V0X3V0aWxzLk9mZnNldF9sb29rdXBfZmFpbGVkXCIpLGlHcj1yKEtZKSxmR3I9cihoRSkseEdyPXIoQ1kpLG9Hcj1yKFZYKSxhR3I9cihWWCksY0dyPXIoQ1kpLHNHcj1yKEpjKSx2R3I9cihYciksbEdyPXIoV24pLGJHcj1yKFwiUHJvZ3JhbVwiKSxwR3I9cihVZCksbUdyPXIoXCJCcmVha1N0YXRlbWVudFwiKSxfR3I9cihVZCkseUdyPXIoXCJDb250aW51ZVN0YXRlbWVudFwiKSxoR3I9cihcIkRlYnVnZ2VyU3RhdGVtZW50XCIpLGRHcj1yKGNjKSxrR3I9cihcIkRlY2xhcmVFeHBvcnRBbGxEZWNsYXJhdGlvblwiKSx3R3I9cihjYyksRUdyPXIoQ3YpLFNHcj1yKFAyKSxnR3I9cihfaSksRkdyPXIoXCJEZWNsYXJlRXhwb3J0RGVjbGFyYXRpb25cIiksVEdyPXIoJGMpLE9Hcj1yKFduKSxJR3I9cihtdCksQUdyPXIoXCJEZWNsYXJlTW9kdWxlXCIpLE5Hcj1yKEM3KSxDR3I9cihcIkRlY2xhcmVNb2R1bGVFeHBvcnRzXCIpLFBHcj1yKFNzKSxER3I9cihXbiksTEdyPXIoXCJEb1doaWxlU3RhdGVtZW50XCIpLFJHcj1yKFwiRW1wdHlTdGF0ZW1lbnRcIiksakdyPXIoYk8pLEdHcj1yKFAyKSxNR3I9cihcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiKSxCR3I9cihiTykscUdyPXIoSTQpLFVHcj1yKGNjKSxIR3I9cihcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCIpLFhHcj1yKGJPKSxZR3I9cihjYyksVkdyPXIoQ3YpLHpHcj1yKFAyKSxLR3I9cihcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiksV0dyPXIoWmkpLEpHcj1yKE51KSwkR3I9cihcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiksWkdyPXIoV24pLFFHcj1yKGZVKSxyTXI9cihTcyksZU1yPXIoamkpLG5Ncj1yKFwiRm9yU3RhdGVtZW50XCIpLHRNcj1yKFI4KSx1TXI9cihXbiksaU1yPXIoQ3UpLGZNcj1yKGJpKSx4TXI9cihcIkZvckluU3RhdGVtZW50XCIpLG9Ncj1yKGR4KSxhTXI9cihXbiksY01yPXIoQ3UpLHNNcj1yKGJpKSx2TXI9cihcIkZvck9mU3RhdGVtZW50XCIpLGxNcj1yKG0zKSxiTXI9cihrdikscE1yPXIoU3MpLG1Ncj1yKFwiSWZTdGF0ZW1lbnRcIiksX01yPXIoSmMpLHlNcj1yKHJzKSxoTXI9cihCbiksZE1yPXIoY1gpLGtNcj1yKGNjKSx3TXI9cihDdiksRU1yPXIoXCJJbXBvcnREZWNsYXJhdGlvblwiKSxTTXI9cihXbiksZ01yPXIoVWQpLEZNcj1yKFwiTGFiZWxlZFN0YXRlbWVudFwiKSxUTXI9cihsNyksT01yPXIoXCJSZXR1cm5TdGF0ZW1lbnRcIiksSU1yPXIoUVgpLEFNcj1yKFwiZGlzY3JpbWluYW50XCIpLE5Ncj1yKFwiU3dpdGNoU3RhdGVtZW50XCIpLENNcj1yKGw3KSxQTXI9cihcIlRocm93U3RhdGVtZW50XCIpLERNcj1yKENIKSxMTXI9cihNVSksUk1yPXIoVG4pLGpNcj1yKFwiVHJ5U3RhdGVtZW50XCIpLEdNcj1yKFduKSxNTXI9cihTcyksQk1yPXIoXCJXaGlsZVN0YXRlbWVudFwiKSxxTXI9cihXbiksVU1yPXIoeGspLEhNcj1yKFwiV2l0aFN0YXRlbWVudFwiKSxYTXI9cihQSCksWU1yPXIoXCJBcnJheUV4cHJlc3Npb25cIiksVk1yPXIoTzcpLHpNcj1yKHA2KSxLTXI9cihOdSksV01yPXIocjcpLEpNcj1yKEc3KSwkTXI9cihncyksWk1yPXIoV24pLFFNcj1yKER0KSxyQnI9cihtdCksZUJyPXIoXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiKSxuQnI9cihYTyksdEJyPXIoQ3UpLHVCcj1yKGJpKSxpQnI9cih1bCksZkJyPXIoXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiKSx4QnI9cihDdSksb0JyPXIoYmkpLGFCcj1yKHVsKSxjQnI9cihcIkJpbmFyeUV4cHJlc3Npb25cIiksc0JyPXIoXCJDYWxsRXhwcmVzc2lvblwiKSx2QnI9cihUNCksbEJyPXIoYVkpLGJCcj1yKFwiQ29tcHJlaGVuc2lvbkV4cHJlc3Npb25cIikscEJyPXIobTMpLG1Ccj1yKGt2KSxfQnI9cihTcykseUJyPXIoXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIiksaEJyPXIoVDQpLGRCcj1yKGFZKSxrQnI9cihcIkdlbmVyYXRvckV4cHJlc3Npb25cIiksd0JyPXIoY2MpLEVCcj1yKFwiSW1wb3J0RXhwcmVzc2lvblwiKSxTQnI9cih6SCksZ0JyPXIoTVgpLEZCcj1yKEtlKSxUQnI9cihDdSksT0JyPXIoYmkpLElCcj1yKHVsKSxBQnI9cihcIkxvZ2ljYWxFeHByZXNzaW9uXCIpLE5Ccj1yKFwiTWVtYmVyRXhwcmVzc2lvblwiKSxDQnI9cihJdiksUEJyPXIoZWwpLERCcj1yKFwiTWV0YVByb3BlcnR5XCIpLExCcj1yKEMyKSxSQnI9cihUWCksakJyPXIoakgpLEdCcj1yKFwiTmV3RXhwcmVzc2lvblwiKSxNQnI9cihINCksQkJyPXIoXCJPYmplY3RFeHByZXNzaW9uXCIpLHFCcj1yKHF1KSxVQnI9cihcIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIiksSEJyPXIocXUpLFhCcj1yKFwiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCIpLFlCcj1yKE1nKSxWQnI9cihcIlNlcXVlbmNlRXhwcmVzc2lvblwiKSx6QnI9cihcIlN1cGVyXCIpLEtCcj1yKFwiVGhpc0V4cHJlc3Npb25cIiksV0JyPXIoQzcpLEpCcj1yKE51KSwkQnI9cihcIlR5cGVDYXN0RXhwcmVzc2lvblwiKSxaQnI9cihsNyksUUJyPXIoXCJBd2FpdEV4cHJlc3Npb25cIikscnFyPXIoRmEpLGVxcj1yKHhzKSxucXI9cihLdCksdHFyPXIoWlkpLHVxcj1yKHJzKSxpcXI9cihlcyksZnFyPXIoSjIpLHhxcj1yKFwibWF0Y2hlZCBhYm92ZVwiKSxvcXI9cihsNyksYXFyPXIocUUpLGNxcj1yKHVsKSxzcXI9cihcIlVuYXJ5RXhwcmVzc2lvblwiKSx2cXI9cihvViksbHFyPXIoc0gpLGJxcj1yKHFFKSxwcXI9cihsNyksbXFyPXIodWwpLF9xcj1yKFwiVXBkYXRlRXhwcmVzc2lvblwiKSx5cXI9cihsWSksaHFyPXIobDcpLGRxcj1yKFwiWWllbGRFeHByZXNzaW9uXCIpLGtxcj1yKFwiVW5leHBlY3RlZCBGdW5jdGlvbkRlY2xhcmF0aW9uIHdpdGggQm9keUV4cHJlc3Npb25cIiksd3FyPXIoTzcpLEVxcj1yKHA2KSxTcXI9cihOdSksZ3FyPXIocjcpLEZxcj1yKEc3KSxUcXI9cihncyksT3FyPXIoV24pLElxcj1yKER0KSxBcXI9cihtdCksTnFyPXIoXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIpLENxcj1yKFwiVW5leHBlY3RlZCBGdW5jdGlvbkV4cHJlc3Npb24gd2l0aCBCb2R5RXhwcmVzc2lvblwiKSxQcXI9cihPNyksRHFyPXIocDYpLExxcj1yKE51KSxScXI9cihyNyksanFyPXIoRzcpLEdxcj1yKGdzKSxNcXI9cihXbiksQnFyPXIoRHQpLHFxcj1yKG10KSxVcXI9cihcIkZ1bmN0aW9uRXhwcmVzc2lvblwiKSxIcXI9cihxdSksWHFyPXIoQzcpLFlxcj1yKHVpKSxWcXI9cih0biksenFyPXIocXUpLEtxcj1yKEM3KSxXcXI9cih1aSksSnFyPXIoXCJQcml2YXRlSWRlbnRpZmllclwiKSwkcXI9cihxdSksWnFyPXIoQzcpLFFxcj1yKHVpKSxyVXI9cih0biksZVVyPXIoa3YpLG5Vcj1yKFNzKSx0VXI9cihcIlN3aXRjaENhc2VcIiksdVVyPXIoV24pLGlVcj1yKFwicGFyYW1cIiksZlVyPXIoXCJDYXRjaENsYXVzZVwiKSx4VXI9cihXbiksb1VyPXIoXCJCbG9ja1N0YXRlbWVudFwiKSxhVXI9cihtdCksY1VyPXIoXCJEZWNsYXJlVmFyaWFibGVcIiksc1VyPXIocjcpLHZVcj1yKG10KSxsVXI9cihcIkRlY2xhcmVGdW5jdGlvblwiKSxiVXI9cihIeSkscFVyPXIod3MpLG1Vcj1yKFA3KSxfVXI9cihXbikseVVyPXIoTzcpLGhVcj1yKG10KSxkVXI9cihcIkRlY2xhcmVDbGFzc1wiKSxrVXI9cihQNyksd1VyPXIoV24pLEVVcj1yKE83KSxTVXI9cihtdCksZ1VyPXIoXCJEZWNsYXJlSW50ZXJmYWNlXCIpLEZVcj1yKEJuKSxUVXI9cihKYyksT1VyPXIoSTQpLElVcj1yKFwiRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyXCIpLEFVcj1yKEN1KSxOVXI9cihPNyksQ1VyPXIobXQpLFBVcj1yKFwiRGVjbGFyZVR5cGVBbGlhc1wiKSxEVXI9cihDdSksTFVyPXIoTzcpLFJVcj1yKG10KSxqVXI9cihcIlR5cGVBbGlhc1wiKSxHVXI9cihcIkRlY2xhcmVPcGFxdWVUeXBlXCIpLE1Vcj1yKFwiT3BhcXVlVHlwZVwiKSxCVXI9cihTWCkscVVyPXIobVgpLFVVcj1yKE83KSxIVXI9cihtdCksWFVyPXIoXCJDbGFzc0RlY2xhcmF0aW9uXCIpLFlVcj1yKFwiQ2xhc3NFeHByZXNzaW9uXCIpLFZVcj1yKGpfKSx6VXI9cih3cyksS1VyPXIoXCJzdXBlclR5cGVQYXJhbWV0ZXJzXCIpLFdVcj1yKFwic3VwZXJDbGFzc1wiKSxKVXI9cihPNyksJFVyPXIoV24pLFpVcj1yKG10KSxRVXI9cihOdSksckhyPXIoXCJEZWNvcmF0b3JcIiksZUhyPXIoTzcpLG5Icj1yKG10KSx0SHI9cihcIkNsYXNzSW1wbGVtZW50c1wiKSx1SHI9cihXbiksaUhyPXIoXCJDbGFzc0JvZHlcIiksZkhyPXIod3YpLHhIcj1yKEYyKSxvSHI9cihuMSksYUhyPXIobHYpLGNIcj1yKGpfKSxzSHI9cihwdiksdkhyPXIobnUpLGxIcj1yKCRjKSxiSHI9cihCbikscEhyPXIoaWkpLG1Icj1yKFwiTWV0aG9kRGVmaW5pdGlvblwiKSxfSHI9cihUMikseUhyPXIoY3UpLGhIcj1yKG51KSxkSHI9cihwdiksa0hyPXIoQzcpLHdIcj1yKEJuKSxFSHI9cihpaSksU0hyPXIoeFYpLGdIcj1yKFwiSW50ZXJuYWwgRXJyb3I6IFByaXZhdGUgbmFtZSBmb3VuZCBpbiBjbGFzcyBwcm9wXCIpLEZIcj1yKFQyKSxUSHI9cihjdSksT0hyPXIobnUpLElIcj1yKHB2KSxBSHI9cihDNyksTkhyPXIoQm4pLENIcj1yKGlpKSxQSHI9cih4ViksREhyPXIobXQpLExIcj1yKE9YKSxSSHI9cihqaSksakhyPXIobXQpLEdIcj1yKFwiRW51bVN0cmluZ01lbWJlclwiKSxNSHI9cihtdCksQkhyPXIoT1gpLHFIcj1yKGppKSxVSHI9cihtdCksSEhyPXIoXCJFbnVtTnVtYmVyTWVtYmVyXCIpLFhIcj1yKGppKSxZSHI9cihtdCksVkhyPXIoXCJFbnVtQm9vbGVhbk1lbWJlclwiKSx6SHI9cihUOCksS0hyPXIoRFQpLFdIcj1yKEE0KSxKSHI9cihcIkVudW1Cb29sZWFuQm9keVwiKSwkSHI9cihUOCksWkhyPXIoRFQpLFFIcj1yKEE0KSxyWHI9cihcIkVudW1OdW1iZXJCb2R5XCIpLGVYcj1yKFQ4KSxuWHI9cihEVCksdFhyPXIoQTQpLHVYcj1yKFwiRW51bVN0cmluZ0JvZHlcIiksaVhyPXIoVDgpLGZYcj1yKEE0KSx4WHI9cihcIkVudW1TeW1ib2xCb2R5XCIpLG9Ycj1yKFduKSxhWHI9cihtdCksY1hyPXIoXCJFbnVtRGVjbGFyYXRpb25cIiksc1hyPXIoUDcpLHZYcj1yKFduKSxsWHI9cihPNyksYlhyPXIobXQpLHBYcj1yKFwiSW50ZXJmYWNlRGVjbGFyYXRpb25cIiksbVhyPXIoTzcpLF9Ycj1yKG10KSx5WHI9cihcIkludGVyZmFjZUV4dGVuZHNcIiksaFhyPXIoQzcpLGRYcj1yKEg0KSxrWHI9cihcIk9iamVjdFBhdHRlcm5cIiksd1hyPXIoQzcpLEVYcj1yKFBIKSxTWHI9cihcIkFycmF5UGF0dGVyblwiKSxnWHI9cihDdSksRlhyPXIoYmkpLFRYcj1yKERGKSxPWHI9cihDNyksSVhyPXIodWkpLEFYcj1yKHRuKSxOWHI9cihsNyksQ1hyPXIoaVgpLFBYcj1yKGw3KSxEWHI9cihpWCksTFhyPXIoQ3UpLFJYcj1yKGJpKSxqWHI9cihERiksR1hyPXIoamkpLE1Ycj1yKGppKSxCWHI9cihuMSkscVhyPXIobHYpLFVYcj1yKGFIKSxIWHI9cihwdiksWFhyPXIoZjYpLFlYcj1yKEYyKSxWWHI9cigkYykselhyPXIoQm4pLEtYcj1yKGlpKSxXWHI9cihfVSksSlhyPXIobDcpLCRYcj1yKFwiU3ByZWFkUHJvcGVydHlcIiksWlhyPXIoQ3UpLFFYcj1yKGJpKSxyWXI9cihERiksZVlyPXIocHYpLG5Zcj1yKGY2KSx0WXI9cihGMiksdVlyPXIoJGMpLGlZcj1yKEJuKSxmWXI9cihpaSkseFlyPXIoX1UpLG9Zcj1yKGw3KSxhWXI9cihcIlNwcmVhZEVsZW1lbnRcIiksY1lyPXIoUjgpLHNZcj1yKEN1KSx2WXI9cihiaSksbFlyPXIoXCJDb21wcmVoZW5zaW9uQmxvY2tcIiksYllyPXIoXCJXZSBzaG91bGQgbm90IGNyZWF0ZSBMaXRlcmFsIG5vZGVzIGZvciBiaWdpbnRzXCIpLHBZcj1yKGpYKSxtWXI9cihtaSksX1lyPXIoXCJyZWdleFwiKSx5WXI9cihjNyksaFlyPXIoQm4pLGRZcj1yKGM3KSxrWXI9cihCbiksd1lyPXIoSDYpLEVZcj1yKGM3KSxTWXI9cihCbiksZ1lyPXIoSDYpLEZZcj1yKHgxKSxUWXI9cihCbiksT1lyPXIoXCJCaWdJbnRMaXRlcmFsXCIpLElZcj1yKGM3KSxBWXI9cihCbiksTllyPXIoSDYpLENZcj1yKEdpKSxQWXI9cihDaSksRFlyPXIoYzcpLExZcj1yKEJuKSxSWXI9cihINiksallyPXIoTWcpLEdZcj1yKFwicXVhc2lzXCIpLE1Zcj1yKFwiVGVtcGxhdGVMaXRlcmFsXCIpLEJZcj1yKFBZKSxxWXI9cihjNyksVVlyPXIoYVUpLEhZcj1yKEJuKSxYWXI9cihcIlRlbXBsYXRlRWxlbWVudFwiKSxZWXI9cihFWSksVllyPXIoXCJ0YWdcIiksellyPXIoXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIiksS1lyPXIoVTIpLFdZcj1yKEcyKSxKWXI9cihEMiksJFlyPXIoJGMpLFpZcj1yKFwiZGVjbGFyYXRpb25zXCIpLFFZcj1yKFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSxyVnI9cihqaSksZVZyPXIobXQpLG5Wcj1yKFwiVmFyaWFibGVEZWNsYXJhdG9yXCIpLHRWcj1yKCRjKSx1VnI9cihcIlZhcmlhbmNlXCIpLGlWcj1yKFwiQW55VHlwZUFubm90YXRpb25cIiksZlZyPXIoXCJNaXhlZFR5cGVBbm5vdGF0aW9uXCIpLHhWcj1yKFwiRW1wdHlUeXBlQW5ub3RhdGlvblwiKSxvVnI9cihcIlZvaWRUeXBlQW5ub3RhdGlvblwiKSxhVnI9cihcIk51bGxMaXRlcmFsVHlwZUFubm90YXRpb25cIiksY1ZyPXIoXCJTeW1ib2xUeXBlQW5ub3RhdGlvblwiKSxzVnI9cihcIk51bWJlclR5cGVBbm5vdGF0aW9uXCIpLHZWcj1yKFwiQmlnSW50VHlwZUFubm90YXRpb25cIiksbFZyPXIoXCJTdHJpbmdUeXBlQW5ub3RhdGlvblwiKSxiVnI9cihcIkJvb2xlYW5UeXBlQW5ub3RhdGlvblwiKSxwVnI9cihDNyksbVZyPXIoXCJOdWxsYWJsZVR5cGVBbm5vdGF0aW9uXCIpLF9Wcj1yKE83KSx5VnI9cih4ZCksaFZyPXIocDYpLGRWcj1yKGkxKSxrVnI9cihEdCksd1ZyPXIoXCJGdW5jdGlvblR5cGVBbm5vdGF0aW9uXCIpLEVWcj1yKHF1KSxTVnI9cihDNyksZ1ZyPXIodWkpLEZWcj1yKFJIKSxUVnI9cihxdSksT1ZyPXIoQzcpLElWcj1yKHVpKSxBVnI9cihSSCksTlZyPVswLDAsMCwwLDBdLENWcj1yKFwiaW50ZXJuYWxTbG90c1wiKSxQVnI9cihcImNhbGxQcm9wZXJ0aWVzXCIpLERWcj1yKFwiaW5kZXhlcnNcIiksTFZyPXIoSDQpLFJWcj1yKFwiZXhhY3RcIiksalZyPXIoR1kpLEdWcj1yKFwiT2JqZWN0VHlwZUFubm90YXRpb25cIiksTVZyPXIoYUgpLEJWcj1yKFwiVGhlcmUgc2hvdWxkIG5vdCBiZSBjb21wdXRlZCBvYmplY3QgdHlwZSBwcm9wZXJ0eSBrZXlzXCIpLHFWcj1yKGppKSxVVnI9cihuMSksSFZyPXIobHYpLFhWcj1yKCRjKSxZVnI9cihjdSksVlZyPXIoWDMpLHpWcj1yKG51KSxLVnI9cihxdSksV1ZyPXIoRjIpLEpWcj1yKEJuKSwkVnI9cihpaSksWlZyPXIoXCJPYmplY3RUeXBlUHJvcGVydHlcIiksUVZyPXIobDcpLHJ6cj1yKFwiT2JqZWN0VHlwZVNwcmVhZFByb3BlcnR5XCIpLGV6cj1yKGN1KSxuenI9cihudSksdHpyPXIoQm4pLHV6cj1yKGlpKSxpenI9cihtdCksZnpyPXIoXCJPYmplY3RUeXBlSW5kZXhlclwiKSx4enI9cihudSksb3pyPXIoQm4pLGF6cj1yKFwiT2JqZWN0VHlwZUNhbGxQcm9wZXJ0eVwiKSxjenI9cihCbiksc3pyPXIoRjIpLHZ6cj1yKG51KSxsenI9cihxdSksYnpyPXIobXQpLHB6cj1yKFwiT2JqZWN0VHlwZUludGVybmFsU2xvdFwiKSxtenI9cihXbiksX3pyPXIoUDcpLHl6cj1yKFwiSW50ZXJmYWNlVHlwZUFubm90YXRpb25cIiksaHpyPXIoXCJlbGVtZW50VHlwZVwiKSxkenI9cihcIkFycmF5VHlwZUFubm90YXRpb25cIiksa3pyPXIobXQpLHd6cj1yKGVZKSxFenI9cihcIlF1YWxpZmllZFR5cGVJZGVudGlmaWVyXCIpLFN6cj1yKE83KSxnenI9cihtdCksRnpyPXIoXCJHZW5lcmljVHlwZUFubm90YXRpb25cIiksVHpyPXIoXCJpbmRleFR5cGVcIiksT3pyPXIoXCJvYmplY3RUeXBlXCIpLEl6cj1yKFwiSW5kZXhlZEFjY2Vzc1R5cGVcIiksQXpyPXIocXUpLE56cj1yKFwiT3B0aW9uYWxJbmRleGVkQWNjZXNzVHlwZVwiKSxDenI9cigkNiksUHpyPXIoXCJVbmlvblR5cGVBbm5vdGF0aW9uXCIpLER6cj1yKCQ2KSxMenI9cihcIkludGVyc2VjdGlvblR5cGVBbm5vdGF0aW9uXCIpLFJ6cj1yKGw3KSxqenI9cihcIlR5cGVvZlR5cGVBbm5vdGF0aW9uXCIpLEd6cj1yKG10KSxNenI9cihlWSksQnpyPXIoXCJRdWFsaWZpZWRUeXBlb2ZJZGVudGlmaWVyXCIpLHF6cj1yKCQ2KSxVenI9cihcIlR1cGxlVHlwZUFubm90YXRpb25cIiksSHpyPXIoYzcpLFh6cj1yKEJuKSxZenI9cihcIlN0cmluZ0xpdGVyYWxUeXBlQW5ub3RhdGlvblwiKSxWenI9cihjNyksenpyPXIoQm4pLEt6cj1yKFwiTnVtYmVyTGl0ZXJhbFR5cGVBbm5vdGF0aW9uXCIpLFd6cj1yKGM3KSxKenI9cihCbiksJHpyPXIoXCJCaWdJbnRMaXRlcmFsVHlwZUFubm90YXRpb25cIiksWnpyPXIoR2kpLFF6cj1yKENpKSxyS3I9cihjNyksZUtyPXIoQm4pLG5Lcj1yKFwiQm9vbGVhbkxpdGVyYWxUeXBlQW5ub3RhdGlvblwiKSx0S3I9cihcIkV4aXN0c1R5cGVBbm5vdGF0aW9uXCIpLHVLcj1yKEM3KSxpS3I9cihcIlR5cGVBbm5vdGF0aW9uXCIpLGZLcj1yKER0KSx4S3I9cihcIlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvblwiKSxvS3I9cihfaSksYUtyPXIoY3UpLGNLcj1yKERVKSxzS3I9cih1aSksdktyPXIoXCJUeXBlUGFyYW1ldGVyXCIpLGxLcj1yKER0KSxiS3I9cihnSCkscEtyPXIoRHQpLG1Lcj1yKGdIKSxfS3I9cihidikseUtyPXIoVmUpLGhLcj1yKFwiY2xvc2luZ0VsZW1lbnRcIiksZEtyPXIoXCJvcGVuaW5nRWxlbWVudFwiKSxrS3I9cihcIkpTWEVsZW1lbnRcIiksd0tyPXIoXCJjbG9zaW5nRnJhZ21lbnRcIiksRUtyPXIoVmUpLFNLcj1yKFwib3BlbmluZ0ZyYWdtZW50XCIpLGdLcj1yKFwiSlNYRnJhZ21lbnRcIiksRktyPXIoXCJzZWxmQ2xvc2luZ1wiKSxUS3I9cihtWSksT0tyPXIodWkpLElLcj1yKFwiSlNYT3BlbmluZ0VsZW1lbnRcIiksQUtyPXIoXCJKU1hPcGVuaW5nRnJhZ21lbnRcIiksTktyPXIodWkpLENLcj1yKFwiSlNYQ2xvc2luZ0VsZW1lbnRcIiksUEtyPXIoXCJKU1hDbG9zaW5nRnJhZ21lbnRcIiksREtyPXIoQm4pLExLcj1yKHVpKSxSS3I9cihcIkpTWEF0dHJpYnV0ZVwiKSxqS3I9cihsNyksR0tyPXIoXCJKU1hTcHJlYWRBdHRyaWJ1dGVcIiksTUtyPXIoXCJKU1hFbXB0eUV4cHJlc3Npb25cIiksQktyPXIoTnUpLHFLcj1yKFwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lclwiKSxVS3I9cihOdSksSEtyPXIoXCJKU1hTcHJlYWRDaGlsZFwiKSxYS3I9cihjNyksWUtyPXIoQm4pLFZLcj1yKFwiSlNYVGV4dFwiKSx6S3I9cihJdiksS0tyPXIoeGspLFdLcj1yKFwiSlNYTWVtYmVyRXhwcmVzc2lvblwiKSxKS3I9cih1aSksJEtyPXIoXCJuYW1lc3BhY2VcIiksWktyPXIoXCJKU1hOYW1lc3BhY2VkTmFtZVwiKSxRS3I9cih1aSkscldyPXIoXCJKU1hJZGVudGlmaWVyXCIpLGVXcj1yKEk0KSxuV3I9cihCMiksdFdyPXIoXCJFeHBvcnRTcGVjaWZpZXJcIiksdVdyPXIoQjIpLGlXcj1yKFwiSW1wb3J0RGVmYXVsdFNwZWNpZmllclwiKSxmV3I9cihCMikseFdyPXIoXCJJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXJcIiksb1dyPXIoY1gpLGFXcj1yKEIyKSxjV3I9cihcImltcG9ydGVkXCIpLHNXcj1yKFwiSW1wb3J0U3BlY2lmaWVyXCIpLHZXcj1yKFwiTGluZVwiKSxsV3I9cihcIkJsb2NrXCIpLGJXcj1yKEJuKSxwV3I9cihCbiksbVdyPXIoXCJEZWNsYXJlZFByZWRpY2F0ZVwiKSxfV3I9cihcIkluZmVycmVkUHJlZGljYXRlXCIpLHlXcj1yKEMyKSxoV3I9cihUWCksZFdyPXIoakgpLGtXcj1yKHB2KSx3V3I9cihJdiksRVdyPXIoeGspLFNXcj1yKFwibWVzc2FnZVwiKSxnV3I9cihoRSksRldyPXIoSEgpLFRXcj1yKGc3KSxPV3I9cihjYyksSVdyPXIoSTIpLEFXcj1yKFk0KSxOV3I9WzAsWzMsMCwwXSxyKFZ0KV0sQ1dyPXIoTTIpLFBXcj1yKEEzKSxEV3I9cihSMiksTFdyPXIoajIpLFJXcj1yKEp1KSxqV3I9cihENyksR1dyPXIoaTEpLE1Xcj1yKEY3KSxCV3I9cihkNCkscVdyPXIoVTIpLFVXcj1yKEs2KSxIV3I9cihDOCksWFdyPXIoRDIpLFlXcj1yKEcyKSxWV3I9cihmcykseldyPXIoQ2kpLEtXcj1yKEdpKSxXV3I9cihBNyksSldyPXIoZDYpLCRXcj1yKG82KSxaV3I9cihONyksUVdyPXIoX2kpLHJKcj1yKF80KSxlSnI9cihxOCksbkpyPXIobnApLHRKcj1yKHEyKSx1SnI9cihQNyksaUpyPXIobnUpLGZKcj1yKFU0KSx4SnI9cih1MSksb0pyPXIoSjIpLGFKcj1yKHJzKSxjSnI9cihlcyksc0pyPXIoYjgpLHZKcj1yKF8zKSxsSnI9cihVdSksYkpyPXIoeXYpLHBKcj1yKHdzKSxtSnI9cihlNyksX0pyPXIoeTQpLHlKcj1yKGs0KSxoSnI9cihhNiksZEpyPXIoRTYpLGtKcj1yKEV1KSx3SnI9cihJNyksRUpyPXIoVDIpLFNKcj1yKEpjKSxnSnI9cihlaCksRkpyPXIoQ1MpLFRKcj1yKGdzKSxPSnI9cihkeCksSUpyPXIobjYpLEFKcj1yKEg4KSxOSnI9cih2NyksQ0pyPXIoZHYpLFBKcj1yKHgxKSxESnI9cihUdiksTEpyPXIoZXMpLFJKcj1yKEs0KSxqSnI9cihPMiksR0pyPXIoTzYpLE1Kcj1bMCxyKGczKV0sQkpyPXIoQykscUpyPVs3LDBdLFVKcj1yKEMpLEhKcj1bMCwxXSxYSnI9WzAsMl0sWUpyPVswLDNdLFZKcj1bMCwwXSx6SnI9WzAsMF0sS0pyPVswLDAsMCwwLDBdLFdKcj1bMCxyKHZ2KSw5MDYsNl0sSkpyPVswLHIodnYpLFpYLDZdLCRKcj1bMCwwXSxaSnI9WzAscih2diksMTAxMiw4XSxRSnI9cihYMyksciRyPVswLHIodnYpLDEwMjksOF0sZSRyPXIoXCJDYW4gbm90IGhhdmUgYm90aCBgc3RhdGljYCBhbmQgYHByb3RvYFwiKSxuJHI9cihudSksdCRyPXIoWDMpLHUkcj1yKG4xKSxpJHI9cihsdiksZiRyPXIobjEpLHgkcj1yKHd2KSxvJHI9cihvSCksYSRyPVswLDAsMCwwXSxjJHI9WzAsWzAsMCwwLDAsMF1dLHMkcj1yKGkxKSx2JHI9WzAscihcImEgdHlwZVwiKV0sbCRyPVswLDBdLGIkcj1bMCwwXSxwJHI9WzE0LDFdLG0kcj1bMTQsMF0sXyRyPVswLHIodnYpLEVILDE1XSx5JHI9WzAscih2diksTDcsMTVdLGgkcj1bMCw0NF0sZCRyPVswLDQ0XSxrJHI9cihNMiksdyRyPVswLHIoQyksMF0sRSRyPVswLDAsMF0sUyRyPVswLDAsMF0sZyRyPVswLDAsMF0sRiRyPVswLDQxXSxUJHI9cihRdSksTyRyPXIoUXUpLEkkcj1bMCxyKFwiYSByZWd1bGFyIGV4cHJlc3Npb25cIildLEEkcj1yKEMpLE4kcj1yKEMpLEMkcj1yKEMpLFAkcj1bMCxyKFwic3JjL3BhcnNlci9leHByZXNzaW9uX3BhcnNlci5tbFwiKSxDVSwxN10sRCRyPVswLHIoXCJhIHRlbXBsYXRlIGxpdGVyYWwgcGFydFwiKV0sTCRyPVswLFswLHIoQykscihDKV0sMV0sUiRyPXIoZnMpLGokcj1yKGZzKSxHJHI9cihHaSksTSRyPXIoQ2kpLEIkcj1yKFwiSW52YWxpZCBiaWdpbnQgXCIpLHEkcj1yKFwiSW52YWxpZCBiaWdpbnQgYmluYXJ5L29jdGFsIFwiKSxVJHI9cihIMiksSCRyPXIocEgpLFgkcj1yKE5oKSxZJHI9cihOaCksViRyPXIob1UpLHokcj1bMCw0NF0sSyRyPVswLDFdLFckcj1bMCwxXSxKJHI9WzAsMV0sJCRyPVswLDFdLFokcj1bMCwwXSxRJHI9cihidiksclpyPXIoYnYpLGVacj1yKHUxKSxuWnI9cihnUyksdFpyPVswLHIoXCJ0aGUgaWRlbnRpZmllciBgdGFyZ2V0YFwiKV0sdVpyPVswLDBdLGlacj1yKFV1KSxmWnI9cihlbCkseFpyPXIoZWwpLG9acj1yKHl2KSxhWnI9WzAsMF0sY1pyPVswLHIoXCJlaXRoZXIgYSBjYWxsIG9yIGFjY2VzcyBvZiBgc3VwZXJgXCIpXSxzWnI9cih5diksdlpyPVswLDBdLGxacj1bMCwxXSxiWnI9WzAsMF0scFpyPVswLDFdLG1acj1bMCwwXSxfWnI9WzAsMV0seVpyPVswLDBdLGhacj1bMCwyXSxkWnI9WzAsM10sa1pyPVswLDddLHdacj1bMCw2XSxFWnI9WzAsNF0sU1pyPVswLDVdLGdacj1bMCxbMCwxNyxbMCwyXV1dLEZacj1bMCxbMCwxOCxbMCwzXV1dLFRacj1bMCxbMCwxOSxbMCw0XV1dLE9acj1bMCxbMCwwLFswLDVdXV0sSVpyPVswLFswLDEsWzAsNV1dXSxBWnI9WzAsWzAsMixbMCw1XV1dLE5acj1bMCxbMCwzLFswLDVdXV0sQ1pyPVswLFswLDUsWzAsNl1dXSxQWnI9WzAsWzAsNyxbMCw2XV1dLERacj1bMCxbMCw0LFswLDZdXV0sTFpyPVswLFswLDYsWzAsNl1dXSxSWnI9WzAsWzAsOCxbMCw3XV1dLGpacj1bMCxbMCw5LFswLDddXV0sR1pyPVswLFswLDEwLFswLDddXV0sTVpyPVswLFswLDExLFswLDhdXV0sQlpyPVswLFswLDEyLFswLDhdXV0scVpyPVswLFswLDE1LFswLDldXV0sVVpyPVswLFswLDEzLFswLDldXV0sSFpyPVswLFswLDE0LFsxLDEwXV1dLFhacj1bMCxbMCwxNixbMCw5XV1dLFlacj1bMCxbMCwyMSxbMCw2XV1dLFZacj1bMCxbMCwyMCxbMCw2XV1dLHpacj1bMjMscihLZSldLEtacj1bMCxbMCw4XV0sV1pyPVswLFswLDddXSxKWnI9WzAsWzAsNl1dLCRacj1bMCxbMCwxMF1dLFpacj1bMCxbMCw5XV0sUVpyPVswLFswLDExXV0sclFyPVswLFswLDVdXSxlUXI9WzAsWzAsNF1dLG5Rcj1bMCxbMCwyXV0sdFFyPVswLFswLDNdXSx1UXI9WzAsWzAsMV1dLGlRcj1bMCxbMCwwXV0sZlFyPVswLFswLDEyXV0seFFyPVswLFswLDEzXV0sb1FyPVswLFswLDE0XV0sYVFyPVswLDBdLGNRcj1yKFV1KSxzUXI9cih1MSksdlFyPXIoZ1MpLGxRcj1yKGVsKSxiUXI9cihncykscFFyPXIoVXUpLG1Rcj1yKHUxKSxfUXI9cihnUykseVFyPXIoZWwpLGhRcj1yKG8xKSxkUXI9cihMbyksa1FyPVsxNyxyKFwiSlNYIGZyYWdtZW50XCIpXSx3UXI9WzAsTmldLEVRcj1bMSxOaV0sU1FyPXIoQyksZ1FyPVswLHIoQyldLEZRcj1bMCxyKGczKV0sVFFyPXIoQyksT1FyPVswLDAsMCwwXSxJUXI9WzAscihcInNyYy9oYWNrX2ZvcmtlZC91dGlscy9jb2xsZWN0aW9ucy9mbG93X21hcC5tbFwiKSw3MTcsMzZdLEFRcj1bMCwwLDBdLE5Rcj1yKHEyKSxDUXI9WzAscihDKSwwXSxQUXI9cihcInVuZXhwZWN0ZWQgUHJpdmF0ZU5hbWUgaW4gUHJvcGVydHksIGV4cGVjdGVkIGEgUHJpdmF0ZUZpZWxkXCIpLERRcj1yKHd2KSxMUXI9cihvSCksUlFyPVswLDAsMF0salFyPXIod3YpLEdRcj1yKHd2KSxNUXI9cihuMSksQlFyPXIobHYpLHFRcj1bMCwxXSxVUXI9WzAsMV0sSFFyPVswLDFdLFhRcj1yKHd2KSxZUXI9cihuMSksVlFyPXIobHYpLHpRcj1yKFhPKSxLUXI9cihFdSksV1FyPXIoZHgpLEpRcj1yKFwiSW50ZXJuYWwgRXJyb3I6IHByaXZhdGUgbmFtZSBmb3VuZCBpbiBvYmplY3QgcHJvcHNcIiksJFFyPXIoY1YpLFpRcj1bMCxyKGczKV0sUVFyPXIoRXUpLHIwZT1yKGR4KSxlMGU9cihFdSksbjBlPXIoZHgpLHQwZT1yKGNWKSx1MGU9WzEwLHIoeWkpXSxpMGU9WzAsMV0sZjBlPXIoYTEpLHgwZT1yKEsyKSxvMGU9WzAscihMUyksMTc2MywyMV0sYTBlPXIoSzIpLGMwZT1yKGExKSxzMGU9WzAscihcImEgZGVjbGFyYXRpb24sIHN0YXRlbWVudCBvciBleHBvcnQgc3BlY2lmaWVyc1wiKV0sdjBlPVswLDQwXSxsMGU9cihhMSksYjBlPXIoSzIpLHAwZT1bMCxyKEMpLHIoQyksMF0sbTBlPVswLHIoRVUpXSxfMGU9cihwVSkseTBlPXIoXCJleHBvcnRzXCIpLGgwZT1bMCwxXSxkMGU9WzAsMV0sazBlPVswLDBdLHcwZT1yKHBVKSxFMGU9WzAsNDBdLFMwZT1yKEh5KSxnMGU9WzAsMF0sRjBlPVswLDFdLFQwZT1bMCw4M10sTzBlPVswLDBdLEkwZT1bMCwxXSxBMGU9cihhMSksTjBlPXIoYTEpLEMwZT1yKEsyKSxQMGU9cihhMSksRDBlPVswLHIoXCJ0aGUga2V5d29yZCBgYXNgXCIpXSxMMGU9cihhMSksUjBlPXIoSzIpLGowZT1bMCxyKEVVKV0sRzBlPVswLHIoXCJ0aGUga2V5d29yZCBgZnJvbWBcIildLE0wZT1bMCxyKEMpLHIoQyksMF0sQjBlPVswLHIodFUpXSxxMGU9cihcIkxhYmVsXCIpLFUwZT1bMCxyKHRVKV0sSDBlPVswLDAsMF0sWDBlPVswLDI5XSxZMGU9WzAscihMUyksNDMxLDIyXSxWMGU9WzAsMjhdLHowZT1bMCxyKExTKSw0NTAsMjJdLEswZT1bMCwwXSxXMGU9cihcInRoZSB0b2tlbiBgO2BcIiksSjBlPVswLDBdLCQwZT1bMCwwXSxaMGU9cihkeCksUTBlPXIoRzIpLHJyZT1yKEV1KSxlcmU9WzAscihIVSldLG5yZT1bMTUsWzAsMF1dLHRyZT1bMCxyKEhVKV0sdXJlPXIoXCJ1c2Ugc3RyaWN0XCIpLGlyZT1bMCwwLDAsMF0sZnJlPXIoTUkpLHhyZT1yKFwiTm9vbzogXCIpLG9yZT1yKF9pKSxhcmU9cihcIlBhcnNlciBlcnJvcjogTm8gc3VjaCB0aGluZyBhcyBhbiBleHByZXNzaW9uIHBhdHRlcm4hXCIpLGNyZT1yKEMpLHNyZT1bMCxbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXV0sdnJlPVswLHIoXCJzcmMvcGFyc2VyL3BhcnNlcl9mbG93Lm1sXCIpLE5ULDI4XSxscmU9WzAsWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1dLGJyZT1yKEJuKSxwcmU9cihLWSksbXJlPXIoSTIpLF9yZT1yKFk0KSx5cmU9cihISCksaHJlPXIoSTIpLGRyZT1yKFk0KSxrcmU9cihnNyksd3JlPXIoaEUpLEVyZT1yKFwibm9ybWFsXCIpLFNyZT1yKEpjKSxncmU9cihcImpzeFRhZ1wiKSxGcmU9cihcImpzeENoaWxkXCIpLFRyZT1yKFwidGVtcGxhdGVcIiksT3JlPXIoTUgpLElyZT1yKFwiY29udGV4dFwiKSxBcmU9cihKYyksTnJlPXIoXCJ1c2Vfc3RyaWN0XCIpLENyZT1yKCQ2KSxQcmU9cihcImVzcHJvcG9zYWxfZXhwb3J0X3N0YXJfYXNcIiksRHJlPXIoXCJlc3Byb3Bvc2FsX2RlY29yYXRvcnNcIiksTHJlPXIoXCJlbnVtc1wiKSxScmU9cihcIkludGVybmFsIGVycm9yOiBcIik7ZnVuY3Rpb24gR3QodCl7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpcmV0dXJuIDA7c3dpdGNoKHRbMF0pe2Nhc2UgMDpyZXR1cm5bMCxHdCh0WzFdKV07Y2FzZSAxOnJldHVyblsxLEd0KHRbMV0pXTtjYXNlIDI6cmV0dXJuWzIsR3QodFsxXSldO2Nhc2UgMzpyZXR1cm5bMyxHdCh0WzFdKV07Y2FzZSA0OnJldHVybls0LEd0KHRbMV0pXTtjYXNlIDU6cmV0dXJuWzUsR3QodFsxXSldO2Nhc2UgNjpyZXR1cm5bNixHdCh0WzFdKV07Y2FzZSA3OnJldHVybls3LEd0KHRbMV0pXTtjYXNlIDg6dmFyIG49dFsxXTtyZXR1cm5bOCxuLEd0KHRbMl0pXTtjYXNlIDk6dmFyIGU9dFsxXTtyZXR1cm5bOSxlLGUsR3QodFszXSldO2Nhc2UgMTA6cmV0dXJuWzEwLEd0KHRbMV0pXTtjYXNlIDExOnJldHVyblsxMSxHdCh0WzFdKV07Y2FzZSAxMjpyZXR1cm5bMTIsR3QodFsxXSldO2Nhc2UgMTM6cmV0dXJuWzEzLEd0KHRbMV0pXTtkZWZhdWx0OnJldHVyblsxNCxHdCh0WzFdKV19fWZ1bmN0aW9uIHU3KHQsbil7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpcmV0dXJuIG47c3dpdGNoKHRbMF0pe2Nhc2UgMDpyZXR1cm5bMCx1Nyh0WzFdLG4pXTtjYXNlIDE6cmV0dXJuWzEsdTcodFsxXSxuKV07Y2FzZSAyOnJldHVyblsyLHU3KHRbMV0sbildO2Nhc2UgMzpyZXR1cm5bMyx1Nyh0WzFdLG4pXTtjYXNlIDQ6cmV0dXJuWzQsdTcodFsxXSxuKV07Y2FzZSA1OnJldHVybls1LHU3KHRbMV0sbildO2Nhc2UgNjpyZXR1cm5bNix1Nyh0WzFdLG4pXTtjYXNlIDc6cmV0dXJuWzcsdTcodFsxXSxuKV07Y2FzZSA4OnZhciBlPXRbMV07cmV0dXJuWzgsZSx1Nyh0WzJdLG4pXTtjYXNlIDk6dmFyIGk9dFsyXSx4PXRbMV07cmV0dXJuWzkseCxpLHU3KHRbM10sbildO2Nhc2UgMTA6cmV0dXJuWzEwLHU3KHRbMV0sbildO2Nhc2UgMTE6cmV0dXJuWzExLHU3KHRbMV0sbildO2Nhc2UgMTI6cmV0dXJuWzEyLHU3KHRbMV0sbildO2Nhc2UgMTM6cmV0dXJuWzEzLHU3KHRbMV0sbildO2RlZmF1bHQ6cmV0dXJuWzE0LHU3KHRbMV0sbildfX1mdW5jdGlvbiBBdCh0LG4pe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXJldHVybiBuO3N3aXRjaCh0WzBdKXtjYXNlIDA6cmV0dXJuWzAsQXQodFsxXSxuKV07Y2FzZSAxOnJldHVyblsxLEF0KHRbMV0sbildO2Nhc2UgMjp2YXIgZT10WzFdO3JldHVyblsyLGUsQXQodFsyXSxuKV07Y2FzZSAzOnZhciBpPXRbMV07cmV0dXJuWzMsaSxBdCh0WzJdLG4pXTtjYXNlIDQ6dmFyIHg9dFszXSxjPXRbMl0scz10WzFdO3JldHVybls0LHMsYyx4LEF0KHRbNF0sbildO2Nhc2UgNTp2YXIgcD10WzNdLHk9dFsyXSxUPXRbMV07cmV0dXJuWzUsVCx5LHAsQXQodFs0XSxuKV07Y2FzZSA2OnZhciBFPXRbM10sZD10WzJdLHc9dFsxXTtyZXR1cm5bNix3LGQsRSxBdCh0WzRdLG4pXTtjYXNlIDc6dmFyIEc9dFszXSxBPXRbMl0sUz10WzFdO3JldHVybls3LFMsQSxHLEF0KHRbNF0sbildO2Nhc2UgODp2YXIgTT10WzNdLEs9dFsyXSxWPXRbMV07cmV0dXJuWzgsVixLLE0sQXQodFs0XSxuKV07Y2FzZSA5OnZhciBmMD10WzFdO3JldHVybls5LGYwLEF0KHRbMl0sbildO2Nhc2UgMTA6cmV0dXJuWzEwLEF0KHRbMV0sbildO2Nhc2UgMTE6dmFyIG0wPXRbMV07cmV0dXJuWzExLG0wLEF0KHRbMl0sbildO2Nhc2UgMTI6dmFyIGswPXRbMV07cmV0dXJuWzEyLGswLEF0KHRbMl0sbildO2Nhc2UgMTM6dmFyIGcwPXRbMl0sZTA9dFsxXTtyZXR1cm5bMTMsZTAsZzAsQXQodFszXSxuKV07Y2FzZSAxNDp2YXIgeDA9dFsyXSxsPXRbMV07cmV0dXJuWzE0LGwseDAsQXQodFszXSxuKV07Y2FzZSAxNTpyZXR1cm5bMTUsQXQodFsxXSxuKV07Y2FzZSAxNjpyZXR1cm5bMTYsQXQodFsxXSxuKV07Y2FzZSAxNzp2YXIgYzA9dFsxXTtyZXR1cm5bMTcsYzAsQXQodFsyXSxuKV07Y2FzZSAxODp2YXIgdDA9dFsxXTtyZXR1cm5bMTgsdDAsQXQodFsyXSxuKV07Y2FzZSAxOTpyZXR1cm5bMTksQXQodFsxXSxuKV07Y2FzZSAyMDp2YXIgbzA9dFsyXSx3MD10WzFdO3JldHVyblsyMCx3MCxvMCxBdCh0WzNdLG4pXTtjYXNlIDIxOnZhciBfMD10WzFdO3JldHVyblsyMSxfMCxBdCh0WzJdLG4pXTtjYXNlIDIyOnJldHVyblsyMixBdCh0WzFdLG4pXTtjYXNlIDIzOnZhciBFMD10WzFdO3JldHVyblsyMyxFMCxBdCh0WzJdLG4pXTtkZWZhdWx0OnZhciBVMD10WzJdLGI9dFsxXTtyZXR1cm5bMjQsYixVMCxBdCh0WzNdLG4pXX19ZnVuY3Rpb24gbk4odCxuLGUpe3JldHVybiB0WzFdPT09bj8odFsxXT1lLDEpOjB9ZnVuY3Rpb24ga2UodCl7dGhyb3dbMCxxNyx0XX1mdW5jdGlvbiBQdSh0KXt0aHJvd1swLFpBLHRdfU03KDApO2Z1bmN0aW9uIGdwKHQpe3JldHVybiAwPD10P3Q6LXR8MH12YXIganJlPW1IO2Z1bmN0aW9uIFRlKHQsbil7dmFyIGU9dW4odCksaT11bihuKSx4PUx0KGUraXwwKTtyZXR1cm4gVHModCwwLHgsMCxlKSxUcyhuLDAseCxlLGkpLHh9ZnVuY3Rpb24gR3JlKHQpe3JldHVybiB0P2ZpMDp4aTB9ZnVuY3Rpb24gb24odCxuKXtpZih0KXt2YXIgZT10WzFdO3JldHVyblswLGUsb24odFsyXSxuKV19cmV0dXJuIG59TTcwKDApO3ZhciBNcmU9elYoMSksUGM9elYoMik7ZnVuY3Rpb24gQnJlKHQpe2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciBpPWU7Oyl7aWYoaSl7dmFyIHg9aVsyXSxjPWlbMV07dHJ5e3AxKGMpfWNhdGNoKHkpe2lmKHk9RXQoeSkseVsxXSE9PSRWKXRocm93IHk7dmFyIHM9eX12YXIgaT14O2NvbnRpbnVlfXJldHVybiAwfX1yZXR1cm4gbihCNzAoMCkpfWZ1bmN0aW9uIHZsKHQsbil7cmV0dXJuIHpBKHQsbiwwLHVuKG4pKX1mdW5jdGlvbiBpeih0KXtyZXR1cm4gdmwoUGMsdCksS1YoUGMsMTApLHAxKFBjKX12YXIgdE49WzAsQnJlXTtmdW5jdGlvbiBmeih0KXtmb3IoOzspe3ZhciBuPXROWzFdLGU9WzAsMV0saT0xLW5OKHROLG4sZnVuY3Rpb24oeCxjKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIG5OKHgsMSwwKSYmdSh0LDApLHUoYywwKX19KGUsbikpO2lmKCFpKXJldHVybiBpfX1mdW5jdGlvbiB1Tih0KXtyZXR1cm4gdSh0TlsxXSwwKX1XQShyKHNWKSx1TiksSzcwKDApJiZmeihmdW5jdGlvbih0KXtyZXR1cm4gbDcwKHQpfSk7ZnVuY3Rpb24geHoodCl7cmV0dXJuIDI1PCh0K1kzfDApPj4+MD90OnQraFV8MH12YXIgb3o9SjcwKDApWzFdLGxsPSg0Kno3MCgwKXwwKS0xfDA7TTcoMCk7dmFyIHFyZT1WNzAoMCk7ZnVuY3Rpb24gRGModCl7Zm9yKHZhciBuPTAsZT10Ozspe2lmKGUpe3ZhciBuPW4rMXwwLGU9ZVsyXTtjb250aW51ZX1yZXR1cm4gbn19ZnVuY3Rpb24gYmwodCl7cmV0dXJuIHQ/dFsxXTprZShtaTApfWZ1bmN0aW9uIGF6KHQpe3JldHVybiB0P3RbMl06a2UocGkwKX1mdW5jdGlvbiBMYyh0LG4pe2Zvcih2YXIgZT10LGk9bjs7KXtpZihlKXt2YXIgeD1bMCxlWzFdLGldLGU9ZVsyXSxpPXg7Y29udGludWV9cmV0dXJuIGl9fWZ1bmN0aW9uIHllKHQpe3JldHVybiBMYyh0LDApfWZ1bmN0aW9uIHBsKHQpe2lmKHQpe3ZhciBuPXRbMV07cmV0dXJuIG9uKG4scGwodFsyXSkpfXJldHVybiAwfWZ1bmN0aW9uIGQxKHQsbil7aWYobil7dmFyIGU9blsyXSxpPXUodCxuWzFdKTtyZXR1cm5bMCxpLGQxKHQsZSldfXJldHVybiAwfWZ1bmN0aW9uIEZwKHQsbil7Zm9yKHZhciBlPTAsaT1uOzspe2lmKGkpe3ZhciB4PWlbMl0sZT1bMCx1KHQsaVsxXSksZV0saT14O2NvbnRpbnVlfXJldHVybiBlfX1mdW5jdGlvbiBEdSh0LG4pe2Zvcih2YXIgZT1uOzspe2lmKGUpe3ZhciBpPWVbMl07dSh0LGVbMV0pO3ZhciBlPWk7Y29udGludWV9cmV0dXJuIDB9fWZ1bmN0aW9uIGxlKHQsbixlKXtmb3IodmFyIGk9bix4PWU7Oyl7aWYoeCl7dmFyIGM9eFsyXSxpPW8odCxpLHhbMV0pLHg9Yztjb250aW51ZX1yZXR1cm4gaX19ZnVuY3Rpb24gaU4odCxuLGUpe2lmKG4pe3ZhciBpPW5bMV07cmV0dXJuIG8odCxpLGlOKHQsblsyXSxlKSl9cmV0dXJuIGV9ZnVuY3Rpb24gY3oodCxuLGUpe2Zvcih2YXIgaT1uLHg9ZTs7KXtpZihpKXtpZih4KXt2YXIgYz14WzJdLHM9aVsyXTtvKHQsaVsxXSx4WzFdKTt2YXIgaT1zLHg9Yztjb250aW51ZX19ZWxzZSBpZigheClyZXR1cm4gMDtyZXR1cm4gUHUoYmkwKX19ZnVuY3Rpb24gZk4odCxuKXtmb3IodmFyIGU9bjs7KXtpZihlKXt2YXIgaT1lWzJdLHg9TFYoZVsxXSx0KT09PTA/MTowO2lmKHgpcmV0dXJuIHg7dmFyIGU9aTtjb250aW51ZX1yZXR1cm4gMH19ZnVuY3Rpb24gVXJlKHQsbil7Zm9yKHZhciBlPW47Oyl7aWYoZSl7dmFyIGk9ZVsxXSx4PWVbMl0sYz1pWzJdO2lmKExWKGlbMV0sdCk9PT0wKXJldHVybiBjO3ZhciBlPXg7Y29udGludWV9dGhyb3cgSnR9fWZ1bmN0aW9uIG1sKHQpe3ZhciBuPTA7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgaT1uLHg9ZTs7KXtpZih4KXt2YXIgYz14WzJdLHM9eFsxXTtpZih1KHQscykpe3ZhciBpPVswLHMsaV0seD1jO2NvbnRpbnVlfXZhciB4PWM7Y29udGludWV9cmV0dXJuIHllKGkpfX19ZnVuY3Rpb24gazEodCxuKXt2YXIgZT1MdCh0KTtyZXR1cm4gdjcwKGUsMCx0LG4pLGV9ZnVuY3Rpb24gc3oodCl7dmFyIG49YjcodCksZT1MdChuKTtyZXR1cm4gRnModCwwLGUsMCxuKSxlfWZ1bmN0aW9uIHZ6KHQsbixlKXtpZigwPD1uJiYwPD1lJiYhKChiNyh0KS1lfDApPG4pKXt2YXIgaT1MdChlKTtyZXR1cm4gRnModCxuLGksMCxlKSxpfXJldHVybiBQdShoaTApfWZ1bmN0aW9uIHF2KHQsbixlKXtyZXR1cm4gdnoodCxuLGUpfWZ1bmN0aW9uIGx6KHQsbixlLGkseCl7cmV0dXJuIDA8PXgmJjA8PW4mJiEoKGI3KHQpLXh8MCk8bikmJjA8PWkmJiEoKGI3KGUpLXh8MCk8aSk/RnModCxuLGUsaSx4KTpQdSh5aTApfWZ1bmN0aW9uIGNzKHQsbixlLGkseCl7cmV0dXJuIDA8PXgmJjA8PW4mJiEoKHVuKHQpLXh8MCk8bikmJjA8PWkmJiEoKGI3KGUpLXh8MCk8aSk/VHModCxuLGUsaSx4KTpQdShfaTApfWZ1bmN0aW9uIFRwKHQsbil7cmV0dXJuIGsxKHQsbil9ZnVuY3Rpb24gbTcodCxuLGUpe3JldHVybiB2eih0LG4sZSl9dmFyIGJ6PUVlO2Z1bmN0aW9uIHB6KHQsbil7dmFyIGU9bi5sZW5ndGgtMS0xfDAsaT0wO2lmKCEoZTwwKSlmb3IodmFyIHg9aTs7KXt1KHQsblsxK3hdKTt2YXIgYz14KzF8MDtpZihlIT09eCl7dmFyIHg9Yztjb250aW51ZX1icmVha31yZXR1cm4gMH1mdW5jdGlvbiBPcCh0LG4pe3ZhciBlPW4ubGVuZ3RoLTE7aWYoZT09PTApcmV0dXJuWzBdO3ZhciBpPUd2KGUsdSh0LG5bMV0pKSx4PWUtMXwwLGM9MTtpZighKHg8MSkpZm9yKHZhciBzPWM7Oyl7aVsxK3NdPXUodCxuWzErc10pO3ZhciBwPXMrMXwwO2lmKHghPT1zKXt2YXIgcz1wO2NvbnRpbnVlfWJyZWFrfXJldHVybiBpfWZ1bmN0aW9uIF9sKHQpe2lmKHQpZm9yKHZhciBuPTAsZT10LGk9dFsyXSx4PXRbMV07Oyl7aWYoZSl7dmFyIG49bisxfDAsZT1lWzJdO2NvbnRpbnVlfWZvcih2YXIgYz1HdihuLHgpLHM9MSxwPWk7Oyl7aWYocCl7dmFyIHk9cFsyXTtjWzErc109cFsxXTt2YXIgcz1zKzF8MCxwPXk7Y29udGludWV9cmV0dXJuIGN9fXJldHVyblswXX1NNygwKTtmdW5jdGlvbiB4Tih0KXtmdW5jdGlvbiBuKHYwKXtyZXR1cm4gdjA/djBbNV06MH1mdW5jdGlvbiBlKHYwLFAsTCxRKXt2YXIgaTA9bih2MCksbDA9bihRKSxTMD1sMDw9aTA/aTArMXwwOmwwKzF8MDtyZXR1cm5bMCx2MCxQLEwsUSxTMF19ZnVuY3Rpb24gaSh2MCxQKXtyZXR1cm5bMCwwLHYwLFAsMCwxXX1mdW5jdGlvbiB4KHYwLFAsTCxRKXt2YXIgaTA9djA/djBbNV06MCxsMD1RP1FbNV06MDtpZigobDArMnwwKTxpMCl7aWYodjApe3ZhciBTMD12MFs0XSxUMD12MFszXSxycj12MFsyXSxMMD12MFsxXSxCPW4oUzApO2lmKEI8PW4oTDApKXJldHVybiBlKEwwLHJyLFQwLGUoUzAsUCxMLFEpKTtpZihTMCl7dmFyIFo9UzBbM10scDA9UzBbMl0sYjA9UzBbMV0sTzA9ZShTMFs0XSxQLEwsUSk7cmV0dXJuIGUoZShMMCxycixUMCxiMCkscDAsWixPMCl9cmV0dXJuIFB1KEZpMCl9cmV0dXJuIFB1KFRpMCl9aWYoKGkwKzJ8MCk8bDApe2lmKFEpe3ZhciBNMD1RWzRdLGVyPVFbM10seXI9UVsyXSx2cj1RWzFdLCQwPW4odnIpO2lmKCQwPD1uKE0wKSlyZXR1cm4gZShlKHYwLFAsTCx2cikseXIsZXIsTTApO2lmKHZyKXt2YXIgRXI9dnJbM10sTXI9dnJbMl0sQnI9dnJbMV0scXI9ZSh2cls0XSx5cixlcixNMCk7cmV0dXJuIGUoZSh2MCxQLEwsQnIpLE1yLEVyLHFyKX1yZXR1cm4gUHUoT2kwKX1yZXR1cm4gUHUoSWkwKX12YXIganI9bDA8PWkwP2kwKzF8MDpsMCsxfDA7cmV0dXJuWzAsdjAsUCxMLFEsanJdfXZhciBjPTA7ZnVuY3Rpb24gcyh2MCl7cmV0dXJuIHYwPzA6MX1mdW5jdGlvbiBwKHYwLFAsTCl7aWYoTCl7dmFyIFE9TFs0XSxpMD1MWzNdLGwwPUxbMl0sUzA9TFsxXSxUMD1MWzVdLHJyPW8odFsxXSx2MCxsMCk7aWYocnI9PT0wKXJldHVybiBpMD09PVA/TDpbMCxTMCx2MCxQLFEsVDBdO2lmKDA8PXJyKXt2YXIgTDA9cCh2MCxQLFEpO3JldHVybiBRPT09TDA/TDp4KFMwLGwwLGkwLEwwKX12YXIgQj1wKHYwLFAsUzApO3JldHVybiBTMD09PUI/TDp4KEIsbDAsaTAsUSl9cmV0dXJuWzAsMCx2MCxQLDAsMV19ZnVuY3Rpb24geSh2MCxQKXtmb3IodmFyIEw9UDs7KXtpZihMKXt2YXIgUT1MWzRdLGkwPUxbM10sbDA9TFsxXSxTMD1vKHRbMV0sdjAsTFsyXSk7aWYoUzA9PT0wKXJldHVybiBpMDt2YXIgVDA9MDw9UzA/UTpsMCxMPVQwO2NvbnRpbnVlfXRocm93IEp0fX1mdW5jdGlvbiBUKHYwLFApe2Zvcih2YXIgTD1QOzspe2lmKEwpe3ZhciBRPUxbMl0saTA9TFs0XSxsMD1MWzNdLFMwPUxbMV07aWYodSh2MCxRKSlmb3IodmFyIFQwPVEscnI9bDAsTDA9UzA7Oyl7aWYoTDApe3ZhciBCPUwwWzJdLFo9TDBbNF0scDA9TDBbM10sYjA9TDBbMV07aWYodSh2MCxCKSl7dmFyIFQwPUIscnI9cDAsTDA9YjA7Y29udGludWV9dmFyIEwwPVo7Y29udGludWV9cmV0dXJuWzAsVDAscnJdfXZhciBMPWkwO2NvbnRpbnVlfXRocm93IEp0fX1mdW5jdGlvbiBFKHYwLFApe2Zvcih2YXIgTD1QOzspe2lmKEwpe3ZhciBRPUxbMl0saTA9TFs0XSxsMD1MWzNdLFMwPUxbMV07aWYodSh2MCxRKSlmb3IodmFyIFQwPVEscnI9bDAsTDA9UzA7Oyl7aWYoTDApe3ZhciBCPUwwWzJdLFo9TDBbNF0scDA9TDBbM10sYjA9TDBbMV07aWYodSh2MCxCKSl7dmFyIFQwPUIscnI9cDAsTDA9YjA7Y29udGludWV9dmFyIEwwPVo7Y29udGludWV9cmV0dXJuWzAsWzAsVDAscnJdXX12YXIgTD1pMDtjb250aW51ZX1yZXR1cm4gMH19ZnVuY3Rpb24gZCh2MCxQKXtmb3IodmFyIEw9UDs7KXtpZihMKXt2YXIgUT1MWzJdLGkwPUxbNF0sbDA9TFszXSxTMD1MWzFdO2lmKHUodjAsUSkpZm9yKHZhciBUMD1RLHJyPWwwLEwwPWkwOzspe2lmKEwwKXt2YXIgQj1MMFsyXSxaPUwwWzRdLHAwPUwwWzNdLGIwPUwwWzFdO2lmKHUodjAsQikpe3ZhciBUMD1CLHJyPXAwLEwwPVo7Y29udGludWV9dmFyIEwwPWIwO2NvbnRpbnVlfXJldHVyblswLFQwLHJyXX12YXIgTD1TMDtjb250aW51ZX10aHJvdyBKdH19ZnVuY3Rpb24gdyh2MCxQKXtmb3IodmFyIEw9UDs7KXtpZihMKXt2YXIgUT1MWzJdLGkwPUxbNF0sbDA9TFszXSxTMD1MWzFdO2lmKHUodjAsUSkpZm9yKHZhciBUMD1RLHJyPWwwLEwwPWkwOzspe2lmKEwwKXt2YXIgQj1MMFsyXSxaPUwwWzRdLHAwPUwwWzNdLGIwPUwwWzFdO2lmKHUodjAsQikpe3ZhciBUMD1CLHJyPXAwLEwwPVo7Y29udGludWV9dmFyIEwwPWIwO2NvbnRpbnVlfXJldHVyblswLFswLFQwLHJyXV19dmFyIEw9UzA7Y29udGludWV9cmV0dXJuIDB9fWZ1bmN0aW9uIEcodjAsUCl7Zm9yKHZhciBMPVA7Oyl7aWYoTCl7dmFyIFE9TFs0XSxpMD1MWzNdLGwwPUxbMV0sUzA9byh0WzFdLHYwLExbMl0pO2lmKFMwPT09MClyZXR1cm5bMCxpMF07dmFyIFQwPTA8PVMwP1E6bDAsTD1UMDtjb250aW51ZX1yZXR1cm4gMH19ZnVuY3Rpb24gQSh2MCxQKXtmb3IodmFyIEw9UDs7KXtpZihMKXt2YXIgUT1MWzRdLGkwPUxbMV0sbDA9byh0WzFdLHYwLExbMl0pLFMwPWwwPT09MD8xOjA7aWYoUzApcmV0dXJuIFMwO3ZhciBUMD0wPD1sMD9ROmkwLEw9VDA7Y29udGludWV9cmV0dXJuIDB9fWZ1bmN0aW9uIFModjApe2Zvcih2YXIgUD12MDs7KXtpZihQKXt2YXIgTD1QWzFdO2lmKEwpe3ZhciBQPUw7Y29udGludWV9cmV0dXJuWzAsUFsyXSxQWzNdXX10aHJvdyBKdH19ZnVuY3Rpb24gTSh2MCl7Zm9yKHZhciBQPXYwOzspe2lmKFApe3ZhciBMPVBbMV07aWYoTCl7dmFyIFA9TDtjb250aW51ZX1yZXR1cm5bMCxbMCxQWzJdLFBbM11dXX1yZXR1cm4gMH19ZnVuY3Rpb24gSyh2MCl7Zm9yKHZhciBQPXYwOzspe2lmKFApe2lmKFBbNF0pe3ZhciBQPVBbNF07Y29udGludWV9cmV0dXJuWzAsUFsyXSxQWzNdXX10aHJvdyBKdH19ZnVuY3Rpb24gVih2MCl7Zm9yKHZhciBQPXYwOzspe2lmKFApe2lmKFBbNF0pe3ZhciBQPVBbNF07Y29udGludWV9cmV0dXJuWzAsWzAsUFsyXSxQWzNdXV19cmV0dXJuIDB9fWZ1bmN0aW9uIGYwKHYwKXtpZih2MCl7dmFyIFA9djBbMV07aWYoUCl7dmFyIEw9djBbNF0sUT12MFszXSxpMD12MFsyXTtyZXR1cm4geChmMChQKSxpMCxRLEwpfXJldHVybiB2MFs0XX1yZXR1cm4gUHUod2kwKX1mdW5jdGlvbiBtMCh2MCxQKXtpZih2MCl7aWYoUCl7dmFyIEw9UyhQKSxRPUxbMl0saTA9TFsxXTtyZXR1cm4geCh2MCxpMCxRLGYwKFApKX1yZXR1cm4gdjB9cmV0dXJuIFB9ZnVuY3Rpb24gazAodjAsUCl7aWYoUCl7dmFyIEw9UFs0XSxRPVBbM10saTA9UFsyXSxsMD1QWzFdLFMwPW8odFsxXSx2MCxpMCk7aWYoUzA9PT0wKXJldHVybiBtMChsMCxMKTtpZigwPD1TMCl7dmFyIFQwPWswKHYwLEwpO3JldHVybiBMPT09VDA/UDp4KGwwLGkwLFEsVDApfXZhciBycj1rMCh2MCxsMCk7cmV0dXJuIGwwPT09cnI/UDp4KHJyLGkwLFEsTCl9cmV0dXJuIDB9ZnVuY3Rpb24gZzAodjAsUCxMKXtpZihMKXt2YXIgUT1MWzRdLGkwPUxbM10sbDA9TFsyXSxTMD1MWzFdLFQwPUxbNV0scnI9byh0WzFdLHYwLGwwKTtpZihycj09PTApe3ZhciBMMD11KFAsWzAsaTBdKTtpZihMMCl7dmFyIEI9TDBbMV07cmV0dXJuIGkwPT09Qj9MOlswLFMwLHYwLEIsUSxUMF19cmV0dXJuIG0wKFMwLFEpfWlmKDA8PXJyKXt2YXIgWj1nMCh2MCxQLFEpO3JldHVybiBRPT09Wj9MOngoUzAsbDAsaTAsWil9dmFyIHAwPWcwKHYwLFAsUzApO3JldHVybiBTMD09PXAwP0w6eChwMCxsMCxpMCxRKX12YXIgYjA9dShQLDApO3JldHVybiBiMD9bMCwwLHYwLGIwWzFdLDAsMV06MH1mdW5jdGlvbiBlMCh2MCxQKXtmb3IodmFyIEw9UDs7KXtpZihMKXt2YXIgUT1MWzRdLGkwPUxbM10sbDA9TFsyXTtlMCh2MCxMWzFdKSxvKHYwLGwwLGkwKTt2YXIgTD1RO2NvbnRpbnVlfXJldHVybiAwfX1mdW5jdGlvbiB4MCh2MCxQKXtpZihQKXt2YXIgTD1QWzVdLFE9UFs0XSxpMD1QWzNdLGwwPVBbMl0sUzA9eDAodjAsUFsxXSksVDA9dSh2MCxpMCk7cmV0dXJuWzAsUzAsbDAsVDAseDAodjAsUSksTF19cmV0dXJuIDB9ZnVuY3Rpb24gbCh2MCxQKXtpZihQKXt2YXIgTD1QWzJdLFE9UFs1XSxpMD1QWzRdLGwwPVBbM10sUzA9bCh2MCxQWzFdKSxUMD1vKHYwLEwsbDApO3JldHVyblswLFMwLEwsVDAsbCh2MCxpMCksUV19cmV0dXJuIDB9ZnVuY3Rpb24gYzAodjAsUCxMKXtmb3IodmFyIFE9UCxpMD1MOzspe2lmKFEpe3ZhciBsMD1RWzRdLFMwPVFbM10sVDA9UVsyXSxycj11cih2MCxUMCxTMCxjMCh2MCxRWzFdLGkwKSksUT1sMCxpMD1ycjtjb250aW51ZX1yZXR1cm4gaTB9fWZ1bmN0aW9uIHQwKHYwLFApe2Zvcih2YXIgTD1QOzspe2lmKEwpe3ZhciBRPUxbNF0saTA9TFsxXSxsMD1vKHYwLExbMl0sTFszXSk7aWYobDApe3ZhciBTMD10MCh2MCxpMCk7aWYoUzApe3ZhciBMPVE7Y29udGludWV9dmFyIFQwPVMwfWVsc2UgdmFyIFQwPWwwO3JldHVybiBUMH1yZXR1cm4gMX19ZnVuY3Rpb24gbzAodjAsUCl7Zm9yKHZhciBMPVA7Oyl7aWYoTCl7dmFyIFE9TFs0XSxpMD1MWzFdLGwwPW8odjAsTFsyXSxMWzNdKTtpZihsMCl2YXIgUzA9bDA7ZWxzZXt2YXIgVDA9bzAodjAsaTApO2lmKCFUMCl7dmFyIEw9UTtjb250aW51ZX12YXIgUzA9VDB9cmV0dXJuIFMwfXJldHVybiAwfX1mdW5jdGlvbiB3MCh2MCxQLEwpe2lmKEwpe3ZhciBRPUxbNF0saTA9TFszXSxsMD1MWzJdO3JldHVybiB4KHcwKHYwLFAsTFsxXSksbDAsaTAsUSl9cmV0dXJuIGkodjAsUCl9ZnVuY3Rpb24gXzAodjAsUCxMKXtpZihMKXt2YXIgUT1MWzNdLGkwPUxbMl0sbDA9TFsxXTtyZXR1cm4geChsMCxpMCxRLF8wKHYwLFAsTFs0XSkpfXJldHVybiBpKHYwLFApfWZ1bmN0aW9uIEUwKHYwLFAsTCxRKXtpZih2MCl7aWYoUSl7dmFyIGkwPVFbNV0sbDA9djBbNV0sUzA9UVs0XSxUMD1RWzNdLHJyPVFbMl0sTDA9UVsxXSxCPXYwWzRdLFo9djBbM10scDA9djBbMl0sYjA9djBbMV07cmV0dXJuKGkwKzJ8MCk8bDA/eChiMCxwMCxaLEUwKEIsUCxMLFEpKToobDArMnwwKTxpMD94KEUwKHYwLFAsTCxMMCkscnIsVDAsUzApOmUodjAsUCxMLFEpfXJldHVybiBfMChQLEwsdjApfXJldHVybiB3MChQLEwsUSl9ZnVuY3Rpb24gVTAodjAsUCl7aWYodjApe2lmKFApe3ZhciBMPVMoUCksUT1MWzJdLGkwPUxbMV07cmV0dXJuIEUwKHYwLGkwLFEsZjAoUCkpfXJldHVybiB2MH1yZXR1cm4gUH1mdW5jdGlvbiBiKHYwLFAsTCxRKXtyZXR1cm4gTD9FMCh2MCxQLExbMV0sUSk6VTAodjAsUSl9ZnVuY3Rpb24gUjAodjAsUCl7aWYoUCl7dmFyIEw9UFs0XSxRPVBbM10saTA9UFsyXSxsMD1QWzFdLFMwPW8odFsxXSx2MCxpMCk7aWYoUzA9PT0wKXJldHVyblswLGwwLFswLFFdLExdO2lmKDA8PVMwKXt2YXIgVDA9UjAodjAsTCkscnI9VDBbM10sTDA9VDBbMl07cmV0dXJuWzAsRTAobDAsaTAsUSxUMFsxXSksTDAscnJdfXZhciBCPVIwKHYwLGwwKSxaPUJbMl0scDA9QlsxXTtyZXR1cm5bMCxwMCxaLEUwKEJbM10saTAsUSxMKV19cmV0dXJuIEVpMH1mdW5jdGlvbiBYKHYwLFAsTCl7aWYoUCl7dmFyIFE9UFsyXSxpMD1QWzVdLGwwPVBbNF0sUzA9UFszXSxUMD1QWzFdO2lmKG4oTCk8PWkwKXt2YXIgcnI9UjAoUSxMKSxMMD1yclsyXSxCPXJyWzFdLFo9WCh2MCxsMCxyclszXSkscDA9dXIodjAsUSxbMCxTMF0sTDApO3JldHVybiBiKFgodjAsVDAsQiksUSxwMCxaKX19ZWxzZSBpZighTClyZXR1cm4gMDtpZihMKXt2YXIgYjA9TFsyXSxPMD1MWzRdLE0wPUxbM10sZXI9TFsxXSx5cj1SMChiMCxQKSx2cj15clsyXSwkMD15clsxXSxFcj1YKHYwLHlyWzNdLE8wKSxNcj11cih2MCxiMCx2cixbMCxNMF0pO3JldHVybiBiKFgodjAsJDAsZXIpLGIwLE1yLEVyKX10aHJvd1swLFNuLFNpMF19ZnVuY3Rpb24gczAodjAsUCxMKXtpZihQKXtpZihMKXt2YXIgUT1MWzNdLGkwPUxbMl0sbDA9UFszXSxTMD1QWzJdLFQwPUxbNF0scnI9TFsxXSxMMD1QWzRdLEI9UFsxXTtpZihMWzVdPD1QWzVdKXt2YXIgWj1SMChTMCxMKSxwMD1aWzJdLGIwPVpbM10sTzA9czAodjAsQixaWzFdKSxNMD1zMCh2MCxMMCxiMCk7cmV0dXJuIHAwP2IoTzAsUzAsdXIodjAsUzAsbDAscDBbMV0pLE0wKTpFMChPMCxTMCxsMCxNMCl9dmFyIGVyPVIwKGkwLFApLHlyPWVyWzJdLHZyPWVyWzNdLCQwPXMwKHYwLGVyWzFdLHJyKSxFcj1zMCh2MCx2cixUMCk7cmV0dXJuIHlyP2IoJDAsaTAsdXIodjAsaTAseXJbMV0sUSksRXIpOkUwKCQwLGkwLFEsRXIpfXZhciBNcj1QfWVsc2UgdmFyIE1yPUw7cmV0dXJuIE1yfWZ1bmN0aW9uIGhyKHYwLFApe2lmKFApe3ZhciBMPVBbNF0sUT1QWzNdLGkwPVBbMl0sbDA9UFsxXSxTMD1ocih2MCxsMCksVDA9byh2MCxpMCxRKSxycj1ocih2MCxMKTtyZXR1cm4gVDA/bDA9PT1TMCYmTD09PXJyP1A6RTAoUzAsaTAsUSxycik6VTAoUzAscnIpfXJldHVybiAwfWZ1bmN0aW9uIEFyKHYwLFApe2lmKFApe3ZhciBMPVBbMl0sUT1QWzRdLGkwPVBbM10sbDA9QXIodjAsUFsxXSksUzA9byh2MCxMLGkwKSxUMD1Bcih2MCxRKTtyZXR1cm4gUzA/RTAobDAsTCxTMFsxXSxUMCk6VTAobDAsVDApfXJldHVybiAwfWZ1bmN0aW9uIG9yKHYwLFApe2lmKFApe3ZhciBMPVBbM10sUT1QWzJdLGkwPVBbNF0sbDA9b3IodjAsUFsxXSksUzA9bDBbMl0sVDA9bDBbMV0scnI9byh2MCxRLEwpLEwwPW9yKHYwLGkwKSxCPUwwWzJdLFo9TDBbMV07aWYocnIpe3ZhciBwMD1VMChTMCxCKTtyZXR1cm5bMCxFMChUMCxRLEwsWikscDBdfXZhciBiMD1FMChTMCxRLEwsQik7cmV0dXJuWzAsVTAoVDAsWiksYjBdfXJldHVybiBnaTB9ZnVuY3Rpb24gVzAodjAsUCl7Zm9yKHZhciBMPXYwLFE9UDs7KXtpZihMKXt2YXIgaTA9WzAsTFsyXSxMWzNdLExbNF0sUV0sTD1MWzFdLFE9aTA7Y29udGludWV9cmV0dXJuIFF9fWZ1bmN0aW9uIExyKHYwLFAsTCl7Zm9yKHZhciBRPVcwKEwsMCksaTA9VzAoUCwwKSxsMD1ROzspe2lmKGkwKXtpZihsMCl7dmFyIFMwPWwwWzRdLFQwPWwwWzNdLHJyPWwwWzJdLEwwPWkwWzRdLEI9aTBbM10sWj1pMFsyXSxwMD1vKHRbMV0saTBbMV0sbDBbMV0pO2lmKHAwPT09MCl7dmFyIGIwPW8odjAsWixycik7aWYoYjA9PT0wKXt2YXIgTzA9VzAoVDAsUzApLGkwPVcwKEIsTDApLGwwPU8wO2NvbnRpbnVlfXJldHVybiBiMH1yZXR1cm4gcDB9cmV0dXJuIDF9cmV0dXJuIGwwPy0xOjB9fWZ1bmN0aW9uIFRyKHYwLFAsTCl7Zm9yKHZhciBRPVcwKEwsMCksaTA9VzAoUCwwKSxsMD1ROzspe2lmKGkwKXtpZihsMCl7dmFyIFMwPWwwWzRdLFQwPWwwWzNdLHJyPWwwWzJdLEwwPWkwWzRdLEI9aTBbM10sWj1pMFsyXSxwMD1vKHRbMV0saTBbMV0sbDBbMV0pPT09MD8xOjA7aWYocDApe3ZhciBiMD1vKHYwLFoscnIpO2lmKGIwKXt2YXIgTzA9VzAoVDAsUzApLGkwPVcwKEIsTDApLGwwPU8wO2NvbnRpbnVlfXZhciBNMD1iMH1lbHNlIHZhciBNMD1wMDtyZXR1cm4gTTB9cmV0dXJuIDB9cmV0dXJuIGwwPzA6MX19ZnVuY3Rpb24gSHIodjApe2lmKHYwKXt2YXIgUD12MFsxXSxMPUhyKHYwWzRdKTtyZXR1cm4oSHIoUCkrMXwwKStMfDB9cmV0dXJuIDB9ZnVuY3Rpb24gT3IodjAsUCl7Zm9yKHZhciBMPXYwLFE9UDs7KXtpZihRKXt2YXIgaTA9UVszXSxsMD1RWzJdLFMwPVFbMV0sTD1bMCxbMCxsMCxpMF0sT3IoTCxRWzRdKV0sUT1TMDtjb250aW51ZX1yZXR1cm4gTH19ZnVuY3Rpb24gZnIodjApe3JldHVybiBPcigwLHYwKX1mdW5jdGlvbiBScih2MCxQKXtmb3IodmFyIEw9UCxRPXYwOzspe3ZhciBpMD11KFEsMCk7aWYoaTApe3ZhciBsMD1pMFsxXSxTMD1pMFsyXSxMPXAobDBbMV0sbDBbMl0sTCksUT1TMDtjb250aW51ZX1yZXR1cm4gTH19ZnVuY3Rpb24gV3IodjApe3JldHVybiBScih2MCxjKX1mdW5jdGlvbiBKcih2MCxQKXtpZih2MCl7dmFyIEw9djBbMl0sUT12MFsxXSxpMD1XMCh2MFszXSx2MFs0XSk7cmV0dXJuWzAsWzAsUSxMXSxmdW5jdGlvbihsMCl7cmV0dXJuIEpyKGkwLGwwKX1dfXJldHVybiAwfWZ1bmN0aW9uIGFyKHYwKXt2YXIgUD1XMCh2MCwwKTtyZXR1cm4gZnVuY3Rpb24oTCl7cmV0dXJuIEpyKFAsTCl9fWZ1bmN0aW9uIF9yKHYwLFApe2Zvcih2YXIgTD12MCxRPVA7Oyl7aWYoTCl7dmFyIGkwPVswLExbMl0sTFszXSxMWzFdLFFdLEw9TFs0XSxRPWkwO2NvbnRpbnVlfXJldHVybiBRfX1mdW5jdGlvbiBJcih2MCxQKXtpZih2MCl7dmFyIEw9djBbMl0sUT12MFsxXSxpMD1fcih2MFszXSx2MFs0XSk7cmV0dXJuWzAsWzAsUSxMXSxmdW5jdGlvbihsMCl7cmV0dXJuIElyKGkwLGwwKX1dfXJldHVybiAwfWZ1bmN0aW9uIGZlKHYwKXt2YXIgUD1fcih2MCwwKTtyZXR1cm4gZnVuY3Rpb24oTCl7cmV0dXJuIElyKFAsTCl9fXJldHVyblswLGMscyxBLHAsZzAsaSxrMCxYLHMwLExyLFRyLGUwLGMwLHQwLG8wLGhyLEFyLG9yLEhyLGZyLFMsTSxLLFYsUyxNLFIwLHksRyxULEUsZCx3LHgwLGwsYXIsZmUsZnVuY3Rpb24odjAsUCl7Zm9yKHZhciBMPVAsUT0wOzspe2lmKEwpe3ZhciBpMD1MWzRdLGwwPUxbM10sUzA9TFsyXSxUMD1MWzFdLHJyPW8odFsxXSxTMCx2MCk7aWYocnIhPT0wKXtpZigwPD1ycil7dmFyIEw9VDAsUT1bMCxTMCxsMCxpMCxRXTtjb250aW51ZX12YXIgTD1pMDtjb250aW51ZX12YXIgTDA9WzAsUzAsbDAsaTAsUV19ZWxzZSB2YXIgTDA9UTtyZXR1cm4gZnVuY3Rpb24oQil7cmV0dXJuIEpyKEwwLEIpfX19LFJyLFdyXX1NNygwKTtmdW5jdGlvbiB5bCh0KXtyZXR1cm5bMCwwLDBdfWZ1bmN0aW9uIGhsKHQpe3JldHVybiB0WzFdPTAsdFsyXT0wLDB9ZnVuY3Rpb24gdzEodCxuKXtyZXR1cm4gblsxXT1bMCx0LG5bMV1dLG5bMl09blsyXSsxfDAsMH1mdW5jdGlvbiBVdih0KXt2YXIgbj10WzFdO2lmKG4pe3ZhciBlPW5bMV07cmV0dXJuIHRbMV09blsyXSx0WzJdPXRbMl0tMXwwLFswLGVdfXJldHVybiAwfWZ1bmN0aW9uIEh2KHQpe3ZhciBuPXRbMV07cmV0dXJuIG4/WzAsblsxXV06MH12YXIgSHJlPVt3dCxBaTAsTTcoMCldO2Z1bmN0aW9uIG16KHQpe3JldHVyblswLDAsMCwwXX1mdW5jdGlvbiBvTih0KXtyZXR1cm4gdFsxXT0wLHRbMl09MCx0WzNdPTAsMH1mdW5jdGlvbiBhTih0LG4pe3ZhciBlPVswLHQsMF0saT1uWzNdO3JldHVybiBpPyhuWzFdPW5bMV0rMXwwLGlbMl09ZSxuWzNdPWUsMCk6KG5bMV09MSxuWzJdPWUsblszXT1lLDApfXZhciBYcmU9W3d0LE5pMCxNNygwKV07ZnVuY3Rpb24gWXJlKHQpe3Rocm93IFhyZX1mdW5jdGlvbiBWcmUodCl7dmFyIG49dFsxXTt0WzFdPVlyZTt0cnl7dmFyIGU9dShuLDApO3JldHVybiBVNzAodCxlKSxlfWNhdGNoKGkpe3Rocm93IGk9RXQoaSksdFsxXT1mdW5jdGlvbih4KXt0aHJvdyBpfSxpfX1mdW5jdGlvbiAkbih0KXt2YXIgbj0xPD10P3Q6MSxlPWxsPG4/bGw6bixpPUx0KGUpO3JldHVyblswLGksMCxlLGldfWZ1bmN0aW9uIE10KHQpe3JldHVybiBxdih0WzFdLDAsdFsyXSl9ZnVuY3Rpb24gY04odCxuKXtmb3IodmFyIGU9dFsyXSxpPVswLHRbM11dOzspe2lmKGlbMV08KGUrbnwwKSl7aVsxXT0yKmlbMV18MDtjb250aW51ZX1sbDxpWzFdJiYoKGUrbnwwKTw9bGw/aVsxXT1sbDprZShQaTApKTt2YXIgeD1MdChpWzFdKTtpZihseih0WzFdLDAseCwwLHRbMl0pLHRbMV09eCx0WzNdPWlbMV0sKHRbMl0rbnwwKTw9dFszXSl7aWYoKGUrbnwwKTw9dFszXSlyZXR1cm4gMDt0aHJvd1swLFNuLExpMF19dGhyb3dbMCxTbixEaTBdfX1mdW5jdGlvbiBxaSh0LG4pe3ZhciBlPXRbMl07cmV0dXJuIHRbM108PWUmJmNOKHQsMSksSm4odFsxXSxlLG4pLHRbMl09ZSsxfDAsMH1mdW5jdGlvbiBfeih0LG4sZSxpKXt2YXIgeD1lPDA/MTowO2lmKHgpdmFyIHM9eDtlbHNlIHZhciBjPWk8MD8xOjAscz1jfHwoKHVuKG4pLWl8MCk8ZT8xOjApO3MmJlB1KENpMCk7dmFyIHA9dFsyXStpfDA7cmV0dXJuIHRbM108cCYmY04odCxpKSxUcyhuLGUsdFsxXSx0WzJdLGkpLHRbMl09cCwwfWZ1bmN0aW9uIHNOKHQsbixlLGkpe3JldHVybiBfeih0LG4sZSxpKX1mdW5jdGlvbiBobih0LG4pe3ZhciBlPXVuKG4pLGk9dFsyXStlfDA7cmV0dXJuIHRbM108aSYmY04odCxlKSxUcyhuLDAsdFsxXSx0WzJdLGUpLHRbMl09aSwwfWZ1bmN0aW9uIHZOKHQpe3JldHVybiB0WzJdPT09NT8xMjotNn1mdW5jdGlvbiB5eih0KXtyZXR1cm5bMCwwLEx0KHQpXX1mdW5jdGlvbiBoeih0LG4pe3ZhciBlPWI3KHRbMl0pLGk9dFsxXStufDAseD1lPGk/MTowO2lmKHgpe3ZhciBjPWUqMnwwLHM9aTw9Yz9jOmkscD1MdChzKTtseih0WzJdLDAscCwwLGUpLHRbMl09cDt2YXIgeT0wfWVsc2UgdmFyIHk9eDtyZXR1cm4geX1mdW5jdGlvbiBYdih0LG4pe3JldHVybiBoeih0LDEpLGIxKHRbMl0sdFsxXSxuKSx0WzFdPXRbMV0rMXwwLDB9ZnVuY3Rpb24gTHUodCxuKXt2YXIgZT11bihuKTtyZXR1cm4gaHoodCxlKSxjcyhuLDAsdFsyXSx0WzFdLGUpLHRbMV09dFsxXStlfDAsMH1mdW5jdGlvbiBkeih0KXtyZXR1cm4gcXYodFsyXSwwLHRbMV0pfWZ1bmN0aW9uIGt6KHQpe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXN3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIEd4MDtjYXNlIDE6cmV0dXJuIE14MDtjYXNlIDI6cmV0dXJuIEJ4MDtjYXNlIDM6cmV0dXJuIHF4MDtjYXNlIDQ6cmV0dXJuIFV4MDtjYXNlIDU6cmV0dXJuIEh4MDtkZWZhdWx0OnJldHVybiBYeDB9ZWxzZSBzd2l0Y2godFswXSl7Y2FzZSAwOnJldHVybiB0WzFdO2Nhc2UgMTpyZXR1cm4gdFsxXTtkZWZhdWx0OnJldHVybiBUZShZeDAsVHAoMSx0WzFdKSl9fWZ1bmN0aW9uIGxOKHQsbil7Zm9yKHZhciBlPW47Oyl7aWYodHlwZW9mIGU9PVwibnVtYmVyXCIpcmV0dXJuIDA7c3dpdGNoKGVbMF0pe2Nhc2UgMDp2YXIgaT1lWzFdO0x1KHQsamkwKTt2YXIgZT1pO2NvbnRpbnVlO2Nhc2UgMTp2YXIgeD1lWzFdO0x1KHQsR2kwKTt2YXIgZT14O2NvbnRpbnVlO2Nhc2UgMjp2YXIgYz1lWzFdO0x1KHQsTWkwKTt2YXIgZT1jO2NvbnRpbnVlO2Nhc2UgMzp2YXIgcz1lWzFdO0x1KHQsQmkwKTt2YXIgZT1zO2NvbnRpbnVlO2Nhc2UgNDp2YXIgcD1lWzFdO0x1KHQscWkwKTt2YXIgZT1wO2NvbnRpbnVlO2Nhc2UgNTp2YXIgeT1lWzFdO0x1KHQsVWkwKTt2YXIgZT15O2NvbnRpbnVlO2Nhc2UgNjp2YXIgVD1lWzFdO0x1KHQsSGkwKTt2YXIgZT1UO2NvbnRpbnVlO2Nhc2UgNzp2YXIgRT1lWzFdO0x1KHQsWGkwKTt2YXIgZT1FO2NvbnRpbnVlO2Nhc2UgODp2YXIgZD1lWzJdLHc9ZVsxXTtMdSh0LFlpMCksbE4odCx3KSxMdSh0LFZpMCk7dmFyIGU9ZDtjb250aW51ZTtjYXNlIDk6dmFyIEc9ZVszXSxBPWVbMV07THUodCx6aTApLGxOKHQsQSksTHUodCxLaTApO3ZhciBlPUc7Y29udGludWU7Y2FzZSAxMDp2YXIgUz1lWzFdO0x1KHQsV2kwKTt2YXIgZT1TO2NvbnRpbnVlO2Nhc2UgMTE6dmFyIE09ZVsxXTtMdSh0LEppMCk7dmFyIGU9TTtjb250aW51ZTtjYXNlIDEyOnZhciBLPWVbMV07THUodCwkaTApO3ZhciBlPUs7Y29udGludWU7Y2FzZSAxMzp2YXIgVj1lWzFdO0x1KHQsWmkwKTt2YXIgZT1WO2NvbnRpbnVlO2RlZmF1bHQ6dmFyIGYwPWVbMV07THUodCxRaTApO3ZhciBlPWYwO2NvbnRpbnVlfX19ZnVuY3Rpb24gdXUodCl7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpcmV0dXJuIDA7c3dpdGNoKHRbMF0pe2Nhc2UgMDpyZXR1cm5bMCx1dSh0WzFdKV07Y2FzZSAxOnJldHVyblsxLHV1KHRbMV0pXTtjYXNlIDI6cmV0dXJuWzIsdXUodFsxXSldO2Nhc2UgMzpyZXR1cm5bMyx1dSh0WzFdKV07Y2FzZSA0OnJldHVybls0LHV1KHRbMV0pXTtjYXNlIDU6cmV0dXJuWzUsdXUodFsxXSldO2Nhc2UgNjpyZXR1cm5bNix1dSh0WzFdKV07Y2FzZSA3OnJldHVybls3LHV1KHRbMV0pXTtjYXNlIDg6dmFyIG49dFsxXTtyZXR1cm5bOCxuLHV1KHRbMl0pXTtjYXNlIDk6dmFyIGU9dFsyXSxpPXRbMV07cmV0dXJuWzksZSxpLHV1KHRbM10pXTtjYXNlIDEwOnJldHVyblsxMCx1dSh0WzFdKV07Y2FzZSAxMTpyZXR1cm5bMTEsdXUodFsxXSldO2Nhc2UgMTI6cmV0dXJuWzEyLHV1KHRbMV0pXTtjYXNlIDEzOnJldHVyblsxMyx1dSh0WzFdKV07ZGVmYXVsdDpyZXR1cm5bMTQsdXUodFsxXSldfX1mdW5jdGlvbiBSdSh0KXtpZih0eXBlb2YgdD09XCJudW1iZXJcIil7dmFyIG49ZnVuY3Rpb24oc3Ipe3JldHVybiAwfSxlPWZ1bmN0aW9uKHNyKXtyZXR1cm4gMH0saT1mdW5jdGlvbihzcil7cmV0dXJuIDB9O3JldHVyblswLGZ1bmN0aW9uKHNyKXtyZXR1cm4gMH0saSxlLG5dfWVsc2Ugc3dpdGNoKHRbMF0pe2Nhc2UgMDp2YXIgeD1SdSh0WzFdKSxjPXhbNF0scz14WzNdLHA9eFsyXSx5PXhbMV0sVD1mdW5jdGlvbihzcil7cmV0dXJuIHUocCwwKSwwfTtyZXR1cm5bMCxmdW5jdGlvbihzcil7cmV0dXJuIHUoeSwwKSwwfSxULHMsY107Y2FzZSAxOnZhciBFPVJ1KHRbMV0pLGQ9RVs0XSx3PUVbM10sRz1FWzJdLEE9RVsxXSxTPWZ1bmN0aW9uKHNyKXtyZXR1cm4gdShHLDApLDB9O3JldHVyblswLGZ1bmN0aW9uKHNyKXtyZXR1cm4gdShBLDApLDB9LFMsdyxkXTtjYXNlIDI6dmFyIE09UnUodFsxXSksSz1NWzRdLFY9TVszXSxmMD1NWzJdLG0wPU1bMV0sazA9ZnVuY3Rpb24oc3Ipe3JldHVybiB1KGYwLDApLDB9O3JldHVyblswLGZ1bmN0aW9uKHNyKXtyZXR1cm4gdShtMCwwKSwwfSxrMCxWLEtdO2Nhc2UgMzp2YXIgZzA9UnUodFsxXSksZTA9ZzBbNF0seDA9ZzBbM10sbD1nMFsyXSxjMD1nMFsxXSx0MD1mdW5jdGlvbihzcil7cmV0dXJuIHUobCwwKSwwfTtyZXR1cm5bMCxmdW5jdGlvbihzcil7cmV0dXJuIHUoYzAsMCksMH0sdDAseDAsZTBdO2Nhc2UgNDp2YXIgbzA9UnUodFsxXSksdzA9bzBbNF0sXzA9bzBbM10sRTA9bzBbMl0sVTA9bzBbMV0sYj1mdW5jdGlvbihzcil7cmV0dXJuIHUoRTAsMCksMH07cmV0dXJuWzAsZnVuY3Rpb24oc3Ipe3JldHVybiB1KFUwLDApLDB9LGIsXzAsdzBdO2Nhc2UgNTp2YXIgUjA9UnUodFsxXSksWD1SMFs0XSxzMD1SMFszXSxocj1SMFsyXSxBcj1SMFsxXSxvcj1mdW5jdGlvbihzcil7cmV0dXJuIHUoaHIsMCksMH07cmV0dXJuWzAsZnVuY3Rpb24oc3Ipe3JldHVybiB1KEFyLDApLDB9LG9yLHMwLFhdO2Nhc2UgNjp2YXIgVzA9UnUodFsxXSksTHI9VzBbNF0sVHI9VzBbM10sSHI9VzBbMl0sT3I9VzBbMV0sZnI9ZnVuY3Rpb24oc3Ipe3JldHVybiB1KEhyLDApLDB9O3JldHVyblswLGZ1bmN0aW9uKHNyKXtyZXR1cm4gdShPciwwKSwwfSxmcixUcixMcl07Y2FzZSA3OnZhciBScj1SdSh0WzFdKSxXcj1Scls0XSxKcj1SclszXSxhcj1SclsyXSxfcj1SclsxXSxJcj1mdW5jdGlvbihzcil7cmV0dXJuIHUoYXIsMCksMH07cmV0dXJuWzAsZnVuY3Rpb24oc3Ipe3JldHVybiB1KF9yLDApLDB9LElyLEpyLFdyXTtjYXNlIDg6dmFyIGZlPVJ1KHRbMl0pLHYwPWZlWzRdLFA9ZmVbM10sTD1mZVsyXSxRPWZlWzFdLGkwPWZ1bmN0aW9uKHNyKXtyZXR1cm4gdShMLDApLDB9O3JldHVyblswLGZ1bmN0aW9uKHNyKXtyZXR1cm4gdShRLDApLDB9LGkwLFAsdjBdO2Nhc2UgOTp2YXIgbDA9dFsyXSxTMD10WzFdLFQwPVJ1KHRbM10pLHJyPVQwWzRdLEwwPVQwWzNdLEI9VDBbMl0sWj1UMFsxXSxwMD1SdShidSh1dShTMCksbDApKSxiMD1wMFs0XSxPMD1wMFszXSxNMD1wMFsyXSxlcj1wMFsxXSx5cj1mdW5jdGlvbihzcil7cmV0dXJuIHUoYjAsMCksdShyciwwKSwwfSx2cj1mdW5jdGlvbihzcil7cmV0dXJuIHUoTDAsMCksdShPMCwwKSwwfSwkMD1mdW5jdGlvbihzcil7cmV0dXJuIHUoTTAsMCksdShCLDApLDB9O3JldHVyblswLGZ1bmN0aW9uKHNyKXtyZXR1cm4gdShaLDApLHUoZXIsMCksMH0sJDAsdnIseXJdO2Nhc2UgMTA6dmFyIEVyPVJ1KHRbMV0pLE1yPUVyWzRdLEJyPUVyWzNdLHFyPUVyWzJdLGpyPUVyWzFdLCRyPWZ1bmN0aW9uKHNyKXtyZXR1cm4gdShxciwwKSwwfTtyZXR1cm5bMCxmdW5jdGlvbihzcil7cmV0dXJuIHUoanIsMCksMH0sJHIsQnIsTXJdO2Nhc2UgMTE6dmFyIG5lPVJ1KHRbMV0pLFFyPW5lWzRdLGJlPW5lWzNdLGFlPW5lWzJdLHBlPW5lWzFdLG9lPWZ1bmN0aW9uKHNyKXtyZXR1cm4gdShhZSwwKSwwfTtyZXR1cm5bMCxmdW5jdGlvbihzcil7cmV0dXJuIHUocGUsMCksMH0sb2UsYmUsUXJdO2Nhc2UgMTI6dmFyIGNlPVJ1KHRbMV0pLGdlPWNlWzRdLHEwPWNlWzNdLEZyPWNlWzJdLF89Y2VbMV0saz1mdW5jdGlvbihzcil7cmV0dXJuIHUoRnIsMCksMH07cmV0dXJuWzAsZnVuY3Rpb24oc3Ipe3JldHVybiB1KF8sMCksMH0sayxxMCxnZV07Y2FzZSAxMzp2YXIgST1SdSh0WzFdKSxVPUlbNF0sWT1JWzNdLHkwPUlbMl0sUDA9SVsxXSxJMD1mdW5jdGlvbihzcil7cmV0dXJuIHUoVSwwKSwwfSxEPWZ1bmN0aW9uKHNyKXtyZXR1cm4gdShZLDApLDB9LHUwPWZ1bmN0aW9uKHNyKXtyZXR1cm4gdSh5MCwwKSwwfTtyZXR1cm5bMCxmdW5jdGlvbihzcil7cmV0dXJuIHUoUDAsMCksMH0sdTAsRCxJMF07ZGVmYXVsdDp2YXIgWDA9UnUodFsxXSksSjA9WDBbNF0saXI9WDBbM10sUTA9WDBbMl0sRjA9WDBbMV0sU3I9ZnVuY3Rpb24oc3Ipe3JldHVybiB1KEowLDApLDB9LG1yPWZ1bmN0aW9uKHNyKXtyZXR1cm4gdShpciwwKSwwfSxDcj1mdW5jdGlvbihzcil7cmV0dXJuIHUoUTAsMCksMH07cmV0dXJuWzAsZnVuY3Rpb24oc3Ipe3JldHVybiB1KEYwLDApLDB9LENyLG1yLFNyXX19ZnVuY3Rpb24gYnUodCxuKXt2YXIgZT0wO2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm4gMDtzd2l0Y2goblswXSl7Y2FzZSAxMDpicmVhaztjYXNlIDExOmU9MTticmVhaztjYXNlIDEyOmU9MjticmVhaztjYXNlIDEzOmU9MzticmVhaztjYXNlIDE0OmU9NDticmVhaztjYXNlIDg6ZT01O2JyZWFrO2Nhc2UgOTplPTY7YnJlYWs7ZGVmYXVsdDp0aHJvd1swLFNuLHJmMF19fWVsc2Ugc3dpdGNoKHRbMF0pe2Nhc2UgMDp2YXIgaT0wLHg9dFsxXTtpZih0eXBlb2YgbiE9XCJudW1iZXJcIilzd2l0Y2goblswXSl7Y2FzZSAwOnJldHVyblswLGJ1KHgsblsxXSldO2Nhc2UgODplPTUsaT0xO2JyZWFrO2Nhc2UgOTplPTYsaT0xO2JyZWFrO2Nhc2UgMTA6aT0xO2JyZWFrO2Nhc2UgMTE6ZT0xLGk9MTticmVhaztjYXNlIDEyOmU9MixpPTE7YnJlYWs7Y2FzZSAxMzplPTMsaT0xO2JyZWFrO2Nhc2UgMTQ6ZT00LGk9MTticmVha31pfHwoZT03KTticmVhaztjYXNlIDE6dmFyIGM9MCxzPXRbMV07aWYodHlwZW9mIG4hPVwibnVtYmVyXCIpc3dpdGNoKG5bMF0pe2Nhc2UgMTpyZXR1cm5bMSxidShzLG5bMV0pXTtjYXNlIDg6ZT01LGM9MTticmVhaztjYXNlIDk6ZT02LGM9MTticmVhaztjYXNlIDEwOmM9MTticmVhaztjYXNlIDExOmU9MSxjPTE7YnJlYWs7Y2FzZSAxMjplPTIsYz0xO2JyZWFrO2Nhc2UgMTM6ZT0zLGM9MTticmVhaztjYXNlIDE0OmU9NCxjPTE7YnJlYWt9Y3x8KGU9Nyk7YnJlYWs7Y2FzZSAyOnZhciBwPTAseT10WzFdO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXA9MTtlbHNlIHN3aXRjaChuWzBdKXtjYXNlIDI6cmV0dXJuWzIsYnUoeSxuWzFdKV07Y2FzZSA4OmU9NTticmVhaztjYXNlIDk6ZT02O2JyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzplPTM7YnJlYWs7Y2FzZSAxNDplPTQ7YnJlYWs7ZGVmYXVsdDpwPTF9cCYmKGU9Nyk7YnJlYWs7Y2FzZSAzOnZhciBUPTAsRT10WzFdO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKVQ9MTtlbHNlIHN3aXRjaChuWzBdKXtjYXNlIDM6cmV0dXJuWzMsYnUoRSxuWzFdKV07Y2FzZSA4OmU9NTticmVhaztjYXNlIDk6ZT02O2JyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzplPTM7YnJlYWs7Y2FzZSAxNDplPTQ7YnJlYWs7ZGVmYXVsdDpUPTF9VCYmKGU9Nyk7YnJlYWs7Y2FzZSA0OnZhciBkPTAsdz10WzFdO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKWQ9MTtlbHNlIHN3aXRjaChuWzBdKXtjYXNlIDQ6cmV0dXJuWzQsYnUodyxuWzFdKV07Y2FzZSA4OmU9NTticmVhaztjYXNlIDk6ZT02O2JyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzplPTM7YnJlYWs7Y2FzZSAxNDplPTQ7YnJlYWs7ZGVmYXVsdDpkPTF9ZCYmKGU9Nyk7YnJlYWs7Y2FzZSA1OnZhciBHPTAsQT10WzFdO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKUc9MTtlbHNlIHN3aXRjaChuWzBdKXtjYXNlIDU6cmV0dXJuWzUsYnUoQSxuWzFdKV07Y2FzZSA4OmU9NTticmVhaztjYXNlIDk6ZT02O2JyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzplPTM7YnJlYWs7Y2FzZSAxNDplPTQ7YnJlYWs7ZGVmYXVsdDpHPTF9RyYmKGU9Nyk7YnJlYWs7Y2FzZSA2OnZhciBTPTAsTT10WzFdO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKVM9MTtlbHNlIHN3aXRjaChuWzBdKXtjYXNlIDY6cmV0dXJuWzYsYnUoTSxuWzFdKV07Y2FzZSA4OmU9NTticmVhaztjYXNlIDk6ZT02O2JyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzplPTM7YnJlYWs7Y2FzZSAxNDplPTQ7YnJlYWs7ZGVmYXVsdDpTPTF9UyYmKGU9Nyk7YnJlYWs7Y2FzZSA3OnZhciBLPTAsVj10WzFdO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKUs9MTtlbHNlIHN3aXRjaChuWzBdKXtjYXNlIDc6cmV0dXJuWzcsYnUoVixuWzFdKV07Y2FzZSA4OmU9NTticmVhaztjYXNlIDk6ZT02O2JyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzplPTM7YnJlYWs7Y2FzZSAxNDplPTQ7YnJlYWs7ZGVmYXVsdDpLPTF9SyYmKGU9Nyk7YnJlYWs7Y2FzZSA4OnZhciBmMD0wLG0wPXRbMl0sazA9dFsxXTtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilmMD0xO2Vsc2Ugc3dpdGNoKG5bMF0pe2Nhc2UgODp2YXIgZzA9blsxXSxlMD1idShtMCxuWzJdKTtyZXR1cm5bOCxidShrMCxnMCksZTBdO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzplPTM7YnJlYWs7Y2FzZSAxNDplPTQ7YnJlYWs7ZGVmYXVsdDpmMD0xfWlmKGYwKXRocm93WzAsU24sc2YwXTticmVhaztjYXNlIDk6dmFyIHgwPTAsbD10WzNdLGMwPXRbMl0sdDA9dFsxXTtpZih0eXBlb2Ygbj09XCJudW1iZXJcIil4MD0xO2Vsc2Ugc3dpdGNoKG5bMF0pe2Nhc2UgODplPTU7YnJlYWs7Y2FzZSA5OnZhciBvMD1uWzNdLHcwPW5bMl0sXzA9blsxXSxFMD1SdShidSh1dShjMCksXzApKSxVMD1FMFs0XTtyZXR1cm4gdShFMFsyXSwwKSx1KFUwLDApLFs5LHQwLHcwLGJ1KGwsbzApXTtjYXNlIDEwOmJyZWFrO2Nhc2UgMTE6ZT0xO2JyZWFrO2Nhc2UgMTI6ZT0yO2JyZWFrO2Nhc2UgMTM6ZT0zO2JyZWFrO2Nhc2UgMTQ6ZT00O2JyZWFrO2RlZmF1bHQ6eDA9MX1pZih4MCl0aHJvd1swLFNuLGxmMF07YnJlYWs7Y2FzZSAxMDp2YXIgYj10WzFdO2lmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MTApcmV0dXJuWzEwLGJ1KGIsblsxXSldO3Rocm93WzAsU24sZWYwXTtjYXNlIDExOnZhciBSMD0wLFg9dFsxXTtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilSMD0xO2Vsc2Ugc3dpdGNoKG5bMF0pe2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTpyZXR1cm5bMTEsYnUoWCxuWzFdKV07ZGVmYXVsdDpSMD0xfWlmKFIwKXRocm93WzAsU24sdGYwXTticmVhaztjYXNlIDEyOnZhciBzMD0wLGhyPXRbMV07aWYodHlwZW9mIG49PVwibnVtYmVyXCIpczA9MTtlbHNlIHN3aXRjaChuWzBdKXtjYXNlIDEwOmJyZWFrO2Nhc2UgMTE6ZT0xO2JyZWFrO2Nhc2UgMTI6cmV0dXJuWzEyLGJ1KGhyLG5bMV0pXTtkZWZhdWx0OnMwPTF9aWYoczApdGhyb3dbMCxTbixpZjBdO2JyZWFrO2Nhc2UgMTM6dmFyIEFyPTAsb3I9dFsxXTtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilBcj0xO2Vsc2Ugc3dpdGNoKG5bMF0pe2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTplPTE7YnJlYWs7Y2FzZSAxMjplPTI7YnJlYWs7Y2FzZSAxMzpyZXR1cm5bMTMsYnUob3IsblsxXSldO2RlZmF1bHQ6QXI9MX1pZihBcil0aHJvd1swLFNuLHhmMF07YnJlYWs7ZGVmYXVsdDp2YXIgVzA9MCxMcj10WzFdO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKVcwPTE7ZWxzZSBzd2l0Y2goblswXSl7Y2FzZSAxMDpicmVhaztjYXNlIDExOmU9MTticmVhaztjYXNlIDEyOmU9MjticmVhaztjYXNlIDEzOmU9MzticmVhaztjYXNlIDE0OnJldHVyblsxNCxidShMcixuWzFdKV07ZGVmYXVsdDpXMD0xfWlmKFcwKXRocm93WzAsU24sYWYwXX1zd2l0Y2goZSl7Y2FzZSAwOnRocm93WzAsU24sbmYwXTtjYXNlIDE6dGhyb3dbMCxTbix1ZjBdO2Nhc2UgMjp0aHJvd1swLFNuLGZmMF07Y2FzZSAzOnRocm93WzAsU24sb2YwXTtjYXNlIDQ6dGhyb3dbMCxTbixjZjBdO2Nhc2UgNTp0aHJvd1swLFNuLHZmMF07Y2FzZSA2OnRocm93WzAsU24sYmYwXTtkZWZhdWx0OnRocm93WzAsU24scGYwXX19dmFyIE91PVt3dCxWeDAsTTcoMCldO2Z1bmN0aW9uIElwKHQsbil7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpcmV0dXJuWzAsMCxuXTtpZih0WzBdPT09MClyZXR1cm5bMCxbMCx0WzFdLHRbMl1dLG5dO2lmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MilyZXR1cm5bMCxbMSx0WzFdXSxuWzFdXTt0aHJvdyBPdX1mdW5jdGlvbiBkbCh0LG4sZSl7dmFyIGk9SXAodCxlKTtpZih0eXBlb2Ygbj09XCJudW1iZXJcIil7aWYobil7dmFyIHg9aVsyXTtpZih0eXBlb2YgeCE9XCJudW1iZXJcIiYmeFswXT09PTIpcmV0dXJuWzAsaVsxXSwxLHhbMV1dO3Rocm93IE91fXJldHVyblswLGlbMV0sMCxpWzJdXX1yZXR1cm5bMCxpWzFdLFswLG5bMV1dLGlbMl1dfWZ1bmN0aW9uIF83KHQsbixlKXtpZih0eXBlb2YgdD09XCJudW1iZXJcIilyZXR1cm5bMCwwLF90KG4sZSldO3N3aXRjaCh0WzBdKXtjYXNlIDA6aWYodHlwZW9mIGUhPVwibnVtYmVyXCImJmVbMF09PT0wKXt2YXIgaT1fNyh0WzFdLG4sZVsxXSk7cmV0dXJuWzAsWzAsaVsxXV0saVsyXV19YnJlYWs7Y2FzZSAxOmlmKHR5cGVvZiBlIT1cIm51bWJlclwiJiZlWzBdPT09MSl7dmFyIHg9XzcodFsxXSxuLGVbMV0pO3JldHVyblswLFsxLHhbMV1dLHhbMl1dfWJyZWFrO2Nhc2UgMjppZih0eXBlb2YgZSE9XCJudW1iZXJcIiYmZVswXT09PTIpe3ZhciBjPV83KHRbMV0sbixlWzFdKTtyZXR1cm5bMCxbMixjWzFdXSxjWzJdXX1icmVhaztjYXNlIDM6aWYodHlwZW9mIGUhPVwibnVtYmVyXCImJmVbMF09PT0zKXt2YXIgcz1fNyh0WzFdLG4sZVsxXSk7cmV0dXJuWzAsWzMsc1sxXV0sc1syXV19YnJlYWs7Y2FzZSA0OmlmKHR5cGVvZiBlIT1cIm51bWJlclwiJiZlWzBdPT09NCl7dmFyIHA9XzcodFsxXSxuLGVbMV0pO3JldHVyblswLFs0LHBbMV1dLHBbMl1dfWJyZWFrO2Nhc2UgNTppZih0eXBlb2YgZSE9XCJudW1iZXJcIiYmZVswXT09PTUpe3ZhciB5PV83KHRbMV0sbixlWzFdKTtyZXR1cm5bMCxbNSx5WzFdXSx5WzJdXX1icmVhaztjYXNlIDY6aWYodHlwZW9mIGUhPVwibnVtYmVyXCImJmVbMF09PT02KXt2YXIgVD1fNyh0WzFdLG4sZVsxXSk7cmV0dXJuWzAsWzYsVFsxXV0sVFsyXV19YnJlYWs7Y2FzZSA3OmlmKHR5cGVvZiBlIT1cIm51bWJlclwiJiZlWzBdPT09Nyl7dmFyIEU9XzcodFsxXSxuLGVbMV0pO3JldHVyblswLFs3LEVbMV1dLEVbMl1dfWJyZWFrO2Nhc2UgODppZih0eXBlb2YgZSE9XCJudW1iZXJcIiYmZVswXT09PTgpe3ZhciBkPWVbMV0sdz1lWzJdLEc9dFsyXTtpZihjbChbMCx0WzFdXSxbMCxkXSkpdGhyb3cgT3U7dmFyIEE9XzcoRyxuLHcpO3JldHVyblswLFs4LGQsQVsxXV0sQVsyXV19YnJlYWs7Y2FzZSA5OmlmKHR5cGVvZiBlIT1cIm51bWJlclwiJiZlWzBdPT09OSl7dmFyIFM9ZVsyXSxNPWVbMV0sSz1lWzNdLFY9dFszXSxmMD10WzJdLG0wPXRbMV0sazA9WzAsR3QoTSldO2lmKGNsKFswLEd0KG0wKV0sazApKXRocm93IE91O3ZhciBnMD1bMCxHdChTKV07aWYoY2woWzAsR3QoZjApXSxnMCkpdGhyb3cgT3U7dmFyIGUwPVJ1KGJ1KHV1KE0pLFMpKSx4MD1lMFs0XTt1KGUwWzJdLDApLHUoeDAsMCk7dmFyIGw9XzcoR3QoViksbixLKSxjMD1sWzJdO3JldHVyblswLFs5LE0sUyx1dShsWzFdKV0sYzBdfWJyZWFrO2Nhc2UgMTA6aWYodHlwZW9mIGUhPVwibnVtYmVyXCImJmVbMF09PT0xMCl7dmFyIHQwPV83KHRbMV0sbixlWzFdKTtyZXR1cm5bMCxbMTAsdDBbMV1dLHQwWzJdXX1icmVhaztjYXNlIDExOmlmKHR5cGVvZiBlIT1cIm51bWJlclwiJiZlWzBdPT09MTEpe3ZhciBvMD1fNyh0WzFdLG4sZVsxXSk7cmV0dXJuWzAsWzExLG8wWzFdXSxvMFsyXV19YnJlYWs7Y2FzZSAxMzppZih0eXBlb2YgZSE9XCJudW1iZXJcIiYmZVswXT09PTEzKXt2YXIgdzA9XzcodFsxXSxuLGVbMV0pO3JldHVyblswLFsxMyx3MFsxXV0sdzBbMl1dfWJyZWFrO2Nhc2UgMTQ6aWYodHlwZW9mIGUhPVwibnVtYmVyXCImJmVbMF09PT0xNCl7dmFyIF8wPV83KHRbMV0sbixlWzFdKTtyZXR1cm5bMCxbMTQsXzBbMV1dLF8wWzJdXX1icmVha310aHJvdyBPdX1mdW5jdGlvbiBfdCh0LG4pe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXJldHVyblswLDAsbl07c3dpdGNoKHRbMF0pe2Nhc2UgMDppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTApe3ZhciBlPV90KHRbMV0sblsxXSk7cmV0dXJuWzAsWzAsZVsxXV0sZVsyXV19YnJlYWs7Y2FzZSAxOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MCl7dmFyIGk9X3QodFsxXSxuWzFdKTtyZXR1cm5bMCxbMSxpWzFdXSxpWzJdXX1icmVhaztjYXNlIDI6dmFyIHg9dFsyXSxjPUlwKHRbMV0sbikscz1jWzJdLHA9Y1sxXTtpZih0eXBlb2YgcyE9XCJudW1iZXJcIiYmc1swXT09PTEpe3ZhciB5PV90KHgsc1sxXSk7cmV0dXJuWzAsWzIscCx5WzFdXSx5WzJdXX10aHJvdyBPdTtjYXNlIDM6dmFyIFQ9dFsyXSxFPUlwKHRbMV0sbiksZD1FWzJdLHc9RVsxXTtpZih0eXBlb2YgZCE9XCJudW1iZXJcIiYmZFswXT09PTEpe3ZhciBHPV90KFQsZFsxXSk7cmV0dXJuWzAsWzMsdyxHWzFdXSxHWzJdXX10aHJvdyBPdTtjYXNlIDQ6dmFyIEE9dFs0XSxTPXRbMV0sTT1kbCh0WzJdLHRbM10sbiksSz1NWzNdLFY9TVsxXTtpZih0eXBlb2YgSyE9XCJudW1iZXJcIiYmS1swXT09PTIpe3ZhciBmMD1NWzJdLG0wPV90KEEsS1sxXSk7cmV0dXJuWzAsWzQsUyxWLGYwLG0wWzFdXSxtMFsyXV19dGhyb3cgT3U7Y2FzZSA1OnZhciBrMD10WzRdLGcwPXRbMV0sZTA9ZGwodFsyXSx0WzNdLG4pLHgwPWUwWzNdLGw9ZTBbMV07aWYodHlwZW9mIHgwIT1cIm51bWJlclwiJiZ4MFswXT09PTMpe3ZhciBjMD1lMFsyXSx0MD1fdChrMCx4MFsxXSk7cmV0dXJuWzAsWzUsZzAsbCxjMCx0MFsxXV0sdDBbMl1dfXRocm93IE91O2Nhc2UgNjp2YXIgbzA9dFs0XSx3MD10WzFdLF8wPWRsKHRbMl0sdFszXSxuKSxFMD1fMFszXSxVMD1fMFsxXTtpZih0eXBlb2YgRTAhPVwibnVtYmVyXCImJkUwWzBdPT09NCl7dmFyIGI9XzBbMl0sUjA9X3QobzAsRTBbMV0pO3JldHVyblswLFs2LHcwLFUwLGIsUjBbMV1dLFIwWzJdXX10aHJvdyBPdTtjYXNlIDc6dmFyIFg9dFs0XSxzMD10WzFdLGhyPWRsKHRbMl0sdFszXSxuKSxBcj1oclszXSxvcj1oclsxXTtpZih0eXBlb2YgQXIhPVwibnVtYmVyXCImJkFyWzBdPT09NSl7dmFyIFcwPWhyWzJdLExyPV90KFgsQXJbMV0pO3JldHVyblswLFs3LHMwLG9yLFcwLExyWzFdXSxMclsyXV19dGhyb3cgT3U7Y2FzZSA4OnZhciBUcj10WzRdLEhyPXRbMV0sT3I9ZGwodFsyXSx0WzNdLG4pLGZyPU9yWzNdLFJyPU9yWzFdO2lmKHR5cGVvZiBmciE9XCJudW1iZXJcIiYmZnJbMF09PT02KXt2YXIgV3I9T3JbMl0sSnI9X3QoVHIsZnJbMV0pO3JldHVyblswLFs4LEhyLFJyLFdyLEpyWzFdXSxKclsyXV19dGhyb3cgT3U7Y2FzZSA5OnZhciBhcj10WzJdLF9yPUlwKHRbMV0sbiksSXI9X3JbMl0sZmU9X3JbMV07aWYodHlwZW9mIElyIT1cIm51bWJlclwiJiZJclswXT09PTcpe3ZhciB2MD1fdChhcixJclsxXSk7cmV0dXJuWzAsWzksZmUsdjBbMV1dLHYwWzJdXX10aHJvdyBPdTtjYXNlIDEwOnZhciBQPV90KHRbMV0sbik7cmV0dXJuWzAsWzEwLFBbMV1dLFBbMl1dO2Nhc2UgMTE6dmFyIEw9dFsxXSxRPV90KHRbMl0sbik7cmV0dXJuWzAsWzExLEwsUVsxXV0sUVsyXV07Y2FzZSAxMjp2YXIgaTA9dFsxXSxsMD1fdCh0WzJdLG4pO3JldHVyblswLFsxMixpMCxsMFsxXV0sbDBbMl1dO2Nhc2UgMTM6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT04KXt2YXIgUzA9blsxXSxUMD1uWzJdLHJyPXRbM10sTDA9dFsxXTtpZihjbChbMCx0WzJdXSxbMCxTMF0pKXRocm93IE91O3ZhciBCPV90KHJyLFQwKTtyZXR1cm5bMCxbMTMsTDAsUzAsQlsxXV0sQlsyXV19YnJlYWs7Y2FzZSAxNDppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTkpe3ZhciBaPW5bMV0scDA9blszXSxiMD10WzNdLE8wPXRbMl0sTTA9dFsxXSxlcj1bMCxHdChaKV07aWYoY2woWzAsR3QoTzApXSxlcikpdGhyb3cgT3U7dmFyIHlyPV90KGIwLEd0KHAwKSk7cmV0dXJuWzAsWzE0LE0wLFoseXJbMV1dLHlyWzJdXX1icmVhaztjYXNlIDE1OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MTApe3ZhciB2cj1fdCh0WzFdLG5bMV0pO3JldHVyblswLFsxNSx2clsxXV0sdnJbMl1dfWJyZWFrO2Nhc2UgMTY6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xMSl7dmFyICQwPV90KHRbMV0sblsxXSk7cmV0dXJuWzAsWzE2LCQwWzFdXSwkMFsyXV19YnJlYWs7Y2FzZSAxNzp2YXIgRXI9dFsxXSxNcj1fdCh0WzJdLG4pO3JldHVyblswLFsxNyxFcixNclsxXV0sTXJbMl1dO2Nhc2UgMTg6dmFyIEJyPXRbMl0scXI9dFsxXTtpZihxclswXT09PTApe3ZhciBqcj1xclsxXSwkcj1qclsyXSxuZT1fdChqclsxXSxuKSxRcj1uZVsxXSxiZT1fdChCcixuZVsyXSk7cmV0dXJuWzAsWzE4LFswLFswLFFyLCRyXV0sYmVbMV1dLGJlWzJdXX12YXIgYWU9cXJbMV0scGU9YWVbMl0sb2U9X3QoYWVbMV0sbiksY2U9b2VbMV0sZ2U9X3QoQnIsb2VbMl0pO3JldHVyblswLFsxOCxbMSxbMCxjZSxwZV1dLGdlWzFdXSxnZVsyXV07Y2FzZSAxOTppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTEzKXt2YXIgcTA9X3QodFsxXSxuWzFdKTtyZXR1cm5bMCxbMTkscTBbMV1dLHEwWzJdXX1icmVhaztjYXNlIDIwOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MSl7dmFyIEZyPXRbMl0sXz10WzFdLGs9X3QodFszXSxuWzFdKTtyZXR1cm5bMCxbMjAsXyxGcixrWzFdXSxrWzJdXX1icmVhaztjYXNlIDIxOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09Mil7dmFyIEk9dFsxXSxVPV90KHRbMl0sblsxXSk7cmV0dXJuWzAsWzIxLEksVVsxXV0sVVsyXV19YnJlYWs7Y2FzZSAyMzp2YXIgWT10WzJdLHkwPXRbMV07aWYodHlwZW9mIHkwPT1cIm51bWJlclwiKXN3aXRjaCh5MCl7Y2FzZSAwOnJldHVybiBVNyh5MCxZLG4pO2Nhc2UgMTpyZXR1cm4gVTcoeTAsWSxuKTtjYXNlIDI6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xNCl7dmFyIFAwPV90KFksblsxXSk7cmV0dXJuWzAsWzIzLDIsUDBbMV1dLFAwWzJdXX10aHJvdyBPdTtkZWZhdWx0OnJldHVybiBVNyh5MCxZLG4pfWVsc2Ugc3dpdGNoKHkwWzBdKXtjYXNlIDA6cmV0dXJuIFU3KHkwLFksbik7Y2FzZSAxOnJldHVybiBVNyh5MCxZLG4pO2Nhc2UgMjpyZXR1cm4gVTcoeTAsWSxuKTtjYXNlIDM6cmV0dXJuIFU3KHkwLFksbik7Y2FzZSA0OnJldHVybiBVNyh5MCxZLG4pO2Nhc2UgNTpyZXR1cm4gVTcoeTAsWSxuKTtjYXNlIDY6cmV0dXJuIFU3KHkwLFksbik7Y2FzZSA3OnJldHVybiBVNyh5MCxZLG4pO2Nhc2UgODpyZXR1cm4gVTcoWzgseTBbMV0seTBbMl1dLFksbik7Y2FzZSA5OnZhciBJMD15MFsxXSxEPV83KHkwWzJdLFksbiksdTA9RFsyXTtyZXR1cm5bMCxbMjMsWzksSTAsRFsxXV0sdTBbMV1dLHUwWzJdXTtjYXNlIDEwOnJldHVybiBVNyh5MCxZLG4pO2RlZmF1bHQ6cmV0dXJuIFU3KHkwLFksbil9fXRocm93IE91fWZ1bmN0aW9uIFU3KHQsbixlKXt2YXIgaT1fdChuLGUpO3JldHVyblswLFsyMyx0LGlbMV1dLGlbMl1dfWZ1bmN0aW9uIEg3KHQsbixlKXt2YXIgaT11bihlKSx4PTA8PW4/dDowLGM9Z3Aobik7aWYoYzw9aSlyZXR1cm4gZTt2YXIgcz14PT09Mj80ODozMixwPWsxKGMscyk7c3dpdGNoKHgpe2Nhc2UgMDpjcyhlLDAscCwwLGkpO2JyZWFrO2Nhc2UgMTpjcyhlLDAscCxjLWl8MCxpKTticmVhaztkZWZhdWx0OnZhciB5PTA7aWYoMDxpKXt2YXIgVD0wO0l0KGUsMCkhPT00MyYmSXQoZSwwKSE9PTQ1JiZJdChlLDApIT09MzImJih5PTEsVD0xKSxUfHwoYjEocCwwLEl0KGUsMCkpLGNzKGUsMSxwLChjLWl8MCkrMXwwLGktMXwwKSl9ZWxzZSB5PTE7aWYoeSl7dmFyIEU9MDtpZigxPGkmJkl0KGUsMCk9PT00OCl7dmFyIGQ9MDt1YyE9PUl0KGUsMSkmJkl0KGUsMSkhPT04OCYmKEU9MSxkPTEpLGR8fChiMShwLDEsSXQoZSwxKSksY3MoZSwyLHAsKGMtaXwwKSsyfDAsaS0yfDApKX1lbHNlIEU9MTtFJiZjcyhlLDAscCxjLWl8MCxpKX19cmV0dXJuIHB9ZnVuY3Rpb24gWXYodCxuKXt2YXIgZT1ncCh0KSxpPXVuKG4pLHg9SXQobiwwKSxjPTA7aWYoNTg8PXgpNzE8PXg/NTwoeCtZM3wwKT4+PjB8fChjPTEpOjY1PD14JiYoYz0xKTtlbHNle3ZhciBzPTA7aWYoeCE9PTMyKWlmKDQzPD14KXN3aXRjaCh4K3h5fDApe2Nhc2UgNTppZihpPChlKzJ8MCkmJjE8aSl7dmFyIHA9MDtpZigodWM9PT1JdChuLDEpfHxJdChuLDEpPT09ODgpJiYocD0xKSxwKXt2YXIgeT1rMShlKzJ8MCw0OCk7cmV0dXJuIGIxKHksMSxJdChuLDEpKSxjcyhuLDIseSwoZS1pfDApKzR8MCxpLTJ8MCkseX19Yz0xLHM9MTticmVhaztjYXNlIDA6Y2FzZSAyOmJyZWFrO2Nhc2UgMTpjYXNlIDM6Y2FzZSA0OnM9MTticmVhaztkZWZhdWx0OmM9MSxzPTF9ZWxzZSBzPTE7aWYoIXMmJmk8KGUrMXwwKSl7dmFyIFQ9azEoZSsxfDAsNDgpO3JldHVybiBiMShULDAseCksY3MobiwxLFQsKGUtaXwwKSsyfDAsaS0xfDApLFR9fWlmKGMmJmk8ZSl7dmFyIEU9azEoZSw0OCk7cmV0dXJuIGNzKG4sMCxFLGUtaXwwLGkpLEV9cmV0dXJuIG59ZnVuY3Rpb24genJlKHQpe2Zvcih2YXIgbj0wLGU9dW4odCk7Oyl7aWYoZTw9bil2YXIgaT10O2Vsc2V7dmFyIHg9VnIodCxuKStoVXwwLGM9MDtpZig1OTx4Pj4+MD8zMzwoeCtTU3wwKT4+PjAmJihjPTEpOng9PT0yJiYoYz0xKSwhYyl7dmFyIG49bisxfDA7Y29udGludWV9dmFyIHM9dCxwPVswLDBdLHk9YjcocyktMXwwLFQ9MDtpZighKHk8MCkpZm9yKHZhciBFPVQ7Oyl7dmFyIGQ9WHUocyxFKSx3PTA7aWYoMzI8PWQpe3ZhciBHPWQtMzR8MCxBPTA7aWYoNTg8Rz4+PjA/OTM8PUcmJihBPTEpOjU2PChHLTF8MCk+Pj4wJiYodz0xLEE9MSksIUEpe3ZhciBTPTE7dz0yfX1lbHNlIDExPD1kP2Q9PT0xMyYmKHc9MSk6ODw9ZCYmKHc9MSk7c3dpdGNoKHcpe2Nhc2UgMDp2YXIgUz00O2JyZWFrO2Nhc2UgMTp2YXIgUz0yO2JyZWFrfXBbMV09cFsxXStTfDA7dmFyIE09RSsxfDA7aWYoeSE9PUUpe3ZhciBFPU07Y29udGludWV9YnJlYWt9aWYocFsxXT09PWI3KHMpKXZhciBLPXN6KHMpO2Vsc2V7dmFyIFY9THQocFsxXSk7cFsxXT0wO3ZhciBmMD1iNyhzKS0xfDAsbTA9MDtpZighKGYwPDApKWZvcih2YXIgazA9bTA7Oyl7dmFyIGcwPVh1KHMsazApLGUwPTA7aWYoMzU8PWcwKWcwPT09OTI/ZTA9Mjp6bjw9ZzA/ZTA9MTplMD0zO2Vsc2UgaWYoMzI8PWcwKTM0PD1nMD9lMD0yOmUwPTM7ZWxzZSBpZigxNDw9ZzApZTA9MTtlbHNlIHN3aXRjaChnMCl7Y2FzZSA4OkpuKFYscFsxXSw5MikscFsxXSsrLEpuKFYscFsxXSw5OCk7YnJlYWs7Y2FzZSA5OkpuKFYscFsxXSw5MikscFsxXSsrLEpuKFYscFsxXSxmMSk7YnJlYWs7Y2FzZSAxMDpKbihWLHBbMV0sOTIpLHBbMV0rKyxKbihWLHBbMV0sWHQpO2JyZWFrO2Nhc2UgMTM6Sm4oVixwWzFdLDkyKSxwWzFdKyssSm4oVixwWzFdLHQxKTticmVhaztkZWZhdWx0OmUwPTF9c3dpdGNoKGUwKXtjYXNlIDE6Sm4oVixwWzFdLDkyKSxwWzFdKyssSm4oVixwWzFdLDQ4KyhnMC90aXwwKXwwKSxwWzFdKyssSm4oVixwWzFdLDQ4KygoZzAvMTB8MCklMTB8MCl8MCkscFsxXSsrLEpuKFYscFsxXSw0OCsoZzAlMTB8MCl8MCk7YnJlYWs7Y2FzZSAyOkpuKFYscFsxXSw5MikscFsxXSsrLEpuKFYscFsxXSxnMCk7YnJlYWs7Y2FzZSAzOkpuKFYscFsxXSxnMCk7YnJlYWt9cFsxXSsrO3ZhciB4MD1rMCsxfDA7aWYoZjAhPT1rMCl7dmFyIGswPXgwO2NvbnRpbnVlfWJyZWFrfXZhciBLPVZ9dmFyIGk9S312YXIgbD11bihpKSxjMD1rMShsKzJ8MCwzNCk7cmV0dXJuIFRzKGksMCxjMCwxLGwpLGMwfX1mdW5jdGlvbiB3eih0LG4pe3ZhciBlPWdwKG4pLGk9cno/cnpbMV06NzA7c3dpdGNoKHRbMl0pe2Nhc2UgMDp2YXIgeD1SaTticmVhaztjYXNlIDE6dmFyIHg9Ujc7YnJlYWs7Y2FzZSAyOnZhciB4PTY5O2JyZWFrO2Nhc2UgMzp2YXIgeD1zNzticmVhaztjYXNlIDQ6dmFyIHg9NzE7YnJlYWs7Y2FzZSA1OnZhciB4PWk7YnJlYWs7Y2FzZSA2OnZhciB4PUw3O2JyZWFrO2Nhc2UgNzp2YXIgeD03MjticmVhaztkZWZhdWx0OnZhciB4PTcwfXZhciBjPXl6KDE2KTtzd2l0Y2goWHYoYywzNyksdFsxXSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTpYdihjLDQzKTticmVhaztkZWZhdWx0Olh2KGMsMzIpfXJldHVybiA4PD10WzJdJiZYdihjLDM1KSxYdihjLDQ2KSxMdShjLHIoQytlKSksWHYoYyx4KSxkeihjKX1mdW5jdGlvbiBBcCh0LG4pe2lmKDEzPD10KXt2YXIgZT1bMCwwXSxpPXVuKG4pLTF8MCx4PTA7aWYoIShpPDApKWZvcih2YXIgYz14Ozspezk8KFZyKG4sYykrV3R8MCk+Pj4wfHxlWzFdKys7dmFyIHM9YysxfDA7aWYoaSE9PWMpe3ZhciBjPXM7Y29udGludWV9YnJlYWt9dmFyIHA9ZVsxXSx5PUx0KHVuKG4pKygocC0xfDApLzN8MCl8MCksVD1bMCwwXSxFPWZ1bmN0aW9uKEspe3JldHVybiBiMSh5LFRbMV0sSyksVFsxXSsrLDB9LGQ9WzAsKChwLTF8MCklM3wwKSsxfDBdLHc9dW4obiktMXwwLEc9MDtpZighKHc8MCkpZm9yKHZhciBBPUc7Oyl7dmFyIFM9VnIobixBKTs5PChTK1d0fDApPj4+MHx8KGRbMV09PT0wJiYoRSg5NSksZFsxXT0zKSxkWzFdKz0tMSksRShTKTt2YXIgTT1BKzF8MDtpZih3IT09QSl7dmFyIEE9TTtjb250aW51ZX1icmVha31yZXR1cm4geX1yZXR1cm4gbn1mdW5jdGlvbiBLcmUodCxuKXtzd2l0Y2godCl7Y2FzZSAxOnZhciBlPWd4MDticmVhaztjYXNlIDI6dmFyIGU9RngwO2JyZWFrO2Nhc2UgNDp2YXIgZT1UeDA7YnJlYWs7Y2FzZSA1OnZhciBlPU94MDticmVhaztjYXNlIDY6dmFyIGU9SXgwO2JyZWFrO2Nhc2UgNzp2YXIgZT1BeDA7YnJlYWs7Y2FzZSA4OnZhciBlPU54MDticmVhaztjYXNlIDk6dmFyIGU9Q3gwO2JyZWFrO2Nhc2UgMTA6dmFyIGU9UHgwO2JyZWFrO2Nhc2UgMTE6dmFyIGU9RHgwO2JyZWFrO2Nhc2UgMDpjYXNlIDEzOnZhciBlPUx4MDticmVhaztjYXNlIDM6Y2FzZSAxNDp2YXIgZT1SeDA7YnJlYWs7ZGVmYXVsdDp2YXIgZT1qeDB9cmV0dXJuIEFwKHQsaHAoZSxuKSl9ZnVuY3Rpb24gV3JlKHQsbil7c3dpdGNoKHQpe2Nhc2UgMTp2YXIgZT1RZjA7YnJlYWs7Y2FzZSAyOnZhciBlPXJ4MDticmVhaztjYXNlIDQ6dmFyIGU9ZXgwO2JyZWFrO2Nhc2UgNTp2YXIgZT1ueDA7YnJlYWs7Y2FzZSA2OnZhciBlPXR4MDticmVhaztjYXNlIDc6dmFyIGU9dXgwO2JyZWFrO2Nhc2UgODp2YXIgZT1peDA7YnJlYWs7Y2FzZSA5OnZhciBlPWZ4MDticmVhaztjYXNlIDEwOnZhciBlPXh4MDticmVhaztjYXNlIDExOnZhciBlPW94MDticmVhaztjYXNlIDA6Y2FzZSAxMzp2YXIgZT1heDA7YnJlYWs7Y2FzZSAzOmNhc2UgMTQ6dmFyIGU9Y3gwO2JyZWFrO2RlZmF1bHQ6dmFyIGU9c3gwfXJldHVybiBBcCh0LGhwKGUsbikpfWZ1bmN0aW9uIEpyZSh0LG4pe3N3aXRjaCh0KXtjYXNlIDE6dmFyIGU9QmYwO2JyZWFrO2Nhc2UgMjp2YXIgZT1xZjA7YnJlYWs7Y2FzZSA0OnZhciBlPVVmMDticmVhaztjYXNlIDU6dmFyIGU9SGYwO2JyZWFrO2Nhc2UgNjp2YXIgZT1YZjA7YnJlYWs7Y2FzZSA3OnZhciBlPVlmMDticmVhaztjYXNlIDg6dmFyIGU9VmYwO2JyZWFrO2Nhc2UgOTp2YXIgZT16ZjA7YnJlYWs7Y2FzZSAxMDp2YXIgZT1LZjA7YnJlYWs7Y2FzZSAxMTp2YXIgZT1XZjA7YnJlYWs7Y2FzZSAwOmNhc2UgMTM6dmFyIGU9SmYwO2JyZWFrO2Nhc2UgMzpjYXNlIDE0OnZhciBlPSRmMDticmVhaztkZWZhdWx0OnZhciBlPVpmMH1yZXR1cm4gQXAodCxocChlLG4pKX1mdW5jdGlvbiAkcmUodCxuKXtzd2l0Y2godCl7Y2FzZSAxOnZhciBlPXZ4MDticmVhaztjYXNlIDI6dmFyIGU9bHgwO2JyZWFrO2Nhc2UgNDp2YXIgZT1ieDA7YnJlYWs7Y2FzZSA1OnZhciBlPXB4MDticmVhaztjYXNlIDY6dmFyIGU9bXgwO2JyZWFrO2Nhc2UgNzp2YXIgZT1feDA7YnJlYWs7Y2FzZSA4OnZhciBlPXl4MDticmVhaztjYXNlIDk6dmFyIGU9aHgwO2JyZWFrO2Nhc2UgMTA6dmFyIGU9ZHgwO2JyZWFrO2Nhc2UgMTE6dmFyIGU9a3gwO2JyZWFrO2Nhc2UgMDpjYXNlIDEzOnZhciBlPXd4MDticmVhaztjYXNlIDM6Y2FzZSAxNDp2YXIgZT1FeDA7YnJlYWs7ZGVmYXVsdDp2YXIgZT1TeDB9cmV0dXJuIEFwKHQsZDcwKGUsbikpfWZ1bmN0aW9uIHNzKHQsbixlKXtmdW5jdGlvbiBpKG0wKXtzd2l0Y2godFsxXSl7Y2FzZSAwOnZhciBrMD00NTticmVhaztjYXNlIDE6dmFyIGswPTQzO2JyZWFrO2RlZmF1bHQ6dmFyIGswPTMyfXJldHVybiBtNzAoZSxuLGswKX1mdW5jdGlvbiB4KG0wKXt2YXIgazA9WnUwKGUpO3JldHVybiBrMD09PTM/ZTwwP2pmMDpHZjA6NDw9azA/UmYwOm0wfXN3aXRjaCh0WzJdKXtjYXNlIDU6Zm9yKHZhciBjPVhBKHd6KHQsbiksZSkscz0wLHA9dW4oYyk7Oyl7aWYocz09PXApdmFyIHk9MDtlbHNle3ZhciBUPUl0KGMscykrdjF8MCxFPTA7aWYoMjM8VD4+PjA/VD09PTU1JiYoRT0xKToyMTwoVC0xfDApPj4+MCYmKEU9MSksIUUpe3ZhciBzPXMrMXwwO2NvbnRpbnVlfXZhciB5PTF9dmFyIGQ9eT9jOlRlKGMsTWYwKTtyZXR1cm4geChkKX1jYXNlIDY6cmV0dXJuIGkoMCk7Y2FzZSA3OnZhciB3PWkoMCksRz1iNyh3KTtpZihHPT09MCl2YXIgQT13O2Vsc2V7dmFyIFM9THQoRyksTT1HLTF8MCxLPTA7aWYoIShNPDApKWZvcih2YXIgVj1LOzspe0puKFMsVix4eihYdSh3LFYpKSk7dmFyIGYwPVYrMXwwO2lmKE0hPT1WKXt2YXIgVj1mMDtjb250aW51ZX1icmVha312YXIgQT1TfXJldHVybiBBO2Nhc2UgODpyZXR1cm4geChpKDApKTtkZWZhdWx0OnJldHVybiBYQSh3eih0LG4pLGUpfX1mdW5jdGlvbiBrbCh0LG4sZSxpKXtmb3IodmFyIHg9bixjPWUscz1pOzspe2lmKHR5cGVvZiBzPT1cIm51bWJlclwiKXJldHVybiB1KHgsYyk7c3dpdGNoKHNbMF0pe2Nhc2UgMDp2YXIgcD1zWzFdO3JldHVybiBmdW5jdGlvbihhcil7cmV0dXJuIFhuKHgsWzUsYyxhcl0scCl9O2Nhc2UgMTp2YXIgeT1zWzFdO3JldHVybiBmdW5jdGlvbihhcil7dmFyIF9yPTA7aWYoNDA8PWFyKWlmKGFyPT09OTIpdmFyIElyPW9pMDtlbHNlIHpuPD1hcj9fcj0xOl9yPTI7ZWxzZSBpZigzMjw9YXIpaWYoMzk8PWFyKXZhciBJcj1haTA7ZWxzZSBfcj0yO2Vsc2UgaWYoMTQ8PWFyKV9yPTE7ZWxzZSBzd2l0Y2goYXIpe2Nhc2UgODp2YXIgSXI9Y2kwO2JyZWFrO2Nhc2UgOTp2YXIgSXI9c2kwO2JyZWFrO2Nhc2UgMTA6dmFyIElyPXZpMDticmVhaztjYXNlIDEzOnZhciBJcj1saTA7YnJlYWs7ZGVmYXVsdDpfcj0xfXN3aXRjaChfcil7Y2FzZSAxOnZhciBmZT1MdCg0KTtKbihmZSwwLDkyKSxKbihmZSwxLDQ4Kyhhci90aXwwKXwwKSxKbihmZSwyLDQ4KygoYXIvMTB8MCklMTB8MCl8MCksSm4oZmUsMyw0OCsoYXIlMTB8MCl8MCk7dmFyIElyPWZlO2JyZWFrO2Nhc2UgMjp2YXIgdjA9THQoMSk7Sm4odjAsMCxhcik7dmFyIElyPXYwO2JyZWFrfXZhciBQPXVuKElyKSxMPWsxKFArMnwwLDM5KTtyZXR1cm4gVHMoSXIsMCxMLDEsUCksWG4oeCxbNCxjLExdLHkpfTtjYXNlIDI6dmFyIFQ9c1syXSxFPXNbMV07cmV0dXJuIG1OKHgsYyxULEUsZnVuY3Rpb24oYXIpe3JldHVybiBhcn0pO2Nhc2UgMzpyZXR1cm4gbU4oeCxjLHNbMl0sc1sxXSx6cmUpO2Nhc2UgNDpyZXR1cm4gTnAoeCxjLHNbNF0sc1syXSxzWzNdLEtyZSxzWzFdKTtjYXNlIDU6cmV0dXJuIE5wKHgsYyxzWzRdLHNbMl0sc1szXSxXcmUsc1sxXSk7Y2FzZSA2OnJldHVybiBOcCh4LGMsc1s0XSxzWzJdLHNbM10sSnJlLHNbMV0pO2Nhc2UgNzpyZXR1cm4gTnAoeCxjLHNbNF0sc1syXSxzWzNdLCRyZSxzWzFdKTtjYXNlIDg6dmFyIGQ9c1s0XSx3PXNbM10sRz1zWzJdLEE9c1sxXTtpZih0eXBlb2YgRz09XCJudW1iZXJcIil7aWYodHlwZW9mIHc9PVwibnVtYmVyXCIpcmV0dXJuIHc/ZnVuY3Rpb24oYXIsX3Ipe3JldHVybiBYbih4LFs0LGMsc3MoQSxhcixfcildLGQpfTpmdW5jdGlvbihhcil7cmV0dXJuIFhuKHgsWzQsYyxzcyhBLHZOKEEpLGFyKV0sZCl9O3ZhciBTPXdbMV07cmV0dXJuIGZ1bmN0aW9uKGFyKXtyZXR1cm4gWG4oeCxbNCxjLHNzKEEsUyxhcildLGQpfX1lbHNle2lmKEdbMF09PT0wKXt2YXIgTT1HWzJdLEs9R1sxXTtpZih0eXBlb2Ygdz09XCJudW1iZXJcIilyZXR1cm4gdz9mdW5jdGlvbihhcixfcil7cmV0dXJuIFhuKHgsWzQsYyxINyhLLE0sc3MoQSxhcixfcikpXSxkKX06ZnVuY3Rpb24oYXIpe3JldHVybiBYbih4LFs0LGMsSDcoSyxNLHNzKEEsdk4oQSksYXIpKV0sZCl9O3ZhciBWPXdbMV07cmV0dXJuIGZ1bmN0aW9uKGFyKXtyZXR1cm4gWG4oeCxbNCxjLEg3KEssTSxzcyhBLFYsYXIpKV0sZCl9fXZhciBmMD1HWzFdO2lmKHR5cGVvZiB3PT1cIm51bWJlclwiKXJldHVybiB3P2Z1bmN0aW9uKGFyLF9yLElyKXtyZXR1cm4gWG4oeCxbNCxjLEg3KGYwLGFyLHNzKEEsX3IsSXIpKV0sZCl9OmZ1bmN0aW9uKGFyLF9yKXtyZXR1cm4gWG4oeCxbNCxjLEg3KGYwLGFyLHNzKEEsdk4oQSksX3IpKV0sZCl9O3ZhciBtMD13WzFdO3JldHVybiBmdW5jdGlvbihhcixfcil7cmV0dXJuIFhuKHgsWzQsYyxINyhmMCxhcixzcyhBLG0wLF9yKSldLGQpfX1jYXNlIDk6cmV0dXJuIG1OKHgsYyxzWzJdLHNbMV0sR3JlKTtjYXNlIDEwOnZhciBjPVs3LGNdLHM9c1sxXTtjb250aW51ZTtjYXNlIDExOnZhciBjPVsyLGMsc1sxXV0scz1zWzJdO2NvbnRpbnVlO2Nhc2UgMTI6dmFyIGM9WzMsYyxzWzFdXSxzPXNbMl07Y29udGludWU7Y2FzZSAxMzp2YXIgazA9c1szXSxnMD1zWzJdLGUwPXl6KDE2KTtsTihlMCxnMCk7dmFyIHgwPWR6KGUwKTtyZXR1cm4gZnVuY3Rpb24oYXIpe3JldHVybiBYbih4LFs0LGMseDBdLGswKX07Y2FzZSAxNDp2YXIgbD1zWzNdLGMwPXNbMl07cmV0dXJuIGZ1bmN0aW9uKGFyKXt2YXIgX3I9YXJbMV0sSXI9X3QoX3IsR3QodXUoYzApKSk7aWYodHlwZW9mIElyWzJdPT1cIm51bWJlclwiKXJldHVybiBYbih4LGMsQXQoSXJbMV0sbCkpO3Rocm93IE91fTtjYXNlIDE1OnZhciB0MD1zWzFdO3JldHVybiBmdW5jdGlvbihhcixfcil7cmV0dXJuIFhuKHgsWzYsYyxmdW5jdGlvbihJcil7cmV0dXJuIG8oYXIsSXIsX3IpfV0sdDApfTtjYXNlIDE2OnZhciBvMD1zWzFdO3JldHVybiBmdW5jdGlvbihhcil7cmV0dXJuIFhuKHgsWzYsYyxhcl0sbzApfTtjYXNlIDE3OnZhciBjPVswLGMsc1sxXV0scz1zWzJdO2NvbnRpbnVlO2Nhc2UgMTg6dmFyIHcwPXNbMV07aWYodzBbMF09PT0wKXt2YXIgXzA9c1syXSxFMD13MFsxXVsxXSxVMD0wLHg9ZnVuY3Rpb24oZmUsdjAsUCl7cmV0dXJuIGZ1bmN0aW9uKEwpe3JldHVybiBYbih2MCxbMSxmZSxbMCxMXV0sUCl9fShjLHgsXzApLGM9VTAscz1FMDtjb250aW51ZX12YXIgYj1zWzJdLFIwPXcwWzFdWzFdLFg9MCx4PWZ1bmN0aW9uKGFyLF9yLElyKXtyZXR1cm4gZnVuY3Rpb24oZmUpe3JldHVybiBYbihfcixbMSxhcixbMSxmZV1dLElyKX19KGMseCxiKSxjPVgscz1SMDtjb250aW51ZTtjYXNlIDE5OnRocm93WzAsU24sX2YwXTtjYXNlIDIwOnZhciBzMD1zWzNdLGhyPVs4LGMseWYwXTtyZXR1cm4gZnVuY3Rpb24oYXIpe3JldHVybiBYbih4LGhyLHMwKX07Y2FzZSAyMTp2YXIgQXI9c1syXTtyZXR1cm4gZnVuY3Rpb24oYXIpe3JldHVybiBYbih4LFs0LGMsaHAobWYwLGFyKV0sQXIpfTtjYXNlIDIyOnZhciBvcj1zWzFdO3JldHVybiBmdW5jdGlvbihhcil7cmV0dXJuIFhuKHgsWzUsYyxhcl0sb3IpfTtjYXNlIDIzOnZhciBXMD1zWzJdLExyPXNbMV07aWYodHlwZW9mIExyPT1cIm51bWJlclwiKXN3aXRjaChMcil7Y2FzZSAwOnJldHVybiB0PDUwP2N0KHQrMXwwLHgsYyxXMCk6VHUoY3QsWzAseCxjLFcwXSk7Y2FzZSAxOnJldHVybiB0PDUwP2N0KHQrMXwwLHgsYyxXMCk6VHUoY3QsWzAseCxjLFcwXSk7Y2FzZSAyOnRocm93WzAsU24saGYwXTtkZWZhdWx0OnJldHVybiB0PDUwP2N0KHQrMXwwLHgsYyxXMCk6VHUoY3QsWzAseCxjLFcwXSl9ZWxzZSBzd2l0Y2goTHJbMF0pe2Nhc2UgMDpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgMTpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgMjpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgMzpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgNDpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgNTpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgNjpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgNzpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgODpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pO2Nhc2UgOTp2YXIgVHI9THJbMl07cmV0dXJuIHQ8NTA/Yk4odCsxfDAseCxjLFRyLFcwKTpUdShiTixbMCx4LGMsVHIsVzBdKTtjYXNlIDEwOnJldHVybiB0PDUwP2N0KHQrMXwwLHgsYyxXMCk6VHUoY3QsWzAseCxjLFcwXSk7ZGVmYXVsdDpyZXR1cm4gdDw1MD9jdCh0KzF8MCx4LGMsVzApOlR1KGN0LFswLHgsYyxXMF0pfWRlZmF1bHQ6dmFyIEhyPXNbM10sT3I9c1sxXSxmcj11KHNbMl0sMCk7cmV0dXJuIHQ8NTA/cE4odCsxfDAseCxjLEhyLE9yLGZyKTpUdShwTixbMCx4LGMsSHIsT3IsZnJdKX19fWZ1bmN0aW9uIGJOKHQsbixlLGkseCl7aWYodHlwZW9mIGk9PVwibnVtYmVyXCIpcmV0dXJuIHQ8NTA/Y3QodCsxfDAsbixlLHgpOlR1KGN0LFswLG4sZSx4XSk7c3dpdGNoKGlbMF0pe2Nhc2UgMDp2YXIgYz1pWzFdO3JldHVybiBmdW5jdGlvbihtMCl7cmV0dXJuIGZpKG4sZSxjLHgpfTtjYXNlIDE6dmFyIHM9aVsxXTtyZXR1cm4gZnVuY3Rpb24obTApe3JldHVybiBmaShuLGUscyx4KX07Y2FzZSAyOnZhciBwPWlbMV07cmV0dXJuIGZ1bmN0aW9uKG0wKXtyZXR1cm4gZmkobixlLHAseCl9O2Nhc2UgMzp2YXIgeT1pWzFdO3JldHVybiBmdW5jdGlvbihtMCl7cmV0dXJuIGZpKG4sZSx5LHgpfTtjYXNlIDQ6dmFyIFQ9aVsxXTtyZXR1cm4gZnVuY3Rpb24obTApe3JldHVybiBmaShuLGUsVCx4KX07Y2FzZSA1OnZhciBFPWlbMV07cmV0dXJuIGZ1bmN0aW9uKG0wKXtyZXR1cm4gZmkobixlLEUseCl9O2Nhc2UgNjp2YXIgZD1pWzFdO3JldHVybiBmdW5jdGlvbihtMCl7cmV0dXJuIGZpKG4sZSxkLHgpfTtjYXNlIDc6dmFyIHc9aVsxXTtyZXR1cm4gZnVuY3Rpb24obTApe3JldHVybiBmaShuLGUsdyx4KX07Y2FzZSA4OnZhciBHPWlbMl07cmV0dXJuIGZ1bmN0aW9uKG0wKXtyZXR1cm4gZmkobixlLEcseCl9O2Nhc2UgOTp2YXIgQT1pWzNdLFM9aVsyXSxNPWJ1KHV1KGlbMV0pLFMpO3JldHVybiBmdW5jdGlvbihtMCl7cmV0dXJuIGZpKG4sZSx1NyhNLEEpLHgpfTtjYXNlIDEwOnZhciBLPWlbMV07cmV0dXJuIGZ1bmN0aW9uKG0wLGswKXtyZXR1cm4gZmkobixlLEsseCl9O2Nhc2UgMTE6dmFyIFY9aVsxXTtyZXR1cm4gZnVuY3Rpb24obTApe3JldHVybiBmaShuLGUsVix4KX07Y2FzZSAxMjp2YXIgZjA9aVsxXTtyZXR1cm4gZnVuY3Rpb24obTApe3JldHVybiBmaShuLGUsZjAseCl9O2Nhc2UgMTM6dGhyb3dbMCxTbixkZjBdO2RlZmF1bHQ6dGhyb3dbMCxTbixrZjBdfX1mdW5jdGlvbiBjdCh0LG4sZSxpKXt2YXIgeD1bOCxlLHdmMF07cmV0dXJuIHQ8NTA/a2wodCsxfDAsbix4LGkpOlR1KGtsLFswLG4seCxpXSl9ZnVuY3Rpb24gcE4odCxuLGUsaSx4LGMpe2lmKHgpe3ZhciBzPXhbMV07cmV0dXJuIGZ1bmN0aW9uKHkpe3JldHVybiBacmUobixlLGkscyx1KGMseSkpfX12YXIgcD1bNCxlLGNdO3JldHVybiB0PDUwP2tsKHQrMXwwLG4scCxpKTpUdShrbCxbMCxuLHAsaV0pfWZ1bmN0aW9uIFhuKHQsbixlKXtyZXR1cm4gSkEoa2woMCx0LG4sZSkpfWZ1bmN0aW9uIGZpKHQsbixlLGkpe3JldHVybiBKQShiTigwLHQsbixlLGkpKX1mdW5jdGlvbiBacmUodCxuLGUsaSx4KXtyZXR1cm4gSkEocE4oMCx0LG4sZSxpLHgpKX1mdW5jdGlvbiBtTih0LG4sZSxpLHgpe2lmKHR5cGVvZiBpPT1cIm51bWJlclwiKXJldHVybiBmdW5jdGlvbih5KXtyZXR1cm4gWG4odCxbNCxuLHUoeCx5KV0sZSl9O2lmKGlbMF09PT0wKXt2YXIgYz1pWzJdLHM9aVsxXTtyZXR1cm4gZnVuY3Rpb24oeSl7cmV0dXJuIFhuKHQsWzQsbixINyhzLGMsdSh4LHkpKV0sZSl9fXZhciBwPWlbMV07cmV0dXJuIGZ1bmN0aW9uKHksVCl7cmV0dXJuIFhuKHQsWzQsbixINyhwLHksdSh4LFQpKV0sZSl9fWZ1bmN0aW9uIE5wKHQsbixlLGkseCxjLHMpe2lmKHR5cGVvZiBpPT1cIm51bWJlclwiKXtpZih0eXBlb2YgeD09XCJudW1iZXJcIilyZXR1cm4geD9mdW5jdGlvbihHLEEpe3JldHVybiBYbih0LFs0LG4sWXYoRyxvKGMscyxBKSldLGUpfTpmdW5jdGlvbihHKXtyZXR1cm4gWG4odCxbNCxuLG8oYyxzLEcpXSxlKX07dmFyIHA9eFsxXTtyZXR1cm4gZnVuY3Rpb24oRyl7cmV0dXJuIFhuKHQsWzQsbixZdihwLG8oYyxzLEcpKV0sZSl9fWVsc2V7aWYoaVswXT09PTApe3ZhciB5PWlbMl0sVD1pWzFdO2lmKHR5cGVvZiB4PT1cIm51bWJlclwiKXJldHVybiB4P2Z1bmN0aW9uKEcsQSl7cmV0dXJuIFhuKHQsWzQsbixINyhULHksWXYoRyxvKGMscyxBKSkpXSxlKX06ZnVuY3Rpb24oRyl7cmV0dXJuIFhuKHQsWzQsbixINyhULHksbyhjLHMsRykpXSxlKX07dmFyIEU9eFsxXTtyZXR1cm4gZnVuY3Rpb24oRyl7cmV0dXJuIFhuKHQsWzQsbixINyhULHksWXYoRSxvKGMscyxHKSkpXSxlKX19dmFyIGQ9aVsxXTtpZih0eXBlb2YgeD09XCJudW1iZXJcIilyZXR1cm4geD9mdW5jdGlvbihHLEEsUyl7cmV0dXJuIFhuKHQsWzQsbixINyhkLEcsWXYoQSxvKGMscyxTKSkpXSxlKX06ZnVuY3Rpb24oRyxBKXtyZXR1cm4gWG4odCxbNCxuLEg3KGQsRyxvKGMscyxBKSldLGUpfTt2YXIgdz14WzFdO3JldHVybiBmdW5jdGlvbihHLEEpe3JldHVybiBYbih0LFs0LG4sSDcoZCxHLFl2KHcsbyhjLHMsQSkpKV0sZSl9fX1mdW5jdGlvbiB2cyh0LG4pe2Zvcih2YXIgZT1uOzspe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVybiAwO3N3aXRjaChlWzBdKXtjYXNlIDA6dmFyIGk9ZVsxXSx4PWt6KGVbMl0pO3JldHVybiB2cyh0LGkpLHZsKHQseCk7Y2FzZSAxOnZhciBjPWVbMl0scz1lWzFdO2lmKGNbMF09PT0wKXt2YXIgcD1jWzFdO3ZzKHQscyksdmwodCxFZjApO3ZhciBlPXA7Y29udGludWV9dmFyIHk9Y1sxXTt2cyh0LHMpLHZsKHQsU2YwKTt2YXIgZT15O2NvbnRpbnVlO2Nhc2UgNjp2YXIgVD1lWzJdO3JldHVybiB2cyh0LGVbMV0pLHUoVCx0KTtjYXNlIDc6cmV0dXJuIHZzKHQsZVsxXSkscDEodCk7Y2FzZSA4OnZhciBFPWVbMl07cmV0dXJuIHZzKHQsZVsxXSksUHUoRSk7Y2FzZSAyOmNhc2UgNDp2YXIgZD1lWzJdO3JldHVybiB2cyh0LGVbMV0pLHZsKHQsZCk7ZGVmYXVsdDp2YXIgdz1lWzJdO3JldHVybiB2cyh0LGVbMV0pLEtWKHQsdyl9fX1mdW5jdGlvbiBscyh0LG4pe2Zvcih2YXIgZT1uOzspe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVybiAwO3N3aXRjaChlWzBdKXtjYXNlIDA6dmFyIGk9ZVsxXSx4PWt6KGVbMl0pO3JldHVybiBscyh0LGkpLGhuKHQseCk7Y2FzZSAxOnZhciBjPWVbMl0scz1lWzFdO2lmKGNbMF09PT0wKXt2YXIgcD1jWzFdO2xzKHQscyksaG4odCxnZjApO3ZhciBlPXA7Y29udGludWV9dmFyIHk9Y1sxXTtscyh0LHMpLGhuKHQsRmYwKTt2YXIgZT15O2NvbnRpbnVlO2Nhc2UgNjp2YXIgVD1lWzJdO3JldHVybiBscyh0LGVbMV0pLGhuKHQsdShULDApKTtjYXNlIDc6dmFyIGU9ZVsxXTtjb250aW51ZTtjYXNlIDg6dmFyIEU9ZVsyXTtyZXR1cm4gbHModCxlWzFdKSxQdShFKTtjYXNlIDI6Y2FzZSA0OnZhciBkPWVbMl07cmV0dXJuIGxzKHQsZVsxXSksaG4odCxkKTtkZWZhdWx0OnZhciB3PWVbMl07cmV0dXJuIGxzKHQsZVsxXSkscWkodCx3KX19fWZ1bmN0aW9uIFFyZSh0KXtpZihxbih0LE9mMCkpcmV0dXJuIElmMDt2YXIgbj11bih0KTtmdW5jdGlvbiBlKFMpe3ZhciBNPVRmMFsxXSxLPSRuKE40KTtyZXR1cm4gdShYbihmdW5jdGlvbihWKXtyZXR1cm4gbHMoSyxWKSxrZShNdChLKSl9LDAsTSksdCl9ZnVuY3Rpb24gaShTKXtmb3IodmFyIE09Uzs7KXtpZihNPT09bilyZXR1cm4gTTt2YXIgSz1JdCh0LE0pO2lmKEshPT05JiZLIT09MzIpcmV0dXJuIE07dmFyIE09TSsxfDB9fWZ1bmN0aW9uIHgoUyxNKXtmb3IodmFyIEs9TTs7KXtpZihLPT09bnx8MjU8KEl0KHQsSykrWTN8MCk+Pj4wKXJldHVybiBLO3ZhciBLPUsrMXwwfX1mdW5jdGlvbiBjKFMsTSl7Zm9yKHZhciBLPU07Oyl7aWYoSz09PW4pcmV0dXJuIEs7dmFyIFY9SXQodCxLKSxmMD0wO2lmKDQ4PD1WPzU4PD1WfHwoZjA9MSk6Vj09PTQ1JiYoZjA9MSksZjApe3ZhciBLPUsrMXwwO2NvbnRpbnVlfXJldHVybiBLfX12YXIgcz1pKDApLHA9eChzLHMpLHk9bTcodCxzLHAtc3wwKSxUPWkocCksRT1jKFQsVCk7aWYoVD09PUUpdmFyIGQ9MDtlbHNlIHRyeXt2YXIgdz1CaShtNyh0LFQsRS1UfDApKSxkPXd9Y2F0Y2goUyl7aWYoUz1FdChTKSxTWzFdIT09cTcpdGhyb3cgUzt2YXIgZD1lKDApfWkoRSkhPT1uJiZlKDApO3ZhciBHPTA7aWYobjAoeSxBZjApJiZuMCh5LE5mMCkpdmFyIEE9bjAoeSxDZjApP24wKHksUGYwKT9uMCh5LERmMCk/bjAoeSxMZjApP2UoMCk6MToyOjM6MDtlbHNlIEc9MTtpZihHKXZhciBBPTQ7cmV0dXJuWzAsZCxBXX1mdW5jdGlvbiBfTih0LG4pe3ZhciBlPW5bMV0saT0wO3JldHVybiBYbihmdW5jdGlvbih4KXtyZXR1cm4gdnModCx4KSwwfSxpLGUpfWZ1bmN0aW9uIHlOKHQpe3JldHVybiBfTihQYyx0KX1mdW5jdGlvbiBldCh0KXt2YXIgbj10WzFdO3JldHVybiBYbihmdW5jdGlvbihlKXt2YXIgaT0kbig2NCk7cmV0dXJuIGxzKGksZSksTXQoaSl9LDAsbil9dmFyIGhOPVswLDBdO2Z1bmN0aW9uIGROKHQsbil7dmFyIGU9dFsxK25dO2lmKDEtKHR5cGVvZiBlPT1cIm51bWJlclwiPzE6MCkpe2lmKGgxKGUpPT09WTIpcmV0dXJuIHUoZXQoaG8wKSxlKTtpZihoMShlKT09PW5kKWZvcih2YXIgaT1YQSh1aTAsZSkseD0wLGM9dW4oaSk7Oyl7aWYoYzw9eClyZXR1cm4gVGUoaSxpaTApO3ZhciBzPUl0KGkseCkscD0wO2lmKDQ4PD1zPzU4PD1zfHwocD0xKTpzPT09NDUmJihwPTEpLHApe3ZhciB4PXgrMXwwO2NvbnRpbnVlfXJldHVybiBpfXJldHVybiBkbzB9cmV0dXJuIHUoZXQoeW8wKSxlKX1mdW5jdGlvbiBFeih0LG4pe2lmKHQubGVuZ3RoLTE8PW4pcmV0dXJuIHp4MDt2YXIgZT1Feih0LG4rMXwwKSxpPWROKHQsbik7cmV0dXJuIG8oZXQoS3gwKSxpLGUpfWZ1bmN0aW9uIENwKHQpe2Z1bmN0aW9uIG4oazApe2Zvcih2YXIgZzA9azA7Oyl7aWYoZzApe3ZhciBlMD1nMFsyXSx4MD1nMFsxXTt0cnl7dmFyIGw9MCxjMD11KHgwLHQpO2w9MX1jYXRjaHt9aWYobCYmYzApcmV0dXJuWzAsYzBbMV1dO3ZhciBnMD1lMDtjb250aW51ZX1yZXR1cm4gMH19dmFyIGU9bihoTlsxXSk7aWYoZSlyZXR1cm4gZVsxXTtpZih0PT09JEEpcmV0dXJuIGFvMDtpZih0PT09UVYpcmV0dXJuIGNvMDtpZih0WzFdPT09WlYpe3ZhciBpPXRbMl0seD1pWzNdLGM9aVsyXSxzPWlbMV07cmV0dXJuIHA3KGV0KFFBKSxzLGMseCx4KzV8MCxzbzApfWlmKHRbMV09PT1Tbil7dmFyIHA9dFsyXSx5PXBbM10sVD1wWzJdLEU9cFsxXTtyZXR1cm4gcDcoZXQoUUEpLEUsVCx5LHkrNnwwLHZvMCl9aWYodFsxXT09PXNsKXt2YXIgZD10WzJdLHc9ZFszXSxHPWRbMl0sQT1kWzFdO3JldHVybiBwNyhldChRQSksQSxHLHcsdys2fDAsbG8wKX1pZihoMSh0KT09PTApe3ZhciBTPXQubGVuZ3RoLTEsTT10WzFdWzFdO2lmKDI8Uz4+PjApdmFyIEs9RXoodCwyKSxWPWROKHQsMSksZjA9byhldChibzApLFYsSyk7ZWxzZSBzd2l0Y2goUyl7Y2FzZSAwOnZhciBmMD1wbzA7YnJlYWs7Y2FzZSAxOnZhciBmMD1tbzA7YnJlYWs7ZGVmYXVsdDp2YXIgbTA9ZE4odCwxKSxmMD11KGV0KF9vMCksbTApfXJldHVybiBUZShNLGYwKX1yZXR1cm4gdFsxXX1mdW5jdGlvbiBrTih0LG4pe3ZhciBlPXM3MChuKSxpPWUubGVuZ3RoLTEtMXwwLHg9MDtpZighKGk8MCkpZm9yKHZhciBjPXg7Oyl7dmFyIHM9dHUoZSxjKVsxK2NdLHA9ZnVuY3Rpb24oZjApe3JldHVybiBmdW5jdGlvbihtMCl7cmV0dXJuIG0wP2YwPT09MD9lbzA6bm8wOmYwPT09MD90bzA6dW8wfX0oYyk7aWYoc1swXT09PTApdmFyIHk9c1s1XSxUPXNbNF0sRT1zWzNdLGQ9c1s2XT9pbzA6Zm8wLHc9c1syXSxHPXNbN10sQT1wKHNbMV0pLE09WzAsZWkwKGV0KHhvMCksQSxHLHcsZCxFLFQseSldO2Vsc2UgaWYoc1sxXSl2YXIgTT0wO2Vsc2UgdmFyIFM9cCgwKSxNPVswLHUoZXQob28wKSxTKV07aWYoTSl7dmFyIEs9TVsxXTt1KF9OKHQsUXgwKSxLKX12YXIgVj1jKzF8MDtpZihpIT09Yyl7dmFyIGM9Vjtjb250aW51ZX1icmVha31yZXR1cm4gMH1mdW5jdGlvbiBTeih0KXtmb3IoOzspe3ZhciBuPWhOWzFdLGU9MS1uTihoTixuLFswLHQsbl0pO2lmKCFlKXJldHVybiBlfX12YXIgcmVlPWtvMC5zbGljZSgpO2Z1bmN0aW9uIGVlZSh0LG4pe3ZhciBlPUNwKHQpO3UoeU4oWngwKSxlKSxrTihQYyxuKTt2YXIgaT1UNzAoMCk7aWYoaTwwKXt2YXIgeD1ncChpKTtpeih0dShyZWUseClbMSt4XSl9cmV0dXJuIHAxKFBjKX12YXIgbmVlPVswXTtXQShyKExIKSxmdW5jdGlvbih0LG4pe3RyeXt0cnl7dmFyIGU9bj9uZWU6R1YoMCk7dHJ5e3VOKDApfWNhdGNoe310cnl7dmFyIGk9ZWVlKHQsZSkseD1pfWNhdGNoKHkpe3k9RXQoeSk7dmFyIGM9Q3AodCk7dSh5TihXeDApLGMpLGtOKFBjLGUpO3ZhciBzPUNwKHkpO3UoeU4oSngwKSxzKSxrTihQYyxHVigwKSk7dmFyIHg9cDEoUGMpfXZhciBwPXh9Y2F0Y2goeSl7aWYoeT1FdCh5KSx5IT09JEEpdGhyb3cgeTt2YXIgcD1peigkeDApfXJldHVybiBwfWNhdGNoe3JldHVybiAwfX0pO3ZhciB3Tj1bd3QsVW8wLE03KDApXSxQcD0wLGd6PS0xO2Z1bmN0aW9uIHdsKHQsbil7cmV0dXJuIHRbMTNdPXRbMTNdK25bM118MCxhTihuLHRbMjhdKX12YXIgRno9MTAwMDAwMDAxMDtmdW5jdGlvbiBFTih0LG4pe3JldHVybiB1cih0WzE3XSxuLDAsdW4obikpfWZ1bmN0aW9uIERwKHQpe3JldHVybiB1KHRbMTldLDApfWZ1bmN0aW9uIFR6KHQsbixlKXtyZXR1cm4gdFs5XT10WzldLW58MCxFTih0LGUpLHRbMTFdPTAsMH1mdW5jdGlvbiBMcCh0LG4pe3ZhciBlPW4wKG4scW8wKTtyZXR1cm4gZSYmVHoodCx1bihuKSxuKX1mdW5jdGlvbiBWdih0LG4sZSl7dmFyIGk9blszXSx4PW5bMl07THAodCxuWzFdKSxEcCh0KSx0WzExXT0xO3ZhciBjPSh0WzZdLWV8MCkreHwwLHM9dFs4XSxwPXM8PWM/czpjO3JldHVybiB0WzEwXT1wLHRbOV09dFs2XS10WzEwXXwwLHUodFsyMV0sdFsxMF0pLExwKHQsaSl9ZnVuY3Rpb24gT3oodCxuKXtyZXR1cm4gVnYodCxCbzAsbil9ZnVuY3Rpb24gRWwodCxuKXt2YXIgZT1uWzJdLGk9blszXTtyZXR1cm4gTHAodCxuWzFdKSx0WzldPXRbOV0tZXwwLHUodFsyMF0sZSksTHAodCxpKX1mdW5jdGlvbiBJeih0KXtmb3IoOzspe3ZhciBuPXRbMjhdWzJdLGU9bj9bMCxuWzFdXTowO2lmKGUpe3ZhciBpPWVbMV0seD1pWzFdLGM9aVsyXSxzPTA8PXg/MTowLHA9aVszXSx5PXRbMTNdLXRbMTJdfDAsVD1zfHwodFs5XTw9eT8xOjApO2lmKFQpe3ZhciBFPXRbMjhdLGQ9RVsyXTtpZihkKXtpZihkWzJdKXt2YXIgdz1kWzJdO0VbMV09RVsxXS0xfDAsRVsyXT13fWVsc2Ugb04oRSk7dmFyIEc9MDw9eD94OkZ6O2lmKHR5cGVvZiBjPT1cIm51bWJlclwiKXN3aXRjaChjKXtjYXNlIDA6dmFyIEE9SHYodFszXSk7aWYoQSl7dmFyIFM9QVsxXVsxXSxNPWZ1bmN0aW9uKEwsUSl7aWYoUSl7dmFyIGkwPVFbMV0sbDA9UVsyXTtyZXR1cm4gRjcwKEwsaTApP1swLEwsUV06WzAsaTAsTShMLGwwKV19cmV0dXJuWzAsTCwwXX07U1sxXT1NKHRbNl0tdFs5XXwwLFNbMV0pfWJyZWFrO2Nhc2UgMTpVdih0WzJdKTticmVhaztjYXNlIDI6VXYodFszXSk7YnJlYWs7Y2FzZSAzOnZhciBLPUh2KHRbMl0pO0s/T3oodCxLWzFdWzJdKTpEcCh0KTticmVhaztjYXNlIDQ6aWYodFsxMF0hPT0odFs2XS10WzldfDApKXt2YXIgVj10WzI4XSxmMD1WWzJdO2lmKGYwKXt2YXIgbTA9ZjBbMV07aWYoZjBbMl0pe3ZhciBrMD1mMFsyXTtWWzFdPVZbMV0tMXwwLFZbMl09azA7dmFyIGcwPVswLG0wXX1lbHNle29OKFYpO3ZhciBnMD1bMCxtMF19fWVsc2UgdmFyIGcwPTA7aWYoZzApe3ZhciBlMD1nMFsxXSx4MD1lMFsxXTt0WzEyXT10WzEyXS1lMFszXXwwLHRbOV09dFs5XSt4MHwwfX1icmVhaztkZWZhdWx0OnZhciBsPVV2KHRbNV0pO2wmJkVOKHQsdSh0WzI1XSxsWzFdKSl9ZWxzZSBzd2l0Y2goY1swXSl7Y2FzZSAwOlR6KHQsRyxjWzFdKTticmVhaztjYXNlIDE6dmFyIGMwPWNbMl0sdDA9Y1sxXSxvMD1jMFsxXSx3MD1jMFsyXSxfMD1Idih0WzJdKTtpZihfMCl7dmFyIEUwPV8wWzFdLFUwPUUwWzJdO3N3aXRjaChFMFsxXSl7Y2FzZSAwOkVsKHQsdDApO2JyZWFrO2Nhc2UgMTpWdih0LGMwLFUwKTticmVhaztjYXNlIDI6VnYodCxjMCxVMCk7YnJlYWs7Y2FzZSAzOnRbOV08KEcrdW4obzApfDApP1Z2KHQsYzAsVTApOkVsKHQsdDApO2JyZWFrO2Nhc2UgNDp0WzExXXx8ISh0WzldPChHK3VuKG8wKXwwKXx8KCh0WzZdLVUwfDApK3cwfDApPHRbMTBdKT9FbCh0LHQwKTpWdih0LGMwLFUwKTticmVhaztkZWZhdWx0OkVsKHQsdDApfX1icmVhaztjYXNlIDI6dmFyIGI9dFs2XS10WzldfDAsUjA9Y1syXSxYPWNbMV0sczA9SHYodFszXSk7aWYoczApe3ZhciBocj1zMFsxXVsxXSxBcj1oclsxXTtpZihBcilmb3IodmFyIG9yPWhyWzFdLFcwPUFyWzFdOzspe2lmKG9yKXt2YXIgTHI9b3JbMV0sVHI9b3JbMl07aWYoIShiPD1Mcikpe3ZhciBvcj1Ucjtjb250aW51ZX12YXIgSHI9THJ9ZWxzZSB2YXIgSHI9VzA7dmFyIE9yPUhyO2JyZWFrfWVsc2UgdmFyIE9yPWI7dmFyIGZyPU9yLWJ8MDswPD1mcj9FbCh0LFswLGpvMCxmcitYfDAsUm8wXSk6VnYodCxbMCxNbzAsT3IrUjB8MCxHbzBdLHRbNl0pfWJyZWFrO2Nhc2UgMzp2YXIgUnI9Y1syXSxXcj1jWzFdO2lmKHRbOF08KHRbNl0tdFs5XXwwKSl7dmFyIEpyPUh2KHRbMl0pO2lmKEpyKXt2YXIgYXI9SnJbMV0sX3I9YXJbMl0sSXI9YXJbMV07dFs5XTxfciYmISgzPChJci0xfDApPj4+MCkmJk96KHQsX3IpfWVsc2UgRHAodCl9dmFyIGZlPXRbOV0tV3J8MCx2MD1Scj09PTE/MTp0WzldPEc/UnI6NTt3MShbMCx2MCxmZV0sdFsyXSk7YnJlYWs7Y2FzZSA0OncxKGNbMV0sdFszXSk7YnJlYWs7ZGVmYXVsdDp2YXIgUD1jWzFdO0VOKHQsdSh0WzI0XSxQKSksdzEoUCx0WzVdKX10WzEyXT1wK3RbMTJdfDA7Y29udGludWV9dGhyb3cgSHJlfXJldHVybiBUfXJldHVybiAwfX1mdW5jdGlvbiBBeih0LG4pe3JldHVybiB3bCh0LG4pLEl6KHQpfWZ1bmN0aW9uIE56KHQsbixlKXtyZXR1cm4gQXoodCxbMCxuLFswLGVdLG5dKX1mdW5jdGlvbiBTTih0KXtyZXR1cm4gaGwodCksdzEoWzAsLTEsWzAsZ3osTG8wLDBdXSx0KX1mdW5jdGlvbiBnTih0LG4pe3ZhciBlPUh2KHRbMV0pO2lmKGUpe3ZhciBpPWVbMV0seD1pWzJdLGM9eFsxXTtpZihpWzFdPHRbMTJdKXJldHVybiBTTih0WzFdKTt2YXIgcz14WzJdO2lmKHR5cGVvZiBzIT1cIm51bWJlclwiKXN3aXRjaChzWzBdKXtjYXNlIDM6dmFyIHA9MS1uLHk9cCYmKHhbMV09dFsxM10rY3wwLFV2KHRbMV0pLDApO3JldHVybiB5O2Nhc2UgMTpjYXNlIDI6dmFyIFQ9biYmKHhbMV09dFsxM10rY3wwLFV2KHRbMV0pLDApO3JldHVybiBUfXJldHVybiAwfXJldHVybiAwfWZ1bmN0aW9uIEN6KHQsbixlKXtyZXR1cm4gd2wodCxlKSxuJiZnTih0LDEpLHcxKFswLHRbMTNdLGVdLHRbMV0pfWZ1bmN0aW9uIFB6KHQsbixlKXtpZih0WzE0XT10WzE0XSsxfDAsdFsxNF08dFsxNV0pcmV0dXJuIEN6KHQsMCxbMCwtdFsxM118MCxbMyxuLGVdLDBdKTt2YXIgaT10WzE0XT09PXRbMTVdPzE6MDtpZihpKXt2YXIgeD10WzE2XTtyZXR1cm4gTnoodCx1bih4KSx4KX1yZXR1cm4gaX1mdW5jdGlvbiBEeih0LG4pe3ZhciBlPTE8dFsxNF0/MTowO2lmKGUpe3RbMTRdPHRbMTVdJiYod2wodCxbMCxQcCwxLDBdKSxnTih0LDEpLGdOKHQsMCkpLHRbMTRdPXRbMTRdLTF8MDt2YXIgaT0wfWVsc2UgdmFyIGk9ZTtyZXR1cm4gaX1mdW5jdGlvbiBMeih0LG4pe3RbMjNdJiZ3bCh0LFswLFBwLDUsMF0pO3ZhciBlPXRbMjJdO2lmKGUpe3ZhciBpPVV2KHRbNF0pO2lmKGkpcmV0dXJuIHUodFsyN10saVsxXSk7dmFyIHg9MH1lbHNlIHZhciB4PWU7cmV0dXJuIHh9ZnVuY3Rpb24gRk4odCxuKXt2YXIgZT10WzRdO2Z1bmN0aW9uIGkoeCl7cmV0dXJuIEx6KHQsMCl9Zm9yKER1KGksZVsxXSk7Oyl7aWYoMTx0WzE0XSl7RHoodCwwKTtjb250aW51ZX1yZXR1cm4gdFsxM109RnosSXoodCksbiYmRHAodCksdFsxMl09MSx0WzEzXT0xLG9OKHRbMjhdKSxTTih0WzFdKSxobCh0WzJdKSxobCh0WzNdKSxobCh0WzRdKSxobCh0WzVdKSx0WzEwXT0wLHRbMTRdPTAsdFs5XT10WzZdLFB6KHQsMCwzKX19ZnVuY3Rpb24gVE4odCxuLGUpe3ZhciBpPXRbMTRdPHRbMTVdPzE6MDtyZXR1cm4gaSYmTnoodCxuLGUpfWZ1bmN0aW9uIFJ6KHQsbixlKXtyZXR1cm4gVE4odCxuLGUpfWZ1bmN0aW9uIGcodCxuKXtyZXR1cm4gUnoodCx1bihuKSxuKX1mdW5jdGlvbiBTbCh0LG4pe3JldHVybiBSeih0LDEsVHAoMSxuKSl9ZnVuY3Rpb24gZ2wodCxuKXtyZXR1cm4gRk4odCwwKSx1KHRbMThdLDApfXZhciBqej1UcCg4MCwzMik7ZnVuY3Rpb24gR3oodCxuKXtmb3IodmFyIGU9bjs7KXt2YXIgaT0wPGU/MTowO2lmKGkpe2lmKDgwPGUpe3VyKHRbMTddLGp6LDAsODApO3ZhciBlPWUrZVh8MDtjb250aW51ZX1yZXR1cm4gdXIodFsxN10sanosMCxlKX1yZXR1cm4gaX19ZnVuY3Rpb24gdGVlKHQpe3JldHVybiB0WzFdPT09d04/VGUoT28wLFRlKHRbMl0sVG8wKSk6SW8wfWZ1bmN0aW9uIHVlZSh0KXtyZXR1cm4gdFsxXT09PXdOP1RlKGdvMCxUZSh0WzJdLFNvMCkpOkZvMH1mdW5jdGlvbiBpZWUodCl7cmV0dXJuIDB9ZnVuY3Rpb24gZmVlKHQpe3JldHVybiAwfWZ1bmN0aW9uIE16KHQsbil7ZnVuY3Rpb24gZSh3KXtyZXR1cm4gMH1mdW5jdGlvbiBpKHcpe3JldHVybiAwfWZ1bmN0aW9uIHgodyl7cmV0dXJuIDB9dmFyIGM9bXooMCkscz1bMCxneix3bzAsMF07YU4ocyxjKTt2YXIgcD15bCgwKTtTTihwKSx3MShbMCwxLHNdLHApO3ZhciB5PXlsKDApLFQ9eWwoMCksRT15bCgwKSxkPVswLHAseWwoMCksRSxULHksNzgsMTAsNjgsNzgsMCwxLDEsMSwxLGpyZSxFbzAsdCxuLHgsaSxlLDAsMCx0ZWUsdWVlLGllZSxmZWUsY107cmV0dXJuIGRbMTldPWZ1bmN0aW9uKHcpe3JldHVybiB1cihkWzE3XSxBbzAsMCwxKX0sZFsyMF09ZnVuY3Rpb24odyl7cmV0dXJuIEd6KGQsdyl9LGRbMjFdPWZ1bmN0aW9uKHcpe3JldHVybiBHeihkLHcpfSxkfWZ1bmN0aW9uIEJ6KHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHAxKHQpfXJldHVybiBNeihmdW5jdGlvbihlLGkseCl7cmV0dXJuIDA8PWkmJjA8PXgmJiEoKHVuKGUpLXh8MCk8aSk/ekEodCxlLGkseCk6UHUodGkwKX0sbil9ZnVuY3Rpb24gT04odCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gMH1yZXR1cm4gTXooZnVuY3Rpb24oZSxpLHgpe3JldHVybiBfeih0LGUsaSx4KX0sbil9dmFyIHhlZT1JSTtmdW5jdGlvbiBxeih0KXtyZXR1cm4gJG4oeGVlKX12YXIgb2VlPXF6KDApLGFlZT1CeihNcmUpLGNlZT1CeihQYyk7T04ob2VlKTtmdW5jdGlvbiBVeih0LG4pe3ZhciBlPSRuKDE2KSxpPU9OKGUpO28odCxpLG4pLGdsKGksMCk7dmFyIHg9ZVsyXTtpZigyPD14KXt2YXIgYz14LTJ8MCxzPTE7cmV0dXJuIDA8PWMmJiEoKGVbMl0tY3wwKTwxKT9xdihlWzFdLHMsYyk6UHUoUmkwKX1yZXR1cm4gTXQoZSl9ZnVuY3Rpb24gWDcodCxuKXt2YXIgZT0wO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXJldHVybiAwO3N3aXRjaChuWzBdKXtjYXNlIDA6dmFyIGk9blsyXTtpZihYNyh0LG5bMV0pLHR5cGVvZiBpPT1cIm51bWJlclwiKXN3aXRjaChpKXtjYXNlIDA6cmV0dXJuIER6KHQsMCk7Y2FzZSAxOnJldHVybiBMeih0LDApO2Nhc2UgMjpyZXR1cm4gZ2wodCwwKTtjYXNlIDM6dmFyIHg9dFsxNF08dFsxNV0/MTowO3JldHVybiB4JiZBeih0LFswLFBwLDMsMF0pO2Nhc2UgNDpyZXR1cm4gRk4odCwxKSx1KHRbMThdLDApO2Nhc2UgNTpyZXR1cm4gU2wodCw2NCk7ZGVmYXVsdDpyZXR1cm4gU2wodCwzNyl9ZWxzZSBzd2l0Y2goaVswXSl7Y2FzZSAwOnZhciBjPVswLERvMCxpWzJdLFBvMF0scz10WzE0XTx0WzE1XT8xOjAscD1bMCxDbzAsaVszXSxObzBdLHk9Y1szXSxUPWNbMl0sRT1jWzFdO3JldHVybiBzJiZDeih0LDEsWzAsLXRbMTNdfDAsWzEsYyxwXSwodW4oRSkrVHwwKSt1bih5KXwwXSk7Y2FzZSAxOnJldHVybiAwO2RlZmF1bHQ6dmFyIGQ9aVsxXTtyZXR1cm4gU2wodCw2NCksU2wodCxkKX1jYXNlIDE6dmFyIHc9blsyXSxHPW5bMV07aWYod1swXT09PTApe3ZhciBBPXdbMV07WDcodCxHKTt2YXIgUz1bMCx3TixVeihYNyxBKV07dFsyMl0mJih3MShTLHRbNF0pLHUodFsyNl0sUykpO3ZhciBNPXRbMjNdO3JldHVybiBNJiZ3bCh0LFswLFBwLFs1LFNdLDBdKX12YXIgSz13WzFdO1g3KHQsRyk7dmFyIFY9UXJlKFV6KFg3LEspKTtyZXR1cm4gUHoodCxWWzFdLFZbMl0pO2Nhc2UgMjp2YXIgZjA9blsxXSxtMD0wO2lmKHR5cGVvZiBmMCE9XCJudW1iZXJcIiYmZjBbMF09PT0wKXt2YXIgazA9ZjBbMl0sZzA9MDtpZih0eXBlb2YgazAhPVwibnVtYmVyXCImJmswWzBdPT09MSl7dmFyIGUwPW5bMl0seDA9azBbMl0sbD1mMFsxXTttMD0xLGcwPTF9fWlmKCFtMCl7dmFyIGMwPW5bMl0sdDA9ZjA7ZT0yfWJyZWFrO2Nhc2UgMzp2YXIgbzA9blsxXSx3MD0wO2lmKHR5cGVvZiBvMCE9XCJudW1iZXJcIiYmbzBbMF09PT0wKXt2YXIgXzA9bzBbMl0sRTA9MDtpZih0eXBlb2YgXzAhPVwibnVtYmVyXCImJl8wWzBdPT09MSl7dmFyIFUwPW5bMl0sYj1fMFsyXSxSMD1vMFsxXTtlPTEsdzA9MSxFMD0xfX1pZighdzApe3ZhciBYPW5bMl0sczA9bzA7ZT0zfWJyZWFrO2Nhc2UgNDp2YXIgaHI9blsxXSxBcj0wO2lmKHR5cGVvZiBociE9XCJudW1iZXJcIiYmaHJbMF09PT0wKXt2YXIgb3I9aHJbMl0sVzA9MDtpZih0eXBlb2Ygb3IhPVwibnVtYmVyXCImJm9yWzBdPT09MSl7dmFyIGUwPW5bMl0seDA9b3JbMl0sbD1oclsxXTtBcj0xLFcwPTF9fWlmKCFBcil7dmFyIGMwPW5bMl0sdDA9aHI7ZT0yfWJyZWFrO2Nhc2UgNTp2YXIgTHI9blsxXSxUcj0wO2lmKHR5cGVvZiBMcj09XCJudW1iZXJcInx8THJbMF0hPT0wKVRyPTE7ZWxzZXt2YXIgSHI9THJbMl0sT3I9MDtpZih0eXBlb2YgSHIhPVwibnVtYmVyXCImJkhyWzBdPT09MSl7dmFyIFUwPW5bMl0sYj1IclsyXSxSMD1MclsxXTtlPTEsT3I9MX1Pcnx8KFRyPTEpfWlmKFRyKXt2YXIgWD1uWzJdLHMwPUxyO2U9M31icmVhaztjYXNlIDY6dmFyIGZyPW5bMl07cmV0dXJuIFg3KHQsblsxXSksdShmcix0KTtjYXNlIDc6cmV0dXJuIFg3KHQsblsxXSksZ2wodCwwKTtkZWZhdWx0OnZhciBScj1uWzJdO3JldHVybiBYNyh0LG5bMV0pLFB1KFJyKX1zd2l0Y2goZSl7Y2FzZSAwOnJldHVybiBYNyh0LGwpLFROKHQseDAsZTApO2Nhc2UgMTpyZXR1cm4gWDcodCxSMCksVE4odCxiLFRwKDEsVTApKTtjYXNlIDI6cmV0dXJuIFg3KHQsdDApLGcodCxjMCk7ZGVmYXVsdDpyZXR1cm4gWDcodCxzMCksU2wodCxYKX19ZnVuY3Rpb24gZih0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGU9blsxXSxpPTA7cmV0dXJuIFhuKGZ1bmN0aW9uKHgpe3JldHVybiBYNyh0LHgpLDB9LGksZSl9fWZ1bmN0aW9uIEMwKHQpe3ZhciBuPXRbMV0sZT1xeigwKSxpPU9OKGUpO3JldHVybiBYbihmdW5jdGlvbih4KXtYNyhpLHgpLEZOKGksMCk7dmFyIGM9TXQoZSk7cmV0dXJuIGVbMl09MCxlWzFdPWVbNF0sZVszXT1iNyhlWzFdKSxjfSwwLG4pfWZ6KGZ1bmN0aW9uKHQpe3JldHVybiBnbChhZWUsMCksZ2woY2VlLDApfSk7ZnVuY3Rpb24gc2VlKHQsbil7dmFyIGU9aDEobik9PT13dD9uOm5bMV07cmV0dXJuIFdBKHQsZSl9dmFyIHZlZT0yO2Z1bmN0aW9uIGxlZSh0KXt2YXIgbj1bMCwwXSxlPXVuKHQpLTF8MCxpPTA7aWYoIShlPDApKWZvcih2YXIgeD1pOzspe3ZhciBjPUl0KHQseCk7blsxXT0oeTgqblsxXXwwKStjfDA7dmFyIHM9eCsxfDA7aWYoZSE9PXgpe3ZhciB4PXM7Y29udGludWV9YnJlYWt9blsxXT1uWzFdJm1IO3ZhciBwPTEwNzM3NDE4MjM8blsxXT9uWzFdKzIxNDc0ODM2NDh8MDpuWzFdO3JldHVybiBwfXZhciBicz14TihbMCxFZV0pLEUxPXhOKFswLEVlXSksSXM9eE4oWzAsQWNdKSxIej1LQSgwLDApLGJlZT1bMCwwXTtmdW5jdGlvbiBYeih0KXtyZXR1cm4gMjx0P1h6KCh0KzF8MCkvMnwwKSoyfDA6dH1mdW5jdGlvbiBZeih0KXtiZWVbMV0rKzt2YXIgbj10Lmxlbmd0aC0xLGU9R3YoKG4qMnwwKSsyfDAsSHopO3R1KGUsMClbMV09bjt2YXIgaT0oKFh6KG4pKjMyfDApLzh8MCktMXwwO3R1KGUsMSlbMl09aTt2YXIgeD1uLTF8MCxjPTA7aWYoISh4PDApKWZvcih2YXIgcz1jOzspe3ZhciBwPShzKjJ8MCkrM3wwLHk9dHUodCxzKVsxK3NdO3R1KGUscClbMStwXT15O3ZhciBUPXMrMXwwO2lmKHghPT1zKXt2YXIgcz1UO2NvbnRpbnVlfWJyZWFrfXJldHVyblswLHZlZSxlLEUxWzFdLElzWzFdLDAsMCxic1sxXSwwXX1mdW5jdGlvbiBJTih0LG4pe3ZhciBlPXRbMl0ubGVuZ3RoLTEsaT1lPG4/MTowO2lmKGkpe3ZhciB4PUd2KG4sSHopLGM9dFsyXSxzPTA7MDw9ZSYmISgoYy5sZW5ndGgtMS1lfDApPDApJiYhKCh4Lmxlbmd0aC0xLWV8MCk8MCkmJihLdTAoYywwLHgsMCxlKSxzPTEpLHN8fFB1KGRpMCksdFsyXT14O3ZhciBwPTB9ZWxzZSB2YXIgcD1pO3JldHVybiBwfXZhciBWej1bMCwwXSxwZWU9WzAsMF07ZnVuY3Rpb24gQU4odCl7dmFyIG49dFsyXS5sZW5ndGgtMTtyZXR1cm4gSU4odCxuKzF8MCksbn1mdW5jdGlvbiBGbCh0LG4pe3RyeXt2YXIgZT1vKEUxWzI4XSxuLHRbM10pO3JldHVybiBlfWNhdGNoKHgpe2lmKHg9RXQoeCkseD09PUp0KXt2YXIgaT1BTih0KTtyZXR1cm4gdFszXT11cihFMVs0XSxuLGksdFszXSksdFs0XT11cihJc1s0XSxpLDEsdFs0XSksaX10aHJvdyB4fX1mdW5jdGlvbiBOTih0LG4pe3JldHVybiBPcChmdW5jdGlvbihlKXtyZXR1cm4gRmwodCxlKX0sbil9ZnVuY3Rpb24genoodCxuLGUpe3JldHVybiBwZWVbMV0rKyxvKElzWzI4XSxuLHRbNF0pPyhJTih0LG4rMXwwKSx0dSh0WzJdLG4pWzErbl09ZSwwKToodFs2XT1bMCxbMCxuLGVdLHRbNl1dLDApfWZ1bmN0aW9uIG1lZSh0LG4pe3RyeXt2YXIgZT1VcmUobix0WzZdKTtyZXR1cm4gZX1jYXRjaChpKXtpZihpPUV0KGkpLGk9PT1KdClyZXR1cm4gdHUodFsyXSxuKVsxK25dO3Rocm93IGl9fWZ1bmN0aW9uIENOKHQpe2lmKHQ9PT0wKXJldHVybiAwO2Zvcih2YXIgbj10Lmxlbmd0aC0xLTF8MCxlPTA7Oyl7aWYoMDw9bil7dmFyIGk9WzAsdFsxK25dLGVdLG49bi0xfDAsZT1pO2NvbnRpbnVlfXJldHVybiBlfX1mdW5jdGlvbiBfZWUodCl7dmFyIG49dFsxXTtyZXR1cm4gdFsxXT1uKzF8MCxufWZ1bmN0aW9uIFBOKHQsbil7dHJ5e3ZhciBlPW8oYnNbMjhdLG4sdFs3XSk7cmV0dXJuIGV9Y2F0Y2goeCl7aWYoeD1FdCh4KSx4PT09SnQpe3ZhciBpPV9lZSh0KTtyZXR1cm4gbjAobixYbzApJiYodFs3XT11cihic1s0XSxuLGksdFs3XSkpLGl9dGhyb3cgeH19ZnVuY3Rpb24gRE4odCl7cmV0dXJuIFJWKHQsMCk/WzBdOnR9ZnVuY3Rpb24geWVlKHQsbil7dHJ5e3ZhciBlPW8oYnNbMjhdLG4sdFs3XSk7cmV0dXJuIGV9Y2F0Y2goaSl7dGhyb3cgaT1FdChpKSxpPT09SnQ/WzAsU24sSG8wXTppfX1mdW5jdGlvbiBMTih0LG4sZSxpLHgsYyl7dmFyIHM9eFsyXSxwPXhbNF0seT1DTihuKSxUPUNOKGUpLEU9Q04oaSksZD1kMShmdW5jdGlvbihiKXtyZXR1cm4gRmwodCxiKX0sVCksdz1kMShmdW5jdGlvbihiKXtyZXR1cm4gRmwodCxiKX0sRSk7dFs1XT1bMCxbMCx0WzNdLHRbNF0sdFs2XSx0WzddLGQseV0sdFs1XV07dmFyIEc9YnNbMV0sQT10WzddO2Z1bmN0aW9uIFMoYixSMCxYKXtyZXR1cm4gZk4oYix5KT91cihic1s0XSxiLFIwLFgpOlh9dFs3XT11cihic1sxM10sUyxBLEcpO3ZhciBNPVswLEUxWzFdXSxLPVswLElzWzFdXTtjeihmdW5jdGlvbihiLFIwKXtNWzFdPXVyKEUxWzRdLGIsUjAsTVsxXSk7dmFyIFg9S1sxXTt0cnl7dmFyIHMwPW8oSXNbMjhdLFIwLHRbNF0pLGhyPXMwfWNhdGNoKEFyKXtpZihBcj1FdChBciksQXIhPT1KdCl0aHJvdyBBcjt2YXIgaHI9MX1yZXR1cm4gS1sxXT11cihJc1s0XSxSMCxocixYKSwwfSxFLHcpLGN6KGZ1bmN0aW9uKGIsUjApe3JldHVybiBNWzFdPXVyKEUxWzRdLGIsUjAsTVsxXSksS1sxXT11cihJc1s0XSxSMCwwLEtbMV0pLDB9LFQsZCksdFszXT1NWzFdLHRbNF09S1sxXTt2YXIgVj0wLGYwPXRbNl07dFs2XT1pTihmdW5jdGlvbihiLFIwKXtyZXR1cm4gZk4oYlsxXSxkKT9SMDpbMCxiLFIwXX0sZjAsVik7dmFyIG0wPWM/byhzLHQscCk6dShzLHQpLGswPWJsKHRbNV0pLGcwPWswWzZdLGUwPWswWzVdLHgwPWswWzRdLGw9azBbM10sYzA9azBbMl0sdDA9azBbMV07dFs1XT1heih0WzVdKSx0WzddPWxlKGZ1bmN0aW9uKGIsUjApe3ZhciBYPW8oYnNbMjhdLFIwLHRbN10pO3JldHVybiB1cihic1s0XSxSMCxYLGIpfSx4MCxnMCksdFszXT10MCx0WzRdPWMwO3ZhciBvMD10WzZdO3RbNl09aU4oZnVuY3Rpb24oYixSMCl7cmV0dXJuIGZOKGJbMV0sZTApP1IwOlswLGIsUjBdfSxvMCxsKTt2YXIgdzA9MCxfMD1ETihpKSxFMD1bMCxPcChmdW5jdGlvbihiKXtyZXR1cm4gbWVlKHQsRmwodCxiKSl9LF8wKSx3MF0sVTA9RE4obik7cmV0dXJuIFd1MChbMCxbMCxtMF0sWzAsT3AoZnVuY3Rpb24oYil7cmV0dXJuIHllZSh0LGIpfSxVMCksRTBdXSl9ZnVuY3Rpb24gUnAodCxuKXtpZih0PT09MCl2YXIgZT1ZeihbMF0pO2Vsc2V7dmFyIGk9WXooT3AobGVlLHQpKSx4PXQubGVuZ3RoLTEtMXwwLGM9MDtpZighKHg8MCkpZm9yKHZhciBzPWM7Oyl7dmFyIHA9KHMqMnwwKSsyfDA7aVszXT11cihFMVs0XSx0WzErc10scCxpWzNdKSxpWzRdPXVyKElzWzRdLHAsMSxpWzRdKTt2YXIgeT1zKzF8MDtpZih4IT09cyl7dmFyIHM9eTtjb250aW51ZX1icmVha312YXIgZT1pfXZhciBUPXUobixlKTtyZXR1cm4gVnpbMV09KFZ6WzFdK2VbMV18MCktMXwwLGVbOF09eWUoZVs4XSksSU4oZSwzKygodHUoZVsyXSwxKVsyXSoxNnwwKS8zMnwwKXwwKSxbMCx1KFQsMCksbixULDBdfWZ1bmN0aW9uIGpwKHQsbil7aWYodClyZXR1cm4gdDt2YXIgZT1LQSh3dCxuWzFdKTtyZXR1cm4gZVsxXT1uWzJdLEg3MChlKX1mdW5jdGlvbiBSTih0LG4sZSl7aWYodClyZXR1cm4gbjt2YXIgaT1lWzhdO2lmKGkhPT0wKWZvcih2YXIgeD1pOzspe2lmKHgpe3ZhciBjPXhbMl07dSh4WzFdLG4pO3ZhciB4PWM7Y29udGludWV9YnJlYWt9cmV0dXJuIG59ZnVuY3Rpb24gR3AodCl7dmFyIG49QU4odCksZT0wO2lmKChuJTJ8MCkhPT0wJiYhKCgyKygodHUodFsyXSwxKVsyXSoxNnwwKS8zMnwwKXwwKTxuKSl7dmFyIGk9QU4odCk7ZT0xfWlmKCFlKXZhciBpPW47cmV0dXJuIHR1KHRbMl0saSlbMStpXT0wLGl9ZnVuY3Rpb24gak4odCxuKXtmb3IodmFyIGU9WzAsMF0saT1uLmxlbmd0aC0xOzspe2lmKGVbMV08aSl7dmFyIHg9ZVsxXSxjPXR1KG4seClbMSt4XSxzPWZ1bmN0aW9uKHAwKXtlWzFdKys7dmFyIGIwPWVbMV07cmV0dXJuIHR1KG4sYjApWzErYjBdfSxwPXMoMCk7aWYodHlwZW9mIHA9PVwibnVtYmVyXCIpc3dpdGNoKHApe2Nhc2UgMDp2YXIgeT1zKDApLFo9ZnVuY3Rpb24oYjApe3JldHVybiBmdW5jdGlvbihPMCl7cmV0dXJuIGIwfX0oeSk7YnJlYWs7Y2FzZSAxOnZhciBUPXMoMCksWj1mdW5jdGlvbihiMCl7cmV0dXJuIGZ1bmN0aW9uKE8wKXtyZXR1cm4gTzBbMStiMF19fShUKTticmVhaztjYXNlIDI6dmFyIEU9cygwKSxkPXMoMCksWj1mdW5jdGlvbihiMCxPMCl7cmV0dXJuIGZ1bmN0aW9uKE0wKXtyZXR1cm4gTTBbMStiMF1bMStPMF19fShFLGQpO2JyZWFrO2Nhc2UgMzp2YXIgdz1zKDApLFo9ZnVuY3Rpb24oYjApe3JldHVybiBmdW5jdGlvbihPMCl7cmV0dXJuIHUoTzBbMV1bMStiMF0sTzApfX0odyk7YnJlYWs7Y2FzZSA0OnZhciBHPXMoMCksWj1mdW5jdGlvbihiMCl7cmV0dXJuIGZ1bmN0aW9uKE8wLE0wKXtyZXR1cm4gTzBbMStiMF09TTAsMH19KEcpO2JyZWFrO2Nhc2UgNTp2YXIgQT1zKDApLFM9cygwKSxaPWZ1bmN0aW9uKGIwLE8wKXtyZXR1cm4gZnVuY3Rpb24oTTApe3JldHVybiB1KGIwLE8wKX19KEEsUyk7YnJlYWs7Y2FzZSA2OnZhciBNPXMoMCksSz1zKDApLFo9ZnVuY3Rpb24oYjAsTzApe3JldHVybiBmdW5jdGlvbihNMCl7cmV0dXJuIHUoYjAsTTBbMStPMF0pfX0oTSxLKTticmVhaztjYXNlIDc6dmFyIFY9cygwKSxmMD1zKDApLG0wPXMoMCksWj1mdW5jdGlvbihiMCxPMCxNMCl7cmV0dXJuIGZ1bmN0aW9uKGVyKXtyZXR1cm4gdShiMCxlclsxK08wXVsxK00wXSl9fShWLGYwLG0wKTticmVhaztjYXNlIDg6dmFyIGswPXMoMCksZzA9cygwKSxaPWZ1bmN0aW9uKGIwLE8wKXtyZXR1cm4gZnVuY3Rpb24oTTApe3JldHVybiB1KGIwLHUoTTBbMV1bMStPMF0sTTApKX19KGswLGcwKTticmVhaztjYXNlIDk6dmFyIGUwPXMoMCkseDA9cygwKSxsPXMoMCksWj1mdW5jdGlvbihiMCxPMCxNMCl7cmV0dXJuIGZ1bmN0aW9uKGVyKXtyZXR1cm4gbyhiMCxPMCxNMCl9fShlMCx4MCxsKTticmVhaztjYXNlIDEwOnZhciBjMD1zKDApLHQwPXMoMCksbzA9cygwKSxaPWZ1bmN0aW9uKGIwLE8wLE0wKXtyZXR1cm4gZnVuY3Rpb24oZXIpe3JldHVybiBvKGIwLE8wLGVyWzErTTBdKX19KGMwLHQwLG8wKTticmVhaztjYXNlIDExOnZhciB3MD1zKDApLF8wPXMoMCksRTA9cygwKSxVMD1zKDApLFo9ZnVuY3Rpb24oYjAsTzAsTTAsZXIpe3JldHVybiBmdW5jdGlvbih5cil7cmV0dXJuIG8oYjAsTzAseXJbMStNMF1bMStlcl0pfX0odzAsXzAsRTAsVTApO2JyZWFrO2Nhc2UgMTI6dmFyIGI9cygwKSxSMD1zKDApLFg9cygwKSxaPWZ1bmN0aW9uKGIwLE8wLE0wKXtyZXR1cm4gZnVuY3Rpb24oZXIpe3JldHVybiBvKGIwLE8wLHUoZXJbMV1bMStNMF0sZXIpKX19KGIsUjAsWCk7YnJlYWs7Y2FzZSAxMzp2YXIgczA9cygwKSxocj1zKDApLEFyPXMoMCksWj1mdW5jdGlvbihiMCxPMCxNMCl7cmV0dXJuIGZ1bmN0aW9uKGVyKXtyZXR1cm4gbyhiMCxlclsxK08wXSxNMCl9fShzMCxocixBcik7YnJlYWs7Y2FzZSAxNDp2YXIgb3I9cygwKSxXMD1zKDApLExyPXMoMCksVHI9cygwKSxaPWZ1bmN0aW9uKGIwLE8wLE0wLGVyKXtyZXR1cm4gZnVuY3Rpb24oeXIpe3JldHVybiBvKGIwLHlyWzErTzBdWzErTTBdLGVyKX19KG9yLFcwLExyLFRyKTticmVhaztjYXNlIDE1OnZhciBIcj1zKDApLE9yPXMoMCksZnI9cygwKSxaPWZ1bmN0aW9uKGIwLE8wLE0wKXtyZXR1cm4gZnVuY3Rpb24oZXIpe3JldHVybiBvKGIwLHUoZXJbMV1bMStPMF0sZXIpLE0wKX19KEhyLE9yLGZyKTticmVhaztjYXNlIDE2OnZhciBScj1zKDApLFdyPXMoMCksWj1mdW5jdGlvbihiMCxPMCl7cmV0dXJuIGZ1bmN0aW9uKE0wKXtyZXR1cm4gbyhNMFsxXVsxK2IwXSxNMCxPMCl9fShScixXcik7YnJlYWs7Y2FzZSAxNzp2YXIgSnI9cygwKSxhcj1zKDApLFo9ZnVuY3Rpb24oYjAsTzApe3JldHVybiBmdW5jdGlvbihNMCl7cmV0dXJuIG8oTTBbMV1bMStiMF0sTTAsTTBbMStPMF0pfX0oSnIsYXIpO2JyZWFrO2Nhc2UgMTg6dmFyIF9yPXMoMCksSXI9cygwKSxmZT1zKDApLFo9ZnVuY3Rpb24oYjAsTzAsTTApe3JldHVybiBmdW5jdGlvbihlcil7cmV0dXJuIG8oZXJbMV1bMStiMF0sZXIsZXJbMStPMF1bMStNMF0pfX0oX3IsSXIsZmUpO2JyZWFrO2Nhc2UgMTk6dmFyIHYwPXMoMCksUD1zKDApLFo9ZnVuY3Rpb24oYjAsTzApe3JldHVybiBmdW5jdGlvbihNMCl7dmFyIGVyPXUoTTBbMV1bMStPMF0sTTApO3JldHVybiBvKE0wWzFdWzErYjBdLE0wLGVyKX19KHYwLFApO2JyZWFrO2Nhc2UgMjA6dmFyIEw9cygwKSxRPXMoMCk7R3AodCk7dmFyIFo9ZnVuY3Rpb24oYjAsTzApe3JldHVybiBmdW5jdGlvbihNMCl7cmV0dXJuIHUoUWUoTzAsYjAsMCksTzApfX0oTCxRKTticmVhaztjYXNlIDIxOnZhciBpMD1zKDApLGwwPXMoMCk7R3AodCk7dmFyIFo9ZnVuY3Rpb24oYjAsTzApe3JldHVybiBmdW5jdGlvbihNMCl7dmFyIGVyPU0wWzErTzBdO3JldHVybiB1KFFlKGVyLGIwLDApLGVyKX19KGkwLGwwKTticmVhaztjYXNlIDIyOnZhciBTMD1zKDApLFQwPXMoMCkscnI9cygwKTtHcCh0KTt2YXIgWj1mdW5jdGlvbihiMCxPMCxNMCl7cmV0dXJuIGZ1bmN0aW9uKGVyKXt2YXIgeXI9ZXJbMStPMF1bMStNMF07cmV0dXJuIHUoUWUoeXIsYjAsMCkseXIpfX0oUzAsVDAscnIpO2JyZWFrO2RlZmF1bHQ6dmFyIEwwPXMoMCksQj1zKDApO0dwKHQpO3ZhciBaPWZ1bmN0aW9uKGIwLE8wKXtyZXR1cm4gZnVuY3Rpb24oTTApe3ZhciBlcj11KE0wWzFdWzErTzBdLE0wKTtyZXR1cm4gdShRZShlcixiMCwwKSxlcil9fShMMCxCKX1lbHNlIHZhciBaPXA7enoodCxjLFopLGVbMV0rKztjb250aW51ZX1yZXR1cm4gMH19ZnVuY3Rpb24gS3oodCxuKXt2YXIgZT1uLmxlbmd0aC0xLGk9S0EoMCxlKSx4PWUtMXwwLGM9MDtpZighKHg8MCkpZm9yKHZhciBzPWM7Oyl7dmFyIHA9dHUobixzKVsxK3NdO2lmKHR5cGVvZiBwPT1cIm51bWJlclwiKXN3aXRjaChwKXtjYXNlIDA6dmFyIEU9ZnVuY3Rpb24oRyl7ZnVuY3Rpb24gQShTKXt2YXIgTT1pWzErR107aWYoQT09PU0pdGhyb3dbMCxzbCx0XTtyZXR1cm4gdShNLFMpfXJldHVybiBBfShzKTticmVhaztjYXNlIDE6dmFyIHk9W107Tih5LFskMixmdW5jdGlvbihHLEEpe3JldHVybiBmdW5jdGlvbihTKXt2YXIgTT1pWzErQV07aWYoRz09PU0pdGhyb3dbMCxzbCx0XTt2YXIgSz1oMShNKTtyZXR1cm4gbmw9PT1LP01bMV06JDI9PT1LP1ZyZShNKTpNfX0oeSxzKV0pO3ZhciBFPXk7YnJlYWs7ZGVmYXVsdDp2YXIgVD1mdW5jdGlvbihHKXt0aHJvd1swLHNsLHRdfSxFPVswLFQsVCxULDBdfWVsc2UgdmFyIEU9cFswXT09PTA/S3oodCxwWzFdKTpwWzFdO2lbMStzXT1FO3ZhciBkPXMrMXwwO2lmKHghPT1zKXt2YXIgcz1kO2NvbnRpbnVlfWJyZWFrfXJldHVybiBpfWZ1bmN0aW9uIHB1KHQsbil7cmV0dXJuIHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MD9Leih0LG5bMV0pOmtlKEtvMCl9ZnVuY3Rpb24gV3oodCxuLGUpe2lmKGgxKGUpPT09MCYmdC5sZW5ndGgtMTw9ZS5sZW5ndGgtMSl7dmFyIGk9dC5sZW5ndGgtMS0xfDAseD0wO2lmKCEoaTwwKSlmb3IodmFyIGM9eDs7KXt2YXIgcz1lWzErY10scD10dSh0LGMpWzErY107aWYodHlwZW9mIHA9PVwibnVtYmVyXCIpaWYocD09PTIpe3ZhciB5PTA7aWYoaDEocyk9PT0wJiZzLmxlbmd0aC0xPT09NClmb3IodmFyIFQ9MCxFPW5bMStjXTs7KXtFWzErVF09c1sxK1RdO3ZhciBkPVQrMXwwO2lmKFQhPT0zKXt2YXIgVD1kO2NvbnRpbnVlfWJyZWFrfWVsc2UgeT0xO2lmKHkpdGhyb3dbMCxTbixZbzBdfWVsc2UgblsxK2NdPXM7ZWxzZSBwWzBdPT09MCYmV3oocFsxXSxuWzErY10scyk7dmFyIHc9YysxfDA7aWYoaSE9PWMpe3ZhciBjPXc7Y29udGludWV9YnJlYWt9cmV0dXJuIDB9dGhyb3dbMCxTbixWbzBdfWZ1bmN0aW9uIG11KHQsbixlKXtyZXR1cm4gdHlwZW9mIHQhPVwibnVtYmVyXCImJnRbMF09PT0wP1d6KHRbMV0sbixlKTprZSh6bzApfXRyeXtXVihXbzApfWNhdGNoKHQpe2lmKHQ9RXQodCksdCE9PUp0KXRocm93IHR9dHJ5e1dWKEpvMCl9Y2F0Y2godCl7aWYodD1FdCh0KSx0IT09SnQpdGhyb3cgdH1uMChveiwkbzApJiZuMChveixabzApO2Z1bmN0aW9uIFMxKHQsbil7ZnVuY3Rpb24gZShpKXtyZXR1cm4gcWkodCxpKX1yZXR1cm4gZnc8PW4/KGUoczF8bj4+PjE4fDApLGUoanR8KG4+Pj4xMnwwKSY2MyksZShqdHwobj4+PjZ8MCkmNjMpLGUoanR8biY2MykpOkhoPD1uPyhlKGh2fG4+Pj4xMnwwKSxlKGp0fChuPj4+NnwwKSY2MyksZShqdHxuJjYzKSk6anQ8PW4/KGUocnR8bj4+PjZ8MCksZShqdHxuJjYzKSk6ZShuKX12YXIgR049ejAsaTc9bnVsbCxKej12b2lkIDA7ZnVuY3Rpb24gTXAodCl7cmV0dXJuIHQhPT1Kej8xOjB9dmFyIGhlZT1HTi5BcnJheSxNTj1bd3QscmEwLE03KDApXSxkZWU9R04uRXJyb3I7c2VlKGVhMCxbMCxNTix7fV0pO2Z1bmN0aW9uICR6KHQpe3Rocm93IHR9U3ooZnVuY3Rpb24odCl7cmV0dXJuIHRbMV09PT1NTj9bMCxCNyh0WzJdLnRvU3RyaW5nKCkpXTowfSksU3ooZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBoZWU/MDpbMCxCNyh0LnRvU3RyaW5nKCkpXX0pO3ZhciBEcj1wdShlM3IscjNyKSxSbj1wdSh0M3IsbjNyKSxCcD1wdShpM3IsdTNyKSxUbD1wdSh4M3IsZjNyKSxnMT1wdShhM3IsbzNyKSxCTj1wdShzM3IsYzNyKSxaej1wdShsM3IsdjNyKSxxTj1wdShwM3IsYjNyKSx6dj1wdShfM3IsbTNyKSxxcD1wdShoM3IseTNyKSwkZT1wdShrM3IsZDNyKSxZdT1wdShFM3IsdzNyKSxxZT1wdShnM3IsUzNyKSxVTj1wdShUM3IsRjNyKSxkaT1wdShJM3IsTzNyKSxpdT1wdShOM3IsQTNyKSxGMT1wdShQM3IsQzNyKSxBcz1wdShMM3IsRDNyKSxITj1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sUXo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sa2VlPXB1KGozcixSM3IpO04oSE4sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGo4ciksbyhmKGUpLE04cixHOHIpO3ZhciB4PWlbMV07dShmKGUpLEI4cik7dmFyIGM9MDtsZShmdW5jdGlvbih5LFQpe3kmJnUoZihlKSxSOHIpO2Z1bmN0aW9uIEUoZCl7cmV0dXJuIHUodCxkKX1yZXR1cm4gdXIoaXVbMV0sRSxlLFQpLDF9LGMseCksdShmKGUpLHE4ciksdShmKGUpLFU4ciksdShmKGUpLEg4ciksbyhmKGUpLFk4cixYOHIpO3ZhciBzPWlbMl07dShmKGUpLFY4cik7dmFyIHA9MDtyZXR1cm4gbGUoZnVuY3Rpb24oeSxUKXt5JiZ1KGYoZSksTDhyKTtmdW5jdGlvbiBFKGQpe3JldHVybiB1KHQsZCl9cmV0dXJuIHVyKGl1WzFdLEUsZSxUKSwxfSxwLHMpLHUoZihlKSx6OHIpLHUoZihlKSxLOHIpLHUoZihlKSxXOHIpLG8oZihlKSwkOHIsSjhyKSxvKG4sZSxpWzNdKSx1KGYoZSksWjhyKSx1KGYoZSksUThyKX0pLE4oUXosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oSE4sdCxuKTtyZXR1cm4gbyhDMChEOHIpLGksZSl9KSxtdShHM3IsRHIsWzAsSE4sUXpdKTt2YXIgWE49ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHJLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFVwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGVLPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihYTixmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksTjhyKSxvKG4sZSxpWzFdKSx1KGYoZSksQzhyKTt2YXIgeD1pWzJdO3JldHVybiB1cihVcCxmdW5jdGlvbihjKXtyZXR1cm4gdSh0LGMpfSxlLHgpLHUoZihlKSxQOHIpfSksTihySyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhYTix0LG4pO3JldHVybiBvKEMwKEE4ciksaSxlKX0pLE4oVXAsZnVuY3Rpb24odCxuLGUpe3UoZihuKSxfOHIpLG8oZihuKSxoOHIseThyKTt2YXIgaT1lWzFdO28oZihuKSxkOHIsaSksdShmKG4pLGs4ciksdShmKG4pLHc4ciksbyhmKG4pLFM4cixFOHIpO3ZhciB4PWVbMl07aWYoeCl7ZyhuLGc4cik7dmFyIGM9eFsxXSxzPWZ1bmN0aW9uKHksVCl7cmV0dXJuIGcoeSxtOHIpfSxwPWZ1bmN0aW9uKHkpe3JldHVybiB1KHQseSl9O1IoRHJbMV0scCxzLG4sYyksZyhuLEY4cil9ZWxzZSBnKG4sVDhyKTtyZXR1cm4gdShmKG4pLE84ciksdShmKG4pLEk4cil9KSxOKGVLLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShVcCx0KTtyZXR1cm4gbyhDMChwOHIpLGUsbil9KSxtdShNM3IsUm4sWzAsWE4sckssVXAsZUtdKTt2YXIgWU49ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sbks9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxIcD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx0Sz1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9O04oWU4sZnVuY3Rpb24odCxuLGUpe3UoZihuKSx2OHIpLG8odCxuLGVbMV0pLHUoZihuKSxsOHIpO3ZhciBpPWVbMl07cmV0dXJuIHVyKEhwLGZ1bmN0aW9uKHgpe3JldHVybiB1KHQseCl9LG4saSksdShmKG4pLGI4cil9KSxOKG5LLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShZTix0KTtyZXR1cm4gbyhDMChzOHIpLGUsbil9KSxOKEhwLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksWjRyKSxvKGYobikscjhyLFE0cik7dmFyIGk9ZVsxXTtvKGYobiksZThyLGkpLHUoZihuKSxuOHIpLHUoZihuKSx0OHIpLG8oZihuKSxpOHIsdThyKTt2YXIgeD1lWzJdO2lmKHgpe2cobixmOHIpO3ZhciBjPXhbMV0scz1mdW5jdGlvbih5LFQpe3JldHVybiBnKHksJDRyKX0scD1mdW5jdGlvbih5KXtyZXR1cm4gdSh0LHkpfTtSKERyWzFdLHAscyxuLGMpLGcobix4OHIpfWVsc2UgZyhuLG84cik7cmV0dXJuIHUoZihuKSxhOHIpLHUoZihuKSxjOHIpfSksTih0SyxmdW5jdGlvbih0LG4pe3ZhciBlPXUoSHAsdCk7cmV0dXJuIG8oQzAoSjRyKSxlLG4pfSksbXUoQjNyLEJwLFswLFlOLG5LLEhwLHRLXSk7ZnVuY3Rpb24gdUsodCxuKXt1KGYodCksRzRyKSxvKGYodCksQjRyLE00cik7dmFyIGU9blsxXTtvKGYodCkscTRyLGUpLHUoZih0KSxVNHIpLHUoZih0KSxINHIpLG8oZih0KSxZNHIsWDRyKTt2YXIgaT1uWzJdO3JldHVybiBvKGYodCksVjRyLGkpLHUoZih0KSx6NHIpLHUoZih0KSxLNHIpfXZhciBpSz1bMCx1SyxmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChXNHIpLHVLLHQpfV0sVk49ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sZks9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxYcD1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LHhLPWZ1bmN0aW9uIHQobil7cmV0dXJuIHQuZnVuKG4pfTtOKFZOLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksazRyKSxvKGYobiksRTRyLHc0ciksbyhYcCxuLGVbMV0pLHUoZihuKSxTNHIpLHUoZihuKSxnNHIpLG8oZihuKSxUNHIsRjRyKTt2YXIgaT1lWzJdO28oZihuKSxPNHIsaSksdShmKG4pLEk0ciksdShmKG4pLEE0ciksbyhmKG4pLEM0cixONHIpO3ZhciB4PWVbM107aWYoeCl7ZyhuLFA0cik7dmFyIGM9eFsxXSxzPWZ1bmN0aW9uKHksVCl7cmV0dXJuIGcoeSxkNHIpfSxwPWZ1bmN0aW9uKHkpe3JldHVybiB1KHQseSl9O1IoRHJbMV0scCxzLG4sYyksZyhuLEQ0cil9ZWxzZSBnKG4sTDRyKTtyZXR1cm4gdShmKG4pLFI0ciksdShmKG4pLGo0cil9KSxOKGZLLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShWTix0KTtyZXR1cm4gbyhDMChoNHIpLGUsbil9KSxOKFhwLGZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIG49PVwibnVtYmVyXCIpcmV0dXJuIGcodCx1NHIpO3N3aXRjaChuWzBdKXtjYXNlIDA6dShmKHQpLGk0cik7dmFyIGU9blsxXTtyZXR1cm4gbyhmKHQpLGY0cixlKSx1KGYodCkseDRyKTtjYXNlIDE6dShmKHQpLG80cik7dmFyIGk9blsxXTtyZXR1cm4gbyhmKHQpLGE0cixpKSx1KGYodCksYzRyKTtjYXNlIDI6dShmKHQpLHM0cik7dmFyIHg9blsxXTtyZXR1cm4gbyhmKHQpLHY0cix4KSx1KGYodCksbDRyKTtjYXNlIDM6dShmKHQpLGI0cik7dmFyIGM9blsxXTtyZXR1cm4gbyhmKHQpLHA0cixjKSx1KGYodCksbTRyKTtkZWZhdWx0OnJldHVybiB1KGYodCksXzRyKSxvKGlLWzFdLHQsblsxXSksdShmKHQpLHk0cil9fSksTih4SyxmdW5jdGlvbih0KXtyZXR1cm4gbyhDMCh0NHIpLFhwLHQpfSksbXUocTNyLFRsLFswLGlLLFZOLGZLLFhwLHhLXSk7dmFyIHpOPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LG9LPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07Tih6TixmdW5jdGlvbih0LG4sZSl7dShmKG4pLE1iciksbyhmKG4pLHFicixCYnIpO3ZhciBpPWVbMV07byhmKG4pLFVicixpKSx1KGYobiksSGJyKSx1KGYobiksWGJyKSxvKGYobiksVmJyLFlicik7dmFyIHg9ZVsyXTtvKGYobiksemJyLHgpLHUoZihuKSxLYnIpLHUoZihuKSxXYnIpLG8oZihuKSwkYnIsSmJyKTt2YXIgYz1lWzNdO2lmKGMpe2cobixaYnIpO3ZhciBzPWNbMV0scD1mdW5jdGlvbihULEUpe3JldHVybiBnKFQsR2JyKX0seT1mdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfTtSKERyWzFdLHkscCxuLHMpLGcobixRYnIpfWVsc2UgZyhuLHI0cik7cmV0dXJuIHUoZihuKSxlNHIpLHUoZihuKSxuNHIpfSksTihvSyxmdW5jdGlvbih0LG4pe3ZhciBlPXUoek4sdCk7cmV0dXJuIG8oQzAoamJyKSxlLG4pfSksbXUoVTNyLGcxLFswLHpOLG9LXSk7dmFyIEtOPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGFLPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihLTixmdW5jdGlvbih0LG4sZSl7dShmKG4pLGhiciksbyhmKG4pLGticixkYnIpO3ZhciBpPWVbMV07byhmKG4pLHdicixpKSx1KGYobiksRWJyKSx1KGYobiksU2JyKSxvKGYobiksRmJyLGdicik7dmFyIHg9ZVsyXTtvKGYobiksVGJyLHgpLHUoZihuKSxPYnIpLHUoZihuKSxJYnIpLG8oZihuKSxOYnIsQWJyKTt2YXIgYz1lWzNdO2lmKGMpe2cobixDYnIpO3ZhciBzPWNbMV0scD1mdW5jdGlvbihULEUpe3JldHVybiBnKFQseWJyKX0seT1mdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfTtSKERyWzFdLHkscCxuLHMpLGcobixQYnIpfWVsc2UgZyhuLERicik7cmV0dXJuIHUoZihuKSxMYnIpLHUoZihuKSxSYnIpfSksTihhSyxmdW5jdGlvbih0LG4pe3ZhciBlPXUoS04sdCk7cmV0dXJuIG8oQzAoX2JyKSxlLG4pfSksbXUoSDNyLEJOLFswLEtOLGFLXSk7dmFyIFdOPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGNLPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihXTixmdW5jdGlvbih0LG4sZSl7dShmKG4pLFFsciksbyhmKG4pLGVicixyYnIpO3ZhciBpPWVbMV07byhmKG4pLG5icixpKSx1KGYobiksdGJyKSx1KGYobiksdWJyKSxvKGYobiksZmJyLGlicik7dmFyIHg9ZVsyXTtvKGYobikseGJyLHgpLHUoZihuKSxvYnIpLHUoZihuKSxhYnIpLG8oZihuKSxzYnIsY2JyKTt2YXIgYz1lWzNdO2lmKGMpe2cobix2YnIpO3ZhciBzPWNbMV0scD1mdW5jdGlvbihULEUpe3JldHVybiBnKFQsWmxyKX0seT1mdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfTtSKERyWzFdLHkscCxuLHMpLGcobixsYnIpfWVsc2UgZyhuLGJicik7cmV0dXJuIHUoZihuKSxwYnIpLHUoZihuKSxtYnIpfSksTihjSyxmdW5jdGlvbih0LG4pe3ZhciBlPXUoV04sdCk7cmV0dXJuIG8oQzAoJGxyKSxlLG4pfSksbXUoWDNyLFp6LFswLFdOLGNLXSk7dmFyIEpOPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LHNLPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihKTixmdW5jdGlvbih0LG4sZSl7dShmKG4pLEdsciksbyhmKG4pLEJscixNbHIpO3ZhciBpPWVbMV07byhmKG4pLHFscixpKSx1KGYobiksVWxyKSx1KGYobiksSGxyKSxvKGYobiksWWxyLFhscik7dmFyIHg9ZVsyXTtpZih4KXtnKG4sVmxyKTt2YXIgYz14WzFdLHM9ZnVuY3Rpb24oeSxUKXtyZXR1cm4gZyh5LGpscil9LHA9ZnVuY3Rpb24oeSl7cmV0dXJuIHUodCx5KX07UihEclsxXSxwLHMsbixjKSxnKG4semxyKX1lbHNlIGcobixLbHIpO3JldHVybiB1KGYobiksV2xyKSx1KGYobiksSmxyKX0pLE4oc0ssZnVuY3Rpb24odCxuKXt2YXIgZT11KEpOLHQpO3JldHVybiBvKEMwKFJsciksZSxuKX0pLG11KFkzcixxTixbMCxKTixzS10pO3ZhciAkTj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx2Sz1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LFlwPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sbEs9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LFZwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGJLPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TigkTixmdW5jdGlvbih0LG4sZSl7dShmKG4pLFBsciksbyh0LG4sZVsxXSksdShmKG4pLERscik7dmFyIGk9ZVsyXTtyZXR1cm4gdXIoVnAsZnVuY3Rpb24oeCl7cmV0dXJuIHUodCx4KX0sbixpKSx1KGYobiksTGxyKX0pLE4odkssZnVuY3Rpb24odCxuKXt2YXIgZT11KCROLHQpO3JldHVybiBvKEMwKENsciksZSxuKX0pLE4oWXAsZnVuY3Rpb24odCxuKXtyZXR1cm4gbj9nKHQsQWxyKTpnKHQsTmxyKX0pLE4obEssZnVuY3Rpb24odCl7cmV0dXJuIG8oQzAoSWxyKSxZcCx0KX0pLE4oVnAsZnVuY3Rpb24odCxuLGUpe3UoZihuKSxfbHIpLG8oZihuKSxobHIseWxyKSxvKFlwLG4sZVsxXSksdShmKG4pLGRsciksdShmKG4pLGtsciksbyhmKG4pLEVscix3bHIpO3ZhciBpPWVbMl07aWYoaSl7ZyhuLFNscik7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKHAseSl7cmV0dXJuIGcocCxtbHIpfSxzPWZ1bmN0aW9uKHApe3JldHVybiB1KHQscCl9O1IoRHJbMV0scyxjLG4seCksZyhuLGdscil9ZWxzZSBnKG4sRmxyKTtyZXR1cm4gdShmKG4pLFRsciksdShmKG4pLE9scil9KSxOKGJLLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShWcCx0KTtyZXR1cm4gbyhDMChwbHIpLGUsbil9KSxtdShWM3IsenYsWzAsJE4sdkssWXAsbEssVnAsYktdKTt2YXIgWk49ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHBLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFFOPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxtSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFpOLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSx2bHIpLG8odCxlLGlbMV0pLHUoZihlKSxsbHIpO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhwKXtyZXR1cm4gdShuLHApfWZ1bmN0aW9uIHMocCl7cmV0dXJuIHUodCxwKX1yZXR1cm4gUihxcFszXSxzLGMsZSx4KSx1KGYoZSksYmxyKX0pLE4ocEssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWk4sdCxuKTtyZXR1cm4gbyhDMChzbHIpLGksZSl9KSxOKFFOLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxRMnIpLG8oZihlKSxlbHIscmxyKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBzKGQpe3JldHVybiB1KHQsZCl9UihxZVszMV0scyxjLGUseCksdShmKGUpLG5sciksdShmKGUpLHRsciksbyhmKGUpLGlscix1bHIpO3ZhciBwPWlbMl07aWYocCl7ZyhlLGZscik7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCxaMnIpfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLHhscil9ZWxzZSBnKGUsb2xyKTtyZXR1cm4gdShmKGUpLGFsciksdShmKGUpLGNscil9KSxOKG1LLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFFOLHQsbik7cmV0dXJuIG8oQzAoJDJyKSxpLGUpfSksbXUoejNyLHFwLFswLFpOLHBLLFFOLG1LXSk7dmFyIHJDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxfSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx6cD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seUs9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihyQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksSzJyKSxvKHQsZSxpWzFdKSx1KGYoZSksVzJyKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUih6cCxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLEoycil9KSxOKF9LLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHJDLHQsbik7cmV0dXJuIG8oQzAoejJyKSxpLGUpfSksTih6cCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksQTJyKSxvKGYoZSksQzJyLE4ycik7dmFyIHg9aVsxXTtpZih4KXtnKGUsUDJyKTt2YXIgYz14WzFdLHM9ZnVuY3Rpb24odyl7cmV0dXJuIHUobix3KX0scD1mdW5jdGlvbih3KXtyZXR1cm4gdSh0LHcpfTtSKFJuWzFdLHAscyxlLGMpLGcoZSxEMnIpfWVsc2UgZyhlLEwycik7dShmKGUpLFIyciksdShmKGUpLGoyciksbyhmKGUpLE0ycixHMnIpO3ZhciB5PWlbMl07ZnVuY3Rpb24gVCh3KXtyZXR1cm4gdShuLHcpfWZ1bmN0aW9uIEUodyl7cmV0dXJuIHUodCx3KX1SKCRlWzEzXSxFLFQsZSx5KSx1KGYoZSksQjJyKSx1KGYoZSkscTJyKSxvKGYoZSksSDJyLFUycik7dmFyIGQ9aVszXTtyZXR1cm4gbyhmKGUpLFgycixkKSx1KGYoZSksWTJyKSx1KGYoZSksVjJyKX0pLE4oeUssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oenAsdCxuKTtyZXR1cm4gbyhDMChJMnIpLGksZSl9KTt2YXIgZUM9WzAsckMsX0ssenAseUtdLG5DPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxoSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxLcD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sZEs9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihuQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksRjJyKSxvKHQsZSxpWzFdKSx1KGYoZSksVDJyKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihLcCxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLE8ycil9KSxOKGhLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKG5DLHQsbik7cmV0dXJuIG8oQzAoZzJyKSxpLGUpfSksTihLcCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksbDJyKSxvKGYoZSkscDJyLGIycik7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIoZUNbMV0scyxjLGUseCksdShmKGUpLG0yciksdShmKGUpLF8yciksbyhmKGUpLGgycix5MnIpO3ZhciBwPWlbMl07aWYocCl7ZyhlLGQycik7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCx2MnIpfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLGsycil9ZWxzZSBnKGUsdzJyKTtyZXR1cm4gdShmKGUpLEUyciksdShmKGUpLFMycil9KSxOKGRLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEtwLHQsbik7cmV0dXJuIG8oQzAoczJyKSxpLGUpfSk7dmFyIGtLPVswLG5DLGhLLEtwLGRLXSx0Qz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sd0s9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sV3A9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEVLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04odEMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLG8yciksbyh0LGUsaVsxXSksdShmKGUpLGEycik7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoV3AsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxjMnIpfSksTih3SyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh0Qyx0LG4pO3JldHVybiBvKEMwKHgyciksaSxlKX0pLE4oV3AsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFd2ciksbyhmKGUpLCR2cixKdnIpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKCRlWzE3XSxzLGMsZSx4KSx1KGYoZSksWnZyKSx1KGYoZSksUXZyKSxvKGYoZSksZTJyLHIycik7dmFyIHA9aVsyXTtpZihwKXtnKGUsbjJyKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLEt2cil9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsZSx5KSxnKGUsdDJyKX1lbHNlIGcoZSx1MnIpO3JldHVybiB1KGYoZSksaTJyKSx1KGYoZSksZjJyKX0pLE4oRUssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oV3AsdCxuKTtyZXR1cm4gbyhDMCh6dnIpLGksZSl9KTt2YXIgU0s9WzAsdEMsd0ssV3AsRUtdLHVDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxnSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxKcD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sRks9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07Tih1QyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksWHZyKSxvKHQsZSxpWzFdKSx1KGYoZSksWXZyKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihKcCxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLFZ2cil9KSxOKGdLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHVDLHQsbik7cmV0dXJuIG8oQzAoSHZyKSxpLGUpfSksTihKcCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSkscHZyKSxvKGYoZSksX3ZyLG12cik7dmFyIHg9aVsxXTtpZih4KXtnKGUseXZyKTt2YXIgYz14WzFdLHM9ZnVuY3Rpb24oVil7cmV0dXJuIHUobixWKX0scD1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKFNLWzFdLHAscyxlLGMpLGcoZSxodnIpfWVsc2UgZyhlLGR2cik7dShmKGUpLGt2ciksdShmKGUpLHd2ciksbyhmKGUpLFN2cixFdnIpO3ZhciB5PWlbMl07dShmKGUpLGd2cik7dmFyIFQ9MDtsZShmdW5jdGlvbihWLGYwKXtWJiZ1KGYoZSksYnZyKTtmdW5jdGlvbiBtMChnMCl7cmV0dXJuIHUobixnMCl9ZnVuY3Rpb24gazAoZzApe3JldHVybiB1KHQsZzApfXJldHVybiBSKGVDWzFdLGswLG0wLGUsZjApLDF9LFQseSksdShmKGUpLEZ2ciksdShmKGUpLFR2ciksdShmKGUpLE92ciksbyhmKGUpLEF2cixJdnIpO3ZhciBFPWlbM107aWYoRSl7ZyhlLE52cik7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKFYpe3JldHVybiB1KG4sVil9LEc9ZnVuY3Rpb24oVil7cmV0dXJuIHUodCxWKX07UihrS1sxXSxHLHcsZSxkKSxnKGUsQ3ZyKX1lbHNlIGcoZSxQdnIpO3UoZihlKSxEdnIpLHUoZihlKSxMdnIpLG8oZihlKSxqdnIsUnZyKTt2YXIgQT1pWzRdO2lmKEEpe2coZSxHdnIpO3ZhciBTPUFbMV0sTT1mdW5jdGlvbihWLGYwKXt1KGYoViksdnZyKTt2YXIgbTA9MDtyZXR1cm4gbGUoZnVuY3Rpb24oazAsZzApe2swJiZ1KGYoViksc3ZyKTtmdW5jdGlvbiBlMCh4MCl7cmV0dXJuIHUodCx4MCl9cmV0dXJuIHVyKGl1WzFdLGUwLFYsZzApLDF9LG0wLGYwKSx1KGYoViksbHZyKX0sSz1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKERyWzFdLEssTSxlLFMpLGcoZSxNdnIpfWVsc2UgZyhlLEJ2cik7cmV0dXJuIHUoZihlKSxxdnIpLHUoZihlKSxVdnIpfSksTihGSyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhKcCx0LG4pO3JldHVybiBvKEMwKGN2ciksaSxlKX0pO3ZhciBUSz1bMCx1QyxnSyxKcCxGS10saUM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LE9LPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oaUMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHExciksbyhmKGUpLEgxcixVMXIpO3ZhciB4PWlbMV07aWYoeCl7ZyhlLFgxcik7dmFyIGM9eFsxXSxzPWZ1bmN0aW9uKFYpe3JldHVybiB1KG4sVil9LHA9ZnVuY3Rpb24oVil7cmV0dXJuIHUodCxWKX07UigkZVsyMl1bMV0scCxzLGUsYyksZyhlLFkxcil9ZWxzZSBnKGUsVjFyKTt1KGYoZSksejFyKSx1KGYoZSksSzFyKSxvKGYoZSksSjFyLFcxcik7dmFyIHk9aVsyXTtmdW5jdGlvbiBUKFYpe3JldHVybiB1KG4sVil9ZnVuY3Rpb24gRShWKXtyZXR1cm4gdSh0LFYpfVIoVEtbMV0sRSxULGUseSksdShmKGUpLCQxciksdShmKGUpLFoxciksbyhmKGUpLHJ2cixRMXIpO3ZhciBkPWlbM107ZnVuY3Rpb24gdyhWKXtyZXR1cm4gdShuLFYpfWZ1bmN0aW9uIEcoVil7cmV0dXJuIHUodCxWKX1SKCRlWzEzXSxHLHcsZSxkKSx1KGYoZSksZXZyKSx1KGYoZSksbnZyKSxvKGYoZSksdXZyLHR2cik7dmFyIEE9aVs0XTtpZihBKXtnKGUsaXZyKTt2YXIgUz1BWzFdLE09ZnVuY3Rpb24oVixmMCl7cmV0dXJuIGcoVixCMXIpfSxLPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoRHJbMV0sSyxNLGUsUyksZyhlLGZ2cil9ZWxzZSBnKGUseHZyKTtyZXR1cm4gdShmKGUpLG92ciksdShmKGUpLGF2cil9KSxOKE9LLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGlDLHQsbik7cmV0dXJuIG8oQzAoTTFyKSxpLGUpfSk7dmFyIE9sPVswLGVDLGtLLFNLLFRLLGlDLE9LXSwkcD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sSUs9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sWnA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEFLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFFwPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxOSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKCRwLGZ1bmN0aW9uKHQsbixlLGkpe2lmKGlbMF09PT0wKXt1KGYoZSksTDFyKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24oVCl7cmV0dXJuIHUobixUKX0scz1mdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfTtyZXR1cm4gUihSblsxXSxzLGMsZSx4KSx1KGYoZSksUjFyKX11KGYoZSksajFyKTt2YXIgcD1pWzFdO2Z1bmN0aW9uIHkoVCl7cmV0dXJuIHUobixUKX1yZXR1cm4gUihacCxmdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfSx5LGUscCksdShmKGUpLEcxcil9KSxOKElLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKCRwLHQsbik7cmV0dXJuIG8oQzAoRDFyKSxpLGUpfSksTihacCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksTjFyKSxvKHQsZSxpWzFdKSx1KGYoZSksQzFyKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihRcCxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLFAxcil9KSxOKEFLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFpwLHQsbik7cmV0dXJuIG8oQzAoQTFyKSxpLGUpfSksTihRcCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksazFyKSxvKGYoZSksRTFyLHcxcik7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKFQpe3JldHVybiB1KG4sVCl9UigkcCxmdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfSxjLGUseCksdShmKGUpLFMxciksdShmKGUpLGcxciksbyhmKGUpLFQxcixGMXIpO3ZhciBzPWlbMl07ZnVuY3Rpb24gcChUKXtyZXR1cm4gdShuLFQpfWZ1bmN0aW9uIHkoVCl7cmV0dXJuIHUodCxUKX1yZXR1cm4gUihSblsxXSx5LHAsZSxzKSx1KGYoZSksTzFyKSx1KGYoZSksSTFyKX0pLE4oTkssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oUXAsdCxuKTtyZXR1cm4gbyhDMChkMXIpLGksZSl9KTt2YXIgQ0s9WzAsJHAsSUssWnAsQUssUXAsTktdLGZDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxQSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKGZDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxlMXIpLG8oZihlKSx0MXIsbjFyKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoUyl7cmV0dXJuIHUobixTKX1mdW5jdGlvbiBzKFMpe3JldHVybiB1KHQsUyl9UihDS1sxXSxzLGMsZSx4KSx1KGYoZSksdTFyKSx1KGYoZSksaTFyKSxvKGYoZSkseDFyLGYxcik7dmFyIHA9aVsyXTtpZihwKXtnKGUsbzFyKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oUyl7cmV0dXJuIHUobixTKX0sRT1mdW5jdGlvbihTKXtyZXR1cm4gdSh0LFMpfTtSKCRlWzIzXVsxXSxFLFQsZSx5KSxnKGUsYTFyKX1lbHNlIGcoZSxjMXIpO3UoZihlKSxzMXIpLHUoZihlKSx2MXIpLG8oZihlKSxiMXIsbDFyKTt2YXIgZD1pWzNdO2lmKGQpe2coZSxwMXIpO3ZhciB3PWRbMV0sRz1mdW5jdGlvbihTLE0pe3JldHVybiBnKFMscjFyKX0sQT1mdW5jdGlvbihTKXtyZXR1cm4gdSh0LFMpfTtSKERyWzFdLEEsRyxlLHcpLGcoZSxtMXIpfWVsc2UgZyhlLF8xcik7cmV0dXJuIHUoZihlKSx5MXIpLHUoZihlKSxoMXIpfSksTihQSyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhmQyx0LG4pO3JldHVybiBvKEMwKFFzciksaSxlKX0pO3ZhciB4Qz1bMCxDSyxmQyxQS10sb0M9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LERLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04ob0MsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGpzciksbyhmKGUpLE1zcixHc3IpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIHMoQSl7cmV0dXJuIHUodCxBKX1SKCRlWzEzXSxzLGMsZSx4KSx1KGYoZSksQnNyKSx1KGYoZSkscXNyKSxvKGYoZSksSHNyLFVzcik7dmFyIHA9aVsyXTtmdW5jdGlvbiB5KEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gVChBKXtyZXR1cm4gdSh0LEEpfVIoJGVbMTNdLFQseSxlLHApLHUoZihlKSxYc3IpLHUoZihlKSxZc3IpLG8oZihlKSx6c3IsVnNyKTt2YXIgRT1pWzNdO2lmKEUpe2coZSxLc3IpO3ZhciBkPUVbMV0sdz1mdW5jdGlvbihBLFMpe3JldHVybiBnKEEsUnNyKX0sRz1mdW5jdGlvbihBKXtyZXR1cm4gdSh0LEEpfTtSKERyWzFdLEcsdyxlLGQpLGcoZSxXc3IpfWVsc2UgZyhlLEpzcik7cmV0dXJuIHUoZihlKSwkc3IpLHUoZihlKSxac3IpfSksTihESyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhvQyx0LG4pO3JldHVybiBvKEMwKExzciksaSxlKX0pO3ZhciBhQz1bMCxvQyxES10sY0M9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LExLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oY0MsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGdzciksbyhmKGUpLFRzcixGc3IpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyh5KXtyZXR1cm4gdShuLHkpfWZ1bmN0aW9uIHMoeSl7cmV0dXJuIHUodCx5KX1SKGFDWzFdLHMsYyxlLHgpLHUoZihlKSxPc3IpLHUoZihlKSxJc3IpLG8oZihlKSxOc3IsQXNyKTt2YXIgcD1pWzJdO3JldHVybiBvKGYoZSksQ3NyLHApLHUoZihlKSxQc3IpLHUoZihlKSxEc3IpfSksTihMSyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhjQyx0LG4pO3JldHVybiBvKEMwKFNzciksaSxlKX0pO3ZhciBSSz1bMCxjQyxMS10sc0M9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGpLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LHI1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxHSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxlNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sTUs9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihzQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksa3NyKSxvKHQsZSxpWzFdKSx1KGYoZSksd3NyKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihyNSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLEVzcil9KSxOKGpLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHNDLHQsbik7cmV0dXJuIG8oQzAoZHNyKSxpLGUpfSksTihyNSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksTmNyKSxvKGYoZSksUGNyLENjcik7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKG0wKXtyZXR1cm4gdShuLG0wKX1mdW5jdGlvbiBzKG0wKXtyZXR1cm4gdSh0LG0wKX1SKHFlWzddWzFdWzFdLHMsYyxlLHgpLHUoZihlKSxEY3IpLHUoZihlKSxMY3IpLG8oZihlKSxqY3IsUmNyKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkobTApe3JldHVybiB1KG4sbTApfVIoZTUsZnVuY3Rpb24obTApe3JldHVybiB1KHQsbTApfSx5LGUscCksdShmKGUpLEdjciksdShmKGUpLE1jciksbyhmKGUpLHFjcixCY3IpO3ZhciBUPWlbM107byhmKGUpLFVjcixUKSx1KGYoZSksSGNyKSx1KGYoZSksWGNyKSxvKGYoZSksVmNyLFljcik7dmFyIEU9aVs0XTtvKGYoZSksemNyLEUpLHUoZihlKSxLY3IpLHUoZihlKSxXY3IpLG8oZihlKSwkY3IsSmNyKTt2YXIgZD1pWzVdO28oZihlKSxaY3IsZCksdShmKGUpLFFjciksdShmKGUpLHJzciksbyhmKGUpLG5zcixlc3IpO3ZhciB3PWlbNl07byhmKGUpLHRzcix3KSx1KGYoZSksdXNyKSx1KGYoZSksaXNyKSxvKGYoZSkseHNyLGZzcik7dmFyIEc9aVs3XTtpZihHKXtnKGUsb3NyKTt2YXIgQT1HWzFdLFM9ZnVuY3Rpb24obTApe3JldHVybiB1KHQsbTApfTt1cih6dlsxXSxTLGUsQSksZyhlLGFzcil9ZWxzZSBnKGUsY3NyKTt1KGYoZSksc3NyKSx1KGYoZSksdnNyKSxvKGYoZSksYnNyLGxzcik7dmFyIE09aVs4XTtpZihNKXtnKGUscHNyKTt2YXIgSz1NWzFdLFY9ZnVuY3Rpb24obTAsazApe3JldHVybiBnKG0wLEFjcil9LGYwPWZ1bmN0aW9uKG0wKXtyZXR1cm4gdSh0LG0wKX07UihEclsxXSxmMCxWLGUsSyksZyhlLG1zcil9ZWxzZSBnKGUsX3NyKTtyZXR1cm4gdShmKGUpLHlzciksdShmKGUpLGhzcil9KSxOKEdLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHI1LHQsbik7cmV0dXJuIG8oQzAoSWNyKSxpLGUpfSksTihlNSxmdW5jdGlvbih0LG4sZSxpKXtzd2l0Y2goaVswXSl7Y2FzZSAwOnUoZihlKSxfY3IpO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihTKXtyZXR1cm4gdShuLFMpfSxzPWZ1bmN0aW9uKFMpe3JldHVybiB1KHQsUyl9O3JldHVybiBSKCRlWzEzXSxzLGMsZSx4KSx1KGYoZSkseWNyKTtjYXNlIDE6dmFyIHA9aVsxXTt1KGYoZSksaGNyKSx1KGYoZSksZGNyKSxvKHQsZSxwWzFdKSx1KGYoZSksa2NyKTt2YXIgeT1wWzJdLFQ9ZnVuY3Rpb24oUyl7cmV0dXJuIHUobixTKX0sRT1mdW5jdGlvbihTKXtyZXR1cm4gdSh0LFMpfTtyZXR1cm4gUihPbFs1XSxFLFQsZSx5KSx1KGYoZSksd2NyKSx1KGYoZSksRWNyKTtkZWZhdWx0OnZhciBkPWlbMV07dShmKGUpLFNjciksdShmKGUpLGdjciksbyh0LGUsZFsxXSksdShmKGUpLEZjcik7dmFyIHc9ZFsyXSxHPWZ1bmN0aW9uKFMpe3JldHVybiB1KG4sUyl9LEE9ZnVuY3Rpb24oUyl7cmV0dXJuIHUodCxTKX07cmV0dXJuIFIoT2xbNV0sQSxHLGUsdyksdShmKGUpLFRjciksdShmKGUpLE9jcil9fSksTihNSyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhlNSx0LG4pO3JldHVybiBvKEMwKG1jciksaSxlKX0pO3ZhciBCSz1bMCxzQyxqSyxyNSxHSyxlNSxNS10sdkM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHFLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LG41PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxVSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHZDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxsY3IpLG8odCxlLGlbMV0pLHUoZihlKSxiY3IpO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKG41LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSkscGNyKX0pLE4ocUssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8odkMsdCxuKTtyZXR1cm4gbyhDMCh2Y3IpLGksZSl9KSxOKG41LGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxyY3IpLG8oZihlKSxuY3IsZWNyKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBzKGQpe3JldHVybiB1KHQsZCl9UigkZVsxM10scyxjLGUseCksdShmKGUpLHRjciksdShmKGUpLHVjciksbyhmKGUpLGZjcixpY3IpO3ZhciBwPWlbMl07aWYocCl7ZyhlLHhjcik7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCxRYXIpfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLG9jcil9ZWxzZSBnKGUsYWNyKTtyZXR1cm4gdShmKGUpLGNjciksdShmKGUpLHNjcil9KSxOKFVLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKG41LHQsbik7cmV0dXJuIG8oQzAoWmFyKSxpLGUpfSk7dmFyIEhLPVswLHZDLHFLLG41LFVLXSx0NT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sWEs9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sbEM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFlLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04odDUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLF9hciksbyhmKGUpLGhhcix5YXIpO3ZhciB4PWlbMV07aWYoeCl7ZyhlLGRhcik7dmFyIGM9eFsxXSxzPWZ1bmN0aW9uKGcwKXtyZXR1cm4gdSh0LGcwKX0scD1mdW5jdGlvbihnMCl7cmV0dXJuIHUodCxnMCl9O1IoUm5bMV0scCxzLGUsYyksZyhlLGthcil9ZWxzZSBnKGUsd2FyKTt1KGYoZSksRWFyKSx1KGYoZSksU2FyKSxvKGYoZSksRmFyLGdhcik7dmFyIHk9aVsyXTtmdW5jdGlvbiBUKGcwKXtyZXR1cm4gdShuLGcwKX1mdW5jdGlvbiBFKGcwKXtyZXR1cm4gdSh0LGcwKX1SKCRlWzEzXSxFLFQsZSx5KSx1KGYoZSksVGFyKSx1KGYoZSksT2FyKSxvKGYoZSksQWFyLElhcik7dmFyIGQ9aVszXTtmdW5jdGlvbiB3KGcwKXtyZXR1cm4gdShuLGcwKX1mdW5jdGlvbiBHKGcwKXtyZXR1cm4gdSh0LGcwKX1SKCRlWzEzXSxHLHcsZSxkKSx1KGYoZSksTmFyKSx1KGYoZSksQ2FyKSxvKGYoZSksRGFyLFBhcik7dmFyIEE9aVs0XTtvKGYoZSksTGFyLEEpLHUoZihlKSxSYXIpLHUoZihlKSxqYXIpLG8oZihlKSxNYXIsR2FyKTt2YXIgUz1pWzVdO2lmKFMpe2coZSxCYXIpO3ZhciBNPVNbMV0sSz1mdW5jdGlvbihnMCl7cmV0dXJuIHUodCxnMCl9O3VyKHp2WzFdLEssZSxNKSxnKGUscWFyKX1lbHNlIGcoZSxVYXIpO3UoZihlKSxIYXIpLHUoZihlKSxYYXIpLG8oZihlKSxWYXIsWWFyKTt2YXIgVj1pWzZdO2lmKFYpe2coZSx6YXIpO3ZhciBmMD1WWzFdLG0wPWZ1bmN0aW9uKGcwLGUwKXtyZXR1cm4gZyhnMCxtYXIpfSxrMD1mdW5jdGlvbihnMCl7cmV0dXJuIHUodCxnMCl9O1IoRHJbMV0sazAsbTAsZSxmMCksZyhlLEthcil9ZWxzZSBnKGUsV2FyKTtyZXR1cm4gdShmKGUpLEphciksdShmKGUpLCRhcil9KSxOKFhLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHQ1LHQsbik7cmV0dXJuIG8oQzAocGFyKSxpLGUpfSksTihsQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksc2FyKSxvKHQsZSxpWzFdKSx1KGYoZSksbGFyKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUih0NSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLGJhcil9KSxOKFlLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGxDLHQsbik7cmV0dXJuIG8oQzAoY2FyKSxpLGUpfSk7dmFyIFZLPVswLHQ1LFhLLGxDLFlLXSxiQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seks9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sdTU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEtLPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oYkMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHhhciksbyh0LGUsaVsxXSksdShmKGUpLG9hcik7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIodTUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxhYXIpfSksTih6SyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhiQyx0LG4pO3JldHVybiBvKEMwKGZhciksaSxlKX0pLE4odTUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEJvciksbyhmKGUpLFVvcixxb3IpO3ZhciB4PWlbMV07dShmKGUpLEhvciksbyh0LGUseFsxXSksdShmKGUpLFhvcik7dmFyIGM9eFsyXTtmdW5jdGlvbiBzKEcpe3JldHVybiB1KG4sRyl9ZnVuY3Rpb24gcChHKXtyZXR1cm4gdSh0LEcpfVIoT2xbNV0scCxzLGUsYyksdShmKGUpLFlvciksdShmKGUpLFZvciksdShmKGUpLHpvciksbyhmKGUpLFdvcixLb3IpO3ZhciB5PWlbMl07byhmKGUpLEpvcix5KSx1KGYoZSksJG9yKSx1KGYoZSksWm9yKSxvKGYoZSkscmFyLFFvcik7dmFyIFQ9aVszXTtpZihUKXtnKGUsZWFyKTt2YXIgRT1UWzFdLGQ9ZnVuY3Rpb24oRyxBKXtyZXR1cm4gZyhHLE1vcil9LHc9ZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX07UihEclsxXSx3LGQsZSxFKSxnKGUsbmFyKX1lbHNlIGcoZSx0YXIpO3JldHVybiB1KGYoZSksdWFyKSx1KGYoZSksaWFyKX0pLE4oS0ssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8odTUsdCxuKTtyZXR1cm4gbyhDMChHb3IpLGksZSl9KTt2YXIgV0s9WzAsYkMsekssdTUsS0tdLHBDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxKSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxpNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sJEs9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihwQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksTG9yKSxvKHQsZSxpWzFdKSx1KGYoZSksUm9yKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihpNSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLGpvcil9KSxOKEpLLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHBDLHQsbik7cmV0dXJuIG8oQzAoRG9yKSxpLGUpfSksTihpNSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksbm9yKSxvKGYoZSksdW9yLHRvcik7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEspe3JldHVybiB1KHQsSyl9ZnVuY3Rpb24gcyhLKXtyZXR1cm4gdSh0LEspfVIoUm5bMV0scyxjLGUseCksdShmKGUpLGlvciksdShmKGUpLHhvciksbyhmKGUpLGFvcixvb3IpO3ZhciBwPWlbMl07ZnVuY3Rpb24geShLKXtyZXR1cm4gdShuLEspfWZ1bmN0aW9uIFQoSyl7cmV0dXJuIHUodCxLKX1SKCRlWzEzXSxULHksZSxwKSx1KGYoZSksY29yKSx1KGYoZSksc29yKSxvKGYoZSksbG9yLHZvcik7dmFyIEU9aVszXTtvKGYoZSksYm9yLEUpLHUoZihlKSxwb3IpLHUoZihlKSxtb3IpLG8oZihlKSx5b3IsX29yKTt2YXIgZD1pWzRdO28oZihlKSxob3IsZCksdShmKGUpLGRvciksdShmKGUpLGtvciksbyhmKGUpLEVvcix3b3IpO3ZhciB3PWlbNV07byhmKGUpLFNvcix3KSx1KGYoZSksZ29yKSx1KGYoZSksRm9yKSxvKGYoZSksT29yLFRvcik7dmFyIEc9aVs2XTtpZihHKXtnKGUsSW9yKTt2YXIgQT1HWzFdLFM9ZnVuY3Rpb24oSyxWKXtyZXR1cm4gZyhLLGVvcil9LE09ZnVuY3Rpb24oSyl7cmV0dXJuIHUodCxLKX07UihEclsxXSxNLFMsZSxBKSxnKGUsQW9yKX1lbHNlIGcoZSxOb3IpO3JldHVybiB1KGYoZSksQ29yKSx1KGYoZSksUG9yKX0pLE4oJEssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oaTUsdCxuKTtyZXR1cm4gbyhDMChyb3IpLGksZSl9KTt2YXIgWks9WzAscEMsSkssaTUsJEtdLG1DPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxRSz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxmNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sclc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihtQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksQXhyKSxvKGYoZSksQ3hyLE54cik7dmFyIHg9aVsxXTtvKGYoZSksUHhyLHgpLHUoZihlKSxEeHIpLHUoZihlKSxMeHIpLG8oZihlKSxqeHIsUnhyKTt2YXIgYz1pWzJdO28oZihlKSxHeHIsYyksdShmKGUpLE14ciksdShmKGUpLEJ4ciksbyhmKGUpLFV4cixxeHIpO3ZhciBzPWlbM107dShmKGUpLEh4cik7dmFyIHA9MDtsZShmdW5jdGlvbih3LEcpe3cmJnUoZihlKSxJeHIpO2Z1bmN0aW9uIEEoUyl7cmV0dXJuIHUobixTKX1yZXR1cm4gUihmNSxmdW5jdGlvbihTKXtyZXR1cm4gdSh0LFMpfSxBLGUsRyksMX0scCxzKSx1KGYoZSksWHhyKSx1KGYoZSksWXhyKSx1KGYoZSksVnhyKSxvKGYoZSksS3hyLHp4cik7dmFyIHk9aVs0XTtpZih5KXtnKGUsV3hyKTt2YXIgVD15WzFdLEU9ZnVuY3Rpb24odyxHKXt1KGYodyksVHhyKTt2YXIgQT0wO3JldHVybiBsZShmdW5jdGlvbihTLE0pe1MmJnUoZih3KSxGeHIpO2Z1bmN0aW9uIEsoVil7cmV0dXJuIHUodCxWKX1yZXR1cm4gdXIoaXVbMV0sSyx3LE0pLDF9LEEsRyksdShmKHcpLE94cil9LGQ9ZnVuY3Rpb24odyl7cmV0dXJuIHUodCx3KX07UihEclsxXSxkLEUsZSxUKSxnKGUsSnhyKX1lbHNlIGcoZSwkeHIpO3JldHVybiB1KGYoZSksWnhyKSx1KGYoZSksUXhyKX0pLE4oUUssZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8obUMsdCxuKTtyZXR1cm4gbyhDMChneHIpLGksZSl9KSxOKGY1LGZ1bmN0aW9uKHQsbixlLGkpe3N3aXRjaChpWzBdKXtjYXNlIDA6dShmKGUpLHB4cik7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKGYwKXtyZXR1cm4gdShuLGYwKX0scz1mdW5jdGlvbihmMCl7cmV0dXJuIHUodCxmMCl9O3JldHVybiBSKEJLWzFdLHMsYyxlLHgpLHUoZihlKSxteHIpO2Nhc2UgMTp1KGYoZSksX3hyKTt2YXIgcD1pWzFdLHk9ZnVuY3Rpb24oZjApe3JldHVybiB1KG4sZjApfSxUPWZ1bmN0aW9uKGYwKXtyZXR1cm4gdSh0LGYwKX07cmV0dXJuIFIoSEtbMV0sVCx5LGUscCksdShmKGUpLHl4cik7Y2FzZSAyOnUoZihlKSxoeHIpO3ZhciBFPWlbMV0sZD1mdW5jdGlvbihmMCl7cmV0dXJuIHUobixmMCl9LHc9ZnVuY3Rpb24oZjApe3JldHVybiB1KHQsZjApfTtyZXR1cm4gUihWS1szXSx3LGQsZSxFKSx1KGYoZSksZHhyKTtjYXNlIDM6dShmKGUpLGt4cik7dmFyIEc9aVsxXSxBPWZ1bmN0aW9uKGYwKXtyZXR1cm4gdShuLGYwKX0sUz1mdW5jdGlvbihmMCl7cmV0dXJuIHUodCxmMCl9O3JldHVybiBSKFdLWzFdLFMsQSxlLEcpLHUoZihlKSx3eHIpO2RlZmF1bHQ6dShmKGUpLEV4cik7dmFyIE09aVsxXSxLPWZ1bmN0aW9uKGYwKXtyZXR1cm4gdShuLGYwKX0sVj1mdW5jdGlvbihmMCl7cmV0dXJuIHUodCxmMCl9O3JldHVybiBSKFpLWzFdLFYsSyxlLE0pLHUoZihlKSxTeHIpfX0pLE4oclcsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oZjUsdCxuKTtyZXR1cm4gbyhDMChieHIpLGksZSl9KTt2YXIgX0M9WzAsQkssSEssVkssV0ssWkssbUMsUUssZjUsclddLHlDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxlVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHlDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSx6ZnIpLG8oZihlKSxXZnIsS2ZyKTt2YXIgeD1pWzFdO3UoZihlKSxKZnIpLG8odCxlLHhbMV0pLHUoZihlKSwkZnIpO3ZhciBjPXhbMl07ZnVuY3Rpb24gcyhBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIHAoQSl7cmV0dXJuIHUodCxBKX1SKF9DWzZdLHAscyxlLGMpLHUoZihlKSxaZnIpLHUoZihlKSxRZnIpLHUoZihlKSxyeHIpLG8oZihlKSxueHIsZXhyKTt2YXIgeT1pWzJdO3UoZihlKSx0eHIpO3ZhciBUPTA7bGUoZnVuY3Rpb24oQSxTKXtBJiZ1KGYoZSksSGZyKSx1KGYoZSksWGZyKSxvKHQsZSxTWzFdKSx1KGYoZSksWWZyKTt2YXIgTT1TWzJdO2Z1bmN0aW9uIEsoZjApe3JldHVybiB1KG4sZjApfWZ1bmN0aW9uIFYoZjApe3JldHVybiB1KHQsZjApfXJldHVybiBSKHhDWzJdLFYsSyxlLE0pLHUoZihlKSxWZnIpLDF9LFQseSksdShmKGUpLHV4ciksdShmKGUpLGl4ciksdShmKGUpLGZ4ciksbyhmKGUpLG94cix4eHIpO3ZhciBFPWlbM107aWYoRSl7ZyhlLGF4cik7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKEEsUyl7cmV0dXJuIGcoQSxVZnIpfSxHPWZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9O1IoRHJbMV0sRyx3LGUsZCksZyhlLGN4cil9ZWxzZSBnKGUsc3hyKTtyZXR1cm4gdShmKGUpLHZ4ciksdShmKGUpLGx4cil9KSxOKGVXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHlDLHQsbik7cmV0dXJuIG8oQzAocWZyKSxpLGUpfSk7dmFyIG5XPVswLHlDLGVXXSxoQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sdFc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihoQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksSWZyKSxvKGYoZSksTmZyLEFmcik7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIoJGVbMTNdLHMsYyxlLHgpLHUoZihlKSxDZnIpLHUoZihlKSxQZnIpLG8oZihlKSxMZnIsRGZyKTt2YXIgcD1pWzJdO2lmKHApe2coZSxSZnIpO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkLHcpe3JldHVybiBnKGQsT2ZyKX0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKERyWzFdLEUsVCxlLHkpLGcoZSxqZnIpfWVsc2UgZyhlLEdmcik7cmV0dXJuIHUoZihlKSxNZnIpLHUoZihlKSxCZnIpfSksTih0VyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhoQyx0LG4pO3JldHVybiBvKEMwKFRmciksaSxlKX0pO3ZhciB1Vz1bMCxoQyx0V10seDU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGlXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LG81PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxmVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxhNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seFc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07Tih4NSxmdW5jdGlvbih0LG4sZSxpKXtpZihpWzBdPT09MCl7dShmKGUpLEVmcik7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKFQpe3JldHVybiB1KG4sVCl9LHM9ZnVuY3Rpb24oVCl7cmV0dXJuIHUodCxUKX07cmV0dXJuIFIoUm5bMV0scyxjLGUseCksdShmKGUpLFNmcil9dShmKGUpLGdmcik7dmFyIHA9aVsxXTtmdW5jdGlvbiB5KFQpe3JldHVybiB1KG4sVCl9cmV0dXJuIFIoYTUsZnVuY3Rpb24oVCl7cmV0dXJuIHUodCxUKX0seSxlLHApLHUoZihlKSxGZnIpfSksTihpVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh4NSx0LG4pO3JldHVybiBvKEMwKHdmciksaSxlKX0pLE4obzUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGxmciksbyhmKGUpLHBmcixiZnIpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhUKXtyZXR1cm4gdShuLFQpfVIoeDUsZnVuY3Rpb24oVCl7cmV0dXJuIHUodCxUKX0sYyxlLHgpLHUoZihlKSxtZnIpLHUoZihlKSxfZnIpLG8oZihlKSxoZnIseWZyKTt2YXIgcz1pWzJdO2Z1bmN0aW9uIHAoVCl7cmV0dXJuIHUobixUKX1mdW5jdGlvbiB5KFQpe3JldHVybiB1KHQsVCl9cmV0dXJuIFIoUm5bMV0seSxwLGUscyksdShmKGUpLGRmciksdShmKGUpLGtmcil9KSxOKGZXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKG81LHQsbik7cmV0dXJuIG8oQzAodmZyKSxpLGUpfSksTihhNSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksYWZyKSxvKG4sZSxpWzFdKSx1KGYoZSksY2ZyKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihvNSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLHNmcil9KSxOKHhXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGE1LHQsbik7cmV0dXJuIG8oQzAob2ZyKSxpLGUpfSk7dmFyIG9XPVswLHg1LGlXLG81LGZXLGE1LHhXXSxkQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sYVc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihkQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksSmlyKSxvKGYoZSksWmlyLCRpcik7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIob1dbMV0scyxjLGUseCksdShmKGUpLFFpciksdShmKGUpLHJmciksbyhmKGUpLG5mcixlZnIpO3ZhciBwPWlbMl07aWYocCl7ZyhlLHRmcik7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCxXaXIpfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLHVmcil9ZWxzZSBnKGUsaWZyKTtyZXR1cm4gdShmKGUpLGZmciksdShmKGUpLHhmcil9KSxOKGFXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGRDLHQsbik7cmV0dXJuIG8oQzAoS2lyKSxpLGUpfSk7dmFyIGNXPVswLG9XLGRDLGFXXSxrQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sc1c9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihrQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksRGlyKSxvKGYoZSksUmlyLExpcik7dmFyIHg9aVsxXTt1KGYoZSksamlyKTt2YXIgYz0wO2xlKGZ1bmN0aW9uKEUsZCl7RSYmdShmKGUpLFBpcik7ZnVuY3Rpb24gdyhBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIEcoQSl7cmV0dXJuIHUodCxBKX1yZXR1cm4gUigkZVsxM10sRyx3LGUsZCksMX0sYyx4KSx1KGYoZSksR2lyKSx1KGYoZSksTWlyKSx1KGYoZSksQmlyKSxvKGYoZSksVWlyLHFpcik7dmFyIHM9aVsyXTtpZihzKXtnKGUsSGlyKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oRSxkKXtyZXR1cm4gZyhFLENpcil9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07UihEclsxXSxULHksZSxwKSxnKGUsWGlyKX1lbHNlIGcoZSxZaXIpO3JldHVybiB1KGYoZSksVmlyKSx1KGYoZSksemlyKX0pLE4oc1csZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oa0MsdCxuKTtyZXR1cm4gbyhDMChOaXIpLGksZSl9KTt2YXIgdlc9WzAsa0Msc1ddLHdDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxsVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHdDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxoaXIpLG8oZihlKSxraXIsZGlyKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBzKGQpe3JldHVybiB1KHQsZCl9UigkZVsxM10scyxjLGUseCksdShmKGUpLHdpciksdShmKGUpLEVpciksbyhmKGUpLGdpcixTaXIpO3ZhciBwPWlbMl07aWYocCl7ZyhlLEZpcik7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCx5aXIpfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLFRpcil9ZWxzZSBnKGUsT2lyKTtyZXR1cm4gdShmKGUpLElpciksdShmKGUpLEFpcil9KSxOKGxXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHdDLHQsbik7cmV0dXJuIG8oQzAoX2lyKSxpLGUpfSk7dmFyIGJXPVswLHdDLGxXXSxFQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0scFc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihFQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksUTdyKSxvKGYoZSksZWlyLHJpcik7dmFyIHg9aVsxXTt1KGYoZSksbmlyKTt2YXIgYz14WzFdO2Z1bmN0aW9uIHMoSyl7cmV0dXJuIHUobixLKX1mdW5jdGlvbiBwKEspe3JldHVybiB1KHQsSyl9UigkZVsxM10scCxzLGUsYyksdShmKGUpLHRpcik7dmFyIHk9eFsyXTtmdW5jdGlvbiBUKEspe3JldHVybiB1KG4sSyl9ZnVuY3Rpb24gRShLKXtyZXR1cm4gdSh0LEspfVIoJGVbMTNdLEUsVCxlLHkpLHUoZihlKSx1aXIpLHUoZihlKSxpaXIpO3ZhciBkPXhbM10sdz0wO2xlKGZ1bmN0aW9uKEssVil7SyYmdShmKGUpLFo3cik7ZnVuY3Rpb24gZjAoazApe3JldHVybiB1KG4sazApfWZ1bmN0aW9uIG0wKGswKXtyZXR1cm4gdSh0LGswKX1yZXR1cm4gUigkZVsxM10sbTAsZjAsZSxWKSwxfSx3LGQpLHUoZihlKSxmaXIpLHUoZihlKSx4aXIpLHUoZihlKSxvaXIpLHUoZihlKSxhaXIpLG8oZihlKSxzaXIsY2lyKTt2YXIgRz1pWzJdO2lmKEcpe2coZSx2aXIpO3ZhciBBPUdbMV0sUz1mdW5jdGlvbihLLFYpe3JldHVybiBnKEssJDdyKX0sTT1mdW5jdGlvbihLKXtyZXR1cm4gdSh0LEspfTtSKERyWzFdLE0sUyxlLEEpLGcoZSxsaXIpfWVsc2UgZyhlLGJpcik7cmV0dXJuIHUoZihlKSxwaXIpLHUoZihlKSxtaXIpfSksTihwVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhFQyx0LG4pO3JldHVybiBvKEMwKEo3ciksaSxlKX0pO3ZhciBtVz1bMCxFQyxwV10sU0M9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LF9XPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oU0MsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEM3ciksbyhmKGUpLEQ3cixQN3IpO3ZhciB4PWlbMV07dShmKGUpLEw3cik7dmFyIGM9eFsxXTtmdW5jdGlvbiBzKEspe3JldHVybiB1KG4sSyl9ZnVuY3Rpb24gcChLKXtyZXR1cm4gdSh0LEspfVIoJGVbMTNdLHAscyxlLGMpLHUoZihlKSxSN3IpO3ZhciB5PXhbMl07ZnVuY3Rpb24gVChLKXtyZXR1cm4gdShuLEspfWZ1bmN0aW9uIEUoSyl7cmV0dXJuIHUodCxLKX1SKCRlWzEzXSxFLFQsZSx5KSx1KGYoZSksajdyKSx1KGYoZSksRzdyKTt2YXIgZD14WzNdLHc9MDtsZShmdW5jdGlvbihLLFYpe0smJnUoZihlKSxON3IpO2Z1bmN0aW9uIGYwKGswKXtyZXR1cm4gdShuLGswKX1mdW5jdGlvbiBtMChrMCl7cmV0dXJuIHUodCxrMCl9cmV0dXJuIFIoJGVbMTNdLG0wLGYwLGUsViksMX0sdyxkKSx1KGYoZSksTTdyKSx1KGYoZSksQjdyKSx1KGYoZSkscTdyKSx1KGYoZSksVTdyKSxvKGYoZSksWDdyLEg3cik7dmFyIEc9aVsyXTtpZihHKXtnKGUsWTdyKTt2YXIgQT1HWzFdLFM9ZnVuY3Rpb24oSyxWKXtyZXR1cm4gZyhLLEE3cil9LE09ZnVuY3Rpb24oSyl7cmV0dXJuIHUodCxLKX07UihEclsxXSxNLFMsZSxBKSxnKGUsVjdyKX1lbHNlIGcoZSx6N3IpO3JldHVybiB1KGYoZSksSzdyKSx1KGYoZSksVzdyKX0pLE4oX1csZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oU0MsdCxuKTtyZXR1cm4gbyhDMChJN3IpLGksZSl9KTt2YXIgeVc9WzAsU0MsX1ddLGM1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxoVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxzNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sZFc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sZ0M9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGtXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LEZDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx3Vz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKGM1LGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxGN3IpLG8obixlLGlbMV0pLHUoZihlKSxUN3IpO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKHM1LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksTzdyKX0pLE4oaFcsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oYzUsdCxuKTtyZXR1cm4gbyhDMChnN3IpLGksZSl9KSxOKHM1LGZ1bmN0aW9uKHQsbixlLGkpe3N3aXRjaChpWzBdKXtjYXNlIDA6dmFyIHg9aVsxXTtpZih1KGYoZSksVnRyKSx4KXtnKGUsenRyKTt2YXIgYz14WzFdLHM9ZnVuY3Rpb24oVSxZKXtyZXR1cm4gZyhVLFl0cil9LHA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07UihEclsxXSxwLHMsZSxjKSxnKGUsS3RyKX1lbHNlIGcoZSxXdHIpO3JldHVybiB1KGYoZSksSnRyKTtjYXNlIDE6dmFyIHk9aVsxXTtpZih1KGYoZSksJHRyKSx5KXtnKGUsWnRyKTt2YXIgVD15WzFdLEU9ZnVuY3Rpb24oVSxZKXtyZXR1cm4gZyhVLFh0cil9LGQ9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07UihEclsxXSxkLEUsZSxUKSxnKGUsUXRyKX1lbHNlIGcoZSxydXIpO3JldHVybiB1KGYoZSksZXVyKTtjYXNlIDI6dmFyIHc9aVsxXTtpZih1KGYoZSksbnVyKSx3KXtnKGUsdHVyKTt2YXIgRz13WzFdLEE9ZnVuY3Rpb24oVSxZKXtyZXR1cm4gZyhVLEh0cil9LFM9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07UihEclsxXSxTLEEsZSxHKSxnKGUsdXVyKX1lbHNlIGcoZSxpdXIpO3JldHVybiB1KGYoZSksZnVyKTtjYXNlIDM6dmFyIE09aVsxXTtpZih1KGYoZSkseHVyKSxNKXtnKGUsb3VyKTt2YXIgSz1NWzFdLFY9ZnVuY3Rpb24oVSxZKXtyZXR1cm4gZyhVLFV0cil9LGYwPWZ1bmN0aW9uKFUpe3JldHVybiB1KHQsVSl9O1IoRHJbMV0sZjAsVixlLEspLGcoZSxhdXIpfWVsc2UgZyhlLGN1cik7cmV0dXJuIHUoZihlKSxzdXIpO2Nhc2UgNDp2YXIgbTA9aVsxXTtpZih1KGYoZSksdnVyKSxtMCl7ZyhlLGx1cik7dmFyIGswPW0wWzFdLGcwPWZ1bmN0aW9uKFUsWSl7cmV0dXJuIGcoVSxxdHIpfSxlMD1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtSKERyWzFdLGUwLGcwLGUsazApLGcoZSxidXIpfWVsc2UgZyhlLHB1cik7cmV0dXJuIHUoZihlKSxtdXIpO2Nhc2UgNTp2YXIgeDA9aVsxXTtpZih1KGYoZSksX3VyKSx4MCl7ZyhlLHl1cik7dmFyIGw9eDBbMV0sYzA9ZnVuY3Rpb24oVSxZKXtyZXR1cm4gZyhVLEJ0cil9LHQwPWZ1bmN0aW9uKFUpe3JldHVybiB1KHQsVSl9O1IoRHJbMV0sdDAsYzAsZSxsKSxnKGUsaHVyKX1lbHNlIGcoZSxkdXIpO3JldHVybiB1KGYoZSksa3VyKTtjYXNlIDY6dmFyIG8wPWlbMV07aWYodShmKGUpLHd1ciksbzApe2coZSxFdXIpO3ZhciB3MD1vMFsxXSxfMD1mdW5jdGlvbihVLFkpe3JldHVybiBnKFUsTXRyKX0sRTA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07UihEclsxXSxFMCxfMCxlLHcwKSxnKGUsU3VyKX1lbHNlIGcoZSxndXIpO3JldHVybiB1KGYoZSksRnVyKTtjYXNlIDc6dmFyIFUwPWlbMV07aWYodShmKGUpLFR1ciksVTApe2coZSxPdXIpO3ZhciBiPVUwWzFdLFIwPWZ1bmN0aW9uKFUsWSl7cmV0dXJuIGcoVSxHdHIpfSxYPWZ1bmN0aW9uKFUpe3JldHVybiB1KHQsVSl9O1IoRHJbMV0sWCxSMCxlLGIpLGcoZSxJdXIpfWVsc2UgZyhlLEF1cik7cmV0dXJuIHUoZihlKSxOdXIpO2Nhc2UgODp2YXIgczA9aVsxXTtpZih1KGYoZSksQ3VyKSxzMCl7ZyhlLFB1cik7dmFyIGhyPXMwWzFdLEFyPWZ1bmN0aW9uKFUsWSl7cmV0dXJuIGcoVSxqdHIpfSxvcj1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtSKERyWzFdLG9yLEFyLGUsaHIpLGcoZSxEdXIpfWVsc2UgZyhlLEx1cik7cmV0dXJuIHUoZihlKSxSdXIpO2Nhc2UgOTp2YXIgVzA9aVsxXTtpZih1KGYoZSksanVyKSxXMCl7ZyhlLEd1cik7dmFyIExyPVcwWzFdLFRyPWZ1bmN0aW9uKFUsWSl7cmV0dXJuIGcoVSxSdHIpfSxIcj1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtSKERyWzFdLEhyLFRyLGUsTHIpLGcoZSxNdXIpfWVsc2UgZyhlLEJ1cik7cmV0dXJuIHUoZihlKSxxdXIpO2Nhc2UgMTA6dmFyIE9yPWlbMV07aWYodShmKGUpLFV1ciksT3Ipe2coZSxIdXIpO3ZhciBmcj1PclsxXSxScj1mdW5jdGlvbihVLFkpe3JldHVybiBnKFUsTHRyKX0sV3I9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07UihEclsxXSxXcixScixlLGZyKSxnKGUsWHVyKX1lbHNlIGcoZSxZdXIpO3JldHVybiB1KGYoZSksVnVyKTtjYXNlIDExOnUoZihlKSx6dXIpO3ZhciBKcj1pWzFdLGFyPWZ1bmN0aW9uKFUpe3JldHVybiB1KG4sVSl9LF9yPWZ1bmN0aW9uKFUpe3JldHVybiB1KHQsVSl9O3JldHVybiBSKHVXWzFdLF9yLGFyLGUsSnIpLHUoZihlKSxLdXIpO2Nhc2UgMTI6dShmKGUpLFd1cik7dmFyIElyPWlbMV0sZmU9ZnVuY3Rpb24oVSl7cmV0dXJuIHUobixVKX0sdjA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07cmV0dXJuIFIoT2xbNV0sdjAsZmUsZSxJciksdShmKGUpLEp1cik7Y2FzZSAxMzp1KGYoZSksJHVyKTt2YXIgUD1pWzFdLEw9ZnVuY3Rpb24oVSl7cmV0dXJuIHUobixVKX0sUT1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtyZXR1cm4gUihfQ1s2XSxRLEwsZSxQKSx1KGYoZSksWnVyKTtjYXNlIDE0OnUoZihlKSxRdXIpO3ZhciBpMD1pWzFdLGwwPWZ1bmN0aW9uKFUpe3JldHVybiB1KG4sVSl9LFMwPWZ1bmN0aW9uKFUpe3JldHVybiB1KHQsVSl9O3JldHVybiBSKG5XWzFdLFMwLGwwLGUsaTApLHUoZihlKSxyN3IpO2Nhc2UgMTU6dShmKGUpLGU3cik7dmFyIFQwPWlbMV0scnI9ZnVuY3Rpb24oVSl7cmV0dXJuIHUobixVKX0sTDA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07cmV0dXJuIFIoYldbMV0sTDAscnIsZSxUMCksdShmKGUpLG43cik7Y2FzZSAxNjp1KGYoZSksdDdyKTt2YXIgQj1pWzFdLFo9ZnVuY3Rpb24oVSl7cmV0dXJuIHUobixVKX0scDA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07cmV0dXJuIFIoeENbMl0scDAsWixlLEIpLHUoZihlKSx1N3IpO2Nhc2UgMTc6dShmKGUpLGk3cik7dmFyIGIwPWlbMV0sTzA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUobixVKX0sTTA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07cmV0dXJuIFIoYUNbMV0sTTAsTzAsZSxiMCksdShmKGUpLGY3cik7Y2FzZSAxODp1KGYoZSkseDdyKTt2YXIgZXI9aVsxXSx5cj1mdW5jdGlvbihVKXtyZXR1cm4gdShuLFUpfSx2cj1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtyZXR1cm4gUihSS1sxXSx2cix5cixlLGVyKSx1KGYoZSksbzdyKTtjYXNlIDE5OnUoZihlKSxhN3IpO3ZhciAkMD1pWzFdLEVyPWZ1bmN0aW9uKFUpe3JldHVybiB1KG4sVSl9LE1yPWZ1bmN0aW9uKFUpe3JldHVybiB1KHQsVSl9O3JldHVybiBSKG1XWzFdLE1yLEVyLGUsJDApLHUoZihlKSxjN3IpO2Nhc2UgMjA6dShmKGUpLHM3cik7dmFyIEJyPWlbMV0scXI9ZnVuY3Rpb24oVSl7cmV0dXJuIHUobixVKX0sanI9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07cmV0dXJuIFIoeVdbMV0sanIscXIsZSxCciksdShmKGUpLHY3cik7Y2FzZSAyMTp1KGYoZSksbDdyKTt2YXIgJHI9aVsxXSxuZT1mdW5jdGlvbihVKXtyZXR1cm4gdShuLFUpfSxRcj1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtyZXR1cm4gUihjV1syXSxRcixuZSxlLCRyKSx1KGYoZSksYjdyKTtjYXNlIDIyOnUoZihlKSxwN3IpO3ZhciBiZT1pWzFdLGFlPWZ1bmN0aW9uKFUpe3JldHVybiB1KG4sVSl9LHBlPWZ1bmN0aW9uKFUpe3JldHVybiB1KHQsVSl9O3JldHVybiBSKHZXWzFdLHBlLGFlLGUsYmUpLHUoZihlKSxtN3IpO2Nhc2UgMjM6dShmKGUpLF83cik7dmFyIG9lPWlbMV0sY2U9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07cmV0dXJuIHVyKGcxWzFdLGNlLGUsb2UpLHUoZihlKSx5N3IpO2Nhc2UgMjQ6dShmKGUpLGg3cik7dmFyIGdlPWlbMV0scTA9ZnVuY3Rpb24oVSl7cmV0dXJuIHUodCxVKX07cmV0dXJuIHVyKEJOWzFdLHEwLGUsZ2UpLHUoZihlKSxkN3IpO2Nhc2UgMjU6dShmKGUpLGs3cik7dmFyIEZyPWlbMV0sXz1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtyZXR1cm4gdXIoWnpbMV0sXyxlLEZyKSx1KGYoZSksdzdyKTtkZWZhdWx0OnUoZihlKSxFN3IpO3ZhciBrPWlbMV0sST1mdW5jdGlvbihVKXtyZXR1cm4gdSh0LFUpfTtyZXR1cm4gdXIocU5bMV0sSSxlLGspLHUoZihlKSxTN3IpfX0pLE4oZFcsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oczUsdCxuKTtyZXR1cm4gbyhDMChEdHIpLGksZSl9KSxOKGdDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxOdHIpLG8odCxlLGlbMV0pLHUoZihlKSxDdHIpO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGM1LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksUHRyKX0pLE4oa1csZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oZ0MsdCxuKTtyZXR1cm4gbyhDMChBdHIpLGksZSl9KSxOKEZDLGZ1bmN0aW9uKHQsbixlLGkpe2lmKGlbMF09PT0wKXJldHVybiB1KGYoZSksRnRyKSxvKG4sZSxpWzFdKSx1KGYoZSksVHRyKTt1KGYoZSksT3RyKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMocCl7cmV0dXJuIHUobixwKX1mdW5jdGlvbiBzKHApe3JldHVybiB1KHQscCl9cmV0dXJuIFIoJGVbMTddLHMsYyxlLHgpLHUoZihlKSxJdHIpfSksTih3VyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhGQyx0LG4pO3JldHVybiBvKEMwKGd0ciksaSxlKX0pO3ZhciBUQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sRVc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sdjU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFNXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oVEMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHd0ciksbyh0LGUsaVsxXSksdShmKGUpLEV0cik7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIodjUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxTdHIpfSksTihFVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhUQyx0LG4pO3JldHVybiBvKEMwKGt0ciksaSxlKX0pLE4odjUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFpuciksbyhmKGUpLHJ0cixRbnIpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhLKXtyZXR1cm4gdSh0LEspfWZ1bmN0aW9uIHMoSyl7cmV0dXJuIHUodCxLKX1SKFJuWzFdLHMsYyxlLHgpLHUoZihlKSxldHIpLHUoZihlKSxudHIpLG8oZihlKSx1dHIsdHRyKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkoSyl7cmV0dXJuIHUobixLKX1mdW5jdGlvbiBUKEspe3JldHVybiB1KHQsSyl9UigkZVsxOV0sVCx5LGUscCksdShmKGUpLGl0ciksdShmKGUpLGZ0ciksbyhmKGUpLG90cix4dHIpO3ZhciBFPWlbM107aWYoRSl7ZyhlLGF0cik7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKEspe3JldHVybiB1KHQsSyl9O3VyKHp2WzFdLHcsZSxkKSxnKGUsY3RyKX1lbHNlIGcoZSxzdHIpO3UoZihlKSx2dHIpLHUoZihlKSxsdHIpLG8oZihlKSxwdHIsYnRyKTt2YXIgRz1pWzRdO2lmKEcpe2coZSxtdHIpO3ZhciBBPUdbMV0sUz1mdW5jdGlvbihLKXtyZXR1cm4gdShuLEspfSxNPWZ1bmN0aW9uKEspe3JldHVybiB1KHQsSyl9O1IoJGVbMTNdLE0sUyxlLEEpLGcoZSxfdHIpfWVsc2UgZyhlLHl0cik7cmV0dXJuIHUoZihlKSxodHIpLHUoZihlKSxkdHIpfSksTihTVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh2NSx0LG4pO3JldHVybiBvKEMwKCRuciksaSxlKX0pO3ZhciBnVz1bMCxUQyxFVyx2NSxTV10sT0M9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEZXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGw1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxUVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKE9DLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxLbnIpLG8odCxlLGlbMV0pLHUoZihlKSxXbnIpO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGw1LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksSm5yKX0pLE4oRlcsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oT0MsdCxuKTtyZXR1cm4gbyhDMCh6bnIpLGksZSl9KSxOKGw1LGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxQbnIpLG8oZihlKSxMbnIsRG5yKTt2YXIgeD1pWzFdO3UoZihlKSxSbnIpO3ZhciBjPTA7bGUoZnVuY3Rpb24oRSxkKXtFJiZ1KGYoZSksQ25yKTtmdW5jdGlvbiB3KEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gRyhBKXtyZXR1cm4gdSh0LEEpfXJldHVybiBSKGdXWzFdLEcsdyxlLGQpLDF9LGMseCksdShmKGUpLGpuciksdShmKGUpLEduciksdShmKGUpLE1uciksbyhmKGUpLHFucixCbnIpO3ZhciBzPWlbMl07aWYocyl7ZyhlLFVucik7dmFyIHA9c1sxXSx5PWZ1bmN0aW9uKEUsZCl7dShmKEUpLEFucik7dmFyIHc9MDtyZXR1cm4gbGUoZnVuY3Rpb24oRyxBKXtHJiZ1KGYoRSksSW5yKTtmdW5jdGlvbiBTKE0pe3JldHVybiB1KHQsTSl9cmV0dXJuIHVyKGl1WzFdLFMsRSxBKSwxfSx3LGQpLHUoZihFKSxObnIpfSxUPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O1IoRHJbMV0sVCx5LGUscCksZyhlLEhucil9ZWxzZSBnKGUsWG5yKTtyZXR1cm4gdShmKGUpLFluciksdShmKGUpLFZucil9KSxOKFRXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGw1LHQsbik7cmV0dXJuIG8oQzAoT25yKSxpLGUpfSk7dmFyIElDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxPVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxiNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sSVc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sd2VlPVswLE9DLEZXLGw1LFRXXTtOKElDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxnbnIpLG8odCxlLGlbMV0pLHUoZihlKSxGbnIpO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGI1LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksVG5yKX0pLE4oT1csZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oSUMsdCxuKTtyZXR1cm4gbyhDMChTbnIpLGksZSl9KSxOKGI1LGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxjbnIpLG8oZihlKSx2bnIsc25yKTt2YXIgeD1pWzFdO3UoZihlKSxsbnIpO3ZhciBjPTA7bGUoZnVuY3Rpb24oRSxkKXtFJiZ1KGYoZSksYW5yKTtmdW5jdGlvbiB3KEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gRyhBKXtyZXR1cm4gdSh0LEEpfXJldHVybiBSKCRlWzEzXSxHLHcsZSxkKSwxfSxjLHgpLHUoZihlKSxibnIpLHUoZihlKSxwbnIpLHUoZihlKSxtbnIpLG8oZihlKSx5bnIsX25yKTt2YXIgcz1pWzJdO2lmKHMpe2coZSxobnIpO3ZhciBwPXNbMV0seT1mdW5jdGlvbihFLGQpe3UoZihFKSx4bnIpO3ZhciB3PTA7cmV0dXJuIGxlKGZ1bmN0aW9uKEcsQSl7RyYmdShmKEUpLGZucik7ZnVuY3Rpb24gUyhNKXtyZXR1cm4gdSh0LE0pfXJldHVybiB1cihpdVsxXSxTLEUsQSksMX0sdyxkKSx1KGYoRSksb25yKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtSKERyWzFdLFQseSxlLHApLGcoZSxkbnIpfWVsc2UgZyhlLGtucik7cmV0dXJuIHUoZihlKSx3bnIpLHUoZihlKSxFbnIpfSksTihJVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhiNSx0LG4pO3JldHVybiBvKEMwKGluciksaSxlKX0pO3ZhciBBQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sQVc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0scDU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LE5XPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LG01PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxDVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxFZWU9WzAsSUMsT1csYjUsSVddO04oQUMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLG5uciksbyh0LGUsaVsxXSksdShmKGUpLHRucik7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIocDUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSx1bnIpfSksTihBVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhBQyx0LG4pO3JldHVybiBvKEMwKGVuciksaSxlKX0pLE4ocDUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEhlciksbyhmKGUpLFllcixYZXIpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhFKXtyZXR1cm4gdShuLEUpfVIobTUsZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX0sYyxlLHgpLHUoZihlKSxWZXIpLHUoZihlKSx6ZXIpLG8oZihlKSxXZXIsS2VyKTt2YXIgcz1pWzJdO2lmKHMpe2coZSxKZXIpO3ZhciBwPXNbMV0seT1mdW5jdGlvbihFLGQpe3JldHVybiBnKEUsVWVyKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtSKERyWzFdLFQseSxlLHApLGcoZSwkZXIpfWVsc2UgZyhlLFplcik7cmV0dXJuIHUoZihlKSxRZXIpLHUoZihlKSxybnIpfSksTihOVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhwNSx0LG4pO3JldHVybiBvKEMwKHFlciksaSxlKX0pLE4obTUsZnVuY3Rpb24odCxuLGUsaSl7aWYoaSl7dShmKGUpLEdlcik7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKHApe3JldHVybiB1KG4scCl9LHM9ZnVuY3Rpb24ocCl7cmV0dXJuIHUodCxwKX07cmV0dXJuIFIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxNZXIpfXJldHVybiBnKGUsQmVyKX0pLE4oQ1csZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8obTUsdCxuKTtyZXR1cm4gbyhDMChqZXIpLGksZSl9KSxtdShLM3IsJGUsWzAsT2wseEMsYUMsUkssX0MsblcsdVcsY1csdlcsYlcsbVcseVcsYzUsaFcsczUsZFcsZ0Msa1csRkMsd1csZ1csd2VlLEVlZSxbMCxBQyxBVyxwNSxOVyxtNSxDV11dKTt2YXIgTkM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFBXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oTkMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEVlciksbyhmKGUpLGdlcixTZXIpO3ZhciB4PWlbMV07dShmKGUpLEZlcik7dmFyIGM9MDtsZShmdW5jdGlvbihFLGQpe0UmJnUoZihlKSx3ZXIpO2Z1bmN0aW9uIHcoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBHKEEpe3JldHVybiB1KHQsQSl9cmV0dXJuIFIoWXVbMzVdLEcsdyxlLGQpLDF9LGMseCksdShmKGUpLFRlciksdShmKGUpLE9lciksdShmKGUpLEllciksbyhmKGUpLE5lcixBZXIpO3ZhciBzPWlbMl07aWYocyl7ZyhlLENlcik7dmFyIHA9c1sxXSx5PWZ1bmN0aW9uKEUsZCl7dShmKEUpLGRlcik7dmFyIHc9MDtyZXR1cm4gbGUoZnVuY3Rpb24oRyxBKXtHJiZ1KGYoRSksaGVyKTtmdW5jdGlvbiBTKE0pe3JldHVybiB1KHQsTSl9cmV0dXJuIHVyKGl1WzFdLFMsRSxBKSwxfSx3LGQpLHUoZihFKSxrZXIpfSxUPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O1IoRHJbMV0sVCx5LGUscCksZyhlLFBlcil9ZWxzZSBnKGUsRGVyKTtyZXR1cm4gdShmKGUpLExlciksdShmKGUpLFJlcil9KSxOKFBXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKE5DLHQsbik7cmV0dXJuIG8oQzAoeWVyKSxpLGUpfSk7dmFyIEt2PVswLE5DLFBXXSxDQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sRFc9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sXzU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LExXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oQ0MsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHBlciksbyh0LGUsaVsxXSksdShmKGUpLG1lcik7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoXzUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxfZXIpfSksTihEVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhDQyx0LG4pO3JldHVybiBvKEMwKGJlciksaSxlKX0pLE4oXzUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLG5lciksbyhmKGUpLHVlcix0ZXIpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKFl1WzM1XSxzLGMsZSx4KSx1KGYoZSksaWVyKSx1KGYoZSksZmVyKSxvKGYoZSksb2VyLHhlcik7dmFyIHA9aVsyXTtpZihwKXtnKGUsYWVyKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLGVlcil9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsZSx5KSxnKGUsY2VyKX1lbHNlIGcoZSxzZXIpO3JldHVybiB1KGYoZSksdmVyKSx1KGYoZSksbGVyKX0pLE4oTFcsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oXzUsdCxuKTtyZXR1cm4gbyhDMChyZXIpLGksZSl9KTt2YXIgUlc9WzAsQ0MsRFcsXzUsTFddLFBDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxqVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFBDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxOcnIpLG8oZihlKSxQcnIsQ3JyKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoVil7cmV0dXJuIHUobixWKX1mdW5jdGlvbiBzKFYpe3JldHVybiB1KHQsVil9UihxZVszMV0scyxjLGUseCksdShmKGUpLERyciksdShmKGUpLExyciksbyhmKGUpLGpycixScnIpO3ZhciBwPWlbMl07ZnVuY3Rpb24geShWKXtyZXR1cm4gdShuLFYpfWZ1bmN0aW9uIFQoVil7cmV0dXJuIHUodCxWKX1SKFl1WzM1XSxULHksZSxwKSx1KGYoZSksR3JyKSx1KGYoZSksTXJyKSxvKGYoZSkscXJyLEJycik7dmFyIEU9aVszXTtpZihFKXtnKGUsVXJyKTt2YXIgZD1FWzFdLHc9ZnVuY3Rpb24oVil7cmV0dXJuIHUobixWKX0sRz1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKFJXWzFdLEcsdyxlLGQpLGcoZSxIcnIpfWVsc2UgZyhlLFhycik7dShmKGUpLFlyciksdShmKGUpLFZyciksbyhmKGUpLEtycix6cnIpO3ZhciBBPWlbNF07aWYoQSl7ZyhlLFdycik7dmFyIFM9QVsxXSxNPWZ1bmN0aW9uKFYsZjApe3JldHVybiBnKFYsQXJyKX0sSz1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKERyWzFdLEssTSxlLFMpLGcoZSxKcnIpfWVsc2UgZyhlLCRycik7cmV0dXJuIHUoZihlKSxacnIpLHUoZihlKSxRcnIpfSksTihqVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhQQyx0LG4pO3JldHVybiBvKEMwKElyciksaSxlKX0pO3ZhciBHVz1bMCxSVyxQQyxqV10sREM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LE1XPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oREMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGxyciksbyhmKGUpLHBycixicnIpO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhBKXtyZXR1cm4gdSh0LEEpfWZ1bmN0aW9uIHMoQSl7cmV0dXJuIHUodCxBKX1SKFJuWzFdLHMsYyxlLHgpLHUoZihlKSxtcnIpLHUoZihlKSxfcnIpLG8oZihlKSxocnIseXJyKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBUKEEpe3JldHVybiB1KHQsQSl9UihZdVszNV0sVCx5LGUscCksdShmKGUpLGRyciksdShmKGUpLGtyciksbyhmKGUpLEVycix3cnIpO3ZhciBFPWlbM107aWYoRSl7ZyhlLFNycik7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKEEsUyl7cmV0dXJuIGcoQSx2cnIpfSxHPWZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9O1IoRHJbMV0sRyx3LGUsZCksZyhlLGdycil9ZWxzZSBnKGUsRnJyKTtyZXR1cm4gdShmKGUpLFRyciksdShmKGUpLE9ycil9KSxOKE1XLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKERDLHQsbik7cmV0dXJuIG8oQzAoc3JyKSxpLGUpfSk7dmFyIEJXPVswLERDLE1XXSxMQz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxxVz1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9O04oTEMsZnVuY3Rpb24odCxuLGUpe3UoZihuKSxKMHIpLG8oZihuKSxaMHIsJDByKTt2YXIgaT1lWzFdO2lmKGkpe2cobixRMHIpO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfSxzPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoUm5bMV0scyxjLG4seCksZyhuLHJycil9ZWxzZSBnKG4sZXJyKTt1KGYobiksbnJyKSx1KGYobiksdHJyKSxvKGYobiksaXJyLHVycik7dmFyIHA9ZVsyXTtpZihwKXtnKG4sZnJyKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLFcwcil9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsbix5KSxnKG4seHJyKX1lbHNlIGcobixvcnIpO3JldHVybiB1KGYobiksYXJyKSx1KGYobiksY3JyKX0pLE4ocVcsZnVuY3Rpb24odCxuKXt2YXIgZT11KExDLHQpO3JldHVybiBvKEMwKEswciksZSxuKX0pO3ZhciBVVz1bMCxMQyxxV10sUkM9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sSFc9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfTtOKFJDLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksUDByKSxvKGYobiksTDByLEQwcik7dmFyIGk9ZVsxXTtpZihpKXtnKG4sUjByKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX0scz1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKFJuWzFdLHMsYyxuLHgpLGcobixqMHIpfWVsc2UgZyhuLEcwcik7dShmKG4pLE0wciksdShmKG4pLEIwciksbyhmKG4pLFUwcixxMHIpO3ZhciBwPWVbMl07aWYocCl7ZyhuLEgwcik7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCxDMHIpfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULG4seSksZyhuLFgwcil9ZWxzZSBnKG4sWTByKTtyZXR1cm4gdShmKG4pLFYwciksdShmKG4pLHowcil9KSxOKEhXLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShSQyx0KTtyZXR1cm4gbyhDMChOMHIpLGUsbil9KTt2YXIgWFc9WzAsUkMsSFddLGpDPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFlXPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihqQyxmdW5jdGlvbih0LG4sZSl7dShmKG4pLEUwciksbyhmKG4pLGcwcixTMHIpO3ZhciBpPWVbMV07aWYoaSl7ZyhuLEYwcik7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKHAseSl7cmV0dXJuIGcocCx3MHIpfSxzPWZ1bmN0aW9uKHApe3JldHVybiB1KHQscCl9O1IoRHJbMV0scyxjLG4seCksZyhuLFQwcil9ZWxzZSBnKG4sTzByKTtyZXR1cm4gdShmKG4pLEkwciksdShmKG4pLEEwcil9KSxOKFlXLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShqQyx0KTtyZXR1cm4gbyhDMChrMHIpLGUsbil9KTt2YXIgVlc9WzAsakMsWVddLEdDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx6Vz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKEdDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxpMHIpLG8oZihlKSx4MHIsZjByKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBzKEEpe3JldHVybiB1KHQsQSl9UihxZVszMV0scyxjLGUseCksdShmKGUpLG8wciksdShmKGUpLGEwciksbyhmKGUpLHMwcixjMHIpO3ZhciBwPWlbMl07ZnVuY3Rpb24geShBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIFQoQSl7cmV0dXJuIHUodCxBKX1SKFl1WzM1XSxULHksZSxwKSx1KGYoZSksdjByKSx1KGYoZSksbDByKSxvKGYoZSkscDByLGIwcik7dmFyIEU9aVszXTtpZihFKXtnKGUsbTByKTt2YXIgZD1FWzFdLHc9ZnVuY3Rpb24oQSxTKXtyZXR1cm4gZyhBLHUwcil9LEc9ZnVuY3Rpb24oQSl7cmV0dXJuIHUodCxBKX07UihEclsxXSxHLHcsZSxkKSxnKGUsXzByKX1lbHNlIGcoZSx5MHIpO3JldHVybiB1KGYoZSksaDByKSx1KGYoZSksZDByKX0pLE4oelcsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oR0MsdCxuKTtyZXR1cm4gbyhDMCh0MHIpLGksZSl9KTt2YXIgS1c9WzAsR0MselddLE1DPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxXVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKE1DLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxEUTApLG8oZihlKSxSUTAsTFEwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoVil7cmV0dXJuIHUobixWKX1mdW5jdGlvbiBzKFYpe3JldHVybiB1KHQsVil9UihSblsxXSxzLGMsZSx4KSx1KGYoZSksalEwKSx1KGYoZSksR1EwKSxvKGYoZSksQlEwLE1RMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUscVEwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oVil7cmV0dXJuIHUobixWKX0sRT1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKCRlWzIyXVsxXSxFLFQsZSx5KSxnKGUsVVEwKX1lbHNlIGcoZSxIUTApO3UoZihlKSxYUTApLHUoZihlKSxZUTApLG8oZihlKSx6UTAsVlEwKTt2YXIgZD1pWzNdO2Z1bmN0aW9uIHcoVil7cmV0dXJuIHUobixWKX1mdW5jdGlvbiBHKFYpe3JldHVybiB1KHQsVil9UigkZVsxM10sRyx3LGUsZCksdShmKGUpLEtRMCksdShmKGUpLFdRMCksbyhmKGUpLCRRMCxKUTApO3ZhciBBPWlbNF07aWYoQSl7ZyhlLFpRMCk7dmFyIFM9QVsxXSxNPWZ1bmN0aW9uKFYsZjApe3JldHVybiBnKFYsUFEwKX0sSz1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKERyWzFdLEssTSxlLFMpLGcoZSxRUTApfWVsc2UgZyhlLHIwcik7cmV0dXJuIHUoZihlKSxlMHIpLHUoZihlKSxuMHIpfSksTihXVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhNQyx0LG4pO3JldHVybiBvKEMwKENRMCksaSxlKX0pO3ZhciB5NT1bMCxNQyxXV10sQkM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEpXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oQkMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFFaMCksbyhmKGUpLGVRMCxyUTApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhlMCl7cmV0dXJuIHUobixlMCl9ZnVuY3Rpb24gcyhlMCl7cmV0dXJuIHUodCxlMCl9UihSblsxXSxzLGMsZSx4KSx1KGYoZSksblEwKSx1KGYoZSksdFEwKSxvKGYoZSksaVEwLHVRMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUsZlEwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZTApe3JldHVybiB1KG4sZTApfSxFPWZ1bmN0aW9uKGUwKXtyZXR1cm4gdSh0LGUwKX07UigkZVsyMl1bMV0sRSxULGUseSksZyhlLHhRMCl9ZWxzZSBnKGUsb1EwKTt1KGYoZSksYVEwKSx1KGYoZSksY1EwKSxvKGYoZSksdlEwLHNRMCk7dmFyIGQ9aVszXTtpZihkKXtnKGUsbFEwKTt2YXIgdz1kWzFdLEc9ZnVuY3Rpb24oZTApe3JldHVybiB1KG4sZTApfSxBPWZ1bmN0aW9uKGUwKXtyZXR1cm4gdSh0LGUwKX07UigkZVsxM10sQSxHLGUsdyksZyhlLGJRMCl9ZWxzZSBnKGUscFEwKTt1KGYoZSksbVEwKSx1KGYoZSksX1EwKSxvKGYoZSksaFEwLHlRMCk7dmFyIFM9aVs0XTtpZihTKXtnKGUsZFEwKTt2YXIgTT1TWzFdLEs9ZnVuY3Rpb24oZTApe3JldHVybiB1KG4sZTApfSxWPWZ1bmN0aW9uKGUwKXtyZXR1cm4gdSh0LGUwKX07UigkZVsxM10sVixLLGUsTSksZyhlLGtRMCl9ZWxzZSBnKGUsd1EwKTt1KGYoZSksRVEwKSx1KGYoZSksU1EwKSxvKGYoZSksRlEwLGdRMCk7dmFyIGYwPWlbNV07aWYoZjApe2coZSxUUTApO3ZhciBtMD1mMFsxXSxrMD1mdW5jdGlvbihlMCx4MCl7cmV0dXJuIGcoZTAsWlowKX0sZzA9ZnVuY3Rpb24oZTApe3JldHVybiB1KHQsZTApfTtSKERyWzFdLGcwLGswLGUsbTApLGcoZSxPUTApfWVsc2UgZyhlLElRMCk7cmV0dXJuIHUoZihlKSxBUTApLHUoZihlKSxOUTApfSksTihKVyxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhCQyx0LG4pO3JldHVybiBvKEMwKCRaMCksaSxlKX0pO3ZhciBoNT1bMCxCQyxKV10scUM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LCRXPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGQ1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxaVz1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHFDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxLWjApLG8odCxlLGlbMV0pLHUoZihlKSxXWjApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGQ1LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksSlowKX0pLE4oJFcsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8ocUMsdCxuKTtyZXR1cm4gbyhDMCh6WjApLGksZSl9KSxOKGQ1LGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxGWjApLG8oZihlKSxPWjAsVFowKTt2YXIgeD1pWzFdO2lmKHgpe2coZSxJWjApO3ZhciBjPXhbMV0scz1mdW5jdGlvbihBKXtyZXR1cm4gdShuLEEpfSxwPWZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9O1IocWVbMzFdLHAscyxlLGMpLGcoZSxBWjApfWVsc2UgZyhlLE5aMCk7dShmKGUpLENaMCksdShmKGUpLFBaMCksbyhmKGUpLExaMCxEWjApO3ZhciB5PWlbMl07dShmKGUpLFJaMCk7dmFyIFQ9MDtsZShmdW5jdGlvbihBLFMpe0EmJnUoZihlKSxnWjApO2Z1bmN0aW9uIE0oVil7cmV0dXJuIHUobixWKX1mdW5jdGlvbiBLKFYpe3JldHVybiB1KHQsVil9cmV0dXJuIFIoWXVbMzVdLEssTSxlLFMpLDF9LFQseSksdShmKGUpLGpaMCksdShmKGUpLEdaMCksdShmKGUpLE1aMCksbyhmKGUpLHFaMCxCWjApO3ZhciBFPWlbM107aWYoRSl7ZyhlLFVaMCk7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKEEsUyl7cmV0dXJuIGcoQSxTWjApfSxHPWZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9O1IoRHJbMV0sRyx3LGUsZCksZyhlLEhaMCl9ZWxzZSBnKGUsWFowKTtyZXR1cm4gdShmKGUpLFlaMCksdShmKGUpLFZaMCl9KSxOKFpXLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGQ1LHQsbik7cmV0dXJuIG8oQzAoRVowKSxpLGUpfSk7dmFyIFFXPVswLHFDLCRXLGQ1LFpXXSxVQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0scko9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihVQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksZVowKSxvKGYoZSksdFowLG5aMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEcpe3JldHVybiB1KG4sRyl9ZnVuY3Rpb24gcyhHKXtyZXR1cm4gdSh0LEcpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSx1WjApLHUoZihlKSxpWjApLG8oZihlKSx4WjAsZlowKTt2YXIgcD1pWzJdO3UoZihlKSxvWjApO3ZhciB5PTA7bGUoZnVuY3Rpb24oRyxBKXtHJiZ1KGYoZSksclowKTtmdW5jdGlvbiBTKEspe3JldHVybiB1KG4sSyl9ZnVuY3Rpb24gTShLKXtyZXR1cm4gdSh0LEspfXJldHVybiBSKFFXWzFdLE0sUyxlLEEpLDF9LHkscCksdShmKGUpLGFaMCksdShmKGUpLGNaMCksdShmKGUpLHNaMCksbyhmKGUpLGxaMCx2WjApO3ZhciBUPWlbM107aWYoVCl7ZyhlLGJaMCk7dmFyIEU9VFsxXSxkPWZ1bmN0aW9uKEcsQSl7cmV0dXJuIGcoRyxRJDApfSx3PWZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9O1IoRHJbMV0sdyxkLGUsRSksZyhlLHBaMCl9ZWxzZSBnKGUsbVowKTtyZXR1cm4gdShmKGUpLF9aMCksdShmKGUpLHlaMCksbyhmKGUpLGRaMCxoWjApLG8obixlLGlbNF0pLHUoZihlKSxrWjApLHUoZihlKSx3WjApfSksTihySixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhVQyx0LG4pO3JldHVybiBvKEMwKFokMCksaSxlKX0pO3ZhciBlSj1bMCxRVyxVQyxySl0sSEM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LG5KPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oSEMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFAkMCksbyhmKGUpLEwkMCxEJDApO3ZhciB4PWlbMV07aWYoeCl7ZyhlLFIkMCk7dmFyIGM9eFsxXSxzPWZ1bmN0aW9uKHcpe3JldHVybiB1KG4sdyl9LHA9ZnVuY3Rpb24odyl7cmV0dXJuIHUodCx3KX07UihxZVszMV0scCxzLGUsYyksZyhlLGokMCl9ZWxzZSBnKGUsRyQwKTt1KGYoZSksTSQwKSx1KGYoZSksQiQwKSxvKGYoZSksVSQwLHEkMCk7dmFyIHk9aVsyXTtpZih5KXtnKGUsSCQwKTt2YXIgVD15WzFdLEU9ZnVuY3Rpb24odyxHKXtyZXR1cm4gZyh3LEMkMCl9LGQ9ZnVuY3Rpb24odyl7cmV0dXJuIHUodCx3KX07UihEclsxXSxkLEUsZSxUKSxnKGUsWCQwKX1lbHNlIGcoZSxZJDApO3JldHVybiB1KGYoZSksViQwKSx1KGYoZSkseiQwKSxvKGYoZSksVyQwLEskMCksbyhuLGUsaVszXSksdShmKGUpLEokMCksdShmKGUpLCQkMCl9KSxOKG5KLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEhDLHQsbik7cmV0dXJuIG8oQzAoTiQwKSxpLGUpfSk7dmFyIHRKPVswLEhDLG5KXSxYQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sdUo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihYQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksaCQwKSxvKGYoZSksayQwLGQkMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSx3JDApLHUoZihlKSxFJDApLG8oZihlKSxnJDAsUyQwKTt2YXIgcD1pWzJdO2lmKHApe2coZSxGJDApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkLHcpe3JldHVybiBnKGQseSQwKX0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKERyWzFdLEUsVCxlLHkpLGcoZSxUJDApfWVsc2UgZyhlLE8kMCk7cmV0dXJuIHUoZihlKSxJJDApLHUoZihlKSxBJDApfSksTih1SixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhYQyx0LG4pO3JldHVybiBvKEMwKF8kMCksaSxlKX0pO3ZhciBpSj1bMCxYQyx1Sl0sWUM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGZKPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGs1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx4Sj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFlDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxiJDApLG8odCxlLGlbMV0pLHUoZihlKSxwJDApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGs1LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksbSQwKX0pLE4oZkosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWUMsdCxuKTtyZXR1cm4gbyhDMChsJDApLGksZSl9KSxOKGs1LGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxZSjApLG8oZihlKSx6SjAsVkowKTt2YXIgeD1pWzFdO2lmKHgpe2coZSxLSjApO3ZhciBjPXhbMV0scz1mdW5jdGlvbihNKXtyZXR1cm4gdShuLE0pfSxwPWZ1bmN0aW9uKE0pe3JldHVybiB1KHQsTSl9O1IoZGlbNV0scCxzLGUsYyksZyhlLFdKMCl9ZWxzZSBnKGUsSkowKTt1KGYoZSksJEowKSx1KGYoZSksWkowKSxvKGYoZSksciQwLFFKMCk7dmFyIHk9aVsyXTt1KGYoZSksZSQwKSxvKHQsZSx5WzFdKSx1KGYoZSksbiQwKTt2YXIgVD15WzJdO2Z1bmN0aW9uIEUoTSl7cmV0dXJuIHUobixNKX1mdW5jdGlvbiBkKE0pe3JldHVybiB1KHQsTSl9UihLdlsxXSxkLEUsZSxUKSx1KGYoZSksdCQwKSx1KGYoZSksdSQwKSx1KGYoZSksaSQwKSxvKGYoZSkseCQwLGYkMCk7dmFyIHc9aVszXTtpZih3KXtnKGUsbyQwKTt2YXIgRz13WzFdLEE9ZnVuY3Rpb24oTSxLKXtyZXR1cm4gZyhNLFhKMCl9LFM9ZnVuY3Rpb24oTSl7cmV0dXJuIHUodCxNKX07UihEclsxXSxTLEEsZSxHKSxnKGUsYSQwKX1lbHNlIGcoZSxjJDApO3JldHVybiB1KGYoZSkscyQwKSx1KGYoZSksdiQwKX0pLE4oeEosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oazUsdCxuKTtyZXR1cm4gbyhDMChISjApLGksZSl9KTt2YXIgb0o9WzAsWUMsZkosazUseEpdLFZDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxhSj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFZDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxzSjApLG8oZihlKSxsSjAsdkowKTt2YXIgeD1pWzFdO3UoZihlKSxiSjApLG8odCxlLHhbMV0pLHUoZihlKSxwSjApO3ZhciBjPXhbMl07ZnVuY3Rpb24gcyhrMCl7cmV0dXJuIHUobixrMCl9ZnVuY3Rpb24gcChrMCl7cmV0dXJuIHUodCxrMCl9UihLdlsxXSxwLHMsZSxjKSx1KGYoZSksbUowKSx1KGYoZSksX0owKSx1KGYoZSkseUowKSxvKGYoZSksZEowLGhKMCk7dmFyIHk9aVsyXTtpZih5KXtnKGUsa0owKTt2YXIgVD15WzFdLEU9ZnVuY3Rpb24oazApe3JldHVybiB1KG4sazApfSxkPWZ1bmN0aW9uKGswKXtyZXR1cm4gdSh0LGswKX07UihvSlsxXSxkLEUsZSxUKSxnKGUsd0owKX1lbHNlIGcoZSxFSjApO3UoZihlKSxTSjApLHUoZihlKSxnSjApLG8oZihlKSxUSjAsRkowKTt2YXIgdz1pWzNdO2lmKHcpe3ZhciBHPXdbMV07ZyhlLE9KMCksdShmKGUpLElKMCksbyh0LGUsR1sxXSksdShmKGUpLEFKMCk7dmFyIEE9R1syXSxTPWZ1bmN0aW9uKGswKXtyZXR1cm4gdShuLGswKX0sTT1mdW5jdGlvbihrMCl7cmV0dXJuIHUodCxrMCl9O1IoS3ZbMV0sTSxTLGUsQSksdShmKGUpLE5KMCksZyhlLENKMCl9ZWxzZSBnKGUsUEowKTt1KGYoZSksREowKSx1KGYoZSksTEowKSxvKGYoZSksakowLFJKMCk7dmFyIEs9aVs0XTtpZihLKXtnKGUsR0owKTt2YXIgVj1LWzFdLGYwPWZ1bmN0aW9uKGswLGcwKXtyZXR1cm4gZyhrMCxjSjApfSxtMD1mdW5jdGlvbihrMCl7cmV0dXJuIHUodCxrMCl9O1IoRHJbMV0sbTAsZjAsZSxWKSxnKGUsTUowKX1lbHNlIGcoZSxCSjApO3JldHVybiB1KGYoZSkscUowKSx1KGYoZSksVUowKX0pLE4oYUosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oVkMsdCxuKTtyZXR1cm4gbyhDMChhSjApLGksZSl9KTt2YXIgY0o9WzAsb0osVkMsYUpdLHpDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxzSj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx3NT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sdko9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07Tih6QyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksZkowKSxvKHQsZSxpWzFdKSx1KGYoZSkseEowKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUih3NSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLG9KMCl9KSxOKHNKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHpDLHQsbik7cmV0dXJuIG8oQzAoaUowKSxpLGUpfSksTih3NSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSkselcwKSxvKGYoZSksV1cwLEtXMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIoZGlbNV0scyxjLGUseCksdShmKGUpLEpXMCksdShmKGUpLCRXMCksbyhmKGUpLFFXMCxaVzApO3ZhciBwPWlbMl07aWYocCl7ZyhlLHJKMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQpe3JldHVybiB1KG4sZCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihxZVszMV0sRSxULGUseSksZyhlLGVKMCl9ZWxzZSBnKGUsbkowKTtyZXR1cm4gdShmKGUpLHRKMCksdShmKGUpLHVKMCl9KSxOKHZKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHc1LHQsbik7cmV0dXJuIG8oQzAoVlcwKSxpLGUpfSk7dmFyIGxKPVswLHpDLHNKLHc1LHZKXSxLQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sYko9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sRTU9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxwSj1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX07TihLQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksT1cwKSxvKGYoZSksQVcwLElXMCk7dmFyIHg9aVsxXTt1KGYoZSksTlcwKTt2YXIgYz0wO2xlKGZ1bmN0aW9uKEUsZCl7RSYmdShmKGUpLFRXMCk7ZnVuY3Rpb24gdyhBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIEcoQSl7cmV0dXJuIHUodCxBKX1yZXR1cm4gUihsSlsxXSxHLHcsZSxkKSwxfSxjLHgpLHUoZihlKSxDVzApLHUoZihlKSxQVzApLHUoZihlKSxEVzApLG8oZihlKSxSVzAsTFcwKSxvKEU1LGUsaVsyXSksdShmKGUpLGpXMCksdShmKGUpLEdXMCksbyhmKGUpLEJXMCxNVzApO3ZhciBzPWlbM107aWYocyl7ZyhlLHFXMCk7dmFyIHA9c1sxXSx5PWZ1bmN0aW9uKEUsZCl7cmV0dXJuIGcoRSxGVzApfSxUPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O1IoRHJbMV0sVCx5LGUscCksZyhlLFVXMCl9ZWxzZSBnKGUsSFcwKTtyZXR1cm4gdShmKGUpLFhXMCksdShmKGUpLFlXMCl9KSxOKGJKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEtDLHQsbik7cmV0dXJuIG8oQzAoZ1cwKSxpLGUpfSksTihFNSxmdW5jdGlvbih0LG4pe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGcodCx3VzApO2Nhc2UgMTpyZXR1cm4gZyh0LEVXMCk7ZGVmYXVsdDpyZXR1cm4gZyh0LFNXMCl9fSksTihwSixmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChrVzApLEU1LHQpfSk7dmFyIElsPVswLGxKLEtDLGJKLEU1LHBKXSxXQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sbUo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihXQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksaVcwKSxvKGYoZSkseFcwLGZXMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gcyhBKXtyZXR1cm4gdSh0LEEpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxvVzApLHUoZihlKSxhVzApLG8oZihlKSxzVzAsY1cwKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBUKEEpe3JldHVybiB1KHQsQSl9UihZdVszNV0sVCx5LGUscCksdShmKGUpLHZXMCksdShmKGUpLGxXMCksbyhmKGUpLHBXMCxiVzApO3ZhciBFPWlbM107aWYoRSl7ZyhlLG1XMCk7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKEEsUyl7cmV0dXJuIGcoQSx1VzApfSxHPWZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9O1IoRHJbMV0sRyx3LGUsZCksZyhlLF9XMCl9ZWxzZSBnKGUseVcwKTtyZXR1cm4gdShmKGUpLGhXMCksdShmKGUpLGRXMCl9KSxOKG1KLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFdDLHQsbik7cmV0dXJuIG8oQzAodFcwKSxpLGUpfSk7dmFyIF9KPVswLFdDLG1KXSxKQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seUo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihKQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSkscUswKSxvKGYoZSksSEswLFVLMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gcyhBKXtyZXR1cm4gdSh0LEEpfVIoWXVbMzVdLHMsYyxlLHgpLHUoZihlKSxYSzApLHUoZihlKSxZSzApLG8oZihlKSx6SzAsVkswKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBUKEEpe3JldHVybiB1KHQsQSl9UihxZVszMV0sVCx5LGUscCksdShmKGUpLEtLMCksdShmKGUpLFdLMCksbyhmKGUpLCRLMCxKSzApO3ZhciBFPWlbM107aWYoRSl7ZyhlLFpLMCk7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKEEsUyl7cmV0dXJuIGcoQSxCSzApfSxHPWZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9O1IoRHJbMV0sRyx3LGUsZCksZyhlLFFLMCl9ZWxzZSBnKGUsclcwKTtyZXR1cm4gdShmKGUpLGVXMCksdShmKGUpLG5XMCl9KSxOKHlKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEpDLHQsbik7cmV0dXJuIG8oQzAoTUswKSxpLGUpfSk7dmFyIGhKPVswLEpDLHlKXSwkQz1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sZEo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sUzU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGtKPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oJEMsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGZLMCksbyhmKGUpLG9LMCx4SzApO3ZhciB4PWlbMV07aWYoeCl7ZyhlLGFLMCk7dmFyIGM9eFsxXSxzPWZ1bmN0aW9uKGcwKXtyZXR1cm4gdShuLGcwKX07UihTNSxmdW5jdGlvbihnMCl7cmV0dXJuIHUodCxnMCl9LHMsZSxjKSxnKGUsY0swKX1lbHNlIGcoZSxzSzApO3UoZihlKSx2SzApLHUoZihlKSxsSzApLG8oZihlKSxwSzAsYkswKTt2YXIgcD1pWzJdO2lmKHApe2coZSxtSzApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihnMCl7cmV0dXJuIHUobixnMCl9LEU9ZnVuY3Rpb24oZzApe3JldHVybiB1KHQsZzApfTtSKHFlWzMxXSxFLFQsZSx5KSxnKGUsX0swKX1lbHNlIGcoZSx5SzApO3UoZihlKSxoSzApLHUoZihlKSxkSzApLG8oZihlKSx3SzAsa0swKTt2YXIgZD1pWzNdO2lmKGQpe2coZSxFSzApO3ZhciB3PWRbMV0sRz1mdW5jdGlvbihnMCl7cmV0dXJuIHUobixnMCl9LEE9ZnVuY3Rpb24oZzApe3JldHVybiB1KHQsZzApfTtSKHFlWzMxXSxBLEcsZSx3KSxnKGUsU0swKX1lbHNlIGcoZSxnSzApO3UoZihlKSxGSzApLHUoZihlKSxUSzApLG8oZihlKSxJSzAsT0swKTt2YXIgUz1pWzRdO2Z1bmN0aW9uIE0oZzApe3JldHVybiB1KG4sZzApfWZ1bmN0aW9uIEsoZzApe3JldHVybiB1KHQsZzApfVIoWXVbMzVdLEssTSxlLFMpLHUoZihlKSxBSzApLHUoZihlKSxOSzApLG8oZihlKSxQSzAsQ0swKTt2YXIgVj1pWzVdO2lmKFYpe2coZSxESzApO3ZhciBmMD1WWzFdLG0wPWZ1bmN0aW9uKGcwLGUwKXtyZXR1cm4gZyhnMCxpSzApfSxrMD1mdW5jdGlvbihnMCl7cmV0dXJuIHUodCxnMCl9O1IoRHJbMV0sazAsbTAsZSxmMCksZyhlLExLMCl9ZWxzZSBnKGUsUkswKTtyZXR1cm4gdShmKGUpLGpLMCksdShmKGUpLEdLMCl9KSxOKGRKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKCRDLHQsbik7cmV0dXJuIG8oQzAodUswKSxpLGUpfSksTihTNSxmdW5jdGlvbih0LG4sZSxpKXtpZihpWzBdPT09MCl7dmFyIHg9aVsxXTt1KGYoZSksJHowKSx1KGYoZSksWnowKSxvKHQsZSx4WzFdKSx1KGYoZSksUXowKTt2YXIgYz14WzJdLHM9ZnVuY3Rpb24oZCl7cmV0dXJuIHUobixkKX0scD1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtyZXR1cm4gUihJbFsyXSxwLHMsZSxjKSx1KGYoZSksckswKSx1KGYoZSksZUswKX11KGYoZSksbkswKTt2YXIgeT1pWzFdO2Z1bmN0aW9uIFQoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBFKGQpe3JldHVybiB1KHQsZCl9cmV0dXJuIFIocWVbMzFdLEUsVCxlLHkpLHUoZihlKSx0SzApfSksTihrSixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhTNSx0LG4pO3JldHVybiBvKEMwKEp6MCksaSxlKX0pO3ZhciB3Sj1bMCwkQyxkSixTNSxrSl0sWkM9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEVKPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGc1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxTSj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFpDLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxnejApLG8oZihlKSxUejAsRnowKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoSyl7cmV0dXJuIHUobixLKX1SKGc1LGZ1bmN0aW9uKEspe3JldHVybiB1KHQsSyl9LGMsZSx4KSx1KGYoZSksT3owKSx1KGYoZSksSXowKSxvKGYoZSksTnowLEF6MCk7dmFyIHM9aVsyXTtmdW5jdGlvbiBwKEspe3JldHVybiB1KG4sSyl9ZnVuY3Rpb24geShLKXtyZXR1cm4gdSh0LEspfVIocWVbMzFdLHkscCxlLHMpLHUoZihlKSxDejApLHUoZihlKSxQejApLG8oZihlKSxMejAsRHowKTt2YXIgVD1pWzNdO2Z1bmN0aW9uIEUoSyl7cmV0dXJuIHUobixLKX1mdW5jdGlvbiBkKEspe3JldHVybiB1KHQsSyl9UihZdVszNV0sZCxFLGUsVCksdShmKGUpLFJ6MCksdShmKGUpLGp6MCksbyhmKGUpLE16MCxHejApO3ZhciB3PWlbNF07byhmKGUpLEJ6MCx3KSx1KGYoZSkscXowKSx1KGYoZSksVXowKSxvKGYoZSksWHowLEh6MCk7dmFyIEc9aVs1XTtpZihHKXtnKGUsWXowKTt2YXIgQT1HWzFdLFM9ZnVuY3Rpb24oSyxWKXtyZXR1cm4gZyhLLFN6MCl9LE09ZnVuY3Rpb24oSyl7cmV0dXJuIHUodCxLKX07UihEclsxXSxNLFMsZSxBKSxnKGUsVnowKX1lbHNlIGcoZSx6ejApO3JldHVybiB1KGYoZSksS3owKSx1KGYoZSksV3owKX0pLE4oRUosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWkMsdCxuKTtyZXR1cm4gbyhDMChFejApLGksZSl9KSxOKGc1LGZ1bmN0aW9uKHQsbixlLGkpe2lmKGlbMF09PT0wKXt2YXIgeD1pWzFdO3UoZihlKSxtejApLHUoZihlKSxfejApLG8odCxlLHhbMV0pLHUoZihlKSx5ejApO3ZhciBjPXhbMl0scz1mdW5jdGlvbihkKXtyZXR1cm4gdShuLGQpfSxwPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O3JldHVybiBSKElsWzJdLHAscyxlLGMpLHUoZihlKSxoejApLHUoZihlKSxkejApfXUoZihlKSxrejApO3ZhciB5PWlbMV07ZnVuY3Rpb24gVChkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIEUoZCl7cmV0dXJuIHUodCxkKX1yZXR1cm4gUihkaVs1XSxFLFQsZSx5KSx1KGYoZSksd3owKX0pLE4oU0osZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oZzUsdCxuKTtyZXR1cm4gbyhDMChwejApLGksZSl9KTt2YXIgZ0o9WzAsWkMsRUosZzUsU0pdLFFDPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxGSj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxGNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sVEo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihRQyxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksWFYwKSxvKGYoZSksVlYwLFlWMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEspe3JldHVybiB1KG4sSyl9UihGNSxmdW5jdGlvbihLKXtyZXR1cm4gdSh0LEspfSxjLGUseCksdShmKGUpLHpWMCksdShmKGUpLEtWMCksbyhmKGUpLEpWMCxXVjApO3ZhciBzPWlbMl07ZnVuY3Rpb24gcChLKXtyZXR1cm4gdShuLEspfWZ1bmN0aW9uIHkoSyl7cmV0dXJuIHUodCxLKX1SKHFlWzMxXSx5LHAsZSxzKSx1KGYoZSksJFYwKSx1KGYoZSksWlYwKSxvKGYoZSkscnowLFFWMCk7dmFyIFQ9aVszXTtmdW5jdGlvbiBFKEspe3JldHVybiB1KG4sSyl9ZnVuY3Rpb24gZChLKXtyZXR1cm4gdSh0LEspfVIoWXVbMzVdLGQsRSxlLFQpLHUoZihlKSxlejApLHUoZihlKSxuejApLG8oZihlKSx1ejAsdHowKTt2YXIgdz1pWzRdO28oZihlKSxpejAsdyksdShmKGUpLGZ6MCksdShmKGUpLHh6MCksbyhmKGUpLGF6MCxvejApO3ZhciBHPWlbNV07aWYoRyl7ZyhlLGN6MCk7dmFyIEE9R1sxXSxTPWZ1bmN0aW9uKEssVil7cmV0dXJuIGcoSyxIVjApfSxNPWZ1bmN0aW9uKEspe3JldHVybiB1KHQsSyl9O1IoRHJbMV0sTSxTLGUsQSksZyhlLHN6MCl9ZWxzZSBnKGUsdnowKTtyZXR1cm4gdShmKGUpLGx6MCksdShmKGUpLGJ6MCl9KSxOKEZKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFFDLHQsbik7cmV0dXJuIG8oQzAoVVYwKSxpLGUpfSksTihGNSxmdW5jdGlvbih0LG4sZSxpKXtpZihpWzBdPT09MCl7dmFyIHg9aVsxXTt1KGYoZSksTFYwKSx1KGYoZSksUlYwKSxvKHQsZSx4WzFdKSx1KGYoZSksalYwKTt2YXIgYz14WzJdLHM9ZnVuY3Rpb24oZCl7cmV0dXJuIHUobixkKX0scD1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtyZXR1cm4gUihJbFsyXSxwLHMsZSxjKSx1KGYoZSksR1YwKSx1KGYoZSksTVYwKX11KGYoZSksQlYwKTt2YXIgeT1pWzFdO2Z1bmN0aW9uIFQoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBFKGQpe3JldHVybiB1KHQsZCl9cmV0dXJuIFIoZGlbNV0sRSxULGUseSksdShmKGUpLHFWMCl9KSxOKFRKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEY1LHQsbik7cmV0dXJuIG8oQzAoRFYwKSxpLGUpfSk7dmFyIE9KPVswLFFDLEZKLEY1LFRKXSxyUD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxJSj1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LFQ1PWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LEFKPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihyUCxmdW5jdGlvbih0LG4sZSl7dShmKG4pLE5WMCksbyh0LG4sZVsxXSksdShmKG4pLENWMCk7dmFyIGk9ZVsyXTtyZXR1cm4gdXIoVDUsZnVuY3Rpb24oeCl7cmV0dXJuIHUodCx4KX0sbixpKSx1KGYobiksUFYwKX0pLE4oSUosZnVuY3Rpb24odCxuKXt2YXIgZT11KHJQLHQpO3JldHVybiBvKEMwKEFWMCksZSxuKX0pLE4oVDUsZnVuY3Rpb24odCxuLGUpe3UoZihuKSxnVjApLG8oZihuKSxUVjAsRlYwKTt2YXIgaT1lWzFdO2Z1bmN0aW9uIHgocyl7cmV0dXJuIHUodCxzKX1mdW5jdGlvbiBjKHMpe3JldHVybiB1KHQscyl9cmV0dXJuIFIoUm5bMV0sYyx4LG4saSksdShmKG4pLE9WMCksdShmKG4pLElWMCl9KSxOKEFKLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShUNSx0KTtyZXR1cm4gbyhDMChTVjApLGUsbil9KTt2YXIgZVA9WzAsclAsSUosVDUsQUpdLG5QPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxOSj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxPNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sQ0o9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihuUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksa1YwKSxvKG4sZSxpWzFdKSx1KGYoZSksd1YwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihPNSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLEVWMCl9KSxOKE5KLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKG5QLHQsbik7cmV0dXJuIG8oQzAoZFYwKSxpLGUpfSksTihPNSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksb1YwKSxvKGYoZSksY1YwLGFWMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKHkpe3JldHVybiB1KG4seSl9ZnVuY3Rpb24gcyh5KXtyZXR1cm4gdShuLHkpfVIoUm5bMV0scyxjLGUseCksdShmKGUpLHNWMCksdShmKGUpLHZWMCksbyhmKGUpLGJWMCxsVjApO3ZhciBwPWlbMl07cmV0dXJuIHUoZihlKSxwVjApLG8obixlLHBbMV0pLHUoZihlKSxtVjApLG8odCxlLHBbMl0pLHUoZihlKSxfVjApLHUoZihlKSx5VjApLHUoZihlKSxoVjApfSksTihDSixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhPNSx0LG4pO3JldHVybiBvKEMwKHhWMCksaSxlKX0pO3ZhciBJNT1bMCxuUCxOSixPNSxDSl0sdFA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sUEo9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfTtOKHRQLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksalkwKSxvKGYobiksTVkwLEdZMCk7dmFyIGk9ZVsxXTt1KGYobiksQlkwKTt2YXIgeD0wO2xlKGZ1bmN0aW9uKGQsdyl7ZCYmdShmKG4pLFJZMCk7ZnVuY3Rpb24gRyhTKXtyZXR1cm4gdSh0LFMpfWZ1bmN0aW9uIEEoUyl7ZnVuY3Rpb24gTShLKXtyZXR1cm4gdSh0LEspfXJldHVybiBvKHFOWzFdLE0sUyl9cmV0dXJuIFIoSTVbMV0sQSxHLG4sdyksMX0seCxpKSx1KGYobikscVkwKSx1KGYobiksVVkwKSx1KGYobiksSFkwKSxvKGYobiksWVkwLFhZMCk7dmFyIGM9ZVsyXTtvKGYobiksVlkwLGMpLHUoZihuKSx6WTApLHUoZihuKSxLWTApLG8oZihuKSxKWTAsV1kwKTt2YXIgcz1lWzNdO28oZihuKSwkWTAscyksdShmKG4pLFpZMCksdShmKG4pLFFZMCksbyhmKG4pLGVWMCxyVjApO3ZhciBwPWVbNF07aWYocCl7ZyhuLG5WMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7dShmKGQpLERZMCk7dmFyIEc9MDtyZXR1cm4gbGUoZnVuY3Rpb24oQSxTKXtBJiZ1KGYoZCksUFkwKTtmdW5jdGlvbiBNKEspe3JldHVybiB1KHQsSyl9cmV0dXJuIHVyKGl1WzFdLE0sZCxTKSwxfSxHLHcpLHUoZihkKSxMWTApfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULG4seSksZyhuLHRWMCl9ZWxzZSBnKG4sdVYwKTtyZXR1cm4gdShmKG4pLGlWMCksdShmKG4pLGZWMCl9KSxOKFBKLGZ1bmN0aW9uKHQsbil7dmFyIGU9dSh0UCx0KTtyZXR1cm4gbyhDMChDWTApLGUsbil9KTt2YXIgREo9WzAsdFAsUEpdLHVQPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LExKPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07Tih1UCxmdW5jdGlvbih0LG4sZSl7dShmKG4pLG9ZMCksbyhmKG4pLGNZMCxhWTApO3ZhciBpPWVbMV07dShmKG4pLHNZMCk7dmFyIHg9MDtsZShmdW5jdGlvbihkLHcpe2QmJnUoZihuKSx4WTApO2Z1bmN0aW9uIEcoUyl7cmV0dXJuIHUodCxTKX1mdW5jdGlvbiBBKFMpe2Z1bmN0aW9uIE0oSyl7cmV0dXJuIHUodCxLKX1yZXR1cm4gbyhCTlsxXSxNLFMpfXJldHVybiBSKEk1WzFdLEEsRyxuLHcpLDF9LHgsaSksdShmKG4pLHZZMCksdShmKG4pLGxZMCksdShmKG4pLGJZMCksbyhmKG4pLG1ZMCxwWTApO3ZhciBjPWVbMl07byhmKG4pLF9ZMCxjKSx1KGYobikseVkwKSx1KGYobiksaFkwKSxvKGYobiksa1kwLGRZMCk7dmFyIHM9ZVszXTtvKGYobiksd1kwLHMpLHUoZihuKSxFWTApLHUoZihuKSxTWTApLG8oZihuKSxGWTAsZ1kwKTt2YXIgcD1lWzRdO2lmKHApe2cobixUWTApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkLHcpe3UoZihkKSxpWTApO3ZhciBHPTA7cmV0dXJuIGxlKGZ1bmN0aW9uKEEsUyl7QSYmdShmKGQpLHVZMCk7ZnVuY3Rpb24gTShLKXtyZXR1cm4gdSh0LEspfXJldHVybiB1cihpdVsxXSxNLGQsUyksMX0sRyx3KSx1KGYoZCksZlkwKX0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKERyWzFdLEUsVCxuLHkpLGcobixPWTApfWVsc2UgZyhuLElZMCk7cmV0dXJuIHUoZihuKSxBWTApLHUoZihuKSxOWTApfSksTihMSixmdW5jdGlvbih0LG4pe3ZhciBlPXUodVAsdCk7cmV0dXJuIG8oQzAodFkwKSxlLG4pfSk7dmFyIFJKPVswLHVQLExKXSxpUD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxqSj1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LEE1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxHSj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKGlQLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksTFgwKSxvKGYobiksalgwLFJYMCk7dmFyIGk9ZVsxXTtmdW5jdGlvbiB4KGQpe3JldHVybiB1KHQsZCl9UihBNSxmdW5jdGlvbihkKXtmdW5jdGlvbiB3KEcpe3JldHVybiB1KHQsRyl9cmV0dXJuIG8oZzFbMV0sdyxkKX0seCxuLGkpLHUoZihuKSxHWDApLHUoZihuKSxNWDApLG8oZihuKSxxWDAsQlgwKTt2YXIgYz1lWzJdO28oZihuKSxVWDAsYyksdShmKG4pLEhYMCksdShmKG4pLFhYMCksbyhmKG4pLFZYMCxZWDApO3ZhciBzPWVbM107byhmKG4pLHpYMCxzKSx1KGYobiksS1gwKSx1KGYobiksV1gwKSxvKGYobiksJFgwLEpYMCk7dmFyIHA9ZVs0XTtpZihwKXtnKG4sWlgwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXt1KGYoZCksUFgwKTt2YXIgRz0wO3JldHVybiBsZShmdW5jdGlvbihBLFMpe0EmJnUoZihkKSxDWDApO2Z1bmN0aW9uIE0oSyl7cmV0dXJuIHUodCxLKX1yZXR1cm4gdXIoaXVbMV0sTSxkLFMpLDF9LEcsdyksdShmKGQpLERYMCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsbix5KSxnKG4sUVgwKX1lbHNlIGcobixyWTApO3JldHVybiB1KGYobiksZVkwKSx1KGYobiksblkwKX0pLE4oakosZnVuY3Rpb24odCxuKXt2YXIgZT11KGlQLHQpO3JldHVybiBvKEMwKE5YMCksZSxuKX0pLE4oQTUsZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSxFWDApLHUoZihlKSxTWDApO3ZhciB4PWlbMV0sYz0wO3JldHVybiBsZShmdW5jdGlvbih5LFQpe3kmJnUoZihlKSx3WDApO2Z1bmN0aW9uIEUoZCl7cmV0dXJuIHUobixkKX1yZXR1cm4gdXIoZVBbMV0sRSxlLFQpLDF9LGMseCksdShmKGUpLGdYMCksdShmKGUpLEZYMCl9dShmKGUpLFRYMCksdShmKGUpLE9YMCk7dmFyIHM9aVsxXSxwPTA7cmV0dXJuIGxlKGZ1bmN0aW9uKHksVCl7eSYmdShmKGUpLGtYMCk7ZnVuY3Rpb24gRSh3KXtyZXR1cm4gdShuLHcpfWZ1bmN0aW9uIGQodyl7cmV0dXJuIHUodCx3KX1yZXR1cm4gUihJNVsxXSxkLEUsZSxUKSwxfSxwLHMpLHUoZihlKSxJWDApLHUoZihlKSxBWDApfSksTihHSixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhBNSx0LG4pO3JldHVybiBvKEMwKGRYMCksaSxlKX0pO3ZhciBNSj1bMCxpUCxqSixBNSxHSl0sZlA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sQko9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfTtOKGZQLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksZVgwKSxvKGYobiksdFgwLG5YMCk7dmFyIGk9ZVsxXTt1KGYobiksdVgwKTt2YXIgeD0wO2xlKGZ1bmN0aW9uKEUsZCl7RSYmdShmKG4pLHJYMCk7ZnVuY3Rpb24gdyhHKXtyZXR1cm4gdSh0LEcpfXJldHVybiB1cihlUFsxXSx3LG4sZCksMX0seCxpKSx1KGYobiksaVgwKSx1KGYobiksZlgwKSx1KGYobikseFgwKSxvKGYobiksYVgwLG9YMCk7dmFyIGM9ZVsyXTtvKGYobiksY1gwLGMpLHUoZihuKSxzWDApLHUoZihuKSx2WDApLG8oZihuKSxiWDAsbFgwKTt2YXIgcz1lWzNdO2lmKHMpe2cobixwWDApO3ZhciBwPXNbMV0seT1mdW5jdGlvbihFLGQpe3UoZihFKSxaSDApO3ZhciB3PTA7cmV0dXJuIGxlKGZ1bmN0aW9uKEcsQSl7RyYmdShmKEUpLCRIMCk7ZnVuY3Rpb24gUyhNKXtyZXR1cm4gdSh0LE0pfXJldHVybiB1cihpdVsxXSxTLEUsQSksMX0sdyxkKSx1KGYoRSksUUgwKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtSKERyWzFdLFQseSxuLHApLGcobixtWDApfWVsc2UgZyhuLF9YMCk7cmV0dXJuIHUoZihuKSx5WDApLHUoZihuKSxoWDApfSksTihCSixmdW5jdGlvbih0LG4pe3ZhciBlPXUoZlAsdCk7cmV0dXJuIG8oQzAoSkgwKSxlLG4pfSk7dmFyIHFKPVswLGZQLEJKXSx4UD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sVUo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sTjU9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sSEo9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxDNT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxYSj1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9O04oeFAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLERIMCksbyhmKGUpLFJIMCxMSDApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyh3KXtyZXR1cm4gdShuLHcpfWZ1bmN0aW9uIHModyl7cmV0dXJuIHUodCx3KX1SKFJuWzFdLHMsYyxlLHgpLHUoZihlKSxqSDApLHUoZihlKSxHSDApLG8oZihlKSxCSDAsTUgwKTt2YXIgcD1pWzJdO3VyKE41LGZ1bmN0aW9uKHcpe3JldHVybiB1KHQsdyl9LGUscCksdShmKGUpLHFIMCksdShmKGUpLFVIMCksbyhmKGUpLFhIMCxISDApO3ZhciB5PWlbM107aWYoeSl7ZyhlLFlIMCk7dmFyIFQ9eVsxXSxFPWZ1bmN0aW9uKHcsRyl7cmV0dXJuIGcodyxQSDApfSxkPWZ1bmN0aW9uKHcpe3JldHVybiB1KHQsdyl9O1IoRHJbMV0sZCxFLGUsVCksZyhlLFZIMCl9ZWxzZSBnKGUsekgwKTtyZXR1cm4gdShmKGUpLEtIMCksdShmKGUpLFdIMCl9KSxOKFVKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHhQLHQsbik7cmV0dXJuIG8oQzAoQ0gwKSxpLGUpfSksTihONSxmdW5jdGlvbih0LG4sZSl7dShmKG4pLElIMCksbyh0LG4sZVsxXSksdShmKG4pLEFIMCk7dmFyIGk9ZVsyXTtyZXR1cm4gdXIoQzUsZnVuY3Rpb24oeCl7cmV0dXJuIHUodCx4KX0sbixpKSx1KGYobiksTkgwKX0pLE4oSEosZnVuY3Rpb24odCxuKXt2YXIgZT11KE41LHQpO3JldHVybiBvKEMwKE9IMCksZSxuKX0pLE4oQzUsZnVuY3Rpb24odCxuLGUpe3N3aXRjaChlWzBdKXtjYXNlIDA6dShmKG4pLGRIMCk7dmFyIGk9ZVsxXSx4PWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O3JldHVybiB1cihESlsxXSx4LG4saSksdShmKG4pLGtIMCk7Y2FzZSAxOnUoZihuKSx3SDApO3ZhciBjPWVbMV0scz1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtyZXR1cm4gdXIoUkpbMV0scyxuLGMpLHUoZihuKSxFSDApO2Nhc2UgMjp1KGYobiksU0gwKTt2YXIgcD1lWzFdLHk9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07cmV0dXJuIHVyKE1KWzFdLHksbixwKSx1KGYobiksZ0gwKTtkZWZhdWx0OnUoZihuKSxGSDApO3ZhciBUPWVbMV0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtyZXR1cm4gdXIocUpbMV0sRSxuLFQpLHUoZihuKSxUSDApfX0pLE4oWEosZnVuY3Rpb24odCxuKXt2YXIgZT11KEM1LHQpO3JldHVybiBvKEMwKGhIMCksZSxuKX0pO3ZhciBZSj1bMCxlUCxJNSxESixSSixNSixxSix4UCxVSixONSxISixDNSxYSl0sb1A9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFZKPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04ob1AsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHFVMCksbyhmKGUpLEhVMCxVVTApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhrMCl7cmV0dXJuIHUobixrMCl9ZnVuY3Rpb24gcyhrMCl7cmV0dXJuIHUodCxrMCl9UihSblsxXSxzLGMsZSx4KSx1KGYoZSksWFUwKSx1KGYoZSksWVUwKSxvKGYoZSkselUwLFZVMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUsS1UwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oazApe3JldHVybiB1KG4sazApfSxFPWZ1bmN0aW9uKGswKXtyZXR1cm4gdSh0LGswKX07UigkZVsyMl1bMV0sRSxULGUseSksZyhlLFdVMCl9ZWxzZSBnKGUsSlUwKTt1KGYoZSksJFUwKSx1KGYoZSksWlUwKSxvKGYoZSksckgwLFFVMCk7dmFyIGQ9aVszXTt1KGYoZSksZUgwKTt2YXIgdz0wO2xlKGZ1bmN0aW9uKGswLGcwKXtrMCYmdShmKGUpLGpVMCksdShmKGUpLEdVMCksbyh0LGUsZzBbMV0pLHUoZihlKSxNVTApO3ZhciBlMD1nMFsyXTtmdW5jdGlvbiB4MChjMCl7cmV0dXJuIHUobixjMCl9ZnVuY3Rpb24gbChjMCl7cmV0dXJuIHUodCxjMCl9cmV0dXJuIFIoJGVbMl1bMl0sbCx4MCxlLGUwKSx1KGYoZSksQlUwKSwxfSx3LGQpLHUoZihlKSxuSDApLHUoZihlKSx0SDApLHUoZihlKSx1SDApLG8oZihlKSxmSDAsaUgwKTt2YXIgRz1pWzRdO3UoZihlKSx4SDApLG8odCxlLEdbMV0pLHUoZihlKSxvSDApO3ZhciBBPUdbMl07ZnVuY3Rpb24gUyhrMCl7cmV0dXJuIHUobixrMCl9ZnVuY3Rpb24gTShrMCl7cmV0dXJuIHUodCxrMCl9UigkZVs1XVs2XSxNLFMsZSxBKSx1KGYoZSksYUgwKSx1KGYoZSksY0gwKSx1KGYoZSksc0gwKSxvKGYoZSksbEgwLHZIMCk7dmFyIEs9aVs1XTtpZihLKXtnKGUsYkgwKTt2YXIgVj1LWzFdLGYwPWZ1bmN0aW9uKGswLGcwKXtyZXR1cm4gZyhrMCxSVTApfSxtMD1mdW5jdGlvbihrMCl7cmV0dXJuIHUodCxrMCl9O1IoRHJbMV0sbTAsZjAsZSxWKSxnKGUscEgwKX1lbHNlIGcoZSxtSDApO3JldHVybiB1KGYoZSksX0gwKSx1KGYoZSkseUgwKX0pLE4oVkosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8ob1AsdCxuKTtyZXR1cm4gbyhDMChMVTApLGksZSl9KTt2YXIgUDU9WzAsb1AsVkpdLGFQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx6Sj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKGFQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxCcTApLG8oZihlKSxVcTAscXEwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoXzApe3JldHVybiB1KG4sXzApfWZ1bmN0aW9uIHMoXzApe3JldHVybiB1KHQsXzApfVIoUm5bMV0scyxjLGUseCksdShmKGUpLEhxMCksdShmKGUpLFhxMCksbyhmKGUpLFZxMCxZcTApO3ZhciBwPWlbMl07aWYocCl7ZyhlLHpxMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKF8wKXtyZXR1cm4gdShuLF8wKX0sRT1mdW5jdGlvbihfMCl7cmV0dXJuIHUodCxfMCl9O1IoJGVbMjJdWzFdLEUsVCxlLHkpLGcoZSxLcTApfWVsc2UgZyhlLFdxMCk7dShmKGUpLEpxMCksdShmKGUpLCRxMCksbyhmKGUpLFFxMCxacTApO3ZhciBkPWlbM107dShmKGUpLHJVMCksbyh0LGUsZFsxXSksdShmKGUpLGVVMCk7dmFyIHc9ZFsyXTtmdW5jdGlvbiBHKF8wKXtyZXR1cm4gdShuLF8wKX1mdW5jdGlvbiBBKF8wKXtyZXR1cm4gdSh0LF8wKX1SKCRlWzVdWzZdLEEsRyxlLHcpLHUoZihlKSxuVTApLHUoZihlKSx0VTApLHUoZihlKSx1VTApLG8oZihlKSxmVTAsaVUwKTt2YXIgUz1pWzRdO2lmKFMpe3ZhciBNPVNbMV07ZyhlLHhVMCksdShmKGUpLG9VMCksbyh0LGUsTVsxXSksdShmKGUpLGFVMCk7dmFyIEs9TVsyXSxWPWZ1bmN0aW9uKF8wKXtyZXR1cm4gdShuLF8wKX0sZjA9ZnVuY3Rpb24oXzApe3JldHVybiB1KHQsXzApfTtSKCRlWzJdWzJdLGYwLFYsZSxLKSx1KGYoZSksY1UwKSxnKGUsc1UwKX1lbHNlIGcoZSx2VTApO3UoZihlKSxsVTApLHUoZihlKSxiVTApLG8oZihlKSxtVTAscFUwKTt2YXIgbTA9aVs1XTt1KGYoZSksX1UwKTt2YXIgazA9MDtsZShmdW5jdGlvbihfMCxFMCl7XzAmJnUoZihlKSxScTApLHUoZihlKSxqcTApLG8odCxlLEUwWzFdKSx1KGYoZSksR3EwKTt2YXIgVTA9RTBbMl07ZnVuY3Rpb24gYihYKXtyZXR1cm4gdShuLFgpfWZ1bmN0aW9uIFIwKFgpe3JldHVybiB1KHQsWCl9cmV0dXJuIFIoJGVbMl1bMl0sUjAsYixlLFUwKSx1KGYoZSksTXEwKSwxfSxrMCxtMCksdShmKGUpLHlVMCksdShmKGUpLGhVMCksdShmKGUpLGRVMCksbyhmKGUpLHdVMCxrVTApO3ZhciBnMD1pWzZdO2lmKGcwKXtnKGUsRVUwKTt2YXIgZTA9ZzBbMV0seDA9ZnVuY3Rpb24oXzApe3JldHVybiB1KG4sXzApfSxsPWZ1bmN0aW9uKF8wKXtyZXR1cm4gdSh0LF8wKX07UihGMVs1XVsyXSxsLHgwLGUsZTApLGcoZSxTVTApfWVsc2UgZyhlLGdVMCk7dShmKGUpLEZVMCksdShmKGUpLFRVMCksbyhmKGUpLElVMCxPVTApO3ZhciBjMD1pWzddO2lmKGMwKXtnKGUsQVUwKTt2YXIgdDA9YzBbMV0sbzA9ZnVuY3Rpb24oXzAsRTApe3JldHVybiBnKF8wLExxMCl9LHcwPWZ1bmN0aW9uKF8wKXtyZXR1cm4gdSh0LF8wKX07UihEclsxXSx3MCxvMCxlLHQwKSxnKGUsTlUwKX1lbHNlIGcoZSxDVTApO3JldHVybiB1KGYoZSksUFUwKSx1KGYoZSksRFUwKX0pLE4oekosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oYVAsdCxuKTtyZXR1cm4gbyhDMChEcTApLGksZSl9KTt2YXIgY1A9WzAsYVAsekpdLHNQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxLSj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHNQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSx5cTApLG8oZihlKSxkcTAsaHEwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBzKEEpe3JldHVybiB1KHQsQSl9UihSblsxXSxzLGMsZSx4KSx1KGYoZSksa3EwKSx1KGYoZSksd3EwKSxvKGYoZSksU3EwLEVxMCk7dmFyIHA9aVsyXTtmdW5jdGlvbiB5KEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gVChBKXtyZXR1cm4gdSh0LEEpfVIoJGVbMTddLFQseSxlLHApLHUoZihlKSxncTApLHUoZihlKSxGcTApLG8oZihlKSxPcTAsVHEwKTt2YXIgRT1pWzNdO2lmKEUpe2coZSxJcTApO3ZhciBkPUVbMV0sdz1mdW5jdGlvbihBLFMpe3JldHVybiBnKEEsX3EwKX0sRz1mdW5jdGlvbihBKXtyZXR1cm4gdSh0LEEpfTtSKERyWzFdLEcsdyxlLGQpLGcoZSxBcTApfWVsc2UgZyhlLE5xMCk7cmV0dXJuIHUoZihlKSxDcTApLHUoZihlKSxQcTApfSksTihLSixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhzUCx0LG4pO3JldHVybiBvKEMwKG1xMCksaSxlKX0pO3ZhciB2UD1bMCxzUCxLSl0sbFA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFdKPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04obFAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHpCMCksbyhmKGUpLFdCMCxLQjApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhWKXtyZXR1cm4gdShuLFYpfWZ1bmN0aW9uIHMoVil7cmV0dXJuIHUodCxWKX1SKFJuWzFdLHMsYyxlLHgpLHUoZihlKSxKQjApLHUoZihlKSwkQjApLG8oZihlKSxRQjAsWkIwKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkoVil7cmV0dXJuIHUobixWKX1mdW5jdGlvbiBUKFYpe3JldHVybiB1KHQsVil9UigkZVsxN10sVCx5LGUscCksdShmKGUpLHJxMCksdShmKGUpLGVxMCksbyhmKGUpLHRxMCxucTApO3ZhciBFPWlbM107aWYoRSl7ZyhlLHVxMCk7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKFYpe3JldHVybiB1KG4sVil9LEc9ZnVuY3Rpb24oVil7cmV0dXJuIHUodCxWKX07UigkZVsyNF1bMV0sRyx3LGUsZCksZyhlLGlxMCl9ZWxzZSBnKGUsZnEwKTt1KGYoZSkseHEwKSx1KGYoZSksb3EwKSxvKGYoZSksY3EwLGFxMCk7dmFyIEE9aVs0XTtpZihBKXtnKGUsc3EwKTt2YXIgUz1BWzFdLE09ZnVuY3Rpb24oVixmMCl7cmV0dXJuIGcoVixWQjApfSxLPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoRHJbMV0sSyxNLGUsUyksZyhlLHZxMCl9ZWxzZSBnKGUsbHEwKTtyZXR1cm4gdShmKGUpLGJxMCksdShmKGUpLHBxMCl9KSxOKFdKLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGxQLHQsbik7cmV0dXJuIG8oQzAoWUIwKSxpLGUpfSk7dmFyIGJQPVswLGxQLFdKXSxENT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sSko9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sTDU9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSwkSj1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX0scFA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFpKPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oRDUsZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSxHQjApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihFKXtyZXR1cm4gdShuLEUpfSxzPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O3JldHVybiBSKFJuWzFdLHMsYyxlLHgpLHUoZihlKSxNQjApfXZhciBwPWlbMV07dShmKGUpLEJCMCksdShmKGUpLHFCMCksbyhuLGUscFsxXSksdShmKGUpLFVCMCk7dmFyIHk9cFsyXTtmdW5jdGlvbiBUKEUpe3JldHVybiB1KHQsRSl9cmV0dXJuIHVyKGcxWzFdLFQsZSx5KSx1KGYoZSksSEIwKSx1KGYoZSksWEIwKX0pLE4oSkosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oRDUsdCxuKTtyZXR1cm4gbyhDMChqQjApLGksZSl9KSxOKEw1LGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4/Zyh0LExCMCk6Zyh0LFJCMCl9KSxOKCRKLGZ1bmN0aW9uKHQpe3JldHVybiBvKEMwKERCMCksTDUsdCl9KSxOKHBQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxzQjApLG8oZihlKSxsQjAsdkIwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoQSl7cmV0dXJuIHUobixBKX1SKEQ1LGZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9LGMsZSx4KSx1KGYoZSksYkIwKSx1KGYoZSkscEIwKSxvKGYoZSksX0IwLG1CMCk7dmFyIHM9aVsyXTt1KGYoZSkseUIwKSxvKHQsZSxzWzFdKSx1KGYoZSksaEIwKTt2YXIgcD1zWzJdO2Z1bmN0aW9uIHkoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBUKEEpe3JldHVybiB1KHQsQSl9UihLdlsxXSxULHksZSxwKSx1KGYoZSksZEIwKSx1KGYoZSksa0IwKSx1KGYoZSksd0IwKSxvKGYoZSksU0IwLEVCMCksbyhMNSxlLGlbM10pLHUoZihlKSxnQjApLHUoZihlKSxGQjApLG8oZihlKSxPQjAsVEIwKTt2YXIgRT1pWzRdO2lmKEUpe2coZSxJQjApO3ZhciBkPUVbMV0sdz1mdW5jdGlvbihBLFMpe3JldHVybiBnKEEsY0IwKX0sRz1mdW5jdGlvbihBKXtyZXR1cm4gdSh0LEEpfTtSKERyWzFdLEcsdyxlLGQpLGcoZSxBQjApfWVsc2UgZyhlLE5CMCk7cmV0dXJuIHUoZihlKSxDQjApLHUoZihlKSxQQjApfSksTihaSixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhwUCx0LG4pO3JldHVybiBvKEMwKGFCMCksaSxlKX0pO3ZhciBRSj1bMCxENSxKSixMNSwkSixwUCxaSl0sbVA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHIkPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04obVAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLCRNMCksbyhmKGUpLFFNMCxaTTApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKCRlWzE3XSxzLGMsZSx4KSx1KGYoZSksckIwKSx1KGYoZSksZUIwKSxvKGYoZSksdEIwLG5CMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUsdUIwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLEpNMCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsZSx5KSxnKGUsaUIwKX1lbHNlIGcoZSxmQjApO3JldHVybiB1KGYoZSkseEIwKSx1KGYoZSksb0IwKX0pLE4ociQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8obVAsdCxuKTtyZXR1cm4gbyhDMChXTTApLGksZSl9KTt2YXIgZSQ9WzAsbVAsciRdLF9QPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LG4kPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sUjU9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sdCQ9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfTtOKF9QLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksVk0wKSxvKHQsbixlWzFdKSx1KGYobiksek0wKTt2YXIgaT1lWzJdO3JldHVybiB1cihSNSxmdW5jdGlvbih4KXtyZXR1cm4gdSh0LHgpfSxuLGkpLHUoZihuKSxLTTApfSksTihuJCxmdW5jdGlvbih0LG4pe3ZhciBlPXUoX1AsdCk7cmV0dXJuIG8oQzAoWU0wKSxlLG4pfSksTihSNSxmdW5jdGlvbih0LG4sZSl7dShmKG4pLFBNMCksbyhmKG4pLExNMCxETTApO3ZhciBpPWVbMV07ZnVuY3Rpb24geChFKXtyZXR1cm4gdSh0LEUpfWZ1bmN0aW9uIGMoRSl7cmV0dXJuIHUodCxFKX1SKFJuWzFdLGMseCxuLGkpLHUoZihuKSxSTTApLHUoZihuKSxqTTApLG8oZihuKSxNTTAsR00wKTt2YXIgcz1lWzJdO2lmKHMpe2cobixCTTApO3ZhciBwPXNbMV0seT1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfSxUPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O1IoUm5bMV0sVCx5LG4scCksZyhuLHFNMCl9ZWxzZSBnKG4sVU0wKTtyZXR1cm4gdShmKG4pLEhNMCksdShmKG4pLFhNMCl9KSxOKHQkLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShSNSx0KTtyZXR1cm4gbyhDMChDTTApLGUsbil9KTt2YXIgdSQ9WzAsX1AsbiQsUjUsdCRdLHlQPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGkkPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07Tih5UCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9ZVsyXTtpZih1KGYobiksRk0wKSxvKHQsbixlWzFdKSx1KGYobiksVE0wKSxpKXtnKG4sT00wKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24ocCl7cmV0dXJuIHUodCxwKX0scz1mdW5jdGlvbihwKXtyZXR1cm4gdSh0LHApfTtSKFJuWzFdLHMsYyxuLHgpLGcobixJTTApfWVsc2UgZyhuLEFNMCk7cmV0dXJuIHUoZihuKSxOTTApfSksTihpJCxmdW5jdGlvbih0LG4pe3ZhciBlPXUoeVAsdCk7cmV0dXJuIG8oQzAoZ00wKSxlLG4pfSk7dmFyIGYkPVswLHlQLGkkXSxoUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seCQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sajU9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sbyQ9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfTtOKGhQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxIRzApLG8oZihlKSxZRzAsWEcwKTt2YXIgeD1pWzFdO2lmKHgpe2coZSxWRzApO3ZhciBjPXhbMV0scz1mdW5jdGlvbihWKXtyZXR1cm4gdShuLFYpfSxwPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoWXVbMzVdLHAscyxlLGMpLGcoZSx6RzApfWVsc2UgZyhlLEtHMCk7dShmKGUpLFdHMCksdShmKGUpLEpHMCksbyhmKGUpLFpHMCwkRzApO3ZhciB5PWlbMl07aWYoeSl7ZyhlLFFHMCk7dmFyIFQ9eVsxXTt1cihqNSxmdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfSxlLFQpLGcoZSxyTTApfWVsc2UgZyhlLGVNMCk7dShmKGUpLG5NMCksdShmKGUpLHRNMCksbyhmKGUpLGlNMCx1TTApO3ZhciBFPWlbM107aWYoRSl7dmFyIGQ9RVsxXTtnKGUsZk0wKSx1KGYoZSkseE0wKSxvKHQsZSxkWzFdKSx1KGYoZSksb00wKTt2YXIgdz1kWzJdLEc9ZnVuY3Rpb24oVil7cmV0dXJuIHUodCxWKX07dXIoZzFbMV0sRyxlLHcpLHUoZihlKSxhTTApLGcoZSxjTTApfWVsc2UgZyhlLHNNMCk7dShmKGUpLHZNMCksdShmKGUpLGxNMCksbyhmKGUpLHBNMCxiTTApLG8oWXVbMzNdLGUsaVs0XSksdShmKGUpLG1NMCksdShmKGUpLF9NMCksbyhmKGUpLGhNMCx5TTApO3ZhciBBPWlbNV07aWYoQSl7ZyhlLGRNMCk7dmFyIFM9QVsxXSxNPWZ1bmN0aW9uKFYsZjApe3JldHVybiBnKFYsVUcwKX0sSz1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKERyWzFdLEssTSxlLFMpLGcoZSxrTTApfWVsc2UgZyhlLHdNMCk7cmV0dXJuIHUoZihlKSxFTTApLHUoZihlKSxTTTApfSksTih4JCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhoUCx0LG4pO3JldHVybiBvKEMwKHFHMCksaSxlKX0pLE4oajUsZnVuY3Rpb24odCxuLGUpe2lmKGVbMF09PT0wKXt1KGYobiksTEcwKSx1KGYobiksUkcwKTt2YXIgaT1lWzFdLHg9MDtyZXR1cm4gbGUoZnVuY3Rpb24ocCx5KXtwJiZ1KGYobiksREcwKTtmdW5jdGlvbiBUKEUpe3JldHVybiB1KHQsRSl9cmV0dXJuIHVyKHUkWzFdLFQsbix5KSwxfSx4LGkpLHUoZihuKSxqRzApLHUoZihuKSxHRzApfXUoZihuKSxNRzApO3ZhciBjPWVbMV07ZnVuY3Rpb24gcyhwKXtyZXR1cm4gdSh0LHApfXJldHVybiB1cihmJFsxXSxzLG4sYyksdShmKG4pLEJHMCl9KSxOKG8kLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShqNSx0KTtyZXR1cm4gbyhDMChQRzApLGUsbil9KTt2YXIgZFA9WzAsdSQsZiQsaFAseCQsajUsbyRdLGtQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxhJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxHNT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sYyQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihrUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksX0cwKSxvKGYoZSksaEcwLHlHMCksbyh0LGUsaVsxXSksdShmKGUpLGRHMCksdShmKGUpLGtHMCksbyhmKGUpLEVHMCx3RzApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhFKXtyZXR1cm4gdShuLEUpfVIoRzUsZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX0sYyxlLHgpLHUoZihlKSxTRzApLHUoZihlKSxnRzApLG8oZihlKSxURzAsRkcwKTt2YXIgcz1pWzNdO2lmKHMpe2coZSxPRzApO3ZhciBwPXNbMV0seT1mdW5jdGlvbihFLGQpe3JldHVybiBnKEUsbUcwKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtSKERyWzFdLFQseSxlLHApLGcoZSxJRzApfWVsc2UgZyhlLEFHMCk7cmV0dXJuIHUoZihlKSxORzApLHUoZihlKSxDRzApfSksTihhJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhrUCx0LG4pO3JldHVybiBvKEMwKHBHMCksaSxlKX0pLE4oRzUsZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSxzRzApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihFKXtyZXR1cm4gdShuLEUpfSxzPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O3JldHVybiBSKFl1WzM1XSxzLGMsZSx4KSx1KGYoZSksdkcwKX11KGYoZSksbEcwKTt2YXIgcD1pWzFdO2Z1bmN0aW9uIHkoRSl7cmV0dXJuIHUobixFKX1mdW5jdGlvbiBUKEUpe3JldHVybiB1KHQsRSl9cmV0dXJuIFIocWVbMzFdLFQseSxlLHApLHUoZihlKSxiRzApfSksTihjJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhHNSx0LG4pO3JldHVybiBvKEMwKGNHMCksaSxlKX0pO3ZhciBzJD1bMCxrUCxhJCxHNSxjJF0sTTU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHYkPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LHdQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxsJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKE01LGZ1bmN0aW9uKHQsbixlLGkpe3N3aXRjaChpWzBdKXtjYXNlIDA6dmFyIHg9aVsxXTt1KGYoZSksQ2owKSx1KGYoZSksUGowKSxvKHQsZSx4WzFdKSx1KGYoZSksRGowKTt2YXIgYz14WzJdLHM9ZnVuY3Rpb24oRTApe3JldHVybiB1KG4sRTApfSxwPWZ1bmN0aW9uKEUwKXtyZXR1cm4gdSh0LEUwKX07cmV0dXJuIFIodlBbMV0scCxzLGUsYyksdShmKGUpLExqMCksdShmKGUpLFJqMCk7Y2FzZSAxOnZhciB5PWlbMV07dShmKGUpLGpqMCksdShmKGUpLEdqMCksbyh0LGUseVsxXSksdShmKGUpLE1qMCk7dmFyIFQ9eVsyXSxFPWZ1bmN0aW9uKEUwKXtyZXR1cm4gdShuLEUwKX0sZD1mdW5jdGlvbihFMCl7cmV0dXJuIHUodCxFMCl9O3JldHVybiBSKGJQWzFdLGQsRSxlLFQpLHUoZihlKSxCajApLHUoZihlKSxxajApO2Nhc2UgMjp2YXIgdz1pWzFdO3UoZihlKSxVajApLHUoZihlKSxIajApLG8odCxlLHdbMV0pLHUoZihlKSxYajApO3ZhciBHPXdbMl0sQT1mdW5jdGlvbihFMCl7cmV0dXJuIHUobixFMCl9LFM9ZnVuY3Rpb24oRTApe3JldHVybiB1KHQsRTApfTtyZXR1cm4gUihjUFsxXSxTLEEsZSxHKSx1KGYoZSksWWowKSx1KGYoZSksVmowKTtjYXNlIDM6dShmKGUpLHpqMCk7dmFyIE09aVsxXSxLPWZ1bmN0aW9uKEUwKXtyZXR1cm4gdShuLEUwKX0sVj1mdW5jdGlvbihFMCl7cmV0dXJuIHUodCxFMCl9O3JldHVybiBSKCRlWzEzXSxWLEssZSxNKSx1KGYoZSksS2owKTtjYXNlIDQ6dmFyIGYwPWlbMV07dShmKGUpLFdqMCksdShmKGUpLEpqMCksbyh0LGUsZjBbMV0pLHUoZihlKSwkajApO3ZhciBtMD1mMFsyXSxrMD1mdW5jdGlvbihFMCl7cmV0dXJuIHUobixFMCl9LGcwPWZ1bmN0aW9uKEUwKXtyZXR1cm4gdSh0LEUwKX07cmV0dXJuIFIoeTVbMV0sZzAsazAsZSxtMCksdShmKGUpLFpqMCksdShmKGUpLFFqMCk7Y2FzZSA1OnZhciBlMD1pWzFdO3UoZihlKSxyRzApLHUoZihlKSxlRzApLG8odCxlLGUwWzFdKSx1KGYoZSksbkcwKTt2YXIgeDA9ZTBbMl0sbD1mdW5jdGlvbihFMCl7cmV0dXJuIHUobixFMCl9LGMwPWZ1bmN0aW9uKEUwKXtyZXR1cm4gdSh0LEUwKX07cmV0dXJuIFIoaDVbMV0sYzAsbCxlLHgwKSx1KGYoZSksdEcwKSx1KGYoZSksdUcwKTtkZWZhdWx0OnZhciB0MD1pWzFdO3UoZihlKSxpRzApLHUoZihlKSxmRzApLG8odCxlLHQwWzFdKSx1KGYoZSkseEcwKTt2YXIgbzA9dDBbMl0sdzA9ZnVuY3Rpb24oRTApe3JldHVybiB1KG4sRTApfSxfMD1mdW5jdGlvbihFMCl7cmV0dXJuIHUodCxFMCl9O3JldHVybiBSKFA1WzFdLF8wLHcwLGUsbzApLHUoZihlKSxvRzApLHUoZihlKSxhRzApfX0pLE4odiQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oTTUsdCxuKTtyZXR1cm4gbyhDMChOajApLGksZSl9KSxOKHdQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxWUjApLG8oZihlKSxLUjAselIwKTt2YXIgeD1pWzFdO3g/KGcoZSxXUjApLG8odCxlLHhbMV0pLGcoZSxKUjApKTpnKGUsJFIwKSx1KGYoZSksWlIwKSx1KGYoZSksUVIwKSxvKGYoZSksZWowLHJqMCk7dmFyIGM9aVsyXTtpZihjKXtnKGUsbmowKTt2YXIgcz1jWzFdLHA9ZnVuY3Rpb24oZjApe3JldHVybiB1KG4sZjApfTtSKE01LGZ1bmN0aW9uKGYwKXtyZXR1cm4gdSh0LGYwKX0scCxlLHMpLGcoZSx0ajApfWVsc2UgZyhlLHVqMCk7dShmKGUpLGlqMCksdShmKGUpLGZqMCksbyhmKGUpLG9qMCx4ajApO3ZhciB5PWlbM107aWYoeSl7ZyhlLGFqMCk7dmFyIFQ9eVsxXSxFPWZ1bmN0aW9uKGYwKXtyZXR1cm4gdSh0LGYwKX07dXIoZFBbNV0sRSxlLFQpLGcoZSxjajApfWVsc2UgZyhlLHNqMCk7dShmKGUpLHZqMCksdShmKGUpLGxqMCksbyhmKGUpLHBqMCxiajApO3ZhciBkPWlbNF07aWYoZCl7dmFyIHc9ZFsxXTtnKGUsbWowKSx1KGYoZSksX2owKSxvKHQsZSx3WzFdKSx1KGYoZSkseWowKTt2YXIgRz13WzJdLEE9ZnVuY3Rpb24oZjApe3JldHVybiB1KHQsZjApfTt1cihnMVsxXSxBLGUsRyksdShmKGUpLGhqMCksZyhlLGRqMCl9ZWxzZSBnKGUsa2owKTt1KGYoZSksd2owKSx1KGYoZSksRWowKSxvKGYoZSksZ2owLFNqMCk7dmFyIFM9aVs1XTtpZihTKXtnKGUsRmowKTt2YXIgTT1TWzFdLEs9ZnVuY3Rpb24oZjAsbTApe3JldHVybiBnKGYwLFlSMCl9LFY9ZnVuY3Rpb24oZjApe3JldHVybiB1KHQsZjApfTtSKERyWzFdLFYsSyxlLE0pLGcoZSxUajApfWVsc2UgZyhlLE9qMCk7cmV0dXJuIHUoZihlKSxJajApLHUoZihlKSxBajApfSksTihsJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh3UCx0LG4pO3JldHVybiBvKEMwKFhSMCksaSxlKX0pO3ZhciBiJD1bMCxNNSx2JCx3UCxsJF0sQWw9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxwJD1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX0sQjU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LG0kPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LHE1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxfJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxFUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seSQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihBbCxmdW5jdGlvbih0LG4pe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGcodCxxUjApO2Nhc2UgMTpyZXR1cm4gZyh0LFVSMCk7ZGVmYXVsdDpyZXR1cm4gZyh0LEhSMCl9fSksTihwJCxmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChCUjApLEFsLHQpfSksTihCNSxmdW5jdGlvbih0LG4sZSxpKXtpZihpWzBdPT09MCl7dShmKGUpLE5SMCksdShmKGUpLENSMCk7dmFyIHg9aVsxXSxjPTA7cmV0dXJuIGxlKGZ1bmN0aW9uKEUsZCl7RSYmdShmKGUpLEFSMCk7ZnVuY3Rpb24gdyhHKXtyZXR1cm4gdShuLEcpfXJldHVybiBSKHE1LGZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9LHcsZSxkKSwxfSxjLHgpLHUoZihlKSxQUjApLHUoZihlKSxEUjApfXZhciBzPWlbMV07dShmKGUpLExSMCksdShmKGUpLFJSMCksbyh0LGUsc1sxXSksdShmKGUpLGpSMCk7dmFyIHA9c1syXTtmdW5jdGlvbiB5KEUpe3JldHVybiB1KG4sRSl9ZnVuY3Rpb24gVChFKXtyZXR1cm4gdSh0LEUpfXJldHVybiBSKFJuWzFdLFQseSxlLHApLHUoZihlKSxHUjApLHUoZihlKSxNUjApfSksTihtJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhCNSx0LG4pO3JldHVybiBvKEMwKElSMCksaSxlKX0pLE4ocTUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGNSMCksbyhmKGUpLHZSMCxzUjApO3ZhciB4PWlbMV07eD8oZyhlLGxSMCksbyhBbCxlLHhbMV0pLGcoZSxiUjApKTpnKGUscFIwKSx1KGYoZSksbVIwKSx1KGYoZSksX1IwKSxvKGYoZSksaFIwLHlSMCk7dmFyIGM9aVsyXTtpZihjKXtnKGUsZFIwKTt2YXIgcz1jWzFdLHA9ZnVuY3Rpb24odyl7cmV0dXJuIHUobix3KX0seT1mdW5jdGlvbih3KXtyZXR1cm4gdSh0LHcpfTtSKFJuWzFdLHkscCxlLHMpLGcoZSxrUjApfWVsc2UgZyhlLHdSMCk7dShmKGUpLEVSMCksdShmKGUpLFNSMCksbyhmKGUpLEZSMCxnUjApO3ZhciBUPWlbM107ZnVuY3Rpb24gRSh3KXtyZXR1cm4gdShuLHcpfWZ1bmN0aW9uIGQodyl7cmV0dXJuIHUodCx3KX1yZXR1cm4gUihSblsxXSxkLEUsZSxUKSx1KGYoZSksVFIwKSx1KGYoZSksT1IwKX0pLE4oXyQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8ocTUsdCxuKTtyZXR1cm4gbyhDMChhUjApLGksZSl9KSxOKEVQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxBTDApLG8oZihlKSxDTDAsTkwwKSxvKEFsLGUsaVsxXSksdShmKGUpLFBMMCksdShmKGUpLERMMCksbyhmKGUpLFJMMCxMTDApO3ZhciB4PWlbMl07dShmKGUpLGpMMCksbyh0LGUseFsxXSksdShmKGUpLEdMMCk7dmFyIGM9eFsyXTtmdW5jdGlvbiBzKFYpe3JldHVybiB1KHQsVil9dXIoZzFbMV0scyxlLGMpLHUoZihlKSxNTDApLHUoZihlKSxCTDApLHUoZihlKSxxTDApLG8oZihlKSxITDAsVUwwKTt2YXIgcD1pWzNdO2lmKHApe2coZSxYTDApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihWKXtyZXR1cm4gdShuLFYpfSxFPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoUm5bMV0sRSxULGUseSksZyhlLFlMMCl9ZWxzZSBnKGUsVkwwKTt1KGYoZSksekwwKSx1KGYoZSksS0wwKSxvKGYoZSksSkwwLFdMMCk7dmFyIGQ9aVs0XTtpZihkKXtnKGUsJEwwKTt2YXIgdz1kWzFdLEc9ZnVuY3Rpb24oVil7cmV0dXJuIHUobixWKX07UihCNSxmdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfSxHLGUsdyksZyhlLFpMMCl9ZWxzZSBnKGUsUUwwKTt1KGYoZSksclIwKSx1KGYoZSksZVIwKSxvKGYoZSksdFIwLG5SMCk7dmFyIEE9aVs1XTtpZihBKXtnKGUsdVIwKTt2YXIgUz1BWzFdLE09ZnVuY3Rpb24oVixmMCl7cmV0dXJuIGcoVixJTDApfSxLPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoRHJbMV0sSyxNLGUsUyksZyhlLGlSMCl9ZWxzZSBnKGUsZlIwKTtyZXR1cm4gdShmKGUpLHhSMCksdShmKGUpLG9SMCl9KSxOKHkkLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEVQLHQsbik7cmV0dXJuIG8oQzAoT0wwKSxpLGUpfSk7dmFyIGgkPVswLEFsLHAkLEI1LG0kLHE1LF8kLEVQLHkkXSxTUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sZCQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihTUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksb0wwKSxvKGYoZSksY0wwLGFMMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEcpe3JldHVybiB1KG4sRyl9ZnVuY3Rpb24gcyhHKXtyZXR1cm4gdSh0LEcpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxzTDApLHUoZihlKSx2TDApLG8oZihlKSxiTDAsbEwwKTt2YXIgcD1pWzJdO2lmKHApe2coZSxwTDApO3ZhciB5PXBbMV07byhmKGUpLG1MMCx5KSxnKGUsX0wwKX1lbHNlIGcoZSx5TDApO3UoZihlKSxoTDApLHUoZihlKSxkTDApLG8oZihlKSx3TDAsa0wwKTt2YXIgVD1pWzNdO2lmKFQpe2coZSxFTDApO3ZhciBFPVRbMV0sZD1mdW5jdGlvbihHLEEpe3JldHVybiBnKEcseEwwKX0sdz1mdW5jdGlvbihHKXtyZXR1cm4gdSh0LEcpfTtSKERyWzFdLHcsZCxlLEUpLGcoZSxTTDApfWVsc2UgZyhlLGdMMCk7cmV0dXJuIHUoZihlKSxGTDApLHUoZihlKSxUTDApfSksTihkJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhTUCx0LG4pO3JldHVybiBvKEMwKGZMMCksaSxlKX0pO3ZhciBrJD1bMCxTUCxkJF0sZ1A9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sdyQ9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfTtOKGdQLGZ1bmN0aW9uKHQsbixlKXt1KGYobiksWkQwKSxvKGYobiksckwwLFFEMCk7dmFyIGk9ZVsxXTtpZihpKXtnKG4sZUwwKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24ocCx5KXtyZXR1cm4gZyhwLCREMCl9LHM9ZnVuY3Rpb24ocCl7cmV0dXJuIHUodCxwKX07UihEclsxXSxzLGMsbix4KSxnKG4sbkwwKX1lbHNlIGcobix0TDApO3JldHVybiB1KGYobiksdUwwKSx1KGYobiksaUwwKX0pLE4odyQsZnVuY3Rpb24odCxuKXt2YXIgZT11KGdQLHQpO3JldHVybiBvKEMwKEpEMCksZSxuKX0pO3ZhciBFJD1bMCxnUCx3JF0sRlA9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxTJD1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX0sVFA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGckPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFU1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxGJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKEZQLGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4/Zyh0LEtEMCk6Zyh0LFdEMCl9KSxOKFMkLGZ1bmN0aW9uKHQpe3JldHVybiBvKEMwKHpEMCksRlAsdCl9KSxOKFRQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxYRDApLG8odCxlLGlbMV0pLHUoZihlKSxZRDApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKFU1LGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksVkQwKX0pLE4oZyQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oVFAsdCxuKTtyZXR1cm4gbyhDMChIRDApLGksZSl9KSxOKFU1LGZ1bmN0aW9uKHQsbixlLGkpe3N3aXRjaChpWzBdKXtjYXNlIDA6dShmKGUpLEVQMCk7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0scz1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKEt2WzFdLHMsYyxlLHgpLHUoZihlKSxTUDApO2Nhc2UgMTp1KGYoZSksZ1AwKTt2YXIgcD1pWzFdLHk9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gdXIoVVdbMV0seSxlLHApLHUoZihlKSxGUDApO2Nhc2UgMjp1KGYoZSksVFAwKTt2YXIgVD1pWzFdLEU9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxkPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIoRjFbOF0sZCxFLGUsVCksdShmKGUpLE9QMCk7Y2FzZSAzOnUoZihlKSxJUDApO3ZhciB3PWlbMV0sRz1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiB1cihYV1sxXSxHLGUsdyksdShmKGUpLEFQMCk7Y2FzZSA0OnUoZihlKSxOUDApO3ZhciBBPWlbMV0sUz1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiB1cihWV1sxXSxTLGUsQSksdShmKGUpLENQMCk7Y2FzZSA1OnUoZihlKSxQUDApO3ZhciBNPWlbMV0sSz1mdW5jdGlvbihoMCl7cmV0dXJuIHUobixoMCl9LFY9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihjUFsxXSxWLEssZSxNKSx1KGYoZSksRFAwKTtjYXNlIDY6dShmKGUpLExQMCk7dmFyIGYwPWlbMV0sbTA9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxrMD1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKGIkWzNdLGswLG0wLGUsZjApLHUoZihlKSxSUDApO2Nhc2UgNzp1KGYoZSksalAwKTt2YXIgZzA9aVsxXSxlMD1mdW5jdGlvbihoMCl7cmV0dXJuIHUobixoMCl9LHgwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIoYlBbMV0seDAsZTAsZSxnMCksdShmKGUpLEdQMCk7Y2FzZSA4OnUoZihlKSxNUDApO3ZhciBsPWlbMV0sYzA9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSx0MD1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKFA1WzFdLHQwLGMwLGUsbCksdShmKGUpLEJQMCk7Y2FzZSA5OnUoZihlKSxxUDApO3ZhciBvMD1pWzFdLHcwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sXzA9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihRSls1XSxfMCx3MCxlLG8wKSx1KGYoZSksVVAwKTtjYXNlIDEwOnUoZihlKSxIUDApO3ZhciBFMD1pWzFdLFUwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sYj1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKGUkWzFdLGIsVTAsZSxFMCksdShmKGUpLFhQMCk7Y2FzZSAxMTp1KGYoZSksWVAwKTt2YXIgUjA9aVsxXSxYPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sczA9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUih5NVsxXSxzMCxYLGUsUjApLHUoZihlKSxWUDApO2Nhc2UgMTI6dShmKGUpLHpQMCk7dmFyIGhyPWlbMV0sQXI9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxvcj1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKGg1WzFdLG9yLEFyLGUsaHIpLHUoZihlKSxLUDApO2Nhc2UgMTM6dShmKGUpLFdQMCk7dmFyIFcwPWlbMV0sTHI9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxUcj1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKHZQWzFdLFRyLExyLGUsVzApLHUoZihlKSxKUDApO2Nhc2UgMTQ6dShmKGUpLCRQMCk7dmFyIEhyPWlbMV0sT3I9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxmcj1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKGhKWzFdLGZyLE9yLGUsSHIpLHUoZihlKSxaUDApO2Nhc2UgMTU6dShmKGUpLFFQMCk7dmFyIFJyPWlbMV0sV3I9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gdXIoRSRbMV0sV3IsZSxSciksdShmKGUpLHJEMCk7Y2FzZSAxNjp1KGYoZSksZUQwKTt2YXIgSnI9aVsxXSxhcj1mdW5jdGlvbihoMCl7cmV0dXJuIHUobixoMCl9LF9yPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIoWUpbN10sX3IsYXIsZSxKciksdShmKGUpLG5EMCk7Y2FzZSAxNzp1KGYoZSksdEQwKTt2YXIgSXI9aVsxXSxmZT1mdW5jdGlvbihoMCl7cmV0dXJuIHUobixoMCl9LHYwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIocyRbMV0sdjAsZmUsZSxJciksdShmKGUpLHVEMCk7Y2FzZSAxODp1KGYoZSksaUQwKTt2YXIgUD1pWzFdLEw9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxRPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIoZFBbM10sUSxMLGUsUCksdShmKGUpLGZEMCk7Y2FzZSAxOTp1KGYoZSkseEQwKTt2YXIgaTA9aVsxXSxsMD1mdW5jdGlvbihoMCl7cmV0dXJuIHUobixoMCl9LFMwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIoayRbMV0sUzAsbDAsZSxpMCksdShmKGUpLG9EMCk7Y2FzZSAyMDp1KGYoZSksYUQwKTt2YXIgVDA9aVsxXSxycj1mdW5jdGlvbihoMCl7cmV0dXJuIHUobixoMCl9LEwwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIod0pbMV0sTDAscnIsZSxUMCksdShmKGUpLGNEMCk7Y2FzZSAyMTp1KGYoZSksc0QwKTt2YXIgQj1pWzFdLFo9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxwMD1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKGdKWzFdLHAwLFosZSxCKSx1KGYoZSksdkQwKTtjYXNlIDIyOnUoZihlKSxsRDApO3ZhciBiMD1pWzFdLE8wPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sTTA9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihPSlsxXSxNMCxPMCxlLGIwKSx1KGYoZSksYkQwKTtjYXNlIDIzOnUoZihlKSxwRDApO3ZhciBlcj1pWzFdLHlyPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sdnI9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihBc1s1XSx2cix5cixlLGVyKSx1KGYoZSksbUQwKTtjYXNlIDI0OnUoZihlKSxfRDApO3ZhciAkMD1pWzFdLEVyPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sTXI9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihHV1syXSxNcixFcixlLCQwKSx1KGYoZSkseUQwKTtjYXNlIDI1OnUoZihlKSxoRDApO3ZhciBCcj1pWzFdLHFyPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sanI9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihoJFs3XSxqcixxcixlLEJyKSx1KGYoZSksZEQwKTtjYXNlIDI2OnUoZihlKSxrRDApO3ZhciAkcj1pWzFdLG5lPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sUXI9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihQNVsxXSxRcixuZSxlLCRyKSx1KGYoZSksd0QwKTtjYXNlIDI3OnUoZihlKSxFRDApO3ZhciBiZT1pWzFdLGFlPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0scGU9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihCV1sxXSxwZSxhZSxlLGJlKSx1KGYoZSksU0QwKTtjYXNlIDI4OnUoZihlKSxnRDApO3ZhciBvZT1pWzFdLGNlPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sZ2U9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUih0SlsxXSxnZSxjZSxlLG9lKSx1KGYoZSksRkQwKTtjYXNlIDI5OnUoZihlKSxURDApO3ZhciBxMD1pWzFdLEZyPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sXz1mdW5jdGlvbihoMCl7cmV0dXJuIHUodCxoMCl9O3JldHVybiBSKGVKWzJdLF8sRnIsZSxxMCksdShmKGUpLE9EMCk7Y2FzZSAzMDp1KGYoZSksSUQwKTt2YXIgaz1pWzFdLEk9ZnVuY3Rpb24oaDApe3JldHVybiB1KG4saDApfSxVPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIoaUpbMV0sVSxJLGUsayksdShmKGUpLEFEMCk7Y2FzZSAzMTp1KGYoZSksTkQwKTt2YXIgWT1pWzFdLHkwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sUDA9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihjSlsyXSxQMCx5MCxlLFkpLHUoZihlKSxDRDApO2Nhc2UgMzI6dShmKGUpLFBEMCk7dmFyIEkwPWlbMV0sRD1mdW5jdGlvbihoMCl7cmV0dXJuIHUobixoMCl9LHUwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdSh0LGgwKX07cmV0dXJuIFIoeTVbMV0sdTAsRCxlLEkwKSx1KGYoZSksREQwKTtjYXNlIDMzOnUoZihlKSxMRDApO3ZhciBYMD1pWzFdLEowPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0saXI9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihoNVsxXSxpcixKMCxlLFgwKSx1KGYoZSksUkQwKTtjYXNlIDM0OnUoZihlKSxqRDApO3ZhciBRMD1pWzFdLEYwPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sU3I9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihJbFsyXSxTcixGMCxlLFEwKSx1KGYoZSksR0QwKTtjYXNlIDM1OnUoZihlKSxNRDApO3ZhciBtcj1pWzFdLENyPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sc3I9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihfSlsxXSxzcixDcixlLG1yKSx1KGYoZSksQkQwKTtkZWZhdWx0OnUoZihlKSxxRDApO3ZhciBQcj1pWzFdLEswPWZ1bmN0aW9uKGgwKXtyZXR1cm4gdShuLGgwKX0sVXI9ZnVuY3Rpb24oaDApe3JldHVybiB1KHQsaDApfTtyZXR1cm4gUihLV1sxXSxVcixLMCxlLFByKSx1KGYoZSksVUQwKX19KSxOKEYkLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFU1LHQsbik7cmV0dXJuIG8oQzAod1AwKSxpLGUpfSksbXUoVzNyLFl1LFswLEt2LEdXLEJXLFVXLFhXLFZXLEtXLHk1LGg1LGVKLHRKLGlKLGNKLElsLF9KLGhKLHdKLGdKLE9KLFlKLFA1LGNQLHZQLGJQLFFKLGUkLGRQLHMkLGIkLGgkLGskLEUkLEZQLFMkLFRQLGckLFU1LEYkXSk7dmFyIE9QPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxUJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxINT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxPJD1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9O04oT1AsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGhQMCksbyhuLGUsaVsxXSksdShmKGUpLGRQMCk7dmFyIHg9aVsyXTtyZXR1cm4gdXIoSDUsZnVuY3Rpb24oYyl7cmV0dXJuIHUodCxjKX0sZSx4KSx1KGYoZSksa1AwKX0pLE4oVCQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oT1AsdCxuKTtyZXR1cm4gbyhDMCh5UDApLGksZSl9KSxOKEg1LGZ1bmN0aW9uKHQsbixlKXt1KGYobiksY1AwKSxvKGYobiksdlAwLHNQMCk7dmFyIGk9ZVsxXTtpZihpKXtnKG4sbFAwKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24ocCx5KXtyZXR1cm4gZyhwLGFQMCl9LHM9ZnVuY3Rpb24ocCl7cmV0dXJuIHUodCxwKX07UihEclsxXSxzLGMsbix4KSxnKG4sYlAwKX1lbHNlIGcobixwUDApO3JldHVybiB1KGYobiksbVAwKSx1KGYobiksX1AwKX0pLE4oTyQsZnVuY3Rpb24odCxuKXt2YXIgZT11KEg1LHQpO3JldHVybiBvKEMwKG9QMCksZSxuKX0pO3ZhciBJJD1bMCxPUCxUJCxINSxPJF0sSVA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEEkPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oSVAsZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSx1UDApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihFKXtyZXR1cm4gdShuLEUpfSxzPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O3JldHVybiBSKCRlWzEzXSxzLGMsZSx4KSx1KGYoZSksaVAwKX11KGYoZSksZlAwKTt2YXIgcD1pWzFdO2Z1bmN0aW9uIHkoRSl7cmV0dXJuIHUobixFKX1mdW5jdGlvbiBUKEUpe3JldHVybiB1KHQsRSl9cmV0dXJuIFIoSSRbMV0sVCx5LGUscCksdShmKGUpLHhQMCl9KSxOKEEkLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKElQLHQsbik7cmV0dXJuIG8oQzAodFAwKSxpLGUpfSk7dmFyIE4kPVswLEkkLElQLEEkXSxBUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sQyQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sWDU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFAkPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oQVAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHJQMCksbyh0LGUsaVsxXSksdShmKGUpLGVQMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoWDUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxuUDApfSksTihDJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhBUCx0LG4pO3JldHVybiBvKEMwKFFDMCksaSxlKX0pLE4oWDUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLE1DMCksbyhmKGUpLHFDMCxCQzApO3ZhciB4PWlbMV07dShmKGUpLFVDMCk7dmFyIGM9MDtsZShmdW5jdGlvbihFLGQpe0UmJnUoZihlKSxHQzApO2Z1bmN0aW9uIHcoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBHKEEpe3JldHVybiB1KHQsQSl9cmV0dXJuIFIoTiRbMl0sRyx3LGUsZCksMX0sYyx4KSx1KGYoZSksSEMwKSx1KGYoZSksWEMwKSx1KGYoZSksWUMwKSxvKGYoZSksekMwLFZDMCk7dmFyIHM9aVsyXTtpZihzKXtnKGUsS0MwKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oRSxkKXt1KGYoRSksUkMwKTt2YXIgdz0wO3JldHVybiBsZShmdW5jdGlvbihHLEEpe0cmJnUoZihFKSxMQzApO2Z1bmN0aW9uIFMoTSl7cmV0dXJuIHUodCxNKX1yZXR1cm4gdXIoaXVbMV0sUyxFLEEpLDF9LHcsZCksdShmKEUpLGpDMCl9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07UihEclsxXSxULHksZSxwKSxnKGUsV0MwKX1lbHNlIGcoZSxKQzApO3JldHVybiB1KGYoZSksJEMwKSx1KGYoZSksWkMwKX0pLE4oUCQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWDUsdCxuKTtyZXR1cm4gbyhDMChEQzApLGksZSl9KTt2YXIgTlA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEQkPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFk1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxMJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxTZWU9WzAsQVAsQyQsWDUsUCRdO04oTlAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLE5DMCksbyh0LGUsaVsxXSksdShmKGUpLENDMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoWTUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxQQzApfSksTihEJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhOUCx0LG4pO3JldHVybiBvKEMwKEFDMCksaSxlKX0pLE4oWTUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHlDMCksbyhmKGUpLGRDMCxoQzApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKHFlWzMxXSxzLGMsZSx4KSx1KGYoZSksa0MwKSx1KGYoZSksd0MwKSxvKGYoZSksU0MwLEVDMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUsZ0MwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLF9DMCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsZSx5KSxnKGUsRkMwKX1lbHNlIGcoZSxUQzApO3JldHVybiB1KGYoZSksT0MwKSx1KGYoZSksSUMwKX0pLE4oTCQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWTUsdCxuKTtyZXR1cm4gbyhDMChtQzApLGksZSl9KTt2YXIgQ1A9WzAsTlAsRCQsWTUsTCRdLFY1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxSJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFY1LGZ1bmN0aW9uKHQsbixlLGkpe3N3aXRjaChpWzBdKXtjYXNlIDA6dShmKGUpLGNDMCk7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKEUpe3JldHVybiB1KG4sRSl9LHM9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07cmV0dXJuIFIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxzQzApO2Nhc2UgMTp1KGYoZSksdkMwKTt2YXIgcD1pWzFdLHk9ZnVuY3Rpb24oRSl7cmV0dXJuIHUobixFKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtyZXR1cm4gUihDUFsxXSxULHksZSxwKSx1KGYoZSksbEMwKTtkZWZhdWx0OnJldHVybiB1KGYoZSksYkMwKSxvKHQsZSxpWzFdKSx1KGYoZSkscEMwKX19KSxOKFIkLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFY1LHQsbik7cmV0dXJuIG8oQzAoYUMwKSxpLGUpfSk7dmFyIFBQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxqJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFBQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxXTjApLG8oZihlKSwkTjAsSk4wKTt2YXIgeD1pWzFdO3UoZihlKSxaTjApO3ZhciBjPTA7bGUoZnVuY3Rpb24oRSxkKXtFJiZ1KGYoZSksS04wKTtmdW5jdGlvbiB3KEcpe3JldHVybiB1KG4sRyl9cmV0dXJuIFIoVjUsZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX0sdyxlLGQpLDF9LGMseCksdShmKGUpLFFOMCksdShmKGUpLHJDMCksdShmKGUpLGVDMCksbyhmKGUpLHRDMCxuQzApO3ZhciBzPWlbMl07aWYocyl7ZyhlLHVDMCk7dmFyIHA9c1sxXSx5PWZ1bmN0aW9uKEUsZCl7dShmKEUpLFZOMCk7dmFyIHc9MDtyZXR1cm4gbGUoZnVuY3Rpb24oRyxBKXtHJiZ1KGYoRSksWU4wKTtmdW5jdGlvbiBTKE0pe3JldHVybiB1KHQsTSl9cmV0dXJuIHVyKGl1WzFdLFMsRSxBKSwxfSx3LGQpLHUoZihFKSx6TjApfSxUPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O1IoRHJbMV0sVCx5LGUscCksZyhlLGlDMCl9ZWxzZSBnKGUsZkMwKTtyZXR1cm4gdShmKGUpLHhDMCksdShmKGUpLG9DMCl9KSxOKGokLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFBQLHQsbik7cmV0dXJuIG8oQzAoWE4wKSxpLGUpfSk7dmFyIEckPVswLFY1LFIkLFBQLGokXSx6NT1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LE0kPWZ1bmN0aW9uIHQobil7cmV0dXJuIHQuZnVuKG4pfSxEUD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxCJD1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LEs1PWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0scSQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9O04oejUsZnVuY3Rpb24odCxuKXt1KGYodCksUE4wKSxvKGYodCksTE4wLEROMCk7dmFyIGU9blsxXTtvKGYodCksUk4wLGUpLHUoZih0KSxqTjApLHUoZih0KSxHTjApLG8oZih0KSxCTjAsTU4wKTt2YXIgaT1uWzJdO3JldHVybiBvKGYodCkscU4wLGkpLHUoZih0KSxVTjApLHUoZih0KSxITjApfSksTihNJCxmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChDTjApLHo1LHQpfSksTihEUCxmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHUoZihuKSxJTjApLG8odCxuLGVbMV0pLHUoZihuKSxBTjApLG8oSzUsbixlWzJdKSx1KGYobiksTk4wKX0pLE4oQiQsZnVuY3Rpb24odCxuKXt2YXIgZT11KERQLHQpO3JldHVybiBvKEMwKE9OMCksZSxuKX0pLE4oSzUsZnVuY3Rpb24odCxuKXt1KGYodCkseU4wKSxvKGYodCksZE4wLGhOMCksbyh6NSx0LG5bMV0pLHUoZih0KSxrTjApLHUoZih0KSx3TjApLG8oZih0KSxTTjAsRU4wKTt2YXIgZT1uWzJdO3JldHVybiBvKGYodCksZ04wLGUpLHUoZih0KSxGTjApLHUoZih0KSxUTjApfSksTihxJCxmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChfTjApLEs1LHQpfSk7dmFyIFUkPVswLHo1LE0kLERQLEIkLEs1LHEkXSxMUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sSCQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihMUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksJEEwKSxvKGYoZSksUUEwLFpBMCk7dmFyIHg9aVsxXTt1KGYoZSksck4wKTt2YXIgYz0wO2xlKGZ1bmN0aW9uKHcsRyl7dyYmdShmKGUpLEpBMCk7ZnVuY3Rpb24gQShTKXtyZXR1cm4gdSh0LFMpfXJldHVybiB1cihVJFszXSxBLGUsRyksMX0sYyx4KSx1KGYoZSksZU4wKSx1KGYoZSksbk4wKSx1KGYoZSksdE4wKSxvKGYoZSksaU4wLHVOMCk7dmFyIHM9aVsyXTt1KGYoZSksZk4wKTt2YXIgcD0wO2xlKGZ1bmN0aW9uKHcsRyl7dyYmdShmKGUpLFdBMCk7ZnVuY3Rpb24gQShNKXtyZXR1cm4gdShuLE0pfWZ1bmN0aW9uIFMoTSl7cmV0dXJuIHUodCxNKX1yZXR1cm4gUihxZVszMV0sUyxBLGUsRyksMX0scCxzKSx1KGYoZSkseE4wKSx1KGYoZSksb04wKSx1KGYoZSksYU4wKSxvKGYoZSksc04wLGNOMCk7dmFyIHk9aVszXTtpZih5KXtnKGUsdk4wKTt2YXIgVD15WzFdLEU9ZnVuY3Rpb24odyxHKXtyZXR1cm4gZyh3LEtBMCl9LGQ9ZnVuY3Rpb24odyl7cmV0dXJuIHUodCx3KX07UihEclsxXSxkLEUsZSxUKSxnKGUsbE4wKX1lbHNlIGcoZSxiTjApO3JldHVybiB1KGYoZSkscE4wKSx1KGYoZSksbU4wKX0pLE4oSCQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oTFAsdCxuKTtyZXR1cm4gbyhDMCh6QTApLGksZSl9KTt2YXIgUlA9WzAsVSQsTFAsSCRdLGpQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxYJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKGpQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxPQTApLG8oZihlKSxBQTAsSUEwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoUyl7cmV0dXJuIHUobixTKX1mdW5jdGlvbiBzKFMpe3JldHVybiB1KHQsUyl9UihxZVszMV0scyxjLGUseCksdShmKGUpLE5BMCksdShmKGUpLENBMCksbyhmKGUpLERBMCxQQTApO3ZhciBwPWlbMl07dShmKGUpLExBMCksbyh0LGUscFsxXSksdShmKGUpLFJBMCk7dmFyIHk9cFsyXTtmdW5jdGlvbiBUKFMpe3JldHVybiB1KG4sUyl9ZnVuY3Rpb24gRShTKXtyZXR1cm4gdSh0LFMpfVIoUlBbMl0sRSxULGUseSksdShmKGUpLGpBMCksdShmKGUpLEdBMCksdShmKGUpLE1BMCksbyhmKGUpLHFBMCxCQTApO3ZhciBkPWlbM107aWYoZCl7ZyhlLFVBMCk7dmFyIHc9ZFsxXSxHPWZ1bmN0aW9uKFMsTSl7cmV0dXJuIGcoUyxUQTApfSxBPWZ1bmN0aW9uKFMpe3JldHVybiB1KHQsUyl9O1IoRHJbMV0sQSxHLGUsdyksZyhlLEhBMCl9ZWxzZSBnKGUsWEEwKTtyZXR1cm4gdShmKGUpLFlBMCksdShmKGUpLFZBMCl9KSxOKFgkLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGpQLHQsbik7cmV0dXJuIG8oQzAoRkEwKSxpLGUpfSk7dmFyIFkkPVswLGpQLFgkXSxUMT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sViQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sR1A9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHokPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFc1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxLJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFQxLGZ1bmN0aW9uKHQsbixlLGkpe3N3aXRjaChpWzBdKXtjYXNlIDA6dmFyIHg9aVsxXTt1KGYoZSkscEEwKSx1KGYoZSksbUEwKSxvKG4sZSx4WzFdKSx1KGYoZSksX0EwKTt2YXIgYz14WzJdLHM9ZnVuY3Rpb24oUyl7cmV0dXJuIHUodCxTKX07cmV0dXJuIHVyKFRsWzJdLHMsZSxjKSx1KGYoZSkseUEwKSx1KGYoZSksaEEwKTtjYXNlIDE6dShmKGUpLGRBMCk7dmFyIHA9aVsxXSx5PWZ1bmN0aW9uKFMpe3JldHVybiB1KG4sUyl9LFQ9ZnVuY3Rpb24oUyl7cmV0dXJuIHUodCxTKX07cmV0dXJuIFIoUm5bMV0sVCx5LGUscCksdShmKGUpLGtBMCk7Y2FzZSAyOnUoZihlKSx3QTApO3ZhciBFPWlbMV0sZD1mdW5jdGlvbihTKXtyZXR1cm4gdSh0LFMpfTtyZXR1cm4gdXIoQnBbMV0sZCxlLEUpLHUoZihlKSxFQTApO2RlZmF1bHQ6dShmKGUpLFNBMCk7dmFyIHc9aVsxXSxHPWZ1bmN0aW9uKFMpe3JldHVybiB1KG4sUyl9LEE9ZnVuY3Rpb24oUyl7cmV0dXJuIHUodCxTKX07cmV0dXJuIFIocXBbMV0sQSxHLGUsdyksdShmKGUpLGdBMCl9fSksTihWJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhUMSx0LG4pO3JldHVybiBvKEMwKGJBMCksaSxlKX0pLE4oR1AsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHNBMCksbyh0LGUsaVsxXSksdShmKGUpLHZBMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoVzUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxsQTApfSksTih6JCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhHUCx0LG4pO3JldHVybiBvKEMwKGNBMCksaSxlKX0pLE4oVzUsZnVuY3Rpb24odCxuLGUsaSl7c3dpdGNoKGlbMF0pe2Nhc2UgMDp1KGYoZSksckkwKSxvKGYoZSksbkkwLGVJMCk7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKHMwKXtyZXR1cm4gdShuLHMwKX07UihUMSxmdW5jdGlvbihzMCl7cmV0dXJuIHUodCxzMCl9LGMsZSx4KSx1KGYoZSksdEkwKSx1KGYoZSksdUkwKSxvKGYoZSksZkkwLGlJMCk7dmFyIHM9aVsyXSxwPWZ1bmN0aW9uKHMwKXtyZXR1cm4gdShuLHMwKX0seT1mdW5jdGlvbihzMCl7cmV0dXJuIHUodCxzMCl9O1IocWVbMzFdLHkscCxlLHMpLHUoZihlKSx4STApLHUoZihlKSxvSTApLG8oZihlKSxjSTAsYUkwKTt2YXIgVD1pWzNdO3JldHVybiBvKGYoZSksc0kwLFQpLHUoZihlKSx2STApLHUoZihlKSxsSTApO2Nhc2UgMTp2YXIgRT1pWzJdO3UoZihlKSxiSTApLG8oZihlKSxtSTAscEkwKTt2YXIgZD1pWzFdLHc9ZnVuY3Rpb24oczApe3JldHVybiB1KG4sczApfTtSKFQxLGZ1bmN0aW9uKHMwKXtyZXR1cm4gdSh0LHMwKX0sdyxlLGQpLHUoZihlKSxfSTApLHUoZihlKSx5STApLG8oZihlKSxkSTAsaEkwKSx1KGYoZSksa0kwKSxvKHQsZSxFWzFdKSx1KGYoZSksd0kwKTt2YXIgRz1FWzJdLEE9ZnVuY3Rpb24oczApe3JldHVybiB1KG4sczApfSxTPWZ1bmN0aW9uKHMwKXtyZXR1cm4gdSh0LHMwKX07cmV0dXJuIFIoQXNbNV0sUyxBLGUsRyksdShmKGUpLEVJMCksdShmKGUpLFNJMCksdShmKGUpLGdJMCk7Y2FzZSAyOnZhciBNPWlbM10sSz1pWzJdO3UoZihlKSxGSTApLG8oZihlKSxPSTAsVEkwKTt2YXIgVj1pWzFdLGYwPWZ1bmN0aW9uKHMwKXtyZXR1cm4gdShuLHMwKX07UihUMSxmdW5jdGlvbihzMCl7cmV0dXJuIHUodCxzMCl9LGYwLGUsViksdShmKGUpLElJMCksdShmKGUpLEFJMCksbyhmKGUpLENJMCxOSTApLHUoZihlKSxQSTApLG8odCxlLEtbMV0pLHUoZihlKSxESTApO3ZhciBtMD1LWzJdLGswPWZ1bmN0aW9uKHMwKXtyZXR1cm4gdShuLHMwKX0sZzA9ZnVuY3Rpb24oczApe3JldHVybiB1KHQsczApfTtpZihSKEFzWzVdLGcwLGswLGUsbTApLHUoZihlKSxMSTApLHUoZihlKSxSSTApLHUoZihlKSxqSTApLG8oZihlKSxNSTAsR0kwKSxNKXtnKGUsQkkwKTt2YXIgZTA9TVsxXSx4MD1mdW5jdGlvbihzMCxocil7cmV0dXJuIGcoczAsUU8wKX0sbD1mdW5jdGlvbihzMCl7cmV0dXJuIHUodCxzMCl9O1IoRHJbMV0sbCx4MCxlLGUwKSxnKGUscUkwKX1lbHNlIGcoZSxVSTApO3JldHVybiB1KGYoZSksSEkwKSx1KGYoZSksWEkwKTtkZWZhdWx0OnZhciBjMD1pWzNdLHQwPWlbMl07dShmKGUpLFlJMCksbyhmKGUpLHpJMCxWSTApO3ZhciBvMD1pWzFdLHcwPWZ1bmN0aW9uKHMwKXtyZXR1cm4gdShuLHMwKX07UihUMSxmdW5jdGlvbihzMCl7cmV0dXJuIHUodCxzMCl9LHcwLGUsbzApLHUoZihlKSxLSTApLHUoZihlKSxXSTApLG8oZihlKSwkSTAsSkkwKSx1KGYoZSksWkkwKSxvKHQsZSx0MFsxXSksdShmKGUpLFFJMCk7dmFyIF8wPXQwWzJdLEUwPWZ1bmN0aW9uKHMwKXtyZXR1cm4gdShuLHMwKX0sVTA9ZnVuY3Rpb24oczApe3JldHVybiB1KHQsczApfTtpZihSKEFzWzVdLFUwLEUwLGUsXzApLHUoZihlKSxyQTApLHUoZihlKSxlQTApLHUoZihlKSxuQTApLG8oZihlKSx1QTAsdEEwKSxjMCl7ZyhlLGlBMCk7dmFyIGI9YzBbMV0sUjA9ZnVuY3Rpb24oczAsaHIpe3JldHVybiBnKHMwLFpPMCl9LFg9ZnVuY3Rpb24oczApe3JldHVybiB1KHQsczApfTtSKERyWzFdLFgsUjAsZSxiKSxnKGUsZkEwKX1lbHNlIGcoZSx4QTApO3JldHVybiB1KGYoZSksb0EwKSx1KGYoZSksYUEwKX19KSxOKEskLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFc1LHQsbik7cmV0dXJuIG8oQzAoJE8wKSxpLGUpfSk7dmFyIFckPVswLFQxLFYkLEdQLHokLFc1LEskXSxNUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sSiQ9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sSjU9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LCQkPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oTVAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEtPMCksbyh0LGUsaVsxXSksdShmKGUpLFdPMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoSjUsZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxKTzApfSksTihKJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhNUCx0LG4pO3JldHVybiBvKEMwKHpPMCksaSxlKX0pLE4oSjUsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLExPMCksbyhmKGUpLGpPMCxSTzApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKHFlWzMxXSxzLGMsZSx4KSx1KGYoZSksR08wKSx1KGYoZSksTU8wKSxvKGYoZSkscU8wLEJPMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUsVU8wKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLERPMCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsZSx5KSxnKGUsSE8wKX1lbHNlIGcoZSxYTzApO3JldHVybiB1KGYoZSksWU8wKSx1KGYoZSksVk8wKX0pLE4oJCQsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oSjUsdCxuKTtyZXR1cm4gbyhDMChQTzApLGksZSl9KTt2YXIgWiQ9WzAsTVAsSiQsSjUsJCRdLCQ1PWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxRJD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxCUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sclo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TigkNSxmdW5jdGlvbih0LG4sZSxpKXtpZihpWzBdPT09MCl7dShmKGUpLElPMCk7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKEUpe3JldHVybiB1KG4sRSl9LHM9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07cmV0dXJuIFIoVyRbM10scyxjLGUseCksdShmKGUpLEFPMCl9dShmKGUpLE5PMCk7dmFyIHA9aVsxXTtmdW5jdGlvbiB5KEUpe3JldHVybiB1KG4sRSl9ZnVuY3Rpb24gVChFKXtyZXR1cm4gdSh0LEUpfXJldHVybiBSKFokWzFdLFQseSxlLHApLHUoZihlKSxDTzApfSksTihRJCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9bygkNSx0LG4pO3JldHVybiBvKEMwKE9PMCksaSxlKX0pLE4oQlAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGJPMCksbyhmKGUpLG1PMCxwTzApO3ZhciB4PWlbMV07dShmKGUpLF9PMCk7dmFyIGM9MDtsZShmdW5jdGlvbihFLGQpe0UmJnUoZihlKSxsTzApO2Z1bmN0aW9uIHcoRyl7cmV0dXJuIHUobixHKX1yZXR1cm4gUigkNSxmdW5jdGlvbihHKXtyZXR1cm4gdSh0LEcpfSx3LGUsZCksMX0sYyx4KSx1KGYoZSkseU8wKSx1KGYoZSksaE8wKSx1KGYoZSksZE8wKSxvKGYoZSksd08wLGtPMCk7dmFyIHM9aVsyXTtpZihzKXtnKGUsRU8wKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oRSxkKXt1KGYoRSksc08wKTt2YXIgdz0wO3JldHVybiBsZShmdW5jdGlvbihHLEEpe0cmJnUoZihFKSxjTzApO2Z1bmN0aW9uIFMoTSl7cmV0dXJuIHUodCxNKX1yZXR1cm4gdXIoaXVbMV0sUyxFLEEpLDF9LHcsZCksdShmKEUpLHZPMCl9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07UihEclsxXSxULHksZSxwKSxnKGUsU08wKX1lbHNlIGcoZSxnTzApO3JldHVybiB1KGYoZSksRk8wKSx1KGYoZSksVE8wKX0pLE4oclosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oQlAsdCxuKTtyZXR1cm4gbyhDMChhTzApLGksZSl9KTt2YXIgZVo9WzAsVyQsWiQsJDUsUSQsQlAsclpdLHFQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxuWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHFQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxXVDApLG8oZihlKSwkVDAsSlQwKTt2YXIgeD1pWzFdO3UoZihlKSxaVDApO3ZhciBjPTA7bGUoZnVuY3Rpb24oRSxkKXtFJiZ1KGYoZSksS1QwKTtmdW5jdGlvbiB3KEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gRyhBKXtyZXR1cm4gdSh0LEEpfXJldHVybiBSKHFlWzMxXSxHLHcsZSxkKSwxfSxjLHgpLHUoZihlKSxRVDApLHUoZihlKSxyTzApLHUoZihlKSxlTzApLG8oZihlKSx0TzAsbk8wKTt2YXIgcz1pWzJdO2lmKHMpe2coZSx1TzApO3ZhciBwPXNbMV0seT1mdW5jdGlvbihFLGQpe3JldHVybiBnKEUselQwKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtSKERyWzFdLFQseSxlLHApLGcoZSxpTzApfWVsc2UgZyhlLGZPMCk7cmV0dXJuIHUoZihlKSx4TzApLHUoZihlKSxvTzApfSksTihuWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhxUCx0LG4pO3JldHVybiBvKEMwKFZUMCksaSxlKX0pO3ZhciB0Wj1bMCxxUCxuWl0sWjU9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSx1Wj1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX0sVVA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGlaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oWjUsZnVuY3Rpb24odCxuKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBnKHQsR1QwKTtjYXNlIDE6cmV0dXJuIGcodCxNVDApO2Nhc2UgMjpyZXR1cm4gZyh0LEJUMCk7Y2FzZSAzOnJldHVybiBnKHQscVQwKTtjYXNlIDQ6cmV0dXJuIGcodCxVVDApO2Nhc2UgNTpyZXR1cm4gZyh0LEhUMCk7Y2FzZSA2OnJldHVybiBnKHQsWFQwKTtkZWZhdWx0OnJldHVybiBnKHQsWVQwKX19KSxOKHVaLGZ1bmN0aW9uKHQpe3JldHVybiBvKEMwKGpUMCksWjUsdCl9KSxOKFVQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxrVDApLG8oZihlKSxFVDAsd1QwKSxvKFo1LGUsaVsxXSksdShmKGUpLFNUMCksdShmKGUpLGdUMCksbyhmKGUpLFRUMCxGVDApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKHFlWzMxXSxzLGMsZSx4KSx1KGYoZSksT1QwKSx1KGYoZSksSVQwKSxvKGYoZSksTlQwLEFUMCk7dmFyIHA9aVszXTtpZihwKXtnKGUsQ1QwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLGRUMCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsZSx5KSxnKGUsUFQwKX1lbHNlIGcoZSxEVDApO3JldHVybiB1KGYoZSksTFQwKSx1KGYoZSksUlQwKX0pLE4oaVosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oVVAsdCxuKTtyZXR1cm4gbyhDMChoVDApLGksZSl9KTt2YXIgZlo9WzAsWjUsdVosVVAsaVpdLFE1PWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0seFo9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LEhQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxvWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFE1LGZ1bmN0aW9uKHQsbil7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gZyh0LCRGMCk7Y2FzZSAxOnJldHVybiBnKHQsWkYwKTtjYXNlIDI6cmV0dXJuIGcodCxRRjApO2Nhc2UgMzpyZXR1cm4gZyh0LHJUMCk7Y2FzZSA0OnJldHVybiBnKHQsZVQwKTtjYXNlIDU6cmV0dXJuIGcodCxuVDApO2Nhc2UgNjpyZXR1cm4gZyh0LHRUMCk7Y2FzZSA3OnJldHVybiBnKHQsdVQwKTtjYXNlIDg6cmV0dXJuIGcodCxpVDApO2Nhc2UgOTpyZXR1cm4gZyh0LGZUMCk7Y2FzZSAxMDpyZXR1cm4gZyh0LHhUMCk7Y2FzZSAxMTpyZXR1cm4gZyh0LG9UMCk7Y2FzZSAxMjpyZXR1cm4gZyh0LGFUMCk7Y2FzZSAxMzpyZXR1cm4gZyh0LGNUMCk7Y2FzZSAxNDpyZXR1cm4gZyh0LHNUMCk7Y2FzZSAxNTpyZXR1cm4gZyh0LHZUMCk7Y2FzZSAxNjpyZXR1cm4gZyh0LGxUMCk7Y2FzZSAxNzpyZXR1cm4gZyh0LGJUMCk7Y2FzZSAxODpyZXR1cm4gZyh0LHBUMCk7Y2FzZSAxOTpyZXR1cm4gZyh0LG1UMCk7Y2FzZSAyMDpyZXR1cm4gZyh0LF9UMCk7ZGVmYXVsdDpyZXR1cm4gZyh0LHlUMCl9fSksTih4WixmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChKRjApLFE1LHQpfSksTihIUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksQUYwKSxvKGYoZSksQ0YwLE5GMCksbyhRNSxlLGlbMV0pLHUoZihlKSxQRjApLHUoZihlKSxERjApLG8oZihlKSxSRjAsTEYwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBzKEEpe3JldHVybiB1KHQsQSl9UihxZVszMV0scyxjLGUseCksdShmKGUpLGpGMCksdShmKGUpLEdGMCksbyhmKGUpLEJGMCxNRjApO3ZhciBwPWlbM107ZnVuY3Rpb24geShBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIFQoQSl7cmV0dXJuIHUodCxBKX1SKHFlWzMxXSxULHksZSxwKSx1KGYoZSkscUYwKSx1KGYoZSksVUYwKSxvKGYoZSksWEYwLEhGMCk7dmFyIEU9aVs0XTtpZihFKXtnKGUsWUYwKTt2YXIgZD1FWzFdLHc9ZnVuY3Rpb24oQSxTKXtyZXR1cm4gZyhBLElGMCl9LEc9ZnVuY3Rpb24oQSl7cmV0dXJuIHUodCxBKX07UihEclsxXSxHLHcsZSxkKSxnKGUsVkYwKX1lbHNlIGcoZSx6RjApO3JldHVybiB1KGYoZSksS0YwKSx1KGYoZSksV0YwKX0pLE4ob1osZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oSFAsdCxuKTtyZXR1cm4gbyhDMChPRjApLGksZSl9KTt2YXIgYVo9WzAsUTUseFosSFAsb1pdLHJtPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sY1o9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LFhQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxzWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHJtLGZ1bmN0aW9uKHQsbil7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gZyh0LGxGMCk7Y2FzZSAxOnJldHVybiBnKHQsYkYwKTtjYXNlIDI6cmV0dXJuIGcodCxwRjApO2Nhc2UgMzpyZXR1cm4gZyh0LG1GMCk7Y2FzZSA0OnJldHVybiBnKHQsX0YwKTtjYXNlIDU6cmV0dXJuIGcodCx5RjApO2Nhc2UgNjpyZXR1cm4gZyh0LGhGMCk7Y2FzZSA3OnJldHVybiBnKHQsZEYwKTtjYXNlIDg6cmV0dXJuIGcodCxrRjApO2Nhc2UgOTpyZXR1cm4gZyh0LHdGMCk7Y2FzZSAxMDpyZXR1cm4gZyh0LEVGMCk7Y2FzZSAxMTpyZXR1cm4gZyh0LFNGMCk7Y2FzZSAxMjpyZXR1cm4gZyh0LGdGMCk7Y2FzZSAxMzpyZXR1cm4gZyh0LEZGMCk7ZGVmYXVsdDpyZXR1cm4gZyh0LFRGMCl9fSksTihjWixmdW5jdGlvbih0KXtyZXR1cm4gbyhDMCh2RjApLHJtLHQpfSksTihYUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksSGcwKSxvKGYoZSksWWcwLFhnMCk7dmFyIHg9aVsxXTt4PyhnKGUsVmcwKSxvKHJtLGUseFsxXSksZyhlLHpnMCkpOmcoZSxLZzApLHUoZihlKSxXZzApLHUoZihlKSxKZzApLG8oZihlKSxaZzAsJGcwKTt2YXIgYz1pWzJdO2Z1bmN0aW9uIHMoUyl7cmV0dXJuIHUobixTKX1mdW5jdGlvbiBwKFMpe3JldHVybiB1KHQsUyl9UihkaVs1XSxwLHMsZSxjKSx1KGYoZSksUWcwKSx1KGYoZSksckYwKSxvKGYoZSksbkYwLGVGMCk7dmFyIHk9aVszXTtmdW5jdGlvbiBUKFMpe3JldHVybiB1KG4sUyl9ZnVuY3Rpb24gRShTKXtyZXR1cm4gdSh0LFMpfVIocWVbMzFdLEUsVCxlLHkpLHUoZihlKSx0RjApLHUoZihlKSx1RjApLG8oZihlKSxmRjAsaUYwKTt2YXIgZD1pWzRdO2lmKGQpe2coZSx4RjApO3ZhciB3PWRbMV0sRz1mdW5jdGlvbihTLE0pe3JldHVybiBnKFMsVWcwKX0sQT1mdW5jdGlvbihTKXtyZXR1cm4gdSh0LFMpfTtSKERyWzFdLEEsRyxlLHcpLGcoZSxvRjApfWVsc2UgZyhlLGFGMCk7cmV0dXJuIHUoZihlKSxjRjApLHUoZihlKSxzRjApfSksTihzWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhYUCx0LG4pO3JldHVybiBvKEMwKHFnMCksaSxlKX0pO3ZhciB2Wj1bMCxybSxjWixYUCxzWl0sZW09ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxsWj1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX0sWVA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGJaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oZW0sZnVuY3Rpb24odCxuKXtyZXR1cm4gbj9nKHQsTWcwKTpnKHQsQmcwKX0pLE4obFosZnVuY3Rpb24odCl7cmV0dXJuIG8oQzAoR2cwKSxlbSx0KX0pLE4oWVAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLF9nMCksbyhmKGUpLGhnMCx5ZzApLG8oZW0sZSxpWzFdKSx1KGYoZSksZGcwKSx1KGYoZSksa2cwKSxvKGYoZSksRWcwLHdnMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHcpe3JldHVybiB1KG4sdyl9ZnVuY3Rpb24gcyh3KXtyZXR1cm4gdSh0LHcpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxTZzApLHUoZihlKSxnZzApLG8oZihlKSxUZzAsRmcwKTt2YXIgcD1pWzNdO28oZihlKSxPZzAscCksdShmKGUpLElnMCksdShmKGUpLEFnMCksbyhmKGUpLENnMCxOZzApO3ZhciB5PWlbNF07aWYoeSl7ZyhlLFBnMCk7dmFyIFQ9eVsxXSxFPWZ1bmN0aW9uKHcsRyl7cmV0dXJuIGcodyxtZzApfSxkPWZ1bmN0aW9uKHcpe3JldHVybiB1KHQsdyl9O1IoRHJbMV0sZCxFLGUsVCksZyhlLERnMCl9ZWxzZSBnKGUsTGcwKTtyZXR1cm4gdShmKGUpLFJnMCksdShmKGUpLGpnMCl9KSxOKGJaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFlQLHQsbik7cmV0dXJuIG8oQzAocGcwKSxpLGUpfSk7dmFyIHBaPVswLGVtLGxaLFlQLGJaXSxubT1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LG1aPWZ1bmN0aW9uIHQobil7cmV0dXJuIHQuZnVuKG4pfSxWUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sX1o9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihubSxmdW5jdGlvbih0LG4pe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGcodCx2ZzApO2Nhc2UgMTpyZXR1cm4gZyh0LGxnMCk7ZGVmYXVsdDpyZXR1cm4gZyh0LGJnMCl9fSksTihtWixmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChzZzApLG5tLHQpfSksTihWUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksWVMwKSxvKGYoZSkselMwLFZTMCksbyhubSxlLGlbMV0pLHUoZihlKSxLUzApLHUoZihlKSxXUzApLG8oZihlKSwkUzAsSlMwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBzKEEpe3JldHVybiB1KHQsQSl9UihxZVszMV0scyxjLGUseCksdShmKGUpLFpTMCksdShmKGUpLFFTMCksbyhmKGUpLGVnMCxyZzApO3ZhciBwPWlbM107ZnVuY3Rpb24geShBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIFQoQSl7cmV0dXJuIHUodCxBKX1SKHFlWzMxXSxULHksZSxwKSx1KGYoZSksbmcwKSx1KGYoZSksdGcwKSxvKGYoZSksaWcwLHVnMCk7dmFyIEU9aVs0XTtpZihFKXtnKGUsZmcwKTt2YXIgZD1FWzFdLHc9ZnVuY3Rpb24oQSxTKXtyZXR1cm4gZyhBLFhTMCl9LEc9ZnVuY3Rpb24oQSl7cmV0dXJuIHUodCxBKX07UihEclsxXSxHLHcsZSxkKSxnKGUseGcwKX1lbHNlIGcoZSxvZzApO3JldHVybiB1KGYoZSksYWcwKSx1KGYoZSksY2cwKX0pLE4oX1osZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oVlAsdCxuKTtyZXR1cm4gbyhDMChIUzApLGksZSl9KTt2YXIgeVo9WzAsbm0sbVosVlAsX1pdLHpQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxoWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHpQLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxFUzApLG8oZihlKSxnUzAsU1MwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoSyl7cmV0dXJuIHUobixLKX1mdW5jdGlvbiBzKEspe3JldHVybiB1KHQsSyl9UihxZVszMV0scyxjLGUseCksdShmKGUpLEZTMCksdShmKGUpLFRTMCksbyhmKGUpLElTMCxPUzApO3ZhciBwPWlbMl07ZnVuY3Rpb24geShLKXtyZXR1cm4gdShuLEspfWZ1bmN0aW9uIFQoSyl7cmV0dXJuIHUodCxLKX1SKHFlWzMxXSxULHksZSxwKSx1KGYoZSksQVMwKSx1KGYoZSksTlMwKSxvKGYoZSksUFMwLENTMCk7dmFyIEU9aVszXTtmdW5jdGlvbiBkKEspe3JldHVybiB1KG4sSyl9ZnVuY3Rpb24gdyhLKXtyZXR1cm4gdSh0LEspfVIocWVbMzFdLHcsZCxlLEUpLHUoZihlKSxEUzApLHUoZihlKSxMUzApLG8oZihlKSxqUzAsUlMwKTt2YXIgRz1pWzRdO2lmKEcpe2coZSxHUzApO3ZhciBBPUdbMV0sUz1mdW5jdGlvbihLLFYpe3JldHVybiBnKEssd1MwKX0sTT1mdW5jdGlvbihLKXtyZXR1cm4gdSh0LEspfTtSKERyWzFdLE0sUyxlLEEpLGcoZSxNUzApfWVsc2UgZyhlLEJTMCk7cmV0dXJuIHUoZihlKSxxUzApLHUoZihlKSxVUzApfSksTihoWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh6UCx0LG4pO3JldHVybiBvKEMwKGtTMCksaSxlKX0pO3ZhciBkWj1bMCx6UCxoWl0sdG09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGtaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04odG0sZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSxfUzApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihFKXtyZXR1cm4gdShuLEUpfSxzPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O3JldHVybiBSKHFlWzMxXSxzLGMsZSx4KSx1KGYoZSkseVMwKX11KGYoZSksaFMwKTt2YXIgcD1pWzFdO2Z1bmN0aW9uIHkoRSl7cmV0dXJuIHUobixFKX1mdW5jdGlvbiBUKEUpe3JldHVybiB1KHQsRSl9cmV0dXJuIFIoQ1BbMV0sVCx5LGUscCksdShmKGUpLGRTMCl9KSxOKGtaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHRtLHQsbik7cmV0dXJuIG8oQzAobVMwKSxpLGUpfSk7dmFyIEtQPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx3Wj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx1bT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sRVo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihLUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksbFMwKSxvKHQsZSxpWzFdKSx1KGYoZSksYlMwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUih1bSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLHBTMCl9KSxOKHdaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEtQLHQsbik7cmV0dXJuIG8oQzAodlMwKSxpLGUpfSksTih1bSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksWkUwKSxvKGYoZSksclMwLFFFMCk7dmFyIHg9aVsxXTt1KGYoZSksZVMwKTt2YXIgYz0wO2xlKGZ1bmN0aW9uKEUsZCl7RSYmdShmKGUpLCRFMCk7ZnVuY3Rpb24gdyhHKXtyZXR1cm4gdShuLEcpfXJldHVybiBSKHRtLGZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9LHcsZSxkKSwxfSxjLHgpLHUoZihlKSxuUzApLHUoZihlKSx0UzApLHUoZihlKSx1UzApLG8oZihlKSxmUzAsaVMwKTt2YXIgcz1pWzJdO2lmKHMpe2coZSx4UzApO3ZhciBwPXNbMV0seT1mdW5jdGlvbihFLGQpe3UoZihFKSxXRTApO3ZhciB3PTA7cmV0dXJuIGxlKGZ1bmN0aW9uKEcsQSl7RyYmdShmKEUpLEtFMCk7ZnVuY3Rpb24gUyhNKXtyZXR1cm4gdSh0LE0pfXJldHVybiB1cihpdVsxXSxTLEUsQSksMX0sdyxkKSx1KGYoRSksSkUwKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtSKERyWzFdLFQseSxlLHApLGcoZSxvUzApfWVsc2UgZyhlLGFTMCk7cmV0dXJuIHUoZihlKSxjUzApLHUoZihlKSxzUzApfSksTihFWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh1bSx0LG4pO3JldHVybiBvKEMwKHpFMCksaSxlKX0pO3ZhciBXUD1bMCxLUCx3Wix1bSxFWl0sSlA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFNaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oSlAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGtFMCksbyhmKGUpLEVFMCx3RTApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhmMCl7cmV0dXJuIHUobixmMCl9ZnVuY3Rpb24gcyhmMCl7cmV0dXJuIHUodCxmMCl9UihxZVszMV0scyxjLGUseCksdShmKGUpLFNFMCksdShmKGUpLGdFMCksbyhmKGUpLFRFMCxGRTApO3ZhciBwPWlbMl07aWYocCl7ZyhlLE9FMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGYwKXtyZXR1cm4gdShuLGYwKX0sRT1mdW5jdGlvbihmMCl7cmV0dXJuIHUodCxmMCl9O1IocWVbMl1bMV0sRSxULGUseSksZyhlLElFMCl9ZWxzZSBnKGUsQUUwKTt1KGYoZSksTkUwKSx1KGYoZSksQ0UwKSxvKGYoZSksREUwLFBFMCk7dmFyIGQ9aVszXTtpZihkKXtnKGUsTEUwKTt2YXIgdz1kWzFdLEc9ZnVuY3Rpb24oZjApe3JldHVybiB1KG4sZjApfSxBPWZ1bmN0aW9uKGYwKXtyZXR1cm4gdSh0LGYwKX07UihXUFsxXSxBLEcsZSx3KSxnKGUsUkUwKX1lbHNlIGcoZSxqRTApO3UoZihlKSxHRTApLHUoZihlKSxNRTApLG8oZihlKSxxRTAsQkUwKTt2YXIgUz1pWzRdO2lmKFMpe2coZSxVRTApO3ZhciBNPVNbMV0sSz1mdW5jdGlvbihmMCxtMCl7cmV0dXJuIGcoZjAsZEUwKX0sVj1mdW5jdGlvbihmMCl7cmV0dXJuIHUodCxmMCl9O1IoRHJbMV0sVixLLGUsTSksZyhlLEhFMCl9ZWxzZSBnKGUsWEUwKTtyZXR1cm4gdShmKGUpLFlFMCksdShmKGUpLFZFMCl9KSxOKFNaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEpQLHQsbik7cmV0dXJuIG8oQzAoaEUwKSxpLGUpfSk7dmFyIGdaPVswLEpQLFNaXSwkUD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sRlo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TigkUCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksSncwKSxvKGYoZSksWncwLCR3MCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKFYpe3JldHVybiB1KG4sVil9ZnVuY3Rpb24gcyhWKXtyZXR1cm4gdSh0LFYpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxRdzApLHUoZihlKSxyRTApLG8oZihlKSxuRTAsZUUwKTt2YXIgcD1pWzJdO2lmKHApe2coZSx0RTApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihWKXtyZXR1cm4gdShuLFYpfSxFPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IocWVbMl1bMV0sRSxULGUseSksZyhlLHVFMCl9ZWxzZSBnKGUsaUUwKTt1KGYoZSksZkUwKSx1KGYoZSkseEUwKSxvKGYoZSksYUUwLG9FMCk7dmFyIGQ9aVszXTtmdW5jdGlvbiB3KFYpe3JldHVybiB1KG4sVil9ZnVuY3Rpb24gRyhWKXtyZXR1cm4gdSh0LFYpfVIoV1BbMV0sRyx3LGUsZCksdShmKGUpLGNFMCksdShmKGUpLHNFMCksbyhmKGUpLGxFMCx2RTApO3ZhciBBPWlbNF07aWYoQSl7ZyhlLGJFMCk7dmFyIFM9QVsxXSxNPWZ1bmN0aW9uKFYsZjApe3JldHVybiBnKFYsV3cwKX0sSz1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKERyWzFdLEssTSxlLFMpLGcoZSxwRTApfWVsc2UgZyhlLG1FMCk7cmV0dXJuIHUoZihlKSxfRTApLHUoZihlKSx5RTApfSksTihGWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9bygkUCx0LG4pO3JldHVybiBvKEMwKEt3MCksaSxlKX0pO3ZhciBaUD1bMCwkUCxGWl0sUVA9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFRaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oUVAsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLER3MCksbyhmKGUpLFJ3MCxMdzApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyh5KXtyZXR1cm4gdShuLHkpfWZ1bmN0aW9uIHMoeSl7cmV0dXJuIHUodCx5KX1SKFpQWzFdLHMsYyxlLHgpLHUoZihlKSxqdzApLHUoZihlKSxHdzApLG8oZihlKSxCdzAsTXcwKSxvKG4sZSxpWzJdKSx1KGYoZSkscXcwKSx1KGYoZSksVXcwKSxvKGYoZSksWHcwLEh3MCk7dmFyIHA9aVszXTtyZXR1cm4gbyhmKGUpLFl3MCxwKSx1KGYoZSksVncwKSx1KGYoZSksencwKX0pLE4oVFosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oUVAsdCxuKTtyZXR1cm4gbyhDMChQdzApLGksZSl9KTt2YXIgT1o9WzAsUVAsVFpdLGltPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxJWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxyRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sQVo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihpbSxmdW5jdGlvbih0LG4sZSxpKXtzd2l0Y2goaVswXSl7Y2FzZSAwOnUoZihlKSxUdzApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbih3KXtyZXR1cm4gdShuLHcpfSxzPWZ1bmN0aW9uKHcpe3JldHVybiB1KHQsdyl9O3JldHVybiBSKFJuWzFdLHMsYyxlLHgpLHUoZihlKSxPdzApO2Nhc2UgMTp1KGYoZSksSXcwKTt2YXIgcD1pWzFdLHk9ZnVuY3Rpb24odyl7cmV0dXJuIHUodCx3KX07cmV0dXJuIHVyKEJwWzFdLHksZSxwKSx1KGYoZSksQXcwKTtkZWZhdWx0OnUoZihlKSxOdzApO3ZhciBUPWlbMV0sRT1mdW5jdGlvbih3KXtyZXR1cm4gdShuLHcpfSxkPWZ1bmN0aW9uKHcpe3JldHVybiB1KHQsdyl9O3JldHVybiBSKHFlWzMxXSxkLEUsZSxUKSx1KGYoZSksQ3cwKX19KSxOKElaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGltLHQsbik7cmV0dXJuIG8oQzAoRncwKSxpLGUpfSksTihyRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksY3cwKSxvKGYoZSksdncwLHN3MCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEcpe3JldHVybiB1KG4sRyl9ZnVuY3Rpb24gcyhHKXtyZXR1cm4gdSh0LEcpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxsdzApLHUoZihlKSxidzApLG8oZihlKSxtdzAscHcwKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkoRyl7cmV0dXJuIHUobixHKX1SKGltLGZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9LHksZSxwKSx1KGYoZSksX3cwKSx1KGYoZSkseXcwKSxvKGYoZSksZHcwLGh3MCk7dmFyIFQ9aVszXTtpZihUKXtnKGUsa3cwKTt2YXIgRT1UWzFdLGQ9ZnVuY3Rpb24oRyxBKXtyZXR1cm4gZyhHLGF3MCl9LHc9ZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX07UihEclsxXSx3LGQsZSxFKSxnKGUsd3cwKX1lbHNlIGcoZSxFdzApO3JldHVybiB1KGYoZSksU3cwKSx1KGYoZSksZ3cwKX0pLE4oQVosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8ockQsdCxuKTtyZXR1cm4gbyhDMChvdzApLGksZSl9KTt2YXIgZUQ9WzAsaW0sSVosckQsQVpdLG5EPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxOWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKG5ELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxLazApLG8oZihlKSxKazAsV2swKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoeSl7cmV0dXJuIHUobix5KX1mdW5jdGlvbiBzKHkpe3JldHVybiB1KHQseSl9UihlRFszXSxzLGMsZSx4KSx1KGYoZSksJGswKSx1KGYoZSksWmswKSxvKGYoZSkscncwLFFrMCksbyhuLGUsaVsyXSksdShmKGUpLGV3MCksdShmKGUpLG53MCksbyhmKGUpLHV3MCx0dzApO3ZhciBwPWlbM107cmV0dXJuIG8oZihlKSxpdzAscCksdShmKGUpLGZ3MCksdShmKGUpLHh3MCl9KSxOKE5aLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKG5ELHQsbik7cmV0dXJuIG8oQzAoemswKSxpLGUpfSk7dmFyIENaPVswLG5ELE5aXSx0RD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sUFo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07Tih0RCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksRWswKSxvKGYoZSksZ2swLFNrMCk7dmFyIHg9aVsxXTtpZih4KXtnKGUsRmswKTt2YXIgYz14WzFdLHM9ZnVuY3Rpb24oRyl7cmV0dXJuIHUobixHKX0scD1mdW5jdGlvbihHKXtyZXR1cm4gdSh0LEcpfTtSKHFlWzMxXSxwLHMsZSxjKSxnKGUsVGswKX1lbHNlIGcoZSxPazApO3UoZihlKSxJazApLHUoZihlKSxBazApLG8oZihlKSxDazAsTmswKTt2YXIgeT1pWzJdO2lmKHkpe2coZSxQazApO3ZhciBUPXlbMV0sRT1mdW5jdGlvbihHLEEpe3JldHVybiBnKEcsd2swKX0sZD1mdW5jdGlvbihHKXtyZXR1cm4gdSh0LEcpfTtSKERyWzFdLGQsRSxlLFQpLGcoZSxEazApfWVsc2UgZyhlLExrMCk7dShmKGUpLFJrMCksdShmKGUpLGprMCksbyhmKGUpLE1rMCxHazApO3ZhciB3PWlbM107cmV0dXJuIG8oZihlKSxCazAsdyksdShmKGUpLHFrMCksdShmKGUpLFVrMCksbyhmKGUpLFhrMCxIazApLG8obixlLGlbNF0pLHUoZihlKSxZazApLHUoZihlKSxWazApfSksTihQWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh0RCx0LG4pO3JldHVybiBvKEMwKGtrMCksaSxlKX0pO3ZhciBEWj1bMCx0RCxQWl0sdUQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LExaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGZtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxSWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHVELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSx5azApLG8odCxlLGlbMV0pLHUoZihlKSxoazApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGZtLGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksZGswKX0pLE4oTFosZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8odUQsdCxuKTtyZXR1cm4gbyhDMChfazApLGksZSl9KSxOKGZtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSx0azApLG8oZihlKSxpazAsdWswKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBzKGQpe3JldHVybiB1KHQsZCl9UihkaVs1XSxzLGMsZSx4KSx1KGYoZSksZmswKSx1KGYoZSkseGswKSxvKGYoZSksYWswLG9rMCk7dmFyIHA9aVsyXTtmdW5jdGlvbiB5KGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gVChkKXtyZXR1cm4gdSh0LGQpfVIocWVbMzFdLFQseSxlLHApLHUoZihlKSxjazApLHUoZihlKSxzazApLG8oZihlKSxsazAsdmswKTt2YXIgRT1pWzNdO3JldHVybiBvKGYoZSksYmswLEUpLHUoZihlKSxwazApLHUoZihlKSxtazApfSksTihSWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhmbSx0LG4pO3JldHVybiBvKEMwKG5rMCksaSxlKX0pO3ZhciBqWj1bMCx1RCxMWixmbSxSWl0saUQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEdaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oaUQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFVkMCksbyhmKGUpLFhkMCxIZDApO3ZhciB4PWlbMV07dShmKGUpLFlkMCk7dmFyIGM9MDtsZShmdW5jdGlvbihFLGQpe0UmJnUoZihlKSxxZDApO2Z1bmN0aW9uIHcoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBHKEEpe3JldHVybiB1KHQsQSl9cmV0dXJuIFIoalpbMV0sRyx3LGUsZCksMX0sYyx4KSx1KGYoZSksVmQwKSx1KGYoZSksemQwKSx1KGYoZSksS2QwKSxvKGYoZSksSmQwLFdkMCk7dmFyIHM9aVsyXTtpZihzKXtnKGUsJGQwKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oRSl7cmV0dXJuIHUobixFKX0sVD1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtSKHFlWzMxXSxULHksZSxwKSxnKGUsWmQwKX1lbHNlIGcoZSxRZDApO3JldHVybiB1KGYoZSkscmswKSx1KGYoZSksZWswKX0pLE4oR1osZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oaUQsdCxuKTtyZXR1cm4gbyhDMChCZDApLGksZSl9KTt2YXIgZkQ9WzAsalosaUQsR1pdLHhEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxNWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHhELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxGZDApLG8oZihlKSxPZDAsVGQwKTt2YXIgeD1pWzFdO3UoZihlKSxJZDApO3ZhciBjPTA7bGUoZnVuY3Rpb24oRSxkKXtFJiZ1KGYoZSksZ2QwKTtmdW5jdGlvbiB3KEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gRyhBKXtyZXR1cm4gdSh0LEEpfXJldHVybiBSKGZEWzFdWzFdLEcsdyxlLGQpLDF9LGMseCksdShmKGUpLEFkMCksdShmKGUpLE5kMCksdShmKGUpLENkMCksbyhmKGUpLERkMCxQZDApO3ZhciBzPWlbMl07aWYocyl7ZyhlLExkMCk7dmFyIHA9c1sxXSx5PWZ1bmN0aW9uKEUpe3JldHVybiB1KG4sRSl9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07UihxZVszMV0sVCx5LGUscCksZyhlLFJkMCl9ZWxzZSBnKGUsamQwKTtyZXR1cm4gdShmKGUpLEdkMCksdShmKGUpLE1kMCl9KSxOKE1aLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHhELHQsbik7cmV0dXJuIG8oQzAoU2QwKSxpLGUpfSk7dmFyIEJaPVswLHhELE1aXSxvRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0scVo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihvRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksb2QwKSxvKGYoZSksY2QwLGFkMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKEEpe3JldHVybiB1KG4sQSl9ZnVuY3Rpb24gcyhBKXtyZXR1cm4gdSh0LEEpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxzZDApLHUoZihlKSx2ZDApLG8oZihlKSxiZDAsbGQwKTt2YXIgcD1pWzJdO2Z1bmN0aW9uIHkoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiBUKEEpe3JldHVybiB1KHQsQSl9UigkZVsxN10sVCx5LGUscCksdShmKGUpLHBkMCksdShmKGUpLG1kMCksbyhmKGUpLHlkMCxfZDApO3ZhciBFPWlbM107aWYoRSl7ZyhlLGhkMCk7dmFyIGQ9RVsxXSx3PWZ1bmN0aW9uKEEsUyl7cmV0dXJuIGcoQSx4ZDApfSxHPWZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9O1IoRHJbMV0sRyx3LGUsZCksZyhlLGRkMCl9ZWxzZSBnKGUsa2QwKTtyZXR1cm4gdShmKGUpLHdkMCksdShmKGUpLEVkMCl9KSxOKHFaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKG9ELHQsbik7cmV0dXJuIG8oQzAoZmQwKSxpLGUpfSk7dmFyIFVaPVswLG9ELHFaXSxhRD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxIWj1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9O04oYUQsZnVuY3Rpb24odCxuLGUpe3UoZihuKSxYaDApLG8oZihuKSxWaDAsWWgwKTt2YXIgaT1lWzFdO2Z1bmN0aW9uIHgoRyl7cmV0dXJuIHUodCxHKX1mdW5jdGlvbiBjKEcpe3JldHVybiB1KHQsRyl9UihSblsxXSxjLHgsbixpKSx1KGYobiksemgwKSx1KGYobiksS2gwKSxvKGYobiksSmgwLFdoMCk7dmFyIHM9ZVsyXTtmdW5jdGlvbiBwKEcpe3JldHVybiB1KHQsRyl9ZnVuY3Rpb24geShHKXtyZXR1cm4gdSh0LEcpfVIoUm5bMV0seSxwLG4scyksdShmKG4pLCRoMCksdShmKG4pLFpoMCksbyhmKG4pLHJkMCxRaDApO3ZhciBUPWVbM107aWYoVCl7ZyhuLGVkMCk7dmFyIEU9VFsxXSxkPWZ1bmN0aW9uKEcsQSl7cmV0dXJuIGcoRyxIaDApfSx3PWZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9O1IoRHJbMV0sdyxkLG4sRSksZyhuLG5kMCl9ZWxzZSBnKG4sdGQwKTtyZXR1cm4gdShmKG4pLHVkMCksdShmKG4pLGlkMCl9KSxOKEhaLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShhRCx0KTtyZXR1cm4gbyhDMChVaDApLGUsbil9KTt2YXIgWFo9WzAsYUQsSFpdLGNEPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFlaPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihjRCxmdW5jdGlvbih0LG4sZSl7dShmKG4pLERoMCksbyhmKG4pLFJoMCxMaDApO3ZhciBpPWVbMV07aWYoaSl7ZyhuLGpoMCk7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKHAseSl7cmV0dXJuIGcocCxQaDApfSxzPWZ1bmN0aW9uKHApe3JldHVybiB1KHQscCl9O1IoRHJbMV0scyxjLG4seCksZyhuLEdoMCl9ZWxzZSBnKG4sTWgwKTtyZXR1cm4gdShmKG4pLEJoMCksdShmKG4pLHFoMCl9KSxOKFlaLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShjRCx0KTtyZXR1cm4gbyhDMChDaDApLGUsbil9KTt2YXIgVlo9WzAsY0QsWVpdLHNEPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LHpaPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX07TihzRCxmdW5jdGlvbih0LG4sZSl7dShmKG4pLFNoMCksbyhmKG4pLEZoMCxnaDApO3ZhciBpPWVbMV07aWYoaSl7ZyhuLFRoMCk7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKHAseSl7cmV0dXJuIGcocCxFaDApfSxzPWZ1bmN0aW9uKHApe3JldHVybiB1KHQscCl9O1IoRHJbMV0scyxjLG4seCksZyhuLE9oMCl9ZWxzZSBnKG4sSWgwKTtyZXR1cm4gdShmKG4pLEFoMCksdShmKG4pLE5oMCl9KSxOKHpaLGZ1bmN0aW9uKHQsbil7dmFyIGU9dShzRCx0KTtyZXR1cm4gbyhDMCh3aDApLGUsbil9KTt2YXIgS1o9WzAsc0QselpdLHZEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxXWj1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHZELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxjaDApLG8oZihlKSx2aDAsc2gwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBzKGQpe3JldHVybiB1KHQsZCl9UihxZVszMV0scyxjLGUseCksdShmKGUpLGxoMCksdShmKGUpLGJoMCksbyhmKGUpLG1oMCxwaDApO3ZhciBwPWlbMl07aWYocCl7ZyhlLF9oMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCxhaDApfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLHloMCl9ZWxzZSBnKGUsaGgwKTtyZXR1cm4gdShmKGUpLGRoMCksdShmKGUpLGtoMCl9KSxOKFdaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHZELHQsbik7cmV0dXJuIG8oQzAob2gwKSxpLGUpfSk7dmFyIEpaPVswLHZELFdaXSxsRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sJFo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0seG09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFpaPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04obEQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGloMCksbyhuLGUsaVsxXSksdShmKGUpLGZoMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoeG0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSx4aDApfSksTigkWixmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhsRCx0LG4pO3JldHVybiBvKEMwKHVoMCksaSxlKX0pLE4oeG0sZnVuY3Rpb24odCxuLGUsaSl7c3dpdGNoKGlbMF0pe2Nhc2UgMDp1KGYoZSksSl8wKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0scz1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihHJFszXSxzLGMsZSx4KSx1KGYoZSksJF8wKTtjYXNlIDE6dShmKGUpLFpfMCk7dmFyIHA9aVsxXSx5PWZ1bmN0aW9uKFkpe3JldHVybiB1KG4sWSl9LFQ9ZnVuY3Rpb24oWSl7cmV0dXJuIHUodCxZKX07cmV0dXJuIFIoQXNbNV0sVCx5LGUscCksdShmKGUpLFFfMCk7Y2FzZSAyOnUoZihlKSxyeTApO3ZhciBFPWlbMV0sZD1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSx3PWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiBSKHZaWzNdLHcsZCxlLEUpLHUoZihlKSxleTApO2Nhc2UgMzp1KGYoZSksbnkwKTt2YXIgRz1pWzFdLEE9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0sUz1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihhWlszXSxTLEEsZSxHKSx1KGYoZSksdHkwKTtjYXNlIDQ6dShmKGUpLHV5MCk7dmFyIE09aVsxXSxLPWZ1bmN0aW9uKFkpe3JldHVybiB1KG4sWSl9LFY9ZnVuY3Rpb24oWSl7cmV0dXJuIHUodCxZKX07cmV0dXJuIFIoWlBbMV0sVixLLGUsTSksdShmKGUpLGl5MCk7Y2FzZSA1OnUoZihlKSxmeTApO3ZhciBmMD1pWzFdLG0wPWZ1bmN0aW9uKFkpe3JldHVybiB1KG4sWSl9LGswPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiBSKEYxWzhdLGswLG0wLGUsZjApLHUoZihlKSx4eTApO2Nhc2UgNjp1KGYoZSksb3kwKTt2YXIgZzA9aVsxXSxlMD1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSx4MD1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihmRFsyXSx4MCxlMCxlLGcwKSx1KGYoZSksYXkwKTtjYXNlIDc6dShmKGUpLGN5MCk7dmFyIGw9aVsxXSxjMD1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSx0MD1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihkWlsxXSx0MCxjMCxlLGwpLHUoZihlKSxzeTApO2Nhc2UgODp1KGYoZSksdnkwKTt2YXIgbzA9aVsxXSx3MD1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxfMD1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihBc1s1XSxfMCx3MCxlLG8wKSx1KGYoZSksbHkwKTtjYXNlIDk6dShmKGUpLGJ5MCk7dmFyIEUwPWlbMV0sVTA9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0sYj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihCWlsxXSxiLFUwLGUsRTApLHUoZihlKSxweTApO2Nhc2UgMTA6dShmKGUpLG15MCk7dmFyIFIwPWlbMV0sWD1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxzMD1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihSblsxXSxzMCxYLGUsUjApLHUoZihlKSxfeTApO2Nhc2UgMTE6dShmKGUpLHl5MCk7dmFyIGhyPWlbMV0sQXI9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0sb3I9ZnVuY3Rpb24oWSl7cmV0dXJuIHUodCxZKX07cmV0dXJuIFIoSlpbMV0sb3IsQXIsZSxociksdShmKGUpLGh5MCk7Y2FzZSAxMjp1KGYoZSksZHkwKTt2YXIgVzA9aVsxXSxMcj1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxUcj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihVTlsxN10sVHIsTHIsZSxXMCksdShmKGUpLGt5MCk7Y2FzZSAxMzp1KGYoZSksd3kwKTt2YXIgSHI9aVsxXSxPcj1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxmcj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihVTlsxOV0sZnIsT3IsZSxIciksdShmKGUpLEV5MCk7Y2FzZSAxNDp1KGYoZSksU3kwKTt2YXIgUnI9aVsxXSxXcj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gdXIoVGxbMl0sV3IsZSxSciksdShmKGUpLGd5MCk7Y2FzZSAxNTp1KGYoZSksRnkwKTt2YXIgSnI9aVsxXSxhcj1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxfcj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUih5WlszXSxfcixhcixlLEpyKSx1KGYoZSksVHkwKTtjYXNlIDE2OnUoZihlKSxPeTApO3ZhciBJcj1pWzFdLGZlPWZ1bmN0aW9uKFkpe3JldHVybiB1KG4sWSl9LHYwPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiBSKGVEWzNdLHYwLGZlLGUsSXIpLHUoZihlKSxJeTApO2Nhc2UgMTc6dShmKGUpLEF5MCk7dmFyIFA9aVsxXSxMPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiB1cihYWlsxXSxMLGUsUCksdShmKGUpLE55MCk7Y2FzZSAxODp1KGYoZSksQ3kwKTt2YXIgUT1pWzFdLGkwPWZ1bmN0aW9uKFkpe3JldHVybiB1KG4sWSl9LGwwPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiBSKGdaWzFdLGwwLGkwLGUsUSksdShmKGUpLFB5MCk7Y2FzZSAxOTp1KGYoZSksRHkwKTt2YXIgUzA9aVsxXSxUMD1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxycj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihlWls1XSxycixUMCxlLFMwKSx1KGYoZSksTHkwKTtjYXNlIDIwOnUoZihlKSxSeTApO3ZhciBMMD1pWzFdLEI9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0sWj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihPWlsxXSxaLEIsZSxMMCksdShmKGUpLGp5MCk7Y2FzZSAyMTp1KGYoZSksR3kwKTt2YXIgcDA9aVsxXSxiMD1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxPMD1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihDWlsxXSxPMCxiMCxlLHAwKSx1KGYoZSksTXkwKTtjYXNlIDIyOnUoZihlKSxCeTApO3ZhciBNMD1pWzFdLGVyPWZ1bmN0aW9uKFkpe3JldHVybiB1KG4sWSl9LHlyPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiBSKHRaWzFdLHlyLGVyLGUsTTApLHUoZihlKSxxeTApO2Nhc2UgMjM6dShmKGUpLFV5MCk7dmFyIHZyPWlbMV0sJDA9ZnVuY3Rpb24oWSl7cmV0dXJuIHUodCxZKX07cmV0dXJuIHVyKEtaWzFdLCQwLGUsdnIpLHUoZihlKSxIeTApO2Nhc2UgMjQ6dShmKGUpLFh5MCk7dmFyIEVyPWlbMV0sTXI9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0sQnI9ZnVuY3Rpb24oWSl7cmV0dXJuIHUodCxZKX07cmV0dXJuIFIoWSRbMV0sQnIsTXIsZSxFciksdShmKGUpLFl5MCk7Y2FzZSAyNTp1KGYoZSksVnkwKTt2YXIgcXI9aVsxXSxqcj1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSwkcj1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihSUFsyXSwkcixqcixlLHFyKSx1KGYoZSksenkwKTtjYXNlIDI2OnUoZihlKSxLeTApO3ZhciBuZT1pWzFdLFFyPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiB1cihWWlsxXSxRcixlLG5lKSx1KGYoZSksV3kwKTtjYXNlIDI3OnUoZihlKSxKeTApO3ZhciBiZT1pWzFdLGFlPWZ1bmN0aW9uKFkpe3JldHVybiB1KG4sWSl9LHBlPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiBSKFVaWzFdLHBlLGFlLGUsYmUpLHUoZihlKSwkeTApO2Nhc2UgMjg6dShmKGUpLFp5MCk7dmFyIG9lPWlbMV0sY2U9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0sZ2U9ZnVuY3Rpb24oWSl7cmV0dXJuIHUodCxZKX07cmV0dXJuIFIoZlpbM10sZ2UsY2UsZSxvZSksdShmKGUpLFF5MCk7Y2FzZSAyOTp1KGYoZSkscmgwKTt2YXIgcTA9aVsxXSxGcj1mdW5jdGlvbihZKXtyZXR1cm4gdShuLFkpfSxfPWZ1bmN0aW9uKFkpe3JldHVybiB1KHQsWSl9O3JldHVybiBSKHBaWzNdLF8sRnIsZSxxMCksdShmKGUpLGVoMCk7ZGVmYXVsdDp1KGYoZSksbmgwKTt2YXIgaz1pWzFdLEk9ZnVuY3Rpb24oWSl7cmV0dXJuIHUobixZKX0sVT1mdW5jdGlvbihZKXtyZXR1cm4gdSh0LFkpfTtyZXR1cm4gUihEWlsxXSxVLEksZSxrKSx1KGYoZSksdGgwKX19KSxOKFpaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHhtLHQsbik7cmV0dXJuIG8oQzAoV18wKSxpLGUpfSksbXUoSjNyLHFlLFswLE4kLFNlZSxDUCxHJCxSUCxZJCxlWix0WixmWixhWix2WixwWix5WixkWix0bSxrWixXUCxnWixaUCxPWixlRCxDWixEWixmRCxCWixVWixYWixWWixLWixKWixsRCwkWix4bSxaWl0pO3ZhciBiRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sUVo9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sb209ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sclE9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfTtOKGJELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxWXzApLG8obixlLGlbMV0pLHUoZihlKSx6XzApO3ZhciB4PWlbMl07cmV0dXJuIHVyKG9tLGZ1bmN0aW9uKGMpe3JldHVybiB1KHQsYyl9LGUseCksdShmKGUpLEtfMCl9KSxOKFFaLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGJELHQsbik7cmV0dXJuIG8oQzAoWV8wKSxpLGUpfSksTihvbSxmdW5jdGlvbih0LG4sZSl7dShmKG4pLENfMCksbyhmKG4pLERfMCxQXzApO3ZhciBpPWVbMV07byhmKG4pLExfMCxpKSx1KGYobiksUl8wKSx1KGYobiksal8wKSxvKGYobiksTV8wLEdfMCk7dmFyIHg9ZVsyXTtpZih4KXtnKG4sQl8wKTt2YXIgYz14WzFdLHM9ZnVuY3Rpb24oeSxUKXtyZXR1cm4gZyh5LE5fMCl9LHA9ZnVuY3Rpb24oeSl7cmV0dXJuIHUodCx5KX07UihEclsxXSxwLHMsbixjKSxnKG4scV8wKX1lbHNlIGcobixVXzApO3JldHVybiB1KGYobiksSF8wKSx1KGYobiksWF8wKX0pLE4oclEsZnVuY3Rpb24odCxuKXt2YXIgZT11KG9tLHQpO3JldHVybiBvKEMwKEFfMCksZSxuKX0pO3ZhciBPMT1bMCxiRCxRWixvbSxyUV0scEQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGVRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGFtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxuUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHBELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxUXzApLG8odCxlLGlbMV0pLHUoZihlKSxPXzApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGFtLGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksSV8wKX0pLE4oZVEsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8ocEQsdCxuKTtyZXR1cm4gbyhDMChGXzApLGksZSl9KSxOKGFtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxfXzApLG8oZihlKSxoXzAseV8wKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoRSl7cmV0dXJuIHUobixFKX1mdW5jdGlvbiBzKEUpe3JldHVybiB1KHQsRSl9UihPMVsxXSxzLGMsZSx4KSx1KGYoZSksZF8wKSx1KGYoZSksa18wKSxvKGYoZSksRV8wLHdfMCk7dmFyIHA9aVsyXTtmdW5jdGlvbiB5KEUpe3JldHVybiB1KG4sRSl9ZnVuY3Rpb24gVChFKXtyZXR1cm4gdSh0LEUpfXJldHVybiBSKE8xWzFdLFQseSxlLHApLHUoZihlKSxTXzApLHUoZihlKSxnXzApfSksTihuUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhhbSx0LG4pO3JldHVybiBvKEMwKG1fMCksaSxlKX0pO3ZhciBtRD1bMCxwRCxlUSxhbSxuUV0sX0Q9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHRRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGNtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx1UT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKF9ELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSx1XzApLG8oZihlKSxmXzAsaV8wKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoRSl7cmV0dXJuIHUobixFKX1SKGNtLGZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9LGMsZSx4KSx1KGYoZSkseF8wKSx1KGYoZSksb18wKSxvKGYoZSksY18wLGFfMCk7dmFyIHM9aVsyXTtpZihzKXtnKGUsc18wKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oRSxkKXt1KGYoRSksbl8wKTt2YXIgdz0wO3JldHVybiBsZShmdW5jdGlvbihHLEEpe0cmJnUoZihFKSxlXzApO2Z1bmN0aW9uIFMoTSl7cmV0dXJuIHUodCxNKX1yZXR1cm4gdXIoaXVbMV0sUyxFLEEpLDF9LHcsZCksdShmKEUpLHRfMCl9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07UihEclsxXSxULHksZSxwKSxnKGUsdl8wKX1lbHNlIGcoZSxsXzApO3JldHVybiB1KGYoZSksYl8wKSx1KGYoZSkscF8wKX0pLE4odFEsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oX0QsdCxuKTtyZXR1cm4gbyhDMChyXzApLGksZSl9KSxOKGNtLGZ1bmN0aW9uKHQsbixlLGkpe2lmKGkpe3UoZihlKSwkOTApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihwKXtyZXR1cm4gdShuLHApfSxzPWZ1bmN0aW9uKHApe3JldHVybiB1KHQscCl9O3JldHVybiBSKHFlWzMxXSxzLGMsZSx4KSx1KGYoZSksWjkwKX1yZXR1cm4gZyhlLFE5MCl9KSxOKHVRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGNtLHQsbik7cmV0dXJuIG8oQzAoSjkwKSxpLGUpfSk7dmFyIHlEPVswLF9ELHRRLGNtLHVRXTtmdW5jdGlvbiBpUSh0LG4pe3UoZih0KSxHOTApLG8oZih0KSxCOTAsTTkwKTt2YXIgZT1uWzFdO28oZih0KSxxOTAsZSksdShmKHQpLFU5MCksdShmKHQpLEg5MCksbyhmKHQpLFk5MCxYOTApO3ZhciBpPW5bMl07cmV0dXJuIG8oZih0KSxWOTAsaSksdShmKHQpLHo5MCksdShmKHQpLEs5MCl9dmFyIGZRPVswLGlRLGZ1bmN0aW9uKHQpe3JldHVybiBvKEMwKFc5MCksaVEsdCl9XSxoRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seFE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sc209ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LG9RPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LHZtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxhUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxsbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sY1E9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihoRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksTDkwKSxvKHQsZSxpWzFdKSx1KGYoZSksUjkwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihsbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLGo5MCl9KSxOKHhRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGhELHQsbik7cmV0dXJuIG8oQzAoRDkwKSxpLGUpfSksTihzbSxmdW5jdGlvbih0LG4sZSxpKXtpZihpWzBdPT09MCl7dShmKGUpLEE5MCk7dmFyIHg9aVsxXSxjPWZ1bmN0aW9uKEUpe3JldHVybiB1KG4sRSl9LHM9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07cmV0dXJuIFIoTzFbMV0scyxjLGUseCksdShmKGUpLE45MCl9dShmKGUpLEM5MCk7dmFyIHA9aVsxXTtmdW5jdGlvbiB5KEUpe3JldHVybiB1KG4sRSl9ZnVuY3Rpb24gVChFKXtyZXR1cm4gdSh0LEUpfXJldHVybiBSKG1EWzFdLFQseSxlLHApLHUoZihlKSxQOTApfSksTihvUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhzbSx0LG4pO3JldHVybiBvKEMwKEk5MCksaSxlKX0pLE4odm0sZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSxFOTApLG8obixlLGlbMV0pLHUoZihlKSxTOTApO3ZhciB4PWlbMl0sYz1mdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfTtyZXR1cm4gdXIoVGxbMl0sYyxlLHgpLHUoZihlKSxnOTApfXUoZihlKSxGOTApLG8obixlLGlbMV0pLHUoZihlKSxUOTApO3ZhciBzPWlbMl07ZnVuY3Rpb24gcChUKXtyZXR1cm4gdShuLFQpfWZ1bmN0aW9uIHkoVCl7cmV0dXJuIHUodCxUKX1yZXR1cm4gUih5RFsxXSx5LHAsZSxzKSx1KGYoZSksTzkwKX0pLE4oYVEsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8odm0sdCxuKTtyZXR1cm4gbyhDMCh3OTApLGksZSl9KSxOKGxtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxjOTApLG8oZihlKSx2OTAsczkwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoVCl7cmV0dXJuIHUobixUKX1SKHNtLGZ1bmN0aW9uKFQpe3JldHVybiB1KHQsVCl9LGMsZSx4KSx1KGYoZSksbDkwKSx1KGYoZSksYjkwKSxvKGYoZSksbTkwLHA5MCk7dmFyIHM9aVsyXTtpZihzKXtnKGUsXzkwKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oVCl7cmV0dXJuIHUobixUKX07Uih2bSxmdW5jdGlvbihUKXtyZXR1cm4gdSh0LFQpfSx5LGUscCksZyhlLHk5MCl9ZWxzZSBnKGUsaDkwKTtyZXR1cm4gdShmKGUpLGQ5MCksdShmKGUpLGs5MCl9KSxOKGNRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGxtLHQsbik7cmV0dXJuIG8oQzAoYTkwKSxpLGUpfSk7dmFyIHNRPVswLGhELHhRLHNtLG9RLHZtLGFRLGxtLGNRXSxkRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sdlE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sYm09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGxRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oZEQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGY5MCksbyh0LGUsaVsxXSksdShmKGUpLHg5MCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoYm0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxvOTApfSksTih2USxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhkRCx0LG4pO3JldHVybiBvKEMwKGk5MCksaSxlKX0pLE4oYm0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHptMCksbyhmKGUpLFdtMCxLbTApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKHFlWzMxXSxzLGMsZSx4KSx1KGYoZSksSm0wKSx1KGYoZSksJG0wKSxvKGYoZSksUW0wLFptMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUscjkwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oZCx3KXtyZXR1cm4gZyhkLFZtMCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihEclsxXSxFLFQsZSx5KSxnKGUsZTkwKX1lbHNlIGcoZSxuOTApO3JldHVybiB1KGYoZSksdDkwKSx1KGYoZSksdTkwKX0pLE4obFEsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oYm0sdCxuKTtyZXR1cm4gbyhDMChZbTApLGksZSl9KTt2YXIgYlE9WzAsZEQsdlEsYm0sbFFdLHBtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxwUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxtbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sbVE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sX209ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LF9RPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04ocG0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFVtMCksbyh0LGUsaVsxXSksdShmKGUpLEhtMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoX20sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxYbTApfSksTihwUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhwbSx0LG4pO3JldHVybiBvKEMwKHFtMCksaSxlKX0pLE4obW0sZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSxqbTApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihUKXtyZXR1cm4gdShuLFQpfSxzPWZ1bmN0aW9uKFQpe3JldHVybiB1KHQsVCl9O3JldHVybiBSKE8xWzFdLHMsYyxlLHgpLHUoZihlKSxHbTApfXUoZihlKSxNbTApO3ZhciBwPWlbMV07ZnVuY3Rpb24geShUKXtyZXR1cm4gdShuLFQpfXJldHVybiBSKHBtLGZ1bmN0aW9uKFQpe3JldHVybiB1KHQsVCl9LHksZSxwKSx1KGYoZSksQm0wKX0pLE4obVEsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8obW0sdCxuKTtyZXR1cm4gbyhDMChSbTApLGksZSl9KSxOKF9tLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxUbTApLG8oZihlKSxJbTAsT20wKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoVCl7cmV0dXJuIHUobixUKX1SKG1tLGZ1bmN0aW9uKFQpe3JldHVybiB1KHQsVCl9LGMsZSx4KSx1KGYoZSksQW0wKSx1KGYoZSksTm0wKSxvKGYoZSksUG0wLENtMCk7dmFyIHM9aVsyXTtmdW5jdGlvbiBwKFQpe3JldHVybiB1KG4sVCl9ZnVuY3Rpb24geShUKXtyZXR1cm4gdSh0LFQpfXJldHVybiBSKE8xWzFdLHkscCxlLHMpLHUoZihlKSxEbTApLHUoZihlKSxMbTApfSksTihfUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhfbSx0LG4pO3JldHVybiBvKEMwKEZtMCksaSxlKX0pO3ZhciB5UT1bMCxwbSxwUSxtbSxtUSxfbSxfUV0sTmw9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGhRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oTmwsZnVuY3Rpb24odCxuLGUsaSl7c3dpdGNoKGlbMF0pe2Nhc2UgMDp1KGYoZSksZG0wKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24oRyl7cmV0dXJuIHUobixHKX0scz1mdW5jdGlvbihHKXtyZXR1cm4gdSh0LEcpfTtyZXR1cm4gUihPMVsxXSxzLGMsZSx4KSx1KGYoZSksa20wKTtjYXNlIDE6dShmKGUpLHdtMCk7dmFyIHA9aVsxXSx5PWZ1bmN0aW9uKEcpe3JldHVybiB1KG4sRyl9LFQ9ZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX07cmV0dXJuIFIobURbMV0sVCx5LGUscCksdShmKGUpLEVtMCk7ZGVmYXVsdDp1KGYoZSksU20wKTt2YXIgRT1pWzFdLGQ9ZnVuY3Rpb24oRyl7cmV0dXJuIHUobixHKX0sdz1mdW5jdGlvbihHKXtyZXR1cm4gdSh0LEcpfTtyZXR1cm4gUih5UVsxXSx3LGQsZSxFKSx1KGYoZSksZ20wKX19KSxOKGhRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKE5sLHQsbik7cmV0dXJuIG8oQzAoaG0wKSxpLGUpfSk7dmFyIGtEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxkUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx5bT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sa1E9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0saG09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHdRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oa0QsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLG1tMCksbyh0LGUsaVsxXSksdShmKGUpLF9tMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoaG0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSx5bTApfSksTihkUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhrRCx0LG4pO3JldHVybiBvKEMwKHBtMCksaSxlKX0pLE4oeW0sZnVuY3Rpb24odCxuLGUsaSl7aWYoaVswXT09PTApe3UoZihlKSxzbTApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihFKXtyZXR1cm4gdShuLEUpfSxzPWZ1bmN0aW9uKEUpe3JldHVybiB1KHQsRSl9O3JldHVybiBSKHNRWzFdLHMsYyxlLHgpLHUoZihlKSx2bTApfXUoZihlKSxsbTApO3ZhciBwPWlbMV07ZnVuY3Rpb24geShFKXtyZXR1cm4gdShuLEUpfWZ1bmN0aW9uIFQoRSl7cmV0dXJuIHUodCxFKX1yZXR1cm4gUihiUVsxXSxULHksZSxwKSx1KGYoZSksYm0wKX0pLE4oa1EsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oeW0sdCxuKTtyZXR1cm4gbyhDMChjbTApLGksZSl9KSxOKGhtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxLNTApLG8oZihlKSxKNTAsVzUwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoVCl7cmV0dXJuIHUobixUKX1SKE5sLGZ1bmN0aW9uKFQpe3JldHVybiB1KHQsVCl9LGMsZSx4KSx1KGYoZSksJDUwKSx1KGYoZSksWjUwKSxvKGYoZSkscm0wLFE1MCk7dmFyIHM9aVsyXTtvKGYoZSksZW0wLHMpLHUoZihlKSxubTApLHUoZihlKSx0bTApLG8oZihlKSxpbTAsdW0wKTt2YXIgcD1pWzNdO3UoZihlKSxmbTApO3ZhciB5PTA7cmV0dXJuIGxlKGZ1bmN0aW9uKFQsRSl7VCYmdShmKGUpLHo1MCk7ZnVuY3Rpb24gZCh3KXtyZXR1cm4gdShuLHcpfXJldHVybiBSKHltLGZ1bmN0aW9uKHcpe3JldHVybiB1KHQsdyl9LGQsZSxFKSwxfSx5LHApLHUoZihlKSx4bTApLHUoZihlKSxvbTApLHUoZihlKSxhbTApfSksTih3USxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhobSx0LG4pO3JldHVybiBvKEMwKFY1MCksaSxlKX0pO3ZhciBFUT1bMCxrRCxkUSx5bSxrUSxobSx3UV0sd0Q9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFNRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGRtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxnUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHdELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxINTApLG8odCxlLGlbMV0pLHUoZihlKSxYNTApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKGRtLGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksWTUwKX0pLE4oU1EsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8od0QsdCxuKTtyZXR1cm4gbyhDMChVNTApLGksZSl9KSxOKGRtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxqNTApLG8oZihlKSxNNTAsRzUwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihObCxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLEI1MCksdShmKGUpLHE1MCl9KSxOKGdRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKGRtLHQsbik7cmV0dXJuIG8oQzAoUjUwKSxpLGUpfSk7dmFyIEZRPVswLHdELFNRLGRtLGdRXSxFRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sVFE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihFRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksUzUwKSxvKGYoZSksRjUwLGc1MCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSxUNTApLHUoZihlKSxPNTApLG8oZihlKSxBNTAsSTUwKTt2YXIgcD1pWzJdO2lmKHApe2coZSxONTApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkLHcpe3JldHVybiBnKGQsRTUwKX0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKERyWzFdLEUsVCxlLHkpLGcoZSxDNTApfWVsc2UgZyhlLFA1MCk7cmV0dXJuIHUoZihlKSxENTApLHUoZihlKSxMNTApfSksTihUUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhFRCx0LG4pO3JldHVybiBvKEMwKHc1MCksaSxlKX0pO3ZhciBPUT1bMCxFRCxUUV0sQ2w9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LElRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGttPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxBUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx3bT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sTlE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sRW09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LENRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oQ2wsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGg1MCksbyh0LGUsaVsxXSksdShmKGUpLGQ1MCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoa20sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxrNTApfSksTihJUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhDbCx0LG4pO3JldHVybiBvKEMwKHk1MCksaSxlKX0pLE4oa20sZnVuY3Rpb24odCxuLGUsaSl7c3dpdGNoKGlbMF0pe2Nhc2UgMDp1KGYoZSksbzUwKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24oQSl7cmV0dXJuIHUobixBKX07cmV0dXJuIFIod20sZnVuY3Rpb24oQSl7cmV0dXJuIHUodCxBKX0sYyxlLHgpLHUoZihlKSxhNTApO2Nhc2UgMTp1KGYoZSksYzUwKTt2YXIgcz1pWzFdLHA9ZnVuY3Rpb24oQSl7cmV0dXJuIHUobixBKX07cmV0dXJuIFIoRW0sZnVuY3Rpb24oQSl7cmV0dXJuIHUodCxBKX0scCxlLHMpLHUoZihlKSxzNTApO2Nhc2UgMjp1KGYoZSksdjUwKTt2YXIgeT1pWzFdLFQ9ZnVuY3Rpb24oQSl7cmV0dXJuIHUobixBKX0sRT1mdW5jdGlvbihBKXtyZXR1cm4gdSh0LEEpfTtyZXR1cm4gUih5RFsxXSxFLFQsZSx5KSx1KGYoZSksbDUwKTtjYXNlIDM6dShmKGUpLGI1MCk7dmFyIGQ9aVsxXSx3PWZ1bmN0aW9uKEEpe3JldHVybiB1KG4sQSl9LEc9ZnVuY3Rpb24oQSl7cmV0dXJuIHUodCxBKX07cmV0dXJuIFIoT1FbMV0sRyx3LGUsZCksdShmKGUpLHA1MCk7ZGVmYXVsdDpyZXR1cm4gdShmKGUpLG01MCksbyhmUVsxXSxlLGlbMV0pLHUoZihlKSxfNTApfX0pLE4oQVEsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oa20sdCxuKTtyZXR1cm4gbyhDMCh4NTApLGksZSl9KSxOKHdtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxQcDApLG8oZihlKSxMcDAsRHAwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoVil7cmV0dXJuIHUobixWKX1mdW5jdGlvbiBzKFYpe3JldHVybiB1KHQsVil9UihFUVsxXSxzLGMsZSx4KSx1KGYoZSksUnAwKSx1KGYoZSksanAwKSxvKGYoZSksTXAwLEdwMCk7dmFyIHA9aVsyXTtpZihwKXtnKGUsQnAwKTt2YXIgeT1wWzFdLFQ9ZnVuY3Rpb24oVil7cmV0dXJuIHUobixWKX0sRT1mdW5jdGlvbihWKXtyZXR1cm4gdSh0LFYpfTtSKEZRWzFdLEUsVCxlLHkpLGcoZSxxcDApfWVsc2UgZyhlLFVwMCk7dShmKGUpLEhwMCksdShmKGUpLFhwMCksbyhmKGUpLFZwMCxZcDApO3ZhciBkPWlbM107dShmKGUpLHpwMCksbyh0LGUsZFsxXSksdShmKGUpLEtwMCksdShmKGUpLFdwMCk7dmFyIHc9ZFsyXSxHPTA7bGUoZnVuY3Rpb24oVixmMCl7ViYmdShmKGUpLENwMCk7ZnVuY3Rpb24gbTAoazApe3JldHVybiB1KG4sazApfXJldHVybiBSKENsLGZ1bmN0aW9uKGswKXtyZXR1cm4gdSh0LGswKX0sbTAsZSxmMCksMX0sRyx3KSx1KGYoZSksSnAwKSx1KGYoZSksJHAwKSx1KGYoZSksWnAwKSx1KGYoZSksUXAwKSxvKGYoZSksZTUwLHI1MCk7dmFyIEE9aVs0XTtpZihBKXtnKGUsbjUwKTt2YXIgUz1BWzFdLE09ZnVuY3Rpb24oVixmMCl7cmV0dXJuIGcoVixOcDApfSxLPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoRHJbMV0sSyxNLGUsUyksZyhlLHQ1MCl9ZWxzZSBnKGUsdTUwKTtyZXR1cm4gdShmKGUpLGk1MCksdShmKGUpLGY1MCl9KSxOKE5RLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHdtLHQsbik7cmV0dXJuIG8oQzAoQXAwKSxpLGUpfSksTihFbSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksaXAwKSxvKGYoZSkseHAwLGZwMCksbyh0LGUsaVsxXSksdShmKGUpLG9wMCksdShmKGUpLGFwMCksbyhmKGUpLHNwMCxjcDApLG8odCxlLGlbMl0pLHUoZihlKSx2cDApLHUoZihlKSxscDApLG8oZihlKSxwcDAsYnAwKTt2YXIgeD1pWzNdO3UoZihlKSxtcDApLG8odCxlLHhbMV0pLHUoZihlKSxfcDApLHUoZihlKSx5cDApO3ZhciBjPXhbMl0scz0wO2xlKGZ1bmN0aW9uKGQsdyl7ZCYmdShmKGUpLHVwMCk7ZnVuY3Rpb24gRyhBKXtyZXR1cm4gdShuLEEpfXJldHVybiBSKENsLGZ1bmN0aW9uKEEpe3JldHVybiB1KHQsQSl9LEcsZSx3KSwxfSxzLGMpLHUoZihlKSxocDApLHUoZihlKSxkcDApLHUoZihlKSxrcDApLHUoZihlKSx3cDApLG8oZihlKSxTcDAsRXAwKTt2YXIgcD1pWzRdO2lmKHApe2coZSxncDApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkLHcpe3JldHVybiBnKGQsdHAwKX0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKERyWzFdLEUsVCxlLHkpLGcoZSxGcDApfWVsc2UgZyhlLFRwMCk7cmV0dXJuIHUoZihlKSxPcDApLHUoZihlKSxJcDApfSksTihDUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhFbSx0LG4pO3JldHVybiBvKEMwKG5wMCksaSxlKX0pLG11KCQzcixVTixbMCxPMSxtRCx5RCxmUSxzUSxiUSx5USxObCxoUSxFUSxGUSxPUSxDbCxJUSxrbSxBUSx3bSxOUSxFbSxDUV0pO3ZhciBTRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sUFE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sU209ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LERRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oU0QsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFE2MCksbyh0LGUsaVsxXSksdShmKGUpLHJwMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoU20sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxlcDApfSksTihQUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhTRCx0LG4pO3JldHVybiBvKEMwKFo2MCksaSxlKX0pLE4oU20sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEI2MCksbyhmKGUpLFU2MCxxNjApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKGRpWzVdLHMsYyxlLHgpLHUoZihlKSxINjApLHUoZihlKSxYNjApLG8oZihlKSxWNjAsWTYwKTt2YXIgcD1pWzJdO2lmKHApe2coZSx6NjApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkLHcpe3JldHVybiBnKGQsTTYwKX0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKERyWzFdLEUsVCxlLHkpLGcoZSxLNjApfWVsc2UgZyhlLFc2MCk7cmV0dXJuIHUoZihlKSxKNjApLHUoZihlKSwkNjApfSksTihEUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhTbSx0LG4pO3JldHVybiBvKEMwKEc2MCksaSxlKX0pO3ZhciBnRD1bMCxTRCxQUSxTbSxEUV0sZ209ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LExRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LEZEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxSUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxGbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0salE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihnbSxmdW5jdGlvbih0LG4sZSxpKXtzd2l0Y2goaVswXSl7Y2FzZSAwOnZhciB4PWlbMV07dShmKGUpLEk2MCksdShmKGUpLEE2MCksbyh0LGUseFsxXSksdShmKGUpLE42MCk7dmFyIGM9eFsyXSxzPWZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9O3JldHVybiB1cihUbFsyXSxzLGUsYyksdShmKGUpLEM2MCksdShmKGUpLFA2MCk7Y2FzZSAxOnUoZihlKSxENjApO3ZhciBwPWlbMV0seT1mdW5jdGlvbihHKXtyZXR1cm4gdShuLEcpfSxUPWZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9O3JldHVybiBSKFJuWzFdLFQseSxlLHApLHUoZihlKSxMNjApO2RlZmF1bHQ6dShmKGUpLFI2MCk7dmFyIEU9aVsxXSxkPWZ1bmN0aW9uKEcpe3JldHVybiB1KG4sRyl9LHc9ZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX07cmV0dXJuIFIocXBbMV0sdyxkLGUsRSksdShmKGUpLGo2MCl9fSksTihMUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhnbSx0LG4pO3JldHVybiBvKEMwKE82MCksaSxlKX0pLE4oRkQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGc2MCksbyh0LGUsaVsxXSksdShmKGUpLEY2MCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoRm0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxUNjApfSksTihSUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhGRCx0LG4pO3JldHVybiBvKEMwKFM2MCksaSxlKX0pLE4oRm0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHQ2MCksbyhmKGUpLGk2MCx1NjApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhBKXtyZXR1cm4gdShuLEEpfVIoZ20sZnVuY3Rpb24oQSl7cmV0dXJuIHUodCxBKX0sYyxlLHgpLHUoZihlKSxmNjApLHUoZihlKSx4NjApLG8oZihlKSxhNjAsbzYwKTt2YXIgcz1pWzJdO2Z1bmN0aW9uIHAoQSl7cmV0dXJuIHUobixBKX1mdW5jdGlvbiB5KEEpe3JldHVybiB1KHQsQSl9UihkaVs1XSx5LHAsZSxzKSx1KGYoZSksYzYwKSx1KGYoZSksczYwKSxvKGYoZSksbDYwLHY2MCk7dmFyIFQ9aVszXTtpZihUKXtnKGUsYjYwKTt2YXIgRT1UWzFdLGQ9ZnVuY3Rpb24oQSl7cmV0dXJuIHUobixBKX0sdz1mdW5jdGlvbihBKXtyZXR1cm4gdSh0LEEpfTtSKHFlWzMxXSx3LGQsZSxFKSxnKGUscDYwKX1lbHNlIGcoZSxtNjApO3UoZihlKSxfNjApLHUoZihlKSx5NjApLG8oZihlKSxkNjAsaDYwKTt2YXIgRz1pWzRdO3JldHVybiBvKGYoZSksazYwLEcpLHUoZihlKSx3NjApLHUoZihlKSxFNjApfSksTihqUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhGbSx0LG4pO3JldHVybiBvKEMwKG42MCksaSxlKX0pO3ZhciBHUT1bMCxnbSxMUSxGRCxSUSxGbSxqUV0sVG09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LE1RPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFREPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxCUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKFRtLGZ1bmN0aW9uKHQsbixlLGkpe2lmKGlbMF09PT0wKXt1KGYoZSksWjMwKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24oRSl7cmV0dXJuIHUobixFKX0scz1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtyZXR1cm4gUihHUVszXSxzLGMsZSx4KSx1KGYoZSksUTMwKX11KGYoZSkscjYwKTt2YXIgcD1pWzFdO2Z1bmN0aW9uIHkoRSl7cmV0dXJuIHUobixFKX1mdW5jdGlvbiBUKEUpe3JldHVybiB1KHQsRSl9cmV0dXJuIFIoZ0RbMV0sVCx5LGUscCksdShmKGUpLGU2MCl9KSxOKE1RLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFRtLHQsbik7cmV0dXJuIG8oQzAoJDMwKSxpLGUpfSksTihURCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksUDMwKSxvKGYoZSksTDMwLEQzMCk7dmFyIHg9aVsxXTt1KGYoZSksUjMwKTt2YXIgYz0wO2xlKGZ1bmN0aW9uKEcsQSl7RyYmdShmKGUpLEMzMCk7ZnVuY3Rpb24gUyhNKXtyZXR1cm4gdShuLE0pfXJldHVybiBSKFRtLGZ1bmN0aW9uKE0pe3JldHVybiB1KHQsTSl9LFMsZSxBKSwxfSxjLHgpLHUoZihlKSxqMzApLHUoZihlKSxHMzApLHUoZihlKSxNMzApLG8oZihlKSxxMzAsQjMwKTt2YXIgcz1pWzJdO2Z1bmN0aW9uIHAoRyl7cmV0dXJuIHUobixHKX1mdW5jdGlvbiB5KEcpe3JldHVybiB1KHQsRyl9UigkZVsxOV0seSxwLGUscyksdShmKGUpLFUzMCksdShmKGUpLEgzMCksbyhmKGUpLFkzMCxYMzApO3ZhciBUPWlbM107aWYoVCl7ZyhlLFYzMCk7dmFyIEU9VFsxXSxkPWZ1bmN0aW9uKEcsQSl7dShmKEcpLEEzMCk7dmFyIFM9MDtyZXR1cm4gbGUoZnVuY3Rpb24oTSxLKXtNJiZ1KGYoRyksSTMwKTtmdW5jdGlvbiBWKGYwKXtyZXR1cm4gdSh0LGYwKX1yZXR1cm4gdXIoaXVbMV0sVixHLEspLDF9LFMsQSksdShmKEcpLE4zMCl9LHc9ZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX07UihEclsxXSx3LGQsZSxFKSxnKGUsejMwKX1lbHNlIGcoZSxLMzApO3JldHVybiB1KGYoZSksVzMwKSx1KGYoZSksSjMwKX0pLE4oQlEsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oVEQsdCxuKTtyZXR1cm4gbyhDMChPMzApLGksZSl9KTt2YXIgcVE9WzAsR1EsVG0sTVEsVEQsQlFdLE9EPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxVUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxPbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sSFE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihPRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksZzMwKSxvKHQsZSxpWzFdKSx1KGYoZSksRjMwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihPbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLFQzMCl9KSxOKFVRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKE9ELHQsbik7cmV0dXJuIG8oQzAoUzMwKSxpLGUpfSksTihPbSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksdjMwKSxvKGYoZSksYjMwLGwzMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIoZGlbNV0scyxjLGUseCksdShmKGUpLHAzMCksdShmKGUpLG0zMCksbyhmKGUpLHkzMCxfMzApO3ZhciBwPWlbMl07aWYocCl7ZyhlLGgzMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQpe3JldHVybiB1KG4sZCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihxZVszMV0sRSxULGUseSksZyhlLGQzMCl9ZWxzZSBnKGUsazMwKTtyZXR1cm4gdShmKGUpLHczMCksdShmKGUpLEUzMCl9KSxOKEhRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKE9tLHQsbik7cmV0dXJuIG8oQzAoczMwKSxpLGUpfSk7dmFyIFhRPVswLE9ELFVRLE9tLEhRXSxJbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sWVE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sSUQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFZRPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oSW0sZnVuY3Rpb24odCxuLGUsaSl7c3dpdGNoKGlbMF0pe2Nhc2UgMDp1KGYoZSksaTMwKTt2YXIgeD1pWzFdLGM9ZnVuY3Rpb24oRSl7cmV0dXJuIHUobixFKX0scz1mdW5jdGlvbihFKXtyZXR1cm4gdSh0LEUpfTtyZXR1cm4gUihYUVsxXSxzLGMsZSx4KSx1KGYoZSksZjMwKTtjYXNlIDE6dShmKGUpLHgzMCk7dmFyIHA9aVsxXSx5PWZ1bmN0aW9uKEUpe3JldHVybiB1KG4sRSl9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07cmV0dXJuIFIoZ0RbMV0sVCx5LGUscCksdShmKGUpLG8zMCk7ZGVmYXVsdDpyZXR1cm4gdShmKGUpLGEzMCksbyh0LGUsaVsxXSksdShmKGUpLGMzMCl9fSksTihZUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhJbSx0LG4pO3JldHVybiBvKEMwKHUzMCksaSxlKX0pLE4oSUQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEI4MCksbyhmKGUpLFU4MCxxODApO3ZhciB4PWlbMV07dShmKGUpLEg4MCk7dmFyIGM9MDtsZShmdW5jdGlvbihHLEEpe0cmJnUoZihlKSxNODApO2Z1bmN0aW9uIFMoTSl7cmV0dXJuIHUobixNKX1yZXR1cm4gUihJbSxmdW5jdGlvbihNKXtyZXR1cm4gdSh0LE0pfSxTLGUsQSksMX0sYyx4KSx1KGYoZSksWDgwKSx1KGYoZSksWTgwKSx1KGYoZSksVjgwKSxvKGYoZSksSzgwLHo4MCk7dmFyIHM9aVsyXTtmdW5jdGlvbiBwKEcpe3JldHVybiB1KG4sRyl9ZnVuY3Rpb24geShHKXtyZXR1cm4gdSh0LEcpfVIoJGVbMTldLHkscCxlLHMpLHUoZihlKSxXODApLHUoZihlKSxKODApLG8oZihlKSxaODAsJDgwKTt2YXIgVD1pWzNdO2lmKFQpe2coZSxRODApO3ZhciBFPVRbMV0sZD1mdW5jdGlvbihHLEEpe3UoZihHKSxqODApO3ZhciBTPTA7cmV0dXJuIGxlKGZ1bmN0aW9uKE0sSyl7TSYmdShmKEcpLFI4MCk7ZnVuY3Rpb24gVihmMCl7cmV0dXJuIHUodCxmMCl9cmV0dXJuIHVyKGl1WzFdLFYsRyxLKSwxfSxTLEEpLHUoZihHKSxHODApfSx3PWZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9O1IoRHJbMV0sdyxkLGUsRSksZyhlLHIzMCl9ZWxzZSBnKGUsZTMwKTtyZXR1cm4gdShmKGUpLG4zMCksdShmKGUpLHQzMCl9KSxOKFZRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKElELHQsbik7cmV0dXJuIG8oQzAoTDgwKSxpLGUpfSk7dmFyIHpRPVswLFhRLEltLFlRLElELFZRXSxBRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sS1E9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihBRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksazgwKSxvKGYoZSksRTgwLHc4MCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIoUm5bMV0scyxjLGUseCksdShmKGUpLFM4MCksdShmKGUpLGc4MCksbyhmKGUpLFQ4MCxGODApO3ZhciBwPWlbMl07ZnVuY3Rpb24geShkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIFQoZCl7cmV0dXJuIHUodCxkKX1SKCRlWzE5XSxULHksZSxwKSx1KGYoZSksTzgwKSx1KGYoZSksSTgwKSxvKGYoZSksTjgwLEE4MCk7dmFyIEU9aVszXTtyZXR1cm4gbyhmKGUpLEM4MCxFKSx1KGYoZSksUDgwKSx1KGYoZSksRDgwKX0pLE4oS1EsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oQUQsdCxuKTtyZXR1cm4gbyhDMChkODApLGksZSl9KTt2YXIgV1E9WzAsQUQsS1FdLE5EPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxKUT1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxBbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sJFE9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihORCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksXzgwKSxvKG4sZSxpWzFdKSx1KGYoZSkseTgwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihBbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLGg4MCl9KSxOKEpRLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKE5ELHQsbik7cmV0dXJuIG8oQzAobTgwKSxpLGUpfSksTihBbSxmdW5jdGlvbih0LG4sZSxpKXtzd2l0Y2goaVswXSl7Y2FzZSAwOnUoZihlKSxvODApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihNKXtyZXR1cm4gdShuLE0pfSxzPWZ1bmN0aW9uKE0pe3JldHVybiB1KHQsTSl9O3JldHVybiBSKHFRWzRdLHMsYyxlLHgpLHUoZihlKSxhODApO2Nhc2UgMTp1KGYoZSksYzgwKTt2YXIgcD1pWzFdLHk9ZnVuY3Rpb24oTSl7cmV0dXJuIHUobixNKX0sVD1mdW5jdGlvbihNKXtyZXR1cm4gdSh0LE0pfTtyZXR1cm4gUih6UVs0XSxULHksZSxwKSx1KGYoZSksczgwKTtjYXNlIDI6dShmKGUpLHY4MCk7dmFyIEU9aVsxXSxkPWZ1bmN0aW9uKE0pe3JldHVybiB1KG4sTSl9LHc9ZnVuY3Rpb24oTSl7cmV0dXJuIHUodCxNKX07cmV0dXJuIFIoV1FbMV0sdyxkLGUsRSksdShmKGUpLGw4MCk7ZGVmYXVsdDp1KGYoZSksYjgwKTt2YXIgRz1pWzFdLEE9ZnVuY3Rpb24oTSl7cmV0dXJuIHUobixNKX0sUz1mdW5jdGlvbihNKXtyZXR1cm4gdSh0LE0pfTtyZXR1cm4gUihxZVszMV0sUyxBLGUsRyksdShmKGUpLHA4MCl9fSksTigkUSxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhBbSx0LG4pO3JldHVybiBvKEMwKHg4MCksaSxlKX0pLG11KFozcixkaSxbMCxnRCxxUSx6USxXUSxORCxKUSxBbSwkUV0pO3ZhciBDRD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxaUT1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LE5tPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sUVE9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LENtPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0scjAwPWZ1bmN0aW9uIHQobil7cmV0dXJuIHQuZnVuKG4pfTtOKENELGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdShmKG4pLHU4MCksbyh0LG4sZVsxXSksdShmKG4pLGk4MCksbyhDbSxuLGVbMl0pLHUoZihuKSxmODApfSksTihaUSxmdW5jdGlvbih0LG4pe3ZhciBlPXUoQ0QsdCk7cmV0dXJuIG8oQzAodDgwKSxlLG4pfSksTihObSxmdW5jdGlvbih0LG4pe3JldHVybiBuP2codCxlODApOmcodCxuODApfSksTihRUSxmdW5jdGlvbih0KXtyZXR1cm4gbyhDMChyODApLE5tLHQpfSksTihDbSxmdW5jdGlvbih0LG4pe3UoZih0KSxNNDApLG8oZih0KSxxNDAsQjQwKSxvKE5tLHQsblsxXSksdShmKHQpLFU0MCksdShmKHQpLEg0MCksbyhmKHQpLFk0MCxYNDApO3ZhciBlPW5bMl07byhmKHQpLFY0MCxlKSx1KGYodCksejQwKSx1KGYodCksSzQwKSxvKGYodCksSjQwLFc0MCk7dmFyIGk9blszXTtyZXR1cm4gbyhmKHQpLCQ0MCxpKSx1KGYodCksWjQwKSx1KGYodCksUTQwKX0pLE4ocjAwLGZ1bmN0aW9uKHQpe3JldHVybiBvKEMwKEc0MCksQ20sdCl9KSxtdShRM3IsaXUsWzAsQ0QsWlEsTm0sUVEsQ20scjAwXSk7dmFyIFBEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxlMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sUG09ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxuMDA9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LERtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx0MDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihQRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksTDQwKSxvKG4sZSxpWzFdKSx1KGYoZSksUjQwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihEbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLGo0MCl9KSxOKGUwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhQRCx0LG4pO3JldHVybiBvKEMwKEQ0MCksaSxlKX0pLE4oUG0sZnVuY3Rpb24odCxuKXtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBnKHQsQTQwKTtjYXNlIDE6cmV0dXJuIGcodCxONDApO2Nhc2UgMjpyZXR1cm4gZyh0LEM0MCk7ZGVmYXVsdDpyZXR1cm4gZyh0LFA0MCl9fSksTihuMDAsZnVuY3Rpb24odCl7cmV0dXJuIG8oQzAoSTQwKSxQbSx0KX0pLE4oRG0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFdiMCksbyhmKGUpLCRiMCxKYjApLG8oUG0sZSxpWzFdKSx1KGYoZSksWmIwKSx1KGYoZSksUWIwKSxvKGYoZSksZTQwLHI0MCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKFYpe3JldHVybiB1KG4sVil9ZnVuY3Rpb24gcyhWKXtyZXR1cm4gdSh0LFYpfVIocWVbN11bMV1bMV0scyxjLGUseCksdShmKGUpLG40MCksdShmKGUpLHQ0MCksbyhmKGUpLGk0MCx1NDApO3ZhciBwPWlbM107dShmKGUpLGY0MCksbyh0LGUscFsxXSksdShmKGUpLHg0MCk7dmFyIHk9cFsyXTtmdW5jdGlvbiBUKFYpe3JldHVybiB1KG4sVil9ZnVuY3Rpb24gRShWKXtyZXR1cm4gdSh0LFYpfVIoQXNbNV0sRSxULGUseSksdShmKGUpLG80MCksdShmKGUpLGE0MCksdShmKGUpLGM0MCksbyhmKGUpLHY0MCxzNDApO3ZhciBkPWlbNF07byhmKGUpLGw0MCxkKSx1KGYoZSksYjQwKSx1KGYoZSkscDQwKSxvKGYoZSksXzQwLG00MCk7dmFyIHc9aVs1XTt1KGYoZSkseTQwKTt2YXIgRz0wO2xlKGZ1bmN0aW9uKFYsZjApe1YmJnUoZihlKSxLYjApO2Z1bmN0aW9uIG0wKGcwKXtyZXR1cm4gdShuLGcwKX1mdW5jdGlvbiBrMChnMCl7cmV0dXJuIHUodCxnMCl9cmV0dXJuIFIoRjFbN11bMV0sazAsbTAsZSxmMCksMX0sRyx3KSx1KGYoZSksaDQwKSx1KGYoZSksZDQwKSx1KGYoZSksazQwKSxvKGYoZSksRTQwLHc0MCk7dmFyIEE9aVs2XTtpZihBKXtnKGUsUzQwKTt2YXIgUz1BWzFdLE09ZnVuY3Rpb24oVixmMCl7cmV0dXJuIGcoVix6YjApfSxLPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoRHJbMV0sSyxNLGUsUyksZyhlLGc0MCl9ZWxzZSBnKGUsRjQwKTtyZXR1cm4gdShmKGUpLFQ0MCksdShmKGUpLE80MCl9KSxOKHQwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhEbSx0LG4pO3JldHVybiBvKEMwKFZiMCksaSxlKX0pO3ZhciB1MDA9WzAsUEQsZTAwLFBtLG4wMCxEbSx0MDBdLEREPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxpMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sTG09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGYwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxSbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0seDAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oREQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEhiMCksbyhuLGUsaVsxXSksdShmKGUpLFhiMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoTG0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxZYjApfSksTihpMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oREQsdCxuKTtyZXR1cm4gbyhDMChVYjApLGksZSl9KSxOKExtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxjYjApLG8oZihlKSx2YjAsc2IwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMobTApe3JldHVybiB1KG4sbTApfWZ1bmN0aW9uIHMobTApe3JldHVybiB1KHQsbTApfVIocWVbN11bMV1bMV0scyxjLGUseCksdShmKGUpLGxiMCksdShmKGUpLGJiMCksbyhmKGUpLG1iMCxwYjApO3ZhciBwPWlbMl07ZnVuY3Rpb24geShtMCl7cmV0dXJuIHUobixtMCl9UihSbSxmdW5jdGlvbihtMCl7cmV0dXJuIHUodCxtMCl9LHksZSxwKSx1KGYoZSksX2IwKSx1KGYoZSkseWIwKSxvKGYoZSksZGIwLGhiMCk7dmFyIFQ9aVszXTtmdW5jdGlvbiBFKG0wKXtyZXR1cm4gdShuLG0wKX1mdW5jdGlvbiBkKG0wKXtyZXR1cm4gdSh0LG0wKX1SKCRlWzE5XSxkLEUsZSxUKSx1KGYoZSksa2IwKSx1KGYoZSksd2IwKSxvKGYoZSksU2IwLEViMCk7dmFyIHc9aVs0XTtvKGYoZSksZ2IwLHcpLHUoZihlKSxGYjApLHUoZihlKSxUYjApLG8oZihlKSxJYjAsT2IwKTt2YXIgRz1pWzVdO2lmKEcpe2coZSxBYjApO3ZhciBBPUdbMV0sUz1mdW5jdGlvbihtMCl7cmV0dXJuIHUodCxtMCl9O3VyKHp2WzFdLFMsZSxBKSxnKGUsTmIwKX1lbHNlIGcoZSxDYjApO3UoZihlKSxQYjApLHUoZihlKSxEYjApLG8oZihlKSxSYjAsTGIwKTt2YXIgTT1pWzZdO2lmKE0pe2coZSxqYjApO3ZhciBLPU1bMV0sVj1mdW5jdGlvbihtMCxrMCl7cmV0dXJuIGcobTAsYWIwKX0sZjA9ZnVuY3Rpb24obTApe3JldHVybiB1KHQsbTApfTtSKERyWzFdLGYwLFYsZSxLKSxnKGUsR2IwKX1lbHNlIGcoZSxNYjApO3JldHVybiB1KGYoZSksQmIwKSx1KGYoZSkscWIwKX0pLE4oZjAwLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKExtLHQsbik7cmV0dXJuIG8oQzAob2IwKSxpLGUpfSksTihSbSxmdW5jdGlvbih0LG4sZSxpKXtpZih0eXBlb2YgaT09XCJudW1iZXJcIilyZXR1cm4gaT9nKGUsdWIwKTpnKGUsaWIwKTt1KGYoZSksZmIwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMocCl7cmV0dXJuIHUobixwKX1mdW5jdGlvbiBzKHApe3JldHVybiB1KHQscCl9cmV0dXJuIFIocWVbMzFdLHMsYyxlLHgpLHUoZihlKSx4YjApfSksTih4MDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oUm0sdCxuKTtyZXR1cm4gbyhDMCh0YjApLGksZSl9KTt2YXIgbzAwPVswLERELGkwMCxMbSxmMDAsUm0seDAwXSxMRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sYTAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LGptPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxjMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihMRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSkscmIwKSxvKG4sZSxpWzFdKSx1KGYoZSksZWIwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihqbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLG5iMCl9KSxOKGEwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhMRCx0LG4pO3JldHVybiBvKEMwKFFsMCksaSxlKX0pLE4oam0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGtsMCksbyhmKGUpLEVsMCx3bDApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhtMCl7cmV0dXJuIHUodCxtMCl9dXIoQnBbMV0sYyxlLHgpLHUoZihlKSxTbDApLHUoZihlKSxnbDApLG8oZihlKSxUbDAsRmwwKTt2YXIgcz1pWzJdO2Z1bmN0aW9uIHAobTApe3JldHVybiB1KG4sbTApfWZ1bmN0aW9uIHkobTApe3JldHVybiB1KHQsbTApfVIoRjFbMl1bNV0seSxwLGUscyksdShmKGUpLE9sMCksdShmKGUpLElsMCksbyhmKGUpLE5sMCxBbDApO3ZhciBUPWlbM107ZnVuY3Rpb24gRShtMCl7cmV0dXJuIHUobixtMCl9ZnVuY3Rpb24gZChtMCl7cmV0dXJuIHUodCxtMCl9UigkZVsxOV0sZCxFLGUsVCksdShmKGUpLENsMCksdShmKGUpLFBsMCksbyhmKGUpLExsMCxEbDApO3ZhciB3PWlbNF07byhmKGUpLFJsMCx3KSx1KGYoZSksamwwKSx1KGYoZSksR2wwKSxvKGYoZSksQmwwLE1sMCk7dmFyIEc9aVs1XTtpZihHKXtnKGUscWwwKTt2YXIgQT1HWzFdLFM9ZnVuY3Rpb24obTApe3JldHVybiB1KHQsbTApfTt1cih6dlsxXSxTLGUsQSksZyhlLFVsMCl9ZWxzZSBnKGUsSGwwKTt1KGYoZSksWGwwKSx1KGYoZSksWWwwKSxvKGYoZSksemwwLFZsMCk7dmFyIE09aVs2XTtpZihNKXtnKGUsS2wwKTt2YXIgSz1NWzFdLFY9ZnVuY3Rpb24obTAsazApe3JldHVybiBnKG0wLGRsMCl9LGYwPWZ1bmN0aW9uKG0wKXtyZXR1cm4gdSh0LG0wKX07UihEclsxXSxmMCxWLGUsSyksZyhlLFdsMCl9ZWxzZSBnKGUsSmwwKTtyZXR1cm4gdShmKGUpLCRsMCksdShmKGUpLFpsMCl9KSxOKGMwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhqbSx0LG4pO3JldHVybiBvKEMwKGhsMCksaSxlKX0pO3ZhciBzMDA9WzAsTEQsYTAwLGptLGMwMF0sUkQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LHYwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxHbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sbDAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oUkQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLG1sMCksbyh0LGUsaVsxXSksdShmKGUpLF9sMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoR20sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSx5bDApfSksTih2MDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oUkQsdCxuKTtyZXR1cm4gbyhDMChwbDApLGksZSl9KSxOKEdtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxKMjApLG8oZihlKSxaMjAsJDIwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoUyl7cmV0dXJuIHUobixTKX1mdW5jdGlvbiBzKFMpe3JldHVybiB1KHQsUyl9UihxZVszMV0scyxjLGUseCksdShmKGUpLFEyMCksdShmKGUpLHJsMCksbyhmKGUpLG5sMCxlbDApO3ZhciBwPWlbMl07aWYocCl7ZyhlLHRsMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKFMpe3JldHVybiB1KG4sUyl9LEU9ZnVuY3Rpb24oUyl7cmV0dXJuIHUodCxTKX07UigkZVsyM11bMV0sRSxULGUseSksZyhlLHVsMCl9ZWxzZSBnKGUsaWwwKTt1KGYoZSksZmwwKSx1KGYoZSkseGwwKSxvKGYoZSksYWwwLG9sMCk7dmFyIGQ9aVszXTtpZihkKXtnKGUsY2wwKTt2YXIgdz1kWzFdLEc9ZnVuY3Rpb24oUyxNKXtyZXR1cm4gZyhTLFcyMCl9LEE9ZnVuY3Rpb24oUyl7cmV0dXJuIHUodCxTKX07UihEclsxXSxBLEcsZSx3KSxnKGUsc2wwKX1lbHNlIGcoZSx2bDApO3JldHVybiB1KGYoZSksbGwwKSx1KGYoZSksYmwwKX0pLE4obDAwLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEdtLHQsbik7cmV0dXJuIG8oQzAoSzIwKSxpLGUpfSk7dmFyIGIwMD1bMCxSRCx2MDAsR20sbDAwXSxqRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0scDAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LE1tPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxtMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihqRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksWTIwKSxvKHQsZSxpWzFdKSx1KGYoZSksVjIwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihNbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLHoyMCl9KSxOKHAwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhqRCx0LG4pO3JldHVybiBvKEMwKFgyMCksaSxlKX0pLE4oTW0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEMyMCksbyhmKGUpLEQyMCxQMjApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKFJuWzFdLHMsYyxlLHgpLHUoZihlKSxMMjApLHUoZihlKSxSMjApLG8oZihlKSxHMjAsajIwKTt2YXIgcD1pWzJdO2lmKHApe2coZSxNMjApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkKXtyZXR1cm4gdShuLGQpfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoJGVbMjNdWzFdLEUsVCxlLHkpLGcoZSxCMjApfWVsc2UgZyhlLHEyMCk7cmV0dXJuIHUoZihlKSxVMjApLHUoZihlKSxIMjApfSksTihtMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oTW0sdCxuKTtyZXR1cm4gbyhDMChOMjApLGksZSl9KTt2YXIgXzAwPVswLGpELHAwMCxNbSxtMDBdLEdEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSx5MDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sQm09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGgwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKEdELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxPMjApLG8odCxlLGlbMV0pLHUoZihlKSxJMjApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKEJtLGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksQTIwKX0pLE4oeTAwLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEdELHQsbik7cmV0dXJuIG8oQzAoVDIwKSxpLGUpfSksTihCbSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksbDIwKSxvKGYoZSkscDIwLGIyMCk7dmFyIHg9aVsxXTt1KGYoZSksbTIwKTt2YXIgYz0wO2xlKGZ1bmN0aW9uKEUsZCl7RSYmdShmKGUpLHYyMCk7ZnVuY3Rpb24gdyhBKXtyZXR1cm4gdShuLEEpfWZ1bmN0aW9uIEcoQSl7cmV0dXJuIHUodCxBKX1yZXR1cm4gUihfMDBbMV0sRyx3LGUsZCksMX0sYyx4KSx1KGYoZSksXzIwKSx1KGYoZSkseTIwKSx1KGYoZSksaDIwKSxvKGYoZSksazIwLGQyMCk7dmFyIHM9aVsyXTtpZihzKXtnKGUsdzIwKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oRSxkKXtyZXR1cm4gZyhFLHMyMCl9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07UihEclsxXSxULHksZSxwKSxnKGUsRTIwKX1lbHNlIGcoZSxTMjApO3JldHVybiB1KGYoZSksZzIwKSx1KGYoZSksRjIwKX0pLE4oaDAwLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEJtLHQsbik7cmV0dXJuIG8oQzAoYzIwKSxpLGUpfSk7dmFyIGQwMD1bMCxfMDAsR0QseTAwLEJtLGgwMF0sTUQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGswMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxxbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sdzAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFVtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxFMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihNRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSkseDIwKSxvKHQsZSxpWzFdKSx1KGYoZSksbzIwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihxbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLGEyMCl9KSxOKGswMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhNRCx0LG4pO3JldHVybiBvKEMwKGYyMCksaSxlKX0pLE4ocW0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFZ2MCksbyhmKGUpLEt2MCx6djApO3ZhciB4PWlbMV07dShmKGUpLFd2MCk7dmFyIGM9MDtsZShmdW5jdGlvbihFLGQpe0UmJnUoZihlKSxZdjApO2Z1bmN0aW9uIHcoRyl7cmV0dXJuIHUobixHKX1yZXR1cm4gUihVbSxmdW5jdGlvbihHKXtyZXR1cm4gdSh0LEcpfSx3LGUsZCksMX0sYyx4KSx1KGYoZSksSnYwKSx1KGYoZSksJHYwKSx1KGYoZSksWnYwKSxvKGYoZSkscjIwLFF2MCk7dmFyIHM9aVsyXTtpZihzKXtnKGUsZTIwKTt2YXIgcD1zWzFdLHk9ZnVuY3Rpb24oRSxkKXtyZXR1cm4gZyhFLFh2MCl9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHUodCxFKX07UihEclsxXSxULHksZSxwKSxnKGUsbjIwKX1lbHNlIGcoZSx0MjApO3JldHVybiB1KGYoZSksdTIwKSx1KGYoZSksaTIwKX0pLE4odzAwLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKHFtLHQsbik7cmV0dXJuIG8oQzAoSHYwKSxpLGUpfSksTihVbSxmdW5jdGlvbih0LG4sZSxpKXtzd2l0Y2goaVswXSl7Y2FzZSAwOnUoZihlKSxqdjApO3ZhciB4PWlbMV0sYz1mdW5jdGlvbihHKXtyZXR1cm4gdShuLEcpfSxzPWZ1bmN0aW9uKEcpe3JldHVybiB1KHQsRyl9O3JldHVybiBSKHUwMFsxXSxzLGMsZSx4KSx1KGYoZSksR3YwKTtjYXNlIDE6dShmKGUpLE12MCk7dmFyIHA9aVsxXSx5PWZ1bmN0aW9uKEcpe3JldHVybiB1KG4sRyl9LFQ9ZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX07cmV0dXJuIFIobzAwWzFdLFQseSxlLHApLHUoZihlKSxCdjApO2RlZmF1bHQ6dShmKGUpLHF2MCk7dmFyIEU9aVsxXSxkPWZ1bmN0aW9uKEcpe3JldHVybiB1KG4sRyl9LHc9ZnVuY3Rpb24oRyl7cmV0dXJuIHUodCxHKX07cmV0dXJuIFIoczAwWzFdLHcsZCxlLEUpLHUoZihlKSxVdjApfX0pLE4oRTAwLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKFVtLHQsbik7cmV0dXJuIG8oQzAoUnYwKSxpLGUpfSk7dmFyIEJEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxTMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sSG09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGcwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxnZWU9WzAsTUQsazAwLHFtLHcwMCxVbSxFMDBdO04oQkQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLFB2MCksbyh0LGUsaVsxXSksdShmKGUpLER2MCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoSG0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxMdjApfSksTihTMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oQkQsdCxuKTtyZXR1cm4gbyhDMChDdjApLGksZSl9KSxOKEhtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxkdjApLG8oZihlKSx3djAsa3YwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBzKGQpe3JldHVybiB1KHQsZCl9UihxZVszMV0scyxjLGUseCksdShmKGUpLEV2MCksdShmKGUpLFN2MCksbyhmKGUpLEZ2MCxndjApO3ZhciBwPWlbMl07aWYocCl7ZyhlLFR2MCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCxodjApfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLE92MCl9ZWxzZSBnKGUsSXYwKTtyZXR1cm4gdShmKGUpLEF2MCksdShmKGUpLE52MCl9KSxOKGcwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhIbSx0LG4pO3JldHVybiBvKEMwKHl2MCksaSxlKX0pO3ZhciBGMDA9WzAsQkQsUzAwLEhtLGcwMF0scUQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LFQwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKHFELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxGMTApLG8oZihlKSxPMTAsVDEwKTt2YXIgeD1pWzFdO2lmKHgpe2coZSxJMTApO3ZhciBjPXhbMV0scz1mdW5jdGlvbih3MCl7cmV0dXJuIHUobix3MCl9LHA9ZnVuY3Rpb24odzApe3JldHVybiB1KHQsdzApfTtSKFJuWzFdLHAscyxlLGMpLGcoZSxBMTApfWVsc2UgZyhlLE4xMCk7dShmKGUpLEMxMCksdShmKGUpLFAxMCksbyhmKGUpLEwxMCxEMTApO3ZhciB5PWlbMl07ZnVuY3Rpb24gVCh3MCl7cmV0dXJuIHUobix3MCl9ZnVuY3Rpb24gRSh3MCl7cmV0dXJuIHUodCx3MCl9UihGMVs2XVsxXSxFLFQsZSx5KSx1KGYoZSksUjEwKSx1KGYoZSksajEwKSxvKGYoZSksTTEwLEcxMCk7dmFyIGQ9aVszXTtpZihkKXtnKGUsQjEwKTt2YXIgdz1kWzFdLEc9ZnVuY3Rpb24odzApe3JldHVybiB1KG4sdzApfSxBPWZ1bmN0aW9uKHcwKXtyZXR1cm4gdSh0LHcwKX07UigkZVsyMl1bMV0sQSxHLGUsdyksZyhlLHExMCl9ZWxzZSBnKGUsVTEwKTt1KGYoZSksSDEwKSx1KGYoZSksWDEwKSxvKGYoZSksVjEwLFkxMCk7dmFyIFM9aVs0XTtpZihTKXtnKGUsejEwKTt2YXIgTT1TWzFdLEs9ZnVuY3Rpb24odzApe3JldHVybiB1KG4sdzApfSxWPWZ1bmN0aW9uKHcwKXtyZXR1cm4gdSh0LHcwKX07UihiMDBbMV0sVixLLGUsTSksZyhlLEsxMCl9ZWxzZSBnKGUsVzEwKTt1KGYoZSksSjEwKSx1KGYoZSksJDEwKSxvKGYoZSksUTEwLFoxMCk7dmFyIGYwPWlbNV07aWYoZjApe2coZSxydjApO3ZhciBtMD1mMFsxXSxrMD1mdW5jdGlvbih3MCl7cmV0dXJuIHUobix3MCl9LGcwPWZ1bmN0aW9uKHcwKXtyZXR1cm4gdSh0LHcwKX07UihkMDBbMl0sZzAsazAsZSxtMCksZyhlLGV2MCl9ZWxzZSBnKGUsbnYwKTt1KGYoZSksdHYwKSx1KGYoZSksdXYwKSxvKGYoZSksZnYwLGl2MCk7dmFyIGUwPWlbNl07dShmKGUpLHh2MCk7dmFyIHgwPTA7bGUoZnVuY3Rpb24odzAsXzApe3cwJiZ1KGYoZSksZzEwKTtmdW5jdGlvbiBFMChiKXtyZXR1cm4gdShuLGIpfWZ1bmN0aW9uIFUwKGIpe3JldHVybiB1KHQsYil9cmV0dXJuIFIoRjAwWzFdLFUwLEUwLGUsXzApLDF9LHgwLGUwKSx1KGYoZSksb3YwKSx1KGYoZSksYXYwKSx1KGYoZSksY3YwKSxvKGYoZSksdnYwLHN2MCk7dmFyIGw9aVs3XTtpZihsKXtnKGUsbHYwKTt2YXIgYzA9bFsxXSx0MD1mdW5jdGlvbih3MCxfMCl7cmV0dXJuIGcodzAsUzEwKX0sbzA9ZnVuY3Rpb24odzApe3JldHVybiB1KHQsdzApfTtSKERyWzFdLG8wLHQwLGUsYzApLGcoZSxidjApfWVsc2UgZyhlLHB2MCk7cmV0dXJuIHUoZihlKSxtdjApLHUoZihlKSxfdjApfSksTihUMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8ocUQsdCxuKTtyZXR1cm4gbyhDMChFMTApLGksZSl9KSxtdShyNnIsRjEsWzAsdTAwLG8wMCxzMDAsYjAwLGQwMCxnZWUsRjAwLHFELFQwMF0pO3ZhciBVRD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sTzAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFhtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxJMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07TihVRCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksZDEwKSxvKHQsZSxpWzFdKSx1KGYoZSksazEwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihYbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLHcxMCl9KSxOKE8wMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhVRCx0LG4pO3JldHVybiBvKEMwKGgxMCksaSxlKX0pLE4oWG0sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLHgxMCksbyhmKGUpLGExMCxvMTApO3ZhciB4PWlbMV07ZnVuY3Rpb24gYyhkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIHUodCxkKX1SKGRpWzVdLHMsYyxlLHgpLHUoZihlKSxjMTApLHUoZihlKSxzMTApLG8oZihlKSxsMTAsdjEwKTt2YXIgcD1pWzJdO2lmKHApe2coZSxiMTApO3ZhciB5PXBbMV0sVD1mdW5jdGlvbihkLHcpe3JldHVybiBnKGQsZjEwKX0sRT1mdW5jdGlvbihkKXtyZXR1cm4gdSh0LGQpfTtSKERyWzFdLEUsVCxlLHkpLGcoZSxwMTApfWVsc2UgZyhlLG0xMCk7cmV0dXJuIHUoZihlKSxfMTApLHUoZihlKSx5MTApfSksTihJMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWG0sdCxuKTtyZXR1cm4gbyhDMChpMTApLGksZSl9KTt2YXIgQTAwPVswLFVELE8wMCxYbSxJMDBdLEhEPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxOMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sWW09ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEMwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfTtOKEhELGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxuMTApLG8odCxlLGlbMV0pLHUoZihlKSx0MTApO3ZhciB4PWlbMl07ZnVuY3Rpb24gYyhzKXtyZXR1cm4gdShuLHMpfXJldHVybiBSKFltLGZ1bmN0aW9uKHMpe3JldHVybiB1KHQscyl9LGMsZSx4KSx1KGYoZSksdTEwKX0pLE4oTjAwLGZ1bmN0aW9uKHQsbixlKXt2YXIgaT1vKEhELHQsbik7cmV0dXJuIG8oQzAoZTEwKSxpLGUpfSksTihZbSxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksSHMwKSxvKGYoZSksWXMwLFhzMCk7dmFyIHg9aVsxXTtmdW5jdGlvbiBjKGQpe3JldHVybiB1KG4sZCl9ZnVuY3Rpb24gcyhkKXtyZXR1cm4gdSh0LGQpfVIoZGlbNV0scyxjLGUseCksdShmKGUpLFZzMCksdShmKGUpLHpzMCksbyhmKGUpLFdzMCxLczApO3ZhciBwPWlbMl07aWYocCl7ZyhlLEpzMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQpe3JldHVybiB1KG4sZCl9LEU9ZnVuY3Rpb24oZCl7cmV0dXJuIHUodCxkKX07UihxZVszMV0sRSxULGUseSksZyhlLCRzMCl9ZWxzZSBnKGUsWnMwKTtyZXR1cm4gdShmKGUpLFFzMCksdShmKGUpLHIxMCl9KSxOKEMwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhZbSx0LG4pO3JldHVybiBvKEMwKFVzMCksaSxlKX0pO3ZhciBQMDA9WzAsSEQsTjAwLFltLEMwMF0sWEQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEQwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxWbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sTDAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oWEQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLE1zMCksbyh0LGUsaVsxXSksdShmKGUpLEJzMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoVm0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxxczApfSksTihEMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWEQsdCxuKTtyZXR1cm4gbyhDMChHczApLGksZSl9KSxOKFZtLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxGczApLG8oZihlKSxPczAsVHMwKTt2YXIgeD1pWzFdO2Z1bmN0aW9uIGMoZCl7cmV0dXJuIHUobixkKX1mdW5jdGlvbiBzKGQpe3JldHVybiB1KHQsZCl9UigkZVsxN10scyxjLGUseCksdShmKGUpLElzMCksdShmKGUpLEFzMCksbyhmKGUpLENzMCxOczApO3ZhciBwPWlbMl07aWYocCl7ZyhlLFBzMCk7dmFyIHk9cFsxXSxUPWZ1bmN0aW9uKGQsdyl7cmV0dXJuIGcoZCxnczApfSxFPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O1IoRHJbMV0sRSxULGUseSksZyhlLERzMCl9ZWxzZSBnKGUsTHMwKTtyZXR1cm4gdShmKGUpLFJzMCksdShmKGUpLGpzMCl9KSxOKEwwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhWbSx0LG4pO3JldHVybiBvKEMwKFNzMCksaSxlKX0pO3ZhciBSMDA9WzAsWEQsRDAwLFZtLEwwMF0sWUQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LGowMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSx6bT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sRzAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oWUQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGtzMCksbyh0LGUsaVsxXSksdShmKGUpLHdzMCk7dmFyIHg9aVsyXTtmdW5jdGlvbiBjKHMpe3JldHVybiB1KG4scyl9cmV0dXJuIFIoem0sZnVuY3Rpb24ocyl7cmV0dXJuIHUodCxzKX0sYyxlLHgpLHUoZihlKSxFczApfSksTihqMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oWUQsdCxuKTtyZXR1cm4gbyhDMChkczApLGksZSl9KSxOKHptLGZ1bmN0aW9uKHQsbixlLGkpe3UoZihlKSxWYzApLG8oZihlKSxLYzAsemMwKTt2YXIgeD1pWzFdO2lmKHgpe2coZSxXYzApO3ZhciBjPXhbMV0scz1mdW5jdGlvbihWKXtyZXR1cm4gdShuLFYpfSxwPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoUjAwWzFdLHAscyxlLGMpLGcoZSxKYzApfWVsc2UgZyhlLCRjMCk7dShmKGUpLFpjMCksdShmKGUpLFFjMCksbyhmKGUpLGVzMCxyczApO3ZhciB5PWlbMl07dShmKGUpLG5zMCk7dmFyIFQ9MDtsZShmdW5jdGlvbihWLGYwKXtWJiZ1KGYoZSksWWMwKTtmdW5jdGlvbiBtMChnMCl7cmV0dXJuIHUobixnMCl9ZnVuY3Rpb24gazAoZzApe3JldHVybiB1KHQsZzApfXJldHVybiBSKFAwMFsxXSxrMCxtMCxlLGYwKSwxfSxULHkpLHUoZihlKSx0czApLHUoZihlKSx1czApLHUoZihlKSxpczApLG8oZihlKSx4czAsZnMwKTt2YXIgRT1pWzNdO2lmKEUpe2coZSxvczApO3ZhciBkPUVbMV0sdz1mdW5jdGlvbihWKXtyZXR1cm4gdShuLFYpfSxHPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoQTAwWzFdLEcsdyxlLGQpLGcoZSxhczApfWVsc2UgZyhlLGNzMCk7dShmKGUpLHNzMCksdShmKGUpLHZzMCksbyhmKGUpLGJzMCxsczApO3ZhciBBPWlbNF07aWYoQSl7ZyhlLHBzMCk7dmFyIFM9QVsxXSxNPWZ1bmN0aW9uKFYsZjApe3UoZihWKSxIYzApO3ZhciBtMD0wO3JldHVybiBsZShmdW5jdGlvbihrMCxnMCl7azAmJnUoZihWKSxVYzApO2Z1bmN0aW9uIGUwKHgwKXtyZXR1cm4gdSh0LHgwKX1yZXR1cm4gdXIoaXVbMV0sZTAsVixnMCksMX0sbTAsZjApLHUoZihWKSxYYzApfSxLPWZ1bmN0aW9uKFYpe3JldHVybiB1KHQsVil9O1IoRHJbMV0sSyxNLGUsUyksZyhlLG1zMCl9ZWxzZSBnKGUsX3MwKTtyZXR1cm4gdShmKGUpLHlzMCksdShmKGUpLGhzMCl9KSxOKEcwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh6bSx0LG4pO3JldHVybiBvKEMwKHFjMCksaSxlKX0pO3ZhciBNMDA9WzAsWUQsajAwLHptLEcwMF0sVkQ9ZnVuY3Rpb24gdChuLGUsaSx4KXtyZXR1cm4gdC5mdW4obixlLGkseCl9LEIwMD1mdW5jdGlvbiB0KG4sZSxpKXtyZXR1cm4gdC5mdW4obixlLGkpfSxLbT1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0scTAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9O04oVkQsZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLEJhMCksbyhmKGUpLFVhMCxxYTApO3ZhciB4PWlbMV07aWYoeCl7ZyhlLEhhMCk7dmFyIGM9eFsxXSxzPWZ1bmN0aW9uKF8wKXtyZXR1cm4gdShuLF8wKX0scD1mdW5jdGlvbihfMCl7cmV0dXJuIHUodCxfMCl9O1IoUm5bMV0scCxzLGUsYyksZyhlLFhhMCl9ZWxzZSBnKGUsWWEwKTt1KGYoZSksVmEwKSx1KGYoZSksemEwKSxvKGYoZSksV2EwLEthMCk7dmFyIHk9aVsyXTtmdW5jdGlvbiBUKF8wKXtyZXR1cm4gdShuLF8wKX1mdW5jdGlvbiBFKF8wKXtyZXR1cm4gdSh0LF8wKX1SKE0wMFsxXSxFLFQsZSx5KSx1KGYoZSksSmEwKSx1KGYoZSksJGEwKSxvKGYoZSksUWEwLFphMCk7dmFyIGQ9aVszXTtmdW5jdGlvbiB3KF8wKXtyZXR1cm4gdShuLF8wKX1SKEttLGZ1bmN0aW9uKF8wKXtyZXR1cm4gdSh0LF8wKX0sdyxlLGQpLHUoZihlKSxyYzApLHUoZihlKSxlYzApLG8oZihlKSx0YzAsbmMwKTt2YXIgRz1pWzRdO28oZihlKSx1YzAsRyksdShmKGUpLGljMCksdShmKGUpLGZjMCksbyhmKGUpLG9jMCx4YzApO3ZhciBBPWlbNV07byhmKGUpLGFjMCxBKSx1KGYoZSksY2MwKSx1KGYoZSksc2MwKSxvKGYoZSksbGMwLHZjMCk7dmFyIFM9aVs2XTtpZihTKXtnKGUsYmMwKTt2YXIgTT1TWzFdLEs9ZnVuY3Rpb24oXzApe3JldHVybiB1KG4sXzApfSxWPWZ1bmN0aW9uKF8wKXtyZXR1cm4gdSh0LF8wKX07UigkZVsyNF1bMV0sVixLLGUsTSksZyhlLHBjMCl9ZWxzZSBnKGUsbWMwKTt1KGYoZSksX2MwKSx1KGYoZSkseWMwKSxvKGYoZSksZGMwLGhjMCk7dmFyIGYwPWlbN107ZnVuY3Rpb24gbTAoXzApe3JldHVybiB1KG4sXzApfWZ1bmN0aW9uIGswKF8wKXtyZXR1cm4gdSh0LF8wKX1SKCRlWzE5XSxrMCxtMCxlLGYwKSx1KGYoZSksa2MwKSx1KGYoZSksd2MwKSxvKGYoZSksU2MwLEVjMCk7dmFyIGcwPWlbOF07aWYoZzApe2coZSxnYzApO3ZhciBlMD1nMFsxXSx4MD1mdW5jdGlvbihfMCl7cmV0dXJuIHUobixfMCl9LGw9ZnVuY3Rpb24oXzApe3JldHVybiB1KHQsXzApfTtSKCRlWzIyXVsxXSxsLHgwLGUsZTApLGcoZSxGYzApfWVsc2UgZyhlLFRjMCk7dShmKGUpLE9jMCksdShmKGUpLEljMCksbyhmKGUpLE5jMCxBYzApO3ZhciBjMD1pWzldO2lmKGMwKXtnKGUsQ2MwKTt2YXIgdDA9YzBbMV0sbzA9ZnVuY3Rpb24oXzAsRTApe3JldHVybiBnKF8wLE1hMCl9LHcwPWZ1bmN0aW9uKF8wKXtyZXR1cm4gdSh0LF8wKX07UihEclsxXSx3MCxvMCxlLHQwKSxnKGUsUGMwKX1lbHNlIGcoZSxEYzApO3JldHVybiB1KGYoZSksTGMwKSx1KGYoZSksUmMwKSxvKGYoZSksR2MwLGpjMCksbyh0LGUsaVsxMF0pLHUoZihlKSxNYzApLHUoZihlKSxCYzApfSksTihCMDAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW8oVkQsdCxuKTtyZXR1cm4gbyhDMChHYTApLGksZSl9KSxOKEttLGZ1bmN0aW9uKHQsbixlLGkpe2lmKGlbMF09PT0wKXt2YXIgeD1pWzFdO3UoZihlKSxOYTApLHUoZihlKSxDYTApLG8odCxlLHhbMV0pLHUoZihlKSxQYTApO3ZhciBjPXhbMl0scz1mdW5jdGlvbihkKXtyZXR1cm4gdShuLGQpfSxwPWZ1bmN0aW9uKGQpe3JldHVybiB1KHQsZCl9O3JldHVybiBSKFl1WzFdWzFdLHAscyxlLGMpLHUoZihlKSxEYTApLHUoZihlKSxMYTApfXUoZihlKSxSYTApO3ZhciB5PWlbMV07ZnVuY3Rpb24gVChkKXtyZXR1cm4gdShuLGQpfWZ1bmN0aW9uIEUoZCl7cmV0dXJuIHUodCxkKX1yZXR1cm4gUihxZVszMV0sRSxULGUseSksdShmKGUpLGphMCl9KSxOKHEwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhLbSx0LG4pO3JldHVybiBvKEMwKEFhMCksaSxlKX0pLG11KGU2cixBcyxbMCxBMDAsUDAwLFIwMCxNMDAsVkQsQjAwLEttLHEwMF0pO3ZhciB6RD1mdW5jdGlvbiB0KG4sZSxpLHgpe3JldHVybiB0LmZ1bihuLGUsaSx4KX0sVTAwPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFdtPWZ1bmN0aW9uIHQobixlLGkseCl7cmV0dXJuIHQuZnVuKG4sZSxpLHgpfSxIMDA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX07Tih6RCxmdW5jdGlvbih0LG4sZSxpKXt1KGYoZSksVGEwKSxvKHQsZSxpWzFdKSx1KGYoZSksT2EwKTt2YXIgeD1pWzJdO2Z1bmN0aW9uIGMocyl7cmV0dXJuIHUobixzKX1yZXR1cm4gUihXbSxmdW5jdGlvbihzKXtyZXR1cm4gdSh0LHMpfSxjLGUseCksdShmKGUpLElhMCl9KSxOKFUwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byh6RCx0LG4pO3JldHVybiBvKEMwKEZhMCksaSxlKX0pLE4oV20sZnVuY3Rpb24odCxuLGUsaSl7dShmKGUpLGZhMCksbyhmKGUpLG9hMCx4YTApO3ZhciB4PWlbMV07dShmKGUpLGFhMCk7dmFyIGM9MDtsZShmdW5jdGlvbih3LEcpe3cmJnUoZihlKSxpYTApO2Z1bmN0aW9uIEEoTSl7cmV0dXJuIHUobixNKX1mdW5jdGlvbiBTKE0pe3JldHVybiB1KHQsTSl9cmV0dXJuIFIoWXVbMzVdLFMsQSxlLEcpLDF9LGMseCksdShmKGUpLGNhMCksdShmKGUpLHNhMCksdShmKGUpLHZhMCksbyhmKGUpLGJhMCxsYTApO3ZhciBzPWlbMl07aWYocyl7ZyhlLHBhMCk7dmFyIHA9c1sxXSx5PWZ1bmN0aW9uKHcsRyl7cmV0dXJuIGcodyx1YTApfSxUPWZ1bmN0aW9uKHcpe3JldHVybiB1KHQsdyl9O1IoRHJbMV0sVCx5LGUscCksZyhlLG1hMCl9ZWxzZSBnKGUsX2EwKTt1KGYoZSkseWEwKSx1KGYoZSksaGEwKSxvKGYoZSksa2EwLGRhMCk7dmFyIEU9aVszXTt1KGYoZSksd2EwKTt2YXIgZD0wO3JldHVybiBsZShmdW5jdGlvbih3LEcpe3cmJnUoZihlKSx0YTApO2Z1bmN0aW9uIEEoUyl7cmV0dXJuIHUodCxTKX1yZXR1cm4gdXIoaXVbMV0sQSxlLEcpLDF9LGQsRSksdShmKGUpLEVhMCksdShmKGUpLFNhMCksdShmKGUpLGdhMCl9KSxOKEgwMCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9byhXbSx0LG4pO3JldHVybiBvKEMwKG5hMCksaSxlKX0pLG11KG42cixrZWUsWzAsekQsVTAwLFdtLEgwMF0pO2Z1bmN0aW9uIHplKHQsbil7aWYobil7dmFyIGU9blsxXSxpPXUodCxlKTtyZXR1cm4gZT09PWk/bjpbMCxpXX1yZXR1cm4gbn1mdW5jdGlvbiB0ZSh0LG4sZSxpLHgpe3ZhciBjPW8odCxuLGUpO3JldHVybiBlPT09Yz9pOnUoeCxjKX1mdW5jdGlvbiBlZSh0LG4sZSxpKXt2YXIgeD11KHQsbik7cmV0dXJuIG49PT14P2U6dShpLHgpfWZ1bmN0aW9uIF91KHQsbil7dmFyIGU9blsxXTtmdW5jdGlvbiBpKHgpe3JldHVyblswLGUseF19cmV0dXJuIHRlKHQsZSxuWzJdLG4saSl9ZnVuY3Rpb24gVW4odCxuKXt2YXIgZT1sZShmdW5jdGlvbihpLHgpe3ZhciBjPXUodCx4KSxzPWlbMl0scD1zfHwoYyE9PXg/MTowKTtyZXR1cm5bMCxbMCxjLGlbMV1dLHBdfSxsNnIsbik7cmV0dXJuIGVbMl0/eWUoZVsxXSk6bn12YXIgS0Q9UnAocDZyLGZ1bmN0aW9uKHQpe3ZhciBuPU5OKHQsYjZyKSxlPW5bMV0saT1uWzJdLHg9blszXSxjPW5bNF0scz1uWzVdLHA9bls2XSx5PW5bN10sVD1uWzhdLEU9bls5XSxkPW5bMTBdLHc9blsxMV0sRz1uWzEyXSxBPW5bMTNdLFM9blsxNF0sTT1uWzE1XSxLPW5bMTZdLFY9blsxN10sZjA9blsxOF0sbTA9blsxOV0sazA9blsyMF0sZzA9blsyMV0sZTA9blsyMl0seDA9blsyM10sbD1uWzI0XSxjMD1uWzI1XSx0MD1uWzI2XSxvMD1uWzI3XSx3MD1uWzI4XSxfMD1uWzI5XSxFMD1uWzMwXSxVMD1uWzMxXSxiPW5bMzJdLFIwPW5bMzNdLFg9blszNF0sczA9blszNV0saHI9blszNl0sQXI9blszN10sb3I9blszOF0sVzA9blszOV0sTHI9bls0MF0sVHI9bls0MV0sSHI9bls0Ml0sT3I9bls0M10sZnI9bls0NF0sUnI9bls0NV0sV3I9bls0Nl0sSnI9bls0N10sYXI9bls0OV0sX3I9bls1MF0sSXI9bls1MV0sZmU9bls1Ml0sdjA9bls1M10sUD1uWzU0XSxMPW5bNTVdLFE9bls1Nl0saTA9bls1N10sbDA9bls1OF0sUzA9bls1OV0sVDA9bls2MF0scnI9bls2MV0sTDA9bls2Ml0sQj1uWzYzXSxaPW5bNjVdLHAwPW5bNjZdLGIwPW5bNjddLE8wPW5bNjhdLE0wPW5bNjldLGVyPW5bNzBdLHlyPW5bNzFdLHZyPW5bNzJdLCQwPW5bNzNdLEVyPW5bNzRdLE1yPW5bNzVdLEJyPW5bNzZdLHFyPW5bNzddLGpyPW5bNzhdLCRyPW5bNzldLG5lPW5bODBdLFFyPW5bODFdLGJlPW5bODJdLGFlPW5bODNdLHBlPW5bODRdLG9lPW5bODVdLGNlPW5bODZdLGdlPW5bODddLHEwPW5bODhdLEZyPW5bODldLF89bls5MF0saz1uWzkxXSxJPW5bOTJdLFU9bls5M10sWT1uWzk0XSx5MD1uWzk1XSxQMD1uWzk2XSxJMD1uWzk3XSxEPW5bOThdLHUwPW5bOTldLFgwPW5bdGldLEowPW5bUjddLGlyPW5bUmldLFEwPW5bczddLEYwPW5bTDddLFNyPW5bajddLG1yPW5bWXRdLENyPW5bWmNdLHNyPW5baXNdLFByPW5bRnZdLEswPW5bWHRdLFVyPW5bY2ZdLGgwPW5bVDddLEtyPW5bUG5dLHJlPW5bdDFdLHhlPW5bQXZdLFJlPW5bZjFdLHZlPW5bQTJdLEllPW5bejJdLEdlPW5bU3ZdLE1lPW5bdWNdLGFuPW5bdGxdLFdlPW5bSW5dLEFlPW5bdHNdLGNuPW5bWDJdLHJuPW5bYnJdLGtuPW5bSVhdLHZuPW5bem5dLE5lPW5banRdLEplPW5bSlldLGVuPW5benddLF9uPW5bSmddLENuPW5bQkhdLEhuPW5bMTMzXSxGbj1uWzEzNF0sdnQ9blsxMzVdLE50PW5bS0hdLGd0PW5bMTM3XSxadD1uW0VIXSxxdD1uWzEzOV0sRnQ9bltkSF0sQ3Q9blsxNDFdLGR1PW5bMTQyXSxXdT1uWzE0M10sbHQ9bltpVl0sb3U9blsxNDVdLEJ1PW5bMTQ2XSxLNz1uW0RYXSxZaT1uWzE0OF0sYTc9bltlSF0sSGM9blsxNTBdLFc3PW5bMTUxXSxVdD1uWzE1Ml0sYnQ9blsxNTNdLEIwPW5bRkhdLEQwPW5bMTU1XSxMZT1uWzE1Nl0sSGU9blsxNTddLGhlPW5bMTU4XSxtZT1uWzE1OV0sWm49bltmWV0sd249bltYVV0sZnQ9bltraF0seHQ9bltMbl0sam49bltBRl0sdXQ9blskWF0sZHQ9bltEWV0seG49bltOVF0sbG49bltJWV0saXQ9bltOWF0sVHQ9bltxZ10sVGk9bltwZ10saHM9bltMVV0sQXU9bltfWV0sSHM9blskVV0sVmk9bltiWF0sWHM9blttVl0sWXM9blt1Vl0sbm49bltnT10sc2k9bltSWV0sVnM9bltzVV0sYzI9bltBaV0sTTk9bltZZ10sQjk9bltsU10scTk9bltoa10senM9bltnVV0sczI9blttZF0sVTk9bltud10sSDk9bltpWV0sWDk9bltmWF0sSDE9bltPWV0sdmk9bltsWF0sYWI9bltydF0sY2I9bltIVF0sc2I9bltuSV0sWTk9blt4WV0sVjk9bltYWF0sejk9bltoWV0sdmI9blt2SF0sSzk9bltRSF0sVzk9bltOVV0sSjk9bltzWV0sJDk9bltuSF0sbGI9bltlVl0sWjk9bltXWF0sWDE9bltWSF0sdjI9bltUSF0sYmI9bltBWF0scGI9bltfSF0sbWI9bltXZ10sT249bltBNl0sR249blt5VV0sWTE9blt5WV0sX2I9bltSWF0seWI9blttVF0sUTk9blt4VF0sWGM9blt5Nl0scl89bltjcF0sbDI9bltDd10saGI9bltGVV0sWWM9bltpQV0sZV89bltHWF0sS3M9bltGWF0sZGI9blt5OF0sVjE9bltodl0sbl89bltCT10sZHM9bltya10sdF89bltKSF0sejE9bltmVl0sdV89bltiVV0sYjI9bltqaF0saV89bltxWF0sV3M9bltaRl0sa2I9bltoVF0sSnM9blt0SF0sZl89bltKVV0semk9bltsT10sVmM9bltCWV0sJHM9bltjSF0seF89bltpNl0scDI9bltzMV0sbTI9bltWeV0sXzI9bltTVF0sb189bltRVV0sWnM9blt2OF0sYV89bltXWV0seTI9blskMl0scUw9bls0OF0sSzE9bls2NF07ZnVuY3Rpb24gVUwoYSxGLG0pe3ZhciBPPW1bMl0sSD1tWzFdLCQ9emUodShhWzFdWzErbm5dLGEpLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBPPT09cjAmJkg9PT0kP206WzAsJCxyMCxtWzNdLG1bNF1dfWZ1bmN0aW9uIFcxKGEsRixtKXt2YXIgTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1vKGFbMV1bMStWY10sYSxyMCksVjA9emUodShhWzFdWzErVl0sYSksJCksTnI9byhhWzFdWzErdDBdLGEsSCksR3I9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIHIwPT09ajAmJkg9PT1OciYmJD09PVYwJiZPPT09R3I/bTpbMCxqMCxWMCxOcixHcl19ZnVuY3Rpb24gSEwoYSxGLG0pe3ZhciBPPW1bM10sSD1tWzJdLCQ9bVsxXSxyMD1vKGFbMV1bMStubl0sYSwkKSxqMD1vKGFbMV1bMStPcl0sYSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZIPT09ajAmJk89PT1WMD9tOlswLHIwLGowLFYwXX1mdW5jdGlvbiBKMShhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPW8oYVsxXVsxK19yXSxhLCQpLGowPW8oYVsxXVsxK09yXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIFhMKGEsRixtKXt2YXIgTz1tWzJdLEg9T1syXSwkPU9bMV0scjA9dXIoYVsxXVsxK3BdLGEsRiwkKSxqMD16ZSh1KGFbMV1bMStubl0sYSksSCk7cmV0dXJuICQ9PT1yMCYmSD09PWowP206WzAsbVsxXSxbMCxyMCxqMF1dfWZ1bmN0aW9uIE9pKGEsRixtKXt2YXIgTz1tWzNdLEg9bVsyXSwkPW1bMV0scjA9VW4obyhhWzFdWzEreV0sYSxIKSwkKSxqMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZPPT09ajA/bTpbMCxyMCxILGowXX1mdW5jdGlvbiBZTChhLEYsbSl7dmFyIE89bVs0XSxIPW1bMl0sJD1vKGFbMV1bMStubl0sYSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9tOlswLG1bMV0sJCxtWzNdLHIwXX1mdW5jdGlvbiBWTChhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1vKGFbMV1bMStubl0sYSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9tOlswLG1bMV0sJCxyMF19ZnVuY3Rpb24gaDIoYSxGLG0pe3ZhciBPPW1bM10sSD1tWzJdLCQ9bVsxXSxyMD1vKGFbMV1bMStubl0sYSwkKSxqMD1vKGFbMV1bMStsXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiByMD09PSQmJmowPT09SCYmVjA9PT1PP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIHpMKGEsRixtKXt2YXIgTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1fdSh1KGFbMV1bMSt6aV0sYSkscjApO2lmKCQpdmFyIFYwPSRbMV0sTnI9VjBbMV0sR3I9ZnVuY3Rpb24oUXQpe3JldHVyblswLFswLE5yLFF0XV19LEZlPVYwWzJdLF9lPXRlKHUoYVsxXVsxK3oxXSxhKSxOcixGZSwkLEdyKTtlbHNlIHZhciBfZT0kO2lmKEgpdmFyIERuPUhbMV0seW49RG5bMV0sb3Q9ZnVuY3Rpb24oUXQpe3JldHVyblswLFswLHluLFF0XV19LHB0PURuWzJdLGt0PXRlKHUoYVsxXVsxK3ppXSxhKSx5bixwdCxILG90KTtlbHNlIHZhciBrdD1IO3ZhciBLbj1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gcjA9PT1qMCYmJD09PV9lJiZIPT09a3QmJk89PT1Lbj9tOlswLGowLF9lLGt0LEtuXX1mdW5jdGlvbiAkMShhLEYsbSl7dmFyIE89bVsyXSxIPW1bMV0sJD1vKGFbMV1bMStubl0sYSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9tOlswLCQscjBdfWZ1bmN0aW9uIEtMKGEsRixtKXt2YXIgTz1tWzFdLEg9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIE89PT1IP206WzAsSF19ZnVuY3Rpb24gWjEoYSxGKXtyZXR1cm4gRn1mdW5jdGlvbiBXTChhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPVVuKHUoYVsxXVsxK2JdLGEpLCQpLGowPVVuKHUoYVsxXVsxK25uXSxhKSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZIPT09ajAmJk89PT1WMD9tOlswLHIwLGowLFYwXX1mdW5jdGlvbiB3YihhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPW8oYVsxXVsxK25uXSxhLCQpLGowPV91KHUoYVsxXVsxK1IwXSxhKSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZIPT09ajAmJk89PT1WMD9tOlswLHIwLGowLFYwXX1mdW5jdGlvbiBKTChhLEYpe3ZhciBtPUZbMl0sTz1tWzNdLEg9bVsyXSwkPW1bMV0scjA9emUodShhWzFdWzErbm5dLGEpLCQpLGowPW8oYVsxXVsxK1RyXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP0Y6WzAsRlsxXSxbMCxyMCxqMCxWMF1dfWZ1bmN0aW9uIEViKGEsRixtKXt2YXIgTz1tWzNdLEg9bVsyXSwkPW1bMV0scjA9byhhWzFdWzErbm5dLGEsJCksajA9VW4odShhWzFdWzErQXJdLGEpLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAscjAsajAsVjAsbVs0XV19ZnVuY3Rpb24gJEwoYSxGLG0pe3ZhciBPPW1bMV0sSD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gTz09PUg/bTpbMCxIXX1mdW5jdGlvbiBaTChhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK25uXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gZDIoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW1bMV0sJD1vKGFbMV1bMStubl0sYSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9GOlswLEZbMV0sWzAsJCxyMF1dfWZ1bmN0aW9uIFFMKGEsRil7cmV0dXJuWzAsbyhhWzFdWzErT3JdLGEsRiksMF19ZnVuY3Rpb24gclIoYSxGKXt2YXIgbT11KGFbMV1bMStIcl0sYSksTz1sZShmdW5jdGlvbihILCQpe3ZhciByMD1IWzFdLGowPXUobSwkKTtpZihqMCl7aWYoajBbMl0pcmV0dXJuWzAsTGMoajAscjApLDFdO3ZhciBWMD1qMFsxXSxOcj1IWzJdLEdyPU5yfHwoJCE9PVYwPzE6MCk7cmV0dXJuWzAsWzAsVjAscjBdLEdyXX1yZXR1cm5bMCxyMCwxXX0sdjZyLEYpO3JldHVybiBPWzJdP3llKE9bMV0pOkZ9ZnVuY3Rpb24gY18oYSxGKXtyZXR1cm4gbyhhWzFdWzErVHJdLGEsRil9ZnVuY3Rpb24gZVIoYSxGLG0pe3ZhciBPPW1bMl0sSD1tWzFdLCQ9VW4odShhWzFdWzErbm5dLGEpLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP206WzAsJCxyMF19ZnVuY3Rpb24gazIoYSxGLG0pe3ZhciBPPW1bMl0sSD1tWzFdLCQ9emUodShhWzFdWzErbm5dLGEpLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP206WzAsJCxyMCxtWzNdXX1mdW5jdGlvbiBuUihhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK0xlXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gdzIoYSxGKXtyZXR1cm4gbyhhWzFdWzErbm5dLGEsRil9ZnVuY3Rpb24gdFIoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW1bMV07aWYoSCl2YXIgJD1mdW5jdGlvbihOcil7cmV0dXJuWzAsTnJdfSxyMD1IWzFdLGowPWVlKHUoYVsxXVsxK25uXSxhKSxyMCxILCQpO2Vsc2UgdmFyIGowPUg7dmFyIFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09ajAmJk89PT1WMD9GOlswLEZbMV0sWzAsajAsVjBdXX1mdW5jdGlvbiBRMShhLEYpe3JldHVybiBvKGFbMV1bMStubl0sYSxGKX1mdW5jdGlvbiB1UihhLEYsbSl7cmV0dXJuIHVyKGFbMV1bMStlcl0sYSxGLG0pfWZ1bmN0aW9uIFNiKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK2VyXSxhLEYsbSl9ZnVuY3Rpb24gaVIoYSxGLG0pe3ZhciBPPW1bMl0sSD1PWzJdLCQ9T1sxXSxyMD11cihhWzFdWzErWl0sYSxGLCQpLGowPW8oYVsxXVsxK3MwXSxhLEgpO3JldHVybiByMD09PSQmJkg9PT1qMD9tOlswLG1bMV0sWzAscjAsajBdXX1mdW5jdGlvbiBnYihhLEYsbSl7cmV0dXJuIHVyKGFbMV1bMStlcl0sYSxGLG0pfWZ1bmN0aW9uIGZSKGEsRixtKXt2YXIgTz1tWzJdLEg9T1syXSwkPU9bMV0scjA9dXIoYVsxXVsxK2IwXSxhLEYsJCksajA9emUodShhWzFdWzErbm5dLGEpLEgpO3JldHVybiAkPT09cjAmJkg9PT1qMD9tOlswLG1bMV0sWzAscjAsajBdXX1mdW5jdGlvbiBGYihhLEYsbSl7c3dpdGNoKG1bMF0pe2Nhc2UgMDp2YXIgTz1mdW5jdGlvbihqMCl7cmV0dXJuWzAsajBdfSxIPW1bMV07cmV0dXJuIGVlKG8oYVsxXVsxK08wXSxhLEYpLEgsbSxPKTtjYXNlIDE6dmFyICQ9ZnVuY3Rpb24oajApe3JldHVyblsxLGowXX0scjA9bVsxXTtyZXR1cm4gZWUobyhhWzFdWzErcDBdLGEsRikscjAsbSwkKTtkZWZhdWx0OnJldHVybiBtfX1mdW5jdGlvbiB4UihhLEYsbSl7cmV0dXJuIHVyKGFbMV1bMStlcl0sYSxGLG0pfWZ1bmN0aW9uIE1uKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK2VyXSxhLEYsbSl9ZnVuY3Rpb24gc18oYSxGLG0pe3ZhciBPPW1bMl0sSD1PWzJdLCQ9T1sxXSxyMD11cihhWzFdWzErZmVdLGEsRiwkKSxqMD1vKGFbMV1bMStzMF0sYSxIKTtyZXR1cm4gcjA9PT0kJiZIPT09ajA/bTpbMCxtWzFdLFswLHIwLGowXV19ZnVuY3Rpb24gb1IoYSxGLG0pe3JldHVybiBvKGFbMV1bMStPbl0sYSxtKX1mdW5jdGlvbiBhUihhLEYsbSl7cmV0dXJuIHVyKGFbMV1bMStMMF0sYSxGLG0pfWZ1bmN0aW9uIHJ2KGEsRixtKXt2YXIgTz1tWzFdO2Z1bmN0aW9uIEgocjApe3JldHVyblswLE8scjBdfXZhciAkPW1bMl07cmV0dXJuIHRlKG8oYVsxXVsxK3JyXSxhLEYpLE8sJCxtLEgpfWZ1bmN0aW9uIFRiKGEsRixtKXtzd2l0Y2gobVswXSl7Y2FzZSAwOnZhciBPPWZ1bmN0aW9uKE5yKXtyZXR1cm5bMCxOcl19LEg9bVsxXTtyZXR1cm4gZWUobyhhWzFdWzErTF0sYSxGKSxILG0sTyk7Y2FzZSAxOnZhciAkPWZ1bmN0aW9uKE5yKXtyZXR1cm5bMSxOcl19LHIwPW1bMV07cmV0dXJuIGVlKG8oYVsxXVsxK2kwXSxhLEYpLHIwLG0sJCk7ZGVmYXVsdDp2YXIgajA9ZnVuY3Rpb24oTnIpe3JldHVyblsyLE5yXX0sVjA9bVsxXTtyZXR1cm4gZWUobyhhWzFdWzErbDBdLGEsRiksVjAsbSxqMCl9fWZ1bmN0aW9uIHZfKGEsRixtKXt2YXIgTz1tWzJdLEg9T1s0XSwkPU9bM10scjA9T1syXSxqMD1PWzFdLFYwPXVyKGFbMV1bMStRXSxhLEYsajApLE5yPXVyKGFbMV1bMStQXSxhLEYscjApLEdyPXplKHUoYVsxXVsxK25uXSxhKSwkKTtpZihIKXt2YXIgRmU9MDtpZihWMFswXT09PTEpe3ZhciBfZT1OclsyXTtpZihfZVswXT09PTIpdmFyIHluPXFuKFYwWzFdWzJdWzFdLF9lWzFdWzFdWzJdWzFdKTtlbHNlIEZlPTF9ZWxzZSBGZT0xO2lmKEZlKXZhciBEbj1qMD09PVYwPzE6MCx5bj1EbiYmKHIwPT09TnI/MTowKX1lbHNlIHZhciB5bj1IO3JldHVybiBWMD09PWowJiZOcj09PXIwJiZHcj09PSQmJkg9PT15bj9tOlswLG1bMV0sWzAsVjAsTnIsR3IseW5dXX1mdW5jdGlvbiBPYihhLEYsbSl7aWYobVswXT09PTApe3ZhciBPPWZ1bmN0aW9uKGowKXtyZXR1cm5bMCxqMF19LEg9bVsxXTtyZXR1cm4gZWUobyhhWzFdWzErUzBdLGEsRiksSCxtLE8pfWZ1bmN0aW9uICQoajApe3JldHVyblsxLGowXX12YXIgcjA9bVsxXTtyZXR1cm4gZWUobyhhWzFdWzErdjBdLGEsRikscjAsbSwkKX1mdW5jdGlvbiBjUihhLEYsbSxPKXtyZXR1cm4gdXIoYVsxXVsxK0owXSxhLG0sTyl9ZnVuY3Rpb24gbF8oYSxGLG0pe3JldHVybiBvKGFbMV1bMStsdF0sYSxtKX1mdW5jdGlvbiBzUihhLEYsbSl7dmFyIE89bVsyXTtzd2l0Y2goT1swXSl7Y2FzZSAwOnZhciBIPU9bMV0sJD1IWzNdLHIwPUhbMl0sajA9SFsxXSxWMD1VbihvKGFbMV1bMStUMF0sYSxGKSxqMCksTnI9byhhWzFdWzEreDBdLGEscjApLEdyPW8oYVsxXVsxK3MwXSxhLCQpLEZlPTA7aWYoVjA9PT1qMCYmTnI9PT1yMCYmR3I9PT0kKXt2YXIgX2U9TztGZT0xfWlmKCFGZSl2YXIgX2U9WzAsWzAsVjAsTnIsR3JdXTt2YXIgSmk9X2U7YnJlYWs7Y2FzZSAxOnZhciBEbj1PWzFdLHluPURuWzNdLG90PURuWzJdLHB0PURuWzFdLGt0PVVuKG8oYVsxXVsxK00wXSxhLEYpLHB0KSxLbj1vKGFbMV1bMSt4MF0sYSxvdCksUXQ9byhhWzFdWzErczBdLGEseW4pLEo3PTA7aWYoeW49PT1RdCYma3Q9PT1wdCYmS249PT1vdCl7dmFyICQ3PU87Sjc9MX1pZighSjcpdmFyICQ3PVsxLFswLGt0LEtuLFF0XV07dmFyIEppPSQ3O2JyZWFrO2Nhc2UgMjp2YXIgRTc9T1sxXSxaNz1FN1syXSxRNz1FN1sxXSxyaT11cihhWzFdWzErTDBdLGEsRixRNyksZWk9byhhWzFdWzEreDBdLGEsWjcpLG5pPTA7aWYoUTc9PT1yaSYmWjc9PT1laSl7dmFyIFdpPU87bmk9MX1pZighbmkpdmFyIFdpPVsyLFswLHJpLGVpLEU3WzNdXV07dmFyIEppPVdpO2JyZWFrO2RlZmF1bHQ6dmFyIHR2PWZ1bmN0aW9uKGl2KXtyZXR1cm5bMyxpdl19LHV2PU9bMV0sSmk9ZWUodShhWzFdWzErQl0sYSksdXYsTyx0dil9cmV0dXJuIE89PT1KaT9tOlswLG1bMV0sSmldfWZ1bmN0aW9uIGJfKGEsRil7cmV0dXJuIHVyKGFbMV1bMStlcl0sYSwwLEYpfWZ1bmN0aW9uIEliKGEsRixtKXt2YXIgTz1GJiZGWzFdO3JldHVybiB1cihhWzFdWzErZXJdLGEsWzAsT10sbSl9ZnVuY3Rpb24gcF8oYSxGKXtyZXR1cm4gbyhhWzFdWzErbTJdLGEsRil9ZnVuY3Rpb24gdlIoYSxGKXtyZXR1cm4gbyhhWzFdWzErbTJdLGEsRil9ZnVuY3Rpb24gbV8oYSxGKXtyZXR1cm4gdXIoYVsxXVsxKyRzXSxhLHM2cixGKX1mdW5jdGlvbiBBYihhLEYsbSl7cmV0dXJuIHVyKGFbMV1bMSskc10sYSxbMCxGXSxtKX1mdW5jdGlvbiBsUihhLEYpe3JldHVybiB1cihhWzFdWzErJHNdLGEsYzZyLEYpfWZ1bmN0aW9uIGJSKGEsRixtKXt2YXIgTz1tWzVdLEg9bVs0XSwkPW1bM10scjA9bVsyXSxqMD1tWzFdLFYwPW8oYVsxXVsxK1ZjXSxhLGowKSxOcj16ZSh1KGFbMV1bMStWXSxhKSxyMCksR3I9emUodShhWzFdWzErdDBdLGEpLCQpLEZlPXplKHUoYVsxXVsxK3QwXSxhKSxIKSxfZT1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gajA9PT1WMCYmJD09PUdyJiZyMD09PU5yJiYkPT09R3ImJkg9PT1GZSYmTz09PV9lP206WzAsVjAsTnIsR3IsRmUsX2VdfWZ1bmN0aW9uIHBSKGEsRil7cmV0dXJuIG8oYVsxXVsxK09uXSxhLEYpfWZ1bmN0aW9uIE5iKGEsRil7cmV0dXJuIG8oYVsxXVsxK2x0XSxhLEYpfWZ1bmN0aW9uIG1SKGEsRil7dmFyIG09RlsxXTtmdW5jdGlvbiBPKCQpe3JldHVyblswLG0sJF19dmFyIEg9RlsyXTtyZXR1cm4gdGUodShhWzFdWzErSjBdLGEpLG0sSCxGLE8pfWZ1bmN0aW9uIF9SKGEsRil7c3dpdGNoKEZbMF0pe2Nhc2UgMDp2YXIgbT1mdW5jdGlvbihHcil7cmV0dXJuWzAsR3JdfSxPPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK2JlXSxhKSxPLEYsbSk7Y2FzZSAxOnZhciBIPWZ1bmN0aW9uKEdyKXtyZXR1cm5bMSxHcl19LCQ9RlsxXTtyZXR1cm4gZWUodShhWzFdWzErYWVdLGEpLCQsRixIKTtjYXNlIDI6dmFyIHIwPWZ1bmN0aW9uKEdyKXtyZXR1cm5bMixHcl19LGowPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK2FyXSxhKSxqMCxGLHIwKTtkZWZhdWx0OnZhciBWMD1mdW5jdGlvbihHcil7cmV0dXJuWzMsR3JdfSxOcj1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStwZV0sYSksTnIsRixWMCl9fWZ1bmN0aW9uIF9fKGEsRil7dmFyIG09RlsyXSxPPUZbMV07c3dpdGNoKG1bMF0pe2Nhc2UgMDp2YXIgSD1tWzNdLCQ9bVsyXSxyMD1tWzFdLGowPW8oYVsxXVsxK29lXSxhLHIwKSxWMD1vKGFbMV1bMStubl0sYSwkKTtpZihIKXt2YXIgTnI9MDtpZihqMFswXT09PTEpe3ZhciBHcj1WMFsyXTtpZihHclswXT09PTEwKXZhciBfZT1xbihqMFsxXVsyXVsxXSxHclsxXVsyXVsxXSk7ZWxzZSBOcj0xfWVsc2UgTnI9MTtpZihOcil2YXIgRmU9cjA9PT1qMD8xOjAsX2U9RmUmJigkPT09VjA/MTowKX1lbHNlIHZhciBfZT1IO3JldHVybiByMD09PWowJiYkPT09VjAmJkg9PT1fZT9GOlswLE8sWzAsajAsVjAsX2VdXTtjYXNlIDE6dmFyIERuPW1bMl0seW49bVsxXSxvdD1vKGFbMV1bMStvZV0sYSx5bikscHQ9X3UodShhWzFdWzErbWVdLGEpLERuKTtyZXR1cm4geW49PT1vdCYmRG49PT1wdD9GOlswLE8sWzEsb3QscHRdXTtjYXNlIDI6dmFyIGt0PW1bM10sS249bVsyXSxRdD1tWzFdLEo3PW8oYVsxXVsxK29lXSxhLFF0KSwkNz1fdSh1KGFbMV1bMSttZV0sYSksS24pLEU3PW8oYVsxXVsxK3MwXSxhLGt0KTtyZXR1cm4gUXQ9PT1KNyYmS249PT0kNyYma3Q9PT1FNz9GOlswLE8sWzIsSjcsJDcsRTddXTtkZWZhdWx0OnZhciBaNz1tWzNdLFE3PW1bMl0scmk9bVsxXSxlaT1vKGFbMV1bMStvZV0sYSxyaSksbmk9X3UodShhWzFdWzErbWVdLGEpLFE3KSxXaT1vKGFbMV1bMStzMF0sYSxaNyk7cmV0dXJuIHJpPT09ZWkmJlE3PT09bmkmJlo3PT09V2k/RjpbMCxPLFszLGVpLG5pLFdpXV19fWZ1bmN0aW9uIHlSKGEsRixtKXt2YXIgTz1tWzJdLEg9bVsxXSwkPVVuKGZ1bmN0aW9uKGowKXtpZihqMFswXT09PTApe3ZhciBWMD1qMFsxXSxOcj1vKGFbMV1bMStRcl0sYSxWMCk7cmV0dXJuIFYwPT09TnI/ajA6WzAsTnJdfXZhciBHcj1qMFsxXSxGZT1vKGFbMV1bMStmcl0sYSxHcik7cmV0dXJuIEdyPT09RmU/ajA6WzEsRmVdfSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9tOlswLCQscjBdfWZ1bmN0aW9uIENiKGEsRixtKXt2YXIgTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1vKGFbMV1bMStubl0sYSxyMCksVjA9emUodShhWzFdWzErYjJdLGEpLCQpLE5yPXplKHUoYVsxXVsxK1dzXSxhKSxIKSxHcj1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gcjA9PT1qMCYmJD09PVYwJiZIPT09TnImJk89PT1Hcj9tOlswLGowLFYwLE5yLEdyXX1mdW5jdGlvbiBoUihhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPW8oYVsxXVsxK2x0XSxhLCQpLGowPW8oYVsxXVsxK2x0XSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIGRSKGEsRil7cmV0dXJuIG8oYVsxXVsxK25uXSxhLEYpfWZ1bmN0aW9uIHlfKGEsRil7cmV0dXJuIG8oYVsxXVsxK2FyXSxhLEYpfWZ1bmN0aW9uIGtSKGEsRil7cmV0dXJuIG8oYVsxXVsxK2x0XSxhLEYpfWZ1bmN0aW9uIEUyKGEsRil7c3dpdGNoKEZbMF0pe2Nhc2UgMDp2YXIgbT1mdW5jdGlvbihWMCl7cmV0dXJuWzAsVjBdfSxPPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK3kwXSxhKSxPLEYsbSk7Y2FzZSAxOnZhciBIPWZ1bmN0aW9uKFYwKXtyZXR1cm5bMSxWMF19LCQ9RlsxXTtyZXR1cm4gZWUodShhWzFdWzErRF0sYSksJCxGLEgpO2RlZmF1bHQ6dmFyIHIwPWZ1bmN0aW9uKFYwKXtyZXR1cm5bMixWMF19LGowPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK1AwXSxhKSxqMCxGLHIwKX19ZnVuY3Rpb24gd1IoYSxGLG0pe3ZhciBPPW1bMV0sSD11cihhWzFdWzErdTBdLGEsRixPKTtyZXR1cm4gTz09PUg/bTpbMCxILG1bMl0sbVszXV19ZnVuY3Rpb24gRVIoYSxGLG0pe3ZhciBPPW1bM10sSD1tWzJdLCQ9bVsxXSxyMD1vKGFbMV1bMStubl0sYSwkKSxqMD1vKGFbMV1bMStJMF0sYSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZIPT09ajAmJk89PT1WMD9tOlswLHIwLGowLFYwXX1mdW5jdGlvbiBTUihhLEYsbSl7dmFyIE89bVs0XSxIPW1bM10sJD1tWzJdLHIwPW8oYVsxXVsxK25uXSxhLCQpLGowPW8oYVsxXVsxK25uXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAsbVsxXSxyMCxqMCxWMF19ZnVuY3Rpb24gUGIoYSxGLG0pe3ZhciBPPW1bM10sSD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gTz09PUg/bTpbMCxtWzFdLG1bMl0sSF19ZnVuY3Rpb24gZ1IoYSxGLG0pe3ZhciBPPW1bM10sSD1tWzJdLCQ9bVsxXSxyMD1vKGFbMV1bMStRMF0sYSwkKSxqMD1vKGFbMV1bMStPcl0sYSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZIPT09ajAmJk89PT1WMD9tOlswLHIwLGowLFYwXX1mdW5jdGlvbiBGUihhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIE89PT1IP0Y6WzAsRlsxXSxbMCxtWzFdLEhdXX1mdW5jdGlvbiBEYihhLEYpe3JldHVybiBvKGFbMV1bMSt2ZV0sYSxGKX1mdW5jdGlvbiBUUihhLEYpe2lmKEZbMF09PT0wKXt2YXIgbT1mdW5jdGlvbihyMCl7cmV0dXJuWzAscjBdfSxPPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK0swXSxhKSxPLEYsbSl9ZnVuY3Rpb24gSChyMCl7cmV0dXJuWzEscjBdfXZhciAkPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK1VyXSxhKSwkLEYsSCl9ZnVuY3Rpb24gT1IoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW1bMV0sJD1vKGFbMV1bMStQcl0sYSxIKSxyMD1vKGFbMV1bMStoMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9GOlswLEZbMV0sWzAsJCxyMF1dfWZ1bmN0aW9uIGt1KGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzEraDBdLGEsSCkscjA9byhhWzFdWzEraDBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/RjpbMCxGWzFdLFswLCQscjBdXX1mdW5jdGlvbiB3dShhLEYpe3JldHVybiBvKGFbMV1bMStVcl0sYSxGKX1mdW5jdGlvbiBJaShhLEYpe3JldHVybiBvKGFbMV1bMStzcl0sYSxGKX1mdW5jdGlvbiB3NyhhLEYpe3JldHVybiBvKGFbMV1bMStoMF0sYSxGKX1mdW5jdGlvbiBLaShhLEYpe3N3aXRjaChGWzBdKXtjYXNlIDA6dmFyIG09ZnVuY3Rpb24oVjApe3JldHVyblswLFYwXX0sTz1GWzFdO3JldHVybiBlZSh1KGFbMV1bMSt2ZV0sYSksTyxGLG0pO2Nhc2UgMTp2YXIgSD1mdW5jdGlvbihWMCl7cmV0dXJuWzEsVjBdfSwkPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK3hlXSxhKSwkLEYsSCk7ZGVmYXVsdDp2YXIgcjA9ZnVuY3Rpb24oVjApe3JldHVyblsyLFYwXX0sajA9RlsxXTtyZXR1cm4gZWUodShhWzFdWzErUmVdLGEpLGowLEYscjApfX1mdW5jdGlvbiBldihhLEYpe3ZhciBtPUZbMl0sTz1GWzFdLEg9byhhWzFdWzErbm5dLGEsTyksJD1vKGFbMV1bMStzMF0sYSxtKTtyZXR1cm4gTz09PUgmJm09PT0kP0Y6WzAsSCwkXX1mdW5jdGlvbiBMYihhLEYsbSl7dmFyIE89bVsyXSxIPW1bMV0sJD1vKGFbMV1bMStzMF0sYSxPKTtpZihIKXt2YXIgcjA9SFsxXSxqMD1vKGFbMV1bMStubl0sYSxyMCk7cmV0dXJuIHIwPT09ajAmJk89PT0kP206WzAsWzAsajBdLCRdfXJldHVybiBPPT09JD9tOlswLDAsJF19ZnVuY3Rpb24gbnYoYSxGKXt2YXIgbT1GWzJdLE89RlsxXTtzd2l0Y2gobVswXSl7Y2FzZSAwOnZhciBIPWZ1bmN0aW9uKF9lKXtyZXR1cm5bMCxPLFswLF9lXV19LCQ9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErR2VdLGEpLE8sJCxGLEgpO2Nhc2UgMTp2YXIgcjA9ZnVuY3Rpb24oX2Upe3JldHVyblswLE8sWzEsX2VdXX0sajA9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErS3JdLGEpLE8sajAsRixyMCk7Y2FzZSAyOnZhciBWMD1mdW5jdGlvbihfZSl7cmV0dXJuWzAsTyxbMixfZV1dfSxOcj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStyZV0sYSksTyxOcixGLFYwKTtjYXNlIDM6dmFyIEdyPWZ1bmN0aW9uKF9lKXtyZXR1cm5bMCxPLFszLF9lXV19LEZlPW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK0YwXSxhKSxGZSxGLEdyKTtkZWZhdWx0OnJldHVybiBGfX1mdW5jdGlvbiBSYihhLEYpe3ZhciBtPUZbMl0sTz1Vbih1KGFbMV1bMStXZV0sYSksbSk7cmV0dXJuIG09PT1PP0Y6WzAsRlsxXSxPXX1mdW5jdGlvbiBqYihhLEYsbSl7cmV0dXJuIHVyKGFbMV1bMStKMF0sYSxGLG0pfWZ1bmN0aW9uIElSKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK3JlXSxhLEYsbSl9ZnVuY3Rpb24gU25lKGEsRil7aWYoRlswXT09PTApe3ZhciBtPUZbMV0sTz1mdW5jdGlvbihWMCl7cmV0dXJuWzAsbSxWMF19LEg9RlsyXTtyZXR1cm4gdGUodShhWzFdWzErQWVdLGEpLG0sSCxGLE8pfXZhciAkPUZbMV07ZnVuY3Rpb24gcjAoVjApe3JldHVyblsxLCQsVjBdfXZhciBqMD1GWzJdO3JldHVybiB0ZSh1KGFbMV1bMStjbl0sYSksJCxqMCxGLHIwKX1mdW5jdGlvbiBnbmUoYSxGKXtyZXR1cm4gbyhhWzFdWzErc3JdLGEsRil9ZnVuY3Rpb24gRm5lKGEsRil7cmV0dXJuIG8oYVsxXVsxK2gwXSxhLEYpfWZ1bmN0aW9uIFRuZShhLEYpe2lmKEZbMF09PT0wKXt2YXIgbT1mdW5jdGlvbihyMCl7cmV0dXJuWzAscjBdfSxPPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK3ZuXSxhKSxPLEYsbSl9ZnVuY3Rpb24gSChyMCl7cmV0dXJuWzEscjBdfXZhciAkPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK2tuXSxhKSwkLEYsSCl9ZnVuY3Rpb24gT25lKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErTmVdLGEsSCkscjA9emUodShhWzFdWzErcm5dLGEpLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gSW5lKGEsRixtKXt2YXIgTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK25uXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP206WzAsJCxyMF19ZnVuY3Rpb24gQW5lKGEsRil7aWYoRlswXT09PTApe3ZhciBtPWZ1bmN0aW9uKFYwKXtyZXR1cm5bMCxWMF19LE89RlsxXTtyZXR1cm4gZWUodShhWzFdWzErSmVdLGEpLE8sRixtKX12YXIgSD1GWzFdLCQ9SFsxXTtmdW5jdGlvbiByMChWMCl7cmV0dXJuWzEsWzAsJCxWMF1dfXZhciBqMD1IWzJdO3JldHVybiB0ZSh1KGFbMV1bMStTcl0sYSksJCxqMCxGLHIwKX1mdW5jdGlvbiBObmUoYSxGKXt2YXIgbT1GWzJdWzFdLE89byhhWzFdWzErSWVdLGEsbSk7cmV0dXJuIG09PT1PP0Y6WzAsRlsxXSxbMCxPXV19ZnVuY3Rpb24gQ25lKGEsRil7dmFyIG09RlsyXSxPPW1bM10sSD1tWzFdLCQ9byhhWzFdWzErSWVdLGEsSCkscjA9VW4odShhWzFdWzErQ3JdLGEpLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLG1bMl0scjBdXX1mdW5jdGlvbiBQbmUoYSxGLG0pe3ZhciBPPW1bNF0sSD1tWzNdLCQ9byhhWzFdWzErYW5dLGEsSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/bTpbMCxtWzFdLG1bMl0sJCxyMF19ZnVuY3Rpb24gRG5lKGEsRixtKXt2YXIgTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1vKGFbMV1bMSttcl0sYSxyMCksVjA9emUodShhWzFdWzErTWVdLGEpLCQpLE5yPW8oYVsxXVsxK2FuXSxhLEgpLEdyPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiByMD09PWowJiYkPT09VjAmJkg9PT1OciYmTz09PUdyP206WzAsajAsVjAsTnIsR3JdfWZ1bmN0aW9uIExuZShhLEYsbSxPKXt2YXIgSD0yPD1GP28oYVsxXVsxK0wwXSxhLGE2cik6dShhWzFdWzErVmNdLGEpO3JldHVybiB1KEgsTyl9ZnVuY3Rpb24gUm5lKGEsRixtKXt2YXIgTz0yPD1GP28oYVsxXVsxK0wwXSxhLG82cik6dShhWzFdWzErVmNdLGEpO3JldHVybiB1KE8sbSl9ZnVuY3Rpb24gam5lKGEsRixtKXt2YXIgTz1tWzNdLEg9bVsyXSwkPW1bMV0scjA9MDtpZihGKXt2YXIgajA9MDtpZigkKXN3aXRjaCgkWzFdKXtjYXNlIDI6YnJlYWs7Y2FzZSAwOnIwPTEsajA9MjticmVhaztkZWZhdWx0OmowPTF9dmFyIFYwPTA7c3dpdGNoKGowKXtjYXNlIDI6VjA9MTticmVhaztjYXNlIDA6aWYoMjw9Ril7dmFyIE5yPTAsR3I9MDtWMD0xfWJyZWFrfWlmKCFWMCl2YXIgTnI9MSxHcj0wfWVsc2UgcjA9MTtpZihyMCl2YXIgTnI9MSxHcj0xO3ZhciBGZT1vKEdyP2FbMV1bMSttMF06YVsxXVsxK2x0XSxhLE8pO2lmKEgpdmFyIF9lPU5yP3UoYVsxXVsxK1ZjXSxhKTpvKGFbMV1bMStMMF0sYSx4NnIpLERuPWZ1bmN0aW9uKG90KXtyZXR1cm5bMCxvdF19LHluPWVlKF9lLEhbMV0sSCxEbik7ZWxzZSB2YXIgeW49SDtyZXR1cm4gSD09PXluJiZPPT09RmU/bTpbMCwkLHluLEZlXX1mdW5jdGlvbiBHbmUoYSxGLG0pe2lmKG1bMF09PT0wKXt2YXIgTz1tWzFdLEg9VW4obyhhWzFdWzErZ3RdLGEsRiksTyk7cmV0dXJuIE89PT1IP206WzAsSF19dmFyICQ9bVsxXSxyMD0kWzFdO2Z1bmN0aW9uIGowKE5yKXtyZXR1cm5bMSxbMCxyMCxOcl1dfXZhciBWMD0kWzJdO3JldHVybiB0ZShvKGFbMV1bMStOdF0sYSxGKSxyMCxWMCxtLGowKX1mdW5jdGlvbiBNbmUoYSxGLG0pe3ZhciBPPW1bNV0sSD1tWzRdLCQ9bVszXSxyMD1tWzFdLGowPXplKG8oYVsxXVsxK3Z0XSxhLHIwKSxIKSxWMD16ZShvKGFbMV1bMStadF0sYSxyMCksJCksTnI9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT1qMCYmJD09PVYwJiZPPT09TnI/bTpbMCxyMCxtWzJdLFYwLGowLE5yXX1mdW5jdGlvbiBCbmUoYSxGLG0pe3ZhciBPPW1bNF0sSD1tWzNdLCQ9bVsyXSxyMD1tWzFdLGowPW8oYVsxXVsxK19yXSxhLHIwKSxWMD11cihhWzFdWzErZHVdLGEsSCE9PTA/MTowLCQpLE5yPXUoYVsxXVsxK1d1XSxhKSxHcj16ZShmdW5jdGlvbihfZSl7cmV0dXJuIF91KE5yLF9lKX0sSCksRmU9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIHIwPT09ajAmJiQ9PT1WMCYmSD09PUdyJiZPPT09RmU/bTpbMCxqMCxWMCxHcixGZV19ZnVuY3Rpb24gcW5lKGEsRixtKXt2YXIgTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK09yXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP206WzAsJCxyMF19ZnVuY3Rpb24gVW5lKGEsRixtKXtyZXR1cm4gbyhhWzFdWzErT3JdLGEsbSl9ZnVuY3Rpb24gSG5lKGEsRixtKXt2YXIgTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK25uXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP206WzAsJCxyMF19ZnVuY3Rpb24gWG5lKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErbm5dLGEsSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/RjpbMCxGWzFdLFswLCQscjBdXX1mdW5jdGlvbiBZbmUoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBPPT09SD9GOlswLEZbMV0sWzAsbVsxXSxIXV19ZnVuY3Rpb24gVm5lKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK0huXSxhLEYsbSl9ZnVuY3Rpb24gem5lKGEsRixtKXt2YXIgTz1tWzVdLEg9bVs0XSwkPW1bM10scjA9bVsyXSxqMD1tWzFdLFYwPW8oYVsxXVsxK1ZjXSxhLGowKSxOcj16ZSh1KGFbMV1bMStWXSxhKSxyMCksR3I9dShhWzFdWzErb3VdLGEpLEZlPVVuKGZ1bmN0aW9uKHluKXtyZXR1cm4gX3UoR3IseW4pfSwkKSxfZT1fdSh1KGFbMV1bMStxcl0sYSksSCksRG49byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIFYwPT09ajAmJk5yPT09cjAmJkZlPT09JCYmX2U9PT1IJiZEbj09PU8/bTpbMCxWMCxOcixGZSxfZSxEbl19ZnVuY3Rpb24gS25lKGEsRil7cmV0dXJuIG8oYVsxXVsxK2swXSxhLEYpfWZ1bmN0aW9uIFduZShhLEYpe3JldHVybiBvKGFbMV1bMStrMF0sYSxGKX1mdW5jdGlvbiBKbmUoYSxGKXtyZXR1cm4gbyhhWzFdWzErbHRdLGEsRil9ZnVuY3Rpb24gJG5lKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gTz09PUg/RjpbMCxGWzFdLFswLG1bMV0sSF1dfWZ1bmN0aW9uIFpuZShhLEYsbSl7cmV0dXJuIG19ZnVuY3Rpb24gUW5lKGEsRil7cmV0dXJuIHVyKGFbMV1bMStMMF0sYSxmNnIsRil9ZnVuY3Rpb24gcnRlKGEsRil7dmFyIG09RlsxXTtmdW5jdGlvbiBPKCQpe3JldHVyblswLG0sJF19dmFyIEg9RlsyXTtyZXR1cm4gdGUodShhWzFdWzEremldLGEpLG0sSCxGLE8pfWZ1bmN0aW9uIGV0ZShhLEYpe2lmKEZbMF09PT0wKXt2YXIgbT1mdW5jdGlvbihyMCl7cmV0dXJuWzAscjBdfSxPPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK3h0XSxhKSxPLEYsbSl9ZnVuY3Rpb24gSChyMCl7cmV0dXJuWzEscjBdfXZhciAkPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK25uXSxhKSwkLEYsSCl9ZnVuY3Rpb24gbnRlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErTGVdLGEsSCkscjA9emUodShhWzFdWzErbm5dLGEpLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gdHRlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErbF0sYSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PUgmJnIwPT09Tz9GOlswLEZbMV0sWzAsJCxyMF1dfWZ1bmN0aW9uIHV0ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1Vbih1KGFbMV1bMStIZV0sYSksJCksVjA9emUodShhWzFdWzErYnRdLGEpLEgpLE5yPXplKHUoYVsxXVsxK1c3XSxhKSxyMCksR3I9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuICQ9PT1qMCYmSD09PVYwJiZPPT09R3ImJnIwPT09TnI/RjpbMCxGWzFdLFswLE5yLGowLFYwLEdyXV19ZnVuY3Rpb24gaXRlKGEsRixtKXt2YXIgTz1tWzldLEg9bVs4XSwkPW1bN10scjA9bVs2XSxqMD1tWzNdLFYwPW1bMl0sTnI9bVsxXSxHcj16ZSh1KGFbMV1bMStoZV0sYSksTnIpLEZlPW8oYVsxXVsxK0IwXSxhLFYwKSxfZT1vKGFbMV1bMSt4MF0sYSwkKSxEbj1vKGFbMV1bMStmdF0sYSxqMCkseW49emUodShhWzFdWzErSXJdLGEpLHIwKSxvdD16ZSh1KGFbMV1bMStWXSxhKSxIKSxwdD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gTnI9PT1HciYmVjA9PT1GZSYmajA9PT1EbiYmcjA9PT15biYmJD09PV9lJiZIPT09b3QmJk89PT1wdD9tOlswLEdyLEZlLERuLG1bNF0sbVs1XSx5bixfZSxvdCxwdCxtWzEwXV19ZnVuY3Rpb24gZnRlKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK2puXSxhLEYsbSl9ZnVuY3Rpb24geHRlKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK21lXSxhLEYsbSl9ZnVuY3Rpb24gb3RlKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK2puXSxhLEYsbSl9ZnVuY3Rpb24gYXRlKGEsRil7aWYoRlswXT09PTApcmV0dXJuIEY7dmFyIG09RlsxXSxPPW8oYVsxXVsxK2xdLGEsbSk7cmV0dXJuIE89PT1tP0Y6WzEsT119ZnVuY3Rpb24gY3RlKGEsRil7dmFyIG09RlsxXTtmdW5jdGlvbiBPKCQpe3JldHVyblswLG0sJF19dmFyIEg9RlsyXTtyZXR1cm4gZWUodShhWzFdWzErdDBdLGEpLEgsRixPKX1mdW5jdGlvbiBzdGUoYSxGKXt2YXIgbT1GWzJdLE89RlsxXTtzd2l0Y2gobVswXSl7Y2FzZSAwOnZhciBIPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFswLFplXV19LCQ9bVsxXTtyZXR1cm4gZWUodShhWzFdWzErczBdLGEpLCQsRixIKTtjYXNlIDE6dmFyIHIwPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsxLFplXV19LGowPW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxqMCxGLHIwKTtjYXNlIDI6dmFyIFYwPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsyLFplXV19LE5yPW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxOcixGLFYwKTtjYXNlIDM6dmFyIEdyPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFszLFplXV19LEZlPW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxGZSxGLEdyKTtjYXNlIDQ6dmFyIF9lPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFs0LFplXV19LERuPW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxEbixGLF9lKTtjYXNlIDU6dmFyIHluPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFs1LFplXV19LG90PW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxvdCxGLHluKTtjYXNlIDY6dmFyIHB0PWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFs2LFplXV19LGt0PW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxrdCxGLHB0KTtjYXNlIDc6dmFyIEtuPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFs3LFplXV19LFF0PW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxRdCxGLEtuKTtjYXNlIDg6dmFyIEo3PWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFs4LFplXV19LCQ3PW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSwkNyxGLEo3KTtjYXNlIDk6dmFyIEU3PWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFs5LFplXV19LFo3PW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3MwXSxhKSxaNyxGLEU3KTtjYXNlIDEwOnZhciBRNz1mdW5jdGlvbihaZSl7cmV0dXJuWzAsTyxbMTAsWmVdXX0scmk9bVsxXTtyZXR1cm4gZWUodShhWzFdWzErczBdLGEpLHJpLEYsUTcpO2Nhc2UgMTE6dmFyIGVpPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsxMSxaZV1dfSxuaT1tWzFdO3JldHVybiBlZSh1KGFbMV1bMStrXSxhKSxuaSxGLGVpKTtjYXNlIDEyOnZhciBXaT1mdW5jdGlvbihaZSl7cmV0dXJuWzAsTyxbMTIsWmVdXX0sdHY9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErYTddLGEpLE8sdHYsRixXaSk7Y2FzZSAxMzp2YXIgdXY9ZnVuY3Rpb24oWmUpe3JldHVyblswLE8sWzEzLFplXV19LEppPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3FyXSxhKSxPLEppLEYsdXYpO2Nhc2UgMTQ6dmFyIGl2PWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsxNCxaZV1dfSxHYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStfbl0sYSksTyxHYixGLGl2KTtjYXNlIDE1OnZhciBNYj1mdW5jdGlvbihaZSl7cmV0dXJuWzAsTyxbMTUsWmVdXX0sQmI9bVsxXTtyZXR1cm4gZWUodShhWzFdWzErWnNdLGEpLEJiLEYsTWIpO2Nhc2UgMTY6dmFyIHFiPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsxNixaZV1dfSxVYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStvdV0sYSksTyxVYixGLHFiKTtjYXNlIDE3OnZhciBIYj1mdW5jdGlvbihaZSl7cmV0dXJuWzAsTyxbMTcsWmVdXX0sWGI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErRm5dLGEpLE8sWGIsRixIYik7Y2FzZSAxODp2YXIgWWI9ZnVuY3Rpb24oWmUpe3JldHVyblswLE8sWzE4LFplXV19LFZiPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3ZyXSxhKSxPLFZiLEYsWWIpO2Nhc2UgMTk6dmFyIHpiPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsxOSxaZV1dfSxLYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStkXSxhKSxPLEtiLEYsemIpO2Nhc2UgMjA6dmFyIFdiPWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsyMCxaZV1dfSxKYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStlbl0sYSksTyxKYixGLFdiKTtjYXNlIDIxOnZhciAkYj1mdW5jdGlvbihaZSl7cmV0dXJuWzAsTyxbMjEsWmVdXX0sWmI9bVsxXTtyZXR1cm4gZWUodShhWzFdWzErR10sYSksWmIsRiwkYik7Y2FzZSAyMjp2YXIgUWI9ZnVuY3Rpb24oWmUpe3JldHVyblswLE8sWzIyLFplXV19LHI0PW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK28wXSxhKSxyNCxGLFFiKTtjYXNlIDIzOnZhciBlND1mdW5jdGlvbihaZSl7cmV0dXJuWzAsTyxbMjMsWmVdXX0sbjQ9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErTHJdLGEpLE8sbjQsRixlNCk7Y2FzZSAyNDp2YXIgdDQ9ZnVuY3Rpb24oWmUpe3JldHVyblswLE8sWzI0LFplXV19LHU0PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK19dLGEpLE8sdTQsRix0NCk7Y2FzZSAyNTp2YXIgaTQ9ZnVuY3Rpb24oWmUpe3JldHVyblswLE8sWzI1LFplXV19LGY0PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3AyXSxhKSxPLGY0LEYsaTQpO2RlZmF1bHQ6dmFyIHg0PWZ1bmN0aW9uKFplKXtyZXR1cm5bMCxPLFsyNixaZV1dfSxvND1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStmX10sYSksTyxvNCxGLHg0KX19ZnVuY3Rpb24gdnRlKGEsRixtKXt2YXIgTz1tWzJdLEg9bVsxXSwkPUhbM10scjA9SFsyXSxqMD1IWzFdLFYwPW8oYVsxXVsxK3QwXSxhLGowKSxOcj1vKGFbMV1bMSt0MF0sYSxyMCksR3I9VW4odShhWzFdWzErdDBdLGEpLCQpLEZlPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBWMD09PWowJiZOcj09PXIwJiZHcj09PSQmJkZlPT09Tz9tOlswLFswLFYwLE5yLEdyXSxGZV19ZnVuY3Rpb24gbHRlKGEsRixtKXt2YXIgTz1tWzJdLEg9bVsxXSwkPUhbM10scjA9SFsyXSxqMD1IWzFdLFYwPW8oYVsxXVsxK3QwXSxhLGowKSxOcj1vKGFbMV1bMSt0MF0sYSxyMCksR3I9VW4odShhWzFdWzErdDBdLGEpLCQpLEZlPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBWMD09PWowJiZOcj09PXIwJiZHcj09PSQmJkZlPT09Tz9tOlswLFswLFYwLE5yLEdyXSxGZV19ZnVuY3Rpb24gYnRlKGEsRil7dmFyIG09RlsyXSxPPUZbMV0sSD1vKGFbMV1bMSt0MF0sYSxPKSwkPW8oYVsxXVsxK3MwXSxhLG0pO3JldHVybiBPPT09SCYmbT09PSQ/RjpbMCxILCRdfWZ1bmN0aW9uIHB0ZShhLEYpe3ZhciBtPUZbMl0sTz1GWzFdLEg9VW4odShhWzFdWzErdDBdLGEpLE8pLCQ9byhhWzFdWzErczBdLGEsbSk7cmV0dXJuIE89PT1IJiZtPT09JD9GOlswLEgsJF19ZnVuY3Rpb24gbXRlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErS10sYSxIKSxyMD1vKGFbMV1bMStTXSxhLE8pO3JldHVybiAkPT09SCYmcjA9PT1PP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gX3RlKGEsRil7cmV0dXJuIG8oYVsxXVsxK2x0XSxhLEYpfWZ1bmN0aW9uIHl0ZShhLEYpe3JldHVybiBvKGFbMV1bMStsdF0sYSxGKX1mdW5jdGlvbiBodGUoYSxGKXtpZihGWzBdPT09MCl7dmFyIG09ZnVuY3Rpb24ocjApe3JldHVyblswLHIwXX0sTz1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStNXSxhKSxPLEYsbSl9ZnVuY3Rpb24gSChyMCl7cmV0dXJuWzEscjBdfXZhciAkPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK0FdLGEpLCQsRixIKX1mdW5jdGlvbiBkdGUoYSxGKXt2YXIgbT1GWzJdLE89RlsxXSxIPW8oYVsxXVsxK0tdLGEsTyksJD1vKGFbMV1bMStzMF0sYSxtKTtyZXR1cm4gTz09PUgmJm09PT0kP0Y6WzAsSCwkXX1mdW5jdGlvbiBrdGUoYSxGKXt2YXIgbT1GWzJdLE89RlsxXSxIPW8oYVsxXVsxK3QwXSxhLE8pLCQ9byhhWzFdWzErczBdLGEsbSk7cmV0dXJuIE89PT1IJiZtPT09JD9GOlswLEgsJF19ZnVuY3Rpb24gd3RlKGEsRixtKXt2YXIgTz1tWzJdLEg9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIE89PT1IP206WzAsbVsxXSxIXX1mdW5jdGlvbiBFdGUoYSxGLG0pe3ZhciBPPW1bM10sSD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gTz09PUg/bTpbMCxtWzFdLG1bMl0sSF19ZnVuY3Rpb24gU3RlKGEsRixtKXt2YXIgTz1tWzNdLEg9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIE89PT1IP206WzAsbVsxXSxtWzJdLEhdfWZ1bmN0aW9uIGd0ZShhLEYsbSl7dmFyIE89bVszXSxIPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBPPT09SD9tOlswLG1bMV0sbVsyXSxIXX1mdW5jdGlvbiBGdGUoYSxGLG0pe3ZhciBPPW1bMV0sSD11cihhWzFdWzErRm5dLGEsRixPKTtyZXR1cm4gSD09PU8/bTpbMCxILG1bMl1dfWZ1bmN0aW9uIFR0ZShhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPW8oYVsxXVsxK3QwXSxhLCQpLGowPW8oYVsxXVsxK3QwXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiByMD09PSQmJmowPT09SCYmVjA9PT1PP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIE90ZShhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPW8oYVsxXVsxK0s3XSxhLCQpLGowPXplKHUoYVsxXVsxK2UwXSxhKSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gcjA9PT0kJiZqMD09PUgmJlYwPT09Tz9tOlswLHIwLGowLFYwXX1mdW5jdGlvbiBJdGUoYSxGKXt2YXIgbT1GWzJdLE89bVs0XSxIPW1bM10sJD1tWzJdLHIwPW1bMV0sajA9byhhWzFdWzEreDBdLGEsJCksVjA9byhhWzFdWzErY10sYSxIKSxOcj16ZSh1KGFbMV1bMSt0MF0sYSksTyksR3I9byhhWzFdWzErVmNdLGEscjApO3JldHVybiBHcj09PXIwJiZqMD09PSQmJlYwPT09SCYmTnI9PT1PP0Y6WzAsRlsxXSxbMCxHcixqMCxWMCxOcl1dfWZ1bmN0aW9uIEF0ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPVVuKHUoYVsxXVsxK2YwXSxhKSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PUgmJnIwPT09Tz9GOlswLEZbMV0sWzAsJCxyMF1dfWZ1bmN0aW9uIE50ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPVVuKHUoYVsxXVsxK3QwXSxhKSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9GOlswLEZbMV0sWzAsJCxyMF1dfWZ1bmN0aW9uIEN0ZShhLEYpe3JldHVybiB6ZSh1KGFbMV1bMStzXSxhKSxGKX1mdW5jdGlvbiBQdGUoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBPPT09SD9GOlswLEZbMV0sWzAsbVsxXSxIXV19ZnVuY3Rpb24gRHRlKGEsRil7cmV0dXJuIG8oYVsxXVsxK2x0XSxhLEYpfWZ1bmN0aW9uIEx0ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK0s3XSxhLEgpLHIwPW8oYVsxXVsxK1ldLGEsTyk7cmV0dXJuICQ9PT1IJiZyMD09PU8/RjpbMCxGWzFdLFswLCQscjBdXX1mdW5jdGlvbiBSdGUoYSxGKXtpZihGWzBdPT09MCl7dmFyIG09ZnVuY3Rpb24ocjApe3JldHVyblswLHIwXX0sTz1GWzFdO3JldHVybiBlZSh1KGFbMV1bMSttMF0sYSksTyxGLG0pfWZ1bmN0aW9uIEgocjApe3JldHVyblsxLHIwXX12YXIgJD1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStCdV0sYSksJCxGLEgpfWZ1bmN0aW9uIGp0ZShhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPXUoYVsxXVsxK291XSxhKSxqMD1VbihmdW5jdGlvbihHcil7cmV0dXJuIF91KHIwLEdyKX0sSCksVjA9X3UodShhWzFdWzErcXJdLGEpLCQpLE5yPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBqMD09PUgmJlYwPT09JCYmTz09PU5yP206WzAsVjAsajAsTnJdfWZ1bmN0aW9uIEd0ZShhLEYsbSl7dmFyIE89bVs0XSxIPW1bM10sJD1VbihmdW5jdGlvbihqMCl7c3dpdGNoKGowWzBdKXtjYXNlIDA6dmFyIFYwPWZ1bmN0aW9uKEtuKXtyZXR1cm5bMCxLbl19LE5yPWowWzFdO3JldHVybiBlZSh1KGFbMV1bMStuZV0sYSksTnIsajAsVjApO2Nhc2UgMTp2YXIgR3I9ZnVuY3Rpb24oS24pe3JldHVyblsxLEtuXX0sRmU9ajBbMV07cmV0dXJuIGVlKHUoYVsxXVsxK2pyXSxhKSxGZSxqMCxHcik7Y2FzZSAyOnZhciBfZT1mdW5jdGlvbihLbil7cmV0dXJuWzIsS25dfSxEbj1qMFsxXTtyZXR1cm4gZWUodShhWzFdWzErZ2VdLGEpLERuLGowLF9lKTtjYXNlIDM6dmFyIHluPWZ1bmN0aW9uKEtuKXtyZXR1cm5bMyxLbl19LG90PWowWzFdO3JldHVybiBlZSh1KGFbMV1bMStxMF0sYSksb3QsajAseW4pO2RlZmF1bHQ6dmFyIHB0PWZ1bmN0aW9uKEtuKXtyZXR1cm5bNCxLbl19LGt0PWowWzFdO3JldHVybiBlZSh1KGFbMV1bMStjZV0sYSksa3QsajAscHQpfX0sSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuICQ9PT1IJiZPPT09cjA/bTpbMCxtWzFdLG1bMl0sJCxyMF19ZnVuY3Rpb24gTXRlKGEsRil7dmFyIG09RlsyXSxPPW1bM10sSD1tWzFdLCQ9SFsyXSxyMD1IWzFdLGowPXVyKGFbMV1bMSthN10sYSxyMCwkKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PWowJiZPPT09VjA/RjpbMCxGWzFdLFswLFswLHIwLGowXSxtWzJdLFYwXV19ZnVuY3Rpb24gQnRlKGEsRil7dmFyIG09RlsyXSxPPW1bNl0sSD1tWzJdLCQ9bVsxXSxyMD1vKGFbMV1bMStsdF0sYSwkKSxqMD1vKGFbMV1bMSt0MF0sYSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZIPT09ajAmJk89PT1WMD9GOlswLEZbMV0sWzAscjAsajAsbVszXSxtWzRdLG1bNV0sVjBdXX1mdW5jdGlvbiBxdGUoYSxGKXt2YXIgbT1GWzJdLE89bVs2XSxIPW1bNV0sJD1tWzNdLHIwPW1bMl0sajA9byhhWzFdWzErdDBdLGEscjApLFYwPW8oYVsxXVsxK3QwXSxhLCQpLE5yPW8oYVsxXVsxK2NdLGEsSCksR3I9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIGowPT09cjAmJlYwPT09JCYmTnI9PT1IJiZHcj09PU8/RjpbMCxGWzFdLFswLG1bMV0sajAsVjAsbVs0XSxOcixHcl1dfWZ1bmN0aW9uIFV0ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK3QwXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09SCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gSHRlKGEsRil7dmFyIG09RlsyXSxPPW1bOF0sSD1tWzddLCQ9bVsyXSxyMD1tWzFdLGowPW8oYVsxXVsxK29lXSxhLHIwKSxWMD1vKGFbMV1bMSskcl0sYSwkKSxOcj1vKGFbMV1bMStjXSxhLEgpLEdyPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBqMD09PXIwJiZWMD09PSQmJk5yPT09SCYmR3I9PT1PP0Y6WzAsRlsxXSxbMCxqMCxWMCxtWzNdLG1bNF0sbVs1XSxtWzZdLE5yLEdyXV19ZnVuY3Rpb24gWHRlKGEsRil7dmFyIG09RlsxXTtmdW5jdGlvbiBPKCQpe3JldHVyblswLG0sJF19dmFyIEg9RlsyXTtyZXR1cm4gdGUodShhWzFdWzErYTddLGEpLG0sSCxGLE8pfWZ1bmN0aW9uIFl0ZShhLEYpe3ZhciBtPUZbMV07ZnVuY3Rpb24gTygkKXtyZXR1cm5bMCxtLCRdfXZhciBIPUZbMl07cmV0dXJuIHRlKHUoYVsxXVsxK2E3XSxhKSxtLEgsRixPKX1mdW5jdGlvbiBWdGUoYSxGKXtzd2l0Y2goRlswXSl7Y2FzZSAwOnZhciBtPWZ1bmN0aW9uKFYwKXtyZXR1cm5bMCxWMF19LE89RlsxXTtyZXR1cm4gZWUodShhWzFdWzErdDBdLGEpLE8sRixtKTtjYXNlIDE6dmFyIEg9ZnVuY3Rpb24oVjApe3JldHVyblsxLFYwXX0sJD1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStCcl0sYSksJCxGLEgpO2RlZmF1bHQ6dmFyIHIwPWZ1bmN0aW9uKFYwKXtyZXR1cm5bMixWMF19LGowPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK01yXSxhKSxqMCxGLHIwKX19ZnVuY3Rpb24genRlKGEsRil7cmV0dXJuIG8oYVsxXVsxK2x0XSxhLEYpfWZ1bmN0aW9uIEt0ZShhLEYsbSl7dmFyIE89bVs0XSxIPW1bM10sJD1tWzJdLHIwPSRbMl0sajA9cjBbNF0sVjA9cjBbM10sTnI9cjBbMl0sR3I9cjBbMV0sRmU9bVsxXSxfZT16ZSh1KGFbMV1bMStIY10sYSksR3IpLERuPVVuKHUoYVsxXVsxK0QwXSxhKSxOcikseW49emUodShhWzFdWzErVXRdLGEpLFYwKSxvdD1vKGFbMV1bMSt0MF0sYSxIKSxwdD16ZSh1KGFbMV1bMStWXSxhKSxGZSksa3Q9byhhWzFdWzErczBdLGEsTyksS249byhhWzFdWzErczBdLGEsajApO3JldHVybiBEbj09PU5yJiZ5bj09PVYwJiZvdD09PUgmJnB0PT09RmUmJmt0PT09TyYmS249PT1qMCYmX2U9PT1Hcj9tOlswLHB0LFswLCRbMV0sWzAsX2UsRG4seW4sS25dXSxvdCxrdF19ZnVuY3Rpb24gV3RlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErbF0sYSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PUgmJnIwPT09Tz9GOlswLEZbMV0sWzAsJCxyMF1dfWZ1bmN0aW9uIEp0ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK0QwXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09SCYmcjA9PT1PP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gJHRlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErdDBdLGEsTykscjA9emUodShhWzFdWzErbHRdLGEpLEgpO3JldHVybiAkPT09TyYmcjA9PT1IP0Y6WzAsRlsxXSxbMCxyMCwkLG1bM11dXX1mdW5jdGlvbiBadGUoYSxGKXt2YXIgbT1GWzFdO2Z1bmN0aW9uIE8oJCl7cmV0dXJuWzAsbSwkXX12YXIgSD1GWzJdO3JldHVybiB0ZSh1KGFbMV1bMStUXSxhKSxtLEgsRixPKX1mdW5jdGlvbiBRdGUoYSxGKXtpZihGWzBdPT09MCl7dmFyIG09ZnVuY3Rpb24ocjApe3JldHVyblswLHIwXX0sTz1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStUaV0sYSksTyxGLG0pfWZ1bmN0aW9uIEgocjApe3JldHVyblsxLHIwXX12YXIgJD1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStubl0sYSksJCxGLEgpfWZ1bmN0aW9uIHJ1ZShhLEYsbSl7dmFyIE89bVs1XSxIPW1bNF0sJD1tWzNdLHIwPW1bMl0sajA9bVsxXSxWMD16ZSh1KGFbMV1bMSt1dF0sYSksajApLE5yPXplKHUoYVsxXVsxK19yXSxhKSxyMCksR3I9emUodShhWzFdWzErbm5dLGEpLCQpLEZlPW8oYVsxXVsxK09yXSxhLEgpLF9lPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBqMD09PVYwJiZyMD09PU5yJiYkPT09R3ImJkg9PT1GZSYmTz09PV9lP206WzAsVjAsTnIsR3IsRmUsX2VdfWZ1bmN0aW9uIGV1ZShhLEYpe3ZhciBtPUZbMV07ZnVuY3Rpb24gTygkKXtyZXR1cm5bMCxtLCRdfXZhciBIPUZbMl07cmV0dXJuIHRlKHUoYVsxXVsxK1RdLGEpLG0sSCxGLE8pfWZ1bmN0aW9uIG51ZShhLEYpe2lmKEZbMF09PT0wKXt2YXIgbT1mdW5jdGlvbihyMCl7cmV0dXJuWzAscjBdfSxPPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK2l0XSxhKSxPLEYsbSl9ZnVuY3Rpb24gSChyMCl7cmV0dXJuWzEscjBdfXZhciAkPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK1R0XSxhKSwkLEYsSCl9ZnVuY3Rpb24gdHVlKGEsRixtKXt2YXIgTz1tWzVdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1vKGFbMV1bMSt4bl0sYSxyMCksVjA9byhhWzFdWzErbm5dLGEsJCksTnI9byhhWzFdWzErT3JdLGEsSCksR3I9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIHIwPT09ajAmJiQ9PT1WMCYmSD09PU5yJiZPPT09R3I/bTpbMCxqMCxWMCxOcixtWzRdLEdyXX1mdW5jdGlvbiB1dWUoYSxGKXt2YXIgbT1GWzFdO2Z1bmN0aW9uIE8oJCl7cmV0dXJuWzAsbSwkXX12YXIgSD1GWzJdO3JldHVybiB0ZSh1KGFbMV1bMStUXSxhKSxtLEgsRixPKX1mdW5jdGlvbiBpdWUoYSxGKXtpZihGWzBdPT09MCl7dmFyIG09ZnVuY3Rpb24ocjApe3JldHVyblswLHIwXX0sTz1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStIc10sYSksTyxGLG0pfWZ1bmN0aW9uIEgocjApe3JldHVyblsxLHIwXX12YXIgJD1GWzFdO3JldHVybiBlZSh1KGFbMV1bMStWaV0sYSksJCxGLEgpfWZ1bmN0aW9uIGZ1ZShhLEYsbSl7dmFyIE89bVs1XSxIPW1bM10sJD1tWzJdLHIwPW1bMV0sajA9byhhWzFdWzEraHNdLGEscjApLFYwPW8oYVsxXVsxK25uXSxhLCQpLE5yPW8oYVsxXVsxK09yXSxhLEgpLEdyPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiByMD09PWowJiYkPT09VjAmJkg9PT1OciYmTz09PUdyP206WzAsajAsVjAsTnIsbVs0XSxHcl19ZnVuY3Rpb24geHVlKGEsRil7aWYoRlswXT09PTApe3ZhciBtPWZ1bmN0aW9uKHIwKXtyZXR1cm5bMCxyMF19LE89RlsxXTtyZXR1cm4gZWUodShhWzFdWzErbm5dLGEpLE8sRixtKX1mdW5jdGlvbiBIKHIwKXtyZXR1cm5bMSxyMF19dmFyICQ9RlsxXTtyZXR1cm4gZWUodShhWzFdWzErUnJdLGEpLCQsRixIKX1mdW5jdGlvbiBvdWUoYSxGLG0pe3ZhciBPPW1bM10sSD1tWzFdLCQ9byhhWzFdWzErbm5dLGEsSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/bTpbMCwkLG1bMl0scjBdfWZ1bmN0aW9uIGF1ZShhLEYpe2lmKEZbMF09PT0wKXt2YXIgbT1GWzFdLE89VW4odShhWzFdWzErVnNdLGEpLG0pO3JldHVybiBtPT09Tz9GOlswLE9dfXZhciBIPUZbMV0sJD1vKGFbMV1bMStxOV0sYSxIKTtyZXR1cm4gSD09PSQ/RjpbMSwkXX1mdW5jdGlvbiBjdWUoYSxGKXt2YXIgbT1GWzJdLE89emUodShhWzFdWzErbHRdLGEpLG0pO3JldHVybiBtPT09Tz9GOlswLEZbMV0sT119ZnVuY3Rpb24gc3VlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErbHRdLGEsSCkscjA9emUodShhWzFdWzErbHRdLGEpLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gdnVlKGEsRixtKXt2YXIgTz1tWzVdLEg9bVsyXSwkPW1bMV0scjA9emUodShhWzFdWzErc2ldLGEpLEgpLGowPXplKHUoYVsxXVsxK09yXSxhKSwkKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PXIwJiYkPT09ajAmJk89PT1WMD9tOlswLGowLHIwLG1bM10sbVs0XSxWMF19ZnVuY3Rpb24gbHVlKGEsRil7aWYoRlswXT09PTApe3ZhciBtPWZ1bmN0aW9uKHIwKXtyZXR1cm5bMCxyMF19LE89RlsxXTtyZXR1cm4gZWUodShhWzFdWzErT3JdLGEpLE8sRixtKX1mdW5jdGlvbiBIKHIwKXtyZXR1cm5bMSxyMF19dmFyICQ9RlsxXTtyZXR1cm4gZWUodShhWzFdWzErbm5dLGEpLCQsRixIKX1mdW5jdGlvbiBidWUoYSxGLG0pe3ZhciBPPW1bM10sSD1tWzJdLCQ9byhhWzFdWzErTTldLGEsSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuICQ9PT1IJiZyMD09PU8/bTpbMCxtWzFdLCQscjBdfWZ1bmN0aW9uIHB1ZShhLEYpe3JldHVybiBvKGFbMV1bMStsdF0sYSxGKX1mdW5jdGlvbiBtdWUoYSxGKXt2YXIgbT1GWzJdLE89bVsxXSxIPW8oYVsxXVsxK0gxXSxhLE8pO3JldHVybiBPPT09SD9GOlswLEZbMV0sWzAsSCxtWzJdXV19ZnVuY3Rpb24gX3VlKGEsRil7dmFyIG09RlsyXSxPPW1bMV0sSD1vKGFbMV1bMStIMV0sYSxPKTtyZXR1cm4gTz09PUg/RjpbMCxGWzFdLFswLEgsbVsyXV1dfWZ1bmN0aW9uIHl1ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzFdLEg9byhhWzFdWzErSDFdLGEsTyk7cmV0dXJuIE89PT1IP0Y6WzAsRlsxXSxbMCxILG1bMl1dXX1mdW5jdGlvbiBodWUoYSxGKXt2YXIgbT1GWzJdWzFdLE89byhhWzFdWzErSDFdLGEsbSk7cmV0dXJuIG09PT1PP0Y6WzAsRlsxXSxbMCxPXV19ZnVuY3Rpb24gZHVlKGEsRil7dmFyIG09RlszXSxPPUZbMV0sSD1Vbih1KGFbMV1bMSt2aV0sYSksTyksJD1vKGFbMV1bMStzMF0sYSxtKTtyZXR1cm4gTz09PUgmJm09PT0kP0Y6WzAsSCxGWzJdLCRdfWZ1bmN0aW9uIGt1ZShhLEYpe3ZhciBtPUZbNF0sTz1GWzFdO2lmKE9bMF09PT0wKXZhciBIPWZ1bmN0aW9uKF9lKXtyZXR1cm5bMCxfZV19LCQ9T1sxXSxyMD11KGFbMV1bMSt2aV0sYSksR3I9ZWUoZnVuY3Rpb24oX2Upe3JldHVybiBVbihyMCxfZSl9LCQsTyxIKTtlbHNlIHZhciBqMD1mdW5jdGlvbihfZSl7cmV0dXJuWzEsX2VdfSxWMD1PWzFdLE5yPXUoYVsxXVsxK3MyXSxhKSxHcj1lZShmdW5jdGlvbihfZSl7cmV0dXJuIFVuKE5yLF9lKX0sVjAsTyxqMCk7dmFyIEZlPW8oYVsxXVsxK3MwXSxhLG0pO3JldHVybiBPPT09R3ImJm09PT1GZT9GOlswLEdyLEZbMl0sRlszXSxGZV19ZnVuY3Rpb24gd3VlKGEsRil7dmFyIG09Rls0XSxPPUZbMV0sSD1Vbih1KGFbMV1bMStIOV0sYSksTyksJD1vKGFbMV1bMStzMF0sYSxtKTtyZXR1cm4gTz09PUgmJm09PT0kP0Y6WzAsSCxGWzJdLEZbM10sJF19ZnVuY3Rpb24gRXVlKGEsRil7dmFyIG09Rls0XSxPPUZbMV0sSD1Vbih1KGFbMV1bMStjYl0sYSksTyksJD1vKGFbMV1bMStzMF0sYSxtKTtyZXR1cm4gTz09PUgmJm09PT0kP0Y6WzAsSCxGWzJdLEZbM10sJF19ZnVuY3Rpb24gU3VlKGEsRil7dmFyIG09RlsyXSxPPUZbMV07c3dpdGNoKG1bMF0pe2Nhc2UgMDp2YXIgSD1mdW5jdGlvbihfZSl7cmV0dXJuWzAsTyxbMCxfZV1dfSwkPW1bMV07cmV0dXJuIGVlKHUoYVsxXVsxK3NiXSxhKSwkLEYsSCk7Y2FzZSAxOnZhciByMD1mdW5jdGlvbihfZSl7cmV0dXJuWzAsTyxbMSxfZV1dfSxqMD1tWzFdO3JldHVybiBlZSh1KGFbMV1bMStYOV0sYSksajAsRixyMCk7Y2FzZSAyOnZhciBWMD1mdW5jdGlvbihfZSl7cmV0dXJuWzAsTyxbMixfZV1dfSxOcj1tWzFdO3JldHVybiBlZSh1KGFbMV1bMStVOV0sYSksTnIsRixWMCk7ZGVmYXVsdDp2YXIgR3I9ZnVuY3Rpb24oX2Upe3JldHVyblswLE8sWzMsX2VdXX0sRmU9bVsxXTtyZXR1cm4gZWUodShhWzFdWzErenNdLGEpLEZlLEYsR3IpfX1mdW5jdGlvbiBndWUoYSxGLG0pe3ZhciBPPW1bM10sSD1tWzJdLCQ9bVsxXSxyMD11cihhWzFdWzErTDBdLGEsaTZyLCQpLGowPW8oYVsxXVsxK1k5XSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIEZ1ZShhLEYsbSl7dmFyIE89bVsxXSxIPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBPPT09SD9tOlswLEhdfWZ1bmN0aW9uIFR1ZShhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPW8oYVsxXVsxK09yXSxhLCQpLGowPW8oYVsxXVsxK19yXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIE91ZShhLEYsbSl7dmFyIE89bVszXSxIPW1bMl0sJD1tWzFdLHIwPXVyKGFbMV1bMStMMF0sYSx1NnIsJCksajA9byhhWzFdWzErbF0sYSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gcjA9PT0kJiZqMD09PUgmJlYwPT09Tz9tOlswLHIwLGowLFYwXX1mdW5jdGlvbiBJdWUoYSxGLG0pe3JldHVybiB1cihhWzFdWzErYzBdLGEsRixtKX1mdW5jdGlvbiBBdWUoYSxGLG0pe3ZhciBPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErbF0sYSxIKSxyMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gSD09PSQmJk89PT1yMD9tOlswLCQscjBdfWZ1bmN0aW9uIE51ZShhLEYsbSl7dmFyIE89bVs0XSxIPW1bMl0sJD1fdSh1KGFbMV1bMSt6aV0sYSksSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuICQ9PT1IJiZPPT09cjA/bTpbMCxtWzFdLCQsbVszXSxyMF19ZnVuY3Rpb24gQ3VlKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK0huXSxhLEYsbSl9ZnVuY3Rpb24gUHVlKGEsRixtKXt2YXIgTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1vKGFbMV1bMStoZV0sYSxyMCksVjA9byhhWzFdWzErbF0sYSwkKSxOcj16ZSh1KGFbMV1bMStJcl0sYSksSCksR3I9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIGowPT09cjAmJlYwPT09JCYmTnI9PT1IJiZHcj09PU8/bTpbMCxqMCxWMCxOcixHcl19ZnVuY3Rpb24gRHVlKGEsRil7c3dpdGNoKEZbMF0pe2Nhc2UgMDp2YXIgbT1GWzFdLE89bVsyXSxIPW1bMV0sJD11cihhWzFdWzErdmJdLGEsSCxPKTtyZXR1cm4gJD09PU8/RjpbMCxbMCxILCRdXTtjYXNlIDE6dmFyIHIwPUZbMV0sajA9cjBbMl0sVjA9cjBbMV0sTnI9dXIoYVsxXVsxK2xiXSxhLFYwLGowKTtyZXR1cm4gTnI9PT1qMD9GOlsxLFswLFYwLE5yXV07Y2FzZSAyOnZhciBHcj1GWzFdLEZlPUdyWzJdLF9lPUdyWzFdLERuPXVyKGFbMV1bMSt2Ml0sYSxfZSxGZSk7cmV0dXJuIERuPT09RmU/RjpbMixbMCxfZSxEbl1dO2Nhc2UgMzp2YXIgeW49RlsxXSxvdD1vKGFbMV1bMSt0MF0sYSx5bik7cmV0dXJuIG90PT09eW4/RjpbMyxvdF07Y2FzZSA0OnZhciBwdD1GWzFdLGt0PXB0WzJdLEtuPXB0WzFdLFF0PXVyKGFbMV1bMStjMF0sYSxLbixrdCk7cmV0dXJuIFF0PT09a3Q/RjpbNCxbMCxLbixRdF1dO2Nhc2UgNTp2YXIgSjc9RlsxXSwkNz1KN1syXSxFNz1KN1sxXSxaNz11cihhWzFdWzErRXJdLGEsRTcsJDcpO3JldHVybiBaNz09PSQ3P0Y6WzUsWzAsRTcsWjddXTtkZWZhdWx0OnZhciBRNz1GWzFdLHJpPVE3WzJdLGVpPVE3WzFdLG5pPXVyKGFbMV1bMStIbl0sYSxlaSxyaSk7cmV0dXJuIG5pPT09cmk/RjpbNixbMCxlaSxuaV1dfX1mdW5jdGlvbiBMdWUoYSxGLG0pe3ZhciBPPW1bNV0sSD1tWzNdLCQ9bVsyXSxyMD16ZSh1KGFbMV1bMStzaV0sYSksSCksajA9emUodShhWzFdWzErWjldLGEpLCQpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09cjAmJiQ9PT1qMCYmTz09PVYwP206WzAsbVsxXSxqMCxyMCxtWzRdLFYwXX1mdW5jdGlvbiBSdWUoYSxGLG0pe3ZhciBPPW1bN10sSD1tWzZdLCQ9bVs1XSxyMD1tWzRdLGowPW1bM10sVjA9bVsyXSxOcj1tWzFdLEdyPW8oYVsxXVsxK2hiXSxhLE5yKSxGZT16ZSh1KGFbMV1bMStWXSxhKSxWMCksX2U9X3UodShhWzFdWzErcXJdLGEpLGowKSxEbj11KGFbMV1bMStvdV0sYSkseW49emUoZnVuY3Rpb24oUXQpe3JldHVybiBfdShEbixRdCl9LHIwKSxvdD11KGFbMV1bMStvdV0sYSkscHQ9VW4oZnVuY3Rpb24oUXQpe3JldHVybiBfdShvdCxRdCl9LCQpLGt0PXplKHUoYVsxXVsxK2wyXSxhKSxIKSxLbj1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gR3I9PT1OciYmRmU9PT1WMCYmX2U9PT1qMCYmeW49PT1yMCYmcHQ9PT0kJiZrdD09PUgmJktuPT09Tz9tOlswLEdyLEZlLF9lLHluLHB0LGt0LEtuXX1mdW5jdGlvbiBqdWUoYSxGLG0pe3ZhciBPPW1bMV0sSD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gTz09PUg/bTpbMCxIXX1mdW5jdGlvbiBHdWUoYSxGLG0pe3ZhciBPPW1bMl0sSD1tWzFdLCQ9emUodShhWzFdWzErUTBdLGEpLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP206WzAsJCxyMF19ZnVuY3Rpb24gTXVlKGEsRixtKXt2YXIgTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1vKGFbMV1bMStfcl0sYSxyMCksVjA9byhhWzFdWzErbm5dLGEsJCksTnI9byhhWzFdWzErbm5dLGEsSCksR3I9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIHIwPT09ajAmJiQ9PT1WMCYmSD09PU5yJiZPPT09R3I/bTpbMCxqMCxWMCxOcixHcl19ZnVuY3Rpb24gQnVlKGEsRixtKXtyZXR1cm4gbX1mdW5jdGlvbiBxdWUoYSxGLG0pe3ZhciBPPW1bNl0sSD1tWzVdLCQ9bVszXSxyMD1tWzJdLGowPW1bMV0sVjA9byhhWzFdWzErYXJdLGEsajApLE5yPW8oYVsxXVsxK19iXSxhLHIwKSxHcj1vKGFbMV1bMSt4MF0sYSwkKSxGZT1vKGFbMV1bMStjXSxhLEgpLF9lPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBqMD09PVYwJiZyMD09PU5yJiZHcj09PSQmJkZlPT09SCYmX2U9PT1PP206WzAsVjAsTnIsR3IsbVs0XSxGZSxfZV19ZnVuY3Rpb24gVXVlKGEsRil7aWYodHlwZW9mIEY9PVwibnVtYmVyXCIpcmV0dXJuIEY7dmFyIG09RlsxXSxPPW8oYVsxXVsxK25uXSxhLG0pO3JldHVybiBtPT09Tz9GOlswLE9dfWZ1bmN0aW9uIEh1ZShhLEYsbSl7dmFyIE89bVs2XSxIPW1bNV0sJD1tWzNdLHIwPW1bMl0sajA9bVsxXSxWMD1vKGFbMV1bMStvZV0sYSxqMCksTnI9byhhWzFdWzErX2JdLGEscjApLEdyPW8oYVsxXVsxK3gwXSxhLCQpLEZlPW8oYVsxXVsxK2NdLGEsSCksX2U9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIGowPT09VjAmJnIwPT09TnImJkdyPT09JCYmRmU9PT1IJiZfZT09PU8/bTpbMCxWMCxOcixHcixtWzRdLEZlLF9lXX1mdW5jdGlvbiBYdWUoYSxGLG0pe3ZhciBPPW1bNl0sSD1tWzVdLCQ9bVszXSxyMD1tWzJdLGowPW8oYVsxXVsxK29lXSxhLHIwKSxWMD1fdSh1KGFbMV1bMSttZV0sYSksJCksTnI9VW4odShhWzFdWzErZGJdLGEpLEgpLEdyPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiByMD09PWowJiYkPT09VjAmJkg9PT1OciYmTz09PUdyP206WzAsbVsxXSxqMCxWMCxtWzRdLE5yLEdyXX1mdW5jdGlvbiBZdWUoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW1bMV0sJD1vKGFbMV1bMSttMF0sYSxIKSxyMD16ZSh1KGFbMV1bMStlMF0sYSksTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/RjpbMCxGWzFdLFswLCQscjBdXX1mdW5jdGlvbiBWdWUoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW1bMV0sJD1Vbih1KGFbMV1bMStyX10sYSksSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/RjpbMCxGWzFdLFswLCQscjBdXX1mdW5jdGlvbiB6dWUoYSxGKXtzd2l0Y2goRlswXSl7Y2FzZSAwOnZhciBtPUZbMV0sTz1tWzFdLEg9ZnVuY3Rpb24oeW4pe3JldHVyblswLFswLE8seW5dXX0sJD1tWzJdO3JldHVybiB0ZSh1KGFbMV1bMStYY10sYSksTywkLEYsSCk7Y2FzZSAxOnZhciByMD1GWzFdLGowPXIwWzFdLFYwPWZ1bmN0aW9uKHluKXtyZXR1cm5bMSxbMCxqMCx5bl1dfSxOcj1yMFsyXTtyZXR1cm4gdGUodShhWzFdWzEreWJdLGEpLGowLE5yLEYsVjApO2RlZmF1bHQ6dmFyIEdyPUZbMV0sRmU9R3JbMV0sX2U9ZnVuY3Rpb24oeW4pe3JldHVyblsyLFswLEZlLHluXV19LERuPUdyWzJdO3JldHVybiB0ZSh1KGFbMV1bMStROV0sYSksRmUsRG4sRixfZSl9fWZ1bmN0aW9uIEt1ZShhLEYpe3ZhciBtPUZbMl0sTz1tWzJdLEg9bVsxXSwkPW8oYVsxXVsxK25uXSxhLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gV3VlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9VW4odShhWzFdWzErS3NdLGEpLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24gSnVlKGEsRil7cmV0dXJuIHVyKGFbMV1bMStMMF0sYSx0NnIsRil9ZnVuY3Rpb24gJHVlKGEsRixtKXt2YXIgTz1tWzNdLEg9bVsyXSwkPW1bMV0scjA9byhhWzFdWzErbm5dLGEsJCksajA9emUodShhWzFdWzErZTBdLGEpLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIFp1ZShhLEYsbSl7dmFyIE89bVs3XSxIPW1bNl0sJD1tWzVdLHIwPW1bNF0sajA9bVszXSxWMD1tWzJdLE5yPW1bMV0sR3I9emUodShhWzFdWzEraGJdLGEpLE5yKSxGZT1vKGFbMV1bMStuX10sYSxWMCksX2U9emUodShhWzFdWzErVl0sYSksajApLERuPXUoYVsxXVsxK1ljXSxhKSx5bj16ZShmdW5jdGlvbihLbil7cmV0dXJuIF91KERuLEtuKX0scjApLG90PXplKHUoYVsxXVsxK2wyXSxhKSwkKSxwdD1Vbih1KGFbMV1bMStkYl0sYSksSCksa3Q9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIE5yPT09R3ImJlYwPT09RmUmJnIwPT09eW4mJiQ9PT1vdCYmSD09PXB0JiZPPT09a3QmJmowPT09X2U/bTpbMCxHcixGZSxfZSx5bixvdCxwdCxrdF19ZnVuY3Rpb24gUXVlKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK2RzXSxhLEYsbSl9ZnVuY3Rpb24gcjdlKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK2RzXSxhLEYsbSl9ZnVuY3Rpb24gZTdlKGEsRixtKXt2YXIgTz1tWzNdLEg9bVsyXSwkPW1bMV0scjA9emUodShhWzFdWzErdF9dLGEpLCQpLGowPW8oYVsxXVsxK3VfXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAscjAsajAsVjBdfWZ1bmN0aW9uIG43ZShhLEYpe3JldHVybiBfdSh1KGFbMV1bMSt6aV0sYSksRil9ZnVuY3Rpb24gdDdlKGEsRil7aWYoRlswXT09PTApe3ZhciBtPUZbMV0sTz1vKGFbMV1bMSt0MF0sYSxtKTtyZXR1cm4gTz09PW0/RjpbMCxPXX12YXIgSD1GWzFdLCQ9SFsyXVsxXSxyMD1vKGFbMV1bMStzMF0sYSwkKTtyZXR1cm4gJD09PXIwP0Y6WzEsWzAsSFsxXSxbMCxyMF1dXX1mdW5jdGlvbiB1N2UoYSxGKXt2YXIgbT1GWzJdLE89bVsyXSxIPW1bMV0sJD1Vbih1KGFbMV1bMStpX10sYSksSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/RjpbMCxGWzFdLFswLCQscjBdXX1mdW5jdGlvbiBpN2UoYSxGLG0pe3ZhciBPPW1bMV0sSD11cihhWzFdWzEra2JdLGEsRixPKTtyZXR1cm4gTz09PUg/bTpbMCxILG1bMl0sbVszXV19ZnVuY3Rpb24gZjdlKGEsRil7dmFyIG09RlsyXSxPPW1bMl0sSD1tWzFdLCQ9VW4odShhWzFdWzErWXNdLGEpLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP0Y6WzAsRlsxXSxbMCwkLHIwXV19ZnVuY3Rpb24geDdlKGEsRixtKXt2YXIgTz1tWzRdLEg9bVszXSwkPW1bMl0scjA9bVsxXSxqMD1vKGFbMV1bMStubl0sYSxyMCksVjA9emUodShhWzFdWzErYjJdLGEpLCQpLE5yPW8oYVsxXVsxK1dzXSxhLEgpLEdyPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiByMD09PWowJiYkPT09VjAmJkg9PT1OciYmTz09PUdyP206WzAsajAsVjAsTnIsR3JdfWZ1bmN0aW9uIG83ZShhLEYsbSl7dmFyIE89bVsyXSxIPW1bMV0sJD16ZSh1KGFbMV1bMStRMF0sYSksSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/bTpbMCwkLHIwXX1mdW5jdGlvbiBhN2UoYSxGLG0pe3ZhciBPPW1bMl0sSD1tWzFdLCQ9byhhWzFdWzErVHJdLGEsSCkscjA9byhhWzFdWzErczBdLGEsTyk7cmV0dXJuIEg9PT0kJiZPPT09cjA/bTpbMCwkLHIwXX1mdW5jdGlvbiBjN2UoYSxGLG0pe3ZhciBPPW1bNF0sSD1tWzNdLCQ9bVsyXSxyMD1vKGFbMV1bMStubl0sYSwkKSxqMD1vKGFbMV1bMStubl0sYSxIKSxWMD1vKGFbMV1bMStzMF0sYSxPKTtyZXR1cm4gJD09PXIwJiZIPT09ajAmJk89PT1WMD9tOlswLG1bMV0scjAsajAsVjBdfWZ1bmN0aW9uIHM3ZShhLEYsbSl7dmFyIE89bVs0XSxIPW1bM10sJD1tWzJdLHIwPW8oYVsxXVsxK20yXSxhLCQpLGowPW8oYVsxXVsxK25uXSxhLEgpLFYwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP206WzAsbVsxXSxyMCxqMCxWMF19ZnVuY3Rpb24gdjdlKGEsRixtKXtyZXR1cm4gdXIoYVsxXVsxK2puXSxhLEYsbSl9ZnVuY3Rpb24gbDdlKGEsRil7c3dpdGNoKEZbMF0pe2Nhc2UgMDp2YXIgbT1mdW5jdGlvbihyMCl7cmV0dXJuWzAscjBdfSxPPUZbMV07cmV0dXJuIGVlKHUoYVsxXVsxK25uXSxhKSxPLEYsbSk7Y2FzZSAxOnZhciBIPWZ1bmN0aW9uKHIwKXtyZXR1cm5bMSxyMF19LCQ9RlsxXTtyZXR1cm4gZWUodShhWzFdWzErUnJdLGEpLCQsRixIKTtkZWZhdWx0OnJldHVybiBGfX1mdW5jdGlvbiBiN2UoYSxGLG0pe3ZhciBPPW1bMl0sSD1tWzFdLCQ9VW4odShhWzFdWzErYV9dLGEpLEgpLHIwPW8oYVsxXVsxK3MwXSxhLE8pO3JldHVybiBIPT09JCYmTz09PXIwP206WzAsJCxyMF19ZnVuY3Rpb24gcDdlKGEsRil7dmFyIG09RlsyXSxPPUZbMV07c3dpdGNoKG1bMF0pe2Nhc2UgMDp2YXIgSD1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMCxVZV1dfSwkPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3kyXSxhKSxPLCQsRixIKTtjYXNlIDE6dmFyIHIwPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsxLFVlXV19LGowPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK29fXSxhKSxPLGowLEYscjApO2Nhc2UgMjp2YXIgVjA9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzIsVWVdXX0sTnI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErXzJdLGEpLE8sTnIsRixWMCk7Y2FzZSAzOnZhciBHcj1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMyxVZV1dfSxGZT1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMSt4X10sYSksTyxGZSxGLEdyKTtjYXNlIDQ6dmFyIF9lPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFs0LFVlXV19LERuPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK2tiXSxhKSxPLERuLEYsX2UpO2Nhc2UgNTp2YXIgeW49ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzUsVWVdXX0sb3Q9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErZV9dLGEpLE8sb3QsRix5bik7Y2FzZSA2OnZhciBwdD1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbNixVZV1dfSxrdD1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStHbl0sYSksTyxrdCxGLHB0KTtjYXNlIDc6dmFyIEtuPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFs3LFVlXV19LFF0PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK21iXSxhKSxPLFF0LEYsS24pO2Nhc2UgODp2YXIgSjc9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzgsVWVdXX0sJDc9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErWm5dLGEpLE8sJDcsRixKNyk7Y2FzZSA5OnZhciBFNz1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbOSxVZV1dfSxaNz1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStZaV0sYSksTyxaNyxGLEU3KTtjYXNlIDEwOnZhciBRNz1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMTAsVWVdXX0scmk9bVsxXTtyZXR1cm4gZWUodShhWzFdWzErbHRdLGEpLHJpLEYsUTcpO2Nhc2UgMTE6dmFyIGVpPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsxMSxVZV1dfSxuaT1tWzFdO3JldHVybiBlZShvKGFbMV1bMStGdF0sYSxPKSxuaSxGLGVpKTtjYXNlIDEyOnZhciBXaT1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMTIsVWVdXX0sdHY9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErR2VdLGEpLE8sdHYsRixXaSk7Y2FzZSAxMzp2YXIgdXY9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzEzLFVlXV19LEppPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK0tyXSxhKSxPLEppLEYsdXYpO2Nhc2UgMTQ6dmFyIGl2PWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsxNCxVZV1dfSxHYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStKMF0sYSksTyxHYixGLGl2KTtjYXNlIDE1OnZhciBNYj1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMTUsVWVdXX0sQmI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErWDBdLGEpLE8sQmIsRixNYik7Y2FzZSAxNjp2YXIgcWI9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzE2LFVlXV19LFViPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3UwXSxhKSxPLFViLEYscWIpO2Nhc2UgMTc6dmFyIEhiPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsxNyxVZV1dfSxYYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStVXSxhKSxPLFhiLEYsSGIpO2Nhc2UgMTg6dmFyIFliPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsxOCxVZV1dfSxWYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStJXSxhKSxPLFZiLEYsWWIpO2Nhc2UgMTk6dmFyIHpiPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsxOSxVZV1dfSxLYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStGcl0sYSksTyxLYixGLHpiKTtjYXNlIDIwOnZhciBXYj1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMjAsVWVdXX0sSmI9bVsxXTtyZXR1cm4gZWUobyhhWzFdWzErJDBdLGEsTyksSmIsRixXYik7Y2FzZSAyMTp2YXIgJGI9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzIxLFVlXV19LFpiPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3lyXSxhKSxPLFpiLEYsJGIpO2Nhc2UgMjI6dmFyIFFiPWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsyMixVZV1dfSxyND1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStXcl0sYSksTyxyNCxGLFFiKTtjYXNlIDIzOnZhciBlND1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMjMsVWVdXX0sbjQ9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErVzBdLGEpLE8sbjQsRixlNCk7Y2FzZSAyNDp2YXIgdDQ9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzI0LFVlXV19LHU0PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK1hdLGEpLE8sdTQsRix0NCk7Y2FzZSAyNTp2YXIgaTQ9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzI1LFVlXV19LGY0PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK1IwXSxhKSxPLGY0LEYsaTQpO2Nhc2UgMjY6dmFyIHg0PWZ1bmN0aW9uKFVlKXtyZXR1cm5bMCxPLFsyNixVZV1dfSxvND1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStVMF0sYSksTyxvNCxGLHg0KTtjYXNlIDI3OnZhciBaZT1mdW5jdGlvbihVZSl7cmV0dXJuWzAsTyxbMjcsVWVdXX0sQVI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErZzBdLGEpLE8sQVIsRixaZSk7Y2FzZSAyODp2YXIgTlI9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzI4LFVlXV19LENSPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3ddLGEpLE8sQ1IsRixOUik7Y2FzZSAyOTp2YXIgUFI9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzI5LFVlXV19LERSPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK0VdLGEpLE8sRFIsRixQUik7ZGVmYXVsdDp2YXIgTFI9ZnVuY3Rpb24oVWUpe3JldHVyblswLE8sWzMwLFVlXV19LFJSPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK2VdLGEpLE8sUlIsRixMUil9fWZ1bmN0aW9uIG03ZShhLEYpe3ZhciBtPUZbMl0sTz1GWzFdLEg9VW4odShhWzFdWzErWTFdLGEpLE8pLCQ9VW4odShhWzFdWzErWTFdLGEpLG0pO3JldHVybiBPPT09SCYmbT09PSQ/RjpbMCxILCQsRlszXV19dmFyIF83ZT04O2Z1bmN0aW9uIHk3ZShhLEYpe3JldHVybiBGfWZ1bmN0aW9uIGg3ZShhLEYpe3ZhciBtPUZbMl0sTz1GWzFdO3N3aXRjaChtWzBdKXtjYXNlIDA6dmFyIEg9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzAsT2VdXX0sJD1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMSt6aV0sYSksTywkLEYsSCk7Y2FzZSAxOnZhciByMD1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMSxPZV1dfSxqMD1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStKc10sYSksTyxqMCxGLHIwKTtjYXNlIDI6dmFyIFYwPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsyLE9lXV19LE5yPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK1YxXSxhKSxPLE5yLEYsVjApO2Nhc2UgMzp2YXIgR3I9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzMsT2VdXX0sRmU9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErcGJdLGEpLE8sRmUsRixHcik7Y2FzZSA0OnZhciBfZT1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbNCxPZV1dfSxEbj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStiYl0sYSksTyxEbixGLF9lKTtjYXNlIDU6dmFyIHluPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFs1LE9lXV19LG90PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3YyXSxhKSxPLG90LEYseW4pO2Nhc2UgNjp2YXIgcHQ9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzYsT2VdXX0sa3Q9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErWDFdLGEpLE8sa3QsRixwdCk7Y2FzZSA3OnZhciBLbj1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbNyxPZV1dfSxRdD1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStsYl0sYSksTyxRdCxGLEtuKTtjYXNlIDg6dmFyIEo3PWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFs4LE9lXV19LCQ3PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxKyQ5XSxhKSxPLCQ3LEYsSjcpO2Nhc2UgOTp2YXIgRTc9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzksT2VdXX0sWjc9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErSjldLGEpLE8sWjcsRixFNyk7Y2FzZSAxMDp2YXIgUTc9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzEwLE9lXV19LHJpPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK1c5XSxhKSxPLHJpLEYsUTcpO2Nhc2UgMTE6dmFyIGVpPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsxMSxPZV1dfSxuaT1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStLOV0sYSksTyxuaSxGLGVpKTtjYXNlIDEyOnZhciBXaT1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMzMsT2VdXX0sdHY9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErRXJdLGEpLE8sdHYsRixXaSk7Y2FzZSAxMzp2YXIgdXY9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzEzLE9lXV19LEppPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3ZiXSxhKSxPLEppLEYsdXYpO2Nhc2UgMTQ6dmFyIGl2PWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsxNCxPZV1dfSxHYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMSt6OV0sYSksTyxHYixGLGl2KTtjYXNlIDE1OnZhciBNYj1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMTUsT2VdXX0sQmI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErVjldLGEpLE8sQmIsRixNYik7Y2FzZSAxNjp2YXIgcWI9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzE2LE9lXV19LFViPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK2FiXSxhKSxPLFViLEYscWIpO2Nhc2UgMTc6dmFyIEhiPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsxNyxPZV1dfSxYYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStCOV0sYSksTyxYYixGLEhiKTtjYXNlIDE4OnZhciBZYj1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMTgsT2VdXX0sVmI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErYzJdLGEpLE8sVmIsRixZYik7Y2FzZSAxOTp2YXIgemI9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzE5LE9lXV19LEtiPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK1hzXSxhKSxPLEtiLEYsemIpO2Nhc2UgMjA6dmFyIFdiPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsyMCxPZV1dfSxKYj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStkdF0sYSksTyxKYixGLFdiKTtjYXNlIDIxOnZhciAkYj1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMjEsT2VdXX0sWmI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErQXVdLGEpLE8sWmIsRiwkYik7Y2FzZSAyMjp2YXIgUWI9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzIyLE9lXV19LHI0PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK2xuXSxhKSxPLHI0LEYsUWIpO2Nhc2UgMjM6dmFyIGU0PWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsyMyxPZV1dfSxuND1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMSt3bl0sYSksTyxuNCxGLGU0KTtjYXNlIDI0OnZhciB0ND1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMjQsT2VdXX0sdTQ9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErQ3RdLGEpLE8sdTQsRix0NCk7Y2FzZSAyNTp2YXIgaTQ9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzI1LE9lXV19LGY0PW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK3F0XSxhKSxPLGY0LEYsaTQpO2Nhc2UgMjY6dmFyIHg0PWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsyNixPZV1dfSxvND1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStDbl0sYSksTyxvNCxGLHg0KTtjYXNlIDI3OnZhciBaZT1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMjcsT2VdXX0sQVI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzEraXJdLGEpLE8sQVIsRixaZSk7Y2FzZSAyODp2YXIgTlI9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzI4LE9lXV19LENSPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK0pyXSxhKSxPLENSLEYsTlIpO2Nhc2UgMjk6dmFyIFBSPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFsyOSxPZV1dfSxEUj1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStvcl0sYSksTyxEUixGLFBSKTtjYXNlIDMwOnZhciBMUj1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMzAsT2VdXX0sUlI9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErRTBdLGEpLE8sUlIsRixMUik7Y2FzZSAzMTp2YXIgVWU9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzMxLE9lXV19LGQ3ZT1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMSt3MF0sYSksTyxkN2UsRixVZSk7Y2FzZSAzMjp2YXIgazdlPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFszMixPZV1dfSx3N2U9bVsxXTtyZXR1cm4gdGUodShhWzFdWzErYzBdLGEpLE8sdzdlLEYsazdlKTtjYXNlIDMzOnZhciBFN2U9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzMzLE9lXV19LFM3ZT1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMStFcl0sYSksTyxTN2UsRixFN2UpO2Nhc2UgMzQ6dmFyIGc3ZT1mdW5jdGlvbihPZSl7cmV0dXJuWzAsTyxbMzQsT2VdXX0sRjdlPW1bMV07cmV0dXJuIHRlKHUoYVsxXVsxK1RdLGEpLE8sRjdlLEYsZzdlKTtjYXNlIDM1OnZhciBUN2U9ZnVuY3Rpb24oT2Upe3JldHVyblswLE8sWzM1LE9lXV19LE83ZT1tWzFdO3JldHVybiB0ZSh1KGFbMV1bMSt4XSxhKSxPLE83ZSxGLFQ3ZSk7ZGVmYXVsdDp2YXIgSTdlPWZ1bmN0aW9uKE9lKXtyZXR1cm5bMCxPLFszNixPZV1dfSxBN2U9bVsxXTtyZXR1cm4gdGUodShhWzFdWzEraV0sYSksTyxBN2UsRixJN2UpfX1yZXR1cm4gak4odCxbMCxxTCxmdW5jdGlvbihhLEYpe3ZhciBtPUZbMl0sTz1tWzNdLEg9bVsyXSwkPW1bMV0scjA9byhhWzFdWzErXzBdLGEsJCksajA9byhhWzFdWzErczBdLGEsSCksVjA9VW4odShhWzFdWzErWTFdLGEpLE8pO3JldHVybiAkPT09cjAmJkg9PT1qMCYmTz09PVYwP0Y6WzAsRlsxXSxbMCxyMCxqMCxWMF1dfSxPcixoN2UsWTEseTdlLHMwLF83ZSx6ZSxocixocixtN2Usbm4scDdlLHkyLGI3ZSxhXyxsN2Usb18sdjdlLF8yLHM3ZSx4XyxjN2UsemksYTdlLEpzLG83ZSxrYix4N2UsV3MsZjdlLCQwLGk3ZSxiMix1N2UsaV8sdDdlLHVfLG43ZSx6MSxlN2UsVjEscjdlLGVfLFF1ZSxkcyxadWUsWWMsJHVlLGhiLEp1ZSxuXyxXdWUsZGIsS3VlLEtzLHp1ZSxsMixWdWUscl8sWXVlLFhjLFh1ZSx5YixIdWUsX2IsVXVlLFE5LHF1ZSxHbixCdWUsbWIsTXVlLHBiLEd1ZSxiYixqdWUsdjIsUnVlLFgxLEx1ZSxaOSxEdWUsbGIsUHVlLCQ5LEN1ZSxKOSxOdWUsVzksQXVlLEs5LEl1ZSx2YixPdWUsejksVHVlLFY5LEZ1ZSxhYixndWUsWTksU3VlLHNiLEV1ZSxYOSx3dWUsVTksa3VlLHpzLGR1ZSx2aSxodWUsY2IseXVlLEg5LF91ZSxzMixtdWUsSDEscHVlLEI5LGJ1ZSxNOSxsdWUsYzIsdnVlLFZzLHN1ZSxxOSxjdWUsc2ksYXVlLFhzLG91ZSxZcyx4dWUsQXUsZnVlLGhzLGl1ZSxIcyx1dWUsbG4sdHVlLHhuLG51ZSxpdCxldWUsZHQscnVlLHV0LFF0ZSxUaSxadGUsRDAsJHRlLFV0LEp0ZSxIYyxXdGUsYTcsS3RlLFEwLHp0ZSwkcixWdGUsQnIsWXRlLE1yLFh0ZSxuZSxIdGUsanIsVXRlLGdlLHF0ZSxjZSxCdGUscTAsTXRlLHFyLEd0ZSxfbixqdGUsSzcsUnRlLEJ1LEx0ZSxZLER0ZSxzLFB0ZSxjLEN0ZSxlMCxOdGUsVixBdGUsZjAsSXRlLG91LE90ZSxGbixUdGUsdnIsRnRlLExyLGd0ZSxfLFN0ZSxwMixFdGUsZl8sd3RlLGssa3RlLEcsZHRlLEssaHRlLE0seXRlLFMsX3RlLEEsbXRlLG8wLHB0ZSxacyxidGUsZCxsdGUsZW4sdnRlLHQwLHN0ZSxsLGN0ZSx4MCxhdGUsd24sb3RlLFpuLHh0ZSxtZSxmdGUsam4saXRlLEIwLHV0ZSxXNyx0dGUsSGUsbnRlLGZ0LGV0ZSx4dCxydGUsaGUsUW5lLFlpLFpuZSxsdCwkbmUsazAsSm5lLG0wLFduZSxWYyxLbmUsSG4sem5lLENuLFZuZSxhcixZbmUsT24sWG5lLEZ0LEhuZSxkdSxVbmUsV3UscW5lLEN0LEJuZSxxdCxNbmUsdnQsR25lLGd0LGpuZSxadCxSbmUsTnQsTG5lLEdlLERuZSxLcixQbmUsbXIsQ25lLE1lLE5uZSxDcixBbmUsU3IsSW5lLEplLE9uZSxOZSxUbmUsdm4sRm5lLGtuLGduZSxybixTbmUsY24sSVIsQWUsamIsYW4sUmIsV2UsbnYscmUsTGIsRjAsZXYsSWUsS2ksdmUsdzcseGUsSWksUmUsd3Usc3Isa3UsVXIsT1IsUHIsVFIsSzAsRGIsaDAsRlIsaXIsZ1IsSjAsUGIsWDAsU1IsdTAsRVIseXIsd1IsSTAsRTIseTAsa1IsRCx5XyxQMCxkUixVLGhSLEksQ2IsRnIseVIsUXIsX18sb2UsX1IsYmUsbVIsYWUsTmIscGUscFIsRXIsYlIsTGUsbFIscCxBYix0XyxtXyxWaSx2UixUdCxwXywkcyxJYixtMixiXyxlcixzUixMMCxsXyxycixjUixUMCxPYixTMCx2XyxRLFRiLEwscnYsaTAsYVIsbDAsb1IsdjAsc18sUCxNbixmZSx4UixNMCxGYixPMCxmUixiMCxnYixwMCxpUixaLFNiLEsxLHVSLEIsUTEsSXIsdFIsX3IsdzIsYnQsblIsSnIsazIsV3IsZVIsXzAsY18sVHIsclIsSHIsUUwsUnIsZDIsZnIsWkwsVzAsJEwsb3IsRWIsQXIsSkwsWCx3YixSMCxXTCxiLFoxLFUwLEtMLEUwLCQxLHcwLHpMLGcwLGgyLHcsVkwsRSxZTCxULE9pLHksWEwseCxKMSxpLEhMLGMwLFcxLGUsVUxdKSxmdW5jdGlvbihhLEYpe3JldHVybiBqcChGLHQpfX0pO2Z1bmN0aW9uIFgwMCh0KXtzd2l0Y2godFswXSl7Y2FzZSAwOnJldHVybiAxO2Nhc2UgMzpyZXR1cm4gMztkZWZhdWx0OnJldHVybiAyfX1mdW5jdGlvbiBZMDAodCxuKXt1KGYodCksTzZyKSxvKGYodCksQTZyLEk2cik7dmFyIGU9blsxXTtvKGYodCksTjZyLGUpLHUoZih0KSxDNnIpLHUoZih0KSxQNnIpLG8oZih0KSxMNnIsRDZyKTt2YXIgaT1uWzJdO3JldHVybiBvKGYodCksUjZyLGkpLHUoZih0KSxqNnIpLHUoZih0KSxHNnIpfXZhciBWMDA9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxGZWU9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9O04oVjAwLGZ1bmN0aW9uKHQsbil7dShmKHQpLEI2ciksbyhmKHQpLFU2cixxNnIpO3ZhciBlPW5bMV07aWYoZSl7Zyh0LEg2cik7dmFyIGk9ZVsxXTtzd2l0Y2goaVswXSl7Y2FzZSAwOnUoZih0KSxtNnIpO3ZhciB4PWlbMV07byhmKHQpLF82cix4KSx1KGYodCkseTZyKTticmVhaztjYXNlIDE6dShmKHQpLGg2cik7dmFyIGM9aVsxXTtvKGYodCksZDZyLGMpLHUoZih0KSxrNnIpO2JyZWFrO2Nhc2UgMjp1KGYodCksdzZyKTt2YXIgcz1pWzFdO28oZih0KSxFNnIscyksdShmKHQpLFM2cik7YnJlYWs7ZGVmYXVsdDp1KGYodCksZzZyKTt2YXIgcD1pWzFdO28oZih0KSxGNnIscCksdShmKHQpLFQ2cil9Zyh0LFg2cil9ZWxzZSBnKHQsWTZyKTtyZXR1cm4gdShmKHQpLFY2ciksdShmKHQpLHo2ciksbyhmKHQpLFc2cixLNnIpLFkwMCh0LG5bMl0pLHUoZih0KSxKNnIpLHUoZih0KSwkNnIpLG8oZih0KSxRNnIsWjZyKSxZMDAodCxuWzNdKSx1KGYodCkscnByKSx1KGYodCksZXByKX0pLE4oRmVlLGZ1bmN0aW9uKHQpe3JldHVybiBvKEMwKE02ciksVjAwLHQpfSk7ZnVuY3Rpb24geXQodCxuKXtyZXR1cm5bMCx0WzFdLHRbMl0sblszXV19ZnVuY3Rpb24gcHModCxuKXt2YXIgZT10WzFdLW5bMV18MDtyZXR1cm4gZT09PTA/dFsyXS1uWzJdfDA6ZX1mdW5jdGlvbiB6MDAodCxuKXt2YXIgZT1uWzFdLGk9dFsxXTtpZihpKWlmKGUpdmFyIHg9ZVsxXSxjPWlbMV0scz1YMDAoeCkscD1YMDAoYyktc3wwLFQ9cD09PTA/RWUoY1sxXSx4WzFdKTpwO2Vsc2UgdmFyIFQ9LTE7ZWxzZSB2YXIgeT1lJiYxLFQ9eTtpZihUPT09MCl7dmFyIEU9cHModFsyXSxuWzJdKTtyZXR1cm4gRT09PTA/cHModFszXSxuWzNdKTpFfXJldHVybiBUfWZ1bmN0aW9uIFd2KHQsbil7cmV0dXJuIHowMCh0LG4pPT09MD8xOjB9dmFyIFdEPWZ1bmN0aW9uIHQobixlLGkpe3JldHVybiB0LmZ1bihuLGUsaSl9LFRlZT1ScCh1cHIsZnVuY3Rpb24odCl7dmFyIG49Tk4odCx0cHIpWzM1XSxlPUxOKHQsMCwwLG5wcixLRCwxKVsxXTtyZXR1cm4genoodCxuLGZ1bmN0aW9uKGkseCl7cmV0dXJuIDB9KSxmdW5jdGlvbihpLHgpe3ZhciBjPWpwKHgsdCk7cmV0dXJuIHUoZSxjKSxSTih4LGMsdCl9fSk7TihXRCxmdW5jdGlvbih0LG4sZSl7dmFyIGk9ZVsyXTtzd2l0Y2goaVswXSl7Y2FzZSAwOnZhciB4PWlbMV1bMV07cmV0dXJuIGxlKGZ1bmN0aW9uKHMscCl7dmFyIHk9cFswXT09PTA/cFsxXVsyXVsyXTpwWzFdWzJdWzFdO3JldHVybiB1cihXRCx0LHMseSl9LG4seCk7Y2FzZSAxOnZhciBjPWlbMV1bMV07cmV0dXJuIGxlKGZ1bmN0aW9uKHMscCl7cmV0dXJuIHBbMF09PT0yP3M6dXIoV0QsdCxzLHBbMV1bMl1bMV0pfSxuLGMpO2Nhc2UgMjpyZXR1cm4gbyh0LG4saVsxXVsxXSk7ZGVmYXVsdDpyZXR1cm4gbn19KTtmdW5jdGlvbiBSYyh0LG4pe3JldHVyblswLG5bMV0sWzAsblsyXSx0XV19ZnVuY3Rpb24gSzAwKHQsbixlKXt2YXIgaT10JiZ0WzFdLHg9biYmblsxXTtyZXR1cm5bMCxpLHgsZV19ZnVuY3Rpb24gbHIodCxuLGUpe3ZhciBpPXQmJnRbMV0seD1uJiZuWzFdO3JldHVybiFpJiYheD94OlswLEswMChbMCxpXSxbMCx4XSwwKV19ZnVuY3Rpb24geXUodCxuLGUsaSl7dmFyIHg9dCYmdFsxXSxjPW4mJm5bMV07cmV0dXJuIXgmJiFjJiYhZT9lOlswLEswMChbMCx4XSxbMCxjXSxlKV19ZnVuY3Rpb24geTcodCxuKXtpZih0KXtpZihuKXt2YXIgZT1uWzFdLGk9dFsxXSx4PVswLG9uKGlbMl0sZVsyXSldO3JldHVybiBscihbMCxvbihlWzFdLGlbMV0pXSx4LDApfXZhciBjPXR9ZWxzZSB2YXIgYz1uO3JldHVybiBjfWZ1bmN0aW9uIEpEKHQsbil7aWYobil7aWYodCl7dmFyIGU9blsxXSxpPXRbMV0seD1pWzNdLGM9WzAsb24oaVsyXSxlWzJdKV07cmV0dXJuIHl1KFswLG9uKGVbMV0saVsxXSldLGMseCwwKX12YXIgcz1uWzFdO3JldHVybiB5dShbMCxzWzFdXSxbMCxzWzJdXSwwLDApfXJldHVybiB0fWZ1bmN0aW9uIEp2KHQsbil7Zm9yKHZhciBlPXQsaT1uOzspe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVybiBpO2lmKGVbMF09PT0wKXJldHVyblswLGVbMV0sMCxpXTt2YXIgeD1bMCxlWzJdLGVbNF0saV0sZT1lWzNdLGk9eH19ZnVuY3Rpb24gVzAwKHQsbil7aWYodCl2YXIgZT1Kdih0WzJdLHRbM10pLGk9ZnVuY3Rpb24oYyl7cmV0dXJuIFcwMChlLGMpfSx4PVswLHRbMV0saV07ZWxzZSB2YXIgeD10O3JldHVybiB4fWZ1bmN0aW9uIE9lZSh0KXt2YXIgbj1Kdih0LDApO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gVzAwKG4sZSl9fWZ1bmN0aW9uIG1zKHQpe3JldHVybiB0eXBlb2YgdD09XCJudW1iZXJcIj8wOnRbMF09PT0wPzE6dFsxXX1mdW5jdGlvbiBJZWUodCl7cmV0dXJuWzAsdF19ZnVuY3Rpb24gWTcodCxuLGUpe3ZhciBpPTA7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVyblswLG5dO2VbMF09PT0xJiYoaT0xKX1lbHNlIGlmKHRbMF09PT0wKXR5cGVvZiBlIT1cIm51bWJlclwiJiZlWzBdPT09MSYmKGk9MSk7ZWxzZXt2YXIgeD10WzFdO2lmKHR5cGVvZiBlIT1cIm51bWJlclwiJiZlWzBdPT09MSl7dmFyIGM9ZVsxXSxzPWM8PXg/eCsxfDA6YysxfDA7cmV0dXJuWzEscyxuLHQsZV19dmFyIHA9eDtpPTJ9c3dpdGNoKGkpe2Nhc2UgMTp2YXIgcD1lWzFdO2JyZWFrO2Nhc2UgMDpyZXR1cm5bMSwyLG4sdCxlXX1yZXR1cm5bMSxwKzF8MCxuLHQsZV19ZnVuY3Rpb24gTnModCxuLGUpe3ZhciBpPW1zKHQpLHg9bXMoZSksYz14PD1pP2krMXwwOngrMXwwO3JldHVyblsxLGMsbix0LGVdfWZ1bmN0aW9uICREKHQsbil7dmFyIGU9biE9PTA/MTowO2lmKGUpe2lmKG4hPT0xKXt2YXIgaT1uPj4+MXwwLHg9JEQodCxpKSxjPXUodCwwKSxzPSREKHQsKG4taXwwKS0xfDApO3JldHVyblsxLG1zKHgpKzF8MCxjLHgsc119dmFyIHA9WzAsdSh0LDApXX1lbHNlIHZhciBwPWU7cmV0dXJuIHB9ZnVuY3Rpb24ga2kodCxuLGUpe3ZhciBpPW1zKHQpLHg9bXMoZSk7aWYoKHgrMnwwKTxpKXt2YXIgYz10WzRdLHM9dFszXSxwPXRbMl0seT1tcyhjKTtpZih5PD1tcyhzKSlyZXR1cm4gTnMocyxwLFk3KGMsbixlKSk7dmFyIFQ9WTcoY1s0XSxuLGUpLEU9Y1syXTtyZXR1cm4gTnMoWTcocyxwLGNbM10pLEUsVCl9aWYoKGkrMnwwKTx4KXt2YXIgZD1lWzRdLHc9ZVszXSxHPWVbMl0sQT1tcyh3KTtpZihBPD1tcyhkKSlyZXR1cm4gTnMoWTcodCxuLHcpLEcsZCk7dmFyIFM9WTcod1s0XSxHLGQpLE09d1syXTtyZXR1cm4gTnMoWTcodCxuLHdbM10pLE0sUyl9cmV0dXJuIFk3KHQsbixlKX1mdW5jdGlvbiBKMDAodCxuKXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm5bMCx0XTtpZihuWzBdPT09MClyZXR1cm4gWTcoWzAsdF0sblsxXSwwKTt2YXIgZT1uWzRdLGk9blsyXTtyZXR1cm4ga2koSjAwKHQsblszXSksaSxlKX1mdW5jdGlvbiAkMDAodCxuKXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm5bMCx0XTtpZihuWzBdPT09MClyZXR1cm4gWTcoMCxuWzFdLFswLHRdKTt2YXIgZT0kMDAodCxuWzRdKTtyZXR1cm4ga2koblszXSxuWzJdLGUpfWZ1bmN0aW9uIFZ1KHQsbixlKXtpZih0eXBlb2YgdD09XCJudW1iZXJcIilyZXR1cm4gSjAwKG4sZSk7aWYodFswXT09PTApe2lmKHR5cGVvZiBlIT1cIm51bWJlclwiKXtpZihlWzBdPT09MClyZXR1cm4gWTcodCxuLGUpO2lmKDM8ZVsxXSl7dmFyIGk9ZVs0XSx4PWVbMl07cmV0dXJuIGtpKFZ1KHQsbixlWzNdKSx4LGkpfXJldHVybiBOcyh0LG4sZSl9fWVsc2V7dmFyIGM9dFs0XSxzPXRbM10scD10WzJdLHk9dFsxXTtpZih0eXBlb2YgZSE9XCJudW1iZXJcIil7aWYoZVswXT09PTApcmV0dXJuIDM8eT9raShzLHAsVnUoYyxuLGUpKTpOcyh0LG4sZSk7dmFyIFQ9ZVsxXTtpZigoVCsyfDApPHkpcmV0dXJuIGtpKHMscCxWdShjLG4sZSkpO2lmKCh5KzJ8MCk8VCl7dmFyIEU9ZVs0XSxkPWVbMl07cmV0dXJuIGtpKFZ1KHQsbixlWzNdKSxkLEUpfXJldHVybiBOcyh0LG4sZSl9fXJldHVybiAkMDAobix0KX1mdW5jdGlvbiBQbCh0KXtmb3IodmFyIG49dDs7KXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIil0aHJvdyBKdDtpZihuWzBdPT09MClyZXR1cm4gblsxXTtpZih0eXBlb2YgblszXT09XCJudW1iZXJcIilyZXR1cm4gblsyXTt2YXIgbj1uWzNdfX1mdW5jdGlvbiBaMDAodCl7Zm9yKHZhciBuPXQ7Oyl7aWYodHlwZW9mIG49PVwibnVtYmVyXCIpcmV0dXJuIDA7aWYoblswXT09PTApcmV0dXJuWzAsblsxXV07aWYodHlwZW9mIG5bM109PVwibnVtYmVyXCIpcmV0dXJuWzAsblsyXV07dmFyIG49blszXX19ZnVuY3Rpb24gUTAwKHQpe2Zvcih2YXIgbj10Ozspe2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXRocm93IEp0O2lmKG5bMF09PT0wKXJldHVybiBuWzFdO2lmKHR5cGVvZiBuWzRdPT1cIm51bWJlclwiKXJldHVybiBuWzJdO3ZhciBuPW5bNF19fWZ1bmN0aW9uIEFlZSh0KXtmb3IodmFyIG49dDs7KXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm4gMDtpZihuWzBdPT09MClyZXR1cm5bMCxuWzFdXTtpZih0eXBlb2Ygbls0XT09XCJudW1iZXJcIilyZXR1cm5bMCxuWzJdXTt2YXIgbj1uWzRdfX1mdW5jdGlvbiBaRCh0KXtpZih0eXBlb2YgdD09XCJudW1iZXJcIilyZXR1cm4gUHUoVXByKTtpZih0WzBdPT09MClyZXR1cm4gMDtpZih0eXBlb2YgdFszXT09XCJudW1iZXJcIilyZXR1cm4gdFs0XTt2YXIgbj10WzRdLGU9dFsyXTtyZXR1cm4ga2koWkQodFszXSksZSxuKX1mdW5jdGlvbiBEbCh0LG4pe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXJldHVybiBuO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXJldHVybiB0O3ZhciBlPVpEKG4pO3JldHVybiBWdSh0LFBsKG4pLGUpfWZ1bmN0aW9uIFFEKHQpe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXJldHVybiAwO2lmKHRbMF09PT0wKXJldHVybiAxO3ZhciBuPVFEKHRbNF0pO3JldHVybihRRCh0WzNdKSsxfDApK258MH1mdW5jdGlvbiBycjAodCxuKXtmb3IodmFyIGU9dCxpPW47Oyl7aWYodHlwZW9mIGk9PVwibnVtYmVyXCIpcmV0dXJuIGU7aWYoaVswXT09PTApcmV0dXJuWzAsaVsxXSxlXTt2YXIgeD1pWzNdLGM9cnIwKGUsaVs0XSksZT1bMCxpWzJdLGNdLGk9eH19ZnVuY3Rpb24gZXIwKHQpe3JldHVybiBycjAoMCx0KX12YXIgc3Q9MDtmdW5jdGlvbiByTCh0KXt2YXIgbj10eXBlb2YgdD09XCJudW1iZXJcIj8xOjAsZT1uJiYxO3JldHVybiBlfWZ1bmN0aW9uIGVMKHQpe2Z1bmN0aW9uIG4oZTAseDApe2lmKHR5cGVvZiB4MD09XCJudW1iZXJcIilyZXR1cm5bMCxlMF07aWYoeDBbMF09PT0wKXt2YXIgbD14MFsxXSxjMD1vKHRbMV0sZTAsbCk7cmV0dXJuIGMwPT09MD94MDowPD1jMD9ZNyh4MCxlMCxzdCk6WTcoWzAsZTBdLGwsc3QpfXZhciB0MD14MFs0XSxvMD14MFszXSx3MD14MFsyXSxfMD1vKHRbMV0sZTAsdzApO2lmKF8wPT09MClyZXR1cm4geDA7aWYoMDw9XzApe3ZhciBFMD1uKGUwLHQwKTtyZXR1cm4gdDA9PT1FMD94MDpraShvMCx3MCxFMCl9dmFyIFUwPW4oZTAsbzApO3JldHVybiBvMD09PVUwP3gwOmtpKFUwLHcwLHQwKX1mdW5jdGlvbiBlKGUwLHgwKXtpZih0eXBlb2YgeDA9PVwibnVtYmVyXCIpcmV0dXJuWzAsc3QsMCxzdF07aWYoeDBbMF09PT0wKXt2YXIgbD1vKHRbMV0sZTAseDBbMV0pO3JldHVybiBsPT09MD9bMCxzdCwxLHN0XTowPD1sP1swLHgwLDAsc3RdOlswLHN0LDAseDBdfXZhciBjMD14MFs0XSx0MD14MFszXSxvMD14MFsyXSx3MD1vKHRbMV0sZTAsbzApO2lmKHcwPT09MClyZXR1cm5bMCx0MCwxLGMwXTtpZigwPD13MCl7dmFyIF8wPWUoZTAsYzApLEUwPV8wWzNdLFUwPV8wWzJdO3JldHVyblswLFZ1KHQwLG8wLF8wWzFdKSxVMCxFMF19dmFyIGI9ZShlMCx0MCksUjA9VnUoYlszXSxvMCxjMCk7cmV0dXJuWzAsYlsxXSxiWzJdLFIwXX1mdW5jdGlvbiBpKGUwLHgwKXtmb3IodmFyIGw9eDA7Oyl7aWYodHlwZW9mIGw9PVwibnVtYmVyXCIpcmV0dXJuIDA7aWYobFswXT09PTApcmV0dXJuIG8odFsxXSxlMCxsWzFdKT09PTA/MTowO3ZhciBjMD1vKHRbMV0sZTAsbFsyXSksdDA9YzA9PT0wPzE6MDtpZih0MClyZXR1cm4gdDA7dmFyIG8wPTA8PWMwP2xbNF06bFszXSxsPW8wfX1mdW5jdGlvbiB4KGUwLHgwKXtpZih0eXBlb2YgeDA9PVwibnVtYmVyXCIpcmV0dXJuIHN0O2lmKHgwWzBdPT09MClyZXR1cm4gbyh0WzFdLGUwLHgwWzFdKT09PTA/c3Q6eDA7dmFyIGw9eDBbNF0sYzA9eDBbM10sdDA9eDBbMl0sbzA9byh0WzFdLGUwLHQwKTtpZihvMD09PTApe2lmKHR5cGVvZiBjMD09XCJudW1iZXJcIilyZXR1cm4gbDtpZih0eXBlb2YgbD09XCJudW1iZXJcIilyZXR1cm4gYzA7dmFyIHcwPVpEKGwpO3JldHVybiBraShjMCxQbChsKSx3MCl9aWYoMDw9bzApe3ZhciBfMD14KGUwLGwpO3JldHVybiBsPT09XzA/eDA6a2koYzAsdDAsXzApfXZhciBFMD14KGUwLGMwKTtyZXR1cm4gYzA9PT1FMD94MDpraShFMCx0MCxsKX1mdW5jdGlvbiBjKGUwLHgwKXtpZih0eXBlb2YgZTA9PVwibnVtYmVyXCIpcmV0dXJuIHgwO2lmKGUwWzBdPT09MSl7dmFyIGw9ZTBbMl0sYzA9ZTBbMV07aWYodHlwZW9mIHgwIT1cIm51bWJlclwiKXtpZih4MFswXT09PTApcmV0dXJuIG4oeDBbMV0sZTApO3ZhciB0MD14MFsyXSxvMD14MFsxXTtpZihvMDw9YzApe2lmKG8wPT09MSlyZXR1cm4gbih0MCxlMCk7dmFyIHcwPWUobCx4MCksXzA9YyhlMFs0XSx3MFszXSk7cmV0dXJuIFZ1KGMoZTBbM10sdzBbMV0pLGwsXzApfWlmKGMwPT09MSlyZXR1cm4gbihsLHgwKTt2YXIgRTA9ZSh0MCxlMCksVTA9YyhFMFszXSx4MFs0XSk7cmV0dXJuIFZ1KGMoRTBbMV0seDBbM10pLHQwLFUwKX19cmV0dXJuIHR5cGVvZiB4MD09XCJudW1iZXJcIj9lMDpuKGUwWzFdLHgwKX1mdW5jdGlvbiBzKGUwLHgwKXtpZih0eXBlb2YgZTA9PVwibnVtYmVyXCJ8fHR5cGVvZiB4MD09XCJudW1iZXJcIilyZXR1cm4gc3Q7aWYodHlwZW9mIGUwIT1cIm51bWJlclwiJiZlMFswXSE9PTApe3ZhciBsPWUwWzRdLGMwPWUwWzNdLHQwPWUwWzJdLG8wPWUodDAseDApLHcwPW8wWzFdO2lmKG8wWzJdKXt2YXIgXzA9cyhsLG8wWzNdKTtyZXR1cm4gVnUocyhjMCx3MCksdDAsXzApfXZhciBFMD1zKGwsbzBbM10pO3JldHVybiBEbChzKGMwLHcwKSxFMCl9cmV0dXJuIGkoZTBbMV0seDApP2UwOnN0fWZ1bmN0aW9uIHAoZTAseDApe2lmKHR5cGVvZiB4MD09XCJudW1iZXJcIilyZXR1cm5bMCxzdCxmdW5jdGlvbihzMCl7cmV0dXJuIHN0fV07aWYoeDBbMF09PT0wKXJldHVybiBvKHRbMV0sZTAseDBbMV0pPT09MD8wOlswLHN0LGZ1bmN0aW9uKHMwKXtyZXR1cm4gc3R9XTt2YXIgbD14MFs0XSxjMD14MFszXSx0MD14MFsyXSxvMD1vKHRbMV0sZTAsdDApO2lmKG8wPT09MClyZXR1cm4gMDtpZigwPD1vMCl7dmFyIHcwPXAoZTAsbCk7aWYodzApdmFyIF8wPXcwWzJdLEUwPVswLFZ1KGMwLHQwLHcwWzFdKSxfMF07ZWxzZSB2YXIgRTA9dzA7cmV0dXJuIEUwfXZhciBVMD1wKGUwLGMwKTtpZihVMCl2YXIgYj1VMFsyXSxSMD1mdW5jdGlvbihzMCl7cmV0dXJuIFZ1KHUoYiwwKSx0MCxsKX0sWD1bMCxVMFsxXSxSMF07ZWxzZSB2YXIgWD1VMDtyZXR1cm4gWH1mdW5jdGlvbiB5KGUwLHgwKXtmb3IodmFyIGw9ZTAsYzA9eDA7Oyl7aWYodHlwZW9mIGwhPVwibnVtYmVyXCImJnR5cGVvZiBjMCE9XCJudW1iZXJcIil7dmFyIHQwPTA7aWYodHlwZW9mIGwhPVwibnVtYmVyXCImJmxbMF0hPT0wKXtpZih0eXBlb2YgYzAhPVwibnVtYmVyXCImJmMwWzBdIT09MCl7aWYobD09PWMwKXJldHVybiAwO3ZhciBvMD1wKGxbMl0sYzApO2lmKG8wKXt2YXIgdzA9eShsWzNdLG8wWzFdKTtpZih3MCl7dmFyIF8wPXUobzBbMl0sMCksbD1sWzRdLGMwPV8wO2NvbnRpbnVlfXZhciBFMD13MH1lbHNlIHZhciBFMD1vMDtyZXR1cm4gRTB9dmFyIFUwPWwsYj1jMFsxXTt0MD0xfWlmKCF0MCl2YXIgVTA9YzAsYj1sWzFdO3JldHVybiAxLWkoYixVMCl9cmV0dXJuIDF9fWZ1bmN0aW9uIFQoZTAseDApe2lmKHR5cGVvZiBlMD09XCJudW1iZXJcIilyZXR1cm4gc3Q7aWYodHlwZW9mIHgwPT1cIm51bWJlclwiKXJldHVybiBlMDtpZih0eXBlb2YgZTAhPVwibnVtYmVyXCImJmUwWzBdIT09MCl7dmFyIGw9ZTBbNF0sYzA9ZTBbM10sdDA9ZTBbMl0sbzA9ZSh0MCx4MCksdzA9bzBbMV07aWYobzBbMl0pe3ZhciBfMD1UKGwsbzBbM10pO3JldHVybiBEbChUKGMwLHcwKSxfMCl9dmFyIEUwPVQobCxvMFszXSk7cmV0dXJuIFZ1KFQoYzAsdzApLHQwLEUwKX1yZXR1cm4gaShlMFsxXSx4MCk/c3Q6ZTB9ZnVuY3Rpb24gRShlMCx4MCl7Zm9yKHZhciBsPUp2KHgwLDApLGMwPUp2KGUwLDApLHQwPWw7Oyl7aWYoYzApe2lmKHQwKXt2YXIgbzA9byh0WzFdLGMwWzFdLHQwWzFdKTtpZihvMD09PTApe3ZhciB3MD1Kdih0MFsyXSx0MFszXSksYzA9SnYoYzBbMl0sYzBbM10pLHQwPXcwO2NvbnRpbnVlfXJldHVybiBvMH1yZXR1cm4gMX12YXIgXzA9dDAmJi0xO3JldHVybiBfMH19ZnVuY3Rpb24gZChlMCx4MCl7cmV0dXJuIEUoZTAseDApPT09MD8xOjB9ZnVuY3Rpb24gdyhlMCx4MCl7Zm9yKHZhciBsPWUwLGMwPXgwOzspe2lmKHR5cGVvZiBsPT1cIm51bWJlclwiKXJldHVybiAxO2lmKGxbMF09PT0wKXt2YXIgdDA9bFsxXTtpZih0eXBlb2YgYzAhPVwibnVtYmVyXCIpe2lmKGMwWzBdPT09MCl7dmFyIG8wPW8odFsxXSx0MCxjMFsxXSk9PT0wPzE6MCx3MD1vMCYmMTtyZXR1cm4gdzB9dmFyIF8wPW8odFsxXSx0MCxjMFsyXSk7aWYoXzA9PT0wKXJldHVybiAxO2lmKDA8PV8wKXt2YXIgYzA9YzBbNF07Y29udGludWV9dmFyIGMwPWMwWzNdO2NvbnRpbnVlfX1lbHNle3ZhciBFMD1sWzRdLFUwPWxbM10sYj1sWzJdO2lmKHR5cGVvZiBjMCE9XCJudW1iZXJcIil7aWYoYzBbMF09PT0wKXt2YXIgUjA9bFsxXT09PTE/MTowLFg9UjAmJihvKHRbMV0sYixjMFsxXSk9PT0wPzE6MCk7cmV0dXJuIFh9dmFyIHMwPWMwWzRdLGhyPWMwWzNdLEFyPW8odFsxXSxiLGMwWzJdKTtpZihBcj09PTApe3ZhciBvcj13KFUwLGhyKTtpZihvcil7dmFyIGw9RTAsYzA9czA7Y29udGludWV9cmV0dXJuIG9yfWlmKDA8PUFyKXt2YXIgVzA9dyhZNyhzdCxiLEUwKSxzMCk7aWYoVzApe3ZhciBsPVUwO2NvbnRpbnVlfXJldHVybiBXMH12YXIgTHI9dyhZNyhVMCxiLHN0KSxocik7aWYoTHIpe3ZhciBsPUUwO2NvbnRpbnVlfXJldHVybiBMcn19cmV0dXJuIDB9fWZ1bmN0aW9uIEcoZTAseDApe2Zvcih2YXIgbD14MDs7KXtpZih0eXBlb2YgbD09XCJudW1iZXJcIilyZXR1cm4gMDtpZihsWzBdPT09MClyZXR1cm4gdShlMCxsWzFdKTtHKGUwLGxbM10pLHUoZTAsbFsyXSk7dmFyIGw9bFs0XX19ZnVuY3Rpb24gQShlMCx4MCxsKXtmb3IodmFyIGMwPXgwLHQwPWw7Oyl7aWYodHlwZW9mIGMwPT1cIm51bWJlclwiKXJldHVybiB0MDtpZihjMFswXT09PTApcmV0dXJuIG8oZTAsYzBbMV0sdDApO3ZhciBvMD1BKGUwLGMwWzNdLHQwKSx3MD1vKGUwLGMwWzJdLG8wKSxjMD1jMFs0XSx0MD13MH19ZnVuY3Rpb24gUyhlMCx4MCl7Zm9yKHZhciBsPXgwOzspe2lmKHR5cGVvZiBsPT1cIm51bWJlclwiKXJldHVybiAxO2lmKGxbMF09PT0wKXJldHVybiB1KGUwLGxbMV0pO3ZhciBjMD11KGUwLGxbMl0pO2lmKGMwKXt2YXIgdDA9UyhlMCxsWzNdKTtpZih0MCl7dmFyIGw9bFs0XTtjb250aW51ZX12YXIgbzA9dDB9ZWxzZSB2YXIgbzA9YzA7cmV0dXJuIG8wfX1mdW5jdGlvbiBNKGUwLHgwKXtmb3IodmFyIGw9eDA7Oyl7aWYodHlwZW9mIGw9PVwibnVtYmVyXCIpcmV0dXJuIDA7aWYobFswXT09PTApcmV0dXJuIHUoZTAsbFsxXSk7dmFyIGMwPXUoZTAsbFsyXSk7aWYoYzApdmFyIHQwPWMwO2Vsc2V7dmFyIG8wPU0oZTAsbFszXSk7aWYoIW8wKXt2YXIgbD1sWzRdO2NvbnRpbnVlfXZhciB0MD1vMH1yZXR1cm4gdDB9fWZ1bmN0aW9uIEsoZTAseDApe2lmKHR5cGVvZiB4MD09XCJudW1iZXJcIilyZXR1cm4gc3Q7aWYoeDBbMF09PT0wKXJldHVybiB1KGUwLHgwWzFdKT94MDpzdDt2YXIgbD14MFs0XSxjMD14MFszXSx0MD14MFsyXSxvMD1LKGUwLGMwKSx3MD11KGUwLHQwKSxfMD1LKGUwLGwpO3JldHVybiB3MD9jMD09PW8wJiZsPT09XzA/eDA6VnUobzAsdDAsXzApOkRsKG8wLF8wKX1mdW5jdGlvbiBWKGUwLHgwKXtpZih0eXBlb2YgeDA9PVwibnVtYmVyXCIpcmV0dXJuWzAsc3Qsc3RdO2lmKHgwWzBdPT09MClyZXR1cm4gdShlMCx4MFsxXSk/WzAseDAsc3RdOlswLHN0LHgwXTt2YXIgbD14MFsyXSxjMD1WKGUwLHgwWzNdKSx0MD1jMFsyXSxvMD1jMFsxXSx3MD11KGUwLGwpLF8wPVYoZTAseDBbNF0pLEUwPV8wWzJdLFUwPV8wWzFdO2lmKHcwKXt2YXIgYj1EbCh0MCxFMCk7cmV0dXJuWzAsVnUobzAsbCxVMCksYl19dmFyIFIwPVZ1KHQwLGwsRTApO3JldHVyblswLERsKG8wLFUwKSxSMF19ZnVuY3Rpb24gZjAoZTAseDApe2Zvcih2YXIgbD14MDs7KXtpZih0eXBlb2YgbD09XCJudW1iZXJcIil0aHJvdyBKdDtpZihsWzBdPT09MCl7dmFyIGMwPWxbMV07aWYobyh0WzFdLGUwLGMwKT09PTApcmV0dXJuIGMwO3Rocm93IEp0fXZhciB0MD1sWzJdLG8wPW8odFsxXSxlMCx0MCk7aWYobzA9PT0wKXJldHVybiB0MDt2YXIgdzA9MDw9bzA/bFs0XTpsWzNdLGw9dzB9fWZ1bmN0aW9uIG0wKGUwLHgwKXtmb3IodmFyIGw9eDA7Oyl7aWYodHlwZW9mIGw9PVwibnVtYmVyXCIpcmV0dXJuIDA7aWYobFswXT09PTApe3ZhciBjMD1sWzFdLHQwPW8odFsxXSxlMCxjMCk9PT0wPzE6MCxvMD10MCYmWzAsYzBdO3JldHVybiBvMH12YXIgdzA9bFsyXSxfMD1vKHRbMV0sZTAsdzApO2lmKF8wPT09MClyZXR1cm5bMCx3MF07dmFyIEUwPTA8PV8wP2xbNF06bFszXSxsPUUwfX1mdW5jdGlvbiBrMChlMCx4MCl7aWYodHlwZW9mIHgwPT1cIm51bWJlclwiKXJldHVybiBzdDtpZih4MFswXT09PTApe3ZhciBsPXgwWzFdLGMwPXUoZTAsbCk7cmV0dXJuIGw9PT1jMD94MDpbMCxjMF19dmFyIHQwPXgwWzRdLG8wPXgwWzNdLHcwPXgwWzJdLF8wPWswKGUwLG8wKSxFMD11KGUwLHcwKSxVMD1rMChlMCx0MCk7aWYobzA9PT1fMCYmdzA9PT1FMCYmdDA9PT1VMClyZXR1cm4geDA7dmFyIGI9MDtpZighckwoXzApKXt2YXIgUjA9UTAwKF8wKTswPD1vKHRbMV0sUjAsRTApJiYoYj0xKX1pZighYil7dmFyIFg9MDtpZighckwoVTApKXt2YXIgczA9UGwoVTApOzA8PW8odFsxXSxFMCxzMCkmJihYPTEpfWlmKCFYKXJldHVybiBWdShfMCxFMCxVMCl9cmV0dXJuIGMoXzAsbihFMCxVMCkpfWZ1bmN0aW9uIGcwKGUwKXtpZihlMCl7dmFyIHgwPWUwWzJdLGw9ZTBbMV07aWYoeDApe3ZhciBjMD14MFsyXSx0MD14MFsxXTtpZihjMCl7dmFyIG8wPWMwWzJdLHcwPWMwWzFdO2lmKG8wKXt2YXIgXzA9bzBbMl0sRTA9bzBbMV07aWYoXzApe2lmKF8wWzJdKXt2YXIgVTA9dFsxXSxiPWZ1bmN0aW9uKG9yLFcwKXtpZihvcj09PTIpe2lmKFcwKXt2YXIgTHI9VzBbMl07aWYoTHIpe3ZhciBUcj1MclsxXSxIcj1XMFsxXSxPcj1MclsyXSxmcj1vKFUwLEhyLFRyKSxScj1mcj09PTA/WzAsSHIsMF06MDxmcj9bMCxIcixbMCxUciwwXV06WzAsVHIsWzAsSHIsMF1dO3JldHVyblswLFJyLE9yXX19fWVsc2UgaWYob3I9PT0zJiZXMCl7dmFyIFdyPVcwWzJdO2lmKFdyKXt2YXIgSnI9V3JbMl07aWYoSnIpe3ZhciBhcj1KclsxXSxfcj1XclsxXSxJcj1XMFsxXSxmZT1KclsyXSx2MD1vKFUwLElyLF9yKTtpZih2MD09PTApdmFyIFA9byhVMCxfcixhciksTD1QPT09MD9bMCxfciwwXTowPFA/WzAsX3IsWzAsYXIsMF1dOlswLGFyLFswLF9yLDBdXSxRPUw7ZWxzZSBpZigwPHYwKXt2YXIgaTA9byhVMCxfcixhcik7aWYoaTA9PT0wKXZhciBUMD1bMCxJcixbMCxfciwwXV07ZWxzZSBpZigwPGkwKXZhciBUMD1bMCxJcixbMCxfcixbMCxhciwwXV1dO2Vsc2UgdmFyIGwwPW8oVTAsSXIsYXIpLFMwPWwwPT09MD9bMCxJcixbMCxfciwwXV06MDxsMD9bMCxJcixbMCxhcixbMCxfciwwXV1dOlswLGFyLFswLElyLFswLF9yLDBdXV0sVDA9UzA7dmFyIFE9VDB9ZWxzZXt2YXIgcnI9byhVMCxJcixhcik7aWYocnI9PT0wKXZhciBaPVswLF9yLFswLElyLDBdXTtlbHNlIGlmKDA8cnIpdmFyIFo9WzAsX3IsWzAsSXIsWzAsYXIsMF1dXTtlbHNlIHZhciBMMD1vKFUwLF9yLGFyKSxCPUwwPT09MD9bMCxfcixbMCxJciwwXV06MDxMMD9bMCxfcixbMCxhcixbMCxJciwwXV1dOlswLGFyLFswLF9yLFswLElyLDBdXV0sWj1CO3ZhciBRPVp9cmV0dXJuWzAsUSxmZV19fX1mb3IodmFyIHAwPW9yPj4xLGIwPVIwKHAwLFcwKSxPMD1iMFsxXSxNMD1SMChvci1wMHwwLGIwWzJdKSxlcj1PMCx5cj1NMFsxXSx2cj0wLCQwPU0wWzJdOzspe2lmKGVyKXtpZih5cil7dmFyIEVyPXlyWzJdLE1yPXlyWzFdLEJyPWVyWzJdLHFyPWVyWzFdLGpyPW8oVTAscXIsTXIpO2lmKGpyPT09MCl7dmFyIGVyPUJyLHlyPUVyLHZyPVswLHFyLHZyXTtjb250aW51ZX1pZigwPD1qcil7dmFyIHlyPUVyLHZyPVswLE1yLHZyXTtjb250aW51ZX12YXIgZXI9QnIsdnI9WzAscXIsdnJdO2NvbnRpbnVlfXZhciAkcj1MYyhlcix2cil9ZWxzZSB2YXIgJHI9TGMoeXIsdnIpO3JldHVyblswLCRyLCQwXX19LFIwPWZ1bmN0aW9uKG9yLFcwKXtpZihvcj09PTIpe2lmKFcwKXt2YXIgTHI9VzBbMl07aWYoTHIpe3ZhciBUcj1MclsxXSxIcj1XMFsxXSxPcj1MclsyXSxmcj1vKFUwLEhyLFRyKSxScj1mcj09PTA/WzAsSHIsMF06MDw9ZnI/WzAsVHIsWzAsSHIsMF1dOlswLEhyLFswLFRyLDBdXTtyZXR1cm5bMCxScixPcl19fX1lbHNlIGlmKG9yPT09MyYmVzApe3ZhciBXcj1XMFsyXTtpZihXcil7dmFyIEpyPVdyWzJdO2lmKEpyKXt2YXIgYXI9SnJbMV0sX3I9V3JbMV0sSXI9VzBbMV0sZmU9SnJbMl0sdjA9byhVMCxJcixfcik7aWYodjA9PT0wKXZhciBQPW8oVTAsX3IsYXIpLEw9UD09PTA/WzAsX3IsMF06MDw9UD9bMCxhcixbMCxfciwwXV06WzAsX3IsWzAsYXIsMF1dLFE9TDtlbHNlIGlmKDA8PXYwKXt2YXIgaTA9byhVMCxJcixhcik7aWYoaTA9PT0wKXZhciBUMD1bMCxfcixbMCxJciwwXV07ZWxzZSBpZigwPD1pMCl2YXIgbDA9byhVMCxfcixhciksUzA9bDA9PT0wP1swLF9yLFswLElyLDBdXTowPD1sMD9bMCxhcixbMCxfcixbMCxJciwwXV1dOlswLF9yLFswLGFyLFswLElyLDBdXV0sVDA9UzA7ZWxzZSB2YXIgVDA9WzAsX3IsWzAsSXIsWzAsYXIsMF1dXTt2YXIgUT1UMH1lbHNle3ZhciBycj1vKFUwLF9yLGFyKTtpZihycj09PTApdmFyIFo9WzAsSXIsWzAsX3IsMF1dO2Vsc2UgaWYoMDw9cnIpdmFyIEwwPW8oVTAsSXIsYXIpLEI9TDA9PT0wP1swLElyLFswLF9yLDBdXTowPD1MMD9bMCxhcixbMCxJcixbMCxfciwwXV1dOlswLElyLFswLGFyLFswLF9yLDBdXV0sWj1CO2Vsc2UgdmFyIFo9WzAsSXIsWzAsX3IsWzAsYXIsMF1dXTt2YXIgUT1afXJldHVyblswLFEsZmVdfX19Zm9yKHZhciBwMD1vcj4+MSxiMD1iKHAwLFcwKSxPMD1iMFsxXSxNMD1iKG9yLXAwfDAsYjBbMl0pLGVyPU8wLHlyPU0wWzFdLHZyPTAsJDA9TTBbMl07Oyl7aWYoZXIpe2lmKHlyKXt2YXIgRXI9eXJbMl0sTXI9eXJbMV0sQnI9ZXJbMl0scXI9ZXJbMV0sanI9byhVMCxxcixNcik7aWYoanI9PT0wKXt2YXIgZXI9QnIseXI9RXIsdnI9WzAscXIsdnJdO2NvbnRpbnVlfWlmKDA8anIpe3ZhciBlcj1Ccix2cj1bMCxxcix2cl07Y29udGludWV9dmFyIHlyPUVyLHZyPVswLE1yLHZyXTtjb250aW51ZX12YXIgJHI9TGMoZXIsdnIpfWVsc2UgdmFyICRyPUxjKHlyLHZyKTtyZXR1cm5bMCwkciwkMF19fSxYPURjKGUwKSxzMD0yPD1YP1IwKFgsZTApWzFdOmUwLGhyPWZ1bmN0aW9uKG9yLFcwKXtpZighKDM8b3I+Pj4wKSlzd2l0Y2gob3Ipe2Nhc2UgMDpyZXR1cm5bMCwwLFcwXTtjYXNlIDE6aWYoVzApcmV0dXJuWzAsWzAsVzBbMV1dLFcwWzJdXTticmVhaztjYXNlIDI6aWYoVzApe3ZhciBMcj1XMFsyXTtpZihMcilyZXR1cm5bMCxbMSwyLExyWzFdLFswLFcwWzFdXSwwXSxMclsyXV19YnJlYWs7ZGVmYXVsdDppZihXMCl7dmFyIFRyPVcwWzJdO2lmKFRyKXt2YXIgSHI9VHJbMl07aWYoSHIpcmV0dXJuWzAsWzEsMixUclsxXSxbMCxXMFsxXV0sWzAsSHJbMV1dXSxIclsyXV19fX12YXIgT3I9b3IvMnwwLGZyPWhyKE9yLFcwKSxScj1mclsyXTtpZihScil7dmFyIFdyPWhyKChvci1PcnwwKS0xfDAsUnJbMl0pLEpyPVdyWzJdO3JldHVyblswLE5zKGZyWzFdLFJyWzFdLFdyWzFdKSxKcl19dGhyb3dbMCxTbixLcHJdfTtyZXR1cm4gaHIoRGMoczApLHMwKVsxXX12YXIgQXI9bihFMCxuKHcwLG4odDAsWzAsbF0pKSk7cmV0dXJuIG4oXzBbMV0sQXIpfXJldHVybiBuKEUwLG4odzAsbih0MCxbMCxsXSkpKX1yZXR1cm4gbih3MCxuKHQwLFswLGxdKSl9cmV0dXJuIG4odDAsWzAsbF0pfXJldHVyblswLGxdfXJldHVybiBzdH1yZXR1cm5bMCxzdCxyTCxpLG4sSWVlLHgsYyxzLHksVCxFLGQsdyxHLGswLEEsUyxNLEssVixRRCxlcjAsUGwsWjAwLFEwMCxBZWUsUGwsWjAwLGYwLG0wLE9lZSxnMCxmdW5jdGlvbihlMCx4MCxsKXt1KGYoeDApLFhwcik7dmFyIGMwPWVyMChsKTtjMCYmdShmKHgwKSxZcHIpO3ZhciB0MD0wO3JldHVybiBsZShmdW5jdGlvbihvMCx3MCl7cmV0dXJuIG8wJiZ1KGYoeDApLEhwciksbyhlMCx4MCx3MCksMX0sdDAsYzApLGMwJiZ1KGYoeDApLFZwciksdShmKHgwKSx6cHIpfSwkRF19dmFyIG5yMD1XcHIuc2xpY2UoKTtmdW5jdGlvbiBuTCh0KXtmb3IodmFyIG49MCxlPW5yMC5sZW5ndGgtMS0xfDA7Oyl7aWYoZTxuKXJldHVybiAwO3ZhciBpPW4rKChlLW58MCkvMnwwKXwwLHg9bnIwWzEraV07aWYodDx4WzFdKXt2YXIgZT1pLTF8MDtjb250aW51ZX1pZih4WzJdPD10KXt2YXIgbj1pKzF8MDtjb250aW51ZX1yZXR1cm4gMX19dmFyIHRyMD1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9O04odHIwLGZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpe3ZhciBlPXQ7aWYoNTU8PWUpc3dpdGNoKGUpe2Nhc2UgNTU6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBpPW4hPT01NT8xOjA7aWYoIWkpcmV0dXJuIGl9YnJlYWs7Y2FzZSA1NjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIHg9biE9PTU2PzE6MDtpZigheClyZXR1cm4geH1icmVhaztjYXNlIDU3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgYz1uIT09NTc/MTowO2lmKCFjKXJldHVybiBjfWJyZWFrO2Nhc2UgNTg6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBzPW4hPT01OD8xOjA7aWYoIXMpcmV0dXJuIHN9YnJlYWs7Y2FzZSA1OTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIHA9biE9PTU5PzE6MDtpZighcClyZXR1cm4gcH1icmVhaztjYXNlIDYwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgeT1uIT09NjA/MTowO2lmKCF5KXJldHVybiB5fWJyZWFrO2Nhc2UgNjE6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBUPW4hPT02MT8xOjA7aWYoIVQpcmV0dXJuIFR9YnJlYWs7Y2FzZSA2MjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIEU9biE9PTYyPzE6MDtpZighRSlyZXR1cm4gRX1icmVhaztjYXNlIDYzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgZD1uIT09NjM/MTowO2lmKCFkKXJldHVybiBkfWJyZWFrO2Nhc2UgNjQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciB3PW4hPT02ND8xOjA7aWYoIXcpcmV0dXJuIHd9YnJlYWs7Y2FzZSA2NTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIEc9biE9PTY1PzE6MDtpZighRylyZXR1cm4gR31icmVhaztjYXNlIDY2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgQT1uIT09NjY/MTowO2lmKCFBKXJldHVybiBBfWJyZWFrO2Nhc2UgNjc6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBTPW4hPT02Nz8xOjA7aWYoIVMpcmV0dXJuIFN9YnJlYWs7Y2FzZSA2ODppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIE09biE9PTY4PzE6MDtpZighTSlyZXR1cm4gTX1icmVhaztjYXNlIDY5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgSz1uIT09Njk/MTowO2lmKCFLKXJldHVybiBLfWJyZWFrO2Nhc2UgNzA6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBWPW4hPT03MD8xOjA7aWYoIVYpcmV0dXJuIFZ9YnJlYWs7Y2FzZSA3MTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIGYwPW4hPT03MT8xOjA7aWYoIWYwKXJldHVybiBmMH1icmVhaztjYXNlIDcyOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgbTA9biE9PTcyPzE6MDtpZighbTApcmV0dXJuIG0wfWJyZWFrO2Nhc2UgNzM6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBrMD1uIT09NzM/MTowO2lmKCFrMClyZXR1cm4gazB9YnJlYWs7Y2FzZSA3NDppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIGcwPW4hPT03ND8xOjA7aWYoIWcwKXJldHVybiBnMH1icmVhaztjYXNlIDc1OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgZTA9biE9PTc1PzE6MDtpZighZTApcmV0dXJuIGUwfWJyZWFrO2Nhc2UgNzY6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciB4MD1uIT09NzY/MTowO2lmKCF4MClyZXR1cm4geDB9YnJlYWs7Y2FzZSA3NzppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIGw9biE9PTc3PzE6MDtpZighbClyZXR1cm4gbH1icmVhaztjYXNlIDc4OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgYzA9biE9PTc4PzE6MDtpZighYzApcmV0dXJuIGMwfWJyZWFrO2Nhc2UgNzk6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciB0MD1uIT09Nzk/MTowO2lmKCF0MClyZXR1cm4gdDB9YnJlYWs7Y2FzZSA4MDppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIG8wPW4hPT04MD8xOjA7aWYoIW8wKXJldHVybiBvMH1icmVhaztjYXNlIDgxOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgdzA9biE9PTgxPzE6MDtpZighdzApcmV0dXJuIHcwfWJyZWFrO2Nhc2UgODI6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBfMD1uIT09ODI/MTowO2lmKCFfMClyZXR1cm4gXzB9YnJlYWs7Y2FzZSA4MzppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIEUwPW4hPT04Mz8xOjA7aWYoIUUwKXJldHVybiBFMH1icmVhaztjYXNlIDg0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgVTA9biE9PTg0PzE6MDtpZighVTApcmV0dXJuIFUwfWJyZWFrO2Nhc2UgODU6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBiPW4hPT04NT8xOjA7aWYoIWIpcmV0dXJuIGJ9YnJlYWs7Y2FzZSA4NjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIFIwPW4hPT04Nj8xOjA7aWYoIVIwKXJldHVybiBSMH1icmVhaztjYXNlIDg3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgWD1uIT09ODc/MTowO2lmKCFYKXJldHVybiBYfWJyZWFrO2Nhc2UgODg6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBzMD1uIT09ODg/MTowO2lmKCFzMClyZXR1cm4gczB9YnJlYWs7Y2FzZSA4OTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIGhyPW4hPT04OT8xOjA7aWYoIWhyKXJldHVybiBocn1icmVhaztjYXNlIDkwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgQXI9biE9PTkwPzE6MDtpZighQXIpcmV0dXJuIEFyfWJyZWFrO2Nhc2UgOTE6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBvcj1uIT09OTE/MTowO2lmKCFvcilyZXR1cm4gb3J9YnJlYWs7Y2FzZSA5MjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIFcwPW4hPT05Mj8xOjA7aWYoIVcwKXJldHVybiBXMH1icmVhaztjYXNlIDkzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgTHI9biE9PTkzPzE6MDtpZighTHIpcmV0dXJuIExyfWJyZWFrO2Nhc2UgOTQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBUcj1uIT09OTQ/MTowO2lmKCFUcilyZXR1cm4gVHJ9YnJlYWs7Y2FzZSA5NTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIEhyPW4hPT05NT8xOjA7aWYoIUhyKXJldHVybiBIcn1icmVhaztjYXNlIDk2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgT3I9biE9PTk2PzE6MDtpZighT3IpcmV0dXJuIE9yfWJyZWFrO2Nhc2UgOTc6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBmcj1uIT09OTc/MTowO2lmKCFmcilyZXR1cm4gZnJ9YnJlYWs7Y2FzZSA5ODppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIFJyPW4hPT05OD8xOjA7aWYoIVJyKXJldHVybiBScn1icmVhaztjYXNlIDk5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgV3I9biE9PTk5PzE6MDtpZighV3IpcmV0dXJuIFdyfWJyZWFrO2Nhc2UgMTAwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgSnI9dGkhPT1uPzE6MDtpZighSnIpcmV0dXJuIEpyfWJyZWFrO2Nhc2UgMTAxOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgYXI9UjchPT1uPzE6MDtpZighYXIpcmV0dXJuIGFyfWJyZWFrO2Nhc2UgMTAyOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgX3I9UmkhPT1uPzE6MDtpZighX3IpcmV0dXJuIF9yfWJyZWFrO2Nhc2UgMTAzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgSXI9czchPT1uPzE6MDtpZighSXIpcmV0dXJuIElyfWJyZWFrO2Nhc2UgMTA0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgZmU9TDchPT1uPzE6MDtpZighZmUpcmV0dXJuIGZlfWJyZWFrO2Nhc2UgMTA1OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgdjA9ajchPT1uPzE6MDtpZighdjApcmV0dXJuIHYwfWJyZWFrO2Nhc2UgMTA2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgUD1ZdCE9PW4/MTowO2lmKCFQKXJldHVybiBQfWJyZWFrO2Nhc2UgMTA3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgTD1aYyE9PW4/MTowO2lmKCFMKXJldHVybiBMfWJyZWFrO2RlZmF1bHQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJmlzPD1uKXJldHVybiAwfWVsc2Ugc3dpdGNoKGUpe2Nhc2UgMDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmIW4pcmV0dXJuIG47YnJlYWs7Y2FzZSAxOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgUT1uIT09MT8xOjA7aWYoIVEpcmV0dXJuIFF9YnJlYWs7Y2FzZSAyOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgaTA9biE9PTI/MTowO2lmKCFpMClyZXR1cm4gaTB9YnJlYWs7Y2FzZSAzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgbDA9biE9PTM/MTowO2lmKCFsMClyZXR1cm4gbDB9YnJlYWs7Y2FzZSA0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgUzA9biE9PTQ/MTowO2lmKCFTMClyZXR1cm4gUzB9YnJlYWs7Y2FzZSA1OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgVDA9biE9PTU/MTowO2lmKCFUMClyZXR1cm4gVDB9YnJlYWs7Y2FzZSA2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgcnI9biE9PTY/MTowO2lmKCFycilyZXR1cm4gcnJ9YnJlYWs7Y2FzZSA3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgTDA9biE9PTc/MTowO2lmKCFMMClyZXR1cm4gTDB9YnJlYWs7Y2FzZSA4OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgQj1uIT09OD8xOjA7aWYoIUIpcmV0dXJuIEJ9YnJlYWs7Y2FzZSA5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgWj1uIT09OT8xOjA7aWYoIVopcmV0dXJuIFp9YnJlYWs7Y2FzZSAxMDppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIHAwPW4hPT0xMD8xOjA7aWYoIXAwKXJldHVybiBwMH1icmVhaztjYXNlIDExOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgYjA9biE9PTExPzE6MDtpZighYjApcmV0dXJuIGIwfWJyZWFrO2Nhc2UgMTI6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBPMD1uIT09MTI/MTowO2lmKCFPMClyZXR1cm4gTzB9YnJlYWs7Y2FzZSAxMzppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIE0wPW4hPT0xMz8xOjA7aWYoIU0wKXJldHVybiBNMH1icmVhaztjYXNlIDE0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgZXI9biE9PTE0PzE6MDtpZighZXIpcmV0dXJuIGVyfWJyZWFrO2Nhc2UgMTU6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciB5cj1uIT09MTU/MTowO2lmKCF5cilyZXR1cm4geXJ9YnJlYWs7Y2FzZSAxNjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIHZyPW4hPT0xNj8xOjA7aWYoIXZyKXJldHVybiB2cn1icmVhaztjYXNlIDE3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgJDA9biE9PTE3PzE6MDtpZighJDApcmV0dXJuICQwfWJyZWFrO2Nhc2UgMTg6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBFcj1uIT09MTg/MTowO2lmKCFFcilyZXR1cm4gRXJ9YnJlYWs7Y2FzZSAxOTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIE1yPW4hPT0xOT8xOjA7aWYoIU1yKXJldHVybiBNcn1icmVhaztjYXNlIDIwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgQnI9biE9PTIwPzE6MDtpZighQnIpcmV0dXJuIEJyfWJyZWFrO2Nhc2UgMjE6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBxcj1uIT09MjE/MTowO2lmKCFxcilyZXR1cm4gcXJ9YnJlYWs7Y2FzZSAyMjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIGpyPW4hPT0yMj8xOjA7aWYoIWpyKXJldHVybiBqcn1icmVhaztjYXNlIDIzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgJHI9biE9PTIzPzE6MDtpZighJHIpcmV0dXJuICRyfWJyZWFrO2Nhc2UgMjQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBuZT1uIT09MjQ/MTowO2lmKCFuZSlyZXR1cm4gbmV9YnJlYWs7Y2FzZSAyNTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIFFyPW4hPT0yNT8xOjA7aWYoIVFyKXJldHVybiBRcn1icmVhaztjYXNlIDI2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgYmU9biE9PTI2PzE6MDtpZighYmUpcmV0dXJuIGJlfWJyZWFrO2Nhc2UgMjc6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBhZT1uIT09Mjc/MTowO2lmKCFhZSlyZXR1cm4gYWV9YnJlYWs7Y2FzZSAyODppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIHBlPW4hPT0yOD8xOjA7aWYoIXBlKXJldHVybiBwZX1icmVhaztjYXNlIDI5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgb2U9biE9PTI5PzE6MDtpZighb2UpcmV0dXJuIG9lfWJyZWFrO2Nhc2UgMzA6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBjZT1uIT09MzA/MTowO2lmKCFjZSlyZXR1cm4gY2V9YnJlYWs7Y2FzZSAzMTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIGdlPW4hPT0zMT8xOjA7aWYoIWdlKXJldHVybiBnZX1icmVhaztjYXNlIDMyOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgcTA9biE9PTMyPzE6MDtpZighcTApcmV0dXJuIHEwfWJyZWFrO2Nhc2UgMzM6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBGcj1uIT09MzM/MTowO2lmKCFGcilyZXR1cm4gRnJ9YnJlYWs7Y2FzZSAzNDppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIF89biE9PTM0PzE6MDtpZighXylyZXR1cm4gX31icmVhaztjYXNlIDM1OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgaz1uIT09MzU/MTowO2lmKCFrKXJldHVybiBrfWJyZWFrO2Nhc2UgMzY6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBJPW4hPT0zNj8xOjA7aWYoIUkpcmV0dXJuIEl9YnJlYWs7Y2FzZSAzNzppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIFU9biE9PTM3PzE6MDtpZighVSlyZXR1cm4gVX1icmVhaztjYXNlIDM4OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgWT1uIT09Mzg/MTowO2lmKCFZKXJldHVybiBZfWJyZWFrO2Nhc2UgMzk6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciB5MD1uIT09Mzk/MTowO2lmKCF5MClyZXR1cm4geTB9YnJlYWs7Y2FzZSA0MDppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIFAwPW4hPT00MD8xOjA7aWYoIVAwKXJldHVybiBQMH1icmVhaztjYXNlIDQxOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgSTA9biE9PTQxPzE6MDtpZighSTApcmV0dXJuIEkwfWJyZWFrO2Nhc2UgNDI6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBEPW4hPT00Mj8xOjA7aWYoIUQpcmV0dXJuIER9YnJlYWs7Y2FzZSA0MzppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIHUwPW4hPT00Mz8xOjA7aWYoIXUwKXJldHVybiB1MH1icmVhaztjYXNlIDQ0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgWDA9biE9PTQ0PzE6MDtpZighWDApcmV0dXJuIFgwfWJyZWFrO2Nhc2UgNDU6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBKMD1uIT09NDU/MTowO2lmKCFKMClyZXR1cm4gSjB9YnJlYWs7Y2FzZSA0NjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIGlyPW4hPT00Nj8xOjA7aWYoIWlyKXJldHVybiBpcn1icmVhaztjYXNlIDQ3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgUTA9biE9PTQ3PzE6MDtpZighUTApcmV0dXJuIFEwfWJyZWFrO2Nhc2UgNDg6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBGMD1uIT09NDg/MTowO2lmKCFGMClyZXR1cm4gRjB9YnJlYWs7Y2FzZSA0OTppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIFNyPW4hPT00OT8xOjA7aWYoIVNyKXJldHVybiBTcn1icmVhaztjYXNlIDUwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgbXI9biE9PTUwPzE6MDtpZighbXIpcmV0dXJuIG1yfWJyZWFrO2Nhc2UgNTE6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBDcj1uIT09NTE/MTowO2lmKCFDcilyZXR1cm4gQ3J9YnJlYWs7Y2FzZSA1MjppZih0eXBlb2Ygbj09XCJudW1iZXJcIil7dmFyIHNyPW4hPT01Mj8xOjA7aWYoIXNyKXJldHVybiBzcn1icmVhaztjYXNlIDUzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgUHI9biE9PTUzPzE6MDtpZighUHIpcmV0dXJuIFByfWJyZWFrO2RlZmF1bHQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCIpe3ZhciBLMD1uIT09NTQ/MTowO2lmKCFLMClyZXR1cm4gSzB9fX1lbHNlIHN3aXRjaCh0WzBdKXtjYXNlIDA6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0wKXt2YXIgVXI9RWUodFsxXSxuWzFdKTtyZXR1cm4gVXI9PT0wP0VlKHRbMl0sblsyXSk6VXJ9YnJlYWs7Y2FzZSAxOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MSl7dmFyIGgwPUVlKHRbMV0sblsxXSk7cmV0dXJuIGgwPT09MD9FZSh0WzJdLG5bMl0pOmgwfWJyZWFrO2Nhc2UgMjppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTIpcmV0dXJuIEVlKHRbMV0sblsxXSk7YnJlYWs7Y2FzZSAzOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09Myl7dmFyIEtyPW5bMl0scmU9dFsyXSx4ZT1FZSh0WzFdLG5bMV0pO2lmKHhlPT09MCl7aWYocmUpcmV0dXJuIEtyP0VlKHJlWzFdLEtyWzFdKToxO3ZhciBSZT1LciYmLTE7cmV0dXJuIFJlfXJldHVybiB4ZX1icmVhaztjYXNlIDQ6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT00KXJldHVybiBFZSh0WzFdLG5bMV0pO2JyZWFrO2Nhc2UgNTppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTUpe3ZhciB2ZT1uWzJdLEllPXRbMl0sR2U9RWUodFsxXSxuWzFdKTtpZihHZT09PTApe2lmKEllKWlmKHZlKXt2YXIgTWU9dmVbMV0sYW49SWVbMV0sV2U9MDtzd2l0Y2goYW4pe2Nhc2UgMDppZihNZSlXZT0xO2Vsc2UgdmFyIHZuPU1lO2JyZWFrO2Nhc2UgMTp2YXIgQWU9TWUhPT0xPzE6MDtpZihBZSlXZT0xO2Vsc2UgdmFyIHZuPUFlO2JyZWFrO2Nhc2UgMjp2YXIgY249TWUhPT0yPzE6MDtpZihjbilXZT0xO2Vsc2UgdmFyIHZuPWNuO2JyZWFrO2RlZmF1bHQ6aWYoMzw9TWUpdmFyIHZuPTA7ZWxzZSBXZT0xfWlmKFdlKXZhciBybj1mdW5jdGlvbihDdCl7c3dpdGNoKEN0KXtjYXNlIDA6cmV0dXJuIDA7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAzfX0sa249cm4oTWUpLHZuPUFjKHJuKGFuKSxrbik7dmFyIE5lPXZufWVsc2UgdmFyIE5lPTE7ZWxzZSB2YXIgTmU9dmUmJi0xO3JldHVybiBOZT09PTA/RWUodFszXSxuWzNdKTpOZX1yZXR1cm4gR2V9YnJlYWs7Y2FzZSA2OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09Nil7dmFyIEplPUVlKHRbMV0sblsxXSk7cmV0dXJuIEplPT09MD9FZSh0WzJdLG5bMl0pOkplfWJyZWFrO2Nhc2UgNzppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTcpcmV0dXJuIEFjKHRbMV0sblsxXSk7YnJlYWs7Y2FzZSA4OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09OCl7dmFyIGVuPUVlKHRbMV0sblsxXSk7cmV0dXJuIGVuPT09MD9FZSh0WzJdLG5bMl0pOmVufWJyZWFrO2Nhc2UgOTppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTkpcmV0dXJuIEVlKHRbMV0sblsxXSk7YnJlYWs7Y2FzZSAxMDppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTEwKXJldHVybiBFZSh0WzFdLG5bMV0pO2JyZWFrO2Nhc2UgMTE6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xMSl7dmFyIF9uPUVlKHRbMV0sblsxXSk7cmV0dXJuIF9uPT09MD9FZSh0WzJdLG5bMl0pOl9ufWJyZWFrO2Nhc2UgMTI6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xMil7dmFyIENuPUVlKHRbMV0sblsxXSk7cmV0dXJuIENuPT09MD9FZSh0WzJdLG5bMl0pOkNufWJyZWFrO2Nhc2UgMTM6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xMylyZXR1cm4gRWUodFsxXSxuWzFdKTticmVhaztjYXNlIDE0OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MTQpcmV0dXJuIEFjKHRbMV0sblsxXSk7YnJlYWs7Y2FzZSAxNTppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTE1KXJldHVybiBFZSh0WzFdLG5bMV0pO2JyZWFrO2Nhc2UgMTY6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xNil7dmFyIEhuPUVlKHRbMV0sblsxXSk7cmV0dXJuIEhuPT09MD9FZSh0WzJdLG5bMl0pOkhufWJyZWFrO2Nhc2UgMTc6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xNylyZXR1cm4gRWUodFsxXSxuWzFdKTticmVhaztjYXNlIDE4OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MTgpcmV0dXJuIEFjKHRbMV0sblsxXSk7YnJlYWs7Y2FzZSAxOTppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTE5KXJldHVybiBFZSh0WzFdLG5bMV0pO2JyZWFrO2Nhc2UgMjA6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0yMClyZXR1cm4gRWUodFsxXSxuWzFdKTticmVhaztjYXNlIDIxOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MjEpe3ZhciBGbj1FZSh0WzFdLG5bMV0pO2lmKEZuPT09MCl7dmFyIHZ0PUFjKHRbMl0sblsyXSk7aWYodnQ9PT0wKXt2YXIgTnQ9QWModFszXSxuWzNdKTtyZXR1cm4gTnQ9PT0wP0FjKHRbNF0sbls0XSk6TnR9cmV0dXJuIHZ0fXJldHVybiBGbn1icmVhaztjYXNlIDIyOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MjIpcmV0dXJuIEVlKHRbMV0sblsxXSk7YnJlYWs7ZGVmYXVsdDppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTIzKXJldHVybiBFZSh0WzFdLG5bMV0pfWZ1bmN0aW9uIGd0KHF0KXtpZih0eXBlb2YgcXQ9PVwibnVtYmVyXCIpe3ZhciBGdD1xdDtpZig1NTw9RnQpc3dpdGNoKEZ0KXtjYXNlIDU1OnJldHVybiA3MjtjYXNlIDU2OnJldHVybiA3MztjYXNlIDU3OnJldHVybiA3NDtjYXNlIDU4OnJldHVybiA3NjtjYXNlIDU5OnJldHVybiA3NztjYXNlIDYwOnJldHVybiA3ODtjYXNlIDYxOnJldHVybiA4MDtjYXNlIDYyOnJldHVybiA4MTtjYXNlIDYzOnJldHVybiA4MjtjYXNlIDY0OnJldHVybiA4MztjYXNlIDY1OnJldHVybiA4NDtjYXNlIDY2OnJldHVybiA4NTtjYXNlIDY3OnJldHVybiA4NjtjYXNlIDY4OnJldHVybiA4NztjYXNlIDY5OnJldHVybiA4ODtjYXNlIDcwOnJldHVybiA4OTtjYXNlIDcxOnJldHVybiA5MDtjYXNlIDcyOnJldHVybiA5MTtjYXNlIDczOnJldHVybiA5MjtjYXNlIDc0OnJldHVybiA5MztjYXNlIDc1OnJldHVybiA5NDtjYXNlIDc2OnJldHVybiA5NjtjYXNlIDc3OnJldHVybiA5NztjYXNlIDc4OnJldHVybiA5ODtjYXNlIDc5OnJldHVybiA5OTtjYXNlIDgwOnJldHVybiB0aTtjYXNlIDgxOnJldHVybiBSNztjYXNlIDgyOnJldHVybiBSaTtjYXNlIDgzOnJldHVybiBzNztjYXNlIDg0OnJldHVybiBMNztjYXNlIDg1OnJldHVybiBqNztjYXNlIDg2OnJldHVybiBZdDtjYXNlIDg3OnJldHVybiBaYztjYXNlIDg4OnJldHVybiBYdDtjYXNlIDg5OnJldHVybiBUNztjYXNlIDkwOnJldHVybiBQbjtjYXNlIDkxOnJldHVybiB0MTtjYXNlIDkyOnJldHVybiBBdjtjYXNlIDkzOnJldHVybiBmMTtjYXNlIDk0OnJldHVybiBBMjtjYXNlIDk1OnJldHVybiB6MjtjYXNlIDk2OnJldHVybiBTdjtjYXNlIDk3OnJldHVybiB1YztjYXNlIDk4OnJldHVybiB0bDtjYXNlIDk5OnJldHVybiBJbjtjYXNlIDEwMDpyZXR1cm4gdHM7Y2FzZSAxMDE6cmV0dXJuIGJyO2Nhc2UgMTAyOnJldHVybiBJWDtjYXNlIDEwMzpyZXR1cm4gem47Y2FzZSAxMDQ6cmV0dXJuIGp0O2Nhc2UgMTA1OnJldHVybiBKWTtjYXNlIDEwNjpyZXR1cm4genc7Y2FzZSAxMDc6cmV0dXJuIEpnO2RlZmF1bHQ6cmV0dXJuIEJIfXN3aXRjaChGdCl7Y2FzZSAwOnJldHVybiA0O2Nhc2UgMTpyZXR1cm4gODtjYXNlIDI6cmV0dXJuIDE1O2Nhc2UgMzpyZXR1cm4gMTY7Y2FzZSA0OnJldHVybiAxNztjYXNlIDU6cmV0dXJuIDE4O2Nhc2UgNjpyZXR1cm4gMTk7Y2FzZSA3OnJldHVybiAyMDtjYXNlIDg6cmV0dXJuIDIxO2Nhc2UgOTpyZXR1cm4gMjI7Y2FzZSAxMDpyZXR1cm4gMjM7Y2FzZSAxMTpyZXR1cm4gMjQ7Y2FzZSAxMjpyZXR1cm4gMjU7Y2FzZSAxMzpyZXR1cm4gMjY7Y2FzZSAxNDpyZXR1cm4gMjc7Y2FzZSAxNTpyZXR1cm4gMjg7Y2FzZSAxNjpyZXR1cm4gMjk7Y2FzZSAxNzpyZXR1cm4gMzA7Y2FzZSAxODpyZXR1cm4gMzE7Y2FzZSAxOTpyZXR1cm4gMzI7Y2FzZSAyMDpyZXR1cm4gMzM7Y2FzZSAyMTpyZXR1cm4gMzQ7Y2FzZSAyMjpyZXR1cm4gMzU7Y2FzZSAyMzpyZXR1cm4gMzY7Y2FzZSAyNDpyZXR1cm4gMzc7Y2FzZSAyNTpyZXR1cm4gMzk7Y2FzZSAyNjpyZXR1cm4gNDA7Y2FzZSAyNzpyZXR1cm4gNDE7Y2FzZSAyODpyZXR1cm4gNDI7Y2FzZSAyOTpyZXR1cm4gNDM7Y2FzZSAzMDpyZXR1cm4gNDU7Y2FzZSAzMTpyZXR1cm4gNDY7Y2FzZSAzMjpyZXR1cm4gNDc7Y2FzZSAzMzpyZXR1cm4gNDg7Y2FzZSAzNDpyZXR1cm4gNTE7Y2FzZSAzNTpyZXR1cm4gNTI7Y2FzZSAzNjpyZXR1cm4gNTM7Y2FzZSAzNzpyZXR1cm4gNTQ7Y2FzZSAzODpyZXR1cm4gNTU7Y2FzZSAzOTpyZXR1cm4gNTY7Y2FzZSA0MDpyZXR1cm4gNTc7Y2FzZSA0MTpyZXR1cm4gNTg7Y2FzZSA0MjpyZXR1cm4gNTk7Y2FzZSA0MzpyZXR1cm4gNjA7Y2FzZSA0NDpyZXR1cm4gNjE7Y2FzZSA0NTpyZXR1cm4gNjI7Y2FzZSA0NjpyZXR1cm4gNjM7Y2FzZSA0NzpyZXR1cm4gNjQ7Y2FzZSA0ODpyZXR1cm4gNjU7Y2FzZSA0OTpyZXR1cm4gNjY7Y2FzZSA1MDpyZXR1cm4gNjc7Y2FzZSA1MTpyZXR1cm4gNjg7Y2FzZSA1MjpyZXR1cm4gNjk7Y2FzZSA1MzpyZXR1cm4gNzA7ZGVmYXVsdDpyZXR1cm4gNzF9fWVsc2Ugc3dpdGNoKHF0WzBdKXtjYXNlIDA6cmV0dXJuIDA7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDM6cmV0dXJuIDM7Y2FzZSA0OnJldHVybiA1O2Nhc2UgNTpyZXR1cm4gNjtjYXNlIDY6cmV0dXJuIDc7Y2FzZSA3OnJldHVybiA5O2Nhc2UgODpyZXR1cm4gMTA7Y2FzZSA5OnJldHVybiAxMTtjYXNlIDEwOnJldHVybiAxMjtjYXNlIDExOnJldHVybiAxMztjYXNlIDEyOnJldHVybiAxNDtjYXNlIDEzOnJldHVybiAzODtjYXNlIDE0OnJldHVybiA0NDtjYXNlIDE1OnJldHVybiA0OTtjYXNlIDE2OnJldHVybiA1MDtjYXNlIDE3OnJldHVybiA3NTtjYXNlIDE4OnJldHVybiA3OTtjYXNlIDE5OnJldHVybiA5NTtjYXNlIDIwOnJldHVybiBpcztjYXNlIDIxOnJldHVybiBGdjtjYXNlIDIyOnJldHVybiBjZjtkZWZhdWx0OnJldHVybiBYMn19dmFyIFp0PWd0KG4pO3JldHVybiBBYyhndCh0KSxadCl9KTt2YXIgTmVlPVt3dCxROXIsTTcoMCldO003KDApO3ZhciBJMT1bd3QsZV9yLE03KDApXSx1cjA9MCxpcjA9MCxmcjA9MCx4cjA9MCxvcjA9MCxhcjA9MCxjcjA9MCxzcjA9MCx2cjA9MCxscjA9MDtmdW5jdGlvbiBqKHQpe2lmKHRbM109PT10WzJdKXJldHVybi0xO3ZhciBuPXRbMV1bMSt0WzNdXTtyZXR1cm4gdFszXT10WzNdKzF8MCxuPT09MTAmJih0WzVdIT09MCYmKHRbNV09dFs1XSsxfDApLHRbNF09dFszXSksbn1mdW5jdGlvbiBHMCh0LG4pe3JldHVybiB0WzldPXRbM10sdFsxMF09dFs0XSx0WzExXT10WzVdLHRbMTJdPW4sMH1mdW5jdGlvbiBnbih0KXtyZXR1cm4gdFs2XT10WzNdLHRbN109dFs0XSx0WzhdPXRbNV0sRzAodCwtMSl9ZnVuY3Rpb24gcSh0KXtyZXR1cm4gdFszXT10WzldLHRbNF09dFsxMF0sdFs1XT10WzExXSx0WzEyXX1mdW5jdGlvbiAkdih0KXtyZXR1cm4gdFszXT10WzZdLHRbNF09dFs3XSx0WzVdPXRbOF0sMH1mdW5jdGlvbiB0TCh0LG4pe3JldHVybiB0WzZdPW4sMH1mdW5jdGlvbiBKbSh0KXtyZXR1cm4gdFszXS10WzZdfDB9ZnVuY3Rpb24gTGwodCl7dmFyIG49dFszXS10WzZdfDAsZT10WzZdLGk9dFsxXTtyZXR1cm4gMDw9ZSYmMDw9biYmISgoaS5sZW5ndGgtMS1ufDApPGUpP0p1MChpLGUsbik6UHUoa2kwKX1mdW5jdGlvbiBicjAodCl7dmFyIG49dFs2XTtyZXR1cm4gdHUodFsxXSxuKVsxK25dfWZ1bmN0aW9uIFJsKHQsbixlLGkpe2Zvcih2YXIgeD0wLGM9ZSxzPW47Oyl7aWYoMDxjKXt2YXIgcD10WzErc107aWYoMDw9cCl7aWYoem48cClpZihuWDxwKWlmKFU4PHApe2lmKGxJPHApdGhyb3cgSTE7Sm4oaSx4LHMxfHA+Pj4xOHwwKSxKbihpLHgrMXwwLGp0fChwPj4+MTJ8MCkmNjMpLEpuKGkseCsyfDAsanR8KHA+Pj42fDApJjYzKSxKbihpLHgrM3wwLGp0fHAmNjMpO3ZhciB5PXgrNHwwfWVsc2V7Sm4oaSx4LGh2fHA+Pj4xMnwwKSxKbihpLHgrMXwwLGp0fChwPj4+NnwwKSY2MyksSm4oaSx4KzJ8MCxqdHxwJjYzKTt2YXIgeT14KzN8MH1lbHNle0puKGkseCxydHxwPj4+NnwwKSxKbihpLHgrMXwwLGp0fHAmNjMpO3ZhciB5PXgrMnwwfWVsc2V7Sm4oaSx4LHApO3ZhciB5PXgrMXwwfXZhciB4PXksYz1jLTF8MCxzPXMrMXwwO2NvbnRpbnVlfXRocm93IEkxfXJldHVybiB4fX1mdW5jdGlvbiBwcjAodCl7Zm9yKHZhciBuPXVuKHQpLGU9R3YobiwwKSxpPTAseD0wOzspe2lmKHg8bil7dmFyIGM9VnIodCx4KSxzPTA7aWYocnQ8PWMpaWYoczE8PWMpaWYod3Q8PWMpcz0xO2Vsc2V7dmFyIHA9VnIodCx4KzF8MCkseT1Wcih0LHgrMnwwKSxUPVZyKHQseCszfDApLEU9KHA+Pj42fDApIT09Mj8xOjA7aWYoRSl2YXIgdz1FO2Vsc2UgdmFyIGQ9KHk+Pj42fDApIT09Mj8xOjAsdz1kfHwoKFQ+Pj42fDApIT09Mj8xOjApO2lmKHcpdGhyb3cgSTE7ZVsxK2ldPShjJjcpPDwxOHwocCY2Myk8PDEyfCh5JjYzKTw8NnxUJjYzO3ZhciBHPXgrNHwwfWVsc2UgaWYoaHY8PWMpe3ZhciBBPVZyKHQseCsxfDApLFM9VnIodCx4KzJ8MCksTT0oYyYxNSk8PDEyfChBJjYzKTw8NnxTJjYzLEs9KEE+Pj42fDApIT09Mj8xOjAsVj1LfHwoKFM+Pj42fDApIT09Mj8xOjApO2lmKFYpdmFyIG0wPVY7ZWxzZSB2YXIgZjA9NTUyOTY8PU0/MTowLG0wPWYwJiYoTTw9NTcwODg/MTowKTtpZihtMCl0aHJvdyBJMTtlWzEraV09TTt2YXIgRz14KzN8MH1lbHNle3ZhciBrMD1Wcih0LHgrMXwwKTtpZigoazA+Pj42fDApIT09Mil0aHJvdyBJMTtlWzEraV09KGMmMzEpPDw2fGswJjYzO3ZhciBHPXgrMnwwfWVsc2UgaWYoanQ8PWMpcz0xO2Vsc2V7ZVsxK2ldPWM7dmFyIEc9eCsxfDB9aWYocyl0aHJvdyBJMTt2YXIgaT1pKzF8MCx4PUc7Y29udGludWV9cmV0dXJuWzAsZSxpLGxyMCx2cjAsc3IwLGNyMCxhcjAsb3IwLHhyMCxmcjAsaXIwLHVyMF19fWZ1bmN0aW9uIGpsKHQsbixlKXt2YXIgaT10WzZdK258MCx4PUx0KGUqNHwwKSxjPXRbMV07aWYoKGkrZXwwKTw9Yy5sZW5ndGgtMSlyZXR1cm4gcXYoeCwwLFJsKGMsaSxlLHgpKTt0aHJvd1swLFNuLHJfcl19ZnVuY3Rpb24gU2UodCl7dmFyIG49dFs2XSxlPXRbM10tbnwwLGk9THQoZSo0fDApO3JldHVybiBxdihpLDAsUmwodFsxXSxuLGUsaSkpfWZ1bmN0aW9uIEdsKHQsbil7dmFyIGU9dFs2XSxpPXRbM10tZXwwLHg9THQoaSo0fDApO3JldHVybiBzTihuLHgsMCxSbCh0WzFdLGUsaSx4KSl9ZnVuY3Rpb24gdUwodCl7dmFyIG49dC5sZW5ndGgtMSxlPUx0KG4qNHwwKTtyZXR1cm4gcXYoZSwwLFJsKHQsMCxuLGUpKX1mdW5jdGlvbiBtcjAodCxuKXtyZXR1cm4gdFszXT10WzNdLW58MCwwfXZhciBfcjA9MDtmdW5jdGlvbiBDZWUodCxuLGUpe3JldHVyblswLHQsbixuX3IsMCxlLF9yMCx0X3JdfWZ1bmN0aW9uIHlyMCh0KXt2YXIgbj10WzJdO3JldHVyblswLHRbMV0sWzAsblsxXSxuWzJdLG5bM10sbls0XSxuWzVdLG5bNl0sbls3XSxuWzhdLG5bOV0sblsxMF0sblsxMV0sblsxMl1dLHRbM10sdFs0XSx0WzVdLHRbNl0sdFs3XV19ZnVuY3Rpb24gaHIwKHQpe3JldHVybiB0WzNdWzFdfWZ1bmN0aW9uICRtKHQsbil7cmV0dXJuIHQhPT1uWzRdP1swLG5bMV0sblsyXSxuWzNdLHQsbls1XSxuWzZdLG5bN11dOm59dmFyIGlMPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sZHIwPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sZkw9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSx4TD1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LGtyMD1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9O04oaUwsZnVuY3Rpb24odCxuKXtpZih0eXBlb2YgdD09XCJudW1iZXJcIil7dmFyIGU9dDtpZig2MTw9ZSlpZig5Mjw9ZSlzd2l0Y2goZSl7Y2FzZSA5MjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTkyKXJldHVybiAxO2JyZWFrO2Nhc2UgOTM6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT05MylyZXR1cm4gMTticmVhaztjYXNlIDk0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09OTQpcmV0dXJuIDE7YnJlYWs7Y2FzZSA5NTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTk1KXJldHVybiAxO2JyZWFrO2Nhc2UgOTY6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT05NilyZXR1cm4gMTticmVhaztjYXNlIDk3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09OTcpcmV0dXJuIDE7YnJlYWs7Y2FzZSA5ODppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTk4KXJldHVybiAxO2JyZWFrO2Nhc2UgOTk6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT05OSlyZXR1cm4gMTticmVhaztjYXNlIDEwMDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmdGk9PT1uKXJldHVybiAxO2JyZWFrO2Nhc2UgMTAxOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZSNz09PW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMDI6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJlJpPT09bilyZXR1cm4gMTticmVhaztjYXNlIDEwMzppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmczc9PT1uKXJldHVybiAxO2JyZWFrO2Nhc2UgMTA0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZMNz09PW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMDU6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJmo3PT09bilyZXR1cm4gMTticmVhaztjYXNlIDEwNjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmWXQ9PT1uKXJldHVybiAxO2JyZWFrO2Nhc2UgMTA3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZaYz09PW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMDg6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJmlzPT09bilyZXR1cm4gMTticmVhaztjYXNlIDEwOTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmRnY9PT1uKXJldHVybiAxO2JyZWFrO2Nhc2UgMTEwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZYdD09PW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMTE6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJmNmPT09bilyZXR1cm4gMTticmVhaztjYXNlIDExMjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmVDc9PT1uKXJldHVybiAxO2JyZWFrO2Nhc2UgMTEzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZQbj09PW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMTQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJnQxPT09bilyZXR1cm4gMTticmVhaztjYXNlIDExNTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmQXY9PT1uKXJldHVybiAxO2JyZWFrO2Nhc2UgMTE2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZmMT09PW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMTc6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJkEyPT09bilyZXR1cm4gMTticmVhaztjYXNlIDExODppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmejI9PT1uKXJldHVybiAxO2JyZWFrO2Nhc2UgMTE5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZTdj09PW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMjA6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJnVjPT09bilyZXR1cm4gMTticmVhaztkZWZhdWx0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZ0bDw9bilyZXR1cm4gMX1lbHNlIHN3aXRjaChlKXtjYXNlIDYxOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NjEpcmV0dXJuIDE7YnJlYWs7Y2FzZSA2MjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTYyKXJldHVybiAxO2JyZWFrO2Nhc2UgNjM6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT02MylyZXR1cm4gMTticmVhaztjYXNlIDY0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NjQpcmV0dXJuIDE7YnJlYWs7Y2FzZSA2NTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTY1KXJldHVybiAxO2JyZWFrO2Nhc2UgNjY6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT02NilyZXR1cm4gMTticmVhaztjYXNlIDY3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NjcpcmV0dXJuIDE7YnJlYWs7Y2FzZSA2ODppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTY4KXJldHVybiAxO2JyZWFrO2Nhc2UgNjk6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT02OSlyZXR1cm4gMTticmVhaztjYXNlIDcwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NzApcmV0dXJuIDE7YnJlYWs7Y2FzZSA3MTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTcxKXJldHVybiAxO2JyZWFrO2Nhc2UgNzI6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT03MilyZXR1cm4gMTticmVhaztjYXNlIDczOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NzMpcmV0dXJuIDE7YnJlYWs7Y2FzZSA3NDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTc0KXJldHVybiAxO2JyZWFrO2Nhc2UgNzU6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT03NSlyZXR1cm4gMTticmVhaztjYXNlIDc2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NzYpcmV0dXJuIDE7YnJlYWs7Y2FzZSA3NzppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTc3KXJldHVybiAxO2JyZWFrO2Nhc2UgNzg6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT03OClyZXR1cm4gMTticmVhaztjYXNlIDc5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NzkpcmV0dXJuIDE7YnJlYWs7Y2FzZSA4MDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTgwKXJldHVybiAxO2JyZWFrO2Nhc2UgODE6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT04MSlyZXR1cm4gMTticmVhaztjYXNlIDgyOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09ODIpcmV0dXJuIDE7YnJlYWs7Y2FzZSA4MzppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTgzKXJldHVybiAxO2JyZWFrO2Nhc2UgODQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT04NClyZXR1cm4gMTticmVhaztjYXNlIDg1OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09ODUpcmV0dXJuIDE7YnJlYWs7Y2FzZSA4NjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTg2KXJldHVybiAxO2JyZWFrO2Nhc2UgODc6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT04NylyZXR1cm4gMTticmVhaztjYXNlIDg4OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09ODgpcmV0dXJuIDE7YnJlYWs7Y2FzZSA4OTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTg5KXJldHVybiAxO2JyZWFrO2Nhc2UgOTA6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT05MClyZXR1cm4gMTticmVhaztkZWZhdWx0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09OTEpcmV0dXJuIDF9ZWxzZSBpZigzMTw9ZSlzd2l0Y2goZSl7Y2FzZSAzMTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTMxKXJldHVybiAxO2JyZWFrO2Nhc2UgMzI6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0zMilyZXR1cm4gMTticmVhaztjYXNlIDMzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MzMpcmV0dXJuIDE7YnJlYWs7Y2FzZSAzNDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTM0KXJldHVybiAxO2JyZWFrO2Nhc2UgMzU6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0zNSlyZXR1cm4gMTticmVhaztjYXNlIDM2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MzYpcmV0dXJuIDE7YnJlYWs7Y2FzZSAzNzppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTM3KXJldHVybiAxO2JyZWFrO2Nhc2UgMzg6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0zOClyZXR1cm4gMTticmVhaztjYXNlIDM5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MzkpcmV0dXJuIDE7YnJlYWs7Y2FzZSA0MDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTQwKXJldHVybiAxO2JyZWFrO2Nhc2UgNDE6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT00MSlyZXR1cm4gMTticmVhaztjYXNlIDQyOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NDIpcmV0dXJuIDE7YnJlYWs7Y2FzZSA0MzppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTQzKXJldHVybiAxO2JyZWFrO2Nhc2UgNDQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT00NClyZXR1cm4gMTticmVhaztjYXNlIDQ1OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NDUpcmV0dXJuIDE7YnJlYWs7Y2FzZSA0NjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTQ2KXJldHVybiAxO2JyZWFrO2Nhc2UgNDc6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT00NylyZXR1cm4gMTticmVhaztjYXNlIDQ4OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NDgpcmV0dXJuIDE7YnJlYWs7Y2FzZSA0OTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTQ5KXJldHVybiAxO2JyZWFrO2Nhc2UgNTA6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT01MClyZXR1cm4gMTticmVhaztjYXNlIDUxOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NTEpcmV0dXJuIDE7YnJlYWs7Y2FzZSA1MjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTUyKXJldHVybiAxO2JyZWFrO2Nhc2UgNTM6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT01MylyZXR1cm4gMTticmVhaztjYXNlIDU0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NTQpcmV0dXJuIDE7YnJlYWs7Y2FzZSA1NTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTU1KXJldHVybiAxO2JyZWFrO2Nhc2UgNTY6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT01NilyZXR1cm4gMTticmVhaztjYXNlIDU3OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NTcpcmV0dXJuIDE7YnJlYWs7Y2FzZSA1ODppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTU4KXJldHVybiAxO2JyZWFrO2Nhc2UgNTk6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT01OSlyZXR1cm4gMTticmVhaztkZWZhdWx0OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NjApcmV0dXJuIDF9ZWxzZSBzd2l0Y2goZSl7Y2FzZSAwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiYhbilyZXR1cm4gMTticmVhaztjYXNlIDE6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0xKXJldHVybiAxO2JyZWFrO2Nhc2UgMjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTIpcmV0dXJuIDE7YnJlYWs7Y2FzZSAzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MylyZXR1cm4gMTticmVhaztjYXNlIDQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT00KXJldHVybiAxO2JyZWFrO2Nhc2UgNTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTUpcmV0dXJuIDE7YnJlYWs7Y2FzZSA2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09NilyZXR1cm4gMTticmVhaztjYXNlIDc6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT03KXJldHVybiAxO2JyZWFrO2Nhc2UgODppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTgpcmV0dXJuIDE7YnJlYWs7Y2FzZSA5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09OSlyZXR1cm4gMTticmVhaztjYXNlIDEwOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MTApcmV0dXJuIDE7YnJlYWs7Y2FzZSAxMTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTExKXJldHVybiAxO2JyZWFrO2Nhc2UgMTI6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0xMilyZXR1cm4gMTticmVhaztjYXNlIDEzOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MTMpcmV0dXJuIDE7YnJlYWs7Y2FzZSAxNDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTE0KXJldHVybiAxO2JyZWFrO2Nhc2UgMTU6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0xNSlyZXR1cm4gMTticmVhaztjYXNlIDE2OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MTYpcmV0dXJuIDE7YnJlYWs7Y2FzZSAxNzppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTE3KXJldHVybiAxO2JyZWFrO2Nhc2UgMTg6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0xOClyZXR1cm4gMTticmVhaztjYXNlIDE5OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MTkpcmV0dXJuIDE7YnJlYWs7Y2FzZSAyMDppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTIwKXJldHVybiAxO2JyZWFrO2Nhc2UgMjE6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0yMSlyZXR1cm4gMTticmVhaztjYXNlIDIyOmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MjIpcmV0dXJuIDE7YnJlYWs7Y2FzZSAyMzppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTIzKXJldHVybiAxO2JyZWFrO2Nhc2UgMjQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0yNClyZXR1cm4gMTticmVhaztjYXNlIDI1OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MjUpcmV0dXJuIDE7YnJlYWs7Y2FzZSAyNjppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTI2KXJldHVybiAxO2JyZWFrO2Nhc2UgMjc6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0yNylyZXR1cm4gMTticmVhaztjYXNlIDI4OmlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MjgpcmV0dXJuIDE7YnJlYWs7Y2FzZSAyOTppZih0eXBlb2Ygbj09XCJudW1iZXJcIiYmbj09PTI5KXJldHVybiAxO2JyZWFrO2RlZmF1bHQ6aWYodHlwZW9mIG49PVwibnVtYmVyXCImJm49PT0zMClyZXR1cm4gMX19ZWxzZSBzd2l0Y2godFswXSl7Y2FzZSAwOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MCl7dmFyIGk9blsxXSx4PXUodShmTCx0WzFdKSxpKSxjPXgmJnFuKHRbMl0sblsyXSk7cmV0dXJuIGN9YnJlYWs7Y2FzZSAxOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MSl7dmFyIHM9blsxXSxwPXUodSh4TCx0WzFdKSxzKSx5PXAmJnFuKHRbMl0sblsyXSk7cmV0dXJuIHl9YnJlYWs7Y2FzZSAyOmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09Mil7dmFyIFQ9blsxXSxFPXRbMV0sZD1XdihFWzFdLFRbMV0pLHc9ZCYmcW4oRVsyXSxUWzJdKSxHPXcmJnFuKEVbM10sVFszXSksQT1HJiYoRVs0XT09PVRbNF0/MTowKTtyZXR1cm4gQX1icmVhaztjYXNlIDM6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0zKXt2YXIgUz1uWzFdLE09dFsxXSxLPVd2KE1bMV0sU1sxXSk7aWYoSyl2YXIgVj1TWzJdLGYwPXUodShrcjAsTVsyXSksVik7ZWxzZSB2YXIgZjA9Szt2YXIgbTA9ZjAmJihNWzNdPT09U1szXT8xOjApO3JldHVybiBtMH1icmVhaztjYXNlIDQ6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT00KXt2YXIgazA9V3YodFsxXSxuWzFdKSxnMD1rMCYmcW4odFsyXSxuWzJdKSxlMD1nMCYmcW4odFszXSxuWzNdKTtyZXR1cm4gZTB9YnJlYWs7Y2FzZSA1OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09NSl7dmFyIHgwPVd2KHRbMV0sblsxXSksbD14MCYmcW4odFsyXSxuWzJdKSxjMD1sJiZxbih0WzNdLG5bM10pO3JldHVybiBjMH1icmVhaztjYXNlIDY6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT02KXJldHVybiBxbih0WzFdLG5bMV0pO2JyZWFrO2Nhc2UgNzppZih0eXBlb2YgbiE9XCJudW1iZXJcIiYmblswXT09PTcpe3ZhciB0MD1xbih0WzFdLG5bMV0pO3JldHVybiB0MCYmV3YodFsyXSxuWzJdKX1icmVhaztjYXNlIDg6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT04KXt2YXIgbzA9V3YodFsxXSxuWzFdKSx3MD1vMCYmcW4odFsyXSxuWzJdKSxfMD13MCYmcW4odFszXSxuWzNdKTtyZXR1cm4gXzB9YnJlYWs7Y2FzZSA5OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09OSl7dmFyIEUwPW5bMV07cmV0dXJuIHUodShkcjAsdFsxXSksRTApfWJyZWFrO2Nhc2UgMTA6aWYodHlwZW9mIG4hPVwibnVtYmVyXCImJm5bMF09PT0xMCl7dmFyIFUwPW5bMV0sYj11KHUoZkwsdFsxXSksVTApLFIwPWImJih0WzJdPT1uWzJdPzE6MCksWD1SMCYmcW4odFszXSxuWzNdKTtyZXR1cm4gWH1icmVhaztkZWZhdWx0OmlmKHR5cGVvZiBuIT1cIm51bWJlclwiJiZuWzBdPT09MTEpe3ZhciBzMD1uWzFdLGhyPXUodSh4TCx0WzFdKSxzMCksQXI9aHImJih0WzJdPT1uWzJdPzE6MCksb3I9QXImJnFuKHRbM10sblszXSk7cmV0dXJuIG9yfX1yZXR1cm4gMH0pLE4oZHIwLGZ1bmN0aW9uKHQsbil7aWYodCl7aWYobilyZXR1cm4gMX1lbHNlIGlmKCFuKXJldHVybiAxO3JldHVybiAwfSksTihmTCxmdW5jdGlvbih0LG4pe3N3aXRjaCh0KXtjYXNlIDA6aWYoIW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxOmlmKG49PT0xKXJldHVybiAxO2JyZWFrO2Nhc2UgMjppZihuPT09MilyZXR1cm4gMTticmVhaztjYXNlIDM6aWYobj09PTMpcmV0dXJuIDE7YnJlYWs7ZGVmYXVsdDppZig0PD1uKXJldHVybiAxfXJldHVybiAwfSksTih4TCxmdW5jdGlvbih0LG4pe3N3aXRjaCh0KXtjYXNlIDA6aWYoIW4pcmV0dXJuIDE7YnJlYWs7Y2FzZSAxOmlmKG49PT0xKXJldHVybiAxO2JyZWFrO2RlZmF1bHQ6aWYoMjw9bilyZXR1cm4gMX1yZXR1cm4gMH0pLE4oa3IwLGZ1bmN0aW9uKHQsbil7dmFyIGU9cW4odFsxXSxuWzFdKSxpPWUmJnFuKHRbMl0sblsyXSkseD1pJiZxbih0WzNdLG5bM10pO3JldHVybiB4fSk7ZnVuY3Rpb24gd3IwKHQpe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXt2YXIgbj10O2lmKDYxPD1uKXtpZig5Mjw9bilzd2l0Y2gobil7Y2FzZSA5MjpyZXR1cm4gRWtyO2Nhc2UgOTM6cmV0dXJuIFNrcjtjYXNlIDk0OnJldHVybiBna3I7Y2FzZSA5NTpyZXR1cm4gRmtyO2Nhc2UgOTY6cmV0dXJuIFRrcjtjYXNlIDk3OnJldHVybiBPa3I7Y2FzZSA5ODpyZXR1cm4gSWtyO2Nhc2UgOTk6cmV0dXJuIEFrcjtjYXNlIDEwMDpyZXR1cm4gTmtyO2Nhc2UgMTAxOnJldHVybiBDa3I7Y2FzZSAxMDI6cmV0dXJuIFBrcjtjYXNlIDEwMzpyZXR1cm4gRGtyO2Nhc2UgMTA0OnJldHVybiBMa3I7Y2FzZSAxMDU6cmV0dXJuIFJrcjtjYXNlIDEwNjpyZXR1cm4gamtyO2Nhc2UgMTA3OnJldHVybiBHa3I7Y2FzZSAxMDg6cmV0dXJuIE1rcjtjYXNlIDEwOTpyZXR1cm4gQmtyO2Nhc2UgMTEwOnJldHVybiBxa3I7Y2FzZSAxMTE6cmV0dXJuIFVrcjtjYXNlIDExMjpyZXR1cm4gSGtyO2Nhc2UgMTEzOnJldHVybiBYa3I7Y2FzZSAxMTQ6cmV0dXJuIFlrcjtjYXNlIDExNTpyZXR1cm4gVmtyO2Nhc2UgMTE2OnJldHVybiB6a3I7Y2FzZSAxMTc6cmV0dXJuIEtrcjtjYXNlIDExODpyZXR1cm4gV2tyO2Nhc2UgMTE5OnJldHVybiBKa3I7Y2FzZSAxMjA6cmV0dXJuICRrcjtkZWZhdWx0OnJldHVybiBaa3J9c3dpdGNoKG4pe2Nhc2UgNjE6cmV0dXJuIFZkcjtjYXNlIDYyOnJldHVybiB6ZHI7Y2FzZSA2MzpyZXR1cm4gS2RyO2Nhc2UgNjQ6cmV0dXJuIFdkcjtjYXNlIDY1OnJldHVybiBKZHI7Y2FzZSA2NjpyZXR1cm4gJGRyO2Nhc2UgNjc6cmV0dXJuIFpkcjtjYXNlIDY4OnJldHVybiBRZHI7Y2FzZSA2OTpyZXR1cm4gcmtyO2Nhc2UgNzA6cmV0dXJuIGVrcjtjYXNlIDcxOnJldHVybiBua3I7Y2FzZSA3MjpyZXR1cm4gdGtyO2Nhc2UgNzM6cmV0dXJuIHVrcjtjYXNlIDc0OnJldHVybiBpa3I7Y2FzZSA3NTpyZXR1cm4gZmtyO2Nhc2UgNzY6cmV0dXJuIHhrcjtjYXNlIDc3OnJldHVybiBva3I7Y2FzZSA3ODpyZXR1cm4gYWtyO2Nhc2UgNzk6cmV0dXJuIGNrcjtjYXNlIDgwOnJldHVybiBza3I7Y2FzZSA4MTpyZXR1cm4gdmtyO2Nhc2UgODI6cmV0dXJuIGxrcjtjYXNlIDgzOnJldHVybiBia3I7Y2FzZSA4NDpyZXR1cm4gcGtyO2Nhc2UgODU6cmV0dXJuIG1rcjtjYXNlIDg2OnJldHVybiBfa3I7Y2FzZSA4NzpyZXR1cm4geWtyO2Nhc2UgODg6cmV0dXJuIGhrcjtjYXNlIDg5OnJldHVybiBka3I7Y2FzZSA5MDpyZXR1cm4ga2tyO2RlZmF1bHQ6cmV0dXJuIHdrcn19aWYoMzE8PW4pc3dpdGNoKG4pe2Nhc2UgMzE6cmV0dXJuIG1kcjtjYXNlIDMyOnJldHVybiBfZHI7Y2FzZSAzMzpyZXR1cm4geWRyO2Nhc2UgMzQ6cmV0dXJuIGhkcjtjYXNlIDM1OnJldHVybiBkZHI7Y2FzZSAzNjpyZXR1cm4ga2RyO2Nhc2UgMzc6cmV0dXJuIHdkcjtjYXNlIDM4OnJldHVybiBFZHI7Y2FzZSAzOTpyZXR1cm4gU2RyO2Nhc2UgNDA6cmV0dXJuIGdkcjtjYXNlIDQxOnJldHVybiBGZHI7Y2FzZSA0MjpyZXR1cm4gVGRyO2Nhc2UgNDM6cmV0dXJuIE9kcjtjYXNlIDQ0OnJldHVybiBJZHI7Y2FzZSA0NTpyZXR1cm4gQWRyO2Nhc2UgNDY6cmV0dXJuIE5kcjtjYXNlIDQ3OnJldHVybiBDZHI7Y2FzZSA0ODpyZXR1cm4gUGRyO2Nhc2UgNDk6cmV0dXJuIERkcjtjYXNlIDUwOnJldHVybiBMZHI7Y2FzZSA1MTpyZXR1cm4gUmRyO2Nhc2UgNTI6cmV0dXJuIGpkcjtjYXNlIDUzOnJldHVybiBHZHI7Y2FzZSA1NDpyZXR1cm4gTWRyO2Nhc2UgNTU6cmV0dXJuIEJkcjtjYXNlIDU2OnJldHVybiBxZHI7Y2FzZSA1NzpyZXR1cm4gVWRyO2Nhc2UgNTg6cmV0dXJuIEhkcjtjYXNlIDU5OnJldHVybiBYZHI7ZGVmYXVsdDpyZXR1cm4gWWRyfXN3aXRjaChuKXtjYXNlIDA6cmV0dXJuIE1ocjtjYXNlIDE6cmV0dXJuIEJocjtjYXNlIDI6cmV0dXJuIHFocjtjYXNlIDM6cmV0dXJuIFVocjtjYXNlIDQ6cmV0dXJuIEhocjtjYXNlIDU6cmV0dXJuIFhocjtjYXNlIDY6cmV0dXJuIFlocjtjYXNlIDc6cmV0dXJuIFZocjtjYXNlIDg6cmV0dXJuIHpocjtjYXNlIDk6cmV0dXJuIEtocjtjYXNlIDEwOnJldHVybiBXaHI7Y2FzZSAxMTpyZXR1cm4gSmhyO2Nhc2UgMTI6cmV0dXJuICRocjtjYXNlIDEzOnJldHVybiBaaHI7Y2FzZSAxNDpyZXR1cm4gUWhyO2Nhc2UgMTU6cmV0dXJuIHJkcjtjYXNlIDE2OnJldHVybiBlZHI7Y2FzZSAxNzpyZXR1cm4gbmRyO2Nhc2UgMTg6cmV0dXJuIHRkcjtjYXNlIDE5OnJldHVybiB1ZHI7Y2FzZSAyMDpyZXR1cm4gaWRyO2Nhc2UgMjE6cmV0dXJuIGZkcjtjYXNlIDIyOnJldHVybiB4ZHI7Y2FzZSAyMzpyZXR1cm4gb2RyO2Nhc2UgMjQ6cmV0dXJuIGFkcjtjYXNlIDI1OnJldHVybiBjZHI7Y2FzZSAyNjpyZXR1cm4gc2RyO2Nhc2UgMjc6cmV0dXJuIHZkcjtjYXNlIDI4OnJldHVybiBsZHI7Y2FzZSAyOTpyZXR1cm4gYmRyO2RlZmF1bHQ6cmV0dXJuIHBkcn19ZWxzZSBzd2l0Y2godFswXSl7Y2FzZSAwOnJldHVybiBRa3I7Y2FzZSAxOnJldHVybiByd3I7Y2FzZSAyOnJldHVybiBld3I7Y2FzZSAzOnJldHVybiBud3I7Y2FzZSA0OnJldHVybiB0d3I7Y2FzZSA1OnJldHVybiB1d3I7Y2FzZSA2OnJldHVybiBpd3I7Y2FzZSA3OnJldHVybiBmd3I7Y2FzZSA4OnJldHVybiB4d3I7Y2FzZSA5OnJldHVybiBvd3I7Y2FzZSAxMDpyZXR1cm4gYXdyO2RlZmF1bHQ6cmV0dXJuIGN3cn19ZnVuY3Rpb24gb0wodCl7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpe3ZhciBuPXQ7aWYoNjE8PW4pe2lmKDkyPD1uKXN3aXRjaChuKXtjYXNlIDkyOnJldHVybiBpaHI7Y2FzZSA5MzpyZXR1cm4gZmhyO2Nhc2UgOTQ6cmV0dXJuIHhocjtjYXNlIDk1OnJldHVybiBvaHI7Y2FzZSA5NjpyZXR1cm4gYWhyO2Nhc2UgOTc6cmV0dXJuIGNocjtjYXNlIDk4OnJldHVybiBzaHI7Y2FzZSA5OTpyZXR1cm4gdmhyO2Nhc2UgMTAwOnJldHVybiBsaHI7Y2FzZSAxMDE6cmV0dXJuIGJocjtjYXNlIDEwMjpyZXR1cm4gcGhyO2Nhc2UgMTAzOnJldHVybiBtaHI7Y2FzZSAxMDQ6cmV0dXJuIF9ocjtjYXNlIDEwNTpyZXR1cm4geWhyO2Nhc2UgMTA2OnJldHVybiBoaHI7Y2FzZSAxMDc6cmV0dXJuIGRocjtjYXNlIDEwODpyZXR1cm4ga2hyO2Nhc2UgMTA5OnJldHVybiB3aHI7Y2FzZSAxMTA6cmV0dXJuIEVocjtjYXNlIDExMTpyZXR1cm4gU2hyO2Nhc2UgMTEyOnJldHVybiBnaHI7Y2FzZSAxMTM6cmV0dXJuIEZocjtjYXNlIDExNDpyZXR1cm4gVGhyO2Nhc2UgMTE1OnJldHVybiBPaHI7Y2FzZSAxMTY6cmV0dXJuIElocjtjYXNlIDExNzpyZXR1cm4gQWhyO2Nhc2UgMTE4OnJldHVybiBOaHI7Y2FzZSAxMTk6cmV0dXJuIENocjtjYXNlIDEyMDpyZXR1cm4gUGhyO2RlZmF1bHQ6cmV0dXJuIERocn1zd2l0Y2gobil7Y2FzZSA2MTpyZXR1cm4gT3lyO2Nhc2UgNjI6cmV0dXJuIEl5cjtjYXNlIDYzOnJldHVybiBBeXI7Y2FzZSA2NDpyZXR1cm4gTnlyO2Nhc2UgNjU6cmV0dXJuIEN5cjtjYXNlIDY2OnJldHVybiBQeXI7Y2FzZSA2NzpyZXR1cm4gRHlyO2Nhc2UgNjg6cmV0dXJuIEx5cjtjYXNlIDY5OnJldHVybiBSeXI7Y2FzZSA3MDpyZXR1cm4ganlyO2Nhc2UgNzE6cmV0dXJuIEd5cjtjYXNlIDcyOnJldHVybiBNeXI7Y2FzZSA3MzpyZXR1cm4gQnlyO2Nhc2UgNzQ6cmV0dXJuIHF5cjtjYXNlIDc1OnJldHVybiBVeXI7Y2FzZSA3NjpyZXR1cm4gSHlyO2Nhc2UgNzc6cmV0dXJuIFh5cjtjYXNlIDc4OnJldHVybiBZeXI7Y2FzZSA3OTpyZXR1cm4gVnlyO2Nhc2UgODA6cmV0dXJuIHp5cjtjYXNlIDgxOnJldHVybiBLeXI7Y2FzZSA4MjpyZXR1cm4gV3lyO2Nhc2UgODM6cmV0dXJuIEp5cjtjYXNlIDg0OnJldHVybiAkeXI7Y2FzZSA4NTpyZXR1cm4gWnlyO2Nhc2UgODY6cmV0dXJuIFF5cjtjYXNlIDg3OnJldHVybiByaHI7Y2FzZSA4ODpyZXR1cm4gZWhyO2Nhc2UgODk6cmV0dXJuIG5ocjtjYXNlIDkwOnJldHVybiB0aHI7ZGVmYXVsdDpyZXR1cm4gdWhyfX1pZigzMTw9bilzd2l0Y2gobil7Y2FzZSAzMTpyZXR1cm4gWl9yO2Nhc2UgMzI6cmV0dXJuIFFfcjtjYXNlIDMzOnJldHVybiByeXI7Y2FzZSAzNDpyZXR1cm4gZXlyO2Nhc2UgMzU6cmV0dXJuIG55cjtjYXNlIDM2OnJldHVybiB0eXI7Y2FzZSAzNzpyZXR1cm4gdXlyO2Nhc2UgMzg6cmV0dXJuIGl5cjtjYXNlIDM5OnJldHVybiBmeXI7Y2FzZSA0MDpyZXR1cm4geHlyO2Nhc2UgNDE6cmV0dXJuIG95cjtjYXNlIDQyOnJldHVybiBheXI7Y2FzZSA0MzpyZXR1cm4gY3lyO2Nhc2UgNDQ6cmV0dXJuIHN5cjtjYXNlIDQ1OnJldHVybiB2eXI7Y2FzZSA0NjpyZXR1cm4gbHlyO2Nhc2UgNDc6cmV0dXJuIGJ5cjtjYXNlIDQ4OnJldHVybiBweXI7Y2FzZSA0OTpyZXR1cm4gbXlyO2Nhc2UgNTA6cmV0dXJuIF95cjtjYXNlIDUxOnJldHVybiB5eXI7Y2FzZSA1MjpyZXR1cm4gaHlyO2Nhc2UgNTM6cmV0dXJuIGR5cjtjYXNlIDU0OnJldHVybiBreXI7Y2FzZSA1NTpyZXR1cm4gd3lyO2Nhc2UgNTY6cmV0dXJuIEV5cjtjYXNlIDU3OnJldHVybiBTeXI7Y2FzZSA1ODpyZXR1cm4gZ3lyO2Nhc2UgNTk6cmV0dXJuIEZ5cjtkZWZhdWx0OnJldHVybiBUeXJ9c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4ga19yO2Nhc2UgMTpyZXR1cm4gd19yO2Nhc2UgMjpyZXR1cm4gRV9yO2Nhc2UgMzpyZXR1cm4gU19yO2Nhc2UgNDpyZXR1cm4gZ19yO2Nhc2UgNTpyZXR1cm4gRl9yO2Nhc2UgNjpyZXR1cm4gVF9yO2Nhc2UgNzpyZXR1cm4gT19yO2Nhc2UgODpyZXR1cm4gSV9yO2Nhc2UgOTpyZXR1cm4gQV9yO2Nhc2UgMTA6cmV0dXJuIE5fcjtjYXNlIDExOnJldHVybiBDX3I7Y2FzZSAxMjpyZXR1cm4gUF9yO2Nhc2UgMTM6cmV0dXJuIERfcjtjYXNlIDE0OnJldHVybiBMX3I7Y2FzZSAxNTpyZXR1cm4gUl9yO2Nhc2UgMTY6cmV0dXJuIGpfcjtjYXNlIDE3OnJldHVybiBHX3I7Y2FzZSAxODpyZXR1cm4gTV9yO2Nhc2UgMTk6cmV0dXJuIEJfcjtjYXNlIDIwOnJldHVybiBxX3I7Y2FzZSAyMTpyZXR1cm4gVV9yO2Nhc2UgMjI6cmV0dXJuIEhfcjtjYXNlIDIzOnJldHVybiBYX3I7Y2FzZSAyNDpyZXR1cm4gWV9yO2Nhc2UgMjU6cmV0dXJuIFZfcjtjYXNlIDI2OnJldHVybiB6X3I7Y2FzZSAyNzpyZXR1cm4gS19yO2Nhc2UgMjg6cmV0dXJuIFdfcjtjYXNlIDI5OnJldHVybiBKX3I7ZGVmYXVsdDpyZXR1cm4gJF9yfX1lbHNlIHN3aXRjaCh0WzBdKXtjYXNlIDI6cmV0dXJuIHRbMV1bM107Y2FzZSAzOnJldHVybiB0WzFdWzJdWzNdO2Nhc2UgNTp2YXIgZT1UZShMaHIsdFszXSk7cmV0dXJuIFRlKFJocixUZSh0WzJdLGUpKTtjYXNlIDk6cmV0dXJuIHRbMV0/amhyOkdocjtjYXNlIDA6Y2FzZSAxOnJldHVybiB0WzJdO2Nhc2UgNjpjYXNlIDc6cmV0dXJuIHRbMV07ZGVmYXVsdDpyZXR1cm4gdFszXX19ZnVuY3Rpb24gTWwodCl7cmV0dXJuIHUoZXQoZF9yKSx0KX1mdW5jdGlvbiBhTCh0LG4pe3ZhciBlPXQmJnRbMV0saT0wO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKWlmKFBuPT09bil2YXIgeD11X3IsYz1pX3I7ZWxzZSBpPTE7ZWxzZSBzd2l0Y2goblswXSl7Y2FzZSAzOnZhciB4PWZfcixjPXhfcjticmVhaztjYXNlIDU6dmFyIHg9b19yLGM9YV9yO2JyZWFrO2Nhc2UgNjpjYXNlIDk6aT0xO2JyZWFrO2Nhc2UgMDpjYXNlIDEwOnZhciB4PXNfcixjPXZfcjticmVhaztjYXNlIDE6Y2FzZSAxMTp2YXIgeD1sX3IsYz1iX3I7YnJlYWs7Y2FzZSAyOmNhc2UgODp2YXIgeD1wX3IsYz1tX3I7YnJlYWs7ZGVmYXVsdDp2YXIgeD1fX3IsYz15X3J9aWYoaSl2YXIgeD1jX3IsYz1NbChvTChuKSk7cmV0dXJuIGU/VGUoeCxUZShoX3IsYykpOmN9ZnVuY3Rpb24gY0wodCl7cmV0dXJuIDQ1PHQ/NDY8dD8tMTowOi0xfWZ1bmN0aW9uIGpjKHQpe2lmKDg8dCl7aWYoRXY8dCl7aWYoZWY8dCl7aWYoRG88dClyZXR1cm4tMTtpZihReDx0KXt2YXIgbj10PD1NYT8xOjAsZT1uJiYtMTtyZXR1cm4gZX1pZihmbzx0KXtpZih4Yzx0KXtpZihveDx0KXt2YXIgaT10PD1Fbz8xOjAseD1pJiYtMTtyZXR1cm4geH1yZXR1cm4gMH1yZXR1cm4tMX1pZihDbzx0KXt2YXIgYz10PD1tbz8xOjAscz1jJiYtMTtyZXR1cm4gc31yZXR1cm4gMH1yZXR1cm4tMX1yZXR1cm4gVnIoQkRyLHQtOXwwKS0xfDB9cmV0dXJuLTF9ZnVuY3Rpb24gcG4odCl7cmV0dXJuIDQ3PHQ/NTc8dD8tMTowOi0xfWZ1bmN0aW9uIE5uKHQpe3JldHVybiA0Nzx0P1JpPHQ/LTE6VnIoJExyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIHdpKHQpe3JldHVybiA0Nzx0P1h0PHQ/LTE6VnIoVUxyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIFp2KHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIoY0xyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIFptKHQpe3JldHVybiA4Nzx0P3VjPHQ/LTE6VnIoZU4sdC04OHwwKS0xfDA6LTF9ZnVuY3Rpb24gUW0odCl7cmV0dXJuIDQ1PHQ/NTc8dD8tMTpWcihaTHIsdCt2MXwwKS0xfDA6LTF9ZnVuY3Rpb24gRXIwKHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIoc0xyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIEExKHQpe3JldHVybiA0Nzx0P2JyPHQ/LTE6VnIoTUxyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIFF2KHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIodkxyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIE4xKHQpe2lmKDg8dCl7aWYoRXY8dCl7aWYoZWY8dCl7aWYoRG88dClyZXR1cm4tMTtpZihReDx0KXt2YXIgbj10PD1NYT8xOjAsZT1uJiYtMTtyZXR1cm4gZX1pZihmbzx0KXtpZih4Yzx0KXtpZihveDx0KXt2YXIgaT10PD1Fbz8xOjAseD1pJiYtMTtyZXR1cm4geH1yZXR1cm4gMH1yZXR1cm4tMX1pZihDbzx0KXt2YXIgYz10PD1tbz8xOjAscz1jJiYtMTtyZXR1cm4gc31yZXR1cm4gMH1yZXR1cm4tMX1yZXR1cm4gVnIocURyLHQtOXwwKS0xfDB9cmV0dXJuLTF9ZnVuY3Rpb24gcjkodCl7cmV0dXJuIDQ1PHQ/Ujc8dD8tMTpWcihyTHIsdCt2MXwwKS0xfDA6LTF9ZnVuY3Rpb24gU3IwKHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIobExyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIGU5KHQpe3JldHVybiA0Nzx0Pzk1PHQ/LTE6VnIoc1JyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIG45KHQpe3JldHVybiA0Nzx0P1h0PHQ/LTE6VnIobFJyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIHQ5KHQpe3JldHVybiA0Nzx0P1h0PHQ/LTE6VnIoSExyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIHU5KHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIoYkxyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIGk5KHQpe2lmKDg8dCl7aWYoRXY8dCl7aWYoZWY8dCl7aWYoRG88dClyZXR1cm4tMTtpZihReDx0KXt2YXIgbj10PD1NYT8xOjAsZT1uJiYtMTtyZXR1cm4gZX1pZihmbzx0KXtpZih4Yzx0KXtpZihveDx0KXt2YXIgaT10PD1Fbz8xOjAseD1pJiYtMTtyZXR1cm4geH1yZXR1cm4gMH1yZXR1cm4tMX1pZihDbzx0KXt2YXIgYz10PD1tbz8xOjAscz1jJiYtMTtyZXR1cm4gc31yZXR1cm4gMH1yZXR1cm4tMX1yZXR1cm4gVnIoVURyLHQtOXwwKS0xfDB9cmV0dXJuLTF9ZnVuY3Rpb24gZjkodCl7cmV0dXJuIDQ0PHQ/NTc8dD8tMTpWcihLRHIsdCttdnwwKS0xfDA6LTF9ZnVuY3Rpb24gR2ModCl7cmV0dXJuIDQ3PHQ/NDk8dD8tMTowOi0xfWZ1bmN0aW9uIHg5KHQpe3JldHVybiA0Nzx0Pzk1PHQ/LTE6VnIoV0RyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIEMxKHQpe3JldHVybiA0Nzx0PzU3PHQ/LTE6VnIodlJyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIG85KHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIocExyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIGdyMCh0KXtyZXR1cm4gdDE8dD9Bdjx0Py0xOjA6LTF9ZnVuY3Rpb24gVWkodCl7cmV0dXJuIDYwPHQ/NjE8dD8tMTowOi0xfWZ1bmN0aW9uIEZyMCh0KXtpZigtMTx0KXtpZihJbjx0KXtpZih0czx0KXtpZigkdTx0KXt2YXIgbj10PD1IdT8xOjAsZT1uJiYtMTtyZXR1cm4gZX1yZXR1cm4gMH1yZXR1cm4tMX1yZXR1cm4gVnIoZkxyLHQpLTF8MH1yZXR1cm4tMX1mdW5jdGlvbiByMih0KXtyZXR1cm4gNDc8dD9YdDx0Py0xOlZyKFhMcix0K1d0fDApLTF8MDotMX1mdW5jdGlvbiBhOSh0KXtyZXR1cm4gNDc8dD9YdDx0Py0xOlZyKEpMcix0K1d0fDApLTF8MDotMX1mdW5jdGlvbiBzTCh0KXtyZXR1cm4gNjA8dD82Mjx0Py0xOlZyKHJOLHQrU1N8MCktMXwwOi0xfWZ1bmN0aW9uIGM5KHQpe3JldHVybiA2NTx0Pzk4PHQ/LTE6VnIoZU4sdC02NnwwKS0xfDA6LTF9ZnVuY3Rpb24gQnQodCl7cmV0dXJuIDM1PHQ/SW48dD8tMTpWcihtTHIsdCt2dXwwKS0xfDA6LTF9ZnVuY3Rpb24gczkodCl7cmV0dXJuIEF2PHQ/ZjE8dD8tMTowOi0xfWZ1bmN0aW9uIHp1KHQpe3JldHVybiA0Nzx0PzU1PHQ/LTE6MDotMX1mdW5jdGlvbiB2TCh0KXtyZXR1cm4gRnY8dD9YdDx0Py0xOjA6LTF9ZnVuY3Rpb24gdjkodCl7cmV0dXJuIFh0PHQ/Y2Y8dD8tMTowOi0xfWZ1bmN0aW9uIEJsKHQpe3JldHVybiA5ODx0Pzk5PHQ/LTE6MDotMX1mdW5jdGlvbiBDcyh0KXtyZXR1cm4gNDc8dD80ODx0Py0xOjA6LTF9ZnVuY3Rpb24gcWwodCl7aWYoODx0KXtpZihFdjx0KXtpZihlZjx0KXtpZihEbzx0KXJldHVybi0xO2lmKFF4PHQpe3ZhciBuPXQ8PU1hPzE6MCxlPW4mJi0xO3JldHVybiBlfWlmKGZvPHQpe2lmKHhjPHQpe2lmKG94PHQpe3ZhciBpPXQ8PUVvPzE6MCx4PWkmJi0xO3JldHVybiB4fXJldHVybiAwfXJldHVybi0xfWlmKENvPHQpe3ZhciBjPXQ8PW1vPzE6MCxzPWMmJi0xO3JldHVybiBzfXJldHVybiAwfXJldHVybi0xfXJldHVybiBWcihIRHIsdC05fDApLTF8MH1yZXR1cm4tMX1mdW5jdGlvbiBsOSh0KXtyZXR1cm4gNDU8dD9SNzx0Py0xOlZyKEpEcix0K3YxfDApLTF8MDotMX1mdW5jdGlvbiBiOSh0KXtyZXR1cm4gNzg8dD9jZjx0Py0xOlZyKGVOLHQtNzl8MCktMXwwOi0xfWZ1bmN0aW9uIFRyMCh0KXtyZXR1cm4gNDE8dD80Mjx0Py0xOjA6LTF9ZnVuY3Rpb24gT3IwKHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIoX0xyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIHA5KHQpe3JldHVybiA0Nzx0P1I3PHQ/LTE6VnIoQkxyLHQrV3R8MCktMXwwOi0xfWZ1bmN0aW9uIFBzKHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIoeUxyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIElyMCh0KXtyZXR1cm4gNDE8dD82MTx0Py0xOlZyKEtMcix0K195fDApLTF8MDotMX1mdW5jdGlvbiBQMSh0KXtyZXR1cm4gNDQ8dD80ODx0Py0xOlZyKExMcix0K212fDApLTF8MDotMX1mdW5jdGlvbiBBcjAodCl7cmV0dXJuIDQ0PHQ/NDU8dD8tMTowOi0xfWZ1bmN0aW9uIE5yMCh0KXtyZXR1cm4gTDc8dD9qNzx0Py0xOjA6LTF9ZnVuY3Rpb24gbTkodCl7cmV0dXJuIFpjPHQ/aXM8dD8tMTowOi0xfWZ1bmN0aW9uIENyMCh0KXtyZXR1cm4gOTk8dD90aTx0Py0xOjA6LTF9ZnVuY3Rpb24gXzkodCl7cmV0dXJuIDQ3PHQ/Umk8dD8tMTpWcihRTHIsdCtXdHwwKS0xfDA6LTF9ZnVuY3Rpb24geTkodCl7cmV0dXJuIFBuPHQ/dDE8dD8tMTowOi0xfWZ1bmN0aW9uIEQxKHQpe3JldHVybiA0NTx0PzU3PHQ/LTE6VnIoblJyLHQrdjF8MCktMXwwOi0xfWZ1bmN0aW9uIFByMCh0KXtyZXR1cm4gMzU8dD9Jbjx0Py0xOlZyKGhMcix0K3Z1fDApLTF8MDotMX1mdW5jdGlvbiBMMSh0KXtyZXR1cm4gNDc8dD90czx0Py0xOlZyKGJScix0K1d0fDApLTF8MDotMX1mdW5jdGlvbiBsTCh0KXtyZXR1cm4gMzU8dD9Jbjx0Py0xOlZyKGRMcix0K3Z1fDApLTF8MDotMX1mdW5jdGlvbiB4aSh0KXtyZXR1cm4gOTx0PzEwPHQ/LTE6MDotMX1mdW5jdGlvbiBEcjAodCl7cmV0dXJuIDM1PHQ/SW48dD8tMTpWcihrTHIsdCt2dXwwKS0xfDA6LTF9ZnVuY3Rpb24gTHIwKHQpe3JldHVybiA5Njx0Pzk3PHQ/LTE6MDotMX1mdW5jdGlvbiBNYyh0KXtyZXR1cm4gMzU8dD9Jbjx0Py0xOlZyKHdMcix0K3Z1fDApLTF8MDotMX1mdW5jdGlvbiBoOSh0KXtyZXR1cm4gMzU8dD9Jbjx0Py0xOlZyKEVMcix0K3Z1fDApLTF8MDotMX1mdW5jdGlvbiBEcyh0KXtyZXR1cm4gNDc8dD85NTx0Py0xOlZyKFlMcix0K1d0fDApLTF8MDotMX1mdW5jdGlvbiBScjAodCl7cmV0dXJuIDM1PHQ/SW48dD8tMTpWcihTTHIsdCt2dXwwKS0xfDA6LTF9ZnVuY3Rpb24gVWwodCl7cmV0dXJuIHRpPHQ/Ujc8dD8tMTowOi0xfWZ1bmN0aW9uIGpyMCh0KXtpZig4PHQpe2lmKEV2PHQpe2lmKGVmPHQpe2lmKERvPHQpcmV0dXJuLTE7aWYoUXg8dCl7dmFyIG49dDw9TWE/MTowLGU9biYmLTE7cmV0dXJuIGV9aWYoZm88dCl7aWYoeGM8dCl7aWYob3g8dCl7dmFyIGk9dDw9RW8/MTowLHg9aSYmLTE7cmV0dXJuIHh9cmV0dXJuIDB9cmV0dXJuLTF9aWYoQ288dCl7dmFyIGM9dDw9bW8/MTowLHM9YyYmLTE7cmV0dXJuIHN9cmV0dXJuIDB9cmV0dXJuLTF9cmV0dXJuIFZyKFlEcix0LTl8MCktMXwwfXJldHVybi0xfWZ1bmN0aW9uIEdyMCh0KXtyZXR1cm4gMzU8dD9Jbjx0Py0xOlZyKHRScix0K3Z1fDApLTF8MDotMX1mdW5jdGlvbiBkOSh0KXtyZXR1cm4gNDE8dD80Nzx0Py0xOlZyKENMcix0K195fDApLTF8MDotMX1mdW5jdGlvbiBrOSh0KXtyZXR1cm4gMzU8dD9Jbjx0Py0xOlZyKGdMcix0K3Z1fDApLTF8MDotMX1mdW5jdGlvbiBNcjAodCl7cmV0dXJuIDM1PHQ/SW48dD8tMTpWcihGTHIsdCt2dXwwKS0xfDA6LTF9ZnVuY3Rpb24gQnIwKHQpe3JldHVybiB6Mjx0P1N2PHQ/LTE6MDotMX1mdW5jdGlvbiB3OSh0KXtyZXR1cm4gMzU8dD9Jbjx0Py0xOlZyKFRMcix0K3Z1fDApLTF8MDotMX1mdW5jdGlvbiBmNyh0KXtyZXR1cm4gNDc8dD9SNzx0Py0xOlZyKHFMcix0K1d0fDApLTF8MDotMX1mdW5jdGlvbiBFOSh0KXtyZXR1cm4gNDI8dD81Nzx0Py0xOlZyKHVMcix0K3h5fDApLTF8MDotMX1mdW5jdGlvbiBCYyh0KXtyZXR1cm4gNDU8dD85NTx0Py0xOlZyKGFMcix0K3YxfDApLTF8MDotMX1mdW5jdGlvbiBMcyh0KXtyZXR1cm4gZjE8dD9BMjx0Py0xOjA6LTF9ZnVuY3Rpb24gcXIwKHQpe3JldHVybiA0Njx0PzQ3PHQ/LTE6MDotMX1mdW5jdGlvbiBVcjAodCl7cmV0dXJuIDU3PHQ/NTg8dD8tMTowOi0xfWZ1bmN0aW9uIGRuKHQpe3JldHVybiAzNTx0P0luPHQ/LTE6VnIoT0xyLHQrdnV8MCktMXwwOi0xfWZ1bmN0aW9uIEhyMCh0KXtmb3IoOzspe2duKHQpO3ZhciBuPWoodCksZT1JbjxuPzE6VnIoeFJyLG4rMXwwKS0xfDA7aWYoMzxlPj4+MCl2YXIgaT1xKHQpO2Vsc2Ugc3dpdGNoKGUpe2Nhc2UgMDp2YXIgaT0xO2JyZWFrO2Nhc2UgMTp2YXIgaT0yO2JyZWFrO2Nhc2UgMjp2YXIgaT0wO2JyZWFrO2RlZmF1bHQ6aWYoRzAodCwyKSxMcyhqKHQpKT09PTApe3ZhciB4PUwxKGoodCkpO2lmKHg9PT0wKWlmKE5uKGoodCkpPT09MCYmTm4oaih0KSk9PT0wKXZhciBjPU5uKGoodCkpIT09MD8xOjAsaT1jJiZxKHQpO2Vsc2UgdmFyIGk9cSh0KTtlbHNlIGlmKHg9PT0xJiZObihqKHQpKT09PTApZm9yKDs7KXt2YXIgcz1BMShqKHQpKTtpZihzIT09MCl7dmFyIHA9cyE9PTE/MTowLGk9cCYmcSh0KTticmVha319ZWxzZSB2YXIgaT1xKHQpfWVsc2UgdmFyIGk9cSh0KX1pZigyPGk+Pj4wKXRocm93WzAsU24sc3dyXTtzd2l0Y2goaSl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpyZXR1cm4gMTtkZWZhdWx0OmlmKG5MKGJyMCh0KSkpY29udGludWU7cmV0dXJuIG1yMCh0LDEpLDB9fX1mdW5jdGlvbiBTOSh0LG4pe3ZhciBlPW4tdFszXVsyXXwwO3JldHVyblswLGhyMCh0KSxlXX1mdW5jdGlvbiBIbCh0LG4sZSl7dmFyIGk9UzkodCxlKSx4PVM5KHQsbik7cmV0dXJuWzAsdFsxXSx4LGldfWZ1bmN0aW9uIGp1KHQsbil7cmV0dXJuIFM5KHQsbls2XSl9ZnVuY3Rpb24gaDcodCxuKXtyZXR1cm4gUzkodCxuWzNdKX1mdW5jdGlvbiBudCh0LG4pe3JldHVybiBIbCh0LG5bNl0sblszXSl9ZnVuY3Rpb24gWHIwKHQsbil7dmFyIGU9MDtpZih0eXBlb2Ygbj09XCJudW1iZXJcIillPTE7ZWxzZSBzd2l0Y2goblswXSl7Y2FzZSAyOnZhciBpPW5bMV1bMV07YnJlYWs7Y2FzZSAzOnJldHVybiBuWzFdWzFdO2Nhc2UgNDp2YXIgaT1uWzFdO2JyZWFrO2Nhc2UgNzp2YXIgaT1uWzJdO2JyZWFrO2Nhc2UgNTpjYXNlIDg6cmV0dXJuIG5bMV07ZGVmYXVsdDplPTF9cmV0dXJuIGU/bnQodCx0WzJdKTppfWZ1bmN0aW9uIEd1KHQsbixlKXtyZXR1cm5bMCx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sWzAsWzAsbixlXSx0WzZdXSx0WzddXX1mdW5jdGlvbiBZcjAodCxuLGUpe3JldHVybiBHdSh0LG4sWzEwLE1sKGUpXSl9ZnVuY3Rpb24gYkwodCxuLGUsaSl7cmV0dXJuIEd1KHQsbixbMTIsZSxpXSl9ZnVuY3Rpb24gRWkodCxuKXtyZXR1cm4gR3UodCxuLEdEcil9ZnVuY3Rpb24gZDcodCxuKXt2YXIgZT1uWzNdLGk9WzAsaHIwKHQpKzF8MCxlXTtyZXR1cm5bMCx0WzFdLHRbMl0saSx0WzRdLHRbNV0sdFs2XSx0WzddXX1mdW5jdGlvbiBWcjAodCl7dmFyIG49dW4odCk7cmV0dXJuIG4hPT0wJiZYdD09PUl0KHQsbi0xfDApP203KHQsMCxuLTF8MCk6dH1mdW5jdGlvbiBTaSh0LG4sZSxpLHgpe3ZhciBjPVswLHRbMV0sbixlXSxzPU10KGkpLHA9eD8wOjE7cmV0dXJuWzAsYyxbMCxwLHMsdFs3XVszXVsxXTxjWzJdWzFdPzE6MF1dfWZ1bmN0aW9uIHFjKHQsbil7aWYoSXQobiwwKT09PTQ1KXZhciBlPW03KG4sMSx1bihuKS0xfDApLGk9MTtlbHNlIHZhciBlPW4saT0wO3N3aXRjaCh0KXtjYXNlIDE6dHJ5e3ZhciB4PWp2KFJ2KFRlKEREcixlKSkpLGM9eH1jYXRjaChUKXtpZihUPUV0KFQpLFRbMV0hPT1xNyl0aHJvdyBUO3ZhciBjPWtlKFRlKExEcixlKSl9YnJlYWs7Y2FzZSAwOmNhc2UgMzp0cnl7dmFyIHM9anYoUnYoZSkpLGM9c31jYXRjaChUKXtpZihUPUV0KFQpLFRbMV0hPT1xNyl0aHJvdyBUO3ZhciBjPWtlKFRlKFJEcixlKSl9YnJlYWs7ZGVmYXVsdDp0cnl7dmFyIHA9b2woZSksYz1wfWNhdGNoKFQpe2lmKFQ9RXQoVCksVFsxXSE9PXE3KXRocm93IFQ7dmFyIGM9a2UoVGUoakRyLGUpKX19dmFyIHk9aT8tYzpjO3JldHVyblsxMCx0LHksbl19ZnVuY3Rpb24gSGkodCxuKXtpZihJdChuLDApPT09NDUpdmFyIGU9bTcobiwxLHVuKG4pLTF8MCksaT0xO2Vsc2UgdmFyIGU9bixpPTA7aWYoMjw9dCl7dmFyIHg9VnIwKGUpO3RyeXt2YXIgYz1vbCh4KSxzPWN9Y2F0Y2godyl7aWYodz1FdCh3KSx3WzFdIT09cTcpdGhyb3cgdzt2YXIgcz1rZShUZShDRHIseCkpfXZhciBwPXN9ZWxzZXt2YXIgeT1WcjAoZSk7dHJ5e3ZhciBUPWp2KFJ2KHkpKSxFPVR9Y2F0Y2goRyl7aWYoRz1FdChHKSxHWzFdIT09cTcpdGhyb3cgRzt2YXIgRT1rZShUZShQRHIseSkpfXZhciBwPUV9dmFyIGQ9aT8tcDpwO3JldHVyblsxMSx0LGQsbl19ZnVuY3Rpb24genIwKHQsbixlKXtyZXR1cm4gbkwoZSk/dDpHdSh0LG4sMzcpfWZ1bmN0aW9uIEtyMCh0LG4sZSxpLHgpe3ZhciBjPUhsKHQsbitlWzZdfDAsbitlWzNdfDApO3JldHVyblswLGMsamwoZSxpLChKbShlKS1pfDApLXh8MCldfWZ1bmN0aW9uIFdyMCh0LG4pe2Zvcih2YXIgZT10WzJdWzZdLGk9WzAsbixuLmxlbmd0aC0xLGxyMCx2cjAsc3IwLGNyMCxhcjAsb3IwLHhyMCxmcjAsaXIwLHVyMF0seD0kbihuLmxlbmd0aC0xKSxjPXQ7Oyl7Z24oaSk7dmFyIHM9aihpKSxwPTkyPHM/MTpWcihqTHIscysxfDApLTF8MDtpZigyPHA+Pj4wKXZhciB5PXEoaSk7ZWxzZSBzd2l0Y2gocCl7Y2FzZSAwOnZhciB5PTI7YnJlYWs7Y2FzZSAxOmZvcig7Oyl7RzAoaSwzKTt2YXIgVD1qKGkpO2lmKC0xPFQpaWYoOTE8VCl2YXIgRT1UPD05Mj8xOjAsZD1FJiYtMTtlbHNlIHZhciBkPTA7ZWxzZSB2YXIgZD0tMTtpZihkIT09MCl7dmFyIHk9cShpKTticmVha319YnJlYWs7ZGVmYXVsdDppZihHMChpLDMpLExzKGooaSkpPT09MCl7dmFyIHc9TDEoaihpKSk7aWYodz09PTApaWYoTm4oaihpKSk9PT0wJiZObihqKGkpKT09PTApdmFyIEc9Tm4oaihpKSkhPT0wPzE6MCx5PUcmJnEoaSk7ZWxzZSB2YXIgeT1xKGkpO2Vsc2UgaWYodz09PTEmJk5uKGooaSkpPT09MClmb3IoOzspe3ZhciBBPUExKGooaSkpO2lmKEEhPT0wKXt2YXIgeT1BPT09MT8xOnEoaSk7YnJlYWt9fWVsc2UgdmFyIHk9cShpKX1lbHNlIHZhciB5PXEoaSl9aWYoMzx5Pj4+MClyZXR1cm4ga2UoSURyKTtzd2l0Y2goeSl7Y2FzZSAwOnZhciBTPUtyMChjLGUsaSwyLDApLE09U1sxXSxLPUJpKFRlKEFEcixTWzJdKSksVj0wPD1LPzE6MCxmMD1WJiYoSzw9NTUyOTU/MTowKTtpZihmMCl2YXIgazA9ZjA7ZWxzZSB2YXIgbTA9NTczNDQ8PUs/MTowLGswPW0wJiYoSzw9bEk/MTowKTt2YXIgZzA9azA/enIwKGMsTSxLKTpHdShjLE0sMzcpO1MxKHgsSyk7dmFyIGM9ZzA7Y29udGludWU7Y2FzZSAxOnZhciBlMD1LcjAoYyxlLGksMywxKSx4MD1CaShUZShORHIsZTBbMl0pKSxsPXpyMChjLGUwWzFdLHgwKTtTMSh4LHgwKTt2YXIgYz1sO2NvbnRpbnVlO2Nhc2UgMjpyZXR1cm5bMCxjLE10KHgpXTtkZWZhdWx0OkdsKGkseCk7Y29udGludWV9fX1mdW5jdGlvbiBSdCh0LG4sZSl7dmFyIGk9RWkodCxudCh0LG4pKTtyZXR1cm4gJHYobiksbyhlLGksbil9ZnVuY3Rpb24gUjEodCxuLGUpe2Zvcih2YXIgaT10Ozspe2duKGUpO3ZhciB4PWooZSk7aWYoLTE8eClpZig0Mjx4KXZhciBjPXg8PUh1PzE6MCxzPWMmJigkdTx4PzE6MCk7ZWxzZSB2YXIgcz1WcihWRHIseCktMXwwO2Vsc2UgdmFyIHM9LTE7aWYoMzxzPj4+MCl2YXIgcD1xKGUpO2Vsc2Ugc3dpdGNoKHMpe2Nhc2UgMDpmb3IoOzspe0cwKGUsMyk7dmFyIHk9aihlKTtpZigtMTx5KWlmKDQxPHkpaWYoNDI8eSlpZigkdTx5KXZhciBUPXk8PUh1PzE6MCxFPVQmJi0xO2Vsc2UgdmFyIEU9MDtlbHNlIHZhciBFPS0xO2Vsc2UgdmFyIEU9VnIoZVJyLHkpLTF8MDtlbHNlIHZhciBFPS0xO2lmKEUhPT0wKXt2YXIgcD1xKGUpO2JyZWFrfX1icmVhaztjYXNlIDE6dmFyIHA9MDticmVhaztjYXNlIDI6RzAoZSwwKTt2YXIgZD14aShqKGUpKSE9PTA/MTowLHA9ZCYmcShlKTticmVhaztkZWZhdWx0OkcwKGUsMyk7dmFyIHc9aihlKSxHPTQ0PHc/NDc8dz8tMTpWcihhUnIsdyttdnwwKS0xfDA6LTEscD1HPT09MD9xcjAoaihlKSk9PT0wPzI6cShlKTpHPT09MT8xOnEoZSl9aWYoMzxwPj4+MCl7dmFyIEE9RWkoaSxudChpLGUpKTtyZXR1cm5bMCxBLGg3KEEsZSldfXN3aXRjaChwKXtjYXNlIDA6dmFyIFM9ZDcoaSxlKTtHbChlLG4pO3ZhciBpPVM7Y29udGludWU7Y2FzZSAxOnZhciBNPWlbNF0/YkwoaSxudChpLGUpLGJ3cixsd3IpOmk7cmV0dXJuWzAsTSxoNyhNLGUpXTtjYXNlIDI6aWYoaVs0XSlyZXR1cm5bMCxpLGg3KGksZSldO2huKG4scHdyKTtjb250aW51ZTtkZWZhdWx0OkdsKGUsbik7Y29udGludWV9fX1mdW5jdGlvbiBlMih0LG4sZSl7Zm9yKDs7KXtnbihlKTt2YXIgaT1qKGUpLHg9MTM8aT9IdTxpPzE6JHU8aT8yOjE6VnIoTkxyLGkrMXwwKS0xfDA7aWYoMzx4Pj4+MCl2YXIgYz1xKGUpO2Vsc2Ugc3dpdGNoKHgpe2Nhc2UgMDp2YXIgYz0wO2JyZWFrO2Nhc2UgMTpmb3IoOzspe0cwKGUsMik7dmFyIHM9aihlKTtpZigtMTxzKWlmKDEyPHMpaWYoMTM8cylpZigkdTxzKXZhciBwPXM8PUh1PzE6MCx5PXAmJi0xO2Vsc2UgdmFyIHk9MDtlbHNlIHZhciB5PS0xO2Vsc2UgdmFyIHk9VnIoTURyLHMpLTF8MDtlbHNlIHZhciB5PS0xO2lmKHkhPT0wKXt2YXIgYz1xKGUpO2JyZWFrfX1icmVhaztjYXNlIDI6dmFyIGM9MTticmVhaztkZWZhdWx0OkcwKGUsMSk7dmFyIGM9eGkoaihlKSk9PT0wPzE6cShlKX1pZigyPGM+Pj4wKXJldHVybiBrZShtd3IpO3N3aXRjaChjKXtjYXNlIDA6cmV0dXJuWzAsdCxoNyh0LGUpXTtjYXNlIDE6dmFyIFQ9aDcodCxlKSxFPWQ3KHQsZSksZD1KbShlKTtyZXR1cm5bMCxFLFswLFRbMV0sVFsyXS1kfDBdXTtkZWZhdWx0OkdsKGUsbik7Y29udGludWV9fX1mdW5jdGlvbiBKcjAodCxuKXtmdW5jdGlvbiBlKGswKXtyZXR1cm4gRzAoazAsMyksenUoaihrMCkpPT09MD8yOnEoazApfWduKG4pO3ZhciBpPWoobikseD11YzxpP0h1PGk/MTokdTxpPzI6MTpWcihuTHIsaSsxfDApLTF8MDtpZigxNDx4Pj4+MCl2YXIgYz1xKG4pO2Vsc2Ugc3dpdGNoKHgpe2Nhc2UgMTp2YXIgYz0xNjticmVhaztjYXNlIDI6dmFyIGM9MTU7YnJlYWs7Y2FzZSAzOkcwKG4sMTUpO3ZhciBjPXhpKGoobikpPT09MD8xNTpxKG4pO2JyZWFrO2Nhc2UgNDpHMChuLDQpO3ZhciBjPXp1KGoobikpPT09MD9lKG4pOnEobik7YnJlYWs7Y2FzZSA1OkcwKG4sMTEpO3ZhciBjPXp1KGoobikpPT09MD9lKG4pOnEobik7YnJlYWs7Y2FzZSA3OnZhciBjPTU7YnJlYWs7Y2FzZSA4OnZhciBjPTY7YnJlYWs7Y2FzZSA5OnZhciBjPTc7YnJlYWs7Y2FzZSAxMDp2YXIgYz04O2JyZWFrO2Nhc2UgMTE6dmFyIGM9OTticmVhaztjYXNlIDEyOkcwKG4sMTQpO3ZhciBzPUwxKGoobikpO2lmKHM9PT0wKXZhciBjPU5uKGoobikpPT09MCYmTm4oaihuKSk9PT0wJiZObihqKG4pKT09PTA/MTI6cShuKTtlbHNlIGlmKHM9PT0xJiZObihqKG4pKT09PTApZm9yKDs7KXt2YXIgcD1BMShqKG4pKTtpZihwIT09MCl7dmFyIGM9cD09PTE/MTM6cShuKTticmVha319ZWxzZSB2YXIgYz1xKG4pO2JyZWFrO2Nhc2UgMTM6dmFyIGM9MTA7YnJlYWs7Y2FzZSAxNDpHMChuLDE0KTt2YXIgYz1ObihqKG4pKT09PTAmJk5uKGoobikpPT09MD8xOnEobik7YnJlYWs7ZGVmYXVsdDp2YXIgYz0wfWlmKDE2PGM+Pj4wKXJldHVybiBrZShwRHIpO3N3aXRjaChjKXtjYXNlIDE6dmFyIHk9U2Uobik7cmV0dXJuWzAsdCx5LFswLEJpKFRlKG1Ecix5KSldLDBdO2Nhc2UgMjp2YXIgVD1TZShuKSxFPUJpKFRlKF9EcixUKSk7cmV0dXJuIE40PD1FP1swLHQsVCxbMCxFPj4+M3wwLDQ4KyhFJjcpfDBdLDFdOlswLHQsVCxbMCxFXSwxXTtjYXNlIDM6dmFyIGQ9U2Uobik7cmV0dXJuWzAsdCxkLFswLEJpKFRlKHlEcixkKSldLDFdO2Nhc2UgNDpyZXR1cm5bMCx0LGhEcixbMCwwXSwwXTtjYXNlIDU6cmV0dXJuWzAsdCxkRHIsWzAsOF0sMF07Y2FzZSA2OnJldHVyblswLHQsa0RyLFswLDEyXSwwXTtjYXNlIDc6cmV0dXJuWzAsdCx3RHIsWzAsMTBdLDBdO2Nhc2UgODpyZXR1cm5bMCx0LEVEcixbMCwxM10sMF07Y2FzZSA5OnJldHVyblswLHQsU0RyLFswLDldLDBdO2Nhc2UgMTA6cmV0dXJuWzAsdCxnRHIsWzAsMTFdLDBdO2Nhc2UgMTE6dmFyIHc9U2Uobik7cmV0dXJuWzAsdCx3LFswLEJpKFRlKEZEcix3KSldLDFdO2Nhc2UgMTI6dmFyIEc9U2Uobik7cmV0dXJuWzAsdCxHLFswLEJpKFRlKFREcixtNyhHLDEsdW4oRyktMXwwKSkpXSwwXTtjYXNlIDEzOnZhciBBPVNlKG4pLFM9QmkoVGUoT0RyLG03KEEsMix1bihBKS0zfDApKSksTT1sSTxTP0VpKHQsbnQodCxuKSk6dDtyZXR1cm5bMCxNLEEsWzAsU10sMF07Y2FzZSAxNDp2YXIgSz1TZShuKSxWPUxsKG4pO3JldHVyblswLEVpKHQsbnQodCxuKSksSyxWLDBdO2Nhc2UgMTU6dmFyIGYwPVNlKG4pO3JldHVyblswLGQ3KHQsbiksZjAsWzBdLDBdO2RlZmF1bHQ6dmFyIG0wPVNlKG4pO3JldHVyblswLHQsbTAsTGwobiksMF19fWZ1bmN0aW9uICRyMCh0LG4sZSxpLHgsYyl7Zm9yKHZhciBzPXQscD14Ozspe2duKGMpO3ZhciB5PWooYyksVD05Mjx5PzE6VnIoUkxyLHkrMXwwKS0xfDA7aWYoNDxUPj4+MCl2YXIgRT1xKGMpO2Vsc2Ugc3dpdGNoKFQpe2Nhc2UgMDp2YXIgRT0zO2JyZWFrO2Nhc2UgMTpmb3IoOzspe0cwKGMsNCk7dmFyIGQ9aihjKTtpZigtMTxkKWlmKDkxPGQpdmFyIHc9ZDw9OTI/MTowLEc9dyYmLTE7ZWxzZSB2YXIgRz1WcihaRHIsZCktMXwwO2Vsc2UgdmFyIEc9LTE7aWYoRyE9PTApe3ZhciBFPXEoYyk7YnJlYWt9fWJyZWFrO2Nhc2UgMjp2YXIgRT0yO2JyZWFrO2Nhc2UgMzp2YXIgRT0wO2JyZWFrO2RlZmF1bHQ6dmFyIEU9MX1pZig0PEU+Pj4wKXJldHVybiBrZShfd3IpO3N3aXRjaChFKXtjYXNlIDA6dmFyIEE9U2UoYyk7aWYoaG4oaSxBKSxxbihuLEEpKXJldHVyblswLHMsaDcocyxjKSxwXTtobihlLEEpO2NvbnRpbnVlO2Nhc2UgMTpobihpLHl3cik7dmFyIFM9SnIwKHMsYyksTT1TWzRdLEs9TXx8cDtobihpLFNbMl0pO3ZhciBWPVNbM107cHooZnVuY3Rpb24odzApe3JldHVybiBTMShlLHcwKX0sVik7dmFyIHM9U1sxXSxwPUs7Y29udGludWU7Y2FzZSAyOnZhciBmMD1TZShjKTtobihpLGYwKTt2YXIgbTA9ZDcoRWkocyxudChzLGMpKSxjKTtyZXR1cm4gaG4oZSxmMCksWzAsbTAsaDcobTAsYykscF07Y2FzZSAzOnZhciBrMD1TZShjKTtobihpLGswKTt2YXIgZzA9RWkocyxudChzLGMpKTtyZXR1cm4gaG4oZSxrMCksWzAsZzAsaDcoZzAsYykscF07ZGVmYXVsdDp2YXIgZTA9Y1s2XSx4MD1jWzNdLWUwfDAsbD1MdCh4MCo0fDApLGMwPVJsKGNbMV0sZTAseDAsbCk7c04oaSxsLDAsYzApLHNOKGUsbCwwLGMwKTtjb250aW51ZX19fWZ1bmN0aW9uIFpyMCh0LG4sZSxpLHgpe2Zvcih2YXIgYz10Ozspe2duKHgpO3ZhciBzPWooeCkscD05NjxzPzE6VnIoekxyLHMrMXwwKS0xfDA7aWYoNjxwPj4+MCl2YXIgeT1xKHgpO2Vsc2Ugc3dpdGNoKHApe2Nhc2UgMDp2YXIgeT0wO2JyZWFrO2Nhc2UgMTpmb3IoOzspe0cwKHgsNik7dmFyIFQ9aih4KTtpZigtMTxUKWlmKDk1PFQpdmFyIEU9VDw9OTY/MTowLGQ9RSYmLTE7ZWxzZSB2YXIgZD1WcigkRHIsVCktMXwwO2Vsc2UgdmFyIGQ9LTE7aWYoZCE9PTApe3ZhciB5PXEoeCk7YnJlYWt9fWJyZWFrO2Nhc2UgMjp2YXIgeT01O2JyZWFrO2Nhc2UgMzpHMCh4LDUpO3ZhciB5PXhpKGooeCkpPT09MD80OnEoeCk7YnJlYWs7Y2FzZSA0OkcwKHgsNik7dmFyIHc9aih4KSxHPUluPHc/dHM8dz8tMTowOi0xLHk9Rz09PTA/MjpxKHgpO2JyZWFrO2Nhc2UgNTp2YXIgeT0zO2JyZWFrO2RlZmF1bHQ6dmFyIHk9MX1pZig2PHk+Pj4wKXJldHVybiBrZShod3IpO3N3aXRjaCh5KXtjYXNlIDA6cmV0dXJuWzAsRWkoYyxudChjLHgpKSwxXTtjYXNlIDE6cmV0dXJuIHFpKGksOTYpLFswLGMsMV07Y2FzZSAyOnJldHVybiBobihpLGR3ciksWzAsYywwXTtjYXNlIDM6cWkoZSw5MikscWkoaSw5Mik7dmFyIEE9SnIwKGMseCksUz1BWzJdO2huKGUsUyksaG4oaSxTKTt2YXIgTT1BWzNdO3B6KGZ1bmN0aW9uKG0wKXtyZXR1cm4gUzEobixtMCl9LE0pO3ZhciBjPUFbMV07Y29udGludWU7Y2FzZSA0OmhuKGUsa3dyKSxobihpLHd3ciksaG4obixFd3IpO3ZhciBjPWQ3KGMseCk7Y29udGludWU7Y2FzZSA1OnZhciBLPVNlKHgpO2huKGUsSyksaG4oaSxLKSxxaShuLDEwKTt2YXIgYz1kNyhjLHgpO2NvbnRpbnVlO2RlZmF1bHQ6dmFyIFY9U2UoeCk7aG4oZSxWKSxobihpLFYpLGhuKG4sVik7Y29udGludWV9fX1mdW5jdGlvbiBQZWUodCxuKXtmdW5jdGlvbiBlKEIwKXtmb3IoOzspaWYoRzAoQjAsMzMpLGRuKGooQjApKSE9PTApcmV0dXJuIHEoQjApfWZ1bmN0aW9uIGkoQjApe2Zvcig7OylpZihHMChCMCwyNyksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9ZnVuY3Rpb24geChCMCl7RzAoQjAsMjYpO3ZhciBEMD1CdChqKEIwKSk7aWYoRDA9PT0wKXtmb3IoOzspaWYoRzAoQjAsMjUpLGRuKGooQjApKSE9PTApcmV0dXJuIHEoQjApfXJldHVybiBEMD09PTE/aShCMCk6cShCMCl9ZnVuY3Rpb24gYyhCMCl7Zm9yKDs7KWlmKEcwKEIwLDI3KSxkbihqKEIwKSkhPT0wKXJldHVybiBxKEIwKX1mdW5jdGlvbiBzKEIwKXtHMChCMCwyNik7dmFyIEQwPUJ0KGooQjApKTtpZihEMD09PTApe2Zvcig7OylpZihHMChCMCwyNSksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9cmV0dXJuIEQwPT09MT9jKEIwKTpxKEIwKX1mdW5jdGlvbiBwKEIwKXtyOmZvcig7Oyl7aWYocG4oaihCMCkpPT09MClmb3IoOzspe0cwKEIwLDI4KTt2YXIgRDA9TWMoaihCMCkpO2lmKDM8RDA+Pj4wKXJldHVybiBxKEIwKTtzd2l0Y2goRDApe2Nhc2UgMDpyZXR1cm4gYyhCMCk7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpjb250aW51ZSByO2RlZmF1bHQ6cmV0dXJuIHMoQjApfX1yZXR1cm4gcShCMCl9fWZ1bmN0aW9uIHkoQjApe0cwKEIwLDMzKTt2YXIgRDA9R3IwKGooQjApKTtpZigzPEQwPj4+MClyZXR1cm4gcShCMCk7c3dpdGNoKEQwKXtjYXNlIDA6cmV0dXJuIGUoQjApO2Nhc2UgMTp2YXIgTGU9QzEoaihCMCkpO2lmKExlPT09MClmb3IoOzspe0cwKEIwLDI4KTt2YXIgSGU9UXYoaihCMCkpO2lmKDI8SGU+Pj4wKXJldHVybiBxKEIwKTtzd2l0Y2goSGUpe2Nhc2UgMDpyZXR1cm4gYyhCMCk7Y2FzZSAxOmNvbnRpbnVlO2RlZmF1bHQ6cmV0dXJuIHMoQjApfX1pZihMZT09PTEpZm9yKDs7KXtHMChCMCwyOCk7dmFyIGhlPU1jKGooQjApKTtpZigzPGhlPj4+MClyZXR1cm4gcShCMCk7c3dpdGNoKGhlKXtjYXNlIDA6cmV0dXJuIGMoQjApO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cmV0dXJuIHAoQjApO2RlZmF1bHQ6cmV0dXJuIHMoQjApfX1yZXR1cm4gcShCMCk7Y2FzZSAyOmZvcig7Oyl7RzAoQjAsMjgpO3ZhciBtZT1RdihqKEIwKSk7aWYoMjxtZT4+PjApcmV0dXJuIHEoQjApO3N3aXRjaChtZSl7Y2FzZSAwOnJldHVybiBpKEIwKTtjYXNlIDE6Y29udGludWU7ZGVmYXVsdDpyZXR1cm4geChCMCl9fWRlZmF1bHQ6Zm9yKDs7KXtHMChCMCwyOCk7dmFyIFpuPU1jKGooQjApKTtpZigzPFpuPj4+MClyZXR1cm4gcShCMCk7c3dpdGNoKFpuKXtjYXNlIDA6cmV0dXJuIGkoQjApO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cmV0dXJuIHAoQjApO2RlZmF1bHQ6cmV0dXJuIHgoQjApfX19fWZ1bmN0aW9uIFQoQjApe0cwKEIwLDMxKTt2YXIgRDA9QnQoaihCMCkpO2lmKEQwPT09MCl7Zm9yKDs7KWlmKEcwKEIwLDI5KSxkbihqKEIwKSkhPT0wKXJldHVybiBxKEIwKX1yZXR1cm4gRDA9PT0xP2UoQjApOnEoQjApfWZ1bmN0aW9uIEUoQjApe3JldHVybiBHMChCMCwzKSxVcjAoaihCMCkpPT09MD8zOnEoQjApfWZ1bmN0aW9uIGQoQjApe3JldHVybiBtOShqKEIwKSk9PT0wJiZ2OShqKEIwKSk9PT0wJiZCcjAoaihCMCkpPT09MCYmQXIwKGooQjApKT09PTAmJk5yMChqKEIwKSk9PT0wJiZ2TChqKEIwKSk9PT0wJiZCbChqKEIwKSk9PT0wJiZtOShqKEIwKSk9PT0wJiZMcyhqKEIwKSk9PT0wJiZDcjAoaihCMCkpPT09MCYmVWwoaihCMCkpPT09MD8zOnEoQjApfWZ1bmN0aW9uIHcoQjApe0cwKEIwLDM0KTt2YXIgRDA9T3IwKGooQjApKTtpZigzPEQwPj4+MClyZXR1cm4gcShCMCk7c3dpdGNoKEQwKXtjYXNlIDA6cmV0dXJuIGUoQjApO2Nhc2UgMTpmb3IoOzspe0cwKEIwLDM0KTt2YXIgTGU9UHMoaihCMCkpO2lmKDQ8TGU+Pj4wKXJldHVybiBxKEIwKTtzd2l0Y2goTGUpe2Nhc2UgMDpyZXR1cm4gZShCMCk7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpyZXR1cm4geShCMCk7Y2FzZSAzOnI6Zm9yKDs7KXtpZihwbihqKEIwKSk9PT0wKWZvcig7Oyl7RzAoQjAsMzQpO3ZhciBIZT1QcyhqKEIwKSk7aWYoNDxIZT4+PjApcmV0dXJuIHEoQjApO3N3aXRjaChIZSl7Y2FzZSAwOnJldHVybiBlKEIwKTtjYXNlIDE6Y29udGludWU7Y2FzZSAyOnJldHVybiB5KEIwKTtjYXNlIDM6Y29udGludWUgcjtkZWZhdWx0OnJldHVybiBUKEIwKX19cmV0dXJuIHEoQjApfWRlZmF1bHQ6cmV0dXJuIFQoQjApfX1jYXNlIDI6cmV0dXJuIHkoQjApO2RlZmF1bHQ6cmV0dXJuIFQoQjApfX1mdW5jdGlvbiBHKEIwKXtmb3IoOzspaWYoRzAoQjAsMTkpLGRuKGooQjApKSE9PTApcmV0dXJuIHEoQjApfWZ1bmN0aW9uIEEoQjApe0cwKEIwLDM0KTt2YXIgRDA9UXYoaihCMCkpO2lmKDI8RDA+Pj4wKXJldHVybiBxKEIwKTtzd2l0Y2goRDApe2Nhc2UgMDpyZXR1cm4gZShCMCk7Y2FzZSAxOmZvcig7Oyl7RzAoQjAsMzQpO3ZhciBMZT1NYyhqKEIwKSk7aWYoMzxMZT4+PjApcmV0dXJuIHEoQjApO3N3aXRjaChMZSl7Y2FzZSAwOnJldHVybiBlKEIwKTtjYXNlIDE6Y29udGludWU7Y2FzZSAyOnI6Zm9yKDs7KXtpZihwbihqKEIwKSk9PT0wKWZvcig7Oyl7RzAoQjAsMzQpO3ZhciBIZT1NYyhqKEIwKSk7aWYoMzxIZT4+PjApcmV0dXJuIHEoQjApO3N3aXRjaChIZSl7Y2FzZSAwOnJldHVybiBlKEIwKTtjYXNlIDE6Y29udGludWU7Y2FzZSAyOmNvbnRpbnVlIHI7ZGVmYXVsdDpyZXR1cm4gVChCMCl9fXJldHVybiBxKEIwKX1kZWZhdWx0OnJldHVybiBUKEIwKX19ZGVmYXVsdDpyZXR1cm4gVChCMCl9fWZ1bmN0aW9uIFMoQjApe2Zvcig7OylpZihHMChCMCwxNyksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9ZnVuY3Rpb24gTShCMCl7Zm9yKDs7KWlmKEcwKEIwLDE3KSxkbihqKEIwKSkhPT0wKXJldHVybiBxKEIwKX1mdW5jdGlvbiBLKEIwKXtmb3IoOzspaWYoRzAoQjAsMTEpLGRuKGooQjApKSE9PTApcmV0dXJuIHEoQjApfWZ1bmN0aW9uIFYoQjApe2Zvcig7OylpZihHMChCMCwxMSksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9ZnVuY3Rpb24gZjAoQjApe2Zvcig7OylpZihHMChCMCwxNSksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9ZnVuY3Rpb24gbTAoQjApe2Zvcig7OylpZihHMChCMCwxNSksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9ZnVuY3Rpb24gazAoQjApe2Zvcig7OylpZihHMChCMCwyMyksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9ZnVuY3Rpb24gZzAoQjApe2Zvcig7OylpZihHMChCMCwyMyksZG4oaihCMCkpIT09MClyZXR1cm4gcShCMCl9ZnVuY3Rpb24gZTAoQjApe0cwKEIwLDMyKTt2YXIgRDA9QnQoaihCMCkpO2lmKEQwPT09MCl7Zm9yKDs7KWlmKEcwKEIwLDMwKSxkbihqKEIwKSkhPT0wKXJldHVybiBxKEIwKX1yZXR1cm4gRDA9PT0xP2UoQjApOnEoQjApfWZ1bmN0aW9uIHgwKEIwKXtyOmZvcig7Oyl7aWYocG4oaihCMCkpPT09MClmb3IoOzspe0cwKEIwLDM0KTt2YXIgRDA9UnIwKGooQjApKTtpZig0PEQwPj4+MClyZXR1cm4gcShCMCk7c3dpdGNoKEQwKXtjYXNlIDA6cmV0dXJuIGUoQjApO2Nhc2UgMTpyZXR1cm4gQShCMCk7Y2FzZSAyOmNvbnRpbnVlO2Nhc2UgMzpjb250aW51ZSByO2RlZmF1bHQ6cmV0dXJuIGUwKEIwKX19cmV0dXJuIHEoQjApfX1nbihuKTt2YXIgbD1qKG4pLGMwPWVmPGw/dnc8bD8tMTpVazxsP0MzPGw/Qnc8bD9FRTxsP1d5PGw/MTo4OkpkPGw/bEU8bD91RjxsPzE6ODpaVDxsPzE6ODpXRjxsP2JBPGw/MTo4OnNJPGw/MTo4OkM2PGw/RTQ8bD94NjxsP1Y4PGw/ajM8bD9yMzxsP0NPPGw/MTo4OkxJPGw/MTo4Okl5PGw/aGc8bD8xOjg6TXc8bD8xOjg6TDM8bD93ODxsP2pnPGw/MTo4OiQ0PGw/MTo4Olc4PGw/elQ8bD8xOjg6a2s8bD8xOjg6TzQ8bD9ZTzxsP2wzPGw/UWs8bD8xOjg6Zms8bD8xOjg6eHA8bD9WNjxsPzE6ODpUZDxsPzE6ODpHODxsP3M0PGw/dDY8bD8xOjg6cTY8bD8xOjg6QjY8bD9TNDxsPzE6ODpmbjxsPzE6ODpMRTxsP000PGw/ZzY8bD9TRjxsP2k4PGw/MTo4OmQ4PGw/MTo4OkY0PGw/SkY8bD8xOjg6bWg8bD8xOjg6VTY8bD9uODxsP3MzPGw/MTo4OlM4PGw/MTo4OkJTPGw/TDg8bD8xOjg6SzM8bD8xOjg6bTg8bD9mODxsP3g4PGw/dzM8bD8xOjg6XzY8bD8xOjg6czY8bD9vRjxsPzE6ODpaTzxsPzE6ODphMzxsP0RTPGw/ZTg8bD8xOjg6Zzg8bD8xOjg6SjM8bD9zRjxsPzE6ODppZzxsPzE6ODppdzxsP0VrPGw/d2s8bD9xazxsP0ZUPGw/Vms8bD8xOjg6dUE8bD8xOjg6ZHk8bD9WUzxsPzE6ODpfZDxsPzE6ODpUaDxsP3BGPGw/RkU8bD8xOjg6Wnc8bD8xOjg6U3k8bD9MXzxsPzE6ODpDRTxsPzE6ODpMRjxsP1Z3PGw/TXk8bD9ydzxsPzE6ODpYSTxsPzE6ODpqTzxsP2FwPGw/MTo4OmpUPGw/MTo4Ok90PGw/T0E8bD9nQTxsPzE6ODoxOjg6YzY8bD93NjxsP2w2PGw/azM8bD9WRTxsPzE6ODpxdzxsPzE6ODp2NDxsP25FPGw/MTo4OlR5PGw/MTo4OmMzPGw/VjQ8bD9lZzxsPzE6ODpxRjxsPzE6ODpYNDxsP19UPGw/MTo4Ok95PGw/MTo4OkQ2PGw/RDQ8bD9WMzxsP01TPGw/MTo4Old3PGw/MTo4OmN5PGw/ank8bD8xOjg6VlQ8bD8xOjg6QjQ8bD9iaDxsP0pUPGw/MTo4OkczPGw/MTo4OnI2PGw/c088bD8xOjg6WkU8bD8xOjg6dVQ8bD9aNDxsP1lkPGw/UTY8bD9MNDxsP042PGw/dnA8bD9EXzxsPzE6ODpQZDxsPzE6ODpwZDxsP1JnPGw/MTo4Ok9TPGw/MTo4Okc2PGw/STM8bD91azxsPzE6ODpjRTxsPzE6ODpsODxsP2w0PGw/MTo4OnJoPGw/MTo4Ok0zPGw/RlM8bD9ORTxsP2FUPGw/MTo4OmtUPGw/MTo4OnVTPGw/ZDM8bD8xOjg6emQ8bD8xOjg6bHk8bD9UNjxsP1BnPGw/MTo4OnZ5PGw/MTo4OkxPPGw/eUY8bD8xOjg6WUY8bD8xOjg6REk8bD9hdTxsP2pGPGw/QWg8bD9BTzxsPzE6ODpDZDxsPzE6ODpxaDxsP0FTPGw/MTo4OmxBPGw/MTo4OmNPPGw/QUk8bD94STxsPzE6ODpCXzxsPzE6ODpoUzxsP2ZUPGw/MTo4Om1nPGw/MTo4Ok5PPGw/Tnc8bD9ZaDxsP2x3PGw/MTo4OlFnPGw/MTo4OlZnPGw/TGs8bD8xOjg6cU88bD8xOjg6aVM8bD9iNjxsP2g2PGw/MTo4OiRGPGw/MTo4OnBoPGw/clQ8bD8xOjg6SFM8bD8xOjg6ek88bD9DazxsP3lTPGw/SXc8bD9DSTxsP0tnPGw/MTo4OlZPPGw/MTo4Ok1rPGw/a3M8bD8xOjg6UEY8bD8xOjg6a2Q8bD9UUzxsP3dJPGw/MTo4OnhnPGw/MTo4OlJkPGw/ZGg8bD8xOjg6b0k8bD8xOjg6b1Q8bD9sZzxsP3RGPGw/S0k8bD8xOjg6cGs8bD8xOjg6R188bD9rdzxsPzE6ODpRRjxsPzE6ODpqazxsP0ZPPGw/bUE8bD8xOjg6X2c8bD8xOjg6V0U8bD9sRjxsPzE6ODpNRjxsPzE6ODpoNDxsP2gzPGw/dlQ8bD9qSTxsP21TPGw/MTo4OmNBPGw/MTo4OkRFPGw/ems8bD8xOjg6TGc8bD8xOjg6QVQ8bD9SNjxsP2JrPGw/MTo4OmlUPGw/MTo4OlVTPGw/QlQ8bD8xOjg6dkU8bD8xOjg6V2M8bD9TazxsP0QzPGw/WGc8bD8xOjg6ZmQ8bD8xOjg6SUY8bD9sZDxsPzE6ODpuQTxsPzE6ODpCRTxsP1czPGw/c3k8bD8xOjg6a0k8bD8xOjg6VkY8bD9mUzxsPzE6ODpQNDxsPzE6ODp2UzxsP2p3PGw/aWs8bD9oTzxsP2lJPGw/Ymc8bD9OZDxsPzE6ODp1MzxsPzE6ODpzRTxsP0xkPGw/MTo4OlhrPGw/MTo4OnVwPGw/aGg8bD9NODxsPzE6ODpwMzxsPzE6ODpFdzxsP3BFPGw/MTo4OkJnPGw/MTo4OmJ5PGw/Wms8bD8kVDxsP3pGPGw/MTo4OkJkPGw/MTo4OiRrPGw/VEk8bD8xOjg6cE88bD8xOjg6c1M8bD9STzxsP2tBPGw/MTo4OndBPGw/MTo4OmZnPGw/cUk8bD8xOjg6ZFM8bD8xOjg6aEk8bD9OSTxsP25TPGw/WHk8bD9KXzxsPzE6ODpiVDxsPzE6ODokTzxsP0VnPGw/MTo4Om9BPGw/MTo4OnVFPGw/RVQ8bD9kZzxsPzE6ODpUVDxsPzE6ODpBeTxsP3U4PGw/MTo4OlpTPGw/MTo4OkdoPGw/TV88bD9TTzxsP2xoPGw/MTo4OlhFPGw/MTo4OlEzPGw/WjY8bD8xOjg6T2Q8bD8xOjg6VzY8bD9SRjxsP3F5PGw/MTo4Ok5rPGw/MTo4OlBFPGw/VGc8bD8xOjg6T0k8bD8xOjg6QTg8bD9QXzxsP0M0PGw/JGc8bD9VaDxsP1dTPGw/MTo4Omo2PGw/MTo4Ol9FPGw/Zkk8bD8xOjg6UHc8bD8xOjg6ZjM8bD9hODxsP1VGPGw/MTo4Okx3PGw/MTo4Om1rPGw/YUk8bD8xOjg6eXk8bD8xOjg6Tzg8bD91STxsP3U2PGw/a3k8bD8xOjg6R0k8bD8xOjg6Yzg8bD9PdzxsPzE6ODpiRTxsPzE6ODp5MzxsP2ZwPGw/ZUU8bD8xOjg6STg8bD8xOjg6Y3c8bD9LRjxsPzE6ODpWSTxsPzE6ODp6aDxsP1FPPGw/aDg8bD9oeTxsP2V3PGw/MTo4OmkzPGw/MTo4OnBJPGw/ZEE8bD8xOjg6cWQ8bD8xOjg6a2c8bD9pRTxsP1RPPGw/MTo4Olg2PGw/MTo4OlJ3PGw/YXc8bD8xOjg6RjM8bD8xOjg6SWs8bD9PRjxsP0x5PGw/bTQ8bD8xOjg6Y2Q8bD8xOjg6emc8bD9KazxsPzE6ODphUzxsPzE6ODpCMzxsP0lPPGw/aHc8bD8xOjg6bUU8bD8xOjg6JFM8bD9RSTxsPzE6ODpGQTxsPzE6ODpvZDxsP0tFPGw/Ums8bD9KNjxsP01kPGw/eEY8bD9aZzxsP3NoPGw/ZVQ8bD8xOjg6WUk8bD8xOjg6UkU8bD9PVDxsPzE6ODpKODxsPzE6ODpJQTxsP2RFPGw/cVQ8bD8xOjg6aGQ8bD8xOjg6SWQ8bD9NaDxsPzE6ODpfUzxsPzE6ODpFQTxsP1BPPGw/SGc8bD9zZzxsPzE6ODpVZzxsPzE6ODpYdzxsP3RkPGw/MTo4OkRnPGw/MTo4OkFnPGw/YlM8bD9XZDxsPzE6ODpGZzxsPzE6ODp0QTxsP3dUPGw/MTo4OkRrPGw/MTo4OnJTPGw/Wjg8bD9KSTxsP0FFPGw/TUU8bD8xOjg6cEE8bD8xOjg6RU88bD9HeTxsPzE6ODpmQTxsPzE6ODp4QTxsP2I0PGw/X2s8bD8xOjg6b088bD8xOjg6d2Q8bD9TNzxsPzE6ODokZDxsPzE6ODpYODxsP3pfPGw/RmQ8bD9QaDxsPzE6ODpkVDxsPzE6ODpEZDxsP09rPGw/MTo4OmFoPGw/MTo4Om5oPGw/YWc8bD8kdzxsPzE6ODpXVDxsPzE6ODpRUzxsP0Z3PGw/MTo4OkxUPGw/MTo4OkloPGw/dms8bD9FbjxsP3A4PGw/Z1Q8bD9NNjxsPzE6ODpnaDxsPzE6ODpKNDxsP1FfPGw/MTo4Om9wPGw/MTo4OnZPPGw/R0U8bD9jaDxsPzE6ODpxXzxsPzE6ODpFUzxsP1VUPGw/MTo4OmpTPGw/MTo4OlV3PGw/dHk8bD9zQTxsP1ZoPGw/MTo4OnNUPGw/MTo4OmlGPGw/WmQ8bD8xOjg6Rkk8bD8xOjg6eE88bD90aDxsP25nPGw/MTo4OmJkPGw/MTo4OmlPPGw/X088bD8xOjg6ZU88bD8xOjg6SVM8bD96RTxsP2ZPPGw/Y2s8bD94aDxsPzE6ODp1ZDxsPzE6ODpKUzxsP193PGw/MTo4OkZ5PGw/MTo4OnZBPGw/JEU8bD9LVDxsPzE6ODpySTxsPzE6ODp1eTxsP1R3PGw/MTo4OjE6blQ8bD9aMzxsP2VrPGw/ODokeTxsPzE6ODpHRjxsP1F3PGw/MTo4OnNrPGw/MTo4OnZnPGw/bk88bD90STxsPzE6ODpHTzxsPzE6ODpSeTxsPzE6ODpEODxsP0VkPGw/eHc8bD9PaDxsP3JBPGw/ODokaDxsP3RUPGw/MTo4OnZGPGw/MTo4OlF5PGw/ekk8bD9yeTxsPzE6ODp5aDxsPzE6ODpIRTxsP0poPGw/MTo4OmhGPGw/MTo4OnJwPGw/ejQ8bD9TNjxsP3B5PGw/MTo4OnJnPGw/MTo4OiQ4PGw/eU88bD8xOjg6Qms8bD8xOjg6Z2s8bD9VODxsP0VGPGw/MTo4Ond5PGw/MTo4Om9nPGw/VGs8bD8xOjg6d0U8bD8xOjg6R3c8bD8kXzxsP2V5PGw/cFM8bD9vRTxsPzE6ODoxOjg6ZHc8bD84OlE0PGw/SVQ8bD8xOjg6eWc8bD8xOjg6ZUk8bD90MzxsP01hPGw/RG88bD8xOjI6Qkk8bD8xOjg6b3c8bD9NVDxsPzE6ODpZUzxsPzE6ODp5STxsP3RTPGw/Wmg8bD8xOjg6Q1Q8bD8xOjg6R1Q8bD9LdzxsPzE6ODpTSTxsPzE6ODpVSTxsP3RrPGw/UW48bD9SNDxsP3EzPGw/aWQ8bD8xOjg6X0Y8bD8xOjg6ejM8bD9MNjxsPzE6ODpmaDxsPzE6ODpQVDxsP2lwPGw/dXc8bD8xOjg6ZVM8bD8xOjg6dE88bD9lMzxsPzE6ODpvaDxsPzE6ODpkazxsP3pTPGw/UWg8bD91ZzxsPzE6ODppeTxsPzE6ODpXazxsP0tkPGw/MTo4OlRFPGw/MTo4OmRkPGw/bXk8bD9jRjxsPzE6ODpfQTxsPzE6ODpOeTxsPzE6ODpYZDxsP0gzPGw/bzM8bD9KdzxsPzE6ODphdjxsPzg6UlQ8bD8xOjg6Z0Y8bD9rNjxsP05GPGw/MTo4OldoPGw/MTo4OkdrPGw/RGg8bD8xOjg6Wkk8bD8xOjg6VmQ8bD9jUzxsP2xUPGw/Y0k8bD8xOjg6MTpEeTxsPzg6Snk8bD8xOjg6RkY8bD9zZDxsPzE6ODpYVDxsP09PPGw/MTo4OmFPPGw/MTo4OndoPGw/Rjg8bD9XXzxsP3VoPGw/a088bD9lZDxsP0VJPGw/QXc8bD8xOjg6eUE8bD8xOjg6Qmg8bD9meTxsPzE6ODphazxsPzE6ODpDRjxsP1RBPGw/bHA8bD8xOjg6MTo4OnlUPGw/SGQ8bD9rUzxsP3p5PGw/MTo4OndTPGw/MTo4OnY2PGw/SGs8bD8xOjg6a0U8bD8xOjg6U3c8bD9wdzxsPzE6ODpfaDxsP1dPPGw/MTo4Oms4PGw/MTo4OmtGPGw/RE88bD9YRjxsP2d5PGw/U2Q8bD8xOjg6ZUE8bD8xOjg6Wl88bD9KRTxsPzE6ODpheTxsPzE6ODpLeTxsP184PGw/VXk8bD8xOjg6bjM8bD8xOjg6ckU8bD9veTxsPzE6ODpjZzxsPzE6ODpZeTxsP1NBPGw/eFM8bD9yRjxsPzE6ODpYaDxsPzE6ODptSTxsP2xrPGw/MTo4OnVPPGw/MTo4OlBTPGwmJmFBPGw/MTo4OnlrPGw/Umg8bD90ZzxsP25rPGw/ODpaeTxsP2JJPGw/MTo4OkNoPGw/MTo4OnhFPGw/b2s8bD9WXzxsPzE6ODoxOjg6T2c8bD9VTzxsJiZvUzxsPzE6ODpidzxsP3JPPGw/TGg8bD8xOjg6MTpkRjxsPzg6MTpFaDxsP2dFPGw/VTM8bD84OnR3PGw/MTo4OmRJPGw/UWQ8bD93TzxsPzE6ODpSXzxsPzE6ODpTaDxsPzE6ODpCRjxsP2dnPGw/QWQ8bD8xOjg6WFM8bD8xOjg6S2s8bD9ZRTxsPzg6aWg8bD8xOjg6VV88bD95RTxsPzE6ODpIdDxsPzE6ODpHUzxsP2pFPGw/ZE88bD9xNDxsP0V5PGw/RTg8bD9SSTxsPzE6ODpuRjxsPzE6ODpIRjxsPzE6ODp3dzxsP0UzPGw/ZGU8bD8xOjg6MTo4OklnPGw/R2Q8bD9YXzxsP0hfPGw/MTo4OjE6ODpIdzxsP1QzPGw/dmQ8bD8xOjg6ZkY8bD8xOjg6d2c8bD8xOjg6ejg8bD9qODxsP0VvPGw/UEk8bD84OlF4PGw/MToyOkY2PGw/Qnk8bD8xOjg6SUU8bD8xOjg6Szg8bD96NjxsP0NnPGw/MTo4OmNUPGw/MTo4Om84PGw/dHQ8bD8xOjg6QWs8bD8xOjg6TlM8bD90RTxsP2o0PGw/Tmc8bD8xOjg6JEk8bD8xOjg6UDY8bD9URjxsPzE6ODpwNDxsPzE6ODpfSTxsP2ZFPGw/Z0k8bD8xOjg6TjM8bD8xOjg6RzQ8bD9CODxsPzE6ODpTZzxsPzE6ODpOODxsP1FFPGw/YUU8bD9ZazxsP3BUPGw/S188bD8xOjg6d0Y8bD8xOjg6VUU8bD8xOjg6cmQ8bD92STxsPzg6MTo4Ok1PPGw/bXc8bD9ZVDxsP3M4PGw/MTo4OkFBPGw/MTo4Oll3PGw/WV88bD8xOjg6MTo4OkdnPGw/Sk88bD8kMzxsP3NwPGw/UDg8bD8xOjg6UTg8bD8xOjg6Z3I8bD90ODxsPzE6ODoxOmc0PGw/S1M8bD84Om02PGw/MTo4Om1GPGw/Q3k8bD8xOjg6UjM8bD8xOjg6UGs8bD9ISTxsP1FUPGw/eDM8bD8xOjg6bU88bD8xOjg6UHk8bD9PMzxsPzE6ODplcDxsPzE6ODptbzxsP3hjPGw/b3g8bD8xOjI6Zm88bD8xOjI6JHU8bD9IdTxsPzE6MzpDbzxsPzE6MjpWcihJTHIsbCsxfDApLTF8MDtpZigzNjxjMD4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2goYzApe2Nhc2UgMDp2YXIgdDA9OTg7YnJlYWs7Y2FzZSAxOnZhciB0MD05OTticmVhaztjYXNlIDI6aWYoRzAobiwxKSxqYyhqKG4pKT09PTApe2Zvcig7OylpZihHMChuLDEpLGpjKGoobikpIT09MCl7dmFyIHQwPXEobik7YnJlYWt9fWVsc2UgdmFyIHQwPXEobik7YnJlYWs7Y2FzZSAzOnZhciB0MD0wO2JyZWFrO2Nhc2UgNDpHMChuLDApO3ZhciBvMD14aShqKG4pKSE9PTA/MTowLHQwPW8wJiZxKG4pO2JyZWFrO2Nhc2UgNTpHMChuLDg4KTt2YXIgdDA9VWkoaihuKSk9PT0wPyhHMChuLDU4KSxVaShqKG4pKT09PTA/NTQ6cShuKSk6cShuKTticmVhaztjYXNlIDY6dmFyIHQwPTc7YnJlYWs7Y2FzZSA3OkcwKG4sOTUpO3ZhciB3MD1qKG4pLF8wPTMyPHcwPzMzPHcwPy0xOjA6LTEsdDA9XzA9PT0wPzY6cShuKTticmVhaztjYXNlIDg6dmFyIHQwPTk3O2JyZWFrO2Nhc2UgOTpHMChuLDg0KTt2YXIgdDA9VWkoaihuKSk9PT0wPzcxOnEobik7YnJlYWs7Y2FzZSAxMDpHMChuLDg2KTt2YXIgRTA9aihuKSxVMD0zNzxFMD82MTxFMD8tMTpWcihwUnIsRTAtMzh8MCktMXwwOi0xLHQwPVUwPT09MD8oRzAobiw1MSksVWkoaihuKSk9PT0wPzc2OnEobikpOlUwPT09MT83MjpxKG4pO2JyZWFrO2Nhc2UgMTE6dmFyIHQwPTM4O2JyZWFrO2Nhc2UgMTI6dmFyIHQwPTM5O2JyZWFrO2Nhc2UgMTM6RzAobiw4Mik7dmFyIGI9SXIwKGoobikpO2lmKDI8Yj4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2goYil7Y2FzZSAwOkcwKG4sODMpO3ZhciB0MD1VaShqKG4pKT09PTA/NzA6cShuKTticmVhaztjYXNlIDE6dmFyIHQwPTQ7YnJlYWs7ZGVmYXVsdDp2YXIgdDA9Njl9YnJlYWs7Y2FzZSAxNDpHMChuLDgwKTt2YXIgUjA9aihuKSxYPTQyPFIwPzYxPFIwPy0xOlZyKG1ScixSMCt4eXwwKS0xfDA6LTEsdDA9WD09PTA/NTk6WD09PTE/Njc6cShuKTticmVhaztjYXNlIDE1OnZhciB0MD00NTticmVhaztjYXNlIDE2OkcwKG4sODEpO3ZhciBzMD1qKG4pLGhyPTQ0PHMwPzYxPHMwPy0xOlZyKGVMcixzMCttdnwwKS0xfDA6LTEsdDA9aHI9PT0wPzYwOmhyPT09MT82ODpxKG4pO2JyZWFrO2Nhc2UgMTc6RzAobiw0Myk7dmFyIEFyPUQxKGoobikpO2lmKEFyPT09MCl2YXIgdDA9Y0woaihuKSk9PT0wPzQyOnEobik7ZWxzZSBpZihBcj09PTEpZm9yKDs7KXtHMChuLDM0KTt2YXIgb3I9UHMoaihuKSk7aWYoNDxvcj4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2gob3Ipe2Nhc2UgMDp2YXIgdDA9ZShuKTticmVhaztjYXNlIDE6Y29udGludWU7Y2FzZSAyOnZhciB0MD15KG4pO2JyZWFrO2Nhc2UgMzpyOmZvcig7Oyl7aWYocG4oaihuKSk9PT0wKWZvcig7Oyl7RzAobiwzNCk7dmFyIFcwPVBzKGoobikpO2lmKDQ8VzA+Pj4wKXZhciBMcj1xKG4pO2Vsc2Ugc3dpdGNoKFcwKXtjYXNlIDA6dmFyIExyPWUobik7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjp2YXIgTHI9eShuKTticmVhaztjYXNlIDM6Y29udGludWUgcjtkZWZhdWx0OnZhciBMcj1UKG4pfWJyZWFrfWVsc2UgdmFyIExyPXEobik7dmFyIHQwPUxyO2JyZWFrfWJyZWFrO2RlZmF1bHQ6dmFyIHQwPVQobil9YnJlYWt9ZWxzZSB2YXIgdDA9cShuKTticmVhaztjYXNlIDE4OkcwKG4sOTMpO3ZhciBUcj1JcjAoaihuKSk7aWYoMjxUcj4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2goVHIpe2Nhc2UgMDpHMChuLDIpO3ZhciBIcj1pOShqKG4pKTtpZigyPEhyPj4+MCl2YXIgdDA9cShuKTtlbHNlIHN3aXRjaChIcil7Y2FzZSAwOmZvcig7Oyl7dmFyIE9yPWk5KGoobikpO2lmKDI8T3I+Pj4wKXZhciB0MD1xKG4pO2Vsc2Ugc3dpdGNoKE9yKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnZhciB0MD1FKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIHQwPWQobil9YnJlYWt9YnJlYWs7Y2FzZSAxOnZhciB0MD1FKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIHQwPWQobil9YnJlYWs7Y2FzZSAxOnZhciB0MD01O2JyZWFrO2RlZmF1bHQ6dmFyIHQwPTkyfWJyZWFrO2Nhc2UgMTk6RzAobiwzNCk7dmFyIGZyPWxMKGoobikpO2lmKDg8ZnI+Pj4wKXZhciB0MD1xKG4pO2Vsc2Ugc3dpdGNoKGZyKXtjYXNlIDA6dmFyIHQwPWUobik7YnJlYWs7Y2FzZSAxOnZhciB0MD13KG4pO2JyZWFrO2Nhc2UgMjpmb3IoOzspe0cwKG4sMjApO3ZhciBScj1NcjAoaihuKSk7aWYoNDxScj4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2goUnIpe2Nhc2UgMDp2YXIgdDA9RyhuKTticmVhaztjYXNlIDE6dmFyIHQwPUEobik7YnJlYWs7Y2FzZSAyOmNvbnRpbnVlO2Nhc2UgMzpmb3IoOzspe0cwKG4sMTgpO3ZhciBXcj11OShqKG4pKTtpZigzPFdyPj4+MCl2YXIgdDA9cShuKTtlbHNlIHN3aXRjaChXcil7Y2FzZSAwOnZhciB0MD1TKG4pO2JyZWFrO2Nhc2UgMTp2YXIgdDA9QShuKTticmVhaztjYXNlIDI6Y29udGludWU7ZGVmYXVsdDpHMChuLDE3KTt2YXIgSnI9QnQoaihuKSk7aWYoSnI9PT0wKXtmb3IoOzspaWYoRzAobiwxNyksZG4oaihuKSkhPT0wKXt2YXIgdDA9cShuKTticmVha319ZWxzZSB2YXIgdDA9SnI9PT0xP1Mobik6cShuKX1icmVha31icmVhaztkZWZhdWx0OkcwKG4sMTkpO3ZhciBhcj1CdChqKG4pKTtpZihhcj09PTApe2Zvcig7OylpZihHMChuLDE5KSxkbihqKG4pKSE9PTApe3ZhciB0MD1xKG4pO2JyZWFrfX1lbHNlIHZhciB0MD1hcj09PTE/RyhuKTpxKG4pfWJyZWFrfWJyZWFrO2Nhc2UgMzpmb3IoOzspe0cwKG4sMTgpO3ZhciBfcj11OShqKG4pKTtpZigzPF9yPj4+MCl2YXIgdDA9cShuKTtlbHNlIHN3aXRjaChfcil7Y2FzZSAwOnZhciB0MD1NKG4pO2JyZWFrO2Nhc2UgMTp2YXIgdDA9QShuKTticmVhaztjYXNlIDI6Y29udGludWU7ZGVmYXVsdDpHMChuLDE3KTt2YXIgSXI9QnQoaihuKSk7aWYoSXI9PT0wKXtmb3IoOzspaWYoRzAobiwxNyksZG4oaihuKSkhPT0wKXt2YXIgdDA9cShuKTticmVha319ZWxzZSB2YXIgdDA9SXI9PT0xP00obik6cShuKX1icmVha31icmVhaztjYXNlIDQ6RzAobiwzMyk7dmFyIGZlPVByMChqKG4pKTtpZihmZT09PTApdmFyIHQwPWUobik7ZWxzZSBpZihmZT09PTEpZm9yKDs7KXtHMChuLDEyKTt2YXIgdjA9azkoaihuKSk7aWYoMzx2MD4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2godjApe2Nhc2UgMDp2YXIgdDA9SyhuKTticmVhaztjYXNlIDE6Y29udGludWU7Y2FzZSAyOnI6Zm9yKDs7KXtpZihHYyhqKG4pKT09PTApZm9yKDs7KXtHMChuLDEyKTt2YXIgUD1rOShqKG4pKTtpZigzPFA+Pj4wKXZhciBRPXEobik7ZWxzZSBzd2l0Y2goUCl7Y2FzZSAwOnZhciBRPVYobik7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpjb250aW51ZSByO2RlZmF1bHQ6RzAobiwxMCk7dmFyIEw9QnQoaihuKSk7aWYoTD09PTApe2Zvcig7OylpZihHMChuLDkpLGRuKGoobikpIT09MCl7dmFyIFE9cShuKTticmVha319ZWxzZSB2YXIgUT1MPT09MT9WKG4pOnEobil9YnJlYWt9ZWxzZSB2YXIgUT1xKG4pO3ZhciB0MD1RO2JyZWFrfWJyZWFrO2RlZmF1bHQ6RzAobiwxMCk7dmFyIGkwPUJ0KGoobikpO2lmKGkwPT09MCl7Zm9yKDs7KWlmKEcwKG4sOSksZG4oaihuKSkhPT0wKXt2YXIgdDA9cShuKTticmVha319ZWxzZSB2YXIgdDA9aTA9PT0xP0sobik6cShuKX1icmVha31lbHNlIHZhciB0MD1xKG4pO2JyZWFrO2Nhc2UgNTp2YXIgdDA9eShuKTticmVhaztjYXNlIDY6RzAobiwzMyk7dmFyIGwwPURyMChqKG4pKTtpZihsMD09PTApdmFyIHQwPWUobik7ZWxzZSBpZihsMD09PTEpZm9yKDs7KXtHMChuLDE2KTt2YXIgUzA9aDkoaihuKSk7aWYoMzxTMD4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2goUzApe2Nhc2UgMDp2YXIgdDA9ZjAobik7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpyOmZvcig7Oyl7aWYoenUoaihuKSk9PT0wKWZvcig7Oyl7RzAobiwxNik7dmFyIFQwPWg5KGoobikpO2lmKDM8VDA+Pj4wKXZhciBMMD1xKG4pO2Vsc2Ugc3dpdGNoKFQwKXtjYXNlIDA6dmFyIEwwPW0wKG4pO2JyZWFrO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6Y29udGludWUgcjtkZWZhdWx0OkcwKG4sMTQpO3ZhciBycj1CdChqKG4pKTtpZihycj09PTApe2Zvcig7OylpZihHMChuLDEzKSxkbihqKG4pKSE9PTApe3ZhciBMMD1xKG4pO2JyZWFrfX1lbHNlIHZhciBMMD1ycj09PTE/bTAobik6cShuKX1icmVha31lbHNlIHZhciBMMD1xKG4pO3ZhciB0MD1MMDticmVha31icmVhaztkZWZhdWx0OkcwKG4sMTQpO3ZhciBCPUJ0KGoobikpO2lmKEI9PT0wKXtmb3IoOzspaWYoRzAobiwxMyksZG4oaihuKSkhPT0wKXt2YXIgdDA9cShuKTticmVha319ZWxzZSB2YXIgdDA9Qj09PTE/ZjAobik6cShuKX1icmVha31lbHNlIHZhciB0MD1xKG4pO2JyZWFrO2Nhc2UgNzpHMChuLDMzKTt2YXIgWj1FcjAoaihuKSk7aWYoWj09PTApdmFyIHQwPWUobik7ZWxzZSBpZihaPT09MSlmb3IoOzspe0cwKG4sMjQpO3ZhciBwMD13OShqKG4pKTtpZigzPHAwPj4+MCl2YXIgdDA9cShuKTtlbHNlIHN3aXRjaChwMCl7Y2FzZSAwOnZhciB0MD1rMChuKTticmVhaztjYXNlIDE6Y29udGludWU7Y2FzZSAyOnI6Zm9yKDs7KXtpZihObihqKG4pKT09PTApZm9yKDs7KXtHMChuLDI0KTt2YXIgYjA9dzkoaihuKSk7aWYoMzxiMD4+PjApdmFyIE0wPXEobik7ZWxzZSBzd2l0Y2goYjApe2Nhc2UgMDp2YXIgTTA9ZzAobik7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpjb250aW51ZSByO2RlZmF1bHQ6RzAobiwyMik7dmFyIE8wPUJ0KGoobikpO2lmKE8wPT09MCl7Zm9yKDs7KWlmKEcwKG4sMjEpLGRuKGoobikpIT09MCl7dmFyIE0wPXEobik7YnJlYWt9fWVsc2UgdmFyIE0wPU8wPT09MT9nMChuKTpxKG4pfWJyZWFrfWVsc2UgdmFyIE0wPXEobik7dmFyIHQwPU0wO2JyZWFrfWJyZWFrO2RlZmF1bHQ6RzAobiwyMik7dmFyIGVyPUJ0KGoobikpO2lmKGVyPT09MCl7Zm9yKDs7KWlmKEcwKG4sMjEpLGRuKGoobikpIT09MCl7dmFyIHQwPXEobik7YnJlYWt9fWVsc2UgdmFyIHQwPWVyPT09MT9rMChuKTpxKG4pfWJyZWFrfWVsc2UgdmFyIHQwPXEobik7YnJlYWs7ZGVmYXVsdDp2YXIgdDA9ZTAobil9YnJlYWs7Y2FzZSAyMDpHMChuLDM0KTt2YXIgeXI9bzkoaihuKSk7aWYoNTx5cj4+PjApdmFyIHQwPXEobik7ZWxzZSBzd2l0Y2goeXIpe2Nhc2UgMDp2YXIgdDA9ZShuKTticmVhaztjYXNlIDE6dmFyIHQwPXcobik7YnJlYWs7Y2FzZSAyOmZvcig7Oyl7RzAobiwzNCk7dmFyIHZyPW85KGoobikpO2lmKDU8dnI+Pj4wKXZhciB0MD1xKG4pO2Vsc2Ugc3dpdGNoKHZyKXtjYXNlIDA6dmFyIHQwPWUobik7YnJlYWs7Y2FzZSAxOnZhciB0MD13KG4pO2JyZWFrO2Nhc2UgMjpjb250aW51ZTtjYXNlIDM6dmFyIHQwPXkobik7YnJlYWs7Y2FzZSA0OnZhciB0MD14MChuKTticmVhaztkZWZhdWx0OnZhciB0MD1lMChuKX1icmVha31icmVhaztjYXNlIDM6dmFyIHQwPXkobik7YnJlYWs7Y2FzZSA0OnZhciB0MD14MChuKTticmVhaztkZWZhdWx0OnZhciB0MD1lMChuKX1icmVhaztjYXNlIDIxOnZhciB0MD00NjticmVhaztjYXNlIDIyOnZhciB0MD00NDticmVhaztjYXNlIDIzOkcwKG4sNzgpO3ZhciAkMD1qKG4pLEVyPTU5PCQwPzYxPCQwPy0xOlZyKHJOLCQwLTYwfDApLTF8MDotMSx0MD1Fcj09PTA/KEcwKG4sNjIpLFVpKGoobikpPT09MD82MTpxKG4pKTpFcj09PTE/NTU6cShuKTticmVhaztjYXNlIDI0OkcwKG4sOTApO3ZhciBNcj1zTChqKG4pKSx0MD1Ncj09PTA/KEcwKG4sNTcpLFVpKGoobikpPT09MD81MzpxKG4pKTpNcj09PTE/OTE6cShuKTticmVhaztjYXNlIDI1OkcwKG4sNzkpO3ZhciBCcj1zTChqKG4pKTtpZihCcj09PTApdmFyIHQwPTU2O2Vsc2UgaWYoQnI9PT0xKXtHMChuLDY2KTt2YXIgcXI9c0woaihuKSksdDA9cXI9PT0wPzYzOnFyPT09MT8oRzAobiw2NSksVWkoaihuKSk9PT0wPzY0OnEobikpOnEobil9ZWxzZSB2YXIgdDA9cShuKTticmVhaztjYXNlIDI2OkcwKG4sNTApO3ZhciBqcj1qKG4pLCRyPTQ1PGpyPzYzPGpyPy0xOlZyKHpEcixqcit2MXwwKS0xfDA6LTEsdDA9JHI9PT0wPyhHMChuLDQ4KSxwbihqKG4pKT09PTA/NDc6cShuKSk6JHI9PT0xPyhHMChuLDQ5KSxVaShqKG4pKT09PTA/NzU6cShuKSk6cShuKTticmVhaztjYXNlIDI3OkcwKG4sOTQpO3ZhciBuZT1qKG4pLFFyPTYzPG5lPzY0PG5lPy0xOjA6LTE7aWYoUXI9PT0wKXt2YXIgYmU9aihuKSxhZT05NjxiZT9qNzxiZT8tMTpWcihWTHIsYmUrWTN8MCktMXwwOi0xO2lmKGFlPT09MClpZihncjAoaihuKSk9PT0wKXt2YXIgcGU9aihuKSxvZT11YzxwZT90bDxwZT8tMTowOi0xO2lmKG9lPT09MCYmdkwoaihuKSk9PT0wJiZCbChqKG4pKT09PTApdmFyIGNlPWoobiksZ2U9NzI8Y2U/NzM8Y2U/LTE6MDotMSx0MD1nZT09PTAmJnM5KGoobikpPT09MCYmVWwoaihuKSk9PT0wJiZ5OShqKG4pKT09PTAmJkxyMChqKG4pKT09PTAmJnM5KGoobikpPT09MCYmdjkoaihuKSk9PT0wJiZ5OShqKG4pKT09PTA/MzU6cShuKTtlbHNlIHZhciB0MD1xKG4pfWVsc2UgdmFyIHQwPXEobik7ZWxzZSB2YXIgdDA9YWU9PT0xJiZzOShqKG4pKT09PTAmJlVsKGoobikpPT09MCYmeTkoaihuKSk9PT0wJiZMcjAoaihuKSk9PT0wJiZzOShqKG4pKT09PTAmJnY5KGoobikpPT09MCYmeTkoaihuKSk9PT0wPzM1OnEobil9ZWxzZSB2YXIgdDA9cShuKTticmVhaztjYXNlIDI4OnZhciB0MD00MDticmVhaztjYXNlIDI5OmlmKEcwKG4sOTYpLExzKGoobikpPT09MCl7dmFyIHEwPUwxKGoobikpO2lmKHEwPT09MCl2YXIgdDA9Tm4oaihuKSk9PT0wJiZObihqKG4pKT09PTAmJk5uKGoobikpPT09MD85NzpxKG4pO2Vsc2UgaWYocTA9PT0xJiZObihqKG4pKT09PTApZm9yKDs7KXt2YXIgRnI9QTEoaihuKSk7aWYoRnIhPT0wKXt2YXIgdDA9RnI9PT0xPzk3OnEobik7YnJlYWt9fWVsc2UgdmFyIHQwPXEobil9ZWxzZSB2YXIgdDA9cShuKTticmVhaztjYXNlIDMwOnZhciB0MD00MTticmVhaztjYXNlIDMxOkcwKG4sODcpO3ZhciB0MD1VaShqKG4pKT09PTA/NzQ6cShuKTticmVhaztjYXNlIDMyOnZhciB0MD04O2JyZWFrO2Nhc2UgMzM6dmFyIHQwPTM2O2JyZWFrO2Nhc2UgMzQ6RzAobiw4NSk7dmFyIF89aihuKSxrPTYwPF8/WDI8Xz8tMTpWcihfUnIsXytTU3wwKS0xfDA6LTEsdDA9az09PTA/NzM6az09PTE/KEcwKG4sNTIpLFVpKGoobikpPT09MD83NzpxKG4pKTpxKG4pO2JyZWFrO2Nhc2UgMzU6dmFyIHQwPTM3O2JyZWFrO2RlZmF1bHQ6dmFyIHQwPTg5fWlmKDk5PHQwPj4+MClyZXR1cm4ga2UodlByKTt2YXIgST10MDtpZig1MDw9SSlzd2l0Y2goSSl7Y2FzZSA1MDpyZXR1cm5bMCx0LDg1XTtjYXNlIDUxOnJldHVyblswLHQsODhdO2Nhc2UgNTI6cmV0dXJuWzAsdCw4N107Y2FzZSA1MzpyZXR1cm5bMCx0LDk0XTtjYXNlIDU0OnJldHVyblswLHQsOTVdO2Nhc2UgNTU6cmV0dXJuWzAsdCw5Nl07Y2FzZSA1NjpyZXR1cm5bMCx0LDk3XTtjYXNlIDU3OnJldHVyblswLHQsOTJdO2Nhc2UgNTg6cmV0dXJuWzAsdCw5M107Y2FzZSA1OTpyZXR1cm5bMCx0LGNmXTtjYXNlIDYwOnJldHVyblswLHQsVDddO2Nhc2UgNjE6cmV0dXJuWzAsdCw2OV07Y2FzZSA2MjpyZXR1cm5bMCx0LHRpXTtjYXNlIDYzOnJldHVyblswLHQsNjhdO2Nhc2UgNjQ6cmV0dXJuWzAsdCw2N107Y2FzZSA2NTpyZXR1cm5bMCx0LFJpXTtjYXNlIDY2OnJldHVyblswLHQsUjddO2Nhc2UgNjc6cmV0dXJuWzAsdCw3OF07Y2FzZSA2ODpyZXR1cm5bMCx0LDc3XTtjYXNlIDY5OnJldHVyblswLHQsNzVdO2Nhc2UgNzA6cmV0dXJuWzAsdCw3Nl07Y2FzZSA3MTpyZXR1cm5bMCx0LDczXTtjYXNlIDcyOnJldHVyblswLHQsNzJdO2Nhc2UgNzM6cmV0dXJuWzAsdCw3MV07Y2FzZSA3NDpyZXR1cm5bMCx0LDcwXTtjYXNlIDc1OnJldHVyblswLHQsNzldO2Nhc2UgNzY6cmV0dXJuWzAsdCw4MF07Y2FzZSA3NzpyZXR1cm5bMCx0LDgxXTtjYXNlIDc4OnJldHVyblswLHQsOThdO2Nhc2UgNzk6cmV0dXJuWzAsdCw5OV07Y2FzZSA4MDpyZXR1cm5bMCx0LHM3XTtjYXNlIDgxOnJldHVyblswLHQsTDddO2Nhc2UgODI6cmV0dXJuWzAsdCxZdF07Y2FzZSA4MzpyZXR1cm5bMCx0LFpjXTtjYXNlIDg0OnJldHVyblswLHQsaXNdO2Nhc2UgODU6cmV0dXJuWzAsdCw4OV07Y2FzZSA4NjpyZXR1cm5bMCx0LDkxXTtjYXNlIDg3OnJldHVyblswLHQsOTBdO2Nhc2UgODg6cmV0dXJuWzAsdCxGdl07Y2FzZSA4OTpyZXR1cm5bMCx0LFh0XTtjYXNlIDkwOnJldHVyblswLHQsODJdO2Nhc2UgOTE6cmV0dXJuWzAsdCwxMV07Y2FzZSA5MjpyZXR1cm5bMCx0LDc0XTtjYXNlIDkzOnJldHVyblswLHQsajddO2Nhc2UgOTQ6cmV0dXJuWzAsdCwxM107Y2FzZSA5NTpyZXR1cm5bMCx0LDE0XTtjYXNlIDk2OnJldHVyblsyLEVpKHQsbnQodCxuKSldO2Nhc2UgOTc6dmFyIFU9bls2XTtIcjAobik7dmFyIFk9SGwodCxVLG5bM10pO3RMKG4sVSk7dmFyIHkwPUxsKG4pLFAwPVdyMCh0LHkwKSxJMD1QMFsyXSxEPUVlKEkwLHlQcik7aWYoMDw9RCl7aWYoISgwPEQpKXJldHVyblswLHQsMThdO3ZhciB1MD1FZShJMCxYUHIpO2lmKDA8PXUwKXtpZighKDA8dTApKXJldHVyblswLHQsNTFdO3ZhciBYMD1FZShJMCx0RHIpO2lmKDA8PVgwKXtpZighKDA8WDApKXJldHVyblswLHQsNDZdO2lmKCFuMChJMCxjRHIpKXJldHVyblswLHQsMjRdO2lmKCFuMChJMCxzRHIpKXJldHVyblswLHQsNDddO2lmKCFuMChJMCx2RHIpKXJldHVyblswLHQsMjVdO2lmKCFuMChJMCxsRHIpKXJldHVyblswLHQsMjZdO2lmKCFuMChJMCxiRHIpKXJldHVyblswLHQsNThdfWVsc2V7aWYoIW4wKEkwLHVEcikpcmV0dXJuWzAsdCwyMF07aWYoIW4wKEkwLGlEcikpcmV0dXJuWzAsdCwyMV07aWYoIW4wKEkwLGZEcikpcmV0dXJuWzAsdCwyMl07aWYoIW4wKEkwLHhEcikpcmV0dXJuWzAsdCwzMV07aWYoIW4wKEkwLG9EcikpcmV0dXJuWzAsdCwyM107aWYoIW4wKEkwLGFEcikpcmV0dXJuWzAsdCw2MV19fWVsc2V7dmFyIEowPUVlKEkwLFlQcik7aWYoMDw9SjApe2lmKCEoMDxKMCkpcmV0dXJuWzAsdCw1NF07aWYoIW4wKEkwLFpQcikpcmV0dXJuWzAsdCw1NV07aWYoIW4wKEkwLFFQcikpcmV0dXJuWzAsdCw1Nl07aWYoIW4wKEkwLHJEcikpcmV0dXJuWzAsdCw1N107aWYoIW4wKEkwLGVEcikpcmV0dXJuWzAsdCwxOV07aWYoIW4wKEkwLG5EcikpcmV0dXJuWzAsdCw0Ml19ZWxzZXtpZighbjAoSTAsVlByKSlyZXR1cm5bMCx0LDUzXTtpZighbjAoSTAselByKSlyZXR1cm5bMCx0LDI4XTtpZighbjAoSTAsS1ByKSlyZXR1cm5bMCx0LDQ0XTtpZighbjAoSTAsV1ByKSlyZXR1cm5bMCx0LDI5XTtpZighbjAoSTAsSlByKSlyZXR1cm5bMCx0LDYzXTtpZighbjAoSTAsJFByKSlyZXR1cm5bMCx0LDYyXX19fWVsc2V7dmFyIGlyPUVlKEkwLGhQcik7aWYoMDw9aXIpe2lmKCEoMDxpcikpcmV0dXJuWzAsdCwzN107dmFyIFEwPUVlKEkwLENQcik7aWYoMDw9UTApe2lmKCEoMDxRMCkpcmV0dXJuWzAsdCwzOV07aWYoIW4wKEkwLE1QcikpcmV0dXJuWzAsdCwxNV07aWYoIW4wKEkwLEJQcikpcmV0dXJuWzAsdCwxNl07aWYoIW4wKEkwLHFQcikpcmV0dXJuWzAsdCw1Ml07aWYoIW4wKEkwLFVQcikpcmV0dXJuWzAsdCw1MF07aWYoIW4wKEkwLEhQcikpcmV0dXJuWzAsdCwxN119ZWxzZXtpZighbjAoSTAsUFByKSlyZXR1cm5bMCx0LDQzXTtpZighbjAoSTAsRFByKSlyZXR1cm5bMCx0LDQ4XTtpZighbjAoSTAsTFByKSlyZXR1cm5bMCx0LDQ5XTtpZighbjAoSTAsUlByKSlyZXR1cm5bMCx0LDQxXTtpZighbjAoSTAsalByKSlyZXR1cm5bMCx0LDMwXTtpZighbjAoSTAsR1ByKSlyZXR1cm5bMCx0LDM4XX19ZWxzZXt2YXIgRjA9RWUoSTAsZFByKTtpZigwPD1GMCl7aWYoISgwPEYwKSlyZXR1cm5bMCx0LDI3XTtpZighbjAoSTAsVFByKSlyZXR1cm5bMCx0LDM1XTtpZighbjAoSTAsT1ByKSlyZXR1cm5bMCx0LDU5XTtpZighbjAoSTAsSVByKSlyZXR1cm5bMCx0LDYwXTtpZighbjAoSTAsQVByKSlyZXR1cm5bMCx0LDM2XTtpZighbjAoSTAsTlByKSlyZXR1cm5bMCx0LDQ1XX1lbHNle2lmKCFuMChJMCxrUHIpKXJldHVyblswLHQsNjRdO2lmKCFuMChJMCx3UHIpKXJldHVyblswLHQsNjVdO2lmKCFuMChJMCxFUHIpKXJldHVyblswLHQsMzJdO2lmKCFuMChJMCxTUHIpKXJldHVyblswLHQsMzNdO2lmKCFuMChJMCxnUHIpKXJldHVyblswLHQsMzRdO2lmKCFuMChJMCxGUHIpKXJldHVyblswLHQsNDBdfX19dmFyIFNyPVs0LFksSTAsdUwoeTApXTtyZXR1cm5bMCxQMFsxXSxTcl07Y2FzZSA5ODp2YXIgbXI9dFs0XT9HdSh0LG50KHQsbiksNik6dDtyZXR1cm5bMCxtcixQbl07ZGVmYXVsdDp2YXIgQ3I9RWkodCxudCh0LG4pKTtyZXR1cm5bMCxDcixbNixTZShuKV1dfXN3aXRjaChJKXtjYXNlIDA6cmV0dXJuWzIsZDcodCxuKV07Y2FzZSAxOnJldHVyblsyLHRdO2Nhc2UgMjp2YXIgc3I9anUodCxuKSxQcj0kbih6biksSzA9UjEodCxQcixuKSxVcj1LMFsxXTtyZXR1cm5bMSxVcixTaShVcixzcixLMFsyXSxQciwxKV07Y2FzZSAzOnZhciBoMD1TZShuKTtpZih0WzVdKXt2YXIgS3I9dFs0XT9ZcjAodCxudCh0LG4pLGgwKTp0LHJlPSRtKDEsS3IpLHhlPUptKG4pO3JldHVybiBxbihqbChuLHhlLTF8MCwxKSxsUHIpJiZuMChqbChuLHhlLTJ8MCwxKSxiUHIpP1swLHJlLDg2XTpbMixyZV19dmFyIFJlPWp1KHQsbiksdmU9JG4oem4pO2huKHZlLG03KGgwLDIsdW4oaDApLTJ8MCkpO3ZhciBJZT1SMSh0LHZlLG4pLEdlPUllWzFdO3JldHVyblsxLEdlLFNpKEdlLFJlLEllWzJdLHZlLDEpXTtjYXNlIDQ6aWYodFs0XSlyZXR1cm5bMiwkbSgwLHQpXTskdihuKSxnbihuKTt2YXIgTWU9VHIwKGoobikpIT09MD8xOjAsYW49TWUmJnEobik7cmV0dXJuIGFuPT09MD9bMCx0LFl0XTprZShwUHIpO2Nhc2UgNTp2YXIgV2U9anUodCxuKSxBZT0kbih6biksY249ZTIodCxBZSxuKSxybj1jblsxXTtyZXR1cm5bMSxybixTaShybixXZSxjblsyXSxBZSwwKV07Y2FzZSA2OnJldHVybiBuWzZdPT09MD9bMixlMih0LCRuKHpuKSxuKVsxXV06WzAsdCxtUHJdO2Nhc2UgNzp2YXIga249U2Uobiksdm49anUodCxuKSxOZT0kbih6biksSmU9JG4oem4pO2huKEplLGtuKTt2YXIgZW49JHIwKHQsa24sTmUsSmUsMCxuKSxfbj1lblsxXSxDbj1bMCxfblsxXSx2bixlblsyXV0sSG49ZW5bM10sRm49TXQoSmUpO3JldHVyblswLF9uLFsyLFswLENuLE10KE5lKSxGbixIbl1dXTtjYXNlIDg6dmFyIHZ0PSRuKHpuKSxOdD0kbih6biksZ3Q9JG4oem4pO0dsKG4sZ3QpO3ZhciBadD1qdSh0LG4pLHF0PVpyMCh0LHZ0LE50LGd0LG4pLEZ0PXF0WzFdLEN0PWg3KEZ0LG4pLGR1PVswLEZ0WzFdLFp0LEN0XSxXdT1xdFsyXSxsdD1NdChndCksb3U9TXQoTnQpO3JldHVyblswLEZ0LFszLFswLGR1LFswLE10KHZ0KSxvdSxsdF0sV3VdXV07Y2FzZSA5OnJldHVybiBSdCh0LG4sZnVuY3Rpb24oQjAsRDApe2lmKGduKEQwKSxDcyhqKEQwKSk9PT0wJiZjOShqKEQwKSk9PT0wJiZHYyhqKEQwKSk9PT0wKWZvcig7Oyl7dmFyIExlPW45KGooRDApKTtpZigyPExlPj4+MCl2YXIgbWU9cShEMCk7ZWxzZSBzd2l0Y2goTGUpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cjpmb3IoOzspe2lmKEdjKGooRDApKT09PTApZm9yKDs7KXt2YXIgSGU9bjkoaihEMCkpO2lmKDI8SGU+Pj4wKXZhciBoZT1xKEQwKTtlbHNlIHN3aXRjaChIZSl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpjb250aW51ZSByO2RlZmF1bHQ6dmFyIGhlPTB9YnJlYWt9ZWxzZSB2YXIgaGU9cShEMCk7dmFyIG1lPWhlO2JyZWFrfWJyZWFrO2RlZmF1bHQ6dmFyIG1lPTB9YnJlYWt9ZWxzZSB2YXIgbWU9cShEMCk7cmV0dXJuIG1lPT09MD9bMCxCMCxbMSwwLFNlKEQwKV1dOmtlKHNQcil9KTtjYXNlIDEwOnJldHVyblswLHQsWzEsMCxTZShuKV1dO2Nhc2UgMTE6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihCMCxEMCl7aWYoZ24oRDApLENzKGooRDApKT09PTAmJmM5KGooRDApKT09PTAmJkdjKGooRDApKT09PTApZm9yKDs7KXtHMChEMCwwKTt2YXIgTGU9ZTkoaihEMCkpO2lmKExlIT09MCl7aWYoTGU9PT0xKXI6Zm9yKDs7KXtpZihHYyhqKEQwKSk9PT0wKWZvcig7Oyl7RzAoRDAsMCk7dmFyIEhlPWU5KGooRDApKTtpZihIZSE9PTApe2lmKEhlPT09MSljb250aW51ZSByO3ZhciBoZT1xKEQwKTticmVha319ZWxzZSB2YXIgaGU9cShEMCk7dmFyIG1lPWhlO2JyZWFrfWVsc2UgdmFyIG1lPXEoRDApO2JyZWFrfX1lbHNlIHZhciBtZT1xKEQwKTtyZXR1cm4gbWU9PT0wP1swLEIwLFswLDAsU2UoRDApXV06a2UoY1ByKX0pO2Nhc2UgMTI6cmV0dXJuWzAsdCxbMCwwLFNlKG4pXV07Y2FzZSAxMzpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEIwLEQwKXtpZihnbihEMCksQ3MoaihEMCkpPT09MCYmYjkoaihEMCkpPT09MCYmenUoaihEMCkpPT09MClmb3IoOzspe3ZhciBMZT1hOShqKEQwKSk7aWYoMjxMZT4+PjApdmFyIG1lPXEoRDApO2Vsc2Ugc3dpdGNoKExlKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnI6Zm9yKDs7KXtpZih6dShqKEQwKSk9PT0wKWZvcig7Oyl7dmFyIEhlPWE5KGooRDApKTtpZigyPEhlPj4+MCl2YXIgaGU9cShEMCk7ZWxzZSBzd2l0Y2goSGUpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6Y29udGludWUgcjtkZWZhdWx0OnZhciBoZT0wfWJyZWFrfWVsc2UgdmFyIGhlPXEoRDApO3ZhciBtZT1oZTticmVha31icmVhaztkZWZhdWx0OnZhciBtZT0wfWJyZWFrfWVsc2UgdmFyIG1lPXEoRDApO3JldHVybiBtZT09PTA/WzAsQjAsWzEsMSxTZShEMCldXTprZShhUHIpfSk7Y2FzZSAxNDpyZXR1cm5bMCx0LFsxLDEsU2UobildXTtjYXNlIDE1OnJldHVybiBSdCh0LG4sZnVuY3Rpb24oQjAsRDApe2lmKGduKEQwKSxDcyhqKEQwKSk9PT0wJiZiOShqKEQwKSk9PT0wJiZ6dShqKEQwKSk9PT0wKWZvcig7Oyl7RzAoRDAsMCk7dmFyIExlPXg5KGooRDApKTtpZihMZSE9PTApe2lmKExlPT09MSlyOmZvcig7Oyl7aWYoenUoaihEMCkpPT09MClmb3IoOzspe0cwKEQwLDApO3ZhciBIZT14OShqKEQwKSk7aWYoSGUhPT0wKXtpZihIZT09PTEpY29udGludWUgcjt2YXIgaGU9cShEMCk7YnJlYWt9fWVsc2UgdmFyIGhlPXEoRDApO3ZhciBtZT1oZTticmVha31lbHNlIHZhciBtZT1xKEQwKTticmVha319ZWxzZSB2YXIgbWU9cShEMCk7cmV0dXJuIG1lPT09MD9bMCxCMCxbMCwzLFNlKEQwKV1dOmtlKG9Qcil9KTtjYXNlIDE2OnJldHVyblswLHQsWzAsMyxTZShuKV1dO2Nhc2UgMTc6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihCMCxEMCl7aWYoZ24oRDApLENzKGooRDApKT09PTApZm9yKDs7KXt2YXIgTGU9aihEMCksSGU9NDc8TGU/NTc8TGU/LTE6VnIodVJyLExlK1d0fDApLTF8MDotMTtpZihIZSE9PTApe2lmKEhlPT09MSl7Zm9yKDs7KWlmKEcwKEQwLDApLHBuKGooRDApKSE9PTApe3ZhciBoZT1xKEQwKTticmVha319ZWxzZSB2YXIgaGU9cShEMCk7YnJlYWt9fWVsc2UgdmFyIGhlPXEoRDApO3JldHVybiBoZT09PTA/WzAsQjAsWzAsMixTZShEMCldXTprZSh4UHIpfSk7Y2FzZSAxODpyZXR1cm5bMCx0LFswLDIsU2UobildXTtjYXNlIDE5OnJldHVybiBSdCh0LG4sZnVuY3Rpb24oQjAsRDApe2lmKGduKEQwKSxDcyhqKEQwKSk9PT0wJiZ6dShqKEQwKSk9PT0wKXtmb3IoOzspaWYoRzAoRDAsMCksenUoaihEMCkpIT09MCl7dmFyIExlPXEoRDApO2JyZWFrfX1lbHNlIHZhciBMZT1xKEQwKTtyZXR1cm4gTGU9PT0wP1swLEIwLFswLDEsU2UoRDApXV06a2UoZlByKX0pO2Nhc2UgMjA6cmV0dXJuWzAsdCxbMCwxLFNlKG4pXV07Y2FzZSAyMTpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEIwLEQwKXtpZihnbihEMCksQ3MoaihEMCkpPT09MCYmWm0oaihEMCkpPT09MCYmTm4oaihEMCkpPT09MClmb3IoOzspe3ZhciBMZT10OShqKEQwKSk7aWYoMjxMZT4+PjApdmFyIG1lPXEoRDApO2Vsc2Ugc3dpdGNoKExlKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnI6Zm9yKDs7KXtpZihObihqKEQwKSk9PT0wKWZvcig7Oyl7dmFyIEhlPXQ5KGooRDApKTtpZigyPEhlPj4+MCl2YXIgaGU9cShEMCk7ZWxzZSBzd2l0Y2goSGUpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6Y29udGludWUgcjtkZWZhdWx0OnZhciBoZT0wfWJyZWFrfWVsc2UgdmFyIGhlPXEoRDApO3ZhciBtZT1oZTticmVha31icmVhaztkZWZhdWx0OnZhciBtZT0wfWJyZWFrfWVsc2UgdmFyIG1lPXEoRDApO3JldHVybiBtZT09PTA/WzAsQjAsWzEsMixTZShEMCldXTprZShpUHIpfSk7Y2FzZSAyMzpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEIwLEQwKXtpZihnbihEMCksQ3MoaihEMCkpPT09MCYmWm0oaihEMCkpPT09MCYmTm4oaihEMCkpPT09MClmb3IoOzspe0cwKEQwLDApO3ZhciBMZT1fOShqKEQwKSk7aWYoTGUhPT0wKXtpZihMZT09PTEpcjpmb3IoOzspe2lmKE5uKGooRDApKT09PTApZm9yKDs7KXtHMChEMCwwKTt2YXIgSGU9XzkoaihEMCkpO2lmKEhlIT09MCl7aWYoSGU9PT0xKWNvbnRpbnVlIHI7dmFyIGhlPXEoRDApO2JyZWFrfX1lbHNlIHZhciBoZT1xKEQwKTt2YXIgbWU9aGU7YnJlYWt9ZWxzZSB2YXIgbWU9cShEMCk7YnJlYWt9fWVsc2UgdmFyIG1lPXEoRDApO3JldHVybiBtZT09PTA/WzAsQjAsWzAsNCxTZShEMCldXTprZSh1UHIpfSk7Y2FzZSAyNTpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEIwLEQwKXtmdW5jdGlvbiBMZShsbil7Zm9yKDs7KXt2YXIgaXQ9d2koaihsbikpO2lmKDI8aXQ+Pj4wKXJldHVybiBxKGxuKTtzd2l0Y2goaXQpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cjpmb3IoOzspe2lmKHBuKGoobG4pKT09PTApZm9yKDs7KXt2YXIgVHQ9d2koaihsbikpO2lmKDI8VHQ+Pj4wKXJldHVybiBxKGxuKTtzd2l0Y2goVHQpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6Y29udGludWUgcjtkZWZhdWx0OnJldHVybiAwfX1yZXR1cm4gcShsbil9ZGVmYXVsdDpyZXR1cm4gMH19fWZ1bmN0aW9uIEhlKGxuKXtmb3IoOzspe3ZhciBpdD1yMihqKGxuKSk7aWYoaXQhPT0wKXt2YXIgVHQ9aXQhPT0xPzE6MDtyZXR1cm4gVHQmJnEobG4pfX19ZnVuY3Rpb24gaGUobG4pe3ZhciBpdD1FOShqKGxuKSk7aWYoMjxpdD4+PjApcmV0dXJuIHEobG4pO3N3aXRjaChpdCl7Y2FzZSAwOnZhciBUdD1DMShqKGxuKSk7cmV0dXJuIFR0PT09MD9IZShsbik6VHQ9PT0xP0xlKGxuKTpxKGxuKTtjYXNlIDE6cmV0dXJuIEhlKGxuKTtkZWZhdWx0OnJldHVybiBMZShsbil9fWZ1bmN0aW9uIG1lKGxuKXt2YXIgaXQ9cDkoaihsbikpO2lmKGl0PT09MClmb3IoOzspe3ZhciBUdD1mNyhqKGxuKSk7aWYoMjxUdD4+PjApcmV0dXJuIHEobG4pO3N3aXRjaChUdCl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpyZXR1cm4gaGUobG4pO2RlZmF1bHQ6cjpmb3IoOzspe2lmKHBuKGoobG4pKT09PTApZm9yKDs7KXt2YXIgVGk9ZjcoaihsbikpO2lmKDI8VGk+Pj4wKXJldHVybiBxKGxuKTtzd2l0Y2goVGkpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cmV0dXJuIGhlKGxuKTtkZWZhdWx0OmNvbnRpbnVlIHJ9fXJldHVybiBxKGxuKX19fXJldHVybiBpdD09PTE/aGUobG4pOnEobG4pfWduKEQwKTt2YXIgWm49UW0oaihEMCkpO2lmKDI8Wm4+Pj4wKXZhciB3bj1xKEQwKTtlbHNlIHN3aXRjaChabil7Y2FzZSAwOmlmKHBuKGooRDApKT09PTApZm9yKDs7KXt2YXIgZnQ9ZjcoaihEMCkpO2lmKDI8ZnQ+Pj4wKXZhciB3bj1xKEQwKTtlbHNlIHN3aXRjaChmdCl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTp2YXIgd249aGUoRDApO2JyZWFrO2RlZmF1bHQ6cjpmb3IoOzspe2lmKHBuKGooRDApKT09PTApZm9yKDs7KXt2YXIgeHQ9ZjcoaihEMCkpO2lmKDI8eHQ+Pj4wKXZhciBqbj1xKEQwKTtlbHNlIHN3aXRjaCh4dCl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTp2YXIgam49aGUoRDApO2JyZWFrO2RlZmF1bHQ6Y29udGludWUgcn1icmVha31lbHNlIHZhciBqbj1xKEQwKTt2YXIgd249am47YnJlYWt9fWJyZWFrfWVsc2UgdmFyIHduPXEoRDApO2JyZWFrO2Nhc2UgMTp2YXIgdXQ9cjkoaihEMCkpLHduPXV0PT09MD9tZShEMCk6dXQ9PT0xP2hlKEQwKTpxKEQwKTticmVhaztkZWZhdWx0OmZvcig7Oyl7dmFyIGR0PWw5KGooRDApKTtpZigyPGR0Pj4+MCl2YXIgd249cShEMCk7ZWxzZSBzd2l0Y2goZHQpe2Nhc2UgMDp2YXIgd249bWUoRDApO2JyZWFrO2Nhc2UgMTpjb250aW51ZTtkZWZhdWx0OnZhciB3bj1oZShEMCl9YnJlYWt9fWlmKHduPT09MCl7dmFyIHhuPUd1KEIwLG50KEIwLEQwKSwyMyk7cmV0dXJuWzAseG4sWzEsMixTZShEMCldXX1yZXR1cm4ga2UodFByKX0pO2Nhc2UgMjY6dmFyIEJ1PUd1KHQsbnQodCxuKSwyMyk7cmV0dXJuWzAsQnUsWzEsMixTZShuKV1dO2Nhc2UgMjc6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihCMCxEMCl7ZnVuY3Rpb24gTGUoeG4pe2Zvcig7Oyl7RzAoeG4sMCk7dmFyIGxuPURzKGooeG4pKTtpZihsbiE9PTApe2lmKGxuPT09MSlyOmZvcig7Oyl7aWYocG4oaih4bikpPT09MClmb3IoOzspe0cwKHhuLDApO3ZhciBpdD1EcyhqKHhuKSk7aWYoaXQhPT0wKXtpZihpdD09PTEpY29udGludWUgcjtyZXR1cm4gcSh4bil9fXJldHVybiBxKHhuKX1yZXR1cm4gcSh4bil9fX1mdW5jdGlvbiBIZSh4bil7Zm9yKDs7KWlmKEcwKHhuLDApLHBuKGooeG4pKSE9PTApcmV0dXJuIHEoeG4pfWZ1bmN0aW9uIGhlKHhuKXt2YXIgbG49RTkoaih4bikpO2lmKDI8bG4+Pj4wKXJldHVybiBxKHhuKTtzd2l0Y2gobG4pe2Nhc2UgMDp2YXIgaXQ9QzEoaih4bikpO3JldHVybiBpdD09PTA/SGUoeG4pOml0PT09MT9MZSh4bik6cSh4bik7Y2FzZSAxOnJldHVybiBIZSh4bik7ZGVmYXVsdDpyZXR1cm4gTGUoeG4pfX1mdW5jdGlvbiBtZSh4bil7dmFyIGxuPXA5KGooeG4pKTtpZihsbj09PTApZm9yKDs7KXt2YXIgaXQ9Zjcoaih4bikpO2lmKDI8aXQ+Pj4wKXJldHVybiBxKHhuKTtzd2l0Y2goaXQpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cmV0dXJuIGhlKHhuKTtkZWZhdWx0OnI6Zm9yKDs7KXtpZihwbihqKHhuKSk9PT0wKWZvcig7Oyl7dmFyIFR0PWY3KGooeG4pKTtpZigyPFR0Pj4+MClyZXR1cm4gcSh4bik7c3dpdGNoKFR0KXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnJldHVybiBoZSh4bik7ZGVmYXVsdDpjb250aW51ZSByfX1yZXR1cm4gcSh4bil9fX1yZXR1cm4gbG49PT0xP2hlKHhuKTpxKHhuKX1nbihEMCk7dmFyIFpuPVFtKGooRDApKTtpZigyPFpuPj4+MCl2YXIgd249cShEMCk7ZWxzZSBzd2l0Y2goWm4pe2Nhc2UgMDppZihwbihqKEQwKSk9PT0wKWZvcig7Oyl7dmFyIGZ0PWY3KGooRDApKTtpZigyPGZ0Pj4+MCl2YXIgd249cShEMCk7ZWxzZSBzd2l0Y2goZnQpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6dmFyIHduPWhlKEQwKTticmVhaztkZWZhdWx0OnI6Zm9yKDs7KXtpZihwbihqKEQwKSk9PT0wKWZvcig7Oyl7dmFyIHh0PWY3KGooRDApKTtpZigyPHh0Pj4+MCl2YXIgam49cShEMCk7ZWxzZSBzd2l0Y2goeHQpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6dmFyIGpuPWhlKEQwKTticmVhaztkZWZhdWx0OmNvbnRpbnVlIHJ9YnJlYWt9ZWxzZSB2YXIgam49cShEMCk7dmFyIHduPWpuO2JyZWFrfX1icmVha31lbHNlIHZhciB3bj1xKEQwKTticmVhaztjYXNlIDE6dmFyIHV0PXI5KGooRDApKSx3bj11dD09PTA/bWUoRDApOnV0PT09MT9oZShEMCk6cShEMCk7YnJlYWs7ZGVmYXVsdDpmb3IoOzspe3ZhciBkdD1sOShqKEQwKSk7aWYoMjxkdD4+PjApdmFyIHduPXEoRDApO2Vsc2Ugc3dpdGNoKGR0KXtjYXNlIDA6dmFyIHduPW1lKEQwKTticmVhaztjYXNlIDE6Y29udGludWU7ZGVmYXVsdDp2YXIgd249aGUoRDApfWJyZWFrfX1yZXR1cm4gd249PT0wP1swLEIwLFswLDQsU2UoRDApXV06a2UoblByKX0pO2Nhc2UgMjk6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihCMCxEMCl7ZnVuY3Rpb24gTGUodXQpe2Zvcig7Oyl7dmFyIGR0PXdpKGoodXQpKTtpZigyPGR0Pj4+MClyZXR1cm4gcSh1dCk7c3dpdGNoKGR0KXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnI6Zm9yKDs7KXtpZihwbihqKHV0KSk9PT0wKWZvcig7Oyl7dmFyIHhuPXdpKGoodXQpKTtpZigyPHhuPj4+MClyZXR1cm4gcSh1dCk7c3dpdGNoKHhuKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOmNvbnRpbnVlIHI7ZGVmYXVsdDpyZXR1cm4gMH19cmV0dXJuIHEodXQpfWRlZmF1bHQ6cmV0dXJuIDB9fX1mdW5jdGlvbiBIZSh1dCl7dmFyIGR0PXIyKGoodXQpKTtpZihkdD09PTApcmV0dXJuIExlKHV0KTt2YXIgeG49ZHQhPT0xPzE6MDtyZXR1cm4geG4mJnEodXQpfWduKEQwKTt2YXIgaGU9UW0oaihEMCkpO2lmKDI8aGU+Pj4wKXZhciBtZT1xKEQwKTtlbHNlIHN3aXRjaChoZSl7Y2FzZSAwOnZhciBtZT1wbihqKEQwKSk9PT0wP0xlKEQwKTpxKEQwKTticmVhaztjYXNlIDE6Zm9yKDs7KXt2YXIgWm49RDEoaihEMCkpO2lmKFpuPT09MCl2YXIgbWU9SGUoRDApO2Vsc2V7aWYoWm49PT0xKWNvbnRpbnVlO3ZhciBtZT1xKEQwKX1icmVha31icmVhaztkZWZhdWx0OmZvcig7Oyl7dmFyIHduPUJjKGooRDApKTtpZigyPHduPj4+MCl2YXIgbWU9cShEMCk7ZWxzZSBzd2l0Y2god24pe2Nhc2UgMDp2YXIgbWU9SGUoRDApO2JyZWFrO2Nhc2UgMTpjb250aW51ZTtkZWZhdWx0OnI6Zm9yKDs7KXtpZihwbihqKEQwKSk9PT0wKWZvcig7Oyl7dmFyIGZ0PUJjKGooRDApKTtpZigyPGZ0Pj4+MCl2YXIgeHQ9cShEMCk7ZWxzZSBzd2l0Y2goZnQpe2Nhc2UgMDp2YXIgeHQ9SGUoRDApO2JyZWFrO2Nhc2UgMTpjb250aW51ZTtkZWZhdWx0OmNvbnRpbnVlIHJ9YnJlYWt9ZWxzZSB2YXIgeHQ9cShEMCk7dmFyIG1lPXh0O2JyZWFrfX1icmVha319aWYobWU9PT0wKXt2YXIgam49R3UoQjAsbnQoQjAsRDApLDIyKTtyZXR1cm5bMCxqbixbMSwyLFNlKEQwKV1dfXJldHVybiBrZShlUHIpfSk7Y2FzZSAzMDpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEIwLEQwKXtnbihEMCk7dmFyIExlPUMxKGooRDApKTtpZihMZT09PTApZm9yKDs7KXt2YXIgSGU9cjIoaihEMCkpO2lmKEhlIT09MCl7dmFyIGhlPUhlIT09MT8xOjAsZnQ9aGUmJnEoRDApO2JyZWFrfX1lbHNlIGlmKExlPT09MSlmb3IoOzspe3ZhciBtZT13aShqKEQwKSk7aWYoMjxtZT4+PjApdmFyIGZ0PXEoRDApO2Vsc2Ugc3dpdGNoKG1lKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnI6Zm9yKDs7KXtpZihwbihqKEQwKSk9PT0wKWZvcig7Oyl7dmFyIFpuPXdpKGooRDApKTtpZigyPFpuPj4+MCl2YXIgd249cShEMCk7ZWxzZSBzd2l0Y2goWm4pe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6Y29udGludWUgcjtkZWZhdWx0OnZhciB3bj0wfWJyZWFrfWVsc2UgdmFyIHduPXEoRDApO3ZhciBmdD13bjticmVha31icmVhaztkZWZhdWx0OnZhciBmdD0wfWJyZWFrfWVsc2UgdmFyIGZ0PXEoRDApO3JldHVybiBmdD09PTA/WzAsQjAsWzEsMixTZShEMCldXTprZShyUHIpfSk7Y2FzZSAzMTp2YXIgSzc9R3UodCxudCh0LG4pLDIyKTtyZXR1cm5bMCxLNyxbMSwyLFNlKG4pXV07Y2FzZSAzMzpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEIwLEQwKXtmdW5jdGlvbiBMZShqbil7Zm9yKDs7KXtHMChqbiwwKTt2YXIgdXQ9RHMoaihqbikpO2lmKHV0IT09MCl7aWYodXQ9PT0xKXI6Zm9yKDs7KXtpZihwbihqKGpuKSk9PT0wKWZvcig7Oyl7RzAoam4sMCk7dmFyIGR0PURzKGooam4pKTtpZihkdCE9PTApe2lmKGR0PT09MSljb250aW51ZSByO3JldHVybiBxKGpuKX19cmV0dXJuIHEoam4pfXJldHVybiBxKGpuKX19fWZ1bmN0aW9uIEhlKGpuKXtyZXR1cm4gRzAoam4sMCkscG4oaihqbikpPT09MD9MZShqbik6cShqbil9Z24oRDApO3ZhciBoZT1RbShqKEQwKSk7aWYoMjxoZT4+PjApdmFyIG1lPXEoRDApO2Vsc2Ugc3dpdGNoKGhlKXtjYXNlIDA6dmFyIG1lPXBuKGooRDApKT09PTA/TGUoRDApOnEoRDApO2JyZWFrO2Nhc2UgMTpmb3IoOzspe0cwKEQwLDApO3ZhciBabj1EMShqKEQwKSk7aWYoWm49PT0wKXZhciBtZT1IZShEMCk7ZWxzZXtpZihabj09PTEpY29udGludWU7dmFyIG1lPXEoRDApfWJyZWFrfWJyZWFrO2RlZmF1bHQ6Zm9yKDs7KXtHMChEMCwwKTt2YXIgd249QmMoaihEMCkpO2lmKDI8d24+Pj4wKXZhciBtZT1xKEQwKTtlbHNlIHN3aXRjaCh3bil7Y2FzZSAwOnZhciBtZT1IZShEMCk7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2RlZmF1bHQ6cjpmb3IoOzspe2lmKHBuKGooRDApKT09PTApZm9yKDs7KXtHMChEMCwwKTt2YXIgZnQ9QmMoaihEMCkpO2lmKDI8ZnQ+Pj4wKXZhciB4dD1xKEQwKTtlbHNlIHN3aXRjaChmdCl7Y2FzZSAwOnZhciB4dD1IZShEMCk7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2RlZmF1bHQ6Y29udGludWUgcn1icmVha31lbHNlIHZhciB4dD1xKEQwKTt2YXIgbWU9eHQ7YnJlYWt9fWJyZWFrfX1yZXR1cm4gbWU9PT0wP1swLEIwLFswLDQsU2UoRDApXV06a2UoUUNyKX0pO2Nhc2UgMzU6dmFyIFlpPW50KHQsbiksYTc9U2Uobik7cmV0dXJuWzAsdCxbNCxZaSxhNyxhN11dO2Nhc2UgMzY6cmV0dXJuWzAsdCwwXTtjYXNlIDM3OnJldHVyblswLHQsMV07Y2FzZSAzODpyZXR1cm5bMCx0LDRdO2Nhc2UgMzk6cmV0dXJuWzAsdCw1XTtjYXNlIDQwOnJldHVyblswLHQsNl07Y2FzZSA0MTpyZXR1cm5bMCx0LDddO2Nhc2UgNDI6cmV0dXJuWzAsdCwxMl07Y2FzZSA0MzpyZXR1cm5bMCx0LDEwXTtjYXNlIDQ0OnJldHVyblswLHQsOF07Y2FzZSA0NTpyZXR1cm5bMCx0LDldO2Nhc2UgNDY6cmV0dXJuWzAsdCw4Nl07Y2FzZSA0NzokdihuKSxnbihuKTt2YXIgSGM9aihuKSxXNz02MjxIYz82MzxIYz8tMTowOi0xLFV0PVc3IT09MD8xOjAsYnQ9VXQmJnEobik7cmV0dXJuIGJ0PT09MD9bMCx0LDg1XTprZShfUHIpO2Nhc2UgNDg6cmV0dXJuWzAsdCw4M107Y2FzZSA0OTpyZXR1cm5bMCx0LDg0XTtjYXNlIDIyOmNhc2UgMzI6cmV0dXJuWzAsdCxbMSwyLFNlKG4pXV07ZGVmYXVsdDpyZXR1cm5bMCx0LFswLDQsU2UobildXX19ZnVuY3Rpb24gRGVlKHQsbil7Z24obik7dmFyIGU9aihuKSxpPWVmPGU/RW88ZT9NYTxlP0RvPGU/MToyOlF4PGU/MToyOm1vPGU/eGM8ZT9veDxlPzE6MjpmbzxlPzE6MjokdTxlP0h1PGU/MTozOkNvPGU/MToyOlZyKEFMcixlKzF8MCktMXwwO2lmKDU8aT4+PjApdmFyIHg9cShuKTtlbHNlIHN3aXRjaChpKXtjYXNlIDA6dmFyIHg9MDticmVhaztjYXNlIDE6dmFyIHg9NjticmVhaztjYXNlIDI6aWYoRzAobiwyKSxqYyhqKG4pKT09PTApe2Zvcig7OylpZihHMChuLDIpLGpjKGoobikpIT09MCl7dmFyIHg9cShuKTticmVha319ZWxzZSB2YXIgeD1xKG4pO2JyZWFrO2Nhc2UgMzp2YXIgeD0xO2JyZWFrO2Nhc2UgNDpHMChuLDEpO3ZhciB4PXhpKGoobikpPT09MD8xOnEobik7YnJlYWs7ZGVmYXVsdDpHMChuLDUpO3ZhciBjPWQ5KGoobikpLHg9Yz09PTA/NDpjPT09MT8zOnEobil9aWYoNjx4Pj4+MClyZXR1cm4ga2UoWkNyKTtzd2l0Y2goeCl7Y2FzZSAwOnJldHVyblswLHQsUG5dO2Nhc2UgMTpyZXR1cm5bMixkNyh0LG4pXTtjYXNlIDI6cmV0dXJuWzIsdF07Y2FzZSAzOnZhciBzPWp1KHQsbikscD0kbih6bikseT1lMih0LHAsbiksVD15WzFdO3JldHVyblsxLFQsU2koVCxzLHlbMl0scCwwKV07Y2FzZSA0OnZhciBFPWp1KHQsbiksZD0kbih6biksdz1SMSh0LGQsbiksRz13WzFdO3JldHVyblsxLEcsU2koRyxFLHdbMl0sZCwxKV07Y2FzZSA1OnZhciBBPWp1KHQsbiksUz0kbih6biksTT10O3I6Zm9yKDs7KXtnbihuKTt2YXIgSz1qKG4pLFY9OTI8Sz9IdTxLPzE6JHU8Sz8yOjE6VnIoR0xyLEsrMXwwKS0xfDA7aWYoNjxWPj4+MCl2YXIgZjA9cShuKTtlbHNlIHN3aXRjaChWKXtjYXNlIDA6dmFyIGYwPTA7YnJlYWs7Y2FzZSAxOmZvcig7Oyl7RzAobiw3KTt2YXIgbTA9aihuKTtpZigtMTxtMClpZig5MDxtMClpZig5MjxtMClpZigkdTxtMCl2YXIgazA9bTA8PUh1PzE6MCxnMD1rMCYmLTE7ZWxzZSB2YXIgZzA9MDtlbHNlIHZhciBnMD0tMTtlbHNlIHZhciBnMD1WcihjUnIsbTApLTF8MDtlbHNlIHZhciBnMD0tMTtpZihnMCE9PTApe3ZhciBmMD1xKG4pO2JyZWFrfX1icmVhaztjYXNlIDI6dmFyIGYwPTY7YnJlYWs7Y2FzZSAzOkcwKG4sNik7dmFyIGYwPXhpKGoobikpPT09MD82OnEobik7YnJlYWs7Y2FzZSA0OmlmKEcwKG4sNCksU3IwKGoobikpPT09MCl7Zm9yKDs7KWlmKEcwKG4sMyksU3IwKGoobikpIT09MCl7dmFyIGYwPXEobik7YnJlYWt9fWVsc2UgdmFyIGYwPXEobik7YnJlYWs7Y2FzZSA1OnZhciBmMD01O2JyZWFrO2RlZmF1bHQ6RzAobiw3KTt2YXIgZTA9aihuKTtpZigtMTxlMClpZigxMzxlMCl2YXIgeDA9ZTA8PUh1PzE6MCxsPXgwJiYoJHU8ZTA/MTowKTtlbHNlIHZhciBsPVZyKHhMcixlMCktMXwwO2Vsc2UgdmFyIGw9LTE7aWYoMjxsPj4+MCl2YXIgZjA9cShuKTtlbHNlIHN3aXRjaChsKXtjYXNlIDA6dmFyIGYwPTI7YnJlYWs7Y2FzZSAxOnZhciBmMD0xO2JyZWFrO2RlZmF1bHQ6RzAobiwxKTt2YXIgZjA9eGkoaihuKSk9PT0wPzE6cShuKX19aWYoNzxmMD4+PjApdmFyIGMwPWtlKEZ3cik7ZWxzZSBzd2l0Y2goZjApe2Nhc2UgMDp2YXIgYzA9WzAsR3UoTSxudChNLG4pLDI1KSxUd3JdO2JyZWFrO2Nhc2UgMTp2YXIgYzA9WzAsZDcoR3UoTSxudChNLG4pLDI1KSxuKSxPd3JdO2JyZWFrO2Nhc2UgMzp2YXIgdDA9U2UobiksYzA9WzAsTSxtNyh0MCwxLHVuKHQwKS0xfDApXTticmVhaztjYXNlIDQ6dmFyIGMwPVswLE0sSXdyXTticmVhaztjYXNlIDU6Zm9yKHFpKFMsOTEpOzspe2duKG4pO3ZhciBvMD1qKG4pLHcwPTkzPG8wPzE6VnIob0xyLG8wKzF8MCktMXwwO2lmKDM8dzA+Pj4wKXZhciBfMD1xKG4pO2Vsc2Ugc3dpdGNoKHcwKXtjYXNlIDA6dmFyIF8wPTA7YnJlYWs7Y2FzZSAxOmZvcig7Oyl7RzAobiw0KTt2YXIgRTA9aihuKTtpZigtMTxFMClpZig5MTxFMCl2YXIgVTA9RTA8PTkzPzE6MCxiPVUwJiYtMTtlbHNlIHZhciBiPTA7ZWxzZSB2YXIgYj0tMTtpZihiIT09MCl7dmFyIF8wPXEobik7YnJlYWt9fWJyZWFrO2Nhc2UgMjpHMChuLDQpO3ZhciBSMD1qKG4pLFg9OTE8UjA/OTM8UjA/LTE6VnIock4sUjAtOTJ8MCktMXwwOi0xLF8wPVg9PT0wPzE6WD09PTE/MjpxKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIF8wPTN9aWYoNDxfMD4+PjApdmFyIHMwPWtlKFN3cik7ZWxzZSBzd2l0Y2goXzApe2Nhc2UgMDp2YXIgczA9TTticmVhaztjYXNlIDE6aG4oUyxnd3IpO2NvbnRpbnVlO2Nhc2UgMjpxaShTLDkyKSxxaShTLDkzKTtjb250aW51ZTtjYXNlIDM6cWkoUyw5Myk7dmFyIHMwPU07YnJlYWs7ZGVmYXVsdDpobihTLFNlKG4pKTtjb250aW51ZX12YXIgTT1zMDtjb250aW51ZSByfWNhc2UgNjp2YXIgYzA9WzAsZDcoR3UoTSxudChNLG4pLDI1KSxuKSxBd3JdO2JyZWFrO2RlZmF1bHQ6aG4oUyxTZShuKSk7Y29udGludWV9dmFyIGhyPWMwWzFdLEFyPWg3KGhyLG4pLG9yPVswLGhyWzFdLEEsQXJdLFcwPWMwWzJdO3JldHVyblswLGhyLFs1LG9yLE10KFMpLFcwXV19ZGVmYXVsdDp2YXIgTHI9RWkodCxudCh0LG4pKTtyZXR1cm5bMCxMcixbNixTZShuKV1dfX1mdW5jdGlvbiBwTCh0LG4sZSxpLHgpe2Zvcih2YXIgYz10Ozspe3ZhciBzPWZ1bmN0aW9uKENuKXtmb3IoOzspaWYoRzAoQ24sNiksRnIwKGooQ24pKSE9PTApcmV0dXJuIHEoQ24pfTtnbih4KTt2YXIgcD1qKHgpLHk9YnI8cD9IdTxwPzE6JHU8cD8yOjE6VnIoUURyLHArMXwwKS0xfDA7aWYoNjx5Pj4+MCl2YXIgVD1xKHgpO2Vsc2Ugc3dpdGNoKHkpe2Nhc2UgMDp2YXIgVD0xO2JyZWFrO2Nhc2UgMTp2YXIgVD1zKHgpO2JyZWFrO2Nhc2UgMjp2YXIgVD0yO2JyZWFrO2Nhc2UgMzpHMCh4LDIpO3ZhciBUPXhpKGooeCkpPT09MD8yOnEoeCk7YnJlYWs7Y2FzZSA0OnZhciBUPTA7YnJlYWs7Y2FzZSA1OkcwKHgsNik7dmFyIEU9aih4KSxkPTM0PEU/SW48RT8tMTpWcihXTHIsRS0zNXwwKS0xfDA6LTE7aWYoZD09PTApe3ZhciB3PWooeCksRz00Nzx3P3VjPHc/LTE6VnIoaVJyLHcrV3R8MCktMXwwOi0xO2lmKEc9PT0wKWZvcig7Oyl7dmFyIEE9aih4KSxTPTQ3PEE/NTk8QT8tMTpWcihpTHIsQStXdHwwKS0xfDA6LTE7aWYoUyE9PTApe3ZhciBUPVM9PT0xPzQ6cSh4KTticmVha319ZWxzZSBpZihHPT09MSYmTm4oaih4KSk9PT0wKWZvcig7Oyl7dmFyIE09aih4KSxLPTQ3PE0/Umk8TT8tMTpWcihyUnIsTStXdHwwKS0xfDA6LTE7aWYoSyE9PTApe3ZhciBUPUs9PT0xPzM6cSh4KTticmVha319ZWxzZSB2YXIgVD1xKHgpfWVsc2UgaWYoZD09PTEmJmRuKGooeCkpPT09MCl7dmFyIFY9WnYoaih4KSk7aWYoVj09PTApe3ZhciBmMD1adihqKHgpKTtpZihmMD09PTApe3ZhciBtMD1adihqKHgpKTtpZihtMD09PTApe3ZhciBrMD1adihqKHgpKTtpZihrMD09PTApe3ZhciBnMD1adihqKHgpKTtpZihnMD09PTApe3ZhciBlMD1adihqKHgpKTtpZihlMD09PTApdmFyIHgwPWooeCksbD01ODx4MD81OTx4MD8tMTowOi0xLFQ9bD09PTA/NTpxKHgpO2Vsc2UgdmFyIFQ9ZTA9PT0xPzU6cSh4KX1lbHNlIHZhciBUPWcwPT09MT81OnEoeCl9ZWxzZSB2YXIgVD1rMD09PTE/NTpxKHgpfWVsc2UgdmFyIFQ9bTA9PT0xPzU6cSh4KX1lbHNlIHZhciBUPWYwPT09MT81OnEoeCl9ZWxzZSB2YXIgVD1WPT09MT81OnEoeCl9ZWxzZSB2YXIgVD1xKHgpO2JyZWFrO2RlZmF1bHQ6RzAoeCwwKTt2YXIgVD1GcjAoaih4KSk9PT0wP3MoeCk6cSh4KX1pZig2PFQ+Pj4wKXJldHVybiBrZShOd3IpO3N3aXRjaChUKXtjYXNlIDA6dmFyIGMwPVNlKHgpLHQwPTA7c3dpdGNoKG4pe2Nhc2UgMDpuMChjMCxDd3IpfHwodDA9MSk7YnJlYWs7Y2FzZSAxOm4wKGMwLFB3cil8fCh0MD0xKTticmVhaztkZWZhdWx0OnZhciBvMD0wO2lmKG4wKGMwLER3cikpe2lmKCFuMChjMCxMd3IpKXJldHVybiBiTChjLG50KGMseCkscXdyLEJ3cik7aWYobjAoYzAsUndyKSl7aWYoIW4wKGMwLGp3cikpcmV0dXJuIGJMKGMsbnQoYyx4KSxNd3IsR3dyKTtvMD0xfX1pZighbzApcmV0dXJuICR2KHgpLGN9aWYodDApcmV0dXJuIGM7aG4oaSxjMCksaG4oZSxjMCk7Y29udGludWU7Y2FzZSAxOnJldHVybiBFaShjLG50KGMseCkpO2Nhc2UgMjp2YXIgdzA9U2UoeCk7aG4oaSx3MCksaG4oZSx3MCk7dmFyIGM9ZDcoYyx4KTtjb250aW51ZTtjYXNlIDM6dmFyIF8wPVNlKHgpLEUwPW03KF8wLDMsdW4oXzApLTR8MCk7aG4oaSxfMCksUzEoZSxCaShUZShVd3IsRTApKSk7Y29udGludWU7Y2FzZSA0OnZhciBVMD1TZSh4KSxiPW03KFUwLDIsdW4oVTApLTN8MCk7aG4oaSxVMCksUzEoZSxCaShiKSk7Y29udGludWU7Y2FzZSA1OnZhciBSMD1TZSh4KSxYPW03KFIwLDEsdW4oUjApLTJ8MCk7aG4oaSxSMCk7dmFyIHMwPUVlKFgsSHdyKSxocj0wO2lmKDA8PXMwKWlmKDA8czApe3ZhciBBcj1FZShYLEZUciksb3I9MDtpZigwPD1BcilpZigwPEFyKXt2YXIgVzA9RWUoWCxZSXIpLExyPTA7aWYoMDw9VzApaWYoMDxXMCl7dmFyIFRyPUVlKFgsck5yKSxIcj0wO2lmKDA8PVRyKWlmKDA8VHIpe3ZhciBPcj1FZShYLE5OciksZnI9MDtpZigwPD1PcilpZigwPE9yKWlmKG4wKFgsVk5yKSlpZihuMChYLHpOcikpaWYobjAoWCxLTnIpKWlmKG4wKFgsV05yKSlpZihuMChYLEpOcikpaWYobjAoWCwkTnIpKW9yPTEsTHI9MSxIcj0xLGZyPTE7ZWxzZSB2YXIgUnI9Wk5yO2Vsc2UgdmFyIFJyPVFOcjtlbHNlIHZhciBScj1yQ3I7ZWxzZSB2YXIgUnI9ZUNyO2Vsc2UgdmFyIFJyPW5DcjtlbHNlIHZhciBScj10Q3I7ZWxzZSB2YXIgUnI9dUNyO2Vsc2UgaWYobjAoWCxDTnIpKWlmKG4wKFgsUE5yKSlpZihuMChYLEROcikpaWYobjAoWCxMTnIpKWlmKG4wKFgsUk5yKSlpZihuMChYLGpOcikpaWYobjAoWCxHTnIpKW9yPTEsTHI9MSxIcj0xLGZyPTE7ZWxzZSB2YXIgUnI9TU5yO2Vsc2UgdmFyIFJyPUJOcjtlbHNlIHZhciBScj1xTnI7ZWxzZSB2YXIgUnI9VU5yO2Vsc2UgdmFyIFJyPUhOcjtlbHNlIHZhciBScj1YTnI7ZWxzZSB2YXIgUnI9WU5yO2lmKCFmcil2YXIgV3I9UnJ9ZWxzZSB2YXIgV3I9aUNyO2Vsc2V7dmFyIEpyPUVlKFgsZU5yKSxhcj0wO2lmKDA8PUpyKWlmKDA8SnIpaWYobjAoWCxtTnIpKWlmKG4wKFgsX05yKSlpZihuMChYLHlOcikpaWYobjAoWCxoTnIpKWlmKG4wKFgsZE5yKSlpZihuMChYLGtOcikpaWYobjAoWCx3TnIpKW9yPTEsTHI9MSxIcj0xLGFyPTE7ZWxzZSB2YXIgX3I9RU5yO2Vsc2UgdmFyIF9yPVNOcjtlbHNlIHZhciBfcj1nTnI7ZWxzZSB2YXIgX3I9Rk5yO2Vsc2UgdmFyIF9yPVROcjtlbHNlIHZhciBfcj1PTnI7ZWxzZSB2YXIgX3I9SU5yO2Vsc2UgdmFyIF9yPUFOcjtlbHNlIGlmKG4wKFgsbk5yKSlpZihuMChYLHROcikpaWYobjAoWCx1TnIpKWlmKG4wKFgsaU5yKSlpZihuMChYLGZOcikpaWYobjAoWCx4TnIpKWlmKG4wKFgsb05yKSlvcj0xLExyPTEsSHI9MSxhcj0xO2Vsc2UgdmFyIF9yPWFOcjtlbHNlIHZhciBfcj1jTnI7ZWxzZSB2YXIgX3I9c05yO2Vsc2UgdmFyIF9yPXZOcjtlbHNlIHZhciBfcj1sTnI7ZWxzZSB2YXIgX3I9Yk5yO2Vsc2UgdmFyIF9yPXBOcjtpZighYXIpdmFyIFdyPV9yfWlmKCFIcil2YXIgSXI9V3J9ZWxzZSB2YXIgSXI9ZkNyO2Vsc2V7dmFyIGZlPUVlKFgsVklyKSx2MD0wO2lmKDA8PWZlKWlmKDA8ZmUpe3ZhciBQPUVlKFgsRUFyKSxMPTA7aWYoMDw9UClpZigwPFApaWYobjAoWCxHQXIpKWlmKG4wKFgsTUFyKSlpZihuMChYLEJBcikpaWYobjAoWCxxQXIpKWlmKG4wKFgsVUFyKSlpZihuMChYLEhBcikpaWYobjAoWCxYQXIpKW9yPTEsTHI9MSx2MD0xLEw9MTtlbHNlIHZhciBRPVlBcjtlbHNlIHZhciBRPVZBcjtlbHNlIHZhciBRPXpBcjtlbHNlIHZhciBRPUtBcjtlbHNlIHZhciBRPVdBcjtlbHNlIHZhciBRPUpBcjtlbHNlIHZhciBRPSRBcjtlbHNlIHZhciBRPVpBcjtlbHNlIGlmKG4wKFgsU0FyKSlpZihuMChYLGdBcikpaWYobjAoWCxGQXIpKWlmKG4wKFgsVEFyKSlpZihuMChYLE9BcikpaWYobjAoWCxJQXIpKWlmKG4wKFgsQUFyKSlvcj0xLExyPTEsdjA9MSxMPTE7ZWxzZSB2YXIgUT1OQXI7ZWxzZSB2YXIgUT1DQXI7ZWxzZSB2YXIgUT1QQXI7ZWxzZSB2YXIgUT1EQXI7ZWxzZSB2YXIgUT1MQXI7ZWxzZSB2YXIgUT1SQXI7ZWxzZSB2YXIgUT1qQXI7aWYoIUwpdmFyIGkwPVF9ZWxzZSB2YXIgaTA9UUFyO2Vsc2V7dmFyIGwwPUVlKFgseklyKSxTMD0wO2lmKDA8PWwwKWlmKDA8bDApaWYobjAoWCxvQXIpKWlmKG4wKFgsYUFyKSlpZihuMChYLGNBcikpaWYobjAoWCxzQXIpKWlmKG4wKFgsdkFyKSlpZihuMChYLGxBcikpaWYobjAoWCxiQXIpKW9yPTEsTHI9MSx2MD0xLFMwPTE7ZWxzZSB2YXIgVDA9cEFyO2Vsc2UgdmFyIFQwPW1BcjtlbHNlIHZhciBUMD1fQXI7ZWxzZSB2YXIgVDA9eUFyO2Vsc2UgdmFyIFQwPWhBcjtlbHNlIHZhciBUMD1kQXI7ZWxzZSB2YXIgVDA9a0FyO2Vsc2UgdmFyIFQwPXdBcjtlbHNlIGlmKG4wKFgsS0lyKSlpZihuMChYLFdJcikpaWYobjAoWCxKSXIpKWlmKG4wKFgsJElyKSlpZihuMChYLFpJcikpaWYobjAoWCxRSXIpKWlmKG4wKFgsckFyKSlvcj0xLExyPTEsdjA9MSxTMD0xO2Vsc2UgdmFyIFQwPWVBcjtlbHNlIHZhciBUMD1uQXI7ZWxzZSB2YXIgVDA9dEFyO2Vsc2UgdmFyIFQwPXVBcjtlbHNlIHZhciBUMD1pQXI7ZWxzZSB2YXIgVDA9ZkFyO2Vsc2UgdmFyIFQwPXhBcjtpZighUzApdmFyIGkwPVQwfWlmKCF2MCl2YXIgSXI9aTB9aWYoIUxyKXZhciBycj1Jcn1lbHNlIHZhciBycj14Q3I7ZWxzZXt2YXIgTDA9RWUoWCxUVHIpLEI9MDtpZigwPD1MMClpZigwPEwwKXt2YXIgWj1FZShYLFJPcikscDA9MDtpZigwPD1aKWlmKDA8Wil7dmFyIGIwPUVlKFgsbElyKSxPMD0wO2lmKDA8PWIwKWlmKDA8YjApaWYobjAoWCxPSXIpKWlmKG4wKFgsSUlyKSlpZihuMChYLEFJcikpaWYobjAoWCxOSXIpKWlmKG4wKFgsQ0lyKSlpZihuMChYLFBJcikpaWYobjAoWCxESXIpKW9yPTEsQj0xLHAwPTEsTzA9MTtlbHNlIHZhciBNMD1MSXI7ZWxzZSB2YXIgTTA9UklyO2Vsc2UgdmFyIE0wPWpJcjtlbHNlIHZhciBNMD1HSXI7ZWxzZSB2YXIgTTA9TUlyO2Vsc2UgdmFyIE0wPUJJcjtlbHNlIHZhciBNMD1xSXI7ZWxzZSB2YXIgTTA9VUlyO2Vsc2UgaWYobjAoWCxiSXIpKWlmKG4wKFgscElyKSlpZihuMChYLG1JcikpaWYobjAoWCxfSXIpKWlmKG4wKFgseUlyKSlpZihuMChYLGhJcikpaWYobjAoWCxkSXIpKW9yPTEsQj0xLHAwPTEsTzA9MTtlbHNlIHZhciBNMD1rSXI7ZWxzZSB2YXIgTTA9d0lyO2Vsc2UgdmFyIE0wPUVJcjtlbHNlIHZhciBNMD1TSXI7ZWxzZSB2YXIgTTA9Z0lyO2Vsc2UgdmFyIE0wPUZJcjtlbHNlIHZhciBNMD1USXI7aWYoIU8wKXZhciBlcj1NMH1lbHNlIHZhciBlcj1ISXI7ZWxzZXt2YXIgeXI9RWUoWCxqT3IpLHZyPTA7aWYoMDw9eXIpaWYoMDx5cilpZihuMChYLFpPcikpaWYobjAoWCxRT3IpKWlmKG4wKFgscklyKSlpZihuMChYLGVJcikpaWYobjAoWCxuSXIpKWlmKG4wKFgsdElyKSlpZihuMChYLHVJcikpb3I9MSxCPTEscDA9MSx2cj0xO2Vsc2UgdmFyICQwPWlJcjtlbHNlIHZhciAkMD1mSXI7ZWxzZSB2YXIgJDA9eElyO2Vsc2UgdmFyICQwPW9JcjtlbHNlIHZhciAkMD1hSXI7ZWxzZSB2YXIgJDA9Y0lyO2Vsc2UgdmFyICQwPXNJcjtlbHNlIHZhciAkMD12SXI7ZWxzZSBpZihuMChYLEdPcikpaWYobjAoWCxNT3IpKWlmKG4wKFgsQk9yKSlpZihuMChYLHFPcikpaWYobjAoWCxVT3IpKWlmKG4wKFgsSE9yKSlpZihuMChYLFhPcikpb3I9MSxCPTEscDA9MSx2cj0xO2Vsc2UgdmFyICQwPVlPcjtlbHNlIHZhciAkMD1WT3I7ZWxzZSB2YXIgJDA9ek9yO2Vsc2UgdmFyICQwPUtPcjtlbHNlIHZhciAkMD1XT3I7ZWxzZSB2YXIgJDA9Sk9yO2Vsc2UgdmFyICQwPSRPcjtpZighdnIpdmFyIGVyPSQwfWlmKCFwMCl2YXIgRXI9ZXJ9ZWxzZSB2YXIgRXI9WElyO2Vsc2V7dmFyIE1yPUVlKFgsT1RyKSxCcj0wO2lmKDA8PU1yKWlmKDA8TXIpe3ZhciBxcj1FZShYLGlPciksanI9MDtpZigwPD1xcilpZigwPHFyKWlmKG4wKFgsZE9yKSlpZihuMChYLGtPcikpaWYobjAoWCx3T3IpKWlmKG4wKFgsRU9yKSlpZihuMChYLFNPcikpaWYobjAoWCxnT3IpKWlmKG4wKFgsRk9yKSlvcj0xLEI9MSxCcj0xLGpyPTE7ZWxzZSB2YXIgJHI9VE9yO2Vsc2UgdmFyICRyPU9PcjtlbHNlIHZhciAkcj1JT3I7ZWxzZSB2YXIgJHI9QU9yO2Vsc2UgdmFyICRyPU5PcjtlbHNlIHZhciAkcj1DT3I7ZWxzZSB2YXIgJHI9UE9yO2Vsc2UgdmFyICRyPURPcjtlbHNlIGlmKG4wKFgsZk9yKSlpZihuMChYLHhPcikpaWYobjAoWCxvT3IpKWlmKG4wKFgsYU9yKSlpZihuMChYLGNPcikpaWYobjAoWCxzT3IpKWlmKG4wKFgsdk9yKSlvcj0xLEI9MSxCcj0xLGpyPTE7ZWxzZSB2YXIgJHI9bE9yO2Vsc2UgdmFyICRyPWJPcjtlbHNlIHZhciAkcj1wT3I7ZWxzZSB2YXIgJHI9bU9yO2Vsc2UgdmFyICRyPV9PcjtlbHNlIHZhciAkcj15T3I7ZWxzZSB2YXIgJHI9aE9yO2lmKCFqcil2YXIgbmU9JHJ9ZWxzZSB2YXIgbmU9TE9yO2Vsc2V7dmFyIFFyPUVlKFgsSVRyKSxiZT0wO2lmKDA8PVFyKWlmKDA8UXIpaWYobjAoWCxYVHIpKWlmKG4wKFgsWVRyKSlpZihuMChYLFZUcikpaWYobjAoWCx6VHIpKWlmKG4wKFgsS1RyKSlpZihuMChYLFdUcikpaWYobjAoWCxKVHIpKW9yPTEsQj0xLEJyPTEsYmU9MTtlbHNlIHZhciBhZT0kVHI7ZWxzZSB2YXIgYWU9WlRyO2Vsc2UgdmFyIGFlPVFUcjtlbHNlIHZhciBhZT1yT3I7ZWxzZSB2YXIgYWU9ZU9yO2Vsc2UgdmFyIGFlPW5PcjtlbHNlIHZhciBhZT10T3I7ZWxzZSB2YXIgYWU9dU9yO2Vsc2UgaWYobjAoWCxBVHIpKWlmKG4wKFgsTlRyKSlpZihuMChYLENUcikpaWYobjAoWCxQVHIpKWlmKG4wKFgsRFRyKSlpZihuMChYLExUcikpaWYobjAoWCxSVHIpKW9yPTEsQj0xLEJyPTEsYmU9MTtlbHNlIHZhciBhZT1qVHI7ZWxzZSB2YXIgYWU9R1RyO2Vsc2UgdmFyIGFlPU1UcjtlbHNlIHZhciBhZT1CVHI7ZWxzZSB2YXIgYWU9cVRyO2Vsc2UgdmFyIGFlPVVUcjtlbHNlIHZhciBhZT1IVHI7aWYoIWJlKXZhciBuZT1hZX1pZighQnIpdmFyIEVyPW5lfWlmKCFCKXZhciBycj1Fcn1pZighb3Ipe3ZhciBwZT1ycjtocj0xfX1lbHNle3ZhciBwZT1vQ3I7aHI9MX1lbHNle3ZhciBvZT1FZShYLFh3ciksY2U9MDtpZigwPD1vZSlpZigwPG9lKXt2YXIgZ2U9RWUoWCxhZ3IpLHEwPTA7aWYoMDw9Z2UpaWYoMDxnZSl7dmFyIEZyPUVlKFgseUZyKSxfPTA7aWYoMDw9RnIpaWYoMDxGcil7dmFyIGs9RWUoWCxXRnIpLEk9MDtpZigwPD1rKWlmKDA8aylpZihuMChYLGNUcikpaWYobjAoWCxzVHIpKWlmKG4wKFgsdlRyKSlpZihuMChYLGxUcikpaWYobjAoWCxiVHIpKWlmKG4wKFgscFRyKSljZT0xLHEwPTEsXz0xLEk9MTtlbHNlIHZhciBVPW1UcjtlbHNlIHZhciBVPV9UcjtlbHNlIHZhciBVPXlUcjtlbHNlIHZhciBVPWhUcjtlbHNlIHZhciBVPWRUcjtlbHNlIHZhciBVPWtUcjtlbHNlIHZhciBVPXdUcjtlbHNlIGlmKG4wKFgsSkZyKSlpZihuMChYLCRGcikpaWYobjAoWCxaRnIpKWlmKG4wKFgsUUZyKSlpZihuMChYLHJUcikpaWYobjAoWCxlVHIpKWlmKG4wKFgsblRyKSljZT0xLHEwPTEsXz0xLEk9MTtlbHNlIHZhciBVPXRUcjtlbHNlIHZhciBVPXVUcjtlbHNlIHZhciBVPWlUcjtlbHNlIHZhciBVPWZUcjtlbHNlIHZhciBVPXhUcjtlbHNlIHZhciBVPW9UcjtlbHNlIHZhciBVPWFUcjtpZighSSl2YXIgWT1VfWVsc2UgdmFyIFk9RVRyO2Vsc2V7dmFyIHkwPUVlKFgsaEZyKSxQMD0wO2lmKDA8PXkwKWlmKDA8eTApaWYobjAoWCxERnIpKWlmKG4wKFgsTEZyKSlpZihuMChYLFJGcikpaWYobjAoWCxqRnIpKWlmKG4wKFgsR0ZyKSlpZihuMChYLE1GcikpaWYobjAoWCxCRnIpKWNlPTEscTA9MSxfPTEsUDA9MTtlbHNlIHZhciBJMD1xRnI7ZWxzZSB2YXIgSTA9VUZyO2Vsc2UgdmFyIEkwPUhGcjtlbHNlIHZhciBJMD1YRnI7ZWxzZSB2YXIgSTA9WUZyO2Vsc2UgdmFyIEkwPVZGcjtlbHNlIHZhciBJMD16RnI7ZWxzZSB2YXIgSTA9S0ZyO2Vsc2UgaWYobjAoWCxkRnIpKWlmKG4wKFgsa0ZyKSlpZihuMChYLHdGcikpaWYobjAoWCxFRnIpKWlmKG4wKFgsU0ZyKSlpZihuMChYLGdGcikpaWYobjAoWCxGRnIpKWNlPTEscTA9MSxfPTEsUDA9MTtlbHNlIHZhciBJMD1URnI7ZWxzZSB2YXIgSTA9T0ZyO2Vsc2UgdmFyIEkwPUlGcjtlbHNlIHZhciBJMD1BRnI7ZWxzZSB2YXIgSTA9TkZyO2Vsc2UgdmFyIEkwPUNGcjtlbHNlIHZhciBJMD1QRnI7aWYoIVAwKXZhciBZPUkwfWlmKCFfKXZhciBEPVl9ZWxzZSB2YXIgRD1TVHI7ZWxzZXt2YXIgdTA9RWUoWCxjZ3IpLFgwPTA7aWYoMDw9dTApaWYoMDx1MCl7dmFyIEowPUVlKFgscWdyKSxpcj0wO2lmKDA8PUowKWlmKDA8SjApaWYobjAoWCxuRnIpKWlmKG4wKFgsdEZyKSlpZihuMChYLHVGcikpaWYobjAoWCxpRnIpKWlmKG4wKFgsZkZyKSlpZihuMChYLHhGcikpaWYobjAoWCxvRnIpKWNlPTEscTA9MSxYMD0xLGlyPTE7ZWxzZSB2YXIgUTA9YUZyO2Vsc2UgdmFyIFEwPWNGcjtlbHNlIHZhciBRMD1zRnI7ZWxzZSB2YXIgUTA9dkZyO2Vsc2UgdmFyIFEwPWxGcjtlbHNlIHZhciBRMD1iRnI7ZWxzZSB2YXIgUTA9cEZyO2Vsc2UgdmFyIFEwPW1GcjtlbHNlIGlmKG4wKFgsVWdyKSlpZihuMChYLEhncikpaWYobjAoWCxYZ3IpKWlmKG4wKFgsWWdyKSlpZihuMChYLFZncikpaWYobjAoWCx6Z3IpKWlmKG4wKFgsS2dyKSljZT0xLHEwPTEsWDA9MSxpcj0xO2Vsc2UgdmFyIFEwPVdncjtlbHNlIHZhciBRMD1KZ3I7ZWxzZSB2YXIgUTA9JGdyO2Vsc2UgdmFyIFEwPVpncjtlbHNlIHZhciBRMD1RZ3I7ZWxzZSB2YXIgUTA9ckZyO2Vsc2UgdmFyIFEwPWVGcjtpZighaXIpdmFyIEYwPVEwfWVsc2UgdmFyIEYwPV9GcjtlbHNle3ZhciBTcj1FZShYLHNnciksbXI9MDtpZigwPD1TcilpZigwPFNyKWlmKG4wKFgsRmdyKSlpZihuMChYLFRncikpaWYobjAoWCxPZ3IpKWlmKG4wKFgsSWdyKSlpZihuMChYLEFncikpaWYobjAoWCxOZ3IpKWlmKG4wKFgsQ2dyKSljZT0xLHEwPTEsWDA9MSxtcj0xO2Vsc2UgdmFyIENyPVBncjtlbHNlIHZhciBDcj1EZ3I7ZWxzZSB2YXIgQ3I9TGdyO2Vsc2UgdmFyIENyPVJncjtlbHNlIHZhciBDcj1qZ3I7ZWxzZSB2YXIgQ3I9R2dyO2Vsc2UgdmFyIENyPU1ncjtlbHNlIHZhciBDcj1CZ3I7ZWxzZSBpZihuMChYLHZncikpaWYobjAoWCxsZ3IpKWlmKG4wKFgsYmdyKSlpZihuMChYLHBncikpaWYobjAoWCxtZ3IpKWlmKG4wKFgsX2dyKSlpZihuMChYLHlncikpY2U9MSxxMD0xLFgwPTEsbXI9MTtlbHNlIHZhciBDcj1oZ3I7ZWxzZSB2YXIgQ3I9ZGdyO2Vsc2UgdmFyIENyPWtncjtlbHNlIHZhciBDcj13Z3I7ZWxzZSB2YXIgQ3I9RWdyO2Vsc2UgdmFyIENyPVNncjtlbHNlIHZhciBDcj1nZ3I7aWYoIW1yKXZhciBGMD1Dcn1pZighWDApdmFyIEQ9RjB9aWYoIXEwKXZhciBzcj1EfWVsc2UgdmFyIHNyPWdUcjtlbHNle3ZhciBQcj1FZShYLFl3ciksSzA9MDtpZigwPD1QcilpZigwPFByKXt2YXIgVXI9RWUoWCxyU3IpLGgwPTA7aWYoMDw9VXIpaWYoMDxVcil7dmFyIEtyPUVlKFgsTlNyKSxyZT0wO2lmKDA8PUtyKWlmKDA8S3IpaWYobjAoWCxWU3IpKWlmKG4wKFgselNyKSlpZihuMChYLEtTcikpaWYobjAoWCxXU3IpKWlmKG4wKFgsSlNyKSlpZihuMChYLCRTcikpaWYobjAoWCxaU3IpKWNlPTEsSzA9MSxoMD0xLHJlPTE7ZWxzZSB2YXIgeGU9UVNyO2Vsc2UgdmFyIHhlPXJncjtlbHNlIHZhciB4ZT1lZ3I7ZWxzZSB2YXIgeGU9bmdyO2Vsc2UgdmFyIHhlPXRncjtlbHNlIHZhciB4ZT11Z3I7ZWxzZSB2YXIgeGU9aWdyO2Vsc2UgdmFyIHhlPWZncjtlbHNlIGlmKG4wKFgsQ1NyKSlpZihuMChYLFBTcikpaWYobjAoWCxEU3IpKWlmKG4wKFgsTFNyKSlpZihuMChYLFJTcikpaWYobjAoWCxqU3IpKWlmKG4wKFgsR1NyKSljZT0xLEswPTEsaDA9MSxyZT0xO2Vsc2UgdmFyIHhlPU1TcjtlbHNlIHZhciB4ZT1CU3I7ZWxzZSB2YXIgeGU9cVNyO2Vsc2UgdmFyIHhlPVVTcjtlbHNlIHZhciB4ZT1IU3I7ZWxzZSB2YXIgeGU9WFNyO2Vsc2UgdmFyIHhlPVlTcjtpZighcmUpdmFyIFJlPXhlfWVsc2UgdmFyIFJlPXhncjtlbHNle3ZhciB2ZT1FZShYLGVTciksSWU9MDtpZigwPD12ZSlpZigwPHZlKWlmKG4wKFgsbVNyKSlpZihuMChYLF9TcikpaWYobjAoWCx5U3IpKWlmKG4wKFgsaFNyKSlpZihuMChYLGRTcikpaWYobjAoWCxrU3IpKWlmKG4wKFgsd1NyKSljZT0xLEswPTEsaDA9MSxJZT0xO2Vsc2UgdmFyIEdlPUVTcjtlbHNlIHZhciBHZT1TU3I7ZWxzZSB2YXIgR2U9Z1NyO2Vsc2UgdmFyIEdlPUZTcjtlbHNlIHZhciBHZT1UU3I7ZWxzZSB2YXIgR2U9T1NyO2Vsc2UgdmFyIEdlPUlTcjtlbHNlIHZhciBHZT1BU3I7ZWxzZSBpZihuMChYLG5TcikpaWYobjAoWCx0U3IpKWlmKG4wKFgsdVNyKSlpZihuMChYLGlTcikpaWYobjAoWCxmU3IpKWlmKG4wKFgseFNyKSlpZihuMChYLG9TcikpY2U9MSxLMD0xLGgwPTEsSWU9MTtlbHNlIHZhciBHZT1hU3I7ZWxzZSB2YXIgR2U9Y1NyO2Vsc2UgdmFyIEdlPXNTcjtlbHNlIHZhciBHZT12U3I7ZWxzZSB2YXIgR2U9bFNyO2Vsc2UgdmFyIEdlPWJTcjtlbHNlIHZhciBHZT1wU3I7aWYoIUllKXZhciBSZT1HZX1pZighaDApdmFyIE1lPVJlfWVsc2UgdmFyIE1lPW9ncjtlbHNle3ZhciBhbj1FZShYLFZ3ciksV2U9MDtpZigwPD1hbilpZigwPGFuKXt2YXIgQWU9RWUoWCxFRXIpLGNuPTA7aWYoMDw9QWUpaWYoMDxBZSlpZihuMChYLEdFcikpaWYobjAoWCxNRXIpKWlmKG4wKFgsQkVyKSlpZihuMChYLHFFcikpaWYobjAoWCxVRXIpKWlmKG4wKFgsSEVyKSlpZihuMChYLFhFcikpY2U9MSxLMD0xLFdlPTEsY249MTtlbHNlIHZhciBybj1ZRXI7ZWxzZSB2YXIgcm49VkVyO2Vsc2UgdmFyIHJuPXpFcjtlbHNlIHZhciBybj1LRXI7ZWxzZSB2YXIgcm49V0VyO2Vsc2UgdmFyIHJuPUpFcjtlbHNlIHZhciBybj0kRXI7ZWxzZSB2YXIgcm49WkVyO2Vsc2UgaWYobjAoWCxTRXIpKWlmKG4wKFgsZ0VyKSlpZihuMChYLEZFcikpaWYobjAoWCxURXIpKWlmKG4wKFgsT0VyKSlpZihuMChYLElFcikpaWYobjAoWCxBRXIpKWNlPTEsSzA9MSxXZT0xLGNuPTE7ZWxzZSB2YXIgcm49TkVyO2Vsc2UgdmFyIHJuPUNFcjtlbHNlIHZhciBybj1QRXI7ZWxzZSB2YXIgcm49REVyO2Vsc2UgdmFyIHJuPUxFcjtlbHNlIHZhciBybj1SRXI7ZWxzZSB2YXIgcm49akVyO2lmKCFjbil2YXIga249cm59ZWxzZSB2YXIga249UUVyO2Vsc2V7dmFyIHZuPUVlKFgsendyKSxOZT0wO2lmKDA8PXZuKWlmKDA8dm4paWYobjAoWCxvRXIpKWlmKG4wKFgsYUVyKSlpZihuMChYLGNFcikpaWYobjAoWCxzRXIpKWlmKG4wKFgsdkVyKSlpZihuMChYLGxFcikpaWYobjAoWCxiRXIpKWNlPTEsSzA9MSxXZT0xLE5lPTE7ZWxzZSB2YXIgSmU9cEVyO2Vsc2UgdmFyIEplPW1FcjtlbHNlIHZhciBKZT1fRXI7ZWxzZSB2YXIgSmU9eUVyO2Vsc2UgdmFyIEplPWhFcjtlbHNlIHZhciBKZT1kRXI7ZWxzZSB2YXIgSmU9a0VyO2Vsc2UgdmFyIEplPXdFcjtlbHNlIGlmKG4wKFgsS3dyKSlpZihuMChYLFd3cikpaWYobjAoWCxKd3IpKWlmKG4wKFgsJHdyKSlpZihuMChYLFp3cikpaWYobjAoWCxRd3IpKWlmKG4wKFgsckVyKSljZT0xLEswPTEsV2U9MSxOZT0xO2Vsc2UgdmFyIEplPWVFcjtlbHNlIHZhciBKZT1uRXI7ZWxzZSB2YXIgSmU9dEVyO2Vsc2UgdmFyIEplPXVFcjtlbHNlIHZhciBKZT1pRXI7ZWxzZSB2YXIgSmU9ZkVyO2Vsc2UgdmFyIEplPXhFcjtpZighTmUpdmFyIGtuPUplfWlmKCFXZSl2YXIgTWU9a259aWYoIUswKXZhciBzcj1NZX1pZighY2Upe3ZhciBwZT1zcjtocj0xfX12YXIgZW49aHI/cGU6MDtlbj9TMShlLGVuWzFdKTpobihlLFRlKGNDcixUZShYLGFDcikpKTtjb250aW51ZTtkZWZhdWx0OnZhciBfbj1TZSh4KTtobihpLF9uKSxobihlLF9uKTtjb250aW51ZX19fWZ1bmN0aW9uIExlZSh0LG4pe2duKG4pO3ZhciBlPWoobiksaT1lZjxlP3Z3PGU/LTE6VWs8ZT9DMzxlP0J3PGU/RUU8ZT9XeTxlPzE6NjpKZDxlP2xFPGU/dUY8ZT8xOjY6WlQ8ZT8xOjY6V0Y8ZT9iQTxlPzE6NjpzSTxlPzE6NjpDNjxlP0U0PGU/eDY8ZT9WODxlP2ozPGU/cjM8ZT9DTzxlPzE6NjpMSTxlPzE6NjpJeTxlP2hnPGU/MTo2Ok13PGU/MTo2OkwzPGU/dzg8ZT9qZzxlPzE6NjokNDxlPzE6NjpXODxlP3pUPGU/MTo2OmtrPGU/MTo2Ok80PGU/WU88ZT9sMzxlP1FrPGU/MTo2OmZrPGU/MTo2OnhwPGU/VjY8ZT8xOjY6VGQ8ZT8xOjY6Rzg8ZT9zNDxlP3Q2PGU/MTo2OnE2PGU/MTo2OkI2PGU/UzQ8ZT8xOjY6Zm48ZT8xOjY6TEU8ZT9NNDxlP2c2PGU/U0Y8ZT9pODxlPzE6NjpkODxlPzE6NjpGNDxlP0pGPGU/MTo2Om1oPGU/MTo2OlU2PGU/bjg8ZT9zMzxlPzE6NjpTODxlPzE6NjpCUzxlP0w4PGU/MTo2OkszPGU/MTo2Om04PGU/Zjg8ZT94ODxlP3czPGU/MTo2Ol82PGU/MTo2OnM2PGU/b0Y8ZT8xOjY6Wk88ZT8xOjY6YTM8ZT9EUzxlP2U4PGU/MTo2Omc4PGU/MTo2OkozPGU/c0Y8ZT8xOjY6aWc8ZT8xOjY6aXc8ZT9FazxlP3drPGU/cWs8ZT9GVDxlP1ZrPGU/MTo2OnVBPGU/MTo2OmR5PGU/VlM8ZT8xOjY6X2Q8ZT8xOjY6VGg8ZT9wRjxlP0ZFPGU/MTo2Olp3PGU/MTo2OlN5PGU/TF88ZT8xOjY6Q0U8ZT8xOjY6TEY8ZT9WdzxlP015PGU/cnc8ZT8xOjY6WEk8ZT8xOjY6ak88ZT9hcDxlPzE6NjpqVDxlPzE6NjpPdDxlP09BPGU/Z0E8ZT8xOjY6MTo2OmM2PGU/dzY8ZT9sNjxlP2szPGU/VkU8ZT8xOjY6cXc8ZT8xOjY6djQ8ZT9uRTxlPzE6NjpUeTxlPzE6NjpjMzxlP1Y0PGU/ZWc8ZT8xOjY6cUY8ZT8xOjY6WDQ8ZT9fVDxlPzE6NjpPeTxlPzE6NjpENjxlP0Q0PGU/VjM8ZT9NUzxlPzE6NjpXdzxlPzE6NjpjeTxlP2p5PGU/MTo2OlZUPGU/MTo2OkI0PGU/Ymg8ZT9KVDxlPzE6NjpHMzxlPzE6NjpyNjxlP3NPPGU/MTo2OlpFPGU/MTo2OnVUPGU/WjQ8ZT9ZZDxlP1E2PGU/TDQ8ZT9ONjxlP3ZwPGU/RF88ZT8xOjY6UGQ8ZT8xOjY6cGQ8ZT9SZzxlPzE6NjpPUzxlPzE6NjpHNjxlP0kzPGU/dWs8ZT8xOjY6Y0U8ZT8xOjY6bDg8ZT9sNDxlPzE6NjpyaDxlPzE6NjpNMzxlP0ZTPGU/TkU8ZT9hVDxlPzE6NjprVDxlPzE6Njp1UzxlP2QzPGU/MTo2OnpkPGU/MTo2Omx5PGU/VDY8ZT9QZzxlPzE6Njp2eTxlPzE6NjpMTzxlP3lGPGU/MTo2OllGPGU/MTo2OkRJPGU/YXU8ZT9qRjxlP0FoPGU/QU88ZT8xOjY6Q2Q8ZT8xOjY6cWg8ZT9BUzxlPzE6NjpsQTxlPzE6NjpjTzxlP0FJPGU/eEk8ZT8xOjY6Ql88ZT8xOjY6aFM8ZT9mVDxlPzE6NjptZzxlPzE6NjpOTzxlP053PGU/WWg8ZT9sdzxlPzE6NjpRZzxlPzE6NjpWZzxlP0xrPGU/MTo2OnFPPGU/MTo2OmlTPGU/YjY8ZT9oNjxlPzE6NjokRjxlPzE6NjpwaDxlP3JUPGU/MTo2OkhTPGU/MTo2OnpPPGU/Q2s8ZT95UzxlP0l3PGU/Q0k8ZT9LZzxlPzE6NjpWTzxlPzE6NjpNazxlP2tzPGU/MTo2OlBGPGU/MTo2OmtkPGU/VFM8ZT93STxlPzE6Njp4ZzxlPzE6NjpSZDxlP2RoPGU/MTo2Om9JPGU/MTo2Om9UPGU/bGc8ZT90RjxlP0tJPGU/MTo2OnBrPGU/MTo2OkdfPGU/a3c8ZT8xOjY6UUY8ZT8xOjY6ams8ZT9GTzxlP21BPGU/MTo2Ol9nPGU/MTo2OldFPGU/bEY8ZT8xOjY6TUY8ZT8xOjY6aDQ8ZT9oMzxlP3ZUPGU/akk8ZT9tUzxlPzE6NjpjQTxlPzE6NjpERTxlP3prPGU/MTo2OkxnPGU/MTo2OkFUPGU/UjY8ZT9iazxlPzE6NjppVDxlPzE6NjpVUzxlP0JUPGU/MTo2OnZFPGU/MTo2OldjPGU/U2s8ZT9EMzxlP1hnPGU/MTo2OmZkPGU/MTo2OklGPGU/bGQ8ZT8xOjY6bkE8ZT8xOjY6QkU8ZT9XMzxlP3N5PGU/MTo2OmtJPGU/MTo2OlZGPGU/ZlM8ZT8xOjY6UDQ8ZT8xOjY6dlM8ZT9qdzxlP2lrPGU/aE88ZT9pSTxlP2JnPGU/TmQ8ZT8xOjY6dTM8ZT8xOjY6c0U8ZT9MZDxlPzE6NjpYazxlPzE6Njp1cDxlP2hoPGU/TTg8ZT8xOjY6cDM8ZT8xOjY6RXc8ZT9wRTxlPzE6NjpCZzxlPzE6NjpieTxlP1prPGU/JFQ8ZT96RjxlPzE6NjpCZDxlPzE6NjokazxlP1RJPGU/MTo2OnBPPGU/MTo2OnNTPGU/Uk88ZT9rQTxlPzE6Njp3QTxlPzE6NjpmZzxlP3FJPGU/MTo2OmRTPGU/MTo2OmhJPGU/Tkk8ZT9uUzxlP1h5PGU/Sl88ZT8xOjY6YlQ8ZT8xOjY6JE88ZT9FZzxlPzE6NjpvQTxlPzE6Njp1RTxlP0VUPGU/ZGc8ZT8xOjY6VFQ8ZT8xOjY6QXk8ZT91ODxlPzE6NjpaUzxlPzE6NjpHaDxlP01fPGU/U088ZT9saDxlPzE6NjpYRTxlPzE6NjpRMzxlP1o2PGU/MTo2Ok9kPGU/MTo2Olc2PGU/UkY8ZT9xeTxlPzE6NjpOazxlPzE6NjpQRTxlP1RnPGU/MTo2Ok9JPGU/MTo2OkE4PGU/UF88ZT9DNDxlPyRnPGU/VWg8ZT9XUzxlPzE6NjpqNjxlPzE6NjpfRTxlP2ZJPGU/MTo2OlB3PGU/MTo2OmYzPGU/YTg8ZT9VRjxlPzE6NjpMdzxlPzE6NjptazxlP2FJPGU/MTo2Onl5PGU/MTo2Ok84PGU/dUk8ZT91NjxlP2t5PGU/MTo2OkdJPGU/MTo2OmM4PGU/T3c8ZT8xOjY6YkU8ZT8xOjY6eTM8ZT9mcDxlP2VFPGU/MTo2Okk4PGU/MTo2OmN3PGU/S0Y8ZT8xOjY6Vkk8ZT8xOjY6emg8ZT9RTzxlP2g4PGU/aHk8ZT9ldzxlPzE6NjppMzxlPzE6NjpwSTxlP2RBPGU/MTo2OnFkPGU/MTo2OmtnPGU/aUU8ZT9UTzxlPzE6NjpYNjxlPzE6NjpSdzxlP2F3PGU/MTo2OkYzPGU/MTo2OklrPGU/T0Y8ZT9MeTxlP200PGU/MTo2OmNkPGU/MTo2OnpnPGU/Sms8ZT8xOjY6YVM8ZT8xOjY6QjM8ZT9JTzxlP2h3PGU/MTo2Om1FPGU/MTo2OiRTPGU/UUk8ZT8xOjY6RkE8ZT8xOjY6b2Q8ZT9LRTxlP1JrPGU/SjY8ZT9NZDxlP3hGPGU/Wmc8ZT9zaDxlP2VUPGU/MTo2OllJPGU/MTo2OlJFPGU/T1Q8ZT8xOjY6Sjg8ZT8xOjY6SUE8ZT9kRTxlP3FUPGU/MTo2OmhkPGU/MTo2OklkPGU/TWg8ZT8xOjY6X1M8ZT8xOjY6RUE8ZT9QTzxlP0hnPGU/c2c8ZT8xOjY6VWc8ZT8xOjY6WHc8ZT90ZDxlPzE6NjpEZzxlPzE6NjpBZzxlP2JTPGU/V2Q8ZT8xOjY6Rmc8ZT8xOjY6dEE8ZT93VDxlPzE6NjpEazxlPzE6NjpyUzxlP1o4PGU/Skk8ZT9BRTxlP01FPGU/MTo2OnBBPGU/MTo2OkVPPGU/R3k8ZT8xOjY6ZkE8ZT8xOjY6eEE8ZT9iNDxlP19rPGU/MTo2Om9PPGU/MTo2OndkPGU/Uzc8ZT8xOjY6JGQ8ZT8xOjY6WDg8ZT96XzxlP0ZkPGU/UGg8ZT8xOjY6ZFQ8ZT8xOjY6RGQ8ZT9PazxlPzE6NjphaDxlPzE6NjpuaDxlP2FnPGU/JHc8ZT8xOjY6V1Q8ZT8xOjY6UVM8ZT9GdzxlPzE6NjpMVDxlPzE6NjpJaDxlP3ZrPGU/RW48ZT9wODxlP2dUPGU/TTY8ZT8xOjY6Z2g8ZT8xOjY6SjQ8ZT9RXzxlPzE6NjpvcDxlPzE6Njp2TzxlP0dFPGU/Y2g8ZT8xOjY6cV88ZT8xOjY6RVM8ZT9VVDxlPzE6NjpqUzxlPzE6NjpVdzxlP3R5PGU/c0E8ZT9WaDxlPzE6NjpzVDxlPzE6NjppRjxlP1pkPGU/MTo2OkZJPGU/MTo2OnhPPGU/dGg8ZT9uZzxlPzE6NjpiZDxlPzE6NjppTzxlP19PPGU/MTo2OmVPPGU/MTo2OklTPGU/ekU8ZT9mTzxlP2NrPGU/eGg8ZT8xOjY6dWQ8ZT8xOjY6SlM8ZT9fdzxlPzE6NjpGeTxlPzE6Njp2QTxlPyRFPGU/S1Q8ZT8xOjY6ckk8ZT8xOjY6dXk8ZT9UdzxlPzE6NjoxOm5UPGU/WjM8ZT9lazxlPzY6JHk8ZT8xOjY6R0Y8ZT9RdzxlPzE6NjpzazxlPzE6Njp2ZzxlP25PPGU/dEk8ZT8xOjY6R088ZT8xOjY6Unk8ZT8xOjY6RDg8ZT9FZDxlP3h3PGU/T2g8ZT9yQTxlPzY6JGg8ZT90VDxlPzE6Njp2RjxlPzE6NjpReTxlP3pJPGU/cnk8ZT8xOjY6eWg8ZT8xOjY6SEU8ZT9KaDxlPzE6NjpoRjxlPzE6NjpycDxlP3o0PGU/UzY8ZT9weTxlPzE6NjpyZzxlPzE6NjokODxlP3lPPGU/MTo2OkJrPGU/MTo2OmdrPGU/VTg8ZT9FRjxlPzE6Njp3eTxlPzE6NjpvZzxlP1RrPGU/MTo2OndFPGU/MTo2Okd3PGU/JF88ZT9leTxlP3BTPGU/b0U8ZT8xOjY6MTo2OmR3PGU/NjpRNDxlP0lUPGU/MTo2OnlnPGU/MTo2OmVJPGU/dDM8ZT9NYTxlP0RvPGU/MToyOkJJPGU/MTo2Om93PGU/TVQ8ZT8xOjY6WVM8ZT8xOjY6eUk8ZT90UzxlP1poPGU/MTo2OkNUPGU/MTo2OkdUPGU/S3c8ZT8xOjY6U0k8ZT8xOjY6VUk8ZT90azxlP1FuPGU/UjQ8ZT9xMzxlP2lkPGU/MTo2Ol9GPGU/MTo2OnozPGU/TDY8ZT8xOjY6Zmg8ZT8xOjY6UFQ8ZT9pcDxlP3V3PGU/MTo2OmVTPGU/MTo2OnRPPGU/ZTM8ZT8xOjY6b2g8ZT8xOjY6ZGs8ZT96UzxlP1FoPGU/dWc8ZT8xOjY6aXk8ZT8xOjY6V2s8ZT9LZDxlPzE6NjpURTxlPzE6NjpkZDxlP215PGU/Y0Y8ZT8xOjY6X0E8ZT8xOjY6Tnk8ZT8xOjY6WGQ8ZT9IMzxlP28zPGU/Snc8ZT8xOjY6YXY8ZT82OlJUPGU/MTo2OmdGPGU/azY8ZT9ORjxlPzE6NjpXaDxlPzE6NjpHazxlP0RoPGU/MTo2OlpJPGU/MTo2OlZkPGU/Y1M8ZT9sVDxlP2NJPGU/MTo2OjE6RHk8ZT82Okp5PGU/MTo2OkZGPGU/c2Q8ZT8xOjY6WFQ8ZT9PTzxlPzE6NjphTzxlPzE6Njp3aDxlP0Y4PGU/V188ZT91aDxlP2tPPGU/ZWQ8ZT9FSTxlP0F3PGU/MTo2OnlBPGU/MTo2OkJoPGU/Znk8ZT8xOjY6YWs8ZT8xOjY6Q0Y8ZT9UQTxlP2xwPGU/MTo2OjE6Njp5VDxlP0hkPGU/a1M8ZT96eTxlPzE6Njp3UzxlPzE6Njp2NjxlP0hrPGU/MTo2OmtFPGU/MTo2OlN3PGU/cHc8ZT8xOjY6X2g8ZT9XTzxlPzE6NjprODxlPzE6NjprRjxlP0RPPGU/WEY8ZT9neTxlP1NkPGU/MTo2OmVBPGU/MTo2OlpfPGU/SkU8ZT8xOjY6YXk8ZT8xOjY6S3k8ZT9fODxlP1V5PGU/MTo2Om4zPGU/MTo2OnJFPGU/b3k8ZT8xOjY6Y2c8ZT8xOjY6WXk8ZT9TQTxlP3hTPGU/ckY8ZT8xOjY6WGg8ZT8xOjY6bUk8ZT9sazxlPzE6Njp1TzxlPzE6NjpQUzxlJiZhQTxlPzE6Njp5azxlP1JoPGU/dGc8ZT9uazxlPzY6Wnk8ZT9iSTxlPzE6NjpDaDxlPzE6Njp4RTxlP29rPGU/Vl88ZT8xOjY6MTo2Ok9nPGU/VU88ZSYmb1M8ZT8xOjY6Ync8ZT9yTzxlP0xoPGU/MTo2OjE6ZEY8ZT82OjE6RWg8ZT9nRTxlP1UzPGU/Njp0dzxlPzE6NjpkSTxlP1FkPGU/d088ZT8xOjY6Ul88ZT8xOjY6U2g8ZT8xOjY6QkY8ZT9nZzxlP0FkPGU/MTo2OlhTPGU/MTo2OktrPGU/WUU8ZT82OmloPGU/MTo2OlVfPGU/eUU8ZT8xOjY6SHQ8ZT8xOjY6R1M8ZT9qRTxlP2RPPGU/cTQ8ZT9FeTxlP0U4PGU/Ukk8ZT8xOjY6bkY8ZT8xOjY6SEY8ZT8xOjY6d3c8ZT9FMzxlP2RlPGU/MTo2OjE6NjpJZzxlP0dkPGU/WF88ZT9IXzxlPzE6NjoxOjY6SHc8ZT9UMzxlP3ZkPGU/MTo2OmZGPGU/MTo2OndnPGU/MTo2Ono4PGU/ajg8ZT9FbzxlP1BJPGU/NjpReDxlPzE6MjpGNjxlP0J5PGU/MTo2OklFPGU/MTo2Oks4PGU/ejY8ZT9DZzxlPzE6NjpjVDxlPzE6NjpvODxlP3R0PGU/MTo2OkFrPGU/MTo2Ok5TPGU/dEU8ZT9qNDxlP05nPGU/MTo2OiRJPGU/MTo2OlA2PGU/VEY8ZT8xOjY6cDQ8ZT8xOjY6X0k8ZT9mRTxlP2dJPGU/MTo2Ok4zPGU/MTo2Okc0PGU/Qjg8ZT8xOjY6U2c8ZT8xOjY6Tjg8ZT9RRTxlP2FFPGU/WWs8ZT9wVDxlP0tfPGU/MTo2OndGPGU/MTo2OlVFPGU/MTo2OnJkPGU/dkk8ZT82OjE6NjpNTzxlP213PGU/WVQ8ZT9zODxlPzE6NjpBQTxlPzE6NjpZdzxlP1lfPGU/MTo2OjE6NjpHZzxlP0pPPGU/JDM8ZT9zcDxlP1A4PGU/MTo2OlE4PGU/MTo2OmdyPGU/dDg8ZT8xOjY6MTpnNDxlP0tTPGU/NjptNjxlPzE6NjptRjxlP0N5PGU/MTo2OlIzPGU/MTo2OlBrPGU/SEk8ZT9RVDxlP3gzPGU/MTo2Om1PPGU/MTo2OlB5PGU/TzM8ZT8xOjY6ZXA8ZT8xOjY6bW88ZT94YzxlP294PGU/MToyOmZvPGU/MToyOiR1PGU/SHU8ZT8xOjM6Q288ZT8xOjI6VnIoRExyLGUrMXwwKS0xfDA7aWYoMTQ8aT4+PjApdmFyIHg9cShuKTtlbHNlIHN3aXRjaChpKXtjYXNlIDA6dmFyIHg9MDticmVhaztjYXNlIDE6dmFyIHg9MTQ7YnJlYWs7Y2FzZSAyOmlmKEcwKG4sMiksamMoaihuKSk9PT0wKXtmb3IoOzspaWYoRzAobiwyKSxqYyhqKG4pKSE9PTApe3ZhciB4PXEobik7YnJlYWt9fWVsc2UgdmFyIHg9cShuKTticmVhaztjYXNlIDM6dmFyIHg9MTticmVhaztjYXNlIDQ6RzAobiwxKTt2YXIgeD14aShqKG4pKT09PTA/MTpxKG4pO2JyZWFrO2Nhc2UgNTp2YXIgeD0xMjticmVhaztjYXNlIDY6dmFyIHg9MTM7YnJlYWs7Y2FzZSA3OnZhciB4PTEwO2JyZWFrO2Nhc2UgODpHMChuLDYpO3ZhciBjPWQ5KGoobikpLHg9Yz09PTA/NDpjPT09MT8zOnEobik7YnJlYWs7Y2FzZSA5OnZhciB4PTk7YnJlYWs7Y2FzZSAxMDp2YXIgeD01O2JyZWFrO2Nhc2UgMTE6dmFyIHg9MTE7YnJlYWs7Y2FzZSAxMjp2YXIgeD03O2JyZWFrO2Nhc2UgMTM6aWYoRzAobiwxNCksTHMoaihuKSk9PT0wKXt2YXIgcz1MMShqKG4pKTtpZihzPT09MCl2YXIgeD1ObihqKG4pKT09PTAmJk5uKGoobikpPT09MCYmTm4oaihuKSk9PT0wPzEzOnEobik7ZWxzZSBpZihzPT09MSYmTm4oaihuKSk9PT0wKWZvcig7Oyl7dmFyIHA9QTEoaihuKSk7aWYocCE9PTApe3ZhciB4PXA9PT0xPzEzOnEobik7YnJlYWt9fWVsc2UgdmFyIHg9cShuKX1lbHNlIHZhciB4PXEobik7YnJlYWs7ZGVmYXVsdDp2YXIgeD04fWlmKDE0PHg+Pj4wKXJldHVybiBrZShKQ3IpO3N3aXRjaCh4KXtjYXNlIDA6cmV0dXJuWzAsdCxQbl07Y2FzZSAxOnJldHVyblsyLGQ3KHQsbildO2Nhc2UgMjpyZXR1cm5bMix0XTtjYXNlIDM6dmFyIHk9anUodCxuKSxUPSRuKHpuKSxFPWUyKHQsVCxuKSxkPUVbMV07cmV0dXJuWzEsZCxTaShkLHksRVsyXSxULDApXTtjYXNlIDQ6dmFyIHc9anUodCxuKSxHPSRuKHpuKSxBPVIxKHQsRyxuKSxTPUFbMV07cmV0dXJuWzEsUyxTaShTLHcsQVsyXSxHLDEpXTtjYXNlIDU6cmV0dXJuWzAsdCw5OF07Y2FzZSA2OnJldHVyblswLHQsajddO2Nhc2UgNzpyZXR1cm5bMCx0LDk5XTtjYXNlIDg6cmV0dXJuWzAsdCwwXTtjYXNlIDk6cmV0dXJuWzAsdCw4Nl07Y2FzZSAxMDpyZXR1cm5bMCx0LDEwXTtjYXNlIDExOnJldHVyblswLHQsODJdO2Nhc2UgMTI6dmFyIE09U2UobiksSz1qdSh0LG4pLFY9JG4oem4pLGYwPSRuKHpuKTtobihmMCxNKTt2YXIgbTA9cW4oTSwkQ3IpPzA6MSxrMD1wTCh0LG0wLFYsZjAsbiksZzA9aDcoazAsbik7aG4oZjAsTSk7dmFyIGUwPU10KFYpLHgwPU10KGYwKTtyZXR1cm5bMCxrMCxbOCxbMCxrMFsxXSxLLGcwXSxlMCx4MF1dO2Nhc2UgMTM6Zm9yKHZhciBsPW5bNl07Oyl7Z24obik7dmFyIGMwPWoobiksdDA9SW48YzA/MTpWcihvUnIsYzArMXwwKS0xfDA7aWYoMzx0MD4+PjApdmFyIG8wPXEobik7ZWxzZSBzd2l0Y2godDApe2Nhc2UgMDp2YXIgbzA9MTticmVhaztjYXNlIDE6dmFyIG8wPTI7YnJlYWs7Y2FzZSAyOnZhciBvMD0wO2JyZWFrO2RlZmF1bHQ6aWYoRzAobiwyKSxMcyhqKG4pKT09PTApe3ZhciB3MD1MMShqKG4pKTtpZih3MD09PTApaWYoTm4oaihuKSk9PT0wJiZObihqKG4pKT09PTApdmFyIF8wPU5uKGoobikpIT09MD8xOjAsbzA9XzAmJnEobik7ZWxzZSB2YXIgbzA9cShuKTtlbHNlIGlmKHcwPT09MSYmTm4oaihuKSk9PT0wKWZvcig7Oyl7dmFyIEUwPUExKGoobikpO2lmKEUwIT09MCl7dmFyIFUwPUUwIT09MT8xOjAsbzA9VTAmJnEobik7YnJlYWt9fWVsc2UgdmFyIG8wPXEobil9ZWxzZSB2YXIgbzA9cShuKX1pZigyPG8wPj4+MCl0aHJvd1swLFNuLHZ3cl07c3dpdGNoKG8wKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6aWYobkwoYnIwKG4pKSljb250aW51ZTttcjAobiwxKX12YXIgYj1uWzNdO3RMKG4sbCk7dmFyIFIwPUxsKG4pLFg9SGwodCxsLGIpO3JldHVyblswLHQsWzcsdUwoUjApLFhdXX1kZWZhdWx0OnJldHVyblswLHQsWzYsU2UobildXX19ZnVuY3Rpb24gUmVlKHQsbil7Z24obik7dmFyIGU9aihuKTtpZigtMTxlKWlmKGVmPGUpaWYoRW88ZSlpZihNYTxlKXZhciBpPWU8PURvPzE6MCxUPWkmJjE7ZWxzZSB2YXIgeD1lPD1ReD8xOjAsVD14JiYxO2Vsc2UgaWYobW88ZSlpZih4YzxlKXZhciBjPWU8PW94PzE6MCxUPWMmJjE7ZWxzZSB2YXIgcz1lPD1mbz8xOjAsVD1zJiYxO2Vsc2UgaWYoJHU8ZSl2YXIgcD1lPD1IdT8xOjAsVD1wJiYyO2Vsc2UgdmFyIHk9ZTw9Q28/MTowLFQ9eSYmMTtlbHNlIHZhciBUPVZyKHRMcixlKS0xfDA7ZWxzZSB2YXIgVD0tMTtpZig1PFQ+Pj4wKXZhciBFPXEobik7ZWxzZSBzd2l0Y2goVCl7Y2FzZSAwOnZhciBFPTU7YnJlYWs7Y2FzZSAxOmlmKEcwKG4sMSksamMoaihuKSk9PT0wKXtmb3IoOzspaWYoRzAobiwxKSxqYyhqKG4pKSE9PTApe3ZhciBFPXEobik7YnJlYWt9fWVsc2UgdmFyIEU9cShuKTticmVhaztjYXNlIDI6dmFyIEU9MDticmVhaztjYXNlIDM6RzAobiwwKTt2YXIgZD14aShqKG4pKSE9PTA/MTowLEU9ZCYmcShuKTticmVhaztjYXNlIDQ6RzAobiw1KTt2YXIgdz1kOShqKG4pKSxFPXc9PT0wPzM6dz09PTE/MjpxKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIEU9NH1pZig1PEU+Pj4wKXJldHVybiBrZSh6Q3IpO3N3aXRjaChFKXtjYXNlIDA6cmV0dXJuWzIsZDcodCxuKV07Y2FzZSAxOnJldHVyblsyLHRdO2Nhc2UgMjp2YXIgRz1qdSh0LG4pLEE9JG4oem4pLFM9ZTIodCxBLG4pLE09U1sxXTtyZXR1cm5bMSxNLFNpKE0sRyxTWzJdLEEsMCldO2Nhc2UgMzp2YXIgSz1qdSh0LG4pLFY9JG4oem4pLGYwPVIxKHQsVixuKSxtMD1mMFsxXTtyZXR1cm5bMSxtMCxTaShtMCxLLGYwWzJdLFYsMSldO2Nhc2UgNDp2YXIgazA9anUodCxuKSxnMD0kbih6biksZTA9JG4oem4pLHgwPSRuKHpuKTtobih4MCxLQ3IpO3ZhciBsPVpyMCh0LGcwLGUwLHgwLG4pLGMwPWxbMV0sdDA9aDcoYzAsbiksbzA9WzAsYzBbMV0sazAsdDBdLHcwPWxbMl0sXzA9TXQoeDApLEUwPU10KGUwKTtyZXR1cm5bMCxjMCxbMyxbMCxvMCxbMCxNdChnMCksRTAsXzBdLHcwXV1dO2RlZmF1bHQ6dmFyIFUwPUVpKHQsbnQodCxuKSk7cmV0dXJuWzAsVTAsWzMsWzAsbnQoVTAsbiksV0NyLDFdXV19fWZ1bmN0aW9uIGplZSh0LG4pe2Z1bmN0aW9uIGUoRCl7Zm9yKDs7KWlmKEcwKEQsMjkpLGRuKGooRCkpIT09MClyZXR1cm4gcShEKX1mdW5jdGlvbiBpKEQpe0cwKEQsMjcpO3ZhciB1MD1CdChqKEQpKTtpZih1MD09PTApe2Zvcig7OylpZihHMChELDI1KSxkbihqKEQpKSE9PTApcmV0dXJuIHEoRCl9cmV0dXJuIHUwPT09MT9lKEQpOnEoRCl9ZnVuY3Rpb24geChEKXtmb3IoOzspaWYoRzAoRCwyMyksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfWZ1bmN0aW9uIGMoRCl7RzAoRCwyMik7dmFyIHUwPUJ0KGooRCkpO2lmKHUwPT09MCl7Zm9yKDs7KWlmKEcwKEQsMjEpLGRuKGooRCkpIT09MClyZXR1cm4gcShEKX1yZXR1cm4gdTA9PT0xP3goRCk6cShEKX1mdW5jdGlvbiBzKEQpe2Zvcig7OylpZihHMChELDIzKSxkbihqKEQpKSE9PTApcmV0dXJuIHEoRCl9ZnVuY3Rpb24gcChEKXtHMChELDIyKTt2YXIgdTA9QnQoaihEKSk7aWYodTA9PT0wKXtmb3IoOzspaWYoRzAoRCwyMSksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfXJldHVybiB1MD09PTE/cyhEKTpxKEQpfWZ1bmN0aW9uIHkoRCl7cjpmb3IoOzspe2lmKHBuKGooRCkpPT09MClmb3IoOzspe0cwKEQsMjQpO3ZhciB1MD1NYyhqKEQpKTtpZigzPHUwPj4+MClyZXR1cm4gcShEKTtzd2l0Y2godTApe2Nhc2UgMDpyZXR1cm4gcyhEKTtjYXNlIDE6Y29udGludWU7Y2FzZSAyOmNvbnRpbnVlIHI7ZGVmYXVsdDpyZXR1cm4gcChEKX19cmV0dXJuIHEoRCl9fWZ1bmN0aW9uIFQoRCl7RzAoRCwyOSk7dmFyIHUwPUdyMChqKEQpKTtpZigzPHUwPj4+MClyZXR1cm4gcShEKTtzd2l0Y2godTApe2Nhc2UgMDpyZXR1cm4gZShEKTtjYXNlIDE6dmFyIFgwPUMxKGooRCkpO2lmKFgwPT09MClmb3IoOzspe0cwKEQsMjQpO3ZhciBKMD1RdihqKEQpKTtpZigyPEowPj4+MClyZXR1cm4gcShEKTtzd2l0Y2goSjApe2Nhc2UgMDpyZXR1cm4gcyhEKTtjYXNlIDE6Y29udGludWU7ZGVmYXVsdDpyZXR1cm4gcChEKX19aWYoWDA9PT0xKWZvcig7Oyl7RzAoRCwyNCk7dmFyIGlyPU1jKGooRCkpO2lmKDM8aXI+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChpcil7Y2FzZSAwOnJldHVybiBzKEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cmV0dXJuIHkoRCk7ZGVmYXVsdDpyZXR1cm4gcChEKX19cmV0dXJuIHEoRCk7Y2FzZSAyOmZvcig7Oyl7RzAoRCwyNCk7dmFyIFEwPVF2KGooRCkpO2lmKDI8UTA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChRMCl7Y2FzZSAwOnJldHVybiB4KEQpO2Nhc2UgMTpjb250aW51ZTtkZWZhdWx0OnJldHVybiBjKEQpfX1kZWZhdWx0OmZvcig7Oyl7RzAoRCwyNCk7dmFyIEYwPU1jKGooRCkpO2lmKDM8RjA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChGMCl7Y2FzZSAwOnJldHVybiB4KEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cmV0dXJuIHkoRCk7ZGVmYXVsdDpyZXR1cm4gYyhEKX19fX1mdW5jdGlvbiBFKEQpe2Zvcig7Oyl7RzAoRCwzMCk7dmFyIHUwPVBzKGooRCkpO2lmKDQ8dTA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaCh1MCl7Y2FzZSAwOnJldHVybiBlKEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cmV0dXJuIFQoRCk7Y2FzZSAzOnI6Zm9yKDs7KXtpZihwbihqKEQpKT09PTApZm9yKDs7KXtHMChELDMwKTt2YXIgWDA9UHMoaihEKSk7aWYoNDxYMD4+PjApcmV0dXJuIHEoRCk7c3dpdGNoKFgwKXtjYXNlIDA6cmV0dXJuIGUoRCk7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpyZXR1cm4gVChEKTtjYXNlIDM6Y29udGludWUgcjtkZWZhdWx0OnJldHVybiBpKEQpfX1yZXR1cm4gcShEKX1kZWZhdWx0OnJldHVybiBpKEQpfX19ZnVuY3Rpb24gZChEKXtyZXR1cm4gcG4oaihEKSk9PT0wP0UoRCk6cShEKX1mdW5jdGlvbiB3KEQpe2Zvcig7OylpZihHMChELDE5KSxkbihqKEQpKSE9PTApcmV0dXJuIHEoRCl9ZnVuY3Rpb24gRyhEKXtmb3IoOzspaWYoRzAoRCwxOSksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfWZ1bmN0aW9uIEEoRCl7RzAoRCwyOSk7dmFyIHUwPUVyMChqKEQpKTtpZih1MD09PTApcmV0dXJuIGUoRCk7aWYodTA9PT0xKWZvcig7Oyl7RzAoRCwyMCk7dmFyIFgwPXc5KGooRCkpO2lmKDM8WDA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChYMCl7Y2FzZSAwOnJldHVybiBHKEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cjpmb3IoOzspe2lmKE5uKGooRCkpPT09MClmb3IoOzspe0cwKEQsMjApO3ZhciBKMD13OShqKEQpKTtpZigzPEowPj4+MClyZXR1cm4gcShEKTtzd2l0Y2goSjApe2Nhc2UgMDpyZXR1cm4gdyhEKTtjYXNlIDE6Y29udGludWU7Y2FzZSAyOmNvbnRpbnVlIHI7ZGVmYXVsdDpHMChELDE4KTt2YXIgaXI9QnQoaihEKSk7aWYoaXI9PT0wKXtmb3IoOzspaWYoRzAoRCwxNyksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfXJldHVybiBpcj09PTE/dyhEKTpxKEQpfX1yZXR1cm4gcShEKX1kZWZhdWx0OkcwKEQsMTgpO3ZhciBRMD1CdChqKEQpKTtpZihRMD09PTApe2Zvcig7OylpZihHMChELDE3KSxkbihqKEQpKSE9PTApcmV0dXJuIHEoRCl9cmV0dXJuIFEwPT09MT9HKEQpOnEoRCl9fXJldHVybiBxKEQpfWZ1bmN0aW9uIFMoRCl7Zm9yKDs7KWlmKEcwKEQsMTMpLGRuKGooRCkpIT09MClyZXR1cm4gcShEKX1mdW5jdGlvbiBNKEQpe2Zvcig7OylpZihHMChELDEzKSxkbihqKEQpKSE9PTApcmV0dXJuIHEoRCl9ZnVuY3Rpb24gSyhEKXtHMChELDI5KTt2YXIgdTA9RHIwKGooRCkpO2lmKHUwPT09MClyZXR1cm4gZShEKTtpZih1MD09PTEpZm9yKDs7KXtHMChELDE0KTt2YXIgWDA9aDkoaihEKSk7aWYoMzxYMD4+PjApcmV0dXJuIHEoRCk7c3dpdGNoKFgwKXtjYXNlIDA6cmV0dXJuIE0oRCk7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpyOmZvcig7Oyl7aWYoenUoaihEKSk9PT0wKWZvcig7Oyl7RzAoRCwxNCk7dmFyIEowPWg5KGooRCkpO2lmKDM8SjA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChKMCl7Y2FzZSAwOnJldHVybiBTKEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6Y29udGludWUgcjtkZWZhdWx0OkcwKEQsMTIpO3ZhciBpcj1CdChqKEQpKTtpZihpcj09PTApe2Zvcig7OylpZihHMChELDExKSxkbihqKEQpKSE9PTApcmV0dXJuIHEoRCl9cmV0dXJuIGlyPT09MT9TKEQpOnEoRCl9fXJldHVybiBxKEQpfWRlZmF1bHQ6RzAoRCwxMik7dmFyIFEwPUJ0KGooRCkpO2lmKFEwPT09MCl7Zm9yKDs7KWlmKEcwKEQsMTEpLGRuKGooRCkpIT09MClyZXR1cm4gcShEKX1yZXR1cm4gUTA9PT0xP00oRCk6cShEKX19cmV0dXJuIHEoRCl9ZnVuY3Rpb24gVihEKXtmb3IoOzspaWYoRzAoRCw5KSxkbihqKEQpKSE9PTApcmV0dXJuIHEoRCl9ZnVuY3Rpb24gZjAoRCl7Zm9yKDs7KWlmKEcwKEQsOSksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfWZ1bmN0aW9uIG0wKEQpe0cwKEQsMjkpO3ZhciB1MD1QcjAoaihEKSk7aWYodTA9PT0wKXJldHVybiBlKEQpO2lmKHUwPT09MSlmb3IoOzspe0cwKEQsMTApO3ZhciBYMD1rOShqKEQpKTtpZigzPFgwPj4+MClyZXR1cm4gcShEKTtzd2l0Y2goWDApe2Nhc2UgMDpyZXR1cm4gZjAoRCk7Y2FzZSAxOmNvbnRpbnVlO2Nhc2UgMjpyOmZvcig7Oyl7aWYoR2MoaihEKSk9PT0wKWZvcig7Oyl7RzAoRCwxMCk7dmFyIEowPWs5KGooRCkpO2lmKDM8SjA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChKMCl7Y2FzZSAwOnJldHVybiBWKEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6Y29udGludWUgcjtkZWZhdWx0OkcwKEQsOCk7dmFyIGlyPUJ0KGooRCkpO2lmKGlyPT09MCl7Zm9yKDs7KWlmKEcwKEQsNyksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfXJldHVybiBpcj09PTE/VihEKTpxKEQpfX1yZXR1cm4gcShEKX1kZWZhdWx0OkcwKEQsOCk7dmFyIFEwPUJ0KGooRCkpO2lmKFEwPT09MCl7Zm9yKDs7KWlmKEcwKEQsNyksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfXJldHVybiBRMD09PTE/ZjAoRCk6cShEKX19cmV0dXJuIHEoRCl9ZnVuY3Rpb24gazAoRCl7RzAoRCwyOCk7dmFyIHUwPUJ0KGooRCkpO2lmKHUwPT09MCl7Zm9yKDs7KWlmKEcwKEQsMjYpLGRuKGooRCkpIT09MClyZXR1cm4gcShEKX1yZXR1cm4gdTA9PT0xP2UoRCk6cShEKX1mdW5jdGlvbiBnMChEKXtHMChELDMwKTt2YXIgdTA9UXYoaihEKSk7aWYoMjx1MD4+PjApcmV0dXJuIHEoRCk7c3dpdGNoKHUwKXtjYXNlIDA6cmV0dXJuIGUoRCk7Y2FzZSAxOmZvcig7Oyl7RzAoRCwzMCk7dmFyIFgwPU1jKGooRCkpO2lmKDM8WDA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChYMCl7Y2FzZSAwOnJldHVybiBlKEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cjpmb3IoOzspe2lmKHBuKGooRCkpPT09MClmb3IoOzspe0cwKEQsMzApO3ZhciBKMD1NYyhqKEQpKTtpZigzPEowPj4+MClyZXR1cm4gcShEKTtzd2l0Y2goSjApe2Nhc2UgMDpyZXR1cm4gZShEKTtjYXNlIDE6Y29udGludWU7Y2FzZSAyOmNvbnRpbnVlIHI7ZGVmYXVsdDpyZXR1cm4gaShEKX19cmV0dXJuIHEoRCl9ZGVmYXVsdDpyZXR1cm4gaShEKX19ZGVmYXVsdDpyZXR1cm4gaShEKX19ZnVuY3Rpb24gZTAoRCl7Zm9yKDs7KXtHMChELDMwKTt2YXIgdTA9dTkoaihEKSk7aWYoMzx1MD4+PjApcmV0dXJuIHEoRCk7c3dpdGNoKHUwKXtjYXNlIDA6cmV0dXJuIGUoRCk7Y2FzZSAxOnJldHVybiBnMChEKTtjYXNlIDI6Y29udGludWU7ZGVmYXVsdDpyZXR1cm4gazAoRCl9fX1mdW5jdGlvbiB4MChEKXtmb3IoOzspaWYoRzAoRCwxNSksZG4oaihEKSkhPT0wKXJldHVybiBxKEQpfWZ1bmN0aW9uIGwoRCl7RzAoRCwxNSk7dmFyIHUwPUJ0KGooRCkpO2lmKHUwPT09MCl7Zm9yKDs7KWlmKEcwKEQsMTUpLGRuKGooRCkpIT09MClyZXR1cm4gcShEKX1yZXR1cm4gdTA9PT0xP3gwKEQpOnEoRCl9ZnVuY3Rpb24gYzAoRCl7Zm9yKDs7KXtHMChELDE2KTt2YXIgdTA9TXIwKGooRCkpO2lmKDQ8dTA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaCh1MCl7Y2FzZSAwOnJldHVybiB4MChEKTtjYXNlIDE6cmV0dXJuIGcwKEQpO2Nhc2UgMjpjb250aW51ZTtjYXNlIDM6Zm9yKDs7KXtHMChELDE1KTt2YXIgWDA9dTkoaihEKSk7aWYoMzxYMD4+PjApcmV0dXJuIHEoRCk7c3dpdGNoKFgwKXtjYXNlIDA6cmV0dXJuIHgwKEQpO2Nhc2UgMTpyZXR1cm4gZzAoRCk7Y2FzZSAyOmNvbnRpbnVlO2RlZmF1bHQ6cmV0dXJuIGwoRCl9fWRlZmF1bHQ6cmV0dXJuIGwoRCl9fX1mdW5jdGlvbiB0MChEKXtHMChELDMwKTt2YXIgdTA9T3IwKGooRCkpO2lmKDM8dTA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaCh1MCl7Y2FzZSAwOnJldHVybiBlKEQpO2Nhc2UgMTpmb3IoOzspe0cwKEQsMzApO3ZhciBYMD1QcyhqKEQpKTtpZig0PFgwPj4+MClyZXR1cm4gcShEKTtzd2l0Y2goWDApe2Nhc2UgMDpyZXR1cm4gZShEKTtjYXNlIDE6Y29udGludWU7Y2FzZSAyOnJldHVybiBUKEQpO2Nhc2UgMzpyOmZvcig7Oyl7aWYocG4oaihEKSk9PT0wKWZvcig7Oyl7RzAoRCwzMCk7dmFyIEowPVBzKGooRCkpO2lmKDQ8SjA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaChKMCl7Y2FzZSAwOnJldHVybiBlKEQpO2Nhc2UgMTpjb250aW51ZTtjYXNlIDI6cmV0dXJuIFQoRCk7Y2FzZSAzOmNvbnRpbnVlIHI7ZGVmYXVsdDpyZXR1cm4gaShEKX19cmV0dXJuIHEoRCl9ZGVmYXVsdDpyZXR1cm4gaShEKX19Y2FzZSAyOnJldHVybiBUKEQpO2RlZmF1bHQ6cmV0dXJuIGkoRCl9fWZ1bmN0aW9uIG8wKEQpe0cwKEQsMzApO3ZhciB1MD1sTChqKEQpKTtpZig4PHUwPj4+MClyZXR1cm4gcShEKTtzd2l0Y2godTApe2Nhc2UgMDpyZXR1cm4gZShEKTtjYXNlIDE6cmV0dXJuIHQwKEQpO2Nhc2UgMjpyZXR1cm4gYzAoRCk7Y2FzZSAzOnJldHVybiBlMChEKTtjYXNlIDQ6cmV0dXJuIG0wKEQpO2Nhc2UgNTpyZXR1cm4gVChEKTtjYXNlIDY6cmV0dXJuIEsoRCk7Y2FzZSA3OnJldHVybiBBKEQpO2RlZmF1bHQ6cmV0dXJuIGswKEQpfX1mdW5jdGlvbiB3MChEKXtyOmZvcig7Oyl7aWYocG4oaihEKSk9PT0wKWZvcig7Oyl7RzAoRCwzMCk7dmFyIHUwPVJyMChqKEQpKTtpZig0PHUwPj4+MClyZXR1cm4gcShEKTtzd2l0Y2godTApe2Nhc2UgMDpyZXR1cm4gZShEKTtjYXNlIDE6cmV0dXJuIGcwKEQpO2Nhc2UgMjpjb250aW51ZTtjYXNlIDM6Y29udGludWUgcjtkZWZhdWx0OnJldHVybiBrMChEKX19cmV0dXJuIHEoRCl9fWZ1bmN0aW9uIF8wKEQpe2Zvcig7Oyl7RzAoRCwzMCk7dmFyIHUwPW85KGooRCkpO2lmKDU8dTA+Pj4wKXJldHVybiBxKEQpO3N3aXRjaCh1MCl7Y2FzZSAwOnJldHVybiBlKEQpO2Nhc2UgMTpyZXR1cm4gdDAoRCk7Y2FzZSAyOmNvbnRpbnVlO2Nhc2UgMzpyZXR1cm4gVChEKTtjYXNlIDQ6cmV0dXJuIHcwKEQpO2RlZmF1bHQ6cmV0dXJuIGswKEQpfX19ZnVuY3Rpb24gRTAoRCl7cmV0dXJuIEcwKEQsMyksVXIwKGooRCkpPT09MD8zOnEoRCl9ZnVuY3Rpb24gVTAoRCl7cmV0dXJuIG05KGooRCkpPT09MCYmdjkoaihEKSk9PT0wJiZCcjAoaihEKSk9PT0wJiZBcjAoaihEKSk9PT0wJiZOcjAoaihEKSk9PT0wJiZ2TChqKEQpKT09PTAmJkJsKGooRCkpPT09MCYmbTkoaihEKSk9PT0wJiZMcyhqKEQpKT09PTAmJkNyMChqKEQpKT09PTAmJlVsKGooRCkpPT09MD8zOnEoRCl9Z24obik7dmFyIGI9aihuKSxSMD1lZjxiP3Z3PGI/LTE6VWs8Yj9DMzxiP0J3PGI/RUU8Yj9XeTxiPzE6NjpKZDxiP2xFPGI/dUY8Yj8xOjY6WlQ8Yj8xOjY6V0Y8Yj9iQTxiPzE6NjpzSTxiPzE6NjpDNjxiP0U0PGI/eDY8Yj9WODxiP2ozPGI/cjM8Yj9DTzxiPzE6NjpMSTxiPzE6NjpJeTxiP2hnPGI/MTo2Ok13PGI/MTo2OkwzPGI/dzg8Yj9qZzxiPzE6NjokNDxiPzE6NjpXODxiP3pUPGI/MTo2OmtrPGI/MTo2Ok80PGI/WU88Yj9sMzxiP1FrPGI/MTo2OmZrPGI/MTo2OnhwPGI/VjY8Yj8xOjY6VGQ8Yj8xOjY6Rzg8Yj9zNDxiP3Q2PGI/MTo2OnE2PGI/MTo2OkI2PGI/UzQ8Yj8xOjY6Zm48Yj8xOjY6TEU8Yj9NNDxiP2c2PGI/U0Y8Yj9pODxiPzE6NjpkODxiPzE6NjpGNDxiP0pGPGI/MTo2Om1oPGI/MTo2OlU2PGI/bjg8Yj9zMzxiPzE6NjpTODxiPzE6NjpCUzxiP0w4PGI/MTo2OkszPGI/MTo2Om04PGI/Zjg8Yj94ODxiP3czPGI/MTo2Ol82PGI/MTo2OnM2PGI/b0Y8Yj8xOjY6Wk88Yj8xOjY6YTM8Yj9EUzxiP2U4PGI/MTo2Omc4PGI/MTo2OkozPGI/c0Y8Yj8xOjY6aWc8Yj8xOjY6aXc8Yj9FazxiP3drPGI/cWs8Yj9GVDxiP1ZrPGI/MTo2OnVBPGI/MTo2OmR5PGI/VlM8Yj8xOjY6X2Q8Yj8xOjY6VGg8Yj9wRjxiP0ZFPGI/MTo2Olp3PGI/MTo2OlN5PGI/TF88Yj8xOjY6Q0U8Yj8xOjY6TEY8Yj9WdzxiP015PGI/cnc8Yj8xOjY6WEk8Yj8xOjY6ak88Yj9hcDxiPzE6NjpqVDxiPzE6NjpPdDxiP09BPGI/Z0E8Yj8xOjY6MTo2OmM2PGI/dzY8Yj9sNjxiP2szPGI/VkU8Yj8xOjY6cXc8Yj8xOjY6djQ8Yj9uRTxiPzE6NjpUeTxiPzE6NjpjMzxiP1Y0PGI/ZWc8Yj8xOjY6cUY8Yj8xOjY6WDQ8Yj9fVDxiPzE6NjpPeTxiPzE6NjpENjxiP0Q0PGI/VjM8Yj9NUzxiPzE6NjpXdzxiPzE6NjpjeTxiP2p5PGI/MTo2OlZUPGI/MTo2OkI0PGI/Ymg8Yj9KVDxiPzE6NjpHMzxiPzE6NjpyNjxiP3NPPGI/MTo2OlpFPGI/MTo2OnVUPGI/WjQ8Yj9ZZDxiP1E2PGI/TDQ8Yj9ONjxiP3ZwPGI/RF88Yj8xOjY6UGQ8Yj8xOjY6cGQ8Yj9SZzxiPzE6NjpPUzxiPzE6NjpHNjxiP0kzPGI/dWs8Yj8xOjY6Y0U8Yj8xOjY6bDg8Yj9sNDxiPzE6NjpyaDxiPzE6NjpNMzxiP0ZTPGI/TkU8Yj9hVDxiPzE6NjprVDxiPzE6Njp1UzxiP2QzPGI/MTo2OnpkPGI/MTo2Omx5PGI/VDY8Yj9QZzxiPzE6Njp2eTxiPzE6NjpMTzxiP3lGPGI/MTo2OllGPGI/MTo2OkRJPGI/YXU8Yj9qRjxiP0FoPGI/QU88Yj8xOjY6Q2Q8Yj8xOjY6cWg8Yj9BUzxiPzE6NjpsQTxiPzE6NjpjTzxiP0FJPGI/eEk8Yj8xOjY6Ql88Yj8xOjY6aFM8Yj9mVDxiPzE6NjptZzxiPzE6NjpOTzxiP053PGI/WWg8Yj9sdzxiPzE6NjpRZzxiPzE6NjpWZzxiP0xrPGI/MTo2OnFPPGI/MTo2OmlTPGI/YjY8Yj9oNjxiPzE6NjokRjxiPzE6NjpwaDxiP3JUPGI/MTo2OkhTPGI/MTo2OnpPPGI/Q2s8Yj95UzxiP0l3PGI/Q0k8Yj9LZzxiPzE6NjpWTzxiPzE6NjpNazxiP2tzPGI/MTo2OlBGPGI/MTo2OmtkPGI/VFM8Yj93STxiPzE6Njp4ZzxiPzE6NjpSZDxiP2RoPGI/MTo2Om9JPGI/MTo2Om9UPGI/bGc8Yj90RjxiP0tJPGI/MTo2OnBrPGI/MTo2OkdfPGI/a3c8Yj8xOjY6UUY8Yj8xOjY6ams8Yj9GTzxiP21BPGI/MTo2Ol9nPGI/MTo2OldFPGI/bEY8Yj8xOjY6TUY8Yj8xOjY6aDQ8Yj9oMzxiP3ZUPGI/akk8Yj9tUzxiPzE6NjpjQTxiPzE6NjpERTxiP3prPGI/MTo2OkxnPGI/MTo2OkFUPGI/UjY8Yj9iazxiPzE6NjppVDxiPzE6NjpVUzxiP0JUPGI/MTo2OnZFPGI/MTo2OldjPGI/U2s8Yj9EMzxiP1hnPGI/MTo2OmZkPGI/MTo2OklGPGI/bGQ8Yj8xOjY6bkE8Yj8xOjY6QkU8Yj9XMzxiP3N5PGI/MTo2OmtJPGI/MTo2OlZGPGI/ZlM8Yj8xOjY6UDQ8Yj8xOjY6dlM8Yj9qdzxiP2lrPGI/aE88Yj9pSTxiP2JnPGI/TmQ8Yj8xOjY6dTM8Yj8xOjY6c0U8Yj9MZDxiPzE6NjpYazxiPzE6Njp1cDxiP2hoPGI/TTg8Yj8xOjY6cDM8Yj8xOjY6RXc8Yj9wRTxiPzE6NjpCZzxiPzE6NjpieTxiP1prPGI/JFQ8Yj96RjxiPzE6NjpCZDxiPzE6NjokazxiP1RJPGI/MTo2OnBPPGI/MTo2OnNTPGI/Uk88Yj9rQTxiPzE6Njp3QTxiPzE6NjpmZzxiP3FJPGI/MTo2OmRTPGI/MTo2OmhJPGI/Tkk8Yj9uUzxiP1h5PGI/Sl88Yj8xOjY6YlQ8Yj8xOjY6JE88Yj9FZzxiPzE6NjpvQTxiPzE6Njp1RTxiP0VUPGI/ZGc8Yj8xOjY6VFQ8Yj8xOjY6QXk8Yj91ODxiPzE6NjpaUzxiPzE6NjpHaDxiP01fPGI/U088Yj9saDxiPzE6NjpYRTxiPzE6NjpRMzxiP1o2PGI/MTo2Ok9kPGI/MTo2Olc2PGI/UkY8Yj9xeTxiPzE6NjpOazxiPzE6NjpQRTxiP1RnPGI/MTo2Ok9JPGI/MTo2OkE4PGI/UF88Yj9DNDxiPyRnPGI/VWg8Yj9XUzxiPzE6NjpqNjxiPzE6NjpfRTxiP2ZJPGI/MTo2OlB3PGI/MTo2OmYzPGI/YTg8Yj9VRjxiPzE6NjpMdzxiPzE6NjptazxiP2FJPGI/MTo2Onl5PGI/MTo2Ok84PGI/dUk8Yj91NjxiP2t5PGI/MTo2OkdJPGI/MTo2OmM4PGI/T3c8Yj8xOjY6YkU8Yj8xOjY6eTM8Yj9mcDxiP2VFPGI/MTo2Okk4PGI/MTo2OmN3PGI/S0Y8Yj8xOjY6Vkk8Yj8xOjY6emg8Yj9RTzxiP2g4PGI/aHk8Yj9ldzxiPzE6NjppMzxiPzE6NjpwSTxiP2RBPGI/MTo2OnFkPGI/MTo2OmtnPGI/aUU8Yj9UTzxiPzE6NjpYNjxiPzE6NjpSdzxiP2F3PGI/MTo2OkYzPGI/MTo2OklrPGI/T0Y8Yj9MeTxiP200PGI/MTo2OmNkPGI/MTo2OnpnPGI/Sms8Yj8xOjY6YVM8Yj8xOjY6QjM8Yj9JTzxiP2h3PGI/MTo2Om1FPGI/MTo2OiRTPGI/UUk8Yj8xOjY6RkE8Yj8xOjY6b2Q8Yj9LRTxiP1JrPGI/SjY8Yj9NZDxiP3hGPGI/Wmc8Yj9zaDxiP2VUPGI/MTo2OllJPGI/MTo2OlJFPGI/T1Q8Yj8xOjY6Sjg8Yj8xOjY6SUE8Yj9kRTxiP3FUPGI/MTo2OmhkPGI/MTo2OklkPGI/TWg8Yj8xOjY6X1M8Yj8xOjY6RUE8Yj9QTzxiP0hnPGI/c2c8Yj8xOjY6VWc8Yj8xOjY6WHc8Yj90ZDxiPzE6NjpEZzxiPzE6NjpBZzxiP2JTPGI/V2Q8Yj8xOjY6Rmc8Yj8xOjY6dEE8Yj93VDxiPzE6NjpEazxiPzE6NjpyUzxiP1o4PGI/Skk8Yj9BRTxiP01FPGI/MTo2OnBBPGI/MTo2OkVPPGI/R3k8Yj8xOjY6ZkE8Yj8xOjY6eEE8Yj9iNDxiP19rPGI/MTo2Om9PPGI/MTo2OndkPGI/Uzc8Yj8xOjY6JGQ8Yj8xOjY6WDg8Yj96XzxiP0ZkPGI/UGg8Yj8xOjY6ZFQ8Yj8xOjY6RGQ8Yj9PazxiPzE6NjphaDxiPzE6NjpuaDxiP2FnPGI/JHc8Yj8xOjY6V1Q8Yj8xOjY6UVM8Yj9GdzxiPzE6NjpMVDxiPzE6NjpJaDxiP3ZrPGI/RW48Yj9wODxiP2dUPGI/TTY8Yj8xOjY6Z2g8Yj8xOjY6SjQ8Yj9RXzxiPzE6NjpvcDxiPzE6Njp2TzxiP0dFPGI/Y2g8Yj8xOjY6cV88Yj8xOjY6RVM8Yj9VVDxiPzE6NjpqUzxiPzE6NjpVdzxiP3R5PGI/c0E8Yj9WaDxiPzE6NjpzVDxiPzE6NjppRjxiP1pkPGI/MTo2OkZJPGI/MTo2OnhPPGI/dGg8Yj9uZzxiPzE6NjpiZDxiPzE6NjppTzxiP19PPGI/MTo2OmVPPGI/MTo2OklTPGI/ekU8Yj9mTzxiP2NrPGI/eGg8Yj8xOjY6dWQ8Yj8xOjY6SlM8Yj9fdzxiPzE6NjpGeTxiPzE6Njp2QTxiPyRFPGI/S1Q8Yj8xOjY6ckk8Yj8xOjY6dXk8Yj9UdzxiPzE6NjoxOm5UPGI/WjM8Yj9lazxiPzY6JHk8Yj8xOjY6R0Y8Yj9RdzxiPzE6NjpzazxiPzE6Njp2ZzxiP25PPGI/dEk8Yj8xOjY6R088Yj8xOjY6Unk8Yj8xOjY6RDg8Yj9FZDxiP3h3PGI/T2g8Yj9yQTxiPzY6JGg8Yj90VDxiPzE6Njp2RjxiPzE6NjpReTxiP3pJPGI/cnk8Yj8xOjY6eWg8Yj8xOjY6SEU8Yj9KaDxiPzE6NjpoRjxiPzE6NjpycDxiP3o0PGI/UzY8Yj9weTxiPzE6NjpyZzxiPzE6NjokODxiP3lPPGI/MTo2OkJrPGI/MTo2OmdrPGI/VTg8Yj9FRjxiPzE6Njp3eTxiPzE6NjpvZzxiP1RrPGI/MTo2OndFPGI/MTo2Okd3PGI/JF88Yj9leTxiP3BTPGI/b0U8Yj8xOjY6MTo2OmR3PGI/NjpRNDxiP0lUPGI/MTo2OnlnPGI/MTo2OmVJPGI/dDM8Yj9NYTxiP0RvPGI/MToyOkJJPGI/MTo2Om93PGI/TVQ8Yj8xOjY6WVM8Yj8xOjY6eUk8Yj90UzxiP1poPGI/MTo2OkNUPGI/MTo2OkdUPGI/S3c8Yj8xOjY6U0k8Yj8xOjY6VUk8Yj90azxiP1FuPGI/UjQ8Yj9xMzxiP2lkPGI/MTo2Ol9GPGI/MTo2OnozPGI/TDY8Yj8xOjY6Zmg8Yj8xOjY6UFQ8Yj9pcDxiP3V3PGI/MTo2OmVTPGI/MTo2OnRPPGI/ZTM8Yj8xOjY6b2g8Yj8xOjY6ZGs8Yj96UzxiP1FoPGI/dWc8Yj8xOjY6aXk8Yj8xOjY6V2s8Yj9LZDxiPzE6NjpURTxiPzE6NjpkZDxiP215PGI/Y0Y8Yj8xOjY6X0E8Yj8xOjY6Tnk8Yj8xOjY6WGQ8Yj9IMzxiP28zPGI/Snc8Yj8xOjY6YXY8Yj82OlJUPGI/MTo2OmdGPGI/azY8Yj9ORjxiPzE6NjpXaDxiPzE6NjpHazxiP0RoPGI/MTo2OlpJPGI/MTo2OlZkPGI/Y1M8Yj9sVDxiP2NJPGI/MTo2OjE6RHk8Yj82Okp5PGI/MTo2OkZGPGI/c2Q8Yj8xOjY6WFQ8Yj9PTzxiPzE6NjphTzxiPzE6Njp3aDxiP0Y4PGI/V188Yj91aDxiP2tPPGI/ZWQ8Yj9FSTxiP0F3PGI/MTo2OnlBPGI/MTo2OkJoPGI/Znk8Yj8xOjY6YWs8Yj8xOjY6Q0Y8Yj9UQTxiP2xwPGI/MTo2OjE6Njp5VDxiP0hkPGI/a1M8Yj96eTxiPzE6Njp3UzxiPzE6Njp2NjxiP0hrPGI/MTo2OmtFPGI/MTo2OlN3PGI/cHc8Yj8xOjY6X2g8Yj9XTzxiPzE6NjprODxiPzE6NjprRjxiP0RPPGI/WEY8Yj9neTxiP1NkPGI/MTo2OmVBPGI/MTo2OlpfPGI/SkU8Yj8xOjY6YXk8Yj8xOjY6S3k8Yj9fODxiP1V5PGI/MTo2Om4zPGI/MTo2OnJFPGI/b3k8Yj8xOjY6Y2c8Yj8xOjY6WXk8Yj9TQTxiP3hTPGI/ckY8Yj8xOjY6WGg8Yj8xOjY6bUk8Yj9sazxiPzE6Njp1TzxiPzE6NjpQUzxiJiZhQTxiPzE6Njp5azxiP1JoPGI/dGc8Yj9uazxiPzY6Wnk8Yj9iSTxiPzE6NjpDaDxiPzE6Njp4RTxiP29rPGI/Vl88Yj8xOjY6MTo2Ok9nPGI/VU88YiYmb1M8Yj8xOjY6Ync8Yj9yTzxiP0xoPGI/MTo2OjE6ZEY8Yj82OjE6RWg8Yj9nRTxiP1UzPGI/Njp0dzxiPzE6NjpkSTxiP1FkPGI/d088Yj8xOjY6Ul88Yj8xOjY6U2g8Yj8xOjY6QkY8Yj9nZzxiP0FkPGI/MTo2OlhTPGI/MTo2OktrPGI/WUU8Yj82OmloPGI/MTo2OlVfPGI/eUU8Yj8xOjY6SHQ8Yj8xOjY6R1M8Yj9qRTxiP2RPPGI/cTQ8Yj9FeTxiP0U4PGI/Ukk8Yj8xOjY6bkY8Yj8xOjY6SEY8Yj8xOjY6d3c8Yj9FMzxiP2RlPGI/MTo2OjE6NjpJZzxiP0dkPGI/WF88Yj9IXzxiPzE6NjoxOjY6SHc8Yj9UMzxiP3ZkPGI/MTo2OmZGPGI/MTo2OndnPGI/MTo2Ono4PGI/ajg8Yj9FbzxiP1BJPGI/NjpReDxiPzE6MjpGNjxiP0J5PGI/MTo2OklFPGI/MTo2Oks4PGI/ejY8Yj9DZzxiPzE6NjpjVDxiPzE6NjpvODxiP3R0PGI/MTo2OkFrPGI/MTo2Ok5TPGI/dEU8Yj9qNDxiP05nPGI/MTo2OiRJPGI/MTo2OlA2PGI/VEY8Yj8xOjY6cDQ8Yj8xOjY6X0k8Yj9mRTxiP2dJPGI/MTo2Ok4zPGI/MTo2Okc0PGI/Qjg8Yj8xOjY6U2c8Yj8xOjY6Tjg8Yj9RRTxiP2FFPGI/WWs8Yj9wVDxiP0tfPGI/MTo2OndGPGI/MTo2OlVFPGI/MTo2OnJkPGI/dkk8Yj82OjE6NjpNTzxiP213PGI/WVQ8Yj9zODxiPzE6NjpBQTxiPzE6NjpZdzxiP1lfPGI/MTo2OjE6NjpHZzxiP0pPPGI/JDM8Yj9zcDxiP1A4PGI/MTo2OlE4PGI/MTo2OmdyPGI/dDg8Yj8xOjY6MTpnNDxiP0tTPGI/NjptNjxiPzE6NjptRjxiP0N5PGI/MTo2OlIzPGI/MTo2OlBrPGI/SEk8Yj9RVDxiP3gzPGI/MTo2Om1PPGI/MTo2OlB5PGI/TzM8Yj8xOjY6ZXA8Yj8xOjY6bW88Yj94YzxiP294PGI/MToyOmZvPGI/MToyOiR1PGI/SHU8Yj8xOjM6Q288Yj8xOjI6VnIoUExyLGIrMXwwKS0xfDA7aWYoMzA8UjA+Pj4wKXZhciBYPXEobik7ZWxzZSBzd2l0Y2goUjApe2Nhc2UgMDp2YXIgWD02MjticmVhaztjYXNlIDE6dmFyIFg9NjM7YnJlYWs7Y2FzZSAyOmlmKEcwKG4sMSksamMoaihuKSk9PT0wKXtmb3IoOzspaWYoRzAobiwxKSxqYyhqKG4pKSE9PTApe3ZhciBYPXEobik7YnJlYWt9fWVsc2UgdmFyIFg9cShuKTticmVhaztjYXNlIDM6dmFyIFg9MDticmVhaztjYXNlIDQ6RzAobiwwKTt2YXIgczA9eGkoaihuKSkhPT0wPzE6MCxYPXMwJiZxKG4pO2JyZWFrO2Nhc2UgNTp2YXIgWD02O2JyZWFrO2Nhc2UgNjp2YXIgWD02MTticmVhaztjYXNlIDc6aWYoRzAobiw2MyksQmwoaihuKSk9PT0wKXt2YXIgaHI9aihuKSxBcj1zNzxocj9MNzxocj8tMTowOi0xO2lmKEFyPT09MCYmVWwoaihuKSk9PT0wJiZCbChqKG4pKT09PTApdmFyIG9yPWoobiksVzA9WXQ8b3I/WmM8b3I/LTE6MDotMSxYPVcwPT09MCYmZ3IwKGoobikpPT09MD8zMTpxKG4pO2Vsc2UgdmFyIFg9cShuKX1lbHNlIHZhciBYPXEobik7YnJlYWs7Y2FzZSA4OnZhciBYPTU2O2JyZWFrO2Nhc2UgOTp2YXIgWD0zODticmVhaztjYXNlIDEwOnZhciBYPTM5O2JyZWFrO2Nhc2UgMTE6RzAobiw1Myk7dmFyIFg9cXIwKGoobikpPT09MD80OnEobik7YnJlYWs7Y2FzZSAxMjp2YXIgWD01OTticmVhaztjYXNlIDEzOnZhciBYPTQzO2JyZWFrO2Nhc2UgMTQ6RzAobiw2MCk7dmFyIExyPXFsKGoobikpO2lmKDM8THI+Pj4wKXZhciBYPXEobik7ZWxzZSBzd2l0Y2goTHIpe2Nhc2UgMDpmb3IoOzspe3ZhciBUcj1xbChqKG4pKTtpZigzPFRyPj4+MCl2YXIgWD1xKG4pO2Vsc2Ugc3dpdGNoKFRyKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnZhciBYPWQobik7YnJlYWs7Y2FzZSAyOnZhciBYPW8wKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIFg9XzAobil9YnJlYWt9YnJlYWs7Y2FzZSAxOnZhciBYPWQobik7YnJlYWs7Y2FzZSAyOnZhciBYPW8wKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIFg9XzAobil9YnJlYWs7Y2FzZSAxNTpHMChuLDQxKTt2YXIgSHI9RDEoaihuKSksWD1Icj09PTA/Y0woaihuKSk9PT0wPzQwOnEobik6SHI9PT0xP0Uobik6cShuKTticmVhaztjYXNlIDE2OkcwKG4sNjMpO3ZhciBPcj1kOShqKG4pKTtpZihPcj09PTApe0cwKG4sMik7dmFyIGZyPWk5KGoobikpO2lmKDI8ZnI+Pj4wKXZhciBYPXEobik7ZWxzZSBzd2l0Y2goZnIpe2Nhc2UgMDpmb3IoOzspe3ZhciBScj1pOShqKG4pKTtpZigyPFJyPj4+MCl2YXIgWD1xKG4pO2Vsc2Ugc3dpdGNoKFJyKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnZhciBYPUUwKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIFg9VTAobil9YnJlYWt9YnJlYWs7Y2FzZSAxOnZhciBYPUUwKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIFg9VTAobil9fWVsc2UgdmFyIFg9T3I9PT0xPzU6cShuKTticmVhaztjYXNlIDE3OkcwKG4sMzApO3ZhciBXcj1sTChqKG4pKTtpZig4PFdyPj4+MCl2YXIgWD1xKG4pO2Vsc2Ugc3dpdGNoKFdyKXtjYXNlIDA6dmFyIFg9ZShuKTticmVhaztjYXNlIDE6dmFyIFg9dDAobik7YnJlYWs7Y2FzZSAyOnZhciBYPWMwKG4pO2JyZWFrO2Nhc2UgMzp2YXIgWD1lMChuKTticmVhaztjYXNlIDQ6dmFyIFg9bTAobik7YnJlYWs7Y2FzZSA1OnZhciBYPVQobik7YnJlYWs7Y2FzZSA2OnZhciBYPUsobik7YnJlYWs7Y2FzZSA3OnZhciBYPUEobik7YnJlYWs7ZGVmYXVsdDp2YXIgWD1rMChuKX1icmVhaztjYXNlIDE4OkcwKG4sMzApO3ZhciBKcj1vOShqKG4pKTtpZig1PEpyPj4+MCl2YXIgWD1xKG4pO2Vsc2Ugc3dpdGNoKEpyKXtjYXNlIDA6dmFyIFg9ZShuKTticmVhaztjYXNlIDE6dmFyIFg9dDAobik7YnJlYWs7Y2FzZSAyOnZhciBYPV8wKG4pO2JyZWFrO2Nhc2UgMzp2YXIgWD1UKG4pO2JyZWFrO2Nhc2UgNDp2YXIgWD13MChuKTticmVhaztkZWZhdWx0OnZhciBYPWswKG4pfWJyZWFrO2Nhc2UgMTk6dmFyIFg9NDQ7YnJlYWs7Y2FzZSAyMDp2YXIgWD00MjticmVhaztjYXNlIDIxOnZhciBYPTQ5O2JyZWFrO2Nhc2UgMjI6RzAobiw1MSk7dmFyIGFyPWoobiksX3I9NjE8YXI/NjI8YXI/LTE6MDotMSxYPV9yPT09MD81NzpxKG4pO2JyZWFrO2Nhc2UgMjM6dmFyIFg9NTA7YnJlYWs7Y2FzZSAyNDpHMChuLDQ2KTt2YXIgWD1jTChqKG4pKT09PTA/NDU6cShuKTticmVhaztjYXNlIDI1OnZhciBYPTMyO2JyZWFrO2Nhc2UgMjY6aWYoRzAobiw2MyksTHMoaihuKSk9PT0wKXt2YXIgSXI9TDEoaihuKSk7aWYoSXI9PT0wKXZhciBYPU5uKGoobikpPT09MCYmTm4oaihuKSk9PT0wJiZObihqKG4pKT09PTA/NjE6cShuKTtlbHNlIGlmKElyPT09MSYmTm4oaihuKSk9PT0wKWZvcig7Oyl7dmFyIGZlPUExKGoobikpO2lmKGZlIT09MCl7dmFyIFg9ZmU9PT0xPzYxOnEobik7YnJlYWt9fWVsc2UgdmFyIFg9cShuKX1lbHNlIHZhciBYPXEobik7YnJlYWs7Y2FzZSAyNzp2YXIgWD0zMzticmVhaztjYXNlIDI4OkcwKG4sMzQpO3ZhciB2MD1qKG4pLFA9dHM8djA/WDI8djA/LTE6MDotMSxYPVA9PT0wPzM2OnEobik7YnJlYWs7Y2FzZSAyOTpHMChuLDU1KTt2YXIgTD1qKG4pLFE9WDI8TD9icjxMPy0xOjA6LTEsWD1RPT09MD8zNzpxKG4pO2JyZWFrO2RlZmF1bHQ6dmFyIFg9MzV9aWYoNjM8WD4+PjApcmV0dXJuIGtlKFNDcik7dmFyIGkwPVg7aWYoMzI8PWkwKXN3aXRjaChpMCl7Y2FzZSAzNDpyZXR1cm5bMCx0LDBdO2Nhc2UgMzU6cmV0dXJuWzAsdCwxXTtjYXNlIDM2OnJldHVyblswLHQsMl07Y2FzZSAzNzpyZXR1cm5bMCx0LDNdO2Nhc2UgMzg6cmV0dXJuWzAsdCw0XTtjYXNlIDM5OnJldHVyblswLHQsNV07Y2FzZSA0MDpyZXR1cm5bMCx0LDEyXTtjYXNlIDQxOnJldHVyblswLHQsMTBdO2Nhc2UgNDI6cmV0dXJuWzAsdCw4XTtjYXNlIDQzOnJldHVyblswLHQsOV07Y2FzZSA0NTpyZXR1cm5bMCx0LDgzXTtjYXNlIDQ5OnJldHVyblswLHQsOThdO2Nhc2UgNTA6cmV0dXJuWzAsdCw5OV07Y2FzZSA1MzpyZXR1cm5bMCx0LFl0XTtjYXNlIDU1OnJldHVyblswLHQsODldO2Nhc2UgNTY6cmV0dXJuWzAsdCw5MV07Y2FzZSA1NzpyZXR1cm5bMCx0LDExXTtjYXNlIDU5OnJldHVyblswLHQsczddO2Nhc2UgNjA6cmV0dXJuWzAsdCxMN107Y2FzZSA2MTp2YXIgbDA9bls2XTtIcjAobik7dmFyIFMwPUhsKHQsbDAsblszXSk7dEwobixsMCk7dmFyIFQwPUxsKG4pLHJyPVdyMCh0LFQwKSxMMD1yclsyXSxCPXJyWzFdLFo9RWUoTDAsT0NyKTtpZigwPD1aKXtpZighKDA8WikpcmV0dXJuWzAsQixBdl07aWYoIW4wKEwwLE1DcikpcmV0dXJuWzAsQiwyOV07aWYoIW4wKEwwLEJDcikpcmV0dXJuWzAsQixBMl07aWYoIW4wKEwwLHFDcikpcmV0dXJuWzAsQiw0Ml07aWYoIW4wKEwwLFVDcikpcmV0dXJuWzAsQixTdl07aWYoIW4wKEwwLEhDcikpcmV0dXJuWzAsQix0bF07aWYoIW4wKEwwLFhDcikpcmV0dXJuWzAsQiwzMV07aWYoIW4wKEwwLFlDcikpcmV0dXJuWzAsQiw0Nl07aWYoIW4wKEwwLFZDcikpcmV0dXJuWzAsQix1Y119ZWxzZXtpZighbjAoTDAsSUNyKSlyZXR1cm5bMCxCLHQxXTtpZighbjAoTDAsQUNyKSlyZXR1cm5bMCxCLHoyXTtpZighbjAoTDAsTkNyKSlyZXR1cm5bMCxCLEdDcl07aWYoIW4wKEwwLENDcikpcmV0dXJuWzAsQixqQ3JdO2lmKCFuMChMMCxQQ3IpKXJldHVyblswLEIsZjFdO2lmKCFuMChMMCxEQ3IpKXJldHVyblswLEIsNDFdO2lmKCFuMChMMCxMQ3IpKXJldHVyblswLEIsMzBdO2lmKCFuMChMMCxSQ3IpKXJldHVyblswLEIsNTNdfXJldHVyblswLEIsWzQsUzAsTDAsdUwoVDApXV07Y2FzZSA2Mjp2YXIgcDA9dFs0XT9HdSh0LG50KHQsbiksNik6dDtyZXR1cm5bMCxwMCxQbl07Y2FzZSA2MzpyZXR1cm5bMCx0LFs2LFNlKG4pXV07Y2FzZSAzMjpjYXNlIDQ3OnJldHVyblswLHQsNl07Y2FzZSAzMzpjYXNlIDQ4OnJldHVyblswLHQsN107Y2FzZSA0NDpjYXNlIDU0OnJldHVyblswLHQsODZdO2Nhc2UgNDY6Y2FzZSA1MjpyZXR1cm5bMCx0LDg1XTtkZWZhdWx0OnJldHVyblswLHQsODJdfXN3aXRjaChpMCl7Y2FzZSAwOnJldHVyblsyLGQ3KHQsbildO2Nhc2UgMTpyZXR1cm5bMix0XTtjYXNlIDI6dmFyIGIwPWp1KHQsbiksTzA9JG4oem4pLE0wPVIxKHQsTzAsbiksZXI9TTBbMV07cmV0dXJuWzEsZXIsU2koZXIsYjAsTTBbMl0sTzAsMSldO2Nhc2UgMzp2YXIgeXI9U2Uobik7aWYodFs1XSl7dmFyIHZyPXRbNF0/WXIwKHQsbnQodCxuKSx5cik6dCwkMD0kbSgxLHZyKSxFcj1KbShuKTtyZXR1cm4gcW4oamwobixFci0xfDAsMSksZ0NyKSYmbjAoamwobixFci0yfDAsMSksRkNyKT9bMCwkMCw4Nl06WzIsJDBdfXZhciBNcj1qdSh0LG4pLEJyPSRuKHpuKTtobihCcix5cik7dmFyIHFyPVIxKHQsQnIsbiksanI9cXJbMV07cmV0dXJuWzEsanIsU2koanIsTXIscXJbMl0sQnIsMSldO2Nhc2UgNDppZih0WzRdKXJldHVyblsyLCRtKDAsdCldOyR2KG4pLGduKG4pO3ZhciAkcj1UcjAoaihuKSkhPT0wPzE6MCxuZT0kciYmcShuKTtyZXR1cm4gbmU9PT0wP1swLHQsWXRdOmtlKFRDcik7Y2FzZSA1OnZhciBRcj1qdSh0LG4pLGJlPSRuKHpuKSxhZT1lMih0LGJlLG4pLHBlPWFlWzFdO3JldHVyblsxLHBlLFNpKHBlLFFyLGFlWzJdLGJlLDApXTtjYXNlIDY6dmFyIG9lPVNlKG4pLGNlPWp1KHQsbiksZ2U9JG4oem4pLHEwPSRuKHpuKTtobihxMCxvZSk7dmFyIEZyPSRyMCh0LG9lLGdlLHEwLDAsbiksXz1GclsxXSxrPVswLF9bMV0sY2UsRnJbMl1dLEk9RnJbM10sVT1NdChxMCk7cmV0dXJuWzAsXyxbMixbMCxrLE10KGdlKSxVLEldXV07Y2FzZSA3OnJldHVybiBSdCh0LG4sZnVuY3Rpb24oRCx1MCl7ZnVuY3Rpb24gWDAoRjApe2lmKGM5KGooRjApKT09PTApe2lmKEdjKGooRjApKT09PTApZm9yKDs7KXt2YXIgU3I9bjkoaihGMCkpO2lmKDI8U3I+Pj4wKXJldHVybiBxKEYwKTtzd2l0Y2goU3Ipe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cjpmb3IoOzspe2lmKEdjKGooRjApKT09PTApZm9yKDs7KXt2YXIgbXI9bjkoaihGMCkpO2lmKDI8bXI+Pj4wKXJldHVybiBxKEYwKTtzd2l0Y2gobXIpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6Y29udGludWUgcjtkZWZhdWx0OnJldHVybiAwfX1yZXR1cm4gcShGMCl9ZGVmYXVsdDpyZXR1cm4gMH19cmV0dXJuIHEoRjApfXJldHVybiBxKEYwKX1nbih1MCk7dmFyIEowPVAxKGoodTApKTtpZihKMD09PTApZm9yKDs7KXt2YXIgaXI9TjEoaih1MCkpO2lmKGlyIT09MCl7dmFyIFEwPWlyPT09MT9YMCh1MCk6cSh1MCk7YnJlYWt9fWVsc2UgdmFyIFEwPUowPT09MT9YMCh1MCk6cSh1MCk7cmV0dXJuIFEwPT09MD9bMCxELEhpKDAsU2UodTApKV06a2UoRUNyKX0pO2Nhc2UgODpyZXR1cm5bMCx0LEhpKDAsU2UobikpXTtjYXNlIDk6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihELHUwKXtmdW5jdGlvbiBYMChGMCl7aWYoYzkoaihGMCkpPT09MCl7aWYoR2MoaihGMCkpPT09MClmb3IoOzspe0cwKEYwLDApO3ZhciBTcj1lOShqKEYwKSk7aWYoU3IhPT0wKXtpZihTcj09PTEpcjpmb3IoOzspe2lmKEdjKGooRjApKT09PTApZm9yKDs7KXtHMChGMCwwKTt2YXIgbXI9ZTkoaihGMCkpO2lmKG1yIT09MCl7aWYobXI9PT0xKWNvbnRpbnVlIHI7cmV0dXJuIHEoRjApfX1yZXR1cm4gcShGMCl9cmV0dXJuIHEoRjApfX1yZXR1cm4gcShGMCl9cmV0dXJuIHEoRjApfWduKHUwKTt2YXIgSjA9UDEoaih1MCkpO2lmKEowPT09MClmb3IoOzspe3ZhciBpcj1OMShqKHUwKSk7aWYoaXIhPT0wKXt2YXIgUTA9aXI9PT0xP1gwKHUwKTpxKHUwKTticmVha319ZWxzZSB2YXIgUTA9SjA9PT0xP1gwKHUwKTpxKHUwKTtyZXR1cm4gUTA9PT0wP1swLEQscWMoMCxTZSh1MCkpXTprZSh3Q3IpfSk7Y2FzZSAxMDpyZXR1cm5bMCx0LHFjKDAsU2UobikpXTtjYXNlIDExOnJldHVybiBSdCh0LG4sZnVuY3Rpb24oRCx1MCl7ZnVuY3Rpb24gWDAoRjApe2lmKGI5KGooRjApKT09PTApe2lmKHp1KGooRjApKT09PTApZm9yKDs7KXt2YXIgU3I9YTkoaihGMCkpO2lmKDI8U3I+Pj4wKXJldHVybiBxKEYwKTtzd2l0Y2goU3Ipe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cjpmb3IoOzspe2lmKHp1KGooRjApKT09PTApZm9yKDs7KXt2YXIgbXI9YTkoaihGMCkpO2lmKDI8bXI+Pj4wKXJldHVybiBxKEYwKTtzd2l0Y2gobXIpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6Y29udGludWUgcjtkZWZhdWx0OnJldHVybiAwfX1yZXR1cm4gcShGMCl9ZGVmYXVsdDpyZXR1cm4gMH19cmV0dXJuIHEoRjApfXJldHVybiBxKEYwKX1nbih1MCk7dmFyIEowPVAxKGoodTApKTtpZihKMD09PTApZm9yKDs7KXt2YXIgaXI9TjEoaih1MCkpO2lmKGlyIT09MCl7dmFyIFEwPWlyPT09MT9YMCh1MCk6cSh1MCk7YnJlYWt9fWVsc2UgdmFyIFEwPUowPT09MT9YMCh1MCk6cSh1MCk7cmV0dXJuIFEwPT09MD9bMCxELEhpKDEsU2UodTApKV06a2Uoa0NyKX0pO2Nhc2UgMTI6cmV0dXJuWzAsdCxIaSgxLFNlKG4pKV07Y2FzZSAxMzpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEQsdTApe2Z1bmN0aW9uIFgwKEYwKXtpZihiOShqKEYwKSk9PT0wKXtpZih6dShqKEYwKSk9PT0wKWZvcig7Oyl7RzAoRjAsMCk7dmFyIFNyPXg5KGooRjApKTtpZihTciE9PTApe2lmKFNyPT09MSlyOmZvcig7Oyl7aWYoenUoaihGMCkpPT09MClmb3IoOzspe0cwKEYwLDApO3ZhciBtcj14OShqKEYwKSk7aWYobXIhPT0wKXtpZihtcj09PTEpY29udGludWUgcjtyZXR1cm4gcShGMCl9fXJldHVybiBxKEYwKX1yZXR1cm4gcShGMCl9fXJldHVybiBxKEYwKX1yZXR1cm4gcShGMCl9Z24odTApO3ZhciBKMD1QMShqKHUwKSk7aWYoSjA9PT0wKWZvcig7Oyl7dmFyIGlyPU4xKGoodTApKTtpZihpciE9PTApe3ZhciBRMD1pcj09PTE/WDAodTApOnEodTApO2JyZWFrfX1lbHNlIHZhciBRMD1KMD09PTE/WDAodTApOnEodTApO3JldHVybiBRMD09PTA/WzAsRCxxYygzLFNlKHUwKSldOmtlKGRDcil9KTtjYXNlIDE0OnJldHVyblswLHQscWMoMyxTZShuKSldO2Nhc2UgMTU6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihELHUwKXtmdW5jdGlvbiBYMChGMCl7aWYoenUoaihGMCkpPT09MCl7Zm9yKDs7KWlmKEcwKEYwLDApLHp1KGooRjApKSE9PTApcmV0dXJuIHEoRjApfXJldHVybiBxKEYwKX1nbih1MCk7dmFyIEowPVAxKGoodTApKTtpZihKMD09PTApZm9yKDs7KXt2YXIgaXI9TjEoaih1MCkpO2lmKGlyIT09MCl7dmFyIFEwPWlyPT09MT9YMCh1MCk6cSh1MCk7YnJlYWt9fWVsc2UgdmFyIFEwPUowPT09MT9YMCh1MCk6cSh1MCk7cmV0dXJuIFEwPT09MD9bMCxELHFjKDEsU2UodTApKV06a2UoaENyKX0pO2Nhc2UgMTY6cmV0dXJuWzAsdCxxYygxLFNlKG4pKV07Y2FzZSAxNzpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEQsdTApe2Z1bmN0aW9uIFgwKEYwKXtpZihabShqKEYwKSk9PT0wKXtpZihObihqKEYwKSk9PT0wKWZvcig7Oyl7dmFyIFNyPXQ5KGooRjApKTtpZigyPFNyPj4+MClyZXR1cm4gcShGMCk7c3dpdGNoKFNyKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnI6Zm9yKDs7KXtpZihObihqKEYwKSk9PT0wKWZvcig7Oyl7dmFyIG1yPXQ5KGooRjApKTtpZigyPG1yPj4+MClyZXR1cm4gcShGMCk7c3dpdGNoKG1yKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOmNvbnRpbnVlIHI7ZGVmYXVsdDpyZXR1cm4gMH19cmV0dXJuIHEoRjApfWRlZmF1bHQ6cmV0dXJuIDB9fXJldHVybiBxKEYwKX1yZXR1cm4gcShGMCl9Z24odTApO3ZhciBKMD1QMShqKHUwKSk7aWYoSjA9PT0wKWZvcig7Oyl7dmFyIGlyPU4xKGoodTApKTtpZihpciE9PTApe3ZhciBRMD1pcj09PTE/WDAodTApOnEodTApO2JyZWFrfX1lbHNlIHZhciBRMD1KMD09PTE/WDAodTApOnEodTApO3JldHVybiBRMD09PTA/WzAsRCxIaSgyLFNlKHUwKSldOmtlKHlDcil9KTtjYXNlIDE5OnJldHVybiBSdCh0LG4sZnVuY3Rpb24oRCx1MCl7ZnVuY3Rpb24gWDAoRjApe2lmKFptKGooRjApKT09PTApe2lmKE5uKGooRjApKT09PTApZm9yKDs7KXtHMChGMCwwKTt2YXIgU3I9XzkoaihGMCkpO2lmKFNyIT09MCl7aWYoU3I9PT0xKXI6Zm9yKDs7KXtpZihObihqKEYwKSk9PT0wKWZvcig7Oyl7RzAoRjAsMCk7dmFyIG1yPV85KGooRjApKTtpZihtciE9PTApe2lmKG1yPT09MSljb250aW51ZSByO3JldHVybiBxKEYwKX19cmV0dXJuIHEoRjApfXJldHVybiBxKEYwKX19cmV0dXJuIHEoRjApfXJldHVybiBxKEYwKX1nbih1MCk7dmFyIEowPVAxKGoodTApKTtpZihKMD09PTApZm9yKDs7KXt2YXIgaXI9TjEoaih1MCkpO2lmKGlyIT09MCl7dmFyIFEwPWlyPT09MT9YMCh1MCk6cSh1MCk7YnJlYWt9fWVsc2UgdmFyIFEwPUowPT09MT9YMCh1MCk6cSh1MCk7cmV0dXJuIFEwPT09MD9bMCxELHFjKDQsU2UodTApKV06a2UoX0NyKX0pO2Nhc2UgMjE6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihELHUwKXtmdW5jdGlvbiBYMChoMCl7Zm9yKDs7KXt2YXIgS3I9d2koaihoMCkpO2lmKDI8S3I+Pj4wKXJldHVybiBxKGgwKTtzd2l0Y2goS3Ipe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cjpmb3IoOzspe2lmKHBuKGooaDApKT09PTApZm9yKDs7KXt2YXIgcmU9d2koaihoMCkpO2lmKDI8cmU+Pj4wKXJldHVybiBxKGgwKTtzd2l0Y2gocmUpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6Y29udGludWUgcjtkZWZhdWx0OnJldHVybiAwfX1yZXR1cm4gcShoMCl9ZGVmYXVsdDpyZXR1cm4gMH19fWZ1bmN0aW9uIEowKGgwKXtmb3IoOzspe3ZhciBLcj1yMihqKGgwKSk7aWYoS3IhPT0wKXt2YXIgcmU9S3IhPT0xPzE6MDtyZXR1cm4gcmUmJnEoaDApfX19ZnVuY3Rpb24gaXIoaDApe3ZhciBLcj1FOShqKGgwKSk7aWYoMjxLcj4+PjApcmV0dXJuIHEoaDApO3N3aXRjaChLcil7Y2FzZSAwOnZhciByZT1DMShqKGgwKSk7cmV0dXJuIHJlPT09MD9KMChoMCk6cmU9PT0xP1gwKGgwKTpxKGgwKTtjYXNlIDE6cmV0dXJuIEowKGgwKTtkZWZhdWx0OnJldHVybiBYMChoMCl9fWZ1bmN0aW9uIFEwKGgwKXtpZihwbihqKGgwKSk9PT0wKWZvcig7Oyl7dmFyIEtyPWY3KGooaDApKTtpZigyPEtyPj4+MClyZXR1cm4gcShoMCk7c3dpdGNoKEtyKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnJldHVybiBpcihoMCk7ZGVmYXVsdDpyOmZvcig7Oyl7aWYocG4oaihoMCkpPT09MClmb3IoOzspe3ZhciByZT1mNyhqKGgwKSk7aWYoMjxyZT4+PjApcmV0dXJuIHEoaDApO3N3aXRjaChyZSl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpyZXR1cm4gaXIoaDApO2RlZmF1bHQ6Y29udGludWUgcn19cmV0dXJuIHEoaDApfX19cmV0dXJuIHEoaDApfWZ1bmN0aW9uIEYwKGgwKXt2YXIgS3I9cDkoaihoMCkpO2lmKEtyPT09MClmb3IoOzspe3ZhciByZT1mNyhqKGgwKSk7aWYoMjxyZT4+PjApcmV0dXJuIHEoaDApO3N3aXRjaChyZSl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpyZXR1cm4gaXIoaDApO2RlZmF1bHQ6cjpmb3IoOzspe2lmKHBuKGooaDApKT09PTApZm9yKDs7KXt2YXIgeGU9ZjcoaihoMCkpO2lmKDI8eGU+Pj4wKXJldHVybiBxKGgwKTtzd2l0Y2goeGUpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cmV0dXJuIGlyKGgwKTtkZWZhdWx0OmNvbnRpbnVlIHJ9fXJldHVybiBxKGgwKX19fXJldHVybiBLcj09PTE/aXIoaDApOnEoaDApfWZ1bmN0aW9uIFNyKGgwKXt2YXIgS3I9cjkoaihoMCkpO3JldHVybiBLcj09PTA/RjAoaDApOktyPT09MT9pcihoMCk6cShoMCl9ZnVuY3Rpb24gbXIoaDApe2Zvcig7Oyl7dmFyIEtyPWw5KGooaDApKTtpZigyPEtyPj4+MClyZXR1cm4gcShoMCk7c3dpdGNoKEtyKXtjYXNlIDA6cmV0dXJuIEYwKGgwKTtjYXNlIDE6Y29udGludWU7ZGVmYXVsdDpyZXR1cm4gaXIoaDApfX19Z24odTApO3ZhciBDcj1mOShqKHUwKSk7aWYoMzxDcj4+PjApdmFyIHNyPXEodTApO2Vsc2Ugc3dpdGNoKENyKXtjYXNlIDA6Zm9yKDs7KXt2YXIgUHI9cWwoaih1MCkpO2lmKDM8UHI+Pj4wKXZhciBzcj1xKHUwKTtlbHNlIHN3aXRjaChQcil7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTp2YXIgc3I9UTAodTApO2JyZWFrO2Nhc2UgMjp2YXIgc3I9U3IodTApO2JyZWFrO2RlZmF1bHQ6dmFyIHNyPW1yKHUwKX1icmVha31icmVhaztjYXNlIDE6dmFyIHNyPVEwKHUwKTticmVhaztjYXNlIDI6dmFyIHNyPVNyKHUwKTticmVhaztkZWZhdWx0OnZhciBzcj1tcih1MCl9aWYoc3I9PT0wKXt2YXIgSzA9U2UodTApLFVyPUd1KEQsbnQoRCx1MCksMjMpO3JldHVyblswLFVyLEhpKDIsSzApXX1yZXR1cm4ga2UobUNyKX0pO2Nhc2UgMjI6dmFyIFk9U2UobikseTA9R3UodCxudCh0LG4pLDIzKTtyZXR1cm5bMCx5MCxIaSgyLFkpXTtjYXNlIDIzOnJldHVybiBSdCh0LG4sZnVuY3Rpb24oRCx1MCl7ZnVuY3Rpb24gWDAoSzApe2Zvcig7Oyl7RzAoSzAsMCk7dmFyIFVyPURzKGooSzApKTtpZihVciE9PTApe2lmKFVyPT09MSlyOmZvcig7Oyl7aWYocG4oaihLMCkpPT09MClmb3IoOzspe0cwKEswLDApO3ZhciBoMD1EcyhqKEswKSk7aWYoaDAhPT0wKXtpZihoMD09PTEpY29udGludWUgcjtyZXR1cm4gcShLMCl9fXJldHVybiBxKEswKX1yZXR1cm4gcShLMCl9fX1mdW5jdGlvbiBKMChLMCl7Zm9yKDs7KWlmKEcwKEswLDApLHBuKGooSzApKSE9PTApcmV0dXJuIHEoSzApfWZ1bmN0aW9uIGlyKEswKXt2YXIgVXI9RTkoaihLMCkpO2lmKDI8VXI+Pj4wKXJldHVybiBxKEswKTtzd2l0Y2goVXIpe2Nhc2UgMDp2YXIgaDA9QzEoaihLMCkpO3JldHVybiBoMD09PTA/SjAoSzApOmgwPT09MT9YMChLMCk6cShLMCk7Y2FzZSAxOnJldHVybiBKMChLMCk7ZGVmYXVsdDpyZXR1cm4gWDAoSzApfX1mdW5jdGlvbiBRMChLMCl7aWYocG4oaihLMCkpPT09MClmb3IoOzspe3ZhciBVcj1mNyhqKEswKSk7aWYoMjxVcj4+PjApcmV0dXJuIHEoSzApO3N3aXRjaChVcil7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpyZXR1cm4gaXIoSzApO2RlZmF1bHQ6cjpmb3IoOzspe2lmKHBuKGooSzApKT09PTApZm9yKDs7KXt2YXIgaDA9ZjcoaihLMCkpO2lmKDI8aDA+Pj4wKXJldHVybiBxKEswKTtzd2l0Y2goaDApe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cmV0dXJuIGlyKEswKTtkZWZhdWx0OmNvbnRpbnVlIHJ9fXJldHVybiBxKEswKX19fXJldHVybiBxKEswKX1mdW5jdGlvbiBGMChLMCl7dmFyIFVyPXA5KGooSzApKTtpZihVcj09PTApZm9yKDs7KXt2YXIgaDA9ZjcoaihLMCkpO2lmKDI8aDA+Pj4wKXJldHVybiBxKEswKTtzd2l0Y2goaDApe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6cmV0dXJuIGlyKEswKTtkZWZhdWx0OnI6Zm9yKDs7KXtpZihwbihqKEswKSk9PT0wKWZvcig7Oyl7dmFyIEtyPWY3KGooSzApKTtpZigyPEtyPj4+MClyZXR1cm4gcShLMCk7c3dpdGNoKEtyKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnJldHVybiBpcihLMCk7ZGVmYXVsdDpjb250aW51ZSByfX1yZXR1cm4gcShLMCl9fX1yZXR1cm4gVXI9PT0xP2lyKEswKTpxKEswKX1mdW5jdGlvbiBTcihLMCl7dmFyIFVyPXI5KGooSzApKTtyZXR1cm4gVXI9PT0wP0YwKEswKTpVcj09PTE/aXIoSzApOnEoSzApfWZ1bmN0aW9uIG1yKEswKXtmb3IoOzspe3ZhciBVcj1sOShqKEswKSk7aWYoMjxVcj4+PjApcmV0dXJuIHEoSzApO3N3aXRjaChVcil7Y2FzZSAwOnJldHVybiBGMChLMCk7Y2FzZSAxOmNvbnRpbnVlO2RlZmF1bHQ6cmV0dXJuIGlyKEswKX19fWduKHUwKTt2YXIgQ3I9Zjkoaih1MCkpO2lmKDM8Q3I+Pj4wKXZhciBzcj1xKHUwKTtlbHNlIHN3aXRjaChDcil7Y2FzZSAwOmZvcig7Oyl7dmFyIFByPXFsKGoodTApKTtpZigzPFByPj4+MCl2YXIgc3I9cSh1MCk7ZWxzZSBzd2l0Y2goUHIpe2Nhc2UgMDpjb250aW51ZTtjYXNlIDE6dmFyIHNyPVEwKHUwKTticmVhaztjYXNlIDI6dmFyIHNyPVNyKHUwKTticmVhaztkZWZhdWx0OnZhciBzcj1tcih1MCl9YnJlYWt9YnJlYWs7Y2FzZSAxOnZhciBzcj1RMCh1MCk7YnJlYWs7Y2FzZSAyOnZhciBzcj1Tcih1MCk7YnJlYWs7ZGVmYXVsdDp2YXIgc3I9bXIodTApfXJldHVybiBzcj09PTA/WzAsRCxxYyg0LFNlKHUwKSldOmtlKHBDcil9KTtjYXNlIDI1OnJldHVybiBSdCh0LG4sZnVuY3Rpb24oRCx1MCl7ZnVuY3Rpb24gWDAoSzApe2Zvcig7Oyl7dmFyIFVyPXdpKGooSzApKTtpZigyPFVyPj4+MClyZXR1cm4gcShLMCk7c3dpdGNoKFVyKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnI6Zm9yKDs7KXtpZihwbihqKEswKSk9PT0wKWZvcig7Oyl7dmFyIGgwPXdpKGooSzApKTtpZigyPGgwPj4+MClyZXR1cm4gcShLMCk7c3dpdGNoKGgwKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOmNvbnRpbnVlIHI7ZGVmYXVsdDpyZXR1cm4gMH19cmV0dXJuIHEoSzApfWRlZmF1bHQ6cmV0dXJuIDB9fX1mdW5jdGlvbiBKMChLMCl7cmV0dXJuIHBuKGooSzApKT09PTA/WDAoSzApOnEoSzApfWZ1bmN0aW9uIGlyKEswKXt2YXIgVXI9cjIoaihLMCkpO2lmKFVyPT09MClyZXR1cm4gWDAoSzApO3ZhciBoMD1VciE9PTE/MTowO3JldHVybiBoMCYmcShLMCl9ZnVuY3Rpb24gUTAoSzApe2Zvcig7Oyl7dmFyIFVyPUQxKGooSzApKTtpZihVcj09PTApcmV0dXJuIGlyKEswKTtpZihVciE9PTEpcmV0dXJuIHEoSzApfX1mdW5jdGlvbiBGMChLMCl7Zm9yKDs7KXt2YXIgVXI9QmMoaihLMCkpO2lmKDI8VXI+Pj4wKXJldHVybiBxKEswKTtzd2l0Y2goVXIpe2Nhc2UgMDpyZXR1cm4gaXIoSzApO2Nhc2UgMTpjb250aW51ZTtkZWZhdWx0OnI6Zm9yKDs7KXtpZihwbihqKEswKSk9PT0wKWZvcig7Oyl7dmFyIGgwPUJjKGooSzApKTtpZigyPGgwPj4+MClyZXR1cm4gcShLMCk7c3dpdGNoKGgwKXtjYXNlIDA6cmV0dXJuIGlyKEswKTtjYXNlIDE6Y29udGludWU7ZGVmYXVsdDpjb250aW51ZSByfX1yZXR1cm4gcShLMCl9fX19Z24odTApO3ZhciBTcj1mOShqKHUwKSk7aWYoMzxTcj4+PjApdmFyIG1yPXEodTApO2Vsc2Ugc3dpdGNoKFNyKXtjYXNlIDA6Zm9yKDs7KXt2YXIgQ3I9cWwoaih1MCkpO2lmKDM8Q3I+Pj4wKXZhciBtcj1xKHUwKTtlbHNlIHN3aXRjaChDcil7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTp2YXIgbXI9SjAodTApO2JyZWFrO2Nhc2UgMjp2YXIgbXI9UTAodTApO2JyZWFrO2RlZmF1bHQ6dmFyIG1yPUYwKHUwKX1icmVha31icmVhaztjYXNlIDE6dmFyIG1yPUowKHUwKTticmVhaztjYXNlIDI6dmFyIG1yPVEwKHUwKTticmVhaztkZWZhdWx0OnZhciBtcj1GMCh1MCl9aWYobXI9PT0wKXt2YXIgc3I9U2UodTApLFByPUd1KEQsbnQoRCx1MCksMjIpO3JldHVyblswLFByLEhpKDIsc3IpXX1yZXR1cm4ga2UoYkNyKX0pO2Nhc2UgMjY6cmV0dXJuIFJ0KHQsbixmdW5jdGlvbihELHUwKXtmdW5jdGlvbiBYMChtcil7Zm9yKDs7KXt2YXIgQ3I9cjIoaihtcikpO2lmKENyIT09MCl7dmFyIHNyPUNyIT09MT8xOjA7cmV0dXJuIHNyJiZxKG1yKX19fWZ1bmN0aW9uIEowKG1yKXtmb3IoOzspe3ZhciBDcj13aShqKG1yKSk7aWYoMjxDcj4+PjApcmV0dXJuIHEobXIpO3N3aXRjaChDcil7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpyOmZvcig7Oyl7aWYocG4oaihtcikpPT09MClmb3IoOzspe3ZhciBzcj13aShqKG1yKSk7aWYoMjxzcj4+PjApcmV0dXJuIHEobXIpO3N3aXRjaChzcil7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpjb250aW51ZSByO2RlZmF1bHQ6cmV0dXJuIDB9fXJldHVybiBxKG1yKX1kZWZhdWx0OnJldHVybiAwfX19Z24odTApO3ZhciBpcj1qKHUwKSxRMD00NDxpcj81Nzxpcj8tMTpWcihYRHIsaXIrbXZ8MCktMXwwOi0xO2lmKDI8UTA+Pj4wKXZhciBGMD1xKHUwKTtlbHNlIHN3aXRjaChRMCl7Y2FzZSAwOmZvcig7Oyl7dmFyIFNyPWpyMChqKHUwKSk7aWYoMjxTcj4+PjApdmFyIEYwPXEodTApO2Vsc2Ugc3dpdGNoKFNyKXtjYXNlIDA6Y29udGludWU7Y2FzZSAxOnZhciBGMD1YMCh1MCk7YnJlYWs7ZGVmYXVsdDp2YXIgRjA9SjAodTApfWJyZWFrfWJyZWFrO2Nhc2UgMTp2YXIgRjA9WDAodTApO2JyZWFrO2RlZmF1bHQ6dmFyIEYwPUowKHUwKX1yZXR1cm4gRjA9PT0wP1swLEQsSGkoMixTZSh1MCkpXTprZShsQ3IpfSk7Y2FzZSAyNzp2YXIgUDA9U2UobiksSTA9R3UodCxudCh0LG4pLDIyKTtyZXR1cm5bMCxJMCxIaSgyLFAwKV07Y2FzZSAyOTpyZXR1cm4gUnQodCxuLGZ1bmN0aW9uKEQsdTApe2Z1bmN0aW9uIFgwKHJlKXtmb3IoOzspe0cwKHJlLDApO3ZhciB4ZT1EcyhqKHJlKSk7aWYoeGUhPT0wKXtpZih4ZT09PTEpcjpmb3IoOzspe2lmKHBuKGoocmUpKT09PTApZm9yKDs7KXtHMChyZSwwKTt2YXIgUmU9RHMoaihyZSkpO2lmKFJlIT09MCl7aWYoUmU9PT0xKWNvbnRpbnVlIHI7cmV0dXJuIHEocmUpfX1yZXR1cm4gcShyZSl9cmV0dXJuIHEocmUpfX19ZnVuY3Rpb24gSjAocmUpe3JldHVybiBHMChyZSwwKSxwbihqKHJlKSk9PT0wP1gwKHJlKTpxKHJlKX1nbih1MCk7dmFyIGlyPWY5KGoodTApKTtpZigzPGlyPj4+MCl2YXIgUTA9cSh1MCk7ZWxzZSBzd2l0Y2goaXIpe2Nhc2UgMDpmb3IoOzspe3ZhciBGMD1qcjAoaih1MCkpO2lmKDI8RjA+Pj4wKXZhciBRMD1xKHUwKTtlbHNlIHN3aXRjaChGMCl7Y2FzZSAwOmNvbnRpbnVlO2Nhc2UgMTpmb3IoOzspe0cwKHUwLDApO3ZhciBTcj1EMShqKHUwKSksbXI9U3IhPT0wPzE6MDtpZihtcil7aWYoU3I9PT0xKWNvbnRpbnVlO3ZhciBRMD1xKHUwKX1lbHNlIHZhciBRMD1tcjticmVha31icmVhaztkZWZhdWx0OmZvcig7Oyl7RzAodTAsMCk7dmFyIENyPUJjKGoodTApKTtpZigyPENyPj4+MCl2YXIgUTA9cSh1MCk7ZWxzZSBzd2l0Y2goQ3Ipe2Nhc2UgMDp2YXIgUTA9MDticmVhaztjYXNlIDE6Y29udGludWU7ZGVmYXVsdDpyOmZvcig7Oyl7aWYocG4oaih1MCkpPT09MClmb3IoOzspe0cwKHUwLDApO3ZhciBzcj1CYyhqKHUwKSk7aWYoMjxzcj4+PjApdmFyIFByPXEodTApO2Vsc2Ugc3dpdGNoKHNyKXtjYXNlIDA6dmFyIFByPTA7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2RlZmF1bHQ6Y29udGludWUgcn1icmVha31lbHNlIHZhciBQcj1xKHUwKTt2YXIgUTA9UHI7YnJlYWt9fWJyZWFrfX1icmVha31icmVhaztjYXNlIDE6dmFyIFEwPXBuKGoodTApKT09PTA/WDAodTApOnEodTApO2JyZWFrO2Nhc2UgMjpmb3IoOzspe0cwKHUwLDApO3ZhciBLMD1EMShqKHUwKSk7aWYoSzA9PT0wKXZhciBRMD1KMCh1MCk7ZWxzZXtpZihLMD09PTEpY29udGludWU7dmFyIFEwPXEodTApfWJyZWFrfWJyZWFrO2RlZmF1bHQ6Zm9yKDs7KXtHMCh1MCwwKTt2YXIgVXI9QmMoaih1MCkpO2lmKDI8VXI+Pj4wKXZhciBRMD1xKHUwKTtlbHNlIHN3aXRjaChVcil7Y2FzZSAwOnZhciBRMD1KMCh1MCk7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2RlZmF1bHQ6cjpmb3IoOzspe2lmKHBuKGoodTApKT09PTApZm9yKDs7KXtHMCh1MCwwKTt2YXIgaDA9QmMoaih1MCkpO2lmKDI8aDA+Pj4wKXZhciBLcj1xKHUwKTtlbHNlIHN3aXRjaChoMCl7Y2FzZSAwOnZhciBLcj1KMCh1MCk7YnJlYWs7Y2FzZSAxOmNvbnRpbnVlO2RlZmF1bHQ6Y29udGludWUgcn1icmVha31lbHNlIHZhciBLcj1xKHUwKTt2YXIgUTA9S3I7YnJlYWt9fWJyZWFrfX1yZXR1cm4gUTA9PT0wP1swLEQscWMoNCxTZSh1MCkpXTprZSh2Q3IpfSk7Y2FzZSAzMTpyZXR1cm5bMCx0LDY2XTtjYXNlIDE4OmNhc2UgMjg6cmV0dXJuWzAsdCxIaSgyLFNlKG4pKV07ZGVmYXVsdDpyZXR1cm5bMCx0LHFjKDQsU2UobikpXX19ZnVuY3Rpb24gWGwodCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Zvcih2YXIgZT0wLGk9bjs7KXt2YXIgeD1vKHQsaSxpWzJdKTtzd2l0Y2goeFswXSl7Y2FzZSAwOnZhciBjPXhbMl0scz14WzFdLHA9WHIwKHMsYykseT1lPT09MD8wOnllKGUpLFQ9c1s2XTtpZihUPT09MClyZXR1cm5bMCxbMCxzWzFdLHNbMl0sc1szXSxzWzRdLHNbNV0sc1s2XSxwXSxbMCxjLHAsMCx5XV07dmFyIEU9WzAsYyxwLHllKFQpLHldO3JldHVyblswLFswLHNbMV0sc1syXSxzWzNdLHNbNF0sc1s1XSxfcjAscF0sRV07Y2FzZSAxOnZhciBkPXhbMl0sdz14WzFdLGU9WzAsZCxlXSxpPVswLHdbMV0sd1syXSx3WzNdLHdbNF0sd1s1XSx3WzZdLGRbMV1dO2NvbnRpbnVlO2RlZmF1bHQ6dmFyIGk9eFsxXTtjb250aW51ZX19fX12YXIgR2VlPVhsKERlZSksTWVlPVhsKExlZSksQmVlPVhsKFJlZSkscWVlPVhsKGplZSksVWVlPVhsKFBlZSksTXU9ZUwoWzAsYnpdKTtmdW5jdGlvbiBZbCh0LG4pe3JldHVyblswLDAsMCxuLHlyMCh0KV19ZnVuY3Rpb24gZzkodCl7dmFyIG49dFs0XTtzd2l0Y2godFszXSl7Y2FzZSAwOnZhciBjMD11KFVlZSxuKTticmVhaztjYXNlIDE6dmFyIGMwPXUocWVlLG4pO2JyZWFrO2Nhc2UgMjp2YXIgYzA9dShNZWUsbik7YnJlYWs7Y2FzZSAzOnZhciBlPWg3KG4sblsyXSksaT0kbih6bikseD0kbih6biksYz1uWzJdO2duKGMpO3ZhciBzPWooYykscD10czxzP0h1PHM/MTokdTxzPzI6MTpWcihmUnIscysxfDApLTF8MDtpZig1PHA+Pj4wKXZhciB5PXEoYyk7ZWxzZSBzd2l0Y2gocCl7Y2FzZSAwOnZhciB5PTE7YnJlYWs7Y2FzZSAxOnZhciB5PTQ7YnJlYWs7Y2FzZSAyOnZhciB5PTA7YnJlYWs7Y2FzZSAzOkcwKGMsMCk7dmFyIFQ9eGkoaihjKSkhPT0wPzE6MCx5PVQmJnEoYyk7YnJlYWs7Y2FzZSA0OnZhciB5PTI7YnJlYWs7ZGVmYXVsdDp2YXIgeT0zfWlmKDQ8eT4+PjApdmFyIEU9a2Uoc0NyKTtlbHNlIHN3aXRjaCh5KXtjYXNlIDA6dmFyIGQ9U2UoYyk7aG4oeCxkKSxobihpLGQpO3ZhciB3PXBMKGQ3KG4sYyksMixpLHgsYyksRz1oNyh3LGMpLEE9TXQoaSksUz1NdCh4KSxFPVswLHcsWzgsWzAsd1sxXSxlLEddLEEsU11dO2JyZWFrO2Nhc2UgMTp2YXIgRT1bMCxuLFBuXTticmVhaztjYXNlIDI6dmFyIEU9WzAsbiw5OF07YnJlYWs7Y2FzZSAzOnZhciBFPVswLG4sMF07YnJlYWs7ZGVmYXVsdDokdihjKTt2YXIgTT1wTChuLDIsaSx4LGMpLEs9aDcoTSxjKSxWPU10KGkpLGYwPU10KHgpLEU9WzAsTSxbOCxbMCxNWzFdLGUsS10sVixmMF1dfXZhciBtMD1FWzJdLGswPUVbMV0sZzA9WHIwKGswLG0wKSxlMD1rMFs2XTtpZihlMD09PTApdmFyIGw9WzAsazAsWzAsbTAsZzAsMCwwXV07ZWxzZSB2YXIgeDA9WzAsbTAsZzAseWUoZTApLDBdLGw9WzAsWzAsazBbMV0sazBbMl0sazBbM10sazBbNF0sazBbNV0sMCxrMFs3XV0seDBdO3ZhciBjMD1sO2JyZWFrO2Nhc2UgNDp2YXIgYzA9dShCZWUsbik7YnJlYWs7ZGVmYXVsdDp2YXIgYzA9dShHZWUsbil9dmFyIHQwPWMwWzFdLG8wPXlyMCh0MCksdzA9WzAsbzAsYzBbMl1dO3JldHVybiB0WzRdPXQwLHRbMV0/dFsyXT1bMCx3MF06dFsxXT1bMCx3MF0sdzB9ZnVuY3Rpb24gUXIwKHQpe3ZhciBuPXRbMV07cmV0dXJuIG4/blsxXVsyXTpnOSh0KVsyXX1mdW5jdGlvbiBIZWUodCxuLGUsaSl7dmFyIHg9dCYmdFsxXSxjPW4mJm5bMV07dHJ5e3ZhciBzPTAscD1wcjAoaSkseT1zLFQ9cH1jYXRjaChBKXtpZihBPUV0KEEpLEEhPT1JMSl0aHJvdyBBO3ZhciBFPVswLFswLFswLGUsZXpbMl0sZXpbM11dLDg2XSwwXSx5PUUsVD1wcjAoWGpyKX12YXIgZD1jP2NbMV06QnYsdz1DZWUoZSxULGRbNF0pLEc9WzAsWWwodywwKV07cmV0dXJuWzAsWzAseV0sWzAsMF0sTXVbMV0sWzAsMF0sZFs1XSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsWzAsVmpyXSxbMCx3XSxHLFswLHhdLGQsZSxbMCwwXSxbMCxZanJdXX1mdW5jdGlvbiBuMih0KXtyZXR1cm4gYmwodFsyM11bMV0pfWZ1bmN0aW9uIGZ1KHQpe3JldHVybiB0WzI3XVs0XX1mdW5jdGlvbiB1ZSh0LG4pe3ZhciBlPW5bMl07dFsxXVsxXT1bMCxbMCxuWzFdLGVdLHRbMV1bMV1dO3ZhciBpPXRbMjJdO3JldHVybiBpJiZvKGlbMV0sdCxlKX1mdW5jdGlvbiBWbCh0LG4pe3JldHVybiB0WzMwXVsxXT1uLDB9ZnVuY3Rpb24gUnModCxuKXtpZih0PT09MClyZXR1cm4gUXIwKG5bMjVdWzFdKTtpZih0PT09MSl7dmFyIGU9blsyNV1bMV07ZVsxXXx8ZzkoZSk7dmFyIGk9ZVsyXTtyZXR1cm4gaT9pWzFdWzJdOmc5KGUpWzJdfXRocm93WzAsU24scWpyXX1mdW5jdGlvbiBfcyh0LG4pe3JldHVybiB0PT09bls1XT9uOlswLG5bMV0sblsyXSxuWzNdLG5bNF0sdCxuWzZdLG5bN10sbls4XSxuWzldLG5bMTBdLG5bMTFdLG5bMTJdLG5bMTNdLG5bMTRdLG5bMTVdLG5bMTZdLG5bMTddLG5bMThdLG5bMTldLG5bMjBdLG5bMjFdLG5bMjJdLG5bMjNdLG5bMjRdLG5bMjVdLG5bMjZdLG5bMjddLG5bMjhdLG5bMjldLG5bMzBdXX1mdW5jdGlvbiBtTCh0LG4pe3JldHVybiB0PT09blsxN10/bjpbMCxuWzFdLG5bMl0sblszXSxuWzRdLG5bNV0sbls2XSxuWzddLG5bOF0sbls5XSxuWzEwXSxuWzExXSxuWzEyXSxuWzEzXSxuWzE0XSxuWzE1XSxuWzE2XSx0LG5bMThdLG5bMTldLG5bMjBdLG5bMjFdLG5bMjJdLG5bMjNdLG5bMjRdLG5bMjVdLG5bMjZdLG5bMjddLG5bMjhdLG5bMjldLG5bMzBdXX1mdW5jdGlvbiByZTAodCxuKXtyZXR1cm4gdD09PW5bMThdP246WzAsblsxXSxuWzJdLG5bM10sbls0XSxuWzVdLG5bNl0sbls3XSxuWzhdLG5bOV0sblsxMF0sblsxMV0sblsxMl0sblsxM10sblsxNF0sblsxNV0sblsxNl0sblsxN10sdCxuWzE5XSxuWzIwXSxuWzIxXSxuWzIyXSxuWzIzXSxuWzI0XSxuWzI1XSxuWzI2XSxuWzI3XSxuWzI4XSxuWzI5XSxuWzMwXV19ZnVuY3Rpb24gZWUwKHQsbil7cmV0dXJuIHQ9PT1uWzE5XT9uOlswLG5bMV0sblsyXSxuWzNdLG5bNF0sbls1XSxuWzZdLG5bN10sbls4XSxuWzldLG5bMTBdLG5bMTFdLG5bMTJdLG5bMTNdLG5bMTRdLG5bMTVdLG5bMTZdLG5bMTddLG5bMThdLHQsblsyMF0sblsyMV0sblsyMl0sblsyM10sblsyNF0sblsyNV0sblsyNl0sblsyN10sblsyOF0sblsyOV0sblszMF1dfWZ1bmN0aW9uIHQyKHQsbil7cmV0dXJuIHQ9PT1uWzIxXT9uOlswLG5bMV0sblsyXSxuWzNdLG5bNF0sbls1XSxuWzZdLG5bN10sbls4XSxuWzldLG5bMTBdLG5bMTFdLG5bMTJdLG5bMTNdLG5bMTRdLG5bMTVdLG5bMTZdLG5bMTddLG5bMThdLG5bMTldLG5bMjBdLHQsblsyMl0sblsyM10sblsyNF0sblsyNV0sblsyNl0sblsyN10sblsyOF0sblsyOV0sblszMF1dfWZ1bmN0aW9uIEY5KHQsbil7cmV0dXJuIHQ9PT1uWzE0XT9uOlswLG5bMV0sblsyXSxuWzNdLG5bNF0sbls1XSxuWzZdLG5bN10sbls4XSxuWzldLG5bMTBdLG5bMTFdLG5bMTJdLG5bMTNdLHQsblsxNV0sblsxNl0sblsxN10sblsxOF0sblsxOV0sblsyMF0sblsyMV0sblsyMl0sblsyM10sblsyNF0sblsyNV0sblsyNl0sblsyN10sblsyOF0sblsyOV0sblszMF1dfWZ1bmN0aW9uIHpsKHQsbil7cmV0dXJuIHQ9PT1uWzhdP246WzAsblsxXSxuWzJdLG5bM10sbls0XSxuWzVdLG5bNl0sbls3XSx0LG5bOV0sblsxMF0sblsxMV0sblsxMl0sblsxM10sblsxNF0sblsxNV0sblsxNl0sblsxN10sblsxOF0sblsxOV0sblsyMF0sblsyMV0sblsyMl0sblsyM10sblsyNF0sblsyNV0sblsyNl0sblsyN10sblsyOF0sblsyOV0sblszMF1dfWZ1bmN0aW9uIEtsKHQsbil7cmV0dXJuIHQ9PT1uWzEyXT9uOlswLG5bMV0sblsyXSxuWzNdLG5bNF0sbls1XSxuWzZdLG5bN10sbls4XSxuWzldLG5bMTBdLG5bMTFdLHQsblsxM10sblsxNF0sblsxNV0sblsxNl0sblsxN10sblsxOF0sblsxOV0sblsyMF0sblsyMV0sblsyMl0sblsyM10sblsyNF0sblsyNV0sblsyNl0sblsyN10sblsyOF0sblsyOV0sblszMF1dfWZ1bmN0aW9uIHUyKHQsbil7cmV0dXJuIHQ9PT1uWzE1XT9uOlswLG5bMV0sblsyXSxuWzNdLG5bNF0sbls1XSxuWzZdLG5bN10sbls4XSxuWzldLG5bMTBdLG5bMTFdLG5bMTJdLG5bMTNdLG5bMTRdLHQsblsxNl0sblsxN10sblsxOF0sblsxOV0sblsyMF0sblsyMV0sblsyMl0sblsyM10sblsyNF0sblsyNV0sblsyNl0sblsyN10sblsyOF0sblsyOV0sblszMF1dfWZ1bmN0aW9uIG5lMCh0LG4pe3JldHVybiB0PT09bls2XT9uOlswLG5bMV0sblsyXSxuWzNdLG5bNF0sbls1XSx0LG5bN10sbls4XSxuWzldLG5bMTBdLG5bMTFdLG5bMTJdLG5bMTNdLG5bMTRdLG5bMTVdLG5bMTZdLG5bMTddLG5bMThdLG5bMTldLG5bMjBdLG5bMjFdLG5bMjJdLG5bMjNdLG5bMjRdLG5bMjVdLG5bMjZdLG5bMjddLG5bMjhdLG5bMjldLG5bMzBdXX1mdW5jdGlvbiB0ZTAodCxuKXtyZXR1cm4gdD09PW5bN10/bjpbMCxuWzFdLG5bMl0sblszXSxuWzRdLG5bNV0sbls2XSx0LG5bOF0sbls5XSxuWzEwXSxuWzExXSxuWzEyXSxuWzEzXSxuWzE0XSxuWzE1XSxuWzE2XSxuWzE3XSxuWzE4XSxuWzE5XSxuWzIwXSxuWzIxXSxuWzIyXSxuWzIzXSxuWzI0XSxuWzI1XSxuWzI2XSxuWzI3XSxuWzI4XSxuWzI5XSxuWzMwXV19ZnVuY3Rpb24gX0wodCxuKXtyZXR1cm4gdD09PW5bMTNdP246WzAsblsxXSxuWzJdLG5bM10sbls0XSxuWzVdLG5bNl0sbls3XSxuWzhdLG5bOV0sblsxMF0sblsxMV0sblsxMl0sdCxuWzE0XSxuWzE1XSxuWzE2XSxuWzE3XSxuWzE4XSxuWzE5XSxuWzIwXSxuWzIxXSxuWzIyXSxuWzIzXSxuWzI0XSxuWzI1XSxuWzI2XSxuWzI3XSxuWzI4XSxuWzI5XSxuWzMwXV19ZnVuY3Rpb24gVDkodCxuKXtyZXR1cm5bMCxuWzFdLG5bMl0sblszXSxuWzRdLG5bNV0sbls2XSxuWzddLG5bOF0sbls5XSxuWzEwXSxuWzExXSxuWzEyXSxuWzEzXSxuWzE0XSxuWzE1XSxuWzE2XSxuWzE3XSxuWzE4XSxuWzE5XSxuWzIwXSxuWzIxXSxbMCx0XSxuWzIzXSxuWzI0XSxuWzI1XSxuWzI2XSxuWzI3XSxuWzI4XSxuWzI5XSxuWzMwXV19ZnVuY3Rpb24geUwodCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gdWUodCxlKX1yZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIER1KG4sZSl9fWZ1bmN0aW9uIGkyKHQpe3ZhciBuPXRbNF1bMV0sZT1uJiZbMCxuWzFdWzJdXTtyZXR1cm4gZX1mdW5jdGlvbiB1ZTAodCl7dmFyIG49dFs0XVsxXSxlPW4mJlswLG5bMV1bMV1dO3JldHVybiBlfWZ1bmN0aW9uIGllMCh0KXtyZXR1cm5bMCx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSx0WzddLHRbOF0sdFs5XSx0WzEwXSx0WzExXSx0WzEyXSx0WzEzXSx0WzE0XSx0WzE1XSx0WzE2XSx0WzE3XSx0WzE4XSx0WzE5XSx0WzIwXSx0WzIxXSwwLHRbMjNdLHRbMjRdLHRbMjVdLHRbMjZdLHRbMjddLHRbMjhdLHRbMjldLHRbMzBdXX1mdW5jdGlvbiBmZTAodCxuLGUsaSl7cmV0dXJuWzAsdFsxXSx0WzJdLE11WzFdLHRbNF0sdFs1XSwwLDAsMCwwLDAsMSx0WzEyXSx0WzEzXSx0WzE0XSx0WzE1XSx0WzE2XSxlLG4sdFsxOV0saSx0WzIxXSx0WzIyXSx0WzIzXSx0WzI0XSx0WzI1XSx0WzI2XSx0WzI3XSx0WzI4XSx0WzI5XSx0WzMwXV19ZnVuY3Rpb24geGUwKHQpe3ZhciBuPUVlKHQseGpyKSxlPTA7aWYoMDw9bil7aWYoMDxuKXt2YXIgaT1FZSh0LGdqcik7MDw9aT8wPGkmJm4wKHQsRGpyKSYmbjAodCxManIpJiZuMCh0LFJqcikmJm4wKHQsampyKSYmbjAodCxHanIpJiZuMCh0LE1qcikmJm4wKHQsQmpyKSYmKGU9MSk6bjAodCxGanIpJiZuMCh0LFRqcikmJm4wKHQsT2pyKSYmbjAodCxJanIpJiZuMCh0LEFqcikmJm4wKHQsTmpyKSYmbjAodCxDanIpJiZuMCh0LFBqcikmJihlPTEpfX1lbHNle3ZhciB4PUVlKHQsb2pyKTswPD14PzA8eCYmbjAodCxfanIpJiZuMCh0LHlqcikmJm4wKHQsaGpyKSYmbjAodCxkanIpJiZuMCh0LGtqcikmJm4wKHQsd2pyKSYmbjAodCxFanIpJiZuMCh0LFNqcikmJihlPTEpOm4wKHQsYWpyKSYmbjAodCxjanIpJiZuMCh0LHNqcikmJm4wKHQsdmpyKSYmbjAodCxsanIpJiZuMCh0LGJqcikmJm4wKHQscGpyKSYmbjAodCxtanIpJiYoZT0xKX1yZXR1cm4gZT8wOjF9ZnVuY3Rpb24gTzkodCl7cmV0dXJuIG4wKHQsZmpyKT8wOjF9ZnVuY3Rpb24gaEwodCl7aWYodHlwZW9mIHQ9PVwibnVtYmVyXCIpe2lmKHQ9PT00OClyZXR1cm4gMX1lbHNlIGlmKHRbMF09PT00JiZPOSh0WzNdKSlyZXR1cm4gMTtyZXR1cm4gMH1mdW5jdGlvbiBmMih0KXtyZXR1cm4gbjAodCxaUnIpJiZuMCh0LFFScikmJm4wKHQscmpyKSYmbjAodCxlanIpJiZuMCh0LG5qcikmJm4wKHQsdGpyKSYmbjAodCx1anIpJiZuMCh0LGlqcik/MDoxfWZ1bmN0aW9uIGRMKHQpe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXN3aXRjaCh0KXtjYXNlIDQyOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNTg6cmV0dXJuIDF9ZWxzZSBpZih0WzBdPT09NCYmZjIodFszXSkpcmV0dXJuIDE7cmV0dXJuIDB9ZnVuY3Rpb24ganModCl7cmV0dXJuIG4wKHQsSlJyKSYmbjAodCwkUnIpPzA6MX1mdW5jdGlvbiBvZTAodCl7cmV0dXJuIHR5cGVvZiB0IT1cIm51bWJlclwiJiZ0WzBdPT09NCYmanModFszXSk/MTowfWZ1bmN0aW9uIGtMKHQpe3ZhciBuPXhlMCh0KTtpZihuKXZhciBlPW47ZWxzZXt2YXIgaT1POSh0KTtpZihpKXZhciBlPWk7ZWxzZXtpZihuMCh0LHpScikmJm4wKHQsS1JyKSYmbjAodCxXUnIpKXJldHVybiAwO3ZhciBlPTF9fXJldHVybiBlfWZ1bmN0aW9uIGFlMCh0KXt2YXIgbj1FZSh0LFRSciksZT0wO3JldHVybiAwPD1uPzA8biYmbjAodCxSUnIpJiZuMCh0LGpScikmJm4wKHQsR1JyKSYmbjAodCxNUnIpJiZuMCh0LEJScikmJm4wKHQscVJyKSYmbjAodCxVUnIpJiZuMCh0LEhScikmJihlPTEpOm4wKHQsT1JyKSYmbjAodCxJUnIpJiZuMCh0LEFScikmJm4wKHQsTlJyKSYmbjAodCxDUnIpJiZuMCh0LFBScikmJm4wKHQsRFJyKSYmbjAodCxMUnIpJiYoZT0xKSxlPzA6MX1mdW5jdGlvbiBZbih0LG4pe3JldHVybiBScyh0LG4pWzFdfWZ1bmN0aW9uIFdsKHQsbil7cmV0dXJuIFJzKHQsbilbMl19ZnVuY3Rpb24gQTAodCl7cmV0dXJuIFluKDAsdCl9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIFdsKDAsdCl9ZnVuY3Rpb24gajEodCl7dmFyIG49aTIodCksZT1uP25bMV06a2UoRlJyKTtyZXR1cm5bMCxlWzFdLGVbM10sZVszXV19ZnVuY3Rpb24gd0wodCl7cmV0dXJuIFJzKDAsdClbM119ZnVuY3Rpb24gcHIodCl7dmFyIG49UnMoMCx0KVs0XTtyZXR1cm4gbiYmdShtbChmdW5jdGlvbihlKXtyZXR1cm4gcHModFszMF1bMV0sZVsxXVsyXSk8PTA/MTowfSksbil9ZnVuY3Rpb24gY2UwKHQpe2Zvcih2YXIgbj1ScygwLHQpWzRdOzspe2lmKG4pe3ZhciBlPW5bMl0saT1wcyhuWzFdWzFdWzJdLHRbMzBdWzFdKTwwPzE6MDtpZihpKXJldHVybiBpO3ZhciBuPWU7Y29udGludWV9cmV0dXJuIDB9fWZ1bmN0aW9uIEpsKHQsbil7dmFyIGU9MDx0P1swLFdsKHQtMXwwLG4pXTppMihuKTtpZihlKXZhciBpPWVbMV1bMl1bMV0seD1pPFdsKHQsbilbMl1bMV0/MTowO2Vsc2UgdmFyIHg9ZTtyZXR1cm4geH1mdW5jdGlvbiB4Nyh0KXtyZXR1cm4gSmwoMCx0KX1mdW5jdGlvbiBzZTAodCxuKXt2YXIgZT1Zbih0LG4pO2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXt2YXIgaT1lLTJ8MDtpZihYdDxpPj4+MCl7aWYoIShUNzwoaSsxfDApPj4+MCkpcmV0dXJuIDF9ZWxzZXt2YXIgeD1pIT09Nj8xOjA7aWYoIXgpcmV0dXJuIHh9fXJldHVybiBKbCh0LG4pfWZ1bmN0aW9uIHgyKHQpe3JldHVybiBzZTAoMCx0KX1mdW5jdGlvbiBJOSh0LG4pe3ZhciBlPVluKHQsbik7aWYoZEwoZSl8fGhMKGUpfHxvZTAoZSkpcmV0dXJuIDE7dmFyIGk9MDtpZih0eXBlb2YgZT09XCJudW1iZXJcIilzd2l0Y2goZSl7Y2FzZSAxNDpjYXNlIDI4OmNhc2UgNjA6Y2FzZSA2MTpjYXNlIDYyOmNhc2UgNjM6Y2FzZSA2NDpjYXNlIDY1Omk9MTticmVha31lbHNlIGVbMF09PT00JiYoaT0xKTtyZXR1cm4gaT8xOjB9ZnVuY3Rpb24gdmUwKHQsbil7dmFyIGU9bjIobik7aWYoZT09PTEpe3ZhciBpPVluKHQsbik7cmV0dXJuIHR5cGVvZiBpIT1cIm51bWJlclwiJiZpWzBdPT09ND8xOjB9aWYoZSlyZXR1cm4gMDt2YXIgeD1Zbih0LG4pO2lmKHR5cGVvZiB4PT1cIm51bWJlclwiKXN3aXRjaCh4KXtjYXNlIDQyOmNhc2UgNDY6Y2FzZSA0NzpyZXR1cm4gMDtjYXNlIDE1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMTk6Y2FzZSAyMDpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjU6Y2FzZSAyNjpjYXNlIDI3OmNhc2UgMjg6Y2FzZSAyOTpjYXNlIDMwOmNhc2UgMzE6Y2FzZSAzMjpjYXNlIDMzOmNhc2UgMzQ6Y2FzZSAzNTpjYXNlIDM2OmNhc2UgMzc6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA0MTpjYXNlIDQzOmNhc2UgNDQ6Y2FzZSA0NTpjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNTg6Y2FzZSA1OTpjYXNlIDYwOmNhc2UgNjE6Y2FzZSA2MjpjYXNlIDYzOmNhc2UgNjQ6Y2FzZSA2NTpjYXNlIDExNDpjYXNlIDExNTpjYXNlIDExNjpjYXNlIDExNzpjYXNlIDExODpjYXNlIDExOTpjYXNlIDEyMDpjYXNlIDEyMTpicmVhaztkZWZhdWx0OnJldHVybiAwfWVsc2Ugc3dpdGNoKHhbMF0pe2Nhc2UgNDppZihhZTAoeFszXSkpcmV0dXJuIDA7YnJlYWs7Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMTpicmVhaztkZWZhdWx0OnJldHVybiAwfXJldHVybiAxfWZ1bmN0aW9uIEcxKHQpe3JldHVybiBJOSgwLHQpfWZ1bmN0aW9uIEdzKHQpe3ZhciBuPUEwKHQpPT09MTU/MTowO2lmKG4pdmFyIGU9bjtlbHNle3ZhciBpPUEwKHQpPT09NjQ/MTowO2lmKGkpe3ZhciB4PVluKDEsdCk9PT0xNT8xOjA7aWYoeCl2YXIgYz1XbCgxLHQpWzJdWzFdLGU9UGUodClbM11bMV09PT1jPzE6MDtlbHNlIHZhciBlPXh9ZWxzZSB2YXIgZT1pfXJldHVybiBlfWZ1bmN0aW9uICRsKHQpe3ZhciBuPUEwKHQpO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXt2YXIgZT0wO2lmKChuPT09MTN8fG49PT00MCkmJihlPTEpLGUpcmV0dXJuIDF9cmV0dXJuIDB9ZnVuY3Rpb24gamUodCxuKXtyZXR1cm4gdWUodCxbMCxQZSh0KSxuXSl9ZnVuY3Rpb24gbGUwKHQsbil7aWYoaEwobikpcmV0dXJuIDI7aWYoZEwobikpcmV0dXJuIDU1O3ZhciBlPWFMKDAsbik7cmV0dXJuIHQ/WzExLGUsdFsxXV06WzEwLGVdfWZ1bmN0aW9uIFN0KHQsbil7dmFyIGU9d0wobik7cmV0dXJuIHUoeUwobiksZSksamUobixsZTAodCxBMChuKSkpfWZ1bmN0aW9uIEE5KHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHVlKHQsWzAsZVsxXSw3Nl0pfXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gRHUobixlKX19ZnVuY3Rpb24gYmUwKHQsbil7dmFyIGU9dFs2XT91cihldChTUnIpLG4sbixuKTpnUnI7cmV0dXJuIFN0KFswLGVdLHQpfWZ1bmN0aW9uIGdpKHQsbil7dmFyIGU9dFs1XTtyZXR1cm4gZSYmamUodCxuKX1mdW5jdGlvbiBWNyh0LG4pe3ZhciBlPXRbNV07cmV0dXJuIGUmJnVlKHQsWzAsblsxXSxuWzJdXSl9ZnVuY3Rpb24gTTEodCxuKXtyZXR1cm4gdWUodCxbMCxuLFsxOCx0WzVdXV0pfWZ1bmN0aW9uIGllKHQpe3ZhciBuPXRbMjZdWzFdO2lmKG4pe3ZhciBlPW4yKHQpLGk9QTAodCkseD1bMCxQZSh0KSxpLGVdO3UoblsxXSx4KX12YXIgYz10WzI1XVsxXSxzPWNbMV0scD1zP3NbMV1bMV06ZzkoYylbMV07dFsyNF1bMV09cDt2YXIgeT13TCh0KTt1KHlMKHQpLHkpO3ZhciBUPXRbMl1bMV0sRT1MYyhScygwLHQpWzRdLFQpO3RbMl1bMV09RTt2YXIgZD1bMCxScygwLHQpXTt0WzRdWzFdPWQ7dmFyIHc9dFsyNV1bMV07cmV0dXJuIHdbMl0/KHdbMV09d1syXSx3WzJdPTAsMCk6KFFyMCh3KSx3WzFdPTAsMCl9ZnVuY3Rpb24geHUodCxuKXt2YXIgZT1vKGlMLEEwKHQpLG4pO3JldHVybiBlJiZpZSh0KSxlfWZ1bmN0aW9uIEt1KHQsbil7dFsyM11bMV09WzAsbix0WzIzXVsxXV07dmFyIGU9bjIodCksaT1ZbCh0WzI0XVsxXSxlKTtyZXR1cm4gdFsyNV1bMV09aSwwfWZ1bmN0aW9uIGs3KHQpe3ZhciBuPXRbMjNdWzFdLGU9bj9uWzJdOmtlKEVScik7dFsyM11bMV09ZTt2YXIgaT1uMih0KSx4PVlsKHRbMjRdWzFdLGkpO3JldHVybiB0WzI1XVsxXT14LDB9ZnVuY3Rpb24gd2UodCl7dmFyIG49UGUodCk7aWYoQTAodCk9PT05JiZKbCgxLHQpKXt2YXIgZT1wcih0KSxpPVJzKDEsdClbNF0seD1vbihlLHUobWwoZnVuY3Rpb24ocyl7cmV0dXJuIHNbMV1bMl1bMV08PW5bM11bMV0/MTowfSksaSkpO3JldHVybiBWbCh0LFswLG5bM11bMV0rMXwwLDBdKSx4fXZhciBjPXByKHQpO3JldHVybiBWbCh0LG5bM10pLGN9ZnVuY3Rpb24gTXModCl7dmFyIG49dFs0XVsxXTtpZihuKXt2YXIgZT1uWzFdWzJdLGk9cHIodCkseD11KG1sKGZ1bmN0aW9uKHApe3JldHVybiBwWzFdWzJdWzFdPD1lWzNdWzFdPzE6MH0pLGkpO1ZsKHQsWzAsZVszXVsxXSsxfDAsMF0pO3ZhciBjPXh9ZWxzZSB2YXIgYz1uO3JldHVybiBjfWZ1bmN0aW9uIEIxKHQsbil7cmV0dXJuIFN0KFswLGFMKGhScixuKV0sdCl9ZnVuY3Rpb24gWTAodCxuKXtyZXR1cm4gMS1vKGlMLEEwKHQpLG4pJiZCMSh0LG4pLGllKHQpfWZ1bmN0aW9uIHBlMCh0LG4pe3ZhciBlPXh1KHQsbik7cmV0dXJuIDEtZSYmQjEodCxuKSxlfWZ1bmN0aW9uIFpsKHQsbil7dmFyIGU9QTAodCksaT0wO3JldHVybiB0eXBlb2YgZSE9XCJudW1iZXJcIiYmZVswXT09PTQmJnFuKGVbM10sbikmJihpPTEpLGl8fFN0KFswLHUoZXQoeVJyKSxuKV0sdCksaWUodCl9dmFyIEJzPVt3dCx6anIsTTcoMCldO2Z1bmN0aW9uIFhlZSh0KXt2YXIgbj10WzI2XVsxXTtpZihuKXt2YXIgZT1teigwKSxpPVswLGZ1bmN0aW9uKHMpe3JldHVybiBhTihzLGUpfV07dFsyNl1bMV09aTt2YXIgeD1bMCxbMCxuWzFdLGVdXX1lbHNlIHZhciB4PW47cmV0dXJuWzAsdFsxXVsxXSx0WzJdWzFdLHRbNF1bMV0sdFsyM11bMV0sdFsyNF1bMV0sdFszMF1bMV0seF19ZnVuY3Rpb24gbWUwKHQsbixlKXtpZihlKXt2YXIgaT1lWzFdLHg9aVsxXTtpZihuWzI2XVsxXT1bMCx4XSx0KWZvcih2YXIgYz1pWzJdWzJdOzspe2lmKGMpe3ZhciBzPWNbMl07dSh4LGNbMV0pO3ZhciBjPXM7Y29udGludWV9cmV0dXJuIDB9dmFyIHA9dH1lbHNlIHZhciBwPWU7cmV0dXJuIHB9ZnVuY3Rpb24gWWVlKHQsbil7bWUwKDAsdCxuWzddKSx0WzFdWzFdPW5bMV0sdFsyXVsxXT1uWzJdLHRbNF1bMV09blszXSx0WzIzXVsxXT1uWzRdLHRbMjRdWzFdPW5bNV0sdFszMF1bMV09bls2XTt2YXIgZT1uMih0KSxpPVlsKHRbMjRdWzFdLGUpO3JldHVybiB0WzI1XVsxXT1pLDB9ZnVuY3Rpb24gVmVlKHQsbixlKXtyZXR1cm4gbWUwKDEsdCxuWzddKSxbMCxlXX1mdW5jdGlvbiBFTCh0LG4pe3ZhciBlPVhlZSh0KTt0cnl7dmFyIGk9VmVlKHQsZSx1KG4sdCkpO3JldHVybiBpfWNhdGNoKHgpe2lmKHg9RXQoeCkseD09PUJzKXJldHVybiBZZWUodCxlKTt0aHJvdyB4fX1mdW5jdGlvbiBfZTAodCxuLGUpe3ZhciBpPUVMKHQsZSk7cmV0dXJuIGk/aVsxXTpufWZ1bmN0aW9uIFFsKHQsbil7dmFyIGU9eWUobik7aWYoZSl7dmFyIGk9ZVsxXSx4PXUodCxpKTtyZXR1cm4gaT09PXg/bjp5ZShbMCx4LGVbMl1dKX1yZXR1cm4gbn12YXIgeWUwPVJwKFpqcixmdW5jdGlvbih0KXt2YXIgbj1QTih0LFdqciksZT1OTih0LCRqciksaT1lWzIyXSx4PWVbMjZdLGM9ZVszNV0scz1lWzc3XSxwPWVbaVZdLHk9ZVtnT10sVD1lW2NwXSxFPWVbQk9dLGQ9ZVtqaF0sdz1lW1pGXSxHPWVbNl0sQT1lWzddLFM9ZVsxMF0sTT1lWzE3XSxLPWVbMjFdLFY9ZVsyN10sZjA9ZVszM10sbTA9ZVszNl0sazA9ZVs0Nl0sZzA9ZVs1MV0sZTA9ZVs4OV0seDA9ZVs5Ml0sbD1lWzk3XSxjMD1lWzk5XSx0MD1lW3RpXSxvMD1lW1BuXSx3MD1lW1N2XSxfMD1lW3p3XSxFMD1lW0pnXSxVMD1lW2RIXSxiPWVbRFhdLFIwPWVbZUhdLFg9ZVtGSF0sczA9ZVtraF0saHI9ZVtBRl0sQXI9ZVtXZ10sb3I9ZVtBNl0sVzA9ZVtDd10sTHI9ZVtpQV0sVHI9ZVtya10sSHI9ZVtoVF0sT3I9ZVtsT10sZnI9ZVtpNl0sUnI9ZVtTVF0sV3I9ZVt2OF0sSnI9ZVskMl0sYXI9TE4odCwwLDAsbnosS0QsMSlbMV07ZnVuY3Rpb24gX3IocTAsRnIsXyl7dmFyIGs9X1syXSxJPWtbMl0sVT1rWzFdLFk9X1sxXTtpZihJKXt2YXIgeTA9ZnVuY3Rpb24oRCl7cmV0dXJuWzAsWSxbMCxVLFswLERdXV19LFAwPUlbMV07cmV0dXJuIGVlKHUocTBbMV1bMSt5XSxxMCksUDAsXyx5MCl9ZnVuY3Rpb24gSTAoRCl7cmV0dXJuWzAsWSxbMCxELEldXX1yZXR1cm4gZWUobyhxMFsxXVsxK0ddLHEwLEZyKSxVLF8sSTApfWZ1bmN0aW9uIElyKHEwLEZyLF8pe3ZhciBrPV9bMl0sST1fWzFdLFU9SVszXSxZPUlbMl07aWYoVSl2YXIgeTA9UWwodShxMFsxXVsxK3hdLHEwKSxVKSxQMD1ZO2Vsc2UgdmFyIHkwPTAsUDA9byhxMFsxXVsxK3hdLHEwLFkpO3ZhciBJMD1vKHEwWzFdWzErY10scTAsayk7cmV0dXJuIFk9PT1QMCYmVT09PXkwJiZrPT09STA/XzpbMCxbMCxJWzFdLFAwLHkwXSxJMF19ZnVuY3Rpb24gZmUocTAsRnIpe3ZhciBfPUZyWzJdLGs9X1sxXSxJPUZyWzFdO2Z1bmN0aW9uIFUoeTApe3JldHVyblswLEksWzAsayx5MF1dfXZhciBZPV9bMl07cmV0dXJuIGVlKHUocTBbMV1bMStjXSxxMCksWSxGcixVKX1mdW5jdGlvbiB2MChxMCxGcixfKXtmdW5jdGlvbiBrKFUpe3JldHVyblswLF9bMV0sX1syXSxVXX12YXIgST1fWzNdO3JldHVybiBlZSh1KHEwWzFdWzErY10scTApLEksXyxrKX1mdW5jdGlvbiBQKHEwLEZyKXtmdW5jdGlvbiBfKEkpe3JldHVyblswLEZyWzFdLEldfXZhciBrPUZyWzJdO3JldHVybiBlZSh1KHEwWzFdWzErY10scTApLGssRnIsXyl9ZnVuY3Rpb24gTChxMCxGcixfKXtmdW5jdGlvbiBrKFUpe3JldHVyblswLF9bMV0sX1syXSxVXX12YXIgST1fWzNdO3JldHVybiBlZSh1KHEwWzFdWzErY10scTApLEksXyxrKX1mdW5jdGlvbiBRKHEwLEZyLF8pe3ZhciBrPV9bMl0sST1fWzFdLFU9UWwodShxMFsxXVsxK3ldLHEwKSxJKSxZPW8ocTBbMV1bMStjXSxxMCxrKTtyZXR1cm4gST09PVUmJms9PT1ZP186WzAsVSxZXX1mdW5jdGlvbiBpMChxMCxGcil7dmFyIF89RnJbMl0saz1fWzFdLEk9RnJbMV07ZnVuY3Rpb24gVSh5MCl7cmV0dXJuWzAsSSxbMCxrLHkwXV19dmFyIFk9X1syXTtyZXR1cm4gZWUodShxMFsxXVsxK2NdLHEwKSxZLEZyLFUpfWZ1bmN0aW9uIGwwKHEwLEZyLF8pe2Z1bmN0aW9uIGsoVSl7cmV0dXJuWzAsX1sxXSxfWzJdLF9bM10sVV19dmFyIEk9X1s0XTtyZXR1cm4gZWUodShxMFsxXVsxK2NdLHEwKSxJLF8sayl9ZnVuY3Rpb24gUzAocTAsRnIsXyl7ZnVuY3Rpb24gayhVKXtyZXR1cm5bMCxfWzFdLFVdfXZhciBJPV9bMl07cmV0dXJuIGVlKHUocTBbMV1bMStjXSxxMCksSSxfLGspfWZ1bmN0aW9uIFQwKHEwLEZyLF8pe3ZhciBrPV9bM10sST1fWzJdLFU9byhxMFsxXVsxK2xdLHEwLEkpLFk9byhxMFsxXVsxK2NdLHEwLGspO3JldHVybiBJPT09VSYmaz09PVk/XzpbMCxfWzFdLFUsWV19ZnVuY3Rpb24gcnIocTAsRnIsXyl7dmFyIGs9X1s0XSxJPV9bM10sVT1fWzJdLFk9X1sxXSx5MD1vKHEwWzFdWzErY10scTAsayk7aWYoSSl7dmFyIFAwPXplKHUocTBbMV1bMSt3XSxxMCksSSk7cmV0dXJuIEk9PT1QMCYmaz09PXkwP186WzAsX1sxXSxfWzJdLFAwLHkwXX1pZihVKXt2YXIgSTA9emUodShxMFsxXVsxK2RdLHEwKSxVKTtyZXR1cm4gVT09PUkwJiZrPT09eTA/XzpbMCxfWzFdLEkwLF9bM10seTBdfXZhciBEPW8ocTBbMV1bMSt5XSxxMCxZKTtyZXR1cm4gWT09PUQmJms9PT15MD9fOlswLEQsX1syXSxfWzNdLHkwXX1mdW5jdGlvbiBMMChxMCxGcixfKXt2YXIgaz1fWzRdLEk9X1szXSxVPW8ocTBbMV1bMSt5XSxxMCxJKSxZPW8ocTBbMV1bMStjXSxxMCxrKTtyZXR1cm4gST09PVUmJms9PT1ZP186WzAsX1sxXSxfWzJdLFUsWV19ZnVuY3Rpb24gQihxMCxGcixfKXtmdW5jdGlvbiBrKFUpe3JldHVyblswLF9bMV0sX1syXSxfWzNdLFVdfXZhciBJPV9bNF07cmV0dXJuIGVlKHUocTBbMV1bMStjXSxxMCksSSxfLGspfWZ1bmN0aW9uIFoocTAsRnIsXyl7ZnVuY3Rpb24gayhVKXtyZXR1cm5bMCxfWzFdLF9bMl0sX1szXSxVXX12YXIgST1fWzRdO3JldHVybiBlZSh1KHEwWzFdWzErY10scTApLEksXyxrKX1mdW5jdGlvbiBwMChxMCxGcixfKXt2YXIgaz1fWzJdLEk9X1sxXSxVPUlbM10sWT1JWzJdO2lmKFUpdmFyIHkwPVFsKHUocTBbMV1bMSt4XSxxMCksVSksUDA9WTtlbHNlIHZhciB5MD0wLFAwPW8ocTBbMV1bMSt4XSxxMCxZKTt2YXIgSTA9byhxMFsxXVsxK2NdLHEwLGspO3JldHVybiBZPT09UDAmJlU9PT15MCYmaz09PUkwP186WzAsWzAsSVsxXSxQMCx5MF0sSTBdfWZ1bmN0aW9uIGIwKHEwLEZyLF8pe3ZhciBrPV9bM10sST1fWzFdLFU9X3UodShxMFsxXVsxK3NdLHEwKSxJKSxZPW8ocTBbMV1bMStjXSxxMCxrKTtyZXR1cm4gST09PVUmJms9PT1ZP186WzAsVSxfWzJdLFldfWZ1bmN0aW9uIE8wKHEwLEZyLF8pe2Z1bmN0aW9uIGsoVSl7cmV0dXJuWzAsX1sxXSxVXX12YXIgST1fWzJdO3JldHVybiBlZSh1KHEwWzFdWzErY10scTApLEksXyxrKX1mdW5jdGlvbiBNMChxMCxGcil7aWYoRnJbMF09PT0wKXt2YXIgXz1mdW5jdGlvbihQMCl7cmV0dXJuWzAsUDBdfSxrPUZyWzFdO3JldHVybiBlZSh1KHEwWzFdWzErcF0scTApLGssRnIsXyl9dmFyIEk9RnJbMV0sVT1JWzJdLFk9VVsyXSx5MD1vKHEwWzFdWzErcF0scTAsWSk7cmV0dXJuIFk9PT15MD9GcjpbMSxbMCxJWzFdLFswLFVbMV0seTBdXV19ZnVuY3Rpb24gZXIocTAsRnIsXyl7dmFyIGs9X1s0XSxJPV9bM10sVT1vKHEwWzFdWzEreF0scTAsSSksWT1vKHEwWzFdWzErY10scTAsayk7cmV0dXJuIEk9PT1VJiZrPT09WT9fOlswLF9bMV0sX1syXSxVLFldfWZ1bmN0aW9uIHlyKHEwLEZyKXt2YXIgXz1GclsyXSxrPUZyWzFdO2Z1bmN0aW9uIEkoWSl7cmV0dXJuWzAsayxbMCxfWzFdLF9bMl0sX1szXSxZXV19dmFyIFU9X1s0XTtyZXR1cm4gZWUodShxMFsxXVsxK2NdLHEwKSxVLFswLGssX10sSSl9ZnVuY3Rpb24gdnIocTAsRnIsXyl7dmFyIGs9X1s5XSxJPV9bM10sVT1vKHEwWzFdWzErczBdLHEwLEkpLFk9byhxMFsxXVsxK2NdLHEwLGspO3JldHVybiBJPT09VSYmaz09PVk/XzpbMCxfWzFdLF9bMl0sVSxfWzRdLF9bNV0sX1s2XSxfWzddLF9bOF0sWSxfWzEwXV19ZnVuY3Rpb24gJDAocTAsRnIsXyl7dmFyIGs9X1s0XSxJPV9bM10sVT1vKHEwWzFdWzEreV0scTAsSSksWT1vKHEwWzFdWzErY10scTAsayk7cmV0dXJuIEk9PT1VJiZrPT09WT9fOlswLF9bMV0sX1syXSxVLFldfWZ1bmN0aW9uIEVyKHEwLEZyKXt2YXIgXz1GclsyXSxrPV9bMV0sST1GclsxXTtmdW5jdGlvbiBVKHkwKXtyZXR1cm5bMCxJLFswLGsseTBdXX12YXIgWT1fWzJdO3JldHVybiBlZSh1KHEwWzFdWzErY10scTApLFksRnIsVSl9ZnVuY3Rpb24gTXIocTAsRnIpe3ZhciBfPUZyWzJdLGs9X1syXSxJPV9bMV0sVT1GclsxXTtpZihrPT09MCl7dmFyIFk9ZnVuY3Rpb24oSTApe3JldHVyblswLFUsWzAsSTAsa11dfTtyZXR1cm4gZWUodShxMFsxXVsxK3BdLHEwKSxJLEZyLFkpfWZ1bmN0aW9uIHkwKEkwKXtyZXR1cm5bMCxVLFswLEksSTBdXX12YXIgUDA9dShxMFsxXVsxK2ldLHEwKTtyZXR1cm4gZWUoZnVuY3Rpb24oSTApe3JldHVybiB6ZShQMCxJMCl9LGssRnIseTApfWZ1bmN0aW9uIEJyKHEwLEZyKXt2YXIgXz1GclsyXSxrPV9bMl0sST1GclsxXTtmdW5jdGlvbiBVKFAwKXtyZXR1cm5bMCxJLFswLFAwLGtdXX12YXIgWT1fWzFdLHkwPXUocTBbMV1bMStUXSxxMCk7cmV0dXJuIGVlKGZ1bmN0aW9uKFAwKXtyZXR1cm4gUWwoeTAsUDApfSxZLEZyLFUpfWZ1bmN0aW9uIHFyKHEwLEZyLF8pe3ZhciBrPV9bMl07aWYoaz09PTApe3ZhciBJPWZ1bmN0aW9uKFAwKXtyZXR1cm5bMCxQMCxfWzJdLF9bM11dfSxVPV9bMV07cmV0dXJuIGVlKHUocTBbMV1bMSt5XSxxMCksVSxfLEkpfWZ1bmN0aW9uIFkoUDApe3JldHVyblswLF9bMV0sUDAsX1szXV19dmFyIHkwPXUocTBbMV1bMStpXSxxMCk7cmV0dXJuIGVlKGZ1bmN0aW9uKFAwKXtyZXR1cm4gemUoeTAsUDApfSxrLF8sWSl9ZnVuY3Rpb24ganIocTAsRnIpe3ZhciBfPUZyWzJdLGs9X1sxXSxJPUZyWzFdO2Z1bmN0aW9uIFUoeTApe3JldHVyblswLEksWzAsayx5MF1dfXZhciBZPV9bMl07cmV0dXJuIGVlKHUocTBbMV1bMStjXSxxMCksWSxGcixVKX1mdW5jdGlvbiAkcihxMCxGcixfKXt2YXIgaz1fWzddLEk9X1syXSxVPW8ocTBbMV1bMStFXSxxMCxJKSxZPW8ocTBbMV1bMStjXSxxMCxrKTtyZXR1cm4gST09PVUmJms9PT1ZP186WzAsX1sxXSxVLF9bM10sX1s0XSxfWzVdLF9bNl0sWV19ZnVuY3Rpb24gbmUocTAsRnIpe3ZhciBfPUZyWzJdLGs9X1sxXSxJPUZyWzFdO2Z1bmN0aW9uIFUoeTApe3JldHVyblswLEksWzAsayx5MF1dfXZhciBZPV9bMl07cmV0dXJuIGVlKHUocTBbMV1bMStjXSxxMCksWSxGcixVKX1mdW5jdGlvbiBRcihxMCxGcil7dmFyIF89RnJbMl0saz1fWzFdLEk9RnJbMV07ZnVuY3Rpb24gVSh5MCl7cmV0dXJuWzAsSSxbMCxrLHkwXV19dmFyIFk9X1syXTtyZXR1cm4gZWUodShxMFsxXVsxK2NdLHEwKSxZLEZyLFUpfWZ1bmN0aW9uIGJlKHEwLEZyLF8pe3ZhciBrPV9bNF0sST1fWzNdLFU9byhxMFsxXVsxK3ddLHEwLEkpLFk9byhxMFsxXVsxK2NdLHEwLGspO3JldHVybiBJPT09VSYmaz09PVk/XzpbMCxfWzFdLF9bMl0sVSxZXX1mdW5jdGlvbiBhZShxMCxGcixfKXtmdW5jdGlvbiBrKFUpe3JldHVyblswLF9bMV0sVV19dmFyIEk9X1syXTtyZXR1cm4gZWUodShxMFsxXVsxK2NdLHEwKSxJLF8sayl9ZnVuY3Rpb24gcGUocTAsRnIsXyl7dmFyIGs9X1s0XSxJPV9bM10sVT1vKHEwWzFdWzEreV0scTAsSSksWT1vKHEwWzFdWzErY10scTAsayk7cmV0dXJuIEk9PT1VJiZrPT09WT9fOlswLF9bMV0sX1syXSxVLFldfWZ1bmN0aW9uIG9lKHEwLEZyLF8pe3ZhciBrPV9bNF0sST1fWzNdLFU9byhxMFsxXVsxK3ldLHEwLEkpLFk9byhxMFsxXVsxK2NdLHEwLGspO3JldHVybiBJPT09VSYmaz09PVk/XzpbMCxfWzFdLF9bMl0sVSxZXX1mdW5jdGlvbiBjZShxMCxGcil7ZnVuY3Rpb24gXyhJKXtyZXR1cm5bMCxGclsxXSxJXX12YXIgaz1GclsyXTtyZXR1cm4gZWUodShxMFsxXVsxK2NdLHEwKSxrLEZyLF8pfWZ1bmN0aW9uIGdlKHEwLEZyLF8pe2Z1bmN0aW9uIGsoVSl7cmV0dXJuWzAsX1sxXSxVXX12YXIgST1fWzJdO3JldHVybiBlZSh1KHEwWzFdWzErY10scTApLEksXyxrKX1yZXR1cm4gak4odCxbMCxtMCxmdW5jdGlvbihxMCxGcil7dmFyIF89RnJbMl0saz11KG1sKGZ1bmN0aW9uKFUpe3JldHVybiBwcyhVWzFdWzJdLHEwWzErbl0pPDA/MTowfSksXyksST1EYyhrKTtyZXR1cm4gRGMoXyk9PT1JP0ZyOlswLEZyWzFdLGssRnJbM11dfSxKcixnZSxXcixjZSxScixvZSxmcixwZSxPcixhZSxIcixiZSx3LFFyLGQsbmUsVHIsJHIsRSxqcixMcixxcixXMCxCcixULE1yLG9yLEVyLEFyLCQwLGhyLHZyLFgseXIsUjAsZXIsYixNMCxVMCxPMCxFMCxiMCxfMCxwMCx3MCxaLG8wLEIsdDAsTDAseDAscnIsYzAsVDAsZTAsUzAscyxsMCxnMCxpMCxrMCxRLGYwLEwsVixQLEssdjAsTSxmZSxTLElyLEEsX3JdKSxmdW5jdGlvbihxMCxGcixfKXt2YXIgaz1qcChGcix0KTtyZXR1cm4ga1sxK25dPV8sdShhcixrKSxSTihGcixrLHQpfX0pO2Z1bmN0aW9uIE45KHQpe3ZhciBuPWkyKHQpO2lmKG4pdmFyIGU9blsxXSxpPWNlMCh0KT8oVmwodCxlWzNdKSxbMCxvKHllMFsxXSwwLGVbM10pXSk6MCx4PWk7ZWxzZSB2YXIgeD1uO3JldHVyblswLDAsZnVuY3Rpb24oYyxzKXtyZXR1cm4geD9vKHMseFsxXSxjKTpjfV19ZnVuY3Rpb24gcmIodCl7dmFyIG49aTIodCk7aWYobil7dmFyIGU9blsxXTtpZihjZTAodCkpe1ZsKHQsZVszXSk7dmFyIGk9TXModCkseD1bMCxvKHllMFsxXSwwLFswLGVbM11bMV0rMXwwLDBdKV0sYz1pfWVsc2UgdmFyIHg9MCxjPU1zKHQpfWVsc2UgdmFyIHg9MCxjPTA7cmV0dXJuWzAsYyxmdW5jdGlvbihzLHApe3JldHVybiB4P28ocCx4WzFdLHMpOnN9XX1mdW5jdGlvbiAkdCh0KXtyZXR1cm4geDcodCk/cmIodCk6TjkodCl9ZnVuY3Rpb24geXModCxuKXt2YXIgZT0kdCh0KTtmdW5jdGlvbiBpKHgsYyl7cmV0dXJuIG8oUWUoeCxOdiwyNykseCxjKX1yZXR1cm4gbyhlWzJdLG4saSl9ZnVuY3Rpb24gb2kodCxuKXtpZihuKXZhciBlPSR0KHQpLGk9ZnVuY3Rpb24oYyxzKXtyZXR1cm4gbyhRZShjLGJGLDMwKSxjLHMpfSx4PVswLG8oZVsyXSxuWzFdLGkpXTtlbHNlIHZhciB4PW47cmV0dXJuIHh9ZnVuY3Rpb24gbzIodCxuKXt2YXIgZT0kdCh0KTtmdW5jdGlvbiBpKHgsYyl7cmV0dXJuIG8oUWUoeCwtOTgzNjYwMTQyLDMyKSx4LGMpfXJldHVybiBvKGVbMl0sbixpKX1mdW5jdGlvbiBlYih0LG4pe3ZhciBlPSR0KHQpO2Z1bmN0aW9uIGkoeCxjKXtyZXR1cm4gbyhRZSh4LC00NTU3NzI5NzksMzMpLHgsYyl9cmV0dXJuIG8oZVsyXSxuLGkpfWZ1bmN0aW9uIGhlMCh0LG4pe2lmKG4pdmFyIGU9JHQodCksaT1mdW5jdGlvbihjLHMpe3JldHVybiBvKFFlKGMsa0gsMzQpLGMscyl9LHg9WzAsbyhlWzJdLG5bMV0saSldO2Vsc2UgdmFyIHg9bjtyZXR1cm4geH1mdW5jdGlvbiBYaSh0LG4pe3ZhciBlPSR0KHQpO2Z1bmN0aW9uIGkoeCxjKXtyZXR1cm4gbyhRZSh4LHFZLDM1KSx4LGMpfXJldHVybiBvKGVbMl0sbixpKX1mdW5jdGlvbiBkZTAodCxuKXt2YXIgZT0kdCh0KTtmdW5jdGlvbiBpKHgsYyl7dmFyIHM9dShRZSh4LFpVLDM3KSx4KTtyZXR1cm4gUWwoZnVuY3Rpb24ocCl7cmV0dXJuIF91KHMscCl9LGMpfXJldHVybiBvKGVbMl0sbixpKX1mdW5jdGlvbiBrZTAodCxuKXt2YXIgZT0kdCh0KTtmdW5jdGlvbiBpKHgsYyl7cmV0dXJuIG8oUWUoeCwtMjE0NzYwMDksMzgpLHgsYyl9cmV0dXJuIG8oZVsyXSxuLGkpfVJwKFFqcixmdW5jdGlvbih0KXt2YXIgbj1QTih0LEtqciksZT1ETihKanIpLGk9ZS5sZW5ndGgtMSx4PXR6Lmxlbmd0aC0xLGM9R3YoaSt4fDAsMCkscz1pLTF8MCxwPTA7aWYoIShzPDApKWZvcih2YXIgeT1wOzspe3ZhciBUPUZsKHQsdHUoZSx5KVsxK3ldKTt0dShjLHkpWzEreV09VDt2YXIgRT15KzF8MDtpZihzIT09eSl7dmFyIHk9RTtjb250aW51ZX1icmVha312YXIgZD14LTF8MCx3PTA7aWYoIShkPDApKWZvcih2YXIgRz13Ozspe3ZhciBBPUcraXwwLFM9UE4odCx0dSh0eixHKVsxK0ddKTt0dShjLEEpWzErQV09Uzt2YXIgTT1HKzF8MDtpZihkIT09Ryl7dmFyIEc9TTtjb250aW51ZX1icmVha312YXIgSz1jWzRdLFY9Y1s1XSxmMD1jW3k2XSxtMD1jW2NwXSxrMD1jW25kXSxnMD1jW2d2XSxlMD1jWzM4XSx4MD1jW21UXSxsPWNbVnldLGMwPUxOKHQsMCwwLG56LEtELDEpWzFdO2Z1bmN0aW9uIHQwKGIsUjAsWCl7cmV0dXJuIG8oYlsxXVsxK2YwXSxiLFhbMl0pLFh9ZnVuY3Rpb24gbzAoYixSMCl7cmV0dXJuIG8oYlsxXVsxK20wXSxiLFIwKSxSMH1mdW5jdGlvbiB3MChiLFIwKXt2YXIgWD1SMFsxXSxzMD1iWzErZzBdO2lmKHMwKXt2YXIgaHI9cHMoczBbMV1bMV1bMl0sWFsyXSk8MD8xOjAsQXI9aHImJihiWzErZzBdPVswLFIwXSwwKTtyZXR1cm4gQXJ9dmFyIG9yPTA8PXBzKFhbMl0sYlsxK25dWzNdKT8xOjAsVzA9b3ImJihiWzErZzBdPVswLFIwXSwwKTtyZXR1cm4gVzB9ZnVuY3Rpb24gXzAoYixSMCl7dmFyIFg9UjBbMV0sczA9YlsxK2swXTtpZihzMCl7dmFyIGhyPXBzKFhbMl0sczBbMV1bMV1bMl0pPDA/MTowLEFyPWhyJiYoYlsxK2swXT1bMCxSMF0sMCk7cmV0dXJuIEFyfXZhciBvcj1wcyhYWzJdLGJbMStuXVsyXSk8MD8xOjAsVzA9b3ImJihiWzErazBdPVswLFIwXSwwKTtyZXR1cm4gVzB9ZnVuY3Rpb24gRTAoYixSMCl7cmV0dXJuIFIwJiZvKGJbMV1bMSttMF0sYixSMFsxXSl9ZnVuY3Rpb24gVTAoYixSMCl7dmFyIFg9UjBbMV07RHUodShiWzFdWzErVl0sYiksWCk7dmFyIHMwPVIwWzJdO3JldHVybiBEdSh1KGJbMV1bMStLXSxiKSxzMCl9cmV0dXJuIGpOKHQsWzAseDAsZnVuY3Rpb24oYil7cmV0dXJuWzAsYlsxK2swXSxiWzErZzBdXX0sbTAsVTAsZjAsRTAsVixfMCxLLHcwLGUwLG8wLGwsdDBdKSxmdW5jdGlvbihiLFIwLFgpe3ZhciBzMD1qcChSMCx0KTtyZXR1cm4gczBbMStuXT1YLHUoYzAsczApLHMwWzErazBdPTAsczBbMStnMF09MCxSTihSMCxzMCx0KX19KTtmdW5jdGlvbiB3ZTAodCl7cmV0dXJuIHQ9PT0zPzI6KDQ8PXQsMSl9ZnVuY3Rpb24gU0wodCxuLGUpe2lmKGUpe3ZhciBpPWVbMV0seD0wO2lmKGk9PT04MjMyfHxIdT09PWkpeD0xO2Vsc2UgaWYoaT09PTEwKXZhciBzPTY7ZWxzZSBpZihpPT09MTMpdmFyIHM9NTtlbHNlIGlmKGZ3PD1pKXZhciBzPTM7ZWxzZSBpZihIaDw9aSl2YXIgcz0yO2Vsc2UgdmFyIGM9anQ8PWk/MTowLHM9YyYmMTtpZih4KXZhciBzPTc7dmFyIHA9c31lbHNlIHZhciBwPTQ7cmV0dXJuWzAscCx0XX12YXIgemVlPVt3dCx1R3IsTTcoMCldO2Z1bmN0aW9uIEVlMCh0LG4sZSxpKXt0cnl7dmFyIHg9dHUodCxuKVsxK25dO3JldHVybiB4fWNhdGNoKGMpe3Rocm93IGM9RXQoYyksY1sxXT09PVpBP1swLHplZSxlLHVyKGV0KG5HciksaSxuLHQubGVuZ3RoLTEpXTpjfX1mdW5jdGlvbiBDOSh0LG4pe2lmKG5bMV09PT0wJiZuWzJdPT09MClyZXR1cm4gMDt2YXIgZT1FZTAodCxuWzFdLTF8MCxuLHJHcik7cmV0dXJuIEVlMChlLG5bMl0sbixlR3IpfXZhciBLZWU9RWU7ZnVuY3Rpb24gV2VlKHQsbil7cmV0dXJuIG8oZih0KSxOV3Isbil9dShlTChbMCxLZWVdKVszM10sV2VlKTtmdW5jdGlvbiBTZTAodCl7dmFyIG49QTAodCksZT0wO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXN3aXRjaChuKXtjYXNlIDE1OnZhciBpPUNXcjticmVhaztjYXNlIDE2OnZhciBpPVBXcjticmVhaztjYXNlIDE3OnZhciBpPURXcjticmVhaztjYXNlIDE4OnZhciBpPUxXcjticmVhaztjYXNlIDE5OnZhciBpPVJXcjticmVhaztjYXNlIDIwOnZhciBpPWpXcjticmVhaztjYXNlIDIxOnZhciBpPUdXcjticmVhaztjYXNlIDIyOnZhciBpPU1XcjticmVhaztjYXNlIDIzOnZhciBpPUJXcjticmVhaztjYXNlIDI0OnZhciBpPXFXcjticmVhaztjYXNlIDI1OnZhciBpPVVXcjticmVhaztjYXNlIDI2OnZhciBpPUhXcjticmVhaztjYXNlIDI3OnZhciBpPVhXcjticmVhaztjYXNlIDI4OnZhciBpPVlXcjticmVhaztjYXNlIDI5OnZhciBpPVZXcjticmVhaztjYXNlIDMwOnZhciBpPXpXcjticmVhaztjYXNlIDMxOnZhciBpPUtXcjticmVhaztjYXNlIDMyOnZhciBpPVdXcjticmVhaztjYXNlIDMzOnZhciBpPUpXcjticmVhaztjYXNlIDM0OnZhciBpPSRXcjticmVhaztjYXNlIDM1OnZhciBpPVpXcjticmVhaztjYXNlIDM2OnZhciBpPVFXcjticmVhaztjYXNlIDM3OnZhciBpPXJKcjticmVhaztjYXNlIDM4OnZhciBpPWVKcjticmVhaztjYXNlIDM5OnZhciBpPW5KcjticmVhaztjYXNlIDQwOnZhciBpPXRKcjticmVhaztjYXNlIDQxOnZhciBpPXVKcjticmVhaztjYXNlIDQyOnZhciBpPWlKcjticmVhaztjYXNlIDQzOnZhciBpPWZKcjticmVhaztjYXNlIDQ0OnZhciBpPXhKcjticmVhaztjYXNlIDQ1OnZhciBpPW9KcjticmVhaztjYXNlIDQ2OnZhciBpPWFKcjticmVhaztjYXNlIDQ3OnZhciBpPWNKcjticmVhaztjYXNlIDQ4OnZhciBpPXNKcjticmVhaztjYXNlIDQ5OnZhciBpPXZKcjticmVhaztjYXNlIDUwOnZhciBpPWxKcjticmVhaztjYXNlIDUxOnZhciBpPWJKcjticmVhaztjYXNlIDUyOnZhciBpPXBKcjticmVhaztjYXNlIDUzOnZhciBpPW1KcjticmVhaztjYXNlIDU0OnZhciBpPV9KcjticmVhaztjYXNlIDU1OnZhciBpPXlKcjticmVhaztjYXNlIDU2OnZhciBpPWhKcjticmVhaztjYXNlIDU3OnZhciBpPWRKcjticmVhaztjYXNlIDU4OnZhciBpPWtKcjticmVhaztjYXNlIDU5OnZhciBpPXdKcjticmVhaztjYXNlIDYwOnZhciBpPUVKcjticmVhaztjYXNlIDYxOnZhciBpPVNKcjticmVhaztjYXNlIDYyOnZhciBpPWdKcjticmVhaztjYXNlIDYzOnZhciBpPUZKcjticmVhaztjYXNlIDY0OnZhciBpPVRKcjticmVhaztjYXNlIDY1OnZhciBpPU9KcjticmVhaztjYXNlIDExNDp2YXIgaT1JSnI7YnJlYWs7Y2FzZSAxMTU6dmFyIGk9QUpyO2JyZWFrO2Nhc2UgMTE2OnZhciBpPU5KcjticmVhaztjYXNlIDExNzp2YXIgaT1DSnI7YnJlYWs7Y2FzZSAxMTg6dmFyIGk9UEpyO2JyZWFrO2Nhc2UgMTE5OnZhciBpPURKcjticmVhaztjYXNlIDEyMDp2YXIgaT1MSnI7YnJlYWs7Y2FzZSAxMjE6dmFyIGk9UkpyO2JyZWFrO2RlZmF1bHQ6ZT0xfWVsc2Ugc3dpdGNoKG5bMF0pe2Nhc2UgNDp2YXIgaT1uWzJdO2JyZWFrO2Nhc2UgOTp2YXIgaT1uWzFdP2pKcjpHSnI7YnJlYWs7ZGVmYXVsdDplPTF9aWYoZSl7U3QoTUpyLHQpO3ZhciBpPUJKcn1yZXR1cm4gaWUodCksaX1mdW5jdGlvbiB6Nyh0KXt2YXIgbj1QZSh0KSxlPXByKHQpLGk9U2UwKHQpO3JldHVyblswLG4sWzAsaSxscihbMCxlXSxbMCx3ZSh0KV0sMCldXX1mdW5jdGlvbiBnZTAodCl7dmFyIG49UGUodCksZT1wcih0KTtZMCh0LDE0KTt2YXIgaT1QZSh0KSx4PVNlMCh0KSxjPWxyKFswLGVdLFswLHdlKHQpXSwwKSxzPXl0KG4saSkscD1pWzJdLHk9blszXSxUPXlbMV09PT1wWzFdPzE6MCxFPVQmJih5WzJdPT09cFsyXT8xOjApO3JldHVybiAxLUUmJnVlKHQsWzAscyxSN10pLFswLHMsWzAseCxjXV19ZnVuY3Rpb24gcTEodCl7dmFyIG49dFsyXSxlPW5bM109PT0wPzE6MDtpZihlKWZvcih2YXIgaT1uWzJdOzspe2lmKGkpe3ZhciB4PWlbMV1bMl0sYz0wLHM9aVsyXTtpZih4WzFdWzJdWzBdPT09MiYmIXhbMl0pe3ZhciBwPTE7Yz0xfWlmKCFjKXZhciBwPTA7aWYocCl7dmFyIGk9cztjb250aW51ZX1yZXR1cm4gcH1yZXR1cm4gMX1yZXR1cm4gZX1mdW5jdGlvbiBuYih0KXtmb3IodmFyIG49dDs7KXt2YXIgZT1uWzJdO2lmKGVbMF09PT0yNyl7dmFyIGk9ZVsxXVsyXTtpZihpWzJdWzBdPT09MjMpcmV0dXJuIDE7dmFyIG49aTtjb250aW51ZX1yZXR1cm4gMH19ZnVuY3Rpb24gY3IodCxuLGUpe3ZhciBpPXQ/dFsxXTpQZShlKSx4PXUobixlKSxjPWkyKGUpLHM9Yz95dChpLGNbMV0pOmk7cmV0dXJuWzAscyx4XX1mdW5jdGlvbiBnTCh0LG4sZSl7dmFyIGk9Y3IodCxuLGUpLHg9aVsyXTtyZXR1cm5bMCxbMCxpWzFdLHhbMV1dLHhbMl1dfWZ1bmN0aW9uIEplZSh0KXtmdW5jdGlvbiBuKEIpe3ZhciBaPVBlKEIpLHAwPUEwKEIpO2lmKHR5cGVvZiBwMD09XCJudW1iZXJcIil7aWYoczc9PT1wMCl7dmFyIGIwPXByKEIpO3JldHVybiBpZShCKSxbMCxbMCxaLFswLDAsbHIoWzAsYjBdLDAsMCldXV19aWYoTDc9PT1wMCl7dmFyIE8wPXByKEIpO3JldHVybiBpZShCKSxbMCxbMCxaLFswLDEsbHIoWzAsTzBdLDAsMCldXV19fXJldHVybiAwfXZhciBlPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxpPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSx4PWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxjPWZ1bmN0aW9uIEIoWixwMCxiMCl7cmV0dXJuIEIuZnVuKFoscDAsYjApfSxzPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxwPWZ1bmN0aW9uIEIoWixwMCxiMCl7cmV0dXJuIEIuZnVuKFoscDAsYjApfSx5PWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxUPWZ1bmN0aW9uIEIoWixwMCl7cmV0dXJuIEIuZnVuKFoscDApfSxFPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxkPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSx3PWZ1bmN0aW9uIEIoWixwMCxiMCl7cmV0dXJuIEIuZnVuKFoscDAsYjApfSxHPWZ1bmN0aW9uIEIoWixwMCxiMCxPMCl7cmV0dXJuIEIuZnVuKFoscDAsYjAsTzApfSxBPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxTPWZ1bmN0aW9uIEIoWixwMCl7cmV0dXJuIEIuZnVuKFoscDApfSxNPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxLPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxWPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxmMD1mdW5jdGlvbiBCKFope3JldHVybiBCLmZ1bihaKX0sbTA9ZnVuY3Rpb24gQihaKXtyZXR1cm4gQi5mdW4oWil9LGswPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxnMD1mdW5jdGlvbiBCKFoscDApe3JldHVybiBCLmZ1bihaLHAwKX0sZTA9ZnVuY3Rpb24gQihaKXtyZXR1cm4gQi5mdW4oWil9LHgwPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxsPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxjMD1mdW5jdGlvbiBCKFope3JldHVybiBCLmZ1bihaKX0sdDA9ZnVuY3Rpb24gQihaKXtyZXR1cm4gQi5mdW4oWil9LG8wPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSx3MD1mdW5jdGlvbiBCKFope3JldHVybiBCLmZ1bihaKX0sXzA9ZnVuY3Rpb24gQihaLHAwLGIwLE8wKXtyZXR1cm4gQi5mdW4oWixwMCxiMCxPMCl9LEUwPWZ1bmN0aW9uIEIoWixwMCxiMCxPMCl7cmV0dXJuIEIuZnVuKFoscDAsYjAsTzApfSxVMD1mdW5jdGlvbiBCKFope3JldHVybiBCLmZ1bihaKX0sYj1mdW5jdGlvbiBCKFope3JldHVybiBCLmZ1bihaKX0sUjA9ZnVuY3Rpb24gQihaKXtyZXR1cm4gQi5mdW4oWil9LFg9ZnVuY3Rpb24gQihaKXtyZXR1cm4gQi5mdW4oWil9LHMwPWZ1bmN0aW9uIEIoWil7cmV0dXJuIEIuZnVuKFopfSxocj1mdW5jdGlvbiBCKFope3JldHVybiBCLmZ1bihaKX0sQXI9ZnVuY3Rpb24gQihaLHAwKXtyZXR1cm4gQi5mdW4oWixwMCl9LG9yPWZ1bmN0aW9uIEIoWixwMCl7cmV0dXJuIEIuZnVuKFoscDApfSxXMD1mdW5jdGlvbiBCKFope3JldHVybiBCLmZ1bihaKX0sTHI9ZnVuY3Rpb24gQihaLHAwLGIwKXtyZXR1cm4gQi5mdW4oWixwMCxiMCl9O04oZSxmdW5jdGlvbihCKXtyZXR1cm4gdSh4LEIpfSksTihpLGZ1bmN0aW9uKEIpe3JldHVybiAxLWZ1KEIpJiZqZShCLDEyKSxjcigwLGZ1bmN0aW9uKFope3JldHVybiBZMChaLDg2KSx1KGUsWil9LEIpfSksTih4LGZ1bmN0aW9uKEIpe3ZhciBaPUEwKEIpPT09ODk/MTowO2lmKFope3ZhciBwMD1wcihCKTtpZShCKTt2YXIgYjA9cDB9ZWxzZSB2YXIgYjA9WjtyZXR1cm4gdXIoYyxCLFswLGIwXSx1KHMsQikpfSksTihjLGZ1bmN0aW9uKEIsWixwMCl7dmFyIGIwPVomJlpbMV07aWYoQTAoQik9PT04OSl7dmFyIE8wPVswLHAwLDBdLE0wPWZ1bmN0aW9uKGVyKXtmb3IodmFyIHlyPU8wOzspe3ZhciB2cj1BMChlcik7aWYodHlwZW9mIHZyPT1cIm51bWJlclwiJiZ2cj09PTg5KXtZMChlciw4OSk7dmFyIHlyPVswLHUocyxlcikseXJdO2NvbnRpbnVlfXZhciAkMD15ZSh5cik7aWYoJDApe3ZhciBFcj0kMFsyXTtpZihFcil7dmFyIE1yPWxyKFswLGIwXSwwLDApO3JldHVyblsxOSxbMCxbMCwkMFsxXSxFclsxXSxFclsyXV0sTXJdXX19dGhyb3dbMCxTbix5JHJdfX07cmV0dXJuIGNyKFswLHAwWzFdXSxNMCxCKX1yZXR1cm4gcDB9KSxOKHMsZnVuY3Rpb24oQil7dmFyIFo9QTAoQik9PT05MT8xOjA7aWYoWil7dmFyIHAwPXByKEIpO2llKEIpO3ZhciBiMD1wMH1lbHNlIHZhciBiMD1aO3JldHVybiB1cihwLEIsWzAsYjBdLHUoeSxCKSl9KSxOKHAsZnVuY3Rpb24oQixaLHAwKXt2YXIgYjA9WiYmWlsxXTtpZihBMChCKT09PTkxKXt2YXIgTzA9WzAscDAsMF0sTTA9ZnVuY3Rpb24oZXIpe2Zvcih2YXIgeXI9TzA7Oyl7dmFyIHZyPUEwKGVyKTtpZih0eXBlb2YgdnI9PVwibnVtYmVyXCImJnZyPT09OTEpe1kwKGVyLDkxKTt2YXIgeXI9WzAsdSh5LGVyKSx5cl07Y29udGludWV9dmFyICQwPXllKHlyKTtpZigkMCl7dmFyIEVyPSQwWzJdO2lmKEVyKXt2YXIgTXI9bHIoWzAsYjBdLDAsMCk7cmV0dXJuWzIwLFswLFswLCQwWzFdLEVyWzFdLEVyWzJdXSxNcl1dfX10aHJvd1swLFNuLF8kcl19fTtyZXR1cm4gY3IoWzAscDBbMV1dLE0wLEIpfXJldHVybiBwMH0pLE4oeSxmdW5jdGlvbihCKXtyZXR1cm4gbyhULEIsdShFLEIpKX0pLE4oVCxmdW5jdGlvbihCLFope3ZhciBwMD1BMChCKTtpZih0eXBlb2YgcDA9PVwibnVtYmVyXCImJnAwPT09MTEmJiFCWzE1XSl7dmFyIGIwPW8oZzAsQixaKTtyZXR1cm4gUihfMCxCLGIwWzFdLDAsWzAsYjBbMV0sWzAsMCxbMCxiMCwwXSwwLDBdXSl9cmV0dXJuIFp9KSxOKEUsZnVuY3Rpb24oQil7dmFyIFo9QTAoQik7cmV0dXJuIHR5cGVvZiBaPT1cIm51bWJlclwiJiZaPT09ODU/Y3IoMCxmdW5jdGlvbihwMCl7dmFyIGIwPXByKHAwKTtZMChwMCw4NSk7dmFyIE8wPWxyKFswLGIwXSwwLDApO3JldHVyblsxMSxbMCx1KEUscDApLE8wXV19LEIpOnUoZCxCKX0pLE4oZCxmdW5jdGlvbihCKXtyZXR1cm4gdXIodywwLEIsdShWLEIpKX0pLE4odyxmdW5jdGlvbihCLFoscDApe3ZhciBiMD1CJiZCWzFdO2lmKHg3KFopKXJldHVybiBwMDt2YXIgTzA9QTAoWik7aWYodHlwZW9mIE8wPT1cIm51bWJlclwiKXtpZihPMD09PTYpcmV0dXJuIGllKFopLFIoRyxiMCwwLFoscDApO2lmKE8wPT09MTApe3ZhciBNMD1ZbigxLFopO3JldHVybiB0eXBlb2YgTTA9PVwibnVtYmVyXCImJk0wPT09Nj8oamUoWixwJHIpLFkwKFosMTApLFkwKFosNiksUihHLGIwLDAsWixwMCkpOihqZShaLG0kcikscDApfWlmKE8wPT09ODMpcmV0dXJuIGllKFopLEEwKFopIT09NiYmamUoWiwzMCksWTAoWiw2KSxSKEcsMSwxLFoscDApfXJldHVybiBwMH0pLE4oRyxmdW5jdGlvbihCLFoscDAsYjApe2Z1bmN0aW9uIE8wKE0wKXtpZighWiYmeHUoTTAsNykpcmV0dXJuWzE1LFswLGIwLGxyKDAsWzAsd2UoTTApXSwwKV1dO3ZhciBlcj11KGUsTTApO1kwKE0wLDcpO3ZhciB5cj1bMCxiMCxlcixscigwLFswLHdlKE0wKV0sMCldO3JldHVybiBCP1sxOCxbMCx5cixaXV06WzE3LHlyXX1yZXR1cm4gdXIodyxbMCxCXSxwMCxjcihbMCxiMFsxXV0sTzAscDApKX0pLE4oQSxmdW5jdGlvbihCKXtyZXR1cm4gbyhTLEIsbyh0WzEzXSwwLEIpKX0pLE4oUyxmdW5jdGlvbihCLFope2Zvcih2YXIgcDA9WzAsWlsxXSxbMCxaXV07Oyl7dmFyIGIwPXAwWzJdO2lmKEEwKEIpPT09MTAmJkk5KDEsQikpe3ZhciBPMD1mdW5jdGlvbih2cil7cmV0dXJuIGZ1bmN0aW9uKCQwKXtyZXR1cm4gWTAoJDAsMTApLFswLHZyLHo3KCQwKV19fShiMCksTTA9Y3IoWzAscDBbMV1dLE8wLEIpLGVyPU0wWzFdLHAwPVswLGVyLFsxLFswLGVyLE0wWzJdXV1dO2NvbnRpbnVlfXJldHVybiBiMH19KSxOKE0sZnVuY3Rpb24oQil7dmFyIFo9QTAoQik7aWYodHlwZW9mIFo9PVwibnVtYmVyXCIpe2lmKFo9PT00KXtpZShCKTt2YXIgcDA9dShNLEIpO3JldHVybiBZMChCLDUpLHAwfX1lbHNlIGlmKFpbMF09PT00KXJldHVyblswLHUoQSxCKV07cmV0dXJuIGplKEIsNTEpLDB9KSxOKEssZnVuY3Rpb24oQil7cmV0dXJuIGNyKDAsZnVuY3Rpb24oWil7dmFyIHAwPXByKFopO1kwKFosNDYpO3ZhciBiMD11KE0sWik7aWYoYjApe3ZhciBPMD1scihbMCxwMF0sMCwwKTtyZXR1cm5bMjEsWzAsYjBbMV0sTzBdXX1yZXR1cm4gYiRyfSxCKX0pLE4oVixmdW5jdGlvbihCKXt2YXIgWj1QZShCKSxwMD1BMChCKSxiMD0wO2lmKHR5cGVvZiBwMD09XCJudW1iZXJcIilzd2l0Y2gocDApe2Nhc2UgNDpyZXR1cm4gdShvMCxCKTtjYXNlIDY6cmV0dXJuIHUoazAsQik7Y2FzZSA0NjpyZXR1cm4gdShLLEIpO2Nhc2UgNTM6cmV0dXJuIGNyKDAsZnVuY3Rpb24oZ2Upe3ZhciBxMD1wcihnZSk7WTAoZ2UsNTMpO3ZhciBGcj11KFUwLGdlKSxfPWxyKFswLHEwXSwwLDApO3JldHVyblsxNCxbMCxGclsyXSxGclsxXSxfXV19LEIpO2Nhc2UgOTg6cmV0dXJuIHUodzAsQik7Y2FzZSAxMDY6dmFyIE8wPXByKEIpO3JldHVybiBZMChCLFl0KSxbMCxaLFsxMCxscihbMCxPMF0sWzAsd2UoQildLDApXV07Y2FzZSA0MjpiMD0xO2JyZWFrO2Nhc2UgMDpjYXNlIDI6dmFyIE0wPVIoRTAsMCwxLDEsQik7cmV0dXJuWzAsTTBbMV0sWzEzLE0wWzJdXV07Y2FzZSAzMDpjYXNlIDMxOnZhciBlcj1wcihCKTtyZXR1cm4gWTAoQixwMCksWzAsWixbMjYsWzAscDA9PT0zMT8xOjAsbHIoWzAsZXJdLFswLHdlKEIpXSwwKV1dXX1lbHNlIHN3aXRjaChwMFswXSl7Y2FzZSAyOnZhciB5cj1wMFsxXSx2cj15cls0XSwkMD15clszXSxFcj15clsyXSxNcj15clsxXTt2ciYmZ2koQiw0NSk7dmFyIEJyPXByKEIpO3JldHVybiBZMChCLFsyLFswLE1yLEVyLCQwLHZyXV0pLFswLE1yLFsyMyxbMCxFciwkMCxscihbMCxCcl0sWzAsd2UoQildLDApXV1dO2Nhc2UgMTA6dmFyIHFyPXAwWzNdLGpyPXAwWzJdLCRyPXAwWzFdLG5lPXByKEIpO1kwKEIsWzEwLCRyLGpyLHFyXSk7dmFyIFFyPXdlKEIpO3JldHVybiAkcj09PTEmJmdpKEIsNDUpLFswLFosWzI0LFswLGpyLHFyLGxyKFswLG5lXSxbMCxRcl0sMCldXV07Y2FzZSAxMTp2YXIgYmU9cDBbM10sYWU9cDBbMl0scGU9cHIoQik7cmV0dXJuIFkwKEIsWzExLHAwWzFdLGFlLGJlXSksWzAsWixbMjUsWzAsYWUsYmUsbHIoWzAscGVdLFswLHdlKEIpXSwwKV1dXTtjYXNlIDQ6YjA9MTticmVha31pZihiMCl7dmFyIG9lPXUoaHIsQik7cmV0dXJuWzAsb2VbMV0sWzE2LG9lWzJdXV19dmFyIGNlPXUobTAsQik7cmV0dXJuIGNlP1swLFosY2VbMV1dOihTdCh2JHIsQiksWzAsWixsJHJdKX0pLE4oZjAsZnVuY3Rpb24oQil7dmFyIFo9MDtpZih0eXBlb2YgQj09XCJudW1iZXJcIilzd2l0Y2goQil7Y2FzZSAyOTpjYXNlIDExNDpjYXNlIDExNTpjYXNlIDExNjpjYXNlIDExNzpjYXNlIDExODpjYXNlIDExOTpjYXNlIDEyMDpjYXNlIDEyMTpaPTE7YnJlYWt9ZWxzZSBCWzBdPT09OSYmKFo9MSk7cmV0dXJuIFo/MTowfSksTihtMCxmdW5jdGlvbihCKXt2YXIgWj1wcihCKSxwMD1BMChCKTtpZih0eXBlb2YgcDA9PVwibnVtYmVyXCIpc3dpdGNoKHAwKXtjYXNlIDI5OnJldHVybiBpZShCKSxbMCxbNCxscihbMCxaXSxbMCx3ZShCKV0sMCldXTtjYXNlIDExNDpyZXR1cm4gaWUoQiksWzAsWzAsbHIoWzAsWl0sWzAsd2UoQildLDApXV07Y2FzZSAxMTU6cmV0dXJuIGllKEIpLFswLFsxLGxyKFswLFpdLFswLHdlKEIpXSwwKV1dO2Nhc2UgMTE2OnJldHVybiBpZShCKSxbMCxbMixscihbMCxaXSxbMCx3ZShCKV0sMCldXTtjYXNlIDExNzpyZXR1cm4gaWUoQiksWzAsWzUsbHIoWzAsWl0sWzAsd2UoQildLDApXV07Y2FzZSAxMTg6cmV0dXJuIGllKEIpLFswLFs2LGxyKFswLFpdLFswLHdlKEIpXSwwKV1dO2Nhc2UgMTE5OnJldHVybiBpZShCKSxbMCxbNyxscihbMCxaXSxbMCx3ZShCKV0sMCldXTtjYXNlIDEyMDpyZXR1cm4gaWUoQiksWzAsWzMsbHIoWzAsWl0sWzAsd2UoQildLDApXV07Y2FzZSAxMjE6cmV0dXJuIGllKEIpLFswLFs5LGxyKFswLFpdLFswLHdlKEIpXSwwKV1dfWVsc2UgaWYocDBbMF09PT05KXJldHVybiBpZShCKSxbMCxbOCxscihbMCxaXSxbMCx3ZShCKV0sMCldXTtyZXR1cm4gMH0pLE4oazAsZnVuY3Rpb24oQil7cmV0dXJuIGNyKDAsZnVuY3Rpb24oWil7dmFyIHAwPXByKFopO1kwKFosNik7Zm9yKHZhciBiMD11MigwLFopLE8wPTA7Oyl7dmFyIE0wPUEwKGIwKTtpZih0eXBlb2YgTTA9PVwibnVtYmVyXCIpe3ZhciBlcj0wO2lmKChNMD09PTd8fFBuPT09TTApJiYoZXI9MSksZXIpe3ZhciB5cj15ZShPMCk7cmV0dXJuIFkwKFosNyksWzIyLFswLHlyLGxyKFswLHAwXSxbMCx3ZShaKV0sMCldXX19dmFyIHZyPVswLHUoZSxiMCksTzBdO0EwKGIwKSE9PTcmJlkwKGIwLDkpO3ZhciBPMD12cn19LEIpfSksTihnMCxmdW5jdGlvbihCLFope3JldHVyblswLFpbMV0sWzAsMCxaLDBdXX0pLE4oZTAsZnVuY3Rpb24oQil7cmV0dXJuIGNyKDAsZnVuY3Rpb24oWil7S3UoWiwwKTt2YXIgcDA9byh0WzEzXSwwLFopO2s3KFopLDEtZnUoWikmJmplKFosMTIpO3ZhciBiMD14dShaLDg1KTtyZXR1cm4gWTAoWiw4NiksWzAsWzAscDBdLHUoZSxaKSxiMF19LEIpfSk7ZnVuY3Rpb24gVHIoQil7dmFyIFo9WW4oMSxCKTtyZXR1cm4gdHlwZW9mIFo9PVwibnVtYmVyXCImJiEoMTwoWitXMnwwKT4+PjApP3UoZTAsQik6byhnMCxCLHUoZSxCKSl9Tih4MCxmdW5jdGlvbihCKXt2YXIgWj0wO3JldHVybiBmdW5jdGlvbihwMCl7Zm9yKHZhciBiMD1aLE8wPXAwOzspe3ZhciBNMD1BMChCKTtpZih0eXBlb2YgTTA9PVwibnVtYmVyXCIpc3dpdGNoKE0wKXtjYXNlIDU6Y2FzZSAxMjpjYXNlIDExMzp2YXIgZXI9TTA9PT0xMj8xOjAseXI9ZXImJlswLGNyKDAsZnVuY3Rpb24oanIpe3ZhciAkcj1wcihqcik7WTAoanIsMTIpO3ZhciBuZT1scihbMCwkcl0sMCwwKTtyZXR1cm5bMCxUcihqciksbmVdfSxCKV07cmV0dXJuWzAsYjAseWUoTzApLHlyLDBdfWVsc2UgaWYoTTBbMF09PT00JiYhbjAoTTBbM10scyRyKSl7dmFyIHZyPTA7aWYoKFluKDEsQik9PT04Nnx8WW4oMSxCKT09PTg1KSYmKHZyPTEpLHZyKXt2YXIgJDA9YjAhPT0wPzE6MCxFcj0kMHx8KE8wIT09MD8xOjApO0VyJiZqZShCLHM3KTt2YXIgTXI9Y3IoMCxmdW5jdGlvbigkcil7dmFyIG5lPXByKCRyKTtpZSgkciksQTAoJHIpPT09ODUmJmplKCRyLEw3KTt2YXIgUXI9bHIoWzAsbmVdLDAsMCk7cmV0dXJuWzAsdShpLCRyKSxRcl19LEIpO0EwKEIpIT09NSYmWTAoQiw5KTt2YXIgYjA9WzAsTXJdO2NvbnRpbnVlfX12YXIgQnI9WzAsVHIoQiksTzBdO0EwKEIpIT09NSYmWTAoQiw5KTt2YXIgTzA9QnJ9fX0pLE4obCxmdW5jdGlvbihCKXtyZXR1cm4gY3IoMCxmdW5jdGlvbihaKXt2YXIgcDA9cHIoWik7WTAoWiw0KTt2YXIgYjA9byh4MCxaLDApLE8wPXByKFopO1kwKFosNSk7dmFyIE0wPXl1KFswLHAwXSxbMCx3ZShaKV0sTzAsMCk7cmV0dXJuWzAsYjBbMV0sYjBbMl0sYjBbM10sTTBdfSxCKX0pLE4oYzAsZnVuY3Rpb24oQil7dmFyIFo9cHIoQik7WTAoQiw0KTt2YXIgcDA9dTIoMCxCKSxiMD1BMChwMCksTzA9MDtpZih0eXBlb2YgYjA9PVwibnVtYmVyXCIpc3dpdGNoKGIwKXtjYXNlIDU6dmFyIE0wPWMkcjticmVhaztjYXNlIDQyOk8wPTI7YnJlYWs7Y2FzZSAxMjpjYXNlIDExMzp2YXIgTTA9WzAsbyh4MCxwMCwwKV07YnJlYWs7ZGVmYXVsdDpPMD0xfWVsc2UgYjBbMF09PT00P08wPTI6TzA9MTtzd2l0Y2goTzApe2Nhc2UgMTppZih1KGYwLGIwKSl7dmFyIGVyPVluKDEscDApLHlyPTA7aWYodHlwZW9mIGVyPT1cIm51bWJlclwiJiYhKDE8KGVyK1cyfDApPj4+MCkpe3ZhciB2cj1bMCxvKHgwLHAwLDApXTt5cj0xfWlmKCF5cil2YXIgdnI9WzEsdShlLHAwKV07dmFyIE0wPXZyfWVsc2UgdmFyIE0wPVsxLHUoZSxwMCldO2JyZWFrO2Nhc2UgMjp2YXIgTTA9dSh0MCxwMCk7YnJlYWt9aWYoTTBbMF09PT0wKXZhciAkMD1NMDtlbHNle3ZhciBFcj1NMFsxXTtpZihCWzE1XSl2YXIgTXI9TTA7ZWxzZXt2YXIgQnI9QTAoQikscXI9MDtpZih0eXBlb2YgQnI9PVwibnVtYmVyXCIpaWYoQnI9PT01KXZhciBqcj1ZbigxLEIpPT09MTE/WzAsbyh4MCxCLFswLG8oZzAsQixFciksMF0pXTpbMSxFcl07ZWxzZSBpZihCcj09PTkpe1kwKEIsOSk7dmFyIGpyPVswLG8oeDAsQixbMCxvKGcwLEIsRXIpLDBdKV19ZWxzZSBxcj0xO2Vsc2UgcXI9MTtpZihxcil2YXIganI9TTA7dmFyIE1yPWpyfXZhciAkMD1Ncn12YXIgJHI9cHIoQik7WTAoQiw1KTt2YXIgbmU9d2UoQik7aWYoJDBbMF09PT0wKXt2YXIgUXI9JDBbMV0sYmU9eXUoWzAsWl0sWzAsbmVdLCRyLDApO3JldHVyblswLFswLFFyWzFdLFFyWzJdLFFyWzNdLGJlXV19cmV0dXJuWzEsdXIoTHIsJDBbMV0sWixuZSldfSksTih0MCxmdW5jdGlvbihCKXt2YXIgWj1ZbigxLEIpO3JldHVybiB0eXBlb2YgWj09XCJudW1iZXJcIiYmISgxPChaK1cyfDApPj4+MCk/WzAsbyh4MCxCLDApXTpbMSx1cihjLEIsMCx1cihwLEIsMCxvKFQsQix1cih3LDAsQixvKG9yLEIsdShiLEIpKSkpKSldfSksTihvMCxmdW5jdGlvbihCKXt2YXIgWj1QZShCKSxwMD1jcigwLGMwLEIpLGIwPXAwWzJdO3JldHVybiBiMFswXT09PTA/UihfMCxCLFosMCxbMCxwMFsxXSxiMFsxXV0pOmIwWzFdfSksTih3MCxmdW5jdGlvbihCKXt2YXIgWj1QZShCKSxwMD1vaShCLHUoWCxCKSk7cmV0dXJuIFIoXzAsQixaLHAwLHUobCxCKSl9KSxOKF8wLGZ1bmN0aW9uKEIsWixwMCxiMCl7cmV0dXJuIGNyKFswLFpdLGZ1bmN0aW9uKE8wKXtyZXR1cm4gWTAoTzAsMTEpLFsxMixbMCxwMCxiMCx1KGUsTzApLDBdXX0sQil9KTtmdW5jdGlvbiBIcihCLFoscDApe3JldHVybiBjcihbMCxaXSxmdW5jdGlvbihiMCl7dmFyIE8wPXUobCxiMCk7cmV0dXJuIFkwKGIwLDg2KSxbMCxwMCxPMCx1KGUsYjApLDBdfSxCKX1mdW5jdGlvbiBPcihCLFope3ZhciBwMD1BMChaKTtpZih0eXBlb2YgcDA9PVwibnVtYmVyXCImJiEoMTA8PXAwKSlzd2l0Y2gocDApe2Nhc2UgMTppZighQilyZXR1cm4gMDticmVhaztjYXNlIDM6aWYoQilyZXR1cm4gMDticmVhaztjYXNlIDg6Y2FzZSA5OnJldHVybiBpZShaKX1yZXR1cm4gQjEoWiw5KX1mdW5jdGlvbiBmcihCLFope3JldHVybiBaJiZ1ZShCLFswLFpbMV1bMV0sN10pfWZ1bmN0aW9uIFJyKEIsWil7cmV0dXJuIFomJnVlKEIsWzAsWlsxXSw5XSl9TihFMCxmdW5jdGlvbihCLFoscDAsYjApe3ZhciBPMD1aJiYoQTAoYjApPT09Mj8xOjApLE0wPVomJjEtTzA7cmV0dXJuIGNyKDAsZnVuY3Rpb24oZXIpe3ZhciB5cj1wcihlciksdnI9TzAmJjI7WTAoZXIsdnIpO3ZhciAkMD11MigwLGVyKSxFcj1hJHI7cjpmb3IoOzspe3ZhciBNcj1FclszXSxCcj1FclsyXSxxcj1FclsxXTtpZihCJiZwMCl0aHJvd1swLFNuLFdKcl07aWYoTTAmJiFwMCl0aHJvd1swLFNuLEpKcl07dmFyIGpyPVBlKCQwKSwkcj1BMCgkMCk7aWYodHlwZW9mICRyPT1cIm51bWJlclwiKXt2YXIgbmU9MDtpZigxMzw9JHIpe2lmKFBuPT09JHIpe3ZhciBRcj1bMCx5ZShxciksQnIsTXJdO25lPTF9fWVsc2UgaWYoJHIpc3dpdGNoKCRyLTF8MCl7Y2FzZSAwOmlmKCFPMCl7dmFyIFFyPVswLHllKHFyKSxCcixNcl07bmU9MX1icmVhaztjYXNlIDI6aWYoTzApe3ZhciBRcj1bMCx5ZShxciksQnIsTXJdO25lPTF9YnJlYWs7Y2FzZSAxMTppZighcDApe2llKCQwKTt2YXIgYmU9QTAoJDApO2lmKHR5cGVvZiBiZT09XCJudW1iZXJcIiYmISgxMDw9YmUpKXN3aXRjaChiZSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDg6Y2FzZSA5OnVlKCQwLFswLGpyLDIwXSksT3IoTzAsJDApO2NvbnRpbnVlfXZhciBhZT13TCgkMCk7dSh5TCgkMCksYWUpLHVlKCQwLFswLGpyLDE3XSksaWUoJDApLE9yKE8wLCQwKTtjb250aW51ZX12YXIgcGU9cHIoJDApO2llKCQwKTt2YXIgb2U9QTAoJDApLGNlPTA7aWYodHlwZW9mIG9lPT1cIm51bWJlclwiJiYhKDEwPD1vZSkpc3dpdGNoKG9lKXtjYXNlIDE6Y2FzZSAzOmNhc2UgODpjYXNlIDk6T3IoTzAsJDApO3ZhciBnZT1BMCgkMCkscTA9MDtpZih0eXBlb2YgZ2U9PVwibnVtYmVyXCIpe3ZhciBGcj1nZS0xfDA7aWYoISgyPEZyPj4+MCkpc3dpdGNoKEZyKXtjYXNlIDA6aWYoTTApe3ZhciBRcj1bMCx5ZShxciksMSxwZV07bmU9MSxjZT0xLHEwPTF9YnJlYWs7Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6dWUoJDAsWzAsanIsMTldKTt2YXIgUXI9WzAseWUocXIpLEJyLE1yXTtuZT0xLGNlPTEscTA9MX19aWYoIXEwKXt1ZSgkMCxbMCxqciwxOF0pO2NvbnRpbnVlfWJyZWFrfWlmKCFjZSl7dmFyIF89WzEsY3IoWzAsanJdLGZ1bmN0aW9uKFc3KXtyZXR1cm4gZnVuY3Rpb24oVXQpe3ZhciBidD1scihbMCxXN10sMCwwKTtyZXR1cm5bMCx1KGUsVXQpLGJ0XX19KHBlKSwkMCldO09yKE8wLCQwKTt2YXIgRXI9WzAsWzAsXyxxcl0sQnIsTXJdO2NvbnRpbnVlfWJyZWFrfWlmKG5lKXt2YXIgaz1wcihlciksST1vbihRclszXSxrKSxVPU8wPzM6MTtZMChlcixVKTt2YXIgWT15dShbMCx5cl0sWzAsd2UoZXIpXSxJLDApO3JldHVyblswLE8wLFFyWzJdLFFyWzFdLFldfX1mb3IodmFyIHkwPUIsUDA9QixJMD0wLEQ9MCx1MD0wLFgwPTA7Oyl7dmFyIEowPUEwKCQwKSxpcj0wO2lmKHR5cGVvZiBKMD09XCJudW1iZXJcIilzd2l0Y2goSjApe2Nhc2UgNjpScigkMCx1MCk7dmFyIFEwPVluKDEsJDApLEYwPTA7aWYodHlwZW9mIFEwPT1cIm51bWJlclwiJiZRMD09PTYpe2ZyKCQwLEkwKTt2YXIgQ3I9WzQsY3IoWzAsanJdLGZ1bmN0aW9uKFV0LGJ0LEIwKXtyZXR1cm4gZnVuY3Rpb24oRDApe3ZhciBMZT1vbihidCxwcihEMCkpO1kwKEQwLDYpLFkwKEQwLDYpO3ZhciBIZT16NyhEMCk7WTAoRDAsNyksWTAoRDAsNyk7dmFyIGhlPUEwKEQwKSxtZT0wO2lmKHR5cGVvZiBoZT09XCJudW1iZXJcIil7dmFyIFpuPTA7aWYoaGUhPT00JiZoZSE9PTk4JiYoWm49MSksIVpuKXt2YXIgd249SHIoRDAsVXQsb2koRDAsdShYLEQwKSkpLGZ0PTAseHQ9WzAsd25bMV0sWzEyLHduWzJdXV0sam49MSx1dD0wO21lPTF9fWlmKCFtZSl7dmFyIGR0PXh1KEQwLDg1KSx4bj13ZShEMCk7WTAoRDAsODYpO3ZhciBmdD14bix4dD11KGUsRDApLGpuPTAsdXQ9ZHR9cmV0dXJuWzAsSGUseHQsdXQsQjAhPT0wPzE6MCxqbixscihbMCxMZV0sWzAsZnRdLDApXX19KGpyLFgwLEQpLCQwKV07RjA9MX1pZighRjApdmFyIENyPVsyLGNyKFswLGpyXSxmdW5jdGlvbihXNyxVdCxidCl7cmV0dXJuIGZ1bmN0aW9uKEIwKXt2YXIgRDA9b24oVzcscHIoQjApKTtZMChCMCw2KTt2YXIgTGU9WW4oMSxCMCk9PT04Nj8xOjA7aWYoTGUpe3ZhciBIZT16NyhCMCk7WTAoQjAsODYpO3ZhciBoZT1bMCxIZV19ZWxzZSB2YXIgaGU9TGU7dmFyIG1lPXUoZSxCMCk7WTAoQjAsNyk7dmFyIFpuPXdlKEIwKTtZMChCMCw4Nik7dmFyIHduPXUoZSxCMCk7cmV0dXJuWzAsaGUsbWUsd24sVXQhPT0wPzE6MCxidCxscihbMCxEMF0sWzAsWm5dLDApXX19KFgwLEQsSTApLCQwKV07YnJlYWs7Y2FzZSA0MjppZih5MCl7aWYoSTA9PT0wKXt2YXIgU3I9WzAsUGUoJDApXSxtcj1vbihYMCxwcigkMCkpO2llKCQwKTt2YXIgeTA9MCxQMD0wLEQ9U3IsWDA9bXI7Y29udGludWV9dGhyb3dbMCxTbixaSnJdfWlyPTE7YnJlYWs7Y2FzZSAxMDM6Y2FzZSAxMDQ6aWYoSTA9PT0wKXt2YXIgeTA9MCxQMD0wLEkwPW4oJDApO2NvbnRpbnVlfWlyPTE7YnJlYWs7Y2FzZSA0OmNhc2UgOTg6UnIoJDAsdTApLGZyKCQwLEkwKTt2YXIgQ3I9WzMsY3IoWzAsanJdLGZ1bmN0aW9uKFc3LFV0KXtyZXR1cm4gZnVuY3Rpb24oYnQpe3ZhciBCMD1QZShidCksRDA9SHIoYnQsQjAsb2koYnQsdShYLGJ0KSkpO3JldHVyblswLEQwLFV0IT09MD8xOjAsbHIoWzAsVzddLDAsMCldfX0oWDAsRCksJDApXTticmVhaztkZWZhdWx0OmlyPTF9ZWxzZSBpZihKMFswXT09PTQmJiFuMChKMFszXSxRSnIpKXtpZihQMCl7aWYoSTA9PT0wKXt2YXIgc3I9WzAsUGUoJDApXSxQcj1vbihYMCxwcigkMCkpO2llKCQwKTt2YXIgeTA9MCxQMD0wLHUwPXNyLFgwPVByO2NvbnRpbnVlfXRocm93WzAsU24sciRyXX1pcj0xfWVsc2UgaXI9MTtpZihpcil7dmFyIEswPTA7aWYoRCl7dmFyIFVyPURbMV07aWYodTApe3ZhciBDcj1rZShlJHIpO0swPTF9ZWxzZSBpZih0eXBlb2YgSjA9PVwibnVtYmVyXCImJiEoMTwoSjArVzJ8MCk+Pj4wKSl7dmFyIGgwPVswLFVyLFsxLFJjKGxyKFswLFgwXSwwLDApLFswLFVyLG4kcl0pXV0sS3I9MCxyZT11MCx4ZT0wO0swPTJ9fWVsc2UgaWYodTApe3ZhciBSZT11MFsxXTtpZih0eXBlb2YgSjA9PVwibnVtYmVyXCImJiEoMTwoSjArVzJ8MCk+Pj4wKSl7dmFyIGgwPVswLFJlLFsxLFJjKGxyKFswLFgwXSwwLDApLFswLFJlLHQkcl0pXV0sS3I9MCxyZT0wLHhlPUQ7SzA9Mn19dmFyIHZlPTA7c3dpdGNoKEswKXtjYXNlIDA6dmFyIEllPWZ1bmN0aW9uKFV0KXtLdShVdCwwKTt2YXIgYnQ9byh0WzIwXSwwLFV0KTtyZXR1cm4gazcoVXQpLGJ0fSxHZT1wcigkMCksTWU9SWUoJDApLGFuPU1lWzFdLFdlPU1lWzJdLEFlPTA7aWYoV2VbMF09PT0xKXt2YXIgY249V2VbMV1bMl1bMV0scm49MDtpZihuMChjbix1JHIpJiZuMChjbixpJHIpJiYocm49MSksIXJuKXt2YXIga249QTAoJDApLHZuPTA7aWYodHlwZW9mIGtuPT1cIm51bWJlclwiKXt2YXIgTmU9a24tNXwwO2lmKDkyPE5lPj4+MCl7aWYoISg5NDwoTmUrMXwwKT4+PjApKXtScigkMCx1MCksZnIoJDAsSTApO3ZhciBKZT1XZTtBZT0xLHZuPTF9fWVsc2UgaWYoISgxPChOZStlWHwwKT4+PjApKXt2YXIgaDA9WzAsYW4sV2VdLEtyPVgwLHJlPXUwLHhlPUQ7dmU9MSxBZT0yLHZuPTF9fWlmKCF2bil7WGkoJDAsV2UpO3ZhciBlbj1JZSgkMCksX249cW4oY24sZiRyKSxDbj1vbihYMCxHZSk7UnIoJDAsdTApLGZyKCQwLEkwKTt2YXIgQ3I9WzAsY3IoWzAsanJdLGZ1bmN0aW9uKGJ0LEIwLEQwLExlLEhlKXtyZXR1cm4gZnVuY3Rpb24oaGUpe3ZhciBtZT1EMFsxXSxabj1YaShoZSxEMFsyXSksd249SHIoaGUsYnQsMCksZnQ9d25bMl1bMl07aWYoTGUpe3ZhciB4dD1mdFsyXSxqbj0wO2lmKHh0WzFdKXVlKGhlLFswLG1lLGo3XSksam49MTtlbHNle3ZhciB1dD0wOyF4dFsyXSYmIXh0WzNdJiYoam49MSx1dD0xKSx1dHx8dWUoaGUsWzAsbWUsODBdKX19ZWxzZXt2YXIgZHQ9ZnRbMl0seG49MDtpZihkdFsxXSl1ZShoZSxbMCxtZSxZdF0pLHhuPTE7ZWxzZXt2YXIgbG49ZHRbMl0saXQ9MDtpZihkdFszXSl1ZShoZSxbMCxtZSw4MV0pO2Vsc2V7dmFyIFR0PTA7bG4mJiFsblsyXSYmKFR0PTEpLFR0fHwodWUoaGUsWzAsbWUsODFdKSxpdD0xKX1pdHx8KHhuPTEpfX12YXIgVGk9bHIoWzAsSGVdLDAsMCksaHM9MCxBdT0wLEhzPTAsVmk9QjAhPT0wPzE6MCxYcz0wLFlzPUxlP1sxLHduXTpbMix3bl07cmV0dXJuWzAsWm4sWXMsWHMsVmksSHMsQXUsaHMsVGldfX0oanIsRCxlbixfbixDbiksJDApXTtBZT0yfX19dmFyIEhuPTA7c3dpdGNoKEFlKXtjYXNlIDI6SG49MTticmVhaztjYXNlIDA6dmFyIEZuPU1lWzJdLHZ0PUEwKCQwKSxOdD0wO2lmKHR5cGVvZiB2dD09XCJudW1iZXJcIil7dmFyIGd0PTA7aWYodnQhPT00JiZ2dCE9PTk4JiYoZ3Q9MSksIWd0KXtScigkMCx1MCksZnIoJDAsSTApO3ZhciBKZT1GbjtOdD0xfX1pZighTnQpe3ZhciBadD1EIT09MD8xOjAscXQ9MDtpZihGblswXT09PTEpe3ZhciBGdD1GblsxXSxDdD1GdFsyXVsxXSxkdT0wO2lmKEIpe3ZhciBXdT0wOyFxbih4JHIsQ3QpJiYoIVp0fHwhcW4obyRyLEN0KSkmJihXdT0xKSxXdXx8KHVlKCQwLFswLEZ0WzFdLFsyMSxDdCxadCwwLDBdXSkscXQ9MSxkdT0xKX19dmFyIGgwPVswLGFuLEZuXSxLcj1YMCxyZT11MCx4ZT1EO3ZlPTEsSG49MX1icmVha31pZighSG4pdmFyIGx0PVhpKCQwLEplKSxvdT1IcigkMCxqcixvaSgkMCx1KFgsJDApKSksQnU9WzAsb3VbMV0sWzEyLG91WzJdXV0sSzc9WzAsbHQsWzAsQnVdLDAsRCE9PTA/MTowLDAsMSwwLGxyKFswLFgwXSwwLDApXSxDcj1bMCxbMCxCdVsxXSxLN11dO2JyZWFrO2Nhc2UgMjp2ZT0xO2JyZWFrfWlmKHZlKXt2YXIgWWk9aDBbMl0sYTc9aDBbMV07MS1mdSgkMCkmJmplKCQwLDEyKTt2YXIgQ3I9WzAsY3IoWzAsanJdLGZ1bmN0aW9uKFV0LGJ0LEIwLEQwLExlLEhlKXtyZXR1cm4gZnVuY3Rpb24oaGUpe3ZhciBtZT14dShoZSw4NSksWm49cGUwKGhlLDg2KT91KGUsaGUpOlswLEhlLCRKcl07cmV0dXJuWzAsTGUsWzAsWm5dLG1lLGJ0IT09MD8xOjAsQjAhPT0wPzE6MCwwLFV0LGxyKFswLEQwXSwwLDApXX19KEkwLHhlLHJlLEtyLFlpLGE3KSwkMCldfX1PcihPMCwkMCk7dmFyIEVyPVswLFswLENyLHFyXSxCcixNcl07Y29udGludWUgcn19fSxiMCl9KSxOKFUwLGZ1bmN0aW9uKEIpe3ZhciBaPUEwKEIpPT09NDE/MTowO2lmKFope1kwKEIsNDEpO2Zvcih2YXIgcDA9MDs7KXt2YXIgYjA9WzAsdShocixCKSxwMF0sTzA9QTAoQik7aWYodHlwZW9mIE8wPT1cIm51bWJlclwiJiZPMD09PTkpe1kwKEIsOSk7dmFyIHAwPWIwO2NvbnRpbnVlfXZhciBNMD1kZTAoQix5ZShiMCkpO2JyZWFrfX1lbHNlIHZhciBNMD1aO3JldHVyblswLE0wLFIoRTAsMCwwLDAsQildfSksTihiLGZ1bmN0aW9uKEIpe3ZhciBaPXo3KEIpLHAwPVpbMl0sYjA9cDBbMV0sTzA9WlsxXTtyZXR1cm4gYWUwKGIwKSYmdWUoQixbMCxPMCwzXSksWzAsTzAsWzAsYjAscDBbMl1dXX0pLE4oUjAsZnVuY3Rpb24oQil7cmV0dXJuIGNyKDAsZnVuY3Rpb24oWil7dmFyIHAwPXUoYixaKSxiMD1BMChaKT09PTg2P1sxLHUoaSxaKV06WzAsajEoWildO3JldHVyblswLHAwLGIwXX0sQil9KSxOKFgsZnVuY3Rpb24oQil7dmFyIFo9QTAoQik9PT05OD8xOjA7aWYoWil7MS1mdShCKSYmamUoQiwxMik7dmFyIHAwPVswLGNyKDAsZnVuY3Rpb24oTzApe3ZhciBNMD1wcihPMCk7WTAoTzAsOTgpO2Zvcih2YXIgZXI9MCx5cj0wOzspe3ZhciB2cj1jcigwLGZ1bmN0aW9uKG5lKXtyZXR1cm4gZnVuY3Rpb24oUXIpe3ZhciBiZT1uKFFyKSxhZT11KFIwLFFyKSxwZT1hZVsyXSxvZT1BMChRciksY2U9MDtpZih0eXBlb2Ygb2U9PVwibnVtYmVyXCImJm9lPT09ODIpe2llKFFyKTt2YXIgZ2U9MSxxMD1bMCx1KGUsUXIpXTtjZT0xfWlmKCFjZSl7bmUmJnVlKFFyLFswLGFlWzFdLDc3XSk7dmFyIGdlPW5lLHEwPTB9cmV0dXJuWzAsYmUscGVbMV0scGVbMl0scTAsZ2VdfX0oZXIpLE8wKSwkMD12clsyXSxFcj1bMCxbMCx2clsxXSxbMCwkMFsyXSwkMFszXSwkMFsxXSwkMFs0XV1dLHlyXSxNcj1BMChPMCksQnI9MDtpZih0eXBlb2YgTXI9PVwibnVtYmVyXCIpe3ZhciBxcj0wO2lmKE1yIT09OTkmJlBuIT09TXImJihxcj0xKSwhcXIpe3ZhciBqcj15ZShFcik7QnI9MX19aWYoIUJyKXtpZihZMChPMCw5KSxBMChPMCkhPT05OSl7dmFyIGVyPSQwWzVdLHlyPUVyO2NvbnRpbnVlfXZhciBqcj15ZShFcil9dmFyICRyPXByKE8wKTtyZXR1cm4gWTAoTzAsOTkpLFswLGpyLHl1KFswLE0wXSxbMCx3ZShPMCldLCRyLDApXX19LEIpXX1lbHNlIHZhciBwMD1aO3JldHVybiBwMH0pLE4oczAsZnVuY3Rpb24oQil7dmFyIFo9QTAoQik9PT05OD8xOjAscDA9WiYmWzAsY3IoMCxmdW5jdGlvbihiMCl7dmFyIE8wPXByKGIwKTtZMChiMCw5OCk7Zm9yKHZhciBNMD11MigwLGIwKSxlcj0wOzspe3ZhciB5cj1BMChNMCk7aWYodHlwZW9mIHlyPT1cIm51bWJlclwiKXt2YXIgdnI9MDtpZigoeXI9PT05OXx8UG49PT15cikmJih2cj0xKSx2cil7dmFyICQwPXllKGVyKSxFcj1wcihNMCk7cmV0dXJuIFkwKE0wLDk5KSxbMCwkMCx5dShbMCxPMF0sWzAsd2UoTTApXSxFciwwKV19fXZhciBNcj1bMCx1KGUsTTApLGVyXTtBMChNMCkhPT05OSYmWTAoTTAsOSk7dmFyIGVyPU1yfX0sQildO3JldHVybiBwMH0pLE4oaHIsZnVuY3Rpb24oQil7cmV0dXJuIG8oQXIsQix1KGIsQikpfSksTihBcixmdW5jdGlvbihCLFope2Z1bmN0aW9uIHAwKGIwKXtmb3IodmFyIE8wPVswLFpbMV0sWzAsWl1dOzspe3ZhciBNMD1PMFsyXSxlcj1PMFsxXTtpZihBMChiMCk9PT0xMCYmdmUwKDEsYjApKXt2YXIgeXI9Y3IoWzAsZXJdLGZ1bmN0aW9uKHFyKXtyZXR1cm4gZnVuY3Rpb24oanIpe3JldHVybiBZMChqciwxMCksWzAscXIsdShiLGpyKV19fShNMCksYjApLHZyPXlyWzFdLE8wPVswLHZyLFsxLFswLHZyLHlyWzJdXV1dO2NvbnRpbnVlfWlmKEEwKGIwKT09PTk4KXZhciAkMD0kdChiMCksRXI9ZnVuY3Rpb24oQnIscXIpe3JldHVybiBvKFFlKEJyLC04NjAzNzM5NzYsNzcpLEJyLHFyKX0sTXI9bygkMFsyXSxNMCxFcik7ZWxzZSB2YXIgTXI9TTA7cmV0dXJuWzAsTXIsdShzMCxiMCksMF19fXJldHVybiBjcihbMCxaWzFdXSxwMCxCKX0pLE4ob3IsZnVuY3Rpb24oQixaKXt2YXIgcDA9byhBcixCLFopO3JldHVyblswLHAwWzFdLFsxNixwMFsyXV1dfSksTihXMCxmdW5jdGlvbihCKXt2YXIgWj1BMChCKTtyZXR1cm4gdHlwZW9mIFo9PVwibnVtYmVyXCImJlo9PT04Nj9bMSx1KGksQildOlswLGoxKEIpXX0pLE4oTHIsZnVuY3Rpb24oQixaLHAwKXt2YXIgYjA9QlsyXTtmdW5jdGlvbiBPMChTcil7cmV0dXJuIHk3KFNyLGxyKFswLFpdLFswLHAwXSwwKSl9c3dpdGNoKGIwWzBdKXtjYXNlIDA6dmFyIEYwPVswLE8wKGIwWzFdKV07YnJlYWs7Y2FzZSAxOnZhciBGMD1bMSxPMChiMFsxXSldO2JyZWFrO2Nhc2UgMjp2YXIgRjA9WzIsTzAoYjBbMV0pXTticmVhaztjYXNlIDM6dmFyIEYwPVszLE8wKGIwWzFdKV07YnJlYWs7Y2FzZSA0OnZhciBGMD1bNCxPMChiMFsxXSldO2JyZWFrO2Nhc2UgNTp2YXIgRjA9WzUsTzAoYjBbMV0pXTticmVhaztjYXNlIDY6dmFyIEYwPVs2LE8wKGIwWzFdKV07YnJlYWs7Y2FzZSA3OnZhciBGMD1bNyxPMChiMFsxXSldO2JyZWFrO2Nhc2UgODp2YXIgRjA9WzgsTzAoYjBbMV0pXTticmVhaztjYXNlIDk6dmFyIEYwPVs5LE8wKGIwWzFdKV07YnJlYWs7Y2FzZSAxMDp2YXIgRjA9WzEwLE8wKGIwWzFdKV07YnJlYWs7Y2FzZSAxMTp2YXIgTTA9YjBbMV0sZXI9TzAoTTBbMl0pLEYwPVsxMSxbMCxNMFsxXSxlcl1dO2JyZWFrO2Nhc2UgMTI6dmFyIHlyPWIwWzFdLHZyPU8wKHlyWzRdKSxGMD1bMTIsWzAseXJbMV0seXJbMl0seXJbM10sdnJdXTticmVhaztjYXNlIDEzOnZhciAkMD1iMFsxXSxFcj1scihbMCxaXSxbMCxwMF0sMCksTXI9SkQoJDBbNF0sRXIpLEYwPVsxMyxbMCwkMFsxXSwkMFsyXSwkMFszXSxNcl1dO2JyZWFrO2Nhc2UgMTQ6dmFyIEJyPWIwWzFdLHFyPU8wKEJyWzNdKSxGMD1bMTQsWzAsQnJbMV0sQnJbMl0scXJdXTticmVhaztjYXNlIDE1OnZhciBqcj1iMFsxXSwkcj1PMChqclsyXSksRjA9WzE1LFswLGpyWzFdLCRyXV07YnJlYWs7Y2FzZSAxNjp2YXIgbmU9YjBbMV0sUXI9TzAobmVbM10pLEYwPVsxNixbMCxuZVsxXSxuZVsyXSxRcl1dO2JyZWFrO2Nhc2UgMTc6dmFyIGJlPWIwWzFdLGFlPU8wKGJlWzNdKSxGMD1bMTcsWzAsYmVbMV0sYmVbMl0sYWVdXTticmVhaztjYXNlIDE4OnZhciBwZT1iMFsxXSxvZT1wZVsxXSxjZT1wZVsyXSxnZT1PMChvZVszXSksRjA9WzE4LFswLFswLG9lWzFdLG9lWzJdLGdlXSxjZV1dO2JyZWFrO2Nhc2UgMTk6dmFyIHEwPWIwWzFdLEZyPU8wKHEwWzJdKSxGMD1bMTksWzAscTBbMV0sRnJdXTticmVhaztjYXNlIDIwOnZhciBfPWIwWzFdLGs9TzAoX1syXSksRjA9WzIwLFswLF9bMV0sa11dO2JyZWFrO2Nhc2UgMjE6dmFyIEk9YjBbMV0sVT1PMChJWzJdKSxGMD1bMjEsWzAsSVsxXSxVXV07YnJlYWs7Y2FzZSAyMjp2YXIgWT1iMFsxXSx5MD1PMChZWzJdKSxGMD1bMjIsWzAsWVsxXSx5MF1dO2JyZWFrO2Nhc2UgMjM6dmFyIFAwPWIwWzFdLEkwPU8wKFAwWzNdKSxGMD1bMjMsWzAsUDBbMV0sUDBbMl0sSTBdXTticmVhaztjYXNlIDI0OnZhciBEPWIwWzFdLHUwPU8wKERbM10pLEYwPVsyNCxbMCxEWzFdLERbMl0sdTBdXTticmVhaztjYXNlIDI1OnZhciBYMD1iMFsxXSxKMD1PMChYMFszXSksRjA9WzI1LFswLFgwWzFdLFgwWzJdLEowXV07YnJlYWs7ZGVmYXVsdDp2YXIgaXI9YjBbMV0sUTA9TzAoaXJbMl0pLEYwPVsyNixbMCxpclsxXSxRMF1dfXJldHVyblswLEJbMV0sRjBdfSk7ZnVuY3Rpb24gV3IoQil7dmFyIFo9cHIoQik7aWYoWTAoQiw2NiksQTAoQik9PT00KXt2YXIgcDA9b24oWixwcihCKSk7WTAoQiw0KSxLdShCLDApO3ZhciBiMD11KHRbOV0sQik7cmV0dXJuIGs3KEIpLFkwKEIsNSksWzAsWzAsYjBdLGxyKFswLHAwXSxbMCx3ZShCKV0sMCldfXJldHVyblswLDAsbHIoWzAsWl0sWzAsd2UoQildLDApXX12YXIgSnI9MDtmdW5jdGlvbiBhcihCKXt2YXIgWj11MigwLEIpLHAwPUEwKFopO3JldHVybiB0eXBlb2YgcDA9PVwibnVtYmVyXCImJnAwPT09NjY/WzAsY3IoSnIsV3IsWildOjB9ZnVuY3Rpb24gX3IoQil7dmFyIFo9QTAoQikscDA9WW4oMSxCKTtpZih0eXBlb2YgWj09XCJudW1iZXJcIiYmWj09PTg2KXtpZih0eXBlb2YgcDA9PVwibnVtYmVyXCImJnAwPT09NjYpe1kwKEIsODYpO3ZhciBiMD1hcihCKTtyZXR1cm5bMCxbMCxqMShCKV0sYjBdfXZhciBPMD11KFcwLEIpLE0wPUEwKEIpPT09NjY/bzIoQixPMCk6TzA7cmV0dXJuWzAsTTAsYXIoQildfXJldHVyblswLFswLGoxKEIpXSwwXX1mdW5jdGlvbiBJcihCLFope3ZhciBwMD1fcygxLFopO0t1KHAwLDEpO3ZhciBiMD11KEIscDApO3JldHVybiBrNyhwMCksYjB9ZnVuY3Rpb24gZmUoQil7cmV0dXJuIElyKGUsQil9ZnVuY3Rpb24gdjAoQil7cmV0dXJuIElyKGIsQil9ZnVuY3Rpb24gUChCKXtyZXR1cm4gSXIoWCxCKX1mdW5jdGlvbiBMKEIpe3JldHVybiBJcihzMCxCKX1mdW5jdGlvbiBRKEIsWil7cmV0dXJuIElyKHVyKEUwLEIsMCwwKSxaKX1mdW5jdGlvbiBpMChCKXtyZXR1cm4gSXIoVTAsQil9ZnVuY3Rpb24gbDAoQil7cmV0dXJuIElyKGwsQil9ZnVuY3Rpb24gUzAoQil7cmV0dXJuIElyKGksQil9ZnVuY3Rpb24gVDAoQil7cmV0dXJuIElyKFcwLEIpfWZ1bmN0aW9uIHJyKEIpe3JldHVybiBJcihhcixCKX1mdW5jdGlvbiBMMChCKXtyZXR1cm4gSXIoX3IsQil9cmV0dXJuWzAsZmUsdjAsUCxMLGZ1bmN0aW9uKEIpe3JldHVybiBJcihocixCKX0sUSxpMCxsMCxTMCxUMCxycixMMF19ZnVuY3Rpb24gJGVlKHQpe2Z1bmN0aW9uIG4oYyxzKXtpZihzWzBdPT09MClyZXR1cm4gc1sxXTt2YXIgcD1zWzJdWzFdO3JldHVybiBEdShmdW5jdGlvbih5KXtyZXR1cm4gdWUoYyx5KX0scCksc1sxXX1mdW5jdGlvbiBlKGMscyxwKXt2YXIgeT1jP2NbMV06MjY7aWYocFswXT09PTApdmFyIFQ9cFsxXTtlbHNle3ZhciBFPXBbMl1bMl07RHUoZnVuY3Rpb24oQSl7cmV0dXJuIHVlKHMsQSl9LEUpO3ZhciBUPXBbMV19MS11KHRbMjNdLFQpJiZ1ZShzLFswLFRbMV0seV0pO3ZhciBkPVRbMl0sdz0wO3JldHVybiBkWzBdPT09MTAmJmpzKGRbMV1bMl1bMV0pJiYoVjcocyxbMCxUWzFdLDUyXSksdz0xKSxvKHRbMTldLHMsVCl9ZnVuY3Rpb24gaShjLHMpe3JldHVyblswLFswLGMsc1sxXV0sWzAsYyxzWzJdXV19ZnVuY3Rpb24geChjLHMpe3ZhciBwPUxjKGNbMl0sc1syXSk7cmV0dXJuWzAsTGMoY1sxXSxzWzFdKSxwXX1yZXR1cm5bMCxuLGUsZyRyLGkseCxmdW5jdGlvbihjKXt2YXIgcz15ZShjWzJdKTtyZXR1cm5bMCx5ZShjWzFdKSxzXX1dfWZ1bmN0aW9uIFplZSh0KXtmdW5jdGlvbiBuKFMpe3ZhciBNPUEwKFMpO2lmKHR5cGVvZiBNPT1cIm51bWJlclwiKXt2YXIgSz1NLTk5fDAsVj0wO2lmKDY8Sz4+PjA/Sz09PTE0JiYoVj0xKTo0PChLLTF8MCk+Pj4wJiYoVj0xKSxWKXJldHVybiB3ZShTKX12YXIgZjA9eDcoUyk7cmV0dXJuIGYwJiZNcyhTKX1mdW5jdGlvbiBlKFMpe3ZhciBNPXByKFMpO0t1KFMsMCk7dmFyIEs9Y3IoMCxmdW5jdGlvbihmMCl7WTAoZjAsMCksWTAoZjAsMTIpO3ZhciBtMD11KHRbMTBdLGYwKTtyZXR1cm4gWTAoZjAsMSksbTB9LFMpO2s3KFMpO3ZhciBWPWxyKFswLE1dLFswLG4oUyldLDApO3JldHVyblswLEtbMV0sWzAsS1syXSxWXV19ZnVuY3Rpb24gaShTKXtyZXR1cm4gQTAoUyk9PT0xPzA6WzAsdSh0WzddLFMpXX1mdW5jdGlvbiB4KFMpe3ZhciBNPXByKFMpO0t1KFMsMCk7dmFyIEs9Y3IoMCxmdW5jdGlvbihmMCl7WTAoZjAsMCk7dmFyIG0wPWkoZjApO3JldHVybiBZMChmMCwxKSxtMH0sUyk7azcoUyk7dmFyIFY9eXUoWzAsTV0sWzAsbihTKV0sMCwwKTtyZXR1cm5bMCxLWzFdLFswLEtbMl0sVl1dfWZ1bmN0aW9uIGMoUyl7S3UoUywwKTt2YXIgTT1jcigwLGZ1bmN0aW9uKEspe1kwKEssMCk7dmFyIFY9QTAoSyksZjA9MDtpZih0eXBlb2YgVj09XCJudW1iZXJcIiYmVj09PTEyKXt2YXIgbTA9cHIoSyk7WTAoSywxMik7dmFyIGswPXUodFsxMF0sSykseDA9WzMsWzAsazAsbHIoWzAsbTBdLDAsMCldXTtmMD0xfWlmKCFmMCl2YXIgZzA9aShLKSxlMD1nMD8wOnByKEspLHgwPVsyLFswLGcwLHl1KDAsMCxlMCwwKV1dO3JldHVybiBZMChLLDEpLHgwfSxTKTtyZXR1cm4gazcoUyksWzAsTVsxXSxNWzJdXX1mdW5jdGlvbiBzKFMpe3ZhciBNPVBlKFMpLEs9QTAoUyksVj0wO2lmKHR5cGVvZiBLIT1cIm51bWJlclwiJiZLWzBdPT09Nyl7dmFyIGYwPUtbMV07Vj0xfWlmKCFWKXtTdChGUXIsUyk7dmFyIGYwPVRRcn12YXIgbTA9cHIoUyk7aWUoUyk7dmFyIGswPUEwKFMpLGcwPTA7aWYodHlwZW9mIGswPT1cIm51bWJlclwiKXt2YXIgZTA9azArQ1h8MCx4MD0wO2lmKDcyPGUwPj4+MD9lMCE9PTc2JiYoeDA9MSk6NzA8KGUwLTF8MCk+Pj4wfHwoeDA9MSksIXgwKXt2YXIgbD13ZShTKTtnMD0xfX1pZighZzApdmFyIGw9bihTKTtyZXR1cm5bMCxNLFswLGYwLGxyKFswLG0wXSxbMCxsXSwwKV1dfWZ1bmN0aW9uIHAoUyl7dmFyIE09WW4oMSxTKTtpZih0eXBlb2YgTT09XCJudW1iZXJcIil7aWYoTT09PTEwKWZvcih2YXIgSz1jcigwLGZ1bmN0aW9uKG0wKXt2YXIgazA9WzAscyhtMCldO3JldHVybiBZMChtMCwxMCksWzAsazAscyhtMCldfSxTKTs7KXt2YXIgVj1BMChTKTtpZih0eXBlb2YgVj09XCJudW1iZXJcIiYmVj09PTEwKXt2YXIgZjA9ZnVuY3Rpb24oazApe3JldHVybiBmdW5jdGlvbihnMCl7cmV0dXJuIFkwKGcwLDEwKSxbMCxbMSxrMF0scyhnMCldfX0oSyksSz1jcihbMCxLWzFdXSxmMCxTKTtjb250aW51ZX1yZXR1cm5bMixLXX1pZihNPT09ODYpcmV0dXJuWzEsY3IoMCxmdW5jdGlvbihtMCl7dmFyIGswPXMobTApO3JldHVybiBZMChtMCw4NiksWzAsazAscyhtMCldfSxTKV19cmV0dXJuWzAscyhTKV19ZnVuY3Rpb24geShTKXtyZXR1cm4gY3IoMCxmdW5jdGlvbihNKXt2YXIgSz1ZbigxLE0pLFY9MDtpZih0eXBlb2YgSz09XCJudW1iZXJcIiYmSz09PTg2KXt2YXIgZjA9WzEsY3IoMCxmdW5jdGlvbihiKXt2YXIgUjA9cyhiKTtyZXR1cm4gWTAoYiw4NiksWzAsUjAscyhiKV19LE0pXTtWPTF9aWYoIVYpdmFyIGYwPVswLHMoTSldO3ZhciBtMD1BMChNKSxrMD0wO2lmKHR5cGVvZiBtMD09XCJudW1iZXJcIiYmbTA9PT04Mil7WTAoTSw4Mik7dmFyIGcwPXByKE0pLGUwPUEwKE0pLHgwPTA7aWYodHlwZW9mIGUwPT1cIm51bWJlclwiKWlmKGUwPT09MCl7dmFyIGw9eChNKSxjMD1sWzJdLHQwPWxbMV07YzBbMV18fHVlKE0sWzAsdDAsNTZdKTt2YXIgbzA9WzAsWzEsdDAsYzBdXX1lbHNlIHgwPTE7ZWxzZSBpZihlMFswXT09PTgpe1kwKE0sZTApO3ZhciB3MD1bMCxlMFsyXV0sXzA9bHIoWzAsZzBdLFswLG4oTSldLDApLG8wPVswLFswLGUwWzFdLFswLHcwLGUwWzNdLF8wXV1dfWVsc2UgeDA9MTtpZih4MCl7amUoTSw1Nyk7dmFyIG8wPVswLFswLFBlKE0pLFswLGdRcixTUXIsMF1dXX12YXIgRTA9bzA7azA9MX1pZighazApdmFyIEUwPTA7cmV0dXJuWzAsZjAsRTBdfSxTKX1mdW5jdGlvbiBUKFMpe3JldHVybiBjcigwLGZ1bmN0aW9uKE0pe1kwKE0sOTgpO3ZhciBLPUEwKE0pO2lmKHR5cGVvZiBLPT1cIm51bWJlclwiKXtpZihLPT09OTkpcmV0dXJuIGllKE0pLHdRcn1lbHNlIGlmKEtbMF09PT03KWZvcih2YXIgVj0wLGYwPXAoTSk7Oyl7dmFyIG0wPUEwKE0pO2lmKHR5cGVvZiBtMD09XCJudW1iZXJcIil7aWYobTA9PT0wKXt2YXIgVj1bMCxbMSxlKE0pXSxWXTtjb250aW51ZX19ZWxzZSBpZihtMFswXT09PTcpe3ZhciBWPVswLFswLHkoTSldLFZdO2NvbnRpbnVlfXZhciBrMD15ZShWKSxnMD1bMCxjMSxbMCxmMCx4dShNLGo3KSxrMF1dO3JldHVybiB4dShNLDk5KT9bMCxnMF06KEIxKE0sOTkpLFsxLGcwXSl9cmV0dXJuIEIxKE0sOTkpLEVRcn0sUyl9ZnVuY3Rpb24gRShTKXtyZXR1cm4gY3IoMCxmdW5jdGlvbihNKXtZMChNLDk4KSxZMChNLGo3KTt2YXIgSz1BMChNKTtpZih0eXBlb2YgSz09XCJudW1iZXJcIil7aWYoSz09PTk5KXJldHVybiBpZShNKSxOaX1lbHNlIGlmKEtbMF09PT03KXt2YXIgVj1wKE0pO3JldHVybiBwZTAoTSw5OSksWzAsYzEsWzAsVl1dfXJldHVybiBCMShNLDk5KSxOaX0sUyl9dmFyIGQ9ZnVuY3Rpb24gUyhNKXtyZXR1cm4gUy5mdW4oTSl9LHc9ZnVuY3Rpb24gUyhNKXtyZXR1cm4gUy5mdW4oTSl9LEc9ZnVuY3Rpb24gUyhNKXtyZXR1cm4gUy5mdW4oTSl9O04oZCxmdW5jdGlvbihTKXt2YXIgTT1BMChTKTtpZih0eXBlb2YgTT09XCJudW1iZXJcIil7aWYoTT09PTApcmV0dXJuIGMoUyl9ZWxzZSBpZihNWzBdPT09OClyZXR1cm4gWTAoUyxNKSxbMCxNWzFdLFs0LFswLE1bMl0sTVszXV1dXTt2YXIgSz11KEcsUyksVj1LWzJdLGYwPUtbMV07cmV0dXJuIE5pPD1WWzFdP1swLGYwLFsxLFZbMl1dXTpbMCxmMCxbMCxWWzJdXV19KTtmdW5jdGlvbiBBKFMpe3N3aXRjaChTWzBdKXtjYXNlIDA6cmV0dXJuIFNbMV1bMl1bMV07Y2FzZSAxOnZhciBNPVNbMV1bMl0sSz1UZShoUXIsTVsyXVsyXVsxXSk7cmV0dXJuIFRlKE1bMV1bMl1bMV0sSyk7ZGVmYXVsdDp2YXIgVj1TWzFdWzJdLGYwPVZbMV0sbTA9ZjBbMF09PT0wP2YwWzFdWzJdWzFdOkEoWzIsZjBbMV1dKTtyZXR1cm4gVGUobTAsVGUoZFFyLFZbMl1bMl1bMV0pKX19cmV0dXJuIE4odyxmdW5jdGlvbihTKXt2YXIgTT1wcihTKSxLPVQoUyk7azcoUyk7dmFyIFY9S1syXTtpZihWWzBdPT09MCl2YXIgZjA9VlsxXSxtMD10eXBlb2YgZjA9PVwibnVtYmVyXCI/MDpmMFsyXVsyXSxrMD1tMDtlbHNlIHZhciBrMD0xO2lmKGswKXZhciBnMD1TVSxlMD1nMCx4MD1jcigwLGZ1bmN0aW9uKHFyKXtyZXR1cm4gMH0sUyk7ZWxzZXtLdShTLDMpO2Zvcih2YXIgbD1QZShTKSxjMD0wOzspe3ZhciB0MD1pMihTKSxvMD1BMChTKSx3MD0wO2lmKHR5cGVvZiBvMD09XCJudW1iZXJcIil7dmFyIF8wPTA7aWYobzA9PT05OCl7S3UoUywyKTt2YXIgRTA9QTAoUyksVTA9WW4oMSxTKSxiPTA7aWYodHlwZW9mIEUwPT1cIm51bWJlclwiJiZFMD09PTk4JiZ0eXBlb2YgVTA9PVwibnVtYmVyXCIpe3ZhciBSMD0wO2lmKGo3IT09VTAmJlBuIT09VTAmJihSMD0xKSwhUjApe3ZhciBYPUUoUyksczA9WFsyXSxocj1YWzFdLEFyPXR5cGVvZiBzMD09XCJudW1iZXJcIj9bMCxOaSxocl06WzAsYzEsWzAsaHIsczBbMl1dXSxvcj1TWzIzXVsxXSxXMD0wO2lmKG9yKXt2YXIgTHI9b3JbMl07aWYoTHIpe3ZhciBUcj1MclsyXTtXMD0xfX1pZighVzApdmFyIFRyPWtlKHdScik7U1syM11bMV09VHI7dmFyIEhyPW4yKFMpLE9yPVlsKFNbMjRdWzFdLEhyKTtTWzI1XVsxXT1Pcjt2YXIgZnI9WzAseWUoYzApLHQwLEFyXTtiPTF9fWlmKCFiKXt2YXIgUnI9dSh3LFMpLFdyPVJyWzJdLEpyPVJyWzFdLGFyPU5pPD1XclsxXT9bMCxKcixbMSxXclsyXV1dOlswLEpyLFswLFdyWzJdXV0sYzA9WzAsYXIsYzBdO2NvbnRpbnVlfX1lbHNlIGlmKFBuPT09bzApe1N0KDAsUyk7dmFyIGZyPVswLHllKGMwKSx0MCxTVV19ZWxzZSB3MD0xLF8wPTE7aWYoIV8wKXZhciBfcj10MD90MFsxXTpsLElyPXl0KGwsX3IpLGUwPWZyWzNdLHgwPVswLElyLGZyWzFdXX1lbHNlIHcwPTE7aWYodzApe3ZhciBjMD1bMCx1KGQsUyksYzBdO2NvbnRpbnVlfWJyZWFrfX12YXIgZmU9d2UoUyksdjA9MDtpZih0eXBlb2YgZTAhPVwibnVtYmVyXCIpe3ZhciBQPWUwWzFdLEw9MDtpZihjMT09PVApe3ZhciBRPWUwWzJdLGkwPUtbMl07aWYoaTBbMF09PT0wKXt2YXIgbDA9aTBbMV07aWYodHlwZW9mIGwwPT1cIm51bWJlclwiKWplKFMsa1FyKTtlbHNle3ZhciBTMD1BKGwwWzJdWzFdKTtuMChBKFFbMl1bMV0pLFMwKSYmamUoUyxbMTcsUzBdKX19dmFyIFQwPVFbMV19ZWxzZSBpZihOaT09PVApe3ZhciBycj1LWzJdO2lmKHJyWzBdPT09MCl7dmFyIEwwPXJyWzFdO3R5cGVvZiBMMCE9XCJudW1iZXJcIiYmamUoUyxbMTcsQShMMFsyXVsxXSldKX12YXIgVDA9ZTBbMl19ZWxzZSBMPTE7aWYoIUwpe3ZhciBCPVQwO3YwPTF9fWlmKCF2MCl2YXIgQj1LWzFdO3ZhciBaPUtbMl1bMV0scDA9S1sxXTtpZih0eXBlb2YgWj09XCJudW1iZXJcIil7dmFyIGIwPTAsTzA9bHIoWzAsTV0sWzAsZmVdLDApO2lmKHR5cGVvZiBlMCE9XCJudW1iZXJcIil7dmFyIE0wPWUwWzFdLGVyPTA7aWYoYzE9PT1NMCl2YXIgeXI9ZTBbMl1bMV07ZWxzZSBpZihOaT09PU0wKXZhciB5cj1lMFsyXTtlbHNlIGVyPTE7aWYoIWVyKXt2YXIgdnI9eXI7YjA9MX19aWYoIWIwKXZhciB2cj1CO3ZhciAkMD1bMCxOaSxbMCxwMCx2cix4MCxPMF1dfWVsc2V7dmFyIEVyPTAsTXI9bHIoWzAsTV0sWzAsZmVdLDApO2lmKHR5cGVvZiBlMCE9XCJudW1iZXJcIiYmYzE9PT1lMFsxXSl7dmFyIEJyPVswLGUwWzJdXTtFcj0xfWlmKCFFcil2YXIgQnI9MDt2YXIgJDA9WzAsYzEsWzAsWzAscDAsWlsyXV0sQnIseDAsTXJdXX1yZXR1cm5bMCx5dChLWzFdLEIpLCQwXX0pLE4oRyxmdW5jdGlvbihTKXtyZXR1cm4gS3UoUywyKSx1KHcsUyl9KSxbMCxuLGUsaSx4LGMscyxwLHksVCxFLGQsdyxHXX1mdW5jdGlvbiBGaSh0KXtyZXR1cm4gdHlwZW9mIHQ9PVwibnVtYmVyXCI/MDp0WzBdPT09MD8xOnRbMV19ZnVuY3Rpb24gUWVlKHQsbil7cmV0dXJuWzAsdCxuXX1mdW5jdGlvbiB0Yih0LG4sZSl7cmV0dXJuWzEsMixuLGUsdCwwXX1mdW5jdGlvbiB1Yih0LG4sZSl7cmV0dXJuWzEsMix0LG4sMCxlXX1mdW5jdGlvbiBVYyh0LG4sZSxpKXt2YXIgeD1GaSh0KSxjPUZpKGkpLHM9Yzw9eD94KzF8MDpjKzF8MDtyZXR1cm4gcz09PTE/WzAsbixlXTpbMSxzLG4sZSx0LGldfWZ1bmN0aW9uIEZMKHQsbil7dmFyIGU9biE9PTA/MTowO2lmKGUpe2lmKG4hPT0xKXt2YXIgaT1uPj4+MXwwLHg9RkwodCxpKSxjPXUodCwwKSxzPUZMKHQsKG4taXwwKS0xfDApLHA9Y1syXSx5PWNbMV07cmV0dXJuWzEsRmkoeCkrMXwwLHkscCx4LHNdfXZhciBUPXUodCwwKSxFPVswLFRbMV0sVFsyXV19ZWxzZSB2YXIgRT1lO3JldHVybiBFfWZ1bmN0aW9uIFA5KHQsbixlLGkpe3ZhciB4PUZpKHQpLGM9RmkoaSkscz1jPD14P3grMXwwOmMrMXwwO3JldHVyblsxLHMsbixlLHQsaV19ZnVuY3Rpb24gSXUodCxuLGUsaSl7dmFyIHg9RmkodCksYz1GaShpKTtpZigoYysyfDApPHgpe3ZhciBzPXRbNV0scD10WzRdLHk9dFszXSxUPXRbMl0sRT1GaShzKTtpZihFPD1GaShwKSlyZXR1cm4gUDkocCxULHksVWMocyxuLGUsaSkpO3ZhciBkPVVjKHNbNV0sbixlLGkpLHc9c1szXSxHPXNbMl07cmV0dXJuIFA5KFVjKHAsVCx5LHNbNF0pLEcsdyxkKX1pZigoeCsyfDApPGMpe3ZhciBBPWlbNV0sUz1pWzRdLE09aVszXSxLPWlbMl0sVj1GaShTKTtpZihWPD1GaShBKSlyZXR1cm4gUDkoVWModCxuLGUsUyksSyxNLEEpO3ZhciBmMD1VYyhTWzVdLEssTSxBKSxtMD1TWzNdLGswPVNbMl07cmV0dXJuIFA5KFVjKHQsbixlLFNbNF0pLGswLG0wLGYwKX1yZXR1cm4gVWModCxuLGUsaSl9dmFyIG83PTA7ZnVuY3Rpb24gcm5lKHQpe3ZhciBuPXR5cGVvZiB0PT1cIm51bWJlclwiPzE6MCxlPW4mJjE7cmV0dXJuIGV9ZnVuY3Rpb24gcXModCxuKXtmb3IodmFyIGU9dCxpPW47Oyl7aWYodHlwZW9mIGU9PVwibnVtYmVyXCIpcmV0dXJuIGk7aWYoZVswXT09PTApcmV0dXJuWzAsZVsxXSxlWzJdLG83LGldO3ZhciB4PVswLGVbMl0sZVszXSxlWzVdLGldLGU9ZVs0XSxpPXh9fWZ1bmN0aW9uIEZlMCh0KXtmb3IodmFyIG49dDs7KXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIil0aHJvdyBKdDtpZihuWzBdPT09MClyZXR1cm4gbjtpZih0eXBlb2Ygbls0XT09XCJudW1iZXJcIilyZXR1cm5bMCxuWzJdLG5bM11dO3ZhciBuPW5bNF19fWZ1bmN0aW9uIFRlMCh0KXtmb3IodmFyIG49dDs7KXt2YXIgZT1uWzRdO2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVyblswLG5bMl0sblszXV07aWYoZVswXT09PTApcmV0dXJuIGU7dmFyIG49ZX19ZnVuY3Rpb24gT2UwKHQpe2Zvcih2YXIgbj10Ozspe2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXJldHVybiAwO2lmKG5bMF09PT0wKXJldHVyblswLFswLG5bMV0sblsyXV1dO2lmKHR5cGVvZiBuWzRdPT1cIm51bWJlclwiKXJldHVyblswLFswLG5bMl0sblszXV1dO3ZhciBuPW5bNF19fWZ1bmN0aW9uIGVuZSh0KXtmb3IodmFyIG49dDs7KXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIil0aHJvdyBKdDtpZihuWzBdPT09MClyZXR1cm4gbjtpZih0eXBlb2Ygbls1XT09XCJudW1iZXJcIilyZXR1cm5bMCxuWzJdLG5bM11dO3ZhciBuPW5bNV19fWZ1bmN0aW9uIG5uZSh0KXtmb3IodmFyIG49dDs7KXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm4gMDtpZihuWzBdPT09MClyZXR1cm5bMCxbMCxuWzFdLG5bMl1dXTtpZih0eXBlb2Ygbls1XT09XCJudW1iZXJcIilyZXR1cm5bMCxbMCxuWzJdLG5bM11dXTt2YXIgbj1uWzVdfX1mdW5jdGlvbiBUTCh0KXt2YXIgbj10WzVdLGU9dFs0XSxpPXRbM10seD10WzJdO3JldHVybiB0eXBlb2YgZT09XCJudW1iZXJcIj9uOmVbMF09PT0wP0l1KDAseCxpLG4pOkl1KFRMKGUpLHgsaSxuKX1mdW5jdGlvbiBPTCh0LG4pe2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXJldHVybiB0O2lmKG5bMF09PT0wKXJldHVybiB0Yih0LG5bMV0sblsyXSk7dmFyIGU9bls1XSxpPW5bM10seD1uWzJdO3JldHVybiBJdShPTCh0LG5bNF0pLHgsaSxlKX1mdW5jdGlvbiBJZTAodCxuLGUpe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVyblswLHQsbl07aWYoZVswXT09PTApcmV0dXJuIHViKHQsbixlKTt2YXIgaT1lWzVdLHg9ZVszXSxjPWVbMl07cmV0dXJuIEl1KEllMCh0LG4sZVs0XSksYyx4LGkpfWZ1bmN0aW9uIElMKHQsbil7aWYodHlwZW9mIG49PVwibnVtYmVyXCIpcmV0dXJuIHQ7aWYoblswXT09PTApcmV0dXJuIHViKG5bMV0sblsyXSx0KTt2YXIgZT1JTCh0LG5bNV0pO3JldHVybiBJdShuWzRdLG5bMl0sblszXSxlKX1mdW5jdGlvbiBBZTAodCxuLGUpe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVyblswLHQsbl07aWYoZVswXT09PTApcmV0dXJuIHRiKGUsdCxuKTt2YXIgaT1BZTAodCxuLGVbNV0pO3JldHVybiBJdShlWzRdLGVbMl0sZVszXSxpKX1mdW5jdGlvbiBOZTAodCxuKXtpZih0eXBlb2YgdD09XCJudW1iZXJcIilyZXR1cm4gbjtpZih0WzBdPT09MSYmdHlwZW9mIG4hPVwibnVtYmVyXCIpe2lmKG5bMF09PT0wKXJldHVybiBJTChuLHQpO3ZhciBlPVRlMChuKSxpPVRMKG4pO3JldHVybiBJdSh0LGVbMV0sZVsyXSxpKX1yZXR1cm4gdHlwZW9mIG49PVwibnVtYmVyXCI/dDpPTCh0LG4pfWZ1bmN0aW9uIGFpKHQsbixlLGkpe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXJldHVybiBJZTAobixlLGkpO2lmKHRbMF09PT0wKXtpZih0eXBlb2YgaSE9XCJudW1iZXJcIil7aWYoaVswXT09PTApcmV0dXJuWzEsMixuLGUsdCxpXTtpZigzPGlbMV0pe3ZhciB4PWlbNV0sYz1pWzNdLHM9aVsyXTtyZXR1cm4gSXUoYWkodCxuLGUsaVs0XSkscyxjLHgpfXJldHVybiBVYyh0LG4sZSxpKX19ZWxzZXt2YXIgcD10WzVdLHk9dFs0XSxUPXRbM10sRT10WzJdLGQ9dFsxXTtpZih0eXBlb2YgaSE9XCJudW1iZXJcIil7aWYoaVswXT09PTApcmV0dXJuIDM8ZD9JdSh5LEUsVCxhaShwLG4sZSxpKSk6VWModCxuLGUsaSk7dmFyIHc9aVsxXTtpZigodysyfDApPGQpcmV0dXJuIEl1KHksRSxULGFpKHAsbixlLGkpKTtpZigoZCsyfDApPHcpe3ZhciBHPWlbNV0sQT1pWzNdLFM9aVsyXTtyZXR1cm4gSXUoYWkodCxuLGUsaVs0XSksUyxBLEcpfXJldHVybiBVYyh0LG4sZSxpKX19cmV0dXJuIEFlMChuLGUsdCl9ZnVuY3Rpb24gRDkodCxuKXtpZih0eXBlb2YgdD09XCJudW1iZXJcIilyZXR1cm4gbjtpZih0WzBdPT09MSYmdHlwZW9mIG4hPVwibnVtYmVyXCIpe2lmKG5bMF09PT0wKXJldHVybiBJTChuLHQpO3ZhciBlPVRlMChuKSxpPVRMKG4pO3JldHVybiBhaSh0LGVbMV0sZVsyXSxpKX1yZXR1cm4gdHlwZW9mIG49PVwibnVtYmVyXCI/dDpPTCh0LG4pfWZ1bmN0aW9uIGliKHQsbixlLGkpe3JldHVybiBlP2FpKHQsbixlWzFdLGkpOkQ5KHQsaSl9ZnVuY3Rpb24gQ2UwKHQsbil7Zm9yKHZhciBlPW47Oyl7aWYodHlwZW9mIGU9PVwibnVtYmVyXCIpcmV0dXJuIDA7aWYoZVswXT09PTApcmV0dXJuIG8odCxlWzFdLGVbMl0pO0NlMCh0LGVbNF0pLG8odCxlWzJdLGVbM10pO3ZhciBlPWVbNV19fWZ1bmN0aW9uIEFMKHQsbil7aWYodHlwZW9mIG49PVwibnVtYmVyXCIpcmV0dXJuIDA7aWYoblswXT09PTApe3ZhciBlPXUodCxuWzJdKTtyZXR1cm5bMCxuWzFdLGVdfXZhciBpPUFMKHQsbls0XSkseD11KHQsblszXSksYz1BTCh0LG5bNV0pO3JldHVyblsxLG5bMV0sblsyXSx4LGksY119ZnVuY3Rpb24gTkwodCxuKXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm4gMDtpZihuWzBdPT09MCl7dmFyIGU9blsxXTtyZXR1cm5bMCxlLG8odCxlLG5bMl0pXX12YXIgaT1uWzJdLHg9TkwodCxuWzRdKSxjPW8odCxpLG5bM10pLHM9TkwodCxuWzVdKTtyZXR1cm5bMSxuWzFdLGksYyx4LHNdfWZ1bmN0aW9uIENMKHQsbixlKXtmb3IodmFyIGk9bix4PWU7Oyl7aWYodHlwZW9mIGk9PVwibnVtYmVyXCIpcmV0dXJuIHg7aWYoaVswXT09PTApcmV0dXJuIHVyKHQsaVsxXSxpWzJdLHgpO3ZhciBjPUNMKHQsaVs0XSx4KSxzPXVyKHQsaVsyXSxpWzNdLGMpLGk9aVs1XSx4PXN9fWZ1bmN0aW9uIFBlMCh0LG4pe2Zvcih2YXIgZT10LGk9bjs7KXtpZih0eXBlb2YgaT09XCJudW1iZXJcIilyZXR1cm4gZTtpZihpWzBdPT09MClyZXR1cm5bMCxpWzFdLGVdO3ZhciB4PWlbNF0sYz1QZTAoZSxpWzVdKSxlPVswLGlbMl0sY10saT14fX1mdW5jdGlvbiBEZTAodCl7cmV0dXJuIFBlMCgwLHQpfWZ1bmN0aW9uIExlMCh0LG4pe2Zvcih2YXIgZT1uOzspe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVybiAxO2lmKGVbMF09PT0wKXJldHVybiBvKHQsZVsxXSxlWzJdKTt2YXIgaT1vKHQsZVsyXSxlWzNdKTtpZihpKXt2YXIgeD1MZTAodCxlWzRdKTtpZih4KXt2YXIgZT1lWzVdO2NvbnRpbnVlfXZhciBjPXh9ZWxzZSB2YXIgYz1pO3JldHVybiBjfX1mdW5jdGlvbiBSZTAodCxuKXtmb3IodmFyIGU9bjs7KXtpZih0eXBlb2YgZT09XCJudW1iZXJcIilyZXR1cm4gMDtpZihlWzBdPT09MClyZXR1cm4gbyh0LGVbMV0sZVsyXSk7dmFyIGk9byh0LGVbMl0sZVszXSk7aWYoaSl2YXIgeD1pO2Vsc2V7dmFyIGM9UmUwKHQsZVs0XSk7aWYoIWMpe3ZhciBlPWVbNV07Y29udGludWV9dmFyIHg9Y31yZXR1cm4geH19ZnVuY3Rpb24gUEwodCxuKXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm4gMDtpZihuWzBdPT09MClyZXR1cm4gbyh0LG5bMV0sblsyXSk/bjpvNzt2YXIgZT1uWzVdLGk9bls0XSx4PW5bM10sYz1uWzJdLHM9UEwodCxpKSxwPW8odCxjLHgpLHk9UEwodCxlKTtyZXR1cm4gcD9pPT09cyYmZT09PXk/bjphaShzLGMseCx5KTpEOShzLHkpfWZ1bmN0aW9uIERMKHQpe2lmKHR5cGVvZiB0PT1cIm51bWJlclwiKXJldHVybiAwO2lmKHRbMF09PT0wKXJldHVybiAxO3ZhciBuPURMKHRbNV0pO3JldHVybihETCh0WzRdKSsxfDApK258MH1mdW5jdGlvbiBqZTAodCxuKXtmb3IodmFyIGU9dCxpPW47Oyl7aWYodHlwZW9mIGk9PVwibnVtYmVyXCIpcmV0dXJuIGU7aWYoaVswXT09PTApcmV0dXJuWzAsaSxlXTt2YXIgeD1pWzRdLGM9amUwKGUsaVs1XSksZT1bMCxbMCxpWzJdLGlbM11dLGNdLGk9eH19ZnVuY3Rpb24gdG5lKHQpe3JldHVybiBqZTAoMCx0KX12YXIgTDk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihBLFMsTSl7aWYodHlwZW9mIE09PVwibnVtYmVyXCIpcmV0dXJuWzAsQSxTXTtpZihNWzBdPT09MCl7dmFyIEs9TVsxXSxWPW8odFsxXSxBLEspO3JldHVybiBWPT09MD9NWzJdPT09Uz9NOlswLEssU106MDw9Vj90YihNLEEsUyk6dWIoQSxTLE0pfXZhciBmMD1NWzVdLG0wPU1bNF0sazA9TVszXSxnMD1NWzJdLGUwPW8odFsxXSxBLGcwKTtpZihlMD09PTApcmV0dXJuIGswPT09Uz9NOlsxLE1bMV0sQSxTLG0wLGYwXTtpZigwPD1lMCl7dmFyIHgwPW4oQSxTLGYwKTtyZXR1cm4gZjA9PT14MD9NOkl1KG0wLGcwLGswLHgwKX12YXIgbD1uKEEsUyxtMCk7cmV0dXJuIG0wPT09bD9NOkl1KGwsZzAsazAsZjApfWZ1bmN0aW9uIGUoQSxTKXtmb3IodmFyIE09Uzs7KXtpZih0eXBlb2YgTT09XCJudW1iZXJcIil0aHJvdyBKdDtpZihNWzBdPT09MCl7aWYobyh0WzFdLEEsTVsxXSk9PT0wKXJldHVybiBNWzJdO3Rocm93IEp0fXZhciBLPW8odFsxXSxBLE1bMl0pO2lmKEs9PT0wKXJldHVybiBNWzNdO3ZhciBWPTA8PUs/TVs1XTpNWzRdLE09Vn19ZnVuY3Rpb24gaShBLFMpe2Zvcih2YXIgTT1TOzspe2lmKHR5cGVvZiBNPT1cIm51bWJlclwiKXJldHVybiAwO2lmKE1bMF09PT0wKXt2YXIgSz1vKHRbMV0sQSxNWzFdKT09PTA/MTowLFY9SyYmWzAsTVsyXV07cmV0dXJuIFZ9dmFyIGYwPW8odFsxXSxBLE1bMl0pO2lmKGYwPT09MClyZXR1cm5bMCxNWzNdXTt2YXIgbTA9MDw9ZjA/TVs1XTpNWzRdLE09bTB9fWZ1bmN0aW9uIHgoQSxTKXtmb3IodmFyIE09Uzs7KXtpZih0eXBlb2YgTT09XCJudW1iZXJcIilyZXR1cm4gMDtpZihNWzBdPT09MClyZXR1cm4gbyh0WzFdLEEsTVsxXSk9PT0wPzE6MDt2YXIgSz1vKHRbMV0sQSxNWzJdKSxWPUs9PT0wPzE6MDtpZihWKXJldHVybiBWO3ZhciBmMD0wPD1LP01bNV06TVs0XSxNPWYwfX1mdW5jdGlvbiBjKEEsUyl7aWYodHlwZW9mIFM9PVwibnVtYmVyXCIpcmV0dXJuIFM7aWYoU1swXT09PTApcmV0dXJuIG8odFsxXSxBLFNbMV0pPT09MD9vNzpTO3ZhciBNPVNbNV0sSz1TWzRdLFY9U1szXSxmMD1TWzJdLG0wPW8odFsxXSxBLGYwKTtpZihtMD09PTApcmV0dXJuIE5lMChLLE0pO2lmKDA8PW0wKXt2YXIgazA9YyhBLE0pO3JldHVybiBNPT09azA/UzpJdShLLGYwLFYsazApfXZhciBnMD1jKEEsSyk7cmV0dXJuIEs9PT1nMD9TOkl1KGcwLGYwLFYsTSl9ZnVuY3Rpb24gcyhBLFMsTSl7aWYodHlwZW9mIE09PVwibnVtYmVyXCIpcmV0dXJuWzAsQSx1KFMsMCldO2lmKE1bMF09PT0wKXt2YXIgSz1NWzJdLFY9TVsxXSxmMD1vKHRbMV0sQSxWKTtpZihmMD09PTApe3ZhciBtMD11KFMsWzAsS10pO3JldHVybiBLPT09bTA/TTpbMCxWLG0wXX12YXIgazA9dShTLDApO3JldHVybiAwPD1mMD90YihNLEEsazApOnViKEEsazAsTSl9dmFyIGcwPU1bNV0sZTA9TVs0XSx4MD1NWzNdLGw9TVsyXSxjMD1vKHRbMV0sQSxsKTtpZihjMD09PTApe3ZhciB0MD11KFMsWzAseDBdKTtyZXR1cm4geDA9PT10MD9NOlsxLE1bMV0sQSx0MCxlMCxnMF19aWYoMDw9YzApe3ZhciBvMD1zKEEsUyxnMCk7cmV0dXJuIGcwPT09bzA/TTpJdShlMCxsLHgwLG8wKX12YXIgdzA9cyhBLFMsZTApO3JldHVybiBlMD09PXcwP006SXUodzAsbCx4MCxnMCl9ZnVuY3Rpb24gcChBLFMsTSl7aWYodHlwZW9mIE09PVwibnVtYmVyXCIpe3ZhciBLPXUoUywwKTtyZXR1cm4gSyYmWzAsQSxLWzFdXX1lbHNle2lmKE1bMF09PT0wKXt2YXIgVj1NWzJdLGYwPU1bMV0sbTA9byh0WzFdLEEsZjApO2lmKG0wPT09MCl7dmFyIGswPXUoUyxbMCxWXSk7aWYoazApe3ZhciBnMD1rMFsxXTtyZXR1cm4gVj09PWcwP006WzAsZjAsZzBdfXJldHVybiBvN312YXIgZTA9dShTLDApO2lmKGUwKXt2YXIgeDA9ZTBbMV07cmV0dXJuIDA8PW0wP3RiKE0sQSx4MCk6dWIoQSx4MCxNKX1yZXR1cm4gTX12YXIgbD1NWzVdLGMwPU1bNF0sdDA9TVszXSxvMD1NWzJdLHcwPW8odFsxXSxBLG8wKTtpZih3MD09PTApe3ZhciBfMD11KFMsWzAsdDBdKTtpZihfMCl7dmFyIEUwPV8wWzFdO3JldHVybiB0MD09PUUwP006WzEsTVsxXSxBLEUwLGMwLGxdfXJldHVybiBOZTAoYzAsbCl9aWYoMDw9dzApe3ZhciBVMD1wKEEsUyxsKTtyZXR1cm4gbD09PVUwP006SXUoYzAsbzAsdDAsVTApfXZhciBiPXAoQSxTLGMwKTtyZXR1cm4gYzA9PT1iP006SXUoYixvMCx0MCxsKX19ZnVuY3Rpb24geShBLFMpe2lmKHR5cGVvZiBTPT1cIm51bWJlclwiKXJldHVybiBPUXI7aWYoU1swXT09PTApe3ZhciBNPW8odFsxXSxBLFNbMV0pO3JldHVybiBNPT09MD9bMCxvNyxbMCxTWzJdXSxvN106MDw9TT9bMCxTLDAsbzddOlswLG83LDAsU119dmFyIEs9U1s1XSxWPVNbNF0sZjA9U1szXSxtMD1TWzJdLGswPW8odFsxXSxBLG0wKTtpZihrMD09PTApcmV0dXJuWzAsVixbMCxmMF0sS107aWYoMDw9azApe3ZhciBnMD15KEEsSyksZTA9ZzBbM10seDA9ZzBbMl07cmV0dXJuWzAsYWkoVixtMCxmMCxnMFsxXSkseDAsZTBdfXZhciBsPXkoQSxWKSxjMD1haShsWzNdLG0wLGYwLEspO3JldHVyblswLGxbMV0sbFsyXSxjMF19ZnVuY3Rpb24gVChBLFMsTSl7aWYodHlwZW9mIFM9PVwibnVtYmVyXCIpe2lmKHR5cGVvZiBNPT1cIm51bWJlclwiKXJldHVybiAwO2lmKE1bMF09PT0wKXt2YXIgSz1NWzFdLFY9dXIoQSxLLDAsWzAsTVsyXV0pO3JldHVybiBWP1swLEssVlsxXV06bzd9fWVsc2UgaWYoU1swXT09PTApe3ZhciBmMD1TWzJdLG0wPVNbMV07aWYodHlwZW9mIE09PVwibnVtYmVyXCIpe3ZhciBrMD11cihBLG0wLFswLGYwXSwwKTtyZXR1cm4gazA/WzAsbTAsazBbMV1dOm83fWVsc2UgaWYoTVswXT09PTApe3ZhciBnMD15KG0wLE0pLGUwPVQoQSxvNyxnMFszXSkseDA9dXIoQSxtMCxbMCxmMF0sZzBbMl0pO3JldHVybiBpYihUKEEsbzcsZzBbMV0pLG0wLHgwLGUwKX19ZWxzZXt2YXIgbD1TWzJdLGMwPUZpKE0pO2lmKGMwPD1TWzFdKXt2YXIgdDA9eShsLE0pLG8wPVQoQSxTWzVdLHQwWzNdKSx3MD11cihBLGwsWzAsU1szXV0sdDBbMl0pO3JldHVybiBpYihUKEEsU1s0XSx0MFsxXSksbCx3MCxvMCl9dmFyIF8wPTA7aWYoKHR5cGVvZiBNPT1cIm51bWJlclwifHxNWzBdIT09MSkmJihfMD0xKSxfMCl0aHJvd1swLFNuLElRcl19dmFyIEUwPU1bMl0sVTA9eShFMCxTKSxiPVQoQSxVMFszXSxNWzVdKSxSMD11cihBLEUwLFUwWzJdLFswLE1bM11dKTtyZXR1cm4gaWIoVChBLFUwWzFdLE1bNF0pLEUwLFIwLGIpfWZ1bmN0aW9uIEUoQSxTLE0pe3ZhciBLPTA7aWYodHlwZW9mIFM9PVwibnVtYmVyXCIpe3ZhciBfMD1NO0s9MX1lbHNlIGlmKFNbMF09PT0xKXt2YXIgVj1TWzNdLGYwPVNbMl07aWYodHlwZW9mIE0hPVwibnVtYmVyXCImJk1bMF0hPT0wKXt2YXIgbTA9TVszXSxrMD1NWzJdO2lmKE1bMV08PVNbMV0pe3ZhciBnMD15KGYwLE0pLGUwPWcwWzJdLHgwPUUoQSxTWzRdLGcwWzFdKSxsPUUoQSxTWzVdLGcwWzNdKTtyZXR1cm4gZTA/aWIoeDAsZjAsdXIoQSxmMCxWLGUwWzFdKSxsKTphaSh4MCxmMCxWLGwpfXZhciBjMD15KGswLFMpLHQwPWMwWzJdLG8wPUUoQSxjMFsxXSxNWzRdKSx3MD1FKEEsYzBbM10sTVs1XSk7cmV0dXJuIHQwP2liKG8wLGswLHVyKEEsazAsdDBbMV0sbTApLHcwKTphaShvMCxrMCxtMCx3MCl9fWlmKCFLKWlmKHR5cGVvZiBNPT1cIm51bWJlclwiKXZhciBfMD1TO2Vsc2V7aWYoTVswXT09PTApe3ZhciBFMD1NWzJdLFUwPU1bMV07cmV0dXJuIHAoVTAsZnVuY3Rpb24oWCl7cmV0dXJuIFg/dXIoQSxVMCxYWzFdLEUwKTpbMCxFMF19LFMpfXZhciBiPVNbMl0sUjA9U1sxXTtyZXR1cm4gcChSMCxmdW5jdGlvbihYKXtyZXR1cm4gWD91cihBLFIwLGIsWFsxXSk6WzAsYl19LE0pfXJldHVybiBfMH1mdW5jdGlvbiBkKEEsUyl7aWYodHlwZW9mIFM9PVwibnVtYmVyXCIpcmV0dXJuIEFRcjtpZihTWzBdPT09MClyZXR1cm4gbyhBLFNbMV0sU1syXSk/WzAsUyxvN106WzAsbzcsU107dmFyIE09U1szXSxLPVNbMl0sVj1kKEEsU1s0XSksZjA9VlsyXSxtMD1WWzFdLGswPW8oQSxLLE0pLGcwPWQoQSxTWzVdKSxlMD1nMFsyXSx4MD1nMFsxXTtpZihrMCl7dmFyIGw9RDkoZjAsZTApO3JldHVyblswLGFpKG0wLEssTSx4MCksbF19dmFyIGMwPWFpKGYwLEssTSxlMCk7cmV0dXJuWzAsRDkobTAseDApLGMwXX1mdW5jdGlvbiB3KEEsUyxNKXtmb3IodmFyIEs9cXMoTSwwKSxWPXFzKFMsMCksZjA9Szs7KXtpZihWKXtpZihmMCl7dmFyIG0wPW8odFsxXSxWWzFdLGYwWzFdKTtpZihtMD09PTApe3ZhciBrMD1vKEEsVlsyXSxmMFsyXSk7aWYoazA9PT0wKXt2YXIgZzA9cXMoZjBbM10sZjBbNF0pLFY9cXMoVlszXSxWWzRdKSxmMD1nMDtjb250aW51ZX1yZXR1cm4gazB9cmV0dXJuIG0wfXJldHVybiAxfXZhciBlMD1mMCYmLTE7cmV0dXJuIGUwfX1mdW5jdGlvbiBHKEEsUyxNKXtmb3IodmFyIEs9cXMoTSwwKSxWPXFzKFMsMCksZjA9Szs7KXtpZihWKXtpZihmMCl7dmFyIG0wPW8odFsxXSxWWzFdLGYwWzFdKT09PTA/MTowO2lmKG0wKXt2YXIgazA9byhBLFZbMl0sZjBbMl0pO2lmKGswKXt2YXIgZzA9cXMoZjBbM10sZjBbNF0pLFY9cXMoVlszXSxWWzRdKSxmMD1nMDtjb250aW51ZX12YXIgZTA9azB9ZWxzZSB2YXIgZTA9bTB9ZWxzZSB2YXIgZTA9ZjA7cmV0dXJuIGUwfXJldHVybiBmMD8wOjF9fXJldHVyblswLG83LHJuZSx4LG4scCxzLFFlZSxjLFQsRSx3LEcsQ2UwLENMLExlMCxSZTAsUEwsZCxETCx0bmUsRmUwLE9lMCxlbmUsbm5lLERlMCxEZTAsZnVuY3Rpb24oQSxTLE0pe3ZhciBLPVswLG83LDBdLFY9Q0woZnVuY3Rpb24oZjAsbTAsazApe3ZhciBnMD1rMFsxXSxlMD11KFMsZjApLHgwPWswWzJdLGw9eDB8fChlMCE9PWYwPzE6MCk7aWYoQSl2YXIgYzA9QVsxXSx0MD1zKGUwLGZ1bmN0aW9uKG8wKXtyZXR1cm4gbzA/byhjMCxvMFsxXSxtMCk6bTB9LGcwKTtlbHNlIHZhciB0MD1uKGUwLG0wLGcwKTtyZXR1cm5bMCx0MCxsXX0sTSxLKTtyZXR1cm4gVlsyXT9WWzFdOk19LEZlMCxPZTAseSxlLGksQUwsTkwsRkxdfShbMCxiel0pO2Z1bmN0aW9uIGEyKHQpe3JldHVyblswLGoxKHQpXX12YXIgTEw9ZUwoWzAsZnVuY3Rpb24odCxuKXt2YXIgZT16MDAodFsxXSxuWzFdKTtyZXR1cm4gZT09PTA/byh0cjAsdFsyXSxuWzJdKTplfV0pO2Z1bmN0aW9uIGZiKHQsbixlKXt2YXIgaT1lWzJdWzFdO3JldHVybiBxbihpLGNyZSk/bjpvKE11WzNdLGksbik/KHVlKHQsWzAsZVsxXSxbMTksaV1dKSxuKTpvKE11WzRdLGksbil9ZnVuY3Rpb24gUkwodCxuKXt2YXIgZT1uWzJdO3N3aXRjaChlWzBdKXtjYXNlIDA6dmFyIGk9ZVsxXVsxXTtyZXR1cm4gbGUoZnVuY3Rpb24oYyxzKXt2YXIgcD1zWzBdPT09MD9zWzFdWzJdWzJdOnNbMV1bMl1bMV07cmV0dXJuIFJMKGMscCl9LHQsaSk7Y2FzZSAxOnZhciB4PWVbMV1bMV07cmV0dXJuIGxlKGZ1bmN0aW9uKGMscyl7cmV0dXJuIHNbMF09PT0yP2M6UkwoYyxzWzFdWzJdWzFdKX0sdCx4KTtjYXNlIDI6cmV0dXJuWzAsZVsxXVsxXSx0XTtkZWZhdWx0OnJldHVybiBrZShhcmUpfX12YXIgc2U9cHUodnJlLHNyZSksbW49SmVlKHNlKSxWbj1mdW5jdGlvbih0KXt2YXIgbj1bMCxLSnIsTXVbMV0sMCwwXTtmdW5jdGlvbiBlKG8wKXt2YXIgdzA9QTAobzApO2lmKHR5cGVvZiB3MD09XCJudW1iZXJcIil7dmFyIF8wPTA7aWYoODw9dzA/MTA8PXcwfHwoXzA9MSk6dzA9PT0xJiYoXzA9MSksXzApcmV0dXJuIDF9cmV0dXJuIDB9ZnVuY3Rpb24gaShvMCl7dmFyIHcwPXo3KG8wKSxfMD1BMChvMCksRTA9MDtpZih0eXBlb2YgXzA9PVwibnVtYmVyXCIpe3ZhciBVMD0wO2lmKF8wPT09ODI/WTAobzAsODIpOl8wPT09ODY/KGplKG8wLFs0LHcwWzJdWzFdXSksWTAobzAsODYpKTpVMD0xLCFVMCl7dmFyIGI9UGUobzApLFIwPXByKG8wKSxYPUEwKG8wKSxzMD0wO2lmKHR5cGVvZiBYPT1cIm51bWJlclwiKXN3aXRjaChYKXtjYXNlIDMwOmNhc2UgMzE6aWUobzApO3ZhciBocj13ZShvMCksQXI9ZShvMCk/WzEsYixbMCxYPT09MzE/MTowLGxyKFswLFIwXSxbMCxocl0sMCldXTpbMCxiXSxvcj1BcjticmVhaztkZWZhdWx0OnMwPTF9ZWxzZSBzd2l0Y2goWFswXSl7Y2FzZSAwOnZhciBXMD1YWzJdLExyPXVyKHNlWzI0XSxvMCxYWzFdLFcwKSxUcj13ZShvMCksSHI9ZShvMCk/WzIsYixbMCxMcixXMCxscihbMCxSMF0sWzAsVHJdLDApXV06WzAsYl0sb3I9SHI7YnJlYWs7Y2FzZSAyOnZhciBPcj1YWzFdLGZyPU9yWzFdO09yWzRdJiZnaShvMCw0NSksaWUobzApO3ZhciBScj13ZShvMCk7aWYoZShvMCkpdmFyIFdyPWxyKFswLFIwXSxbMCxScl0sMCksSnI9WzMsZnIsWzAsT3JbMl0sT3JbM10sV3JdXTtlbHNlIHZhciBKcj1bMCxmcl07dmFyIG9yPUpyO2JyZWFrO2RlZmF1bHQ6czA9MX1pZihzMCl7aWUobzApO3ZhciBvcj1bMCxiXX12YXIgYXI9b3I7RTA9MX19aWYoIUUwKXZhciBhcj0wO3JldHVyblswLHcwLGFyXX12YXIgeD0wO2Z1bmN0aW9uIGMobzApe3ZhciB3MD1wcihvMCk7WTAobzAsNDgpO3ZhciBfMD1vKHNlWzEzXSwwLG8wKSxFMD1fMFsyXVsxXSxVMD1fMFsxXSxiPWNyKDAsZnVuY3Rpb24oUjApe3ZhciBYPXh1KFIwLDYzKTtpZihYKXtLdShSMCwxKTt2YXIgczA9QTAoUjApLGhyPTA7aWYodHlwZW9mIHMwPT1cIm51bWJlclwiKXN3aXRjaChzMCl7Y2FzZSAxMTc6dmFyIEFyPUhKcjticmVhaztjYXNlIDExOTp2YXIgQXI9WEpyO2JyZWFrO2Nhc2UgMTIxOnZhciBBcj1ZSnI7YnJlYWs7ZGVmYXVsdDpocj0xfWVsc2Ugc3dpdGNoKHMwWzBdKXtjYXNlIDQ6amUoUjAsWzMsRTAsWzAsczBbMl1dXSk7dmFyIEFyPTA7YnJlYWs7Y2FzZSA5OmlmKHMwWzFdKXZhciBBcj1WSnI7ZWxzZSBocj0xO2JyZWFrO2RlZmF1bHQ6aHI9MX1pZihocil7amUoUjAsWzMsRTAsMF0pO3ZhciBBcj0wfWllKFIwKSxrNyhSMCk7dmFyIG9yPUFyfWVsc2UgdmFyIG9yPVg7dmFyIFcwPW9yIT09MD8xOjAsTHI9VzAmJnByKFIwKTtZMChSMCwwKTtmb3IodmFyIFRyPW47Oyl7dmFyIEhyPUEwKFIwKTtpZih0eXBlb2YgSHI9PVwibnVtYmVyXCIpe3ZhciBPcj1Ici0yfDA7aWYoWHQ8T3I+Pj4wKXtpZighKFQ3PChPcisxfDApPj4+MCkpe3ZhciBmcj1UclszXSxScj1Ucls0XSxXcj15ZShUclsxXVs0XSksSnI9eWUoVHJbMV1bM10pLGFyPXllKFRyWzFdWzJdKSxfcj15ZShUclsxXVsxXSksSXI9b24oUnIscHIoUjApKTtZMChSMCwxKTt2YXIgZmU9QTAoUjApLHYwPTA7aWYodHlwZW9mIGZlPT1cIm51bWJlclwiKXt2YXIgUD0wO2lmKGZlIT09MSYmUG4hPT1mZSYmKHYwPTEsUD0xKSwhUCl2YXIgUT13ZShSMCl9ZWxzZSB2MD0xO2lmKHYwKXZhciBMPXg3KFIwKSxRPUwmJk1zKFIwKTt2YXIgaTA9eXUoWzAsTHJdLFswLFFdLElyLDApO2lmKG9yKXN3aXRjaChvclsxXSl7Y2FzZSAwOnJldHVyblswLFswLF9yLDEsZnIsaTBdXTtjYXNlIDE6cmV0dXJuWzEsWzAsYXIsMSxmcixpMF1dO2Nhc2UgMjp2YXIgbDA9MTticmVhaztkZWZhdWx0OnJldHVyblszLFswLFdyLGZyLGkwXV19ZWxzZXt2YXIgUzA9RGMoX3IpLFQwPURjKGFyKSxycj1EYyhKciksTDA9RGMoV3IpLEI9MDtpZihTMD09PTAmJlQwPT09MCl7dmFyIFo9MDtpZihycj09PTAmJkwwPT09MCYmKEI9MSxaPTEpLCFaKXt2YXIgbDA9MDtCPTJ9fXZhciBwMD0wO3N3aXRjaChCKXtjYXNlIDA6aWYoVDA9PT0wJiZycj09PTAmJkwwPD1TMClyZXR1cm4gRHUoZnVuY3Rpb24oSzApe3JldHVybiB1ZShSMCxbMCxLMFsxXSxbMCxFMCxLMFsyXVsxXVsyXVsxXV1dKX0sV3IpLFswLFswLF9yLDAsZnIsaTBdXTtpZihTMD09PTAmJnJyPT09MCYmTDA8PVQwKXJldHVybiBEdShmdW5jdGlvbihLMCl7cmV0dXJuIHVlKFIwLFswLEswWzFdLFs4LEUwLEswWzJdWzFdWzJdWzFdXV0pfSxXciksWzEsWzAsYXIsMCxmcixpMF1dO3VlKFIwLFswLFUwLFsyLEUwXV0pO2JyZWFrO2Nhc2UgMTpicmVhaztkZWZhdWx0OnAwPTF9aWYoIXAwKXJldHVyblsyLFswLHpKciwwLGZyLGkwXV19dmFyIGIwPURjKEpyKSxPMD1EYyhXcik7aWYoYjAhPT0wKXt2YXIgTTA9MDtpZihPMCE9PTAmJihiMDxPMD8oRHUoZnVuY3Rpb24oSzApe3JldHVybiB1ZShSMCxbMCxLMFsxXSxbOSxFMF1dKX0sSnIpLE0wPTEpOkR1KGZ1bmN0aW9uKEswKXtyZXR1cm4gdWUoUjAsWzAsSzBbMV0sWzksRTBdXSl9LFdyKSksIU0wKXJldHVyblsyLFswLFsxLEpyXSxsMCxmcixpMF1dfXJldHVyblsyLFswLFswLFdyXSxsMCxmcixpMF1dfX1lbHNlIGlmKE9yPT09MTApe3ZhciBlcj1QZShSMCkseXI9cHIoUjApO2llKFIwKTt2YXIgdnI9QTAoUjApLCQwPTA7aWYodHlwZW9mIHZyPT1cIm51bWJlclwiKXt2YXIgRXI9dnItMnwwLE1yPTA7aWYoWHQ8RXI+Pj4wKVQ3PChFcisxfDApPj4+MCYmKE1yPTEpO2Vsc2UgaWYoRXI9PT03KXtZMChSMCw5KTt2YXIgQnI9QTAoUjApLHFyPTA7aWYodHlwZW9mIEJyPT1cIm51bWJlclwiKXt2YXIganI9MDtpZihCciE9PTEmJlBuIT09QnImJihqcj0xKSwhanIpe3ZhciAkcj0xO3FyPTF9fWlmKCFxcil2YXIgJHI9MDt1ZShSMCxbMCxlcixbNywkcl1dKX1lbHNlIE1yPTE7TXJ8fCgkMD0xKX0kMHx8dWUoUjAsWzAsZXIscUpyXSk7dmFyIFRyPVswLFRyWzFdLFRyWzJdLDEseXJdO2NvbnRpbnVlfX12YXIgbmU9VHJbMl0sUXI9VHJbMV0sYmU9Y3IoeCxpLFIwKSxhZT1iZVsyXSxwZT1hZVsxXSxvZT1wZVsyXVsxXTtpZihxbihvZSxVSnIpKXZhciBjZT1UcjtlbHNle3ZhciBnZT1wZVsxXSxxMD1hZVsyXSxGcj1iZVsxXSxfPUl0KG9lLDApLGs9OTc8PV8/MTowLEk9ayYmKF88PUluPzE6MCk7SSYmdWUoUjAsWzAsZ2UsWzYsRTAsb2VdXSksbyhNdVszXSxvZSxuZSkmJnVlKFIwLFswLGdlLFsxLEUwLG9lXV0pO3ZhciBVPVRyWzRdLFk9VHJbM10seTA9byhNdVs0XSxvZSxuZSksUDA9WzAsVHJbMV0seTAsWSxVXSxJMD1mdW5jdGlvbihVcil7cmV0dXJuIGZ1bmN0aW9uKGgwLEtyKXtyZXR1cm4gb3ImJm9yWzFdIT09aDA/dWUoUjAsWzAsS3IsWzUsRTAsb3IsVXJdXSk6MH19KG9lKTtpZih0eXBlb2YgcTA9PVwibnVtYmVyXCIpe3ZhciBEPTA7aWYob3Ipe3ZhciB1MD1vclsxXSxYMD0wO2lmKHUwPT09MT91ZShSMCxbMCxGcixbOCxFMCxvZV1dKTp1MD8oRD0xLFgwPTEpOnVlKFIwLFswLEZyLFswLEUwLG9lXV0pLCFYMCl2YXIgSjA9UDB9ZWxzZSBEPTE7aWYoRCl2YXIgSjA9WzAsWzAsUXJbMV0sUXJbMl0sUXJbM10sWzAsWzAsRnIsWzAscGVdXSxRcls0XV1dLHkwLFksVV19ZWxzZSBzd2l0Y2gocTBbMF0pe2Nhc2UgMDp1ZShSMCxbMCxxMFsxXSxbNSxFMCxvcixvZV1dKTt2YXIgSjA9UDA7YnJlYWs7Y2FzZSAxOnZhciBpcj1xMFsxXTtJMCgwLGlyKTt2YXIgSjA9WzAsWzAsWzAsWzAsRnIsWzAscGUsWzAsaXIscTBbMl1dXV0sUXJbMV1dLFFyWzJdLFFyWzNdLFFyWzRdXSx5MCxZLFVdO2JyZWFrO2Nhc2UgMjp2YXIgUTA9cTBbMV07STAoMSxRMCk7dmFyIEowPVswLFswLFFyWzFdLFswLFswLEZyLFswLHBlLFswLFEwLHEwWzJdXV1dLFFyWzJdXSxRclszXSxRcls0XV0seTAsWSxVXTticmVhaztkZWZhdWx0OnZhciBGMD1xMFsxXTtJMCgyLEYwKTt2YXIgSjA9WzAsWzAsUXJbMV0sUXJbMl0sWzAsWzAsRnIsWzAscGUsWzAsRjAscTBbMl1dXV0sUXJbM11dLFFyWzRdXSx5MCxZLFVdfXZhciBjZT1KMH12YXIgU3I9QTAoUjApLG1yPTA7aWYodHlwZW9mIFNyPT1cIm51bWJlclwiKXt2YXIgQ3I9U3ItMnwwLHNyPTA7WHQ8Q3I+Pj4wP1Q3PChDcisxfDApPj4+MCYmKHNyPTEpOkNyPT09Nj8oamUoUjAsMSksWTAoUjAsOCkpOnNyPTEsc3J8fChtcj0xKX1tcnx8WTAoUjAsOSk7dmFyIFRyPWNlfX0sbzApO3JldHVyblsxNixbMCxfMCxiLGxyKFswLHcwXSwwLDApXV19dmFyIHM9MDtmdW5jdGlvbiBwKG8wKXtyZXR1cm4gY3IocyxjLG8wKX1mdW5jdGlvbiB5KG8wLHcwKXt2YXIgXzA9dzBbMl1bMV0sRTA9dzBbMV0sVTA9bzBbMV07anMoXzApJiZWNyhVMCxbMCxFMCw0MV0pO3ZhciBiPU85KF8wKSxSMD1ifHxmMihfMCk7cmV0dXJuIFIwJiZWNyhVMCxbMCxFMCw1NV0pLFswLFUwLG8wWzJdXX1mdW5jdGlvbiBUKG8wLHcwKXt2YXIgXzA9dzBbMl07c3dpdGNoKF8wWzBdKXtjYXNlIDA6cmV0dXJuIGxlKEUsbzAsXzBbMV1bMV0pO2Nhc2UgMTpyZXR1cm4gbGUoZCxvMCxfMFsxXVsxXSk7Y2FzZSAyOnZhciBFMD1fMFsxXVsxXSxVMD1FMFsyXVsxXSxiPW8wWzJdLFIwPW8wWzFdO28oTXVbM10sVTAsYikmJnVlKFIwLFswLEUwWzFdLDQyXSk7dmFyIFg9eShbMCxSMCxiXSxFMCksczA9byhNdVs0XSxVMCxYWzJdKTtyZXR1cm5bMCxYWzFdLHMwXTtkZWZhdWx0OnJldHVybiB1ZShvMFsxXSxbMCx3MFsxXSwzMV0pLG8wfX1mdW5jdGlvbiBFKG8wLHcwKXtpZih3MFswXT09PTApe3ZhciBfMD13MFsxXVsyXSxFMD1fMFsxXSxVMD1FMFswXT09PTE/eShvMCxFMFsxXSk6bzA7cmV0dXJuIFQoVTAsXzBbMl0pfXJldHVybiBUKG8wLHcwWzFdWzJdWzFdKX1mdW5jdGlvbiBkKG8wLHcwKXtyZXR1cm4gdzBbMF09PT0yP28wOlQobzAsdzBbMV1bMl1bMV0pfWZ1bmN0aW9uIHcobzAsdzAsXzAsRTApe3ZhciBVMD1vMFs1XSxiPXExKEUwKSxSMD1FMFsyXSxYPVIwWzNdLHMwPV9zKFUwPzA6dzAsbzApLGhyPXcwfHxVMHx8MS1iO2lmKGhyKXtpZihfMCl7dmFyIEFyPV8wWzFdLG9yPUFyWzJdWzFdLFcwPUFyWzFdO2pzKG9yKSYmVjcoczAsWzAsVzAsNDRdKTt2YXIgTHI9Tzkob3IpLFRyPUxyfHxmMihvcik7VHImJlY3KHMwLFswLFcwLDU1XSl9dmFyIEhyPVIwWzJdLE9yPVswLHMwLE11WzFdXSxmcj1sZShmdW5jdGlvbihhcixfcil7cmV0dXJuIFQoYXIsX3JbMl1bMV0pfSxPcixIciksUnI9WCYmKFQoZnIsWFsxXVsyXVsxXSksMCksV3I9UnJ9ZWxzZSB2YXIgV3I9aHI7cmV0dXJuIFdyfXZhciBHPWZ1bmN0aW9uIG8wKHcwLF8wKXtyZXR1cm4gbzAuZnVuKHcwLF8wKX07ZnVuY3Rpb24gQShvMCl7QTAobzApPT09MjEmJmplKG8wLHM3KTt2YXIgdzA9byhzZVsxOF0sbzAsNDEpLF8wPUEwKG8wKT09PTgyPzE6MCxFMD1fMCYmKFkwKG8wLDgyKSxbMCx1KHNlWzEwXSxvMCldKTtyZXR1cm5bMCx3MCxFMF19dmFyIFM9MDtOKEcsZnVuY3Rpb24obzAsdzApe3ZhciBfMD1BMChvMCk7aWYodHlwZW9mIF8wPT1cIm51bWJlclwiKXt2YXIgRTA9XzAtNXwwLFUwPTA7aWYoNzxFMD4+PjA/aXM9PT1FMCYmKFUwPTEpOjU8KEUwLTF8MCk+Pj4wJiYoVTA9MSksVTApe3ZhciBiPV8wPT09MTI/MTowO2lmKGIpdmFyIFIwPXByKG8wKSxYPWNyKDAsZnVuY3Rpb24ob3Ipe3JldHVybiBZMChvciwxMiksbyhzZVsxOF0sb3IsNDEpfSxvMCksczA9bHIoWzAsUjBdLDAsMCksaHI9WzAsWzAsWFsxXSxbMCxYWzJdLHMwXV1dO2Vsc2UgdmFyIGhyPWI7cmV0dXJuIEEwKG8wKSE9PTUmJmplKG8wLDY0KSxbMCx5ZSh3MCksaHJdfX12YXIgQXI9Y3IoUyxBLG8wKTtyZXR1cm4gQTAobzApIT09NSYmWTAobzAsOSksbyhHLG8wLFswLEFyLHcwXSl9KTtmdW5jdGlvbiBNKG8wLHcwKXtmdW5jdGlvbiBfMChVMCl7dmFyIGI9bUwodzAscmUwKG8wLFUwKSksUjA9MSxYPWJbMTBdPT09MT9iOlswLGJbMV0sYlsyXSxiWzNdLGJbNF0sYls1XSxiWzZdLGJbN10sYls4XSxiWzldLFIwLGJbMTFdLGJbMTJdLGJbMTNdLGJbMTRdLGJbMTVdLGJbMTZdLGJbMTddLGJbMThdLGJbMTldLGJbMjBdLGJbMjFdLGJbMjJdLGJbMjNdLGJbMjRdLGJbMjVdLGJbMjZdLGJbMjddLGJbMjhdLGJbMjldLGJbMzBdXSxzMD1wcihYKTtZMChYLDQpO3ZhciBocj1mdShYKSxBcj1ociYmKEEwKFgpPT09MjE/MTowKTtpZihBcil7dmFyIG9yPXByKFgpLFcwPWNyKDAsZnVuY3Rpb24oYXIpe3JldHVybiBZMChhciwyMSksQTAoYXIpPT09ODY/WzAsdSh0WzldLGFyKV06KGplKGFyLFJpKSwwKX0sWCksTHI9VzBbMl07aWYoTHIpe0EwKFgpPT09OSYmaWUoWCk7dmFyIFRyPWxyKFswLG9yXSwwLDApLEhyPVswLFswLFcwWzFdLFswLExyWzFdLFRyXV1dfWVsc2UgdmFyIEhyPUxyO3ZhciBPcj1Icn1lbHNlIHZhciBPcj1Bcjt2YXIgZnI9byhHLFgsMCksUnI9cHIoWCk7WTAoWCw1KTt2YXIgV3I9eXUoWzAsczBdLFswLHdlKFgpXSxSciwwKTtyZXR1cm5bMCxPcixmclsxXSxmclsyXSxXcl19dmFyIEUwPTA7cmV0dXJuIGZ1bmN0aW9uKFUwKXtyZXR1cm4gY3IoRTAsXzAsVTApfX1mdW5jdGlvbiBLKG8wLHcwLF8wLEUwLFUwKXt2YXIgYj1mZTAobzAsdzAsXzAsVTApLFIwPW8oc2VbMTZdLEUwLGIpO3JldHVyblswLFswLFIwWzFdXSxSMFsyXV19ZnVuY3Rpb24gVihvMCx3MCxfMCl7dmFyIEUwPVBlKG8wKSxVMD1BMChvMCksYj0wO2lmKHR5cGVvZiBVMD09XCJudW1iZXJcIilpZihzNz09PVUwKXt2YXIgUjA9cHIobzApO2llKG8wKTt2YXIgczA9WzAsWzAsRTAsWzAsMCxscihbMCxSMF0sMCwwKV1dXX1lbHNlIGlmKEw3PT09VTApe3ZhciBYPXByKG8wKTtpZShvMCk7dmFyIHMwPVswLFswLEUwLFswLDEsbHIoWzAsWF0sMCwwKV1dXX1lbHNlIGI9MTtlbHNlIGI9MTtpZihiKXZhciBzMD0wO2lmKHMwKXt2YXIgaHI9MDtpZighdzAmJiFfMCYmKGhyPTEpLCFocilyZXR1cm4gdWUobzAsWzAsczBbMV1bMV0sN10pLDB9cmV0dXJuIHMwfWZ1bmN0aW9uIGYwKG8wKXtpZihZdD09PUEwKG8wKSl7dmFyIHcwPXByKG8wKTtyZXR1cm4gaWUobzApLFswLDEsdzBdfXJldHVybiBTJHJ9ZnVuY3Rpb24gbTAobzApe2lmKEEwKG8wKT09PTY0JiYhSmwoMSxvMCkpe3ZhciB3MD1wcihvMCk7cmV0dXJuIGllKG8wKSxbMCwxLHcwXX1yZXR1cm4gRSRyfWZ1bmN0aW9uIGswKG8wKXt2YXIgdzA9bTAobzApLF8wPXcwWzFdLEUwPXcwWzJdLFUwPWNyKDAsZnVuY3Rpb24oVzApe3ZhciBMcj1wcihXMCk7WTAoVzAsMTUpO3ZhciBUcj1mMChXMCksSHI9VHJbMV0sT3I9cGwoWzAsRTAsWzAsTHIsWzAsVHJbMl0sMF1dXSksZnI9VzBbN10sUnI9QTAoVzApLFdyPTA7aWYoZnImJnR5cGVvZiBScj09XCJudW1iZXJcIil7aWYoUnI9PT00KXt2YXIgSXI9MCxmZT0wO1dyPTF9ZWxzZSBpZihScj09PTk4KXt2YXIgSnI9b2koVzAsdSh0WzNdLFcwKSksYXI9QTAoVzApPT09ND8wOlswLHlzKFcwLG8oc2VbMTNdLGgkcixXMCkpXSxJcj1hcixmZT1KcjtXcj0xfX1pZighV3IpdmFyIF9yPUcxKFcwKT95cyhXMCxvKHNlWzEzXSxkJHIsVzApKTooYmUwKFcwLGskciksWzAsUGUoVzApLHckcl0pLElyPVswLF9yXSxmZT1vaShXMCx1KHRbM10sVzApKTt2YXIgdjA9dShNKF8wLEhyKSxXMCksUD1BMChXMCk9PT04Nj92MDplYihXMCx2MCksTD11KHRbMTJdLFcwKSxRPUxbMl0saTA9TFsxXTtpZihRKXZhciBsMD1oZTAoVzAsUSksUzA9aTA7ZWxzZSB2YXIgbDA9USxTMD1vMihXMCxpMCk7cmV0dXJuWzAsSHIsZmUsSXIsUCxTMCxsMCxPcl19LG8wKSxiPVUwWzJdLFIwPWJbNF0sWD1iWzNdLHMwPWJbMV0saHI9SyhvMCxfMCxzMCwwLHExKFIwKSk7dyhvMCxoclsyXSxYLFIwKTt2YXIgQXI9VTBbMV0sb3I9bHIoWzAsYls3XV0sMCwwKTtyZXR1cm5bMjMsWzAsWCxSMCxoclsxXSxfMCxzMCxiWzZdLGJbNV0sYlsyXSxvcixBcl1dfXZhciBnMD0wO2Z1bmN0aW9uIGUwKG8wKXtyZXR1cm4gY3IoZzAsazAsbzApfWZ1bmN0aW9uIHgwKG8wLHcwKXt2YXIgXzA9cHIodzApO1kwKHcwLG8wKTtmb3IodmFyIEUwPTAsVTA9MDs7KXt2YXIgYj1jcigwLGZ1bmN0aW9uKG9yKXt2YXIgVzA9byhzZVsxOF0sb3IsNDApO2lmKHh1KG9yLDgyKSl2YXIgTHI9MCxUcj1bMCx1KHNlWzEwXSxvcildO2Vsc2UgaWYoVzBbMl1bMF09PT0yKXZhciBMcj0wLFRyPTA7ZWxzZSB2YXIgTHI9WzAsWzAsVzBbMV0sNTldXSxUcj0wO3JldHVyblswLFswLFcwLFRyXSxMcl19LHcwKSxSMD1iWzJdLFg9UjBbMl0sczA9WzAsWzAsYlsxXSxSMFsxXV0sRTBdLGhyPVg/WzAsWFsxXSxVMF06VTA7aWYoeHUodzAsOSkpe3ZhciBFMD1zMCxVMD1ocjtjb250aW51ZX12YXIgQXI9eWUoaHIpO3JldHVyblswLHllKHMwKSxfMCxBcl19fXZhciBsPTI0O2Z1bmN0aW9uIGMwKG8wKXtyZXR1cm4geDAobCxvMCl9ZnVuY3Rpb24gdDAobzApe3ZhciB3MD14MCgyNyxGOSgxLG8wKSksXzA9dzBbMV0sRTA9dzBbM10sVTA9eWUobGUoZnVuY3Rpb24oYixSMCl7cmV0dXJuIFIwWzJdWzJdP2I6WzAsWzAsUjBbMV0sNThdLGJdfSxFMCxfMCkpO3JldHVyblswLF8wLHcwWzJdLFUwXX1yZXR1cm5bMCxtMCxmMCxWLE0sSyx3LGZ1bmN0aW9uKG8wKXtyZXR1cm4geDAoMjgsRjkoMSxvMCkpfSx0MCxjMCxlMCxwXX0obW4pLFI5PSRlZShzZSksY2k9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihQKXt2YXIgTD1QWzJdO3N3aXRjaChMWzBdKXtjYXNlIDE3OnZhciBRPUxbMV0saTA9UVsxXVsyXVsxXTtpZihuMChpMCxwUXIpKXtpZighbjAoaTAsbVFyKSl7dmFyIGwwPW4wKFFbMl1bMl1bMV0sX1FyKTtpZighbDApcmV0dXJuIGwwfX1lbHNle3ZhciBTMD1uMChRWzJdWzJdWzFdLHlRcik7aWYoIVMwKXJldHVybiBTMH1icmVhaztjYXNlIDA6Y2FzZSAxMDpjYXNlIDE2OmNhc2UgMTk6YnJlYWs7ZGVmYXVsdDpyZXR1cm4gMH1yZXR1cm4gMX12YXIgZT10WzFdLGk9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LHg9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LGM9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LHM9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LHA9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LHk9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LFQ9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LEU9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LGQ9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LHc9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LEc9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LEE9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LFM9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LE09ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LEs9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LFY9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LGYwPWZ1bmN0aW9uIFAoTCl7cmV0dXJuIFAuZnVuKEwpfSxtMD1mdW5jdGlvbiBQKEwsUSxpMCxsMCxTMCl7cmV0dXJuIFAuZnVuKEwsUSxpMCxsMCxTMCl9LGswPWZ1bmN0aW9uIFAoTCxRLGkwLGwwKXtyZXR1cm4gUC5mdW4oTCxRLGkwLGwwKX0sZzA9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LGUwPWZ1bmN0aW9uIFAoTCl7cmV0dXJuIFAuZnVuKEwpfSx4MD1mdW5jdGlvbiBQKEwpe3JldHVybiBQLmZ1bihMKX0sbD1mdW5jdGlvbiBQKEwsUSxpMCxsMCxTMCl7cmV0dXJuIFAuZnVuKEwsUSxpMCxsMCxTMCl9LGMwPWZ1bmN0aW9uIFAoTCxRLGkwLGwwKXtyZXR1cm4gUC5mdW4oTCxRLGkwLGwwKX0sdDA9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LG8wPWZ1bmN0aW9uIFAoTCxRLGkwKXtyZXR1cm4gUC5mdW4oTCxRLGkwKX0sdzA9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LF8wPWZ1bmN0aW9uIFAoTCxRLGkwKXtyZXR1cm4gUC5mdW4oTCxRLGkwKX0sRTA9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LFUwPWZ1bmN0aW9uIFAoTCl7cmV0dXJuIFAuZnVuKEwpfSxiPWZ1bmN0aW9uIFAoTCxRKXtyZXR1cm4gUC5mdW4oTCxRKX0sUjA9ZnVuY3Rpb24gUChMLFEsaTAsbDApe3JldHVybiBQLmZ1bihMLFEsaTAsbDApfSxYPWZ1bmN0aW9uIFAoTCl7cmV0dXJuIFAuZnVuKEwpfSxzMD1mdW5jdGlvbiBQKEwsUSxpMCl7cmV0dXJuIFAuZnVuKEwsUSxpMCl9LGhyPWZ1bmN0aW9uIFAoTCl7cmV0dXJuIFAuZnVuKEwpfSxBcj1mdW5jdGlvbiBQKEwpe3JldHVybiBQLmZ1bihMKX0sb3I9ZnVuY3Rpb24gUChMKXtyZXR1cm4gUC5mdW4oTCl9LFcwPWZ1bmN0aW9uIFAoTCxRLGkwKXtyZXR1cm4gUC5mdW4oTCxRLGkwKX0sTHI9dFsyXTtmdW5jdGlvbiBUcihQKXt2YXIgTD1QZShQKSxRPXUoeSxQKSxpMD11KHAsUCk7aWYoaTApe3ZhciBsMD1pMFsxXTtyZXR1cm5bMCxjcihbMCxMXSxmdW5jdGlvbihTMCl7dmFyIFQwPXVyKExyLDAsUzAsUSk7cmV0dXJuWzIsWzAsbDAsVDAsdSh4LFMwKSwwXV19LFApXX1yZXR1cm4gUX1mdW5jdGlvbiBIcihQLEwpe2lmKHR5cGVvZiBMPT1cIm51bWJlclwiKXt2YXIgUT1MIT09NTU/MTowO2lmKCFRKXJldHVybiBRfXRocm93IEJzfWZ1bmN0aW9uIE9yKFApe3ZhciBMPVQ5KEhyLFApLFE9VHIoTCksaTA9QTAoTCk7aWYodHlwZW9mIGkwPT1cIm51bWJlclwiKXtpZihpMD09PTExKXRocm93IEJzO2lmKGkwPT09ODYpe3ZhciBsMD11ZTAoTCksUzA9MDtpZihsMCl7dmFyIFQwPWwwWzFdO2lmKHR5cGVvZiBUMD09XCJudW1iZXJcIiYmVDA9PT01KXt2YXIgcnI9MTtTMD0xfX1pZighUzApdmFyIHJyPTA7aWYocnIpdGhyb3cgQnN9fWlmKEcxKEwpKXtpZihRWzBdPT09MCl7dmFyIEwwPVFbMV1bMl07aWYoTDBbMF09PT0xMCYmIW4wKEwwWzFdWzJdWzFdLGJRcikmJiF4NyhMKSl0aHJvdyBCc31yZXR1cm4gUX1yZXR1cm4gUX1OKGksZnVuY3Rpb24oUCl7dmFyIEw9QTAoUCksUT0wLGkwPUcxKFApO2lmKHR5cGVvZiBMPT1cIm51bWJlclwiKXt2YXIgbDA9MDtpZigyMjw9TClpZihMPT09NTgpe2lmKFBbMTddKXJldHVyblswLHUoYyxQKV07bDA9MX1lbHNlIEwhPT05OCYmKGwwPTEpO2Vsc2UgTCE9PTQmJiEoMjE8PUwpJiYobDA9MSk7bDB8fChRPTEpfWlmKCFRJiYhaTApcmV0dXJuIFRyKFApO3ZhciBTMD0wO2lmKEw9PT02NCYmZnUoUCkmJlluKDEsUCk9PT05OCl7dmFyIFQwPU9yLHJyPW9yO1MwPTF9aWYoIVMwKXZhciBUMD1vcixycj1Pcjt2YXIgTDA9RUwoUCxycik7aWYoTDApcmV0dXJuIEwwWzFdO3ZhciBCPUVMKFAsVDApO3JldHVybiBCP0JbMV06VHIoUCl9KSxOKHgsZnVuY3Rpb24oUCl7cmV0dXJuIG8oZSxQLHUoaSxQKSl9KSxOKGMsZnVuY3Rpb24oUCl7cmV0dXJuIGNyKDAsZnVuY3Rpb24oTCl7TFsxMF0mJmplKEwsOTEpO3ZhciBRPXByKEwpLGkwPVBlKEwpO1kwKEwsNTgpO3ZhciBsMD1QZShMKTtpZih4MihMKSl2YXIgUzA9MCxUMD0wO2Vsc2V7dmFyIHJyPXh1KEwsWXQpLEwwPUEwKEwpLEI9MDtpZih0eXBlb2YgTDA9PVwibnVtYmVyXCIpe3ZhciBaPTA7aWYoTDAhPT04NilpZigxMDw9TDApWj0xO2Vsc2Ugc3dpdGNoKEwwKXtjYXNlIDA6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA2Olo9MTticmVha31pZighWil7dmFyIHAwPTA7Qj0xfX1pZighQil2YXIgcDA9MTt2YXIgYjA9cnJ8fHAwLE8wPWIwJiZbMCx1KHgsTCldLFMwPXJyLFQwPU8wfXZhciBNMD1UMD8wOndlKEwpLGVyPXl0KGkwLGwwKTtyZXR1cm5bMzAsWzAsVDAsbHIoWzAsUV0sWzAsTTBdLDApLFMwLGVyXV19LFApfSksTihzLGZ1bmN0aW9uKFApe3ZhciBMPVBbMl07c3dpdGNoKExbMF0pe2Nhc2UgMTc6dmFyIFE9TFsxXSxpMD1RWzFdWzJdWzFdO2lmKG4wKGkwLGNRcikpe2lmKCFuMChpMCxzUXIpKXt2YXIgbDA9bjAoUVsyXVsyXVsxXSx2UXIpO2lmKCFsMClyZXR1cm4gbDB9fWVsc2V7dmFyIFMwPW4wKFFbMl1bMl1bMV0sbFFyKTtpZighUzApcmV0dXJuIFMwfWJyZWFrO2Nhc2UgMTA6Y2FzZSAxNjpicmVhaztkZWZhdWx0OnJldHVybiAwfXJldHVybiAxfSksTihwLGZ1bmN0aW9uKFApe3ZhciBMPUEwKFApLFE9MDtpZih0eXBlb2YgTD09XCJudW1iZXJcIil7dmFyIGkwPUwtNjd8MDtpZighKDE1PGkwPj4+MCkpe3N3aXRjaChpMCl7Y2FzZSAwOnZhciBsMD1LWnI7YnJlYWs7Y2FzZSAxOnZhciBsMD1XWnI7YnJlYWs7Y2FzZSAyOnZhciBsMD1KWnI7YnJlYWs7Y2FzZSAzOnZhciBsMD0kWnI7YnJlYWs7Y2FzZSA0OnZhciBsMD1aWnI7YnJlYWs7Y2FzZSA1OnZhciBsMD1RWnI7YnJlYWs7Y2FzZSA2OnZhciBsMD1yUXI7YnJlYWs7Y2FzZSA3OnZhciBsMD1lUXI7YnJlYWs7Y2FzZSA4OnZhciBsMD1uUXI7YnJlYWs7Y2FzZSA5OnZhciBsMD10UXI7YnJlYWs7Y2FzZSAxMDp2YXIgbDA9dVFyO2JyZWFrO2Nhc2UgMTE6dmFyIGwwPWlRcjticmVhaztjYXNlIDEyOnZhciBsMD1mUXI7YnJlYWs7Y2FzZSAxMzp2YXIgbDA9eFFyO2JyZWFrO2Nhc2UgMTQ6dmFyIGwwPW9RcjticmVhaztkZWZhdWx0OnZhciBsMD1hUXJ9dmFyIFMwPWwwO1E9MX19aWYoIVEpdmFyIFMwPTA7cmV0dXJuIFMwIT09MCYmaWUoUCksUzB9KSxOKHksZnVuY3Rpb24oUCl7dmFyIEw9UGUoUCksUT11KEUsUCk7aWYoQTAoUCk9PT04NSl7aWUoUCk7dmFyIGkwPXUoeCxLbCgwLFApKTtZMChQLDg2KTt2YXIgbDA9Y3IoMCx4LFApLFMwPXl0KEwsbDBbMV0pLFQwPWwwWzJdO3JldHVyblswLFswLFMwLFs3LFswLG8oZSxQLFEpLGkwLFQwLDBdXV1dfXJldHVybiBRfSksTihULGZ1bmN0aW9uKFApe3JldHVybiBvKGUsUCx1KHksUCkpfSk7ZnVuY3Rpb24gZnIoUCxMLFEsaTAsbDApe3ZhciBTMD1vKGUsUCxMKTtyZXR1cm5bMCxbMCxsMCxbMTUsWzAsaTAsUzAsbyhlLFAsUSksMF1dXV19ZnVuY3Rpb24gUnIoUCxMLFEsaTApe2Zvcih2YXIgbDA9UCxTMD1RLFQwPWkwOzspe3ZhciBycj1BMChMKTtpZih0eXBlb2YgcnI9PVwibnVtYmVyXCImJnJyPT09ODQpezEtbDAmJmplKEwselpyKSxZMChMLDg0KTt2YXIgTDA9Y3IoMCxkLEwpLEI9TDBbMl0sWj1MMFsxXSxwMD1BMChMKSxiMD0wO2lmKHR5cGVvZiBwMD09XCJudW1iZXJcIiYmISgxPChwMC04N3wwKT4+PjApKXtqZShMLFsyMyxvTChwMCldKTt2YXIgTzA9SnIoTCxCLFopLE0wPVdyKEwsTzBbMl0sTzBbMV0pLGVyPU0wWzJdLHlyPU0wWzFdO2IwPTF9aWYoIWIwKXZhciBlcj1CLHlyPVo7dmFyIHZyPXl0KFQwLHlyKSxsMD0xLFMwPWZyKEwsUzAsZXIsMix2ciksVDA9dnI7Y29udGludWV9cmV0dXJuWzAsVDAsUzBdfX1mdW5jdGlvbiBXcihQLEwsUSl7Zm9yKHZhciBpMD1MLGwwPVE7Oyl7dmFyIFMwPUEwKFApO2lmKHR5cGVvZiBTMD09XCJudW1iZXJcIiYmUzA9PT04Nyl7aWUoUCk7dmFyIFQwPWNyKDAsZCxQKSxycj1KcihQLFQwWzJdLFQwWzFdKSxMMD15dChsMCxyclsxXSksQj1ScigwLFAsZnIoUCxpMCxyclsyXSwwLEwwKSxMMCksaTA9QlsyXSxsMD1CWzFdO2NvbnRpbnVlfXJldHVyblswLGwwLGkwXX19ZnVuY3Rpb24gSnIoUCxMLFEpe2Zvcih2YXIgaTA9TCxsMD1ROzspe3ZhciBTMD1BMChQKTtpZih0eXBlb2YgUzA9PVwibnVtYmVyXCImJlMwPT09ODgpe2llKFApO3ZhciBUMD1jcigwLGQsUCkscnI9eXQobDAsVDBbMV0pLEwwPVJyKDAsUCxmcihQLGkwLFQwWzJdLDEscnIpLHJyKSxpMD1MMFsyXSxsMD1MMFsxXTtjb250aW51ZX1yZXR1cm5bMCxsMCxpMF19fU4oRSxmdW5jdGlvbihQKXt2YXIgTD1jcigwLGQsUCksUT1MWzJdLGkwPUxbMV0sbDA9QTAoUCksUzA9MDtpZih0eXBlb2YgbDA9PVwibnVtYmVyXCImJmwwPT09ODQpe3ZhciBycj1ScigxLFAsUSxpMCk7UzA9MX1pZighUzApdmFyIFQwPUpyKFAsUSxpMCkscnI9V3IoUCxUMFsyXSxUMFsxXSk7cmV0dXJuIHJyWzJdfSk7ZnVuY3Rpb24gYXIoUCxMLFEsaTApe3JldHVyblswLGkwLFszLFswLFEsUCxMLDBdXV19TihkLGZ1bmN0aW9uKFApe3ZhciBMPTA7cjpmb3IoOzspe3ZhciBRPWNyKDAsZnVuY3Rpb24oayl7dmFyIEk9dSh3LGspIT09MD8xOjA7cmV0dXJuWzAsSSx1KEcsS2woMCxrKSldfSxQKSxpMD1RWzJdLGwwPWkwWzJdLFMwPVFbMV07aWYoQTAoUCk9PT05OCl7dmFyIFQwPTA7bDBbMF09PT0wJiZsMFsxXVsyXVswXT09PTEyP2plKFAsNjMpOlQwPTF9dmFyIHJyPUEwKFApLEwwPTA7aWYodHlwZW9mIHJyPT1cIm51bWJlclwiKXt2YXIgQj1yci0xN3wwLFo9MDtpZigxPEI+Pj4wKWlmKDcyPD1CKXN3aXRjaChCLTcyfDApe2Nhc2UgMDp2YXIgcDA9Z1pyO2JyZWFrO2Nhc2UgMTp2YXIgcDA9RlpyO2JyZWFrO2Nhc2UgMjp2YXIgcDA9VFpyO2JyZWFrO2Nhc2UgMzp2YXIgcDA9T1pyO2JyZWFrO2Nhc2UgNDp2YXIgcDA9SVpyO2JyZWFrO2Nhc2UgNTp2YXIgcDA9QVpyO2JyZWFrO2Nhc2UgNjp2YXIgcDA9TlpyO2JyZWFrO2Nhc2UgNzp2YXIgcDA9Q1pyO2JyZWFrO2Nhc2UgODp2YXIgcDA9UFpyO2JyZWFrO2Nhc2UgOTp2YXIgcDA9RFpyO2JyZWFrO2Nhc2UgMTA6dmFyIHAwPUxacjticmVhaztjYXNlIDExOnZhciBwMD1SWnI7YnJlYWs7Y2FzZSAxMjp2YXIgcDA9alpyO2JyZWFrO2Nhc2UgMTM6dmFyIHAwPUdacjticmVhaztjYXNlIDE0OnZhciBwMD1NWnI7YnJlYWs7Y2FzZSAxNTp2YXIgcDA9QlpyO2JyZWFrO2Nhc2UgMTY6dmFyIHAwPXFacjticmVhaztjYXNlIDE3OnZhciBwMD1VWnI7YnJlYWs7Y2FzZSAxODp2YXIgcDA9SFpyO2JyZWFrO2Nhc2UgMTk6dmFyIHAwPVhacjticmVhaztkZWZhdWx0Olo9MX1lbHNlIFo9MTtlbHNlIHZhciBwMD1CP1lacjpQWzEyXT8wOlZacjtpZighWil7dmFyIGIwPXAwO0wwPTF9fWlmKCFMMCl2YXIgYjA9MDtpZihiMCE9PTAmJmllKFApLCFMJiYhYjApcmV0dXJuIGwwO2lmKGIwKXt2YXIgTzA9YjBbMV0sTTA9TzBbMV0sZXI9aTBbMV0seXI9ZXImJihNMD09PTE0PzE6MCk7eXImJnVlKFAsWzAsUzAsMjddKTtmb3IodmFyIHZyPW8oZSxQLGwwKSwkMD12cixFcj1bMCxNMCxPMFsyXV0sTXI9UzAsQnI9TDs7KXt2YXIgcXI9RXJbMl0sanI9RXJbMV07aWYoQnIpe3ZhciAkcj1CclsxXSxuZT0kclsyXSxRcj1uZVsyXSxiZT1RclswXT09PTA/UXJbMV06UXJbMV0tMXwwO2lmKHFyWzFdPD1iZSl7dmFyIGFlPXl0KCRyWzNdLE1yKSxwZT1hcigkclsxXSwkMCxuZVsxXSxhZSksJDA9cGUsRXI9WzAsanIscXJdLE1yPWFlLEJyPUJyWzJdO2NvbnRpbnVlfX12YXIgTD1bMCxbMCwkMCxbMCxqcixxcl0sTXJdLEJyXTtjb250aW51ZSByfX1mb3IodmFyIG9lPW8oZSxQLGwwKSxjZT1TMCxnZT1MOzspe2lmKGdlKXt2YXIgcTA9Z2VbMV0sRnI9eXQocTBbM10sY2UpLF89Z2VbMl0sb2U9YXIocTBbMV0sb2UscTBbMl1bMV0sRnIpLGNlPUZyLGdlPV87Y29udGludWV9cmV0dXJuWzAsb2VdfX19KSxOKHcsZnVuY3Rpb24oUCl7dmFyIEw9QTAoUCk7aWYodHlwZW9mIEw9PVwibnVtYmVyXCIpe2lmKDQ4PD1MKXtpZihzNzw9TCl7aWYoIShjZjw9TCkpc3dpdGNoKEwtMTAzfDApe2Nhc2UgMDpyZXR1cm4gX1pyO2Nhc2UgMTpyZXR1cm4geVpyO2Nhc2UgNjpyZXR1cm4gaFpyO2Nhc2UgNzpyZXR1cm4gZFpyfX1lbHNlIGlmKEw9PT02NSYmUFsxOF0pcmV0dXJuIGtacn1lbHNlIGlmKDQ1PD1MKXN3aXRjaChMK212fDApe2Nhc2UgMDpyZXR1cm4gd1pyO2Nhc2UgMTpyZXR1cm4gRVpyO2RlZmF1bHQ6cmV0dXJuIFNacn19cmV0dXJuIDB9KSxOKEcsZnVuY3Rpb24oUCl7dmFyIEw9UGUoUCksUT1wcihQKSxpMD11KHcsUCk7aWYoaTApe3ZhciBsMD1pMFsxXTtpZShQKTt2YXIgUzA9Y3IoMCxBLFApLFQwPVMwWzJdLHJyPXl0KEwsUzBbMV0pLEwwPTA7aWYobDA9PT02KXt2YXIgQj1UMFsyXSxaPTA7c3dpdGNoKEJbMF0pe2Nhc2UgMTA6VjcoUCxbMCxyciw0N10pO2JyZWFrO2Nhc2UgMTY6QlsxXVsyXVswXT09PTEmJnVlKFAsWzAscnIsODhdKTticmVhaztkZWZhdWx0Olo9MX1afHwoTDA9MSl9cmV0dXJuWzAsWzAscnIsWzI4LFswLGwwLFQwLGxyKFswLFFdLDAsMCldXV1dfXZhciBwMD1BMChQKSxiMD0wO2lmKHR5cGVvZiBwMD09XCJudW1iZXJcIilpZihjZj09PXAwKXZhciBPMD1tWnI7ZWxzZSBpZihUNz09PXAwKXZhciBPMD1wWnI7ZWxzZSBiMD0xO2Vsc2UgYjA9MTtpZihiMCl2YXIgTzA9MDtpZihPMCl7aWUoUCk7dmFyIE0wPWNyKDAsQSxQKSxlcj1NMFsyXTsxLXUocyxlcikmJnVlKFAsWzAsZXJbMV0sMjZdKTt2YXIgeXI9ZXJbMl0sdnI9MDt5clswXT09PTEwJiZqcyh5clsxXVsyXVsxXSkmJihnaShQLDU0KSx2cj0xKTt2YXIgJDA9eXQoTCxNMFsxXSksRXI9bHIoWzAsUV0sMCwwKTtyZXR1cm5bMCxbMCwkMCxbMjksWzAsTzBbMV0sZXIsMSxFcl1dXV19cmV0dXJuIHUoUyxQKX0pLE4oQSxmdW5jdGlvbihQKXtyZXR1cm4gbyhlLFAsdShHLFApKX0pLE4oUyxmdW5jdGlvbihQKXt2YXIgTD11KE0sUCk7aWYoeDcoUCkpcmV0dXJuIEw7dmFyIFE9QTAoUCksaTA9MDtpZih0eXBlb2YgUT09XCJudW1iZXJcIilpZihjZj09PVEpdmFyIGwwPWJacjtlbHNlIGlmKFQ3PT09USl2YXIgbDA9bFpyO2Vsc2UgaTA9MTtlbHNlIGkwPTE7aWYoaTApdmFyIGwwPTA7aWYobDApe3ZhciBTMD1vKGUsUCxMKTsxLXUocyxTMCkmJnVlKFAsWzAsUzBbMV0sMjZdKTt2YXIgVDA9UzBbMl0scnI9MDtUMFswXT09PTEwJiZqcyhUMFsxXVsyXVsxXSkmJihnaShQLDUzKSxycj0xKTt2YXIgTDA9UGUoUCk7aWUoUCk7dmFyIEI9d2UoUCksWj15dChTMFsxXSxMMCkscDA9bHIoMCxbMCxCXSwwKTtyZXR1cm5bMCxbMCxaLFsyOSxbMCxsMFsxXSxTMCwwLHAwXV1dXX1yZXR1cm4gTH0pLE4oTSxmdW5jdGlvbihQKXt2YXIgTD1QZShQKSxRPTEtUFsxNl0saTA9MCxsMD1QWzE2XT09PTA/UDpbMCxQWzFdLFBbMl0sUFszXSxQWzRdLFBbNV0sUFs2XSxQWzddLFBbOF0sUFs5XSxQWzEwXSxQWzExXSxQWzEyXSxQWzEzXSxQWzE0XSxQWzE1XSxpMCxQWzE3XSxQWzE4XSxQWzE5XSxQWzIwXSxQWzIxXSxQWzIyXSxQWzIzXSxQWzI0XSxQWzI1XSxQWzI2XSxQWzI3XSxQWzI4XSxQWzI5XSxQWzMwXV0sUzA9QTAobDApLFQwPTA7aWYodHlwZW9mIFMwPT1cIm51bWJlclwiKXt2YXIgcnI9UzAtNDR8MDtpZighKDc8cnI+Pj4wKSl7dmFyIEwwPTA7c3dpdGNoKHJyKXtjYXNlIDA6aWYoUSl2YXIgQj1bMCx1KGcwLGwwKV07ZWxzZSBMMD0xO2JyZWFrO2Nhc2UgNjp2YXIgQj1bMCx1KGYwLGwwKV07YnJlYWs7Y2FzZSA3OnZhciBCPVswLHUoVixsMCldO2JyZWFrO2RlZmF1bHQ6TDA9MX1pZighTDApe3ZhciBaPUI7VDA9MX19fWlmKCFUMCl2YXIgWj1HcyhsMCk/WzAsdSh0MCxsMCldOnUoRTAsbDApO3JldHVybiBwNyhtMCwwLDAsbDAsTCxaKX0pLE4oSyxmdW5jdGlvbihQKXtyZXR1cm4gbyhlLFAsdShNLFApKX0pLE4oVixmdW5jdGlvbihQKXtzd2l0Y2goUFsyMV0pe2Nhc2UgMDp2YXIgTD0wLFE9MDticmVhaztjYXNlIDE6dmFyIEw9MCxRPTE7YnJlYWs7ZGVmYXVsdDp2YXIgTD0xLFE9MX12YXIgaTA9UGUoUCksbDA9cHIoUCk7WTAoUCw1MSk7dmFyIFMwPVswLGkwLFsyMyxbMCxscihbMCxsMF0sWzAsd2UoUCldLDApXV1dLFQwPUEwKFApO2lmKHR5cGVvZiBUMD09XCJudW1iZXJcIiYmISgxMTw9VDApKXN3aXRjaChUMCl7Y2FzZSA0OnZhciBycj1MP1MwOih1ZShQLFswLGkwLDVdKSxbMCxpMCxbMTAsUmMoMCxbMCxpMCxvWnJdKV1dKTtyZXR1cm4gUihrMCxhWnIsUCxpMCxycik7Y2FzZSA2OmNhc2UgMTA6dmFyIEwwPVE/UzA6KHVlKFAsWzAsaTAsNF0pLFswLGkwLFsxMCxSYygwLFswLGkwLHNacl0pXV0pO3JldHVybiBSKGswLHZacixQLGkwLEwwKX1yZXR1cm4gUT9TdChjWnIsUCk6dWUoUCxbMCxpMCw0XSksUzB9KSxOKGYwLGZ1bmN0aW9uKFApe3JldHVybiBjcigwLGZ1bmN0aW9uKEwpe3ZhciBRPXByKEwpLGkwPVBlKEwpO2lmKFkwKEwsNTApLHh1KEwsMTApKXt2YXIgbDA9UmMoMCxbMCxpMCxpWnJdKSxTMD1QZShMKTtabChMLGZacik7dmFyIFQwPVJjKDAsWzAsUzAseFpyXSk7cmV0dXJuWzE3LFswLGwwLFQwLGxyKFswLFFdLFswLHdlKEwpXSwwKV1dfXZhciBycj1wcihMKTtZMChMLDQpO3ZhciBMMD11cihzMCxbMCxycl0sMCx1KHgsS2woMCxMKSkpO3JldHVybiBZMChMLDUpLFsxMSxbMCxMMCxscihbMCxRXSxbMCx3ZShMKV0sMCldXX0sUCl9KSxOKG0wLGZ1bmN0aW9uKFAsTCxRLGkwLGwwKXt2YXIgUzA9UD9QWzFdOjEsVDA9TCYmTFsxXSxycj1wNyhsLFswLFMwXSxbMCxUMF0sUSxpMCxsMCksTDA9dWUwKFEpLEI9MDtpZihMMCl7dmFyIFo9TDBbMV07aWYodHlwZW9mIFo9PVwibnVtYmVyXCImJlo9PT04Myl7dmFyIHAwPTE7Qj0xfX1pZighQil2YXIgcDA9MDtmdW5jdGlvbiBiMCh2cil7dmFyICQwPSR0KHZyKTtmdW5jdGlvbiBFcihCcixxcil7cmV0dXJuIG8oUWUoQnIsRGksNzgpLEJyLHFyKX12YXIgTXI9byhlLHZyLHJyKTtyZXR1cm4gbygkMFsyXSxNcixFcil9ZnVuY3Rpb24gTzAodnIsJDAsRXIpe3ZhciBNcj11KHgwLCQwKSxCcj1NclsxXSxxcj15dChpMCxCciksanI9WzAsRXIsdnIsWzAsQnIsTXJbMl1dLDBdLCRyPTA7aWYoIXAwJiYhVDApe3ZhciBuZT1bNCxqcl07JHI9MX1pZighJHIpdmFyIG5lPVsyMCxbMCxqcixxcixwMF1dO3ZhciBRcj1UMHx8cDA7cmV0dXJuIHA3KG0wLFswLFMwXSxbMCxRcl0sJDAsaTAsWzAsWzAscXIsbmVdXSl9aWYoUVsxM10pcmV0dXJuIHJyO3ZhciBNMD1BMChRKTtpZih0eXBlb2YgTTA9PVwibnVtYmVyXCIpe3ZhciBlcj1NMC05OHwwO2lmKDI8ZXI+Pj4wKXtpZihlcj09PS05NClyZXR1cm4gTzAoMCxRLGIwKFEpKX1lbHNlIGlmKGVyIT09MSYmZnUoUSkpe3ZhciB5cj1UOShmdW5jdGlvbih2ciwkMCl7dGhyb3cgQnN9LFEpO3JldHVybiBfZTAoeXIscnIsZnVuY3Rpb24odnIpe3ZhciAkMD1iMCh2cik7cmV0dXJuIE8wKHUoZTAsdnIpLHZyLCQwKX0pfX1yZXR1cm4gcnJ9KSxOKGswLGZ1bmN0aW9uKFAsTCxRLGkwKXt2YXIgbDA9UD9QWzFdOjE7cmV0dXJuIG8oZSxMLHA3KG0wLFswLGwwXSwwLEwsUSxbMCxpMF0pKX0pLE4oZzAsZnVuY3Rpb24oUCl7cmV0dXJuIGNyKDAsZnVuY3Rpb24oTCl7dmFyIFE9UGUoTCksaTA9cHIoTCk7aWYoWTAoTCw0NCksTFsxMV0mJkEwKEwpPT09MTApe3ZhciBsMD13ZShMKTtpZShMKTt2YXIgUzA9UmMobHIoWzAsaTBdLFswLGwwXSwwKSxbMCxRLGVacl0pLFQwPUEwKEwpO3JldHVybiB0eXBlb2YgVDAhPVwibnVtYmVyXCImJlQwWzBdPT09NCYmIW4wKFQwWzNdLG5acik/WzE3LFswLFMwLG8oc2VbMTNdLDAsTCksMF1dOihTdCh0WnIsTCksaWUoTCksWzEwLFMwXSl9dmFyIHJyPVBlKEwpLEwwPUEwKEwpLEI9MDtpZih0eXBlb2YgTDA9PVwibnVtYmVyXCIpaWYoTDA9PT00NCl2YXIgWj11KGcwLEwpO2Vsc2UgaWYoTDA9PT01MSl2YXIgWj11KFYsX0woMSxMKSk7ZWxzZSBCPTE7ZWxzZSBCPTE7aWYoQil2YXIgWj1HcyhMKT91KHQwLEwpOnUoVTAsTCk7dmFyIHAwPVIoYzAsdVpyLF9MKDEsTCkscnIsWiksYjA9QTAoTCksTzA9MDtpZih0eXBlb2YgYjAhPVwibnVtYmVyXCImJmIwWzBdPT09Myl7dmFyIE0wPVIoUjAsTCxycixwMCxiMFsxXSk7TzA9MX1pZighTzApdmFyIE0wPXAwO3ZhciBlcj0wO2lmKEEwKEwpIT09NCl7dmFyIHlyPTA7aWYoZnUoTCkmJkEwKEwpPT09OTgmJih5cj0xKSwheXIpe3ZhciBFcj1NMDtlcj0xfX1pZighZXIpdmFyIHZyPSR0KEwpLCQwPWZ1bmN0aW9uKG5lLFFyKXtyZXR1cm4gbyhRZShuZSxEaSw3OSksbmUsUXIpfSxFcj1vKHZyWzJdLE0wLCQwKTt2YXIgTXI9ZnUoTCksQnI9TXImJl9lMChUOShmdW5jdGlvbihuZSxRcil7dGhyb3cgQnN9LEwpLDAsZTApLHFyPUEwKEwpLGpyPTA7aWYodHlwZW9mIHFyPT1cIm51bWJlclwiJiZxcj09PTQpe3ZhciAkcj1bMCx1KHgwLEwpXTtqcj0xfWlmKCFqcil2YXIgJHI9MDtyZXR1cm5bMTgsWzAsRXIsQnIsJHIsbHIoWzAsaTBdLDAsMCldXX0sUCl9KTtmdW5jdGlvbiBfcihQKXt2YXIgTD1wcihQKTtZMChQLDk4KTtmb3IodmFyIFE9MDs7KXt2YXIgaTA9QTAoUCk7aWYodHlwZW9mIGkwPT1cIm51bWJlclwiKXt2YXIgbDA9MDtpZigoaTA9PT05OXx8UG49PT1pMCkmJihsMD0xKSxsMCl7dmFyIFMwPXllKFEpLFQwPXByKFApO1kwKFAsOTkpO3ZhciBycj1BMChQKT09PTQ/JHQoUClbMV06d2UoUCk7cmV0dXJuWzAsUzAseXUoWzAsTF0sWzAscnJdLFQwLDApXX19dmFyIEwwPUEwKFApLEI9MDtpZih0eXBlb2YgTDAhPVwibnVtYmVyXCImJkwwWzBdPT09NCYmIW4wKEwwWzJdLFEkcikpe3ZhciBaPVBlKFApLHAwPXByKFApO1psKFAsclpyKTt2YXIgYjA9WzEsWzAsWixbMCxscihbMCxwMF0sWzAsd2UoUCldLDApXV1dO0I9MX1pZighQil2YXIgYjA9WzAsdShtblsxXSxQKV07dmFyIE8wPVswLGIwLFFdO0EwKFApIT09OTkmJlkwKFAsOSk7dmFyIFE9TzB9fU4oZTAsZnVuY3Rpb24oUCl7S3UoUCwxKTt2YXIgTD1BMChQKT09PTk4PzE6MCxRPUwmJlswLGNyKDAsX3IsUCldO3JldHVybiBrNyhQKSxRfSk7ZnVuY3Rpb24gSXIoUCl7dmFyIEw9cHIoUCk7WTAoUCwxMik7dmFyIFE9dSh4LFApO3JldHVyblswLFEsbHIoWzAsTF0sMCwwKV19Tih4MCxmdW5jdGlvbihQKXtyZXR1cm4gY3IoMCxmdW5jdGlvbihMKXt2YXIgUT1wcihMKTtZMChMLDQpO2Zvcih2YXIgaTA9MDs7KXt2YXIgbDA9QTAoTCk7aWYodHlwZW9mIGwwPT1cIm51bWJlclwiKXt2YXIgUzA9MDtpZigobDA9PT01fHxQbj09PWwwKSYmKFMwPTEpLFMwKXt2YXIgVDA9eWUoaTApLHJyPXByKEwpO3JldHVybiBZMChMLDUpLFswLFQwLHl1KFswLFFdLFswLHdlKEwpXSxyciwwKV19fXZhciBMMD1BMChMKSxCPTA7aWYodHlwZW9mIEwwPT1cIm51bWJlclwiJiZMMD09PTEyKXt2YXIgWj1bMSxjcigwLElyLEwpXTtCPTF9aWYoIUIpdmFyIFo9WzAsdSh4LEwpXTt2YXIgcDA9WzAsWixpMF07QTAoTCkhPT01JiZZMChMLDkpO3ZhciBpMD1wMH19LFApfSksTihsLGZ1bmN0aW9uKFAsTCxRLGkwLGwwKXt2YXIgUzA9UD9QWzFdOjEsVDA9TCYmTFsxXSxycj1BMChRKSxMMD0wO2lmKHR5cGVvZiBycj09XCJudW1iZXJcIilzd2l0Y2gocnIpe2Nhc2UgNjppZShRKTt2YXIgQj0wLFo9WzAsVDBdLHAwPVswLFMwXTtMMD0yO2JyZWFrO2Nhc2UgMTA6aWUoUSk7dmFyIGIwPTAsTzA9WzAsVDBdLE0wPVswLFMwXTtMMD0xO2JyZWFrO2Nhc2UgODM6MS1TMCYmamUoUSw5OSksWTAoUSw4Myk7dmFyIGVyPTAseXI9QTAoUSk7aWYodHlwZW9mIHlyPT1cIm51bWJlclwiKXN3aXRjaCh5cil7Y2FzZSA0OnJldHVybiBsMDtjYXNlIDY6aWUoUSk7dmFyIEI9SyRyLFo9VyRyLHAwPVswLFMwXTtMMD0yLGVyPTE7YnJlYWs7Y2FzZSA5ODppZihmdShRKSlyZXR1cm4gbDA7YnJlYWt9ZWxzZSBpZih5clswXT09PTMpcmV0dXJuIGplKFEsdGkpLGwwO2lmKCFlcil7dmFyIGIwPUokcixPMD0kJHIsTTA9WzAsUzBdO0wwPTF9YnJlYWt9ZWxzZSBpZihyclswXT09PTMpe1QwJiZqZShRLHRpKTt2YXIgdnI9cnJbMV07cmV0dXJuIHA3KG0wLFokciwwLFEsaTAsWzAsUihSMCxRLGkwLG8oZSxRLGwwKSx2cildKX1zd2l0Y2goTDApe2Nhc2UgMDpyZXR1cm4gbDA7Y2FzZSAxOnZhciAkMD1NMD9TMDoxLEVyPU8wJiZPMFsxXSxNcj1iMCYmYjBbMV0sQnI9QTAoUSkscXI9MDtpZih0eXBlb2YgQnI9PVwibnVtYmVyXCImJkJyPT09MTQpe3ZhciBqcj1nZTAoUSksJHI9anJbMV0sbmU9UVsyOV1bMV0sUXI9anJbMl1bMV07aWYobmUpe3ZhciBiZT1uZVsxXTtRWzI5XVsxXT1bMCxbMCxiZVsxXSxbMCxbMCxRciwkcl0sYmVbMl1dXSxuZVsyXV19ZWxzZSB1ZShRLFswLCRyLDg5XSk7dmFyIHBlPVsxLGpyXSxvZT0kcjtxcj0xfWlmKCFxcil2YXIgYWU9ejcoUSkscGU9WzAsYWVdLG9lPWFlWzFdO3ZhciBjZT15dChpMCxvZSksZ2U9MDtsMFswXT09PTAmJmwwWzFdWzJdWzBdPT09MjMmJnBlWzBdPT09MSYmKHVlKFEsWzAsY2UsOTBdKSxnZT0xKTt2YXIgcTA9WzAsbyhlLFEsbDApLHBlLDBdLEZyPUVyP1syMSxbMCxxMCxjZSxNcl1dOlsxNixxMF07cmV0dXJuIHA3KG0wLFswLCQwXSxbMCxFcl0sUSxpMCxbMCxbMCxjZSxGcl1dKTtkZWZhdWx0OnZhciBfPXAwP1MwOjEsaz1aJiZaWzFdLEk9QiYmQlsxXSxVPV9MKDAsUSksWT11KHNlWzddLFUpLHkwPVBlKFEpO1kwKFEsNyk7dmFyIFAwPXdlKFEpLEkwPXl0KGkwLHkwKSxEPWxyKDAsWzAsUDBdLDApLHUwPVswLG8oZSxRLGwwKSxbMixZXSxEXSxYMD1rP1syMSxbMCx1MCxJMCxJXV06WzE2LHUwXTtyZXR1cm4gcDcobTAsWzAsX10sWzAsa10sUSxpMCxbMCxbMCxJMCxYMF1dKX19KSxOKGMwLGZ1bmN0aW9uKFAsTCxRLGkwKXt2YXIgbDA9UD9QWzFdOjE7cmV0dXJuIG8oZSxMLHA3KGwsWzAsbDBdLDAsTCxRLFswLGkwXSkpfSksTih0MCxmdW5jdGlvbihQKXtyZXR1cm4gY3IoMCxmdW5jdGlvbihMKXt2YXIgUT11KFZuWzFdLEwpLGkwPVFbMV0sbDA9UVsyXSxTMD1jcigwLGZ1bmN0aW9uKE0wKXt2YXIgZXI9cHIoTTApO1kwKE0wLDE1KTt2YXIgeXI9dShWblsyXSxNMCksdnI9eXJbMV0sJDA9cGwoWzAsbDAsWzAsZXIsWzAseXJbMl0sMF1dXSk7aWYoQTAoTTApPT09NCl2YXIgRXI9MCxNcj0wO2Vsc2V7dmFyIEJyPUEwKE0wKSxxcj0wO2lmKHR5cGVvZiBCcj09XCJudW1iZXJcIil7dmFyIGpyPUJyIT09OTg/MTowO2lmKCFqcil7dmFyIG5lPWpyO3FyPTF9fWlmKCFxcil2YXIgJHI9bUwodnIscmUwKGkwLE0wKSksbmU9WzAseXMoJHIsbyhzZVsxM10seiRyLCRyKSldO3ZhciBFcj1vaShNMCx1KG1uWzNdLE0wKSksTXI9bmV9dmFyIFFyPXQyKDAsTTApLGJlPXVyKFZuWzRdLGkwLHZyLFFyKSxhZT1BMChRcik9PT04Nj9iZTplYihRcixiZSkscGU9dShtblsxMl0sUXIpLG9lPXBlWzJdLGNlPXBlWzFdO2lmKG9lKXZhciBnZT1oZTAoUXIsb2UpLHEwPWNlO2Vsc2UgdmFyIGdlPW9lLHEwPW8yKFFyLGNlKTtyZXR1cm5bMCxNcixhZSx2cixnZSxxMCxFciwkMF19LEwpLFQwPVMwWzJdLHJyPVQwWzNdLEwwPVQwWzJdLEI9VDBbMV0sWj1xMShMMCkscDA9cDcoVm5bNV0sTCxpMCxyciwxLFopO1IoVm5bNl0sTCxwMFsyXSxCLEwwKTt2YXIgYjA9UzBbMV0sTzA9bHIoWzAsVDBbN11dLDAsMCk7cmV0dXJuWzgsWzAsQixMMCxwMFsxXSxpMCxycixUMFs0XSxUMFs1XSxUMFs2XSxPMCxiMF1dfSxQKX0pLE4obzAsZnVuY3Rpb24oUCxMLFEpe3N3aXRjaChMKXtjYXNlIDE6Z2koUCw0NSk7dHJ5e3ZhciBpMD1qdihSdihUZShVJHIsUSkpKSxsMD1pMH1jYXRjaChMMCl7aWYoTDA9RXQoTDApLEwwWzFdIT09cTcpdGhyb3cgTDA7dmFyIGwwPWtlKFRlKEgkcixRKSl9YnJlYWs7Y2FzZSAyOmdpKFAsNDYpO3RyeXt2YXIgUzA9b2woUSksbDA9UzB9Y2F0Y2goTDApe2lmKEwwPUV0KEwwKSxMMFsxXSE9PXE3KXRocm93IEwwO3ZhciBsMD1rZShUZShYJHIsUSkpfWJyZWFrO2Nhc2UgNDp0cnl7dmFyIFQwPW9sKFEpLGwwPVQwfWNhdGNoKEwwKXtpZihMMD1FdChMMCksTDBbMV0hPT1xNyl0aHJvdyBMMDt2YXIgbDA9a2UoVGUoWSRyLFEpKX1icmVhaztkZWZhdWx0OnRyeXt2YXIgcnI9anYoUnYoUSkpLGwwPXJyfWNhdGNoKEwwKXtpZihMMD1FdChMMCksTDBbMV0hPT1xNyl0aHJvdyBMMDt2YXIgbDA9a2UoVGUoViRyLFEpKX19cmV0dXJuIFkwKFAsWzAsTCxRXSksbDB9KSxOKHcwLGZ1bmN0aW9uKFApe3ZhciBMPXVuKFApO3JldHVybiBMIT09MCYmWHQ9PT1JdChQLEwtMXwwKT9tNyhQLDAsTC0xfDApOlB9KSxOKF8wLGZ1bmN0aW9uKFAsTCxRKXtpZigyPD1MKXt2YXIgaTA9dSh3MCxRKTt0cnl7dmFyIGwwPW9sKGkwKSxTMD1sMH1jYXRjaChaKXtpZihaPUV0KFopLFpbMV0hPT1xNyl0aHJvdyBaO3ZhciBTMD1rZShUZShCJHIsaTApKX12YXIgVDA9UzB9ZWxzZXt2YXIgcnI9dSh3MCxRKTt0cnl7dmFyIEwwPWp2KFJ2KHJyKSksQj1MMH1jYXRjaChwMCl7aWYocDA9RXQocDApLHAwWzFdIT09cTcpdGhyb3cgcDA7dmFyIEI9a2UoVGUocSRyLHJyKSl9dmFyIFQwPUJ9cmV0dXJuIFkwKFAsWzEsTCxRXSksVDB9KSxOKEUwLGZ1bmN0aW9uKFApe3ZhciBMPVBlKFApLFE9cHIoUCksaTA9QTAoUCk7aWYodHlwZW9mIGkwPT1cIm51bWJlclwiKXN3aXRjaChpMCl7Y2FzZSAwOnZhciBsMD11KHNlWzEyXSxQKTtyZXR1cm5bMSxbMCxsMFsxXSxbMTksbDBbMl1dXSxsMFszXV07Y2FzZSA0OnJldHVyblswLHUoWCxQKV07Y2FzZSA2OnZhciBTMD1jcigwLGhyLFApLFQwPVMwWzJdO3JldHVyblsxLFswLFMwWzFdLFswLFQwWzFdXV0sVDBbMl1dO2Nhc2UgMjE6cmV0dXJuIGllKFApLFswLFswLEwsWzI2LFswLGxyKFswLFFdLFswLHdlKFApXSwwKV1dXV07Y2FzZSAyOTpyZXR1cm4gaWUoUCksWzAsWzAsTCxbMTQsWzAsMCxSJHIsbHIoWzAsUV0sWzAsd2UoUCldLDApXV1dXTtjYXNlIDQwOnJldHVyblswLHUoc2VbMjJdLFApXTtjYXNlIDk4OnZhciBycj11KHNlWzE3XSxQKSxMMD1yclsyXSxCPXJyWzFdLFo9Tmk8PUwwWzFdP1sxMyxMMFsyXV06WzEyLEwwWzJdXTtyZXR1cm5bMCxbMCxCLFpdXTtjYXNlIDMwOmNhc2UgMzE6aWUoUCk7dmFyIHAwPWkwPT09MzE/MTowLGIwPXAwP0ckcjpNJHI7cmV0dXJuWzAsWzAsTCxbMTQsWzAsWzEscDBdLGIwLGxyKFswLFFdLFswLHdlKFApXSwwKV1dXV07Y2FzZSA3NDpjYXNlIDEwNTpyZXR1cm5bMCx1KEFyLFApXX1lbHNlIHN3aXRjaChpMFswXSl7Y2FzZSAwOnZhciBPMD1pMFsyXSxNMD1bMix1cihvMCxQLGkwWzFdLE8wKV07cmV0dXJuWzAsWzAsTCxbMTQsWzAsTTAsTzAsbHIoWzAsUV0sWzAsd2UoUCldLDApXV1dXTtjYXNlIDE6dmFyIGVyPWkwWzJdLHlyPVszLHVyKF8wLFAsaTBbMV0sZXIpXTtyZXR1cm5bMCxbMCxMLFsxNCxbMCx5cixlcixscihbMCxRXSxbMCx3ZShQKV0sMCldXV1dO2Nhc2UgMjp2YXIgdnI9aTBbMV07dnJbNF0mJmdpKFAsNDUpLGllKFApO3ZhciAkMD1bMCx2clsyXV0sRXI9bHIoWzAsUV0sWzAsd2UoUCldLDApO3JldHVyblswLFswLHZyWzFdLFsxNCxbMCwkMCx2clszXSxFcl1dXV07Y2FzZSAzOnZhciBNcj1vKGIsUCxpMFsxXSk7cmV0dXJuWzAsWzAsTXJbMV0sWzI1LE1yWzJdXV1dfWlmKEcxKFApKXt2YXIgQnI9byhzZVsxM10sMCxQKTtyZXR1cm5bMCxbMCxCclsxXSxbMTAsQnJdXV19U3QoMCxQKTt2YXIgcXI9MDtyZXR1cm4gdHlwZW9mIGkwIT1cIm51bWJlclwiJiZpMFswXT09PTYmJihpZShQKSxxcj0xKSxbMCxbMCxMLFsxNCxbMCwwLGokcixscihbMCxRXSxbMCwwXSwwKV1dXV19KSxOKFUwLGZ1bmN0aW9uKFApe3JldHVybiBvKGUsUCx1KEUwLFApKX0pLE4oYixmdW5jdGlvbihQLEwpe3ZhciBRPUxbM10saTA9TFsyXSxsMD1MWzFdLFMwPXByKFApO1kwKFAsWzMsTF0pO3ZhciBUMD1bMCxsMCxbMCxbMCxpMFsyXSxpMFsxXV0sUV1dO2lmKFEpdmFyIHJyPTAsTDA9WzAsVDAsMF0sQj1sMDtlbHNlIGZvcih2YXIgWj1bMCxUMCwwXSxwMD0wOzspe3ZhciBiMD11KHNlWzddLFApLE8wPVswLGIwLHAwXSxNMD1BMChQKSxlcj0wO2lmKHR5cGVvZiBNMD09XCJudW1iZXJcIiYmTTA9PT0xKXtLdShQLDQpO3ZhciB5cj1BMChQKSx2cj0wO2lmKHR5cGVvZiB5ciE9XCJudW1iZXJcIiYmeXJbMF09PT0zKXt2YXIgJDA9eXJbMV0sRXI9JDBbM10sTXI9JDBbMl0sQnI9JDBbMV07aWUoUCk7dmFyIHFyPVswLFswLE1yWzJdLE1yWzFdXSxFcl07azcoUCk7dmFyIGpyPVswLFswLEJyLHFyXSxaXTtpZighRXIpe3ZhciBaPWpyLHAwPU8wO2NvbnRpbnVlfXZhciAkcj15ZShPMCksbmU9WzAsQnIseWUoanIpLCRyXTtlcj0xLHZyPTF9aWYoIXZyKXRocm93WzAsU24sUCRyXX1pZighZXIpe1N0KEQkcixQKTt2YXIgUXI9WzAsYjBbMV0sTCRyXSxiZT15ZShPMCksYWU9eWUoWzAsUXIsWl0pLG5lPVswLGIwWzFdLGFlLGJlXX12YXIgcnI9bmVbM10sTDA9bmVbMl0sQj1uZVsxXTticmVha312YXIgcGU9d2UoUCksb2U9eXQobDAsQik7cmV0dXJuWzAsb2UsWzAsTDAscnIsbHIoWzAsUzBdLFswLHBlXSwwKV1dfSksTihSMCxmdW5jdGlvbihQLEwsUSxpMCl7dmFyIGwwPSR0KFApO2Z1bmN0aW9uIFMwKEwwLEIpe3JldHVybiBvKFFlKEwwLERpLDI4KSxMMCxCKX12YXIgVDA9byhsMFsyXSxRLFMwKSxycj1vKGIsUCxpMCk7cmV0dXJuWzAseXQoTCxyclsxXSksWzI0LFswLFQwLHJyLDBdXV19KSxOKFgsZnVuY3Rpb24oUCl7dmFyIEw9cHIoUCksUT1jcigwLGZ1bmN0aW9uKFQwKXtZMChUMCw0KTt2YXIgcnI9UGUoVDApLEwwPXUoeCxUMCksQj1BMChUMCksWj0wO2lmKHR5cGVvZiBCPT1cIm51bWJlclwiKWlmKEI9PT05KXZhciBwMD1bMCx1cihXMCxUMCxycixbMCxMMCwwXSldO2Vsc2UgaWYoQj09PTg2KXZhciBwMD1bMSxbMCxMMCx1KG1uWzldLFQwKSwwXV07ZWxzZSBaPTE7ZWxzZSBaPTE7aWYoWil2YXIgcDA9WzAsTDBdO3JldHVybiBZMChUMCw1KSxwMH0sUCksaTA9UVsyXSxsMD13ZShQKSxTMD1pMFswXT09PTA/aTBbMV06WzAsUVsxXSxbMjcsaTBbMV1dXTtyZXR1cm4gdXIoczAsWzAsTF0sWzAsbDBdLFMwKX0pLE4oczAsZnVuY3Rpb24oUCxMLFEpe3ZhciBpMD1RWzJdLGwwPVAmJlBbMV0sUzA9TCYmTFsxXTtmdW5jdGlvbiBUMChKZSl7cmV0dXJuIHk3KEplLGxyKFswLGwwXSxbMCxTMF0sMCkpfWZ1bmN0aW9uIHJyKEplKXtyZXR1cm4gSkQoSmUsbHIoWzAsbDBdLFswLFMwXSwwKSl9c3dpdGNoKGkwWzBdKXtjYXNlIDA6dmFyIEwwPWkwWzFdLEI9cnIoTDBbMl0pLE5lPVswLFswLEwwWzFdLEJdXTticmVhaztjYXNlIDE6dmFyIFo9aTBbMV0scDA9WlsxMF0sYjA9VDAoWls5XSksTmU9WzEsWzAsWlsxXSxaWzJdLFpbM10sWls0XSxaWzVdLFpbNl0sWls3XSxaWzhdLGIwLHAwXV07YnJlYWs7Y2FzZSAyOnZhciBPMD1pMFsxXSxNMD1UMChPMFs0XSksTmU9WzIsWzAsTzBbMV0sTzBbMl0sTzBbM10sTTBdXTticmVhaztjYXNlIDM6dmFyIGVyPWkwWzFdLHlyPVQwKGVyWzRdKSxOZT1bMyxbMCxlclsxXSxlclsyXSxlclszXSx5cl1dO2JyZWFrO2Nhc2UgNDp2YXIgdnI9aTBbMV0sJDA9VDAodnJbNF0pLE5lPVs0LFswLHZyWzFdLHZyWzJdLHZyWzNdLCQwXV07YnJlYWs7Y2FzZSA1OnZhciBFcj1pMFsxXSxNcj1UMChFcls3XSksTmU9WzUsWzAsRXJbMV0sRXJbMl0sRXJbM10sRXJbNF0sRXJbNV0sRXJbNl0sTXJdXTticmVhaztjYXNlIDc6dmFyIEJyPWkwWzFdLHFyPVQwKEJyWzRdKSxOZT1bNyxbMCxCclsxXSxCclsyXSxCclszXSxxcl1dO2JyZWFrO2Nhc2UgODp2YXIganI9aTBbMV0sJHI9anJbMTBdLG5lPVQwKGpyWzldKSxOZT1bOCxbMCxqclsxXSxqclsyXSxqclszXSxqcls0XSxqcls1XSxqcls2XSxqcls3XSxqcls4XSxuZSwkcl1dO2JyZWFrO2Nhc2UgMTA6dmFyIFFyPWkwWzFdLGJlPVFyWzJdLGFlPVQwKGJlWzJdKSxOZT1bMTAsWzAsUXJbMV0sWzAsYmVbMV0sYWVdXV07YnJlYWs7Y2FzZSAxMTp2YXIgcGU9aTBbMV0sb2U9VDAocGVbMl0pLE5lPVsxMSxbMCxwZVsxXSxvZV1dO2JyZWFrO2Nhc2UgMTI6dmFyIGNlPWkwWzFdLGdlPVQwKGNlWzRdKSxOZT1bMTIsWzAsY2VbMV0sY2VbMl0sY2VbM10sZ2VdXTticmVhaztjYXNlIDEzOnZhciBxMD1pMFsxXSxGcj1UMChxMFs0XSksTmU9WzEzLFswLHEwWzFdLHEwWzJdLHEwWzNdLEZyXV07YnJlYWs7Y2FzZSAxNDp2YXIgXz1pMFsxXSxrPVQwKF9bM10pLE5lPVsxNCxbMCxfWzFdLF9bMl0sa11dO2JyZWFrO2Nhc2UgMTU6dmFyIEk9aTBbMV0sVT1UMChJWzRdKSxOZT1bMTUsWzAsSVsxXSxJWzJdLElbM10sVV1dO2JyZWFrO2Nhc2UgMTY6dmFyIFk9aTBbMV0seTA9VDAoWVszXSksTmU9WzE2LFswLFlbMV0sWVsyXSx5MF1dO2JyZWFrO2Nhc2UgMTc6dmFyIFAwPWkwWzFdLEkwPVQwKFAwWzNdKSxOZT1bMTcsWzAsUDBbMV0sUDBbMl0sSTBdXTticmVhaztjYXNlIDE4OnZhciBEPWkwWzFdLHUwPVQwKERbNF0pLE5lPVsxOCxbMCxEWzFdLERbMl0sRFszXSx1MF1dO2JyZWFrO2Nhc2UgMTk6dmFyIFgwPWkwWzFdLEowPXJyKFgwWzJdKSxOZT1bMTksWzAsWDBbMV0sSjBdXTticmVhaztjYXNlIDIwOnZhciBpcj1pMFsxXSxRMD1pclsxXSxGMD1pclszXSxTcj1pclsyXSxtcj1UMChRMFs0XSksTmU9WzIwLFswLFswLFEwWzFdLFEwWzJdLFEwWzNdLG1yXSxTcixGMF1dO2JyZWFrO2Nhc2UgMjE6dmFyIENyPWkwWzFdLHNyPUNyWzFdLFByPUNyWzNdLEswPUNyWzJdLFVyPVQwKHNyWzNdKSxOZT1bMjEsWzAsWzAsc3JbMV0sc3JbMl0sVXJdLEswLFByXV07YnJlYWs7Y2FzZSAyMjp2YXIgaDA9aTBbMV0sS3I9VDAoaDBbMl0pLE5lPVsyMixbMCxoMFsxXSxLcl1dO2JyZWFrO2Nhc2UgMjM6dmFyIE5lPVsyMyxbMCxUMChpMFsxXVsxXSldXTticmVhaztjYXNlIDI0OnZhciByZT1pMFsxXSx4ZT1UMChyZVszXSksTmU9WzI0LFswLHJlWzFdLHJlWzJdLHhlXV07YnJlYWs7Y2FzZSAyNTp2YXIgUmU9aTBbMV0sdmU9VDAoUmVbM10pLE5lPVsyNSxbMCxSZVsxXSxSZVsyXSx2ZV1dO2JyZWFrO2Nhc2UgMjY6dmFyIE5lPVsyNixbMCxUMChpMFsxXVsxXSldXTticmVhaztjYXNlIDI3OnZhciBJZT1pMFsxXSxHZT1UMChJZVszXSksTmU9WzI3LFswLEllWzFdLEllWzJdLEdlXV07YnJlYWs7Y2FzZSAyODp2YXIgTWU9aTBbMV0sYW49VDAoTWVbM10pLE5lPVsyOCxbMCxNZVsxXSxNZVsyXSxhbl1dO2JyZWFrO2Nhc2UgMjk6dmFyIFdlPWkwWzFdLEFlPVQwKFdlWzRdKSxOZT1bMjksWzAsV2VbMV0sV2VbMl0sV2VbM10sQWVdXTticmVhaztjYXNlIDMwOnZhciBjbj1pMFsxXSxybj1jbls0XSxrbj1jblszXSx2bj1UMChjblsyXSksTmU9WzMwLFswLGNuWzFdLHZuLGtuLHJuXV07YnJlYWs7ZGVmYXVsdDp2YXIgTmU9aTB9cmV0dXJuWzAsUVsxXSxOZV19KSxOKGhyLGZ1bmN0aW9uKFApe3ZhciBMPXByKFApO1kwKFAsNik7Zm9yKHZhciBRPVswLDAsdFszXV07Oyl7dmFyIGkwPVFbMl0sbDA9UVsxXSxTMD1BMChQKTtpZih0eXBlb2YgUzA9PVwibnVtYmVyXCIpe3ZhciBUMD0wO2lmKDEzPD1TMClQbj09PVMwJiYoVDA9MSk7ZWxzZSBpZig3PD1TMClzd2l0Y2goUzAtN3wwKXtjYXNlIDI6dmFyIHJyPVBlKFApO2llKFApO3ZhciBRPVswLFswLFsyLHJyXSxsMF0saTBdO2NvbnRpbnVlO2Nhc2UgNTp2YXIgTDA9cHIoUCksQj1jcigwLGZ1bmN0aW9uKFFyKXtpZShRcik7dmFyIGJlPXUoaSxRcik7cmV0dXJuIGJlWzBdPT09MD9bMCxiZVsxXSx0WzNdXTpbMCxiZVsxXSxiZVsyXV19LFApLFo9QlsyXSxwMD1aWzJdLGIwPUJbMV0sTzA9bHIoWzAsTDBdLDAsMCksTTA9WzEsWzAsYjAsWzAsWlsxXSxPMF1dXSxlcj1BMChQKT09PTc/MTowLHlyPTA7aWYoIWVyJiZZbigxLFApPT09Nyl7dmFyIHZyPVswLHAwWzFdLFswLFswLGIwLDY1XSxwMFsyXV1dO3lyPTF9aWYoIXlyKXZhciB2cj1wMDsxLWVyJiZZMChQLDkpO3ZhciBRPVswLFswLE0wLGwwXSxvKHRbNV0sdnIsaTApXTtjb250aW51ZTtjYXNlIDA6VDA9MTticmVha31pZihUMCl7dmFyICQwPXUodFs2XSxpMCksRXI9eWUobDApLE1yPXByKFApO3JldHVybiBZMChQLDcpLFswLFswLEVyLHl1KFswLExdLFswLHdlKFApXSxNciwwKV0sJDBdfX12YXIgQnI9dShpLFApO2lmKEJyWzBdPT09MCl2YXIgcXI9dFszXSxqcj1CclsxXTtlbHNlIHZhciBxcj1CclsyXSxqcj1CclsxXTtBMChQKSE9PTcmJlkwKFAsOSk7dmFyIFE9WzAsWzAsWzAsanJdLGwwXSxvKHRbNV0scXIsaTApXX19KSxOKEFyLGZ1bmN0aW9uKFApe0t1KFAsNSk7dmFyIEw9UGUoUCksUT1wcihQKSxpMD1BMChQKSxsMD0wO2lmKHR5cGVvZiBpMCE9XCJudW1iZXJcIiYmaTBbMF09PT01KXt2YXIgUzA9aTBbM10sVDA9aTBbMl07aWUoUCk7dmFyIHJyPXdlKFApLEwwPXJyLEI9UzAsWj1UMCxwMD1UZShPJHIsVGUoVDAsVGUoVCRyLFMwKSkpO2wwPTF9aWYoIWwwKXtTdChJJHIsUCk7dmFyIEwwPTAsQj1BJHIsWj1OJHIscDA9QyRyfWs3KFApO3ZhciBiMD0kbih1bihCKSksTzA9dW4oQiktMXwwLE0wPTA7aWYoIShPMDwwKSlmb3IodmFyIGVyPU0wOzspe3ZhciB5cj1WcihCLGVyKSx2cj15ci0xMDB8MCwkMD0wO2lmKCEoMjE8dnI+Pj4wKSlzd2l0Y2godnIpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA1OmNhc2UgOTpjYXNlIDE1OmNhc2UgMTc6Y2FzZSAyMTpxaShiMCx5ciksJDA9MTticmVha312YXIgRXI9ZXIrMXwwO2lmKE8wIT09ZXIpe3ZhciBlcj1Fcjtjb250aW51ZX1icmVha312YXIgTXI9TXQoYjApO3JldHVybiBuMChNcixCKSYmamUoUCxbMTMsQl0pLFswLEwsWzE0LFswLFs0LFswLFosTXJdXSxwMCxscihbMCxRXSxbMCxMMF0sMCldXV19KTtmdW5jdGlvbiBmZShQLEwpe2lmKHR5cGVvZiBMPT1cIm51bWJlclwiKXt2YXIgUT0wO2lmKDYxPD1MKXt2YXIgaTA9TC02NHwwOzI3PGkwPj4+MD9pMD09PTQzJiYoUT0xKToyNTwoaTAtMXwwKT4+PjAmJihRPTEpfWVsc2V7dmFyIGwwPUwrX3l8MDsxNzxsMD4+PjA/LTE8PWwwJiYoUT0xKTpsMD09PTEzJiYoUT0xKX1pZihRKXJldHVybiAwfXRocm93IEJzfWZ1bmN0aW9uIHYwKFApe3ZhciBMPUEwKFApO2lmKHR5cGVvZiBMPT1cIm51bWJlclwiJiYhTCl7dmFyIFE9byhzZVsxNl0sMSxQKTtyZXR1cm5bMCxbMCxRWzFdXSxRWzJdXX1yZXR1cm5bMCxbMSx1KHNlWzEwXSxQKV0sMF19cmV0dXJuIE4ob3IsZnVuY3Rpb24oUCl7dmFyIEw9VDkoZmUsUCksUT1QZShMKTtpZihZbigxLEwpPT09MTEpdmFyIGwwPTAsUzA9MDtlbHNlIHZhciBpMD11KFZuWzFdLEwpLGwwPWkwWzJdLFMwPWkwWzFdO3ZhciBUMD1jcigwLGZ1bmN0aW9uKG5lKXt2YXIgUXI9b2kobmUsdShtblszXSxuZSkpO2lmKEcxKG5lKSYmUXI9PT0wKXt2YXIgYmU9byhzZVsxM10sRiRyLG5lKSxhZT1iZVsxXSxwZT1bMCxhZSxbMCxbMCxhZSxbMixbMCxiZSxbMCxqMShuZSldLDBdXV0sMF1dO3JldHVyblswLFFyLFswLGFlLFswLDAsWzAscGUsMF0sMCwwXV0sWzAsWzAsYWVbMV0sYWVbM10sYWVbM11dXSwwXX12YXIgb2U9dXIoVm5bNF0sbmVbMThdLG5lWzE3XSxuZSksY2U9dTIoMSxuZSksZ2U9dShtblsxMl0sY2UpO3JldHVyblswLFFyLG9lLGdlWzFdLGdlWzJdXX0sTCkscnI9VDBbMl0sTDA9cnJbMl0sQj1MMFsyXSxaPTA7aWYoIUJbMV0pe3ZhciBwMD0wO2lmKCFCWzNdJiZCWzJdJiYocDA9MSksIXAwKXt2YXIgYjA9aWUwKEwpO1o9MX19aWYoIVopdmFyIGIwPUw7dmFyIE8wPUwwWzJdLE0wPU8wWzFdLGVyPU0wPyh1ZShiMCxbMCxNMFsxXVsxXSxaY10pLFswLEwwWzFdLFswLDAsTzBbMl0sTzBbM10sTzBbNF1dXSk6TDAseXI9cTEoZXIpLHZyPXg3KGIwKSwkMD12ciYmKEEwKGIwKT09PTExPzE6MCk7JDAmJmplKGIwLDYwKSxZMChiMCwxMSk7dmFyIEVyPWZlMChpZTAoYjApLFMwLDAseXIpLE1yPWNyKDAsdjAsRXIpLEJyPU1yWzJdO1IoVm5bNl0sRXIsQnJbMl0sMCxlcik7dmFyIHFyPXl0KFEsTXJbMV0pLGpyPVQwWzFdLCRyPWxyKFswLGwwXSwwLDApO3JldHVyblswLFswLHFyLFsxLFswLDAsZXIsQnJbMV0sUzAsMCxycls0XSxyclszXSxyclsxXSwkcixqcl1dXV19KSxOKFcwLGZ1bmN0aW9uKFAsTCxRKXtyZXR1cm4gY3IoWzAsTF0sZnVuY3Rpb24oaTApe2Zvcih2YXIgbDA9UTs7KXt2YXIgUzA9QTAoaTApO2lmKHR5cGVvZiBTMD09XCJudW1iZXJcIiYmUzA9PT05KXtpZShpMCk7dmFyIGwwPVswLHUoeCxpMCksbDBdO2NvbnRpbnVlfXJldHVyblsyMixbMCx5ZShsMCksMF1dfX0sUCl9KSxbMCx4LGksVCxuLEssbzAsVzBdfShSOSksVXM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlMCl7dmFyIHgwPXByKGUwKTtpZShlMCk7dmFyIGw9bHIoWzAseDBdLDAsMCksYzA9dShjaVs1XSxlMCksdDA9eDcoZTApP3JiKGUwKTpOOShlMCk7ZnVuY3Rpb24gbzAodzAsXzApe3JldHVybiBvKFFlKHcwLERpLDgwKSx3MCxfMCl9cmV0dXJuWzAsbyh0MFsyXSxjMCxvMCksbF19ZnVuY3Rpb24gZShlMCl7dmFyIHgwPWUwWzI3XVsyXTtpZih4MClmb3IodmFyIGw9MDs7KXt2YXIgYzA9QTAoZTApO2lmKHR5cGVvZiBjMD09XCJudW1iZXJcIiYmYzA9PT0xMyl7dmFyIGw9WzAsY3IoMCxuLGUwKSxsXTtjb250aW51ZX1yZXR1cm4geWUobCl9cmV0dXJuIHgwfWZ1bmN0aW9uIGkoZTAseDApe3ZhciBsPWUwJiZlMFsxXSxjMD1wcih4MCksdDA9QTAoeDApO2lmKHR5cGVvZiB0MD09XCJudW1iZXJcIilzd2l0Y2godDApe2Nhc2UgNjp2YXIgbzA9Y3IoMCxmdW5jdGlvbihKcil7dmFyIGFyPXByKEpyKTtZMChKciw2KTt2YXIgX3I9S2woMCxKciksSXI9dShzZVsxMF0sX3IpO3JldHVybiBZMChKciw3KSxbMCxJcixscihbMCxhcl0sWzAsd2UoSnIpXSwwKV19LHgwKSx3MD1vMFsxXTtyZXR1cm5bMCx3MCxbMyxbMCx3MCxvMFsyXV1dXTtjYXNlIDE0OmlmKGwpe3ZhciBfMD1nZTAoeDApLEUwPXgwWzI5XVsxXSxVMD1fMFsyXVsxXTtpZihFMCl7dmFyIGI9RTBbMV0sUjA9RTBbMl0sWD1iWzJdLHMwPVswLFswLG8oTXVbNF0sVTAsYlsxXSksWF0sUjBdO3gwWzI5XVsxXT1zMH1lbHNlIGtlKFVqcik7cmV0dXJuWzAsXzBbMV0sWzIsXzBdXX12YXIgaHI9Y3IoMCxmdW5jdGlvbihKcil7cmV0dXJuIGllKEpyKSxbMSx6NyhKcildfSx4MCksQXI9aHJbMV07cmV0dXJuIHVlKHgwLFswLEFyLDg5XSksWzAsQXIsaHJbMl1dfWVsc2Ugc3dpdGNoKHQwWzBdKXtjYXNlIDA6dmFyIG9yPXQwWzJdLFcwPVBlKHgwKSxMcj1bMix1cihjaVs2XSx4MCx0MFsxXSxvcildO3JldHVyblswLFcwLFswLFswLFcwLFswLExyLG9yLGxyKFswLGMwXSxbMCx3ZSh4MCldLDApXV1dXTtjYXNlIDI6dmFyIFRyPXQwWzFdLEhyPVRyWzRdLE9yPVRyWzNdLGZyPVRyWzJdLFJyPVRyWzFdO3JldHVybiBIciYmZ2koeDAsNDUpLFkwKHgwLFsyLFswLFJyLGZyLE9yLEhyXV0pLFswLFJyLFswLFswLFJyLFswLFswLGZyXSxPcixscihbMCxjMF0sWzAsd2UoeDApXSwwKV1dXV19dmFyIFdyPXo3KHgwKTtyZXR1cm5bMCxXclsxXSxbMSxXcl1dfWZ1bmN0aW9uIHgoZTAseDAsbCl7dmFyIGMwPXUoVm5bMl0sZTApLHQwPWMwWzFdLG8wPWMwWzJdLHcwPWkoWzAseDBdLGUwKSxfMD13MFsxXSxFMD0wLFUwPVhpKGUwLHcwWzJdKTtyZXR1cm5bMCxVMCxjcigwLGZ1bmN0aW9uKGIpe3ZhciBSMD10MigxLGIpLFg9Y3IoMCxmdW5jdGlvbihUcil7dmFyIEhyPXVyKFZuWzRdLDAsMCxUciksT3I9MCxmcj1BMChUcik9PT04Nj9IcjplYihUcixIcik7aWYobCl7dmFyIFJyPWZyWzJdLFdyPTA7aWYoUnJbMV0pdWUoVHIsWzAsXzAsajddKSxXcj0xO2Vsc2V7dmFyIEpyPTA7IVJyWzJdJiYhUnJbM10mJihXcj0xLEpyPTEpLEpyfHx1ZShUcixbMCxfMCw4MF0pfX1lbHNle3ZhciBhcj1mclsyXTtpZihhclsxXSl1ZShUcixbMCxfMCxZdF0pO2Vsc2V7dmFyIF9yPWFyWzJdLElyPTA7KCFfcnx8X3JbMl18fGFyWzNdKSYmKElyPTEpLElyJiYoYXJbM10/dWUoVHIsWzAsXzAsODFdKTp1ZShUcixbMCxfMCw4MV0pKX19cmV0dXJuWzAsT3IsZnIsbzIoVHIsdShtblsxMF0sVHIpKV19LFIwKSxzMD1YWzJdLGhyPXMwWzJdLEFyPXExKGhyKSxvcj1wNyhWbls1XSxSMCxFMCx0MCwwLEFyKTtSKFZuWzZdLFIwLG9yWzJdLDAsaHIpO3ZhciBXMD1YWzFdLExyPWxyKFswLG8wXSwwLDApO3JldHVyblswLDAsaHIsb3JbMV0sRTAsdDAsMCxzMFszXSxzMFsxXSxMcixXMF19LGUwKV19ZnVuY3Rpb24gYyhlMCl7dmFyIHgwPXUoY2lbMl0sZTApO3JldHVybiB4MFswXT09PTA/WzAseDBbMV0sdFszXV06WzAseDBbMV0seDBbMl1dfWZ1bmN0aW9uIHMoZTAseDApe3N3aXRjaCh4MFswXSl7Y2FzZSAwOnZhciBsPXgwWzFdLGMwPWxbMV07cmV0dXJuIHVlKGUwLFswLGMwLDk1XSksWzAsYzAsWzE0LGxbMl1dXTtjYXNlIDE6dmFyIHQwPXgwWzFdLG8wPXQwWzJdWzFdLHcwPXQwWzFdLF8wPTA7cmV0dXJuIGtMKG8wKSYmbjAobzAsS1FyKSYmbjAobzAsV1FyKSYmKHVlKGUwLFswLHcwLDJdKSxfMD0xKSwhXzAmJmYyKG8wKSYmVjcoZTAsWzAsdzAsNTVdKSxbMCx3MCxbMTAsdDBdXTtjYXNlIDI6cmV0dXJuIGtlKEpRcik7ZGVmYXVsdDp2YXIgRTA9eDBbMV1bMl1bMV07cmV0dXJuIHVlKGUwLFswLEUwWzFdLDk2XSksRTB9fWZ1bmN0aW9uIHAoZTAseDAsbCl7ZnVuY3Rpb24gYzAobzApe3ZhciB3MD10MigxLG8wKSxfMD1jcigwLGZ1bmN0aW9uKGhyKXt2YXIgQXI9b2koaHIsdShtblszXSxocikpO2lmKGUwKWlmKHgwKXZhciBvcj0xLFcwPTE7ZWxzZSB2YXIgb3I9aHJbMThdLFcwPTA7ZWxzZSBpZih4MCl2YXIgb3I9MCxXMD0xO2Vsc2UgdmFyIG9yPTAsVzA9MDt2YXIgTHI9dXIoVm5bNF0sb3IsVzAsaHIpLFRyPUEwKGhyKT09PTg2P0xyOmViKGhyLExyKTtyZXR1cm5bMCxBcixUcixvMihocix1KG1uWzEwXSxocikpXX0sdzApLEUwPV8wWzJdLFUwPUUwWzJdLGI9cTEoVTApLFIwPXA3KFZuWzVdLHcwLGUwLHgwLDAsYik7UihWbls2XSx3MCxSMFsyXSwwLFUwKTt2YXIgWD1fMFsxXSxzMD1scihbMCxsXSwwLDApO3JldHVyblswLDAsVTAsUjBbMV0sZTAseDAsMCxFMFszXSxFMFsxXSxzMCxYXX12YXIgdDA9MDtyZXR1cm4gZnVuY3Rpb24obzApe3JldHVybiBjcih0MCxjMCxvMCl9fWZ1bmN0aW9uIHkoZTApe3JldHVybiBZMChlMCw4NiksYyhlMCl9ZnVuY3Rpb24gVChlMCx4MCxsLGMwLHQwLG8wKXt2YXIgdzA9Y3IoWzAseDBdLGZ1bmN0aW9uKEUwKXtpZighYzAmJiF0MCl7dmFyIFUwPUEwKEUwKTtpZih0eXBlb2YgVTA9PVwibnVtYmVyXCIpe3ZhciBiPTA7aWYoODY8PVUwKXtpZihVMD09PTk4KWI9MTtlbHNlIGlmKCEoODc8PVUwKSl7dmFyIFIwPXkoRTApO3JldHVyblswLFswLGwsUjBbMV0sMF0sUjBbMl1dfX1lbHNle2lmKFUwPT09ODIpe2lmKGxbMF09PT0xKXZhciBYPWxbMV0sczA9UGUoRTApLGhyPWZ1bmN0aW9uKFJyKXt2YXIgV3I9cHIoUnIpO1kwKFJyLDgyKTt2YXIgSnI9d2UoUnIpLGFyPW8oc2VbMTldLFJyLFswLFhbMV0sWzEwLFhdXSksX3I9dShzZVsxMF0sUnIpO3JldHVyblsyLFswLDAsYXIsX3IsbHIoWzAsV3JdLFswLEpyXSwwKV1dfSxBcj1jcihbMCxYWzFdXSxocixFMCksb3I9WzAsQXIsWzAsWzAsWzAsczAsWzEwLE1sKHpRcildXSwwXSwwXV07ZWxzZSB2YXIgb3I9eShFMCk7cmV0dXJuWzAsWzAsbCxvclsxXSwxXSxvclsyXV19aWYoISgxMDw9VTApKXN3aXRjaChVMCl7Y2FzZSA0OmI9MTticmVhaztjYXNlIDE6Y2FzZSA5OnZhciBXMD1bMCxsLHMoRTAsbCksMV07cmV0dXJuWzAsVzAsdFszXV19fWlmKGIpe3ZhciBMcj1YaShFMCxsKSxUcj1bMSxMcix1KHAoYzAsdDAsbzApLEUwKV07cmV0dXJuWzAsVHIsdFszXV19fXZhciBIcj1bMCxsLHMoRTAsbCksMV07cmV0dXJuWzAsSHIsdFszXV19dmFyIE9yPVhpKEUwLGwpLGZyPVsxLE9yLHUocChjMCx0MCxvMCksRTApXTtyZXR1cm5bMCxmcix0WzNdXX0sZTApLF8wPXcwWzJdO3JldHVyblswLFswLFswLHcwWzFdLF8wWzFdXV0sXzBbMl1dfWZ1bmN0aW9uIEUoZTApe3ZhciB4MD1jcigwLGZ1bmN0aW9uKGMwKXt2YXIgdDA9cHIoYzApO1kwKGMwLDApO2Zvcih2YXIgbzA9MCx3MD1bMCwwLHRbM11dOzspe3ZhciBfMD13MFsyXSxFMD13MFsxXSxVMD1BMChjMCk7aWYodHlwZW9mIFUwPT1cIm51bWJlclwiKXt2YXIgYj0wO2lmKChVMD09PTF8fFBuPT09VTApJiYoYj0xKSxiKXt2YXIgUjA9bzA/WzAsXzBbMV0sWzAsWzAsbzBbMV0sOThdLF8wWzJdXV06XzAsWD11KHRbNl0sUjApLHMwPXllKEUwKSxocj1wcihjMCk7cmV0dXJuIFkwKGMwLDEpLFswLFswLHMwLHl1KFswLHQwXSxbMCx3ZShjMCldLGhyLDApXSxYXX19aWYoQTAoYzApPT09MTIpdmFyIEFyPXByKGMwKSxvcj1jcigwLGZ1bmN0aW9uKHkwKXtyZXR1cm4gWTAoeTAsMTIpLGMoeTApfSxjMCksVzA9b3JbMl0sTHI9VzBbMl0sVHI9bHIoWzAsQXJdLDAsMCksSHI9WzAsWzEsWzAsb3JbMV0sWzAsVzBbMV0sVHJdXV0sTHJdO2Vsc2V7dmFyIE9yPVBlKGMwKSxmcj1ZbigxLGMwKSxScj0wO2lmKHR5cGVvZiBmcj09XCJudW1iZXJcIil7dmFyIFdyPTA7aWYoODY8PWZyKWZyIT09OTgmJjg3PD1mciYmKFdyPTEpO2Vsc2UgaWYoZnIhPT04MilpZigxMDw9ZnIpV3I9MTtlbHNlIHN3aXRjaChmcil7Y2FzZSAxOmNhc2UgNDpjYXNlIDk6YnJlYWs7ZGVmYXVsdDpXcj0xfWlmKCFXcil7dmFyIGFyPTAsX3I9MDtScj0xfX1pZighUnIpdmFyIEpyPXUoVm5bMV0sYzApLGFyPUpyWzJdLF9yPUpyWzFdO3ZhciBJcj11KFZuWzJdLGMwKSxmZT1JclsxXSx2MD1vbihhcixJclsyXSksUD1BMChjMCksTD0wO2lmKCFfciYmIWZlJiZ0eXBlb2YgUCE9XCJudW1iZXJcIiYmUFswXT09PTQpe3ZhciBRPVBbM10saTA9MDtpZihuMChRLFlRcikpaWYobjAoUSxWUXIpKWkwPTE7ZWxzZXt2YXIgbDA9cHIoYzApLFMwPWkoMCxjMClbMl0sVDA9QTAoYzApLHJyPTA7aWYodHlwZW9mIFQwPT1cIm51bWJlclwiKXt2YXIgTDA9MDtpZig4Njw9VDApVDAhPT05OCYmODc8PVQwJiYoTDA9MSk7ZWxzZSBpZihUMCE9PTgyKWlmKDEwPD1UMClMMD0xO2Vsc2Ugc3dpdGNoKFQwKXtjYXNlIDE6Y2FzZSA0OmNhc2UgOTpicmVhaztkZWZhdWx0OkwwPTF9aWYoIUwwKXt2YXIgQj1UKGMwLE9yLFMwLDAsMCwwKTtycj0xfX1pZighcnIpe1hpKGMwLFMwKTt2YXIgWj10WzNdLHAwPWNyKFswLE9yXSxmdW5jdGlvbihJMCl7cmV0dXJuIHgoSTAsMCwwKX0sYzApLGIwPXAwWzJdLE8wPWxyKFswLGwwXSwwLDApLEI9WzAsWzAsWzAscDBbMV0sWzMsYjBbMV0sYjBbMl0sTzBdXV0sWl19dmFyIE0wPUJ9ZWxzZXt2YXIgZXI9cHIoYzApLHlyPWkoMCxjMClbMl0sdnI9QTAoYzApLCQwPTA7aWYodHlwZW9mIHZyPT1cIm51bWJlclwiKXt2YXIgRXI9MDtpZig4Njw9dnIpdnIhPT05OCYmODc8PXZyJiYoRXI9MSk7ZWxzZSBpZih2ciE9PTgyKWlmKDEwPD12cilFcj0xO2Vsc2Ugc3dpdGNoKHZyKXtjYXNlIDE6Y2FzZSA0OmNhc2UgOTpicmVhaztkZWZhdWx0OkVyPTF9aWYoIUVyKXt2YXIgTXI9VChjMCxPcix5ciwwLDAsMCk7JDA9MX19aWYoISQwKXtYaShjMCx5cik7dmFyIEJyPXRbM10scXI9Y3IoWzAsT3JdLGZ1bmN0aW9uKEQpe3JldHVybiB4KEQsMCwxKX0sYzApLGpyPXFyWzJdLCRyPWxyKFswLGVyXSwwLDApLE1yPVswLFswLFswLHFyWzFdLFsyLGpyWzFdLGpyWzJdLCRyXV1dLEJyXX12YXIgTTA9TXJ9aWYoIWkwKXt2YXIgbmU9TTA7TD0xfX1pZighTCl2YXIgbmU9VChjMCxPcixpKDAsYzApWzJdLF9yLGZlLHYwKTt2YXIgSHI9bmV9dmFyIFFyPUhyWzFdLGJlPTA7aWYoUXJbMF09PT0xJiZBMChjMCk9PT05KXt2YXIgYWU9WzAsUGUoYzApXTtiZT0xfWlmKCFiZSl2YXIgYWU9MDt2YXIgcGU9byh0WzVdLEhyWzJdLF8wKSxvZT1BMChjMCksY2U9MDtpZih0eXBlb2Ygb2U9PVwibnVtYmVyXCIpe3ZhciBnZT1vZS0yfDAscTA9MDtpZihYdDxnZT4+PjA/VDc8KGdlKzF8MCk+Pj4wJiYocTA9MSk6Z2U9PT03P2llKGMwKTpxMD0xLCFxMCl7dmFyIEZyPXBlO2NlPTF9fWlmKCFjZSl7dmFyIF89YUwoZFJyLDkpLGs9bGUwKFswLF9dLEEwKGMwKSksST1bMCxQZShjMCksa107eHUoYzAsOCk7dmFyIEZyPW8odFs0XSxJLHBlKX12YXIgbzA9YWUsdzA9WzAsWzAsUXIsRTBdLEZyXX19LGUwKSxsPXgwWzJdO3JldHVyblswLHgwWzFdLGxbMV0sbFsyXV19ZnVuY3Rpb24gZChlMCx4MCxsLGMwKXt2YXIgdDA9bFsyXVsxXSxvMD1sWzFdO2lmKHFuKHQwLFhRcikpcmV0dXJuIHVlKGUwLFswLG8wLFsyMSx0MCwwLFFZPT09YzA/MTowLDFdXSkseDA7dmFyIHcwPW8oTDlbMzJdLHQwLHgwKTtpZih3MCl7dmFyIF8wPXcwWzFdLEUwPTA7cmV0dXJuIFNFPT09YzA/Rmg9PT1fMCYmKEUwPTEpOkZoPT09YzAmJlNFPT09XzAmJihFMD0xKSxFMHx8dWUoZTAsWzAsbzAsWzIwLHQwXV0pLHVyKEw5WzRdLHQwLEtYLHgwKX1yZXR1cm4gdXIoTDlbNF0sdDAsYzAseDApfWZ1bmN0aW9uIHcoZTAseDApe3JldHVybiBjcigwLGZ1bmN0aW9uKGwpe3ZhciBjMD14MCYmcHIobCk7WTAobCw1Mik7Zm9yKHZhciB0MD0wOzspe3ZhciBvMD1bMCxjcigwLGZ1bmN0aW9uKEUwKXt2YXIgVTA9dShtblsyXSxFMCk7aWYoQTAoRTApPT09OTgpdmFyIGI9JHQoRTApLFIwPWZ1bmN0aW9uKHMwLGhyKXtyZXR1cm4gbyhRZShzMCxOdiw4MSksczAsaHIpfSxYPW8oYlsyXSxVMCxSMCk7ZWxzZSB2YXIgWD1VMDtyZXR1cm5bMCxYLHUobW5bNF0sRTApXX0sbCksdDBdLHcwPUEwKGwpO2lmKHR5cGVvZiB3MD09XCJudW1iZXJcIiYmdzA9PT05KXtZMChsLDkpO3ZhciB0MD1vMDtjb250aW51ZX12YXIgXzA9eWUobzApO3JldHVyblswLF8wLGxyKFswLGMwXSwwLDApXX19LGUwKX1mdW5jdGlvbiBHKGUwLHgwKXtyZXR1cm4geDAmJnVlKGUwLFswLHgwWzFdWzFdLDddKX1mdW5jdGlvbiBBKGUwLHgwKXtyZXR1cm4geDAmJnVlKGUwLFswLHgwWzFdLDY4XSl9ZnVuY3Rpb24gUyhlMCx4MCxsLGMwLHQwLG8wLHcwLF8wLEUwLFUwKXtmb3IoOzspe3ZhciBiPUEwKGUwKSxSMD0wO2lmKHR5cGVvZiBiPT1cIm51bWJlclwiKXt2YXIgWD1iLTF8MCxzMD0wO2lmKDc8WD4+PjApe3ZhciBocj1YLTgxfDA7aWYoNDxocj4+PjApczA9MTtlbHNlIHN3aXRjaChocil7Y2FzZSAzOlN0KDAsZTApLGllKGUwKTtjb250aW51ZTtjYXNlIDA6Y2FzZSA0OmJyZWFrO2RlZmF1bHQ6czA9MX19ZWxzZSA1PChYLTF8MCk+Pj4wfHwoczA9MSk7IXMwJiYhdDAmJiFvMCYmKFIwPTEpfWlmKCFSMCl7dmFyIEFyPUEwKGUwKSxvcj0wO2lmKHR5cGVvZiBBcj09XCJudW1iZXJcIil7dmFyIFcwPTA7aWYoQXIhPT00JiZBciE9PTk4JiYob3I9MSxXMD0xKSwhVzApdmFyIFRyPTB9ZWxzZSBvcj0xO2lmKG9yKXZhciBMcj14MihlMCksVHI9THImJjE7aWYoIVRyKXtBKGUwLF8wKSxHKGUwLEUwKTt2YXIgSHI9MDtpZighdzApe3ZhciBPcj0wO3N3aXRjaChjMFswXSl7Y2FzZSAwOnZhciBmcj1jMFsxXVsyXVsxXSxScj0wO3R5cGVvZiBmciE9XCJudW1iZXJcIiYmZnJbMF09PT0wJiYobjAoZnJbMV0salFyKSYmKE9yPTEpLFJyPTEpLFJyfHwoT3I9MSk7YnJlYWs7Y2FzZSAxOm4wKGMwWzFdWzJdWzFdLEdRcikmJihPcj0xKTticmVhaztkZWZhdWx0Ok9yPTF9aWYoIU9yKXt2YXIgV3I9dDIoMixlMCksSnI9MDtIcj0xfX1pZighSHIpdmFyIFdyPXQyKDEsZTApLEpyPTE7dmFyIGFyPVhpKFdyLGMwKSxfcj1jcigwLGZ1bmN0aW9uKFMwKXt2YXIgVDA9Y3IoMCxmdW5jdGlvbihwMCl7dmFyIGIwPW9pKHAwLHUobW5bM10scDApKTtpZih0MClpZihvMCl2YXIgTzA9MSxNMD0xO2Vsc2UgdmFyIE8wPXAwWzE4XSxNMD0wO2Vsc2UgaWYobzApdmFyIE8wPTAsTTA9MTtlbHNlIHZhciBPMD0wLE0wPTA7dmFyIGVyPXVyKFZuWzRdLE8wLE0wLHAwKSx5cj1BMChwMCk9PT04Nj9lcjplYihwMCxlciksdnI9eXJbMl0sJDA9dnJbMV0sRXI9MDtpZigkMCYmSnI9PT0wKXt1ZShwMCxbMCwkMFsxXVsxXSxpc10pO3ZhciBNcj1bMCx5clsxXSxbMCwwLHZyWzJdLHZyWzNdLHZyWzRdXV07RXI9MX1pZighRXIpdmFyIE1yPXlyO3JldHVyblswLGIwLE1yLG8yKHAwLHUobW5bMTBdLHAwKSldfSxTMCkscnI9VDBbMl0sTDA9cnJbMl0sQj1xMShMMCksWj1wNyhWbls1XSxTMCx0MCxvMCwwLEIpO3JldHVybiBSKFZuWzZdLFMwLFpbMl0sMCxMMCksWzAsMCxMMCxaWzFdLHQwLG8wLDAscnJbM10scnJbMV0sMCxUMFsxXV19LFdyKSxJcj1bMCxKcixhcixfcix3MCxsLGxyKFswLFUwXSwwLDApXTtyZXR1cm5bMCxbMCx5dCh4MCxfclsxXSksSXJdXX19dmFyIGZlPWNyKFswLHgwXSxmdW5jdGlvbihTMCl7dmFyIFQwPXUobW5bMTBdLFMwKSxycj1BMChTMCk7aWYoXzApe3ZhciBMMD0wO2lmKHR5cGVvZiBycj09XCJudW1iZXJcIiYmcnI9PT04Mil7amUoUzAsNjkpLGllKFMwKTt2YXIgQj0wfWVsc2UgTDA9MTtpZihMMCl2YXIgQj0wfWVsc2V7dmFyIFo9MDtpZih0eXBlb2YgcnI9PVwibnVtYmVyXCImJnJyPT09ODIpe2llKFMwKTt2YXIgcDA9dDIoMSxTMCksQj1bMCx1KHNlWzddLHAwKV19ZWxzZSBaPTE7aWYoWil2YXIgQj0xfXZhciBiMD1BMChTMCksTzA9MDtpZih0eXBlb2YgYjA9PVwibnVtYmVyXCImJiEoOTw9YjApKXN3aXRjaChiMCl7Y2FzZSA4OmllKFMwKTt2YXIgTTA9QTAoUzApLGVyPTA7aWYodHlwZW9mIE0wPT1cIm51bWJlclwiKXt2YXIgeXI9MDtpZihNMCE9PTEmJlBuIT09TTAmJihlcj0xLHlyPTEpLCF5cil2YXIgJDA9d2UoUzApfWVsc2UgZXI9MTtpZihlcil2YXIgdnI9eDcoUzApLCQwPXZyJiZNcyhTMCk7dmFyIEVyPVswLGMwLFQwLEIsJDBdO08wPTE7YnJlYWs7Y2FzZSA0OmNhc2UgNjpTdCgwLFMwKTt2YXIgRXI9WzAsYzAsVDAsQiwwXTtPMD0xO2JyZWFrfWlmKCFPMCl7dmFyIE1yPUEwKFMwKSxCcj0wO2lmKHR5cGVvZiBNcj09XCJudW1iZXJcIil7dmFyIHFyPTA7aWYoTXIhPT0xJiZQbiE9PU1yJiYoQnI9MSxxcj0xKSwhcXIpdmFyIGpyPVswLDAsZnVuY3Rpb24ocTAsRnIpe3JldHVybiBxMH1dfWVsc2UgQnI9MTtpZihCcil2YXIganI9eDcoUzApP3JiKFMwKTpOOShTMCk7aWYodHlwZW9mIEI9PVwibnVtYmVyXCIpaWYoVDBbMF09PT0wKXZhciAkcj1mdW5jdGlvbihfLGspe3JldHVybiBvKFFlKF8scVksODMpLF8sayl9LGJlPUIsYWU9VDAscGU9byhqclsyXSxjMCwkcik7ZWxzZSB2YXIgbmU9ZnVuY3Rpb24oXyxrKXtyZXR1cm4gbyhRZShfLE9FLDg0KSxfLGspfSxiZT1CLGFlPVsxLG8oanJbMl0sVDBbMV0sbmUpXSxwZT1jMDtlbHNlIHZhciBRcj1mdW5jdGlvbihnZSxxMCl7cmV0dXJuIG8oUWUoZ2UsRGksODUpLGdlLHEwKX0sYmU9WzAsbyhqclsyXSxCWzFdLFFyKV0sYWU9VDAscGU9YzA7dmFyIEVyPVswLHBlLGFlLGJlLDBdfXZhciBvZT1scihbMCxVMF0sWzAsRXJbNF1dLDApO3JldHVyblswLEVyWzFdLEVyWzJdLEVyWzNdLG9lXX0sZTApLHYwPWZlWzJdLFA9djBbNF0sTD12MFszXSxRPXYwWzJdLGkwPXYwWzFdLGwwPWZlWzFdO3JldHVybiBpMFswXT09PTI/WzIsWzAsbDAsWzAsaTBbMV0sTCxRLHcwLEUwLFBdXV06WzEsWzAsbDAsWzAsaTAsTCxRLHcwLEUwLFBdXV19fWZ1bmN0aW9uIE0oZTAseDApe3ZhciBsPVluKGUwLHgwKTtpZih0eXBlb2YgbD09XCJudW1iZXJcIil7dmFyIGMwPTA7aWYoODY8PWwpKGw9PT05OHx8ISg4Nzw9bCkpJiYoYzA9MSk7ZWxzZSBpZihsPT09ODIpYzA9MTtlbHNlIGlmKCEoOTw9bCkpc3dpdGNoKGwpe2Nhc2UgMTpjYXNlIDQ6Y2FzZSA4OmMwPTE7YnJlYWt9aWYoYzApcmV0dXJuIDF9cmV0dXJuIDB9dmFyIEs9MDtmdW5jdGlvbiBWKGUwKXtyZXR1cm4gTShLLGUwKX1mdW5jdGlvbiBmMChlMCx4MCxsLGMwKXt2YXIgdDA9ZTAmJmUwWzFdLG8wPV9zKDEseDApLHcwPW9uKHQwLGUobzApKSxfMD1wcihvMCk7WTAobzAsNDApO3ZhciBFMD1GOSgxLG8wKSxVMD1BMChFMCksYj0wO2lmKGwmJnR5cGVvZiBVMD09XCJudW1iZXJcIil7dmFyIFIwPTA7aWYoNTI8PVUwP1UwIT09OTgmJjUzPD1VMCYmKFIwPTEpOlUwIT09NDEmJlUwJiYoUjA9MSksIVIwKXt2YXIgQXI9MDtiPTF9fWlmKCFiKWlmKEcxKG8wKSl2YXIgWD1vKHNlWzEzXSwwLEUwKSxzMD0kdChvMCksaHI9ZnVuY3Rpb24odjAsUCl7cmV0dXJuIG8oUWUodjAsTnYsODgpLHYwLFApfSxBcj1bMCxvKHMwWzJdLFgsaHIpXTtlbHNle2JlMChvMCxOUXIpO3ZhciBBcj1bMCxbMCxQZShvMCksQ1FyXV19dmFyIG9yPXUobW5bM10sbzApO2lmKG9yKXZhciBXMD0kdChvMCksTHI9ZnVuY3Rpb24odjAsUCl7cmV0dXJuIG8oUWUodjAsYkYsODYpLHYwLFApfSxUcj1bMCxvKFcwWzJdLG9yWzFdLExyKV07ZWxzZSB2YXIgVHI9b3I7dmFyIEhyPXByKG8wKSxPcj14dShvMCw0MSk7aWYoT3IpdmFyIGZyPWNyKDAsZnVuY3Rpb24odjApe3ZhciBQPW1MKDAsdjApLEw9dShjaVs1XSxQKTtpZihBMCh2MCk9PT05OCl2YXIgUT0kdCh2MCksaTA9ZnVuY3Rpb24oVDAscnIpe3JldHVybiBvKFFlKFQwLERpLDgyKSxUMCxycil9LGwwPW8oUVsyXSxMLGkwKTtlbHNlIHZhciBsMD1MO3ZhciBTMD11KG1uWzRdLHYwKTtyZXR1cm5bMCxsMCxTMCxscihbMCxIcl0sMCwwKV19LG8wKSxScj1mclsxXSxXcj0kdChvMCksSnI9ZnVuY3Rpb24odjAsUCl7cmV0dXJuIHVyKFFlKHYwLC02NjM0NDc3OTAsODcpLHYwLFJyLFApfSxhcj1bMCxbMCxScixvKFdyWzJdLGZyWzJdLEpyKV1dO2Vsc2UgdmFyIGFyPU9yO3ZhciBfcj1BMChvMCk9PT01Mj8xOjA7aWYoX3IpezEtZnUobzApJiZqZShvMCwxNik7dmFyIElyPVswLGtlMChvMCx3KG8wLDEpKV19ZWxzZSB2YXIgSXI9X3I7dmFyIGZlPWNyKDAsZnVuY3Rpb24odjApe3ZhciBQPXByKHYwKTtpZih4dSh2MCwwKSl7djBbMjldWzFdPVswLFswLE11WzFdLDBdLHYwWzI5XVsxXV07Zm9yKHZhciBMPTAsUT1MOVsxXSxpMD0wOzspe3ZhciBsMD1BMCh2MCk7aWYodHlwZW9mIGwwPT1cIm51bWJlclwiKXt2YXIgUzA9bDAtMnwwO2lmKFh0PFMwPj4+MCl7aWYoIShUNzwoUzArMXwwKT4+PjApKXt2YXIgVDA9eWUoaTApLHJyPWZ1bmN0aW9uKG91LEJ1KXtyZXR1cm4gdShtbChmdW5jdGlvbihLNyl7cmV0dXJuIDEtbyhNdVszXSxLN1sxXSxvdSl9KSxCdSl9LEwwPXYwWzI5XVsxXTtpZihMMCl7dmFyIEI9TDBbMV0sWj1CWzFdO2lmKEwwWzJdKXt2YXIgcDA9TDBbMl0sYjA9cnIoWixCWzJdKSxPMD1ibChwMCksTTA9YXoocDApLGVyPW9uKE8wWzJdLGIwKTt2MFsyOV1bMV09WzAsWzAsTzBbMV0sZXJdLE0wXX1lbHNle3ZhciB5cj1ycihaLEJbMl0pO0R1KGZ1bmN0aW9uKG91KXtyZXR1cm4gdWUodjAsWzAsb3VbMl0sWzIyLG91WzFdXV0pfSx5ciksdjBbMjldWzFdPTB9fWVsc2Uga2UoSGpyKTtZMCh2MCwxKTt2YXIgdnI9QTAodjApLCQwPTA7aWYoIWMwKXt2YXIgRXI9MDtpZih0eXBlb2YgdnI9PVwibnVtYmVyXCImJih2cj09PTF8fFBuPT09dnIpJiYoRXI9MSksIUVyKXt2YXIgTXI9eDcodjApO2lmKE1yKXt2YXIgQnI9TXModjApOyQwPTF9ZWxzZXt2YXIgQnI9TXI7JDA9MX19fWlmKCEkMCl2YXIgQnI9d2UodjApO3JldHVyblswLFQwLGxyKFswLFBdLFswLEJyXSwwKV19fWVsc2UgaWYoUzA9PT02KXtZMCh2MCw4KTtjb250aW51ZX19dmFyIHFyPVBlKHYwKSxqcj1lKHYwKSwkcj1BMCh2MCksbmU9MDtpZih0eXBlb2YgJHI9PVwibnVtYmVyXCImJiRyPT09NjAmJiFNKDEsdjApKXt2YXIgUXI9WzAsUGUodjApXSxiZT1wcih2MCk7aWUodjApO3ZhciBhZT1iZSxwZT1RcjtuZT0xfWlmKCFuZSl2YXIgYWU9MCxwZT0wO3ZhciBvZT1ZbigxLHYwKSE9PTQ/MTowO2lmKG9lKXZhciBjZT1ZbigxLHYwKSE9PTk4PzE6MCxnZT1jZSYmKEEwKHYwKT09PTQyPzE6MCk7ZWxzZSB2YXIgZ2U9b2U7aWYoZ2Upe3ZhciBxMD1wcih2MCk7aWUodjApO3ZhciBGcj1xMH1lbHNlIHZhciBGcj1nZTt2YXIgXz1BMCh2MCk9PT02ND8xOjA7aWYoXyl2YXIgaz0xLU0oMSx2MCksST1rJiYxLUpsKDEsdjApO2Vsc2UgdmFyIEk9XztpZihJKXt2YXIgVT1wcih2MCk7aWUodjApO3ZhciBZPVV9ZWxzZSB2YXIgWT1JO3ZhciB5MD11KFZuWzJdLHYwKSxQMD15MFsxXSxJMD11cihWblszXSx2MCxJLFAwKSxEPTA7aWYoIVAwJiZJMCl7dmFyIHUwPXUoVm5bMl0sdjApLFgwPXUwWzJdLEowPXUwWzFdO0Q9MX1pZighRCl2YXIgWDA9eTBbMl0sSjA9UDA7dmFyIGlyPXBsKFswLGFlLFswLEZyLFswLFksWzAsWDAsMF1dXV0pLFEwPUEwKHYwKSxGMD0wO2lmKCFJJiYhSjAmJnR5cGVvZiBRMCE9XCJudW1iZXJcIiYmUTBbMF09PT00KXt2YXIgU3I9UTBbM107aWYobjAoU3IsTVFyKSl7aWYoIW4wKFNyLEJRcikpe3ZhciBtcj1wcih2MCksQ3I9aShxUXIsdjApWzJdO2lmKFYodjApKXt2YXIgSWU9Uyh2MCxxcixqcixDcixJLEowLGdlLHBlLEkwLGlyKTtGMD0xfWVsc2V7QSh2MCxwZSksRyh2MCxJMCksWGkodjAsQ3IpO3ZhciBzcj1vbihpcixtciksUHI9Y3IoWzAscXJdLGZ1bmN0aW9uKEJ1KXtyZXR1cm4geChCdSwxLDApfSx2MCksSzA9UHJbMl0sVXI9bHIoWzAsc3JdLDAsMCksSWU9WzAsWzAsUHJbMV0sWzAsMyxLMFsxXSxLMFsyXSxnZSxqcixVcl1dXTtGMD0xfX19ZWxzZXt2YXIgaDA9cHIodjApLEtyPWkoVVFyLHYwKVsyXTtpZihWKHYwKSl7dmFyIEllPVModjAscXIsanIsS3IsSSxKMCxnZSxwZSxJMCxpcik7RjA9MX1lbHNle0EodjAscGUpLEcodjAsSTApLFhpKHYwLEtyKTt2YXIgcmU9b24oaXIsaDApLHhlPWNyKFswLHFyXSxmdW5jdGlvbihCdSl7cmV0dXJuIHgoQnUsMSwxKX0sdjApLFJlPXhlWzJdLHZlPWxyKFswLHJlXSwwLDApLEllPVswLFswLHhlWzFdLFswLDIsUmVbMV0sUmVbMl0sZ2UsanIsdmVdXV07RjA9MX19fWlmKCFGMCl2YXIgSWU9Uyh2MCxxcixqcixpKEhRcix2MClbMl0sSSxKMCxnZSxwZSxJMCxpcik7c3dpdGNoKEllWzBdKXtjYXNlIDA6dmFyIEdlPUllWzFdLE1lPUdlWzJdO3N3aXRjaChNZVsxXSl7Y2FzZSAwOmlmKE1lWzRdKXZhciBGdD1RLEN0PUw7ZWxzZXtMJiZ1ZSh2MCxbMCxHZVsxXSw4N10pO3ZhciBGdD1RLEN0PTF9YnJlYWs7Y2FzZSAxOnZhciBhbj1NZVsyXSxXZT1hblswXT09PTI/ZCh2MCxRLGFuWzFdLFFZKTpRLEZ0PVdlLEN0PUw7YnJlYWs7Y2FzZSAyOnZhciBBZT1NZVsyXSxjbj1BZVswXT09PTI/ZCh2MCxRLEFlWzFdLFNFKTpRLEZ0PWNuLEN0PUw7YnJlYWs7ZGVmYXVsdDp2YXIgcm49TWVbMl0sa249cm5bMF09PT0yP2QodjAsUSxyblsxXSxGaCk6USxGdD1rbixDdD1MfWJyZWFrO2Nhc2UgMTp2YXIgdm49SWVbMV1bMl0sTmU9dm5bNF0sSmU9dm5bMV0sZW49MDtzd2l0Y2goSmVbMF0pe2Nhc2UgMDp2YXIgX249SmVbMV0sQ249X25bMl1bMV0sSG49MDtpZih0eXBlb2YgQ24hPVwibnVtYmVyXCImJkNuWzBdPT09MCl7dmFyIHZ0PUNuWzFdLE50PV9uWzFdO2VuPTEsSG49MX1Ibnx8KGVuPTIpO2JyZWFrO2Nhc2UgMTp2YXIgRm49SmVbMV0sdnQ9Rm5bMl1bMV0sTnQ9Rm5bMV07ZW49MTticmVhaztjYXNlIDI6a2UoUFFyKTticmVhaztkZWZhdWx0OmVuPTJ9c3dpdGNoKGVuKXtjYXNlIDE6dmFyIGd0PXFuKHZ0LERRcik7aWYoZ3QpdmFyIHF0PWd0O2Vsc2UgdmFyIFp0PXFuKHZ0LExRcikscXQ9WnQmJk5lO3F0JiZ1ZSh2MCxbMCxOdCxbMjEsdnQsTmUsMCwwXV0pO2JyZWFrO2Nhc2UgMjpicmVha312YXIgRnQ9USxDdD1MO2JyZWFrO2RlZmF1bHQ6dmFyIEZ0PWQodjAsUSxJZVsxXVsyXVsxXSxLWCksQ3Q9TH12YXIgTD1DdCxRPUZ0LGkwPVswLEllLGkwXX19cmV0dXJuIEIxKHYwLDApLFJRcn0sbzApO3JldHVyblswLEFyLGZlLFRyLGFyLElyLHcwLGxyKFswLF8wXSwwLDApXX1mdW5jdGlvbiBtMChlMCx4MCl7cmV0dXJuIGNyKDAsZnVuY3Rpb24obCl7cmV0dXJuWzIsZjAoWzAseDBdLGwsbFs3XSwwKV19LGUwKX1mdW5jdGlvbiBrMChlMCl7cmV0dXJuWzUsZjAoMCxlMCwxLDEpXX12YXIgZzA9MDtyZXR1cm5bMCxpLEUsbTAsZnVuY3Rpb24oZTApe3JldHVybiBjcihnMCxrMCxlMCl9LHcsZV19KFI5KSxodD1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKF8pe3ZhciBrPXUoVm5bMTBdLF8pO2lmKF9bNV0pTTEoXyxrWzFdKTtlbHNle3ZhciBJPWtbMl0sVT0wO2lmKElbMF09PT0yMyl7dmFyIFk9SVsxXSx5MD1rWzFdLFAwPTA7WVs0XT91ZShfLFswLHkwLDYxXSk6WVs1XT91ZShfLFswLHkwLDYyXSk6KFU9MSxQMD0xKX1lbHNlIFU9MX1yZXR1cm4ga31mdW5jdGlvbiBlKF8sayxJKXt2YXIgVT1JWzJdWzFdLFk9SVsxXTtpZihuMChVLFowZSkpe2lmKG4wKFUsUTBlKSlyZXR1cm4gbjAoVSxycmUpP2YyKFUpP1Y3KGssWzAsWSw1NV0pOmtMKFUpP3VlKGssWzAsWSxbMTAsTWwoVSldXSk6XyYmanMoVSk/VjcoayxbMCxZLF9bMV1dKTowOmtbMTddP3VlKGssWzAsWSwyXSk6VjcoayxbMCxZLDU1XSk7aWYoa1s1XSlyZXR1cm4gVjcoayxbMCxZLDU1XSk7dmFyIHkwPWtbMTRdO3JldHVybiB5MCYmdWUoayxbMCxZLFsxMCxNbChVKV1dKX12YXIgUDA9a1sxOF07cmV0dXJuIFAwJiZ1ZShrLFswLFksMl0pfWZ1bmN0aW9uIGkoXyxrKXt2YXIgST1rWzRdLFU9a1szXSxZPWtbMl0seTA9a1sxXTtJJiZnaShfLDQ1KTt2YXIgUDA9cHIoXyk7cmV0dXJuIFkwKF8sWzIsWzAseTAsWSxVLEldXSksWzAseTAsWzAsWSxVLGxyKFswLFAwXSxbMCx3ZShfKV0sMCldXX1mdW5jdGlvbiB4KF8sayxJKXt2YXIgVT1fP19bMV06VzBlLFk9az9rWzFdOjEseTA9QTAoSSk7aWYodHlwZW9mIHkwPT1cIm51bWJlclwiKXt2YXIgUDA9eTAtMnwwO2lmKFh0PFAwPj4+MCl7aWYoIShUNzwoUDArMXwwKT4+PjApKXt2YXIgSTA9ZnVuY3Rpb24oWDAsSjApe3JldHVybiBYMH07cmV0dXJuWzEsWzAsd2UoSSksSTBdXX19ZWxzZSBpZihQMD09PTYpe2llKEkpO3ZhciBEPUEwKEkpO2lmKHR5cGVvZiBEPT1cIm51bWJlclwiKXt2YXIgdTA9MDtpZigoRD09PTF8fFBuPT09RCkmJih1MD0xKSx1MClyZXR1cm5bMCx3ZShJKV19cmV0dXJuIHg3KEkpP1swLE1zKEkpXTpKMGV9fXJldHVybiB4NyhJKT9bMSxyYihJKV06KFkmJlN0KFswLFVdLEkpLCQwZSl9ZnVuY3Rpb24gYyhfKXt2YXIgaz1BMChfKTtpZih0eXBlb2Ygaz09XCJudW1iZXJcIil7dmFyIEk9MDtpZigoaz09PTF8fFBuPT09aykmJihJPTEpLEkpe3ZhciBVPWZ1bmN0aW9uKFkseTApe3JldHVybiBZfTtyZXR1cm5bMCx3ZShfKSxVXX19cmV0dXJuIHg3KF8pP3JiKF8pOk45KF8pfWZ1bmN0aW9uIHMoXyxrLEkpe3ZhciBVPXgoMCwwLGspO2lmKFVbMF09PT0wKXJldHVyblswLFVbMV0sSV07dmFyIFk9eWUoSSk7aWYoWSl2YXIgeTA9ZnVuY3Rpb24oRCx1MCl7cmV0dXJuIHVyKFFlKEQsNjM0ODcyNDY4LDg5KSxELF8sdTApfSxQMD1vKFVbMV1bMl0sWVsxXSx5MCksSTA9eWUoWzAsUDAsWVsyXV0pO2Vsc2UgdmFyIEkwPVk7cmV0dXJuWzAsMCxJMF19dmFyIHA9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LHk9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LFQ9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LEU9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LGQ9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LHc9ZnVuY3Rpb24gXyhrLEkpe3JldHVybiBfLmZ1bihrLEkpfSxHPWZ1bmN0aW9uIF8oayl7cmV0dXJuIF8uZnVuKGspfSxBPWZ1bmN0aW9uIF8oayl7cmV0dXJuIF8uZnVuKGspfSxTPWZ1bmN0aW9uIF8oayxJLFUpe3JldHVybiBfLmZ1bihrLEksVSl9LE09ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LEs9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LFY9ZnVuY3Rpb24gXyhrLEkpe3JldHVybiBfLmZ1bihrLEkpfSxmMD1mdW5jdGlvbiBfKGspe3JldHVybiBfLmZ1bihrKX0sbTA9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LGswPWZ1bmN0aW9uIF8oayxJKXtyZXR1cm4gXy5mdW4oayxJKX0sZzA9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LGUwPWZ1bmN0aW9uIF8oayxJKXtyZXR1cm4gXy5mdW4oayxJKX0seDA9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LGw9ZnVuY3Rpb24gXyhrLEkpe3JldHVybiBfLmZ1bihrLEkpfSxjMD1mdW5jdGlvbiBfKGspe3JldHVybiBfLmZ1bihrKX0sdDA9ZnVuY3Rpb24gXyhrLEkpe3JldHVybiBfLmZ1bihrLEkpfSxvMD1mdW5jdGlvbiBfKGssSSl7cmV0dXJuIF8uZnVuKGssSSl9LHcwPWZ1bmN0aW9uIF8oayxJKXtyZXR1cm4gXy5mdW4oayxJKX0sXzA9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gXy5mdW4oayl9LEUwPWZ1bmN0aW9uIF8oayl7cmV0dXJuIF8uZnVuKGspfSxVMD1mdW5jdGlvbiBfKGssSSxVKXtyZXR1cm4gXy5mdW4oayxJLFUpfSxiPWZ1bmN0aW9uIF8oayxJKXtyZXR1cm4gXy5mdW4oayxJKX0sUjA9ZnVuY3Rpb24gXyhrLEkpe3JldHVybiBfLmZ1bihrLEkpfSxYPWZ1bmN0aW9uIF8oayl7cmV0dXJuIF8uZnVuKGspfTtmdW5jdGlvbiBzMChfKXt2YXIgaz1wcihfKTtZMChfLDU5KTt2YXIgST1BMChfKT09PTg/MTowLFU9SSYmd2UoXyksWT14KDAsMCxfKSx5MD1ZWzBdPT09MD9ZWzFdOllbMV1bMV07cmV0dXJuWzQsWzAsbHIoWzAsa10sWzAsb24oVSx5MCldLDApXV19dmFyIGhyPTA7ZnVuY3Rpb24gQXIoXyl7cmV0dXJuIGNyKGhyLHMwLF8pfWZ1bmN0aW9uIG9yKF8pe3ZhciBrPXByKF8pO1kwKF8sMzcpO3ZhciBJPXpsKDEsXyksVT11KHNlWzJdLEkpLFk9MS1fWzVdLHkwPVkmJm5iKFUpO3kwJiZNMShfLFVbMV0pO3ZhciBQMD13ZShfKTtZMChfLDI1KTt2YXIgSTA9d2UoXyk7WTAoXyw0KTt2YXIgRD11KHNlWzddLF8pO1kwKF8sNSk7dmFyIHUwPUEwKF8pPT09OD8xOjAsWDA9dTAmJndlKF8pLEowPXgoMCxLMGUsXyksaXI9SjBbMF09PT0wP29uKFgwLEowWzFdKTpKMFsxXVsxXTtyZXR1cm5bMTQsWzAsVSxELGxyKFswLGtdLFswLG9uKFAwLG9uKEkwLGlyKSldLDApXV19dmFyIFcwPTA7ZnVuY3Rpb24gTHIoXyl7cmV0dXJuIGNyKFcwLG9yLF8pfWZ1bmN0aW9uIFRyKF8sayxJKXt2YXIgVT1JWzJdWzFdO2lmKFUmJiFVWzFdWzJdWzJdKXt2YXIgWT1VWzJdO2lmKCFZKXJldHVybiBZfXJldHVybiB1ZShfLFswLElbMV0sa10pfWZ1bmN0aW9uIEhyKF8sayl7dmFyIEk9MS1fWzVdLFU9SSYmbmIoayk7cmV0dXJuIFUmJk0xKF8sa1sxXSl9ZnVuY3Rpb24gT3IoXyl7dmFyIGs9cHIoXyk7WTAoXywzOSk7dmFyIEk9X1sxOF0sVT1JJiZ4dShfLDY1KSxZPW9uKGsscHIoXykpO1kwKF8sNCk7dmFyIHkwPWxyKFswLFldLDAsMCksUDA9S2woMSxfKSxJMD1BMChQMCksRD0wO2lmKHR5cGVvZiBJMD09XCJudW1iZXJcIilpZigyNDw9STApaWYoMjk8PUkwKUQ9MTtlbHNlIHN3aXRjaChJMC0yNHwwKXtjYXNlIDA6dmFyIHUwPWNyKDAsVm5bOV0sUDApLFgwPXUwWzJdLEowPWxyKFswLFgwWzJdXSwwLDApLFByPVgwWzNdLEswPVswLFsxLFswLHUwWzFdLFswLFgwWzFdLDAsSjBdXV1dO2JyZWFrO2Nhc2UgMzp2YXIgaXI9Y3IoMCxWbls4XSxQMCksUTA9aXJbMl0sRjA9bHIoWzAsUTBbMl1dLDAsMCksUHI9UTBbM10sSzA9WzAsWzEsWzAsaXJbMV0sWzAsUTBbMV0sMixGMF1dXV07YnJlYWs7Y2FzZSA0OnZhciBTcj1jcigwLFZuWzddLFAwKSxtcj1TclsyXSxDcj1scihbMCxtclsyXV0sMCwwKSxQcj1tclszXSxLMD1bMCxbMSxbMCxTclsxXSxbMCxtclsxXSwxLENyXV1dXTticmVhaztkZWZhdWx0OkQ9MX1lbHNlIGlmKEkwPT09OCl2YXIgUHI9MCxLMD0wO2Vsc2UgRD0xO2Vsc2UgRD0xO2lmKEQpdmFyIHNyPUY5KDEsUDApLFByPTAsSzA9WzAsWzAsdShzZVs4XSxzcildXTt2YXIgVXI9QTAoXyk7aWYodHlwZW9mIFVyPT1cIm51bWJlclwiKXtpZihVcj09PTE3KXtpZihLMCl7dmFyIGgwPUswWzFdO2lmKGgwWzBdPT09MCl2YXIgS3I9WzEsdXIodFsyXSxWMGUsXyxoMFsxXSldO2Vsc2V7dmFyIHJlPWgwWzFdO1RyKF8sMjgscmUpO3ZhciBLcj1bMCxyZV19VT9ZMChfLDYzKTpZMChfLDE3KTt2YXIgeGU9dShzZVs3XSxfKTtZMChfLDUpO3ZhciBSZT16bCgxLF8pLHZlPXUoc2VbMl0sUmUpO3JldHVybiBIcihfLHZlKSxbMjEsWzAsS3IseGUsdmUsMCx5MF1dfXRocm93WzAsU24sejBlXX1pZihVcj09PTYzKXtpZihLMCl7dmFyIEllPUswWzFdO2lmKEllWzBdPT09MCl2YXIgR2U9WzEsdXIodFsyXSxYMGUsXyxJZVsxXSldO2Vsc2V7dmFyIE1lPUllWzFdO1RyKF8sMjksTWUpO3ZhciBHZT1bMCxNZV19WTAoXyw2Myk7dmFyIGFuPXUoc2VbMTBdLF8pO1kwKF8sNSk7dmFyIFdlPXpsKDEsXyksQWU9dShzZVsyXSxXZSk7cmV0dXJuIEhyKF8sQWUpLFsyMixbMCxHZSxhbixBZSxVLHkwXV19dGhyb3dbMCxTbixZMGVdfX1pZihEdShmdW5jdGlvbihndCl7cmV0dXJuIHVlKF8sZ3QpfSxQciksVT9ZMChfLDYzKTpZMChfLDgpLEswKXZhciBjbj1LMFsxXSxybj1jblswXT09PTA/WzAsWzEsbyh0WzFdLF8sY25bMV0pXV06WzAsWzAsY25bMV1dXSxrbj1ybjtlbHNlIHZhciBrbj1LMDt2YXIgdm49QTAoXyksTmU9MDtpZih0eXBlb2Ygdm49PVwibnVtYmVyXCIpe3ZhciBKZT12biE9PTg/MTowO2lmKCFKZSl7dmFyIGVuPUplO05lPTF9fWlmKCFOZSl2YXIgZW49WzAsdShzZVs3XSxfKV07WTAoXyw4KTt2YXIgX249QTAoXyksQ249MDtpZih0eXBlb2YgX249PVwibnVtYmVyXCIpe3ZhciBIbj1fbiE9PTU/MTowO2lmKCFIbil7dmFyIEZuPUhuO0NuPTF9fWlmKCFDbil2YXIgRm49WzAsdShzZVs3XSxfKV07WTAoXyw1KTt2YXIgdnQ9emwoMSxfKSxOdD11KHNlWzJdLHZ0KTtyZXR1cm4gSHIoXyxOdCksWzIwLFswLGtuLGVuLEZuLE50LHkwXV19dmFyIGZyPTA7ZnVuY3Rpb24gUnIoXyl7cmV0dXJuIGNyKGZyLE9yLF8pfWZ1bmN0aW9uIFdyKF8pe3ZhciBrPUdzKF8pP24oXyk6dShzZVsyXSxfKSxJPTEtX1s1XSxVPUkmJm5iKGspO3JldHVybiBVJiZNMShfLGtbMV0pLGt9ZnVuY3Rpb24gSnIoXyl7dmFyIGs9cHIoXyk7WTAoXyw0Myk7dmFyIEk9V3IoXyk7cmV0dXJuWzAsSSxscihbMCxrXSwwLDApXX1mdW5jdGlvbiBhcihfKXt2YXIgaz1wcihfKTtZMChfLDE2KTt2YXIgST1vbihrLHByKF8pKTtZMChfLDQpO3ZhciBVPXUoc2VbN10sXyk7WTAoXyw1KTt2YXIgWT1XcihfKSx5MD1BMChfKT09PTQzPzE6MCxQMD15MCYmWzAsY3IoMCxKcixfKV07cmV0dXJuWzI0LFswLFUsWSxQMCxscihbMCxJXSwwLDApXV19dmFyIF9yPTA7ZnVuY3Rpb24gSXIoXyl7cmV0dXJuIGNyKF9yLGFyLF8pfWZ1bmN0aW9uIGZlKF8pezEtX1sxMV0mJmplKF8sMzYpO3ZhciBrPXByKF8pLEk9UGUoXyk7WTAoXywxOSk7dmFyIFU9QTAoXyk9PT04PzE6MCxZPVUmJndlKF8pLHkwPTA7aWYoQTAoXykhPT04JiYheDIoXykpe3ZhciBQMD1bMCx1KHNlWzddLF8pXTt5MD0xfWlmKCF5MCl2YXIgUDA9MDt2YXIgSTA9eXQoSSxQZShfKSksRD14KDAsMCxfKSx1MD0wO2lmKERbMF09PT0wKXZhciBYMD1EWzFdO2Vsc2V7dmFyIEowPURbMV07aWYoUDApe3ZhciBpcj1mdW5jdGlvbihzcixQcil7cmV0dXJuIG8oUWUoc3IsRGksOTApLHNyLFByKX0sUTA9WzAsbyhKMFsyXSxQMFsxXSxpcildLEYwPVk7dTA9MX1lbHNlIHZhciBYMD1KMFsxXX1pZighdTApdmFyIFEwPVAwLEYwPW9uKFksWDApO3JldHVyblsyOCxbMCxRMCxscihbMCxrXSxbMCxGMF0sMCksSTBdXX12YXIgdjA9MDtmdW5jdGlvbiBQKF8pe3JldHVybiBjcih2MCxmZSxfKX1mdW5jdGlvbiBMKF8pe3ZhciBrPXByKF8pO1kwKF8sMjApLFkwKF8sNCk7dmFyIEk9dShzZVs3XSxfKTtZMChfLDUpLFkwKF8sMCk7Zm9yKHZhciBVPUgwZTs7KXt2YXIgWT1VWzJdLHkwPUEwKF8pO2lmKHR5cGVvZiB5MD09XCJudW1iZXJcIil7dmFyIFAwPTA7aWYoKHkwPT09MXx8UG49PT15MCkmJihQMD0xKSxQMCl7dmFyIEkwPXllKFkpO1kwKF8sMSk7dmFyIEQ9YyhfKSx1MD1JWzFdO3JldHVyblsyOSxbMCxJLEkwLGxyKFswLGtdLFswLERbMV1dLDApLHUwXV19fXZhciBYMD1VWzFdLEowPWdMKDAsZnVuY3Rpb24oUTApe3JldHVybiBmdW5jdGlvbihGMCl7dmFyIFNyPXByKEYwKSxtcj1BMChGMCksQ3I9MDtpZih0eXBlb2YgbXI9PVwibnVtYmVyXCImJm1yPT09MzYpe1EwJiZqZShGMCwzMiksWTAoRjAsMzYpO3ZhciBzcj13ZShGMCksUHI9MDtDcj0xfWlmKCFDcil7WTAoRjAsMzMpO3ZhciBzcj0wLFByPVswLHUoc2VbN10sRjApXX12YXIgSzA9UTB8fChQcj09PTA/MTowKTtZMChGMCw4Nik7dmFyIFVyPW9uKHNyLGMoRjApWzFdKTtmdW5jdGlvbiBoMChSZSl7aWYodHlwZW9mIFJlPT1cIm51bWJlclwiKXt2YXIgdmU9UmUtMXwwLEllPTA7aWYoMzI8dmU+Pj4wP3ZlPT09MzUmJihJZT0xKTozMDwodmUtMXwwKT4+PjAmJihJZT0xKSxJZSlyZXR1cm4gMX1yZXR1cm4gMH12YXIgS3I9MSxyZT1GMFs5XT09PTE/RjA6WzAsRjBbMV0sRjBbMl0sRjBbM10sRjBbNF0sRjBbNV0sRjBbNl0sRjBbN10sRjBbOF0sS3IsRjBbMTBdLEYwWzExXSxGMFsxMl0sRjBbMTNdLEYwWzE0XSxGMFsxNV0sRjBbMTZdLEYwWzE3XSxGMFsxOF0sRjBbMTldLEYwWzIwXSxGMFsyMV0sRjBbMjJdLEYwWzIzXSxGMFsyNF0sRjBbMjVdLEYwWzI2XSxGMFsyN10sRjBbMjhdLEYwWzI5XSxGMFszMF1dLHhlPW8oc2VbNF0saDAscmUpO3JldHVyblswLFswLFByLHhlLGxyKFswLFNyXSxbMCxVcl0sMCldLEswXX19KFgwKSxfKSxVPVswLEowWzJdLFswLEowWzFdLFldXX19dmFyIFE9MDtmdW5jdGlvbiBpMChfKXtyZXR1cm4gY3IoUSxMLF8pfWZ1bmN0aW9uIGwwKF8pe3ZhciBrPXByKF8pLEk9UGUoXyk7WTAoXywyMikseDcoXykmJnVlKF8sWzAsSSwyMV0pO3ZhciBVPXUoc2VbN10sXyksWT14KDAsMCxfKTtpZihZWzBdPT09MCl2YXIgUDA9VSxJMD1ZWzFdO2Vsc2UgdmFyIHkwPWZ1bmN0aW9uKEQsdTApe3JldHVybiBvKFFlKEQsRGksOTEpLEQsdTApfSxQMD1vKFlbMV1bMl0sVSx5MCksSTA9MDtyZXR1cm5bMzAsWzAsUDAsbHIoWzAsa10sWzAsSTBdLDApXV19dmFyIFMwPTA7ZnVuY3Rpb24gVDAoXyl7cmV0dXJuIGNyKFMwLGwwLF8pfWZ1bmN0aW9uIHJyKF8pe3ZhciBrPXByKF8pO1kwKF8sMjMpO3ZhciBJPXUoc2VbMTVdLF8pO2lmKEEwKF8pPT09MzQpdmFyIFU9JHQoXyksWT1mdW5jdGlvbihzcixQcil7dmFyIEswPVByWzFdO3JldHVyblswLEswLHVyKFFlKHNyLFk4LDI5KSxzcixLMCxQclsyXSldfSx5MD1vKFVbMl0sSSxZKTtlbHNlIHZhciB5MD1JO3ZhciBQMD1BMChfKSxJMD0wO2lmKHR5cGVvZiBQMD09XCJudW1iZXJcIiYmUDA9PT0zNCl7dmFyIEQ9WzAsY3IoMCxmdW5jdGlvbihQcil7dmFyIEswPXByKFByKTtZMChQciwzNCk7dmFyIFVyPXdlKFByKSxoMD1BMChQcik9PT00PzE6MDtpZihoMCl7WTAoUHIsNCk7dmFyIEtyPVswLG8oc2VbMThdLFByLDM5KV07WTAoUHIsNSk7dmFyIHJlPUtyfWVsc2UgdmFyIHJlPWgwO3ZhciB4ZT11KHNlWzE1XSxQcik7aWYoQTAoUHIpPT09MzgpdmFyIEllPXhlO2Vsc2UgdmFyIFJlPWMoUHIpLHZlPWZ1bmN0aW9uKEdlLE1lKXt2YXIgYW49TWVbMV07cmV0dXJuWzAsYW4sdXIoUWUoR2UsWTgsOTIpLEdlLGFuLE1lWzJdKV19LEllPW8oUmVbMl0seGUsdmUpO3JldHVyblswLHJlLEllLGxyKFswLEswXSxbMCxVcl0sMCldfSxfKV07STA9MX1pZighSTApdmFyIEQ9MDt2YXIgdTA9QTAoXyksWDA9MDtpZih0eXBlb2YgdTA9PVwibnVtYmVyXCImJnUwPT09Mzgpe1kwKF8sMzgpO3ZhciBKMD11KHNlWzE1XSxfKSxpcj1KMFsxXSxRMD1jKF8pLEYwPWZ1bmN0aW9uKFByLEswKXtyZXR1cm4gdXIoUWUoUHIsWTgsOTMpLFByLGlyLEswKX0sU3I9WzAsWzAsaXIsbyhRMFsyXSxKMFsyXSxGMCldXTtYMD0xfWlmKCFYMCl2YXIgU3I9MDt2YXIgbXI9RD09PTA/MTowLENyPW1yJiYoU3I9PT0wPzE6MCk7cmV0dXJuIENyJiZ1ZShfLFswLHkwWzFdLDMzXSksWzMxLFswLHkwLEQsU3IsbHIoWzAsa10sMCwwKV1dfXZhciBMMD0wO2Z1bmN0aW9uIEIoXyl7cmV0dXJuIGNyKEwwLHJyLF8pfWZ1bmN0aW9uIFooXyl7dmFyIGs9dShWbls5XSxfKSxJPXMoMCxfLGtbMV0pLFU9MCxZPWtbM107RHUoZnVuY3Rpb24oUDApe3JldHVybiB1ZShfLFAwKX0sWSk7dmFyIHkwPWxyKFswLGtbMl1dLFswLElbMV1dLDApO3JldHVyblszNCxbMCxJWzJdLFUseTBdXX12YXIgcDA9MDtmdW5jdGlvbiBiMChfKXtyZXR1cm4gY3IocDAsWixfKX1mdW5jdGlvbiBPMChfKXt2YXIgaz11KFZuWzhdLF8pLEk9cygyLF8sa1sxXSksVT0yLFk9a1szXTtEdShmdW5jdGlvbihQMCl7cmV0dXJuIHVlKF8sUDApfSxZKTt2YXIgeTA9bHIoWzAsa1syXV0sWzAsSVsxXV0sMCk7cmV0dXJuWzM0LFswLElbMl0sVSx5MF1dfXZhciBNMD0wO2Z1bmN0aW9uIGVyKF8pe3JldHVybiBjcihNMCxPMCxfKX1mdW5jdGlvbiB5cihfKXt2YXIgaz11KFZuWzddLF8pLEk9cygxLF8sa1sxXSksVT0xLFk9a1szXTtEdShmdW5jdGlvbihQMCl7cmV0dXJuIHVlKF8sUDApfSxZKTt2YXIgeTA9bHIoWzAsa1syXV0sWzAsSVsxXV0sMCk7cmV0dXJuWzM0LFswLElbMl0sVSx5MF1dfXZhciB2cj0wO2Z1bmN0aW9uICQwKF8pe3JldHVybiBjcih2cix5cixfKX1mdW5jdGlvbiBFcihfKXt2YXIgaz1wcihfKTtZMChfLDI1KTt2YXIgST1vbihrLHByKF8pKTtZMChfLDQpO3ZhciBVPXUoc2VbN10sXyk7WTAoXyw1KTt2YXIgWT16bCgxLF8pLHkwPXUoc2VbMl0sWSksUDA9MS1fWzVdLEkwPVAwJiZuYih5MCk7cmV0dXJuIEkwJiZNMShfLHkwWzFdKSxbMzUsWzAsVSx5MCxscihbMCxJXSwwLDApXV19dmFyIE1yPTA7ZnVuY3Rpb24gQnIoXyl7cmV0dXJuIGNyKE1yLEVyLF8pfWZ1bmN0aW9uIHFyKF8pe3ZhciBrPXByKF8pLEk9dShzZVs3XSxfKSxVPUEwKF8pLFk9SVsyXTtpZihZWzBdPT09MTAmJnR5cGVvZiBVPT1cIm51bWJlclwiJiZVPT09ODYpe3ZhciB5MD1ZWzFdLFAwPXkwWzJdWzFdO1kwKF8sODYpLG8oTXVbM10sUDAsX1szXSkmJnVlKF8sWzAsSVsxXSxbMTYscTBlLFAwXV0pO3ZhciBJMD1fWzMwXSxEPV9bMjldLHUwPV9bMjhdLFgwPV9bMjddLEowPV9bMjZdLGlyPV9bMjVdLFEwPV9bMjRdLEYwPV9bMjNdLFNyPV9bMjJdLG1yPV9bMjFdLENyPV9bMjBdLHNyPV9bMTldLFByPV9bMThdLEswPV9bMTddLFVyPV9bMTZdLGgwPV9bMTVdLEtyPV9bMTRdLHJlPV9bMTNdLHhlPV9bMTJdLFJlPV9bMTFdLHZlPV9bMTBdLEllPV9bOV0sR2U9X1s4XSxNZT1fWzddLGFuPV9bNl0sV2U9X1s1XSxBZT1fWzRdLGNuPW8oTXVbNF0sUDAsX1szXSkscm49WzAsX1sxXSxfWzJdLGNuLEFlLFdlLGFuLE1lLEdlLEllLHZlLFJlLHhlLHJlLEtyLGgwLFVyLEswLFByLHNyLENyLG1yLFNyLEYwLFEwLGlyLEowLFgwLHUwLEQsSTBdLGtuPUdzKHJuKT9uKHJuKTp1KHNlWzJdLHJuKTtyZXR1cm5bMjcsWzAseTAsa24sbHIoWzAsa10sMCwwKV1dfXZhciB2bj14KFUwZSwwLF8pO2lmKHZuWzBdPT09MCl2YXIgSmU9SSxlbj12blsxXTtlbHNlIHZhciBOZT1mdW5jdGlvbihfbixDbil7cmV0dXJuIG8oUWUoX24sRGksOTQpLF9uLENuKX0sSmU9byh2blsxXVsyXSxJLE5lKSxlbj0wO3JldHVyblsxOSxbMCxKZSwwLGxyKDAsWzAsZW5dLDApXV19dmFyIGpyPTA7ZnVuY3Rpb24gJHIoXyl7cmV0dXJuIGNyKGpyLHFyLF8pfWZ1bmN0aW9uIG5lKF8pe3ZhciBrPXUoc2VbN10sXyksST14KEIwZSwwLF8pO2lmKElbMF09PT0wKXZhciBZPWsseTA9SVsxXTtlbHNlIHZhciBVPWZ1bmN0aW9uKHNyLFByKXtyZXR1cm4gbyhRZShzcixEaSw5NSksc3IsUHIpfSxZPW8oSVsxXVsyXSxrLFUpLHkwPTA7dmFyIFAwPV9bMTldO2lmKFAwKXt2YXIgSTA9WVsyXSxEPTA7aWYoSTBbMF09PT0xNCl7dmFyIHUwPUkwWzFdLFgwPTAsSjA9dTBbMV07aWYodHlwZW9mIEowIT1cIm51bWJlclwiJiZKMFswXT09PTApe3ZhciBpcj11MFsyXSxRMD0xPHVuKGlyKT8xOjA7aWYoUTApdmFyIEYwPUl0KGlyLHVuKGlyKS0xfDApLFNyPUl0KGlyLDApPT09RjA/MTowO2Vsc2UgdmFyIFNyPVEwO3ZhciBtcj1TciYmWzAsbTcoaXIsMSx1bihpciktMnwwKV0sQ3I9bXI7WDA9MX1YMHx8KEQ9MSl9ZWxzZSBEPTE7aWYoRCl2YXIgQ3I9MH1lbHNlIHZhciBDcj1QMDtyZXR1cm5bMTksWzAsWSxDcixscigwLFswLHkwXSwwKV1dfXZhciBRcj0wO2Z1bmN0aW9uIGJlKF8pe3JldHVybiBjcihRcixuZSxfKX1mdW5jdGlvbiBhZShfKXt2YXIgaz1BMChfKSxJPTA7aWYodHlwZW9mIGshPVwibnVtYmVyXCImJmtbMF09PT00JiYhbjAoa1szXSxSMGUpKXtpZShfKTt2YXIgVT1BMChfKTtpZih0eXBlb2YgVSE9XCJudW1iZXJcIiYmVVswXT09PTIpcmV0dXJuIGkoXyxVWzFdKTtTdChqMGUsXyksST0xfXJldHVybiBJfHxTdChHMGUsXyksWzAsajEoXyksTTBlXX1mdW5jdGlvbiBwZShfLGssSSl7ZnVuY3Rpb24gVShEKXtyZXR1cm4gXz91KG1uWzJdLEQpOm8oc2VbMTNdLDAsRCl9dmFyIFk9WW4oMSxJKTtpZih0eXBlb2YgWT09XCJudW1iZXJcIilzd2l0Y2goWSl7Y2FzZSAxOmNhc2UgOTpjYXNlIDExMzpyZXR1cm5bMCxVKEkpLDBdfWVsc2UgaWYoWVswXT09PTQmJiFuMChZWzNdLEwwZSkpe3ZhciB5MD16NyhJKTtyZXR1cm4gaWUoSSksWzAseTAsWzAsVShJKV1dfXZhciBQMD1BMChJKTtpZihrJiZ0eXBlb2YgUDA9PVwibnVtYmVyXCIpe3ZhciBJMD0wO2lmKChQMD09PTQ2fHxQMD09PTYxKSYmKEkwPTEpLEkwKXJldHVybiBqZShJLGtbMV0pLGllKEkpLFswLHUobW5bMl0sSSksMF19cmV0dXJuWzAsVShJKSwwXX1mdW5jdGlvbiBvZShfLGspe3ZhciBJPUEwKF8pO2lmKHR5cGVvZiBJPT1cIm51bWJlclwiJiZZdD09PUkpe3ZhciBVPWNyKDAsZnVuY3Rpb24oQWUpe2llKEFlKTt2YXIgY249QTAoQWUpO3JldHVybiB0eXBlb2YgY24hPVwibnVtYmVyXCImJmNuWzBdPT09NCYmIW4wKGNuWzNdLFAwZSk/KGllKEFlKSwyPD1rP1swLG8oc2VbMTNdLDAsQWUpXTpbMCx1KG1uWzJdLEFlKV0pOihTdChEMGUsQWUpLDApfSxfKSxZPVVbMl0seTA9WSYmWzAsWzAsVVsxXSxZWzFdXV0sUDA9eTAmJlswLFsxLHkwWzFdXV07cmV0dXJuIFAwfVkwKF8sMCk7Zm9yKHZhciBJMD0wLEQ9MDs7KXt2YXIgdTA9STA/STBbMV06MSxYMD1BMChfKTtpZih0eXBlb2YgWDA9PVwibnVtYmVyXCIpe3ZhciBKMD0wO2lmKChYMD09PTF8fFBuPT09WDApJiYoSjA9MSksSjApe3ZhciBpcj15ZShEKTtyZXR1cm4gWTAoXywxKSxbMCxbMCxpcl1dfX1pZigxLXUwJiZqZShfLDg0KSxrPT09Mil7dmFyIFEwPUEwKF8pLEYwPTA7aWYodHlwZW9mIFEwPT1cIm51bWJlclwiKWlmKFEwPT09NDYpdmFyIFNyPUkwZTtlbHNlIGlmKFEwPT09NjEpdmFyIFNyPU8wZTtlbHNlIEYwPTE7ZWxzZSBGMD0xO2lmKEYwKXZhciBTcj0wO3ZhciBtcj1BMChfKSxDcj0wO2lmKHR5cGVvZiBtcj09XCJudW1iZXJcIil7dmFyIHNyPTA7aWYobXIhPT00NiYmbXIhPT02MSYmKHNyPTEpLCFzcil7dmFyIFByPTE7Q3I9MX19aWYoIUNyKXZhciBQcj0wO2lmKFByKXt2YXIgSzA9ejcoXyksVXI9QTAoXyksaDA9MDtpZih0eXBlb2YgVXI9PVwibnVtYmVyXCIpc3dpdGNoKFVyKXtjYXNlIDE6Y2FzZSA5OmNhc2UgMTEzOmUoMCxfLEswKTt2YXIgSWU9WzAsMCwwLEswXTtoMD0xO2JyZWFrfWVsc2UgaWYoVXJbMF09PT00JiYhbjAoVXJbM10sQTBlKSl7dmFyIEtyPVluKDEsXykscmU9MDtpZih0eXBlb2YgS3I9PVwibnVtYmVyXCIpc3dpdGNoKEtyKXtjYXNlIDE6Y2FzZSA5OmNhc2UgMTEzOnZhciB4ZT1bMCxTciwwLHUobW5bMl0sXyldO3JlPTE7YnJlYWt9ZWxzZSBpZihLclswXT09PTQmJiFuMChLclszXSxOMGUpKXt2YXIgUmU9ejcoXyk7aWUoXyk7dmFyIHhlPVswLFNyLFswLHUobW5bMl0sXyldLFJlXTtyZT0xfWlmKCFyZSl7ZSgwLF8sSzApLGllKF8pO3ZhciB4ZT1bMCwwLFswLG8oc2VbMTNdLDAsXyldLEswXX12YXIgSWU9eGU7aDA9MX1pZighaDApdmFyIHZlPXBlKDEsMCxfKSxJZT1bMCxTcix2ZVsyXSx2ZVsxXV07dmFyIE1lPUllfWVsc2UgdmFyIEdlPXBlKDAsMCxfKSxNZT1bMCwwLEdlWzJdLEdlWzFdXTt2YXIgV2U9TWV9ZWxzZSB2YXIgYW49cGUoMSxUMGUsXyksV2U9WzAsMCxhblsyXSxhblsxXV07dmFyIEkwPVswLHh1KF8sOSldLEQ9WzAsV2UsRF19fWZ1bmN0aW9uIGNlKF8sayl7dmFyIEk9eCgwLDAsXyk7aWYoSVswXT09PTApcmV0dXJuWzAsSVsxXSxrXTtmdW5jdGlvbiBVKFkseTApe3ZhciBQMD15MFsxXTtyZXR1cm5bMCxQMCx1cihRZShZLGhBLDk2KSxZLFAwLHkwWzJdKV19cmV0dXJuWzAsMCxvKElbMV1bMl0sayxVKV19ZnVuY3Rpb24gZ2UoXyl7dmFyIGs9X3MoMSxfKSxJPXByKGspO1kwKGssNTApO3ZhciBVPUEwKGspLFk9MDtpZih0eXBlb2YgVT09XCJudW1iZXJcIilzd2l0Y2goVSl7Y2FzZSA0NjppZihmdShrKSl7WTAoayw0Nik7dmFyIHkwPUEwKGspLFAwPTA7aWYodHlwZW9mIHkwPT1cIm51bWJlclwiKXt2YXIgSTA9MDtpZihZdCE9PXkwJiZ5MCYmKEkwPTEpLCFJMCl7dmFyIEowPTE7WT0yLFAwPTF9fWlmKCFQMCl7dmFyIEQ9MTtZPTF9fWJyZWFrO2Nhc2UgNjE6aWYoZnUoaykpe3ZhciB1MD1ZbigxLGspLFgwPTA7aWYodHlwZW9mIHUwPT1cIm51bWJlclwiKXN3aXRjaCh1MCl7Y2FzZSAwOmllKGspO3ZhciBKMD0wO1k9MixYMD0yO2JyZWFrO2Nhc2UgMTA2OmllKGspLFN0KDAsayk7dmFyIEowPTA7WT0yLFgwPTI7YnJlYWs7Y2FzZSA5OlgwPTE7YnJlYWt9ZWxzZSB1MFswXT09PTQmJiFuMCh1MFszXSxDMGUpJiYoWDA9MSk7c3dpdGNoKFgwKXtjYXNlIDI6YnJlYWs7Y2FzZSAwOmllKGspO3ZhciBEPTA7WT0xO2JyZWFrO2RlZmF1bHQ6dmFyIEQ9MjtZPTF9fWJyZWFrO2Nhc2UgMDpjYXNlIDEwNjp2YXIgSjA9MjtZPTI7YnJlYWt9ZWxzZSBpZihVWzBdPT09Mil7dmFyIGlyPWNlKGssaShrLFVbMV0pKSxRMD1scihbMCxJXSxbMCxpclsxXV0sMCk7cmV0dXJuWzI1LFswLDIsaXJbMl0sMCwwLFEwXV19c3dpdGNoKFkpe2Nhc2UgMDp2YXIgRD0yO2JyZWFrO2Nhc2UgMTpicmVhaztkZWZhdWx0OnZhciBGMD1vZShrLEowKSxTcj1jZShrLGFlKGspKSxtcj1scihbMCxJXSxbMCxTclsxXV0sMCk7cmV0dXJuWzI1LFswLEowLFNyWzJdLDAsRjAsbXJdXX12YXIgQ3I9Mjw9RD9vKHNlWzEzXSwwLGspOnUobW5bMl0sayksc3I9QTAoayksUHI9MDtpZih0eXBlb2Ygc3I9PVwibnVtYmVyXCImJnNyPT09OSl7WTAoayw5KTt2YXIgSzA9b2UoayxEKTtQcj0xfWlmKCFQcil2YXIgSzA9MDt2YXIgVXI9Y2UoayxhZShrKSksaDA9bHIoWzAsSV0sWzAsVXJbMV1dLDApO3JldHVyblsyNSxbMCxELFVyWzJdLFswLENyXSxLMCxoMF1dfXZhciBxMD0wO2Z1bmN0aW9uIEZyKF8pe3JldHVybiBjcihxMCxnZSxfKX1yZXR1cm4gTihwLGZ1bmN0aW9uKF8pe3ZhciBrPVBlKF8pLEk9cHIoXyk7cmV0dXJuIFkwKF8sOCksWzAsayxbMTUsWzAsbHIoWzAsSV0sWzAsYyhfKVsxXV0sMCldXV19KSxOKHksZnVuY3Rpb24oXyl7dmFyIGs9cHIoXyksST1jcigwLGZ1bmN0aW9uKFgwKXtZMChYMCwzMik7dmFyIEowPTA7aWYoQTAoWDApIT09OCYmIXgyKFgwKSl7dmFyIGlyPW8oc2VbMTNdLDAsWDApLFEwPWlyWzJdWzFdOzEtbyhNdVszXSxRMCxYMFszXSkmJmplKFgwLFsxNSxRMF0pO3ZhciBGMD1bMCxpcl07SjA9MX1pZighSjApdmFyIEYwPTA7dmFyIFNyPXgoMCwwLFgwKSxtcj0wO2lmKFNyWzBdPT09MCl2YXIgQ3I9U3JbMV07ZWxzZXt2YXIgc3I9U3JbMV07aWYoRjApe3ZhciBQcj1mdW5jdGlvbih4ZSxSZSl7cmV0dXJuIG8oUWUoeGUsTnYsOTcpLHhlLFJlKX0sSzA9WzAsbyhzclsyXSxGMFsxXSxQcildLFVyPTA7bXI9MX1lbHNlIHZhciBDcj1zclsxXX1pZighbXIpdmFyIEswPUYwLFVyPUNyO3JldHVyblswLEswLFVyXX0sXyksVT1JWzJdLFk9VVsxXSx5MD1JWzFdLFAwPVk9PT0wPzE6MDtpZihQMCl2YXIgSTA9X1s4XSxEPUkwfHxfWzldLHUwPTEtRDtlbHNlIHZhciB1MD1QMDtyZXR1cm4gdTAmJnVlKF8sWzAseTAsMzVdKSxbMCx5MCxbMSxbMCxZLGxyKFswLGtdLFswLFVbMl1dLDApXV1dfSksTihULGZ1bmN0aW9uKF8pe3ZhciBrPXByKF8pLEk9Y3IoMCxmdW5jdGlvbihQMCl7WTAoUDAsMzUpO3ZhciBJMD0wO2lmKEEwKFAwKSE9PTgmJiF4MihQMCkpe3ZhciBEPW8oc2VbMTNdLDAsUDApLHUwPURbMl1bMV07MS1vKE11WzNdLHUwLFAwWzNdKSYmamUoUDAsWzE1LHUwXSk7dmFyIFgwPVswLERdO0kwPTF9aWYoIUkwKXZhciBYMD0wO3ZhciBKMD14KDAsMCxQMCksaXI9MDtpZihKMFswXT09PTApdmFyIFEwPUowWzFdO2Vsc2V7dmFyIEYwPUowWzFdO2lmKFgwKXt2YXIgU3I9ZnVuY3Rpb24oVXIsaDApe3JldHVybiBvKFFlKFVyLE52LDk4KSxVcixoMCl9LG1yPVswLG8oRjBbMl0sWDBbMV0sU3IpXSxDcj0wO2lyPTF9ZWxzZSB2YXIgUTA9RjBbMV19aWYoIWlyKXZhciBtcj1YMCxDcj1RMDtyZXR1cm5bMCxtcixDcl19LF8pLFU9SVsyXSxZPUlbMV07MS1fWzhdJiZ1ZShfLFswLFksMzRdKTt2YXIgeTA9bHIoWzAsa10sWzAsVVsyXV0sMCk7cmV0dXJuWzAsWSxbMyxbMCxVWzFdLHkwXV1dfSksTihFLGZ1bmN0aW9uKF8pe3ZhciBrPWNyKDAsZnVuY3Rpb24oVSl7dmFyIFk9cHIoVSk7WTAoVSwyNik7dmFyIHkwPW9uKFkscHIoVSkpO1kwKFUsNCk7dmFyIFAwPXUoc2VbN10sVSk7WTAoVSw1KTt2YXIgSTA9dShzZVsyXSxVKSxEPTEtVVs1XSx1MD1EJiZuYihJMCk7cmV0dXJuIHUwJiZNMShVLEkwWzFdKSxbMzYsWzAsUDAsSTAsbHIoWzAseTBdLDAsMCldXX0sXyksST1rWzFdO3JldHVybiBWNyhfLFswLEksMzhdKSxbMCxJLGtbMl1dfSksTihkLGZ1bmN0aW9uKF8pe3ZhciBrPXUoc2VbMTVdLF8pLEk9a1sxXSxVPWMoXyk7ZnVuY3Rpb24gWSh5MCxQMCl7cmV0dXJuIHVyKFFlKHkwLFk4LDk5KSx5MCxJLFAwKX1yZXR1cm5bMCxJLFswLG8oVVsyXSxrWzJdLFkpXV19KSxOKHcsZnVuY3Rpb24oXyxrKXsxLWZ1KGspJiZqZShrLDEwKTt2YXIgST1vbihfLHByKGspKTtZMChrLDYxKSxLdShrLDEpO3ZhciBVPXUobW5bMl0sayksWT1BMChrKT09PTk4P3lzKGssVSk6VSx5MD11KG1uWzNdLGspO1kwKGssODIpO3ZhciBQMD11KG1uWzFdLGspO2s3KGspO3ZhciBJMD14KDAsMCxrKTtpZihJMFswXT09PTApdmFyIHUwPVAwLFgwPUkwWzFdO2Vsc2UgdmFyIEQ9ZnVuY3Rpb24oSjAsaXIpe3JldHVybiBvKFFlKEowLF92LHRpKSxKMCxpcil9LHUwPW8oSTBbMV1bMl0sUDAsRCksWDA9MDtyZXR1cm5bMCxZLHkwLHUwLGxyKFswLEldLFswLFgwXSwwKV19KSxOKEcsZnVuY3Rpb24oXyl7cmV0dXJuIGNyKDAsZnVuY3Rpb24oayl7dmFyIEk9cHIoayk7cmV0dXJuIFkwKGssNjApLFsxMSxvKHcsSSxrKV19LF8pfSksTihBLGZ1bmN0aW9uKF8pe2lmKEk5KDEsXykmJiFzZTAoMSxfKSl7dmFyIGs9Y3IoMCx1KHcsMCksXyk7cmV0dXJuWzAsa1sxXSxbMzIsa1syXV1dfXJldHVybiB1KHNlWzJdLF8pfSksTihTLGZ1bmN0aW9uKF8sayxJKXt2YXIgVT1fJiZfWzFdOzEtZnUoSSkmJmplKEksMTEpO3ZhciBZPW9uKGsscHIoSSkpO1kwKEksNjIpO3ZhciB5MD1wcihJKTtZMChJLDYxKTt2YXIgUDA9b24oWSx5MCk7S3UoSSwxKTt2YXIgSTA9dShtblsyXSxJKSxEPUEwKEkpPT09OTg/eXMoSSxJMCk6STAsdTA9dShtblszXSxJKSxYMD1BMChJKSxKMD0wO2lmKHR5cGVvZiBYMD09XCJudW1iZXJcIiYmWDA9PT04Nil7WTAoSSw4Nik7dmFyIGlyPVswLHUobW5bMV0sSSldO0owPTF9aWYoIUowKXZhciBpcj0wO2lmKFUpe3ZhciBRMD1BMChJKSxGMD0wO2lmKHR5cGVvZiBRMD09XCJudW1iZXJcIiYmUTA9PT04Mil7amUoSSw3MCksaWUoSSk7dmFyIFNyPTA7aWYoQTAoSSkhPT04JiYheDIoSSkpe3ZhciBtcj1bMCx1KG1uWzFdLEkpXTtTcj0xfWlmKCFTcil2YXIgbXI9MH1lbHNlIEYwPTE7aWYoRjApdmFyIG1yPTA7dmFyIENyPW1yfWVsc2V7WTAoSSw4Mik7dmFyIENyPVswLHUobW5bMV0sSSldfWs3KEkpO3ZhciBzcj14KDAsMCxJKTtpZihzclswXT09PTApdmFyIFByPUNyLEswPWlyLFVyPXUwLGgwPUQsS3I9c3JbMV07ZWxzZXt2YXIgcmU9c3JbMV1bMl07aWYoQ3IpdmFyIHhlPWZ1bmN0aW9uKGVuLF9uKXtyZXR1cm4gbyhRZShlbixfdixSNyksZW4sX24pfSxQcj1bMCxvKHJlLENyWzFdLHhlKV0sSzA9aXIsVXI9dTAsaDA9RCxLcj0wO2Vsc2UgaWYoaXIpdmFyIFJlPTAsdmU9ZnVuY3Rpb24oZW4sX24pe3JldHVybiBvKFFlKGVuLF92LFJpKSxlbixfbil9LFByPVJlLEswPVswLG8ocmUsaXJbMV0sdmUpXSxVcj11MCxoMD1ELEtyPTA7ZWxzZSBpZih1MCl2YXIgSWU9MCxHZT0wLE1lPWZ1bmN0aW9uKGVuLF9uKXtyZXR1cm4gbyhRZShlbixiRixzNyksZW4sX24pfSxQcj1JZSxLMD1HZSxVcj1bMCxvKHJlLHUwWzFdLE1lKV0saDA9RCxLcj0wO2Vsc2UgdmFyIGFuPTAsV2U9MCxBZT0wLFByPWFuLEswPVdlLFVyPUFlLGNuPTAsaDA9byhyZSxELGZ1bmN0aW9uKGVuLF9uKXtyZXR1cm4gbyhRZShlbixOdixMNyksZW4sX24pfSksS3I9Y259cmV0dXJuWzAsaDAsVXIsUHIsSzAsbHIoWzAsUDBdLFswLEtyXSwwKV19KSxOKE0sZnVuY3Rpb24oXyl7cmV0dXJuIGNyKDAsZnVuY3Rpb24oayl7dmFyIEk9cHIoayk7cmV0dXJuIFkwKGssNjApLFsxMix1cihTLEYwZSxJLGspXX0sXyl9KSxOKEssZnVuY3Rpb24oXyl7dmFyIGs9WW4oMSxfKTtpZih0eXBlb2Ygaz09XCJudW1iZXJcIiYmaz09PTYxKXt2YXIgST1jcigwLG8oUyxnMGUsMCksXyk7cmV0dXJuWzAsSVsxXSxbMzMsSVsyXV1dfXJldHVybiB1KHNlWzJdLF8pfSksTihWLGZ1bmN0aW9uKF8sayl7MS1mdShrKSYmamUoaywxNik7dmFyIEk9b24oXyxwcihrKSk7WTAoayw1Myk7dmFyIFU9dShtblsyXSxrKSxZPUEwKGspPT09NDE/VTp5cyhrLFUpLHkwPXUobW5bM10sayksUDA9QTAoayk9PT00MT95MDpvaShrLHkwKSxJMD11KG1uWzddLGspLEQ9YyhrKTtmdW5jdGlvbiB1MChpcixRMCl7dmFyIEYwPVEwWzFdO3JldHVyblswLEYwLHVyKFFlKGlyLHFILGo3KSxpcixGMCxRMFsyXSldfXZhciBYMD1vKERbMl0sSTBbMl0sdTApLEowPWxyKFswLEldLDAsMCk7cmV0dXJuWzAsWSxQMCxJMFsxXSxYMCxKMF19KSxOKGYwLGZ1bmN0aW9uKF8pe3JldHVybiBjcigwLGZ1bmN0aW9uKGspe3ZhciBJPXByKGspO3JldHVybiBZMChrLDYwKSxbOCxvKFYsSSxrKV19LF8pfSksTihtMCxmdW5jdGlvbihfKXt2YXIgaz1JOSgxLF8pLEk9MSxVPWt8fHZlMChJLF8pO2lmKFUpe3ZhciBZPWNyKDAsdShWLDApLF8pO3JldHVyblswLFlbMV0sWzI2LFlbMl1dXX1yZXR1cm4gYmUoXyl9KSxOKGswLGZ1bmN0aW9uKF8sayl7dmFyIEk9X3MoMSxrKSxVPW9uKF8scHIoSSkpO1kwKEksNDApO3ZhciBZPW8oc2VbMTNdLDAsSSkseTA9QTAoSSksUDA9MDtpZih0eXBlb2YgeTA9PVwibnVtYmVyXCIpe3ZhciBJMD0wO2lmKHkwIT09OTgmJnkwJiYoSTA9MSksIUkwKXt2YXIgRD15cyhJLFkpO1AwPTF9fWlmKCFQMCl2YXIgRD1ZO3ZhciB1MD11KG1uWzNdLEkpLFgwPUEwKEkpLEowPTA7aWYodHlwZW9mIFgwPT1cIm51bWJlclwiJiYhWDApe3ZhciBpcj1vaShJLHUwKTtKMD0xfWlmKCFKMCl2YXIgaXI9dTA7dmFyIFEwPXh1KEksNDEpO2lmKFEwKXt2YXIgRjA9dShtbls1XSxJKSxTcj1BMChJKSxtcj0wO2lmKHR5cGVvZiBTcj09XCJudW1iZXJcIiYmIVNyKXt2YXIgQ3I9JHQoSSksc3I9ZnVuY3Rpb24oRm4sdnQpe3JldHVybiBfdSh1KFFlKEZuLFpVLDM2KSxGbiksdnQpfSxQcj1bMCxvKENyWzJdLEYwLHNyKV07bXI9MX1pZighbXIpdmFyIFByPVswLEYwXTt2YXIgSzA9UHJ9ZWxzZSB2YXIgSzA9UTA7dmFyIFVyPUEwKEkpLGgwPTA7aWYodHlwZW9mIFVyIT1cIm51bWJlclwiJiZVclswXT09PTQmJiFuMChVclszXSxTMGUpKXtpZShJKTtmb3IodmFyIEtyPTA7Oyl7dmFyIHJlPVswLHUobW5bNV0sSSksS3JdLHhlPUEwKEkpO2lmKHR5cGVvZiB4ZT09XCJudW1iZXJcIiYmeGU9PT05KXtZMChJLDkpO3ZhciBLcj1yZTtjb250aW51ZX12YXIgUmU9eWUocmUpLHZlPUEwKEkpLEllPTA7aWYodHlwZW9mIHZlPT1cIm51bWJlclwiJiYhdmUpe3ZhciBHZT1kZTAoSSxSZSk7SWU9MX1pZighSWUpdmFyIEdlPVJlO3ZhciBNZT1HZTtoMD0xO2JyZWFrfX1pZighaDApdmFyIE1lPTA7dmFyIGFuPUEwKEkpLFdlPTA7aWYodHlwZW9mIGFuPT1cIm51bWJlclwiJiZhbj09PTUyKXt2YXIgQWU9byhVc1s1XSxJLDApLGNuPUEwKEkpLHJuPTA7aWYodHlwZW9mIGNuPT1cIm51bWJlclwiJiYhY24pe3ZhciBrbj1bMCxrZTAoSSxBZSldO3JuPTF9aWYoIXJuKXZhciBrbj1bMCxBZV07dmFyIHZuPWtuO1dlPTF9aWYoIVdlKXZhciB2bj0wO3ZhciBOZT1vKG1uWzZdLDEsSSksSmU9YyhJKTtmdW5jdGlvbiBlbihDbixIbil7dmFyIEZuPUhuWzFdO3JldHVyblswLEZuLHVyKFFlKENuLHFILFl0KSxDbixGbixIblsyXSldfXZhciBfbj1vKEplWzJdLE5lLGVuKTtyZXR1cm5bMCxELGlyLF9uLEswLE1lLHZuLGxyKFswLFVdLDAsMCldfSksTihnMCxmdW5jdGlvbihfKXtyZXR1cm4gY3IoMCxmdW5jdGlvbihrKXt2YXIgST1wcihrKTtyZXR1cm4gWTAoayw2MCksWzUsbyhrMCxJLGspXX0sXyl9KSxOKGUwLGZ1bmN0aW9uKF8sayl7dmFyIEk9XyYmX1sxXSxVPW9uKEkscHIoaykpO1kwKGssMTUpO3ZhciBZPXlzKGssbyhzZVsxM10sMCxrKSkseTA9Y3IoMCxmdW5jdGlvbihtcil7dmFyIENyPW9pKG1yLHUobW5bM10sbXIpKSxzcj11KG1uWzhdLG1yKTtZMChtciw4Nik7dmFyIFByPXUobW5bMV0sbXIpO0t1KG1yLDEpO3ZhciBLMD1BMChtcik7aWYoazcobXIpLEswPT09NjYpdmFyIFVyPSR0KG1yKSxoMD1mdW5jdGlvbihyZSx4ZSl7cmV0dXJuIG8oUWUocmUsX3YsMzEpLHJlLHhlKX0sS3I9byhVclsyXSxQcixoMCk7ZWxzZSB2YXIgS3I9UHI7cmV0dXJuWzEyLFswLENyLHNyLEtyLDBdXX0sayksUDA9dShtblsxMV0sayksSTA9eCgwLDAsayk7aWYoSTBbMF09PT0wKXZhciBEPVAwLHUwPXkwLFgwPUkwWzFdO2Vsc2V7dmFyIEowPUkwWzFdWzJdO2lmKFAwKXZhciBpcj1mdW5jdGlvbihQcixLMCl7cmV0dXJuIG8oUWUoUHIsa0gsWmMpLFByLEswKX0sRD1bMCxvKEowLFAwWzFdLGlyKV0sdTA9eTAsWDA9MDtlbHNlIHZhciBRMD0wLEQ9UTAsRjA9MCx1MD1vKEowLHkwLGZ1bmN0aW9uKFByLEswKXtyZXR1cm4gbyhRZShQcixfdixpcyksUHIsSzApfSksWDA9RjB9dmFyIFNyPVswLHUwWzFdLHUwXTtyZXR1cm5bMCxZLFNyLEQsbHIoWzAsVV0sWzAsWDBdLDApXX0pLE4oeDAsZnVuY3Rpb24oXyl7cmV0dXJuIGNyKDAsZnVuY3Rpb24oayl7dmFyIEk9cHIoayk7WTAoayw2MCk7dmFyIFU9QTAoayksWT0wO3JldHVybiB0eXBlb2YgVT09XCJudW1iZXJcIiYmVT09PTY0JiYoamUoayw2NyksWTAoayw2NCksWT0xKSxbNyxvKGUwLFswLEldLGspXX0sXyl9KSxOKGwsZnVuY3Rpb24oXyxrKXt2YXIgST1vbihrLHByKF8pKTtZMChfLDI0KTt2YXIgVT1vKHNlWzEzXSxFMGUsXyksWT11KG1uWzldLF8pLHkwPXgoMCwwLF8pO2lmKHkwWzBdPT09MCl2YXIgSTA9WSxEPXkwWzFdO2Vsc2UgdmFyIFAwPWZ1bmN0aW9uKHUwLFgwKXtyZXR1cm4gbyhRZSh1MCxPRSxGdiksdTAsWDApfSxJMD1vKHkwWzFdWzJdLFksUDApLEQ9MDtyZXR1cm5bMCxVLEkwLGxyKFswLEldLFswLERdLDApXX0pLE4oYzAsZnVuY3Rpb24oXyl7cmV0dXJuIGNyKDAsZnVuY3Rpb24oayl7dmFyIEk9cHIoayk7cmV0dXJuIFkwKGssNjApLFsxMyxvKGwsayxJKV19LF8pfSksTih0MCxmdW5jdGlvbihfLGspe3ZhciBJPVBlKGspLFU9cHIoayk7WTAoayw2MCk7dmFyIFk9b24oVSxwcihrKSk7cmV0dXJuIFpsKGssdzBlKSwhXyYmQTAoaykhPT0xMD9jcihbMCxJXSxmdW5jdGlvbih5MCl7dmFyIFAwPUEwKHkwKSxJMD0wO2lmKHR5cGVvZiBQMCE9XCJudW1iZXJcIiYmUDBbMF09PT0yKXt2YXIgRD1pKHkwLFAwWzFdKSx1MD0kdCh5MCksWDA9ZnVuY3Rpb24oQ3Isc3Ipe3ZhciBQcj1zclsxXTtyZXR1cm5bMCxQcix1cihRZShDcixoQSwzOSksQ3IsUHIsc3JbMl0pXX0sSjA9WzEsbyh1MFsyXSxELFgwKV07STA9MX1pZighSTApdmFyIEowPVswLHlzKHkwLG8oc2VbMTNdLDAseTApKV07dmFyIGlyPWdMKDAsZnVuY3Rpb24obXIpe3ZhciBDcj1wcihtcik7WTAobXIsMCk7Zm9yKHZhciBzcj0wLFByPTA7Oyl7dmFyIEswPUEwKG1yKTtpZih0eXBlb2YgSzA9PVwibnVtYmVyXCIpe3ZhciBVcj0wO2lmKChLMD09PTF8fFBuPT09SzApJiYoVXI9MSksVXIpe3ZhciBoMD15ZShQciksS3I9aDA9PT0wPzE6MCxyZT1LciYmcHIobXIpO3JldHVybiBZMChtciwxKSxbMCxbMCxoMCx5dShbMCxDcl0sWzAsYyhtcilbMV1dLHJlLDApXSxzcl19fXZhciB4ZT1vKHcwLGgwZSxtciksUmU9eGVbMl0sdmU9MDtpZihzcilpZihzclsxXSlpZihSZVswXT09PTEwKXtqZShtciw3OSk7dmFyIEFlPXNyfWVsc2UgdmU9MTtlbHNlIHN3aXRjaChSZVswXSl7Y2FzZSA2OnZhciBJZT1SZVsxXVsyXSxHZT0wO2lmKEllKXN3aXRjaChJZVsxXVswXSl7Y2FzZSA0OmNhc2UgNjpHZT0xO2JyZWFrfUdlfHxqZShtciw3OSk7dmFyIEFlPXNyO2JyZWFrO2Nhc2UgMTA6amUobXIsNzgpO3ZhciBBZT1zcjticmVhaztkZWZhdWx0OnZlPTF9ZWxzZSBzd2l0Y2goUmVbMF0pe2Nhc2UgNjp2YXIgTWU9UmVbMV1bMl0sYW49MDtpZihNZSlzd2l0Y2goTWVbMV1bMF0pe2Nhc2UgNDpjYXNlIDY6dmFyIFdlPXNyO2FuPTE7YnJlYWt9aWYoIWFuKXZhciBXZT1kMGU7dmFyIEFlPVdlO2JyZWFrO2Nhc2UgMTA6dmFyIEFlPWswZTticmVhaztkZWZhdWx0OnZlPTF9aWYodmUpdmFyIEFlPXNyO3ZhciBzcj1BZSxQcj1bMCx4ZSxQcl19fSx5MCksUTA9aXJbMl0sRjA9UTAmJlEwWzFdLFNyPWxyKFswLFldLDAsMCk7cmV0dXJuWzksWzAsSjAsaXJbMV0sRjAsU3JdXX0sayk6Y3IoWzAsSV0sdShvMCxZKSxrKX0pLE4obzAsZnVuY3Rpb24oXyxrKXt2YXIgST1wcihrKTtZMChrLDEwKTt2YXIgVT1wcihrKTtabChrLHkwZSk7dmFyIFk9cGwoWzAsXyxbMCxJLFswLFUsWzAscHIoayksMF1dXV0pLHkwPXUobW5bOV0sayksUDA9eCgwLDAsayk7aWYoUDBbMF09PT0wKXZhciB1MD1QMFsxXSxYMD15MDtlbHNlIHZhciBJMD0wLEQ9ZnVuY3Rpb24oSjAsaXIpe3JldHVybiBvKFFlKEowLE9FLFh0KSxKMCxpcil9LHUwPUkwLFgwPW8oUDBbMV1bMl0seTAsRCk7cmV0dXJuWzEwLFswLFgwLGxyKFswLFldLFswLHUwXSwwKV1dfSksTih3MCxmdW5jdGlvbihfLGspe3ZhciBJPV8mJl9bMV07MS1mdShrKSYmamUoaywxMyk7dmFyIFU9WW4oMSxrKTtpZih0eXBlb2YgVT09XCJudW1iZXJcIilzd2l0Y2goVSl7Y2FzZSAyNDpyZXR1cm4gdShjMCxrKTtjYXNlIDQwOnJldHVybiB1KGcwLGspO2Nhc2UgNDY6aWYoQTAoayk9PT01MClyZXR1cm4gRnIoayk7YnJlYWs7Y2FzZSA0OTppZihJKXJldHVybiBvKFgsWzAsSV0sayk7YnJlYWs7Y2FzZSA1MzpyZXR1cm4gdShmMCxrKTtjYXNlIDYxOnZhciBZPUEwKGspO3JldHVybiB0eXBlb2YgWT09XCJudW1iZXJcIiYmWT09PTUwJiZJP0ZyKGspOnUoRyxrKTtjYXNlIDYyOnJldHVybiB1KE0sayk7Y2FzZSAxNTpjYXNlIDY0OnJldHVybiB1KHgwLGspfWVsc2UgaWYoVVswXT09PTQmJiFuMChVWzNdLF8wZSkpcmV0dXJuIG8odDAsSSxrKTtpZihJKXt2YXIgeTA9QTAoayk7cmV0dXJuIHR5cGVvZiB5MD09XCJudW1iZXJcIiYmeTA9PT01MD8oamUoayw4MiksdShzZVsyXSxrKSk6dShjMCxrKX1yZXR1cm4gdShzZVsyXSxrKX0pLE4oXzAsZnVuY3Rpb24oXyl7WmwoXyxiMGUpO3ZhciBrPUEwKF8pO2lmKHR5cGVvZiBrIT1cIm51bWJlclwiJiZrWzBdPT09MilyZXR1cm4gaShfLGtbMV0pO3ZhciBJPVswLFBlKF8pLHAwZV07cmV0dXJuIFN0KG0wZSxfKSxJfSksTihFMCxmdW5jdGlvbihfKXt2YXIgaz11KF8wLF8pLEk9a1syXSxVPWtbMV0sWT14KDAsMCxfKTtpZihZWzBdPT09MClyZXR1cm5bMCxbMCxVLEldLFlbMV1dO3ZhciB5MD0wO2Z1bmN0aW9uIFAwKEkwLEQpe3JldHVybiB1cihRZShJMCxoQSxjZiksSTAsVSxEKX1yZXR1cm5bMCxbMCxVLG8oWVsxXVsyXSxJLFAwKV0seTBdfSksTihVMCxmdW5jdGlvbihfLGssSSl7dmFyIFU9Xz9fWzFdOjEsWT1BMChrKTtpZih0eXBlb2YgWT09XCJudW1iZXJcIil7dmFyIHkwPTA7aWYoKFk9PT0xfHxQbj09PVkpJiYoeTA9MSkseTApcmV0dXJuIHllKEkpfTEtVSYmamUoayw4NSk7dmFyIFAwPWNyKDAsZnVuY3Rpb24oSTApe3ZhciBEPXo3KEkwKSx1MD1BMChJMCksWDA9MDtpZih0eXBlb2YgdTAhPVwibnVtYmVyXCImJnUwWzBdPT09NCYmIW4wKHUwWzNdLGwwZSkpe2llKEkwKTt2YXIgSjA9WzAsejcoSTApXTtYMD0xfWlmKCFYMCl2YXIgSjA9MDtyZXR1cm5bMCxELEowXX0sayk7cmV0dXJuIHVyKFUwLFswLHh1KGssOSldLGssWzAsUDAsSV0pfSksTihiLGZ1bmN0aW9uKF8sayl7cmV0dXJuIER1KGZ1bmN0aW9uKEkpe3ZhciBVPUlbMl07cmV0dXJuIFVbMl0/MDplKHYwZSxfLFVbMV0pfSxrKX0pLE4oUjAsZnVuY3Rpb24oXyxrKXt2YXIgST1uZTAoMSxfcygxLGspKSxVPXByKEkpLFk9UGUoSSk7WTAoSSw0OSk7dmFyIHkwPUEwKEkpO2lmKHR5cGVvZiB5MD09XCJudW1iZXJcIil7aWYoNTM8PXkwKXtpZighKDYzPD15MCkpc3dpdGNoKHkwK2NVfDApe2Nhc2UgMDpyZXR1cm4gY3IoWzAsWV0sZnVuY3Rpb24oRCl7MS1mdShEKSYmamUoRCwxNSk7dmFyIHUwPWNyKDAsdShWLDApLEQpLFgwPVswLHUwWzFdLFsyNix1MFsyXV1dO3JldHVyblsxOCxbMCxbMCxYMF0sMCwwLDAsbHIoWzAsVV0sMCwwKV1dfSxJKTtjYXNlIDg6aWYoWW4oMSxJKSE9PTApcmV0dXJuIGNyKFswLFldLGZ1bmN0aW9uKEQpezEtZnUoRCkmJmplKEQsMTUpO3ZhciB1MD1ZbigxLEQpO2lmKHR5cGVvZiB1MD09XCJudW1iZXJcIil7aWYodTA9PT00OClyZXR1cm4gamUoRCwwKSxZMChELDYxKSxbMTgsWzAsMCwwLDAsMCxscihbMCxVXSwwLDApXV07aWYoWXQ9PT11MCl7WTAoRCw2MSk7dmFyIFgwPVBlKEQpO1kwKEQsWXQpO3ZhciBKMD11KEUwLEQpLGlyPWxyKFswLFVdLFswLEowWzJdXSwwKTtyZXR1cm5bMTgsWzAsMCxbMCxbMSxbMCxYMCwwXV1dLFswLEowWzFdXSwwLGlyXV19fXZhciBRMD1jcigwLHUodywwKSxEKSxGMD1bMCxRMFsxXSxbMzIsUTBbMl1dXTtyZXR1cm5bMTgsWzAsWzAsRjBdLDAsMCwwLGxyKFswLFVdLDAsMCldXX0sSSk7YnJlYWs7Y2FzZSA5OnJldHVybiBjcihbMCxZXSxmdW5jdGlvbihEKXt2YXIgdTA9Y3IoMCxmdW5jdGlvbihKMCl7cmV0dXJuIHUobyhTLDAsMCksSjApfSxEKSxYMD1bMCx1MFsxXSxbMzMsdTBbMl1dXTtyZXR1cm5bMTgsWzAsWzAsWDBdLDAsMCwwLGxyKFswLFVdLDAsMCldXX0sSSl9fWVsc2UgaWYoeTA9PT0zNilyZXR1cm4gY3IoWzAsWV0sZnVuY3Rpb24oRCl7dmFyIHUwPW9uKFUscHIoRCkpLFgwPWNyKDAsZnVuY3Rpb24oVXIpe3JldHVybiBZMChVciwzNil9LEQpLEowPXRlMCgxLEQpO2lmKEdzKEowKSl2YXIgaXI9MCxRMD1bMCx1KFZuWzEwXSxKMCldO2Vsc2UgaWYoJGwoSjApKXZhciBpcj0wLFEwPVswLG8oVXNbM10sSjAsXyldO2Vsc2UgaWYoQTAoSjApPT09NDgpdmFyIGlyPTAsUTA9WzAsdShWblsxMV0sSjApXTtlbHNle3ZhciBGMD11KHNlWzEwXSxKMCksU3I9eCgwLDAsSjApO2lmKFNyWzBdPT09MCl2YXIgc3I9U3JbMV0sUHI9RjA7ZWxzZSB2YXIgbXI9MCxDcj1mdW5jdGlvbihLcixyZSl7cmV0dXJuIG8oUWUoS3IsRGksVDcpLEtyLHJlKX0sc3I9bXIsUHI9byhTclsxXVsyXSxGMCxDcik7dmFyIGlyPXNyLFEwPVsxLFByXX12YXIgSzA9bHIoWzAsdTBdLFswLGlyXSwwKTtyZXR1cm5bMTcsWzAsWDBbMV0sUTAsSzBdXX0sSSl9aWYoJGwoSSkpcmV0dXJuIGNyKFswLFldLGZ1bmN0aW9uKEQpe3ZhciB1MD1vKFVzWzNdLEQsXyk7cmV0dXJuWzE4LFswLFswLHUwXSwwLDAsMSxscihbMCxVXSwwLDApXV19LEkpO2lmKEdzKEkpKXJldHVybiBjcihbMCxZXSxmdW5jdGlvbihEKXt1KEE5KEQpLF8pO3ZhciB1MD11KFZuWzEwXSxEKTtyZXR1cm5bMTgsWzAsWzAsdTBdLDAsMCwxLGxyKFswLFVdLDAsMCldXX0sSSk7aWYodHlwZW9mIHkwPT1cIm51bWJlclwiKWlmKDI5PD15MCl7aWYoeTA9PT00OCl7aWYoSVsyN11bMV0pcmV0dXJuIGNyKFswLFldLGZ1bmN0aW9uKEQpe3ZhciB1MD1vKHNlWzNdLFswLF9dLEQpO3JldHVyblsxOCxbMCxbMCx1MF0sMCwwLDEsbHIoWzAsVV0sMCwwKV1dfSxJKX1lbHNlIGlmKFl0PT09eTApcmV0dXJuIGNyKFswLFldLGZ1bmN0aW9uKEQpe3ZhciB1MD1QZShEKTtZMChELFl0KTt2YXIgWDA9RFsyN11bM10sSjA9QTAoRCksaXI9MDtpZih0eXBlb2YgSjAhPVwibnVtYmVyXCImJkowWzBdPT09NCYmIW4wKEowWzNdLGMwZSkpe2llKEQpO3ZhciBRMD1YMD9bMCxvKHNlWzEzXSwwLEQpXTooamUoRCwxMyksMCksRjA9UTA7aXI9MX1pZighaXIpdmFyIEYwPTA7dmFyIFNyPXUoRTAsRCksbXI9bHIoWzAsVV0sWzAsU3JbMl1dLDApO3JldHVyblsxOCxbMCwwLFswLFsxLFswLHUwLEYwXV1dLFswLFNyWzFdXSwxLG1yXV19LEkpfWVsc2V7dmFyIFAwPTA7aWYoKHkwPT09MjR8fDI3PD15MCkmJihQMD0xKSxQMClyZXR1cm4gY3IoWzAsWV0sZnVuY3Rpb24oRCl7dmFyIHUwPW8oc2VbM10sWzAsX10sRCk7cmV0dXJuWzE4LFswLFswLHUwXSwwLDAsMSxscihbMCxVXSwwLDApXV19LEkpfXZhciBJMD14dShJLDYxKT8wOjE7cmV0dXJuIHh1KEksMCk/Y3IoWzAsWV0sZnVuY3Rpb24oRCl7dmFyIHUwPXVyKFUwLDAsRCwwKTtZMChELDEpO3ZhciBYMD1BMChEKSxKMD0wO2lmKHR5cGVvZiBYMCE9XCJudW1iZXJcIiYmWDBbMF09PT00JiYhbjAoWDBbM10sYTBlKSl7dmFyIGlyPXUoRTAsRCksUTA9aXJbMl0sRjA9WzAsaXJbMV1dO0owPTF9aWYoIUowKXtvKGIsRCx1MCk7dmFyIFNyPXgoMCwwLEQpLG1yPVNyWzBdPT09MD9TclsxXTpTclsxXVsxXSxRMD1tcixGMD0wfXJldHVyblsxOCxbMCwwLFswLFswLHUwXV0sRjAsSTAsbHIoWzAsVV0sWzAsUTBdLDApXV19LEkpOihTdChzMGUsSSksbyhzZVszXSxbMCxfXSxJKSl9KSxOKFgsZnVuY3Rpb24oXyl7dmFyIGs9XyYmX1sxXTtmdW5jdGlvbiBJKFkpezEtZnUoWSkmJmplKFksMTMpO3ZhciB5MD1wcihZKTtZMChZLDYwKTt2YXIgUDA9bmUwKDEsX3MoMSxZKSksSTA9b24oeTAscHIoUDApKTtZMChQMCw0OSk7dmFyIEQ9QTAoUDApO2lmKHR5cGVvZiBEPT1cIm51bWJlclwiKWlmKDUzPD1EKXtpZihZdD09PUQpe3ZhciB1MD1QZShQMCk7WTAoUDAsWXQpO3ZhciBYMD1QMFsyN11bM10sSjA9QTAoUDApLGlyPTA7aWYodHlwZW9mIEowIT1cIm51bWJlclwiJiZKMFswXT09PTQmJiFuMChKMFszXSxmMGUpKXtpZShQMCk7dmFyIFEwPVgwP1swLG8oc2VbMTNdLDAsUDApXTooamUoUDAsMTMpLDApLEYwPVEwO2lyPTF9aWYoIWlyKXZhciBGMD0wO3ZhciBTcj11KEUwLFAwKSxtcj1scihbMCxJMF0sWzAsU3JbMl1dLDApO3JldHVybls2LFswLDAsMCxbMCxbMSxbMCx1MCxGMF1dXSxbMCxTclsxXV0sbXJdXX1pZighKDYzPD1EKSlzd2l0Y2goRCtjVXwwKXtjYXNlIDA6aWYoayl7dmFyIENyPWNyKDAsdShWLDApLFAwKTtyZXR1cm5bNixbMCwwLFswLFs2LENyXV0sMCwwLGxyKFswLEkwXSwwLDApXV19YnJlYWs7Y2FzZSA4OmlmKGspe3ZhciBzcj1jcigwLHUodywwKSxQMCk7cmV0dXJuWzYsWzAsMCxbMCxbNCxzcl1dLDAsMCxscihbMCxJMF0sMCwwKV1dfWJyZWFrO2Nhc2UgOTp2YXIgUHI9Y3IoMCxvKFMsaTBlLDApLFAwKTtyZXR1cm5bNixbMCwwLFswLFs1LFByXV0sMCwwLGxyKFswLEkwXSwwLDApXV19fWVsc2V7dmFyIEswPUQtMTV8MDtpZighKDI1PEswPj4+MCkpc3dpdGNoKEswKXtjYXNlIDIxOnZhciBVcj1vbihJMCxwcihQMCkpLGgwPWNyKDAsZnVuY3Rpb24oQ3Qpe3JldHVybiBZMChDdCwzNil9LFAwKSxLcj10ZTAoMSxQMCkscmU9QTAoS3IpLHhlPTA7aWYodHlwZW9mIHJlPT1cIm51bWJlclwiKWlmKHJlPT09MTUpdmFyIFJlPTAsdmU9UmUsSWU9WzAsWzEsY3IoMCxmdW5jdGlvbihDdCl7cmV0dXJuIG8oZTAsMCxDdCl9LEtyKV1dO2Vsc2UgaWYocmU9PT00MCl2YXIgdmU9MCxJZT1bMCxbMixjcigwLHUoazAsMCksS3IpXV07ZWxzZSB4ZT0xO2Vsc2UgeGU9MTtpZih4ZSl7dmFyIEdlPXUobW5bMV0sS3IpLE1lPXgoMCwwLEtyKTtpZihNZVswXT09PTApdmFyIEFlPU1lWzFdLGNuPUdlO2Vsc2UgdmFyIGFuPTAsV2U9ZnVuY3Rpb24oV3UsbHQpe3JldHVybiBvKFFlKFd1LF92LFBuKSxXdSxsdCl9LEFlPWFuLGNuPW8oTWVbMV1bMl0sR2UsV2UpO3ZhciB2ZT1BZSxJZT1bMCxbMyxjbl1dfXZhciBybj1scihbMCxVcl0sWzAsdmVdLDApO3JldHVybls2LFswLFswLGgwWzFdXSxJZSwwLDAscm5dXTtjYXNlIDA6Y2FzZSA5OmNhc2UgMTI6Y2FzZSAxMzpjYXNlIDI1OnZhciBrbj1BMChQMCk7aWYodHlwZW9mIGtuPT1cIm51bWJlclwiKXt2YXIgdm49MDtpZigyNTw9a24paWYoMjk8PWtuKXtpZihrbj09PTQwKXt2YXIgTmU9WzAsWzIsY3IoMCx1KGswLDApLFAwKV1dO3ZuPTF9fWVsc2UgMjc8PWtuJiYodm49Mik7ZWxzZSBpZihrbj09PTE1KXt2YXIgTmU9WzAsWzEsY3IoMCxmdW5jdGlvbihkdSl7cmV0dXJuIG8oZTAsMCxkdSl9LFAwKV1dO3ZuPTF9ZWxzZSAyNDw9a24mJih2bj0yKTt2YXIgSmU9MDtzd2l0Y2godm4pe2Nhc2UgMDpicmVhaztjYXNlIDI6dmFyIGVuPTA7dHlwZW9mIGtuPT1cIm51bWJlclwiP2tuPT09Mjc/amUoUDAsNzIpOmtuPT09Mjg/amUoUDAsNzEpOmVuPTE6ZW49MTt2YXIgTmU9WzAsWzAsY3IoMCxmdW5jdGlvbihkdSl7cmV0dXJuIG8obCxkdSwwKX0sUDApXV07SmU9MTticmVhaztkZWZhdWx0OkplPTF9aWYoSmUpcmV0dXJuWzYsWzAsMCxOZSwwLDAsbHIoWzAsSTBdLDAsMCldXX10aHJvd1swLFNuLG8wZV19fXZhciBfbj1BMChQMCksQ249MDt0eXBlb2YgX249PVwibnVtYmVyXCI/X249PT01Mz9qZShQMCw3NCk6X249PT02MT9qZShQMCw3Myk6Q249MTpDbj0xLFkwKFAwLDApO3ZhciBIbj11cihVMCwwLFAwLDApO1kwKFAwLDEpO3ZhciBGbj1BMChQMCksdnQ9MDtpZih0eXBlb2YgRm4hPVwibnVtYmVyXCImJkZuWzBdPT09NCYmIW4wKEZuWzNdLHgwZSkpe3ZhciBOdD11KEUwLFAwKSxndD1OdFsyXSxadD1bMCxOdFsxXV07dnQ9MX1pZighdnQpe28oYixQMCxIbik7dmFyIHF0PXgoMCwwLFAwKSxGdD1xdFswXT09PTA/cXRbMV06cXRbMV1bMV0sZ3Q9RnQsWnQ9MH1yZXR1cm5bNixbMCwwLDAsWzAsWzAsSG5dXSxadCxscihbMCxJMF0sWzAsZ3RdLDApXV19dmFyIFU9MDtyZXR1cm4gZnVuY3Rpb24oWSl7cmV0dXJuIGNyKFUsSSxZKX19KSxbMCxScixJciwkMCxCLEJyLEUsZCx5LFQsQXIsdzAsWCxNLExyLHAsUjAsYmUsRnIsbTAsJHIsSyxQLGkwLFQwLEEsYjAsZXJdfShSOSksR2UwPWZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uIHkoVCxFKXtyZXR1cm4geS5mdW4oVCxFKX0sZT1mdW5jdGlvbiB5KFQsRSl7cmV0dXJuIHkuZnVuKFQsRSl9LGk9ZnVuY3Rpb24geShULEUpe3JldHVybiB5LmZ1bihULEUpfTtOKG4sZnVuY3Rpb24oeSxUKXtmb3IodmFyIEU9VFsyXSxkPUVbMl0sdz1hMih5KSxHPTAsQT1FWzFdOzspe2lmKEEpe3ZhciBTPUFbMV07aWYoU1swXT09PTApe3ZhciBNPVNbMV0sSz1NWzJdO3N3aXRjaChLWzBdKXtjYXNlIDA6dmFyIFY9S1syXSxmMD1LWzFdO3N3aXRjaChmMFswXSl7Y2FzZSAwOnZhciBtMD1bMCxmMFsxXV07YnJlYWs7Y2FzZSAxOnZhciBtMD1bMSxmMFsxXV07YnJlYWs7Y2FzZSAyOnZhciBtMD1rZSh0MGUpO2JyZWFrO2RlZmF1bHQ6dmFyIG0wPVsyLGYwWzFdXX12YXIgazA9VlsyXSxnMD0wO2lmKGswWzBdPT09Mil7dmFyIGUwPWswWzFdO2lmKCFlMFsxXSl7dmFyIHgwPVswLGUwWzNdXSxsPWUwWzJdO2cwPTF9fWlmKCFnMCl2YXIgeDA9MCxsPW8oaSx5LFYpO3ZhciBjMD1bMCxbMCxbMCxNWzFdLFswLG0wLGwseDAsS1szXV1dXSxHXTticmVhaztjYXNlIDE6dWUoeSxbMCxLWzJdWzFdLDk3XSk7dmFyIGMwPUc7YnJlYWs7ZGVmYXVsdDp1ZSh5LFswLEtbMl1bMV0sdTBlXSk7dmFyIGMwPUd9dmFyIEc9YzAsQT1BWzJdO2NvbnRpbnVlfXZhciB0MD1TWzFdLG8wPXQwWzFdO2lmKEFbMl0pe3VlKHksWzAsbzAsNjZdKTt2YXIgQT1BWzJdO2NvbnRpbnVlfXZhciB3MD10MFsyXSxfMD13MFsyXSxHPVswLFsxLFswLG8wLFswLG8oaSx5LHcwWzFdKSxfMF1dXSxHXSxBPTA7Y29udGludWV9dmFyIEUwPVswLFswLHllKEcpLHcsZF1dO3JldHVyblswLFRbMV0sRTBdfX0pO2Z1bmN0aW9uIHgoeSxUKXtyZXR1cm4gdShzZVsyM10sVCk/WzAsbyhpLHksVCldOih1ZSh5LFswLFRbMV0sMjZdKSwwKX1OKGUsZnVuY3Rpb24oeSxUKXtmb3IodmFyIEU9VFsyXSxkPUVbMl0sdz1hMih5KSxHPTAsQT1FWzFdOzspe2lmKEEpe3ZhciBTPUFbMV07c3dpdGNoKFNbMF0pe2Nhc2UgMDp2YXIgTT1TWzFdLEs9TVsyXTtpZihLWzBdPT09Mil7dmFyIFY9S1sxXTtpZighVlsxXSl7dmFyIEc9WzAsWzAsWzAsTVsxXSxbMCxWWzJdLFswLFZbM11dXV1dLEddLEE9QVsyXTtjb250aW51ZX19dmFyIGYwPXgoeSxNKTtpZihmMCl2YXIgbTA9ZjBbMV0sazA9WzAsWzAsWzAsbTBbMV0sWzAsbTAsMF1dXSxHXTtlbHNlIHZhciBrMD1HO3ZhciBHPWswLEE9QVsyXTtjb250aW51ZTtjYXNlIDE6dmFyIGcwPVNbMV0sZTA9ZzBbMV07aWYoQVsyXSl7dWUoeSxbMCxlMCw2NV0pO3ZhciBBPUFbMl07Y29udGludWV9dmFyIHgwPWcwWzJdLGw9eCh5LHgwWzFdKSxjMD1sP1swLFsxLFswLGUwLFswLGxbMV0seDBbMl1dXV0sR106RyxHPWMwLEE9MDtjb250aW51ZTtkZWZhdWx0OnZhciBHPVswLFsyLFNbMV1dLEddLEE9QVsyXTtjb250aW51ZX19dmFyIHQwPVsxLFswLHllKEcpLHcsZF1dO3JldHVyblswLFRbMV0sdDBdfX0pLE4oaSxmdW5jdGlvbih5LFQpe3ZhciBFPVRbMl0sZD1UWzFdO3N3aXRjaChFWzBdKXtjYXNlIDA6cmV0dXJuIG8oZSx5LFswLGQsRVsxXV0pO2Nhc2UgMTA6dmFyIHc9RVsxXSxHPXdbMl1bMV0sQT13WzFdLFM9MDtpZih5WzVdJiZqcyhHKT91ZSh5LFswLEEsNTJdKTpTPTEsUyYmMS15WzVdKXt2YXIgTT0wO2lmKHlbMTddJiZxbihHLGUwZSk/dWUoeSxbMCxBLDkzXSk6TT0xLE0pe3ZhciBLPXlbMThdLFY9SyYmcW4oRyxuMGUpO1YmJnVlKHksWzAsQSw5Ml0pfX1yZXR1cm5bMCxkLFsyLFswLHcsYTIoeSksMF1dXTtjYXNlIDE5OnJldHVybiBvKG4seSxbMCxkLEVbMV1dKTtkZWZhdWx0OnJldHVyblswLGQsWzMsWzAsZCxFXV1dfX0pO2Z1bmN0aW9uIGMoeSl7ZnVuY3Rpb24gVCh3KXt2YXIgRz1BMCh3KTtyZXR1cm4gdHlwZW9mIEc9PVwibnVtYmVyXCImJkc9PT04Mj8oWTAodyw4MiksWzAsdShzZVsxMF0sdyldKTowfWZ1bmN0aW9uIEUodyl7dmFyIEc9cHIodyk7WTAodywwKTtmb3IodmFyIEE9MCxTPTAsTT0wOzspe3ZhciBLPUEwKHcpO2lmKHR5cGVvZiBLPT1cIm51bWJlclwiKXt2YXIgVj0wO2lmKChLPT09MXx8UG49PT1LKSYmKFY9MSksVil7UyYmdWUodyxbMCxTWzFdLDk4XSk7dmFyIGYwPXllKE0pLG0wPXByKHcpO1kwKHcsMSk7dmFyIGswPXdlKHcpLGcwPUEwKHcpPT09ODY/WzEsdSh0WzldLHcpXTphMih3KTtyZXR1cm5bMCxbMCxmMCxnMCx5dShbMCxHXSxbMCxrMF0sbTAsMCldXX19aWYoQTAodyk9PT0xMil2YXIgZTA9cHIodykseDA9Y3IoMCxmdW5jdGlvbihKcil7cmV0dXJuIFkwKEpyLDEyKSxwKEpyLHkpfSx3KSxsPWxyKFswLGUwXSwwLDApLGMwPVswLFsxLFswLHgwWzFdLFswLHgwWzJdLGxdXV1dO2Vsc2V7dmFyIHQwPVBlKHcpLG8wPW8oc2VbMjBdLDAsdyksdzA9QTAodyksXzA9MDtpZih0eXBlb2YgdzA9PVwibnVtYmVyXCImJncwPT09ODYpe1kwKHcsODYpO3ZhciBFMD1jcihbMCx0MF0sZnVuY3Rpb24oYXIpe3ZhciBfcj1wKGFyLHkpO3JldHVyblswLF9yLFQoYXIpXX0sdyksVTA9RTBbMl0sYj1vMFsyXTtzd2l0Y2goYlswXSl7Y2FzZSAwOnZhciBSMD1bMCxiWzFdXTticmVhaztjYXNlIDE6dmFyIFIwPVsxLGJbMV1dO2JyZWFrO2Nhc2UgMjp2YXIgUjA9a2UoJFFyKTticmVhaztkZWZhdWx0OnZhciBSMD1bMixiWzFdXX12YXIgYzA9WzAsWzAsWzAsRTBbMV0sWzAsUjAsVTBbMV0sVTBbMl0sMF1dXV19ZWxzZSBfMD0xO2lmKF8wKXt2YXIgWD1vMFsyXTtpZihYWzBdPT09MSl7dmFyIHMwPVhbMV0saHI9czBbMl1bMV0sQXI9czBbMV0sb3I9MDtrTChocikmJm4wKGhyLFFRcikmJm4wKGhyLHIwZSkmJih1ZSh3LFswLEFyLDJdKSxvcj0xKSwhb3ImJmYyKGhyKSYmVjcodyxbMCxBciw1NV0pO3ZhciBXMD1jcihbMCx0MF0sZnVuY3Rpb24oYXIsX3Ipe3JldHVybiBmdW5jdGlvbihJcil7dmFyIGZlPVswLF9yLFsyLFswLGFyLGEyKElyKSwwXV1dO3JldHVyblswLGZlLFQoSXIpXX19KHMwLEFyKSx3KSxMcj1XMFsyXSxjMD1bMCxbMCxbMCxXMFsxXSxbMCxbMSxzMF0sTHJbMV0sTHJbMl0sMV1dXV19ZWxzZXtTdChaUXIsdyk7dmFyIGMwPTB9fX1pZihjMCl7dmFyIFRyPWMwWzFdLEhyPUE/KHVlKHcsWzAsVHJbMV1bMV0sNjZdKSwwKTpTO2lmKFRyWzBdPT09MCl2YXIgUnI9SHIsV3I9QTtlbHNlIHZhciBPcj1BMCh3KT09PTk/MTowLGZyPU9yJiZbMCxQZSh3KV0sUnI9ZnIsV3I9MTtBMCh3KSE9PTEmJlkwKHcsOSk7dmFyIEE9V3IsUz1ScixNPVswLFRyLE1dO2NvbnRpbnVlfX19dmFyIGQ9MDtyZXR1cm4gZnVuY3Rpb24odyl7cmV0dXJuIGNyKGQsRSx3KX19ZnVuY3Rpb24gcyh5KXtmdW5jdGlvbiBUKGQpe3ZhciB3PXByKGQpO1kwKGQsNik7Zm9yKHZhciBHPTA7Oyl7dmFyIEE9QTAoZCk7aWYodHlwZW9mIEE9PVwibnVtYmVyXCIpe3ZhciBTPTA7aWYoMTM8PUEpUG49PT1BJiYoUz0xKTtlbHNlIGlmKDc8PUEpc3dpdGNoKEEtN3wwKXtjYXNlIDI6dmFyIE09UGUoZCk7WTAoZCw5KTt2YXIgRz1bMCxbMixNXSxHXTtjb250aW51ZTtjYXNlIDU6dmFyIEs9cHIoZCksVj1jcigwLGZ1bmN0aW9uKF8wKXtyZXR1cm4gWTAoXzAsMTIpLHAoXzAseSl9LGQpLGYwPVZbMV0sbTA9bHIoWzAsS10sMCwwKSxrMD1bMSxbMCxmMCxbMCxWWzJdLG0wXV1dO0EwKGQpIT09NyYmKHVlKGQsWzAsZjAsNjVdKSxBMChkKT09PTkmJmllKGQpKTt2YXIgRz1bMCxrMCxHXTtjb250aW51ZTtjYXNlIDA6Uz0xO2JyZWFrfWlmKFMpe3ZhciBnMD15ZShHKSxlMD1wcihkKTtZMChkLDcpO3ZhciB4MD1BMChkKT09PTg2P1sxLHUodFs5XSxkKV06YTIoZCk7cmV0dXJuWzEsWzAsZzAseDAseXUoWzAsd10sWzAsd2UoZCldLGUwLDApXV19fXZhciBsPWNyKDAsZnVuY3Rpb24odzApe3ZhciBfMD1wKHcwLHkpLEUwPUEwKHcwKSxVMD0wO2lmKHR5cGVvZiBFMD09XCJudW1iZXJcIiYmRTA9PT04Mil7WTAodzAsODIpO3ZhciBiPVswLHUoc2VbMTBdLHcwKV07VTA9MX1pZighVTApdmFyIGI9MDtyZXR1cm5bMCxfMCxiXX0sZCksYzA9bFsyXSx0MD1bMCxbMCxsWzFdLFswLGMwWzFdLGMwWzJdXV1dO0EwKGQpIT09NyYmWTAoZCw5KTt2YXIgRz1bMCx0MCxHXX19dmFyIEU9MDtyZXR1cm4gZnVuY3Rpb24oZCl7cmV0dXJuIGNyKEUsVCxkKX19ZnVuY3Rpb24gcCh5LFQpe3ZhciBFPUEwKHkpO2lmKHR5cGVvZiBFPT1cIm51bWJlclwiKXtpZihFPT09NilyZXR1cm4gdShzKFQpLHkpO2lmKCFFKXJldHVybiB1KGMoVCkseSl9dmFyIGQ9dXIoc2VbMTRdLHksMCxUKTtyZXR1cm5bMCxkWzFdLFsyLGRbMl1dXX1yZXR1cm5bMCxuLGUsaSxjLHMscF19KG1uKSx1bmU9WmVlKHNlKSxpbmU9bW5bOV07ZnVuY3Rpb24gTWUwKHQsbil7dmFyIGU9QTAobiksaT0wO2lmKHR5cGVvZiBlPT1cIm51bWJlclwiP2U9PT0yOD9uWzVdP2plKG4sNTUpOm5bMTRdJiZTdCgwLG4pOmU9PT01OD9uWzE3XT9qZShuLDIpOm5bNV0mJmplKG4sNTUpOmU9PT02NT9uWzE4XSYmamUobiwyKTppPTE6aT0xLGkpaWYoZEwoZSkpZ2kobiw1NSk7ZWxzZXt2YXIgeD0wO2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXN3aXRjaChlKXtjYXNlIDE1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMTk6Y2FzZSAyMDpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjU6Y2FzZSAyNjpjYXNlIDI3OmNhc2UgMzI6Y2FzZSAzMzpjYXNlIDM0OmNhc2UgMzU6Y2FzZSAzNjpjYXNlIDM3OmNhc2UgMzg6Y2FzZSAzOTpjYXNlIDQwOmNhc2UgNDE6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgNDU6Y2FzZSA0NjpjYXNlIDQ3OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTg6Y2FzZSA1OTpjYXNlIDY1OnZhciBjPTE7eD0xO2JyZWFrfWVsc2UgaWYoZVswXT09PTQmJnhlMChlWzNdKSl7dmFyIGM9MTt4PTF9aWYoIXgpdmFyIGM9MDt2YXIgcz0wO2lmKGMpdmFyIHA9YztlbHNle3ZhciB5PWhMKGUpO2lmKHkpdmFyIHA9eTtlbHNle3ZhciBUPTA7aWYodHlwZW9mIGU9PVwibnVtYmVyXCIpc3dpdGNoKGUpe2Nhc2UgMjk6Y2FzZSAzMDpjYXNlIDMxOmJyZWFrO2RlZmF1bHQ6VD0xfWVsc2UgaWYoZVswXT09PTQpe3ZhciBFPWVbM107bjAoRSxYUnIpJiZuMChFLFlScikmJm4wKEUsVlJyKSYmKFQ9MSl9ZWxzZSBUPTE7aWYoVCl7dmFyIGQ9MDtzPTF9ZWxzZSB2YXIgcD0xfX1pZighcyl2YXIgZD1wO2lmKGQpU3QoMCxuKTtlbHNle3ZhciB3PTA7dCYmb2UwKGUpP2dpKG4sdFsxXSk6dz0xfX1yZXR1cm4gejcobil9dmFyIEJlMD1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX0sakw9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sR0w9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LHFlMD1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LE1MPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sQkw9ZnVuY3Rpb24gdChuLGUpe3JldHVybiB0LmZ1bihuLGUpfSxqOT1mdW5jdGlvbiB0KG4sZSl7cmV0dXJuIHQuZnVuKG4sZSl9LHhiPWZ1bmN0aW9uIHQobixlKXtyZXR1cm4gdC5mdW4obixlKX0sRzk9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LFVlMD1mdW5jdGlvbiB0KG4pe3JldHVybiB0LmZ1bihuKX0sSGUwPWZ1bmN0aW9uIHQobil7cmV0dXJuIHQuZnVuKG4pfSxYZTA9ZnVuY3Rpb24gdChuLGUsaSl7cmV0dXJuIHQuZnVuKG4sZSxpKX0sWWUwPWZ1bmN0aW9uIHQobil7cmV0dXJuIHQuZnVuKG4pfSxWZTA9ZnVuY3Rpb24gdChuKXtyZXR1cm4gdC5mdW4obil9LHplMD1Vc1szXSxmbmU9Y2lbM10seG5lPWNpWzFdLG9uZT1jaVs1XSxhbmU9VXNbMl0sY25lPVVzWzFdLHNuZT1Vc1s0XSx2bmU9Y2lbNF0sbG5lPWNpWzZdLGJuZT11bmVbMTNdLHBuZT1HZTBbNl0sbW5lPUdlMFszXTtOKEJlMCxmdW5jdGlvbih0KXt2YXIgbj1wcih0KSxlPXllKG4pLGk9NTtyOmZvcig7Oyl7aWYoZSlmb3IodmFyIHg9ZVsyXSxjPWVbMV0scz1jWzJdLHA9Y1sxXSx5PXNbMl0sVD0wLEU9dW4oeSk7Oyl7aWYoRTwoVCs1fDApKXZhciBkPTA7ZWxzZXt2YXIgdz1xbihtNyh5LFQsaSksa1JyKTtpZighdyl7dmFyIFQ9VCsxfDA7Y29udGludWV9dmFyIGQ9d31pZighZCl7dmFyIGU9eDtjb250aW51ZSByfXRbMzBdWzFdPXBbM107dmFyIEc9eWUoWzAsWzAscCxzXSx4XSk7YnJlYWt9ZWxzZSB2YXIgRz1lO2lmKEc9PT0wKXt2YXIgQT0wO2lmKG4pe3ZhciBTPW5bMV0sTT1TWzJdO2lmKCFNWzFdKXt2YXIgSz1NWzJdLFY9MDtpZigxPD11bihLKSYmSXQoSywwKT09PTQyKXt0WzMwXVsxXT1TWzFdWzNdO3ZhciBmMD1bMCxTLDBdO0E9MSxWPTF9fX1pZighQSl2YXIgZjA9MH1lbHNlIHZhciBmMD1HO3ZhciBtMD1vKHFlMCx0LGZ1bmN0aW9uKGMwKXtyZXR1cm4gMH0pLGswPVBlKHQpO1kwKHQsUG4pO3ZhciBnMD1NdVsxXTtpZihsZShmdW5jdGlvbihjMCx0MCl7dmFyIG8wPXQwWzJdO3N3aXRjaChvMFswXSl7Y2FzZSAxNzpyZXR1cm4gZmIodCxjMCxSYygwLFswLG8wWzFdWzFdLG9yZV0pKTtjYXNlIDE4OnZhciB3MD1vMFsxXSxfMD13MFsxXTtpZihfMCl7aWYoIXcwWzJdKXt2YXIgRTA9XzBbMV0sVTA9RTBbMl0sYj0wO3N3aXRjaChVMFswXSl7Y2FzZSAzNDp2YXIgUjA9VTBbMV1bMV0sWD0wLHMwPWxlKGZ1bmN0aW9uKFRyLEhyKXtyZXR1cm4gbGUoUkwsVHIsWzAsSHJbMl1bMV0sMF0pfSxYLFIwKTtyZXR1cm4gbGUoZnVuY3Rpb24oVHIsSHIpe3JldHVybiBmYih0LFRyLEhyKX0sYzAsczApO2Nhc2UgMjpjYXNlIDIzOnZhciBocj1VMFsxXVsxXTtpZihocil2YXIgQXI9aHJbMV07ZWxzZSBiPTE7YnJlYWs7Y2FzZSAxNjpjYXNlIDI2OmNhc2UgMzI6Y2FzZSAzMzp2YXIgQXI9VTBbMV1bMV07YnJlYWs7ZGVmYXVsdDpiPTF9cmV0dXJuIGI/YzA6ZmIodCxjMCxSYygwLFswLEUwWzFdLEFyWzJdWzFdXSkpfX1lbHNle3ZhciBvcj13MFsyXTtpZihvcil7dmFyIFcwPW9yWzFdO2lmKFcwWzBdPT09MCl7dmFyIExyPVcwWzFdO3JldHVybiBsZShmdW5jdGlvbihUcixIcil7dmFyIE9yPUhyWzJdLGZyPU9yWzJdO3JldHVybiBmcj9mYih0LFRyLGZyWzFdKTpmYih0LFRyLE9yWzFdKX0sYzAsTHIpfXJldHVybiBjMH19cmV0dXJuIGMwO2RlZmF1bHQ6cmV0dXJuIGMwfX0sZzAsbTApLG0wKXZhciBlMD1ibCh5ZShtMCkpWzFdLHgwPXl0KGJsKG0wKVsxXSxlMCk7ZWxzZSB2YXIgeDA9azA7dmFyIGw9eWUodFsyXVsxXSk7cmV0dXJuWzAseDAsWzAsbTAsbHIoWzAsZjBdLDAsMCksbF1dfX0pLE4oakwsZnVuY3Rpb24odCxuLGUpe2Zvcih2YXIgaT1lZTAoMSx0KSx4PWlyZTs7KXt2YXIgYz14WzNdLHM9eFsyXSxwPXhbMV0seT1BMChpKSxUPTA7aWYodHlwZW9mIHk9PVwibnVtYmVyXCImJlBuPT09eSl2YXIgRT1bMCxpLHAscyxjXTtlbHNlIFQ9MTtpZihUKWlmKHUobix5KSl2YXIgRT1bMCxpLHAscyxjXTtlbHNle3ZhciBkPTA7aWYodHlwZW9mIHk9PVwibnVtYmVyXCJ8fHlbMF0hPT0yKWQ9MTtlbHNle3ZhciB3PXUoZSxpKSxHPVswLHcsc10sQT13WzJdO2lmKEFbMF09PT0xOSl7dmFyIFM9QVsxXVsyXTtpZihTKXt2YXIgTT1xbihTWzFdLHVyZSksSz1NJiYxLWlbMjBdO0smJnVlKGksWzAsd1sxXSw0M10pO3ZhciBWPU0/X3MoMSxpKTppLGYwPVswLHkscF0sbTA9Y3x8TSxpPVYseD1bMCxmMCxHLG0wXTtjb250aW51ZX19dmFyIEU9WzAsaSxwLEcsY119aWYoZCl2YXIgRT1bMCxpLHAscyxjXX12YXIgazA9ZWUwKDAsaSksZzA9eWUocCk7cmV0dXJuIER1KGZ1bmN0aW9uKGUwKXtpZih0eXBlb2YgZTAhPVwibnVtYmVyXCImJmUwWzBdPT09Mil7dmFyIHgwPWUwWzFdLGw9eDBbNF07cmV0dXJuIGwmJlY3KGswLFswLHgwWzFdLDQ1XSl9cmV0dXJuIGtlKFRlKHhyZSxUZSh3cjAoZTApLGZyZSkpKX0sZzApLFswLGswLEVbM10sY119fSksTihHTCxmdW5jdGlvbih0KXt2YXIgbj11KFVzWzZdLHQpLGU9QTAodCk7aWYodHlwZW9mIGU9PVwibnVtYmVyXCIpe3ZhciBpPWUtNDl8MDtpZighKDExPGk+Pj4wKSlzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBvKGh0WzE2XSxuLHQpO2Nhc2UgMTp1KEE5KHQpLG4pO3ZhciB4PVluKDEsdCk7aWYodHlwZW9mIHg9PVwibnVtYmVyXCIpe3ZhciBjPTA7aWYoKHg9PT00fHx4PT09MTApJiYoYz0xKSxjKXJldHVybiB1KGh0WzE3XSx0KX1yZXR1cm4gdShodFsxOF0sdCk7Y2FzZSAxMTppZihZbigxLHQpPT09NDkpcmV0dXJuIHUoQTkodCksbiksbyhodFsxMl0sMCx0KTticmVha319cmV0dXJuIG8oeGIsWzAsbl0sdCl9KSxOKHFlMCxmdW5jdGlvbih0LG4pe3ZhciBlPXVyKGpMLHQsbixHTCksaT1vKE1MLG4sZVsxXSkseD1lWzJdO3JldHVybiBsZShmdW5jdGlvbihjLHMpe3JldHVyblswLHMsY119LGkseCl9KSxOKE1MLGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPTA7Oyl7dmFyIGk9QTAobik7aWYodHlwZW9mIGk9PVwibnVtYmVyXCImJlBuPT09aXx8dSh0LGkpKXJldHVybiB5ZShlKTt2YXIgZT1bMCx1KEdMLG4pLGVdfX0pLE4oQkwsZnVuY3Rpb24odCxuKXt2YXIgZT11cihqTCxuLHQsZnVuY3Rpb24ocyl7cmV0dXJuIG8oeGIsMCxzKX0pLGk9byhqOSx0LGVbMV0pLHg9ZVsyXSxjPWxlKGZ1bmN0aW9uKHMscCl7cmV0dXJuWzAscCxzXX0saSx4KTtyZXR1cm5bMCxjLGVbM11dfSksTihqOSxmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT0wOzspe3ZhciBpPUEwKG4pO2lmKHR5cGVvZiBpPT1cIm51bWJlclwiJiZQbj09PWl8fHUodCxpKSlyZXR1cm4geWUoZSk7dmFyIGU9WzAsbyh4YiwwLG4pLGVdfX0pLE4oeGIsZnVuY3Rpb24odCxuKXt2YXIgZT10JiZ0WzFdOzEtJGwobikmJnUoQTkobiksZSk7dmFyIGk9QTAobik7aWYodHlwZW9mIGk9PVwibnVtYmVyXCIpe2lmKGk9PT0yNylyZXR1cm4gdShodFsyN10sbik7aWYoaT09PTI4KXJldHVybiB1KGh0WzNdLG4pfWlmKEdzKG4pKXJldHVybiB1KFZuWzEwXSxuKTtpZigkbChuKSlyZXR1cm4gbyh6ZTAsbixlKTtpZih0eXBlb2YgaT09XCJudW1iZXJcIil7dmFyIHg9aStXdHwwO2lmKCEoMTQ8eD4+PjApKXN3aXRjaCh4KXtjYXNlIDA6aWYoblsyN11bMV0pcmV0dXJuIHUoVm5bMTFdLG4pO2JyZWFrO2Nhc2UgNTpyZXR1cm4gdShodFsxOV0sbik7Y2FzZSAxMjpyZXR1cm4gbyhodFsxMV0sMCxuKTtjYXNlIDEzOnJldHVybiB1KGh0WzI1XSxuKTtjYXNlIDE0OnJldHVybiB1KGh0WzIxXSxuKX19cmV0dXJuIHUoRzksbil9KSxOKEc5LGZ1bmN0aW9uKHQpe3ZhciBuPUEwKHQpO2lmKHR5cGVvZiBuPT1cIm51bWJlclwiKXN3aXRjaChuKXtjYXNlIDA6cmV0dXJuIHUoaHRbN10sdCk7Y2FzZSA4OnJldHVybiB1KGh0WzE1XSx0KTtjYXNlIDE5OnJldHVybiB1KGh0WzIyXSx0KTtjYXNlIDIwOnJldHVybiB1KGh0WzIzXSx0KTtjYXNlIDIyOnJldHVybiB1KGh0WzI0XSx0KTtjYXNlIDIzOnJldHVybiB1KGh0WzRdLHQpO2Nhc2UgMjQ6cmV0dXJuIHUoaHRbMjZdLHQpO2Nhc2UgMjU6cmV0dXJuIHUoaHRbNV0sdCk7Y2FzZSAyNjpyZXR1cm4gdShodFs2XSx0KTtjYXNlIDMyOnJldHVybiB1KGh0WzhdLHQpO2Nhc2UgMzU6cmV0dXJuIHUoaHRbOV0sdCk7Y2FzZSAzNzpyZXR1cm4gdShodFsxNF0sdCk7Y2FzZSAzOTpyZXR1cm4gdShodFsxXSx0KTtjYXNlIDU5OnJldHVybiB1KGh0WzEwXSx0KTtjYXNlIDExMzpyZXR1cm4gU3QoZXJlLHQpLFswLFBlKHQpLG5yZV07Y2FzZSAxNjpjYXNlIDQzOnJldHVybiB1KGh0WzJdLHQpO2Nhc2UgMTpjYXNlIDU6Y2FzZSA3OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMjpjYXNlIDE3OmNhc2UgMTg6Y2FzZSAzMzpjYXNlIDM0OmNhc2UgMzY6Y2FzZSAzODpjYXNlIDQxOmNhc2UgNDI6Y2FzZSA0OTpjYXNlIDgzOmNhc2UgODY6cmV0dXJuIFN0KHRyZSx0KSxpZSh0KSx1KEc5LHQpfWlmKEdzKHQpKXt2YXIgZT11KFZuWzEwXSx0KTtyZXR1cm4gTTEodCxlWzFdKSxlfWlmKHR5cGVvZiBuPT1cIm51bWJlclwiJiZuPT09MjgmJlluKDEsdCk9PT02KXt2YXIgaT1XbCgxLHQpO3JldHVybiB1ZSh0LFswLHl0KFBlKHQpLGkpLDk0XSksdShodFsxN10sdCl9cmV0dXJuIEcxKHQpP3UoaHRbMjBdLHQpOigkbCh0KSYmKFN0KDAsdCksaWUodCkpLHUoaHRbMTddLHQpKX0pLE4oVWUwLGZ1bmN0aW9uKHQpe3ZhciBuPVBlKHQpLGU9dShjaVsxXSx0KSxpPUEwKHQpO3JldHVybiB0eXBlb2YgaT09XCJudW1iZXJcIiYmaT09PTk/dXIoY2lbN10sdCxuLFswLGUsMF0pOmV9KSxOKEhlMCxmdW5jdGlvbih0KXt2YXIgbj1QZSh0KSxlPXUoY2lbMl0sdCksaT1BMCh0KTtpZih0eXBlb2YgaT09XCJudW1iZXJcIiYmaT09PTkpe3ZhciB4PVswLG8oUjlbMV0sdCxlKSwwXTtyZXR1cm5bMCx1cihjaVs3XSx0LG4seCldfXJldHVybiBlfSksTihYZTAsZnVuY3Rpb24odCxuLGUpe3ZhciBpPW4mJm5bMV07cmV0dXJuIGNyKDAsZnVuY3Rpb24oeCl7dmFyIGM9MS1pLHM9TWUwKFswLGVdLHgpLHA9YyYmKEEwKHgpPT09ODU/MTowKTtyZXR1cm4gcCYmKDEtZnUoeCkmJmplKHgsMTIpLFkwKHgsODUpKSxbMCxzLHUobW5bMTBdLHgpLHBdfSx0KX0pLE4oWWUwLGZ1bmN0aW9uKHQpe3ZhciBuPVBlKHQpLGU9cHIodCk7WTAodCwwKTt2YXIgaT1vKGo5LGZ1bmN0aW9uKHkpe3JldHVybiB5PT09MT8xOjB9LHQpLHg9aT09PTA/MTowLGM9UGUodCkscz14JiZwcih0KTtZMCh0LDEpO3ZhciBwPVswLGkseXUoWzAsZV0sWzAsd2UodCldLHMsMCldO3JldHVyblswLHl0KG4sYykscF19KSxOKFZlMCxmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGkpe3ZhciB4PXByKGkpO1kwKGksMCk7dmFyIGM9byhCTCxmdW5jdGlvbihTKXtyZXR1cm4gUz09PTE/MTowfSxpKSxzPWNbMV0scD1zPT09MD8xOjAseT1wJiZwcihpKTtZMChpLDEpO3ZhciBUPUEwKGkpLEU9MDtpZighdCl7dmFyIGQ9MDtpZih0eXBlb2YgVD09XCJudW1iZXJcIiYmKFQ9PT0xfHxQbj09PVQpJiYoZD0xKSwhZCl7dmFyIHc9eDcoaSk7aWYodyl7dmFyIEc9TXMoaSk7RT0xfWVsc2V7dmFyIEc9dztFPTF9fX1pZighRSl2YXIgRz13ZShpKTt2YXIgQT15dShbMCx4XSxbMCxHXSx5LDApO3JldHVyblswLFswLHMsQV0sY1syXV19dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGdMKGUsbixpKX19KSxtdShscmUsc2UsWzAsQmUwLEc5LHhiLGo5LEJMLE1MLFVlMCxIZTAsZm5lLHhuZSxvbmUsYW5lLE1lMCxYZTAsWWUwLFZlMCxibmUscG5lLG1uZSxjbmUsemUwLHNuZSx2bmUsbG5lLGluZV0pO3ZhciBLZTA9WzAsMF0sV2UwPWJuO2Z1bmN0aW9uIF9uZSh0KXtmdW5jdGlvbiBuKGUsaSl7dmFyIHg9aVsyXSxjPWlbMV0scz1vTCh4KSxwPVswLFswLGJyZSx1KHRbMV0scyldLDBdLHk9QzkoZSxjWzNdKSxUPVswLHUodFs1XSx5KSwwXSxFPUM5KGUsY1syXSksZD1bMCx1KHRbNV0sRSksVF0sdz1bMCxbMCxwcmUsdSh0WzRdLGQpXSxwXSxHPVswLFswLG1yZSx1KHRbNV0sY1szXVsyXSldLDBdLEE9WzAsWzAsX3JlLHUodFs1XSxjWzNdWzFdKV0sR10sUz1bMCxbMCx5cmUsdSh0WzNdLEEpXSwwXSxNPVswLFswLGhyZSx1KHRbNV0sY1syXVsyXSldLDBdLEs9WzAsWzAsZHJlLHUodFs1XSxjWzJdWzFdKV0sTV0sVj1bMCxbMCxrcmUsdSh0WzNdLEspXSxTXSxmMD1bMCxbMCx3cmUsdSh0WzNdLFYpXSx3XTtzd2l0Y2goaVszXSl7Y2FzZSAwOnZhciBtMD1FcmU7YnJlYWs7Y2FzZSAxOnZhciBtMD1TcmU7YnJlYWs7Y2FzZSAyOnZhciBtMD1ncmU7YnJlYWs7Y2FzZSAzOnZhciBtMD1GcmU7YnJlYWs7Y2FzZSA0OnZhciBtMD1UcmU7YnJlYWs7ZGVmYXVsdDp2YXIgbTA9T3JlfXZhciBrMD1bMCxbMCxJcmUsdSh0WzFdLG0wKV0sZjBdLGcwPXdyMCh4KSxlMD1bMCxbMCxBcmUsdSh0WzFdLGcwKV0sazBdO3JldHVybiB1KHRbM10sZTApfXJldHVyblswLG4sZnVuY3Rpb24oZSxpKXt2YXIgeD15ZShGcChmdW5jdGlvbihjKXtyZXR1cm4gbihlLGMpfSxpKSk7cmV0dXJuIHUodFs0XSx4KX1dfXZhciB5bmU9UzcwO2Z1bmN0aW9uIFUxKHQpe3JldHVybiBnNzAoX2wodCkpfWZ1bmN0aW9uIGh1KHQpe3JldHVybiBFNzAoX2wodCkpfWZ1bmN0aW9uIGhuZSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBkbmUodCl7cmV0dXJuIHR9ZnVuY3Rpb24gSmUwKHQsbixlKXt0cnl7dmFyIGk9bmV3IFJlZ0V4cChibihuKSxibihlKSk7cmV0dXJuIGl9Y2F0Y2h7cmV0dXJuIGk3fX12YXIga25lPV9uZShbMCxXZTAseW5lLFUxLGh1LGhuZSxkbmUsaTcsSmUwXSksd25lPVswLDFdLCRlMD1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKEUsZCl7cmV0dXJuIGh1KHllKEZwKEUsZCkpKX1mdW5jdGlvbiBlKEUsZCl7cmV0dXJuIGQ/dShFLGRbMV0pOmk3fWZ1bmN0aW9uIGkoRSxkKXtyZXR1cm4gZFswXT09PTA/aTc6dShFLGRbMV0pfWZ1bmN0aW9uIHgoRSl7cmV0dXJuIFUxKFswLFswLEFXcixFWzFdXSxbMCxbMCxJV3IsRVsyXV0sMF1dKX1mdW5jdGlvbiBjKEUpe3ZhciBkPUVbMV0sdz1kP2JuKGRbMV1bMV0pOmk3LEc9WzAsWzAsRldyLHgoRVszXSldLDBdO3JldHVybiBVMShbMCxbMCxPV3Isd10sWzAsWzAsVFdyLHgoRVsyXSldLEddXSl9ZnVuY3Rpb24gcyhFKXtyZXR1cm4gbihmdW5jdGlvbihkKXt2YXIgdz1kWzJdLEc9MDtpZih0eXBlb2Ygdz09XCJudW1iZXJcIil7dmFyIEE9dztpZig1NTw9QSlzd2l0Y2goQSl7Y2FzZSA1NTp2YXIgUz1ubXI7YnJlYWs7Y2FzZSA1Njp2YXIgUz10bXI7YnJlYWs7Y2FzZSA1Nzp2YXIgUz11bXI7YnJlYWs7Y2FzZSA1ODp2YXIgUz1pbXI7YnJlYWs7Y2FzZSA1OTp2YXIgUz1mbXI7YnJlYWs7Y2FzZSA2MDp2YXIgUz14bXI7YnJlYWs7Y2FzZSA2MTp2YXIgUz1UZShhbXIsb21yKTticmVhaztjYXNlIDYyOnZhciBTPVRlKHNtcixjbXIpO2JyZWFrO2Nhc2UgNjM6dmFyIFM9VGUobG1yLHZtcik7YnJlYWs7Y2FzZSA2NDp2YXIgUz1ibXI7YnJlYWs7Y2FzZSA2NTp2YXIgUz1wbXI7YnJlYWs7Y2FzZSA2Njp2YXIgUz1tbXI7YnJlYWs7Y2FzZSA2Nzp2YXIgUz1fbXI7YnJlYWs7Y2FzZSA2ODp2YXIgUz15bXI7YnJlYWs7Y2FzZSA2OTp2YXIgUz1obXI7YnJlYWs7Y2FzZSA3MDp2YXIgUz1kbXI7YnJlYWs7Y2FzZSA3MTp2YXIgUz1rbXI7YnJlYWs7Y2FzZSA3Mjp2YXIgUz13bXI7YnJlYWs7Y2FzZSA3Mzp2YXIgUz1FbXI7YnJlYWs7Y2FzZSA3NDp2YXIgUz1TbXI7YnJlYWs7Y2FzZSA3NTp2YXIgUz1nbXI7YnJlYWs7Y2FzZSA3Njp2YXIgUz1GbXI7YnJlYWs7Y2FzZSA3Nzp2YXIgUz1UbXI7YnJlYWs7Y2FzZSA3ODp2YXIgUz1PbXI7YnJlYWs7Y2FzZSA3OTp2YXIgUz1JbXI7YnJlYWs7Y2FzZSA4MDp2YXIgUz1BbXI7YnJlYWs7Y2FzZSA4MTp2YXIgUz1ObXI7YnJlYWs7Y2FzZSA4Mjp2YXIgUz1UZShQbXIsQ21yKTticmVhaztjYXNlIDgzOnZhciBTPURtcjticmVhaztjYXNlIDg0OnZhciBTPUxtcjticmVhaztjYXNlIDg1OnZhciBTPVJtcjticmVhaztjYXNlIDg2OnZhciBTPWptcjticmVhaztjYXNlIDg3OnZhciBTPUdtcjticmVhaztjYXNlIDg4OnZhciBTPU1tcjticmVhaztjYXNlIDg5OnZhciBTPUJtcjticmVhaztjYXNlIDkwOnZhciBTPXFtcjticmVhaztjYXNlIDkxOnZhciBTPVVtcjticmVhaztjYXNlIDkyOnZhciBTPUhtcjticmVhaztjYXNlIDkzOnZhciBTPVhtcjticmVhaztjYXNlIDk0OnZhciBTPVRlKFZtcixZbXIpO2JyZWFrO2Nhc2UgOTU6dmFyIFM9em1yO2JyZWFrO2Nhc2UgOTY6dmFyIFM9S21yO2JyZWFrO2Nhc2UgOTc6dmFyIFM9V21yO2JyZWFrO2Nhc2UgOTg6dmFyIFM9Sm1yO2JyZWFrO2Nhc2UgOTk6dmFyIFM9JG1yO2JyZWFrO2Nhc2UgMTAwOnZhciBTPVptcjticmVhaztjYXNlIDEwMTp2YXIgUz1RbXI7YnJlYWs7Y2FzZSAxMDI6dmFyIFM9cjlyO2JyZWFrO2Nhc2UgMTAzOnZhciBTPWU5cjticmVhaztjYXNlIDEwNDp2YXIgUz1uOXI7YnJlYWs7Y2FzZSAxMDU6dmFyIFM9dDlyO2JyZWFrO2Nhc2UgMTA2OnZhciBTPXU5cjticmVhaztjYXNlIDEwNzp2YXIgUz1pOXI7YnJlYWs7ZGVmYXVsdDp2YXIgUz1mOXJ9ZWxzZSBzd2l0Y2goQSl7Y2FzZSAwOnZhciBTPXI1cjticmVhaztjYXNlIDE6dmFyIFM9ZTVyO2JyZWFrO2Nhc2UgMjp2YXIgUz1uNXI7YnJlYWs7Y2FzZSAzOnZhciBTPXQ1cjticmVhaztjYXNlIDQ6dmFyIFM9dTVyO2JyZWFrO2Nhc2UgNTp2YXIgUz1pNXI7YnJlYWs7Y2FzZSA2OnZhciBTPWY1cjticmVhaztjYXNlIDc6dmFyIFM9eDVyO2JyZWFrO2Nhc2UgODp2YXIgUz1vNXI7YnJlYWs7Y2FzZSA5OnZhciBTPWE1cjticmVhaztjYXNlIDEwOnZhciBTPWM1cjticmVhaztjYXNlIDExOnZhciBTPXM1cjticmVhaztjYXNlIDEyOnZhciBTPXY1cjticmVhaztjYXNlIDEzOnZhciBTPWw1cjticmVhaztjYXNlIDE0OnZhciBTPWI1cjticmVhaztjYXNlIDE1OnZhciBTPXA1cjticmVhaztjYXNlIDE2OnZhciBTPW01cjticmVhaztjYXNlIDE3OnZhciBTPV81cjticmVhaztjYXNlIDE4OnZhciBTPXk1cjticmVhaztjYXNlIDE5OnZhciBTPWg1cjticmVhaztjYXNlIDIwOnZhciBTPWQ1cjticmVhaztjYXNlIDIxOnZhciBTPWs1cjticmVhaztjYXNlIDIyOnZhciBTPXc1cjticmVhaztjYXNlIDIzOnZhciBTPUU1cjticmVhaztjYXNlIDI0OnZhciBTPVM1cjticmVhaztjYXNlIDI1OnZhciBTPWc1cjticmVhaztjYXNlIDI2OnZhciBTPUY1cjticmVhaztjYXNlIDI3OnZhciBTPVQ1cjticmVhaztjYXNlIDI4OnZhciBTPU81cjticmVhaztjYXNlIDI5OnZhciBTPUk1cjticmVhaztjYXNlIDMwOnZhciBTPUE1cjticmVhaztjYXNlIDMxOnZhciBTPVRlKEM1cixONXIpO2JyZWFrO2Nhc2UgMzI6dmFyIFM9UDVyO2JyZWFrO2Nhc2UgMzM6dmFyIFM9RDVyO2JyZWFrO2Nhc2UgMzQ6dmFyIFM9TDVyO2JyZWFrO2Nhc2UgMzU6dmFyIFM9UjVyO2JyZWFrO2Nhc2UgMzY6dmFyIFM9ajVyO2JyZWFrO2Nhc2UgMzc6dmFyIFM9RzVyO2JyZWFrO2Nhc2UgMzg6dmFyIFM9TTVyO2JyZWFrO2Nhc2UgMzk6dmFyIFM9QjVyO2JyZWFrO2Nhc2UgNDA6dmFyIFM9cTVyO2JyZWFrO2Nhc2UgNDE6dmFyIFM9VTVyO2JyZWFrO2Nhc2UgNDI6dmFyIFM9SDVyO2JyZWFrO2Nhc2UgNDM6dmFyIFM9WDVyO2JyZWFrO2Nhc2UgNDQ6dmFyIFM9WTVyO2JyZWFrO2Nhc2UgNDU6dmFyIFM9VjVyO2JyZWFrO2Nhc2UgNDY6dmFyIFM9ejVyO2JyZWFrO2Nhc2UgNDc6dmFyIFM9SzVyO2JyZWFrO2Nhc2UgNDg6dmFyIFM9VzVyO2JyZWFrO2Nhc2UgNDk6dmFyIFM9SjVyO2JyZWFrO2Nhc2UgNTA6dmFyIFM9JDVyO2JyZWFrO2Nhc2UgNTE6dmFyIFM9WjVyO2JyZWFrO2Nhc2UgNTI6dmFyIFM9UTVyO2JyZWFrO2Nhc2UgNTM6dmFyIFM9cm1yO2JyZWFrO2RlZmF1bHQ6dmFyIFM9ZW1yfX1lbHNlIHN3aXRjaCh3WzBdKXtjYXNlIDA6dmFyIE09d1syXSxLPXdbMV0sUz11cihldCh4OXIpLE0sTSxLKTticmVhaztjYXNlIDE6dmFyIFY9d1sxXSxmMD13WzJdLFM9byhldChvOXIpLGYwLFYpO2JyZWFrO2Nhc2UgMjp2YXIgbTA9d1sxXSxTPXUoZXQoYTlyKSxtMCk7YnJlYWs7Y2FzZSAzOnZhciBrMD13WzJdLGcwPXdbMV0sZTA9dShldChjOXIpLGcwKTtpZihrMCl2YXIgeDA9azBbMV0sUz1vKGV0KHM5cikseDAsZTApO2Vsc2UgdmFyIFM9dShldCh2OXIpLGUwKTticmVhaztjYXNlIDQ6dmFyIGw9d1sxXSxTPW8oZXQobDlyKSxsLGwpO2JyZWFrO2Nhc2UgNTp2YXIgYzA9d1szXSx0MD13WzJdLG8wPXdbMV07aWYodDApe3ZhciB3MD10MFsxXTtpZigzPD13MCl2YXIgUz1vKGV0KGI5ciksYzAsbzApO2Vsc2V7c3dpdGNoKHcwKXtjYXNlIDA6dmFyIF8wPUpwcjticmVhaztjYXNlIDE6dmFyIF8wPSRwcjticmVhaztjYXNlIDI6dmFyIF8wPVpwcjticmVhaztkZWZhdWx0OnZhciBfMD1RcHJ9dmFyIFM9UihldChwOXIpLG8wLF8wLGMwLF8wKX19ZWxzZSB2YXIgUz1vKGV0KG05ciksYzAsbzApO2JyZWFrO2Nhc2UgNjp2YXIgRTA9d1syXSxVMD1FMDtpZihiNyhVMCk9PT0wKXZhciBiPVUwO2Vsc2V7dmFyIFIwPXN6KFUwKTtKbihSMCwwLHh6KFh1KFUwLDApKSk7dmFyIGI9UjB9dmFyIFg9YixzMD13WzFdLFM9dXIoZXQoXzlyKSxFMCxYLHMwKTticmVhaztjYXNlIDc6dmFyIFM9d1sxXT95OXI6aDlyO2JyZWFrO2Nhc2UgODp2YXIgaHI9d1sxXSxBcj13WzJdLFM9byhldChkOXIpLEFyLGhyKTticmVhaztjYXNlIDk6dmFyIG9yPXdbMV0sUz11KGV0KGs5ciksb3IpO2JyZWFrO2Nhc2UgMTA6dmFyIFcwPXdbMV0sUz11KGV0KHc5ciksVzApO2JyZWFrO2Nhc2UgMTE6dmFyIExyPXdbMl0sVHI9d1sxXSxTPW8oZXQoRTlyKSxUcixMcik7YnJlYWs7Y2FzZSAxMjp2YXIgSHI9d1syXSxPcj13WzFdLFM9byhldChTOXIpLE9yLEhyKTticmVhaztjYXNlIDEzOnZhciBTPVRlKEY5cixUZSh3WzFdLGc5cikpO2JyZWFrO2Nhc2UgMTQ6dmFyIGZyPXdbMV0/VDlyOk85cixTPXUoZXQoSTlyKSxmcik7YnJlYWs7Y2FzZSAxNTp2YXIgUz1UZShOOXIsVGUod1sxXSxBOXIpKTticmVhaztjYXNlIDE2OnZhciBScj1UZShQOXIsVGUod1syXSxDOXIpKSxTPVRlKHdbMV0sUnIpO2JyZWFrO2Nhc2UgMTc6dmFyIFM9VGUoRDlyLHdbMV0pO2JyZWFrO2Nhc2UgMTg6dmFyIFM9d1sxXT9UZShSOXIsTDlyKTpUZShHOXIsajlyKTticmVhaztjYXNlIDE5OnZhciBXcj13WzFdLFM9dShldChNOXIpLFdyKTticmVhaztjYXNlIDIwOnZhciBTPVRlKHE5cixUZSh3WzFdLEI5cikpO2JyZWFrO2Nhc2UgMjE6dmFyIEpyPXdbMV0sYXI9d1syXT9VOXI6SDlyLF9yPXdbNF0/VGUoWDlyLEpyKTpKcixJcj13WzNdP1k5cjpWOXIsUz1UZShXOXIsVGUoYXIsVGUoSXIsVGUoSzlyLFRlKF9yLHo5cikpKSkpO2JyZWFrO2Nhc2UgMjI6dmFyIFM9VGUoJDlyLFRlKHdbMV0sSjlyKSk7YnJlYWs7ZGVmYXVsdDp2YXIgZmU9d1sxXSxTPXUoZXQoWjlyKSxmZSl9dmFyIHYwPVswLFswLFNXcixibihTKV0sR107cmV0dXJuIFUxKFswLFswLGdXcixjKGRbMV0pXSx2MF0pfSxFKX1mdW5jdGlvbiBwKEUpe2lmKEUpe3ZhciBkPUVbMV0sdz1bMCxvbihkWzNdLGRbMl0pXTtyZXR1cm4gbHIoWzAsZFsxXV0sdywwKX1yZXR1cm4gRX1mdW5jdGlvbiB5KEUpe2Z1bmN0aW9uIGQoXyl7cmV0dXJuIG4ocTAsXyl9ZnVuY3Rpb24gdyhfLGssSSxVKXt2YXIgWT10WzFdO2lmKFkpe2lmKEUpdmFyIHkwPUVbMV0sUDA9WzAsQzkoeTAsa1szXSksMF0sSTA9WzAsWzAsaUdyLGh1KFswLEM5KHkwLGtbMl0pLFAwXSldLDBdO2Vsc2UgdmFyIEkwPUU7dmFyIEQ9b24oSTAsWzAsWzAsZkdyLGMoayldLDBdKX1lbHNlIHZhciBEPVk7aWYoSSl7dmFyIHUwPUlbMV0sWDA9dTBbMV07aWYoWDApe3ZhciBKMD11MFsyXTtpZihKMCl2YXIgaXI9WzAsWzAseEdyLGQoSjApXSwwXSxRMD1bMCxbMCxvR3IsZChYMCldLGlyXTtlbHNlIHZhciBRMD1bMCxbMCxhR3IsZChYMCldLDBdO3ZhciBtcj1RMH1lbHNlIHZhciBGMD11MFsyXSxTcj1GMCYmWzAsWzAsY0dyLGQoRjApXSwwXSxtcj1Tcjt2YXIgQ3I9bXJ9ZWxzZSB2YXIgQ3I9STtyZXR1cm4gVTEoTGMob24oRCxvbihDcixbMCxbMCxzR3IsYm4oXyldLDBdKSksVSkpfWZ1bmN0aW9uIEcoXyl7cmV0dXJuIG4oUSxfKX1mdW5jdGlvbiBBKF8pe3ZhciBrPV9bMl0sST1HKGtbMV0pLFU9WzAsWzAsbEdyLEldLFswLFswLHZHcixkKGtbM10pXSwwXV07cmV0dXJuIHcoYkdyLF9bMV0sa1syXSxVKX1mdW5jdGlvbiBTKF8pe3ZhciBrPV9bMl07cmV0dXJuIHcoVnFyLF9bMV0sa1syXSxbMCxbMCxZcXIsYm4oa1sxXSldLFswLFswLFhxcixpN10sWzAsWzAsSHFyLCExXSwwXV1dKX1mdW5jdGlvbiBNKF8pe2lmKF9bMF09PT0wKXJldHVybiBTKF9bMV0pO3ZhciBrPV9bMV0sST1rWzJdLFU9TShJWzFdKSxZPVswLFswLE16cixVXSxbMCxbMCxHenIsUyhJWzJdKV0sMF1dO3JldHVybiB3KEJ6cixrWzFdLDAsWSl9ZnVuY3Rpb24gSyhfKXt2YXIgaz1fWzJdLEk9a1sxXSxVPUlbMF09PT0wP1MoSVsxXSk6SyhJWzFdKSxZPVswLFswLHd6cixVXSxbMCxbMCxrenIsUyhrWzJdKV0sMF1dO3JldHVybiB3KEV6cixfWzFdLDAsWSl9ZnVuY3Rpb24gVihfKXt2YXIgaz1fWzJdLEk9a1sxXSxVPUlbMF09PT0wP1MoSVsxXSk6SyhJWzFdKSxZPVswLFswLGd6cixVXSxbMCxbMCxTenIsZSgkcixrWzJdKV0sMF1dO3JldHVybiB3KEZ6cixfWzFdLGtbM10sWSl9ZnVuY3Rpb24gZjAoXyl7dmFyIGs9X1syXSxJPWtbMl0sVT1rWzFdLFk9X1sxXTtpZih0eXBlb2YgVT09XCJudW1iZXJcIil2YXIgeTA9aTc7ZWxzZSBzd2l0Y2goVVswXSl7Y2FzZSAwOnZhciB5MD1ibihVWzFdKTticmVhaztjYXNlIDE6dmFyIHkwPSEhVVsxXTticmVhaztjYXNlIDI6dmFyIHkwPVVbMV07YnJlYWs7Y2FzZSAzOnZhciB5MD1rZShiWXIpO2JyZWFrO2RlZmF1bHQ6dmFyIFAwPVVbMV0seTA9SmUwKFksUDBbMV0sUDBbMl0pfXZhciBJMD0wO2lmKHR5cGVvZiBVIT1cIm51bWJlclwiJiZVWzBdPT09NCl7dmFyIEQ9VVsxXSx1MD1bMCxbMCxfWXIsVTEoWzAsWzAsbVlyLGJuKERbMV0pXSxbMCxbMCxwWXIsYm4oRFsyXSldLDBdXSldLDBdLFgwPVswLFswLGhZcix5MF0sWzAsWzAseVlyLGJuKEkpXSx1MF1dO0kwPTF9aWYoIUkwKXZhciBYMD1bMCxbMCxrWXIseTBdLFswLFswLGRZcixibihJKV0sMF1dO3JldHVybiB3KHdZcixZLGtbM10sWDApfWZ1bmN0aW9uIG0wKF8pe3ZhciBrPVswLFswLFR6cixnMChfWzJdKV0sMF07cmV0dXJuWzAsWzAsT3pyLGcwKF9bMV0pXSxrXX1mdW5jdGlvbiBrMChfLGspe3ZhciBJPWtbMl0sVT1bMCxbMCxFVnIsISFJWzNdXSwwXSxZPVswLFswLFNWcixnMChJWzJdKV0sVV0seTA9WzAsWzAsZ1ZyLGUoUyxJWzFdKV0sWV07cmV0dXJuIHcoRlZyLGtbMV0sXyx5MCl9ZnVuY3Rpb24gZzAoXyl7dmFyIGs9X1syXSxJPV9bMV07c3dpdGNoKGtbMF0pe2Nhc2UgMDpyZXR1cm4gdyhpVnIsSSxrWzFdLDApO2Nhc2UgMTpyZXR1cm4gdyhmVnIsSSxrWzFdLDApO2Nhc2UgMjpyZXR1cm4gdyh4VnIsSSxrWzFdLDApO2Nhc2UgMzpyZXR1cm4gdyhvVnIsSSxrWzFdLDApO2Nhc2UgNDpyZXR1cm4gdyhhVnIsSSxrWzFdLDApO2Nhc2UgNTpyZXR1cm4gdyhzVnIsSSxrWzFdLDApO2Nhc2UgNjpyZXR1cm4gdyh2VnIsSSxrWzFdLDApO2Nhc2UgNzpyZXR1cm4gdyhsVnIsSSxrWzFdLDApO2Nhc2UgODpyZXR1cm4gdyhiVnIsSSxrWzFdLDApO2Nhc2UgOTpyZXR1cm4gdyhjVnIsSSxrWzFdLDApO2Nhc2UgMTA6cmV0dXJuIHcodEtyLEksa1sxXSwwKTtjYXNlIDExOnZhciBVPWtbMV0sWT1bMCxbMCxwVnIsZzAoVVsxXSldLDBdO3JldHVybiB3KG1WcixJLFVbMl0sWSk7Y2FzZSAxMjpyZXR1cm4gZTAoWzAsSSxrWzFdXSk7Y2FzZSAxMzpyZXR1cm4geDAoMSxbMCxJLGtbMV1dKTtjYXNlIDE0OnZhciB5MD1rWzFdLFAwPVswLFswLG16cix4MCgwLHkwWzFdKV0sMF0sSTA9WzAsWzAsX3pyLG4oZmUseTBbMl0pXSxQMF07cmV0dXJuIHcoeXpyLEkseTBbM10sSTApO2Nhc2UgMTU6dmFyIEQ9a1sxXSx1MD1bMCxbMCxoenIsZzAoRFsxXSldLDBdO3JldHVybiB3KGR6cixJLERbMl0sdTApO2Nhc2UgMTY6cmV0dXJuIFYoWzAsSSxrWzFdXSk7Y2FzZSAxNzp2YXIgWDA9a1sxXSxKMD1tMChYMCk7cmV0dXJuIHcoSXpyLEksWDBbM10sSjApO2Nhc2UgMTg6dmFyIGlyPWtbMV0sUTA9aXJbMV0sRjA9WzAsWzAsQXpyLCEhaXJbMl1dLDBdLFNyPW9uKG0wKFEwKSxGMCk7cmV0dXJuIHcoTnpyLEksUTBbM10sU3IpO2Nhc2UgMTk6dmFyIG1yPWtbMV0sQ3I9bXJbMV0sc3I9WzAsWzAsQ3pyLG4oZzAsWzAsQ3JbMV0sWzAsQ3JbMl0sQ3JbM11dXSldLDBdO3JldHVybiB3KFB6cixJLG1yWzJdLHNyKTtjYXNlIDIwOnZhciBQcj1rWzFdLEswPVByWzFdLFVyPVswLFswLER6cixuKGcwLFswLEswWzFdLFswLEswWzJdLEswWzNdXV0pXSwwXTtyZXR1cm4gdyhMenIsSSxQclsyXSxVcik7Y2FzZSAyMTp2YXIgaDA9a1sxXSxLcj1bMCxbMCxSenIsTShoMFsxXSldLDBdO3JldHVybiB3KGp6cixJLGgwWzJdLEtyKTtjYXNlIDIyOnZhciByZT1rWzFdLHhlPVswLFswLHF6cixuKGcwLHJlWzFdKV0sMF07cmV0dXJuIHcoVXpyLEkscmVbMl0seGUpO2Nhc2UgMjM6dmFyIFJlPWtbMV07cmV0dXJuIHcoWXpyLEksUmVbM10sWzAsWzAsWHpyLGJuKFJlWzFdKV0sWzAsWzAsSHpyLGJuKFJlWzJdKV0sMF1dKTtjYXNlIDI0OnZhciB2ZT1rWzFdO3JldHVybiB3KEt6cixJLHZlWzNdLFswLFswLHp6cix2ZVsxXV0sWzAsWzAsVnpyLGJuKHZlWzJdKV0sMF1dKTtjYXNlIDI1OnZhciBJZT1rWzFdO3JldHVybiB3KCR6cixJLEllWzNdLFswLFswLEp6cixpN10sWzAsWzAsV3pyLGJuKEllWzJdKV0sMF1dKTtkZWZhdWx0OnZhciBHZT1rWzFdLE1lPUdlWzFdLGFuPTAsV2U9TWU/WnpyOlF6cjtyZXR1cm4gdyhuS3IsSSxHZVsyXSxbMCxbMCxlS3IsISFNZV0sWzAsWzAscktyLGJuKFdlKV0sYW5dXSl9fWZ1bmN0aW9uIGUwKF8pe3ZhciBrPV9bMl0sST1rWzJdWzJdLFU9a1s0XSxZPXk3KHAoSVs0XSksVSkseTA9WzAsWzAsX1ZyLGUocXIsa1sxXSldLDBdLFAwPVswLFswLHlWcixlKE1yLElbM10pXSx5MF0sSTA9WzAsWzAsaFZyLGcwKGtbM10pXSxQMF0sRD1bMCxbMCxkVnIsZShCcixJWzFdKV0sSTBdLHUwPUlbMl0sWDA9WzAsWzAsa1ZyLG4oZnVuY3Rpb24oSjApe3JldHVybiBrMCgwLEowKX0sdTApXSxEXTtyZXR1cm4gdyh3VnIsX1sxXSxZLFgwKX1mdW5jdGlvbiB4MChfLGspe3ZhciBJPWtbMl0sVT1JWzNdLFk9bGUoZnVuY3Rpb24oaXIsUTApe3ZhciBGMD1pcls0XSxTcj1pclszXSxtcj1pclsyXSxDcj1pclsxXTtzd2l0Y2goUTBbMF0pe2Nhc2UgMDp2YXIgc3I9UTBbMV0sUHI9c3JbMl0sSzA9UHJbMl0sVXI9UHJbMV07c3dpdGNoKFVyWzBdKXtjYXNlIDA6dmFyIGgwPWYwKFVyWzFdKTticmVhaztjYXNlIDE6dmFyIGgwPVMoVXJbMV0pO2JyZWFrO2Nhc2UgMjp2YXIgaDA9a2UoTVZyKTticmVhaztkZWZhdWx0OnZhciBoMD1rZShCVnIpfXN3aXRjaChLMFswXSl7Y2FzZSAwOnZhciB4ZT1xVnIsUmU9ZzAoSzBbMV0pO2JyZWFrO2Nhc2UgMTp2YXIgS3I9SzBbMV0seGU9VVZyLFJlPWUwKFswLEtyWzFdLEtyWzJdXSk7YnJlYWs7ZGVmYXVsdDp2YXIgcmU9SzBbMV0seGU9SFZyLFJlPWUwKFswLHJlWzFdLHJlWzJdXSl9dmFyIHZlPVswLFswLFhWcixibih4ZSldLDBdLEllPVswLFswLFlWcixlKEVyLFByWzddKV0sdmVdO3JldHVyblswLFswLHcoWlZyLHNyWzFdLFByWzhdLFswLFswLCRWcixoMF0sWzAsWzAsSlZyLFJlXSxbMCxbMCxXVnIsISFQcls2XV0sWzAsWzAsS1ZyLCEhUHJbM11dLFswLFswLHpWciwhIVByWzRdXSxbMCxbMCxWVnIsISFQcls1XV0sSWVdXV1dXV0pLENyXSxtcixTcixGMF07Y2FzZSAxOnZhciBHZT1RMFsxXSxNZT1HZVsyXSxhbj1bMCxbMCxRVnIsZzAoTWVbMV0pXSwwXTtyZXR1cm5bMCxbMCx3KHJ6cixHZVsxXSxNZVsyXSxhbiksQ3JdLG1yLFNyLEYwXTtjYXNlIDI6dmFyIFdlPVEwWzFdLEFlPVdlWzJdLGNuPVswLFswLGV6cixlKEVyLEFlWzVdKV0sMF0scm49WzAsWzAsbnpyLCEhQWVbNF1dLGNuXSxrbj1bMCxbMCx0enIsZzAoQWVbM10pXSxybl0sdm49WzAsWzAsdXpyLGcwKEFlWzJdKV0sa25dLE5lPVswLFswLGl6cixlKFMsQWVbMV0pXSx2bl07cmV0dXJuWzAsQ3IsWzAsdyhmenIsV2VbMV0sQWVbNl0sTmUpLG1yXSxTcixGMF07Y2FzZSAzOnZhciBKZT1RMFsxXSxlbj1KZVsyXSxfbj1bMCxbMCx4enIsISFlblsyXV0sMF0sQ249WzAsWzAsb3pyLGUwKGVuWzFdKV0sX25dO3JldHVyblswLENyLG1yLFswLHcoYXpyLEplWzFdLGVuWzNdLENuKSxTcl0sRjBdO2RlZmF1bHQ6dmFyIEhuPVEwWzFdLEZuPUhuWzJdLHZ0PVswLFswLGN6cixnMChGblsyXSldLDBdLE50PVswLFswLGx6ciwhIUZuWzNdXSxbMCxbMCx2enIsISFGbls0XV0sWzAsWzAsc3pyLCEhRm5bNV1dLHZ0XV1dLGd0PVswLFswLGJ6cixTKEZuWzFdKV0sTnRdO3JldHVyblswLENyLG1yLFNyLFswLHcocHpyLEhuWzFdLEZuWzZdLGd0KSxGMF1dfX0sTlZyLFUpLHkwPVswLFswLENWcixodSh5ZShZWzRdKSldLDBdLFAwPVswLFswLFBWcixodSh5ZShZWzNdKSldLHkwXSxJMD1bMCxbMCxEVnIsaHUoeWUoWVsyXSkpXSxQMF0sRD1bMCxbMCxMVnIsaHUoeWUoWVsxXSkpXSxJMF0sdTA9WzAsWzAsUlZyLCEhSVsxXV0sRF0sWDA9Xz9bMCxbMCxqVnIsISFJWzJdXSx1MF06dTAsSjA9cChJWzRdKTtyZXR1cm4gdyhHVnIsa1sxXSxKMCxYMCl9ZnVuY3Rpb24gbChfKXt2YXIgaz1bMCxbMCx1S3IsZzAoX1syXSldLDBdO3JldHVybiB3KGlLcixfWzFdLDAsayl9ZnVuY3Rpb24gYzAoXyl7dmFyIGs9X1syXTtzd2l0Y2goa1syXSl7Y2FzZSAwOnZhciBJPUtZcjticmVhaztjYXNlIDE6dmFyIEk9V1lyO2JyZWFrO2RlZmF1bHQ6dmFyIEk9SllyfXZhciBVPVswLFswLCRZcixibihJKV0sMF0sWT1bMCxbMCxaWXIsbigkMCxrWzFdKV0sVV07cmV0dXJuIHcoUVlyLF9bMV0sa1szXSxZKX1mdW5jdGlvbiB0MChfKXt2YXIgaz1fWzJdO3JldHVybiB3KE5ZcixfWzFdLGtbM10sWzAsWzAsQVlyLGJuKGtbMV0pXSxbMCxbMCxJWXIsYm4oa1syXSldLDBdXSl9ZnVuY3Rpb24gbzAoXyl7dmFyIGs9X1syXSxJPVswLFswLElYcixpMV0sWzAsWzAsT1hyLGwoa1sxXSldLDBdXTtyZXR1cm4gdyhBWHIsX1sxXSxrWzJdLEkpfWZ1bmN0aW9uIHcwKF8sayl7dmFyIEk9a1sxXVsyXSxVPVswLFswLCRxciwhIWtbM11dLDBdLFk9WzAsWzAsWnFyLGkobCxrWzJdKV0sVV07cmV0dXJuIHcoclVyLF8sSVsyXSxbMCxbMCxRcXIsYm4oSVsxXSldLFldKX1mdW5jdGlvbiBfMChfKXt2YXIgaz1fWzJdO3JldHVybiB3KEpxcixfWzFdLGtbMl0sWzAsWzAsV3FyLGJuKGtbMV0pXSxbMCxbMCxLcXIsaTddLFswLFswLHpxciwhMV0sMF1dXSl9ZnVuY3Rpb24gRTAoXyl7cmV0dXJuIG4oTTAsX1syXVsxXSl9ZnVuY3Rpb24gVTAoXyl7dmFyIGs9X1syXSxJPVswLFswLHdLcix3KFBLcixrWzJdLDAsMCldLDBdLFU9WzAsWzAsRUtyLG4ob2Usa1szXVsyXSldLEldLFk9WzAsWzAsU0tyLHcoQUtyLGtbMV0sMCwwKV0sVV07cmV0dXJuIHcoZ0tyLF9bMV0sa1s0XSxZKX1mdW5jdGlvbiBiKF8pe3ZhciBrPV9bMl07cmV0dXJuIHcocldyLF9bMV0sa1syXSxbMCxbMCxRS3IsYm4oa1sxXSldLDBdKX1mdW5jdGlvbiBSMChfKXt2YXIgaz1fWzJdLEk9WzAsWzAsSktyLGIoa1syXSldLDBdLFU9WzAsWzAsJEtyLGIoa1sxXSldLEldO3JldHVybiB3KFpLcixfWzFdLDAsVSl9ZnVuY3Rpb24gWChfKXt2YXIgaz1fWzJdLEk9a1sxXSxVPUlbMF09PT0wP2IoSVsxXSk6WChJWzFdKSxZPVswLFswLEtLcixVXSxbMCxbMCx6S3IsYihrWzJdKV0sMF1dO3JldHVybiB3KFdLcixfWzFdLDAsWSl9ZnVuY3Rpb24gczAoXyl7c3dpdGNoKF9bMF0pe2Nhc2UgMDpyZXR1cm4gYihfWzFdKTtjYXNlIDE6cmV0dXJuIFIwKF9bMV0pO2RlZmF1bHQ6cmV0dXJuIFgoX1sxXSl9fWZ1bmN0aW9uIGhyKF8pe3ZhciBrPV9bMl0sST1bMCxbMCx5S3IsbihvZSxrWzNdWzJdKV0sMF0sVT1bMCxbMCxoS3IsZShhZSxrWzJdKV0sSV0sWT1rWzFdLHkwPVlbMl0sUDA9WzAsWzAsRktyLCEheTBbMl1dLDBdLEkwPVswLFswLFRLcixuKGJlLHkwWzNdKV0sUDBdLEQ9WzAsWzAsT0tyLHMwKHkwWzFdKV0sSTBdLHUwPVswLFswLGRLcix3KElLcixZWzFdLDAsRCldLFVdO3JldHVybiB3KGtLcixfWzFdLGtbNF0sdTApfWZ1bmN0aW9uIEFyKF8pe3ZhciBrPV9bMl0sST1bMCxbMCxqWXIsbihmcixrWzJdKV0sMF0sVT1bMCxbMCxHWXIsbih2cixrWzFdKV0sSV07cmV0dXJuIHcoTVlyLF9bMV0sa1szXSxVKX1mdW5jdGlvbiBvcihfLGspe3ZhciBJPWtbMl0sVT1JWzddLFk9SVs1XSx5MD1JWzRdO2lmKHkwKXZhciBQMD15MFsxXVsyXSxJMD15NyhQMFszXSxVKSxEPUkwLHUwPVAwWzJdLFgwPVswLFAwWzFdXTtlbHNlIHZhciBEPVUsdTA9MCxYMD0wO2lmKFkpdmFyIEowPVlbMV1bMl0saXI9eTcoSjBbMl0sRCksUTA9aXIsRjA9bihUMCxKMFsxXSk7ZWxzZSB2YXIgUTA9RCxGMD1odSgwKTt2YXIgU3I9WzAsWzAselVyLEYwXSxbMCxbMCxWVXIsbihTMCxJWzZdKV0sMF1dLG1yPVswLFswLEtVcixlKCRyLHUwKV0sU3JdLENyPVswLFswLFdVcixlKGZyLFgwKV0sbXJdLHNyPVswLFswLEpVcixlKHFyLElbM10pXSxDcl0sUHI9SVsyXSxLMD1QclsyXSxVcj1bMCxbMCx1SHIsbihycixLMFsxXSldLDBdLGgwPVswLFswLCRVcix3KGlIcixQclsxXSxLMFsyXSxVcildLHNyXSxLcj1bMCxbMCxaVXIsZShTLElbMV0pXSxoMF07cmV0dXJuIHcoXyxrWzFdLFEwLEtyKX1mdW5jdGlvbiBXMChfKXt2YXIgaz1fWzJdLEk9WzAsWzAseFVyLEcoa1sxXSldLDBdLFU9cChrWzJdKTtyZXR1cm4gdyhvVXIsX1sxXSxVLEkpfWZ1bmN0aW9uIExyKF8pe3ZhciBrPV9bMl07c3dpdGNoKGtbMF0pe2Nhc2UgMDp2YXIgST0wLFU9UyhrWzFdKTticmVhaztjYXNlIDE6dmFyIEk9MCxVPV8wKGtbMV0pO2JyZWFrO2RlZmF1bHQ6dmFyIEk9MSxVPWZyKGtbMV0pfXJldHVyblswLFswLEVXcixmcihfWzFdKV0sWzAsWzAsd1dyLFVdLFswLFswLGtXciwhIUldLDBdXV19ZnVuY3Rpb24gVHIoXyl7dmFyIGs9WzAsWzAseVdyLEUwKF9bM10pXSwwXSxJPVswLFswLGhXcixlKG5lLF9bMl0pXSxrXTtyZXR1cm5bMCxbMCxkV3IsZnIoX1sxXSldLEldfWZ1bmN0aW9uIEhyKF8pe3ZhciBrPV9bMl0sST1rWzNdLFU9a1syXSxZPWtbMV07aWYoSSl7dmFyIHkwPUlbMV0sUDA9eTBbMl0sSTA9WzAsWzAsTlhyLE9yKFAwWzFdKV0sMF0sRD13KENYcix5MFsxXSxQMFsyXSxJMCksdTA9eWUoWzAsRCxGcChMMCxVKV0pLFgwPVk/WzAsbzAoWVsxXSksdTBdOnUwO3JldHVybiBodShYMCl9dmFyIEowPWQxKEwwLFUpLGlyPVk/WzAsbzAoWVsxXSksSjBdOkowO3JldHVybiBodShpcil9ZnVuY3Rpb24gT3IoXyl7dmFyIGs9X1syXSxJPV9bMV07c3dpdGNoKGtbMF0pe2Nhc2UgMDp2YXIgVT1rWzFdLFk9WzAsWzAsaFhyLGkobCxVWzJdKV0sMF0seTA9WzAsWzAsZFhyLG4oYjAsVVsxXSldLFldO3JldHVybiB3KGtYcixJLHAoVVszXSkseTApO2Nhc2UgMTp2YXIgUDA9a1sxXSxJMD1bMCxbMCx3WHIsaShsLFAwWzJdKV0sMF0sRD1bMCxbMCxFWHIsbihaLFAwWzFdKV0sSTBdO3JldHVybiB3KFNYcixJLHAoUDBbM10pLEQpO2Nhc2UgMjpyZXR1cm4gdzAoSSxrWzFdKTtkZWZhdWx0OnJldHVybiBmcihrWzFdKX19ZnVuY3Rpb24gZnIoXyl7dmFyIGs9X1syXSxJPV9bMV07c3dpdGNoKGtbMF0pe2Nhc2UgMDp2YXIgVT1rWzFdLFk9WzAsWzAsWE1yLG4oZXIsVVsxXSldLDBdO3JldHVybiB3KFlNcixJLHAoVVsyXSksWSk7Y2FzZSAxOnZhciB5MD1rWzFdLFAwPXkwWzddLEkwPXkwWzNdLEQ9eTBbMl07aWYoSTBbMF09PT0wKXZhciB1MD0wLFgwPVcwKEkwWzFdKTtlbHNlIHZhciB1MD0xLFgwPWZyKEkwWzFdKTt2YXIgSjA9UDBbMF09PT0wPzA6WzAsUDBbMV1dLGlyPXkwWzldLFEwPXk3KHAoRFsyXVs0XSksaXIpLEYwPVswLFswLFZNcixlKHFyLHkwWzhdKV0sMF0sU3I9WzAsWzAsS01yLCEhdTBdLFswLFswLHpNcixlKGwsSjApXSxGMF1dLG1yPVswLFswLEpNciwhMV0sWzAsWzAsV01yLGUoRnIseTBbNl0pXSxTcl1dLENyPVswLFswLFpNcixYMF0sWzAsWzAsJE1yLCEheTBbNF1dLG1yXV07cmV0dXJuIHcoZUJyLEksUTAsWzAsWzAsckJyLGk3XSxbMCxbMCxRTXIsSHIoRCldLENyXV0pO2Nhc2UgMjp2YXIgc3I9a1sxXSxQcj1zclsxXTtpZihQcil7c3dpdGNoKFByWzFdKXtjYXNlIDA6dmFyIEswPVRwcjticmVhaztjYXNlIDE6dmFyIEswPU9wcjticmVhaztjYXNlIDI6dmFyIEswPUlwcjticmVhaztjYXNlIDM6dmFyIEswPUFwcjticmVhaztjYXNlIDQ6dmFyIEswPU5wcjticmVhaztjYXNlIDU6dmFyIEswPUNwcjticmVhaztjYXNlIDY6dmFyIEswPVBwcjticmVhaztjYXNlIDc6dmFyIEswPURwcjticmVhaztjYXNlIDg6dmFyIEswPUxwcjticmVhaztjYXNlIDk6dmFyIEswPVJwcjticmVhaztjYXNlIDEwOnZhciBLMD1qcHI7YnJlYWs7Y2FzZSAxMTp2YXIgSzA9R3ByO2JyZWFrO2Nhc2UgMTI6dmFyIEswPU1wcjticmVhaztjYXNlIDEzOnZhciBLMD1CcHI7YnJlYWs7ZGVmYXVsdDp2YXIgSzA9cXByfXZhciBVcj1LMH1lbHNlIHZhciBVcj1uQnI7dmFyIGgwPVswLFswLHRCcixmcihzclszXSldLDBdLEtyPVswLFswLHVCcixPcihzclsyXSldLGgwXTtyZXR1cm4gdyhmQnIsSSxzcls0XSxbMCxbMCxpQnIsYm4oVXIpXSxLcl0pO2Nhc2UgMzp2YXIgcmU9a1sxXSx4ZT1bMCxbMCx4QnIsZnIocmVbM10pXSwwXSxSZT1bMCxbMCxvQnIsZnIocmVbMl0pXSx4ZV07c3dpdGNoKHJlWzFdKXtjYXNlIDA6dmFyIHZlPWlwcjticmVhaztjYXNlIDE6dmFyIHZlPWZwcjticmVhaztjYXNlIDI6dmFyIHZlPXhwcjticmVhaztjYXNlIDM6dmFyIHZlPW9wcjticmVhaztjYXNlIDQ6dmFyIHZlPWFwcjticmVhaztjYXNlIDU6dmFyIHZlPWNwcjticmVhaztjYXNlIDY6dmFyIHZlPXNwcjticmVhaztjYXNlIDc6dmFyIHZlPXZwcjticmVhaztjYXNlIDg6dmFyIHZlPWxwcjticmVhaztjYXNlIDk6dmFyIHZlPWJwcjticmVhaztjYXNlIDEwOnZhciB2ZT1wcHI7YnJlYWs7Y2FzZSAxMTp2YXIgdmU9bXByO2JyZWFrO2Nhc2UgMTI6dmFyIHZlPV9wcjticmVhaztjYXNlIDEzOnZhciB2ZT15cHI7YnJlYWs7Y2FzZSAxNDp2YXIgdmU9aHByO2JyZWFrO2Nhc2UgMTU6dmFyIHZlPWRwcjticmVhaztjYXNlIDE2OnZhciB2ZT1rcHI7YnJlYWs7Y2FzZSAxNzp2YXIgdmU9d3ByO2JyZWFrO2Nhc2UgMTg6dmFyIHZlPUVwcjticmVhaztjYXNlIDE5OnZhciB2ZT1TcHI7YnJlYWs7Y2FzZSAyMDp2YXIgdmU9Z3ByO2JyZWFrO2RlZmF1bHQ6dmFyIHZlPUZwcn1yZXR1cm4gdyhjQnIsSSxyZVs0XSxbMCxbMCxhQnIsYm4odmUpXSxSZV0pO2Nhc2UgNDp2YXIgSWU9a1sxXSxHZT1JZVs0XSxNZT15NyhwKEllWzNdWzJdWzJdKSxHZSk7cmV0dXJuIHcoc0JyLEksTWUsVHIoSWUpKTtjYXNlIDU6cmV0dXJuIG9yKFlVcixbMCxJLGtbMV1dKTtjYXNlIDY6dmFyIGFuPWtbMV0sV2U9WzAsWzAsdkJyLGUoZnIsYW5bMl0pXSwwXTtyZXR1cm4gdyhiQnIsSSwwLFswLFswLGxCcixuKHlyLGFuWzFdKV0sV2VdKTtjYXNlIDc6dmFyIEFlPWtbMV0sY249WzAsWzAscEJyLGZyKEFlWzNdKV0sMF0scm49WzAsWzAsbUJyLGZyKEFlWzJdKV0sY25dLGtuPVswLFswLF9CcixmcihBZVsxXSldLHJuXTtyZXR1cm4gdyh5QnIsSSxBZVs0XSxrbik7Y2FzZSA4OnJldHVybiBScihbMCxJLGtbMV1dKTtjYXNlIDk6dmFyIHZuPWtbMV0sTmU9WzAsWzAsaEJyLGUoZnIsdm5bMl0pXSwwXTtyZXR1cm4gdyhrQnIsSSwwLFswLFswLGRCcixuKHlyLHZuWzFdKV0sTmVdKTtjYXNlIDEwOnJldHVybiBTKGtbMV0pO2Nhc2UgMTE6dmFyIEplPWtbMV0sZW49WzAsWzAsd0JyLGZyKEplWzFdKV0sMF07cmV0dXJuIHcoRUJyLEksSmVbMl0sZW4pO2Nhc2UgMTI6cmV0dXJuIGhyKFswLEksa1sxXV0pO2Nhc2UgMTM6cmV0dXJuIFUwKFswLEksa1sxXV0pO2Nhc2UgMTQ6dmFyIF9uPWtbMV0sQ249X25bMV07cmV0dXJuIHR5cGVvZiBDbiE9XCJudW1iZXJcIiYmQ25bMF09PT0zP3coT1lyLEksX25bM10sWzAsWzAsVFlyLGk3XSxbMCxbMCxGWXIsYm4oX25bMl0pXSwwXV0pOmYwKFswLEksX25dKTtjYXNlIDE1OnZhciBIbj1rWzFdO3N3aXRjaChIblsxXSl7Y2FzZSAwOnZhciBGbj1TQnI7YnJlYWs7Y2FzZSAxOnZhciBGbj1nQnI7YnJlYWs7ZGVmYXVsdDp2YXIgRm49RkJyfXZhciB2dD1bMCxbMCxUQnIsZnIoSG5bM10pXSwwXSxOdD1bMCxbMCxPQnIsZnIoSG5bMl0pXSx2dF07cmV0dXJuIHcoQUJyLEksSG5bNF0sWzAsWzAsSUJyLGJuKEZuKV0sTnRdKTtjYXNlIDE2OnZhciBndD1rWzFdLFp0PUxyKGd0KTtyZXR1cm4gdyhOQnIsSSxndFszXSxadCk7Y2FzZSAxNzp2YXIgcXQ9a1sxXSxGdD1bMCxbMCxDQnIsUyhxdFsyXSldLDBdLEN0PVswLFswLFBCcixTKHF0WzFdKV0sRnRdO3JldHVybiB3KERCcixJLHF0WzNdLEN0KTtjYXNlIDE4OnZhciBkdT1rWzFdLFd1PWR1WzRdLGx0PWR1WzNdO2lmKGx0KXZhciBvdT1sdFsxXSxCdT15NyhwKG91WzJdWzJdKSxXdSksSzc9QnUsWWk9RTAob3UpO2Vsc2UgdmFyIEs3PVd1LFlpPWh1KDApO3ZhciBhNz1bMCxbMCxSQnIsZShuZSxkdVsyXSldLFswLFswLExCcixZaV0sMF1dO3JldHVybiB3KEdCcixJLEs3LFswLFswLGpCcixmcihkdVsxXSldLGE3XSk7Y2FzZSAxOTp2YXIgSGM9a1sxXSxXNz1bMCxbMCxNQnIsbihwMCxIY1sxXSldLDBdO3JldHVybiB3KEJCcixJLHAoSGNbMl0pLFc3KTtjYXNlIDIwOnZhciBVdD1rWzFdLGJ0PVV0WzFdLEIwPWJ0WzRdLEQwPXk3KHAoYnRbM11bMl1bMl0pLEIwKSxMZT1bMCxbMCxxQnIsISFVdFszXV0sMF07cmV0dXJuIHcoVUJyLEksRDAsb24oVHIoYnQpLExlKSk7Y2FzZSAyMTp2YXIgSGU9a1sxXSxoZT1IZVsxXSxtZT1bMCxbMCxIQnIsISFIZVszXV0sMF0sWm49b24oTHIoaGUpLG1lKTtyZXR1cm4gdyhYQnIsSSxoZVszXSxabik7Y2FzZSAyMjp2YXIgd249a1sxXSxmdD1bMCxbMCxZQnIsbihmcix3blsxXSldLDBdO3JldHVybiB3KFZCcixJLHduWzJdLGZ0KTtjYXNlIDIzOnJldHVybiB3KHpCcixJLGtbMV1bMV0sMCk7Y2FzZSAyNDp2YXIgeHQ9a1sxXSxqbj1bMCxbMCxZWXIsQXIoeHRbMl0pXSwwXSx1dD1bMCxbMCxWWXIsZnIoeHRbMV0pXSxqbl07cmV0dXJuIHcoellyLEkseHRbM10sdXQpO2Nhc2UgMjU6cmV0dXJuIEFyKFswLEksa1sxXV0pO2Nhc2UgMjY6cmV0dXJuIHcoS0JyLEksa1sxXVsxXSwwKTtjYXNlIDI3OnZhciBkdD1rWzFdLHhuPVswLFswLFdCcixsKGR0WzJdKV0sMF0sbG49WzAsWzAsSkJyLGZyKGR0WzFdKV0seG5dO3JldHVybiB3KCRCcixJLGR0WzNdLGxuKTtjYXNlIDI4OnZhciBpdD1rWzFdLFR0PWl0WzNdLFRpPWl0WzJdLGhzPWl0WzFdO2lmKDc8PWhzKXJldHVybiB3KFFCcixJLFR0LFswLFswLFpCcixmcihUaSldLDBdKTtzd2l0Y2goaHMpe2Nhc2UgMDp2YXIgQXU9cnFyO2JyZWFrO2Nhc2UgMTp2YXIgQXU9ZXFyO2JyZWFrO2Nhc2UgMjp2YXIgQXU9bnFyO2JyZWFrO2Nhc2UgMzp2YXIgQXU9dHFyO2JyZWFrO2Nhc2UgNDp2YXIgQXU9dXFyO2JyZWFrO2Nhc2UgNTp2YXIgQXU9aXFyO2JyZWFrO2Nhc2UgNjp2YXIgQXU9ZnFyO2JyZWFrO2RlZmF1bHQ6dmFyIEF1PWtlKHhxcil9dmFyIEhzPVswLFswLGFxciwhMF0sWzAsWzAsb3FyLGZyKFRpKV0sMF1dO3JldHVybiB3KHNxcixJLFR0LFswLFswLGNxcixibihBdSldLEhzXSk7Y2FzZSAyOTp2YXIgVmk9a1sxXSxYcz1WaVsxXT92cXI6bHFyLFlzPVswLFswLGJxciwhIVZpWzNdXSwwXSxubj1bMCxbMCxwcXIsZnIoVmlbMl0pXSxZc107cmV0dXJuIHcoX3FyLEksVmlbNF0sWzAsWzAsbXFyLGJuKFhzKV0sbm5dKTtkZWZhdWx0OnZhciBzaT1rWzFdLFZzPVswLFswLHlxciwhIXNpWzNdXSwwXSxjMj1bMCxbMCxocXIsZShmcixzaVsxXSldLFZzXTtyZXR1cm4gdyhkcXIsSSxzaVsyXSxjMil9fWZ1bmN0aW9uIFJyKF8pe3ZhciBrPV9bMl0sST1rWzddLFU9a1szXSxZPWtbMl0seTA9VVswXT09PTA/VVsxXTprZShDcXIpLFAwPUlbMF09PT0wPzA6WzAsSVsxXV0sSTA9a1s5XSxEPXk3KHAoWVsyXVs0XSksSTApLHUwPVswLFswLFBxcixlKHFyLGtbOF0pXSwwXSxYMD1bMCxbMCxMcXIsITFdLFswLFswLERxcixlKGwsUDApXSx1MF1dLEowPVswLFswLFJxcixlKEZyLGtbNl0pXSxYMF0saXI9WzAsWzAsR3FyLCEha1s0XV0sWzAsWzAsanFyLCEha1s1XV0sSjBdXSxRMD1bMCxbMCxNcXIsVzAoeTApXSxpcl0sRjA9WzAsWzAsQnFyLEhyKFkpXSxRMF0sU3I9WzAsWzAscXFyLGUoUyxrWzFdKV0sRjBdO3JldHVybiB3KFVxcixfWzFdLEQsU3IpfWZ1bmN0aW9uIFdyKF8pe3ZhciBrPV9bMl0sST1bMCxbMCxzWHIsbihmZSxrWzNdKV0sMF0sVT1bMCxbMCx2WHIseDAoMCxrWzRdKV0sSV0sWT1bMCxbMCxsWHIsZShxcixrWzJdKV0sVV0seTA9WzAsWzAsYlhyLFMoa1sxXSldLFldO3JldHVybiB3KHBYcixfWzFdLGtbNV0seTApfWZ1bmN0aW9uIEpyKF8sayl7dmFyIEk9a1syXSxVPV8/R1VyOk1VcixZPVswLFswLEJVcixlKGcwLElbNF0pXSwwXSx5MD1bMCxbMCxxVXIsZShnMCxJWzNdKV0sWV0sUDA9WzAsWzAsVVVyLGUocXIsSVsyXSldLHkwXSxJMD1bMCxbMCxIVXIsUyhJWzFdKV0sUDBdO3JldHVybiB3KFUsa1sxXSxJWzVdLEkwKX1mdW5jdGlvbiBhcihfKXt2YXIgaz1fWzJdLEk9WzAsWzAsRFVyLGcwKGtbM10pXSwwXSxVPVswLFswLExVcixlKHFyLGtbMl0pXSxJXSxZPVswLFswLFJVcixTKGtbMV0pXSxVXTtyZXR1cm4gdyhqVXIsX1sxXSxrWzRdLFkpfWZ1bmN0aW9uIF9yKF8pe2lmKF8pe3ZhciBrPV9bMV07aWYoa1swXT09PTApcmV0dXJuIG4oZ2Usa1sxXSk7dmFyIEk9a1sxXSxVPUlbMl07aWYoVSl7dmFyIFk9WzAsWzAsT1VyLFMoVVsxXSldLDBdO3JldHVybiBodShbMCx3KElVcixJWzFdLDAsWSksMF0pfXJldHVybiBodSgwKX1yZXR1cm4gaHUoMCl9ZnVuY3Rpb24gSXIoXyl7cmV0dXJuIF8/RlVyOlRVcn1mdW5jdGlvbiBmZShfKXt2YXIgaz1fWzJdLEk9a1sxXSxVPUlbMF09PT0wP1MoSVsxXSk6SyhJWzFdKSxZPVswLFswLF9YcixVXSxbMCxbMCxtWHIsZSgkcixrWzJdKV0sMF1dO3JldHVybiB3KHlYcixfWzFdLGtbM10sWSl9ZnVuY3Rpb24gdjAoXyl7dmFyIGs9X1syXSxJPWtbNl0sVT1rWzRdLFk9aHUoVT9bMCxmZShVWzFdKSwwXTowKSx5MD1JP24oVDAsSVsxXVsyXVsxXSk6aHUoMCksUDA9WzAsWzAsbVVyLFldLFswLFswLHBVcix5MF0sWzAsWzAsYlVyLG4oZmUsa1s1XSldLDBdXV0sSTA9WzAsWzAsX1VyLHgwKDAsa1szXSldLFAwXSxEPVswLFswLHlVcixlKHFyLGtbMl0pXSxJMF0sdTA9WzAsWzAsaFVyLFMoa1sxXSldLERdO3JldHVybiB3KGRVcixfWzFdLGtbN10sdTApfWZ1bmN0aW9uIFAoXyl7dmFyIGs9X1syXSxJPWtbMl0sVT1rWzFdLFk9eXQoVVsxXSxJWzFdKSx5MD1bMCxbMCxzVXIsZShGcixrWzNdKV0sMF0sUDA9WzAsWzAsdlVyLHcwKFksWzAsVSxbMSxJXSwwXSldLHkwXTtyZXR1cm4gdyhsVXIsX1sxXSxrWzRdLFAwKX1mdW5jdGlvbiBMKF8pe3ZhciBrPV9bMl0sST1rWzJdLFU9a1sxXSxZPVswLFswLGFVcix3MCh5dChVWzFdLElbMV0pLFswLFUsWzEsSV0sMF0pXSwwXTtyZXR1cm4gdyhjVXIsX1sxXSxrWzNdLFkpfWZ1bmN0aW9uIFEoXyl7dmFyIGs9X1syXSxJPV9bMV07c3dpdGNoKGtbMF0pe2Nhc2UgMDpyZXR1cm4gVzAoWzAsSSxrWzFdXSk7Y2FzZSAxOnZhciBVPWtbMV0sWT1bMCxbMCxwR3IsZShTLFVbMV0pXSwwXTtyZXR1cm4gdyhtR3IsSSxVWzJdLFkpO2Nhc2UgMjpyZXR1cm4gb3IoWFVyLFswLEksa1sxXV0pO2Nhc2UgMzp2YXIgeTA9a1sxXSxQMD1bMCxbMCxfR3IsZShTLHkwWzFdKV0sMF07cmV0dXJuIHcoeUdyLEkseTBbMl0sUDApO2Nhc2UgNDpyZXR1cm4gdyhoR3IsSSxrWzFdWzFdLDApO2Nhc2UgNTpyZXR1cm4gdjAoWzAsSSxrWzFdXSk7Y2FzZSA2OnZhciBJMD1rWzFdLEQ9STBbNV0sdTA9STBbNF0sWDA9STBbM10sSjA9STBbMl07aWYoWDApe3ZhciBpcj1YMFsxXTtpZihpclswXSE9PTAmJiFpclsxXVsyXSlyZXR1cm4gdyhrR3IsSSxELFswLFswLGRHcixlKHQwLHUwKV0sMF0pfWlmKEowKXt2YXIgUTA9SjBbMV07c3dpdGNoKFEwWzBdKXtjYXNlIDA6dmFyIEYwPUwoUTBbMV0pO2JyZWFrO2Nhc2UgMTp2YXIgRjA9UChRMFsxXSk7YnJlYWs7Y2FzZSAyOnZhciBGMD12MChRMFsxXSk7YnJlYWs7Y2FzZSAzOnZhciBGMD1nMChRMFsxXSk7YnJlYWs7Y2FzZSA0OnZhciBGMD1hcihRMFsxXSk7YnJlYWs7Y2FzZSA1OnZhciBGMD1KcigxLFEwWzFdKTticmVhaztkZWZhdWx0OnZhciBGMD1XcihRMFsxXSl9dmFyIFNyPUYwfWVsc2UgdmFyIFNyPWk3O3ZhciBtcj1bMCxbMCx3R3IsZSh0MCx1MCldLDBdLENyPVswLFswLFNHcixTcl0sWzAsWzAsRUdyLF9yKFgwKV0sbXJdXSxzcj1JMFsxXSxQcj1zciYmMTtyZXR1cm4gdyhGR3IsSSxELFswLFswLGdHciwhIVByXSxDcl0pO2Nhc2UgNzpyZXR1cm4gUChbMCxJLGtbMV1dKTtjYXNlIDg6dmFyIEswPWtbMV0sVXI9WzAsWzAsa1VyLG4oZmUsSzBbM10pXSwwXSxoMD1bMCxbMCx3VXIseDAoMCxLMFs0XSldLFVyXSxLcj1bMCxbMCxFVXIsZShxcixLMFsyXSldLGgwXSxyZT1bMCxbMCxTVXIsUyhLMFsxXSldLEtyXTtyZXR1cm4gdyhnVXIsSSxLMFs1XSxyZSk7Y2FzZSA5OnZhciB4ZT1rWzFdLFJlPXhlWzFdLHZlPVJlWzBdPT09MD9TKFJlWzFdKTp0MChSZVsxXSksSWU9MCxHZT14ZVszXT9cIkVTXCI6XCJDb21tb25KU1wiLE1lPVswLFswLElHcix2ZV0sWzAsWzAsT0dyLFcwKHhlWzJdKV0sWzAsWzAsVEdyLEdlXSxJZV1dXTtyZXR1cm4gdyhBR3IsSSx4ZVs0XSxNZSk7Y2FzZSAxMDp2YXIgYW49a1sxXSxXZT1bMCxbMCxOR3IsbChhblsxXSldLDBdO3JldHVybiB3KENHcixJLGFuWzJdLFdlKTtjYXNlIDExOnZhciBBZT1rWzFdLGNuPVswLFswLEFVcixnMChBZVszXSldLDBdLHJuPVswLFswLE5VcixlKHFyLEFlWzJdKV0sY25dLGtuPVswLFswLENVcixTKEFlWzFdKV0scm5dO3JldHVybiB3KFBVcixJLEFlWzRdLGtuKTtjYXNlIDEyOnJldHVybiBKcigxLFswLEksa1sxXV0pO2Nhc2UgMTM6cmV0dXJuIEwoWzAsSSxrWzFdXSk7Y2FzZSAxNDp2YXIgdm49a1sxXSxOZT1bMCxbMCxQR3IsZnIodm5bMl0pXSwwXSxKZT1bMCxbMCxER3IsUSh2blsxXSldLE5lXTtyZXR1cm4gdyhMR3IsSSx2blszXSxKZSk7Y2FzZSAxNTpyZXR1cm4gdyhSR3IsSSxrWzFdWzFdLDApO2Nhc2UgMTY6dmFyIGVuPWtbMV0sX249ZW5bMl0sQ249X25bMl0sSG49X25bMV07c3dpdGNoKENuWzBdKXtjYXNlIDA6dmFyIEZuPUNuWzFdLHZ0PVswLFswLEtIciwhIUZuWzJdXSxbMCxbMCx6SHIsISFGblszXV0sMF1dLE50PUZuWzFdLGd0PVswLFswLFdIcixuKGZ1bmN0aW9uKGt1KXt2YXIgd3U9a3VbMl0sSWk9d3VbMl0sdzc9SWlbMl0sS2k9dzdbMV0sZXY9MCxMYj1LaT9DWXI6UFlyLG52PVswLFswLFhIcix3KFJZcixJaVsxXSx3N1syXSxbMCxbMCxMWXIsISFLaV0sWzAsWzAsRFlyLGJuKExiKV0sMF1dKV0sZXZdLFJiPVswLFswLFlIcixTKHd1WzFdKV0sbnZdO3JldHVybiB3KFZIcixrdVsxXSwwLFJiKX0sTnQpXSx2dF0sYnQ9dyhKSHIsSG4scChGbls0XSksZ3QpO2JyZWFrO2Nhc2UgMTp2YXIgWnQ9Q25bMV0scXQ9WzAsWzAsWkhyLCEhWnRbMl1dLFswLFswLCRIciwhIVp0WzNdXSwwXV0sRnQ9WnRbMV0sQ3Q9WzAsWzAsUUhyLG4oZnVuY3Rpb24oa3Upe3ZhciB3dT1rdVsyXSxJaT13dVsyXSx3Nz1JaVsyXSxLaT1bMCxbMCxxSHIsdyhnWXIsSWlbMV0sdzdbM10sWzAsWzAsU1lyLHc3WzFdXSxbMCxbMCxFWXIsYm4odzdbMl0pXSwwXV0pXSwwXSxldj1bMCxbMCxVSHIsUyh3dVsxXSldLEtpXTtyZXR1cm4gdyhISHIsa3VbMV0sMCxldil9LEZ0KV0scXRdLGJ0PXcoclhyLEhuLHAoWnRbNF0pLEN0KTticmVhaztjYXNlIDI6dmFyIGR1PUNuWzFdLFd1PWR1WzFdO2lmKFd1WzBdPT09MCl2YXIgbHQ9V3VbMV0sQnU9ZDEoZnVuY3Rpb24oa3Upe3ZhciB3dT1bMCxbMCxNSHIsUyhrdVsyXVsxXSldLDBdO3JldHVybiB3KEJIcixrdVsxXSwwLHd1KX0sbHQpO2Vsc2UgdmFyIG91PVd1WzFdLEJ1PWQxKGZ1bmN0aW9uKGt1KXt2YXIgd3U9a3VbMl0sSWk9WzAsWzAsUkhyLHQwKHd1WzJdKV0sMF0sdzc9WzAsWzAsakhyLFMod3VbMV0pXSxJaV07cmV0dXJuIHcoR0hyLGt1WzFdLDAsdzcpfSxvdSk7dmFyIEs3PVswLFswLG5YciwhIWR1WzJdXSxbMCxbMCxlWHIsISFkdVszXV0sMF1dLFlpPVswLFswLHRYcixodShCdSldLEs3XSxidD13KHVYcixIbixwKGR1WzRdKSxZaSk7YnJlYWs7ZGVmYXVsdDp2YXIgYTc9Q25bMV0sSGM9WzAsWzAsaVhyLCEhYTdbMl1dLDBdLFc3PWE3WzFdLFV0PVswLFswLGZYcixuKGZ1bmN0aW9uKGt1KXt2YXIgd3U9WzAsWzAsREhyLFMoa3VbMl1bMV0pXSwwXTtyZXR1cm4gdyhMSHIsa3VbMV0sMCx3dSl9LFc3KV0sSGNdLGJ0PXcoeFhyLEhuLHAoYTdbM10pLFV0KX12YXIgQjA9WzAsWzAsYVhyLFMoZW5bMV0pXSxbMCxbMCxvWHIsYnRdLDBdXTtyZXR1cm4gdyhjWHIsSSxlblszXSxCMCk7Y2FzZSAxNzp2YXIgRDA9a1sxXSxMZT1EMFsyXSxIZT1MZVswXT09PTA/UShMZVsxXSk6ZnIoTGVbMV0pLGhlPVswLFswLEdHcixIZV0sWzAsWzAsakdyLGJuKElyKDEpKV0sMF1dO3JldHVybiB3KE1HcixJLEQwWzNdLGhlKTtjYXNlIDE4OnZhciBtZT1rWzFdLFpuPW1lWzVdLHduPW1lWzRdLGZ0PW1lWzNdLHh0PW1lWzJdO2lmKHh0KXt2YXIgam49eHRbMV07aWYoam5bMF0hPT0wKXt2YXIgdXQ9WzAsWzAsQkdyLGJuKElyKHduKSldLDBdLGR0PVswLFswLHFHcixlKFMsam5bMV1bMl0pXSx1dF07cmV0dXJuIHcoSEdyLEksWm4sWzAsWzAsVUdyLGUodDAsZnQpXSxkdF0pfX12YXIgeG49WzAsWzAsWEdyLGJuKElyKHduKSldLDBdLGxuPVswLFswLFlHcixlKHQwLGZ0KV0seG5dLGl0PVswLFswLFZHcixfcih4dCldLGxuXTtyZXR1cm4gdyhLR3IsSSxabixbMCxbMCx6R3IsZShRLG1lWzFdKV0saXRdKTtjYXNlIDE5OnZhciBUdD1rWzFdLFRpPVswLFswLFdHcixlKFdlMCxUdFsyXSldLDBdLGhzPVswLFswLEpHcixmcihUdFsxXSldLFRpXTtyZXR1cm4gdygkR3IsSSxUdFszXSxocyk7Y2FzZSAyMDp2YXIgQXU9a1sxXSxIcz1mdW5jdGlvbihrdSl7cmV0dXJuIGt1WzBdPT09MD9jMChrdVsxXSk6ZnIoa3VbMV0pfSxWaT1bMCxbMCxaR3IsUShBdVs0XSldLDBdLFhzPVswLFswLFFHcixlKGZyLEF1WzNdKV0sVmldLFlzPVswLFswLHJNcixlKGZyLEF1WzJdKV0sWHNdLG5uPVswLFswLGVNcixlKEhzLEF1WzFdKV0sWXNdO3JldHVybiB3KG5NcixJLEF1WzVdLG5uKTtjYXNlIDIxOnZhciBzaT1rWzFdLFZzPXNpWzFdLGMyPVZzWzBdPT09MD9jMChWc1sxXSk6T3IoVnNbMV0pLE05PVswLFswLHRNciwhIXNpWzRdXSwwXSxCOT1bMCxbMCx1TXIsUShzaVszXSldLE05XSxxOT1bMCxbMCxmTXIsYzJdLFswLFswLGlNcixmcihzaVsyXSldLEI5XV07cmV0dXJuIHcoeE1yLEksc2lbNV0scTkpO2Nhc2UgMjI6dmFyIHpzPWtbMV0sczI9enNbMV0sVTk9czJbMF09PT0wP2MwKHMyWzFdKTpPcihzMlsxXSksSDk9WzAsWzAsb01yLCEhenNbNF1dLDBdLFg5PVswLFswLGFNcixRKHpzWzNdKV0sSDldLEgxPVswLFswLHNNcixVOV0sWzAsWzAsY01yLGZyKHpzWzJdKV0sWDldXTtyZXR1cm4gdyh2TXIsSSx6c1s1XSxIMSk7Y2FzZSAyMzp2YXIgdmk9a1sxXSxhYj12aVs3XSxjYj12aVszXSxzYj12aVsyXSxZOT1jYlswXT09PTA/Y2JbMV06a2Uoa3FyKSxWOT1hYlswXT09PTA/MDpbMCxhYlsxXV0sejk9dmlbOV0sdmI9eTcocChzYlsyXVs0XSksejkpLEs5PVswLFswLHdxcixlKHFyLHZpWzhdKV0sMF0sVzk9WzAsWzAsU3FyLCExXSxbMCxbMCxFcXIsZShsLFY5KV0sSzldXSxKOT1bMCxbMCxncXIsZShGcix2aVs2XSldLFc5XSwkOT1bMCxbMCxUcXIsISF2aVs0XV0sWzAsWzAsRnFyLCEhdmlbNV1dLEo5XV0sbGI9WzAsWzAsT3FyLFcwKFk5KV0sJDldLFo5PVswLFswLElxcixIcihzYildLGxiXTtyZXR1cm4gdyhOcXIsSSx2YixbMCxbMCxBcXIsZShTLHZpWzFdKV0sWjldKTtjYXNlIDI0OnZhciBYMT1rWzFdLHYyPVgxWzNdO2lmKHYyKXt2YXIgYmI9djJbMV1bMl0scGI9YmJbMl0sbWI9YmJbMV0sT249bWJbMl0sR249ZnVuY3Rpb24od3Upe3JldHVybiB5Nyh3dSxwYil9O3N3aXRjaChPblswXSl7Y2FzZSAwOnZhciBZMT1PblsxXSxfYj1KRChZMVsyXSxwYiksTW49WzAsWzAsWTFbMV0sX2JdXTticmVhaztjYXNlIDE6dmFyIHliPU9uWzFdLFE5PUduKHliWzJdKSxNbj1bMSxbMCx5YlsxXSxROV1dO2JyZWFrO2Nhc2UgMjp2YXIgWGM9T25bMV0scl89R24oWGNbN10pLE1uPVsyLFswLFhjWzFdLFhjWzJdLFhjWzNdLFhjWzRdLFhjWzVdLFhjWzZdLHJfXV07YnJlYWs7Y2FzZSAzOnZhciBsMj1PblsxXSxoYj1HbihsMlsyXSksTW49WzMsWzAsbDJbMV0saGJdXTticmVhaztjYXNlIDQ6dmFyIE1uPVs0LFswLEduKE9uWzFdWzFdKV1dO2JyZWFrO2Nhc2UgNTp2YXIgWWM9T25bMV0sZV89R24oWWNbN10pLE1uPVs1LFswLFljWzFdLFljWzJdLFljWzNdLFljWzRdLFljWzVdLFljWzZdLGVfXV07YnJlYWs7Y2FzZSA2OnZhciBLcz1PblsxXSxkYj1HbihLc1s1XSksTW49WzYsWzAsS3NbMV0sS3NbMl0sS3NbM10sS3NbNF0sZGJdXTticmVhaztjYXNlIDc6dmFyIFYxPU9uWzFdLG5fPUduKFYxWzRdKSxNbj1bNyxbMCxWMVsxXSxWMVsyXSxWMVszXSxuX11dO2JyZWFrO2Nhc2UgODp2YXIgZHM9T25bMV0sdF89R24oZHNbNV0pLE1uPVs4LFswLGRzWzFdLGRzWzJdLGRzWzNdLGRzWzRdLHRfXV07YnJlYWs7Y2FzZSA5OnZhciB6MT1PblsxXSx1Xz1Hbih6MVs0XSksTW49WzksWzAsejFbMV0sejFbMl0sejFbM10sdV9dXTticmVhaztjYXNlIDEwOnZhciBiMj1PblsxXSxpXz1HbihiMlsyXSksTW49WzEwLFswLGIyWzFdLGlfXV07YnJlYWs7Y2FzZSAxMTp2YXIgV3M9T25bMV0sa2I9R24oV3NbNF0pLE1uPVsxMSxbMCxXc1sxXSxXc1syXSxXc1szXSxrYl1dO2JyZWFrO2Nhc2UgMTI6dmFyIEpzPU9uWzFdLGZfPUduKEpzWzVdKSxNbj1bMTIsWzAsSnNbMV0sSnNbMl0sSnNbM10sSnNbNF0sZl9dXTticmVhaztjYXNlIDEzOnZhciB6aT1PblsxXSxWYz1Hbih6aVszXSksTW49WzEzLFswLHppWzFdLHppWzJdLFZjXV07YnJlYWs7Y2FzZSAxNDp2YXIgJHM9T25bMV0seF89R24oJHNbM10pLE1uPVsxNCxbMCwkc1sxXSwkc1syXSx4X11dO2JyZWFrO2Nhc2UgMTU6dmFyIE1uPVsxNSxbMCxHbihPblsxXVsxXSldXTticmVhaztjYXNlIDE2OnZhciBwMj1PblsxXSxtMj1HbihwMlszXSksTW49WzE2LFswLHAyWzFdLHAyWzJdLG0yXV07YnJlYWs7Y2FzZSAxNzp2YXIgXzI9T25bMV0sb189R24oXzJbM10pLE1uPVsxNyxbMCxfMlsxXSxfMlsyXSxvX11dO2JyZWFrO2Nhc2UgMTg6dmFyIFpzPU9uWzFdLGFfPUduKFpzWzVdKSxNbj1bMTgsWzAsWnNbMV0sWnNbMl0sWnNbM10sWnNbNF0sYV9dXTticmVhaztjYXNlIDE5OnZhciB5Mj1PblsxXSxxTD1Hbih5MlszXSksTW49WzE5LFswLHkyWzFdLHkyWzJdLHFMXV07YnJlYWs7Y2FzZSAyMDp2YXIgSzE9T25bMV0sVUw9R24oSzFbNV0pLE1uPVsyMCxbMCxLMVsxXSxLMVsyXSxLMVszXSxLMVs0XSxVTF1dO2JyZWFrO2Nhc2UgMjE6dmFyIFcxPU9uWzFdLEhMPUduKFcxWzVdKSxNbj1bMjEsWzAsVzFbMV0sVzFbMl0sVzFbM10sVzFbNF0sSExdXTticmVhaztjYXNlIDIyOnZhciBKMT1PblsxXSxYTD1HbihKMVs1XSksTW49WzIyLFswLEoxWzFdLEoxWzJdLEoxWzNdLEoxWzRdLFhMXV07YnJlYWs7Y2FzZSAyMzp2YXIgT2k9T25bMV0sWUw9T2lbMTBdLFZMPUduKE9pWzldKSxNbj1bMjMsWzAsT2lbMV0sT2lbMl0sT2lbM10sT2lbNF0sT2lbNV0sT2lbNl0sT2lbN10sT2lbOF0sVkwsWUxdXTticmVhaztjYXNlIDI0OnZhciBoMj1PblsxXSx6TD1HbihoMls0XSksTW49WzI0LFswLGgyWzFdLGgyWzJdLGgyWzNdLHpMXV07YnJlYWs7Y2FzZSAyNTp2YXIgJDE9T25bMV0sS0w9R24oJDFbNV0pLE1uPVsyNSxbMCwkMVsxXSwkMVsyXSwkMVszXSwkMVs0XSxLTF1dO2JyZWFrO2Nhc2UgMjY6dmFyIFoxPU9uWzFdLFdMPUduKFoxWzVdKSxNbj1bMjYsWzAsWjFbMV0sWjFbMl0sWjFbM10sWjFbNF0sV0xdXTticmVhaztjYXNlIDI3OnZhciB3Yj1PblsxXSxKTD1Hbih3YlszXSksTW49WzI3LFswLHdiWzFdLHdiWzJdLEpMXV07YnJlYWs7Y2FzZSAyODp2YXIgRWI9T25bMV0sJEw9RWJbM10sWkw9R24oRWJbMl0pLE1uPVsyOCxbMCxFYlsxXSxaTCwkTF1dO2JyZWFrO2Nhc2UgMjk6dmFyIGQyPU9uWzFdLFFMPWQyWzRdLHJSPUduKGQyWzNdKSxNbj1bMjksWzAsZDJbMV0sZDJbMl0sclIsUUxdXTticmVhaztjYXNlIDMwOnZhciBjXz1PblsxXSxlUj1HbihjX1syXSksTW49WzMwLFswLGNfWzFdLGVSXV07YnJlYWs7Y2FzZSAzMTp2YXIgazI9T25bMV0sblI9R24oazJbNF0pLE1uPVszMSxbMCxrMlsxXSxrMlsyXSxrMlszXSxuUl1dO2JyZWFrO2Nhc2UgMzI6dmFyIHcyPU9uWzFdLHRSPUduKHcyWzRdKSxNbj1bMzIsWzAsdzJbMV0sdzJbMl0sdzJbM10sdFJdXTticmVhaztjYXNlIDMzOnZhciBRMT1PblsxXSx1Uj1HbihRMVs1XSksTW49WzMzLFswLFExWzFdLFExWzJdLFExWzNdLFExWzRdLHVSXV07YnJlYWs7Y2FzZSAzNDp2YXIgU2I9T25bMV0saVI9R24oU2JbM10pLE1uPVszNCxbMCxTYlsxXSxTYlsyXSxpUl1dO2JyZWFrO2Nhc2UgMzU6dmFyIGdiPU9uWzFdLGZSPUduKGdiWzNdKSxNbj1bMzUsWzAsZ2JbMV0sZ2JbMl0sZlJdXTticmVhaztkZWZhdWx0OnZhciBGYj1PblsxXSx4Uj1HbihGYlszXSksTW49WzM2LFswLEZiWzFdLEZiWzJdLHhSXV19dmFyIHNfPVEoWzAsbWJbMV0sTW5dKX1lbHNlIHZhciBzXz1pNzt2YXIgb1I9WzAsWzAsYk1yLFEoWDFbMl0pXSxbMCxbMCxsTXIsc19dLDBdXSxhUj1bMCxbMCxwTXIsZnIoWDFbMV0pXSxvUl07cmV0dXJuIHcobU1yLEksWDFbNF0sYVIpO2Nhc2UgMjU6dmFyIHJ2PWtbMV0sVGI9cnZbNF0sdl89cnZbM107aWYoVGIpe3ZhciBPYj1UYlsxXTtpZihPYlswXT09PTApdmFyIGNSPU9iWzFdLGJfPWQxKGZ1bmN0aW9uKHd1KXt2YXIgSWk9d3VbMV0sdzc9d3VbM10sS2k9d3VbMl0sZXY9S2k/eXQodzdbMV0sS2lbMV1bMV0pOnc3WzFdLExiPUtpP0tpWzFdOnc3LG52PTAsUmI9MDtpZihJaSlzd2l0Y2goSWlbMV0pe2Nhc2UgMDp2YXIgamI9SmM7YnJlYWs7Y2FzZSAxOnZhciBqYj1yczticmVhaztkZWZhdWx0Om52PTF9ZWxzZSBudj0xO2lmKG52KXZhciBqYj1pNzt2YXIgSVI9WzAsWzAsYVdyLFMoTGIpXSxbMCxbMCxvV3IsamJdLFJiXV07cmV0dXJuIHcoc1dyLGV2LDAsWzAsWzAsY1dyLFModzcpXSxJUl0pfSxjUik7ZWxzZSB2YXIgbF89T2JbMV0sc1I9WzAsWzAsZldyLFMobF9bMl0pXSwwXSxiXz1bMCx3KHhXcixsX1sxXSwwLHNSKSwwXTt2YXIgSWI9Yl99ZWxzZSB2YXIgSWI9VGI7aWYodl8pdmFyIHBfPXZfWzFdLHZSPVswLFswLHVXcixTKHBfKV0sMF0sbV89WzAsdyhpV3IscF9bMV0sMCx2UiksSWJdO2Vsc2UgdmFyIG1fPUliO3N3aXRjaChydlsxXSl7Y2FzZSAwOnZhciBBYj1fTXI7YnJlYWs7Y2FzZSAxOnZhciBBYj15TXI7YnJlYWs7ZGVmYXVsdDp2YXIgQWI9aE1yfXZhciBsUj1bMCxbMCxkTXIsYm4oQWIpXSwwXSxiUj1bMCxbMCxrTXIsdDAocnZbMl0pXSxsUl0scFI9WzAsWzAsd01yLGh1KG1fKV0sYlJdO3JldHVybiB3KEVNcixJLHJ2WzVdLHBSKTtjYXNlIDI2OnJldHVybiBXcihbMCxJLGtbMV1dKTtjYXNlIDI3OnZhciBOYj1rWzFdLG1SPVswLFswLFNNcixRKE5iWzJdKV0sMF0sX1I9WzAsWzAsZ01yLFMoTmJbMV0pXSxtUl07cmV0dXJuIHcoRk1yLEksTmJbM10sX1IpO2Nhc2UgMjg6dmFyIF9fPWtbMV0seVI9WzAsWzAsVE1yLGUoZnIsX19bMV0pXSwwXTtyZXR1cm4gdyhPTXIsSSxfX1syXSx5Uik7Y2FzZSAyOTp2YXIgQ2I9a1sxXSxoUj1bMCxbMCxJTXIsbihpMCxDYlsyXSldLDBdLGRSPVswLFswLEFNcixmcihDYlsxXSldLGhSXTtyZXR1cm4gdyhOTXIsSSxDYlszXSxkUik7Y2FzZSAzMDp2YXIgeV89a1sxXSxrUj1bMCxbMCxDTXIsZnIoeV9bMV0pXSwwXTtyZXR1cm4gdyhQTXIsSSx5X1syXSxrUik7Y2FzZSAzMTp2YXIgRTI9a1sxXSx3Uj1bMCxbMCxETXIsZShXMCxFMlszXSldLDBdLEVSPVswLFswLExNcixlKGwwLEUyWzJdKV0sd1JdLFNSPVswLFswLFJNcixXMChFMlsxXSldLEVSXTtyZXR1cm4gdyhqTXIsSSxFMls0XSxTUik7Y2FzZSAzMjpyZXR1cm4gYXIoWzAsSSxrWzFdXSk7Y2FzZSAzMzpyZXR1cm4gSnIoMCxbMCxJLGtbMV1dKTtjYXNlIDM0OnJldHVybiBjMChbMCxJLGtbMV1dKTtjYXNlIDM1OnZhciBQYj1rWzFdLGdSPVswLFswLEdNcixRKFBiWzJdKV0sMF0sRlI9WzAsWzAsTU1yLGZyKFBiWzFdKV0sZ1JdO3JldHVybiB3KEJNcixJLFBiWzNdLEZSKTtkZWZhdWx0OnZhciBEYj1rWzFdLFRSPVswLFswLHFNcixRKERiWzJdKV0sMF0sT1I9WzAsWzAsVU1yLGZyKERiWzFdKV0sVFJdO3JldHVybiB3KEhNcixJLERiWzNdLE9SKX19ZnVuY3Rpb24gaTAoXyl7dmFyIGs9X1syXSxJPVswLFswLGVVcixuKFEsa1syXSldLDBdLFU9WzAsWzAsblVyLGUoZnIsa1sxXSldLEldO3JldHVybiB3KHRVcixfWzFdLGtbM10sVSl9ZnVuY3Rpb24gbDAoXyl7dmFyIGs9X1syXSxJPVswLFswLHVVcixXMChrWzJdKV0sMF0sVT1bMCxbMCxpVXIsZShPcixrWzFdKV0sSV07cmV0dXJuIHcoZlVyLF9bMV0sa1szXSxVKX1mdW5jdGlvbiBTMChfKXt2YXIgaz1fWzJdLEk9WzAsWzAsUVVyLGZyKGtbMV0pXSwwXTtyZXR1cm4gdyhySHIsX1sxXSxrWzJdLEkpfWZ1bmN0aW9uIFQwKF8pe3ZhciBrPV9bMl0sST1bMCxbMCxlSHIsZSgkcixrWzJdKV0sMF0sVT1bMCxbMCxuSHIsUyhrWzFdKV0sSV07cmV0dXJuIHcodEhyLF9bMV0sMCxVKX1mdW5jdGlvbiBycihfKXtzd2l0Y2goX1swXSl7Y2FzZSAwOnZhciBrPV9bMV0sST1rWzJdLFU9SVs2XSxZPUlbMl07c3dpdGNoKFlbMF0pe2Nhc2UgMDp2YXIgSTA9VSxEPTAsdTA9ZjAoWVsxXSk7YnJlYWs7Y2FzZSAxOnZhciBJMD1VLEQ9MCx1MD1TKFlbMV0pO2JyZWFrO2Nhc2UgMjp2YXIgSTA9VSxEPTAsdTA9XzAoWVsxXSk7YnJlYWs7ZGVmYXVsdDp2YXIgeTA9WVsxXVsyXSxQMD15Nyh5MFsyXSxVKSxJMD1QMCxEPTEsdTA9ZnIoeTBbMV0pfXN3aXRjaChJWzFdKXtjYXNlIDA6dmFyIFgwPWZIcjticmVhaztjYXNlIDE6dmFyIFgwPXhIcjticmVhaztjYXNlIDI6dmFyIFgwPW9IcjticmVhaztkZWZhdWx0OnZhciBYMD1hSHJ9dmFyIEowPVswLFswLHNIciwhIURdLFswLFswLGNIcixuKFMwLElbNV0pXSwwXV0saXI9WzAsWzAsbEhyLGJuKFgwKV0sWzAsWzAsdkhyLCEhSVs0XV0sSjBdXSxRMD1bMCxbMCxwSHIsdTBdLFswLFswLGJIcixScihJWzNdKV0saXJdXTtyZXR1cm4gdyhtSHIsa1sxXSxJMCxRMCk7Y2FzZSAxOnZhciBGMD1fWzFdLFNyPUYwWzJdLG1yPVNyWzZdLENyPVNyWzJdLHNyPVNyWzFdO3N3aXRjaChzclswXSl7Y2FzZSAwOnZhciBoMD1tcixLcj0wLHJlPWYwKHNyWzFdKTticmVhaztjYXNlIDE6dmFyIGgwPW1yLEtyPTAscmU9UyhzclsxXSk7YnJlYWs7Y2FzZSAyOnZhciBQcj1rZShnSHIpLGgwPVByWzNdLEtyPVByWzJdLHJlPVByWzFdO2JyZWFrO2RlZmF1bHQ6dmFyIEswPXNyWzFdWzJdLFVyPXk3KEswWzJdLG1yKSxoMD1VcixLcj0xLHJlPWZyKEswWzFdKX1pZih0eXBlb2YgQ3I9PVwibnVtYmVyXCIpaWYoQ3IpdmFyIHhlPTAsUmU9MDtlbHNlIHZhciB4ZT0xLFJlPTA7ZWxzZSB2YXIgeGU9MCxSZT1bMCxDclsxXV07dmFyIHZlPXhlJiZbMCxbMCxGSHIsISF4ZV0sMF0sSWU9WzAsWzAsVEhyLGUoRXIsU3JbNV0pXSwwXSxHZT1bMCxbMCxJSHIsISFLcl0sWzAsWzAsT0hyLCEhU3JbNF1dLEllXV0sTWU9WzAsWzAsQUhyLGkobCxTclszXSldLEdlXSxhbj1vbihbMCxbMCxDSHIscmVdLFswLFswLE5IcixlKGZyLFJlKV0sTWVdXSx2ZSk7cmV0dXJuIHcoUEhyLEYwWzFdLGgwLGFuKTtkZWZhdWx0OnZhciBXZT1fWzFdLEFlPVdlWzJdLGNuPUFlWzJdO2lmKHR5cGVvZiBjbj09XCJudW1iZXJcIilpZihjbil2YXIgcm49MCxrbj0wO2Vsc2UgdmFyIHJuPTEsa249MDtlbHNlIHZhciBybj0wLGtuPVswLGNuWzFdXTt2YXIgdm49cm4mJlswLFswLF9IciwhIXJuXSwwXSxOZT1bMCxbMCx5SHIsZShFcixBZVs1XSldLDBdLEplPVswLFswLGRIciwhMV0sWzAsWzAsaEhyLCEhQWVbNF1dLE5lXV0sZW49WzAsWzAsa0hyLGkobCxBZVszXSldLEplXSxfbj1bMCxbMCx3SHIsZShmcixrbildLGVuXSxDbj1vbihbMCxbMCxFSHIsXzAoQWVbMV0pXSxfbl0sdm4pO3JldHVybiB3KFNIcixXZVsxXSxBZVs2XSxDbil9fWZ1bmN0aW9uIEwwKF8pe3ZhciBrPV9bMl0sST1rWzJdLFU9a1sxXTtpZihJKXt2YXIgWT1bMCxbMCxnWHIsZnIoSVsxXSldLDBdLHkwPVswLFswLEZYcixPcihVKV0sWV07cmV0dXJuIHcoVFhyLF9bMV0sMCx5MCl9cmV0dXJuIE9yKFUpfWZ1bmN0aW9uIEIoXyxrKXt2YXIgST1bMCxbMCxQWHIsT3Ioa1sxXSldLDBdO3JldHVybiB3KERYcixfLGtbMl0sSSl9ZnVuY3Rpb24gWihfKXtzd2l0Y2goX1swXSl7Y2FzZSAwOnZhciBrPV9bMV0sST1rWzJdLFU9SVsyXSxZPUlbMV07aWYoVSl7dmFyIHkwPVswLFswLExYcixmcihVWzFdKV0sMF0sUDA9WzAsWzAsUlhyLE9yKFkpXSx5MF07cmV0dXJuIHcoalhyLGtbMV0sMCxQMCl9cmV0dXJuIE9yKFkpO2Nhc2UgMTp2YXIgSTA9X1sxXTtyZXR1cm4gQihJMFsxXSxJMFsyXSk7ZGVmYXVsdDpyZXR1cm4gaTd9fWZ1bmN0aW9uIHAwKF8pe2lmKF9bMF09PT0wKXt2YXIgaz1fWzFdLEk9a1syXTtzd2l0Y2goSVswXSl7Y2FzZSAwOnZhciBVPWZyKElbMl0pLFgwPTAsSjA9SVszXSxpcj0wLFEwPUdYcixGMD1VLFNyPUlbMV07YnJlYWs7Y2FzZSAxOnZhciBZPUlbMl0seTA9UnIoWzAsWVsxXSxZWzJdXSksWDA9MCxKMD0wLGlyPTEsUTA9TVhyLEYwPXkwLFNyPUlbMV07YnJlYWs7Y2FzZSAyOnZhciBQMD1JWzJdLEkwPVJyKFswLFAwWzFdLFAwWzJdXSksWDA9SVszXSxKMD0wLGlyPTAsUTA9QlhyLEYwPUkwLFNyPUlbMV07YnJlYWs7ZGVmYXVsdDp2YXIgRD1JWzJdLHUwPVJyKFswLERbMV0sRFsyXV0pLFgwPUlbM10sSjA9MCxpcj0wLFEwPXFYcixGMD11MCxTcj1JWzFdfXN3aXRjaChTclswXSl7Y2FzZSAwOnZhciBQcj1YMCxLMD0wLFVyPWYwKFNyWzFdKTticmVhaztjYXNlIDE6dmFyIFByPVgwLEswPTAsVXI9UyhTclsxXSk7YnJlYWs7Y2FzZSAyOnZhciBtcj1rZShVWHIpLFByPW1yWzNdLEswPW1yWzJdLFVyPW1yWzFdO2JyZWFrO2RlZmF1bHQ6dmFyIENyPVNyWzFdWzJdLHNyPXk3KENyWzJdLFgwKSxQcj1zcixLMD0xLFVyPWZyKENyWzFdKX1yZXR1cm4gdyhXWHIsa1sxXSxQcixbMCxbMCxLWHIsVXJdLFswLFswLHpYcixGMF0sWzAsWzAsVlhyLGJuKFEwKV0sWzAsWzAsWVhyLCEhaXJdLFswLFswLFhYciwhIUowXSxbMCxbMCxIWHIsISFLMF0sMF1dXV1dXSl9dmFyIGgwPV9bMV0sS3I9aDBbMl0scmU9WzAsWzAsSlhyLGZyKEtyWzFdKV0sMF07cmV0dXJuIHcoJFhyLGgwWzFdLEtyWzJdLHJlKX1mdW5jdGlvbiBiMChfKXtpZihfWzBdPT09MCl7dmFyIGs9X1sxXSxJPWtbMl0sVT1JWzNdLFk9SVsyXSx5MD1JWzFdO3N3aXRjaCh5MFswXSl7Y2FzZSAwOnZhciBEPTAsdTA9MCxYMD1mMCh5MFsxXSk7YnJlYWs7Y2FzZSAxOnZhciBEPTAsdTA9MCxYMD1TKHkwWzFdKTticmVhaztkZWZhdWx0OnZhciBQMD15MFsxXVsyXSxJMD1mcihQMFsxXSksRD1QMFsyXSx1MD0xLFgwPUkwfWlmKFUpdmFyIEowPVVbMV0saXI9eXQoWVsxXSxKMFsxXSksUTA9WzAsWzAsWlhyLGZyKEowKV0sMF0sRjA9dyhyWXIsaXIsMCxbMCxbMCxRWHIsT3IoWSldLFEwXSk7ZWxzZSB2YXIgRjA9T3IoWSk7cmV0dXJuIHcoeFlyLGtbMV0sRCxbMCxbMCxmWXIsWDBdLFswLFswLGlZcixGMF0sWzAsWzAsdVlyLGppXSxbMCxbMCx0WXIsITFdLFswLFswLG5ZciwhIUlbNF1dLFswLFswLGVZciwhIXUwXSwwXV1dXV1dKX12YXIgU3I9X1sxXTtyZXR1cm4gQihTclsxXSxTclsyXSl9ZnVuY3Rpb24gTzAoXyl7dmFyIGs9X1syXSxJPVswLFswLG9ZcixmcihrWzFdKV0sMF07cmV0dXJuIHcoYVlyLF9bMV0sa1syXSxJKX1mdW5jdGlvbiBNMChfKXtyZXR1cm4gX1swXT09PTA/ZnIoX1sxXSk6TzAoX1sxXSl9ZnVuY3Rpb24gZXIoXyl7c3dpdGNoKF9bMF0pe2Nhc2UgMDpyZXR1cm4gZnIoX1sxXSk7Y2FzZSAxOnJldHVybiBPMChfWzFdKTtkZWZhdWx0OnJldHVybiBpN319ZnVuY3Rpb24geXIoXyl7dmFyIGs9X1syXSxJPVswLFswLGNZciwhIWtbM11dLDBdLFU9WzAsWzAsc1lyLGZyKGtbMl0pXSxJXSxZPVswLFswLHZZcixPcihrWzFdKV0sVV07cmV0dXJuIHcobFlyLF9bMV0sMCxZKX1mdW5jdGlvbiB2cihfKXt2YXIgaz1fWzJdLEk9a1sxXSxVPVUxKFswLFswLHFZcixibihJWzFdKV0sWzAsWzAsQllyLGJuKElbMl0pXSwwXV0pO3JldHVybiB3KFhZcixfWzFdLDAsWzAsWzAsSFlyLFVdLFswLFswLFVZciwhIWtbMl1dLDBdXSl9ZnVuY3Rpb24gJDAoXyl7dmFyIGs9X1syXSxJPVswLFswLHJWcixlKGZyLGtbMl0pXSwwXSxVPVswLFswLGVWcixPcihrWzFdKV0sSV07cmV0dXJuIHcoblZyLF9bMV0sMCxVKX1mdW5jdGlvbiBFcihfKXt2YXIgaz1fWzJdLEk9a1sxXT9jWTpcInBsdXNcIjtyZXR1cm4gdyh1VnIsX1sxXSxrWzJdLFswLFswLHRWcixJXSwwXSl9ZnVuY3Rpb24gTXIoXyl7dmFyIGs9X1syXTtyZXR1cm4gazAoa1syXSxrWzFdKX1mdW5jdGlvbiBCcihfKXt2YXIgaz1fWzJdLEk9WzAsWzAsT1ZyLGcwKGtbMV1bMl0pXSxbMCxbMCxUVnIsITFdLDBdXSxVPVswLFswLElWcixlKFMsMCldLEldO3JldHVybiB3KEFWcixfWzFdLGtbMl0sVSl9ZnVuY3Rpb24gcXIoXyl7dmFyIGs9X1syXSxJPVswLFswLGZLcixuKGpyLGtbMV0pXSwwXSxVPXAoa1syXSk7cmV0dXJuIHcoeEtyLF9bMV0sVSxJKX1mdW5jdGlvbiBqcihfKXt2YXIgaz1fWzJdLEk9a1sxXVsyXSxVPVswLFswLG9LcixlKGcwLGtbNF0pXSwwXSxZPVswLFswLGFLcixlKEVyLGtbM10pXSxVXSx5MD1bMCxbMCxjS3IsaShsLGtbMl0pXSxZXTtyZXR1cm4gdyh2S3IsX1sxXSxJWzJdLFswLFswLHNLcixibihJWzFdKV0seTBdKX1mdW5jdGlvbiAkcihfKXt2YXIgaz1fWzJdLEk9WzAsWzAsbEtyLG4oZzAsa1sxXSldLDBdLFU9cChrWzJdKTtyZXR1cm4gdyhiS3IsX1sxXSxVLEkpfWZ1bmN0aW9uIG5lKF8pe3ZhciBrPV9bMl0sST1bMCxbMCxwS3IsbihRcixrWzFdKV0sMF0sVT1wKGtbMl0pO3JldHVybiB3KG1LcixfWzFdLFUsSSl9ZnVuY3Rpb24gUXIoXyl7aWYoX1swXT09PTApcmV0dXJuIGcwKF9bMV0pO3ZhciBrPV9bMV0sST1rWzFdLFU9a1syXVsxXTtyZXR1cm4gVihbMCxJLFswLFswLFJjKDAsWzAsSSxfS3JdKV0sMCxVXV0pfWZ1bmN0aW9uIGJlKF8pe2lmKF9bMF09PT0wKXt2YXIgaz1fWzFdLEk9a1syXSxVPUlbMV0sWT1VWzBdPT09MD9iKFVbMV0pOlIwKFVbMV0pLHkwPVswLFswLExLcixZXSxbMCxbMCxES3IsZShjZSxJWzJdKV0sMF1dO3JldHVybiB3KFJLcixrWzFdLDAseTApfXZhciBQMD1fWzFdLEkwPVAwWzJdLEQ9WzAsWzAsaktyLGZyKEkwWzFdKV0sMF07cmV0dXJuIHcoR0tyLFAwWzFdLEkwWzJdLEQpfWZ1bmN0aW9uIGFlKF8pe3ZhciBrPVswLFswLE5LcixzMChfWzJdWzFdKV0sMF07cmV0dXJuIHcoQ0tyLF9bMV0sMCxrKX1mdW5jdGlvbiBwZShfKXt2YXIgaz1fWzJdLEk9a1sxXSxVPV9bMV0sWT1JP2ZyKElbMV0pOncoTUtyLFswLFVbMV0sWzAsVVsyXVsxXSxVWzJdWzJdKzF8MF0sWzAsVVszXVsxXSxVWzNdWzJdLTF8MF1dLDAsMCk7cmV0dXJuIHcocUtyLFUscChrWzJdKSxbMCxbMCxCS3IsWV0sMF0pfWZ1bmN0aW9uIG9lKF8pe3ZhciBrPV9bMl0sST1fWzFdO3N3aXRjaChrWzBdKXtjYXNlIDA6cmV0dXJuIGhyKFswLEksa1sxXV0pO2Nhc2UgMTpyZXR1cm4gVTAoWzAsSSxrWzFdXSk7Y2FzZSAyOnJldHVybiBwZShbMCxJLGtbMV1dKTtjYXNlIDM6dmFyIFU9a1sxXSxZPVswLFswLFVLcixmcihVWzFdKV0sMF07cmV0dXJuIHcoSEtyLEksVVsyXSxZKTtkZWZhdWx0OnZhciB5MD1rWzFdO3JldHVybiB3KFZLcixJLDAsWzAsWzAsWUtyLGJuKHkwWzFdKV0sWzAsWzAsWEtyLGJuKHkwWzJdKV0sMF1dKX19ZnVuY3Rpb24gY2UoXyl7cmV0dXJuIF9bMF09PT0wP2YwKFswLF9bMV0sX1syXV0pOnBlKFswLF9bMV0sX1syXV0pfWZ1bmN0aW9uIGdlKF8pe3ZhciBrPV9bMl0sST1rWzJdLFU9a1sxXSxZPVMoST9JWzFdOlUpLHkwPVswLFswLG5XcixTKFUpXSxbMCxbMCxlV3IsWV0sMF1dO3JldHVybiB3KHRXcixfWzFdLDAseTApfWZ1bmN0aW9uIHEwKF8pe3ZhciBrPV9bMl07aWYoa1sxXSl2YXIgST1rWzJdLFU9dldyO2Vsc2UgdmFyIEk9a1syXSxVPWxXcjtyZXR1cm4gdyhVLF9bMV0sMCxbMCxbMCxiV3IsYm4oSSldLDBdKX1mdW5jdGlvbiBGcihfKXt2YXIgaz1fWzJdLEk9a1sxXTtpZihJKXZhciBVPVswLFswLHBXcixmcihJWzFdKV0sMF0sWT1tV3I7ZWxzZSB2YXIgVT0wLFk9X1dyO3JldHVybiB3KFksX1sxXSxrWzJdLFUpfXJldHVyblswLEEsZnJdfWZ1bmN0aW9uIFQoRSl7cmV0dXJuIHkoRSlbMV19cmV0dXJuWzAsVCxmdW5jdGlvbihFKXtyZXR1cm4geShFKVsyXX0sc119KHduZSk7ZnVuY3Rpb24gb2IodCxuLGUpe3ZhciBpPW5bZV07cmV0dXJuIE1wKGkpP2l8MDp0fWZ1bmN0aW9uIEVuZSh0LG4pe3ZhciBlPVJWKG4sSnopP3t9Om4saT1CNyh0KSx4PW9iKEJ2WzVdLGUsTnJlKSxjPW9iKEJ2WzRdLGUsQ3JlKSxzPW9iKEJ2WzNdLGUsUHJlKSxwPW9iKEJ2WzJdLGUsRHJlKSx5PVswLFswLG9iKEJ2WzFdLGUsTHJlKSxwLHMsYyx4XV0sVD1lLnRva2VucyxFPU1wKFQpLGQ9RSYmVHwwLHc9ZS5jb21tZW50cyxHPU1wKHcpP3d8MDoxLEE9ZS5hbGxfY29tbWVudHMsUz1NcChBKT9BfDA6MSxNPVswLDBdLEs9ZCYmWzAsZnVuY3Rpb24oYjApe3JldHVybiBNWzFdPVswLGIwLE1bMV1dLDB9XSxWPVswLHldLGYwPVswLEtdLG0wPXV6P3V6WzFdOjEsazA9ZjAmJmYwWzFdLGcwPVYmJlZbMV0sZTA9WzAsZzBdLHgwPVswLGswXSxsPTAsYzA9eDAmJngwWzFdLHQwPWUwJiZlMFsxXSxvMD1IZWUoWzAsYzBdLFswLHQwXSxsLGkpLHcwPXUoc2VbMV0sbzApLF8wPXllKG8wWzFdWzFdKSxFMD1bMCxMTFsxXSwwXSxVMD15ZShsZShmdW5jdGlvbihiMCxPMCl7dmFyIE0wPWIwWzJdLGVyPWIwWzFdO3JldHVybiBvKExMWzNdLE8wLGVyKT9bMCxlcixNMF06WzAsbyhMTFs0XSxPMCxlciksWzAsTzAsTTBdXX0sRTAsXzApWzJdKTtpZihVMCYmbTApdGhyb3dbMCxOZWUsVTBbMV0sVTBbMl1dO0tlMFsxXT0wO2Zvcih2YXIgYj11bihpKS0wfDAsUjA9aSxYPTAsczA9MDs7KXtpZihzMD09PWIpdmFyIGhyPVg7ZWxzZXt2YXIgQXI9WHUoUjAsczApLG9yPTA7aWYoMDw9QXImJiEoem48QXIpKXZhciBXMD0xO2Vsc2Ugb3I9MTtpZihvcil7dmFyIExyPTA7aWYobkk8PUFyJiYhKHk4PEFyKSl2YXIgVzA9MjtlbHNlIExyPTE7aWYoTHIpe3ZhciBUcj0wO2lmKGh2PD1BciYmIShpNjxBcikpdmFyIFcwPTM7ZWxzZSBUcj0xO2lmKFRyKXt2YXIgSHI9MDtpZihzMTw9QXImJiEodjg8QXIpKXZhciBXMD00O2Vsc2UgSHI9MTtpZihIcil2YXIgVzA9MH19fWlmKFcwPT09MCl7dmFyIFg9U0woWCxzMCwwKSxzMD1zMCsxfDA7Y29udGludWV9aWYoISgoYi1zMHwwKTxXMCkpe3ZhciBPcj1XMC0xfDAsZnI9czArVzB8MDtpZigzPE9yPj4+MCl0aHJvd1swLFNuLFFvMF07c3dpdGNoKE9yKXtjYXNlIDA6dmFyIFJyPVh1KFIwLHMwKTticmVhaztjYXNlIDE6dmFyIFJyPShYdShSMCxzMCkmMzEpPDw2fFh1KFIwLHMwKzF8MCkmNjM7YnJlYWs7Y2FzZSAyOnZhciBScj0oWHUoUjAsczApJjE1KTw8MTJ8KFh1KFIwLHMwKzF8MCkmNjMpPDw2fFh1KFIwLHMwKzJ8MCkmNjM7YnJlYWs7ZGVmYXVsdDp2YXIgUnI9KFh1KFIwLHMwKSY3KTw8MTh8KFh1KFIwLHMwKzF8MCkmNjMpPDwxMnwoWHUoUjAsczArMnwwKSY2Myk8PDZ8WHUoUjAsczArM3wwKSY2M312YXIgWD1TTChYLHMwLFswLFJyXSksczA9ZnI7Y29udGludWV9dmFyIGhyPVNMKFgsczAsMCl9Zm9yKHZhciBXcj10R3IsSnI9eWUoWzAsNixocl0pOzspe3ZhciBhcj1XclszXSxfcj1XclsyXSxJcj1XclsxXTtpZihKcil7dmFyIGZlPUpyWzFdO2lmKGZlPT09NSl7dmFyIHYwPUpyWzJdO2lmKHYwJiZ2MFsxXT09PTYpe3ZhciBQPV9sKHllKFswLElyLF9yXSkpLFdyPVswLElyKzJ8MCwwLFswLFAsYXJdXSxKcj12MFsyXTtjb250aW51ZX19ZWxzZSBpZighKDY8PWZlKSl7dmFyIEw9SnJbMl0sV3I9WzAsSXIrd2UwKGZlKXwwLFswLElyLF9yXSxhcl0sSnI9TDtjb250aW51ZX12YXIgUT1fbCh5ZShbMCxJcixfcl0pKSxpMD1KclsyXSxXcj1bMCxJcit3ZTAoZmUpfDAsMCxbMCxRLGFyXV0sSnI9aTA7Y29udGludWV9dmFyIGwwPV9sKHllKGFyKSk7aWYoRyl2YXIgVDA9dzA7ZWxzZSB2YXIgUzA9dShUZWVbMV0sMCksVDA9byhRZShTMCwtMjAxNzY2MjY4LDI1KSxTMCx3MCk7aWYoUyl2YXIgTDA9VDA7ZWxzZSB2YXIgcnI9VDBbMl0sTDA9WzAsVDBbMV0sWzAscnJbMV0scnJbMl0sMF1dO3ZhciBCPW8oJGUwWzFdLFswLGwwXSxMMCksWj1vbihVMCxLZTBbMV0pO2lmKEIuZXJyb3JzPXUoJGUwWzNdLFopLGQpe3ZhciBwMD1NWzFdO0IudG9rZW5zPWh1KEZwKHUoa25lWzFdLGwwKSxwMCkpfXJldHVybiBCfX19aWYodHlwZW9mIEgwPFwidVwiKXZhciBaZTA9SDA7ZWxzZXt2YXIgUWUwPXt9O0dOLmZsb3c9UWUwO3ZhciBaZTA9UWUwfVplMC5wYXJzZT1mdW5jdGlvbih0LG4pe3RyeXt2YXIgZT1FbmUodCxuKTtyZXR1cm4gZX1jYXRjaChpKXtyZXR1cm4gaT1FdChpKSxpWzFdPT09TU4/dSgkeixpWzJdKTp1KCR6LG5ldyBkZWUoYm4oVGUoUnJlLENwKGkpKSkpKX19LHVOKDApfShnbG9iYWxUaGlzKX19KTtQdCgpO3ZhciB1b2U9RnUwKCksaW9lPVZ4ZSgpLGZvZT16eGUoKSx4b2U9UXhlKCksb29lPXtjb21tZW50czohMSxlbnVtczohMCxlc3Byb3Bvc2FsX2RlY29yYXRvcnM6ITAsZXNwcm9wb3NhbF9leHBvcnRfc3Rhcl9hczohMCx0b2tlbnM6ITB9O2Z1bmN0aW9uIGFvZShIMCl7bGV0e21lc3NhZ2U6ejAsbG9jOntzdGFydDp4cixlbmQ6Z3J9fT1IMDtyZXR1cm4gdW9lKHowLHtzdGFydDp7bGluZTp4ci5saW5lLGNvbHVtbjp4ci5jb2x1bW4rMX0sZW5kOntsaW5lOmdyLmxpbmUsY29sdW1uOmdyLmNvbHVtbisxfX0pfWZ1bmN0aW9uIGNvZShIMCx6MCl7bGV0IHhyPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSx7cGFyc2U6Z3J9PXRvZSgpLGRlPWdyKGZvZShIMCksb29lKSxbVmVdPWRlLmVycm9ycztpZihWZSl0aHJvdyBhb2UoVmUpO3JldHVybiB4ci5vcmlnaW5hbFRleHQ9SDAseG9lKGRlLHhyKX16dTAuZXhwb3J0cz17cGFyc2Vyczp7Zmxvdzppb2UoY29lKX19fSk7cmV0dXJuIHNvZSgpO30pOyIsICIoZnVuY3Rpb24oZSl7aWYodHlwZW9mIGV4cG9ydHM9PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGU9PVwib2JqZWN0XCIpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYodHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKWRlZmluZShlKTtlbHNle3ZhciBpPXR5cGVvZiBnbG9iYWxUaGlzPFwidVwiP2dsb2JhbFRoaXM6dHlwZW9mIGdsb2JhbDxcInVcIj9nbG9iYWw6dHlwZW9mIHNlbGY8XCJ1XCI/c2VsZjp0aGlzfHx7fTtpLnByZXR0aWVyUGx1Z2lucz1pLnByZXR0aWVyUGx1Z2luc3x8e30saS5wcmV0dGllclBsdWdpbnMudHlwZXNjcmlwdD1lKCl9fSkoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgQm49KE0scmUpPT4oKT0+KHJlfHxNKChyZT17ZXhwb3J0czp7fX0pLmV4cG9ydHMscmUpLHJlLmV4cG9ydHMpO3ZhciBxYz1CbigoU3osQ0EpPT57dmFyICQwPWZ1bmN0aW9uKE0pe3JldHVybiBNJiZNLk1hdGg9PU1hdGgmJk19O0NBLmV4cG9ydHM9JDAodHlwZW9mIGdsb2JhbFRoaXM9PVwib2JqZWN0XCImJmdsb2JhbFRoaXMpfHwkMCh0eXBlb2Ygd2luZG93PT1cIm9iamVjdFwiJiZ3aW5kb3cpfHwkMCh0eXBlb2Ygc2VsZj09XCJvYmplY3RcIiYmc2VsZil8fCQwKHR5cGVvZiBnbG9iYWw9PVwib2JqZWN0XCImJmdsb2JhbCl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX0pO3ZhciBjZz1CbigoVHosa0EpPT57a0EuZXhwb3J0cz1mdW5jdGlvbihNKXt0cnl7cmV0dXJuISFNKCl9Y2F0Y2h7cmV0dXJuITB9fX0pO3ZhciBBbT1CbigoeHosQUEpPT57dmFyIE9MPWNnKCk7QUEuZXhwb3J0cz0hT0woZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT03fSl9KTt2YXIgWjA9Qm4oKEV6LE5BKT0+e3ZhciBGTD1jZygpO05BLmV4cG9ydHM9IUZMKGZ1bmN0aW9uKCl7dmFyIE09ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4gdHlwZW9mIE0hPVwiZnVuY3Rpb25cInx8TS5oYXNPd25Qcm9wZXJ0eShcInByb3RvdHlwZVwiKX0pfSk7dmFyIHIxPUJuKChDeixQQSk9Pnt2YXIgTUw9WjAoKSxlMT1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtQQS5leHBvcnRzPU1MP2UxLmJpbmQoZTEpOmZ1bmN0aW9uKCl7cmV0dXJuIGUxLmFwcGx5KGUxLGFyZ3VtZW50cyl9fSk7dmFyIEZBPUJuKE9BPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIElBPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLHdBPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsTEw9d0EmJiFJQS5jYWxsKHsxOjJ9LDEpO09BLmY9TEw/ZnVuY3Rpb24ocmUpe3ZhciBWZT13QSh0aGlzLHJlKTtyZXR1cm4hIVZlJiZWZS5lbnVtZXJhYmxlfTpJQX0pO3ZhciBYUz1CbigoQXosTUEpPT57TUEuZXhwb3J0cz1mdW5jdGlvbihNLHJlKXtyZXR1cm57ZW51bWVyYWJsZTohKE0mMSksY29uZmlndXJhYmxlOiEoTSYyKSx3cml0YWJsZTohKE0mNCksdmFsdWU6cmV9fX0pO3ZhciBkcD1CbigoTnosQkEpPT57dmFyIExBPVowKCksUkE9RnVuY3Rpb24ucHJvdG90eXBlLFJMPVJBLmJpbmQsUVM9UkEuY2FsbCxCTD1MQSYmUkwuYmluZChRUyxRUyk7QkEuZXhwb3J0cz1MQT9mdW5jdGlvbihNKXtyZXR1cm4gTSYmQkwoTSl9OmZ1bmN0aW9uKE0pe3JldHVybiBNJiZmdW5jdGlvbigpe3JldHVybiBRUy5hcHBseShNLGFyZ3VtZW50cyl9fX0pO3ZhciBpMT1CbigoUHosakEpPT57dmFyIEpBPWRwKCksSkw9SkEoe30udG9TdHJpbmcpLGpMPUpBKFwiXCIuc2xpY2UpO2pBLmV4cG9ydHM9ZnVuY3Rpb24oTSl7cmV0dXJuIGpMKEpMKE0pLDgsLTEpfX0pO3ZhciB6QT1CbigoSXosVUEpPT57dmFyIFVMPXFjKCksekw9ZHAoKSxXTD1jZygpLHFMPWkxKCksWVM9VUwuT2JqZWN0LFZMPXpMKFwiXCIuc3BsaXQpO1VBLmV4cG9ydHM9V0woZnVuY3Rpb24oKXtyZXR1cm4hWVMoXCJ6XCIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oTSl7cmV0dXJuIHFMKE0pPT1cIlN0cmluZ1wiP1ZMKE0sXCJcIik6WVMoTSl9OllTfSk7dmFyICRTPUJuKCh3eixXQSk9Pnt2YXIgS0w9cWMoKSxHTD1LTC5UeXBlRXJyb3I7V0EuZXhwb3J0cz1mdW5jdGlvbihNKXtpZihNPT1udWxsKXRocm93IEdMKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIrTSk7cmV0dXJuIE19fSk7dmFyIHQxPUJuKChPeixxQSk9Pnt2YXIgSEw9ekEoKSxYTD0kUygpO3FBLmV4cG9ydHM9ZnVuY3Rpb24oTSl7cmV0dXJuIEhMKFhMKE0pKX19KTt2YXIgZ3A9Qm4oKEZ6LFZBKT0+e1ZBLmV4cG9ydHM9ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNPT1cImZ1bmN0aW9uXCJ9fSk7dmFyIE5tPUJuKChNeixLQSk9Pnt2YXIgUUw9Z3AoKTtLQS5leHBvcnRzPWZ1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTT09XCJvYmplY3RcIj9NIT09bnVsbDpRTChNKX19KTt2YXIgcXk9Qm4oKEx6LEdBKT0+e3ZhciBaUz1xYygpLFlMPWdwKCksJEw9ZnVuY3Rpb24oTSl7cmV0dXJuIFlMKE0pP006dm9pZCAwfTtHQS5leHBvcnRzPWZ1bmN0aW9uKE0scmUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/JEwoWlNbTV0pOlpTW01dJiZaU1tNXVtyZV19fSk7dmFyIFhBPUJuKChSeixIQSk9Pnt2YXIgWkw9ZHAoKTtIQS5leHBvcnRzPVpMKHt9LmlzUHJvdG90eXBlT2YpfSk7dmFyIFlBPUJuKChCeixRQSk9Pnt2YXIgZVI9cXkoKTtRQS5leHBvcnRzPWVSKFwibmF2aWdhdG9yXCIsXCJ1c2VyQWdlbnRcIil8fFwiXCJ9KTt2YXIgYU49Qm4oKEp6LHROKT0+e3ZhciBpTj1xYygpLGVUPVlBKCksJEE9aU4ucHJvY2VzcyxaQT1pTi5EZW5vLGVOPSRBJiYkQS52ZXJzaW9uc3x8WkEmJlpBLnZlcnNpb24sck49ZU4mJmVOLnY4LGFkLGExO3JOJiYoYWQ9ck4uc3BsaXQoXCIuXCIpLGExPWFkWzBdPjAmJmFkWzBdPDQ/MTorKGFkWzBdK2FkWzFdKSk7IWExJiZlVCYmKGFkPWVULm1hdGNoKC9FZGdlXFwvKFxcZCspLyksKCFhZHx8YWRbMV0+PTc0KSYmKGFkPWVULm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKSxhZCYmKGExPSthZFsxXSkpKTt0Ti5leHBvcnRzPWExfSk7dmFyIHJUPUJuKChqeixvTik9Pnt2YXIgbk49YU4oKSxyUj1jZygpO29OLmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhclIoZnVuY3Rpb24oKXt2YXIgTT1TeW1ib2woKTtyZXR1cm4hU3RyaW5nKE0pfHwhKE9iamVjdChNKWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZuTiYmbk48NDF9KX0pO3ZhciBpVD1CbigoVXosc04pPT57dmFyIGlSPXJUKCk7c04uZXhwb3J0cz1pUiYmIVN5bWJvbC5zaGFtJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1cInN5bWJvbFwifSk7dmFyIHRUPUJuKCh6eixjTik9Pnt2YXIgdFI9cWMoKSxhUj1xeSgpLG5SPWdwKCksb1I9WEEoKSxzUj1pVCgpLGNSPXRSLk9iamVjdDtjTi5leHBvcnRzPXNSP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTT09XCJzeW1ib2xcIn06ZnVuY3Rpb24oTSl7dmFyIHJlPWFSKFwiU3ltYm9sXCIpO3JldHVybiBuUihyZSkmJm9SKHJlLnByb3RvdHlwZSxjUihNKSl9fSk7dmFyIGxOPUJuKChXeix1Tik9Pnt2YXIgdVI9cWMoKSxsUj11Ui5TdHJpbmc7dU4uZXhwb3J0cz1mdW5jdGlvbihNKXt0cnl7cmV0dXJuIGxSKE0pfWNhdGNoe3JldHVyblwiT2JqZWN0XCJ9fX0pO3ZhciBuMT1CbigocXosZk4pPT57dmFyIGZSPXFjKCksX1I9Z3AoKSxwUj1sTigpLGRSPWZSLlR5cGVFcnJvcjtmTi5leHBvcnRzPWZ1bmN0aW9uKE0pe2lmKF9SKE0pKXJldHVybiBNO3Rocm93IGRSKHBSKE0pK1wiIGlzIG5vdCBhIGZ1bmN0aW9uXCIpfX0pO3ZhciBwTj1CbigoVnosX04pPT57dmFyIGdSPW4xKCk7X04uZXhwb3J0cz1mdW5jdGlvbihNLHJlKXt2YXIgVmU9TVtyZV07cmV0dXJuIFZlPT1udWxsP3ZvaWQgMDpnUihWZSl9fSk7dmFyIGdOPUJuKChLeixkTik9Pnt2YXIgbVI9cWMoKSxhVD1yMSgpLG5UPWdwKCksb1Q9Tm0oKSx2Uj1tUi5UeXBlRXJyb3I7ZE4uZXhwb3J0cz1mdW5jdGlvbihNLHJlKXt2YXIgVmUsS2U7aWYocmU9PT1cInN0cmluZ1wiJiZuVChWZT1NLnRvU3RyaW5nKSYmIW9UKEtlPWFUKFZlLE0pKXx8blQoVmU9TS52YWx1ZU9mKSYmIW9UKEtlPWFUKFZlLE0pKXx8cmUhPT1cInN0cmluZ1wiJiZuVChWZT1NLnRvU3RyaW5nKSYmIW9UKEtlPWFUKFZlLE0pKSlyZXR1cm4gS2U7dGhyb3cgdlIoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9fSk7dmFyIHZOPUJuKChHeixtTik9PnttTi5leHBvcnRzPSExfSk7dmFyIG8xPUJuKChIeixoTik9Pnt2YXIgeU49cWMoKSx5Uj1PYmplY3QuZGVmaW5lUHJvcGVydHk7aE4uZXhwb3J0cz1mdW5jdGlvbihNLHJlKXt0cnl7eVIoeU4sTSx7dmFsdWU6cmUsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2h7eU5bTV09cmV9cmV0dXJuIHJlfX0pO3ZhciBzMT1CbigoWHosYk4pPT57dmFyIGhSPXFjKCksRFI9bzEoKSxETj1cIl9fY29yZS1qc19zaGFyZWRfX1wiLGJSPWhSW0ROXXx8RFIoRE4se30pO2JOLmV4cG9ydHM9YlJ9KTt2YXIgc1Q9Qm4oKFF6LFROKT0+e3ZhciBTUj12TigpLFNOPXMxKCk7KFROLmV4cG9ydHM9ZnVuY3Rpb24oTSxyZSl7cmV0dXJuIFNOW01dfHwoU05bTV09cmUhPT12b2lkIDA/cmU6e30pfSkoXCJ2ZXJzaW9uc1wiLFtdKS5wdXNoKHt2ZXJzaW9uOlwiMy4yMi4yXCIsbW9kZTpTUj9cInB1cmVcIjpcImdsb2JhbFwiLGNvcHlyaWdodDpcIlxceEE5IDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KVwiLGxpY2Vuc2U6XCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjIyLjIvTElDRU5TRVwiLHNvdXJjZTpcImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzXCJ9KX0pO3ZhciBjVD1CbigoWXoseE4pPT57dmFyIFRSPXFjKCkseFI9JFMoKSxFUj1UUi5PYmplY3Q7eE4uZXhwb3J0cz1mdW5jdGlvbihNKXtyZXR1cm4gRVIoeFIoTSkpfX0pO3ZhciBXZz1CbigoJHosRU4pPT57dmFyIENSPWRwKCksa1I9Y1QoKSxBUj1DUih7fS5oYXNPd25Qcm9wZXJ0eSk7RU4uZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbihyZSxWZSl7cmV0dXJuIEFSKGtSKHJlKSxWZSl9fSk7dmFyIHVUPUJuKChaeixDTik9Pnt2YXIgTlI9ZHAoKSxQUj0wLElSPU1hdGgucmFuZG9tKCksd1I9TlIoMSAudG9TdHJpbmcpO0NOLmV4cG9ydHM9ZnVuY3Rpb24oTSl7cmV0dXJuXCJTeW1ib2woXCIrKE09PT12b2lkIDA/XCJcIjpNKStcIilfXCIrd1IoKytQUitJUiwzNil9fSk7dmFyIFZ5PUJuKChlVyxJTik9Pnt2YXIgT1I9cWMoKSxGUj1zVCgpLGtOPVdnKCksTVI9dVQoKSxBTj1yVCgpLFBOPWlUKCksSXY9RlIoXCJ3a3NcIiksUG09T1IuU3ltYm9sLE5OPVBtJiZQbS5mb3IsTFI9UE4/UG06UG0mJlBtLndpdGhvdXRTZXR0ZXJ8fE1SO0lOLmV4cG9ydHM9ZnVuY3Rpb24oTSl7aWYoIWtOKEl2LE0pfHwhKEFOfHx0eXBlb2YgSXZbTV09PVwic3RyaW5nXCIpKXt2YXIgcmU9XCJTeW1ib2wuXCIrTTtBTiYma04oUG0sTSk/SXZbTV09UG1bTV06UE4mJk5OP0l2W01dPU5OKHJlKTpJdltNXT1MUihyZSl9cmV0dXJuIEl2W01dfX0pO3ZhciBNTj1CbigoclcsRk4pPT57dmFyIFJSPXFjKCksQlI9cjEoKSx3Tj1ObSgpLE9OPXRUKCksSlI9cE4oKSxqUj1nTigpLFVSPVZ5KCkselI9UlIuVHlwZUVycm9yLFdSPVVSKFwidG9QcmltaXRpdmVcIik7Rk4uZXhwb3J0cz1mdW5jdGlvbihNLHJlKXtpZighd04oTSl8fE9OKE0pKXJldHVybiBNO3ZhciBWZT1KUihNLFdSKSxLZTtpZihWZSl7aWYocmU9PT12b2lkIDAmJihyZT1cImRlZmF1bHRcIiksS2U9QlIoVmUsTSxyZSksIXdOKEtlKXx8T04oS2UpKXJldHVybiBLZTt0aHJvdyB6UihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX1yZXR1cm4gcmU9PT12b2lkIDAmJihyZT1cIm51bWJlclwiKSxqUihNLHJlKX19KTt2YXIgbFQ9Qm4oKGlXLExOKT0+e3ZhciBxUj1NTigpLFZSPXRUKCk7TE4uZXhwb3J0cz1mdW5jdGlvbihNKXt2YXIgcmU9cVIoTSxcInN0cmluZ1wiKTtyZXR1cm4gVlIocmUpP3JlOnJlK1wiXCJ9fSk7dmFyIEpOPUJuKCh0VyxCTik9Pnt2YXIgS1I9cWMoKSxSTj1ObSgpLGZUPUtSLmRvY3VtZW50LEdSPVJOKGZUKSYmUk4oZlQuY3JlYXRlRWxlbWVudCk7Qk4uZXhwb3J0cz1mdW5jdGlvbihNKXtyZXR1cm4gR1I/ZlQuY3JlYXRlRWxlbWVudChNKTp7fX19KTt2YXIgX1Q9Qm4oKGFXLGpOKT0+e3ZhciBIUj1BbSgpLFhSPWNnKCksUVI9Sk4oKTtqTi5leHBvcnRzPSFIUiYmIVhSKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRUihcImRpdlwiKSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYSE9N30pfSk7dmFyIHBUPUJuKHpOPT57dmFyIFlSPUFtKCksJFI9cjEoKSxaUj1GQSgpLGVCPVhTKCksckI9dDEoKSxpQj1sVCgpLHRCPVdnKCksYUI9X1QoKSxVTj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3pOLmY9WVI/VU46ZnVuY3Rpb24ocmUsVmUpe2lmKHJlPXJCKHJlKSxWZT1pQihWZSksYUIpdHJ5e3JldHVybiBVTihyZSxWZSl9Y2F0Y2h7fWlmKHRCKHJlLFZlKSlyZXR1cm4gZUIoISRSKFpSLmYscmUsVmUpLHJlW1ZlXSl9fSk7dmFyIHFOPUJuKChvVyxXTik9Pnt2YXIgbkI9QW0oKSxvQj1jZygpO1dOLmV4cG9ydHM9bkImJm9CKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sXCJwcm90b3R5cGVcIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGUhPTQyfSl9KTt2YXIgZFQ9Qm4oKHNXLEtOKT0+e3ZhciBWTj1xYygpLHNCPU5tKCksY0I9Vk4uU3RyaW5nLHVCPVZOLlR5cGVFcnJvcjtLTi5leHBvcnRzPWZ1bmN0aW9uKE0pe2lmKHNCKE0pKXJldHVybiBNO3Rocm93IHVCKGNCKE0pK1wiIGlzIG5vdCBhbiBvYmplY3RcIil9fSk7dmFyIGhUPUJuKEhOPT57dmFyIGxCPXFjKCksZkI9QW0oKSxfQj1fVCgpLHBCPXFOKCksYzE9ZFQoKSxHTj1sVCgpLGRCPWxCLlR5cGVFcnJvcixnVD1PYmplY3QuZGVmaW5lUHJvcGVydHksZ0I9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixtVD1cImVudW1lcmFibGVcIix2VD1cImNvbmZpZ3VyYWJsZVwiLHlUPVwid3JpdGFibGVcIjtITi5mPWZCP3BCP2Z1bmN0aW9uKHJlLFZlLEtlKXtpZihjMShyZSksVmU9R04oVmUpLGMxKEtlKSx0eXBlb2YgcmU9PVwiZnVuY3Rpb25cIiYmVmU9PT1cInByb3RvdHlwZVwiJiZcInZhbHVlXCJpbiBLZSYmeVQgaW4gS2UmJiFLZVt5VF0pe3ZhciBvaT1nQihyZSxWZSk7b2kmJm9pW3lUXSYmKHJlW1ZlXT1LZS52YWx1ZSxLZT17Y29uZmlndXJhYmxlOnZUIGluIEtlP0tlW3ZUXTpvaVt2VF0sZW51bWVyYWJsZTptVCBpbiBLZT9LZVttVF06b2lbbVRdLHdyaXRhYmxlOiExfSl9cmV0dXJuIGdUKHJlLFZlLEtlKX06Z1Q6ZnVuY3Rpb24ocmUsVmUsS2Upe2lmKGMxKHJlKSxWZT1HTihWZSksYzEoS2UpLF9CKXRyeXtyZXR1cm4gZ1QocmUsVmUsS2UpfWNhdGNoe31pZihcImdldFwiaW4gS2V8fFwic2V0XCJpbiBLZSl0aHJvdyBkQihcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkXCIpO3JldHVyblwidmFsdWVcImluIEtlJiYocmVbVmVdPUtlLnZhbHVlKSxyZX19KTt2YXIgdTE9Qm4oKHVXLFhOKT0+e3ZhciBtQj1BbSgpLHZCPWhUKCkseUI9WFMoKTtYTi5leHBvcnRzPW1CP2Z1bmN0aW9uKE0scmUsVmUpe3JldHVybiB2Qi5mKE0scmUseUIoMSxWZSkpfTpmdW5jdGlvbihNLHJlLFZlKXtyZXR1cm4gTVtyZV09VmUsTX19KTt2YXIgbDE9Qm4oKGxXLFFOKT0+e3ZhciBoQj1kcCgpLERCPWdwKCksRFQ9czEoKSxiQj1oQihGdW5jdGlvbi50b1N0cmluZyk7REIoRFQuaW5zcGVjdFNvdXJjZSl8fChEVC5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKE0pe3JldHVybiBiQihNKX0pO1FOLmV4cG9ydHM9RFQuaW5zcGVjdFNvdXJjZX0pO3ZhciBaTj1CbigoZlcsJE4pPT57dmFyIFNCPXFjKCksVEI9Z3AoKSx4Qj1sMSgpLFlOPVNCLldlYWtNYXA7JE4uZXhwb3J0cz1UQihZTikmJi9uYXRpdmUgY29kZS8udGVzdCh4QihZTikpfSk7dmFyIGlQPUJuKChfVyxyUCk9Pnt2YXIgRUI9c1QoKSxDQj11VCgpLGVQPUVCKFwia2V5c1wiKTtyUC5leHBvcnRzPWZ1bmN0aW9uKE0pe3JldHVybiBlUFtNXXx8KGVQW01dPUNCKE0pKX19KTt2YXIgYlQ9Qm4oKHBXLHRQKT0+e3RQLmV4cG9ydHM9e319KTt2YXIgdVA9Qm4oKGRXLGNQKT0+e3ZhciBrQj1aTigpLHNQPXFjKCksU1Q9ZHAoKSxBQj1ObSgpLE5CPXUxKCksVFQ9V2coKSx4VD1zMSgpLFBCPWlQKCksSUI9YlQoKSxhUD1cIk9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkXCIsQ1Q9c1AuVHlwZUVycm9yLHdCPXNQLldlYWtNYXAsZjEsS3ksXzEsT0I9ZnVuY3Rpb24oTSl7cmV0dXJuIF8xKE0pP0t5KE0pOmYxKE0se30pfSxGQj1mdW5jdGlvbihNKXtyZXR1cm4gZnVuY3Rpb24ocmUpe3ZhciBWZTtpZighQUIocmUpfHwoVmU9S3kocmUpKS50eXBlIT09TSl0aHJvdyBDVChcIkluY29tcGF0aWJsZSByZWNlaXZlciwgXCIrTStcIiByZXF1aXJlZFwiKTtyZXR1cm4gVmV9fTtrQnx8eFQuc3RhdGU/KHFnPXhULnN0YXRlfHwoeFQuc3RhdGU9bmV3IHdCKSxuUD1TVChxZy5nZXQpLEVUPVNUKHFnLmhhcyksb1A9U1QocWcuc2V0KSxmMT1mdW5jdGlvbihNLHJlKXtpZihFVChxZyxNKSl0aHJvdyBuZXcgQ1QoYVApO3JldHVybiByZS5mYWNhZGU9TSxvUChxZyxNLHJlKSxyZX0sS3k9ZnVuY3Rpb24oTSl7cmV0dXJuIG5QKHFnLE0pfHx7fX0sXzE9ZnVuY3Rpb24oTSl7cmV0dXJuIEVUKHFnLE0pfSk6KEltPVBCKFwic3RhdGVcIiksSUJbSW1dPSEwLGYxPWZ1bmN0aW9uKE0scmUpe2lmKFRUKE0sSW0pKXRocm93IG5ldyBDVChhUCk7cmV0dXJuIHJlLmZhY2FkZT1NLE5CKE0sSW0scmUpLHJlfSxLeT1mdW5jdGlvbihNKXtyZXR1cm4gVFQoTSxJbSk/TVtJbV06e319LF8xPWZ1bmN0aW9uKE0pe3JldHVybiBUVChNLEltKX0pO3ZhciBxZyxuUCxFVCxvUCxJbTtjUC5leHBvcnRzPXtzZXQ6ZjEsZ2V0Okt5LGhhczpfMSxlbmZvcmNlOk9CLGdldHRlckZvcjpGQn19KTt2YXIgX1A9Qm4oKGdXLGZQKT0+e3ZhciBrVD1BbSgpLE1CPVdnKCksbFA9RnVuY3Rpb24ucHJvdG90eXBlLExCPWtUJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEFUPU1CKGxQLFwibmFtZVwiKSxSQj1BVCYmZnVuY3Rpb24oKXt9Lm5hbWU9PT1cInNvbWV0aGluZ1wiLEJCPUFUJiYoIWtUfHxrVCYmTEIobFAsXCJuYW1lXCIpLmNvbmZpZ3VyYWJsZSk7ZlAuZXhwb3J0cz17RVhJU1RTOkFULFBST1BFUjpSQixDT05GSUdVUkFCTEU6QkJ9fSk7dmFyIHZQPUJuKChtVyxtUCk9Pnt2YXIgSkI9cWMoKSxwUD1ncCgpLGpCPVdnKCksZFA9dTEoKSxVQj1vMSgpLHpCPWwxKCksZ1A9dVAoKSxXQj1fUCgpLkNPTkZJR1VSQUJMRSxxQj1nUC5nZXQsVkI9Z1AuZW5mb3JjZSxLQj1TdHJpbmcoU3RyaW5nKS5zcGxpdChcIlN0cmluZ1wiKTsobVAuZXhwb3J0cz1mdW5jdGlvbihNLHJlLFZlLEtlKXt2YXIgb2k9S2U/ISFLZS51bnNhZmU6ITEsa3I9S2U/ISFLZS5lbnVtZXJhYmxlOiExLHByPUtlPyEhS2Uubm9UYXJnZXRHZXQ6ITEsTHI9S2UmJktlLm5hbWUhPT12b2lkIDA/S2UubmFtZTpyZSxhcjtpZihwUChWZSkmJihTdHJpbmcoTHIpLnNsaWNlKDAsNyk9PT1cIlN5bWJvbChcIiYmKExyPVwiW1wiK1N0cmluZyhMcikucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLFwiJDFcIikrXCJdXCIpLCghakIoVmUsXCJuYW1lXCIpfHxXQiYmVmUubmFtZSE9PUxyKSYmZFAoVmUsXCJuYW1lXCIsTHIpLGFyPVZCKFZlKSxhci5zb3VyY2V8fChhci5zb3VyY2U9S0Iuam9pbih0eXBlb2YgTHI9PVwic3RyaW5nXCI/THI6XCJcIikpKSxNPT09SkIpe2tyP01bcmVdPVZlOlVCKHJlLFZlKTtyZXR1cm59ZWxzZSBvaT8hcHImJk1bcmVdJiYoa3I9ITApOmRlbGV0ZSBNW3JlXTtrcj9NW3JlXT1WZTpkUChNLHJlLFZlKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSxcInRvU3RyaW5nXCIsZnVuY3Rpb24oKXtyZXR1cm4gcFAodGhpcykmJnFCKHRoaXMpLnNvdXJjZXx8ekIodGhpcyl9KX0pO3ZhciBOVD1CbigodlcseVApPT57dmFyIEdCPU1hdGguY2VpbCxIQj1NYXRoLmZsb29yO3lQLmV4cG9ydHM9ZnVuY3Rpb24oTSl7dmFyIHJlPStNO3JldHVybiByZSE9PXJlfHxyZT09PTA/MDoocmU+MD9IQjpHQikocmUpfX0pO3ZhciBEUD1CbigoeVcsaFApPT57dmFyIFhCPU5UKCksUUI9TWF0aC5tYXgsWUI9TWF0aC5taW47aFAuZXhwb3J0cz1mdW5jdGlvbihNLHJlKXt2YXIgVmU9WEIoTSk7cmV0dXJuIFZlPDA/UUIoVmUrcmUsMCk6WUIoVmUscmUpfX0pO3ZhciBTUD1CbigoaFcsYlApPT57dmFyICRCPU5UKCksWkI9TWF0aC5taW47YlAuZXhwb3J0cz1mdW5jdGlvbihNKXtyZXR1cm4gTT4wP1pCKCRCKE0pLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSk7dmFyIHAxPUJuKChEVyxUUCk9Pnt2YXIgZUo9U1AoKTtUUC5leHBvcnRzPWZ1bmN0aW9uKE0pe3JldHVybiBlSihNLmxlbmd0aCl9fSk7dmFyIENQPUJuKChiVyxFUCk9Pnt2YXIgcko9dDEoKSxpSj1EUCgpLHRKPXAxKCkseFA9ZnVuY3Rpb24oTSl7cmV0dXJuIGZ1bmN0aW9uKHJlLFZlLEtlKXt2YXIgb2k9ckoocmUpLGtyPXRKKG9pKSxwcj1pSihLZSxrciksTHI7aWYoTSYmVmUhPVZlKXtmb3IoO2tyPnByOylpZihMcj1vaVtwcisrXSxMciE9THIpcmV0dXJuITB9ZWxzZSBmb3IoO2tyPnByO3ByKyspaWYoKE18fHByIGluIG9pKSYmb2lbcHJdPT09VmUpcmV0dXJuIE18fHByfHwwO3JldHVybiFNJiYtMX19O0VQLmV4cG9ydHM9e2luY2x1ZGVzOnhQKCEwKSxpbmRleE9mOnhQKCExKX19KTt2YXIgTlA9Qm4oKFNXLEFQKT0+e3ZhciBhSj1kcCgpLFBUPVdnKCksbko9dDEoKSxvSj1DUCgpLmluZGV4T2Ysc0o9YlQoKSxrUD1hSihbXS5wdXNoKTtBUC5leHBvcnRzPWZ1bmN0aW9uKE0scmUpe3ZhciBWZT1uSihNKSxLZT0wLG9pPVtdLGtyO2ZvcihrciBpbiBWZSkhUFQoc0osa3IpJiZQVChWZSxrcikmJmtQKG9pLGtyKTtmb3IoO3JlLmxlbmd0aD5LZTspUFQoVmUsa3I9cmVbS2UrK10pJiYofm9KKG9pLGtyKXx8a1Aob2ksa3IpKTtyZXR1cm4gb2l9fSk7dmFyIElQPUJuKChUVyxQUCk9PntQUC5leHBvcnRzPVtcImNvbnN0cnVjdG9yXCIsXCJoYXNPd25Qcm9wZXJ0eVwiLFwiaXNQcm90b3R5cGVPZlwiLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcInRvTG9jYWxlU3RyaW5nXCIsXCJ0b1N0cmluZ1wiLFwidmFsdWVPZlwiXX0pO3ZhciBPUD1Cbih3UD0+e3ZhciBjSj1OUCgpLHVKPUlQKCksbEo9dUouY29uY2F0KFwibGVuZ3RoXCIsXCJwcm90b3R5cGVcIik7d1AuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24ocmUpe3JldHVybiBjSihyZSxsSil9fSk7dmFyIE1QPUJuKEZQPT57RlAuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSk7dmFyIFJQPUJuKChDVyxMUCk9Pnt2YXIgZko9cXkoKSxfSj1kcCgpLHBKPU9QKCksZEo9TVAoKSxnSj1kVCgpLG1KPV9KKFtdLmNvbmNhdCk7TFAuZXhwb3J0cz1mSihcIlJlZmxlY3RcIixcIm93bktleXNcIil8fGZ1bmN0aW9uKHJlKXt2YXIgVmU9cEouZihnSihyZSkpLEtlPWRKLmY7cmV0dXJuIEtlP21KKFZlLEtlKHJlKSk6VmV9fSk7dmFyIGpQPUJuKChrVyxKUCk9Pnt2YXIgQlA9V2coKSx2Sj1SUCgpLHlKPXBUKCksaEo9aFQoKTtKUC5leHBvcnRzPWZ1bmN0aW9uKE0scmUsVmUpe2Zvcih2YXIgS2U9dkoocmUpLG9pPWhKLmYsa3I9eUouZixwcj0wO3ByPEtlLmxlbmd0aDtwcisrKXt2YXIgTHI9S2VbcHJdOyFCUChNLExyKSYmIShWZSYmQlAoVmUsTHIpKSYmb2koTSxMcixrcihyZSxMcikpfX19KTt2YXIgelA9Qm4oKEFXLFVQKT0+e3ZhciBESj1jZygpLGJKPWdwKCksU0o9LyN8XFwucHJvdG90eXBlXFwuLyxHeT1mdW5jdGlvbihNLHJlKXt2YXIgVmU9eEpbVEooTSldO3JldHVybiBWZT09Q0o/ITA6VmU9PUVKPyExOmJKKHJlKT9ESihyZSk6ISFyZX0sVEo9R3kubm9ybWFsaXplPWZ1bmN0aW9uKE0pe3JldHVybiBTdHJpbmcoTSkucmVwbGFjZShTSixcIi5cIikudG9Mb3dlckNhc2UoKX0seEo9R3kuZGF0YT17fSxFSj1HeS5OQVRJVkU9XCJOXCIsQ0o9R3kuUE9MWUZJTEw9XCJQXCI7VVAuZXhwb3J0cz1HeX0pO3ZhciB3VD1CbigoTlcsV1ApPT57dmFyIElUPXFjKCksa0o9cFQoKS5mLEFKPXUxKCksTko9dlAoKSxQSj1vMSgpLElKPWpQKCksd0o9elAoKTtXUC5leHBvcnRzPWZ1bmN0aW9uKE0scmUpe3ZhciBWZT1NLnRhcmdldCxLZT1NLmdsb2JhbCxvaT1NLnN0YXQsa3IscHIsTHIsYXIsa2UsZTtpZihLZT9wcj1JVDpvaT9wcj1JVFtWZV18fFBKKFZlLHt9KTpwcj0oSVRbVmVdfHx7fSkucHJvdG90eXBlLHByKWZvcihMciBpbiByZSl7aWYoa2U9cmVbTHJdLE0ubm9UYXJnZXRHZXQ/KGU9a0oocHIsTHIpLGFyPWUmJmUudmFsdWUpOmFyPXByW0xyXSxrcj13SihLZT9McjpWZSsob2k/XCIuXCI6XCIjXCIpK0xyLE0uZm9yY2VkKSwha3ImJmFyIT09dm9pZCAwKXtpZih0eXBlb2Yga2U9PXR5cGVvZiBhciljb250aW51ZTtJSihrZSxhcil9KE0uc2hhbXx8YXImJmFyLnNoYW0pJiZBSihrZSxcInNoYW1cIiwhMCksTkoocHIsTHIsa2UsTSl9fX0pO3ZhciBxUD1CbigoKT0+e3ZhciBPSj13VCgpLEZKPXFjKCk7T0ooe2dsb2JhbDohMH0se2dsb2JhbFRoaXM6Rkp9KX0pO3ZhciBWUD1CbigoKT0+e3FQKCl9KTt2YXIgT1Q9Qm4oKEZXLEtQKT0+e3ZhciBNSj1pMSgpO0tQLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24ocmUpe3JldHVybiBNSihyZSk9PVwiQXJyYXlcIn19KTt2YXIgWFA9Qm4oKE1XLEhQKT0+e3ZhciBHUD1kcCgpLExKPW4xKCksUko9WjAoKSxCSj1HUChHUC5iaW5kKTtIUC5leHBvcnRzPWZ1bmN0aW9uKE0scmUpe3JldHVybiBMSihNKSxyZT09PXZvaWQgMD9NOlJKP0JKKE0scmUpOmZ1bmN0aW9uKCl7cmV0dXJuIE0uYXBwbHkocmUsYXJndW1lbnRzKX19fSk7dmFyICRQPUJuKChMVyxZUCk9PntcInVzZSBzdHJpY3RcIjt2YXIgSko9cWMoKSxqSj1PVCgpLFVKPXAxKCkseko9WFAoKSxXSj1KSi5UeXBlRXJyb3IsUVA9ZnVuY3Rpb24oTSxyZSxWZSxLZSxvaSxrcixwcixMcil7Zm9yKHZhciBhcj1vaSxrZT0wLGU9cHI/ekoocHIsTHIpOiExLGEsQztrZTxLZTspe2lmKGtlIGluIFZlKXtpZihhPWU/ZShWZVtrZV0sa2UscmUpOlZlW2tlXSxrcj4wJiZqSihhKSlDPVVKKGEpLGFyPVFQKE0scmUsYSxDLGFyLGtyLTEpLTE7ZWxzZXtpZihhcj49OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBXSihcIkV4Y2VlZCB0aGUgYWNjZXB0YWJsZSBhcnJheSBsZW5ndGhcIik7TVthcl09YX1hcisrfWtlKyt9cmV0dXJuIGFyfTtZUC5leHBvcnRzPVFQfSk7dmFyIHI0PUJuKChSVyxlNCk9Pnt2YXIgcUo9VnkoKSxWSj1xSihcInRvU3RyaW5nVGFnXCIpLFpQPXt9O1pQW1ZKXT1cInpcIjtlNC5leHBvcnRzPVN0cmluZyhaUCk9PT1cIltvYmplY3Qgel1cIn0pO3ZhciB0ND1CbigoQlcsaTQpPT57dmFyIEtKPXFjKCksR0o9cjQoKSxISj1ncCgpLGQxPWkxKCksWEo9VnkoKSxRSj1YSihcInRvU3RyaW5nVGFnXCIpLFlKPUtKLk9iamVjdCwkSj1kMShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpPT1cIkFyZ3VtZW50c1wiLFpKPWZ1bmN0aW9uKE0scmUpe3RyeXtyZXR1cm4gTVtyZV19Y2F0Y2h7fX07aTQuZXhwb3J0cz1HSj9kMTpmdW5jdGlvbihNKXt2YXIgcmUsVmUsS2U7cmV0dXJuIE09PT12b2lkIDA/XCJVbmRlZmluZWRcIjpNPT09bnVsbD9cIk51bGxcIjp0eXBlb2YoVmU9WkoocmU9WUooTSksUUopKT09XCJzdHJpbmdcIj9WZTokSj9kMShyZSk6KEtlPWQxKHJlKSk9PVwiT2JqZWN0XCImJkhKKHJlLmNhbGxlZSk/XCJBcmd1bWVudHNcIjpLZX19KTt2YXIgdTQ9Qm4oKEpXLGM0KT0+e3ZhciBlaj1kcCgpLHJqPWNnKCksYTQ9Z3AoKSxpaj10NCgpLHRqPXF5KCksYWo9bDEoKSxuND1mdW5jdGlvbigpe30sbmo9W10sbzQ9dGooXCJSZWZsZWN0XCIsXCJjb25zdHJ1Y3RcIiksRlQ9L15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLyxvaj1laihGVC5leGVjKSxzaj0hRlQuZXhlYyhuNCksSHk9ZnVuY3Rpb24ocmUpe2lmKCFhNChyZSkpcmV0dXJuITE7dHJ5e3JldHVybiBvNChuNCxuaixyZSksITB9Y2F0Y2h7cmV0dXJuITF9fSxzND1mdW5jdGlvbihyZSl7aWYoIWE0KHJlKSlyZXR1cm4hMTtzd2l0Y2goaWoocmUpKXtjYXNlXCJBc3luY0Z1bmN0aW9uXCI6Y2FzZVwiR2VuZXJhdG9yRnVuY3Rpb25cIjpjYXNlXCJBc3luY0dlbmVyYXRvckZ1bmN0aW9uXCI6cmV0dXJuITF9dHJ5e3JldHVybiBzanx8ISFvaihGVCxhaihyZSkpfWNhdGNoe3JldHVybiEwfX07czQuc2hhbT0hMDtjNC5leHBvcnRzPSFvNHx8cmooZnVuY3Rpb24oKXt2YXIgTTtyZXR1cm4gSHkoSHkuY2FsbCl8fCFIeShPYmplY3QpfHwhSHkoZnVuY3Rpb24oKXtNPSEwfSl8fE19KT9zNDpIeX0pO3ZhciBwND1CbigoalcsXzQpPT57dmFyIGNqPXFjKCksbDQ9T1QoKSx1aj11NCgpLGxqPU5tKCksZmo9VnkoKSxfaj1maihcInNwZWNpZXNcIiksZjQ9Y2ouQXJyYXk7XzQuZXhwb3J0cz1mdW5jdGlvbihNKXt2YXIgcmU7cmV0dXJuIGw0KE0pJiYocmU9TS5jb25zdHJ1Y3Rvcix1aihyZSkmJihyZT09PWY0fHxsNChyZS5wcm90b3R5cGUpKT9yZT12b2lkIDA6bGoocmUpJiYocmU9cmVbX2pdLHJlPT09bnVsbCYmKHJlPXZvaWQgMCkpKSxyZT09PXZvaWQgMD9mNDpyZX19KTt2YXIgZzQ9Qm4oKFVXLGQ0KT0+e3ZhciBwaj1wNCgpO2Q0LmV4cG9ydHM9ZnVuY3Rpb24oTSxyZSl7cmV0dXJuIG5ldyhwaihNKSkocmU9PT0wPzA6cmUpfX0pO3ZhciBtND1CbigoKT0+e1widXNlIHN0cmljdFwiO3ZhciBkaj13VCgpLGdqPSRQKCksbWo9bjEoKSx2aj1jVCgpLHlqPXAxKCksaGo9ZzQoKTtkaih7dGFyZ2V0OlwiQXJyYXlcIixwcm90bzohMH0se2ZsYXRNYXA6ZnVuY3Rpb24ocmUpe3ZhciBWZT12aih0aGlzKSxLZT15aihWZSksb2k7cmV0dXJuIG1qKHJlKSxvaT1oaihWZSwwKSxvaS5sZW5ndGg9Z2oob2ksVmUsVmUsS2UsMCwxLHJlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSxvaX19KX0pO3ZhciBEej1CbigocVcsZjMpPT57VlAoKTttNCgpO3ZhciB6VD1PYmplY3QuZGVmaW5lUHJvcGVydHksRGo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixXVD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxiaj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFF5PShNLHJlKT0+ZnVuY3Rpb24oKXtyZXR1cm4gTSYmKHJlPSgwLE1bV1QoTSlbMF1dKShNPTApKSxyZX0sT2E9KE0scmUpPT5mdW5jdGlvbigpe3JldHVybiByZXx8KDAsTVtXVChNKVswXV0pKChyZT17ZXhwb3J0czp7fX0pLmV4cG9ydHMscmUpLHJlLmV4cG9ydHN9LGgxPShNLHJlKT0+e2Zvcih2YXIgVmUgaW4gcmUpelQoTSxWZSx7Z2V0OnJlW1ZlXSxlbnVtZXJhYmxlOiEwfSl9LFNqPShNLHJlLFZlLEtlKT0+e2lmKHJlJiZ0eXBlb2YgcmU9PVwib2JqZWN0XCJ8fHR5cGVvZiByZT09XCJmdW5jdGlvblwiKWZvcihsZXQgb2kgb2YgV1QocmUpKSFiai5jYWxsKE0sb2kpJiZvaSE9PVZlJiZ6VChNLG9pLHtnZXQ6KCk9PnJlW29pXSxlbnVtZXJhYmxlOiEoS2U9RGoocmUsb2kpKXx8S2UuZW51bWVyYWJsZX0pO3JldHVybiBNfSxtcD1NPT5Taih6VCh7fSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNKSx2NCx5NCxFdSxFYT1ReSh7XCI8ZGVmaW5lOnByb2Nlc3M+XCIoKXt2ND17fSx5ND1bXSxFdT17ZW52OnY0LGFyZ3Y6eTR9fX0pLFM0PU9hKHtcInNyYy9jb21tb24vcGFyc2VyLWNyZWF0ZS1lcnJvci5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7ZnVuY3Rpb24gVmUoS2Usb2kpe2xldCBrcj1uZXcgU3ludGF4RXJyb3IoS2UrXCIgKFwiK29pLnN0YXJ0LmxpbmUrXCI6XCIrb2kuc3RhcnQuY29sdW1uK1wiKVwiKTtyZXR1cm4ga3IubG9jPW9pLGtyfXJlLmV4cG9ydHM9VmV9fSksVGo9T2Eoe1wic3JjL3V0aWxzL3RyeS1jb21iaW5hdGlvbnMuanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpO2Z1bmN0aW9uIFZlKCl7bGV0IEtlO2Zvcih2YXIgb2k9YXJndW1lbnRzLmxlbmd0aCxrcj1uZXcgQXJyYXkob2kpLHByPTA7cHI8b2k7cHIrKylrcltwcl09YXJndW1lbnRzW3ByXTtmb3IobGV0W0xyLGFyXW9mIGtyLmVudHJpZXMoKSl0cnl7cmV0dXJue3Jlc3VsdDphcigpfX1jYXRjaChrZSl7THI9PT0wJiYoS2U9a2UpfXJldHVybntlcnJvcjpLZX19cmUuZXhwb3J0cz1WZX19KSxUND17fTtoMShUNCx7RU9MOigpPT5SVCxhcmNoOigpPT54aixjcHVzOigpPT5QNCxkZWZhdWx0OigpPT5NNCxlbmRpYW5uZXNzOigpPT54NCxmcmVlbWVtOigpPT5BNCxnZXROZXR3b3JrSW50ZXJmYWNlczooKT0+RjQsaG9zdG5hbWU6KCk9PkU0LGxvYWRhdmc6KCk9PkM0LG5ldHdvcmtJbnRlcmZhY2VzOigpPT5PNCxwbGF0Zm9ybTooKT0+RWoscmVsZWFzZTooKT0+dzQsdG1wRGlyOigpPT5NVCx0bXBkaXI6KCk9PkxULHRvdGFsbWVtOigpPT5ONCx0eXBlOigpPT5JNCx1cHRpbWU6KCk9Pms0fSk7ZnVuY3Rpb24geDQoKXtpZih0eXBlb2YgZzE+XCJ1XCIpe3ZhciBNPW5ldyBBcnJheUJ1ZmZlcigyKSxyZT1uZXcgVWludDhBcnJheShNKSxWZT1uZXcgVWludDE2QXJyYXkoTSk7aWYocmVbMF09MSxyZVsxXT0yLFZlWzBdPT09MjU4KWcxPVwiQkVcIjtlbHNlIGlmKFZlWzBdPT09NTEzKWcxPVwiTEVcIjtlbHNlIHRocm93IG5ldyBFcnJvcihcInVuYWJsZSB0byBmaWd1cmUgb3V0IGVuZGlhbmVzc1wiKX1yZXR1cm4gZzF9ZnVuY3Rpb24gRTQoKXtyZXR1cm4gdHlwZW9mIGdsb2JhbFRoaXMubG9jYXRpb248XCJ1XCI/Z2xvYmFsVGhpcy5sb2NhdGlvbi5ob3N0bmFtZTpcIlwifWZ1bmN0aW9uIEM0KCl7cmV0dXJuW119ZnVuY3Rpb24gazQoKXtyZXR1cm4gMH1mdW5jdGlvbiBBNCgpe3JldHVybiBOdW1iZXIuTUFYX1ZBTFVFfWZ1bmN0aW9uIE40KCl7cmV0dXJuIE51bWJlci5NQVhfVkFMVUV9ZnVuY3Rpb24gUDQoKXtyZXR1cm5bXX1mdW5jdGlvbiBJNCgpe3JldHVyblwiQnJvd3NlclwifWZ1bmN0aW9uIHc0KCl7cmV0dXJuIHR5cGVvZiBnbG9iYWxUaGlzLm5hdmlnYXRvcjxcInVcIj9nbG9iYWxUaGlzLm5hdmlnYXRvci5hcHBWZXJzaW9uOlwiXCJ9ZnVuY3Rpb24gTzQoKXt9ZnVuY3Rpb24gRjQoKXt9ZnVuY3Rpb24geGooKXtyZXR1cm5cImphdmFzY3JpcHRcIn1mdW5jdGlvbiBFaigpe3JldHVyblwiYnJvd3NlclwifWZ1bmN0aW9uIE1UKCl7cmV0dXJuXCIvdG1wXCJ9dmFyIGcxLExULFJULE00LENqPVF5KHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHM6b3NcIigpe0VhKCksTFQ9TVQsUlQ9YFxuYCxNND17RU9MOlJULHRtcGRpcjpMVCx0bXBEaXI6TVQsbmV0d29ya0ludGVyZmFjZXM6TzQsZ2V0TmV0d29ya0ludGVyZmFjZXM6RjQscmVsZWFzZTp3NCx0eXBlOkk0LGNwdXM6UDQsdG90YWxtZW06TjQsZnJlZW1lbTpBNCx1cHRpbWU6azQsbG9hZGF2ZzpDNCxob3N0bmFtZTpFNCxlbmRpYW5uZXNzOng0fX19KSxraj1PYSh7XCJub2RlLW1vZHVsZXMtcG9seWZpbGxzLWNvbW1vbmpzOm9zXCIoTSxyZSl7RWEoKTt2YXIgVmU9KENqKCksbXAoVDQpKTtpZihWZSYmVmUuZGVmYXVsdCl7cmUuZXhwb3J0cz1WZS5kZWZhdWx0O2ZvcihsZXQgS2UgaW4gVmUpcmUuZXhwb3J0c1tLZV09VmVbS2VdfWVsc2UgVmUmJihyZS5leHBvcnRzPVZlKX19KSxBaj1PYSh7XCJub2RlX21vZHVsZXMvZGV0ZWN0LW5ld2xpbmUvaW5kZXguanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciBWZT1LZT0+e2lmKHR5cGVvZiBLZSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBzdHJpbmdcIik7bGV0IG9pPUtlLm1hdGNoKC8oPzpcXHI/XFxuKS9nKXx8W107aWYob2kubGVuZ3RoPT09MClyZXR1cm47bGV0IGtyPW9pLmZpbHRlcihMcj0+THI9PT1gXFxyXG5gKS5sZW5ndGgscHI9b2kubGVuZ3RoLWtyO3JldHVybiBrcj5wcj9gXFxyXG5gOmBcbmB9O3JlLmV4cG9ydHM9VmUscmUuZXhwb3J0cy5ncmFjZWZ1bD1LZT0+dHlwZW9mIEtlPT1cInN0cmluZ1wiJiZWZShLZSl8fGBcbmB9fSksTmo9T2Eoe1wibm9kZV9tb2R1bGVzL2plc3QtZG9jYmxvY2svYnVpbGQvaW5kZXguanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uZXh0cmFjdD13LE0ucGFyc2U9RSxNLnBhcnNlV2l0aENvbW1lbnRzPVEsTS5wcmludD1sZSxNLnN0cmlwPUI7ZnVuY3Rpb24gcmUoKXtsZXQgcD1raigpO3JldHVybiByZT1mdW5jdGlvbigpe3JldHVybiBwfSxwfWZ1bmN0aW9uIFZlKCl7bGV0IHA9S2UoQWooKSk7cmV0dXJuIFZlPWZ1bmN0aW9uKCl7cmV0dXJuIHB9LHB9ZnVuY3Rpb24gS2UocCl7cmV0dXJuIHAmJnAuX19lc01vZHVsZT9wOntkZWZhdWx0OnB9fXZhciBvaT0vXFwqXFwvJC8sa3I9L15cXC9cXCpcXCovLHByPS9eXFxzKihcXC9cXCpcXCo/KC58XFxyP1xcbikqP1xcKlxcLykvLExyPS8oXnxcXHMrKVxcL1xcLyhbXlxcclxcbl0qKS9nLGFyPS9eKFxccj9cXG4pKy8sa2U9Lyg/Ol58XFxyP1xcbikgKihAW15cXHJcXG5dKj8pICpcXHI/XFxuICooPyFbXkBcXHJcXG5dKlxcL1xcL1teXSopKFteQFxcclxcblxcc11bXkBcXHJcXG5dKz8pICpcXHI/XFxuL2csZT0vKD86XnxcXHI/XFxuKSAqQChcXFMrKSAqKFteXFxyXFxuXSopL2csYT0vKFxccj9cXG58XikgKlxcKiA/L2csQz1bXTtmdW5jdGlvbiB3KHApe2xldCBtPXAubWF0Y2gocHIpO3JldHVybiBtP21bMF0udHJpbUxlZnQoKTpcIlwifWZ1bmN0aW9uIEIocCl7bGV0IG09cC5tYXRjaChwcik7cmV0dXJuIG0mJm1bMF0/cC5zdWJzdHJpbmcobVswXS5sZW5ndGgpOnB9ZnVuY3Rpb24gRShwKXtyZXR1cm4gUShwKS5wcmFnbWFzfWZ1bmN0aW9uIFEocCl7bGV0IG09KDAsVmUoKS5kZWZhdWx0KShwKXx8cmUoKS5FT0w7cD1wLnJlcGxhY2Uoa3IsXCJcIikucmVwbGFjZShvaSxcIlwiKS5yZXBsYWNlKGEsXCIkMVwiKTtsZXQgRz1cIlwiO2Zvcig7RyE9PXA7KUc9cCxwPXAucmVwbGFjZShrZSxcIlwiLmNvbmNhdChtLFwiJDEgJDJcIikuY29uY2F0KG0pKTtwPXAucmVwbGFjZShhcixcIlwiKS50cmltUmlnaHQoKTtsZXQgb2U9T2JqZWN0LmNyZWF0ZShudWxsKSxmPXAucmVwbGFjZShlLFwiXCIpLnJlcGxhY2UoYXIsXCJcIikudHJpbVJpZ2h0KCksVDtmb3IoO1Q9ZS5leGVjKHApOyl7bGV0IEs9VFsyXS5yZXBsYWNlKExyLFwiXCIpO3R5cGVvZiBvZVtUWzFdXT09XCJzdHJpbmdcInx8QXJyYXkuaXNBcnJheShvZVtUWzFdXSk/b2VbVFsxXV09Qy5jb25jYXQob2VbVFsxXV0sSyk6b2VbVFsxXV09S31yZXR1cm57Y29tbWVudHM6ZixwcmFnbWFzOm9lfX1mdW5jdGlvbiBsZShwKXtsZXR7Y29tbWVudHM6bT1cIlwiLHByYWdtYXM6Rz17fX09cCxvZT0oMCxWZSgpLmRlZmF1bHQpKG0pfHxyZSgpLkVPTCxmPVwiLyoqXCIsVD1cIiAqXCIsSz1cIiAqL1wiLGI9T2JqZWN0LmtleXMoRyksc2U9Yi5tYXAoaWU9Pk4oaWUsR1tpZV0pKS5yZWR1Y2UoKGllLFIpPT5pZS5jb25jYXQoUiksW10pLm1hcChpZT0+VCtcIiBcIitpZStvZSkuam9pbihcIlwiKTtpZighbSl7aWYoYi5sZW5ndGg9PT0wKXJldHVyblwiXCI7aWYoYi5sZW5ndGg9PT0xJiYhQXJyYXkuaXNBcnJheShHW2JbMF1dKSl7bGV0IGllPUdbYlswXV07cmV0dXJuXCJcIi5jb25jYXQoZixcIiBcIikuY29uY2F0KE4oYlswXSxpZSlbMF0pLmNvbmNhdChLKX19bGV0IEo9bS5zcGxpdChvZSkubWFwKGllPT5cIlwiLmNvbmNhdChULFwiIFwiKS5jb25jYXQoaWUpKS5qb2luKG9lKStvZTtyZXR1cm4gZitvZSsobT9KOlwiXCIpKyhtJiZiLmxlbmd0aD9UK29lOlwiXCIpK3NlK0t9ZnVuY3Rpb24gTihwLG0pe3JldHVybiBDLmNvbmNhdChtKS5tYXAoRz0+XCJAXCIuY29uY2F0KHAsXCIgXCIpLmNvbmNhdChHKS50cmltKCkpfX19KSxQaj1PYSh7XCJzcmMvY29tbW9uL2VuZC1vZi1saW5lLmpzXCIoTSxyZSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTtmdW5jdGlvbiBWZShwcil7bGV0IExyPXByLmluZGV4T2YoXCJcXHJcIik7cmV0dXJuIExyPj0wP3ByLmNoYXJBdChMcisxKT09PWBcbmA/XCJjcmxmXCI6XCJjclwiOlwibGZcIn1mdW5jdGlvbiBLZShwcil7c3dpdGNoKHByKXtjYXNlXCJjclwiOnJldHVyblwiXFxyXCI7Y2FzZVwiY3JsZlwiOnJldHVybmBcXHJcbmA7ZGVmYXVsdDpyZXR1cm5gXG5gfX1mdW5jdGlvbiBvaShwcixMcil7bGV0IGFyO3N3aXRjaChMcil7Y2FzZWBcbmA6YXI9L1xcbi9nO2JyZWFrO2Nhc2VcIlxcclwiOmFyPS9cXHIvZzticmVhaztjYXNlYFxcclxuYDphcj0vXFxyXFxuL2c7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgXCJlb2xcIiAnLmNvbmNhdChKU09OLnN0cmluZ2lmeShMciksXCIuXCIpKX1sZXQga2U9cHIubWF0Y2goYXIpO3JldHVybiBrZT9rZS5sZW5ndGg6MH1mdW5jdGlvbiBrcihwcil7cmV0dXJuIHByLnJlcGxhY2UoL1xcclxcbj8vZyxgXG5gKX1yZS5leHBvcnRzPXtndWVzc0VuZE9mTGluZTpWZSxjb252ZXJ0RW5kT2ZMaW5lVG9DaGFyczpLZSxjb3VudEVuZE9mTGluZUNoYXJzOm9pLG5vcm1hbGl6ZUVuZE9mTGluZTprcn19fSksSWo9T2Eoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2dldC1zaGViYW5nLmpzXCIoTSxyZSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTtmdW5jdGlvbiBWZShLZSl7aWYoIUtlLnN0YXJ0c1dpdGgoXCIjIVwiKSlyZXR1cm5cIlwiO2xldCBvaT1LZS5pbmRleE9mKGBcbmApO3JldHVybiBvaT09PS0xP0tlOktlLnNsaWNlKDAsb2kpfXJlLmV4cG9ydHM9VmV9fSksd2o9T2Eoe1wic3JjL2xhbmd1YWdlLWpzL3ByYWdtYS5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7dmFye3BhcnNlV2l0aENvbW1lbnRzOlZlLHN0cmlwOktlLGV4dHJhY3Q6b2kscHJpbnQ6a3J9PU5qKCkse25vcm1hbGl6ZUVuZE9mTGluZTpwcn09UGooKSxMcj1JaigpO2Z1bmN0aW9uIGFyKGEpe2xldCBDPUxyKGEpO0MmJihhPWEuc2xpY2UoQy5sZW5ndGgrMSkpO2xldCB3PW9pKGEpLHtwcmFnbWFzOkIsY29tbWVudHM6RX09VmUodyk7cmV0dXJue3NoZWJhbmc6Qyx0ZXh0OmEscHJhZ21hczpCLGNvbW1lbnRzOkV9fWZ1bmN0aW9uIGtlKGEpe2xldCBDPU9iamVjdC5rZXlzKGFyKGEpLnByYWdtYXMpO3JldHVybiBDLmluY2x1ZGVzKFwicHJldHRpZXJcIil8fEMuaW5jbHVkZXMoXCJmb3JtYXRcIil9ZnVuY3Rpb24gZShhKXtsZXR7c2hlYmFuZzpDLHRleHQ6dyxwcmFnbWFzOkIsY29tbWVudHM6RX09YXIoYSksUT1LZSh3KSxsZT1rcih7cHJhZ21hczpPYmplY3QuYXNzaWduKHtmb3JtYXQ6XCJcIn0sQiksY29tbWVudHM6RS50cmltU3RhcnQoKX0pO3JldHVybihDP1wiXCIuY29uY2F0KEMsYFxuYCk6XCJcIikrcHIobGUpKyhRLnN0YXJ0c1dpdGgoYFxuYCk/YFxuYDpgXG5cbmApK1F9cmUuZXhwb3J0cz17aGFzUHJhZ21hOmtlLGluc2VydFByYWdtYTplfX19KSxPaj1PYSh7XCJzcmMvdXRpbHMvaXMtbm9uLWVtcHR5LWFycmF5LmpzXCIoTSxyZSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTtmdW5jdGlvbiBWZShLZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoS2UpJiZLZS5sZW5ndGg+MH1yZS5leHBvcnRzPVZlfX0pLEw0PU9hKHtcInNyYy9sYW5ndWFnZS1qcy9sb2MuanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciBWZT1PaigpO2Z1bmN0aW9uIEtlKGFyLGtlKXtsZXR7aWdub3JlRGVjb3JhdG9yczplfT1rZXx8e307aWYoIWUpe2xldCBhPWFyLmRlY2xhcmF0aW9uJiZhci5kZWNsYXJhdGlvbi5kZWNvcmF0b3JzfHxhci5kZWNvcmF0b3JzO2lmKFZlKGEpKXJldHVybiBLZShhWzBdKX1yZXR1cm4gYXIucmFuZ2U/YXIucmFuZ2VbMF06YXIuc3RhcnR9ZnVuY3Rpb24gb2koYXIpe3JldHVybiBhci5yYW5nZT9hci5yYW5nZVsxXTphci5lbmR9ZnVuY3Rpb24ga3IoYXIsa2Upe2xldCBlPUtlKGFyKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT09PUtlKGtlKX1mdW5jdGlvbiBwcihhcixrZSl7bGV0IGU9b2koYXIpO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPT09b2koa2UpfWZ1bmN0aW9uIExyKGFyLGtlKXtyZXR1cm4ga3IoYXIsa2UpJiZwcihhcixrZSl9cmUuZXhwb3J0cz17bG9jU3RhcnQ6S2UsbG9jRW5kOm9pLGhhc1NhbWVMb2NTdGFydDprcixoYXNTYW1lTG9jOkxyfX19KSxGaj1PYSh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvdXRpbHMvY3JlYXRlLXBhcnNlci5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7dmFye2hhc1ByYWdtYTpWZX09d2ooKSx7bG9jU3RhcnQ6S2UsbG9jRW5kOm9pfT1MNCgpO2Z1bmN0aW9uIGtyKHByKXtyZXR1cm4gcHI9dHlwZW9mIHByPT1cImZ1bmN0aW9uXCI/e3BhcnNlOnByfTpwcixPYmplY3QuYXNzaWduKHthc3RGb3JtYXQ6XCJlc3RyZWVcIixoYXNQcmFnbWE6VmUsbG9jU3RhcnQ6S2UsbG9jRW5kOm9pfSxwcil9cmUuZXhwb3J0cz1rcn19KSxNaj1PYSh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvdXRpbHMvcmVwbGFjZS1oYXNoYmFuZy5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7ZnVuY3Rpb24gVmUoS2Upe3JldHVybiBLZS5jaGFyQXQoMCk9PT1cIiNcIiYmS2UuY2hhckF0KDEpPT09XCIhXCI/XCIvL1wiK0tlLnNsaWNlKDIpOktlfXJlLmV4cG9ydHM9VmV9fSksTGo9T2Eoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2lzLXRzLWtleXdvcmQtdHlwZS5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7ZnVuY3Rpb24gVmUoS2Upe2xldHt0eXBlOm9pfT1LZTtyZXR1cm4gb2kuc3RhcnRzV2l0aChcIlRTXCIpJiZvaS5lbmRzV2l0aChcIktleXdvcmRcIil9cmUuZXhwb3J0cz1WZX19KSxSaj1PYSh7XCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvaXMtYmxvY2stY29tbWVudC5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIFZlPW5ldyBTZXQoW1wiQmxvY2tcIixcIkNvbW1lbnRCbG9ja1wiLFwiTXVsdGlMaW5lXCJdKSxLZT1vaT0+VmUuaGFzKG9pPT1udWxsP3ZvaWQgMDpvaS50eXBlKTtyZS5leHBvcnRzPUtlfX0pLEJqPU9hKHtcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy10eXBlLWNhc3QtY29tbWVudC5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIFZlPVJqKCk7ZnVuY3Rpb24gS2Uob2kpe3JldHVybiBWZShvaSkmJm9pLnZhbHVlWzBdPT09XCIqXCImJi9AdHlwZVxcYi8udGVzdChvaS52YWx1ZSl9cmUuZXhwb3J0cz1LZX19KSxKaj1PYSh7XCJzcmMvdXRpbHMvZ2V0LWxhc3QuanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciBWZT1LZT0+S2VbS2UubGVuZ3RoLTFdO3JlLmV4cG9ydHM9VmV9fSksUjQ9T2Eoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL3Zpc2l0LW5vZGUuanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpO2Z1bmN0aW9uIFZlKEtlLG9pKXtpZihBcnJheS5pc0FycmF5KEtlKSl7Zm9yKGxldCBrcj0wO2tyPEtlLmxlbmd0aDtrcisrKUtlW2tyXT1WZShLZVtrcl0sb2kpO3JldHVybiBLZX1pZihLZSYmdHlwZW9mIEtlPT1cIm9iamVjdFwiJiZ0eXBlb2YgS2UudHlwZT09XCJzdHJpbmdcIil7bGV0IGtyPU9iamVjdC5rZXlzKEtlKTtmb3IobGV0IHByPTA7cHI8a3IubGVuZ3RoO3ByKyspS2Vba3JbcHJdXT1WZShLZVtrcltwcl1dLG9pKTtyZXR1cm4gb2koS2UpfHxLZX1yZXR1cm4gS2V9cmUuZXhwb3J0cz1WZX19KSxCND1PYSh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvdGhyb3ctc3ludGF4LWVycm9yLmpzXCIoTSxyZSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgVmU9UzQoKTtmdW5jdGlvbiBLZShvaSxrcil7bGV0e3N0YXJ0OnByLGVuZDpMcn09b2kubG9jO3Rocm93IFZlKGtyLHtzdGFydDp7bGluZTpwci5saW5lLGNvbHVtbjpwci5jb2x1bW4rMX0sZW5kOntsaW5lOkxyLmxpbmUsY29sdW1uOkxyLmNvbHVtbisxfX0pfXJlLmV4cG9ydHM9S2V9fSksamo9T2Eoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL3R5cGVzY3JpcHQuanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciBWZT1SNCgpLEtlPUI0KCk7ZnVuY3Rpb24gb2koTHIsYXIsa2Upe2xldCBlPUxyLmRlY29yYXRvcnM7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2xldCBhPWFyLmRlY29yYXRvcnM7KCFBcnJheS5pc0FycmF5KGEpfHxhLmxlbmd0aCE9PWUubGVuZ3RofHxlLnNvbWUoQz0+e2xldCB3PWtlLmdldChDKTtyZXR1cm4hd3x8IWEuaW5jbHVkZXModyl9KSkmJktlKGFyLFwiTGVhZGluZyBkZWNvcmF0b3JzIG11c3QgYmUgYXR0YWNoZWQgdG8gYSBjbGFzcyBkZWNsYXJhdGlvblwiKX1mdW5jdGlvbiBrcihMcixhcil7THIua2luZCE9PTE2N3x8THIubW9kaWZpZXJzJiYhTHIubW9kaWZpZXJzLnNvbWUoYT0+YS5raW5kPT09MTI2KXx8THIuaW5pdGlhbGl6ZXImJmFyLnZhbHVlPT09bnVsbCYmS2UoYXIsXCJBYnN0cmFjdCBwcm9wZXJ0eSBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplclwiKX1mdW5jdGlvbiBwcihMcixhcil7bGV0e2VzVHJlZU5vZGVUb1RTTm9kZU1hcDprZSx0c05vZGVUb0VTVHJlZU5vZGVNYXA6ZX09YXIudHNQYXJzZVJlc3VsdDtWZShMcixhPT57bGV0IEM9a2UuZ2V0KGEpO2lmKCFDKXJldHVybjtsZXQgdz1lLmdldChDKTt3PT09YSYmKG9pKEMsdyxlKSxrcihDLHcpKX0pfXJlLmV4cG9ydHM9e3Rocm93RXJyb3JGb3JJbnZhbGlkTm9kZXM6cHJ9fX0pLFVqPU9hKHtcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS9wb3N0cHJvY2Vzcy9pbmRleC5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7dmFye2xvY1N0YXJ0OlZlLGxvY0VuZDpLZX09TDQoKSxvaT1MaigpLGtyPUJqKCkscHI9SmooKSxMcj1SNCgpLHt0aHJvd0Vycm9yRm9ySW52YWxpZE5vZGVzOmFyfT1qaigpLGtlPUI0KCk7ZnVuY3Rpb24gZShCLEUpe2lmKEUucGFyc2VyPT09XCJ0eXBlc2NyaXB0XCImJi9AfGFic3RyYWN0Ly50ZXN0KEUub3JpZ2luYWxUZXh0KSYmYXIoQixFKSxFLnBhcnNlciE9PVwidHlwZXNjcmlwdFwiJiZFLnBhcnNlciE9PVwiZmxvd1wiJiZFLnBhcnNlciE9PVwiYWNvcm5cIiYmRS5wYXJzZXIhPT1cImVzcHJlZVwiJiZFLnBhcnNlciE9PVwibWVyaXlhaFwiKXtsZXQgbGU9bmV3IFNldDtCPUxyKEIsTj0+e04ubGVhZGluZ0NvbW1lbnRzJiZOLmxlYWRpbmdDb21tZW50cy5zb21lKGtyKSYmbGUuYWRkKFZlKE4pKX0pLEI9THIoQixOPT57aWYoTi50eXBlPT09XCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiKXtsZXR7ZXhwcmVzc2lvbjpwfT1OO2lmKHAudHlwZT09PVwiVHlwZUNhc3RFeHByZXNzaW9uXCIpcmV0dXJuIHAucmFuZ2U9Ti5yYW5nZSxwO2xldCBtPVZlKE4pO2lmKCFsZS5oYXMobSkpcmV0dXJuIHAuZXh0cmE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHAuZXh0cmEpLHt9LHtwYXJlbnRoZXNpemVkOiEwfSkscH19KX1yZXR1cm4gQj1McihCLGxlPT57c3dpdGNoKGxlLnR5cGUpe2Nhc2VcIkNoYWluRXhwcmVzc2lvblwiOnJldHVybiBhKGxlLmV4cHJlc3Npb24pO2Nhc2VcIkxvZ2ljYWxFeHByZXNzaW9uXCI6e2lmKEMobGUpKXJldHVybiB3KGxlKTticmVha31jYXNlXCJWYXJpYWJsZURlY2xhcmF0aW9uXCI6e2xldCBOPXByKGxlLmRlY2xhcmF0aW9ucyk7TiYmTi5pbml0JiZRKGxlLE4pO2JyZWFrfWNhc2VcIlRTUGFyZW50aGVzaXplZFR5cGVcIjpyZXR1cm4gb2kobGUudHlwZUFubm90YXRpb24pfHxsZS50eXBlQW5ub3RhdGlvbi50eXBlPT09XCJUU1RoaXNUeXBlXCJ8fChsZS50eXBlQW5ub3RhdGlvbi5yYW5nZT1bVmUobGUpLEtlKGxlKV0pLGxlLnR5cGVBbm5vdGF0aW9uO2Nhc2VcIlRTVHlwZVBhcmFtZXRlclwiOmlmKHR5cGVvZiBsZS5uYW1lPT1cInN0cmluZ1wiKXtsZXQgTj1WZShsZSk7bGUubmFtZT17dHlwZTpcIklkZW50aWZpZXJcIixuYW1lOmxlLm5hbWUscmFuZ2U6W04sTitsZS5uYW1lLmxlbmd0aF19fWJyZWFrO2Nhc2VcIk9iamVjdEV4cHJlc3Npb25cIjppZihFLnBhcnNlcj09PVwidHlwZXNjcmlwdFwiKXtsZXQgTj1sZS5wcm9wZXJ0aWVzLmZpbmQocD0+cC50eXBlPT09XCJQcm9wZXJ0eVwiJiZwLnZhbHVlLnR5cGU9PT1cIlRTRW1wdHlCb2R5RnVuY3Rpb25FeHByZXNzaW9uXCIpO04mJmtlKE4udmFsdWUsXCJVbmV4cGVjdGVkIHRva2VuLlwiKX1icmVhaztjYXNlXCJTZXF1ZW5jZUV4cHJlc3Npb25cIjp7bGV0IE49cHIobGUuZXhwcmVzc2lvbnMpO2xlLnJhbmdlPVtWZShsZSksTWF0aC5taW4oS2UoTiksS2UobGUpKV07YnJlYWt9Y2FzZVwiVG9waWNSZWZlcmVuY2VcIjpFLl9faXNVc2luZ0hhY2tQaXBlbGluZT0hMDticmVhaztjYXNlXCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiOntsZXR7ZXhwb3J0ZWQ6Tn09bGU7aWYoRS5wYXJzZXI9PT1cIm1lcml5YWhcIiYmTiYmTi50eXBlPT09XCJJZGVudGlmaWVyXCIpe2xldCBwPUUub3JpZ2luYWxUZXh0LnNsaWNlKFZlKE4pLEtlKE4pKTsocC5zdGFydHNXaXRoKCdcIicpfHxwLnN0YXJ0c1dpdGgoXCInXCIpKSYmKGxlLmV4cG9ydGVkPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxsZS5leHBvcnRlZCkse30se3R5cGU6XCJMaXRlcmFsXCIsdmFsdWU6bGUuZXhwb3J0ZWQubmFtZSxyYXc6cH0pKX1icmVha319fSksQjtmdW5jdGlvbiBRKGxlLE4pe0Uub3JpZ2luYWxUZXh0W0tlKE4pXSE9PVwiO1wiJiYobGUucmFuZ2U9W1ZlKGxlKSxLZShOKV0pfX1mdW5jdGlvbiBhKEIpe3N3aXRjaChCLnR5cGUpe2Nhc2VcIkNhbGxFeHByZXNzaW9uXCI6Qi50eXBlPVwiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiLEIuY2FsbGVlPWEoQi5jYWxsZWUpO2JyZWFrO2Nhc2VcIk1lbWJlckV4cHJlc3Npb25cIjpCLnR5cGU9XCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cIixCLm9iamVjdD1hKEIub2JqZWN0KTticmVhaztjYXNlXCJUU05vbk51bGxFeHByZXNzaW9uXCI6Qi5leHByZXNzaW9uPWEoQi5leHByZXNzaW9uKTticmVha31yZXR1cm4gQn1mdW5jdGlvbiBDKEIpe3JldHVybiBCLnR5cGU9PT1cIkxvZ2ljYWxFeHByZXNzaW9uXCImJkIucmlnaHQudHlwZT09PVwiTG9naWNhbEV4cHJlc3Npb25cIiYmQi5vcGVyYXRvcj09PUIucmlnaHQub3BlcmF0b3J9ZnVuY3Rpb24gdyhCKXtyZXR1cm4gQyhCKT93KHt0eXBlOlwiTG9naWNhbEV4cHJlc3Npb25cIixvcGVyYXRvcjpCLm9wZXJhdG9yLGxlZnQ6dyh7dHlwZTpcIkxvZ2ljYWxFeHByZXNzaW9uXCIsb3BlcmF0b3I6Qi5vcGVyYXRvcixsZWZ0OkIubGVmdCxyaWdodDpCLnJpZ2h0LmxlZnQscmFuZ2U6W1ZlKEIubGVmdCksS2UoQi5yaWdodC5sZWZ0KV19KSxyaWdodDpCLnJpZ2h0LnJpZ2h0LHJhbmdlOltWZShCKSxLZShCKV19KTpCfXJlLmV4cG9ydHM9ZX19KSx6aj1PYSh7XCJub2RlX21vZHVsZXMvbXMvaW5kZXguanNcIihNLHJlKXtFYSgpO3ZhciBWZT0xZTMsS2U9VmUqNjAsb2k9S2UqNjAsa3I9b2kqMjQscHI9a3IqNyxMcj1rciozNjUuMjU7cmUuZXhwb3J0cz1mdW5jdGlvbihDLHcpe3c9d3x8e307dmFyIEI9dHlwZW9mIEM7aWYoQj09PVwic3RyaW5nXCImJkMubGVuZ3RoPjApcmV0dXJuIGFyKEMpO2lmKEI9PT1cIm51bWJlclwiJiZpc0Zpbml0ZShDKSlyZXR1cm4gdy5sb25nP2UoQyk6a2UoQyk7dGhyb3cgbmV3IEVycm9yKFwidmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD1cIitKU09OLnN0cmluZ2lmeShDKSl9O2Z1bmN0aW9uIGFyKEMpe2lmKEM9U3RyaW5nKEMpLCEoQy5sZW5ndGg+MTAwKSl7dmFyIHc9L14oLT8oPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKEMpO2lmKCEhdyl7dmFyIEI9cGFyc2VGbG9hdCh3WzFdKSxFPSh3WzJdfHxcIm1zXCIpLnRvTG93ZXJDYXNlKCk7c3dpdGNoKEUpe2Nhc2VcInllYXJzXCI6Y2FzZVwieWVhclwiOmNhc2VcInlyc1wiOmNhc2VcInlyXCI6Y2FzZVwieVwiOnJldHVybiBCKkxyO2Nhc2VcIndlZWtzXCI6Y2FzZVwid2Vla1wiOmNhc2VcIndcIjpyZXR1cm4gQipwcjtjYXNlXCJkYXlzXCI6Y2FzZVwiZGF5XCI6Y2FzZVwiZFwiOnJldHVybiBCKmtyO2Nhc2VcImhvdXJzXCI6Y2FzZVwiaG91clwiOmNhc2VcImhyc1wiOmNhc2VcImhyXCI6Y2FzZVwiaFwiOnJldHVybiBCKm9pO2Nhc2VcIm1pbnV0ZXNcIjpjYXNlXCJtaW51dGVcIjpjYXNlXCJtaW5zXCI6Y2FzZVwibWluXCI6Y2FzZVwibVwiOnJldHVybiBCKktlO2Nhc2VcInNlY29uZHNcIjpjYXNlXCJzZWNvbmRcIjpjYXNlXCJzZWNzXCI6Y2FzZVwic2VjXCI6Y2FzZVwic1wiOnJldHVybiBCKlZlO2Nhc2VcIm1pbGxpc2Vjb25kc1wiOmNhc2VcIm1pbGxpc2Vjb25kXCI6Y2FzZVwibXNlY3NcIjpjYXNlXCJtc2VjXCI6Y2FzZVwibXNcIjpyZXR1cm4gQjtkZWZhdWx0OnJldHVybn19fX1mdW5jdGlvbiBrZShDKXt2YXIgdz1NYXRoLmFicyhDKTtyZXR1cm4gdz49a3I/TWF0aC5yb3VuZChDL2tyKStcImRcIjp3Pj1vaT9NYXRoLnJvdW5kKEMvb2kpK1wiaFwiOnc+PUtlP01hdGgucm91bmQoQy9LZSkrXCJtXCI6dz49VmU/TWF0aC5yb3VuZChDL1ZlKStcInNcIjpDK1wibXNcIn1mdW5jdGlvbiBlKEMpe3ZhciB3PU1hdGguYWJzKEMpO3JldHVybiB3Pj1rcj9hKEMsdyxrcixcImRheVwiKTp3Pj1vaT9hKEMsdyxvaSxcImhvdXJcIik6dz49S2U/YShDLHcsS2UsXCJtaW51dGVcIik6dz49VmU/YShDLHcsVmUsXCJzZWNvbmRcIik6QytcIiBtc1wifWZ1bmN0aW9uIGEoQyx3LEIsRSl7dmFyIFE9dz49QioxLjU7cmV0dXJuIE1hdGgucm91bmQoQy9CKStcIiBcIitFKyhRP1wic1wiOlwiXCIpfX19KSxXaj1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvY29tbW9uLmpzXCIoTSxyZSl7RWEoKTtmdW5jdGlvbiBWZShLZSl7a3IuZGVidWc9a3Isa3IuZGVmYXVsdD1rcixrci5jb2VyY2U9YSxrci5kaXNhYmxlPWFyLGtyLmVuYWJsZT1Mcixrci5lbmFibGVkPWtlLGtyLmh1bWFuaXplPXpqKCksa3IuZGVzdHJveT1DLE9iamVjdC5rZXlzKEtlKS5mb3JFYWNoKHc9Pntrclt3XT1LZVt3XX0pLGtyLm5hbWVzPVtdLGtyLnNraXBzPVtdLGtyLmZvcm1hdHRlcnM9e307ZnVuY3Rpb24gb2kodyl7bGV0IEI9MDtmb3IobGV0IEU9MDtFPHcubGVuZ3RoO0UrKylCPShCPDw1KS1CK3cuY2hhckNvZGVBdChFKSxCfD0wO3JldHVybiBrci5jb2xvcnNbTWF0aC5hYnMoQikla3IuY29sb3JzLmxlbmd0aF19a3Iuc2VsZWN0Q29sb3I9b2k7ZnVuY3Rpb24ga3Iodyl7bGV0IEIsRT1udWxsLFEsbGU7ZnVuY3Rpb24gTigpe2Zvcih2YXIgcD1hcmd1bWVudHMubGVuZ3RoLG09bmV3IEFycmF5KHApLEc9MDtHPHA7RysrKW1bR109YXJndW1lbnRzW0ddO2lmKCFOLmVuYWJsZWQpcmV0dXJuO2xldCBvZT1OLGY9TnVtYmVyKG5ldyBEYXRlKSxUPWYtKEJ8fGYpO29lLmRpZmY9VCxvZS5wcmV2PUIsb2UuY3Vycj1mLEI9ZixtWzBdPWtyLmNvZXJjZShtWzBdKSx0eXBlb2YgbVswXSE9XCJzdHJpbmdcIiYmbS51bnNoaWZ0KFwiJU9cIik7bGV0IEs9MDttWzBdPW1bMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csKHNlLEopPT57aWYoc2U9PT1cIiUlXCIpcmV0dXJuXCIlXCI7SysrO2xldCBpZT1rci5mb3JtYXR0ZXJzW0pdO2lmKHR5cGVvZiBpZT09XCJmdW5jdGlvblwiKXtsZXQgUj1tW0tdO3NlPWllLmNhbGwob2UsUiksbS5zcGxpY2UoSywxKSxLLS19cmV0dXJuIHNlfSksa3IuZm9ybWF0QXJncy5jYWxsKG9lLG0pLChvZS5sb2d8fGtyLmxvZykuYXBwbHkob2UsbSl9cmV0dXJuIE4ubmFtZXNwYWNlPXcsTi51c2VDb2xvcnM9a3IudXNlQ29sb3JzKCksTi5jb2xvcj1rci5zZWxlY3RDb2xvcih3KSxOLmV4dGVuZD1wcixOLmRlc3Ryb3k9a3IuZGVzdHJveSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTixcImVuYWJsZWRcIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITEsZ2V0OigpPT5FIT09bnVsbD9FOihRIT09a3IubmFtZXNwYWNlcyYmKFE9a3IubmFtZXNwYWNlcyxsZT1rci5lbmFibGVkKHcpKSxsZSksc2V0OnA9PntFPXB9fSksdHlwZW9mIGtyLmluaXQ9PVwiZnVuY3Rpb25cIiYma3IuaW5pdChOKSxOfWZ1bmN0aW9uIHByKHcsQil7bGV0IEU9a3IodGhpcy5uYW1lc3BhY2UrKHR5cGVvZiBCPlwidVwiP1wiOlwiOkIpK3cpO3JldHVybiBFLmxvZz10aGlzLmxvZyxFfWZ1bmN0aW9uIExyKHcpe2tyLnNhdmUodyksa3IubmFtZXNwYWNlcz13LGtyLm5hbWVzPVtdLGtyLnNraXBzPVtdO2xldCBCLEU9KHR5cGVvZiB3PT1cInN0cmluZ1wiP3c6XCJcIikuc3BsaXQoL1tcXHMsXSsvKSxRPUUubGVuZ3RoO2ZvcihCPTA7QjxRO0IrKykhRVtCXXx8KHc9RVtCXS5yZXBsYWNlKC9cXCovZyxcIi4qP1wiKSx3WzBdPT09XCItXCI/a3Iuc2tpcHMucHVzaChuZXcgUmVnRXhwKFwiXlwiK3cuc2xpY2UoMSkrXCIkXCIpKTprci5uYW1lcy5wdXNoKG5ldyBSZWdFeHAoXCJeXCIrdytcIiRcIikpKX1mdW5jdGlvbiBhcigpe2xldCB3PVsuLi5rci5uYW1lcy5tYXAoZSksLi4ua3Iuc2tpcHMubWFwKGUpLm1hcChCPT5cIi1cIitCKV0uam9pbihcIixcIik7cmV0dXJuIGtyLmVuYWJsZShcIlwiKSx3fWZ1bmN0aW9uIGtlKHcpe2lmKHdbdy5sZW5ndGgtMV09PT1cIipcIilyZXR1cm4hMDtsZXQgQixFO2ZvcihCPTAsRT1rci5za2lwcy5sZW5ndGg7QjxFO0IrKylpZihrci5za2lwc1tCXS50ZXN0KHcpKXJldHVybiExO2ZvcihCPTAsRT1rci5uYW1lcy5sZW5ndGg7QjxFO0IrKylpZihrci5uYW1lc1tCXS50ZXN0KHcpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGUodyl7cmV0dXJuIHcudG9TdHJpbmcoKS5zdWJzdHJpbmcoMix3LnRvU3RyaW5nKCkubGVuZ3RoLTIpLnJlcGxhY2UoL1xcLlxcKlxcPyQvLFwiKlwiKX1mdW5jdGlvbiBhKHcpe3JldHVybiB3IGluc3RhbmNlb2YgRXJyb3I/dy5zdGFja3x8dy5tZXNzYWdlOnd9ZnVuY3Rpb24gQygpe2NvbnNvbGUud2FybihcIkluc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC5cIil9cmV0dXJuIGtyLmVuYWJsZShrci5sb2FkKCkpLGtyfXJlLmV4cG9ydHM9VmV9fSksd209T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanNcIihNLHJlKXtFYSgpLE0uZm9ybWF0QXJncz1LZSxNLnNhdmU9b2ksTS5sb2FkPWtyLE0udXNlQ29sb3JzPVZlLE0uc3RvcmFnZT1wcigpLE0uZGVzdHJveT0oKCk9PntsZXQgYXI9ITE7cmV0dXJuKCk9Pnthcnx8KGFyPSEwLGNvbnNvbGUud2FybihcIkluc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC5cIikpfX0pKCksTS5jb2xvcnM9W1wiIzAwMDBDQ1wiLFwiIzAwMDBGRlwiLFwiIzAwMzNDQ1wiLFwiIzAwMzNGRlwiLFwiIzAwNjZDQ1wiLFwiIzAwNjZGRlwiLFwiIzAwOTlDQ1wiLFwiIzAwOTlGRlwiLFwiIzAwQ0MwMFwiLFwiIzAwQ0MzM1wiLFwiIzAwQ0M2NlwiLFwiIzAwQ0M5OVwiLFwiIzAwQ0NDQ1wiLFwiIzAwQ0NGRlwiLFwiIzMzMDBDQ1wiLFwiIzMzMDBGRlwiLFwiIzMzMzNDQ1wiLFwiIzMzMzNGRlwiLFwiIzMzNjZDQ1wiLFwiIzMzNjZGRlwiLFwiIzMzOTlDQ1wiLFwiIzMzOTlGRlwiLFwiIzMzQ0MwMFwiLFwiIzMzQ0MzM1wiLFwiIzMzQ0M2NlwiLFwiIzMzQ0M5OVwiLFwiIzMzQ0NDQ1wiLFwiIzMzQ0NGRlwiLFwiIzY2MDBDQ1wiLFwiIzY2MDBGRlwiLFwiIzY2MzNDQ1wiLFwiIzY2MzNGRlwiLFwiIzY2Q0MwMFwiLFwiIzY2Q0MzM1wiLFwiIzk5MDBDQ1wiLFwiIzk5MDBGRlwiLFwiIzk5MzNDQ1wiLFwiIzk5MzNGRlwiLFwiIzk5Q0MwMFwiLFwiIzk5Q0MzM1wiLFwiI0NDMDAwMFwiLFwiI0NDMDAzM1wiLFwiI0NDMDA2NlwiLFwiI0NDMDA5OVwiLFwiI0NDMDBDQ1wiLFwiI0NDMDBGRlwiLFwiI0NDMzMwMFwiLFwiI0NDMzMzM1wiLFwiI0NDMzM2NlwiLFwiI0NDMzM5OVwiLFwiI0NDMzNDQ1wiLFwiI0NDMzNGRlwiLFwiI0NDNjYwMFwiLFwiI0NDNjYzM1wiLFwiI0NDOTkwMFwiLFwiI0NDOTkzM1wiLFwiI0NDQ0MwMFwiLFwiI0NDQ0MzM1wiLFwiI0ZGMDAwMFwiLFwiI0ZGMDAzM1wiLFwiI0ZGMDA2NlwiLFwiI0ZGMDA5OVwiLFwiI0ZGMDBDQ1wiLFwiI0ZGMDBGRlwiLFwiI0ZGMzMwMFwiLFwiI0ZGMzMzM1wiLFwiI0ZGMzM2NlwiLFwiI0ZGMzM5OVwiLFwiI0ZGMzNDQ1wiLFwiI0ZGMzNGRlwiLFwiI0ZGNjYwMFwiLFwiI0ZGNjYzM1wiLFwiI0ZGOTkwMFwiLFwiI0ZGOTkzM1wiLFwiI0ZGQ0MwMFwiLFwiI0ZGQ0MzM1wiXTtmdW5jdGlvbiBWZSgpe3JldHVybiB0eXBlb2Ygd2luZG93PFwidVwiJiZ3aW5kb3cucHJvY2VzcyYmKHdpbmRvdy5wcm9jZXNzLnR5cGU9PT1cInJlbmRlcmVyXCJ8fHdpbmRvdy5wcm9jZXNzLl9fbndqcyk/ITA6dHlwZW9mIG5hdmlnYXRvcjxcInVcIiYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC8oZWRnZXx0cmlkZW50KVxcLyhcXGQrKS8pPyExOnR5cGVvZiBkb2N1bWVudDxcInVcIiYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlfHx0eXBlb2Ygd2luZG93PFwidVwiJiZ3aW5kb3cuY29uc29sZSYmKHdpbmRvdy5jb25zb2xlLmZpcmVidWd8fHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiYmd2luZG93LmNvbnNvbGUudGFibGUpfHx0eXBlb2YgbmF2aWdhdG9yPFwidVwiJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSYmcGFyc2VJbnQoUmVnRXhwLiQxLDEwKT49MzF8fHR5cGVvZiBuYXZpZ2F0b3I8XCJ1XCImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcXC8oXFxkKykvKX1mdW5jdGlvbiBLZShhcil7aWYoYXJbMF09KHRoaXMudXNlQ29sb3JzP1wiJWNcIjpcIlwiKSt0aGlzLm5hbWVzcGFjZSsodGhpcy51c2VDb2xvcnM/XCIgJWNcIjpcIiBcIikrYXJbMF0rKHRoaXMudXNlQ29sb3JzP1wiJWMgXCI6XCIgXCIpK1wiK1wiK3JlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKSwhdGhpcy51c2VDb2xvcnMpcmV0dXJuO2xldCBrZT1cImNvbG9yOiBcIit0aGlzLmNvbG9yO2FyLnNwbGljZSgxLDAsa2UsXCJjb2xvcjogaW5oZXJpdFwiKTtsZXQgZT0wLGE9MDthclswXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csQz0+e0MhPT1cIiUlXCImJihlKyssQz09PVwiJWNcIiYmKGE9ZSkpfSksYXIuc3BsaWNlKGEsMCxrZSl9TS5sb2c9Y29uc29sZS5kZWJ1Z3x8Y29uc29sZS5sb2d8fCgoKT0+e30pO2Z1bmN0aW9uIG9pKGFyKXt0cnl7YXI/TS5zdG9yYWdlLnNldEl0ZW0oXCJkZWJ1Z1wiLGFyKTpNLnN0b3JhZ2UucmVtb3ZlSXRlbShcImRlYnVnXCIpfWNhdGNoe319ZnVuY3Rpb24ga3IoKXtsZXQgYXI7dHJ5e2FyPU0uc3RvcmFnZS5nZXRJdGVtKFwiZGVidWdcIil9Y2F0Y2h7fXJldHVybiFhciYmdHlwZW9mIEV1PFwidVwiJiZcImVudlwiaW4gRXUmJihhcj1FdS5lbnYuREVCVUcpLGFyfWZ1bmN0aW9uIHByKCl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2V9Y2F0Y2h7fX1yZS5leHBvcnRzPVdqKCkoTSk7dmFye2Zvcm1hdHRlcnM6THJ9PXJlLmV4cG9ydHM7THIuaj1mdW5jdGlvbihhcil7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShhcil9Y2F0Y2goa2Upe3JldHVyblwiW1VuZXhwZWN0ZWRKU09OUGFyc2VFcnJvcl06IFwiK2tlLm1lc3NhZ2V9fX19KSxxaj1PYSh7XCJub2RlX21vZHVsZXMvaXMtZXh0Z2xvYi9pbmRleC5qc1wiKE0scmUpe0VhKCkscmUuZXhwb3J0cz1mdW5jdGlvbihLZSl7aWYodHlwZW9mIEtlIT1cInN0cmluZ1wifHxLZT09PVwiXCIpcmV0dXJuITE7Zm9yKHZhciBvaTtvaT0vKFxcXFwpLnwoW0A/ISsqXVxcKC4qXFwpKS9nLmV4ZWMoS2UpOyl7aWYob2lbMl0pcmV0dXJuITA7S2U9S2Uuc2xpY2Uob2kuaW5kZXgrb2lbMF0ubGVuZ3RoKX1yZXR1cm4hMX19fSksVmo9T2Eoe1wibm9kZV9tb2R1bGVzL2lzLWdsb2IvaW5kZXguanNcIihNLHJlKXtFYSgpO3ZhciBWZT1xaigpLEtlPXtcIntcIjpcIn1cIixcIihcIjpcIilcIixcIltcIjpcIl1cIn0sb2k9ZnVuY3Rpb24ocHIpe2lmKHByWzBdPT09XCIhXCIpcmV0dXJuITA7Zm9yKHZhciBMcj0wLGFyPS0yLGtlPS0yLGU9LTIsYT0tMixDPS0yO0xyPHByLmxlbmd0aDspe2lmKHByW0xyXT09PVwiKlwifHxwcltMcisxXT09PVwiP1wiJiYvW1xcXS4rKV0vLnRlc3QocHJbTHJdKXx8a2UhPT0tMSYmcHJbTHJdPT09XCJbXCImJnByW0xyKzFdIT09XCJdXCImJihrZTxMciYmKGtlPXByLmluZGV4T2YoXCJdXCIsTHIpKSxrZT5MciYmKEM9PT0tMXx8Qz5rZXx8KEM9cHIuaW5kZXhPZihcIlxcXFxcIixMciksQz09PS0xfHxDPmtlKSkpfHxlIT09LTEmJnByW0xyXT09PVwie1wiJiZwcltMcisxXSE9PVwifVwiJiYoZT1wci5pbmRleE9mKFwifVwiLExyKSxlPkxyJiYoQz1wci5pbmRleE9mKFwiXFxcXFwiLExyKSxDPT09LTF8fEM+ZSkpfHxhIT09LTEmJnByW0xyXT09PVwiKFwiJiZwcltMcisxXT09PVwiP1wiJiYvWzohPV0vLnRlc3QocHJbTHIrMl0pJiZwcltMciszXSE9PVwiKVwiJiYoYT1wci5pbmRleE9mKFwiKVwiLExyKSxhPkxyJiYoQz1wci5pbmRleE9mKFwiXFxcXFwiLExyKSxDPT09LTF8fEM+YSkpfHxhciE9PS0xJiZwcltMcl09PT1cIihcIiYmcHJbTHIrMV0hPT1cInxcIiYmKGFyPExyJiYoYXI9cHIuaW5kZXhPZihcInxcIixMcikpLGFyIT09LTEmJnByW2FyKzFdIT09XCIpXCImJihhPXByLmluZGV4T2YoXCIpXCIsYXIpLGE+YXImJihDPXByLmluZGV4T2YoXCJcXFxcXCIsYXIpLEM9PT0tMXx8Qz5hKSkpKXJldHVybiEwO2lmKHByW0xyXT09PVwiXFxcXFwiKXt2YXIgdz1wcltMcisxXTtMcis9Mjt2YXIgQj1LZVt3XTtpZihCKXt2YXIgRT1wci5pbmRleE9mKEIsTHIpO0UhPT0tMSYmKExyPUUrMSl9aWYocHJbTHJdPT09XCIhXCIpcmV0dXJuITB9ZWxzZSBMcisrfXJldHVybiExfSxrcj1mdW5jdGlvbihwcil7aWYocHJbMF09PT1cIiFcIilyZXR1cm4hMDtmb3IodmFyIExyPTA7THI8cHIubGVuZ3RoOyl7aWYoL1sqP3t9KClbXFxdXS8udGVzdChwcltMcl0pKXJldHVybiEwO2lmKHByW0xyXT09PVwiXFxcXFwiKXt2YXIgYXI9cHJbTHIrMV07THIrPTI7dmFyIGtlPUtlW2FyXTtpZihrZSl7dmFyIGU9cHIuaW5kZXhPZihrZSxMcik7ZSE9PS0xJiYoTHI9ZSsxKX1pZihwcltMcl09PT1cIiFcIilyZXR1cm4hMH1lbHNlIExyKyt9cmV0dXJuITF9O3JlLmV4cG9ydHM9ZnVuY3Rpb24oTHIsYXIpe2lmKHR5cGVvZiBMciE9XCJzdHJpbmdcInx8THI9PT1cIlwiKXJldHVybiExO2lmKFZlKExyKSlyZXR1cm4hMDt2YXIga2U9b2k7cmV0dXJuIGFyJiZhci5zdHJpY3Q9PT0hMSYmKGtlPWtyKSxrZShMcil9fX0pLEQxPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvY29uc3RhbnRzLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9XCIyLjAuMFwiLEtlPTI1NixvaT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUnx8OTAwNzE5OTI1NDc0MDk5MSxrcj0xNjtyZS5leHBvcnRzPXtTRU1WRVJfU1BFQ19WRVJTSU9OOlZlLE1BWF9MRU5HVEg6S2UsTUFYX1NBRkVfSU5URUdFUjpvaSxNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIOmtyfX19KSxiMT1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2RlYnVnLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9dHlwZW9mIEV1PT1cIm9iamVjdFwiJiZFdS5lbnYmJkV1LmVudi5OT0RFX0RFQlVHJiYvXFxic2VtdmVyXFxiL2kudGVzdChFdS5lbnYuTk9ERV9ERUJVRyk/ZnVuY3Rpb24oKXtmb3IodmFyIEtlPWFyZ3VtZW50cy5sZW5ndGgsb2k9bmV3IEFycmF5KEtlKSxrcj0wO2tyPEtlO2tyKyspb2lba3JdPWFyZ3VtZW50c1trcl07cmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJTRU1WRVJcIiwuLi5vaSl9OigpPT57fTtyZS5leHBvcnRzPVZlfX0pLHd2PU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvcmUuanNcIihNLHJlKXtFYSgpO3ZhcntNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIOlZlfT1EMSgpLEtlPWIxKCk7TT1yZS5leHBvcnRzPXt9O3ZhciBvaT1NLnJlPVtdLGtyPU0uc3JjPVtdLHByPU0udD17fSxMcj0wLGFyPShrZSxlLGEpPT57bGV0IEM9THIrKztLZShrZSxDLGUpLHByW2tlXT1DLGtyW0NdPWUsb2lbQ109bmV3IFJlZ0V4cChlLGE/XCJnXCI6dm9pZCAwKX07YXIoXCJOVU1FUklDSURFTlRJRklFUlwiLFwiMHxbMS05XVxcXFxkKlwiKSxhcihcIk5VTUVSSUNJREVOVElGSUVSTE9PU0VcIixcIlswLTldK1wiKSxhcihcIk5PTk5VTUVSSUNJREVOVElGSUVSXCIsXCJcXFxcZCpbYS16QS1aLV1bYS16QS1aMC05LV0qXCIpLGFyKFwiTUFJTlZFUlNJT05cIixcIihcIi5jb25jYXQoa3JbcHIuTlVNRVJJQ0lERU5USUZJRVJdLFwiKVxcXFwuKFwiKS5jb25jYXQoa3JbcHIuTlVNRVJJQ0lERU5USUZJRVJdLFwiKVxcXFwuKFwiKS5jb25jYXQoa3JbcHIuTlVNRVJJQ0lERU5USUZJRVJdLFwiKVwiKSksYXIoXCJNQUlOVkVSU0lPTkxPT1NFXCIsXCIoXCIuY29uY2F0KGtyW3ByLk5VTUVSSUNJREVOVElGSUVSTE9PU0VdLFwiKVxcXFwuKFwiKS5jb25jYXQoa3JbcHIuTlVNRVJJQ0lERU5USUZJRVJMT09TRV0sXCIpXFxcXC4oXCIpLmNvbmNhdChrcltwci5OVU1FUklDSURFTlRJRklFUkxPT1NFXSxcIilcIikpLGFyKFwiUFJFUkVMRUFTRUlERU5USUZJRVJcIixcIig/OlwiLmNvbmNhdChrcltwci5OVU1FUklDSURFTlRJRklFUl0sXCJ8XCIpLmNvbmNhdChrcltwci5OT05OVU1FUklDSURFTlRJRklFUl0sXCIpXCIpKSxhcihcIlBSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VcIixcIig/OlwiLmNvbmNhdChrcltwci5OVU1FUklDSURFTlRJRklFUkxPT1NFXSxcInxcIikuY29uY2F0KGtyW3ByLk5PTk5VTUVSSUNJREVOVElGSUVSXSxcIilcIikpLGFyKFwiUFJFUkVMRUFTRVwiLFwiKD86LShcIi5jb25jYXQoa3JbcHIuUFJFUkVMRUFTRUlERU5USUZJRVJdLFwiKD86XFxcXC5cIikuY29uY2F0KGtyW3ByLlBSRVJFTEVBU0VJREVOVElGSUVSXSxcIikqKSlcIikpLGFyKFwiUFJFUkVMRUFTRUxPT1NFXCIsXCIoPzotPyhcIi5jb25jYXQoa3JbcHIuUFJFUkVMRUFTRUlERU5USUZJRVJMT09TRV0sXCIoPzpcXFxcLlwiKS5jb25jYXQoa3JbcHIuUFJFUkVMRUFTRUlERU5USUZJRVJMT09TRV0sXCIpKikpXCIpKSxhcihcIkJVSUxESURFTlRJRklFUlwiLFwiWzAtOUEtWmEtei1dK1wiKSxhcihcIkJVSUxEXCIsXCIoPzpcXFxcKyhcIi5jb25jYXQoa3JbcHIuQlVJTERJREVOVElGSUVSXSxcIig/OlxcXFwuXCIpLmNvbmNhdChrcltwci5CVUlMRElERU5USUZJRVJdLFwiKSopKVwiKSksYXIoXCJGVUxMUExBSU5cIixcInY/XCIuY29uY2F0KGtyW3ByLk1BSU5WRVJTSU9OXSkuY29uY2F0KGtyW3ByLlBSRVJFTEVBU0VdLFwiP1wiKS5jb25jYXQoa3JbcHIuQlVJTERdLFwiP1wiKSksYXIoXCJGVUxMXCIsXCJeXCIuY29uY2F0KGtyW3ByLkZVTExQTEFJTl0sXCIkXCIpKSxhcihcIkxPT1NFUExBSU5cIixcIlt2PVxcXFxzXSpcIi5jb25jYXQoa3JbcHIuTUFJTlZFUlNJT05MT09TRV0pLmNvbmNhdChrcltwci5QUkVSRUxFQVNFTE9PU0VdLFwiP1wiKS5jb25jYXQoa3JbcHIuQlVJTERdLFwiP1wiKSksYXIoXCJMT09TRVwiLFwiXlwiLmNvbmNhdChrcltwci5MT09TRVBMQUlOXSxcIiRcIikpLGFyKFwiR1RMVFwiLFwiKCg/Ojx8Pik/PT8pXCIpLGFyKFwiWFJBTkdFSURFTlRJRklFUkxPT1NFXCIsXCJcIi5jb25jYXQoa3JbcHIuTlVNRVJJQ0lERU5USUZJRVJMT09TRV0sXCJ8eHxYfFxcXFwqXCIpKSxhcihcIlhSQU5HRUlERU5USUZJRVJcIixcIlwiLmNvbmNhdChrcltwci5OVU1FUklDSURFTlRJRklFUl0sXCJ8eHxYfFxcXFwqXCIpKSxhcihcIlhSQU5HRVBMQUlOXCIsXCJbdj1cXFxcc10qKFwiLmNvbmNhdChrcltwci5YUkFOR0VJREVOVElGSUVSXSxcIikoPzpcXFxcLihcIikuY29uY2F0KGtyW3ByLlhSQU5HRUlERU5USUZJRVJdLFwiKSg/OlxcXFwuKFwiKS5jb25jYXQoa3JbcHIuWFJBTkdFSURFTlRJRklFUl0sXCIpKD86XCIpLmNvbmNhdChrcltwci5QUkVSRUxFQVNFXSxcIik/XCIpLmNvbmNhdChrcltwci5CVUlMRF0sXCI/KT8pP1wiKSksYXIoXCJYUkFOR0VQTEFJTkxPT1NFXCIsXCJbdj1cXFxcc10qKFwiLmNvbmNhdChrcltwci5YUkFOR0VJREVOVElGSUVSTE9PU0VdLFwiKSg/OlxcXFwuKFwiKS5jb25jYXQoa3JbcHIuWFJBTkdFSURFTlRJRklFUkxPT1NFXSxcIikoPzpcXFxcLihcIikuY29uY2F0KGtyW3ByLlhSQU5HRUlERU5USUZJRVJMT09TRV0sXCIpKD86XCIpLmNvbmNhdChrcltwci5QUkVSRUxFQVNFTE9PU0VdLFwiKT9cIikuY29uY2F0KGtyW3ByLkJVSUxEXSxcIj8pPyk/XCIpKSxhcihcIlhSQU5HRVwiLFwiXlwiLmNvbmNhdChrcltwci5HVExUXSxcIlxcXFxzKlwiKS5jb25jYXQoa3JbcHIuWFJBTkdFUExBSU5dLFwiJFwiKSksYXIoXCJYUkFOR0VMT09TRVwiLFwiXlwiLmNvbmNhdChrcltwci5HVExUXSxcIlxcXFxzKlwiKS5jb25jYXQoa3JbcHIuWFJBTkdFUExBSU5MT09TRV0sXCIkXCIpKSxhcihcIkNPRVJDRVwiLFwiKF58W15cXFxcZF0pKFxcXFxkezEsXCIuY29uY2F0KFZlLFwifSkoPzpcXFxcLihcXFxcZHsxLFwiKS5jb25jYXQoVmUsXCJ9KSk/KD86XFxcXC4oXFxcXGR7MSxcIikuY29uY2F0KFZlLFwifSkpPyg/OiR8W15cXFxcZF0pXCIpKSxhcihcIkNPRVJDRVJUTFwiLGtyW3ByLkNPRVJDRV0sITApLGFyKFwiTE9ORVRJTERFXCIsXCIoPzp+Pj8pXCIpLGFyKFwiVElMREVUUklNXCIsXCIoXFxcXHMqKVwiLmNvbmNhdChrcltwci5MT05FVElMREVdLFwiXFxcXHMrXCIpLCEwKSxNLnRpbGRlVHJpbVJlcGxhY2U9XCIkMX5cIixhcihcIlRJTERFXCIsXCJeXCIuY29uY2F0KGtyW3ByLkxPTkVUSUxERV0pLmNvbmNhdChrcltwci5YUkFOR0VQTEFJTl0sXCIkXCIpKSxhcihcIlRJTERFTE9PU0VcIixcIl5cIi5jb25jYXQoa3JbcHIuTE9ORVRJTERFXSkuY29uY2F0KGtyW3ByLlhSQU5HRVBMQUlOTE9PU0VdLFwiJFwiKSksYXIoXCJMT05FQ0FSRVRcIixcIig/OlxcXFxeKVwiKSxhcihcIkNBUkVUVFJJTVwiLFwiKFxcXFxzKilcIi5jb25jYXQoa3JbcHIuTE9ORUNBUkVUXSxcIlxcXFxzK1wiKSwhMCksTS5jYXJldFRyaW1SZXBsYWNlPVwiJDFeXCIsYXIoXCJDQVJFVFwiLFwiXlwiLmNvbmNhdChrcltwci5MT05FQ0FSRVRdKS5jb25jYXQoa3JbcHIuWFJBTkdFUExBSU5dLFwiJFwiKSksYXIoXCJDQVJFVExPT1NFXCIsXCJeXCIuY29uY2F0KGtyW3ByLkxPTkVDQVJFVF0pLmNvbmNhdChrcltwci5YUkFOR0VQTEFJTkxPT1NFXSxcIiRcIikpLGFyKFwiQ09NUEFSQVRPUkxPT1NFXCIsXCJeXCIuY29uY2F0KGtyW3ByLkdUTFRdLFwiXFxcXHMqKFwiKS5jb25jYXQoa3JbcHIuTE9PU0VQTEFJTl0sXCIpJHxeJFwiKSksYXIoXCJDT01QQVJBVE9SXCIsXCJeXCIuY29uY2F0KGtyW3ByLkdUTFRdLFwiXFxcXHMqKFwiKS5jb25jYXQoa3JbcHIuRlVMTFBMQUlOXSxcIikkfF4kXCIpKSxhcihcIkNPTVBBUkFUT1JUUklNXCIsXCIoXFxcXHMqKVwiLmNvbmNhdChrcltwci5HVExUXSxcIlxcXFxzKihcIikuY29uY2F0KGtyW3ByLkxPT1NFUExBSU5dLFwifFwiKS5jb25jYXQoa3JbcHIuWFJBTkdFUExBSU5dLFwiKVwiKSwhMCksTS5jb21wYXJhdG9yVHJpbVJlcGxhY2U9XCIkMSQyJDNcIixhcihcIkhZUEhFTlJBTkdFXCIsXCJeXFxcXHMqKFwiLmNvbmNhdChrcltwci5YUkFOR0VQTEFJTl0sXCIpXFxcXHMrLVxcXFxzKyhcIikuY29uY2F0KGtyW3ByLlhSQU5HRVBMQUlOXSxcIilcXFxccyokXCIpKSxhcihcIkhZUEhFTlJBTkdFTE9PU0VcIixcIl5cXFxccyooXCIuY29uY2F0KGtyW3ByLlhSQU5HRVBMQUlOTE9PU0VdLFwiKVxcXFxzKy1cXFxccysoXCIpLmNvbmNhdChrcltwci5YUkFOR0VQTEFJTkxPT1NFXSxcIilcXFxccyokXCIpKSxhcihcIlNUQVJcIixcIig8fD4pPz0/XFxcXHMqXFxcXCpcIiksYXIoXCJHVEUwXCIsXCJeXFxcXHMqPj1cXFxccyowXFxcXC4wXFxcXC4wXFxcXHMqJFwiKSxhcihcIkdURTBQUkVcIixcIl5cXFxccyo+PVxcXFxzKjBcXFxcLjBcXFxcLjAtMFxcXFxzKiRcIil9fSksUzE9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9wYXJzZS1vcHRpb25zLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9W1wiaW5jbHVkZVByZXJlbGVhc2VcIixcImxvb3NlXCIsXCJydGxcIl0sS2U9b2k9Pm9pP3R5cGVvZiBvaSE9XCJvYmplY3RcIj97bG9vc2U6ITB9OlZlLmZpbHRlcihrcj0+b2lba3JdKS5yZWR1Y2UoKGtyLHByKT0+KGtyW3ByXT0hMCxrcikse30pOnt9O3JlLmV4cG9ydHM9S2V9fSksQlQ9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9pZGVudGlmaWVycy5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPS9eWzAtOV0rJC8sS2U9KGtyLHByKT0+e2xldCBMcj1WZS50ZXN0KGtyKSxhcj1WZS50ZXN0KHByKTtyZXR1cm4gTHImJmFyJiYoa3I9K2tyLHByPStwciksa3I9PT1wcj8wOkxyJiYhYXI/LTE6YXImJiFMcj8xOmtyPHByPy0xOjF9LG9pPShrcixwcik9PktlKHByLGtyKTtyZS5leHBvcnRzPXtjb21wYXJlSWRlbnRpZmllcnM6S2UscmNvbXBhcmVJZGVudGlmaWVyczpvaX19fSksTGY9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9jbGFzc2VzL3NlbXZlci5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPWIxKCkse01BWF9MRU5HVEg6S2UsTUFYX1NBRkVfSU5URUdFUjpvaX09RDEoKSx7cmU6a3IsdDpwcn09d3YoKSxMcj1TMSgpLHtjb21wYXJlSWRlbnRpZmllcnM6YXJ9PUJUKCksa2U9Y2xhc3N7Y29uc3RydWN0b3IoZSxhKXtpZihhPUxyKGEpLGUgaW5zdGFuY2VvZiBrZSl7aWYoZS5sb29zZT09PSEhYS5sb29zZSYmZS5pbmNsdWRlUHJlcmVsZWFzZT09PSEhYS5pbmNsdWRlUHJlcmVsZWFzZSlyZXR1cm4gZTtlPWUudmVyc2lvbn1lbHNlIGlmKHR5cGVvZiBlIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIFZlcnNpb246IFwiLmNvbmNhdChlKSk7aWYoZS5sZW5ndGg+S2UpdGhyb3cgbmV3IFR5cGVFcnJvcihcInZlcnNpb24gaXMgbG9uZ2VyIHRoYW4gXCIuY29uY2F0KEtlLFwiIGNoYXJhY3RlcnNcIikpO1ZlKFwiU2VtVmVyXCIsZSxhKSx0aGlzLm9wdGlvbnM9YSx0aGlzLmxvb3NlPSEhYS5sb29zZSx0aGlzLmluY2x1ZGVQcmVyZWxlYXNlPSEhYS5pbmNsdWRlUHJlcmVsZWFzZTtsZXQgQz1lLnRyaW0oKS5tYXRjaChhLmxvb3NlP2tyW3ByLkxPT1NFXTprcltwci5GVUxMXSk7aWYoIUMpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgVmVyc2lvbjogXCIuY29uY2F0KGUpKTtpZih0aGlzLnJhdz1lLHRoaXMubWFqb3I9K0NbMV0sdGhpcy5taW5vcj0rQ1syXSx0aGlzLnBhdGNoPStDWzNdLHRoaXMubWFqb3I+b2l8fHRoaXMubWFqb3I8MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBtYWpvciB2ZXJzaW9uXCIpO2lmKHRoaXMubWlub3I+b2l8fHRoaXMubWlub3I8MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBtaW5vciB2ZXJzaW9uXCIpO2lmKHRoaXMucGF0Y2g+b2l8fHRoaXMucGF0Y2g8MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBwYXRjaCB2ZXJzaW9uXCIpO0NbNF0/dGhpcy5wcmVyZWxlYXNlPUNbNF0uc3BsaXQoXCIuXCIpLm1hcCh3PT57aWYoL15bMC05XSskLy50ZXN0KHcpKXtsZXQgQj0rdztpZihCPj0wJiZCPG9pKXJldHVybiBCfXJldHVybiB3fSk6dGhpcy5wcmVyZWxlYXNlPVtdLHRoaXMuYnVpbGQ9Q1s1XT9DWzVdLnNwbGl0KFwiLlwiKTpbXSx0aGlzLmZvcm1hdCgpfWZvcm1hdCgpe3JldHVybiB0aGlzLnZlcnNpb249XCJcIi5jb25jYXQodGhpcy5tYWpvcixcIi5cIikuY29uY2F0KHRoaXMubWlub3IsXCIuXCIpLmNvbmNhdCh0aGlzLnBhdGNoKSx0aGlzLnByZXJlbGVhc2UubGVuZ3RoJiYodGhpcy52ZXJzaW9uKz1cIi1cIi5jb25jYXQodGhpcy5wcmVyZWxlYXNlLmpvaW4oXCIuXCIpKSksdGhpcy52ZXJzaW9ufXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudmVyc2lvbn1jb21wYXJlKGUpe2lmKFZlKFwiU2VtVmVyLmNvbXBhcmVcIix0aGlzLnZlcnNpb24sdGhpcy5vcHRpb25zLGUpLCEoZSBpbnN0YW5jZW9mIGtlKSl7aWYodHlwZW9mIGU9PVwic3RyaW5nXCImJmU9PT10aGlzLnZlcnNpb24pcmV0dXJuIDA7ZT1uZXcga2UoZSx0aGlzLm9wdGlvbnMpfXJldHVybiBlLnZlcnNpb249PT10aGlzLnZlcnNpb24/MDp0aGlzLmNvbXBhcmVNYWluKGUpfHx0aGlzLmNvbXBhcmVQcmUoZSl9Y29tcGFyZU1haW4oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBrZXx8KGU9bmV3IGtlKGUsdGhpcy5vcHRpb25zKSksYXIodGhpcy5tYWpvcixlLm1ham9yKXx8YXIodGhpcy5taW5vcixlLm1pbm9yKXx8YXIodGhpcy5wYXRjaCxlLnBhdGNoKX1jb21wYXJlUHJlKGUpe2lmKGUgaW5zdGFuY2VvZiBrZXx8KGU9bmV3IGtlKGUsdGhpcy5vcHRpb25zKSksdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCYmIWUucHJlcmVsZWFzZS5sZW5ndGgpcmV0dXJuLTE7aWYoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGgmJmUucHJlcmVsZWFzZS5sZW5ndGgpcmV0dXJuIDE7aWYoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGgmJiFlLnByZXJlbGVhc2UubGVuZ3RoKXJldHVybiAwO2xldCBhPTA7ZG97bGV0IEM9dGhpcy5wcmVyZWxlYXNlW2FdLHc9ZS5wcmVyZWxlYXNlW2FdO2lmKFZlKFwicHJlcmVsZWFzZSBjb21wYXJlXCIsYSxDLHcpLEM9PT12b2lkIDAmJnc9PT12b2lkIDApcmV0dXJuIDA7aWYodz09PXZvaWQgMClyZXR1cm4gMTtpZihDPT09dm9pZCAwKXJldHVybi0xO2lmKEM9PT13KWNvbnRpbnVlO3JldHVybiBhcihDLHcpfXdoaWxlKCsrYSl9Y29tcGFyZUJ1aWxkKGUpe2UgaW5zdGFuY2VvZiBrZXx8KGU9bmV3IGtlKGUsdGhpcy5vcHRpb25zKSk7bGV0IGE9MDtkb3tsZXQgQz10aGlzLmJ1aWxkW2FdLHc9ZS5idWlsZFthXTtpZihWZShcInByZXJlbGVhc2UgY29tcGFyZVwiLGEsQyx3KSxDPT09dm9pZCAwJiZ3PT09dm9pZCAwKXJldHVybiAwO2lmKHc9PT12b2lkIDApcmV0dXJuIDE7aWYoQz09PXZvaWQgMClyZXR1cm4tMTtpZihDPT09dyljb250aW51ZTtyZXR1cm4gYXIoQyx3KX13aGlsZSgrK2EpfWluYyhlLGEpe3N3aXRjaChlKXtjYXNlXCJwcmVtYWpvclwiOnRoaXMucHJlcmVsZWFzZS5sZW5ndGg9MCx0aGlzLnBhdGNoPTAsdGhpcy5taW5vcj0wLHRoaXMubWFqb3IrKyx0aGlzLmluYyhcInByZVwiLGEpO2JyZWFrO2Nhc2VcInByZW1pbm9yXCI6dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD0wLHRoaXMucGF0Y2g9MCx0aGlzLm1pbm9yKyssdGhpcy5pbmMoXCJwcmVcIixhKTticmVhaztjYXNlXCJwcmVwYXRjaFwiOnRoaXMucHJlcmVsZWFzZS5sZW5ndGg9MCx0aGlzLmluYyhcInBhdGNoXCIsYSksdGhpcy5pbmMoXCJwcmVcIixhKTticmVhaztjYXNlXCJwcmVyZWxlYXNlXCI6dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD09PTAmJnRoaXMuaW5jKFwicGF0Y2hcIixhKSx0aGlzLmluYyhcInByZVwiLGEpO2JyZWFrO2Nhc2VcIm1ham9yXCI6KHRoaXMubWlub3IhPT0wfHx0aGlzLnBhdGNoIT09MHx8dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD09PTApJiZ0aGlzLm1ham9yKyssdGhpcy5taW5vcj0wLHRoaXMucGF0Y2g9MCx0aGlzLnByZXJlbGVhc2U9W107YnJlYWs7Y2FzZVwibWlub3JcIjoodGhpcy5wYXRjaCE9PTB8fHRoaXMucHJlcmVsZWFzZS5sZW5ndGg9PT0wKSYmdGhpcy5taW5vcisrLHRoaXMucGF0Y2g9MCx0aGlzLnByZXJlbGVhc2U9W107YnJlYWs7Y2FzZVwicGF0Y2hcIjp0aGlzLnByZXJlbGVhc2UubGVuZ3RoPT09MCYmdGhpcy5wYXRjaCsrLHRoaXMucHJlcmVsZWFzZT1bXTticmVhaztjYXNlXCJwcmVcIjppZih0aGlzLnByZXJlbGVhc2UubGVuZ3RoPT09MCl0aGlzLnByZXJlbGVhc2U9WzBdO2Vsc2V7bGV0IEM9dGhpcy5wcmVyZWxlYXNlLmxlbmd0aDtmb3IoOy0tQz49MDspdHlwZW9mIHRoaXMucHJlcmVsZWFzZVtDXT09XCJudW1iZXJcIiYmKHRoaXMucHJlcmVsZWFzZVtDXSsrLEM9LTIpO0M9PT0tMSYmdGhpcy5wcmVyZWxlYXNlLnB1c2goMCl9YSYmKGFyKHRoaXMucHJlcmVsZWFzZVswXSxhKT09PTA/aXNOYU4odGhpcy5wcmVyZWxlYXNlWzFdKSYmKHRoaXMucHJlcmVsZWFzZT1bYSwwXSk6dGhpcy5wcmVyZWxlYXNlPVthLDBdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcImludmFsaWQgaW5jcmVtZW50IGFyZ3VtZW50OiBcIi5jb25jYXQoZSkpfXJldHVybiB0aGlzLmZvcm1hdCgpLHRoaXMucmF3PXRoaXMudmVyc2lvbix0aGlzfX07cmUuZXhwb3J0cz1rZX19KSxPdj1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wYXJzZS5qc1wiKE0scmUpe0VhKCk7dmFye01BWF9MRU5HVEg6VmV9PUQxKCkse3JlOktlLHQ6b2l9PXd2KCksa3I9TGYoKSxwcj1TMSgpLExyPShhcixrZSk9PntpZihrZT1wcihrZSksYXIgaW5zdGFuY2VvZiBrcilyZXR1cm4gYXI7aWYodHlwZW9mIGFyIT1cInN0cmluZ1wifHxhci5sZW5ndGg+VmV8fCEoa2UubG9vc2U/S2Vbb2kuTE9PU0VdOktlW29pLkZVTExdKS50ZXN0KGFyKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIG5ldyBrcihhcixrZSl9Y2F0Y2h7cmV0dXJuIG51bGx9fTtyZS5leHBvcnRzPUxyfX0pLEtqPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3ZhbGlkLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9T3YoKSxLZT0ob2ksa3IpPT57bGV0IHByPVZlKG9pLGtyKTtyZXR1cm4gcHI/cHIudmVyc2lvbjpudWxsfTtyZS5leHBvcnRzPUtlfX0pLEdqPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NsZWFuLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9T3YoKSxLZT0ob2ksa3IpPT57bGV0IHByPVZlKG9pLnRyaW0oKS5yZXBsYWNlKC9eWz12XSsvLFwiXCIpLGtyKTtyZXR1cm4gcHI/cHIudmVyc2lvbjpudWxsfTtyZS5leHBvcnRzPUtlfX0pLEhqPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2luYy5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPUxmKCksS2U9KG9pLGtyLHByLExyKT0+e3R5cGVvZiBwcj09XCJzdHJpbmdcIiYmKExyPXByLHByPXZvaWQgMCk7dHJ5e3JldHVybiBuZXcgVmUob2kgaW5zdGFuY2VvZiBWZT9vaS52ZXJzaW9uOm9pLHByKS5pbmMoa3IsTHIpLnZlcnNpb259Y2F0Y2h7cmV0dXJuIG51bGx9fTtyZS5leHBvcnRzPUtlfX0pLG5kPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1MZigpLEtlPShvaSxrcixwcik9Pm5ldyBWZShvaSxwcikuY29tcGFyZShuZXcgVmUoa3IscHIpKTtyZS5leHBvcnRzPUtlfX0pLHFUPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2VxLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9bmQoKSxLZT0ob2ksa3IscHIpPT5WZShvaSxrcixwcik9PT0wO3JlLmV4cG9ydHM9S2V9fSksWGo9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvZGlmZi5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPU92KCksS2U9cVQoKSxvaT0oa3IscHIpPT57aWYoS2Uoa3IscHIpKXJldHVybiBudWxsO3tsZXQgTHI9VmUoa3IpLGFyPVZlKHByKSxrZT1Mci5wcmVyZWxlYXNlLmxlbmd0aHx8YXIucHJlcmVsZWFzZS5sZW5ndGgsZT1rZT9cInByZVwiOlwiXCIsYT1rZT9cInByZXJlbGVhc2VcIjpcIlwiO2ZvcihsZXQgQyBpbiBMcilpZigoQz09PVwibWFqb3JcInx8Qz09PVwibWlub3JcInx8Qz09PVwicGF0Y2hcIikmJkxyW0NdIT09YXJbQ10pcmV0dXJuIGUrQztyZXR1cm4gYX19O3JlLmV4cG9ydHM9b2l9fSksUWo9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbWFqb3IuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1MZigpLEtlPShvaSxrcik9Pm5ldyBWZShvaSxrcikubWFqb3I7cmUuZXhwb3J0cz1LZX19KSxZaj1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9taW5vci5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPUxmKCksS2U9KG9pLGtyKT0+bmV3IFZlKG9pLGtyKS5taW5vcjtyZS5leHBvcnRzPUtlfX0pLCRqPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3BhdGNoLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9TGYoKSxLZT0ob2ksa3IpPT5uZXcgVmUob2ksa3IpLnBhdGNoO3JlLmV4cG9ydHM9S2V9fSksWmo9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcHJlcmVsZWFzZS5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPU92KCksS2U9KG9pLGtyKT0+e2xldCBwcj1WZShvaSxrcik7cmV0dXJuIHByJiZwci5wcmVyZWxlYXNlLmxlbmd0aD9wci5wcmVyZWxlYXNlOm51bGx9O3JlLmV4cG9ydHM9S2V9fSksZVU9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcmNvbXBhcmUuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1uZCgpLEtlPShvaSxrcixwcik9PlZlKGtyLG9pLHByKTtyZS5leHBvcnRzPUtlfX0pLHJVPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUtbG9vc2UuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1uZCgpLEtlPShvaSxrcik9PlZlKG9pLGtyLCEwKTtyZS5leHBvcnRzPUtlfX0pLFZUPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUtYnVpbGQuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1MZigpLEtlPShvaSxrcixwcik9PntsZXQgTHI9bmV3IFZlKG9pLHByKSxhcj1uZXcgVmUoa3IscHIpO3JldHVybiBMci5jb21wYXJlKGFyKXx8THIuY29tcGFyZUJ1aWxkKGFyKX07cmUuZXhwb3J0cz1LZX19KSxpVT1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zb3J0LmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9VlQoKSxLZT0ob2ksa3IpPT5vaS5zb3J0KChwcixMcik9PlZlKHByLExyLGtyKSk7cmUuZXhwb3J0cz1LZX19KSx0VT1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yc29ydC5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPVZUKCksS2U9KG9pLGtyKT0+b2kuc29ydCgocHIsTHIpPT5WZShMcixwcixrcikpO3JlLmV4cG9ydHM9S2V9fSksVDE9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvZ3QuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1uZCgpLEtlPShvaSxrcixwcik9PlZlKG9pLGtyLHByKT4wO3JlLmV4cG9ydHM9S2V9fSksS1Q9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbHQuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1uZCgpLEtlPShvaSxrcixwcik9PlZlKG9pLGtyLHByKTwwO3JlLmV4cG9ydHM9S2V9fSksSjQ9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbmVxLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9bmQoKSxLZT0ob2ksa3IscHIpPT5WZShvaSxrcixwcikhPT0wO3JlLmV4cG9ydHM9S2V9fSksR1Q9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvZ3RlLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9bmQoKSxLZT0ob2ksa3IscHIpPT5WZShvaSxrcixwcik+PTA7cmUuZXhwb3J0cz1LZX19KSxIVD1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdGUuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1uZCgpLEtlPShvaSxrcixwcik9PlZlKG9pLGtyLHByKTw9MDtyZS5leHBvcnRzPUtlfX0pLGo0PU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NtcC5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPXFUKCksS2U9SjQoKSxvaT1UMSgpLGtyPUdUKCkscHI9S1QoKSxMcj1IVCgpLGFyPShrZSxlLGEsQyk9Pntzd2l0Y2goZSl7Y2FzZVwiPT09XCI6cmV0dXJuIHR5cGVvZiBrZT09XCJvYmplY3RcIiYmKGtlPWtlLnZlcnNpb24pLHR5cGVvZiBhPT1cIm9iamVjdFwiJiYoYT1hLnZlcnNpb24pLGtlPT09YTtjYXNlXCIhPT1cIjpyZXR1cm4gdHlwZW9mIGtlPT1cIm9iamVjdFwiJiYoa2U9a2UudmVyc2lvbiksdHlwZW9mIGE9PVwib2JqZWN0XCImJihhPWEudmVyc2lvbiksa2UhPT1hO2Nhc2VcIlwiOmNhc2VcIj1cIjpjYXNlXCI9PVwiOnJldHVybiBWZShrZSxhLEMpO2Nhc2VcIiE9XCI6cmV0dXJuIEtlKGtlLGEsQyk7Y2FzZVwiPlwiOnJldHVybiBvaShrZSxhLEMpO2Nhc2VcIj49XCI6cmV0dXJuIGtyKGtlLGEsQyk7Y2FzZVwiPFwiOnJldHVybiBwcihrZSxhLEMpO2Nhc2VcIjw9XCI6cmV0dXJuIExyKGtlLGEsQyk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBvcGVyYXRvcjogXCIuY29uY2F0KGUpKX19O3JlLmV4cG9ydHM9YXJ9fSksYVU9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29lcmNlLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9TGYoKSxLZT1PdigpLHtyZTpvaSx0OmtyfT13digpLHByPShMcixhcik9PntpZihMciBpbnN0YW5jZW9mIFZlKXJldHVybiBMcjtpZih0eXBlb2YgTHI9PVwibnVtYmVyXCImJihMcj1TdHJpbmcoTHIpKSx0eXBlb2YgTHIhPVwic3RyaW5nXCIpcmV0dXJuIG51bGw7YXI9YXJ8fHt9O2xldCBrZT1udWxsO2lmKCFhci5ydGwpa2U9THIubWF0Y2gob2lba3IuQ09FUkNFXSk7ZWxzZXtsZXQgZTtmb3IoOyhlPW9pW2tyLkNPRVJDRVJUTF0uZXhlYyhMcikpJiYoIWtlfHxrZS5pbmRleCtrZVswXS5sZW5ndGghPT1Mci5sZW5ndGgpOykoIWtlfHxlLmluZGV4K2VbMF0ubGVuZ3RoIT09a2UuaW5kZXgra2VbMF0ubGVuZ3RoKSYmKGtlPWUpLG9pW2tyLkNPRVJDRVJUTF0ubGFzdEluZGV4PWUuaW5kZXgrZVsxXS5sZW5ndGgrZVsyXS5sZW5ndGg7b2lba3IuQ09FUkNFUlRMXS5sYXN0SW5kZXg9LTF9cmV0dXJuIGtlPT09bnVsbD9udWxsOktlKFwiXCIuY29uY2F0KGtlWzJdLFwiLlwiKS5jb25jYXQoa2VbM118fFwiMFwiLFwiLlwiKS5jb25jYXQoa2VbNF18fFwiMFwiKSxhcil9O3JlLmV4cG9ydHM9cHJ9fSksblU9T2Eoe1wibm9kZV9tb2R1bGVzL3lhbGxpc3QvaXRlcmF0b3IuanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpLHJlLmV4cG9ydHM9ZnVuY3Rpb24oVmUpe1ZlLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKigpe2ZvcihsZXQgS2U9dGhpcy5oZWFkO0tlO0tlPUtlLm5leHQpeWllbGQgS2UudmFsdWV9fX19KSxvVT1PYSh7XCJub2RlX21vZHVsZXMveWFsbGlzdC95YWxsaXN0LmpzXCIoTSxyZSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxyZS5leHBvcnRzPVZlLFZlLk5vZGU9cHIsVmUuY3JlYXRlPVZlO2Z1bmN0aW9uIFZlKExyKXt2YXIgYXI9dGhpcztpZihhciBpbnN0YW5jZW9mIFZlfHwoYXI9bmV3IFZlKSxhci50YWlsPW51bGwsYXIuaGVhZD1udWxsLGFyLmxlbmd0aD0wLExyJiZ0eXBlb2YgTHIuZm9yRWFjaD09XCJmdW5jdGlvblwiKUxyLmZvckVhY2goZnVuY3Rpb24oYSl7YXIucHVzaChhKX0pO2Vsc2UgaWYoYXJndW1lbnRzLmxlbmd0aD4wKWZvcih2YXIga2U9MCxlPWFyZ3VtZW50cy5sZW5ndGg7a2U8ZTtrZSsrKWFyLnB1c2goYXJndW1lbnRzW2tlXSk7cmV0dXJuIGFyfVZlLnByb3RvdHlwZS5yZW1vdmVOb2RlPWZ1bmN0aW9uKExyKXtpZihMci5saXN0IT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoXCJyZW1vdmluZyBub2RlIHdoaWNoIGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIGxpc3RcIik7dmFyIGFyPUxyLm5leHQsa2U9THIucHJldjtyZXR1cm4gYXImJihhci5wcmV2PWtlKSxrZSYmKGtlLm5leHQ9YXIpLExyPT09dGhpcy5oZWFkJiYodGhpcy5oZWFkPWFyKSxMcj09PXRoaXMudGFpbCYmKHRoaXMudGFpbD1rZSksTHIubGlzdC5sZW5ndGgtLSxMci5uZXh0PW51bGwsTHIucHJldj1udWxsLExyLmxpc3Q9bnVsbCxhcn0sVmUucHJvdG90eXBlLnVuc2hpZnROb2RlPWZ1bmN0aW9uKExyKXtpZihMciE9PXRoaXMuaGVhZCl7THIubGlzdCYmTHIubGlzdC5yZW1vdmVOb2RlKExyKTt2YXIgYXI9dGhpcy5oZWFkO0xyLmxpc3Q9dGhpcyxMci5uZXh0PWFyLGFyJiYoYXIucHJldj1MciksdGhpcy5oZWFkPUxyLHRoaXMudGFpbHx8KHRoaXMudGFpbD1MciksdGhpcy5sZW5ndGgrK319LFZlLnByb3RvdHlwZS5wdXNoTm9kZT1mdW5jdGlvbihMcil7aWYoTHIhPT10aGlzLnRhaWwpe0xyLmxpc3QmJkxyLmxpc3QucmVtb3ZlTm9kZShMcik7dmFyIGFyPXRoaXMudGFpbDtMci5saXN0PXRoaXMsTHIucHJldj1hcixhciYmKGFyLm5leHQ9THIpLHRoaXMudGFpbD1Mcix0aGlzLmhlYWR8fCh0aGlzLmhlYWQ9THIpLHRoaXMubGVuZ3RoKyt9fSxWZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgTHI9MCxhcj1hcmd1bWVudHMubGVuZ3RoO0xyPGFyO0xyKyspb2kodGhpcyxhcmd1bWVudHNbTHJdKTtyZXR1cm4gdGhpcy5sZW5ndGh9LFZlLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKCl7Zm9yKHZhciBMcj0wLGFyPWFyZ3VtZW50cy5sZW5ndGg7THI8YXI7THIrKylrcih0aGlzLGFyZ3VtZW50c1tMcl0pO3JldHVybiB0aGlzLmxlbmd0aH0sVmUucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe2lmKCEhdGhpcy50YWlsKXt2YXIgTHI9dGhpcy50YWlsLnZhbHVlO3JldHVybiB0aGlzLnRhaWw9dGhpcy50YWlsLnByZXYsdGhpcy50YWlsP3RoaXMudGFpbC5uZXh0PW51bGw6dGhpcy5oZWFkPW51bGwsdGhpcy5sZW5ndGgtLSxMcn19LFZlLnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbigpe2lmKCEhdGhpcy5oZWFkKXt2YXIgTHI9dGhpcy5oZWFkLnZhbHVlO3JldHVybiB0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQsdGhpcy5oZWFkP3RoaXMuaGVhZC5wcmV2PW51bGw6dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGgtLSxMcn19LFZlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKExyLGFyKXthcj1hcnx8dGhpcztmb3IodmFyIGtlPXRoaXMuaGVhZCxlPTA7a2UhPT1udWxsO2UrKylMci5jYWxsKGFyLGtlLnZhbHVlLGUsdGhpcyksa2U9a2UubmV4dH0sVmUucHJvdG90eXBlLmZvckVhY2hSZXZlcnNlPWZ1bmN0aW9uKExyLGFyKXthcj1hcnx8dGhpcztmb3IodmFyIGtlPXRoaXMudGFpbCxlPXRoaXMubGVuZ3RoLTE7a2UhPT1udWxsO2UtLSlMci5jYWxsKGFyLGtlLnZhbHVlLGUsdGhpcyksa2U9a2UucHJldn0sVmUucHJvdG90eXBlLmdldD1mdW5jdGlvbihMcil7Zm9yKHZhciBhcj0wLGtlPXRoaXMuaGVhZDtrZSE9PW51bGwmJmFyPExyO2FyKyspa2U9a2UubmV4dDtpZihhcj09PUxyJiZrZSE9PW51bGwpcmV0dXJuIGtlLnZhbHVlfSxWZS5wcm90b3R5cGUuZ2V0UmV2ZXJzZT1mdW5jdGlvbihMcil7Zm9yKHZhciBhcj0wLGtlPXRoaXMudGFpbDtrZSE9PW51bGwmJmFyPExyO2FyKyspa2U9a2UucHJldjtpZihhcj09PUxyJiZrZSE9PW51bGwpcmV0dXJuIGtlLnZhbHVlfSxWZS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKExyLGFyKXthcj1hcnx8dGhpcztmb3IodmFyIGtlPW5ldyBWZSxlPXRoaXMuaGVhZDtlIT09bnVsbDspa2UucHVzaChMci5jYWxsKGFyLGUudmFsdWUsdGhpcykpLGU9ZS5uZXh0O3JldHVybiBrZX0sVmUucHJvdG90eXBlLm1hcFJldmVyc2U9ZnVuY3Rpb24oTHIsYXIpe2FyPWFyfHx0aGlzO2Zvcih2YXIga2U9bmV3IFZlLGU9dGhpcy50YWlsO2UhPT1udWxsOylrZS5wdXNoKExyLmNhbGwoYXIsZS52YWx1ZSx0aGlzKSksZT1lLnByZXY7cmV0dXJuIGtlfSxWZS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKExyLGFyKXt2YXIga2UsZT10aGlzLmhlYWQ7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWtlPWFyO2Vsc2UgaWYodGhpcy5oZWFkKWU9dGhpcy5oZWFkLm5leHQsa2U9dGhpcy5oZWFkLnZhbHVlO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlZHVjZSBvZiBlbXB0eSBsaXN0IHdpdGggbm8gaW5pdGlhbCB2YWx1ZVwiKTtmb3IodmFyIGE9MDtlIT09bnVsbDthKyspa2U9THIoa2UsZS52YWx1ZSxhKSxlPWUubmV4dDtyZXR1cm4ga2V9LFZlLnByb3RvdHlwZS5yZWR1Y2VSZXZlcnNlPWZ1bmN0aW9uKExyLGFyKXt2YXIga2UsZT10aGlzLnRhaWw7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWtlPWFyO2Vsc2UgaWYodGhpcy50YWlsKWU9dGhpcy50YWlsLnByZXYsa2U9dGhpcy50YWlsLnZhbHVlO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlZHVjZSBvZiBlbXB0eSBsaXN0IHdpdGggbm8gaW5pdGlhbCB2YWx1ZVwiKTtmb3IodmFyIGE9dGhpcy5sZW5ndGgtMTtlIT09bnVsbDthLS0pa2U9THIoa2UsZS52YWx1ZSxhKSxlPWUucHJldjtyZXR1cm4ga2V9LFZlLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7Zm9yKHZhciBMcj1uZXcgQXJyYXkodGhpcy5sZW5ndGgpLGFyPTAsa2U9dGhpcy5oZWFkO2tlIT09bnVsbDthcisrKUxyW2FyXT1rZS52YWx1ZSxrZT1rZS5uZXh0O3JldHVybiBMcn0sVmUucHJvdG90eXBlLnRvQXJyYXlSZXZlcnNlPWZ1bmN0aW9uKCl7Zm9yKHZhciBMcj1uZXcgQXJyYXkodGhpcy5sZW5ndGgpLGFyPTAsa2U9dGhpcy50YWlsO2tlIT09bnVsbDthcisrKUxyW2FyXT1rZS52YWx1ZSxrZT1rZS5wcmV2O3JldHVybiBMcn0sVmUucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKExyLGFyKXthcj1hcnx8dGhpcy5sZW5ndGgsYXI8MCYmKGFyKz10aGlzLmxlbmd0aCksTHI9THJ8fDAsTHI8MCYmKExyKz10aGlzLmxlbmd0aCk7dmFyIGtlPW5ldyBWZTtpZihhcjxMcnx8YXI8MClyZXR1cm4ga2U7THI8MCYmKExyPTApLGFyPnRoaXMubGVuZ3RoJiYoYXI9dGhpcy5sZW5ndGgpO2Zvcih2YXIgZT0wLGE9dGhpcy5oZWFkO2EhPT1udWxsJiZlPExyO2UrKylhPWEubmV4dDtmb3IoO2EhPT1udWxsJiZlPGFyO2UrKyxhPWEubmV4dClrZS5wdXNoKGEudmFsdWUpO3JldHVybiBrZX0sVmUucHJvdG90eXBlLnNsaWNlUmV2ZXJzZT1mdW5jdGlvbihMcixhcil7YXI9YXJ8fHRoaXMubGVuZ3RoLGFyPDAmJihhcis9dGhpcy5sZW5ndGgpLExyPUxyfHwwLExyPDAmJihMcis9dGhpcy5sZW5ndGgpO3ZhciBrZT1uZXcgVmU7aWYoYXI8THJ8fGFyPDApcmV0dXJuIGtlO0xyPDAmJihMcj0wKSxhcj50aGlzLmxlbmd0aCYmKGFyPXRoaXMubGVuZ3RoKTtmb3IodmFyIGU9dGhpcy5sZW5ndGgsYT10aGlzLnRhaWw7YSE9PW51bGwmJmU+YXI7ZS0tKWE9YS5wcmV2O2Zvcig7YSE9PW51bGwmJmU+THI7ZS0tLGE9YS5wcmV2KWtlLnB1c2goYS52YWx1ZSk7cmV0dXJuIGtlfSxWZS5wcm90b3R5cGUuc3BsaWNlPWZ1bmN0aW9uKExyLGFyKXtMcj50aGlzLmxlbmd0aCYmKExyPXRoaXMubGVuZ3RoLTEpLExyPDAmJihMcj10aGlzLmxlbmd0aCtMcik7Zm9yKHZhciBrZT0wLGU9dGhpcy5oZWFkO2UhPT1udWxsJiZrZTxMcjtrZSsrKWU9ZS5uZXh0O2Zvcih2YXIgYT1bXSxrZT0wO2UmJmtlPGFyO2tlKyspYS5wdXNoKGUudmFsdWUpLGU9dGhpcy5yZW1vdmVOb2RlKGUpO2U9PT1udWxsJiYoZT10aGlzLnRhaWwpLGUhPT10aGlzLmhlYWQmJmUhPT10aGlzLnRhaWwmJihlPWUucHJldik7Zm9yKHZhciBrZT0wO2tlPChhcmd1bWVudHMubGVuZ3RoPD0yPzA6YXJndW1lbnRzLmxlbmd0aC0yKTtrZSsrKWU9S2UodGhpcyxlLGtlKzI8Mnx8YXJndW1lbnRzLmxlbmd0aDw9a2UrMj92b2lkIDA6YXJndW1lbnRzW2tlKzJdKTtyZXR1cm4gYX0sVmUucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXtmb3IodmFyIExyPXRoaXMuaGVhZCxhcj10aGlzLnRhaWwsa2U9THI7a2UhPT1udWxsO2tlPWtlLnByZXYpe3ZhciBlPWtlLnByZXY7a2UucHJldj1rZS5uZXh0LGtlLm5leHQ9ZX1yZXR1cm4gdGhpcy5oZWFkPWFyLHRoaXMudGFpbD1Mcix0aGlzfTtmdW5jdGlvbiBLZShMcixhcixrZSl7dmFyIGU9YXI9PT1Mci5oZWFkP25ldyBwcihrZSxudWxsLGFyLExyKTpuZXcgcHIoa2UsYXIsYXIubmV4dCxMcik7cmV0dXJuIGUubmV4dD09PW51bGwmJihMci50YWlsPWUpLGUucHJldj09PW51bGwmJihMci5oZWFkPWUpLExyLmxlbmd0aCsrLGV9ZnVuY3Rpb24gb2koTHIsYXIpe0xyLnRhaWw9bmV3IHByKGFyLExyLnRhaWwsbnVsbCxMciksTHIuaGVhZHx8KExyLmhlYWQ9THIudGFpbCksTHIubGVuZ3RoKyt9ZnVuY3Rpb24ga3IoTHIsYXIpe0xyLmhlYWQ9bmV3IHByKGFyLG51bGwsTHIuaGVhZCxMciksTHIudGFpbHx8KExyLnRhaWw9THIuaGVhZCksTHIubGVuZ3RoKyt9ZnVuY3Rpb24gcHIoTHIsYXIsa2UsZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgcHIpKXJldHVybiBuZXcgcHIoTHIsYXIsa2UsZSk7dGhpcy5saXN0PWUsdGhpcy52YWx1ZT1Mcixhcj8oYXIubmV4dD10aGlzLHRoaXMucHJldj1hcik6dGhpcy5wcmV2PW51bGwsa2U/KGtlLnByZXY9dGhpcyx0aGlzLm5leHQ9a2UpOnRoaXMubmV4dD1udWxsfXRyeXtuVSgpKFZlKX1jYXRjaHt9fX0pLHNVPU9hKHtcIm5vZGVfbW9kdWxlcy9scnUtY2FjaGUvaW5kZXguanNcIihNLHJlKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciBWZT1vVSgpLEtlPVN5bWJvbChcIm1heFwiKSxvaT1TeW1ib2woXCJsZW5ndGhcIiksa3I9U3ltYm9sKFwibGVuZ3RoQ2FsY3VsYXRvclwiKSxwcj1TeW1ib2woXCJhbGxvd1N0YWxlXCIpLExyPVN5bWJvbChcIm1heEFnZVwiKSxhcj1TeW1ib2woXCJkaXNwb3NlXCIpLGtlPVN5bWJvbChcIm5vRGlzcG9zZU9uU2V0XCIpLGU9U3ltYm9sKFwibHJ1TGlzdFwiKSxhPVN5bWJvbChcImNhY2hlXCIpLEM9U3ltYm9sKFwidXBkYXRlQWdlT25HZXRcIiksdz0oKT0+MSxCPWNsYXNze2NvbnN0cnVjdG9yKEcpe2lmKHR5cGVvZiBHPT1cIm51bWJlclwiJiYoRz17bWF4Okd9KSxHfHwoRz17fSksRy5tYXgmJih0eXBlb2YgRy5tYXghPVwibnVtYmVyXCJ8fEcubWF4PDApKXRocm93IG5ldyBUeXBlRXJyb3IoXCJtYXggbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXJcIik7bGV0IG9lPXRoaXNbS2VdPUcubWF4fHwxLzAsZj1HLmxlbmd0aHx8dztpZih0aGlzW2tyXT10eXBlb2YgZiE9XCJmdW5jdGlvblwiP3c6Zix0aGlzW3ByXT1HLnN0YWxlfHwhMSxHLm1heEFnZSYmdHlwZW9mIEcubWF4QWdlIT1cIm51bWJlclwiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJtYXhBZ2UgbXVzdCBiZSBhIG51bWJlclwiKTt0aGlzW0xyXT1HLm1heEFnZXx8MCx0aGlzW2FyXT1HLmRpc3Bvc2UsdGhpc1trZV09Ry5ub0Rpc3Bvc2VPblNldHx8ITEsdGhpc1tDXT1HLnVwZGF0ZUFnZU9uR2V0fHwhMSx0aGlzLnJlc2V0KCl9c2V0IG1heChHKXtpZih0eXBlb2YgRyE9XCJudW1iZXJcInx8RzwwKXRocm93IG5ldyBUeXBlRXJyb3IoXCJtYXggbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXJcIik7dGhpc1tLZV09R3x8MS8wLGxlKHRoaXMpfWdldCBtYXgoKXtyZXR1cm4gdGhpc1tLZV19c2V0IGFsbG93U3RhbGUoRyl7dGhpc1twcl09ISFHfWdldCBhbGxvd1N0YWxlKCl7cmV0dXJuIHRoaXNbcHJdfXNldCBtYXhBZ2UoRyl7aWYodHlwZW9mIEchPVwibnVtYmVyXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIm1heEFnZSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlclwiKTt0aGlzW0xyXT1HLGxlKHRoaXMpfWdldCBtYXhBZ2UoKXtyZXR1cm4gdGhpc1tMcl19c2V0IGxlbmd0aENhbGN1bGF0b3IoRyl7dHlwZW9mIEchPVwiZnVuY3Rpb25cIiYmKEc9dyksRyE9PXRoaXNba3JdJiYodGhpc1trcl09Ryx0aGlzW29pXT0wLHRoaXNbZV0uZm9yRWFjaChvZT0+e29lLmxlbmd0aD10aGlzW2tyXShvZS52YWx1ZSxvZS5rZXkpLHRoaXNbb2ldKz1vZS5sZW5ndGh9KSksbGUodGhpcyl9Z2V0IGxlbmd0aENhbGN1bGF0b3IoKXtyZXR1cm4gdGhpc1trcl19Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzW29pXX1nZXQgaXRlbUNvdW50KCl7cmV0dXJuIHRoaXNbZV0ubGVuZ3RofXJmb3JFYWNoKEcsb2Upe29lPW9lfHx0aGlzO2ZvcihsZXQgZj10aGlzW2VdLnRhaWw7ZiE9PW51bGw7KXtsZXQgVD1mLnByZXY7bSh0aGlzLEcsZixvZSksZj1UfX1mb3JFYWNoKEcsb2Upe29lPW9lfHx0aGlzO2ZvcihsZXQgZj10aGlzW2VdLmhlYWQ7ZiE9PW51bGw7KXtsZXQgVD1mLm5leHQ7bSh0aGlzLEcsZixvZSksZj1UfX1rZXlzKCl7cmV0dXJuIHRoaXNbZV0udG9BcnJheSgpLm1hcChHPT5HLmtleSl9dmFsdWVzKCl7cmV0dXJuIHRoaXNbZV0udG9BcnJheSgpLm1hcChHPT5HLnZhbHVlKX1yZXNldCgpe3RoaXNbYXJdJiZ0aGlzW2VdJiZ0aGlzW2VdLmxlbmd0aCYmdGhpc1tlXS5mb3JFYWNoKEc9PnRoaXNbYXJdKEcua2V5LEcudmFsdWUpKSx0aGlzW2FdPW5ldyBNYXAsdGhpc1tlXT1uZXcgVmUsdGhpc1tvaV09MH1kdW1wKCl7cmV0dXJuIHRoaXNbZV0ubWFwKEc9PlEodGhpcyxHKT8hMTp7azpHLmtleSx2OkcudmFsdWUsZTpHLm5vdysoRy5tYXhBZ2V8fDApfSkudG9BcnJheSgpLmZpbHRlcihHPT5HKX1kdW1wTHJ1KCl7cmV0dXJuIHRoaXNbZV19c2V0KEcsb2UsZil7aWYoZj1mfHx0aGlzW0xyXSxmJiZ0eXBlb2YgZiE9XCJudW1iZXJcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwibWF4QWdlIG11c3QgYmUgYSBudW1iZXJcIik7bGV0IFQ9Zj9EYXRlLm5vdygpOjAsSz10aGlzW2tyXShvZSxHKTtpZih0aGlzW2FdLmhhcyhHKSl7aWYoSz50aGlzW0tlXSlyZXR1cm4gTih0aGlzLHRoaXNbYV0uZ2V0KEcpKSwhMTtsZXQgSj10aGlzW2FdLmdldChHKS52YWx1ZTtyZXR1cm4gdGhpc1thcl0mJih0aGlzW2tlXXx8dGhpc1thcl0oRyxKLnZhbHVlKSksSi5ub3c9VCxKLm1heEFnZT1mLEoudmFsdWU9b2UsdGhpc1tvaV0rPUstSi5sZW5ndGgsSi5sZW5ndGg9Syx0aGlzLmdldChHKSxsZSh0aGlzKSwhMH1sZXQgYj1uZXcgcChHLG9lLEssVCxmKTtyZXR1cm4gYi5sZW5ndGg+dGhpc1tLZV0/KHRoaXNbYXJdJiZ0aGlzW2FyXShHLG9lKSwhMSk6KHRoaXNbb2ldKz1iLmxlbmd0aCx0aGlzW2VdLnVuc2hpZnQoYiksdGhpc1thXS5zZXQoRyx0aGlzW2VdLmhlYWQpLGxlKHRoaXMpLCEwKX1oYXMoRyl7aWYoIXRoaXNbYV0uaGFzKEcpKXJldHVybiExO2xldCBvZT10aGlzW2FdLmdldChHKS52YWx1ZTtyZXR1cm4hUSh0aGlzLG9lKX1nZXQoRyl7cmV0dXJuIEUodGhpcyxHLCEwKX1wZWVrKEcpe3JldHVybiBFKHRoaXMsRywhMSl9cG9wKCl7bGV0IEc9dGhpc1tlXS50YWlsO3JldHVybiBHPyhOKHRoaXMsRyksRy52YWx1ZSk6bnVsbH1kZWwoRyl7Tih0aGlzLHRoaXNbYV0uZ2V0KEcpKX1sb2FkKEcpe3RoaXMucmVzZXQoKTtsZXQgb2U9RGF0ZS5ub3coKTtmb3IobGV0IGY9Ry5sZW5ndGgtMTtmPj0wO2YtLSl7bGV0IFQ9R1tmXSxLPVQuZXx8MDtpZihLPT09MCl0aGlzLnNldChULmssVC52KTtlbHNle2xldCBiPUstb2U7Yj4wJiZ0aGlzLnNldChULmssVC52LGIpfX19cHJ1bmUoKXt0aGlzW2FdLmZvckVhY2goKEcsb2UpPT5FKHRoaXMsb2UsITEpKX19LEU9KEcsb2UsZik9PntsZXQgVD1HW2FdLmdldChvZSk7aWYoVCl7bGV0IEs9VC52YWx1ZTtpZihRKEcsSykpe2lmKE4oRyxUKSwhR1twcl0pcmV0dXJufWVsc2UgZiYmKEdbQ10mJihULnZhbHVlLm5vdz1EYXRlLm5vdygpKSxHW2VdLnVuc2hpZnROb2RlKFQpKTtyZXR1cm4gSy52YWx1ZX19LFE9KEcsb2UpPT57aWYoIW9lfHwhb2UubWF4QWdlJiYhR1tMcl0pcmV0dXJuITE7bGV0IGY9RGF0ZS5ub3coKS1vZS5ub3c7cmV0dXJuIG9lLm1heEFnZT9mPm9lLm1heEFnZTpHW0xyXSYmZj5HW0xyXX0sbGU9Rz0+e2lmKEdbb2ldPkdbS2VdKWZvcihsZXQgb2U9R1tlXS50YWlsO0dbb2ldPkdbS2VdJiZvZSE9PW51bGw7KXtsZXQgZj1vZS5wcmV2O04oRyxvZSksb2U9Zn19LE49KEcsb2UpPT57aWYob2Upe2xldCBmPW9lLnZhbHVlO0dbYXJdJiZHW2FyXShmLmtleSxmLnZhbHVlKSxHW29pXS09Zi5sZW5ndGgsR1thXS5kZWxldGUoZi5rZXkpLEdbZV0ucmVtb3ZlTm9kZShvZSl9fSxwPWNsYXNze2NvbnN0cnVjdG9yKEcsb2UsZixULEspe3RoaXMua2V5PUcsdGhpcy52YWx1ZT1vZSx0aGlzLmxlbmd0aD1mLHRoaXMubm93PVQsdGhpcy5tYXhBZ2U9S3x8MH19LG09KEcsb2UsZixUKT0+e2xldCBLPWYudmFsdWU7UShHLEspJiYoTihHLGYpLEdbcHJdfHwoSz12b2lkIDApKSxLJiZvZS5jYWxsKFQsSy52YWx1ZSxLLmtleSxHKX07cmUuZXhwb3J0cz1CfX0pLG9kPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvY2xhc3Nlcy9yYW5nZS5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPWNsYXNze2NvbnN0cnVjdG9yKGllLFIpe2lmKFI9a3IoUiksaWUgaW5zdGFuY2VvZiBWZSlyZXR1cm4gaWUubG9vc2U9PT0hIVIubG9vc2UmJmllLmluY2x1ZGVQcmVyZWxlYXNlPT09ISFSLmluY2x1ZGVQcmVyZWxlYXNlP2llOm5ldyBWZShpZS5yYXcsUik7aWYoaWUgaW5zdGFuY2VvZiBwcilyZXR1cm4gdGhpcy5yYXc9aWUudmFsdWUsdGhpcy5zZXQ9W1tpZV1dLHRoaXMuZm9ybWF0KCksdGhpcztpZih0aGlzLm9wdGlvbnM9Uix0aGlzLmxvb3NlPSEhUi5sb29zZSx0aGlzLmluY2x1ZGVQcmVyZWxlYXNlPSEhUi5pbmNsdWRlUHJlcmVsZWFzZSx0aGlzLnJhdz1pZSx0aGlzLnNldD1pZS5zcGxpdChcInx8XCIpLm1hcChxPT50aGlzLnBhcnNlUmFuZ2UocS50cmltKCkpKS5maWx0ZXIocT0+cS5sZW5ndGgpLCF0aGlzLnNldC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgU2VtVmVyIFJhbmdlOiBcIi5jb25jYXQoaWUpKTtpZih0aGlzLnNldC5sZW5ndGg+MSl7bGV0IHE9dGhpcy5zZXRbMF07aWYodGhpcy5zZXQ9dGhpcy5zZXQuZmlsdGVyKE89PiFCKE9bMF0pKSx0aGlzLnNldC5sZW5ndGg9PT0wKXRoaXMuc2V0PVtxXTtlbHNlIGlmKHRoaXMuc2V0Lmxlbmd0aD4xKXtmb3IobGV0IE8gb2YgdGhpcy5zZXQpaWYoTy5sZW5ndGg9PT0xJiZFKE9bMF0pKXt0aGlzLnNldD1bT107YnJlYWt9fX10aGlzLmZvcm1hdCgpfWZvcm1hdCgpe3JldHVybiB0aGlzLnJhbmdlPXRoaXMuc2V0Lm1hcChpZT0+aWUuam9pbihcIiBcIikudHJpbSgpKS5qb2luKFwifHxcIikudHJpbSgpLHRoaXMucmFuZ2V9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5yYW5nZX1wYXJzZVJhbmdlKGllKXtpZT1pZS50cmltKCk7bGV0IFI9T2JqZWN0LmtleXModGhpcy5vcHRpb25zKS5qb2luKFwiLFwiKSxxPVwicGFyc2VSYW5nZTpcIi5jb25jYXQoUixcIjpcIikuY29uY2F0KGllKSxPPW9pLmdldChxKTtpZihPKXJldHVybiBPO2xldCB2ZT10aGlzLm9wdGlvbnMubG9vc2UsZWU9dmU/a2VbZS5IWVBIRU5SQU5HRUxPT1NFXTprZVtlLkhZUEhFTlJBTkdFXTtpZT1pZS5yZXBsYWNlKGVlLHNlKHRoaXMub3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSkpLExyKFwiaHlwaGVuIHJlcGxhY2VcIixpZSksaWU9aWUucmVwbGFjZShrZVtlLkNPTVBBUkFUT1JUUklNXSxhKSxMcihcImNvbXBhcmF0b3IgdHJpbVwiLGllKSxpZT1pZS5yZXBsYWNlKGtlW2UuVElMREVUUklNXSxDKSxpZT1pZS5yZXBsYWNlKGtlW2UuQ0FSRVRUUklNXSx3KSxpZT1pZS5zcGxpdCgvXFxzKy8pLmpvaW4oXCIgXCIpO2xldCBoZT1pZS5zcGxpdChcIiBcIikubWFwKCQ9PmxlKCQsdGhpcy5vcHRpb25zKSkuam9pbihcIiBcIikuc3BsaXQoL1xccysvKS5tYXAoJD0+YigkLHRoaXMub3B0aW9ucykpO3ZlJiYoaGU9aGUuZmlsdGVyKCQ9PihMcihcImxvb3NlIGludmFsaWQgZmlsdGVyXCIsJCx0aGlzLm9wdGlvbnMpLCEhJC5tYXRjaChrZVtlLkNPTVBBUkFUT1JMT09TRV0pKSkpLExyKFwicmFuZ2UgbGlzdFwiLGhlKTtsZXQgRj1uZXcgTWFwLHg9aGUubWFwKCQ9Pm5ldyBwcigkLHRoaXMub3B0aW9ucykpO2ZvcihsZXQgJCBvZiB4KXtpZihCKCQpKXJldHVyblskXTtGLnNldCgkLnZhbHVlLCQpfUYuc2l6ZT4xJiZGLmhhcyhcIlwiKSYmRi5kZWxldGUoXCJcIik7bGV0IFg9Wy4uLkYudmFsdWVzKCldO3JldHVybiBvaS5zZXQocSxYKSxYfWludGVyc2VjdHMoaWUsUil7aWYoIShpZSBpbnN0YW5jZW9mIFZlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYSBSYW5nZSBpcyByZXF1aXJlZFwiKTtyZXR1cm4gdGhpcy5zZXQuc29tZShxPT5RKHEsUikmJmllLnNldC5zb21lKE89PlEoTyxSKSYmcS5ldmVyeSh2ZT0+Ty5ldmVyeShlZT0+dmUuaW50ZXJzZWN0cyhlZSxSKSkpKSl9dGVzdChpZSl7aWYoIWllKXJldHVybiExO2lmKHR5cGVvZiBpZT09XCJzdHJpbmdcIil0cnl7aWU9bmV3IGFyKGllLHRoaXMub3B0aW9ucyl9Y2F0Y2h7cmV0dXJuITF9Zm9yKGxldCBSPTA7Ujx0aGlzLnNldC5sZW5ndGg7UisrKWlmKEoodGhpcy5zZXRbUl0saWUsdGhpcy5vcHRpb25zKSlyZXR1cm4hMDtyZXR1cm4hMX19O3JlLmV4cG9ydHM9VmU7dmFyIEtlPXNVKCksb2k9bmV3IEtlKHttYXg6MWUzfSksa3I9UzEoKSxwcj14MSgpLExyPWIxKCksYXI9TGYoKSx7cmU6a2UsdDplLGNvbXBhcmF0b3JUcmltUmVwbGFjZTphLHRpbGRlVHJpbVJlcGxhY2U6QyxjYXJldFRyaW1SZXBsYWNlOnd9PXd2KCksQj1pZT0+aWUudmFsdWU9PT1cIjwwLjAuMC0wXCIsRT1pZT0+aWUudmFsdWU9PT1cIlwiLFE9KGllLFIpPT57bGV0IHE9ITAsTz1pZS5zbGljZSgpLHZlPU8ucG9wKCk7Zm9yKDtxJiZPLmxlbmd0aDspcT1PLmV2ZXJ5KGVlPT52ZS5pbnRlcnNlY3RzKGVlLFIpKSx2ZT1PLnBvcCgpO3JldHVybiBxfSxsZT0oaWUsUik9PihMcihcImNvbXBcIixpZSxSKSxpZT1HKGllLFIpLExyKFwiY2FyZXRcIixpZSksaWU9cChpZSxSKSxMcihcInRpbGRlc1wiLGllKSxpZT1mKGllLFIpLExyKFwieHJhbmdlXCIsaWUpLGllPUsoaWUsUiksTHIoXCJzdGFyc1wiLGllKSxpZSksTj1pZT0+IWllfHxpZS50b0xvd2VyQ2FzZSgpPT09XCJ4XCJ8fGllPT09XCIqXCIscD0oaWUsUik9PmllLnRyaW0oKS5zcGxpdCgvXFxzKy8pLm1hcChxPT5tKHEsUikpLmpvaW4oXCIgXCIpLG09KGllLFIpPT57bGV0IHE9Ui5sb29zZT9rZVtlLlRJTERFTE9PU0VdOmtlW2UuVElMREVdO3JldHVybiBpZS5yZXBsYWNlKHEsKE8sdmUsZWUsaGUsRik9PntMcihcInRpbGRlXCIsaWUsTyx2ZSxlZSxoZSxGKTtsZXQgeDtyZXR1cm4gTih2ZSk/eD1cIlwiOk4oZWUpP3g9XCI+PVwiLmNvbmNhdCh2ZSxcIi4wLjAgPFwiKS5jb25jYXQoK3ZlKzEsXCIuMC4wLTBcIik6TihoZSk/eD1cIj49XCIuY29uY2F0KHZlLFwiLlwiKS5jb25jYXQoZWUsXCIuMCA8XCIpLmNvbmNhdCh2ZSxcIi5cIikuY29uY2F0KCtlZSsxLFwiLjAtMFwiKTpGPyhMcihcInJlcGxhY2VUaWxkZSBwclwiLEYpLHg9XCI+PVwiLmNvbmNhdCh2ZSxcIi5cIikuY29uY2F0KGVlLFwiLlwiKS5jb25jYXQoaGUsXCItXCIpLmNvbmNhdChGLFwiIDxcIikuY29uY2F0KHZlLFwiLlwiKS5jb25jYXQoK2VlKzEsXCIuMC0wXCIpKTp4PVwiPj1cIi5jb25jYXQodmUsXCIuXCIpLmNvbmNhdChlZSxcIi5cIikuY29uY2F0KGhlLFwiIDxcIikuY29uY2F0KHZlLFwiLlwiKS5jb25jYXQoK2VlKzEsXCIuMC0wXCIpLExyKFwidGlsZGUgcmV0dXJuXCIseCkseH0pfSxHPShpZSxSKT0+aWUudHJpbSgpLnNwbGl0KC9cXHMrLykubWFwKHE9Pm9lKHEsUikpLmpvaW4oXCIgXCIpLG9lPShpZSxSKT0+e0xyKFwiY2FyZXRcIixpZSxSKTtsZXQgcT1SLmxvb3NlP2tlW2UuQ0FSRVRMT09TRV06a2VbZS5DQVJFVF0sTz1SLmluY2x1ZGVQcmVyZWxlYXNlP1wiLTBcIjpcIlwiO3JldHVybiBpZS5yZXBsYWNlKHEsKHZlLGVlLGhlLEYseCk9PntMcihcImNhcmV0XCIsaWUsdmUsZWUsaGUsRix4KTtsZXQgWDtyZXR1cm4gTihlZSk/WD1cIlwiOk4oaGUpP1g9XCI+PVwiLmNvbmNhdChlZSxcIi4wLjBcIikuY29uY2F0KE8sXCIgPFwiKS5jb25jYXQoK2VlKzEsXCIuMC4wLTBcIik6TihGKT9lZT09PVwiMFwiP1g9XCI+PVwiLmNvbmNhdChlZSxcIi5cIikuY29uY2F0KGhlLFwiLjBcIikuY29uY2F0KE8sXCIgPFwiKS5jb25jYXQoZWUsXCIuXCIpLmNvbmNhdCgraGUrMSxcIi4wLTBcIik6WD1cIj49XCIuY29uY2F0KGVlLFwiLlwiKS5jb25jYXQoaGUsXCIuMFwiKS5jb25jYXQoTyxcIiA8XCIpLmNvbmNhdCgrZWUrMSxcIi4wLjAtMFwiKTp4PyhMcihcInJlcGxhY2VDYXJldCBwclwiLHgpLGVlPT09XCIwXCI/aGU9PT1cIjBcIj9YPVwiPj1cIi5jb25jYXQoZWUsXCIuXCIpLmNvbmNhdChoZSxcIi5cIikuY29uY2F0KEYsXCItXCIpLmNvbmNhdCh4LFwiIDxcIikuY29uY2F0KGVlLFwiLlwiKS5jb25jYXQoaGUsXCIuXCIpLmNvbmNhdCgrRisxLFwiLTBcIik6WD1cIj49XCIuY29uY2F0KGVlLFwiLlwiKS5jb25jYXQoaGUsXCIuXCIpLmNvbmNhdChGLFwiLVwiKS5jb25jYXQoeCxcIiA8XCIpLmNvbmNhdChlZSxcIi5cIikuY29uY2F0KCtoZSsxLFwiLjAtMFwiKTpYPVwiPj1cIi5jb25jYXQoZWUsXCIuXCIpLmNvbmNhdChoZSxcIi5cIikuY29uY2F0KEYsXCItXCIpLmNvbmNhdCh4LFwiIDxcIikuY29uY2F0KCtlZSsxLFwiLjAuMC0wXCIpKTooTHIoXCJubyBwclwiKSxlZT09PVwiMFwiP2hlPT09XCIwXCI/WD1cIj49XCIuY29uY2F0KGVlLFwiLlwiKS5jb25jYXQoaGUsXCIuXCIpLmNvbmNhdChGKS5jb25jYXQoTyxcIiA8XCIpLmNvbmNhdChlZSxcIi5cIikuY29uY2F0KGhlLFwiLlwiKS5jb25jYXQoK0YrMSxcIi0wXCIpOlg9XCI+PVwiLmNvbmNhdChlZSxcIi5cIikuY29uY2F0KGhlLFwiLlwiKS5jb25jYXQoRikuY29uY2F0KE8sXCIgPFwiKS5jb25jYXQoZWUsXCIuXCIpLmNvbmNhdCgraGUrMSxcIi4wLTBcIik6WD1cIj49XCIuY29uY2F0KGVlLFwiLlwiKS5jb25jYXQoaGUsXCIuXCIpLmNvbmNhdChGLFwiIDxcIikuY29uY2F0KCtlZSsxLFwiLjAuMC0wXCIpKSxMcihcImNhcmV0IHJldHVyblwiLFgpLFh9KX0sZj0oaWUsUik9PihMcihcInJlcGxhY2VYUmFuZ2VzXCIsaWUsUiksaWUuc3BsaXQoL1xccysvKS5tYXAocT0+VChxLFIpKS5qb2luKFwiIFwiKSksVD0oaWUsUik9PntpZT1pZS50cmltKCk7bGV0IHE9Ui5sb29zZT9rZVtlLlhSQU5HRUxPT1NFXTprZVtlLlhSQU5HRV07cmV0dXJuIGllLnJlcGxhY2UocSwoTyx2ZSxlZSxoZSxGLHgpPT57THIoXCJ4UmFuZ2VcIixpZSxPLHZlLGVlLGhlLEYseCk7bGV0IFg9TihlZSksJD1YfHxOKGhlKSxBPSR8fE4oRikseT1BO3JldHVybiB2ZT09PVwiPVwiJiZ5JiYodmU9XCJcIikseD1SLmluY2x1ZGVQcmVyZWxlYXNlP1wiLTBcIjpcIlwiLFg/dmU9PT1cIj5cInx8dmU9PT1cIjxcIj9PPVwiPDAuMC4wLTBcIjpPPVwiKlwiOnZlJiZ5PygkJiYoaGU9MCksRj0wLHZlPT09XCI+XCI/KHZlPVwiPj1cIiwkPyhlZT0rZWUrMSxoZT0wLEY9MCk6KGhlPStoZSsxLEY9MCkpOnZlPT09XCI8PVwiJiYodmU9XCI8XCIsJD9lZT0rZWUrMTpoZT0raGUrMSksdmU9PT1cIjxcIiYmKHg9XCItMFwiKSxPPVwiXCIuY29uY2F0KHZlK2VlLFwiLlwiKS5jb25jYXQoaGUsXCIuXCIpLmNvbmNhdChGKS5jb25jYXQoeCkpOiQ/Tz1cIj49XCIuY29uY2F0KGVlLFwiLjAuMFwiKS5jb25jYXQoeCxcIiA8XCIpLmNvbmNhdCgrZWUrMSxcIi4wLjAtMFwiKTpBJiYoTz1cIj49XCIuY29uY2F0KGVlLFwiLlwiKS5jb25jYXQoaGUsXCIuMFwiKS5jb25jYXQoeCxcIiA8XCIpLmNvbmNhdChlZSxcIi5cIikuY29uY2F0KCtoZSsxLFwiLjAtMFwiKSksTHIoXCJ4UmFuZ2UgcmV0dXJuXCIsTyksT30pfSxLPShpZSxSKT0+KExyKFwicmVwbGFjZVN0YXJzXCIsaWUsUiksaWUudHJpbSgpLnJlcGxhY2Uoa2VbZS5TVEFSXSxcIlwiKSksYj0oaWUsUik9PihMcihcInJlcGxhY2VHVEUwXCIsaWUsUiksaWUudHJpbSgpLnJlcGxhY2Uoa2VbUi5pbmNsdWRlUHJlcmVsZWFzZT9lLkdURTBQUkU6ZS5HVEUwXSxcIlwiKSksc2U9aWU9PihSLHEsTyx2ZSxlZSxoZSxGLHgsWCwkLEEseSxWKT0+KE4oTyk/cT1cIlwiOk4odmUpP3E9XCI+PVwiLmNvbmNhdChPLFwiLjAuMFwiKS5jb25jYXQoaWU/XCItMFwiOlwiXCIpOk4oZWUpP3E9XCI+PVwiLmNvbmNhdChPLFwiLlwiKS5jb25jYXQodmUsXCIuMFwiKS5jb25jYXQoaWU/XCItMFwiOlwiXCIpOmhlP3E9XCI+PVwiLmNvbmNhdChxKTpxPVwiPj1cIi5jb25jYXQocSkuY29uY2F0KGllP1wiLTBcIjpcIlwiKSxOKFgpP3g9XCJcIjpOKCQpP3g9XCI8XCIuY29uY2F0KCtYKzEsXCIuMC4wLTBcIik6TihBKT94PVwiPFwiLmNvbmNhdChYLFwiLlwiKS5jb25jYXQoKyQrMSxcIi4wLTBcIik6eT94PVwiPD1cIi5jb25jYXQoWCxcIi5cIikuY29uY2F0KCQsXCIuXCIpLmNvbmNhdChBLFwiLVwiKS5jb25jYXQoeSk6aWU/eD1cIjxcIi5jb25jYXQoWCxcIi5cIikuY29uY2F0KCQsXCIuXCIpLmNvbmNhdCgrQSsxLFwiLTBcIik6eD1cIjw9XCIuY29uY2F0KHgpLFwiXCIuY29uY2F0KHEsXCIgXCIpLmNvbmNhdCh4KS50cmltKCkpLEo9KGllLFIscSk9Pntmb3IobGV0IE89MDtPPGllLmxlbmd0aDtPKyspaWYoIWllW09dLnRlc3QoUikpcmV0dXJuITE7aWYoUi5wcmVyZWxlYXNlLmxlbmd0aCYmIXEuaW5jbHVkZVByZXJlbGVhc2Upe2ZvcihsZXQgTz0wO088aWUubGVuZ3RoO08rKylpZihMcihpZVtPXS5zZW12ZXIpLGllW09dLnNlbXZlciE9PXByLkFOWSYmaWVbT10uc2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoPjApe2xldCB2ZT1pZVtPXS5zZW12ZXI7aWYodmUubWFqb3I9PT1SLm1ham9yJiZ2ZS5taW5vcj09PVIubWlub3ImJnZlLnBhdGNoPT09Ui5wYXRjaClyZXR1cm4hMH1yZXR1cm4hMX1yZXR1cm4hMH19fSkseDE9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9jbGFzc2VzL2NvbXBhcmF0b3IuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1TeW1ib2woXCJTZW1WZXIgQU5ZXCIpLEtlPWNsYXNze3N0YXRpYyBnZXQgQU5ZKCl7cmV0dXJuIFZlfWNvbnN0cnVjdG9yKGEsQyl7aWYoQz1vaShDKSxhIGluc3RhbmNlb2YgS2Upe2lmKGEubG9vc2U9PT0hIUMubG9vc2UpcmV0dXJuIGE7YT1hLnZhbHVlfWFyKFwiY29tcGFyYXRvclwiLGEsQyksdGhpcy5vcHRpb25zPUMsdGhpcy5sb29zZT0hIUMubG9vc2UsdGhpcy5wYXJzZShhKSx0aGlzLnNlbXZlcj09PVZlP3RoaXMudmFsdWU9XCJcIjp0aGlzLnZhbHVlPXRoaXMub3BlcmF0b3IrdGhpcy5zZW12ZXIudmVyc2lvbixhcihcImNvbXBcIix0aGlzKX1wYXJzZShhKXtsZXQgQz10aGlzLm9wdGlvbnMubG9vc2U/a3JbcHIuQ09NUEFSQVRPUkxPT1NFXTprcltwci5DT01QQVJBVE9SXSx3PWEubWF0Y2goQyk7aWYoIXcpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgY29tcGFyYXRvcjogXCIuY29uY2F0KGEpKTt0aGlzLm9wZXJhdG9yPXdbMV0hPT12b2lkIDA/d1sxXTpcIlwiLHRoaXMub3BlcmF0b3I9PT1cIj1cIiYmKHRoaXMub3BlcmF0b3I9XCJcIiksd1syXT90aGlzLnNlbXZlcj1uZXcga2Uod1syXSx0aGlzLm9wdGlvbnMubG9vc2UpOnRoaXMuc2VtdmVyPVZlfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudmFsdWV9dGVzdChhKXtpZihhcihcIkNvbXBhcmF0b3IudGVzdFwiLGEsdGhpcy5vcHRpb25zLmxvb3NlKSx0aGlzLnNlbXZlcj09PVZlfHxhPT09VmUpcmV0dXJuITA7aWYodHlwZW9mIGE9PVwic3RyaW5nXCIpdHJ5e2E9bmV3IGtlKGEsdGhpcy5vcHRpb25zKX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4gTHIoYSx0aGlzLm9wZXJhdG9yLHRoaXMuc2VtdmVyLHRoaXMub3B0aW9ucyl9aW50ZXJzZWN0cyhhLEMpe2lmKCEoYSBpbnN0YW5jZW9mIEtlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYSBDb21wYXJhdG9yIGlzIHJlcXVpcmVkXCIpO2lmKCghQ3x8dHlwZW9mIEMhPVwib2JqZWN0XCIpJiYoQz17bG9vc2U6ISFDLGluY2x1ZGVQcmVyZWxlYXNlOiExfSksdGhpcy5vcGVyYXRvcj09PVwiXCIpcmV0dXJuIHRoaXMudmFsdWU9PT1cIlwiPyEwOm5ldyBlKGEudmFsdWUsQykudGVzdCh0aGlzLnZhbHVlKTtpZihhLm9wZXJhdG9yPT09XCJcIilyZXR1cm4gYS52YWx1ZT09PVwiXCI/ITA6bmV3IGUodGhpcy52YWx1ZSxDKS50ZXN0KGEuc2VtdmVyKTtsZXQgdz0odGhpcy5vcGVyYXRvcj09PVwiPj1cInx8dGhpcy5vcGVyYXRvcj09PVwiPlwiKSYmKGEub3BlcmF0b3I9PT1cIj49XCJ8fGEub3BlcmF0b3I9PT1cIj5cIiksQj0odGhpcy5vcGVyYXRvcj09PVwiPD1cInx8dGhpcy5vcGVyYXRvcj09PVwiPFwiKSYmKGEub3BlcmF0b3I9PT1cIjw9XCJ8fGEub3BlcmF0b3I9PT1cIjxcIiksRT10aGlzLnNlbXZlci52ZXJzaW9uPT09YS5zZW12ZXIudmVyc2lvbixRPSh0aGlzLm9wZXJhdG9yPT09XCI+PVwifHx0aGlzLm9wZXJhdG9yPT09XCI8PVwiKSYmKGEub3BlcmF0b3I9PT1cIj49XCJ8fGEub3BlcmF0b3I9PT1cIjw9XCIpLGxlPUxyKHRoaXMuc2VtdmVyLFwiPFwiLGEuc2VtdmVyLEMpJiYodGhpcy5vcGVyYXRvcj09PVwiPj1cInx8dGhpcy5vcGVyYXRvcj09PVwiPlwiKSYmKGEub3BlcmF0b3I9PT1cIjw9XCJ8fGEub3BlcmF0b3I9PT1cIjxcIiksTj1Mcih0aGlzLnNlbXZlcixcIj5cIixhLnNlbXZlcixDKSYmKHRoaXMub3BlcmF0b3I9PT1cIjw9XCJ8fHRoaXMub3BlcmF0b3I9PT1cIjxcIikmJihhLm9wZXJhdG9yPT09XCI+PVwifHxhLm9wZXJhdG9yPT09XCI+XCIpO3JldHVybiB3fHxCfHxFJiZRfHxsZXx8Tn19O3JlLmV4cG9ydHM9S2U7dmFyIG9pPVMxKCkse3JlOmtyLHQ6cHJ9PXd2KCksTHI9ajQoKSxhcj1iMSgpLGtlPUxmKCksZT1vZCgpfX0pLEUxPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3NhdGlzZmllcy5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPW9kKCksS2U9KG9pLGtyLHByKT0+e3RyeXtrcj1uZXcgVmUoa3IscHIpfWNhdGNoe3JldHVybiExfXJldHVybiBrci50ZXN0KG9pKX07cmUuZXhwb3J0cz1LZX19KSxjVT1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy90by1jb21wYXJhdG9ycy5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPW9kKCksS2U9KG9pLGtyKT0+bmV3IFZlKG9pLGtyKS5zZXQubWFwKHByPT5wci5tYXAoTHI9PkxyLnZhbHVlKS5qb2luKFwiIFwiKS50cmltKCkuc3BsaXQoXCIgXCIpKTtyZS5leHBvcnRzPUtlfX0pLHVVPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL21heC1zYXRpc2Z5aW5nLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9TGYoKSxLZT1vZCgpLG9pPShrcixwcixMcik9PntsZXQgYXI9bnVsbCxrZT1udWxsLGU9bnVsbDt0cnl7ZT1uZXcgS2UocHIsTHIpfWNhdGNoe3JldHVybiBudWxsfXJldHVybiBrci5mb3JFYWNoKGE9PntlLnRlc3QoYSkmJighYXJ8fGtlLmNvbXBhcmUoYSk9PT0tMSkmJihhcj1hLGtlPW5ldyBWZShhcixMcikpfSksYXJ9O3JlLmV4cG9ydHM9b2l9fSksbFU9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvbWluLXNhdGlzZnlpbmcuanNcIihNLHJlKXtFYSgpO3ZhciBWZT1MZigpLEtlPW9kKCksb2k9KGtyLHByLExyKT0+e2xldCBhcj1udWxsLGtlPW51bGwsZT1udWxsO3RyeXtlPW5ldyBLZShwcixMcil9Y2F0Y2h7cmV0dXJuIG51bGx9cmV0dXJuIGtyLmZvckVhY2goYT0+e2UudGVzdChhKSYmKCFhcnx8a2UuY29tcGFyZShhKT09PTEpJiYoYXI9YSxrZT1uZXcgVmUoYXIsTHIpKX0pLGFyfTtyZS5leHBvcnRzPW9pfX0pLGZVPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL21pbi12ZXJzaW9uLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9TGYoKSxLZT1vZCgpLG9pPVQxKCksa3I9KHByLExyKT0+e3ByPW5ldyBLZShwcixMcik7bGV0IGFyPW5ldyBWZShcIjAuMC4wXCIpO2lmKHByLnRlc3QoYXIpfHwoYXI9bmV3IFZlKFwiMC4wLjAtMFwiKSxwci50ZXN0KGFyKSkpcmV0dXJuIGFyO2FyPW51bGw7Zm9yKGxldCBrZT0wO2tlPHByLnNldC5sZW5ndGg7KytrZSl7bGV0IGU9cHIuc2V0W2tlXSxhPW51bGw7ZS5mb3JFYWNoKEM9PntsZXQgdz1uZXcgVmUoQy5zZW12ZXIudmVyc2lvbik7c3dpdGNoKEMub3BlcmF0b3Ipe2Nhc2VcIj5cIjp3LnByZXJlbGVhc2UubGVuZ3RoPT09MD93LnBhdGNoKys6dy5wcmVyZWxlYXNlLnB1c2goMCksdy5yYXc9dy5mb3JtYXQoKTtjYXNlXCJcIjpjYXNlXCI+PVwiOighYXx8b2kodyxhKSkmJihhPXcpO2JyZWFrO2Nhc2VcIjxcIjpjYXNlXCI8PVwiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBvcGVyYXRpb246IFwiLmNvbmNhdChDLm9wZXJhdG9yKSl9fSksYSYmKCFhcnx8b2koYXIsYSkpJiYoYXI9YSl9cmV0dXJuIGFyJiZwci50ZXN0KGFyKT9hcjpudWxsfTtyZS5leHBvcnRzPWtyfX0pLF9VPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3ZhbGlkLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9b2QoKSxLZT0ob2ksa3IpPT57dHJ5e3JldHVybiBuZXcgVmUob2ksa3IpLnJhbmdlfHxcIipcIn1jYXRjaHtyZXR1cm4gbnVsbH19O3JlLmV4cG9ydHM9S2V9fSksWFQ9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvb3V0c2lkZS5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPUxmKCksS2U9eDEoKSx7QU5ZOm9pfT1LZSxrcj1vZCgpLHByPUUxKCksTHI9VDEoKSxhcj1LVCgpLGtlPUhUKCksZT1HVCgpLGE9KEMsdyxCLEUpPT57Qz1uZXcgVmUoQyxFKSx3PW5ldyBrcih3LEUpO2xldCBRLGxlLE4scCxtO3N3aXRjaChCKXtjYXNlXCI+XCI6UT1McixsZT1rZSxOPWFyLHA9XCI+XCIsbT1cIj49XCI7YnJlYWs7Y2FzZVwiPFwiOlE9YXIsbGU9ZSxOPUxyLHA9XCI8XCIsbT1cIjw9XCI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCdNdXN0IHByb3ZpZGUgYSBoaWxvIHZhbCBvZiBcIjxcIiBvciBcIj5cIicpfWlmKHByKEMsdyxFKSlyZXR1cm4hMTtmb3IobGV0IEc9MDtHPHcuc2V0Lmxlbmd0aDsrK0cpe2xldCBvZT13LnNldFtHXSxmPW51bGwsVD1udWxsO2lmKG9lLmZvckVhY2goSz0+e0suc2VtdmVyPT09b2kmJihLPW5ldyBLZShcIj49MC4wLjBcIikpLGY9Znx8SyxUPVR8fEssUShLLnNlbXZlcixmLnNlbXZlcixFKT9mPUs6TihLLnNlbXZlcixULnNlbXZlcixFKSYmKFQ9Syl9KSxmLm9wZXJhdG9yPT09cHx8Zi5vcGVyYXRvcj09PW18fCghVC5vcGVyYXRvcnx8VC5vcGVyYXRvcj09PXApJiZsZShDLFQuc2VtdmVyKSlyZXR1cm4hMTtpZihULm9wZXJhdG9yPT09bSYmTihDLFQuc2VtdmVyKSlyZXR1cm4hMX1yZXR1cm4hMH07cmUuZXhwb3J0cz1hfX0pLHBVPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL2d0ci5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPVhUKCksS2U9KG9pLGtyLHByKT0+VmUob2ksa3IsXCI+XCIscHIpO3JlLmV4cG9ydHM9S2V9fSksZFU9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvbHRyLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9WFQoKSxLZT0ob2ksa3IscHIpPT5WZShvaSxrcixcIjxcIixwcik7cmUuZXhwb3J0cz1LZX19KSxnVT1PYSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9pbnRlcnNlY3RzLmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9b2QoKSxLZT0ob2ksa3IscHIpPT4ob2k9bmV3IFZlKG9pLHByKSxrcj1uZXcgVmUoa3IscHIpLG9pLmludGVyc2VjdHMoa3IpKTtyZS5leHBvcnRzPUtlfX0pLG1VPU9hKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3NpbXBsaWZ5LmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9RTEoKSxLZT1uZCgpO3JlLmV4cG9ydHM9KG9pLGtyLHByKT0+e2xldCBMcj1bXSxhcj1udWxsLGtlPW51bGwsZT1vaS5zb3J0KChCLEUpPT5LZShCLEUscHIpKTtmb3IobGV0IEIgb2YgZSlWZShCLGtyLHByKT8oa2U9Qixhcnx8KGFyPUIpKTooa2UmJkxyLnB1c2goW2FyLGtlXSksa2U9bnVsbCxhcj1udWxsKTthciYmTHIucHVzaChbYXIsbnVsbF0pO2xldCBhPVtdO2ZvcihsZXRbQixFXW9mIExyKUI9PT1FP2EucHVzaChCKTohRSYmQj09PWVbMF0/YS5wdXNoKFwiKlwiKTpFP0I9PT1lWzBdP2EucHVzaChcIjw9XCIuY29uY2F0KEUpKTphLnB1c2goXCJcIi5jb25jYXQoQixcIiAtIFwiKS5jb25jYXQoRSkpOmEucHVzaChcIj49XCIuY29uY2F0KEIpKTtsZXQgQz1hLmpvaW4oXCIgfHwgXCIpLHc9dHlwZW9mIGtyLnJhdz09XCJzdHJpbmdcIj9rci5yYXc6U3RyaW5nKGtyKTtyZXR1cm4gQy5sZW5ndGg8dy5sZW5ndGg/Qzprcn19fSksdlU9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvc3Vic2V0LmpzXCIoTSxyZSl7RWEoKTt2YXIgVmU9b2QoKSxLZT14MSgpLHtBTlk6b2l9PUtlLGtyPUUxKCkscHI9bmQoKSxMcj1mdW5jdGlvbihhLEMpe2xldCB3PWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fTtpZihhPT09QylyZXR1cm4hMDthPW5ldyBWZShhLHcpLEM9bmV3IFZlKEMsdyk7bGV0IEI9ITE7ZTpmb3IobGV0IEUgb2YgYS5zZXQpe2ZvcihsZXQgUSBvZiBDLnNldCl7bGV0IGxlPWFyKEUsUSx3KTtpZihCPUJ8fGxlIT09bnVsbCxsZSljb250aW51ZSBlfWlmKEIpcmV0dXJuITF9cmV0dXJuITB9LGFyPShhLEMsdyk9PntpZihhPT09QylyZXR1cm4hMDtpZihhLmxlbmd0aD09PTEmJmFbMF0uc2VtdmVyPT09b2kpe2lmKEMubGVuZ3RoPT09MSYmQ1swXS5zZW12ZXI9PT1vaSlyZXR1cm4hMDt3LmluY2x1ZGVQcmVyZWxlYXNlP2E9W25ldyBLZShcIj49MC4wLjAtMFwiKV06YT1bbmV3IEtlKFwiPj0wLjAuMFwiKV19aWYoQy5sZW5ndGg9PT0xJiZDWzBdLnNlbXZlcj09PW9pKXtpZih3LmluY2x1ZGVQcmVyZWxlYXNlKXJldHVybiEwO0M9W25ldyBLZShcIj49MC4wLjBcIildfWxldCBCPW5ldyBTZXQsRSxRO2ZvcihsZXQgVCBvZiBhKVQub3BlcmF0b3I9PT1cIj5cInx8VC5vcGVyYXRvcj09PVwiPj1cIj9FPWtlKEUsVCx3KTpULm9wZXJhdG9yPT09XCI8XCJ8fFQub3BlcmF0b3I9PT1cIjw9XCI/UT1lKFEsVCx3KTpCLmFkZChULnNlbXZlcik7aWYoQi5zaXplPjEpcmV0dXJuIG51bGw7bGV0IGxlO2lmKEUmJlEpe2lmKGxlPXByKEUuc2VtdmVyLFEuc2VtdmVyLHcpLGxlPjApcmV0dXJuIG51bGw7aWYobGU9PT0wJiYoRS5vcGVyYXRvciE9PVwiPj1cInx8US5vcGVyYXRvciE9PVwiPD1cIikpcmV0dXJuIG51bGx9Zm9yKGxldCBUIG9mIEIpe2lmKEUmJiFrcihULFN0cmluZyhFKSx3KXx8USYmIWtyKFQsU3RyaW5nKFEpLHcpKXJldHVybiBudWxsO2ZvcihsZXQgSyBvZiBDKWlmKCFrcihULFN0cmluZyhLKSx3KSlyZXR1cm4hMTtyZXR1cm4hMH1sZXQgTixwLG0sRyxvZT1RJiYhdy5pbmNsdWRlUHJlcmVsZWFzZSYmUS5zZW12ZXIucHJlcmVsZWFzZS5sZW5ndGg/US5zZW12ZXI6ITEsZj1FJiYhdy5pbmNsdWRlUHJlcmVsZWFzZSYmRS5zZW12ZXIucHJlcmVsZWFzZS5sZW5ndGg/RS5zZW12ZXI6ITE7b2UmJm9lLnByZXJlbGVhc2UubGVuZ3RoPT09MSYmUS5vcGVyYXRvcj09PVwiPFwiJiZvZS5wcmVyZWxlYXNlWzBdPT09MCYmKG9lPSExKTtmb3IobGV0IFQgb2YgQyl7aWYoRz1HfHxULm9wZXJhdG9yPT09XCI+XCJ8fFQub3BlcmF0b3I9PT1cIj49XCIsbT1tfHxULm9wZXJhdG9yPT09XCI8XCJ8fFQub3BlcmF0b3I9PT1cIjw9XCIsRSl7aWYoZiYmVC5zZW12ZXIucHJlcmVsZWFzZSYmVC5zZW12ZXIucHJlcmVsZWFzZS5sZW5ndGgmJlQuc2VtdmVyLm1ham9yPT09Zi5tYWpvciYmVC5zZW12ZXIubWlub3I9PT1mLm1pbm9yJiZULnNlbXZlci5wYXRjaD09PWYucGF0Y2gmJihmPSExKSxULm9wZXJhdG9yPT09XCI+XCJ8fFQub3BlcmF0b3I9PT1cIj49XCIpe2lmKE49a2UoRSxULHcpLE49PT1UJiZOIT09RSlyZXR1cm4hMX1lbHNlIGlmKEUub3BlcmF0b3I9PT1cIj49XCImJiFrcihFLnNlbXZlcixTdHJpbmcoVCksdykpcmV0dXJuITF9aWYoUSl7aWYob2UmJlQuc2VtdmVyLnByZXJlbGVhc2UmJlQuc2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoJiZULnNlbXZlci5tYWpvcj09PW9lLm1ham9yJiZULnNlbXZlci5taW5vcj09PW9lLm1pbm9yJiZULnNlbXZlci5wYXRjaD09PW9lLnBhdGNoJiYob2U9ITEpLFQub3BlcmF0b3I9PT1cIjxcInx8VC5vcGVyYXRvcj09PVwiPD1cIil7aWYocD1lKFEsVCx3KSxwPT09VCYmcCE9PVEpcmV0dXJuITF9ZWxzZSBpZihRLm9wZXJhdG9yPT09XCI8PVwiJiYha3IoUS5zZW12ZXIsU3RyaW5nKFQpLHcpKXJldHVybiExfWlmKCFULm9wZXJhdG9yJiYoUXx8RSkmJmxlIT09MClyZXR1cm4hMX1yZXR1cm4hKEUmJm0mJiFRJiZsZSE9PTB8fFEmJkcmJiFFJiZsZSE9PTB8fGZ8fG9lKX0sa2U9KGEsQyx3KT0+e2lmKCFhKXJldHVybiBDO2xldCBCPXByKGEuc2VtdmVyLEMuc2VtdmVyLHcpO3JldHVybiBCPjA/YTpCPDB8fEMub3BlcmF0b3I9PT1cIj5cIiYmYS5vcGVyYXRvcj09PVwiPj1cIj9DOmF9LGU9KGEsQyx3KT0+e2lmKCFhKXJldHVybiBDO2xldCBCPXByKGEuc2VtdmVyLEMuc2VtdmVyLHcpO3JldHVybiBCPDA/YTpCPjB8fEMub3BlcmF0b3I9PT1cIjxcIiYmYS5vcGVyYXRvcj09PVwiPD1cIj9DOmF9O3JlLmV4cG9ydHM9THJ9fSksUVQ9T2Eoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9pbmRleC5qc1wiKE0scmUpe0VhKCk7dmFyIFZlPXd2KCk7cmUuZXhwb3J0cz17cmU6VmUucmUsc3JjOlZlLnNyYyx0b2tlbnM6VmUudCxTRU1WRVJfU1BFQ19WRVJTSU9OOkQxKCkuU0VNVkVSX1NQRUNfVkVSU0lPTixTZW1WZXI6TGYoKSxjb21wYXJlSWRlbnRpZmllcnM6QlQoKS5jb21wYXJlSWRlbnRpZmllcnMscmNvbXBhcmVJZGVudGlmaWVyczpCVCgpLnJjb21wYXJlSWRlbnRpZmllcnMscGFyc2U6T3YoKSx2YWxpZDpLaigpLGNsZWFuOkdqKCksaW5jOkhqKCksZGlmZjpYaigpLG1ham9yOlFqKCksbWlub3I6WWooKSxwYXRjaDokaigpLHByZXJlbGVhc2U6WmooKSxjb21wYXJlOm5kKCkscmNvbXBhcmU6ZVUoKSxjb21wYXJlTG9vc2U6clUoKSxjb21wYXJlQnVpbGQ6VlQoKSxzb3J0OmlVKCkscnNvcnQ6dFUoKSxndDpUMSgpLGx0OktUKCksZXE6cVQoKSxuZXE6SjQoKSxndGU6R1QoKSxsdGU6SFQoKSxjbXA6ajQoKSxjb2VyY2U6YVUoKSxDb21wYXJhdG9yOngxKCksUmFuZ2U6b2QoKSxzYXRpc2ZpZXM6RTEoKSx0b0NvbXBhcmF0b3JzOmNVKCksbWF4U2F0aXNmeWluZzp1VSgpLG1pblNhdGlzZnlpbmc6bFUoKSxtaW5WZXJzaW9uOmZVKCksdmFsaWRSYW5nZTpfVSgpLG91dHNpZGU6WFQoKSxndHI6cFUoKSxsdHI6ZFUoKSxpbnRlcnNlY3RzOmdVKCksc2ltcGxpZnlSYW5nZTptVSgpLHN1YnNldDp2VSgpfX19KSxVND17fTtoMShVNCx7YmFzZW5hbWU6KCk9Pks0LGRlZmF1bHQ6KCk9Pkg0LGRlbGltaXRlcjooKT0+alQsZGlybmFtZTooKT0+VjQsZXh0bmFtZTooKT0+RzQsaXNBYnNvbHV0ZTooKT0+JFQsam9pbjooKT0+VzQsbm9ybWFsaXplOigpPT5ZVCxyZWxhdGl2ZTooKT0+cTQscmVzb2x2ZTooKT0+eTEsc2VwOigpPT5KVH0pO2Z1bmN0aW9uIHo0KE0scmUpe2Zvcih2YXIgVmU9MCxLZT1NLmxlbmd0aC0xO0tlPj0wO0tlLS0pe3ZhciBvaT1NW0tlXTtvaT09PVwiLlwiP00uc3BsaWNlKEtlLDEpOm9pPT09XCIuLlwiPyhNLnNwbGljZShLZSwxKSxWZSsrKTpWZSYmKE0uc3BsaWNlKEtlLDEpLFZlLS0pfWlmKHJlKWZvcig7VmUtLTtWZSlNLnVuc2hpZnQoXCIuLlwiKTtyZXR1cm4gTX1mdW5jdGlvbiB5MSgpe2Zvcih2YXIgTT1cIlwiLHJlPSExLFZlPWFyZ3VtZW50cy5sZW5ndGgtMTtWZT49LTEmJiFyZTtWZS0tKXt2YXIgS2U9VmU+PTA/YXJndW1lbnRzW1ZlXTpcIi9cIjtpZih0eXBlb2YgS2UhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzXCIpO2lmKCFLZSljb250aW51ZTtNPUtlK1wiL1wiK00scmU9S2UuY2hhckF0KDApPT09XCIvXCJ9cmV0dXJuIE09ejQoWlQoTS5zcGxpdChcIi9cIiksZnVuY3Rpb24ob2kpe3JldHVybiEhb2l9KSwhcmUpLmpvaW4oXCIvXCIpLChyZT9cIi9cIjpcIlwiKStNfHxcIi5cIn1mdW5jdGlvbiBZVChNKXt2YXIgcmU9JFQoTSksVmU9WDQoTSwtMSk9PT1cIi9cIjtyZXR1cm4gTT16NChaVChNLnNwbGl0KFwiL1wiKSxmdW5jdGlvbihLZSl7cmV0dXJuISFLZX0pLCFyZSkuam9pbihcIi9cIiksIU0mJiFyZSYmKE09XCIuXCIpLE0mJlZlJiYoTSs9XCIvXCIpLChyZT9cIi9cIjpcIlwiKStNfWZ1bmN0aW9uICRUKE0pe3JldHVybiBNLmNoYXJBdCgwKT09PVwiL1wifWZ1bmN0aW9uIFc0KCl7dmFyIE09QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBZVChaVChNLGZ1bmN0aW9uKHJlLFZlKXtpZih0eXBlb2YgcmUhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzXCIpO3JldHVybiByZX0pLmpvaW4oXCIvXCIpKX1mdW5jdGlvbiBxNChNLHJlKXtNPXkxKE0pLnN1YnN0cigxKSxyZT15MShyZSkuc3Vic3RyKDEpO2Z1bmN0aW9uIFZlKGtlKXtmb3IodmFyIGU9MDtlPGtlLmxlbmd0aCYma2VbZV09PT1cIlwiO2UrKyk7Zm9yKHZhciBhPWtlLmxlbmd0aC0xO2E+PTAmJmtlW2FdPT09XCJcIjthLS0pO3JldHVybiBlPmE/W106a2Uuc2xpY2UoZSxhLWUrMSl9Zm9yKHZhciBLZT1WZShNLnNwbGl0KFwiL1wiKSksb2k9VmUocmUuc3BsaXQoXCIvXCIpKSxrcj1NYXRoLm1pbihLZS5sZW5ndGgsb2kubGVuZ3RoKSxwcj1rcixMcj0wO0xyPGtyO0xyKyspaWYoS2VbTHJdIT09b2lbTHJdKXtwcj1McjticmVha31mb3IodmFyIGFyPVtdLExyPXByO0xyPEtlLmxlbmd0aDtMcisrKWFyLnB1c2goXCIuLlwiKTtyZXR1cm4gYXI9YXIuY29uY2F0KG9pLnNsaWNlKHByKSksYXIuam9pbihcIi9cIil9ZnVuY3Rpb24gVjQoTSl7dmFyIHJlPUMxKE0pLFZlPXJlWzBdLEtlPXJlWzFdO3JldHVybiFWZSYmIUtlP1wiLlwiOihLZSYmKEtlPUtlLnN1YnN0cigwLEtlLmxlbmd0aC0xKSksVmUrS2UpfWZ1bmN0aW9uIEs0KE0scmUpe3ZhciBWZT1DMShNKVsyXTtyZXR1cm4gcmUmJlZlLnN1YnN0cigtMSpyZS5sZW5ndGgpPT09cmUmJihWZT1WZS5zdWJzdHIoMCxWZS5sZW5ndGgtcmUubGVuZ3RoKSksVmV9ZnVuY3Rpb24gRzQoTSl7cmV0dXJuIEMxKE0pWzNdfWZ1bmN0aW9uIFpUKE0scmUpe2lmKE0uZmlsdGVyKXJldHVybiBNLmZpbHRlcihyZSk7Zm9yKHZhciBWZT1bXSxLZT0wO0tlPE0ubGVuZ3RoO0tlKyspcmUoTVtLZV0sS2UsTSkmJlZlLnB1c2goTVtLZV0pO3JldHVybiBWZX12YXIgaDQsQzEsSlQsalQsSDQsWDQseVU9UXkoe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxsczpwYXRoXCIoKXtFYSgpLGg0PS9eKFxcLz98KShbXFxzXFxTXSo/KSgoPzpcXC57MSwyfXxbXlxcL10rP3wpKFxcLlteLlxcL10qfCkpKD86W1xcL10qKSQvLEMxPWZ1bmN0aW9uKE0pe3JldHVybiBoNC5leGVjKE0pLnNsaWNlKDEpfSxKVD1cIi9cIixqVD1cIjpcIixIND17ZXh0bmFtZTpHNCxiYXNlbmFtZTpLNCxkaXJuYW1lOlY0LHNlcDpKVCxkZWxpbWl0ZXI6alQscmVsYXRpdmU6cTQsam9pbjpXNCxpc0Fic29sdXRlOiRULG5vcm1hbGl6ZTpZVCxyZXNvbHZlOnkxfSxYND1cImFiXCIuc3Vic3RyKC0xKT09PVwiYlwiP2Z1bmN0aW9uKE0scmUsVmUpe3JldHVybiBNLnN1YnN0cihyZSxWZSl9OmZ1bmN0aW9uKE0scmUsVmUpe3JldHVybiByZTwwJiYocmU9TS5sZW5ndGgrcmUpLE0uc3Vic3RyKHJlLFZlKX19fSksRnY9T2Eoe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxscy1jb21tb25qczpwYXRoXCIoTSxyZSl7RWEoKTt2YXIgVmU9KHlVKCksbXAoVTQpKTtpZihWZSYmVmUuZGVmYXVsdCl7cmUuZXhwb3J0cz1WZS5kZWZhdWx0O2ZvcihsZXQgS2UgaW4gVmUpcmUuZXhwb3J0c1tLZV09VmVbS2VdfWVsc2UgVmUmJihyZS5leHBvcnRzPVZlKX19KSxRND17fTtoMShRNCx7ZGVmYXVsdDooKT0+WTR9KTt2YXIgWTQsaFU9UXkoe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxsczpmc1wiKCl7RWEoKSxZND17fX19KSxleD1PYSh7XCJub2RlLW1vZHVsZXMtcG9seWZpbGxzLWNvbW1vbmpzOmZzXCIoTSxyZSl7RWEoKTt2YXIgVmU9KGhVKCksbXAoUTQpKTtpZihWZSYmVmUuZGVmYXVsdCl7cmUuZXhwb3J0cz1WZS5kZWZhdWx0O2ZvcihsZXQgS2UgaW4gVmUpcmUuZXhwb3J0c1tLZV09VmVbS2VdfWVsc2UgVmUmJihyZS5leHBvcnRzPVZlKX19KSxfdT1PYSh7XCJub2RlX21vZHVsZXMvdHlwZXNjcmlwdC9saWIvdHlwZXNjcmlwdC5qc1wiKE0scmUpe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIFZlPU0mJk0uX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oZSxhLEMpe2lmKEN8fGFyZ3VtZW50cy5sZW5ndGg9PT0yKWZvcih2YXIgdz0wLEI9YS5sZW5ndGgsRTt3PEI7dysrKShFfHwhKHcgaW4gYSkpJiYoRXx8KEU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwLHcpKSxFW3ddPWFbd10pO3JldHVybiBlLmNvbmNhdChFfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhKSl9LEtlPU0mJk0uX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEtlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgYSxDPTEsdz1hcmd1bWVudHMubGVuZ3RoO0M8dztDKyspe2E9YXJndW1lbnRzW0NdO2Zvcih2YXIgQiBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLEIpJiYoZVtCXT1hW0JdKX1yZXR1cm4gZX0sS2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxvaT1NJiZNLl9fbWFrZVRlbXBsYXRlT2JqZWN0fHxmdW5jdGlvbihlLGEpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJyYXdcIix7dmFsdWU6YX0pOmUucmF3PWEsZX0sa3I9TSYmTS5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZSxhKXt2YXIgQz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoRVswXSYxKXRocm93IEVbMV07cmV0dXJuIEVbMV19LHRyeXM6W10sb3BzOltdfSx3LEIsRSxRO3JldHVybiBRPXtuZXh0OmxlKDApLHRocm93OmxlKDEpLHJldHVybjpsZSgyKX0sdHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiYoUVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxRO2Z1bmN0aW9uIGxlKHApe3JldHVybiBmdW5jdGlvbihtKXtyZXR1cm4gTihbcCxtXSl9fWZ1bmN0aW9uIE4ocCl7aWYodyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO0M7KXRyeXtpZih3PTEsQiYmKEU9cFswXSYyP0IucmV0dXJuOnBbMF0/Qi50aHJvd3x8KChFPUIucmV0dXJuKSYmRS5jYWxsKEIpLDApOkIubmV4dCkmJiEoRT1FLmNhbGwoQixwWzFdKSkuZG9uZSlyZXR1cm4gRTtzd2l0Y2goQj0wLEUmJihwPVtwWzBdJjIsRS52YWx1ZV0pLHBbMF0pe2Nhc2UgMDpjYXNlIDE6RT1wO2JyZWFrO2Nhc2UgNDpyZXR1cm4gQy5sYWJlbCsrLHt2YWx1ZTpwWzFdLGRvbmU6ITF9O2Nhc2UgNTpDLmxhYmVsKyssQj1wWzFdLHA9WzBdO2NvbnRpbnVlO2Nhc2UgNzpwPUMub3BzLnBvcCgpLEMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKEU9Qy50cnlzLCEoRT1FLmxlbmd0aD4wJiZFW0UubGVuZ3RoLTFdKSYmKHBbMF09PT02fHxwWzBdPT09Mikpe0M9MDtjb250aW51ZX1pZihwWzBdPT09MyYmKCFFfHxwWzFdPkVbMF0mJnBbMV08RVszXSkpe0MubGFiZWw9cFsxXTticmVha31pZihwWzBdPT09NiYmQy5sYWJlbDxFWzFdKXtDLmxhYmVsPUVbMV0sRT1wO2JyZWFrfWlmKEUmJkMubGFiZWw8RVsyXSl7Qy5sYWJlbD1FWzJdLEMub3BzLnB1c2gocCk7YnJlYWt9RVsyXSYmQy5vcHMucG9wKCksQy50cnlzLnBvcCgpO2NvbnRpbnVlfXA9YS5jYWxsKGUsQyl9Y2F0Y2gobSl7cD1bNixtXSxCPTB9ZmluYWxseXt3PUU9MH1pZihwWzBdJjUpdGhyb3cgcFsxXTtyZXR1cm57dmFsdWU6cFswXT9wWzFdOnZvaWQgMCxkb25lOiEwfX19LHByPU0mJk0uX19yZXN0fHxmdW5jdGlvbihlLGEpe3ZhciBDPXt9O2Zvcih2YXIgdyBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHcpJiZhLmluZGV4T2Yodyk8MCYmKENbd109ZVt3XSk7aWYoZSE9bnVsbCYmdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM9PVwiZnVuY3Rpb25cIilmb3IodmFyIEI9MCx3PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Qjx3Lmxlbmd0aDtCKyspYS5pbmRleE9mKHdbQl0pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHdbQl0pJiYoQ1t3W0JdXT1lW3dbQl1dKTtyZXR1cm4gQ30sTHI9TSYmTS5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oYSxDKXtyZXR1cm4gZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odyxCKXt3Ll9fcHJvdG9fXz1CfXx8ZnVuY3Rpb24odyxCKXtmb3IodmFyIEUgaW4gQilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQixFKSYmKHdbRV09QltFXSl9LGUoYSxDKX07cmV0dXJuIGZ1bmN0aW9uKGEsQyl7aWYodHlwZW9mIEMhPVwiZnVuY3Rpb25cIiYmQyE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKEMpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZShhLEMpO2Z1bmN0aW9uIHcoKXt0aGlzLmNvbnN0cnVjdG9yPWF9YS5wcm90b3R5cGU9Qz09PW51bGw/T2JqZWN0LmNyZWF0ZShDKToody5wcm90b3R5cGU9Qy5wcm90b3R5cGUsbmV3IHcpfX0oKSxrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYSgpe3ZhciBLPXt9O3JldHVybiBLLnByZXY9Syx7aGVhZDpLLHRhaWw6SyxzaXplOjB9fWZ1bmN0aW9uIEMoSyxiKXtyZXR1cm57a2V5OkssdmFsdWU6YixuZXh0OnZvaWQgMCxwcmV2OnZvaWQgMH19ZnVuY3Rpb24gdyhLLGIpe3JldHVybiBLPT09Ynx8SyE9PUsmJmIhPT1ifWZ1bmN0aW9uIEIoSyl7dmFyIGI9Sy5wcmV2O2lmKCFifHxiPT09Syl0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIHN0YXRlXCIpO3JldHVybiBifWZ1bmN0aW9uIEUoSyl7Zm9yKDtLOyl7dmFyIGI9IUsucHJldjtpZihLPUsubmV4dCwhYilyZXR1cm4gS319ZnVuY3Rpb24gUShLLGIpe2Zvcih2YXIgc2U9Sy50YWlsO3NlIT09Sy5oZWFkO3NlPUIoc2UpKWlmKHcoc2Uua2V5LGIpKXJldHVybiBzZX1mdW5jdGlvbiBsZShLLGIsc2Upe3ZhciBKPVEoSyxiKTtpZihKKXtKLnZhbHVlPXNlO3JldHVybn12YXIgaWU9QyhiLHNlKTtyZXR1cm4gaWUucHJldj1LLnRhaWwsSy50YWlsLm5leHQ9aWUsSy50YWlsPWllLEsuc2l6ZSsrLGllfWZ1bmN0aW9uIE4oSyxiKXtmb3IodmFyIHNlPUsudGFpbDtzZSE9PUsuaGVhZDtzZT1CKHNlKSl7aWYoc2UucHJldj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIHN0YXRlXCIpO2lmKHcoc2Uua2V5LGIpKXtpZihzZS5uZXh0KXNlLm5leHQucHJldj1zZS5wcmV2O2Vsc2V7aWYoSy50YWlsIT09c2UpdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBzdGF0ZVwiKTtLLnRhaWw9c2UucHJldn1yZXR1cm4gc2UucHJldi5uZXh0PXNlLm5leHQsc2UubmV4dD1zZS5wcmV2LHNlLnByZXY9dm9pZCAwLEsuc2l6ZS0tLHNlfX19ZnVuY3Rpb24gcChLKXtmb3IodmFyIGI9Sy50YWlsO2IhPT1LLmhlYWQ7KXt2YXIgc2U9QihiKTtiLm5leHQ9Sy5oZWFkLGIucHJldj12b2lkIDAsYj1zZX1LLmhlYWQubmV4dD12b2lkIDAsSy50YWlsPUsuaGVhZCxLLnNpemU9MH1mdW5jdGlvbiBtKEssYil7Zm9yKHZhciBzZT1LLmhlYWQ7c2U7KXNlPUUoc2UpLHNlJiZiKHNlLnZhbHVlLHNlLmtleSl9ZnVuY3Rpb24gRyhLLGIpe2lmKEspZm9yKHZhciBzZT1LLm5leHQoKTshc2UuZG9uZTtzZT1LLm5leHQoKSliKHNlLnZhbHVlKX1mdW5jdGlvbiBvZShLLGIpe3JldHVybntjdXJyZW50OksuaGVhZCxzZWxlY3RvcjpifX1mdW5jdGlvbiBmKEspe3JldHVybiBLLmN1cnJlbnQ9RShLLmN1cnJlbnQpLEsuY3VycmVudD97dmFsdWU6Sy5zZWxlY3RvcihLLmN1cnJlbnQua2V5LEsuY3VycmVudC52YWx1ZSksZG9uZTohMX06e3ZhbHVlOnZvaWQgMCxkb25lOiEwfX12YXIgVDsoZnVuY3Rpb24oSyl7ZnVuY3Rpb24gYihKKXt2YXIgaWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBSKHEsTyl7dGhpcy5fZGF0YT1vZShxLE8pfXJldHVybiBSLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpcy5fZGF0YSl9LFJ9KCk7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gUihxKXt2YXIgTz10aGlzO3RoaXMuX21hcERhdGE9YSgpLEcoSihxKSxmdW5jdGlvbih2ZSl7dmFyIGVlPXZlWzBdLGhlPXZlWzFdO3JldHVybiBPLnNldChlZSxoZSl9KX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFIucHJvdG90eXBlLFwic2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwRGF0YS5zaXplfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLFIucHJvdG90eXBlLmdldD1mdW5jdGlvbihxKXt2YXIgTztyZXR1cm4oTz1RKHRoaXMuX21hcERhdGEscSkpPT09bnVsbHx8Tz09PXZvaWQgMD92b2lkIDA6Ty52YWx1ZX0sUi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHEsTyl7cmV0dXJuIGxlKHRoaXMuX21hcERhdGEscSxPKSx0aGlzfSxSLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24ocSl7cmV0dXJuISFRKHRoaXMuX21hcERhdGEscSl9LFIucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihxKXtyZXR1cm4hIU4odGhpcy5fbWFwRGF0YSxxKX0sUi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtwKHRoaXMuX21hcERhdGEpfSxSLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpZSh0aGlzLl9tYXBEYXRhLGZ1bmN0aW9uKHEsTyl7cmV0dXJuIHF9KX0sUi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpZSh0aGlzLl9tYXBEYXRhLGZ1bmN0aW9uKHEsTyl7cmV0dXJuIE99KX0sUi5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3JldHVybiBuZXcgaWUodGhpcy5fbWFwRGF0YSxmdW5jdGlvbihxLE8pe3JldHVybltxLE9dfSl9LFIucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24ocSl7bSh0aGlzLl9tYXBEYXRhLHEpfSxSfSgpfUsuY3JlYXRlTWFwU2hpbT1iO2Z1bmN0aW9uIHNlKEope3ZhciBpZT1mdW5jdGlvbigpe2Z1bmN0aW9uIFIocSxPKXt0aGlzLl9kYXRhPW9lKHEsTyl9cmV0dXJuIFIucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLl9kYXRhKX0sUn0oKTtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBSKHEpe3ZhciBPPXRoaXM7dGhpcy5fbWFwRGF0YT1hKCksRyhKKHEpLGZ1bmN0aW9uKHZlKXtyZXR1cm4gTy5hZGQodmUpfSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLnByb3RvdHlwZSxcInNpemVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcERhdGEuc2l6ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxSLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24ocSl7cmV0dXJuIGxlKHRoaXMuX21hcERhdGEscSxxKSx0aGlzfSxSLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24ocSl7cmV0dXJuISFRKHRoaXMuX21hcERhdGEscSl9LFIucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihxKXtyZXR1cm4hIU4odGhpcy5fbWFwRGF0YSxxKX0sUi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtwKHRoaXMuX21hcERhdGEpfSxSLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpZSh0aGlzLl9tYXBEYXRhLGZ1bmN0aW9uKHEsTyl7cmV0dXJuIHF9KX0sUi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpZSh0aGlzLl9tYXBEYXRhLGZ1bmN0aW9uKHEsTyl7cmV0dXJuIE99KX0sUi5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3JldHVybiBuZXcgaWUodGhpcy5fbWFwRGF0YSxmdW5jdGlvbihxLE8pe3JldHVybltxLE9dfSl9LFIucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24ocSl7bSh0aGlzLl9tYXBEYXRhLHEpfSxSfSgpfUsuY3JlYXRlU2V0U2hpbT1zZX0pKFQ9ZS5TaGltQ29sbGVjdGlvbnN8fChlLlNoaW1Db2xsZWN0aW9ucz17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZS52ZXJzaW9uTWFqb3JNaW5vcj1cIjQuN1wiLGUudmVyc2lvbj1cIjQuNy4yXCI7dmFyIGE7KGZ1bmN0aW9uKEIpe0JbQi5MZXNzVGhhbj0tMV09XCJMZXNzVGhhblwiLEJbQi5FcXVhbFRvPTBdPVwiRXF1YWxUb1wiLEJbQi5HcmVhdGVyVGhhbj0xXT1cIkdyZWF0ZXJUaGFuXCJ9KShhPWUuQ29tcGFyaXNvbnx8KGUuQ29tcGFyaXNvbj17fSkpO3ZhciBDOyhmdW5jdGlvbihCKXt2YXIgRT10eXBlb2YgZ2xvYmFsVGhpczxcInVcInx8dHlwZW9mIGdsb2JhbFRoaXM8XCJ1XCI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjxcInVcIj9zZWxmOnZvaWQgMDtmdW5jdGlvbiBRKCl7dmFyIE49RT09bnVsbD92b2lkIDA6RS5NYXA7cmV0dXJuIHR5cGVvZiBOPFwidVwiJiZcImVudHJpZXNcImluIE4ucHJvdG90eXBlJiZuZXcgTihbWzAsMF1dKS5zaXplPT09MT9OOnZvaWQgMH1CLnRyeUdldE5hdGl2ZU1hcD1RO2Z1bmN0aW9uIGxlKCl7dmFyIE49RT09bnVsbD92b2lkIDA6RS5TZXQ7cmV0dXJuIHR5cGVvZiBOPFwidVwiJiZcImVudHJpZXNcImluIE4ucHJvdG90eXBlJiZuZXcgTihbMF0pLnNpemU9PT0xP046dm9pZCAwfUIudHJ5R2V0TmF0aXZlU2V0PWxlfSkoQ3x8KEM9e30pKSxlLk1hcD13KFwiTWFwXCIsXCJ0cnlHZXROYXRpdmVNYXBcIixcImNyZWF0ZU1hcFNoaW1cIiksZS5TZXQ9dyhcIlNldFwiLFwidHJ5R2V0TmF0aXZlU2V0XCIsXCJjcmVhdGVTZXRTaGltXCIpO2Z1bmN0aW9uIHcoQixFLFEpe3ZhciBsZSxOPShsZT1DW0VdKCkpIT09bnVsbCYmbGUhPT12b2lkIDA/bGU6ZS5TaGltQ29sbGVjdGlvbnM9PT1udWxsfHxlLlNoaW1Db2xsZWN0aW9ucz09PXZvaWQgMD92b2lkIDA6ZS5TaGltQ29sbGVjdGlvbnNbUV0oZS5nZXRJdGVyYXRvcik7aWYoTilyZXR1cm4gTjt0aHJvdyBuZXcgRXJyb3IoXCJUeXBlU2NyaXB0IHJlcXVpcmVzIGFuIGVudmlyb25tZW50IHRoYXQgcHJvdmlkZXMgYSBjb21wYXRpYmxlIG5hdGl2ZSBcIi5jb25jYXQoQixcIiBpbXBsZW1lbnRhdGlvbi5cIikpfX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoUyl7aWYoUyl7aWYoT2UoUykpcmV0dXJuIEJyKFMpO2lmKFMgaW5zdGFuY2VvZiBlLk1hcClyZXR1cm4gUy5lbnRyaWVzKCk7aWYoUyBpbnN0YW5jZW9mIGUuU2V0KXJldHVybiBTLnZhbHVlcygpO3Rocm93IG5ldyBFcnJvcihcIkl0ZXJhdGlvbiBub3Qgc3VwcG9ydGVkLlwiKX19ZS5nZXRJdGVyYXRvcj1hLGUuZW1wdHlBcnJheT1bXSxlLmVtcHR5TWFwPW5ldyBlLk1hcCxlLmVtcHR5U2V0PW5ldyBlLlNldDtmdW5jdGlvbiBDKFMpe3JldHVybiBTP1MubGVuZ3RoOjB9ZS5sZW5ndGg9QztmdW5jdGlvbiB3KFMsQ2Upe2lmKFMpZm9yKHZhciBxZT0wO3FlPFMubGVuZ3RoO3FlKyspe3ZhciBicj1DZShTW3FlXSxxZSk7aWYoYnIpcmV0dXJuIGJyfX1lLmZvckVhY2g9dztmdW5jdGlvbiBCKFMsQ2Upe2lmKFMpZm9yKHZhciBxZT1TLmxlbmd0aC0xO3FlPj0wO3FlLS0pe3ZhciBicj1DZShTW3FlXSxxZSk7aWYoYnIpcmV0dXJuIGJyfX1lLmZvckVhY2hSaWdodD1CO2Z1bmN0aW9uIEUoUyxDZSl7aWYoUyE9PXZvaWQgMClmb3IodmFyIHFlPTA7cWU8Uy5sZW5ndGg7cWUrKyl7dmFyIGJyPUNlKFNbcWVdLHFlKTtpZihiciE9PXZvaWQgMClyZXR1cm4gYnJ9fWUuZmlyc3REZWZpbmVkPUU7ZnVuY3Rpb24gUShTLENlKXtmb3IoOzspe3ZhciBxZT1TLm5leHQoKTtpZihxZS5kb25lKXJldHVybjt2YXIgYnI9Q2UocWUudmFsdWUpO2lmKGJyIT09dm9pZCAwKXJldHVybiBicn19ZS5maXJzdERlZmluZWRJdGVyYXRvcj1RO2Z1bmN0aW9uIGxlKFMsQ2UscWUpe3ZhciBicj1xZTtpZihTKWZvcih2YXIgWnI9Uy5uZXh0KCksU2k9MDshWnIuZG9uZTtacj1TLm5leHQoKSxTaSsrKWJyPUNlKGJyLFpyLnZhbHVlLFNpKTtyZXR1cm4gYnJ9ZS5yZWR1Y2VMZWZ0SXRlcmF0b3I9bGU7ZnVuY3Rpb24gTihTLENlLHFlKXt2YXIgYnI9W107ZS5EZWJ1Zy5hc3NlcnRFcXVhbChTLmxlbmd0aCxDZS5sZW5ndGgpO2Zvcih2YXIgWnI9MDtacjxTLmxlbmd0aDtacisrKWJyLnB1c2gocWUoU1tacl0sQ2VbWnJdLFpyKSk7cmV0dXJuIGJyfWUuemlwV2l0aD1OO2Z1bmN0aW9uIHAoUyxDZSl7ZS5EZWJ1Zy5hc3NlcnRFcXVhbChTLmxlbmd0aCxDZS5sZW5ndGgpO3ZhciBxZT0wO3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHFlPT09Uy5sZW5ndGg/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfToocWUrKyx7dmFsdWU6W1NbcWUtMV0sQ2VbcWUtMV1dLGRvbmU6ITF9KX19fWUuemlwVG9JdGVyYXRvcj1wO2Z1bmN0aW9uIG0oUyxDZSl7ZS5EZWJ1Zy5hc3NlcnQoUy5sZW5ndGg9PT1DZS5sZW5ndGgpO2Zvcih2YXIgcWU9bmV3IGUuTWFwLGJyPTA7YnI8Uy5sZW5ndGg7KyticilxZS5zZXQoU1ticl0sQ2VbYnJdKTtyZXR1cm4gcWV9ZS56aXBUb01hcD1tO2Z1bmN0aW9uIEcoUyxDZSl7aWYoUy5sZW5ndGg8PTEpcmV0dXJuIFM7Zm9yKHZhciBxZT1bXSxicj0wLFpyPVMubGVuZ3RoO2JyPFpyO2JyKyspYnImJnFlLnB1c2goQ2UpLHFlLnB1c2goU1ticl0pO3JldHVybiBxZX1lLmludGVyc3BlcnNlPUc7ZnVuY3Rpb24gb2UoUyxDZSl7aWYoUyl7Zm9yKHZhciBxZT0wO3FlPFMubGVuZ3RoO3FlKyspaWYoIUNlKFNbcWVdLHFlKSlyZXR1cm4hMX1yZXR1cm4hMH1lLmV2ZXJ5PW9lO2Z1bmN0aW9uIGYoUyxDZSl7Zm9yKHZhciBxZT0wO3FlPFMubGVuZ3RoO3FlKyspe3ZhciBicj1TW3FlXTtpZihDZShicixxZSkpcmV0dXJuIGJyfX1lLmZpbmQ9ZjtmdW5jdGlvbiBUKFMsQ2Upe2Zvcih2YXIgcWU9Uy5sZW5ndGgtMTtxZT49MDtxZS0tKXt2YXIgYnI9U1txZV07aWYoQ2UoYnIscWUpKXJldHVybiBicn19ZS5maW5kTGFzdD1UO2Z1bmN0aW9uIEsoUyxDZSxxZSl7Zm9yKHZhciBicj1xZXx8MDticjxTLmxlbmd0aDticisrKWlmKENlKFNbYnJdLGJyKSlyZXR1cm4gYnI7cmV0dXJuLTF9ZS5maW5kSW5kZXg9SztmdW5jdGlvbiBiKFMsQ2UscWUpe2Zvcih2YXIgYnI9cWU9PT12b2lkIDA/Uy5sZW5ndGgtMTpxZTticj49MDtici0tKWlmKENlKFNbYnJdLGJyKSlyZXR1cm4gYnI7cmV0dXJuLTF9ZS5maW5kTGFzdEluZGV4PWI7ZnVuY3Rpb24gc2UoUyxDZSl7Zm9yKHZhciBxZT0wO3FlPFMubGVuZ3RoO3FlKyspe3ZhciBicj1DZShTW3FlXSxxZSk7aWYoYnIpcmV0dXJuIGJyfXJldHVybiBlLkRlYnVnLmZhaWwoKX1lLmZpbmRNYXA9c2U7ZnVuY3Rpb24gSihTLENlLHFlKXtpZihxZT09PXZvaWQgMCYmKHFlPXV0KSxTKWZvcih2YXIgYnI9MCxacj1TO2JyPFpyLmxlbmd0aDticisrKXt2YXIgU2k9WnJbYnJdO2lmKHFlKFNpLENlKSlyZXR1cm4hMH1yZXR1cm4hMX1lLmNvbnRhaW5zPUo7ZnVuY3Rpb24gaWUoUyxDZSxxZSl7cmV0dXJuIHFlPT09dm9pZCAwJiYocWU9dXQpLFMubGVuZ3RoPT09Q2UubGVuZ3RoJiZTLmV2ZXJ5KGZ1bmN0aW9uKGJyLFpyKXtyZXR1cm4gcWUoYnIsQ2VbWnJdKX0pfWUuYXJyYXlzRXF1YWw9aWU7ZnVuY3Rpb24gUihTLENlLHFlKXtmb3IodmFyIGJyPXFlfHwwO2JyPFMubGVuZ3RoO2JyKyspaWYoSihDZSxTLmNoYXJDb2RlQXQoYnIpKSlyZXR1cm4gYnI7cmV0dXJuLTF9ZS5pbmRleE9mQW55Q2hhckNvZGU9UjtmdW5jdGlvbiBxKFMsQ2Upe3ZhciBxZT0wO2lmKFMpZm9yKHZhciBicj0wO2JyPFMubGVuZ3RoO2JyKyspe3ZhciBacj1TW2JyXTtDZShacixicikmJnFlKyt9cmV0dXJuIHFlfWUuY291bnRXaGVyZT1xO2Z1bmN0aW9uIE8oUyxDZSl7aWYoUyl7Zm9yKHZhciBxZT1TLmxlbmd0aCxicj0wO2JyPHFlJiZDZShTW2JyXSk7KWJyKys7aWYoYnI8cWUpe3ZhciBacj1TLnNsaWNlKDAsYnIpO2ZvcihicisrO2JyPHFlOyl7dmFyIFNpPVNbYnJdO0NlKFNpKSYmWnIucHVzaChTaSksYnIrK31yZXR1cm4gWnJ9fXJldHVybiBTfWUuZmlsdGVyPU87ZnVuY3Rpb24gdmUoUyxDZSl7Zm9yKHZhciBxZT0wLGJyPTA7YnI8Uy5sZW5ndGg7YnIrKylDZShTW2JyXSxicixTKSYmKFNbcWVdPVNbYnJdLHFlKyspO1MubGVuZ3RoPXFlfWUuZmlsdGVyTXV0YXRlPXZlO2Z1bmN0aW9uIGVlKFMpe1MubGVuZ3RoPTB9ZS5jbGVhcj1lZTtmdW5jdGlvbiBoZShTLENlKXt2YXIgcWU7aWYoUyl7cWU9W107Zm9yKHZhciBicj0wO2JyPFMubGVuZ3RoO2JyKyspcWUucHVzaChDZShTW2JyXSxicikpfXJldHVybiBxZX1lLm1hcD1oZTtmdW5jdGlvbiBGKFMsQ2Upe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7dmFyIHFlPVMubmV4dCgpO3JldHVybiBxZS5kb25lP3FlOnt2YWx1ZTpDZShxZS52YWx1ZSksZG9uZTohMX19fX1lLm1hcEl0ZXJhdG9yPUY7ZnVuY3Rpb24geChTLENlKXtpZihTKWZvcih2YXIgcWU9MDtxZTxTLmxlbmd0aDtxZSsrKXt2YXIgYnI9U1txZV0sWnI9Q2UoYnIscWUpO2lmKGJyIT09WnIpe3ZhciBTaT1TLnNsaWNlKDAscWUpO2ZvcihTaS5wdXNoKFpyKSxxZSsrO3FlPFMubGVuZ3RoO3FlKyspU2kucHVzaChDZShTW3FlXSxxZSkpO3JldHVybiBTaX19cmV0dXJuIFN9ZS5zYW1lTWFwPXg7ZnVuY3Rpb24gWChTKXtmb3IodmFyIENlPVtdLHFlPTAsYnI9UztxZTxici5sZW5ndGg7cWUrKyl7dmFyIFpyPWJyW3FlXTtaciYmKE9lKFpyKT9BZShDZSxacik6Q2UucHVzaChacikpfXJldHVybiBDZX1lLmZsYXR0ZW49WDtmdW5jdGlvbiAkKFMsQ2Upe3ZhciBxZTtpZihTKWZvcih2YXIgYnI9MDticjxTLmxlbmd0aDticisrKXt2YXIgWnI9Q2UoU1ticl0sYnIpO1pyJiYoT2UoWnIpP3FlPUFlKHFlLFpyKTpxZT13ZShxZSxacikpfXJldHVybiBxZXx8ZS5lbXB0eUFycmF5fWUuZmxhdE1hcD0kO2Z1bmN0aW9uIEEoUyxDZSl7dmFyIHFlPVtdO2lmKFMpZm9yKHZhciBicj0wO2JyPFMubGVuZ3RoO2JyKyspe3ZhciBacj1DZShTW2JyXSxicik7WnImJihPZShacik/QWUocWUsWnIpOnFlLnB1c2goWnIpKX1yZXR1cm4gcWV9ZS5mbGF0TWFwVG9NdXRhYmxlPUE7ZnVuY3Rpb24geShTLENlKXt2YXIgcWU9Uy5uZXh0KCk7aWYocWUuZG9uZSlyZXR1cm4gZS5lbXB0eUl0ZXJhdG9yO3ZhciBicj1acihxZS52YWx1ZSk7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtmb3IoOzspe3ZhciBTaT1ici5uZXh0KCk7aWYoIVNpLmRvbmUpcmV0dXJuIFNpO3ZhciBQaT1TLm5leHQoKTtpZihQaS5kb25lKXJldHVybiBQaTticj1acihQaS52YWx1ZSl9fX07ZnVuY3Rpb24gWnIoU2kpe3ZhciBQaT1DZShTaSk7cmV0dXJuIFBpPT09dm9pZCAwP2UuZW1wdHlJdGVyYXRvcjpPZShQaSk/QnIoUGkpOlBpfX1lLmZsYXRNYXBJdGVyYXRvcj15O2Z1bmN0aW9uIFYoUyxDZSl7dmFyIHFlO2lmKFMpZm9yKHZhciBicj0wO2JyPFMubGVuZ3RoO2JyKyspe3ZhciBacj1TW2JyXSxTaT1DZShacixicik7KHFlfHxaciE9PVNpfHxPZShTaSkpJiYocWV8fChxZT1TLnNsaWNlKDAsYnIpKSxPZShTaSk/QWUocWUsU2kpOnFlLnB1c2goU2kpKX1yZXR1cm4gcWV8fFN9ZS5zYW1lRmxhdE1hcD1WO2Z1bmN0aW9uIEwoUyxDZSl7Zm9yKHZhciBxZT1bXSxicj0wO2JyPFMubGVuZ3RoO2JyKyspe3ZhciBacj1DZShTW2JyXSxicik7aWYoWnI9PT12b2lkIDApcmV0dXJuO3FlLnB1c2goWnIpfXJldHVybiBxZX1lLm1hcEFsbE9yRmFpbD1MO2Z1bmN0aW9uIFAoUyxDZSl7dmFyIHFlPVtdO2lmKFMpZm9yKHZhciBicj0wO2JyPFMubGVuZ3RoO2JyKyspe3ZhciBacj1DZShTW2JyXSxicik7WnIhPT12b2lkIDAmJnFlLnB1c2goWnIpfXJldHVybiBxZX1lLm1hcERlZmluZWQ9UDtmdW5jdGlvbiBrKFMsQ2Upe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7Zm9yKDs7KXt2YXIgcWU9Uy5uZXh0KCk7aWYocWUuZG9uZSlyZXR1cm4gcWU7dmFyIGJyPUNlKHFlLnZhbHVlKTtpZihiciE9PXZvaWQgMClyZXR1cm57dmFsdWU6YnIsZG9uZTohMX19fX19ZS5tYXBEZWZpbmVkSXRlcmF0b3I9aztmdW5jdGlvbiBZKFMsQ2Upe2lmKCEhUyl7dmFyIHFlPW5ldyBlLk1hcDtyZXR1cm4gUy5mb3JFYWNoKGZ1bmN0aW9uKGJyLFpyKXt2YXIgU2k9Q2UoWnIsYnIpO2lmKFNpIT09dm9pZCAwKXt2YXIgUGk9U2lbMF0sUWk9U2lbMV07UGkhPT12b2lkIDAmJlFpIT09dm9pZCAwJiZxZS5zZXQoUGksUWkpfX0pLHFlfX1lLm1hcERlZmluZWRFbnRyaWVzPVk7ZnVuY3Rpb24gVShTLENlKXtpZihTKXt2YXIgcWU9bmV3IGUuU2V0O3JldHVybiBTLmZvckVhY2goZnVuY3Rpb24oYnIpe3ZhciBacj1DZShicik7WnIhPT12b2lkIDAmJnFlLmFkZChacil9KSxxZX19ZS5tYXBEZWZpbmVkVmFsdWVzPVU7ZnVuY3Rpb24gaihTLENlLHFlKXtpZihTLmhhcyhDZSkpcmV0dXJuIFMuZ2V0KENlKTt2YXIgYnI9cWUoKTtyZXR1cm4gUy5zZXQoQ2UsYnIpLGJyfWUuZ2V0T3JVcGRhdGU9ajtmdW5jdGlvbiBIKFMsQ2Upe3JldHVybiBTLmhhcyhDZSk/ITE6KFMuYWRkKENlKSwhMCl9ZS50cnlBZGRUb1NldD1ILGUuZW1wdHlJdGVyYXRvcj17bmV4dDpmdW5jdGlvbigpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtmdW5jdGlvbiBJKFMpe3ZhciBDZT0hMTtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3ZhciBxZT1DZTtyZXR1cm4gQ2U9ITAscWU/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTp7dmFsdWU6Uyxkb25lOiExfX19fWUuc2luZ2xlSXRlcmF0b3I9STtmdW5jdGlvbiBsKFMsQ2UscWUpe3ZhciBicjtpZihTKXticj1bXTtmb3IodmFyIFpyPVMubGVuZ3RoLFNpPXZvaWQgMCxQaT12b2lkIDAsUWk9MCxDdD0wO1FpPFpyOyl7Zm9yKDtDdDxacjspe3ZhciBzYT1TW0N0XTtpZihQaT1DZShzYSxDdCksQ3Q9PT0wKVNpPVBpO2Vsc2UgaWYoUGkhPT1TaSlicmVhaztDdCsrfWlmKFFpPEN0KXt2YXIgZW49cWUoUy5zbGljZShRaSxDdCksU2ksUWksQ3QpO2VuJiZici5wdXNoKGVuKSxRaT1DdH1TaT1QaSxDdCsrfX1yZXR1cm4gYnJ9ZS5zcGFuTWFwPWw7ZnVuY3Rpb24gZChTLENlKXtpZighIVMpe3ZhciBxZT1uZXcgZS5NYXA7cmV0dXJuIFMuZm9yRWFjaChmdW5jdGlvbihicixacil7dmFyIFNpPUNlKFpyLGJyKSxQaT1TaVswXSxRaT1TaVsxXTtxZS5zZXQoUGksUWkpfSkscWV9fWUubWFwRW50cmllcz1kO2Z1bmN0aW9uIEQoUyxDZSl7aWYoUylpZihDZSlmb3IodmFyIHFlPTAsYnI9UztxZTxici5sZW5ndGg7cWUrKyl7dmFyIFpyPWJyW3FlXTtpZihDZShacikpcmV0dXJuITB9ZWxzZSByZXR1cm4gUy5sZW5ndGg+MDtyZXR1cm4hMX1lLnNvbWU9RDtmdW5jdGlvbiBmZShTLENlLHFlKXtmb3IodmFyIGJyLFpyPTA7WnI8Uy5sZW5ndGg7WnIrKylDZShTW1pyXSk/YnI9YnI9PT12b2lkIDA/WnI6YnI6YnIhPT12b2lkIDAmJihxZShicixaciksYnI9dm9pZCAwKTticiE9PXZvaWQgMCYmcWUoYnIsUy5sZW5ndGgpfWUuZ2V0UmFuZ2VzV2hlcmU9ZmU7ZnVuY3Rpb24gZyhTLENlKXtyZXR1cm4gRChDZSk/RChTKT9WZShWZShbXSxTLCEwKSxDZSwhMCk6Q2U6U31lLmNvbmNhdGVuYXRlPWc7ZnVuY3Rpb24gbmUoUyxDZSl7cmV0dXJuIENlfWZ1bmN0aW9uIHVlKFMpe3JldHVybiBTLm1hcChuZSl9ZS5pbmRpY2VzT2Y9dWU7ZnVuY3Rpb24gV2UoUyxDZSxxZSl7dmFyIGJyPXVlKFMpO0NyKFMsYnIscWUpO2Zvcih2YXIgWnI9U1ticlswXV0sU2k9W2JyWzBdXSxQaT0xO1BpPGJyLmxlbmd0aDtQaSsrKXt2YXIgUWk9YnJbUGldLEN0PVNbUWldO0NlKFpyLEN0KXx8KFNpLnB1c2goUWkpLFpyPUN0KX1yZXR1cm4gU2kuc29ydCgpLFNpLm1hcChmdW5jdGlvbihzYSl7cmV0dXJuIFNbc2FdfSl9ZnVuY3Rpb24gRmUoUyxDZSl7Zm9yKHZhciBxZT1bXSxicj0wLFpyPVM7YnI8WnIubGVuZ3RoO2JyKyspe3ZhciBTaT1aclticl07ZXIocWUsU2ksQ2UpfXJldHVybiBxZX1mdW5jdGlvbiBaKFMsQ2UscWUpe3JldHVybiBTLmxlbmd0aD09PTA/W106Uy5sZW5ndGg9PT0xP1Muc2xpY2UoKTpxZT9XZShTLENlLHFlKTpGZShTLENlKX1lLmRlZHVwbGljYXRlPVo7ZnVuY3Rpb24gQmUoUyxDZSl7aWYoUy5sZW5ndGg9PT0wKXJldHVybiBlLmVtcHR5QXJyYXk7Zm9yKHZhciBxZT1TWzBdLGJyPVtxZV0sWnI9MTtacjxTLmxlbmd0aDtacisrKXt2YXIgU2k9U1tacl07c3dpdGNoKENlKFNpLHFlKSl7Y2FzZSEwOmNhc2UgMDpjb250aW51ZTtjYXNlLTE6cmV0dXJuIGUuRGVidWcuZmFpbChcIkFycmF5IGlzIHVuc29ydGVkLlwiKX1ici5wdXNoKHFlPVNpKX1yZXR1cm4gYnJ9ZnVuY3Rpb24gZ2UoKXtyZXR1cm5bXX1lLmNyZWF0ZVNvcnRlZEFycmF5PWdlO2Z1bmN0aW9uIFJlKFMsQ2UscWUsYnIpe2lmKFMubGVuZ3RoPT09MCl7Uy5wdXNoKENlKTtyZXR1cm59dmFyIFpyPWlpKFMsQ2UsdmkscWUpO1pyPDA/Uy5zcGxpY2UoflpyLDAsQ2UpOmJyJiZTLnNwbGljZShaciwwLENlKX1lLmluc2VydFNvcnRlZD1SZTtmdW5jdGlvbiB6ZShTLENlLHFlKXtyZXR1cm4gQmUoWWUoUyxDZSkscWV8fENlfHx3dCl9ZS5zb3J0QW5kRGVkdXBsaWNhdGU9emU7ZnVuY3Rpb24gRWUoUyxDZSl7aWYoUy5sZW5ndGg8MilyZXR1cm4hMDtmb3IodmFyIHFlPVNbMF0sYnI9MCxacj1TLnNsaWNlKDEpO2JyPFpyLmxlbmd0aDticisrKXt2YXIgU2k9WnJbYnJdO2lmKENlKHFlLFNpKT09PTEpcmV0dXJuITE7cWU9U2l9cmV0dXJuITB9ZS5hcnJheUlzU29ydGVkPUVlO2Z1bmN0aW9uIEhlKFMsQ2UscWUpe2lmKHFlPT09dm9pZCAwJiYocWU9dXQpLCFTfHwhQ2UpcmV0dXJuIFM9PT1DZTtpZihTLmxlbmd0aCE9PUNlLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGJyPTA7YnI8Uy5sZW5ndGg7YnIrKylpZighcWUoU1ticl0sQ2VbYnJdLGJyKSlyZXR1cm4hMTtyZXR1cm4hMH1lLmFycmF5SXNFcXVhbFRvPUhlO2Z1bmN0aW9uIHJyKFMpe3ZhciBDZTtpZihTKWZvcih2YXIgcWU9MDtxZTxTLmxlbmd0aDtxZSsrKXt2YXIgYnI9U1txZV07KENlfHwhYnIpJiYoQ2V8fChDZT1TLnNsaWNlKDAscWUpKSxiciYmQ2UucHVzaChicikpfXJldHVybiBDZXx8U31lLmNvbXBhY3Q9cnI7ZnVuY3Rpb24gSWUoUyxDZSxxZSl7aWYoIUNlfHwhU3x8Q2UubGVuZ3RoPT09MHx8Uy5sZW5ndGg9PT0wKXJldHVybiBDZTt2YXIgYnI9W107ZTpmb3IodmFyIFpyPTAsU2k9MDtTaTxDZS5sZW5ndGg7U2krKyl7U2k+MCYmZS5EZWJ1Zy5hc3NlcnRHcmVhdGVyVGhhbk9yRXF1YWwocWUoQ2VbU2ldLENlW1NpLTFdKSwwKTtyOmZvcih2YXIgUGk9WnI7WnI8Uy5sZW5ndGg7WnIrKylzd2l0Y2goWnI+UGkmJmUuRGVidWcuYXNzZXJ0R3JlYXRlclRoYW5PckVxdWFsKHFlKFNbWnJdLFNbWnItMV0pLDApLHFlKENlW1NpXSxTW1pyXSkpe2Nhc2UtMTpici5wdXNoKENlW1NpXSk7Y29udGludWUgZTtjYXNlIDA6Y29udGludWUgZTtjYXNlIDE6Y29udGludWUgcn19cmV0dXJuIGJyfWUucmVsYXRpdmVDb21wbGVtZW50PUllO2Z1bmN0aW9uIF9lKFMsQ2Upe2Zvcih2YXIgcWU9MCxicj0wLFpyPVM7YnI8WnIubGVuZ3RoO2JyKyspe3ZhciBTaT1aclticl07cWUrPVNpW0NlXX1yZXR1cm4gcWV9ZS5zdW09X2U7ZnVuY3Rpb24gd2UoUyxDZSl7cmV0dXJuIENlPT09dm9pZCAwP1M6Uz09PXZvaWQgMD9bQ2VdOihTLnB1c2goQ2UpLFMpfWUuYXBwZW5kPXdlO2Z1bmN0aW9uIGRlKFMsQ2Upe3JldHVybiBTPT09dm9pZCAwP0NlOkNlPT09dm9pZCAwP1M6T2UoUyk/T2UoQ2UpP2coUyxDZSk6d2UoUyxDZSk6T2UoQ2UpP3dlKENlLFMpOltTLENlXX1lLmNvbWJpbmU9ZGU7ZnVuY3Rpb24geWUoUyxDZSl7cmV0dXJuIENlPDA/Uy5sZW5ndGgrQ2U6Q2V9ZnVuY3Rpb24gQWUoUyxDZSxxZSxicil7aWYoQ2U9PT12b2lkIDB8fENlLmxlbmd0aD09PTApcmV0dXJuIFM7aWYoUz09PXZvaWQgMClyZXR1cm4gQ2Uuc2xpY2UocWUsYnIpO3FlPXFlPT09dm9pZCAwPzA6eWUoQ2UscWUpLGJyPWJyPT09dm9pZCAwP0NlLmxlbmd0aDp5ZShDZSxicik7Zm9yKHZhciBacj1xZTtacjxiciYmWnI8Q2UubGVuZ3RoO1pyKyspQ2VbWnJdIT09dm9pZCAwJiZTLnB1c2goQ2VbWnJdKTtyZXR1cm4gU31lLmFkZFJhbmdlPUFlO2Z1bmN0aW9uIGVyKFMsQ2UscWUpe3JldHVybiBKKFMsQ2UscWUpPyExOihTLnB1c2goQ2UpLCEwKX1lLnB1c2hJZlVuaXF1ZT1lcjtmdW5jdGlvbiBpcihTLENlLHFlKXtyZXR1cm4gUz8oZXIoUyxDZSxxZSksUyk6W0NlXX1lLmFwcGVuZElmVW5pcXVlPWlyO2Z1bmN0aW9uIENyKFMsQ2UscWUpe0NlLnNvcnQoZnVuY3Rpb24oYnIsWnIpe3JldHVybiBxZShTW2JyXSxTW1pyXSl8fEtpKGJyLFpyKX0pfWZ1bmN0aW9uIFllKFMsQ2Upe3JldHVybiBTLmxlbmd0aD09PTA/UzpTLnNsaWNlKCkuc29ydChDZSl9ZS5zb3J0PVllO2Z1bmN0aW9uIEJyKFMpe3ZhciBDZT0wO3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIENlPT09Uy5sZW5ndGg/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTooQ2UrKyx7dmFsdWU6U1tDZS0xXSxkb25lOiExfSl9fX1lLmFycmF5SXRlcmF0b3I9QnI7ZnVuY3Rpb24gRXIoUyl7dmFyIENlPVMubGVuZ3RoO3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIENlPT09MD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9OihDZS0tLHt2YWx1ZTpTW0NlXSxkb25lOiExfSl9fX1lLmFycmF5UmV2ZXJzZUl0ZXJhdG9yPUVyO2Z1bmN0aW9uIE5lKFMsQ2Upe3ZhciBxZT11ZShTKTtyZXR1cm4gQ3IoUyxxZSxDZSkscWUubWFwKGZ1bmN0aW9uKGJyKXtyZXR1cm4gU1ticl19KX1lLnN0YWJsZVNvcnQ9TmU7ZnVuY3Rpb24gbihTLENlLHFlLGJyKXtmb3IoO3FlPGJyOyl7aWYoU1txZV0hPT1DZVtxZV0pcmV0dXJuITE7cWUrK31yZXR1cm4hMH1lLnJhbmdlRXF1YWxzPW47ZnVuY3Rpb24gbHIoUyxDZSl7aWYoUyYmKENlPXllKFMsQ2UpLENlPFMubGVuZ3RoKSlyZXR1cm4gU1tDZV19ZS5lbGVtZW50QXQ9bHI7ZnVuY3Rpb24gYmUoUyl7cmV0dXJuIFMubGVuZ3RoPT09MD92b2lkIDA6U1swXX1lLmZpcnN0T3JVbmRlZmluZWQ9YmU7ZnVuY3Rpb24gR2UoUyl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KFMubGVuZ3RoIT09MCksU1swXX1lLmZpcnN0PUdlO2Z1bmN0aW9uIHVyKFMpe3JldHVybiBTLmxlbmd0aD09PTA/dm9pZCAwOlNbUy5sZW5ndGgtMV19ZS5sYXN0T3JVbmRlZmluZWQ9dXI7ZnVuY3Rpb24geXIoUyl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KFMubGVuZ3RoIT09MCksU1tTLmxlbmd0aC0xXX1lLmxhc3Q9eXI7ZnVuY3Rpb24gSXIoUyl7cmV0dXJuIFMmJlMubGVuZ3RoPT09MT9TWzBdOnZvaWQgMH1lLnNpbmdsZU9yVW5kZWZpbmVkPUlyO2Z1bmN0aW9uIHdyKFMpe3JldHVybiBTJiZTLmxlbmd0aD09PTE/U1swXTpTfWUuc2luZ2xlT3JNYW55PXdyO2Z1bmN0aW9uIFVyKFMsQ2UscWUpe3ZhciBicj1TLnNsaWNlKDApO3JldHVybiBicltDZV09cWUsYnJ9ZS5yZXBsYWNlRWxlbWVudD1VcjtmdW5jdGlvbiBpaShTLENlLHFlLGJyLFpyKXtyZXR1cm4gbWkoUyxxZShDZSkscWUsYnIsWnIpfWUuYmluYXJ5U2VhcmNoPWlpO2Z1bmN0aW9uIG1pKFMsQ2UscWUsYnIsWnIpe2lmKCFEKFMpKXJldHVybi0xO2Zvcih2YXIgU2k9WnJ8fDAsUGk9Uy5sZW5ndGgtMTtTaTw9UGk7KXt2YXIgUWk9U2krKFBpLVNpPj4xKSxDdD1xZShTW1FpXSxRaSk7c3dpdGNoKGJyKEN0LENlKSl7Y2FzZS0xOlNpPVFpKzE7YnJlYWs7Y2FzZSAwOnJldHVybiBRaTtjYXNlIDE6UGk9UWktMTticmVha319cmV0dXJuflNpfWUuYmluYXJ5U2VhcmNoS2V5PW1pO2Z1bmN0aW9uIHBlKFMsQ2UscWUsYnIsWnIpe2lmKFMmJlMubGVuZ3RoPjApe3ZhciBTaT1TLmxlbmd0aDtpZihTaT4wKXt2YXIgUGk9YnI9PT12b2lkIDB8fGJyPDA/MDpicixRaT1acj09PXZvaWQgMHx8UGkrWnI+U2ktMT9TaS0xOlBpK1pyLEN0PXZvaWQgMDtmb3IoYXJndW1lbnRzLmxlbmd0aDw9Mj8oQ3Q9U1tQaV0sUGkrKyk6Q3Q9cWU7UGk8PVFpOylDdD1DZShDdCxTW1BpXSxQaSksUGkrKztyZXR1cm4gQ3R9fXJldHVybiBxZX1lLnJlZHVjZUxlZnQ9cGU7dmFyIG9yPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gcXIoUyxDZSl7cmV0dXJuIG9yLmNhbGwoUyxDZSl9ZS5oYXNQcm9wZXJ0eT1xcjtmdW5jdGlvbiBzaShTLENlKXtyZXR1cm4gb3IuY2FsbChTLENlKT9TW0NlXTp2b2lkIDB9ZS5nZXRQcm9wZXJ0eT1zaTtmdW5jdGlvbiBEaShTKXt2YXIgQ2U9W107Zm9yKHZhciBxZSBpbiBTKW9yLmNhbGwoUyxxZSkmJkNlLnB1c2gocWUpO3JldHVybiBDZX1lLmdldE93bktleXM9RGk7ZnVuY3Rpb24gd2koUyl7dmFyIENlPVtdO2RvIGZvcih2YXIgcWU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoUyksYnI9MCxacj1xZTticjxaci5sZW5ndGg7YnIrKyl7dmFyIFNpPVpyW2JyXTtlcihDZSxTaSl9d2hpbGUoUz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoUykpO3JldHVybiBDZX1lLmdldEFsbEtleXM9d2k7ZnVuY3Rpb24gWGkoUyl7dmFyIENlPVtdO2Zvcih2YXIgcWUgaW4gUylvci5jYWxsKFMscWUpJiZDZS5wdXNoKFNbcWVdKTtyZXR1cm4gQ2V9ZS5nZXRPd25WYWx1ZXM9WGk7dmFyIGV0PU9iamVjdC5lbnRyaWVzfHxmdW5jdGlvbihTKXtmb3IodmFyIENlPURpKFMpLHFlPUFycmF5KENlLmxlbmd0aCksYnI9MDticjxDZS5sZW5ndGg7YnIrKylxZVticl09W0NlW2JyXSxTW0NlW2JyXV1dO3JldHVybiBxZX07ZnVuY3Rpb24gR2koUyl7cmV0dXJuIFM/ZXQoUyk6W119ZS5nZXRFbnRyaWVzPUdpO2Z1bmN0aW9uIFd0KFMsQ2Upe2Zvcih2YXIgcWU9bmV3IEFycmF5KFMpLGJyPTA7YnI8UzticisrKXFlW2JyXT1DZShicik7cmV0dXJuIHFlfWUuYXJyYXlPZj1XdDtmdW5jdGlvbiBadChTLENlKXtmb3IodmFyIHFlPVtdLGJyPVMubmV4dCgpOyFici5kb25lO2JyPVMubmV4dCgpKXFlLnB1c2goQ2U/Q2UoYnIudmFsdWUpOmJyLnZhbHVlKTtyZXR1cm4gcWV9ZS5hcnJheUZyb209WnQ7ZnVuY3Rpb24gX3IoUyl7Zm9yKHZhciBDZT1bXSxxZT0xO3FlPGFyZ3VtZW50cy5sZW5ndGg7cWUrKylDZVtxZS0xXT1hcmd1bWVudHNbcWVdO2Zvcih2YXIgYnI9MCxacj1DZTticjxaci5sZW5ndGg7YnIrKyl7dmFyIFNpPVpyW2JyXTtpZihTaSE9PXZvaWQgMClmb3IodmFyIFBpIGluIFNpKXFyKFNpLFBpKSYmKFNbUGldPVNpW1BpXSl9cmV0dXJuIFN9ZS5hc3NpZ249X3I7ZnVuY3Rpb24gcGkoUyxDZSxxZSl7aWYocWU9PT12b2lkIDAmJihxZT11dCksUz09PUNlKXJldHVybiEwO2lmKCFTfHwhQ2UpcmV0dXJuITE7Zm9yKHZhciBiciBpbiBTKWlmKG9yLmNhbGwoUyxicikmJighb3IuY2FsbChDZSxicil8fCFxZShTW2JyXSxDZVticl0pKSlyZXR1cm4hMTtmb3IodmFyIGJyIGluIENlKWlmKG9yLmNhbGwoQ2UsYnIpJiYhb3IuY2FsbChTLGJyKSlyZXR1cm4hMTtyZXR1cm4hMH1lLmVxdWFsT3duUHJvcGVydGllcz1waTtmdW5jdGlvbiBhZShTLENlLHFlKXtxZT09PXZvaWQgMCYmKHFlPXZpKTtmb3IodmFyIGJyPW5ldyBlLk1hcCxacj0wLFNpPVM7WnI8U2kubGVuZ3RoO1pyKyspe3ZhciBQaT1TaVtacl0sUWk9Q2UoUGkpO1FpIT09dm9pZCAwJiZici5zZXQoUWkscWUoUGkpKX1yZXR1cm4gYnJ9ZS5hcnJheVRvTWFwPWFlO2Z1bmN0aW9uIFhlKFMsQ2UscWUpe3FlPT09dm9pZCAwJiYocWU9dmkpO2Zvcih2YXIgYnI9W10sWnI9MCxTaT1TO1pyPFNpLmxlbmd0aDtacisrKXt2YXIgUGk9U2lbWnJdO2JyW0NlKFBpKV09cWUoUGkpfXJldHVybiBicn1lLmFycmF5VG9OdW1lcmljTWFwPVhlO2Z1bmN0aW9uIEpyKFMsQ2UscWUpe3FlPT09dm9pZCAwJiYocWU9dmkpO2Zvcih2YXIgYnI9SmUoKSxacj0wLFNpPVM7WnI8U2kubGVuZ3RoO1pyKyspe3ZhciBQaT1TaVtacl07YnIuYWRkKENlKFBpKSxxZShQaSkpfXJldHVybiBicn1lLmFycmF5VG9NdWx0aU1hcD1KcjtmdW5jdGlvbiB0aShTLENlLHFlKXtyZXR1cm4gcWU9PT12b2lkIDAmJihxZT12aSksWnQoSnIoUyxDZSkudmFsdWVzKCkscWUpfWUuZ3JvdXA9dGk7ZnVuY3Rpb24gWmUoUyl7dmFyIENlPXt9O2Zvcih2YXIgcWUgaW4gUylvci5jYWxsKFMscWUpJiYoQ2VbcWVdPVNbcWVdKTtyZXR1cm4gQ2V9ZS5jbG9uZT1aZTtmdW5jdGlvbiBTcihTLENlKXt2YXIgcWU9e307Zm9yKHZhciBiciBpbiBDZSlvci5jYWxsKENlLGJyKSYmKHFlW2JyXT1DZVticl0pO2Zvcih2YXIgYnIgaW4gUylvci5jYWxsKFMsYnIpJiYocWVbYnJdPVNbYnJdKTtyZXR1cm4gcWV9ZS5leHRlbmQ9U3I7ZnVuY3Rpb24genIoUyxDZSl7Zm9yKHZhciBxZSBpbiBDZSlvci5jYWxsKENlLHFlKSYmKFNbcWVdPUNlW3FlXSl9ZS5jb3B5UHJvcGVydGllcz16cjtmdW5jdGlvbiBXcihTLENlKXtyZXR1cm4gQ2U/Q2UuYmluZChTKTp2b2lkIDB9ZS5tYXliZUJpbmQ9V3I7ZnVuY3Rpb24gSmUoKXt2YXIgUz1uZXcgZS5NYXA7cmV0dXJuIFMuYWRkPXhlLFMucmVtb3ZlPXZyLFN9ZS5jcmVhdGVNdWx0aU1hcD1KZTtmdW5jdGlvbiB4ZShTLENlKXt2YXIgcWU9dGhpcy5nZXQoUyk7cmV0dXJuIHFlP3FlLnB1c2goQ2UpOnRoaXMuc2V0KFMscWU9W0NlXSkscWV9ZnVuY3Rpb24gdnIoUyxDZSl7dmFyIHFlPXRoaXMuZ2V0KFMpO3FlJiYoS24ocWUsQ2UpLHFlLmxlbmd0aHx8dGhpcy5kZWxldGUoUykpfWZ1bmN0aW9uIG1yKCl7cmV0dXJuIEplKCl9ZS5jcmVhdGVVbmRlcnNjb3JlRXNjYXBlZE11bHRpTWFwPW1yO2Z1bmN0aW9uIEFyKFMsQ2Upe3ZhciBxZT1uZXcgZS5NYXAsYnI9MDtmdW5jdGlvbiBacigpe3ZhciBQaT1xZS52YWx1ZXMoKSxRaTtyZXR1cm57bmV4dDpmdW5jdGlvbigpe2Zvcig7OylpZihRaSl7dmFyIEN0PVFpLm5leHQoKTtpZighQ3QuZG9uZSlyZXR1cm57dmFsdWU6Q3QudmFsdWV9O1FpPXZvaWQgMH1lbHNle3ZhciBDdD1QaS5uZXh0KCk7aWYoQ3QuZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2lmKCFPZShDdC52YWx1ZSkpcmV0dXJue3ZhbHVlOkN0LnZhbHVlfTtRaT1CcihDdC52YWx1ZSl9fX19dmFyIFNpPXtoYXM6ZnVuY3Rpb24oUGkpe3ZhciBRaT1TKFBpKTtpZighcWUuaGFzKFFpKSlyZXR1cm4hMTt2YXIgQ3Q9cWUuZ2V0KFFpKTtpZighT2UoQ3QpKXJldHVybiBDZShDdCxQaSk7Zm9yKHZhciBzYT0wLGVuPUN0O3NhPGVuLmxlbmd0aDtzYSsrKXt2YXIgV2E9ZW5bc2FdO2lmKENlKFdhLFBpKSlyZXR1cm4hMH1yZXR1cm4hMX0sYWRkOmZ1bmN0aW9uKFBpKXt2YXIgUWk9UyhQaSk7aWYocWUuaGFzKFFpKSl7dmFyIEN0PXFlLmdldChRaSk7aWYoT2UoQ3QpKUooQ3QsUGksQ2UpfHwoQ3QucHVzaChQaSksYnIrKyk7ZWxzZXt2YXIgc2E9Q3Q7Q2Uoc2EsUGkpfHwocWUuc2V0KFFpLFtzYSxQaV0pLGJyKyspfX1lbHNlIHFlLnNldChRaSxQaSksYnIrKztyZXR1cm4gdGhpc30sZGVsZXRlOmZ1bmN0aW9uKFBpKXt2YXIgUWk9UyhQaSk7aWYoIXFlLmhhcyhRaSkpcmV0dXJuITE7dmFyIEN0PXFlLmdldChRaSk7aWYoT2UoQ3QpKXtmb3IodmFyIHNhPTA7c2E8Q3QubGVuZ3RoO3NhKyspaWYoQ2UoQ3Rbc2FdLFBpKSlyZXR1cm4gQ3QubGVuZ3RoPT09MT9xZS5kZWxldGUoUWkpOkN0Lmxlbmd0aD09PTI/cWUuc2V0KFFpLEN0WzEtc2FdKTp4bihDdCxzYSksYnItLSwhMH1lbHNle3ZhciBlbj1DdDtpZihDZShlbixQaSkpcmV0dXJuIHFlLmRlbGV0ZShRaSksYnItLSwhMH1yZXR1cm4hMX0sY2xlYXI6ZnVuY3Rpb24oKXtxZS5jbGVhcigpLGJyPTB9LGdldCBzaXplKCl7cmV0dXJuIGJyfSxmb3JFYWNoOmZ1bmN0aW9uKFBpKXtmb3IodmFyIFFpPTAsQ3Q9WnQocWUudmFsdWVzKCkpO1FpPEN0Lmxlbmd0aDtRaSsrKXt2YXIgc2E9Q3RbUWldO2lmKE9lKHNhKSlmb3IodmFyIGVuPTAsV2E9c2E7ZW48V2EubGVuZ3RoO2VuKyspe3ZhciBxbj1XYVtlbl07UGkocW4scW4pfWVsc2V7dmFyIHFuPXNhO1BpKHFuLHFuKX19fSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIFpyKCl9LHZhbHVlczpmdW5jdGlvbigpe3JldHVybiBacigpfSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIFBpPVpyKCk7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXt2YXIgUWk9UGkubmV4dCgpO3JldHVybiBRaS5kb25lP1FpOnt2YWx1ZTpbUWkudmFsdWUsUWkudmFsdWVdfX19fX07cmV0dXJuIFNpfWUuY3JlYXRlU2V0PUFyO2Z1bmN0aW9uIE9lKFMpe3JldHVybiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXkoUyk6UyBpbnN0YW5jZW9mIEFycmF5fWUuaXNBcnJheT1PZTtmdW5jdGlvbiBucihTKXtyZXR1cm4gT2UoUyk/UzpbU119ZS50b0FycmF5PW5yO2Z1bmN0aW9uIE1yKFMpe3JldHVybiB0eXBlb2YgUz09XCJzdHJpbmdcIn1lLmlzU3RyaW5nPU1yO2Z1bmN0aW9uIFBlKFMpe3JldHVybiB0eXBlb2YgUz09XCJudW1iZXJcIn1lLmlzTnVtYmVyPVBlO2Z1bmN0aW9uIFVlKFMsQ2Upe3JldHVybiBTIT09dm9pZCAwJiZDZShTKT9TOnZvaWQgMH1lLnRyeUNhc3Q9VWU7ZnVuY3Rpb24gZnIoUyxDZSl7cmV0dXJuIFMhPT12b2lkIDAmJkNlKFMpP1M6ZS5EZWJ1Zy5mYWlsKFwiSW52YWxpZCBjYXN0LiBUaGUgc3VwcGxpZWQgdmFsdWUgXCIuY29uY2F0KFMsXCIgZGlkIG5vdCBwYXNzIHRoZSB0ZXN0ICdcIikuY29uY2F0KGUuRGVidWcuZ2V0RnVuY3Rpb25OYW1lKENlKSxcIicuXCIpKX1lLmNhc3Q9ZnI7ZnVuY3Rpb24gRGUoUyl7fWUubm9vcD1EZTtmdW5jdGlvbiBncigpe3JldHVybiExfWUucmV0dXJuRmFsc2U9Z3I7ZnVuY3Rpb24gVnIoKXtyZXR1cm4hMH1lLnJldHVyblRydWU9VnI7ZnVuY3Rpb24gVHIoKXt9ZS5yZXR1cm5VbmRlZmluZWQ9VHI7ZnVuY3Rpb24gdmkoUyl7cmV0dXJuIFN9ZS5pZGVudGl0eT12aTtmdW5jdGlvbiBVaShTKXtyZXR1cm4gUy50b0xvd2VyQ2FzZSgpfWUudG9Mb3dlckNhc2U9VWk7dmFyIFlpPS9bXlxcdTAxMzBcXHUwMTMxXFx1MDBERmEtejAtOVxcXFwvOlxcLV9cXC4gXSsvZztmdW5jdGlvbiBXaShTKXtyZXR1cm4gWWkudGVzdChTKT9TLnJlcGxhY2UoWWksVWkpOlN9ZS50b0ZpbGVOYW1lTG93ZXJDYXNlPVdpO2Z1bmN0aW9uIGN0KCl7dGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpfWUubm90SW1wbGVtZW50ZWQ9Y3Q7ZnVuY3Rpb24gTGkoUyl7dmFyIENlO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBTJiYoQ2U9UygpLFM9dm9pZCAwKSxDZX19ZS5tZW1vaXplPUxpO2Z1bmN0aW9uIG50KFMpe3ZhciBDZT1uZXcgZS5NYXA7cmV0dXJuIGZ1bmN0aW9uKHFlKXt2YXIgYnI9XCJcIi5jb25jYXQodHlwZW9mIHFlLFwiOlwiKS5jb25jYXQocWUpLFpyPUNlLmdldChicik7cmV0dXJuIFpyPT09dm9pZCAwJiYhQ2UuaGFzKGJyKSYmKFpyPVMocWUpLENlLnNldChicixacikpLFpyfX1lLm1lbW9pemVPbmU9bnQ7ZnVuY3Rpb24gTXQoUyxDZSxxZSxicixacil7aWYoWnIpe2Zvcih2YXIgU2k9W10sUGk9MDtQaTxhcmd1bWVudHMubGVuZ3RoO1BpKyspU2lbUGldPWFyZ3VtZW50c1tQaV07cmV0dXJuIGZ1bmN0aW9uKFFpKXtyZXR1cm4gcGUoU2ksZnVuY3Rpb24oQ3Qsc2Epe3JldHVybiBzYShDdCl9LFFpKX19ZWxzZSByZXR1cm4gYnI/ZnVuY3Rpb24oUWkpe3JldHVybiBicihxZShDZShTKFFpKSkpKX06cWU/ZnVuY3Rpb24oUWkpe3JldHVybiBxZShDZShTKFFpKSkpfTpDZT9mdW5jdGlvbihRaSl7cmV0dXJuIENlKFMoUWkpKX06Uz9mdW5jdGlvbihRaSl7cmV0dXJuIFMoUWkpfTpmdW5jdGlvbihRaSl7cmV0dXJuIFFpfX1lLmNvbXBvc2U9TXQ7dmFyIHh0OyhmdW5jdGlvbihTKXtTW1MuTm9uZT0wXT1cIk5vbmVcIixTW1MuTm9ybWFsPTFdPVwiTm9ybWFsXCIsU1tTLkFnZ3Jlc3NpdmU9Ml09XCJBZ2dyZXNzaXZlXCIsU1tTLlZlcnlBZ2dyZXNzaXZlPTNdPVwiVmVyeUFnZ3Jlc3NpdmVcIn0pKHh0PWUuQXNzZXJ0aW9uTGV2ZWx8fChlLkFzc2VydGlvbkxldmVsPXt9KSk7ZnVuY3Rpb24gdXQoUyxDZSl7cmV0dXJuIFM9PT1DZX1lLmVxdWF0ZVZhbHVlcz11dDtmdW5jdGlvbiBEdChTLENlKXtyZXR1cm4gUz09PUNlfHxTIT09dm9pZCAwJiZDZSE9PXZvaWQgMCYmUy50b1VwcGVyQ2FzZSgpPT09Q2UudG9VcHBlckNhc2UoKX1lLmVxdWF0ZVN0cmluZ3NDYXNlSW5zZW5zaXRpdmU9RHQ7ZnVuY3Rpb24gUnQoUyxDZSl7cmV0dXJuIHV0KFMsQ2UpfWUuZXF1YXRlU3RyaW5nc0Nhc2VTZW5zaXRpdmU9UnQ7ZnVuY3Rpb24gSWkoUyxDZSl7cmV0dXJuIFM9PT1DZT8wOlM9PT12b2lkIDA/LTE6Q2U9PT12b2lkIDA/MTpTPENlPy0xOjF9ZnVuY3Rpb24gS2koUyxDZSl7cmV0dXJuIElpKFMsQ2UpfWUuY29tcGFyZVZhbHVlcz1LaTtmdW5jdGlvbiBGaShTLENlKXtyZXR1cm4gS2koUz09bnVsbD92b2lkIDA6Uy5zdGFydCxDZT09bnVsbD92b2lkIDA6Q2Uuc3RhcnQpfHxLaShTPT1udWxsP3ZvaWQgMDpTLmxlbmd0aCxDZT09bnVsbD92b2lkIDA6Q2UubGVuZ3RoKX1lLmNvbXBhcmVUZXh0U3BhbnM9Rmk7ZnVuY3Rpb24gdWkoUyxDZSxxZSl7cmV0dXJuIHFlKFMsQ2UpPT09LTE/UzpDZX1lLm1pbj11aTtmdW5jdGlvbiBCdChTLENlKXtyZXR1cm4gUz09PUNlPzA6Uz09PXZvaWQgMD8tMTpDZT09PXZvaWQgMD8xOihTPVMudG9VcHBlckNhc2UoKSxDZT1DZS50b1VwcGVyQ2FzZSgpLFM8Q2U/LTE6Uz5DZT8xOjApfWUuY29tcGFyZVN0cmluZ3NDYXNlSW5zZW5zaXRpdmU9QnQ7ZnVuY3Rpb24gd3QoUyxDZSl7cmV0dXJuIElpKFMsQ2UpfWUuY29tcGFyZVN0cmluZ3NDYXNlU2Vuc2l0aXZlPXd0O2Z1bmN0aW9uIG5hKFMpe3JldHVybiBTP0J0Ond0fWUuZ2V0U3RyaW5nQ29tcGFyZXI9bmE7dmFyIEFpPWZ1bmN0aW9uKCl7dmFyIFMsQ2UscWU9UWkoKTtyZXR1cm4gQ3Q7ZnVuY3Rpb24gYnIoc2EsZW4sV2Epe2lmKHNhPT09ZW4pcmV0dXJuIDA7aWYoc2E9PT12b2lkIDApcmV0dXJuLTE7aWYoZW49PT12b2lkIDApcmV0dXJuIDE7dmFyIHFuPVdhKHNhLGVuKTtyZXR1cm4gcW48MD8tMTpxbj4wPzE6MH1mdW5jdGlvbiBacihzYSl7dmFyIGVuPW5ldyBJbnRsLkNvbGxhdG9yKHNhLHt1c2FnZTpcInNvcnRcIixzZW5zaXRpdml0eTpcInZhcmlhbnRcIn0pLmNvbXBhcmU7cmV0dXJuIGZ1bmN0aW9uKFdhLHFuKXtyZXR1cm4gYnIoV2EscW4sZW4pfX1mdW5jdGlvbiBTaShzYSl7aWYoc2EhPT12b2lkIDApcmV0dXJuIFBpKCk7cmV0dXJuIGZ1bmN0aW9uKFdhLHFuKXtyZXR1cm4gYnIoV2EscW4sZW4pfTtmdW5jdGlvbiBlbihXYSxxbil7cmV0dXJuIFdhLmxvY2FsZUNvbXBhcmUocW4pfX1mdW5jdGlvbiBQaSgpe3JldHVybiBmdW5jdGlvbihXYSxxbil7cmV0dXJuIGJyKFdhLHFuLHNhKX07ZnVuY3Rpb24gc2EoV2EscW4pe3JldHVybiBlbihXYS50b1VwcGVyQ2FzZSgpLHFuLnRvVXBwZXJDYXNlKCkpfHxlbihXYSxxbil9ZnVuY3Rpb24gZW4oV2EscW4pe3JldHVybiBXYTxxbj8tMTpXYT5xbj8xOjB9fWZ1bmN0aW9uIFFpKCl7cmV0dXJuIHR5cGVvZiBJbnRsPT1cIm9iamVjdFwiJiZ0eXBlb2YgSW50bC5Db2xsYXRvcj09XCJmdW5jdGlvblwiP1pyOnR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmU9PVwiZnVuY3Rpb25cIiYmdHlwZW9mIFN0cmluZy5wcm90b3R5cGUudG9Mb2NhbGVVcHBlckNhc2U9PVwiZnVuY3Rpb25cIiYmXCJhXCIubG9jYWxlQ29tcGFyZShcIkJcIik8MD9TaTpQaX1mdW5jdGlvbiBDdChzYSl7cmV0dXJuIHNhPT09dm9pZCAwP1N8fChTPXFlKHNhKSk6c2E9PT1cImVuLVVTXCI/Q2V8fChDZT1xZShzYSkpOnFlKHNhKX19KCksT2ksamk7ZnVuY3Rpb24gVmkoKXtyZXR1cm4gaml9ZS5nZXRVSUxvY2FsZT1WaTtmdW5jdGlvbiBhdChTKXtqaSE9PVMmJihqaT1TLE9pPXZvaWQgMCl9ZS5zZXRVSUxvY2FsZT1hdDtmdW5jdGlvbiBBdChTLENlKXt2YXIgcWU9T2l8fChPaT1BaShqaSkpO3JldHVybiBxZShTLENlKX1lLmNvbXBhcmVTdHJpbmdzQ2FzZVNlbnNpdGl2ZVVJPUF0O2Z1bmN0aW9uIGJhKFMsQ2UscWUsYnIpe3JldHVybiBTPT09Q2U/MDpTPT09dm9pZCAwPy0xOkNlPT09dm9pZCAwPzE6YnIoU1txZV0sQ2VbcWVdKX1lLmNvbXBhcmVQcm9wZXJ0aWVzPWJhO2Z1bmN0aW9uICRhKFMsQ2Upe3JldHVybiBLaShTPzE6MCxDZT8xOjApfWUuY29tcGFyZUJvb2xlYW5zPSRhO2Z1bmN0aW9uIFFhKFMsQ2UscWUpe2Zvcih2YXIgYnI9TWF0aC5taW4oMixNYXRoLmZsb29yKFMubGVuZ3RoKi4zNCkpLFpyPU1hdGguZmxvb3IoUy5sZW5ndGgqLjQpKzEsU2ksUGk9MCxRaT1DZTtQaTxRaS5sZW5ndGg7UGkrKyl7dmFyIEN0PVFpW1BpXSxzYT1xZShDdCk7aWYoc2EhPT12b2lkIDAmJk1hdGguYWJzKHNhLmxlbmd0aC1TLmxlbmd0aCk8PWJyKXtpZihzYT09PVN8fHNhLmxlbmd0aDwzJiZzYS50b0xvd2VyQ2FzZSgpIT09Uy50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlO3ZhciBlbj1haShTLHNhLFpyLS4xKTtpZihlbj09PXZvaWQgMCljb250aW51ZTtlLkRlYnVnLmFzc2VydChlbjxaciksWnI9ZW4sU2k9Q3R9fXJldHVybiBTaX1lLmdldFNwZWxsaW5nU3VnZ2VzdGlvbj1RYTtmdW5jdGlvbiBhaShTLENlLHFlKXtmb3IodmFyIGJyPW5ldyBBcnJheShDZS5sZW5ndGgrMSksWnI9bmV3IEFycmF5KENlLmxlbmd0aCsxKSxTaT1xZSsuMDEsUGk9MDtQaTw9Q2UubGVuZ3RoO1BpKyspYnJbUGldPVBpO2Zvcih2YXIgUGk9MTtQaTw9Uy5sZW5ndGg7UGkrKyl7dmFyIFFpPVMuY2hhckNvZGVBdChQaS0xKSxDdD1NYXRoLmNlaWwoUGk+cWU/UGktcWU6MSksc2E9TWF0aC5mbG9vcihDZS5sZW5ndGg+cWUrUGk/cWUrUGk6Q2UubGVuZ3RoKTtaclswXT1QaTtmb3IodmFyIGVuPVBpLFdhPTE7V2E8Q3Q7V2ErKylacltXYV09U2k7Zm9yKHZhciBXYT1DdDtXYTw9c2E7V2ErKyl7dmFyIHFuPVNbUGktMV0udG9Mb3dlckNhc2UoKT09PUNlW1dhLTFdLnRvTG93ZXJDYXNlKCk/YnJbV2EtMV0rLjE6YnJbV2EtMV0rMixtbz1RaT09PUNlLmNoYXJDb2RlQXQoV2EtMSk/YnJbV2EtMV06TWF0aC5taW4oYnJbV2FdKzEsWnJbV2EtMV0rMSxxbik7WnJbV2FdPW1vLGVuPU1hdGgubWluKGVuLG1vKX1mb3IodmFyIFdhPXNhKzE7V2E8PUNlLmxlbmd0aDtXYSsrKVpyW1dhXT1TaTtpZihlbj5xZSlyZXR1cm47dmFyIFNvPWJyO2JyPVpyLFpyPVNvfXZhciBHbz1icltDZS5sZW5ndGhdO3JldHVybiBHbz5xZT92b2lkIDA6R299ZnVuY3Rpb24gRG4oUyxDZSl7dmFyIHFlPVMubGVuZ3RoLUNlLmxlbmd0aDtyZXR1cm4gcWU+PTAmJlMuaW5kZXhPZihDZSxxZSk9PT1xZX1lLmVuZHNXaXRoPURuO2Z1bmN0aW9uIGthKFMsQ2Upe3JldHVybiBEbihTLENlKT9TLnNsaWNlKDAsUy5sZW5ndGgtQ2UubGVuZ3RoKTpTfWUucmVtb3ZlU3VmZml4PWthO2Z1bmN0aW9uIEJhKFMsQ2Upe3JldHVybiBEbihTLENlKT9TLnNsaWNlKDAsUy5sZW5ndGgtQ2UubGVuZ3RoKTp2b2lkIDB9ZS50cnlSZW1vdmVTdWZmaXg9QmE7ZnVuY3Rpb24gcG4oUyxDZSl7cmV0dXJuIFMuaW5kZXhPZihDZSkhPT0tMX1lLnN0cmluZ0NvbnRhaW5zPXBuO2Z1bmN0aW9uIENuKFMpe2Zvcih2YXIgQ2U9Uy5sZW5ndGgscWU9Q2UtMTtxZT4wO3FlLS0pe3ZhciBicj1TLmNoYXJDb2RlQXQocWUpO2lmKGJyPj00OCYmYnI8PTU3KWRvLS1xZSxicj1TLmNoYXJDb2RlQXQocWUpO3doaWxlKHFlPjAmJmJyPj00OCYmYnI8PTU3KTtlbHNlIGlmKHFlPjQmJihicj09PTExMHx8YnI9PT03OCkpe2lmKC0tcWUsYnI9Uy5jaGFyQ29kZUF0KHFlKSxiciE9PTEwNSYmYnIhPT03M3x8KC0tcWUsYnI9Uy5jaGFyQ29kZUF0KHFlKSxiciE9PTEwOSYmYnIhPT03NykpYnJlYWs7LS1xZSxicj1TLmNoYXJDb2RlQXQocWUpfWVsc2UgYnJlYWs7aWYoYnIhPT00NSYmYnIhPT00NilicmVhaztDZT1xZX1yZXR1cm4gQ2U9PT1TLmxlbmd0aD9TOlMuc2xpY2UoMCxDZSl9ZS5yZW1vdmVNaW5BbmRWZXJzaW9uTnVtYmVycz1DbjtmdW5jdGlvbiBCaShTLENlKXtmb3IodmFyIHFlPTA7cWU8Uy5sZW5ndGg7cWUrKylpZihTW3FlXT09PUNlKXJldHVybiBrbihTLHFlKSwhMDtyZXR1cm4hMX1lLm9yZGVyZWRSZW1vdmVJdGVtPUJpO2Z1bmN0aW9uIGtuKFMsQ2Upe2Zvcih2YXIgcWU9Q2U7cWU8Uy5sZW5ndGgtMTtxZSsrKVNbcWVdPVNbcWUrMV07Uy5wb3AoKX1lLm9yZGVyZWRSZW1vdmVJdGVtQXQ9a247ZnVuY3Rpb24geG4oUyxDZSl7U1tDZV09U1tTLmxlbmd0aC0xXSxTLnBvcCgpfWUudW5vcmRlcmVkUmVtb3ZlSXRlbUF0PXhuO2Z1bmN0aW9uIEtuKFMsQ2Upe3JldHVybiBQbihTLGZ1bmN0aW9uKHFlKXtyZXR1cm4gcWU9PT1DZX0pfWUudW5vcmRlcmVkUmVtb3ZlSXRlbT1LbjtmdW5jdGlvbiBQbihTLENlKXtmb3IodmFyIHFlPTA7cWU8Uy5sZW5ndGg7cWUrKylpZihDZShTW3FlXSkpcmV0dXJuIHhuKFMscWUpLCEwO3JldHVybiExfWZ1bmN0aW9uIGVvKFMpe3JldHVybiBTP3ZpOldpfWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWU9ZW87ZnVuY3Rpb24gUm4oUyl7dmFyIENlPVMucHJlZml4LHFlPVMuc3VmZml4O3JldHVyblwiXCIuY29uY2F0KENlLFwiKlwiKS5jb25jYXQocWUpfWUucGF0dGVyblRleHQ9Um47ZnVuY3Rpb24gRGEoUyxDZSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KHRvKFMsQ2UpKSxDZS5zdWJzdHJpbmcoUy5wcmVmaXgubGVuZ3RoLENlLmxlbmd0aC1TLnN1ZmZpeC5sZW5ndGgpfWUubWF0Y2hlZFRleHQ9RGE7ZnVuY3Rpb24gYm8oUyxDZSxxZSl7Zm9yKHZhciBicixacj0tMSxTaT0wLFBpPVM7U2k8UGkubGVuZ3RoO1NpKyspe3ZhciBRaT1QaVtTaV0sQ3Q9Q2UoUWkpO3RvKEN0LHFlKSYmQ3QucHJlZml4Lmxlbmd0aD5aciYmKFpyPUN0LnByZWZpeC5sZW5ndGgsYnI9UWkpfXJldHVybiBicn1lLmZpbmRCZXN0UGF0dGVybk1hdGNoPWJvO2Z1bmN0aW9uIFJvKFMsQ2Upe3JldHVybiBTLmxhc3RJbmRleE9mKENlLDApPT09MH1lLnN0YXJ0c1dpdGg9Um87ZnVuY3Rpb24gRW4oUyxDZSl7cmV0dXJuIFJvKFMsQ2UpP1Muc3Vic3RyKENlLmxlbmd0aCk6U31lLnJlbW92ZVByZWZpeD1FbjtmdW5jdGlvbiBXbihTLENlLHFlKXtyZXR1cm4gcWU9PT12b2lkIDAmJihxZT12aSksUm8ocWUoUykscWUoQ2UpKT9TLnN1YnN0cmluZyhDZS5sZW5ndGgpOnZvaWQgMH1lLnRyeVJlbW92ZVByZWZpeD1XbjtmdW5jdGlvbiB0byhTLENlKXt2YXIgcWU9Uy5wcmVmaXgsYnI9Uy5zdWZmaXg7cmV0dXJuIENlLmxlbmd0aD49cWUubGVuZ3RoK2JyLmxlbmd0aCYmUm8oQ2UscWUpJiZEbihDZSxicil9ZnVuY3Rpb24gQ28oUyxDZSl7cmV0dXJuIGZ1bmN0aW9uKHFlKXtyZXR1cm4gUyhxZSkmJkNlKHFlKX19ZS5hbmQ9Q287ZnVuY3Rpb24gS28oKXtmb3IodmFyIFM9W10sQ2U9MDtDZTxhcmd1bWVudHMubGVuZ3RoO0NlKyspU1tDZV09YXJndW1lbnRzW0NlXTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHFlPVtdLGJyPTA7YnI8YXJndW1lbnRzLmxlbmd0aDticisrKXFlW2JyXT1hcmd1bWVudHNbYnJdO2Zvcih2YXIgWnIsU2k9MCxQaT1TO1NpPFBpLmxlbmd0aDtTaSsrKXt2YXIgUWk9UGlbU2ldO2lmKFpyPVFpLmFwcGx5KHZvaWQgMCxxZSksWnIpcmV0dXJuIFpyfXJldHVybiBacn19ZS5vcj1LbztmdW5jdGlvbiBPbyhTKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIENlPVtdLHFlPTA7cWU8YXJndW1lbnRzLmxlbmd0aDtxZSsrKUNlW3FlXT1hcmd1bWVudHNbcWVdO3JldHVybiFTLmFwcGx5KHZvaWQgMCxDZSl9fWUubm90PU9vO2Z1bmN0aW9uIG5vKFMpe31lLmFzc2VydFR5cGU9bm87ZnVuY3Rpb24gJG8oUyl7cmV0dXJuIFM9PT12b2lkIDA/dm9pZCAwOltTXX1lLnNpbmdsZUVsZW1lbnRBcnJheT0kbztmdW5jdGlvbiBQcihTLENlLHFlLGJyLFpyLFNpKXtTaT1TaXx8RGU7Zm9yKHZhciBQaT0wLFFpPTAsQ3Q9Uy5sZW5ndGgsc2E9Q2UubGVuZ3RoLGVuPSExO1BpPEN0JiZRaTxzYTspe3ZhciBXYT1TW1BpXSxxbj1DZVtRaV0sbW89cWUoV2EscW4pO21vPT09LTE/KGJyKFdhKSxQaSsrLGVuPSEwKTptbz09PTE/KFpyKHFuKSxRaSsrLGVuPSEwKTooU2kocW4sV2EpLFBpKyssUWkrKyl9Zm9yKDtQaTxDdDspYnIoU1tQaSsrXSksZW49ITA7Zm9yKDtRaTxzYTspWnIoQ2VbUWkrK10pLGVuPSEwO3JldHVybiBlbn1lLmVudW1lcmF0ZUluc2VydHNBbmREZWxldGVzPVByO2Z1bmN0aW9uIHhpKFMsQ2Upe2Zvcih2YXIgcWU9QXJyYXkoUyksYnI9MDticjxTO2JyKyspcWVbYnJdPUNlKGJyKTtyZXR1cm4gcWV9ZS5maWxsPXhpO2Z1bmN0aW9uIFN0KFMpe3ZhciBDZT1bXTtyZXR1cm4gcGEoUyxDZSx2b2lkIDAsMCksQ2V9ZS5jYXJ0ZXNpYW5Qcm9kdWN0PVN0O2Z1bmN0aW9uIHBhKFMsQ2UscWUsYnIpe2Zvcih2YXIgWnI9MCxTaT1TW2JyXTtacjxTaS5sZW5ndGg7WnIrKyl7dmFyIFBpPVNpW1pyXSxRaT12b2lkIDA7cWU/KFFpPXFlLnNsaWNlKCksUWkucHVzaChQaSkpOlFpPVtQaV0sYnI9PT1TLmxlbmd0aC0xP0NlLnB1c2goUWkpOnBhKFMsQ2UsUWksYnIrMSl9fWZ1bmN0aW9uIGRuKFMsQ2UscWUpe3JldHVybiBxZT09PXZvaWQgMCYmKHFlPVwiIFwiKSxDZTw9Uy5sZW5ndGg/UzpxZS5yZXBlYXQoQ2UtUy5sZW5ndGgpK1N9ZS5wYWRMZWZ0PWRuO2Z1bmN0aW9uIEpuKFMsQ2UscWUpe3JldHVybiBxZT09PXZvaWQgMCYmKHFlPVwiIFwiKSxDZTw9Uy5sZW5ndGg/UzpTK3FlLnJlcGVhdChDZS1TLmxlbmd0aCl9ZS5wYWRSaWdodD1KbjtmdW5jdGlvbiBRZShTLENlKXtmb3IodmFyIHFlPVMubGVuZ3RoLGJyPTA7YnI8cWUmJkNlKFNbYnJdKTspYnIrKztyZXR1cm4gUy5zbGljZSgwLGJyKX1lLnRha2VXaGlsZT1RZSxlLnRyaW1TdHJpbmc9U3RyaW5nLnByb3RvdHlwZS50cmltP2Z1bmN0aW9uKFMpe3JldHVybiBTLnRyaW0oKX06ZnVuY3Rpb24oUyl7cmV0dXJuIGUudHJpbVN0cmluZ0VuZChlLnRyaW1TdHJpbmdTdGFydChTKSl9LGUudHJpbVN0cmluZ0VuZD1TdHJpbmcucHJvdG90eXBlLnRyaW1FbmQ/ZnVuY3Rpb24oUyl7cmV0dXJuIFMudHJpbUVuZCgpfTpHcixlLnRyaW1TdHJpbmdTdGFydD1TdHJpbmcucHJvdG90eXBlLnRyaW1TdGFydD9mdW5jdGlvbihTKXtyZXR1cm4gUy50cmltU3RhcnQoKX06ZnVuY3Rpb24oUyl7cmV0dXJuIFMucmVwbGFjZSgvXlxccysvZyxcIlwiKX07ZnVuY3Rpb24gR3IoUyl7Zm9yKHZhciBDZT1TLmxlbmd0aC0xO0NlPj0wJiZlLmlzV2hpdGVTcGFjZUxpa2UoUy5jaGFyQ29kZUF0KENlKSk7KUNlLS07cmV0dXJuIFMuc2xpY2UoMCxDZSsxKX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24odyl7d1t3Lk9mZj0wXT1cIk9mZlwiLHdbdy5FcnJvcj0xXT1cIkVycm9yXCIsd1t3Lldhcm5pbmc9Ml09XCJXYXJuaW5nXCIsd1t3LkluZm89M109XCJJbmZvXCIsd1t3LlZlcmJvc2U9NF09XCJWZXJib3NlXCJ9KShhPWUuTG9nTGV2ZWx8fChlLkxvZ0xldmVsPXt9KSk7dmFyIEM7KGZ1bmN0aW9uKHcpe3ZhciBCLEU9MDt3LmN1cnJlbnRMb2dMZXZlbD1hLldhcm5pbmcsdy5pc0RlYnVnZ2luZz0hMTtmdW5jdGlvbiBRKCl7cmV0dXJuIEIhPW51bGw/QjpCPW5ldyBlLlZlcnNpb24oZS52ZXJzaW9uKX13LmdldFR5cGVTY3JpcHRWZXJzaW9uPVE7ZnVuY3Rpb24gbGUoWWUpe3JldHVybiB3LmN1cnJlbnRMb2dMZXZlbDw9WWV9dy5zaG91bGRMb2c9bGU7ZnVuY3Rpb24gTihZZSxCcil7dy5sb2dnaW5nSG9zdCYmbGUoWWUpJiZ3LmxvZ2dpbmdIb3N0LmxvZyhZZSxCcil9ZnVuY3Rpb24gcChZZSl7TihhLkluZm8sWWUpfXcubG9nPXAsZnVuY3Rpb24oWWUpe2Z1bmN0aW9uIEJyKGxyKXtOKGEuRXJyb3IsbHIpfVllLmVycm9yPUJyO2Z1bmN0aW9uIEVyKGxyKXtOKGEuV2FybmluZyxscil9WWUud2Fybj1FcjtmdW5jdGlvbiBOZShscil7TihhLkluZm8sbHIpfVllLmxvZz1OZTtmdW5jdGlvbiBuKGxyKXtOKGEuVmVyYm9zZSxscil9WWUudHJhY2U9bn0ocD13LmxvZ3x8KHcubG9nPXt9KSk7dmFyIG09e307ZnVuY3Rpb24gRygpe3JldHVybiBFfXcuZ2V0QXNzZXJ0aW9uTGV2ZWw9RztmdW5jdGlvbiBvZShZZSl7dmFyIEJyPUU7aWYoRT1ZZSxZZT5Ccilmb3IodmFyIEVyPTAsTmU9ZS5nZXRPd25LZXlzKG0pO0VyPE5lLmxlbmd0aDtFcisrKXt2YXIgbj1OZVtFcl0sbHI9bVtuXTtsciE9PXZvaWQgMCYmd1tuXSE9PWxyLmFzc2VydGlvbiYmWWU+PWxyLmxldmVsJiYod1tuXT1scixtW25dPXZvaWQgMCl9fXcuc2V0QXNzZXJ0aW9uTGV2ZWw9b2U7ZnVuY3Rpb24gZihZZSl7cmV0dXJuIEU+PVllfXcuc2hvdWxkQXNzZXJ0PWY7ZnVuY3Rpb24gVChZZSxCcil7cmV0dXJuIGYoWWUpPyEwOihtW0JyXT17bGV2ZWw6WWUsYXNzZXJ0aW9uOndbQnJdfSx3W0JyXT1lLm5vb3AsITEpfWZ1bmN0aW9uIEsoWWUsQnIpe2RlYnVnZ2VyO3ZhciBFcj1uZXcgRXJyb3IoWWU/XCJEZWJ1ZyBGYWlsdXJlLiBcIi5jb25jYXQoWWUpOlwiRGVidWcgRmFpbHVyZS5cIik7dGhyb3cgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKEVyLEJyfHxLKSxFcn13LmZhaWw9SztmdW5jdGlvbiBiKFllLEJyLEVyKXtyZXR1cm4gSyhcIlwiLmNvbmNhdChCcnx8XCJVbmV4cGVjdGVkIG5vZGUuXCIsYFxcclxuTm9kZSBgKS5jb25jYXQoaihZZS5raW5kKSxcIiB3YXMgdW5leHBlY3RlZC5cIiksRXJ8fGIpfXcuZmFpbEJhZFN5bnRheEtpbmQ9YjtmdW5jdGlvbiBzZShZZSxCcixFcixOZSl7WWV8fChCcj1Ccj9cIkZhbHNlIGV4cHJlc3Npb246IFwiLmNvbmNhdChCcik6XCJGYWxzZSBleHByZXNzaW9uLlwiLEVyJiYoQnIrPWBcXHJcblZlcmJvc2UgRGVidWcgSW5mb3JtYXRpb246IGArKHR5cGVvZiBFcj09XCJzdHJpbmdcIj9FcjpFcigpKSksSyhCcixOZXx8c2UpKX13LmFzc2VydD1zZTtmdW5jdGlvbiBKKFllLEJyLEVyLE5lLG4pe2lmKFllIT09QnIpe3ZhciBscj1Fcj9OZT9cIlwiLmNvbmNhdChFcixcIiBcIikuY29uY2F0KE5lKTpFcjpcIlwiO0soXCJFeHBlY3RlZCBcIi5jb25jYXQoWWUsXCIgPT09IFwiKS5jb25jYXQoQnIsXCIuIFwiKS5jb25jYXQobHIpLG58fEopfX13LmFzc2VydEVxdWFsPUo7ZnVuY3Rpb24gaWUoWWUsQnIsRXIsTmUpe1llPj1CciYmSyhcIkV4cGVjdGVkIFwiLmNvbmNhdChZZSxcIiA8IFwiKS5jb25jYXQoQnIsXCIuIFwiKS5jb25jYXQoRXJ8fFwiXCIpLE5lfHxpZSl9dy5hc3NlcnRMZXNzVGhhbj1pZTtmdW5jdGlvbiBSKFllLEJyLEVyKXtZZT5CciYmSyhcIkV4cGVjdGVkIFwiLmNvbmNhdChZZSxcIiA8PSBcIikuY29uY2F0KEJyKSxFcnx8Uil9dy5hc3NlcnRMZXNzVGhhbk9yRXF1YWw9UjtmdW5jdGlvbiBxKFllLEJyLEVyKXtZZTxCciYmSyhcIkV4cGVjdGVkIFwiLmNvbmNhdChZZSxcIiA+PSBcIikuY29uY2F0KEJyKSxFcnx8cSl9dy5hc3NlcnRHcmVhdGVyVGhhbk9yRXF1YWw9cTtmdW5jdGlvbiBPKFllLEJyLEVyKXtZZT09bnVsbCYmSyhCcixFcnx8Tyl9dy5hc3NlcnRJc0RlZmluZWQ9TztmdW5jdGlvbiB2ZShZZSxCcixFcil7cmV0dXJuIE8oWWUsQnIsRXJ8fHZlKSxZZX13LmNoZWNrRGVmaW5lZD12ZTtmdW5jdGlvbiBlZShZZSxCcixFcil7Zm9yKHZhciBOZT0wLG49WWU7TmU8bi5sZW5ndGg7TmUrKyl7dmFyIGxyPW5bTmVdO08obHIsQnIsRXJ8fGVlKX19dy5hc3NlcnRFYWNoSXNEZWZpbmVkPWVlO2Z1bmN0aW9uIGhlKFllLEJyLEVyKXtyZXR1cm4gZWUoWWUsQnIsRXJ8fGhlKSxZZX13LmNoZWNrRWFjaERlZmluZWQ9aGU7ZnVuY3Rpb24gRihZZSxCcixFcil7QnI9PT12b2lkIDAmJihCcj1cIklsbGVnYWwgdmFsdWU6XCIpO3ZhciBOZT10eXBlb2YgWWU9PVwib2JqZWN0XCImJmUuaGFzUHJvcGVydHkoWWUsXCJraW5kXCIpJiZlLmhhc1Byb3BlcnR5KFllLFwicG9zXCIpP1wiU3ludGF4S2luZDogXCIraihZZS5raW5kKTpKU09OLnN0cmluZ2lmeShZZSk7cmV0dXJuIEsoXCJcIi5jb25jYXQoQnIsXCIgXCIpLmNvbmNhdChOZSksRXJ8fEYpfXcuYXNzZXJ0TmV2ZXI9RjtmdW5jdGlvbiB4KFllLEJyLEVyLE5lKXtUKDEsXCJhc3NlcnRFYWNoTm9kZVwiKSYmc2UoQnI9PT12b2lkIDB8fGUuZXZlcnkoWWUsQnIpLEVyfHxcIlVuZXhwZWN0ZWQgbm9kZS5cIixmdW5jdGlvbigpe3JldHVyblwiTm9kZSBhcnJheSBkaWQgbm90IHBhc3MgdGVzdCAnXCIuY29uY2F0KFAoQnIpLFwiJy5cIil9LE5lfHx4KX13LmFzc2VydEVhY2hOb2RlPXg7ZnVuY3Rpb24gWChZZSxCcixFcixOZSl7VCgxLFwiYXNzZXJ0Tm9kZVwiKSYmc2UoWWUhPT12b2lkIDAmJihCcj09PXZvaWQgMHx8QnIoWWUpKSxFcnx8XCJVbmV4cGVjdGVkIG5vZGUuXCIsZnVuY3Rpb24oKXtyZXR1cm5cIk5vZGUgXCIuY29uY2F0KGooWWU9PW51bGw/dm9pZCAwOlllLmtpbmQpLFwiIGRpZCBub3QgcGFzcyB0ZXN0ICdcIikuY29uY2F0KFAoQnIpLFwiJy5cIil9LE5lfHxYKX13LmFzc2VydE5vZGU9WDtmdW5jdGlvbiAkKFllLEJyLEVyLE5lKXtUKDEsXCJhc3NlcnROb3ROb2RlXCIpJiZzZShZZT09PXZvaWQgMHx8QnI9PT12b2lkIDB8fCFCcihZZSksRXJ8fFwiVW5leHBlY3RlZCBub2RlLlwiLGZ1bmN0aW9uKCl7cmV0dXJuXCJOb2RlIFwiLmNvbmNhdChqKFllLmtpbmQpLFwiIHNob3VsZCBub3QgaGF2ZSBwYXNzZWQgdGVzdCAnXCIpLmNvbmNhdChQKEJyKSxcIicuXCIpfSxOZXx8JCl9dy5hc3NlcnROb3ROb2RlPSQ7ZnVuY3Rpb24gQShZZSxCcixFcixOZSl7VCgxLFwiYXNzZXJ0T3B0aW9uYWxOb2RlXCIpJiZzZShCcj09PXZvaWQgMHx8WWU9PT12b2lkIDB8fEJyKFllKSxFcnx8XCJVbmV4cGVjdGVkIG5vZGUuXCIsZnVuY3Rpb24oKXtyZXR1cm5cIk5vZGUgXCIuY29uY2F0KGooWWU9PW51bGw/dm9pZCAwOlllLmtpbmQpLFwiIGRpZCBub3QgcGFzcyB0ZXN0ICdcIikuY29uY2F0KFAoQnIpLFwiJy5cIil9LE5lfHxBKX13LmFzc2VydE9wdGlvbmFsTm9kZT1BO2Z1bmN0aW9uIHkoWWUsQnIsRXIsTmUpe1QoMSxcImFzc2VydE9wdGlvbmFsVG9rZW5cIikmJnNlKEJyPT09dm9pZCAwfHxZZT09PXZvaWQgMHx8WWUua2luZD09PUJyLEVyfHxcIlVuZXhwZWN0ZWQgbm9kZS5cIixmdW5jdGlvbigpe3JldHVyblwiTm9kZSBcIi5jb25jYXQoaihZZT09bnVsbD92b2lkIDA6WWUua2luZCksXCIgd2FzIG5vdCBhICdcIikuY29uY2F0KGooQnIpLFwiJyB0b2tlbi5cIil9LE5lfHx5KX13LmFzc2VydE9wdGlvbmFsVG9rZW49eTtmdW5jdGlvbiBWKFllLEJyLEVyKXtUKDEsXCJhc3NlcnRNaXNzaW5nTm9kZVwiKSYmc2UoWWU9PT12b2lkIDAsQnJ8fFwiVW5leHBlY3RlZCBub2RlLlwiLGZ1bmN0aW9uKCl7cmV0dXJuXCJOb2RlIFwiLmNvbmNhdChqKFllLmtpbmQpLFwiIHdhcyB1bmV4cGVjdGVkJy5cIil9LEVyfHxWKX13LmFzc2VydE1pc3NpbmdOb2RlPVY7ZnVuY3Rpb24gTChZZSl7fXcudHlwZT1MO2Z1bmN0aW9uIFAoWWUpe2lmKHR5cGVvZiBZZSE9XCJmdW5jdGlvblwiKXJldHVyblwiXCI7aWYoWWUuaGFzT3duUHJvcGVydHkoXCJuYW1lXCIpKXJldHVybiBZZS5uYW1lO3ZhciBCcj1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChZZSksRXI9L15mdW5jdGlvblxccysoW1xcd1xcJF0rKVxccypcXCgvLmV4ZWMoQnIpO3JldHVybiBFcj9FclsxXTpcIlwifXcuZ2V0RnVuY3Rpb25OYW1lPVA7ZnVuY3Rpb24gayhZZSl7cmV0dXJuXCJ7IG5hbWU6IFwiLmNvbmNhdChlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFllLmVzY2FwZWROYW1lKSxcIjsgZmxhZ3M6IFwiKS5jb25jYXQoZmUoWWUuZmxhZ3MpLFwiOyBkZWNsYXJhdGlvbnM6IFwiKS5jb25jYXQoZS5tYXAoWWUuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKEJyKXtyZXR1cm4gaihCci5raW5kKX0pLFwiIH1cIil9dy5mb3JtYXRTeW1ib2w9aztmdW5jdGlvbiBZKFllLEJyLEVyKXtZZT09PXZvaWQgMCYmKFllPTApO3ZhciBOZT1VKEJyKTtpZihZZT09PTApcmV0dXJuIE5lLmxlbmd0aD4wJiZOZVswXVswXT09PTA/TmVbMF1bMV06XCIwXCI7aWYoRXIpe2Zvcih2YXIgbj1cIlwiLGxyPVllLGJlPTAsR2U9TmU7YmU8R2UubGVuZ3RoO2JlKyspe3ZhciB1cj1HZVtiZV0seXI9dXJbMF0sSXI9dXJbMV07aWYoeXI+WWUpYnJlYWs7eXIhPT0wJiZ5ciZZZSYmKG49XCJcIi5jb25jYXQobikuY29uY2F0KG4/XCJ8XCI6XCJcIikuY29uY2F0KElyKSxsciY9fnlyKX1pZihscj09PTApcmV0dXJuIG59ZWxzZSBmb3IodmFyIHdyPTAsVXI9TmU7d3I8VXIubGVuZ3RoO3dyKyspe3ZhciBpaT1Vclt3cl0seXI9aWlbMF0sSXI9aWlbMV07aWYoeXI9PT1ZZSlyZXR1cm4gSXJ9cmV0dXJuIFllLnRvU3RyaW5nKCl9dy5mb3JtYXRFbnVtPVk7ZnVuY3Rpb24gVShZZSl7dmFyIEJyPVtdO2Zvcih2YXIgRXIgaW4gWWUpe3ZhciBOZT1ZZVtFcl07dHlwZW9mIE5lPT1cIm51bWJlclwiJiZCci5wdXNoKFtOZSxFcl0pfXJldHVybiBlLnN0YWJsZVNvcnQoQnIsZnVuY3Rpb24obixscil7cmV0dXJuIGUuY29tcGFyZVZhbHVlcyhuWzBdLGxyWzBdKX0pfWZ1bmN0aW9uIGooWWUpe3JldHVybiBZKFllLGUuU3ludGF4S2luZCwhMSl9dy5mb3JtYXRTeW50YXhLaW5kPWo7ZnVuY3Rpb24gSChZZSl7cmV0dXJuIFkoWWUsZS5TbmlwcGV0S2luZCwhMSl9dy5mb3JtYXRTbmlwcGV0S2luZD1IO2Z1bmN0aW9uIEkoWWUpe3JldHVybiBZKFllLGUuTm9kZUZsYWdzLCEwKX13LmZvcm1hdE5vZGVGbGFncz1JO2Z1bmN0aW9uIGwoWWUpe3JldHVybiBZKFllLGUuTW9kaWZpZXJGbGFncywhMCl9dy5mb3JtYXRNb2RpZmllckZsYWdzPWw7ZnVuY3Rpb24gZChZZSl7cmV0dXJuIFkoWWUsZS5UcmFuc2Zvcm1GbGFncywhMCl9dy5mb3JtYXRUcmFuc2Zvcm1GbGFncz1kO2Z1bmN0aW9uIEQoWWUpe3JldHVybiBZKFllLGUuRW1pdEZsYWdzLCEwKX13LmZvcm1hdEVtaXRGbGFncz1EO2Z1bmN0aW9uIGZlKFllKXtyZXR1cm4gWShZZSxlLlN5bWJvbEZsYWdzLCEwKX13LmZvcm1hdFN5bWJvbEZsYWdzPWZlO2Z1bmN0aW9uIGcoWWUpe3JldHVybiBZKFllLGUuVHlwZUZsYWdzLCEwKX13LmZvcm1hdFR5cGVGbGFncz1nO2Z1bmN0aW9uIG5lKFllKXtyZXR1cm4gWShZZSxlLlNpZ25hdHVyZUZsYWdzLCEwKX13LmZvcm1hdFNpZ25hdHVyZUZsYWdzPW5lO2Z1bmN0aW9uIHVlKFllKXtyZXR1cm4gWShZZSxlLk9iamVjdEZsYWdzLCEwKX13LmZvcm1hdE9iamVjdEZsYWdzPXVlO2Z1bmN0aW9uIFdlKFllKXtyZXR1cm4gWShZZSxlLkZsb3dGbGFncywhMCl9dy5mb3JtYXRGbG93RmxhZ3M9V2U7dmFyIEZlPSExLFo7ZnVuY3Rpb24gQmUoKXtpZih3ZSgpLCFaKXRocm93IG5ldyBFcnJvcihcIkRlYnVnZ2luZyBoZWxwZXJzIGNvdWxkIG5vdCBiZSBsb2FkZWQuXCIpO3JldHVybiBafWZ1bmN0aW9uIGdlKFllKXtyZXR1cm4gY29uc29sZS5sb2coUmUoWWUpKX13LnByaW50Q29udHJvbEZsb3dHcmFwaD1nZTtmdW5jdGlvbiBSZShZZSl7cmV0dXJuIEJlKCkuZm9ybWF0Q29udHJvbEZsb3dHcmFwaChZZSl9dy5mb3JtYXRDb250cm9sRmxvd0dyYXBoPVJlO3ZhciB6ZTtmdW5jdGlvbiBFZShZZSl7XCJfX2RlYnVnRmxvd0ZsYWdzXCJpbiBZZXx8T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWWUse19fdHNEZWJ1Z2dlckRpc3BsYXk6e3ZhbHVlOmZ1bmN0aW9uKCl7dmFyIEJyPXRoaXMuZmxhZ3MmMj9cIkZsb3dTdGFydFwiOnRoaXMuZmxhZ3MmND9cIkZsb3dCcmFuY2hMYWJlbFwiOnRoaXMuZmxhZ3MmOD9cIkZsb3dMb29wTGFiZWxcIjp0aGlzLmZsYWdzJjE2P1wiRmxvd0Fzc2lnbm1lbnRcIjp0aGlzLmZsYWdzJjMyP1wiRmxvd1RydWVDb25kaXRpb25cIjp0aGlzLmZsYWdzJjY0P1wiRmxvd0ZhbHNlQ29uZGl0aW9uXCI6dGhpcy5mbGFncyYxMjg/XCJGbG93U3dpdGNoQ2xhdXNlXCI6dGhpcy5mbGFncyYyNTY/XCJGbG93QXJyYXlNdXRhdGlvblwiOnRoaXMuZmxhZ3MmNTEyP1wiRmxvd0NhbGxcIjp0aGlzLmZsYWdzJjEwMjQ/XCJGbG93UmVkdWNlTGFiZWxcIjp0aGlzLmZsYWdzJjE/XCJGbG93VW5yZWFjaGFibGVcIjpcIlVua25vd25GbG93XCIsRXI9dGhpcy5mbGFncyZ+KDIwNDgtMSk7cmV0dXJuXCJcIi5jb25jYXQoQnIpLmNvbmNhdChFcj9cIiAoXCIuY29uY2F0KFdlKEVyKSxcIilcIik6XCJcIil9fSxfX2RlYnVnRmxvd0ZsYWdzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLmZsYWdzLGUuRmxvd0ZsYWdzLCEwKX19LF9fZGVidWdUb1N0cmluZzp7dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUmUodGhpcyl9fX0pfWZ1bmN0aW9uIEhlKFllKXtGZSYmKHR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y9PVwiZnVuY3Rpb25cIj8oemV8fCh6ZT1PYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUpLEVlKHplKSksT2JqZWN0LnNldFByb3RvdHlwZU9mKFllLHplKSk6RWUoWWUpKX13LmF0dGFjaEZsb3dOb2RlRGVidWdJbmZvPUhlO3ZhciBycjtmdW5jdGlvbiBJZShZZSl7XCJfX3RzRGVidWdnZXJEaXNwbGF5XCJpbiBZZXx8T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWWUse19fdHNEZWJ1Z2dlckRpc3BsYXk6e3ZhbHVlOmZ1bmN0aW9uKEJyKXtyZXR1cm4gQnI9U3RyaW5nKEJyKS5yZXBsYWNlKC8oPzosW1xcc1xcd1xcZF9dKzpbXixdKykrXFxdJC8sXCJdXCIpLFwiTm9kZUFycmF5IFwiLmNvbmNhdChCcil9fX0pfWZ1bmN0aW9uIF9lKFllKXtGZSYmKHR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y9PVwiZnVuY3Rpb25cIj8ocnJ8fChycj1PYmplY3QuY3JlYXRlKEFycmF5LnByb3RvdHlwZSksSWUocnIpKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoWWUscnIpKTpJZShZZSkpfXcuYXR0YWNoTm9kZUFycmF5RGVidWdJbmZvPV9lO2Z1bmN0aW9uIHdlKCl7aWYoRmUpcmV0dXJuO3ZhciBZZSxCcjtmdW5jdGlvbiBFcigpe3JldHVybiBZZT09PXZvaWQgMCYmdHlwZW9mIFdlYWtNYXA9PVwiZnVuY3Rpb25cIiYmKFllPW5ldyBXZWFrTWFwKSxZZX1mdW5jdGlvbiBOZSgpe3JldHVybiBCcj09PXZvaWQgMCYmdHlwZW9mIFdlYWtNYXA9PVwiZnVuY3Rpb25cIiYmKEJyPW5ldyBXZWFrTWFwKSxCcn1PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLm9iamVjdEFsbG9jYXRvci5nZXRTeW1ib2xDb25zdHJ1Y3RvcigpLnByb3RvdHlwZSx7X190c0RlYnVnZ2VyRGlzcGxheTp7dmFsdWU6ZnVuY3Rpb24oKXt2YXIgSXI9dGhpcy5mbGFncyYzMzU1NDQzMj9cIlRyYW5zaWVudFN5bWJvbFwiOlwiU3ltYm9sXCIsd3I9dGhpcy5mbGFncyYtMzM1NTQ0MzM7cmV0dXJuXCJcIi5jb25jYXQoSXIsXCIgJ1wiKS5jb25jYXQoZS5zeW1ib2xOYW1lKHRoaXMpLFwiJ1wiKS5jb25jYXQod3I/XCIgKFwiLmNvbmNhdChmZSh3ciksXCIpXCIpOlwiXCIpfX0sX19kZWJ1Z0ZsYWdzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZmUodGhpcy5mbGFncyl9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUub2JqZWN0QWxsb2NhdG9yLmdldFR5cGVDb25zdHJ1Y3RvcigpLnByb3RvdHlwZSx7X190c0RlYnVnZ2VyRGlzcGxheTp7dmFsdWU6ZnVuY3Rpb24oKXt2YXIgSXI9dGhpcy5mbGFncyY5ODMwND9cIk51bGxhYmxlVHlwZVwiOnRoaXMuZmxhZ3MmMzg0P1wiTGl0ZXJhbFR5cGUgXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpKTp0aGlzLmZsYWdzJjIwNDg/XCJMaXRlcmFsVHlwZSBcIi5jb25jYXQodGhpcy52YWx1ZS5uZWdhdGl2ZT9cIi1cIjpcIlwiKS5jb25jYXQodGhpcy52YWx1ZS5iYXNlMTBWYWx1ZSxcIm5cIik6dGhpcy5mbGFncyY4MTkyP1wiVW5pcXVlRVNTeW1ib2xUeXBlXCI6dGhpcy5mbGFncyYzMj9cIkVudW1UeXBlXCI6dGhpcy5mbGFncyY2NzM1OTMyNz9cIkludHJpbnNpY1R5cGUgXCIuY29uY2F0KHRoaXMuaW50cmluc2ljTmFtZSk6dGhpcy5mbGFncyYxMDQ4NTc2P1wiVW5pb25UeXBlXCI6dGhpcy5mbGFncyYyMDk3MTUyP1wiSW50ZXJzZWN0aW9uVHlwZVwiOnRoaXMuZmxhZ3MmNDE5NDMwND9cIkluZGV4VHlwZVwiOnRoaXMuZmxhZ3MmODM4ODYwOD9cIkluZGV4ZWRBY2Nlc3NUeXBlXCI6dGhpcy5mbGFncyYxNjc3NzIxNj9cIkNvbmRpdGlvbmFsVHlwZVwiOnRoaXMuZmxhZ3MmMzM1NTQ0MzI/XCJTdWJzdGl0dXRpb25UeXBlXCI6dGhpcy5mbGFncyYyNjIxNDQ/XCJUeXBlUGFyYW1ldGVyXCI6dGhpcy5mbGFncyY1MjQyODg/dGhpcy5vYmplY3RGbGFncyYzP1wiSW50ZXJmYWNlVHlwZVwiOnRoaXMub2JqZWN0RmxhZ3MmND9cIlR5cGVSZWZlcmVuY2VcIjp0aGlzLm9iamVjdEZsYWdzJjg/XCJUdXBsZVR5cGVcIjp0aGlzLm9iamVjdEZsYWdzJjE2P1wiQW5vbnltb3VzVHlwZVwiOnRoaXMub2JqZWN0RmxhZ3MmMzI/XCJNYXBwZWRUeXBlXCI6dGhpcy5vYmplY3RGbGFncyYxMDI0P1wiUmV2ZXJzZU1hcHBlZFR5cGVcIjp0aGlzLm9iamVjdEZsYWdzJjI1Nj9cIkV2b2x2aW5nQXJyYXlUeXBlXCI6XCJPYmplY3RUeXBlXCI6XCJUeXBlXCIsd3I9dGhpcy5mbGFncyY1MjQyODg/dGhpcy5vYmplY3RGbGFncyYtMTM0NDowO3JldHVyblwiXCIuY29uY2F0KElyKS5jb25jYXQodGhpcy5zeW1ib2w/XCIgJ1wiLmNvbmNhdChlLnN5bWJvbE5hbWUodGhpcy5zeW1ib2wpLFwiJ1wiKTpcIlwiKS5jb25jYXQod3I/XCIgKFwiLmNvbmNhdCh1ZSh3ciksXCIpXCIpOlwiXCIpfX0sX19kZWJ1Z0ZsYWdzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyh0aGlzLmZsYWdzKX19LF9fZGVidWdPYmplY3RGbGFnczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmxhZ3MmNTI0Mjg4P3VlKHRoaXMub2JqZWN0RmxhZ3MpOlwiXCJ9fSxfX2RlYnVnVHlwZVRvU3RyaW5nOnt2YWx1ZTpmdW5jdGlvbigpe3ZhciBJcj1FcigpLHdyPUlyPT1udWxsP3ZvaWQgMDpJci5nZXQodGhpcyk7cmV0dXJuIHdyPT09dm9pZCAwJiYod3I9dGhpcy5jaGVja2VyLnR5cGVUb1N0cmluZyh0aGlzKSxJcj09bnVsbHx8SXIuc2V0KHRoaXMsd3IpKSx3cn19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZS5vYmplY3RBbGxvY2F0b3IuZ2V0U2lnbmF0dXJlQ29uc3RydWN0b3IoKS5wcm90b3R5cGUse19fZGVidWdGbGFnczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5lKHRoaXMuZmxhZ3MpfX0sX19kZWJ1Z1NpZ25hdHVyZVRvU3RyaW5nOnt2YWx1ZTpmdW5jdGlvbigpe3ZhciBJcjtyZXR1cm4oSXI9dGhpcy5jaGVja2VyKT09PW51bGx8fElyPT09dm9pZCAwP3ZvaWQgMDpJci5zaWduYXR1cmVUb1N0cmluZyh0aGlzKX19fSk7Zm9yKHZhciBuPVtlLm9iamVjdEFsbG9jYXRvci5nZXROb2RlQ29uc3RydWN0b3IoKSxlLm9iamVjdEFsbG9jYXRvci5nZXRJZGVudGlmaWVyQ29uc3RydWN0b3IoKSxlLm9iamVjdEFsbG9jYXRvci5nZXRUb2tlbkNvbnN0cnVjdG9yKCksZS5vYmplY3RBbGxvY2F0b3IuZ2V0U291cmNlRmlsZUNvbnN0cnVjdG9yKCldLGxyPTAsYmU9bjtscjxiZS5sZW5ndGg7bHIrKyl7dmFyIEdlPWJlW2xyXTtHZS5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoXCJfX2RlYnVnS2luZFwiKXx8T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoR2UucHJvdG90eXBlLHtfX3RzRGVidWdnZXJEaXNwbGF5Ont2YWx1ZTpmdW5jdGlvbigpe3ZhciBJcj1lLmlzR2VuZXJhdGVkSWRlbnRpZmllcih0aGlzKT9cIkdlbmVyYXRlZElkZW50aWZpZXJcIjplLmlzSWRlbnRpZmllcih0aGlzKT9cIklkZW50aWZpZXIgJ1wiLmNvbmNhdChlLmlkVGV4dCh0aGlzKSxcIidcIik6ZS5pc1ByaXZhdGVJZGVudGlmaWVyKHRoaXMpP1wiUHJpdmF0ZUlkZW50aWZpZXIgJ1wiLmNvbmNhdChlLmlkVGV4dCh0aGlzKSxcIidcIik6ZS5pc1N0cmluZ0xpdGVyYWwodGhpcyk/XCJTdHJpbmdMaXRlcmFsIFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeSh0aGlzLnRleHQubGVuZ3RoPDEwP3RoaXMudGV4dDp0aGlzLnRleHQuc2xpY2UoMTApK1wiLi4uXCIpKTplLmlzTnVtZXJpY0xpdGVyYWwodGhpcyk/XCJOdW1lcmljTGl0ZXJhbCBcIi5jb25jYXQodGhpcy50ZXh0KTplLmlzQmlnSW50TGl0ZXJhbCh0aGlzKT9cIkJpZ0ludExpdGVyYWwgXCIuY29uY2F0KHRoaXMudGV4dCxcIm5cIik6ZS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih0aGlzKT9cIlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvblwiOmUuaXNQYXJhbWV0ZXIodGhpcyk/XCJQYXJhbWV0ZXJEZWNsYXJhdGlvblwiOmUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKHRoaXMpP1wiQ29uc3RydWN0b3JEZWNsYXJhdGlvblwiOmUuaXNHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHRoaXMpP1wiR2V0QWNjZXNzb3JEZWNsYXJhdGlvblwiOmUuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHRoaXMpP1wiU2V0QWNjZXNzb3JEZWNsYXJhdGlvblwiOmUuaXNDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb24odGhpcyk/XCJDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb25cIjplLmlzQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb24odGhpcyk/XCJDb25zdHJ1Y3RTaWduYXR1cmVEZWNsYXJhdGlvblwiOmUuaXNJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKHRoaXMpP1wiSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvblwiOmUuaXNUeXBlUHJlZGljYXRlTm9kZSh0aGlzKT9cIlR5cGVQcmVkaWNhdGVOb2RlXCI6ZS5pc1R5cGVSZWZlcmVuY2VOb2RlKHRoaXMpP1wiVHlwZVJlZmVyZW5jZU5vZGVcIjplLmlzRnVuY3Rpb25UeXBlTm9kZSh0aGlzKT9cIkZ1bmN0aW9uVHlwZU5vZGVcIjplLmlzQ29uc3RydWN0b3JUeXBlTm9kZSh0aGlzKT9cIkNvbnN0cnVjdG9yVHlwZU5vZGVcIjplLmlzVHlwZVF1ZXJ5Tm9kZSh0aGlzKT9cIlR5cGVRdWVyeU5vZGVcIjplLmlzVHlwZUxpdGVyYWxOb2RlKHRoaXMpP1wiVHlwZUxpdGVyYWxOb2RlXCI6ZS5pc0FycmF5VHlwZU5vZGUodGhpcyk/XCJBcnJheVR5cGVOb2RlXCI6ZS5pc1R1cGxlVHlwZU5vZGUodGhpcyk/XCJUdXBsZVR5cGVOb2RlXCI6ZS5pc09wdGlvbmFsVHlwZU5vZGUodGhpcyk/XCJPcHRpb25hbFR5cGVOb2RlXCI6ZS5pc1Jlc3RUeXBlTm9kZSh0aGlzKT9cIlJlc3RUeXBlTm9kZVwiOmUuaXNVbmlvblR5cGVOb2RlKHRoaXMpP1wiVW5pb25UeXBlTm9kZVwiOmUuaXNJbnRlcnNlY3Rpb25UeXBlTm9kZSh0aGlzKT9cIkludGVyc2VjdGlvblR5cGVOb2RlXCI6ZS5pc0NvbmRpdGlvbmFsVHlwZU5vZGUodGhpcyk/XCJDb25kaXRpb25hbFR5cGVOb2RlXCI6ZS5pc0luZmVyVHlwZU5vZGUodGhpcyk/XCJJbmZlclR5cGVOb2RlXCI6ZS5pc1BhcmVudGhlc2l6ZWRUeXBlTm9kZSh0aGlzKT9cIlBhcmVudGhlc2l6ZWRUeXBlTm9kZVwiOmUuaXNUaGlzVHlwZU5vZGUodGhpcyk/XCJUaGlzVHlwZU5vZGVcIjplLmlzVHlwZU9wZXJhdG9yTm9kZSh0aGlzKT9cIlR5cGVPcGVyYXRvck5vZGVcIjplLmlzSW5kZXhlZEFjY2Vzc1R5cGVOb2RlKHRoaXMpP1wiSW5kZXhlZEFjY2Vzc1R5cGVOb2RlXCI6ZS5pc01hcHBlZFR5cGVOb2RlKHRoaXMpP1wiTWFwcGVkVHlwZU5vZGVcIjplLmlzTGl0ZXJhbFR5cGVOb2RlKHRoaXMpP1wiTGl0ZXJhbFR5cGVOb2RlXCI6ZS5pc05hbWVkVHVwbGVNZW1iZXIodGhpcyk/XCJOYW1lZFR1cGxlTWVtYmVyXCI6ZS5pc0ltcG9ydFR5cGVOb2RlKHRoaXMpP1wiSW1wb3J0VHlwZU5vZGVcIjpqKHRoaXMua2luZCk7cmV0dXJuXCJcIi5jb25jYXQoSXIpLmNvbmNhdCh0aGlzLmZsYWdzP1wiIChcIi5jb25jYXQoSSh0aGlzLmZsYWdzKSxcIilcIik6XCJcIil9fSxfX2RlYnVnS2luZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGoodGhpcy5raW5kKX19LF9fZGVidWdOb2RlRmxhZ3M6e2dldDpmdW5jdGlvbigpe3JldHVybiBJKHRoaXMuZmxhZ3MpfX0sX19kZWJ1Z01vZGlmaWVyRmxhZ3M6e2dldDpmdW5jdGlvbigpe3JldHVybiBsKGUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFnc05vQ2FjaGUodGhpcykpfX0sX19kZWJ1Z1RyYW5zZm9ybUZsYWdzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZCh0aGlzLnRyYW5zZm9ybUZsYWdzKX19LF9fZGVidWdJc1BhcnNlVHJlZU5vZGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBlLmlzUGFyc2VUcmVlTm9kZSh0aGlzKX19LF9fZGVidWdFbWl0RmxhZ3M6e2dldDpmdW5jdGlvbigpe3JldHVybiBEKGUuZ2V0RW1pdEZsYWdzKHRoaXMpKX19LF9fZGVidWdHZXRUZXh0Ont2YWx1ZTpmdW5jdGlvbihJcil7aWYoZS5ub2RlSXNTeW50aGVzaXplZCh0aGlzKSlyZXR1cm5cIlwiO3ZhciB3cj1OZSgpLFVyPXdyPT1udWxsP3ZvaWQgMDp3ci5nZXQodGhpcyk7aWYoVXI9PT12b2lkIDApe3ZhciBpaT1lLmdldFBhcnNlVHJlZU5vZGUodGhpcyksbWk9aWkmJmUuZ2V0U291cmNlRmlsZU9mTm9kZShpaSk7VXI9bWk/ZS5nZXRTb3VyY2VUZXh0T2ZOb2RlRnJvbVNvdXJjZUZpbGUobWksaWksSXIpOlwiXCIsd3I9PW51bGx8fHdyLnNldCh0aGlzLFVyKX1yZXR1cm4gVXJ9fX0pfXRyeXtpZighMSl2YXIgdXIseXJ9Y2F0Y2h7fUZlPSEwfXcuZW5hYmxlRGVidWdJbmZvPXdlO2Z1bmN0aW9uIGRlKFllLEJyLEVyLE5lLG4pe3ZhciBscj1Ccj9cIkRlcHJlY2F0aW9uRXJyb3I6IFwiOlwiRGVwcmVjYXRpb25XYXJuaW5nOiBcIjtyZXR1cm4gbHIrPVwiJ1wiLmNvbmNhdChZZSxcIicgXCIpLGxyKz1OZT9cImhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdlwiLmNvbmNhdChOZSk6XCJpcyBkZXByZWNhdGVkXCIsbHIrPUJyP1wiIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuXCI6RXI/XCIgYW5kIHdpbGwgbm8gbG9uZ2VyIGJlIHVzYWJsZSBhZnRlciB2XCIuY29uY2F0KEVyLFwiLlwiKTpcIi5cIixscis9bj9cIiBcIi5jb25jYXQoZS5mb3JtYXRTdHJpbmdGcm9tQXJncyhuLFtZZV0sMCkpOlwiXCIsbHJ9ZnVuY3Rpb24geWUoWWUsQnIsRXIsTmUpe3ZhciBuPWRlKFllLCEwLEJyLEVyLE5lKTtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKG4pfX1mdW5jdGlvbiBBZShZZSxCcixFcixOZSl7dmFyIG49ITE7cmV0dXJuIGZ1bmN0aW9uKCl7bnx8KHAud2FybihkZShZZSwhMSxCcixFcixOZSkpLG49ITApfX1mdW5jdGlvbiBlcihZZSxCcil7dmFyIEVyLE5lO0JyPT09dm9pZCAwJiYoQnI9e30pO3ZhciBuPXR5cGVvZiBCci50eXBlU2NyaXB0VmVyc2lvbj09XCJzdHJpbmdcIj9uZXcgZS5WZXJzaW9uKEJyLnR5cGVTY3JpcHRWZXJzaW9uKTooRXI9QnIudHlwZVNjcmlwdFZlcnNpb24pIT09bnVsbCYmRXIhPT12b2lkIDA/RXI6USgpLGxyPXR5cGVvZiBCci5lcnJvckFmdGVyPT1cInN0cmluZ1wiP25ldyBlLlZlcnNpb24oQnIuZXJyb3JBZnRlcik6QnIuZXJyb3JBZnRlcixiZT10eXBlb2YgQnIud2FybkFmdGVyPT1cInN0cmluZ1wiP25ldyBlLlZlcnNpb24oQnIud2FybkFmdGVyKTpCci53YXJuQWZ0ZXIsR2U9dHlwZW9mIEJyLnNpbmNlPT1cInN0cmluZ1wiP25ldyBlLlZlcnNpb24oQnIuc2luY2UpOihOZT1Cci5zaW5jZSkhPT1udWxsJiZOZSE9PXZvaWQgMD9OZTpiZSx1cj1Cci5lcnJvcnx8bHImJm4uY29tcGFyZVRvKGxyKTw9MCx5cj0hYmV8fG4uY29tcGFyZVRvKGJlKT49MDtyZXR1cm4gdXI/eWUoWWUsbHIsR2UsQnIubWVzc2FnZSk6eXI/QWUoWWUsbHIsR2UsQnIubWVzc2FnZSk6ZS5ub29wfWZ1bmN0aW9uIGlyKFllLEJyKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWWUoKSxCci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIENyKFllLEJyKXt2YXIgRXI9ZXIoUChZZSksQnIpO3JldHVybiBpcihFcixZZSl9dy5kZXByZWNhdGU9Q3J9KShDPWUuRGVidWd8fChlLkRlYnVnPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYT0vXigwfFsxLTldXFxkKikoPzpcXC4oMHxbMS05XVxcZCopKD86XFwuKDB8WzEtOV1cXGQqKSg/OlxcLShbYS16MC05LS5dKykpPyg/OlxcKyhbYS16MC05LS5dKykpPyk/KT8kL2ksQz0vXig/OjB8WzEtOV1cXGQqfFthLXotXVthLXowLTktXSopKD86XFwuKD86MHxbMS05XVxcZCp8W2Etei1dW2EtejAtOS1dKikpKiQvaSx3PS9eW2EtejAtOS1dKyg/OlxcLlthLXowLTktXSspKiQvaSxCPS9eKDB8WzEtOV1cXGQqKSQvLEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBGKHgsWCwkLEEseSl7aWYoWD09PXZvaWQgMCYmKFg9MCksJD09PXZvaWQgMCYmKCQ9MCksQT09PXZvaWQgMCYmKEE9XCJcIikseT09PXZvaWQgMCYmKHk9XCJcIiksdHlwZW9mIHg9PVwic3RyaW5nXCIpe3ZhciBWPWUuRGVidWcuY2hlY2tEZWZpbmVkKFEoeCksXCJJbnZhbGlkIHZlcnNpb25cIik7eD1WLm1ham9yLFg9Vi5taW5vciwkPVYucGF0Y2gsQT1WLnByZXJlbGVhc2UseT1WLmJ1aWxkfWUuRGVidWcuYXNzZXJ0KHg+PTAsXCJJbnZhbGlkIGFyZ3VtZW50OiBtYWpvclwiKSxlLkRlYnVnLmFzc2VydChYPj0wLFwiSW52YWxpZCBhcmd1bWVudDogbWlub3JcIiksZS5EZWJ1Zy5hc3NlcnQoJD49MCxcIkludmFsaWQgYXJndW1lbnQ6IHBhdGNoXCIpLGUuRGVidWcuYXNzZXJ0KCFBfHxDLnRlc3QoQSksXCJJbnZhbGlkIGFyZ3VtZW50OiBwcmVyZWxlYXNlXCIpLGUuRGVidWcuYXNzZXJ0KCF5fHx3LnRlc3QoeSksXCJJbnZhbGlkIGFyZ3VtZW50OiBidWlsZFwiKSx0aGlzLm1ham9yPXgsdGhpcy5taW5vcj1YLHRoaXMucGF0Y2g9JCx0aGlzLnByZXJlbGVhc2U9QT9BLnNwbGl0KFwiLlwiKTplLmVtcHR5QXJyYXksdGhpcy5idWlsZD15P3kuc3BsaXQoXCIuXCIpOmUuZW1wdHlBcnJheX1yZXR1cm4gRi50cnlQYXJzZT1mdW5jdGlvbih4KXt2YXIgWD1RKHgpO2lmKCEhWCl7dmFyICQ9WC5tYWpvcixBPVgubWlub3IseT1YLnBhdGNoLFY9WC5wcmVyZWxlYXNlLEw9WC5idWlsZDtyZXR1cm4gbmV3IEYoJCxBLHksVixMKX19LEYucHJvdG90eXBlLmNvbXBhcmVUbz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcz09PXg/MDp4PT09dm9pZCAwPzE6ZS5jb21wYXJlVmFsdWVzKHRoaXMubWFqb3IseC5tYWpvcil8fGUuY29tcGFyZVZhbHVlcyh0aGlzLm1pbm9yLHgubWlub3IpfHxlLmNvbXBhcmVWYWx1ZXModGhpcy5wYXRjaCx4LnBhdGNoKXx8bGUodGhpcy5wcmVyZWxlYXNlLHgucHJlcmVsZWFzZSl9LEYucHJvdG90eXBlLmluY3JlbWVudD1mdW5jdGlvbih4KXtzd2l0Y2goeCl7Y2FzZVwibWFqb3JcIjpyZXR1cm4gbmV3IEYodGhpcy5tYWpvcisxLDAsMCk7Y2FzZVwibWlub3JcIjpyZXR1cm4gbmV3IEYodGhpcy5tYWpvcix0aGlzLm1pbm9yKzEsMCk7Y2FzZVwicGF0Y2hcIjpyZXR1cm4gbmV3IEYodGhpcy5tYWpvcix0aGlzLm1pbm9yLHRoaXMucGF0Y2grMSk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcih4KX19LEYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHg9XCJcIi5jb25jYXQodGhpcy5tYWpvcixcIi5cIikuY29uY2F0KHRoaXMubWlub3IsXCIuXCIpLmNvbmNhdCh0aGlzLnBhdGNoKTtyZXR1cm4gZS5zb21lKHRoaXMucHJlcmVsZWFzZSkmJih4Kz1cIi1cIi5jb25jYXQodGhpcy5wcmVyZWxlYXNlLmpvaW4oXCIuXCIpKSksZS5zb21lKHRoaXMuYnVpbGQpJiYoeCs9XCIrXCIuY29uY2F0KHRoaXMuYnVpbGQuam9pbihcIi5cIikpKSx4fSxGLnplcm89bmV3IEYoMCwwLDApLEZ9KCk7ZS5WZXJzaW9uPUU7ZnVuY3Rpb24gUShGKXt2YXIgeD1hLmV4ZWMoRik7aWYoISF4KXt2YXIgWD14WzFdLCQ9eFsyXSxBPSQ9PT12b2lkIDA/XCIwXCI6JCx5PXhbM10sVj15PT09dm9pZCAwP1wiMFwiOnksTD14WzRdLFA9TD09PXZvaWQgMD9cIlwiOkwsaz14WzVdLFk9az09PXZvaWQgMD9cIlwiOms7aWYoIShQJiYhQy50ZXN0KFApKSYmIShZJiYhdy50ZXN0KFkpKSlyZXR1cm57bWFqb3I6cGFyc2VJbnQoWCwxMCksbWlub3I6cGFyc2VJbnQoQSwxMCkscGF0Y2g6cGFyc2VJbnQoViwxMCkscHJlcmVsZWFzZTpQLGJ1aWxkOll9fX1mdW5jdGlvbiBsZShGLHgpe2lmKEY9PT14KXJldHVybiAwO2lmKEYubGVuZ3RoPT09MClyZXR1cm4geC5sZW5ndGg9PT0wPzA6MTtpZih4Lmxlbmd0aD09PTApcmV0dXJuLTE7Zm9yKHZhciBYPU1hdGgubWluKEYubGVuZ3RoLHgubGVuZ3RoKSwkPTA7JDxYOyQrKyl7dmFyIEE9RlskXSx5PXhbJF07aWYoQSE9PXkpe3ZhciBWPUIudGVzdChBKSxMPUIudGVzdCh5KTtpZihWfHxMKXtpZihWIT09TClyZXR1cm4gVj8tMToxO3ZhciBQPWUuY29tcGFyZVZhbHVlcygrQSwreSk7aWYoUClyZXR1cm4gUH1lbHNle3ZhciBQPWUuY29tcGFyZVN0cmluZ3NDYXNlU2Vuc2l0aXZlKEEseSk7aWYoUClyZXR1cm4gUH19fXJldHVybiBlLmNvbXBhcmVWYWx1ZXMoRi5sZW5ndGgseC5sZW5ndGgpfXZhciBOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRih4KXt0aGlzLl9hbHRlcm5hdGl2ZXM9eD9lLkRlYnVnLmNoZWNrRGVmaW5lZChUKHgpLFwiSW52YWxpZCByYW5nZSBzcGVjLlwiKTplLmVtcHR5QXJyYXl9cmV0dXJuIEYudHJ5UGFyc2U9ZnVuY3Rpb24oeCl7dmFyIFg9VCh4KTtpZihYKXt2YXIgJD1uZXcgRihcIlwiKTtyZXR1cm4gJC5fYWx0ZXJuYXRpdmVzPVgsJH19LEYucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHR5cGVvZiB4PT1cInN0cmluZ1wiJiYoeD1uZXcgRSh4KSksUih4LHRoaXMuX2FsdGVybmF0aXZlcyl9LEYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHZlKHRoaXMuX2FsdGVybmF0aXZlcyl9LEZ9KCk7ZS5WZXJzaW9uUmFuZ2U9Tjt2YXIgcD0vXFx8XFx8L2csbT0vXFxzKy9nLEc9L14oW3hYKjBdfFsxLTldXFxkKikoPzpcXC4oW3hYKjBdfFsxLTldXFxkKikoPzpcXC4oW3hYKjBdfFsxLTldXFxkKikoPzotKFthLXowLTktLl0rKSk/KD86XFwrKFthLXowLTktLl0rKSk/KT8pPyQvaSxvZT0vXlxccyooW2EtejAtOS0rLipdKylcXHMrLVxccysoW2EtejAtOS0rLipdKylcXHMqJC9pLGY9L14ofnxcXF58PHw8PXw+fD49fD0pP1xccyooW2EtejAtOS0rLipdKykkL2k7ZnVuY3Rpb24gVChGKXtmb3IodmFyIHg9W10sWD0wLCQ9ZS50cmltU3RyaW5nKEYpLnNwbGl0KHApO1g8JC5sZW5ndGg7WCsrKXt2YXIgQT0kW1hdO2lmKCEhQSl7dmFyIHk9W107QT1lLnRyaW1TdHJpbmcoQSk7dmFyIFY9b2UuZXhlYyhBKTtpZihWKXtpZighYihWWzFdLFZbMl0seSkpcmV0dXJufWVsc2UgZm9yKHZhciBMPTAsUD1BLnNwbGl0KG0pO0w8UC5sZW5ndGg7TCsrKXt2YXIgaz1QW0xdLFk9Zi5leGVjKGUudHJpbVN0cmluZyhrKSk7aWYoIVl8fCFzZShZWzFdLFlbMl0seSkpcmV0dXJufXgucHVzaCh5KX19cmV0dXJuIHh9ZnVuY3Rpb24gSyhGKXt2YXIgeD1HLmV4ZWMoRik7aWYoISF4KXt2YXIgWD14WzFdLCQ9eFsyXSxBPSQ9PT12b2lkIDA/XCIqXCI6JCx5PXhbM10sVj15PT09dm9pZCAwP1wiKlwiOnksTD14WzRdLFA9eFs1XSxrPW5ldyBFKEooWCk/MDpwYXJzZUludChYLDEwKSxKKFgpfHxKKEEpPzA6cGFyc2VJbnQoQSwxMCksSihYKXx8SihBKXx8SihWKT8wOnBhcnNlSW50KFYsMTApLEwsUCk7cmV0dXJue3ZlcnNpb246ayxtYWpvcjpYLG1pbm9yOkEscGF0Y2g6Vn19fWZ1bmN0aW9uIGIoRix4LFgpe3ZhciAkPUsoRik7aWYoISQpcmV0dXJuITE7dmFyIEE9Syh4KTtyZXR1cm4gQT8oSigkLm1ham9yKXx8WC5wdXNoKGllKFwiPj1cIiwkLnZlcnNpb24pKSxKKEEubWFqb3IpfHxYLnB1c2goSihBLm1pbm9yKT9pZShcIjxcIixBLnZlcnNpb24uaW5jcmVtZW50KFwibWFqb3JcIikpOkooQS5wYXRjaCk/aWUoXCI8XCIsQS52ZXJzaW9uLmluY3JlbWVudChcIm1pbm9yXCIpKTppZShcIjw9XCIsQS52ZXJzaW9uKSksITApOiExfWZ1bmN0aW9uIHNlKEYseCxYKXt2YXIgJD1LKHgpO2lmKCEkKXJldHVybiExO3ZhciBBPSQudmVyc2lvbix5PSQubWFqb3IsVj0kLm1pbm9yLEw9JC5wYXRjaDtpZihKKHkpKShGPT09XCI8XCJ8fEY9PT1cIj5cIikmJlgucHVzaChpZShcIjxcIixFLnplcm8pKTtlbHNlIHN3aXRjaChGKXtjYXNlXCJ+XCI6WC5wdXNoKGllKFwiPj1cIixBKSksWC5wdXNoKGllKFwiPFwiLEEuaW5jcmVtZW50KEooVik/XCJtYWpvclwiOlwibWlub3JcIikpKTticmVhaztjYXNlXCJeXCI6WC5wdXNoKGllKFwiPj1cIixBKSksWC5wdXNoKGllKFwiPFwiLEEuaW5jcmVtZW50KEEubWFqb3I+MHx8SihWKT9cIm1ham9yXCI6QS5taW5vcj4wfHxKKEwpP1wibWlub3JcIjpcInBhdGNoXCIpKSk7YnJlYWs7Y2FzZVwiPFwiOmNhc2VcIj49XCI6WC5wdXNoKGllKEYsQSkpO2JyZWFrO2Nhc2VcIjw9XCI6Y2FzZVwiPlwiOlgucHVzaChKKFYpP2llKEY9PT1cIjw9XCI/XCI8XCI6XCI+PVwiLEEuaW5jcmVtZW50KFwibWFqb3JcIikpOkooTCk/aWUoRj09PVwiPD1cIj9cIjxcIjpcIj49XCIsQS5pbmNyZW1lbnQoXCJtaW5vclwiKSk6aWUoRixBKSk7YnJlYWs7Y2FzZVwiPVwiOmNhc2Ugdm9pZCAwOkooVil8fEooTCk/KFgucHVzaChpZShcIj49XCIsQSkpLFgucHVzaChpZShcIjxcIixBLmluY3JlbWVudChKKFYpP1wibWFqb3JcIjpcIm1pbm9yXCIpKSkpOlgucHVzaChpZShcIj1cIixBKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBKKEYpe3JldHVybiBGPT09XCIqXCJ8fEY9PT1cInhcInx8Rj09PVwiWFwifWZ1bmN0aW9uIGllKEYseCl7cmV0dXJue29wZXJhdG9yOkYsb3BlcmFuZDp4fX1mdW5jdGlvbiBSKEYseCl7aWYoeC5sZW5ndGg9PT0wKXJldHVybiEwO2Zvcih2YXIgWD0wLCQ9eDtYPCQubGVuZ3RoO1grKyl7dmFyIEE9JFtYXTtpZihxKEYsQSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gcShGLHgpe2Zvcih2YXIgWD0wLCQ9eDtYPCQubGVuZ3RoO1grKyl7dmFyIEE9JFtYXTtpZighTyhGLEEub3BlcmF0b3IsQS5vcGVyYW5kKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBPKEYseCxYKXt2YXIgJD1GLmNvbXBhcmVUbyhYKTtzd2l0Y2goeCl7Y2FzZVwiPFwiOnJldHVybiAkPDA7Y2FzZVwiPD1cIjpyZXR1cm4gJDw9MDtjYXNlXCI+XCI6cmV0dXJuICQ+MDtjYXNlXCI+PVwiOnJldHVybiAkPj0wO2Nhc2VcIj1cIjpyZXR1cm4gJD09PTA7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcih4KX19ZnVuY3Rpb24gdmUoRil7cmV0dXJuIGUubWFwKEYsZWUpLmpvaW4oXCIgfHwgXCIpfHxcIipcIn1mdW5jdGlvbiBlZShGKXtyZXR1cm4gZS5tYXAoRixoZSkuam9pbihcIiBcIil9ZnVuY3Rpb24gaGUoRil7cmV0dXJuXCJcIi5jb25jYXQoRi5vcGVyYXRvcikuY29uY2F0KEYub3BlcmFuZCl9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShsZSxOKXtyZXR1cm4gdHlwZW9mIGxlPT1cIm9iamVjdFwiJiZ0eXBlb2YgbGUudGltZU9yaWdpbj09XCJudW1iZXJcIiYmdHlwZW9mIGxlLm1hcms9PVwiZnVuY3Rpb25cIiYmdHlwZW9mIGxlLm1lYXN1cmU9PVwiZnVuY3Rpb25cIiYmdHlwZW9mIGxlLm5vdz09XCJmdW5jdGlvblwiJiZ0eXBlb2YgTj09XCJmdW5jdGlvblwifWZ1bmN0aW9uIEMoKXtpZih0eXBlb2YgcGVyZm9ybWFuY2U9PVwib2JqZWN0XCImJnR5cGVvZiBQZXJmb3JtYW5jZU9ic2VydmVyPT1cImZ1bmN0aW9uXCImJmEocGVyZm9ybWFuY2UsUGVyZm9ybWFuY2VPYnNlcnZlcikpcmV0dXJue3Nob3VsZFdyaXRlTmF0aXZlRXZlbnRzOiEwLHBlcmZvcm1hbmNlLFBlcmZvcm1hbmNlT2JzZXJ2ZXJ9fWZ1bmN0aW9uIHcoKXt9dmFyIEI9QygpfHx2b2lkIDAsRT1CPT1udWxsP3ZvaWQgMDpCLnBlcmZvcm1hbmNlO2Z1bmN0aW9uIFEoKXtyZXR1cm4gQn1lLnRyeUdldE5hdGl2ZVBlcmZvcm1hbmNlSG9va3M9USxlLnRpbWVzdGFtcD1FP2Z1bmN0aW9uKCl7cmV0dXJuIEUubm93KCl9OkRhdGUubm93P0RhdGUubm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdyxCO2Z1bmN0aW9uIEUoUixxLE8sdmUpe3JldHVybiBSP1EocSxPLHZlKTpDLm51bGxUaW1lcn1DLmNyZWF0ZVRpbWVySWY9RTtmdW5jdGlvbiBRKFIscSxPKXt2YXIgdmU9MDtyZXR1cm57ZW50ZXI6ZWUsZXhpdDpoZX07ZnVuY3Rpb24gZWUoKXsrK3ZlPT09MSYmb2UocSl9ZnVuY3Rpb24gaGUoKXstLXZlPT09MD8ob2UoTyksZihSLHEsTykpOnZlPDAmJmUuRGVidWcuZmFpbChcImVudGVyL2V4aXQgY291bnQgZG9lcyBub3QgbWF0Y2guXCIpfX1DLmNyZWF0ZVRpbWVyPVEsQy5udWxsVGltZXI9e2VudGVyOmUubm9vcCxleGl0OmUubm9vcH07dmFyIGxlPSExLE49ZS50aW1lc3RhbXAoKSxwPW5ldyBlLk1hcCxtPW5ldyBlLk1hcCxHPW5ldyBlLk1hcDtmdW5jdGlvbiBvZShSKXt2YXIgcTtpZihsZSl7dmFyIE89KHE9bS5nZXQoUikpIT09bnVsbCYmcSE9PXZvaWQgMD9xOjA7bS5zZXQoUixPKzEpLHAuc2V0KFIsZS50aW1lc3RhbXAoKSksQj09bnVsbHx8Qi5tYXJrKFIpfX1DLm1hcms9b2U7ZnVuY3Rpb24gZihSLHEsTyl7dmFyIHZlLGVlO2lmKGxlKXt2YXIgaGU9KHZlPU8hPT12b2lkIDA/cC5nZXQoTyk6dm9pZCAwKSE9PW51bGwmJnZlIT09dm9pZCAwP3ZlOmUudGltZXN0YW1wKCksRj0oZWU9cSE9PXZvaWQgMD9wLmdldChxKTp2b2lkIDApIT09bnVsbCYmZWUhPT12b2lkIDA/ZWU6Tix4PUcuZ2V0KFIpfHwwO0cuc2V0KFIseCsoaGUtRikpLEI9PW51bGx8fEIubWVhc3VyZShSLHEsTyl9fUMubWVhc3VyZT1mO2Z1bmN0aW9uIFQoUil7cmV0dXJuIG0uZ2V0KFIpfHwwfUMuZ2V0Q291bnQ9VDtmdW5jdGlvbiBLKFIpe3JldHVybiBHLmdldChSKXx8MH1DLmdldER1cmF0aW9uPUs7ZnVuY3Rpb24gYihSKXtHLmZvckVhY2goZnVuY3Rpb24ocSxPKXtyZXR1cm4gUihPLHEpfSl9Qy5mb3JFYWNoTWVhc3VyZT1iO2Z1bmN0aW9uIHNlKCl7cmV0dXJuIGxlfUMuaXNFbmFibGVkPXNlO2Z1bmN0aW9uIEooUil7dmFyIHE7cmV0dXJuIFI9PT12b2lkIDAmJihSPWUuc3lzKSxsZXx8KGxlPSEwLHd8fCh3PWUudHJ5R2V0TmF0aXZlUGVyZm9ybWFuY2VIb29rcygpKSx3JiYoTj13LnBlcmZvcm1hbmNlLnRpbWVPcmlnaW4sKHcuc2hvdWxkV3JpdGVOYXRpdmVFdmVudHN8fCgocT1SPT1udWxsP3ZvaWQgMDpSLmNwdVByb2ZpbGluZ0VuYWJsZWQpPT09bnVsbHx8cT09PXZvaWQgMD92b2lkIDA6cS5jYWxsKFIpKXx8KFI9PW51bGw/dm9pZCAwOlIuZGVidWdNb2RlKSkmJihCPXcucGVyZm9ybWFuY2UpKSksITB9Qy5lbmFibGU9SjtmdW5jdGlvbiBpZSgpe2xlJiYocC5jbGVhcigpLG0uY2xlYXIoKSxHLmNsZWFyKCksQj12b2lkIDAsbGU9ITEpfUMuZGlzYWJsZT1pZX0pKGE9ZS5wZXJmb3JtYW5jZXx8KGUucGVyZm9ybWFuY2U9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhLEM9e2xvZ0V2ZW50OmUubm9vcCxsb2dFcnJFdmVudDplLm5vb3AsbG9nUGVyZkV2ZW50OmUubm9vcCxsb2dJbmZvRXZlbnQ6ZS5ub29wLGxvZ1N0YXJ0Q29tbWFuZDplLm5vb3AsbG9nU3RvcENvbW1hbmQ6ZS5ub29wLGxvZ1N0YXJ0VXBkYXRlUHJvZ3JhbTplLm5vb3AsbG9nU3RvcFVwZGF0ZVByb2dyYW06ZS5ub29wLGxvZ1N0YXJ0VXBkYXRlR3JhcGg6ZS5ub29wLGxvZ1N0b3BVcGRhdGVHcmFwaDplLm5vb3AsbG9nU3RhcnRSZXNvbHZlTW9kdWxlOmUubm9vcCxsb2dTdG9wUmVzb2x2ZU1vZHVsZTplLm5vb3AsbG9nU3RhcnRQYXJzZVNvdXJjZUZpbGU6ZS5ub29wLGxvZ1N0b3BQYXJzZVNvdXJjZUZpbGU6ZS5ub29wLGxvZ1N0YXJ0UmVhZEZpbGU6ZS5ub29wLGxvZ1N0b3BSZWFkRmlsZTplLm5vb3AsbG9nU3RhcnRCaW5kRmlsZTplLm5vb3AsbG9nU3RvcEJpbmRGaWxlOmUubm9vcCxsb2dTdGFydFNjaGVkdWxlZE9wZXJhdGlvbjplLm5vb3AsbG9nU3RvcFNjaGVkdWxlZE9wZXJhdGlvbjplLm5vb3B9LHc7dHJ5e3ZhciBCPShhPUV1LmVudi5UU19FVFdfTU9EVUxFX1BBVEgpIT09bnVsbCYmYSE9PXZvaWQgMD9hOlwiLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC90eXBlc2NyaXB0LWV0d1wiO3c9dm9pZCAwfWNhdGNoe3c9dm9pZCAwfWUucGVyZkxvZ2dlcj13JiZ3LmxvZ0V2ZW50P3c6Q30pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdyxCPTAsRT0wLFEsbGU9W10sTixwPVtdO2Z1bmN0aW9uIG0oaGUsRix4KXtpZihlLkRlYnVnLmFzc2VydCghZS50cmFjaW5nLFwiVHJhY2luZyBhbHJlYWR5IHN0YXJ0ZWRcIiksdz09PXZvaWQgMCl0cnl7dz1leCgpfWNhdGNoKFYpe3Rocm93IG5ldyBFcnJvcihgdHJhY2luZyByZXF1aXJlcyBoYXZpbmcgZnNcbihvcmlnaW5hbCBlcnJvcjogYC5jb25jYXQoVi5tZXNzYWdlfHxWLFwiKVwiKSl9UT1oZSxsZS5sZW5ndGg9MCxOPT09dm9pZCAwJiYoTj1lLmNvbWJpbmVQYXRocyhGLFwibGVnZW5kLmpzb25cIikpLHcuZXhpc3RzU3luYyhGKXx8dy5ta2RpclN5bmMoRix7cmVjdXJzaXZlOiEwfSk7dmFyIFg9UT09PVwiYnVpbGRcIj9cIi5cIi5jb25jYXQoRXUucGlkLFwiLVwiKS5jb25jYXQoKytCKTpRPT09XCJzZXJ2ZXJcIj9cIi5cIi5jb25jYXQoRXUucGlkKTpcIlwiLCQ9ZS5jb21iaW5lUGF0aHMoRixcInRyYWNlXCIuY29uY2F0KFgsXCIuanNvblwiKSksQT1lLmNvbWJpbmVQYXRocyhGLFwidHlwZXNcIi5jb25jYXQoWCxcIi5qc29uXCIpKTtwLnB1c2goe2NvbmZpZ0ZpbGVQYXRoOngsdHJhY2VQYXRoOiQsdHlwZXNQYXRoOkF9KSxFPXcub3BlblN5bmMoJCxcIndcIiksZS50cmFjaW5nPUM7dmFyIHk9e2NhdDpcIl9fbWV0YWRhdGFcIixwaDpcIk1cIix0czoxZTMqZS50aW1lc3RhbXAoKSxwaWQ6MSx0aWQ6MX07dy53cml0ZVN5bmMoRSxgW1xuYCtbS2Uoe25hbWU6XCJwcm9jZXNzX25hbWVcIixhcmdzOntuYW1lOlwidHNjXCJ9fSx5KSxLZSh7bmFtZTpcInRocmVhZF9uYW1lXCIsYXJnczp7bmFtZTpcIk1haW5cIn19LHkpLEtlKEtlKHtuYW1lOlwiVHJhY2luZ1N0YXJ0ZWRJbkJyb3dzZXJcIn0seSkse2NhdDpcImRpc2FibGVkLWJ5LWRlZmF1bHQtZGV2dG9vbHMudGltZWxpbmVcIn0pXS5tYXAoZnVuY3Rpb24oVil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFYpfSkuam9pbihgLFxuYCkpfUMuc3RhcnRUcmFjaW5nPW07ZnVuY3Rpb24gRygpe2UuRGVidWcuYXNzZXJ0KGUudHJhY2luZyxcIlRyYWNpbmcgaXMgbm90IGluIHByb2dyZXNzXCIpLGUuRGVidWcuYXNzZXJ0KCEhbGUubGVuZ3RoPT0oUSE9PVwic2VydmVyXCIpKSx3LndyaXRlU3luYyhFLGBcbl1cbmApLHcuY2xvc2VTeW5jKEUpLGUudHJhY2luZz12b2lkIDAsbGUubGVuZ3RoP3ZlKGxlKTpwW3AubGVuZ3RoLTFdLnR5cGVzUGF0aD12b2lkIDB9Qy5zdG9wVHJhY2luZz1HO2Z1bmN0aW9uIG9lKGhlKXtRIT09XCJzZXJ2ZXJcIiYmbGUucHVzaChoZSl9Qy5yZWNvcmRUeXBlPW9lO3ZhciBmOyhmdW5jdGlvbihoZSl7aGUuUGFyc2U9XCJwYXJzZVwiLGhlLlByb2dyYW09XCJwcm9ncmFtXCIsaGUuQmluZD1cImJpbmRcIixoZS5DaGVjaz1cImNoZWNrXCIsaGUuQ2hlY2tUeXBlcz1cImNoZWNrVHlwZXNcIixoZS5FbWl0PVwiZW1pdFwiLGhlLlNlc3Npb249XCJzZXNzaW9uXCJ9KShmPUMuUGhhc2V8fChDLlBoYXNlPXt9KSk7ZnVuY3Rpb24gVChoZSxGLHgpe3EoXCJJXCIsaGUsRix4LCdcInNcIjpcImdcIicpfUMuaW5zdGFudD1UO3ZhciBLPVtdO2Z1bmN0aW9uIGIoaGUsRix4LFgpe1g9PT12b2lkIDAmJihYPSExKSxYJiZxKFwiQlwiLGhlLEYseCksSy5wdXNoKHtwaGFzZTpoZSxuYW1lOkYsYXJnczp4LHRpbWU6MWUzKmUudGltZXN0YW1wKCksc2VwYXJhdGVCZWdpbkFuZEVuZDpYfSl9Qy5wdXNoPWI7ZnVuY3Rpb24gc2UoKXtlLkRlYnVnLmFzc2VydChLLmxlbmd0aD4wKSxSKEsubGVuZ3RoLTEsMWUzKmUudGltZXN0YW1wKCkpLEsubGVuZ3RoLS19Qy5wb3A9c2U7ZnVuY3Rpb24gSigpe2Zvcih2YXIgaGU9MWUzKmUudGltZXN0YW1wKCksRj1LLmxlbmd0aC0xO0Y+PTA7Ri0tKVIoRixoZSk7Sy5sZW5ndGg9MH1DLnBvcEFsbD1KO3ZhciBpZT0xZTMqMTA7ZnVuY3Rpb24gUihoZSxGKXt2YXIgeD1LW2hlXSxYPXgucGhhc2UsJD14Lm5hbWUsQT14LmFyZ3MseT14LnRpbWUsVj14LnNlcGFyYXRlQmVnaW5BbmRFbmQ7Vj9xKFwiRVwiLFgsJCxBLHZvaWQgMCxGKTppZS15JWllPD1GLXkmJnEoXCJYXCIsWCwkLEEsJ1wiZHVyXCI6Jy5jb25jYXQoRi15KSx5KX1mdW5jdGlvbiBxKGhlLEYseCxYLCQsQSl7QT09PXZvaWQgMCYmKEE9MWUzKmUudGltZXN0YW1wKCkpLCEoUT09PVwic2VydmVyXCImJkY9PT1cImNoZWNrVHlwZXNcIikmJihlLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWdpblRyYWNpbmdcIiksdy53cml0ZVN5bmMoRSxgLFxue1wicGlkXCI6MSxcInRpZFwiOjEsXCJwaFwiOlwiYC5jb25jYXQoaGUsJ1wiLFwiY2F0XCI6XCInKS5jb25jYXQoRiwnXCIsXCJ0c1wiOicpLmNvbmNhdChBLCcsXCJuYW1lXCI6XCInKS5jb25jYXQoeCwnXCInKSksJCYmdy53cml0ZVN5bmMoRSxcIixcIi5jb25jYXQoJCkpLFgmJncud3JpdGVTeW5jKEUsJyxcImFyZ3NcIjonLmNvbmNhdChKU09OLnN0cmluZ2lmeShYKSkpLHcud3JpdGVTeW5jKEUsXCJ9XCIpLGUucGVyZm9ybWFuY2UubWFyayhcImVuZFRyYWNpbmdcIiksZS5wZXJmb3JtYW5jZS5tZWFzdXJlKFwiVHJhY2luZ1wiLFwiYmVnaW5UcmFjaW5nXCIsXCJlbmRUcmFjaW5nXCIpKX1mdW5jdGlvbiBPKGhlKXt2YXIgRj1lLmdldFNvdXJjZUZpbGVPZk5vZGUoaGUpO3JldHVybiBGP3twYXRoOkYucGF0aCxzdGFydDp4KGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oRixoZS5wb3MpKSxlbmQ6eChlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKEYsaGUuZW5kKSl9OnZvaWQgMDtmdW5jdGlvbiB4KFgpe3JldHVybntsaW5lOlgubGluZSsxLGNoYXJhY3RlcjpYLmNoYXJhY3RlcisxfX19ZnVuY3Rpb24gdmUoaGUpe3ZhciBGLHgsWCwkLEEseSxWLEwsUCxrLFksVSxqLEgsSSxsLGQsRCxmZSxnLG5lLHVlO2UucGVyZm9ybWFuY2UubWFyayhcImJlZ2luRHVtcFR5cGVzXCIpO3ZhciBXZT1wW3AubGVuZ3RoLTFdLnR5cGVzUGF0aCxGZT13Lm9wZW5TeW5jKFdlLFwid1wiKSxaPW5ldyBlLk1hcDt3LndyaXRlU3luYyhGZSxcIltcIik7Zm9yKHZhciBCZT1oZS5sZW5ndGgsZ2U9MDtnZTxCZTtnZSsrKXt2YXIgUmU9aGVbZ2VdLHplPVJlLm9iamVjdEZsYWdzLEVlPShGPVJlLmFsaWFzU3ltYm9sKSE9PW51bGwmJkYhPT12b2lkIDA/RjpSZS5zeW1ib2wsSGU9dm9pZCAwO2lmKHplJjE2fFJlLmZsYWdzJjI5NDQpdHJ5e0hlPSh4PVJlLmNoZWNrZXIpPT09bnVsbHx8eD09PXZvaWQgMD92b2lkIDA6eC50eXBlVG9TdHJpbmcoUmUpfWNhdGNoe0hlPXZvaWQgMH12YXIgcnI9e307aWYoUmUuZmxhZ3MmODM4ODYwOCl7dmFyIEllPVJlO3JyPXtpbmRleGVkQWNjZXNzT2JqZWN0VHlwZTooWD1JZS5vYmplY3RUeXBlKT09PW51bGx8fFg9PT12b2lkIDA/dm9pZCAwOlguaWQsaW5kZXhlZEFjY2Vzc0luZGV4VHlwZTooJD1JZS5pbmRleFR5cGUpPT09bnVsbHx8JD09PXZvaWQgMD92b2lkIDA6JC5pZH19dmFyIF9lPXt9O2lmKHplJjQpe3ZhciB3ZT1SZTtfZT17aW5zdGFudGlhdGVkVHlwZTooQT13ZS50YXJnZXQpPT09bnVsbHx8QT09PXZvaWQgMD92b2lkIDA6QS5pZCx0eXBlQXJndW1lbnRzOih5PXdlLnJlc29sdmVkVHlwZUFyZ3VtZW50cyk9PT1udWxsfHx5PT09dm9pZCAwP3ZvaWQgMDp5Lm1hcChmdW5jdGlvbihscil7cmV0dXJuIGxyLmlkfSkscmVmZXJlbmNlTG9jYXRpb246Tyh3ZS5ub2RlKX19dmFyIGRlPXt9O2lmKFJlLmZsYWdzJjE2Nzc3MjE2KXt2YXIgeWU9UmU7ZGU9e2NvbmRpdGlvbmFsQ2hlY2tUeXBlOihWPXllLmNoZWNrVHlwZSk9PT1udWxsfHxWPT09dm9pZCAwP3ZvaWQgMDpWLmlkLGNvbmRpdGlvbmFsRXh0ZW5kc1R5cGU6KEw9eWUuZXh0ZW5kc1R5cGUpPT09bnVsbHx8TD09PXZvaWQgMD92b2lkIDA6TC5pZCxjb25kaXRpb25hbFRydWVUeXBlOihrPShQPXllLnJlc29sdmVkVHJ1ZVR5cGUpPT09bnVsbHx8UD09PXZvaWQgMD92b2lkIDA6UC5pZCkhPT1udWxsJiZrIT09dm9pZCAwP2s6LTEsY29uZGl0aW9uYWxGYWxzZVR5cGU6KFU9KFk9eWUucmVzb2x2ZWRGYWxzZVR5cGUpPT09bnVsbHx8WT09PXZvaWQgMD92b2lkIDA6WS5pZCkhPT1udWxsJiZVIT09dm9pZCAwP1U6LTF9fXZhciBBZT17fTtpZihSZS5mbGFncyYzMzU1NDQzMil7dmFyIGVyPVJlO0FlPXtzdWJzdGl0dXRpb25CYXNlVHlwZTooaj1lci5iYXNlVHlwZSk9PT1udWxsfHxqPT09dm9pZCAwP3ZvaWQgMDpqLmlkLHN1YnN0aXR1dGVUeXBlOihIPWVyLnN1YnN0aXR1dGUpPT09bnVsbHx8SD09PXZvaWQgMD92b2lkIDA6SC5pZH19dmFyIGlyPXt9O2lmKHplJjEwMjQpe3ZhciBDcj1SZTtpcj17cmV2ZXJzZU1hcHBlZFNvdXJjZVR5cGU6KEk9Q3Iuc291cmNlKT09PW51bGx8fEk9PT12b2lkIDA/dm9pZCAwOkkuaWQscmV2ZXJzZU1hcHBlZE1hcHBlZFR5cGU6KGw9Q3IubWFwcGVkVHlwZSk9PT1udWxsfHxsPT09dm9pZCAwP3ZvaWQgMDpsLmlkLHJldmVyc2VNYXBwZWRDb25zdHJhaW50VHlwZTooZD1Dci5jb25zdHJhaW50VHlwZSk9PT1udWxsfHxkPT09dm9pZCAwP3ZvaWQgMDpkLmlkfX12YXIgWWU9e307aWYoemUmMjU2KXt2YXIgQnI9UmU7WWU9e2V2b2x2aW5nQXJyYXlFbGVtZW50VHlwZTpCci5lbGVtZW50VHlwZS5pZCxldm9sdmluZ0FycmF5RmluYWxUeXBlOihEPUJyLmZpbmFsQXJyYXlUeXBlKT09PW51bGx8fEQ9PT12b2lkIDA/dm9pZCAwOkQuaWR9fXZhciBFcj12b2lkIDAsTmU9UmUuY2hlY2tlci5nZXRSZWN1cnNpb25JZGVudGl0eShSZSk7TmUmJihFcj1aLmdldChOZSksRXJ8fChFcj1aLnNpemUsWi5zZXQoTmUsRXIpKSk7dmFyIG49S2UoS2UoS2UoS2UoS2UoS2UoS2Uoe2lkOlJlLmlkLGludHJpbnNpY05hbWU6UmUuaW50cmluc2ljTmFtZSxzeW1ib2xOYW1lOihFZT09bnVsbD92b2lkIDA6RWUuZXNjYXBlZE5hbWUpJiZlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKEVlLmVzY2FwZWROYW1lKSxyZWN1cnNpb25JZDpFcixpc1R1cGxlOnplJjg/ITA6dm9pZCAwLHVuaW9uVHlwZXM6UmUuZmxhZ3MmMTA0ODU3Nj8oZmU9UmUudHlwZXMpPT09bnVsbHx8ZmU9PT12b2lkIDA/dm9pZCAwOmZlLm1hcChmdW5jdGlvbihscil7cmV0dXJuIGxyLmlkfSk6dm9pZCAwLGludGVyc2VjdGlvblR5cGVzOlJlLmZsYWdzJjIwOTcxNTI/UmUudHlwZXMubWFwKGZ1bmN0aW9uKGxyKXtyZXR1cm4gbHIuaWR9KTp2b2lkIDAsYWxpYXNUeXBlQXJndW1lbnRzOihnPVJlLmFsaWFzVHlwZUFyZ3VtZW50cyk9PT1udWxsfHxnPT09dm9pZCAwP3ZvaWQgMDpnLm1hcChmdW5jdGlvbihscil7cmV0dXJuIGxyLmlkfSksa2V5b2ZUeXBlOlJlLmZsYWdzJjQxOTQzMDQ/KG5lPVJlLnR5cGUpPT09bnVsbHx8bmU9PT12b2lkIDA/dm9pZCAwOm5lLmlkOnZvaWQgMH0scnIpLF9lKSxkZSksQWUpLGlyKSxZZSkse2Rlc3RydWN0dXJpbmdQYXR0ZXJuOk8oUmUucGF0dGVybiksZmlyc3REZWNsYXJhdGlvbjpPKCh1ZT1FZT09bnVsbD92b2lkIDA6RWUuZGVjbGFyYXRpb25zKT09PW51bGx8fHVlPT09dm9pZCAwP3ZvaWQgMDp1ZVswXSksZmxhZ3M6ZS5EZWJ1Zy5mb3JtYXRUeXBlRmxhZ3MoUmUuZmxhZ3MpLnNwbGl0KFwifFwiKSxkaXNwbGF5OkhlfSk7dy53cml0ZVN5bmMoRmUsSlNPTi5zdHJpbmdpZnkobikpLGdlPEJlLTEmJncud3JpdGVTeW5jKEZlLGAsXG5gKX13LndyaXRlU3luYyhGZSxgXVxuYCksdy5jbG9zZVN5bmMoRmUpLGUucGVyZm9ybWFuY2UubWFyayhcImVuZER1bXBUeXBlc1wiKSxlLnBlcmZvcm1hbmNlLm1lYXN1cmUoXCJEdW1wIHR5cGVzXCIsXCJiZWdpbkR1bXBUeXBlc1wiLFwiZW5kRHVtcFR5cGVzXCIpfWZ1bmN0aW9uIGVlKCl7IU58fHcud3JpdGVGaWxlU3luYyhOLEpTT04uc3RyaW5naWZ5KHApKX1DLmR1bXBMZWdlbmQ9ZWV9KShhfHwoYT17fSkpLGUuc3RhcnRUcmFjaW5nPWEuc3RhcnRUcmFjaW5nLGUuZHVtcFRyYWNpbmdMZWdlbmQ9YS5kdW1wTGVnZW5kfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKG4pe25bbi5Vbmtub3duPTBdPVwiVW5rbm93blwiLG5bbi5FbmRPZkZpbGVUb2tlbj0xXT1cIkVuZE9mRmlsZVRva2VuXCIsbltuLlNpbmdsZUxpbmVDb21tZW50VHJpdmlhPTJdPVwiU2luZ2xlTGluZUNvbW1lbnRUcml2aWFcIixuW24uTXVsdGlMaW5lQ29tbWVudFRyaXZpYT0zXT1cIk11bHRpTGluZUNvbW1lbnRUcml2aWFcIixuW24uTmV3TGluZVRyaXZpYT00XT1cIk5ld0xpbmVUcml2aWFcIixuW24uV2hpdGVzcGFjZVRyaXZpYT01XT1cIldoaXRlc3BhY2VUcml2aWFcIixuW24uU2hlYmFuZ1RyaXZpYT02XT1cIlNoZWJhbmdUcml2aWFcIixuW24uQ29uZmxpY3RNYXJrZXJUcml2aWE9N109XCJDb25mbGljdE1hcmtlclRyaXZpYVwiLG5bbi5OdW1lcmljTGl0ZXJhbD04XT1cIk51bWVyaWNMaXRlcmFsXCIsbltuLkJpZ0ludExpdGVyYWw9OV09XCJCaWdJbnRMaXRlcmFsXCIsbltuLlN0cmluZ0xpdGVyYWw9MTBdPVwiU3RyaW5nTGl0ZXJhbFwiLG5bbi5Kc3hUZXh0PTExXT1cIkpzeFRleHRcIixuW24uSnN4VGV4dEFsbFdoaXRlU3BhY2VzPTEyXT1cIkpzeFRleHRBbGxXaGl0ZVNwYWNlc1wiLG5bbi5SZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWw9MTNdPVwiUmVndWxhckV4cHJlc3Npb25MaXRlcmFsXCIsbltuLk5vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsPTE0XT1cIk5vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsXCIsbltuLlRlbXBsYXRlSGVhZD0xNV09XCJUZW1wbGF0ZUhlYWRcIixuW24uVGVtcGxhdGVNaWRkbGU9MTZdPVwiVGVtcGxhdGVNaWRkbGVcIixuW24uVGVtcGxhdGVUYWlsPTE3XT1cIlRlbXBsYXRlVGFpbFwiLG5bbi5PcGVuQnJhY2VUb2tlbj0xOF09XCJPcGVuQnJhY2VUb2tlblwiLG5bbi5DbG9zZUJyYWNlVG9rZW49MTldPVwiQ2xvc2VCcmFjZVRva2VuXCIsbltuLk9wZW5QYXJlblRva2VuPTIwXT1cIk9wZW5QYXJlblRva2VuXCIsbltuLkNsb3NlUGFyZW5Ub2tlbj0yMV09XCJDbG9zZVBhcmVuVG9rZW5cIixuW24uT3BlbkJyYWNrZXRUb2tlbj0yMl09XCJPcGVuQnJhY2tldFRva2VuXCIsbltuLkNsb3NlQnJhY2tldFRva2VuPTIzXT1cIkNsb3NlQnJhY2tldFRva2VuXCIsbltuLkRvdFRva2VuPTI0XT1cIkRvdFRva2VuXCIsbltuLkRvdERvdERvdFRva2VuPTI1XT1cIkRvdERvdERvdFRva2VuXCIsbltuLlNlbWljb2xvblRva2VuPTI2XT1cIlNlbWljb2xvblRva2VuXCIsbltuLkNvbW1hVG9rZW49MjddPVwiQ29tbWFUb2tlblwiLG5bbi5RdWVzdGlvbkRvdFRva2VuPTI4XT1cIlF1ZXN0aW9uRG90VG9rZW5cIixuW24uTGVzc1RoYW5Ub2tlbj0yOV09XCJMZXNzVGhhblRva2VuXCIsbltuLkxlc3NUaGFuU2xhc2hUb2tlbj0zMF09XCJMZXNzVGhhblNsYXNoVG9rZW5cIixuW24uR3JlYXRlclRoYW5Ub2tlbj0zMV09XCJHcmVhdGVyVGhhblRva2VuXCIsbltuLkxlc3NUaGFuRXF1YWxzVG9rZW49MzJdPVwiTGVzc1RoYW5FcXVhbHNUb2tlblwiLG5bbi5HcmVhdGVyVGhhbkVxdWFsc1Rva2VuPTMzXT1cIkdyZWF0ZXJUaGFuRXF1YWxzVG9rZW5cIixuW24uRXF1YWxzRXF1YWxzVG9rZW49MzRdPVwiRXF1YWxzRXF1YWxzVG9rZW5cIixuW24uRXhjbGFtYXRpb25FcXVhbHNUb2tlbj0zNV09XCJFeGNsYW1hdGlvbkVxdWFsc1Rva2VuXCIsbltuLkVxdWFsc0VxdWFsc0VxdWFsc1Rva2VuPTM2XT1cIkVxdWFsc0VxdWFsc0VxdWFsc1Rva2VuXCIsbltuLkV4Y2xhbWF0aW9uRXF1YWxzRXF1YWxzVG9rZW49MzddPVwiRXhjbGFtYXRpb25FcXVhbHNFcXVhbHNUb2tlblwiLG5bbi5FcXVhbHNHcmVhdGVyVGhhblRva2VuPTM4XT1cIkVxdWFsc0dyZWF0ZXJUaGFuVG9rZW5cIixuW24uUGx1c1Rva2VuPTM5XT1cIlBsdXNUb2tlblwiLG5bbi5NaW51c1Rva2VuPTQwXT1cIk1pbnVzVG9rZW5cIixuW24uQXN0ZXJpc2tUb2tlbj00MV09XCJBc3Rlcmlza1Rva2VuXCIsbltuLkFzdGVyaXNrQXN0ZXJpc2tUb2tlbj00Ml09XCJBc3Rlcmlza0FzdGVyaXNrVG9rZW5cIixuW24uU2xhc2hUb2tlbj00M109XCJTbGFzaFRva2VuXCIsbltuLlBlcmNlbnRUb2tlbj00NF09XCJQZXJjZW50VG9rZW5cIixuW24uUGx1c1BsdXNUb2tlbj00NV09XCJQbHVzUGx1c1Rva2VuXCIsbltuLk1pbnVzTWludXNUb2tlbj00Nl09XCJNaW51c01pbnVzVG9rZW5cIixuW24uTGVzc1RoYW5MZXNzVGhhblRva2VuPTQ3XT1cIkxlc3NUaGFuTGVzc1RoYW5Ub2tlblwiLG5bbi5HcmVhdGVyVGhhbkdyZWF0ZXJUaGFuVG9rZW49NDhdPVwiR3JlYXRlclRoYW5HcmVhdGVyVGhhblRva2VuXCIsbltuLkdyZWF0ZXJUaGFuR3JlYXRlclRoYW5HcmVhdGVyVGhhblRva2VuPTQ5XT1cIkdyZWF0ZXJUaGFuR3JlYXRlclRoYW5HcmVhdGVyVGhhblRva2VuXCIsbltuLkFtcGVyc2FuZFRva2VuPTUwXT1cIkFtcGVyc2FuZFRva2VuXCIsbltuLkJhclRva2VuPTUxXT1cIkJhclRva2VuXCIsbltuLkNhcmV0VG9rZW49NTJdPVwiQ2FyZXRUb2tlblwiLG5bbi5FeGNsYW1hdGlvblRva2VuPTUzXT1cIkV4Y2xhbWF0aW9uVG9rZW5cIixuW24uVGlsZGVUb2tlbj01NF09XCJUaWxkZVRva2VuXCIsbltuLkFtcGVyc2FuZEFtcGVyc2FuZFRva2VuPTU1XT1cIkFtcGVyc2FuZEFtcGVyc2FuZFRva2VuXCIsbltuLkJhckJhclRva2VuPTU2XT1cIkJhckJhclRva2VuXCIsbltuLlF1ZXN0aW9uVG9rZW49NTddPVwiUXVlc3Rpb25Ub2tlblwiLG5bbi5Db2xvblRva2VuPTU4XT1cIkNvbG9uVG9rZW5cIixuW24uQXRUb2tlbj01OV09XCJBdFRva2VuXCIsbltuLlF1ZXN0aW9uUXVlc3Rpb25Ub2tlbj02MF09XCJRdWVzdGlvblF1ZXN0aW9uVG9rZW5cIixuW24uQmFja3RpY2tUb2tlbj02MV09XCJCYWNrdGlja1Rva2VuXCIsbltuLkhhc2hUb2tlbj02Ml09XCJIYXNoVG9rZW5cIixuW24uRXF1YWxzVG9rZW49NjNdPVwiRXF1YWxzVG9rZW5cIixuW24uUGx1c0VxdWFsc1Rva2VuPTY0XT1cIlBsdXNFcXVhbHNUb2tlblwiLG5bbi5NaW51c0VxdWFsc1Rva2VuPTY1XT1cIk1pbnVzRXF1YWxzVG9rZW5cIixuW24uQXN0ZXJpc2tFcXVhbHNUb2tlbj02Nl09XCJBc3Rlcmlza0VxdWFsc1Rva2VuXCIsbltuLkFzdGVyaXNrQXN0ZXJpc2tFcXVhbHNUb2tlbj02N109XCJBc3Rlcmlza0FzdGVyaXNrRXF1YWxzVG9rZW5cIixuW24uU2xhc2hFcXVhbHNUb2tlbj02OF09XCJTbGFzaEVxdWFsc1Rva2VuXCIsbltuLlBlcmNlbnRFcXVhbHNUb2tlbj02OV09XCJQZXJjZW50RXF1YWxzVG9rZW5cIixuW24uTGVzc1RoYW5MZXNzVGhhbkVxdWFsc1Rva2VuPTcwXT1cIkxlc3NUaGFuTGVzc1RoYW5FcXVhbHNUb2tlblwiLG5bbi5HcmVhdGVyVGhhbkdyZWF0ZXJUaGFuRXF1YWxzVG9rZW49NzFdPVwiR3JlYXRlclRoYW5HcmVhdGVyVGhhbkVxdWFsc1Rva2VuXCIsbltuLkdyZWF0ZXJUaGFuR3JlYXRlclRoYW5HcmVhdGVyVGhhbkVxdWFsc1Rva2VuPTcyXT1cIkdyZWF0ZXJUaGFuR3JlYXRlclRoYW5HcmVhdGVyVGhhbkVxdWFsc1Rva2VuXCIsbltuLkFtcGVyc2FuZEVxdWFsc1Rva2VuPTczXT1cIkFtcGVyc2FuZEVxdWFsc1Rva2VuXCIsbltuLkJhckVxdWFsc1Rva2VuPTc0XT1cIkJhckVxdWFsc1Rva2VuXCIsbltuLkJhckJhckVxdWFsc1Rva2VuPTc1XT1cIkJhckJhckVxdWFsc1Rva2VuXCIsbltuLkFtcGVyc2FuZEFtcGVyc2FuZEVxdWFsc1Rva2VuPTc2XT1cIkFtcGVyc2FuZEFtcGVyc2FuZEVxdWFsc1Rva2VuXCIsbltuLlF1ZXN0aW9uUXVlc3Rpb25FcXVhbHNUb2tlbj03N109XCJRdWVzdGlvblF1ZXN0aW9uRXF1YWxzVG9rZW5cIixuW24uQ2FyZXRFcXVhbHNUb2tlbj03OF09XCJDYXJldEVxdWFsc1Rva2VuXCIsbltuLklkZW50aWZpZXI9NzldPVwiSWRlbnRpZmllclwiLG5bbi5Qcml2YXRlSWRlbnRpZmllcj04MF09XCJQcml2YXRlSWRlbnRpZmllclwiLG5bbi5CcmVha0tleXdvcmQ9ODFdPVwiQnJlYWtLZXl3b3JkXCIsbltuLkNhc2VLZXl3b3JkPTgyXT1cIkNhc2VLZXl3b3JkXCIsbltuLkNhdGNoS2V5d29yZD04M109XCJDYXRjaEtleXdvcmRcIixuW24uQ2xhc3NLZXl3b3JkPTg0XT1cIkNsYXNzS2V5d29yZFwiLG5bbi5Db25zdEtleXdvcmQ9ODVdPVwiQ29uc3RLZXl3b3JkXCIsbltuLkNvbnRpbnVlS2V5d29yZD04Nl09XCJDb250aW51ZUtleXdvcmRcIixuW24uRGVidWdnZXJLZXl3b3JkPTg3XT1cIkRlYnVnZ2VyS2V5d29yZFwiLG5bbi5EZWZhdWx0S2V5d29yZD04OF09XCJEZWZhdWx0S2V5d29yZFwiLG5bbi5EZWxldGVLZXl3b3JkPTg5XT1cIkRlbGV0ZUtleXdvcmRcIixuW24uRG9LZXl3b3JkPTkwXT1cIkRvS2V5d29yZFwiLG5bbi5FbHNlS2V5d29yZD05MV09XCJFbHNlS2V5d29yZFwiLG5bbi5FbnVtS2V5d29yZD05Ml09XCJFbnVtS2V5d29yZFwiLG5bbi5FeHBvcnRLZXl3b3JkPTkzXT1cIkV4cG9ydEtleXdvcmRcIixuW24uRXh0ZW5kc0tleXdvcmQ9OTRdPVwiRXh0ZW5kc0tleXdvcmRcIixuW24uRmFsc2VLZXl3b3JkPTk1XT1cIkZhbHNlS2V5d29yZFwiLG5bbi5GaW5hbGx5S2V5d29yZD05Nl09XCJGaW5hbGx5S2V5d29yZFwiLG5bbi5Gb3JLZXl3b3JkPTk3XT1cIkZvcktleXdvcmRcIixuW24uRnVuY3Rpb25LZXl3b3JkPTk4XT1cIkZ1bmN0aW9uS2V5d29yZFwiLG5bbi5JZktleXdvcmQ9OTldPVwiSWZLZXl3b3JkXCIsbltuLkltcG9ydEtleXdvcmQ9MTAwXT1cIkltcG9ydEtleXdvcmRcIixuW24uSW5LZXl3b3JkPTEwMV09XCJJbktleXdvcmRcIixuW24uSW5zdGFuY2VPZktleXdvcmQ9MTAyXT1cIkluc3RhbmNlT2ZLZXl3b3JkXCIsbltuLk5ld0tleXdvcmQ9MTAzXT1cIk5ld0tleXdvcmRcIixuW24uTnVsbEtleXdvcmQ9MTA0XT1cIk51bGxLZXl3b3JkXCIsbltuLlJldHVybktleXdvcmQ9MTA1XT1cIlJldHVybktleXdvcmRcIixuW24uU3VwZXJLZXl3b3JkPTEwNl09XCJTdXBlcktleXdvcmRcIixuW24uU3dpdGNoS2V5d29yZD0xMDddPVwiU3dpdGNoS2V5d29yZFwiLG5bbi5UaGlzS2V5d29yZD0xMDhdPVwiVGhpc0tleXdvcmRcIixuW24uVGhyb3dLZXl3b3JkPTEwOV09XCJUaHJvd0tleXdvcmRcIixuW24uVHJ1ZUtleXdvcmQ9MTEwXT1cIlRydWVLZXl3b3JkXCIsbltuLlRyeUtleXdvcmQ9MTExXT1cIlRyeUtleXdvcmRcIixuW24uVHlwZU9mS2V5d29yZD0xMTJdPVwiVHlwZU9mS2V5d29yZFwiLG5bbi5WYXJLZXl3b3JkPTExM109XCJWYXJLZXl3b3JkXCIsbltuLlZvaWRLZXl3b3JkPTExNF09XCJWb2lkS2V5d29yZFwiLG5bbi5XaGlsZUtleXdvcmQ9MTE1XT1cIldoaWxlS2V5d29yZFwiLG5bbi5XaXRoS2V5d29yZD0xMTZdPVwiV2l0aEtleXdvcmRcIixuW24uSW1wbGVtZW50c0tleXdvcmQ9MTE3XT1cIkltcGxlbWVudHNLZXl3b3JkXCIsbltuLkludGVyZmFjZUtleXdvcmQ9MTE4XT1cIkludGVyZmFjZUtleXdvcmRcIixuW24uTGV0S2V5d29yZD0xMTldPVwiTGV0S2V5d29yZFwiLG5bbi5QYWNrYWdlS2V5d29yZD0xMjBdPVwiUGFja2FnZUtleXdvcmRcIixuW24uUHJpdmF0ZUtleXdvcmQ9MTIxXT1cIlByaXZhdGVLZXl3b3JkXCIsbltuLlByb3RlY3RlZEtleXdvcmQ9MTIyXT1cIlByb3RlY3RlZEtleXdvcmRcIixuW24uUHVibGljS2V5d29yZD0xMjNdPVwiUHVibGljS2V5d29yZFwiLG5bbi5TdGF0aWNLZXl3b3JkPTEyNF09XCJTdGF0aWNLZXl3b3JkXCIsbltuLllpZWxkS2V5d29yZD0xMjVdPVwiWWllbGRLZXl3b3JkXCIsbltuLkFic3RyYWN0S2V5d29yZD0xMjZdPVwiQWJzdHJhY3RLZXl3b3JkXCIsbltuLkFzS2V5d29yZD0xMjddPVwiQXNLZXl3b3JkXCIsbltuLkFzc2VydHNLZXl3b3JkPTEyOF09XCJBc3NlcnRzS2V5d29yZFwiLG5bbi5Bc3NlcnRLZXl3b3JkPTEyOV09XCJBc3NlcnRLZXl3b3JkXCIsbltuLkFueUtleXdvcmQ9MTMwXT1cIkFueUtleXdvcmRcIixuW24uQXN5bmNLZXl3b3JkPTEzMV09XCJBc3luY0tleXdvcmRcIixuW24uQXdhaXRLZXl3b3JkPTEzMl09XCJBd2FpdEtleXdvcmRcIixuW24uQm9vbGVhbktleXdvcmQ9MTMzXT1cIkJvb2xlYW5LZXl3b3JkXCIsbltuLkNvbnN0cnVjdG9yS2V5d29yZD0xMzRdPVwiQ29uc3RydWN0b3JLZXl3b3JkXCIsbltuLkRlY2xhcmVLZXl3b3JkPTEzNV09XCJEZWNsYXJlS2V5d29yZFwiLG5bbi5HZXRLZXl3b3JkPTEzNl09XCJHZXRLZXl3b3JkXCIsbltuLkluZmVyS2V5d29yZD0xMzddPVwiSW5mZXJLZXl3b3JkXCIsbltuLkludHJpbnNpY0tleXdvcmQ9MTM4XT1cIkludHJpbnNpY0tleXdvcmRcIixuW24uSXNLZXl3b3JkPTEzOV09XCJJc0tleXdvcmRcIixuW24uS2V5T2ZLZXl3b3JkPTE0MF09XCJLZXlPZktleXdvcmRcIixuW24uTW9kdWxlS2V5d29yZD0xNDFdPVwiTW9kdWxlS2V5d29yZFwiLG5bbi5OYW1lc3BhY2VLZXl3b3JkPTE0Ml09XCJOYW1lc3BhY2VLZXl3b3JkXCIsbltuLk5ldmVyS2V5d29yZD0xNDNdPVwiTmV2ZXJLZXl3b3JkXCIsbltuLk91dEtleXdvcmQ9MTQ0XT1cIk91dEtleXdvcmRcIixuW24uUmVhZG9ubHlLZXl3b3JkPTE0NV09XCJSZWFkb25seUtleXdvcmRcIixuW24uUmVxdWlyZUtleXdvcmQ9MTQ2XT1cIlJlcXVpcmVLZXl3b3JkXCIsbltuLk51bWJlcktleXdvcmQ9MTQ3XT1cIk51bWJlcktleXdvcmRcIixuW24uT2JqZWN0S2V5d29yZD0xNDhdPVwiT2JqZWN0S2V5d29yZFwiLG5bbi5TZXRLZXl3b3JkPTE0OV09XCJTZXRLZXl3b3JkXCIsbltuLlN0cmluZ0tleXdvcmQ9MTUwXT1cIlN0cmluZ0tleXdvcmRcIixuW24uU3ltYm9sS2V5d29yZD0xNTFdPVwiU3ltYm9sS2V5d29yZFwiLG5bbi5UeXBlS2V5d29yZD0xNTJdPVwiVHlwZUtleXdvcmRcIixuW24uVW5kZWZpbmVkS2V5d29yZD0xNTNdPVwiVW5kZWZpbmVkS2V5d29yZFwiLG5bbi5VbmlxdWVLZXl3b3JkPTE1NF09XCJVbmlxdWVLZXl3b3JkXCIsbltuLlVua25vd25LZXl3b3JkPTE1NV09XCJVbmtub3duS2V5d29yZFwiLG5bbi5Gcm9tS2V5d29yZD0xNTZdPVwiRnJvbUtleXdvcmRcIixuW24uR2xvYmFsS2V5d29yZD0xNTddPVwiR2xvYmFsS2V5d29yZFwiLG5bbi5CaWdJbnRLZXl3b3JkPTE1OF09XCJCaWdJbnRLZXl3b3JkXCIsbltuLk92ZXJyaWRlS2V5d29yZD0xNTldPVwiT3ZlcnJpZGVLZXl3b3JkXCIsbltuLk9mS2V5d29yZD0xNjBdPVwiT2ZLZXl3b3JkXCIsbltuLlF1YWxpZmllZE5hbWU9MTYxXT1cIlF1YWxpZmllZE5hbWVcIixuW24uQ29tcHV0ZWRQcm9wZXJ0eU5hbWU9MTYyXT1cIkNvbXB1dGVkUHJvcGVydHlOYW1lXCIsbltuLlR5cGVQYXJhbWV0ZXI9MTYzXT1cIlR5cGVQYXJhbWV0ZXJcIixuW24uUGFyYW1ldGVyPTE2NF09XCJQYXJhbWV0ZXJcIixuW24uRGVjb3JhdG9yPTE2NV09XCJEZWNvcmF0b3JcIixuW24uUHJvcGVydHlTaWduYXR1cmU9MTY2XT1cIlByb3BlcnR5U2lnbmF0dXJlXCIsbltuLlByb3BlcnR5RGVjbGFyYXRpb249MTY3XT1cIlByb3BlcnR5RGVjbGFyYXRpb25cIixuW24uTWV0aG9kU2lnbmF0dXJlPTE2OF09XCJNZXRob2RTaWduYXR1cmVcIixuW24uTWV0aG9kRGVjbGFyYXRpb249MTY5XT1cIk1ldGhvZERlY2xhcmF0aW9uXCIsbltuLkNsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbj0xNzBdPVwiQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uXCIsbltuLkNvbnN0cnVjdG9yPTE3MV09XCJDb25zdHJ1Y3RvclwiLG5bbi5HZXRBY2Nlc3Nvcj0xNzJdPVwiR2V0QWNjZXNzb3JcIixuW24uU2V0QWNjZXNzb3I9MTczXT1cIlNldEFjY2Vzc29yXCIsbltuLkNhbGxTaWduYXR1cmU9MTc0XT1cIkNhbGxTaWduYXR1cmVcIixuW24uQ29uc3RydWN0U2lnbmF0dXJlPTE3NV09XCJDb25zdHJ1Y3RTaWduYXR1cmVcIixuW24uSW5kZXhTaWduYXR1cmU9MTc2XT1cIkluZGV4U2lnbmF0dXJlXCIsbltuLlR5cGVQcmVkaWNhdGU9MTc3XT1cIlR5cGVQcmVkaWNhdGVcIixuW24uVHlwZVJlZmVyZW5jZT0xNzhdPVwiVHlwZVJlZmVyZW5jZVwiLG5bbi5GdW5jdGlvblR5cGU9MTc5XT1cIkZ1bmN0aW9uVHlwZVwiLG5bbi5Db25zdHJ1Y3RvclR5cGU9MTgwXT1cIkNvbnN0cnVjdG9yVHlwZVwiLG5bbi5UeXBlUXVlcnk9MTgxXT1cIlR5cGVRdWVyeVwiLG5bbi5UeXBlTGl0ZXJhbD0xODJdPVwiVHlwZUxpdGVyYWxcIixuW24uQXJyYXlUeXBlPTE4M109XCJBcnJheVR5cGVcIixuW24uVHVwbGVUeXBlPTE4NF09XCJUdXBsZVR5cGVcIixuW24uT3B0aW9uYWxUeXBlPTE4NV09XCJPcHRpb25hbFR5cGVcIixuW24uUmVzdFR5cGU9MTg2XT1cIlJlc3RUeXBlXCIsbltuLlVuaW9uVHlwZT0xODddPVwiVW5pb25UeXBlXCIsbltuLkludGVyc2VjdGlvblR5cGU9MTg4XT1cIkludGVyc2VjdGlvblR5cGVcIixuW24uQ29uZGl0aW9uYWxUeXBlPTE4OV09XCJDb25kaXRpb25hbFR5cGVcIixuW24uSW5mZXJUeXBlPTE5MF09XCJJbmZlclR5cGVcIixuW24uUGFyZW50aGVzaXplZFR5cGU9MTkxXT1cIlBhcmVudGhlc2l6ZWRUeXBlXCIsbltuLlRoaXNUeXBlPTE5Ml09XCJUaGlzVHlwZVwiLG5bbi5UeXBlT3BlcmF0b3I9MTkzXT1cIlR5cGVPcGVyYXRvclwiLG5bbi5JbmRleGVkQWNjZXNzVHlwZT0xOTRdPVwiSW5kZXhlZEFjY2Vzc1R5cGVcIixuW24uTWFwcGVkVHlwZT0xOTVdPVwiTWFwcGVkVHlwZVwiLG5bbi5MaXRlcmFsVHlwZT0xOTZdPVwiTGl0ZXJhbFR5cGVcIixuW24uTmFtZWRUdXBsZU1lbWJlcj0xOTddPVwiTmFtZWRUdXBsZU1lbWJlclwiLG5bbi5UZW1wbGF0ZUxpdGVyYWxUeXBlPTE5OF09XCJUZW1wbGF0ZUxpdGVyYWxUeXBlXCIsbltuLlRlbXBsYXRlTGl0ZXJhbFR5cGVTcGFuPTE5OV09XCJUZW1wbGF0ZUxpdGVyYWxUeXBlU3BhblwiLG5bbi5JbXBvcnRUeXBlPTIwMF09XCJJbXBvcnRUeXBlXCIsbltuLk9iamVjdEJpbmRpbmdQYXR0ZXJuPTIwMV09XCJPYmplY3RCaW5kaW5nUGF0dGVyblwiLG5bbi5BcnJheUJpbmRpbmdQYXR0ZXJuPTIwMl09XCJBcnJheUJpbmRpbmdQYXR0ZXJuXCIsbltuLkJpbmRpbmdFbGVtZW50PTIwM109XCJCaW5kaW5nRWxlbWVudFwiLG5bbi5BcnJheUxpdGVyYWxFeHByZXNzaW9uPTIwNF09XCJBcnJheUxpdGVyYWxFeHByZXNzaW9uXCIsbltuLk9iamVjdExpdGVyYWxFeHByZXNzaW9uPTIwNV09XCJPYmplY3RMaXRlcmFsRXhwcmVzc2lvblwiLG5bbi5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb249MjA2XT1cIlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvblwiLG5bbi5FbGVtZW50QWNjZXNzRXhwcmVzc2lvbj0yMDddPVwiRWxlbWVudEFjY2Vzc0V4cHJlc3Npb25cIixuW24uQ2FsbEV4cHJlc3Npb249MjA4XT1cIkNhbGxFeHByZXNzaW9uXCIsbltuLk5ld0V4cHJlc3Npb249MjA5XT1cIk5ld0V4cHJlc3Npb25cIixuW24uVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uPTIxMF09XCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIixuW24uVHlwZUFzc2VydGlvbkV4cHJlc3Npb249MjExXT1cIlR5cGVBc3NlcnRpb25FeHByZXNzaW9uXCIsbltuLlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPTIxMl09XCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiLG5bbi5GdW5jdGlvbkV4cHJlc3Npb249MjEzXT1cIkZ1bmN0aW9uRXhwcmVzc2lvblwiLG5bbi5BcnJvd0Z1bmN0aW9uPTIxNF09XCJBcnJvd0Z1bmN0aW9uXCIsbltuLkRlbGV0ZUV4cHJlc3Npb249MjE1XT1cIkRlbGV0ZUV4cHJlc3Npb25cIixuW24uVHlwZU9mRXhwcmVzc2lvbj0yMTZdPVwiVHlwZU9mRXhwcmVzc2lvblwiLG5bbi5Wb2lkRXhwcmVzc2lvbj0yMTddPVwiVm9pZEV4cHJlc3Npb25cIixuW24uQXdhaXRFeHByZXNzaW9uPTIxOF09XCJBd2FpdEV4cHJlc3Npb25cIixuW24uUHJlZml4VW5hcnlFeHByZXNzaW9uPTIxOV09XCJQcmVmaXhVbmFyeUV4cHJlc3Npb25cIixuW24uUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbj0yMjBdPVwiUG9zdGZpeFVuYXJ5RXhwcmVzc2lvblwiLG5bbi5CaW5hcnlFeHByZXNzaW9uPTIyMV09XCJCaW5hcnlFeHByZXNzaW9uXCIsbltuLkNvbmRpdGlvbmFsRXhwcmVzc2lvbj0yMjJdPVwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIsbltuLlRlbXBsYXRlRXhwcmVzc2lvbj0yMjNdPVwiVGVtcGxhdGVFeHByZXNzaW9uXCIsbltuLllpZWxkRXhwcmVzc2lvbj0yMjRdPVwiWWllbGRFeHByZXNzaW9uXCIsbltuLlNwcmVhZEVsZW1lbnQ9MjI1XT1cIlNwcmVhZEVsZW1lbnRcIixuW24uQ2xhc3NFeHByZXNzaW9uPTIyNl09XCJDbGFzc0V4cHJlc3Npb25cIixuW24uT21pdHRlZEV4cHJlc3Npb249MjI3XT1cIk9taXR0ZWRFeHByZXNzaW9uXCIsbltuLkV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cz0yMjhdPVwiRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzXCIsbltuLkFzRXhwcmVzc2lvbj0yMjldPVwiQXNFeHByZXNzaW9uXCIsbltuLk5vbk51bGxFeHByZXNzaW9uPTIzMF09XCJOb25OdWxsRXhwcmVzc2lvblwiLG5bbi5NZXRhUHJvcGVydHk9MjMxXT1cIk1ldGFQcm9wZXJ0eVwiLG5bbi5TeW50aGV0aWNFeHByZXNzaW9uPTIzMl09XCJTeW50aGV0aWNFeHByZXNzaW9uXCIsbltuLlRlbXBsYXRlU3Bhbj0yMzNdPVwiVGVtcGxhdGVTcGFuXCIsbltuLlNlbWljb2xvbkNsYXNzRWxlbWVudD0yMzRdPVwiU2VtaWNvbG9uQ2xhc3NFbGVtZW50XCIsbltuLkJsb2NrPTIzNV09XCJCbG9ja1wiLG5bbi5FbXB0eVN0YXRlbWVudD0yMzZdPVwiRW1wdHlTdGF0ZW1lbnRcIixuW24uVmFyaWFibGVTdGF0ZW1lbnQ9MjM3XT1cIlZhcmlhYmxlU3RhdGVtZW50XCIsbltuLkV4cHJlc3Npb25TdGF0ZW1lbnQ9MjM4XT1cIkV4cHJlc3Npb25TdGF0ZW1lbnRcIixuW24uSWZTdGF0ZW1lbnQ9MjM5XT1cIklmU3RhdGVtZW50XCIsbltuLkRvU3RhdGVtZW50PTI0MF09XCJEb1N0YXRlbWVudFwiLG5bbi5XaGlsZVN0YXRlbWVudD0yNDFdPVwiV2hpbGVTdGF0ZW1lbnRcIixuW24uRm9yU3RhdGVtZW50PTI0Ml09XCJGb3JTdGF0ZW1lbnRcIixuW24uRm9ySW5TdGF0ZW1lbnQ9MjQzXT1cIkZvckluU3RhdGVtZW50XCIsbltuLkZvck9mU3RhdGVtZW50PTI0NF09XCJGb3JPZlN0YXRlbWVudFwiLG5bbi5Db250aW51ZVN0YXRlbWVudD0yNDVdPVwiQ29udGludWVTdGF0ZW1lbnRcIixuW24uQnJlYWtTdGF0ZW1lbnQ9MjQ2XT1cIkJyZWFrU3RhdGVtZW50XCIsbltuLlJldHVyblN0YXRlbWVudD0yNDddPVwiUmV0dXJuU3RhdGVtZW50XCIsbltuLldpdGhTdGF0ZW1lbnQ9MjQ4XT1cIldpdGhTdGF0ZW1lbnRcIixuW24uU3dpdGNoU3RhdGVtZW50PTI0OV09XCJTd2l0Y2hTdGF0ZW1lbnRcIixuW24uTGFiZWxlZFN0YXRlbWVudD0yNTBdPVwiTGFiZWxlZFN0YXRlbWVudFwiLG5bbi5UaHJvd1N0YXRlbWVudD0yNTFdPVwiVGhyb3dTdGF0ZW1lbnRcIixuW24uVHJ5U3RhdGVtZW50PTI1Ml09XCJUcnlTdGF0ZW1lbnRcIixuW24uRGVidWdnZXJTdGF0ZW1lbnQ9MjUzXT1cIkRlYnVnZ2VyU3RhdGVtZW50XCIsbltuLlZhcmlhYmxlRGVjbGFyYXRpb249MjU0XT1cIlZhcmlhYmxlRGVjbGFyYXRpb25cIixuW24uVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q9MjU1XT1cIlZhcmlhYmxlRGVjbGFyYXRpb25MaXN0XCIsbltuLkZ1bmN0aW9uRGVjbGFyYXRpb249MjU2XT1cIkZ1bmN0aW9uRGVjbGFyYXRpb25cIixuW24uQ2xhc3NEZWNsYXJhdGlvbj0yNTddPVwiQ2xhc3NEZWNsYXJhdGlvblwiLG5bbi5JbnRlcmZhY2VEZWNsYXJhdGlvbj0yNThdPVwiSW50ZXJmYWNlRGVjbGFyYXRpb25cIixuW24uVHlwZUFsaWFzRGVjbGFyYXRpb249MjU5XT1cIlR5cGVBbGlhc0RlY2xhcmF0aW9uXCIsbltuLkVudW1EZWNsYXJhdGlvbj0yNjBdPVwiRW51bURlY2xhcmF0aW9uXCIsbltuLk1vZHVsZURlY2xhcmF0aW9uPTI2MV09XCJNb2R1bGVEZWNsYXJhdGlvblwiLG5bbi5Nb2R1bGVCbG9jaz0yNjJdPVwiTW9kdWxlQmxvY2tcIixuW24uQ2FzZUJsb2NrPTI2M109XCJDYXNlQmxvY2tcIixuW24uTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb249MjY0XT1cIk5hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uXCIsbltuLkltcG9ydEVxdWFsc0RlY2xhcmF0aW9uPTI2NV09XCJJbXBvcnRFcXVhbHNEZWNsYXJhdGlvblwiLG5bbi5JbXBvcnREZWNsYXJhdGlvbj0yNjZdPVwiSW1wb3J0RGVjbGFyYXRpb25cIixuW24uSW1wb3J0Q2xhdXNlPTI2N109XCJJbXBvcnRDbGF1c2VcIixuW24uTmFtZXNwYWNlSW1wb3J0PTI2OF09XCJOYW1lc3BhY2VJbXBvcnRcIixuW24uTmFtZWRJbXBvcnRzPTI2OV09XCJOYW1lZEltcG9ydHNcIixuW24uSW1wb3J0U3BlY2lmaWVyPTI3MF09XCJJbXBvcnRTcGVjaWZpZXJcIixuW24uRXhwb3J0QXNzaWdubWVudD0yNzFdPVwiRXhwb3J0QXNzaWdubWVudFwiLG5bbi5FeHBvcnREZWNsYXJhdGlvbj0yNzJdPVwiRXhwb3J0RGVjbGFyYXRpb25cIixuW24uTmFtZWRFeHBvcnRzPTI3M109XCJOYW1lZEV4cG9ydHNcIixuW24uTmFtZXNwYWNlRXhwb3J0PTI3NF09XCJOYW1lc3BhY2VFeHBvcnRcIixuW24uRXhwb3J0U3BlY2lmaWVyPTI3NV09XCJFeHBvcnRTcGVjaWZpZXJcIixuW24uTWlzc2luZ0RlY2xhcmF0aW9uPTI3Nl09XCJNaXNzaW5nRGVjbGFyYXRpb25cIixuW24uRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2U9Mjc3XT1cIkV4dGVybmFsTW9kdWxlUmVmZXJlbmNlXCIsbltuLkpzeEVsZW1lbnQ9Mjc4XT1cIkpzeEVsZW1lbnRcIixuW24uSnN4U2VsZkNsb3NpbmdFbGVtZW50PTI3OV09XCJKc3hTZWxmQ2xvc2luZ0VsZW1lbnRcIixuW24uSnN4T3BlbmluZ0VsZW1lbnQ9MjgwXT1cIkpzeE9wZW5pbmdFbGVtZW50XCIsbltuLkpzeENsb3NpbmdFbGVtZW50PTI4MV09XCJKc3hDbG9zaW5nRWxlbWVudFwiLG5bbi5Kc3hGcmFnbWVudD0yODJdPVwiSnN4RnJhZ21lbnRcIixuW24uSnN4T3BlbmluZ0ZyYWdtZW50PTI4M109XCJKc3hPcGVuaW5nRnJhZ21lbnRcIixuW24uSnN4Q2xvc2luZ0ZyYWdtZW50PTI4NF09XCJKc3hDbG9zaW5nRnJhZ21lbnRcIixuW24uSnN4QXR0cmlidXRlPTI4NV09XCJKc3hBdHRyaWJ1dGVcIixuW24uSnN4QXR0cmlidXRlcz0yODZdPVwiSnN4QXR0cmlidXRlc1wiLG5bbi5Kc3hTcHJlYWRBdHRyaWJ1dGU9Mjg3XT1cIkpzeFNwcmVhZEF0dHJpYnV0ZVwiLG5bbi5Kc3hFeHByZXNzaW9uPTI4OF09XCJKc3hFeHByZXNzaW9uXCIsbltuLkNhc2VDbGF1c2U9Mjg5XT1cIkNhc2VDbGF1c2VcIixuW24uRGVmYXVsdENsYXVzZT0yOTBdPVwiRGVmYXVsdENsYXVzZVwiLG5bbi5IZXJpdGFnZUNsYXVzZT0yOTFdPVwiSGVyaXRhZ2VDbGF1c2VcIixuW24uQ2F0Y2hDbGF1c2U9MjkyXT1cIkNhdGNoQ2xhdXNlXCIsbltuLkFzc2VydENsYXVzZT0yOTNdPVwiQXNzZXJ0Q2xhdXNlXCIsbltuLkFzc2VydEVudHJ5PTI5NF09XCJBc3NlcnRFbnRyeVwiLG5bbi5JbXBvcnRUeXBlQXNzZXJ0aW9uQ29udGFpbmVyPTI5NV09XCJJbXBvcnRUeXBlQXNzZXJ0aW9uQ29udGFpbmVyXCIsbltuLlByb3BlcnR5QXNzaWdubWVudD0yOTZdPVwiUHJvcGVydHlBc3NpZ25tZW50XCIsbltuLlNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudD0yOTddPVwiU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50XCIsbltuLlNwcmVhZEFzc2lnbm1lbnQ9Mjk4XT1cIlNwcmVhZEFzc2lnbm1lbnRcIixuW24uRW51bU1lbWJlcj0yOTldPVwiRW51bU1lbWJlclwiLG5bbi5VbnBhcnNlZFByb2xvZ3VlPTMwMF09XCJVbnBhcnNlZFByb2xvZ3VlXCIsbltuLlVucGFyc2VkUHJlcGVuZD0zMDFdPVwiVW5wYXJzZWRQcmVwZW5kXCIsbltuLlVucGFyc2VkVGV4dD0zMDJdPVwiVW5wYXJzZWRUZXh0XCIsbltuLlVucGFyc2VkSW50ZXJuYWxUZXh0PTMwM109XCJVbnBhcnNlZEludGVybmFsVGV4dFwiLG5bbi5VbnBhcnNlZFN5bnRoZXRpY1JlZmVyZW5jZT0zMDRdPVwiVW5wYXJzZWRTeW50aGV0aWNSZWZlcmVuY2VcIixuW24uU291cmNlRmlsZT0zMDVdPVwiU291cmNlRmlsZVwiLG5bbi5CdW5kbGU9MzA2XT1cIkJ1bmRsZVwiLG5bbi5VbnBhcnNlZFNvdXJjZT0zMDddPVwiVW5wYXJzZWRTb3VyY2VcIixuW24uSW5wdXRGaWxlcz0zMDhdPVwiSW5wdXRGaWxlc1wiLG5bbi5KU0RvY1R5cGVFeHByZXNzaW9uPTMwOV09XCJKU0RvY1R5cGVFeHByZXNzaW9uXCIsbltuLkpTRG9jTmFtZVJlZmVyZW5jZT0zMTBdPVwiSlNEb2NOYW1lUmVmZXJlbmNlXCIsbltuLkpTRG9jTWVtYmVyTmFtZT0zMTFdPVwiSlNEb2NNZW1iZXJOYW1lXCIsbltuLkpTRG9jQWxsVHlwZT0zMTJdPVwiSlNEb2NBbGxUeXBlXCIsbltuLkpTRG9jVW5rbm93blR5cGU9MzEzXT1cIkpTRG9jVW5rbm93blR5cGVcIixuW24uSlNEb2NOdWxsYWJsZVR5cGU9MzE0XT1cIkpTRG9jTnVsbGFibGVUeXBlXCIsbltuLkpTRG9jTm9uTnVsbGFibGVUeXBlPTMxNV09XCJKU0RvY05vbk51bGxhYmxlVHlwZVwiLG5bbi5KU0RvY09wdGlvbmFsVHlwZT0zMTZdPVwiSlNEb2NPcHRpb25hbFR5cGVcIixuW24uSlNEb2NGdW5jdGlvblR5cGU9MzE3XT1cIkpTRG9jRnVuY3Rpb25UeXBlXCIsbltuLkpTRG9jVmFyaWFkaWNUeXBlPTMxOF09XCJKU0RvY1ZhcmlhZGljVHlwZVwiLG5bbi5KU0RvY05hbWVwYXRoVHlwZT0zMTldPVwiSlNEb2NOYW1lcGF0aFR5cGVcIixuW24uSlNEb2NDb21tZW50PTMyMF09XCJKU0RvY0NvbW1lbnRcIixuW24uSlNEb2NUZXh0PTMyMV09XCJKU0RvY1RleHRcIixuW24uSlNEb2NUeXBlTGl0ZXJhbD0zMjJdPVwiSlNEb2NUeXBlTGl0ZXJhbFwiLG5bbi5KU0RvY1NpZ25hdHVyZT0zMjNdPVwiSlNEb2NTaWduYXR1cmVcIixuW24uSlNEb2NMaW5rPTMyNF09XCJKU0RvY0xpbmtcIixuW24uSlNEb2NMaW5rQ29kZT0zMjVdPVwiSlNEb2NMaW5rQ29kZVwiLG5bbi5KU0RvY0xpbmtQbGFpbj0zMjZdPVwiSlNEb2NMaW5rUGxhaW5cIixuW24uSlNEb2NUYWc9MzI3XT1cIkpTRG9jVGFnXCIsbltuLkpTRG9jQXVnbWVudHNUYWc9MzI4XT1cIkpTRG9jQXVnbWVudHNUYWdcIixuW24uSlNEb2NJbXBsZW1lbnRzVGFnPTMyOV09XCJKU0RvY0ltcGxlbWVudHNUYWdcIixuW24uSlNEb2NBdXRob3JUYWc9MzMwXT1cIkpTRG9jQXV0aG9yVGFnXCIsbltuLkpTRG9jRGVwcmVjYXRlZFRhZz0zMzFdPVwiSlNEb2NEZXByZWNhdGVkVGFnXCIsbltuLkpTRG9jQ2xhc3NUYWc9MzMyXT1cIkpTRG9jQ2xhc3NUYWdcIixuW24uSlNEb2NQdWJsaWNUYWc9MzMzXT1cIkpTRG9jUHVibGljVGFnXCIsbltuLkpTRG9jUHJpdmF0ZVRhZz0zMzRdPVwiSlNEb2NQcml2YXRlVGFnXCIsbltuLkpTRG9jUHJvdGVjdGVkVGFnPTMzNV09XCJKU0RvY1Byb3RlY3RlZFRhZ1wiLG5bbi5KU0RvY1JlYWRvbmx5VGFnPTMzNl09XCJKU0RvY1JlYWRvbmx5VGFnXCIsbltuLkpTRG9jT3ZlcnJpZGVUYWc9MzM3XT1cIkpTRG9jT3ZlcnJpZGVUYWdcIixuW24uSlNEb2NDYWxsYmFja1RhZz0zMzhdPVwiSlNEb2NDYWxsYmFja1RhZ1wiLG5bbi5KU0RvY0VudW1UYWc9MzM5XT1cIkpTRG9jRW51bVRhZ1wiLG5bbi5KU0RvY1BhcmFtZXRlclRhZz0zNDBdPVwiSlNEb2NQYXJhbWV0ZXJUYWdcIixuW24uSlNEb2NSZXR1cm5UYWc9MzQxXT1cIkpTRG9jUmV0dXJuVGFnXCIsbltuLkpTRG9jVGhpc1RhZz0zNDJdPVwiSlNEb2NUaGlzVGFnXCIsbltuLkpTRG9jVHlwZVRhZz0zNDNdPVwiSlNEb2NUeXBlVGFnXCIsbltuLkpTRG9jVGVtcGxhdGVUYWc9MzQ0XT1cIkpTRG9jVGVtcGxhdGVUYWdcIixuW24uSlNEb2NUeXBlZGVmVGFnPTM0NV09XCJKU0RvY1R5cGVkZWZUYWdcIixuW24uSlNEb2NTZWVUYWc9MzQ2XT1cIkpTRG9jU2VlVGFnXCIsbltuLkpTRG9jUHJvcGVydHlUYWc9MzQ3XT1cIkpTRG9jUHJvcGVydHlUYWdcIixuW24uU3ludGF4TGlzdD0zNDhdPVwiU3ludGF4TGlzdFwiLG5bbi5Ob3RFbWl0dGVkU3RhdGVtZW50PTM0OV09XCJOb3RFbWl0dGVkU3RhdGVtZW50XCIsbltuLlBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9uPTM1MF09XCJQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvblwiLG5bbi5Db21tYUxpc3RFeHByZXNzaW9uPTM1MV09XCJDb21tYUxpc3RFeHByZXNzaW9uXCIsbltuLk1lcmdlRGVjbGFyYXRpb25NYXJrZXI9MzUyXT1cIk1lcmdlRGVjbGFyYXRpb25NYXJrZXJcIixuW24uRW5kT2ZEZWNsYXJhdGlvbk1hcmtlcj0zNTNdPVwiRW5kT2ZEZWNsYXJhdGlvbk1hcmtlclwiLG5bbi5TeW50aGV0aWNSZWZlcmVuY2VFeHByZXNzaW9uPTM1NF09XCJTeW50aGV0aWNSZWZlcmVuY2VFeHByZXNzaW9uXCIsbltuLkNvdW50PTM1NV09XCJDb3VudFwiLG5bbi5GaXJzdEFzc2lnbm1lbnQ9NjNdPVwiRmlyc3RBc3NpZ25tZW50XCIsbltuLkxhc3RBc3NpZ25tZW50PTc4XT1cIkxhc3RBc3NpZ25tZW50XCIsbltuLkZpcnN0Q29tcG91bmRBc3NpZ25tZW50PTY0XT1cIkZpcnN0Q29tcG91bmRBc3NpZ25tZW50XCIsbltuLkxhc3RDb21wb3VuZEFzc2lnbm1lbnQ9NzhdPVwiTGFzdENvbXBvdW5kQXNzaWdubWVudFwiLG5bbi5GaXJzdFJlc2VydmVkV29yZD04MV09XCJGaXJzdFJlc2VydmVkV29yZFwiLG5bbi5MYXN0UmVzZXJ2ZWRXb3JkPTExNl09XCJMYXN0UmVzZXJ2ZWRXb3JkXCIsbltuLkZpcnN0S2V5d29yZD04MV09XCJGaXJzdEtleXdvcmRcIixuW24uTGFzdEtleXdvcmQ9MTYwXT1cIkxhc3RLZXl3b3JkXCIsbltuLkZpcnN0RnV0dXJlUmVzZXJ2ZWRXb3JkPTExN109XCJGaXJzdEZ1dHVyZVJlc2VydmVkV29yZFwiLG5bbi5MYXN0RnV0dXJlUmVzZXJ2ZWRXb3JkPTEyNV09XCJMYXN0RnV0dXJlUmVzZXJ2ZWRXb3JkXCIsbltuLkZpcnN0VHlwZU5vZGU9MTc3XT1cIkZpcnN0VHlwZU5vZGVcIixuW24uTGFzdFR5cGVOb2RlPTIwMF09XCJMYXN0VHlwZU5vZGVcIixuW24uRmlyc3RQdW5jdHVhdGlvbj0xOF09XCJGaXJzdFB1bmN0dWF0aW9uXCIsbltuLkxhc3RQdW5jdHVhdGlvbj03OF09XCJMYXN0UHVuY3R1YXRpb25cIixuW24uRmlyc3RUb2tlbj0wXT1cIkZpcnN0VG9rZW5cIixuW24uTGFzdFRva2VuPTE2MF09XCJMYXN0VG9rZW5cIixuW24uRmlyc3RUcml2aWFUb2tlbj0yXT1cIkZpcnN0VHJpdmlhVG9rZW5cIixuW24uTGFzdFRyaXZpYVRva2VuPTddPVwiTGFzdFRyaXZpYVRva2VuXCIsbltuLkZpcnN0TGl0ZXJhbFRva2VuPThdPVwiRmlyc3RMaXRlcmFsVG9rZW5cIixuW24uTGFzdExpdGVyYWxUb2tlbj0xNF09XCJMYXN0TGl0ZXJhbFRva2VuXCIsbltuLkZpcnN0VGVtcGxhdGVUb2tlbj0xNF09XCJGaXJzdFRlbXBsYXRlVG9rZW5cIixuW24uTGFzdFRlbXBsYXRlVG9rZW49MTddPVwiTGFzdFRlbXBsYXRlVG9rZW5cIixuW24uRmlyc3RCaW5hcnlPcGVyYXRvcj0yOV09XCJGaXJzdEJpbmFyeU9wZXJhdG9yXCIsbltuLkxhc3RCaW5hcnlPcGVyYXRvcj03OF09XCJMYXN0QmluYXJ5T3BlcmF0b3JcIixuW24uRmlyc3RTdGF0ZW1lbnQ9MjM3XT1cIkZpcnN0U3RhdGVtZW50XCIsbltuLkxhc3RTdGF0ZW1lbnQ9MjUzXT1cIkxhc3RTdGF0ZW1lbnRcIixuW24uRmlyc3ROb2RlPTE2MV09XCJGaXJzdE5vZGVcIixuW24uRmlyc3RKU0RvY05vZGU9MzA5XT1cIkZpcnN0SlNEb2NOb2RlXCIsbltuLkxhc3RKU0RvY05vZGU9MzQ3XT1cIkxhc3RKU0RvY05vZGVcIixuW24uRmlyc3RKU0RvY1RhZ05vZGU9MzI3XT1cIkZpcnN0SlNEb2NUYWdOb2RlXCIsbltuLkxhc3RKU0RvY1RhZ05vZGU9MzQ3XT1cIkxhc3RKU0RvY1RhZ05vZGVcIixuW24uRmlyc3RDb250ZXh0dWFsS2V5d29yZD0xMjZdPVwiRmlyc3RDb250ZXh0dWFsS2V5d29yZFwiLG5bbi5MYXN0Q29udGV4dHVhbEtleXdvcmQ9MTYwXT1cIkxhc3RDb250ZXh0dWFsS2V5d29yZFwiLG5bbi5KU0RvYz0zMjBdPVwiSlNEb2NcIn0pKGE9ZS5TeW50YXhLaW5kfHwoZS5TeW50YXhLaW5kPXt9KSk7dmFyIEM7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5MZXQ9MV09XCJMZXRcIixuW24uQ29uc3Q9Ml09XCJDb25zdFwiLG5bbi5OZXN0ZWROYW1lc3BhY2U9NF09XCJOZXN0ZWROYW1lc3BhY2VcIixuW24uU3ludGhlc2l6ZWQ9OF09XCJTeW50aGVzaXplZFwiLG5bbi5OYW1lc3BhY2U9MTZdPVwiTmFtZXNwYWNlXCIsbltuLk9wdGlvbmFsQ2hhaW49MzJdPVwiT3B0aW9uYWxDaGFpblwiLG5bbi5FeHBvcnRDb250ZXh0PTY0XT1cIkV4cG9ydENvbnRleHRcIixuW24uQ29udGFpbnNUaGlzPTEyOF09XCJDb250YWluc1RoaXNcIixuW24uSGFzSW1wbGljaXRSZXR1cm49MjU2XT1cIkhhc0ltcGxpY2l0UmV0dXJuXCIsbltuLkhhc0V4cGxpY2l0UmV0dXJuPTUxMl09XCJIYXNFeHBsaWNpdFJldHVyblwiLG5bbi5HbG9iYWxBdWdtZW50YXRpb249MTAyNF09XCJHbG9iYWxBdWdtZW50YXRpb25cIixuW24uSGFzQXN5bmNGdW5jdGlvbnM9MjA0OF09XCJIYXNBc3luY0Z1bmN0aW9uc1wiLG5bbi5EaXNhbGxvd0luQ29udGV4dD00MDk2XT1cIkRpc2FsbG93SW5Db250ZXh0XCIsbltuLllpZWxkQ29udGV4dD04MTkyXT1cIllpZWxkQ29udGV4dFwiLG5bbi5EZWNvcmF0b3JDb250ZXh0PTE2Mzg0XT1cIkRlY29yYXRvckNvbnRleHRcIixuW24uQXdhaXRDb250ZXh0PTMyNzY4XT1cIkF3YWl0Q29udGV4dFwiLG5bbi5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0PTY1NTM2XT1cIkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHRcIixuW24uVGhpc05vZGVIYXNFcnJvcj0xMzEwNzJdPVwiVGhpc05vZGVIYXNFcnJvclwiLG5bbi5KYXZhU2NyaXB0RmlsZT0yNjIxNDRdPVwiSmF2YVNjcmlwdEZpbGVcIixuW24uVGhpc05vZGVPckFueVN1Yk5vZGVzSGFzRXJyb3I9NTI0Mjg4XT1cIlRoaXNOb2RlT3JBbnlTdWJOb2Rlc0hhc0Vycm9yXCIsbltuLkhhc0FnZ3JlZ2F0ZWRDaGlsZERhdGE9MTA0ODU3Nl09XCJIYXNBZ2dyZWdhdGVkQ2hpbGREYXRhXCIsbltuLlBvc3NpYmx5Q29udGFpbnNEeW5hbWljSW1wb3J0PTIwOTcxNTJdPVwiUG9zc2libHlDb250YWluc0R5bmFtaWNJbXBvcnRcIixuW24uUG9zc2libHlDb250YWluc0ltcG9ydE1ldGE9NDE5NDMwNF09XCJQb3NzaWJseUNvbnRhaW5zSW1wb3J0TWV0YVwiLG5bbi5KU0RvYz04Mzg4NjA4XT1cIkpTRG9jXCIsbltuLkFtYmllbnQ9MTY3NzcyMTZdPVwiQW1iaWVudFwiLG5bbi5JbldpdGhTdGF0ZW1lbnQ9MzM1NTQ0MzJdPVwiSW5XaXRoU3RhdGVtZW50XCIsbltuLkpzb25GaWxlPTY3MTA4ODY0XT1cIkpzb25GaWxlXCIsbltuLlR5cGVDYWNoZWQ9MTM0MjE3NzI4XT1cIlR5cGVDYWNoZWRcIixuW24uRGVwcmVjYXRlZD0yNjg0MzU0NTZdPVwiRGVwcmVjYXRlZFwiLG5bbi5CbG9ja1Njb3BlZD0zXT1cIkJsb2NrU2NvcGVkXCIsbltuLlJlYWNoYWJpbGl0eUNoZWNrRmxhZ3M9NzY4XT1cIlJlYWNoYWJpbGl0eUNoZWNrRmxhZ3NcIixuW24uUmVhY2hhYmlsaXR5QW5kRW1pdEZsYWdzPTI4MTZdPVwiUmVhY2hhYmlsaXR5QW5kRW1pdEZsYWdzXCIsbltuLkNvbnRleHRGbGFncz01MDcyMDc2OF09XCJDb250ZXh0RmxhZ3NcIixuW24uVHlwZUV4Y2x1ZGVzRmxhZ3M9NDA5NjBdPVwiVHlwZUV4Y2x1ZGVzRmxhZ3NcIixuW24uUGVybWFuZW50bHlTZXRJbmNyZW1lbnRhbEZsYWdzPTYyOTE0NTZdPVwiUGVybWFuZW50bHlTZXRJbmNyZW1lbnRhbEZsYWdzXCJ9KShDPWUuTm9kZUZsYWdzfHwoZS5Ob2RlRmxhZ3M9e30pKTt2YXIgdzsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLkV4cG9ydD0xXT1cIkV4cG9ydFwiLG5bbi5BbWJpZW50PTJdPVwiQW1iaWVudFwiLG5bbi5QdWJsaWM9NF09XCJQdWJsaWNcIixuW24uUHJpdmF0ZT04XT1cIlByaXZhdGVcIixuW24uUHJvdGVjdGVkPTE2XT1cIlByb3RlY3RlZFwiLG5bbi5TdGF0aWM9MzJdPVwiU3RhdGljXCIsbltuLlJlYWRvbmx5PTY0XT1cIlJlYWRvbmx5XCIsbltuLkFic3RyYWN0PTEyOF09XCJBYnN0cmFjdFwiLG5bbi5Bc3luYz0yNTZdPVwiQXN5bmNcIixuW24uRGVmYXVsdD01MTJdPVwiRGVmYXVsdFwiLG5bbi5Db25zdD0yMDQ4XT1cIkNvbnN0XCIsbltuLkhhc0NvbXB1dGVkSlNEb2NNb2RpZmllcnM9NDA5Nl09XCJIYXNDb21wdXRlZEpTRG9jTW9kaWZpZXJzXCIsbltuLkRlcHJlY2F0ZWQ9ODE5Ml09XCJEZXByZWNhdGVkXCIsbltuLk92ZXJyaWRlPTE2Mzg0XT1cIk92ZXJyaWRlXCIsbltuLkluPTMyNzY4XT1cIkluXCIsbltuLk91dD02NTUzNl09XCJPdXRcIixuW24uSGFzQ29tcHV0ZWRGbGFncz01MzY4NzA5MTJdPVwiSGFzQ29tcHV0ZWRGbGFnc1wiLG5bbi5BY2Nlc3NpYmlsaXR5TW9kaWZpZXI9MjhdPVwiQWNjZXNzaWJpbGl0eU1vZGlmaWVyXCIsbltuLlBhcmFtZXRlclByb3BlcnR5TW9kaWZpZXI9MTY0NzZdPVwiUGFyYW1ldGVyUHJvcGVydHlNb2RpZmllclwiLG5bbi5Ob25QdWJsaWNBY2Nlc3NpYmlsaXR5TW9kaWZpZXI9MjRdPVwiTm9uUHVibGljQWNjZXNzaWJpbGl0eU1vZGlmaWVyXCIsbltuLlR5cGVTY3JpcHRNb2RpZmllcj0xMTY5NThdPVwiVHlwZVNjcmlwdE1vZGlmaWVyXCIsbltuLkV4cG9ydERlZmF1bHQ9NTEzXT1cIkV4cG9ydERlZmF1bHRcIixuW24uQWxsPTEyNTk1MV09XCJBbGxcIn0pKHc9ZS5Nb2RpZmllckZsYWdzfHwoZS5Nb2RpZmllckZsYWdzPXt9KSk7dmFyIEI7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5JbnRyaW5zaWNOYW1lZEVsZW1lbnQ9MV09XCJJbnRyaW5zaWNOYW1lZEVsZW1lbnRcIixuW24uSW50cmluc2ljSW5kZXhlZEVsZW1lbnQ9Ml09XCJJbnRyaW5zaWNJbmRleGVkRWxlbWVudFwiLG5bbi5JbnRyaW5zaWNFbGVtZW50PTNdPVwiSW50cmluc2ljRWxlbWVudFwifSkoQj1lLkpzeEZsYWdzfHwoZS5Kc3hGbGFncz17fSkpO3ZhciBFOyhmdW5jdGlvbihuKXtuW24uU3VjY2VlZGVkPTFdPVwiU3VjY2VlZGVkXCIsbltuLkZhaWxlZD0yXT1cIkZhaWxlZFwiLG5bbi5SZXBvcnRlZD00XT1cIlJlcG9ydGVkXCIsbltuLlJlcG9ydHNVbm1lYXN1cmFibGU9OF09XCJSZXBvcnRzVW5tZWFzdXJhYmxlXCIsbltuLlJlcG9ydHNVbnJlbGlhYmxlPTE2XT1cIlJlcG9ydHNVbnJlbGlhYmxlXCIsbltuLlJlcG9ydHNNYXNrPTI0XT1cIlJlcG9ydHNNYXNrXCJ9KShFPWUuUmVsYXRpb25Db21wYXJpc29uUmVzdWx0fHwoZS5SZWxhdGlvbkNvbXBhcmlzb25SZXN1bHQ9e30pKTt2YXIgUTsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLkF1dG89MV09XCJBdXRvXCIsbltuLkxvb3A9Ml09XCJMb29wXCIsbltuLlVuaXF1ZT0zXT1cIlVuaXF1ZVwiLG5bbi5Ob2RlPTRdPVwiTm9kZVwiLG5bbi5LaW5kTWFzaz03XT1cIktpbmRNYXNrXCIsbltuLlJlc2VydmVkSW5OZXN0ZWRTY29wZXM9OF09XCJSZXNlcnZlZEluTmVzdGVkU2NvcGVzXCIsbltuLk9wdGltaXN0aWM9MTZdPVwiT3B0aW1pc3RpY1wiLG5bbi5GaWxlTGV2ZWw9MzJdPVwiRmlsZUxldmVsXCIsbltuLkFsbG93TmFtZVN1YnN0aXR1dGlvbj02NF09XCJBbGxvd05hbWVTdWJzdGl0dXRpb25cIn0pKFE9ZS5HZW5lcmF0ZWRJZGVudGlmaWVyRmxhZ3N8fChlLkdlbmVyYXRlZElkZW50aWZpZXJGbGFncz17fSkpO3ZhciBsZTsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLlByZWNlZGluZ0xpbmVCcmVhaz0xXT1cIlByZWNlZGluZ0xpbmVCcmVha1wiLG5bbi5QcmVjZWRpbmdKU0RvY0NvbW1lbnQ9Ml09XCJQcmVjZWRpbmdKU0RvY0NvbW1lbnRcIixuW24uVW50ZXJtaW5hdGVkPTRdPVwiVW50ZXJtaW5hdGVkXCIsbltuLkV4dGVuZGVkVW5pY29kZUVzY2FwZT04XT1cIkV4dGVuZGVkVW5pY29kZUVzY2FwZVwiLG5bbi5TY2llbnRpZmljPTE2XT1cIlNjaWVudGlmaWNcIixuW24uT2N0YWw9MzJdPVwiT2N0YWxcIixuW24uSGV4U3BlY2lmaWVyPTY0XT1cIkhleFNwZWNpZmllclwiLG5bbi5CaW5hcnlTcGVjaWZpZXI9MTI4XT1cIkJpbmFyeVNwZWNpZmllclwiLG5bbi5PY3RhbFNwZWNpZmllcj0yNTZdPVwiT2N0YWxTcGVjaWZpZXJcIixuW24uQ29udGFpbnNTZXBhcmF0b3I9NTEyXT1cIkNvbnRhaW5zU2VwYXJhdG9yXCIsbltuLlVuaWNvZGVFc2NhcGU9MTAyNF09XCJVbmljb2RlRXNjYXBlXCIsbltuLkNvbnRhaW5zSW52YWxpZEVzY2FwZT0yMDQ4XT1cIkNvbnRhaW5zSW52YWxpZEVzY2FwZVwiLG5bbi5CaW5hcnlPck9jdGFsU3BlY2lmaWVyPTM4NF09XCJCaW5hcnlPck9jdGFsU3BlY2lmaWVyXCIsbltuLk51bWVyaWNMaXRlcmFsRmxhZ3M9MTAwOF09XCJOdW1lcmljTGl0ZXJhbEZsYWdzXCIsbltuLlRlbXBsYXRlTGl0ZXJhbExpa2VGbGFncz0yMDQ4XT1cIlRlbXBsYXRlTGl0ZXJhbExpa2VGbGFnc1wifSkobGU9ZS5Ub2tlbkZsYWdzfHwoZS5Ub2tlbkZsYWdzPXt9KSk7dmFyIE47KGZ1bmN0aW9uKG4pe25bbi5VbnJlYWNoYWJsZT0xXT1cIlVucmVhY2hhYmxlXCIsbltuLlN0YXJ0PTJdPVwiU3RhcnRcIixuW24uQnJhbmNoTGFiZWw9NF09XCJCcmFuY2hMYWJlbFwiLG5bbi5Mb29wTGFiZWw9OF09XCJMb29wTGFiZWxcIixuW24uQXNzaWdubWVudD0xNl09XCJBc3NpZ25tZW50XCIsbltuLlRydWVDb25kaXRpb249MzJdPVwiVHJ1ZUNvbmRpdGlvblwiLG5bbi5GYWxzZUNvbmRpdGlvbj02NF09XCJGYWxzZUNvbmRpdGlvblwiLG5bbi5Td2l0Y2hDbGF1c2U9MTI4XT1cIlN3aXRjaENsYXVzZVwiLG5bbi5BcnJheU11dGF0aW9uPTI1Nl09XCJBcnJheU11dGF0aW9uXCIsbltuLkNhbGw9NTEyXT1cIkNhbGxcIixuW24uUmVkdWNlTGFiZWw9MTAyNF09XCJSZWR1Y2VMYWJlbFwiLG5bbi5SZWZlcmVuY2VkPTIwNDhdPVwiUmVmZXJlbmNlZFwiLG5bbi5TaGFyZWQ9NDA5Nl09XCJTaGFyZWRcIixuW24uTGFiZWw9MTJdPVwiTGFiZWxcIixuW24uQ29uZGl0aW9uPTk2XT1cIkNvbmRpdGlvblwifSkoTj1lLkZsb3dGbGFnc3x8KGUuRmxvd0ZsYWdzPXt9KSk7dmFyIHA7KGZ1bmN0aW9uKG4pe25bbi5FeHBlY3RFcnJvcj0wXT1cIkV4cGVjdEVycm9yXCIsbltuLklnbm9yZT0xXT1cIklnbm9yZVwifSkocD1lLkNvbW1lbnREaXJlY3RpdmVUeXBlfHwoZS5Db21tZW50RGlyZWN0aXZlVHlwZT17fSkpO3ZhciBtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe31yZXR1cm4gbn0oKTtlLk9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uPW07dmFyIEc7KGZ1bmN0aW9uKG4pe25bbi5Sb290RmlsZT0wXT1cIlJvb3RGaWxlXCIsbltuLlNvdXJjZUZyb21Qcm9qZWN0UmVmZXJlbmNlPTFdPVwiU291cmNlRnJvbVByb2plY3RSZWZlcmVuY2VcIixuW24uT3V0cHV0RnJvbVByb2plY3RSZWZlcmVuY2U9Ml09XCJPdXRwdXRGcm9tUHJvamVjdFJlZmVyZW5jZVwiLG5bbi5JbXBvcnQ9M109XCJJbXBvcnRcIixuW24uUmVmZXJlbmNlRmlsZT00XT1cIlJlZmVyZW5jZUZpbGVcIixuW24uVHlwZVJlZmVyZW5jZURpcmVjdGl2ZT01XT1cIlR5cGVSZWZlcmVuY2VEaXJlY3RpdmVcIixuW24uTGliRmlsZT02XT1cIkxpYkZpbGVcIixuW24uTGliUmVmZXJlbmNlRGlyZWN0aXZlPTddPVwiTGliUmVmZXJlbmNlRGlyZWN0aXZlXCIsbltuLkF1dG9tYXRpY1R5cGVEaXJlY3RpdmVGaWxlPThdPVwiQXV0b21hdGljVHlwZURpcmVjdGl2ZUZpbGVcIn0pKEc9ZS5GaWxlSW5jbHVkZUtpbmR8fChlLkZpbGVJbmNsdWRlS2luZD17fSkpO3ZhciBvZTsoZnVuY3Rpb24obil7bltuLkZpbGVQcmVwcm9jZXNzaW5nUmVmZXJlbmNlZERpYWdub3N0aWM9MF09XCJGaWxlUHJlcHJvY2Vzc2luZ1JlZmVyZW5jZWREaWFnbm9zdGljXCIsbltuLkZpbGVQcmVwcm9jZXNzaW5nRmlsZUV4cGxhaW5pbmdEaWFnbm9zdGljPTFdPVwiRmlsZVByZXByb2Nlc3NpbmdGaWxlRXhwbGFpbmluZ0RpYWdub3N0aWNcIn0pKG9lPWUuRmlsZVByZXByb2Nlc3NpbmdEaWFnbm9zdGljc0tpbmR8fChlLkZpbGVQcmVwcm9jZXNzaW5nRGlhZ25vc3RpY3NLaW5kPXt9KSk7dmFyIGY7KGZ1bmN0aW9uKG4pe25bbi5Ob3Q9MF09XCJOb3RcIixuW24uU2FmZU1vZHVsZXM9MV09XCJTYWZlTW9kdWxlc1wiLG5bbi5Db21wbGV0ZWx5PTJdPVwiQ29tcGxldGVseVwifSkoZj1lLlN0cnVjdHVyZUlzUmV1c2VkfHwoZS5TdHJ1Y3R1cmVJc1JldXNlZD17fSkpO3ZhciBUOyhmdW5jdGlvbihuKXtuW24uU3VjY2Vzcz0wXT1cIlN1Y2Nlc3NcIixuW24uRGlhZ25vc3RpY3NQcmVzZW50X091dHB1dHNTa2lwcGVkPTFdPVwiRGlhZ25vc3RpY3NQcmVzZW50X091dHB1dHNTa2lwcGVkXCIsbltuLkRpYWdub3N0aWNzUHJlc2VudF9PdXRwdXRzR2VuZXJhdGVkPTJdPVwiRGlhZ25vc3RpY3NQcmVzZW50X091dHB1dHNHZW5lcmF0ZWRcIixuW24uSW52YWxpZFByb2plY3RfT3V0cHV0c1NraXBwZWQ9M109XCJJbnZhbGlkUHJvamVjdF9PdXRwdXRzU2tpcHBlZFwiLG5bbi5Qcm9qZWN0UmVmZXJlbmNlQ3ljbGVfT3V0cHV0c1NraXBwZWQ9NF09XCJQcm9qZWN0UmVmZXJlbmNlQ3ljbGVfT3V0cHV0c1NraXBwZWRcIixuW24uUHJvamVjdFJlZmVyZW5jZUN5Y2xlX091dHB1dHNTa3VwcGVkPTRdPVwiUHJvamVjdFJlZmVyZW5jZUN5Y2xlX091dHB1dHNTa3VwcGVkXCJ9KShUPWUuRXhpdFN0YXR1c3x8KGUuRXhpdFN0YXR1cz17fSkpO3ZhciBLOyhmdW5jdGlvbihuKXtuW24uT2s9MF09XCJPa1wiLG5bbi5OZWVkc092ZXJyaWRlPTFdPVwiTmVlZHNPdmVycmlkZVwiLG5bbi5IYXNJbnZhbGlkT3ZlcnJpZGU9Ml09XCJIYXNJbnZhbGlkT3ZlcnJpZGVcIn0pKEs9ZS5NZW1iZXJPdmVycmlkZVN0YXR1c3x8KGUuTWVtYmVyT3ZlcnJpZGVTdGF0dXM9e30pKTt2YXIgYjsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLkxpdGVyYWw9MV09XCJMaXRlcmFsXCIsbltuLlN1YnR5cGU9Ml09XCJTdWJ0eXBlXCJ9KShiPWUuVW5pb25SZWR1Y3Rpb258fChlLlVuaW9uUmVkdWN0aW9uPXt9KSk7dmFyIHNlOyhmdW5jdGlvbihuKXtuW24uTm9uZT0wXT1cIk5vbmVcIixuW24uU2lnbmF0dXJlPTFdPVwiU2lnbmF0dXJlXCIsbltuLk5vQ29uc3RyYWludHM9Ml09XCJOb0NvbnN0cmFpbnRzXCIsbltuLkNvbXBsZXRpb25zPTRdPVwiQ29tcGxldGlvbnNcIixuW24uU2tpcEJpbmRpbmdQYXR0ZXJucz04XT1cIlNraXBCaW5kaW5nUGF0dGVybnNcIn0pKHNlPWUuQ29udGV4dEZsYWdzfHwoZS5Db250ZXh0RmxhZ3M9e30pKTt2YXIgSjsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLk5vVHJ1bmNhdGlvbj0xXT1cIk5vVHJ1bmNhdGlvblwiLG5bbi5Xcml0ZUFycmF5QXNHZW5lcmljVHlwZT0yXT1cIldyaXRlQXJyYXlBc0dlbmVyaWNUeXBlXCIsbltuLkdlbmVyYXRlTmFtZXNGb3JTaGFkb3dlZFR5cGVQYXJhbXM9NF09XCJHZW5lcmF0ZU5hbWVzRm9yU2hhZG93ZWRUeXBlUGFyYW1zXCIsbltuLlVzZVN0cnVjdHVyYWxGYWxsYmFjaz04XT1cIlVzZVN0cnVjdHVyYWxGYWxsYmFja1wiLG5bbi5Gb3JiaWRJbmRleGVkQWNjZXNzU3ltYm9sUmVmZXJlbmNlcz0xNl09XCJGb3JiaWRJbmRleGVkQWNjZXNzU3ltYm9sUmVmZXJlbmNlc1wiLG5bbi5Xcml0ZVR5cGVBcmd1bWVudHNPZlNpZ25hdHVyZT0zMl09XCJXcml0ZVR5cGVBcmd1bWVudHNPZlNpZ25hdHVyZVwiLG5bbi5Vc2VGdWxseVF1YWxpZmllZFR5cGU9NjRdPVwiVXNlRnVsbHlRdWFsaWZpZWRUeXBlXCIsbltuLlVzZU9ubHlFeHRlcm5hbEFsaWFzaW5nPTEyOF09XCJVc2VPbmx5RXh0ZXJuYWxBbGlhc2luZ1wiLG5bbi5TdXBwcmVzc0FueVJldHVyblR5cGU9MjU2XT1cIlN1cHByZXNzQW55UmV0dXJuVHlwZVwiLG5bbi5Xcml0ZVR5cGVQYXJhbWV0ZXJzSW5RdWFsaWZpZWROYW1lPTUxMl09XCJXcml0ZVR5cGVQYXJhbWV0ZXJzSW5RdWFsaWZpZWROYW1lXCIsbltuLk11bHRpbGluZU9iamVjdExpdGVyYWxzPTEwMjRdPVwiTXVsdGlsaW5lT2JqZWN0TGl0ZXJhbHNcIixuW24uV3JpdGVDbGFzc0V4cHJlc3Npb25Bc1R5cGVMaXRlcmFsPTIwNDhdPVwiV3JpdGVDbGFzc0V4cHJlc3Npb25Bc1R5cGVMaXRlcmFsXCIsbltuLlVzZVR5cGVPZkZ1bmN0aW9uPTQwOTZdPVwiVXNlVHlwZU9mRnVuY3Rpb25cIixuW24uT21pdFBhcmFtZXRlck1vZGlmaWVycz04MTkyXT1cIk9taXRQYXJhbWV0ZXJNb2RpZmllcnNcIixuW24uVXNlQWxpYXNEZWZpbmVkT3V0c2lkZUN1cnJlbnRTY29wZT0xNjM4NF09XCJVc2VBbGlhc0RlZmluZWRPdXRzaWRlQ3VycmVudFNjb3BlXCIsbltuLlVzZVNpbmdsZVF1b3Rlc0ZvclN0cmluZ0xpdGVyYWxUeXBlPTI2ODQzNTQ1Nl09XCJVc2VTaW5nbGVRdW90ZXNGb3JTdHJpbmdMaXRlcmFsVHlwZVwiLG5bbi5Ob1R5cGVSZWR1Y3Rpb249NTM2ODcwOTEyXT1cIk5vVHlwZVJlZHVjdGlvblwiLG5bbi5BbGxvd1RoaXNJbk9iamVjdExpdGVyYWw9MzI3NjhdPVwiQWxsb3dUaGlzSW5PYmplY3RMaXRlcmFsXCIsbltuLkFsbG93UXVhbGlmaWVkTmFtZUluUGxhY2VPZklkZW50aWZpZXI9NjU1MzZdPVwiQWxsb3dRdWFsaWZpZWROYW1lSW5QbGFjZU9mSWRlbnRpZmllclwiLG5bbi5BbGxvd1F1YWxpZmVkTmFtZUluUGxhY2VPZklkZW50aWZpZXI9NjU1MzZdPVwiQWxsb3dRdWFsaWZlZE5hbWVJblBsYWNlT2ZJZGVudGlmaWVyXCIsbltuLkFsbG93QW5vbnltb3VzSWRlbnRpZmllcj0xMzEwNzJdPVwiQWxsb3dBbm9ueW1vdXNJZGVudGlmaWVyXCIsbltuLkFsbG93RW1wdHlVbmlvbk9ySW50ZXJzZWN0aW9uPTI2MjE0NF09XCJBbGxvd0VtcHR5VW5pb25PckludGVyc2VjdGlvblwiLG5bbi5BbGxvd0VtcHR5VHVwbGU9NTI0Mjg4XT1cIkFsbG93RW1wdHlUdXBsZVwiLG5bbi5BbGxvd1VuaXF1ZUVTU3ltYm9sVHlwZT0xMDQ4NTc2XT1cIkFsbG93VW5pcXVlRVNTeW1ib2xUeXBlXCIsbltuLkFsbG93RW1wdHlJbmRleEluZm9UeXBlPTIwOTcxNTJdPVwiQWxsb3dFbXB0eUluZGV4SW5mb1R5cGVcIixuW24uQWxsb3dOb2RlTW9kdWxlc1JlbGF0aXZlUGF0aHM9NjcxMDg4NjRdPVwiQWxsb3dOb2RlTW9kdWxlc1JlbGF0aXZlUGF0aHNcIixuW24uRG9Ob3RJbmNsdWRlU3ltYm9sQ2hhaW49MTM0MjE3NzI4XT1cIkRvTm90SW5jbHVkZVN5bWJvbENoYWluXCIsbltuLklnbm9yZUVycm9ycz03MDIyMTgyNF09XCJJZ25vcmVFcnJvcnNcIixuW24uSW5PYmplY3RUeXBlTGl0ZXJhbD00MTk0MzA0XT1cIkluT2JqZWN0VHlwZUxpdGVyYWxcIixuW24uSW5UeXBlQWxpYXM9ODM4ODYwOF09XCJJblR5cGVBbGlhc1wiLG5bbi5JbkluaXRpYWxFbnRpdHlOYW1lPTE2Nzc3MjE2XT1cIkluSW5pdGlhbEVudGl0eU5hbWVcIn0pKEo9ZS5Ob2RlQnVpbGRlckZsYWdzfHwoZS5Ob2RlQnVpbGRlckZsYWdzPXt9KSk7dmFyIGllOyhmdW5jdGlvbihuKXtuW24uTm9uZT0wXT1cIk5vbmVcIixuW24uTm9UcnVuY2F0aW9uPTFdPVwiTm9UcnVuY2F0aW9uXCIsbltuLldyaXRlQXJyYXlBc0dlbmVyaWNUeXBlPTJdPVwiV3JpdGVBcnJheUFzR2VuZXJpY1R5cGVcIixuW24uVXNlU3RydWN0dXJhbEZhbGxiYWNrPThdPVwiVXNlU3RydWN0dXJhbEZhbGxiYWNrXCIsbltuLldyaXRlVHlwZUFyZ3VtZW50c09mU2lnbmF0dXJlPTMyXT1cIldyaXRlVHlwZUFyZ3VtZW50c09mU2lnbmF0dXJlXCIsbltuLlVzZUZ1bGx5UXVhbGlmaWVkVHlwZT02NF09XCJVc2VGdWxseVF1YWxpZmllZFR5cGVcIixuW24uU3VwcHJlc3NBbnlSZXR1cm5UeXBlPTI1Nl09XCJTdXBwcmVzc0FueVJldHVyblR5cGVcIixuW24uTXVsdGlsaW5lT2JqZWN0TGl0ZXJhbHM9MTAyNF09XCJNdWx0aWxpbmVPYmplY3RMaXRlcmFsc1wiLG5bbi5Xcml0ZUNsYXNzRXhwcmVzc2lvbkFzVHlwZUxpdGVyYWw9MjA0OF09XCJXcml0ZUNsYXNzRXhwcmVzc2lvbkFzVHlwZUxpdGVyYWxcIixuW24uVXNlVHlwZU9mRnVuY3Rpb249NDA5Nl09XCJVc2VUeXBlT2ZGdW5jdGlvblwiLG5bbi5PbWl0UGFyYW1ldGVyTW9kaWZpZXJzPTgxOTJdPVwiT21pdFBhcmFtZXRlck1vZGlmaWVyc1wiLG5bbi5Vc2VBbGlhc0RlZmluZWRPdXRzaWRlQ3VycmVudFNjb3BlPTE2Mzg0XT1cIlVzZUFsaWFzRGVmaW5lZE91dHNpZGVDdXJyZW50U2NvcGVcIixuW24uVXNlU2luZ2xlUXVvdGVzRm9yU3RyaW5nTGl0ZXJhbFR5cGU9MjY4NDM1NDU2XT1cIlVzZVNpbmdsZVF1b3Rlc0ZvclN0cmluZ0xpdGVyYWxUeXBlXCIsbltuLk5vVHlwZVJlZHVjdGlvbj01MzY4NzA5MTJdPVwiTm9UeXBlUmVkdWN0aW9uXCIsbltuLkFsbG93VW5pcXVlRVNTeW1ib2xUeXBlPTEwNDg1NzZdPVwiQWxsb3dVbmlxdWVFU1N5bWJvbFR5cGVcIixuW24uQWRkVW5kZWZpbmVkPTEzMTA3Ml09XCJBZGRVbmRlZmluZWRcIixuW24uV3JpdGVBcnJvd1N0eWxlU2lnbmF0dXJlPTI2MjE0NF09XCJXcml0ZUFycm93U3R5bGVTaWduYXR1cmVcIixuW24uSW5BcnJheVR5cGU9NTI0Mjg4XT1cIkluQXJyYXlUeXBlXCIsbltuLkluRWxlbWVudFR5cGU9MjA5NzE1Ml09XCJJbkVsZW1lbnRUeXBlXCIsbltuLkluRmlyc3RUeXBlQXJndW1lbnQ9NDE5NDMwNF09XCJJbkZpcnN0VHlwZUFyZ3VtZW50XCIsbltuLkluVHlwZUFsaWFzPTgzODg2MDhdPVwiSW5UeXBlQWxpYXNcIixuW24uV3JpdGVPd25OYW1lRm9yQW55TGlrZT0wXT1cIldyaXRlT3duTmFtZUZvckFueUxpa2VcIixuW24uTm9kZUJ1aWxkZXJGbGFnc01hc2s9ODE0Nzc1NjU5XT1cIk5vZGVCdWlsZGVyRmxhZ3NNYXNrXCJ9KShpZT1lLlR5cGVGb3JtYXRGbGFnc3x8KGUuVHlwZUZvcm1hdEZsYWdzPXt9KSk7dmFyIFI7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5Xcml0ZVR5cGVQYXJhbWV0ZXJzT3JBcmd1bWVudHM9MV09XCJXcml0ZVR5cGVQYXJhbWV0ZXJzT3JBcmd1bWVudHNcIixuW24uVXNlT25seUV4dGVybmFsQWxpYXNpbmc9Ml09XCJVc2VPbmx5RXh0ZXJuYWxBbGlhc2luZ1wiLG5bbi5BbGxvd0FueU5vZGVLaW5kPTRdPVwiQWxsb3dBbnlOb2RlS2luZFwiLG5bbi5Vc2VBbGlhc0RlZmluZWRPdXRzaWRlQ3VycmVudFNjb3BlPThdPVwiVXNlQWxpYXNEZWZpbmVkT3V0c2lkZUN1cnJlbnRTY29wZVwiLG5bbi5Eb05vdEluY2x1ZGVTeW1ib2xDaGFpbj0xNl09XCJEb05vdEluY2x1ZGVTeW1ib2xDaGFpblwifSkoUj1lLlN5bWJvbEZvcm1hdEZsYWdzfHwoZS5TeW1ib2xGb3JtYXRGbGFncz17fSkpO3ZhciBxOyhmdW5jdGlvbihuKXtuW24uQWNjZXNzaWJsZT0wXT1cIkFjY2Vzc2libGVcIixuW24uTm90QWNjZXNzaWJsZT0xXT1cIk5vdEFjY2Vzc2libGVcIixuW24uQ2Fubm90QmVOYW1lZD0yXT1cIkNhbm5vdEJlTmFtZWRcIn0pKHE9ZS5TeW1ib2xBY2Nlc3NpYmlsaXR5fHwoZS5TeW1ib2xBY2Nlc3NpYmlsaXR5PXt9KSk7dmFyIE87KGZ1bmN0aW9uKG4pe25bbi5Vbmlvbk9ySW50ZXJzZWN0aW9uPTBdPVwiVW5pb25PckludGVyc2VjdGlvblwiLG5bbi5TcHJlYWQ9MV09XCJTcHJlYWRcIn0pKE89ZS5TeW50aGV0aWNTeW1ib2xLaW5kfHwoZS5TeW50aGV0aWNTeW1ib2xLaW5kPXt9KSk7dmFyIHZlOyhmdW5jdGlvbihuKXtuW24uVGhpcz0wXT1cIlRoaXNcIixuW24uSWRlbnRpZmllcj0xXT1cIklkZW50aWZpZXJcIixuW24uQXNzZXJ0c1RoaXM9Ml09XCJBc3NlcnRzVGhpc1wiLG5bbi5Bc3NlcnRzSWRlbnRpZmllcj0zXT1cIkFzc2VydHNJZGVudGlmaWVyXCJ9KSh2ZT1lLlR5cGVQcmVkaWNhdGVLaW5kfHwoZS5UeXBlUHJlZGljYXRlS2luZD17fSkpO3ZhciBlZTsoZnVuY3Rpb24obil7bltuLlVua25vd249MF09XCJVbmtub3duXCIsbltuLlR5cGVXaXRoQ29uc3RydWN0U2lnbmF0dXJlQW5kVmFsdWU9MV09XCJUeXBlV2l0aENvbnN0cnVjdFNpZ25hdHVyZUFuZFZhbHVlXCIsbltuLlZvaWROdWxsYWJsZU9yTmV2ZXJUeXBlPTJdPVwiVm9pZE51bGxhYmxlT3JOZXZlclR5cGVcIixuW24uTnVtYmVyTGlrZVR5cGU9M109XCJOdW1iZXJMaWtlVHlwZVwiLG5bbi5CaWdJbnRMaWtlVHlwZT00XT1cIkJpZ0ludExpa2VUeXBlXCIsbltuLlN0cmluZ0xpa2VUeXBlPTVdPVwiU3RyaW5nTGlrZVR5cGVcIixuW24uQm9vbGVhblR5cGU9Nl09XCJCb29sZWFuVHlwZVwiLG5bbi5BcnJheUxpa2VUeXBlPTddPVwiQXJyYXlMaWtlVHlwZVwiLG5bbi5FU1N5bWJvbFR5cGU9OF09XCJFU1N5bWJvbFR5cGVcIixuW24uUHJvbWlzZT05XT1cIlByb21pc2VcIixuW24uVHlwZVdpdGhDYWxsU2lnbmF0dXJlPTEwXT1cIlR5cGVXaXRoQ2FsbFNpZ25hdHVyZVwiLG5bbi5PYmplY3RUeXBlPTExXT1cIk9iamVjdFR5cGVcIn0pKGVlPWUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kfHwoZS5UeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQ9e30pKTt2YXIgaGU7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5GdW5jdGlvblNjb3BlZFZhcmlhYmxlPTFdPVwiRnVuY3Rpb25TY29wZWRWYXJpYWJsZVwiLG5bbi5CbG9ja1Njb3BlZFZhcmlhYmxlPTJdPVwiQmxvY2tTY29wZWRWYXJpYWJsZVwiLG5bbi5Qcm9wZXJ0eT00XT1cIlByb3BlcnR5XCIsbltuLkVudW1NZW1iZXI9OF09XCJFbnVtTWVtYmVyXCIsbltuLkZ1bmN0aW9uPTE2XT1cIkZ1bmN0aW9uXCIsbltuLkNsYXNzPTMyXT1cIkNsYXNzXCIsbltuLkludGVyZmFjZT02NF09XCJJbnRlcmZhY2VcIixuW24uQ29uc3RFbnVtPTEyOF09XCJDb25zdEVudW1cIixuW24uUmVndWxhckVudW09MjU2XT1cIlJlZ3VsYXJFbnVtXCIsbltuLlZhbHVlTW9kdWxlPTUxMl09XCJWYWx1ZU1vZHVsZVwiLG5bbi5OYW1lc3BhY2VNb2R1bGU9MTAyNF09XCJOYW1lc3BhY2VNb2R1bGVcIixuW24uVHlwZUxpdGVyYWw9MjA0OF09XCJUeXBlTGl0ZXJhbFwiLG5bbi5PYmplY3RMaXRlcmFsPTQwOTZdPVwiT2JqZWN0TGl0ZXJhbFwiLG5bbi5NZXRob2Q9ODE5Ml09XCJNZXRob2RcIixuW24uQ29uc3RydWN0b3I9MTYzODRdPVwiQ29uc3RydWN0b3JcIixuW24uR2V0QWNjZXNzb3I9MzI3NjhdPVwiR2V0QWNjZXNzb3JcIixuW24uU2V0QWNjZXNzb3I9NjU1MzZdPVwiU2V0QWNjZXNzb3JcIixuW24uU2lnbmF0dXJlPTEzMTA3Ml09XCJTaWduYXR1cmVcIixuW24uVHlwZVBhcmFtZXRlcj0yNjIxNDRdPVwiVHlwZVBhcmFtZXRlclwiLG5bbi5UeXBlQWxpYXM9NTI0Mjg4XT1cIlR5cGVBbGlhc1wiLG5bbi5FeHBvcnRWYWx1ZT0xMDQ4NTc2XT1cIkV4cG9ydFZhbHVlXCIsbltuLkFsaWFzPTIwOTcxNTJdPVwiQWxpYXNcIixuW24uUHJvdG90eXBlPTQxOTQzMDRdPVwiUHJvdG90eXBlXCIsbltuLkV4cG9ydFN0YXI9ODM4ODYwOF09XCJFeHBvcnRTdGFyXCIsbltuLk9wdGlvbmFsPTE2Nzc3MjE2XT1cIk9wdGlvbmFsXCIsbltuLlRyYW5zaWVudD0zMzU1NDQzMl09XCJUcmFuc2llbnRcIixuW24uQXNzaWdubWVudD02NzEwODg2NF09XCJBc3NpZ25tZW50XCIsbltuLk1vZHVsZUV4cG9ydHM9MTM0MjE3NzI4XT1cIk1vZHVsZUV4cG9ydHNcIixuW24uQWxsPTY3MTA4ODYzXT1cIkFsbFwiLG5bbi5FbnVtPTM4NF09XCJFbnVtXCIsbltuLlZhcmlhYmxlPTNdPVwiVmFyaWFibGVcIixuW24uVmFsdWU9MTExNTUxXT1cIlZhbHVlXCIsbltuLlR5cGU9Nzg4OTY4XT1cIlR5cGVcIixuW24uTmFtZXNwYWNlPTE5MjBdPVwiTmFtZXNwYWNlXCIsbltuLk1vZHVsZT0xNTM2XT1cIk1vZHVsZVwiLG5bbi5BY2Nlc3Nvcj05ODMwNF09XCJBY2Nlc3NvclwiLG5bbi5GdW5jdGlvblNjb3BlZFZhcmlhYmxlRXhjbHVkZXM9MTExNTUwXT1cIkZ1bmN0aW9uU2NvcGVkVmFyaWFibGVFeGNsdWRlc1wiLG5bbi5CbG9ja1Njb3BlZFZhcmlhYmxlRXhjbHVkZXM9MTExNTUxXT1cIkJsb2NrU2NvcGVkVmFyaWFibGVFeGNsdWRlc1wiLG5bbi5QYXJhbWV0ZXJFeGNsdWRlcz0xMTE1NTFdPVwiUGFyYW1ldGVyRXhjbHVkZXNcIixuW24uUHJvcGVydHlFeGNsdWRlcz0wXT1cIlByb3BlcnR5RXhjbHVkZXNcIixuW24uRW51bU1lbWJlckV4Y2x1ZGVzPTkwMDA5NV09XCJFbnVtTWVtYmVyRXhjbHVkZXNcIixuW24uRnVuY3Rpb25FeGNsdWRlcz0xMTA5OTFdPVwiRnVuY3Rpb25FeGNsdWRlc1wiLG5bbi5DbGFzc0V4Y2x1ZGVzPTg5OTUwM109XCJDbGFzc0V4Y2x1ZGVzXCIsbltuLkludGVyZmFjZUV4Y2x1ZGVzPTc4ODg3Ml09XCJJbnRlcmZhY2VFeGNsdWRlc1wiLG5bbi5SZWd1bGFyRW51bUV4Y2x1ZGVzPTg5OTMyN109XCJSZWd1bGFyRW51bUV4Y2x1ZGVzXCIsbltuLkNvbnN0RW51bUV4Y2x1ZGVzPTg5OTk2N109XCJDb25zdEVudW1FeGNsdWRlc1wiLG5bbi5WYWx1ZU1vZHVsZUV4Y2x1ZGVzPTExMDczNV09XCJWYWx1ZU1vZHVsZUV4Y2x1ZGVzXCIsbltuLk5hbWVzcGFjZU1vZHVsZUV4Y2x1ZGVzPTBdPVwiTmFtZXNwYWNlTW9kdWxlRXhjbHVkZXNcIixuW24uTWV0aG9kRXhjbHVkZXM9MTAzMzU5XT1cIk1ldGhvZEV4Y2x1ZGVzXCIsbltuLkdldEFjY2Vzc29yRXhjbHVkZXM9NDYwMTVdPVwiR2V0QWNjZXNzb3JFeGNsdWRlc1wiLG5bbi5TZXRBY2Nlc3NvckV4Y2x1ZGVzPTc4NzgzXT1cIlNldEFjY2Vzc29yRXhjbHVkZXNcIixuW24uVHlwZVBhcmFtZXRlckV4Y2x1ZGVzPTUyNjgyNF09XCJUeXBlUGFyYW1ldGVyRXhjbHVkZXNcIixuW24uVHlwZUFsaWFzRXhjbHVkZXM9Nzg4OTY4XT1cIlR5cGVBbGlhc0V4Y2x1ZGVzXCIsbltuLkFsaWFzRXhjbHVkZXM9MjA5NzE1Ml09XCJBbGlhc0V4Y2x1ZGVzXCIsbltuLk1vZHVsZU1lbWJlcj0yNjIzNDc1XT1cIk1vZHVsZU1lbWJlclwiLG5bbi5FeHBvcnRIYXNMb2NhbD05NDRdPVwiRXhwb3J0SGFzTG9jYWxcIixuW24uQmxvY2tTY29wZWQ9NDE4XT1cIkJsb2NrU2NvcGVkXCIsbltuLlByb3BlcnR5T3JBY2Nlc3Nvcj05ODMwOF09XCJQcm9wZXJ0eU9yQWNjZXNzb3JcIixuW24uQ2xhc3NNZW1iZXI9MTA2NTAwXT1cIkNsYXNzTWVtYmVyXCIsbltuLkV4cG9ydFN1cHBvcnRzRGVmYXVsdE1vZGlmaWVyPTExMl09XCJFeHBvcnRTdXBwb3J0c0RlZmF1bHRNb2RpZmllclwiLG5bbi5FeHBvcnREb2VzTm90U3VwcG9ydERlZmF1bHRNb2RpZmllcj0tMTEzXT1cIkV4cG9ydERvZXNOb3RTdXBwb3J0RGVmYXVsdE1vZGlmaWVyXCIsbltuLkNsYXNzaWZpYWJsZT0yODg1NjAwXT1cIkNsYXNzaWZpYWJsZVwiLG5bbi5MYXRlQmluZGluZ0NvbnRhaW5lcj02MjU2XT1cIkxhdGVCaW5kaW5nQ29udGFpbmVyXCJ9KShoZT1lLlN5bWJvbEZsYWdzfHwoZS5TeW1ib2xGbGFncz17fSkpO3ZhciBGOyhmdW5jdGlvbihuKXtuW24uTnVtZXJpYz0wXT1cIk51bWVyaWNcIixuW24uTGl0ZXJhbD0xXT1cIkxpdGVyYWxcIn0pKEY9ZS5FbnVtS2luZHx8KGUuRW51bUtpbmQ9e30pKTt2YXIgeDsoZnVuY3Rpb24obil7bltuLkluc3RhbnRpYXRlZD0xXT1cIkluc3RhbnRpYXRlZFwiLG5bbi5TeW50aGV0aWNQcm9wZXJ0eT0yXT1cIlN5bnRoZXRpY1Byb3BlcnR5XCIsbltuLlN5bnRoZXRpY01ldGhvZD00XT1cIlN5bnRoZXRpY01ldGhvZFwiLG5bbi5SZWFkb25seT04XT1cIlJlYWRvbmx5XCIsbltuLlJlYWRQYXJ0aWFsPTE2XT1cIlJlYWRQYXJ0aWFsXCIsbltuLldyaXRlUGFydGlhbD0zMl09XCJXcml0ZVBhcnRpYWxcIixuW24uSGFzTm9uVW5pZm9ybVR5cGU9NjRdPVwiSGFzTm9uVW5pZm9ybVR5cGVcIixuW24uSGFzTGl0ZXJhbFR5cGU9MTI4XT1cIkhhc0xpdGVyYWxUeXBlXCIsbltuLkNvbnRhaW5zUHVibGljPTI1Nl09XCJDb250YWluc1B1YmxpY1wiLG5bbi5Db250YWluc1Byb3RlY3RlZD01MTJdPVwiQ29udGFpbnNQcm90ZWN0ZWRcIixuW24uQ29udGFpbnNQcml2YXRlPTEwMjRdPVwiQ29udGFpbnNQcml2YXRlXCIsbltuLkNvbnRhaW5zU3RhdGljPTIwNDhdPVwiQ29udGFpbnNTdGF0aWNcIixuW24uTGF0ZT00MDk2XT1cIkxhdGVcIixuW24uUmV2ZXJzZU1hcHBlZD04MTkyXT1cIlJldmVyc2VNYXBwZWRcIixuW24uT3B0aW9uYWxQYXJhbWV0ZXI9MTYzODRdPVwiT3B0aW9uYWxQYXJhbWV0ZXJcIixuW24uUmVzdFBhcmFtZXRlcj0zMjc2OF09XCJSZXN0UGFyYW1ldGVyXCIsbltuLkRlZmVycmVkVHlwZT02NTUzNl09XCJEZWZlcnJlZFR5cGVcIixuW24uSGFzTmV2ZXJUeXBlPTEzMTA3Ml09XCJIYXNOZXZlclR5cGVcIixuW24uTWFwcGVkPTI2MjE0NF09XCJNYXBwZWRcIixuW24uU3RyaXBPcHRpb25hbD01MjQyODhdPVwiU3RyaXBPcHRpb25hbFwiLG5bbi5VbnJlc29sdmVkPTEwNDg1NzZdPVwiVW5yZXNvbHZlZFwiLG5bbi5TeW50aGV0aWM9Nl09XCJTeW50aGV0aWNcIixuW24uRGlzY3JpbWluYW50PTE5Ml09XCJEaXNjcmltaW5hbnRcIixuW24uUGFydGlhbD00OF09XCJQYXJ0aWFsXCJ9KSh4PWUuQ2hlY2tGbGFnc3x8KGUuQ2hlY2tGbGFncz17fSkpO3ZhciBYOyhmdW5jdGlvbihuKXtuLkNhbGw9XCJfX2NhbGxcIixuLkNvbnN0cnVjdG9yPVwiX19jb25zdHJ1Y3RvclwiLG4uTmV3PVwiX19uZXdcIixuLkluZGV4PVwiX19pbmRleFwiLG4uRXhwb3J0U3Rhcj1cIl9fZXhwb3J0XCIsbi5HbG9iYWw9XCJfX2dsb2JhbFwiLG4uTWlzc2luZz1cIl9fbWlzc2luZ1wiLG4uVHlwZT1cIl9fdHlwZVwiLG4uT2JqZWN0PVwiX19vYmplY3RcIixuLkpTWEF0dHJpYnV0ZXM9XCJfX2pzeEF0dHJpYnV0ZXNcIixuLkNsYXNzPVwiX19jbGFzc1wiLG4uRnVuY3Rpb249XCJfX2Z1bmN0aW9uXCIsbi5Db21wdXRlZD1cIl9fY29tcHV0ZWRcIixuLlJlc29sdmluZz1cIl9fcmVzb2x2aW5nX19cIixuLkV4cG9ydEVxdWFscz1cImV4cG9ydD1cIixuLkRlZmF1bHQ9XCJkZWZhdWx0XCIsbi5UaGlzPVwidGhpc1wifSkoWD1lLkludGVybmFsU3ltYm9sTmFtZXx8KGUuSW50ZXJuYWxTeW1ib2xOYW1lPXt9KSk7dmFyICQ7KGZ1bmN0aW9uKG4pe25bbi5UeXBlQ2hlY2tlZD0xXT1cIlR5cGVDaGVja2VkXCIsbltuLkxleGljYWxUaGlzPTJdPVwiTGV4aWNhbFRoaXNcIixuW24uQ2FwdHVyZVRoaXM9NF09XCJDYXB0dXJlVGhpc1wiLG5bbi5DYXB0dXJlTmV3VGFyZ2V0PThdPVwiQ2FwdHVyZU5ld1RhcmdldFwiLG5bbi5TdXBlckluc3RhbmNlPTI1Nl09XCJTdXBlckluc3RhbmNlXCIsbltuLlN1cGVyU3RhdGljPTUxMl09XCJTdXBlclN0YXRpY1wiLG5bbi5Db250ZXh0Q2hlY2tlZD0xMDI0XT1cIkNvbnRleHRDaGVja2VkXCIsbltuLkFzeW5jTWV0aG9kV2l0aFN1cGVyPTIwNDhdPVwiQXN5bmNNZXRob2RXaXRoU3VwZXJcIixuW24uQXN5bmNNZXRob2RXaXRoU3VwZXJCaW5kaW5nPTQwOTZdPVwiQXN5bmNNZXRob2RXaXRoU3VwZXJCaW5kaW5nXCIsbltuLkNhcHR1cmVBcmd1bWVudHM9ODE5Ml09XCJDYXB0dXJlQXJndW1lbnRzXCIsbltuLkVudW1WYWx1ZXNDb21wdXRlZD0xNjM4NF09XCJFbnVtVmFsdWVzQ29tcHV0ZWRcIixuW24uTGV4aWNhbE1vZHVsZU1lcmdlc1dpdGhDbGFzcz0zMjc2OF09XCJMZXhpY2FsTW9kdWxlTWVyZ2VzV2l0aENsYXNzXCIsbltuLkxvb3BXaXRoQ2FwdHVyZWRCbG9ja1Njb3BlZEJpbmRpbmc9NjU1MzZdPVwiTG9vcFdpdGhDYXB0dXJlZEJsb2NrU2NvcGVkQmluZGluZ1wiLG5bbi5Db250YWluc0NhcHR1cmVkQmxvY2tTY29wZUJpbmRpbmc9MTMxMDcyXT1cIkNvbnRhaW5zQ2FwdHVyZWRCbG9ja1Njb3BlQmluZGluZ1wiLG5bbi5DYXB0dXJlZEJsb2NrU2NvcGVkQmluZGluZz0yNjIxNDRdPVwiQ2FwdHVyZWRCbG9ja1Njb3BlZEJpbmRpbmdcIixuW24uQmxvY2tTY29wZWRCaW5kaW5nSW5Mb29wPTUyNDI4OF09XCJCbG9ja1Njb3BlZEJpbmRpbmdJbkxvb3BcIixuW24uQ2xhc3NXaXRoQm9keVNjb3BlZENsYXNzQmluZGluZz0xMDQ4NTc2XT1cIkNsYXNzV2l0aEJvZHlTY29wZWRDbGFzc0JpbmRpbmdcIixuW24uQm9keVNjb3BlZENsYXNzQmluZGluZz0yMDk3MTUyXT1cIkJvZHlTY29wZWRDbGFzc0JpbmRpbmdcIixuW24uTmVlZHNMb29wT3V0UGFyYW1ldGVyPTQxOTQzMDRdPVwiTmVlZHNMb29wT3V0UGFyYW1ldGVyXCIsbltuLkFzc2lnbm1lbnRzTWFya2VkPTgzODg2MDhdPVwiQXNzaWdubWVudHNNYXJrZWRcIixuW24uQ2xhc3NXaXRoQ29uc3RydWN0b3JSZWZlcmVuY2U9MTY3NzcyMTZdPVwiQ2xhc3NXaXRoQ29uc3RydWN0b3JSZWZlcmVuY2VcIixuW24uQ29uc3RydWN0b3JSZWZlcmVuY2VJbkNsYXNzPTMzNTU0NDMyXT1cIkNvbnN0cnVjdG9yUmVmZXJlbmNlSW5DbGFzc1wiLG5bbi5Db250YWluc0NsYXNzV2l0aFByaXZhdGVJZGVudGlmaWVycz02NzEwODg2NF09XCJDb250YWluc0NsYXNzV2l0aFByaXZhdGVJZGVudGlmaWVyc1wiLG5bbi5Db250YWluc1N1cGVyUHJvcGVydHlJblN0YXRpY0luaXRpYWxpemVyPTEzNDIxNzcyOF09XCJDb250YWluc1N1cGVyUHJvcGVydHlJblN0YXRpY0luaXRpYWxpemVyXCIsbltuLkluQ2hlY2tJZGVudGlmaWVyPTI2ODQzNTQ1Nl09XCJJbkNoZWNrSWRlbnRpZmllclwifSkoJD1lLk5vZGVDaGVja0ZsYWdzfHwoZS5Ob2RlQ2hlY2tGbGFncz17fSkpO3ZhciBBOyhmdW5jdGlvbihuKXtuW24uQW55PTFdPVwiQW55XCIsbltuLlVua25vd249Ml09XCJVbmtub3duXCIsbltuLlN0cmluZz00XT1cIlN0cmluZ1wiLG5bbi5OdW1iZXI9OF09XCJOdW1iZXJcIixuW24uQm9vbGVhbj0xNl09XCJCb29sZWFuXCIsbltuLkVudW09MzJdPVwiRW51bVwiLG5bbi5CaWdJbnQ9NjRdPVwiQmlnSW50XCIsbltuLlN0cmluZ0xpdGVyYWw9MTI4XT1cIlN0cmluZ0xpdGVyYWxcIixuW24uTnVtYmVyTGl0ZXJhbD0yNTZdPVwiTnVtYmVyTGl0ZXJhbFwiLG5bbi5Cb29sZWFuTGl0ZXJhbD01MTJdPVwiQm9vbGVhbkxpdGVyYWxcIixuW24uRW51bUxpdGVyYWw9MTAyNF09XCJFbnVtTGl0ZXJhbFwiLG5bbi5CaWdJbnRMaXRlcmFsPTIwNDhdPVwiQmlnSW50TGl0ZXJhbFwiLG5bbi5FU1N5bWJvbD00MDk2XT1cIkVTU3ltYm9sXCIsbltuLlVuaXF1ZUVTU3ltYm9sPTgxOTJdPVwiVW5pcXVlRVNTeW1ib2xcIixuW24uVm9pZD0xNjM4NF09XCJWb2lkXCIsbltuLlVuZGVmaW5lZD0zMjc2OF09XCJVbmRlZmluZWRcIixuW24uTnVsbD02NTUzNl09XCJOdWxsXCIsbltuLk5ldmVyPTEzMTA3Ml09XCJOZXZlclwiLG5bbi5UeXBlUGFyYW1ldGVyPTI2MjE0NF09XCJUeXBlUGFyYW1ldGVyXCIsbltuLk9iamVjdD01MjQyODhdPVwiT2JqZWN0XCIsbltuLlVuaW9uPTEwNDg1NzZdPVwiVW5pb25cIixuW24uSW50ZXJzZWN0aW9uPTIwOTcxNTJdPVwiSW50ZXJzZWN0aW9uXCIsbltuLkluZGV4PTQxOTQzMDRdPVwiSW5kZXhcIixuW24uSW5kZXhlZEFjY2Vzcz04Mzg4NjA4XT1cIkluZGV4ZWRBY2Nlc3NcIixuW24uQ29uZGl0aW9uYWw9MTY3NzcyMTZdPVwiQ29uZGl0aW9uYWxcIixuW24uU3Vic3RpdHV0aW9uPTMzNTU0NDMyXT1cIlN1YnN0aXR1dGlvblwiLG5bbi5Ob25QcmltaXRpdmU9NjcxMDg4NjRdPVwiTm9uUHJpbWl0aXZlXCIsbltuLlRlbXBsYXRlTGl0ZXJhbD0xMzQyMTc3MjhdPVwiVGVtcGxhdGVMaXRlcmFsXCIsbltuLlN0cmluZ01hcHBpbmc9MjY4NDM1NDU2XT1cIlN0cmluZ01hcHBpbmdcIixuW24uQW55T3JVbmtub3duPTNdPVwiQW55T3JVbmtub3duXCIsbltuLk51bGxhYmxlPTk4MzA0XT1cIk51bGxhYmxlXCIsbltuLkxpdGVyYWw9Mjk0NF09XCJMaXRlcmFsXCIsbltuLlVuaXQ9MTA5NDQwXT1cIlVuaXRcIixuW24uU3RyaW5nT3JOdW1iZXJMaXRlcmFsPTM4NF09XCJTdHJpbmdPck51bWJlckxpdGVyYWxcIixuW24uU3RyaW5nT3JOdW1iZXJMaXRlcmFsT3JVbmlxdWU9ODU3Nl09XCJTdHJpbmdPck51bWJlckxpdGVyYWxPclVuaXF1ZVwiLG5bbi5EZWZpbml0ZWx5RmFsc3k9MTE3NjMyXT1cIkRlZmluaXRlbHlGYWxzeVwiLG5bbi5Qb3NzaWJseUZhbHN5PTExNzcyNF09XCJQb3NzaWJseUZhbHN5XCIsbltuLkludHJpbnNpYz02NzM1OTMyN109XCJJbnRyaW5zaWNcIixuW24uUHJpbWl0aXZlPTEzMTA2OF09XCJQcmltaXRpdmVcIixuW24uU3RyaW5nTGlrZT00MDI2NTMzMTZdPVwiU3RyaW5nTGlrZVwiLG5bbi5OdW1iZXJMaWtlPTI5Nl09XCJOdW1iZXJMaWtlXCIsbltuLkJpZ0ludExpa2U9MjExMl09XCJCaWdJbnRMaWtlXCIsbltuLkJvb2xlYW5MaWtlPTUyOF09XCJCb29sZWFuTGlrZVwiLG5bbi5FbnVtTGlrZT0xMDU2XT1cIkVudW1MaWtlXCIsbltuLkVTU3ltYm9sTGlrZT0xMjI4OF09XCJFU1N5bWJvbExpa2VcIixuW24uVm9pZExpa2U9NDkxNTJdPVwiVm9pZExpa2VcIixuW24uRGVmaW5pdGVseU5vbk51bGxhYmxlPTQ3MDMwMjcxNl09XCJEZWZpbml0ZWx5Tm9uTnVsbGFibGVcIixuW24uRGlzam9pbnREb21haW5zPTQ2OTg5MjA5Ml09XCJEaXNqb2ludERvbWFpbnNcIixuW24uVW5pb25PckludGVyc2VjdGlvbj0zMTQ1NzI4XT1cIlVuaW9uT3JJbnRlcnNlY3Rpb25cIixuW24uU3RydWN0dXJlZFR5cGU9MzY3MDAxNl09XCJTdHJ1Y3R1cmVkVHlwZVwiLG5bbi5UeXBlVmFyaWFibGU9ODY1MDc1Ml09XCJUeXBlVmFyaWFibGVcIixuW24uSW5zdGFudGlhYmxlTm9uUHJpbWl0aXZlPTU4OTgyNDAwXT1cIkluc3RhbnRpYWJsZU5vblByaW1pdGl2ZVwiLG5bbi5JbnN0YW50aWFibGVQcmltaXRpdmU9NDA2ODQ3NDg4XT1cIkluc3RhbnRpYWJsZVByaW1pdGl2ZVwiLG5bbi5JbnN0YW50aWFibGU9NDY1ODI5ODg4XT1cIkluc3RhbnRpYWJsZVwiLG5bbi5TdHJ1Y3R1cmVkT3JJbnN0YW50aWFibGU9NDY5NDk5OTA0XT1cIlN0cnVjdHVyZWRPckluc3RhbnRpYWJsZVwiLG5bbi5PYmplY3RGbGFnc1R5cGU9Mzg5OTM5M109XCJPYmplY3RGbGFnc1R5cGVcIixuW24uU2ltcGxpZmlhYmxlPTI1MTY1ODI0XT1cIlNpbXBsaWZpYWJsZVwiLG5bbi5TaW5nbGV0b249NjczNTg4MTVdPVwiU2luZ2xldG9uXCIsbltuLk5hcnJvd2FibGU9NTM2NjI0MTI3XT1cIk5hcnJvd2FibGVcIixuW24uSW5jbHVkZXNNYXNrPTIwNTI1ODc1MV09XCJJbmNsdWRlc01hc2tcIixuW24uSW5jbHVkZXNNaXNzaW5nVHlwZT0yNjIxNDRdPVwiSW5jbHVkZXNNaXNzaW5nVHlwZVwiLG5bbi5JbmNsdWRlc05vbldpZGVuaW5nVHlwZT00MTk0MzA0XT1cIkluY2x1ZGVzTm9uV2lkZW5pbmdUeXBlXCIsbltuLkluY2x1ZGVzV2lsZGNhcmQ9ODM4ODYwOF09XCJJbmNsdWRlc1dpbGRjYXJkXCIsbltuLkluY2x1ZGVzRW1wdHlPYmplY3Q9MTY3NzcyMTZdPVwiSW5jbHVkZXNFbXB0eU9iamVjdFwiLG5bbi5JbmNsdWRlc0luc3RhbnRpYWJsZT0zMzU1NDQzMl09XCJJbmNsdWRlc0luc3RhbnRpYWJsZVwiLG5bbi5Ob3RQcmltaXRpdmVVbmlvbj0zNjMyMzM2M109XCJOb3RQcmltaXRpdmVVbmlvblwifSkoQT1lLlR5cGVGbGFnc3x8KGUuVHlwZUZsYWdzPXt9KSk7dmFyIHk7KGZ1bmN0aW9uKG4pe25bbi5DbGFzcz0xXT1cIkNsYXNzXCIsbltuLkludGVyZmFjZT0yXT1cIkludGVyZmFjZVwiLG5bbi5SZWZlcmVuY2U9NF09XCJSZWZlcmVuY2VcIixuW24uVHVwbGU9OF09XCJUdXBsZVwiLG5bbi5Bbm9ueW1vdXM9MTZdPVwiQW5vbnltb3VzXCIsbltuLk1hcHBlZD0zMl09XCJNYXBwZWRcIixuW24uSW5zdGFudGlhdGVkPTY0XT1cIkluc3RhbnRpYXRlZFwiLG5bbi5PYmplY3RMaXRlcmFsPTEyOF09XCJPYmplY3RMaXRlcmFsXCIsbltuLkV2b2x2aW5nQXJyYXk9MjU2XT1cIkV2b2x2aW5nQXJyYXlcIixuW24uT2JqZWN0TGl0ZXJhbFBhdHRlcm5XaXRoQ29tcHV0ZWRQcm9wZXJ0aWVzPTUxMl09XCJPYmplY3RMaXRlcmFsUGF0dGVybldpdGhDb21wdXRlZFByb3BlcnRpZXNcIixuW24uUmV2ZXJzZU1hcHBlZD0xMDI0XT1cIlJldmVyc2VNYXBwZWRcIixuW24uSnN4QXR0cmlidXRlcz0yMDQ4XT1cIkpzeEF0dHJpYnV0ZXNcIixuW24uSlNMaXRlcmFsPTQwOTZdPVwiSlNMaXRlcmFsXCIsbltuLkZyZXNoTGl0ZXJhbD04MTkyXT1cIkZyZXNoTGl0ZXJhbFwiLG5bbi5BcnJheUxpdGVyYWw9MTYzODRdPVwiQXJyYXlMaXRlcmFsXCIsbltuLlByaW1pdGl2ZVVuaW9uPTMyNzY4XT1cIlByaW1pdGl2ZVVuaW9uXCIsbltuLkNvbnRhaW5zV2lkZW5pbmdUeXBlPTY1NTM2XT1cIkNvbnRhaW5zV2lkZW5pbmdUeXBlXCIsbltuLkNvbnRhaW5zT2JqZWN0T3JBcnJheUxpdGVyYWw9MTMxMDcyXT1cIkNvbnRhaW5zT2JqZWN0T3JBcnJheUxpdGVyYWxcIixuW24uTm9uSW5mZXJyYWJsZVR5cGU9MjYyMTQ0XT1cIk5vbkluZmVycmFibGVUeXBlXCIsbltuLkNvdWxkQ29udGFpblR5cGVWYXJpYWJsZXNDb21wdXRlZD01MjQyODhdPVwiQ291bGRDb250YWluVHlwZVZhcmlhYmxlc0NvbXB1dGVkXCIsbltuLkNvdWxkQ29udGFpblR5cGVWYXJpYWJsZXM9MTA0ODU3Nl09XCJDb3VsZENvbnRhaW5UeXBlVmFyaWFibGVzXCIsbltuLkNsYXNzT3JJbnRlcmZhY2U9M109XCJDbGFzc09ySW50ZXJmYWNlXCIsbltuLlJlcXVpcmVzV2lkZW5pbmc9MTk2NjA4XT1cIlJlcXVpcmVzV2lkZW5pbmdcIixuW24uUHJvcGFnYXRpbmdGbGFncz00NTg3NTJdPVwiUHJvcGFnYXRpbmdGbGFnc1wiLG5bbi5PYmplY3RUeXBlS2luZE1hc2s9MTM0M109XCJPYmplY3RUeXBlS2luZE1hc2tcIixuW24uQ29udGFpbnNTcHJlYWQ9MjA5NzE1Ml09XCJDb250YWluc1NwcmVhZFwiLG5bbi5PYmplY3RSZXN0VHlwZT00MTk0MzA0XT1cIk9iamVjdFJlc3RUeXBlXCIsbltuLkluc3RhbnRpYXRpb25FeHByZXNzaW9uVHlwZT04Mzg4NjA4XT1cIkluc3RhbnRpYXRpb25FeHByZXNzaW9uVHlwZVwiLG5bbi5Jc0NsYXNzSW5zdGFuY2VDbG9uZT0xNjc3NzIxNl09XCJJc0NsYXNzSW5zdGFuY2VDbG9uZVwiLG5bbi5JZGVudGljYWxCYXNlVHlwZUNhbGN1bGF0ZWQ9MzM1NTQ0MzJdPVwiSWRlbnRpY2FsQmFzZVR5cGVDYWxjdWxhdGVkXCIsbltuLklkZW50aWNhbEJhc2VUeXBlRXhpc3RzPTY3MTA4ODY0XT1cIklkZW50aWNhbEJhc2VUeXBlRXhpc3RzXCIsbltuLklzR2VuZXJpY1R5cGVDb21wdXRlZD0yMDk3MTUyXT1cIklzR2VuZXJpY1R5cGVDb21wdXRlZFwiLG5bbi5Jc0dlbmVyaWNPYmplY3RUeXBlPTQxOTQzMDRdPVwiSXNHZW5lcmljT2JqZWN0VHlwZVwiLG5bbi5Jc0dlbmVyaWNJbmRleFR5cGU9ODM4ODYwOF09XCJJc0dlbmVyaWNJbmRleFR5cGVcIixuW24uSXNHZW5lcmljVHlwZT0xMjU4MjkxMl09XCJJc0dlbmVyaWNUeXBlXCIsbltuLkNvbnRhaW5zSW50ZXJzZWN0aW9ucz0xNjc3NzIxNl09XCJDb250YWluc0ludGVyc2VjdGlvbnNcIixuW24uSXNOZXZlckludGVyc2VjdGlvbkNvbXB1dGVkPTE2Nzc3MjE2XT1cIklzTmV2ZXJJbnRlcnNlY3Rpb25Db21wdXRlZFwiLG5bbi5Jc05ldmVySW50ZXJzZWN0aW9uPTMzNTU0NDMyXT1cIklzTmV2ZXJJbnRlcnNlY3Rpb25cIn0pKHk9ZS5PYmplY3RGbGFnc3x8KGUuT2JqZWN0RmxhZ3M9e30pKTt2YXIgVjsoZnVuY3Rpb24obil7bltuLkludmFyaWFudD0wXT1cIkludmFyaWFudFwiLG5bbi5Db3ZhcmlhbnQ9MV09XCJDb3ZhcmlhbnRcIixuW24uQ29udHJhdmFyaWFudD0yXT1cIkNvbnRyYXZhcmlhbnRcIixuW24uQml2YXJpYW50PTNdPVwiQml2YXJpYW50XCIsbltuLkluZGVwZW5kZW50PTRdPVwiSW5kZXBlbmRlbnRcIixuW24uVmFyaWFuY2VNYXNrPTddPVwiVmFyaWFuY2VNYXNrXCIsbltuLlVubWVhc3VyYWJsZT04XT1cIlVubWVhc3VyYWJsZVwiLG5bbi5VbnJlbGlhYmxlPTE2XT1cIlVucmVsaWFibGVcIixuW24uQWxsb3dzU3RydWN0dXJhbEZhbGxiYWNrPTI0XT1cIkFsbG93c1N0cnVjdHVyYWxGYWxsYmFja1wifSkoVj1lLlZhcmlhbmNlRmxhZ3N8fChlLlZhcmlhbmNlRmxhZ3M9e30pKTt2YXIgTDsoZnVuY3Rpb24obil7bltuLlJlcXVpcmVkPTFdPVwiUmVxdWlyZWRcIixuW24uT3B0aW9uYWw9Ml09XCJPcHRpb25hbFwiLG5bbi5SZXN0PTRdPVwiUmVzdFwiLG5bbi5WYXJpYWRpYz04XT1cIlZhcmlhZGljXCIsbltuLkZpeGVkPTNdPVwiRml4ZWRcIixuW24uVmFyaWFibGU9MTJdPVwiVmFyaWFibGVcIixuW24uTm9uUmVxdWlyZWQ9MTRdPVwiTm9uUmVxdWlyZWRcIixuW24uTm9uUmVzdD0xMV09XCJOb25SZXN0XCJ9KShMPWUuRWxlbWVudEZsYWdzfHwoZS5FbGVtZW50RmxhZ3M9e30pKTt2YXIgUDsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLkluY2x1ZGVVbmRlZmluZWQ9MV09XCJJbmNsdWRlVW5kZWZpbmVkXCIsbltuLk5vSW5kZXhTaWduYXR1cmVzPTJdPVwiTm9JbmRleFNpZ25hdHVyZXNcIixuW24uV3JpdGluZz00XT1cIldyaXRpbmdcIixuW24uQ2FjaGVTeW1ib2w9OF09XCJDYWNoZVN5bWJvbFwiLG5bbi5Ob1R1cGxlQm91bmRzQ2hlY2s9MTZdPVwiTm9UdXBsZUJvdW5kc0NoZWNrXCIsbltuLkV4cHJlc3Npb25Qb3NpdGlvbj0zMl09XCJFeHByZXNzaW9uUG9zaXRpb25cIixuW24uUmVwb3J0RGVwcmVjYXRlZD02NF09XCJSZXBvcnREZXByZWNhdGVkXCIsbltuLlN1cHByZXNzTm9JbXBsaWNpdEFueUVycm9yPTEyOF09XCJTdXBwcmVzc05vSW1wbGljaXRBbnlFcnJvclwiLG5bbi5Db250ZXh0dWFsPTI1Nl09XCJDb250ZXh0dWFsXCIsbltuLlBlcnNpc3RlbnQ9MV09XCJQZXJzaXN0ZW50XCJ9KShQPWUuQWNjZXNzRmxhZ3N8fChlLkFjY2Vzc0ZsYWdzPXt9KSk7dmFyIGs7KGZ1bmN0aW9uKG4pe25bbi5Db21wb25lbnQ9MF09XCJDb21wb25lbnRcIixuW24uRnVuY3Rpb249MV09XCJGdW5jdGlvblwiLG5bbi5NaXhlZD0yXT1cIk1peGVkXCJ9KShrPWUuSnN4UmVmZXJlbmNlS2luZHx8KGUuSnN4UmVmZXJlbmNlS2luZD17fSkpO3ZhciBZOyhmdW5jdGlvbihuKXtuW24uQ2FsbD0wXT1cIkNhbGxcIixuW24uQ29uc3RydWN0PTFdPVwiQ29uc3RydWN0XCJ9KShZPWUuU2lnbmF0dXJlS2luZHx8KGUuU2lnbmF0dXJlS2luZD17fSkpO3ZhciBVOyhmdW5jdGlvbihuKXtuW24uTm9uZT0wXT1cIk5vbmVcIixuW24uSGFzUmVzdFBhcmFtZXRlcj0xXT1cIkhhc1Jlc3RQYXJhbWV0ZXJcIixuW24uSGFzTGl0ZXJhbFR5cGVzPTJdPVwiSGFzTGl0ZXJhbFR5cGVzXCIsbltuLkFic3RyYWN0PTRdPVwiQWJzdHJhY3RcIixuW24uSXNJbm5lckNhbGxDaGFpbj04XT1cIklzSW5uZXJDYWxsQ2hhaW5cIixuW24uSXNPdXRlckNhbGxDaGFpbj0xNl09XCJJc091dGVyQ2FsbENoYWluXCIsbltuLklzVW50eXBlZFNpZ25hdHVyZUluSlNGaWxlPTMyXT1cIklzVW50eXBlZFNpZ25hdHVyZUluSlNGaWxlXCIsbltuLlByb3BhZ2F0aW5nRmxhZ3M9MzldPVwiUHJvcGFnYXRpbmdGbGFnc1wiLG5bbi5DYWxsQ2hhaW5GbGFncz0yNF09XCJDYWxsQ2hhaW5GbGFnc1wifSkoVT1lLlNpZ25hdHVyZUZsYWdzfHwoZS5TaWduYXR1cmVGbGFncz17fSkpO3ZhciBqOyhmdW5jdGlvbihuKXtuW24uU3RyaW5nPTBdPVwiU3RyaW5nXCIsbltuLk51bWJlcj0xXT1cIk51bWJlclwifSkoaj1lLkluZGV4S2luZHx8KGUuSW5kZXhLaW5kPXt9KSk7dmFyIEg7KGZ1bmN0aW9uKG4pe25bbi5TaW1wbGU9MF09XCJTaW1wbGVcIixuW24uQXJyYXk9MV09XCJBcnJheVwiLG5bbi5GdW5jdGlvbj0yXT1cIkZ1bmN0aW9uXCIsbltuLkNvbXBvc2l0ZT0zXT1cIkNvbXBvc2l0ZVwiLG5bbi5NZXJnZWQ9NF09XCJNZXJnZWRcIn0pKEg9ZS5UeXBlTWFwS2luZHx8KGUuVHlwZU1hcEtpbmQ9e30pKTt2YXIgSTsoZnVuY3Rpb24obil7bltuLk5ha2VkVHlwZVZhcmlhYmxlPTFdPVwiTmFrZWRUeXBlVmFyaWFibGVcIixuW24uU3BlY3VsYXRpdmVUdXBsZT0yXT1cIlNwZWN1bGF0aXZlVHVwbGVcIixuW24uU3Vic3RpdHV0ZVNvdXJjZT00XT1cIlN1YnN0aXR1dGVTb3VyY2VcIixuW24uSG9tb21vcnBoaWNNYXBwZWRUeXBlPThdPVwiSG9tb21vcnBoaWNNYXBwZWRUeXBlXCIsbltuLlBhcnRpYWxIb21vbW9ycGhpY01hcHBlZFR5cGU9MTZdPVwiUGFydGlhbEhvbW9tb3JwaGljTWFwcGVkVHlwZVwiLG5bbi5NYXBwZWRUeXBlQ29uc3RyYWludD0zMl09XCJNYXBwZWRUeXBlQ29uc3RyYWludFwiLG5bbi5Db250cmF2YXJpYW50Q29uZGl0aW9uYWw9NjRdPVwiQ29udHJhdmFyaWFudENvbmRpdGlvbmFsXCIsbltuLlJldHVyblR5cGU9MTI4XT1cIlJldHVyblR5cGVcIixuW24uTGl0ZXJhbEtleW9mPTI1Nl09XCJMaXRlcmFsS2V5b2ZcIixuW24uTm9Db25zdHJhaW50cz01MTJdPVwiTm9Db25zdHJhaW50c1wiLG5bbi5BbHdheXNTdHJpY3Q9MTAyNF09XCJBbHdheXNTdHJpY3RcIixuW24uTWF4VmFsdWU9MjA0OF09XCJNYXhWYWx1ZVwiLG5bbi5Qcmlvcml0eUltcGxpZXNDb21iaW5hdGlvbj00MTZdPVwiUHJpb3JpdHlJbXBsaWVzQ29tYmluYXRpb25cIixuW24uQ2lyY3VsYXJpdHk9LTFdPVwiQ2lyY3VsYXJpdHlcIn0pKEk9ZS5JbmZlcmVuY2VQcmlvcml0eXx8KGUuSW5mZXJlbmNlUHJpb3JpdHk9e30pKTt2YXIgbDsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLk5vRGVmYXVsdD0xXT1cIk5vRGVmYXVsdFwiLG5bbi5BbnlEZWZhdWx0PTJdPVwiQW55RGVmYXVsdFwiLG5bbi5Ta2lwcGVkR2VuZXJpY0Z1bmN0aW9uPTRdPVwiU2tpcHBlZEdlbmVyaWNGdW5jdGlvblwifSkobD1lLkluZmVyZW5jZUZsYWdzfHwoZS5JbmZlcmVuY2VGbGFncz17fSkpO3ZhciBkOyhmdW5jdGlvbihuKXtuW24uRmFsc2U9MF09XCJGYWxzZVwiLG5bbi5Vbmtub3duPTFdPVwiVW5rbm93blwiLG5bbi5NYXliZT0zXT1cIk1heWJlXCIsbltuLlRydWU9LTFdPVwiVHJ1ZVwifSkoZD1lLlRlcm5hcnl8fChlLlRlcm5hcnk9e30pKTt2YXIgRDsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLkV4cG9ydHNQcm9wZXJ0eT0xXT1cIkV4cG9ydHNQcm9wZXJ0eVwiLG5bbi5Nb2R1bGVFeHBvcnRzPTJdPVwiTW9kdWxlRXhwb3J0c1wiLG5bbi5Qcm90b3R5cGVQcm9wZXJ0eT0zXT1cIlByb3RvdHlwZVByb3BlcnR5XCIsbltuLlRoaXNQcm9wZXJ0eT00XT1cIlRoaXNQcm9wZXJ0eVwiLG5bbi5Qcm9wZXJ0eT01XT1cIlByb3BlcnR5XCIsbltuLlByb3RvdHlwZT02XT1cIlByb3RvdHlwZVwiLG5bbi5PYmplY3REZWZpbmVQcm9wZXJ0eVZhbHVlPTddPVwiT2JqZWN0RGVmaW5lUHJvcGVydHlWYWx1ZVwiLG5bbi5PYmplY3REZWZpbmVQcm9wZXJ0eUV4cG9ydHM9OF09XCJPYmplY3REZWZpbmVQcm9wZXJ0eUV4cG9ydHNcIixuW24uT2JqZWN0RGVmaW5lUHJvdG90eXBlUHJvcGVydHk9OV09XCJPYmplY3REZWZpbmVQcm90b3R5cGVQcm9wZXJ0eVwifSkoRD1lLkFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmR8fChlLkFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQ9e30pKTt2YXIgZmU7KGZ1bmN0aW9uKG4pe25bbi5XYXJuaW5nPTBdPVwiV2FybmluZ1wiLG5bbi5FcnJvcj0xXT1cIkVycm9yXCIsbltuLlN1Z2dlc3Rpb249Ml09XCJTdWdnZXN0aW9uXCIsbltuLk1lc3NhZ2U9M109XCJNZXNzYWdlXCJ9KShmZT1lLkRpYWdub3N0aWNDYXRlZ29yeXx8KGUuRGlhZ25vc3RpY0NhdGVnb3J5PXt9KSk7ZnVuY3Rpb24gZyhuLGxyKXtscj09PXZvaWQgMCYmKGxyPSEwKTt2YXIgYmU9ZmVbbi5jYXRlZ29yeV07cmV0dXJuIGxyP2JlLnRvTG93ZXJDYXNlKCk6YmV9ZS5kaWFnbm9zdGljQ2F0ZWdvcnlOYW1lPWc7dmFyIG5lOyhmdW5jdGlvbihuKXtuW24uQ2xhc3NpYz0xXT1cIkNsYXNzaWNcIixuW24uTm9kZUpzPTJdPVwiTm9kZUpzXCIsbltuLk5vZGUxNj0zXT1cIk5vZGUxNlwiLG5bbi5Ob2RlTmV4dD05OV09XCJOb2RlTmV4dFwifSkobmU9ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZHx8KGUuTW9kdWxlUmVzb2x1dGlvbktpbmQ9e30pKTt2YXIgdWU7KGZ1bmN0aW9uKG4pe25bbi5MZWdhY3k9MV09XCJMZWdhY3lcIixuW24uQXV0bz0yXT1cIkF1dG9cIixuW24uRm9yY2U9M109XCJGb3JjZVwifSkodWU9ZS5Nb2R1bGVEZXRlY3Rpb25LaW5kfHwoZS5Nb2R1bGVEZXRlY3Rpb25LaW5kPXt9KSk7dmFyIFdlOyhmdW5jdGlvbihuKXtuW24uRml4ZWRQb2xsaW5nSW50ZXJ2YWw9MF09XCJGaXhlZFBvbGxpbmdJbnRlcnZhbFwiLG5bbi5Qcmlvcml0eVBvbGxpbmdJbnRlcnZhbD0xXT1cIlByaW9yaXR5UG9sbGluZ0ludGVydmFsXCIsbltuLkR5bmFtaWNQcmlvcml0eVBvbGxpbmc9Ml09XCJEeW5hbWljUHJpb3JpdHlQb2xsaW5nXCIsbltuLkZpeGVkQ2h1bmtTaXplUG9sbGluZz0zXT1cIkZpeGVkQ2h1bmtTaXplUG9sbGluZ1wiLG5bbi5Vc2VGc0V2ZW50cz00XT1cIlVzZUZzRXZlbnRzXCIsbltuLlVzZUZzRXZlbnRzT25QYXJlbnREaXJlY3Rvcnk9NV09XCJVc2VGc0V2ZW50c09uUGFyZW50RGlyZWN0b3J5XCJ9KShXZT1lLldhdGNoRmlsZUtpbmR8fChlLldhdGNoRmlsZUtpbmQ9e30pKTt2YXIgRmU7KGZ1bmN0aW9uKG4pe25bbi5Vc2VGc0V2ZW50cz0wXT1cIlVzZUZzRXZlbnRzXCIsbltuLkZpeGVkUG9sbGluZ0ludGVydmFsPTFdPVwiRml4ZWRQb2xsaW5nSW50ZXJ2YWxcIixuW24uRHluYW1pY1ByaW9yaXR5UG9sbGluZz0yXT1cIkR5bmFtaWNQcmlvcml0eVBvbGxpbmdcIixuW24uRml4ZWRDaHVua1NpemVQb2xsaW5nPTNdPVwiRml4ZWRDaHVua1NpemVQb2xsaW5nXCJ9KShGZT1lLldhdGNoRGlyZWN0b3J5S2luZHx8KGUuV2F0Y2hEaXJlY3RvcnlLaW5kPXt9KSk7dmFyIFo7KGZ1bmN0aW9uKG4pe25bbi5GaXhlZEludGVydmFsPTBdPVwiRml4ZWRJbnRlcnZhbFwiLG5bbi5Qcmlvcml0eUludGVydmFsPTFdPVwiUHJpb3JpdHlJbnRlcnZhbFwiLG5bbi5EeW5hbWljUHJpb3JpdHk9Ml09XCJEeW5hbWljUHJpb3JpdHlcIixuW24uRml4ZWRDaHVua1NpemU9M109XCJGaXhlZENodW5rU2l6ZVwifSkoWj1lLlBvbGxpbmdXYXRjaEtpbmR8fChlLlBvbGxpbmdXYXRjaEtpbmQ9e30pKTt2YXIgQmU7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5Db21tb25KUz0xXT1cIkNvbW1vbkpTXCIsbltuLkFNRD0yXT1cIkFNRFwiLG5bbi5VTUQ9M109XCJVTURcIixuW24uU3lzdGVtPTRdPVwiU3lzdGVtXCIsbltuLkVTMjAxNT01XT1cIkVTMjAxNVwiLG5bbi5FUzIwMjA9Nl09XCJFUzIwMjBcIixuW24uRVMyMDIyPTddPVwiRVMyMDIyXCIsbltuLkVTTmV4dD05OV09XCJFU05leHRcIixuW24uTm9kZTE2PTEwMF09XCJOb2RlMTZcIixuW24uTm9kZU5leHQ9MTk5XT1cIk5vZGVOZXh0XCJ9KShCZT1lLk1vZHVsZUtpbmR8fChlLk1vZHVsZUtpbmQ9e30pKTt2YXIgZ2U7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5QcmVzZXJ2ZT0xXT1cIlByZXNlcnZlXCIsbltuLlJlYWN0PTJdPVwiUmVhY3RcIixuW24uUmVhY3ROYXRpdmU9M109XCJSZWFjdE5hdGl2ZVwiLG5bbi5SZWFjdEpTWD00XT1cIlJlYWN0SlNYXCIsbltuLlJlYWN0SlNYRGV2PTVdPVwiUmVhY3RKU1hEZXZcIn0pKGdlPWUuSnN4RW1pdHx8KGUuSnN4RW1pdD17fSkpO3ZhciBSZTsoZnVuY3Rpb24obil7bltuLlJlbW92ZT0wXT1cIlJlbW92ZVwiLG5bbi5QcmVzZXJ2ZT0xXT1cIlByZXNlcnZlXCIsbltuLkVycm9yPTJdPVwiRXJyb3JcIn0pKFJlPWUuSW1wb3J0c05vdFVzZWRBc1ZhbHVlc3x8KGUuSW1wb3J0c05vdFVzZWRBc1ZhbHVlcz17fSkpO3ZhciB6ZTsoZnVuY3Rpb24obil7bltuLkNhcnJpYWdlUmV0dXJuTGluZUZlZWQ9MF09XCJDYXJyaWFnZVJldHVybkxpbmVGZWVkXCIsbltuLkxpbmVGZWVkPTFdPVwiTGluZUZlZWRcIn0pKHplPWUuTmV3TGluZUtpbmR8fChlLk5ld0xpbmVLaW5kPXt9KSk7dmFyIEVlOyhmdW5jdGlvbihuKXtuW24uVW5rbm93bj0wXT1cIlVua25vd25cIixuW24uSlM9MV09XCJKU1wiLG5bbi5KU1g9Ml09XCJKU1hcIixuW24uVFM9M109XCJUU1wiLG5bbi5UU1g9NF09XCJUU1hcIixuW24uRXh0ZXJuYWw9NV09XCJFeHRlcm5hbFwiLG5bbi5KU09OPTZdPVwiSlNPTlwiLG5bbi5EZWZlcnJlZD03XT1cIkRlZmVycmVkXCJ9KShFZT1lLlNjcmlwdEtpbmR8fChlLlNjcmlwdEtpbmQ9e30pKTt2YXIgSGU7KGZ1bmN0aW9uKG4pe25bbi5FUzM9MF09XCJFUzNcIixuW24uRVM1PTFdPVwiRVM1XCIsbltuLkVTMjAxNT0yXT1cIkVTMjAxNVwiLG5bbi5FUzIwMTY9M109XCJFUzIwMTZcIixuW24uRVMyMDE3PTRdPVwiRVMyMDE3XCIsbltuLkVTMjAxOD01XT1cIkVTMjAxOFwiLG5bbi5FUzIwMTk9Nl09XCJFUzIwMTlcIixuW24uRVMyMDIwPTddPVwiRVMyMDIwXCIsbltuLkVTMjAyMT04XT1cIkVTMjAyMVwiLG5bbi5FUzIwMjI9OV09XCJFUzIwMjJcIixuW24uRVNOZXh0PTk5XT1cIkVTTmV4dFwiLG5bbi5KU09OPTEwMF09XCJKU09OXCIsbltuLkxhdGVzdD05OV09XCJMYXRlc3RcIn0pKEhlPWUuU2NyaXB0VGFyZ2V0fHwoZS5TY3JpcHRUYXJnZXQ9e30pKTt2YXIgcnI7KGZ1bmN0aW9uKG4pe25bbi5TdGFuZGFyZD0wXT1cIlN0YW5kYXJkXCIsbltuLkpTWD0xXT1cIkpTWFwifSkocnI9ZS5MYW5ndWFnZVZhcmlhbnR8fChlLkxhbmd1YWdlVmFyaWFudD17fSkpO3ZhciBJZTsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLlJlY3Vyc2l2ZT0xXT1cIlJlY3Vyc2l2ZVwifSkoSWU9ZS5XYXRjaERpcmVjdG9yeUZsYWdzfHwoZS5XYXRjaERpcmVjdG9yeUZsYWdzPXt9KSk7dmFyIF9lOyhmdW5jdGlvbihuKXtuW24ubnVsbENoYXJhY3Rlcj0wXT1cIm51bGxDaGFyYWN0ZXJcIixuW24ubWF4QXNjaWlDaGFyYWN0ZXI9MTI3XT1cIm1heEFzY2lpQ2hhcmFjdGVyXCIsbltuLmxpbmVGZWVkPTEwXT1cImxpbmVGZWVkXCIsbltuLmNhcnJpYWdlUmV0dXJuPTEzXT1cImNhcnJpYWdlUmV0dXJuXCIsbltuLmxpbmVTZXBhcmF0b3I9ODIzMl09XCJsaW5lU2VwYXJhdG9yXCIsbltuLnBhcmFncmFwaFNlcGFyYXRvcj04MjMzXT1cInBhcmFncmFwaFNlcGFyYXRvclwiLG5bbi5uZXh0TGluZT0xMzNdPVwibmV4dExpbmVcIixuW24uc3BhY2U9MzJdPVwic3BhY2VcIixuW24ubm9uQnJlYWtpbmdTcGFjZT0xNjBdPVwibm9uQnJlYWtpbmdTcGFjZVwiLG5bbi5lblF1YWQ9ODE5Ml09XCJlblF1YWRcIixuW24uZW1RdWFkPTgxOTNdPVwiZW1RdWFkXCIsbltuLmVuU3BhY2U9ODE5NF09XCJlblNwYWNlXCIsbltuLmVtU3BhY2U9ODE5NV09XCJlbVNwYWNlXCIsbltuLnRocmVlUGVyRW1TcGFjZT04MTk2XT1cInRocmVlUGVyRW1TcGFjZVwiLG5bbi5mb3VyUGVyRW1TcGFjZT04MTk3XT1cImZvdXJQZXJFbVNwYWNlXCIsbltuLnNpeFBlckVtU3BhY2U9ODE5OF09XCJzaXhQZXJFbVNwYWNlXCIsbltuLmZpZ3VyZVNwYWNlPTgxOTldPVwiZmlndXJlU3BhY2VcIixuW24ucHVuY3R1YXRpb25TcGFjZT04MjAwXT1cInB1bmN0dWF0aW9uU3BhY2VcIixuW24udGhpblNwYWNlPTgyMDFdPVwidGhpblNwYWNlXCIsbltuLmhhaXJTcGFjZT04MjAyXT1cImhhaXJTcGFjZVwiLG5bbi56ZXJvV2lkdGhTcGFjZT04MjAzXT1cInplcm9XaWR0aFNwYWNlXCIsbltuLm5hcnJvd05vQnJlYWtTcGFjZT04MjM5XT1cIm5hcnJvd05vQnJlYWtTcGFjZVwiLG5bbi5pZGVvZ3JhcGhpY1NwYWNlPTEyMjg4XT1cImlkZW9ncmFwaGljU3BhY2VcIixuW24ubWF0aGVtYXRpY2FsU3BhY2U9ODI4N109XCJtYXRoZW1hdGljYWxTcGFjZVwiLG5bbi5vZ2hhbT01NzYwXT1cIm9naGFtXCIsbltuLl89OTVdPVwiX1wiLG5bbi4kPTM2XT1cIiRcIixuW24uXzA9NDhdPVwiXzBcIixuW24uXzE9NDldPVwiXzFcIixuW24uXzI9NTBdPVwiXzJcIixuW24uXzM9NTFdPVwiXzNcIixuW24uXzQ9NTJdPVwiXzRcIixuW24uXzU9NTNdPVwiXzVcIixuW24uXzY9NTRdPVwiXzZcIixuW24uXzc9NTVdPVwiXzdcIixuW24uXzg9NTZdPVwiXzhcIixuW24uXzk9NTddPVwiXzlcIixuW24uYT05N109XCJhXCIsbltuLmI9OThdPVwiYlwiLG5bbi5jPTk5XT1cImNcIixuW24uZD0xMDBdPVwiZFwiLG5bbi5lPTEwMV09XCJlXCIsbltuLmY9MTAyXT1cImZcIixuW24uZz0xMDNdPVwiZ1wiLG5bbi5oPTEwNF09XCJoXCIsbltuLmk9MTA1XT1cImlcIixuW24uaj0xMDZdPVwialwiLG5bbi5rPTEwN109XCJrXCIsbltuLmw9MTA4XT1cImxcIixuW24ubT0xMDldPVwibVwiLG5bbi5uPTExMF09XCJuXCIsbltuLm89MTExXT1cIm9cIixuW24ucD0xMTJdPVwicFwiLG5bbi5xPTExM109XCJxXCIsbltuLnI9MTE0XT1cInJcIixuW24ucz0xMTVdPVwic1wiLG5bbi50PTExNl09XCJ0XCIsbltuLnU9MTE3XT1cInVcIixuW24udj0xMThdPVwidlwiLG5bbi53PTExOV09XCJ3XCIsbltuLng9MTIwXT1cInhcIixuW24ueT0xMjFdPVwieVwiLG5bbi56PTEyMl09XCJ6XCIsbltuLkE9NjVdPVwiQVwiLG5bbi5CPTY2XT1cIkJcIixuW24uQz02N109XCJDXCIsbltuLkQ9NjhdPVwiRFwiLG5bbi5FPTY5XT1cIkVcIixuW24uRj03MF09XCJGXCIsbltuLkc9NzFdPVwiR1wiLG5bbi5IPTcyXT1cIkhcIixuW24uST03M109XCJJXCIsbltuLko9NzRdPVwiSlwiLG5bbi5LPTc1XT1cIktcIixuW24uTD03Nl09XCJMXCIsbltuLk09NzddPVwiTVwiLG5bbi5OPTc4XT1cIk5cIixuW24uTz03OV09XCJPXCIsbltuLlA9ODBdPVwiUFwiLG5bbi5RPTgxXT1cIlFcIixuW24uUj04Ml09XCJSXCIsbltuLlM9ODNdPVwiU1wiLG5bbi5UPTg0XT1cIlRcIixuW24uVT04NV09XCJVXCIsbltuLlY9ODZdPVwiVlwiLG5bbi5XPTg3XT1cIldcIixuW24uWD04OF09XCJYXCIsbltuLlk9ODldPVwiWVwiLG5bbi5aPTkwXT1cIlpcIixuW24uYW1wZXJzYW5kPTM4XT1cImFtcGVyc2FuZFwiLG5bbi5hc3Rlcmlzaz00Ml09XCJhc3Rlcmlza1wiLG5bbi5hdD02NF09XCJhdFwiLG5bbi5iYWNrc2xhc2g9OTJdPVwiYmFja3NsYXNoXCIsbltuLmJhY2t0aWNrPTk2XT1cImJhY2t0aWNrXCIsbltuLmJhcj0xMjRdPVwiYmFyXCIsbltuLmNhcmV0PTk0XT1cImNhcmV0XCIsbltuLmNsb3NlQnJhY2U9MTI1XT1cImNsb3NlQnJhY2VcIixuW24uY2xvc2VCcmFja2V0PTkzXT1cImNsb3NlQnJhY2tldFwiLG5bbi5jbG9zZVBhcmVuPTQxXT1cImNsb3NlUGFyZW5cIixuW24uY29sb249NThdPVwiY29sb25cIixuW24uY29tbWE9NDRdPVwiY29tbWFcIixuW24uZG90PTQ2XT1cImRvdFwiLG5bbi5kb3VibGVRdW90ZT0zNF09XCJkb3VibGVRdW90ZVwiLG5bbi5lcXVhbHM9NjFdPVwiZXF1YWxzXCIsbltuLmV4Y2xhbWF0aW9uPTMzXT1cImV4Y2xhbWF0aW9uXCIsbltuLmdyZWF0ZXJUaGFuPTYyXT1cImdyZWF0ZXJUaGFuXCIsbltuLmhhc2g9MzVdPVwiaGFzaFwiLG5bbi5sZXNzVGhhbj02MF09XCJsZXNzVGhhblwiLG5bbi5taW51cz00NV09XCJtaW51c1wiLG5bbi5vcGVuQnJhY2U9MTIzXT1cIm9wZW5CcmFjZVwiLG5bbi5vcGVuQnJhY2tldD05MV09XCJvcGVuQnJhY2tldFwiLG5bbi5vcGVuUGFyZW49NDBdPVwib3BlblBhcmVuXCIsbltuLnBlcmNlbnQ9MzddPVwicGVyY2VudFwiLG5bbi5wbHVzPTQzXT1cInBsdXNcIixuW24ucXVlc3Rpb249NjNdPVwicXVlc3Rpb25cIixuW24uc2VtaWNvbG9uPTU5XT1cInNlbWljb2xvblwiLG5bbi5zaW5nbGVRdW90ZT0zOV09XCJzaW5nbGVRdW90ZVwiLG5bbi5zbGFzaD00N109XCJzbGFzaFwiLG5bbi50aWxkZT0xMjZdPVwidGlsZGVcIixuW24uYmFja3NwYWNlPThdPVwiYmFja3NwYWNlXCIsbltuLmZvcm1GZWVkPTEyXT1cImZvcm1GZWVkXCIsbltuLmJ5dGVPcmRlck1hcms9NjUyNzldPVwiYnl0ZU9yZGVyTWFya1wiLG5bbi50YWI9OV09XCJ0YWJcIixuW24udmVydGljYWxUYWI9MTFdPVwidmVydGljYWxUYWJcIn0pKF9lPWUuQ2hhcmFjdGVyQ29kZXN8fChlLkNoYXJhY3RlckNvZGVzPXt9KSk7dmFyIHdlOyhmdW5jdGlvbihuKXtuLlRzPVwiLnRzXCIsbi5Uc3g9XCIudHN4XCIsbi5EdHM9XCIuZC50c1wiLG4uSnM9XCIuanNcIixuLkpzeD1cIi5qc3hcIixuLkpzb249XCIuanNvblwiLG4uVHNCdWlsZEluZm89XCIudHNidWlsZGluZm9cIixuLk1qcz1cIi5tanNcIixuLk10cz1cIi5tdHNcIixuLkRtdHM9XCIuZC5tdHNcIixuLkNqcz1cIi5janNcIixuLkN0cz1cIi5jdHNcIixuLkRjdHM9XCIuZC5jdHNcIn0pKHdlPWUuRXh0ZW5zaW9ufHwoZS5FeHRlbnNpb249e30pKTt2YXIgZGU7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5Db250YWluc1R5cGVTY3JpcHQ9MV09XCJDb250YWluc1R5cGVTY3JpcHRcIixuW24uQ29udGFpbnNKc3g9Ml09XCJDb250YWluc0pzeFwiLG5bbi5Db250YWluc0VTTmV4dD00XT1cIkNvbnRhaW5zRVNOZXh0XCIsbltuLkNvbnRhaW5zRVMyMDIyPThdPVwiQ29udGFpbnNFUzIwMjJcIixuW24uQ29udGFpbnNFUzIwMjE9MTZdPVwiQ29udGFpbnNFUzIwMjFcIixuW24uQ29udGFpbnNFUzIwMjA9MzJdPVwiQ29udGFpbnNFUzIwMjBcIixuW24uQ29udGFpbnNFUzIwMTk9NjRdPVwiQ29udGFpbnNFUzIwMTlcIixuW24uQ29udGFpbnNFUzIwMTg9MTI4XT1cIkNvbnRhaW5zRVMyMDE4XCIsbltuLkNvbnRhaW5zRVMyMDE3PTI1Nl09XCJDb250YWluc0VTMjAxN1wiLG5bbi5Db250YWluc0VTMjAxNj01MTJdPVwiQ29udGFpbnNFUzIwMTZcIixuW24uQ29udGFpbnNFUzIwMTU9MTAyNF09XCJDb250YWluc0VTMjAxNVwiLG5bbi5Db250YWluc0dlbmVyYXRvcj0yMDQ4XT1cIkNvbnRhaW5zR2VuZXJhdG9yXCIsbltuLkNvbnRhaW5zRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQ9NDA5Nl09XCJDb250YWluc0Rlc3RydWN0dXJpbmdBc3NpZ25tZW50XCIsbltuLkNvbnRhaW5zVHlwZVNjcmlwdENsYXNzU3ludGF4PTQwOTZdPVwiQ29udGFpbnNUeXBlU2NyaXB0Q2xhc3NTeW50YXhcIixuW24uQ29udGFpbnNMZXhpY2FsVGhpcz04MTkyXT1cIkNvbnRhaW5zTGV4aWNhbFRoaXNcIixuW24uQ29udGFpbnNSZXN0T3JTcHJlYWQ9MTYzODRdPVwiQ29udGFpbnNSZXN0T3JTcHJlYWRcIixuW24uQ29udGFpbnNPYmplY3RSZXN0T3JTcHJlYWQ9MzI3NjhdPVwiQ29udGFpbnNPYmplY3RSZXN0T3JTcHJlYWRcIixuW24uQ29udGFpbnNDb21wdXRlZFByb3BlcnR5TmFtZT02NTUzNl09XCJDb250YWluc0NvbXB1dGVkUHJvcGVydHlOYW1lXCIsbltuLkNvbnRhaW5zQmxvY2tTY29wZWRCaW5kaW5nPTEzMTA3Ml09XCJDb250YWluc0Jsb2NrU2NvcGVkQmluZGluZ1wiLG5bbi5Db250YWluc0JpbmRpbmdQYXR0ZXJuPTI2MjE0NF09XCJDb250YWluc0JpbmRpbmdQYXR0ZXJuXCIsbltuLkNvbnRhaW5zWWllbGQ9NTI0Mjg4XT1cIkNvbnRhaW5zWWllbGRcIixuW24uQ29udGFpbnNBd2FpdD0xMDQ4NTc2XT1cIkNvbnRhaW5zQXdhaXRcIixuW24uQ29udGFpbnNIb2lzdGVkRGVjbGFyYXRpb25PckNvbXBsZXRpb249MjA5NzE1Ml09XCJDb250YWluc0hvaXN0ZWREZWNsYXJhdGlvbk9yQ29tcGxldGlvblwiLG5bbi5Db250YWluc0R5bmFtaWNJbXBvcnQ9NDE5NDMwNF09XCJDb250YWluc0R5bmFtaWNJbXBvcnRcIixuW24uQ29udGFpbnNDbGFzc0ZpZWxkcz04Mzg4NjA4XT1cIkNvbnRhaW5zQ2xhc3NGaWVsZHNcIixuW24uQ29udGFpbnNQb3NzaWJsZVRvcExldmVsQXdhaXQ9MTY3NzcyMTZdPVwiQ29udGFpbnNQb3NzaWJsZVRvcExldmVsQXdhaXRcIixuW24uQ29udGFpbnNMZXhpY2FsU3VwZXI9MzM1NTQ0MzJdPVwiQ29udGFpbnNMZXhpY2FsU3VwZXJcIixuW24uQ29udGFpbnNVcGRhdGVFeHByZXNzaW9uRm9ySWRlbnRpZmllcj02NzEwODg2NF09XCJDb250YWluc1VwZGF0ZUV4cHJlc3Npb25Gb3JJZGVudGlmaWVyXCIsbltuLkhhc0NvbXB1dGVkRmxhZ3M9NTM2ODcwOTEyXT1cIkhhc0NvbXB1dGVkRmxhZ3NcIixuW24uQXNzZXJ0VHlwZVNjcmlwdD0xXT1cIkFzc2VydFR5cGVTY3JpcHRcIixuW24uQXNzZXJ0SnN4PTJdPVwiQXNzZXJ0SnN4XCIsbltuLkFzc2VydEVTTmV4dD00XT1cIkFzc2VydEVTTmV4dFwiLG5bbi5Bc3NlcnRFUzIwMjI9OF09XCJBc3NlcnRFUzIwMjJcIixuW24uQXNzZXJ0RVMyMDIxPTE2XT1cIkFzc2VydEVTMjAyMVwiLG5bbi5Bc3NlcnRFUzIwMjA9MzJdPVwiQXNzZXJ0RVMyMDIwXCIsbltuLkFzc2VydEVTMjAxOT02NF09XCJBc3NlcnRFUzIwMTlcIixuW24uQXNzZXJ0RVMyMDE4PTEyOF09XCJBc3NlcnRFUzIwMThcIixuW24uQXNzZXJ0RVMyMDE3PTI1Nl09XCJBc3NlcnRFUzIwMTdcIixuW24uQXNzZXJ0RVMyMDE2PTUxMl09XCJBc3NlcnRFUzIwMTZcIixuW24uQXNzZXJ0RVMyMDE1PTEwMjRdPVwiQXNzZXJ0RVMyMDE1XCIsbltuLkFzc2VydEdlbmVyYXRvcj0yMDQ4XT1cIkFzc2VydEdlbmVyYXRvclwiLG5bbi5Bc3NlcnREZXN0cnVjdHVyaW5nQXNzaWdubWVudD00MDk2XT1cIkFzc2VydERlc3RydWN0dXJpbmdBc3NpZ25tZW50XCIsbltuLk91dGVyRXhwcmVzc2lvbkV4Y2x1ZGVzPTUzNjg3MDkxMl09XCJPdXRlckV4cHJlc3Npb25FeGNsdWRlc1wiLG5bbi5Qcm9wZXJ0eUFjY2Vzc0V4Y2x1ZGVzPTUzNjg3MDkxMl09XCJQcm9wZXJ0eUFjY2Vzc0V4Y2x1ZGVzXCIsbltuLk5vZGVFeGNsdWRlcz01MzY4NzA5MTJdPVwiTm9kZUV4Y2x1ZGVzXCIsbltuLkFycm93RnVuY3Rpb25FeGNsdWRlcz01NTc3NDgyMjRdPVwiQXJyb3dGdW5jdGlvbkV4Y2x1ZGVzXCIsbltuLkZ1bmN0aW9uRXhjbHVkZXM9NTkxMzEwODQ4XT1cIkZ1bmN0aW9uRXhjbHVkZXNcIixuW24uQ29uc3RydWN0b3JFeGNsdWRlcz01OTEzMDY3NTJdPVwiQ29uc3RydWN0b3JFeGNsdWRlc1wiLG5bbi5NZXRob2RPckFjY2Vzc29yRXhjbHVkZXM9NTc0NTI5NTM2XT1cIk1ldGhvZE9yQWNjZXNzb3JFeGNsdWRlc1wiLG5bbi5Qcm9wZXJ0eUV4Y2x1ZGVzPTU3MDQzMzUzNl09XCJQcm9wZXJ0eUV4Y2x1ZGVzXCIsbltuLkNsYXNzRXhjbHVkZXM9NTM2OTQwNTQ0XT1cIkNsYXNzRXhjbHVkZXNcIixuW24uTW9kdWxlRXhjbHVkZXM9NTg5NDQzMDcyXT1cIk1vZHVsZUV4Y2x1ZGVzXCIsbltuLlR5cGVFeGNsdWRlcz0tMl09XCJUeXBlRXhjbHVkZXNcIixuW24uT2JqZWN0TGl0ZXJhbEV4Y2x1ZGVzPTUzNjk3MzMxMl09XCJPYmplY3RMaXRlcmFsRXhjbHVkZXNcIixuW24uQXJyYXlMaXRlcmFsT3JDYWxsT3JOZXdFeGNsdWRlcz01MzY4ODcyOTZdPVwiQXJyYXlMaXRlcmFsT3JDYWxsT3JOZXdFeGNsdWRlc1wiLG5bbi5WYXJpYWJsZURlY2xhcmF0aW9uTGlzdEV4Y2x1ZGVzPTUzNzE2NTgyNF09XCJWYXJpYWJsZURlY2xhcmF0aW9uTGlzdEV4Y2x1ZGVzXCIsbltuLlBhcmFtZXRlckV4Y2x1ZGVzPTUzNjg3MDkxMl09XCJQYXJhbWV0ZXJFeGNsdWRlc1wiLG5bbi5DYXRjaENsYXVzZUV4Y2x1ZGVzPTUzNjkwMzY4MF09XCJDYXRjaENsYXVzZUV4Y2x1ZGVzXCIsbltuLkJpbmRpbmdQYXR0ZXJuRXhjbHVkZXM9NTM2ODg3Mjk2XT1cIkJpbmRpbmdQYXR0ZXJuRXhjbHVkZXNcIixuW24uQ29udGFpbnNMZXhpY2FsVGhpc09yU3VwZXI9MzM1NjI2MjRdPVwiQ29udGFpbnNMZXhpY2FsVGhpc09yU3VwZXJcIixuW24uUHJvcGVydHlOYW1lUHJvcGFnYXRpbmdGbGFncz0zMzU2MjYyNF09XCJQcm9wZXJ0eU5hbWVQcm9wYWdhdGluZ0ZsYWdzXCJ9KShkZT1lLlRyYW5zZm9ybUZsYWdzfHwoZS5UcmFuc2Zvcm1GbGFncz17fSkpO3ZhciB5ZTsoZnVuY3Rpb24obil7bltuLlRhYlN0b3A9MF09XCJUYWJTdG9wXCIsbltuLlBsYWNlaG9sZGVyPTFdPVwiUGxhY2Vob2xkZXJcIixuW24uQ2hvaWNlPTJdPVwiQ2hvaWNlXCIsbltuLlZhcmlhYmxlPTNdPVwiVmFyaWFibGVcIn0pKHllPWUuU25pcHBldEtpbmR8fChlLlNuaXBwZXRLaW5kPXt9KSk7dmFyIEFlOyhmdW5jdGlvbihuKXtuW24uTm9uZT0wXT1cIk5vbmVcIixuW24uU2luZ2xlTGluZT0xXT1cIlNpbmdsZUxpbmVcIixuW24uQWR2aXNlT25FbWl0Tm9kZT0yXT1cIkFkdmlzZU9uRW1pdE5vZGVcIixuW24uTm9TdWJzdGl0dXRpb249NF09XCJOb1N1YnN0aXR1dGlvblwiLG5bbi5DYXB0dXJlc1RoaXM9OF09XCJDYXB0dXJlc1RoaXNcIixuW24uTm9MZWFkaW5nU291cmNlTWFwPTE2XT1cIk5vTGVhZGluZ1NvdXJjZU1hcFwiLG5bbi5Ob1RyYWlsaW5nU291cmNlTWFwPTMyXT1cIk5vVHJhaWxpbmdTb3VyY2VNYXBcIixuW24uTm9Tb3VyY2VNYXA9NDhdPVwiTm9Tb3VyY2VNYXBcIixuW24uTm9OZXN0ZWRTb3VyY2VNYXBzPTY0XT1cIk5vTmVzdGVkU291cmNlTWFwc1wiLG5bbi5Ob1Rva2VuTGVhZGluZ1NvdXJjZU1hcHM9MTI4XT1cIk5vVG9rZW5MZWFkaW5nU291cmNlTWFwc1wiLG5bbi5Ob1Rva2VuVHJhaWxpbmdTb3VyY2VNYXBzPTI1Nl09XCJOb1Rva2VuVHJhaWxpbmdTb3VyY2VNYXBzXCIsbltuLk5vVG9rZW5Tb3VyY2VNYXBzPTM4NF09XCJOb1Rva2VuU291cmNlTWFwc1wiLG5bbi5Ob0xlYWRpbmdDb21tZW50cz01MTJdPVwiTm9MZWFkaW5nQ29tbWVudHNcIixuW24uTm9UcmFpbGluZ0NvbW1lbnRzPTEwMjRdPVwiTm9UcmFpbGluZ0NvbW1lbnRzXCIsbltuLk5vQ29tbWVudHM9MTUzNl09XCJOb0NvbW1lbnRzXCIsbltuLk5vTmVzdGVkQ29tbWVudHM9MjA0OF09XCJOb05lc3RlZENvbW1lbnRzXCIsbltuLkhlbHBlck5hbWU9NDA5Nl09XCJIZWxwZXJOYW1lXCIsbltuLkV4cG9ydE5hbWU9ODE5Ml09XCJFeHBvcnROYW1lXCIsbltuLkxvY2FsTmFtZT0xNjM4NF09XCJMb2NhbE5hbWVcIixuW24uSW50ZXJuYWxOYW1lPTMyNzY4XT1cIkludGVybmFsTmFtZVwiLG5bbi5JbmRlbnRlZD02NTUzNl09XCJJbmRlbnRlZFwiLG5bbi5Ob0luZGVudGF0aW9uPTEzMTA3Ml09XCJOb0luZGVudGF0aW9uXCIsbltuLkFzeW5jRnVuY3Rpb25Cb2R5PTI2MjE0NF09XCJBc3luY0Z1bmN0aW9uQm9keVwiLG5bbi5SZXVzZVRlbXBWYXJpYWJsZVNjb3BlPTUyNDI4OF09XCJSZXVzZVRlbXBWYXJpYWJsZVNjb3BlXCIsbltuLkN1c3RvbVByb2xvZ3VlPTEwNDg1NzZdPVwiQ3VzdG9tUHJvbG9ndWVcIixuW24uTm9Ib2lzdGluZz0yMDk3MTUyXT1cIk5vSG9pc3RpbmdcIixuW24uSGFzRW5kT2ZEZWNsYXJhdGlvbk1hcmtlcj00MTk0MzA0XT1cIkhhc0VuZE9mRGVjbGFyYXRpb25NYXJrZXJcIixuW24uSXRlcmF0b3I9ODM4ODYwOF09XCJJdGVyYXRvclwiLG5bbi5Ob0FzY2lpRXNjYXBpbmc9MTY3NzcyMTZdPVwiTm9Bc2NpaUVzY2FwaW5nXCIsbltuLlR5cGVTY3JpcHRDbGFzc1dyYXBwZXI9MzM1NTQ0MzJdPVwiVHlwZVNjcmlwdENsYXNzV3JhcHBlclwiLG5bbi5OZXZlckFwcGx5SW1wb3J0SGVscGVyPTY3MTA4ODY0XT1cIk5ldmVyQXBwbHlJbXBvcnRIZWxwZXJcIixuW24uSWdub3JlU291cmNlTmV3bGluZXM9MTM0MjE3NzI4XT1cIklnbm9yZVNvdXJjZU5ld2xpbmVzXCIsbltuLkltbXV0YWJsZT0yNjg0MzU0NTZdPVwiSW1tdXRhYmxlXCIsbltuLkluZGlyZWN0Q2FsbD01MzY4NzA5MTJdPVwiSW5kaXJlY3RDYWxsXCJ9KShBZT1lLkVtaXRGbGFnc3x8KGUuRW1pdEZsYWdzPXt9KSk7dmFyIGVyOyhmdW5jdGlvbihuKXtuW24uRXh0ZW5kcz0xXT1cIkV4dGVuZHNcIixuW24uQXNzaWduPTJdPVwiQXNzaWduXCIsbltuLlJlc3Q9NF09XCJSZXN0XCIsbltuLkRlY29yYXRlPThdPVwiRGVjb3JhdGVcIixuW24uTWV0YWRhdGE9MTZdPVwiTWV0YWRhdGFcIixuW24uUGFyYW09MzJdPVwiUGFyYW1cIixuW24uQXdhaXRlcj02NF09XCJBd2FpdGVyXCIsbltuLkdlbmVyYXRvcj0xMjhdPVwiR2VuZXJhdG9yXCIsbltuLlZhbHVlcz0yNTZdPVwiVmFsdWVzXCIsbltuLlJlYWQ9NTEyXT1cIlJlYWRcIixuW24uU3ByZWFkQXJyYXk9MTAyNF09XCJTcHJlYWRBcnJheVwiLG5bbi5Bd2FpdD0yMDQ4XT1cIkF3YWl0XCIsbltuLkFzeW5jR2VuZXJhdG9yPTQwOTZdPVwiQXN5bmNHZW5lcmF0b3JcIixuW24uQXN5bmNEZWxlZ2F0b3I9ODE5Ml09XCJBc3luY0RlbGVnYXRvclwiLG5bbi5Bc3luY1ZhbHVlcz0xNjM4NF09XCJBc3luY1ZhbHVlc1wiLG5bbi5FeHBvcnRTdGFyPTMyNzY4XT1cIkV4cG9ydFN0YXJcIixuW24uSW1wb3J0U3Rhcj02NTUzNl09XCJJbXBvcnRTdGFyXCIsbltuLkltcG9ydERlZmF1bHQ9MTMxMDcyXT1cIkltcG9ydERlZmF1bHRcIixuW24uTWFrZVRlbXBsYXRlT2JqZWN0PTI2MjE0NF09XCJNYWtlVGVtcGxhdGVPYmplY3RcIixuW24uQ2xhc3NQcml2YXRlRmllbGRHZXQ9NTI0Mjg4XT1cIkNsYXNzUHJpdmF0ZUZpZWxkR2V0XCIsbltuLkNsYXNzUHJpdmF0ZUZpZWxkU2V0PTEwNDg1NzZdPVwiQ2xhc3NQcml2YXRlRmllbGRTZXRcIixuW24uQ2xhc3NQcml2YXRlRmllbGRJbj0yMDk3MTUyXT1cIkNsYXNzUHJpdmF0ZUZpZWxkSW5cIixuW24uQ3JlYXRlQmluZGluZz00MTk0MzA0XT1cIkNyZWF0ZUJpbmRpbmdcIixuW24uRmlyc3RFbWl0SGVscGVyPTFdPVwiRmlyc3RFbWl0SGVscGVyXCIsbltuLkxhc3RFbWl0SGVscGVyPTQxOTQzMDRdPVwiTGFzdEVtaXRIZWxwZXJcIixuW24uRm9yT2ZJbmNsdWRlcz0yNTZdPVwiRm9yT2ZJbmNsdWRlc1wiLG5bbi5Gb3JBd2FpdE9mSW5jbHVkZXM9MTYzODRdPVwiRm9yQXdhaXRPZkluY2x1ZGVzXCIsbltuLkFzeW5jR2VuZXJhdG9ySW5jbHVkZXM9NjE0NF09XCJBc3luY0dlbmVyYXRvckluY2x1ZGVzXCIsbltuLkFzeW5jRGVsZWdhdG9ySW5jbHVkZXM9MjY2MjRdPVwiQXN5bmNEZWxlZ2F0b3JJbmNsdWRlc1wiLG5bbi5TcHJlYWRJbmNsdWRlcz0xNTM2XT1cIlNwcmVhZEluY2x1ZGVzXCJ9KShlcj1lLkV4dGVybmFsRW1pdEhlbHBlcnN8fChlLkV4dGVybmFsRW1pdEhlbHBlcnM9e30pKTt2YXIgaXI7KGZ1bmN0aW9uKG4pe25bbi5Tb3VyY2VGaWxlPTBdPVwiU291cmNlRmlsZVwiLG5bbi5FeHByZXNzaW9uPTFdPVwiRXhwcmVzc2lvblwiLG5bbi5JZGVudGlmaWVyTmFtZT0yXT1cIklkZW50aWZpZXJOYW1lXCIsbltuLk1hcHBlZFR5cGVQYXJhbWV0ZXI9M109XCJNYXBwZWRUeXBlUGFyYW1ldGVyXCIsbltuLlVuc3BlY2lmaWVkPTRdPVwiVW5zcGVjaWZpZWRcIixuW24uRW1iZWRkZWRTdGF0ZW1lbnQ9NV09XCJFbWJlZGRlZFN0YXRlbWVudFwiLG5bbi5Kc3hBdHRyaWJ1dGVWYWx1ZT02XT1cIkpzeEF0dHJpYnV0ZVZhbHVlXCJ9KShpcj1lLkVtaXRIaW50fHwoZS5FbWl0SGludD17fSkpO3ZhciBDcjsoZnVuY3Rpb24obil7bltuLlBhcmVudGhlc2VzPTFdPVwiUGFyZW50aGVzZXNcIixuW24uVHlwZUFzc2VydGlvbnM9Ml09XCJUeXBlQXNzZXJ0aW9uc1wiLG5bbi5Ob25OdWxsQXNzZXJ0aW9ucz00XT1cIk5vbk51bGxBc3NlcnRpb25zXCIsbltuLlBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9ucz04XT1cIlBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9uc1wiLG5bbi5Bc3NlcnRpb25zPTZdPVwiQXNzZXJ0aW9uc1wiLG5bbi5BbGw9MTVdPVwiQWxsXCIsbltuLkV4Y2x1ZGVKU0RvY1R5cGVBc3NlcnRpb249MTZdPVwiRXhjbHVkZUpTRG9jVHlwZUFzc2VydGlvblwifSkoQ3I9ZS5PdXRlckV4cHJlc3Npb25LaW5kc3x8KGUuT3V0ZXJFeHByZXNzaW9uS2luZHM9e30pKTt2YXIgWWU7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5JblBhcmFtZXRlcnM9MV09XCJJblBhcmFtZXRlcnNcIixuW24uVmFyaWFibGVzSG9pc3RlZEluUGFyYW1ldGVycz0yXT1cIlZhcmlhYmxlc0hvaXN0ZWRJblBhcmFtZXRlcnNcIn0pKFllPWUuTGV4aWNhbEVudmlyb25tZW50RmxhZ3N8fChlLkxleGljYWxFbnZpcm9ubWVudEZsYWdzPXt9KSk7dmFyIEJyOyhmdW5jdGlvbihuKXtuLlByb2xvZ3VlPVwicHJvbG9ndWVcIixuLkVtaXRIZWxwZXJzPVwiZW1pdEhlbHBlcnNcIixuLk5vRGVmYXVsdExpYj1cIm5vLWRlZmF1bHQtbGliXCIsbi5SZWZlcmVuY2U9XCJyZWZlcmVuY2VcIixuLlR5cGU9XCJ0eXBlXCIsbi5UeXBlUmVzb2x1dGlvbk1vZGVSZXF1aXJlPVwidHlwZS1yZXF1aXJlXCIsbi5UeXBlUmVzb2x1dGlvbk1vZGVJbXBvcnQ9XCJ0eXBlLWltcG9ydFwiLG4uTGliPVwibGliXCIsbi5QcmVwZW5kPVwicHJlcGVuZFwiLG4uVGV4dD1cInRleHRcIixuLkludGVybmFsPVwiaW50ZXJuYWxcIn0pKEJyPWUuQnVuZGxlRmlsZVNlY3Rpb25LaW5kfHwoZS5CdW5kbGVGaWxlU2VjdGlvbktpbmQ9e30pKTt2YXIgRXI7KGZ1bmN0aW9uKG4pe25bbi5Ob25lPTBdPVwiTm9uZVwiLG5bbi5TaW5nbGVMaW5lPTBdPVwiU2luZ2xlTGluZVwiLG5bbi5NdWx0aUxpbmU9MV09XCJNdWx0aUxpbmVcIixuW24uUHJlc2VydmVMaW5lcz0yXT1cIlByZXNlcnZlTGluZXNcIixuW24uTGluZXNNYXNrPTNdPVwiTGluZXNNYXNrXCIsbltuLk5vdERlbGltaXRlZD0wXT1cIk5vdERlbGltaXRlZFwiLG5bbi5CYXJEZWxpbWl0ZWQ9NF09XCJCYXJEZWxpbWl0ZWRcIixuW24uQW1wZXJzYW5kRGVsaW1pdGVkPThdPVwiQW1wZXJzYW5kRGVsaW1pdGVkXCIsbltuLkNvbW1hRGVsaW1pdGVkPTE2XT1cIkNvbW1hRGVsaW1pdGVkXCIsbltuLkFzdGVyaXNrRGVsaW1pdGVkPTMyXT1cIkFzdGVyaXNrRGVsaW1pdGVkXCIsbltuLkRlbGltaXRlcnNNYXNrPTYwXT1cIkRlbGltaXRlcnNNYXNrXCIsbltuLkFsbG93VHJhaWxpbmdDb21tYT02NF09XCJBbGxvd1RyYWlsaW5nQ29tbWFcIixuW24uSW5kZW50ZWQ9MTI4XT1cIkluZGVudGVkXCIsbltuLlNwYWNlQmV0d2VlbkJyYWNlcz0yNTZdPVwiU3BhY2VCZXR3ZWVuQnJhY2VzXCIsbltuLlNwYWNlQmV0d2VlblNpYmxpbmdzPTUxMl09XCJTcGFjZUJldHdlZW5TaWJsaW5nc1wiLG5bbi5CcmFjZXM9MTAyNF09XCJCcmFjZXNcIixuW24uUGFyZW50aGVzaXM9MjA0OF09XCJQYXJlbnRoZXNpc1wiLG5bbi5BbmdsZUJyYWNrZXRzPTQwOTZdPVwiQW5nbGVCcmFja2V0c1wiLG5bbi5TcXVhcmVCcmFja2V0cz04MTkyXT1cIlNxdWFyZUJyYWNrZXRzXCIsbltuLkJyYWNrZXRzTWFzaz0xNTM2MF09XCJCcmFja2V0c01hc2tcIixuW24uT3B0aW9uYWxJZlVuZGVmaW5lZD0xNjM4NF09XCJPcHRpb25hbElmVW5kZWZpbmVkXCIsbltuLk9wdGlvbmFsSWZFbXB0eT0zMjc2OF09XCJPcHRpb25hbElmRW1wdHlcIixuW24uT3B0aW9uYWw9NDkxNTJdPVwiT3B0aW9uYWxcIixuW24uUHJlZmVyTmV3TGluZT02NTUzNl09XCJQcmVmZXJOZXdMaW5lXCIsbltuLk5vVHJhaWxpbmdOZXdMaW5lPTEzMTA3Ml09XCJOb1RyYWlsaW5nTmV3TGluZVwiLG5bbi5Ob0ludGVydmVuaW5nQ29tbWVudHM9MjYyMTQ0XT1cIk5vSW50ZXJ2ZW5pbmdDb21tZW50c1wiLG5bbi5Ob1NwYWNlSWZFbXB0eT01MjQyODhdPVwiTm9TcGFjZUlmRW1wdHlcIixuW24uU2luZ2xlRWxlbWVudD0xMDQ4NTc2XT1cIlNpbmdsZUVsZW1lbnRcIixuW24uU3BhY2VBZnRlckxpc3Q9MjA5NzE1Ml09XCJTcGFjZUFmdGVyTGlzdFwiLG5bbi5Nb2RpZmllcnM9MjYyNjU2XT1cIk1vZGlmaWVyc1wiLG5bbi5IZXJpdGFnZUNsYXVzZXM9NTEyXT1cIkhlcml0YWdlQ2xhdXNlc1wiLG5bbi5TaW5nbGVMaW5lVHlwZUxpdGVyYWxNZW1iZXJzPTc2OF09XCJTaW5nbGVMaW5lVHlwZUxpdGVyYWxNZW1iZXJzXCIsbltuLk11bHRpTGluZVR5cGVMaXRlcmFsTWVtYmVycz0zMjg5N109XCJNdWx0aUxpbmVUeXBlTGl0ZXJhbE1lbWJlcnNcIixuW24uU2luZ2xlTGluZVR1cGxlVHlwZUVsZW1lbnRzPTUyOF09XCJTaW5nbGVMaW5lVHVwbGVUeXBlRWxlbWVudHNcIixuW24uTXVsdGlMaW5lVHVwbGVUeXBlRWxlbWVudHM9NjU3XT1cIk11bHRpTGluZVR1cGxlVHlwZUVsZW1lbnRzXCIsbltuLlVuaW9uVHlwZUNvbnN0aXR1ZW50cz01MTZdPVwiVW5pb25UeXBlQ29uc3RpdHVlbnRzXCIsbltuLkludGVyc2VjdGlvblR5cGVDb25zdGl0dWVudHM9NTIwXT1cIkludGVyc2VjdGlvblR5cGVDb25zdGl0dWVudHNcIixuW24uT2JqZWN0QmluZGluZ1BhdHRlcm5FbGVtZW50cz01MjUxMzZdPVwiT2JqZWN0QmluZGluZ1BhdHRlcm5FbGVtZW50c1wiLG5bbi5BcnJheUJpbmRpbmdQYXR0ZXJuRWxlbWVudHM9NTI0ODgwXT1cIkFycmF5QmluZGluZ1BhdHRlcm5FbGVtZW50c1wiLG5bbi5PYmplY3RMaXRlcmFsRXhwcmVzc2lvblByb3BlcnRpZXM9NTI2MjI2XT1cIk9iamVjdExpdGVyYWxFeHByZXNzaW9uUHJvcGVydGllc1wiLG5bbi5JbXBvcnRDbGF1c2VFbnRyaWVzPTUyNjIyNl09XCJJbXBvcnRDbGF1c2VFbnRyaWVzXCIsbltuLkFycmF5TGl0ZXJhbEV4cHJlc3Npb25FbGVtZW50cz04OTE0XT1cIkFycmF5TGl0ZXJhbEV4cHJlc3Npb25FbGVtZW50c1wiLG5bbi5Db21tYUxpc3RFbGVtZW50cz01MjhdPVwiQ29tbWFMaXN0RWxlbWVudHNcIixuW24uQ2FsbEV4cHJlc3Npb25Bcmd1bWVudHM9MjU3Nl09XCJDYWxsRXhwcmVzc2lvbkFyZ3VtZW50c1wiLG5bbi5OZXdFeHByZXNzaW9uQXJndW1lbnRzPTE4OTYwXT1cIk5ld0V4cHJlc3Npb25Bcmd1bWVudHNcIixuW24uVGVtcGxhdGVFeHByZXNzaW9uU3BhbnM9MjYyMTQ0XT1cIlRlbXBsYXRlRXhwcmVzc2lvblNwYW5zXCIsbltuLlNpbmdsZUxpbmVCbG9ja1N0YXRlbWVudHM9NzY4XT1cIlNpbmdsZUxpbmVCbG9ja1N0YXRlbWVudHNcIixuW24uTXVsdGlMaW5lQmxvY2tTdGF0ZW1lbnRzPTEyOV09XCJNdWx0aUxpbmVCbG9ja1N0YXRlbWVudHNcIixuW24uVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q9NTI4XT1cIlZhcmlhYmxlRGVjbGFyYXRpb25MaXN0XCIsbltuLlNpbmdsZUxpbmVGdW5jdGlvbkJvZHlTdGF0ZW1lbnRzPTc2OF09XCJTaW5nbGVMaW5lRnVuY3Rpb25Cb2R5U3RhdGVtZW50c1wiLG5bbi5NdWx0aUxpbmVGdW5jdGlvbkJvZHlTdGF0ZW1lbnRzPTFdPVwiTXVsdGlMaW5lRnVuY3Rpb25Cb2R5U3RhdGVtZW50c1wiLG5bbi5DbGFzc0hlcml0YWdlQ2xhdXNlcz0wXT1cIkNsYXNzSGVyaXRhZ2VDbGF1c2VzXCIsbltuLkNsYXNzTWVtYmVycz0xMjldPVwiQ2xhc3NNZW1iZXJzXCIsbltuLkludGVyZmFjZU1lbWJlcnM9MTI5XT1cIkludGVyZmFjZU1lbWJlcnNcIixuW24uRW51bU1lbWJlcnM9MTQ1XT1cIkVudW1NZW1iZXJzXCIsbltuLkNhc2VCbG9ja0NsYXVzZXM9MTI5XT1cIkNhc2VCbG9ja0NsYXVzZXNcIixuW24uTmFtZWRJbXBvcnRzT3JFeHBvcnRzRWxlbWVudHM9NTI1MTM2XT1cIk5hbWVkSW1wb3J0c09yRXhwb3J0c0VsZW1lbnRzXCIsbltuLkpzeEVsZW1lbnRPckZyYWdtZW50Q2hpbGRyZW49MjYyMTQ0XT1cIkpzeEVsZW1lbnRPckZyYWdtZW50Q2hpbGRyZW5cIixuW24uSnN4RWxlbWVudEF0dHJpYnV0ZXM9MjYyNjU2XT1cIkpzeEVsZW1lbnRBdHRyaWJ1dGVzXCIsbltuLkNhc2VPckRlZmF1bHRDbGF1c2VTdGF0ZW1lbnRzPTE2Mzk2OV09XCJDYXNlT3JEZWZhdWx0Q2xhdXNlU3RhdGVtZW50c1wiLG5bbi5IZXJpdGFnZUNsYXVzZVR5cGVzPTUyOF09XCJIZXJpdGFnZUNsYXVzZVR5cGVzXCIsbltuLlNvdXJjZUZpbGVTdGF0ZW1lbnRzPTEzMTA3M109XCJTb3VyY2VGaWxlU3RhdGVtZW50c1wiLG5bbi5EZWNvcmF0b3JzPTIxNDYzMDVdPVwiRGVjb3JhdG9yc1wiLG5bbi5UeXBlQXJndW1lbnRzPTUzNzc2XT1cIlR5cGVBcmd1bWVudHNcIixuW24uVHlwZVBhcmFtZXRlcnM9NTM3NzZdPVwiVHlwZVBhcmFtZXRlcnNcIixuW24uUGFyYW1ldGVycz0yNTc2XT1cIlBhcmFtZXRlcnNcIixuW24uSW5kZXhTaWduYXR1cmVQYXJhbWV0ZXJzPTg4NDhdPVwiSW5kZXhTaWduYXR1cmVQYXJhbWV0ZXJzXCIsbltuLkpTRG9jQ29tbWVudD0zM109XCJKU0RvY0NvbW1lbnRcIn0pKEVyPWUuTGlzdEZvcm1hdHx8KGUuTGlzdEZvcm1hdD17fSkpO3ZhciBOZTsoZnVuY3Rpb24obil7bltuLk5vbmU9MF09XCJOb25lXCIsbltuLlRyaXBsZVNsYXNoWE1MPTFdPVwiVHJpcGxlU2xhc2hYTUxcIixuW24uU2luZ2xlTGluZT0yXT1cIlNpbmdsZUxpbmVcIixuW24uTXVsdGlMaW5lPTRdPVwiTXVsdGlMaW5lXCIsbltuLkFsbD03XT1cIkFsbFwiLG5bbi5EZWZhdWx0PTddPVwiRGVmYXVsdFwifSkoTmU9ZS5QcmFnbWFLaW5kRmxhZ3N8fChlLlByYWdtYUtpbmRGbGFncz17fSkpLGUuY29tbWVudFByYWdtYXM9e3JlZmVyZW5jZTp7YXJnczpbe25hbWU6XCJ0eXBlc1wiLG9wdGlvbmFsOiEwLGNhcHR1cmVTcGFuOiEwfSx7bmFtZTpcImxpYlwiLG9wdGlvbmFsOiEwLGNhcHR1cmVTcGFuOiEwfSx7bmFtZTpcInBhdGhcIixvcHRpb25hbDohMCxjYXB0dXJlU3BhbjohMH0se25hbWU6XCJuby1kZWZhdWx0LWxpYlwiLG9wdGlvbmFsOiEwfSx7bmFtZTpcInJlc29sdXRpb24tbW9kZVwiLG9wdGlvbmFsOiEwfV0sa2luZDoxfSxcImFtZC1kZXBlbmRlbmN5XCI6e2FyZ3M6W3tuYW1lOlwicGF0aFwifSx7bmFtZTpcIm5hbWVcIixvcHRpb25hbDohMH1dLGtpbmQ6MX0sXCJhbWQtbW9kdWxlXCI6e2FyZ3M6W3tuYW1lOlwibmFtZVwifV0sa2luZDoxfSxcInRzLWNoZWNrXCI6e2tpbmQ6Mn0sXCJ0cy1ub2NoZWNrXCI6e2tpbmQ6Mn0sanN4OnthcmdzOlt7bmFtZTpcImZhY3RvcnlcIn1dLGtpbmQ6NH0sanN4ZnJhZzp7YXJnczpbe25hbWU6XCJmYWN0b3J5XCJ9XSxraW5kOjR9LGpzeGltcG9ydHNvdXJjZTp7YXJnczpbe25hbWU6XCJmYWN0b3J5XCJ9XSxraW5kOjR9LGpzeHJ1bnRpbWU6e2FyZ3M6W3tuYW1lOlwiZmFjdG9yeVwifV0sa2luZDo0fX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEEpe2Zvcih2YXIgeT01MzgxLFY9MDtWPEEubGVuZ3RoO1YrKyl5PSh5PDw1KSt5K0EuY2hhckNvZGVBdChWKTtyZXR1cm4geS50b1N0cmluZygpfWUuZ2VuZXJhdGVEamIySGFzaD1hO2Z1bmN0aW9uIEMoKXtFcnJvci5zdGFja1RyYWNlTGltaXQ8MTAwJiYoRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTEwMCl9ZS5zZXRTdGFja1RyYWNlTGltaXQ9Qzt2YXIgdzsoZnVuY3Rpb24oQSl7QVtBLkNyZWF0ZWQ9MF09XCJDcmVhdGVkXCIsQVtBLkNoYW5nZWQ9MV09XCJDaGFuZ2VkXCIsQVtBLkRlbGV0ZWQ9Ml09XCJEZWxldGVkXCJ9KSh3PWUuRmlsZVdhdGNoZXJFdmVudEtpbmR8fChlLkZpbGVXYXRjaGVyRXZlbnRLaW5kPXt9KSk7dmFyIEI7KGZ1bmN0aW9uKEEpe0FbQS5IaWdoPTJlM109XCJIaWdoXCIsQVtBLk1lZGl1bT01MDBdPVwiTWVkaXVtXCIsQVtBLkxvdz0yNTBdPVwiTG93XCJ9KShCPWUuUG9sbGluZ0ludGVydmFsfHwoZS5Qb2xsaW5nSW50ZXJ2YWw9e30pKSxlLm1pc3NpbmdGaWxlTW9kaWZpZWRUaW1lPW5ldyBEYXRlKDApO2Z1bmN0aW9uIEUoQSx5KXtyZXR1cm4gQS5nZXRNb2RpZmllZFRpbWUoeSl8fGUubWlzc2luZ0ZpbGVNb2RpZmllZFRpbWV9ZS5nZXRNb2RpZmllZFRpbWU9RTtmdW5jdGlvbiBRKEEpe3ZhciB5O3JldHVybiB5PXt9LHlbQi5Mb3ddPUEuTG93LHlbQi5NZWRpdW1dPUEuTWVkaXVtLHlbQi5IaWdoXT1BLkhpZ2gseX12YXIgbGU9e0xvdzozMixNZWRpdW06NjQsSGlnaDoyNTZ9LE49UShsZSk7ZS51bmNoYW5nZWRQb2xsVGhyZXNob2xkcz1RKGxlKTtmdW5jdGlvbiBwKEEpe2lmKCFBLmdldEVudmlyb25tZW50VmFyaWFibGUpcmV0dXJuO3ZhciB5PVAoXCJUU0NfV0FUQ0hfUE9MTElOR0lOVEVSVkFMXCIsQik7Tj1rKFwiVFNDX1dBVENIX1BPTExJTkdDSFVOS1NJWkVcIixsZSl8fE4sZS51bmNoYW5nZWRQb2xsVGhyZXNob2xkcz1rKFwiVFNDX1dBVENIX1VOQ0hBTkdFRFBPTExUSFJFU0hPTERTXCIsbGUpfHxlLnVuY2hhbmdlZFBvbGxUaHJlc2hvbGRzO2Z1bmN0aW9uIFYoWSxVKXtyZXR1cm4gQS5nZXRFbnZpcm9ubWVudFZhcmlhYmxlKFwiXCIuY29uY2F0KFksXCJfXCIpLmNvbmNhdChVLnRvVXBwZXJDYXNlKCkpKX1mdW5jdGlvbiBMKFkpe3ZhciBVO3JldHVybiBqKFwiTG93XCIpLGooXCJNZWRpdW1cIiksaihcIkhpZ2hcIiksVTtmdW5jdGlvbiBqKEgpe3ZhciBJPVYoWSxIKTtJJiYoKFV8fChVPXt9KSlbSF09TnVtYmVyKEkpKX19ZnVuY3Rpb24gUChZLFUpe3ZhciBqPUwoWSk7aWYoailyZXR1cm4gSChcIkxvd1wiKSxIKFwiTWVkaXVtXCIpLEgoXCJIaWdoXCIpLCEwO3JldHVybiExO2Z1bmN0aW9uIEgoSSl7VVtJXT1qW0ldfHxVW0ldfX1mdW5jdGlvbiBrKFksVSl7dmFyIGo9TChZKTtyZXR1cm4oeXx8aikmJlEoaj9LZShLZSh7fSxVKSxqKTpVKX19ZS5zZXRDdXN0b21Qb2xsaW5nVmFsdWVzPXA7ZnVuY3Rpb24gbShBLHksVixMLFApe2Zvcih2YXIgaz1WLFk9eS5sZW5ndGg7TCYmWTtIKCksWS0tKXt2YXIgVT15W1ZdO2lmKFUpe2lmKFUuaXNDbG9zZWQpe3lbVl09dm9pZCAwO2NvbnRpbnVlfX1lbHNlIGNvbnRpbnVlO0wtLTt2YXIgaj1LKFUsRShBLFUuZmlsZU5hbWUpKTtpZihVLmlzQ2xvc2VkKXt5W1ZdPXZvaWQgMDtjb250aW51ZX1QPT1udWxsfHxQKFUsVixqKSx5W1ZdJiYoazxWJiYoeVtrXT1VLHlbVl09dm9pZCAwKSxrKyspfXJldHVybiBWO2Z1bmN0aW9uIEgoKXtWKyssVj09PXkubGVuZ3RoJiYoazxWJiYoeS5sZW5ndGg9ayksVj0wLGs9MCl9fWZ1bmN0aW9uIEcoQSl7dmFyIHk9W10sVj1bXSxMPVUoQi5Mb3cpLFA9VShCLk1lZGl1bSksaz1VKEIuSGlnaCk7cmV0dXJuIFk7ZnVuY3Rpb24gWShuZSx1ZSxXZSl7dmFyIEZlPXtmaWxlTmFtZTpuZSxjYWxsYmFjazp1ZSx1bmNoYW5nZWRQb2xsczowLG10aW1lOkUoQSxuZSl9O3JldHVybiB5LnB1c2goRmUpLGQoRmUsV2UpLHtjbG9zZTpmdW5jdGlvbigpe0ZlLmlzQ2xvc2VkPSEwLGUudW5vcmRlcmVkUmVtb3ZlSXRlbSh5LEZlKX19fWZ1bmN0aW9uIFUobmUpe3ZhciB1ZT1bXTtyZXR1cm4gdWUucG9sbGluZ0ludGVydmFsPW5lLHVlLnBvbGxJbmRleD0wLHVlLnBvbGxTY2hlZHVsZWQ9ITEsdWV9ZnVuY3Rpb24gaihuZSl7bmUucG9sbEluZGV4PUkobmUsbmUucG9sbGluZ0ludGVydmFsLG5lLnBvbGxJbmRleCxOW25lLnBvbGxpbmdJbnRlcnZhbF0pLG5lLmxlbmd0aD9nKG5lLnBvbGxpbmdJbnRlcnZhbCk6KGUuRGVidWcuYXNzZXJ0KG5lLnBvbGxJbmRleD09PTApLG5lLnBvbGxTY2hlZHVsZWQ9ITEpfWZ1bmN0aW9uIEgobmUpe0koVixCLkxvdywwLFYubGVuZ3RoKSxqKG5lKSwhbmUucG9sbFNjaGVkdWxlZCYmVi5sZW5ndGgmJmcoQi5Mb3cpfWZ1bmN0aW9uIEkobmUsdWUsV2UsRmUpe3JldHVybiBtKEEsbmUsV2UsRmUsWik7ZnVuY3Rpb24gWihCZSxnZSxSZSl7UmU/KEJlLnVuY2hhbmdlZFBvbGxzPTAsbmUhPT1WJiYobmVbZ2VdPXZvaWQgMCxEKEJlKSkpOkJlLnVuY2hhbmdlZFBvbGxzIT09ZS51bmNoYW5nZWRQb2xsVGhyZXNob2xkc1t1ZV0/QmUudW5jaGFuZ2VkUG9sbHMrKzpuZT09PVY/KEJlLnVuY2hhbmdlZFBvbGxzPTEsbmVbZ2VdPXZvaWQgMCxkKEJlLEIuTG93KSk6dWUhPT1CLkhpZ2gmJihCZS51bmNoYW5nZWRQb2xscysrLG5lW2dlXT12b2lkIDAsZChCZSx1ZT09PUIuTG93P0IuTWVkaXVtOkIuSGlnaCkpfX1mdW5jdGlvbiBsKG5lKXtzd2l0Y2gobmUpe2Nhc2UgQi5Mb3c6cmV0dXJuIEw7Y2FzZSBCLk1lZGl1bTpyZXR1cm4gUDtjYXNlIEIuSGlnaDpyZXR1cm4ga319ZnVuY3Rpb24gZChuZSx1ZSl7bCh1ZSkucHVzaChuZSksZmUodWUpfWZ1bmN0aW9uIEQobmUpe1YucHVzaChuZSksZmUoQi5Mb3cpfWZ1bmN0aW9uIGZlKG5lKXtsKG5lKS5wb2xsU2NoZWR1bGVkfHxnKG5lKX1mdW5jdGlvbiBnKG5lKXtsKG5lKS5wb2xsU2NoZWR1bGVkPUEuc2V0VGltZW91dChuZT09PUIuTG93P0g6aixuZSxsKG5lKSl9fWUuY3JlYXRlRHluYW1pY1ByaW9yaXR5UG9sbGluZ1dhdGNoRmlsZT1HO2Z1bmN0aW9uIG9lKEEseSl7dmFyIFY9ZS5jcmVhdGVNdWx0aU1hcCgpLEw9bmV3IGUuTWFwLFA9ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZSh5KTtyZXR1cm4gaztmdW5jdGlvbiBrKFUsaixILEkpe3ZhciBsPVAoVSk7Vi5hZGQobCxqKTt2YXIgZD1lLmdldERpcmVjdG9yeVBhdGgobCl8fFwiLlwiLEQ9TC5nZXQoZCl8fFkoZS5nZXREaXJlY3RvcnlQYXRoKFUpfHxcIi5cIixkLEkpO3JldHVybiBELnJlZmVyZW5jZUNvdW50Kysse2Nsb3NlOmZ1bmN0aW9uKCl7RC5yZWZlcmVuY2VDb3VudD09PTE/KEQuY2xvc2UoKSxMLmRlbGV0ZShkKSk6RC5yZWZlcmVuY2VDb3VudC0tLFYucmVtb3ZlKGwsail9fX1mdW5jdGlvbiBZKFUsaixIKXt2YXIgST1BKFUsMSxmdW5jdGlvbihsLGQpe2lmKCEhZS5pc1N0cmluZyhkKSl7dmFyIEQ9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGQsVSksZmU9RCYmVi5nZXQoUChEKSk7aWYoZmUpZm9yKHZhciBnPTAsbmU9ZmU7ZzxuZS5sZW5ndGg7ZysrKXt2YXIgdWU9bmVbZ107dWUoRCx3LkNoYW5nZWQpfX19LCExLEIuTWVkaXVtLEgpO3JldHVybiBJLnJlZmVyZW5jZUNvdW50PTAsTC5zZXQoaixJKSxJfX1mdW5jdGlvbiBmKEEpe3ZhciB5PVtdLFY9MCxMO3JldHVybiBQO2Z1bmN0aW9uIFAoVSxqKXt2YXIgSD17ZmlsZU5hbWU6VSxjYWxsYmFjazpqLG10aW1lOkUoQSxVKX07cmV0dXJuIHkucHVzaChIKSxZKCkse2Nsb3NlOmZ1bmN0aW9uKCl7SC5pc0Nsb3NlZD0hMCxlLnVub3JkZXJlZFJlbW92ZUl0ZW0oeSxIKX19fWZ1bmN0aW9uIGsoKXtMPXZvaWQgMCxWPW0oQSx5LFYsTltCLkxvd10pLFkoKX1mdW5jdGlvbiBZKCl7IXkubGVuZ3RofHxMfHwoTD1BLnNldFRpbWVvdXQoayxCLkhpZ2gpKX19ZnVuY3Rpb24gVChBLHkpe3ZhciBWPW5ldyBlLk1hcCxMPWUuY3JlYXRlTXVsdGlNYXAoKSxQPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoeSk7cmV0dXJuIGZ1bmN0aW9uKGssWSxVLGope3ZhciBIPVAoayksST1WLmdldChIKTtyZXR1cm4gST9JLnJlZkNvdW50Kys6Vi5zZXQoSCx7d2F0Y2hlcjpBKGssZnVuY3Rpb24obCxkKXtyZXR1cm4gZS5mb3JFYWNoKEwuZ2V0KEgpLGZ1bmN0aW9uKEQpe3JldHVybiBEKGwsZCl9KX0sVSxqKSxyZWZDb3VudDoxfSksTC5hZGQoSCxZKSx7Y2xvc2U6ZnVuY3Rpb24oKXt2YXIgbD1lLkRlYnVnLmNoZWNrRGVmaW5lZChWLmdldChIKSk7TC5yZW1vdmUoSCxZKSxsLnJlZkNvdW50LS0sIWwucmVmQ291bnQmJihWLmRlbGV0ZShIKSxlLmNsb3NlRmlsZVdhdGNoZXJPZihsKSl9fX19ZS5jcmVhdGVTaW5nbGVGaWxlV2F0Y2hlclBlck5hbWU9VDtmdW5jdGlvbiBLKEEseSl7dmFyIFY9QS5tdGltZS5nZXRUaW1lKCksTD15LmdldFRpbWUoKTtyZXR1cm4gViE9PUw/KEEubXRpbWU9eSxBLmNhbGxiYWNrKEEuZmlsZU5hbWUsYihWLEwpKSwhMCk6ITF9ZS5vbldhdGNoZWRGaWxlU3RhdD1LO2Z1bmN0aW9uIGIoQSx5KXtyZXR1cm4gQT09PTA/dy5DcmVhdGVkOnk9PT0wP3cuRGVsZXRlZDp3LkNoYW5nZWR9ZS5nZXRGaWxlV2F0Y2hlckV2ZW50S2luZD1iLGUuaWdub3JlZFBhdGhzPVtcIi9ub2RlX21vZHVsZXMvLlwiLFwiLy5naXRcIixcIi8uI1wiXTt2YXIgc2U9ZS5ub29wO2Z1bmN0aW9uIEooQSl7cmV0dXJuIHNlKEEpfWUuc3lzTG9nPUo7ZnVuY3Rpb24gaWUoQSl7c2U9QX1lLnNldFN5c0xvZz1pZTtmdW5jdGlvbiBSKEEpe3ZhciB5PUEud2F0Y2hEaXJlY3RvcnksVj1BLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMsTD1BLmdldEN1cnJlbnREaXJlY3RvcnksUD1BLmdldEFjY2Vzc2libGVTb3J0ZWRDaGlsZERpcmVjdG9yaWVzLGs9QS5kaXJlY3RvcnlFeGlzdHMsWT1BLnJlYWxwYXRoLFU9QS5zZXRUaW1lb3V0LGo9QS5jbGVhclRpbWVvdXQsSD1uZXcgZS5NYXAsST1lLmNyZWF0ZU11bHRpTWFwKCksbD1uZXcgZS5NYXAsZCxEPWUuZ2V0U3RyaW5nQ29tcGFyZXIoIVYpLGZlPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoVik7cmV0dXJuIGZ1bmN0aW9uKHplLEVlLEhlLHJyKXtyZXR1cm4gSGU/Zyh6ZSxycixFZSk6eSh6ZSxFZSxIZSxycil9O2Z1bmN0aW9uIGcoemUsRWUsSGUpe3ZhciBycj1mZSh6ZSksSWU9SC5nZXQocnIpO0llP0llLnJlZkNvdW50Kys6KEllPXt3YXRjaGVyOnkoemUsZnVuY3Rpb24od2Upe2dlKHdlLEVlKXx8KEVlIT1udWxsJiZFZS5zeW5jaHJvbm91c1dhdGNoRGlyZWN0b3J5PyhuZShycix3ZSksQmUoemUscnIsRWUpKTp1ZSh6ZSxycix3ZSxFZSkpfSwhMSxFZSkscmVmQ291bnQ6MSxjaGlsZFdhdGNoZXM6ZS5lbXB0eUFycmF5fSxILnNldChycixJZSksQmUoemUscnIsRWUpKTt2YXIgX2U9SGUmJntkaXJOYW1lOnplLGNhbGxiYWNrOkhlfTtyZXR1cm4gX2UmJkkuYWRkKHJyLF9lKSx7ZGlyTmFtZTp6ZSxjbG9zZTpmdW5jdGlvbigpe3ZhciB3ZT1lLkRlYnVnLmNoZWNrRGVmaW5lZChILmdldChycikpO19lJiZJLnJlbW92ZShycixfZSksd2UucmVmQ291bnQtLSwhd2UucmVmQ291bnQmJihILmRlbGV0ZShyciksZS5jbG9zZUZpbGVXYXRjaGVyT2Yod2UpLHdlLmNoaWxkV2F0Y2hlcy5mb3JFYWNoKGUuY2xvc2VGaWxlV2F0Y2hlcikpfX19ZnVuY3Rpb24gbmUoemUsRWUsSGUpe3ZhciBycixJZTtlLmlzU3RyaW5nKEVlKT9ycj1FZTpJZT1FZSxJLmZvckVhY2goZnVuY3Rpb24oX2Usd2Upe3ZhciBkZTtpZighKEllJiZJZS5nZXQod2UpPT09ITApJiYod2U9PT16ZXx8ZS5zdGFydHNXaXRoKHplLHdlKSYmemVbd2UubGVuZ3RoXT09PWUuZGlyZWN0b3J5U2VwYXJhdG9yKSlpZihJZSlpZihIZSl7dmFyIHllPUllLmdldCh3ZSk7eWU/KGRlPXllKS5wdXNoLmFwcGx5KGRlLEhlKTpJZS5zZXQod2UsSGUuc2xpY2UoKSl9ZWxzZSBJZS5zZXQod2UsITApO2Vsc2UgX2UuZm9yRWFjaChmdW5jdGlvbihBZSl7dmFyIGVyPUFlLmNhbGxiYWNrO3JldHVybiBlcihycil9KX0pfWZ1bmN0aW9uIHVlKHplLEVlLEhlLHJyKXt2YXIgSWU9SC5nZXQoRWUpO2lmKEllJiZrKHplKSl7V2UoemUsRWUsSGUscnIpO3JldHVybn1uZShFZSxIZSksWihJZSl9ZnVuY3Rpb24gV2UoemUsRWUsSGUscnIpe3ZhciBJZT1sLmdldChFZSk7SWU/SWUuZmlsZU5hbWVzLnB1c2goSGUpOmwuc2V0KEVlLHtkaXJOYW1lOnplLG9wdGlvbnM6cnIsZmlsZU5hbWVzOltIZV19KSxkJiYoaihkKSxkPXZvaWQgMCksZD1VKEZlLDFlMyl9ZnVuY3Rpb24gRmUoKXtkPXZvaWQgMCxKKFwic3lzTG9nOjogb25UaW1lclRvVXBkYXRlQ2hpbGRXYXRjaGVzOjogXCIuY29uY2F0KGwuc2l6ZSkpO2Zvcih2YXIgemU9ZS50aW1lc3RhbXAoKSxFZT1uZXcgZS5NYXA7IWQmJmwuc2l6ZTspe3ZhciBIZT1sLmVudHJpZXMoKS5uZXh0KCk7ZS5EZWJ1Zy5hc3NlcnQoIUhlLmRvbmUpO3ZhciBycj1IZS52YWx1ZSxJZT1yclswXSxfZT1yclsxXSx3ZT1fZS5kaXJOYW1lLGRlPV9lLm9wdGlvbnMseWU9X2UuZmlsZU5hbWVzO2wuZGVsZXRlKEllKTt2YXIgQWU9QmUod2UsSWUsZGUpO25lKEllLEVlLEFlP3ZvaWQgMDp5ZSl9SihcInN5c0xvZzo6IGludm9raW5nV2F0Y2hlcnM6OiBFbGFwc2VkOjogXCIuY29uY2F0KGUudGltZXN0YW1wKCktemUsXCJtczo6IFwiKS5jb25jYXQobC5zaXplKSksSS5mb3JFYWNoKGZ1bmN0aW9uKGlyLENyKXt2YXIgWWU9RWUuZ2V0KENyKTtZZSYmaXIuZm9yRWFjaChmdW5jdGlvbihCcil7dmFyIEVyPUJyLmNhbGxiYWNrLE5lPUJyLmRpck5hbWU7ZS5pc0FycmF5KFllKT9ZZS5mb3JFYWNoKEVyKTpFcihOZSl9KX0pO3ZhciBlcj1lLnRpbWVzdGFtcCgpLXplO0ooXCJzeXNMb2c6OiBFbGFwc2VkOjogXCIuY29uY2F0KGVyLFwibXM6OiBvblRpbWVyVG9VcGRhdGVDaGlsZFdhdGNoZXM6OiBcIikuY29uY2F0KGwuc2l6ZSxcIiBcIikuY29uY2F0KGQpKX1mdW5jdGlvbiBaKHplKXtpZighIXplKXt2YXIgRWU9emUuY2hpbGRXYXRjaGVzO3plLmNoaWxkV2F0Y2hlcz1lLmVtcHR5QXJyYXk7Zm9yKHZhciBIZT0wLHJyPUVlO0hlPHJyLmxlbmd0aDtIZSsrKXt2YXIgSWU9cnJbSGVdO0llLmNsb3NlKCksWihILmdldChmZShJZS5kaXJOYW1lKSkpfX19ZnVuY3Rpb24gQmUoemUsRWUsSGUpe3ZhciBycj1ILmdldChFZSk7aWYoIXJyKXJldHVybiExO3ZhciBJZSxfZT1lLmVudW1lcmF0ZUluc2VydHNBbmREZWxldGVzKGsoemUpP2UubWFwRGVmaW5lZChQKHplKSxmdW5jdGlvbih5ZSl7dmFyIEFlPWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aCh5ZSx6ZSk7cmV0dXJuIWdlKEFlLEhlKSYmRChBZSxlLm5vcm1hbGl6ZVBhdGgoWShBZSkpKT09PTA/QWU6dm9pZCAwfSk6ZS5lbXB0eUFycmF5LHJyLmNoaWxkV2F0Y2hlcyxmdW5jdGlvbih5ZSxBZSl7cmV0dXJuIEQoeWUsQWUuZGlyTmFtZSl9LHdlLGUuY2xvc2VGaWxlV2F0Y2hlcixkZSk7cmV0dXJuIHJyLmNoaWxkV2F0Y2hlcz1JZXx8ZS5lbXB0eUFycmF5LF9lO2Z1bmN0aW9uIHdlKHllKXt2YXIgQWU9Zyh5ZSxIZSk7ZGUoQWUpfWZ1bmN0aW9uIGRlKHllKXsoSWV8fChJZT1bXSkpLnB1c2goeWUpfX1mdW5jdGlvbiBnZSh6ZSxFZSl7cmV0dXJuIGUuc29tZShlLmlnbm9yZWRQYXRocyxmdW5jdGlvbihIZSl7cmV0dXJuIFJlKHplLEhlKX0pfHxlZSh6ZSxFZSxWLEwpfWZ1bmN0aW9uIFJlKHplLEVlKXtyZXR1cm4gZS5zdHJpbmdDb250YWlucyh6ZSxFZSk/ITA6Vj8hMTplLnN0cmluZ0NvbnRhaW5zKGZlKHplKSxFZSl9fWUuY3JlYXRlRGlyZWN0b3J5V2F0Y2hlclN1cHBvcnRpbmdSZWN1cnNpdmU9Ujt2YXIgcTsoZnVuY3Rpb24oQSl7QVtBLkZpbGU9MF09XCJGaWxlXCIsQVtBLkRpcmVjdG9yeT0xXT1cIkRpcmVjdG9yeVwifSkocT1lLkZpbGVTeXN0ZW1FbnRyeUtpbmR8fChlLkZpbGVTeXN0ZW1FbnRyeUtpbmQ9e30pKTtmdW5jdGlvbiBPKEEpe3JldHVybiBmdW5jdGlvbih5LFYpe3JldHVybiBBKFY9PT13LkNoYW5nZWQ/XCJjaGFuZ2VcIjpcInJlbmFtZVwiLFwiXCIpfX1lLmNyZWF0ZUZpbGVXYXRjaGVyQ2FsbGJhY2s9TztmdW5jdGlvbiB2ZShBLHksVil7cmV0dXJuIGZ1bmN0aW9uKEwpe0w9PT1cInJlbmFtZVwiP3koQSxWKEEpP3cuQ3JlYXRlZDp3LkRlbGV0ZWQpOnkoQSx3LkNoYW5nZWQpfX1mdW5jdGlvbiBlZShBLHksVixMKXtyZXR1cm4oKHk9PW51bGw/dm9pZCAwOnkuZXhjbHVkZURpcmVjdG9yaWVzKXx8KHk9PW51bGw/dm9pZCAwOnkuZXhjbHVkZUZpbGVzKSkmJihlLm1hdGNoZXNFeGNsdWRlKEEseT09bnVsbD92b2lkIDA6eS5leGNsdWRlRmlsZXMsVixMKCkpfHxlLm1hdGNoZXNFeGNsdWRlKEEseT09bnVsbD92b2lkIDA6eS5leGNsdWRlRGlyZWN0b3JpZXMsVixMKCkpKX1mdW5jdGlvbiBoZShBLHksVixMLFApe3JldHVybiBmdW5jdGlvbihrLFkpe2lmKGs9PT1cInJlbmFtZVwiKXt2YXIgVT1ZP2Uubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyhBLFkpKTpBOyghWXx8IWVlKFUsVixMLFApKSYmeShVKX19fWZ1bmN0aW9uIEYoQSl7dmFyIHk9QS5wb2xsaW5nV2F0Y2hGaWxlLFY9QS5nZXRNb2RpZmllZFRpbWUsTD1BLnNldFRpbWVvdXQsUD1BLmNsZWFyVGltZW91dCxrPUEuZnNXYXRjaCxZPUEuZmlsZUV4aXN0cyxVPUEudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyxqPUEuZ2V0Q3VycmVudERpcmVjdG9yeSxIPUEuZnNTdXBwb3J0c1JlY3Vyc2l2ZUZzV2F0Y2gsST1BLmRpcmVjdG9yeUV4aXN0cyxsPUEuZ2V0QWNjZXNzaWJsZVNvcnRlZENoaWxkRGlyZWN0b3JpZXMsZD1BLnJlYWxwYXRoLEQ9QS50c2NXYXRjaEZpbGUsZmU9QS51c2VOb25Qb2xsaW5nV2F0Y2hlcnMsZz1BLnRzY1dhdGNoRGlyZWN0b3J5LG5lPUEuZGVmYXVsdFdhdGNoRmlsZUtpbmQsdWUsV2UsRmUsWjtyZXR1cm57d2F0Y2hGaWxlOkJlLHdhdGNoRGlyZWN0b3J5OkhlfTtmdW5jdGlvbiBCZShfZSx3ZSxkZSx5ZSl7eWU9emUoeWUsZmUpO3ZhciBBZT1lLkRlYnVnLmNoZWNrRGVmaW5lZCh5ZS53YXRjaEZpbGUpO3N3aXRjaChBZSl7Y2FzZSBlLldhdGNoRmlsZUtpbmQuRml4ZWRQb2xsaW5nSW50ZXJ2YWw6cmV0dXJuIHkoX2Usd2UsQi5Mb3csdm9pZCAwKTtjYXNlIGUuV2F0Y2hGaWxlS2luZC5Qcmlvcml0eVBvbGxpbmdJbnRlcnZhbDpyZXR1cm4geShfZSx3ZSxkZSx2b2lkIDApO2Nhc2UgZS5XYXRjaEZpbGVLaW5kLkR5bmFtaWNQcmlvcml0eVBvbGxpbmc6cmV0dXJuIGdlKCkoX2Usd2UsZGUsdm9pZCAwKTtjYXNlIGUuV2F0Y2hGaWxlS2luZC5GaXhlZENodW5rU2l6ZVBvbGxpbmc6cmV0dXJuIFJlKCkoX2Usd2Usdm9pZCAwLHZvaWQgMCk7Y2FzZSBlLldhdGNoRmlsZUtpbmQuVXNlRnNFdmVudHM6cmV0dXJuIGsoX2UsMCx2ZShfZSx3ZSxZKSwhMSxkZSxlLmdldEZhbGxiYWNrT3B0aW9ucyh5ZSkpO2Nhc2UgZS5XYXRjaEZpbGVLaW5kLlVzZUZzRXZlbnRzT25QYXJlbnREaXJlY3Rvcnk6cmV0dXJuIEZlfHwoRmU9b2UoayxVKSksRmUoX2Usd2UsZGUsZS5nZXRGYWxsYmFja09wdGlvbnMoeWUpKTtkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoQWUpfX1mdW5jdGlvbiBnZSgpe3JldHVybiB1ZXx8KHVlPUcoe2dldE1vZGlmaWVkVGltZTpWLHNldFRpbWVvdXQ6TH0pKX1mdW5jdGlvbiBSZSgpe3JldHVybiBXZXx8KFdlPWYoe2dldE1vZGlmaWVkVGltZTpWLHNldFRpbWVvdXQ6TH0pKX1mdW5jdGlvbiB6ZShfZSx3ZSl7aWYoX2UmJl9lLndhdGNoRmlsZSE9PXZvaWQgMClyZXR1cm4gX2U7c3dpdGNoKEQpe2Nhc2VcIlByaW9yaXR5UG9sbGluZ0ludGVydmFsXCI6cmV0dXJue3dhdGNoRmlsZTplLldhdGNoRmlsZUtpbmQuUHJpb3JpdHlQb2xsaW5nSW50ZXJ2YWx9O2Nhc2VcIkR5bmFtaWNQcmlvcml0eVBvbGxpbmdcIjpyZXR1cm57d2F0Y2hGaWxlOmUuV2F0Y2hGaWxlS2luZC5EeW5hbWljUHJpb3JpdHlQb2xsaW5nfTtjYXNlXCJVc2VGc0V2ZW50c1wiOnJldHVybiBFZShlLldhdGNoRmlsZUtpbmQuVXNlRnNFdmVudHMsZS5Qb2xsaW5nV2F0Y2hLaW5kLlByaW9yaXR5SW50ZXJ2YWwsX2UpO2Nhc2VcIlVzZUZzRXZlbnRzV2l0aEZhbGxiYWNrRHluYW1pY1BvbGxpbmdcIjpyZXR1cm4gRWUoZS5XYXRjaEZpbGVLaW5kLlVzZUZzRXZlbnRzLGUuUG9sbGluZ1dhdGNoS2luZC5EeW5hbWljUHJpb3JpdHksX2UpO2Nhc2VcIlVzZUZzRXZlbnRzT25QYXJlbnREaXJlY3RvcnlcIjp3ZT0hMDtkZWZhdWx0OnJldHVybiB3ZT9FZShlLldhdGNoRmlsZUtpbmQuVXNlRnNFdmVudHNPblBhcmVudERpcmVjdG9yeSxlLlBvbGxpbmdXYXRjaEtpbmQuUHJpb3JpdHlJbnRlcnZhbCxfZSk6e3dhdGNoRmlsZToobmU9PW51bGw/dm9pZCAwOm5lKCkpfHxlLldhdGNoRmlsZUtpbmQuRml4ZWRQb2xsaW5nSW50ZXJ2YWx9fX1mdW5jdGlvbiBFZShfZSx3ZSxkZSl7dmFyIHllPWRlPT1udWxsP3ZvaWQgMDpkZS5mYWxsYmFja1BvbGxpbmc7cmV0dXJue3dhdGNoRmlsZTpfZSxmYWxsYmFja1BvbGxpbmc6eWU9PT12b2lkIDA/d2U6eWV9fWZ1bmN0aW9uIEhlKF9lLHdlLGRlLHllKXtyZXR1cm4gSD9rKF9lLDEsaGUoX2Usd2UseWUsVSxqKSxkZSxCLk1lZGl1bSxlLmdldEZhbGxiYWNrT3B0aW9ucyh5ZSkpOihafHwoWj1SKHt1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOlUsZ2V0Q3VycmVudERpcmVjdG9yeTpqLGRpcmVjdG9yeUV4aXN0czpJLGdldEFjY2Vzc2libGVTb3J0ZWRDaGlsZERpcmVjdG9yaWVzOmwsd2F0Y2hEaXJlY3Rvcnk6cnIscmVhbHBhdGg6ZCxzZXRUaW1lb3V0OkwsY2xlYXJUaW1lb3V0OlB9KSksWihfZSx3ZSxkZSx5ZSkpfWZ1bmN0aW9uIHJyKF9lLHdlLGRlLHllKXtlLkRlYnVnLmFzc2VydCghZGUpO3ZhciBBZT1JZSh5ZSksZXI9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoQWUud2F0Y2hEaXJlY3RvcnkpO3N3aXRjaChlcil7Y2FzZSBlLldhdGNoRGlyZWN0b3J5S2luZC5GaXhlZFBvbGxpbmdJbnRlcnZhbDpyZXR1cm4geShfZSxmdW5jdGlvbigpe3JldHVybiB3ZShfZSl9LEIuTWVkaXVtLHZvaWQgMCk7Y2FzZSBlLldhdGNoRGlyZWN0b3J5S2luZC5EeW5hbWljUHJpb3JpdHlQb2xsaW5nOnJldHVybiBnZSgpKF9lLGZ1bmN0aW9uKCl7cmV0dXJuIHdlKF9lKX0sQi5NZWRpdW0sdm9pZCAwKTtjYXNlIGUuV2F0Y2hEaXJlY3RvcnlLaW5kLkZpeGVkQ2h1bmtTaXplUG9sbGluZzpyZXR1cm4gUmUoKShfZSxmdW5jdGlvbigpe3JldHVybiB3ZShfZSl9LHZvaWQgMCx2b2lkIDApO2Nhc2UgZS5XYXRjaERpcmVjdG9yeUtpbmQuVXNlRnNFdmVudHM6cmV0dXJuIGsoX2UsMSxoZShfZSx3ZSx5ZSxVLGopLGRlLEIuTWVkaXVtLGUuZ2V0RmFsbGJhY2tPcHRpb25zKEFlKSk7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKGVyKX19ZnVuY3Rpb24gSWUoX2Upe2lmKF9lJiZfZS53YXRjaERpcmVjdG9yeSE9PXZvaWQgMClyZXR1cm4gX2U7c3dpdGNoKGcpe2Nhc2VcIlJlY3Vyc2l2ZURpcmVjdG9yeVVzaW5nRnNXYXRjaEZpbGVcIjpyZXR1cm57d2F0Y2hEaXJlY3Rvcnk6ZS5XYXRjaERpcmVjdG9yeUtpbmQuRml4ZWRQb2xsaW5nSW50ZXJ2YWx9O2Nhc2VcIlJlY3Vyc2l2ZURpcmVjdG9yeVVzaW5nRHluYW1pY1ByaW9yaXR5UG9sbGluZ1wiOnJldHVybnt3YXRjaERpcmVjdG9yeTplLldhdGNoRGlyZWN0b3J5S2luZC5EeW5hbWljUHJpb3JpdHlQb2xsaW5nfTtkZWZhdWx0OnZhciB3ZT1fZT09bnVsbD92b2lkIDA6X2UuZmFsbGJhY2tQb2xsaW5nO3JldHVybnt3YXRjaERpcmVjdG9yeTplLldhdGNoRGlyZWN0b3J5S2luZC5Vc2VGc0V2ZW50cyxmYWxsYmFja1BvbGxpbmc6d2UhPT12b2lkIDA/d2U6dm9pZCAwfX19fWUuY3JlYXRlU3lzdGVtV2F0Y2hGdW5jdGlvbnM9RjtmdW5jdGlvbiB4KEEpe3ZhciB5PUEud3JpdGVGaWxlO0Eud3JpdGVGaWxlPWZ1bmN0aW9uKFYsTCxQKXtyZXR1cm4gZS53cml0ZUZpbGVFbnN1cmluZ0RpcmVjdG9yaWVzKFYsTCwhIVAsZnVuY3Rpb24oayxZLFUpe3JldHVybiB5LmNhbGwoQSxrLFksVSl9LGZ1bmN0aW9uKGspe3JldHVybiBBLmNyZWF0ZURpcmVjdG9yeShrKX0sZnVuY3Rpb24oayl7cmV0dXJuIEEuZGlyZWN0b3J5RXhpc3RzKGspfSl9fWUucGF0Y2hXcml0ZUZpbGVFbnN1cmluZ0RpcmVjdG9yeT14O2Z1bmN0aW9uIFgoKXtpZighKHR5cGVvZiBFdT5cInVcIikpe3ZhciBBPUV1LnZlcnNpb247aWYoISFBKXt2YXIgeT1BLmluZGV4T2YoXCIuXCIpO2lmKHkhPT0tMSlyZXR1cm4gcGFyc2VJbnQoQS5zdWJzdHJpbmcoMSx5KSl9fX1lLmdldE5vZGVNYWpvclZlcnNpb249WCxlLnN5cz12b2lkIDA7ZnVuY3Rpb24gJChBKXtlLnN5cz12b2lkIDB9ZS5zZXRTeXM9JCxlLnN5cyYmZS5zeXMuZ2V0RW52aXJvbm1lbnRWYXJpYWJsZSYmKHAoZS5zeXMpLGUuRGVidWcuc2V0QXNzZXJ0aW9uTGV2ZWwoL15kZXZlbG9wbWVudCQvaS50ZXN0KGUuc3lzLmdldEVudmlyb25tZW50VmFyaWFibGUoXCJOT0RFX0VOVlwiKSk/MTowKSksZS5zeXMmJmUuc3lzLmRlYnVnTW9kZSYmKGUuRGVidWcuaXNEZWJ1Z2dpbmc9ITApfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZS5kaXJlY3RvcnlTZXBhcmF0b3I9XCIvXCIsZS5hbHREaXJlY3RvcnlTZXBhcmF0b3I9XCJcXFxcXCI7dmFyIGE9XCI6Ly9cIixDPS9cXFxcL2c7ZnVuY3Rpb24gdyh6ZSl7cmV0dXJuIHplPT09NDd8fHplPT09OTJ9ZS5pc0FueURpcmVjdG9yeVNlcGFyYXRvcj13O2Z1bmN0aW9uIEIoemUpe3JldHVybiBiKHplKTwwfWUuaXNVcmw9QjtmdW5jdGlvbiBFKHplKXtyZXR1cm4gYih6ZSk+MH1lLmlzUm9vdGVkRGlza1BhdGg9RTtmdW5jdGlvbiBRKHplKXt2YXIgRWU9Yih6ZSk7cmV0dXJuIEVlPjAmJkVlPT09emUubGVuZ3RofWUuaXNEaXNrUGF0aFJvb3Q9UTtmdW5jdGlvbiBsZSh6ZSl7cmV0dXJuIGIoemUpIT09MH1lLnBhdGhJc0Fic29sdXRlPWxlO2Z1bmN0aW9uIE4oemUpe3JldHVybi9eXFwuXFwuPygkfFtcXFxcL10pLy50ZXN0KHplKX1lLnBhdGhJc1JlbGF0aXZlPU47ZnVuY3Rpb24gcCh6ZSl7cmV0dXJuIWxlKHplKSYmIU4oemUpfWUucGF0aElzQmFyZVNwZWNpZmllcj1wO2Z1bmN0aW9uIG0oemUpe3JldHVybiBlLnN0cmluZ0NvbnRhaW5zKGllKHplKSxcIi5cIil9ZS5oYXNFeHRlbnNpb249bTtmdW5jdGlvbiBHKHplLEVlKXtyZXR1cm4gemUubGVuZ3RoPkVlLmxlbmd0aCYmZS5lbmRzV2l0aCh6ZSxFZSl9ZS5maWxlRXh0ZW5zaW9uSXM9RztmdW5jdGlvbiBvZSh6ZSxFZSl7Zm9yKHZhciBIZT0wLHJyPUVlO0hlPHJyLmxlbmd0aDtIZSsrKXt2YXIgSWU9cnJbSGVdO2lmKEcoemUsSWUpKXJldHVybiEwfXJldHVybiExfWUuZmlsZUV4dGVuc2lvbklzT25lT2Y9b2U7ZnVuY3Rpb24gZih6ZSl7cmV0dXJuIHplLmxlbmd0aD4wJiZ3KHplLmNoYXJDb2RlQXQoemUubGVuZ3RoLTEpKX1lLmhhc1RyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yPWY7ZnVuY3Rpb24gVCh6ZSl7cmV0dXJuIHplPj05NyYmemU8PTEyMnx8emU+PTY1JiZ6ZTw9OTB9ZnVuY3Rpb24gSyh6ZSxFZSl7dmFyIEhlPXplLmNoYXJDb2RlQXQoRWUpO2lmKEhlPT09NTgpcmV0dXJuIEVlKzE7aWYoSGU9PT0zNyYmemUuY2hhckNvZGVBdChFZSsxKT09PTUxKXt2YXIgcnI9emUuY2hhckNvZGVBdChFZSsyKTtpZihycj09PTk3fHxycj09PTY1KXJldHVybiBFZSszfXJldHVybi0xfWZ1bmN0aW9uIGIoemUpe2lmKCF6ZSlyZXR1cm4gMDt2YXIgRWU9emUuY2hhckNvZGVBdCgwKTtpZihFZT09PTQ3fHxFZT09PTkyKXtpZih6ZS5jaGFyQ29kZUF0KDEpIT09RWUpcmV0dXJuIDE7dmFyIEhlPXplLmluZGV4T2YoRWU9PT00Nz9lLmRpcmVjdG9yeVNlcGFyYXRvcjplLmFsdERpcmVjdG9yeVNlcGFyYXRvciwyKTtyZXR1cm4gSGU8MD96ZS5sZW5ndGg6SGUrMX1pZihUKEVlKSYmemUuY2hhckNvZGVBdCgxKT09PTU4KXt2YXIgcnI9emUuY2hhckNvZGVBdCgyKTtpZihycj09PTQ3fHxycj09PTkyKXJldHVybiAzO2lmKHplLmxlbmd0aD09PTIpcmV0dXJuIDJ9dmFyIEllPXplLmluZGV4T2YoYSk7aWYoSWUhPT0tMSl7dmFyIF9lPUllK2EubGVuZ3RoLHdlPXplLmluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IsX2UpO2lmKHdlIT09LTEpe3ZhciBkZT16ZS5zbGljZSgwLEllKSx5ZT16ZS5zbGljZShfZSx3ZSk7aWYoZGU9PT1cImZpbGVcIiYmKHllPT09XCJcInx8eWU9PT1cImxvY2FsaG9zdFwiKSYmVCh6ZS5jaGFyQ29kZUF0KHdlKzEpKSl7dmFyIEFlPUsoemUsd2UrMik7aWYoQWUhPT0tMSl7aWYoemUuY2hhckNvZGVBdChBZSk9PT00NylyZXR1cm5+KEFlKzEpO2lmKEFlPT09emUubGVuZ3RoKXJldHVybn5BZX19cmV0dXJufih3ZSsxKX1yZXR1cm5+emUubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIHNlKHplKXt2YXIgRWU9Yih6ZSk7cmV0dXJuIEVlPDA/fkVlOkVlfWUuZ2V0Um9vdExlbmd0aD1zZTtmdW5jdGlvbiBKKHplKXt6ZT1GKHplKTt2YXIgRWU9c2UoemUpO3JldHVybiBFZT09PXplLmxlbmd0aD96ZTooemU9WSh6ZSksemUuc2xpY2UoMCxNYXRoLm1heChFZSx6ZS5sYXN0SW5kZXhPZihlLmRpcmVjdG9yeVNlcGFyYXRvcikpKSl9ZS5nZXREaXJlY3RvcnlQYXRoPUo7ZnVuY3Rpb24gaWUoemUsRWUsSGUpe3plPUYoemUpO3ZhciBycj1zZSh6ZSk7aWYocnI9PT16ZS5sZW5ndGgpcmV0dXJuXCJcIjt6ZT1ZKHplKTt2YXIgSWU9emUuc2xpY2UoTWF0aC5tYXgoc2UoemUpLHplLmxhc3RJbmRleE9mKGUuZGlyZWN0b3J5U2VwYXJhdG9yKSsxKSksX2U9RWUhPT12b2lkIDAmJkhlIT09dm9pZCAwP08oSWUsRWUsSGUpOnZvaWQgMDtyZXR1cm4gX2U/SWUuc2xpY2UoMCxJZS5sZW5ndGgtX2UubGVuZ3RoKTpJZX1lLmdldEJhc2VGaWxlTmFtZT1pZTtmdW5jdGlvbiBSKHplLEVlLEhlKXtpZihlLnN0YXJ0c1dpdGgoRWUsXCIuXCIpfHwoRWU9XCIuXCIrRWUpLHplLmxlbmd0aD49RWUubGVuZ3RoJiZ6ZS5jaGFyQ29kZUF0KHplLmxlbmd0aC1FZS5sZW5ndGgpPT09NDYpe3ZhciBycj16ZS5zbGljZSh6ZS5sZW5ndGgtRWUubGVuZ3RoKTtpZihIZShycixFZSkpcmV0dXJuIHJyfX1mdW5jdGlvbiBxKHplLEVlLEhlKXtpZih0eXBlb2YgRWU9PVwic3RyaW5nXCIpcmV0dXJuIFIoemUsRWUsSGUpfHxcIlwiO2Zvcih2YXIgcnI9MCxJZT1FZTtycjxJZS5sZW5ndGg7cnIrKyl7dmFyIF9lPUllW3JyXSx3ZT1SKHplLF9lLEhlKTtpZih3ZSlyZXR1cm4gd2V9cmV0dXJuXCJcIn1mdW5jdGlvbiBPKHplLEVlLEhlKXtpZihFZSlyZXR1cm4gcShZKHplKSxFZSxIZT9lLmVxdWF0ZVN0cmluZ3NDYXNlSW5zZW5zaXRpdmU6ZS5lcXVhdGVTdHJpbmdzQ2FzZVNlbnNpdGl2ZSk7dmFyIHJyPWllKHplKSxJZT1yci5sYXN0SW5kZXhPZihcIi5cIik7cmV0dXJuIEllPj0wP3JyLnN1YnN0cmluZyhJZSk6XCJcIn1lLmdldEFueUV4dGVuc2lvbkZyb21QYXRoPU87ZnVuY3Rpb24gdmUoemUsRWUpe3ZhciBIZT16ZS5zdWJzdHJpbmcoMCxFZSkscnI9emUuc3Vic3RyaW5nKEVlKS5zcGxpdChlLmRpcmVjdG9yeVNlcGFyYXRvcik7cmV0dXJuIHJyLmxlbmd0aCYmIWUubGFzdE9yVW5kZWZpbmVkKHJyKSYmcnIucG9wKCksVmUoW0hlXSxyciwhMCl9ZnVuY3Rpb24gZWUoemUsRWUpe3JldHVybiBFZT09PXZvaWQgMCYmKEVlPVwiXCIpLHplPVgoRWUsemUpLHZlKHplLHNlKHplKSl9ZS5nZXRQYXRoQ29tcG9uZW50cz1lZTtmdW5jdGlvbiBoZSh6ZSl7aWYoemUubGVuZ3RoPT09MClyZXR1cm5cIlwiO3ZhciBFZT16ZVswXSYmVSh6ZVswXSk7cmV0dXJuIEVlK3plLnNsaWNlKDEpLmpvaW4oZS5kaXJlY3RvcnlTZXBhcmF0b3IpfWUuZ2V0UGF0aEZyb21QYXRoQ29tcG9uZW50cz1oZTtmdW5jdGlvbiBGKHplKXt2YXIgRWU9emUuaW5kZXhPZihcIlxcXFxcIik7cmV0dXJuIEVlPT09LTE/emU6KEMubGFzdEluZGV4PUVlLHplLnJlcGxhY2UoQyxlLmRpcmVjdG9yeVNlcGFyYXRvcikpfWUubm9ybWFsaXplU2xhc2hlcz1GO2Z1bmN0aW9uIHgoemUpe2lmKCFlLnNvbWUoemUpKXJldHVybltdO2Zvcih2YXIgRWU9W3plWzBdXSxIZT0xO0hlPHplLmxlbmd0aDtIZSsrKXt2YXIgcnI9emVbSGVdO2lmKCEhcnImJnJyIT09XCIuXCIpe2lmKHJyPT09XCIuLlwiKXtpZihFZS5sZW5ndGg+MSl7aWYoRWVbRWUubGVuZ3RoLTFdIT09XCIuLlwiKXtFZS5wb3AoKTtjb250aW51ZX19ZWxzZSBpZihFZVswXSljb250aW51ZX1FZS5wdXNoKHJyKX19cmV0dXJuIEVlfWUucmVkdWNlUGF0aENvbXBvbmVudHM9eDtmdW5jdGlvbiBYKHplKXtmb3IodmFyIEVlPVtdLEhlPTE7SGU8YXJndW1lbnRzLmxlbmd0aDtIZSsrKUVlW0hlLTFdPWFyZ3VtZW50c1tIZV07emUmJih6ZT1GKHplKSk7Zm9yKHZhciBycj0wLEllPUVlO3JyPEllLmxlbmd0aDtycisrKXt2YXIgX2U9SWVbcnJdOyFfZXx8KF9lPUYoX2UpLCF6ZXx8c2UoX2UpIT09MD96ZT1fZTp6ZT1VKHplKStfZSl9cmV0dXJuIHplfWUuY29tYmluZVBhdGhzPVg7ZnVuY3Rpb24gJCh6ZSl7Zm9yKHZhciBFZT1bXSxIZT0xO0hlPGFyZ3VtZW50cy5sZW5ndGg7SGUrKylFZVtIZS0xXT1hcmd1bWVudHNbSGVdO3JldHVybiBWKGUuc29tZShFZSk/WC5hcHBseSh2b2lkIDAsVmUoW3plXSxFZSwhMSkpOkYoemUpKX1lLnJlc29sdmVQYXRoPSQ7ZnVuY3Rpb24gQSh6ZSxFZSl7cmV0dXJuIHgoZWUoemUsRWUpKX1lLmdldE5vcm1hbGl6ZWRQYXRoQ29tcG9uZW50cz1BO2Z1bmN0aW9uIHkoemUsRWUpe3JldHVybiBoZShBKHplLEVlKSl9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoPXk7ZnVuY3Rpb24gVih6ZSl7aWYoemU9Rih6ZSksIUkudGVzdCh6ZSkpcmV0dXJuIHplO3ZhciBFZT16ZS5yZXBsYWNlKC9cXC9cXC5cXC8vZyxcIi9cIikucmVwbGFjZSgvXlxcLlxcLy8sXCJcIik7aWYoRWUhPT16ZSYmKHplPUVlLCFJLnRlc3QoemUpKSlyZXR1cm4gemU7dmFyIEhlPWhlKHgoZWUoemUpKSk7cmV0dXJuIEhlJiZmKHplKT9VKEhlKTpIZX1lLm5vcm1hbGl6ZVBhdGg9VjtmdW5jdGlvbiBMKHplKXtyZXR1cm4gemUubGVuZ3RoPT09MD9cIlwiOnplLnNsaWNlKDEpLmpvaW4oZS5kaXJlY3RvcnlTZXBhcmF0b3IpfWZ1bmN0aW9uIFAoemUsRWUpe3JldHVybiBMKEEoemUsRWUpKX1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGhXaXRob3V0Um9vdD1QO2Z1bmN0aW9uIGsoemUsRWUsSGUpe3ZhciBycj1FKHplKT9WKHplKTp5KHplLEVlKTtyZXR1cm4gSGUocnIpfWUudG9QYXRoPWs7ZnVuY3Rpb24gWSh6ZSl7cmV0dXJuIGYoemUpP3plLnN1YnN0cigwLHplLmxlbmd0aC0xKTp6ZX1lLnJlbW92ZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yPVk7ZnVuY3Rpb24gVSh6ZSl7cmV0dXJuIGYoemUpP3plOnplK2UuZGlyZWN0b3J5U2VwYXJhdG9yfWUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3I9VTtmdW5jdGlvbiBqKHplKXtyZXR1cm4hbGUoemUpJiYhTih6ZSk/XCIuL1wiK3plOnplfWUuZW5zdXJlUGF0aElzTm9uTW9kdWxlTmFtZT1qO2Z1bmN0aW9uIEgoemUsRWUsSGUscnIpe3ZhciBJZT1IZSE9PXZvaWQgMCYmcnIhPT12b2lkIDA/Tyh6ZSxIZSxycik6Tyh6ZSk7cmV0dXJuIEllP3plLnNsaWNlKDAsemUubGVuZ3RoLUllLmxlbmd0aCkrKGUuc3RhcnRzV2l0aChFZSxcIi5cIik/RWU6XCIuXCIrRWUpOnplfWUuY2hhbmdlQW55RXh0ZW5zaW9uPUg7dmFyIEk9Lyg/OlxcL1xcLyl8KD86XnxcXC8pXFwuXFwuPyg/OiR8XFwvKS87ZnVuY3Rpb24gbCh6ZSxFZSxIZSl7aWYoemU9PT1FZSlyZXR1cm4gMDtpZih6ZT09PXZvaWQgMClyZXR1cm4tMTtpZihFZT09PXZvaWQgMClyZXR1cm4gMTt2YXIgcnI9emUuc3Vic3RyaW5nKDAsc2UoemUpKSxJZT1FZS5zdWJzdHJpbmcoMCxzZShFZSkpLF9lPWUuY29tcGFyZVN0cmluZ3NDYXNlSW5zZW5zaXRpdmUocnIsSWUpO2lmKF9lIT09MClyZXR1cm4gX2U7dmFyIHdlPXplLnN1YnN0cmluZyhyci5sZW5ndGgpLGRlPUVlLnN1YnN0cmluZyhJZS5sZW5ndGgpO2lmKCFJLnRlc3Qod2UpJiYhSS50ZXN0KGRlKSlyZXR1cm4gSGUod2UsZGUpO2Zvcih2YXIgeWU9eChlZSh6ZSkpLEFlPXgoZWUoRWUpKSxlcj1NYXRoLm1pbih5ZS5sZW5ndGgsQWUubGVuZ3RoKSxpcj0xO2lyPGVyO2lyKyspe3ZhciBDcj1IZSh5ZVtpcl0sQWVbaXJdKTtpZihDciE9PTApcmV0dXJuIENyfXJldHVybiBlLmNvbXBhcmVWYWx1ZXMoeWUubGVuZ3RoLEFlLmxlbmd0aCl9ZnVuY3Rpb24gZCh6ZSxFZSl7cmV0dXJuIGwoemUsRWUsZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpfWUuY29tcGFyZVBhdGhzQ2FzZVNlbnNpdGl2ZT1kO2Z1bmN0aW9uIEQoemUsRWUpe3JldHVybiBsKHplLEVlLGUuY29tcGFyZVN0cmluZ3NDYXNlSW5zZW5zaXRpdmUpfWUuY29tcGFyZVBhdGhzQ2FzZUluc2Vuc2l0aXZlPUQ7ZnVuY3Rpb24gZmUoemUsRWUsSGUscnIpe3JldHVybiB0eXBlb2YgSGU9PVwic3RyaW5nXCI/KHplPVgoSGUsemUpLEVlPVgoSGUsRWUpKTp0eXBlb2YgSGU9PVwiYm9vbGVhblwiJiYocnI9SGUpLGwoemUsRWUsZS5nZXRTdHJpbmdDb21wYXJlcihycikpfWUuY29tcGFyZVBhdGhzPWZlO2Z1bmN0aW9uIGcoemUsRWUsSGUscnIpe2lmKHR5cGVvZiBIZT09XCJzdHJpbmdcIj8oemU9WChIZSx6ZSksRWU9WChIZSxFZSkpOnR5cGVvZiBIZT09XCJib29sZWFuXCImJihycj1IZSksemU9PT12b2lkIDB8fEVlPT09dm9pZCAwKXJldHVybiExO2lmKHplPT09RWUpcmV0dXJuITA7dmFyIEllPXgoZWUoemUpKSxfZT14KGVlKEVlKSk7aWYoX2UubGVuZ3RoPEllLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHdlPXJyP2UuZXF1YXRlU3RyaW5nc0Nhc2VJbnNlbnNpdGl2ZTplLmVxdWF0ZVN0cmluZ3NDYXNlU2Vuc2l0aXZlLGRlPTA7ZGU8SWUubGVuZ3RoO2RlKyspe3ZhciB5ZT1kZT09PTA/ZS5lcXVhdGVTdHJpbmdzQ2FzZUluc2Vuc2l0aXZlOndlO2lmKCF5ZShJZVtkZV0sX2VbZGVdKSlyZXR1cm4hMX1yZXR1cm4hMH1lLmNvbnRhaW5zUGF0aD1nO2Z1bmN0aW9uIG5lKHplLEVlLEhlKXt2YXIgcnI9SGUoemUpLEllPUhlKEVlKTtyZXR1cm4gZS5zdGFydHNXaXRoKHJyLEllK1wiL1wiKXx8ZS5zdGFydHNXaXRoKHJyLEllK1wiXFxcXFwiKX1lLnN0YXJ0c1dpdGhEaXJlY3Rvcnk9bmU7ZnVuY3Rpb24gdWUoemUsRWUsSGUscnIpe3ZhciBJZT14KGVlKHplKSksX2U9eChlZShFZSkpLHdlO2Zvcih3ZT0wO3dlPEllLmxlbmd0aCYmd2U8X2UubGVuZ3RoO3dlKyspe3ZhciBkZT1ycihJZVt3ZV0pLHllPXJyKF9lW3dlXSksQWU9d2U9PT0wP2UuZXF1YXRlU3RyaW5nc0Nhc2VJbnNlbnNpdGl2ZTpIZTtpZighQWUoZGUseWUpKWJyZWFrfWlmKHdlPT09MClyZXR1cm4gX2U7Zm9yKHZhciBlcj1fZS5zbGljZSh3ZSksaXI9W107d2U8SWUubGVuZ3RoO3dlKyspaXIucHVzaChcIi4uXCIpO3JldHVybiBWZShWZShbXCJcIl0saXIsITApLGVyLCEwKX1lLmdldFBhdGhDb21wb25lbnRzUmVsYXRpdmVUbz11ZTtmdW5jdGlvbiBXZSh6ZSxFZSxIZSl7ZS5EZWJ1Zy5hc3NlcnQoc2UoemUpPjA9PXNlKEVlKT4wLFwiUGF0aHMgbXVzdCBlaXRoZXIgYm90aCBiZSBhYnNvbHV0ZSBvciBib3RoIGJlIHJlbGF0aXZlXCIpO3ZhciBycj10eXBlb2YgSGU9PVwiZnVuY3Rpb25cIj9IZTplLmlkZW50aXR5LEllPXR5cGVvZiBIZT09XCJib29sZWFuXCI/SGU6ITEsX2U9dWUoemUsRWUsSWU/ZS5lcXVhdGVTdHJpbmdzQ2FzZUluc2Vuc2l0aXZlOmUuZXF1YXRlU3RyaW5nc0Nhc2VTZW5zaXRpdmUscnIpO3JldHVybiBoZShfZSl9ZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRGlyZWN0b3J5PVdlO2Z1bmN0aW9uIEZlKHplLEVlLEhlKXtyZXR1cm4gRSh6ZSk/QmUoRWUsemUsRWUsSGUsITEpOnplfWUuY29udmVydFRvUmVsYXRpdmVQYXRoPUZlO2Z1bmN0aW9uIFooemUsRWUsSGUpe3JldHVybiBqKFdlKEooemUpLEVlLEhlKSl9ZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRmlsZT1aO2Z1bmN0aW9uIEJlKHplLEVlLEhlLHJyLEllKXt2YXIgX2U9dWUoJChIZSx6ZSksJChIZSxFZSksZS5lcXVhdGVTdHJpbmdzQ2FzZVNlbnNpdGl2ZSxyciksd2U9X2VbMF07aWYoSWUmJkUod2UpKXt2YXIgZGU9d2UuY2hhckF0KDApPT09ZS5kaXJlY3RvcnlTZXBhcmF0b3I/XCJmaWxlOi8vXCI6XCJmaWxlOi8vL1wiO19lWzBdPWRlK3dlfXJldHVybiBoZShfZSl9ZS5nZXRSZWxhdGl2ZVBhdGhUb0RpcmVjdG9yeU9yVXJsPUJlO2Z1bmN0aW9uIGdlKHplLEVlKXtmb3IoOzspe3ZhciBIZT1FZSh6ZSk7aWYoSGUhPT12b2lkIDApcmV0dXJuIEhlO3ZhciBycj1KKHplKTtpZihycj09PXplKXJldHVybjt6ZT1ycn19ZS5mb3JFYWNoQW5jZXN0b3JEaXJlY3Rvcnk9Z2U7ZnVuY3Rpb24gUmUoemUpe3JldHVybiBlLmVuZHNXaXRoKHplLFwiL25vZGVfbW9kdWxlc1wiKX1lLmlzTm9kZU1vZHVsZXNEaXJlY3Rvcnk9UmV9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEMsdyxCLEUsUSxsZSxOKXtyZXR1cm57Y29kZTpDLGNhdGVnb3J5Oncsa2V5OkIsbWVzc2FnZTpFLHJlcG9ydHNVbm5lY2Vzc2FyeTpRLGVsaWRlZEluQ29tcGF0YWJpbGl0eVB5cmFtaWQ6bGUscmVwb3J0c0RlcHJlY2F0ZWQ6Tn19ZS5EaWFnbm9zdGljcz17VW50ZXJtaW5hdGVkX3N0cmluZ19saXRlcmFsOmEoMTAwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbF8xMDAyXCIsXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwuXCIpLElkZW50aWZpZXJfZXhwZWN0ZWQ6YSgxMDAzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSWRlbnRpZmllcl9leHBlY3RlZF8xMDAzXCIsXCJJZGVudGlmaWVyIGV4cGVjdGVkLlwiKSxfMF9leHBlY3RlZDphKDEwMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9leHBlY3RlZF8xMDA1XCIsXCInezB9JyBleHBlY3RlZC5cIiksQV9maWxlX2Nhbm5vdF9oYXZlX2FfcmVmZXJlbmNlX3RvX2l0c2VsZjphKDEwMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2ZpbGVfY2Fubm90X2hhdmVfYV9yZWZlcmVuY2VfdG9faXRzZWxmXzEwMDZcIixcIkEgZmlsZSBjYW5ub3QgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdHNlbGYuXCIpLFRoZV9wYXJzZXJfZXhwZWN0ZWRfdG9fZmluZF9hXzFfdG9fbWF0Y2hfdGhlXzBfdG9rZW5faGVyZTphKDEwMDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfcGFyc2VyX2V4cGVjdGVkX3RvX2ZpbmRfYV8xX3RvX21hdGNoX3RoZV8wX3Rva2VuX2hlcmVfMTAwN1wiLFwiVGhlIHBhcnNlciBleHBlY3RlZCB0byBmaW5kIGEgJ3sxfScgdG8gbWF0Y2ggdGhlICd7MH0nIHRva2VuIGhlcmUuXCIpLFRyYWlsaW5nX2NvbW1hX25vdF9hbGxvd2VkOmEoMTAwOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRyYWlsaW5nX2NvbW1hX25vdF9hbGxvd2VkXzEwMDlcIixcIlRyYWlsaW5nIGNvbW1hIG5vdCBhbGxvd2VkLlwiKSxBc3Rlcmlza19TbGFzaF9leHBlY3RlZDphKDEwMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBc3Rlcmlza19TbGFzaF9leHBlY3RlZF8xMDEwXCIsXCInKi8nIGV4cGVjdGVkLlwiKSxBbl9lbGVtZW50X2FjY2Vzc19leHByZXNzaW9uX3Nob3VsZF90YWtlX2FuX2FyZ3VtZW50OmEoMTAxMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2VsZW1lbnRfYWNjZXNzX2V4cHJlc3Npb25fc2hvdWxkX3Rha2VfYW5fYXJndW1lbnRfMTAxMVwiLFwiQW4gZWxlbWVudCBhY2Nlc3MgZXhwcmVzc2lvbiBzaG91bGQgdGFrZSBhbiBhcmd1bWVudC5cIiksVW5leHBlY3RlZF90b2tlbjphKDEwMTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbmV4cGVjdGVkX3Rva2VuXzEwMTJcIixcIlVuZXhwZWN0ZWQgdG9rZW4uXCIpLEFfcmVzdF9wYXJhbWV0ZXJfb3JfYmluZGluZ19wYXR0ZXJuX21heV9ub3RfaGF2ZV9hX3RyYWlsaW5nX2NvbW1hOmEoMTAxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfcmVzdF9wYXJhbWV0ZXJfb3JfYmluZGluZ19wYXR0ZXJuX21heV9ub3RfaGF2ZV9hX3RyYWlsaW5nX2NvbW1hXzEwMTNcIixcIkEgcmVzdCBwYXJhbWV0ZXIgb3IgYmluZGluZyBwYXR0ZXJuIG1heSBub3QgaGF2ZSBhIHRyYWlsaW5nIGNvbW1hLlwiKSxBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfbGFzdF9pbl9hX3BhcmFtZXRlcl9saXN0OmEoMTAxNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfcmVzdF9wYXJhbWV0ZXJfbXVzdF9iZV9sYXN0X2luX2FfcGFyYW1ldGVyX2xpc3RfMTAxNFwiLFwiQSByZXN0IHBhcmFtZXRlciBtdXN0IGJlIGxhc3QgaW4gYSBwYXJhbWV0ZXIgbGlzdC5cIiksUGFyYW1ldGVyX2Nhbm5vdF9oYXZlX3F1ZXN0aW9uX21hcmtfYW5kX2luaXRpYWxpemVyOmEoMTAxNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl9jYW5ub3RfaGF2ZV9xdWVzdGlvbl9tYXJrX2FuZF9pbml0aWFsaXplcl8xMDE1XCIsXCJQYXJhbWV0ZXIgY2Fubm90IGhhdmUgcXVlc3Rpb24gbWFyayBhbmQgaW5pdGlhbGl6ZXIuXCIpLEFfcmVxdWlyZWRfcGFyYW1ldGVyX2Nhbm5vdF9mb2xsb3dfYW5fb3B0aW9uYWxfcGFyYW1ldGVyOmEoMTAxNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfcmVxdWlyZWRfcGFyYW1ldGVyX2Nhbm5vdF9mb2xsb3dfYW5fb3B0aW9uYWxfcGFyYW1ldGVyXzEwMTZcIixcIkEgcmVxdWlyZWQgcGFyYW1ldGVyIGNhbm5vdCBmb2xsb3cgYW4gb3B0aW9uYWwgcGFyYW1ldGVyLlwiKSxBbl9pbmRleF9zaWduYXR1cmVfY2Fubm90X2hhdmVfYV9yZXN0X3BhcmFtZXRlcjphKDEwMTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbmRleF9zaWduYXR1cmVfY2Fubm90X2hhdmVfYV9yZXN0X3BhcmFtZXRlcl8xMDE3XCIsXCJBbiBpbmRleCBzaWduYXR1cmUgY2Fubm90IGhhdmUgYSByZXN0IHBhcmFtZXRlci5cIiksQW5faW5kZXhfc2lnbmF0dXJlX3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9hY2Nlc3NpYmlsaXR5X21vZGlmaWVyOmEoMTAxOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5fYWNjZXNzaWJpbGl0eV9tb2RpZmllcl8xMDE4XCIsXCJBbiBpbmRleCBzaWduYXR1cmUgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGFjY2Vzc2liaWxpdHkgbW9kaWZpZXIuXCIpLEFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYV9xdWVzdGlvbl9tYXJrOmEoMTAxOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYV9xdWVzdGlvbl9tYXJrXzEwMTlcIixcIkFuIGluZGV4IHNpZ25hdHVyZSBwYXJhbWV0ZXIgY2Fubm90IGhhdmUgYSBxdWVzdGlvbiBtYXJrLlwiKSxBbl9pbmRleF9zaWduYXR1cmVfcGFyYW1ldGVyX2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyOmEoMTAyMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXJfMTAyMFwiLFwiQW4gaW5kZXggc2lnbmF0dXJlIHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIiksQW5faW5kZXhfc2lnbmF0dXJlX211c3RfaGF2ZV9hX3R5cGVfYW5ub3RhdGlvbjphKDEwMjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbmRleF9zaWduYXR1cmVfbXVzdF9oYXZlX2FfdHlwZV9hbm5vdGF0aW9uXzEwMjFcIixcIkFuIGluZGV4IHNpZ25hdHVyZSBtdXN0IGhhdmUgYSB0eXBlIGFubm90YXRpb24uXCIpLEFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfbXVzdF9oYXZlX2FfdHlwZV9hbm5vdGF0aW9uOmEoMTAyMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfbXVzdF9oYXZlX2FfdHlwZV9hbm5vdGF0aW9uXzEwMjJcIixcIkFuIGluZGV4IHNpZ25hdHVyZSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGEgdHlwZSBhbm5vdGF0aW9uLlwiKSxyZWFkb25seV9tb2RpZmllcl9jYW5fb25seV9hcHBlYXJfb25fYV9wcm9wZXJ0eV9kZWNsYXJhdGlvbl9vcl9pbmRleF9zaWduYXR1cmU6YSgxMDI0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwicmVhZG9ubHlfbW9kaWZpZXJfY2FuX29ubHlfYXBwZWFyX29uX2FfcHJvcGVydHlfZGVjbGFyYXRpb25fb3JfaW5kZXhfc2lnbmF0dXJlXzEwMjRcIixcIidyZWFkb25seScgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgcHJvcGVydHkgZGVjbGFyYXRpb24gb3IgaW5kZXggc2lnbmF0dXJlLlwiKSxBbl9pbmRleF9zaWduYXR1cmVfY2Fubm90X2hhdmVfYV90cmFpbGluZ19jb21tYTphKDEwMjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbmRleF9zaWduYXR1cmVfY2Fubm90X2hhdmVfYV90cmFpbGluZ19jb21tYV8xMDI1XCIsXCJBbiBpbmRleCBzaWduYXR1cmUgY2Fubm90IGhhdmUgYSB0cmFpbGluZyBjb21tYS5cIiksQWNjZXNzaWJpbGl0eV9tb2RpZmllcl9hbHJlYWR5X3NlZW46YSgxMDI4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQWNjZXNzaWJpbGl0eV9tb2RpZmllcl9hbHJlYWR5X3NlZW5fMTAyOFwiLFwiQWNjZXNzaWJpbGl0eSBtb2RpZmllciBhbHJlYWR5IHNlZW4uXCIpLF8wX21vZGlmaWVyX211c3RfcHJlY2VkZV8xX21vZGlmaWVyOmEoMTAyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX21vZGlmaWVyX211c3RfcHJlY2VkZV8xX21vZGlmaWVyXzEwMjlcIixcIid7MH0nIG1vZGlmaWVyIG11c3QgcHJlY2VkZSAnezF9JyBtb2RpZmllci5cIiksXzBfbW9kaWZpZXJfYWxyZWFkeV9zZWVuOmEoMTAzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX21vZGlmaWVyX2FscmVhZHlfc2Vlbl8xMDMwXCIsXCInezB9JyBtb2RpZmllciBhbHJlYWR5IHNlZW4uXCIpLF8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fY2xhc3NfZWxlbWVudHNfb2ZfdGhpc19raW5kOmEoMTAzMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fY2xhc3NfZWxlbWVudHNfb2ZfdGhpc19raW5kXzEwMzFcIixcIid7MH0nIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gY2xhc3MgZWxlbWVudHMgb2YgdGhpcyBraW5kLlwiKSxzdXBlcl9tdXN0X2JlX2ZvbGxvd2VkX2J5X2FuX2FyZ3VtZW50X2xpc3Rfb3JfbWVtYmVyX2FjY2VzczphKDEwMzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJzdXBlcl9tdXN0X2JlX2ZvbGxvd2VkX2J5X2FuX2FyZ3VtZW50X2xpc3Rfb3JfbWVtYmVyX2FjY2Vzc18xMDM0XCIsXCInc3VwZXInIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gYXJndW1lbnQgbGlzdCBvciBtZW1iZXIgYWNjZXNzLlwiKSxPbmx5X2FtYmllbnRfbW9kdWxlc19jYW5fdXNlX3F1b3RlZF9uYW1lczphKDEwMzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPbmx5X2FtYmllbnRfbW9kdWxlc19jYW5fdXNlX3F1b3RlZF9uYW1lc18xMDM1XCIsXCJPbmx5IGFtYmllbnQgbW9kdWxlcyBjYW4gdXNlIHF1b3RlZCBuYW1lcy5cIiksU3RhdGVtZW50c19hcmVfbm90X2FsbG93ZWRfaW5fYW1iaWVudF9jb250ZXh0czphKDEwMzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzXzEwMzZcIixcIlN0YXRlbWVudHMgYXJlIG5vdCBhbGxvd2VkIGluIGFtYmllbnQgY29udGV4dHMuXCIpLEFfZGVjbGFyZV9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF9pbl9hbl9hbHJlYWR5X2FtYmllbnRfY29udGV4dDphKDEwMzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2RlY2xhcmVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHRfMTAzOFwiLFwiQSAnZGVjbGFyZScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaW4gYW4gYWxyZWFkeSBhbWJpZW50IGNvbnRleHQuXCIpLEluaXRpYWxpemVyc19hcmVfbm90X2FsbG93ZWRfaW5fYW1iaWVudF9jb250ZXh0czphKDEwMzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbml0aWFsaXplcnNfYXJlX25vdF9hbGxvd2VkX2luX2FtYmllbnRfY29udGV4dHNfMTAzOVwiLFwiSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiKSxfMF9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF9pbl9hbl9hbWJpZW50X2NvbnRleHQ6YSgxMDQwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYW1iaWVudF9jb250ZXh0XzEwNDBcIixcIid7MH0nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGluIGFuIGFtYmllbnQgY29udGV4dC5cIiksXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZTphKDEwNDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF9oZXJlXzEwNDJcIixcIid7MH0nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGhlcmUuXCIpLF8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYV9tb2R1bGVfb3JfbmFtZXNwYWNlX2VsZW1lbnQ6YSgxMDQ0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX21vZHVsZV9vcl9uYW1lc3BhY2VfZWxlbWVudF8xMDQ0XCIsXCInezB9JyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgbW9kdWxlIG9yIG5hbWVzcGFjZSBlbGVtZW50LlwiKSxUb3BfbGV2ZWxfZGVjbGFyYXRpb25zX2luX2RfdHNfZmlsZXNfbXVzdF9zdGFydF93aXRoX2VpdGhlcl9hX2RlY2xhcmVfb3JfZXhwb3J0X21vZGlmaWVyOmEoMTA0NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRvcF9sZXZlbF9kZWNsYXJhdGlvbnNfaW5fZF90c19maWxlc19tdXN0X3N0YXJ0X3dpdGhfZWl0aGVyX2FfZGVjbGFyZV9vcl9leHBvcnRfbW9kaWZpZXJfMTA0NlwiLFwiVG9wLWxldmVsIGRlY2xhcmF0aW9ucyBpbiAuZC50cyBmaWxlcyBtdXN0IHN0YXJ0IHdpdGggZWl0aGVyIGEgJ2RlY2xhcmUnIG9yICdleHBvcnQnIG1vZGlmaWVyLlwiKSxBX3Jlc3RfcGFyYW1ldGVyX2Nhbm5vdF9iZV9vcHRpb25hbDphKDEwNDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Jlc3RfcGFyYW1ldGVyX2Nhbm5vdF9iZV9vcHRpb25hbF8xMDQ3XCIsXCJBIHJlc3QgcGFyYW1ldGVyIGNhbm5vdCBiZSBvcHRpb25hbC5cIiksQV9yZXN0X3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcjphKDEwNDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Jlc3RfcGFyYW1ldGVyX2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyXzEwNDhcIixcIkEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCIpLEFfc2V0X2FjY2Vzc29yX211c3RfaGF2ZV9leGFjdGx5X29uZV9wYXJhbWV0ZXI6YSgxMDQ5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9zZXRfYWNjZXNzb3JfbXVzdF9oYXZlX2V4YWN0bHlfb25lX3BhcmFtZXRlcl8xMDQ5XCIsXCJBICdzZXQnIGFjY2Vzc29yIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbWV0ZXIuXCIpLEFfc2V0X2FjY2Vzc29yX2Nhbm5vdF9oYXZlX2FuX29wdGlvbmFsX3BhcmFtZXRlcjphKDEwNTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hbl9vcHRpb25hbF9wYXJhbWV0ZXJfMTA1MVwiLFwiQSAnc2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuXCIpLEFfc2V0X2FjY2Vzc29yX3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcjphKDEwNTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3NldF9hY2Nlc3Nvcl9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXJfMTA1MlwiLFwiQSAnc2V0JyBhY2Nlc3NvciBwYXJhbWV0ZXIgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCIpLEFfc2V0X2FjY2Vzc29yX2Nhbm5vdF9oYXZlX3Jlc3RfcGFyYW1ldGVyOmEoMTA1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfc2V0X2FjY2Vzc29yX2Nhbm5vdF9oYXZlX3Jlc3RfcGFyYW1ldGVyXzEwNTNcIixcIkEgJ3NldCcgYWNjZXNzb3IgY2Fubm90IGhhdmUgcmVzdCBwYXJhbWV0ZXIuXCIpLEFfZ2V0X2FjY2Vzc29yX2Nhbm5vdF9oYXZlX3BhcmFtZXRlcnM6YSgxMDU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9nZXRfYWNjZXNzb3JfY2Fubm90X2hhdmVfcGFyYW1ldGVyc18xMDU0XCIsXCJBICdnZXQnIGFjY2Vzc29yIGNhbm5vdCBoYXZlIHBhcmFtZXRlcnMuXCIpLFR5cGVfMF9pc19ub3RfYV92YWxpZF9hc3luY19mdW5jdGlvbl9yZXR1cm5fdHlwZV9pbl9FUzVfU2xhc2hFUzNfYmVjYXVzZV9pdF9kb2VzX25vdF9yZWZlcl90b19hX1Byb21pc2VfY29tcGF0aWJsZV9jb25zdHJ1Y3Rvcl92YWx1ZTphKDEwNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfaXNfbm90X2FfdmFsaWRfYXN5bmNfZnVuY3Rpb25fcmV0dXJuX3R5cGVfaW5fRVM1X1NsYXNoRVMzX2JlY2F1c2VfaXRfZG9lc19ub3RfcmVmZXJfdG9fYV9Qcm9tXzEwNTVcIixcIlR5cGUgJ3swfScgaXMgbm90IGEgdmFsaWQgYXN5bmMgZnVuY3Rpb24gcmV0dXJuIHR5cGUgaW4gRVM1L0VTMyBiZWNhdXNlIGl0IGRvZXMgbm90IHJlZmVyIHRvIGEgUHJvbWlzZS1jb21wYXRpYmxlIGNvbnN0cnVjdG9yIHZhbHVlLlwiKSxBY2Nlc3NvcnNfYXJlX29ubHlfYXZhaWxhYmxlX3doZW5fdGFyZ2V0aW5nX0VDTUFTY3JpcHRfNV9hbmRfaGlnaGVyOmEoMTA1NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFjY2Vzc29yc19hcmVfb25seV9hdmFpbGFibGVfd2hlbl90YXJnZXRpbmdfRUNNQVNjcmlwdF81X2FuZF9oaWdoZXJfMTA1NlwiLFwiQWNjZXNzb3JzIGFyZSBvbmx5IGF2YWlsYWJsZSB3aGVuIHRhcmdldGluZyBFQ01BU2NyaXB0IDUgYW5kIGhpZ2hlci5cIiksVGhlX3JldHVybl90eXBlX29mX2FuX2FzeW5jX2Z1bmN0aW9uX211c3RfZWl0aGVyX2JlX2FfdmFsaWRfcHJvbWlzZV9vcl9tdXN0X25vdF9jb250YWluX2FfY2FsbGFibGVfdGhlbl9tZW1iZXI6YSgxMDU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3JldHVybl90eXBlX29mX2FuX2FzeW5jX2Z1bmN0aW9uX211c3RfZWl0aGVyX2JlX2FfdmFsaWRfcHJvbWlzZV9vcl9tdXN0X25vdF9jb250YWluX2FfY2FsbGFibGVfdF8xMDU4XCIsXCJUaGUgcmV0dXJuIHR5cGUgb2YgYW4gYXN5bmMgZnVuY3Rpb24gbXVzdCBlaXRoZXIgYmUgYSB2YWxpZCBwcm9taXNlIG9yIG11c3Qgbm90IGNvbnRhaW4gYSBjYWxsYWJsZSAndGhlbicgbWVtYmVyLlwiKSxBX3Byb21pc2VfbXVzdF9oYXZlX2FfdGhlbl9tZXRob2Q6YSgxMDU5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9wcm9taXNlX211c3RfaGF2ZV9hX3RoZW5fbWV0aG9kXzEwNTlcIixcIkEgcHJvbWlzZSBtdXN0IGhhdmUgYSAndGhlbicgbWV0aG9kLlwiKSxUaGVfZmlyc3RfcGFyYW1ldGVyX29mX3RoZV90aGVuX21ldGhvZF9vZl9hX3Byb21pc2VfbXVzdF9iZV9hX2NhbGxiYWNrOmEoMTA2MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9maXJzdF9wYXJhbWV0ZXJfb2ZfdGhlX3RoZW5fbWV0aG9kX29mX2FfcHJvbWlzZV9tdXN0X2JlX2FfY2FsbGJhY2tfMTA2MFwiLFwiVGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgJ3RoZW4nIG1ldGhvZCBvZiBhIHByb21pc2UgbXVzdCBiZSBhIGNhbGxiYWNrLlwiKSxFbnVtX21lbWJlcl9tdXN0X2hhdmVfaW5pdGlhbGl6ZXI6YSgxMDYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRW51bV9tZW1iZXJfbXVzdF9oYXZlX2luaXRpYWxpemVyXzEwNjFcIixcIkVudW0gbWVtYmVyIG11c3QgaGF2ZSBpbml0aWFsaXplci5cIiksVHlwZV9pc19yZWZlcmVuY2VkX2RpcmVjdGx5X29yX2luZGlyZWN0bHlfaW5fdGhlX2Z1bGZpbGxtZW50X2NhbGxiYWNrX29mX2l0c19vd25fdGhlbl9tZXRob2Q6YSgxMDYyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9pc19yZWZlcmVuY2VkX2RpcmVjdGx5X29yX2luZGlyZWN0bHlfaW5fdGhlX2Z1bGZpbGxtZW50X2NhbGxiYWNrX29mX2l0c19vd25fdGhlbl9tZXRob2RfMTA2MlwiLFwiVHlwZSBpcyByZWZlcmVuY2VkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW4gdGhlIGZ1bGZpbGxtZW50IGNhbGxiYWNrIG9mIGl0cyBvd24gJ3RoZW4nIG1ldGhvZC5cIiksQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfaW5fYV9uYW1lc3BhY2U6YSgxMDYzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfaW5fYV9uYW1lc3BhY2VfMTA2M1wiLFwiQW4gZXhwb3J0IGFzc2lnbm1lbnQgY2Fubm90IGJlIHVzZWQgaW4gYSBuYW1lc3BhY2UuXCIpLFRoZV9yZXR1cm5fdHlwZV9vZl9hbl9hc3luY19mdW5jdGlvbl9vcl9tZXRob2RfbXVzdF9iZV90aGVfZ2xvYmFsX1Byb21pc2VfVF90eXBlX0RpZF95b3VfbWVhbl90b193cml0ZV9Qcm9taXNlXzA6YSgxMDY0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3JldHVybl90eXBlX29mX2FuX2FzeW5jX2Z1bmN0aW9uX29yX21ldGhvZF9tdXN0X2JlX3RoZV9nbG9iYWxfUHJvbWlzZV9UX3R5cGVfRGlkX3lvdV9tZWFuX3RvX3dyaV8xMDY0XCIsXCJUaGUgcmV0dXJuIHR5cGUgb2YgYW4gYXN5bmMgZnVuY3Rpb24gb3IgbWV0aG9kIG11c3QgYmUgdGhlIGdsb2JhbCBQcm9taXNlPFQ+IHR5cGUuIERpZCB5b3UgbWVhbiB0byB3cml0ZSAnUHJvbWlzZTx7MH0+Jz9cIiksSW5fYW1iaWVudF9lbnVtX2RlY2xhcmF0aW9uc19tZW1iZXJfaW5pdGlhbGl6ZXJfbXVzdF9iZV9jb25zdGFudF9leHByZXNzaW9uOmEoMTA2NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkluX2FtYmllbnRfZW51bV9kZWNsYXJhdGlvbnNfbWVtYmVyX2luaXRpYWxpemVyX211c3RfYmVfY29uc3RhbnRfZXhwcmVzc2lvbl8xMDY2XCIsXCJJbiBhbWJpZW50IGVudW0gZGVjbGFyYXRpb25zIG1lbWJlciBpbml0aWFsaXplciBtdXN0IGJlIGNvbnN0YW50IGV4cHJlc3Npb24uXCIpLFVuZXhwZWN0ZWRfdG9rZW5fQV9jb25zdHJ1Y3Rvcl9tZXRob2RfYWNjZXNzb3Jfb3JfcHJvcGVydHlfd2FzX2V4cGVjdGVkOmEoMTA2OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVuZXhwZWN0ZWRfdG9rZW5fQV9jb25zdHJ1Y3Rvcl9tZXRob2RfYWNjZXNzb3Jfb3JfcHJvcGVydHlfd2FzX2V4cGVjdGVkXzEwNjhcIixcIlVuZXhwZWN0ZWQgdG9rZW4uIEEgY29uc3RydWN0b3IsIG1ldGhvZCwgYWNjZXNzb3IsIG9yIHByb3BlcnR5IHdhcyBleHBlY3RlZC5cIiksVW5leHBlY3RlZF90b2tlbl9BX3R5cGVfcGFyYW1ldGVyX25hbWVfd2FzX2V4cGVjdGVkX3dpdGhvdXRfY3VybHlfYnJhY2VzOmEoMTA2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVuZXhwZWN0ZWRfdG9rZW5fQV90eXBlX3BhcmFtZXRlcl9uYW1lX3dhc19leHBlY3RlZF93aXRob3V0X2N1cmx5X2JyYWNlc18xMDY5XCIsXCJVbmV4cGVjdGVkIHRva2VuLiBBIHR5cGUgcGFyYW1ldGVyIG5hbWUgd2FzIGV4cGVjdGVkIHdpdGhvdXQgY3VybHkgYnJhY2VzLlwiKSxfMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfdHlwZV9tZW1iZXI6YSgxMDcwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX3R5cGVfbWVtYmVyXzEwNzBcIixcIid7MH0nIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSB0eXBlIG1lbWJlci5cIiksXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hbl9pbmRleF9zaWduYXR1cmU6YSgxMDcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hbl9pbmRleF9zaWduYXR1cmVfMTA3MVwiLFwiJ3swfScgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBhbiBpbmRleCBzaWduYXR1cmUuXCIpLEFfMF9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF93aXRoX2FuX2ltcG9ydF9kZWNsYXJhdGlvbjphKDEwNzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF9hbl9pbXBvcnRfZGVjbGFyYXRpb25fMTA3OVwiLFwiQSAnezB9JyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIGltcG9ydCBkZWNsYXJhdGlvbi5cIiksSW52YWxpZF9yZWZlcmVuY2VfZGlyZWN0aXZlX3N5bnRheDphKDEwODQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbnZhbGlkX3JlZmVyZW5jZV9kaXJlY3RpdmVfc3ludGF4XzEwODRcIixcIkludmFsaWQgJ3JlZmVyZW5jZScgZGlyZWN0aXZlIHN5bnRheC5cIiksT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hdmFpbGFibGVfd2hlbl90YXJnZXRpbmdfRUNNQVNjcmlwdF81X2FuZF9oaWdoZXJfVXNlX3RoZV9zeW50YXhfMDphKDEwODUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPY3RhbF9saXRlcmFsc19hcmVfbm90X2F2YWlsYWJsZV93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0XzVfYW5kX2hpZ2hlcl9Vc2VfdGhlX3N5bnRheF8wXzEwODVcIixcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYXZhaWxhYmxlIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgNSBhbmQgaGlnaGVyLiBVc2UgdGhlIHN5bnRheCAnezB9Jy5cIiksXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uOmEoMTA4OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl8xMDg5XCIsXCInezB9JyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCIpLF8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYV9wYXJhbWV0ZXI6YSgxMDkwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX3BhcmFtZXRlcl8xMDkwXCIsXCInezB9JyBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgcGFyYW1ldGVyLlwiKSxPbmx5X2Ffc2luZ2xlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX2lzX2FsbG93ZWRfaW5fYV9mb3JfaW5fc3RhdGVtZW50OmEoMTA5MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9ubHlfYV9zaW5nbGVfdmFyaWFibGVfZGVjbGFyYXRpb25faXNfYWxsb3dlZF9pbl9hX2Zvcl9pbl9zdGF0ZW1lbnRfMTA5MVwiLFwiT25seSBhIHNpbmdsZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBpcyBhbGxvd2VkIGluIGEgJ2Zvci4uLmluJyBzdGF0ZW1lbnQuXCIpLFR5cGVfcGFyYW1ldGVyc19jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb246YSgxMDkyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJzX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl8xMDkyXCIsXCJUeXBlIHBhcmFtZXRlcnMgY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uLlwiKSxUeXBlX2Fubm90YXRpb25fY2Fubm90X2FwcGVhcl9vbl9hX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uOmEoMTA5MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfYW5ub3RhdGlvbl9jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb25fMTA5M1wiLFwiVHlwZSBhbm5vdGF0aW9uIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5cIiksQW5fYWNjZXNzb3JfY2Fubm90X2hhdmVfdHlwZV9wYXJhbWV0ZXJzOmEoMTA5NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2FjY2Vzc29yX2Nhbm5vdF9oYXZlX3R5cGVfcGFyYW1ldGVyc18xMDk0XCIsXCJBbiBhY2Nlc3NvciBjYW5ub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMuXCIpLEFfc2V0X2FjY2Vzc29yX2Nhbm5vdF9oYXZlX2FfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbjphKDEwOTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb25fMTA5NVwiLFwiQSAnc2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBhIHJldHVybiB0eXBlIGFubm90YXRpb24uXCIpLEFuX2luZGV4X3NpZ25hdHVyZV9tdXN0X2hhdmVfZXhhY3RseV9vbmVfcGFyYW1ldGVyOmEoMTA5NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2luZGV4X3NpZ25hdHVyZV9tdXN0X2hhdmVfZXhhY3RseV9vbmVfcGFyYW1ldGVyXzEwOTZcIixcIkFuIGluZGV4IHNpZ25hdHVyZSBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVyLlwiKSxfMF9saXN0X2Nhbm5vdF9iZV9lbXB0eTphKDEwOTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9saXN0X2Nhbm5vdF9iZV9lbXB0eV8xMDk3XCIsXCInezB9JyBsaXN0IGNhbm5vdCBiZSBlbXB0eS5cIiksVHlwZV9wYXJhbWV0ZXJfbGlzdF9jYW5ub3RfYmVfZW1wdHk6YSgxMDk4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJfbGlzdF9jYW5ub3RfYmVfZW1wdHlfMTA5OFwiLFwiVHlwZSBwYXJhbWV0ZXIgbGlzdCBjYW5ub3QgYmUgZW1wdHkuXCIpLFR5cGVfYXJndW1lbnRfbGlzdF9jYW5ub3RfYmVfZW1wdHk6YSgxMDk5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9hcmd1bWVudF9saXN0X2Nhbm5vdF9iZV9lbXB0eV8xMDk5XCIsXCJUeXBlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGVtcHR5LlwiKSxJbnZhbGlkX3VzZV9vZl8wX2luX3N0cmljdF9tb2RlOmEoMTEwMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkludmFsaWRfdXNlX29mXzBfaW5fc3RyaWN0X21vZGVfMTEwMFwiLFwiSW52YWxpZCB1c2Ugb2YgJ3swfScgaW4gc3RyaWN0IG1vZGUuXCIpLHdpdGhfc3RhdGVtZW50c19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGU6YSgxMTAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwid2l0aF9zdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9zdHJpY3RfbW9kZV8xMTAxXCIsXCInd2l0aCcgc3RhdGVtZW50cyBhcmUgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUuXCIpLGRlbGV0ZV9jYW5ub3RfYmVfY2FsbGVkX29uX2FuX2lkZW50aWZpZXJfaW5fc3RyaWN0X21vZGU6YSgxMTAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiZGVsZXRlX2Nhbm5vdF9iZV9jYWxsZWRfb25fYW5faWRlbnRpZmllcl9pbl9zdHJpY3RfbW9kZV8xMTAyXCIsXCInZGVsZXRlJyBjYW5ub3QgYmUgY2FsbGVkIG9uIGFuIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUuXCIpLGZvcl9hd2FpdF9sb29wc19hcmVfb25seV9hbGxvd2VkX3dpdGhpbl9hc3luY19mdW5jdGlvbnNfYW5kX2F0X3RoZV90b3BfbGV2ZWxzX29mX21vZHVsZXM6YSgxMTAzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiZm9yX2F3YWl0X2xvb3BzX2FyZV9vbmx5X2FsbG93ZWRfd2l0aGluX2FzeW5jX2Z1bmN0aW9uc19hbmRfYXRfdGhlX3RvcF9sZXZlbHNfb2ZfbW9kdWxlc18xMTAzXCIsXCInZm9yIGF3YWl0JyBsb29wcyBhcmUgb25seSBhbGxvd2VkIHdpdGhpbiBhc3luYyBmdW5jdGlvbnMgYW5kIGF0IHRoZSB0b3AgbGV2ZWxzIG9mIG1vZHVsZXMuXCIpLEFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50OmEoMTEwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50XzExMDRcIixcIkEgJ2NvbnRpbnVlJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBzdGF0ZW1lbnQuXCIpLEFfYnJlYWtfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fb3Jfc3dpdGNoX3N0YXRlbWVudDphKDExMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2JyZWFrX3N0YXRlbWVudF9jYW5fb25seV9iZV91c2VkX3dpdGhpbl9hbl9lbmNsb3NpbmdfaXRlcmF0aW9uX29yX3N3aXRjaF9zdGF0ZW1lbnRfMTEwNVwiLFwiQSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIG9yIHN3aXRjaCBzdGF0ZW1lbnQuXCIpLFRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hX2Zvcl9vZl9zdGF0ZW1lbnRfbWF5X25vdF9iZV9hc3luYzphKDExMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X21heV9ub3RfYmVfYXN5bmNfMTEwNlwiLFwiVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLm9mJyBzdGF0ZW1lbnQgbWF5IG5vdCBiZSAnYXN5bmMnLlwiKSxKdW1wX3RhcmdldF9jYW5ub3RfY3Jvc3NfZnVuY3Rpb25fYm91bmRhcnk6YSgxMTA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSnVtcF90YXJnZXRfY2Fubm90X2Nyb3NzX2Z1bmN0aW9uX2JvdW5kYXJ5XzExMDdcIixcIkp1bXAgdGFyZ2V0IGNhbm5vdCBjcm9zcyBmdW5jdGlvbiBib3VuZGFyeS5cIiksQV9yZXR1cm5fc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FfZnVuY3Rpb25fYm9keTphKDExMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3JldHVybl9zdGF0ZW1lbnRfY2FuX29ubHlfYmVfdXNlZF93aXRoaW5fYV9mdW5jdGlvbl9ib2R5XzExMDhcIixcIkEgJ3JldHVybicgc3RhdGVtZW50IGNhbiBvbmx5IGJlIHVzZWQgd2l0aGluIGEgZnVuY3Rpb24gYm9keS5cIiksRXhwcmVzc2lvbl9leHBlY3RlZDphKDExMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeHByZXNzaW9uX2V4cGVjdGVkXzExMDlcIixcIkV4cHJlc3Npb24gZXhwZWN0ZWQuXCIpLFR5cGVfZXhwZWN0ZWQ6YSgxMTEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9leHBlY3RlZF8xMTEwXCIsXCJUeXBlIGV4cGVjdGVkLlwiKSxBX2RlZmF1bHRfY2xhdXNlX2Nhbm5vdF9hcHBlYXJfbW9yZV90aGFuX29uY2VfaW5fYV9zd2l0Y2hfc3RhdGVtZW50OmEoMTExMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfZGVmYXVsdF9jbGF1c2VfY2Fubm90X2FwcGVhcl9tb3JlX3RoYW5fb25jZV9pbl9hX3N3aXRjaF9zdGF0ZW1lbnRfMTExM1wiLFwiQSAnZGVmYXVsdCcgY2xhdXNlIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgaW4gYSAnc3dpdGNoJyBzdGF0ZW1lbnQuXCIpLER1cGxpY2F0ZV9sYWJlbF8wOmEoMTExNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkR1cGxpY2F0ZV9sYWJlbF8wXzExMTRcIixcIkR1cGxpY2F0ZSBsYWJlbCAnezB9Jy5cIiksQV9jb250aW51ZV9zdGF0ZW1lbnRfY2FuX29ubHlfanVtcF90b19hX2xhYmVsX29mX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50OmEoMTExNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2p1bXBfdG9fYV9sYWJlbF9vZl9hbl9lbmNsb3NpbmdfaXRlcmF0aW9uX3N0YXRlbWVudF8xMTE1XCIsXCJBICdjb250aW51ZScgc3RhdGVtZW50IGNhbiBvbmx5IGp1bXAgdG8gYSBsYWJlbCBvZiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudC5cIiksQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfanVtcF90b19hX2xhYmVsX29mX2FuX2VuY2xvc2luZ19zdGF0ZW1lbnQ6YSgxMTE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfanVtcF90b19hX2xhYmVsX29mX2FuX2VuY2xvc2luZ19zdGF0ZW1lbnRfMTExNlwiLFwiQSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBqdW1wIHRvIGEgbGFiZWwgb2YgYW4gZW5jbG9zaW5nIHN0YXRlbWVudC5cIiksQW5fb2JqZWN0X2xpdGVyYWxfY2Fubm90X2hhdmVfbXVsdGlwbGVfcHJvcGVydGllc193aXRoX3RoZV9zYW1lX25hbWU6YSgxMTE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fb2JqZWN0X2xpdGVyYWxfY2Fubm90X2hhdmVfbXVsdGlwbGVfcHJvcGVydGllc193aXRoX3RoZV9zYW1lX25hbWVfMTExN1wiLFwiQW4gb2JqZWN0IGxpdGVyYWwgY2Fubm90IGhhdmUgbXVsdGlwbGUgcHJvcGVydGllcyB3aXRoIHRoZSBzYW1lIG5hbWUuXCIpLEFuX29iamVjdF9saXRlcmFsX2Nhbm5vdF9oYXZlX211bHRpcGxlX2dldF9TbGFzaHNldF9hY2Nlc3NvcnNfd2l0aF90aGVfc2FtZV9uYW1lOmEoMTExOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX29iamVjdF9saXRlcmFsX2Nhbm5vdF9oYXZlX211bHRpcGxlX2dldF9TbGFzaHNldF9hY2Nlc3NvcnNfd2l0aF90aGVfc2FtZV9uYW1lXzExMThcIixcIkFuIG9iamVjdCBsaXRlcmFsIGNhbm5vdCBoYXZlIG11bHRpcGxlIGdldC9zZXQgYWNjZXNzb3JzIHdpdGggdGhlIHNhbWUgbmFtZS5cIiksQW5fb2JqZWN0X2xpdGVyYWxfY2Fubm90X2hhdmVfcHJvcGVydHlfYW5kX2FjY2Vzc29yX3dpdGhfdGhlX3NhbWVfbmFtZTphKDExMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9vYmplY3RfbGl0ZXJhbF9jYW5ub3RfaGF2ZV9wcm9wZXJ0eV9hbmRfYWNjZXNzb3Jfd2l0aF90aGVfc2FtZV9uYW1lXzExMTlcIixcIkFuIG9iamVjdCBsaXRlcmFsIGNhbm5vdCBoYXZlIHByb3BlcnR5IGFuZCBhY2Nlc3NvciB3aXRoIHRoZSBzYW1lIG5hbWUuXCIpLEFuX2V4cG9ydF9hc3NpZ25tZW50X2Nhbm5vdF9oYXZlX21vZGlmaWVyczphKDExMjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9leHBvcnRfYXNzaWdubWVudF9jYW5ub3RfaGF2ZV9tb2RpZmllcnNfMTEyMFwiLFwiQW4gZXhwb3J0IGFzc2lnbm1lbnQgY2Fubm90IGhhdmUgbW9kaWZpZXJzLlwiKSxPY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGU6YSgxMTIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlXzExMjFcIixcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS5cIiksVmFyaWFibGVfZGVjbGFyYXRpb25fbGlzdF9jYW5ub3RfYmVfZW1wdHk6YSgxMTIzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVmFyaWFibGVfZGVjbGFyYXRpb25fbGlzdF9jYW5ub3RfYmVfZW1wdHlfMTEyM1wiLFwiVmFyaWFibGUgZGVjbGFyYXRpb24gbGlzdCBjYW5ub3QgYmUgZW1wdHkuXCIpLERpZ2l0X2V4cGVjdGVkOmEoMTEyNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRpZ2l0X2V4cGVjdGVkXzExMjRcIixcIkRpZ2l0IGV4cGVjdGVkLlwiKSxIZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZDphKDExMjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJIZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZF8xMTI1XCIsXCJIZXhhZGVjaW1hbCBkaWdpdCBleHBlY3RlZC5cIiksVW5leHBlY3RlZF9lbmRfb2ZfdGV4dDphKDExMjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbmV4cGVjdGVkX2VuZF9vZl90ZXh0XzExMjZcIixcIlVuZXhwZWN0ZWQgZW5kIG9mIHRleHQuXCIpLEludmFsaWRfY2hhcmFjdGVyOmEoMTEyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkludmFsaWRfY2hhcmFjdGVyXzExMjdcIixcIkludmFsaWQgY2hhcmFjdGVyLlwiKSxEZWNsYXJhdGlvbl9vcl9zdGF0ZW1lbnRfZXhwZWN0ZWQ6YSgxMTI4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRGVjbGFyYXRpb25fb3Jfc3RhdGVtZW50X2V4cGVjdGVkXzExMjhcIixcIkRlY2xhcmF0aW9uIG9yIHN0YXRlbWVudCBleHBlY3RlZC5cIiksU3RhdGVtZW50X2V4cGVjdGVkOmEoMTEyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlN0YXRlbWVudF9leHBlY3RlZF8xMTI5XCIsXCJTdGF0ZW1lbnQgZXhwZWN0ZWQuXCIpLGNhc2Vfb3JfZGVmYXVsdF9leHBlY3RlZDphKDExMzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJjYXNlX29yX2RlZmF1bHRfZXhwZWN0ZWRfMTEzMFwiLFwiJ2Nhc2UnIG9yICdkZWZhdWx0JyBleHBlY3RlZC5cIiksUHJvcGVydHlfb3Jfc2lnbmF0dXJlX2V4cGVjdGVkOmEoMTEzMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5X29yX3NpZ25hdHVyZV9leHBlY3RlZF8xMTMxXCIsXCJQcm9wZXJ0eSBvciBzaWduYXR1cmUgZXhwZWN0ZWQuXCIpLEVudW1fbWVtYmVyX2V4cGVjdGVkOmEoMTEzMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkVudW1fbWVtYmVyX2V4cGVjdGVkXzExMzJcIixcIkVudW0gbWVtYmVyIGV4cGVjdGVkLlwiKSxWYXJpYWJsZV9kZWNsYXJhdGlvbl9leHBlY3RlZDphKDExMzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJWYXJpYWJsZV9kZWNsYXJhdGlvbl9leHBlY3RlZF8xMTM0XCIsXCJWYXJpYWJsZSBkZWNsYXJhdGlvbiBleHBlY3RlZC5cIiksQXJndW1lbnRfZXhwcmVzc2lvbl9leHBlY3RlZDphKDExMzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBcmd1bWVudF9leHByZXNzaW9uX2V4cGVjdGVkXzExMzVcIixcIkFyZ3VtZW50IGV4cHJlc3Npb24gZXhwZWN0ZWQuXCIpLFByb3BlcnR5X2Fzc2lnbm1lbnRfZXhwZWN0ZWQ6YSgxMTM2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfYXNzaWdubWVudF9leHBlY3RlZF8xMTM2XCIsXCJQcm9wZXJ0eSBhc3NpZ25tZW50IGV4cGVjdGVkLlwiKSxFeHByZXNzaW9uX29yX2NvbW1hX2V4cGVjdGVkOmEoMTEzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cHJlc3Npb25fb3JfY29tbWFfZXhwZWN0ZWRfMTEzN1wiLFwiRXhwcmVzc2lvbiBvciBjb21tYSBleHBlY3RlZC5cIiksUGFyYW1ldGVyX2RlY2xhcmF0aW9uX2V4cGVjdGVkOmEoMTEzOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl9kZWNsYXJhdGlvbl9leHBlY3RlZF8xMTM4XCIsXCJQYXJhbWV0ZXIgZGVjbGFyYXRpb24gZXhwZWN0ZWQuXCIpLFR5cGVfcGFyYW1ldGVyX2RlY2xhcmF0aW9uX2V4cGVjdGVkOmEoMTEzOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcGFyYW1ldGVyX2RlY2xhcmF0aW9uX2V4cGVjdGVkXzExMzlcIixcIlR5cGUgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIGV4cGVjdGVkLlwiKSxUeXBlX2FyZ3VtZW50X2V4cGVjdGVkOmEoMTE0MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfYXJndW1lbnRfZXhwZWN0ZWRfMTE0MFwiLFwiVHlwZSBhcmd1bWVudCBleHBlY3RlZC5cIiksU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWQ6YSgxMTQxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWRfMTE0MVwiLFwiU3RyaW5nIGxpdGVyYWwgZXhwZWN0ZWQuXCIpLExpbmVfYnJlYWtfbm90X3Blcm1pdHRlZF9oZXJlOmEoMTE0MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkxpbmVfYnJlYWtfbm90X3Blcm1pdHRlZF9oZXJlXzExNDJcIixcIkxpbmUgYnJlYWsgbm90IHBlcm1pdHRlZCBoZXJlLlwiKSxvcl9leHBlY3RlZDphKDExNDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJvcl9leHBlY3RlZF8xMTQ0XCIsXCIneycgb3IgJzsnIGV4cGVjdGVkLlwiKSxEZWNsYXJhdGlvbl9leHBlY3RlZDphKDExNDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEZWNsYXJhdGlvbl9leHBlY3RlZF8xMTQ2XCIsXCJEZWNsYXJhdGlvbiBleHBlY3RlZC5cIiksSW1wb3J0X2RlY2xhcmF0aW9uc19pbl9hX25hbWVzcGFjZV9jYW5ub3RfcmVmZXJlbmNlX2FfbW9kdWxlOmEoMTE0NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkltcG9ydF9kZWNsYXJhdGlvbnNfaW5fYV9uYW1lc3BhY2VfY2Fubm90X3JlZmVyZW5jZV9hX21vZHVsZV8xMTQ3XCIsXCJJbXBvcnQgZGVjbGFyYXRpb25zIGluIGEgbmFtZXNwYWNlIGNhbm5vdCByZWZlcmVuY2UgYSBtb2R1bGUuXCIpLENhbm5vdF91c2VfaW1wb3J0c19leHBvcnRzX29yX21vZHVsZV9hdWdtZW50YXRpb25zX3doZW5fbW9kdWxlX2lzX25vbmU6YSgxMTQ4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X3VzZV9pbXBvcnRzX2V4cG9ydHNfb3JfbW9kdWxlX2F1Z21lbnRhdGlvbnNfd2hlbl9tb2R1bGVfaXNfbm9uZV8xMTQ4XCIsXCJDYW5ub3QgdXNlIGltcG9ydHMsIGV4cG9ydHMsIG9yIG1vZHVsZSBhdWdtZW50YXRpb25zIHdoZW4gJy0tbW9kdWxlJyBpcyAnbm9uZScuXCIpLEZpbGVfbmFtZV8wX2RpZmZlcnNfZnJvbV9hbHJlYWR5X2luY2x1ZGVkX2ZpbGVfbmFtZV8xX29ubHlfaW5fY2FzaW5nOmEoMTE0OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZpbGVfbmFtZV8wX2RpZmZlcnNfZnJvbV9hbHJlYWR5X2luY2x1ZGVkX2ZpbGVfbmFtZV8xX29ubHlfaW5fY2FzaW5nXzExNDlcIixcIkZpbGUgbmFtZSAnezB9JyBkaWZmZXJzIGZyb20gYWxyZWFkeSBpbmNsdWRlZCBmaWxlIG5hbWUgJ3sxfScgb25seSBpbiBjYXNpbmcuXCIpLGNvbnN0X2RlY2xhcmF0aW9uc19tdXN0X2JlX2luaXRpYWxpemVkOmEoMTE1NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImNvbnN0X2RlY2xhcmF0aW9uc19tdXN0X2JlX2luaXRpYWxpemVkXzExNTVcIixcIidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWQuXCIpLGNvbnN0X2RlY2xhcmF0aW9uc19jYW5fb25seV9iZV9kZWNsYXJlZF9pbnNpZGVfYV9ibG9jazphKDExNTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJjb25zdF9kZWNsYXJhdGlvbnNfY2FuX29ubHlfYmVfZGVjbGFyZWRfaW5zaWRlX2FfYmxvY2tfMTE1NlwiLFwiJ2NvbnN0JyBkZWNsYXJhdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgaW5zaWRlIGEgYmxvY2suXCIpLGxldF9kZWNsYXJhdGlvbnNfY2FuX29ubHlfYmVfZGVjbGFyZWRfaW5zaWRlX2FfYmxvY2s6YSgxMTU3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwibGV0X2RlY2xhcmF0aW9uc19jYW5fb25seV9iZV9kZWNsYXJlZF9pbnNpZGVfYV9ibG9ja18xMTU3XCIsXCInbGV0JyBkZWNsYXJhdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgaW5zaWRlIGEgYmxvY2suXCIpLFVudGVybWluYXRlZF90ZW1wbGF0ZV9saXRlcmFsOmEoMTE2MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVudGVybWluYXRlZF90ZW1wbGF0ZV9saXRlcmFsXzExNjBcIixcIlVudGVybWluYXRlZCB0ZW1wbGF0ZSBsaXRlcmFsLlwiKSxVbnRlcm1pbmF0ZWRfcmVndWxhcl9leHByZXNzaW9uX2xpdGVyYWw6YSgxMTYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsXzExNjFcIixcIlVudGVybWluYXRlZCByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbC5cIiksQW5fb2JqZWN0X21lbWJlcl9jYW5ub3RfYmVfZGVjbGFyZWRfb3B0aW9uYWw6YSgxMTYyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fb2JqZWN0X21lbWJlcl9jYW5ub3RfYmVfZGVjbGFyZWRfb3B0aW9uYWxfMTE2MlwiLFwiQW4gb2JqZWN0IG1lbWJlciBjYW5ub3QgYmUgZGVjbGFyZWQgb3B0aW9uYWwuXCIpLEFfeWllbGRfZXhwcmVzc2lvbl9pc19vbmx5X2FsbG93ZWRfaW5fYV9nZW5lcmF0b3JfYm9keTphKDExNjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3lpZWxkX2V4cHJlc3Npb25faXNfb25seV9hbGxvd2VkX2luX2FfZ2VuZXJhdG9yX2JvZHlfMTE2M1wiLFwiQSAneWllbGQnIGV4cHJlc3Npb24gaXMgb25seSBhbGxvd2VkIGluIGEgZ2VuZXJhdG9yIGJvZHkuXCIpLENvbXB1dGVkX3Byb3BlcnR5X25hbWVzX2FyZV9ub3RfYWxsb3dlZF9pbl9lbnVtczphKDExNjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb21wdXRlZF9wcm9wZXJ0eV9uYW1lc19hcmVfbm90X2FsbG93ZWRfaW5fZW51bXNfMTE2NFwiLFwiQ29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgYXJlIG5vdCBhbGxvd2VkIGluIGVudW1zLlwiKSxBX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYW5fYW1iaWVudF9jb250ZXh0X211c3RfcmVmZXJfdG9fYW5fZXhwcmVzc2lvbl93aG9zZV90eXBlX2lzX2FfbGl0ZXJhbF90eXBlX29yX2FfdW5pcXVlX3N5bWJvbF90eXBlOmEoMTE2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV9pbl9hbl9hbWJpZW50X2NvbnRleHRfbXVzdF9yZWZlcl90b19hbl9leHByZXNzaW9uX3dob3NlX3R5cGVfaXNfYV9saXRlcmFsX3RfMTE2NVwiLFwiQSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIGluIGFuIGFtYmllbnQgY29udGV4dCBtdXN0IHJlZmVyIHRvIGFuIGV4cHJlc3Npb24gd2hvc2UgdHlwZSBpcyBhIGxpdGVyYWwgdHlwZSBvciBhICd1bmlxdWUgc3ltYm9sJyB0eXBlLlwiKSxBX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYV9jbGFzc19wcm9wZXJ0eV9kZWNsYXJhdGlvbl9tdXN0X2hhdmVfYV9zaW1wbGVfbGl0ZXJhbF90eXBlX29yX2FfdW5pcXVlX3N5bWJvbF90eXBlOmEoMTE2NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV9pbl9hX2NsYXNzX3Byb3BlcnR5X2RlY2xhcmF0aW9uX211c3RfaGF2ZV9hX3NpbXBsZV9saXRlcmFsX3R5cGVfb3JfYV91bmlxdWVfMTE2NlwiLFwiQSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIGluIGEgY2xhc3MgcHJvcGVydHkgZGVjbGFyYXRpb24gbXVzdCBoYXZlIGEgc2ltcGxlIGxpdGVyYWwgdHlwZSBvciBhICd1bmlxdWUgc3ltYm9sJyB0eXBlLlwiKSxBX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYV9tZXRob2Rfb3ZlcmxvYWRfbXVzdF9yZWZlcl90b19hbl9leHByZXNzaW9uX3dob3NlX3R5cGVfaXNfYV9saXRlcmFsX3R5cGVfb3JfYV91bmlxdWVfc3ltYm9sX3R5cGU6YSgxMTY4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lX2luX2FfbWV0aG9kX292ZXJsb2FkX211c3RfcmVmZXJfdG9fYW5fZXhwcmVzc2lvbl93aG9zZV90eXBlX2lzX2FfbGl0ZXJhbF90eV8xMTY4XCIsXCJBIGNvbXB1dGVkIHByb3BlcnR5IG5hbWUgaW4gYSBtZXRob2Qgb3ZlcmxvYWQgbXVzdCByZWZlciB0byBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgaXMgYSBsaXRlcmFsIHR5cGUgb3IgYSAndW5pcXVlIHN5bWJvbCcgdHlwZS5cIiksQV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lX2luX2FuX2ludGVyZmFjZV9tdXN0X3JlZmVyX3RvX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9pc19hX2xpdGVyYWxfdHlwZV9vcl9hX3VuaXF1ZV9zeW1ib2xfdHlwZTphKDExNjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYW5faW50ZXJmYWNlX211c3RfcmVmZXJfdG9fYW5fZXhwcmVzc2lvbl93aG9zZV90eXBlX2lzX2FfbGl0ZXJhbF90eXBlX29yXzExNjlcIixcIkEgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSBpbiBhbiBpbnRlcmZhY2UgbXVzdCByZWZlciB0byBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgaXMgYSBsaXRlcmFsIHR5cGUgb3IgYSAndW5pcXVlIHN5bWJvbCcgdHlwZS5cIiksQV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lX2luX2FfdHlwZV9saXRlcmFsX211c3RfcmVmZXJfdG9fYW5fZXhwcmVzc2lvbl93aG9zZV90eXBlX2lzX2FfbGl0ZXJhbF90eXBlX29yX2FfdW5pcXVlX3N5bWJvbF90eXBlOmEoMTE3MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV9pbl9hX3R5cGVfbGl0ZXJhbF9tdXN0X3JlZmVyX3RvX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9pc19hX2xpdGVyYWxfdHlwZV9fMTE3MFwiLFwiQSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIGluIGEgdHlwZSBsaXRlcmFsIG11c3QgcmVmZXIgdG8gYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGlzIGEgbGl0ZXJhbCB0eXBlIG9yIGEgJ3VuaXF1ZSBzeW1ib2wnIHR5cGUuXCIpLEFfY29tbWFfZXhwcmVzc2lvbl9pc19ub3RfYWxsb3dlZF9pbl9hX2NvbXB1dGVkX3Byb3BlcnR5X25hbWU6YSgxMTcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jb21tYV9leHByZXNzaW9uX2lzX25vdF9hbGxvd2VkX2luX2FfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV8xMTcxXCIsXCJBIGNvbW1hIGV4cHJlc3Npb24gaXMgbm90IGFsbG93ZWQgaW4gYSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lLlwiKSxleHRlbmRzX2NsYXVzZV9hbHJlYWR5X3NlZW46YSgxMTcyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiZXh0ZW5kc19jbGF1c2VfYWxyZWFkeV9zZWVuXzExNzJcIixcIidleHRlbmRzJyBjbGF1c2UgYWxyZWFkeSBzZWVuLlwiKSxleHRlbmRzX2NsYXVzZV9tdXN0X3ByZWNlZGVfaW1wbGVtZW50c19jbGF1c2U6YSgxMTczLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiZXh0ZW5kc19jbGF1c2VfbXVzdF9wcmVjZWRlX2ltcGxlbWVudHNfY2xhdXNlXzExNzNcIixcIidleHRlbmRzJyBjbGF1c2UgbXVzdCBwcmVjZWRlICdpbXBsZW1lbnRzJyBjbGF1c2UuXCIpLENsYXNzZXNfY2FuX29ubHlfZXh0ZW5kX2Ffc2luZ2xlX2NsYXNzOmEoMTE3NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNsYXNzZXNfY2FuX29ubHlfZXh0ZW5kX2Ffc2luZ2xlX2NsYXNzXzExNzRcIixcIkNsYXNzZXMgY2FuIG9ubHkgZXh0ZW5kIGEgc2luZ2xlIGNsYXNzLlwiKSxpbXBsZW1lbnRzX2NsYXVzZV9hbHJlYWR5X3NlZW46YSgxMTc1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiaW1wbGVtZW50c19jbGF1c2VfYWxyZWFkeV9zZWVuXzExNzVcIixcIidpbXBsZW1lbnRzJyBjbGF1c2UgYWxyZWFkeSBzZWVuLlwiKSxJbnRlcmZhY2VfZGVjbGFyYXRpb25fY2Fubm90X2hhdmVfaW1wbGVtZW50c19jbGF1c2U6YSgxMTc2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW50ZXJmYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX2ltcGxlbWVudHNfY2xhdXNlXzExNzZcIixcIkludGVyZmFjZSBkZWNsYXJhdGlvbiBjYW5ub3QgaGF2ZSAnaW1wbGVtZW50cycgY2xhdXNlLlwiKSxCaW5hcnlfZGlnaXRfZXhwZWN0ZWQ6YSgxMTc3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQmluYXJ5X2RpZ2l0X2V4cGVjdGVkXzExNzdcIixcIkJpbmFyeSBkaWdpdCBleHBlY3RlZC5cIiksT2N0YWxfZGlnaXRfZXhwZWN0ZWQ6YSgxMTc4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT2N0YWxfZGlnaXRfZXhwZWN0ZWRfMTE3OFwiLFwiT2N0YWwgZGlnaXQgZXhwZWN0ZWQuXCIpLFVuZXhwZWN0ZWRfdG9rZW5fZXhwZWN0ZWQ6YSgxMTc5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW5leHBlY3RlZF90b2tlbl9leHBlY3RlZF8xMTc5XCIsXCJVbmV4cGVjdGVkIHRva2VuLiAneycgZXhwZWN0ZWQuXCIpLFByb3BlcnR5X2Rlc3RydWN0dXJpbmdfcGF0dGVybl9leHBlY3RlZDphKDExODAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV9kZXN0cnVjdHVyaW5nX3BhdHRlcm5fZXhwZWN0ZWRfMTE4MFwiLFwiUHJvcGVydHkgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIGV4cGVjdGVkLlwiKSxBcnJheV9lbGVtZW50X2Rlc3RydWN0dXJpbmdfcGF0dGVybl9leHBlY3RlZDphKDExODEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBcnJheV9lbGVtZW50X2Rlc3RydWN0dXJpbmdfcGF0dGVybl9leHBlY3RlZF8xMTgxXCIsXCJBcnJheSBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybiBleHBlY3RlZC5cIiksQV9kZXN0cnVjdHVyaW5nX2RlY2xhcmF0aW9uX211c3RfaGF2ZV9hbl9pbml0aWFsaXplcjphKDExODIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2Rlc3RydWN0dXJpbmdfZGVjbGFyYXRpb25fbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyXzExODJcIixcIkEgZGVzdHJ1Y3R1cmluZyBkZWNsYXJhdGlvbiBtdXN0IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCIpLEFuX2ltcGxlbWVudGF0aW9uX2Nhbm5vdF9iZV9kZWNsYXJlZF9pbl9hbWJpZW50X2NvbnRleHRzOmEoMTE4MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2ltcGxlbWVudGF0aW9uX2Nhbm5vdF9iZV9kZWNsYXJlZF9pbl9hbWJpZW50X2NvbnRleHRzXzExODNcIixcIkFuIGltcGxlbWVudGF0aW9uIGNhbm5vdCBiZSBkZWNsYXJlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiKSxNb2RpZmllcnNfY2Fubm90X2FwcGVhcl9oZXJlOmEoMTE4NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1vZGlmaWVyc19jYW5ub3RfYXBwZWFyX2hlcmVfMTE4NFwiLFwiTW9kaWZpZXJzIGNhbm5vdCBhcHBlYXIgaGVyZS5cIiksTWVyZ2VfY29uZmxpY3RfbWFya2VyX2VuY291bnRlcmVkOmEoMTE4NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1lcmdlX2NvbmZsaWN0X21hcmtlcl9lbmNvdW50ZXJlZF8xMTg1XCIsXCJNZXJnZSBjb25mbGljdCBtYXJrZXIgZW5jb3VudGVyZWQuXCIpLEFfcmVzdF9lbGVtZW50X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyOmEoMTE4NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfcmVzdF9lbGVtZW50X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyXzExODZcIixcIkEgcmVzdCBlbGVtZW50IGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLlwiKSxBX3BhcmFtZXRlcl9wcm9wZXJ0eV9tYXlfbm90X2JlX2RlY2xhcmVkX3VzaW5nX2FfYmluZGluZ19wYXR0ZXJuOmEoMTE4NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfcGFyYW1ldGVyX3Byb3BlcnR5X21heV9ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9iaW5kaW5nX3BhdHRlcm5fMTE4N1wiLFwiQSBwYXJhbWV0ZXIgcHJvcGVydHkgbWF5IG5vdCBiZSBkZWNsYXJlZCB1c2luZyBhIGJpbmRpbmcgcGF0dGVybi5cIiksT25seV9hX3NpbmdsZV92YXJpYWJsZV9kZWNsYXJhdGlvbl9pc19hbGxvd2VkX2luX2FfZm9yX29mX3N0YXRlbWVudDphKDExODgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPbmx5X2Ffc2luZ2xlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX2lzX2FsbG93ZWRfaW5fYV9mb3Jfb2Zfc3RhdGVtZW50XzExODhcIixcIk9ubHkgYSBzaW5nbGUgdmFyaWFibGUgZGVjbGFyYXRpb24gaXMgYWxsb3dlZCBpbiBhICdmb3IuLi5vZicgc3RhdGVtZW50LlwiKSxUaGVfdmFyaWFibGVfZGVjbGFyYXRpb25fb2ZfYV9mb3JfaW5fc3RhdGVtZW50X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyOmEoMTE4OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV92YXJpYWJsZV9kZWNsYXJhdGlvbl9vZl9hX2Zvcl9pbl9zdGF0ZW1lbnRfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXJfMTE4OVwiLFwiVGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIG9mIGEgJ2Zvci4uLmluJyBzdGF0ZW1lbnQgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCIpLFRoZV92YXJpYWJsZV9kZWNsYXJhdGlvbl9vZl9hX2Zvcl9vZl9zdGF0ZW1lbnRfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXI6YSgxMTkwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX29mX2FfZm9yX29mX3N0YXRlbWVudF9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcl8xMTkwXCIsXCJUaGUgdmFyaWFibGUgZGVjbGFyYXRpb24gb2YgYSAnZm9yLi4ub2YnIHN0YXRlbWVudCBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIiksQW5faW1wb3J0X2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX21vZGlmaWVyczphKDExOTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbXBvcnRfZGVjbGFyYXRpb25fY2Fubm90X2hhdmVfbW9kaWZpZXJzXzExOTFcIixcIkFuIGltcG9ydCBkZWNsYXJhdGlvbiBjYW5ub3QgaGF2ZSBtb2RpZmllcnMuXCIpLE1vZHVsZV8wX2hhc19ub19kZWZhdWx0X2V4cG9ydDphKDExOTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJNb2R1bGVfMF9oYXNfbm9fZGVmYXVsdF9leHBvcnRfMTE5MlwiLFwiTW9kdWxlICd7MH0nIGhhcyBubyBkZWZhdWx0IGV4cG9ydC5cIiksQW5fZXhwb3J0X2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX21vZGlmaWVyczphKDExOTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9leHBvcnRfZGVjbGFyYXRpb25fY2Fubm90X2hhdmVfbW9kaWZpZXJzXzExOTNcIixcIkFuIGV4cG9ydCBkZWNsYXJhdGlvbiBjYW5ub3QgaGF2ZSBtb2RpZmllcnMuXCIpLEV4cG9ydF9kZWNsYXJhdGlvbnNfYXJlX25vdF9wZXJtaXR0ZWRfaW5fYV9uYW1lc3BhY2U6YSgxMTk0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwb3J0X2RlY2xhcmF0aW9uc19hcmVfbm90X3Blcm1pdHRlZF9pbl9hX25hbWVzcGFjZV8xMTk0XCIsXCJFeHBvcnQgZGVjbGFyYXRpb25zIGFyZSBub3QgcGVybWl0dGVkIGluIGEgbmFtZXNwYWNlLlwiKSxleHBvcnRfQXN0ZXJpc2tfZG9lc19ub3RfcmVfZXhwb3J0X2FfZGVmYXVsdDphKDExOTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJleHBvcnRfQXN0ZXJpc2tfZG9lc19ub3RfcmVfZXhwb3J0X2FfZGVmYXVsdF8xMTk1XCIsXCInZXhwb3J0IConIGRvZXMgbm90IHJlLWV4cG9ydCBhIGRlZmF1bHQuXCIpLENhdGNoX2NsYXVzZV92YXJpYWJsZV90eXBlX2Fubm90YXRpb25fbXVzdF9iZV9hbnlfb3JfdW5rbm93bl9pZl9zcGVjaWZpZWQ6YSgxMTk2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2F0Y2hfY2xhdXNlX3ZhcmlhYmxlX3R5cGVfYW5ub3RhdGlvbl9tdXN0X2JlX2FueV9vcl91bmtub3duX2lmX3NwZWNpZmllZF8xMTk2XCIsXCJDYXRjaCBjbGF1c2UgdmFyaWFibGUgdHlwZSBhbm5vdGF0aW9uIG11c3QgYmUgJ2FueScgb3IgJ3Vua25vd24nIGlmIHNwZWNpZmllZC5cIiksQ2F0Y2hfY2xhdXNlX3ZhcmlhYmxlX2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyOmEoMTE5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhdGNoX2NsYXVzZV92YXJpYWJsZV9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcl8xMTk3XCIsXCJDYXRjaCBjbGF1c2UgdmFyaWFibGUgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCIpLEFuX2V4dGVuZGVkX1VuaWNvZGVfZXNjYXBlX3ZhbHVlX211c3RfYmVfYmV0d2Vlbl8weDBfYW5kXzB4MTBGRkZGX2luY2x1c2l2ZTphKDExOTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9leHRlbmRlZF9Vbmljb2RlX2VzY2FwZV92YWx1ZV9tdXN0X2JlX2JldHdlZW5fMHgwX2FuZF8weDEwRkZGRl9pbmNsdXNpdmVfMTE5OFwiLFwiQW4gZXh0ZW5kZWQgVW5pY29kZSBlc2NhcGUgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDB4MCBhbmQgMHgxMEZGRkYgaW5jbHVzaXZlLlwiKSxVbnRlcm1pbmF0ZWRfVW5pY29kZV9lc2NhcGVfc2VxdWVuY2U6YSgxMTk5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW50ZXJtaW5hdGVkX1VuaWNvZGVfZXNjYXBlX3NlcXVlbmNlXzExOTlcIixcIlVudGVybWluYXRlZCBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZS5cIiksTGluZV90ZXJtaW5hdG9yX25vdF9wZXJtaXR0ZWRfYmVmb3JlX2Fycm93OmEoMTIwMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkxpbmVfdGVybWluYXRvcl9ub3RfcGVybWl0dGVkX2JlZm9yZV9hcnJvd18xMjAwXCIsXCJMaW5lIHRlcm1pbmF0b3Igbm90IHBlcm1pdHRlZCBiZWZvcmUgYXJyb3cuXCIpLEltcG9ydF9hc3NpZ25tZW50X2Nhbm5vdF9iZV91c2VkX3doZW5fdGFyZ2V0aW5nX0VDTUFTY3JpcHRfbW9kdWxlc19Db25zaWRlcl91c2luZ19pbXBvcnRfQXN0ZXJpc2tfYXNfbnNfZnJvbV9tb2RfaW1wb3J0X2FfZnJvbV9tb2RfaW1wb3J0X2RfZnJvbV9tb2Rfb3JfYW5vdGhlcl9tb2R1bGVfZm9ybWF0X2luc3RlYWQ6YSgxMjAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW1wb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfd2hlbl90YXJnZXRpbmdfRUNNQVNjcmlwdF9tb2R1bGVzX0NvbnNpZGVyX3VzaW5nX2ltcG9ydF9Bc3Rlcmlza19hc18xMjAyXCIsYEltcG9ydCBhc3NpZ25tZW50IGNhbm5vdCBiZSB1c2VkIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgbW9kdWxlcy4gQ29uc2lkZXIgdXNpbmcgJ2ltcG9ydCAqIGFzIG5zIGZyb20gXCJtb2RcIicsICdpbXBvcnQge2F9IGZyb20gXCJtb2RcIicsICdpbXBvcnQgZCBmcm9tIFwibW9kXCInLCBvciBhbm90aGVyIG1vZHVsZSBmb3JtYXQgaW5zdGVhZC5gKSxFeHBvcnRfYXNzaWdubWVudF9jYW5ub3RfYmVfdXNlZF93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0X21vZHVsZXNfQ29uc2lkZXJfdXNpbmdfZXhwb3J0X2RlZmF1bHRfb3JfYW5vdGhlcl9tb2R1bGVfZm9ybWF0X2luc3RlYWQ6YSgxMjAzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfd2hlbl90YXJnZXRpbmdfRUNNQVNjcmlwdF9tb2R1bGVzX0NvbnNpZGVyX3VzaW5nX2V4cG9ydF9kZWZhdWx0X29yX18xMjAzXCIsXCJFeHBvcnQgYXNzaWdubWVudCBjYW5ub3QgYmUgdXNlZCB3aGVuIHRhcmdldGluZyBFQ01BU2NyaXB0IG1vZHVsZXMuIENvbnNpZGVyIHVzaW5nICdleHBvcnQgZGVmYXVsdCcgb3IgYW5vdGhlciBtb2R1bGUgZm9ybWF0IGluc3RlYWQuXCIpLFJlX2V4cG9ydGluZ19hX3R5cGVfd2hlbl90aGVfaXNvbGF0ZWRNb2R1bGVzX2ZsYWdfaXNfcHJvdmlkZWRfcmVxdWlyZXNfdXNpbmdfZXhwb3J0X3R5cGU6YSgxMjA1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmVfZXhwb3J0aW5nX2FfdHlwZV93aGVuX3RoZV9pc29sYXRlZE1vZHVsZXNfZmxhZ19pc19wcm92aWRlZF9yZXF1aXJlc191c2luZ19leHBvcnRfdHlwZV8xMjA1XCIsXCJSZS1leHBvcnRpbmcgYSB0eXBlIHdoZW4gdGhlICctLWlzb2xhdGVkTW9kdWxlcycgZmxhZyBpcyBwcm92aWRlZCByZXF1aXJlcyB1c2luZyAnZXhwb3J0IHR5cGUnLlwiKSxEZWNvcmF0b3JzX2FyZV9ub3RfdmFsaWRfaGVyZTphKDEyMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEZWNvcmF0b3JzX2FyZV9ub3RfdmFsaWRfaGVyZV8xMjA2XCIsXCJEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZS5cIiksRGVjb3JhdG9yc19jYW5ub3RfYmVfYXBwbGllZF90b19tdWx0aXBsZV9nZXRfU2xhc2hzZXRfYWNjZXNzb3JzX29mX3RoZV9zYW1lX25hbWU6YSgxMjA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRGVjb3JhdG9yc19jYW5ub3RfYmVfYXBwbGllZF90b19tdWx0aXBsZV9nZXRfU2xhc2hzZXRfYWNjZXNzb3JzX29mX3RoZV9zYW1lX25hbWVfMTIwN1wiLFwiRGVjb3JhdG9ycyBjYW5ub3QgYmUgYXBwbGllZCB0byBtdWx0aXBsZSBnZXQvc2V0IGFjY2Vzc29ycyBvZiB0aGUgc2FtZSBuYW1lLlwiKSxfMF9jYW5ub3RfYmVfY29tcGlsZWRfdW5kZXJfaXNvbGF0ZWRNb2R1bGVzX2JlY2F1c2VfaXRfaXNfY29uc2lkZXJlZF9hX2dsb2JhbF9zY3JpcHRfZmlsZV9BZGRfYW5faW1wb3J0X2V4cG9ydF9vcl9hbl9lbXB0eV9leHBvcnRfc3RhdGVtZW50X3RvX21ha2VfaXRfYV9tb2R1bGU6YSgxMjA4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfY2Fubm90X2JlX2NvbXBpbGVkX3VuZGVyX2lzb2xhdGVkTW9kdWxlc19iZWNhdXNlX2l0X2lzX2NvbnNpZGVyZWRfYV9nbG9iYWxfc2NyaXB0X2ZpbGVfQWRkX2FuX2ltcF8xMjA4XCIsXCInezB9JyBjYW5ub3QgYmUgY29tcGlsZWQgdW5kZXIgJy0taXNvbGF0ZWRNb2R1bGVzJyBiZWNhdXNlIGl0IGlzIGNvbnNpZGVyZWQgYSBnbG9iYWwgc2NyaXB0IGZpbGUuIEFkZCBhbiBpbXBvcnQsIGV4cG9ydCwgb3IgYW4gZW1wdHkgJ2V4cG9ydCB7fScgc3RhdGVtZW50IHRvIG1ha2UgaXQgYSBtb2R1bGUuXCIpLENvZGVfY29udGFpbmVkX2luX2FfY2xhc3NfaXNfZXZhbHVhdGVkX2luX0phdmFTY3JpcHRfc19zdHJpY3RfbW9kZV93aGljaF9kb2VzX25vdF9hbGxvd190aGlzX3VzZV9vZl8wX0Zvcl9tb3JlX2luZm9ybWF0aW9uX3NlZV9odHRwc19Db2xvbl9TbGFzaF9TbGFzaGRldmVsb3Blcl9tb3ppbGxhX29yZ19TbGFzaGVuX1VTX1NsYXNoZG9jc19TbGFzaFdlYl9TbGFzaEphdmFTY3JpcHRfU2xhc2hSZWZlcmVuY2VfU2xhc2hTdHJpY3RfbW9kZTphKDEyMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb2RlX2NvbnRhaW5lZF9pbl9hX2NsYXNzX2lzX2V2YWx1YXRlZF9pbl9KYXZhU2NyaXB0X3Nfc3RyaWN0X21vZGVfd2hpY2hfZG9lc19ub3RfYWxsb3dfdGhpc191c2Vfb2ZfXzEyMTBcIixcIkNvZGUgY29udGFpbmVkIGluIGEgY2xhc3MgaXMgZXZhbHVhdGVkIGluIEphdmFTY3JpcHQncyBzdHJpY3QgbW9kZSB3aGljaCBkb2VzIG5vdCBhbGxvdyB0aGlzIHVzZSBvZiAnezB9Jy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9TdHJpY3RfbW9kZS5cIiksQV9jbGFzc19kZWNsYXJhdGlvbl93aXRob3V0X3RoZV9kZWZhdWx0X21vZGlmaWVyX211c3RfaGF2ZV9hX25hbWU6YSgxMjExLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jbGFzc19kZWNsYXJhdGlvbl93aXRob3V0X3RoZV9kZWZhdWx0X21vZGlmaWVyX211c3RfaGF2ZV9hX25hbWVfMTIxMVwiLFwiQSBjbGFzcyBkZWNsYXJhdGlvbiB3aXRob3V0IHRoZSAnZGVmYXVsdCcgbW9kaWZpZXIgbXVzdCBoYXZlIGEgbmFtZS5cIiksSWRlbnRpZmllcl9leHBlY3RlZF8wX2lzX2FfcmVzZXJ2ZWRfd29yZF9pbl9zdHJpY3RfbW9kZTphKDEyMTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJZGVudGlmaWVyX2V4cGVjdGVkXzBfaXNfYV9yZXNlcnZlZF93b3JkX2luX3N0cmljdF9tb2RlXzEyMTJcIixcIklkZW50aWZpZXIgZXhwZWN0ZWQuICd7MH0nIGlzIGEgcmVzZXJ2ZWQgd29yZCBpbiBzdHJpY3QgbW9kZS5cIiksSWRlbnRpZmllcl9leHBlY3RlZF8wX2lzX2FfcmVzZXJ2ZWRfd29yZF9pbl9zdHJpY3RfbW9kZV9DbGFzc19kZWZpbml0aW9uc19hcmVfYXV0b21hdGljYWxseV9pbl9zdHJpY3RfbW9kZTphKDEyMTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJZGVudGlmaWVyX2V4cGVjdGVkXzBfaXNfYV9yZXNlcnZlZF93b3JkX2luX3N0cmljdF9tb2RlX0NsYXNzX2RlZmluaXRpb25zX2FyZV9hdXRvbWF0aWNhbGx5X2luX3N0cmljXzEyMTNcIixcIklkZW50aWZpZXIgZXhwZWN0ZWQuICd7MH0nIGlzIGEgcmVzZXJ2ZWQgd29yZCBpbiBzdHJpY3QgbW9kZS4gQ2xhc3MgZGVmaW5pdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkgaW4gc3RyaWN0IG1vZGUuXCIpLElkZW50aWZpZXJfZXhwZWN0ZWRfMF9pc19hX3Jlc2VydmVkX3dvcmRfaW5fc3RyaWN0X21vZGVfTW9kdWxlc19hcmVfYXV0b21hdGljYWxseV9pbl9zdHJpY3RfbW9kZTphKDEyMTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJZGVudGlmaWVyX2V4cGVjdGVkXzBfaXNfYV9yZXNlcnZlZF93b3JkX2luX3N0cmljdF9tb2RlX01vZHVsZXNfYXJlX2F1dG9tYXRpY2FsbHlfaW5fc3RyaWN0X21vZGVfMTIxNFwiLFwiSWRlbnRpZmllciBleHBlY3RlZC4gJ3swfScgaXMgYSByZXNlcnZlZCB3b3JkIGluIHN0cmljdCBtb2RlLiBNb2R1bGVzIGFyZSBhdXRvbWF0aWNhbGx5IGluIHN0cmljdCBtb2RlLlwiKSxJbnZhbGlkX3VzZV9vZl8wX01vZHVsZXNfYXJlX2F1dG9tYXRpY2FsbHlfaW5fc3RyaWN0X21vZGU6YSgxMjE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW52YWxpZF91c2Vfb2ZfMF9Nb2R1bGVzX2FyZV9hdXRvbWF0aWNhbGx5X2luX3N0cmljdF9tb2RlXzEyMTVcIixcIkludmFsaWQgdXNlIG9mICd7MH0nLiBNb2R1bGVzIGFyZSBhdXRvbWF0aWNhbGx5IGluIHN0cmljdCBtb2RlLlwiKSxJZGVudGlmaWVyX2V4cGVjdGVkX2VzTW9kdWxlX2lzX3Jlc2VydmVkX2FzX2FuX2V4cG9ydGVkX21hcmtlcl93aGVuX3RyYW5zZm9ybWluZ19FQ01BU2NyaXB0X21vZHVsZXM6YSgxMjE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSWRlbnRpZmllcl9leHBlY3RlZF9lc01vZHVsZV9pc19yZXNlcnZlZF9hc19hbl9leHBvcnRlZF9tYXJrZXJfd2hlbl90cmFuc2Zvcm1pbmdfRUNNQVNjcmlwdF9tb2R1bGVzXzEyMTZcIixcIklkZW50aWZpZXIgZXhwZWN0ZWQuICdfX2VzTW9kdWxlJyBpcyByZXNlcnZlZCBhcyBhbiBleHBvcnRlZCBtYXJrZXIgd2hlbiB0cmFuc2Zvcm1pbmcgRUNNQVNjcmlwdCBtb2R1bGVzLlwiKSxFeHBvcnRfYXNzaWdubWVudF9pc19ub3Rfc3VwcG9ydGVkX3doZW5fbW9kdWxlX2ZsYWdfaXNfc3lzdGVtOmEoMTIxOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cG9ydF9hc3NpZ25tZW50X2lzX25vdF9zdXBwb3J0ZWRfd2hlbl9tb2R1bGVfZmxhZ19pc19zeXN0ZW1fMTIxOFwiLFwiRXhwb3J0IGFzc2lnbm1lbnQgaXMgbm90IHN1cHBvcnRlZCB3aGVuICctLW1vZHVsZScgZmxhZyBpcyAnc3lzdGVtJy5cIiksRXhwZXJpbWVudGFsX3N1cHBvcnRfZm9yX2RlY29yYXRvcnNfaXNfYV9mZWF0dXJlX3RoYXRfaXNfc3ViamVjdF90b19jaGFuZ2VfaW5fYV9mdXR1cmVfcmVsZWFzZV9TZXRfdGhlX2V4cGVyaW1lbnRhbERlY29yYXRvcnNfb3B0aW9uX2luX3lvdXJfdHNjb25maWdfb3JfanNjb25maWdfdG9fcmVtb3ZlX3RoaXNfd2FybmluZzphKDEyMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeHBlcmltZW50YWxfc3VwcG9ydF9mb3JfZGVjb3JhdG9yc19pc19hX2ZlYXR1cmVfdGhhdF9pc19zdWJqZWN0X3RvX2NoYW5nZV9pbl9hX2Z1dHVyZV9yZWxlYXNlX1NldF90XzEyMTlcIixcIkV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBkZWNvcmF0b3JzIGlzIGEgZmVhdHVyZSB0aGF0IGlzIHN1YmplY3QgdG8gY2hhbmdlIGluIGEgZnV0dXJlIHJlbGVhc2UuIFNldCB0aGUgJ2V4cGVyaW1lbnRhbERlY29yYXRvcnMnIG9wdGlvbiBpbiB5b3VyICd0c2NvbmZpZycgb3IgJ2pzY29uZmlnJyB0byByZW1vdmUgdGhpcyB3YXJuaW5nLlwiKSxHZW5lcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbl9hbWJpZW50X2NvbnRleHQ6YSgxMjIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiR2VuZXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaW5fYW5fYW1iaWVudF9jb250ZXh0XzEyMjFcIixcIkdlbmVyYXRvcnMgYXJlIG5vdCBhbGxvd2VkIGluIGFuIGFtYmllbnQgY29udGV4dC5cIiksQW5fb3ZlcmxvYWRfc2lnbmF0dXJlX2Nhbm5vdF9iZV9kZWNsYXJlZF9hc19hX2dlbmVyYXRvcjphKDEyMjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9vdmVybG9hZF9zaWduYXR1cmVfY2Fubm90X2JlX2RlY2xhcmVkX2FzX2FfZ2VuZXJhdG9yXzEyMjJcIixcIkFuIG92ZXJsb2FkIHNpZ25hdHVyZSBjYW5ub3QgYmUgZGVjbGFyZWQgYXMgYSBnZW5lcmF0b3IuXCIpLF8wX3RhZ19hbHJlYWR5X3NwZWNpZmllZDphKDEyMjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF90YWdfYWxyZWFkeV9zcGVjaWZpZWRfMTIyM1wiLFwiJ3swfScgdGFnIGFscmVhZHkgc3BlY2lmaWVkLlwiKSxTaWduYXR1cmVfMF9tdXN0X2JlX2FfdHlwZV9wcmVkaWNhdGU6YSgxMjI0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU2lnbmF0dXJlXzBfbXVzdF9iZV9hX3R5cGVfcHJlZGljYXRlXzEyMjRcIixcIlNpZ25hdHVyZSAnezB9JyBtdXN0IGJlIGEgdHlwZSBwcmVkaWNhdGUuXCIpLENhbm5vdF9maW5kX3BhcmFtZXRlcl8wOmEoMTIyNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX3BhcmFtZXRlcl8wXzEyMjVcIixcIkNhbm5vdCBmaW5kIHBhcmFtZXRlciAnezB9Jy5cIiksVHlwZV9wcmVkaWNhdGVfMF9pc19ub3RfYXNzaWduYWJsZV90b18xOmEoMTIyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcHJlZGljYXRlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fMV8xMjI2XCIsXCJUeXBlIHByZWRpY2F0ZSAnezB9JyBpcyBub3QgYXNzaWduYWJsZSB0byAnezF9Jy5cIiksUGFyYW1ldGVyXzBfaXNfbm90X2luX3RoZV9zYW1lX3Bvc2l0aW9uX2FzX3BhcmFtZXRlcl8xOmEoMTIyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX2lzX25vdF9pbl90aGVfc2FtZV9wb3NpdGlvbl9hc19wYXJhbWV0ZXJfMV8xMjI3XCIsXCJQYXJhbWV0ZXIgJ3swfScgaXMgbm90IGluIHRoZSBzYW1lIHBvc2l0aW9uIGFzIHBhcmFtZXRlciAnezF9Jy5cIiksQV90eXBlX3ByZWRpY2F0ZV9pc19vbmx5X2FsbG93ZWRfaW5fcmV0dXJuX3R5cGVfcG9zaXRpb25fZm9yX2Z1bmN0aW9uc19hbmRfbWV0aG9kczphKDEyMjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3R5cGVfcHJlZGljYXRlX2lzX29ubHlfYWxsb3dlZF9pbl9yZXR1cm5fdHlwZV9wb3NpdGlvbl9mb3JfZnVuY3Rpb25zX2FuZF9tZXRob2RzXzEyMjhcIixcIkEgdHlwZSBwcmVkaWNhdGUgaXMgb25seSBhbGxvd2VkIGluIHJldHVybiB0eXBlIHBvc2l0aW9uIGZvciBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuXCIpLEFfdHlwZV9wcmVkaWNhdGVfY2Fubm90X3JlZmVyZW5jZV9hX3Jlc3RfcGFyYW1ldGVyOmEoMTIyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfdHlwZV9wcmVkaWNhdGVfY2Fubm90X3JlZmVyZW5jZV9hX3Jlc3RfcGFyYW1ldGVyXzEyMjlcIixcIkEgdHlwZSBwcmVkaWNhdGUgY2Fubm90IHJlZmVyZW5jZSBhIHJlc3QgcGFyYW1ldGVyLlwiKSxBX3R5cGVfcHJlZGljYXRlX2Nhbm5vdF9yZWZlcmVuY2VfZWxlbWVudF8wX2luX2FfYmluZGluZ19wYXR0ZXJuOmEoMTIzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfdHlwZV9wcmVkaWNhdGVfY2Fubm90X3JlZmVyZW5jZV9lbGVtZW50XzBfaW5fYV9iaW5kaW5nX3BhdHRlcm5fMTIzMFwiLFwiQSB0eXBlIHByZWRpY2F0ZSBjYW5ub3QgcmVmZXJlbmNlIGVsZW1lbnQgJ3swfScgaW4gYSBiaW5kaW5nIHBhdHRlcm4uXCIpLEFuX2V4cG9ydF9hc3NpZ25tZW50X211c3RfYmVfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX2ZpbGVfb3JfbW9kdWxlX2RlY2xhcmF0aW9uOmEoMTIzMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2V4cG9ydF9hc3NpZ25tZW50X211c3RfYmVfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX2ZpbGVfb3JfbW9kdWxlX2RlY2xhcmF0aW9uXzEyMzFcIixcIkFuIGV4cG9ydCBhc3NpZ25tZW50IG11c3QgYmUgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIGZpbGUgb3IgbW9kdWxlIGRlY2xhcmF0aW9uLlwiKSxBbl9pbXBvcnRfZGVjbGFyYXRpb25fY2FuX29ubHlfYmVfdXNlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbmFtZXNwYWNlX29yX21vZHVsZTphKDEyMzIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbXBvcnRfZGVjbGFyYXRpb25fY2FuX29ubHlfYmVfdXNlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbmFtZXNwYWNlX29yX21vZHVsZV8xMjMyXCIsXCJBbiBpbXBvcnQgZGVjbGFyYXRpb24gY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbmFtZXNwYWNlIG9yIG1vZHVsZS5cIiksQW5fZXhwb3J0X2RlY2xhcmF0aW9uX2Nhbl9vbmx5X2JlX3VzZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX25hbWVzcGFjZV9vcl9tb2R1bGU6YSgxMjMzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fZXhwb3J0X2RlY2xhcmF0aW9uX2Nhbl9vbmx5X2JlX3VzZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX25hbWVzcGFjZV9vcl9tb2R1bGVfMTIzM1wiLFwiQW4gZXhwb3J0IGRlY2xhcmF0aW9uIGNhbiBvbmx5IGJlIHVzZWQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIG5hbWVzcGFjZSBvciBtb2R1bGUuXCIpLEFuX2FtYmllbnRfbW9kdWxlX2RlY2xhcmF0aW9uX2lzX29ubHlfYWxsb3dlZF9hdF90aGVfdG9wX2xldmVsX2luX2FfZmlsZTphKDEyMzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9hbWJpZW50X21vZHVsZV9kZWNsYXJhdGlvbl9pc19vbmx5X2FsbG93ZWRfYXRfdGhlX3RvcF9sZXZlbF9pbl9hX2ZpbGVfMTIzNFwiLFwiQW4gYW1iaWVudCBtb2R1bGUgZGVjbGFyYXRpb24gaXMgb25seSBhbGxvd2VkIGF0IHRoZSB0b3AgbGV2ZWwgaW4gYSBmaWxlLlwiKSxBX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9pc19vbmx5X2FsbG93ZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX25hbWVzcGFjZV9vcl9tb2R1bGU6YSgxMjM1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9uYW1lc3BhY2VfZGVjbGFyYXRpb25faXNfb25seV9hbGxvd2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9uYW1lc3BhY2Vfb3JfbW9kdWxlXzEyMzVcIixcIkEgbmFtZXNwYWNlIGRlY2xhcmF0aW9uIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbmFtZXNwYWNlIG9yIG1vZHVsZS5cIiksVGhlX3JldHVybl90eXBlX29mX2FfcHJvcGVydHlfZGVjb3JhdG9yX2Z1bmN0aW9uX211c3RfYmVfZWl0aGVyX3ZvaWRfb3JfYW55OmEoMTIzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9yZXR1cm5fdHlwZV9vZl9hX3Byb3BlcnR5X2RlY29yYXRvcl9mdW5jdGlvbl9tdXN0X2JlX2VpdGhlcl92b2lkX29yX2FueV8xMjM2XCIsXCJUaGUgcmV0dXJuIHR5cGUgb2YgYSBwcm9wZXJ0eSBkZWNvcmF0b3IgZnVuY3Rpb24gbXVzdCBiZSBlaXRoZXIgJ3ZvaWQnIG9yICdhbnknLlwiKSxUaGVfcmV0dXJuX3R5cGVfb2ZfYV9wYXJhbWV0ZXJfZGVjb3JhdG9yX2Z1bmN0aW9uX211c3RfYmVfZWl0aGVyX3ZvaWRfb3JfYW55OmEoMTIzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9yZXR1cm5fdHlwZV9vZl9hX3BhcmFtZXRlcl9kZWNvcmF0b3JfZnVuY3Rpb25fbXVzdF9iZV9laXRoZXJfdm9pZF9vcl9hbnlfMTIzN1wiLFwiVGhlIHJldHVybiB0eXBlIG9mIGEgcGFyYW1ldGVyIGRlY29yYXRvciBmdW5jdGlvbiBtdXN0IGJlIGVpdGhlciAndm9pZCcgb3IgJ2FueScuXCIpLFVuYWJsZV90b19yZXNvbHZlX3NpZ25hdHVyZV9vZl9jbGFzc19kZWNvcmF0b3Jfd2hlbl9jYWxsZWRfYXNfYW5fZXhwcmVzc2lvbjphKDEyMzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbmFibGVfdG9fcmVzb2x2ZV9zaWduYXR1cmVfb2ZfY2xhc3NfZGVjb3JhdG9yX3doZW5fY2FsbGVkX2FzX2FuX2V4cHJlc3Npb25fMTIzOFwiLFwiVW5hYmxlIHRvIHJlc29sdmUgc2lnbmF0dXJlIG9mIGNsYXNzIGRlY29yYXRvciB3aGVuIGNhbGxlZCBhcyBhbiBleHByZXNzaW9uLlwiKSxVbmFibGVfdG9fcmVzb2x2ZV9zaWduYXR1cmVfb2ZfcGFyYW1ldGVyX2RlY29yYXRvcl93aGVuX2NhbGxlZF9hc19hbl9leHByZXNzaW9uOmEoMTIzOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVuYWJsZV90b19yZXNvbHZlX3NpZ25hdHVyZV9vZl9wYXJhbWV0ZXJfZGVjb3JhdG9yX3doZW5fY2FsbGVkX2FzX2FuX2V4cHJlc3Npb25fMTIzOVwiLFwiVW5hYmxlIHRvIHJlc29sdmUgc2lnbmF0dXJlIG9mIHBhcmFtZXRlciBkZWNvcmF0b3Igd2hlbiBjYWxsZWQgYXMgYW4gZXhwcmVzc2lvbi5cIiksVW5hYmxlX3RvX3Jlc29sdmVfc2lnbmF0dXJlX29mX3Byb3BlcnR5X2RlY29yYXRvcl93aGVuX2NhbGxlZF9hc19hbl9leHByZXNzaW9uOmEoMTI0MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVuYWJsZV90b19yZXNvbHZlX3NpZ25hdHVyZV9vZl9wcm9wZXJ0eV9kZWNvcmF0b3Jfd2hlbl9jYWxsZWRfYXNfYW5fZXhwcmVzc2lvbl8xMjQwXCIsXCJVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb24uXCIpLFVuYWJsZV90b19yZXNvbHZlX3NpZ25hdHVyZV9vZl9tZXRob2RfZGVjb3JhdG9yX3doZW5fY2FsbGVkX2FzX2FuX2V4cHJlc3Npb246YSgxMjQxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW5hYmxlX3RvX3Jlc29sdmVfc2lnbmF0dXJlX29mX21ldGhvZF9kZWNvcmF0b3Jfd2hlbl9jYWxsZWRfYXNfYW5fZXhwcmVzc2lvbl8xMjQxXCIsXCJVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgbWV0aG9kIGRlY29yYXRvciB3aGVuIGNhbGxlZCBhcyBhbiBleHByZXNzaW9uLlwiKSxhYnN0cmFjdF9tb2RpZmllcl9jYW5fb25seV9hcHBlYXJfb25fYV9jbGFzc19tZXRob2Rfb3JfcHJvcGVydHlfZGVjbGFyYXRpb246YSgxMjQyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiYWJzdHJhY3RfbW9kaWZpZXJfY2FuX29ubHlfYXBwZWFyX29uX2FfY2xhc3NfbWV0aG9kX29yX3Byb3BlcnR5X2RlY2xhcmF0aW9uXzEyNDJcIixcIidhYnN0cmFjdCcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3MsIG1ldGhvZCwgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCIpLF8wX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX3dpdGhfMV9tb2RpZmllcjphKDEyNDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF93aXRoXzFfbW9kaWZpZXJfMTI0M1wiLFwiJ3swfScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCAnezF9JyBtb2RpZmllci5cIiksQWJzdHJhY3RfbWV0aG9kc19jYW5fb25seV9hcHBlYXJfd2l0aGluX2FuX2Fic3RyYWN0X2NsYXNzOmEoMTI0NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFic3RyYWN0X21ldGhvZHNfY2FuX29ubHlfYXBwZWFyX3dpdGhpbl9hbl9hYnN0cmFjdF9jbGFzc18xMjQ0XCIsXCJBYnN0cmFjdCBtZXRob2RzIGNhbiBvbmx5IGFwcGVhciB3aXRoaW4gYW4gYWJzdHJhY3QgY2xhc3MuXCIpLE1ldGhvZF8wX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0OmEoMTI0NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1ldGhvZF8wX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0XzEyNDVcIixcIk1ldGhvZCAnezB9JyBjYW5ub3QgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIGl0IGlzIG1hcmtlZCBhYnN0cmFjdC5cIiksQW5faW50ZXJmYWNlX3Byb3BlcnR5X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyOmEoMTI0NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2ludGVyZmFjZV9wcm9wZXJ0eV9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcl8xMjQ2XCIsXCJBbiBpbnRlcmZhY2UgcHJvcGVydHkgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCIpLEFfdHlwZV9saXRlcmFsX3Byb3BlcnR5X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyOmEoMTI0NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfdHlwZV9saXRlcmFsX3Byb3BlcnR5X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyXzEyNDdcIixcIkEgdHlwZSBsaXRlcmFsIHByb3BlcnR5IGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLlwiKSxBX2NsYXNzX21lbWJlcl9jYW5ub3RfaGF2ZV90aGVfMF9rZXl3b3JkOmEoMTI0OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY2xhc3NfbWVtYmVyX2Nhbm5vdF9oYXZlX3RoZV8wX2tleXdvcmRfMTI0OFwiLFwiQSBjbGFzcyBtZW1iZXIgY2Fubm90IGhhdmUgdGhlICd7MH0nIGtleXdvcmQuXCIpLEFfZGVjb3JhdG9yX2Nhbl9vbmx5X2RlY29yYXRlX2FfbWV0aG9kX2ltcGxlbWVudGF0aW9uX25vdF9hbl9vdmVybG9hZDphKDEyNDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2RlY29yYXRvcl9jYW5fb25seV9kZWNvcmF0ZV9hX21ldGhvZF9pbXBsZW1lbnRhdGlvbl9ub3RfYW5fb3ZlcmxvYWRfMTI0OVwiLFwiQSBkZWNvcmF0b3IgY2FuIG9ubHkgZGVjb3JhdGUgYSBtZXRob2QgaW1wbGVtZW50YXRpb24sIG5vdCBhbiBvdmVybG9hZC5cIiksRnVuY3Rpb25fZGVjbGFyYXRpb25zX2FyZV9ub3RfYWxsb3dlZF9pbnNpZGVfYmxvY2tzX2luX3N0cmljdF9tb2RlX3doZW5fdGFyZ2V0aW5nX0VTM19vcl9FUzU6YSgxMjUwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRnVuY3Rpb25fZGVjbGFyYXRpb25zX2FyZV9ub3RfYWxsb3dlZF9pbnNpZGVfYmxvY2tzX2luX3N0cmljdF9tb2RlX3doZW5fdGFyZ2V0aW5nX0VTM19vcl9FUzVfMTI1MFwiLFwiRnVuY3Rpb24gZGVjbGFyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbnNpZGUgYmxvY2tzIGluIHN0cmljdCBtb2RlIHdoZW4gdGFyZ2V0aW5nICdFUzMnIG9yICdFUzUnLlwiKSxGdW5jdGlvbl9kZWNsYXJhdGlvbnNfYXJlX25vdF9hbGxvd2VkX2luc2lkZV9ibG9ja3NfaW5fc3RyaWN0X21vZGVfd2hlbl90YXJnZXRpbmdfRVMzX29yX0VTNV9DbGFzc19kZWZpbml0aW9uc19hcmVfYXV0b21hdGljYWxseV9pbl9zdHJpY3RfbW9kZTphKDEyNTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGdW5jdGlvbl9kZWNsYXJhdGlvbnNfYXJlX25vdF9hbGxvd2VkX2luc2lkZV9ibG9ja3NfaW5fc3RyaWN0X21vZGVfd2hlbl90YXJnZXRpbmdfRVMzX29yX0VTNV9DbGFzc19kXzEyNTFcIixcIkZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGJsb2NrcyBpbiBzdHJpY3QgbW9kZSB3aGVuIHRhcmdldGluZyAnRVMzJyBvciAnRVM1Jy4gQ2xhc3MgZGVmaW5pdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkgaW4gc3RyaWN0IG1vZGUuXCIpLEZ1bmN0aW9uX2RlY2xhcmF0aW9uc19hcmVfbm90X2FsbG93ZWRfaW5zaWRlX2Jsb2Nrc19pbl9zdHJpY3RfbW9kZV93aGVuX3RhcmdldGluZ19FUzNfb3JfRVM1X01vZHVsZXNfYXJlX2F1dG9tYXRpY2FsbHlfaW5fc3RyaWN0X21vZGU6YSgxMjUyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRnVuY3Rpb25fZGVjbGFyYXRpb25zX2FyZV9ub3RfYWxsb3dlZF9pbnNpZGVfYmxvY2tzX2luX3N0cmljdF9tb2RlX3doZW5fdGFyZ2V0aW5nX0VTM19vcl9FUzVfTW9kdWxlc18xMjUyXCIsXCJGdW5jdGlvbiBkZWNsYXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluc2lkZSBibG9ja3MgaW4gc3RyaWN0IG1vZGUgd2hlbiB0YXJnZXRpbmcgJ0VTMycgb3IgJ0VTNScuIE1vZHVsZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW4gc3RyaWN0IG1vZGUuXCIpLEFfY29uc3RfaW5pdGlhbGl6ZXJfaW5fYW5fYW1iaWVudF9jb250ZXh0X211c3RfYmVfYV9zdHJpbmdfb3JfbnVtZXJpY19saXRlcmFsX29yX2xpdGVyYWxfZW51bV9yZWZlcmVuY2U6YSgxMjU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jb25zdF9pbml0aWFsaXplcl9pbl9hbl9hbWJpZW50X2NvbnRleHRfbXVzdF9iZV9hX3N0cmluZ19vcl9udW1lcmljX2xpdGVyYWxfb3JfbGl0ZXJhbF9lbnVtX3JlZmVyZV8xMjU0XCIsXCJBICdjb25zdCcgaW5pdGlhbGl6ZXIgaW4gYW4gYW1iaWVudCBjb250ZXh0IG11c3QgYmUgYSBzdHJpbmcgb3IgbnVtZXJpYyBsaXRlcmFsIG9yIGxpdGVyYWwgZW51bSByZWZlcmVuY2UuXCIpLEFfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25faXNfbm90X3Blcm1pdHRlZF9pbl90aGlzX2NvbnRleHQ6YSgxMjU1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl9pc19ub3RfcGVybWl0dGVkX2luX3RoaXNfY29udGV4dF8xMjU1XCIsXCJBIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9uICchJyBpcyBub3QgcGVybWl0dGVkIGluIHRoaXMgY29udGV4dC5cIiksQV9yZXF1aXJlZF9lbGVtZW50X2Nhbm5vdF9mb2xsb3dfYW5fb3B0aW9uYWxfZWxlbWVudDphKDEyNTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3JlcXVpcmVkX2VsZW1lbnRfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9lbGVtZW50XzEyNTdcIixcIkEgcmVxdWlyZWQgZWxlbWVudCBjYW5ub3QgZm9sbG93IGFuIG9wdGlvbmFsIGVsZW1lbnQuXCIpLEFfZGVmYXVsdF9leHBvcnRfbXVzdF9iZV9hdF90aGVfdG9wX2xldmVsX29mX2FfZmlsZV9vcl9tb2R1bGVfZGVjbGFyYXRpb246YSgxMjU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9kZWZhdWx0X2V4cG9ydF9tdXN0X2JlX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9maWxlX29yX21vZHVsZV9kZWNsYXJhdGlvbl8xMjU4XCIsXCJBIGRlZmF1bHQgZXhwb3J0IG11c3QgYmUgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIGZpbGUgb3IgbW9kdWxlIGRlY2xhcmF0aW9uLlwiKSxNb2R1bGVfMF9jYW5fb25seV9iZV9kZWZhdWx0X2ltcG9ydGVkX3VzaW5nX3RoZV8xX2ZsYWc6YSgxMjU5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTW9kdWxlXzBfY2FuX29ubHlfYmVfZGVmYXVsdF9pbXBvcnRlZF91c2luZ190aGVfMV9mbGFnXzEyNTlcIixcIk1vZHVsZSAnezB9JyBjYW4gb25seSBiZSBkZWZhdWx0LWltcG9ydGVkIHVzaW5nIHRoZSAnezF9JyBmbGFnXCIpLEtleXdvcmRzX2Nhbm5vdF9jb250YWluX2VzY2FwZV9jaGFyYWN0ZXJzOmEoMTI2MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIktleXdvcmRzX2Nhbm5vdF9jb250YWluX2VzY2FwZV9jaGFyYWN0ZXJzXzEyNjBcIixcIktleXdvcmRzIGNhbm5vdCBjb250YWluIGVzY2FwZSBjaGFyYWN0ZXJzLlwiKSxBbHJlYWR5X2luY2x1ZGVkX2ZpbGVfbmFtZV8wX2RpZmZlcnNfZnJvbV9maWxlX25hbWVfMV9vbmx5X2luX2Nhc2luZzphKDEyNjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbHJlYWR5X2luY2x1ZGVkX2ZpbGVfbmFtZV8wX2RpZmZlcnNfZnJvbV9maWxlX25hbWVfMV9vbmx5X2luX2Nhc2luZ18xMjYxXCIsXCJBbHJlYWR5IGluY2x1ZGVkIGZpbGUgbmFtZSAnezB9JyBkaWZmZXJzIGZyb20gZmlsZSBuYW1lICd7MX0nIG9ubHkgaW4gY2FzaW5nLlwiKSxJZGVudGlmaWVyX2V4cGVjdGVkXzBfaXNfYV9yZXNlcnZlZF93b3JkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGU6YSgxMjYyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSWRlbnRpZmllcl9leHBlY3RlZF8wX2lzX2FfcmVzZXJ2ZWRfd29yZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbW9kdWxlXzEyNjJcIixcIklkZW50aWZpZXIgZXhwZWN0ZWQuICd7MH0nIGlzIGEgcmVzZXJ2ZWQgd29yZCBhdCB0aGUgdG9wLWxldmVsIG9mIGEgbW9kdWxlLlwiKSxEZWNsYXJhdGlvbnNfd2l0aF9pbml0aWFsaXplcnNfY2Fubm90X2Fsc29faGF2ZV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbnM6YSgxMjYzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRGVjbGFyYXRpb25zX3dpdGhfaW5pdGlhbGl6ZXJzX2Nhbm5vdF9hbHNvX2hhdmVfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25zXzEyNjNcIixcIkRlY2xhcmF0aW9ucyB3aXRoIGluaXRpYWxpemVycyBjYW5ub3QgYWxzbyBoYXZlIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9ucy5cIiksRGVjbGFyYXRpb25zX3dpdGhfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25zX211c3RfYWxzb19oYXZlX3R5cGVfYW5ub3RhdGlvbnM6YSgxMjY0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRGVjbGFyYXRpb25zX3dpdGhfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25zX211c3RfYWxzb19oYXZlX3R5cGVfYW5ub3RhdGlvbnNfMTI2NFwiLFwiRGVjbGFyYXRpb25zIHdpdGggZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb25zIG11c3QgYWxzbyBoYXZlIHR5cGUgYW5ub3RhdGlvbnMuXCIpLEFfcmVzdF9lbGVtZW50X2Nhbm5vdF9mb2xsb3dfYW5vdGhlcl9yZXN0X2VsZW1lbnQ6YSgxMjY1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9yZXN0X2VsZW1lbnRfY2Fubm90X2ZvbGxvd19hbm90aGVyX3Jlc3RfZWxlbWVudF8xMjY1XCIsXCJBIHJlc3QgZWxlbWVudCBjYW5ub3QgZm9sbG93IGFub3RoZXIgcmVzdCBlbGVtZW50LlwiKSxBbl9vcHRpb25hbF9lbGVtZW50X2Nhbm5vdF9mb2xsb3dfYV9yZXN0X2VsZW1lbnQ6YSgxMjY2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fb3B0aW9uYWxfZWxlbWVudF9jYW5ub3RfZm9sbG93X2FfcmVzdF9lbGVtZW50XzEyNjZcIixcIkFuIG9wdGlvbmFsIGVsZW1lbnQgY2Fubm90IGZvbGxvdyBhIHJlc3QgZWxlbWVudC5cIiksUHJvcGVydHlfMF9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcl9iZWNhdXNlX2l0X2lzX21hcmtlZF9hYnN0cmFjdDphKDEyNjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0XzEyNjdcIixcIlByb3BlcnR5ICd7MH0nIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFic3RyYWN0LlwiKSxBbl9pbmRleF9zaWduYXR1cmVfcGFyYW1ldGVyX3R5cGVfbXVzdF9iZV9zdHJpbmdfbnVtYmVyX3N5bWJvbF9vcl9hX3RlbXBsYXRlX2xpdGVyYWxfdHlwZTphKDEyNjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbmRleF9zaWduYXR1cmVfcGFyYW1ldGVyX3R5cGVfbXVzdF9iZV9zdHJpbmdfbnVtYmVyX3N5bWJvbF9vcl9hX3RlbXBsYXRlX2xpdGVyYWxfdHlwZV8xMjY4XCIsXCJBbiBpbmRleCBzaWduYXR1cmUgcGFyYW1ldGVyIHR5cGUgbXVzdCBiZSAnc3RyaW5nJywgJ251bWJlcicsICdzeW1ib2wnLCBvciBhIHRlbXBsYXRlIGxpdGVyYWwgdHlwZS5cIiksQ2Fubm90X3VzZV9leHBvcnRfaW1wb3J0X29uX2FfdHlwZV9vcl90eXBlX29ubHlfbmFtZXNwYWNlX3doZW5fdGhlX2lzb2xhdGVkTW9kdWxlc19mbGFnX2lzX3Byb3ZpZGVkOmEoMTI2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF91c2VfZXhwb3J0X2ltcG9ydF9vbl9hX3R5cGVfb3JfdHlwZV9vbmx5X25hbWVzcGFjZV93aGVuX3RoZV9pc29sYXRlZE1vZHVsZXNfZmxhZ19pc19wcm92aWRlZF8xMjY5XCIsXCJDYW5ub3QgdXNlICdleHBvcnQgaW1wb3J0JyBvbiBhIHR5cGUgb3IgdHlwZS1vbmx5IG5hbWVzcGFjZSB3aGVuIHRoZSAnLS1pc29sYXRlZE1vZHVsZXMnIGZsYWcgaXMgcHJvdmlkZWQuXCIpLERlY29yYXRvcl9mdW5jdGlvbl9yZXR1cm5fdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMTphKDEyNzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEZWNvcmF0b3JfZnVuY3Rpb25fcmV0dXJuX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzFfMTI3MFwiLFwiRGVjb3JhdG9yIGZ1bmN0aW9uIHJldHVybiB0eXBlICd7MH0nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ3sxfScuXCIpLERlY29yYXRvcl9mdW5jdGlvbl9yZXR1cm5fdHlwZV9pc18wX2J1dF9pc19leHBlY3RlZF90b19iZV92b2lkX29yX2FueTphKDEyNzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEZWNvcmF0b3JfZnVuY3Rpb25fcmV0dXJuX3R5cGVfaXNfMF9idXRfaXNfZXhwZWN0ZWRfdG9fYmVfdm9pZF9vcl9hbnlfMTI3MVwiLFwiRGVjb3JhdG9yIGZ1bmN0aW9uIHJldHVybiB0eXBlIGlzICd7MH0nIGJ1dCBpcyBleHBlY3RlZCB0byBiZSAndm9pZCcgb3IgJ2FueScuXCIpLEFfdHlwZV9yZWZlcmVuY2VkX2luX2FfZGVjb3JhdGVkX3NpZ25hdHVyZV9tdXN0X2JlX2ltcG9ydGVkX3dpdGhfaW1wb3J0X3R5cGVfb3JfYV9uYW1lc3BhY2VfaW1wb3J0X3doZW5faXNvbGF0ZWRNb2R1bGVzX2FuZF9lbWl0RGVjb3JhdG9yTWV0YWRhdGFfYXJlX2VuYWJsZWQ6YSgxMjcyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV90eXBlX3JlZmVyZW5jZWRfaW5fYV9kZWNvcmF0ZWRfc2lnbmF0dXJlX211c3RfYmVfaW1wb3J0ZWRfd2l0aF9pbXBvcnRfdHlwZV9vcl9hX25hbWVzcGFjZV9pbXBvcnRfd18xMjcyXCIsXCJBIHR5cGUgcmVmZXJlbmNlZCBpbiBhIGRlY29yYXRlZCBzaWduYXR1cmUgbXVzdCBiZSBpbXBvcnRlZCB3aXRoICdpbXBvcnQgdHlwZScgb3IgYSBuYW1lc3BhY2UgaW1wb3J0IHdoZW4gJ2lzb2xhdGVkTW9kdWxlcycgYW5kICdlbWl0RGVjb3JhdG9yTWV0YWRhdGEnIGFyZSBlbmFibGVkLlwiKSxfMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfdHlwZV9wYXJhbWV0ZXI6YSgxMjczLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX3R5cGVfcGFyYW1ldGVyXzEyNzNcIixcIid7MH0nIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlclwiKSxfMF9tb2RpZmllcl9jYW5fb25seV9hcHBlYXJfb25fYV90eXBlX3BhcmFtZXRlcl9vZl9hX2NsYXNzX2ludGVyZmFjZV9vcl90eXBlX2FsaWFzOmEoMTI3NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX21vZGlmaWVyX2Nhbl9vbmx5X2FwcGVhcl9vbl9hX3R5cGVfcGFyYW1ldGVyX29mX2FfY2xhc3NfaW50ZXJmYWNlX29yX3R5cGVfYWxpYXNfMTI3NFwiLFwiJ3swfScgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIgb2YgYSBjbGFzcywgaW50ZXJmYWNlIG9yIHR5cGUgYWxpYXNcIiksd2l0aF9zdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbl9hc3luY19mdW5jdGlvbl9ibG9jazphKDEzMDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJ3aXRoX3N0YXRlbWVudHNfYXJlX25vdF9hbGxvd2VkX2luX2FuX2FzeW5jX2Z1bmN0aW9uX2Jsb2NrXzEzMDBcIixcIid3aXRoJyBzdGF0ZW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBhbiBhc3luYyBmdW5jdGlvbiBibG9jay5cIiksYXdhaXRfZXhwcmVzc2lvbnNfYXJlX29ubHlfYWxsb3dlZF93aXRoaW5fYXN5bmNfZnVuY3Rpb25zX2FuZF9hdF90aGVfdG9wX2xldmVsc19vZl9tb2R1bGVzOmEoMTMwOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImF3YWl0X2V4cHJlc3Npb25zX2FyZV9vbmx5X2FsbG93ZWRfd2l0aGluX2FzeW5jX2Z1bmN0aW9uc19hbmRfYXRfdGhlX3RvcF9sZXZlbHNfb2ZfbW9kdWxlc18xMzA4XCIsXCInYXdhaXQnIGV4cHJlc3Npb25zIGFyZSBvbmx5IGFsbG93ZWQgd2l0aGluIGFzeW5jIGZ1bmN0aW9ucyBhbmQgYXQgdGhlIHRvcCBsZXZlbHMgb2YgbW9kdWxlcy5cIiksVGhlX2N1cnJlbnRfZmlsZV9pc19hX0NvbW1vbkpTX21vZHVsZV9hbmRfY2Fubm90X3VzZV9hd2FpdF9hdF90aGVfdG9wX2xldmVsOmEoMTMwOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9jdXJyZW50X2ZpbGVfaXNfYV9Db21tb25KU19tb2R1bGVfYW5kX2Nhbm5vdF91c2VfYXdhaXRfYXRfdGhlX3RvcF9sZXZlbF8xMzA5XCIsXCJUaGUgY3VycmVudCBmaWxlIGlzIGEgQ29tbW9uSlMgbW9kdWxlIGFuZCBjYW5ub3QgdXNlICdhd2FpdCcgYXQgdGhlIHRvcCBsZXZlbC5cIiksRGlkX3lvdV9tZWFuX3RvX3VzZV9hX0NvbG9uX0FuX2Nhbl9vbmx5X2ZvbGxvd19hX3Byb3BlcnR5X25hbWVfd2hlbl90aGVfY29udGFpbmluZ19vYmplY3RfbGl0ZXJhbF9pc19wYXJ0X29mX2FfZGVzdHJ1Y3R1cmluZ19wYXR0ZXJuOmEoMTMxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRpZF95b3VfbWVhbl90b191c2VfYV9Db2xvbl9Bbl9jYW5fb25seV9mb2xsb3dfYV9wcm9wZXJ0eV9uYW1lX3doZW5fdGhlX2NvbnRhaW5pbmdfb2JqZWN0X2xpdGVyYWxfaXNfMTMxMlwiLFwiRGlkIHlvdSBtZWFuIHRvIHVzZSBhICc6Jz8gQW4gJz0nIGNhbiBvbmx5IGZvbGxvdyBhIHByb3BlcnR5IG5hbWUgd2hlbiB0aGUgY29udGFpbmluZyBvYmplY3QgbGl0ZXJhbCBpcyBwYXJ0IG9mIGEgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLlwiKSxUaGVfYm9keV9vZl9hbl9pZl9zdGF0ZW1lbnRfY2Fubm90X2JlX3RoZV9lbXB0eV9zdGF0ZW1lbnQ6YSgxMzEzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2JvZHlfb2ZfYW5faWZfc3RhdGVtZW50X2Nhbm5vdF9iZV90aGVfZW1wdHlfc3RhdGVtZW50XzEzMTNcIixcIlRoZSBib2R5IG9mIGFuICdpZicgc3RhdGVtZW50IGNhbm5vdCBiZSB0aGUgZW1wdHkgc3RhdGVtZW50LlwiKSxHbG9iYWxfbW9kdWxlX2V4cG9ydHNfbWF5X29ubHlfYXBwZWFyX2luX21vZHVsZV9maWxlczphKDEzMTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJHbG9iYWxfbW9kdWxlX2V4cG9ydHNfbWF5X29ubHlfYXBwZWFyX2luX21vZHVsZV9maWxlc18xMzE0XCIsXCJHbG9iYWwgbW9kdWxlIGV4cG9ydHMgbWF5IG9ubHkgYXBwZWFyIGluIG1vZHVsZSBmaWxlcy5cIiksR2xvYmFsX21vZHVsZV9leHBvcnRzX21heV9vbmx5X2FwcGVhcl9pbl9kZWNsYXJhdGlvbl9maWxlczphKDEzMTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJHbG9iYWxfbW9kdWxlX2V4cG9ydHNfbWF5X29ubHlfYXBwZWFyX2luX2RlY2xhcmF0aW9uX2ZpbGVzXzEzMTVcIixcIkdsb2JhbCBtb2R1bGUgZXhwb3J0cyBtYXkgb25seSBhcHBlYXIgaW4gZGVjbGFyYXRpb24gZmlsZXMuXCIpLEdsb2JhbF9tb2R1bGVfZXhwb3J0c19tYXlfb25seV9hcHBlYXJfYXRfdG9wX2xldmVsOmEoMTMxNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkdsb2JhbF9tb2R1bGVfZXhwb3J0c19tYXlfb25seV9hcHBlYXJfYXRfdG9wX2xldmVsXzEzMTZcIixcIkdsb2JhbCBtb2R1bGUgZXhwb3J0cyBtYXkgb25seSBhcHBlYXIgYXQgdG9wIGxldmVsLlwiKSxBX3BhcmFtZXRlcl9wcm9wZXJ0eV9jYW5ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9yZXN0X3BhcmFtZXRlcjphKDEzMTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3BhcmFtZXRlcl9wcm9wZXJ0eV9jYW5ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9yZXN0X3BhcmFtZXRlcl8xMzE3XCIsXCJBIHBhcmFtZXRlciBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVjbGFyZWQgdXNpbmcgYSByZXN0IHBhcmFtZXRlci5cIiksQW5fYWJzdHJhY3RfYWNjZXNzb3JfY2Fubm90X2hhdmVfYW5faW1wbGVtZW50YXRpb246YSgxMzE4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fYWJzdHJhY3RfYWNjZXNzb3JfY2Fubm90X2hhdmVfYW5faW1wbGVtZW50YXRpb25fMTMxOFwiLFwiQW4gYWJzdHJhY3QgYWNjZXNzb3IgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24uXCIpLEFfZGVmYXVsdF9leHBvcnRfY2FuX29ubHlfYmVfdXNlZF9pbl9hbl9FQ01BU2NyaXB0X3N0eWxlX21vZHVsZTphKDEzMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2RlZmF1bHRfZXhwb3J0X2Nhbl9vbmx5X2JlX3VzZWRfaW5fYW5fRUNNQVNjcmlwdF9zdHlsZV9tb2R1bGVfMTMxOVwiLFwiQSBkZWZhdWx0IGV4cG9ydCBjYW4gb25seSBiZSB1c2VkIGluIGFuIEVDTUFTY3JpcHQtc3R5bGUgbW9kdWxlLlwiKSxUeXBlX29mX2F3YWl0X29wZXJhbmRfbXVzdF9laXRoZXJfYmVfYV92YWxpZF9wcm9taXNlX29yX211c3Rfbm90X2NvbnRhaW5fYV9jYWxsYWJsZV90aGVuX21lbWJlcjphKDEzMjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX29mX2F3YWl0X29wZXJhbmRfbXVzdF9laXRoZXJfYmVfYV92YWxpZF9wcm9taXNlX29yX211c3Rfbm90X2NvbnRhaW5fYV9jYWxsYWJsZV90aGVuX21lbWJlcl8xMzIwXCIsXCJUeXBlIG9mICdhd2FpdCcgb3BlcmFuZCBtdXN0IGVpdGhlciBiZSBhIHZhbGlkIHByb21pc2Ugb3IgbXVzdCBub3QgY29udGFpbiBhIGNhbGxhYmxlICd0aGVuJyBtZW1iZXIuXCIpLFR5cGVfb2ZfeWllbGRfb3BlcmFuZF9pbl9hbl9hc3luY19nZW5lcmF0b3JfbXVzdF9laXRoZXJfYmVfYV92YWxpZF9wcm9taXNlX29yX211c3Rfbm90X2NvbnRhaW5fYV9jYWxsYWJsZV90aGVuX21lbWJlcjphKDEzMjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX29mX3lpZWxkX29wZXJhbmRfaW5fYW5fYXN5bmNfZ2VuZXJhdG9yX211c3RfZWl0aGVyX2JlX2FfdmFsaWRfcHJvbWlzZV9vcl9tdXN0X25vdF9jb250YWluX2FfY2FsXzEzMjFcIixcIlR5cGUgb2YgJ3lpZWxkJyBvcGVyYW5kIGluIGFuIGFzeW5jIGdlbmVyYXRvciBtdXN0IGVpdGhlciBiZSBhIHZhbGlkIHByb21pc2Ugb3IgbXVzdCBub3QgY29udGFpbiBhIGNhbGxhYmxlICd0aGVuJyBtZW1iZXIuXCIpLFR5cGVfb2ZfaXRlcmF0ZWRfZWxlbWVudHNfb2ZfYV95aWVsZF9Bc3Rlcmlza19vcGVyYW5kX211c3RfZWl0aGVyX2JlX2FfdmFsaWRfcHJvbWlzZV9vcl9tdXN0X25vdF9jb250YWluX2FfY2FsbGFibGVfdGhlbl9tZW1iZXI6YSgxMzIyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9vZl9pdGVyYXRlZF9lbGVtZW50c19vZl9hX3lpZWxkX0FzdGVyaXNrX29wZXJhbmRfbXVzdF9laXRoZXJfYmVfYV92YWxpZF9wcm9taXNlX29yX211c3Rfbm90X2Nvbl8xMzIyXCIsXCJUeXBlIG9mIGl0ZXJhdGVkIGVsZW1lbnRzIG9mIGEgJ3lpZWxkKicgb3BlcmFuZCBtdXN0IGVpdGhlciBiZSBhIHZhbGlkIHByb21pc2Ugb3IgbXVzdCBub3QgY29udGFpbiBhIGNhbGxhYmxlICd0aGVuJyBtZW1iZXIuXCIpLER5bmFtaWNfaW1wb3J0c19hcmVfb25seV9zdXBwb3J0ZWRfd2hlbl90aGVfbW9kdWxlX2ZsYWdfaXNfc2V0X3RvX2VzMjAyMF9lczIwMjJfZXNuZXh0X2NvbW1vbmpzX2FtZF9zeXN0ZW1fdW1kX25vZGUxNl9vcl9ub2RlbmV4dDphKDEzMjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEeW5hbWljX2ltcG9ydHNfYXJlX29ubHlfc3VwcG9ydGVkX3doZW5fdGhlX21vZHVsZV9mbGFnX2lzX3NldF90b19lczIwMjBfZXMyMDIyX2VzbmV4dF9jb21tb25qc19hbWRfXzEzMjNcIixcIkR5bmFtaWMgaW1wb3J0cyBhcmUgb25seSBzdXBwb3J0ZWQgd2hlbiB0aGUgJy0tbW9kdWxlJyBmbGFnIGlzIHNldCB0byAnZXMyMDIwJywgJ2VzMjAyMicsICdlc25leHQnLCAnY29tbW9uanMnLCAnYW1kJywgJ3N5c3RlbScsICd1bWQnLCAnbm9kZTE2Jywgb3IgJ25vZGVuZXh0Jy5cIiksRHluYW1pY19pbXBvcnRzX29ubHlfc3VwcG9ydF9hX3NlY29uZF9hcmd1bWVudF93aGVuX3RoZV9tb2R1bGVfb3B0aW9uX2lzX3NldF90b19lc25leHRfbm9kZTE2X29yX25vZGVuZXh0OmEoMTMyNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkR5bmFtaWNfaW1wb3J0c19vbmx5X3N1cHBvcnRfYV9zZWNvbmRfYXJndW1lbnRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19zZXRfdG9fZXNuZXh0X25vZGUxNl9vcl9ub2RfMTMyNFwiLFwiRHluYW1pYyBpbXBvcnRzIG9ubHkgc3VwcG9ydCBhIHNlY29uZCBhcmd1bWVudCB3aGVuIHRoZSAnLS1tb2R1bGUnIG9wdGlvbiBpcyBzZXQgdG8gJ2VzbmV4dCcsICdub2RlMTYnLCBvciAnbm9kZW5leHQnLlwiKSxBcmd1bWVudF9vZl9keW5hbWljX2ltcG9ydF9jYW5ub3RfYmVfc3ByZWFkX2VsZW1lbnQ6YSgxMzI1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQXJndW1lbnRfb2ZfZHluYW1pY19pbXBvcnRfY2Fubm90X2JlX3NwcmVhZF9lbGVtZW50XzEzMjVcIixcIkFyZ3VtZW50IG9mIGR5bmFtaWMgaW1wb3J0IGNhbm5vdCBiZSBzcHJlYWQgZWxlbWVudC5cIiksVGhpc191c2Vfb2ZfaW1wb3J0X2lzX2ludmFsaWRfaW1wb3J0X2NhbGxzX2Nhbl9iZV93cml0dGVuX2J1dF90aGV5X211c3RfaGF2ZV9wYXJlbnRoZXNlc19hbmRfY2Fubm90X2hhdmVfdHlwZV9hcmd1bWVudHM6YSgxMzI2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc191c2Vfb2ZfaW1wb3J0X2lzX2ludmFsaWRfaW1wb3J0X2NhbGxzX2Nhbl9iZV93cml0dGVuX2J1dF90aGV5X211c3RfaGF2ZV9wYXJlbnRoZXNlc19hbmRfY2Fubm90X18xMzI2XCIsXCJUaGlzIHVzZSBvZiAnaW1wb3J0JyBpcyBpbnZhbGlkLiAnaW1wb3J0KCknIGNhbGxzIGNhbiBiZSB3cml0dGVuLCBidXQgdGhleSBtdXN0IGhhdmUgcGFyZW50aGVzZXMgYW5kIGNhbm5vdCBoYXZlIHR5cGUgYXJndW1lbnRzLlwiKSxTdHJpbmdfbGl0ZXJhbF93aXRoX2RvdWJsZV9xdW90ZXNfZXhwZWN0ZWQ6YSgxMzI3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU3RyaW5nX2xpdGVyYWxfd2l0aF9kb3VibGVfcXVvdGVzX2V4cGVjdGVkXzEzMjdcIixcIlN0cmluZyBsaXRlcmFsIHdpdGggZG91YmxlIHF1b3RlcyBleHBlY3RlZC5cIiksUHJvcGVydHlfdmFsdWVfY2FuX29ubHlfYmVfc3RyaW5nX2xpdGVyYWxfbnVtZXJpY19saXRlcmFsX3RydWVfZmFsc2VfbnVsbF9vYmplY3RfbGl0ZXJhbF9vcl9hcnJheV9saXRlcmFsOmEoMTMyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5X3ZhbHVlX2Nhbl9vbmx5X2JlX3N0cmluZ19saXRlcmFsX251bWVyaWNfbGl0ZXJhbF90cnVlX2ZhbHNlX251bGxfb2JqZWN0X2xpdGVyYWxfb3JfYXJyYXlfbGlfMTMyOFwiLFwiUHJvcGVydHkgdmFsdWUgY2FuIG9ubHkgYmUgc3RyaW5nIGxpdGVyYWwsIG51bWVyaWMgbGl0ZXJhbCwgJ3RydWUnLCAnZmFsc2UnLCAnbnVsbCcsIG9iamVjdCBsaXRlcmFsIG9yIGFycmF5IGxpdGVyYWwuXCIpLF8wX2FjY2VwdHNfdG9vX2Zld19hcmd1bWVudHNfdG9fYmVfdXNlZF9hc19hX2RlY29yYXRvcl9oZXJlX0RpZF95b3VfbWVhbl90b19jYWxsX2l0X2ZpcnN0X2FuZF93cml0ZV8wOmEoMTMyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2FjY2VwdHNfdG9vX2Zld19hcmd1bWVudHNfdG9fYmVfdXNlZF9hc19hX2RlY29yYXRvcl9oZXJlX0RpZF95b3VfbWVhbl90b19jYWxsX2l0X2ZpcnN0X2FuZF93cml0ZV9fMTMyOVwiLFwiJ3swfScgYWNjZXB0cyB0b28gZmV3IGFyZ3VtZW50cyB0byBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yIGhlcmUuIERpZCB5b3UgbWVhbiB0byBjYWxsIGl0IGZpcnN0IGFuZCB3cml0ZSAnQHswfSgpJz9cIiksQV9wcm9wZXJ0eV9vZl9hbl9pbnRlcmZhY2Vfb3JfdHlwZV9saXRlcmFsX3dob3NlX3R5cGVfaXNfYV91bmlxdWVfc3ltYm9sX3R5cGVfbXVzdF9iZV9yZWFkb25seTphKDEzMzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Byb3BlcnR5X29mX2FuX2ludGVyZmFjZV9vcl90eXBlX2xpdGVyYWxfd2hvc2VfdHlwZV9pc19hX3VuaXF1ZV9zeW1ib2xfdHlwZV9tdXN0X2JlX3JlYWRvbmx5XzEzMzBcIixcIkEgcHJvcGVydHkgb2YgYW4gaW50ZXJmYWNlIG9yIHR5cGUgbGl0ZXJhbCB3aG9zZSB0eXBlIGlzIGEgJ3VuaXF1ZSBzeW1ib2wnIHR5cGUgbXVzdCBiZSAncmVhZG9ubHknLlwiKSxBX3Byb3BlcnR5X29mX2FfY2xhc3Nfd2hvc2VfdHlwZV9pc19hX3VuaXF1ZV9zeW1ib2xfdHlwZV9tdXN0X2JlX2JvdGhfc3RhdGljX2FuZF9yZWFkb25seTphKDEzMzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Byb3BlcnR5X29mX2FfY2xhc3Nfd2hvc2VfdHlwZV9pc19hX3VuaXF1ZV9zeW1ib2xfdHlwZV9tdXN0X2JlX2JvdGhfc3RhdGljX2FuZF9yZWFkb25seV8xMzMxXCIsXCJBIHByb3BlcnR5IG9mIGEgY2xhc3Mgd2hvc2UgdHlwZSBpcyBhICd1bmlxdWUgc3ltYm9sJyB0eXBlIG11c3QgYmUgYm90aCAnc3RhdGljJyBhbmQgJ3JlYWRvbmx5Jy5cIiksQV92YXJpYWJsZV93aG9zZV90eXBlX2lzX2FfdW5pcXVlX3N5bWJvbF90eXBlX211c3RfYmVfY29uc3Q6YSgxMzMyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV92YXJpYWJsZV93aG9zZV90eXBlX2lzX2FfdW5pcXVlX3N5bWJvbF90eXBlX211c3RfYmVfY29uc3RfMTMzMlwiLFwiQSB2YXJpYWJsZSB3aG9zZSB0eXBlIGlzIGEgJ3VuaXF1ZSBzeW1ib2wnIHR5cGUgbXVzdCBiZSAnY29uc3QnLlwiKSx1bmlxdWVfc3ltYm9sX3R5cGVzX21heV9ub3RfYmVfdXNlZF9vbl9hX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX3dpdGhfYV9iaW5kaW5nX25hbWU6YSgxMzMzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwidW5pcXVlX3N5bWJvbF90eXBlc19tYXlfbm90X2JlX3VzZWRfb25fYV92YXJpYWJsZV9kZWNsYXJhdGlvbl93aXRoX2FfYmluZGluZ19uYW1lXzEzMzNcIixcIid1bmlxdWUgc3ltYm9sJyB0eXBlcyBtYXkgbm90IGJlIHVzZWQgb24gYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiB3aXRoIGEgYmluZGluZyBuYW1lLlwiKSx1bmlxdWVfc3ltYm9sX3R5cGVzX2FyZV9vbmx5X2FsbG93ZWRfb25fdmFyaWFibGVzX2luX2FfdmFyaWFibGVfc3RhdGVtZW50OmEoMTMzNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInVuaXF1ZV9zeW1ib2xfdHlwZXNfYXJlX29ubHlfYWxsb3dlZF9vbl92YXJpYWJsZXNfaW5fYV92YXJpYWJsZV9zdGF0ZW1lbnRfMTMzNFwiLFwiJ3VuaXF1ZSBzeW1ib2wnIHR5cGVzIGFyZSBvbmx5IGFsbG93ZWQgb24gdmFyaWFibGVzIGluIGEgdmFyaWFibGUgc3RhdGVtZW50LlwiKSx1bmlxdWVfc3ltYm9sX3R5cGVzX2FyZV9ub3RfYWxsb3dlZF9oZXJlOmEoMTMzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInVuaXF1ZV9zeW1ib2xfdHlwZXNfYXJlX25vdF9hbGxvd2VkX2hlcmVfMTMzNVwiLFwiJ3VuaXF1ZSBzeW1ib2wnIHR5cGVzIGFyZSBub3QgYWxsb3dlZCBoZXJlLlwiKSxBbl9pbmRleF9zaWduYXR1cmVfcGFyYW1ldGVyX3R5cGVfY2Fubm90X2JlX2FfbGl0ZXJhbF90eXBlX29yX2dlbmVyaWNfdHlwZV9Db25zaWRlcl91c2luZ19hX21hcHBlZF9vYmplY3RfdHlwZV9pbnN0ZWFkOmEoMTMzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfdHlwZV9jYW5ub3RfYmVfYV9saXRlcmFsX3R5cGVfb3JfZ2VuZXJpY190eXBlX0NvbnNpZGVyX3VzaW5nX2FfbWFwcGVkX29fMTMzN1wiLFwiQW4gaW5kZXggc2lnbmF0dXJlIHBhcmFtZXRlciB0eXBlIGNhbm5vdCBiZSBhIGxpdGVyYWwgdHlwZSBvciBnZW5lcmljIHR5cGUuIENvbnNpZGVyIHVzaW5nIGEgbWFwcGVkIG9iamVjdCB0eXBlIGluc3RlYWQuXCIpLGluZmVyX2RlY2xhcmF0aW9uc19hcmVfb25seV9wZXJtaXR0ZWRfaW5fdGhlX2V4dGVuZHNfY2xhdXNlX29mX2FfY29uZGl0aW9uYWxfdHlwZTphKDEzMzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJpbmZlcl9kZWNsYXJhdGlvbnNfYXJlX29ubHlfcGVybWl0dGVkX2luX3RoZV9leHRlbmRzX2NsYXVzZV9vZl9hX2NvbmRpdGlvbmFsX3R5cGVfMTMzOFwiLFwiJ2luZmVyJyBkZWNsYXJhdGlvbnMgYXJlIG9ubHkgcGVybWl0dGVkIGluIHRoZSAnZXh0ZW5kcycgY2xhdXNlIG9mIGEgY29uZGl0aW9uYWwgdHlwZS5cIiksTW9kdWxlXzBfZG9lc19ub3RfcmVmZXJfdG9fYV92YWx1ZV9idXRfaXNfdXNlZF9hc19hX3ZhbHVlX2hlcmU6YSgxMzM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTW9kdWxlXzBfZG9lc19ub3RfcmVmZXJfdG9fYV92YWx1ZV9idXRfaXNfdXNlZF9hc19hX3ZhbHVlX2hlcmVfMTMzOVwiLFwiTW9kdWxlICd7MH0nIGRvZXMgbm90IHJlZmVyIHRvIGEgdmFsdWUsIGJ1dCBpcyB1c2VkIGFzIGEgdmFsdWUgaGVyZS5cIiksTW9kdWxlXzBfZG9lc19ub3RfcmVmZXJfdG9fYV90eXBlX2J1dF9pc191c2VkX2FzX2FfdHlwZV9oZXJlX0RpZF95b3VfbWVhbl90eXBlb2ZfaW1wb3J0XzA6YSgxMzQwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTW9kdWxlXzBfZG9lc19ub3RfcmVmZXJfdG9fYV90eXBlX2J1dF9pc191c2VkX2FzX2FfdHlwZV9oZXJlX0RpZF95b3VfbWVhbl90eXBlb2ZfaW1wb3J0XzBfMTM0MFwiLFwiTW9kdWxlICd7MH0nIGRvZXMgbm90IHJlZmVyIHRvIGEgdHlwZSwgYnV0IGlzIHVzZWQgYXMgYSB0eXBlIGhlcmUuIERpZCB5b3UgbWVhbiAndHlwZW9mIGltcG9ydCgnezB9JyknP1wiKSxUeXBlX2FyZ3VtZW50c19jYW5ub3RfYmVfdXNlZF9oZXJlOmEoMTM0MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfYXJndW1lbnRzX2Nhbm5vdF9iZV91c2VkX2hlcmVfMTM0MlwiLFwiVHlwZSBhcmd1bWVudHMgY2Fubm90IGJlIHVzZWQgaGVyZS5cIiksVGhlX2ltcG9ydF9tZXRhX21ldGFfcHJvcGVydHlfaXNfb25seV9hbGxvd2VkX3doZW5fdGhlX21vZHVsZV9vcHRpb25faXNfZXMyMDIwX2VzMjAyMl9lc25leHRfc3lzdGVtX25vZGUxNl9vcl9ub2RlbmV4dDphKDEzNDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfaW1wb3J0X21ldGFfbWV0YV9wcm9wZXJ0eV9pc19vbmx5X2FsbG93ZWRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19lczIwMjBfZXMyMDIyX2VzbmV4dF9zeXN0ZW1fXzEzNDNcIixcIlRoZSAnaW1wb3J0Lm1ldGEnIG1ldGEtcHJvcGVydHkgaXMgb25seSBhbGxvd2VkIHdoZW4gdGhlICctLW1vZHVsZScgb3B0aW9uIGlzICdlczIwMjAnLCAnZXMyMDIyJywgJ2VzbmV4dCcsICdzeXN0ZW0nLCAnbm9kZTE2Jywgb3IgJ25vZGVuZXh0Jy5cIiksQV9sYWJlbF9pc19ub3RfYWxsb3dlZF9oZXJlOmEoMTM0NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfbGFiZWxfaXNfbm90X2FsbG93ZWRfaGVyZV8xMzQ0XCIsXCInQSBsYWJlbCBpcyBub3QgYWxsb3dlZCBoZXJlLlwiKSxBbl9leHByZXNzaW9uX29mX3R5cGVfdm9pZF9jYW5ub3RfYmVfdGVzdGVkX2Zvcl90cnV0aGluZXNzOmEoMTM0NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2V4cHJlc3Npb25fb2ZfdHlwZV92b2lkX2Nhbm5vdF9iZV90ZXN0ZWRfZm9yX3RydXRoaW5lc3NfMTM0NVwiLFwiQW4gZXhwcmVzc2lvbiBvZiB0eXBlICd2b2lkJyBjYW5ub3QgYmUgdGVzdGVkIGZvciB0cnV0aGluZXNzLlwiKSxUaGlzX3BhcmFtZXRlcl9pc19ub3RfYWxsb3dlZF93aXRoX3VzZV9zdHJpY3RfZGlyZWN0aXZlOmEoMTM0NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfcGFyYW1ldGVyX2lzX25vdF9hbGxvd2VkX3dpdGhfdXNlX3N0cmljdF9kaXJlY3RpdmVfMTM0NlwiLFwiVGhpcyBwYXJhbWV0ZXIgaXMgbm90IGFsbG93ZWQgd2l0aCAndXNlIHN0cmljdCcgZGlyZWN0aXZlLlwiKSx1c2Vfc3RyaWN0X2RpcmVjdGl2ZV9jYW5ub3RfYmVfdXNlZF93aXRoX25vbl9zaW1wbGVfcGFyYW1ldGVyX2xpc3Q6YSgxMzQ3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwidXNlX3N0cmljdF9kaXJlY3RpdmVfY2Fubm90X2JlX3VzZWRfd2l0aF9ub25fc2ltcGxlX3BhcmFtZXRlcl9saXN0XzEzNDdcIixcIid1c2Ugc3RyaWN0JyBkaXJlY3RpdmUgY2Fubm90IGJlIHVzZWQgd2l0aCBub24tc2ltcGxlIHBhcmFtZXRlciBsaXN0LlwiKSxOb25fc2ltcGxlX3BhcmFtZXRlcl9kZWNsYXJlZF9oZXJlOmEoMTM0OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5vbl9zaW1wbGVfcGFyYW1ldGVyX2RlY2xhcmVkX2hlcmVfMTM0OFwiLFwiTm9uLXNpbXBsZSBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZS5cIiksdXNlX3N0cmljdF9kaXJlY3RpdmVfdXNlZF9oZXJlOmEoMTM0OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInVzZV9zdHJpY3RfZGlyZWN0aXZlX3VzZWRfaGVyZV8xMzQ5XCIsXCIndXNlIHN0cmljdCcgZGlyZWN0aXZlIHVzZWQgaGVyZS5cIiksUHJpbnRfdGhlX2ZpbmFsX2NvbmZpZ3VyYXRpb25faW5zdGVhZF9vZl9idWlsZGluZzphKDEzNTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByaW50X3RoZV9maW5hbF9jb25maWd1cmF0aW9uX2luc3RlYWRfb2ZfYnVpbGRpbmdfMTM1MFwiLFwiUHJpbnQgdGhlIGZpbmFsIGNvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBidWlsZGluZy5cIiksQW5faWRlbnRpZmllcl9vcl9rZXl3b3JkX2Nhbm5vdF9pbW1lZGlhdGVseV9mb2xsb3dfYV9udW1lcmljX2xpdGVyYWw6YSgxMzUxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5faWRlbnRpZmllcl9vcl9rZXl3b3JkX2Nhbm5vdF9pbW1lZGlhdGVseV9mb2xsb3dfYV9udW1lcmljX2xpdGVyYWxfMTM1MVwiLFwiQW4gaWRlbnRpZmllciBvciBrZXl3b3JkIGNhbm5vdCBpbW1lZGlhdGVseSBmb2xsb3cgYSBudW1lcmljIGxpdGVyYWwuXCIpLEFfYmlnaW50X2xpdGVyYWxfY2Fubm90X3VzZV9leHBvbmVudGlhbF9ub3RhdGlvbjphKDEzNTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2JpZ2ludF9saXRlcmFsX2Nhbm5vdF91c2VfZXhwb25lbnRpYWxfbm90YXRpb25fMTM1MlwiLFwiQSBiaWdpbnQgbGl0ZXJhbCBjYW5ub3QgdXNlIGV4cG9uZW50aWFsIG5vdGF0aW9uLlwiKSxBX2JpZ2ludF9saXRlcmFsX211c3RfYmVfYW5faW50ZWdlcjphKDEzNTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2JpZ2ludF9saXRlcmFsX211c3RfYmVfYW5faW50ZWdlcl8xMzUzXCIsXCJBIGJpZ2ludCBsaXRlcmFsIG11c3QgYmUgYW4gaW50ZWdlci5cIikscmVhZG9ubHlfdHlwZV9tb2RpZmllcl9pc19vbmx5X3Blcm1pdHRlZF9vbl9hcnJheV9hbmRfdHVwbGVfbGl0ZXJhbF90eXBlczphKDEzNTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJyZWFkb25seV90eXBlX21vZGlmaWVyX2lzX29ubHlfcGVybWl0dGVkX29uX2FycmF5X2FuZF90dXBsZV9saXRlcmFsX3R5cGVzXzEzNTRcIixcIidyZWFkb25seScgdHlwZSBtb2RpZmllciBpcyBvbmx5IHBlcm1pdHRlZCBvbiBhcnJheSBhbmQgdHVwbGUgbGl0ZXJhbCB0eXBlcy5cIiksQV9jb25zdF9hc3NlcnRpb25zX2Nhbl9vbmx5X2JlX2FwcGxpZWRfdG9fcmVmZXJlbmNlc190b19lbnVtX21lbWJlcnNfb3Jfc3RyaW5nX251bWJlcl9ib29sZWFuX2FycmF5X29yX29iamVjdF9saXRlcmFsczphKDEzNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2NvbnN0X2Fzc2VydGlvbnNfY2FuX29ubHlfYmVfYXBwbGllZF90b19yZWZlcmVuY2VzX3RvX2VudW1fbWVtYmVyc19vcl9zdHJpbmdfbnVtYmVyX2Jvb2xlYW5fYXJyYXlfXzEzNTVcIixcIkEgJ2NvbnN0JyBhc3NlcnRpb25zIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gcmVmZXJlbmNlcyB0byBlbnVtIG1lbWJlcnMsIG9yIHN0cmluZywgbnVtYmVyLCBib29sZWFuLCBhcnJheSwgb3Igb2JqZWN0IGxpdGVyYWxzLlwiKSxEaWRfeW91X21lYW5fdG9fbWFya190aGlzX2Z1bmN0aW9uX2FzX2FzeW5jOmEoMTM1NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRpZF95b3VfbWVhbl90b19tYXJrX3RoaXNfZnVuY3Rpb25fYXNfYXN5bmNfMTM1NlwiLFwiRGlkIHlvdSBtZWFuIHRvIG1hcmsgdGhpcyBmdW5jdGlvbiBhcyAnYXN5bmMnP1wiKSxBbl9lbnVtX21lbWJlcl9uYW1lX211c3RfYmVfZm9sbG93ZWRfYnlfYV9vcjphKDEzNTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9lbnVtX21lbWJlcl9uYW1lX211c3RfYmVfZm9sbG93ZWRfYnlfYV9vcl8xMzU3XCIsXCJBbiBlbnVtIG1lbWJlciBuYW1lIG11c3QgYmUgZm9sbG93ZWQgYnkgYSAnLCcsICc9Jywgb3IgJ30nLlwiKSxUYWdnZWRfdGVtcGxhdGVfZXhwcmVzc2lvbnNfYXJlX25vdF9wZXJtaXR0ZWRfaW5fYW5fb3B0aW9uYWxfY2hhaW46YSgxMzU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGFnZ2VkX3RlbXBsYXRlX2V4cHJlc3Npb25zX2FyZV9ub3RfcGVybWl0dGVkX2luX2FuX29wdGlvbmFsX2NoYWluXzEzNThcIixcIlRhZ2dlZCB0ZW1wbGF0ZSBleHByZXNzaW9ucyBhcmUgbm90IHBlcm1pdHRlZCBpbiBhbiBvcHRpb25hbCBjaGFpbi5cIiksSWRlbnRpZmllcl9leHBlY3RlZF8wX2lzX2FfcmVzZXJ2ZWRfd29yZF90aGF0X2Nhbm5vdF9iZV91c2VkX2hlcmU6YSgxMzU5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSWRlbnRpZmllcl9leHBlY3RlZF8wX2lzX2FfcmVzZXJ2ZWRfd29yZF90aGF0X2Nhbm5vdF9iZV91c2VkX2hlcmVfMTM1OVwiLFwiSWRlbnRpZmllciBleHBlY3RlZC4gJ3swfScgaXMgYSByZXNlcnZlZCB3b3JkIHRoYXQgY2Fubm90IGJlIHVzZWQgaGVyZS5cIiksXzBfY2Fubm90X2JlX3VzZWRfYXNfYV92YWx1ZV9iZWNhdXNlX2l0X3dhc19pbXBvcnRlZF91c2luZ19pbXBvcnRfdHlwZTphKDEzNjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9jYW5ub3RfYmVfdXNlZF9hc19hX3ZhbHVlX2JlY2F1c2VfaXRfd2FzX2ltcG9ydGVkX3VzaW5nX2ltcG9ydF90eXBlXzEzNjFcIixcIid7MH0nIGNhbm5vdCBiZSB1c2VkIGFzIGEgdmFsdWUgYmVjYXVzZSBpdCB3YXMgaW1wb3J0ZWQgdXNpbmcgJ2ltcG9ydCB0eXBlJy5cIiksXzBfY2Fubm90X2JlX3VzZWRfYXNfYV92YWx1ZV9iZWNhdXNlX2l0X3dhc19leHBvcnRlZF91c2luZ19leHBvcnRfdHlwZTphKDEzNjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9jYW5ub3RfYmVfdXNlZF9hc19hX3ZhbHVlX2JlY2F1c2VfaXRfd2FzX2V4cG9ydGVkX3VzaW5nX2V4cG9ydF90eXBlXzEzNjJcIixcIid7MH0nIGNhbm5vdCBiZSB1c2VkIGFzIGEgdmFsdWUgYmVjYXVzZSBpdCB3YXMgZXhwb3J0ZWQgdXNpbmcgJ2V4cG9ydCB0eXBlJy5cIiksQV90eXBlX29ubHlfaW1wb3J0X2Nhbl9zcGVjaWZ5X2FfZGVmYXVsdF9pbXBvcnRfb3JfbmFtZWRfYmluZGluZ3NfYnV0X25vdF9ib3RoOmEoMTM2MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfdHlwZV9vbmx5X2ltcG9ydF9jYW5fc3BlY2lmeV9hX2RlZmF1bHRfaW1wb3J0X29yX25hbWVkX2JpbmRpbmdzX2J1dF9ub3RfYm90aF8xMzYzXCIsXCJBIHR5cGUtb25seSBpbXBvcnQgY2FuIHNwZWNpZnkgYSBkZWZhdWx0IGltcG9ydCBvciBuYW1lZCBiaW5kaW5ncywgYnV0IG5vdCBib3RoLlwiKSxDb252ZXJ0X3RvX3R5cGVfb25seV9leHBvcnQ6YSgxMzY0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X3RvX3R5cGVfb25seV9leHBvcnRfMTM2NFwiLFwiQ29udmVydCB0byB0eXBlLW9ubHkgZXhwb3J0XCIpLENvbnZlcnRfYWxsX3JlX2V4cG9ydGVkX3R5cGVzX3RvX3R5cGVfb25seV9leHBvcnRzOmEoMTM2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udmVydF9hbGxfcmVfZXhwb3J0ZWRfdHlwZXNfdG9fdHlwZV9vbmx5X2V4cG9ydHNfMTM2NVwiLFwiQ29udmVydCBhbGwgcmUtZXhwb3J0ZWQgdHlwZXMgdG8gdHlwZS1vbmx5IGV4cG9ydHNcIiksU3BsaXRfaW50b190d29fc2VwYXJhdGVfaW1wb3J0X2RlY2xhcmF0aW9uczphKDEzNjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwbGl0X2ludG9fdHdvX3NlcGFyYXRlX2ltcG9ydF9kZWNsYXJhdGlvbnNfMTM2NlwiLFwiU3BsaXQgaW50byB0d28gc2VwYXJhdGUgaW1wb3J0IGRlY2xhcmF0aW9uc1wiKSxTcGxpdF9hbGxfaW52YWxpZF90eXBlX29ubHlfaW1wb3J0czphKDEzNjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwbGl0X2FsbF9pbnZhbGlkX3R5cGVfb25seV9pbXBvcnRzXzEzNjdcIixcIlNwbGl0IGFsbCBpbnZhbGlkIHR5cGUtb25seSBpbXBvcnRzXCIpLERpZF95b3VfbWVhbl8wOmEoMTM2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlkX3lvdV9tZWFuXzBfMTM2OVwiLFwiRGlkIHlvdSBtZWFuICd7MH0nP1wiKSxUaGlzX2ltcG9ydF9pc19uZXZlcl91c2VkX2FzX2FfdmFsdWVfYW5kX211c3RfdXNlX2ltcG9ydF90eXBlX2JlY2F1c2VfaW1wb3J0c05vdFVzZWRBc1ZhbHVlc19pc19zZXRfdG9fZXJyb3I6YSgxMzcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19pbXBvcnRfaXNfbmV2ZXJfdXNlZF9hc19hX3ZhbHVlX2FuZF9tdXN0X3VzZV9pbXBvcnRfdHlwZV9iZWNhdXNlX2ltcG9ydHNOb3RVc2VkQXNWYWx1ZXNfaXNfc2V0X18xMzcxXCIsXCJUaGlzIGltcG9ydCBpcyBuZXZlciB1c2VkIGFzIGEgdmFsdWUgYW5kIG11c3QgdXNlICdpbXBvcnQgdHlwZScgYmVjYXVzZSAnaW1wb3J0c05vdFVzZWRBc1ZhbHVlcycgaXMgc2V0IHRvICdlcnJvcicuXCIpLENvbnZlcnRfdG9fdHlwZV9vbmx5X2ltcG9ydDphKDEzNzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfdG9fdHlwZV9vbmx5X2ltcG9ydF8xMzczXCIsXCJDb252ZXJ0IHRvIHR5cGUtb25seSBpbXBvcnRcIiksQ29udmVydF9hbGxfaW1wb3J0c19ub3RfdXNlZF9hc19hX3ZhbHVlX3RvX3R5cGVfb25seV9pbXBvcnRzOmEoMTM3NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udmVydF9hbGxfaW1wb3J0c19ub3RfdXNlZF9hc19hX3ZhbHVlX3RvX3R5cGVfb25seV9pbXBvcnRzXzEzNzRcIixcIkNvbnZlcnQgYWxsIGltcG9ydHMgbm90IHVzZWQgYXMgYSB2YWx1ZSB0byB0eXBlLW9ubHkgaW1wb3J0c1wiKSxhd2FpdF9leHByZXNzaW9uc19hcmVfb25seV9hbGxvd2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9maWxlX3doZW5fdGhhdF9maWxlX2lzX2FfbW9kdWxlX2J1dF90aGlzX2ZpbGVfaGFzX25vX2ltcG9ydHNfb3JfZXhwb3J0c19Db25zaWRlcl9hZGRpbmdfYW5fZW1wdHlfZXhwb3J0X3RvX21ha2VfdGhpc19maWxlX2FfbW9kdWxlOmEoMTM3NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImF3YWl0X2V4cHJlc3Npb25zX2FyZV9vbmx5X2FsbG93ZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX2ZpbGVfd2hlbl90aGF0X2ZpbGVfaXNfYV9tb2R1bGVfYnV0X3RoaXNfZmlfMTM3NVwiLFwiJ2F3YWl0JyBleHByZXNzaW9ucyBhcmUgb25seSBhbGxvd2VkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBmaWxlIHdoZW4gdGhhdCBmaWxlIGlzIGEgbW9kdWxlLCBidXQgdGhpcyBmaWxlIGhhcyBubyBpbXBvcnRzIG9yIGV4cG9ydHMuIENvbnNpZGVyIGFkZGluZyBhbiBlbXB0eSAnZXhwb3J0IHt9JyB0byBtYWtlIHRoaXMgZmlsZSBhIG1vZHVsZS5cIiksXzBfd2FzX2ltcG9ydGVkX2hlcmU6YSgxMzc2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJfMF93YXNfaW1wb3J0ZWRfaGVyZV8xMzc2XCIsXCInezB9JyB3YXMgaW1wb3J0ZWQgaGVyZS5cIiksXzBfd2FzX2V4cG9ydGVkX2hlcmU6YSgxMzc3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJfMF93YXNfZXhwb3J0ZWRfaGVyZV8xMzc3XCIsXCInezB9JyB3YXMgZXhwb3J0ZWQgaGVyZS5cIiksVG9wX2xldmVsX2F3YWl0X2V4cHJlc3Npb25zX2FyZV9vbmx5X2FsbG93ZWRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19zZXRfdG9fZXMyMDIyX2VzbmV4dF9zeXN0ZW1fbm9kZTE2X29yX25vZGVuZXh0X2FuZF90aGVfdGFyZ2V0X29wdGlvbl9pc19zZXRfdG9fZXMyMDE3X29yX2hpZ2hlcjphKDEzNzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUb3BfbGV2ZWxfYXdhaXRfZXhwcmVzc2lvbnNfYXJlX29ubHlfYWxsb3dlZF93aGVuX3RoZV9tb2R1bGVfb3B0aW9uX2lzX3NldF90b19lczIwMjJfZXNuZXh0X3N5c3RlbV9uXzEzNzhcIixcIlRvcC1sZXZlbCAnYXdhaXQnIGV4cHJlc3Npb25zIGFyZSBvbmx5IGFsbG93ZWQgd2hlbiB0aGUgJ21vZHVsZScgb3B0aW9uIGlzIHNldCB0byAnZXMyMDIyJywgJ2VzbmV4dCcsICdzeXN0ZW0nLCAnbm9kZTE2Jywgb3IgJ25vZGVuZXh0JywgYW5kIHRoZSAndGFyZ2V0JyBvcHRpb24gaXMgc2V0IHRvICdlczIwMTcnIG9yIGhpZ2hlci5cIiksQW5faW1wb3J0X2FsaWFzX2Nhbm5vdF9yZWZlcmVuY2VfYV9kZWNsYXJhdGlvbl90aGF0X3dhc19leHBvcnRlZF91c2luZ19leHBvcnRfdHlwZTphKDEzNzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbXBvcnRfYWxpYXNfY2Fubm90X3JlZmVyZW5jZV9hX2RlY2xhcmF0aW9uX3RoYXRfd2FzX2V4cG9ydGVkX3VzaW5nX2V4cG9ydF90eXBlXzEzNzlcIixcIkFuIGltcG9ydCBhbGlhcyBjYW5ub3QgcmVmZXJlbmNlIGEgZGVjbGFyYXRpb24gdGhhdCB3YXMgZXhwb3J0ZWQgdXNpbmcgJ2V4cG9ydCB0eXBlJy5cIiksQW5faW1wb3J0X2FsaWFzX2Nhbm5vdF9yZWZlcmVuY2VfYV9kZWNsYXJhdGlvbl90aGF0X3dhc19pbXBvcnRlZF91c2luZ19pbXBvcnRfdHlwZTphKDEzODAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbXBvcnRfYWxpYXNfY2Fubm90X3JlZmVyZW5jZV9hX2RlY2xhcmF0aW9uX3RoYXRfd2FzX2ltcG9ydGVkX3VzaW5nX2ltcG9ydF90eXBlXzEzODBcIixcIkFuIGltcG9ydCBhbGlhcyBjYW5ub3QgcmVmZXJlbmNlIGEgZGVjbGFyYXRpb24gdGhhdCB3YXMgaW1wb3J0ZWQgdXNpbmcgJ2ltcG9ydCB0eXBlJy5cIiksVW5leHBlY3RlZF90b2tlbl9EaWRfeW91X21lYW5fb3JfcmJyYWNlOmEoMTM4MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVuZXhwZWN0ZWRfdG9rZW5fRGlkX3lvdV9tZWFuX29yX3JicmFjZV8xMzgxXCIsXCJVbmV4cGVjdGVkIHRva2VuLiBEaWQgeW91IG1lYW4gYHsnfSd9YCBvciBgJnJicmFjZTtgP1wiKSxVbmV4cGVjdGVkX3Rva2VuX0RpZF95b3VfbWVhbl9vcl9ndDphKDEzODIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbmV4cGVjdGVkX3Rva2VuX0RpZF95b3VfbWVhbl9vcl9ndF8xMzgyXCIsXCJVbmV4cGVjdGVkIHRva2VuLiBEaWQgeW91IG1lYW4gYHsnPid9YCBvciBgJmd0O2A/XCIpLE9ubHlfbmFtZWRfZXhwb3J0c19tYXlfdXNlX2V4cG9ydF90eXBlOmEoMTM4MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9ubHlfbmFtZWRfZXhwb3J0c19tYXlfdXNlX2V4cG9ydF90eXBlXzEzODNcIixcIk9ubHkgbmFtZWQgZXhwb3J0cyBtYXkgdXNlICdleHBvcnQgdHlwZScuXCIpLEZ1bmN0aW9uX3R5cGVfbm90YXRpb25fbXVzdF9iZV9wYXJlbnRoZXNpemVkX3doZW5fdXNlZF9pbl9hX3VuaW9uX3R5cGU6YSgxMzg1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRnVuY3Rpb25fdHlwZV9ub3RhdGlvbl9tdXN0X2JlX3BhcmVudGhlc2l6ZWRfd2hlbl91c2VkX2luX2FfdW5pb25fdHlwZV8xMzg1XCIsXCJGdW5jdGlvbiB0eXBlIG5vdGF0aW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCB3aGVuIHVzZWQgaW4gYSB1bmlvbiB0eXBlLlwiKSxDb25zdHJ1Y3Rvcl90eXBlX25vdGF0aW9uX211c3RfYmVfcGFyZW50aGVzaXplZF93aGVuX3VzZWRfaW5fYV91bmlvbl90eXBlOmEoMTM4NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbnN0cnVjdG9yX3R5cGVfbm90YXRpb25fbXVzdF9iZV9wYXJlbnRoZXNpemVkX3doZW5fdXNlZF9pbl9hX3VuaW9uX3R5cGVfMTM4NlwiLFwiQ29uc3RydWN0b3IgdHlwZSBub3RhdGlvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgd2hlbiB1c2VkIGluIGEgdW5pb24gdHlwZS5cIiksRnVuY3Rpb25fdHlwZV9ub3RhdGlvbl9tdXN0X2JlX3BhcmVudGhlc2l6ZWRfd2hlbl91c2VkX2luX2FuX2ludGVyc2VjdGlvbl90eXBlOmEoMTM4NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZ1bmN0aW9uX3R5cGVfbm90YXRpb25fbXVzdF9iZV9wYXJlbnRoZXNpemVkX3doZW5fdXNlZF9pbl9hbl9pbnRlcnNlY3Rpb25fdHlwZV8xMzg3XCIsXCJGdW5jdGlvbiB0eXBlIG5vdGF0aW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCB3aGVuIHVzZWQgaW4gYW4gaW50ZXJzZWN0aW9uIHR5cGUuXCIpLENvbnN0cnVjdG9yX3R5cGVfbm90YXRpb25fbXVzdF9iZV9wYXJlbnRoZXNpemVkX3doZW5fdXNlZF9pbl9hbl9pbnRlcnNlY3Rpb25fdHlwZTphKDEzODgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb25zdHJ1Y3Rvcl90eXBlX25vdGF0aW9uX211c3RfYmVfcGFyZW50aGVzaXplZF93aGVuX3VzZWRfaW5fYW5faW50ZXJzZWN0aW9uX3R5cGVfMTM4OFwiLFwiQ29uc3RydWN0b3IgdHlwZSBub3RhdGlvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgd2hlbiB1c2VkIGluIGFuIGludGVyc2VjdGlvbiB0eXBlLlwiKSxfMF9pc19ub3RfYWxsb3dlZF9hc19hX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX25hbWU6YSgxMzg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfaXNfbm90X2FsbG93ZWRfYXNfYV92YXJpYWJsZV9kZWNsYXJhdGlvbl9uYW1lXzEzODlcIixcIid7MH0nIGlzIG5vdCBhbGxvd2VkIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gbmFtZS5cIiksXzBfaXNfbm90X2FsbG93ZWRfYXNfYV9wYXJhbWV0ZXJfbmFtZTphKDEzOTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9pc19ub3RfYWxsb3dlZF9hc19hX3BhcmFtZXRlcl9uYW1lXzEzOTBcIixcIid7MH0nIGlzIG5vdCBhbGxvd2VkIGFzIGEgcGFyYW1ldGVyIG5hbWUuXCIpLEFuX2ltcG9ydF9hbGlhc19jYW5ub3RfdXNlX2ltcG9ydF90eXBlOmEoMTM5MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2ltcG9ydF9hbGlhc19jYW5ub3RfdXNlX2ltcG9ydF90eXBlXzEzOTJcIixcIkFuIGltcG9ydCBhbGlhcyBjYW5ub3QgdXNlICdpbXBvcnQgdHlwZSdcIiksSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzE6YSgxMzkzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbXBvcnRlZF92aWFfMF9mcm9tX2ZpbGVfMV8xMzkzXCIsXCJJbXBvcnRlZCB2aWEgezB9IGZyb20gZmlsZSAnezF9J1wiKSxJbXBvcnRlZF92aWFfMF9mcm9tX2ZpbGVfMV93aXRoX3BhY2thZ2VJZF8yOmEoMTM5NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfd2l0aF9wYWNrYWdlSWRfMl8xMzk0XCIsXCJJbXBvcnRlZCB2aWEgezB9IGZyb20gZmlsZSAnezF9JyB3aXRoIHBhY2thZ2VJZCAnezJ9J1wiKSxJbXBvcnRlZF92aWFfMF9mcm9tX2ZpbGVfMV90b19pbXBvcnRfaW1wb3J0SGVscGVyc19hc19zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zOmEoMTM5NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfdG9faW1wb3J0X2ltcG9ydEhlbHBlcnNfYXNfc3BlY2lmaWVkX2luX2NvbXBpbGVyT3B0aW9uc18xMzk1XCIsXCJJbXBvcnRlZCB2aWEgezB9IGZyb20gZmlsZSAnezF9JyB0byBpbXBvcnQgJ2ltcG9ydEhlbHBlcnMnIGFzIHNwZWNpZmllZCBpbiBjb21waWxlck9wdGlvbnNcIiksSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfd2l0aF9wYWNrYWdlSWRfMl90b19pbXBvcnRfaW1wb3J0SGVscGVyc19hc19zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zOmEoMTM5NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfd2l0aF9wYWNrYWdlSWRfMl90b19pbXBvcnRfaW1wb3J0SGVscGVyc19hc19zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zXzEzOTZcIixcIkltcG9ydGVkIHZpYSB7MH0gZnJvbSBmaWxlICd7MX0nIHdpdGggcGFja2FnZUlkICd7Mn0nIHRvIGltcG9ydCAnaW1wb3J0SGVscGVycycgYXMgc3BlY2lmaWVkIGluIGNvbXBpbGVyT3B0aW9uc1wiKSxJbXBvcnRlZF92aWFfMF9mcm9tX2ZpbGVfMV90b19pbXBvcnRfanN4X2FuZF9qc3hzX2ZhY3RvcnlfZnVuY3Rpb25zOmEoMTM5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfdG9faW1wb3J0X2pzeF9hbmRfanN4c19mYWN0b3J5X2Z1bmN0aW9uc18xMzk3XCIsXCJJbXBvcnRlZCB2aWEgezB9IGZyb20gZmlsZSAnezF9JyB0byBpbXBvcnQgJ2pzeCcgYW5kICdqc3hzJyBmYWN0b3J5IGZ1bmN0aW9uc1wiKSxJbXBvcnRlZF92aWFfMF9mcm9tX2ZpbGVfMV93aXRoX3BhY2thZ2VJZF8yX3RvX2ltcG9ydF9qc3hfYW5kX2pzeHNfZmFjdG9yeV9mdW5jdGlvbnM6YSgxMzk4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbXBvcnRlZF92aWFfMF9mcm9tX2ZpbGVfMV93aXRoX3BhY2thZ2VJZF8yX3RvX2ltcG9ydF9qc3hfYW5kX2pzeHNfZmFjdG9yeV9mdW5jdGlvbnNfMTM5OFwiLFwiSW1wb3J0ZWQgdmlhIHswfSBmcm9tIGZpbGUgJ3sxfScgd2l0aCBwYWNrYWdlSWQgJ3syfScgdG8gaW1wb3J0ICdqc3gnIGFuZCAnanN4cycgZmFjdG9yeSBmdW5jdGlvbnNcIiksRmlsZV9pc19pbmNsdWRlZF92aWFfaW1wb3J0X2hlcmU6YSgxMzk5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGaWxlX2lzX2luY2x1ZGVkX3ZpYV9pbXBvcnRfaGVyZV8xMzk5XCIsXCJGaWxlIGlzIGluY2x1ZGVkIHZpYSBpbXBvcnQgaGVyZS5cIiksUmVmZXJlbmNlZF92aWFfMF9mcm9tX2ZpbGVfMTphKDE0MDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlZmVyZW5jZWRfdmlhXzBfZnJvbV9maWxlXzFfMTQwMFwiLFwiUmVmZXJlbmNlZCB2aWEgJ3swfScgZnJvbSBmaWxlICd7MX0nXCIpLEZpbGVfaXNfaW5jbHVkZWRfdmlhX3JlZmVyZW5jZV9oZXJlOmEoMTQwMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV9pc19pbmNsdWRlZF92aWFfcmVmZXJlbmNlX2hlcmVfMTQwMVwiLFwiRmlsZSBpcyBpbmNsdWRlZCB2aWEgcmVmZXJlbmNlIGhlcmUuXCIpLFR5cGVfbGlicmFyeV9yZWZlcmVuY2VkX3ZpYV8wX2Zyb21fZmlsZV8xOmEoMTQwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVHlwZV9saWJyYXJ5X3JlZmVyZW5jZWRfdmlhXzBfZnJvbV9maWxlXzFfMTQwMlwiLFwiVHlwZSBsaWJyYXJ5IHJlZmVyZW5jZWQgdmlhICd7MH0nIGZyb20gZmlsZSAnezF9J1wiKSxUeXBlX2xpYnJhcnlfcmVmZXJlbmNlZF92aWFfMF9mcm9tX2ZpbGVfMV93aXRoX3BhY2thZ2VJZF8yOmEoMTQwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVHlwZV9saWJyYXJ5X3JlZmVyZW5jZWRfdmlhXzBfZnJvbV9maWxlXzFfd2l0aF9wYWNrYWdlSWRfMl8xNDAzXCIsXCJUeXBlIGxpYnJhcnkgcmVmZXJlbmNlZCB2aWEgJ3swfScgZnJvbSBmaWxlICd7MX0nIHdpdGggcGFja2FnZUlkICd7Mn0nXCIpLEZpbGVfaXNfaW5jbHVkZWRfdmlhX3R5cGVfbGlicmFyeV9yZWZlcmVuY2VfaGVyZTphKDE0MDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfaXNfaW5jbHVkZWRfdmlhX3R5cGVfbGlicmFyeV9yZWZlcmVuY2VfaGVyZV8xNDA0XCIsXCJGaWxlIGlzIGluY2x1ZGVkIHZpYSB0eXBlIGxpYnJhcnkgcmVmZXJlbmNlIGhlcmUuXCIpLExpYnJhcnlfcmVmZXJlbmNlZF92aWFfMF9mcm9tX2ZpbGVfMTphKDE0MDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkxpYnJhcnlfcmVmZXJlbmNlZF92aWFfMF9mcm9tX2ZpbGVfMV8xNDA1XCIsXCJMaWJyYXJ5IHJlZmVyZW5jZWQgdmlhICd7MH0nIGZyb20gZmlsZSAnezF9J1wiKSxGaWxlX2lzX2luY2x1ZGVkX3ZpYV9saWJyYXJ5X3JlZmVyZW5jZV9oZXJlOmEoMTQwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV9pc19pbmNsdWRlZF92aWFfbGlicmFyeV9yZWZlcmVuY2VfaGVyZV8xNDA2XCIsXCJGaWxlIGlzIGluY2x1ZGVkIHZpYSBsaWJyYXJ5IHJlZmVyZW5jZSBoZXJlLlwiKSxNYXRjaGVkX2J5X2luY2x1ZGVfcGF0dGVybl8wX2luXzE6YSgxNDA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJNYXRjaGVkX2J5X2luY2x1ZGVfcGF0dGVybl8wX2luXzFfMTQwN1wiLFwiTWF0Y2hlZCBieSBpbmNsdWRlIHBhdHRlcm4gJ3swfScgaW4gJ3sxfSdcIiksRmlsZV9pc19tYXRjaGVkX2J5X2luY2x1ZGVfcGF0dGVybl9zcGVjaWZpZWRfaGVyZTphKDE0MDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfaXNfbWF0Y2hlZF9ieV9pbmNsdWRlX3BhdHRlcm5fc3BlY2lmaWVkX2hlcmVfMTQwOFwiLFwiRmlsZSBpcyBtYXRjaGVkIGJ5IGluY2x1ZGUgcGF0dGVybiBzcGVjaWZpZWQgaGVyZS5cIiksUGFydF9vZl9maWxlc19saXN0X2luX3RzY29uZmlnX2pzb246YSgxNDA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQYXJ0X29mX2ZpbGVzX2xpc3RfaW5fdHNjb25maWdfanNvbl8xNDA5XCIsXCJQYXJ0IG9mICdmaWxlcycgbGlzdCBpbiB0c2NvbmZpZy5qc29uXCIpLEZpbGVfaXNfbWF0Y2hlZF9ieV9maWxlc19saXN0X3NwZWNpZmllZF9oZXJlOmEoMTQxMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV9pc19tYXRjaGVkX2J5X2ZpbGVzX2xpc3Rfc3BlY2lmaWVkX2hlcmVfMTQxMFwiLFwiRmlsZSBpcyBtYXRjaGVkIGJ5ICdmaWxlcycgbGlzdCBzcGVjaWZpZWQgaGVyZS5cIiksT3V0cHV0X2Zyb21fcmVmZXJlbmNlZF9wcm9qZWN0XzBfaW5jbHVkZWRfYmVjYXVzZV8xX3NwZWNpZmllZDphKDE0MTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk91dHB1dF9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF8wX2luY2x1ZGVkX2JlY2F1c2VfMV9zcGVjaWZpZWRfMTQxMVwiLFwiT3V0cHV0IGZyb20gcmVmZXJlbmNlZCBwcm9qZWN0ICd7MH0nIGluY2x1ZGVkIGJlY2F1c2UgJ3sxfScgc3BlY2lmaWVkXCIpLE91dHB1dF9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF8wX2luY2x1ZGVkX2JlY2F1c2VfbW9kdWxlX2lzX3NwZWNpZmllZF9hc19ub25lOmEoMTQxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiT3V0cHV0X2Zyb21fcmVmZXJlbmNlZF9wcm9qZWN0XzBfaW5jbHVkZWRfYmVjYXVzZV9tb2R1bGVfaXNfc3BlY2lmaWVkX2FzX25vbmVfMTQxMlwiLFwiT3V0cHV0IGZyb20gcmVmZXJlbmNlZCBwcm9qZWN0ICd7MH0nIGluY2x1ZGVkIGJlY2F1c2UgJy0tbW9kdWxlJyBpcyBzcGVjaWZpZWQgYXMgJ25vbmUnXCIpLEZpbGVfaXNfb3V0cHV0X2Zyb21fcmVmZXJlbmNlZF9wcm9qZWN0X3NwZWNpZmllZF9oZXJlOmEoMTQxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV9pc19vdXRwdXRfZnJvbV9yZWZlcmVuY2VkX3Byb2plY3Rfc3BlY2lmaWVkX2hlcmVfMTQxM1wiLFwiRmlsZSBpcyBvdXRwdXQgZnJvbSByZWZlcmVuY2VkIHByb2plY3Qgc3BlY2lmaWVkIGhlcmUuXCIpLFNvdXJjZV9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF8wX2luY2x1ZGVkX2JlY2F1c2VfMV9zcGVjaWZpZWQ6YSgxNDE0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTb3VyY2VfZnJvbV9yZWZlcmVuY2VkX3Byb2plY3RfMF9pbmNsdWRlZF9iZWNhdXNlXzFfc3BlY2lmaWVkXzE0MTRcIixcIlNvdXJjZSBmcm9tIHJlZmVyZW5jZWQgcHJvamVjdCAnezB9JyBpbmNsdWRlZCBiZWNhdXNlICd7MX0nIHNwZWNpZmllZFwiKSxTb3VyY2VfZnJvbV9yZWZlcmVuY2VkX3Byb2plY3RfMF9pbmNsdWRlZF9iZWNhdXNlX21vZHVsZV9pc19zcGVjaWZpZWRfYXNfbm9uZTphKDE0MTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNvdXJjZV9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF8wX2luY2x1ZGVkX2JlY2F1c2VfbW9kdWxlX2lzX3NwZWNpZmllZF9hc19ub25lXzE0MTVcIixcIlNvdXJjZSBmcm9tIHJlZmVyZW5jZWQgcHJvamVjdCAnezB9JyBpbmNsdWRlZCBiZWNhdXNlICctLW1vZHVsZScgaXMgc3BlY2lmaWVkIGFzICdub25lJ1wiKSxGaWxlX2lzX3NvdXJjZV9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF9zcGVjaWZpZWRfaGVyZTphKDE0MTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfaXNfc291cmNlX2Zyb21fcmVmZXJlbmNlZF9wcm9qZWN0X3NwZWNpZmllZF9oZXJlXzE0MTZcIixcIkZpbGUgaXMgc291cmNlIGZyb20gcmVmZXJlbmNlZCBwcm9qZWN0IHNwZWNpZmllZCBoZXJlLlwiKSxFbnRyeV9wb2ludF9vZl90eXBlX2xpYnJhcnlfMF9zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zOmEoMTQxNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW50cnlfcG9pbnRfb2ZfdHlwZV9saWJyYXJ5XzBfc3BlY2lmaWVkX2luX2NvbXBpbGVyT3B0aW9uc18xNDE3XCIsXCJFbnRyeSBwb2ludCBvZiB0eXBlIGxpYnJhcnkgJ3swfScgc3BlY2lmaWVkIGluIGNvbXBpbGVyT3B0aW9uc1wiKSxFbnRyeV9wb2ludF9vZl90eXBlX2xpYnJhcnlfMF9zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zX3dpdGhfcGFja2FnZUlkXzE6YSgxNDE4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbnRyeV9wb2ludF9vZl90eXBlX2xpYnJhcnlfMF9zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zX3dpdGhfcGFja2FnZUlkXzFfMTQxOFwiLFwiRW50cnkgcG9pbnQgb2YgdHlwZSBsaWJyYXJ5ICd7MH0nIHNwZWNpZmllZCBpbiBjb21waWxlck9wdGlvbnMgd2l0aCBwYWNrYWdlSWQgJ3sxfSdcIiksRmlsZV9pc19lbnRyeV9wb2ludF9vZl90eXBlX2xpYnJhcnlfc3BlY2lmaWVkX2hlcmU6YSgxNDE5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGaWxlX2lzX2VudHJ5X3BvaW50X29mX3R5cGVfbGlicmFyeV9zcGVjaWZpZWRfaGVyZV8xNDE5XCIsXCJGaWxlIGlzIGVudHJ5IHBvaW50IG9mIHR5cGUgbGlicmFyeSBzcGVjaWZpZWQgaGVyZS5cIiksRW50cnlfcG9pbnRfZm9yX2ltcGxpY2l0X3R5cGVfbGlicmFyeV8wOmEoMTQyMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW50cnlfcG9pbnRfZm9yX2ltcGxpY2l0X3R5cGVfbGlicmFyeV8wXzE0MjBcIixcIkVudHJ5IHBvaW50IGZvciBpbXBsaWNpdCB0eXBlIGxpYnJhcnkgJ3swfSdcIiksRW50cnlfcG9pbnRfZm9yX2ltcGxpY2l0X3R5cGVfbGlicmFyeV8wX3dpdGhfcGFja2FnZUlkXzE6YSgxNDIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbnRyeV9wb2ludF9mb3JfaW1wbGljaXRfdHlwZV9saWJyYXJ5XzBfd2l0aF9wYWNrYWdlSWRfMV8xNDIxXCIsXCJFbnRyeSBwb2ludCBmb3IgaW1wbGljaXQgdHlwZSBsaWJyYXJ5ICd7MH0nIHdpdGggcGFja2FnZUlkICd7MX0nXCIpLExpYnJhcnlfMF9zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zOmEoMTQyMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTGlicmFyeV8wX3NwZWNpZmllZF9pbl9jb21waWxlck9wdGlvbnNfMTQyMlwiLFwiTGlicmFyeSAnezB9JyBzcGVjaWZpZWQgaW4gY29tcGlsZXJPcHRpb25zXCIpLEZpbGVfaXNfbGlicmFyeV9zcGVjaWZpZWRfaGVyZTphKDE0MjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfaXNfbGlicmFyeV9zcGVjaWZpZWRfaGVyZV8xNDIzXCIsXCJGaWxlIGlzIGxpYnJhcnkgc3BlY2lmaWVkIGhlcmUuXCIpLERlZmF1bHRfbGlicmFyeTphKDE0MjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRlZmF1bHRfbGlicmFyeV8xNDI0XCIsXCJEZWZhdWx0IGxpYnJhcnlcIiksRGVmYXVsdF9saWJyYXJ5X2Zvcl90YXJnZXRfMDphKDE0MjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRlZmF1bHRfbGlicmFyeV9mb3JfdGFyZ2V0XzBfMTQyNVwiLFwiRGVmYXVsdCBsaWJyYXJ5IGZvciB0YXJnZXQgJ3swfSdcIiksRmlsZV9pc19kZWZhdWx0X2xpYnJhcnlfZm9yX3RhcmdldF9zcGVjaWZpZWRfaGVyZTphKDE0MjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfaXNfZGVmYXVsdF9saWJyYXJ5X2Zvcl90YXJnZXRfc3BlY2lmaWVkX2hlcmVfMTQyNlwiLFwiRmlsZSBpcyBkZWZhdWx0IGxpYnJhcnkgZm9yIHRhcmdldCBzcGVjaWZpZWQgaGVyZS5cIiksUm9vdF9maWxlX3NwZWNpZmllZF9mb3JfY29tcGlsYXRpb246YSgxNDI3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSb290X2ZpbGVfc3BlY2lmaWVkX2Zvcl9jb21waWxhdGlvbl8xNDI3XCIsXCJSb290IGZpbGUgc3BlY2lmaWVkIGZvciBjb21waWxhdGlvblwiKSxGaWxlX2lzX291dHB1dF9vZl9wcm9qZWN0X3JlZmVyZW5jZV9zb3VyY2VfMDphKDE0MjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfaXNfb3V0cHV0X29mX3Byb2plY3RfcmVmZXJlbmNlX3NvdXJjZV8wXzE0MjhcIixcIkZpbGUgaXMgb3V0cHV0IG9mIHByb2plY3QgcmVmZXJlbmNlIHNvdXJjZSAnezB9J1wiKSxGaWxlX3JlZGlyZWN0c190b19maWxlXzA6YSgxNDI5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGaWxlX3JlZGlyZWN0c190b19maWxlXzBfMTQyOVwiLFwiRmlsZSByZWRpcmVjdHMgdG8gZmlsZSAnezB9J1wiKSxUaGVfZmlsZV9pc19pbl90aGVfcHJvZ3JhbV9iZWNhdXNlX0NvbG9uOmEoMTQzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVGhlX2ZpbGVfaXNfaW5fdGhlX3Byb2dyYW1fYmVjYXVzZV9Db2xvbl8xNDMwXCIsXCJUaGUgZmlsZSBpcyBpbiB0aGUgcHJvZ3JhbSBiZWNhdXNlOlwiKSxmb3JfYXdhaXRfbG9vcHNfYXJlX29ubHlfYWxsb3dlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfZmlsZV93aGVuX3RoYXRfZmlsZV9pc19hX21vZHVsZV9idXRfdGhpc19maWxlX2hhc19ub19pbXBvcnRzX29yX2V4cG9ydHNfQ29uc2lkZXJfYWRkaW5nX2FuX2VtcHR5X2V4cG9ydF90b19tYWtlX3RoaXNfZmlsZV9hX21vZHVsZTphKDE0MzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJmb3JfYXdhaXRfbG9vcHNfYXJlX29ubHlfYWxsb3dlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfZmlsZV93aGVuX3RoYXRfZmlsZV9pc19hX21vZHVsZV9idXRfdGhpc19maWxlXzE0MzFcIixcIidmb3IgYXdhaXQnIGxvb3BzIGFyZSBvbmx5IGFsbG93ZWQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIGZpbGUgd2hlbiB0aGF0IGZpbGUgaXMgYSBtb2R1bGUsIGJ1dCB0aGlzIGZpbGUgaGFzIG5vIGltcG9ydHMgb3IgZXhwb3J0cy4gQ29uc2lkZXIgYWRkaW5nIGFuIGVtcHR5ICdleHBvcnQge30nIHRvIG1ha2UgdGhpcyBmaWxlIGEgbW9kdWxlLlwiKSxUb3BfbGV2ZWxfZm9yX2F3YWl0X2xvb3BzX2FyZV9vbmx5X2FsbG93ZWRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19zZXRfdG9fZXMyMDIyX2VzbmV4dF9zeXN0ZW1fbm9kZTE2X29yX25vZGVuZXh0X2FuZF90aGVfdGFyZ2V0X29wdGlvbl9pc19zZXRfdG9fZXMyMDE3X29yX2hpZ2hlcjphKDE0MzIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUb3BfbGV2ZWxfZm9yX2F3YWl0X2xvb3BzX2FyZV9vbmx5X2FsbG93ZWRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19zZXRfdG9fZXMyMDIyX2VzbmV4dF9zeXN0ZW1fbm9kXzE0MzJcIixcIlRvcC1sZXZlbCAnZm9yIGF3YWl0JyBsb29wcyBhcmUgb25seSBhbGxvd2VkIHdoZW4gdGhlICdtb2R1bGUnIG9wdGlvbiBpcyBzZXQgdG8gJ2VzMjAyMicsICdlc25leHQnLCAnc3lzdGVtJywgJ25vZGUxNicsIG9yICdub2RlbmV4dCcsIGFuZCB0aGUgJ3RhcmdldCcgb3B0aW9uIGlzIHNldCB0byAnZXMyMDE3JyBvciBoaWdoZXIuXCIpLERlY29yYXRvcnNfbWF5X25vdF9iZV9hcHBsaWVkX3RvX3RoaXNfcGFyYW1ldGVyczphKDE0MzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEZWNvcmF0b3JzX21heV9ub3RfYmVfYXBwbGllZF90b190aGlzX3BhcmFtZXRlcnNfMTQzM1wiLFwiRGVjb3JhdG9ycyBtYXkgbm90IGJlIGFwcGxpZWQgdG8gJ3RoaXMnIHBhcmFtZXRlcnMuXCIpLFVuZXhwZWN0ZWRfa2V5d29yZF9vcl9pZGVudGlmaWVyOmEoMTQzNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVuZXhwZWN0ZWRfa2V5d29yZF9vcl9pZGVudGlmaWVyXzE0MzRcIixcIlVuZXhwZWN0ZWQga2V5d29yZCBvciBpZGVudGlmaWVyLlwiKSxVbmtub3duX2tleXdvcmRfb3JfaWRlbnRpZmllcl9EaWRfeW91X21lYW5fMDphKDE0MzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbmtub3duX2tleXdvcmRfb3JfaWRlbnRpZmllcl9EaWRfeW91X21lYW5fMF8xNDM1XCIsXCJVbmtub3duIGtleXdvcmQgb3IgaWRlbnRpZmllci4gRGlkIHlvdSBtZWFuICd7MH0nP1wiKSxEZWNvcmF0b3JzX211c3RfcHJlY2VkZV90aGVfbmFtZV9hbmRfYWxsX2tleXdvcmRzX29mX3Byb3BlcnR5X2RlY2xhcmF0aW9uczphKDE0MzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEZWNvcmF0b3JzX211c3RfcHJlY2VkZV90aGVfbmFtZV9hbmRfYWxsX2tleXdvcmRzX29mX3Byb3BlcnR5X2RlY2xhcmF0aW9uc18xNDM2XCIsXCJEZWNvcmF0b3JzIG11c3QgcHJlY2VkZSB0aGUgbmFtZSBhbmQgYWxsIGtleXdvcmRzIG9mIHByb3BlcnR5IGRlY2xhcmF0aW9ucy5cIiksTmFtZXNwYWNlX211c3RfYmVfZ2l2ZW5fYV9uYW1lOmEoMTQzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5hbWVzcGFjZV9tdXN0X2JlX2dpdmVuX2FfbmFtZV8xNDM3XCIsXCJOYW1lc3BhY2UgbXVzdCBiZSBnaXZlbiBhIG5hbWUuXCIpLEludGVyZmFjZV9tdXN0X2JlX2dpdmVuX2FfbmFtZTphKDE0MzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbnRlcmZhY2VfbXVzdF9iZV9naXZlbl9hX25hbWVfMTQzOFwiLFwiSW50ZXJmYWNlIG11c3QgYmUgZ2l2ZW4gYSBuYW1lLlwiKSxUeXBlX2FsaWFzX211c3RfYmVfZ2l2ZW5fYV9uYW1lOmEoMTQzOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfYWxpYXNfbXVzdF9iZV9naXZlbl9hX25hbWVfMTQzOVwiLFwiVHlwZSBhbGlhcyBtdXN0IGJlIGdpdmVuIGEgbmFtZS5cIiksVmFyaWFibGVfZGVjbGFyYXRpb25fbm90X2FsbG93ZWRfYXRfdGhpc19sb2NhdGlvbjphKDE0NDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJWYXJpYWJsZV9kZWNsYXJhdGlvbl9ub3RfYWxsb3dlZF9hdF90aGlzX2xvY2F0aW9uXzE0NDBcIixcIlZhcmlhYmxlIGRlY2xhcmF0aW9uIG5vdCBhbGxvd2VkIGF0IHRoaXMgbG9jYXRpb24uXCIpLENhbm5vdF9zdGFydF9hX2Z1bmN0aW9uX2NhbGxfaW5fYV90eXBlX2Fubm90YXRpb246YSgxNDQxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X3N0YXJ0X2FfZnVuY3Rpb25fY2FsbF9pbl9hX3R5cGVfYW5ub3RhdGlvbl8xNDQxXCIsXCJDYW5ub3Qgc3RhcnQgYSBmdW5jdGlvbiBjYWxsIGluIGEgdHlwZSBhbm5vdGF0aW9uLlwiKSxFeHBlY3RlZF9mb3JfcHJvcGVydHlfaW5pdGlhbGl6ZXI6YSgxNDQyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwZWN0ZWRfZm9yX3Byb3BlcnR5X2luaXRpYWxpemVyXzE0NDJcIixcIkV4cGVjdGVkICc9JyBmb3IgcHJvcGVydHkgaW5pdGlhbGl6ZXIuXCIpLE1vZHVsZV9kZWNsYXJhdGlvbl9uYW1lc19tYXlfb25seV91c2Vfb3JfcXVvdGVkX3N0cmluZ3M6YSgxNDQzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTW9kdWxlX2RlY2xhcmF0aW9uX25hbWVzX21heV9vbmx5X3VzZV9vcl9xdW90ZWRfc3RyaW5nc18xNDQzXCIsYE1vZHVsZSBkZWNsYXJhdGlvbiBuYW1lcyBtYXkgb25seSB1c2UgJyBvciBcIiBxdW90ZWQgc3RyaW5ncy5gKSxfMF9pc19hX3R5cGVfYW5kX211c3RfYmVfaW1wb3J0ZWRfdXNpbmdfYV90eXBlX29ubHlfaW1wb3J0X3doZW5fcHJlc2VydmVWYWx1ZUltcG9ydHNfYW5kX2lzb2xhdGVkTW9kdWxlc19hcmVfYm90aF9lbmFibGVkOmEoMTQ0NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2lzX2FfdHlwZV9hbmRfbXVzdF9iZV9pbXBvcnRlZF91c2luZ19hX3R5cGVfb25seV9pbXBvcnRfd2hlbl9wcmVzZXJ2ZVZhbHVlSW1wb3J0c19hbmRfaXNvbGF0ZWRNb2RfMTQ0NFwiLFwiJ3swfScgaXMgYSB0eXBlIGFuZCBtdXN0IGJlIGltcG9ydGVkIHVzaW5nIGEgdHlwZS1vbmx5IGltcG9ydCB3aGVuICdwcmVzZXJ2ZVZhbHVlSW1wb3J0cycgYW5kICdpc29sYXRlZE1vZHVsZXMnIGFyZSBib3RoIGVuYWJsZWQuXCIpLF8wX3Jlc29sdmVzX3RvX2FfdHlwZV9vbmx5X2RlY2xhcmF0aW9uX2FuZF9tdXN0X2JlX2ltcG9ydGVkX3VzaW5nX2FfdHlwZV9vbmx5X2ltcG9ydF93aGVuX3ByZXNlcnZlVmFsdWVJbXBvcnRzX2FuZF9pc29sYXRlZE1vZHVsZXNfYXJlX2JvdGhfZW5hYmxlZDphKDE0NDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9yZXNvbHZlc190b19hX3R5cGVfb25seV9kZWNsYXJhdGlvbl9hbmRfbXVzdF9iZV9pbXBvcnRlZF91c2luZ19hX3R5cGVfb25seV9pbXBvcnRfd2hlbl9wcmVzZXJ2ZVZhXzE0NDZcIixcIid7MH0nIHJlc29sdmVzIHRvIGEgdHlwZS1vbmx5IGRlY2xhcmF0aW9uIGFuZCBtdXN0IGJlIGltcG9ydGVkIHVzaW5nIGEgdHlwZS1vbmx5IGltcG9ydCB3aGVuICdwcmVzZXJ2ZVZhbHVlSW1wb3J0cycgYW5kICdpc29sYXRlZE1vZHVsZXMnIGFyZSBib3RoIGVuYWJsZWQuXCIpLF8wX3Jlc29sdmVzX3RvX2FfdHlwZV9vbmx5X2RlY2xhcmF0aW9uX2FuZF9tdXN0X2JlX3JlX2V4cG9ydGVkX3VzaW5nX2FfdHlwZV9vbmx5X3JlX2V4cG9ydF93aGVuX2lzb2xhdGVkTW9kdWxlc19pc19lbmFibGVkOmEoMTQ0OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX3Jlc29sdmVzX3RvX2FfdHlwZV9vbmx5X2RlY2xhcmF0aW9uX2FuZF9tdXN0X2JlX3JlX2V4cG9ydGVkX3VzaW5nX2FfdHlwZV9vbmx5X3JlX2V4cG9ydF93aGVuX2lzb2xfMTQ0OFwiLFwiJ3swfScgcmVzb2x2ZXMgdG8gYSB0eXBlLW9ubHkgZGVjbGFyYXRpb24gYW5kIG11c3QgYmUgcmUtZXhwb3J0ZWQgdXNpbmcgYSB0eXBlLW9ubHkgcmUtZXhwb3J0IHdoZW4gJ2lzb2xhdGVkTW9kdWxlcycgaXMgZW5hYmxlZC5cIiksUHJlc2VydmVfdW51c2VkX2ltcG9ydGVkX3ZhbHVlc19pbl90aGVfSmF2YVNjcmlwdF9vdXRwdXRfdGhhdF93b3VsZF9vdGhlcndpc2VfYmVfcmVtb3ZlZDphKDE0NDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByZXNlcnZlX3VudXNlZF9pbXBvcnRlZF92YWx1ZXNfaW5fdGhlX0phdmFTY3JpcHRfb3V0cHV0X3RoYXRfd291bGRfb3RoZXJ3aXNlX2JlX3JlbW92ZWRfMTQ0OVwiLFwiUHJlc2VydmUgdW51c2VkIGltcG9ydGVkIHZhbHVlcyBpbiB0aGUgSmF2YVNjcmlwdCBvdXRwdXQgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgcmVtb3ZlZC5cIiksRHluYW1pY19pbXBvcnRzX2Nhbl9vbmx5X2FjY2VwdF9hX21vZHVsZV9zcGVjaWZpZXJfYW5kX2FuX29wdGlvbmFsX2Fzc2VydGlvbl9hc19hcmd1bWVudHM6YSgxNDUwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEeW5hbWljX2ltcG9ydHNfY2FuX29ubHlfYWNjZXB0X2FfbW9kdWxlX3NwZWNpZmllcl9hbmRfYW5fb3B0aW9uYWxfYXNzZXJ0aW9uX2FzX2FyZ3VtZW50c18xNDUwXCIsXCJEeW5hbWljIGltcG9ydHMgY2FuIG9ubHkgYWNjZXB0IGEgbW9kdWxlIHNwZWNpZmllciBhbmQgYW4gb3B0aW9uYWwgYXNzZXJ0aW9uIGFzIGFyZ3VtZW50c1wiKSxQcml2YXRlX2lkZW50aWZpZXJzX2FyZV9vbmx5X2FsbG93ZWRfaW5fY2xhc3NfYm9kaWVzX2FuZF9tYXlfb25seV9iZV91c2VkX2FzX3BhcnRfb2ZfYV9jbGFzc19tZW1iZXJfZGVjbGFyYXRpb25fcHJvcGVydHlfYWNjZXNzX29yX29uX3RoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9pbl9leHByZXNzaW9uOmEoMTQ1MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX29ubHlfYWxsb3dlZF9pbl9jbGFzc19ib2RpZXNfYW5kX21heV9vbmx5X2JlX3VzZWRfYXNfcGFydF9vZl9hX2NsYXNzX21lbWJlcl9fMTQ1MVwiLFwiUHJpdmF0ZSBpZGVudGlmaWVycyBhcmUgb25seSBhbGxvd2VkIGluIGNsYXNzIGJvZGllcyBhbmQgbWF5IG9ubHkgYmUgdXNlZCBhcyBwYXJ0IG9mIGEgY2xhc3MgbWVtYmVyIGRlY2xhcmF0aW9uLCBwcm9wZXJ0eSBhY2Nlc3MsIG9yIG9uIHRoZSBsZWZ0LWhhbmQtc2lkZSBvZiBhbiAnaW4nIGV4cHJlc3Npb25cIiksUmVzb2x1dGlvbl9tb2Rlc19hcmVfb25seV9zdXBwb3J0ZWRfd2hlbl9tb2R1bGVSZXNvbHV0aW9uX2lzX25vZGUxNl9vcl9ub2RlbmV4dDphKDE0NTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXNvbHV0aW9uX21vZGVzX2FyZV9vbmx5X3N1cHBvcnRlZF93aGVuX21vZHVsZVJlc29sdXRpb25faXNfbm9kZTE2X29yX25vZGVuZXh0XzE0NTJcIixcIlJlc29sdXRpb24gbW9kZXMgYXJlIG9ubHkgc3VwcG9ydGVkIHdoZW4gYG1vZHVsZVJlc29sdXRpb25gIGlzIGBub2RlMTZgIG9yIGBub2RlbmV4dGAuXCIpLHJlc29sdXRpb25fbW9kZV9zaG91bGRfYmVfZWl0aGVyX3JlcXVpcmVfb3JfaW1wb3J0OmEoMTQ1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInJlc29sdXRpb25fbW9kZV9zaG91bGRfYmVfZWl0aGVyX3JlcXVpcmVfb3JfaW1wb3J0XzE0NTNcIixcImByZXNvbHV0aW9uLW1vZGVgIHNob3VsZCBiZSBlaXRoZXIgYHJlcXVpcmVgIG9yIGBpbXBvcnRgLlwiKSxyZXNvbHV0aW9uX21vZGVfY2FuX29ubHlfYmVfc2V0X2Zvcl90eXBlX29ubHlfaW1wb3J0czphKDE0NTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJyZXNvbHV0aW9uX21vZGVfY2FuX29ubHlfYmVfc2V0X2Zvcl90eXBlX29ubHlfaW1wb3J0c18xNDU0XCIsXCJgcmVzb2x1dGlvbi1tb2RlYCBjYW4gb25seSBiZSBzZXQgZm9yIHR5cGUtb25seSBpbXBvcnRzLlwiKSxyZXNvbHV0aW9uX21vZGVfaXNfdGhlX29ubHlfdmFsaWRfa2V5X2Zvcl90eXBlX2ltcG9ydF9hc3NlcnRpb25zOmEoMTQ1NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInJlc29sdXRpb25fbW9kZV9pc190aGVfb25seV92YWxpZF9rZXlfZm9yX3R5cGVfaW1wb3J0X2Fzc2VydGlvbnNfMTQ1NVwiLFwiYHJlc29sdXRpb24tbW9kZWAgaXMgdGhlIG9ubHkgdmFsaWQga2V5IGZvciB0eXBlIGltcG9ydCBhc3NlcnRpb25zLlwiKSxUeXBlX2ltcG9ydF9hc3NlcnRpb25zX3Nob3VsZF9oYXZlX2V4YWN0bHlfb25lX2tleV9yZXNvbHV0aW9uX21vZGVfd2l0aF92YWx1ZV9pbXBvcnRfb3JfcmVxdWlyZTphKDE0NTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX2ltcG9ydF9hc3NlcnRpb25zX3Nob3VsZF9oYXZlX2V4YWN0bHlfb25lX2tleV9yZXNvbHV0aW9uX21vZGVfd2l0aF92YWx1ZV9pbXBvcnRfb3JfcmVxdWlyZV8xNDU2XCIsXCJUeXBlIGltcG9ydCBhc3NlcnRpb25zIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIGtleSAtIGByZXNvbHV0aW9uLW1vZGVgIC0gd2l0aCB2YWx1ZSBgaW1wb3J0YCBvciBgcmVxdWlyZWAuXCIpLFRoZV9pbXBvcnRfbWV0YV9tZXRhX3Byb3BlcnR5X2lzX25vdF9hbGxvd2VkX2luX2ZpbGVzX3doaWNoX3dpbGxfYnVpbGRfaW50b19Db21tb25KU19vdXRwdXQ6YSgxNDcwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2ltcG9ydF9tZXRhX21ldGFfcHJvcGVydHlfaXNfbm90X2FsbG93ZWRfaW5fZmlsZXNfd2hpY2hfd2lsbF9idWlsZF9pbnRvX0NvbW1vbkpTX291dHB1dF8xNDcwXCIsXCJUaGUgJ2ltcG9ydC5tZXRhJyBtZXRhLXByb3BlcnR5IGlzIG5vdCBhbGxvd2VkIGluIGZpbGVzIHdoaWNoIHdpbGwgYnVpbGQgaW50byBDb21tb25KUyBvdXRwdXQuXCIpLE1vZHVsZV8wX2Nhbm5vdF9iZV9pbXBvcnRlZF91c2luZ190aGlzX2NvbnN0cnVjdF9UaGVfc3BlY2lmaWVyX29ubHlfcmVzb2x2ZXNfdG9fYW5fRVNfbW9kdWxlX3doaWNoX2Nhbm5vdF9iZV9pbXBvcnRlZF9zeW5jaHJvbm91c2x5X1VzZV9keW5hbWljX2ltcG9ydF9pbnN0ZWFkOmEoMTQ3MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1vZHVsZV8wX2Nhbm5vdF9iZV9pbXBvcnRlZF91c2luZ190aGlzX2NvbnN0cnVjdF9UaGVfc3BlY2lmaWVyX29ubHlfcmVzb2x2ZXNfdG9fYW5fRVNfbW9kdWxlX3doaWNoX2NfMTQ3MVwiLFwiTW9kdWxlICd7MH0nIGNhbm5vdCBiZSBpbXBvcnRlZCB1c2luZyB0aGlzIGNvbnN0cnVjdC4gVGhlIHNwZWNpZmllciBvbmx5IHJlc29sdmVzIHRvIGFuIEVTIG1vZHVsZSwgd2hpY2ggY2Fubm90IGJlIGltcG9ydGVkIHN5bmNocm9ub3VzbHkuIFVzZSBkeW5hbWljIGltcG9ydCBpbnN0ZWFkLlwiKSxjYXRjaF9vcl9maW5hbGx5X2V4cGVjdGVkOmEoMTQ3MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImNhdGNoX29yX2ZpbmFsbHlfZXhwZWN0ZWRfMTQ3MlwiLFwiJ2NhdGNoJyBvciAnZmluYWxseScgZXhwZWN0ZWQuXCIpLEFuX2ltcG9ydF9kZWNsYXJhdGlvbl9jYW5fb25seV9iZV91c2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGU6YSgxNDczLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5faW1wb3J0X2RlY2xhcmF0aW9uX2Nhbl9vbmx5X2JlX3VzZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX21vZHVsZV8xNDczXCIsXCJBbiBpbXBvcnQgZGVjbGFyYXRpb24gY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLlwiKSxBbl9leHBvcnRfZGVjbGFyYXRpb25fY2FuX29ubHlfYmVfdXNlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbW9kdWxlOmEoMTQ3NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2V4cG9ydF9kZWNsYXJhdGlvbl9jYW5fb25seV9iZV91c2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGVfMTQ3NFwiLFwiQW4gZXhwb3J0IGRlY2xhcmF0aW9uIGNhbiBvbmx5IGJlIHVzZWQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS5cIiksQ29udHJvbF93aGF0X21ldGhvZF9pc191c2VkX3RvX2RldGVjdF9tb2R1bGVfZm9ybWF0X0pTX2ZpbGVzOmEoMTQ3NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udHJvbF93aGF0X21ldGhvZF9pc191c2VkX3RvX2RldGVjdF9tb2R1bGVfZm9ybWF0X0pTX2ZpbGVzXzE0NzVcIixcIkNvbnRyb2wgd2hhdCBtZXRob2QgaXMgdXNlZCB0byBkZXRlY3QgbW9kdWxlLWZvcm1hdCBKUyBmaWxlcy5cIiksYXV0b19Db2xvbl9UcmVhdF9maWxlc193aXRoX2ltcG9ydHNfZXhwb3J0c19pbXBvcnRfbWV0YV9qc3hfd2l0aF9qc3hfQ29sb25fcmVhY3RfanN4X29yX2VzbV9mb3JtYXRfd2l0aF9tb2R1bGVfQ29sb25fbm9kZTE2X2FzX21vZHVsZXM6YSgxNDc2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJhdXRvX0NvbG9uX1RyZWF0X2ZpbGVzX3dpdGhfaW1wb3J0c19leHBvcnRzX2ltcG9ydF9tZXRhX2pzeF93aXRoX2pzeF9Db2xvbl9yZWFjdF9qc3hfb3JfZXNtX2Zvcm1hdF93XzE0NzZcIiwnXCJhdXRvXCI6IFRyZWF0IGZpbGVzIHdpdGggaW1wb3J0cywgZXhwb3J0cywgaW1wb3J0Lm1ldGEsIGpzeCAod2l0aCBqc3g6IHJlYWN0LWpzeCksIG9yIGVzbSBmb3JtYXQgKHdpdGggbW9kdWxlOiBub2RlMTYrKSBhcyBtb2R1bGVzLicpLFRoZV90eXBlc19vZl8wX2FyZV9pbmNvbXBhdGlibGVfYmV0d2Vlbl90aGVzZV90eXBlczphKDIyMDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfdHlwZXNfb2ZfMF9hcmVfaW5jb21wYXRpYmxlX2JldHdlZW5fdGhlc2VfdHlwZXNfMjIwMFwiLFwiVGhlIHR5cGVzIG9mICd7MH0nIGFyZSBpbmNvbXBhdGlibGUgYmV0d2VlbiB0aGVzZSB0eXBlcy5cIiksVGhlX3R5cGVzX3JldHVybmVkX2J5XzBfYXJlX2luY29tcGF0aWJsZV9iZXR3ZWVuX3RoZXNlX3R5cGVzOmEoMjIwMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV90eXBlc19yZXR1cm5lZF9ieV8wX2FyZV9pbmNvbXBhdGlibGVfYmV0d2Vlbl90aGVzZV90eXBlc18yMjAxXCIsXCJUaGUgdHlwZXMgcmV0dXJuZWQgYnkgJ3swfScgYXJlIGluY29tcGF0aWJsZSBiZXR3ZWVuIHRoZXNlIHR5cGVzLlwiKSxDYWxsX3NpZ25hdHVyZV9yZXR1cm5fdHlwZXNfMF9hbmRfMV9hcmVfaW5jb21wYXRpYmxlOmEoMjIwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbGxfc2lnbmF0dXJlX3JldHVybl90eXBlc18wX2FuZF8xX2FyZV9pbmNvbXBhdGlibGVfMjIwMlwiLFwiQ2FsbCBzaWduYXR1cmUgcmV0dXJuIHR5cGVzICd7MH0nIGFuZCAnezF9JyBhcmUgaW5jb21wYXRpYmxlLlwiLHZvaWQgMCwhMCksQ29uc3RydWN0X3NpZ25hdHVyZV9yZXR1cm5fdHlwZXNfMF9hbmRfMV9hcmVfaW5jb21wYXRpYmxlOmEoMjIwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbnN0cnVjdF9zaWduYXR1cmVfcmV0dXJuX3R5cGVzXzBfYW5kXzFfYXJlX2luY29tcGF0aWJsZV8yMjAzXCIsXCJDb25zdHJ1Y3Qgc2lnbmF0dXJlIHJldHVybiB0eXBlcyAnezB9JyBhbmQgJ3sxfScgYXJlIGluY29tcGF0aWJsZS5cIix2b2lkIDAsITApLENhbGxfc2lnbmF0dXJlc193aXRoX25vX2FyZ3VtZW50c19oYXZlX2luY29tcGF0aWJsZV9yZXR1cm5fdHlwZXNfMF9hbmRfMTphKDIyMDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYWxsX3NpZ25hdHVyZXNfd2l0aF9ub19hcmd1bWVudHNfaGF2ZV9pbmNvbXBhdGlibGVfcmV0dXJuX3R5cGVzXzBfYW5kXzFfMjIwNFwiLFwiQ2FsbCBzaWduYXR1cmVzIHdpdGggbm8gYXJndW1lbnRzIGhhdmUgaW5jb21wYXRpYmxlIHJldHVybiB0eXBlcyAnezB9JyBhbmQgJ3sxfScuXCIsdm9pZCAwLCEwKSxDb25zdHJ1Y3Rfc2lnbmF0dXJlc193aXRoX25vX2FyZ3VtZW50c19oYXZlX2luY29tcGF0aWJsZV9yZXR1cm5fdHlwZXNfMF9hbmRfMTphKDIyMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb25zdHJ1Y3Rfc2lnbmF0dXJlc193aXRoX25vX2FyZ3VtZW50c19oYXZlX2luY29tcGF0aWJsZV9yZXR1cm5fdHlwZXNfMF9hbmRfMV8yMjA1XCIsXCJDb25zdHJ1Y3Qgc2lnbmF0dXJlcyB3aXRoIG5vIGFyZ3VtZW50cyBoYXZlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZXMgJ3swfScgYW5kICd7MX0nLlwiLHZvaWQgMCwhMCksVGhlX3R5cGVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfb25fYV9uYW1lZF9pbXBvcnRfd2hlbl9pbXBvcnRfdHlwZV9pc191c2VkX29uX2l0c19pbXBvcnRfc3RhdGVtZW50OmEoMjIwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV90eXBlX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX29uX2FfbmFtZWRfaW1wb3J0X3doZW5faW1wb3J0X3R5cGVfaXNfdXNlZF9vbl9pdHNfaW1wb3J0X3N0YXRlbWVudF8yMjA2XCIsXCJUaGUgJ3R5cGUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIG9uIGEgbmFtZWQgaW1wb3J0IHdoZW4gJ2ltcG9ydCB0eXBlJyBpcyB1c2VkIG9uIGl0cyBpbXBvcnQgc3RhdGVtZW50LlwiKSxUaGVfdHlwZV9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF9vbl9hX25hbWVkX2V4cG9ydF93aGVuX2V4cG9ydF90eXBlX2lzX3VzZWRfb25faXRzX2V4cG9ydF9zdGF0ZW1lbnQ6YSgyMjA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3R5cGVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfb25fYV9uYW1lZF9leHBvcnRfd2hlbl9leHBvcnRfdHlwZV9pc191c2VkX29uX2l0c19leHBvcnRfc3RhdGVtZW50XzIyMDdcIixcIlRoZSAndHlwZScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgb24gYSBuYW1lZCBleHBvcnQgd2hlbiAnZXhwb3J0IHR5cGUnIGlzIHVzZWQgb24gaXRzIGV4cG9ydCBzdGF0ZW1lbnQuXCIpLFRoZV9wcm9qZWN0X3Jvb3RfaXNfYW1iaWd1b3VzX2J1dF9pc19yZXF1aXJlZF90b19yZXNvbHZlX2V4cG9ydF9tYXBfZW50cnlfMF9pbl9maWxlXzFfU3VwcGx5X3RoZV9yb290RGlyX2NvbXBpbGVyX29wdGlvbl90b19kaXNhbWJpZ3VhdGU6YSgyMjA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3Byb2plY3Rfcm9vdF9pc19hbWJpZ3VvdXNfYnV0X2lzX3JlcXVpcmVkX3RvX3Jlc29sdmVfZXhwb3J0X21hcF9lbnRyeV8wX2luX2ZpbGVfMV9TdXBwbHlfdGhlX3Jvb18yMjA5XCIsXCJUaGUgcHJvamVjdCByb290IGlzIGFtYmlndW91cywgYnV0IGlzIHJlcXVpcmVkIHRvIHJlc29sdmUgZXhwb3J0IG1hcCBlbnRyeSAnezB9JyBpbiBmaWxlICd7MX0nLiBTdXBwbHkgdGhlIGByb290RGlyYCBjb21waWxlciBvcHRpb24gdG8gZGlzYW1iaWd1YXRlLlwiKSxUaGVfcHJvamVjdF9yb290X2lzX2FtYmlndW91c19idXRfaXNfcmVxdWlyZWRfdG9fcmVzb2x2ZV9pbXBvcnRfbWFwX2VudHJ5XzBfaW5fZmlsZV8xX1N1cHBseV90aGVfcm9vdERpcl9jb21waWxlcl9vcHRpb25fdG9fZGlzYW1iaWd1YXRlOmEoMjIxMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9wcm9qZWN0X3Jvb3RfaXNfYW1iaWd1b3VzX2J1dF9pc19yZXF1aXJlZF90b19yZXNvbHZlX2ltcG9ydF9tYXBfZW50cnlfMF9pbl9maWxlXzFfU3VwcGx5X3RoZV9yb29fMjIxMFwiLFwiVGhlIHByb2plY3Qgcm9vdCBpcyBhbWJpZ3VvdXMsIGJ1dCBpcyByZXF1aXJlZCB0byByZXNvbHZlIGltcG9ydCBtYXAgZW50cnkgJ3swfScgaW4gZmlsZSAnezF9Jy4gU3VwcGx5IHRoZSBgcm9vdERpcmAgY29tcGlsZXIgb3B0aW9uIHRvIGRpc2FtYmlndWF0ZS5cIiksRHVwbGljYXRlX2lkZW50aWZpZXJfMDphKDIzMDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEdXBsaWNhdGVfaWRlbnRpZmllcl8wXzIzMDBcIixcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICd7MH0nLlwiKSxJbml0aWFsaXplcl9vZl9pbnN0YW5jZV9tZW1iZXJfdmFyaWFibGVfMF9jYW5ub3RfcmVmZXJlbmNlX2lkZW50aWZpZXJfMV9kZWNsYXJlZF9pbl90aGVfY29uc3RydWN0b3I6YSgyMzAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW5pdGlhbGl6ZXJfb2ZfaW5zdGFuY2VfbWVtYmVyX3ZhcmlhYmxlXzBfY2Fubm90X3JlZmVyZW5jZV9pZGVudGlmaWVyXzFfZGVjbGFyZWRfaW5fdGhlX2NvbnN0cnVjdG9yXzIzMDFcIixcIkluaXRpYWxpemVyIG9mIGluc3RhbmNlIG1lbWJlciB2YXJpYWJsZSAnezB9JyBjYW5ub3QgcmVmZXJlbmNlIGlkZW50aWZpZXIgJ3sxfScgZGVjbGFyZWQgaW4gdGhlIGNvbnN0cnVjdG9yLlwiKSxTdGF0aWNfbWVtYmVyc19jYW5ub3RfcmVmZXJlbmNlX2NsYXNzX3R5cGVfcGFyYW1ldGVyczphKDIzMDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTdGF0aWNfbWVtYmVyc19jYW5ub3RfcmVmZXJlbmNlX2NsYXNzX3R5cGVfcGFyYW1ldGVyc18yMzAyXCIsXCJTdGF0aWMgbWVtYmVycyBjYW5ub3QgcmVmZXJlbmNlIGNsYXNzIHR5cGUgcGFyYW1ldGVycy5cIiksQ2lyY3VsYXJfZGVmaW5pdGlvbl9vZl9pbXBvcnRfYWxpYXNfMDphKDIzMDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDaXJjdWxhcl9kZWZpbml0aW9uX29mX2ltcG9ydF9hbGlhc18wXzIzMDNcIixcIkNpcmN1bGFyIGRlZmluaXRpb24gb2YgaW1wb3J0IGFsaWFzICd7MH0nLlwiKSxDYW5ub3RfZmluZF9uYW1lXzA6YSgyMzA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfbmFtZV8wXzIzMDRcIixcIkNhbm5vdCBmaW5kIG5hbWUgJ3swfScuXCIpLE1vZHVsZV8wX2hhc19ub19leHBvcnRlZF9tZW1iZXJfMTphKDIzMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzFfMjMwNVwiLFwiTW9kdWxlICd7MH0nIGhhcyBubyBleHBvcnRlZCBtZW1iZXIgJ3sxfScuXCIpLEZpbGVfMF9pc19ub3RfYV9tb2R1bGU6YSgyMzA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRmlsZV8wX2lzX25vdF9hX21vZHVsZV8yMzA2XCIsXCJGaWxlICd7MH0nIGlzIG5vdCBhIG1vZHVsZS5cIiksQ2Fubm90X2ZpbmRfbW9kdWxlXzBfb3JfaXRzX2NvcnJlc3BvbmRpbmdfdHlwZV9kZWNsYXJhdGlvbnM6YSgyMzA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfbW9kdWxlXzBfb3JfaXRzX2NvcnJlc3BvbmRpbmdfdHlwZV9kZWNsYXJhdGlvbnNfMjMwN1wiLFwiQ2Fubm90IGZpbmQgbW9kdWxlICd7MH0nIG9yIGl0cyBjb3JyZXNwb25kaW5nIHR5cGUgZGVjbGFyYXRpb25zLlwiKSxNb2R1bGVfMF9oYXNfYWxyZWFkeV9leHBvcnRlZF9hX21lbWJlcl9uYW1lZF8xX0NvbnNpZGVyX2V4cGxpY2l0bHlfcmVfZXhwb3J0aW5nX3RvX3Jlc29sdmVfdGhlX2FtYmlndWl0eTphKDIzMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJNb2R1bGVfMF9oYXNfYWxyZWFkeV9leHBvcnRlZF9hX21lbWJlcl9uYW1lZF8xX0NvbnNpZGVyX2V4cGxpY2l0bHlfcmVfZXhwb3J0aW5nX3RvX3Jlc29sdmVfdGhlX2FtYmlnXzIzMDhcIixcIk1vZHVsZSB7MH0gaGFzIGFscmVhZHkgZXhwb3J0ZWQgYSBtZW1iZXIgbmFtZWQgJ3sxfScuIENvbnNpZGVyIGV4cGxpY2l0bHkgcmUtZXhwb3J0aW5nIHRvIHJlc29sdmUgdGhlIGFtYmlndWl0eS5cIiksQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfaW5fYV9tb2R1bGVfd2l0aF9vdGhlcl9leHBvcnRlZF9lbGVtZW50czphKDIzMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9leHBvcnRfYXNzaWdubWVudF9jYW5ub3RfYmVfdXNlZF9pbl9hX21vZHVsZV93aXRoX290aGVyX2V4cG9ydGVkX2VsZW1lbnRzXzIzMDlcIixcIkFuIGV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBiZSB1c2VkIGluIGEgbW9kdWxlIHdpdGggb3RoZXIgZXhwb3J0ZWQgZWxlbWVudHMuXCIpLFR5cGVfMF9yZWN1cnNpdmVseV9yZWZlcmVuY2VzX2l0c2VsZl9hc19hX2Jhc2VfdHlwZTphKDIzMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfcmVjdXJzaXZlbHlfcmVmZXJlbmNlc19pdHNlbGZfYXNfYV9iYXNlX3R5cGVfMjMxMFwiLFwiVHlwZSAnezB9JyByZWN1cnNpdmVseSByZWZlcmVuY2VzIGl0c2VsZiBhcyBhIGJhc2UgdHlwZS5cIiksQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90b193cml0ZV90aGlzX2luX2FuX2FzeW5jX2Z1bmN0aW9uOmEoMjMxMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fdG9fd3JpdGVfdGhpc19pbl9hbl9hc3luY19mdW5jdGlvbl8yMzExXCIsXCJDYW5ub3QgZmluZCBuYW1lICd7MH0nLiBEaWQgeW91IG1lYW4gdG8gd3JpdGUgdGhpcyBpbiBhbiBhc3luYyBmdW5jdGlvbj9cIiksQW5faW50ZXJmYWNlX2Nhbl9vbmx5X2V4dGVuZF9hbl9vYmplY3RfdHlwZV9vcl9pbnRlcnNlY3Rpb25fb2Zfb2JqZWN0X3R5cGVzX3dpdGhfc3RhdGljYWxseV9rbm93bl9tZW1iZXJzOmEoMjMxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFuX2ludGVyZmFjZV9jYW5fb25seV9leHRlbmRfYW5fb2JqZWN0X3R5cGVfb3JfaW50ZXJzZWN0aW9uX29mX29iamVjdF90eXBlc193aXRoX3N0YXRpY2FsbHlfa25vd25fbWVfMjMxMlwiLFwiQW4gaW50ZXJmYWNlIGNhbiBvbmx5IGV4dGVuZCBhbiBvYmplY3QgdHlwZSBvciBpbnRlcnNlY3Rpb24gb2Ygb2JqZWN0IHR5cGVzIHdpdGggc3RhdGljYWxseSBrbm93biBtZW1iZXJzLlwiKSxUeXBlX3BhcmFtZXRlcl8wX2hhc19hX2NpcmN1bGFyX2NvbnN0cmFpbnQ6YSgyMzEzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJfMF9oYXNfYV9jaXJjdWxhcl9jb25zdHJhaW50XzIzMTNcIixcIlR5cGUgcGFyYW1ldGVyICd7MH0nIGhhcyBhIGNpcmN1bGFyIGNvbnN0cmFpbnQuXCIpLEdlbmVyaWNfdHlwZV8wX3JlcXVpcmVzXzFfdHlwZV9hcmd1bWVudF9zOmEoMjMxNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkdlbmVyaWNfdHlwZV8wX3JlcXVpcmVzXzFfdHlwZV9hcmd1bWVudF9zXzIzMTRcIixcIkdlbmVyaWMgdHlwZSAnezB9JyByZXF1aXJlcyB7MX0gdHlwZSBhcmd1bWVudChzKS5cIiksVHlwZV8wX2lzX25vdF9nZW5lcmljOmEoMjMxNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9pc19ub3RfZ2VuZXJpY18yMzE1XCIsXCJUeXBlICd7MH0nIGlzIG5vdCBnZW5lcmljLlwiKSxHbG9iYWxfdHlwZV8wX211c3RfYmVfYV9jbGFzc19vcl9pbnRlcmZhY2VfdHlwZTphKDIzMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJHbG9iYWxfdHlwZV8wX211c3RfYmVfYV9jbGFzc19vcl9pbnRlcmZhY2VfdHlwZV8yMzE2XCIsXCJHbG9iYWwgdHlwZSAnezB9JyBtdXN0IGJlIGEgY2xhc3Mgb3IgaW50ZXJmYWNlIHR5cGUuXCIpLEdsb2JhbF90eXBlXzBfbXVzdF9oYXZlXzFfdHlwZV9wYXJhbWV0ZXJfczphKDIzMTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJHbG9iYWxfdHlwZV8wX211c3RfaGF2ZV8xX3R5cGVfcGFyYW1ldGVyX3NfMjMxN1wiLFwiR2xvYmFsIHR5cGUgJ3swfScgbXVzdCBoYXZlIHsxfSB0eXBlIHBhcmFtZXRlcihzKS5cIiksQ2Fubm90X2ZpbmRfZ2xvYmFsX3R5cGVfMDphKDIzMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF9nbG9iYWxfdHlwZV8wXzIzMThcIixcIkNhbm5vdCBmaW5kIGdsb2JhbCB0eXBlICd7MH0nLlwiKSxOYW1lZF9wcm9wZXJ0eV8wX29mX3R5cGVzXzFfYW5kXzJfYXJlX25vdF9pZGVudGljYWw6YSgyMzE5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTmFtZWRfcHJvcGVydHlfMF9vZl90eXBlc18xX2FuZF8yX2FyZV9ub3RfaWRlbnRpY2FsXzIzMTlcIixcIk5hbWVkIHByb3BlcnR5ICd7MH0nIG9mIHR5cGVzICd7MX0nIGFuZCAnezJ9JyBhcmUgbm90IGlkZW50aWNhbC5cIiksSW50ZXJmYWNlXzBfY2Fubm90X3NpbXVsdGFuZW91c2x5X2V4dGVuZF90eXBlc18xX2FuZF8yOmEoMjMyMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkludGVyZmFjZV8wX2Nhbm5vdF9zaW11bHRhbmVvdXNseV9leHRlbmRfdHlwZXNfMV9hbmRfMl8yMzIwXCIsXCJJbnRlcmZhY2UgJ3swfScgY2Fubm90IHNpbXVsdGFuZW91c2x5IGV4dGVuZCB0eXBlcyAnezF9JyBhbmQgJ3syfScuXCIpLEV4Y2Vzc2l2ZV9zdGFja19kZXB0aF9jb21wYXJpbmdfdHlwZXNfMF9hbmRfMTphKDIzMjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeGNlc3NpdmVfc3RhY2tfZGVwdGhfY29tcGFyaW5nX3R5cGVzXzBfYW5kXzFfMjMyMVwiLFwiRXhjZXNzaXZlIHN0YWNrIGRlcHRoIGNvbXBhcmluZyB0eXBlcyAnezB9JyBhbmQgJ3sxfScuXCIpLFR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzE6YSgyMzIyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV8yMzIyXCIsXCJUeXBlICd7MH0nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ3sxfScuXCIpLENhbm5vdF9yZWRlY2xhcmVfZXhwb3J0ZWRfdmFyaWFibGVfMDphKDIzMjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfcmVkZWNsYXJlX2V4cG9ydGVkX3ZhcmlhYmxlXzBfMjMyM1wiLFwiQ2Fubm90IHJlZGVjbGFyZSBleHBvcnRlZCB2YXJpYWJsZSAnezB9Jy5cIiksUHJvcGVydHlfMF9pc19taXNzaW5nX2luX3R5cGVfMTphKDIzMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2lzX21pc3NpbmdfaW5fdHlwZV8xXzIzMjRcIixcIlByb3BlcnR5ICd7MH0nIGlzIG1pc3NpbmcgaW4gdHlwZSAnezF9Jy5cIiksUHJvcGVydHlfMF9pc19wcml2YXRlX2luX3R5cGVfMV9idXRfbm90X2luX3R5cGVfMjphKDIzMjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2lzX3ByaXZhdGVfaW5fdHlwZV8xX2J1dF9ub3RfaW5fdHlwZV8yXzIzMjVcIixcIlByb3BlcnR5ICd7MH0nIGlzIHByaXZhdGUgaW4gdHlwZSAnezF9JyBidXQgbm90IGluIHR5cGUgJ3syfScuXCIpLFR5cGVzX29mX3Byb3BlcnR5XzBfYXJlX2luY29tcGF0aWJsZTphKDIzMjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlc19vZl9wcm9wZXJ0eV8wX2FyZV9pbmNvbXBhdGlibGVfMjMyNlwiLFwiVHlwZXMgb2YgcHJvcGVydHkgJ3swfScgYXJlIGluY29tcGF0aWJsZS5cIiksUHJvcGVydHlfMF9pc19vcHRpb25hbF9pbl90eXBlXzFfYnV0X3JlcXVpcmVkX2luX3R5cGVfMjphKDIzMjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2lzX29wdGlvbmFsX2luX3R5cGVfMV9idXRfcmVxdWlyZWRfaW5fdHlwZV8yXzIzMjdcIixcIlByb3BlcnR5ICd7MH0nIGlzIG9wdGlvbmFsIGluIHR5cGUgJ3sxfScgYnV0IHJlcXVpcmVkIGluIHR5cGUgJ3syfScuXCIpLFR5cGVzX29mX3BhcmFtZXRlcnNfMF9hbmRfMV9hcmVfaW5jb21wYXRpYmxlOmEoMjMyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVzX29mX3BhcmFtZXRlcnNfMF9hbmRfMV9hcmVfaW5jb21wYXRpYmxlXzIzMjhcIixcIlR5cGVzIG9mIHBhcmFtZXRlcnMgJ3swfScgYW5kICd7MX0nIGFyZSBpbmNvbXBhdGlibGUuXCIpLEluZGV4X3NpZ25hdHVyZV9mb3JfdHlwZV8wX2lzX21pc3NpbmdfaW5fdHlwZV8xOmEoMjMyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkluZGV4X3NpZ25hdHVyZV9mb3JfdHlwZV8wX2lzX21pc3NpbmdfaW5fdHlwZV8xXzIzMjlcIixcIkluZGV4IHNpZ25hdHVyZSBmb3IgdHlwZSAnezB9JyBpcyBtaXNzaW5nIGluIHR5cGUgJ3sxfScuXCIpLF8wX2FuZF8xX2luZGV4X3NpZ25hdHVyZXNfYXJlX2luY29tcGF0aWJsZTphKDIzMzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9hbmRfMV9pbmRleF9zaWduYXR1cmVzX2FyZV9pbmNvbXBhdGlibGVfMjMzMFwiLFwiJ3swfScgYW5kICd7MX0nIGluZGV4IHNpZ25hdHVyZXMgYXJlIGluY29tcGF0aWJsZS5cIiksdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hX21vZHVsZV9vcl9uYW1lc3BhY2VfYm9keTphKDIzMzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJ0aGlzX2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX2FfbW9kdWxlX29yX25hbWVzcGFjZV9ib2R5XzIzMzFcIixcIid0aGlzJyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBpbiBhIG1vZHVsZSBvciBuYW1lc3BhY2UgYm9keS5cIiksdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jdXJyZW50X2xvY2F0aW9uOmEoMjMzMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInRoaXNfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fY3VycmVudF9sb2NhdGlvbl8yMzMyXCIsXCIndGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgaW4gY3VycmVudCBsb2NhdGlvbi5cIiksdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jb25zdHJ1Y3Rvcl9hcmd1bWVudHM6YSgyMzMzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwidGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jb25zdHJ1Y3Rvcl9hcmd1bWVudHNfMjMzM1wiLFwiJ3RoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGluIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy5cIiksdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hX3N0YXRpY19wcm9wZXJ0eV9pbml0aWFsaXplcjphKDIzMzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJ0aGlzX2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX2Ffc3RhdGljX3Byb3BlcnR5X2luaXRpYWxpemVyXzIzMzRcIixcIid0aGlzJyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBpbiBhIHN0YXRpYyBwcm9wZXJ0eSBpbml0aWFsaXplci5cIiksc3VwZXJfY2FuX29ubHlfYmVfcmVmZXJlbmNlZF9pbl9hX2Rlcml2ZWRfY2xhc3M6YSgyMzM1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwic3VwZXJfY2FuX29ubHlfYmVfcmVmZXJlbmNlZF9pbl9hX2Rlcml2ZWRfY2xhc3NfMjMzNVwiLFwiJ3N1cGVyJyBjYW4gb25seSBiZSByZWZlcmVuY2VkIGluIGEgZGVyaXZlZCBjbGFzcy5cIiksc3VwZXJfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fY29uc3RydWN0b3JfYXJndW1lbnRzOmEoMjMzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInN1cGVyX2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX2NvbnN0cnVjdG9yX2FyZ3VtZW50c18yMzM2XCIsXCInc3VwZXInIGNhbm5vdCBiZSByZWZlcmVuY2VkIGluIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy5cIiksU3VwZXJfY2FsbHNfYXJlX25vdF9wZXJtaXR0ZWRfb3V0c2lkZV9jb25zdHJ1Y3RvcnNfb3JfaW5fbmVzdGVkX2Z1bmN0aW9uc19pbnNpZGVfY29uc3RydWN0b3JzOmEoMjMzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlN1cGVyX2NhbGxzX2FyZV9ub3RfcGVybWl0dGVkX291dHNpZGVfY29uc3RydWN0b3JzX29yX2luX25lc3RlZF9mdW5jdGlvbnNfaW5zaWRlX2NvbnN0cnVjdG9yc18yMzM3XCIsXCJTdXBlciBjYWxscyBhcmUgbm90IHBlcm1pdHRlZCBvdXRzaWRlIGNvbnN0cnVjdG9ycyBvciBpbiBuZXN0ZWQgZnVuY3Rpb25zIGluc2lkZSBjb25zdHJ1Y3RvcnMuXCIpLHN1cGVyX3Byb3BlcnR5X2FjY2Vzc19pc19wZXJtaXR0ZWRfb25seV9pbl9hX2NvbnN0cnVjdG9yX21lbWJlcl9mdW5jdGlvbl9vcl9tZW1iZXJfYWNjZXNzb3Jfb2ZfYV9kZXJpdmVkX2NsYXNzOmEoMjMzOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInN1cGVyX3Byb3BlcnR5X2FjY2Vzc19pc19wZXJtaXR0ZWRfb25seV9pbl9hX2NvbnN0cnVjdG9yX21lbWJlcl9mdW5jdGlvbl9vcl9tZW1iZXJfYWNjZXNzb3Jfb2ZfYV9kZXJfMjMzOFwiLFwiJ3N1cGVyJyBwcm9wZXJ0eSBhY2Nlc3MgaXMgcGVybWl0dGVkIG9ubHkgaW4gYSBjb25zdHJ1Y3RvciwgbWVtYmVyIGZ1bmN0aW9uLCBvciBtZW1iZXIgYWNjZXNzb3Igb2YgYSBkZXJpdmVkIGNsYXNzLlwiKSxQcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMTphKDIzMzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMV8yMzM5XCIsXCJQcm9wZXJ0eSAnezB9JyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICd7MX0nLlwiKSxPbmx5X3B1YmxpY19hbmRfcHJvdGVjdGVkX21ldGhvZHNfb2ZfdGhlX2Jhc2VfY2xhc3NfYXJlX2FjY2Vzc2libGVfdmlhX3RoZV9zdXBlcl9rZXl3b3JkOmEoMjM0MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9ubHlfcHVibGljX2FuZF9wcm90ZWN0ZWRfbWV0aG9kc19vZl90aGVfYmFzZV9jbGFzc19hcmVfYWNjZXNzaWJsZV92aWFfdGhlX3N1cGVyX2tleXdvcmRfMjM0MFwiLFwiT25seSBwdWJsaWMgYW5kIHByb3RlY3RlZCBtZXRob2RzIG9mIHRoZSBiYXNlIGNsYXNzIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgJ3N1cGVyJyBrZXl3b3JkLlwiKSxQcm9wZXJ0eV8wX2lzX3ByaXZhdGVfYW5kX29ubHlfYWNjZXNzaWJsZV93aXRoaW5fY2xhc3NfMTphKDIzNDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2lzX3ByaXZhdGVfYW5kX29ubHlfYWNjZXNzaWJsZV93aXRoaW5fY2xhc3NfMV8yMzQxXCIsXCJQcm9wZXJ0eSAnezB9JyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICd7MX0nLlwiKSxUaGlzX3N5bnRheF9yZXF1aXJlc19hbl9pbXBvcnRlZF9oZWxwZXJfbmFtZWRfMV93aGljaF9kb2VzX25vdF9leGlzdF9pbl8wX0NvbnNpZGVyX3VwZ3JhZGluZ195b3VyX3ZlcnNpb25fb2ZfMDphKDIzNDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX3N5bnRheF9yZXF1aXJlc19hbl9pbXBvcnRlZF9oZWxwZXJfbmFtZWRfMV93aGljaF9kb2VzX25vdF9leGlzdF9pbl8wX0NvbnNpZGVyX3VwZ3JhZGluZ195b3VyX3ZlXzIzNDNcIixcIlRoaXMgc3ludGF4IHJlcXVpcmVzIGFuIGltcG9ydGVkIGhlbHBlciBuYW1lZCAnezF9JyB3aGljaCBkb2VzIG5vdCBleGlzdCBpbiAnezB9Jy4gQ29uc2lkZXIgdXBncmFkaW5nIHlvdXIgdmVyc2lvbiBvZiAnezB9Jy5cIiksVHlwZV8wX2RvZXNfbm90X3NhdGlzZnlfdGhlX2NvbnN0cmFpbnRfMTphKDIzNDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfZG9lc19ub3Rfc2F0aXNmeV90aGVfY29uc3RyYWludF8xXzIzNDRcIixcIlR5cGUgJ3swfScgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY29uc3RyYWludCAnezF9Jy5cIiksQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzE6YSgyMzQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzFfMjM0NVwiLFwiQXJndW1lbnQgb2YgdHlwZSAnezB9JyBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSAnezF9Jy5cIiksQ2FsbF90YXJnZXRfZG9lc19ub3RfY29udGFpbl9hbnlfc2lnbmF0dXJlczphKDIzNDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYWxsX3RhcmdldF9kb2VzX25vdF9jb250YWluX2FueV9zaWduYXR1cmVzXzIzNDZcIixcIkNhbGwgdGFyZ2V0IGRvZXMgbm90IGNvbnRhaW4gYW55IHNpZ25hdHVyZXMuXCIpLFVudHlwZWRfZnVuY3Rpb25fY2FsbHNfbWF5X25vdF9hY2NlcHRfdHlwZV9hcmd1bWVudHM6YSgyMzQ3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW50eXBlZF9mdW5jdGlvbl9jYWxsc19tYXlfbm90X2FjY2VwdF90eXBlX2FyZ3VtZW50c18yMzQ3XCIsXCJVbnR5cGVkIGZ1bmN0aW9uIGNhbGxzIG1heSBub3QgYWNjZXB0IHR5cGUgYXJndW1lbnRzLlwiKSxWYWx1ZV9vZl90eXBlXzBfaXNfbm90X2NhbGxhYmxlX0RpZF95b3VfbWVhbl90b19pbmNsdWRlX25ldzphKDIzNDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJWYWx1ZV9vZl90eXBlXzBfaXNfbm90X2NhbGxhYmxlX0RpZF95b3VfbWVhbl90b19pbmNsdWRlX25ld18yMzQ4XCIsXCJWYWx1ZSBvZiB0eXBlICd7MH0nIGlzIG5vdCBjYWxsYWJsZS4gRGlkIHlvdSBtZWFuIHRvIGluY2x1ZGUgJ25ldyc/XCIpLFRoaXNfZXhwcmVzc2lvbl9pc19ub3RfY2FsbGFibGU6YSgyMzQ5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19leHByZXNzaW9uX2lzX25vdF9jYWxsYWJsZV8yMzQ5XCIsXCJUaGlzIGV4cHJlc3Npb24gaXMgbm90IGNhbGxhYmxlLlwiKSxPbmx5X2Ffdm9pZF9mdW5jdGlvbl9jYW5fYmVfY2FsbGVkX3dpdGhfdGhlX25ld19rZXl3b3JkOmEoMjM1MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9ubHlfYV92b2lkX2Z1bmN0aW9uX2Nhbl9iZV9jYWxsZWRfd2l0aF90aGVfbmV3X2tleXdvcmRfMjM1MFwiLFwiT25seSBhIHZvaWQgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB3aXRoIHRoZSAnbmV3JyBrZXl3b3JkLlwiKSxUaGlzX2V4cHJlc3Npb25faXNfbm90X2NvbnN0cnVjdGFibGU6YSgyMzUxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19leHByZXNzaW9uX2lzX25vdF9jb25zdHJ1Y3RhYmxlXzIzNTFcIixcIlRoaXMgZXhwcmVzc2lvbiBpcyBub3QgY29uc3RydWN0YWJsZS5cIiksQ29udmVyc2lvbl9vZl90eXBlXzBfdG9fdHlwZV8xX21heV9iZV9hX21pc3Rha2VfYmVjYXVzZV9uZWl0aGVyX3R5cGVfc3VmZmljaWVudGx5X292ZXJsYXBzX3dpdGhfdGhlX290aGVyX0lmX3RoaXNfd2FzX2ludGVudGlvbmFsX2NvbnZlcnRfdGhlX2V4cHJlc3Npb25fdG9fdW5rbm93bl9maXJzdDphKDIzNTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb252ZXJzaW9uX29mX3R5cGVfMF90b190eXBlXzFfbWF5X2JlX2FfbWlzdGFrZV9iZWNhdXNlX25laXRoZXJfdHlwZV9zdWZmaWNpZW50bHlfb3ZlcmxhcHNfd2l0aF90aGVfXzIzNTJcIixcIkNvbnZlcnNpb24gb2YgdHlwZSAnezB9JyB0byB0eXBlICd7MX0nIG1heSBiZSBhIG1pc3Rha2UgYmVjYXVzZSBuZWl0aGVyIHR5cGUgc3VmZmljaWVudGx5IG92ZXJsYXBzIHdpdGggdGhlIG90aGVyLiBJZiB0aGlzIHdhcyBpbnRlbnRpb25hbCwgY29udmVydCB0aGUgZXhwcmVzc2lvbiB0byAndW5rbm93bicgZmlyc3QuXCIpLE9iamVjdF9saXRlcmFsX21heV9vbmx5X3NwZWNpZnlfa25vd25fcHJvcGVydGllc19hbmRfMF9kb2VzX25vdF9leGlzdF9pbl90eXBlXzE6YSgyMzUzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT2JqZWN0X2xpdGVyYWxfbWF5X29ubHlfc3BlY2lmeV9rbm93bl9wcm9wZXJ0aWVzX2FuZF8wX2RvZXNfbm90X2V4aXN0X2luX3R5cGVfMV8yMzUzXCIsXCJPYmplY3QgbGl0ZXJhbCBtYXkgb25seSBzcGVjaWZ5IGtub3duIHByb3BlcnRpZXMsIGFuZCAnezB9JyBkb2VzIG5vdCBleGlzdCBpbiB0eXBlICd7MX0nLlwiKSxUaGlzX3N5bnRheF9yZXF1aXJlc19hbl9pbXBvcnRlZF9oZWxwZXJfYnV0X21vZHVsZV8wX2Nhbm5vdF9iZV9mb3VuZDphKDIzNTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX3N5bnRheF9yZXF1aXJlc19hbl9pbXBvcnRlZF9oZWxwZXJfYnV0X21vZHVsZV8wX2Nhbm5vdF9iZV9mb3VuZF8yMzU0XCIsXCJUaGlzIHN5bnRheCByZXF1aXJlcyBhbiBpbXBvcnRlZCBoZWxwZXIgYnV0IG1vZHVsZSAnezB9JyBjYW5ub3QgYmUgZm91bmQuXCIpLEFfZnVuY3Rpb25fd2hvc2VfZGVjbGFyZWRfdHlwZV9pc19uZWl0aGVyX3ZvaWRfbm9yX2FueV9tdXN0X3JldHVybl9hX3ZhbHVlOmEoMjM1NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfZnVuY3Rpb25fd2hvc2VfZGVjbGFyZWRfdHlwZV9pc19uZWl0aGVyX3ZvaWRfbm9yX2FueV9tdXN0X3JldHVybl9hX3ZhbHVlXzIzNTVcIixcIkEgZnVuY3Rpb24gd2hvc2UgZGVjbGFyZWQgdHlwZSBpcyBuZWl0aGVyICd2b2lkJyBub3IgJ2FueScgbXVzdCByZXR1cm4gYSB2YWx1ZS5cIiksQW5fYXJpdGhtZXRpY19vcGVyYW5kX211c3RfYmVfb2ZfdHlwZV9hbnlfbnVtYmVyX2JpZ2ludF9vcl9hbl9lbnVtX3R5cGU6YSgyMzU2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fYXJpdGhtZXRpY19vcGVyYW5kX211c3RfYmVfb2ZfdHlwZV9hbnlfbnVtYmVyX2JpZ2ludF9vcl9hbl9lbnVtX3R5cGVfMjM1NlwiLFwiQW4gYXJpdGhtZXRpYyBvcGVyYW5kIG11c3QgYmUgb2YgdHlwZSAnYW55JywgJ251bWJlcicsICdiaWdpbnQnIG9yIGFuIGVudW0gdHlwZS5cIiksVGhlX29wZXJhbmRfb2ZfYW5faW5jcmVtZW50X29yX2RlY3JlbWVudF9vcGVyYXRvcl9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3M6YSgyMzU3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX29wZXJhbmRfb2ZfYW5faW5jcmVtZW50X29yX2RlY3JlbWVudF9vcGVyYXRvcl9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3NfMjM1N1wiLFwiVGhlIG9wZXJhbmQgb2YgYW4gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBvcGVyYXRvciBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuXCIpLFRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9pbnN0YW5jZW9mX2V4cHJlc3Npb25fbXVzdF9iZV9vZl90eXBlX2FueV9hbl9vYmplY3RfdHlwZV9vcl9hX3R5cGVfcGFyYW1ldGVyOmEoMjM1OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9pbnN0YW5jZW9mX2V4cHJlc3Npb25fbXVzdF9iZV9vZl90eXBlX2FueV9hbl9vYmplY3RfdHlwZV9vcl9hX3R5cGVfcGFyYW1ldGVfMjM1OFwiLFwiVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuICdpbnN0YW5jZW9mJyBleHByZXNzaW9uIG11c3QgYmUgb2YgdHlwZSAnYW55JywgYW4gb2JqZWN0IHR5cGUgb3IgYSB0eXBlIHBhcmFtZXRlci5cIiksVGhlX3JpZ2h0X2hhbmRfc2lkZV9vZl9hbl9pbnN0YW5jZW9mX2V4cHJlc3Npb25fbXVzdF9iZV9vZl90eXBlX2FueV9vcl9vZl9hX3R5cGVfYXNzaWduYWJsZV90b190aGVfRnVuY3Rpb25faW50ZXJmYWNlX3R5cGU6YSgyMzU5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3JpZ2h0X2hhbmRfc2lkZV9vZl9hbl9pbnN0YW5jZW9mX2V4cHJlc3Npb25fbXVzdF9iZV9vZl90eXBlX2FueV9vcl9vZl9hX3R5cGVfYXNzaWduYWJsZV90b190aGVfRl8yMzU5XCIsXCJUaGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuICdpbnN0YW5jZW9mJyBleHByZXNzaW9uIG11c3QgYmUgb2YgdHlwZSAnYW55JyBvciBvZiBhIHR5cGUgYXNzaWduYWJsZSB0byB0aGUgJ0Z1bmN0aW9uJyBpbnRlcmZhY2UgdHlwZS5cIiksVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2luX2V4cHJlc3Npb25fbXVzdF9iZV9hX3ByaXZhdGVfaWRlbnRpZmllcl9vcl9vZl90eXBlX2FueV9zdHJpbmdfbnVtYmVyX29yX3N5bWJvbDphKDIzNjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5faW5fZXhwcmVzc2lvbl9tdXN0X2JlX2FfcHJpdmF0ZV9pZGVudGlmaWVyX29yX29mX3R5cGVfYW55X3N0cmluZ19udW1iZXJfb3JfXzIzNjBcIixcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiAnaW4nIGV4cHJlc3Npb24gbXVzdCBiZSBhIHByaXZhdGUgaWRlbnRpZmllciBvciBvZiB0eXBlICdhbnknLCAnc3RyaW5nJywgJ251bWJlcicsIG9yICdzeW1ib2wnLlwiKSxUaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FuX2luX2V4cHJlc3Npb25fbXVzdF9ub3RfYmVfYV9wcmltaXRpdmU6YSgyMzYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3JpZ2h0X2hhbmRfc2lkZV9vZl9hbl9pbl9leHByZXNzaW9uX211c3Rfbm90X2JlX2FfcHJpbWl0aXZlXzIzNjFcIixcIlRoZSByaWdodC1oYW5kIHNpZGUgb2YgYW4gJ2luJyBleHByZXNzaW9uIG11c3Qgbm90IGJlIGEgcHJpbWl0aXZlLlwiKSxUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXJpdGhtZXRpY19vcGVyYXRpb25fbXVzdF9iZV9vZl90eXBlX2FueV9udW1iZXJfYmlnaW50X29yX2FuX2VudW1fdHlwZTphKDIzNjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXJpdGhtZXRpY19vcGVyYXRpb25fbXVzdF9iZV9vZl90eXBlX2FueV9udW1iZXJfYmlnaW50X29yX2FuX2VudW1fdHlwZV8yMzYyXCIsXCJUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRpb24gbXVzdCBiZSBvZiB0eXBlICdhbnknLCAnbnVtYmVyJywgJ2JpZ2ludCcgb3IgYW4gZW51bSB0eXBlLlwiKSxUaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FuX2FyaXRobWV0aWNfb3BlcmF0aW9uX211c3RfYmVfb2ZfdHlwZV9hbnlfbnVtYmVyX2JpZ2ludF9vcl9hbl9lbnVtX3R5cGU6YSgyMzYzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3JpZ2h0X2hhbmRfc2lkZV9vZl9hbl9hcml0aG1ldGljX29wZXJhdGlvbl9tdXN0X2JlX29mX3R5cGVfYW55X251bWJlcl9iaWdpbnRfb3JfYW5fZW51bV90eXBlXzIzNjNcIixcIlRoZSByaWdodC1oYW5kIHNpZGUgb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRpb24gbXVzdCBiZSBvZiB0eXBlICdhbnknLCAnbnVtYmVyJywgJ2JpZ2ludCcgb3IgYW4gZW51bSB0eXBlLlwiKSxUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXNzaWdubWVudF9leHByZXNzaW9uX211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzczphKDIzNjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXNzaWdubWVudF9leHByZXNzaW9uX211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2Vzc18yMzY0XCIsXCJUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYW4gYXNzaWdubWVudCBleHByZXNzaW9uIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5cIiksT3BlcmF0b3JfMF9jYW5ub3RfYmVfYXBwbGllZF90b190eXBlc18xX2FuZF8yOmEoMjM2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9wZXJhdG9yXzBfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZXNfMV9hbmRfMl8yMzY1XCIsXCJPcGVyYXRvciAnezB9JyBjYW5ub3QgYmUgYXBwbGllZCB0byB0eXBlcyAnezF9JyBhbmQgJ3syfScuXCIpLEZ1bmN0aW9uX2xhY2tzX2VuZGluZ19yZXR1cm5fc3RhdGVtZW50X2FuZF9yZXR1cm5fdHlwZV9kb2VzX25vdF9pbmNsdWRlX3VuZGVmaW5lZDphKDIzNjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGdW5jdGlvbl9sYWNrc19lbmRpbmdfcmV0dXJuX3N0YXRlbWVudF9hbmRfcmV0dXJuX3R5cGVfZG9lc19ub3RfaW5jbHVkZV91bmRlZmluZWRfMjM2NlwiLFwiRnVuY3Rpb24gbGFja3MgZW5kaW5nIHJldHVybiBzdGF0ZW1lbnQgYW5kIHJldHVybiB0eXBlIGRvZXMgbm90IGluY2x1ZGUgJ3VuZGVmaW5lZCcuXCIpLFRoaXNfY29uZGl0aW9uX3dpbGxfYWx3YXlzX3JldHVybl8wX3NpbmNlX3RoZV90eXBlc18xX2FuZF8yX2hhdmVfbm9fb3ZlcmxhcDphKDIzNjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX2NvbmRpdGlvbl93aWxsX2Fsd2F5c19yZXR1cm5fMF9zaW5jZV90aGVfdHlwZXNfMV9hbmRfMl9oYXZlX25vX292ZXJsYXBfMjM2N1wiLFwiVGhpcyBjb25kaXRpb24gd2lsbCBhbHdheXMgcmV0dXJuICd7MH0nIHNpbmNlIHRoZSB0eXBlcyAnezF9JyBhbmQgJ3syfScgaGF2ZSBubyBvdmVybGFwLlwiKSxUeXBlX3BhcmFtZXRlcl9uYW1lX2Nhbm5vdF9iZV8wOmEoMjM2OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcGFyYW1ldGVyX25hbWVfY2Fubm90X2JlXzBfMjM2OFwiLFwiVHlwZSBwYXJhbWV0ZXIgbmFtZSBjYW5ub3QgYmUgJ3swfScuXCIpLEFfcGFyYW1ldGVyX3Byb3BlcnR5X2lzX29ubHlfYWxsb3dlZF9pbl9hX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uOmEoMjM2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfcGFyYW1ldGVyX3Byb3BlcnR5X2lzX29ubHlfYWxsb3dlZF9pbl9hX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uXzIzNjlcIixcIkEgcGFyYW1ldGVyIHByb3BlcnR5IGlzIG9ubHkgYWxsb3dlZCBpbiBhIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uLlwiKSxBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfb2ZfYW5fYXJyYXlfdHlwZTphKDIzNzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfb2ZfYW5fYXJyYXlfdHlwZV8yMzcwXCIsXCJBIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgb2YgYW4gYXJyYXkgdHlwZS5cIiksQV9wYXJhbWV0ZXJfaW5pdGlhbGl6ZXJfaXNfb25seV9hbGxvd2VkX2luX2FfZnVuY3Rpb25fb3JfY29uc3RydWN0b3JfaW1wbGVtZW50YXRpb246YSgyMzcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9wYXJhbWV0ZXJfaW5pdGlhbGl6ZXJfaXNfb25seV9hbGxvd2VkX2luX2FfZnVuY3Rpb25fb3JfY29uc3RydWN0b3JfaW1wbGVtZW50YXRpb25fMjM3MVwiLFwiQSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZXIgaXMgb25seSBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb24uXCIpLFBhcmFtZXRlcl8wX2Nhbm5vdF9yZWZlcmVuY2VfaXRzZWxmOmEoMjM3MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX2Nhbm5vdF9yZWZlcmVuY2VfaXRzZWxmXzIzNzJcIixcIlBhcmFtZXRlciAnezB9JyBjYW5ub3QgcmVmZXJlbmNlIGl0c2VsZi5cIiksUGFyYW1ldGVyXzBfY2Fubm90X3JlZmVyZW5jZV9pZGVudGlmaWVyXzFfZGVjbGFyZWRfYWZ0ZXJfaXQ6YSgyMzczLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyXzBfY2Fubm90X3JlZmVyZW5jZV9pZGVudGlmaWVyXzFfZGVjbGFyZWRfYWZ0ZXJfaXRfMjM3M1wiLFwiUGFyYW1ldGVyICd7MH0nIGNhbm5vdCByZWZlcmVuY2UgaWRlbnRpZmllciAnezF9JyBkZWNsYXJlZCBhZnRlciBpdC5cIiksRHVwbGljYXRlX2luZGV4X3NpZ25hdHVyZV9mb3JfdHlwZV8wOmEoMjM3NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkR1cGxpY2F0ZV9pbmRleF9zaWduYXR1cmVfZm9yX3R5cGVfMF8yMzc0XCIsXCJEdXBsaWNhdGUgaW5kZXggc2lnbmF0dXJlIGZvciB0eXBlICd7MH0nLlwiKSxUeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xX3dpdGhfZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNfQ29sb25fdHJ1ZV9Db25zaWRlcl9hZGRpbmdfdW5kZWZpbmVkX3RvX3RoZV90eXBlc19vZl90aGVfdGFyZ2V0X3NfcHJvcGVydGllczphKDIzNzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xX3dpdGhfZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNfQ29sb25fdHJ1ZV9Db25zaWRlcl9hZGRpbmdfdW5kZWZpXzIzNzVcIixcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9JyB3aXRoICdleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlczogdHJ1ZScuIENvbnNpZGVyIGFkZGluZyAndW5kZWZpbmVkJyB0byB0aGUgdHlwZXMgb2YgdGhlIHRhcmdldCdzIHByb3BlcnRpZXMuXCIpLEFfc3VwZXJfY2FsbF9tdXN0X2JlX3RoZV9maXJzdF9zdGF0ZW1lbnRfaW5fdGhlX2NvbnN0cnVjdG9yX3RvX3JlZmVyX3RvX3N1cGVyX29yX3RoaXNfd2hlbl9hX2Rlcml2ZWRfY2xhc3NfY29udGFpbnNfaW5pdGlhbGl6ZWRfcHJvcGVydGllc19wYXJhbWV0ZXJfcHJvcGVydGllc19vcl9wcml2YXRlX2lkZW50aWZpZXJzOmEoMjM3NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfc3VwZXJfY2FsbF9tdXN0X2JlX3RoZV9maXJzdF9zdGF0ZW1lbnRfaW5fdGhlX2NvbnN0cnVjdG9yX3RvX3JlZmVyX3RvX3N1cGVyX29yX3RoaXNfd2hlbl9hX2Rlcml2ZWRfMjM3NlwiLFwiQSAnc3VwZXInIGNhbGwgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjb25zdHJ1Y3RvciB0byByZWZlciB0byAnc3VwZXInIG9yICd0aGlzJyB3aGVuIGEgZGVyaXZlZCBjbGFzcyBjb250YWlucyBpbml0aWFsaXplZCBwcm9wZXJ0aWVzLCBwYXJhbWV0ZXIgcHJvcGVydGllcywgb3IgcHJpdmF0ZSBpZGVudGlmaWVycy5cIiksQ29uc3RydWN0b3JzX2Zvcl9kZXJpdmVkX2NsYXNzZXNfbXVzdF9jb250YWluX2Ffc3VwZXJfY2FsbDphKDIzNzcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb25zdHJ1Y3RvcnNfZm9yX2Rlcml2ZWRfY2xhc3Nlc19tdXN0X2NvbnRhaW5fYV9zdXBlcl9jYWxsXzIzNzdcIixcIkNvbnN0cnVjdG9ycyBmb3IgZGVyaXZlZCBjbGFzc2VzIG11c3QgY29udGFpbiBhICdzdXBlcicgY2FsbC5cIiksQV9nZXRfYWNjZXNzb3JfbXVzdF9yZXR1cm5fYV92YWx1ZTphKDIzNzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2dldF9hY2Nlc3Nvcl9tdXN0X3JldHVybl9hX3ZhbHVlXzIzNzhcIixcIkEgJ2dldCcgYWNjZXNzb3IgbXVzdCByZXR1cm4gYSB2YWx1ZS5cIiksQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzFfd2l0aF9leGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc19Db2xvbl90cnVlX0NvbnNpZGVyX2FkZGluZ191bmRlZmluZWRfdG9fdGhlX3R5cGVzX29mX3RoZV90YXJnZXRfc19wcm9wZXJ0aWVzOmEoMjM3OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFyZ3VtZW50X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19wYXJhbWV0ZXJfb2ZfdHlwZV8xX3dpdGhfZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNfQ29sb25fdHJfMjM3OVwiLFwiQXJndW1lbnQgb2YgdHlwZSAnezB9JyBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSAnezF9JyB3aXRoICdleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlczogdHJ1ZScuIENvbnNpZGVyIGFkZGluZyAndW5kZWZpbmVkJyB0byB0aGUgdHlwZXMgb2YgdGhlIHRhcmdldCdzIHByb3BlcnRpZXMuXCIpLFRoZV9yZXR1cm5fdHlwZV9vZl9hX2dldF9hY2Nlc3Nvcl9tdXN0X2JlX2Fzc2lnbmFibGVfdG9faXRzX3NldF9hY2Nlc3Nvcl90eXBlOmEoMjM4MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9yZXR1cm5fdHlwZV9vZl9hX2dldF9hY2Nlc3Nvcl9tdXN0X2JlX2Fzc2lnbmFibGVfdG9faXRzX3NldF9hY2Nlc3Nvcl90eXBlXzIzODBcIixcIlRoZSByZXR1cm4gdHlwZSBvZiBhICdnZXQnIGFjY2Vzc29yIG11c3QgYmUgYXNzaWduYWJsZSB0byBpdHMgJ3NldCcgYWNjZXNzb3IgdHlwZVwiKSxPdmVybG9hZF9zaWduYXR1cmVzX211c3RfYWxsX2JlX2V4cG9ydGVkX29yX25vbl9leHBvcnRlZDphKDIzODMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPdmVybG9hZF9zaWduYXR1cmVzX211c3RfYWxsX2JlX2V4cG9ydGVkX29yX25vbl9leHBvcnRlZF8yMzgzXCIsXCJPdmVybG9hZCBzaWduYXR1cmVzIG11c3QgYWxsIGJlIGV4cG9ydGVkIG9yIG5vbi1leHBvcnRlZC5cIiksT3ZlcmxvYWRfc2lnbmF0dXJlc19tdXN0X2FsbF9iZV9hbWJpZW50X29yX25vbl9hbWJpZW50OmEoMjM4NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk92ZXJsb2FkX3NpZ25hdHVyZXNfbXVzdF9hbGxfYmVfYW1iaWVudF9vcl9ub25fYW1iaWVudF8yMzg0XCIsXCJPdmVybG9hZCBzaWduYXR1cmVzIG11c3QgYWxsIGJlIGFtYmllbnQgb3Igbm9uLWFtYmllbnQuXCIpLE92ZXJsb2FkX3NpZ25hdHVyZXNfbXVzdF9hbGxfYmVfcHVibGljX3ByaXZhdGVfb3JfcHJvdGVjdGVkOmEoMjM4NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk92ZXJsb2FkX3NpZ25hdHVyZXNfbXVzdF9hbGxfYmVfcHVibGljX3ByaXZhdGVfb3JfcHJvdGVjdGVkXzIzODVcIixcIk92ZXJsb2FkIHNpZ25hdHVyZXMgbXVzdCBhbGwgYmUgcHVibGljLCBwcml2YXRlIG9yIHByb3RlY3RlZC5cIiksT3ZlcmxvYWRfc2lnbmF0dXJlc19tdXN0X2FsbF9iZV9vcHRpb25hbF9vcl9yZXF1aXJlZDphKDIzODYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPdmVybG9hZF9zaWduYXR1cmVzX211c3RfYWxsX2JlX29wdGlvbmFsX29yX3JlcXVpcmVkXzIzODZcIixcIk92ZXJsb2FkIHNpZ25hdHVyZXMgbXVzdCBhbGwgYmUgb3B0aW9uYWwgb3IgcmVxdWlyZWQuXCIpLEZ1bmN0aW9uX292ZXJsb2FkX211c3RfYmVfc3RhdGljOmEoMjM4NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZ1bmN0aW9uX292ZXJsb2FkX211c3RfYmVfc3RhdGljXzIzODdcIixcIkZ1bmN0aW9uIG92ZXJsb2FkIG11c3QgYmUgc3RhdGljLlwiKSxGdW5jdGlvbl9vdmVybG9hZF9tdXN0X25vdF9iZV9zdGF0aWM6YSgyMzg4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRnVuY3Rpb25fb3ZlcmxvYWRfbXVzdF9ub3RfYmVfc3RhdGljXzIzODhcIixcIkZ1bmN0aW9uIG92ZXJsb2FkIG11c3Qgbm90IGJlIHN0YXRpYy5cIiksRnVuY3Rpb25faW1wbGVtZW50YXRpb25fbmFtZV9tdXN0X2JlXzA6YSgyMzg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRnVuY3Rpb25faW1wbGVtZW50YXRpb25fbmFtZV9tdXN0X2JlXzBfMjM4OVwiLFwiRnVuY3Rpb24gaW1wbGVtZW50YXRpb24gbmFtZSBtdXN0IGJlICd7MH0nLlwiKSxDb25zdHJ1Y3Rvcl9pbXBsZW1lbnRhdGlvbl9pc19taXNzaW5nOmEoMjM5MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uX2lzX21pc3NpbmdfMjM5MFwiLFwiQ29uc3RydWN0b3IgaW1wbGVtZW50YXRpb24gaXMgbWlzc2luZy5cIiksRnVuY3Rpb25faW1wbGVtZW50YXRpb25faXNfbWlzc2luZ19vcl9ub3RfaW1tZWRpYXRlbHlfZm9sbG93aW5nX3RoZV9kZWNsYXJhdGlvbjphKDIzOTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGdW5jdGlvbl9pbXBsZW1lbnRhdGlvbl9pc19taXNzaW5nX29yX25vdF9pbW1lZGlhdGVseV9mb2xsb3dpbmdfdGhlX2RlY2xhcmF0aW9uXzIzOTFcIixcIkZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIGlzIG1pc3Npbmcgb3Igbm90IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgZGVjbGFyYXRpb24uXCIpLE11bHRpcGxlX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uc19hcmVfbm90X2FsbG93ZWQ6YSgyMzkyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTXVsdGlwbGVfY29uc3RydWN0b3JfaW1wbGVtZW50YXRpb25zX2FyZV9ub3RfYWxsb3dlZF8yMzkyXCIsXCJNdWx0aXBsZSBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLlwiKSxEdXBsaWNhdGVfZnVuY3Rpb25faW1wbGVtZW50YXRpb246YSgyMzkzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRHVwbGljYXRlX2Z1bmN0aW9uX2ltcGxlbWVudGF0aW9uXzIzOTNcIixcIkR1cGxpY2F0ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cIiksVGhpc19vdmVybG9hZF9zaWduYXR1cmVfaXNfbm90X2NvbXBhdGlibGVfd2l0aF9pdHNfaW1wbGVtZW50YXRpb25fc2lnbmF0dXJlOmEoMjM5NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfb3ZlcmxvYWRfc2lnbmF0dXJlX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfaXRzX2ltcGxlbWVudGF0aW9uX3NpZ25hdHVyZV8yMzk0XCIsXCJUaGlzIG92ZXJsb2FkIHNpZ25hdHVyZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGl0cyBpbXBsZW1lbnRhdGlvbiBzaWduYXR1cmUuXCIpLEluZGl2aWR1YWxfZGVjbGFyYXRpb25zX2luX21lcmdlZF9kZWNsYXJhdGlvbl8wX211c3RfYmVfYWxsX2V4cG9ydGVkX29yX2FsbF9sb2NhbDphKDIzOTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbmRpdmlkdWFsX2RlY2xhcmF0aW9uc19pbl9tZXJnZWRfZGVjbGFyYXRpb25fMF9tdXN0X2JlX2FsbF9leHBvcnRlZF9vcl9hbGxfbG9jYWxfMjM5NVwiLFwiSW5kaXZpZHVhbCBkZWNsYXJhdGlvbnMgaW4gbWVyZ2VkIGRlY2xhcmF0aW9uICd7MH0nIG11c3QgYmUgYWxsIGV4cG9ydGVkIG9yIGFsbCBsb2NhbC5cIiksRHVwbGljYXRlX2lkZW50aWZpZXJfYXJndW1lbnRzX0NvbXBpbGVyX3VzZXNfYXJndW1lbnRzX3RvX2luaXRpYWxpemVfcmVzdF9wYXJhbWV0ZXJzOmEoMjM5NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkR1cGxpY2F0ZV9pZGVudGlmaWVyX2FyZ3VtZW50c19Db21waWxlcl91c2VzX2FyZ3VtZW50c190b19pbml0aWFsaXplX3Jlc3RfcGFyYW1ldGVyc18yMzk2XCIsXCJEdXBsaWNhdGUgaWRlbnRpZmllciAnYXJndW1lbnRzJy4gQ29tcGlsZXIgdXNlcyAnYXJndW1lbnRzJyB0byBpbml0aWFsaXplIHJlc3QgcGFyYW1ldGVycy5cIiksRGVjbGFyYXRpb25fbmFtZV9jb25mbGljdHNfd2l0aF9idWlsdF9pbl9nbG9iYWxfaWRlbnRpZmllcl8wOmEoMjM5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRlY2xhcmF0aW9uX25hbWVfY29uZmxpY3RzX3dpdGhfYnVpbHRfaW5fZ2xvYmFsX2lkZW50aWZpZXJfMF8yMzk3XCIsXCJEZWNsYXJhdGlvbiBuYW1lIGNvbmZsaWN0cyB3aXRoIGJ1aWx0LWluIGdsb2JhbCBpZGVudGlmaWVyICd7MH0nLlwiKSxjb25zdHJ1Y3Rvcl9jYW5ub3RfYmVfdXNlZF9hc19hX3BhcmFtZXRlcl9wcm9wZXJ0eV9uYW1lOmEoMjM5OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImNvbnN0cnVjdG9yX2Nhbm5vdF9iZV91c2VkX2FzX2FfcGFyYW1ldGVyX3Byb3BlcnR5X25hbWVfMjM5OFwiLFwiJ2NvbnN0cnVjdG9yJyBjYW5ub3QgYmUgdXNlZCBhcyBhIHBhcmFtZXRlciBwcm9wZXJ0eSBuYW1lLlwiKSxEdXBsaWNhdGVfaWRlbnRpZmllcl90aGlzX0NvbXBpbGVyX3VzZXNfdmFyaWFibGVfZGVjbGFyYXRpb25fdGhpc190b19jYXB0dXJlX3RoaXNfcmVmZXJlbmNlOmEoMjM5OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkR1cGxpY2F0ZV9pZGVudGlmaWVyX3RoaXNfQ29tcGlsZXJfdXNlc192YXJpYWJsZV9kZWNsYXJhdGlvbl90aGlzX3RvX2NhcHR1cmVfdGhpc19yZWZlcmVuY2VfMjM5OVwiLFwiRHVwbGljYXRlIGlkZW50aWZpZXIgJ190aGlzJy4gQ29tcGlsZXIgdXNlcyB2YXJpYWJsZSBkZWNsYXJhdGlvbiAnX3RoaXMnIHRvIGNhcHR1cmUgJ3RoaXMnIHJlZmVyZW5jZS5cIiksRXhwcmVzc2lvbl9yZXNvbHZlc190b192YXJpYWJsZV9kZWNsYXJhdGlvbl90aGlzX3RoYXRfY29tcGlsZXJfdXNlc190b19jYXB0dXJlX3RoaXNfcmVmZXJlbmNlOmEoMjQwMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cHJlc3Npb25fcmVzb2x2ZXNfdG9fdmFyaWFibGVfZGVjbGFyYXRpb25fdGhpc190aGF0X2NvbXBpbGVyX3VzZXNfdG9fY2FwdHVyZV90aGlzX3JlZmVyZW5jZV8yNDAwXCIsXCJFeHByZXNzaW9uIHJlc29sdmVzIHRvIHZhcmlhYmxlIGRlY2xhcmF0aW9uICdfdGhpcycgdGhhdCBjb21waWxlciB1c2VzIHRvIGNhcHR1cmUgJ3RoaXMnIHJlZmVyZW5jZS5cIiksQV9zdXBlcl9jYWxsX211c3RfYmVfYV9yb290X2xldmVsX3N0YXRlbWVudF93aXRoaW5fYV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3NfdGhhdF9jb250YWluc19pbml0aWFsaXplZF9wcm9wZXJ0aWVzX3BhcmFtZXRlcl9wcm9wZXJ0aWVzX29yX3ByaXZhdGVfaWRlbnRpZmllcnM6YSgyNDAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9zdXBlcl9jYWxsX211c3RfYmVfYV9yb290X2xldmVsX3N0YXRlbWVudF93aXRoaW5fYV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3NfdGhhdF9jb250YWluc19pbl8yNDAxXCIsXCJBICdzdXBlcicgY2FsbCBtdXN0IGJlIGEgcm9vdC1sZXZlbCBzdGF0ZW1lbnQgd2l0aGluIGEgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzIHRoYXQgY29udGFpbnMgaW5pdGlhbGl6ZWQgcHJvcGVydGllcywgcGFyYW1ldGVyIHByb3BlcnRpZXMsIG9yIHByaXZhdGUgaWRlbnRpZmllcnMuXCIpLEV4cHJlc3Npb25fcmVzb2x2ZXNfdG9fc3VwZXJfdGhhdF9jb21waWxlcl91c2VzX3RvX2NhcHR1cmVfYmFzZV9jbGFzc19yZWZlcmVuY2U6YSgyNDAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwcmVzc2lvbl9yZXNvbHZlc190b19zdXBlcl90aGF0X2NvbXBpbGVyX3VzZXNfdG9fY2FwdHVyZV9iYXNlX2NsYXNzX3JlZmVyZW5jZV8yNDAyXCIsXCJFeHByZXNzaW9uIHJlc29sdmVzIHRvICdfc3VwZXInIHRoYXQgY29tcGlsZXIgdXNlcyB0byBjYXB0dXJlIGJhc2UgY2xhc3MgcmVmZXJlbmNlLlwiKSxTdWJzZXF1ZW50X3ZhcmlhYmxlX2RlY2xhcmF0aW9uc19tdXN0X2hhdmVfdGhlX3NhbWVfdHlwZV9WYXJpYWJsZV8wX211c3RfYmVfb2ZfdHlwZV8xX2J1dF9oZXJlX2hhc190eXBlXzI6YSgyNDAzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU3Vic2VxdWVudF92YXJpYWJsZV9kZWNsYXJhdGlvbnNfbXVzdF9oYXZlX3RoZV9zYW1lX3R5cGVfVmFyaWFibGVfMF9tdXN0X2JlX29mX3R5cGVfMV9idXRfaGVyZV9oYXNfdF8yNDAzXCIsXCJTdWJzZXF1ZW50IHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS4gIFZhcmlhYmxlICd7MH0nIG11c3QgYmUgb2YgdHlwZSAnezF9JywgYnV0IGhlcmUgaGFzIHR5cGUgJ3syfScuXCIpLFRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hX2Zvcl9pbl9zdGF0ZW1lbnRfY2Fubm90X3VzZV9hX3R5cGVfYW5ub3RhdGlvbjphKDI0MDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3JfaW5fc3RhdGVtZW50X2Nhbm5vdF91c2VfYV90eXBlX2Fubm90YXRpb25fMjQwNFwiLFwiVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLmluJyBzdGF0ZW1lbnQgY2Fubm90IHVzZSBhIHR5cGUgYW5ub3RhdGlvbi5cIiksVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tdXN0X2JlX29mX3R5cGVfc3RyaW5nX29yX2FueTphKDI0MDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3JfaW5fc3RhdGVtZW50X211c3RfYmVfb2ZfdHlwZV9zdHJpbmdfb3JfYW55XzI0MDVcIixcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhICdmb3IuLi5pbicgc3RhdGVtZW50IG11c3QgYmUgb2YgdHlwZSAnc3RyaW5nJyBvciAnYW55Jy5cIiksVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3M6YSgyNDA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3NfMjQwNlwiLFwiVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLmluJyBzdGF0ZW1lbnQgbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlwiKSxUaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tdXN0X2JlX29mX3R5cGVfYW55X2FuX29iamVjdF90eXBlX29yX2FfdHlwZV9wYXJhbWV0ZXJfYnV0X2hlcmVfaGFzX3R5cGVfMDphKDI0MDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tdXN0X2JlX29mX3R5cGVfYW55X2FuX29iamVjdF90eXBlX29yX2FfdHlwZV9wYXJhbWV0ZXJfYnV0XzI0MDdcIixcIlRoZSByaWdodC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4uaW4nIHN0YXRlbWVudCBtdXN0IGJlIG9mIHR5cGUgJ2FueScsIGFuIG9iamVjdCB0eXBlIG9yIGEgdHlwZSBwYXJhbWV0ZXIsIGJ1dCBoZXJlIGhhcyB0eXBlICd7MH0nLlwiKSxTZXR0ZXJzX2Nhbm5vdF9yZXR1cm5fYV92YWx1ZTphKDI0MDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTZXR0ZXJzX2Nhbm5vdF9yZXR1cm5fYV92YWx1ZV8yNDA4XCIsXCJTZXR0ZXJzIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS5cIiksUmV0dXJuX3R5cGVfb2ZfY29uc3RydWN0b3Jfc2lnbmF0dXJlX211c3RfYmVfYXNzaWduYWJsZV90b190aGVfaW5zdGFuY2VfdHlwZV9vZl90aGVfY2xhc3M6YSgyNDA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfY29uc3RydWN0b3Jfc2lnbmF0dXJlX211c3RfYmVfYXNzaWduYWJsZV90b190aGVfaW5zdGFuY2VfdHlwZV9vZl90aGVfY2xhc3NfMjQwOVwiLFwiUmV0dXJuIHR5cGUgb2YgY29uc3RydWN0b3Igc2lnbmF0dXJlIG11c3QgYmUgYXNzaWduYWJsZSB0byB0aGUgaW5zdGFuY2UgdHlwZSBvZiB0aGUgY2xhc3MuXCIpLFRoZV93aXRoX3N0YXRlbWVudF9pc19ub3Rfc3VwcG9ydGVkX0FsbF9zeW1ib2xzX2luX2Ffd2l0aF9ibG9ja193aWxsX2hhdmVfdHlwZV9hbnk6YSgyNDEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3dpdGhfc3RhdGVtZW50X2lzX25vdF9zdXBwb3J0ZWRfQWxsX3N5bWJvbHNfaW5fYV93aXRoX2Jsb2NrX3dpbGxfaGF2ZV90eXBlX2FueV8yNDEwXCIsXCJUaGUgJ3dpdGgnIHN0YXRlbWVudCBpcyBub3Qgc3VwcG9ydGVkLiBBbGwgc3ltYm9scyBpbiBhICd3aXRoJyBibG9jayB3aWxsIGhhdmUgdHlwZSAnYW55Jy5cIiksVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV93aXRoX2V4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzX0NvbG9uX3RydWVfQ29uc2lkZXJfYWRkaW5nX3VuZGVmaW5lZF90b190aGVfdHlwZV9vZl90aGVfdGFyZ2V0OmEoMjQxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzFfd2l0aF9leGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc19Db2xvbl90cnVlX0NvbnNpZGVyX2FkZGluZ191bmRlZmlfMjQxMlwiLFwiVHlwZSAnezB9JyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICd7MX0nIHdpdGggJ2V4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzOiB0cnVlJy4gQ29uc2lkZXIgYWRkaW5nICd1bmRlZmluZWQnIHRvIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQuXCIpLFByb3BlcnR5XzBfb2ZfdHlwZV8xX2lzX25vdF9hc3NpZ25hYmxlX3RvXzJfaW5kZXhfdHlwZV8zOmEoMjQxMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfb2ZfdHlwZV8xX2lzX25vdF9hc3NpZ25hYmxlX3RvXzJfaW5kZXhfdHlwZV8zXzI0MTFcIixcIlByb3BlcnR5ICd7MH0nIG9mIHR5cGUgJ3sxfScgaXMgbm90IGFzc2lnbmFibGUgdG8gJ3syfScgaW5kZXggdHlwZSAnezN9Jy5cIiksXzBfaW5kZXhfdHlwZV8xX2lzX25vdF9hc3NpZ25hYmxlX3RvXzJfaW5kZXhfdHlwZV8zOmEoMjQxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2luZGV4X3R5cGVfMV9pc19ub3RfYXNzaWduYWJsZV90b18yX2luZGV4X3R5cGVfM18yNDEzXCIsXCInezB9JyBpbmRleCB0eXBlICd7MX0nIGlzIG5vdCBhc3NpZ25hYmxlIHRvICd7Mn0nIGluZGV4IHR5cGUgJ3szfScuXCIpLENsYXNzX25hbWVfY2Fubm90X2JlXzA6YSgyNDE0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2xhc3NfbmFtZV9jYW5ub3RfYmVfMF8yNDE0XCIsXCJDbGFzcyBuYW1lIGNhbm5vdCBiZSAnezB9Jy5cIiksQ2xhc3NfMF9pbmNvcnJlY3RseV9leHRlbmRzX2Jhc2VfY2xhc3NfMTphKDI0MTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDbGFzc18wX2luY29ycmVjdGx5X2V4dGVuZHNfYmFzZV9jbGFzc18xXzI0MTVcIixcIkNsYXNzICd7MH0nIGluY29ycmVjdGx5IGV4dGVuZHMgYmFzZSBjbGFzcyAnezF9Jy5cIiksUHJvcGVydHlfMF9pbl90eXBlXzFfaXNfbm90X2Fzc2lnbmFibGVfdG9fdGhlX3NhbWVfcHJvcGVydHlfaW5fYmFzZV90eXBlXzI6YSgyNDE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pbl90eXBlXzFfaXNfbm90X2Fzc2lnbmFibGVfdG9fdGhlX3NhbWVfcHJvcGVydHlfaW5fYmFzZV90eXBlXzJfMjQxNlwiLFwiUHJvcGVydHkgJ3swfScgaW4gdHlwZSAnezF9JyBpcyBub3QgYXNzaWduYWJsZSB0byB0aGUgc2FtZSBwcm9wZXJ0eSBpbiBiYXNlIHR5cGUgJ3syfScuXCIpLENsYXNzX3N0YXRpY19zaWRlXzBfaW5jb3JyZWN0bHlfZXh0ZW5kc19iYXNlX2NsYXNzX3N0YXRpY19zaWRlXzE6YSgyNDE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2xhc3Nfc3RhdGljX3NpZGVfMF9pbmNvcnJlY3RseV9leHRlbmRzX2Jhc2VfY2xhc3Nfc3RhdGljX3NpZGVfMV8yNDE3XCIsXCJDbGFzcyBzdGF0aWMgc2lkZSAnezB9JyBpbmNvcnJlY3RseSBleHRlbmRzIGJhc2UgY2xhc3Mgc3RhdGljIHNpZGUgJ3sxfScuXCIpLFR5cGVfb2ZfY29tcHV0ZWRfcHJvcGVydHlfc192YWx1ZV9pc18wX3doaWNoX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMTphKDI0MTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX29mX2NvbXB1dGVkX3Byb3BlcnR5X3NfdmFsdWVfaXNfMF93aGljaF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzFfMjQxOFwiLFwiVHlwZSBvZiBjb21wdXRlZCBwcm9wZXJ0eSdzIHZhbHVlIGlzICd7MH0nLCB3aGljaCBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICd7MX0nLlwiKSxUeXBlc19vZl9jb25zdHJ1Y3Rfc2lnbmF0dXJlc19hcmVfaW5jb21wYXRpYmxlOmEoMjQxOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVzX29mX2NvbnN0cnVjdF9zaWduYXR1cmVzX2FyZV9pbmNvbXBhdGlibGVfMjQxOVwiLFwiVHlwZXMgb2YgY29uc3RydWN0IHNpZ25hdHVyZXMgYXJlIGluY29tcGF0aWJsZS5cIiksQ2xhc3NfMF9pbmNvcnJlY3RseV9pbXBsZW1lbnRzX2ludGVyZmFjZV8xOmEoMjQyMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNsYXNzXzBfaW5jb3JyZWN0bHlfaW1wbGVtZW50c19pbnRlcmZhY2VfMV8yNDIwXCIsXCJDbGFzcyAnezB9JyBpbmNvcnJlY3RseSBpbXBsZW1lbnRzIGludGVyZmFjZSAnezF9Jy5cIiksQV9jbGFzc19jYW5fb25seV9pbXBsZW1lbnRfYW5fb2JqZWN0X3R5cGVfb3JfaW50ZXJzZWN0aW9uX29mX29iamVjdF90eXBlc193aXRoX3N0YXRpY2FsbHlfa25vd25fbWVtYmVyczphKDI0MjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2NsYXNzX2Nhbl9vbmx5X2ltcGxlbWVudF9hbl9vYmplY3RfdHlwZV9vcl9pbnRlcnNlY3Rpb25fb2Zfb2JqZWN0X3R5cGVzX3dpdGhfc3RhdGljYWxseV9rbm93bl9tZW1iXzI0MjJcIixcIkEgY2xhc3MgY2FuIG9ubHkgaW1wbGVtZW50IGFuIG9iamVjdCB0eXBlIG9yIGludGVyc2VjdGlvbiBvZiBvYmplY3QgdHlwZXMgd2l0aCBzdGF0aWNhbGx5IGtub3duIG1lbWJlcnMuXCIpLENsYXNzXzBfZGVmaW5lc19pbnN0YW5jZV9tZW1iZXJfZnVuY3Rpb25fMV9idXRfZXh0ZW5kZWRfY2xhc3NfMl9kZWZpbmVzX2l0X2FzX2luc3RhbmNlX21lbWJlcl9hY2Nlc3NvcjphKDI0MjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDbGFzc18wX2RlZmluZXNfaW5zdGFuY2VfbWVtYmVyX2Z1bmN0aW9uXzFfYnV0X2V4dGVuZGVkX2NsYXNzXzJfZGVmaW5lc19pdF9hc19pbnN0YW5jZV9tZW1iZXJfYWNjZXNzXzI0MjNcIixcIkNsYXNzICd7MH0nIGRlZmluZXMgaW5zdGFuY2UgbWVtYmVyIGZ1bmN0aW9uICd7MX0nLCBidXQgZXh0ZW5kZWQgY2xhc3MgJ3syfScgZGVmaW5lcyBpdCBhcyBpbnN0YW5jZSBtZW1iZXIgYWNjZXNzb3IuXCIpLENsYXNzXzBfZGVmaW5lc19pbnN0YW5jZV9tZW1iZXJfcHJvcGVydHlfMV9idXRfZXh0ZW5kZWRfY2xhc3NfMl9kZWZpbmVzX2l0X2FzX2luc3RhbmNlX21lbWJlcl9mdW5jdGlvbjphKDI0MjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDbGFzc18wX2RlZmluZXNfaW5zdGFuY2VfbWVtYmVyX3Byb3BlcnR5XzFfYnV0X2V4dGVuZGVkX2NsYXNzXzJfZGVmaW5lc19pdF9hc19pbnN0YW5jZV9tZW1iZXJfZnVuY3RpXzI0MjVcIixcIkNsYXNzICd7MH0nIGRlZmluZXMgaW5zdGFuY2UgbWVtYmVyIHByb3BlcnR5ICd7MX0nLCBidXQgZXh0ZW5kZWQgY2xhc3MgJ3syfScgZGVmaW5lcyBpdCBhcyBpbnN0YW5jZSBtZW1iZXIgZnVuY3Rpb24uXCIpLENsYXNzXzBfZGVmaW5lc19pbnN0YW5jZV9tZW1iZXJfYWNjZXNzb3JfMV9idXRfZXh0ZW5kZWRfY2xhc3NfMl9kZWZpbmVzX2l0X2FzX2luc3RhbmNlX21lbWJlcl9mdW5jdGlvbjphKDI0MjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDbGFzc18wX2RlZmluZXNfaW5zdGFuY2VfbWVtYmVyX2FjY2Vzc29yXzFfYnV0X2V4dGVuZGVkX2NsYXNzXzJfZGVmaW5lc19pdF9hc19pbnN0YW5jZV9tZW1iZXJfZnVuY3RpXzI0MjZcIixcIkNsYXNzICd7MH0nIGRlZmluZXMgaW5zdGFuY2UgbWVtYmVyIGFjY2Vzc29yICd7MX0nLCBidXQgZXh0ZW5kZWQgY2xhc3MgJ3syfScgZGVmaW5lcyBpdCBhcyBpbnN0YW5jZSBtZW1iZXIgZnVuY3Rpb24uXCIpLEludGVyZmFjZV9uYW1lX2Nhbm5vdF9iZV8wOmEoMjQyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkludGVyZmFjZV9uYW1lX2Nhbm5vdF9iZV8wXzI0MjdcIixcIkludGVyZmFjZSBuYW1lIGNhbm5vdCBiZSAnezB9Jy5cIiksQWxsX2RlY2xhcmF0aW9uc19vZl8wX211c3RfaGF2ZV9pZGVudGljYWxfdHlwZV9wYXJhbWV0ZXJzOmEoMjQyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFsbF9kZWNsYXJhdGlvbnNfb2ZfMF9tdXN0X2hhdmVfaWRlbnRpY2FsX3R5cGVfcGFyYW1ldGVyc18yNDI4XCIsXCJBbGwgZGVjbGFyYXRpb25zIG9mICd7MH0nIG11c3QgaGF2ZSBpZGVudGljYWwgdHlwZSBwYXJhbWV0ZXJzLlwiKSxJbnRlcmZhY2VfMF9pbmNvcnJlY3RseV9leHRlbmRzX2ludGVyZmFjZV8xOmEoMjQzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkludGVyZmFjZV8wX2luY29ycmVjdGx5X2V4dGVuZHNfaW50ZXJmYWNlXzFfMjQzMFwiLFwiSW50ZXJmYWNlICd7MH0nIGluY29ycmVjdGx5IGV4dGVuZHMgaW50ZXJmYWNlICd7MX0nLlwiKSxFbnVtX25hbWVfY2Fubm90X2JlXzA6YSgyNDMxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRW51bV9uYW1lX2Nhbm5vdF9iZV8wXzI0MzFcIixcIkVudW0gbmFtZSBjYW5ub3QgYmUgJ3swfScuXCIpLEluX2FuX2VudW1fd2l0aF9tdWx0aXBsZV9kZWNsYXJhdGlvbnNfb25seV9vbmVfZGVjbGFyYXRpb25fY2FuX29taXRfYW5faW5pdGlhbGl6ZXJfZm9yX2l0c19maXJzdF9lbnVtX2VsZW1lbnQ6YSgyNDMyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW5fYW5fZW51bV93aXRoX211bHRpcGxlX2RlY2xhcmF0aW9uc19vbmx5X29uZV9kZWNsYXJhdGlvbl9jYW5fb21pdF9hbl9pbml0aWFsaXplcl9mb3JfaXRzX2ZpcnN0X2VudV8yNDMyXCIsXCJJbiBhbiBlbnVtIHdpdGggbXVsdGlwbGUgZGVjbGFyYXRpb25zLCBvbmx5IG9uZSBkZWNsYXJhdGlvbiBjYW4gb21pdCBhbiBpbml0aWFsaXplciBmb3IgaXRzIGZpcnN0IGVudW0gZWxlbWVudC5cIiksQV9uYW1lc3BhY2VfZGVjbGFyYXRpb25fY2Fubm90X2JlX2luX2FfZGlmZmVyZW50X2ZpbGVfZnJvbV9hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkOmEoMjQzMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfbmFtZXNwYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9iZV9pbl9hX2RpZmZlcmVudF9maWxlX2Zyb21fYV9jbGFzc19vcl9mdW5jdGlvbl93aXRoX3doaWNoX2l0X2lzX21lcmdfMjQzM1wiLFwiQSBuYW1lc3BhY2UgZGVjbGFyYXRpb24gY2Fubm90IGJlIGluIGEgZGlmZmVyZW50IGZpbGUgZnJvbSBhIGNsYXNzIG9yIGZ1bmN0aW9uIHdpdGggd2hpY2ggaXQgaXMgbWVyZ2VkLlwiKSxBX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfbG9jYXRlZF9wcmlvcl90b19hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkOmEoMjQzNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfbmFtZXNwYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9iZV9sb2NhdGVkX3ByaW9yX3RvX2FfY2xhc3Nfb3JfZnVuY3Rpb25fd2l0aF93aGljaF9pdF9pc19tZXJnZWRfMjQzNFwiLFwiQSBuYW1lc3BhY2UgZGVjbGFyYXRpb24gY2Fubm90IGJlIGxvY2F0ZWQgcHJpb3IgdG8gYSBjbGFzcyBvciBmdW5jdGlvbiB3aXRoIHdoaWNoIGl0IGlzIG1lcmdlZC5cIiksQW1iaWVudF9tb2R1bGVzX2Nhbm5vdF9iZV9uZXN0ZWRfaW5fb3RoZXJfbW9kdWxlc19vcl9uYW1lc3BhY2VzOmEoMjQzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFtYmllbnRfbW9kdWxlc19jYW5ub3RfYmVfbmVzdGVkX2luX290aGVyX21vZHVsZXNfb3JfbmFtZXNwYWNlc18yNDM1XCIsXCJBbWJpZW50IG1vZHVsZXMgY2Fubm90IGJlIG5lc3RlZCBpbiBvdGhlciBtb2R1bGVzIG9yIG5hbWVzcGFjZXMuXCIpLEFtYmllbnRfbW9kdWxlX2RlY2xhcmF0aW9uX2Nhbm5vdF9zcGVjaWZ5X3JlbGF0aXZlX21vZHVsZV9uYW1lOmEoMjQzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFtYmllbnRfbW9kdWxlX2RlY2xhcmF0aW9uX2Nhbm5vdF9zcGVjaWZ5X3JlbGF0aXZlX21vZHVsZV9uYW1lXzI0MzZcIixcIkFtYmllbnQgbW9kdWxlIGRlY2xhcmF0aW9uIGNhbm5vdCBzcGVjaWZ5IHJlbGF0aXZlIG1vZHVsZSBuYW1lLlwiKSxNb2R1bGVfMF9pc19oaWRkZW5fYnlfYV9sb2NhbF9kZWNsYXJhdGlvbl93aXRoX3RoZV9zYW1lX25hbWU6YSgyNDM3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTW9kdWxlXzBfaXNfaGlkZGVuX2J5X2FfbG9jYWxfZGVjbGFyYXRpb25fd2l0aF90aGVfc2FtZV9uYW1lXzI0MzdcIixcIk1vZHVsZSAnezB9JyBpcyBoaWRkZW4gYnkgYSBsb2NhbCBkZWNsYXJhdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUuXCIpLEltcG9ydF9uYW1lX2Nhbm5vdF9iZV8wOmEoMjQzOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkltcG9ydF9uYW1lX2Nhbm5vdF9iZV8wXzI0MzhcIixcIkltcG9ydCBuYW1lIGNhbm5vdCBiZSAnezB9Jy5cIiksSW1wb3J0X29yX2V4cG9ydF9kZWNsYXJhdGlvbl9pbl9hbl9hbWJpZW50X21vZHVsZV9kZWNsYXJhdGlvbl9jYW5ub3RfcmVmZXJlbmNlX21vZHVsZV90aHJvdWdoX3JlbGF0aXZlX21vZHVsZV9uYW1lOmEoMjQzOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkltcG9ydF9vcl9leHBvcnRfZGVjbGFyYXRpb25faW5fYW5fYW1iaWVudF9tb2R1bGVfZGVjbGFyYXRpb25fY2Fubm90X3JlZmVyZW5jZV9tb2R1bGVfdGhyb3VnaF9yZWxhdGlfMjQzOVwiLFwiSW1wb3J0IG9yIGV4cG9ydCBkZWNsYXJhdGlvbiBpbiBhbiBhbWJpZW50IG1vZHVsZSBkZWNsYXJhdGlvbiBjYW5ub3QgcmVmZXJlbmNlIG1vZHVsZSB0aHJvdWdoIHJlbGF0aXZlIG1vZHVsZSBuYW1lLlwiKSxJbXBvcnRfZGVjbGFyYXRpb25fY29uZmxpY3RzX3dpdGhfbG9jYWxfZGVjbGFyYXRpb25fb2ZfMDphKDI0NDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbXBvcnRfZGVjbGFyYXRpb25fY29uZmxpY3RzX3dpdGhfbG9jYWxfZGVjbGFyYXRpb25fb2ZfMF8yNDQwXCIsXCJJbXBvcnQgZGVjbGFyYXRpb24gY29uZmxpY3RzIHdpdGggbG9jYWwgZGVjbGFyYXRpb24gb2YgJ3swfScuXCIpLER1cGxpY2F0ZV9pZGVudGlmaWVyXzBfQ29tcGlsZXJfcmVzZXJ2ZXNfbmFtZV8xX2luX3RvcF9sZXZlbF9zY29wZV9vZl9hX21vZHVsZTphKDI0NDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEdXBsaWNhdGVfaWRlbnRpZmllcl8wX0NvbXBpbGVyX3Jlc2VydmVzX25hbWVfMV9pbl90b3BfbGV2ZWxfc2NvcGVfb2ZfYV9tb2R1bGVfMjQ0MVwiLFwiRHVwbGljYXRlIGlkZW50aWZpZXIgJ3swfScuIENvbXBpbGVyIHJlc2VydmVzIG5hbWUgJ3sxfScgaW4gdG9wIGxldmVsIHNjb3BlIG9mIGEgbW9kdWxlLlwiKSxUeXBlc19oYXZlX3NlcGFyYXRlX2RlY2xhcmF0aW9uc19vZl9hX3ByaXZhdGVfcHJvcGVydHlfMDphKDI0NDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlc19oYXZlX3NlcGFyYXRlX2RlY2xhcmF0aW9uc19vZl9hX3ByaXZhdGVfcHJvcGVydHlfMF8yNDQyXCIsXCJUeXBlcyBoYXZlIHNlcGFyYXRlIGRlY2xhcmF0aW9ucyBvZiBhIHByaXZhdGUgcHJvcGVydHkgJ3swfScuXCIpLFByb3BlcnR5XzBfaXNfcHJvdGVjdGVkX2J1dF90eXBlXzFfaXNfbm90X2FfY2xhc3NfZGVyaXZlZF9mcm9tXzI6YSgyNDQzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pc19wcm90ZWN0ZWRfYnV0X3R5cGVfMV9pc19ub3RfYV9jbGFzc19kZXJpdmVkX2Zyb21fMl8yNDQzXCIsXCJQcm9wZXJ0eSAnezB9JyBpcyBwcm90ZWN0ZWQgYnV0IHR5cGUgJ3sxfScgaXMgbm90IGEgY2xhc3MgZGVyaXZlZCBmcm9tICd7Mn0nLlwiKSxQcm9wZXJ0eV8wX2lzX3Byb3RlY3RlZF9pbl90eXBlXzFfYnV0X3B1YmxpY19pbl90eXBlXzI6YSgyNDQ0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pc19wcm90ZWN0ZWRfaW5fdHlwZV8xX2J1dF9wdWJsaWNfaW5fdHlwZV8yXzI0NDRcIixcIlByb3BlcnR5ICd7MH0nIGlzIHByb3RlY3RlZCBpbiB0eXBlICd7MX0nIGJ1dCBwdWJsaWMgaW4gdHlwZSAnezJ9Jy5cIiksUHJvcGVydHlfMF9pc19wcm90ZWN0ZWRfYW5kX29ubHlfYWNjZXNzaWJsZV93aXRoaW5fY2xhc3NfMV9hbmRfaXRzX3N1YmNsYXNzZXM6YSgyNDQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pc19wcm90ZWN0ZWRfYW5kX29ubHlfYWNjZXNzaWJsZV93aXRoaW5fY2xhc3NfMV9hbmRfaXRzX3N1YmNsYXNzZXNfMjQ0NVwiLFwiUHJvcGVydHkgJ3swfScgaXMgcHJvdGVjdGVkIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICd7MX0nIGFuZCBpdHMgc3ViY2xhc3Nlcy5cIiksUHJvcGVydHlfMF9pc19wcm90ZWN0ZWRfYW5kX29ubHlfYWNjZXNzaWJsZV90aHJvdWdoX2FuX2luc3RhbmNlX29mX2NsYXNzXzFfVGhpc19pc19hbl9pbnN0YW5jZV9vZl9jbGFzc18yOmEoMjQ0NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfaXNfcHJvdGVjdGVkX2FuZF9vbmx5X2FjY2Vzc2libGVfdGhyb3VnaF9hbl9pbnN0YW5jZV9vZl9jbGFzc18xX1RoaXNfaXNfYW5faW5zdGFuY2Vfb2ZfY2xfMjQ0NlwiLFwiUHJvcGVydHkgJ3swfScgaXMgcHJvdGVjdGVkIGFuZCBvbmx5IGFjY2Vzc2libGUgdGhyb3VnaCBhbiBpbnN0YW5jZSBvZiBjbGFzcyAnezF9Jy4gVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiBjbGFzcyAnezJ9Jy5cIiksVGhlXzBfb3BlcmF0b3JfaXNfbm90X2FsbG93ZWRfZm9yX2Jvb2xlYW5fdHlwZXNfQ29uc2lkZXJfdXNpbmdfMV9pbnN0ZWFkOmEoMjQ0NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV8wX29wZXJhdG9yX2lzX25vdF9hbGxvd2VkX2Zvcl9ib29sZWFuX3R5cGVzX0NvbnNpZGVyX3VzaW5nXzFfaW5zdGVhZF8yNDQ3XCIsXCJUaGUgJ3swfScgb3BlcmF0b3IgaXMgbm90IGFsbG93ZWQgZm9yIGJvb2xlYW4gdHlwZXMuIENvbnNpZGVyIHVzaW5nICd7MX0nIGluc3RlYWQuXCIpLEJsb2NrX3Njb3BlZF92YXJpYWJsZV8wX3VzZWRfYmVmb3JlX2l0c19kZWNsYXJhdGlvbjphKDI0NDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJCbG9ja19zY29wZWRfdmFyaWFibGVfMF91c2VkX2JlZm9yZV9pdHNfZGVjbGFyYXRpb25fMjQ0OFwiLFwiQmxvY2stc2NvcGVkIHZhcmlhYmxlICd7MH0nIHVzZWQgYmVmb3JlIGl0cyBkZWNsYXJhdGlvbi5cIiksQ2xhc3NfMF91c2VkX2JlZm9yZV9pdHNfZGVjbGFyYXRpb246YSgyNDQ5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2xhc3NfMF91c2VkX2JlZm9yZV9pdHNfZGVjbGFyYXRpb25fMjQ0OVwiLFwiQ2xhc3MgJ3swfScgdXNlZCBiZWZvcmUgaXRzIGRlY2xhcmF0aW9uLlwiKSxFbnVtXzBfdXNlZF9iZWZvcmVfaXRzX2RlY2xhcmF0aW9uOmEoMjQ1MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkVudW1fMF91c2VkX2JlZm9yZV9pdHNfZGVjbGFyYXRpb25fMjQ1MFwiLFwiRW51bSAnezB9JyB1c2VkIGJlZm9yZSBpdHMgZGVjbGFyYXRpb24uXCIpLENhbm5vdF9yZWRlY2xhcmVfYmxvY2tfc2NvcGVkX3ZhcmlhYmxlXzA6YSgyNDUxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X3JlZGVjbGFyZV9ibG9ja19zY29wZWRfdmFyaWFibGVfMF8yNDUxXCIsXCJDYW5ub3QgcmVkZWNsYXJlIGJsb2NrLXNjb3BlZCB2YXJpYWJsZSAnezB9Jy5cIiksQW5fZW51bV9tZW1iZXJfY2Fubm90X2hhdmVfYV9udW1lcmljX25hbWU6YSgyNDUyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fZW51bV9tZW1iZXJfY2Fubm90X2hhdmVfYV9udW1lcmljX25hbWVfMjQ1MlwiLFwiQW4gZW51bSBtZW1iZXIgY2Fubm90IGhhdmUgYSBudW1lcmljIG5hbWUuXCIpLFZhcmlhYmxlXzBfaXNfdXNlZF9iZWZvcmVfYmVpbmdfYXNzaWduZWQ6YSgyNDU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVmFyaWFibGVfMF9pc191c2VkX2JlZm9yZV9iZWluZ19hc3NpZ25lZF8yNDU0XCIsXCJWYXJpYWJsZSAnezB9JyBpcyB1c2VkIGJlZm9yZSBiZWluZyBhc3NpZ25lZC5cIiksVHlwZV9hbGlhc18wX2NpcmN1bGFybHlfcmVmZXJlbmNlc19pdHNlbGY6YSgyNDU2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9hbGlhc18wX2NpcmN1bGFybHlfcmVmZXJlbmNlc19pdHNlbGZfMjQ1NlwiLFwiVHlwZSBhbGlhcyAnezB9JyBjaXJjdWxhcmx5IHJlZmVyZW5jZXMgaXRzZWxmLlwiKSxUeXBlX2FsaWFzX25hbWVfY2Fubm90X2JlXzA6YSgyNDU3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9hbGlhc19uYW1lX2Nhbm5vdF9iZV8wXzI0NTdcIixcIlR5cGUgYWxpYXMgbmFtZSBjYW5ub3QgYmUgJ3swfScuXCIpLEFuX0FNRF9tb2R1bGVfY2Fubm90X2hhdmVfbXVsdGlwbGVfbmFtZV9hc3NpZ25tZW50czphKDI0NTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9BTURfbW9kdWxlX2Nhbm5vdF9oYXZlX211bHRpcGxlX25hbWVfYXNzaWdubWVudHNfMjQ1OFwiLFwiQW4gQU1EIG1vZHVsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBuYW1lIGFzc2lnbm1lbnRzLlwiKSxNb2R1bGVfMF9kZWNsYXJlc18xX2xvY2FsbHlfYnV0X2l0X2lzX25vdF9leHBvcnRlZDphKDI0NTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJNb2R1bGVfMF9kZWNsYXJlc18xX2xvY2FsbHlfYnV0X2l0X2lzX25vdF9leHBvcnRlZF8yNDU5XCIsXCJNb2R1bGUgJ3swfScgZGVjbGFyZXMgJ3sxfScgbG9jYWxseSwgYnV0IGl0IGlzIG5vdCBleHBvcnRlZC5cIiksTW9kdWxlXzBfZGVjbGFyZXNfMV9sb2NhbGx5X2J1dF9pdF9pc19leHBvcnRlZF9hc18yOmEoMjQ2MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1vZHVsZV8wX2RlY2xhcmVzXzFfbG9jYWxseV9idXRfaXRfaXNfZXhwb3J0ZWRfYXNfMl8yNDYwXCIsXCJNb2R1bGUgJ3swfScgZGVjbGFyZXMgJ3sxfScgbG9jYWxseSwgYnV0IGl0IGlzIGV4cG9ydGVkIGFzICd7Mn0nLlwiKSxUeXBlXzBfaXNfbm90X2FuX2FycmF5X3R5cGU6YSgyNDYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlXzI0NjFcIixcIlR5cGUgJ3swfScgaXMgbm90IGFuIGFycmF5IHR5cGUuXCIpLEFfcmVzdF9lbGVtZW50X211c3RfYmVfbGFzdF9pbl9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybjphKDI0NjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Jlc3RfZWxlbWVudF9tdXN0X2JlX2xhc3RfaW5fYV9kZXN0cnVjdHVyaW5nX3BhdHRlcm5fMjQ2MlwiLFwiQSByZXN0IGVsZW1lbnQgbXVzdCBiZSBsYXN0IGluIGEgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLlwiKSxBX2JpbmRpbmdfcGF0dGVybl9wYXJhbWV0ZXJfY2Fubm90X2JlX29wdGlvbmFsX2luX2FuX2ltcGxlbWVudGF0aW9uX3NpZ25hdHVyZTphKDI0NjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2JpbmRpbmdfcGF0dGVybl9wYXJhbWV0ZXJfY2Fubm90X2JlX29wdGlvbmFsX2luX2FuX2ltcGxlbWVudGF0aW9uX3NpZ25hdHVyZV8yNDYzXCIsXCJBIGJpbmRpbmcgcGF0dGVybiBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsIGluIGFuIGltcGxlbWVudGF0aW9uIHNpZ25hdHVyZS5cIiksQV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lX211c3RfYmVfb2ZfdHlwZV9zdHJpbmdfbnVtYmVyX3N5bWJvbF9vcl9hbnk6YSgyNDY0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lX211c3RfYmVfb2ZfdHlwZV9zdHJpbmdfbnVtYmVyX3N5bWJvbF9vcl9hbnlfMjQ2NFwiLFwiQSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIG11c3QgYmUgb2YgdHlwZSAnc3RyaW5nJywgJ251bWJlcicsICdzeW1ib2wnLCBvciAnYW55Jy5cIiksdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hX2NvbXB1dGVkX3Byb3BlcnR5X25hbWU6YSgyNDY1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwidGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfMjQ2NVwiLFwiJ3RoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGluIGEgY29tcHV0ZWQgcHJvcGVydHkgbmFtZS5cIiksc3VwZXJfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fYV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lOmEoMjQ2NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInN1cGVyX2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX2FfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV8yNDY2XCIsXCInc3VwZXInIGNhbm5vdCBiZSByZWZlcmVuY2VkIGluIGEgY29tcHV0ZWQgcHJvcGVydHkgbmFtZS5cIiksQV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lX2Nhbm5vdF9yZWZlcmVuY2VfYV90eXBlX3BhcmFtZXRlcl9mcm9tX2l0c19jb250YWluaW5nX3R5cGU6YSgyNDY3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lX2Nhbm5vdF9yZWZlcmVuY2VfYV90eXBlX3BhcmFtZXRlcl9mcm9tX2l0c19jb250YWluaW5nX3R5cGVfMjQ2N1wiLFwiQSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIGNhbm5vdCByZWZlcmVuY2UgYSB0eXBlIHBhcmFtZXRlciBmcm9tIGl0cyBjb250YWluaW5nIHR5cGUuXCIpLENhbm5vdF9maW5kX2dsb2JhbF92YWx1ZV8wOmEoMjQ2OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX2dsb2JhbF92YWx1ZV8wXzI0NjhcIixcIkNhbm5vdCBmaW5kIGdsb2JhbCB2YWx1ZSAnezB9Jy5cIiksVGhlXzBfb3BlcmF0b3JfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV9zeW1ib2w6YSgyNDY5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlXzBfb3BlcmF0b3JfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV9zeW1ib2xfMjQ2OVwiLFwiVGhlICd7MH0nIG9wZXJhdG9yIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHR5cGUgJ3N5bWJvbCcuXCIpLFNwcmVhZF9vcGVyYXRvcl9pbl9uZXdfZXhwcmVzc2lvbnNfaXNfb25seV9hdmFpbGFibGVfd2hlbl90YXJnZXRpbmdfRUNNQVNjcmlwdF81X2FuZF9oaWdoZXI6YSgyNDcyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU3ByZWFkX29wZXJhdG9yX2luX25ld19leHByZXNzaW9uc19pc19vbmx5X2F2YWlsYWJsZV93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0XzVfYW5kX2hpZ2hlcl8yNDcyXCIsXCJTcHJlYWQgb3BlcmF0b3IgaW4gJ25ldycgZXhwcmVzc2lvbnMgaXMgb25seSBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCA1IGFuZCBoaWdoZXIuXCIpLEVudW1fZGVjbGFyYXRpb25zX211c3RfYWxsX2JlX2NvbnN0X29yX25vbl9jb25zdDphKDI0NzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFbnVtX2RlY2xhcmF0aW9uc19tdXN0X2FsbF9iZV9jb25zdF9vcl9ub25fY29uc3RfMjQ3M1wiLFwiRW51bSBkZWNsYXJhdGlvbnMgbXVzdCBhbGwgYmUgY29uc3Qgb3Igbm9uLWNvbnN0LlwiKSxjb25zdF9lbnVtX21lbWJlcl9pbml0aWFsaXplcnNfY2FuX29ubHlfY29udGFpbl9saXRlcmFsX3ZhbHVlc19hbmRfb3RoZXJfY29tcHV0ZWRfZW51bV92YWx1ZXM6YSgyNDc0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiY29uc3RfZW51bV9tZW1iZXJfaW5pdGlhbGl6ZXJzX2Nhbl9vbmx5X2NvbnRhaW5fbGl0ZXJhbF92YWx1ZXNfYW5kX290aGVyX2NvbXB1dGVkX2VudW1fdmFsdWVzXzI0NzRcIixcImNvbnN0IGVudW0gbWVtYmVyIGluaXRpYWxpemVycyBjYW4gb25seSBjb250YWluIGxpdGVyYWwgdmFsdWVzIGFuZCBvdGhlciBjb21wdXRlZCBlbnVtIHZhbHVlcy5cIiksY29uc3RfZW51bXNfY2FuX29ubHlfYmVfdXNlZF9pbl9wcm9wZXJ0eV9vcl9pbmRleF9hY2Nlc3NfZXhwcmVzc2lvbnNfb3JfdGhlX3JpZ2h0X2hhbmRfc2lkZV9vZl9hbl9pbXBvcnRfZGVjbGFyYXRpb25fb3JfZXhwb3J0X2Fzc2lnbm1lbnRfb3JfdHlwZV9xdWVyeTphKDI0NzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJjb25zdF9lbnVtc19jYW5fb25seV9iZV91c2VkX2luX3Byb3BlcnR5X29yX2luZGV4X2FjY2Vzc19leHByZXNzaW9uc19vcl90aGVfcmlnaHRfaGFuZF9zaWRlX29mX2FuX2ltXzI0NzVcIixcIidjb25zdCcgZW51bXMgY2FuIG9ubHkgYmUgdXNlZCBpbiBwcm9wZXJ0eSBvciBpbmRleCBhY2Nlc3MgZXhwcmVzc2lvbnMgb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhbiBpbXBvcnQgZGVjbGFyYXRpb24gb3IgZXhwb3J0IGFzc2lnbm1lbnQgb3IgdHlwZSBxdWVyeS5cIiksQV9jb25zdF9lbnVtX21lbWJlcl9jYW5fb25seV9iZV9hY2Nlc3NlZF91c2luZ19hX3N0cmluZ19saXRlcmFsOmEoMjQ3NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY29uc3RfZW51bV9tZW1iZXJfY2FuX29ubHlfYmVfYWNjZXNzZWRfdXNpbmdfYV9zdHJpbmdfbGl0ZXJhbF8yNDc2XCIsXCJBIGNvbnN0IGVudW0gbWVtYmVyIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGEgc3RyaW5nIGxpdGVyYWwuXCIpLGNvbnN0X2VudW1fbWVtYmVyX2luaXRpYWxpemVyX3dhc19ldmFsdWF0ZWRfdG9fYV9ub25fZmluaXRlX3ZhbHVlOmEoMjQ3NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImNvbnN0X2VudW1fbWVtYmVyX2luaXRpYWxpemVyX3dhc19ldmFsdWF0ZWRfdG9fYV9ub25fZmluaXRlX3ZhbHVlXzI0NzdcIixcIidjb25zdCcgZW51bSBtZW1iZXIgaW5pdGlhbGl6ZXIgd2FzIGV2YWx1YXRlZCB0byBhIG5vbi1maW5pdGUgdmFsdWUuXCIpLGNvbnN0X2VudW1fbWVtYmVyX2luaXRpYWxpemVyX3dhc19ldmFsdWF0ZWRfdG9fZGlzYWxsb3dlZF92YWx1ZV9OYU46YSgyNDc4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiY29uc3RfZW51bV9tZW1iZXJfaW5pdGlhbGl6ZXJfd2FzX2V2YWx1YXRlZF90b19kaXNhbGxvd2VkX3ZhbHVlX05hTl8yNDc4XCIsXCInY29uc3QnIGVudW0gbWVtYmVyIGluaXRpYWxpemVyIHdhcyBldmFsdWF0ZWQgdG8gZGlzYWxsb3dlZCB2YWx1ZSAnTmFOJy5cIiksbGV0X2lzX25vdF9hbGxvd2VkX3RvX2JlX3VzZWRfYXNfYV9uYW1lX2luX2xldF9vcl9jb25zdF9kZWNsYXJhdGlvbnM6YSgyNDgwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwibGV0X2lzX25vdF9hbGxvd2VkX3RvX2JlX3VzZWRfYXNfYV9uYW1lX2luX2xldF9vcl9jb25zdF9kZWNsYXJhdGlvbnNfMjQ4MFwiLFwiJ2xldCcgaXMgbm90IGFsbG93ZWQgdG8gYmUgdXNlZCBhcyBhIG5hbWUgaW4gJ2xldCcgb3IgJ2NvbnN0JyBkZWNsYXJhdGlvbnMuXCIpLENhbm5vdF9pbml0aWFsaXplX291dGVyX3Njb3BlZF92YXJpYWJsZV8wX2luX3RoZV9zYW1lX3Njb3BlX2FzX2Jsb2NrX3Njb3BlZF9kZWNsYXJhdGlvbl8xOmEoMjQ4MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9pbml0aWFsaXplX291dGVyX3Njb3BlZF92YXJpYWJsZV8wX2luX3RoZV9zYW1lX3Njb3BlX2FzX2Jsb2NrX3Njb3BlZF9kZWNsYXJhdGlvbl8xXzI0ODFcIixcIkNhbm5vdCBpbml0aWFsaXplIG91dGVyIHNjb3BlZCB2YXJpYWJsZSAnezB9JyBpbiB0aGUgc2FtZSBzY29wZSBhcyBibG9jayBzY29wZWQgZGVjbGFyYXRpb24gJ3sxfScuXCIpLFRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hX2Zvcl9vZl9zdGF0ZW1lbnRfY2Fubm90X3VzZV9hX3R5cGVfYW5ub3RhdGlvbjphKDI0ODMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X2Nhbm5vdF91c2VfYV90eXBlX2Fubm90YXRpb25fMjQ4M1wiLFwiVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLm9mJyBzdGF0ZW1lbnQgY2Fubm90IHVzZSBhIHR5cGUgYW5ub3RhdGlvbi5cIiksRXhwb3J0X2RlY2xhcmF0aW9uX2NvbmZsaWN0c193aXRoX2V4cG9ydGVkX2RlY2xhcmF0aW9uX29mXzA6YSgyNDg0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwb3J0X2RlY2xhcmF0aW9uX2NvbmZsaWN0c193aXRoX2V4cG9ydGVkX2RlY2xhcmF0aW9uX29mXzBfMjQ4NFwiLFwiRXhwb3J0IGRlY2xhcmF0aW9uIGNvbmZsaWN0cyB3aXRoIGV4cG9ydGVkIGRlY2xhcmF0aW9uIG9mICd7MH0nLlwiKSxUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzczphKDI0ODcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2Vzc18yNDg3XCIsXCJUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4ub2YnIHN0YXRlbWVudCBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuXCIpLFR5cGVfMF9tdXN0X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9pdGVyYXRvcjphKDI0ODgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfbXVzdF9oYXZlX2FfU3ltYm9sX2l0ZXJhdG9yX21ldGhvZF90aGF0X3JldHVybnNfYW5faXRlcmF0b3JfMjQ4OFwiLFwiVHlwZSAnezB9JyBtdXN0IGhhdmUgYSAnW1N5bWJvbC5pdGVyYXRvcl0oKScgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpdGVyYXRvci5cIiksQW5faXRlcmF0b3JfbXVzdF9oYXZlX2FfbmV4dF9tZXRob2Q6YSgyNDg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5faXRlcmF0b3JfbXVzdF9oYXZlX2FfbmV4dF9tZXRob2RfMjQ4OVwiLFwiQW4gaXRlcmF0b3IgbXVzdCBoYXZlIGEgJ25leHQoKScgbWV0aG9kLlwiKSxUaGVfdHlwZV9yZXR1cm5lZF9ieV90aGVfMF9tZXRob2Rfb2ZfYW5faXRlcmF0b3JfbXVzdF9oYXZlX2FfdmFsdWVfcHJvcGVydHk6YSgyNDkwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3R5cGVfcmV0dXJuZWRfYnlfdGhlXzBfbWV0aG9kX29mX2FuX2l0ZXJhdG9yX211c3RfaGF2ZV9hX3ZhbHVlX3Byb3BlcnR5XzI0OTBcIixcIlRoZSB0eXBlIHJldHVybmVkIGJ5IHRoZSAnezB9KCknIG1ldGhvZCBvZiBhbiBpdGVyYXRvciBtdXN0IGhhdmUgYSAndmFsdWUnIHByb3BlcnR5LlwiKSxUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3JfaW5fc3RhdGVtZW50X2Nhbm5vdF9iZV9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybjphKDI0OTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3JfaW5fc3RhdGVtZW50X2Nhbm5vdF9iZV9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybl8yNDkxXCIsXCJUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4uaW4nIHN0YXRlbWVudCBjYW5ub3QgYmUgYSBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uXCIpLENhbm5vdF9yZWRlY2xhcmVfaWRlbnRpZmllcl8wX2luX2NhdGNoX2NsYXVzZTphKDI0OTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfcmVkZWNsYXJlX2lkZW50aWZpZXJfMF9pbl9jYXRjaF9jbGF1c2VfMjQ5MlwiLFwiQ2Fubm90IHJlZGVjbGFyZSBpZGVudGlmaWVyICd7MH0nIGluIGNhdGNoIGNsYXVzZS5cIiksVHVwbGVfdHlwZV8wX29mX2xlbmd0aF8xX2hhc19ub19lbGVtZW50X2F0X2luZGV4XzI6YSgyNDkzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHVwbGVfdHlwZV8wX29mX2xlbmd0aF8xX2hhc19ub19lbGVtZW50X2F0X2luZGV4XzJfMjQ5M1wiLFwiVHVwbGUgdHlwZSAnezB9JyBvZiBsZW5ndGggJ3sxfScgaGFzIG5vIGVsZW1lbnQgYXQgaW5kZXggJ3syfScuXCIpLFVzaW5nX2Ffc3RyaW5nX2luX2FfZm9yX29mX3N0YXRlbWVudF9pc19vbmx5X3N1cHBvcnRlZF9pbl9FQ01BU2NyaXB0XzVfYW5kX2hpZ2hlcjphKDI0OTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVc2luZ19hX3N0cmluZ19pbl9hX2Zvcl9vZl9zdGF0ZW1lbnRfaXNfb25seV9zdXBwb3J0ZWRfaW5fRUNNQVNjcmlwdF81X2FuZF9oaWdoZXJfMjQ5NFwiLFwiVXNpbmcgYSBzdHJpbmcgaW4gYSAnZm9yLi4ub2YnIHN0YXRlbWVudCBpcyBvbmx5IHN1cHBvcnRlZCBpbiBFQ01BU2NyaXB0IDUgYW5kIGhpZ2hlci5cIiksVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlX29yX2Ffc3RyaW5nX3R5cGU6YSgyNDk1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlX29yX2Ffc3RyaW5nX3R5cGVfMjQ5NVwiLFwiVHlwZSAnezB9JyBpcyBub3QgYW4gYXJyYXkgdHlwZSBvciBhIHN0cmluZyB0eXBlLlwiKSxUaGVfYXJndW1lbnRzX29iamVjdF9jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hbl9hcnJvd19mdW5jdGlvbl9pbl9FUzNfYW5kX0VTNV9Db25zaWRlcl91c2luZ19hX3N0YW5kYXJkX2Z1bmN0aW9uX2V4cHJlc3Npb246YSgyNDk2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2FyZ3VtZW50c19vYmplY3RfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fYW5fYXJyb3dfZnVuY3Rpb25faW5fRVMzX2FuZF9FUzVfQ29uc2lkZXJfdXNpbmdfYV9zdGFuZF8yNDk2XCIsXCJUaGUgJ2FyZ3VtZW50cycgb2JqZWN0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGluIGFuIGFycm93IGZ1bmN0aW9uIGluIEVTMyBhbmQgRVM1LiBDb25zaWRlciB1c2luZyBhIHN0YW5kYXJkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXCIpLFRoaXNfbW9kdWxlX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfd2l0aF9FQ01BU2NyaXB0X2ltcG9ydHNfU2xhc2hleHBvcnRzX2J5X3R1cm5pbmdfb25fdGhlXzBfZmxhZ19hbmRfcmVmZXJlbmNpbmdfaXRzX2RlZmF1bHRfZXhwb3J0OmEoMjQ5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfbW9kdWxlX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfd2l0aF9FQ01BU2NyaXB0X2ltcG9ydHNfU2xhc2hleHBvcnRzX2J5X3R1cm5pbmdfb25fdGhlXzBfZmxhZ19hbmRfMjQ5N1wiLFwiVGhpcyBtb2R1bGUgY2FuIG9ubHkgYmUgcmVmZXJlbmNlZCB3aXRoIEVDTUFTY3JpcHQgaW1wb3J0cy9leHBvcnRzIGJ5IHR1cm5pbmcgb24gdGhlICd7MH0nIGZsYWcgYW5kIHJlZmVyZW5jaW5nIGl0cyBkZWZhdWx0IGV4cG9ydC5cIiksTW9kdWxlXzBfdXNlc19leHBvcnRfYW5kX2Nhbm5vdF9iZV91c2VkX3dpdGhfZXhwb3J0X0FzdGVyaXNrOmEoMjQ5OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1vZHVsZV8wX3VzZXNfZXhwb3J0X2FuZF9jYW5ub3RfYmVfdXNlZF93aXRoX2V4cG9ydF9Bc3Rlcmlza18yNDk4XCIsXCJNb2R1bGUgJ3swfScgdXNlcyAnZXhwb3J0ID0nIGFuZCBjYW5ub3QgYmUgdXNlZCB3aXRoICdleHBvcnQgKicuXCIpLEFuX2ludGVyZmFjZV9jYW5fb25seV9leHRlbmRfYW5faWRlbnRpZmllcl9TbGFzaHF1YWxpZmllZF9uYW1lX3dpdGhfb3B0aW9uYWxfdHlwZV9hcmd1bWVudHM6YSgyNDk5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5faW50ZXJmYWNlX2Nhbl9vbmx5X2V4dGVuZF9hbl9pZGVudGlmaWVyX1NsYXNocXVhbGlmaWVkX25hbWVfd2l0aF9vcHRpb25hbF90eXBlX2FyZ3VtZW50c18yNDk5XCIsXCJBbiBpbnRlcmZhY2UgY2FuIG9ubHkgZXh0ZW5kIGFuIGlkZW50aWZpZXIvcXVhbGlmaWVkLW5hbWUgd2l0aCBvcHRpb25hbCB0eXBlIGFyZ3VtZW50cy5cIiksQV9jbGFzc19jYW5fb25seV9pbXBsZW1lbnRfYW5faWRlbnRpZmllcl9TbGFzaHF1YWxpZmllZF9uYW1lX3dpdGhfb3B0aW9uYWxfdHlwZV9hcmd1bWVudHM6YSgyNTAwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jbGFzc19jYW5fb25seV9pbXBsZW1lbnRfYW5faWRlbnRpZmllcl9TbGFzaHF1YWxpZmllZF9uYW1lX3dpdGhfb3B0aW9uYWxfdHlwZV9hcmd1bWVudHNfMjUwMFwiLFwiQSBjbGFzcyBjYW4gb25seSBpbXBsZW1lbnQgYW4gaWRlbnRpZmllci9xdWFsaWZpZWQtbmFtZSB3aXRoIG9wdGlvbmFsIHR5cGUgYXJndW1lbnRzLlwiKSxBX3Jlc3RfZWxlbWVudF9jYW5ub3RfY29udGFpbl9hX2JpbmRpbmdfcGF0dGVybjphKDI1MDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Jlc3RfZWxlbWVudF9jYW5ub3RfY29udGFpbl9hX2JpbmRpbmdfcGF0dGVybl8yNTAxXCIsXCJBIHJlc3QgZWxlbWVudCBjYW5ub3QgY29udGFpbiBhIGJpbmRpbmcgcGF0dGVybi5cIiksXzBfaXNfcmVmZXJlbmNlZF9kaXJlY3RseV9vcl9pbmRpcmVjdGx5X2luX2l0c19vd25fdHlwZV9hbm5vdGF0aW9uOmEoMjUwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9pdHNfb3duX3R5cGVfYW5ub3RhdGlvbl8yNTAyXCIsXCInezB9JyBpcyByZWZlcmVuY2VkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW4gaXRzIG93biB0eXBlIGFubm90YXRpb24uXCIpLENhbm5vdF9maW5kX25hbWVzcGFjZV8wOmEoMjUwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX25hbWVzcGFjZV8wXzI1MDNcIixcIkNhbm5vdCBmaW5kIG5hbWVzcGFjZSAnezB9Jy5cIiksVHlwZV8wX211c3RfaGF2ZV9hX1N5bWJvbF9hc3luY0l0ZXJhdG9yX21ldGhvZF90aGF0X3JldHVybnNfYW5fYXN5bmNfaXRlcmF0b3I6YSgyNTA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX211c3RfaGF2ZV9hX1N5bWJvbF9hc3luY0l0ZXJhdG9yX21ldGhvZF90aGF0X3JldHVybnNfYW5fYXN5bmNfaXRlcmF0b3JfMjUwNFwiLFwiVHlwZSAnezB9JyBtdXN0IGhhdmUgYSAnW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpJyBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGFzeW5jIGl0ZXJhdG9yLlwiKSxBX2dlbmVyYXRvcl9jYW5ub3RfaGF2ZV9hX3ZvaWRfdHlwZV9hbm5vdGF0aW9uOmEoMjUwNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfZ2VuZXJhdG9yX2Nhbm5vdF9oYXZlX2Ffdm9pZF90eXBlX2Fubm90YXRpb25fMjUwNVwiLFwiQSBnZW5lcmF0b3IgY2Fubm90IGhhdmUgYSAndm9pZCcgdHlwZSBhbm5vdGF0aW9uLlwiKSxfMF9pc19yZWZlcmVuY2VkX2RpcmVjdGx5X29yX2luZGlyZWN0bHlfaW5faXRzX293bl9iYXNlX2V4cHJlc3Npb246YSgyNTA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfaXNfcmVmZXJlbmNlZF9kaXJlY3RseV9vcl9pbmRpcmVjdGx5X2luX2l0c19vd25fYmFzZV9leHByZXNzaW9uXzI1MDZcIixcIid7MH0nIGlzIHJlZmVyZW5jZWQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbiBpdHMgb3duIGJhc2UgZXhwcmVzc2lvbi5cIiksVHlwZV8wX2lzX25vdF9hX2NvbnN0cnVjdG9yX2Z1bmN0aW9uX3R5cGU6YSgyNTA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2lzX25vdF9hX2NvbnN0cnVjdG9yX2Z1bmN0aW9uX3R5cGVfMjUwN1wiLFwiVHlwZSAnezB9JyBpcyBub3QgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB0eXBlLlwiKSxOb19iYXNlX2NvbnN0cnVjdG9yX2hhc190aGVfc3BlY2lmaWVkX251bWJlcl9vZl90eXBlX2FyZ3VtZW50czphKDI1MDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb19iYXNlX2NvbnN0cnVjdG9yX2hhc190aGVfc3BlY2lmaWVkX251bWJlcl9vZl90eXBlX2FyZ3VtZW50c18yNTA4XCIsXCJObyBiYXNlIGNvbnN0cnVjdG9yIGhhcyB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0eXBlIGFyZ3VtZW50cy5cIiksQmFzZV9jb25zdHJ1Y3Rvcl9yZXR1cm5fdHlwZV8wX2lzX25vdF9hbl9vYmplY3RfdHlwZV9vcl9pbnRlcnNlY3Rpb25fb2Zfb2JqZWN0X3R5cGVzX3dpdGhfc3RhdGljYWxseV9rbm93bl9tZW1iZXJzOmEoMjUwOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkJhc2VfY29uc3RydWN0b3JfcmV0dXJuX3R5cGVfMF9pc19ub3RfYW5fb2JqZWN0X3R5cGVfb3JfaW50ZXJzZWN0aW9uX29mX29iamVjdF90eXBlc193aXRoX3N0YXRpY2FsbHlfMjUwOVwiLFwiQmFzZSBjb25zdHJ1Y3RvciByZXR1cm4gdHlwZSAnezB9JyBpcyBub3QgYW4gb2JqZWN0IHR5cGUgb3IgaW50ZXJzZWN0aW9uIG9mIG9iamVjdCB0eXBlcyB3aXRoIHN0YXRpY2FsbHkga25vd24gbWVtYmVycy5cIiksQmFzZV9jb25zdHJ1Y3RvcnNfbXVzdF9hbGxfaGF2ZV90aGVfc2FtZV9yZXR1cm5fdHlwZTphKDI1MTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJCYXNlX2NvbnN0cnVjdG9yc19tdXN0X2FsbF9oYXZlX3RoZV9zYW1lX3JldHVybl90eXBlXzI1MTBcIixcIkJhc2UgY29uc3RydWN0b3JzIG11c3QgYWxsIGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUuXCIpLENhbm5vdF9jcmVhdGVfYW5faW5zdGFuY2Vfb2ZfYW5fYWJzdHJhY3RfY2xhc3M6YSgyNTExLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2NyZWF0ZV9hbl9pbnN0YW5jZV9vZl9hbl9hYnN0cmFjdF9jbGFzc18yNTExXCIsXCJDYW5ub3QgY3JlYXRlIGFuIGluc3RhbmNlIG9mIGFuIGFic3RyYWN0IGNsYXNzLlwiKSxPdmVybG9hZF9zaWduYXR1cmVzX211c3RfYWxsX2JlX2Fic3RyYWN0X29yX25vbl9hYnN0cmFjdDphKDI1MTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPdmVybG9hZF9zaWduYXR1cmVzX211c3RfYWxsX2JlX2Fic3RyYWN0X29yX25vbl9hYnN0cmFjdF8yNTEyXCIsXCJPdmVybG9hZCBzaWduYXR1cmVzIG11c3QgYWxsIGJlIGFic3RyYWN0IG9yIG5vbi1hYnN0cmFjdC5cIiksQWJzdHJhY3RfbWV0aG9kXzBfaW5fY2xhc3NfMV9jYW5ub3RfYmVfYWNjZXNzZWRfdmlhX3N1cGVyX2V4cHJlc3Npb246YSgyNTEzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQWJzdHJhY3RfbWV0aG9kXzBfaW5fY2xhc3NfMV9jYW5ub3RfYmVfYWNjZXNzZWRfdmlhX3N1cGVyX2V4cHJlc3Npb25fMjUxM1wiLFwiQWJzdHJhY3QgbWV0aG9kICd7MH0nIGluIGNsYXNzICd7MX0nIGNhbm5vdCBiZSBhY2Nlc3NlZCB2aWEgc3VwZXIgZXhwcmVzc2lvbi5cIiksTm9uX2Fic3RyYWN0X2NsYXNzXzBfZG9lc19ub3RfaW1wbGVtZW50X2luaGVyaXRlZF9hYnN0cmFjdF9tZW1iZXJfMV9mcm9tX2NsYXNzXzI6YSgyNTE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTm9uX2Fic3RyYWN0X2NsYXNzXzBfZG9lc19ub3RfaW1wbGVtZW50X2luaGVyaXRlZF9hYnN0cmFjdF9tZW1iZXJfMV9mcm9tX2NsYXNzXzJfMjUxNVwiLFwiTm9uLWFic3RyYWN0IGNsYXNzICd7MH0nIGRvZXMgbm90IGltcGxlbWVudCBpbmhlcml0ZWQgYWJzdHJhY3QgbWVtYmVyICd7MX0nIGZyb20gY2xhc3MgJ3syfScuXCIpLEFsbF9kZWNsYXJhdGlvbnNfb2ZfYW5fYWJzdHJhY3RfbWV0aG9kX211c3RfYmVfY29uc2VjdXRpdmU6YSgyNTE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQWxsX2RlY2xhcmF0aW9uc19vZl9hbl9hYnN0cmFjdF9tZXRob2RfbXVzdF9iZV9jb25zZWN1dGl2ZV8yNTE2XCIsXCJBbGwgZGVjbGFyYXRpb25zIG9mIGFuIGFic3RyYWN0IG1ldGhvZCBtdXN0IGJlIGNvbnNlY3V0aXZlLlwiKSxDYW5ub3RfYXNzaWduX2FuX2Fic3RyYWN0X2NvbnN0cnVjdG9yX3R5cGVfdG9fYV9ub25fYWJzdHJhY3RfY29uc3RydWN0b3JfdHlwZTphKDI1MTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfYXNzaWduX2FuX2Fic3RyYWN0X2NvbnN0cnVjdG9yX3R5cGVfdG9fYV9ub25fYWJzdHJhY3RfY29uc3RydWN0b3JfdHlwZV8yNTE3XCIsXCJDYW5ub3QgYXNzaWduIGFuIGFic3RyYWN0IGNvbnN0cnVjdG9yIHR5cGUgdG8gYSBub24tYWJzdHJhY3QgY29uc3RydWN0b3IgdHlwZS5cIiksQV90aGlzX2Jhc2VkX3R5cGVfZ3VhcmRfaXNfbm90X2NvbXBhdGlibGVfd2l0aF9hX3BhcmFtZXRlcl9iYXNlZF90eXBlX2d1YXJkOmEoMjUxOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfdGhpc19iYXNlZF90eXBlX2d1YXJkX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfYV9wYXJhbWV0ZXJfYmFzZWRfdHlwZV9ndWFyZF8yNTE4XCIsXCJBICd0aGlzJy1iYXNlZCB0eXBlIGd1YXJkIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYSBwYXJhbWV0ZXItYmFzZWQgdHlwZSBndWFyZC5cIiksQW5fYXN5bmNfaXRlcmF0b3JfbXVzdF9oYXZlX2FfbmV4dF9tZXRob2Q6YSgyNTE5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fYXN5bmNfaXRlcmF0b3JfbXVzdF9oYXZlX2FfbmV4dF9tZXRob2RfMjUxOVwiLFwiQW4gYXN5bmMgaXRlcmF0b3IgbXVzdCBoYXZlIGEgJ25leHQoKScgbWV0aG9kLlwiKSxEdXBsaWNhdGVfaWRlbnRpZmllcl8wX0NvbXBpbGVyX3VzZXNfZGVjbGFyYXRpb25fMV90b19zdXBwb3J0X2FzeW5jX2Z1bmN0aW9uczphKDI1MjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEdXBsaWNhdGVfaWRlbnRpZmllcl8wX0NvbXBpbGVyX3VzZXNfZGVjbGFyYXRpb25fMV90b19zdXBwb3J0X2FzeW5jX2Z1bmN0aW9uc18yNTIwXCIsXCJEdXBsaWNhdGUgaWRlbnRpZmllciAnezB9Jy4gQ29tcGlsZXIgdXNlcyBkZWNsYXJhdGlvbiAnezF9JyB0byBzdXBwb3J0IGFzeW5jIGZ1bmN0aW9ucy5cIiksVGhlX2FyZ3VtZW50c19vYmplY3RfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fYW5fYXN5bmNfZnVuY3Rpb25fb3JfbWV0aG9kX2luX0VTM19hbmRfRVM1X0NvbnNpZGVyX3VzaW5nX2Ffc3RhbmRhcmRfZnVuY3Rpb25fb3JfbWV0aG9kOmEoMjUyMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9hcmd1bWVudHNfb2JqZWN0X2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX2FuX2FzeW5jX2Z1bmN0aW9uX29yX21ldGhvZF9pbl9FUzNfYW5kX0VTNV9Db25zaWRlcl91c2lfMjUyMlwiLFwiVGhlICdhcmd1bWVudHMnIG9iamVjdCBjYW5ub3QgYmUgcmVmZXJlbmNlZCBpbiBhbiBhc3luYyBmdW5jdGlvbiBvciBtZXRob2QgaW4gRVMzIGFuZCBFUzUuIENvbnNpZGVyIHVzaW5nIGEgc3RhbmRhcmQgZnVuY3Rpb24gb3IgbWV0aG9kLlwiKSx5aWVsZF9leHByZXNzaW9uc19jYW5ub3RfYmVfdXNlZF9pbl9hX3BhcmFtZXRlcl9pbml0aWFsaXplcjphKDI1MjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJ5aWVsZF9leHByZXNzaW9uc19jYW5ub3RfYmVfdXNlZF9pbl9hX3BhcmFtZXRlcl9pbml0aWFsaXplcl8yNTIzXCIsXCIneWllbGQnIGV4cHJlc3Npb25zIGNhbm5vdCBiZSB1c2VkIGluIGEgcGFyYW1ldGVyIGluaXRpYWxpemVyLlwiKSxhd2FpdF9leHByZXNzaW9uc19jYW5ub3RfYmVfdXNlZF9pbl9hX3BhcmFtZXRlcl9pbml0aWFsaXplcjphKDI1MjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJhd2FpdF9leHByZXNzaW9uc19jYW5ub3RfYmVfdXNlZF9pbl9hX3BhcmFtZXRlcl9pbml0aWFsaXplcl8yNTI0XCIsXCInYXdhaXQnIGV4cHJlc3Npb25zIGNhbm5vdCBiZSB1c2VkIGluIGEgcGFyYW1ldGVyIGluaXRpYWxpemVyLlwiKSxJbml0aWFsaXplcl9wcm92aWRlc19ub192YWx1ZV9mb3JfdGhpc19iaW5kaW5nX2VsZW1lbnRfYW5kX3RoZV9iaW5kaW5nX2VsZW1lbnRfaGFzX25vX2RlZmF1bHRfdmFsdWU6YSgyNTI1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW5pdGlhbGl6ZXJfcHJvdmlkZXNfbm9fdmFsdWVfZm9yX3RoaXNfYmluZGluZ19lbGVtZW50X2FuZF90aGVfYmluZGluZ19lbGVtZW50X2hhc19ub19kZWZhdWx0X3ZhbHVlXzI1MjVcIixcIkluaXRpYWxpemVyIHByb3ZpZGVzIG5vIHZhbHVlIGZvciB0aGlzIGJpbmRpbmcgZWxlbWVudCBhbmQgdGhlIGJpbmRpbmcgZWxlbWVudCBoYXMgbm8gZGVmYXVsdCB2YWx1ZS5cIiksQV90aGlzX3R5cGVfaXNfYXZhaWxhYmxlX29ubHlfaW5fYV9ub25fc3RhdGljX21lbWJlcl9vZl9hX2NsYXNzX29yX2ludGVyZmFjZTphKDI1MjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3RoaXNfdHlwZV9pc19hdmFpbGFibGVfb25seV9pbl9hX25vbl9zdGF0aWNfbWVtYmVyX29mX2FfY2xhc3Nfb3JfaW50ZXJmYWNlXzI1MjZcIixcIkEgJ3RoaXMnIHR5cGUgaXMgYXZhaWxhYmxlIG9ubHkgaW4gYSBub24tc3RhdGljIG1lbWJlciBvZiBhIGNsYXNzIG9yIGludGVyZmFjZS5cIiksVGhlX2luZmVycmVkX3R5cGVfb2ZfMF9yZWZlcmVuY2VzX2FuX2luYWNjZXNzaWJsZV8xX3R5cGVfQV90eXBlX2Fubm90YXRpb25faXNfbmVjZXNzYXJ5OmEoMjUyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9pbmZlcnJlZF90eXBlX29mXzBfcmVmZXJlbmNlc19hbl9pbmFjY2Vzc2libGVfMV90eXBlX0FfdHlwZV9hbm5vdGF0aW9uX2lzX25lY2Vzc2FyeV8yNTI3XCIsXCJUaGUgaW5mZXJyZWQgdHlwZSBvZiAnezB9JyByZWZlcmVuY2VzIGFuIGluYWNjZXNzaWJsZSAnezF9JyB0eXBlLiBBIHR5cGUgYW5ub3RhdGlvbiBpcyBuZWNlc3NhcnkuXCIpLEFfbW9kdWxlX2Nhbm5vdF9oYXZlX211bHRpcGxlX2RlZmF1bHRfZXhwb3J0czphKDI1MjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX21vZHVsZV9jYW5ub3RfaGF2ZV9tdWx0aXBsZV9kZWZhdWx0X2V4cG9ydHNfMjUyOFwiLFwiQSBtb2R1bGUgY2Fubm90IGhhdmUgbXVsdGlwbGUgZGVmYXVsdCBleHBvcnRzLlwiKSxEdXBsaWNhdGVfaWRlbnRpZmllcl8wX0NvbXBpbGVyX3Jlc2VydmVzX25hbWVfMV9pbl90b3BfbGV2ZWxfc2NvcGVfb2ZfYV9tb2R1bGVfY29udGFpbmluZ19hc3luY19mdW5jdGlvbnM6YSgyNTI5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRHVwbGljYXRlX2lkZW50aWZpZXJfMF9Db21waWxlcl9yZXNlcnZlc19uYW1lXzFfaW5fdG9wX2xldmVsX3Njb3BlX29mX2FfbW9kdWxlX2NvbnRhaW5pbmdfYXN5bmNfZnVuY18yNTI5XCIsXCJEdXBsaWNhdGUgaWRlbnRpZmllciAnezB9Jy4gQ29tcGlsZXIgcmVzZXJ2ZXMgbmFtZSAnezF9JyBpbiB0b3AgbGV2ZWwgc2NvcGUgb2YgYSBtb2R1bGUgY29udGFpbmluZyBhc3luYyBmdW5jdGlvbnMuXCIpLFByb3BlcnR5XzBfaXNfaW5jb21wYXRpYmxlX3dpdGhfaW5kZXhfc2lnbmF0dXJlOmEoMjUzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfaXNfaW5jb21wYXRpYmxlX3dpdGhfaW5kZXhfc2lnbmF0dXJlXzI1MzBcIixcIlByb3BlcnR5ICd7MH0nIGlzIGluY29tcGF0aWJsZSB3aXRoIGluZGV4IHNpZ25hdHVyZS5cIiksT2JqZWN0X2lzX3Bvc3NpYmx5X251bGw6YSgyNTMxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT2JqZWN0X2lzX3Bvc3NpYmx5X251bGxfMjUzMVwiLFwiT2JqZWN0IGlzIHBvc3NpYmx5ICdudWxsJy5cIiksT2JqZWN0X2lzX3Bvc3NpYmx5X3VuZGVmaW5lZDphKDI1MzIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPYmplY3RfaXNfcG9zc2libHlfdW5kZWZpbmVkXzI1MzJcIixcIk9iamVjdCBpcyBwb3NzaWJseSAndW5kZWZpbmVkJy5cIiksT2JqZWN0X2lzX3Bvc3NpYmx5X251bGxfb3JfdW5kZWZpbmVkOmEoMjUzMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9iamVjdF9pc19wb3NzaWJseV9udWxsX29yX3VuZGVmaW5lZF8yNTMzXCIsXCJPYmplY3QgaXMgcG9zc2libHkgJ251bGwnIG9yICd1bmRlZmluZWQnLlwiKSxBX2Z1bmN0aW9uX3JldHVybmluZ19uZXZlcl9jYW5ub3RfaGF2ZV9hX3JlYWNoYWJsZV9lbmRfcG9pbnQ6YSgyNTM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9mdW5jdGlvbl9yZXR1cm5pbmdfbmV2ZXJfY2Fubm90X2hhdmVfYV9yZWFjaGFibGVfZW5kX3BvaW50XzI1MzRcIixcIkEgZnVuY3Rpb24gcmV0dXJuaW5nICduZXZlcicgY2Fubm90IGhhdmUgYSByZWFjaGFibGUgZW5kIHBvaW50LlwiKSxFbnVtX3R5cGVfMF9oYXNfbWVtYmVyc193aXRoX2luaXRpYWxpemVyc190aGF0X2FyZV9ub3RfbGl0ZXJhbHM6YSgyNTM1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRW51bV90eXBlXzBfaGFzX21lbWJlcnNfd2l0aF9pbml0aWFsaXplcnNfdGhhdF9hcmVfbm90X2xpdGVyYWxzXzI1MzVcIixcIkVudW0gdHlwZSAnezB9JyBoYXMgbWVtYmVycyB3aXRoIGluaXRpYWxpemVycyB0aGF0IGFyZSBub3QgbGl0ZXJhbHMuXCIpLFR5cGVfMF9jYW5ub3RfYmVfdXNlZF90b19pbmRleF90eXBlXzE6YSgyNTM2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2Nhbm5vdF9iZV91c2VkX3RvX2luZGV4X3R5cGVfMV8yNTM2XCIsXCJUeXBlICd7MH0nIGNhbm5vdCBiZSB1c2VkIHRvIGluZGV4IHR5cGUgJ3sxfScuXCIpLFR5cGVfMF9oYXNfbm9fbWF0Y2hpbmdfaW5kZXhfc2lnbmF0dXJlX2Zvcl90eXBlXzE6YSgyNTM3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2hhc19ub19tYXRjaGluZ19pbmRleF9zaWduYXR1cmVfZm9yX3R5cGVfMV8yNTM3XCIsXCJUeXBlICd7MH0nIGhhcyBubyBtYXRjaGluZyBpbmRleCBzaWduYXR1cmUgZm9yIHR5cGUgJ3sxfScuXCIpLFR5cGVfMF9jYW5ub3RfYmVfdXNlZF9hc19hbl9pbmRleF90eXBlOmEoMjUzOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9jYW5ub3RfYmVfdXNlZF9hc19hbl9pbmRleF90eXBlXzI1MzhcIixcIlR5cGUgJ3swfScgY2Fubm90IGJlIHVzZWQgYXMgYW4gaW5kZXggdHlwZS5cIiksQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfbm90X2FfdmFyaWFibGU6YSgyNTM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfbm90X2FfdmFyaWFibGVfMjUzOVwiLFwiQ2Fubm90IGFzc2lnbiB0byAnezB9JyBiZWNhdXNlIGl0IGlzIG5vdCBhIHZhcmlhYmxlLlwiKSxDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX3JlYWRfb25seV9wcm9wZXJ0eTphKDI1NDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX3JlYWRfb25seV9wcm9wZXJ0eV8yNTQwXCIsXCJDYW5ub3QgYXNzaWduIHRvICd7MH0nIGJlY2F1c2UgaXQgaXMgYSByZWFkLW9ubHkgcHJvcGVydHkuXCIpLEluZGV4X3NpZ25hdHVyZV9pbl90eXBlXzBfb25seV9wZXJtaXRzX3JlYWRpbmc6YSgyNTQyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW5kZXhfc2lnbmF0dXJlX2luX3R5cGVfMF9vbmx5X3Blcm1pdHNfcmVhZGluZ18yNTQyXCIsXCJJbmRleCBzaWduYXR1cmUgaW4gdHlwZSAnezB9JyBvbmx5IHBlcm1pdHMgcmVhZGluZy5cIiksRHVwbGljYXRlX2lkZW50aWZpZXJfbmV3VGFyZ2V0X0NvbXBpbGVyX3VzZXNfdmFyaWFibGVfZGVjbGFyYXRpb25fbmV3VGFyZ2V0X3RvX2NhcHR1cmVfbmV3X3RhcmdldF9tZXRhX3Byb3BlcnR5X3JlZmVyZW5jZTphKDI1NDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEdXBsaWNhdGVfaWRlbnRpZmllcl9uZXdUYXJnZXRfQ29tcGlsZXJfdXNlc192YXJpYWJsZV9kZWNsYXJhdGlvbl9uZXdUYXJnZXRfdG9fY2FwdHVyZV9uZXdfdGFyZ2V0X21lXzI1NDNcIixcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICdfbmV3VGFyZ2V0Jy4gQ29tcGlsZXIgdXNlcyB2YXJpYWJsZSBkZWNsYXJhdGlvbiAnX25ld1RhcmdldCcgdG8gY2FwdHVyZSAnbmV3LnRhcmdldCcgbWV0YS1wcm9wZXJ0eSByZWZlcmVuY2UuXCIpLEV4cHJlc3Npb25fcmVzb2x2ZXNfdG9fdmFyaWFibGVfZGVjbGFyYXRpb25fbmV3VGFyZ2V0X3RoYXRfY29tcGlsZXJfdXNlc190b19jYXB0dXJlX25ld190YXJnZXRfbWV0YV9wcm9wZXJ0eV9yZWZlcmVuY2U6YSgyNTQ0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwcmVzc2lvbl9yZXNvbHZlc190b192YXJpYWJsZV9kZWNsYXJhdGlvbl9uZXdUYXJnZXRfdGhhdF9jb21waWxlcl91c2VzX3RvX2NhcHR1cmVfbmV3X3RhcmdldF9tZXRhX18yNTQ0XCIsXCJFeHByZXNzaW9uIHJlc29sdmVzIHRvIHZhcmlhYmxlIGRlY2xhcmF0aW9uICdfbmV3VGFyZ2V0JyB0aGF0IGNvbXBpbGVyIHVzZXMgdG8gY2FwdHVyZSAnbmV3LnRhcmdldCcgbWV0YS1wcm9wZXJ0eSByZWZlcmVuY2UuXCIpLEFfbWl4aW5fY2xhc3NfbXVzdF9oYXZlX2FfY29uc3RydWN0b3Jfd2l0aF9hX3NpbmdsZV9yZXN0X3BhcmFtZXRlcl9vZl90eXBlX2FueTphKDI1NDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX21peGluX2NsYXNzX211c3RfaGF2ZV9hX2NvbnN0cnVjdG9yX3dpdGhfYV9zaW5nbGVfcmVzdF9wYXJhbWV0ZXJfb2ZfdHlwZV9hbnlfMjU0NVwiLFwiQSBtaXhpbiBjbGFzcyBtdXN0IGhhdmUgYSBjb25zdHJ1Y3RvciB3aXRoIGEgc2luZ2xlIHJlc3QgcGFyYW1ldGVyIG9mIHR5cGUgJ2FueVtdJy5cIiksVGhlX3R5cGVfcmV0dXJuZWRfYnlfdGhlXzBfbWV0aG9kX29mX2FuX2FzeW5jX2l0ZXJhdG9yX211c3RfYmVfYV9wcm9taXNlX2Zvcl9hX3R5cGVfd2l0aF9hX3ZhbHVlX3Byb3BlcnR5OmEoMjU0NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV90eXBlX3JldHVybmVkX2J5X3RoZV8wX21ldGhvZF9vZl9hbl9hc3luY19pdGVyYXRvcl9tdXN0X2JlX2FfcHJvbWlzZV9mb3JfYV90eXBlX3dpdGhfYV92YWx1ZV9wcm9fMjU0N1wiLFwiVGhlIHR5cGUgcmV0dXJuZWQgYnkgdGhlICd7MH0oKScgbWV0aG9kIG9mIGFuIGFzeW5jIGl0ZXJhdG9yIG11c3QgYmUgYSBwcm9taXNlIGZvciBhIHR5cGUgd2l0aCBhICd2YWx1ZScgcHJvcGVydHkuXCIpLFR5cGVfMF9pc19ub3RfYW5fYXJyYXlfdHlwZV9vcl9kb2VzX25vdF9oYXZlX2FfU3ltYm9sX2l0ZXJhdG9yX21ldGhvZF90aGF0X3JldHVybnNfYW5faXRlcmF0b3I6YSgyNTQ4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlX29yX2RvZXNfbm90X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9pdGVyYXRvcl8yNTQ4XCIsXCJUeXBlICd7MH0nIGlzIG5vdCBhbiBhcnJheSB0eXBlIG9yIGRvZXMgbm90IGhhdmUgYSAnW1N5bWJvbC5pdGVyYXRvcl0oKScgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpdGVyYXRvci5cIiksVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlX29yX2Ffc3RyaW5nX3R5cGVfb3JfZG9lc19ub3RfaGF2ZV9hX1N5bWJvbF9pdGVyYXRvcl9tZXRob2RfdGhhdF9yZXR1cm5zX2FuX2l0ZXJhdG9yOmEoMjU0OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9pc19ub3RfYW5fYXJyYXlfdHlwZV9vcl9hX3N0cmluZ190eXBlX29yX2RvZXNfbm90X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19fMjU0OVwiLFwiVHlwZSAnezB9JyBpcyBub3QgYW4gYXJyYXkgdHlwZSBvciBhIHN0cmluZyB0eXBlIG9yIGRvZXMgbm90IGhhdmUgYSAnW1N5bWJvbC5pdGVyYXRvcl0oKScgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpdGVyYXRvci5cIiksUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRG9feW91X25lZWRfdG9fY2hhbmdlX3lvdXJfdGFyZ2V0X2xpYnJhcnlfVHJ5X2NoYW5naW5nX3RoZV9saWJfY29tcGlsZXJfb3B0aW9uX3RvXzJfb3JfbGF0ZXI6YSgyNTUwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRG9feW91X25lZWRfdG9fY2hhbmdlX3lvdXJfdGFyZ2V0X2xpYnJhcnlfVHJ5X2NoYW5naW5nX3RoZV9saWJfY18yNTUwXCIsXCJQcm9wZXJ0eSAnezB9JyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICd7MX0nLiBEbyB5b3UgbmVlZCB0byBjaGFuZ2UgeW91ciB0YXJnZXQgbGlicmFyeT8gVHJ5IGNoYW5naW5nIHRoZSAnbGliJyBjb21waWxlciBvcHRpb24gdG8gJ3syfScgb3IgbGF0ZXIuXCIpLFByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xX0RpZF95b3VfbWVhbl8yOmEoMjU1MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xX0RpZF95b3VfbWVhbl8yXzI1NTFcIixcIlByb3BlcnR5ICd7MH0nIGRvZXMgbm90IGV4aXN0IG9uIHR5cGUgJ3sxfScuIERpZCB5b3UgbWVhbiAnezJ9Jz9cIiksQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl8xOmEoMjU1MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fMV8yNTUyXCIsXCJDYW5ub3QgZmluZCBuYW1lICd7MH0nLiBEaWQgeW91IG1lYW4gJ3sxfSc/XCIpLENvbXB1dGVkX3ZhbHVlc19hcmVfbm90X3Blcm1pdHRlZF9pbl9hbl9lbnVtX3dpdGhfc3RyaW5nX3ZhbHVlZF9tZW1iZXJzOmEoMjU1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbXB1dGVkX3ZhbHVlc19hcmVfbm90X3Blcm1pdHRlZF9pbl9hbl9lbnVtX3dpdGhfc3RyaW5nX3ZhbHVlZF9tZW1iZXJzXzI1NTNcIixcIkNvbXB1dGVkIHZhbHVlcyBhcmUgbm90IHBlcm1pdHRlZCBpbiBhbiBlbnVtIHdpdGggc3RyaW5nIHZhbHVlZCBtZW1iZXJzLlwiKSxFeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzE6YSgyNTU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwZWN0ZWRfMF9hcmd1bWVudHNfYnV0X2dvdF8xXzI1NTRcIixcIkV4cGVjdGVkIHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiKSxFeHBlY3RlZF9hdF9sZWFzdF8wX2FyZ3VtZW50c19idXRfZ290XzE6YSgyNTU1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwZWN0ZWRfYXRfbGVhc3RfMF9hcmd1bWVudHNfYnV0X2dvdF8xXzI1NTVcIixcIkV4cGVjdGVkIGF0IGxlYXN0IHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiKSxBX3NwcmVhZF9hcmd1bWVudF9tdXN0X2VpdGhlcl9oYXZlX2FfdHVwbGVfdHlwZV9vcl9iZV9wYXNzZWRfdG9fYV9yZXN0X3BhcmFtZXRlcjphKDI1NTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3NwcmVhZF9hcmd1bWVudF9tdXN0X2VpdGhlcl9oYXZlX2FfdHVwbGVfdHlwZV9vcl9iZV9wYXNzZWRfdG9fYV9yZXN0X3BhcmFtZXRlcl8yNTU2XCIsXCJBIHNwcmVhZCBhcmd1bWVudCBtdXN0IGVpdGhlciBoYXZlIGEgdHVwbGUgdHlwZSBvciBiZSBwYXNzZWQgdG8gYSByZXN0IHBhcmFtZXRlci5cIiksRXhwZWN0ZWRfMF90eXBlX2FyZ3VtZW50c19idXRfZ290XzE6YSgyNTU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwZWN0ZWRfMF90eXBlX2FyZ3VtZW50c19idXRfZ290XzFfMjU1OFwiLFwiRXhwZWN0ZWQgezB9IHR5cGUgYXJndW1lbnRzLCBidXQgZ290IHsxfS5cIiksVHlwZV8wX2hhc19ub19wcm9wZXJ0aWVzX2luX2NvbW1vbl93aXRoX3R5cGVfMTphKDI1NTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfaGFzX25vX3Byb3BlcnRpZXNfaW5fY29tbW9uX3dpdGhfdHlwZV8xXzI1NTlcIixcIlR5cGUgJ3swfScgaGFzIG5vIHByb3BlcnRpZXMgaW4gY29tbW9uIHdpdGggdHlwZSAnezF9Jy5cIiksVmFsdWVfb2ZfdHlwZV8wX2hhc19ub19wcm9wZXJ0aWVzX2luX2NvbW1vbl93aXRoX3R5cGVfMV9EaWRfeW91X21lYW5fdG9fY2FsbF9pdDphKDI1NjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJWYWx1ZV9vZl90eXBlXzBfaGFzX25vX3Byb3BlcnRpZXNfaW5fY29tbW9uX3dpdGhfdHlwZV8xX0RpZF95b3VfbWVhbl90b19jYWxsX2l0XzI1NjBcIixcIlZhbHVlIG9mIHR5cGUgJ3swfScgaGFzIG5vIHByb3BlcnRpZXMgaW4gY29tbW9uIHdpdGggdHlwZSAnezF9Jy4gRGlkIHlvdSBtZWFuIHRvIGNhbGwgaXQ/XCIpLE9iamVjdF9saXRlcmFsX21heV9vbmx5X3NwZWNpZnlfa25vd25fcHJvcGVydGllc19idXRfMF9kb2VzX25vdF9leGlzdF9pbl90eXBlXzFfRGlkX3lvdV9tZWFuX3RvX3dyaXRlXzI6YSgyNTYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT2JqZWN0X2xpdGVyYWxfbWF5X29ubHlfc3BlY2lmeV9rbm93bl9wcm9wZXJ0aWVzX2J1dF8wX2RvZXNfbm90X2V4aXN0X2luX3R5cGVfMV9EaWRfeW91X21lYW5fdG9fd3JpdF8yNTYxXCIsXCJPYmplY3QgbGl0ZXJhbCBtYXkgb25seSBzcGVjaWZ5IGtub3duIHByb3BlcnRpZXMsIGJ1dCAnezB9JyBkb2VzIG5vdCBleGlzdCBpbiB0eXBlICd7MX0nLiBEaWQgeW91IG1lYW4gdG8gd3JpdGUgJ3syfSc/XCIpLEJhc2VfY2xhc3NfZXhwcmVzc2lvbnNfY2Fubm90X3JlZmVyZW5jZV9jbGFzc190eXBlX3BhcmFtZXRlcnM6YSgyNTYyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQmFzZV9jbGFzc19leHByZXNzaW9uc19jYW5ub3RfcmVmZXJlbmNlX2NsYXNzX3R5cGVfcGFyYW1ldGVyc18yNTYyXCIsXCJCYXNlIGNsYXNzIGV4cHJlc3Npb25zIGNhbm5vdCByZWZlcmVuY2UgY2xhc3MgdHlwZSBwYXJhbWV0ZXJzLlwiKSxUaGVfY29udGFpbmluZ19mdW5jdGlvbl9vcl9tb2R1bGVfYm9keV9pc190b29fbGFyZ2VfZm9yX2NvbnRyb2xfZmxvd19hbmFseXNpczphKDI1NjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfY29udGFpbmluZ19mdW5jdGlvbl9vcl9tb2R1bGVfYm9keV9pc190b29fbGFyZ2VfZm9yX2NvbnRyb2xfZmxvd19hbmFseXNpc18yNTYzXCIsXCJUaGUgY29udGFpbmluZyBmdW5jdGlvbiBvciBtb2R1bGUgYm9keSBpcyB0b28gbGFyZ2UgZm9yIGNvbnRyb2wgZmxvdyBhbmFseXNpcy5cIiksUHJvcGVydHlfMF9oYXNfbm9faW5pdGlhbGl6ZXJfYW5kX2lzX25vdF9kZWZpbml0ZWx5X2Fzc2lnbmVkX2luX3RoZV9jb25zdHJ1Y3RvcjphKDI1NjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2hhc19ub19pbml0aWFsaXplcl9hbmRfaXNfbm90X2RlZmluaXRlbHlfYXNzaWduZWRfaW5fdGhlX2NvbnN0cnVjdG9yXzI1NjRcIixcIlByb3BlcnR5ICd7MH0nIGhhcyBubyBpbml0aWFsaXplciBhbmQgaXMgbm90IGRlZmluaXRlbHkgYXNzaWduZWQgaW4gdGhlIGNvbnN0cnVjdG9yLlwiKSxQcm9wZXJ0eV8wX2lzX3VzZWRfYmVmb3JlX2JlaW5nX2Fzc2lnbmVkOmEoMjU2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfaXNfdXNlZF9iZWZvcmVfYmVpbmdfYXNzaWduZWRfMjU2NVwiLFwiUHJvcGVydHkgJ3swfScgaXMgdXNlZCBiZWZvcmUgYmVpbmcgYXNzaWduZWQuXCIpLEFfcmVzdF9lbGVtZW50X2Nhbm5vdF9oYXZlX2FfcHJvcGVydHlfbmFtZTphKDI1NjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3Jlc3RfZWxlbWVudF9jYW5ub3RfaGF2ZV9hX3Byb3BlcnR5X25hbWVfMjU2NlwiLFwiQSByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBwcm9wZXJ0eSBuYW1lLlwiKSxFbnVtX2RlY2xhcmF0aW9uc19jYW5fb25seV9tZXJnZV93aXRoX25hbWVzcGFjZV9vcl9vdGhlcl9lbnVtX2RlY2xhcmF0aW9uczphKDI1NjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFbnVtX2RlY2xhcmF0aW9uc19jYW5fb25seV9tZXJnZV93aXRoX25hbWVzcGFjZV9vcl9vdGhlcl9lbnVtX2RlY2xhcmF0aW9uc18yNTY3XCIsXCJFbnVtIGRlY2xhcmF0aW9ucyBjYW4gb25seSBtZXJnZSB3aXRoIG5hbWVzcGFjZSBvciBvdGhlciBlbnVtIGRlY2xhcmF0aW9ucy5cIiksUHJvcGVydHlfMF9tYXlfbm90X2V4aXN0X29uX3R5cGVfMV9EaWRfeW91X21lYW5fMjphKDI1NjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX21heV9ub3RfZXhpc3Rfb25fdHlwZV8xX0RpZF95b3VfbWVhbl8yXzI1NjhcIixcIlByb3BlcnR5ICd7MH0nIG1heSBub3QgZXhpc3Qgb24gdHlwZSAnezF9Jy4gRGlkIHlvdSBtZWFuICd7Mn0nP1wiKSxDb3VsZF9ub3RfZmluZF9uYW1lXzBfRGlkX3lvdV9tZWFuXzE6YSgyNTcwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ291bGRfbm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl8xXzI1NzBcIixcIkNvdWxkIG5vdCBmaW5kIG5hbWUgJ3swfScuIERpZCB5b3UgbWVhbiAnezF9Jz9cIiksT2JqZWN0X2lzX29mX3R5cGVfdW5rbm93bjphKDI1NzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPYmplY3RfaXNfb2ZfdHlwZV91bmtub3duXzI1NzFcIixcIk9iamVjdCBpcyBvZiB0eXBlICd1bmtub3duJy5cIiksQV9yZXN0X2VsZW1lbnRfdHlwZV9tdXN0X2JlX2FuX2FycmF5X3R5cGU6YSgyNTc0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9yZXN0X2VsZW1lbnRfdHlwZV9tdXN0X2JlX2FuX2FycmF5X3R5cGVfMjU3NFwiLFwiQSByZXN0IGVsZW1lbnQgdHlwZSBtdXN0IGJlIGFuIGFycmF5IHR5cGUuXCIpLE5vX292ZXJsb2FkX2V4cGVjdHNfMF9hcmd1bWVudHNfYnV0X292ZXJsb2Fkc19kb19leGlzdF90aGF0X2V4cGVjdF9laXRoZXJfMV9vcl8yX2FyZ3VtZW50czphKDI1NzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb19vdmVybG9hZF9leHBlY3RzXzBfYXJndW1lbnRzX2J1dF9vdmVybG9hZHNfZG9fZXhpc3RfdGhhdF9leHBlY3RfZWl0aGVyXzFfb3JfMl9hcmd1bWVudHNfMjU3NVwiLFwiTm8gb3ZlcmxvYWQgZXhwZWN0cyB7MH0gYXJndW1lbnRzLCBidXQgb3ZlcmxvYWRzIGRvIGV4aXN0IHRoYXQgZXhwZWN0IGVpdGhlciB7MX0gb3IgezJ9IGFyZ3VtZW50cy5cIiksUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRGlkX3lvdV9tZWFuX3RvX2FjY2Vzc190aGVfc3RhdGljX21lbWJlcl8yX2luc3RlYWQ6YSgyNTc2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRGlkX3lvdV9tZWFuX3RvX2FjY2Vzc190aGVfc3RhdGljX21lbWJlcl8yX2luc3RlYWRfMjU3NlwiLFwiUHJvcGVydHkgJ3swfScgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSAnezF9Jy4gRGlkIHlvdSBtZWFuIHRvIGFjY2VzcyB0aGUgc3RhdGljIG1lbWJlciAnezJ9JyBpbnN0ZWFkP1wiKSxSZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2NpcmN1bGFybHlfcmVmZXJlbmNlc19pdHNlbGY6YSgyNTc3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfYW5ub3RhdGlvbl9jaXJjdWxhcmx5X3JlZmVyZW5jZXNfaXRzZWxmXzI1NzdcIixcIlJldHVybiB0eXBlIGFubm90YXRpb24gY2lyY3VsYXJseSByZWZlcmVuY2VzIGl0c2VsZi5cIiksVW51c2VkX3RzX2V4cGVjdF9lcnJvcl9kaXJlY3RpdmU6YSgyNTc4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW51c2VkX3RzX2V4cGVjdF9lcnJvcl9kaXJlY3RpdmVfMjU3OFwiLFwiVW51c2VkICdAdHMtZXhwZWN0LWVycm9yJyBkaXJlY3RpdmUuXCIpLENhbm5vdF9maW5kX25hbWVfMF9Eb195b3VfbmVlZF90b19pbnN0YWxsX3R5cGVfZGVmaW5pdGlvbnNfZm9yX25vZGVfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNobm9kZTphKDI1ODAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9faW5zdGFsbF90eXBlX2RlZmluaXRpb25zX2Zvcl9ub2RlX1RyeV9ucG1faV9zYXZlX2Rldl90eXBlc19TbGFzaG5vXzI1ODBcIixcIkNhbm5vdCBmaW5kIG5hbWUgJ3swfScuIERvIHlvdSBuZWVkIHRvIGluc3RhbGwgdHlwZSBkZWZpbml0aW9ucyBmb3Igbm9kZT8gVHJ5IGBucG0gaSAtLXNhdmUtZGV2IEB0eXBlcy9ub2RlYC5cIiksQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2luc3RhbGxfdHlwZV9kZWZpbml0aW9uc19mb3JfalF1ZXJ5X1RyeV9ucG1faV9zYXZlX2Rldl90eXBlc19TbGFzaGpxdWVyeTphKDI1ODEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9faW5zdGFsbF90eXBlX2RlZmluaXRpb25zX2Zvcl9qUXVlcnlfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoXzI1ODFcIixcIkNhbm5vdCBmaW5kIG5hbWUgJ3swfScuIERvIHlvdSBuZWVkIHRvIGluc3RhbGwgdHlwZSBkZWZpbml0aW9ucyBmb3IgalF1ZXJ5PyBUcnkgYG5wbSBpIC0tc2F2ZS1kZXYgQHR5cGVzL2pxdWVyeWAuXCIpLENhbm5vdF9maW5kX25hbWVfMF9Eb195b3VfbmVlZF90b19pbnN0YWxsX3R5cGVfZGVmaW5pdGlvbnNfZm9yX2FfdGVzdF9ydW5uZXJfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoamVzdF9vcl9ucG1faV9zYXZlX2Rldl90eXBlc19TbGFzaG1vY2hhOmEoMjU4MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX25hbWVfMF9Eb195b3VfbmVlZF90b19pbnN0YWxsX3R5cGVfZGVmaW5pdGlvbnNfZm9yX2FfdGVzdF9ydW5uZXJfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVfMjU4MlwiLFwiQ2Fubm90IGZpbmQgbmFtZSAnezB9Jy4gRG8geW91IG5lZWQgdG8gaW5zdGFsbCB0eXBlIGRlZmluaXRpb25zIGZvciBhIHRlc3QgcnVubmVyPyBUcnkgYG5wbSBpIC0tc2F2ZS1kZXYgQHR5cGVzL2plc3RgIG9yIGBucG0gaSAtLXNhdmUtZGV2IEB0eXBlcy9tb2NoYWAuXCIpLENhbm5vdF9maW5kX25hbWVfMF9Eb195b3VfbmVlZF90b19jaGFuZ2VfeW91cl90YXJnZXRfbGlicmFyeV9UcnlfY2hhbmdpbmdfdGhlX2xpYl9jb21waWxlcl9vcHRpb25fdG9fMV9vcl9sYXRlcjphKDI1ODMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9fY2hhbmdlX3lvdXJfdGFyZ2V0X2xpYnJhcnlfVHJ5X2NoYW5naW5nX3RoZV9saWJfY29tcGlsZXJfb3B0aW9uX3RvXzI1ODNcIixcIkNhbm5vdCBmaW5kIG5hbWUgJ3swfScuIERvIHlvdSBuZWVkIHRvIGNoYW5nZSB5b3VyIHRhcmdldCBsaWJyYXJ5PyBUcnkgY2hhbmdpbmcgdGhlICdsaWInIGNvbXBpbGVyIG9wdGlvbiB0byAnezF9JyBvciBsYXRlci5cIiksQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2NoYW5nZV95b3VyX3RhcmdldF9saWJyYXJ5X1RyeV9jaGFuZ2luZ190aGVfbGliX2NvbXBpbGVyX29wdGlvbl90b19pbmNsdWRlX2RvbTphKDI1ODQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9fY2hhbmdlX3lvdXJfdGFyZ2V0X2xpYnJhcnlfVHJ5X2NoYW5naW5nX3RoZV9saWJfY29tcGlsZXJfb3B0aW9uX3RvXzI1ODRcIixcIkNhbm5vdCBmaW5kIG5hbWUgJ3swfScuIERvIHlvdSBuZWVkIHRvIGNoYW5nZSB5b3VyIHRhcmdldCBsaWJyYXJ5PyBUcnkgY2hhbmdpbmcgdGhlICdsaWInIGNvbXBpbGVyIG9wdGlvbiB0byBpbmNsdWRlICdkb20nLlwiKSxfMF9vbmx5X3JlZmVyc190b19hX3R5cGVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV92YWx1ZV9oZXJlX0RvX3lvdV9uZWVkX3RvX2NoYW5nZV95b3VyX3RhcmdldF9saWJyYXJ5X1RyeV9jaGFuZ2luZ190aGVfbGliX2NvbXBpbGVyX29wdGlvbl90b19lczIwMTVfb3JfbGF0ZXI6YSgyNTg1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfdmFsdWVfaGVyZV9Eb195b3VfbmVlZF90b19jaGFuZ2VfeW91cl90YXJnZXRfbGlicmFyeV8yNTg1XCIsXCInezB9JyBvbmx5IHJlZmVycyB0byBhIHR5cGUsIGJ1dCBpcyBiZWluZyB1c2VkIGFzIGEgdmFsdWUgaGVyZS4gRG8geW91IG5lZWQgdG8gY2hhbmdlIHlvdXIgdGFyZ2V0IGxpYnJhcnk/IFRyeSBjaGFuZ2luZyB0aGUgJ2xpYicgY29tcGlsZXIgb3B0aW9uIHRvIGVzMjAxNSBvciBsYXRlci5cIiksQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYV9jb25zdGFudDphKDI1ODgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX2NvbnN0YW50XzI1ODhcIixcIkNhbm5vdCBhc3NpZ24gdG8gJ3swfScgYmVjYXVzZSBpdCBpcyBhIGNvbnN0YW50LlwiKSxUeXBlX2luc3RhbnRpYXRpb25faXNfZXhjZXNzaXZlbHlfZGVlcF9hbmRfcG9zc2libHlfaW5maW5pdGU6YSgyNTg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9pbnN0YW50aWF0aW9uX2lzX2V4Y2Vzc2l2ZWx5X2RlZXBfYW5kX3Bvc3NpYmx5X2luZmluaXRlXzI1ODlcIixcIlR5cGUgaW5zdGFudGlhdGlvbiBpcyBleGNlc3NpdmVseSBkZWVwIGFuZCBwb3NzaWJseSBpbmZpbml0ZS5cIiksRXhwcmVzc2lvbl9wcm9kdWNlc19hX3VuaW9uX3R5cGVfdGhhdF9pc190b29fY29tcGxleF90b19yZXByZXNlbnQ6YSgyNTkwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwcmVzc2lvbl9wcm9kdWNlc19hX3VuaW9uX3R5cGVfdGhhdF9pc190b29fY29tcGxleF90b19yZXByZXNlbnRfMjU5MFwiLFwiRXhwcmVzc2lvbiBwcm9kdWNlcyBhIHVuaW9uIHR5cGUgdGhhdCBpcyB0b28gY29tcGxleCB0byByZXByZXNlbnQuXCIpLENhbm5vdF9maW5kX25hbWVfMF9Eb195b3VfbmVlZF90b19pbnN0YWxsX3R5cGVfZGVmaW5pdGlvbnNfZm9yX25vZGVfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNobm9kZV9hbmRfdGhlbl9hZGRfbm9kZV90b190aGVfdHlwZXNfZmllbGRfaW5feW91cl90c2NvbmZpZzphKDI1OTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9faW5zdGFsbF90eXBlX2RlZmluaXRpb25zX2Zvcl9ub2RlX1RyeV9ucG1faV9zYXZlX2Rldl90eXBlc19TbGFzaG5vXzI1OTFcIixcIkNhbm5vdCBmaW5kIG5hbWUgJ3swfScuIERvIHlvdSBuZWVkIHRvIGluc3RhbGwgdHlwZSBkZWZpbml0aW9ucyBmb3Igbm9kZT8gVHJ5IGBucG0gaSAtLXNhdmUtZGV2IEB0eXBlcy9ub2RlYCBhbmQgdGhlbiBhZGQgJ25vZGUnIHRvIHRoZSB0eXBlcyBmaWVsZCBpbiB5b3VyIHRzY29uZmlnLlwiKSxDYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9faW5zdGFsbF90eXBlX2RlZmluaXRpb25zX2Zvcl9qUXVlcnlfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoanF1ZXJ5X2FuZF90aGVuX2FkZF9qcXVlcnlfdG9fdGhlX3R5cGVzX2ZpZWxkX2luX3lvdXJfdHNjb25maWc6YSgyNTkyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2luc3RhbGxfdHlwZV9kZWZpbml0aW9uc19mb3JfalF1ZXJ5X1RyeV9ucG1faV9zYXZlX2Rldl90eXBlc19TbGFzaF8yNTkyXCIsXCJDYW5ub3QgZmluZCBuYW1lICd7MH0nLiBEbyB5b3UgbmVlZCB0byBpbnN0YWxsIHR5cGUgZGVmaW5pdGlvbnMgZm9yIGpRdWVyeT8gVHJ5IGBucG0gaSAtLXNhdmUtZGV2IEB0eXBlcy9qcXVlcnlgIGFuZCB0aGVuIGFkZCAnanF1ZXJ5JyB0byB0aGUgdHlwZXMgZmllbGQgaW4geW91ciB0c2NvbmZpZy5cIiksQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2luc3RhbGxfdHlwZV9kZWZpbml0aW9uc19mb3JfYV90ZXN0X3J1bm5lcl9UcnlfbnBtX2lfc2F2ZV9kZXZfdHlwZXNfU2xhc2hqZXN0X29yX25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNobW9jaGFfYW5kX3RoZW5fYWRkX2plc3Rfb3JfbW9jaGFfdG9fdGhlX3R5cGVzX2ZpZWxkX2luX3lvdXJfdHNjb25maWc6YSgyNTkzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2luc3RhbGxfdHlwZV9kZWZpbml0aW9uc19mb3JfYV90ZXN0X3J1bm5lcl9UcnlfbnBtX2lfc2F2ZV9kZXZfdHlwZV8yNTkzXCIsXCJDYW5ub3QgZmluZCBuYW1lICd7MH0nLiBEbyB5b3UgbmVlZCB0byBpbnN0YWxsIHR5cGUgZGVmaW5pdGlvbnMgZm9yIGEgdGVzdCBydW5uZXI/IFRyeSBgbnBtIGkgLS1zYXZlLWRldiBAdHlwZXMvamVzdGAgb3IgYG5wbSBpIC0tc2F2ZS1kZXYgQHR5cGVzL21vY2hhYCBhbmQgdGhlbiBhZGQgJ2plc3QnIG9yICdtb2NoYScgdG8gdGhlIHR5cGVzIGZpZWxkIGluIHlvdXIgdHNjb25maWcuXCIpLFRoaXNfbW9kdWxlX2lzX2RlY2xhcmVkX3dpdGhfdXNpbmdfZXhwb3J0X2FuZF9jYW5fb25seV9iZV91c2VkX3dpdGhfYV9kZWZhdWx0X2ltcG9ydF93aGVuX3VzaW5nX3RoZV8wX2ZsYWc6YSgyNTk0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19tb2R1bGVfaXNfZGVjbGFyZWRfd2l0aF91c2luZ19leHBvcnRfYW5kX2Nhbl9vbmx5X2JlX3VzZWRfd2l0aF9hX2RlZmF1bHRfaW1wb3J0X3doZW5fdXNpbmdfdGhlX18yNTk0XCIsXCJUaGlzIG1vZHVsZSBpcyBkZWNsYXJlZCB3aXRoIHVzaW5nICdleHBvcnQgPScsIGFuZCBjYW4gb25seSBiZSB1c2VkIHdpdGggYSBkZWZhdWx0IGltcG9ydCB3aGVuIHVzaW5nIHRoZSAnezB9JyBmbGFnLlwiKSxfMF9jYW5fb25seV9iZV9pbXBvcnRlZF9ieV91c2luZ19hX2RlZmF1bHRfaW1wb3J0OmEoMjU5NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2Nhbl9vbmx5X2JlX2ltcG9ydGVkX2J5X3VzaW5nX2FfZGVmYXVsdF9pbXBvcnRfMjU5NVwiLFwiJ3swfScgY2FuIG9ubHkgYmUgaW1wb3J0ZWQgYnkgdXNpbmcgYSBkZWZhdWx0IGltcG9ydC5cIiksXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzaW5nX2FfZGVmYXVsdF9pbXBvcnQ6YSgyNTk2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzaW5nX2FfZGVmYXVsdF9pbXBvcnRfMjU5NlwiLFwiJ3swfScgY2FuIG9ubHkgYmUgaW1wb3J0ZWQgYnkgdHVybmluZyBvbiB0aGUgJ2VzTW9kdWxlSW50ZXJvcCcgZmxhZyBhbmQgdXNpbmcgYSBkZWZhdWx0IGltcG9ydC5cIiksXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdXNpbmdfYV9yZXF1aXJlX2NhbGxfb3JfYnlfdXNpbmdfYV9kZWZhdWx0X2ltcG9ydDphKDI1OTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9jYW5fb25seV9iZV9pbXBvcnRlZF9ieV91c2luZ19hX3JlcXVpcmVfY2FsbF9vcl9ieV91c2luZ19hX2RlZmF1bHRfaW1wb3J0XzI1OTdcIixcIid7MH0nIGNhbiBvbmx5IGJlIGltcG9ydGVkIGJ5IHVzaW5nIGEgJ3JlcXVpcmUnIGNhbGwgb3IgYnkgdXNpbmcgYSBkZWZhdWx0IGltcG9ydC5cIiksXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdXNpbmdfYV9yZXF1aXJlX2NhbGxfb3JfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzaW5nX2FfZGVmYXVsdF9pbXBvcnQ6YSgyNTk4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdXNpbmdfYV9yZXF1aXJlX2NhbGxfb3JfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzaW5nX18yNTk4XCIsXCInezB9JyBjYW4gb25seSBiZSBpbXBvcnRlZCBieSB1c2luZyBhICdyZXF1aXJlJyBjYWxsIG9yIGJ5IHR1cm5pbmcgb24gdGhlICdlc01vZHVsZUludGVyb3AnIGZsYWcgYW5kIHVzaW5nIGEgZGVmYXVsdCBpbXBvcnQuXCIpLEpTWF9lbGVtZW50X2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2JlY2F1c2VfdGhlX2dsb2JhbF90eXBlX0pTWF9FbGVtZW50X2RvZXNfbm90X2V4aXN0OmEoMjYwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkpTWF9lbGVtZW50X2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2JlY2F1c2VfdGhlX2dsb2JhbF90eXBlX0pTWF9FbGVtZW50X2RvZXNfbm90X2V4aXN0XzI2MDJcIixcIkpTWCBlbGVtZW50IGltcGxpY2l0bHkgaGFzIHR5cGUgJ2FueScgYmVjYXVzZSB0aGUgZ2xvYmFsIHR5cGUgJ0pTWC5FbGVtZW50JyBkb2VzIG5vdCBleGlzdC5cIiksUHJvcGVydHlfMF9pbl90eXBlXzFfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8yOmEoMjYwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfaW5fdHlwZV8xX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMl8yNjAzXCIsXCJQcm9wZXJ0eSAnezB9JyBpbiB0eXBlICd7MX0nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ3syfScuXCIpLEpTWF9lbGVtZW50X3R5cGVfMF9kb2VzX25vdF9oYXZlX2FueV9jb25zdHJ1Y3Rfb3JfY2FsbF9zaWduYXR1cmVzOmEoMjYwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkpTWF9lbGVtZW50X3R5cGVfMF9kb2VzX25vdF9oYXZlX2FueV9jb25zdHJ1Y3Rfb3JfY2FsbF9zaWduYXR1cmVzXzI2MDRcIixcIkpTWCBlbGVtZW50IHR5cGUgJ3swfScgZG9lcyBub3QgaGF2ZSBhbnkgY29uc3RydWN0IG9yIGNhbGwgc2lnbmF0dXJlcy5cIiksUHJvcGVydHlfMF9vZl9KU1hfc3ByZWFkX2F0dHJpYnV0ZV9pc19ub3RfYXNzaWduYWJsZV90b190YXJnZXRfcHJvcGVydHk6YSgyNjA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9vZl9KU1hfc3ByZWFkX2F0dHJpYnV0ZV9pc19ub3RfYXNzaWduYWJsZV90b190YXJnZXRfcHJvcGVydHlfMjYwNlwiLFwiUHJvcGVydHkgJ3swfScgb2YgSlNYIHNwcmVhZCBhdHRyaWJ1dGUgaXMgbm90IGFzc2lnbmFibGUgdG8gdGFyZ2V0IHByb3BlcnR5LlwiKSxKU1hfZWxlbWVudF9jbGFzc19kb2VzX25vdF9zdXBwb3J0X2F0dHJpYnV0ZXNfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX2FfMF9wcm9wZXJ0eTphKDI2MDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJKU1hfZWxlbWVudF9jbGFzc19kb2VzX25vdF9zdXBwb3J0X2F0dHJpYnV0ZXNfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX2FfMF9wcm9wZXJ0eV8yNjA3XCIsXCJKU1ggZWxlbWVudCBjbGFzcyBkb2VzIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZXMgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgJ3swfScgcHJvcGVydHkuXCIpLFRoZV9nbG9iYWxfdHlwZV9KU1hfMF9tYXlfbm90X2hhdmVfbW9yZV90aGFuX29uZV9wcm9wZXJ0eTphKDI2MDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfZ2xvYmFsX3R5cGVfSlNYXzBfbWF5X25vdF9oYXZlX21vcmVfdGhhbl9vbmVfcHJvcGVydHlfMjYwOFwiLFwiVGhlIGdsb2JhbCB0eXBlICdKU1guezB9JyBtYXkgbm90IGhhdmUgbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cIiksSlNYX3NwcmVhZF9jaGlsZF9tdXN0X2JlX2FuX2FycmF5X3R5cGU6YSgyNjA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSlNYX3NwcmVhZF9jaGlsZF9tdXN0X2JlX2FuX2FycmF5X3R5cGVfMjYwOVwiLFwiSlNYIHNwcmVhZCBjaGlsZCBtdXN0IGJlIGFuIGFycmF5IHR5cGUuXCIpLF8wX2lzX2RlZmluZWRfYXNfYW5fYWNjZXNzb3JfaW5fY2xhc3NfMV9idXRfaXNfb3ZlcnJpZGRlbl9oZXJlX2luXzJfYXNfYW5faW5zdGFuY2VfcHJvcGVydHk6YSgyNjEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfaXNfZGVmaW5lZF9hc19hbl9hY2Nlc3Nvcl9pbl9jbGFzc18xX2J1dF9pc19vdmVycmlkZGVuX2hlcmVfaW5fMl9hc19hbl9pbnN0YW5jZV9wcm9wZXJ0eV8yNjEwXCIsXCInezB9JyBpcyBkZWZpbmVkIGFzIGFuIGFjY2Vzc29yIGluIGNsYXNzICd7MX0nLCBidXQgaXMgb3ZlcnJpZGRlbiBoZXJlIGluICd7Mn0nIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5LlwiKSxfMF9pc19kZWZpbmVkX2FzX2FfcHJvcGVydHlfaW5fY2xhc3NfMV9idXRfaXNfb3ZlcnJpZGRlbl9oZXJlX2luXzJfYXNfYW5fYWNjZXNzb3I6YSgyNjExLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfaXNfZGVmaW5lZF9hc19hX3Byb3BlcnR5X2luX2NsYXNzXzFfYnV0X2lzX292ZXJyaWRkZW5faGVyZV9pbl8yX2FzX2FuX2FjY2Vzc29yXzI2MTFcIixcIid7MH0nIGlzIGRlZmluZWQgYXMgYSBwcm9wZXJ0eSBpbiBjbGFzcyAnezF9JywgYnV0IGlzIG92ZXJyaWRkZW4gaGVyZSBpbiAnezJ9JyBhcyBhbiBhY2Nlc3Nvci5cIiksUHJvcGVydHlfMF93aWxsX292ZXJ3cml0ZV90aGVfYmFzZV9wcm9wZXJ0eV9pbl8xX0lmX3RoaXNfaXNfaW50ZW50aW9uYWxfYWRkX2FuX2luaXRpYWxpemVyX090aGVyd2lzZV9hZGRfYV9kZWNsYXJlX21vZGlmaWVyX29yX3JlbW92ZV90aGVfcmVkdW5kYW50X2RlY2xhcmF0aW9uOmEoMjYxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfd2lsbF9vdmVyd3JpdGVfdGhlX2Jhc2VfcHJvcGVydHlfaW5fMV9JZl90aGlzX2lzX2ludGVudGlvbmFsX2FkZF9hbl9pbml0aWFsaXplcl9PdGhlcndpc2VfMjYxMlwiLFwiUHJvcGVydHkgJ3swfScgd2lsbCBvdmVyd3JpdGUgdGhlIGJhc2UgcHJvcGVydHkgaW4gJ3sxfScuIElmIHRoaXMgaXMgaW50ZW50aW9uYWwsIGFkZCBhbiBpbml0aWFsaXplci4gT3RoZXJ3aXNlLCBhZGQgYSAnZGVjbGFyZScgbW9kaWZpZXIgb3IgcmVtb3ZlIHRoZSByZWR1bmRhbnQgZGVjbGFyYXRpb24uXCIpLE1vZHVsZV8wX2hhc19ub19kZWZhdWx0X2V4cG9ydF9EaWRfeW91X21lYW5fdG9fdXNlX2ltcG9ydF8xX2Zyb21fMF9pbnN0ZWFkOmEoMjYxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1vZHVsZV8wX2hhc19ub19kZWZhdWx0X2V4cG9ydF9EaWRfeW91X21lYW5fdG9fdXNlX2ltcG9ydF8xX2Zyb21fMF9pbnN0ZWFkXzI2MTNcIixcIk1vZHVsZSAnezB9JyBoYXMgbm8gZGVmYXVsdCBleHBvcnQuIERpZCB5b3UgbWVhbiB0byB1c2UgJ2ltcG9ydCB7IHsxfSB9IGZyb20gezB9JyBpbnN0ZWFkP1wiKSxNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzFfRGlkX3lvdV9tZWFuX3RvX3VzZV9pbXBvcnRfMV9mcm9tXzBfaW5zdGVhZDphKDI2MTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzFfRGlkX3lvdV9tZWFuX3RvX3VzZV9pbXBvcnRfMV9mcm9tXzBfaW5zdGVhZF8yNjE0XCIsXCJNb2R1bGUgJ3swfScgaGFzIG5vIGV4cG9ydGVkIG1lbWJlciAnezF9Jy4gRGlkIHlvdSBtZWFuIHRvIHVzZSAnaW1wb3J0IHsxfSBmcm9tIHswfScgaW5zdGVhZD9cIiksVHlwZV9vZl9wcm9wZXJ0eV8wX2NpcmN1bGFybHlfcmVmZXJlbmNlc19pdHNlbGZfaW5fbWFwcGVkX3R5cGVfMTphKDI2MTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX29mX3Byb3BlcnR5XzBfY2lyY3VsYXJseV9yZWZlcmVuY2VzX2l0c2VsZl9pbl9tYXBwZWRfdHlwZV8xXzI2MTVcIixcIlR5cGUgb2YgcHJvcGVydHkgJ3swfScgY2lyY3VsYXJseSByZWZlcmVuY2VzIGl0c2VsZiBpbiBtYXBwZWQgdHlwZSAnezF9Jy5cIiksXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdXNpbmdfaW1wb3J0XzFfcmVxdWlyZV8yX29yX2FfZGVmYXVsdF9pbXBvcnQ6YSgyNjE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdXNpbmdfaW1wb3J0XzFfcmVxdWlyZV8yX29yX2FfZGVmYXVsdF9pbXBvcnRfMjYxNlwiLFwiJ3swfScgY2FuIG9ubHkgYmUgaW1wb3J0ZWQgYnkgdXNpbmcgJ2ltcG9ydCB7MX0gPSByZXF1aXJlKHsyfSknIG9yIGEgZGVmYXVsdCBpbXBvcnQuXCIpLF8wX2Nhbl9vbmx5X2JlX2ltcG9ydGVkX2J5X3VzaW5nX2ltcG9ydF8xX3JlcXVpcmVfMl9vcl9ieV90dXJuaW5nX29uX3RoZV9lc01vZHVsZUludGVyb3BfZmxhZ19hbmRfdXNpbmdfYV9kZWZhdWx0X2ltcG9ydDphKDI2MTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9jYW5fb25seV9iZV9pbXBvcnRlZF9ieV91c2luZ19pbXBvcnRfMV9yZXF1aXJlXzJfb3JfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzXzI2MTdcIixcIid7MH0nIGNhbiBvbmx5IGJlIGltcG9ydGVkIGJ5IHVzaW5nICdpbXBvcnQgezF9ID0gcmVxdWlyZSh7Mn0pJyBvciBieSB0dXJuaW5nIG9uIHRoZSAnZXNNb2R1bGVJbnRlcm9wJyBmbGFnIGFuZCB1c2luZyBhIGRlZmF1bHQgaW1wb3J0LlwiKSxTb3VyY2VfaGFzXzBfZWxlbWVudF9zX2J1dF90YXJnZXRfcmVxdWlyZXNfMTphKDI2MTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTb3VyY2VfaGFzXzBfZWxlbWVudF9zX2J1dF90YXJnZXRfcmVxdWlyZXNfMV8yNjE4XCIsXCJTb3VyY2UgaGFzIHswfSBlbGVtZW50KHMpIGJ1dCB0YXJnZXQgcmVxdWlyZXMgezF9LlwiKSxTb3VyY2VfaGFzXzBfZWxlbWVudF9zX2J1dF90YXJnZXRfYWxsb3dzX29ubHlfMTphKDI2MTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTb3VyY2VfaGFzXzBfZWxlbWVudF9zX2J1dF90YXJnZXRfYWxsb3dzX29ubHlfMV8yNjE5XCIsXCJTb3VyY2UgaGFzIHswfSBlbGVtZW50KHMpIGJ1dCB0YXJnZXQgYWxsb3dzIG9ubHkgezF9LlwiKSxUYXJnZXRfcmVxdWlyZXNfMF9lbGVtZW50X3NfYnV0X3NvdXJjZV9tYXlfaGF2ZV9mZXdlcjphKDI2MjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUYXJnZXRfcmVxdWlyZXNfMF9lbGVtZW50X3NfYnV0X3NvdXJjZV9tYXlfaGF2ZV9mZXdlcl8yNjIwXCIsXCJUYXJnZXQgcmVxdWlyZXMgezB9IGVsZW1lbnQocykgYnV0IHNvdXJjZSBtYXkgaGF2ZSBmZXdlci5cIiksVGFyZ2V0X2FsbG93c19vbmx5XzBfZWxlbWVudF9zX2J1dF9zb3VyY2VfbWF5X2hhdmVfbW9yZTphKDI2MjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUYXJnZXRfYWxsb3dzX29ubHlfMF9lbGVtZW50X3NfYnV0X3NvdXJjZV9tYXlfaGF2ZV9tb3JlXzI2MjFcIixcIlRhcmdldCBhbGxvd3Mgb25seSB7MH0gZWxlbWVudChzKSBidXQgc291cmNlIG1heSBoYXZlIG1vcmUuXCIpLFNvdXJjZV9wcm92aWRlc19ub19tYXRjaF9mb3JfcmVxdWlyZWRfZWxlbWVudF9hdF9wb3NpdGlvbl8wX2luX3RhcmdldDphKDI2MjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTb3VyY2VfcHJvdmlkZXNfbm9fbWF0Y2hfZm9yX3JlcXVpcmVkX2VsZW1lbnRfYXRfcG9zaXRpb25fMF9pbl90YXJnZXRfMjYyM1wiLFwiU291cmNlIHByb3ZpZGVzIG5vIG1hdGNoIGZvciByZXF1aXJlZCBlbGVtZW50IGF0IHBvc2l0aW9uIHswfSBpbiB0YXJnZXQuXCIpLFNvdXJjZV9wcm92aWRlc19ub19tYXRjaF9mb3JfdmFyaWFkaWNfZWxlbWVudF9hdF9wb3NpdGlvbl8wX2luX3RhcmdldDphKDI2MjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTb3VyY2VfcHJvdmlkZXNfbm9fbWF0Y2hfZm9yX3ZhcmlhZGljX2VsZW1lbnRfYXRfcG9zaXRpb25fMF9pbl90YXJnZXRfMjYyNFwiLFwiU291cmNlIHByb3ZpZGVzIG5vIG1hdGNoIGZvciB2YXJpYWRpYyBlbGVtZW50IGF0IHBvc2l0aW9uIHswfSBpbiB0YXJnZXQuXCIpLFZhcmlhZGljX2VsZW1lbnRfYXRfcG9zaXRpb25fMF9pbl9zb3VyY2VfZG9lc19ub3RfbWF0Y2hfZWxlbWVudF9hdF9wb3NpdGlvbl8xX2luX3RhcmdldDphKDI2MjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJWYXJpYWRpY19lbGVtZW50X2F0X3Bvc2l0aW9uXzBfaW5fc291cmNlX2RvZXNfbm90X21hdGNoX2VsZW1lbnRfYXRfcG9zaXRpb25fMV9pbl90YXJnZXRfMjYyNVwiLFwiVmFyaWFkaWMgZWxlbWVudCBhdCBwb3NpdGlvbiB7MH0gaW4gc291cmNlIGRvZXMgbm90IG1hdGNoIGVsZW1lbnQgYXQgcG9zaXRpb24gezF9IGluIHRhcmdldC5cIiksVHlwZV9hdF9wb3NpdGlvbl8wX2luX3NvdXJjZV9pc19ub3RfY29tcGF0aWJsZV93aXRoX3R5cGVfYXRfcG9zaXRpb25fMV9pbl90YXJnZXQ6YSgyNjI2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9hdF9wb3NpdGlvbl8wX2luX3NvdXJjZV9pc19ub3RfY29tcGF0aWJsZV93aXRoX3R5cGVfYXRfcG9zaXRpb25fMV9pbl90YXJnZXRfMjYyNlwiLFwiVHlwZSBhdCBwb3NpdGlvbiB7MH0gaW4gc291cmNlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdHlwZSBhdCBwb3NpdGlvbiB7MX0gaW4gdGFyZ2V0LlwiKSxUeXBlX2F0X3Bvc2l0aW9uc18wX3Rocm91Z2hfMV9pbl9zb3VyY2VfaXNfbm90X2NvbXBhdGlibGVfd2l0aF90eXBlX2F0X3Bvc2l0aW9uXzJfaW5fdGFyZ2V0OmEoMjYyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfYXRfcG9zaXRpb25zXzBfdGhyb3VnaF8xX2luX3NvdXJjZV9pc19ub3RfY29tcGF0aWJsZV93aXRoX3R5cGVfYXRfcG9zaXRpb25fMl9pbl90YXJnZXRfMjYyN1wiLFwiVHlwZSBhdCBwb3NpdGlvbnMgezB9IHRocm91Z2ggezF9IGluIHNvdXJjZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHR5cGUgYXQgcG9zaXRpb24gezJ9IGluIHRhcmdldC5cIiksQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYW5fZW51bTphKDI2MjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hbl9lbnVtXzI2MjhcIixcIkNhbm5vdCBhc3NpZ24gdG8gJ3swfScgYmVjYXVzZSBpdCBpcyBhbiBlbnVtLlwiKSxDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX2NsYXNzOmEoMjYyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9hc3NpZ25fdG9fMF9iZWNhdXNlX2l0X2lzX2FfY2xhc3NfMjYyOVwiLFwiQ2Fubm90IGFzc2lnbiB0byAnezB9JyBiZWNhdXNlIGl0IGlzIGEgY2xhc3MuXCIpLENhbm5vdF9hc3NpZ25fdG9fMF9iZWNhdXNlX2l0X2lzX2FfZnVuY3Rpb246YSgyNjMwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYV9mdW5jdGlvbl8yNjMwXCIsXCJDYW5ub3QgYXNzaWduIHRvICd7MH0nIGJlY2F1c2UgaXQgaXMgYSBmdW5jdGlvbi5cIiksQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYV9uYW1lc3BhY2U6YSgyNjMxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYV9uYW1lc3BhY2VfMjYzMVwiLFwiQ2Fubm90IGFzc2lnbiB0byAnezB9JyBiZWNhdXNlIGl0IGlzIGEgbmFtZXNwYWNlLlwiKSxDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hbl9pbXBvcnQ6YSgyNjMyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYW5faW1wb3J0XzI2MzJcIixcIkNhbm5vdCBhc3NpZ24gdG8gJ3swfScgYmVjYXVzZSBpdCBpcyBhbiBpbXBvcnQuXCIpLEpTWF9wcm9wZXJ0eV9hY2Nlc3NfZXhwcmVzc2lvbnNfY2Fubm90X2luY2x1ZGVfSlNYX25hbWVzcGFjZV9uYW1lczphKDI2MzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJKU1hfcHJvcGVydHlfYWNjZXNzX2V4cHJlc3Npb25zX2Nhbm5vdF9pbmNsdWRlX0pTWF9uYW1lc3BhY2VfbmFtZXNfMjYzM1wiLFwiSlNYIHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9ucyBjYW5ub3QgaW5jbHVkZSBKU1ggbmFtZXNwYWNlIG5hbWVzXCIpLF8wX2luZGV4X3NpZ25hdHVyZXNfYXJlX2luY29tcGF0aWJsZTphKDI2MzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9pbmRleF9zaWduYXR1cmVzX2FyZV9pbmNvbXBhdGlibGVfMjYzNFwiLFwiJ3swfScgaW5kZXggc2lnbmF0dXJlcyBhcmUgaW5jb21wYXRpYmxlLlwiKSxUeXBlXzBfaGFzX25vX3NpZ25hdHVyZXNfZm9yX3doaWNoX3RoZV90eXBlX2FyZ3VtZW50X2xpc3RfaXNfYXBwbGljYWJsZTphKDI2MzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfaGFzX25vX3NpZ25hdHVyZXNfZm9yX3doaWNoX3RoZV90eXBlX2FyZ3VtZW50X2xpc3RfaXNfYXBwbGljYWJsZV8yNjM1XCIsXCJUeXBlICd7MH0nIGhhcyBubyBzaWduYXR1cmVzIGZvciB3aGljaCB0aGUgdHlwZSBhcmd1bWVudCBsaXN0IGlzIGFwcGxpY2FibGUuXCIpLFR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzFfYXNfaW1wbGllZF9ieV92YXJpYW5jZV9hbm5vdGF0aW9uOmEoMjYzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzFfYXNfaW1wbGllZF9ieV92YXJpYW5jZV9hbm5vdGF0aW9uXzI2MzZcIixcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9JyBhcyBpbXBsaWVkIGJ5IHZhcmlhbmNlIGFubm90YXRpb24uXCIpLFZhcmlhbmNlX2Fubm90YXRpb25zX2FyZV9vbmx5X3N1cHBvcnRlZF9pbl90eXBlX2FsaWFzZXNfZm9yX29iamVjdF9mdW5jdGlvbl9jb25zdHJ1Y3Rvcl9hbmRfbWFwcGVkX3R5cGVzOmEoMjYzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlZhcmlhbmNlX2Fubm90YXRpb25zX2FyZV9vbmx5X3N1cHBvcnRlZF9pbl90eXBlX2FsaWFzZXNfZm9yX29iamVjdF9mdW5jdGlvbl9jb25zdHJ1Y3Rvcl9hbmRfbWFwcGVkX3RfMjYzN1wiLFwiVmFyaWFuY2UgYW5ub3RhdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHR5cGUgYWxpYXNlcyBmb3Igb2JqZWN0LCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIGFuZCBtYXBwZWQgdHlwZXMuXCIpLENhbm5vdF9hdWdtZW50X21vZHVsZV8wX3dpdGhfdmFsdWVfZXhwb3J0c19iZWNhdXNlX2l0X3Jlc29sdmVzX3RvX2Ffbm9uX21vZHVsZV9lbnRpdHk6YSgyNjQ5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2F1Z21lbnRfbW9kdWxlXzBfd2l0aF92YWx1ZV9leHBvcnRzX2JlY2F1c2VfaXRfcmVzb2x2ZXNfdG9fYV9ub25fbW9kdWxlX2VudGl0eV8yNjQ5XCIsXCJDYW5ub3QgYXVnbWVudCBtb2R1bGUgJ3swfScgd2l0aCB2YWx1ZSBleHBvcnRzIGJlY2F1c2UgaXQgcmVzb2x2ZXMgdG8gYSBub24tbW9kdWxlIGVudGl0eS5cIiksQV9tZW1iZXJfaW5pdGlhbGl6ZXJfaW5fYV9lbnVtX2RlY2xhcmF0aW9uX2Nhbm5vdF9yZWZlcmVuY2VfbWVtYmVyc19kZWNsYXJlZF9hZnRlcl9pdF9pbmNsdWRpbmdfbWVtYmVyc19kZWZpbmVkX2luX290aGVyX2VudW1zOmEoMjY1MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfbWVtYmVyX2luaXRpYWxpemVyX2luX2FfZW51bV9kZWNsYXJhdGlvbl9jYW5ub3RfcmVmZXJlbmNlX21lbWJlcnNfZGVjbGFyZWRfYWZ0ZXJfaXRfaW5jbHVkaW5nX21lbWJfMjY1MVwiLFwiQSBtZW1iZXIgaW5pdGlhbGl6ZXIgaW4gYSBlbnVtIGRlY2xhcmF0aW9uIGNhbm5vdCByZWZlcmVuY2UgbWVtYmVycyBkZWNsYXJlZCBhZnRlciBpdCwgaW5jbHVkaW5nIG1lbWJlcnMgZGVmaW5lZCBpbiBvdGhlciBlbnVtcy5cIiksTWVyZ2VkX2RlY2xhcmF0aW9uXzBfY2Fubm90X2luY2x1ZGVfYV9kZWZhdWx0X2V4cG9ydF9kZWNsYXJhdGlvbl9Db25zaWRlcl9hZGRpbmdfYV9zZXBhcmF0ZV9leHBvcnRfZGVmYXVsdF8wX2RlY2xhcmF0aW9uX2luc3RlYWQ6YSgyNjUyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTWVyZ2VkX2RlY2xhcmF0aW9uXzBfY2Fubm90X2luY2x1ZGVfYV9kZWZhdWx0X2V4cG9ydF9kZWNsYXJhdGlvbl9Db25zaWRlcl9hZGRpbmdfYV9zZXBhcmF0ZV9leHBvcnRfZF8yNjUyXCIsXCJNZXJnZWQgZGVjbGFyYXRpb24gJ3swfScgY2Fubm90IGluY2x1ZGUgYSBkZWZhdWx0IGV4cG9ydCBkZWNsYXJhdGlvbi4gQ29uc2lkZXIgYWRkaW5nIGEgc2VwYXJhdGUgJ2V4cG9ydCBkZWZhdWx0IHswfScgZGVjbGFyYXRpb24gaW5zdGVhZC5cIiksTm9uX2Fic3RyYWN0X2NsYXNzX2V4cHJlc3Npb25fZG9lc19ub3RfaW1wbGVtZW50X2luaGVyaXRlZF9hYnN0cmFjdF9tZW1iZXJfMF9mcm9tX2NsYXNzXzE6YSgyNjUzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTm9uX2Fic3RyYWN0X2NsYXNzX2V4cHJlc3Npb25fZG9lc19ub3RfaW1wbGVtZW50X2luaGVyaXRlZF9hYnN0cmFjdF9tZW1iZXJfMF9mcm9tX2NsYXNzXzFfMjY1M1wiLFwiTm9uLWFic3RyYWN0IGNsYXNzIGV4cHJlc3Npb24gZG9lcyBub3QgaW1wbGVtZW50IGluaGVyaXRlZCBhYnN0cmFjdCBtZW1iZXIgJ3swfScgZnJvbSBjbGFzcyAnezF9Jy5cIiksSlNYX2V4cHJlc3Npb25zX211c3RfaGF2ZV9vbmVfcGFyZW50X2VsZW1lbnQ6YSgyNjU3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSlNYX2V4cHJlc3Npb25zX211c3RfaGF2ZV9vbmVfcGFyZW50X2VsZW1lbnRfMjY1N1wiLFwiSlNYIGV4cHJlc3Npb25zIG11c3QgaGF2ZSBvbmUgcGFyZW50IGVsZW1lbnQuXCIpLFR5cGVfMF9wcm92aWRlc19ub19tYXRjaF9mb3JfdGhlX3NpZ25hdHVyZV8xOmEoMjY1OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9wcm92aWRlc19ub19tYXRjaF9mb3JfdGhlX3NpZ25hdHVyZV8xXzI2NThcIixcIlR5cGUgJ3swfScgcHJvdmlkZXMgbm8gbWF0Y2ggZm9yIHRoZSBzaWduYXR1cmUgJ3sxfScuXCIpLHN1cGVyX2lzX29ubHlfYWxsb3dlZF9pbl9tZW1iZXJzX29mX29iamVjdF9saXRlcmFsX2V4cHJlc3Npb25zX3doZW5fb3B0aW9uX3RhcmdldF9pc19FUzIwMTVfb3JfaGlnaGVyOmEoMjY1OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInN1cGVyX2lzX29ubHlfYWxsb3dlZF9pbl9tZW1iZXJzX29mX29iamVjdF9saXRlcmFsX2V4cHJlc3Npb25zX3doZW5fb3B0aW9uX3RhcmdldF9pc19FUzIwMTVfb3JfaGlnaGVfMjY1OVwiLFwiJ3N1cGVyJyBpcyBvbmx5IGFsbG93ZWQgaW4gbWVtYmVycyBvZiBvYmplY3QgbGl0ZXJhbCBleHByZXNzaW9ucyB3aGVuIG9wdGlvbiAndGFyZ2V0JyBpcyAnRVMyMDE1JyBvciBoaWdoZXIuXCIpLHN1cGVyX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfaW5fbWVtYmVyc19vZl9kZXJpdmVkX2NsYXNzZXNfb3Jfb2JqZWN0X2xpdGVyYWxfZXhwcmVzc2lvbnM6YSgyNjYwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwic3VwZXJfY2FuX29ubHlfYmVfcmVmZXJlbmNlZF9pbl9tZW1iZXJzX29mX2Rlcml2ZWRfY2xhc3Nlc19vcl9vYmplY3RfbGl0ZXJhbF9leHByZXNzaW9uc18yNjYwXCIsXCInc3VwZXInIGNhbiBvbmx5IGJlIHJlZmVyZW5jZWQgaW4gbWVtYmVycyBvZiBkZXJpdmVkIGNsYXNzZXMgb3Igb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbnMuXCIpLENhbm5vdF9leHBvcnRfMF9Pbmx5X2xvY2FsX2RlY2xhcmF0aW9uc19jYW5fYmVfZXhwb3J0ZWRfZnJvbV9hX21vZHVsZTphKDI2NjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZXhwb3J0XzBfT25seV9sb2NhbF9kZWNsYXJhdGlvbnNfY2FuX2JlX2V4cG9ydGVkX2Zyb21fYV9tb2R1bGVfMjY2MVwiLFwiQ2Fubm90IGV4cG9ydCAnezB9Jy4gT25seSBsb2NhbCBkZWNsYXJhdGlvbnMgY2FuIGJlIGV4cG9ydGVkIGZyb20gYSBtb2R1bGUuXCIpLENhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fdGhlX3N0YXRpY19tZW1iZXJfMV8wOmEoMjY2MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fdGhlX3N0YXRpY19tZW1iZXJfMV8wXzI2NjJcIixcIkNhbm5vdCBmaW5kIG5hbWUgJ3swfScuIERpZCB5b3UgbWVhbiB0aGUgc3RhdGljIG1lbWJlciAnezF9LnswfSc/XCIpLENhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fdGhlX2luc3RhbmNlX21lbWJlcl90aGlzXzA6YSgyNjYzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90aGVfaW5zdGFuY2VfbWVtYmVyX3RoaXNfMF8yNjYzXCIsXCJDYW5ub3QgZmluZCBuYW1lICd7MH0nLiBEaWQgeW91IG1lYW4gdGhlIGluc3RhbmNlIG1lbWJlciAndGhpcy57MH0nP1wiKSxJbnZhbGlkX21vZHVsZV9uYW1lX2luX2F1Z21lbnRhdGlvbl9tb2R1bGVfMF9jYW5ub3RfYmVfZm91bmQ6YSgyNjY0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW52YWxpZF9tb2R1bGVfbmFtZV9pbl9hdWdtZW50YXRpb25fbW9kdWxlXzBfY2Fubm90X2JlX2ZvdW5kXzI2NjRcIixcIkludmFsaWQgbW9kdWxlIG5hbWUgaW4gYXVnbWVudGF0aW9uLCBtb2R1bGUgJ3swfScgY2Fubm90IGJlIGZvdW5kLlwiKSxJbnZhbGlkX21vZHVsZV9uYW1lX2luX2F1Z21lbnRhdGlvbl9Nb2R1bGVfMF9yZXNvbHZlc190b19hbl91bnR5cGVkX21vZHVsZV9hdF8xX3doaWNoX2Nhbm5vdF9iZV9hdWdtZW50ZWQ6YSgyNjY1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW52YWxpZF9tb2R1bGVfbmFtZV9pbl9hdWdtZW50YXRpb25fTW9kdWxlXzBfcmVzb2x2ZXNfdG9fYW5fdW50eXBlZF9tb2R1bGVfYXRfMV93aGljaF9jYW5ub3RfYmVfYXVnbV8yNjY1XCIsXCJJbnZhbGlkIG1vZHVsZSBuYW1lIGluIGF1Z21lbnRhdGlvbi4gTW9kdWxlICd7MH0nIHJlc29sdmVzIHRvIGFuIHVudHlwZWQgbW9kdWxlIGF0ICd7MX0nLCB3aGljaCBjYW5ub3QgYmUgYXVnbWVudGVkLlwiKSxFeHBvcnRzX2FuZF9leHBvcnRfYXNzaWdubWVudHNfYXJlX25vdF9wZXJtaXR0ZWRfaW5fbW9kdWxlX2F1Z21lbnRhdGlvbnM6YSgyNjY2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwb3J0c19hbmRfZXhwb3J0X2Fzc2lnbm1lbnRzX2FyZV9ub3RfcGVybWl0dGVkX2luX21vZHVsZV9hdWdtZW50YXRpb25zXzI2NjZcIixcIkV4cG9ydHMgYW5kIGV4cG9ydCBhc3NpZ25tZW50cyBhcmUgbm90IHBlcm1pdHRlZCBpbiBtb2R1bGUgYXVnbWVudGF0aW9ucy5cIiksSW1wb3J0c19hcmVfbm90X3Blcm1pdHRlZF9pbl9tb2R1bGVfYXVnbWVudGF0aW9uc19Db25zaWRlcl9tb3ZpbmdfdGhlbV90b190aGVfZW5jbG9zaW5nX2V4dGVybmFsX21vZHVsZTphKDI2NjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbXBvcnRzX2FyZV9ub3RfcGVybWl0dGVkX2luX21vZHVsZV9hdWdtZW50YXRpb25zX0NvbnNpZGVyX21vdmluZ190aGVtX3RvX3RoZV9lbmNsb3NpbmdfZXh0ZXJuYWxfbW9kXzI2NjdcIixcIkltcG9ydHMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gbW9kdWxlIGF1Z21lbnRhdGlvbnMuIENvbnNpZGVyIG1vdmluZyB0aGVtIHRvIHRoZSBlbmNsb3NpbmcgZXh0ZXJuYWwgbW9kdWxlLlwiKSxleHBvcnRfbW9kaWZpZXJfY2Fubm90X2JlX2FwcGxpZWRfdG9fYW1iaWVudF9tb2R1bGVzX2FuZF9tb2R1bGVfYXVnbWVudGF0aW9uc19zaW5jZV90aGV5X2FyZV9hbHdheXNfdmlzaWJsZTphKDI2NjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJleHBvcnRfbW9kaWZpZXJfY2Fubm90X2JlX2FwcGxpZWRfdG9fYW1iaWVudF9tb2R1bGVzX2FuZF9tb2R1bGVfYXVnbWVudGF0aW9uc19zaW5jZV90aGV5X2FyZV9hbHdheXNfXzI2NjhcIixcIidleHBvcnQnIG1vZGlmaWVyIGNhbm5vdCBiZSBhcHBsaWVkIHRvIGFtYmllbnQgbW9kdWxlcyBhbmQgbW9kdWxlIGF1Z21lbnRhdGlvbnMgc2luY2UgdGhleSBhcmUgYWx3YXlzIHZpc2libGUuXCIpLEF1Z21lbnRhdGlvbnNfZm9yX3RoZV9nbG9iYWxfc2NvcGVfY2FuX29ubHlfYmVfZGlyZWN0bHlfbmVzdGVkX2luX2V4dGVybmFsX21vZHVsZXNfb3JfYW1iaWVudF9tb2R1bGVfZGVjbGFyYXRpb25zOmEoMjY2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkF1Z21lbnRhdGlvbnNfZm9yX3RoZV9nbG9iYWxfc2NvcGVfY2FuX29ubHlfYmVfZGlyZWN0bHlfbmVzdGVkX2luX2V4dGVybmFsX21vZHVsZXNfb3JfYW1iaWVudF9tb2R1bGVfMjY2OVwiLFwiQXVnbWVudGF0aW9ucyBmb3IgdGhlIGdsb2JhbCBzY29wZSBjYW4gb25seSBiZSBkaXJlY3RseSBuZXN0ZWQgaW4gZXh0ZXJuYWwgbW9kdWxlcyBvciBhbWJpZW50IG1vZHVsZSBkZWNsYXJhdGlvbnMuXCIpLEF1Z21lbnRhdGlvbnNfZm9yX3RoZV9nbG9iYWxfc2NvcGVfc2hvdWxkX2hhdmVfZGVjbGFyZV9tb2RpZmllcl91bmxlc3NfdGhleV9hcHBlYXJfaW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHQ6YSgyNjcwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQXVnbWVudGF0aW9uc19mb3JfdGhlX2dsb2JhbF9zY29wZV9zaG91bGRfaGF2ZV9kZWNsYXJlX21vZGlmaWVyX3VubGVzc190aGV5X2FwcGVhcl9pbl9hbHJlYWR5X2FtYmllbl8yNjcwXCIsXCJBdWdtZW50YXRpb25zIGZvciB0aGUgZ2xvYmFsIHNjb3BlIHNob3VsZCBoYXZlICdkZWNsYXJlJyBtb2RpZmllciB1bmxlc3MgdGhleSBhcHBlYXIgaW4gYWxyZWFkeSBhbWJpZW50IGNvbnRleHQuXCIpLENhbm5vdF9hdWdtZW50X21vZHVsZV8wX2JlY2F1c2VfaXRfcmVzb2x2ZXNfdG9fYV9ub25fbW9kdWxlX2VudGl0eTphKDI2NzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfYXVnbWVudF9tb2R1bGVfMF9iZWNhdXNlX2l0X3Jlc29sdmVzX3RvX2Ffbm9uX21vZHVsZV9lbnRpdHlfMjY3MVwiLFwiQ2Fubm90IGF1Z21lbnQgbW9kdWxlICd7MH0nIGJlY2F1c2UgaXQgcmVzb2x2ZXMgdG8gYSBub24tbW9kdWxlIGVudGl0eS5cIiksQ2Fubm90X2Fzc2lnbl9hXzBfY29uc3RydWN0b3JfdHlwZV90b19hXzFfY29uc3RydWN0b3JfdHlwZTphKDI2NzIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfYXNzaWduX2FfMF9jb25zdHJ1Y3Rvcl90eXBlX3RvX2FfMV9jb25zdHJ1Y3Rvcl90eXBlXzI2NzJcIixcIkNhbm5vdCBhc3NpZ24gYSAnezB9JyBjb25zdHJ1Y3RvciB0eXBlIHRvIGEgJ3sxfScgY29uc3RydWN0b3IgdHlwZS5cIiksQ29uc3RydWN0b3Jfb2ZfY2xhc3NfMF9pc19wcml2YXRlX2FuZF9vbmx5X2FjY2Vzc2libGVfd2l0aGluX3RoZV9jbGFzc19kZWNsYXJhdGlvbjphKDI2NzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX2lzX3ByaXZhdGVfYW5kX29ubHlfYWNjZXNzaWJsZV93aXRoaW5fdGhlX2NsYXNzX2RlY2xhcmF0aW9uXzI2NzNcIixcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNsYXNzIGRlY2xhcmF0aW9uLlwiKSxDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX2lzX3Byb3RlY3RlZF9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb246YSgyNjc0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ29uc3RydWN0b3Jfb2ZfY2xhc3NfMF9pc19wcm90ZWN0ZWRfYW5kX29ubHlfYWNjZXNzaWJsZV93aXRoaW5fdGhlX2NsYXNzX2RlY2xhcmF0aW9uXzI2NzRcIixcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIGlzIHByb3RlY3RlZCBhbmQgb25seSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY2xhc3MgZGVjbGFyYXRpb24uXCIpLENhbm5vdF9leHRlbmRfYV9jbGFzc18wX0NsYXNzX2NvbnN0cnVjdG9yX2lzX21hcmtlZF9hc19wcml2YXRlOmEoMjY3NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9leHRlbmRfYV9jbGFzc18wX0NsYXNzX2NvbnN0cnVjdG9yX2lzX21hcmtlZF9hc19wcml2YXRlXzI2NzVcIixcIkNhbm5vdCBleHRlbmQgYSBjbGFzcyAnezB9Jy4gQ2xhc3MgY29uc3RydWN0b3IgaXMgbWFya2VkIGFzIHByaXZhdGUuXCIpLEFjY2Vzc29yc19tdXN0X2JvdGhfYmVfYWJzdHJhY3Rfb3Jfbm9uX2Fic3RyYWN0OmEoMjY3NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFjY2Vzc29yc19tdXN0X2JvdGhfYmVfYWJzdHJhY3Rfb3Jfbm9uX2Fic3RyYWN0XzI2NzZcIixcIkFjY2Vzc29ycyBtdXN0IGJvdGggYmUgYWJzdHJhY3Qgb3Igbm9uLWFic3RyYWN0LlwiKSxBX3R5cGVfcHJlZGljYXRlX3NfdHlwZV9tdXN0X2JlX2Fzc2lnbmFibGVfdG9faXRzX3BhcmFtZXRlcl9zX3R5cGU6YSgyNjc3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV90eXBlX3ByZWRpY2F0ZV9zX3R5cGVfbXVzdF9iZV9hc3NpZ25hYmxlX3RvX2l0c19wYXJhbWV0ZXJfc190eXBlXzI2NzdcIixcIkEgdHlwZSBwcmVkaWNhdGUncyB0eXBlIG11c3QgYmUgYXNzaWduYWJsZSB0byBpdHMgcGFyYW1ldGVyJ3MgdHlwZS5cIiksVHlwZV8wX2lzX25vdF9jb21wYXJhYmxlX3RvX3R5cGVfMTphKDI2NzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfaXNfbm90X2NvbXBhcmFibGVfdG9fdHlwZV8xXzI2NzhcIixcIlR5cGUgJ3swfScgaXMgbm90IGNvbXBhcmFibGUgdG8gdHlwZSAnezF9Jy5cIiksQV9mdW5jdGlvbl90aGF0X2lzX2NhbGxlZF93aXRoX3RoZV9uZXdfa2V5d29yZF9jYW5ub3RfaGF2ZV9hX3RoaXNfdHlwZV90aGF0X2lzX3ZvaWQ6YSgyNjc5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9mdW5jdGlvbl90aGF0X2lzX2NhbGxlZF93aXRoX3RoZV9uZXdfa2V5d29yZF9jYW5ub3RfaGF2ZV9hX3RoaXNfdHlwZV90aGF0X2lzX3ZvaWRfMjY3OVwiLFwiQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIHRoZSAnbmV3JyBrZXl3b3JkIGNhbm5vdCBoYXZlIGEgJ3RoaXMnIHR5cGUgdGhhdCBpcyAndm9pZCcuXCIpLEFfMF9wYXJhbWV0ZXJfbXVzdF9iZV90aGVfZmlyc3RfcGFyYW1ldGVyOmEoMjY4MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfMF9wYXJhbWV0ZXJfbXVzdF9iZV90aGVfZmlyc3RfcGFyYW1ldGVyXzI2ODBcIixcIkEgJ3swfScgcGFyYW1ldGVyIG11c3QgYmUgdGhlIGZpcnN0IHBhcmFtZXRlci5cIiksQV9jb25zdHJ1Y3Rvcl9jYW5ub3RfaGF2ZV9hX3RoaXNfcGFyYW1ldGVyOmEoMjY4MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfY29uc3RydWN0b3JfY2Fubm90X2hhdmVfYV90aGlzX3BhcmFtZXRlcl8yNjgxXCIsXCJBIGNvbnN0cnVjdG9yIGNhbm5vdCBoYXZlIGEgJ3RoaXMnIHBhcmFtZXRlci5cIiksdGhpc19pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV90eXBlX2Fubm90YXRpb246YSgyNjgzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwidGhpc19pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV90eXBlX2Fubm90YXRpb25fMjY4M1wiLFwiJ3RoaXMnIGltcGxpY2l0bHkgaGFzIHR5cGUgJ2FueScgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgdHlwZSBhbm5vdGF0aW9uLlwiKSxUaGVfdGhpc19jb250ZXh0X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19tZXRob2Rfc190aGlzX29mX3R5cGVfMTphKDI2ODQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfdGhpc19jb250ZXh0X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19tZXRob2Rfc190aGlzX29mX3R5cGVfMV8yNjg0XCIsXCJUaGUgJ3RoaXMnIGNvbnRleHQgb2YgdHlwZSAnezB9JyBpcyBub3QgYXNzaWduYWJsZSB0byBtZXRob2QncyAndGhpcycgb2YgdHlwZSAnezF9Jy5cIiksVGhlX3RoaXNfdHlwZXNfb2ZfZWFjaF9zaWduYXR1cmVfYXJlX2luY29tcGF0aWJsZTphKDI2ODUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfdGhpc190eXBlc19vZl9lYWNoX3NpZ25hdHVyZV9hcmVfaW5jb21wYXRpYmxlXzI2ODVcIixcIlRoZSAndGhpcycgdHlwZXMgb2YgZWFjaCBzaWduYXR1cmUgYXJlIGluY29tcGF0aWJsZS5cIiksXzBfcmVmZXJzX3RvX2FfVU1EX2dsb2JhbF9idXRfdGhlX2N1cnJlbnRfZmlsZV9pc19hX21vZHVsZV9Db25zaWRlcl9hZGRpbmdfYW5faW1wb3J0X2luc3RlYWQ6YSgyNjg2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfcmVmZXJzX3RvX2FfVU1EX2dsb2JhbF9idXRfdGhlX2N1cnJlbnRfZmlsZV9pc19hX21vZHVsZV9Db25zaWRlcl9hZGRpbmdfYW5faW1wb3J0X2luc3RlYWRfMjY4NlwiLFwiJ3swfScgcmVmZXJzIHRvIGEgVU1EIGdsb2JhbCwgYnV0IHRoZSBjdXJyZW50IGZpbGUgaXMgYSBtb2R1bGUuIENvbnNpZGVyIGFkZGluZyBhbiBpbXBvcnQgaW5zdGVhZC5cIiksQWxsX2RlY2xhcmF0aW9uc19vZl8wX211c3RfaGF2ZV9pZGVudGljYWxfbW9kaWZpZXJzOmEoMjY4NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFsbF9kZWNsYXJhdGlvbnNfb2ZfMF9tdXN0X2hhdmVfaWRlbnRpY2FsX21vZGlmaWVyc18yNjg3XCIsXCJBbGwgZGVjbGFyYXRpb25zIG9mICd7MH0nIG11c3QgaGF2ZSBpZGVudGljYWwgbW9kaWZpZXJzLlwiKSxDYW5ub3RfZmluZF90eXBlX2RlZmluaXRpb25fZmlsZV9mb3JfMDphKDI2ODgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF90eXBlX2RlZmluaXRpb25fZmlsZV9mb3JfMF8yNjg4XCIsXCJDYW5ub3QgZmluZCB0eXBlIGRlZmluaXRpb24gZmlsZSBmb3IgJ3swfScuXCIpLENhbm5vdF9leHRlbmRfYW5faW50ZXJmYWNlXzBfRGlkX3lvdV9tZWFuX2ltcGxlbWVudHM6YSgyNjg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2V4dGVuZF9hbl9pbnRlcmZhY2VfMF9EaWRfeW91X21lYW5faW1wbGVtZW50c18yNjg5XCIsXCJDYW5ub3QgZXh0ZW5kIGFuIGludGVyZmFjZSAnezB9Jy4gRGlkIHlvdSBtZWFuICdpbXBsZW1lbnRzJz9cIiksXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfdmFsdWVfaGVyZV9EaWRfeW91X21lYW5fdG9fdXNlXzFfaW5fMDphKDI2OTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9vbmx5X3JlZmVyc190b19hX3R5cGVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV92YWx1ZV9oZXJlX0RpZF95b3VfbWVhbl90b191c2VfMV9pbl8wXzI2OTBcIixcIid7MH0nIG9ubHkgcmVmZXJzIHRvIGEgdHlwZSwgYnV0IGlzIGJlaW5nIHVzZWQgYXMgYSB2YWx1ZSBoZXJlLiBEaWQgeW91IG1lYW4gdG8gdXNlICd7MX0gaW4gezB9Jz9cIiksQW5faW1wb3J0X3BhdGhfY2Fubm90X2VuZF93aXRoX2FfMF9leHRlbnNpb25fQ29uc2lkZXJfaW1wb3J0aW5nXzFfaW5zdGVhZDphKDI2OTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9pbXBvcnRfcGF0aF9jYW5ub3RfZW5kX3dpdGhfYV8wX2V4dGVuc2lvbl9Db25zaWRlcl9pbXBvcnRpbmdfMV9pbnN0ZWFkXzI2OTFcIixcIkFuIGltcG9ydCBwYXRoIGNhbm5vdCBlbmQgd2l0aCBhICd7MH0nIGV4dGVuc2lvbi4gQ29uc2lkZXIgaW1wb3J0aW5nICd7MX0nIGluc3RlYWQuXCIpLF8wX2lzX2FfcHJpbWl0aXZlX2J1dF8xX2lzX2Ffd3JhcHBlcl9vYmplY3RfUHJlZmVyX3VzaW5nXzBfd2hlbl9wb3NzaWJsZTphKDI2OTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9pc19hX3ByaW1pdGl2ZV9idXRfMV9pc19hX3dyYXBwZXJfb2JqZWN0X1ByZWZlcl91c2luZ18wX3doZW5fcG9zc2libGVfMjY5MlwiLFwiJ3swfScgaXMgYSBwcmltaXRpdmUsIGJ1dCAnezF9JyBpcyBhIHdyYXBwZXIgb2JqZWN0LiBQcmVmZXIgdXNpbmcgJ3swfScgd2hlbiBwb3NzaWJsZS5cIiksXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfdmFsdWVfaGVyZTphKDI2OTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9vbmx5X3JlZmVyc190b19hX3R5cGVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV92YWx1ZV9oZXJlXzI2OTNcIixcIid7MH0nIG9ubHkgcmVmZXJzIHRvIGEgdHlwZSwgYnV0IGlzIGJlaW5nIHVzZWQgYXMgYSB2YWx1ZSBoZXJlLlwiKSxOYW1lc3BhY2VfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzE6YSgyNjk0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTmFtZXNwYWNlXzBfaGFzX25vX2V4cG9ydGVkX21lbWJlcl8xXzI2OTRcIixcIk5hbWVzcGFjZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiKSxMZWZ0X3NpZGVfb2ZfY29tbWFfb3BlcmF0b3JfaXNfdW51c2VkX2FuZF9oYXNfbm9fc2lkZV9lZmZlY3RzOmEoMjY5NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkxlZnRfc2lkZV9vZl9jb21tYV9vcGVyYXRvcl9pc191bnVzZWRfYW5kX2hhc19ub19zaWRlX2VmZmVjdHNfMjY5NVwiLFwiTGVmdCBzaWRlIG9mIGNvbW1hIG9wZXJhdG9yIGlzIHVudXNlZCBhbmQgaGFzIG5vIHNpZGUgZWZmZWN0cy5cIiwhMCksVGhlX09iamVjdF90eXBlX2lzX2Fzc2lnbmFibGVfdG9fdmVyeV9mZXdfb3RoZXJfdHlwZXNfRGlkX3lvdV9tZWFuX3RvX3VzZV90aGVfYW55X3R5cGVfaW5zdGVhZDphKDI2OTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfT2JqZWN0X3R5cGVfaXNfYXNzaWduYWJsZV90b192ZXJ5X2Zld19vdGhlcl90eXBlc19EaWRfeW91X21lYW5fdG9fdXNlX3RoZV9hbnlfdHlwZV9pbnN0ZWFkXzI2OTZcIixcIlRoZSAnT2JqZWN0JyB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdmVyeSBmZXcgb3RoZXIgdHlwZXMuIERpZCB5b3UgbWVhbiB0byB1c2UgdGhlICdhbnknIHR5cGUgaW5zdGVhZD9cIiksQW5fYXN5bmNfZnVuY3Rpb25fb3JfbWV0aG9kX211c3RfcmV0dXJuX2FfUHJvbWlzZV9NYWtlX3N1cmVfeW91X2hhdmVfYV9kZWNsYXJhdGlvbl9mb3JfUHJvbWlzZV9vcl9pbmNsdWRlX0VTMjAxNV9pbl95b3VyX2xpYl9vcHRpb246YSgyNjk3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fYXN5bmNfZnVuY3Rpb25fb3JfbWV0aG9kX211c3RfcmV0dXJuX2FfUHJvbWlzZV9NYWtlX3N1cmVfeW91X2hhdmVfYV9kZWNsYXJhdGlvbl9mb3JfUHJvbWlzZV9vcl9pbl8yNjk3XCIsXCJBbiBhc3luYyBmdW5jdGlvbiBvciBtZXRob2QgbXVzdCByZXR1cm4gYSAnUHJvbWlzZScuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhIGRlY2xhcmF0aW9uIGZvciAnUHJvbWlzZScgb3IgaW5jbHVkZSAnRVMyMDE1JyBpbiB5b3VyICctLWxpYicgb3B0aW9uLlwiKSxTcHJlYWRfdHlwZXNfbWF5X29ubHlfYmVfY3JlYXRlZF9mcm9tX29iamVjdF90eXBlczphKDI2OTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTcHJlYWRfdHlwZXNfbWF5X29ubHlfYmVfY3JlYXRlZF9mcm9tX29iamVjdF90eXBlc18yNjk4XCIsXCJTcHJlYWQgdHlwZXMgbWF5IG9ubHkgYmUgY3JlYXRlZCBmcm9tIG9iamVjdCB0eXBlcy5cIiksU3RhdGljX3Byb3BlcnR5XzBfY29uZmxpY3RzX3dpdGhfYnVpbHRfaW5fcHJvcGVydHlfRnVuY3Rpb25fMF9vZl9jb25zdHJ1Y3Rvcl9mdW5jdGlvbl8xOmEoMjY5OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlN0YXRpY19wcm9wZXJ0eV8wX2NvbmZsaWN0c193aXRoX2J1aWx0X2luX3Byb3BlcnR5X0Z1bmN0aW9uXzBfb2ZfY29uc3RydWN0b3JfZnVuY3Rpb25fMV8yNjk5XCIsXCJTdGF0aWMgcHJvcGVydHkgJ3swfScgY29uZmxpY3RzIHdpdGggYnVpbHQtaW4gcHJvcGVydHkgJ0Z1bmN0aW9uLnswfScgb2YgY29uc3RydWN0b3IgZnVuY3Rpb24gJ3sxfScuXCIpLFJlc3RfdHlwZXNfbWF5X29ubHlfYmVfY3JlYXRlZF9mcm9tX29iamVjdF90eXBlczphKDI3MDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXN0X3R5cGVzX21heV9vbmx5X2JlX2NyZWF0ZWRfZnJvbV9vYmplY3RfdHlwZXNfMjcwMFwiLFwiUmVzdCB0eXBlcyBtYXkgb25seSBiZSBjcmVhdGVkIGZyb20gb2JqZWN0IHR5cGVzLlwiKSxUaGVfdGFyZ2V0X29mX2FuX29iamVjdF9yZXN0X2Fzc2lnbm1lbnRfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzOmEoMjcwMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV90YXJnZXRfb2ZfYW5fb2JqZWN0X3Jlc3RfYXNzaWdubWVudF9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3NfMjcwMVwiLFwiVGhlIHRhcmdldCBvZiBhbiBvYmplY3QgcmVzdCBhc3NpZ25tZW50IG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5cIiksXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfbmFtZXNwYWNlX2hlcmU6YSgyNzAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfbmFtZXNwYWNlX2hlcmVfMjcwMlwiLFwiJ3swfScgb25seSByZWZlcnMgdG8gYSB0eXBlLCBidXQgaXMgYmVpbmcgdXNlZCBhcyBhIG5hbWVzcGFjZSBoZXJlLlwiKSxUaGVfb3BlcmFuZF9vZl9hX2RlbGV0ZV9vcGVyYXRvcl9tdXN0X2JlX2FfcHJvcGVydHlfcmVmZXJlbmNlOmEoMjcwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9vcGVyYW5kX29mX2FfZGVsZXRlX29wZXJhdG9yX211c3RfYmVfYV9wcm9wZXJ0eV9yZWZlcmVuY2VfMjcwM1wiLFwiVGhlIG9wZXJhbmQgb2YgYSAnZGVsZXRlJyBvcGVyYXRvciBtdXN0IGJlIGEgcHJvcGVydHkgcmVmZXJlbmNlLlwiKSxUaGVfb3BlcmFuZF9vZl9hX2RlbGV0ZV9vcGVyYXRvcl9jYW5ub3RfYmVfYV9yZWFkX29ubHlfcHJvcGVydHk6YSgyNzA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX29wZXJhbmRfb2ZfYV9kZWxldGVfb3BlcmF0b3JfY2Fubm90X2JlX2FfcmVhZF9vbmx5X3Byb3BlcnR5XzI3MDRcIixcIlRoZSBvcGVyYW5kIG9mIGEgJ2RlbGV0ZScgb3BlcmF0b3IgY2Fubm90IGJlIGEgcmVhZC1vbmx5IHByb3BlcnR5LlwiKSxBbl9hc3luY19mdW5jdGlvbl9vcl9tZXRob2RfaW5fRVM1X1NsYXNoRVMzX3JlcXVpcmVzX3RoZV9Qcm9taXNlX2NvbnN0cnVjdG9yX01ha2Vfc3VyZV95b3VfaGF2ZV9hX2RlY2xhcmF0aW9uX2Zvcl90aGVfUHJvbWlzZV9jb25zdHJ1Y3Rvcl9vcl9pbmNsdWRlX0VTMjAxNV9pbl95b3VyX2xpYl9vcHRpb246YSgyNzA1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fYXN5bmNfZnVuY3Rpb25fb3JfbWV0aG9kX2luX0VTNV9TbGFzaEVTM19yZXF1aXJlc190aGVfUHJvbWlzZV9jb25zdHJ1Y3Rvcl9NYWtlX3N1cmVfeW91X2hhdmVfYV9kZV8yNzA1XCIsXCJBbiBhc3luYyBmdW5jdGlvbiBvciBtZXRob2QgaW4gRVM1L0VTMyByZXF1aXJlcyB0aGUgJ1Byb21pc2UnIGNvbnN0cnVjdG9yLiAgTWFrZSBzdXJlIHlvdSBoYXZlIGEgZGVjbGFyYXRpb24gZm9yIHRoZSAnUHJvbWlzZScgY29uc3RydWN0b3Igb3IgaW5jbHVkZSAnRVMyMDE1JyBpbiB5b3VyICctLWxpYicgb3B0aW9uLlwiKSxSZXF1aXJlZF90eXBlX3BhcmFtZXRlcnNfbWF5X25vdF9mb2xsb3dfb3B0aW9uYWxfdHlwZV9wYXJhbWV0ZXJzOmEoMjcwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJlcXVpcmVkX3R5cGVfcGFyYW1ldGVyc19tYXlfbm90X2ZvbGxvd19vcHRpb25hbF90eXBlX3BhcmFtZXRlcnNfMjcwNlwiLFwiUmVxdWlyZWQgdHlwZSBwYXJhbWV0ZXJzIG1heSBub3QgZm9sbG93IG9wdGlvbmFsIHR5cGUgcGFyYW1ldGVycy5cIiksR2VuZXJpY190eXBlXzBfcmVxdWlyZXNfYmV0d2Vlbl8xX2FuZF8yX3R5cGVfYXJndW1lbnRzOmEoMjcwNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkdlbmVyaWNfdHlwZV8wX3JlcXVpcmVzX2JldHdlZW5fMV9hbmRfMl90eXBlX2FyZ3VtZW50c18yNzA3XCIsXCJHZW5lcmljIHR5cGUgJ3swfScgcmVxdWlyZXMgYmV0d2VlbiB7MX0gYW5kIHsyfSB0eXBlIGFyZ3VtZW50cy5cIiksQ2Fubm90X3VzZV9uYW1lc3BhY2VfMF9hc19hX3ZhbHVlOmEoMjcwOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF91c2VfbmFtZXNwYWNlXzBfYXNfYV92YWx1ZV8yNzA4XCIsXCJDYW5ub3QgdXNlIG5hbWVzcGFjZSAnezB9JyBhcyBhIHZhbHVlLlwiKSxDYW5ub3RfdXNlX25hbWVzcGFjZV8wX2FzX2FfdHlwZTphKDI3MDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfdXNlX25hbWVzcGFjZV8wX2FzX2FfdHlwZV8yNzA5XCIsXCJDYW5ub3QgdXNlIG5hbWVzcGFjZSAnezB9JyBhcyBhIHR5cGUuXCIpLF8wX2FyZV9zcGVjaWZpZWRfdHdpY2VfVGhlX2F0dHJpYnV0ZV9uYW1lZF8wX3dpbGxfYmVfb3ZlcndyaXR0ZW46YSgyNzEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfYXJlX3NwZWNpZmllZF90d2ljZV9UaGVfYXR0cmlidXRlX25hbWVkXzBfd2lsbF9iZV9vdmVyd3JpdHRlbl8yNzEwXCIsXCInezB9JyBhcmUgc3BlY2lmaWVkIHR3aWNlLiBUaGUgYXR0cmlidXRlIG5hbWVkICd7MH0nIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXCIpLEFfZHluYW1pY19pbXBvcnRfY2FsbF9yZXR1cm5zX2FfUHJvbWlzZV9NYWtlX3N1cmVfeW91X2hhdmVfYV9kZWNsYXJhdGlvbl9mb3JfUHJvbWlzZV9vcl9pbmNsdWRlX0VTMjAxNV9pbl95b3VyX2xpYl9vcHRpb246YSgyNzExLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9keW5hbWljX2ltcG9ydF9jYWxsX3JldHVybnNfYV9Qcm9taXNlX01ha2Vfc3VyZV95b3VfaGF2ZV9hX2RlY2xhcmF0aW9uX2Zvcl9Qcm9taXNlX29yX2luY2x1ZGVfRVMyMF8yNzExXCIsXCJBIGR5bmFtaWMgaW1wb3J0IGNhbGwgcmV0dXJucyBhICdQcm9taXNlJy4gTWFrZSBzdXJlIHlvdSBoYXZlIGEgZGVjbGFyYXRpb24gZm9yICdQcm9taXNlJyBvciBpbmNsdWRlICdFUzIwMTUnIGluIHlvdXIgJy0tbGliJyBvcHRpb24uXCIpLEFfZHluYW1pY19pbXBvcnRfY2FsbF9pbl9FUzVfU2xhc2hFUzNfcmVxdWlyZXNfdGhlX1Byb21pc2VfY29uc3RydWN0b3JfTWFrZV9zdXJlX3lvdV9oYXZlX2FfZGVjbGFyYXRpb25fZm9yX3RoZV9Qcm9taXNlX2NvbnN0cnVjdG9yX29yX2luY2x1ZGVfRVMyMDE1X2luX3lvdXJfbGliX29wdGlvbjphKDI3MTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX2R5bmFtaWNfaW1wb3J0X2NhbGxfaW5fRVM1X1NsYXNoRVMzX3JlcXVpcmVzX3RoZV9Qcm9taXNlX2NvbnN0cnVjdG9yX01ha2Vfc3VyZV95b3VfaGF2ZV9hX2RlY2xhcmF0XzI3MTJcIixcIkEgZHluYW1pYyBpbXBvcnQgY2FsbCBpbiBFUzUvRVMzIHJlcXVpcmVzIHRoZSAnUHJvbWlzZScgY29uc3RydWN0b3IuICBNYWtlIHN1cmUgeW91IGhhdmUgYSBkZWNsYXJhdGlvbiBmb3IgdGhlICdQcm9taXNlJyBjb25zdHJ1Y3RvciBvciBpbmNsdWRlICdFUzIwMTUnIGluIHlvdXIgJy0tbGliJyBvcHRpb24uXCIpLENhbm5vdF9hY2Nlc3NfMF8xX2JlY2F1c2VfMF9pc19hX3R5cGVfYnV0X25vdF9hX25hbWVzcGFjZV9EaWRfeW91X21lYW5fdG9fcmV0cmlldmVfdGhlX3R5cGVfb2ZfdGhlX3Byb3BlcnR5XzFfaW5fMF93aXRoXzBfMTphKDI3MTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfYWNjZXNzXzBfMV9iZWNhdXNlXzBfaXNfYV90eXBlX2J1dF9ub3RfYV9uYW1lc3BhY2VfRGlkX3lvdV9tZWFuX3RvX3JldHJpZXZlX3RoZV90eXBlX29mX3RoZV9wXzI3MTNcIixgQ2Fubm90IGFjY2VzcyAnezB9LnsxfScgYmVjYXVzZSAnezB9JyBpcyBhIHR5cGUsIGJ1dCBub3QgYSBuYW1lc3BhY2UuIERpZCB5b3UgbWVhbiB0byByZXRyaWV2ZSB0aGUgdHlwZSBvZiB0aGUgcHJvcGVydHkgJ3sxfScgaW4gJ3swfScgd2l0aCAnezB9W1wiezF9XCJdJz9gKSxUaGVfZXhwcmVzc2lvbl9vZl9hbl9leHBvcnRfYXNzaWdubWVudF9tdXN0X2JlX2FuX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWVfaW5fYW5fYW1iaWVudF9jb250ZXh0OmEoMjcxNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9leHByZXNzaW9uX29mX2FuX2V4cG9ydF9hc3NpZ25tZW50X211c3RfYmVfYW5faWRlbnRpZmllcl9vcl9xdWFsaWZpZWRfbmFtZV9pbl9hbl9hbWJpZW50X2NvbnRleHRfMjcxNFwiLFwiVGhlIGV4cHJlc3Npb24gb2YgYW4gZXhwb3J0IGFzc2lnbm1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyIG9yIHF1YWxpZmllZCBuYW1lIGluIGFuIGFtYmllbnQgY29udGV4dC5cIiksQWJzdHJhY3RfcHJvcGVydHlfMF9pbl9jbGFzc18xX2Nhbm5vdF9iZV9hY2Nlc3NlZF9pbl90aGVfY29uc3RydWN0b3I6YSgyNzE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQWJzdHJhY3RfcHJvcGVydHlfMF9pbl9jbGFzc18xX2Nhbm5vdF9iZV9hY2Nlc3NlZF9pbl90aGVfY29uc3RydWN0b3JfMjcxNVwiLFwiQWJzdHJhY3QgcHJvcGVydHkgJ3swfScgaW4gY2xhc3MgJ3sxfScgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoZSBjb25zdHJ1Y3Rvci5cIiksVHlwZV9wYXJhbWV0ZXJfMF9oYXNfYV9jaXJjdWxhcl9kZWZhdWx0OmEoMjcxNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcGFyYW1ldGVyXzBfaGFzX2FfY2lyY3VsYXJfZGVmYXVsdF8yNzE2XCIsXCJUeXBlIHBhcmFtZXRlciAnezB9JyBoYXMgYSBjaXJjdWxhciBkZWZhdWx0LlwiKSxTdWJzZXF1ZW50X3Byb3BlcnR5X2RlY2xhcmF0aW9uc19tdXN0X2hhdmVfdGhlX3NhbWVfdHlwZV9Qcm9wZXJ0eV8wX211c3RfYmVfb2ZfdHlwZV8xX2J1dF9oZXJlX2hhc190eXBlXzI6YSgyNzE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU3Vic2VxdWVudF9wcm9wZXJ0eV9kZWNsYXJhdGlvbnNfbXVzdF9oYXZlX3RoZV9zYW1lX3R5cGVfUHJvcGVydHlfMF9tdXN0X2JlX29mX3R5cGVfMV9idXRfaGVyZV9oYXNfdF8yNzE3XCIsXCJTdWJzZXF1ZW50IHByb3BlcnR5IGRlY2xhcmF0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS4gIFByb3BlcnR5ICd7MH0nIG11c3QgYmUgb2YgdHlwZSAnezF9JywgYnV0IGhlcmUgaGFzIHR5cGUgJ3syfScuXCIpLER1cGxpY2F0ZV9wcm9wZXJ0eV8wOmEoMjcxOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkR1cGxpY2F0ZV9wcm9wZXJ0eV8wXzI3MThcIixcIkR1cGxpY2F0ZSBwcm9wZXJ0eSAnezB9Jy5cIiksVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV9Ud29fZGlmZmVyZW50X3R5cGVzX3dpdGhfdGhpc19uYW1lX2V4aXN0X2J1dF90aGV5X2FyZV91bnJlbGF0ZWQ6YSgyNzE5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV9Ud29fZGlmZmVyZW50X3R5cGVzX3dpdGhfdGhpc19uYW1lX2V4aXN0X2J1dF90aGV5X2FyZV91bnJlbGF0ZWRfMjcxOVwiLFwiVHlwZSAnezB9JyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICd7MX0nLiBUd28gZGlmZmVyZW50IHR5cGVzIHdpdGggdGhpcyBuYW1lIGV4aXN0LCBidXQgdGhleSBhcmUgdW5yZWxhdGVkLlwiKSxDbGFzc18wX2luY29ycmVjdGx5X2ltcGxlbWVudHNfY2xhc3NfMV9EaWRfeW91X21lYW5fdG9fZXh0ZW5kXzFfYW5kX2luaGVyaXRfaXRzX21lbWJlcnNfYXNfYV9zdWJjbGFzczphKDI3MjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDbGFzc18wX2luY29ycmVjdGx5X2ltcGxlbWVudHNfY2xhc3NfMV9EaWRfeW91X21lYW5fdG9fZXh0ZW5kXzFfYW5kX2luaGVyaXRfaXRzX21lbWJlcnNfYXNfYV9zdWJjbGFzXzI3MjBcIixcIkNsYXNzICd7MH0nIGluY29ycmVjdGx5IGltcGxlbWVudHMgY2xhc3MgJ3sxfScuIERpZCB5b3UgbWVhbiB0byBleHRlbmQgJ3sxfScgYW5kIGluaGVyaXQgaXRzIG1lbWJlcnMgYXMgYSBzdWJjbGFzcz9cIiksQ2Fubm90X2ludm9rZV9hbl9vYmplY3Rfd2hpY2hfaXNfcG9zc2libHlfbnVsbDphKDI3MjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfaW52b2tlX2FuX29iamVjdF93aGljaF9pc19wb3NzaWJseV9udWxsXzI3MjFcIixcIkNhbm5vdCBpbnZva2UgYW4gb2JqZWN0IHdoaWNoIGlzIHBvc3NpYmx5ICdudWxsJy5cIiksQ2Fubm90X2ludm9rZV9hbl9vYmplY3Rfd2hpY2hfaXNfcG9zc2libHlfdW5kZWZpbmVkOmEoMjcyMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9pbnZva2VfYW5fb2JqZWN0X3doaWNoX2lzX3Bvc3NpYmx5X3VuZGVmaW5lZF8yNzIyXCIsXCJDYW5ub3QgaW52b2tlIGFuIG9iamVjdCB3aGljaCBpcyBwb3NzaWJseSAndW5kZWZpbmVkJy5cIiksQ2Fubm90X2ludm9rZV9hbl9vYmplY3Rfd2hpY2hfaXNfcG9zc2libHlfbnVsbF9vcl91bmRlZmluZWQ6YSgyNzIzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ludm9rZV9hbl9vYmplY3Rfd2hpY2hfaXNfcG9zc2libHlfbnVsbF9vcl91bmRlZmluZWRfMjcyM1wiLFwiQ2Fubm90IGludm9rZSBhbiBvYmplY3Qgd2hpY2ggaXMgcG9zc2libHkgJ251bGwnIG9yICd1bmRlZmluZWQnLlwiKSxfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyX25hbWVkXzFfRGlkX3lvdV9tZWFuXzI6YSgyNzI0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfaGFzX25vX2V4cG9ydGVkX21lbWJlcl9uYW1lZF8xX0RpZF95b3VfbWVhbl8yXzI3MjRcIixcIid7MH0nIGhhcyBubyBleHBvcnRlZCBtZW1iZXIgbmFtZWQgJ3sxfScuIERpZCB5b3UgbWVhbiAnezJ9Jz9cIiksQ2xhc3NfbmFtZV9jYW5ub3RfYmVfT2JqZWN0X3doZW5fdGFyZ2V0aW5nX0VTNV93aXRoX21vZHVsZV8wOmEoMjcyNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNsYXNzX25hbWVfY2Fubm90X2JlX09iamVjdF93aGVuX3RhcmdldGluZ19FUzVfd2l0aF9tb2R1bGVfMF8yNzI1XCIsXCJDbGFzcyBuYW1lIGNhbm5vdCBiZSAnT2JqZWN0JyB3aGVuIHRhcmdldGluZyBFUzUgd2l0aCBtb2R1bGUgezB9LlwiKSxDYW5ub3RfZmluZF9saWJfZGVmaW5pdGlvbl9mb3JfMDphKDI3MjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZmluZF9saWJfZGVmaW5pdGlvbl9mb3JfMF8yNzI2XCIsXCJDYW5ub3QgZmluZCBsaWIgZGVmaW5pdGlvbiBmb3IgJ3swfScuXCIpLENhbm5vdF9maW5kX2xpYl9kZWZpbml0aW9uX2Zvcl8wX0RpZF95b3VfbWVhbl8xOmEoMjcyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX2xpYl9kZWZpbml0aW9uX2Zvcl8wX0RpZF95b3VfbWVhbl8xXzI3MjdcIixcIkNhbm5vdCBmaW5kIGxpYiBkZWZpbml0aW9uIGZvciAnezB9Jy4gRGlkIHlvdSBtZWFuICd7MX0nP1wiKSxfMF9pc19kZWNsYXJlZF9oZXJlOmEoMjcyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiXzBfaXNfZGVjbGFyZWRfaGVyZV8yNzI4XCIsXCInezB9JyBpcyBkZWNsYXJlZCBoZXJlLlwiKSxQcm9wZXJ0eV8wX2lzX3VzZWRfYmVmb3JlX2l0c19pbml0aWFsaXphdGlvbjphKDI3MjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2lzX3VzZWRfYmVmb3JlX2l0c19pbml0aWFsaXphdGlvbl8yNzI5XCIsXCJQcm9wZXJ0eSAnezB9JyBpcyB1c2VkIGJlZm9yZSBpdHMgaW5pdGlhbGl6YXRpb24uXCIpLEFuX2Fycm93X2Z1bmN0aW9uX2Nhbm5vdF9oYXZlX2FfdGhpc19wYXJhbWV0ZXI6YSgyNzMwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fYXJyb3dfZnVuY3Rpb25fY2Fubm90X2hhdmVfYV90aGlzX3BhcmFtZXRlcl8yNzMwXCIsXCJBbiBhcnJvdyBmdW5jdGlvbiBjYW5ub3QgaGF2ZSBhICd0aGlzJyBwYXJhbWV0ZXIuXCIpLEltcGxpY2l0X2NvbnZlcnNpb25fb2ZfYV9zeW1ib2xfdG9fYV9zdHJpbmdfd2lsbF9mYWlsX2F0X3J1bnRpbWVfQ29uc2lkZXJfd3JhcHBpbmdfdGhpc19leHByZXNzaW9uX2luX1N0cmluZzphKDI3MzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbXBsaWNpdF9jb252ZXJzaW9uX29mX2Ffc3ltYm9sX3RvX2Ffc3RyaW5nX3dpbGxfZmFpbF9hdF9ydW50aW1lX0NvbnNpZGVyX3dyYXBwaW5nX3RoaXNfZXhwcmVzc2lvbl9pXzI3MzFcIixcIkltcGxpY2l0IGNvbnZlcnNpb24gb2YgYSAnc3ltYm9sJyB0byBhICdzdHJpbmcnIHdpbGwgZmFpbCBhdCBydW50aW1lLiBDb25zaWRlciB3cmFwcGluZyB0aGlzIGV4cHJlc3Npb24gaW4gJ1N0cmluZyguLi4pJy5cIiksQ2Fubm90X2ZpbmRfbW9kdWxlXzBfQ29uc2lkZXJfdXNpbmdfcmVzb2x2ZUpzb25Nb2R1bGVfdG9faW1wb3J0X21vZHVsZV93aXRoX2pzb25fZXh0ZW5zaW9uOmEoMjczMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX21vZHVsZV8wX0NvbnNpZGVyX3VzaW5nX3Jlc29sdmVKc29uTW9kdWxlX3RvX2ltcG9ydF9tb2R1bGVfd2l0aF9qc29uX2V4dGVuc2lvbl8yNzMyXCIsXCJDYW5ub3QgZmluZCBtb2R1bGUgJ3swfScuIENvbnNpZGVyIHVzaW5nICctLXJlc29sdmVKc29uTW9kdWxlJyB0byBpbXBvcnQgbW9kdWxlIHdpdGggJy5qc29uJyBleHRlbnNpb24uXCIpLFByb3BlcnR5XzBfd2FzX2Fsc29fZGVjbGFyZWRfaGVyZTphKDI3MzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX3dhc19hbHNvX2RlY2xhcmVkX2hlcmVfMjczM1wiLFwiUHJvcGVydHkgJ3swfScgd2FzIGFsc28gZGVjbGFyZWQgaGVyZS5cIiksQXJlX3lvdV9taXNzaW5nX2Ffc2VtaWNvbG9uOmEoMjczNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFyZV95b3VfbWlzc2luZ19hX3NlbWljb2xvbl8yNzM0XCIsXCJBcmUgeW91IG1pc3NpbmcgYSBzZW1pY29sb24/XCIpLERpZF95b3VfbWVhbl9mb3JfMF90b19iZV9jb25zdHJhaW5lZF90b190eXBlX25ld19hcmdzX0NvbG9uX2FueV8xOmEoMjczNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRpZF95b3VfbWVhbl9mb3JfMF90b19iZV9jb25zdHJhaW5lZF90b190eXBlX25ld19hcmdzX0NvbG9uX2FueV8xXzI3MzVcIixcIkRpZCB5b3UgbWVhbiBmb3IgJ3swfScgdG8gYmUgY29uc3RyYWluZWQgdG8gdHlwZSAnbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gezF9Jz9cIiksT3BlcmF0b3JfMF9jYW5ub3RfYmVfYXBwbGllZF90b190eXBlXzE6YSgyNzM2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3BlcmF0b3JfMF9jYW5ub3RfYmVfYXBwbGllZF90b190eXBlXzFfMjczNlwiLFwiT3BlcmF0b3IgJ3swfScgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZSAnezF9Jy5cIiksQmlnSW50X2xpdGVyYWxzX2FyZV9ub3RfYXZhaWxhYmxlX3doZW5fdGFyZ2V0aW5nX2xvd2VyX3RoYW5fRVMyMDIwOmEoMjczNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkJpZ0ludF9saXRlcmFsc19hcmVfbm90X2F2YWlsYWJsZV93aGVuX3RhcmdldGluZ19sb3dlcl90aGFuX0VTMjAyMF8yNzM3XCIsXCJCaWdJbnQgbGl0ZXJhbHMgYXJlIG5vdCBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgbG93ZXIgdGhhbiBFUzIwMjAuXCIpLEFuX291dGVyX3ZhbHVlX29mX3RoaXNfaXNfc2hhZG93ZWRfYnlfdGhpc19jb250YWluZXI6YSgyNzM4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBbl9vdXRlcl92YWx1ZV9vZl90aGlzX2lzX3NoYWRvd2VkX2J5X3RoaXNfY29udGFpbmVyXzI3MzhcIixcIkFuIG91dGVyIHZhbHVlIG9mICd0aGlzJyBpcyBzaGFkb3dlZCBieSB0aGlzIGNvbnRhaW5lci5cIiksVHlwZV8wX2lzX21pc3NpbmdfdGhlX2ZvbGxvd2luZ19wcm9wZXJ0aWVzX2Zyb21fdHlwZV8xX0NvbG9uXzI6YSgyNzM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV8wX2lzX21pc3NpbmdfdGhlX2ZvbGxvd2luZ19wcm9wZXJ0aWVzX2Zyb21fdHlwZV8xX0NvbG9uXzJfMjczOVwiLFwiVHlwZSAnezB9JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ3sxfSc6IHsyfVwiKSxUeXBlXzBfaXNfbWlzc2luZ190aGVfZm9sbG93aW5nX3Byb3BlcnRpZXNfZnJvbV90eXBlXzFfQ29sb25fMl9hbmRfM19tb3JlOmEoMjc0MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9pc19taXNzaW5nX3RoZV9mb2xsb3dpbmdfcHJvcGVydGllc19mcm9tX3R5cGVfMV9Db2xvbl8yX2FuZF8zX21vcmVfMjc0MFwiLFwiVHlwZSAnezB9JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ3sxfSc6IHsyfSwgYW5kIHszfSBtb3JlLlwiKSxQcm9wZXJ0eV8wX2lzX21pc3NpbmdfaW5fdHlwZV8xX2J1dF9yZXF1aXJlZF9pbl90eXBlXzI6YSgyNzQxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pc19taXNzaW5nX2luX3R5cGVfMV9idXRfcmVxdWlyZWRfaW5fdHlwZV8yXzI3NDFcIixcIlByb3BlcnR5ICd7MH0nIGlzIG1pc3NpbmcgaW4gdHlwZSAnezF9JyBidXQgcmVxdWlyZWQgaW4gdHlwZSAnezJ9Jy5cIiksVGhlX2luZmVycmVkX3R5cGVfb2ZfMF9jYW5ub3RfYmVfbmFtZWRfd2l0aG91dF9hX3JlZmVyZW5jZV90b18xX1RoaXNfaXNfbGlrZWx5X25vdF9wb3J0YWJsZV9BX3R5cGVfYW5ub3RhdGlvbl9pc19uZWNlc3Nhcnk6YSgyNzQyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2luZmVycmVkX3R5cGVfb2ZfMF9jYW5ub3RfYmVfbmFtZWRfd2l0aG91dF9hX3JlZmVyZW5jZV90b18xX1RoaXNfaXNfbGlrZWx5X25vdF9wb3J0YWJsZV9BX3R5cGVfYV8yNzQyXCIsXCJUaGUgaW5mZXJyZWQgdHlwZSBvZiAnezB9JyBjYW5ub3QgYmUgbmFtZWQgd2l0aG91dCBhIHJlZmVyZW5jZSB0byAnezF9Jy4gVGhpcyBpcyBsaWtlbHkgbm90IHBvcnRhYmxlLiBBIHR5cGUgYW5ub3RhdGlvbiBpcyBuZWNlc3NhcnkuXCIpLE5vX292ZXJsb2FkX2V4cGVjdHNfMF90eXBlX2FyZ3VtZW50c19idXRfb3ZlcmxvYWRzX2RvX2V4aXN0X3RoYXRfZXhwZWN0X2VpdGhlcl8xX29yXzJfdHlwZV9hcmd1bWVudHM6YSgyNzQzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTm9fb3ZlcmxvYWRfZXhwZWN0c18wX3R5cGVfYXJndW1lbnRzX2J1dF9vdmVybG9hZHNfZG9fZXhpc3RfdGhhdF9leHBlY3RfZWl0aGVyXzFfb3JfMl90eXBlX2FyZ3VtZW50c18yNzQzXCIsXCJObyBvdmVybG9hZCBleHBlY3RzIHswfSB0eXBlIGFyZ3VtZW50cywgYnV0IG92ZXJsb2FkcyBkbyBleGlzdCB0aGF0IGV4cGVjdCBlaXRoZXIgezF9IG9yIHsyfSB0eXBlIGFyZ3VtZW50cy5cIiksVHlwZV9wYXJhbWV0ZXJfZGVmYXVsdHNfY2FuX29ubHlfcmVmZXJlbmNlX3ByZXZpb3VzbHlfZGVjbGFyZWRfdHlwZV9wYXJhbWV0ZXJzOmEoMjc0NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcGFyYW1ldGVyX2RlZmF1bHRzX2Nhbl9vbmx5X3JlZmVyZW5jZV9wcmV2aW91c2x5X2RlY2xhcmVkX3R5cGVfcGFyYW1ldGVyc18yNzQ0XCIsXCJUeXBlIHBhcmFtZXRlciBkZWZhdWx0cyBjYW4gb25seSByZWZlcmVuY2UgcHJldmlvdXNseSBkZWNsYXJlZCB0eXBlIHBhcmFtZXRlcnMuXCIpLFRoaXNfSlNYX3RhZ19zXzBfcHJvcF9leHBlY3RzX3R5cGVfMV93aGljaF9yZXF1aXJlc19tdWx0aXBsZV9jaGlsZHJlbl9idXRfb25seV9hX3NpbmdsZV9jaGlsZF93YXNfcHJvdmlkZWQ6YSgyNzQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19KU1hfdGFnX3NfMF9wcm9wX2V4cGVjdHNfdHlwZV8xX3doaWNoX3JlcXVpcmVzX211bHRpcGxlX2NoaWxkcmVuX2J1dF9vbmx5X2Ffc2luZ2xlX2NoaWxkX3dhc19wcl8yNzQ1XCIsXCJUaGlzIEpTWCB0YWcncyAnezB9JyBwcm9wIGV4cGVjdHMgdHlwZSAnezF9JyB3aGljaCByZXF1aXJlcyBtdWx0aXBsZSBjaGlsZHJlbiwgYnV0IG9ubHkgYSBzaW5nbGUgY2hpbGQgd2FzIHByb3ZpZGVkLlwiKSxUaGlzX0pTWF90YWdfc18wX3Byb3BfZXhwZWN0c19hX3NpbmdsZV9jaGlsZF9vZl90eXBlXzFfYnV0X211bHRpcGxlX2NoaWxkcmVuX3dlcmVfcHJvdmlkZWQ6YSgyNzQ2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19KU1hfdGFnX3NfMF9wcm9wX2V4cGVjdHNfYV9zaW5nbGVfY2hpbGRfb2ZfdHlwZV8xX2J1dF9tdWx0aXBsZV9jaGlsZHJlbl93ZXJlX3Byb3ZpZGVkXzI3NDZcIixcIlRoaXMgSlNYIHRhZydzICd7MH0nIHByb3AgZXhwZWN0cyBhIHNpbmdsZSBjaGlsZCBvZiB0eXBlICd7MX0nLCBidXQgbXVsdGlwbGUgY2hpbGRyZW4gd2VyZSBwcm92aWRlZC5cIiksXzBfY29tcG9uZW50c19kb25fdF9hY2NlcHRfdGV4dF9hc19jaGlsZF9lbGVtZW50c19UZXh0X2luX0pTWF9oYXNfdGhlX3R5cGVfc3RyaW5nX2J1dF90aGVfZXhwZWN0ZWRfdHlwZV9vZl8xX2lzXzI6YSgyNzQ3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfY29tcG9uZW50c19kb25fdF9hY2NlcHRfdGV4dF9hc19jaGlsZF9lbGVtZW50c19UZXh0X2luX0pTWF9oYXNfdGhlX3R5cGVfc3RyaW5nX2J1dF90aGVfZXhwZWN0ZWRfdF8yNzQ3XCIsXCInezB9JyBjb21wb25lbnRzIGRvbid0IGFjY2VwdCB0ZXh0IGFzIGNoaWxkIGVsZW1lbnRzLiBUZXh0IGluIEpTWCBoYXMgdGhlIHR5cGUgJ3N0cmluZycsIGJ1dCB0aGUgZXhwZWN0ZWQgdHlwZSBvZiAnezF9JyBpcyAnezJ9Jy5cIiksQ2Fubm90X2FjY2Vzc19hbWJpZW50X2NvbnN0X2VudW1zX3doZW5fdGhlX2lzb2xhdGVkTW9kdWxlc19mbGFnX2lzX3Byb3ZpZGVkOmEoMjc0OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9hY2Nlc3NfYW1iaWVudF9jb25zdF9lbnVtc193aGVuX3RoZV9pc29sYXRlZE1vZHVsZXNfZmxhZ19pc19wcm92aWRlZF8yNzQ4XCIsXCJDYW5ub3QgYWNjZXNzIGFtYmllbnQgY29uc3QgZW51bXMgd2hlbiB0aGUgJy0taXNvbGF0ZWRNb2R1bGVzJyBmbGFnIGlzIHByb3ZpZGVkLlwiKSxfMF9yZWZlcnNfdG9fYV92YWx1ZV9idXRfaXNfYmVpbmdfdXNlZF9hc19hX3R5cGVfaGVyZV9EaWRfeW91X21lYW5fdHlwZW9mXzA6YSgyNzQ5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfcmVmZXJzX3RvX2FfdmFsdWVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV90eXBlX2hlcmVfRGlkX3lvdV9tZWFuX3R5cGVvZl8wXzI3NDlcIixcIid7MH0nIHJlZmVycyB0byBhIHZhbHVlLCBidXQgaXMgYmVpbmcgdXNlZCBhcyBhIHR5cGUgaGVyZS4gRGlkIHlvdSBtZWFuICd0eXBlb2YgezB9Jz9cIiksVGhlX2ltcGxlbWVudGF0aW9uX3NpZ25hdHVyZV9pc19kZWNsYXJlZF9oZXJlOmEoMjc1MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9pbXBsZW1lbnRhdGlvbl9zaWduYXR1cmVfaXNfZGVjbGFyZWRfaGVyZV8yNzUwXCIsXCJUaGUgaW1wbGVtZW50YXRpb24gc2lnbmF0dXJlIGlzIGRlY2xhcmVkIGhlcmUuXCIpLENpcmN1bGFyaXR5X29yaWdpbmF0ZXNfaW5fdHlwZV9hdF90aGlzX2xvY2F0aW9uOmEoMjc1MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNpcmN1bGFyaXR5X29yaWdpbmF0ZXNfaW5fdHlwZV9hdF90aGlzX2xvY2F0aW9uXzI3NTFcIixcIkNpcmN1bGFyaXR5IG9yaWdpbmF0ZXMgaW4gdHlwZSBhdCB0aGlzIGxvY2F0aW9uLlwiKSxUaGVfZmlyc3RfZXhwb3J0X2RlZmF1bHRfaXNfaGVyZTphKDI3NTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfZmlyc3RfZXhwb3J0X2RlZmF1bHRfaXNfaGVyZV8yNzUyXCIsXCJUaGUgZmlyc3QgZXhwb3J0IGRlZmF1bHQgaXMgaGVyZS5cIiksQW5vdGhlcl9leHBvcnRfZGVmYXVsdF9pc19oZXJlOmEoMjc1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFub3RoZXJfZXhwb3J0X2RlZmF1bHRfaXNfaGVyZV8yNzUzXCIsXCJBbm90aGVyIGV4cG9ydCBkZWZhdWx0IGlzIGhlcmUuXCIpLHN1cGVyX21heV9ub3RfdXNlX3R5cGVfYXJndW1lbnRzOmEoMjc1NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInN1cGVyX21heV9ub3RfdXNlX3R5cGVfYXJndW1lbnRzXzI3NTRcIixcIidzdXBlcicgbWF5IG5vdCB1c2UgdHlwZSBhcmd1bWVudHMuXCIpLE5vX2NvbnN0aXR1ZW50X29mX3R5cGVfMF9pc19jYWxsYWJsZTphKDI3NTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb19jb25zdGl0dWVudF9vZl90eXBlXzBfaXNfY2FsbGFibGVfMjc1NVwiLFwiTm8gY29uc3RpdHVlbnQgb2YgdHlwZSAnezB9JyBpcyBjYWxsYWJsZS5cIiksTm90X2FsbF9jb25zdGl0dWVudHNfb2ZfdHlwZV8wX2FyZV9jYWxsYWJsZTphKDI3NTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb3RfYWxsX2NvbnN0aXR1ZW50c19vZl90eXBlXzBfYXJlX2NhbGxhYmxlXzI3NTZcIixcIk5vdCBhbGwgY29uc3RpdHVlbnRzIG9mIHR5cGUgJ3swfScgYXJlIGNhbGxhYmxlLlwiKSxUeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlczphKDI3NTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlc18yNzU3XCIsXCJUeXBlICd7MH0nIGhhcyBubyBjYWxsIHNpZ25hdHVyZXMuXCIpLEVhY2hfbWVtYmVyX29mX3RoZV91bmlvbl90eXBlXzBfaGFzX3NpZ25hdHVyZXNfYnV0X25vbmVfb2ZfdGhvc2Vfc2lnbmF0dXJlc19hcmVfY29tcGF0aWJsZV93aXRoX2VhY2hfb3RoZXI6YSgyNzU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRWFjaF9tZW1iZXJfb2ZfdGhlX3VuaW9uX3R5cGVfMF9oYXNfc2lnbmF0dXJlc19idXRfbm9uZV9vZl90aG9zZV9zaWduYXR1cmVzX2FyZV9jb21wYXRpYmxlX3dpdGhfZWFjaF8yNzU4XCIsXCJFYWNoIG1lbWJlciBvZiB0aGUgdW5pb24gdHlwZSAnezB9JyBoYXMgc2lnbmF0dXJlcywgYnV0IG5vbmUgb2YgdGhvc2Ugc2lnbmF0dXJlcyBhcmUgY29tcGF0aWJsZSB3aXRoIGVhY2ggb3RoZXIuXCIpLE5vX2NvbnN0aXR1ZW50X29mX3R5cGVfMF9pc19jb25zdHJ1Y3RhYmxlOmEoMjc1OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5vX2NvbnN0aXR1ZW50X29mX3R5cGVfMF9pc19jb25zdHJ1Y3RhYmxlXzI3NTlcIixcIk5vIGNvbnN0aXR1ZW50IG9mIHR5cGUgJ3swfScgaXMgY29uc3RydWN0YWJsZS5cIiksTm90X2FsbF9jb25zdGl0dWVudHNfb2ZfdHlwZV8wX2FyZV9jb25zdHJ1Y3RhYmxlOmEoMjc2MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5vdF9hbGxfY29uc3RpdHVlbnRzX29mX3R5cGVfMF9hcmVfY29uc3RydWN0YWJsZV8yNzYwXCIsXCJOb3QgYWxsIGNvbnN0aXR1ZW50cyBvZiB0eXBlICd7MH0nIGFyZSBjb25zdHJ1Y3RhYmxlLlwiKSxUeXBlXzBfaGFzX25vX2NvbnN0cnVjdF9zaWduYXR1cmVzOmEoMjc2MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfMF9oYXNfbm9fY29uc3RydWN0X3NpZ25hdHVyZXNfMjc2MVwiLFwiVHlwZSAnezB9JyBoYXMgbm8gY29uc3RydWN0IHNpZ25hdHVyZXMuXCIpLEVhY2hfbWVtYmVyX29mX3RoZV91bmlvbl90eXBlXzBfaGFzX2NvbnN0cnVjdF9zaWduYXR1cmVzX2J1dF9ub25lX29mX3Rob3NlX3NpZ25hdHVyZXNfYXJlX2NvbXBhdGlibGVfd2l0aF9lYWNoX290aGVyOmEoMjc2MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkVhY2hfbWVtYmVyX29mX3RoZV91bmlvbl90eXBlXzBfaGFzX2NvbnN0cnVjdF9zaWduYXR1cmVzX2J1dF9ub25lX29mX3Rob3NlX3NpZ25hdHVyZXNfYXJlX2NvbXBhdGlibGVfMjc2MlwiLFwiRWFjaCBtZW1iZXIgb2YgdGhlIHVuaW9uIHR5cGUgJ3swfScgaGFzIGNvbnN0cnVjdCBzaWduYXR1cmVzLCBidXQgbm9uZSBvZiB0aG9zZSBzaWduYXR1cmVzIGFyZSBjb21wYXRpYmxlIHdpdGggZWFjaCBvdGhlci5cIiksQ2Fubm90X2l0ZXJhdGVfdmFsdWVfYmVjYXVzZV90aGVfbmV4dF9tZXRob2Rfb2ZfaXRzX2l0ZXJhdG9yX2V4cGVjdHNfdHlwZV8xX2J1dF9mb3Jfb2Zfd2lsbF9hbHdheXNfc2VuZF8wOmEoMjc2MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9pdGVyYXRlX3ZhbHVlX2JlY2F1c2VfdGhlX25leHRfbWV0aG9kX29mX2l0c19pdGVyYXRvcl9leHBlY3RzX3R5cGVfMV9idXRfZm9yX29mX3dpbGxfYWx3YXlzX3NfMjc2M1wiLFwiQ2Fubm90IGl0ZXJhdGUgdmFsdWUgYmVjYXVzZSB0aGUgJ25leHQnIG1ldGhvZCBvZiBpdHMgaXRlcmF0b3IgZXhwZWN0cyB0eXBlICd7MX0nLCBidXQgZm9yLW9mIHdpbGwgYWx3YXlzIHNlbmQgJ3swfScuXCIpLENhbm5vdF9pdGVyYXRlX3ZhbHVlX2JlY2F1c2VfdGhlX25leHRfbWV0aG9kX29mX2l0c19pdGVyYXRvcl9leHBlY3RzX3R5cGVfMV9idXRfYXJyYXlfc3ByZWFkX3dpbGxfYWx3YXlzX3NlbmRfMDphKDI3NjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfaXRlcmF0ZV92YWx1ZV9iZWNhdXNlX3RoZV9uZXh0X21ldGhvZF9vZl9pdHNfaXRlcmF0b3JfZXhwZWN0c190eXBlXzFfYnV0X2FycmF5X3NwcmVhZF93aWxsX2FsXzI3NjRcIixcIkNhbm5vdCBpdGVyYXRlIHZhbHVlIGJlY2F1c2UgdGhlICduZXh0JyBtZXRob2Qgb2YgaXRzIGl0ZXJhdG9yIGV4cGVjdHMgdHlwZSAnezF9JywgYnV0IGFycmF5IHNwcmVhZCB3aWxsIGFsd2F5cyBzZW5kICd7MH0nLlwiKSxDYW5ub3RfaXRlcmF0ZV92YWx1ZV9iZWNhdXNlX3RoZV9uZXh0X21ldGhvZF9vZl9pdHNfaXRlcmF0b3JfZXhwZWN0c190eXBlXzFfYnV0X2FycmF5X2Rlc3RydWN0dXJpbmdfd2lsbF9hbHdheXNfc2VuZF8wOmEoMjc2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9pdGVyYXRlX3ZhbHVlX2JlY2F1c2VfdGhlX25leHRfbWV0aG9kX29mX2l0c19pdGVyYXRvcl9leHBlY3RzX3R5cGVfMV9idXRfYXJyYXlfZGVzdHJ1Y3R1cmluZ19fMjc2NVwiLFwiQ2Fubm90IGl0ZXJhdGUgdmFsdWUgYmVjYXVzZSB0aGUgJ25leHQnIG1ldGhvZCBvZiBpdHMgaXRlcmF0b3IgZXhwZWN0cyB0eXBlICd7MX0nLCBidXQgYXJyYXkgZGVzdHJ1Y3R1cmluZyB3aWxsIGFsd2F5cyBzZW5kICd7MH0nLlwiKSxDYW5ub3RfZGVsZWdhdGVfaXRlcmF0aW9uX3RvX3ZhbHVlX2JlY2F1c2VfdGhlX25leHRfbWV0aG9kX29mX2l0c19pdGVyYXRvcl9leHBlY3RzX3R5cGVfMV9idXRfdGhlX2NvbnRhaW5pbmdfZ2VuZXJhdG9yX3dpbGxfYWx3YXlzX3NlbmRfMDphKDI3NjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfZGVsZWdhdGVfaXRlcmF0aW9uX3RvX3ZhbHVlX2JlY2F1c2VfdGhlX25leHRfbWV0aG9kX29mX2l0c19pdGVyYXRvcl9leHBlY3RzX3R5cGVfMV9idXRfdGhlX2NvXzI3NjZcIixcIkNhbm5vdCBkZWxlZ2F0ZSBpdGVyYXRpb24gdG8gdmFsdWUgYmVjYXVzZSB0aGUgJ25leHQnIG1ldGhvZCBvZiBpdHMgaXRlcmF0b3IgZXhwZWN0cyB0eXBlICd7MX0nLCBidXQgdGhlIGNvbnRhaW5pbmcgZ2VuZXJhdG9yIHdpbGwgYWx3YXlzIHNlbmQgJ3swfScuXCIpLFRoZV8wX3Byb3BlcnR5X29mX2FuX2l0ZXJhdG9yX211c3RfYmVfYV9tZXRob2Q6YSgyNzY3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlXzBfcHJvcGVydHlfb2ZfYW5faXRlcmF0b3JfbXVzdF9iZV9hX21ldGhvZF8yNzY3XCIsXCJUaGUgJ3swfScgcHJvcGVydHkgb2YgYW4gaXRlcmF0b3IgbXVzdCBiZSBhIG1ldGhvZC5cIiksVGhlXzBfcHJvcGVydHlfb2ZfYW5fYXN5bmNfaXRlcmF0b3JfbXVzdF9iZV9hX21ldGhvZDphKDI3NjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfMF9wcm9wZXJ0eV9vZl9hbl9hc3luY19pdGVyYXRvcl9tdXN0X2JlX2FfbWV0aG9kXzI3NjhcIixcIlRoZSAnezB9JyBwcm9wZXJ0eSBvZiBhbiBhc3luYyBpdGVyYXRvciBtdXN0IGJlIGEgbWV0aG9kLlwiKSxOb19vdmVybG9hZF9tYXRjaGVzX3RoaXNfY2FsbDphKDI3NjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb19vdmVybG9hZF9tYXRjaGVzX3RoaXNfY2FsbF8yNzY5XCIsXCJObyBvdmVybG9hZCBtYXRjaGVzIHRoaXMgY2FsbC5cIiksVGhlX2xhc3Rfb3ZlcmxvYWRfZ2F2ZV90aGVfZm9sbG93aW5nX2Vycm9yOmEoMjc3MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9sYXN0X292ZXJsb2FkX2dhdmVfdGhlX2ZvbGxvd2luZ19lcnJvcl8yNzcwXCIsXCJUaGUgbGFzdCBvdmVybG9hZCBnYXZlIHRoZSBmb2xsb3dpbmcgZXJyb3IuXCIpLFRoZV9sYXN0X292ZXJsb2FkX2lzX2RlY2xhcmVkX2hlcmU6YSgyNzcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2xhc3Rfb3ZlcmxvYWRfaXNfZGVjbGFyZWRfaGVyZV8yNzcxXCIsXCJUaGUgbGFzdCBvdmVybG9hZCBpcyBkZWNsYXJlZCBoZXJlLlwiKSxPdmVybG9hZF8wX29mXzFfMl9nYXZlX3RoZV9mb2xsb3dpbmdfZXJyb3I6YSgyNzcyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3ZlcmxvYWRfMF9vZl8xXzJfZ2F2ZV90aGVfZm9sbG93aW5nX2Vycm9yXzI3NzJcIixcIk92ZXJsb2FkIHswfSBvZiB7MX0sICd7Mn0nLCBnYXZlIHRoZSBmb2xsb3dpbmcgZXJyb3IuXCIpLERpZF95b3VfZm9yZ2V0X3RvX3VzZV9hd2FpdDphKDI3NzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEaWRfeW91X2ZvcmdldF90b191c2VfYXdhaXRfMjc3M1wiLFwiRGlkIHlvdSBmb3JnZXQgdG8gdXNlICdhd2FpdCc/XCIpLFRoaXNfY29uZGl0aW9uX3dpbGxfYWx3YXlzX3JldHVybl90cnVlX3NpbmNlX3RoaXNfZnVuY3Rpb25faXNfYWx3YXlzX2RlZmluZWRfRGlkX3lvdV9tZWFuX3RvX2NhbGxfaXRfaW5zdGVhZDphKDI3NzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX2NvbmRpdGlvbl93aWxsX2Fsd2F5c19yZXR1cm5fdHJ1ZV9zaW5jZV90aGlzX2Z1bmN0aW9uX2lzX2Fsd2F5c19kZWZpbmVkX0RpZF95b3VfbWVhbl90b19jYWxsX2l0XzI3NzRcIixcIlRoaXMgY29uZGl0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0cnVlIHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgYWx3YXlzIGRlZmluZWQuIERpZCB5b3UgbWVhbiB0byBjYWxsIGl0IGluc3RlYWQ/XCIpLEFzc2VydGlvbnNfcmVxdWlyZV9ldmVyeV9uYW1lX2luX3RoZV9jYWxsX3RhcmdldF90b19iZV9kZWNsYXJlZF93aXRoX2FuX2V4cGxpY2l0X3R5cGVfYW5ub3RhdGlvbjphKDI3NzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBc3NlcnRpb25zX3JlcXVpcmVfZXZlcnlfbmFtZV9pbl90aGVfY2FsbF90YXJnZXRfdG9fYmVfZGVjbGFyZWRfd2l0aF9hbl9leHBsaWNpdF90eXBlX2Fubm90YXRpb25fMjc3NVwiLFwiQXNzZXJ0aW9ucyByZXF1aXJlIGV2ZXJ5IG5hbWUgaW4gdGhlIGNhbGwgdGFyZ2V0IHRvIGJlIGRlY2xhcmVkIHdpdGggYW4gZXhwbGljaXQgdHlwZSBhbm5vdGF0aW9uLlwiKSxBc3NlcnRpb25zX3JlcXVpcmVfdGhlX2NhbGxfdGFyZ2V0X3RvX2JlX2FuX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWU6YSgyNzc2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQXNzZXJ0aW9uc19yZXF1aXJlX3RoZV9jYWxsX3RhcmdldF90b19iZV9hbl9pZGVudGlmaWVyX29yX3F1YWxpZmllZF9uYW1lXzI3NzZcIixcIkFzc2VydGlvbnMgcmVxdWlyZSB0aGUgY2FsbCB0YXJnZXQgdG8gYmUgYW4gaWRlbnRpZmllciBvciBxdWFsaWZpZWQgbmFtZS5cIiksVGhlX29wZXJhbmRfb2ZfYW5faW5jcmVtZW50X29yX2RlY3JlbWVudF9vcGVyYXRvcl9tYXlfbm90X2JlX2FuX29wdGlvbmFsX3Byb3BlcnR5X2FjY2VzczphKDI3NzcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfb3BlcmFuZF9vZl9hbl9pbmNyZW1lbnRfb3JfZGVjcmVtZW50X29wZXJhdG9yX21heV9ub3RfYmVfYW5fb3B0aW9uYWxfcHJvcGVydHlfYWNjZXNzXzI3NzdcIixcIlRoZSBvcGVyYW5kIG9mIGFuIGluY3JlbWVudCBvciBkZWNyZW1lbnQgb3BlcmF0b3IgbWF5IG5vdCBiZSBhbiBvcHRpb25hbCBwcm9wZXJ0eSBhY2Nlc3MuXCIpLFRoZV90YXJnZXRfb2ZfYW5fb2JqZWN0X3Jlc3RfYXNzaWdubWVudF9tYXlfbm90X2JlX2FuX29wdGlvbmFsX3Byb3BlcnR5X2FjY2VzczphKDI3NzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfdGFyZ2V0X29mX2FuX29iamVjdF9yZXN0X2Fzc2lnbm1lbnRfbWF5X25vdF9iZV9hbl9vcHRpb25hbF9wcm9wZXJ0eV9hY2Nlc3NfMjc3OFwiLFwiVGhlIHRhcmdldCBvZiBhbiBvYmplY3QgcmVzdCBhc3NpZ25tZW50IG1heSBub3QgYmUgYW4gb3B0aW9uYWwgcHJvcGVydHkgYWNjZXNzLlwiKSxUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXNzaWdubWVudF9leHByZXNzaW9uX21heV9ub3RfYmVfYW5fb3B0aW9uYWxfcHJvcGVydHlfYWNjZXNzOmEoMjc3OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9hc3NpZ25tZW50X2V4cHJlc3Npb25fbWF5X25vdF9iZV9hbl9vcHRpb25hbF9wcm9wZXJ0eV9hY2Nlc3NfMjc3OVwiLFwiVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBtYXkgbm90IGJlIGFuIG9wdGlvbmFsIHByb3BlcnR5IGFjY2Vzcy5cIiksVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tYXlfbm90X2JlX2FuX29wdGlvbmFsX3Byb3BlcnR5X2FjY2VzczphKDI3ODAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3JfaW5fc3RhdGVtZW50X21heV9ub3RfYmVfYW5fb3B0aW9uYWxfcHJvcGVydHlfYWNjZXNzXzI3ODBcIixcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhICdmb3IuLi5pbicgc3RhdGVtZW50IG1heSBub3QgYmUgYW4gb3B0aW9uYWwgcHJvcGVydHkgYWNjZXNzLlwiKSxUaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X21heV9ub3RfYmVfYW5fb3B0aW9uYWxfcHJvcGVydHlfYWNjZXNzOmEoMjc4MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hX2Zvcl9vZl9zdGF0ZW1lbnRfbWF5X25vdF9iZV9hbl9vcHRpb25hbF9wcm9wZXJ0eV9hY2Nlc3NfMjc4MVwiLFwiVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLm9mJyBzdGF0ZW1lbnQgbWF5IG5vdCBiZSBhbiBvcHRpb25hbCBwcm9wZXJ0eSBhY2Nlc3MuXCIpLF8wX25lZWRzX2FuX2V4cGxpY2l0X3R5cGVfYW5ub3RhdGlvbjphKDI3ODIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIl8wX25lZWRzX2FuX2V4cGxpY2l0X3R5cGVfYW5ub3RhdGlvbl8yNzgyXCIsXCInezB9JyBuZWVkcyBhbiBleHBsaWNpdCB0eXBlIGFubm90YXRpb24uXCIpLF8wX2lzX3NwZWNpZmllZF9tb3JlX3RoYW5fb25jZV9zb190aGlzX3VzYWdlX3dpbGxfYmVfb3ZlcndyaXR0ZW46YSgyNzgzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfaXNfc3BlY2lmaWVkX21vcmVfdGhhbl9vbmNlX3NvX3RoaXNfdXNhZ2Vfd2lsbF9iZV9vdmVyd3JpdHRlbl8yNzgzXCIsXCInezB9JyBpcyBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UsIHNvIHRoaXMgdXNhZ2Ugd2lsbCBiZSBvdmVyd3JpdHRlbi5cIiksZ2V0X2FuZF9zZXRfYWNjZXNzb3JzX2Nhbm5vdF9kZWNsYXJlX3RoaXNfcGFyYW1ldGVyczphKDI3ODQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJnZXRfYW5kX3NldF9hY2Nlc3NvcnNfY2Fubm90X2RlY2xhcmVfdGhpc19wYXJhbWV0ZXJzXzI3ODRcIixcIidnZXQnIGFuZCAnc2V0JyBhY2Nlc3NvcnMgY2Fubm90IGRlY2xhcmUgJ3RoaXMnIHBhcmFtZXRlcnMuXCIpLFRoaXNfc3ByZWFkX2Fsd2F5c19vdmVyd3JpdGVzX3RoaXNfcHJvcGVydHk6YSgyNzg1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19zcHJlYWRfYWx3YXlzX292ZXJ3cml0ZXNfdGhpc19wcm9wZXJ0eV8yNzg1XCIsXCJUaGlzIHNwcmVhZCBhbHdheXMgb3ZlcndyaXRlcyB0aGlzIHByb3BlcnR5LlwiKSxfMF9jYW5ub3RfYmVfdXNlZF9hc19hX0pTWF9jb21wb25lbnQ6YSgyNzg2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfY2Fubm90X2JlX3VzZWRfYXNfYV9KU1hfY29tcG9uZW50XzI3ODZcIixcIid7MH0nIGNhbm5vdCBiZSB1c2VkIGFzIGEgSlNYIGNvbXBvbmVudC5cIiksSXRzX3JldHVybl90eXBlXzBfaXNfbm90X2FfdmFsaWRfSlNYX2VsZW1lbnQ6YSgyNzg3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSXRzX3JldHVybl90eXBlXzBfaXNfbm90X2FfdmFsaWRfSlNYX2VsZW1lbnRfMjc4N1wiLFwiSXRzIHJldHVybiB0eXBlICd7MH0nIGlzIG5vdCBhIHZhbGlkIEpTWCBlbGVtZW50LlwiKSxJdHNfaW5zdGFuY2VfdHlwZV8wX2lzX25vdF9hX3ZhbGlkX0pTWF9lbGVtZW50OmEoMjc4OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkl0c19pbnN0YW5jZV90eXBlXzBfaXNfbm90X2FfdmFsaWRfSlNYX2VsZW1lbnRfMjc4OFwiLFwiSXRzIGluc3RhbmNlIHR5cGUgJ3swfScgaXMgbm90IGEgdmFsaWQgSlNYIGVsZW1lbnQuXCIpLEl0c19lbGVtZW50X3R5cGVfMF9pc19ub3RfYV92YWxpZF9KU1hfZWxlbWVudDphKDI3ODksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJdHNfZWxlbWVudF90eXBlXzBfaXNfbm90X2FfdmFsaWRfSlNYX2VsZW1lbnRfMjc4OVwiLFwiSXRzIGVsZW1lbnQgdHlwZSAnezB9JyBpcyBub3QgYSB2YWxpZCBKU1ggZWxlbWVudC5cIiksVGhlX29wZXJhbmRfb2ZfYV9kZWxldGVfb3BlcmF0b3JfbXVzdF9iZV9vcHRpb25hbDphKDI3OTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfb3BlcmFuZF9vZl9hX2RlbGV0ZV9vcGVyYXRvcl9tdXN0X2JlX29wdGlvbmFsXzI3OTBcIixcIlRoZSBvcGVyYW5kIG9mIGEgJ2RlbGV0ZScgb3BlcmF0b3IgbXVzdCBiZSBvcHRpb25hbC5cIiksRXhwb25lbnRpYXRpb25fY2Fubm90X2JlX3BlcmZvcm1lZF9vbl9iaWdpbnRfdmFsdWVzX3VubGVzc190aGVfdGFyZ2V0X29wdGlvbl9pc19zZXRfdG9fZXMyMDE2X29yX2xhdGVyOmEoMjc5MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cG9uZW50aWF0aW9uX2Nhbm5vdF9iZV9wZXJmb3JtZWRfb25fYmlnaW50X3ZhbHVlc191bmxlc3NfdGhlX3RhcmdldF9vcHRpb25faXNfc2V0X3RvX2VzMjAxNl9vcl9sYXRfMjc5MVwiLFwiRXhwb25lbnRpYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiAnYmlnaW50JyB2YWx1ZXMgdW5sZXNzIHRoZSAndGFyZ2V0JyBvcHRpb24gaXMgc2V0IHRvICdlczIwMTYnIG9yIGxhdGVyLlwiKSxDYW5ub3RfZmluZF9tb2R1bGVfMF9EaWRfeW91X21lYW5fdG9fc2V0X3RoZV9tb2R1bGVSZXNvbHV0aW9uX29wdGlvbl90b19ub2RlX29yX3RvX2FkZF9hbGlhc2VzX3RvX3RoZV9wYXRoc19vcHRpb246YSgyNzkyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfbW9kdWxlXzBfRGlkX3lvdV9tZWFuX3RvX3NldF90aGVfbW9kdWxlUmVzb2x1dGlvbl9vcHRpb25fdG9fbm9kZV9vcl90b19hZGRfYWxpYXNlc190b190aF8yNzkyXCIsXCJDYW5ub3QgZmluZCBtb2R1bGUgJ3swfScuIERpZCB5b3UgbWVhbiB0byBzZXQgdGhlICdtb2R1bGVSZXNvbHV0aW9uJyBvcHRpb24gdG8gJ25vZGUnLCBvciB0byBhZGQgYWxpYXNlcyB0byB0aGUgJ3BhdGhzJyBvcHRpb24/XCIpLFRoZV9jYWxsX3dvdWxkX2hhdmVfc3VjY2VlZGVkX2FnYWluc3RfdGhpc19pbXBsZW1lbnRhdGlvbl9idXRfaW1wbGVtZW50YXRpb25fc2lnbmF0dXJlc19vZl9vdmVybG9hZHNfYXJlX25vdF9leHRlcm5hbGx5X3Zpc2libGU6YSgyNzkzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2NhbGxfd291bGRfaGF2ZV9zdWNjZWVkZWRfYWdhaW5zdF90aGlzX2ltcGxlbWVudGF0aW9uX2J1dF9pbXBsZW1lbnRhdGlvbl9zaWduYXR1cmVzX29mX292ZXJsb2Fkc18yNzkzXCIsXCJUaGUgY2FsbCB3b3VsZCBoYXZlIHN1Y2NlZWRlZCBhZ2FpbnN0IHRoaXMgaW1wbGVtZW50YXRpb24sIGJ1dCBpbXBsZW1lbnRhdGlvbiBzaWduYXR1cmVzIG9mIG92ZXJsb2FkcyBhcmUgbm90IGV4dGVybmFsbHkgdmlzaWJsZS5cIiksRXhwZWN0ZWRfMF9hcmd1bWVudHNfYnV0X2dvdF8xX0RpZF95b3VfZm9yZ2V0X3RvX2luY2x1ZGVfdm9pZF9pbl95b3VyX3R5cGVfYXJndW1lbnRfdG9fUHJvbWlzZTphKDI3OTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzFfRGlkX3lvdV9mb3JnZXRfdG9faW5jbHVkZV92b2lkX2luX3lvdXJfdHlwZV9hcmd1bWVudF90b19Qcm9taXNlXzI3OTRcIixcIkV4cGVjdGVkIHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LiBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlICd2b2lkJyBpbiB5b3VyIHR5cGUgYXJndW1lbnQgdG8gJ1Byb21pc2UnP1wiKSxUaGVfaW50cmluc2ljX2tleXdvcmRfY2FuX29ubHlfYmVfdXNlZF90b19kZWNsYXJlX2NvbXBpbGVyX3Byb3ZpZGVkX2ludHJpbnNpY190eXBlczphKDI3OTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfaW50cmluc2ljX2tleXdvcmRfY2FuX29ubHlfYmVfdXNlZF90b19kZWNsYXJlX2NvbXBpbGVyX3Byb3ZpZGVkX2ludHJpbnNpY190eXBlc18yNzk1XCIsXCJUaGUgJ2ludHJpbnNpYycga2V5d29yZCBjYW4gb25seSBiZSB1c2VkIHRvIGRlY2xhcmUgY29tcGlsZXIgcHJvdmlkZWQgaW50cmluc2ljIHR5cGVzLlwiKSxJdF9pc19saWtlbHlfdGhhdF95b3VfYXJlX21pc3NpbmdfYV9jb21tYV90b19zZXBhcmF0ZV90aGVzZV90d29fdGVtcGxhdGVfZXhwcmVzc2lvbnNfVGhleV9mb3JtX2FfdGFnZ2VkX3RlbXBsYXRlX2V4cHJlc3Npb25fd2hpY2hfY2Fubm90X2JlX2ludm9rZWQ6YSgyNzk2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSXRfaXNfbGlrZWx5X3RoYXRfeW91X2FyZV9taXNzaW5nX2FfY29tbWFfdG9fc2VwYXJhdGVfdGhlc2VfdHdvX3RlbXBsYXRlX2V4cHJlc3Npb25zX1RoZXlfZm9ybV9hX3RhZ18yNzk2XCIsXCJJdCBpcyBsaWtlbHkgdGhhdCB5b3UgYXJlIG1pc3NpbmcgYSBjb21tYSB0byBzZXBhcmF0ZSB0aGVzZSB0d28gdGVtcGxhdGUgZXhwcmVzc2lvbnMuIFRoZXkgZm9ybSBhIHRhZ2dlZCB0ZW1wbGF0ZSBleHByZXNzaW9uIHdoaWNoIGNhbm5vdCBiZSBpbnZva2VkLlwiKSxBX21peGluX2NsYXNzX3RoYXRfZXh0ZW5kc19mcm9tX2FfdHlwZV92YXJpYWJsZV9jb250YWluaW5nX2FuX2Fic3RyYWN0X2NvbnN0cnVjdF9zaWduYXR1cmVfbXVzdF9hbHNvX2JlX2RlY2xhcmVkX2Fic3RyYWN0OmEoMjc5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfbWl4aW5fY2xhc3NfdGhhdF9leHRlbmRzX2Zyb21fYV90eXBlX3ZhcmlhYmxlX2NvbnRhaW5pbmdfYW5fYWJzdHJhY3RfY29uc3RydWN0X3NpZ25hdHVyZV9tdXN0X2Fsc29fMjc5N1wiLFwiQSBtaXhpbiBjbGFzcyB0aGF0IGV4dGVuZHMgZnJvbSBhIHR5cGUgdmFyaWFibGUgY29udGFpbmluZyBhbiBhYnN0cmFjdCBjb25zdHJ1Y3Qgc2lnbmF0dXJlIG11c3QgYWxzbyBiZSBkZWNsYXJlZCAnYWJzdHJhY3QnLlwiKSxUaGVfZGVjbGFyYXRpb25fd2FzX21hcmtlZF9hc19kZXByZWNhdGVkX2hlcmU6YSgyNzk4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2RlY2xhcmF0aW9uX3dhc19tYXJrZWRfYXNfZGVwcmVjYXRlZF9oZXJlXzI3OThcIixcIlRoZSBkZWNsYXJhdGlvbiB3YXMgbWFya2VkIGFzIGRlcHJlY2F0ZWQgaGVyZS5cIiksVHlwZV9wcm9kdWNlc19hX3R1cGxlX3R5cGVfdGhhdF9pc190b29fbGFyZ2VfdG9fcmVwcmVzZW50OmEoMjc5OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcHJvZHVjZXNfYV90dXBsZV90eXBlX3RoYXRfaXNfdG9vX2xhcmdlX3RvX3JlcHJlc2VudF8yNzk5XCIsXCJUeXBlIHByb2R1Y2VzIGEgdHVwbGUgdHlwZSB0aGF0IGlzIHRvbyBsYXJnZSB0byByZXByZXNlbnQuXCIpLEV4cHJlc3Npb25fcHJvZHVjZXNfYV90dXBsZV90eXBlX3RoYXRfaXNfdG9vX2xhcmdlX3RvX3JlcHJlc2VudDphKDI4MDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeHByZXNzaW9uX3Byb2R1Y2VzX2FfdHVwbGVfdHlwZV90aGF0X2lzX3Rvb19sYXJnZV90b19yZXByZXNlbnRfMjgwMFwiLFwiRXhwcmVzc2lvbiBwcm9kdWNlcyBhIHR1cGxlIHR5cGUgdGhhdCBpcyB0b28gbGFyZ2UgdG8gcmVwcmVzZW50LlwiKSxUaGlzX2NvbmRpdGlvbl93aWxsX2Fsd2F5c19yZXR1cm5fdHJ1ZV9zaW5jZV90aGlzXzBfaXNfYWx3YXlzX2RlZmluZWQ6YSgyODAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19jb25kaXRpb25fd2lsbF9hbHdheXNfcmV0dXJuX3RydWVfc2luY2VfdGhpc18wX2lzX2Fsd2F5c19kZWZpbmVkXzI4MDFcIixcIlRoaXMgY29uZGl0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0cnVlIHNpbmNlIHRoaXMgJ3swfScgaXMgYWx3YXlzIGRlZmluZWQuXCIpLFR5cGVfMF9jYW5fb25seV9iZV9pdGVyYXRlZF90aHJvdWdoX3doZW5fdXNpbmdfdGhlX2Rvd25sZXZlbEl0ZXJhdGlvbl9mbGFnX29yX3dpdGhfYV90YXJnZXRfb2ZfZXMyMDE1X29yX2hpZ2hlcjphKDI4MDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfY2FuX29ubHlfYmVfaXRlcmF0ZWRfdGhyb3VnaF93aGVuX3VzaW5nX3RoZV9kb3dubGV2ZWxJdGVyYXRpb25fZmxhZ19vcl93aXRoX2FfdGFyZ2V0X29mX2VzMjAxXzI4MDJcIixcIlR5cGUgJ3swfScgY2FuIG9ubHkgYmUgaXRlcmF0ZWQgdGhyb3VnaCB3aGVuIHVzaW5nIHRoZSAnLS1kb3dubGV2ZWxJdGVyYXRpb24nIGZsYWcgb3Igd2l0aCBhICctLXRhcmdldCcgb2YgJ2VzMjAxNScgb3IgaGlnaGVyLlwiKSxDYW5ub3RfYXNzaWduX3RvX3ByaXZhdGVfbWV0aG9kXzBfUHJpdmF0ZV9tZXRob2RzX2FyZV9ub3Rfd3JpdGFibGU6YSgyODAzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2Fzc2lnbl90b19wcml2YXRlX21ldGhvZF8wX1ByaXZhdGVfbWV0aG9kc19hcmVfbm90X3dyaXRhYmxlXzI4MDNcIixcIkNhbm5vdCBhc3NpZ24gdG8gcHJpdmF0ZSBtZXRob2QgJ3swfScuIFByaXZhdGUgbWV0aG9kcyBhcmUgbm90IHdyaXRhYmxlLlwiKSxEdXBsaWNhdGVfaWRlbnRpZmllcl8wX1N0YXRpY19hbmRfaW5zdGFuY2VfZWxlbWVudHNfY2Fubm90X3NoYXJlX3RoZV9zYW1lX3ByaXZhdGVfbmFtZTphKDI4MDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEdXBsaWNhdGVfaWRlbnRpZmllcl8wX1N0YXRpY19hbmRfaW5zdGFuY2VfZWxlbWVudHNfY2Fubm90X3NoYXJlX3RoZV9zYW1lX3ByaXZhdGVfbmFtZV8yODA0XCIsXCJEdXBsaWNhdGUgaWRlbnRpZmllciAnezB9Jy4gU3RhdGljIGFuZCBpbnN0YW5jZSBlbGVtZW50cyBjYW5ub3Qgc2hhcmUgdGhlIHNhbWUgcHJpdmF0ZSBuYW1lLlwiKSxQcml2YXRlX2FjY2Vzc29yX3dhc19kZWZpbmVkX3dpdGhvdXRfYV9nZXR0ZXI6YSgyODA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJpdmF0ZV9hY2Nlc3Nvcl93YXNfZGVmaW5lZF93aXRob3V0X2FfZ2V0dGVyXzI4MDZcIixcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlci5cIiksVGhpc19zeW50YXhfcmVxdWlyZXNfYW5faW1wb3J0ZWRfaGVscGVyX25hbWVkXzFfd2l0aF8yX3BhcmFtZXRlcnNfd2hpY2hfaXNfbm90X2NvbXBhdGlibGVfd2l0aF90aGVfb25lX2luXzBfQ29uc2lkZXJfdXBncmFkaW5nX3lvdXJfdmVyc2lvbl9vZl8wOmEoMjgwNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfc3ludGF4X3JlcXVpcmVzX2FuX2ltcG9ydGVkX2hlbHBlcl9uYW1lZF8xX3dpdGhfMl9wYXJhbWV0ZXJzX3doaWNoX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfdGhlX29fMjgwN1wiLFwiVGhpcyBzeW50YXggcmVxdWlyZXMgYW4gaW1wb3J0ZWQgaGVscGVyIG5hbWVkICd7MX0nIHdpdGggezJ9IHBhcmFtZXRlcnMsIHdoaWNoIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIG9uZSBpbiAnezB9Jy4gQ29uc2lkZXIgdXBncmFkaW5nIHlvdXIgdmVyc2lvbiBvZiAnezB9Jy5cIiksQV9nZXRfYWNjZXNzb3JfbXVzdF9iZV9hdF9sZWFzdF9hc19hY2Nlc3NpYmxlX2FzX3RoZV9zZXR0ZXI6YSgyODA4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9nZXRfYWNjZXNzb3JfbXVzdF9iZV9hdF9sZWFzdF9hc19hY2Nlc3NpYmxlX2FzX3RoZV9zZXR0ZXJfMjgwOFwiLFwiQSBnZXQgYWNjZXNzb3IgbXVzdCBiZSBhdCBsZWFzdCBhcyBhY2Nlc3NpYmxlIGFzIHRoZSBzZXR0ZXJcIiksRGVjbGFyYXRpb25fb3Jfc3RhdGVtZW50X2V4cGVjdGVkX1RoaXNfZm9sbG93c19hX2Jsb2NrX29mX3N0YXRlbWVudHNfc29faWZfeW91X2ludGVuZGVkX3RvX3dyaXRlX2FfZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X3lvdV9taWdodF9uZWVkX3RvX3dyYXBfdGhlX3RoZV93aG9sZV9hc3NpZ25tZW50X2luX3BhcmVudGhlc2VzOmEoMjgwOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRlY2xhcmF0aW9uX29yX3N0YXRlbWVudF9leHBlY3RlZF9UaGlzX2ZvbGxvd3NfYV9ibG9ja19vZl9zdGF0ZW1lbnRzX3NvX2lmX3lvdV9pbnRlbmRlZF90b193cml0ZV9hX2RfMjgwOVwiLFwiRGVjbGFyYXRpb24gb3Igc3RhdGVtZW50IGV4cGVjdGVkLiBUaGlzICc9JyBmb2xsb3dzIGEgYmxvY2sgb2Ygc3RhdGVtZW50cywgc28gaWYgeW91IGludGVuZGVkIHRvIHdyaXRlIGEgZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50LCB5b3UgbWlnaHQgbmVlZCB0byB3cmFwIHRoZSB0aGUgd2hvbGUgYXNzaWdubWVudCBpbiBwYXJlbnRoZXNlcy5cIiksRXhwZWN0ZWRfMV9hcmd1bWVudF9idXRfZ290XzBfbmV3X1Byb21pc2VfbmVlZHNfYV9KU0RvY19oaW50X3RvX3Byb2R1Y2VfYV9yZXNvbHZlX3RoYXRfY2FuX2JlX2NhbGxlZF93aXRob3V0X2FyZ3VtZW50czphKDI4MTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeHBlY3RlZF8xX2FyZ3VtZW50X2J1dF9nb3RfMF9uZXdfUHJvbWlzZV9uZWVkc19hX0pTRG9jX2hpbnRfdG9fcHJvZHVjZV9hX3Jlc29sdmVfdGhhdF9jYW5fYmVfY2FsbGVkXzI4MTBcIixcIkV4cGVjdGVkIDEgYXJndW1lbnQsIGJ1dCBnb3QgMC4gJ25ldyBQcm9taXNlKCknIG5lZWRzIGEgSlNEb2MgaGludCB0byBwcm9kdWNlIGEgJ3Jlc29sdmUnIHRoYXQgY2FuIGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy5cIiksSW5pdGlhbGl6ZXJfZm9yX3Byb3BlcnR5XzA6YSgyODExLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW5pdGlhbGl6ZXJfZm9yX3Byb3BlcnR5XzBfMjgxMVwiLFwiSW5pdGlhbGl6ZXIgZm9yIHByb3BlcnR5ICd7MH0nXCIpLFByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xX1RyeV9jaGFuZ2luZ190aGVfbGliX2NvbXBpbGVyX29wdGlvbl90b19pbmNsdWRlX2RvbTphKDI4MTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMV9UcnlfY2hhbmdpbmdfdGhlX2xpYl9jb21waWxlcl9vcHRpb25fdG9faW5jbHVkZV9kb21fMjgxMlwiLFwiUHJvcGVydHkgJ3swfScgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSAnezF9Jy4gVHJ5IGNoYW5naW5nIHRoZSAnbGliJyBjb21waWxlciBvcHRpb24gdG8gaW5jbHVkZSAnZG9tJy5cIiksQ2xhc3NfZGVjbGFyYXRpb25fY2Fubm90X2ltcGxlbWVudF9vdmVybG9hZF9saXN0X2Zvcl8wOmEoMjgxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNsYXNzX2RlY2xhcmF0aW9uX2Nhbm5vdF9pbXBsZW1lbnRfb3ZlcmxvYWRfbGlzdF9mb3JfMF8yODEzXCIsXCJDbGFzcyBkZWNsYXJhdGlvbiBjYW5ub3QgaW1wbGVtZW50IG92ZXJsb2FkIGxpc3QgZm9yICd7MH0nLlwiKSxGdW5jdGlvbl93aXRoX2JvZGllc19jYW5fb25seV9tZXJnZV93aXRoX2NsYXNzZXNfdGhhdF9hcmVfYW1iaWVudDphKDI4MTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGdW5jdGlvbl93aXRoX2JvZGllc19jYW5fb25seV9tZXJnZV93aXRoX2NsYXNzZXNfdGhhdF9hcmVfYW1iaWVudF8yODE0XCIsXCJGdW5jdGlvbiB3aXRoIGJvZGllcyBjYW4gb25seSBtZXJnZSB3aXRoIGNsYXNzZXMgdGhhdCBhcmUgYW1iaWVudC5cIiksYXJndW1lbnRzX2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX3Byb3BlcnR5X2luaXRpYWxpemVyczphKDI4MTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJhcmd1bWVudHNfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fcHJvcGVydHlfaW5pdGlhbGl6ZXJzXzI4MTVcIixcIidhcmd1bWVudHMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGluIHByb3BlcnR5IGluaXRpYWxpemVycy5cIiksQ2Fubm90X3VzZV90aGlzX2luX2Ffc3RhdGljX3Byb3BlcnR5X2luaXRpYWxpemVyX29mX2FfZGVjb3JhdGVkX2NsYXNzOmEoMjgxNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF91c2VfdGhpc19pbl9hX3N0YXRpY19wcm9wZXJ0eV9pbml0aWFsaXplcl9vZl9hX2RlY29yYXRlZF9jbGFzc18yODE2XCIsXCJDYW5ub3QgdXNlICd0aGlzJyBpbiBhIHN0YXRpYyBwcm9wZXJ0eSBpbml0aWFsaXplciBvZiBhIGRlY29yYXRlZCBjbGFzcy5cIiksUHJvcGVydHlfMF9oYXNfbm9faW5pdGlhbGl6ZXJfYW5kX2lzX25vdF9kZWZpbml0ZWx5X2Fzc2lnbmVkX2luX2FfY2xhc3Nfc3RhdGljX2Jsb2NrOmEoMjgxNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfaGFzX25vX2luaXRpYWxpemVyX2FuZF9pc19ub3RfZGVmaW5pdGVseV9hc3NpZ25lZF9pbl9hX2NsYXNzX3N0YXRpY19ibG9ja18yODE3XCIsXCJQcm9wZXJ0eSAnezB9JyBoYXMgbm8gaW5pdGlhbGl6ZXIgYW5kIGlzIG5vdCBkZWZpbml0ZWx5IGFzc2lnbmVkIGluIGEgY2xhc3Mgc3RhdGljIGJsb2NrLlwiKSxEdXBsaWNhdGVfaWRlbnRpZmllcl8wX0NvbXBpbGVyX3Jlc2VydmVzX25hbWVfMV93aGVuX2VtaXR0aW5nX3N1cGVyX3JlZmVyZW5jZXNfaW5fc3RhdGljX2luaXRpYWxpemVyczphKDI4MTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJEdXBsaWNhdGVfaWRlbnRpZmllcl8wX0NvbXBpbGVyX3Jlc2VydmVzX25hbWVfMV93aGVuX2VtaXR0aW5nX3N1cGVyX3JlZmVyZW5jZXNfaW5fc3RhdGljX2luaXRpYWxpemVyXzI4MThcIixcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICd7MH0nLiBDb21waWxlciByZXNlcnZlcyBuYW1lICd7MX0nIHdoZW4gZW1pdHRpbmcgJ3N1cGVyJyByZWZlcmVuY2VzIGluIHN0YXRpYyBpbml0aWFsaXplcnMuXCIpLE5hbWVzcGFjZV9uYW1lX2Nhbm5vdF9iZV8wOmEoMjgxOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5hbWVzcGFjZV9uYW1lX2Nhbm5vdF9iZV8wXzI4MTlcIixcIk5hbWVzcGFjZSBuYW1lIGNhbm5vdCBiZSAnezB9Jy5cIiksVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV9EaWRfeW91X21lYW5fMjphKDI4MjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xX0RpZF95b3VfbWVhbl8yXzI4MjBcIixcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9Jy4gRGlkIHlvdSBtZWFuICd7Mn0nP1wiKSxJbXBvcnRfYXNzZXJ0aW9uc19hcmVfb25seV9zdXBwb3J0ZWRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19zZXRfdG9fZXNuZXh0X29yX25vZGVuZXh0OmEoMjgyMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkltcG9ydF9hc3NlcnRpb25zX2FyZV9vbmx5X3N1cHBvcnRlZF93aGVuX3RoZV9tb2R1bGVfb3B0aW9uX2lzX3NldF90b19lc25leHRfb3Jfbm9kZW5leHRfMjgyMVwiLFwiSW1wb3J0IGFzc2VydGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIHdoZW4gdGhlICctLW1vZHVsZScgb3B0aW9uIGlzIHNldCB0byAnZXNuZXh0JyBvciAnbm9kZW5leHQnLlwiKSxJbXBvcnRfYXNzZXJ0aW9uc19jYW5ub3RfYmVfdXNlZF93aXRoX3R5cGVfb25seV9pbXBvcnRzX29yX2V4cG9ydHM6YSgyODIyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW1wb3J0X2Fzc2VydGlvbnNfY2Fubm90X2JlX3VzZWRfd2l0aF90eXBlX29ubHlfaW1wb3J0c19vcl9leHBvcnRzXzI4MjJcIixcIkltcG9ydCBhc3NlcnRpb25zIGNhbm5vdCBiZSB1c2VkIHdpdGggdHlwZS1vbmx5IGltcG9ydHMgb3IgZXhwb3J0cy5cIiksQ2Fubm90X2ZpbmRfbmFtZXNwYWNlXzBfRGlkX3lvdV9tZWFuXzE6YSgyODMzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfbmFtZXNwYWNlXzBfRGlkX3lvdV9tZWFuXzFfMjgzM1wiLFwiQ2Fubm90IGZpbmQgbmFtZXNwYWNlICd7MH0nLiBEaWQgeW91IG1lYW4gJ3sxfSc/XCIpLFJlbGF0aXZlX2ltcG9ydF9wYXRoc19uZWVkX2V4cGxpY2l0X2ZpbGVfZXh0ZW5zaW9uc19pbl9FY21hU2NyaXB0X2ltcG9ydHNfd2hlbl9tb2R1bGVSZXNvbHV0aW9uX2lzX25vZGUxNl9vcl9ub2RlbmV4dF9Db25zaWRlcl9hZGRpbmdfYW5fZXh0ZW5zaW9uX3RvX3RoZV9pbXBvcnRfcGF0aDphKDI4MzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZWxhdGl2ZV9pbXBvcnRfcGF0aHNfbmVlZF9leHBsaWNpdF9maWxlX2V4dGVuc2lvbnNfaW5fRWNtYVNjcmlwdF9pbXBvcnRzX3doZW5fbW9kdWxlUmVzb2x1dGlvbl9pc19uXzI4MzRcIixcIlJlbGF0aXZlIGltcG9ydCBwYXRocyBuZWVkIGV4cGxpY2l0IGZpbGUgZXh0ZW5zaW9ucyBpbiBFY21hU2NyaXB0IGltcG9ydHMgd2hlbiAnLS1tb2R1bGVSZXNvbHV0aW9uJyBpcyAnbm9kZTE2JyBvciAnbm9kZW5leHQnLiBDb25zaWRlciBhZGRpbmcgYW4gZXh0ZW5zaW9uIHRvIHRoZSBpbXBvcnQgcGF0aC5cIiksUmVsYXRpdmVfaW1wb3J0X3BhdGhzX25lZWRfZXhwbGljaXRfZmlsZV9leHRlbnNpb25zX2luX0VjbWFTY3JpcHRfaW1wb3J0c193aGVuX21vZHVsZVJlc29sdXRpb25faXNfbm9kZTE2X29yX25vZGVuZXh0X0RpZF95b3VfbWVhbl8wOmEoMjgzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJlbGF0aXZlX2ltcG9ydF9wYXRoc19uZWVkX2V4cGxpY2l0X2ZpbGVfZXh0ZW5zaW9uc19pbl9FY21hU2NyaXB0X2ltcG9ydHNfd2hlbl9tb2R1bGVSZXNvbHV0aW9uX2lzX25fMjgzNVwiLFwiUmVsYXRpdmUgaW1wb3J0IHBhdGhzIG5lZWQgZXhwbGljaXQgZmlsZSBleHRlbnNpb25zIGluIEVjbWFTY3JpcHQgaW1wb3J0cyB3aGVuICctLW1vZHVsZVJlc29sdXRpb24nIGlzICdub2RlMTYnIG9yICdub2RlbmV4dCcuIERpZCB5b3UgbWVhbiAnezB9Jz9cIiksSW1wb3J0X2Fzc2VydGlvbnNfYXJlX25vdF9hbGxvd2VkX29uX3N0YXRlbWVudHNfdGhhdF90cmFuc3BpbGVfdG9fY29tbW9uanNfcmVxdWlyZV9jYWxsczphKDI4MzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbXBvcnRfYXNzZXJ0aW9uc19hcmVfbm90X2FsbG93ZWRfb25fc3RhdGVtZW50c190aGF0X3RyYW5zcGlsZV90b19jb21tb25qc19yZXF1aXJlX2NhbGxzXzI4MzZcIixcIkltcG9ydCBhc3NlcnRpb25zIGFyZSBub3QgYWxsb3dlZCBvbiBzdGF0ZW1lbnRzIHRoYXQgdHJhbnNwaWxlIHRvIGNvbW1vbmpzICdyZXF1aXJlJyBjYWxscy5cIiksSW1wb3J0X2Fzc2VydGlvbl92YWx1ZXNfbXVzdF9iZV9zdHJpbmdfbGl0ZXJhbF9leHByZXNzaW9uczphKDI4MzcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbXBvcnRfYXNzZXJ0aW9uX3ZhbHVlc19tdXN0X2JlX3N0cmluZ19saXRlcmFsX2V4cHJlc3Npb25zXzI4MzdcIixcIkltcG9ydCBhc3NlcnRpb24gdmFsdWVzIG11c3QgYmUgc3RyaW5nIGxpdGVyYWwgZXhwcmVzc2lvbnMuXCIpLEFsbF9kZWNsYXJhdGlvbnNfb2ZfMF9tdXN0X2hhdmVfaWRlbnRpY2FsX2NvbnN0cmFpbnRzOmEoMjgzOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFsbF9kZWNsYXJhdGlvbnNfb2ZfMF9tdXN0X2hhdmVfaWRlbnRpY2FsX2NvbnN0cmFpbnRzXzI4MzhcIixcIkFsbCBkZWNsYXJhdGlvbnMgb2YgJ3swfScgbXVzdCBoYXZlIGlkZW50aWNhbCBjb25zdHJhaW50cy5cIiksSW1wb3J0X2RlY2xhcmF0aW9uXzBfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0ZTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbXBvcnRfZGVjbGFyYXRpb25fMF9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDAwXCIsXCJJbXBvcnQgZGVjbGFyYXRpb24gJ3swfScgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwMDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX3BhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDAyXCIsXCJUeXBlIHBhcmFtZXRlciAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMDRcIixcIlR5cGUgcGFyYW1ldGVyICd7MH0nIG9mIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJfMF9vZl9jb25zdHJ1Y3Rvcl9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMDZcIixcIlR5cGUgcGFyYW1ldGVyICd7MH0nIG9mIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBmcm9tIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX2NhbGxfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX3BhcmFtZXRlcl8wX29mX2NhbGxfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDA4XCIsXCJUeXBlIHBhcmFtZXRlciAnezB9JyBvZiBjYWxsIHNpZ25hdHVyZSBmcm9tIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDAxMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcGFyYW1ldGVyXzBfb2ZfcHVibGljX3N0YXRpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDAxMFwiLFwiVHlwZSBwYXJhbWV0ZXIgJ3swfScgb2YgcHVibGljIHN0YXRpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDEyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJfMF9vZl9wdWJsaWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMTJcIixcIlR5cGUgcGFyYW1ldGVyICd7MH0nIG9mIHB1YmxpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX21ldGhvZF9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDE0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJfMF9vZl9tZXRob2RfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMTRcIixcIlR5cGUgcGFyYW1ldGVyICd7MH0nIG9mIG1ldGhvZCBmcm9tIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2Z1bmN0aW9uX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX3BhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2Z1bmN0aW9uX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDE2XCIsXCJUeXBlIHBhcmFtZXRlciAnezB9JyBvZiBleHBvcnRlZCBmdW5jdGlvbiBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxJbXBsZW1lbnRzX2NsYXVzZV9vZl9leHBvcnRlZF9jbGFzc18wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbXBsZW1lbnRzX2NsYXVzZV9vZl9leHBvcnRlZF9jbGFzc18wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDE5XCIsXCJJbXBsZW1lbnRzIGNsYXVzZSBvZiBleHBvcnRlZCBjbGFzcyAnezB9JyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxleHRlbmRzX2NsYXVzZV9vZl9leHBvcnRlZF9jbGFzc18wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwMjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJleHRlbmRzX2NsYXVzZV9vZl9leHBvcnRlZF9jbGFzc18wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDIwXCIsXCInZXh0ZW5kcycgY2xhdXNlIG9mIGV4cG9ydGVkIGNsYXNzICd7MH0nIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLGV4dGVuZHNfY2xhdXNlX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMDphKDQwMjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJleHRlbmRzX2NsYXVzZV9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzBfNDAyMVwiLFwiJ2V4dGVuZHMnIGNsYXVzZSBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MH0nLlwiKSxleHRlbmRzX2NsYXVzZV9vZl9leHBvcnRlZF9pbnRlcmZhY2VfMF9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDIyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiZXh0ZW5kc19jbGF1c2Vfb2ZfZXhwb3J0ZWRfaW50ZXJmYWNlXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMjJcIixcIidleHRlbmRzJyBjbGF1c2Ugb2YgZXhwb3J0ZWQgaW50ZXJmYWNlICd7MH0nIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLEV4cG9ydGVkX3ZhcmlhYmxlXzBfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6YSg0MDIzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwb3J0ZWRfdmFyaWFibGVfMF9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZF80MDIzXCIsXCJFeHBvcnRlZCB2YXJpYWJsZSAnezB9JyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIGV4dGVybmFsIG1vZHVsZSB7Mn0gYnV0IGNhbm5vdCBiZSBuYW1lZC5cIiksRXhwb3J0ZWRfdmFyaWFibGVfMF9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeHBvcnRlZF92YXJpYWJsZV8wX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQwMjRcIixcIkV4cG9ydGVkIHZhcmlhYmxlICd7MH0nIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3syfScuXCIpLEV4cG9ydGVkX3ZhcmlhYmxlXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDAyNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cG9ydGVkX3ZhcmlhYmxlXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMjVcIixcIkV4cG9ydGVkIHZhcmlhYmxlICd7MH0nIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFB1YmxpY19zdGF0aWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDphKDQwMjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQdWJsaWNfc3RhdGljX3Byb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfXzQwMjZcIixcIlB1YmxpYyBzdGF0aWMgcHJvcGVydHkgJ3swfScgb2YgZXhwb3J0ZWQgY2xhc3MgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBleHRlcm5hbCBtb2R1bGUgezJ9IGJ1dCBjYW5ub3QgYmUgbmFtZWQuXCIpLFB1YmxpY19zdGF0aWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwMjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQdWJsaWNfc3RhdGljX3Byb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzJfNDAyN1wiLFwiUHVibGljIHN0YXRpYyBwcm9wZXJ0eSAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7Mn0nLlwiKSxQdWJsaWNfc3RhdGljX3Byb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDAyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlB1YmxpY19zdGF0aWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDAyOFwiLFwiUHVibGljIHN0YXRpYyBwcm9wZXJ0eSAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxQdWJsaWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDphKDQwMjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQdWJsaWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lXzQwMjlcIixcIlB1YmxpYyBwcm9wZXJ0eSAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIGV4dGVybmFsIG1vZHVsZSB7Mn0gYnV0IGNhbm5vdCBiZSBuYW1lZC5cIiksUHVibGljX3Byb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MDMwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHVibGljX3Byb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzJfNDAzMFwiLFwiUHVibGljIHByb3BlcnR5ICd7MH0nIG9mIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3syfScuXCIpLFB1YmxpY19wcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwMzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQdWJsaWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDAzMVwiLFwiUHVibGljIHByb3BlcnR5ICd7MH0nIG9mIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFByb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmEoNDAzMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQwMzJcIixcIlByb3BlcnR5ICd7MH0nIG9mIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7Mn0nLlwiKSxQcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDMzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMzNcIixcIlByb3BlcnR5ICd7MH0nIG9mIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxQYXJhbWV0ZXJfdHlwZV9vZl9wdWJsaWNfc3RhdGljX3NldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MDM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyX3R5cGVfb2ZfcHVibGljX3N0YXRpY19zZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZF80MDM0XCIsXCJQYXJhbWV0ZXIgdHlwZSBvZiBwdWJsaWMgc3RhdGljIHNldHRlciAnezB9JyBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3syfScuXCIpLFBhcmFtZXRlcl90eXBlX29mX3B1YmxpY19zdGF0aWNfc2V0dGVyXzBfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDM1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyX3R5cGVfb2ZfcHVibGljX3N0YXRpY19zZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDM1XCIsXCJQYXJhbWV0ZXIgdHlwZSBvZiBwdWJsaWMgc3RhdGljIHNldHRlciAnezB9JyBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFBhcmFtZXRlcl90eXBlX29mX3B1YmxpY19zZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmEoNDAzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl90eXBlX29mX3B1YmxpY19zZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQwMzZcIixcIlBhcmFtZXRlciB0eXBlIG9mIHB1YmxpYyBzZXR0ZXIgJ3swfScgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7Mn0nLlwiKSxQYXJhbWV0ZXJfdHlwZV9vZl9wdWJsaWNfc2V0dGVyXzBfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDM3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyX3R5cGVfb2ZfcHVibGljX3NldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwMzdcIixcIlBhcmFtZXRlciB0eXBlIG9mIHB1YmxpYyBzZXR0ZXIgJ3swfScgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxSZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX2dldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6YSg0MDM4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfcHVibGljX3N0YXRpY19nZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bF80MDM4XCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgc3RhdGljIGdldHRlciAnezB9JyBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gZXh0ZXJuYWwgbW9kdWxlIHsyfSBidXQgY2Fubm90IGJlIG5hbWVkLlwiKSxSZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX2dldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MDM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfcHVibGljX3N0YXRpY19nZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV80MDM5XCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgc3RhdGljIGdldHRlciAnezB9JyBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3syfScuXCIpLFJldHVybl90eXBlX29mX3B1YmxpY19zdGF0aWNfZ2V0dGVyXzBfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MDQwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfcHVibGljX3N0YXRpY19nZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDQwXCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgc3RhdGljIGdldHRlciAnezB9JyBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFJldHVybl90eXBlX29mX3B1YmxpY19nZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfY2Fubm90X2JlX25hbWVkOmEoNDA0MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX3B1YmxpY19nZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfNDA0MVwiLFwiUmV0dXJuIHR5cGUgb2YgcHVibGljIGdldHRlciAnezB9JyBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gZXh0ZXJuYWwgbW9kdWxlIHsyfSBidXQgY2Fubm90IGJlIG5hbWVkLlwiKSxSZXR1cm5fdHlwZV9vZl9wdWJsaWNfZ2V0dGVyXzBfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwNDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXR1cm5fdHlwZV9vZl9wdWJsaWNfZ2V0dGVyXzBfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMl80MDQyXCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgZ2V0dGVyICd7MH0nIGZyb20gZXhwb3J0ZWQgY2xhc3MgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezJ9Jy5cIiksUmV0dXJuX3R5cGVfb2ZfcHVibGljX2dldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDA0MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX3B1YmxpY19nZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDQzXCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgZ2V0dGVyICd7MH0nIGZyb20gZXhwb3J0ZWQgY2xhc3MgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksUmV0dXJuX3R5cGVfb2ZfY29uc3RydWN0b3Jfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9wcml2YXRlX21vZHVsZV8xOmEoNDA0NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2RfNDA0NFwiLFwiUmV0dXJuIHR5cGUgb2YgY29uc3RydWN0b3Igc2lnbmF0dXJlIGZyb20gZXhwb3J0ZWQgaW50ZXJmYWNlIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MH0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3sxfScuXCIpLFJldHVybl90eXBlX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzA6YSg0MDQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfY29uc3RydWN0b3Jfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMF80MDQ1XCIsXCJSZXR1cm4gdHlwZSBvZiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezB9Jy5cIiksUmV0dXJuX3R5cGVfb2ZfY2FsbF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX3ByaXZhdGVfbW9kdWxlXzE6YSg0MDQ2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfY2FsbF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX3ByaXZhdGVfbW9kdWxlXzFfNDA0NlwiLFwiUmV0dXJuIHR5cGUgb2YgY2FsbCBzaWduYXR1cmUgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3swfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezF9Jy5cIiksUmV0dXJuX3R5cGVfb2ZfY2FsbF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wOmEoNDA0NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX2NhbGxfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMF80MDQ3XCIsXCJSZXR1cm4gdHlwZSBvZiBjYWxsIHNpZ25hdHVyZSBmcm9tIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MH0nLlwiKSxSZXR1cm5fdHlwZV9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX3ByaXZhdGVfbW9kdWxlXzE6YSg0MDQ4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfaW5kZXhfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9wcml2YXRlX21vZHVsZV8xXzQwNDhcIixcIlJldHVybiB0eXBlIG9mIGluZGV4IHNpZ25hdHVyZSBmcm9tIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezB9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7MX0nLlwiKSxSZXR1cm5fdHlwZV9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wOmEoNDA0OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX2luZGV4X3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzBfNDA0OVwiLFwiUmV0dXJuIHR5cGUgb2YgaW5kZXggc2lnbmF0dXJlIGZyb20gZXhwb3J0ZWQgaW50ZXJmYWNlIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3swfScuXCIpLFJldHVybl90eXBlX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX2V4dGVybmFsX21vZHVsZV8xX2J1dF9jYW5ub3RfYmVfbmFtZWQ6YSg0MDUwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfcHVibGljX3N0YXRpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fZXh0ZXJuYWxfbW9kdWxlX180MDUwXCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgc3RhdGljIG1ldGhvZCBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MH0nIGZyb20gZXh0ZXJuYWwgbW9kdWxlIHsxfSBidXQgY2Fubm90IGJlIG5hbWVkLlwiKSxSZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9wcml2YXRlX21vZHVsZV8xOmEoNDA1MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX3ByaXZhdGVfbW9kdWxlXzFfNDA1MVwiLFwiUmV0dXJuIHR5cGUgb2YgcHVibGljIHN0YXRpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezB9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7MX0nLlwiKSxSZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMDphKDQwNTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMF80MDUyXCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgc3RhdGljIG1ldGhvZCBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3swfScuXCIpLFJldHVybl90eXBlX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzFfYnV0X2Nhbm5vdF9iZV9uYW1lZDphKDQwNTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXR1cm5fdHlwZV9vZl9wdWJsaWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX2V4dGVybmFsX21vZHVsZV8xX2J1dF9jXzQwNTNcIixcIlJldHVybiB0eXBlIG9mIHB1YmxpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezB9JyBmcm9tIGV4dGVybmFsIG1vZHVsZSB7MX0gYnV0IGNhbm5vdCBiZSBuYW1lZC5cIiksUmV0dXJuX3R5cGVfb2ZfcHVibGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9wcml2YXRlX21vZHVsZV8xOmEoNDA1NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMV80MDU0XCIsXCJSZXR1cm4gdHlwZSBvZiBwdWJsaWMgbWV0aG9kIGZyb20gZXhwb3J0ZWQgY2xhc3MgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3swfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezF9Jy5cIiksUmV0dXJuX3R5cGVfb2ZfcHVibGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMDphKDQwNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXR1cm5fdHlwZV9vZl9wdWJsaWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wXzQwNTVcIixcIlJldHVybiB0eXBlIG9mIHB1YmxpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MH0nLlwiKSxSZXR1cm5fdHlwZV9vZl9tZXRob2RfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX3ByaXZhdGVfbW9kdWxlXzE6YSg0MDU2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9wcml2YXRlX21vZHVsZV8xXzQwNTZcIixcIlJldHVybiB0eXBlIG9mIG1ldGhvZCBmcm9tIGV4cG9ydGVkIGludGVyZmFjZSBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezB9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7MX0nLlwiKSxSZXR1cm5fdHlwZV9vZl9tZXRob2RfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wOmEoNDA1NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX21ldGhvZF9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzBfNDA1N1wiLFwiUmV0dXJuIHR5cGUgb2YgbWV0aG9kIGZyb20gZXhwb3J0ZWQgaW50ZXJmYWNlIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3swfScuXCIpLFJldHVybl90eXBlX29mX2V4cG9ydGVkX2Z1bmN0aW9uX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9leHRlcm5hbF9tb2R1bGVfMV9idXRfY2Fubm90X2JlX25hbWVkOmEoNDA1OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJldHVybl90eXBlX29mX2V4cG9ydGVkX2Z1bmN0aW9uX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9leHRlcm5hbF9tb2R1bGVfMV9idXRfY2Fubm90X2JlX25hbWVkXzQwNThcIixcIlJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MH0nIGZyb20gZXh0ZXJuYWwgbW9kdWxlIHsxfSBidXQgY2Fubm90IGJlIG5hbWVkLlwiKSxSZXR1cm5fdHlwZV9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMTphKDQwNTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXR1cm5fdHlwZV9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMV80MDU5XCIsXCJSZXR1cm4gdHlwZSBvZiBleHBvcnRlZCBmdW5jdGlvbiBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezB9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7MX0nLlwiKSxSZXR1cm5fdHlwZV9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzA6YSg0MDYwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmV0dXJuX3R5cGVfb2ZfZXhwb3J0ZWRfZnVuY3Rpb25faGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wXzQwNjBcIixcIlJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3swfScuXCIpLFBhcmFtZXRlcl8wX29mX2NvbnN0cnVjdG9yX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6YSg0MDYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyXzBfb2ZfY29uc3RydWN0b3JfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbl80MDYxXCIsXCJQYXJhbWV0ZXIgJ3swfScgb2YgY29uc3RydWN0b3IgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIGV4dGVybmFsIG1vZHVsZSB7Mn0gYnV0IGNhbm5vdCBiZSBuYW1lZC5cIiksUGFyYW1ldGVyXzBfb2ZfY29uc3RydWN0b3JfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwNjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9jb25zdHJ1Y3Rvcl9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQwNjJcIixcIlBhcmFtZXRlciAnezB9JyBvZiBjb25zdHJ1Y3RvciBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3syfScuXCIpLFBhcmFtZXRlcl8wX29mX2NvbnN0cnVjdG9yX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDA2MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX29mX2NvbnN0cnVjdG9yX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwNjNcIixcIlBhcmFtZXRlciAnezB9JyBvZiBjb25zdHJ1Y3RvciBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFBhcmFtZXRlcl8wX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwNjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9jb25zdHJ1Y3Rvcl9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kXzQwNjRcIixcIlBhcmFtZXRlciAnezB9JyBvZiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezJ9Jy5cIiksUGFyYW1ldGVyXzBfb2ZfY29uc3RydWN0b3Jfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwNjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9jb25zdHJ1Y3Rvcl9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwNjVcIixcIlBhcmFtZXRlciAnezB9JyBvZiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksUGFyYW1ldGVyXzBfb2ZfY2FsbF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MDY2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyXzBfb2ZfY2FsbF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzJfNDA2NlwiLFwiUGFyYW1ldGVyICd7MH0nIG9mIGNhbGwgc2lnbmF0dXJlIGZyb20gZXhwb3J0ZWQgaW50ZXJmYWNlIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3syfScuXCIpLFBhcmFtZXRlcl8wX29mX2NhbGxfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwNjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9jYWxsX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDA2N1wiLFwiUGFyYW1ldGVyICd7MH0nIG9mIGNhbGwgc2lnbmF0dXJlIGZyb20gZXhwb3J0ZWQgaW50ZXJmYWNlIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFBhcmFtZXRlcl8wX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6YSg0MDY4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyXzBfb2ZfcHVibGljX3N0YXRpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlX180MDY4XCIsXCJQYXJhbWV0ZXIgJ3swfScgb2YgcHVibGljIHN0YXRpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIGV4dGVybmFsIG1vZHVsZSB7Mn0gYnV0IGNhbm5vdCBiZSBuYW1lZC5cIiksUGFyYW1ldGVyXzBfb2ZfcHVibGljX3N0YXRpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwNjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9wdWJsaWNfc3RhdGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQwNjlcIixcIlBhcmFtZXRlciAnezB9JyBvZiBwdWJsaWMgc3RhdGljIG1ldGhvZCBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gcHJpdmF0ZSBtb2R1bGUgJ3syfScuXCIpLFBhcmFtZXRlcl8wX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDA3MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwNzBcIixcIlBhcmFtZXRlciAnezB9JyBvZiBwdWJsaWMgc3RhdGljIG1ldGhvZCBmcm9tIGV4cG9ydGVkIGNsYXNzIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFBhcmFtZXRlcl8wX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDphKDQwNzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9wdWJsaWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jXzQwNzFcIixcIlBhcmFtZXRlciAnezB9JyBvZiBwdWJsaWMgbWV0aG9kIGZyb20gZXhwb3J0ZWQgY2xhc3MgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBleHRlcm5hbCBtb2R1bGUgezJ9IGJ1dCBjYW5ub3QgYmUgbmFtZWQuXCIpLFBhcmFtZXRlcl8wX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwNzIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9wdWJsaWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzJfNDA3MlwiLFwiUGFyYW1ldGVyICd7MH0nIG9mIHB1YmxpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7Mn0nLlwiKSxQYXJhbWV0ZXJfMF9vZl9wdWJsaWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDA3MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDA3M1wiLFwiUGFyYW1ldGVyICd7MH0nIG9mIHB1YmxpYyBtZXRob2QgZnJvbSBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxQYXJhbWV0ZXJfMF9vZl9tZXRob2RfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MDc0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyXzBfb2ZfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQwNzRcIixcIlBhcmFtZXRlciAnezB9JyBvZiBtZXRob2QgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezJ9Jy5cIiksUGFyYW1ldGVyXzBfb2ZfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwNzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9tZXRob2RfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwNzVcIixcIlBhcmFtZXRlciAnezB9JyBvZiBtZXRob2QgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksUGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfZnVuY3Rpb25faGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6YSg0MDc2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfZnVuY3Rpb25faGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWRfNDA3NlwiLFwiUGFyYW1ldGVyICd7MH0nIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICd7MX0nIGZyb20gZXh0ZXJuYWwgbW9kdWxlIHsyfSBidXQgY2Fubm90IGJlIG5hbWVkLlwiKSxQYXJhbWV0ZXJfMF9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwNzcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMl80MDc3XCIsXCJQYXJhbWV0ZXIgJ3swfScgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezJ9Jy5cIiksUGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfZnVuY3Rpb25faGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDA3OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2Z1bmN0aW9uX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDc4XCIsXCJQYXJhbWV0ZXIgJ3swfScgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksRXhwb3J0ZWRfdHlwZV9hbGlhc18wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwODEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJFeHBvcnRlZF90eXBlX2FsaWFzXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwODFcIixcIkV4cG9ydGVkIHR5cGUgYWxpYXMgJ3swfScgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksRGVmYXVsdF9leHBvcnRfb2ZfdGhlX21vZHVsZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzA6YSg0MDgyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRGVmYXVsdF9leHBvcnRfb2ZfdGhlX21vZHVsZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzBfNDA4MlwiLFwiRGVmYXVsdCBleHBvcnQgb2YgdGhlIG1vZHVsZSBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MH0nLlwiKSxUeXBlX3BhcmFtZXRlcl8wX29mX2V4cG9ydGVkX3R5cGVfYWxpYXNfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDA4MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfdHlwZV9hbGlhc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDA4M1wiLFwiVHlwZSBwYXJhbWV0ZXIgJ3swfScgb2YgZXhwb3J0ZWQgdHlwZSBhbGlhcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxFeHBvcnRlZF90eXBlX2FsaWFzXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xX2Zyb21fbW9kdWxlXzI6YSg0MDg0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwb3J0ZWRfdHlwZV9hbGlhc18wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV9mcm9tX21vZHVsZV8yXzQwODRcIixcIkV4cG9ydGVkIHR5cGUgYWxpYXMgJ3swfScgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9JyBmcm9tIG1vZHVsZSB7Mn0uXCIpLENvbmZsaWN0aW5nX2RlZmluaXRpb25zX2Zvcl8wX2ZvdW5kX2F0XzFfYW5kXzJfQ29uc2lkZXJfaW5zdGFsbGluZ19hX3NwZWNpZmljX3ZlcnNpb25fb2ZfdGhpc19saWJyYXJ5X3RvX3Jlc29sdmVfdGhlX2NvbmZsaWN0OmEoNDA5MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbmZsaWN0aW5nX2RlZmluaXRpb25zX2Zvcl8wX2ZvdW5kX2F0XzFfYW5kXzJfQ29uc2lkZXJfaW5zdGFsbGluZ19hX3NwZWNpZmljX3ZlcnNpb25fb2ZfdGhpc19saWJyYXJfNDA5MFwiLFwiQ29uZmxpY3RpbmcgZGVmaW5pdGlvbnMgZm9yICd7MH0nIGZvdW5kIGF0ICd7MX0nIGFuZCAnezJ9Jy4gQ29uc2lkZXIgaW5zdGFsbGluZyBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhpcyBsaWJyYXJ5IHRvIHJlc29sdmUgdGhlIGNvbmZsaWN0LlwiKSxQYXJhbWV0ZXJfMF9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MDkxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyXzBfb2ZfaW5kZXhfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQwOTFcIixcIlBhcmFtZXRlciAnezB9JyBvZiBpbmRleCBzaWduYXR1cmUgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezJ9Jy5cIiksUGFyYW1ldGVyXzBfb2ZfaW5kZXhfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwOTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQwOTJcIixcIlBhcmFtZXRlciAnezB9JyBvZiBpbmRleCBzaWduYXR1cmUgZnJvbSBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksUHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19leHByZXNzaW9uX21heV9ub3RfYmVfcHJpdmF0ZV9vcl9wcm90ZWN0ZWQ6YSg0MDk0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19leHByZXNzaW9uX21heV9ub3RfYmVfcHJpdmF0ZV9vcl9wcm90ZWN0ZWRfNDA5NFwiLFwiUHJvcGVydHkgJ3swfScgb2YgZXhwb3J0ZWQgY2xhc3MgZXhwcmVzc2lvbiBtYXkgbm90IGJlIHByaXZhdGUgb3IgcHJvdGVjdGVkLlwiKSxQdWJsaWNfc3RhdGljX21ldGhvZF8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfY2Fubm90X2JlX25hbWVkOmEoNDA5NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlB1YmxpY19zdGF0aWNfbWV0aG9kXzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfNDA5NVwiLFwiUHVibGljIHN0YXRpYyBtZXRob2QgJ3swfScgb2YgZXhwb3J0ZWQgY2xhc3MgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBleHRlcm5hbCBtb2R1bGUgezJ9IGJ1dCBjYW5ub3QgYmUgbmFtZWQuXCIpLFB1YmxpY19zdGF0aWNfbWV0aG9kXzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MDk2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHVibGljX3N0YXRpY19tZXRob2RfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMl80MDk2XCIsXCJQdWJsaWMgc3RhdGljIG1ldGhvZCAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7Mn0nLlwiKSxQdWJsaWNfc3RhdGljX21ldGhvZF8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQwOTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQdWJsaWNfc3RhdGljX21ldGhvZF8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMV80MDk3XCIsXCJQdWJsaWMgc3RhdGljIG1ldGhvZCAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxQdWJsaWNfbWV0aG9kXzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6YSg0MDk4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHVibGljX21ldGhvZF8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfY2Fubm90X2JlX25hbWVkXzQwOThcIixcIlB1YmxpYyBtZXRob2QgJ3swfScgb2YgZXhwb3J0ZWQgY2xhc3MgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBleHRlcm5hbCBtb2R1bGUgezJ9IGJ1dCBjYW5ub3QgYmUgbmFtZWQuXCIpLFB1YmxpY19tZXRob2RfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjphKDQwOTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQdWJsaWNfbWV0aG9kXzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzJfNDA5OVwiLFwiUHVibGljIG1ldGhvZCAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7Mn0nLlwiKSxQdWJsaWNfbWV0aG9kXzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmEoNDEwMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlB1YmxpY19tZXRob2RfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDEwMFwiLFwiUHVibGljIG1ldGhvZCAnezB9JyBvZiBleHBvcnRlZCBjbGFzcyBoYXMgb3IgaXMgdXNpbmcgcHJpdmF0ZSBuYW1lICd7MX0nLlwiKSxNZXRob2RfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6YSg0MTAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTWV0aG9kXzBfb2ZfZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQxMDFcIixcIk1ldGhvZCAnezB9JyBvZiBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBwcml2YXRlIG1vZHVsZSAnezJ9Jy5cIiksTWV0aG9kXzBfb2ZfZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQxMDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJNZXRob2RfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xXzQxMDJcIixcIk1ldGhvZCAnezB9JyBvZiBleHBvcnRlZCBpbnRlcmZhY2UgaGFzIG9yIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksVHlwZV9wYXJhbWV0ZXJfMF9vZl9leHBvcnRlZF9tYXBwZWRfb2JqZWN0X3R5cGVfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6YSg0MTAzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9wYXJhbWV0ZXJfMF9vZl9leHBvcnRlZF9tYXBwZWRfb2JqZWN0X3R5cGVfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDEwM1wiLFwiVHlwZSBwYXJhbWV0ZXIgJ3swfScgb2YgZXhwb3J0ZWQgbWFwcGVkIG9iamVjdCB0eXBlIGlzIHVzaW5nIHByaXZhdGUgbmFtZSAnezF9Jy5cIiksVGhlX3R5cGVfMF9pc19yZWFkb25seV9hbmRfY2Fubm90X2JlX2Fzc2lnbmVkX3RvX3RoZV9tdXRhYmxlX3R5cGVfMTphKDQxMDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfdHlwZV8wX2lzX3JlYWRvbmx5X2FuZF9jYW5ub3RfYmVfYXNzaWduZWRfdG9fdGhlX211dGFibGVfdHlwZV8xXzQxMDRcIixcIlRoZSB0eXBlICd7MH0nIGlzICdyZWFkb25seScgYW5kIGNhbm5vdCBiZSBhc3NpZ25lZCB0byB0aGUgbXV0YWJsZSB0eXBlICd7MX0nLlwiKSxQcml2YXRlX29yX3Byb3RlY3RlZF9tZW1iZXJfMF9jYW5ub3RfYmVfYWNjZXNzZWRfb25fYV90eXBlX3BhcmFtZXRlcjphKDQxMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcml2YXRlX29yX3Byb3RlY3RlZF9tZW1iZXJfMF9jYW5ub3RfYmVfYWNjZXNzZWRfb25fYV90eXBlX3BhcmFtZXRlcl80MTA1XCIsXCJQcml2YXRlIG9yIHByb3RlY3RlZCBtZW1iZXIgJ3swfScgY2Fubm90IGJlIGFjY2Vzc2VkIG9uIGEgdHlwZSBwYXJhbWV0ZXIuXCIpLFBhcmFtZXRlcl8wX29mX2FjY2Vzc29yX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTphKDQxMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9hY2Nlc3Nvcl9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzFfNDEwNlwiLFwiUGFyYW1ldGVyICd7MH0nIG9mIGFjY2Vzc29yIGhhcyBvciBpcyB1c2luZyBwcml2YXRlIG5hbWUgJ3sxfScuXCIpLFBhcmFtZXRlcl8wX29mX2FjY2Vzc29yX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmEoNDEwNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX29mX2FjY2Vzc29yX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yXzQxMDdcIixcIlBhcmFtZXRlciAnezB9JyBvZiBhY2Nlc3NvciBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnezF9JyBmcm9tIHByaXZhdGUgbW9kdWxlICd7Mn0nLlwiKSxQYXJhbWV0ZXJfMF9vZl9hY2Nlc3Nvcl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDphKDQxMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfMF9vZl9hY2Nlc3Nvcl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZF80MTA4XCIsXCJQYXJhbWV0ZXIgJ3swfScgb2YgYWNjZXNzb3IgaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ3sxfScgZnJvbSBleHRlcm5hbCBtb2R1bGUgJ3syfScgYnV0IGNhbm5vdCBiZSBuYW1lZC5cIiksVHlwZV9hcmd1bWVudHNfZm9yXzBfY2lyY3VsYXJseV9yZWZlcmVuY2VfdGhlbXNlbHZlczphKDQxMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUeXBlX2FyZ3VtZW50c19mb3JfMF9jaXJjdWxhcmx5X3JlZmVyZW5jZV90aGVtc2VsdmVzXzQxMDlcIixcIlR5cGUgYXJndW1lbnRzIGZvciAnezB9JyBjaXJjdWxhcmx5IHJlZmVyZW5jZSB0aGVtc2VsdmVzLlwiKSxUdXBsZV90eXBlX2FyZ3VtZW50c19jaXJjdWxhcmx5X3JlZmVyZW5jZV90aGVtc2VsdmVzOmEoNDExMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR1cGxlX3R5cGVfYXJndW1lbnRzX2NpcmN1bGFybHlfcmVmZXJlbmNlX3RoZW1zZWx2ZXNfNDExMFwiLFwiVHVwbGUgdHlwZSBhcmd1bWVudHMgY2lyY3VsYXJseSByZWZlcmVuY2UgdGhlbXNlbHZlcy5cIiksUHJvcGVydHlfMF9jb21lc19mcm9tX2FuX2luZGV4X3NpZ25hdHVyZV9zb19pdF9tdXN0X2JlX2FjY2Vzc2VkX3dpdGhfMDphKDQxMTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2NvbWVzX2Zyb21fYW5faW5kZXhfc2lnbmF0dXJlX3NvX2l0X211c3RfYmVfYWNjZXNzZWRfd2l0aF8wXzQxMTFcIixcIlByb3BlcnR5ICd7MH0nIGNvbWVzIGZyb20gYW4gaW5kZXggc2lnbmF0dXJlLCBzbyBpdCBtdXN0IGJlIGFjY2Vzc2VkIHdpdGggWyd7MH0nXS5cIiksVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdHNfY29udGFpbmluZ19jbGFzc18wX2RvZXNfbm90X2V4dGVuZF9hbm90aGVyX2NsYXNzOmEoNDExMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfY2xhc3NfMF9kb2VzX25vdF9leHRlbmRfYW5vdGhlcl9fNDExMlwiLFwiVGhpcyBtZW1iZXIgY2Fubm90IGhhdmUgYW4gJ292ZXJyaWRlJyBtb2RpZmllciBiZWNhdXNlIGl0cyBjb250YWluaW5nIGNsYXNzICd7MH0nIGRvZXMgbm90IGV4dGVuZCBhbm90aGVyIGNsYXNzLlwiKSxUaGlzX21lbWJlcl9jYW5ub3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wOmEoNDExMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzBfNDExM1wiLFwiVGhpcyBtZW1iZXIgY2Fubm90IGhhdmUgYW4gJ292ZXJyaWRlJyBtb2RpZmllciBiZWNhdXNlIGl0IGlzIG5vdCBkZWNsYXJlZCBpbiB0aGUgYmFzZSBjbGFzcyAnezB9Jy5cIiksVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzA6YSg0MTE0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzBfNDExNFwiLFwiVGhpcyBtZW1iZXIgbXVzdCBoYXZlIGFuICdvdmVycmlkZScgbW9kaWZpZXIgYmVjYXVzZSBpdCBvdmVycmlkZXMgYSBtZW1iZXIgaW4gdGhlIGJhc2UgY2xhc3MgJ3swfScuXCIpLFRoaXNfcGFyYW1ldGVyX3Byb3BlcnR5X211c3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X292ZXJyaWRlc19hX21lbWJlcl9pbl9iYXNlX2NsYXNzXzA6YSg0MTE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19wYXJhbWV0ZXJfcHJvcGVydHlfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX2Jhc2VfY2xhc3NfMF80MTE1XCIsXCJUaGlzIHBhcmFtZXRlciBwcm9wZXJ0eSBtdXN0IGhhdmUgYW4gJ292ZXJyaWRlJyBtb2RpZmllciBiZWNhdXNlIGl0IG92ZXJyaWRlcyBhIG1lbWJlciBpbiBiYXNlIGNsYXNzICd7MH0nLlwiKSxUaGlzX21lbWJlcl9tdXN0X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdF9vdmVycmlkZXNfYW5fYWJzdHJhY3RfbWV0aG9kX3RoYXRfaXNfZGVjbGFyZWRfaW5fdGhlX2Jhc2VfY2xhc3NfMDphKDQxMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX21lbWJlcl9tdXN0X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdF9vdmVycmlkZXNfYW5fYWJzdHJhY3RfbWV0aG9kX3RoYXRfaXNfZGVjbGFyZWRfXzQxMTZcIixcIlRoaXMgbWVtYmVyIG11c3QgaGF2ZSBhbiAnb3ZlcnJpZGUnIG1vZGlmaWVyIGJlY2F1c2UgaXQgb3ZlcnJpZGVzIGFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGlzIGRlY2xhcmVkIGluIHRoZSBiYXNlIGNsYXNzICd7MH0nLlwiKSxUaGlzX21lbWJlcl9jYW5ub3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wX0RpZF95b3VfbWVhbl8xOmEoNDExNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzBfRGlkX3lvdV9fNDExN1wiLFwiVGhpcyBtZW1iZXIgY2Fubm90IGhhdmUgYW4gJ292ZXJyaWRlJyBtb2RpZmllciBiZWNhdXNlIGl0IGlzIG5vdCBkZWNsYXJlZCBpbiB0aGUgYmFzZSBjbGFzcyAnezB9Jy4gRGlkIHlvdSBtZWFuICd7MX0nP1wiKSxUaGVfdHlwZV9vZl90aGlzX25vZGVfY2Fubm90X2JlX3NlcmlhbGl6ZWRfYmVjYXVzZV9pdHNfcHJvcGVydHlfMF9jYW5ub3RfYmVfc2VyaWFsaXplZDphKDQxMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfdHlwZV9vZl90aGlzX25vZGVfY2Fubm90X2JlX3NlcmlhbGl6ZWRfYmVjYXVzZV9pdHNfcHJvcGVydHlfMF9jYW5ub3RfYmVfc2VyaWFsaXplZF80MTE4XCIsXCJUaGUgdHlwZSBvZiB0aGlzIG5vZGUgY2Fubm90IGJlIHNlcmlhbGl6ZWQgYmVjYXVzZSBpdHMgcHJvcGVydHkgJ3swfScgY2Fubm90IGJlIHNlcmlhbGl6ZWQuXCIpLFRoaXNfbWVtYmVyX211c3RfaGF2ZV9hX0pTRG9jX2NvbW1lbnRfd2l0aF9hbl9vdmVycmlkZV90YWdfYmVjYXVzZV9pdF9vdmVycmlkZXNfYV9tZW1iZXJfaW5fdGhlX2Jhc2VfY2xhc3NfMDphKDQxMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX21lbWJlcl9tdXN0X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlXzQxMTlcIixcIlRoaXMgbWVtYmVyIG11c3QgaGF2ZSBhIEpTRG9jIGNvbW1lbnQgd2l0aCBhbiAnQG92ZXJyaWRlJyB0YWcgYmVjYXVzZSBpdCBvdmVycmlkZXMgYSBtZW1iZXIgaW4gdGhlIGJhc2UgY2xhc3MgJ3swfScuXCIpLFRoaXNfcGFyYW1ldGVyX3Byb3BlcnR5X211c3RfaGF2ZV9hX0pTRG9jX2NvbW1lbnRfd2l0aF9hbl9vdmVycmlkZV90YWdfYmVjYXVzZV9pdF9vdmVycmlkZXNfYV9tZW1iZXJfaW5fdGhlX2Jhc2VfY2xhc3NfMDphKDQxMjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX3BhcmFtZXRlcl9wcm9wZXJ0eV9tdXN0X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyXzQxMjBcIixcIlRoaXMgcGFyYW1ldGVyIHByb3BlcnR5IG11c3QgaGF2ZSBhIEpTRG9jIGNvbW1lbnQgd2l0aCBhbiAnQG92ZXJyaWRlJyB0YWcgYmVjYXVzZSBpdCBvdmVycmlkZXMgYSBtZW1iZXIgaW4gdGhlIGJhc2UgY2xhc3MgJ3swfScuXCIpLFRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0c19jb250YWluaW5nX2NsYXNzXzBfZG9lc19ub3RfZXh0ZW5kX2Fub3RoZXJfY2xhc3M6YSg0MTIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfY2xhc3NfMF9kb2VzX25vdF80MTIxXCIsXCJUaGlzIG1lbWJlciBjYW5ub3QgaGF2ZSBhIEpTRG9jIGNvbW1lbnQgd2l0aCBhbiAnQG92ZXJyaWRlJyB0YWcgYmVjYXVzZSBpdHMgY29udGFpbmluZyBjbGFzcyAnezB9JyBkb2VzIG5vdCBleHRlbmQgYW5vdGhlciBjbGFzcy5cIiksVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzA6YSg0MTIyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX180MTIyXCIsXCJUaGlzIG1lbWJlciBjYW5ub3QgaGF2ZSBhIEpTRG9jIGNvbW1lbnQgd2l0aCBhbiAnQG92ZXJyaWRlJyB0YWcgYmVjYXVzZSBpdCBpcyBub3QgZGVjbGFyZWQgaW4gdGhlIGJhc2UgY2xhc3MgJ3swfScuXCIpLFRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wX0RpZF95b3VfbWVhbl8xOmEoNDEyMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9fNDEyM1wiLFwiVGhpcyBtZW1iZXIgY2Fubm90IGhhdmUgYSBKU0RvYyBjb21tZW50IHdpdGggYW4gJ292ZXJyaWRlJyB0YWcgYmVjYXVzZSBpdCBpcyBub3QgZGVjbGFyZWQgaW4gdGhlIGJhc2UgY2xhc3MgJ3swfScuIERpZCB5b3UgbWVhbiAnezF9Jz9cIiksQ29tcGlsZXJfb3B0aW9uXzBfb2ZfdmFsdWVfMV9pc191bnN0YWJsZV9Vc2VfbmlnaHRseV9UeXBlU2NyaXB0X3RvX3NpbGVuY2VfdGhpc19lcnJvcl9UcnlfdXBkYXRpbmdfd2l0aF9ucG1faW5zdGFsbF9EX3R5cGVzY3JpcHRfbmV4dDphKDQxMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb21waWxlcl9vcHRpb25fMF9vZl92YWx1ZV8xX2lzX3Vuc3RhYmxlX1VzZV9uaWdodGx5X1R5cGVTY3JpcHRfdG9fc2lsZW5jZV90aGlzX2Vycm9yX1RyeV91cGRhdGluZ193XzQxMjRcIixcIkNvbXBpbGVyIG9wdGlvbiAnezB9JyBvZiB2YWx1ZSAnezF9JyBpcyB1bnN0YWJsZS4gVXNlIG5pZ2h0bHkgVHlwZVNjcmlwdCB0byBzaWxlbmNlIHRoaXMgZXJyb3IuIFRyeSB1cGRhdGluZyB3aXRoICducG0gaW5zdGFsbCAtRCB0eXBlc2NyaXB0QG5leHQnLlwiKSxSZXNvbHV0aW9uX21vZGVfYXNzZXJ0aW9uc19hcmVfdW5zdGFibGVfVXNlX25pZ2h0bHlfVHlwZVNjcmlwdF90b19zaWxlbmNlX3RoaXNfZXJyb3JfVHJ5X3VwZGF0aW5nX3dpdGhfbnBtX2luc3RhbGxfRF90eXBlc2NyaXB0X25leHQ6YSg0MTI1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUmVzb2x1dGlvbl9tb2RlX2Fzc2VydGlvbnNfYXJlX3Vuc3RhYmxlX1VzZV9uaWdodGx5X1R5cGVTY3JpcHRfdG9fc2lsZW5jZV90aGlzX2Vycm9yX1RyeV91cGRhdGluZ193aV80MTI1XCIsXCJSZXNvbHV0aW9uIG1vZGUgYXNzZXJ0aW9ucyBhcmUgdW5zdGFibGUuIFVzZSBuaWdodGx5IFR5cGVTY3JpcHQgdG8gc2lsZW5jZSB0aGlzIGVycm9yLiBUcnkgdXBkYXRpbmcgd2l0aCAnbnBtIGluc3RhbGwgLUQgdHlwZXNjcmlwdEBuZXh0Jy5cIiksVGhlX2N1cnJlbnRfaG9zdF9kb2VzX25vdF9zdXBwb3J0X3RoZV8wX29wdGlvbjphKDUwMDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfY3VycmVudF9ob3N0X2RvZXNfbm90X3N1cHBvcnRfdGhlXzBfb3B0aW9uXzUwMDFcIixcIlRoZSBjdXJyZW50IGhvc3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgJ3swfScgb3B0aW9uLlwiKSxDYW5ub3RfZmluZF90aGVfY29tbW9uX3N1YmRpcmVjdG9yeV9wYXRoX2Zvcl90aGVfaW5wdXRfZmlsZXM6YSg1MDA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfdGhlX2NvbW1vbl9zdWJkaXJlY3RvcnlfcGF0aF9mb3JfdGhlX2lucHV0X2ZpbGVzXzUwMDlcIixcIkNhbm5vdCBmaW5kIHRoZSBjb21tb24gc3ViZGlyZWN0b3J5IHBhdGggZm9yIHRoZSBpbnB1dCBmaWxlcy5cIiksRmlsZV9zcGVjaWZpY2F0aW9uX2Nhbm5vdF9lbmRfaW5fYV9yZWN1cnNpdmVfZGlyZWN0b3J5X3dpbGRjYXJkX0FzdGVyaXNrX0FzdGVyaXNrX0NvbG9uXzA6YSg1MDEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRmlsZV9zcGVjaWZpY2F0aW9uX2Nhbm5vdF9lbmRfaW5fYV9yZWN1cnNpdmVfZGlyZWN0b3J5X3dpbGRjYXJkX0FzdGVyaXNrX0FzdGVyaXNrX0NvbG9uXzBfNTAxMFwiLFwiRmlsZSBzcGVjaWZpY2F0aW9uIGNhbm5vdCBlbmQgaW4gYSByZWN1cnNpdmUgZGlyZWN0b3J5IHdpbGRjYXJkICgnKionKTogJ3swfScuXCIpLENhbm5vdF9yZWFkX2ZpbGVfMF9Db2xvbl8xOmEoNTAxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9yZWFkX2ZpbGVfMF9Db2xvbl8xXzUwMTJcIixcIkNhbm5vdCByZWFkIGZpbGUgJ3swfSc6IHsxfS5cIiksRmFpbGVkX3RvX3BhcnNlX2ZpbGVfMF9Db2xvbl8xOmEoNTAxNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZhaWxlZF90b19wYXJzZV9maWxlXzBfQ29sb25fMV81MDE0XCIsXCJGYWlsZWQgdG8gcGFyc2UgZmlsZSAnezB9JzogezF9LlwiKSxVbmtub3duX2NvbXBpbGVyX29wdGlvbl8wOmEoNTAyMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVua25vd25fY29tcGlsZXJfb3B0aW9uXzBfNTAyM1wiLFwiVW5rbm93biBjb21waWxlciBvcHRpb24gJ3swfScuXCIpLENvbXBpbGVyX29wdGlvbl8wX3JlcXVpcmVzX2FfdmFsdWVfb2ZfdHlwZV8xOmEoNTAyNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbXBpbGVyX29wdGlvbl8wX3JlcXVpcmVzX2FfdmFsdWVfb2ZfdHlwZV8xXzUwMjRcIixcIkNvbXBpbGVyIG9wdGlvbiAnezB9JyByZXF1aXJlcyBhIHZhbHVlIG9mIHR5cGUgezF9LlwiKSxVbmtub3duX2NvbXBpbGVyX29wdGlvbl8wX0RpZF95b3VfbWVhbl8xOmEoNTAyNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVua25vd25fY29tcGlsZXJfb3B0aW9uXzBfRGlkX3lvdV9tZWFuXzFfNTAyNVwiLFwiVW5rbm93biBjb21waWxlciBvcHRpb24gJ3swfScuIERpZCB5b3UgbWVhbiAnezF9Jz9cIiksQ291bGRfbm90X3dyaXRlX2ZpbGVfMF9Db2xvbl8xOmEoNTAzMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvdWxkX25vdF93cml0ZV9maWxlXzBfQ29sb25fMV81MDMzXCIsXCJDb3VsZCBub3Qgd3JpdGUgZmlsZSAnezB9JzogezF9LlwiKSxPcHRpb25fcHJvamVjdF9jYW5ub3RfYmVfbWl4ZWRfd2l0aF9zb3VyY2VfZmlsZXNfb25fYV9jb21tYW5kX2xpbmU6YSg1MDQyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uX3Byb2plY3RfY2Fubm90X2JlX21peGVkX3dpdGhfc291cmNlX2ZpbGVzX29uX2FfY29tbWFuZF9saW5lXzUwNDJcIixcIk9wdGlvbiAncHJvamVjdCcgY2Fubm90IGJlIG1peGVkIHdpdGggc291cmNlIGZpbGVzIG9uIGEgY29tbWFuZCBsaW5lLlwiKSxPcHRpb25faXNvbGF0ZWRNb2R1bGVzX2Nhbl9vbmx5X2JlX3VzZWRfd2hlbl9laXRoZXJfb3B0aW9uX21vZHVsZV9pc19wcm92aWRlZF9vcl9vcHRpb25fdGFyZ2V0X2lzX0VTMjAxNV9vcl9oaWdoZXI6YSg1MDQ3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uX2lzb2xhdGVkTW9kdWxlc19jYW5fb25seV9iZV91c2VkX3doZW5fZWl0aGVyX29wdGlvbl9tb2R1bGVfaXNfcHJvdmlkZWRfb3Jfb3B0aW9uX3RhcmdldF9pc19FU181MDQ3XCIsXCJPcHRpb24gJ2lzb2xhdGVkTW9kdWxlcycgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGVpdGhlciBvcHRpb24gJy0tbW9kdWxlJyBpcyBwcm92aWRlZCBvciBvcHRpb24gJ3RhcmdldCcgaXMgJ0VTMjAxNScgb3IgaGlnaGVyLlwiKSxPcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3doZW5fb3B0aW9uX3RhcmdldF9pc19FUzM6YSg1MDQ4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aGVuX29wdGlvbl90YXJnZXRfaXNfRVMzXzUwNDhcIixcIk9wdGlvbiAnezB9JyBjYW5ub3QgYmUgc3BlY2lmaWVkIHdoZW4gb3B0aW9uICd0YXJnZXQnIGlzICdFUzMnLlwiKSxPcHRpb25fMF9jYW5fb25seV9iZV91c2VkX3doZW5fZWl0aGVyX29wdGlvbl9pbmxpbmVTb3VyY2VNYXBfb3Jfb3B0aW9uX3NvdXJjZU1hcF9pc19wcm92aWRlZDphKDUwNTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPcHRpb25fMF9jYW5fb25seV9iZV91c2VkX3doZW5fZWl0aGVyX29wdGlvbl9pbmxpbmVTb3VyY2VNYXBfb3Jfb3B0aW9uX3NvdXJjZU1hcF9pc19wcm92aWRlZF81MDUxXCIsXCJPcHRpb24gJ3swfSBjYW4gb25seSBiZSB1c2VkIHdoZW4gZWl0aGVyIG9wdGlvbiAnLS1pbmxpbmVTb3VyY2VNYXAnIG9yIG9wdGlvbiAnLS1zb3VyY2VNYXAnIGlzIHByb3ZpZGVkLlwiKSxPcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhvdXRfc3BlY2lmeWluZ19vcHRpb25fMTphKDUwNTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhvdXRfc3BlY2lmeWluZ19vcHRpb25fMV81MDUyXCIsXCJPcHRpb24gJ3swfScgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRob3V0IHNwZWNpZnlpbmcgb3B0aW9uICd7MX0nLlwiKSxPcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhfb3B0aW9uXzE6YSg1MDUzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aXRoX29wdGlvbl8xXzUwNTNcIixcIk9wdGlvbiAnezB9JyBjYW5ub3QgYmUgc3BlY2lmaWVkIHdpdGggb3B0aW9uICd7MX0nLlwiKSxBX3RzY29uZmlnX2pzb25fZmlsZV9pc19hbHJlYWR5X2RlZmluZWRfYXRfQ29sb25fMDphKDUwNTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX3RzY29uZmlnX2pzb25fZmlsZV9pc19hbHJlYWR5X2RlZmluZWRfYXRfQ29sb25fMF81MDU0XCIsXCJBICd0c2NvbmZpZy5qc29uJyBmaWxlIGlzIGFscmVhZHkgZGVmaW5lZCBhdDogJ3swfScuXCIpLENhbm5vdF93cml0ZV9maWxlXzBfYmVjYXVzZV9pdF93b3VsZF9vdmVyd3JpdGVfaW5wdXRfZmlsZTphKDUwNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3Rfd3JpdGVfZmlsZV8wX2JlY2F1c2VfaXRfd291bGRfb3ZlcndyaXRlX2lucHV0X2ZpbGVfNTA1NVwiLFwiQ2Fubm90IHdyaXRlIGZpbGUgJ3swfScgYmVjYXVzZSBpdCB3b3VsZCBvdmVyd3JpdGUgaW5wdXQgZmlsZS5cIiksQ2Fubm90X3dyaXRlX2ZpbGVfMF9iZWNhdXNlX2l0X3dvdWxkX2JlX292ZXJ3cml0dGVuX2J5X211bHRpcGxlX2lucHV0X2ZpbGVzOmEoNTA1NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF93cml0ZV9maWxlXzBfYmVjYXVzZV9pdF93b3VsZF9iZV9vdmVyd3JpdHRlbl9ieV9tdWx0aXBsZV9pbnB1dF9maWxlc181MDU2XCIsXCJDYW5ub3Qgd3JpdGUgZmlsZSAnezB9JyBiZWNhdXNlIGl0IHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IG11bHRpcGxlIGlucHV0IGZpbGVzLlwiKSxDYW5ub3RfZmluZF9hX3RzY29uZmlnX2pzb25fZmlsZV9hdF90aGVfc3BlY2lmaWVkX2RpcmVjdG9yeV9Db2xvbl8wOmEoNTA1NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9maW5kX2FfdHNjb25maWdfanNvbl9maWxlX2F0X3RoZV9zcGVjaWZpZWRfZGlyZWN0b3J5X0NvbG9uXzBfNTA1N1wiLFwiQ2Fubm90IGZpbmQgYSB0c2NvbmZpZy5qc29uIGZpbGUgYXQgdGhlIHNwZWNpZmllZCBkaXJlY3Rvcnk6ICd7MH0nLlwiKSxUaGVfc3BlY2lmaWVkX3BhdGhfZG9lc19ub3RfZXhpc3RfQ29sb25fMDphKDUwNTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfc3BlY2lmaWVkX3BhdGhfZG9lc19ub3RfZXhpc3RfQ29sb25fMF81MDU4XCIsXCJUaGUgc3BlY2lmaWVkIHBhdGggZG9lcyBub3QgZXhpc3Q6ICd7MH0nLlwiKSxJbnZhbGlkX3ZhbHVlX2Zvcl9yZWFjdE5hbWVzcGFjZV8wX2lzX25vdF9hX3ZhbGlkX2lkZW50aWZpZXI6YSg1MDU5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW52YWxpZF92YWx1ZV9mb3JfcmVhY3ROYW1lc3BhY2VfMF9pc19ub3RfYV92YWxpZF9pZGVudGlmaWVyXzUwNTlcIixcIkludmFsaWQgdmFsdWUgZm9yICctLXJlYWN0TmFtZXNwYWNlJy4gJ3swfScgaXMgbm90IGEgdmFsaWQgaWRlbnRpZmllci5cIiksUGF0dGVybl8wX2Nhbl9oYXZlX2F0X21vc3Rfb25lX0FzdGVyaXNrX2NoYXJhY3RlcjphKDUwNjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXR0ZXJuXzBfY2FuX2hhdmVfYXRfbW9zdF9vbmVfQXN0ZXJpc2tfY2hhcmFjdGVyXzUwNjFcIixcIlBhdHRlcm4gJ3swfScgY2FuIGhhdmUgYXQgbW9zdCBvbmUgJyonIGNoYXJhY3Rlci5cIiksU3Vic3RpdHV0aW9uXzBfaW5fcGF0dGVybl8xX2Nhbl9oYXZlX2F0X21vc3Rfb25lX0FzdGVyaXNrX2NoYXJhY3RlcjphKDUwNjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTdWJzdGl0dXRpb25fMF9pbl9wYXR0ZXJuXzFfY2FuX2hhdmVfYXRfbW9zdF9vbmVfQXN0ZXJpc2tfY2hhcmFjdGVyXzUwNjJcIixcIlN1YnN0aXR1dGlvbiAnezB9JyBpbiBwYXR0ZXJuICd7MX0nIGNhbiBoYXZlIGF0IG1vc3Qgb25lICcqJyBjaGFyYWN0ZXIuXCIpLFN1YnN0aXR1dGlvbnNfZm9yX3BhdHRlcm5fMF9zaG91bGRfYmVfYW5fYXJyYXk6YSg1MDYzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU3Vic3RpdHV0aW9uc19mb3JfcGF0dGVybl8wX3Nob3VsZF9iZV9hbl9hcnJheV81MDYzXCIsXCJTdWJzdGl0dXRpb25zIGZvciBwYXR0ZXJuICd7MH0nIHNob3VsZCBiZSBhbiBhcnJheS5cIiksU3Vic3RpdHV0aW9uXzBfZm9yX3BhdHRlcm5fMV9oYXNfaW5jb3JyZWN0X3R5cGVfZXhwZWN0ZWRfc3RyaW5nX2dvdF8yOmEoNTA2NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlN1YnN0aXR1dGlvbl8wX2Zvcl9wYXR0ZXJuXzFfaGFzX2luY29ycmVjdF90eXBlX2V4cGVjdGVkX3N0cmluZ19nb3RfMl81MDY0XCIsXCJTdWJzdGl0dXRpb24gJ3swfScgZm9yIHBhdHRlcm4gJ3sxfScgaGFzIGluY29ycmVjdCB0eXBlLCBleHBlY3RlZCAnc3RyaW5nJywgZ290ICd7Mn0nLlwiKSxGaWxlX3NwZWNpZmljYXRpb25fY2Fubm90X2NvbnRhaW5fYV9wYXJlbnRfZGlyZWN0b3J5X3RoYXRfYXBwZWFyc19hZnRlcl9hX3JlY3Vyc2l2ZV9kaXJlY3Rvcnlfd2lsZGNhcmRfQXN0ZXJpc2tfQXN0ZXJpc2tfQ29sb25fMDphKDUwNjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGaWxlX3NwZWNpZmljYXRpb25fY2Fubm90X2NvbnRhaW5fYV9wYXJlbnRfZGlyZWN0b3J5X3RoYXRfYXBwZWFyc19hZnRlcl9hX3JlY3Vyc2l2ZV9kaXJlY3Rvcnlfd2lsZGNhXzUwNjVcIixcIkZpbGUgc3BlY2lmaWNhdGlvbiBjYW5ub3QgY29udGFpbiBhIHBhcmVudCBkaXJlY3RvcnkgKCcuLicpIHRoYXQgYXBwZWFycyBhZnRlciBhIHJlY3Vyc2l2ZSBkaXJlY3Rvcnkgd2lsZGNhcmQgKCcqKicpOiAnezB9Jy5cIiksU3Vic3RpdHV0aW9uc19mb3JfcGF0dGVybl8wX3Nob3VsZG5fdF9iZV9hbl9lbXB0eV9hcnJheTphKDUwNjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJTdWJzdGl0dXRpb25zX2Zvcl9wYXR0ZXJuXzBfc2hvdWxkbl90X2JlX2FuX2VtcHR5X2FycmF5XzUwNjZcIixcIlN1YnN0aXR1dGlvbnMgZm9yIHBhdHRlcm4gJ3swfScgc2hvdWxkbid0IGJlIGFuIGVtcHR5IGFycmF5LlwiKSxJbnZhbGlkX3ZhbHVlX2Zvcl9qc3hGYWN0b3J5XzBfaXNfbm90X2FfdmFsaWRfaWRlbnRpZmllcl9vcl9xdWFsaWZpZWRfbmFtZTphKDUwNjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJbnZhbGlkX3ZhbHVlX2Zvcl9qc3hGYWN0b3J5XzBfaXNfbm90X2FfdmFsaWRfaWRlbnRpZmllcl9vcl9xdWFsaWZpZWRfbmFtZV81MDY3XCIsXCJJbnZhbGlkIHZhbHVlIGZvciAnanN4RmFjdG9yeScuICd7MH0nIGlzIG5vdCBhIHZhbGlkIGlkZW50aWZpZXIgb3IgcXVhbGlmaWVkLW5hbWUuXCIpLEFkZGluZ19hX3RzY29uZmlnX2pzb25fZmlsZV93aWxsX2hlbHBfb3JnYW5pemVfcHJvamVjdHNfdGhhdF9jb250YWluX2JvdGhfVHlwZVNjcmlwdF9hbmRfSmF2YVNjcmlwdF9maWxlc19MZWFybl9tb3JlX2F0X2h0dHBzX0NvbG9uX1NsYXNoX1NsYXNoYWthX21zX1NsYXNodHNjb25maWc6YSg1MDY4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQWRkaW5nX2FfdHNjb25maWdfanNvbl9maWxlX3dpbGxfaGVscF9vcmdhbml6ZV9wcm9qZWN0c190aGF0X2NvbnRhaW5fYm90aF9UeXBlU2NyaXB0X2FuZF9KYXZhU2NyaXB0X181MDY4XCIsXCJBZGRpbmcgYSB0c2NvbmZpZy5qc29uIGZpbGUgd2lsbCBoZWxwIG9yZ2FuaXplIHByb2plY3RzIHRoYXQgY29udGFpbiBib3RoIFR5cGVTY3JpcHQgYW5kIEphdmFTY3JpcHQgZmlsZXMuIExlYXJuIG1vcmUgYXQgaHR0cHM6Ly9ha2EubXMvdHNjb25maWcuXCIpLE9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9zcGVjaWZ5aW5nX29wdGlvbl8xX29yX29wdGlvbl8yOmEoNTA2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9zcGVjaWZ5aW5nX29wdGlvbl8xX29yX29wdGlvbl8yXzUwNjlcIixcIk9wdGlvbiAnezB9JyBjYW5ub3QgYmUgc3BlY2lmaWVkIHdpdGhvdXQgc3BlY2lmeWluZyBvcHRpb24gJ3sxfScgb3Igb3B0aW9uICd7Mn0nLlwiKSxPcHRpb25fcmVzb2x2ZUpzb25Nb2R1bGVfY2Fubm90X2JlX3NwZWNpZmllZF93aXRob3V0X25vZGVfbW9kdWxlX3Jlc29sdXRpb25fc3RyYXRlZ3k6YSg1MDcwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uX3Jlc29sdmVKc29uTW9kdWxlX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9ub2RlX21vZHVsZV9yZXNvbHV0aW9uX3N0cmF0ZWd5XzUwNzBcIixcIk9wdGlvbiAnLS1yZXNvbHZlSnNvbk1vZHVsZScgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRob3V0ICdub2RlJyBtb2R1bGUgcmVzb2x1dGlvbiBzdHJhdGVneS5cIiksT3B0aW9uX3Jlc29sdmVKc29uTW9kdWxlX2Nhbl9vbmx5X2JlX3NwZWNpZmllZF93aGVuX21vZHVsZV9jb2RlX2dlbmVyYXRpb25faXNfY29tbW9uanNfYW1kX2VzMjAxNV9vcl9lc05leHQ6YSg1MDcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uX3Jlc29sdmVKc29uTW9kdWxlX2Nhbl9vbmx5X2JlX3NwZWNpZmllZF93aGVuX21vZHVsZV9jb2RlX2dlbmVyYXRpb25faXNfY29tbW9uanNfYW1kX2VzMjAxNV9vcl81MDcxXCIsXCJPcHRpb24gJy0tcmVzb2x2ZUpzb25Nb2R1bGUnIGNhbiBvbmx5IGJlIHNwZWNpZmllZCB3aGVuIG1vZHVsZSBjb2RlIGdlbmVyYXRpb24gaXMgJ2NvbW1vbmpzJywgJ2FtZCcsICdlczIwMTUnIG9yICdlc05leHQnLlwiKSxVbmtub3duX2J1aWxkX29wdGlvbl8wOmEoNTA3MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVua25vd25fYnVpbGRfb3B0aW9uXzBfNTA3MlwiLFwiVW5rbm93biBidWlsZCBvcHRpb24gJ3swfScuXCIpLEJ1aWxkX29wdGlvbl8wX3JlcXVpcmVzX2FfdmFsdWVfb2ZfdHlwZV8xOmEoNTA3MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkJ1aWxkX29wdGlvbl8wX3JlcXVpcmVzX2FfdmFsdWVfb2ZfdHlwZV8xXzUwNzNcIixcIkJ1aWxkIG9wdGlvbiAnezB9JyByZXF1aXJlcyBhIHZhbHVlIG9mIHR5cGUgezF9LlwiKSxPcHRpb25faW5jcmVtZW50YWxfY2FuX29ubHlfYmVfc3BlY2lmaWVkX3VzaW5nX3RzY29uZmlnX2VtaXR0aW5nX3RvX3NpbmdsZV9maWxlX29yX3doZW5fb3B0aW9uX3RzQnVpbGRJbmZvRmlsZV9pc19zcGVjaWZpZWQ6YSg1MDc0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uX2luY3JlbWVudGFsX2Nhbl9vbmx5X2JlX3NwZWNpZmllZF91c2luZ190c2NvbmZpZ19lbWl0dGluZ190b19zaW5nbGVfZmlsZV9vcl93aGVuX29wdGlvbl90c0J1aV81MDc0XCIsXCJPcHRpb24gJy0taW5jcmVtZW50YWwnIGNhbiBvbmx5IGJlIHNwZWNpZmllZCB1c2luZyB0c2NvbmZpZywgZW1pdHRpbmcgdG8gc2luZ2xlIGZpbGUgb3Igd2hlbiBvcHRpb24gJy0tdHNCdWlsZEluZm9GaWxlJyBpcyBzcGVjaWZpZWQuXCIpLF8wX2lzX2Fzc2lnbmFibGVfdG9fdGhlX2NvbnN0cmFpbnRfb2ZfdHlwZV8xX2J1dF8xX2NvdWxkX2JlX2luc3RhbnRpYXRlZF93aXRoX2FfZGlmZmVyZW50X3N1YnR5cGVfb2ZfY29uc3RyYWludF8yOmEoNTA3NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2lzX2Fzc2lnbmFibGVfdG9fdGhlX2NvbnN0cmFpbnRfb2ZfdHlwZV8xX2J1dF8xX2NvdWxkX2JlX2luc3RhbnRpYXRlZF93aXRoX2FfZGlmZmVyZW50X3N1YnR5cGVfb2ZfNTA3NVwiLFwiJ3swfScgaXMgYXNzaWduYWJsZSB0byB0aGUgY29uc3RyYWludCBvZiB0eXBlICd7MX0nLCBidXQgJ3sxfScgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICd7Mn0nLlwiKSxfMF9hbmRfMV9vcGVyYXRpb25zX2Nhbm5vdF9iZV9taXhlZF93aXRob3V0X3BhcmVudGhlc2VzOmEoNTA3NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2FuZF8xX29wZXJhdGlvbnNfY2Fubm90X2JlX21peGVkX3dpdGhvdXRfcGFyZW50aGVzZXNfNTA3NlwiLFwiJ3swfScgYW5kICd7MX0nIG9wZXJhdGlvbnMgY2Fubm90IGJlIG1peGVkIHdpdGhvdXQgcGFyZW50aGVzZXMuXCIpLFVua25vd25fYnVpbGRfb3B0aW9uXzBfRGlkX3lvdV9tZWFuXzE6YSg1MDc3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW5rbm93bl9idWlsZF9vcHRpb25fMF9EaWRfeW91X21lYW5fMV81MDc3XCIsXCJVbmtub3duIGJ1aWxkIG9wdGlvbiAnezB9Jy4gRGlkIHlvdSBtZWFuICd7MX0nP1wiKSxVbmtub3duX3dhdGNoX29wdGlvbl8wOmEoNTA3OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVua25vd25fd2F0Y2hfb3B0aW9uXzBfNTA3OFwiLFwiVW5rbm93biB3YXRjaCBvcHRpb24gJ3swfScuXCIpLFVua25vd25fd2F0Y2hfb3B0aW9uXzBfRGlkX3lvdV9tZWFuXzE6YSg1MDc5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW5rbm93bl93YXRjaF9vcHRpb25fMF9EaWRfeW91X21lYW5fMV81MDc5XCIsXCJVbmtub3duIHdhdGNoIG9wdGlvbiAnezB9Jy4gRGlkIHlvdSBtZWFuICd7MX0nP1wiKSxXYXRjaF9vcHRpb25fMF9yZXF1aXJlc19hX3ZhbHVlX29mX3R5cGVfMTphKDUwODAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJXYXRjaF9vcHRpb25fMF9yZXF1aXJlc19hX3ZhbHVlX29mX3R5cGVfMV81MDgwXCIsXCJXYXRjaCBvcHRpb24gJ3swfScgcmVxdWlyZXMgYSB2YWx1ZSBvZiB0eXBlIHsxfS5cIiksQ2Fubm90X2ZpbmRfYV90c2NvbmZpZ19qc29uX2ZpbGVfYXRfdGhlX2N1cnJlbnRfZGlyZWN0b3J5X0NvbG9uXzA6YSg1MDgxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X2ZpbmRfYV90c2NvbmZpZ19qc29uX2ZpbGVfYXRfdGhlX2N1cnJlbnRfZGlyZWN0b3J5X0NvbG9uXzBfNTA4MVwiLFwiQ2Fubm90IGZpbmQgYSB0c2NvbmZpZy5qc29uIGZpbGUgYXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5OiB7MH0uXCIpLF8wX2NvdWxkX2JlX2luc3RhbnRpYXRlZF93aXRoX2FuX2FyYml0cmFyeV90eXBlX3doaWNoX2NvdWxkX2JlX3VucmVsYXRlZF90b18xOmEoNTA4MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2NvdWxkX2JlX2luc3RhbnRpYXRlZF93aXRoX2FuX2FyYml0cmFyeV90eXBlX3doaWNoX2NvdWxkX2JlX3VucmVsYXRlZF90b18xXzUwODJcIixcIid7MH0nIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGFuIGFyYml0cmFyeSB0eXBlIHdoaWNoIGNvdWxkIGJlIHVucmVsYXRlZCB0byAnezF9Jy5cIiksQ2Fubm90X3JlYWRfZmlsZV8wOmEoNTA4MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9yZWFkX2ZpbGVfMF81MDgzXCIsXCJDYW5ub3QgcmVhZCBmaWxlICd7MH0nLlwiKSxUdXBsZV9tZW1iZXJzX211c3RfYWxsX2hhdmVfbmFtZXNfb3JfYWxsX25vdF9oYXZlX25hbWVzOmEoNTA4NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR1cGxlX21lbWJlcnNfbXVzdF9hbGxfaGF2ZV9uYW1lc19vcl9hbGxfbm90X2hhdmVfbmFtZXNfNTA4NFwiLFwiVHVwbGUgbWVtYmVycyBtdXN0IGFsbCBoYXZlIG5hbWVzIG9yIGFsbCBub3QgaGF2ZSBuYW1lcy5cIiksQV90dXBsZV9tZW1iZXJfY2Fubm90X2JlX2JvdGhfb3B0aW9uYWxfYW5kX3Jlc3Q6YSg1MDg1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV90dXBsZV9tZW1iZXJfY2Fubm90X2JlX2JvdGhfb3B0aW9uYWxfYW5kX3Jlc3RfNTA4NVwiLFwiQSB0dXBsZSBtZW1iZXIgY2Fubm90IGJlIGJvdGggb3B0aW9uYWwgYW5kIHJlc3QuXCIpLEFfbGFiZWxlZF90dXBsZV9lbGVtZW50X2lzX2RlY2xhcmVkX2FzX29wdGlvbmFsX3dpdGhfYV9xdWVzdGlvbl9tYXJrX2FmdGVyX3RoZV9uYW1lX2FuZF9iZWZvcmVfdGhlX2NvbG9uX3JhdGhlcl90aGFuX2FmdGVyX3RoZV90eXBlOmEoNTA4NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfbGFiZWxlZF90dXBsZV9lbGVtZW50X2lzX2RlY2xhcmVkX2FzX29wdGlvbmFsX3dpdGhfYV9xdWVzdGlvbl9tYXJrX2FmdGVyX3RoZV9uYW1lX2FuZF9iZWZvcmVfdGhlX2NfNTA4NlwiLFwiQSBsYWJlbGVkIHR1cGxlIGVsZW1lbnQgaXMgZGVjbGFyZWQgYXMgb3B0aW9uYWwgd2l0aCBhIHF1ZXN0aW9uIG1hcmsgYWZ0ZXIgdGhlIG5hbWUgYW5kIGJlZm9yZSB0aGUgY29sb24sIHJhdGhlciB0aGFuIGFmdGVyIHRoZSB0eXBlLlwiKSxBX2xhYmVsZWRfdHVwbGVfZWxlbWVudF9pc19kZWNsYXJlZF9hc19yZXN0X3dpdGhfYV9iZWZvcmVfdGhlX25hbWVfcmF0aGVyX3RoYW5fYmVmb3JlX3RoZV90eXBlOmEoNTA4NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfbGFiZWxlZF90dXBsZV9lbGVtZW50X2lzX2RlY2xhcmVkX2FzX3Jlc3Rfd2l0aF9hX2JlZm9yZV90aGVfbmFtZV9yYXRoZXJfdGhhbl9iZWZvcmVfdGhlX3R5cGVfNTA4N1wiLFwiQSBsYWJlbGVkIHR1cGxlIGVsZW1lbnQgaXMgZGVjbGFyZWQgYXMgcmVzdCB3aXRoIGEgJy4uLicgYmVmb3JlIHRoZSBuYW1lLCByYXRoZXIgdGhhbiBiZWZvcmUgdGhlIHR5cGUuXCIpLFRoZV9pbmZlcnJlZF90eXBlX29mXzBfcmVmZXJlbmNlc19hX3R5cGVfd2l0aF9hX2N5Y2xpY19zdHJ1Y3R1cmVfd2hpY2hfY2Fubm90X2JlX3RyaXZpYWxseV9zZXJpYWxpemVkX0FfdHlwZV9hbm5vdGF0aW9uX2lzX25lY2Vzc2FyeTphKDUwODgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfaW5mZXJyZWRfdHlwZV9vZl8wX3JlZmVyZW5jZXNfYV90eXBlX3dpdGhfYV9jeWNsaWNfc3RydWN0dXJlX3doaWNoX2Nhbm5vdF9iZV90cml2aWFsbHlfc2VyaWFsaXplXzUwODhcIixcIlRoZSBpbmZlcnJlZCB0eXBlIG9mICd7MH0nIHJlZmVyZW5jZXMgYSB0eXBlIHdpdGggYSBjeWNsaWMgc3RydWN0dXJlIHdoaWNoIGNhbm5vdCBiZSB0cml2aWFsbHkgc2VyaWFsaXplZC4gQSB0eXBlIGFubm90YXRpb24gaXMgbmVjZXNzYXJ5LlwiKSxPcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3doZW5fb3B0aW9uX2pzeF9pc18xOmEoNTA4OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2hlbl9vcHRpb25fanN4X2lzXzFfNTA4OVwiLFwiT3B0aW9uICd7MH0nIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2hlbiBvcHRpb24gJ2pzeCcgaXMgJ3sxfScuXCIpLE5vbl9yZWxhdGl2ZV9wYXRoc19hcmVfbm90X2FsbG93ZWRfd2hlbl9iYXNlVXJsX2lzX25vdF9zZXRfRGlkX3lvdV9mb3JnZXRfYV9sZWFkaW5nX1NsYXNoOmEoNTA5MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5vbl9yZWxhdGl2ZV9wYXRoc19hcmVfbm90X2FsbG93ZWRfd2hlbl9iYXNlVXJsX2lzX25vdF9zZXRfRGlkX3lvdV9mb3JnZXRfYV9sZWFkaW5nX1NsYXNoXzUwOTBcIixcIk5vbi1yZWxhdGl2ZSBwYXRocyBhcmUgbm90IGFsbG93ZWQgd2hlbiAnYmFzZVVybCcgaXMgbm90IHNldC4gRGlkIHlvdSBmb3JnZXQgYSBsZWFkaW5nICcuLyc/XCIpLE9wdGlvbl9wcmVzZXJ2ZUNvbnN0RW51bXNfY2Fubm90X2JlX2Rpc2FibGVkX3doZW5faXNvbGF0ZWRNb2R1bGVzX2lzX2VuYWJsZWQ6YSg1MDkxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uX3ByZXNlcnZlQ29uc3RFbnVtc19jYW5ub3RfYmVfZGlzYWJsZWRfd2hlbl9pc29sYXRlZE1vZHVsZXNfaXNfZW5hYmxlZF81MDkxXCIsXCJPcHRpb24gJ3ByZXNlcnZlQ29uc3RFbnVtcycgY2Fubm90IGJlIGRpc2FibGVkIHdoZW4gJ2lzb2xhdGVkTW9kdWxlcycgaXMgZW5hYmxlZC5cIiksVGhlX3Jvb3RfdmFsdWVfb2ZfYV8wX2ZpbGVfbXVzdF9iZV9hbl9vYmplY3Q6YSg1MDkyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX3Jvb3RfdmFsdWVfb2ZfYV8wX2ZpbGVfbXVzdF9iZV9hbl9vYmplY3RfNTA5MlwiLFwiVGhlIHJvb3QgdmFsdWUgb2YgYSAnezB9JyBmaWxlIG11c3QgYmUgYW4gb2JqZWN0LlwiKSxDb21waWxlcl9vcHRpb25fMF9tYXlfb25seV9iZV91c2VkX3dpdGhfYnVpbGQ6YSg1MDkzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ29tcGlsZXJfb3B0aW9uXzBfbWF5X29ubHlfYmVfdXNlZF93aXRoX2J1aWxkXzUwOTNcIixcIkNvbXBpbGVyIG9wdGlvbiAnLS17MH0nIG1heSBvbmx5IGJlIHVzZWQgd2l0aCAnLS1idWlsZCcuXCIpLENvbXBpbGVyX29wdGlvbl8wX21heV9ub3RfYmVfdXNlZF93aXRoX2J1aWxkOmEoNTA5NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbXBpbGVyX29wdGlvbl8wX21heV9ub3RfYmVfdXNlZF93aXRoX2J1aWxkXzUwOTRcIixcIkNvbXBpbGVyIG9wdGlvbiAnLS17MH0nIG1heSBub3QgYmUgdXNlZCB3aXRoICctLWJ1aWxkJy5cIiksT3B0aW9uX3ByZXNlcnZlVmFsdWVJbXBvcnRzX2Nhbl9vbmx5X2JlX3VzZWRfd2hlbl9tb2R1bGVfaXNfc2V0X3RvX2VzMjAxNV9vcl9sYXRlcjphKDUwOTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPcHRpb25fcHJlc2VydmVWYWx1ZUltcG9ydHNfY2FuX29ubHlfYmVfdXNlZF93aGVuX21vZHVsZV9pc19zZXRfdG9fZXMyMDE1X29yX2xhdGVyXzUwOTVcIixcIk9wdGlvbiAncHJlc2VydmVWYWx1ZUltcG9ydHMnIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiAnbW9kdWxlJyBpcyBzZXQgdG8gJ2VzMjAxNScgb3IgbGF0ZXIuXCIpLEdlbmVyYXRlc19hX3NvdXJjZW1hcF9mb3JfZWFjaF9jb3JyZXNwb25kaW5nX2RfdHNfZmlsZTphKDZlMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiR2VuZXJhdGVzX2Ffc291cmNlbWFwX2Zvcl9lYWNoX2NvcnJlc3BvbmRpbmdfZF90c19maWxlXzYwMDBcIixcIkdlbmVyYXRlcyBhIHNvdXJjZW1hcCBmb3IgZWFjaCBjb3JyZXNwb25kaW5nICcuZC50cycgZmlsZS5cIiksQ29uY2F0ZW5hdGVfYW5kX2VtaXRfb3V0cHV0X3RvX3NpbmdsZV9maWxlOmEoNjAwMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29uY2F0ZW5hdGVfYW5kX2VtaXRfb3V0cHV0X3RvX3NpbmdsZV9maWxlXzYwMDFcIixcIkNvbmNhdGVuYXRlIGFuZCBlbWl0IG91dHB1dCB0byBzaW5nbGUgZmlsZS5cIiksR2VuZXJhdGVzX2NvcnJlc3BvbmRpbmdfZF90c19maWxlOmEoNjAwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiR2VuZXJhdGVzX2NvcnJlc3BvbmRpbmdfZF90c19maWxlXzYwMDJcIixcIkdlbmVyYXRlcyBjb3JyZXNwb25kaW5nICcuZC50cycgZmlsZS5cIiksU3BlY2lmeV90aGVfbG9jYXRpb25fd2hlcmVfZGVidWdnZXJfc2hvdWxkX2xvY2F0ZV9UeXBlU2NyaXB0X2ZpbGVzX2luc3RlYWRfb2Zfc291cmNlX2xvY2F0aW9uczphKDYwMDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfdGhlX2xvY2F0aW9uX3doZXJlX2RlYnVnZ2VyX3Nob3VsZF9sb2NhdGVfVHlwZVNjcmlwdF9maWxlc19pbnN0ZWFkX29mX3NvdXJjZV9sb2NhdGlvbnNfNjAwNFwiLFwiU3BlY2lmeSB0aGUgbG9jYXRpb24gd2hlcmUgZGVidWdnZXIgc2hvdWxkIGxvY2F0ZSBUeXBlU2NyaXB0IGZpbGVzIGluc3RlYWQgb2Ygc291cmNlIGxvY2F0aW9ucy5cIiksV2F0Y2hfaW5wdXRfZmlsZXM6YSg2MDA1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJXYXRjaF9pbnB1dF9maWxlc182MDA1XCIsXCJXYXRjaCBpbnB1dCBmaWxlcy5cIiksUmVkaXJlY3Rfb3V0cHV0X3N0cnVjdHVyZV90b190aGVfZGlyZWN0b3J5OmEoNjAwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVkaXJlY3Rfb3V0cHV0X3N0cnVjdHVyZV90b190aGVfZGlyZWN0b3J5XzYwMDZcIixcIlJlZGlyZWN0IG91dHB1dCBzdHJ1Y3R1cmUgdG8gdGhlIGRpcmVjdG9yeS5cIiksRG9fbm90X2VyYXNlX2NvbnN0X2VudW1fZGVjbGFyYXRpb25zX2luX2dlbmVyYXRlZF9jb2RlOmEoNjAwNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRG9fbm90X2VyYXNlX2NvbnN0X2VudW1fZGVjbGFyYXRpb25zX2luX2dlbmVyYXRlZF9jb2RlXzYwMDdcIixcIkRvIG5vdCBlcmFzZSBjb25zdCBlbnVtIGRlY2xhcmF0aW9ucyBpbiBnZW5lcmF0ZWQgY29kZS5cIiksRG9fbm90X2VtaXRfb3V0cHV0c19pZl9hbnlfZXJyb3JzX3dlcmVfcmVwb3J0ZWQ6YSg2MDA4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEb19ub3RfZW1pdF9vdXRwdXRzX2lmX2FueV9lcnJvcnNfd2VyZV9yZXBvcnRlZF82MDA4XCIsXCJEbyBub3QgZW1pdCBvdXRwdXRzIGlmIGFueSBlcnJvcnMgd2VyZSByZXBvcnRlZC5cIiksRG9fbm90X2VtaXRfY29tbWVudHNfdG9fb3V0cHV0OmEoNjAwOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRG9fbm90X2VtaXRfY29tbWVudHNfdG9fb3V0cHV0XzYwMDlcIixcIkRvIG5vdCBlbWl0IGNvbW1lbnRzIHRvIG91dHB1dC5cIiksRG9fbm90X2VtaXRfb3V0cHV0czphKDYwMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRvX25vdF9lbWl0X291dHB1dHNfNjAxMFwiLFwiRG8gbm90IGVtaXQgb3V0cHV0cy5cIiksQWxsb3dfZGVmYXVsdF9pbXBvcnRzX2Zyb21fbW9kdWxlc193aXRoX25vX2RlZmF1bHRfZXhwb3J0X1RoaXNfZG9lc19ub3RfYWZmZWN0X2NvZGVfZW1pdF9qdXN0X3R5cGVjaGVja2luZzphKDYwMTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFsbG93X2RlZmF1bHRfaW1wb3J0c19mcm9tX21vZHVsZXNfd2l0aF9ub19kZWZhdWx0X2V4cG9ydF9UaGlzX2RvZXNfbm90X2FmZmVjdF9jb2RlX2VtaXRfanVzdF90eXBlY2hfNjAxMVwiLFwiQWxsb3cgZGVmYXVsdCBpbXBvcnRzIGZyb20gbW9kdWxlcyB3aXRoIG5vIGRlZmF1bHQgZXhwb3J0LiBUaGlzIGRvZXMgbm90IGFmZmVjdCBjb2RlIGVtaXQsIGp1c3QgdHlwZWNoZWNraW5nLlwiKSxTa2lwX3R5cGVfY2hlY2tpbmdfb2ZfZGVjbGFyYXRpb25fZmlsZXM6YSg2MDEyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTa2lwX3R5cGVfY2hlY2tpbmdfb2ZfZGVjbGFyYXRpb25fZmlsZXNfNjAxMlwiLFwiU2tpcCB0eXBlIGNoZWNraW5nIG9mIGRlY2xhcmF0aW9uIGZpbGVzLlwiKSxEb19ub3RfcmVzb2x2ZV90aGVfcmVhbF9wYXRoX29mX3N5bWxpbmtzOmEoNjAxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRG9fbm90X3Jlc29sdmVfdGhlX3JlYWxfcGF0aF9vZl9zeW1saW5rc182MDEzXCIsXCJEbyBub3QgcmVzb2x2ZSB0aGUgcmVhbCBwYXRoIG9mIHN5bWxpbmtzLlwiKSxPbmx5X2VtaXRfZF90c19kZWNsYXJhdGlvbl9maWxlczphKDYwMTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk9ubHlfZW1pdF9kX3RzX2RlY2xhcmF0aW9uX2ZpbGVzXzYwMTRcIixcIk9ubHkgZW1pdCAnLmQudHMnIGRlY2xhcmF0aW9uIGZpbGVzLlwiKSxTcGVjaWZ5X0VDTUFTY3JpcHRfdGFyZ2V0X3ZlcnNpb246YSg2MDE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X0VDTUFTY3JpcHRfdGFyZ2V0X3ZlcnNpb25fNjAxNVwiLFwiU3BlY2lmeSBFQ01BU2NyaXB0IHRhcmdldCB2ZXJzaW9uLlwiKSxTcGVjaWZ5X21vZHVsZV9jb2RlX2dlbmVyYXRpb246YSg2MDE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X21vZHVsZV9jb2RlX2dlbmVyYXRpb25fNjAxNlwiLFwiU3BlY2lmeSBtb2R1bGUgY29kZSBnZW5lcmF0aW9uLlwiKSxQcmludF90aGlzX21lc3NhZ2U6YSg2MDE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQcmludF90aGlzX21lc3NhZ2VfNjAxN1wiLFwiUHJpbnQgdGhpcyBtZXNzYWdlLlwiKSxQcmludF90aGVfY29tcGlsZXJfc192ZXJzaW9uOmEoNjAxOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJpbnRfdGhlX2NvbXBpbGVyX3NfdmVyc2lvbl82MDE5XCIsXCJQcmludCB0aGUgY29tcGlsZXIncyB2ZXJzaW9uLlwiKSxDb21waWxlX3RoZV9wcm9qZWN0X2dpdmVuX3RoZV9wYXRoX3RvX2l0c19jb25maWd1cmF0aW9uX2ZpbGVfb3JfdG9fYV9mb2xkZXJfd2l0aF9hX3RzY29uZmlnX2pzb246YSg2MDIwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb21waWxlX3RoZV9wcm9qZWN0X2dpdmVuX3RoZV9wYXRoX3RvX2l0c19jb25maWd1cmF0aW9uX2ZpbGVfb3JfdG9fYV9mb2xkZXJfd2l0aF9hX3RzY29uZmlnX2pzb25fNjAyMFwiLFwiQ29tcGlsZSB0aGUgcHJvamVjdCBnaXZlbiB0aGUgcGF0aCB0byBpdHMgY29uZmlndXJhdGlvbiBmaWxlLCBvciB0byBhIGZvbGRlciB3aXRoIGEgJ3RzY29uZmlnLmpzb24nLlwiKSxTeW50YXhfQ29sb25fMDphKDYwMjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlN5bnRheF9Db2xvbl8wXzYwMjNcIixcIlN5bnRheDogezB9XCIpLG9wdGlvbnM6YSg2MDI0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJvcHRpb25zXzYwMjRcIixcIm9wdGlvbnNcIiksZmlsZTphKDYwMjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcImZpbGVfNjAyNVwiLFwiZmlsZVwiKSxFeGFtcGxlc19Db2xvbl8wOmEoNjAyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRXhhbXBsZXNfQ29sb25fMF82MDI2XCIsXCJFeGFtcGxlczogezB9XCIpLE9wdGlvbnNfQ29sb246YSg2MDI3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJPcHRpb25zX0NvbG9uXzYwMjdcIixcIk9wdGlvbnM6XCIpLFZlcnNpb25fMDphKDYwMjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlZlcnNpb25fMF82MDI5XCIsXCJWZXJzaW9uIHswfVwiKSxJbnNlcnRfY29tbWFuZF9saW5lX29wdGlvbnNfYW5kX2ZpbGVzX2Zyb21fYV9maWxlOmEoNjAzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW5zZXJ0X2NvbW1hbmRfbGluZV9vcHRpb25zX2FuZF9maWxlc19mcm9tX2FfZmlsZV82MDMwXCIsXCJJbnNlcnQgY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIGZpbGVzIGZyb20gYSBmaWxlLlwiKSxTdGFydGluZ19jb21waWxhdGlvbl9pbl93YXRjaF9tb2RlOmEoNjAzMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3RhcnRpbmdfY29tcGlsYXRpb25faW5fd2F0Y2hfbW9kZV82MDMxXCIsXCJTdGFydGluZyBjb21waWxhdGlvbiBpbiB3YXRjaCBtb2RlLi4uXCIpLEZpbGVfY2hhbmdlX2RldGVjdGVkX1N0YXJ0aW5nX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uOmEoNjAzMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV9jaGFuZ2VfZGV0ZWN0ZWRfU3RhcnRpbmdfaW5jcmVtZW50YWxfY29tcGlsYXRpb25fNjAzMlwiLFwiRmlsZSBjaGFuZ2UgZGV0ZWN0ZWQuIFN0YXJ0aW5nIGluY3JlbWVudGFsIGNvbXBpbGF0aW9uLi4uXCIpLEtJTkQ6YSg2MDM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJLSU5EXzYwMzRcIixcIktJTkRcIiksRklMRTphKDYwMzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZJTEVfNjAzNVwiLFwiRklMRVwiKSxWRVJTSU9OOmEoNjAzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVkVSU0lPTl82MDM2XCIsXCJWRVJTSU9OXCIpLExPQ0FUSU9OOmEoNjAzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTE9DQVRJT05fNjAzN1wiLFwiTE9DQVRJT05cIiksRElSRUNUT1JZOmEoNjAzOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRElSRUNUT1JZXzYwMzhcIixcIkRJUkVDVE9SWVwiKSxTVFJBVEVHWTphKDYwMzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNUUkFURUdZXzYwMzlcIixcIlNUUkFURUdZXCIpLEZJTEVfT1JfRElSRUNUT1JZOmEoNjA0MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRklMRV9PUl9ESVJFQ1RPUllfNjA0MFwiLFwiRklMRSBPUiBESVJFQ1RPUllcIiksRXJyb3JzX0ZpbGVzOmEoNjA0MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRXJyb3JzX0ZpbGVzXzYwNDFcIixcIkVycm9ycyAgRmlsZXNcIiksR2VuZXJhdGVzX2NvcnJlc3BvbmRpbmdfbWFwX2ZpbGU6YSg2MDQzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJHZW5lcmF0ZXNfY29ycmVzcG9uZGluZ19tYXBfZmlsZV82MDQzXCIsXCJHZW5lcmF0ZXMgY29ycmVzcG9uZGluZyAnLm1hcCcgZmlsZS5cIiksQ29tcGlsZXJfb3B0aW9uXzBfZXhwZWN0c19hbl9hcmd1bWVudDphKDYwNDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb21waWxlcl9vcHRpb25fMF9leHBlY3RzX2FuX2FyZ3VtZW50XzYwNDRcIixcIkNvbXBpbGVyIG9wdGlvbiAnezB9JyBleHBlY3RzIGFuIGFyZ3VtZW50LlwiKSxVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ19pbl9yZXNwb25zZV9maWxlXzA6YSg2MDQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdfaW5fcmVzcG9uc2VfZmlsZV8wXzYwNDVcIixcIlVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nIGluIHJlc3BvbnNlIGZpbGUgJ3swfScuXCIpLEFyZ3VtZW50X2Zvcl8wX29wdGlvbl9tdXN0X2JlX0NvbG9uXzE6YSg2MDQ2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQXJndW1lbnRfZm9yXzBfb3B0aW9uX211c3RfYmVfQ29sb25fMV82MDQ2XCIsXCJBcmd1bWVudCBmb3IgJ3swfScgb3B0aW9uIG11c3QgYmU6IHsxfS5cIiksTG9jYWxlX211c3RfYmVfb2ZfdGhlX2Zvcm1fbGFuZ3VhZ2Vfb3JfbGFuZ3VhZ2VfdGVycml0b3J5X0Zvcl9leGFtcGxlXzBfb3JfMTphKDYwNDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJMb2NhbGVfbXVzdF9iZV9vZl90aGVfZm9ybV9sYW5ndWFnZV9vcl9sYW5ndWFnZV90ZXJyaXRvcnlfRm9yX2V4YW1wbGVfMF9vcl8xXzYwNDhcIixcIkxvY2FsZSBtdXN0IGJlIG9mIHRoZSBmb3JtIDxsYW5ndWFnZT4gb3IgPGxhbmd1YWdlPi08dGVycml0b3J5Pi4gRm9yIGV4YW1wbGUgJ3swfScgb3IgJ3sxfScuXCIpLFVuYWJsZV90b19vcGVuX2ZpbGVfMDphKDYwNTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbmFibGVfdG9fb3Blbl9maWxlXzBfNjA1MFwiLFwiVW5hYmxlIHRvIG9wZW4gZmlsZSAnezB9Jy5cIiksQ29ycnVwdGVkX2xvY2FsZV9maWxlXzA6YSg2MDUxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ29ycnVwdGVkX2xvY2FsZV9maWxlXzBfNjA1MVwiLFwiQ29ycnVwdGVkIGxvY2FsZSBmaWxlIHswfS5cIiksUmFpc2VfZXJyb3Jfb25fZXhwcmVzc2lvbnNfYW5kX2RlY2xhcmF0aW9uc193aXRoX2FuX2ltcGxpZWRfYW55X3R5cGU6YSg2MDUyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSYWlzZV9lcnJvcl9vbl9leHByZXNzaW9uc19hbmRfZGVjbGFyYXRpb25zX3dpdGhfYW5faW1wbGllZF9hbnlfdHlwZV82MDUyXCIsXCJSYWlzZSBlcnJvciBvbiBleHByZXNzaW9ucyBhbmQgZGVjbGFyYXRpb25zIHdpdGggYW4gaW1wbGllZCAnYW55JyB0eXBlLlwiKSxGaWxlXzBfbm90X2ZvdW5kOmEoNjA1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZpbGVfMF9ub3RfZm91bmRfNjA1M1wiLFwiRmlsZSAnezB9JyBub3QgZm91bmQuXCIpLEZpbGVfMF9oYXNfYW5fdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uX1RoZV9vbmx5X3N1cHBvcnRlZF9leHRlbnNpb25zX2FyZV8xOmEoNjA1NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZpbGVfMF9oYXNfYW5fdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uX1RoZV9vbmx5X3N1cHBvcnRlZF9leHRlbnNpb25zX2FyZV8xXzYwNTRcIixcIkZpbGUgJ3swfScgaGFzIGFuIHVuc3VwcG9ydGVkIGV4dGVuc2lvbi4gVGhlIG9ubHkgc3VwcG9ydGVkIGV4dGVuc2lvbnMgYXJlIHsxfS5cIiksU3VwcHJlc3Nfbm9JbXBsaWNpdEFueV9lcnJvcnNfZm9yX2luZGV4aW5nX29iamVjdHNfbGFja2luZ19pbmRleF9zaWduYXR1cmVzOmEoNjA1NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3VwcHJlc3Nfbm9JbXBsaWNpdEFueV9lcnJvcnNfZm9yX2luZGV4aW5nX29iamVjdHNfbGFja2luZ19pbmRleF9zaWduYXR1cmVzXzYwNTVcIixcIlN1cHByZXNzIG5vSW1wbGljaXRBbnkgZXJyb3JzIGZvciBpbmRleGluZyBvYmplY3RzIGxhY2tpbmcgaW5kZXggc2lnbmF0dXJlcy5cIiksRG9fbm90X2VtaXRfZGVjbGFyYXRpb25zX2Zvcl9jb2RlX3RoYXRfaGFzX2FuX2ludGVybmFsX2Fubm90YXRpb246YSg2MDU2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEb19ub3RfZW1pdF9kZWNsYXJhdGlvbnNfZm9yX2NvZGVfdGhhdF9oYXNfYW5faW50ZXJuYWxfYW5ub3RhdGlvbl82MDU2XCIsXCJEbyBub3QgZW1pdCBkZWNsYXJhdGlvbnMgZm9yIGNvZGUgdGhhdCBoYXMgYW4gJ0BpbnRlcm5hbCcgYW5ub3RhdGlvbi5cIiksU3BlY2lmeV90aGVfcm9vdF9kaXJlY3Rvcnlfb2ZfaW5wdXRfZmlsZXNfVXNlX3RvX2NvbnRyb2xfdGhlX291dHB1dF9kaXJlY3Rvcnlfc3RydWN0dXJlX3dpdGhfb3V0RGlyOmEoNjA1OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV90aGVfcm9vdF9kaXJlY3Rvcnlfb2ZfaW5wdXRfZmlsZXNfVXNlX3RvX2NvbnRyb2xfdGhlX291dHB1dF9kaXJlY3Rvcnlfc3RydWN0dXJlX3dpdGhfb3V0RGlyXzYwNThcIixcIlNwZWNpZnkgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGlucHV0IGZpbGVzLiBVc2UgdG8gY29udHJvbCB0aGUgb3V0cHV0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2l0aCAtLW91dERpci5cIiksRmlsZV8wX2lzX25vdF91bmRlcl9yb290RGlyXzFfcm9vdERpcl9pc19leHBlY3RlZF90b19jb250YWluX2FsbF9zb3VyY2VfZmlsZXM6YSg2MDU5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRmlsZV8wX2lzX25vdF91bmRlcl9yb290RGlyXzFfcm9vdERpcl9pc19leHBlY3RlZF90b19jb250YWluX2FsbF9zb3VyY2VfZmlsZXNfNjA1OVwiLFwiRmlsZSAnezB9JyBpcyBub3QgdW5kZXIgJ3Jvb3REaXInICd7MX0nLiAncm9vdERpcicgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhbGwgc291cmNlIGZpbGVzLlwiKSxTcGVjaWZ5X3RoZV9lbmRfb2ZfbGluZV9zZXF1ZW5jZV90b19iZV91c2VkX3doZW5fZW1pdHRpbmdfZmlsZXNfQ29sb25fQ1JMRl9kb3Nfb3JfTEZfdW5peDphKDYwNjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfdGhlX2VuZF9vZl9saW5lX3NlcXVlbmNlX3RvX2JlX3VzZWRfd2hlbl9lbWl0dGluZ19maWxlc19Db2xvbl9DUkxGX2Rvc19vcl9MRl91bml4XzYwNjBcIixcIlNwZWNpZnkgdGhlIGVuZCBvZiBsaW5lIHNlcXVlbmNlIHRvIGJlIHVzZWQgd2hlbiBlbWl0dGluZyBmaWxlczogJ0NSTEYnIChkb3MpIG9yICdMRicgKHVuaXgpLlwiKSxORVdMSU5FOmEoNjA2MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTkVXTElORV82MDYxXCIsXCJORVdMSU5FXCIpLE9wdGlvbl8wX2Nhbl9vbmx5X2JlX3NwZWNpZmllZF9pbl90c2NvbmZpZ19qc29uX2ZpbGVfb3Jfc2V0X3RvX251bGxfb25fY29tbWFuZF9saW5lOmEoNjA2NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9wdGlvbl8wX2Nhbl9vbmx5X2JlX3NwZWNpZmllZF9pbl90c2NvbmZpZ19qc29uX2ZpbGVfb3Jfc2V0X3RvX251bGxfb25fY29tbWFuZF9saW5lXzYwNjRcIixcIk9wdGlvbiAnezB9JyBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4gJ3RzY29uZmlnLmpzb24nIGZpbGUgb3Igc2V0IHRvICdudWxsJyBvbiBjb21tYW5kIGxpbmUuXCIpLEVuYWJsZXNfZXhwZXJpbWVudGFsX3N1cHBvcnRfZm9yX0VTN19kZWNvcmF0b3JzOmEoNjA2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlc19leHBlcmltZW50YWxfc3VwcG9ydF9mb3JfRVM3X2RlY29yYXRvcnNfNjA2NVwiLFwiRW5hYmxlcyBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgRVM3IGRlY29yYXRvcnMuXCIpLEVuYWJsZXNfZXhwZXJpbWVudGFsX3N1cHBvcnRfZm9yX2VtaXR0aW5nX3R5cGVfbWV0YWRhdGFfZm9yX2RlY29yYXRvcnM6YSg2MDY2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbmFibGVzX2V4cGVyaW1lbnRhbF9zdXBwb3J0X2Zvcl9lbWl0dGluZ190eXBlX21ldGFkYXRhX2Zvcl9kZWNvcmF0b3JzXzYwNjZcIixcIkVuYWJsZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGVtaXR0aW5nIHR5cGUgbWV0YWRhdGEgZm9yIGRlY29yYXRvcnMuXCIpLFNwZWNpZnlfbW9kdWxlX3Jlc29sdXRpb25fc3RyYXRlZ3lfQ29sb25fbm9kZV9Ob2RlX2pzX29yX2NsYXNzaWNfVHlwZVNjcmlwdF9wcmVfMV82OmEoNjA2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV9tb2R1bGVfcmVzb2x1dGlvbl9zdHJhdGVneV9Db2xvbl9ub2RlX05vZGVfanNfb3JfY2xhc3NpY19UeXBlU2NyaXB0X3ByZV8xXzZfNjA2OVwiLFwiU3BlY2lmeSBtb2R1bGUgcmVzb2x1dGlvbiBzdHJhdGVneTogJ25vZGUnIChOb2RlLmpzKSBvciAnY2xhc3NpYycgKFR5cGVTY3JpcHQgcHJlLTEuNikuXCIpLEluaXRpYWxpemVzX2FfVHlwZVNjcmlwdF9wcm9qZWN0X2FuZF9jcmVhdGVzX2FfdHNjb25maWdfanNvbl9maWxlOmEoNjA3MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW5pdGlhbGl6ZXNfYV9UeXBlU2NyaXB0X3Byb2plY3RfYW5kX2NyZWF0ZXNfYV90c2NvbmZpZ19qc29uX2ZpbGVfNjA3MFwiLFwiSW5pdGlhbGl6ZXMgYSBUeXBlU2NyaXB0IHByb2plY3QgYW5kIGNyZWF0ZXMgYSB0c2NvbmZpZy5qc29uIGZpbGUuXCIpLFN1Y2Nlc3NmdWxseV9jcmVhdGVkX2FfdHNjb25maWdfanNvbl9maWxlOmEoNjA3MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3VjY2Vzc2Z1bGx5X2NyZWF0ZWRfYV90c2NvbmZpZ19qc29uX2ZpbGVfNjA3MVwiLFwiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYSB0c2NvbmZpZy5qc29uIGZpbGUuXCIpLFN1cHByZXNzX2V4Y2Vzc19wcm9wZXJ0eV9jaGVja3NfZm9yX29iamVjdF9saXRlcmFsczphKDYwNzIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlN1cHByZXNzX2V4Y2Vzc19wcm9wZXJ0eV9jaGVja3NfZm9yX29iamVjdF9saXRlcmFsc182MDcyXCIsXCJTdXBwcmVzcyBleGNlc3MgcHJvcGVydHkgY2hlY2tzIGZvciBvYmplY3QgbGl0ZXJhbHMuXCIpLFN0eWxpemVfZXJyb3JzX2FuZF9tZXNzYWdlc191c2luZ19jb2xvcl9hbmRfY29udGV4dF9leHBlcmltZW50YWw6YSg2MDczLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTdHlsaXplX2Vycm9yc19hbmRfbWVzc2FnZXNfdXNpbmdfY29sb3JfYW5kX2NvbnRleHRfZXhwZXJpbWVudGFsXzYwNzNcIixcIlN0eWxpemUgZXJyb3JzIGFuZCBtZXNzYWdlcyB1c2luZyBjb2xvciBhbmQgY29udGV4dCAoZXhwZXJpbWVudGFsKS5cIiksRG9fbm90X3JlcG9ydF9lcnJvcnNfb25fdW51c2VkX2xhYmVsczphKDYwNzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRvX25vdF9yZXBvcnRfZXJyb3JzX29uX3VudXNlZF9sYWJlbHNfNjA3NFwiLFwiRG8gbm90IHJlcG9ydCBlcnJvcnMgb24gdW51c2VkIGxhYmVscy5cIiksUmVwb3J0X2Vycm9yX3doZW5fbm90X2FsbF9jb2RlX3BhdGhzX2luX2Z1bmN0aW9uX3JldHVybl9hX3ZhbHVlOmEoNjA3NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVwb3J0X2Vycm9yX3doZW5fbm90X2FsbF9jb2RlX3BhdGhzX2luX2Z1bmN0aW9uX3JldHVybl9hX3ZhbHVlXzYwNzVcIixcIlJlcG9ydCBlcnJvciB3aGVuIG5vdCBhbGwgY29kZSBwYXRocyBpbiBmdW5jdGlvbiByZXR1cm4gYSB2YWx1ZS5cIiksUmVwb3J0X2Vycm9yc19mb3JfZmFsbHRocm91Z2hfY2FzZXNfaW5fc3dpdGNoX3N0YXRlbWVudDphKDYwNzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlcG9ydF9lcnJvcnNfZm9yX2ZhbGx0aHJvdWdoX2Nhc2VzX2luX3N3aXRjaF9zdGF0ZW1lbnRfNjA3NlwiLFwiUmVwb3J0IGVycm9ycyBmb3IgZmFsbHRocm91Z2ggY2FzZXMgaW4gc3dpdGNoIHN0YXRlbWVudC5cIiksRG9fbm90X3JlcG9ydF9lcnJvcnNfb25fdW5yZWFjaGFibGVfY29kZTphKDYwNzcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRvX25vdF9yZXBvcnRfZXJyb3JzX29uX3VucmVhY2hhYmxlX2NvZGVfNjA3N1wiLFwiRG8gbm90IHJlcG9ydCBlcnJvcnMgb24gdW5yZWFjaGFibGUgY29kZS5cIiksRGlzYWxsb3dfaW5jb25zaXN0ZW50bHlfY2FzZWRfcmVmZXJlbmNlc190b190aGVfc2FtZV9maWxlOmEoNjA3OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWxsb3dfaW5jb25zaXN0ZW50bHlfY2FzZWRfcmVmZXJlbmNlc190b190aGVfc2FtZV9maWxlXzYwNzhcIixcIkRpc2FsbG93IGluY29uc2lzdGVudGx5LWNhc2VkIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZS5cIiksU3BlY2lmeV9saWJyYXJ5X2ZpbGVzX3RvX2JlX2luY2x1ZGVkX2luX3RoZV9jb21waWxhdGlvbjphKDYwNzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfbGlicmFyeV9maWxlc190b19iZV9pbmNsdWRlZF9pbl90aGVfY29tcGlsYXRpb25fNjA3OVwiLFwiU3BlY2lmeSBsaWJyYXJ5IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBjb21waWxhdGlvbi5cIiksU3BlY2lmeV9KU1hfY29kZV9nZW5lcmF0aW9uOmEoNjA4MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV9KU1hfY29kZV9nZW5lcmF0aW9uXzYwODBcIixcIlNwZWNpZnkgSlNYIGNvZGUgZ2VuZXJhdGlvbi5cIiksRmlsZV8wX2hhc19hbl91bnN1cHBvcnRlZF9leHRlbnNpb25fc29fc2tpcHBpbmdfaXQ6YSg2MDgxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGaWxlXzBfaGFzX2FuX3Vuc3VwcG9ydGVkX2V4dGVuc2lvbl9zb19za2lwcGluZ19pdF82MDgxXCIsXCJGaWxlICd7MH0nIGhhcyBhbiB1bnN1cHBvcnRlZCBleHRlbnNpb24sIHNvIHNraXBwaW5nIGl0LlwiKSxPbmx5X2FtZF9hbmRfc3lzdGVtX21vZHVsZXNfYXJlX3N1cHBvcnRlZF9hbG9uZ3NpZGVfMDphKDYwODIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPbmx5X2FtZF9hbmRfc3lzdGVtX21vZHVsZXNfYXJlX3N1cHBvcnRlZF9hbG9uZ3NpZGVfMF82MDgyXCIsXCJPbmx5ICdhbWQnIGFuZCAnc3lzdGVtJyBtb2R1bGVzIGFyZSBzdXBwb3J0ZWQgYWxvbmdzaWRlIC0tezB9LlwiKSxCYXNlX2RpcmVjdG9yeV90b19yZXNvbHZlX25vbl9hYnNvbHV0ZV9tb2R1bGVfbmFtZXM6YSg2MDgzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJCYXNlX2RpcmVjdG9yeV90b19yZXNvbHZlX25vbl9hYnNvbHV0ZV9tb2R1bGVfbmFtZXNfNjA4M1wiLFwiQmFzZSBkaXJlY3RvcnkgdG8gcmVzb2x2ZSBub24tYWJzb2x1dGUgbW9kdWxlIG5hbWVzLlwiKSxEZXByZWNhdGVkX1VzZV9qc3hGYWN0b3J5X2luc3RlYWRfU3BlY2lmeV90aGVfb2JqZWN0X2ludm9rZWRfZm9yX2NyZWF0ZUVsZW1lbnRfd2hlbl90YXJnZXRpbmdfcmVhY3RfSlNYX2VtaXQ6YSg2MDg0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEZXByZWNhdGVkX1VzZV9qc3hGYWN0b3J5X2luc3RlYWRfU3BlY2lmeV90aGVfb2JqZWN0X2ludm9rZWRfZm9yX2NyZWF0ZUVsZW1lbnRfd2hlbl90YXJnZXRpbmdfcmVhY3RfXzYwODRcIixcIltEZXByZWNhdGVkXSBVc2UgJy0tanN4RmFjdG9yeScgaW5zdGVhZC4gU3BlY2lmeSB0aGUgb2JqZWN0IGludm9rZWQgZm9yIGNyZWF0ZUVsZW1lbnQgd2hlbiB0YXJnZXRpbmcgJ3JlYWN0JyBKU1ggZW1pdFwiKSxFbmFibGVfdHJhY2luZ19vZl90aGVfbmFtZV9yZXNvbHV0aW9uX3Byb2Nlc3M6YSg2MDg1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbmFibGVfdHJhY2luZ19vZl90aGVfbmFtZV9yZXNvbHV0aW9uX3Byb2Nlc3NfNjA4NVwiLFwiRW5hYmxlIHRyYWNpbmcgb2YgdGhlIG5hbWUgcmVzb2x1dGlvbiBwcm9jZXNzLlwiKSxSZXNvbHZpbmdfbW9kdWxlXzBfZnJvbV8xOmEoNjA4NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVzb2x2aW5nX21vZHVsZV8wX2Zyb21fMV82MDg2XCIsXCI9PT09PT09PSBSZXNvbHZpbmcgbW9kdWxlICd7MH0nIGZyb20gJ3sxfScuID09PT09PT09XCIpLEV4cGxpY2l0bHlfc3BlY2lmaWVkX21vZHVsZV9yZXNvbHV0aW9uX2tpbmRfQ29sb25fMDphKDYwODcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkV4cGxpY2l0bHlfc3BlY2lmaWVkX21vZHVsZV9yZXNvbHV0aW9uX2tpbmRfQ29sb25fMF82MDg3XCIsXCJFeHBsaWNpdGx5IHNwZWNpZmllZCBtb2R1bGUgcmVzb2x1dGlvbiBraW5kOiAnezB9Jy5cIiksTW9kdWxlX3Jlc29sdXRpb25fa2luZF9pc19ub3Rfc3BlY2lmaWVkX3VzaW5nXzA6YSg2MDg4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJNb2R1bGVfcmVzb2x1dGlvbl9raW5kX2lzX25vdF9zcGVjaWZpZWRfdXNpbmdfMF82MDg4XCIsXCJNb2R1bGUgcmVzb2x1dGlvbiBraW5kIGlzIG5vdCBzcGVjaWZpZWQsIHVzaW5nICd7MH0nLlwiKSxNb2R1bGVfbmFtZV8wX3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMTphKDYwODksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk1vZHVsZV9uYW1lXzBfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18xXzYwODlcIixcIj09PT09PT09IE1vZHVsZSBuYW1lICd7MH0nIHdhcyBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQgdG8gJ3sxfScuID09PT09PT09XCIpLE1vZHVsZV9uYW1lXzBfd2FzX25vdF9yZXNvbHZlZDphKDYwOTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk1vZHVsZV9uYW1lXzBfd2FzX25vdF9yZXNvbHZlZF82MDkwXCIsXCI9PT09PT09PSBNb2R1bGUgbmFtZSAnezB9JyB3YXMgbm90IHJlc29sdmVkLiA9PT09PT09PVwiKSxwYXRoc19vcHRpb25faXNfc3BlY2lmaWVkX2xvb2tpbmdfZm9yX2FfcGF0dGVybl90b19tYXRjaF9tb2R1bGVfbmFtZV8wOmEoNjA5MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwicGF0aHNfb3B0aW9uX2lzX3NwZWNpZmllZF9sb29raW5nX2Zvcl9hX3BhdHRlcm5fdG9fbWF0Y2hfbW9kdWxlX25hbWVfMF82MDkxXCIsXCIncGF0aHMnIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGxvb2tpbmcgZm9yIGEgcGF0dGVybiB0byBtYXRjaCBtb2R1bGUgbmFtZSAnezB9Jy5cIiksTW9kdWxlX25hbWVfMF9tYXRjaGVkX3BhdHRlcm5fMTphKDYwOTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk1vZHVsZV9uYW1lXzBfbWF0Y2hlZF9wYXR0ZXJuXzFfNjA5MlwiLFwiTW9kdWxlIG5hbWUgJ3swfScsIG1hdGNoZWQgcGF0dGVybiAnezF9Jy5cIiksVHJ5aW5nX3N1YnN0aXR1dGlvbl8wX2NhbmRpZGF0ZV9tb2R1bGVfbG9jYXRpb25fQ29sb25fMTphKDYwOTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlRyeWluZ19zdWJzdGl0dXRpb25fMF9jYW5kaWRhdGVfbW9kdWxlX2xvY2F0aW9uX0NvbG9uXzFfNjA5M1wiLFwiVHJ5aW5nIHN1YnN0aXR1dGlvbiAnezB9JywgY2FuZGlkYXRlIG1vZHVsZSBsb2NhdGlvbjogJ3sxfScuXCIpLFJlc29sdmluZ19tb2R1bGVfbmFtZV8wX3JlbGF0aXZlX3RvX2Jhc2VfdXJsXzFfMjphKDYwOTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlc29sdmluZ19tb2R1bGVfbmFtZV8wX3JlbGF0aXZlX3RvX2Jhc2VfdXJsXzFfMl82MDk0XCIsXCJSZXNvbHZpbmcgbW9kdWxlIG5hbWUgJ3swfScgcmVsYXRpdmUgdG8gYmFzZSB1cmwgJ3sxfScgLSAnezJ9Jy5cIiksTG9hZGluZ19tb2R1bGVfYXNfZmlsZV9TbGFzaF9mb2xkZXJfY2FuZGlkYXRlX21vZHVsZV9sb2NhdGlvbl8wX3RhcmdldF9maWxlX3R5cGVfMTphKDYwOTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkxvYWRpbmdfbW9kdWxlX2FzX2ZpbGVfU2xhc2hfZm9sZGVyX2NhbmRpZGF0ZV9tb2R1bGVfbG9jYXRpb25fMF90YXJnZXRfZmlsZV90eXBlXzFfNjA5NVwiLFwiTG9hZGluZyBtb2R1bGUgYXMgZmlsZSAvIGZvbGRlciwgY2FuZGlkYXRlIG1vZHVsZSBsb2NhdGlvbiAnezB9JywgdGFyZ2V0IGZpbGUgdHlwZSAnezF9Jy5cIiksRmlsZV8wX2RvZXNfbm90X2V4aXN0OmEoNjA5NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV8wX2RvZXNfbm90X2V4aXN0XzYwOTZcIixcIkZpbGUgJ3swfScgZG9lcyBub3QgZXhpc3QuXCIpLEZpbGVfMF9leGlzdF91c2VfaXRfYXNfYV9uYW1lX3Jlc29sdXRpb25fcmVzdWx0OmEoNjA5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV8wX2V4aXN0X3VzZV9pdF9hc19hX25hbWVfcmVzb2x1dGlvbl9yZXN1bHRfNjA5N1wiLFwiRmlsZSAnezB9JyBleGlzdCAtIHVzZSBpdCBhcyBhIG5hbWUgcmVzb2x1dGlvbiByZXN1bHQuXCIpLExvYWRpbmdfbW9kdWxlXzBfZnJvbV9ub2RlX21vZHVsZXNfZm9sZGVyX3RhcmdldF9maWxlX3R5cGVfMTphKDYwOTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkxvYWRpbmdfbW9kdWxlXzBfZnJvbV9ub2RlX21vZHVsZXNfZm9sZGVyX3RhcmdldF9maWxlX3R5cGVfMV82MDk4XCIsXCJMb2FkaW5nIG1vZHVsZSAnezB9JyBmcm9tICdub2RlX21vZHVsZXMnIGZvbGRlciwgdGFyZ2V0IGZpbGUgdHlwZSAnezF9Jy5cIiksRm91bmRfcGFja2FnZV9qc29uX2F0XzA6YSg2MDk5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGb3VuZF9wYWNrYWdlX2pzb25fYXRfMF82MDk5XCIsXCJGb3VuZCAncGFja2FnZS5qc29uJyBhdCAnezB9Jy5cIikscGFja2FnZV9qc29uX2RvZXNfbm90X2hhdmVfYV8wX2ZpZWxkOmEoNjEwMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwicGFja2FnZV9qc29uX2RvZXNfbm90X2hhdmVfYV8wX2ZpZWxkXzYxMDBcIixcIidwYWNrYWdlLmpzb24nIGRvZXMgbm90IGhhdmUgYSAnezB9JyBmaWVsZC5cIikscGFja2FnZV9qc29uX2hhc18wX2ZpZWxkXzFfdGhhdF9yZWZlcmVuY2VzXzI6YSg2MTAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJwYWNrYWdlX2pzb25faGFzXzBfZmllbGRfMV90aGF0X3JlZmVyZW5jZXNfMl82MTAxXCIsXCIncGFja2FnZS5qc29uJyBoYXMgJ3swfScgZmllbGQgJ3sxfScgdGhhdCByZWZlcmVuY2VzICd7Mn0nLlwiKSxBbGxvd19qYXZhc2NyaXB0X2ZpbGVzX3RvX2JlX2NvbXBpbGVkOmEoNjEwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWxsb3dfamF2YXNjcmlwdF9maWxlc190b19iZV9jb21waWxlZF82MTAyXCIsXCJBbGxvdyBqYXZhc2NyaXB0IGZpbGVzIHRvIGJlIGNvbXBpbGVkLlwiKSxDaGVja2luZ19pZl8wX2lzX3RoZV9sb25nZXN0X21hdGNoaW5nX3ByZWZpeF9mb3JfMV8yOmEoNjEwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ2hlY2tpbmdfaWZfMF9pc190aGVfbG9uZ2VzdF9tYXRjaGluZ19wcmVmaXhfZm9yXzFfMl82MTA0XCIsXCJDaGVja2luZyBpZiAnezB9JyBpcyB0aGUgbG9uZ2VzdCBtYXRjaGluZyBwcmVmaXggZm9yICd7MX0nIC0gJ3syfScuXCIpLEV4cGVjdGVkX3R5cGVfb2ZfMF9maWVsZF9pbl9wYWNrYWdlX2pzb25fdG9fYmVfMV9nb3RfMjphKDYxMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkV4cGVjdGVkX3R5cGVfb2ZfMF9maWVsZF9pbl9wYWNrYWdlX2pzb25fdG9fYmVfMV9nb3RfMl82MTA1XCIsXCJFeHBlY3RlZCB0eXBlIG9mICd7MH0nIGZpZWxkIGluICdwYWNrYWdlLmpzb24nIHRvIGJlICd7MX0nLCBnb3QgJ3syfScuXCIpLGJhc2VVcmxfb3B0aW9uX2lzX3NldF90b18wX3VzaW5nX3RoaXNfdmFsdWVfdG9fcmVzb2x2ZV9ub25fcmVsYXRpdmVfbW9kdWxlX25hbWVfMTphKDYxMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcImJhc2VVcmxfb3B0aW9uX2lzX3NldF90b18wX3VzaW5nX3RoaXNfdmFsdWVfdG9fcmVzb2x2ZV9ub25fcmVsYXRpdmVfbW9kdWxlX25hbWVfMV82MTA2XCIsXCInYmFzZVVybCcgb3B0aW9uIGlzIHNldCB0byAnezB9JywgdXNpbmcgdGhpcyB2YWx1ZSB0byByZXNvbHZlIG5vbi1yZWxhdGl2ZSBtb2R1bGUgbmFtZSAnezF9Jy5cIikscm9vdERpcnNfb3B0aW9uX2lzX3NldF91c2luZ19pdF90b19yZXNvbHZlX3JlbGF0aXZlX21vZHVsZV9uYW1lXzA6YSg2MTA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJyb290RGlyc19vcHRpb25faXNfc2V0X3VzaW5nX2l0X3RvX3Jlc29sdmVfcmVsYXRpdmVfbW9kdWxlX25hbWVfMF82MTA3XCIsXCIncm9vdERpcnMnIG9wdGlvbiBpcyBzZXQsIHVzaW5nIGl0IHRvIHJlc29sdmUgcmVsYXRpdmUgbW9kdWxlIG5hbWUgJ3swfScuXCIpLExvbmdlc3RfbWF0Y2hpbmdfcHJlZml4X2Zvcl8wX2lzXzE6YSg2MTA4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJMb25nZXN0X21hdGNoaW5nX3ByZWZpeF9mb3JfMF9pc18xXzYxMDhcIixcIkxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4IGZvciAnezB9JyBpcyAnezF9Jy5cIiksTG9hZGluZ18wX2Zyb21fdGhlX3Jvb3RfZGlyXzFfY2FuZGlkYXRlX2xvY2F0aW9uXzI6YSg2MTA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJMb2FkaW5nXzBfZnJvbV90aGVfcm9vdF9kaXJfMV9jYW5kaWRhdGVfbG9jYXRpb25fMl82MTA5XCIsXCJMb2FkaW5nICd7MH0nIGZyb20gdGhlIHJvb3QgZGlyICd7MX0nLCBjYW5kaWRhdGUgbG9jYXRpb24gJ3syfScuXCIpLFRyeWluZ19vdGhlcl9lbnRyaWVzX2luX3Jvb3REaXJzOmEoNjExMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVHJ5aW5nX290aGVyX2VudHJpZXNfaW5fcm9vdERpcnNfNjExMFwiLFwiVHJ5aW5nIG90aGVyIGVudHJpZXMgaW4gJ3Jvb3REaXJzJy5cIiksTW9kdWxlX3Jlc29sdXRpb25fdXNpbmdfcm9vdERpcnNfaGFzX2ZhaWxlZDphKDYxMTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk1vZHVsZV9yZXNvbHV0aW9uX3VzaW5nX3Jvb3REaXJzX2hhc19mYWlsZWRfNjExMVwiLFwiTW9kdWxlIHJlc29sdXRpb24gdXNpbmcgJ3Jvb3REaXJzJyBoYXMgZmFpbGVkLlwiKSxEb19ub3RfZW1pdF91c2Vfc3RyaWN0X2RpcmVjdGl2ZXNfaW5fbW9kdWxlX291dHB1dDphKDYxMTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRvX25vdF9lbWl0X3VzZV9zdHJpY3RfZGlyZWN0aXZlc19pbl9tb2R1bGVfb3V0cHV0XzYxMTJcIixcIkRvIG5vdCBlbWl0ICd1c2Ugc3RyaWN0JyBkaXJlY3RpdmVzIGluIG1vZHVsZSBvdXRwdXQuXCIpLEVuYWJsZV9zdHJpY3RfbnVsbF9jaGVja3M6YSg2MTEzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbmFibGVfc3RyaWN0X251bGxfY2hlY2tzXzYxMTNcIixcIkVuYWJsZSBzdHJpY3QgbnVsbCBjaGVja3MuXCIpLFVua25vd25fb3B0aW9uX2V4Y2x1ZGVzX0RpZF95b3VfbWVhbl9leGNsdWRlOmEoNjExNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVua25vd25fb3B0aW9uX2V4Y2x1ZGVzX0RpZF95b3VfbWVhbl9leGNsdWRlXzYxMTRcIixcIlVua25vd24gb3B0aW9uICdleGNsdWRlcycuIERpZCB5b3UgbWVhbiAnZXhjbHVkZSc/XCIpLFJhaXNlX2Vycm9yX29uX3RoaXNfZXhwcmVzc2lvbnNfd2l0aF9hbl9pbXBsaWVkX2FueV90eXBlOmEoNjExNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmFpc2VfZXJyb3Jfb25fdGhpc19leHByZXNzaW9uc193aXRoX2FuX2ltcGxpZWRfYW55X3R5cGVfNjExNVwiLFwiUmFpc2UgZXJyb3Igb24gJ3RoaXMnIGV4cHJlc3Npb25zIHdpdGggYW4gaW1wbGllZCAnYW55JyB0eXBlLlwiKSxSZXNvbHZpbmdfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfY29udGFpbmluZ19maWxlXzFfcm9vdF9kaXJlY3RvcnlfMjphKDYxMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlc29sdmluZ190eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9jb250YWluaW5nX2ZpbGVfMV9yb290X2RpcmVjdG9yeV8yXzYxMTZcIixcIj09PT09PT09IFJlc29sdmluZyB0eXBlIHJlZmVyZW5jZSBkaXJlY3RpdmUgJ3swfScsIGNvbnRhaW5pbmcgZmlsZSAnezF9Jywgcm9vdCBkaXJlY3RvcnkgJ3syfScuID09PT09PT09XCIpLFR5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMV9wcmltYXJ5X0NvbG9uXzI6YSg2MTE5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJUeXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzFfcHJpbWFyeV9Db2xvbl8yXzYxMTlcIixcIj09PT09PT09IFR5cGUgcmVmZXJlbmNlIGRpcmVjdGl2ZSAnezB9JyB3YXMgc3VjY2Vzc2Z1bGx5IHJlc29sdmVkIHRvICd7MX0nLCBwcmltYXJ5OiB7Mn0uID09PT09PT09XCIpLFR5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX3dhc19ub3RfcmVzb2x2ZWQ6YSg2MTIwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJUeXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF93YXNfbm90X3Jlc29sdmVkXzYxMjBcIixcIj09PT09PT09IFR5cGUgcmVmZXJlbmNlIGRpcmVjdGl2ZSAnezB9JyB3YXMgbm90IHJlc29sdmVkLiA9PT09PT09PVwiKSxSZXNvbHZpbmdfd2l0aF9wcmltYXJ5X3NlYXJjaF9wYXRoXzA6YSg2MTIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXNvbHZpbmdfd2l0aF9wcmltYXJ5X3NlYXJjaF9wYXRoXzBfNjEyMVwiLFwiUmVzb2x2aW5nIHdpdGggcHJpbWFyeSBzZWFyY2ggcGF0aCAnezB9Jy5cIiksUm9vdF9kaXJlY3RvcnlfY2Fubm90X2JlX2RldGVybWluZWRfc2tpcHBpbmdfcHJpbWFyeV9zZWFyY2hfcGF0aHM6YSg2MTIyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSb290X2RpcmVjdG9yeV9jYW5ub3RfYmVfZGV0ZXJtaW5lZF9za2lwcGluZ19wcmltYXJ5X3NlYXJjaF9wYXRoc182MTIyXCIsXCJSb290IGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgc2tpcHBpbmcgcHJpbWFyeSBzZWFyY2ggcGF0aHMuXCIpLFJlc29sdmluZ190eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9jb250YWluaW5nX2ZpbGVfMV9yb290X2RpcmVjdG9yeV9ub3Rfc2V0OmEoNjEyMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVzb2x2aW5nX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2NvbnRhaW5pbmdfZmlsZV8xX3Jvb3RfZGlyZWN0b3J5X25vdF9zZXRfNjEyM1wiLFwiPT09PT09PT0gUmVzb2x2aW5nIHR5cGUgcmVmZXJlbmNlIGRpcmVjdGl2ZSAnezB9JywgY29udGFpbmluZyBmaWxlICd7MX0nLCByb290IGRpcmVjdG9yeSBub3Qgc2V0LiA9PT09PT09PVwiKSxUeXBlX2RlY2xhcmF0aW9uX2ZpbGVzX3RvX2JlX2luY2x1ZGVkX2luX2NvbXBpbGF0aW9uOmEoNjEyNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVHlwZV9kZWNsYXJhdGlvbl9maWxlc190b19iZV9pbmNsdWRlZF9pbl9jb21waWxhdGlvbl82MTI0XCIsXCJUeXBlIGRlY2xhcmF0aW9uIGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIGNvbXBpbGF0aW9uLlwiKSxMb29raW5nX3VwX2luX25vZGVfbW9kdWxlc19mb2xkZXJfaW5pdGlhbF9sb2NhdGlvbl8wOmEoNjEyNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTG9va2luZ191cF9pbl9ub2RlX21vZHVsZXNfZm9sZGVyX2luaXRpYWxfbG9jYXRpb25fMF82MTI1XCIsXCJMb29raW5nIHVwIGluICdub2RlX21vZHVsZXMnIGZvbGRlciwgaW5pdGlhbCBsb2NhdGlvbiAnezB9Jy5cIiksQ29udGFpbmluZ19maWxlX2lzX25vdF9zcGVjaWZpZWRfYW5kX3Jvb3RfZGlyZWN0b3J5X2Nhbm5vdF9iZV9kZXRlcm1pbmVkX3NraXBwaW5nX2xvb2t1cF9pbl9ub2RlX21vZHVsZXNfZm9sZGVyOmEoNjEyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udGFpbmluZ19maWxlX2lzX25vdF9zcGVjaWZpZWRfYW5kX3Jvb3RfZGlyZWN0b3J5X2Nhbm5vdF9iZV9kZXRlcm1pbmVkX3NraXBwaW5nX2xvb2t1cF9pbl9ub2RlX21vZF82MTI2XCIsXCJDb250YWluaW5nIGZpbGUgaXMgbm90IHNwZWNpZmllZCBhbmQgcm9vdCBkaXJlY3RvcnkgY2Fubm90IGJlIGRldGVybWluZWQsIHNraXBwaW5nIGxvb2t1cCBpbiAnbm9kZV9tb2R1bGVzJyBmb2xkZXIuXCIpLFJlc29sdmluZ190eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9jb250YWluaW5nX2ZpbGVfbm90X3NldF9yb290X2RpcmVjdG9yeV8xOmEoNjEyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVzb2x2aW5nX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2NvbnRhaW5pbmdfZmlsZV9ub3Rfc2V0X3Jvb3RfZGlyZWN0b3J5XzFfNjEyN1wiLFwiPT09PT09PT0gUmVzb2x2aW5nIHR5cGUgcmVmZXJlbmNlIGRpcmVjdGl2ZSAnezB9JywgY29udGFpbmluZyBmaWxlIG5vdCBzZXQsIHJvb3QgZGlyZWN0b3J5ICd7MX0nLiA9PT09PT09PVwiKSxSZXNvbHZpbmdfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfY29udGFpbmluZ19maWxlX25vdF9zZXRfcm9vdF9kaXJlY3Rvcnlfbm90X3NldDphKDYxMjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlc29sdmluZ190eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9jb250YWluaW5nX2ZpbGVfbm90X3NldF9yb290X2RpcmVjdG9yeV9ub3Rfc2V0XzYxMjhcIixcIj09PT09PT09IFJlc29sdmluZyB0eXBlIHJlZmVyZW5jZSBkaXJlY3RpdmUgJ3swfScsIGNvbnRhaW5pbmcgZmlsZSBub3Qgc2V0LCByb290IGRpcmVjdG9yeSBub3Qgc2V0LiA9PT09PT09PVwiKSxSZXNvbHZpbmdfcmVhbF9wYXRoX2Zvcl8wX3Jlc3VsdF8xOmEoNjEzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVzb2x2aW5nX3JlYWxfcGF0aF9mb3JfMF9yZXN1bHRfMV82MTMwXCIsXCJSZXNvbHZpbmcgcmVhbCBwYXRoIGZvciAnezB9JywgcmVzdWx0ICd7MX0nLlwiKSxDYW5ub3RfY29tcGlsZV9tb2R1bGVzX3VzaW5nX29wdGlvbl8wX3VubGVzc190aGVfbW9kdWxlX2ZsYWdfaXNfYW1kX29yX3N5c3RlbTphKDYxMzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfY29tcGlsZV9tb2R1bGVzX3VzaW5nX29wdGlvbl8wX3VubGVzc190aGVfbW9kdWxlX2ZsYWdfaXNfYW1kX29yX3N5c3RlbV82MTMxXCIsXCJDYW5ub3QgY29tcGlsZSBtb2R1bGVzIHVzaW5nIG9wdGlvbiAnezB9JyB1bmxlc3MgdGhlICctLW1vZHVsZScgZmxhZyBpcyAnYW1kJyBvciAnc3lzdGVtJy5cIiksRmlsZV9uYW1lXzBfaGFzX2FfMV9leHRlbnNpb25fc3RyaXBwaW5nX2l0OmEoNjEzMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV9uYW1lXzBfaGFzX2FfMV9leHRlbnNpb25fc3RyaXBwaW5nX2l0XzYxMzJcIixcIkZpbGUgbmFtZSAnezB9JyBoYXMgYSAnezF9JyBleHRlbnNpb24gLSBzdHJpcHBpbmcgaXQuXCIpLF8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZDphKDYxMzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWRfNjEzM1wiLFwiJ3swfScgaXMgZGVjbGFyZWQgYnV0IGl0cyB2YWx1ZSBpcyBuZXZlciByZWFkLlwiLCEwKSxSZXBvcnRfZXJyb3JzX29uX3VudXNlZF9sb2NhbHM6YSg2MTM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXBvcnRfZXJyb3JzX29uX3VudXNlZF9sb2NhbHNfNjEzNFwiLFwiUmVwb3J0IGVycm9ycyBvbiB1bnVzZWQgbG9jYWxzLlwiKSxSZXBvcnRfZXJyb3JzX29uX3VudXNlZF9wYXJhbWV0ZXJzOmEoNjEzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVwb3J0X2Vycm9yc19vbl91bnVzZWRfcGFyYW1ldGVyc182MTM1XCIsXCJSZXBvcnQgZXJyb3JzIG9uIHVudXNlZCBwYXJhbWV0ZXJzLlwiKSxUaGVfbWF4aW11bV9kZXBlbmRlbmN5X2RlcHRoX3RvX3NlYXJjaF91bmRlcl9ub2RlX21vZHVsZXNfYW5kX2xvYWRfSmF2YVNjcmlwdF9maWxlczphKDYxMzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlRoZV9tYXhpbXVtX2RlcGVuZGVuY3lfZGVwdGhfdG9fc2VhcmNoX3VuZGVyX25vZGVfbW9kdWxlc19hbmRfbG9hZF9KYXZhU2NyaXB0X2ZpbGVzXzYxMzZcIixcIlRoZSBtYXhpbXVtIGRlcGVuZGVuY3kgZGVwdGggdG8gc2VhcmNoIHVuZGVyIG5vZGVfbW9kdWxlcyBhbmQgbG9hZCBKYXZhU2NyaXB0IGZpbGVzLlwiKSxDYW5ub3RfaW1wb3J0X3R5cGVfZGVjbGFyYXRpb25fZmlsZXNfQ29uc2lkZXJfaW1wb3J0aW5nXzBfaW5zdGVhZF9vZl8xOmEoNjEzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF9pbXBvcnRfdHlwZV9kZWNsYXJhdGlvbl9maWxlc19Db25zaWRlcl9pbXBvcnRpbmdfMF9pbnN0ZWFkX29mXzFfNjEzN1wiLFwiQ2Fubm90IGltcG9ydCB0eXBlIGRlY2xhcmF0aW9uIGZpbGVzLiBDb25zaWRlciBpbXBvcnRpbmcgJ3swfScgaW5zdGVhZCBvZiAnezF9Jy5cIiksUHJvcGVydHlfMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWQ6YSg2MTM4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWRfNjEzOFwiLFwiUHJvcGVydHkgJ3swfScgaXMgZGVjbGFyZWQgYnV0IGl0cyB2YWx1ZSBpcyBuZXZlciByZWFkLlwiLCEwKSxJbXBvcnRfZW1pdF9oZWxwZXJzX2Zyb21fdHNsaWI6YSg2MTM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbXBvcnRfZW1pdF9oZWxwZXJzX2Zyb21fdHNsaWJfNjEzOVwiLFwiSW1wb3J0IGVtaXQgaGVscGVycyBmcm9tICd0c2xpYicuXCIpLEF1dG9fZGlzY292ZXJ5X2Zvcl90eXBpbmdzX2lzX2VuYWJsZWRfaW5fcHJvamVjdF8wX1J1bm5pbmdfZXh0cmFfcmVzb2x1dGlvbl9wYXNzX2Zvcl9tb2R1bGVfMV91c2luZ19jYWNoZV9sb2NhdGlvbl8yOmEoNjE0MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkF1dG9fZGlzY292ZXJ5X2Zvcl90eXBpbmdzX2lzX2VuYWJsZWRfaW5fcHJvamVjdF8wX1J1bm5pbmdfZXh0cmFfcmVzb2x1dGlvbl9wYXNzX2Zvcl9tb2R1bGVfMV91c2luZ19fNjE0MFwiLFwiQXV0byBkaXNjb3ZlcnkgZm9yIHR5cGluZ3MgaXMgZW5hYmxlZCBpbiBwcm9qZWN0ICd7MH0nLiBSdW5uaW5nIGV4dHJhIHJlc29sdXRpb24gcGFzcyBmb3IgbW9kdWxlICd7MX0nIHVzaW5nIGNhY2hlIGxvY2F0aW9uICd7Mn0nLlwiKSxQYXJzZV9pbl9zdHJpY3RfbW9kZV9hbmRfZW1pdF91c2Vfc3RyaWN0X2Zvcl9lYWNoX3NvdXJjZV9maWxlOmEoNjE0MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUGFyc2VfaW5fc3RyaWN0X21vZGVfYW5kX2VtaXRfdXNlX3N0cmljdF9mb3JfZWFjaF9zb3VyY2VfZmlsZV82MTQxXCIsJ1BhcnNlIGluIHN0cmljdCBtb2RlIGFuZCBlbWl0IFwidXNlIHN0cmljdFwiIGZvciBlYWNoIHNvdXJjZSBmaWxlLicpLE1vZHVsZV8wX3dhc19yZXNvbHZlZF90b18xX2J1dF9qc3hfaXNfbm90X3NldDphKDYxNDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJNb2R1bGVfMF93YXNfcmVzb2x2ZWRfdG9fMV9idXRfanN4X2lzX25vdF9zZXRfNjE0MlwiLFwiTW9kdWxlICd7MH0nIHdhcyByZXNvbHZlZCB0byAnezF9JywgYnV0ICctLWpzeCcgaXMgbm90IHNldC5cIiksTW9kdWxlXzBfd2FzX3Jlc29sdmVkX2FzX2xvY2FsbHlfZGVjbGFyZWRfYW1iaWVudF9tb2R1bGVfaW5fZmlsZV8xOmEoNjE0NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTW9kdWxlXzBfd2FzX3Jlc29sdmVkX2FzX2xvY2FsbHlfZGVjbGFyZWRfYW1iaWVudF9tb2R1bGVfaW5fZmlsZV8xXzYxNDRcIixcIk1vZHVsZSAnezB9JyB3YXMgcmVzb2x2ZWQgYXMgbG9jYWxseSBkZWNsYXJlZCBhbWJpZW50IG1vZHVsZSBpbiBmaWxlICd7MX0nLlwiKSxNb2R1bGVfMF93YXNfcmVzb2x2ZWRfYXNfYW1iaWVudF9tb2R1bGVfZGVjbGFyZWRfaW5fMV9zaW5jZV90aGlzX2ZpbGVfd2FzX25vdF9tb2RpZmllZDphKDYxNDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk1vZHVsZV8wX3dhc19yZXNvbHZlZF9hc19hbWJpZW50X21vZHVsZV9kZWNsYXJlZF9pbl8xX3NpbmNlX3RoaXNfZmlsZV93YXNfbm90X21vZGlmaWVkXzYxNDVcIixcIk1vZHVsZSAnezB9JyB3YXMgcmVzb2x2ZWQgYXMgYW1iaWVudCBtb2R1bGUgZGVjbGFyZWQgaW4gJ3sxfScgc2luY2UgdGhpcyBmaWxlIHdhcyBub3QgbW9kaWZpZWQuXCIpLFNwZWNpZnlfdGhlX0pTWF9mYWN0b3J5X2Z1bmN0aW9uX3RvX3VzZV93aGVuX3RhcmdldGluZ19yZWFjdF9KU1hfZW1pdF9lX2dfUmVhY3RfY3JlYXRlRWxlbWVudF9vcl9oOmEoNjE0NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV90aGVfSlNYX2ZhY3RvcnlfZnVuY3Rpb25fdG9fdXNlX3doZW5fdGFyZ2V0aW5nX3JlYWN0X0pTWF9lbWl0X2VfZ19SZWFjdF9jcmVhdGVFbGVtZW50X29yX2hfNjE0NlwiLFwiU3BlY2lmeSB0aGUgSlNYIGZhY3RvcnkgZnVuY3Rpb24gdG8gdXNlIHdoZW4gdGFyZ2V0aW5nICdyZWFjdCcgSlNYIGVtaXQsIGUuZy4gJ1JlYWN0LmNyZWF0ZUVsZW1lbnQnIG9yICdoJy5cIiksUmVzb2x1dGlvbl9mb3JfbW9kdWxlXzBfd2FzX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMTphKDYxNDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlc29sdXRpb25fZm9yX21vZHVsZV8wX3dhc19mb3VuZF9pbl9jYWNoZV9mcm9tX2xvY2F0aW9uXzFfNjE0N1wiLFwiUmVzb2x1dGlvbiBmb3IgbW9kdWxlICd7MH0nIHdhcyBmb3VuZCBpbiBjYWNoZSBmcm9tIGxvY2F0aW9uICd7MX0nLlwiKSxEaXJlY3RvcnlfMF9kb2VzX25vdF9leGlzdF9za2lwcGluZ19hbGxfbG9va3Vwc19pbl9pdDphKDYxNDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpcmVjdG9yeV8wX2RvZXNfbm90X2V4aXN0X3NraXBwaW5nX2FsbF9sb29rdXBzX2luX2l0XzYxNDhcIixcIkRpcmVjdG9yeSAnezB9JyBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcgYWxsIGxvb2t1cHMgaW4gaXQuXCIpLFNob3dfZGlhZ25vc3RpY19pbmZvcm1hdGlvbjphKDYxNDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNob3dfZGlhZ25vc3RpY19pbmZvcm1hdGlvbl82MTQ5XCIsXCJTaG93IGRpYWdub3N0aWMgaW5mb3JtYXRpb24uXCIpLFNob3dfdmVyYm9zZV9kaWFnbm9zdGljX2luZm9ybWF0aW9uOmEoNjE1MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU2hvd192ZXJib3NlX2RpYWdub3N0aWNfaW5mb3JtYXRpb25fNjE1MFwiLFwiU2hvdyB2ZXJib3NlIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uXCIpLEVtaXRfYV9zaW5nbGVfZmlsZV93aXRoX3NvdXJjZV9tYXBzX2luc3RlYWRfb2ZfaGF2aW5nX2Ffc2VwYXJhdGVfZmlsZTphKDYxNTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVtaXRfYV9zaW5nbGVfZmlsZV93aXRoX3NvdXJjZV9tYXBzX2luc3RlYWRfb2ZfaGF2aW5nX2Ffc2VwYXJhdGVfZmlsZV82MTUxXCIsXCJFbWl0IGEgc2luZ2xlIGZpbGUgd2l0aCBzb3VyY2UgbWFwcyBpbnN0ZWFkIG9mIGhhdmluZyBhIHNlcGFyYXRlIGZpbGUuXCIpLEVtaXRfdGhlX3NvdXJjZV9hbG9uZ3NpZGVfdGhlX3NvdXJjZW1hcHNfd2l0aGluX2Ffc2luZ2xlX2ZpbGVfcmVxdWlyZXNfaW5saW5lU291cmNlTWFwX29yX3NvdXJjZU1hcF90b19iZV9zZXQ6YSg2MTUyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbWl0X3RoZV9zb3VyY2VfYWxvbmdzaWRlX3RoZV9zb3VyY2VtYXBzX3dpdGhpbl9hX3NpbmdsZV9maWxlX3JlcXVpcmVzX2lubGluZVNvdXJjZU1hcF9vcl9zb3VyY2VNYXBfXzYxNTJcIixcIkVtaXQgdGhlIHNvdXJjZSBhbG9uZ3NpZGUgdGhlIHNvdXJjZW1hcHMgd2l0aGluIGEgc2luZ2xlIGZpbGU7IHJlcXVpcmVzICctLWlubGluZVNvdXJjZU1hcCcgb3IgJy0tc291cmNlTWFwJyB0byBiZSBzZXQuXCIpLFRyYW5zcGlsZV9lYWNoX2ZpbGVfYXNfYV9zZXBhcmF0ZV9tb2R1bGVfc2ltaWxhcl90b190c190cmFuc3BpbGVNb2R1bGU6YSg2MTUzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJUcmFuc3BpbGVfZWFjaF9maWxlX2FzX2Ffc2VwYXJhdGVfbW9kdWxlX3NpbWlsYXJfdG9fdHNfdHJhbnNwaWxlTW9kdWxlXzYxNTNcIixcIlRyYW5zcGlsZSBlYWNoIGZpbGUgYXMgYSBzZXBhcmF0ZSBtb2R1bGUgKHNpbWlsYXIgdG8gJ3RzLnRyYW5zcGlsZU1vZHVsZScpLlwiKSxQcmludF9uYW1lc19vZl9nZW5lcmF0ZWRfZmlsZXNfcGFydF9vZl90aGVfY29tcGlsYXRpb246YSg2MTU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQcmludF9uYW1lc19vZl9nZW5lcmF0ZWRfZmlsZXNfcGFydF9vZl90aGVfY29tcGlsYXRpb25fNjE1NFwiLFwiUHJpbnQgbmFtZXMgb2YgZ2VuZXJhdGVkIGZpbGVzIHBhcnQgb2YgdGhlIGNvbXBpbGF0aW9uLlwiKSxQcmludF9uYW1lc19vZl9maWxlc19wYXJ0X29mX3RoZV9jb21waWxhdGlvbjphKDYxNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByaW50X25hbWVzX29mX2ZpbGVzX3BhcnRfb2ZfdGhlX2NvbXBpbGF0aW9uXzYxNTVcIixcIlByaW50IG5hbWVzIG9mIGZpbGVzIHBhcnQgb2YgdGhlIGNvbXBpbGF0aW9uLlwiKSxUaGVfbG9jYWxlX3VzZWRfd2hlbl9kaXNwbGF5aW5nX21lc3NhZ2VzX3RvX3RoZV91c2VyX2VfZ19lbl91czphKDYxNTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlRoZV9sb2NhbGVfdXNlZF93aGVuX2Rpc3BsYXlpbmdfbWVzc2FnZXNfdG9fdGhlX3VzZXJfZV9nX2VuX3VzXzYxNTZcIixcIlRoZSBsb2NhbGUgdXNlZCB3aGVuIGRpc3BsYXlpbmcgbWVzc2FnZXMgdG8gdGhlIHVzZXIgKGUuZy4gJ2VuLXVzJylcIiksRG9fbm90X2dlbmVyYXRlX2N1c3RvbV9oZWxwZXJfZnVuY3Rpb25zX2xpa2VfZXh0ZW5kc19pbl9jb21waWxlZF9vdXRwdXQ6YSg2MTU3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEb19ub3RfZ2VuZXJhdGVfY3VzdG9tX2hlbHBlcl9mdW5jdGlvbnNfbGlrZV9leHRlbmRzX2luX2NvbXBpbGVkX291dHB1dF82MTU3XCIsXCJEbyBub3QgZ2VuZXJhdGUgY3VzdG9tIGhlbHBlciBmdW5jdGlvbnMgbGlrZSAnX19leHRlbmRzJyBpbiBjb21waWxlZCBvdXRwdXQuXCIpLERvX25vdF9pbmNsdWRlX3RoZV9kZWZhdWx0X2xpYnJhcnlfZmlsZV9saWJfZF90czphKDYxNTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRvX25vdF9pbmNsdWRlX3RoZV9kZWZhdWx0X2xpYnJhcnlfZmlsZV9saWJfZF90c182MTU4XCIsXCJEbyBub3QgaW5jbHVkZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IGZpbGUgKGxpYi5kLnRzKS5cIiksRG9fbm90X2FkZF90cmlwbGVfc2xhc2hfcmVmZXJlbmNlc19vcl9pbXBvcnRlZF9tb2R1bGVzX3RvX3RoZV9saXN0X29mX2NvbXBpbGVkX2ZpbGVzOmEoNjE1OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRG9fbm90X2FkZF90cmlwbGVfc2xhc2hfcmVmZXJlbmNlc19vcl9pbXBvcnRlZF9tb2R1bGVzX3RvX3RoZV9saXN0X29mX2NvbXBpbGVkX2ZpbGVzXzYxNTlcIixcIkRvIG5vdCBhZGQgdHJpcGxlLXNsYXNoIHJlZmVyZW5jZXMgb3IgaW1wb3J0ZWQgbW9kdWxlcyB0byB0aGUgbGlzdCBvZiBjb21waWxlZCBmaWxlcy5cIiksRGVwcmVjYXRlZF9Vc2Vfc2tpcExpYkNoZWNrX2luc3RlYWRfU2tpcF90eXBlX2NoZWNraW5nX29mX2RlZmF1bHRfbGlicmFyeV9kZWNsYXJhdGlvbl9maWxlczphKDYxNjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRlcHJlY2F0ZWRfVXNlX3NraXBMaWJDaGVja19pbnN0ZWFkX1NraXBfdHlwZV9jaGVja2luZ19vZl9kZWZhdWx0X2xpYnJhcnlfZGVjbGFyYXRpb25fZmlsZXNfNjE2MFwiLFwiW0RlcHJlY2F0ZWRdIFVzZSAnLS1za2lwTGliQ2hlY2snIGluc3RlYWQuIFNraXAgdHlwZSBjaGVja2luZyBvZiBkZWZhdWx0IGxpYnJhcnkgZGVjbGFyYXRpb24gZmlsZXMuXCIpLExpc3Rfb2ZfZm9sZGVyc190b19pbmNsdWRlX3R5cGVfZGVmaW5pdGlvbnNfZnJvbTphKDYxNjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkxpc3Rfb2ZfZm9sZGVyc190b19pbmNsdWRlX3R5cGVfZGVmaW5pdGlvbnNfZnJvbV82MTYxXCIsXCJMaXN0IG9mIGZvbGRlcnMgdG8gaW5jbHVkZSB0eXBlIGRlZmluaXRpb25zIGZyb20uXCIpLERpc2FibGVfc2l6ZV9saW1pdGF0aW9uc19vbl9KYXZhU2NyaXB0X3Byb2plY3RzOmEoNjE2MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV9zaXplX2xpbWl0YXRpb25zX29uX0phdmFTY3JpcHRfcHJvamVjdHNfNjE2MlwiLFwiRGlzYWJsZSBzaXplIGxpbWl0YXRpb25zIG9uIEphdmFTY3JpcHQgcHJvamVjdHMuXCIpLFRoZV9jaGFyYWN0ZXJfc2V0X29mX3RoZV9pbnB1dF9maWxlczphKDYxNjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlRoZV9jaGFyYWN0ZXJfc2V0X29mX3RoZV9pbnB1dF9maWxlc182MTYzXCIsXCJUaGUgY2hhcmFjdGVyIHNldCBvZiB0aGUgaW5wdXQgZmlsZXMuXCIpLERvX25vdF90cnVuY2F0ZV9lcnJvcl9tZXNzYWdlczphKDYxNjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRvX25vdF90cnVuY2F0ZV9lcnJvcl9tZXNzYWdlc182MTY1XCIsXCJEbyBub3QgdHJ1bmNhdGUgZXJyb3IgbWVzc2FnZXMuXCIpLE91dHB1dF9kaXJlY3RvcnlfZm9yX2dlbmVyYXRlZF9kZWNsYXJhdGlvbl9maWxlczphKDYxNjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk91dHB1dF9kaXJlY3RvcnlfZm9yX2dlbmVyYXRlZF9kZWNsYXJhdGlvbl9maWxlc182MTY2XCIsXCJPdXRwdXQgZGlyZWN0b3J5IGZvciBnZW5lcmF0ZWQgZGVjbGFyYXRpb24gZmlsZXMuXCIpLEFfc2VyaWVzX29mX2VudHJpZXNfd2hpY2hfcmVfbWFwX2ltcG9ydHNfdG9fbG9va3VwX2xvY2F0aW9uc19yZWxhdGl2ZV90b190aGVfYmFzZVVybDphKDYxNjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFfc2VyaWVzX29mX2VudHJpZXNfd2hpY2hfcmVfbWFwX2ltcG9ydHNfdG9fbG9va3VwX2xvY2F0aW9uc19yZWxhdGl2ZV90b190aGVfYmFzZVVybF82MTY3XCIsXCJBIHNlcmllcyBvZiBlbnRyaWVzIHdoaWNoIHJlLW1hcCBpbXBvcnRzIHRvIGxvb2t1cCBsb2NhdGlvbnMgcmVsYXRpdmUgdG8gdGhlICdiYXNlVXJsJy5cIiksTGlzdF9vZl9yb290X2ZvbGRlcnNfd2hvc2VfY29tYmluZWRfY29udGVudF9yZXByZXNlbnRzX3RoZV9zdHJ1Y3R1cmVfb2ZfdGhlX3Byb2plY3RfYXRfcnVudGltZTphKDYxNjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkxpc3Rfb2Zfcm9vdF9mb2xkZXJzX3dob3NlX2NvbWJpbmVkX2NvbnRlbnRfcmVwcmVzZW50c190aGVfc3RydWN0dXJlX29mX3RoZV9wcm9qZWN0X2F0X3J1bnRpbWVfNjE2OFwiLFwiTGlzdCBvZiByb290IGZvbGRlcnMgd2hvc2UgY29tYmluZWQgY29udGVudCByZXByZXNlbnRzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHByb2plY3QgYXQgcnVudGltZS5cIiksU2hvd19hbGxfY29tcGlsZXJfb3B0aW9uczphKDYxNjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNob3dfYWxsX2NvbXBpbGVyX29wdGlvbnNfNjE2OVwiLFwiU2hvdyBhbGwgY29tcGlsZXIgb3B0aW9ucy5cIiksRGVwcmVjYXRlZF9Vc2Vfb3V0RmlsZV9pbnN0ZWFkX0NvbmNhdGVuYXRlX2FuZF9lbWl0X291dHB1dF90b19zaW5nbGVfZmlsZTphKDYxNzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRlcHJlY2F0ZWRfVXNlX291dEZpbGVfaW5zdGVhZF9Db25jYXRlbmF0ZV9hbmRfZW1pdF9vdXRwdXRfdG9fc2luZ2xlX2ZpbGVfNjE3MFwiLFwiW0RlcHJlY2F0ZWRdIFVzZSAnLS1vdXRGaWxlJyBpbnN0ZWFkLiBDb25jYXRlbmF0ZSBhbmQgZW1pdCBvdXRwdXQgdG8gc2luZ2xlIGZpbGVcIiksQ29tbWFuZF9saW5lX09wdGlvbnM6YSg2MTcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb21tYW5kX2xpbmVfT3B0aW9uc182MTcxXCIsXCJDb21tYW5kLWxpbmUgT3B0aW9uc1wiKSxQcm92aWRlX2Z1bGxfc3VwcG9ydF9mb3JfaXRlcmFibGVzX2luX2Zvcl9vZl9zcHJlYWRfYW5kX2Rlc3RydWN0dXJpbmdfd2hlbl90YXJnZXRpbmdfRVM1X29yX0VTMzphKDYxNzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByb3ZpZGVfZnVsbF9zdXBwb3J0X2Zvcl9pdGVyYWJsZXNfaW5fZm9yX29mX3NwcmVhZF9hbmRfZGVzdHJ1Y3R1cmluZ193aGVuX3RhcmdldGluZ19FUzVfb3JfRVMzXzYxNzlcIixcIlByb3ZpZGUgZnVsbCBzdXBwb3J0IGZvciBpdGVyYWJsZXMgaW4gJ2Zvci1vZicsIHNwcmVhZCwgYW5kIGRlc3RydWN0dXJpbmcgd2hlbiB0YXJnZXRpbmcgJ0VTNScgb3IgJ0VTMycuXCIpLEVuYWJsZV9hbGxfc3RyaWN0X3R5cGVfY2hlY2tpbmdfb3B0aW9uczphKDYxODAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV9hbGxfc3RyaWN0X3R5cGVfY2hlY2tpbmdfb3B0aW9uc182MTgwXCIsXCJFbmFibGUgYWxsIHN0cmljdCB0eXBlLWNoZWNraW5nIG9wdGlvbnMuXCIpLFNjb3BlZF9wYWNrYWdlX2RldGVjdGVkX2xvb2tpbmdfaW5fMDphKDYxODIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNjb3BlZF9wYWNrYWdlX2RldGVjdGVkX2xvb2tpbmdfaW5fMF82MTgyXCIsXCJTY29wZWQgcGFja2FnZSBkZXRlY3RlZCwgbG9va2luZyBpbiAnezB9J1wiKSxSZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX29mX29sZF9wcm9ncmFtX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMjphKDYxODMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJldXNpbmdfcmVzb2x1dGlvbl9vZl9tb2R1bGVfMF9mcm9tXzFfb2Zfb2xkX3Byb2dyYW1faXRfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18yXzYxODNcIixcIlJldXNpbmcgcmVzb2x1dGlvbiBvZiBtb2R1bGUgJ3swfScgZnJvbSAnezF9JyBvZiBvbGQgcHJvZ3JhbSwgaXQgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCB0byAnezJ9Jy5cIiksUmV1c2luZ19yZXNvbHV0aW9uX29mX21vZHVsZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzJfd2l0aF9QYWNrYWdlX0lEXzM6YSg2MTg0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX29mX29sZF9wcm9ncmFtX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMl93aXRoX1BhY2thZ2VfXzYxODRcIixcIlJldXNpbmcgcmVzb2x1dGlvbiBvZiBtb2R1bGUgJ3swfScgZnJvbSAnezF9JyBvZiBvbGQgcHJvZ3JhbSwgaXQgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCB0byAnezJ9JyB3aXRoIFBhY2thZ2UgSUQgJ3szfScuXCIpLEVuYWJsZV9zdHJpY3RfY2hlY2tpbmdfb2ZfZnVuY3Rpb25fdHlwZXM6YSg2MTg2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbmFibGVfc3RyaWN0X2NoZWNraW5nX29mX2Z1bmN0aW9uX3R5cGVzXzYxODZcIixcIkVuYWJsZSBzdHJpY3QgY2hlY2tpbmcgb2YgZnVuY3Rpb24gdHlwZXMuXCIpLEVuYWJsZV9zdHJpY3RfY2hlY2tpbmdfb2ZfcHJvcGVydHlfaW5pdGlhbGl6YXRpb25faW5fY2xhc3NlczphKDYxODcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV9zdHJpY3RfY2hlY2tpbmdfb2ZfcHJvcGVydHlfaW5pdGlhbGl6YXRpb25faW5fY2xhc3Nlc182MTg3XCIsXCJFbmFibGUgc3RyaWN0IGNoZWNraW5nIG9mIHByb3BlcnR5IGluaXRpYWxpemF0aW9uIGluIGNsYXNzZXMuXCIpLE51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZTphKDYxODgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmVfNjE4OFwiLFwiTnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBoZXJlLlwiKSxNdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQ6YSg2MTg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkXzYxODlcIixcIk11bHRpcGxlIGNvbnNlY3V0aXZlIG51bWVyaWMgc2VwYXJhdG9ycyBhcmUgbm90IHBlcm1pdHRlZC5cIiksV2hldGhlcl90b19rZWVwX291dGRhdGVkX2NvbnNvbGVfb3V0cHV0X2luX3dhdGNoX21vZGVfaW5zdGVhZF9vZl9jbGVhcmluZ190aGVfc2NyZWVuOmEoNjE5MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiV2hldGhlcl90b19rZWVwX291dGRhdGVkX2NvbnNvbGVfb3V0cHV0X2luX3dhdGNoX21vZGVfaW5zdGVhZF9vZl9jbGVhcmluZ190aGVfc2NyZWVuXzYxOTFcIixcIldoZXRoZXIgdG8ga2VlcCBvdXRkYXRlZCBjb25zb2xlIG91dHB1dCBpbiB3YXRjaCBtb2RlIGluc3RlYWQgb2YgY2xlYXJpbmcgdGhlIHNjcmVlbi5cIiksQWxsX2ltcG9ydHNfaW5faW1wb3J0X2RlY2xhcmF0aW9uX2FyZV91bnVzZWQ6YSg2MTkyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQWxsX2ltcG9ydHNfaW5faW1wb3J0X2RlY2xhcmF0aW9uX2FyZV91bnVzZWRfNjE5MlwiLFwiQWxsIGltcG9ydHMgaW4gaW1wb3J0IGRlY2xhcmF0aW9uIGFyZSB1bnVzZWQuXCIsITApLEZvdW5kXzFfZXJyb3JfV2F0Y2hpbmdfZm9yX2ZpbGVfY2hhbmdlczphKDYxOTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZvdW5kXzFfZXJyb3JfV2F0Y2hpbmdfZm9yX2ZpbGVfY2hhbmdlc182MTkzXCIsXCJGb3VuZCAxIGVycm9yLiBXYXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzLlwiKSxGb3VuZF8wX2Vycm9yc19XYXRjaGluZ19mb3JfZmlsZV9jaGFuZ2VzOmEoNjE5NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRm91bmRfMF9lcnJvcnNfV2F0Y2hpbmdfZm9yX2ZpbGVfY2hhbmdlc182MTk0XCIsXCJGb3VuZCB7MH0gZXJyb3JzLiBXYXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzLlwiKSxSZXNvbHZlX2tleW9mX3RvX3N0cmluZ192YWx1ZWRfcHJvcGVydHlfbmFtZXNfb25seV9ub19udW1iZXJzX29yX3N5bWJvbHM6YSg2MTk1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXNvbHZlX2tleW9mX3RvX3N0cmluZ192YWx1ZWRfcHJvcGVydHlfbmFtZXNfb25seV9ub19udW1iZXJzX29yX3N5bWJvbHNfNjE5NVwiLFwiUmVzb2x2ZSAna2V5b2YnIHRvIHN0cmluZyB2YWx1ZWQgcHJvcGVydHkgbmFtZXMgb25seSAobm8gbnVtYmVycyBvciBzeW1ib2xzKS5cIiksXzBfaXNfZGVjbGFyZWRfYnV0X25ldmVyX3VzZWQ6YSg2MTk2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiXzBfaXNfZGVjbGFyZWRfYnV0X25ldmVyX3VzZWRfNjE5NlwiLFwiJ3swfScgaXMgZGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQuXCIsITApLEluY2x1ZGVfbW9kdWxlc19pbXBvcnRlZF93aXRoX2pzb25fZXh0ZW5zaW9uOmEoNjE5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW5jbHVkZV9tb2R1bGVzX2ltcG9ydGVkX3dpdGhfanNvbl9leHRlbnNpb25fNjE5N1wiLFwiSW5jbHVkZSBtb2R1bGVzIGltcG9ydGVkIHdpdGggJy5qc29uJyBleHRlbnNpb25cIiksQWxsX2Rlc3RydWN0dXJlZF9lbGVtZW50c19hcmVfdW51c2VkOmEoNjE5OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFsbF9kZXN0cnVjdHVyZWRfZWxlbWVudHNfYXJlX3VudXNlZF82MTk4XCIsXCJBbGwgZGVzdHJ1Y3R1cmVkIGVsZW1lbnRzIGFyZSB1bnVzZWQuXCIsITApLEFsbF92YXJpYWJsZXNfYXJlX3VudXNlZDphKDYxOTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbGxfdmFyaWFibGVzX2FyZV91bnVzZWRfNjE5OVwiLFwiQWxsIHZhcmlhYmxlcyBhcmUgdW51c2VkLlwiLCEwKSxEZWZpbml0aW9uc19vZl90aGVfZm9sbG93aW5nX2lkZW50aWZpZXJzX2NvbmZsaWN0X3dpdGhfdGhvc2VfaW5fYW5vdGhlcl9maWxlX0NvbG9uXzA6YSg2MjAwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRGVmaW5pdGlvbnNfb2ZfdGhlX2ZvbGxvd2luZ19pZGVudGlmaWVyc19jb25mbGljdF93aXRoX3Rob3NlX2luX2Fub3RoZXJfZmlsZV9Db2xvbl8wXzYyMDBcIixcIkRlZmluaXRpb25zIG9mIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiBhbm90aGVyIGZpbGU6IHswfVwiKSxDb25mbGljdHNfYXJlX2luX3RoaXNfZmlsZTphKDYyMDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbmZsaWN0c19hcmVfaW5fdGhpc19maWxlXzYyMDFcIixcIkNvbmZsaWN0cyBhcmUgaW4gdGhpcyBmaWxlLlwiKSxQcm9qZWN0X3JlZmVyZW5jZXNfbWF5X25vdF9mb3JtX2FfY2lyY3VsYXJfZ3JhcGhfQ3ljbGVfZGV0ZWN0ZWRfQ29sb25fMDphKDYyMDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9qZWN0X3JlZmVyZW5jZXNfbWF5X25vdF9mb3JtX2FfY2lyY3VsYXJfZ3JhcGhfQ3ljbGVfZGV0ZWN0ZWRfQ29sb25fMF82MjAyXCIsXCJQcm9qZWN0IHJlZmVyZW5jZXMgbWF5IG5vdCBmb3JtIGEgY2lyY3VsYXIgZ3JhcGguIEN5Y2xlIGRldGVjdGVkOiB7MH1cIiksXzBfd2FzX2Fsc29fZGVjbGFyZWRfaGVyZTphKDYyMDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIl8wX3dhc19hbHNvX2RlY2xhcmVkX2hlcmVfNjIwM1wiLFwiJ3swfScgd2FzIGFsc28gZGVjbGFyZWQgaGVyZS5cIiksYW5kX2hlcmU6YSg2MjA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJhbmRfaGVyZV82MjA0XCIsXCJhbmQgaGVyZS5cIiksQWxsX3R5cGVfcGFyYW1ldGVyc19hcmVfdW51c2VkOmEoNjIwNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFsbF90eXBlX3BhcmFtZXRlcnNfYXJlX3VudXNlZF82MjA1XCIsXCJBbGwgdHlwZSBwYXJhbWV0ZXJzIGFyZSB1bnVzZWQuXCIpLHBhY2thZ2VfanNvbl9oYXNfYV90eXBlc1ZlcnNpb25zX2ZpZWxkX3dpdGhfdmVyc2lvbl9zcGVjaWZpY19wYXRoX21hcHBpbmdzOmEoNjIwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwicGFja2FnZV9qc29uX2hhc19hX3R5cGVzVmVyc2lvbnNfZmllbGRfd2l0aF92ZXJzaW9uX3NwZWNpZmljX3BhdGhfbWFwcGluZ3NfNjIwNlwiLFwiJ3BhY2thZ2UuanNvbicgaGFzIGEgJ3R5cGVzVmVyc2lvbnMnIGZpZWxkIHdpdGggdmVyc2lvbi1zcGVjaWZpYyBwYXRoIG1hcHBpbmdzLlwiKSxwYWNrYWdlX2pzb25fZG9lc19ub3RfaGF2ZV9hX3R5cGVzVmVyc2lvbnNfZW50cnlfdGhhdF9tYXRjaGVzX3ZlcnNpb25fMDphKDYyMDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcInBhY2thZ2VfanNvbl9kb2VzX25vdF9oYXZlX2FfdHlwZXNWZXJzaW9uc19lbnRyeV90aGF0X21hdGNoZXNfdmVyc2lvbl8wXzYyMDdcIixcIidwYWNrYWdlLmpzb24nIGRvZXMgbm90IGhhdmUgYSAndHlwZXNWZXJzaW9ucycgZW50cnkgdGhhdCBtYXRjaGVzIHZlcnNpb24gJ3swfScuXCIpLHBhY2thZ2VfanNvbl9oYXNfYV90eXBlc1ZlcnNpb25zX2VudHJ5XzBfdGhhdF9tYXRjaGVzX2NvbXBpbGVyX3ZlcnNpb25fMV9sb29raW5nX2Zvcl9hX3BhdHRlcm5fdG9fbWF0Y2hfbW9kdWxlX25hbWVfMjphKDYyMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcInBhY2thZ2VfanNvbl9oYXNfYV90eXBlc1ZlcnNpb25zX2VudHJ5XzBfdGhhdF9tYXRjaGVzX2NvbXBpbGVyX3ZlcnNpb25fMV9sb29raW5nX2Zvcl9hX3BhdHRlcm5fdG9fbWFfNjIwOFwiLFwiJ3BhY2thZ2UuanNvbicgaGFzIGEgJ3R5cGVzVmVyc2lvbnMnIGVudHJ5ICd7MH0nIHRoYXQgbWF0Y2hlcyBjb21waWxlciB2ZXJzaW9uICd7MX0nLCBsb29raW5nIGZvciBhIHBhdHRlcm4gdG8gbWF0Y2ggbW9kdWxlIG5hbWUgJ3syfScuXCIpLHBhY2thZ2VfanNvbl9oYXNfYV90eXBlc1ZlcnNpb25zX2VudHJ5XzBfdGhhdF9pc19ub3RfYV92YWxpZF9zZW12ZXJfcmFuZ2U6YSg2MjA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJwYWNrYWdlX2pzb25faGFzX2FfdHlwZXNWZXJzaW9uc19lbnRyeV8wX3RoYXRfaXNfbm90X2FfdmFsaWRfc2VtdmVyX3JhbmdlXzYyMDlcIixcIidwYWNrYWdlLmpzb24nIGhhcyBhICd0eXBlc1ZlcnNpb25zJyBlbnRyeSAnezB9JyB0aGF0IGlzIG5vdCBhIHZhbGlkIHNlbXZlciByYW5nZS5cIiksQW5fYXJndW1lbnRfZm9yXzBfd2FzX25vdF9wcm92aWRlZDphKDYyMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFuX2FyZ3VtZW50X2Zvcl8wX3dhc19ub3RfcHJvdmlkZWRfNjIxMFwiLFwiQW4gYXJndW1lbnQgZm9yICd7MH0nIHdhcyBub3QgcHJvdmlkZWQuXCIpLEFuX2FyZ3VtZW50X21hdGNoaW5nX3RoaXNfYmluZGluZ19wYXR0ZXJuX3dhc19ub3RfcHJvdmlkZWQ6YSg2MjExLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBbl9hcmd1bWVudF9tYXRjaGluZ190aGlzX2JpbmRpbmdfcGF0dGVybl93YXNfbm90X3Byb3ZpZGVkXzYyMTFcIixcIkFuIGFyZ3VtZW50IG1hdGNoaW5nIHRoaXMgYmluZGluZyBwYXR0ZXJuIHdhcyBub3QgcHJvdmlkZWQuXCIpLERpZF95b3VfbWVhbl90b19jYWxsX3RoaXNfZXhwcmVzc2lvbjphKDYyMTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpZF95b3VfbWVhbl90b19jYWxsX3RoaXNfZXhwcmVzc2lvbl82MjEyXCIsXCJEaWQgeW91IG1lYW4gdG8gY2FsbCB0aGlzIGV4cHJlc3Npb24/XCIpLERpZF95b3VfbWVhbl90b191c2VfbmV3X3dpdGhfdGhpc19leHByZXNzaW9uOmEoNjIxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlkX3lvdV9tZWFuX3RvX3VzZV9uZXdfd2l0aF90aGlzX2V4cHJlc3Npb25fNjIxM1wiLFwiRGlkIHlvdSBtZWFuIHRvIHVzZSAnbmV3JyB3aXRoIHRoaXMgZXhwcmVzc2lvbj9cIiksRW5hYmxlX3N0cmljdF9iaW5kX2NhbGxfYW5kX2FwcGx5X21ldGhvZHNfb25fZnVuY3Rpb25zOmEoNjIxNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlX3N0cmljdF9iaW5kX2NhbGxfYW5kX2FwcGx5X21ldGhvZHNfb25fZnVuY3Rpb25zXzYyMTRcIixcIkVuYWJsZSBzdHJpY3QgJ2JpbmQnLCAnY2FsbCcsIGFuZCAnYXBwbHknIG1ldGhvZHMgb24gZnVuY3Rpb25zLlwiKSxVc2luZ19jb21waWxlcl9vcHRpb25zX29mX3Byb2plY3RfcmVmZXJlbmNlX3JlZGlyZWN0XzA6YSg2MjE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJVc2luZ19jb21waWxlcl9vcHRpb25zX29mX3Byb2plY3RfcmVmZXJlbmNlX3JlZGlyZWN0XzBfNjIxNVwiLFwiVXNpbmcgY29tcGlsZXIgb3B0aW9ucyBvZiBwcm9qZWN0IHJlZmVyZW5jZSByZWRpcmVjdCAnezB9Jy5cIiksRm91bmRfMV9lcnJvcjphKDYyMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZvdW5kXzFfZXJyb3JfNjIxNlwiLFwiRm91bmQgMSBlcnJvci5cIiksRm91bmRfMF9lcnJvcnM6YSg2MjE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGb3VuZF8wX2Vycm9yc182MjE3XCIsXCJGb3VuZCB7MH0gZXJyb3JzLlwiKSxNb2R1bGVfbmFtZV8wX3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMV93aXRoX1BhY2thZ2VfSURfMjphKDYyMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk1vZHVsZV9uYW1lXzBfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18xX3dpdGhfUGFja2FnZV9JRF8yXzYyMThcIixcIj09PT09PT09IE1vZHVsZSBuYW1lICd7MH0nIHdhcyBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQgdG8gJ3sxfScgd2l0aCBQYWNrYWdlIElEICd7Mn0nLiA9PT09PT09PVwiKSxUeXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzFfd2l0aF9QYWNrYWdlX0lEXzJfcHJpbWFyeV9Db2xvbl8zOmEoNjIxOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18xX3dpdGhfUGFja2FnZV9JRF8yX3ByaW1hcnlfQ29sb25fM182MjE5XCIsXCI9PT09PT09PSBUeXBlIHJlZmVyZW5jZSBkaXJlY3RpdmUgJ3swfScgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCB0byAnezF9JyB3aXRoIFBhY2thZ2UgSUQgJ3syfScsIHByaW1hcnk6IHszfS4gPT09PT09PT1cIikscGFja2FnZV9qc29uX2hhZF9hX2ZhbHN5XzBfZmllbGQ6YSg2MjIwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJwYWNrYWdlX2pzb25faGFkX2FfZmFsc3lfMF9maWVsZF82MjIwXCIsXCIncGFja2FnZS5qc29uJyBoYWQgYSBmYWxzeSAnezB9JyBmaWVsZC5cIiksRGlzYWJsZV91c2Vfb2Zfc291cmNlX2ZpbGVzX2luc3RlYWRfb2ZfZGVjbGFyYXRpb25fZmlsZXNfZnJvbV9yZWZlcmVuY2VkX3Byb2plY3RzOmEoNjIyMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV91c2Vfb2Zfc291cmNlX2ZpbGVzX2luc3RlYWRfb2ZfZGVjbGFyYXRpb25fZmlsZXNfZnJvbV9yZWZlcmVuY2VkX3Byb2plY3RzXzYyMjFcIixcIkRpc2FibGUgdXNlIG9mIHNvdXJjZSBmaWxlcyBpbnN0ZWFkIG9mIGRlY2xhcmF0aW9uIGZpbGVzIGZyb20gcmVmZXJlbmNlZCBwcm9qZWN0cy5cIiksRW1pdF9jbGFzc19maWVsZHNfd2l0aF9EZWZpbmVfaW5zdGVhZF9vZl9TZXQ6YSg2MjIyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbWl0X2NsYXNzX2ZpZWxkc193aXRoX0RlZmluZV9pbnN0ZWFkX29mX1NldF82MjIyXCIsXCJFbWl0IGNsYXNzIGZpZWxkcyB3aXRoIERlZmluZSBpbnN0ZWFkIG9mIFNldC5cIiksR2VuZXJhdGVzX2FfQ1BVX3Byb2ZpbGU6YSg2MjIzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJHZW5lcmF0ZXNfYV9DUFVfcHJvZmlsZV82MjIzXCIsXCJHZW5lcmF0ZXMgYSBDUFUgcHJvZmlsZS5cIiksRGlzYWJsZV9zb2x1dGlvbl9zZWFyY2hpbmdfZm9yX3RoaXNfcHJvamVjdDphKDYyMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpc2FibGVfc29sdXRpb25fc2VhcmNoaW5nX2Zvcl90aGlzX3Byb2plY3RfNjIyNFwiLFwiRGlzYWJsZSBzb2x1dGlvbiBzZWFyY2hpbmcgZm9yIHRoaXMgcHJvamVjdC5cIiksU3BlY2lmeV9zdHJhdGVneV9mb3Jfd2F0Y2hpbmdfZmlsZV9Db2xvbl9GaXhlZFBvbGxpbmdJbnRlcnZhbF9kZWZhdWx0X1ByaW9yaXR5UG9sbGluZ0ludGVydmFsX0R5bmFtaWNQcmlvcml0eVBvbGxpbmdfRml4ZWRDaHVua1NpemVQb2xsaW5nX1VzZUZzRXZlbnRzX1VzZUZzRXZlbnRzT25QYXJlbnREaXJlY3Rvcnk6YSg2MjI1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X3N0cmF0ZWd5X2Zvcl93YXRjaGluZ19maWxlX0NvbG9uX0ZpeGVkUG9sbGluZ0ludGVydmFsX2RlZmF1bHRfUHJpb3JpdHlQb2xsaW5nSW50ZXJ2YWxfRHluYW1pXzYyMjVcIixcIlNwZWNpZnkgc3RyYXRlZ3kgZm9yIHdhdGNoaW5nIGZpbGU6ICdGaXhlZFBvbGxpbmdJbnRlcnZhbCcgKGRlZmF1bHQpLCAnUHJpb3JpdHlQb2xsaW5nSW50ZXJ2YWwnLCAnRHluYW1pY1ByaW9yaXR5UG9sbGluZycsICdGaXhlZENodW5rU2l6ZVBvbGxpbmcnLCAnVXNlRnNFdmVudHMnLCAnVXNlRnNFdmVudHNPblBhcmVudERpcmVjdG9yeScuXCIpLFNwZWNpZnlfc3RyYXRlZ3lfZm9yX3dhdGNoaW5nX2RpcmVjdG9yeV9vbl9wbGF0Zm9ybXNfdGhhdF9kb25fdF9zdXBwb3J0X3JlY3Vyc2l2ZV93YXRjaGluZ19uYXRpdmVseV9Db2xvbl9Vc2VGc0V2ZW50c19kZWZhdWx0X0ZpeGVkUG9sbGluZ0ludGVydmFsX0R5bmFtaWNQcmlvcml0eVBvbGxpbmdfRml4ZWRDaHVua1NpemVQb2xsaW5nOmEoNjIyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV9zdHJhdGVneV9mb3Jfd2F0Y2hpbmdfZGlyZWN0b3J5X29uX3BsYXRmb3Jtc190aGF0X2Rvbl90X3N1cHBvcnRfcmVjdXJzaXZlX3dhdGNoaW5nX25hdGl2ZWx5X182MjI2XCIsXCJTcGVjaWZ5IHN0cmF0ZWd5IGZvciB3YXRjaGluZyBkaXJlY3Rvcnkgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCByZWN1cnNpdmUgd2F0Y2hpbmcgbmF0aXZlbHk6ICdVc2VGc0V2ZW50cycgKGRlZmF1bHQpLCAnRml4ZWRQb2xsaW5nSW50ZXJ2YWwnLCAnRHluYW1pY1ByaW9yaXR5UG9sbGluZycsICdGaXhlZENodW5rU2l6ZVBvbGxpbmcnLlwiKSxTcGVjaWZ5X3N0cmF0ZWd5X2Zvcl9jcmVhdGluZ19hX3BvbGxpbmdfd2F0Y2hfd2hlbl9pdF9mYWlsc190b19jcmVhdGVfdXNpbmdfZmlsZV9zeXN0ZW1fZXZlbnRzX0NvbG9uX0ZpeGVkSW50ZXJ2YWxfZGVmYXVsdF9Qcmlvcml0eUludGVydmFsX0R5bmFtaWNQcmlvcml0eV9GaXhlZENodW5rU2l6ZTphKDYyMjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfc3RyYXRlZ3lfZm9yX2NyZWF0aW5nX2FfcG9sbGluZ193YXRjaF93aGVuX2l0X2ZhaWxzX3RvX2NyZWF0ZV91c2luZ19maWxlX3N5c3RlbV9ldmVudHNfQ29sb25fNjIyN1wiLFwiU3BlY2lmeSBzdHJhdGVneSBmb3IgY3JlYXRpbmcgYSBwb2xsaW5nIHdhdGNoIHdoZW4gaXQgZmFpbHMgdG8gY3JlYXRlIHVzaW5nIGZpbGUgc3lzdGVtIGV2ZW50czogJ0ZpeGVkSW50ZXJ2YWwnIChkZWZhdWx0KSwgJ1ByaW9yaXR5SW50ZXJ2YWwnLCAnRHluYW1pY1ByaW9yaXR5JywgJ0ZpeGVkQ2h1bmtTaXplJy5cIiksVGFnXzBfZXhwZWN0c19hdF9sZWFzdF8xX2FyZ3VtZW50c19idXRfdGhlX0pTWF9mYWN0b3J5XzJfcHJvdmlkZXNfYXRfbW9zdF8zOmEoNjIyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRhZ18wX2V4cGVjdHNfYXRfbGVhc3RfMV9hcmd1bWVudHNfYnV0X3RoZV9KU1hfZmFjdG9yeV8yX3Byb3ZpZGVzX2F0X21vc3RfM182MjI5XCIsXCJUYWcgJ3swfScgZXhwZWN0cyBhdCBsZWFzdCAnezF9JyBhcmd1bWVudHMsIGJ1dCB0aGUgSlNYIGZhY3RvcnkgJ3syfScgcHJvdmlkZXMgYXQgbW9zdCAnezN9Jy5cIiksT3B0aW9uXzBfY2FuX29ubHlfYmVfc3BlY2lmaWVkX2luX3RzY29uZmlnX2pzb25fZmlsZV9vcl9zZXRfdG9fZmFsc2Vfb3JfbnVsbF9vbl9jb21tYW5kX2xpbmU6YSg2MjMwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uXzBfY2FuX29ubHlfYmVfc3BlY2lmaWVkX2luX3RzY29uZmlnX2pzb25fZmlsZV9vcl9zZXRfdG9fZmFsc2Vfb3JfbnVsbF9vbl9jb21tYW5kX2xpbmVfNjIzMFwiLFwiT3B0aW9uICd7MH0nIGNhbiBvbmx5IGJlIHNwZWNpZmllZCBpbiAndHNjb25maWcuanNvbicgZmlsZSBvciBzZXQgdG8gJ2ZhbHNlJyBvciAnbnVsbCcgb24gY29tbWFuZCBsaW5lLlwiKSxDb3VsZF9ub3RfcmVzb2x2ZV90aGVfcGF0aF8wX3dpdGhfdGhlX2V4dGVuc2lvbnNfQ29sb25fMTphKDYyMzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb3VsZF9ub3RfcmVzb2x2ZV90aGVfcGF0aF8wX3dpdGhfdGhlX2V4dGVuc2lvbnNfQ29sb25fMV82MjMxXCIsXCJDb3VsZCBub3QgcmVzb2x2ZSB0aGUgcGF0aCAnezB9JyB3aXRoIHRoZSBleHRlbnNpb25zOiB7MX0uXCIpLERlY2xhcmF0aW9uX2F1Z21lbnRzX2RlY2xhcmF0aW9uX2luX2Fub3RoZXJfZmlsZV9UaGlzX2Nhbm5vdF9iZV9zZXJpYWxpemVkOmEoNjIzMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRlY2xhcmF0aW9uX2F1Z21lbnRzX2RlY2xhcmF0aW9uX2luX2Fub3RoZXJfZmlsZV9UaGlzX2Nhbm5vdF9iZV9zZXJpYWxpemVkXzYyMzJcIixcIkRlY2xhcmF0aW9uIGF1Z21lbnRzIGRlY2xhcmF0aW9uIGluIGFub3RoZXIgZmlsZS4gVGhpcyBjYW5ub3QgYmUgc2VyaWFsaXplZC5cIiksVGhpc19pc190aGVfZGVjbGFyYXRpb25fYmVpbmdfYXVnbWVudGVkX0NvbnNpZGVyX21vdmluZ190aGVfYXVnbWVudGluZ19kZWNsYXJhdGlvbl9pbnRvX3RoZV9zYW1lX2ZpbGU6YSg2MjMzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19pc190aGVfZGVjbGFyYXRpb25fYmVpbmdfYXVnbWVudGVkX0NvbnNpZGVyX21vdmluZ190aGVfYXVnbWVudGluZ19kZWNsYXJhdGlvbl9pbnRvX3RoZV9zYW1lX2ZpbF82MjMzXCIsXCJUaGlzIGlzIHRoZSBkZWNsYXJhdGlvbiBiZWluZyBhdWdtZW50ZWQuIENvbnNpZGVyIG1vdmluZyB0aGUgYXVnbWVudGluZyBkZWNsYXJhdGlvbiBpbnRvIHRoZSBzYW1lIGZpbGUuXCIpLFRoaXNfZXhwcmVzc2lvbl9pc19ub3RfY2FsbGFibGVfYmVjYXVzZV9pdF9pc19hX2dldF9hY2Nlc3Nvcl9EaWRfeW91X21lYW5fdG9fdXNlX2l0X3dpdGhvdXQ6YSg2MjM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhpc19leHByZXNzaW9uX2lzX25vdF9jYWxsYWJsZV9iZWNhdXNlX2l0X2lzX2FfZ2V0X2FjY2Vzc29yX0RpZF95b3VfbWVhbl90b191c2VfaXRfd2l0aG91dF82MjM0XCIsXCJUaGlzIGV4cHJlc3Npb24gaXMgbm90IGNhbGxhYmxlIGJlY2F1c2UgaXQgaXMgYSAnZ2V0JyBhY2Nlc3Nvci4gRGlkIHlvdSBtZWFuIHRvIHVzZSBpdCB3aXRob3V0ICcoKSc/XCIpLERpc2FibGVfbG9hZGluZ19yZWZlcmVuY2VkX3Byb2plY3RzOmEoNjIzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV9sb2FkaW5nX3JlZmVyZW5jZWRfcHJvamVjdHNfNjIzNVwiLFwiRGlzYWJsZSBsb2FkaW5nIHJlZmVyZW5jZWQgcHJvamVjdHMuXCIpLEFyZ3VtZW50c19mb3JfdGhlX3Jlc3RfcGFyYW1ldGVyXzBfd2VyZV9ub3RfcHJvdmlkZWQ6YSg2MjM2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQXJndW1lbnRzX2Zvcl90aGVfcmVzdF9wYXJhbWV0ZXJfMF93ZXJlX25vdF9wcm92aWRlZF82MjM2XCIsXCJBcmd1bWVudHMgZm9yIHRoZSByZXN0IHBhcmFtZXRlciAnezB9JyB3ZXJlIG5vdCBwcm92aWRlZC5cIiksR2VuZXJhdGVzX2FuX2V2ZW50X3RyYWNlX2FuZF9hX2xpc3Rfb2ZfdHlwZXM6YSg2MjM3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJHZW5lcmF0ZXNfYW5fZXZlbnRfdHJhY2VfYW5kX2FfbGlzdF9vZl90eXBlc182MjM3XCIsXCJHZW5lcmF0ZXMgYW4gZXZlbnQgdHJhY2UgYW5kIGEgbGlzdCBvZiB0eXBlcy5cIiksU3BlY2lmeV90aGVfbW9kdWxlX3NwZWNpZmllcl90b19iZV91c2VkX3RvX2ltcG9ydF90aGVfanN4X2FuZF9qc3hzX2ZhY3RvcnlfZnVuY3Rpb25zX2Zyb21fZWdfcmVhY3Q6YSg2MjM4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiU3BlY2lmeV90aGVfbW9kdWxlX3NwZWNpZmllcl90b19iZV91c2VkX3RvX2ltcG9ydF90aGVfanN4X2FuZF9qc3hzX2ZhY3RvcnlfZnVuY3Rpb25zX2Zyb21fZWdfcmVhY3RfNjIzOFwiLFwiU3BlY2lmeSB0aGUgbW9kdWxlIHNwZWNpZmllciB0byBiZSB1c2VkIHRvIGltcG9ydCB0aGUgJ2pzeCcgYW5kICdqc3hzJyBmYWN0b3J5IGZ1bmN0aW9ucyBmcm9tLiBlZywgcmVhY3RcIiksRmlsZV8wX2V4aXN0c19hY2NvcmRpbmdfdG9fZWFybGllcl9jYWNoZWRfbG9va3VwczphKDYyMzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfMF9leGlzdHNfYWNjb3JkaW5nX3RvX2VhcmxpZXJfY2FjaGVkX2xvb2t1cHNfNjIzOVwiLFwiRmlsZSAnezB9JyBleGlzdHMgYWNjb3JkaW5nIHRvIGVhcmxpZXIgY2FjaGVkIGxvb2t1cHMuXCIpLEZpbGVfMF9kb2VzX25vdF9leGlzdF9hY2NvcmRpbmdfdG9fZWFybGllcl9jYWNoZWRfbG9va3VwczphKDYyNDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbGVfMF9kb2VzX25vdF9leGlzdF9hY2NvcmRpbmdfdG9fZWFybGllcl9jYWNoZWRfbG9va3Vwc182MjQwXCIsXCJGaWxlICd7MH0nIGRvZXMgbm90IGV4aXN0IGFjY29yZGluZyB0byBlYXJsaWVyIGNhY2hlZCBsb29rdXBzLlwiKSxSZXNvbHV0aW9uX2Zvcl90eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF93YXNfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8xOmEoNjI0MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVzb2x1dGlvbl9mb3JfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfd2FzX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMV82MjQxXCIsXCJSZXNvbHV0aW9uIGZvciB0eXBlIHJlZmVyZW5jZSBkaXJlY3RpdmUgJ3swfScgd2FzIGZvdW5kIGluIGNhY2hlIGZyb20gbG9jYXRpb24gJ3sxfScuXCIpLFJlc29sdmluZ190eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9jb250YWluaW5nX2ZpbGVfMTphKDYyNDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlc29sdmluZ190eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9jb250YWluaW5nX2ZpbGVfMV82MjQyXCIsXCI9PT09PT09PSBSZXNvbHZpbmcgdHlwZSByZWZlcmVuY2UgZGlyZWN0aXZlICd7MH0nLCBjb250YWluaW5nIGZpbGUgJ3sxfScuID09PT09PT09XCIpLEludGVycHJldF9vcHRpb25hbF9wcm9wZXJ0eV90eXBlc19hc193cml0dGVuX3JhdGhlcl90aGFuX2FkZGluZ191bmRlZmluZWQ6YSg2MjQzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbnRlcnByZXRfb3B0aW9uYWxfcHJvcGVydHlfdHlwZXNfYXNfd3JpdHRlbl9yYXRoZXJfdGhhbl9hZGRpbmdfdW5kZWZpbmVkXzYyNDNcIixcIkludGVycHJldCBvcHRpb25hbCBwcm9wZXJ0eSB0eXBlcyBhcyB3cml0dGVuLCByYXRoZXIgdGhhbiBhZGRpbmcgJ3VuZGVmaW5lZCcuXCIpLE1vZHVsZXM6YSg2MjQ0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJNb2R1bGVzXzYyNDRcIixcIk1vZHVsZXNcIiksRmlsZV9NYW5hZ2VtZW50OmEoNjI0NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRmlsZV9NYW5hZ2VtZW50XzYyNDVcIixcIkZpbGUgTWFuYWdlbWVudFwiKSxFbWl0OmEoNjI0NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW1pdF82MjQ2XCIsXCJFbWl0XCIpLEphdmFTY3JpcHRfU3VwcG9ydDphKDYyNDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkphdmFTY3JpcHRfU3VwcG9ydF82MjQ3XCIsXCJKYXZhU2NyaXB0IFN1cHBvcnRcIiksVHlwZV9DaGVja2luZzphKDYyNDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlR5cGVfQ2hlY2tpbmdfNjI0OFwiLFwiVHlwZSBDaGVja2luZ1wiKSxFZGl0b3JfU3VwcG9ydDphKDYyNDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVkaXRvcl9TdXBwb3J0XzYyNDlcIixcIkVkaXRvciBTdXBwb3J0XCIpLFdhdGNoX2FuZF9CdWlsZF9Nb2RlczphKDYyNTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIldhdGNoX2FuZF9CdWlsZF9Nb2Rlc182MjUwXCIsXCJXYXRjaCBhbmQgQnVpbGQgTW9kZXNcIiksQ29tcGlsZXJfRGlhZ25vc3RpY3M6YSg2MjUxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb21waWxlcl9EaWFnbm9zdGljc182MjUxXCIsXCJDb21waWxlciBEaWFnbm9zdGljc1wiKSxJbnRlcm9wX0NvbnN0cmFpbnRzOmEoNjI1MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW50ZXJvcF9Db25zdHJhaW50c182MjUyXCIsXCJJbnRlcm9wIENvbnN0cmFpbnRzXCIpLEJhY2t3YXJkc19Db21wYXRpYmlsaXR5OmEoNjI1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQmFja3dhcmRzX0NvbXBhdGliaWxpdHlfNjI1M1wiLFwiQmFja3dhcmRzIENvbXBhdGliaWxpdHlcIiksTGFuZ3VhZ2VfYW5kX0Vudmlyb25tZW50OmEoNjI1NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTGFuZ3VhZ2VfYW5kX0Vudmlyb25tZW50XzYyNTRcIixcIkxhbmd1YWdlIGFuZCBFbnZpcm9ubWVudFwiKSxQcm9qZWN0czphKDYyNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByb2plY3RzXzYyNTVcIixcIlByb2plY3RzXCIpLE91dHB1dF9Gb3JtYXR0aW5nOmEoNjI1NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiT3V0cHV0X0Zvcm1hdHRpbmdfNjI1NlwiLFwiT3V0cHV0IEZvcm1hdHRpbmdcIiksQ29tcGxldGVuZXNzOmEoNjI1NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29tcGxldGVuZXNzXzYyNTdcIixcIkNvbXBsZXRlbmVzc1wiKSxfMF9zaG91bGRfYmVfc2V0X2luc2lkZV90aGVfY29tcGlsZXJPcHRpb25zX29iamVjdF9vZl90aGVfY29uZmlnX2pzb25fZmlsZTphKDYyNTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9zaG91bGRfYmVfc2V0X2luc2lkZV90aGVfY29tcGlsZXJPcHRpb25zX29iamVjdF9vZl90aGVfY29uZmlnX2pzb25fZmlsZV82MjU4XCIsXCInezB9JyBzaG91bGQgYmUgc2V0IGluc2lkZSB0aGUgJ2NvbXBpbGVyT3B0aW9ucycgb2JqZWN0IG9mIHRoZSBjb25maWcganNvbiBmaWxlXCIpLEZvdW5kXzFfZXJyb3JfaW5fMTphKDYyNTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZvdW5kXzFfZXJyb3JfaW5fMV82MjU5XCIsXCJGb3VuZCAxIGVycm9yIGluIHsxfVwiKSxGb3VuZF8wX2Vycm9yc19pbl90aGVfc2FtZV9maWxlX3N0YXJ0aW5nX2F0X0NvbG9uXzE6YSg2MjYwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGb3VuZF8wX2Vycm9yc19pbl90aGVfc2FtZV9maWxlX3N0YXJ0aW5nX2F0X0NvbG9uXzFfNjI2MFwiLFwiRm91bmQgezB9IGVycm9ycyBpbiB0aGUgc2FtZSBmaWxlLCBzdGFydGluZyBhdDogezF9XCIpLEZvdW5kXzBfZXJyb3JzX2luXzFfZmlsZXM6YSg2MjYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGb3VuZF8wX2Vycm9yc19pbl8xX2ZpbGVzXzYyNjFcIixcIkZvdW5kIHswfSBlcnJvcnMgaW4gezF9IGZpbGVzLlwiKSxEaXJlY3RvcnlfMF9oYXNfbm9fY29udGFpbmluZ19wYWNrYWdlX2pzb25fc2NvcGVfSW1wb3J0c193aWxsX25vdF9yZXNvbHZlOmEoNjI3MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlyZWN0b3J5XzBfaGFzX25vX2NvbnRhaW5pbmdfcGFja2FnZV9qc29uX3Njb3BlX0ltcG9ydHNfd2lsbF9ub3RfcmVzb2x2ZV82MjcwXCIsXCJEaXJlY3RvcnkgJ3swfScgaGFzIG5vIGNvbnRhaW5pbmcgcGFja2FnZS5qc29uIHNjb3BlLiBJbXBvcnRzIHdpbGwgbm90IHJlc29sdmUuXCIpLEltcG9ydF9zcGVjaWZpZXJfMF9kb2VzX25vdF9leGlzdF9pbl9wYWNrYWdlX2pzb25fc2NvcGVfYXRfcGF0aF8xOmEoNjI3MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wb3J0X3NwZWNpZmllcl8wX2RvZXNfbm90X2V4aXN0X2luX3BhY2thZ2VfanNvbl9zY29wZV9hdF9wYXRoXzFfNjI3MVwiLFwiSW1wb3J0IHNwZWNpZmllciAnezB9JyBkb2VzIG5vdCBleGlzdCBpbiBwYWNrYWdlLmpzb24gc2NvcGUgYXQgcGF0aCAnezF9Jy5cIiksSW52YWxpZF9pbXBvcnRfc3BlY2lmaWVyXzBfaGFzX25vX3Bvc3NpYmxlX3Jlc29sdXRpb25zOmEoNjI3MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW52YWxpZF9pbXBvcnRfc3BlY2lmaWVyXzBfaGFzX25vX3Bvc3NpYmxlX3Jlc29sdXRpb25zXzYyNzJcIixcIkludmFsaWQgaW1wb3J0IHNwZWNpZmllciAnezB9JyBoYXMgbm8gcG9zc2libGUgcmVzb2x1dGlvbnMuXCIpLHBhY2thZ2VfanNvbl9zY29wZV8wX2hhc19ub19pbXBvcnRzX2RlZmluZWQ6YSg2MjczLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJwYWNrYWdlX2pzb25fc2NvcGVfMF9oYXNfbm9faW1wb3J0c19kZWZpbmVkXzYyNzNcIixcInBhY2thZ2UuanNvbiBzY29wZSAnezB9JyBoYXMgbm8gaW1wb3J0cyBkZWZpbmVkLlwiKSxwYWNrYWdlX2pzb25fc2NvcGVfMF9leHBsaWNpdGx5X21hcHNfc3BlY2lmaWVyXzFfdG9fbnVsbDphKDYyNzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcInBhY2thZ2VfanNvbl9zY29wZV8wX2V4cGxpY2l0bHlfbWFwc19zcGVjaWZpZXJfMV90b19udWxsXzYyNzRcIixcInBhY2thZ2UuanNvbiBzY29wZSAnezB9JyBleHBsaWNpdGx5IG1hcHMgc3BlY2lmaWVyICd7MX0nIHRvIG51bGwuXCIpLHBhY2thZ2VfanNvbl9zY29wZV8wX2hhc19pbnZhbGlkX3R5cGVfZm9yX3RhcmdldF9vZl9zcGVjaWZpZXJfMTphKDYyNzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcInBhY2thZ2VfanNvbl9zY29wZV8wX2hhc19pbnZhbGlkX3R5cGVfZm9yX3RhcmdldF9vZl9zcGVjaWZpZXJfMV82Mjc1XCIsXCJwYWNrYWdlLmpzb24gc2NvcGUgJ3swfScgaGFzIGludmFsaWQgdHlwZSBmb3IgdGFyZ2V0IG9mIHNwZWNpZmllciAnezF9J1wiKSxFeHBvcnRfc3BlY2lmaWVyXzBfZG9lc19ub3RfZXhpc3RfaW5fcGFja2FnZV9qc29uX3Njb3BlX2F0X3BhdGhfMTphKDYyNzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkV4cG9ydF9zcGVjaWZpZXJfMF9kb2VzX25vdF9leGlzdF9pbl9wYWNrYWdlX2pzb25fc2NvcGVfYXRfcGF0aF8xXzYyNzZcIixcIkV4cG9ydCBzcGVjaWZpZXIgJ3swfScgZG9lcyBub3QgZXhpc3QgaW4gcGFja2FnZS5qc29uIHNjb3BlIGF0IHBhdGggJ3sxfScuXCIpLEVuYWJsZV9wcm9qZWN0X2NvbXBpbGF0aW9uOmEoNjMwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlX3Byb2plY3RfY29tcGlsYXRpb25fNjMwMlwiLFwiRW5hYmxlIHByb2plY3QgY29tcGlsYXRpb25cIiksQ29tcG9zaXRlX3Byb2plY3RzX21heV9ub3RfZGlzYWJsZV9kZWNsYXJhdGlvbl9lbWl0OmEoNjMwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbXBvc2l0ZV9wcm9qZWN0c19tYXlfbm90X2Rpc2FibGVfZGVjbGFyYXRpb25fZW1pdF82MzA0XCIsXCJDb21wb3NpdGUgcHJvamVjdHMgbWF5IG5vdCBkaXNhYmxlIGRlY2xhcmF0aW9uIGVtaXQuXCIpLE91dHB1dF9maWxlXzBfaGFzX25vdF9iZWVuX2J1aWx0X2Zyb21fc291cmNlX2ZpbGVfMTphKDYzMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPdXRwdXRfZmlsZV8wX2hhc19ub3RfYmVlbl9idWlsdF9mcm9tX3NvdXJjZV9maWxlXzFfNjMwNVwiLFwiT3V0cHV0IGZpbGUgJ3swfScgaGFzIG5vdCBiZWVuIGJ1aWx0IGZyb20gc291cmNlIGZpbGUgJ3sxfScuXCIpLFJlZmVyZW5jZWRfcHJvamVjdF8wX211c3RfaGF2ZV9zZXR0aW5nX2NvbXBvc2l0ZV9Db2xvbl90cnVlOmEoNjMwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlJlZmVyZW5jZWRfcHJvamVjdF8wX211c3RfaGF2ZV9zZXR0aW5nX2NvbXBvc2l0ZV9Db2xvbl90cnVlXzYzMDZcIixgUmVmZXJlbmNlZCBwcm9qZWN0ICd7MH0nIG11c3QgaGF2ZSBzZXR0aW5nIFwiY29tcG9zaXRlXCI6IHRydWUuYCksRmlsZV8wX2lzX25vdF9saXN0ZWRfd2l0aGluX3RoZV9maWxlX2xpc3Rfb2ZfcHJvamVjdF8xX1Byb2plY3RzX211c3RfbGlzdF9hbGxfZmlsZXNfb3JfdXNlX2FuX2luY2x1ZGVfcGF0dGVybjphKDYzMDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGaWxlXzBfaXNfbm90X2xpc3RlZF93aXRoaW5fdGhlX2ZpbGVfbGlzdF9vZl9wcm9qZWN0XzFfUHJvamVjdHNfbXVzdF9saXN0X2FsbF9maWxlc19vcl91c2VfYW5faW5jbHVkXzYzMDdcIixcIkZpbGUgJ3swfScgaXMgbm90IGxpc3RlZCB3aXRoaW4gdGhlIGZpbGUgbGlzdCBvZiBwcm9qZWN0ICd7MX0nLiBQcm9qZWN0cyBtdXN0IGxpc3QgYWxsIGZpbGVzIG9yIHVzZSBhbiAnaW5jbHVkZScgcGF0dGVybi5cIiksQ2Fubm90X3ByZXBlbmRfcHJvamVjdF8wX2JlY2F1c2VfaXRfZG9lc19ub3RfaGF2ZV9vdXRGaWxlX3NldDphKDYzMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDYW5ub3RfcHJlcGVuZF9wcm9qZWN0XzBfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX291dEZpbGVfc2V0XzYzMDhcIixcIkNhbm5vdCBwcmVwZW5kIHByb2plY3QgJ3swfScgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlICdvdXRGaWxlJyBzZXRcIiksT3V0cHV0X2ZpbGVfMF9mcm9tX3Byb2plY3RfMV9kb2VzX25vdF9leGlzdDphKDYzMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPdXRwdXRfZmlsZV8wX2Zyb21fcHJvamVjdF8xX2RvZXNfbm90X2V4aXN0XzYzMDlcIixcIk91dHB1dCBmaWxlICd7MH0nIGZyb20gcHJvamVjdCAnezF9JyBkb2VzIG5vdCBleGlzdFwiKSxSZWZlcmVuY2VkX3Byb2plY3RfMF9tYXlfbm90X2Rpc2FibGVfZW1pdDphKDYzMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZWZlcmVuY2VkX3Byb2plY3RfMF9tYXlfbm90X2Rpc2FibGVfZW1pdF82MzEwXCIsXCJSZWZlcmVuY2VkIHByb2plY3QgJ3swfScgbWF5IG5vdCBkaXNhYmxlIGVtaXQuXCIpLFByb2plY3RfMF9pc19vdXRfb2ZfZGF0ZV9iZWNhdXNlX29sZGVzdF9vdXRwdXRfMV9pc19vbGRlcl90aGFuX25ld2VzdF9pbnB1dF8yOmEoNjM1MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJvamVjdF8wX2lzX291dF9vZl9kYXRlX2JlY2F1c2Vfb2xkZXN0X291dHB1dF8xX2lzX29sZGVyX3RoYW5fbmV3ZXN0X2lucHV0XzJfNjM1MFwiLFwiUHJvamVjdCAnezB9JyBpcyBvdXQgb2YgZGF0ZSBiZWNhdXNlIG9sZGVzdCBvdXRwdXQgJ3sxfScgaXMgb2xkZXIgdGhhbiBuZXdlc3QgaW5wdXQgJ3syfSdcIiksUHJvamVjdF8wX2lzX3VwX3RvX2RhdGVfYmVjYXVzZV9uZXdlc3RfaW5wdXRfMV9pc19vbGRlcl90aGFuX29sZGVzdF9vdXRwdXRfMjphKDYzNTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByb2plY3RfMF9pc191cF90b19kYXRlX2JlY2F1c2VfbmV3ZXN0X2lucHV0XzFfaXNfb2xkZXJfdGhhbl9vbGRlc3Rfb3V0cHV0XzJfNjM1MVwiLFwiUHJvamVjdCAnezB9JyBpcyB1cCB0byBkYXRlIGJlY2F1c2UgbmV3ZXN0IGlucHV0ICd7MX0nIGlzIG9sZGVyIHRoYW4gb2xkZXN0IG91dHB1dCAnezJ9J1wiKSxQcm9qZWN0XzBfaXNfb3V0X29mX2RhdGVfYmVjYXVzZV9vdXRwdXRfZmlsZV8xX2RvZXNfbm90X2V4aXN0OmEoNjM1MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJvamVjdF8wX2lzX291dF9vZl9kYXRlX2JlY2F1c2Vfb3V0cHV0X2ZpbGVfMV9kb2VzX25vdF9leGlzdF82MzUyXCIsXCJQcm9qZWN0ICd7MH0nIGlzIG91dCBvZiBkYXRlIGJlY2F1c2Ugb3V0cHV0IGZpbGUgJ3sxfScgZG9lcyBub3QgZXhpc3RcIiksUHJvamVjdF8wX2lzX291dF9vZl9kYXRlX2JlY2F1c2VfaXRzX2RlcGVuZGVuY3lfMV9pc19vdXRfb2ZfZGF0ZTphKDYzNTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByb2plY3RfMF9pc19vdXRfb2ZfZGF0ZV9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfaXNfb3V0X29mX2RhdGVfNjM1M1wiLFwiUHJvamVjdCAnezB9JyBpcyBvdXQgb2YgZGF0ZSBiZWNhdXNlIGl0cyBkZXBlbmRlbmN5ICd7MX0nIGlzIG91dCBvZiBkYXRlXCIpLFByb2plY3RfMF9pc191cF90b19kYXRlX3dpdGhfZF90c19maWxlc19mcm9tX2l0c19kZXBlbmRlbmNpZXM6YSg2MzU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQcm9qZWN0XzBfaXNfdXBfdG9fZGF0ZV93aXRoX2RfdHNfZmlsZXNfZnJvbV9pdHNfZGVwZW5kZW5jaWVzXzYzNTRcIixcIlByb2plY3QgJ3swfScgaXMgdXAgdG8gZGF0ZSB3aXRoIC5kLnRzIGZpbGVzIGZyb20gaXRzIGRlcGVuZGVuY2llc1wiKSxQcm9qZWN0c19pbl90aGlzX2J1aWxkX0NvbG9uXzA6YSg2MzU1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQcm9qZWN0c19pbl90aGlzX2J1aWxkX0NvbG9uXzBfNjM1NVwiLFwiUHJvamVjdHMgaW4gdGhpcyBidWlsZDogezB9XCIpLEFfbm9uX2RyeV9idWlsZF93b3VsZF9kZWxldGVfdGhlX2ZvbGxvd2luZ19maWxlc19Db2xvbl8wOmEoNjM1NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQV9ub25fZHJ5X2J1aWxkX3dvdWxkX2RlbGV0ZV90aGVfZm9sbG93aW5nX2ZpbGVzX0NvbG9uXzBfNjM1NlwiLFwiQSBub24tZHJ5IGJ1aWxkIHdvdWxkIGRlbGV0ZSB0aGUgZm9sbG93aW5nIGZpbGVzOiB7MH1cIiksQV9ub25fZHJ5X2J1aWxkX3dvdWxkX2J1aWxkX3Byb2plY3RfMDphKDYzNTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFfbm9uX2RyeV9idWlsZF93b3VsZF9idWlsZF9wcm9qZWN0XzBfNjM1N1wiLFwiQSBub24tZHJ5IGJ1aWxkIHdvdWxkIGJ1aWxkIHByb2plY3QgJ3swfSdcIiksQnVpbGRpbmdfcHJvamVjdF8wOmEoNjM1OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQnVpbGRpbmdfcHJvamVjdF8wXzYzNThcIixcIkJ1aWxkaW5nIHByb2plY3QgJ3swfScuLi5cIiksVXBkYXRpbmdfb3V0cHV0X3RpbWVzdGFtcHNfb2ZfcHJvamVjdF8wOmEoNjM1OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVXBkYXRpbmdfb3V0cHV0X3RpbWVzdGFtcHNfb2ZfcHJvamVjdF8wXzYzNTlcIixcIlVwZGF0aW5nIG91dHB1dCB0aW1lc3RhbXBzIG9mIHByb2plY3QgJ3swfScuLi5cIiksUHJvamVjdF8wX2lzX3VwX3RvX2RhdGU6YSg2MzYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQcm9qZWN0XzBfaXNfdXBfdG9fZGF0ZV82MzYxXCIsXCJQcm9qZWN0ICd7MH0nIGlzIHVwIHRvIGRhdGVcIiksU2tpcHBpbmdfYnVpbGRfb2ZfcHJvamVjdF8wX2JlY2F1c2VfaXRzX2RlcGVuZGVuY3lfMV9oYXNfZXJyb3JzOmEoNjM2MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU2tpcHBpbmdfYnVpbGRfb2ZfcHJvamVjdF8wX2JlY2F1c2VfaXRzX2RlcGVuZGVuY3lfMV9oYXNfZXJyb3JzXzYzNjJcIixcIlNraXBwaW5nIGJ1aWxkIG9mIHByb2plY3QgJ3swfScgYmVjYXVzZSBpdHMgZGVwZW5kZW5jeSAnezF9JyBoYXMgZXJyb3JzXCIpLFByb2plY3RfMF9jYW5fdF9iZV9idWlsdF9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfaGFzX2Vycm9yczphKDYzNjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByb2plY3RfMF9jYW5fdF9iZV9idWlsdF9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfaGFzX2Vycm9yc182MzYzXCIsXCJQcm9qZWN0ICd7MH0nIGNhbid0IGJlIGJ1aWx0IGJlY2F1c2UgaXRzIGRlcGVuZGVuY3kgJ3sxfScgaGFzIGVycm9yc1wiKSxCdWlsZF9vbmVfb3JfbW9yZV9wcm9qZWN0c19hbmRfdGhlaXJfZGVwZW5kZW5jaWVzX2lmX291dF9vZl9kYXRlOmEoNjM2NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQnVpbGRfb25lX29yX21vcmVfcHJvamVjdHNfYW5kX3RoZWlyX2RlcGVuZGVuY2llc19pZl9vdXRfb2ZfZGF0ZV82MzY0XCIsXCJCdWlsZCBvbmUgb3IgbW9yZSBwcm9qZWN0cyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLCBpZiBvdXQgb2YgZGF0ZVwiKSxEZWxldGVfdGhlX291dHB1dHNfb2ZfYWxsX3Byb2plY3RzOmEoNjM2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGVsZXRlX3RoZV9vdXRwdXRzX29mX2FsbF9wcm9qZWN0c182MzY1XCIsXCJEZWxldGUgdGhlIG91dHB1dHMgb2YgYWxsIHByb2plY3RzLlwiKSxTaG93X3doYXRfd291bGRfYmVfYnVpbHRfb3JfZGVsZXRlZF9pZl9zcGVjaWZpZWRfd2l0aF9jbGVhbjphKDYzNjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNob3dfd2hhdF93b3VsZF9iZV9idWlsdF9vcl9kZWxldGVkX2lmX3NwZWNpZmllZF93aXRoX2NsZWFuXzYzNjdcIixcIlNob3cgd2hhdCB3b3VsZCBiZSBidWlsdCAob3IgZGVsZXRlZCwgaWYgc3BlY2lmaWVkIHdpdGggJy0tY2xlYW4nKVwiKSxPcHRpb25fYnVpbGRfbXVzdF9iZV90aGVfZmlyc3RfY29tbWFuZF9saW5lX2FyZ3VtZW50OmEoNjM2OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk9wdGlvbl9idWlsZF9tdXN0X2JlX3RoZV9maXJzdF9jb21tYW5kX2xpbmVfYXJndW1lbnRfNjM2OVwiLFwiT3B0aW9uICctLWJ1aWxkJyBtdXN0IGJlIHRoZSBmaXJzdCBjb21tYW5kIGxpbmUgYXJndW1lbnQuXCIpLE9wdGlvbnNfMF9hbmRfMV9jYW5ub3RfYmVfY29tYmluZWQ6YSg2MzcwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT3B0aW9uc18wX2FuZF8xX2Nhbm5vdF9iZV9jb21iaW5lZF82MzcwXCIsXCJPcHRpb25zICd7MH0nIGFuZCAnezF9JyBjYW5ub3QgYmUgY29tYmluZWQuXCIpLFVwZGF0aW5nX3VuY2hhbmdlZF9vdXRwdXRfdGltZXN0YW1wc19vZl9wcm9qZWN0XzA6YSg2MzcxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJVcGRhdGluZ191bmNoYW5nZWRfb3V0cHV0X3RpbWVzdGFtcHNfb2ZfcHJvamVjdF8wXzYzNzFcIixcIlVwZGF0aW5nIHVuY2hhbmdlZCBvdXRwdXQgdGltZXN0YW1wcyBvZiBwcm9qZWN0ICd7MH0nLi4uXCIpLFByb2plY3RfMF9pc19vdXRfb2ZfZGF0ZV9iZWNhdXNlX291dHB1dF9vZl9pdHNfZGVwZW5kZW5jeV8xX2hhc19jaGFuZ2VkOmEoNjM3MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJvamVjdF8wX2lzX291dF9vZl9kYXRlX2JlY2F1c2Vfb3V0cHV0X29mX2l0c19kZXBlbmRlbmN5XzFfaGFzX2NoYW5nZWRfNjM3MlwiLFwiUHJvamVjdCAnezB9JyBpcyBvdXQgb2YgZGF0ZSBiZWNhdXNlIG91dHB1dCBvZiBpdHMgZGVwZW5kZW5jeSAnezF9JyBoYXMgY2hhbmdlZFwiKSxVcGRhdGluZ19vdXRwdXRfb2ZfcHJvamVjdF8wOmEoNjM3MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVXBkYXRpbmdfb3V0cHV0X29mX3Byb2plY3RfMF82MzczXCIsXCJVcGRhdGluZyBvdXRwdXQgb2YgcHJvamVjdCAnezB9Jy4uLlwiKSxBX25vbl9kcnlfYnVpbGRfd291bGRfdXBkYXRlX3RpbWVzdGFtcHNfZm9yX291dHB1dF9vZl9wcm9qZWN0XzA6YSg2Mzc0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBX25vbl9kcnlfYnVpbGRfd291bGRfdXBkYXRlX3RpbWVzdGFtcHNfZm9yX291dHB1dF9vZl9wcm9qZWN0XzBfNjM3NFwiLFwiQSBub24tZHJ5IGJ1aWxkIHdvdWxkIHVwZGF0ZSB0aW1lc3RhbXBzIGZvciBvdXRwdXQgb2YgcHJvamVjdCAnezB9J1wiKSxBX25vbl9kcnlfYnVpbGRfd291bGRfdXBkYXRlX291dHB1dF9vZl9wcm9qZWN0XzA6YSg2Mzc1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBX25vbl9kcnlfYnVpbGRfd291bGRfdXBkYXRlX291dHB1dF9vZl9wcm9qZWN0XzBfNjM3NVwiLFwiQSBub24tZHJ5IGJ1aWxkIHdvdWxkIHVwZGF0ZSBvdXRwdXQgb2YgcHJvamVjdCAnezB9J1wiKSxDYW5ub3RfdXBkYXRlX291dHB1dF9vZl9wcm9qZWN0XzBfYmVjYXVzZV90aGVyZV93YXNfZXJyb3JfcmVhZGluZ19maWxlXzE6YSg2Mzc2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDYW5ub3RfdXBkYXRlX291dHB1dF9vZl9wcm9qZWN0XzBfYmVjYXVzZV90aGVyZV93YXNfZXJyb3JfcmVhZGluZ19maWxlXzFfNjM3NlwiLFwiQ2Fubm90IHVwZGF0ZSBvdXRwdXQgb2YgcHJvamVjdCAnezB9JyBiZWNhdXNlIHRoZXJlIHdhcyBlcnJvciByZWFkaW5nIGZpbGUgJ3sxfSdcIiksQ2Fubm90X3dyaXRlX2ZpbGVfMF9iZWNhdXNlX2l0X3dpbGxfb3ZlcndyaXRlX3RzYnVpbGRpbmZvX2ZpbGVfZ2VuZXJhdGVkX2J5X3JlZmVyZW5jZWRfcHJvamVjdF8xOmEoNjM3NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNhbm5vdF93cml0ZV9maWxlXzBfYmVjYXVzZV9pdF93aWxsX292ZXJ3cml0ZV90c2J1aWxkaW5mb19maWxlX2dlbmVyYXRlZF9ieV9yZWZlcmVuY2VkX3Byb2plY3RfMV82Mzc3XCIsXCJDYW5ub3Qgd3JpdGUgZmlsZSAnezB9JyBiZWNhdXNlIGl0IHdpbGwgb3ZlcndyaXRlICcudHNidWlsZGluZm8nIGZpbGUgZ2VuZXJhdGVkIGJ5IHJlZmVyZW5jZWQgcHJvamVjdCAnezF9J1wiKSxDb21wb3NpdGVfcHJvamVjdHNfbWF5X25vdF9kaXNhYmxlX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uOmEoNjM3OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbXBvc2l0ZV9wcm9qZWN0c19tYXlfbm90X2Rpc2FibGVfaW5jcmVtZW50YWxfY29tcGlsYXRpb25fNjM3OVwiLFwiQ29tcG9zaXRlIHByb2plY3RzIG1heSBub3QgZGlzYWJsZSBpbmNyZW1lbnRhbCBjb21waWxhdGlvbi5cIiksU3BlY2lmeV9maWxlX3RvX3N0b3JlX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uX2luZm9ybWF0aW9uOmEoNjM4MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV9maWxlX3RvX3N0b3JlX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uX2luZm9ybWF0aW9uXzYzODBcIixcIlNwZWNpZnkgZmlsZSB0byBzdG9yZSBpbmNyZW1lbnRhbCBjb21waWxhdGlvbiBpbmZvcm1hdGlvblwiKSxQcm9qZWN0XzBfaXNfb3V0X29mX2RhdGVfYmVjYXVzZV9vdXRwdXRfZm9yX2l0X3dhc19nZW5lcmF0ZWRfd2l0aF92ZXJzaW9uXzFfdGhhdF9kaWZmZXJzX3dpdGhfY3VycmVudF92ZXJzaW9uXzI6YSg2MzgxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQcm9qZWN0XzBfaXNfb3V0X29mX2RhdGVfYmVjYXVzZV9vdXRwdXRfZm9yX2l0X3dhc19nZW5lcmF0ZWRfd2l0aF92ZXJzaW9uXzFfdGhhdF9kaWZmZXJzX3dpdGhfY3VycmVuXzYzODFcIixcIlByb2plY3QgJ3swfScgaXMgb3V0IG9mIGRhdGUgYmVjYXVzZSBvdXRwdXQgZm9yIGl0IHdhcyBnZW5lcmF0ZWQgd2l0aCB2ZXJzaW9uICd7MX0nIHRoYXQgZGlmZmVycyB3aXRoIGN1cnJlbnQgdmVyc2lvbiAnezJ9J1wiKSxTa2lwcGluZ19idWlsZF9vZl9wcm9qZWN0XzBfYmVjYXVzZV9pdHNfZGVwZW5kZW5jeV8xX3dhc19ub3RfYnVpbHQ6YSg2MzgyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTa2lwcGluZ19idWlsZF9vZl9wcm9qZWN0XzBfYmVjYXVzZV9pdHNfZGVwZW5kZW5jeV8xX3dhc19ub3RfYnVpbHRfNjM4MlwiLFwiU2tpcHBpbmcgYnVpbGQgb2YgcHJvamVjdCAnezB9JyBiZWNhdXNlIGl0cyBkZXBlbmRlbmN5ICd7MX0nIHdhcyBub3QgYnVpbHRcIiksUHJvamVjdF8wX2Nhbl90X2JlX2J1aWx0X2JlY2F1c2VfaXRzX2RlcGVuZGVuY3lfMV93YXNfbm90X2J1aWx0OmEoNjM4MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJvamVjdF8wX2Nhbl90X2JlX2J1aWx0X2JlY2F1c2VfaXRzX2RlcGVuZGVuY3lfMV93YXNfbm90X2J1aWx0XzYzODNcIixcIlByb2plY3QgJ3swfScgY2FuJ3QgYmUgYnVpbHQgYmVjYXVzZSBpdHMgZGVwZW5kZW5jeSAnezF9JyB3YXMgbm90IGJ1aWx0XCIpLEhhdmVfcmVjb21waWxlc19pbl9pbmNyZW1lbnRhbF9hbmRfd2F0Y2hfYXNzdW1lX3RoYXRfY2hhbmdlc193aXRoaW5fYV9maWxlX3dpbGxfb25seV9hZmZlY3RfZmlsZXNfZGlyZWN0bHlfZGVwZW5kaW5nX29uX2l0OmEoNjM4NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSGF2ZV9yZWNvbXBpbGVzX2luX2luY3JlbWVudGFsX2FuZF93YXRjaF9hc3N1bWVfdGhhdF9jaGFuZ2VzX3dpdGhpbl9hX2ZpbGVfd2lsbF9vbmx5X2FmZmVjdF9maWxlc19kaV82Mzg0XCIsXCJIYXZlIHJlY29tcGlsZXMgaW4gJy0taW5jcmVtZW50YWwnIGFuZCAnLS13YXRjaCcgYXNzdW1lIHRoYXQgY2hhbmdlcyB3aXRoaW4gYSBmaWxlIHdpbGwgb25seSBhZmZlY3QgZmlsZXMgZGlyZWN0bHkgZGVwZW5kaW5nIG9uIGl0LlwiKSxfMF9pc19kZXByZWNhdGVkOmEoNjM4NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9uLFwiXzBfaXNfZGVwcmVjYXRlZF82Mzg1XCIsXCInezB9JyBpcyBkZXByZWNhdGVkLlwiLHZvaWQgMCx2b2lkIDAsITApLFBlcmZvcm1hbmNlX3RpbWluZ3NfZm9yX2RpYWdub3N0aWNzX29yX2V4dGVuZGVkRGlhZ25vc3RpY3NfYXJlX25vdF9hdmFpbGFibGVfaW5fdGhpc19zZXNzaW9uX0FfbmF0aXZlX2ltcGxlbWVudGF0aW9uX29mX3RoZV9XZWJfUGVyZm9ybWFuY2VfQVBJX2NvdWxkX25vdF9iZV9mb3VuZDphKDYzODYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlBlcmZvcm1hbmNlX3RpbWluZ3NfZm9yX2RpYWdub3N0aWNzX29yX2V4dGVuZGVkRGlhZ25vc3RpY3NfYXJlX25vdF9hdmFpbGFibGVfaW5fdGhpc19zZXNzaW9uX0FfbmF0aXZfNjM4NlwiLFwiUGVyZm9ybWFuY2UgdGltaW5ncyBmb3IgJy0tZGlhZ25vc3RpY3MnIG9yICctLWV4dGVuZGVkRGlhZ25vc3RpY3MnIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoaXMgc2Vzc2lvbi4gQSBuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYiBQZXJmb3JtYW5jZSBBUEkgY291bGQgbm90IGJlIGZvdW5kLlwiKSxUaGVfc2lnbmF0dXJlXzBfb2ZfMV9pc19kZXByZWNhdGVkOmEoNjM4NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9uLFwiVGhlX3NpZ25hdHVyZV8wX29mXzFfaXNfZGVwcmVjYXRlZF82Mzg3XCIsXCJUaGUgc2lnbmF0dXJlICd7MH0nIG9mICd7MX0nIGlzIGRlcHJlY2F0ZWQuXCIsdm9pZCAwLHZvaWQgMCwhMCksUHJvamVjdF8wX2lzX2JlaW5nX2ZvcmNpYmx5X3JlYnVpbHQ6YSg2Mzg4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJQcm9qZWN0XzBfaXNfYmVpbmdfZm9yY2libHlfcmVidWlsdF82Mzg4XCIsXCJQcm9qZWN0ICd7MH0nIGlzIGJlaW5nIGZvcmNpYmx5IHJlYnVpbHRcIiksUmV1c2luZ19yZXNvbHV0aW9uX29mX21vZHVsZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfbm90X3Jlc29sdmVkOmEoNjM4OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmV1c2luZ19yZXNvbHV0aW9uX29mX21vZHVsZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfbm90X3Jlc29sdmVkXzYzODlcIixcIlJldXNpbmcgcmVzb2x1dGlvbiBvZiBtb2R1bGUgJ3swfScgZnJvbSAnezF9JyBvZiBvbGQgcHJvZ3JhbSwgaXQgd2FzIG5vdCByZXNvbHZlZC5cIiksUmV1c2luZ19yZXNvbHV0aW9uX29mX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzI6YSg2MzkwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXVzaW5nX3Jlc29sdXRpb25fb2ZfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfZnJvbV8xX29mX29sZF9wcm9ncmFtX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfXzYzOTBcIixcIlJldXNpbmcgcmVzb2x1dGlvbiBvZiB0eXBlIHJlZmVyZW5jZSBkaXJlY3RpdmUgJ3swfScgZnJvbSAnezF9JyBvZiBvbGQgcHJvZ3JhbSwgaXQgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCB0byAnezJ9Jy5cIiksUmV1c2luZ19yZXNvbHV0aW9uX29mX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzJfd2l0aF9QYWNrYWdlX0lEXzM6YSg2MzkxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXVzaW5nX3Jlc29sdXRpb25fb2ZfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfZnJvbV8xX29mX29sZF9wcm9ncmFtX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfXzYzOTFcIixcIlJldXNpbmcgcmVzb2x1dGlvbiBvZiB0eXBlIHJlZmVyZW5jZSBkaXJlY3RpdmUgJ3swfScgZnJvbSAnezF9JyBvZiBvbGQgcHJvZ3JhbSwgaXQgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCB0byAnezJ9JyB3aXRoIFBhY2thZ2UgSUQgJ3szfScuXCIpLFJldXNpbmdfcmVzb2x1dGlvbl9vZl90eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9mcm9tXzFfb2Zfb2xkX3Byb2dyYW1faXRfd2FzX25vdF9yZXNvbHZlZDphKDYzOTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJldXNpbmdfcmVzb2x1dGlvbl9vZl90eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9mcm9tXzFfb2Zfb2xkX3Byb2dyYW1faXRfd2FzX25vdF9yZXNvbHZlZF82MzkyXCIsXCJSZXVzaW5nIHJlc29sdXRpb24gb2YgdHlwZSByZWZlcmVuY2UgZGlyZWN0aXZlICd7MH0nIGZyb20gJ3sxfScgb2Ygb2xkIHByb2dyYW0sIGl0IHdhcyBub3QgcmVzb2x2ZWQuXCIpLFJldXNpbmdfcmVzb2x1dGlvbl9vZl9tb2R1bGVfMF9mcm9tXzFfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8yX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMzphKDYzOTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJldXNpbmdfcmVzb2x1dGlvbl9vZl9tb2R1bGVfMF9mcm9tXzFfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8yX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fNjM5M1wiLFwiUmV1c2luZyByZXNvbHV0aW9uIG9mIG1vZHVsZSAnezB9JyBmcm9tICd7MX0nIGZvdW5kIGluIGNhY2hlIGZyb20gbG9jYXRpb24gJ3syfScsIGl0IHdhcyBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQgdG8gJ3szfScuXCIpLFJldXNpbmdfcmVzb2x1dGlvbl9vZl9tb2R1bGVfMF9mcm9tXzFfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8yX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fM193aXRoX1BhY2thZ2VfSURfNDphKDYzOTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJldXNpbmdfcmVzb2x1dGlvbl9vZl9tb2R1bGVfMF9mcm9tXzFfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8yX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fNjM5NFwiLFwiUmV1c2luZyByZXNvbHV0aW9uIG9mIG1vZHVsZSAnezB9JyBmcm9tICd7MX0nIGZvdW5kIGluIGNhY2hlIGZyb20gbG9jYXRpb24gJ3syfScsIGl0IHdhcyBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQgdG8gJ3szfScgd2l0aCBQYWNrYWdlIElEICd7NH0nLlwiKSxSZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfbm90X3Jlc29sdmVkOmEoNjM5NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmV1c2luZ19yZXNvbHV0aW9uX29mX21vZHVsZV8wX2Zyb21fMV9mb3VuZF9pbl9jYWNoZV9mcm9tX2xvY2F0aW9uXzJfaXRfd2FzX25vdF9yZXNvbHZlZF82Mzk1XCIsXCJSZXVzaW5nIHJlc29sdXRpb24gb2YgbW9kdWxlICd7MH0nIGZyb20gJ3sxfScgZm91bmQgaW4gY2FjaGUgZnJvbSBsb2NhdGlvbiAnezJ9JywgaXQgd2FzIG5vdCByZXNvbHZlZC5cIiksUmV1c2luZ19yZXNvbHV0aW9uX29mX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2Zyb21fMV9mb3VuZF9pbl9jYWNoZV9mcm9tX2xvY2F0aW9uXzJfaXRfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18zOmEoNjM5NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmV1c2luZ19yZXNvbHV0aW9uX29mX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2Zyb21fMV9mb3VuZF9pbl9jYWNoZV9mcm9tX2xvY2F0aW9uXzJfaXRfd2FzX3N1Y2Nlc182Mzk2XCIsXCJSZXVzaW5nIHJlc29sdXRpb24gb2YgdHlwZSByZWZlcmVuY2UgZGlyZWN0aXZlICd7MH0nIGZyb20gJ3sxfScgZm91bmQgaW4gY2FjaGUgZnJvbSBsb2NhdGlvbiAnezJ9JywgaXQgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCB0byAnezN9Jy5cIiksUmV1c2luZ19yZXNvbHV0aW9uX29mX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2Zyb21fMV9mb3VuZF9pbl9jYWNoZV9mcm9tX2xvY2F0aW9uXzJfaXRfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18zX3dpdGhfUGFja2FnZV9JRF80OmEoNjM5NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmV1c2luZ19yZXNvbHV0aW9uX29mX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2Zyb21fMV9mb3VuZF9pbl9jYWNoZV9mcm9tX2xvY2F0aW9uXzJfaXRfd2FzX3N1Y2Nlc182Mzk3XCIsXCJSZXVzaW5nIHJlc29sdXRpb24gb2YgdHlwZSByZWZlcmVuY2UgZGlyZWN0aXZlICd7MH0nIGZyb20gJ3sxfScgZm91bmQgaW4gY2FjaGUgZnJvbSBsb2NhdGlvbiAnezJ9JywgaXQgd2FzIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCB0byAnezN9JyB3aXRoIFBhY2thZ2UgSUQgJ3s0fScuXCIpLFJldXNpbmdfcmVzb2x1dGlvbl9vZl90eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9mcm9tXzFfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8yX2l0X3dhc19ub3RfcmVzb2x2ZWQ6YSg2Mzk4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXVzaW5nX3Jlc29sdXRpb25fb2ZfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfbm90X3JlXzYzOThcIixcIlJldXNpbmcgcmVzb2x1dGlvbiBvZiB0eXBlIHJlZmVyZW5jZSBkaXJlY3RpdmUgJ3swfScgZnJvbSAnezF9JyBmb3VuZCBpbiBjYWNoZSBmcm9tIGxvY2F0aW9uICd7Mn0nLCBpdCB3YXMgbm90IHJlc29sdmVkLlwiKSxUaGVfZXhwZWN0ZWRfdHlwZV9jb21lc19mcm9tX3Byb3BlcnR5XzBfd2hpY2hfaXNfZGVjbGFyZWRfaGVyZV9vbl90eXBlXzE6YSg2NTAwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJUaGVfZXhwZWN0ZWRfdHlwZV9jb21lc19mcm9tX3Byb3BlcnR5XzBfd2hpY2hfaXNfZGVjbGFyZWRfaGVyZV9vbl90eXBlXzFfNjUwMFwiLFwiVGhlIGV4cGVjdGVkIHR5cGUgY29tZXMgZnJvbSBwcm9wZXJ0eSAnezB9JyB3aGljaCBpcyBkZWNsYXJlZCBoZXJlIG9uIHR5cGUgJ3sxfSdcIiksVGhlX2V4cGVjdGVkX3R5cGVfY29tZXNfZnJvbV90aGlzX2luZGV4X3NpZ25hdHVyZTphKDY1MDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlRoZV9leHBlY3RlZF90eXBlX2NvbWVzX2Zyb21fdGhpc19pbmRleF9zaWduYXR1cmVfNjUwMVwiLFwiVGhlIGV4cGVjdGVkIHR5cGUgY29tZXMgZnJvbSB0aGlzIGluZGV4IHNpZ25hdHVyZS5cIiksVGhlX2V4cGVjdGVkX3R5cGVfY29tZXNfZnJvbV90aGVfcmV0dXJuX3R5cGVfb2ZfdGhpc19zaWduYXR1cmU6YSg2NTAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJUaGVfZXhwZWN0ZWRfdHlwZV9jb21lc19mcm9tX3RoZV9yZXR1cm5fdHlwZV9vZl90aGlzX3NpZ25hdHVyZV82NTAyXCIsXCJUaGUgZXhwZWN0ZWQgdHlwZSBjb21lcyBmcm9tIHRoZSByZXR1cm4gdHlwZSBvZiB0aGlzIHNpZ25hdHVyZS5cIiksUHJpbnRfbmFtZXNfb2ZfZmlsZXNfdGhhdF9hcmVfcGFydF9vZl90aGVfY29tcGlsYXRpb25fYW5kX3RoZW5fc3RvcF9wcm9jZXNzaW5nOmEoNjUwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJpbnRfbmFtZXNfb2ZfZmlsZXNfdGhhdF9hcmVfcGFydF9vZl90aGVfY29tcGlsYXRpb25fYW5kX3RoZW5fc3RvcF9wcm9jZXNzaW5nXzY1MDNcIixcIlByaW50IG5hbWVzIG9mIGZpbGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIGNvbXBpbGF0aW9uIGFuZCB0aGVuIHN0b3AgcHJvY2Vzc2luZy5cIiksRmlsZV8wX2lzX2FfSmF2YVNjcmlwdF9maWxlX0RpZF95b3VfbWVhbl90b19lbmFibGVfdGhlX2FsbG93SnNfb3B0aW9uOmEoNjUwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZpbGVfMF9pc19hX0phdmFTY3JpcHRfZmlsZV9EaWRfeW91X21lYW5fdG9fZW5hYmxlX3RoZV9hbGxvd0pzX29wdGlvbl82NTA0XCIsXCJGaWxlICd7MH0nIGlzIGEgSmF2YVNjcmlwdCBmaWxlLiBEaWQgeW91IG1lYW4gdG8gZW5hYmxlIHRoZSAnYWxsb3dKcycgb3B0aW9uP1wiKSxQcmludF9uYW1lc19vZl9maWxlc19hbmRfdGhlX3JlYXNvbl90aGV5X2FyZV9wYXJ0X29mX3RoZV9jb21waWxhdGlvbjphKDY1MDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByaW50X25hbWVzX29mX2ZpbGVzX2FuZF90aGVfcmVhc29uX3RoZXlfYXJlX3BhcnRfb2ZfdGhlX2NvbXBpbGF0aW9uXzY1MDVcIixcIlByaW50IG5hbWVzIG9mIGZpbGVzIGFuZCB0aGUgcmVhc29uIHRoZXkgYXJlIHBhcnQgb2YgdGhlIGNvbXBpbGF0aW9uLlwiKSxDb25zaWRlcl9hZGRpbmdfYV9kZWNsYXJlX21vZGlmaWVyX3RvX3RoaXNfY2xhc3M6YSg2NTA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb25zaWRlcl9hZGRpbmdfYV9kZWNsYXJlX21vZGlmaWVyX3RvX3RoaXNfY2xhc3NfNjUwNlwiLFwiQ29uc2lkZXIgYWRkaW5nIGEgJ2RlY2xhcmUnIG1vZGlmaWVyIHRvIHRoaXMgY2xhc3MuXCIpLEFsbG93X0phdmFTY3JpcHRfZmlsZXNfdG9fYmVfYV9wYXJ0X29mX3lvdXJfcHJvZ3JhbV9Vc2VfdGhlX2NoZWNrSlNfb3B0aW9uX3RvX2dldF9lcnJvcnNfZnJvbV90aGVzZV9maWxlczphKDY2MDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFsbG93X0phdmFTY3JpcHRfZmlsZXNfdG9fYmVfYV9wYXJ0X29mX3lvdXJfcHJvZ3JhbV9Vc2VfdGhlX2NoZWNrSlNfb3B0aW9uX3RvX2dldF9lcnJvcnNfZnJvbV90aGVzZV9fNjYwMFwiLFwiQWxsb3cgSmF2YVNjcmlwdCBmaWxlcyB0byBiZSBhIHBhcnQgb2YgeW91ciBwcm9ncmFtLiBVc2UgdGhlICdjaGVja0pTJyBvcHRpb24gdG8gZ2V0IGVycm9ycyBmcm9tIHRoZXNlIGZpbGVzLlwiKSxBbGxvd19pbXBvcnRfeF9mcm9tX3lfd2hlbl9hX21vZHVsZV9kb2Vzbl90X2hhdmVfYV9kZWZhdWx0X2V4cG9ydDphKDY2MDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFsbG93X2ltcG9ydF94X2Zyb21feV93aGVuX2FfbW9kdWxlX2RvZXNuX3RfaGF2ZV9hX2RlZmF1bHRfZXhwb3J0XzY2MDFcIixcIkFsbG93ICdpbXBvcnQgeCBmcm9tIHknIHdoZW4gYSBtb2R1bGUgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCBleHBvcnQuXCIpLEFsbG93X2FjY2Vzc2luZ19VTURfZ2xvYmFsc19mcm9tX21vZHVsZXM6YSg2NjAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBbGxvd19hY2Nlc3NpbmdfVU1EX2dsb2JhbHNfZnJvbV9tb2R1bGVzXzY2MDJcIixcIkFsbG93IGFjY2Vzc2luZyBVTUQgZ2xvYmFscyBmcm9tIG1vZHVsZXMuXCIpLERpc2FibGVfZXJyb3JfcmVwb3J0aW5nX2Zvcl91bnJlYWNoYWJsZV9jb2RlOmEoNjYwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV9lcnJvcl9yZXBvcnRpbmdfZm9yX3VucmVhY2hhYmxlX2NvZGVfNjYwM1wiLFwiRGlzYWJsZSBlcnJvciByZXBvcnRpbmcgZm9yIHVucmVhY2hhYmxlIGNvZGUuXCIpLERpc2FibGVfZXJyb3JfcmVwb3J0aW5nX2Zvcl91bnVzZWRfbGFiZWxzOmEoNjYwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV9lcnJvcl9yZXBvcnRpbmdfZm9yX3VudXNlZF9sYWJlbHNfNjYwNFwiLFwiRGlzYWJsZSBlcnJvciByZXBvcnRpbmcgZm9yIHVudXNlZCBsYWJlbHMuXCIpLEVuc3VyZV91c2Vfc3RyaWN0X2lzX2Fsd2F5c19lbWl0dGVkOmEoNjYwNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5zdXJlX3VzZV9zdHJpY3RfaXNfYWx3YXlzX2VtaXR0ZWRfNjYwNVwiLFwiRW5zdXJlICd1c2Ugc3RyaWN0JyBpcyBhbHdheXMgZW1pdHRlZC5cIiksSGF2ZV9yZWNvbXBpbGVzX2luX3Byb2plY3RzX3RoYXRfdXNlX2luY3JlbWVudGFsX2FuZF93YXRjaF9tb2RlX2Fzc3VtZV90aGF0X2NoYW5nZXNfd2l0aGluX2FfZmlsZV93aWxsX29ubHlfYWZmZWN0X2ZpbGVzX2RpcmVjdGx5X2RlcGVuZGluZ19vbl9pdDphKDY2MDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkhhdmVfcmVjb21waWxlc19pbl9wcm9qZWN0c190aGF0X3VzZV9pbmNyZW1lbnRhbF9hbmRfd2F0Y2hfbW9kZV9hc3N1bWVfdGhhdF9jaGFuZ2VzX3dpdGhpbl9hX2ZpbGVfd2lfNjYwNlwiLFwiSGF2ZSByZWNvbXBpbGVzIGluIHByb2plY3RzIHRoYXQgdXNlICdpbmNyZW1lbnRhbCcgYW5kICd3YXRjaCcgbW9kZSBhc3N1bWUgdGhhdCBjaGFuZ2VzIHdpdGhpbiBhIGZpbGUgd2lsbCBvbmx5IGFmZmVjdCBmaWxlcyBkaXJlY3RseSBkZXBlbmRpbmcgb24gaXQuXCIpLFNwZWNpZnlfdGhlX2Jhc2VfZGlyZWN0b3J5X3RvX3Jlc29sdmVfbm9uX3JlbGF0aXZlX21vZHVsZV9uYW1lczphKDY2MDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfdGhlX2Jhc2VfZGlyZWN0b3J5X3RvX3Jlc29sdmVfbm9uX3JlbGF0aXZlX21vZHVsZV9uYW1lc182NjA3XCIsXCJTcGVjaWZ5IHRoZSBiYXNlIGRpcmVjdG9yeSB0byByZXNvbHZlIG5vbi1yZWxhdGl2ZSBtb2R1bGUgbmFtZXMuXCIpLE5vX2xvbmdlcl9zdXBwb3J0ZWRfSW5fZWFybHlfdmVyc2lvbnNfbWFudWFsbHlfc2V0X3RoZV90ZXh0X2VuY29kaW5nX2Zvcl9yZWFkaW5nX2ZpbGVzOmEoNjYwOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTm9fbG9uZ2VyX3N1cHBvcnRlZF9Jbl9lYXJseV92ZXJzaW9uc19tYW51YWxseV9zZXRfdGhlX3RleHRfZW5jb2RpbmdfZm9yX3JlYWRpbmdfZmlsZXNfNjYwOFwiLFwiTm8gbG9uZ2VyIHN1cHBvcnRlZC4gSW4gZWFybHkgdmVyc2lvbnMsIG1hbnVhbGx5IHNldCB0aGUgdGV4dCBlbmNvZGluZyBmb3IgcmVhZGluZyBmaWxlcy5cIiksRW5hYmxlX2Vycm9yX3JlcG9ydGluZ19pbl90eXBlX2NoZWNrZWRfSmF2YVNjcmlwdF9maWxlczphKDY2MDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV9lcnJvcl9yZXBvcnRpbmdfaW5fdHlwZV9jaGVja2VkX0phdmFTY3JpcHRfZmlsZXNfNjYwOVwiLFwiRW5hYmxlIGVycm9yIHJlcG9ydGluZyBpbiB0eXBlLWNoZWNrZWQgSmF2YVNjcmlwdCBmaWxlcy5cIiksRW5hYmxlX2NvbnN0cmFpbnRzX3RoYXRfYWxsb3dfYV9UeXBlU2NyaXB0X3Byb2plY3RfdG9fYmVfdXNlZF93aXRoX3Byb2plY3RfcmVmZXJlbmNlczphKDY2MTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV9jb25zdHJhaW50c190aGF0X2FsbG93X2FfVHlwZVNjcmlwdF9wcm9qZWN0X3RvX2JlX3VzZWRfd2l0aF9wcm9qZWN0X3JlZmVyZW5jZXNfNjYxMVwiLFwiRW5hYmxlIGNvbnN0cmFpbnRzIHRoYXQgYWxsb3cgYSBUeXBlU2NyaXB0IHByb2plY3QgdG8gYmUgdXNlZCB3aXRoIHByb2plY3QgcmVmZXJlbmNlcy5cIiksR2VuZXJhdGVfZF90c19maWxlc19mcm9tX1R5cGVTY3JpcHRfYW5kX0phdmFTY3JpcHRfZmlsZXNfaW5feW91cl9wcm9qZWN0OmEoNjYxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiR2VuZXJhdGVfZF90c19maWxlc19mcm9tX1R5cGVTY3JpcHRfYW5kX0phdmFTY3JpcHRfZmlsZXNfaW5feW91cl9wcm9qZWN0XzY2MTJcIixcIkdlbmVyYXRlIC5kLnRzIGZpbGVzIGZyb20gVHlwZVNjcmlwdCBhbmQgSmF2YVNjcmlwdCBmaWxlcyBpbiB5b3VyIHByb2plY3QuXCIpLFNwZWNpZnlfdGhlX291dHB1dF9kaXJlY3RvcnlfZm9yX2dlbmVyYXRlZF9kZWNsYXJhdGlvbl9maWxlczphKDY2MTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfdGhlX291dHB1dF9kaXJlY3RvcnlfZm9yX2dlbmVyYXRlZF9kZWNsYXJhdGlvbl9maWxlc182NjEzXCIsXCJTcGVjaWZ5IHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciBnZW5lcmF0ZWQgZGVjbGFyYXRpb24gZmlsZXMuXCIpLENyZWF0ZV9zb3VyY2VtYXBzX2Zvcl9kX3RzX2ZpbGVzOmEoNjYxNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ3JlYXRlX3NvdXJjZW1hcHNfZm9yX2RfdHNfZmlsZXNfNjYxNFwiLFwiQ3JlYXRlIHNvdXJjZW1hcHMgZm9yIGQudHMgZmlsZXMuXCIpLE91dHB1dF9jb21waWxlcl9wZXJmb3JtYW5jZV9pbmZvcm1hdGlvbl9hZnRlcl9idWlsZGluZzphKDY2MTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk91dHB1dF9jb21waWxlcl9wZXJmb3JtYW5jZV9pbmZvcm1hdGlvbl9hZnRlcl9idWlsZGluZ182NjE1XCIsXCJPdXRwdXQgY29tcGlsZXIgcGVyZm9ybWFuY2UgaW5mb3JtYXRpb24gYWZ0ZXIgYnVpbGRpbmcuXCIpLERpc2FibGVzX2luZmVyZW5jZV9mb3JfdHlwZV9hY3F1aXNpdGlvbl9ieV9sb29raW5nX2F0X2ZpbGVuYW1lc19pbl9hX3Byb2plY3Q6YSg2NjE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlc19pbmZlcmVuY2VfZm9yX3R5cGVfYWNxdWlzaXRpb25fYnlfbG9va2luZ19hdF9maWxlbmFtZXNfaW5fYV9wcm9qZWN0XzY2MTZcIixcIkRpc2FibGVzIGluZmVyZW5jZSBmb3IgdHlwZSBhY3F1aXNpdGlvbiBieSBsb29raW5nIGF0IGZpbGVuYW1lcyBpbiBhIHByb2plY3QuXCIpLFJlZHVjZV90aGVfbnVtYmVyX29mX3Byb2plY3RzX2xvYWRlZF9hdXRvbWF0aWNhbGx5X2J5X1R5cGVTY3JpcHQ6YSg2NjE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZWR1Y2VfdGhlX251bWJlcl9vZl9wcm9qZWN0c19sb2FkZWRfYXV0b21hdGljYWxseV9ieV9UeXBlU2NyaXB0XzY2MTdcIixcIlJlZHVjZSB0aGUgbnVtYmVyIG9mIHByb2plY3RzIGxvYWRlZCBhdXRvbWF0aWNhbGx5IGJ5IFR5cGVTY3JpcHQuXCIpLFJlbW92ZV90aGVfMjBtYl9jYXBfb25fdG90YWxfc291cmNlX2NvZGVfc2l6ZV9mb3JfSmF2YVNjcmlwdF9maWxlc19pbl90aGVfVHlwZVNjcmlwdF9sYW5ndWFnZV9zZXJ2ZXI6YSg2NjE4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfdGhlXzIwbWJfY2FwX29uX3RvdGFsX3NvdXJjZV9jb2RlX3NpemVfZm9yX0phdmFTY3JpcHRfZmlsZXNfaW5fdGhlX1R5cGVTY3JpcHRfbGFuZ3VhZ2Vfc2VydmVyXzY2MThcIixcIlJlbW92ZSB0aGUgMjBtYiBjYXAgb24gdG90YWwgc291cmNlIGNvZGUgc2l6ZSBmb3IgSmF2YVNjcmlwdCBmaWxlcyBpbiB0aGUgVHlwZVNjcmlwdCBsYW5ndWFnZSBzZXJ2ZXIuXCIpLE9wdF9hX3Byb2plY3Rfb3V0X29mX211bHRpX3Byb2plY3RfcmVmZXJlbmNlX2NoZWNraW5nX3doZW5fZWRpdGluZzphKDY2MTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk9wdF9hX3Byb2plY3Rfb3V0X29mX211bHRpX3Byb2plY3RfcmVmZXJlbmNlX2NoZWNraW5nX3doZW5fZWRpdGluZ182NjE5XCIsXCJPcHQgYSBwcm9qZWN0IG91dCBvZiBtdWx0aS1wcm9qZWN0IHJlZmVyZW5jZSBjaGVja2luZyB3aGVuIGVkaXRpbmcuXCIpLERpc2FibGVfcHJlZmVycmluZ19zb3VyY2VfZmlsZXNfaW5zdGVhZF9vZl9kZWNsYXJhdGlvbl9maWxlc193aGVuX3JlZmVyZW5jaW5nX2NvbXBvc2l0ZV9wcm9qZWN0czphKDY2MjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpc2FibGVfcHJlZmVycmluZ19zb3VyY2VfZmlsZXNfaW5zdGVhZF9vZl9kZWNsYXJhdGlvbl9maWxlc193aGVuX3JlZmVyZW5jaW5nX2NvbXBvc2l0ZV9wcm9qZWN0c182NjIwXCIsXCJEaXNhYmxlIHByZWZlcnJpbmcgc291cmNlIGZpbGVzIGluc3RlYWQgb2YgZGVjbGFyYXRpb24gZmlsZXMgd2hlbiByZWZlcmVuY2luZyBjb21wb3NpdGUgcHJvamVjdHMuXCIpLEVtaXRfbW9yZV9jb21wbGlhbnRfYnV0X3ZlcmJvc2VfYW5kX2xlc3NfcGVyZm9ybWFudF9KYXZhU2NyaXB0X2Zvcl9pdGVyYXRpb246YSg2NjIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbWl0X21vcmVfY29tcGxpYW50X2J1dF92ZXJib3NlX2FuZF9sZXNzX3BlcmZvcm1hbnRfSmF2YVNjcmlwdF9mb3JfaXRlcmF0aW9uXzY2MjFcIixcIkVtaXQgbW9yZSBjb21wbGlhbnQsIGJ1dCB2ZXJib3NlIGFuZCBsZXNzIHBlcmZvcm1hbnQgSmF2YVNjcmlwdCBmb3IgaXRlcmF0aW9uLlwiKSxFbWl0X2FfVVRGXzhfQnl0ZV9PcmRlcl9NYXJrX0JPTV9pbl90aGVfYmVnaW5uaW5nX29mX291dHB1dF9maWxlczphKDY2MjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVtaXRfYV9VVEZfOF9CeXRlX09yZGVyX01hcmtfQk9NX2luX3RoZV9iZWdpbm5pbmdfb2Zfb3V0cHV0X2ZpbGVzXzY2MjJcIixcIkVtaXQgYSBVVEYtOCBCeXRlIE9yZGVyIE1hcmsgKEJPTSkgaW4gdGhlIGJlZ2lubmluZyBvZiBvdXRwdXQgZmlsZXMuXCIpLE9ubHlfb3V0cHV0X2RfdHNfZmlsZXNfYW5kX25vdF9KYXZhU2NyaXB0X2ZpbGVzOmEoNjYyMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiT25seV9vdXRwdXRfZF90c19maWxlc19hbmRfbm90X0phdmFTY3JpcHRfZmlsZXNfNjYyM1wiLFwiT25seSBvdXRwdXQgZC50cyBmaWxlcyBhbmQgbm90IEphdmFTY3JpcHQgZmlsZXMuXCIpLEVtaXRfZGVzaWduX3R5cGVfbWV0YWRhdGFfZm9yX2RlY29yYXRlZF9kZWNsYXJhdGlvbnNfaW5fc291cmNlX2ZpbGVzOmEoNjYyNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW1pdF9kZXNpZ25fdHlwZV9tZXRhZGF0YV9mb3JfZGVjb3JhdGVkX2RlY2xhcmF0aW9uc19pbl9zb3VyY2VfZmlsZXNfNjYyNFwiLFwiRW1pdCBkZXNpZ24tdHlwZSBtZXRhZGF0YSBmb3IgZGVjb3JhdGVkIGRlY2xhcmF0aW9ucyBpbiBzb3VyY2UgZmlsZXMuXCIpLERpc2FibGVfdGhlX3R5cGVfYWNxdWlzaXRpb25fZm9yX0phdmFTY3JpcHRfcHJvamVjdHM6YSg2NjI1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlX3RoZV90eXBlX2FjcXVpc2l0aW9uX2Zvcl9KYXZhU2NyaXB0X3Byb2plY3RzXzY2MjVcIixcIkRpc2FibGUgdGhlIHR5cGUgYWNxdWlzaXRpb24gZm9yIEphdmFTY3JpcHQgcHJvamVjdHNcIiksRW1pdF9hZGRpdGlvbmFsX0phdmFTY3JpcHRfdG9fZWFzZV9zdXBwb3J0X2Zvcl9pbXBvcnRpbmdfQ29tbW9uSlNfbW9kdWxlc19UaGlzX2VuYWJsZXNfYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0c19mb3JfdHlwZV9jb21wYXRpYmlsaXR5OmEoNjYyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW1pdF9hZGRpdGlvbmFsX0phdmFTY3JpcHRfdG9fZWFzZV9zdXBwb3J0X2Zvcl9pbXBvcnRpbmdfQ29tbW9uSlNfbW9kdWxlc19UaGlzX2VuYWJsZXNfYWxsb3dTeW50aGV0aV82NjI2XCIsXCJFbWl0IGFkZGl0aW9uYWwgSmF2YVNjcmlwdCB0byBlYXNlIHN1cHBvcnQgZm9yIGltcG9ydGluZyBDb21tb25KUyBtb2R1bGVzLiBUaGlzIGVuYWJsZXMgJ2FsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMnIGZvciB0eXBlIGNvbXBhdGliaWxpdHkuXCIpLEZpbHRlcnNfcmVzdWx0c19mcm9tX3RoZV9pbmNsdWRlX29wdGlvbjphKDY2MjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpbHRlcnNfcmVzdWx0c19mcm9tX3RoZV9pbmNsdWRlX29wdGlvbl82NjI3XCIsXCJGaWx0ZXJzIHJlc3VsdHMgZnJvbSB0aGUgYGluY2x1ZGVgIG9wdGlvbi5cIiksUmVtb3ZlX2FfbGlzdF9vZl9kaXJlY3Rvcmllc19mcm9tX3RoZV93YXRjaF9wcm9jZXNzOmEoNjYyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVtb3ZlX2FfbGlzdF9vZl9kaXJlY3Rvcmllc19mcm9tX3RoZV93YXRjaF9wcm9jZXNzXzY2MjhcIixcIlJlbW92ZSBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB0aGUgd2F0Y2ggcHJvY2Vzcy5cIiksUmVtb3ZlX2FfbGlzdF9vZl9maWxlc19mcm9tX3RoZV93YXRjaF9tb2RlX3NfcHJvY2Vzc2luZzphKDY2MjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV9hX2xpc3Rfb2ZfZmlsZXNfZnJvbV90aGVfd2F0Y2hfbW9kZV9zX3Byb2Nlc3NpbmdfNjYyOVwiLFwiUmVtb3ZlIGEgbGlzdCBvZiBmaWxlcyBmcm9tIHRoZSB3YXRjaCBtb2RlJ3MgcHJvY2Vzc2luZy5cIiksRW5hYmxlX2V4cGVyaW1lbnRhbF9zdXBwb3J0X2Zvcl9UQzM5X3N0YWdlXzJfZHJhZnRfZGVjb3JhdG9yczphKDY2MzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV9leHBlcmltZW50YWxfc3VwcG9ydF9mb3JfVEMzOV9zdGFnZV8yX2RyYWZ0X2RlY29yYXRvcnNfNjYzMFwiLFwiRW5hYmxlIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBUQzM5IHN0YWdlIDIgZHJhZnQgZGVjb3JhdG9ycy5cIiksUHJpbnRfZmlsZXNfcmVhZF9kdXJpbmdfdGhlX2NvbXBpbGF0aW9uX2luY2x1ZGluZ193aHlfaXRfd2FzX2luY2x1ZGVkOmEoNjYzMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJpbnRfZmlsZXNfcmVhZF9kdXJpbmdfdGhlX2NvbXBpbGF0aW9uX2luY2x1ZGluZ193aHlfaXRfd2FzX2luY2x1ZGVkXzY2MzFcIixcIlByaW50IGZpbGVzIHJlYWQgZHVyaW5nIHRoZSBjb21waWxhdGlvbiBpbmNsdWRpbmcgd2h5IGl0IHdhcyBpbmNsdWRlZC5cIiksT3V0cHV0X21vcmVfZGV0YWlsZWRfY29tcGlsZXJfcGVyZm9ybWFuY2VfaW5mb3JtYXRpb25fYWZ0ZXJfYnVpbGRpbmc6YSg2NjMyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJPdXRwdXRfbW9yZV9kZXRhaWxlZF9jb21waWxlcl9wZXJmb3JtYW5jZV9pbmZvcm1hdGlvbl9hZnRlcl9idWlsZGluZ182NjMyXCIsXCJPdXRwdXQgbW9yZSBkZXRhaWxlZCBjb21waWxlciBwZXJmb3JtYW5jZSBpbmZvcm1hdGlvbiBhZnRlciBidWlsZGluZy5cIiksU3BlY2lmeV9vbmVfb3JfbW9yZV9wYXRoX29yX25vZGVfbW9kdWxlX3JlZmVyZW5jZXNfdG9fYmFzZV9jb25maWd1cmF0aW9uX2ZpbGVzX2Zyb21fd2hpY2hfc2V0dGluZ3NfYXJlX2luaGVyaXRlZDphKDY2MzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfb25lX29yX21vcmVfcGF0aF9vcl9ub2RlX21vZHVsZV9yZWZlcmVuY2VzX3RvX2Jhc2VfY29uZmlndXJhdGlvbl9maWxlc19mcm9tX3doaWNoX3NldHRpbmdzX2FfNjYzM1wiLFwiU3BlY2lmeSBvbmUgb3IgbW9yZSBwYXRoIG9yIG5vZGUgbW9kdWxlIHJlZmVyZW5jZXMgdG8gYmFzZSBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gd2hpY2ggc2V0dGluZ3MgYXJlIGluaGVyaXRlZC5cIiksU3BlY2lmeV93aGF0X2FwcHJvYWNoX3RoZV93YXRjaGVyX3Nob3VsZF91c2VfaWZfdGhlX3N5c3RlbV9ydW5zX291dF9vZl9uYXRpdmVfZmlsZV93YXRjaGVyczphKDY2MzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfd2hhdF9hcHByb2FjaF90aGVfd2F0Y2hlcl9zaG91bGRfdXNlX2lmX3RoZV9zeXN0ZW1fcnVuc19vdXRfb2ZfbmF0aXZlX2ZpbGVfd2F0Y2hlcnNfNjYzNFwiLFwiU3BlY2lmeSB3aGF0IGFwcHJvYWNoIHRoZSB3YXRjaGVyIHNob3VsZCB1c2UgaWYgdGhlIHN5c3RlbSBydW5zIG91dCBvZiBuYXRpdmUgZmlsZSB3YXRjaGVycy5cIiksSW5jbHVkZV9hX2xpc3Rfb2ZfZmlsZXNfVGhpc19kb2VzX25vdF9zdXBwb3J0X2dsb2JfcGF0dGVybnNfYXNfb3Bwb3NlZF90b19pbmNsdWRlOmEoNjYzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW5jbHVkZV9hX2xpc3Rfb2ZfZmlsZXNfVGhpc19kb2VzX25vdF9zdXBwb3J0X2dsb2JfcGF0dGVybnNfYXNfb3Bwb3NlZF90b19pbmNsdWRlXzY2MzVcIixcIkluY2x1ZGUgYSBsaXN0IG9mIGZpbGVzLiBUaGlzIGRvZXMgbm90IHN1cHBvcnQgZ2xvYiBwYXR0ZXJucywgYXMgb3Bwb3NlZCB0byBgaW5jbHVkZWAuXCIpLEJ1aWxkX2FsbF9wcm9qZWN0c19pbmNsdWRpbmdfdGhvc2VfdGhhdF9hcHBlYXJfdG9fYmVfdXBfdG9fZGF0ZTphKDY2MzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkJ1aWxkX2FsbF9wcm9qZWN0c19pbmNsdWRpbmdfdGhvc2VfdGhhdF9hcHBlYXJfdG9fYmVfdXBfdG9fZGF0ZV82NjM2XCIsXCJCdWlsZCBhbGwgcHJvamVjdHMsIGluY2x1ZGluZyB0aG9zZSB0aGF0IGFwcGVhciB0byBiZSB1cCB0byBkYXRlLlwiKSxFbnN1cmVfdGhhdF9jYXNpbmdfaXNfY29ycmVjdF9pbl9pbXBvcnRzOmEoNjYzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5zdXJlX3RoYXRfY2FzaW5nX2lzX2NvcnJlY3RfaW5faW1wb3J0c182NjM3XCIsXCJFbnN1cmUgdGhhdCBjYXNpbmcgaXMgY29ycmVjdCBpbiBpbXBvcnRzLlwiKSxFbWl0X2FfdjhfQ1BVX3Byb2ZpbGVfb2ZfdGhlX2NvbXBpbGVyX3J1bl9mb3JfZGVidWdnaW5nOmEoNjYzOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW1pdF9hX3Y4X0NQVV9wcm9maWxlX29mX3RoZV9jb21waWxlcl9ydW5fZm9yX2RlYnVnZ2luZ182NjM4XCIsXCJFbWl0IGEgdjggQ1BVIHByb2ZpbGUgb2YgdGhlIGNvbXBpbGVyIHJ1biBmb3IgZGVidWdnaW5nLlwiKSxBbGxvd19pbXBvcnRpbmdfaGVscGVyX2Z1bmN0aW9uc19mcm9tX3RzbGliX29uY2VfcGVyX3Byb2plY3RfaW5zdGVhZF9vZl9pbmNsdWRpbmdfdGhlbV9wZXJfZmlsZTphKDY2MzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFsbG93X2ltcG9ydGluZ19oZWxwZXJfZnVuY3Rpb25zX2Zyb21fdHNsaWJfb25jZV9wZXJfcHJvamVjdF9pbnN0ZWFkX29mX2luY2x1ZGluZ190aGVtX3Blcl9maWxlXzY2MzlcIixcIkFsbG93IGltcG9ydGluZyBoZWxwZXIgZnVuY3Rpb25zIGZyb20gdHNsaWIgb25jZSBwZXIgcHJvamVjdCwgaW5zdGVhZCBvZiBpbmNsdWRpbmcgdGhlbSBwZXItZmlsZS5cIiksU3BlY2lmeV9hX2xpc3Rfb2ZfZ2xvYl9wYXR0ZXJuc190aGF0X21hdGNoX2ZpbGVzX3RvX2JlX2luY2x1ZGVkX2luX2NvbXBpbGF0aW9uOmEoNjY0MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV9hX2xpc3Rfb2ZfZ2xvYl9wYXR0ZXJuc190aGF0X21hdGNoX2ZpbGVzX3RvX2JlX2luY2x1ZGVkX2luX2NvbXBpbGF0aW9uXzY2NDFcIixcIlNwZWNpZnkgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBtYXRjaCBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbiBjb21waWxhdGlvbi5cIiksU2F2ZV90c2J1aWxkaW5mb19maWxlc190b19hbGxvd19mb3JfaW5jcmVtZW50YWxfY29tcGlsYXRpb25fb2ZfcHJvamVjdHM6YSg2NjQyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTYXZlX3RzYnVpbGRpbmZvX2ZpbGVzX3RvX2FsbG93X2Zvcl9pbmNyZW1lbnRhbF9jb21waWxhdGlvbl9vZl9wcm9qZWN0c182NjQyXCIsXCJTYXZlIC50c2J1aWxkaW5mbyBmaWxlcyB0byBhbGxvdyBmb3IgaW5jcmVtZW50YWwgY29tcGlsYXRpb24gb2YgcHJvamVjdHMuXCIpLEluY2x1ZGVfc291cmNlbWFwX2ZpbGVzX2luc2lkZV90aGVfZW1pdHRlZF9KYXZhU2NyaXB0OmEoNjY0MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW5jbHVkZV9zb3VyY2VtYXBfZmlsZXNfaW5zaWRlX3RoZV9lbWl0dGVkX0phdmFTY3JpcHRfNjY0M1wiLFwiSW5jbHVkZSBzb3VyY2VtYXAgZmlsZXMgaW5zaWRlIHRoZSBlbWl0dGVkIEphdmFTY3JpcHQuXCIpLEluY2x1ZGVfc291cmNlX2NvZGVfaW5fdGhlX3NvdXJjZW1hcHNfaW5zaWRlX3RoZV9lbWl0dGVkX0phdmFTY3JpcHQ6YSg2NjQ0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbmNsdWRlX3NvdXJjZV9jb2RlX2luX3RoZV9zb3VyY2VtYXBzX2luc2lkZV90aGVfZW1pdHRlZF9KYXZhU2NyaXB0XzY2NDRcIixcIkluY2x1ZGUgc291cmNlIGNvZGUgaW4gdGhlIHNvdXJjZW1hcHMgaW5zaWRlIHRoZSBlbWl0dGVkIEphdmFTY3JpcHQuXCIpLEVuc3VyZV90aGF0X2VhY2hfZmlsZV9jYW5fYmVfc2FmZWx5X3RyYW5zcGlsZWRfd2l0aG91dF9yZWx5aW5nX29uX290aGVyX2ltcG9ydHM6YSg2NjQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbnN1cmVfdGhhdF9lYWNoX2ZpbGVfY2FuX2JlX3NhZmVseV90cmFuc3BpbGVkX3dpdGhvdXRfcmVseWluZ19vbl9vdGhlcl9pbXBvcnRzXzY2NDVcIixcIkVuc3VyZSB0aGF0IGVhY2ggZmlsZSBjYW4gYmUgc2FmZWx5IHRyYW5zcGlsZWQgd2l0aG91dCByZWx5aW5nIG9uIG90aGVyIGltcG9ydHMuXCIpLFNwZWNpZnlfd2hhdF9KU1hfY29kZV9pc19nZW5lcmF0ZWQ6YSg2NjQ2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X3doYXRfSlNYX2NvZGVfaXNfZ2VuZXJhdGVkXzY2NDZcIixcIlNwZWNpZnkgd2hhdCBKU1ggY29kZSBpcyBnZW5lcmF0ZWQuXCIpLFNwZWNpZnlfdGhlX0pTWF9mYWN0b3J5X2Z1bmN0aW9uX3VzZWRfd2hlbl90YXJnZXRpbmdfUmVhY3RfSlNYX2VtaXRfZV9nX1JlYWN0X2NyZWF0ZUVsZW1lbnRfb3JfaDphKDY2NDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfdGhlX0pTWF9mYWN0b3J5X2Z1bmN0aW9uX3VzZWRfd2hlbl90YXJnZXRpbmdfUmVhY3RfSlNYX2VtaXRfZV9nX1JlYWN0X2NyZWF0ZUVsZW1lbnRfb3JfaF82NjQ3XCIsXCJTcGVjaWZ5IHRoZSBKU1ggZmFjdG9yeSBmdW5jdGlvbiB1c2VkIHdoZW4gdGFyZ2V0aW5nIFJlYWN0IEpTWCBlbWl0LCBlLmcuICdSZWFjdC5jcmVhdGVFbGVtZW50JyBvciAnaCcuXCIpLFNwZWNpZnlfdGhlX0pTWF9GcmFnbWVudF9yZWZlcmVuY2VfdXNlZF9mb3JfZnJhZ21lbnRzX3doZW5fdGFyZ2V0aW5nX1JlYWN0X0pTWF9lbWl0X2VfZ19SZWFjdF9GcmFnbWVudF9vcl9GcmFnbWVudDphKDY2NDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfdGhlX0pTWF9GcmFnbWVudF9yZWZlcmVuY2VfdXNlZF9mb3JfZnJhZ21lbnRzX3doZW5fdGFyZ2V0aW5nX1JlYWN0X0pTWF9lbWl0X2VfZ19SZWFjdF9GcmFnbWVfNjY0OFwiLFwiU3BlY2lmeSB0aGUgSlNYIEZyYWdtZW50IHJlZmVyZW5jZSB1c2VkIGZvciBmcmFnbWVudHMgd2hlbiB0YXJnZXRpbmcgUmVhY3QgSlNYIGVtaXQgZS5nLiAnUmVhY3QuRnJhZ21lbnQnIG9yICdGcmFnbWVudCcuXCIpLFNwZWNpZnlfbW9kdWxlX3NwZWNpZmllcl91c2VkX3RvX2ltcG9ydF90aGVfSlNYX2ZhY3RvcnlfZnVuY3Rpb25zX3doZW5fdXNpbmdfanN4X0NvbG9uX3JlYWN0X2pzeF9Bc3RlcmlzazphKDY2NDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfbW9kdWxlX3NwZWNpZmllcl91c2VkX3RvX2ltcG9ydF90aGVfSlNYX2ZhY3RvcnlfZnVuY3Rpb25zX3doZW5fdXNpbmdfanN4X0NvbG9uX3JlYWN0X2pzeF9Bc3RfNjY0OVwiLFwiU3BlY2lmeSBtb2R1bGUgc3BlY2lmaWVyIHVzZWQgdG8gaW1wb3J0IHRoZSBKU1ggZmFjdG9yeSBmdW5jdGlvbnMgd2hlbiB1c2luZyAnanN4OiByZWFjdC1qc3gqJy5cIiksTWFrZV9rZXlvZl9vbmx5X3JldHVybl9zdHJpbmdzX2luc3RlYWRfb2Zfc3RyaW5nX251bWJlcnNfb3Jfc3ltYm9sc19MZWdhY3lfb3B0aW9uOmEoNjY1MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTWFrZV9rZXlvZl9vbmx5X3JldHVybl9zdHJpbmdzX2luc3RlYWRfb2Zfc3RyaW5nX251bWJlcnNfb3Jfc3ltYm9sc19MZWdhY3lfb3B0aW9uXzY2NTBcIixcIk1ha2Uga2V5b2Ygb25seSByZXR1cm4gc3RyaW5ncyBpbnN0ZWFkIG9mIHN0cmluZywgbnVtYmVycyBvciBzeW1ib2xzLiBMZWdhY3kgb3B0aW9uLlwiKSxTcGVjaWZ5X2Ffc2V0X29mX2J1bmRsZWRfbGlicmFyeV9kZWNsYXJhdGlvbl9maWxlc190aGF0X2Rlc2NyaWJlX3RoZV90YXJnZXRfcnVudGltZV9lbnZpcm9ubWVudDphKDY2NTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfYV9zZXRfb2ZfYnVuZGxlZF9saWJyYXJ5X2RlY2xhcmF0aW9uX2ZpbGVzX3RoYXRfZGVzY3JpYmVfdGhlX3RhcmdldF9ydW50aW1lX2Vudmlyb25tZW50XzY2NTFcIixcIlNwZWNpZnkgYSBzZXQgb2YgYnVuZGxlZCBsaWJyYXJ5IGRlY2xhcmF0aW9uIGZpbGVzIHRoYXQgZGVzY3JpYmUgdGhlIHRhcmdldCBydW50aW1lIGVudmlyb25tZW50LlwiKSxQcmludF90aGVfbmFtZXNfb2ZfZW1pdHRlZF9maWxlc19hZnRlcl9hX2NvbXBpbGF0aW9uOmEoNjY1MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUHJpbnRfdGhlX25hbWVzX29mX2VtaXR0ZWRfZmlsZXNfYWZ0ZXJfYV9jb21waWxhdGlvbl82NjUyXCIsXCJQcmludCB0aGUgbmFtZXMgb2YgZW1pdHRlZCBmaWxlcyBhZnRlciBhIGNvbXBpbGF0aW9uLlwiKSxQcmludF9hbGxfb2ZfdGhlX2ZpbGVzX3JlYWRfZHVyaW5nX3RoZV9jb21waWxhdGlvbjphKDY2NTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByaW50X2FsbF9vZl90aGVfZmlsZXNfcmVhZF9kdXJpbmdfdGhlX2NvbXBpbGF0aW9uXzY2NTNcIixcIlByaW50IGFsbCBvZiB0aGUgZmlsZXMgcmVhZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uLlwiKSxTZXRfdGhlX2xhbmd1YWdlX29mX3RoZV9tZXNzYWdpbmdfZnJvbV9UeXBlU2NyaXB0X1RoaXNfZG9lc19ub3RfYWZmZWN0X2VtaXQ6YSg2NjU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTZXRfdGhlX2xhbmd1YWdlX29mX3RoZV9tZXNzYWdpbmdfZnJvbV9UeXBlU2NyaXB0X1RoaXNfZG9lc19ub3RfYWZmZWN0X2VtaXRfNjY1NFwiLFwiU2V0IHRoZSBsYW5ndWFnZSBvZiB0aGUgbWVzc2FnaW5nIGZyb20gVHlwZVNjcmlwdC4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgZW1pdC5cIiksU3BlY2lmeV90aGVfbG9jYXRpb25fd2hlcmVfZGVidWdnZXJfc2hvdWxkX2xvY2F0ZV9tYXBfZmlsZXNfaW5zdGVhZF9vZl9nZW5lcmF0ZWRfbG9jYXRpb25zOmEoNjY1NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV90aGVfbG9jYXRpb25fd2hlcmVfZGVidWdnZXJfc2hvdWxkX2xvY2F0ZV9tYXBfZmlsZXNfaW5zdGVhZF9vZl9nZW5lcmF0ZWRfbG9jYXRpb25zXzY2NTVcIixcIlNwZWNpZnkgdGhlIGxvY2F0aW9uIHdoZXJlIGRlYnVnZ2VyIHNob3VsZCBsb2NhdGUgbWFwIGZpbGVzIGluc3RlYWQgb2YgZ2VuZXJhdGVkIGxvY2F0aW9ucy5cIiksU3BlY2lmeV90aGVfbWF4aW11bV9mb2xkZXJfZGVwdGhfdXNlZF9mb3JfY2hlY2tpbmdfSmF2YVNjcmlwdF9maWxlc19mcm9tX25vZGVfbW9kdWxlc19Pbmx5X2FwcGxpY2FibGVfd2l0aF9hbGxvd0pzOmEoNjY1NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV90aGVfbWF4aW11bV9mb2xkZXJfZGVwdGhfdXNlZF9mb3JfY2hlY2tpbmdfSmF2YVNjcmlwdF9maWxlc19mcm9tX25vZGVfbW9kdWxlc19Pbmx5X2FwcGxpY2FibF82NjU2XCIsXCJTcGVjaWZ5IHRoZSBtYXhpbXVtIGZvbGRlciBkZXB0aCB1c2VkIGZvciBjaGVja2luZyBKYXZhU2NyaXB0IGZpbGVzIGZyb20gJ25vZGVfbW9kdWxlcycuIE9ubHkgYXBwbGljYWJsZSB3aXRoICdhbGxvd0pzJy5cIiksU3BlY2lmeV93aGF0X21vZHVsZV9jb2RlX2lzX2dlbmVyYXRlZDphKDY2NTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfd2hhdF9tb2R1bGVfY29kZV9pc19nZW5lcmF0ZWRfNjY1N1wiLFwiU3BlY2lmeSB3aGF0IG1vZHVsZSBjb2RlIGlzIGdlbmVyYXRlZC5cIiksU3BlY2lmeV9ob3dfVHlwZVNjcmlwdF9sb29rc191cF9hX2ZpbGVfZnJvbV9hX2dpdmVuX21vZHVsZV9zcGVjaWZpZXI6YSg2NjU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X2hvd19UeXBlU2NyaXB0X2xvb2tzX3VwX2FfZmlsZV9mcm9tX2FfZ2l2ZW5fbW9kdWxlX3NwZWNpZmllcl82NjU4XCIsXCJTcGVjaWZ5IGhvdyBUeXBlU2NyaXB0IGxvb2tzIHVwIGEgZmlsZSBmcm9tIGEgZ2l2ZW4gbW9kdWxlIHNwZWNpZmllci5cIiksU2V0X3RoZV9uZXdsaW5lX2NoYXJhY3Rlcl9mb3JfZW1pdHRpbmdfZmlsZXM6YSg2NjU5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTZXRfdGhlX25ld2xpbmVfY2hhcmFjdGVyX2Zvcl9lbWl0dGluZ19maWxlc182NjU5XCIsXCJTZXQgdGhlIG5ld2xpbmUgY2hhcmFjdGVyIGZvciBlbWl0dGluZyBmaWxlcy5cIiksRGlzYWJsZV9lbWl0dGluZ19maWxlc19mcm9tX2FfY29tcGlsYXRpb246YSg2NjYwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlX2VtaXR0aW5nX2ZpbGVzX2Zyb21fYV9jb21waWxhdGlvbl82NjYwXCIsXCJEaXNhYmxlIGVtaXR0aW5nIGZpbGVzIGZyb20gYSBjb21waWxhdGlvbi5cIiksRGlzYWJsZV9nZW5lcmF0aW5nX2N1c3RvbV9oZWxwZXJfZnVuY3Rpb25zX2xpa2VfZXh0ZW5kc19pbl9jb21waWxlZF9vdXRwdXQ6YSg2NjYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlX2dlbmVyYXRpbmdfY3VzdG9tX2hlbHBlcl9mdW5jdGlvbnNfbGlrZV9leHRlbmRzX2luX2NvbXBpbGVkX291dHB1dF82NjYxXCIsXCJEaXNhYmxlIGdlbmVyYXRpbmcgY3VzdG9tIGhlbHBlciBmdW5jdGlvbnMgbGlrZSAnX19leHRlbmRzJyBpbiBjb21waWxlZCBvdXRwdXQuXCIpLERpc2FibGVfZW1pdHRpbmdfZmlsZXNfaWZfYW55X3R5cGVfY2hlY2tpbmdfZXJyb3JzX2FyZV9yZXBvcnRlZDphKDY2NjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpc2FibGVfZW1pdHRpbmdfZmlsZXNfaWZfYW55X3R5cGVfY2hlY2tpbmdfZXJyb3JzX2FyZV9yZXBvcnRlZF82NjYyXCIsXCJEaXNhYmxlIGVtaXR0aW5nIGZpbGVzIGlmIGFueSB0eXBlIGNoZWNraW5nIGVycm9ycyBhcmUgcmVwb3J0ZWQuXCIpLERpc2FibGVfdHJ1bmNhdGluZ190eXBlc19pbl9lcnJvcl9tZXNzYWdlczphKDY2NjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpc2FibGVfdHJ1bmNhdGluZ190eXBlc19pbl9lcnJvcl9tZXNzYWdlc182NjYzXCIsXCJEaXNhYmxlIHRydW5jYXRpbmcgdHlwZXMgaW4gZXJyb3IgbWVzc2FnZXMuXCIpLEVuYWJsZV9lcnJvcl9yZXBvcnRpbmdfZm9yX2ZhbGx0aHJvdWdoX2Nhc2VzX2luX3N3aXRjaF9zdGF0ZW1lbnRzOmEoNjY2NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlX2Vycm9yX3JlcG9ydGluZ19mb3JfZmFsbHRocm91Z2hfY2FzZXNfaW5fc3dpdGNoX3N0YXRlbWVudHNfNjY2NFwiLFwiRW5hYmxlIGVycm9yIHJlcG9ydGluZyBmb3IgZmFsbHRocm91Z2ggY2FzZXMgaW4gc3dpdGNoIHN0YXRlbWVudHMuXCIpLEVuYWJsZV9lcnJvcl9yZXBvcnRpbmdfZm9yX2V4cHJlc3Npb25zX2FuZF9kZWNsYXJhdGlvbnNfd2l0aF9hbl9pbXBsaWVkX2FueV90eXBlOmEoNjY2NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlX2Vycm9yX3JlcG9ydGluZ19mb3JfZXhwcmVzc2lvbnNfYW5kX2RlY2xhcmF0aW9uc193aXRoX2FuX2ltcGxpZWRfYW55X3R5cGVfNjY2NVwiLFwiRW5hYmxlIGVycm9yIHJlcG9ydGluZyBmb3IgZXhwcmVzc2lvbnMgYW5kIGRlY2xhcmF0aW9ucyB3aXRoIGFuIGltcGxpZWQgJ2FueScgdHlwZS5cIiksRW5zdXJlX292ZXJyaWRpbmdfbWVtYmVyc19pbl9kZXJpdmVkX2NsYXNzZXNfYXJlX21hcmtlZF93aXRoX2FuX292ZXJyaWRlX21vZGlmaWVyOmEoNjY2NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5zdXJlX292ZXJyaWRpbmdfbWVtYmVyc19pbl9kZXJpdmVkX2NsYXNzZXNfYXJlX21hcmtlZF93aXRoX2FuX292ZXJyaWRlX21vZGlmaWVyXzY2NjZcIixcIkVuc3VyZSBvdmVycmlkaW5nIG1lbWJlcnMgaW4gZGVyaXZlZCBjbGFzc2VzIGFyZSBtYXJrZWQgd2l0aCBhbiBvdmVycmlkZSBtb2RpZmllci5cIiksRW5hYmxlX2Vycm9yX3JlcG9ydGluZ19mb3JfY29kZXBhdGhzX3RoYXRfZG9fbm90X2V4cGxpY2l0bHlfcmV0dXJuX2luX2FfZnVuY3Rpb246YSg2NjY3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbmFibGVfZXJyb3JfcmVwb3J0aW5nX2Zvcl9jb2RlcGF0aHNfdGhhdF9kb19ub3RfZXhwbGljaXRseV9yZXR1cm5faW5fYV9mdW5jdGlvbl82NjY3XCIsXCJFbmFibGUgZXJyb3IgcmVwb3J0aW5nIGZvciBjb2RlcGF0aHMgdGhhdCBkbyBub3QgZXhwbGljaXRseSByZXR1cm4gaW4gYSBmdW5jdGlvbi5cIiksRW5hYmxlX2Vycm9yX3JlcG9ydGluZ193aGVuX3RoaXNfaXNfZ2l2ZW5fdGhlX3R5cGVfYW55OmEoNjY2OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlX2Vycm9yX3JlcG9ydGluZ193aGVuX3RoaXNfaXNfZ2l2ZW5fdGhlX3R5cGVfYW55XzY2NjhcIixcIkVuYWJsZSBlcnJvciByZXBvcnRpbmcgd2hlbiAndGhpcycgaXMgZ2l2ZW4gdGhlIHR5cGUgJ2FueScuXCIpLERpc2FibGVfYWRkaW5nX3VzZV9zdHJpY3RfZGlyZWN0aXZlc19pbl9lbWl0dGVkX0phdmFTY3JpcHRfZmlsZXM6YSg2NjY5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlX2FkZGluZ191c2Vfc3RyaWN0X2RpcmVjdGl2ZXNfaW5fZW1pdHRlZF9KYXZhU2NyaXB0X2ZpbGVzXzY2NjlcIixcIkRpc2FibGUgYWRkaW5nICd1c2Ugc3RyaWN0JyBkaXJlY3RpdmVzIGluIGVtaXR0ZWQgSmF2YVNjcmlwdCBmaWxlcy5cIiksRGlzYWJsZV9pbmNsdWRpbmdfYW55X2xpYnJhcnlfZmlsZXNfaW5jbHVkaW5nX3RoZV9kZWZhdWx0X2xpYl9kX3RzOmEoNjY3MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV9pbmNsdWRpbmdfYW55X2xpYnJhcnlfZmlsZXNfaW5jbHVkaW5nX3RoZV9kZWZhdWx0X2xpYl9kX3RzXzY2NzBcIixcIkRpc2FibGUgaW5jbHVkaW5nIGFueSBsaWJyYXJ5IGZpbGVzLCBpbmNsdWRpbmcgdGhlIGRlZmF1bHQgbGliLmQudHMuXCIpLEVuZm9yY2VzX3VzaW5nX2luZGV4ZWRfYWNjZXNzb3JzX2Zvcl9rZXlzX2RlY2xhcmVkX3VzaW5nX2FuX2luZGV4ZWRfdHlwZTphKDY2NzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuZm9yY2VzX3VzaW5nX2luZGV4ZWRfYWNjZXNzb3JzX2Zvcl9rZXlzX2RlY2xhcmVkX3VzaW5nX2FuX2luZGV4ZWRfdHlwZV82NjcxXCIsXCJFbmZvcmNlcyB1c2luZyBpbmRleGVkIGFjY2Vzc29ycyBmb3Iga2V5cyBkZWNsYXJlZCB1c2luZyBhbiBpbmRleGVkIHR5cGUuXCIpLERpc2FsbG93X2ltcG9ydF9zX3JlcXVpcmVfc19vcl9yZWZlcmVuY2Vfc19mcm9tX2V4cGFuZGluZ190aGVfbnVtYmVyX29mX2ZpbGVzX1R5cGVTY3JpcHRfc2hvdWxkX2FkZF90b19hX3Byb2plY3Q6YSg2NjcyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhbGxvd19pbXBvcnRfc19yZXF1aXJlX3Nfb3JfcmVmZXJlbmNlX3NfZnJvbV9leHBhbmRpbmdfdGhlX251bWJlcl9vZl9maWxlc19UeXBlU2NyaXB0X3Nob3VsZF9hZGRfXzY2NzJcIixcIkRpc2FsbG93ICdpbXBvcnQncywgJ3JlcXVpcmUncyBvciAnPHJlZmVyZW5jZT4ncyBmcm9tIGV4cGFuZGluZyB0aGUgbnVtYmVyIG9mIGZpbGVzIFR5cGVTY3JpcHQgc2hvdWxkIGFkZCB0byBhIHByb2plY3QuXCIpLERpc2FibGVfc3RyaWN0X2NoZWNraW5nX29mX2dlbmVyaWNfc2lnbmF0dXJlc19pbl9mdW5jdGlvbl90eXBlczphKDY2NzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpc2FibGVfc3RyaWN0X2NoZWNraW5nX29mX2dlbmVyaWNfc2lnbmF0dXJlc19pbl9mdW5jdGlvbl90eXBlc182NjczXCIsXCJEaXNhYmxlIHN0cmljdCBjaGVja2luZyBvZiBnZW5lcmljIHNpZ25hdHVyZXMgaW4gZnVuY3Rpb24gdHlwZXMuXCIpLEFkZF91bmRlZmluZWRfdG9fYV90eXBlX3doZW5fYWNjZXNzZWRfdXNpbmdfYW5faW5kZXg6YSg2Njc0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfdW5kZWZpbmVkX3RvX2FfdHlwZV93aGVuX2FjY2Vzc2VkX3VzaW5nX2FuX2luZGV4XzY2NzRcIixcIkFkZCAndW5kZWZpbmVkJyB0byBhIHR5cGUgd2hlbiBhY2Nlc3NlZCB1c2luZyBhbiBpbmRleC5cIiksRW5hYmxlX2Vycm9yX3JlcG9ydGluZ193aGVuX2xvY2FsX3ZhcmlhYmxlc19hcmVuX3RfcmVhZDphKDY2NzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV9lcnJvcl9yZXBvcnRpbmdfd2hlbl9sb2NhbF92YXJpYWJsZXNfYXJlbl90X3JlYWRfNjY3NVwiLFwiRW5hYmxlIGVycm9yIHJlcG9ydGluZyB3aGVuIGxvY2FsIHZhcmlhYmxlcyBhcmVuJ3QgcmVhZC5cIiksUmFpc2VfYW5fZXJyb3Jfd2hlbl9hX2Z1bmN0aW9uX3BhcmFtZXRlcl9pc25fdF9yZWFkOmEoNjY3NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmFpc2VfYW5fZXJyb3Jfd2hlbl9hX2Z1bmN0aW9uX3BhcmFtZXRlcl9pc25fdF9yZWFkXzY2NzZcIixcIlJhaXNlIGFuIGVycm9yIHdoZW4gYSBmdW5jdGlvbiBwYXJhbWV0ZXIgaXNuJ3QgcmVhZC5cIiksRGVwcmVjYXRlZF9zZXR0aW5nX1VzZV9vdXRGaWxlX2luc3RlYWQ6YSg2Njc3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEZXByZWNhdGVkX3NldHRpbmdfVXNlX291dEZpbGVfaW5zdGVhZF82Njc3XCIsXCJEZXByZWNhdGVkIHNldHRpbmcuIFVzZSAnb3V0RmlsZScgaW5zdGVhZC5cIiksU3BlY2lmeV9hbl9vdXRwdXRfZm9sZGVyX2Zvcl9hbGxfZW1pdHRlZF9maWxlczphKDY2NzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfYW5fb3V0cHV0X2ZvbGRlcl9mb3JfYWxsX2VtaXR0ZWRfZmlsZXNfNjY3OFwiLFwiU3BlY2lmeSBhbiBvdXRwdXQgZm9sZGVyIGZvciBhbGwgZW1pdHRlZCBmaWxlcy5cIiksU3BlY2lmeV9hX2ZpbGVfdGhhdF9idW5kbGVzX2FsbF9vdXRwdXRzX2ludG9fb25lX0phdmFTY3JpcHRfZmlsZV9JZl9kZWNsYXJhdGlvbl9pc190cnVlX2Fsc29fZGVzaWduYXRlc19hX2ZpbGVfdGhhdF9idW5kbGVzX2FsbF9kX3RzX291dHB1dDphKDY2NzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfYV9maWxlX3RoYXRfYnVuZGxlc19hbGxfb3V0cHV0c19pbnRvX29uZV9KYXZhU2NyaXB0X2ZpbGVfSWZfZGVjbGFyYXRpb25faXNfdHJ1ZV9hbHNvX2Rlc2lnbmFfNjY3OVwiLFwiU3BlY2lmeSBhIGZpbGUgdGhhdCBidW5kbGVzIGFsbCBvdXRwdXRzIGludG8gb25lIEphdmFTY3JpcHQgZmlsZS4gSWYgJ2RlY2xhcmF0aW9uJyBpcyB0cnVlLCBhbHNvIGRlc2lnbmF0ZXMgYSBmaWxlIHRoYXQgYnVuZGxlcyBhbGwgLmQudHMgb3V0cHV0LlwiKSxTcGVjaWZ5X2Ffc2V0X29mX2VudHJpZXNfdGhhdF9yZV9tYXBfaW1wb3J0c190b19hZGRpdGlvbmFsX2xvb2t1cF9sb2NhdGlvbnM6YSg2NjgwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X2Ffc2V0X29mX2VudHJpZXNfdGhhdF9yZV9tYXBfaW1wb3J0c190b19hZGRpdGlvbmFsX2xvb2t1cF9sb2NhdGlvbnNfNjY4MFwiLFwiU3BlY2lmeSBhIHNldCBvZiBlbnRyaWVzIHRoYXQgcmUtbWFwIGltcG9ydHMgdG8gYWRkaXRpb25hbCBsb29rdXAgbG9jYXRpb25zLlwiKSxTcGVjaWZ5X2FfbGlzdF9vZl9sYW5ndWFnZV9zZXJ2aWNlX3BsdWdpbnNfdG9faW5jbHVkZTphKDY2ODEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfYV9saXN0X29mX2xhbmd1YWdlX3NlcnZpY2VfcGx1Z2luc190b19pbmNsdWRlXzY2ODFcIixcIlNwZWNpZnkgYSBsaXN0IG9mIGxhbmd1YWdlIHNlcnZpY2UgcGx1Z2lucyB0byBpbmNsdWRlLlwiKSxEaXNhYmxlX2VyYXNpbmdfY29uc3RfZW51bV9kZWNsYXJhdGlvbnNfaW5fZ2VuZXJhdGVkX2NvZGU6YSg2NjgyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlX2VyYXNpbmdfY29uc3RfZW51bV9kZWNsYXJhdGlvbnNfaW5fZ2VuZXJhdGVkX2NvZGVfNjY4MlwiLFwiRGlzYWJsZSBlcmFzaW5nICdjb25zdCBlbnVtJyBkZWNsYXJhdGlvbnMgaW4gZ2VuZXJhdGVkIGNvZGUuXCIpLERpc2FibGVfcmVzb2x2aW5nX3N5bWxpbmtzX3RvX3RoZWlyX3JlYWxwYXRoX1RoaXNfY29ycmVsYXRlc190b190aGVfc2FtZV9mbGFnX2luX25vZGU6YSg2NjgzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlX3Jlc29sdmluZ19zeW1saW5rc190b190aGVpcl9yZWFscGF0aF9UaGlzX2NvcnJlbGF0ZXNfdG9fdGhlX3NhbWVfZmxhZ19pbl9ub2RlXzY2ODNcIixcIkRpc2FibGUgcmVzb2x2aW5nIHN5bWxpbmtzIHRvIHRoZWlyIHJlYWxwYXRoLiBUaGlzIGNvcnJlbGF0ZXMgdG8gdGhlIHNhbWUgZmxhZyBpbiBub2RlLlwiKSxEaXNhYmxlX3dpcGluZ190aGVfY29uc29sZV9pbl93YXRjaF9tb2RlOmEoNjY4NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV93aXBpbmdfdGhlX2NvbnNvbGVfaW5fd2F0Y2hfbW9kZV82Njg0XCIsXCJEaXNhYmxlIHdpcGluZyB0aGUgY29uc29sZSBpbiB3YXRjaCBtb2RlLlwiKSxFbmFibGVfY29sb3JfYW5kX2Zvcm1hdHRpbmdfaW5fVHlwZVNjcmlwdF9zX291dHB1dF90b19tYWtlX2NvbXBpbGVyX2Vycm9yc19lYXNpZXJfdG9fcmVhZDphKDY2ODUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV9jb2xvcl9hbmRfZm9ybWF0dGluZ19pbl9UeXBlU2NyaXB0X3Nfb3V0cHV0X3RvX21ha2VfY29tcGlsZXJfZXJyb3JzX2Vhc2llcl90b19yZWFkXzY2ODVcIixcIkVuYWJsZSBjb2xvciBhbmQgZm9ybWF0dGluZyBpbiBUeXBlU2NyaXB0J3Mgb3V0cHV0IHRvIG1ha2UgY29tcGlsZXIgZXJyb3JzIGVhc2llciB0byByZWFkLlwiKSxTcGVjaWZ5X3RoZV9vYmplY3RfaW52b2tlZF9mb3JfY3JlYXRlRWxlbWVudF9UaGlzX29ubHlfYXBwbGllc193aGVuX3RhcmdldGluZ19yZWFjdF9KU1hfZW1pdDphKDY2ODYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfdGhlX29iamVjdF9pbnZva2VkX2Zvcl9jcmVhdGVFbGVtZW50X1RoaXNfb25seV9hcHBsaWVzX3doZW5fdGFyZ2V0aW5nX3JlYWN0X0pTWF9lbWl0XzY2ODZcIixcIlNwZWNpZnkgdGhlIG9iamVjdCBpbnZva2VkIGZvciAnY3JlYXRlRWxlbWVudCcuIFRoaXMgb25seSBhcHBsaWVzIHdoZW4gdGFyZ2V0aW5nICdyZWFjdCcgSlNYIGVtaXQuXCIpLFNwZWNpZnlfYW5fYXJyYXlfb2Zfb2JqZWN0c190aGF0X3NwZWNpZnlfcGF0aHNfZm9yX3Byb2plY3RzX1VzZWRfaW5fcHJvamVjdF9yZWZlcmVuY2VzOmEoNjY4NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV9hbl9hcnJheV9vZl9vYmplY3RzX3RoYXRfc3BlY2lmeV9wYXRoc19mb3JfcHJvamVjdHNfVXNlZF9pbl9wcm9qZWN0X3JlZmVyZW5jZXNfNjY4N1wiLFwiU3BlY2lmeSBhbiBhcnJheSBvZiBvYmplY3RzIHRoYXQgc3BlY2lmeSBwYXRocyBmb3IgcHJvamVjdHMuIFVzZWQgaW4gcHJvamVjdCByZWZlcmVuY2VzLlwiKSxEaXNhYmxlX2VtaXR0aW5nX2NvbW1lbnRzOmEoNjY4OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGlzYWJsZV9lbWl0dGluZ19jb21tZW50c182Njg4XCIsXCJEaXNhYmxlIGVtaXR0aW5nIGNvbW1lbnRzLlwiKSxFbmFibGVfaW1wb3J0aW5nX2pzb25fZmlsZXM6YSg2Njg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbmFibGVfaW1wb3J0aW5nX2pzb25fZmlsZXNfNjY4OVwiLFwiRW5hYmxlIGltcG9ydGluZyAuanNvbiBmaWxlcy5cIiksU3BlY2lmeV90aGVfcm9vdF9mb2xkZXJfd2l0aGluX3lvdXJfc291cmNlX2ZpbGVzOmEoNjY5MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU3BlY2lmeV90aGVfcm9vdF9mb2xkZXJfd2l0aGluX3lvdXJfc291cmNlX2ZpbGVzXzY2OTBcIixcIlNwZWNpZnkgdGhlIHJvb3QgZm9sZGVyIHdpdGhpbiB5b3VyIHNvdXJjZSBmaWxlcy5cIiksQWxsb3dfbXVsdGlwbGVfZm9sZGVyc190b19iZV90cmVhdGVkX2FzX29uZV93aGVuX3Jlc29sdmluZ19tb2R1bGVzOmEoNjY5MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWxsb3dfbXVsdGlwbGVfZm9sZGVyc190b19iZV90cmVhdGVkX2FzX29uZV93aGVuX3Jlc29sdmluZ19tb2R1bGVzXzY2OTFcIixcIkFsbG93IG11bHRpcGxlIGZvbGRlcnMgdG8gYmUgdHJlYXRlZCBhcyBvbmUgd2hlbiByZXNvbHZpbmcgbW9kdWxlcy5cIiksU2tpcF90eXBlX2NoZWNraW5nX2RfdHNfZmlsZXNfdGhhdF9hcmVfaW5jbHVkZWRfd2l0aF9UeXBlU2NyaXB0OmEoNjY5MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU2tpcF90eXBlX2NoZWNraW5nX2RfdHNfZmlsZXNfdGhhdF9hcmVfaW5jbHVkZWRfd2l0aF9UeXBlU2NyaXB0XzY2OTJcIixcIlNraXAgdHlwZSBjaGVja2luZyAuZC50cyBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCB3aXRoIFR5cGVTY3JpcHQuXCIpLFNraXBfdHlwZV9jaGVja2luZ19hbGxfZF90c19maWxlczphKDY2OTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNraXBfdHlwZV9jaGVja2luZ19hbGxfZF90c19maWxlc182NjkzXCIsXCJTa2lwIHR5cGUgY2hlY2tpbmcgYWxsIC5kLnRzIGZpbGVzLlwiKSxDcmVhdGVfc291cmNlX21hcF9maWxlc19mb3JfZW1pdHRlZF9KYXZhU2NyaXB0X2ZpbGVzOmEoNjY5NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ3JlYXRlX3NvdXJjZV9tYXBfZmlsZXNfZm9yX2VtaXR0ZWRfSmF2YVNjcmlwdF9maWxlc182Njk0XCIsXCJDcmVhdGUgc291cmNlIG1hcCBmaWxlcyBmb3IgZW1pdHRlZCBKYXZhU2NyaXB0IGZpbGVzLlwiKSxTcGVjaWZ5X3RoZV9yb290X3BhdGhfZm9yX2RlYnVnZ2Vyc190b19maW5kX3RoZV9yZWZlcmVuY2Vfc291cmNlX2NvZGU6YSg2Njk1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X3RoZV9yb290X3BhdGhfZm9yX2RlYnVnZ2Vyc190b19maW5kX3RoZV9yZWZlcmVuY2Vfc291cmNlX2NvZGVfNjY5NVwiLFwiU3BlY2lmeSB0aGUgcm9vdCBwYXRoIGZvciBkZWJ1Z2dlcnMgdG8gZmluZCB0aGUgcmVmZXJlbmNlIHNvdXJjZSBjb2RlLlwiKSxDaGVja190aGF0X3RoZV9hcmd1bWVudHNfZm9yX2JpbmRfY2FsbF9hbmRfYXBwbHlfbWV0aG9kc19tYXRjaF90aGVfb3JpZ2luYWxfZnVuY3Rpb246YSg2Njk3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDaGVja190aGF0X3RoZV9hcmd1bWVudHNfZm9yX2JpbmRfY2FsbF9hbmRfYXBwbHlfbWV0aG9kc19tYXRjaF90aGVfb3JpZ2luYWxfZnVuY3Rpb25fNjY5N1wiLFwiQ2hlY2sgdGhhdCB0aGUgYXJndW1lbnRzIGZvciAnYmluZCcsICdjYWxsJywgYW5kICdhcHBseScgbWV0aG9kcyBtYXRjaCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXCIpLFdoZW5fYXNzaWduaW5nX2Z1bmN0aW9uc19jaGVja190b19lbnN1cmVfcGFyYW1ldGVyc19hbmRfdGhlX3JldHVybl92YWx1ZXNfYXJlX3N1YnR5cGVfY29tcGF0aWJsZTphKDY2OTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIldoZW5fYXNzaWduaW5nX2Z1bmN0aW9uc19jaGVja190b19lbnN1cmVfcGFyYW1ldGVyc19hbmRfdGhlX3JldHVybl92YWx1ZXNfYXJlX3N1YnR5cGVfY29tcGF0aWJsZV82Njk4XCIsXCJXaGVuIGFzc2lnbmluZyBmdW5jdGlvbnMsIGNoZWNrIHRvIGVuc3VyZSBwYXJhbWV0ZXJzIGFuZCB0aGUgcmV0dXJuIHZhbHVlcyBhcmUgc3VidHlwZS1jb21wYXRpYmxlLlwiKSxXaGVuX3R5cGVfY2hlY2tpbmdfdGFrZV9pbnRvX2FjY291bnRfbnVsbF9hbmRfdW5kZWZpbmVkOmEoNjY5OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiV2hlbl90eXBlX2NoZWNraW5nX3Rha2VfaW50b19hY2NvdW50X251bGxfYW5kX3VuZGVmaW5lZF82Njk5XCIsXCJXaGVuIHR5cGUgY2hlY2tpbmcsIHRha2UgaW50byBhY2NvdW50ICdudWxsJyBhbmQgJ3VuZGVmaW5lZCcuXCIpLENoZWNrX2Zvcl9jbGFzc19wcm9wZXJ0aWVzX3RoYXRfYXJlX2RlY2xhcmVkX2J1dF9ub3Rfc2V0X2luX3RoZV9jb25zdHJ1Y3RvcjphKDY3MDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNoZWNrX2Zvcl9jbGFzc19wcm9wZXJ0aWVzX3RoYXRfYXJlX2RlY2xhcmVkX2J1dF9ub3Rfc2V0X2luX3RoZV9jb25zdHJ1Y3Rvcl82NzAwXCIsXCJDaGVjayBmb3IgY2xhc3MgcHJvcGVydGllcyB0aGF0IGFyZSBkZWNsYXJlZCBidXQgbm90IHNldCBpbiB0aGUgY29uc3RydWN0b3IuXCIpLERpc2FibGVfZW1pdHRpbmdfZGVjbGFyYXRpb25zX3RoYXRfaGF2ZV9pbnRlcm5hbF9pbl90aGVpcl9KU0RvY19jb21tZW50czphKDY3MDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpc2FibGVfZW1pdHRpbmdfZGVjbGFyYXRpb25zX3RoYXRfaGF2ZV9pbnRlcm5hbF9pbl90aGVpcl9KU0RvY19jb21tZW50c182NzAxXCIsXCJEaXNhYmxlIGVtaXR0aW5nIGRlY2xhcmF0aW9ucyB0aGF0IGhhdmUgJ0BpbnRlcm5hbCcgaW4gdGhlaXIgSlNEb2MgY29tbWVudHMuXCIpLERpc2FibGVfcmVwb3J0aW5nX29mX2V4Y2Vzc19wcm9wZXJ0eV9lcnJvcnNfZHVyaW5nX3RoZV9jcmVhdGlvbl9vZl9vYmplY3RfbGl0ZXJhbHM6YSg2NzAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEaXNhYmxlX3JlcG9ydGluZ19vZl9leGNlc3NfcHJvcGVydHlfZXJyb3JzX2R1cmluZ190aGVfY3JlYXRpb25fb2Zfb2JqZWN0X2xpdGVyYWxzXzY3MDJcIixcIkRpc2FibGUgcmVwb3J0aW5nIG9mIGV4Y2VzcyBwcm9wZXJ0eSBlcnJvcnMgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBvYmplY3QgbGl0ZXJhbHMuXCIpLFN1cHByZXNzX25vSW1wbGljaXRBbnlfZXJyb3JzX3doZW5faW5kZXhpbmdfb2JqZWN0c190aGF0X2xhY2tfaW5kZXhfc2lnbmF0dXJlczphKDY3MDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlN1cHByZXNzX25vSW1wbGljaXRBbnlfZXJyb3JzX3doZW5faW5kZXhpbmdfb2JqZWN0c190aGF0X2xhY2tfaW5kZXhfc2lnbmF0dXJlc182NzAzXCIsXCJTdXBwcmVzcyAnbm9JbXBsaWNpdEFueScgZXJyb3JzIHdoZW4gaW5kZXhpbmcgb2JqZWN0cyB0aGF0IGxhY2sgaW5kZXggc2lnbmF0dXJlcy5cIiksU3luY2hyb25vdXNseV9jYWxsX2NhbGxiYWNrc19hbmRfdXBkYXRlX3RoZV9zdGF0ZV9vZl9kaXJlY3Rvcnlfd2F0Y2hlcnNfb25fcGxhdGZvcm1zX3RoYXRfZG9uX3Rfc3VwcG9ydF9yZWN1cnNpdmVfd2F0Y2hpbmdfbmF0aXZlbHk6YSg2NzA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTeW5jaHJvbm91c2x5X2NhbGxfY2FsbGJhY2tzX2FuZF91cGRhdGVfdGhlX3N0YXRlX29mX2RpcmVjdG9yeV93YXRjaGVyc19vbl9wbGF0Zm9ybXNfdGhhdF9kb25fdF9zdXBwXzY3MDRcIixcIlN5bmNocm9ub3VzbHkgY2FsbCBjYWxsYmFja3MgYW5kIHVwZGF0ZSB0aGUgc3RhdGUgb2YgZGlyZWN0b3J5IHdhdGNoZXJzIG9uIHBsYXRmb3JtcyB0aGF0IGRvbmB0IHN1cHBvcnQgcmVjdXJzaXZlIHdhdGNoaW5nIG5hdGl2ZWx5LlwiKSxTZXRfdGhlX0phdmFTY3JpcHRfbGFuZ3VhZ2VfdmVyc2lvbl9mb3JfZW1pdHRlZF9KYXZhU2NyaXB0X2FuZF9pbmNsdWRlX2NvbXBhdGlibGVfbGlicmFyeV9kZWNsYXJhdGlvbnM6YSg2NzA1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTZXRfdGhlX0phdmFTY3JpcHRfbGFuZ3VhZ2VfdmVyc2lvbl9mb3JfZW1pdHRlZF9KYXZhU2NyaXB0X2FuZF9pbmNsdWRlX2NvbXBhdGlibGVfbGlicmFyeV9kZWNsYXJhdGlvXzY3MDVcIixcIlNldCB0aGUgSmF2YVNjcmlwdCBsYW5ndWFnZSB2ZXJzaW9uIGZvciBlbWl0dGVkIEphdmFTY3JpcHQgYW5kIGluY2x1ZGUgY29tcGF0aWJsZSBsaWJyYXJ5IGRlY2xhcmF0aW9ucy5cIiksTG9nX3BhdGhzX3VzZWRfZHVyaW5nX3RoZV9tb2R1bGVSZXNvbHV0aW9uX3Byb2Nlc3M6YSg2NzA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJMb2dfcGF0aHNfdXNlZF9kdXJpbmdfdGhlX21vZHVsZVJlc29sdXRpb25fcHJvY2Vzc182NzA2XCIsXCJMb2cgcGF0aHMgdXNlZCBkdXJpbmcgdGhlICdtb2R1bGVSZXNvbHV0aW9uJyBwcm9jZXNzLlwiKSxTcGVjaWZ5X3RoZV9wYXRoX3RvX3RzYnVpbGRpbmZvX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uX2ZpbGU6YSg2NzA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X3RoZV9wYXRoX3RvX3RzYnVpbGRpbmZvX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uX2ZpbGVfNjcwN1wiLFwiU3BlY2lmeSB0aGUgcGF0aCB0byAudHNidWlsZGluZm8gaW5jcmVtZW50YWwgY29tcGlsYXRpb24gZmlsZS5cIiksU3BlY2lmeV9vcHRpb25zX2Zvcl9hdXRvbWF0aWNfYWNxdWlzaXRpb25fb2ZfZGVjbGFyYXRpb25fZmlsZXM6YSg2NzA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X29wdGlvbnNfZm9yX2F1dG9tYXRpY19hY3F1aXNpdGlvbl9vZl9kZWNsYXJhdGlvbl9maWxlc182NzA5XCIsXCJTcGVjaWZ5IG9wdGlvbnMgZm9yIGF1dG9tYXRpYyBhY3F1aXNpdGlvbiBvZiBkZWNsYXJhdGlvbiBmaWxlcy5cIiksU3BlY2lmeV9tdWx0aXBsZV9mb2xkZXJzX3RoYXRfYWN0X2xpa2VfU2xhc2hub2RlX21vZHVsZXNfU2xhc2hfdHlwZXM6YSg2NzEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X211bHRpcGxlX2ZvbGRlcnNfdGhhdF9hY3RfbGlrZV9TbGFzaG5vZGVfbW9kdWxlc19TbGFzaF90eXBlc182NzEwXCIsXCJTcGVjaWZ5IG11bHRpcGxlIGZvbGRlcnMgdGhhdCBhY3QgbGlrZSAnLi9ub2RlX21vZHVsZXMvQHR5cGVzJy5cIiksU3BlY2lmeV90eXBlX3BhY2thZ2VfbmFtZXNfdG9fYmVfaW5jbHVkZWRfd2l0aG91dF9iZWluZ19yZWZlcmVuY2VkX2luX2Ffc291cmNlX2ZpbGU6YSg2NzExLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X3R5cGVfcGFja2FnZV9uYW1lc190b19iZV9pbmNsdWRlZF93aXRob3V0X2JlaW5nX3JlZmVyZW5jZWRfaW5fYV9zb3VyY2VfZmlsZV82NzExXCIsXCJTcGVjaWZ5IHR5cGUgcGFja2FnZSBuYW1lcyB0byBiZSBpbmNsdWRlZCB3aXRob3V0IGJlaW5nIHJlZmVyZW5jZWQgaW4gYSBzb3VyY2UgZmlsZS5cIiksRW1pdF9FQ01BU2NyaXB0X3N0YW5kYXJkX2NvbXBsaWFudF9jbGFzc19maWVsZHM6YSg2NzEyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbWl0X0VDTUFTY3JpcHRfc3RhbmRhcmRfY29tcGxpYW50X2NsYXNzX2ZpZWxkc182NzEyXCIsXCJFbWl0IEVDTUFTY3JpcHQtc3RhbmRhcmQtY29tcGxpYW50IGNsYXNzIGZpZWxkcy5cIiksRW5hYmxlX3ZlcmJvc2VfbG9nZ2luZzphKDY3MTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkVuYWJsZV92ZXJib3NlX2xvZ2dpbmdfNjcxM1wiLFwiRW5hYmxlIHZlcmJvc2UgbG9nZ2luZy5cIiksU3BlY2lmeV9ob3dfZGlyZWN0b3JpZXNfYXJlX3dhdGNoZWRfb25fc3lzdGVtc190aGF0X2xhY2tfcmVjdXJzaXZlX2ZpbGVfd2F0Y2hpbmdfZnVuY3Rpb25hbGl0eTphKDY3MTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfaG93X2RpcmVjdG9yaWVzX2FyZV93YXRjaGVkX29uX3N5c3RlbXNfdGhhdF9sYWNrX3JlY3Vyc2l2ZV9maWxlX3dhdGNoaW5nX2Z1bmN0aW9uYWxpdHlfNjcxNFwiLFwiU3BlY2lmeSBob3cgZGlyZWN0b3JpZXMgYXJlIHdhdGNoZWQgb24gc3lzdGVtcyB0aGF0IGxhY2sgcmVjdXJzaXZlIGZpbGUtd2F0Y2hpbmcgZnVuY3Rpb25hbGl0eS5cIiksU3BlY2lmeV9ob3dfdGhlX1R5cGVTY3JpcHRfd2F0Y2hfbW9kZV93b3JrczphKDY3MTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfaG93X3RoZV9UeXBlU2NyaXB0X3dhdGNoX21vZGVfd29ya3NfNjcxNVwiLFwiU3BlY2lmeSBob3cgdGhlIFR5cGVTY3JpcHQgd2F0Y2ggbW9kZSB3b3Jrcy5cIiksUmVxdWlyZV91bmRlY2xhcmVkX3Byb3BlcnRpZXNfZnJvbV9pbmRleF9zaWduYXR1cmVzX3RvX3VzZV9lbGVtZW50X2FjY2Vzc2VzOmEoNjcxNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVxdWlyZV91bmRlY2xhcmVkX3Byb3BlcnRpZXNfZnJvbV9pbmRleF9zaWduYXR1cmVzX3RvX3VzZV9lbGVtZW50X2FjY2Vzc2VzXzY3MTdcIixcIlJlcXVpcmUgdW5kZWNsYXJlZCBwcm9wZXJ0aWVzIGZyb20gaW5kZXggc2lnbmF0dXJlcyB0byB1c2UgZWxlbWVudCBhY2Nlc3Nlcy5cIiksU3BlY2lmeV9lbWl0X1NsYXNoY2hlY2tpbmdfYmVoYXZpb3JfZm9yX2ltcG9ydHNfdGhhdF9hcmVfb25seV91c2VkX2Zvcl90eXBlczphKDY3MTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNwZWNpZnlfZW1pdF9TbGFzaGNoZWNraW5nX2JlaGF2aW9yX2Zvcl9pbXBvcnRzX3RoYXRfYXJlX29ubHlfdXNlZF9mb3JfdHlwZXNfNjcxOFwiLFwiU3BlY2lmeSBlbWl0L2NoZWNraW5nIGJlaGF2aW9yIGZvciBpbXBvcnRzIHRoYXQgYXJlIG9ubHkgdXNlZCBmb3IgdHlwZXMuXCIpLERlZmF1bHRfY2F0Y2hfY2xhdXNlX3ZhcmlhYmxlc19hc191bmtub3duX2luc3RlYWRfb2ZfYW55OmEoNjgwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGVmYXVsdF9jYXRjaF9jbGF1c2VfdmFyaWFibGVzX2FzX3Vua25vd25faW5zdGVhZF9vZl9hbnlfNjgwM1wiLFwiRGVmYXVsdCBjYXRjaCBjbGF1c2UgdmFyaWFibGVzIGFzICd1bmtub3duJyBpbnN0ZWFkIG9mICdhbnknLlwiKSxvbmVfb2ZfQ29sb246YSg2OTAwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJvbmVfb2ZfQ29sb25fNjkwMFwiLFwib25lIG9mOlwiKSxvbmVfb3JfbW9yZV9Db2xvbjphKDY5MDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIm9uZV9vcl9tb3JlX0NvbG9uXzY5MDFcIixcIm9uZSBvciBtb3JlOlwiKSx0eXBlX0NvbG9uOmEoNjkwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwidHlwZV9Db2xvbl82OTAyXCIsXCJ0eXBlOlwiKSxkZWZhdWx0X0NvbG9uOmEoNjkwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiZGVmYXVsdF9Db2xvbl82OTAzXCIsXCJkZWZhdWx0OlwiKSxtb2R1bGVfc3lzdGVtX29yX2VzTW9kdWxlSW50ZXJvcDphKDY5MDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIm1vZHVsZV9zeXN0ZW1fb3JfZXNNb2R1bGVJbnRlcm9wXzY5MDRcIiwnbW9kdWxlID09PSBcInN5c3RlbVwiIG9yIGVzTW9kdWxlSW50ZXJvcCcpLGZhbHNlX3VubGVzc19zdHJpY3RfaXNfc2V0OmEoNjkwNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiZmFsc2VfdW5sZXNzX3N0cmljdF9pc19zZXRfNjkwNVwiLFwiYGZhbHNlYCwgdW5sZXNzIGBzdHJpY3RgIGlzIHNldFwiKSxmYWxzZV91bmxlc3NfY29tcG9zaXRlX2lzX3NldDphKDY5MDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcImZhbHNlX3VubGVzc19jb21wb3NpdGVfaXNfc2V0XzY5MDZcIixcImBmYWxzZWAsIHVubGVzcyBgY29tcG9zaXRlYCBpcyBzZXRcIiksbm9kZV9tb2R1bGVzX2Jvd2VyX2NvbXBvbmVudHNfanNwbV9wYWNrYWdlc19wbHVzX3RoZV92YWx1ZV9vZl9vdXREaXJfaWZfb25lX2lzX3NwZWNpZmllZDphKDY5MDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIm5vZGVfbW9kdWxlc19ib3dlcl9jb21wb25lbnRzX2pzcG1fcGFja2FnZXNfcGx1c190aGVfdmFsdWVfb2Zfb3V0RGlyX2lmX29uZV9pc19zcGVjaWZpZWRfNjkwN1wiLCdgW1wibm9kZV9tb2R1bGVzXCIsIFwiYm93ZXJfY29tcG9uZW50c1wiLCBcImpzcG1fcGFja2FnZXNcIl1gLCBwbHVzIHRoZSB2YWx1ZSBvZiBgb3V0RGlyYCBpZiBvbmUgaXMgc3BlY2lmaWVkLicpLGlmX2ZpbGVzX2lzX3NwZWNpZmllZF9vdGhlcndpc2VfQXN0ZXJpc2tfQXN0ZXJpc2tfU2xhc2hfQXN0ZXJpc2s6YSg2OTA4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJpZl9maWxlc19pc19zcGVjaWZpZWRfb3RoZXJ3aXNlX0FzdGVyaXNrX0FzdGVyaXNrX1NsYXNoX0FzdGVyaXNrXzY5MDhcIiwnYFtdYCBpZiBgZmlsZXNgIGlzIHNwZWNpZmllZCwgb3RoZXJ3aXNlIGBbXCIqKi8qXCJdYCcpLHRydWVfaWZfY29tcG9zaXRlX2ZhbHNlX290aGVyd2lzZTphKDY5MDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcInRydWVfaWZfY29tcG9zaXRlX2ZhbHNlX290aGVyd2lzZV82OTA5XCIsXCJgdHJ1ZWAgaWYgYGNvbXBvc2l0ZWAsIGBmYWxzZWAgb3RoZXJ3aXNlXCIpLG1vZHVsZV9BTURfb3JfVU1EX29yX1N5c3RlbV9vcl9FUzZfdGhlbl9DbGFzc2ljX090aGVyd2lzZV9Ob2RlOmEoNjkwMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIm1vZHVsZV9BTURfb3JfVU1EX29yX1N5c3RlbV9vcl9FUzZfdGhlbl9DbGFzc2ljX090aGVyd2lzZV9Ob2RlXzY5MDEwXCIsXCJtb2R1bGUgPT09IGBBTURgIG9yIGBVTURgIG9yIGBTeXN0ZW1gIG9yIGBFUzZgLCB0aGVuIGBDbGFzc2ljYCwgT3RoZXJ3aXNlIGBOb2RlYFwiKSxDb21wdXRlZF9mcm9tX3RoZV9saXN0X29mX2lucHV0X2ZpbGVzOmEoNjkxMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29tcHV0ZWRfZnJvbV90aGVfbGlzdF9vZl9pbnB1dF9maWxlc182OTExXCIsXCJDb21wdXRlZCBmcm9tIHRoZSBsaXN0IG9mIGlucHV0IGZpbGVzXCIpLFBsYXRmb3JtX3NwZWNpZmljOmEoNjkxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUGxhdGZvcm1fc3BlY2lmaWNfNjkxMlwiLFwiUGxhdGZvcm0gc3BlY2lmaWNcIiksWW91X2Nhbl9sZWFybl9hYm91dF9hbGxfb2ZfdGhlX2NvbXBpbGVyX29wdGlvbnNfYXRfMDphKDY5MTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIllvdV9jYW5fbGVhcm5fYWJvdXRfYWxsX29mX3RoZV9jb21waWxlcl9vcHRpb25zX2F0XzBfNjkxM1wiLFwiWW91IGNhbiBsZWFybiBhYm91dCBhbGwgb2YgdGhlIGNvbXBpbGVyIG9wdGlvbnMgYXQgezB9XCIpLEluY2x1ZGluZ193YXRjaF93X3dpbGxfc3RhcnRfd2F0Y2hpbmdfdGhlX2N1cnJlbnRfcHJvamVjdF9mb3JfdGhlX2ZpbGVfY2hhbmdlc19PbmNlX3NldF95b3VfY2FuX2NvbmZpZ193YXRjaF9tb2RlX3dpdGhfQ29sb246YSg2OTE0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbmNsdWRpbmdfd2F0Y2hfd193aWxsX3N0YXJ0X3dhdGNoaW5nX3RoZV9jdXJyZW50X3Byb2plY3RfZm9yX3RoZV9maWxlX2NoYW5nZXNfT25jZV9zZXRfeW91X2Nhbl9jb25mXzY5MTRcIixcIkluY2x1ZGluZyAtLXdhdGNoLCAtdyB3aWxsIHN0YXJ0IHdhdGNoaW5nIHRoZSBjdXJyZW50IHByb2plY3QgZm9yIHRoZSBmaWxlIGNoYW5nZXMuIE9uY2Ugc2V0LCB5b3UgY2FuIGNvbmZpZyB3YXRjaCBtb2RlIHdpdGg6XCIpLFVzaW5nX2J1aWxkX2Jfd2lsbF9tYWtlX3RzY19iZWhhdmVfbW9yZV9saWtlX2FfYnVpbGRfb3JjaGVzdHJhdG9yX3RoYW5fYV9jb21waWxlcl9UaGlzX2lzX3VzZWRfdG9fdHJpZ2dlcl9idWlsZGluZ19jb21wb3NpdGVfcHJvamVjdHNfd2hpY2hfeW91X2Nhbl9sZWFybl9tb3JlX2Fib3V0X2F0XzA6YSg2OTE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJVc2luZ19idWlsZF9iX3dpbGxfbWFrZV90c2NfYmVoYXZlX21vcmVfbGlrZV9hX2J1aWxkX29yY2hlc3RyYXRvcl90aGFuX2FfY29tcGlsZXJfVGhpc19pc191c2VkX3RvX3RyXzY5MTVcIixcIlVzaW5nIC0tYnVpbGQsIC1iIHdpbGwgbWFrZSB0c2MgYmVoYXZlIG1vcmUgbGlrZSBhIGJ1aWxkIG9yY2hlc3RyYXRvciB0aGFuIGEgY29tcGlsZXIuIFRoaXMgaXMgdXNlZCB0byB0cmlnZ2VyIGJ1aWxkaW5nIGNvbXBvc2l0ZSBwcm9qZWN0cyB3aGljaCB5b3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgYXQgezB9XCIpLENPTU1PTl9DT01NQU5EUzphKDY5MTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNPTU1PTl9DT01NQU5EU182OTE2XCIsXCJDT01NT04gQ09NTUFORFNcIiksQUxMX0NPTVBJTEVSX09QVElPTlM6YSg2OTE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBTExfQ09NUElMRVJfT1BUSU9OU182OTE3XCIsXCJBTEwgQ09NUElMRVIgT1BUSU9OU1wiKSxXQVRDSF9PUFRJT05TOmEoNjkxOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiV0FUQ0hfT1BUSU9OU182OTE4XCIsXCJXQVRDSCBPUFRJT05TXCIpLEJVSUxEX09QVElPTlM6YSg2OTE5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJCVUlMRF9PUFRJT05TXzY5MTlcIixcIkJVSUxEIE9QVElPTlNcIiksQ09NTU9OX0NPTVBJTEVSX09QVElPTlM6YSg2OTIwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDT01NT05fQ09NUElMRVJfT1BUSU9OU182OTIwXCIsXCJDT01NT04gQ09NUElMRVIgT1BUSU9OU1wiKSxDT01NQU5EX0xJTkVfRkxBR1M6YSg2OTIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDT01NQU5EX0xJTkVfRkxBR1NfNjkyMVwiLFwiQ09NTUFORCBMSU5FIEZMQUdTXCIpLHRzY19Db2xvbl9UaGVfVHlwZVNjcmlwdF9Db21waWxlcjphKDY5MjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcInRzY19Db2xvbl9UaGVfVHlwZVNjcmlwdF9Db21waWxlcl82OTIyXCIsXCJ0c2M6IFRoZSBUeXBlU2NyaXB0IENvbXBpbGVyXCIpLENvbXBpbGVzX3RoZV9jdXJyZW50X3Byb2plY3RfdHNjb25maWdfanNvbl9pbl90aGVfd29ya2luZ19kaXJlY3Rvcnk6YSg2OTIzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb21waWxlc190aGVfY3VycmVudF9wcm9qZWN0X3RzY29uZmlnX2pzb25faW5fdGhlX3dvcmtpbmdfZGlyZWN0b3J5XzY5MjNcIixcIkNvbXBpbGVzIHRoZSBjdXJyZW50IHByb2plY3QgKHRzY29uZmlnLmpzb24gaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LilcIiksSWdub3JpbmdfdHNjb25maWdfanNvbl9jb21waWxlc190aGVfc3BlY2lmaWVkX2ZpbGVzX3dpdGhfZGVmYXVsdF9jb21waWxlcl9vcHRpb25zOmEoNjkyNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSWdub3JpbmdfdHNjb25maWdfanNvbl9jb21waWxlc190aGVfc3BlY2lmaWVkX2ZpbGVzX3dpdGhfZGVmYXVsdF9jb21waWxlcl9vcHRpb25zXzY5MjRcIixcIklnbm9yaW5nIHRzY29uZmlnLmpzb24sIGNvbXBpbGVzIHRoZSBzcGVjaWZpZWQgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbXBpbGVyIG9wdGlvbnMuXCIpLEJ1aWxkX2FfY29tcG9zaXRlX3Byb2plY3RfaW5fdGhlX3dvcmtpbmdfZGlyZWN0b3J5OmEoNjkyNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQnVpbGRfYV9jb21wb3NpdGVfcHJvamVjdF9pbl90aGVfd29ya2luZ19kaXJlY3RvcnlfNjkyNVwiLFwiQnVpbGQgYSBjb21wb3NpdGUgcHJvamVjdCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXCIpLENyZWF0ZXNfYV90c2NvbmZpZ19qc29uX3dpdGhfdGhlX3JlY29tbWVuZGVkX3NldHRpbmdzX2luX3RoZV93b3JraW5nX2RpcmVjdG9yeTphKDY5MjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNyZWF0ZXNfYV90c2NvbmZpZ19qc29uX3dpdGhfdGhlX3JlY29tbWVuZGVkX3NldHRpbmdzX2luX3RoZV93b3JraW5nX2RpcmVjdG9yeV82OTI2XCIsXCJDcmVhdGVzIGEgdHNjb25maWcuanNvbiB3aXRoIHRoZSByZWNvbW1lbmRlZCBzZXR0aW5ncyBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXCIpLENvbXBpbGVzX3RoZV9UeXBlU2NyaXB0X3Byb2plY3RfbG9jYXRlZF9hdF90aGVfc3BlY2lmaWVkX3BhdGg6YSg2OTI3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb21waWxlc190aGVfVHlwZVNjcmlwdF9wcm9qZWN0X2xvY2F0ZWRfYXRfdGhlX3NwZWNpZmllZF9wYXRoXzY5MjdcIixcIkNvbXBpbGVzIHRoZSBUeXBlU2NyaXB0IHByb2plY3QgbG9jYXRlZCBhdCB0aGUgc3BlY2lmaWVkIHBhdGguXCIpLEFuX2V4cGFuZGVkX3ZlcnNpb25fb2ZfdGhpc19pbmZvcm1hdGlvbl9zaG93aW5nX2FsbF9wb3NzaWJsZV9jb21waWxlcl9vcHRpb25zOmEoNjkyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQW5fZXhwYW5kZWRfdmVyc2lvbl9vZl90aGlzX2luZm9ybWF0aW9uX3Nob3dpbmdfYWxsX3Bvc3NpYmxlX2NvbXBpbGVyX29wdGlvbnNfNjkyOFwiLFwiQW4gZXhwYW5kZWQgdmVyc2lvbiBvZiB0aGlzIGluZm9ybWF0aW9uLCBzaG93aW5nIGFsbCBwb3NzaWJsZSBjb21waWxlciBvcHRpb25zXCIpLENvbXBpbGVzX3RoZV9jdXJyZW50X3Byb2plY3Rfd2l0aF9hZGRpdGlvbmFsX3NldHRpbmdzOmEoNjkyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29tcGlsZXNfdGhlX2N1cnJlbnRfcHJvamVjdF93aXRoX2FkZGl0aW9uYWxfc2V0dGluZ3NfNjkyOVwiLFwiQ29tcGlsZXMgdGhlIGN1cnJlbnQgcHJvamVjdCwgd2l0aCBhZGRpdGlvbmFsIHNldHRpbmdzLlwiKSx0cnVlX2Zvcl9FUzIwMjJfYW5kX2Fib3ZlX2luY2x1ZGluZ19FU05leHQ6YSg2OTMwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJ0cnVlX2Zvcl9FUzIwMjJfYW5kX2Fib3ZlX2luY2x1ZGluZ19FU05leHRfNjkzMFwiLFwiYHRydWVgIGZvciBFUzIwMjIgYW5kIGFib3ZlLCBpbmNsdWRpbmcgRVNOZXh0LlwiKSxMaXN0X29mX2ZpbGVfbmFtZV9zdWZmaXhlc190b19zZWFyY2hfd2hlbl9yZXNvbHZpbmdfYV9tb2R1bGU6YSg2OTMxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTGlzdF9vZl9maWxlX25hbWVfc3VmZml4ZXNfdG9fc2VhcmNoX3doZW5fcmVzb2x2aW5nX2FfbW9kdWxlXzY5MzFcIixcIkxpc3Qgb2YgZmlsZSBuYW1lIHN1ZmZpeGVzIHRvIHNlYXJjaCB3aGVuIHJlc29sdmluZyBhIG1vZHVsZS5cIiksVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGU6YSg3MDA1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGVfNzAwNVwiLFwiVmFyaWFibGUgJ3swfScgaW1wbGljaXRseSBoYXMgYW4gJ3sxfScgdHlwZS5cIiksUGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlOmEoNzAwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlBhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV83MDA2XCIsXCJQYXJhbWV0ZXIgJ3swfScgaW1wbGljaXRseSBoYXMgYW4gJ3sxfScgdHlwZS5cIiksTWVtYmVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlOmEoNzAwOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1lbWJlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV83MDA4XCIsXCJNZW1iZXIgJ3swfScgaW1wbGljaXRseSBoYXMgYW4gJ3sxfScgdHlwZS5cIiksbmV3X2V4cHJlc3Npb25fd2hvc2VfdGFyZ2V0X2xhY2tzX2FfY29uc3RydWN0X3NpZ25hdHVyZV9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZTphKDcwMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJuZXdfZXhwcmVzc2lvbl93aG9zZV90YXJnZXRfbGFja3NfYV9jb25zdHJ1Y3Rfc2lnbmF0dXJlX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlXzcwMDlcIixcIiduZXcnIGV4cHJlc3Npb24sIHdob3NlIHRhcmdldCBsYWNrcyBhIGNvbnN0cnVjdCBzaWduYXR1cmUsIGltcGxpY2l0bHkgaGFzIGFuICdhbnknIHR5cGUuXCIpLF8wX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMV9yZXR1cm5fdHlwZTphKDcwMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuXzFfcmV0dXJuX3R5cGVfNzAxMFwiLFwiJ3swfScsIHdoaWNoIGxhY2tzIHJldHVybi10eXBlIGFubm90YXRpb24sIGltcGxpY2l0bHkgaGFzIGFuICd7MX0nIHJldHVybiB0eXBlLlwiKSxGdW5jdGlvbl9leHByZXNzaW9uX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMF9yZXR1cm5fdHlwZTphKDcwMTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGdW5jdGlvbl9leHByZXNzaW9uX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMF9yZXR1cm5fdHlwZV83MDExXCIsXCJGdW5jdGlvbiBleHByZXNzaW9uLCB3aGljaCBsYWNrcyByZXR1cm4tdHlwZSBhbm5vdGF0aW9uLCBpbXBsaWNpdGx5IGhhcyBhbiAnezB9JyByZXR1cm4gdHlwZS5cIiksQ29uc3RydWN0X3NpZ25hdHVyZV93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuX2FueV9yZXR1cm5fdHlwZTphKDcwMTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDb25zdHJ1Y3Rfc2lnbmF0dXJlX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fYW55X3JldHVybl90eXBlXzcwMTNcIixcIkNvbnN0cnVjdCBzaWduYXR1cmUsIHdoaWNoIGxhY2tzIHJldHVybi10eXBlIGFubm90YXRpb24sIGltcGxpY2l0bHkgaGFzIGFuICdhbnknIHJldHVybiB0eXBlLlwiKSxGdW5jdGlvbl90eXBlX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMF9yZXR1cm5fdHlwZTphKDcwMTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGdW5jdGlvbl90eXBlX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMF9yZXR1cm5fdHlwZV83MDE0XCIsXCJGdW5jdGlvbiB0eXBlLCB3aGljaCBsYWNrcyByZXR1cm4tdHlwZSBhbm5vdGF0aW9uLCBpbXBsaWNpdGx5IGhhcyBhbiAnezB9JyByZXR1cm4gdHlwZS5cIiksRWxlbWVudF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9iZWNhdXNlX2luZGV4X2V4cHJlc3Npb25faXNfbm90X29mX3R5cGVfbnVtYmVyOmEoNzAxNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkVsZW1lbnRfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGVfYmVjYXVzZV9pbmRleF9leHByZXNzaW9uX2lzX25vdF9vZl90eXBlX251bWJlcl83MDE1XCIsXCJFbGVtZW50IGltcGxpY2l0bHkgaGFzIGFuICdhbnknIHR5cGUgYmVjYXVzZSBpbmRleCBleHByZXNzaW9uIGlzIG5vdCBvZiB0eXBlICdudW1iZXInLlwiKSxDb3VsZF9ub3RfZmluZF9hX2RlY2xhcmF0aW9uX2ZpbGVfZm9yX21vZHVsZV8wXzFfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGU6YSg3MDE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ291bGRfbm90X2ZpbmRfYV9kZWNsYXJhdGlvbl9maWxlX2Zvcl9tb2R1bGVfMF8xX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlXzcwMTZcIixcIkNvdWxkIG5vdCBmaW5kIGEgZGVjbGFyYXRpb24gZmlsZSBmb3IgbW9kdWxlICd7MH0nLiAnezF9JyBpbXBsaWNpdGx5IGhhcyBhbiAnYW55JyB0eXBlLlwiKSxFbGVtZW50X2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlX2JlY2F1c2VfdHlwZV8wX2hhc19ub19pbmRleF9zaWduYXR1cmU6YSg3MDE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRWxlbWVudF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9iZWNhdXNlX3R5cGVfMF9oYXNfbm9faW5kZXhfc2lnbmF0dXJlXzcwMTdcIixcIkVsZW1lbnQgaW1wbGljaXRseSBoYXMgYW4gJ2FueScgdHlwZSBiZWNhdXNlIHR5cGUgJ3swfScgaGFzIG5vIGluZGV4IHNpZ25hdHVyZS5cIiksT2JqZWN0X2xpdGVyYWxfc19wcm9wZXJ0eV8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZTphKDcwMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPYmplY3RfbGl0ZXJhbF9zX3Byb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlXzcwMThcIixcIk9iamVjdCBsaXRlcmFsJ3MgcHJvcGVydHkgJ3swfScgaW1wbGljaXRseSBoYXMgYW4gJ3sxfScgdHlwZS5cIiksUmVzdF9wYXJhbWV0ZXJfMF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZTphKDcwMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJSZXN0X3BhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlXzcwMTlcIixcIlJlc3QgcGFyYW1ldGVyICd7MH0nIGltcGxpY2l0bHkgaGFzIGFuICdhbnlbXScgdHlwZS5cIiksQ2FsbF9zaWduYXR1cmVfd2hpY2hfbGFja3NfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbl9pbXBsaWNpdGx5X2hhc19hbl9hbnlfcmV0dXJuX3R5cGU6YSg3MDIwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2FsbF9zaWduYXR1cmVfd2hpY2hfbGFja3NfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbl9pbXBsaWNpdGx5X2hhc19hbl9hbnlfcmV0dXJuX3R5cGVfNzAyMFwiLFwiQ2FsbCBzaWduYXR1cmUsIHdoaWNoIGxhY2tzIHJldHVybi10eXBlIGFubm90YXRpb24sIGltcGxpY2l0bHkgaGFzIGFuICdhbnknIHJldHVybiB0eXBlLlwiKSxfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV90eXBlX2Fubm90YXRpb25fYW5kX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9pdHNfb3duX2luaXRpYWxpemVyOmEoNzAyMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2JlY2F1c2VfaXRfZG9lc19ub3RfaGF2ZV9hX3R5cGVfYW5ub3RhdGlvbl9hbmRfaXNfcmVmZXJlbmNlZF9kaXJlY3RseV9vcl9fNzAyMlwiLFwiJ3swfScgaW1wbGljaXRseSBoYXMgdHlwZSAnYW55JyBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgYSB0eXBlIGFubm90YXRpb24gYW5kIGlzIHJlZmVyZW5jZWQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbiBpdHMgb3duIGluaXRpYWxpemVyLlwiKSxfMF9pbXBsaWNpdGx5X2hhc19yZXR1cm5fdHlwZV9hbnlfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX2FfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbl9hbmRfaXNfcmVmZXJlbmNlZF9kaXJlY3RseV9vcl9pbmRpcmVjdGx5X2luX29uZV9vZl9pdHNfcmV0dXJuX2V4cHJlc3Npb25zOmEoNzAyMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIl8wX2ltcGxpY2l0bHlfaGFzX3JldHVybl90eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2FuZF9pc19yZWZlcmVuY2VfNzAyM1wiLFwiJ3swfScgaW1wbGljaXRseSBoYXMgcmV0dXJuIHR5cGUgJ2FueScgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbiBhbmQgaXMgcmVmZXJlbmNlZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluIG9uZSBvZiBpdHMgcmV0dXJuIGV4cHJlc3Npb25zLlwiKSxGdW5jdGlvbl9pbXBsaWNpdGx5X2hhc19yZXR1cm5fdHlwZV9hbnlfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX2FfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbl9hbmRfaXNfcmVmZXJlbmNlZF9kaXJlY3RseV9vcl9pbmRpcmVjdGx5X2luX29uZV9vZl9pdHNfcmV0dXJuX2V4cHJlc3Npb25zOmEoNzAyNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkZ1bmN0aW9uX2ltcGxpY2l0bHlfaGFzX3JldHVybl90eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2FuZF9pc19yZWZfNzAyNFwiLFwiRnVuY3Rpb24gaW1wbGljaXRseSBoYXMgcmV0dXJuIHR5cGUgJ2FueScgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbiBhbmQgaXMgcmVmZXJlbmNlZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluIG9uZSBvZiBpdHMgcmV0dXJuIGV4cHJlc3Npb25zLlwiKSxHZW5lcmF0b3JfaW1wbGljaXRseV9oYXNfeWllbGRfdHlwZV8wX2JlY2F1c2VfaXRfZG9lc19ub3RfeWllbGRfYW55X3ZhbHVlc19Db25zaWRlcl9zdXBwbHlpbmdfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uOmEoNzAyNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkdlbmVyYXRvcl9pbXBsaWNpdGx5X2hhc195aWVsZF90eXBlXzBfYmVjYXVzZV9pdF9kb2VzX25vdF95aWVsZF9hbnlfdmFsdWVzX0NvbnNpZGVyX3N1cHBseWluZ19hX3JldHVfNzAyNVwiLFwiR2VuZXJhdG9yIGltcGxpY2l0bHkgaGFzIHlpZWxkIHR5cGUgJ3swfScgYmVjYXVzZSBpdCBkb2VzIG5vdCB5aWVsZCBhbnkgdmFsdWVzLiBDb25zaWRlciBzdXBwbHlpbmcgYSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uLlwiKSxKU1hfZWxlbWVudF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX25vX2ludGVyZmFjZV9KU1hfMF9leGlzdHM6YSg3MDI2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSlNYX2VsZW1lbnRfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9ub19pbnRlcmZhY2VfSlNYXzBfZXhpc3RzXzcwMjZcIixcIkpTWCBlbGVtZW50IGltcGxpY2l0bHkgaGFzIHR5cGUgJ2FueScgYmVjYXVzZSBubyBpbnRlcmZhY2UgJ0pTWC57MH0nIGV4aXN0cy5cIiksVW5yZWFjaGFibGVfY29kZV9kZXRlY3RlZDphKDcwMjcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbnJlYWNoYWJsZV9jb2RlX2RldGVjdGVkXzcwMjdcIixcIlVucmVhY2hhYmxlIGNvZGUgZGV0ZWN0ZWQuXCIsITApLFVudXNlZF9sYWJlbDphKDcwMjgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJVbnVzZWRfbGFiZWxfNzAyOFwiLFwiVW51c2VkIGxhYmVsLlwiLCEwKSxGYWxsdGhyb3VnaF9jYXNlX2luX3N3aXRjaDphKDcwMjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJGYWxsdGhyb3VnaF9jYXNlX2luX3N3aXRjaF83MDI5XCIsXCJGYWxsdGhyb3VnaCBjYXNlIGluIHN3aXRjaC5cIiksTm90X2FsbF9jb2RlX3BhdGhzX3JldHVybl9hX3ZhbHVlOmEoNzAzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5vdF9hbGxfY29kZV9wYXRoc19yZXR1cm5fYV92YWx1ZV83MDMwXCIsXCJOb3QgYWxsIGNvZGUgcGF0aHMgcmV0dXJuIGEgdmFsdWUuXCIpLEJpbmRpbmdfZWxlbWVudF8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZTphKDcwMzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJCaW5kaW5nX2VsZW1lbnRfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGVfNzAzMVwiLFwiQmluZGluZyBlbGVtZW50ICd7MH0nIGltcGxpY2l0bHkgaGFzIGFuICd7MX0nIHR5cGUuXCIpLFByb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9pdHNfc2V0X2FjY2Vzc29yX2xhY2tzX2FfcGFyYW1ldGVyX3R5cGVfYW5ub3RhdGlvbjphKDcwMzIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcm9wZXJ0eV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2JlY2F1c2VfaXRzX3NldF9hY2Nlc3Nvcl9sYWNrc19hX3BhcmFtZXRlcl90eXBlX2Fubm90YXRpb25fNzAzMlwiLFwiUHJvcGVydHkgJ3swfScgaW1wbGljaXRseSBoYXMgdHlwZSAnYW55JywgYmVjYXVzZSBpdHMgc2V0IGFjY2Vzc29yIGxhY2tzIGEgcGFyYW1ldGVyIHR5cGUgYW5ub3RhdGlvbi5cIiksUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0c19nZXRfYWNjZXNzb3JfbGFja3NfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uOmEoNzAzMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9pdHNfZ2V0X2FjY2Vzc29yX2xhY2tzX2FfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbl83MDMzXCIsXCJQcm9wZXJ0eSAnezB9JyBpbXBsaWNpdGx5IGhhcyB0eXBlICdhbnknLCBiZWNhdXNlIGl0cyBnZXQgYWNjZXNzb3IgbGFja3MgYSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uLlwiKSxWYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfMV9pbl9zb21lX2xvY2F0aW9uc193aGVyZV9pdHNfdHlwZV9jYW5ub3RfYmVfZGV0ZXJtaW5lZDphKDcwMzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJWYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfMV9pbl9zb21lX2xvY2F0aW9uc193aGVyZV9pdHNfdHlwZV9jYW5ub3RfYmVfZGV0ZXJtaW5lZF83MDM0XCIsXCJWYXJpYWJsZSAnezB9JyBpbXBsaWNpdGx5IGhhcyB0eXBlICd7MX0nIGluIHNvbWUgbG9jYXRpb25zIHdoZXJlIGl0cyB0eXBlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLlwiKSxUcnlfbnBtX2lfc2F2ZV9kZXZfdHlwZXNfU2xhc2hfMV9pZl9pdF9leGlzdHNfb3JfYWRkX2FfbmV3X2RlY2xhcmF0aW9uX2RfdHNfZmlsZV9jb250YWluaW5nX2RlY2xhcmVfbW9kdWxlXzA6YSg3MDM1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoXzFfaWZfaXRfZXhpc3RzX29yX2FkZF9hX25ld19kZWNsYXJhdGlvbl9kX3RzX2ZpbGVfY29udGFpbmluZ19kZWNsYXJlX183MDM1XCIsXCJUcnkgYG5wbSBpIC0tc2F2ZS1kZXYgQHR5cGVzL3sxfWAgaWYgaXQgZXhpc3RzIG9yIGFkZCBhIG5ldyBkZWNsYXJhdGlvbiAoLmQudHMpIGZpbGUgY29udGFpbmluZyBgZGVjbGFyZSBtb2R1bGUgJ3swfSc7YFwiKSxEeW5hbWljX2ltcG9ydF9zX3NwZWNpZmllcl9tdXN0X2JlX29mX3R5cGVfc3RyaW5nX2J1dF9oZXJlX2hhc190eXBlXzA6YSg3MDM2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRHluYW1pY19pbXBvcnRfc19zcGVjaWZpZXJfbXVzdF9iZV9vZl90eXBlX3N0cmluZ19idXRfaGVyZV9oYXNfdHlwZV8wXzcwMzZcIixcIkR5bmFtaWMgaW1wb3J0J3Mgc3BlY2lmaWVyIG11c3QgYmUgb2YgdHlwZSAnc3RyaW5nJywgYnV0IGhlcmUgaGFzIHR5cGUgJ3swfScuXCIpLEVuYWJsZXNfZW1pdF9pbnRlcm9wZXJhYmlsaXR5X2JldHdlZW5fQ29tbW9uSlNfYW5kX0VTX01vZHVsZXNfdmlhX2NyZWF0aW9uX29mX25hbWVzcGFjZV9vYmplY3RzX2Zvcl9hbGxfaW1wb3J0c19JbXBsaWVzX2FsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6YSg3MDM3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFbmFibGVzX2VtaXRfaW50ZXJvcGVyYWJpbGl0eV9iZXR3ZWVuX0NvbW1vbkpTX2FuZF9FU19Nb2R1bGVzX3ZpYV9jcmVhdGlvbl9vZl9uYW1lc3BhY2Vfb2JqZWN0c19mb3JfXzcwMzdcIixcIkVuYWJsZXMgZW1pdCBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gQ29tbW9uSlMgYW5kIEVTIE1vZHVsZXMgdmlhIGNyZWF0aW9uIG9mIG5hbWVzcGFjZSBvYmplY3RzIGZvciBhbGwgaW1wb3J0cy4gSW1wbGllcyAnYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cycuXCIpLFR5cGVfb3JpZ2luYXRlc19hdF90aGlzX2ltcG9ydF9BX25hbWVzcGFjZV9zdHlsZV9pbXBvcnRfY2Fubm90X2JlX2NhbGxlZF9vcl9jb25zdHJ1Y3RlZF9hbmRfd2lsbF9jYXVzZV9hX2ZhaWx1cmVfYXRfcnVudGltZV9Db25zaWRlcl91c2luZ19hX2RlZmF1bHRfaW1wb3J0X29yX2ltcG9ydF9yZXF1aXJlX2hlcmVfaW5zdGVhZDphKDcwMzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlR5cGVfb3JpZ2luYXRlc19hdF90aGlzX2ltcG9ydF9BX25hbWVzcGFjZV9zdHlsZV9pbXBvcnRfY2Fubm90X2JlX2NhbGxlZF9vcl9jb25zdHJ1Y3RlZF9hbmRfd2lsbF9jYXVfNzAzOFwiLFwiVHlwZSBvcmlnaW5hdGVzIGF0IHRoaXMgaW1wb3J0LiBBIG5hbWVzcGFjZS1zdHlsZSBpbXBvcnQgY2Fubm90IGJlIGNhbGxlZCBvciBjb25zdHJ1Y3RlZCwgYW5kIHdpbGwgY2F1c2UgYSBmYWlsdXJlIGF0IHJ1bnRpbWUuIENvbnNpZGVyIHVzaW5nIGEgZGVmYXVsdCBpbXBvcnQgb3IgaW1wb3J0IHJlcXVpcmUgaGVyZSBpbnN0ZWFkLlwiKSxNYXBwZWRfb2JqZWN0X3R5cGVfaW1wbGljaXRseV9oYXNfYW5fYW55X3RlbXBsYXRlX3R5cGU6YSg3MDM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiTWFwcGVkX29iamVjdF90eXBlX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90ZW1wbGF0ZV90eXBlXzcwMzlcIixcIk1hcHBlZCBvYmplY3QgdHlwZSBpbXBsaWNpdGx5IGhhcyBhbiAnYW55JyB0ZW1wbGF0ZSB0eXBlLlwiKSxJZl90aGVfMF9wYWNrYWdlX2FjdHVhbGx5X2V4cG9zZXNfdGhpc19tb2R1bGVfY29uc2lkZXJfc2VuZGluZ19hX3B1bGxfcmVxdWVzdF90b19hbWVuZF9odHRwc19Db2xvbl9TbGFzaF9TbGFzaGdpdGh1Yl9jb21fU2xhc2hEZWZpbml0ZWx5VHlwZWRfU2xhc2hEZWZpbml0ZWx5VHlwZWRfU2xhc2h0cmVlX1NsYXNobWFzdGVyX1NsYXNodHlwZXNfU2xhc2hfMTphKDcwNDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJZl90aGVfMF9wYWNrYWdlX2FjdHVhbGx5X2V4cG9zZXNfdGhpc19tb2R1bGVfY29uc2lkZXJfc2VuZGluZ19hX3B1bGxfcmVxdWVzdF90b19hbWVuZF9odHRwc19Db2xvbl9TXzcwNDBcIixcIklmIHRoZSAnezB9JyBwYWNrYWdlIGFjdHVhbGx5IGV4cG9zZXMgdGhpcyBtb2R1bGUsIGNvbnNpZGVyIHNlbmRpbmcgYSBwdWxsIHJlcXVlc3QgdG8gYW1lbmQgJ2h0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL3RyZWUvbWFzdGVyL3R5cGVzL3sxfSdcIiksVGhlX2NvbnRhaW5pbmdfYXJyb3dfZnVuY3Rpb25fY2FwdHVyZXNfdGhlX2dsb2JhbF92YWx1ZV9vZl90aGlzOmEoNzA0MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9jb250YWluaW5nX2Fycm93X2Z1bmN0aW9uX2NhcHR1cmVzX3RoZV9nbG9iYWxfdmFsdWVfb2ZfdGhpc183MDQxXCIsXCJUaGUgY29udGFpbmluZyBhcnJvdyBmdW5jdGlvbiBjYXB0dXJlcyB0aGUgZ2xvYmFsIHZhbHVlIG9mICd0aGlzJy5cIiksTW9kdWxlXzBfd2FzX3Jlc29sdmVkX3RvXzFfYnV0X3Jlc29sdmVKc29uTW9kdWxlX2lzX25vdF91c2VkOmEoNzA0MixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1vZHVsZV8wX3dhc19yZXNvbHZlZF90b18xX2J1dF9yZXNvbHZlSnNvbk1vZHVsZV9pc19ub3RfdXNlZF83MDQyXCIsXCJNb2R1bGUgJ3swfScgd2FzIHJlc29sdmVkIHRvICd7MX0nLCBidXQgJy0tcmVzb2x2ZUpzb25Nb2R1bGUnIGlzIG5vdCB1c2VkLlwiKSxWYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZTphKDcwNDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuU3VnZ2VzdGlvbixcIlZhcmlhYmxlXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlXzcwNDNcIixcIlZhcmlhYmxlICd7MH0nIGltcGxpY2l0bHkgaGFzIGFuICd7MX0nIHR5cGUsIGJ1dCBhIGJldHRlciB0eXBlIG1heSBiZSBpbmZlcnJlZCBmcm9tIHVzYWdlLlwiKSxQYXJhbWV0ZXJfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2U6YSg3MDQ0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb24sXCJQYXJhbWV0ZXJfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2VfNzA0NFwiLFwiUGFyYW1ldGVyICd7MH0nIGltcGxpY2l0bHkgaGFzIGFuICd7MX0nIHR5cGUsIGJ1dCBhIGJldHRlciB0eXBlIG1heSBiZSBpbmZlcnJlZCBmcm9tIHVzYWdlLlwiKSxNZW1iZXJfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2U6YSg3MDQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb24sXCJNZW1iZXJfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2VfNzA0NVwiLFwiTWVtYmVyICd7MH0nIGltcGxpY2l0bHkgaGFzIGFuICd7MX0nIHR5cGUsIGJ1dCBhIGJldHRlciB0eXBlIG1heSBiZSBpbmZlcnJlZCBmcm9tIHVzYWdlLlwiKSxWYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfMV9pbl9zb21lX2xvY2F0aW9uc19idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZTphKDcwNDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuU3VnZ2VzdGlvbixcIlZhcmlhYmxlXzBfaW1wbGljaXRseV9oYXNfdHlwZV8xX2luX3NvbWVfbG9jYXRpb25zX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlXzcwNDZcIixcIlZhcmlhYmxlICd7MH0nIGltcGxpY2l0bHkgaGFzIHR5cGUgJ3sxfScgaW4gc29tZSBsb2NhdGlvbnMsIGJ1dCBhIGJldHRlciB0eXBlIG1heSBiZSBpbmZlcnJlZCBmcm9tIHVzYWdlLlwiKSxSZXN0X3BhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlOmEoNzA0NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9uLFwiUmVzdF9wYXJhbWV0ZXJfMF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZV83MDQ3XCIsXCJSZXN0IHBhcmFtZXRlciAnezB9JyBpbXBsaWNpdGx5IGhhcyBhbiAnYW55W10nIHR5cGUsIGJ1dCBhIGJldHRlciB0eXBlIG1heSBiZSBpbmZlcnJlZCBmcm9tIHVzYWdlLlwiKSxQcm9wZXJ0eV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2J1dF9hX2JldHRlcl90eXBlX2Zvcl9pdHNfZ2V0X2FjY2Vzc29yX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlOmEoNzA0OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9uLFwiUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9idXRfYV9iZXR0ZXJfdHlwZV9mb3JfaXRzX2dldF9hY2Nlc3Nvcl9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZV83MDQ4XCIsXCJQcm9wZXJ0eSAnezB9JyBpbXBsaWNpdGx5IGhhcyB0eXBlICdhbnknLCBidXQgYSBiZXR0ZXIgdHlwZSBmb3IgaXRzIGdldCBhY2Nlc3NvciBtYXkgYmUgaW5mZXJyZWQgZnJvbSB1c2FnZS5cIiksUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9idXRfYV9iZXR0ZXJfdHlwZV9mb3JfaXRzX3NldF9hY2Nlc3Nvcl9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZTphKDcwNDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuU3VnZ2VzdGlvbixcIlByb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYnV0X2FfYmV0dGVyX3R5cGVfZm9yX2l0c19zZXRfYWNjZXNzb3JfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2VfNzA0OVwiLFwiUHJvcGVydHkgJ3swfScgaW1wbGljaXRseSBoYXMgdHlwZSAnYW55JywgYnV0IGEgYmV0dGVyIHR5cGUgZm9yIGl0cyBzZXQgYWNjZXNzb3IgbWF5IGJlIGluZmVycmVkIGZyb20gdXNhZ2UuXCIpLF8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfcmV0dXJuX3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2U6YSg3MDUwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb24sXCJfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3JldHVybl90eXBlX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlXzcwNTBcIixcIid7MH0nIGltcGxpY2l0bHkgaGFzIGFuICd7MX0nIHJldHVybiB0eXBlLCBidXQgYSBiZXR0ZXIgdHlwZSBtYXkgYmUgaW5mZXJyZWQgZnJvbSB1c2FnZS5cIiksUGFyYW1ldGVyX2hhc19hX25hbWVfYnV0X25vX3R5cGVfRGlkX3lvdV9tZWFuXzBfQ29sb25fMTphKDcwNTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQYXJhbWV0ZXJfaGFzX2FfbmFtZV9idXRfbm9fdHlwZV9EaWRfeW91X21lYW5fMF9Db2xvbl8xXzcwNTFcIixcIlBhcmFtZXRlciBoYXMgYSBuYW1lIGJ1dCBubyB0eXBlLiBEaWQgeW91IG1lYW4gJ3swfTogezF9Jz9cIiksRWxlbWVudF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9iZWNhdXNlX3R5cGVfMF9oYXNfbm9faW5kZXhfc2lnbmF0dXJlX0RpZF95b3VfbWVhbl90b19jYWxsXzE6YSg3MDUyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRWxlbWVudF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9iZWNhdXNlX3R5cGVfMF9oYXNfbm9faW5kZXhfc2lnbmF0dXJlX0RpZF95b3VfbWVhbl90b19jYWxsXzFfNzA1MlwiLFwiRWxlbWVudCBpbXBsaWNpdGx5IGhhcyBhbiAnYW55JyB0eXBlIGJlY2F1c2UgdHlwZSAnezB9JyBoYXMgbm8gaW5kZXggc2lnbmF0dXJlLiBEaWQgeW91IG1lYW4gdG8gY2FsbCAnezF9Jz9cIiksRWxlbWVudF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9iZWNhdXNlX2V4cHJlc3Npb25fb2ZfdHlwZV8wX2Nhbl90X2JlX3VzZWRfdG9faW5kZXhfdHlwZV8xOmEoNzA1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkVsZW1lbnRfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGVfYmVjYXVzZV9leHByZXNzaW9uX29mX3R5cGVfMF9jYW5fdF9iZV91c2VkX3RvX2luZGV4X3R5cGVfMV83MDUzXCIsXCJFbGVtZW50IGltcGxpY2l0bHkgaGFzIGFuICdhbnknIHR5cGUgYmVjYXVzZSBleHByZXNzaW9uIG9mIHR5cGUgJ3swfScgY2FuJ3QgYmUgdXNlZCB0byBpbmRleCB0eXBlICd7MX0nLlwiKSxOb19pbmRleF9zaWduYXR1cmVfd2l0aF9hX3BhcmFtZXRlcl9vZl90eXBlXzBfd2FzX2ZvdW5kX29uX3R5cGVfMTphKDcwNTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb19pbmRleF9zaWduYXR1cmVfd2l0aF9hX3BhcmFtZXRlcl9vZl90eXBlXzBfd2FzX2ZvdW5kX29uX3R5cGVfMV83MDU0XCIsXCJObyBpbmRleCBzaWduYXR1cmUgd2l0aCBhIHBhcmFtZXRlciBvZiB0eXBlICd7MH0nIHdhcyBmb3VuZCBvbiB0eXBlICd7MX0nLlwiKSxfMF93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuXzFfeWllbGRfdHlwZTphKDcwNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuXzFfeWllbGRfdHlwZV83MDU1XCIsXCInezB9Jywgd2hpY2ggbGFja3MgcmV0dXJuLXR5cGUgYW5ub3RhdGlvbiwgaW1wbGljaXRseSBoYXMgYW4gJ3sxfScgeWllbGQgdHlwZS5cIiksVGhlX2luZmVycmVkX3R5cGVfb2ZfdGhpc19ub2RlX2V4Y2VlZHNfdGhlX21heGltdW1fbGVuZ3RoX3RoZV9jb21waWxlcl93aWxsX3NlcmlhbGl6ZV9Bbl9leHBsaWNpdF90eXBlX2Fubm90YXRpb25faXNfbmVlZGVkOmEoNzA1NixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV9pbmZlcnJlZF90eXBlX29mX3RoaXNfbm9kZV9leGNlZWRzX3RoZV9tYXhpbXVtX2xlbmd0aF90aGVfY29tcGlsZXJfd2lsbF9zZXJpYWxpemVfQW5fZXhwbGljaXRfdHlfNzA1NlwiLFwiVGhlIGluZmVycmVkIHR5cGUgb2YgdGhpcyBub2RlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoIHRoZSBjb21waWxlciB3aWxsIHNlcmlhbGl6ZS4gQW4gZXhwbGljaXQgdHlwZSBhbm5vdGF0aW9uIGlzIG5lZWRlZC5cIikseWllbGRfZXhwcmVzc2lvbl9pbXBsaWNpdGx5X3Jlc3VsdHNfaW5fYW5fYW55X3R5cGVfYmVjYXVzZV9pdHNfY29udGFpbmluZ19nZW5lcmF0b3JfbGFja3NfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uOmEoNzA1NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInlpZWxkX2V4cHJlc3Npb25faW1wbGljaXRseV9yZXN1bHRzX2luX2FuX2FueV90eXBlX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfZ2VuZXJhdG9yX2xhY2tzX2FfcmV0dXJuX3RfNzA1N1wiLFwiJ3lpZWxkJyBleHByZXNzaW9uIGltcGxpY2l0bHkgcmVzdWx0cyBpbiBhbiAnYW55JyB0eXBlIGJlY2F1c2UgaXRzIGNvbnRhaW5pbmcgZ2VuZXJhdG9yIGxhY2tzIGEgcmV0dXJuLXR5cGUgYW5ub3RhdGlvbi5cIiksSWZfdGhlXzBfcGFja2FnZV9hY3R1YWxseV9leHBvc2VzX3RoaXNfbW9kdWxlX3RyeV9hZGRpbmdfYV9uZXdfZGVjbGFyYXRpb25fZF90c19maWxlX2NvbnRhaW5pbmdfZGVjbGFyZV9tb2R1bGVfMTphKDcwNTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJJZl90aGVfMF9wYWNrYWdlX2FjdHVhbGx5X2V4cG9zZXNfdGhpc19tb2R1bGVfdHJ5X2FkZGluZ19hX25ld19kZWNsYXJhdGlvbl9kX3RzX2ZpbGVfY29udGFpbmluZ19kZWNsXzcwNThcIixcIklmIHRoZSAnezB9JyBwYWNrYWdlIGFjdHVhbGx5IGV4cG9zZXMgdGhpcyBtb2R1bGUsIHRyeSBhZGRpbmcgYSBuZXcgZGVjbGFyYXRpb24gKC5kLnRzKSBmaWxlIGNvbnRhaW5pbmcgYGRlY2xhcmUgbW9kdWxlICd7MX0nO2BcIiksVGhpc19zeW50YXhfaXNfcmVzZXJ2ZWRfaW5fZmlsZXNfd2l0aF90aGVfbXRzX29yX2N0c19leHRlbnNpb25fVXNlX2FuX2FzX2V4cHJlc3Npb25faW5zdGVhZDphKDcwNTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX3N5bnRheF9pc19yZXNlcnZlZF9pbl9maWxlc193aXRoX3RoZV9tdHNfb3JfY3RzX2V4dGVuc2lvbl9Vc2VfYW5fYXNfZXhwcmVzc2lvbl9pbnN0ZWFkXzcwNTlcIixcIlRoaXMgc3ludGF4IGlzIHJlc2VydmVkIGluIGZpbGVzIHdpdGggdGhlIC5tdHMgb3IgLmN0cyBleHRlbnNpb24uIFVzZSBhbiBgYXNgIGV4cHJlc3Npb24gaW5zdGVhZC5cIiksVGhpc19zeW50YXhfaXNfcmVzZXJ2ZWRfaW5fZmlsZXNfd2l0aF90aGVfbXRzX29yX2N0c19leHRlbnNpb25fQWRkX2FfdHJhaWxpbmdfY29tbWFfb3JfZXhwbGljaXRfY29uc3RyYWludDphKDcwNjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGlzX3N5bnRheF9pc19yZXNlcnZlZF9pbl9maWxlc193aXRoX3RoZV9tdHNfb3JfY3RzX2V4dGVuc2lvbl9BZGRfYV90cmFpbGluZ19jb21tYV9vcl9leHBsaWNpdF9jb25zXzcwNjBcIixcIlRoaXMgc3ludGF4IGlzIHJlc2VydmVkIGluIGZpbGVzIHdpdGggdGhlIC5tdHMgb3IgLmN0cyBleHRlbnNpb24uIEFkZCBhIHRyYWlsaW5nIGNvbW1hIG9yIGV4cGxpY2l0IGNvbnN0cmFpbnQuXCIpLEFfbWFwcGVkX3R5cGVfbWF5X25vdF9kZWNsYXJlX3Byb3BlcnRpZXNfb3JfbWV0aG9kczphKDcwNjEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBX21hcHBlZF90eXBlX21heV9ub3RfZGVjbGFyZV9wcm9wZXJ0aWVzX29yX21ldGhvZHNfNzA2MVwiLFwiQSBtYXBwZWQgdHlwZSBtYXkgbm90IGRlY2xhcmUgcHJvcGVydGllcyBvciBtZXRob2RzLlwiKSxZb3VfY2Fubm90X3JlbmFtZV90aGlzX2VsZW1lbnQ6YSg4ZTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJZb3VfY2Fubm90X3JlbmFtZV90aGlzX2VsZW1lbnRfODAwMFwiLFwiWW91IGNhbm5vdCByZW5hbWUgdGhpcyBlbGVtZW50LlwiKSxZb3VfY2Fubm90X3JlbmFtZV9lbGVtZW50c190aGF0X2FyZV9kZWZpbmVkX2luX3RoZV9zdGFuZGFyZF9UeXBlU2NyaXB0X2xpYnJhcnk6YSg4MDAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiWW91X2Nhbm5vdF9yZW5hbWVfZWxlbWVudHNfdGhhdF9hcmVfZGVmaW5lZF9pbl90aGVfc3RhbmRhcmRfVHlwZVNjcmlwdF9saWJyYXJ5XzgwMDFcIixcIllvdSBjYW5ub3QgcmVuYW1lIGVsZW1lbnRzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkIFR5cGVTY3JpcHQgbGlicmFyeS5cIiksaW1wb3J0X2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlczphKDgwMDIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJpbXBvcnRfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMDJcIixcIidpbXBvcnQgLi4uID0nIGNhbiBvbmx5IGJlIHVzZWQgaW4gVHlwZVNjcmlwdCBmaWxlcy5cIiksZXhwb3J0X2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlczphKDgwMDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJleHBvcnRfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMDNcIixcIidleHBvcnQgPScgY2FuIG9ubHkgYmUgdXNlZCBpbiBUeXBlU2NyaXB0IGZpbGVzLlwiKSxUeXBlX3BhcmFtZXRlcl9kZWNsYXJhdGlvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzOmEoODAwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfcGFyYW1ldGVyX2RlY2xhcmF0aW9uc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXNfODAwNFwiLFwiVHlwZSBwYXJhbWV0ZXIgZGVjbGFyYXRpb25zIGNhbiBvbmx5IGJlIHVzZWQgaW4gVHlwZVNjcmlwdCBmaWxlcy5cIiksaW1wbGVtZW50c19jbGF1c2VzX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlczphKDgwMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJpbXBsZW1lbnRzX2NsYXVzZXNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMDVcIixcIidpbXBsZW1lbnRzJyBjbGF1c2VzIGNhbiBvbmx5IGJlIHVzZWQgaW4gVHlwZVNjcmlwdCBmaWxlcy5cIiksXzBfZGVjbGFyYXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlczphKDgwMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9kZWNsYXJhdGlvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMDZcIixcIid7MH0nIGRlY2xhcmF0aW9ucyBjYW4gb25seSBiZSB1c2VkIGluIFR5cGVTY3JpcHQgZmlsZXMuXCIpLFR5cGVfYWxpYXNlc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXM6YSg4MDA4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9hbGlhc2VzX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlc184MDA4XCIsXCJUeXBlIGFsaWFzZXMgY2FuIG9ubHkgYmUgdXNlZCBpbiBUeXBlU2NyaXB0IGZpbGVzLlwiKSxUaGVfMF9tb2RpZmllcl9jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXM6YSg4MDA5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlXzBfbW9kaWZpZXJfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMDlcIixcIlRoZSAnezB9JyBtb2RpZmllciBjYW4gb25seSBiZSB1c2VkIGluIFR5cGVTY3JpcHQgZmlsZXMuXCIpLFR5cGVfYW5ub3RhdGlvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzOmEoODAxMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlR5cGVfYW5ub3RhdGlvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMTBcIixcIlR5cGUgYW5ub3RhdGlvbnMgY2FuIG9ubHkgYmUgdXNlZCBpbiBUeXBlU2NyaXB0IGZpbGVzLlwiKSxUeXBlX2FyZ3VtZW50c19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXM6YSg4MDExLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9hcmd1bWVudHNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMTFcIixcIlR5cGUgYXJndW1lbnRzIGNhbiBvbmx5IGJlIHVzZWQgaW4gVHlwZVNjcmlwdCBmaWxlcy5cIiksUGFyYW1ldGVyX21vZGlmaWVyc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXM6YSg4MDEyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUGFyYW1ldGVyX21vZGlmaWVyc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXNfODAxMlwiLFwiUGFyYW1ldGVyIG1vZGlmaWVycyBjYW4gb25seSBiZSB1c2VkIGluIFR5cGVTY3JpcHQgZmlsZXMuXCIpLE5vbl9udWxsX2Fzc2VydGlvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzOmEoODAxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk5vbl9udWxsX2Fzc2VydGlvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMTNcIixcIk5vbi1udWxsIGFzc2VydGlvbnMgY2FuIG9ubHkgYmUgdXNlZCBpbiBUeXBlU2NyaXB0IGZpbGVzLlwiKSxUeXBlX2Fzc2VydGlvbl9leHByZXNzaW9uc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXM6YSg4MDE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVHlwZV9hc3NlcnRpb25fZXhwcmVzc2lvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzXzgwMTZcIixcIlR5cGUgYXNzZXJ0aW9uIGV4cHJlc3Npb25zIGNhbiBvbmx5IGJlIHVzZWQgaW4gVHlwZVNjcmlwdCBmaWxlcy5cIiksT2N0YWxfbGl0ZXJhbF90eXBlc19tdXN0X3VzZV9FUzIwMTVfc3ludGF4X1VzZV90aGVfc3ludGF4XzA6YSg4MDE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiT2N0YWxfbGl0ZXJhbF90eXBlc19tdXN0X3VzZV9FUzIwMTVfc3ludGF4X1VzZV90aGVfc3ludGF4XzBfODAxN1wiLFwiT2N0YWwgbGl0ZXJhbCB0eXBlcyBtdXN0IHVzZSBFUzIwMTUgc3ludGF4LiBVc2UgdGhlIHN5bnRheCAnezB9Jy5cIiksT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX2VudW1zX21lbWJlcnNfaW5pdGlhbGl6ZXJfVXNlX3RoZV9zeW50YXhfMDphKDgwMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fZW51bXNfbWVtYmVyc19pbml0aWFsaXplcl9Vc2VfdGhlX3N5bnRheF8wXzgwMThcIixcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBlbnVtcyBtZW1iZXJzIGluaXRpYWxpemVyLiBVc2UgdGhlIHN5bnRheCAnezB9Jy5cIiksUmVwb3J0X2Vycm9yc19pbl9qc19maWxlczphKDgwMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlcG9ydF9lcnJvcnNfaW5fanNfZmlsZXNfODAxOVwiLFwiUmVwb3J0IGVycm9ycyBpbiAuanMgZmlsZXMuXCIpLEpTRG9jX3R5cGVzX2Nhbl9vbmx5X2JlX3VzZWRfaW5zaWRlX2RvY3VtZW50YXRpb25fY29tbWVudHM6YSg4MDIwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSlNEb2NfdHlwZXNfY2FuX29ubHlfYmVfdXNlZF9pbnNpZGVfZG9jdW1lbnRhdGlvbl9jb21tZW50c184MDIwXCIsXCJKU0RvYyB0eXBlcyBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBkb2N1bWVudGF0aW9uIGNvbW1lbnRzLlwiKSxKU0RvY190eXBlZGVmX3RhZ19zaG91bGRfZWl0aGVyX2hhdmVfYV90eXBlX2Fubm90YXRpb25fb3JfYmVfZm9sbG93ZWRfYnlfcHJvcGVydHlfb3JfbWVtYmVyX3RhZ3M6YSg4MDIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSlNEb2NfdHlwZWRlZl90YWdfc2hvdWxkX2VpdGhlcl9oYXZlX2FfdHlwZV9hbm5vdGF0aW9uX29yX2JlX2ZvbGxvd2VkX2J5X3Byb3BlcnR5X29yX21lbWJlcl90YWdzXzgwMjFcIixcIkpTRG9jICdAdHlwZWRlZicgdGFnIHNob3VsZCBlaXRoZXIgaGF2ZSBhIHR5cGUgYW5ub3RhdGlvbiBvciBiZSBmb2xsb3dlZCBieSAnQHByb3BlcnR5JyBvciAnQG1lbWJlcicgdGFncy5cIiksSlNEb2NfMF9pc19ub3RfYXR0YWNoZWRfdG9fYV9jbGFzczphKDgwMjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJKU0RvY18wX2lzX25vdF9hdHRhY2hlZF90b19hX2NsYXNzXzgwMjJcIixcIkpTRG9jICdAezB9JyBpcyBub3QgYXR0YWNoZWQgdG8gYSBjbGFzcy5cIiksSlNEb2NfMF8xX2RvZXNfbm90X21hdGNoX3RoZV9leHRlbmRzXzJfY2xhdXNlOmEoODAyMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkpTRG9jXzBfMV9kb2VzX25vdF9tYXRjaF90aGVfZXh0ZW5kc18yX2NsYXVzZV84MDIzXCIsXCJKU0RvYyAnQHswfSB7MX0nIGRvZXMgbm90IG1hdGNoIHRoZSAnZXh0ZW5kcyB7Mn0nIGNsYXVzZS5cIiksSlNEb2NfcGFyYW1fdGFnX2hhc19uYW1lXzBfYnV0X3RoZXJlX2lzX25vX3BhcmFtZXRlcl93aXRoX3RoYXRfbmFtZTphKDgwMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJKU0RvY19wYXJhbV90YWdfaGFzX25hbWVfMF9idXRfdGhlcmVfaXNfbm9fcGFyYW1ldGVyX3dpdGhfdGhhdF9uYW1lXzgwMjRcIixcIkpTRG9jICdAcGFyYW0nIHRhZyBoYXMgbmFtZSAnezB9JywgYnV0IHRoZXJlIGlzIG5vIHBhcmFtZXRlciB3aXRoIHRoYXQgbmFtZS5cIiksQ2xhc3NfZGVjbGFyYXRpb25zX2Nhbm5vdF9oYXZlX21vcmVfdGhhbl9vbmVfYXVnbWVudHNfb3JfZXh0ZW5kc190YWc6YSg4MDI1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2xhc3NfZGVjbGFyYXRpb25zX2Nhbm5vdF9oYXZlX21vcmVfdGhhbl9vbmVfYXVnbWVudHNfb3JfZXh0ZW5kc190YWdfODAyNVwiLFwiQ2xhc3MgZGVjbGFyYXRpb25zIGNhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgJ0BhdWdtZW50cycgb3IgJ0BleHRlbmRzJyB0YWcuXCIpLEV4cGVjdGVkXzBfdHlwZV9hcmd1bWVudHNfcHJvdmlkZV90aGVzZV93aXRoX2FuX2V4dGVuZHNfdGFnOmEoODAyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cGVjdGVkXzBfdHlwZV9hcmd1bWVudHNfcHJvdmlkZV90aGVzZV93aXRoX2FuX2V4dGVuZHNfdGFnXzgwMjZcIixcIkV4cGVjdGVkIHswfSB0eXBlIGFyZ3VtZW50czsgcHJvdmlkZSB0aGVzZSB3aXRoIGFuICdAZXh0ZW5kcycgdGFnLlwiKSxFeHBlY3RlZF8wXzFfdHlwZV9hcmd1bWVudHNfcHJvdmlkZV90aGVzZV93aXRoX2FuX2V4dGVuZHNfdGFnOmEoODAyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cGVjdGVkXzBfMV90eXBlX2FyZ3VtZW50c19wcm92aWRlX3RoZXNlX3dpdGhfYW5fZXh0ZW5kc190YWdfODAyN1wiLFwiRXhwZWN0ZWQgezB9LXsxfSB0eXBlIGFyZ3VtZW50czsgcHJvdmlkZSB0aGVzZSB3aXRoIGFuICdAZXh0ZW5kcycgdGFnLlwiKSxKU0RvY19tYXlfb25seV9hcHBlYXJfaW5fdGhlX2xhc3RfcGFyYW1ldGVyX29mX2Ffc2lnbmF0dXJlOmEoODAyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkpTRG9jX21heV9vbmx5X2FwcGVhcl9pbl90aGVfbGFzdF9wYXJhbWV0ZXJfb2ZfYV9zaWduYXR1cmVfODAyOFwiLFwiSlNEb2MgJy4uLicgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSBsYXN0IHBhcmFtZXRlciBvZiBhIHNpZ25hdHVyZS5cIiksSlNEb2NfcGFyYW1fdGFnX2hhc19uYW1lXzBfYnV0X3RoZXJlX2lzX25vX3BhcmFtZXRlcl93aXRoX3RoYXRfbmFtZV9JdF93b3VsZF9tYXRjaF9hcmd1bWVudHNfaWZfaXRfaGFkX2FuX2FycmF5X3R5cGU6YSg4MDI5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSlNEb2NfcGFyYW1fdGFnX2hhc19uYW1lXzBfYnV0X3RoZXJlX2lzX25vX3BhcmFtZXRlcl93aXRoX3RoYXRfbmFtZV9JdF93b3VsZF9tYXRjaF9hcmd1bWVudHNfaWZfaXRfaF84MDI5XCIsXCJKU0RvYyAnQHBhcmFtJyB0YWcgaGFzIG5hbWUgJ3swfScsIGJ1dCB0aGVyZSBpcyBubyBwYXJhbWV0ZXIgd2l0aCB0aGF0IG5hbWUuIEl0IHdvdWxkIG1hdGNoICdhcmd1bWVudHMnIGlmIGl0IGhhZCBhbiBhcnJheSB0eXBlLlwiKSxUaGVfdHlwZV9vZl9hX2Z1bmN0aW9uX2RlY2xhcmF0aW9uX211c3RfbWF0Y2hfdGhlX2Z1bmN0aW9uX3Nfc2lnbmF0dXJlOmEoODAzMCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlRoZV90eXBlX29mX2FfZnVuY3Rpb25fZGVjbGFyYXRpb25fbXVzdF9tYXRjaF90aGVfZnVuY3Rpb25fc19zaWduYXR1cmVfODAzMFwiLFwiVGhlIHR5cGUgb2YgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBtdXN0IG1hdGNoIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS5cIiksWW91X2Nhbm5vdF9yZW5hbWVfYV9tb2R1bGVfdmlhX2FfZ2xvYmFsX2ltcG9ydDphKDgwMzEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJZb3VfY2Fubm90X3JlbmFtZV9hX21vZHVsZV92aWFfYV9nbG9iYWxfaW1wb3J0XzgwMzFcIixcIllvdSBjYW5ub3QgcmVuYW1lIGEgbW9kdWxlIHZpYSBhIGdsb2JhbCBpbXBvcnQuXCIpLFF1YWxpZmllZF9uYW1lXzBfaXNfbm90X2FsbG93ZWRfd2l0aG91dF9hX2xlYWRpbmdfcGFyYW1fb2JqZWN0XzE6YSg4MDMyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUXVhbGlmaWVkX25hbWVfMF9pc19ub3RfYWxsb3dlZF93aXRob3V0X2FfbGVhZGluZ19wYXJhbV9vYmplY3RfMV84MDMyXCIsXCJRdWFsaWZpZWQgbmFtZSAnezB9JyBpcyBub3QgYWxsb3dlZCB3aXRob3V0IGEgbGVhZGluZyAnQHBhcmFtIHtvYmplY3R9IHsxfScuXCIpLEFfSlNEb2NfdHlwZWRlZl9jb21tZW50X21heV9ub3RfY29udGFpbl9tdWx0aXBsZV90eXBlX3RhZ3M6YSg4MDMzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9KU0RvY190eXBlZGVmX2NvbW1lbnRfbWF5X25vdF9jb250YWluX211bHRpcGxlX3R5cGVfdGFnc184MDMzXCIsXCJBIEpTRG9jICdAdHlwZWRlZicgY29tbWVudCBtYXkgbm90IGNvbnRhaW4gbXVsdGlwbGUgJ0B0eXBlJyB0YWdzLlwiKSxUaGVfdGFnX3dhc19maXJzdF9zcGVjaWZpZWRfaGVyZTphKDgwMzQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfdGFnX3dhc19maXJzdF9zcGVjaWZpZWRfaGVyZV84MDM0XCIsXCJUaGUgdGFnIHdhcyBmaXJzdCBzcGVjaWZpZWQgaGVyZS5cIiksRGVjbGFyYXRpb25fZW1pdF9mb3JfdGhpc19maWxlX3JlcXVpcmVzX3VzaW5nX3ByaXZhdGVfbmFtZV8wX0FuX2V4cGxpY2l0X3R5cGVfYW5ub3RhdGlvbl9tYXlfdW5ibG9ja19kZWNsYXJhdGlvbl9lbWl0OmEoOTAwNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRlY2xhcmF0aW9uX2VtaXRfZm9yX3RoaXNfZmlsZV9yZXF1aXJlc191c2luZ19wcml2YXRlX25hbWVfMF9Bbl9leHBsaWNpdF90eXBlX2Fubm90YXRpb25fbWF5X3VuYmxvY2tfOTAwNVwiLFwiRGVjbGFyYXRpb24gZW1pdCBmb3IgdGhpcyBmaWxlIHJlcXVpcmVzIHVzaW5nIHByaXZhdGUgbmFtZSAnezB9Jy4gQW4gZXhwbGljaXQgdHlwZSBhbm5vdGF0aW9uIG1heSB1bmJsb2NrIGRlY2xhcmF0aW9uIGVtaXQuXCIpLERlY2xhcmF0aW9uX2VtaXRfZm9yX3RoaXNfZmlsZV9yZXF1aXJlc191c2luZ19wcml2YXRlX25hbWVfMF9mcm9tX21vZHVsZV8xX0FuX2V4cGxpY2l0X3R5cGVfYW5ub3RhdGlvbl9tYXlfdW5ibG9ja19kZWNsYXJhdGlvbl9lbWl0OmEoOTAwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkRlY2xhcmF0aW9uX2VtaXRfZm9yX3RoaXNfZmlsZV9yZXF1aXJlc191c2luZ19wcml2YXRlX25hbWVfMF9mcm9tX21vZHVsZV8xX0FuX2V4cGxpY2l0X3R5cGVfYW5ub3RhdGlfOTAwNlwiLFwiRGVjbGFyYXRpb24gZW1pdCBmb3IgdGhpcyBmaWxlIHJlcXVpcmVzIHVzaW5nIHByaXZhdGUgbmFtZSAnezB9JyBmcm9tIG1vZHVsZSAnezF9Jy4gQW4gZXhwbGljaXQgdHlwZSBhbm5vdGF0aW9uIG1heSB1bmJsb2NrIGRlY2xhcmF0aW9uIGVtaXQuXCIpLEpTWF9hdHRyaWJ1dGVzX211c3Rfb25seV9iZV9hc3NpZ25lZF9hX25vbl9lbXB0eV9leHByZXNzaW9uOmEoMTdlMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkpTWF9hdHRyaWJ1dGVzX211c3Rfb25seV9iZV9hc3NpZ25lZF9hX25vbl9lbXB0eV9leHByZXNzaW9uXzE3MDAwXCIsXCJKU1ggYXR0cmlidXRlcyBtdXN0IG9ubHkgYmUgYXNzaWduZWQgYSBub24tZW1wdHkgJ2V4cHJlc3Npb24nLlwiKSxKU1hfZWxlbWVudHNfY2Fubm90X2hhdmVfbXVsdGlwbGVfYXR0cmlidXRlc193aXRoX3RoZV9zYW1lX25hbWU6YSgxNzAwMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkpTWF9lbGVtZW50c19jYW5ub3RfaGF2ZV9tdWx0aXBsZV9hdHRyaWJ1dGVzX3dpdGhfdGhlX3NhbWVfbmFtZV8xNzAwMVwiLFwiSlNYIGVsZW1lbnRzIGNhbm5vdCBoYXZlIG11bHRpcGxlIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLlwiKSxFeHBlY3RlZF9jb3JyZXNwb25kaW5nX0pTWF9jbG9zaW5nX3RhZ19mb3JfMDphKDE3MDAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRXhwZWN0ZWRfY29ycmVzcG9uZGluZ19KU1hfY2xvc2luZ190YWdfZm9yXzBfMTcwMDJcIixcIkV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciAnezB9Jy5cIiksQ2Fubm90X3VzZV9KU1hfdW5sZXNzX3RoZV9qc3hfZmxhZ19pc19wcm92aWRlZDphKDE3MDA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2Fubm90X3VzZV9KU1hfdW5sZXNzX3RoZV9qc3hfZmxhZ19pc19wcm92aWRlZF8xNzAwNFwiLFwiQ2Fubm90IHVzZSBKU1ggdW5sZXNzIHRoZSAnLS1qc3gnIGZsYWcgaXMgcHJvdmlkZWQuXCIpLEFfY29uc3RydWN0b3JfY2Fubm90X2NvbnRhaW5fYV9zdXBlcl9jYWxsX3doZW5faXRzX2NsYXNzX2V4dGVuZHNfbnVsbDphKDE3MDA1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQV9jb25zdHJ1Y3Rvcl9jYW5ub3RfY29udGFpbl9hX3N1cGVyX2NhbGxfd2hlbl9pdHNfY2xhc3NfZXh0ZW5kc19udWxsXzE3MDA1XCIsXCJBIGNvbnN0cnVjdG9yIGNhbm5vdCBjb250YWluIGEgJ3N1cGVyJyBjYWxsIHdoZW4gaXRzIGNsYXNzIGV4dGVuZHMgJ251bGwnLlwiKSxBbl91bmFyeV9leHByZXNzaW9uX3dpdGhfdGhlXzBfb3BlcmF0b3JfaXNfbm90X2FsbG93ZWRfaW5fdGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2V4cG9uZW50aWF0aW9uX2V4cHJlc3Npb25fQ29uc2lkZXJfZW5jbG9zaW5nX3RoZV9leHByZXNzaW9uX2luX3BhcmVudGhlc2VzOmEoMTcwMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl91bmFyeV9leHByZXNzaW9uX3dpdGhfdGhlXzBfb3BlcmF0b3JfaXNfbm90X2FsbG93ZWRfaW5fdGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2V4cG9uZW50aWF0aW9uX2V4XzE3MDA2XCIsXCJBbiB1bmFyeSBleHByZXNzaW9uIHdpdGggdGhlICd7MH0nIG9wZXJhdG9yIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBleHBvbmVudGlhdGlvbiBleHByZXNzaW9uLiBDb25zaWRlciBlbmNsb3NpbmcgdGhlIGV4cHJlc3Npb24gaW4gcGFyZW50aGVzZXMuXCIpLEFfdHlwZV9hc3NlcnRpb25fZXhwcmVzc2lvbl9pc19ub3RfYWxsb3dlZF9pbl90aGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fZXhwb25lbnRpYXRpb25fZXhwcmVzc2lvbl9Db25zaWRlcl9lbmNsb3NpbmdfdGhlX2V4cHJlc3Npb25faW5fcGFyZW50aGVzZXM6YSgxNzAwNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfdHlwZV9hc3NlcnRpb25fZXhwcmVzc2lvbl9pc19ub3RfYWxsb3dlZF9pbl90aGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fZXhwb25lbnRpYXRpb25fZXhwcmVzc2lvbl9Db25fMTcwMDdcIixcIkEgdHlwZSBhc3NlcnRpb24gZXhwcmVzc2lvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgYW4gZXhwb25lbnRpYXRpb24gZXhwcmVzc2lvbi4gQ29uc2lkZXIgZW5jbG9zaW5nIHRoZSBleHByZXNzaW9uIGluIHBhcmVudGhlc2VzLlwiKSxKU1hfZWxlbWVudF8wX2hhc19ub19jb3JyZXNwb25kaW5nX2Nsb3NpbmdfdGFnOmEoMTcwMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJKU1hfZWxlbWVudF8wX2hhc19ub19jb3JyZXNwb25kaW5nX2Nsb3NpbmdfdGFnXzE3MDA4XCIsXCJKU1ggZWxlbWVudCAnezB9JyBoYXMgbm8gY29ycmVzcG9uZGluZyBjbG9zaW5nIHRhZy5cIiksc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3M6YSgxNzAwOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcInN1cGVyX211c3RfYmVfY2FsbGVkX2JlZm9yZV9hY2Nlc3NpbmdfdGhpc19pbl90aGVfY29uc3RydWN0b3Jfb2ZfYV9kZXJpdmVkX2NsYXNzXzE3MDA5XCIsXCInc3VwZXInIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgJ3RoaXMnIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuXCIpLFVua25vd25fdHlwZV9hY3F1aXNpdGlvbl9vcHRpb25fMDphKDE3MDEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVW5rbm93bl90eXBlX2FjcXVpc2l0aW9uX29wdGlvbl8wXzE3MDEwXCIsXCJVbmtub3duIHR5cGUgYWNxdWlzaXRpb24gb3B0aW9uICd7MH0nLlwiKSxzdXBlcl9tdXN0X2JlX2NhbGxlZF9iZWZvcmVfYWNjZXNzaW5nX2FfcHJvcGVydHlfb2Zfc3VwZXJfaW5fdGhlX2NvbnN0cnVjdG9yX29mX2FfZGVyaXZlZF9jbGFzczphKDE3MDExLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwic3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ19hX3Byb3BlcnR5X29mX3N1cGVyX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3NfMTcwMTFcIixcIidzdXBlcicgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyBhIHByb3BlcnR5IG9mICdzdXBlcicgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy5cIiksXzBfaXNfbm90X2FfdmFsaWRfbWV0YV9wcm9wZXJ0eV9mb3Jfa2V5d29yZF8xX0RpZF95b3VfbWVhbl8yOmEoMTcwMTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9pc19ub3RfYV92YWxpZF9tZXRhX3Byb3BlcnR5X2Zvcl9rZXl3b3JkXzFfRGlkX3lvdV9tZWFuXzJfMTcwMTJcIixcIid7MH0nIGlzIG5vdCBhIHZhbGlkIG1ldGEtcHJvcGVydHkgZm9yIGtleXdvcmQgJ3sxfScuIERpZCB5b3UgbWVhbiAnezJ9Jz9cIiksTWV0YV9wcm9wZXJ0eV8wX2lzX29ubHlfYWxsb3dlZF9pbl90aGVfYm9keV9vZl9hX2Z1bmN0aW9uX2RlY2xhcmF0aW9uX2Z1bmN0aW9uX2V4cHJlc3Npb25fb3JfY29uc3RydWN0b3I6YSgxNzAxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIk1ldGFfcHJvcGVydHlfMF9pc19vbmx5X2FsbG93ZWRfaW5fdGhlX2JvZHlfb2ZfYV9mdW5jdGlvbl9kZWNsYXJhdGlvbl9mdW5jdGlvbl9leHByZXNzaW9uX29yX2NvbnN0cnVfMTcwMTNcIixcIk1ldGEtcHJvcGVydHkgJ3swfScgaXMgb25seSBhbGxvd2VkIGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24sIGZ1bmN0aW9uIGV4cHJlc3Npb24sIG9yIGNvbnN0cnVjdG9yLlwiKSxKU1hfZnJhZ21lbnRfaGFzX25vX2NvcnJlc3BvbmRpbmdfY2xvc2luZ190YWc6YSgxNzAxNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkpTWF9mcmFnbWVudF9oYXNfbm9fY29ycmVzcG9uZGluZ19jbG9zaW5nX3RhZ18xNzAxNFwiLFwiSlNYIGZyYWdtZW50IGhhcyBubyBjb3JyZXNwb25kaW5nIGNsb3NpbmcgdGFnLlwiKSxFeHBlY3RlZF9jb3JyZXNwb25kaW5nX2Nsb3NpbmdfdGFnX2Zvcl9KU1hfZnJhZ21lbnQ6YSgxNzAxNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkV4cGVjdGVkX2NvcnJlc3BvbmRpbmdfY2xvc2luZ190YWdfZm9yX0pTWF9mcmFnbWVudF8xNzAxNVwiLFwiRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBjbG9zaW5nIHRhZyBmb3IgSlNYIGZyYWdtZW50LlwiKSxUaGVfanN4RnJhZ21lbnRGYWN0b3J5X2NvbXBpbGVyX29wdGlvbl9tdXN0X2JlX3Byb3ZpZGVkX3RvX3VzZV9KU1hfZnJhZ21lbnRzX3dpdGhfdGhlX2pzeEZhY3RvcnlfY29tcGlsZXJfb3B0aW9uOmEoMTcwMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfanN4RnJhZ21lbnRGYWN0b3J5X2NvbXBpbGVyX29wdGlvbl9tdXN0X2JlX3Byb3ZpZGVkX3RvX3VzZV9KU1hfZnJhZ21lbnRzX3dpdGhfdGhlX2pzeEZhY3RvcnlfY29tXzE3MDE2XCIsXCJUaGUgJ2pzeEZyYWdtZW50RmFjdG9yeScgY29tcGlsZXIgb3B0aW9uIG11c3QgYmUgcHJvdmlkZWQgdG8gdXNlIEpTWCBmcmFnbWVudHMgd2l0aCB0aGUgJ2pzeEZhY3RvcnknIGNvbXBpbGVyIG9wdGlvbi5cIiksQW5fanN4RnJhZ19wcmFnbWFfaXNfcmVxdWlyZWRfd2hlbl91c2luZ19hbl9qc3hfcHJhZ21hX3dpdGhfSlNYX2ZyYWdtZW50czphKDE3MDE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fanN4RnJhZ19wcmFnbWFfaXNfcmVxdWlyZWRfd2hlbl91c2luZ19hbl9qc3hfcHJhZ21hX3dpdGhfSlNYX2ZyYWdtZW50c18xNzAxN1wiLFwiQW4gQGpzeEZyYWcgcHJhZ21hIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgYW4gQGpzeCBwcmFnbWEgd2l0aCBKU1ggZnJhZ21lbnRzLlwiKSxVbmtub3duX3R5cGVfYWNxdWlzaXRpb25fb3B0aW9uXzBfRGlkX3lvdV9tZWFuXzE6YSgxNzAxOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlVua25vd25fdHlwZV9hY3F1aXNpdGlvbl9vcHRpb25fMF9EaWRfeW91X21lYW5fMV8xNzAxOFwiLFwiVW5rbm93biB0eXBlIGFjcXVpc2l0aW9uIG9wdGlvbiAnezB9Jy4gRGlkIHlvdSBtZWFuICd7MX0nP1wiKSxDaXJjdWxhcml0eV9kZXRlY3RlZF93aGlsZV9yZXNvbHZpbmdfY29uZmlndXJhdGlvbl9Db2xvbl8wOmEoMThlMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNpcmN1bGFyaXR5X2RldGVjdGVkX3doaWxlX3Jlc29sdmluZ19jb25maWd1cmF0aW9uX0NvbG9uXzBfMTgwMDBcIixcIkNpcmN1bGFyaXR5IGRldGVjdGVkIHdoaWxlIHJlc29sdmluZyBjb25maWd1cmF0aW9uOiB7MH1cIiksVGhlX2ZpbGVzX2xpc3RfaW5fY29uZmlnX2ZpbGVfMF9pc19lbXB0eTphKDE4MDAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2ZpbGVzX2xpc3RfaW5fY29uZmlnX2ZpbGVfMF9pc19lbXB0eV8xODAwMlwiLFwiVGhlICdmaWxlcycgbGlzdCBpbiBjb25maWcgZmlsZSAnezB9JyBpcyBlbXB0eS5cIiksTm9faW5wdXRzX3dlcmVfZm91bmRfaW5fY29uZmlnX2ZpbGVfMF9TcGVjaWZpZWRfaW5jbHVkZV9wYXRoc193ZXJlXzFfYW5kX2V4Y2x1ZGVfcGF0aHNfd2VyZV8yOmEoMTgwMDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb19pbnB1dHNfd2VyZV9mb3VuZF9pbl9jb25maWdfZmlsZV8wX1NwZWNpZmllZF9pbmNsdWRlX3BhdGhzX3dlcmVfMV9hbmRfZXhjbHVkZV9wYXRoc193ZXJlXzJfMTgwMDNcIixcIk5vIGlucHV0cyB3ZXJlIGZvdW5kIGluIGNvbmZpZyBmaWxlICd7MH0nLiBTcGVjaWZpZWQgJ2luY2x1ZGUnIHBhdGhzIHdlcmUgJ3sxfScgYW5kICdleGNsdWRlJyBwYXRocyB3ZXJlICd7Mn0nLlwiKSxGaWxlX2lzX2FfQ29tbW9uSlNfbW9kdWxlX2l0X21heV9iZV9jb252ZXJ0ZWRfdG9fYW5fRVNfbW9kdWxlOmEoODAwMDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuU3VnZ2VzdGlvbixcIkZpbGVfaXNfYV9Db21tb25KU19tb2R1bGVfaXRfbWF5X2JlX2NvbnZlcnRlZF90b19hbl9FU19tb2R1bGVfODAwMDFcIixcIkZpbGUgaXMgYSBDb21tb25KUyBtb2R1bGU7IGl0IG1heSBiZSBjb252ZXJ0ZWQgdG8gYW4gRVMgbW9kdWxlLlwiKSxUaGlzX2NvbnN0cnVjdG9yX2Z1bmN0aW9uX21heV9iZV9jb252ZXJ0ZWRfdG9fYV9jbGFzc19kZWNsYXJhdGlvbjphKDgwMDAyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb24sXCJUaGlzX2NvbnN0cnVjdG9yX2Z1bmN0aW9uX21heV9iZV9jb252ZXJ0ZWRfdG9fYV9jbGFzc19kZWNsYXJhdGlvbl84MDAwMlwiLFwiVGhpcyBjb25zdHJ1Y3RvciBmdW5jdGlvbiBtYXkgYmUgY29udmVydGVkIHRvIGEgY2xhc3MgZGVjbGFyYXRpb24uXCIpLEltcG9ydF9tYXlfYmVfY29udmVydGVkX3RvX2FfZGVmYXVsdF9pbXBvcnQ6YSg4MDAwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9uLFwiSW1wb3J0X21heV9iZV9jb252ZXJ0ZWRfdG9fYV9kZWZhdWx0X2ltcG9ydF84MDAwM1wiLFwiSW1wb3J0IG1heSBiZSBjb252ZXJ0ZWQgdG8gYSBkZWZhdWx0IGltcG9ydC5cIiksSlNEb2NfdHlwZXNfbWF5X2JlX21vdmVkX3RvX1R5cGVTY3JpcHRfdHlwZXM6YSg4MDAwNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9uLFwiSlNEb2NfdHlwZXNfbWF5X2JlX21vdmVkX3RvX1R5cGVTY3JpcHRfdHlwZXNfODAwMDRcIixcIkpTRG9jIHR5cGVzIG1heSBiZSBtb3ZlZCB0byBUeXBlU2NyaXB0IHR5cGVzLlwiKSxyZXF1aXJlX2NhbGxfbWF5X2JlX2NvbnZlcnRlZF90b19hbl9pbXBvcnQ6YSg4MDAwNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9uLFwicmVxdWlyZV9jYWxsX21heV9iZV9jb252ZXJ0ZWRfdG9fYW5faW1wb3J0XzgwMDA1XCIsXCIncmVxdWlyZScgY2FsbCBtYXkgYmUgY29udmVydGVkIHRvIGFuIGltcG9ydC5cIiksVGhpc19tYXlfYmVfY29udmVydGVkX3RvX2FuX2FzeW5jX2Z1bmN0aW9uOmEoODAwMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuU3VnZ2VzdGlvbixcIlRoaXNfbWF5X2JlX2NvbnZlcnRlZF90b19hbl9hc3luY19mdW5jdGlvbl84MDAwNlwiLFwiVGhpcyBtYXkgYmUgY29udmVydGVkIHRvIGFuIGFzeW5jIGZ1bmN0aW9uLlwiKSxhd2FpdF9oYXNfbm9fZWZmZWN0X29uX3RoZV90eXBlX29mX3RoaXNfZXhwcmVzc2lvbjphKDgwMDA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb24sXCJhd2FpdF9oYXNfbm9fZWZmZWN0X29uX3RoZV90eXBlX29mX3RoaXNfZXhwcmVzc2lvbl84MDAwN1wiLFwiJ2F3YWl0JyBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0eXBlIG9mIHRoaXMgZXhwcmVzc2lvbi5cIiksTnVtZXJpY19saXRlcmFsc193aXRoX2Fic29sdXRlX3ZhbHVlc19lcXVhbF90b18yXzUzX29yX2dyZWF0ZXJfYXJlX3Rvb19sYXJnZV90b19iZV9yZXByZXNlbnRlZF9hY2N1cmF0ZWx5X2FzX2ludGVnZXJzOmEoODAwMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuU3VnZ2VzdGlvbixcIk51bWVyaWNfbGl0ZXJhbHNfd2l0aF9hYnNvbHV0ZV92YWx1ZXNfZXF1YWxfdG9fMl81M19vcl9ncmVhdGVyX2FyZV90b29fbGFyZ2VfdG9fYmVfcmVwcmVzZW50ZWRfYWNjdXJfODAwMDhcIixcIk51bWVyaWMgbGl0ZXJhbHMgd2l0aCBhYnNvbHV0ZSB2YWx1ZXMgZXF1YWwgdG8gMl41MyBvciBncmVhdGVyIGFyZSB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseSBhcyBpbnRlZ2Vycy5cIiksQWRkX21pc3Npbmdfc3VwZXJfY2FsbDphKDkwMDAxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfbWlzc2luZ19zdXBlcl9jYWxsXzkwMDAxXCIsXCJBZGQgbWlzc2luZyAnc3VwZXIoKScgY2FsbFwiKSxNYWtlX3N1cGVyX2NhbGxfdGhlX2ZpcnN0X3N0YXRlbWVudF9pbl90aGVfY29uc3RydWN0b3I6YSg5MDAwMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTWFrZV9zdXBlcl9jYWxsX3RoZV9maXJzdF9zdGF0ZW1lbnRfaW5fdGhlX2NvbnN0cnVjdG9yXzkwMDAyXCIsXCJNYWtlICdzdXBlcigpJyBjYWxsIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNvbnN0cnVjdG9yXCIpLENoYW5nZV9leHRlbmRzX3RvX2ltcGxlbWVudHM6YSg5MDAwMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ2hhbmdlX2V4dGVuZHNfdG9faW1wbGVtZW50c185MDAwM1wiLFwiQ2hhbmdlICdleHRlbmRzJyB0byAnaW1wbGVtZW50cydcIiksUmVtb3ZlX3VudXNlZF9kZWNsYXJhdGlvbl9mb3JfQ29sb25fMDphKDkwMDA0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfdW51c2VkX2RlY2xhcmF0aW9uX2Zvcl9Db2xvbl8wXzkwMDA0XCIsXCJSZW1vdmUgdW51c2VkIGRlY2xhcmF0aW9uIGZvcjogJ3swfSdcIiksUmVtb3ZlX2ltcG9ydF9mcm9tXzA6YSg5MDAwNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVtb3ZlX2ltcG9ydF9mcm9tXzBfOTAwMDVcIixcIlJlbW92ZSBpbXBvcnQgZnJvbSAnezB9J1wiKSxJbXBsZW1lbnRfaW50ZXJmYWNlXzA6YSg5MDAwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wbGVtZW50X2ludGVyZmFjZV8wXzkwMDA2XCIsXCJJbXBsZW1lbnQgaW50ZXJmYWNlICd7MH0nXCIpLEltcGxlbWVudF9pbmhlcml0ZWRfYWJzdHJhY3RfY2xhc3M6YSg5MDAwNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wbGVtZW50X2luaGVyaXRlZF9hYnN0cmFjdF9jbGFzc185MDAwN1wiLFwiSW1wbGVtZW50IGluaGVyaXRlZCBhYnN0cmFjdCBjbGFzc1wiKSxBZGRfMF90b191bnJlc29sdmVkX3ZhcmlhYmxlOmEoOTAwMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF8wX3RvX3VucmVzb2x2ZWRfdmFyaWFibGVfOTAwMDhcIixcIkFkZCAnezB9LicgdG8gdW5yZXNvbHZlZCB2YXJpYWJsZVwiKSxSZW1vdmVfdmFyaWFibGVfc3RhdGVtZW50OmEoOTAwMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV92YXJpYWJsZV9zdGF0ZW1lbnRfOTAwMTBcIixcIlJlbW92ZSB2YXJpYWJsZSBzdGF0ZW1lbnRcIiksUmVtb3ZlX3RlbXBsYXRlX3RhZzphKDkwMDExLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfdGVtcGxhdGVfdGFnXzkwMDExXCIsXCJSZW1vdmUgdGVtcGxhdGUgdGFnXCIpLFJlbW92ZV90eXBlX3BhcmFtZXRlcnM6YSg5MDAxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVtb3ZlX3R5cGVfcGFyYW1ldGVyc185MDAxMlwiLFwiUmVtb3ZlIHR5cGUgcGFyYW1ldGVyc1wiKSxJbXBvcnRfMF9mcm9tXzE6YSg5MDAxMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wb3J0XzBfZnJvbV8xXzkwMDEzXCIsYEltcG9ydCAnezB9JyBmcm9tIFwiezF9XCJgKSxDaGFuZ2VfMF90b18xOmEoOTAwMTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNoYW5nZV8wX3RvXzFfOTAwMTRcIixcIkNoYW5nZSAnezB9JyB0byAnezF9J1wiKSxEZWNsYXJlX3Byb3BlcnR5XzA6YSg5MDAxNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGVjbGFyZV9wcm9wZXJ0eV8wXzkwMDE2XCIsXCJEZWNsYXJlIHByb3BlcnR5ICd7MH0nXCIpLEFkZF9pbmRleF9zaWduYXR1cmVfZm9yX3Byb3BlcnR5XzA6YSg5MDAxNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2luZGV4X3NpZ25hdHVyZV9mb3JfcHJvcGVydHlfMF85MDAxN1wiLFwiQWRkIGluZGV4IHNpZ25hdHVyZSBmb3IgcHJvcGVydHkgJ3swfSdcIiksRGlzYWJsZV9jaGVja2luZ19mb3JfdGhpc19maWxlOmEoOTAwMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRpc2FibGVfY2hlY2tpbmdfZm9yX3RoaXNfZmlsZV85MDAxOFwiLFwiRGlzYWJsZSBjaGVja2luZyBmb3IgdGhpcyBmaWxlXCIpLElnbm9yZV90aGlzX2Vycm9yX21lc3NhZ2U6YSg5MDAxOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSWdub3JlX3RoaXNfZXJyb3JfbWVzc2FnZV85MDAxOVwiLFwiSWdub3JlIHRoaXMgZXJyb3IgbWVzc2FnZVwiKSxJbml0aWFsaXplX3Byb3BlcnR5XzBfaW5fdGhlX2NvbnN0cnVjdG9yOmEoOTAwMjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkluaXRpYWxpemVfcHJvcGVydHlfMF9pbl90aGVfY29uc3RydWN0b3JfOTAwMjBcIixcIkluaXRpYWxpemUgcHJvcGVydHkgJ3swfScgaW4gdGhlIGNvbnN0cnVjdG9yXCIpLEluaXRpYWxpemVfc3RhdGljX3Byb3BlcnR5XzA6YSg5MDAyMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW5pdGlhbGl6ZV9zdGF0aWNfcHJvcGVydHlfMF85MDAyMVwiLFwiSW5pdGlhbGl6ZSBzdGF0aWMgcHJvcGVydHkgJ3swfSdcIiksQ2hhbmdlX3NwZWxsaW5nX3RvXzA6YSg5MDAyMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ2hhbmdlX3NwZWxsaW5nX3RvXzBfOTAwMjJcIixcIkNoYW5nZSBzcGVsbGluZyB0byAnezB9J1wiKSxEZWNsYXJlX21ldGhvZF8wOmEoOTAwMjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRlY2xhcmVfbWV0aG9kXzBfOTAwMjNcIixcIkRlY2xhcmUgbWV0aG9kICd7MH0nXCIpLERlY2xhcmVfc3RhdGljX21ldGhvZF8wOmEoOTAwMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRlY2xhcmVfc3RhdGljX21ldGhvZF8wXzkwMDI0XCIsXCJEZWNsYXJlIHN0YXRpYyBtZXRob2QgJ3swfSdcIiksUHJlZml4XzBfd2l0aF9hbl91bmRlcnNjb3JlOmEoOTAwMjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByZWZpeF8wX3dpdGhfYW5fdW5kZXJzY29yZV85MDAyNVwiLFwiUHJlZml4ICd7MH0nIHdpdGggYW4gdW5kZXJzY29yZVwiKSxSZXdyaXRlX2FzX3RoZV9pbmRleGVkX2FjY2Vzc190eXBlXzA6YSg5MDAyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmV3cml0ZV9hc190aGVfaW5kZXhlZF9hY2Nlc3NfdHlwZV8wXzkwMDI2XCIsXCJSZXdyaXRlIGFzIHRoZSBpbmRleGVkIGFjY2VzcyB0eXBlICd7MH0nXCIpLERlY2xhcmVfc3RhdGljX3Byb3BlcnR5XzA6YSg5MDAyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGVjbGFyZV9zdGF0aWNfcHJvcGVydHlfMF85MDAyN1wiLFwiRGVjbGFyZSBzdGF0aWMgcHJvcGVydHkgJ3swfSdcIiksQ2FsbF9kZWNvcmF0b3JfZXhwcmVzc2lvbjphKDkwMDI4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDYWxsX2RlY29yYXRvcl9leHByZXNzaW9uXzkwMDI4XCIsXCJDYWxsIGRlY29yYXRvciBleHByZXNzaW9uXCIpLEFkZF9hc3luY19tb2RpZmllcl90b19jb250YWluaW5nX2Z1bmN0aW9uOmEoOTAwMjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9hc3luY19tb2RpZmllcl90b19jb250YWluaW5nX2Z1bmN0aW9uXzkwMDI5XCIsXCJBZGQgYXN5bmMgbW9kaWZpZXIgdG8gY29udGFpbmluZyBmdW5jdGlvblwiKSxSZXBsYWNlX2luZmVyXzBfd2l0aF91bmtub3duOmEoOTAwMzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlcGxhY2VfaW5mZXJfMF93aXRoX3Vua25vd25fOTAwMzBcIixcIlJlcGxhY2UgJ2luZmVyIHswfScgd2l0aCAndW5rbm93bidcIiksUmVwbGFjZV9hbGxfdW51c2VkX2luZmVyX3dpdGhfdW5rbm93bjphKDkwMDMxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXBsYWNlX2FsbF91bnVzZWRfaW5mZXJfd2l0aF91bmtub3duXzkwMDMxXCIsXCJSZXBsYWNlIGFsbCB1bnVzZWQgJ2luZmVyJyB3aXRoICd1bmtub3duJ1wiKSxBZGRfcGFyYW1ldGVyX25hbWU6YSg5MDAzNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX3BhcmFtZXRlcl9uYW1lXzkwMDM0XCIsXCJBZGQgcGFyYW1ldGVyIG5hbWVcIiksRGVjbGFyZV9wcml2YXRlX3Byb3BlcnR5XzA6YSg5MDAzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGVjbGFyZV9wcml2YXRlX3Byb3BlcnR5XzBfOTAwMzVcIixcIkRlY2xhcmUgcHJpdmF0ZSBwcm9wZXJ0eSAnezB9J1wiKSxSZXBsYWNlXzBfd2l0aF9Qcm9taXNlXzE6YSg5MDAzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVwbGFjZV8wX3dpdGhfUHJvbWlzZV8xXzkwMDM2XCIsXCJSZXBsYWNlICd7MH0nIHdpdGggJ1Byb21pc2U8ezF9PidcIiksRml4X2FsbF9pbmNvcnJlY3RfcmV0dXJuX3R5cGVfb2ZfYW5fYXN5bmNfZnVuY3Rpb25zOmEoOTAwMzcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpeF9hbGxfaW5jb3JyZWN0X3JldHVybl90eXBlX29mX2FuX2FzeW5jX2Z1bmN0aW9uc185MDAzN1wiLFwiRml4IGFsbCBpbmNvcnJlY3QgcmV0dXJuIHR5cGUgb2YgYW4gYXN5bmMgZnVuY3Rpb25zXCIpLERlY2xhcmVfcHJpdmF0ZV9tZXRob2RfMDphKDkwMDM4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEZWNsYXJlX3ByaXZhdGVfbWV0aG9kXzBfOTAwMzhcIixcIkRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgJ3swfSdcIiksUmVtb3ZlX3VudXNlZF9kZXN0cnVjdHVyaW5nX2RlY2xhcmF0aW9uOmEoOTAwMzksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV91bnVzZWRfZGVzdHJ1Y3R1cmluZ19kZWNsYXJhdGlvbl85MDAzOVwiLFwiUmVtb3ZlIHVudXNlZCBkZXN0cnVjdHVyaW5nIGRlY2xhcmF0aW9uXCIpLFJlbW92ZV91bnVzZWRfZGVjbGFyYXRpb25zX2Zvcl9Db2xvbl8wOmEoOTAwNDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV91bnVzZWRfZGVjbGFyYXRpb25zX2Zvcl9Db2xvbl8wXzkwMDQxXCIsXCJSZW1vdmUgdW51c2VkIGRlY2xhcmF0aW9ucyBmb3I6ICd7MH0nXCIpLERlY2xhcmVfYV9wcml2YXRlX2ZpZWxkX25hbWVkXzA6YSg5MDA1MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGVjbGFyZV9hX3ByaXZhdGVfZmllbGRfbmFtZWRfMF85MDA1M1wiLFwiRGVjbGFyZSBhIHByaXZhdGUgZmllbGQgbmFtZWQgJ3swfScuXCIpLEluY2x1ZGVzX2ltcG9ydHNfb2ZfdHlwZXNfcmVmZXJlbmNlZF9ieV8wOmEoOTAwNTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkluY2x1ZGVzX2ltcG9ydHNfb2ZfdHlwZXNfcmVmZXJlbmNlZF9ieV8wXzkwMDU0XCIsXCJJbmNsdWRlcyBpbXBvcnRzIG9mIHR5cGVzIHJlZmVyZW5jZWQgYnkgJ3swfSdcIiksUmVtb3ZlX3R5cGVfZnJvbV9pbXBvcnRfZGVjbGFyYXRpb25fZnJvbV8wOmEoOTAwNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV90eXBlX2Zyb21faW1wb3J0X2RlY2xhcmF0aW9uX2Zyb21fMF85MDA1NVwiLGBSZW1vdmUgJ3R5cGUnIGZyb20gaW1wb3J0IGRlY2xhcmF0aW9uIGZyb20gXCJ7MH1cImApLFJlbW92ZV90eXBlX2Zyb21faW1wb3J0X29mXzBfZnJvbV8xOmEoOTAwNTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV90eXBlX2Zyb21faW1wb3J0X29mXzBfZnJvbV8xXzkwMDU2XCIsYFJlbW92ZSAndHlwZScgZnJvbSBpbXBvcnQgb2YgJ3swfScgZnJvbSBcInsxfVwiYCksQWRkX2ltcG9ydF9mcm9tXzA6YSg5MDA1NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2ltcG9ydF9mcm9tXzBfOTAwNTdcIiwnQWRkIGltcG9ydCBmcm9tIFwiezB9XCInKSxVcGRhdGVfaW1wb3J0X2Zyb21fMDphKDkwMDU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJVcGRhdGVfaW1wb3J0X2Zyb21fMF85MDA1OFwiLCdVcGRhdGUgaW1wb3J0IGZyb20gXCJ7MH1cIicpLENvbnZlcnRfZnVuY3Rpb25fdG9fYW5fRVMyMDE1X2NsYXNzOmEoOTUwMDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfZnVuY3Rpb25fdG9fYW5fRVMyMDE1X2NsYXNzXzk1MDAxXCIsXCJDb252ZXJ0IGZ1bmN0aW9uIHRvIGFuIEVTMjAxNSBjbGFzc1wiKSxDb252ZXJ0XzBfdG9fMV9pbl8wOmEoOTUwMDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfMF90b18xX2luXzBfOTUwMDNcIixcIkNvbnZlcnQgJ3swfScgdG8gJ3sxfSBpbiB7MH0nXCIpLEV4dHJhY3RfdG9fMF9pbl8xOmEoOTUwMDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkV4dHJhY3RfdG9fMF9pbl8xXzk1MDA0XCIsXCJFeHRyYWN0IHRvIHswfSBpbiB7MX1cIiksRXh0cmFjdF9mdW5jdGlvbjphKDk1MDA1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFeHRyYWN0X2Z1bmN0aW9uXzk1MDA1XCIsXCJFeHRyYWN0IGZ1bmN0aW9uXCIpLEV4dHJhY3RfY29uc3RhbnQ6YSg5NTAwNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRXh0cmFjdF9jb25zdGFudF85NTAwNlwiLFwiRXh0cmFjdCBjb25zdGFudFwiKSxFeHRyYWN0X3RvXzBfaW5fZW5jbG9zaW5nX3Njb3BlOmEoOTUwMDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkV4dHJhY3RfdG9fMF9pbl9lbmNsb3Npbmdfc2NvcGVfOTUwMDdcIixcIkV4dHJhY3QgdG8gezB9IGluIGVuY2xvc2luZyBzY29wZVwiKSxFeHRyYWN0X3RvXzBfaW5fMV9zY29wZTphKDk1MDA4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFeHRyYWN0X3RvXzBfaW5fMV9zY29wZV85NTAwOFwiLFwiRXh0cmFjdCB0byB7MH0gaW4gezF9IHNjb3BlXCIpLEFubm90YXRlX3dpdGhfdHlwZV9mcm9tX0pTRG9jOmEoOTUwMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFubm90YXRlX3dpdGhfdHlwZV9mcm9tX0pTRG9jXzk1MDA5XCIsXCJBbm5vdGF0ZSB3aXRoIHR5cGUgZnJvbSBKU0RvY1wiKSxJbmZlcl90eXBlX29mXzBfZnJvbV91c2FnZTphKDk1MDExLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbmZlcl90eXBlX29mXzBfZnJvbV91c2FnZV85NTAxMVwiLFwiSW5mZXIgdHlwZSBvZiAnezB9JyBmcm9tIHVzYWdlXCIpLEluZmVyX3BhcmFtZXRlcl90eXBlc19mcm9tX3VzYWdlOmEoOTUwMTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkluZmVyX3BhcmFtZXRlcl90eXBlc19mcm9tX3VzYWdlXzk1MDEyXCIsXCJJbmZlciBwYXJhbWV0ZXIgdHlwZXMgZnJvbSB1c2FnZVwiKSxDb252ZXJ0X3RvX2RlZmF1bHRfaW1wb3J0OmEoOTUwMTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfdG9fZGVmYXVsdF9pbXBvcnRfOTUwMTNcIixcIkNvbnZlcnQgdG8gZGVmYXVsdCBpbXBvcnRcIiksSW5zdGFsbF8wOmEoOTUwMTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkluc3RhbGxfMF85NTAxNFwiLFwiSW5zdGFsbCAnezB9J1wiKSxSZXBsYWNlX2ltcG9ydF93aXRoXzA6YSg5NTAxNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVwbGFjZV9pbXBvcnRfd2l0aF8wXzk1MDE1XCIsXCJSZXBsYWNlIGltcG9ydCB3aXRoICd7MH0nLlwiKSxVc2Vfc3ludGhldGljX2RlZmF1bHRfbWVtYmVyOmEoOTUwMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlVzZV9zeW50aGV0aWNfZGVmYXVsdF9tZW1iZXJfOTUwMTZcIixcIlVzZSBzeW50aGV0aWMgJ2RlZmF1bHQnIG1lbWJlci5cIiksQ29udmVydF90b19FU19tb2R1bGU6YSg5NTAxNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udmVydF90b19FU19tb2R1bGVfOTUwMTdcIixcIkNvbnZlcnQgdG8gRVMgbW9kdWxlXCIpLEFkZF91bmRlZmluZWRfdHlwZV90b19wcm9wZXJ0eV8wOmEoOTUwMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF91bmRlZmluZWRfdHlwZV90b19wcm9wZXJ0eV8wXzk1MDE4XCIsXCJBZGQgJ3VuZGVmaW5lZCcgdHlwZSB0byBwcm9wZXJ0eSAnezB9J1wiKSxBZGRfaW5pdGlhbGl6ZXJfdG9fcHJvcGVydHlfMDphKDk1MDE5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfaW5pdGlhbGl6ZXJfdG9fcHJvcGVydHlfMF85NTAxOVwiLFwiQWRkIGluaXRpYWxpemVyIHRvIHByb3BlcnR5ICd7MH0nXCIpLEFkZF9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl90b19wcm9wZXJ0eV8wOmEoOTUwMjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl90b19wcm9wZXJ0eV8wXzk1MDIwXCIsXCJBZGQgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb24gdG8gcHJvcGVydHkgJ3swfSdcIiksQ29udmVydF9hbGxfdHlwZV9saXRlcmFsc190b19tYXBwZWRfdHlwZTphKDk1MDIxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X2FsbF90eXBlX2xpdGVyYWxzX3RvX21hcHBlZF90eXBlXzk1MDIxXCIsXCJDb252ZXJ0IGFsbCB0eXBlIGxpdGVyYWxzIHRvIG1hcHBlZCB0eXBlXCIpLEFkZF9hbGxfbWlzc2luZ19tZW1iZXJzOmEoOTUwMjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9hbGxfbWlzc2luZ19tZW1iZXJzXzk1MDIyXCIsXCJBZGQgYWxsIG1pc3NpbmcgbWVtYmVyc1wiKSxJbmZlcl9hbGxfdHlwZXNfZnJvbV91c2FnZTphKDk1MDIzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJJbmZlcl9hbGxfdHlwZXNfZnJvbV91c2FnZV85NTAyM1wiLFwiSW5mZXIgYWxsIHR5cGVzIGZyb20gdXNhZ2VcIiksRGVsZXRlX2FsbF91bnVzZWRfZGVjbGFyYXRpb25zOmEoOTUwMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkRlbGV0ZV9hbGxfdW51c2VkX2RlY2xhcmF0aW9uc185NTAyNFwiLFwiRGVsZXRlIGFsbCB1bnVzZWQgZGVjbGFyYXRpb25zXCIpLFByZWZpeF9hbGxfdW51c2VkX2RlY2xhcmF0aW9uc193aXRoX3doZXJlX3Bvc3NpYmxlOmEoOTUwMjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByZWZpeF9hbGxfdW51c2VkX2RlY2xhcmF0aW9uc193aXRoX3doZXJlX3Bvc3NpYmxlXzk1MDI1XCIsXCJQcmVmaXggYWxsIHVudXNlZCBkZWNsYXJhdGlvbnMgd2l0aCAnXycgd2hlcmUgcG9zc2libGVcIiksRml4X2FsbF9kZXRlY3RlZF9zcGVsbGluZ19lcnJvcnM6YSg5NTAyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRml4X2FsbF9kZXRlY3RlZF9zcGVsbGluZ19lcnJvcnNfOTUwMjZcIixcIkZpeCBhbGwgZGV0ZWN0ZWQgc3BlbGxpbmcgZXJyb3JzXCIpLEFkZF9pbml0aWFsaXplcnNfdG9fYWxsX3VuaW5pdGlhbGl6ZWRfcHJvcGVydGllczphKDk1MDI3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfaW5pdGlhbGl6ZXJzX3RvX2FsbF91bmluaXRpYWxpemVkX3Byb3BlcnRpZXNfOTUwMjdcIixcIkFkZCBpbml0aWFsaXplcnMgdG8gYWxsIHVuaW5pdGlhbGl6ZWQgcHJvcGVydGllc1wiKSxBZGRfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25zX3RvX2FsbF91bmluaXRpYWxpemVkX3Byb3BlcnRpZXM6YSg5NTAyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2RlZmluaXRlX2Fzc2lnbm1lbnRfYXNzZXJ0aW9uc190b19hbGxfdW5pbml0aWFsaXplZF9wcm9wZXJ0aWVzXzk1MDI4XCIsXCJBZGQgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb25zIHRvIGFsbCB1bmluaXRpYWxpemVkIHByb3BlcnRpZXNcIiksQWRkX3VuZGVmaW5lZF90eXBlX3RvX2FsbF91bmluaXRpYWxpemVkX3Byb3BlcnRpZXM6YSg5NTAyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX3VuZGVmaW5lZF90eXBlX3RvX2FsbF91bmluaXRpYWxpemVkX3Byb3BlcnRpZXNfOTUwMjlcIixcIkFkZCB1bmRlZmluZWQgdHlwZSB0byBhbGwgdW5pbml0aWFsaXplZCBwcm9wZXJ0aWVzXCIpLENoYW5nZV9hbGxfanNkb2Nfc3R5bGVfdHlwZXNfdG9fVHlwZVNjcmlwdDphKDk1MDMwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDaGFuZ2VfYWxsX2pzZG9jX3N0eWxlX3R5cGVzX3RvX1R5cGVTY3JpcHRfOTUwMzBcIixcIkNoYW5nZSBhbGwganNkb2Mtc3R5bGUgdHlwZXMgdG8gVHlwZVNjcmlwdFwiKSxDaGFuZ2VfYWxsX2pzZG9jX3N0eWxlX3R5cGVzX3RvX1R5cGVTY3JpcHRfYW5kX2FkZF91bmRlZmluZWRfdG9fbnVsbGFibGVfdHlwZXM6YSg5NTAzMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ2hhbmdlX2FsbF9qc2RvY19zdHlsZV90eXBlc190b19UeXBlU2NyaXB0X2FuZF9hZGRfdW5kZWZpbmVkX3RvX251bGxhYmxlX3R5cGVzXzk1MDMxXCIsXCJDaGFuZ2UgYWxsIGpzZG9jLXN0eWxlIHR5cGVzIHRvIFR5cGVTY3JpcHQgKGFuZCBhZGQgJ3wgdW5kZWZpbmVkJyB0byBudWxsYWJsZSB0eXBlcylcIiksSW1wbGVtZW50X2FsbF91bmltcGxlbWVudGVkX2ludGVyZmFjZXM6YSg5NTAzMixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW1wbGVtZW50X2FsbF91bmltcGxlbWVudGVkX2ludGVyZmFjZXNfOTUwMzJcIixcIkltcGxlbWVudCBhbGwgdW5pbXBsZW1lbnRlZCBpbnRlcmZhY2VzXCIpLEluc3RhbGxfYWxsX21pc3NpbmdfdHlwZXNfcGFja2FnZXM6YSg5NTAzMyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiSW5zdGFsbF9hbGxfbWlzc2luZ190eXBlc19wYWNrYWdlc185NTAzM1wiLFwiSW5zdGFsbCBhbGwgbWlzc2luZyB0eXBlcyBwYWNrYWdlc1wiKSxSZXdyaXRlX2FsbF9hc19pbmRleGVkX2FjY2Vzc190eXBlczphKDk1MDM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXdyaXRlX2FsbF9hc19pbmRleGVkX2FjY2Vzc190eXBlc185NTAzNFwiLFwiUmV3cml0ZSBhbGwgYXMgaW5kZXhlZCBhY2Nlc3MgdHlwZXNcIiksQ29udmVydF9hbGxfdG9fZGVmYXVsdF9pbXBvcnRzOmEoOTUwMzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfYWxsX3RvX2RlZmF1bHRfaW1wb3J0c185NTAzNVwiLFwiQ29udmVydCBhbGwgdG8gZGVmYXVsdCBpbXBvcnRzXCIpLE1ha2VfYWxsX3N1cGVyX2NhbGxzX3RoZV9maXJzdF9zdGF0ZW1lbnRfaW5fdGhlaXJfY29uc3RydWN0b3I6YSg5NTAzNixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiTWFrZV9hbGxfc3VwZXJfY2FsbHNfdGhlX2ZpcnN0X3N0YXRlbWVudF9pbl90aGVpcl9jb25zdHJ1Y3Rvcl85NTAzNlwiLFwiTWFrZSBhbGwgJ3N1cGVyKCknIGNhbGxzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlaXIgY29uc3RydWN0b3JcIiksQWRkX3F1YWxpZmllcl90b19hbGxfdW5yZXNvbHZlZF92YXJpYWJsZXNfbWF0Y2hpbmdfYV9tZW1iZXJfbmFtZTphKDk1MDM3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfcXVhbGlmaWVyX3RvX2FsbF91bnJlc29sdmVkX3ZhcmlhYmxlc19tYXRjaGluZ19hX21lbWJlcl9uYW1lXzk1MDM3XCIsXCJBZGQgcXVhbGlmaWVyIHRvIGFsbCB1bnJlc29sdmVkIHZhcmlhYmxlcyBtYXRjaGluZyBhIG1lbWJlciBuYW1lXCIpLENoYW5nZV9hbGxfZXh0ZW5kZWRfaW50ZXJmYWNlc190b19pbXBsZW1lbnRzOmEoOTUwMzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNoYW5nZV9hbGxfZXh0ZW5kZWRfaW50ZXJmYWNlc190b19pbXBsZW1lbnRzXzk1MDM4XCIsXCJDaGFuZ2UgYWxsIGV4dGVuZGVkIGludGVyZmFjZXMgdG8gJ2ltcGxlbWVudHMnXCIpLEFkZF9hbGxfbWlzc2luZ19zdXBlcl9jYWxsczphKDk1MDM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfYWxsX21pc3Npbmdfc3VwZXJfY2FsbHNfOTUwMzlcIixcIkFkZCBhbGwgbWlzc2luZyBzdXBlciBjYWxsc1wiKSxJbXBsZW1lbnRfYWxsX2luaGVyaXRlZF9hYnN0cmFjdF9jbGFzc2VzOmEoOTUwNDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkltcGxlbWVudF9hbGxfaW5oZXJpdGVkX2Fic3RyYWN0X2NsYXNzZXNfOTUwNDBcIixcIkltcGxlbWVudCBhbGwgaW5oZXJpdGVkIGFic3RyYWN0IGNsYXNzZXNcIiksQWRkX2FsbF9taXNzaW5nX2FzeW5jX21vZGlmaWVyczphKDk1MDQxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfYWxsX21pc3NpbmdfYXN5bmNfbW9kaWZpZXJzXzk1MDQxXCIsXCJBZGQgYWxsIG1pc3NpbmcgJ2FzeW5jJyBtb2RpZmllcnNcIiksQWRkX3RzX2lnbm9yZV90b19hbGxfZXJyb3JfbWVzc2FnZXM6YSg5NTA0MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX3RzX2lnbm9yZV90b19hbGxfZXJyb3JfbWVzc2FnZXNfOTUwNDJcIixcIkFkZCAnQHRzLWlnbm9yZScgdG8gYWxsIGVycm9yIG1lc3NhZ2VzXCIpLEFubm90YXRlX2V2ZXJ5dGhpbmdfd2l0aF90eXBlc19mcm9tX0pTRG9jOmEoOTUwNDMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFubm90YXRlX2V2ZXJ5dGhpbmdfd2l0aF90eXBlc19mcm9tX0pTRG9jXzk1MDQzXCIsXCJBbm5vdGF0ZSBldmVyeXRoaW5nIHdpdGggdHlwZXMgZnJvbSBKU0RvY1wiKSxBZGRfdG9fYWxsX3VuY2FsbGVkX2RlY29yYXRvcnM6YSg5NTA0NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX3RvX2FsbF91bmNhbGxlZF9kZWNvcmF0b3JzXzk1MDQ0XCIsXCJBZGQgJygpJyB0byBhbGwgdW5jYWxsZWQgZGVjb3JhdG9yc1wiKSxDb252ZXJ0X2FsbF9jb25zdHJ1Y3Rvcl9mdW5jdGlvbnNfdG9fY2xhc3NlczphKDk1MDQ1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X2FsbF9jb25zdHJ1Y3Rvcl9mdW5jdGlvbnNfdG9fY2xhc3Nlc185NTA0NVwiLFwiQ29udmVydCBhbGwgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRvIGNsYXNzZXNcIiksR2VuZXJhdGVfZ2V0X2FuZF9zZXRfYWNjZXNzb3JzOmEoOTUwNDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkdlbmVyYXRlX2dldF9hbmRfc2V0X2FjY2Vzc29yc185NTA0NlwiLFwiR2VuZXJhdGUgJ2dldCcgYW5kICdzZXQnIGFjY2Vzc29yc1wiKSxDb252ZXJ0X3JlcXVpcmVfdG9faW1wb3J0OmEoOTUwNDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfcmVxdWlyZV90b19pbXBvcnRfOTUwNDdcIixcIkNvbnZlcnQgJ3JlcXVpcmUnIHRvICdpbXBvcnQnXCIpLENvbnZlcnRfYWxsX3JlcXVpcmVfdG9faW1wb3J0OmEoOTUwNDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfYWxsX3JlcXVpcmVfdG9faW1wb3J0Xzk1MDQ4XCIsXCJDb252ZXJ0IGFsbCAncmVxdWlyZScgdG8gJ2ltcG9ydCdcIiksTW92ZV90b19hX25ld19maWxlOmEoOTUwNDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIk1vdmVfdG9fYV9uZXdfZmlsZV85NTA0OVwiLFwiTW92ZSB0byBhIG5ldyBmaWxlXCIpLFJlbW92ZV91bnJlYWNoYWJsZV9jb2RlOmEoOTUwNTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV91bnJlYWNoYWJsZV9jb2RlXzk1MDUwXCIsXCJSZW1vdmUgdW5yZWFjaGFibGUgY29kZVwiKSxSZW1vdmVfYWxsX3VucmVhY2hhYmxlX2NvZGU6YSg5NTA1MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVtb3ZlX2FsbF91bnJlYWNoYWJsZV9jb2RlXzk1MDUxXCIsXCJSZW1vdmUgYWxsIHVucmVhY2hhYmxlIGNvZGVcIiksQWRkX21pc3NpbmdfdHlwZW9mOmEoOTUwNTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9taXNzaW5nX3R5cGVvZl85NTA1MlwiLFwiQWRkIG1pc3NpbmcgJ3R5cGVvZidcIiksUmVtb3ZlX3VudXNlZF9sYWJlbDphKDk1MDUzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfdW51c2VkX2xhYmVsXzk1MDUzXCIsXCJSZW1vdmUgdW51c2VkIGxhYmVsXCIpLFJlbW92ZV9hbGxfdW51c2VkX2xhYmVsczphKDk1MDU0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfYWxsX3VudXNlZF9sYWJlbHNfOTUwNTRcIixcIlJlbW92ZSBhbGwgdW51c2VkIGxhYmVsc1wiKSxDb252ZXJ0XzBfdG9fbWFwcGVkX29iamVjdF90eXBlOmEoOTUwNTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfMF90b19tYXBwZWRfb2JqZWN0X3R5cGVfOTUwNTVcIixcIkNvbnZlcnQgJ3swfScgdG8gbWFwcGVkIG9iamVjdCB0eXBlXCIpLENvbnZlcnRfbmFtZXNwYWNlX2ltcG9ydF90b19uYW1lZF9pbXBvcnRzOmEoOTUwNTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfbmFtZXNwYWNlX2ltcG9ydF90b19uYW1lZF9pbXBvcnRzXzk1MDU2XCIsXCJDb252ZXJ0IG5hbWVzcGFjZSBpbXBvcnQgdG8gbmFtZWQgaW1wb3J0c1wiKSxDb252ZXJ0X25hbWVkX2ltcG9ydHNfdG9fbmFtZXNwYWNlX2ltcG9ydDphKDk1MDU3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X25hbWVkX2ltcG9ydHNfdG9fbmFtZXNwYWNlX2ltcG9ydF85NTA1N1wiLFwiQ29udmVydCBuYW1lZCBpbXBvcnRzIHRvIG5hbWVzcGFjZSBpbXBvcnRcIiksQWRkX29yX3JlbW92ZV9icmFjZXNfaW5fYW5fYXJyb3dfZnVuY3Rpb246YSg5NTA1OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX29yX3JlbW92ZV9icmFjZXNfaW5fYW5fYXJyb3dfZnVuY3Rpb25fOTUwNThcIixcIkFkZCBvciByZW1vdmUgYnJhY2VzIGluIGFuIGFycm93IGZ1bmN0aW9uXCIpLEFkZF9icmFjZXNfdG9fYXJyb3dfZnVuY3Rpb246YSg5NTA1OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2JyYWNlc190b19hcnJvd19mdW5jdGlvbl85NTA1OVwiLFwiQWRkIGJyYWNlcyB0byBhcnJvdyBmdW5jdGlvblwiKSxSZW1vdmVfYnJhY2VzX2Zyb21fYXJyb3dfZnVuY3Rpb246YSg5NTA2MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVtb3ZlX2JyYWNlc19mcm9tX2Fycm93X2Z1bmN0aW9uXzk1MDYwXCIsXCJSZW1vdmUgYnJhY2VzIGZyb20gYXJyb3cgZnVuY3Rpb25cIiksQ29udmVydF9kZWZhdWx0X2V4cG9ydF90b19uYW1lZF9leHBvcnQ6YSg5NTA2MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udmVydF9kZWZhdWx0X2V4cG9ydF90b19uYW1lZF9leHBvcnRfOTUwNjFcIixcIkNvbnZlcnQgZGVmYXVsdCBleHBvcnQgdG8gbmFtZWQgZXhwb3J0XCIpLENvbnZlcnRfbmFtZWRfZXhwb3J0X3RvX2RlZmF1bHRfZXhwb3J0OmEoOTUwNjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfbmFtZWRfZXhwb3J0X3RvX2RlZmF1bHRfZXhwb3J0Xzk1MDYyXCIsXCJDb252ZXJ0IG5hbWVkIGV4cG9ydCB0byBkZWZhdWx0IGV4cG9ydFwiKSxBZGRfbWlzc2luZ19lbnVtX21lbWJlcl8wOmEoOTUwNjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9taXNzaW5nX2VudW1fbWVtYmVyXzBfOTUwNjNcIixcIkFkZCBtaXNzaW5nIGVudW0gbWVtYmVyICd7MH0nXCIpLEFkZF9hbGxfbWlzc2luZ19pbXBvcnRzOmEoOTUwNjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9hbGxfbWlzc2luZ19pbXBvcnRzXzk1MDY0XCIsXCJBZGQgYWxsIG1pc3NpbmcgaW1wb3J0c1wiKSxDb252ZXJ0X3RvX2FzeW5jX2Z1bmN0aW9uOmEoOTUwNjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfdG9fYXN5bmNfZnVuY3Rpb25fOTUwNjVcIixcIkNvbnZlcnQgdG8gYXN5bmMgZnVuY3Rpb25cIiksQ29udmVydF9hbGxfdG9fYXN5bmNfZnVuY3Rpb25zOmEoOTUwNjYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfYWxsX3RvX2FzeW5jX2Z1bmN0aW9uc185NTA2NlwiLFwiQ29udmVydCBhbGwgdG8gYXN5bmMgZnVuY3Rpb25zXCIpLEFkZF9taXNzaW5nX2NhbGxfcGFyZW50aGVzZXM6YSg5NTA2NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX21pc3NpbmdfY2FsbF9wYXJlbnRoZXNlc185NTA2N1wiLFwiQWRkIG1pc3NpbmcgY2FsbCBwYXJlbnRoZXNlc1wiKSxBZGRfYWxsX21pc3NpbmdfY2FsbF9wYXJlbnRoZXNlczphKDk1MDY4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfYWxsX21pc3NpbmdfY2FsbF9wYXJlbnRoZXNlc185NTA2OFwiLFwiQWRkIGFsbCBtaXNzaW5nIGNhbGwgcGFyZW50aGVzZXNcIiksQWRkX3Vua25vd25fY29udmVyc2lvbl9mb3Jfbm9uX292ZXJsYXBwaW5nX3R5cGVzOmEoOTUwNjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF91bmtub3duX2NvbnZlcnNpb25fZm9yX25vbl9vdmVybGFwcGluZ190eXBlc185NTA2OVwiLFwiQWRkICd1bmtub3duJyBjb252ZXJzaW9uIGZvciBub24tb3ZlcmxhcHBpbmcgdHlwZXNcIiksQWRkX3Vua25vd25fdG9fYWxsX2NvbnZlcnNpb25zX29mX25vbl9vdmVybGFwcGluZ190eXBlczphKDk1MDcwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfdW5rbm93bl90b19hbGxfY29udmVyc2lvbnNfb2Zfbm9uX292ZXJsYXBwaW5nX3R5cGVzXzk1MDcwXCIsXCJBZGQgJ3Vua25vd24nIHRvIGFsbCBjb252ZXJzaW9ucyBvZiBub24tb3ZlcmxhcHBpbmcgdHlwZXNcIiksQWRkX21pc3NpbmdfbmV3X29wZXJhdG9yX3RvX2NhbGw6YSg5NTA3MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX21pc3NpbmdfbmV3X29wZXJhdG9yX3RvX2NhbGxfOTUwNzFcIixcIkFkZCBtaXNzaW5nICduZXcnIG9wZXJhdG9yIHRvIGNhbGxcIiksQWRkX21pc3NpbmdfbmV3X29wZXJhdG9yX3RvX2FsbF9jYWxsczphKDk1MDcyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfbWlzc2luZ19uZXdfb3BlcmF0b3JfdG9fYWxsX2NhbGxzXzk1MDcyXCIsXCJBZGQgbWlzc2luZyAnbmV3JyBvcGVyYXRvciB0byBhbGwgY2FsbHNcIiksQWRkX25hbWVzX3RvX2FsbF9wYXJhbWV0ZXJzX3dpdGhvdXRfbmFtZXM6YSg5NTA3MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX25hbWVzX3RvX2FsbF9wYXJhbWV0ZXJzX3dpdGhvdXRfbmFtZXNfOTUwNzNcIixcIkFkZCBuYW1lcyB0byBhbGwgcGFyYW1ldGVycyB3aXRob3V0IG5hbWVzXCIpLEVuYWJsZV90aGVfZXhwZXJpbWVudGFsRGVjb3JhdG9yc19vcHRpb25faW5feW91cl9jb25maWd1cmF0aW9uX2ZpbGU6YSg5NTA3NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlX3RoZV9leHBlcmltZW50YWxEZWNvcmF0b3JzX29wdGlvbl9pbl95b3VyX2NvbmZpZ3VyYXRpb25fZmlsZV85NTA3NFwiLFwiRW5hYmxlIHRoZSAnZXhwZXJpbWVudGFsRGVjb3JhdG9ycycgb3B0aW9uIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlXCIpLENvbnZlcnRfcGFyYW1ldGVyc190b19kZXN0cnVjdHVyZWRfb2JqZWN0OmEoOTUwNzUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfcGFyYW1ldGVyc190b19kZXN0cnVjdHVyZWRfb2JqZWN0Xzk1MDc1XCIsXCJDb252ZXJ0IHBhcmFtZXRlcnMgdG8gZGVzdHJ1Y3R1cmVkIG9iamVjdFwiKSxFeHRyYWN0X3R5cGU6YSg5NTA3NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRXh0cmFjdF90eXBlXzk1MDc3XCIsXCJFeHRyYWN0IHR5cGVcIiksRXh0cmFjdF90b190eXBlX2FsaWFzOmEoOTUwNzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkV4dHJhY3RfdG9fdHlwZV9hbGlhc185NTA3OFwiLFwiRXh0cmFjdCB0byB0eXBlIGFsaWFzXCIpLEV4dHJhY3RfdG9fdHlwZWRlZjphKDk1MDc5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJFeHRyYWN0X3RvX3R5cGVkZWZfOTUwNzlcIixcIkV4dHJhY3QgdG8gdHlwZWRlZlwiKSxJbmZlcl90aGlzX3R5cGVfb2ZfMF9mcm9tX3VzYWdlOmEoOTUwODAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkluZmVyX3RoaXNfdHlwZV9vZl8wX2Zyb21fdXNhZ2VfOTUwODBcIixcIkluZmVyICd0aGlzJyB0eXBlIG9mICd7MH0nIGZyb20gdXNhZ2VcIiksQWRkX2NvbnN0X3RvX3VucmVzb2x2ZWRfdmFyaWFibGU6YSg5NTA4MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2NvbnN0X3RvX3VucmVzb2x2ZWRfdmFyaWFibGVfOTUwODFcIixcIkFkZCAnY29uc3QnIHRvIHVucmVzb2x2ZWQgdmFyaWFibGVcIiksQWRkX2NvbnN0X3RvX2FsbF91bnJlc29sdmVkX3ZhcmlhYmxlczphKDk1MDgyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfY29uc3RfdG9fYWxsX3VucmVzb2x2ZWRfdmFyaWFibGVzXzk1MDgyXCIsXCJBZGQgJ2NvbnN0JyB0byBhbGwgdW5yZXNvbHZlZCB2YXJpYWJsZXNcIiksQWRkX2F3YWl0OmEoOTUwODMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9hd2FpdF85NTA4M1wiLFwiQWRkICdhd2FpdCdcIiksQWRkX2F3YWl0X3RvX2luaXRpYWxpemVyX2Zvcl8wOmEoOTUwODQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9hd2FpdF90b19pbml0aWFsaXplcl9mb3JfMF85NTA4NFwiLFwiQWRkICdhd2FpdCcgdG8gaW5pdGlhbGl6ZXIgZm9yICd7MH0nXCIpLEZpeF9hbGxfZXhwcmVzc2lvbnNfcG9zc2libHlfbWlzc2luZ19hd2FpdDphKDk1MDg1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJGaXhfYWxsX2V4cHJlc3Npb25zX3Bvc3NpYmx5X21pc3NpbmdfYXdhaXRfOTUwODVcIixcIkZpeCBhbGwgZXhwcmVzc2lvbnMgcG9zc2libHkgbWlzc2luZyAnYXdhaXQnXCIpLFJlbW92ZV91bm5lY2Vzc2FyeV9hd2FpdDphKDk1MDg2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfdW5uZWNlc3NhcnlfYXdhaXRfOTUwODZcIixcIlJlbW92ZSB1bm5lY2Vzc2FyeSAnYXdhaXQnXCIpLFJlbW92ZV9hbGxfdW5uZWNlc3NhcnlfdXNlc19vZl9hd2FpdDphKDk1MDg3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfYWxsX3VubmVjZXNzYXJ5X3VzZXNfb2ZfYXdhaXRfOTUwODdcIixcIlJlbW92ZSBhbGwgdW5uZWNlc3NhcnkgdXNlcyBvZiAnYXdhaXQnXCIpLEVuYWJsZV90aGVfanN4X2ZsYWdfaW5feW91cl9jb25maWd1cmF0aW9uX2ZpbGU6YSg5NTA4OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRW5hYmxlX3RoZV9qc3hfZmxhZ19pbl95b3VyX2NvbmZpZ3VyYXRpb25fZmlsZV85NTA4OFwiLFwiRW5hYmxlIHRoZSAnLS1qc3gnIGZsYWcgaW4geW91ciBjb25maWd1cmF0aW9uIGZpbGVcIiksQWRkX2F3YWl0X3RvX2luaXRpYWxpemVyczphKDk1MDg5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfYXdhaXRfdG9faW5pdGlhbGl6ZXJzXzk1MDg5XCIsXCJBZGQgJ2F3YWl0JyB0byBpbml0aWFsaXplcnNcIiksRXh0cmFjdF90b19pbnRlcmZhY2U6YSg5NTA5MCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRXh0cmFjdF90b19pbnRlcmZhY2VfOTUwOTBcIixcIkV4dHJhY3QgdG8gaW50ZXJmYWNlXCIpLENvbnZlcnRfdG9fYV9iaWdpbnRfbnVtZXJpY19saXRlcmFsOmEoOTUwOTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfdG9fYV9iaWdpbnRfbnVtZXJpY19saXRlcmFsXzk1MDkxXCIsXCJDb252ZXJ0IHRvIGEgYmlnaW50IG51bWVyaWMgbGl0ZXJhbFwiKSxDb252ZXJ0X2FsbF90b19iaWdpbnRfbnVtZXJpY19saXRlcmFsczphKDk1MDkyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X2FsbF90b19iaWdpbnRfbnVtZXJpY19saXRlcmFsc185NTA5MlwiLFwiQ29udmVydCBhbGwgdG8gYmlnaW50IG51bWVyaWMgbGl0ZXJhbHNcIiksQ29udmVydF9jb25zdF90b19sZXQ6YSg5NTA5MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udmVydF9jb25zdF90b19sZXRfOTUwOTNcIixcIkNvbnZlcnQgJ2NvbnN0JyB0byAnbGV0J1wiKSxQcmVmaXhfd2l0aF9kZWNsYXJlOmEoOTUwOTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByZWZpeF93aXRoX2RlY2xhcmVfOTUwOTRcIixcIlByZWZpeCB3aXRoICdkZWNsYXJlJ1wiKSxQcmVmaXhfYWxsX2luY29ycmVjdF9wcm9wZXJ0eV9kZWNsYXJhdGlvbnNfd2l0aF9kZWNsYXJlOmEoOTUwOTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlByZWZpeF9hbGxfaW5jb3JyZWN0X3Byb3BlcnR5X2RlY2xhcmF0aW9uc193aXRoX2RlY2xhcmVfOTUwOTVcIixcIlByZWZpeCBhbGwgaW5jb3JyZWN0IHByb3BlcnR5IGRlY2xhcmF0aW9ucyB3aXRoICdkZWNsYXJlJ1wiKSxDb252ZXJ0X3RvX3RlbXBsYXRlX3N0cmluZzphKDk1MDk2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X3RvX3RlbXBsYXRlX3N0cmluZ185NTA5NlwiLFwiQ29udmVydCB0byB0ZW1wbGF0ZSBzdHJpbmdcIiksQWRkX2V4cG9ydF90b19tYWtlX3RoaXNfZmlsZV9pbnRvX2FfbW9kdWxlOmEoOTUwOTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9leHBvcnRfdG9fbWFrZV90aGlzX2ZpbGVfaW50b19hX21vZHVsZV85NTA5N1wiLFwiQWRkICdleHBvcnQge30nIHRvIG1ha2UgdGhpcyBmaWxlIGludG8gYSBtb2R1bGVcIiksU2V0X3RoZV90YXJnZXRfb3B0aW9uX2luX3lvdXJfY29uZmlndXJhdGlvbl9maWxlX3RvXzA6YSg5NTA5OCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU2V0X3RoZV90YXJnZXRfb3B0aW9uX2luX3lvdXJfY29uZmlndXJhdGlvbl9maWxlX3RvXzBfOTUwOThcIixcIlNldCB0aGUgJ3RhcmdldCcgb3B0aW9uIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIHRvICd7MH0nXCIpLFNldF90aGVfbW9kdWxlX29wdGlvbl9pbl95b3VyX2NvbmZpZ3VyYXRpb25fZmlsZV90b18wOmEoOTUwOTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNldF90aGVfbW9kdWxlX29wdGlvbl9pbl95b3VyX2NvbmZpZ3VyYXRpb25fZmlsZV90b18wXzk1MDk5XCIsXCJTZXQgdGhlICdtb2R1bGUnIG9wdGlvbiBpbiB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSB0byAnezB9J1wiKSxDb252ZXJ0X2ludmFsaWRfY2hhcmFjdGVyX3RvX2l0c19odG1sX2VudGl0eV9jb2RlOmEoOTUxMDAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfaW52YWxpZF9jaGFyYWN0ZXJfdG9faXRzX2h0bWxfZW50aXR5X2NvZGVfOTUxMDBcIixcIkNvbnZlcnQgaW52YWxpZCBjaGFyYWN0ZXIgdG8gaXRzIGh0bWwgZW50aXR5IGNvZGVcIiksQ29udmVydF9hbGxfaW52YWxpZF9jaGFyYWN0ZXJzX3RvX0hUTUxfZW50aXR5X2NvZGU6YSg5NTEwMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udmVydF9hbGxfaW52YWxpZF9jaGFyYWN0ZXJzX3RvX0hUTUxfZW50aXR5X2NvZGVfOTUxMDFcIixcIkNvbnZlcnQgYWxsIGludmFsaWQgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0eSBjb2RlXCIpLENvbnZlcnRfZnVuY3Rpb25fZXhwcmVzc2lvbl8wX3RvX2Fycm93X2Z1bmN0aW9uOmEoOTUxMDUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfZnVuY3Rpb25fZXhwcmVzc2lvbl8wX3RvX2Fycm93X2Z1bmN0aW9uXzk1MTA1XCIsXCJDb252ZXJ0IGZ1bmN0aW9uIGV4cHJlc3Npb24gJ3swfScgdG8gYXJyb3cgZnVuY3Rpb25cIiksQ29udmVydF9mdW5jdGlvbl9kZWNsYXJhdGlvbl8wX3RvX2Fycm93X2Z1bmN0aW9uOmEoOTUxMDYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfZnVuY3Rpb25fZGVjbGFyYXRpb25fMF90b19hcnJvd19mdW5jdGlvbl85NTEwNlwiLFwiQ29udmVydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAnezB9JyB0byBhcnJvdyBmdW5jdGlvblwiKSxGaXhfYWxsX2ltcGxpY2l0X3RoaXNfZXJyb3JzOmEoOTUxMDcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkZpeF9hbGxfaW1wbGljaXRfdGhpc19lcnJvcnNfOTUxMDdcIixcIkZpeCBhbGwgaW1wbGljaXQtJ3RoaXMnIGVycm9yc1wiKSxXcmFwX2ludmFsaWRfY2hhcmFjdGVyX2luX2FuX2V4cHJlc3Npb25fY29udGFpbmVyOmEoOTUxMDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIldyYXBfaW52YWxpZF9jaGFyYWN0ZXJfaW5fYW5fZXhwcmVzc2lvbl9jb250YWluZXJfOTUxMDhcIixcIldyYXAgaW52YWxpZCBjaGFyYWN0ZXIgaW4gYW4gZXhwcmVzc2lvbiBjb250YWluZXJcIiksV3JhcF9hbGxfaW52YWxpZF9jaGFyYWN0ZXJzX2luX2FuX2V4cHJlc3Npb25fY29udGFpbmVyOmEoOTUxMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIldyYXBfYWxsX2ludmFsaWRfY2hhcmFjdGVyc19pbl9hbl9leHByZXNzaW9uX2NvbnRhaW5lcl85NTEwOVwiLFwiV3JhcCBhbGwgaW52YWxpZCBjaGFyYWN0ZXJzIGluIGFuIGV4cHJlc3Npb24gY29udGFpbmVyXCIpLFZpc2l0X2h0dHBzX0NvbG9uX1NsYXNoX1NsYXNoYWthX21zX1NsYXNodHNjb25maWdfdG9fcmVhZF9tb3JlX2Fib3V0X3RoaXNfZmlsZTphKDk1MTEwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJWaXNpdF9odHRwc19Db2xvbl9TbGFzaF9TbGFzaGFrYV9tc19TbGFzaHRzY29uZmlnX3RvX3JlYWRfbW9yZV9hYm91dF90aGlzX2ZpbGVfOTUxMTBcIixcIlZpc2l0IGh0dHBzOi8vYWthLm1zL3RzY29uZmlnIHRvIHJlYWQgbW9yZSBhYm91dCB0aGlzIGZpbGVcIiksQWRkX2FfcmV0dXJuX3N0YXRlbWVudDphKDk1MTExLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfYV9yZXR1cm5fc3RhdGVtZW50Xzk1MTExXCIsXCJBZGQgYSByZXR1cm4gc3RhdGVtZW50XCIpLFJlbW92ZV9icmFjZXNfZnJvbV9hcnJvd19mdW5jdGlvbl9ib2R5OmEoOTUxMTIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV9icmFjZXNfZnJvbV9hcnJvd19mdW5jdGlvbl9ib2R5Xzk1MTEyXCIsXCJSZW1vdmUgYnJhY2VzIGZyb20gYXJyb3cgZnVuY3Rpb24gYm9keVwiKSxXcmFwX3RoZV9mb2xsb3dpbmdfYm9keV93aXRoX3BhcmVudGhlc2VzX3doaWNoX3Nob3VsZF9iZV9hbl9vYmplY3RfbGl0ZXJhbDphKDk1MTEzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJXcmFwX3RoZV9mb2xsb3dpbmdfYm9keV93aXRoX3BhcmVudGhlc2VzX3doaWNoX3Nob3VsZF9iZV9hbl9vYmplY3RfbGl0ZXJhbF85NTExM1wiLFwiV3JhcCB0aGUgZm9sbG93aW5nIGJvZHkgd2l0aCBwYXJlbnRoZXNlcyB3aGljaCBzaG91bGQgYmUgYW4gb2JqZWN0IGxpdGVyYWxcIiksQWRkX2FsbF9taXNzaW5nX3JldHVybl9zdGF0ZW1lbnQ6YSg5NTExNCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2FsbF9taXNzaW5nX3JldHVybl9zdGF0ZW1lbnRfOTUxMTRcIixcIkFkZCBhbGwgbWlzc2luZyByZXR1cm4gc3RhdGVtZW50XCIpLFJlbW92ZV9icmFjZXNfZnJvbV9hbGxfYXJyb3dfZnVuY3Rpb25fYm9kaWVzX3dpdGhfcmVsZXZhbnRfaXNzdWVzOmEoOTUxMTUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV9icmFjZXNfZnJvbV9hbGxfYXJyb3dfZnVuY3Rpb25fYm9kaWVzX3dpdGhfcmVsZXZhbnRfaXNzdWVzXzk1MTE1XCIsXCJSZW1vdmUgYnJhY2VzIGZyb20gYWxsIGFycm93IGZ1bmN0aW9uIGJvZGllcyB3aXRoIHJlbGV2YW50IGlzc3Vlc1wiKSxXcmFwX2FsbF9vYmplY3RfbGl0ZXJhbF93aXRoX3BhcmVudGhlc2VzOmEoOTUxMTYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIldyYXBfYWxsX29iamVjdF9saXRlcmFsX3dpdGhfcGFyZW50aGVzZXNfOTUxMTZcIixcIldyYXAgYWxsIG9iamVjdCBsaXRlcmFsIHdpdGggcGFyZW50aGVzZXNcIiksTW92ZV9sYWJlbGVkX3R1cGxlX2VsZW1lbnRfbW9kaWZpZXJzX3RvX2xhYmVsczphKDk1MTE3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJNb3ZlX2xhYmVsZWRfdHVwbGVfZWxlbWVudF9tb2RpZmllcnNfdG9fbGFiZWxzXzk1MTE3XCIsXCJNb3ZlIGxhYmVsZWQgdHVwbGUgZWxlbWVudCBtb2RpZmllcnMgdG8gbGFiZWxzXCIpLENvbnZlcnRfb3ZlcmxvYWRfbGlzdF90b19zaW5nbGVfc2lnbmF0dXJlOmEoOTUxMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfb3ZlcmxvYWRfbGlzdF90b19zaW5nbGVfc2lnbmF0dXJlXzk1MTE4XCIsXCJDb252ZXJ0IG92ZXJsb2FkIGxpc3QgdG8gc2luZ2xlIHNpZ25hdHVyZVwiKSxHZW5lcmF0ZV9nZXRfYW5kX3NldF9hY2Nlc3NvcnNfZm9yX2FsbF9vdmVycmlkaW5nX3Byb3BlcnRpZXM6YSg5NTExOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiR2VuZXJhdGVfZ2V0X2FuZF9zZXRfYWNjZXNzb3JzX2Zvcl9hbGxfb3ZlcnJpZGluZ19wcm9wZXJ0aWVzXzk1MTE5XCIsXCJHZW5lcmF0ZSAnZ2V0JyBhbmQgJ3NldCcgYWNjZXNzb3JzIGZvciBhbGwgb3ZlcnJpZGluZyBwcm9wZXJ0aWVzXCIpLFdyYXBfaW5fSlNYX2ZyYWdtZW50OmEoOTUxMjAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIldyYXBfaW5fSlNYX2ZyYWdtZW50Xzk1MTIwXCIsXCJXcmFwIGluIEpTWCBmcmFnbWVudFwiKSxXcmFwX2FsbF91bnBhcmVudGVkX0pTWF9pbl9KU1hfZnJhZ21lbnQ6YSg5NTEyMSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiV3JhcF9hbGxfdW5wYXJlbnRlZF9KU1hfaW5fSlNYX2ZyYWdtZW50Xzk1MTIxXCIsXCJXcmFwIGFsbCB1bnBhcmVudGVkIEpTWCBpbiBKU1ggZnJhZ21lbnRcIiksQ29udmVydF9hcnJvd19mdW5jdGlvbl9vcl9mdW5jdGlvbl9leHByZXNzaW9uOmEoOTUxMjIsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfYXJyb3dfZnVuY3Rpb25fb3JfZnVuY3Rpb25fZXhwcmVzc2lvbl85NTEyMlwiLFwiQ29udmVydCBhcnJvdyBmdW5jdGlvbiBvciBmdW5jdGlvbiBleHByZXNzaW9uXCIpLENvbnZlcnRfdG9fYW5vbnltb3VzX2Z1bmN0aW9uOmEoOTUxMjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfdG9fYW5vbnltb3VzX2Z1bmN0aW9uXzk1MTIzXCIsXCJDb252ZXJ0IHRvIGFub255bW91cyBmdW5jdGlvblwiKSxDb252ZXJ0X3RvX25hbWVkX2Z1bmN0aW9uOmEoOTUxMjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfdG9fbmFtZWRfZnVuY3Rpb25fOTUxMjRcIixcIkNvbnZlcnQgdG8gbmFtZWQgZnVuY3Rpb25cIiksQ29udmVydF90b19hcnJvd19mdW5jdGlvbjphKDk1MTI1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X3RvX2Fycm93X2Z1bmN0aW9uXzk1MTI1XCIsXCJDb252ZXJ0IHRvIGFycm93IGZ1bmN0aW9uXCIpLFJlbW92ZV9wYXJlbnRoZXNlczphKDk1MTI2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfcGFyZW50aGVzZXNfOTUxMjZcIixcIlJlbW92ZSBwYXJlbnRoZXNlc1wiKSxDb3VsZF9ub3RfZmluZF9hX2NvbnRhaW5pbmdfYXJyb3dfZnVuY3Rpb246YSg5NTEyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ291bGRfbm90X2ZpbmRfYV9jb250YWluaW5nX2Fycm93X2Z1bmN0aW9uXzk1MTI3XCIsXCJDb3VsZCBub3QgZmluZCBhIGNvbnRhaW5pbmcgYXJyb3cgZnVuY3Rpb25cIiksQ29udGFpbmluZ19mdW5jdGlvbl9pc19ub3RfYW5fYXJyb3dfZnVuY3Rpb246YSg5NTEyOCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ29udGFpbmluZ19mdW5jdGlvbl9pc19ub3RfYW5fYXJyb3dfZnVuY3Rpb25fOTUxMjhcIixcIkNvbnRhaW5pbmcgZnVuY3Rpb24gaXMgbm90IGFuIGFycm93IGZ1bmN0aW9uXCIpLENvdWxkX25vdF9maW5kX2V4cG9ydF9zdGF0ZW1lbnQ6YSg5NTEyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ291bGRfbm90X2ZpbmRfZXhwb3J0X3N0YXRlbWVudF85NTEyOVwiLFwiQ291bGQgbm90IGZpbmQgZXhwb3J0IHN0YXRlbWVudFwiKSxUaGlzX2ZpbGVfYWxyZWFkeV9oYXNfYV9kZWZhdWx0X2V4cG9ydDphKDk1MTMwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJUaGlzX2ZpbGVfYWxyZWFkeV9oYXNfYV9kZWZhdWx0X2V4cG9ydF85NTEzMFwiLFwiVGhpcyBmaWxlIGFscmVhZHkgaGFzIGEgZGVmYXVsdCBleHBvcnRcIiksQ291bGRfbm90X2ZpbmRfaW1wb3J0X2NsYXVzZTphKDk1MTMxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb3VsZF9ub3RfZmluZF9pbXBvcnRfY2xhdXNlXzk1MTMxXCIsXCJDb3VsZCBub3QgZmluZCBpbXBvcnQgY2xhdXNlXCIpLENvdWxkX25vdF9maW5kX25hbWVzcGFjZV9pbXBvcnRfb3JfbmFtZWRfaW1wb3J0czphKDk1MTMyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb3VsZF9ub3RfZmluZF9uYW1lc3BhY2VfaW1wb3J0X29yX25hbWVkX2ltcG9ydHNfOTUxMzJcIixcIkNvdWxkIG5vdCBmaW5kIG5hbWVzcGFjZSBpbXBvcnQgb3IgbmFtZWQgaW1wb3J0c1wiKSxTZWxlY3Rpb25faXNfbm90X2FfdmFsaWRfdHlwZV9ub2RlOmEoOTUxMzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlNlbGVjdGlvbl9pc19ub3RfYV92YWxpZF90eXBlX25vZGVfOTUxMzNcIixcIlNlbGVjdGlvbiBpcyBub3QgYSB2YWxpZCB0eXBlIG5vZGVcIiksTm9fdHlwZV9jb3VsZF9iZV9leHRyYWN0ZWRfZnJvbV90aGlzX3R5cGVfbm9kZTphKDk1MTM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJOb190eXBlX2NvdWxkX2JlX2V4dHJhY3RlZF9mcm9tX3RoaXNfdHlwZV9ub2RlXzk1MTM0XCIsXCJObyB0eXBlIGNvdWxkIGJlIGV4dHJhY3RlZCBmcm9tIHRoaXMgdHlwZSBub2RlXCIpLENvdWxkX25vdF9maW5kX3Byb3BlcnR5X2Zvcl93aGljaF90b19nZW5lcmF0ZV9hY2Nlc3NvcjphKDk1MTM1LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb3VsZF9ub3RfZmluZF9wcm9wZXJ0eV9mb3Jfd2hpY2hfdG9fZ2VuZXJhdGVfYWNjZXNzb3JfOTUxMzVcIixcIkNvdWxkIG5vdCBmaW5kIHByb3BlcnR5IGZvciB3aGljaCB0byBnZW5lcmF0ZSBhY2Nlc3NvclwiKSxOYW1lX2lzX25vdF92YWxpZDphKDk1MTM2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJOYW1lX2lzX25vdF92YWxpZF85NTEzNlwiLFwiTmFtZSBpcyBub3QgdmFsaWRcIiksQ2FuX29ubHlfY29udmVydF9wcm9wZXJ0eV93aXRoX21vZGlmaWVyOmEoOTUxMzcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNhbl9vbmx5X2NvbnZlcnRfcHJvcGVydHlfd2l0aF9tb2RpZmllcl85NTEzN1wiLFwiQ2FuIG9ubHkgY29udmVydCBwcm9wZXJ0eSB3aXRoIG1vZGlmaWVyXCIpLFN3aXRjaF9lYWNoX21pc3VzZWRfMF90b18xOmEoOTUxMzgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlN3aXRjaF9lYWNoX21pc3VzZWRfMF90b18xXzk1MTM4XCIsXCJTd2l0Y2ggZWFjaCBtaXN1c2VkICd7MH0nIHRvICd7MX0nXCIpLENvbnZlcnRfdG9fb3B0aW9uYWxfY2hhaW5fZXhwcmVzc2lvbjphKDk1MTM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb252ZXJ0X3RvX29wdGlvbmFsX2NoYWluX2V4cHJlc3Npb25fOTUxMzlcIixcIkNvbnZlcnQgdG8gb3B0aW9uYWwgY2hhaW4gZXhwcmVzc2lvblwiKSxDb3VsZF9ub3RfZmluZF9jb252ZXJ0aWJsZV9hY2Nlc3NfZXhwcmVzc2lvbjphKDk1MTQwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb3VsZF9ub3RfZmluZF9jb252ZXJ0aWJsZV9hY2Nlc3NfZXhwcmVzc2lvbl85NTE0MFwiLFwiQ291bGQgbm90IGZpbmQgY29udmVydGlibGUgYWNjZXNzIGV4cHJlc3Npb25cIiksQ291bGRfbm90X2ZpbmRfbWF0Y2hpbmdfYWNjZXNzX2V4cHJlc3Npb25zOmEoOTUxNDEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvdWxkX25vdF9maW5kX21hdGNoaW5nX2FjY2Vzc19leHByZXNzaW9uc185NTE0MVwiLFwiQ291bGQgbm90IGZpbmQgbWF0Y2hpbmcgYWNjZXNzIGV4cHJlc3Npb25zXCIpLENhbl9vbmx5X2NvbnZlcnRfbG9naWNhbF9BTkRfYWNjZXNzX2NoYWluczphKDk1MTQyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDYW5fb25seV9jb252ZXJ0X2xvZ2ljYWxfQU5EX2FjY2Vzc19jaGFpbnNfOTUxNDJcIixcIkNhbiBvbmx5IGNvbnZlcnQgbG9naWNhbCBBTkQgYWNjZXNzIGNoYWluc1wiKSxBZGRfdm9pZF90b19Qcm9taXNlX3Jlc29sdmVkX3dpdGhvdXRfYV92YWx1ZTphKDk1MTQzLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfdm9pZF90b19Qcm9taXNlX3Jlc29sdmVkX3dpdGhvdXRfYV92YWx1ZV85NTE0M1wiLFwiQWRkICd2b2lkJyB0byBQcm9taXNlIHJlc29sdmVkIHdpdGhvdXQgYSB2YWx1ZVwiKSxBZGRfdm9pZF90b19hbGxfUHJvbWlzZXNfcmVzb2x2ZWRfd2l0aG91dF9hX3ZhbHVlOmEoOTUxNDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF92b2lkX3RvX2FsbF9Qcm9taXNlc19yZXNvbHZlZF93aXRob3V0X2FfdmFsdWVfOTUxNDRcIixcIkFkZCAndm9pZCcgdG8gYWxsIFByb21pc2VzIHJlc29sdmVkIHdpdGhvdXQgYSB2YWx1ZVwiKSxVc2VfZWxlbWVudF9hY2Nlc3NfZm9yXzA6YSg5NTE0NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiVXNlX2VsZW1lbnRfYWNjZXNzX2Zvcl8wXzk1MTQ1XCIsXCJVc2UgZWxlbWVudCBhY2Nlc3MgZm9yICd7MH0nXCIpLFVzZV9lbGVtZW50X2FjY2Vzc19mb3JfYWxsX3VuZGVjbGFyZWRfcHJvcGVydGllczphKDk1MTQ2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJVc2VfZWxlbWVudF9hY2Nlc3NfZm9yX2FsbF91bmRlY2xhcmVkX3Byb3BlcnRpZXNfOTUxNDZcIixcIlVzZSBlbGVtZW50IGFjY2VzcyBmb3IgYWxsIHVuZGVjbGFyZWQgcHJvcGVydGllcy5cIiksRGVsZXRlX2FsbF91bnVzZWRfaW1wb3J0czphKDk1MTQ3LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEZWxldGVfYWxsX3VudXNlZF9pbXBvcnRzXzk1MTQ3XCIsXCJEZWxldGUgYWxsIHVudXNlZCBpbXBvcnRzXCIpLEluZmVyX2Z1bmN0aW9uX3JldHVybl90eXBlOmEoOTUxNDgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkluZmVyX2Z1bmN0aW9uX3JldHVybl90eXBlXzk1MTQ4XCIsXCJJbmZlciBmdW5jdGlvbiByZXR1cm4gdHlwZVwiKSxSZXR1cm5fdHlwZV9tdXN0X2JlX2luZmVycmVkX2Zyb21fYV9mdW5jdGlvbjphKDk1MTQ5LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZXR1cm5fdHlwZV9tdXN0X2JlX2luZmVycmVkX2Zyb21fYV9mdW5jdGlvbl85NTE0OVwiLFwiUmV0dXJuIHR5cGUgbXVzdCBiZSBpbmZlcnJlZCBmcm9tIGEgZnVuY3Rpb25cIiksQ291bGRfbm90X2RldGVybWluZV9mdW5jdGlvbl9yZXR1cm5fdHlwZTphKDk1MTUwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb3VsZF9ub3RfZGV0ZXJtaW5lX2Z1bmN0aW9uX3JldHVybl90eXBlXzk1MTUwXCIsXCJDb3VsZCBub3QgZGV0ZXJtaW5lIGZ1bmN0aW9uIHJldHVybiB0eXBlXCIpLENvdWxkX25vdF9jb252ZXJ0X3RvX2Fycm93X2Z1bmN0aW9uOmEoOTUxNTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvdWxkX25vdF9jb252ZXJ0X3RvX2Fycm93X2Z1bmN0aW9uXzk1MTUxXCIsXCJDb3VsZCBub3QgY29udmVydCB0byBhcnJvdyBmdW5jdGlvblwiKSxDb3VsZF9ub3RfY29udmVydF90b19uYW1lZF9mdW5jdGlvbjphKDk1MTUyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJDb3VsZF9ub3RfY29udmVydF90b19uYW1lZF9mdW5jdGlvbl85NTE1MlwiLFwiQ291bGQgbm90IGNvbnZlcnQgdG8gbmFtZWQgZnVuY3Rpb25cIiksQ291bGRfbm90X2NvbnZlcnRfdG9fYW5vbnltb3VzX2Z1bmN0aW9uOmEoOTUxNTMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvdWxkX25vdF9jb252ZXJ0X3RvX2Fub255bW91c19mdW5jdGlvbl85NTE1M1wiLFwiQ291bGQgbm90IGNvbnZlcnQgdG8gYW5vbnltb3VzIGZ1bmN0aW9uXCIpLENhbl9vbmx5X2NvbnZlcnRfc3RyaW5nX2NvbmNhdGVuYXRpb246YSg5NTE1NCxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQ2FuX29ubHlfY29udmVydF9zdHJpbmdfY29uY2F0ZW5hdGlvbl85NTE1NFwiLFwiQ2FuIG9ubHkgY29udmVydCBzdHJpbmcgY29uY2F0ZW5hdGlvblwiKSxTZWxlY3Rpb25faXNfbm90X2FfdmFsaWRfc3RhdGVtZW50X29yX3N0YXRlbWVudHM6YSg5NTE1NSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiU2VsZWN0aW9uX2lzX25vdF9hX3ZhbGlkX3N0YXRlbWVudF9vcl9zdGF0ZW1lbnRzXzk1MTU1XCIsXCJTZWxlY3Rpb24gaXMgbm90IGEgdmFsaWQgc3RhdGVtZW50IG9yIHN0YXRlbWVudHNcIiksQWRkX21pc3NpbmdfZnVuY3Rpb25fZGVjbGFyYXRpb25fMDphKDk1MTU2LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfbWlzc2luZ19mdW5jdGlvbl9kZWNsYXJhdGlvbl8wXzk1MTU2XCIsXCJBZGQgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbiAnezB9J1wiKSxBZGRfYWxsX21pc3NpbmdfZnVuY3Rpb25fZGVjbGFyYXRpb25zOmEoOTUxNTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9hbGxfbWlzc2luZ19mdW5jdGlvbl9kZWNsYXJhdGlvbnNfOTUxNTdcIixcIkFkZCBhbGwgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnNcIiksTWV0aG9kX25vdF9pbXBsZW1lbnRlZDphKDk1MTU4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJNZXRob2Rfbm90X2ltcGxlbWVudGVkXzk1MTU4XCIsXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKSxGdW5jdGlvbl9ub3RfaW1wbGVtZW50ZWQ6YSg5NTE1OSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRnVuY3Rpb25fbm90X2ltcGxlbWVudGVkXzk1MTU5XCIsXCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQuXCIpLEFkZF9vdmVycmlkZV9tb2RpZmllcjphKDk1MTYwLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfb3ZlcnJpZGVfbW9kaWZpZXJfOTUxNjBcIixcIkFkZCAnb3ZlcnJpZGUnIG1vZGlmaWVyXCIpLFJlbW92ZV9vdmVycmlkZV9tb2RpZmllcjphKDk1MTYxLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJSZW1vdmVfb3ZlcnJpZGVfbW9kaWZpZXJfOTUxNjFcIixcIlJlbW92ZSAnb3ZlcnJpZGUnIG1vZGlmaWVyXCIpLEFkZF9hbGxfbWlzc2luZ19vdmVycmlkZV9tb2RpZmllcnM6YSg5NTE2MixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2FsbF9taXNzaW5nX292ZXJyaWRlX21vZGlmaWVyc185NTE2MlwiLFwiQWRkIGFsbCBtaXNzaW5nICdvdmVycmlkZScgbW9kaWZpZXJzXCIpLFJlbW92ZV9hbGxfdW5uZWNlc3Nhcnlfb3ZlcnJpZGVfbW9kaWZpZXJzOmEoOTUxNjMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIlJlbW92ZV9hbGxfdW5uZWNlc3Nhcnlfb3ZlcnJpZGVfbW9kaWZpZXJzXzk1MTYzXCIsXCJSZW1vdmUgYWxsIHVubmVjZXNzYXJ5ICdvdmVycmlkZScgbW9kaWZpZXJzXCIpLENhbl9vbmx5X2NvbnZlcnRfbmFtZWRfZXhwb3J0OmEoOTUxNjQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNhbl9vbmx5X2NvbnZlcnRfbmFtZWRfZXhwb3J0Xzk1MTY0XCIsXCJDYW4gb25seSBjb252ZXJ0IG5hbWVkIGV4cG9ydFwiKSxBZGRfbWlzc2luZ19wcm9wZXJ0aWVzOmEoOTUxNjUsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF9taXNzaW5nX3Byb3BlcnRpZXNfOTUxNjVcIixcIkFkZCBtaXNzaW5nIHByb3BlcnRpZXNcIiksQWRkX2FsbF9taXNzaW5nX3Byb3BlcnRpZXM6YSg5NTE2NixlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX2FsbF9taXNzaW5nX3Byb3BlcnRpZXNfOTUxNjZcIixcIkFkZCBhbGwgbWlzc2luZyBwcm9wZXJ0aWVzXCIpLEFkZF9taXNzaW5nX2F0dHJpYnV0ZXM6YSg5NTE2NyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiQWRkX21pc3NpbmdfYXR0cmlidXRlc185NTE2N1wiLFwiQWRkIG1pc3NpbmcgYXR0cmlidXRlc1wiKSxBZGRfYWxsX21pc3NpbmdfYXR0cmlidXRlczphKDk1MTY4LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJBZGRfYWxsX21pc3NpbmdfYXR0cmlidXRlc185NTE2OFwiLFwiQWRkIGFsbCBtaXNzaW5nIGF0dHJpYnV0ZXNcIiksQWRkX3VuZGVmaW5lZF90b19vcHRpb25hbF9wcm9wZXJ0eV90eXBlOmEoOTUxNjksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkFkZF91bmRlZmluZWRfdG9fb3B0aW9uYWxfcHJvcGVydHlfdHlwZV85NTE2OVwiLFwiQWRkICd1bmRlZmluZWQnIHRvIG9wdGlvbmFsIHByb3BlcnR5IHR5cGVcIiksQ29udmVydF9uYW1lZF9pbXBvcnRzX3RvX2RlZmF1bHRfaW1wb3J0OmEoOTUxNzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcIkNvbnZlcnRfbmFtZWRfaW1wb3J0c190b19kZWZhdWx0X2ltcG9ydF85NTE3MFwiLFwiQ29udmVydCBuYW1lZCBpbXBvcnRzIHRvIGRlZmF1bHQgaW1wb3J0XCIpLERlbGV0ZV91bnVzZWRfcGFyYW1fdGFnXzA6YSg5NTE3MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiRGVsZXRlX3VudXNlZF9wYXJhbV90YWdfMF85NTE3MVwiLFwiRGVsZXRlIHVudXNlZCAnQHBhcmFtJyB0YWcgJ3swfSdcIiksRGVsZXRlX2FsbF91bnVzZWRfcGFyYW1fdGFnczphKDk1MTcyLGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJEZWxldGVfYWxsX3VudXNlZF9wYXJhbV90YWdzXzk1MTcyXCIsXCJEZWxldGUgYWxsIHVudXNlZCAnQHBhcmFtJyB0YWdzXCIpLFJlbmFtZV9wYXJhbV90YWdfbmFtZV8wX3RvXzE6YSg5NTE3MyxlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFwiUmVuYW1lX3BhcmFtX3RhZ19uYW1lXzBfdG9fMV85NTE3M1wiLFwiUmVuYW1lICdAcGFyYW0nIHRhZyBuYW1lICd7MH0nIHRvICd7MX0nXCIpLE5vX3ZhbHVlX2V4aXN0c19pbl9zY29wZV9mb3JfdGhlX3Nob3J0aGFuZF9wcm9wZXJ0eV8wX0VpdGhlcl9kZWNsYXJlX29uZV9vcl9wcm92aWRlX2FuX2luaXRpYWxpemVyOmEoMTgwMDQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJOb192YWx1ZV9leGlzdHNfaW5fc2NvcGVfZm9yX3RoZV9zaG9ydGhhbmRfcHJvcGVydHlfMF9FaXRoZXJfZGVjbGFyZV9vbmVfb3JfcHJvdmlkZV9hbl9pbml0aWFsaXplcl8xODAwNFwiLFwiTm8gdmFsdWUgZXhpc3RzIGluIHNjb3BlIGZvciB0aGUgc2hvcnRoYW5kIHByb3BlcnR5ICd7MH0nLiBFaXRoZXIgZGVjbGFyZSBvbmUgb3IgcHJvdmlkZSBhbiBpbml0aWFsaXplci5cIiksQ2xhc3Nlc19tYXlfbm90X2hhdmVfYV9maWVsZF9uYW1lZF9jb25zdHJ1Y3RvcjphKDE4MDA2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQ2xhc3Nlc19tYXlfbm90X2hhdmVfYV9maWVsZF9uYW1lZF9jb25zdHJ1Y3Rvcl8xODAwNlwiLFwiQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InLlwiKSxKU1hfZXhwcmVzc2lvbnNfbWF5X25vdF91c2VfdGhlX2NvbW1hX29wZXJhdG9yX0RpZF95b3VfbWVhbl90b193cml0ZV9hbl9hcnJheTphKDE4MDA3LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSlNYX2V4cHJlc3Npb25zX21heV9ub3RfdXNlX3RoZV9jb21tYV9vcGVyYXRvcl9EaWRfeW91X21lYW5fdG9fd3JpdGVfYW5fYXJyYXlfMTgwMDdcIixcIkpTWCBleHByZXNzaW9ucyBtYXkgbm90IHVzZSB0aGUgY29tbWEgb3BlcmF0b3IuIERpZCB5b3UgbWVhbiB0byB3cml0ZSBhbiBhcnJheT9cIiksUHJpdmF0ZV9pZGVudGlmaWVyc19jYW5ub3RfYmVfdXNlZF9hc19wYXJhbWV0ZXJzOmEoMTgwMDksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJQcml2YXRlX2lkZW50aWZpZXJzX2Nhbm5vdF9iZV91c2VkX2FzX3BhcmFtZXRlcnNfMTgwMDlcIixcIlByaXZhdGUgaWRlbnRpZmllcnMgY2Fubm90IGJlIHVzZWQgYXMgcGFyYW1ldGVycy5cIiksQW5fYWNjZXNzaWJpbGl0eV9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF93aXRoX2FfcHJpdmF0ZV9pZGVudGlmaWVyOmEoMTgwMTAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9hY2Nlc3NpYmlsaXR5X21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX3dpdGhfYV9wcml2YXRlX2lkZW50aWZpZXJfMTgwMTBcIixcIkFuIGFjY2Vzc2liaWxpdHkgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCBhIHByaXZhdGUgaWRlbnRpZmllci5cIiksVGhlX29wZXJhbmRfb2ZfYV9kZWxldGVfb3BlcmF0b3JfY2Fubm90X2JlX2FfcHJpdmF0ZV9pZGVudGlmaWVyOmEoMTgwMTEsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfb3BlcmFuZF9vZl9hX2RlbGV0ZV9vcGVyYXRvcl9jYW5ub3RfYmVfYV9wcml2YXRlX2lkZW50aWZpZXJfMTgwMTFcIixcIlRoZSBvcGVyYW5kIG9mIGEgJ2RlbGV0ZScgb3BlcmF0b3IgY2Fubm90IGJlIGEgcHJpdmF0ZSBpZGVudGlmaWVyLlwiKSxjb25zdHJ1Y3Rvcl9pc19hX3Jlc2VydmVkX3dvcmQ6YSgxODAxMixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImNvbnN0cnVjdG9yX2lzX2FfcmVzZXJ2ZWRfd29yZF8xODAxMlwiLFwiJyNjb25zdHJ1Y3RvcicgaXMgYSByZXNlcnZlZCB3b3JkLlwiKSxQcm9wZXJ0eV8wX2lzX25vdF9hY2Nlc3NpYmxlX291dHNpZGVfY2xhc3NfMV9iZWNhdXNlX2l0X2hhc19hX3ByaXZhdGVfaWRlbnRpZmllcjphKDE4MDEzLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pc19ub3RfYWNjZXNzaWJsZV9vdXRzaWRlX2NsYXNzXzFfYmVjYXVzZV9pdF9oYXNfYV9wcml2YXRlX2lkZW50aWZpZXJfMTgwMTNcIixcIlByb3BlcnR5ICd7MH0nIGlzIG5vdCBhY2Nlc3NpYmxlIG91dHNpZGUgY2xhc3MgJ3sxfScgYmVjYXVzZSBpdCBoYXMgYSBwcml2YXRlIGlkZW50aWZpZXIuXCIpLFRoZV9wcm9wZXJ0eV8wX2Nhbm5vdF9iZV9hY2Nlc3NlZF9vbl90eXBlXzFfd2l0aGluX3RoaXNfY2xhc3NfYmVjYXVzZV9pdF9pc19zaGFkb3dlZF9ieV9hbm90aGVyX3ByaXZhdGVfaWRlbnRpZmllcl93aXRoX3RoZV9zYW1lX3NwZWxsaW5nOmEoMTgwMTQsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfcHJvcGVydHlfMF9jYW5ub3RfYmVfYWNjZXNzZWRfb25fdHlwZV8xX3dpdGhpbl90aGlzX2NsYXNzX2JlY2F1c2VfaXRfaXNfc2hhZG93ZWRfYnlfYW5vdGhlcl9wcml2XzE4MDE0XCIsXCJUaGUgcHJvcGVydHkgJ3swfScgY2Fubm90IGJlIGFjY2Vzc2VkIG9uIHR5cGUgJ3sxfScgd2l0aGluIHRoaXMgY2xhc3MgYmVjYXVzZSBpdCBpcyBzaGFkb3dlZCBieSBhbm90aGVyIHByaXZhdGUgaWRlbnRpZmllciB3aXRoIHRoZSBzYW1lIHNwZWxsaW5nLlwiKSxQcm9wZXJ0eV8wX2luX3R5cGVfMV9yZWZlcnNfdG9fYV9kaWZmZXJlbnRfbWVtYmVyX3RoYXRfY2Fubm90X2JlX2FjY2Vzc2VkX2Zyb21fd2l0aGluX3R5cGVfMjphKDE4MDE1LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJvcGVydHlfMF9pbl90eXBlXzFfcmVmZXJzX3RvX2FfZGlmZmVyZW50X21lbWJlcl90aGF0X2Nhbm5vdF9iZV9hY2Nlc3NlZF9mcm9tX3dpdGhpbl90eXBlXzJfMTgwMTVcIixcIlByb3BlcnR5ICd7MH0nIGluIHR5cGUgJ3sxfScgcmVmZXJzIHRvIGEgZGlmZmVyZW50IG1lbWJlciB0aGF0IGNhbm5vdCBiZSBhY2Nlc3NlZCBmcm9tIHdpdGhpbiB0eXBlICd7Mn0nLlwiKSxQcml2YXRlX2lkZW50aWZpZXJzX2FyZV9ub3RfYWxsb3dlZF9vdXRzaWRlX2NsYXNzX2JvZGllczphKDE4MDE2LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJpdmF0ZV9pZGVudGlmaWVyc19hcmVfbm90X2FsbG93ZWRfb3V0c2lkZV9jbGFzc19ib2RpZXNfMTgwMTZcIixcIlByaXZhdGUgaWRlbnRpZmllcnMgYXJlIG5vdCBhbGxvd2VkIG91dHNpZGUgY2xhc3MgYm9kaWVzLlwiKSxUaGVfc2hhZG93aW5nX2RlY2xhcmF0aW9uX29mXzBfaXNfZGVmaW5lZF9oZXJlOmEoMTgwMTcsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfc2hhZG93aW5nX2RlY2xhcmF0aW9uX29mXzBfaXNfZGVmaW5lZF9oZXJlXzE4MDE3XCIsXCJUaGUgc2hhZG93aW5nIGRlY2xhcmF0aW9uIG9mICd7MH0nIGlzIGRlZmluZWQgaGVyZVwiKSxUaGVfZGVjbGFyYXRpb25fb2ZfMF90aGF0X3lvdV9wcm9iYWJseV9pbnRlbmRlZF90b191c2VfaXNfZGVmaW5lZF9oZXJlOmEoMTgwMTgsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJUaGVfZGVjbGFyYXRpb25fb2ZfMF90aGF0X3lvdV9wcm9iYWJseV9pbnRlbmRlZF90b191c2VfaXNfZGVmaW5lZF9oZXJlXzE4MDE4XCIsXCJUaGUgZGVjbGFyYXRpb24gb2YgJ3swfScgdGhhdCB5b3UgcHJvYmFibHkgaW50ZW5kZWQgdG8gdXNlIGlzIGRlZmluZWQgaGVyZVwiKSxfMF9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF93aXRoX2FfcHJpdmF0ZV9pZGVudGlmaWVyOmEoMTgwMTksZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJfMF9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF93aXRoX2FfcHJpdmF0ZV9pZGVudGlmaWVyXzE4MDE5XCIsXCInezB9JyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyLlwiKSxBbl9lbnVtX21lbWJlcl9jYW5ub3RfYmVfbmFtZWRfd2l0aF9hX3ByaXZhdGVfaWRlbnRpZmllcjphKDE4MDI0LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiQW5fZW51bV9tZW1iZXJfY2Fubm90X2JlX25hbWVkX3dpdGhfYV9wcml2YXRlX2lkZW50aWZpZXJfMTgwMjRcIixcIkFuIGVudW0gbWVtYmVyIGNhbm5vdCBiZSBuYW1lZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyLlwiKSxjYW5fb25seV9iZV91c2VkX2F0X3RoZV9zdGFydF9vZl9hX2ZpbGU6YSgxODAyNixlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcImNhbl9vbmx5X2JlX3VzZWRfYXRfdGhlX3N0YXJ0X29mX2FfZmlsZV8xODAyNlwiLFwiJyMhJyBjYW4gb25seSBiZSB1c2VkIGF0IHRoZSBzdGFydCBvZiBhIGZpbGUuXCIpLENvbXBpbGVyX3Jlc2VydmVzX25hbWVfMF93aGVuX2VtaXR0aW5nX3ByaXZhdGVfaWRlbnRpZmllcl9kb3dubGV2ZWw6YSgxODAyNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkNvbXBpbGVyX3Jlc2VydmVzX25hbWVfMF93aGVuX2VtaXR0aW5nX3ByaXZhdGVfaWRlbnRpZmllcl9kb3dubGV2ZWxfMTgwMjdcIixcIkNvbXBpbGVyIHJlc2VydmVzIG5hbWUgJ3swfScgd2hlbiBlbWl0dGluZyBwcml2YXRlIGlkZW50aWZpZXIgZG93bmxldmVsLlwiKSxQcml2YXRlX2lkZW50aWZpZXJzX2FyZV9vbmx5X2F2YWlsYWJsZV93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0XzIwMTVfYW5kX2hpZ2hlcjphKDE4MDI4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiUHJpdmF0ZV9pZGVudGlmaWVyc19hcmVfb25seV9hdmFpbGFibGVfd2hlbl90YXJnZXRpbmdfRUNNQVNjcmlwdF8yMDE1X2FuZF9oaWdoZXJfMTgwMjhcIixcIlByaXZhdGUgaWRlbnRpZmllcnMgYXJlIG9ubHkgYXZhaWxhYmxlIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgMjAxNSBhbmQgaGlnaGVyLlwiKSxQcml2YXRlX2lkZW50aWZpZXJzX2FyZV9ub3RfYWxsb3dlZF9pbl92YXJpYWJsZV9kZWNsYXJhdGlvbnM6YSgxODAyOSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX25vdF9hbGxvd2VkX2luX3ZhcmlhYmxlX2RlY2xhcmF0aW9uc18xODAyOVwiLFwiUHJpdmF0ZSBpZGVudGlmaWVycyBhcmUgbm90IGFsbG93ZWQgaW4gdmFyaWFibGUgZGVjbGFyYXRpb25zLlwiKSxBbl9vcHRpb25hbF9jaGFpbl9jYW5ub3RfY29udGFpbl9wcml2YXRlX2lkZW50aWZpZXJzOmEoMTgwMzAsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJBbl9vcHRpb25hbF9jaGFpbl9jYW5ub3RfY29udGFpbl9wcml2YXRlX2lkZW50aWZpZXJzXzE4MDMwXCIsXCJBbiBvcHRpb25hbCBjaGFpbiBjYW5ub3QgY29udGFpbiBwcml2YXRlIGlkZW50aWZpZXJzLlwiKSxUaGVfaW50ZXJzZWN0aW9uXzBfd2FzX3JlZHVjZWRfdG9fbmV2ZXJfYmVjYXVzZV9wcm9wZXJ0eV8xX2hhc19jb25mbGljdGluZ190eXBlc19pbl9zb21lX2NvbnN0aXR1ZW50czphKDE4MDMxLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2ludGVyc2VjdGlvbl8wX3dhc19yZWR1Y2VkX3RvX25ldmVyX2JlY2F1c2VfcHJvcGVydHlfMV9oYXNfY29uZmxpY3RpbmdfdHlwZXNfaW5fc29tZV9jb25zdGl0dWVudF8xODAzMVwiLFwiVGhlIGludGVyc2VjdGlvbiAnezB9JyB3YXMgcmVkdWNlZCB0byAnbmV2ZXInIGJlY2F1c2UgcHJvcGVydHkgJ3sxfScgaGFzIGNvbmZsaWN0aW5nIHR5cGVzIGluIHNvbWUgY29uc3RpdHVlbnRzLlwiKSxUaGVfaW50ZXJzZWN0aW9uXzBfd2FzX3JlZHVjZWRfdG9fbmV2ZXJfYmVjYXVzZV9wcm9wZXJ0eV8xX2V4aXN0c19pbl9tdWx0aXBsZV9jb25zdGl0dWVudHNfYW5kX2lzX3ByaXZhdGVfaW5fc29tZTphKDE4MDMyLGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiVGhlX2ludGVyc2VjdGlvbl8wX3dhc19yZWR1Y2VkX3RvX25ldmVyX2JlY2F1c2VfcHJvcGVydHlfMV9leGlzdHNfaW5fbXVsdGlwbGVfY29uc3RpdHVlbnRzX2FuZF9pc19wcl8xODAzMlwiLFwiVGhlIGludGVyc2VjdGlvbiAnezB9JyB3YXMgcmVkdWNlZCB0byAnbmV2ZXInIGJlY2F1c2UgcHJvcGVydHkgJ3sxfScgZXhpc3RzIGluIG11bHRpcGxlIGNvbnN0aXR1ZW50cyBhbmQgaXMgcHJpdmF0ZSBpbiBzb21lLlwiKSxPbmx5X251bWVyaWNfZW51bXNfY2FuX2hhdmVfY29tcHV0ZWRfbWVtYmVyc19idXRfdGhpc19leHByZXNzaW9uX2hhc190eXBlXzBfSWZfeW91X2RvX25vdF9uZWVkX2V4aGF1c3RpdmVuZXNzX2NoZWNrc19jb25zaWRlcl91c2luZ19hbl9vYmplY3RfbGl0ZXJhbF9pbnN0ZWFkOmEoMTgwMzMsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJPbmx5X251bWVyaWNfZW51bXNfY2FuX2hhdmVfY29tcHV0ZWRfbWVtYmVyc19idXRfdGhpc19leHByZXNzaW9uX2hhc190eXBlXzBfSWZfeW91X2RvX25vdF9uZWVkX2V4aGF1XzE4MDMzXCIsXCJPbmx5IG51bWVyaWMgZW51bXMgY2FuIGhhdmUgY29tcHV0ZWQgbWVtYmVycywgYnV0IHRoaXMgZXhwcmVzc2lvbiBoYXMgdHlwZSAnezB9Jy4gSWYgeW91IGRvIG5vdCBuZWVkIGV4aGF1c3RpdmVuZXNzIGNoZWNrcywgY29uc2lkZXIgdXNpbmcgYW4gb2JqZWN0IGxpdGVyYWwgaW5zdGVhZC5cIiksU3BlY2lmeV90aGVfSlNYX2ZyYWdtZW50X2ZhY3RvcnlfZnVuY3Rpb25fdG9fdXNlX3doZW5fdGFyZ2V0aW5nX3JlYWN0X0pTWF9lbWl0X3dpdGhfanN4RmFjdG9yeV9jb21waWxlcl9vcHRpb25faXNfc3BlY2lmaWVkX2VfZ19GcmFnbWVudDphKDE4MDM0LGUuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXCJTcGVjaWZ5X3RoZV9KU1hfZnJhZ21lbnRfZmFjdG9yeV9mdW5jdGlvbl90b191c2Vfd2hlbl90YXJnZXRpbmdfcmVhY3RfSlNYX2VtaXRfd2l0aF9qc3hGYWN0b3J5X2NvbXBpXzE4MDM0XCIsXCJTcGVjaWZ5IHRoZSBKU1ggZnJhZ21lbnQgZmFjdG9yeSBmdW5jdGlvbiB0byB1c2Ugd2hlbiB0YXJnZXRpbmcgJ3JlYWN0JyBKU1ggZW1pdCB3aXRoICdqc3hGYWN0b3J5JyBjb21waWxlciBvcHRpb24gaXMgc3BlY2lmaWVkLCBlLmcuICdGcmFnbWVudCcuXCIpLEludmFsaWRfdmFsdWVfZm9yX2pzeEZyYWdtZW50RmFjdG9yeV8wX2lzX25vdF9hX3ZhbGlkX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWU6YSgxODAzNSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkludmFsaWRfdmFsdWVfZm9yX2pzeEZyYWdtZW50RmFjdG9yeV8wX2lzX25vdF9hX3ZhbGlkX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWVfMTgwMzVcIixcIkludmFsaWQgdmFsdWUgZm9yICdqc3hGcmFnbWVudEZhY3RvcnknLiAnezB9JyBpcyBub3QgYSB2YWxpZCBpZGVudGlmaWVyIG9yIHF1YWxpZmllZC1uYW1lLlwiKSxDbGFzc19kZWNvcmF0b3JzX2Nhbl90X2JlX3VzZWRfd2l0aF9zdGF0aWNfcHJpdmF0ZV9pZGVudGlmaWVyX0NvbnNpZGVyX3JlbW92aW5nX3RoZV9leHBlcmltZW50YWxfZGVjb3JhdG9yOmEoMTgwMzYsZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXCJDbGFzc19kZWNvcmF0b3JzX2Nhbl90X2JlX3VzZWRfd2l0aF9zdGF0aWNfcHJpdmF0ZV9pZGVudGlmaWVyX0NvbnNpZGVyX3JlbW92aW5nX3RoZV9leHBlcmltZW50YWxfZGVjXzE4MDM2XCIsXCJDbGFzcyBkZWNvcmF0b3JzIGNhbid0IGJlIHVzZWQgd2l0aCBzdGF0aWMgcHJpdmF0ZSBpZGVudGlmaWVyLiBDb25zaWRlciByZW1vdmluZyB0aGUgZXhwZXJpbWVudGFsIGRlY29yYXRvci5cIiksQXdhaXRfZXhwcmVzc2lvbl9jYW5ub3RfYmVfdXNlZF9pbnNpZGVfYV9jbGFzc19zdGF0aWNfYmxvY2s6YSgxODAzNyxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkF3YWl0X2V4cHJlc3Npb25fY2Fubm90X2JlX3VzZWRfaW5zaWRlX2FfY2xhc3Nfc3RhdGljX2Jsb2NrXzE4MDM3XCIsXCJBd2FpdCBleHByZXNzaW9uIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhIGNsYXNzIHN0YXRpYyBibG9jay5cIiksRm9yX2F3YWl0X2xvb3BzX2Nhbm5vdF9iZV91c2VkX2luc2lkZV9hX2NsYXNzX3N0YXRpY19ibG9jazphKDE4MDM4LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiRm9yX2F3YWl0X2xvb3BzX2Nhbm5vdF9iZV91c2VkX2luc2lkZV9hX2NsYXNzX3N0YXRpY19ibG9ja18xODAzOFwiLFwiJ0ZvciBhd2FpdCcgbG9vcHMgY2Fubm90IGJlIHVzZWQgaW5zaWRlIGEgY2xhc3Mgc3RhdGljIGJsb2NrLlwiKSxJbnZhbGlkX3VzZV9vZl8wX0l0X2Nhbm5vdF9iZV91c2VkX2luc2lkZV9hX2NsYXNzX3N0YXRpY19ibG9jazphKDE4MDM5LGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFwiSW52YWxpZF91c2Vfb2ZfMF9JdF9jYW5ub3RfYmVfdXNlZF9pbnNpZGVfYV9jbGFzc19zdGF0aWNfYmxvY2tfMTgwMzlcIixcIkludmFsaWQgdXNlIG9mICd7MH0nLiBJdCBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYSBjbGFzcyBzdGF0aWMgYmxvY2suXCIpLEFfcmV0dXJuX3N0YXRlbWVudF9jYW5ub3RfYmVfdXNlZF9pbnNpZGVfYV9jbGFzc19zdGF0aWNfYmxvY2s6YSgxODA0MSxlLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcIkFfcmV0dXJuX3N0YXRlbWVudF9jYW5ub3RfYmVfdXNlZF9pbnNpZGVfYV9jbGFzc19zdGF0aWNfYmxvY2tfMTgwNDFcIixcIkEgJ3JldHVybicgc3RhdGVtZW50IGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhIGNsYXNzIHN0YXRpYyBibG9jay5cIil9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7ZnVuY3Rpb24gQyh5ZSl7cmV0dXJuIHllPj03OX1lLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkPUM7ZnVuY3Rpb24gdyh5ZSl7cmV0dXJuIHllPT09MzF8fEMoeWUpfWUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmRPckdyZWF0ZXJUaGFuPXcsZS50ZXh0VG9LZXl3b3JkT2JqPShhPXthYnN0cmFjdDoxMjYsYW55OjEzMCxhczoxMjcsYXNzZXJ0czoxMjgsYXNzZXJ0OjEyOSxiaWdpbnQ6MTU4LGJvb2xlYW46MTMzLGJyZWFrOjgxLGNhc2U6ODIsY2F0Y2g6ODMsY2xhc3M6ODQsY29udGludWU6ODYsY29uc3Q6ODV9LGEuY29uc3RydWN0b3I9MTM0LGEuZGVidWdnZXI9ODcsYS5kZWNsYXJlPTEzNSxhLmRlZmF1bHQ9ODgsYS5kZWxldGU9ODksYS5kbz05MCxhLmVsc2U9OTEsYS5lbnVtPTkyLGEuZXhwb3J0PTkzLGEuZXh0ZW5kcz05NCxhLmZhbHNlPTk1LGEuZmluYWxseT05NixhLmZvcj05NyxhLmZyb209MTU2LGEuZnVuY3Rpb249OTgsYS5nZXQ9MTM2LGEuaWY9OTksYS5pbXBsZW1lbnRzPTExNyxhLmltcG9ydD0xMDAsYS5pbj0xMDEsYS5pbmZlcj0xMzcsYS5pbnN0YW5jZW9mPTEwMixhLmludGVyZmFjZT0xMTgsYS5pbnRyaW5zaWM9MTM4LGEuaXM9MTM5LGEua2V5b2Y9MTQwLGEubGV0PTExOSxhLm1vZHVsZT0xNDEsYS5uYW1lc3BhY2U9MTQyLGEubmV2ZXI9MTQzLGEubmV3PTEwMyxhLm51bGw9MTA0LGEubnVtYmVyPTE0NyxhLm9iamVjdD0xNDgsYS5wYWNrYWdlPTEyMCxhLnByaXZhdGU9MTIxLGEucHJvdGVjdGVkPTEyMixhLnB1YmxpYz0xMjMsYS5vdmVycmlkZT0xNTksYS5vdXQ9MTQ0LGEucmVhZG9ubHk9MTQ1LGEucmVxdWlyZT0xNDYsYS5nbG9iYWw9MTU3LGEucmV0dXJuPTEwNSxhLnNldD0xNDksYS5zdGF0aWM9MTI0LGEuc3RyaW5nPTE1MCxhLnN1cGVyPTEwNixhLnN3aXRjaD0xMDcsYS5zeW1ib2w9MTUxLGEudGhpcz0xMDgsYS50aHJvdz0xMDksYS50cnVlPTExMCxhLnRyeT0xMTEsYS50eXBlPTE1MixhLnR5cGVvZj0xMTIsYS51bmRlZmluZWQ9MTUzLGEudW5pcXVlPTE1NCxhLnVua25vd249MTU1LGEudmFyPTExMyxhLnZvaWQ9MTE0LGEud2hpbGU9MTE1LGEud2l0aD0xMTYsYS55aWVsZD0xMjUsYS5hc3luYz0xMzEsYS5hd2FpdD0xMzIsYS5vZj0xNjAsYSk7dmFyIEI9bmV3IGUuTWFwKGUuZ2V0RW50cmllcyhlLnRleHRUb0tleXdvcmRPYmopKSxFPW5ldyBlLk1hcChlLmdldEVudHJpZXMoS2UoS2Uoe30sZS50ZXh0VG9LZXl3b3JkT2JqKSx7XCJ7XCI6MTgsXCJ9XCI6MTksXCIoXCI6MjAsXCIpXCI6MjEsXCJbXCI6MjIsXCJdXCI6MjMsXCIuXCI6MjQsXCIuLi5cIjoyNSxcIjtcIjoyNixcIixcIjoyNyxcIjxcIjoyOSxcIj5cIjozMSxcIjw9XCI6MzIsXCI+PVwiOjMzLFwiPT1cIjozNCxcIiE9XCI6MzUsXCI9PT1cIjozNixcIiE9PVwiOjM3LFwiPT5cIjozOCxcIitcIjozOSxcIi1cIjo0MCxcIioqXCI6NDIsXCIqXCI6NDEsXCIvXCI6NDMsXCIlXCI6NDQsXCIrK1wiOjQ1LFwiLS1cIjo0NixcIjw8XCI6NDcsXCI8L1wiOjMwLFwiPj5cIjo0OCxcIj4+PlwiOjQ5LFwiJlwiOjUwLFwifFwiOjUxLFwiXlwiOjUyLFwiIVwiOjUzLFwiflwiOjU0LFwiJiZcIjo1NSxcInx8XCI6NTYsXCI/XCI6NTcsXCI/P1wiOjYwLFwiPy5cIjoyOCxcIjpcIjo1OCxcIj1cIjo2MyxcIis9XCI6NjQsXCItPVwiOjY1LFwiKj1cIjo2NixcIioqPVwiOjY3LFwiLz1cIjo2OCxcIiU9XCI6NjksXCI8PD1cIjo3MCxcIj4+PVwiOjcxLFwiPj4+PVwiOjcyLFwiJj1cIjo3MyxcInw9XCI6NzQsXCJePVwiOjc4LFwifHw9XCI6NzUsXCImJj1cIjo3NixcIj8/PVwiOjc3LFwiQFwiOjU5LFwiI1wiOjYyLFwiYFwiOjYxfSkpKSxRPVsxNzAsMTcwLDE4MSwxODEsMTg2LDE4NiwxOTIsMjE0LDIxNiwyNDYsMjQ4LDU0Myw1NDYsNTYzLDU5Miw2ODUsNjg4LDY5Niw2OTksNzA1LDcyMCw3MjEsNzM2LDc0MCw3NTAsNzUwLDg5MCw4OTAsOTAyLDkwMiw5MDQsOTA2LDkwOCw5MDgsOTEwLDkyOSw5MzEsOTc0LDk3Niw5ODMsOTg2LDEwMTEsMTAyNCwxMTUzLDExNjQsMTIyMCwxMjIzLDEyMjQsMTIyNywxMjI4LDEyMzIsMTI2OSwxMjcyLDEyNzMsMTMyOSwxMzY2LDEzNjksMTM2OSwxMzc3LDE0MTUsMTQ4OCwxNTE0LDE1MjAsMTUyMiwxNTY5LDE1OTQsMTYwMCwxNjEwLDE2NDksMTc0NywxNzQ5LDE3NDksMTc2NSwxNzY2LDE3ODYsMTc4OCwxODA4LDE4MDgsMTgxMCwxODM2LDE5MjAsMTk1NywyMzA5LDIzNjEsMjM2NSwyMzY1LDIzODQsMjM4NCwyMzkyLDI0MDEsMjQzNywyNDQ0LDI0NDcsMjQ0OCwyNDUxLDI0NzIsMjQ3NCwyNDgwLDI0ODIsMjQ4MiwyNDg2LDI0ODksMjUyNCwyNTI1LDI1MjcsMjUyOSwyNTQ0LDI1NDUsMjU2NSwyNTcwLDI1NzUsMjU3NiwyNTc5LDI2MDAsMjYwMiwyNjA4LDI2MTAsMjYxMSwyNjEzLDI2MTQsMjYxNiwyNjE3LDI2NDksMjY1MiwyNjU0LDI2NTQsMjY3NCwyNjc2LDI2OTMsMjY5OSwyNzAxLDI3MDEsMjcwMywyNzA1LDI3MDcsMjcyOCwyNzMwLDI3MzYsMjczOCwyNzM5LDI3NDEsMjc0NSwyNzQ5LDI3NDksMjc2OCwyNzY4LDI3ODQsMjc4NCwyODIxLDI4MjgsMjgzMSwyODMyLDI4MzUsMjg1NiwyODU4LDI4NjQsMjg2NiwyODY3LDI4NzAsMjg3MywyODc3LDI4NzcsMjkwOCwyOTA5LDI5MTEsMjkxMywyOTQ5LDI5NTQsMjk1OCwyOTYwLDI5NjIsMjk2NSwyOTY5LDI5NzAsMjk3MiwyOTcyLDI5NzQsMjk3NSwyOTc5LDI5ODAsMjk4NCwyOTg2LDI5OTAsMjk5NywyOTk5LDMwMDEsMzA3NywzMDg0LDMwODYsMzA4OCwzMDkwLDMxMTIsMzExNCwzMTIzLDMxMjUsMzEyOSwzMTY4LDMxNjksMzIwNSwzMjEyLDMyMTQsMzIxNiwzMjE4LDMyNDAsMzI0MiwzMjUxLDMyNTMsMzI1NywzMjk0LDMyOTQsMzI5NiwzMjk3LDMzMzMsMzM0MCwzMzQyLDMzNDQsMzM0NiwzMzY4LDMzNzAsMzM4NSwzNDI0LDM0MjUsMzQ2MSwzNDc4LDM0ODIsMzUwNSwzNTA3LDM1MTUsMzUxNywzNTE3LDM1MjAsMzUyNiwzNTg1LDM2MzIsMzYzNCwzNjM1LDM2NDgsMzY1NCwzNzEzLDM3MTQsMzcxNiwzNzE2LDM3MTksMzcyMCwzNzIyLDM3MjIsMzcyNSwzNzI1LDM3MzIsMzczNSwzNzM3LDM3NDMsMzc0NSwzNzQ3LDM3NDksMzc0OSwzNzUxLDM3NTEsMzc1NCwzNzU1LDM3NTcsMzc2MCwzNzYyLDM3NjMsMzc3MywzNzczLDM3NzYsMzc4MCwzNzgyLDM3ODIsMzgwNCwzODA1LDM4NDAsMzg0MCwzOTA0LDM5MTEsMzkxMywzOTQ2LDM5NzYsMzk3OSw0MDk2LDQxMjksNDEzMSw0MTM1LDQxMzcsNDEzOCw0MTc2LDQxODEsNDI1Niw0MjkzLDQzMDQsNDM0Miw0MzUyLDQ0NDEsNDQ0Nyw0NTE0LDQ1MjAsNDYwMSw0NjA4LDQ2MTQsNDYxNiw0Njc4LDQ2ODAsNDY4MCw0NjgyLDQ2ODUsNDY4OCw0Njk0LDQ2OTYsNDY5Niw0Njk4LDQ3MDEsNDcwNCw0NzQyLDQ3NDQsNDc0NCw0NzQ2LDQ3NDksNDc1Miw0NzgyLDQ3ODQsNDc4NCw0Nzg2LDQ3ODksNDc5Miw0Nzk4LDQ4MDAsNDgwMCw0ODAyLDQ4MDUsNDgwOCw0ODE0LDQ4MTYsNDgyMiw0ODI0LDQ4NDYsNDg0OCw0ODc4LDQ4ODAsNDg4MCw0ODgyLDQ4ODUsNDg4OCw0ODk0LDQ4OTYsNDkzNCw0OTM2LDQ5NTQsNTAyNCw1MTA4LDUxMjEsNTc0MCw1NzQzLDU3NTAsNTc2MSw1Nzg2LDU3OTIsNTg2Niw2MDE2LDYwNjcsNjE3Niw2MjYzLDYyNzIsNjMxMiw3NjgwLDc4MzUsNzg0MCw3OTI5LDc5MzYsNzk1Nyw3OTYwLDc5NjUsNzk2OCw4MDA1LDgwMDgsODAxMyw4MDE2LDgwMjMsODAyNSw4MDI1LDgwMjcsODAyNyw4MDI5LDgwMjksODAzMSw4MDYxLDgwNjQsODExNiw4MTE4LDgxMjQsODEyNiw4MTI2LDgxMzAsODEzMiw4MTM0LDgxNDAsODE0NCw4MTQ3LDgxNTAsODE1NSw4MTYwLDgxNzIsODE3OCw4MTgwLDgxODIsODE4OCw4MzE5LDgzMTksODQ1MCw4NDUwLDg0NTUsODQ1NSw4NDU4LDg0NjcsODQ2OSw4NDY5LDg0NzMsODQ3Nyw4NDg0LDg0ODQsODQ4Niw4NDg2LDg0ODgsODQ4OCw4NDkwLDg0OTMsODQ5NSw4NDk3LDg0OTksODUwNSw4NTQ0LDg1NzksMTIyOTMsMTIyOTUsMTIzMjEsMTIzMjksMTIzMzcsMTIzNDEsMTIzNDQsMTIzNDYsMTIzNTMsMTI0MzYsMTI0NDUsMTI0NDYsMTI0NDksMTI1MzgsMTI1NDAsMTI1NDIsMTI1NDksMTI1ODgsMTI1OTMsMTI2ODYsMTI3MDQsMTI3MjcsMTMzMTIsMTk4OTMsMTk5NjgsNDA4NjksNDA5NjAsNDIxMjQsNDQwMzIsNTUyMDMsNjM3NDQsNjQwNDUsNjQyNTYsNjQyNjIsNjQyNzUsNjQyNzksNjQyODUsNjQyODUsNjQyODcsNjQyOTYsNjQyOTgsNjQzMTAsNjQzMTIsNjQzMTYsNjQzMTgsNjQzMTgsNjQzMjAsNjQzMjEsNjQzMjMsNjQzMjQsNjQzMjYsNjQ0MzMsNjQ0NjcsNjQ4MjksNjQ4NDgsNjQ5MTEsNjQ5MTQsNjQ5NjcsNjUwMDgsNjUwMTksNjUxMzYsNjUxMzgsNjUxNDAsNjUxNDAsNjUxNDIsNjUyNzYsNjUzMTMsNjUzMzgsNjUzNDUsNjUzNzAsNjUzODIsNjU0NzAsNjU0NzQsNjU0NzksNjU0ODIsNjU0ODcsNjU0OTAsNjU0OTUsNjU0OTgsNjU1MDBdLGxlPVsxNzAsMTcwLDE4MSwxODEsMTg2LDE4NiwxOTIsMjE0LDIxNiwyNDYsMjQ4LDU0Myw1NDYsNTYzLDU5Miw2ODUsNjg4LDY5Niw2OTksNzA1LDcyMCw3MjEsNzM2LDc0MCw3NTAsNzUwLDc2OCw4NDYsODY0LDg2Niw4OTAsODkwLDkwMiw5MDIsOTA0LDkwNiw5MDgsOTA4LDkxMCw5MjksOTMxLDk3NCw5NzYsOTgzLDk4NiwxMDExLDEwMjQsMTE1MywxMTU1LDExNTgsMTE2NCwxMjIwLDEyMjMsMTIyNCwxMjI3LDEyMjgsMTIzMiwxMjY5LDEyNzIsMTI3MywxMzI5LDEzNjYsMTM2OSwxMzY5LDEzNzcsMTQxNSwxNDI1LDE0NDEsMTQ0MywxNDY1LDE0NjcsMTQ2OSwxNDcxLDE0NzEsMTQ3MywxNDc0LDE0NzYsMTQ3NiwxNDg4LDE1MTQsMTUyMCwxNTIyLDE1NjksMTU5NCwxNjAwLDE2MjEsMTYzMiwxNjQxLDE2NDgsMTc0NywxNzQ5LDE3NTYsMTc1OSwxNzY4LDE3NzAsMTc3MywxNzc2LDE3ODgsMTgwOCwxODM2LDE4NDAsMTg2NiwxOTIwLDE5NjgsMjMwNSwyMzA3LDIzMDksMjM2MSwyMzY0LDIzODEsMjM4NCwyMzg4LDIzOTIsMjQwMywyNDA2LDI0MTUsMjQzMywyNDM1LDI0MzcsMjQ0NCwyNDQ3LDI0NDgsMjQ1MSwyNDcyLDI0NzQsMjQ4MCwyNDgyLDI0ODIsMjQ4NiwyNDg5LDI0OTIsMjQ5MiwyNDk0LDI1MDAsMjUwMywyNTA0LDI1MDcsMjUwOSwyNTE5LDI1MTksMjUyNCwyNTI1LDI1MjcsMjUzMSwyNTM0LDI1NDUsMjU2MiwyNTYyLDI1NjUsMjU3MCwyNTc1LDI1NzYsMjU3OSwyNjAwLDI2MDIsMjYwOCwyNjEwLDI2MTEsMjYxMywyNjE0LDI2MTYsMjYxNywyNjIwLDI2MjAsMjYyMiwyNjI2LDI2MzEsMjYzMiwyNjM1LDI2MzcsMjY0OSwyNjUyLDI2NTQsMjY1NCwyNjYyLDI2NzYsMjY4OSwyNjkxLDI2OTMsMjY5OSwyNzAxLDI3MDEsMjcwMywyNzA1LDI3MDcsMjcyOCwyNzMwLDI3MzYsMjczOCwyNzM5LDI3NDEsMjc0NSwyNzQ4LDI3NTcsMjc1OSwyNzYxLDI3NjMsMjc2NSwyNzY4LDI3NjgsMjc4NCwyNzg0LDI3OTAsMjc5OSwyODE3LDI4MTksMjgyMSwyODI4LDI4MzEsMjgzMiwyODM1LDI4NTYsMjg1OCwyODY0LDI4NjYsMjg2NywyODcwLDI4NzMsMjg3NiwyODgzLDI4ODcsMjg4OCwyODkxLDI4OTMsMjkwMiwyOTAzLDI5MDgsMjkwOSwyOTExLDI5MTMsMjkxOCwyOTI3LDI5NDYsMjk0NywyOTQ5LDI5NTQsMjk1OCwyOTYwLDI5NjIsMjk2NSwyOTY5LDI5NzAsMjk3MiwyOTcyLDI5NzQsMjk3NSwyOTc5LDI5ODAsMjk4NCwyOTg2LDI5OTAsMjk5NywyOTk5LDMwMDEsMzAwNiwzMDEwLDMwMTQsMzAxNiwzMDE4LDMwMjEsMzAzMSwzMDMxLDMwNDcsMzA1NSwzMDczLDMwNzUsMzA3NywzMDg0LDMwODYsMzA4OCwzMDkwLDMxMTIsMzExNCwzMTIzLDMxMjUsMzEyOSwzMTM0LDMxNDAsMzE0MiwzMTQ0LDMxNDYsMzE0OSwzMTU3LDMxNTgsMzE2OCwzMTY5LDMxNzQsMzE4MywzMjAyLDMyMDMsMzIwNSwzMjEyLDMyMTQsMzIxNiwzMjE4LDMyNDAsMzI0MiwzMjUxLDMyNTMsMzI1NywzMjYyLDMyNjgsMzI3MCwzMjcyLDMyNzQsMzI3NywzMjg1LDMyODYsMzI5NCwzMjk0LDMyOTYsMzI5NywzMzAyLDMzMTEsMzMzMCwzMzMxLDMzMzMsMzM0MCwzMzQyLDMzNDQsMzM0NiwzMzY4LDMzNzAsMzM4NSwzMzkwLDMzOTUsMzM5OCwzNDAwLDM0MDIsMzQwNSwzNDE1LDM0MTUsMzQyNCwzNDI1LDM0MzAsMzQzOSwzNDU4LDM0NTksMzQ2MSwzNDc4LDM0ODIsMzUwNSwzNTA3LDM1MTUsMzUxNywzNTE3LDM1MjAsMzUyNiwzNTMwLDM1MzAsMzUzNSwzNTQwLDM1NDIsMzU0MiwzNTQ0LDM1NTEsMzU3MCwzNTcxLDM1ODUsMzY0MiwzNjQ4LDM2NjIsMzY2NCwzNjczLDM3MTMsMzcxNCwzNzE2LDM3MTYsMzcxOSwzNzIwLDM3MjIsMzcyMiwzNzI1LDM3MjUsMzczMiwzNzM1LDM3MzcsMzc0MywzNzQ1LDM3NDcsMzc0OSwzNzQ5LDM3NTEsMzc1MSwzNzU0LDM3NTUsMzc1NywzNzY5LDM3NzEsMzc3MywzNzc2LDM3ODAsMzc4MiwzNzgyLDM3ODQsMzc4OSwzNzkyLDM4MDEsMzgwNCwzODA1LDM4NDAsMzg0MCwzODY0LDM4NjUsMzg3MiwzODgxLDM4OTMsMzg5MywzODk1LDM4OTUsMzg5NywzODk3LDM5MDIsMzkxMSwzOTEzLDM5NDYsMzk1MywzOTcyLDM5NzQsMzk3OSwzOTg0LDM5OTEsMzk5Myw0MDI4LDQwMzgsNDAzOCw0MDk2LDQxMjksNDEzMSw0MTM1LDQxMzcsNDEzOCw0MTQwLDQxNDYsNDE1MCw0MTUzLDQxNjAsNDE2OSw0MTc2LDQxODUsNDI1Niw0MjkzLDQzMDQsNDM0Miw0MzUyLDQ0NDEsNDQ0Nyw0NTE0LDQ1MjAsNDYwMSw0NjA4LDQ2MTQsNDYxNiw0Njc4LDQ2ODAsNDY4MCw0NjgyLDQ2ODUsNDY4OCw0Njk0LDQ2OTYsNDY5Niw0Njk4LDQ3MDEsNDcwNCw0NzQyLDQ3NDQsNDc0NCw0NzQ2LDQ3NDksNDc1Miw0NzgyLDQ3ODQsNDc4NCw0Nzg2LDQ3ODksNDc5Miw0Nzk4LDQ4MDAsNDgwMCw0ODAyLDQ4MDUsNDgwOCw0ODE0LDQ4MTYsNDgyMiw0ODI0LDQ4NDYsNDg0OCw0ODc4LDQ4ODAsNDg4MCw0ODgyLDQ4ODUsNDg4OCw0ODk0LDQ4OTYsNDkzNCw0OTM2LDQ5NTQsNDk2OSw0OTc3LDUwMjQsNTEwOCw1MTIxLDU3NDAsNTc0Myw1NzUwLDU3NjEsNTc4Niw1NzkyLDU4NjYsNjAxNiw2MDk5LDYxMTIsNjEyMSw2MTYwLDYxNjksNjE3Niw2MjYzLDYyNzIsNjMxMyw3NjgwLDc4MzUsNzg0MCw3OTI5LDc5MzYsNzk1Nyw3OTYwLDc5NjUsNzk2OCw4MDA1LDgwMDgsODAxMyw4MDE2LDgwMjMsODAyNSw4MDI1LDgwMjcsODAyNyw4MDI5LDgwMjksODAzMSw4MDYxLDgwNjQsODExNiw4MTE4LDgxMjQsODEyNiw4MTI2LDgxMzAsODEzMiw4MTM0LDgxNDAsODE0NCw4MTQ3LDgxNTAsODE1NSw4MTYwLDgxNzIsODE3OCw4MTgwLDgxODIsODE4OCw4MjU1LDgyNTYsODMxOSw4MzE5LDg0MDAsODQxMiw4NDE3LDg0MTcsODQ1MCw4NDUwLDg0NTUsODQ1NSw4NDU4LDg0NjcsODQ2OSw4NDY5LDg0NzMsODQ3Nyw4NDg0LDg0ODQsODQ4Niw4NDg2LDg0ODgsODQ4OCw4NDkwLDg0OTMsODQ5NSw4NDk3LDg0OTksODUwNSw4NTQ0LDg1NzksMTIyOTMsMTIyOTUsMTIzMjEsMTIzMzUsMTIzMzcsMTIzNDEsMTIzNDQsMTIzNDYsMTIzNTMsMTI0MzYsMTI0NDEsMTI0NDIsMTI0NDUsMTI0NDYsMTI0NDksMTI1NDIsMTI1NDksMTI1ODgsMTI1OTMsMTI2ODYsMTI3MDQsMTI3MjcsMTMzMTIsMTk4OTMsMTk5NjgsNDA4NjksNDA5NjAsNDIxMjQsNDQwMzIsNTUyMDMsNjM3NDQsNjQwNDUsNjQyNTYsNjQyNjIsNjQyNzUsNjQyNzksNjQyODUsNjQyOTYsNjQyOTgsNjQzMTAsNjQzMTIsNjQzMTYsNjQzMTgsNjQzMTgsNjQzMjAsNjQzMjEsNjQzMjMsNjQzMjQsNjQzMjYsNjQ0MzMsNjQ0NjcsNjQ4MjksNjQ4NDgsNjQ5MTEsNjQ5MTQsNjQ5NjcsNjUwMDgsNjUwMTksNjUwNTYsNjUwNTksNjUwNzUsNjUwNzYsNjUxMDEsNjUxMDMsNjUxMzYsNjUxMzgsNjUxNDAsNjUxNDAsNjUxNDIsNjUyNzYsNjUyOTYsNjUzMDUsNjUzMTMsNjUzMzgsNjUzNDMsNjUzNDMsNjUzNDUsNjUzNzAsNjUzODEsNjU0NzAsNjU0NzQsNjU0NzksNjU0ODIsNjU0ODcsNjU0OTAsNjU0OTUsNjU0OTgsNjU1MDBdLE49WzE3MCwxNzAsMTgxLDE4MSwxODYsMTg2LDE5MiwyMTQsMjE2LDI0NiwyNDgsNzA1LDcxMCw3MjEsNzM2LDc0MCw3NDgsNzQ4LDc1MCw3NTAsODgwLDg4NCw4ODYsODg3LDg5MCw4OTMsOTAyLDkwMiw5MDQsOTA2LDkwOCw5MDgsOTEwLDkyOSw5MzEsMTAxMywxMDE1LDExNTMsMTE2MiwxMzE5LDEzMjksMTM2NiwxMzY5LDEzNjksMTM3NywxNDE1LDE0ODgsMTUxNCwxNTIwLDE1MjIsMTU2OCwxNjEwLDE2NDYsMTY0NywxNjQ5LDE3NDcsMTc0OSwxNzQ5LDE3NjUsMTc2NiwxNzc0LDE3NzUsMTc4NiwxNzg4LDE3OTEsMTc5MSwxODA4LDE4MDgsMTgxMCwxODM5LDE4NjksMTk1NywxOTY5LDE5NjksMTk5NCwyMDI2LDIwMzYsMjAzNywyMDQyLDIwNDIsMjA0OCwyMDY5LDIwNzQsMjA3NCwyMDg0LDIwODQsMjA4OCwyMDg4LDIxMTIsMjEzNiwyMjA4LDIyMDgsMjIxMCwyMjIwLDIzMDgsMjM2MSwyMzY1LDIzNjUsMjM4NCwyMzg0LDIzOTIsMjQwMSwyNDE3LDI0MjMsMjQyNSwyNDMxLDI0MzcsMjQ0NCwyNDQ3LDI0NDgsMjQ1MSwyNDcyLDI0NzQsMjQ4MCwyNDgyLDI0ODIsMjQ4NiwyNDg5LDI0OTMsMjQ5MywyNTEwLDI1MTAsMjUyNCwyNTI1LDI1MjcsMjUyOSwyNTQ0LDI1NDUsMjU2NSwyNTcwLDI1NzUsMjU3NiwyNTc5LDI2MDAsMjYwMiwyNjA4LDI2MTAsMjYxMSwyNjEzLDI2MTQsMjYxNiwyNjE3LDI2NDksMjY1MiwyNjU0LDI2NTQsMjY3NCwyNjc2LDI2OTMsMjcwMSwyNzAzLDI3MDUsMjcwNywyNzI4LDI3MzAsMjczNiwyNzM4LDI3MzksMjc0MSwyNzQ1LDI3NDksMjc0OSwyNzY4LDI3NjgsMjc4NCwyNzg1LDI4MjEsMjgyOCwyODMxLDI4MzIsMjgzNSwyODU2LDI4NTgsMjg2NCwyODY2LDI4NjcsMjg2OSwyODczLDI4NzcsMjg3NywyOTA4LDI5MDksMjkxMSwyOTEzLDI5MjksMjkyOSwyOTQ3LDI5NDcsMjk0OSwyOTU0LDI5NTgsMjk2MCwyOTYyLDI5NjUsMjk2OSwyOTcwLDI5NzIsMjk3MiwyOTc0LDI5NzUsMjk3OSwyOTgwLDI5ODQsMjk4NiwyOTkwLDMwMDEsMzAyNCwzMDI0LDMwNzcsMzA4NCwzMDg2LDMwODgsMzA5MCwzMTEyLDMxMTQsMzEyMywzMTI1LDMxMjksMzEzMywzMTMzLDMxNjAsMzE2MSwzMTY4LDMxNjksMzIwNSwzMjEyLDMyMTQsMzIxNiwzMjE4LDMyNDAsMzI0MiwzMjUxLDMyNTMsMzI1NywzMjYxLDMyNjEsMzI5NCwzMjk0LDMyOTYsMzI5NywzMzEzLDMzMTQsMzMzMywzMzQwLDMzNDIsMzM0NCwzMzQ2LDMzODYsMzM4OSwzMzg5LDM0MDYsMzQwNiwzNDI0LDM0MjUsMzQ1MCwzNDU1LDM0NjEsMzQ3OCwzNDgyLDM1MDUsMzUwNywzNTE1LDM1MTcsMzUxNywzNTIwLDM1MjYsMzU4NSwzNjMyLDM2MzQsMzYzNSwzNjQ4LDM2NTQsMzcxMywzNzE0LDM3MTYsMzcxNiwzNzE5LDM3MjAsMzcyMiwzNzIyLDM3MjUsMzcyNSwzNzMyLDM3MzUsMzczNywzNzQzLDM3NDUsMzc0NywzNzQ5LDM3NDksMzc1MSwzNzUxLDM3NTQsMzc1NSwzNzU3LDM3NjAsMzc2MiwzNzYzLDM3NzMsMzc3MywzNzc2LDM3ODAsMzc4MiwzNzgyLDM4MDQsMzgwNywzODQwLDM4NDAsMzkwNCwzOTExLDM5MTMsMzk0OCwzOTc2LDM5ODAsNDA5Niw0MTM4LDQxNTksNDE1OSw0MTc2LDQxODEsNDE4Niw0MTg5LDQxOTMsNDE5Myw0MTk3LDQxOTgsNDIwNiw0MjA4LDQyMTMsNDIyNSw0MjM4LDQyMzgsNDI1Niw0MjkzLDQyOTUsNDI5NSw0MzAxLDQzMDEsNDMwNCw0MzQ2LDQzNDgsNDY4MCw0NjgyLDQ2ODUsNDY4OCw0Njk0LDQ2OTYsNDY5Niw0Njk4LDQ3MDEsNDcwNCw0NzQ0LDQ3NDYsNDc0OSw0NzUyLDQ3ODQsNDc4Niw0Nzg5LDQ3OTIsNDc5OCw0ODAwLDQ4MDAsNDgwMiw0ODA1LDQ4MDgsNDgyMiw0ODI0LDQ4ODAsNDg4Miw0ODg1LDQ4ODgsNDk1NCw0OTkyLDUwMDcsNTAyNCw1MTA4LDUxMjEsNTc0MCw1NzQzLDU3NTksNTc2MSw1Nzg2LDU3OTIsNTg2Niw1ODcwLDU4NzIsNTg4OCw1OTAwLDU5MDIsNTkwNSw1OTIwLDU5MzcsNTk1Miw1OTY5LDU5ODQsNTk5Niw1OTk4LDZlMyw2MDE2LDYwNjcsNjEwMyw2MTAzLDYxMDgsNjEwOCw2MTc2LDYyNjMsNjI3Miw2MzEyLDYzMTQsNjMxNCw2MzIwLDYzODksNjQwMCw2NDI4LDY0ODAsNjUwOSw2NTEyLDY1MTYsNjUyOCw2NTcxLDY1OTMsNjU5OSw2NjU2LDY2NzgsNjY4OCw2NzQwLDY4MjMsNjgyMyw2OTE3LDY5NjMsNjk4MSw2OTg3LDcwNDMsNzA3Miw3MDg2LDcwODcsNzA5OCw3MTQxLDcxNjgsNzIwMyw3MjQ1LDcyNDcsNzI1OCw3MjkzLDc0MDEsNzQwNCw3NDA2LDc0MDksNzQxMyw3NDE0LDc0MjQsNzYxNSw3NjgwLDc5NTcsNzk2MCw3OTY1LDc5NjgsODAwNSw4MDA4LDgwMTMsODAxNiw4MDIzLDgwMjUsODAyNSw4MDI3LDgwMjcsODAyOSw4MDI5LDgwMzEsODA2MSw4MDY0LDgxMTYsODExOCw4MTI0LDgxMjYsODEyNiw4MTMwLDgxMzIsODEzNCw4MTQwLDgxNDQsODE0Nyw4MTUwLDgxNTUsODE2MCw4MTcyLDgxNzgsODE4MCw4MTgyLDgxODgsODMwNSw4MzA1LDgzMTksODMxOSw4MzM2LDgzNDgsODQ1MCw4NDUwLDg0NTUsODQ1NSw4NDU4LDg0NjcsODQ2OSw4NDY5LDg0NzMsODQ3Nyw4NDg0LDg0ODQsODQ4Niw4NDg2LDg0ODgsODQ4OCw4NDkwLDg0OTMsODQ5NSw4NTA1LDg1MDgsODUxMSw4NTE3LDg1MjEsODUyNiw4NTI2LDg1NDQsODU4NCwxMTI2NCwxMTMxMCwxMTMxMiwxMTM1OCwxMTM2MCwxMTQ5MiwxMTQ5OSwxMTUwMiwxMTUwNiwxMTUwNywxMTUyMCwxMTU1NywxMTU1OSwxMTU1OSwxMTU2NSwxMTU2NSwxMTU2OCwxMTYyMywxMTYzMSwxMTYzMSwxMTY0OCwxMTY3MCwxMTY4MCwxMTY4NiwxMTY4OCwxMTY5NCwxMTY5NiwxMTcwMiwxMTcwNCwxMTcxMCwxMTcxMiwxMTcxOCwxMTcyMCwxMTcyNiwxMTcyOCwxMTczNCwxMTczNiwxMTc0MiwxMTgyMywxMTgyMywxMjI5MywxMjI5NSwxMjMyMSwxMjMyOSwxMjMzNywxMjM0MSwxMjM0NCwxMjM0OCwxMjM1MywxMjQzOCwxMjQ0NSwxMjQ0NywxMjQ0OSwxMjUzOCwxMjU0MCwxMjU0MywxMjU0OSwxMjU4OSwxMjU5MywxMjY4NiwxMjcwNCwxMjczMCwxMjc4NCwxMjc5OSwxMzMxMiwxOTg5MywxOTk2OCw0MDkwOCw0MDk2MCw0MjEyNCw0MjE5Miw0MjIzNyw0MjI0MCw0MjUwOCw0MjUxMiw0MjUyNyw0MjUzOCw0MjUzOSw0MjU2MCw0MjYwNiw0MjYyMyw0MjY0Nyw0MjY1Niw0MjczNSw0Mjc3NSw0Mjc4Myw0Mjc4Niw0Mjg4OCw0Mjg5MSw0Mjg5NCw0Mjg5Niw0Mjg5OSw0MjkxMiw0MjkyMiw0M2UzLDQzMDA5LDQzMDExLDQzMDEzLDQzMDE1LDQzMDE4LDQzMDIwLDQzMDQyLDQzMDcyLDQzMTIzLDQzMTM4LDQzMTg3LDQzMjUwLDQzMjU1LDQzMjU5LDQzMjU5LDQzMjc0LDQzMzAxLDQzMzEyLDQzMzM0LDQzMzYwLDQzMzg4LDQzMzk2LDQzNDQyLDQzNDcxLDQzNDcxLDQzNTIwLDQzNTYwLDQzNTg0LDQzNTg2LDQzNTg4LDQzNTk1LDQzNjE2LDQzNjM4LDQzNjQyLDQzNjQyLDQzNjQ4LDQzNjk1LDQzNjk3LDQzNjk3LDQzNzAxLDQzNzAyLDQzNzA1LDQzNzA5LDQzNzEyLDQzNzEyLDQzNzE0LDQzNzE0LDQzNzM5LDQzNzQxLDQzNzQ0LDQzNzU0LDQzNzYyLDQzNzY0LDQzNzc3LDQzNzgyLDQzNzg1LDQzNzkwLDQzNzkzLDQzNzk4LDQzODA4LDQzODE0LDQzODE2LDQzODIyLDQzOTY4LDQ0MDAyLDQ0MDMyLDU1MjAzLDU1MjE2LDU1MjM4LDU1MjQzLDU1MjkxLDYzNzQ0LDY0MTA5LDY0MTEyLDY0MjE3LDY0MjU2LDY0MjYyLDY0Mjc1LDY0Mjc5LDY0Mjg1LDY0Mjg1LDY0Mjg3LDY0Mjk2LDY0Mjk4LDY0MzEwLDY0MzEyLDY0MzE2LDY0MzE4LDY0MzE4LDY0MzIwLDY0MzIxLDY0MzIzLDY0MzI0LDY0MzI2LDY0NDMzLDY0NDY3LDY0ODI5LDY0ODQ4LDY0OTExLDY0OTE0LDY0OTY3LDY1MDA4LDY1MDE5LDY1MTM2LDY1MTQwLDY1MTQyLDY1Mjc2LDY1MzEzLDY1MzM4LDY1MzQ1LDY1MzcwLDY1MzgyLDY1NDcwLDY1NDc0LDY1NDc5LDY1NDgyLDY1NDg3LDY1NDkwLDY1NDk1LDY1NDk4LDY1NTAwXSxwPVsxNzAsMTcwLDE4MSwxODEsMTg2LDE4NiwxOTIsMjE0LDIxNiwyNDYsMjQ4LDcwNSw3MTAsNzIxLDczNiw3NDAsNzQ4LDc0OCw3NTAsNzUwLDc2OCw4ODQsODg2LDg4Nyw4OTAsODkzLDkwMiw5MDIsOTA0LDkwNiw5MDgsOTA4LDkxMCw5MjksOTMxLDEwMTMsMTAxNSwxMTUzLDExNTUsMTE1OSwxMTYyLDEzMTksMTMyOSwxMzY2LDEzNjksMTM2OSwxMzc3LDE0MTUsMTQyNSwxNDY5LDE0NzEsMTQ3MSwxNDczLDE0NzQsMTQ3NiwxNDc3LDE0NzksMTQ3OSwxNDg4LDE1MTQsMTUyMCwxNTIyLDE1NTIsMTU2MiwxNTY4LDE2NDEsMTY0NiwxNzQ3LDE3NDksMTc1NiwxNzU5LDE3NjgsMTc3MCwxNzg4LDE3OTEsMTc5MSwxODA4LDE4NjYsMTg2OSwxOTY5LDE5ODQsMjAzNywyMDQyLDIwNDIsMjA0OCwyMDkzLDIxMTIsMjEzOSwyMjA4LDIyMDgsMjIxMCwyMjIwLDIyNzYsMjMwMiwyMzA0LDI0MDMsMjQwNiwyNDE1LDI0MTcsMjQyMywyNDI1LDI0MzEsMjQzMywyNDM1LDI0MzcsMjQ0NCwyNDQ3LDI0NDgsMjQ1MSwyNDcyLDI0NzQsMjQ4MCwyNDgyLDI0ODIsMjQ4NiwyNDg5LDI0OTIsMjUwMCwyNTAzLDI1MDQsMjUwNywyNTEwLDI1MTksMjUxOSwyNTI0LDI1MjUsMjUyNywyNTMxLDI1MzQsMjU0NSwyNTYxLDI1NjMsMjU2NSwyNTcwLDI1NzUsMjU3NiwyNTc5LDI2MDAsMjYwMiwyNjA4LDI2MTAsMjYxMSwyNjEzLDI2MTQsMjYxNiwyNjE3LDI2MjAsMjYyMCwyNjIyLDI2MjYsMjYzMSwyNjMyLDI2MzUsMjYzNywyNjQxLDI2NDEsMjY0OSwyNjUyLDI2NTQsMjY1NCwyNjYyLDI2NzcsMjY4OSwyNjkxLDI2OTMsMjcwMSwyNzAzLDI3MDUsMjcwNywyNzI4LDI3MzAsMjczNiwyNzM4LDI3MzksMjc0MSwyNzQ1LDI3NDgsMjc1NywyNzU5LDI3NjEsMjc2MywyNzY1LDI3NjgsMjc2OCwyNzg0LDI3ODcsMjc5MCwyNzk5LDI4MTcsMjgxOSwyODIxLDI4MjgsMjgzMSwyODMyLDI4MzUsMjg1NiwyODU4LDI4NjQsMjg2NiwyODY3LDI4NjksMjg3MywyODc2LDI4ODQsMjg4NywyODg4LDI4OTEsMjg5MywyOTAyLDI5MDMsMjkwOCwyOTA5LDI5MTEsMjkxNSwyOTE4LDI5MjcsMjkyOSwyOTI5LDI5NDYsMjk0NywyOTQ5LDI5NTQsMjk1OCwyOTYwLDI5NjIsMjk2NSwyOTY5LDI5NzAsMjk3MiwyOTcyLDI5NzQsMjk3NSwyOTc5LDI5ODAsMjk4NCwyOTg2LDI5OTAsMzAwMSwzMDA2LDMwMTAsMzAxNCwzMDE2LDMwMTgsMzAyMSwzMDI0LDMwMjQsMzAzMSwzMDMxLDMwNDYsMzA1NSwzMDczLDMwNzUsMzA3NywzMDg0LDMwODYsMzA4OCwzMDkwLDMxMTIsMzExNCwzMTIzLDMxMjUsMzEyOSwzMTMzLDMxNDAsMzE0MiwzMTQ0LDMxNDYsMzE0OSwzMTU3LDMxNTgsMzE2MCwzMTYxLDMxNjgsMzE3MSwzMTc0LDMxODMsMzIwMiwzMjAzLDMyMDUsMzIxMiwzMjE0LDMyMTYsMzIxOCwzMjQwLDMyNDIsMzI1MSwzMjUzLDMyNTcsMzI2MCwzMjY4LDMyNzAsMzI3MiwzMjc0LDMyNzcsMzI4NSwzMjg2LDMyOTQsMzI5NCwzMjk2LDMyOTksMzMwMiwzMzExLDMzMTMsMzMxNCwzMzMwLDMzMzEsMzMzMywzMzQwLDMzNDIsMzM0NCwzMzQ2LDMzODYsMzM4OSwzMzk2LDMzOTgsMzQwMCwzNDAyLDM0MDYsMzQxNSwzNDE1LDM0MjQsMzQyNywzNDMwLDM0MzksMzQ1MCwzNDU1LDM0NTgsMzQ1OSwzNDYxLDM0NzgsMzQ4MiwzNTA1LDM1MDcsMzUxNSwzNTE3LDM1MTcsMzUyMCwzNTI2LDM1MzAsMzUzMCwzNTM1LDM1NDAsMzU0MiwzNTQyLDM1NDQsMzU1MSwzNTcwLDM1NzEsMzU4NSwzNjQyLDM2NDgsMzY2MiwzNjY0LDM2NzMsMzcxMywzNzE0LDM3MTYsMzcxNiwzNzE5LDM3MjAsMzcyMiwzNzIyLDM3MjUsMzcyNSwzNzMyLDM3MzUsMzczNywzNzQzLDM3NDUsMzc0NywzNzQ5LDM3NDksMzc1MSwzNzUxLDM3NTQsMzc1NSwzNzU3LDM3NjksMzc3MSwzNzczLDM3NzYsMzc4MCwzNzgyLDM3ODIsMzc4NCwzNzg5LDM3OTIsMzgwMSwzODA0LDM4MDcsMzg0MCwzODQwLDM4NjQsMzg2NSwzODcyLDM4ODEsMzg5MywzODkzLDM4OTUsMzg5NSwzODk3LDM4OTcsMzkwMiwzOTExLDM5MTMsMzk0OCwzOTUzLDM5NzIsMzk3NCwzOTkxLDM5OTMsNDAyOCw0MDM4LDQwMzgsNDA5Niw0MTY5LDQxNzYsNDI1Myw0MjU2LDQyOTMsNDI5NSw0Mjk1LDQzMDEsNDMwMSw0MzA0LDQzNDYsNDM0OCw0NjgwLDQ2ODIsNDY4NSw0Njg4LDQ2OTQsNDY5Niw0Njk2LDQ2OTgsNDcwMSw0NzA0LDQ3NDQsNDc0Niw0NzQ5LDQ3NTIsNDc4NCw0Nzg2LDQ3ODksNDc5Miw0Nzk4LDQ4MDAsNDgwMCw0ODAyLDQ4MDUsNDgwOCw0ODIyLDQ4MjQsNDg4MCw0ODgyLDQ4ODUsNDg4OCw0OTU0LDQ5NTcsNDk1OSw0OTkyLDUwMDcsNTAyNCw1MTA4LDUxMjEsNTc0MCw1NzQzLDU3NTksNTc2MSw1Nzg2LDU3OTIsNTg2Niw1ODcwLDU4NzIsNTg4OCw1OTAwLDU5MDIsNTkwOCw1OTIwLDU5NDAsNTk1Miw1OTcxLDU5ODQsNTk5Niw1OTk4LDZlMyw2MDAyLDYwMDMsNjAxNiw2MDk5LDYxMDMsNjEwMyw2MTA4LDYxMDksNjExMiw2MTIxLDYxNTUsNjE1Nyw2MTYwLDYxNjksNjE3Niw2MjYzLDYyNzIsNjMxNCw2MzIwLDYzODksNjQwMCw2NDI4LDY0MzIsNjQ0Myw2NDQ4LDY0NTksNjQ3MCw2NTA5LDY1MTIsNjUxNiw2NTI4LDY1NzEsNjU3Niw2NjAxLDY2MDgsNjYxNyw2NjU2LDY2ODMsNjY4OCw2NzUwLDY3NTIsNjc4MCw2NzgzLDY3OTMsNjgwMCw2ODA5LDY4MjMsNjgyMyw2OTEyLDY5ODcsNjk5Miw3MDAxLDcwMTksNzAyNyw3MDQwLDcxNTUsNzE2OCw3MjIzLDcyMzIsNzI0MSw3MjQ1LDcyOTMsNzM3Niw3Mzc4LDczODAsNzQxNCw3NDI0LDc2NTQsNzY3Niw3OTU3LDc5NjAsNzk2NSw3OTY4LDgwMDUsODAwOCw4MDEzLDgwMTYsODAyMyw4MDI1LDgwMjUsODAyNyw4MDI3LDgwMjksODAyOSw4MDMxLDgwNjEsODA2NCw4MTE2LDgxMTgsODEyNCw4MTI2LDgxMjYsODEzMCw4MTMyLDgxMzQsODE0MCw4MTQ0LDgxNDcsODE1MCw4MTU1LDgxNjAsODE3Miw4MTc4LDgxODAsODE4Miw4MTg4LDgyMDQsODIwNSw4MjU1LDgyNTYsODI3Niw4Mjc2LDgzMDUsODMwNSw4MzE5LDgzMTksODMzNiw4MzQ4LDg0MDAsODQxMiw4NDE3LDg0MTcsODQyMSw4NDMyLDg0NTAsODQ1MCw4NDU1LDg0NTUsODQ1OCw4NDY3LDg0NjksODQ2OSw4NDczLDg0NzcsODQ4NCw4NDg0LDg0ODYsODQ4Niw4NDg4LDg0ODgsODQ5MCw4NDkzLDg0OTUsODUwNSw4NTA4LDg1MTEsODUxNyw4NTIxLDg1MjYsODUyNiw4NTQ0LDg1ODQsMTEyNjQsMTEzMTAsMTEzMTIsMTEzNTgsMTEzNjAsMTE0OTIsMTE0OTksMTE1MDcsMTE1MjAsMTE1NTcsMTE1NTksMTE1NTksMTE1NjUsMTE1NjUsMTE1NjgsMTE2MjMsMTE2MzEsMTE2MzEsMTE2NDcsMTE2NzAsMTE2ODAsMTE2ODYsMTE2ODgsMTE2OTQsMTE2OTYsMTE3MDIsMTE3MDQsMTE3MTAsMTE3MTIsMTE3MTgsMTE3MjAsMTE3MjYsMTE3MjgsMTE3MzQsMTE3MzYsMTE3NDIsMTE3NDQsMTE3NzUsMTE4MjMsMTE4MjMsMTIyOTMsMTIyOTUsMTIzMjEsMTIzMzUsMTIzMzcsMTIzNDEsMTIzNDQsMTIzNDgsMTIzNTMsMTI0MzgsMTI0NDEsMTI0NDIsMTI0NDUsMTI0NDcsMTI0NDksMTI1MzgsMTI1NDAsMTI1NDMsMTI1NDksMTI1ODksMTI1OTMsMTI2ODYsMTI3MDQsMTI3MzAsMTI3ODQsMTI3OTksMTMzMTIsMTk4OTMsMTk5NjgsNDA5MDgsNDA5NjAsNDIxMjQsNDIxOTIsNDIyMzcsNDIyNDAsNDI1MDgsNDI1MTIsNDI1MzksNDI1NjAsNDI2MDcsNDI2MTIsNDI2MjEsNDI2MjMsNDI2NDcsNDI2NTUsNDI3MzcsNDI3NzUsNDI3ODMsNDI3ODYsNDI4ODgsNDI4OTEsNDI4OTQsNDI4OTYsNDI4OTksNDI5MTIsNDI5MjIsNDNlMyw0MzA0Nyw0MzA3Miw0MzEyMyw0MzEzNiw0MzIwNCw0MzIxNiw0MzIyNSw0MzIzMiw0MzI1NSw0MzI1OSw0MzI1OSw0MzI2NCw0MzMwOSw0MzMxMiw0MzM0Nyw0MzM2MCw0MzM4OCw0MzM5Miw0MzQ1Niw0MzQ3MSw0MzQ4MSw0MzUyMCw0MzU3NCw0MzU4NCw0MzU5Nyw0MzYwMCw0MzYwOSw0MzYxNiw0MzYzOCw0MzY0Miw0MzY0Myw0MzY0OCw0MzcxNCw0MzczOSw0Mzc0MSw0Mzc0NCw0Mzc1OSw0Mzc2Miw0Mzc2Niw0Mzc3Nyw0Mzc4Miw0Mzc4NSw0Mzc5MCw0Mzc5Myw0Mzc5OCw0MzgwOCw0MzgxNCw0MzgxNiw0MzgyMiw0Mzk2OCw0NDAxMCw0NDAxMiw0NDAxMyw0NDAxNiw0NDAyNSw0NDAzMiw1NTIwMyw1NTIxNiw1NTIzOCw1NTI0Myw1NTI5MSw2Mzc0NCw2NDEwOSw2NDExMiw2NDIxNyw2NDI1Niw2NDI2Miw2NDI3NSw2NDI3OSw2NDI4NSw2NDI5Niw2NDI5OCw2NDMxMCw2NDMxMiw2NDMxNiw2NDMxOCw2NDMxOCw2NDMyMCw2NDMyMSw2NDMyMyw2NDMyNCw2NDMyNiw2NDQzMyw2NDQ2Nyw2NDgyOSw2NDg0OCw2NDkxMSw2NDkxNCw2NDk2Nyw2NTAwOCw2NTAxOSw2NTAyNCw2NTAzOSw2NTA1Niw2NTA2Miw2NTA3NSw2NTA3Niw2NTEwMSw2NTEwMyw2NTEzNiw2NTE0MCw2NTE0Miw2NTI3Niw2NTI5Niw2NTMwNSw2NTMxMyw2NTMzOCw2NTM0Myw2NTM0Myw2NTM0NSw2NTM3MCw2NTM4Miw2NTQ3MCw2NTQ3NCw2NTQ3OSw2NTQ4Miw2NTQ4Nyw2NTQ5MCw2NTQ5NSw2NTQ5OCw2NTUwMF0sbT1bNjUsOTAsOTcsMTIyLDE3MCwxNzAsMTgxLDE4MSwxODYsMTg2LDE5MiwyMTQsMjE2LDI0NiwyNDgsNzA1LDcxMCw3MjEsNzM2LDc0MCw3NDgsNzQ4LDc1MCw3NTAsODgwLDg4NCw4ODYsODg3LDg5MCw4OTMsODk1LDg5NSw5MDIsOTAyLDkwNCw5MDYsOTA4LDkwOCw5MTAsOTI5LDkzMSwxMDEzLDEwMTUsMTE1MywxMTYyLDEzMjcsMTMyOSwxMzY2LDEzNjksMTM2OSwxMzc2LDE0MTYsMTQ4OCwxNTE0LDE1MTksMTUyMiwxNTY4LDE2MTAsMTY0NiwxNjQ3LDE2NDksMTc0NywxNzQ5LDE3NDksMTc2NSwxNzY2LDE3NzQsMTc3NSwxNzg2LDE3ODgsMTc5MSwxNzkxLDE4MDgsMTgwOCwxODEwLDE4MzksMTg2OSwxOTU3LDE5NjksMTk2OSwxOTk0LDIwMjYsMjAzNiwyMDM3LDIwNDIsMjA0MiwyMDQ4LDIwNjksMjA3NCwyMDc0LDIwODQsMjA4NCwyMDg4LDIwODgsMjExMiwyMTM2LDIxNDQsMjE1NCwyMjA4LDIyMjgsMjIzMCwyMjM3LDIzMDgsMjM2MSwyMzY1LDIzNjUsMjM4NCwyMzg0LDIzOTIsMjQwMSwyNDE3LDI0MzIsMjQzNywyNDQ0LDI0NDcsMjQ0OCwyNDUxLDI0NzIsMjQ3NCwyNDgwLDI0ODIsMjQ4MiwyNDg2LDI0ODksMjQ5MywyNDkzLDI1MTAsMjUxMCwyNTI0LDI1MjUsMjUyNywyNTI5LDI1NDQsMjU0NSwyNTU2LDI1NTYsMjU2NSwyNTcwLDI1NzUsMjU3NiwyNTc5LDI2MDAsMjYwMiwyNjA4LDI2MTAsMjYxMSwyNjEzLDI2MTQsMjYxNiwyNjE3LDI2NDksMjY1MiwyNjU0LDI2NTQsMjY3NCwyNjc2LDI2OTMsMjcwMSwyNzAzLDI3MDUsMjcwNywyNzI4LDI3MzAsMjczNiwyNzM4LDI3MzksMjc0MSwyNzQ1LDI3NDksMjc0OSwyNzY4LDI3NjgsMjc4NCwyNzg1LDI4MDksMjgwOSwyODIxLDI4MjgsMjgzMSwyODMyLDI4MzUsMjg1NiwyODU4LDI4NjQsMjg2NiwyODY3LDI4NjksMjg3MywyODc3LDI4NzcsMjkwOCwyOTA5LDI5MTEsMjkxMywyOTI5LDI5MjksMjk0NywyOTQ3LDI5NDksMjk1NCwyOTU4LDI5NjAsMjk2MiwyOTY1LDI5NjksMjk3MCwyOTcyLDI5NzIsMjk3NCwyOTc1LDI5NzksMjk4MCwyOTg0LDI5ODYsMjk5MCwzMDAxLDMwMjQsMzAyNCwzMDc3LDMwODQsMzA4NiwzMDg4LDMwOTAsMzExMiwzMTE0LDMxMjksMzEzMywzMTMzLDMxNjAsMzE2MiwzMTY4LDMxNjksMzIwMCwzMjAwLDMyMDUsMzIxMiwzMjE0LDMyMTYsMzIxOCwzMjQwLDMyNDIsMzI1MSwzMjUzLDMyNTcsMzI2MSwzMjYxLDMyOTQsMzI5NCwzMjk2LDMyOTcsMzMxMywzMzE0LDMzMzMsMzM0MCwzMzQyLDMzNDQsMzM0NiwzMzg2LDMzODksMzM4OSwzNDA2LDM0MDYsMzQxMiwzNDE0LDM0MjMsMzQyNSwzNDUwLDM0NTUsMzQ2MSwzNDc4LDM0ODIsMzUwNSwzNTA3LDM1MTUsMzUxNywzNTE3LDM1MjAsMzUyNiwzNTg1LDM2MzIsMzYzNCwzNjM1LDM2NDgsMzY1NCwzNzEzLDM3MTQsMzcxNiwzNzE2LDM3MTgsMzcyMiwzNzI0LDM3NDcsMzc0OSwzNzQ5LDM3NTEsMzc2MCwzNzYyLDM3NjMsMzc3MywzNzczLDM3NzYsMzc4MCwzNzgyLDM3ODIsMzgwNCwzODA3LDM4NDAsMzg0MCwzOTA0LDM5MTEsMzkxMywzOTQ4LDM5NzYsMzk4MCw0MDk2LDQxMzgsNDE1OSw0MTU5LDQxNzYsNDE4MSw0MTg2LDQxODksNDE5Myw0MTkzLDQxOTcsNDE5OCw0MjA2LDQyMDgsNDIxMyw0MjI1LDQyMzgsNDIzOCw0MjU2LDQyOTMsNDI5NSw0Mjk1LDQzMDEsNDMwMSw0MzA0LDQzNDYsNDM0OCw0NjgwLDQ2ODIsNDY4NSw0Njg4LDQ2OTQsNDY5Niw0Njk2LDQ2OTgsNDcwMSw0NzA0LDQ3NDQsNDc0Niw0NzQ5LDQ3NTIsNDc4NCw0Nzg2LDQ3ODksNDc5Miw0Nzk4LDQ4MDAsNDgwMCw0ODAyLDQ4MDUsNDgwOCw0ODIyLDQ4MjQsNDg4MCw0ODgyLDQ4ODUsNDg4OCw0OTU0LDQ5OTIsNTAwNyw1MDI0LDUxMDksNTExMiw1MTE3LDUxMjEsNTc0MCw1NzQzLDU3NTksNTc2MSw1Nzg2LDU3OTIsNTg2Niw1ODcwLDU4ODAsNTg4OCw1OTAwLDU5MDIsNTkwNSw1OTIwLDU5MzcsNTk1Miw1OTY5LDU5ODQsNTk5Niw1OTk4LDZlMyw2MDE2LDYwNjcsNjEwMyw2MTAzLDYxMDgsNjEwOCw2MTc2LDYyNjQsNjI3Miw2MzEyLDYzMTQsNjMxNCw2MzIwLDYzODksNjQwMCw2NDMwLDY0ODAsNjUwOSw2NTEyLDY1MTYsNjUyOCw2NTcxLDY1NzYsNjYwMSw2NjU2LDY2NzgsNjY4OCw2NzQwLDY4MjMsNjgyMyw2OTE3LDY5NjMsNjk4MSw2OTg3LDcwNDMsNzA3Miw3MDg2LDcwODcsNzA5OCw3MTQxLDcxNjgsNzIwMyw3MjQ1LDcyNDcsNzI1OCw3MjkzLDcyOTYsNzMwNCw3MzEyLDczNTQsNzM1Nyw3MzU5LDc0MDEsNzQwNCw3NDA2LDc0MTEsNzQxMyw3NDE0LDc0MTgsNzQxOCw3NDI0LDc2MTUsNzY4MCw3OTU3LDc5NjAsNzk2NSw3OTY4LDgwMDUsODAwOCw4MDEzLDgwMTYsODAyMyw4MDI1LDgwMjUsODAyNyw4MDI3LDgwMjksODAyOSw4MDMxLDgwNjEsODA2NCw4MTE2LDgxMTgsODEyNCw4MTI2LDgxMjYsODEzMCw4MTMyLDgxMzQsODE0MCw4MTQ0LDgxNDcsODE1MCw4MTU1LDgxNjAsODE3Miw4MTc4LDgxODAsODE4Miw4MTg4LDgzMDUsODMwNSw4MzE5LDgzMTksODMzNiw4MzQ4LDg0NTAsODQ1MCw4NDU1LDg0NTUsODQ1OCw4NDY3LDg0NjksODQ2OSw4NDcyLDg0NzcsODQ4NCw4NDg0LDg0ODYsODQ4Niw4NDg4LDg0ODgsODQ5MCw4NTA1LDg1MDgsODUxMSw4NTE3LDg1MjEsODUyNiw4NTI2LDg1NDQsODU4NCwxMTI2NCwxMTMxMCwxMTMxMiwxMTM1OCwxMTM2MCwxMTQ5MiwxMTQ5OSwxMTUwMiwxMTUwNiwxMTUwNywxMTUyMCwxMTU1NywxMTU1OSwxMTU1OSwxMTU2NSwxMTU2NSwxMTU2OCwxMTYyMywxMTYzMSwxMTYzMSwxMTY0OCwxMTY3MCwxMTY4MCwxMTY4NiwxMTY4OCwxMTY5NCwxMTY5NiwxMTcwMiwxMTcwNCwxMTcxMCwxMTcxMiwxMTcxOCwxMTcyMCwxMTcyNiwxMTcyOCwxMTczNCwxMTczNiwxMTc0MiwxMjI5MywxMjI5NSwxMjMyMSwxMjMyOSwxMjMzNywxMjM0MSwxMjM0NCwxMjM0OCwxMjM1MywxMjQzOCwxMjQ0MywxMjQ0NywxMjQ0OSwxMjUzOCwxMjU0MCwxMjU0MywxMjU0OSwxMjU5MSwxMjU5MywxMjY4NiwxMjcwNCwxMjczMCwxMjc4NCwxMjc5OSwxMzMxMiwxOTg5MywxOTk2OCw0MDk0Myw0MDk2MCw0MjEyNCw0MjE5Miw0MjIzNyw0MjI0MCw0MjUwOCw0MjUxMiw0MjUyNyw0MjUzOCw0MjUzOSw0MjU2MCw0MjYwNiw0MjYyMyw0MjY1Myw0MjY1Niw0MjczNSw0Mjc3NSw0Mjc4Myw0Mjc4Niw0Mjg4OCw0Mjg5MSw0Mjk0Myw0Mjk0Niw0Mjk1MCw0Mjk5OSw0MzAwOSw0MzAxMSw0MzAxMyw0MzAxNSw0MzAxOCw0MzAyMCw0MzA0Miw0MzA3Miw0MzEyMyw0MzEzOCw0MzE4Nyw0MzI1MCw0MzI1NSw0MzI1OSw0MzI1OSw0MzI2MSw0MzI2Miw0MzI3NCw0MzMwMSw0MzMxMiw0MzMzNCw0MzM2MCw0MzM4OCw0MzM5Niw0MzQ0Miw0MzQ3MSw0MzQ3MSw0MzQ4OCw0MzQ5Miw0MzQ5NCw0MzUwMyw0MzUxNCw0MzUxOCw0MzUyMCw0MzU2MCw0MzU4NCw0MzU4Niw0MzU4OCw0MzU5NSw0MzYxNiw0MzYzOCw0MzY0Miw0MzY0Miw0MzY0Niw0MzY5NSw0MzY5Nyw0MzY5Nyw0MzcwMSw0MzcwMiw0MzcwNSw0MzcwOSw0MzcxMiw0MzcxMiw0MzcxNCw0MzcxNCw0MzczOSw0Mzc0MSw0Mzc0NCw0Mzc1NCw0Mzc2Miw0Mzc2NCw0Mzc3Nyw0Mzc4Miw0Mzc4NSw0Mzc5MCw0Mzc5Myw0Mzc5OCw0MzgwOCw0MzgxNCw0MzgxNiw0MzgyMiw0MzgyNCw0Mzg2Niw0Mzg2OCw0Mzg3OSw0Mzg4OCw0NDAwMiw0NDAzMiw1NTIwMyw1NTIxNiw1NTIzOCw1NTI0Myw1NTI5MSw2Mzc0NCw2NDEwOSw2NDExMiw2NDIxNyw2NDI1Niw2NDI2Miw2NDI3NSw2NDI3OSw2NDI4NSw2NDI4NSw2NDI4Nyw2NDI5Niw2NDI5OCw2NDMxMCw2NDMxMiw2NDMxNiw2NDMxOCw2NDMxOCw2NDMyMCw2NDMyMSw2NDMyMyw2NDMyNCw2NDMyNiw2NDQzMyw2NDQ2Nyw2NDgyOSw2NDg0OCw2NDkxMSw2NDkxNCw2NDk2Nyw2NTAwOCw2NTAxOSw2NTEzNiw2NTE0MCw2NTE0Miw2NTI3Niw2NTMxMyw2NTMzOCw2NTM0NSw2NTM3MCw2NTM4Miw2NTQ3MCw2NTQ3NCw2NTQ3OSw2NTQ4Miw2NTQ4Nyw2NTQ5MCw2NTQ5NSw2NTQ5OCw2NTUwMCw2NTUzNiw2NTU0Nyw2NTU0OSw2NTU3NCw2NTU3Niw2NTU5NCw2NTU5Niw2NTU5Nyw2NTU5OSw2NTYxMyw2NTYxNiw2NTYyOSw2NTY2NCw2NTc4Niw2NTg1Niw2NTkwOCw2NjE3Niw2NjIwNCw2NjIwOCw2NjI1Niw2NjMwNCw2NjMzNSw2NjM0OSw2NjM3OCw2NjM4NCw2NjQyMSw2NjQzMiw2NjQ2MSw2NjQ2NCw2NjQ5OSw2NjUwNCw2NjUxMSw2NjUxMyw2NjUxNyw2NjU2MCw2NjcxNyw2NjczNiw2Njc3MSw2Njc3Niw2NjgxMSw2NjgxNiw2Njg1NSw2Njg2NCw2NjkxNSw2NzA3Miw2NzM4Miw2NzM5Miw2NzQxMyw2NzQyNCw2NzQzMSw2NzU4NCw2NzU4OSw2NzU5Miw2NzU5Miw2NzU5NCw2NzYzNyw2NzYzOSw2NzY0MCw2NzY0NCw2NzY0NCw2NzY0Nyw2NzY2OSw2NzY4MCw2NzcwMiw2NzcxMiw2Nzc0Miw2NzgwOCw2NzgyNiw2NzgyOCw2NzgyOSw2Nzg0MCw2Nzg2MSw2Nzg3Miw2Nzg5Nyw2Nzk2OCw2ODAyMyw2ODAzMCw2ODAzMSw2ODA5Niw2ODA5Niw2ODExMiw2ODExNSw2ODExNyw2ODExOSw2ODEyMSw2ODE0OSw2ODE5Miw2ODIyMCw2ODIyNCw2ODI1Miw2ODI4OCw2ODI5NSw2ODI5Nyw2ODMyNCw2ODM1Miw2ODQwNSw2ODQxNiw2ODQzNyw2ODQ0OCw2ODQ2Niw2ODQ4MCw2ODQ5Nyw2ODYwOCw2ODY4MCw2ODczNiw2ODc4Niw2ODgwMCw2ODg1MCw2ODg2NCw2ODg5OSw2OTM3Niw2OTQwNCw2OTQxNSw2OTQxNSw2OTQyNCw2OTQ0NSw2OTYwMCw2OTYyMiw2OTYzNSw2OTY4Nyw2OTc2Myw2OTgwNyw2OTg0MCw2OTg2NCw2OTg5MSw2OTkyNiw2OTk1Niw2OTk1Niw2OTk2OCw3MDAwMiw3MDAwNiw3MDAwNiw3MDAxOSw3MDA2Niw3MDA4MSw3MDA4NCw3MDEwNiw3MDEwNiw3MDEwOCw3MDEwOCw3MDE0NCw3MDE2MSw3MDE2Myw3MDE4Nyw3MDI3Miw3MDI3OCw3MDI4MCw3MDI4MCw3MDI4Miw3MDI4NSw3MDI4Nyw3MDMwMSw3MDMwMyw3MDMxMiw3MDMyMCw3MDM2Niw3MDQwNSw3MDQxMiw3MDQxNSw3MDQxNiw3MDQxOSw3MDQ0MCw3MDQ0Miw3MDQ0OCw3MDQ1MCw3MDQ1MSw3MDQ1Myw3MDQ1Nyw3MDQ2MSw3MDQ2MSw3MDQ4MCw3MDQ4MCw3MDQ5Myw3MDQ5Nyw3MDY1Niw3MDcwOCw3MDcyNyw3MDczMCw3MDc1MSw3MDc1MSw3MDc4NCw3MDgzMSw3MDg1Miw3MDg1Myw3MDg1NSw3MDg1NSw3MTA0MCw3MTA4Niw3MTEyOCw3MTEzMSw3MTE2OCw3MTIxNSw3MTIzNiw3MTIzNiw3MTI5Niw3MTMzOCw3MTM1Miw3MTM1Miw3MTQyNCw3MTQ1MCw3MTY4MCw3MTcyMyw3MTg0MCw3MTkwMyw3MTkzNSw3MTkzNSw3MjA5Niw3MjEwMyw3MjEwNiw3MjE0NCw3MjE2MSw3MjE2MSw3MjE2Myw3MjE2Myw3MjE5Miw3MjE5Miw3MjIwMyw3MjI0Miw3MjI1MCw3MjI1MCw3MjI3Miw3MjI3Miw3MjI4NCw3MjMyOSw3MjM0OSw3MjM0OSw3MjM4NCw3MjQ0MCw3MjcwNCw3MjcxMiw3MjcxNCw3Mjc1MCw3Mjc2OCw3Mjc2OCw3MjgxOCw3Mjg0Nyw3Mjk2MCw3Mjk2Niw3Mjk2OCw3Mjk2OSw3Mjk3MSw3MzAwOCw3MzAzMCw3MzAzMCw3MzA1Niw3MzA2MSw3MzA2Myw3MzA2NCw3MzA2Niw3MzA5Nyw3MzExMiw3MzExMiw3MzQ0MCw3MzQ1OCw3MzcyOCw3NDY0OSw3NDc1Miw3NDg2Miw3NDg4MCw3NTA3NSw3NzgyNCw3ODg5NCw4Mjk0NCw4MzUyNiw5MjE2MCw5MjcyOCw5MjczNiw5Mjc2Niw5Mjg4MCw5MjkwOSw5MjkyOCw5Mjk3NSw5Mjk5Miw5Mjk5NSw5MzAyNyw5MzA0Nyw5MzA1Myw5MzA3MSw5Mzc2MCw5MzgyMyw5Mzk1Miw5NDAyNiw5NDAzMiw5NDAzMiw5NDA5OSw5NDExMSw5NDE3Niw5NDE3Nyw5NDE3OSw5NDE3OSw5NDIwOCwxMDAzNDMsMTAwMzUyLDEwMTEwNiwxMTA1OTIsMTEwODc4LDExMDkyOCwxMTA5MzAsMTEwOTQ4LDExMDk1MSwxMTA5NjAsMTExMzU1LDExMzY2NCwxMTM3NzAsMTEzNzc2LDExMzc4OCwxMTM3OTIsMTEzODAwLDExMzgwOCwxMTM4MTcsMTE5ODA4LDExOTg5MiwxMTk4OTQsMTE5OTY0LDExOTk2NiwxMTk5NjcsMTE5OTcwLDExOTk3MCwxMTk5NzMsMTE5OTc0LDExOTk3NywxMTk5ODAsMTE5OTgyLDExOTk5MywxMTk5OTUsMTE5OTk1LDExOTk5NywxMjAwMDMsMTIwMDA1LDEyMDA2OSwxMjAwNzEsMTIwMDc0LDEyMDA3NywxMjAwODQsMTIwMDg2LDEyMDA5MiwxMjAwOTQsMTIwMTIxLDEyMDEyMywxMjAxMjYsMTIwMTI4LDEyMDEzMiwxMjAxMzQsMTIwMTM0LDEyMDEzOCwxMjAxNDQsMTIwMTQ2LDEyMDQ4NSwxMjA0ODgsMTIwNTEyLDEyMDUxNCwxMjA1MzgsMTIwNTQwLDEyMDU3MCwxMjA1NzIsMTIwNTk2LDEyMDU5OCwxMjA2MjgsMTIwNjMwLDEyMDY1NCwxMjA2NTYsMTIwNjg2LDEyMDY4OCwxMjA3MTIsMTIwNzE0LDEyMDc0NCwxMjA3NDYsMTIwNzcwLDEyMDc3MiwxMjA3NzksMTIzMTM2LDEyMzE4MCwxMjMxOTEsMTIzMTk3LDEyMzIxNCwxMjMyMTQsMTIzNTg0LDEyMzYyNywxMjQ5MjgsMTI1MTI0LDEyNTE4NCwxMjUyNTEsMTI1MjU5LDEyNTI1OSwxMjY0NjQsMTI2NDY3LDEyNjQ2OSwxMjY0OTUsMTI2NDk3LDEyNjQ5OCwxMjY1MDAsMTI2NTAwLDEyNjUwMywxMjY1MDMsMTI2NTA1LDEyNjUxNCwxMjY1MTYsMTI2NTE5LDEyNjUyMSwxMjY1MjEsMTI2NTIzLDEyNjUyMywxMjY1MzAsMTI2NTMwLDEyNjUzNSwxMjY1MzUsMTI2NTM3LDEyNjUzNywxMjY1MzksMTI2NTM5LDEyNjU0MSwxMjY1NDMsMTI2NTQ1LDEyNjU0NiwxMjY1NDgsMTI2NTQ4LDEyNjU1MSwxMjY1NTEsMTI2NTUzLDEyNjU1MywxMjY1NTUsMTI2NTU1LDEyNjU1NywxMjY1NTcsMTI2NTU5LDEyNjU1OSwxMjY1NjEsMTI2NTYyLDEyNjU2NCwxMjY1NjQsMTI2NTY3LDEyNjU3MCwxMjY1NzIsMTI2NTc4LDEyNjU4MCwxMjY1ODMsMTI2NTg1LDEyNjU4OCwxMjY1OTAsMTI2NTkwLDEyNjU5MiwxMjY2MDEsMTI2NjAzLDEyNjYxOSwxMjY2MjUsMTI2NjI3LDEyNjYyOSwxMjY2MzMsMTI2NjM1LDEyNjY1MSwxMzEwNzIsMTczNzgyLDE3MzgyNCwxNzc5NzIsMTc3OTg0LDE3ODIwNSwxNzgyMDgsMTgzOTY5LDE4Mzk4NCwxOTE0NTYsMTk0NTYwLDE5NTEwMV0sRz1bNDgsNTcsNjUsOTAsOTUsOTUsOTcsMTIyLDE3MCwxNzAsMTgxLDE4MSwxODMsMTgzLDE4NiwxODYsMTkyLDIxNCwyMTYsMjQ2LDI0OCw3MDUsNzEwLDcyMSw3MzYsNzQwLDc0OCw3NDgsNzUwLDc1MCw3NjgsODg0LDg4Niw4ODcsODkwLDg5Myw4OTUsODk1LDkwMiw5MDYsOTA4LDkwOCw5MTAsOTI5LDkzMSwxMDEzLDEwMTUsMTE1MywxMTU1LDExNTksMTE2MiwxMzI3LDEzMjksMTM2NiwxMzY5LDEzNjksMTM3NiwxNDE2LDE0MjUsMTQ2OSwxNDcxLDE0NzEsMTQ3MywxNDc0LDE0NzYsMTQ3NywxNDc5LDE0NzksMTQ4OCwxNTE0LDE1MTksMTUyMiwxNTUyLDE1NjIsMTU2OCwxNjQxLDE2NDYsMTc0NywxNzQ5LDE3NTYsMTc1OSwxNzY4LDE3NzAsMTc4OCwxNzkxLDE3OTEsMTgwOCwxODY2LDE4NjksMTk2OSwxOTg0LDIwMzcsMjA0MiwyMDQyLDIwNDUsMjA0NSwyMDQ4LDIwOTMsMjExMiwyMTM5LDIxNDQsMjE1NCwyMjA4LDIyMjgsMjIzMCwyMjM3LDIyNTksMjI3MywyMjc1LDI0MDMsMjQwNiwyNDE1LDI0MTcsMjQzNSwyNDM3LDI0NDQsMjQ0NywyNDQ4LDI0NTEsMjQ3MiwyNDc0LDI0ODAsMjQ4MiwyNDgyLDI0ODYsMjQ4OSwyNDkyLDI1MDAsMjUwMywyNTA0LDI1MDcsMjUxMCwyNTE5LDI1MTksMjUyNCwyNTI1LDI1MjcsMjUzMSwyNTM0LDI1NDUsMjU1NiwyNTU2LDI1NTgsMjU1OCwyNTYxLDI1NjMsMjU2NSwyNTcwLDI1NzUsMjU3NiwyNTc5LDI2MDAsMjYwMiwyNjA4LDI2MTAsMjYxMSwyNjEzLDI2MTQsMjYxNiwyNjE3LDI2MjAsMjYyMCwyNjIyLDI2MjYsMjYzMSwyNjMyLDI2MzUsMjYzNywyNjQxLDI2NDEsMjY0OSwyNjUyLDI2NTQsMjY1NCwyNjYyLDI2NzcsMjY4OSwyNjkxLDI2OTMsMjcwMSwyNzAzLDI3MDUsMjcwNywyNzI4LDI3MzAsMjczNiwyNzM4LDI3MzksMjc0MSwyNzQ1LDI3NDgsMjc1NywyNzU5LDI3NjEsMjc2MywyNzY1LDI3NjgsMjc2OCwyNzg0LDI3ODcsMjc5MCwyNzk5LDI4MDksMjgxNSwyODE3LDI4MTksMjgyMSwyODI4LDI4MzEsMjgzMiwyODM1LDI4NTYsMjg1OCwyODY0LDI4NjYsMjg2NywyODY5LDI4NzMsMjg3NiwyODg0LDI4ODcsMjg4OCwyODkxLDI4OTMsMjkwMiwyOTAzLDI5MDgsMjkwOSwyOTExLDI5MTUsMjkxOCwyOTI3LDI5MjksMjkyOSwyOTQ2LDI5NDcsMjk0OSwyOTU0LDI5NTgsMjk2MCwyOTYyLDI5NjUsMjk2OSwyOTcwLDI5NzIsMjk3MiwyOTc0LDI5NzUsMjk3OSwyOTgwLDI5ODQsMjk4NiwyOTkwLDMwMDEsMzAwNiwzMDEwLDMwMTQsMzAxNiwzMDE4LDMwMjEsMzAyNCwzMDI0LDMwMzEsMzAzMSwzMDQ2LDMwNTUsMzA3MiwzMDg0LDMwODYsMzA4OCwzMDkwLDMxMTIsMzExNCwzMTI5LDMxMzMsMzE0MCwzMTQyLDMxNDQsMzE0NiwzMTQ5LDMxNTcsMzE1OCwzMTYwLDMxNjIsMzE2OCwzMTcxLDMxNzQsMzE4MywzMjAwLDMyMDMsMzIwNSwzMjEyLDMyMTQsMzIxNiwzMjE4LDMyNDAsMzI0MiwzMjUxLDMyNTMsMzI1NywzMjYwLDMyNjgsMzI3MCwzMjcyLDMyNzQsMzI3NywzMjg1LDMyODYsMzI5NCwzMjk0LDMyOTYsMzI5OSwzMzAyLDMzMTEsMzMxMywzMzE0LDMzMjgsMzMzMSwzMzMzLDMzNDAsMzM0MiwzMzQ0LDMzNDYsMzM5NiwzMzk4LDM0MDAsMzQwMiwzNDA2LDM0MTIsMzQxNSwzNDIzLDM0MjcsMzQzMCwzNDM5LDM0NTAsMzQ1NSwzNDU4LDM0NTksMzQ2MSwzNDc4LDM0ODIsMzUwNSwzNTA3LDM1MTUsMzUxNywzNTE3LDM1MjAsMzUyNiwzNTMwLDM1MzAsMzUzNSwzNTQwLDM1NDIsMzU0MiwzNTQ0LDM1NTEsMzU1OCwzNTY3LDM1NzAsMzU3MSwzNTg1LDM2NDIsMzY0OCwzNjYyLDM2NjQsMzY3MywzNzEzLDM3MTQsMzcxNiwzNzE2LDM3MTgsMzcyMiwzNzI0LDM3NDcsMzc0OSwzNzQ5LDM3NTEsMzc3MywzNzc2LDM3ODAsMzc4MiwzNzgyLDM3ODQsMzc4OSwzNzkyLDM4MDEsMzgwNCwzODA3LDM4NDAsMzg0MCwzODY0LDM4NjUsMzg3MiwzODgxLDM4OTMsMzg5MywzODk1LDM4OTUsMzg5NywzODk3LDM5MDIsMzkxMSwzOTEzLDM5NDgsMzk1MywzOTcyLDM5NzQsMzk5MSwzOTkzLDQwMjgsNDAzOCw0MDM4LDQwOTYsNDE2OSw0MTc2LDQyNTMsNDI1Niw0MjkzLDQyOTUsNDI5NSw0MzAxLDQzMDEsNDMwNCw0MzQ2LDQzNDgsNDY4MCw0NjgyLDQ2ODUsNDY4OCw0Njk0LDQ2OTYsNDY5Niw0Njk4LDQ3MDEsNDcwNCw0NzQ0LDQ3NDYsNDc0OSw0NzUyLDQ3ODQsNDc4Niw0Nzg5LDQ3OTIsNDc5OCw0ODAwLDQ4MDAsNDgwMiw0ODA1LDQ4MDgsNDgyMiw0ODI0LDQ4ODAsNDg4Miw0ODg1LDQ4ODgsNDk1NCw0OTU3LDQ5NTksNDk2OSw0OTc3LDQ5OTIsNTAwNyw1MDI0LDUxMDksNTExMiw1MTE3LDUxMjEsNTc0MCw1NzQzLDU3NTksNTc2MSw1Nzg2LDU3OTIsNTg2Niw1ODcwLDU4ODAsNTg4OCw1OTAwLDU5MDIsNTkwOCw1OTIwLDU5NDAsNTk1Miw1OTcxLDU5ODQsNTk5Niw1OTk4LDZlMyw2MDAyLDYwMDMsNjAxNiw2MDk5LDYxMDMsNjEwMyw2MTA4LDYxMDksNjExMiw2MTIxLDYxNTUsNjE1Nyw2MTYwLDYxNjksNjE3Niw2MjY0LDYyNzIsNjMxNCw2MzIwLDYzODksNjQwMCw2NDMwLDY0MzIsNjQ0Myw2NDQ4LDY0NTksNjQ3MCw2NTA5LDY1MTIsNjUxNiw2NTI4LDY1NzEsNjU3Niw2NjAxLDY2MDgsNjYxOCw2NjU2LDY2ODMsNjY4OCw2NzUwLDY3NTIsNjc4MCw2NzgzLDY3OTMsNjgwMCw2ODA5LDY4MjMsNjgyMyw2ODMyLDY4NDUsNjkxMiw2OTg3LDY5OTIsNzAwMSw3MDE5LDcwMjcsNzA0MCw3MTU1LDcxNjgsNzIyMyw3MjMyLDcyNDEsNzI0NSw3MjkzLDcyOTYsNzMwNCw3MzEyLDczNTQsNzM1Nyw3MzU5LDczNzYsNzM3OCw3MzgwLDc0MTgsNzQyNCw3NjczLDc2NzUsNzk1Nyw3OTYwLDc5NjUsNzk2OCw4MDA1LDgwMDgsODAxMyw4MDE2LDgwMjMsODAyNSw4MDI1LDgwMjcsODAyNyw4MDI5LDgwMjksODAzMSw4MDYxLDgwNjQsODExNiw4MTE4LDgxMjQsODEyNiw4MTI2LDgxMzAsODEzMiw4MTM0LDgxNDAsODE0NCw4MTQ3LDgxNTAsODE1NSw4MTYwLDgxNzIsODE3OCw4MTgwLDgxODIsODE4OCw4MjU1LDgyNTYsODI3Niw4Mjc2LDgzMDUsODMwNSw4MzE5LDgzMTksODMzNiw4MzQ4LDg0MDAsODQxMiw4NDE3LDg0MTcsODQyMSw4NDMyLDg0NTAsODQ1MCw4NDU1LDg0NTUsODQ1OCw4NDY3LDg0NjksODQ2OSw4NDcyLDg0NzcsODQ4NCw4NDg0LDg0ODYsODQ4Niw4NDg4LDg0ODgsODQ5MCw4NTA1LDg1MDgsODUxMSw4NTE3LDg1MjEsODUyNiw4NTI2LDg1NDQsODU4NCwxMTI2NCwxMTMxMCwxMTMxMiwxMTM1OCwxMTM2MCwxMTQ5MiwxMTQ5OSwxMTUwNywxMTUyMCwxMTU1NywxMTU1OSwxMTU1OSwxMTU2NSwxMTU2NSwxMTU2OCwxMTYyMywxMTYzMSwxMTYzMSwxMTY0NywxMTY3MCwxMTY4MCwxMTY4NiwxMTY4OCwxMTY5NCwxMTY5NiwxMTcwMiwxMTcwNCwxMTcxMCwxMTcxMiwxMTcxOCwxMTcyMCwxMTcyNiwxMTcyOCwxMTczNCwxMTczNiwxMTc0MiwxMTc0NCwxMTc3NSwxMjI5MywxMjI5NSwxMjMyMSwxMjMzNSwxMjMzNywxMjM0MSwxMjM0NCwxMjM0OCwxMjM1MywxMjQzOCwxMjQ0MSwxMjQ0NywxMjQ0OSwxMjUzOCwxMjU0MCwxMjU0MywxMjU0OSwxMjU5MSwxMjU5MywxMjY4NiwxMjcwNCwxMjczMCwxMjc4NCwxMjc5OSwxMzMxMiwxOTg5MywxOTk2OCw0MDk0Myw0MDk2MCw0MjEyNCw0MjE5Miw0MjIzNyw0MjI0MCw0MjUwOCw0MjUxMiw0MjUzOSw0MjU2MCw0MjYwNyw0MjYxMiw0MjYyMSw0MjYyMyw0MjczNyw0Mjc3NSw0Mjc4Myw0Mjc4Niw0Mjg4OCw0Mjg5MSw0Mjk0Myw0Mjk0Niw0Mjk1MCw0Mjk5OSw0MzA0Nyw0MzA3Miw0MzEyMyw0MzEzNiw0MzIwNSw0MzIxNiw0MzIyNSw0MzIzMiw0MzI1NSw0MzI1OSw0MzI1OSw0MzI2MSw0MzMwOSw0MzMxMiw0MzM0Nyw0MzM2MCw0MzM4OCw0MzM5Miw0MzQ1Niw0MzQ3MSw0MzQ4MSw0MzQ4OCw0MzUxOCw0MzUyMCw0MzU3NCw0MzU4NCw0MzU5Nyw0MzYwMCw0MzYwOSw0MzYxNiw0MzYzOCw0MzY0Miw0MzcxNCw0MzczOSw0Mzc0MSw0Mzc0NCw0Mzc1OSw0Mzc2Miw0Mzc2Niw0Mzc3Nyw0Mzc4Miw0Mzc4NSw0Mzc5MCw0Mzc5Myw0Mzc5OCw0MzgwOCw0MzgxNCw0MzgxNiw0MzgyMiw0MzgyNCw0Mzg2Niw0Mzg2OCw0Mzg3OSw0Mzg4OCw0NDAxMCw0NDAxMiw0NDAxMyw0NDAxNiw0NDAyNSw0NDAzMiw1NTIwMyw1NTIxNiw1NTIzOCw1NTI0Myw1NTI5MSw2Mzc0NCw2NDEwOSw2NDExMiw2NDIxNyw2NDI1Niw2NDI2Miw2NDI3NSw2NDI3OSw2NDI4NSw2NDI5Niw2NDI5OCw2NDMxMCw2NDMxMiw2NDMxNiw2NDMxOCw2NDMxOCw2NDMyMCw2NDMyMSw2NDMyMyw2NDMyNCw2NDMyNiw2NDQzMyw2NDQ2Nyw2NDgyOSw2NDg0OCw2NDkxMSw2NDkxNCw2NDk2Nyw2NTAwOCw2NTAxOSw2NTAyNCw2NTAzOSw2NTA1Niw2NTA3MSw2NTA3NSw2NTA3Niw2NTEwMSw2NTEwMyw2NTEzNiw2NTE0MCw2NTE0Miw2NTI3Niw2NTI5Niw2NTMwNSw2NTMxMyw2NTMzOCw2NTM0Myw2NTM0Myw2NTM0NSw2NTM3MCw2NTM4Miw2NTQ3MCw2NTQ3NCw2NTQ3OSw2NTQ4Miw2NTQ4Nyw2NTQ5MCw2NTQ5NSw2NTQ5OCw2NTUwMCw2NTUzNiw2NTU0Nyw2NTU0OSw2NTU3NCw2NTU3Niw2NTU5NCw2NTU5Niw2NTU5Nyw2NTU5OSw2NTYxMyw2NTYxNiw2NTYyOSw2NTY2NCw2NTc4Niw2NTg1Niw2NTkwOCw2NjA0NSw2NjA0NSw2NjE3Niw2NjIwNCw2NjIwOCw2NjI1Niw2NjI3Miw2NjI3Miw2NjMwNCw2NjMzNSw2NjM0OSw2NjM3OCw2NjM4NCw2NjQyNiw2NjQzMiw2NjQ2MSw2NjQ2NCw2NjQ5OSw2NjUwNCw2NjUxMSw2NjUxMyw2NjUxNyw2NjU2MCw2NjcxNyw2NjcyMCw2NjcyOSw2NjczNiw2Njc3MSw2Njc3Niw2NjgxMSw2NjgxNiw2Njg1NSw2Njg2NCw2NjkxNSw2NzA3Miw2NzM4Miw2NzM5Miw2NzQxMyw2NzQyNCw2NzQzMSw2NzU4NCw2NzU4OSw2NzU5Miw2NzU5Miw2NzU5NCw2NzYzNyw2NzYzOSw2NzY0MCw2NzY0NCw2NzY0NCw2NzY0Nyw2NzY2OSw2NzY4MCw2NzcwMiw2NzcxMiw2Nzc0Miw2NzgwOCw2NzgyNiw2NzgyOCw2NzgyOSw2Nzg0MCw2Nzg2MSw2Nzg3Miw2Nzg5Nyw2Nzk2OCw2ODAyMyw2ODAzMCw2ODAzMSw2ODA5Niw2ODA5OSw2ODEwMSw2ODEwMiw2ODEwOCw2ODExNSw2ODExNyw2ODExOSw2ODEyMSw2ODE0OSw2ODE1Miw2ODE1NCw2ODE1OSw2ODE1OSw2ODE5Miw2ODIyMCw2ODIyNCw2ODI1Miw2ODI4OCw2ODI5NSw2ODI5Nyw2ODMyNiw2ODM1Miw2ODQwNSw2ODQxNiw2ODQzNyw2ODQ0OCw2ODQ2Niw2ODQ4MCw2ODQ5Nyw2ODYwOCw2ODY4MCw2ODczNiw2ODc4Niw2ODgwMCw2ODg1MCw2ODg2NCw2ODkwMyw2ODkxMiw2ODkyMSw2OTM3Niw2OTQwNCw2OTQxNSw2OTQxNSw2OTQyNCw2OTQ1Niw2OTYwMCw2OTYyMiw2OTYzMiw2OTcwMiw2OTczNCw2OTc0Myw2OTc1OSw2OTgxOCw2OTg0MCw2OTg2NCw2OTg3Miw2OTg4MSw2OTg4OCw2OTk0MCw2OTk0Miw2OTk1MSw2OTk1Niw2OTk1OCw2OTk2OCw3MDAwMyw3MDAwNiw3MDAwNiw3MDAxNiw3MDA4NCw3MDA4OSw3MDA5Miw3MDA5Niw3MDEwNiw3MDEwOCw3MDEwOCw3MDE0NCw3MDE2MSw3MDE2Myw3MDE5OSw3MDIwNiw3MDIwNiw3MDI3Miw3MDI3OCw3MDI4MCw3MDI4MCw3MDI4Miw3MDI4NSw3MDI4Nyw3MDMwMSw3MDMwMyw3MDMxMiw3MDMyMCw3MDM3OCw3MDM4NCw3MDM5Myw3MDQwMCw3MDQwMyw3MDQwNSw3MDQxMiw3MDQxNSw3MDQxNiw3MDQxOSw3MDQ0MCw3MDQ0Miw3MDQ0OCw3MDQ1MCw3MDQ1MSw3MDQ1Myw3MDQ1Nyw3MDQ1OSw3MDQ2OCw3MDQ3MSw3MDQ3Miw3MDQ3NSw3MDQ3Nyw3MDQ4MCw3MDQ4MCw3MDQ4Nyw3MDQ4Nyw3MDQ5Myw3MDQ5OSw3MDUwMiw3MDUwOCw3MDUxMiw3MDUxNiw3MDY1Niw3MDczMCw3MDczNiw3MDc0NSw3MDc1MCw3MDc1MSw3MDc4NCw3MDg1Myw3MDg1NSw3MDg1NSw3MDg2NCw3MDg3Myw3MTA0MCw3MTA5Myw3MTA5Niw3MTEwNCw3MTEyOCw3MTEzMyw3MTE2OCw3MTIzMiw3MTIzNiw3MTIzNiw3MTI0OCw3MTI1Nyw3MTI5Niw3MTM1Miw3MTM2MCw3MTM2OSw3MTQyNCw3MTQ1MCw3MTQ1Myw3MTQ2Nyw3MTQ3Miw3MTQ4MSw3MTY4MCw3MTczOCw3MTg0MCw3MTkxMyw3MTkzNSw3MTkzNSw3MjA5Niw3MjEwMyw3MjEwNiw3MjE1MSw3MjE1NCw3MjE2MSw3MjE2Myw3MjE2NCw3MjE5Miw3MjI1NCw3MjI2Myw3MjI2Myw3MjI3Miw3MjM0NSw3MjM0OSw3MjM0OSw3MjM4NCw3MjQ0MCw3MjcwNCw3MjcxMiw3MjcxNCw3Mjc1OCw3Mjc2MCw3Mjc2OCw3Mjc4NCw3Mjc5Myw3MjgxOCw3Mjg0Nyw3Mjg1MCw3Mjg3MSw3Mjg3Myw3Mjg4Niw3Mjk2MCw3Mjk2Niw3Mjk2OCw3Mjk2OSw3Mjk3MSw3MzAxNCw3MzAxOCw3MzAxOCw3MzAyMCw3MzAyMSw3MzAyMyw3MzAzMSw3MzA0MCw3MzA0OSw3MzA1Niw3MzA2MSw3MzA2Myw3MzA2NCw3MzA2Niw3MzEwMiw3MzEwNCw3MzEwNSw3MzEwNyw3MzExMiw3MzEyMCw3MzEyOSw3MzQ0MCw3MzQ2Miw3MzcyOCw3NDY0OSw3NDc1Miw3NDg2Miw3NDg4MCw3NTA3NSw3NzgyNCw3ODg5NCw4Mjk0NCw4MzUyNiw5MjE2MCw5MjcyOCw5MjczNiw5Mjc2Niw5Mjc2OCw5Mjc3Nyw5Mjg4MCw5MjkwOSw5MjkxMiw5MjkxNiw5MjkyOCw5Mjk4Miw5Mjk5Miw5Mjk5NSw5MzAwOCw5MzAxNyw5MzAyNyw5MzA0Nyw5MzA1Myw5MzA3MSw5Mzc2MCw5MzgyMyw5Mzk1Miw5NDAyNiw5NDAzMSw5NDA4Nyw5NDA5NSw5NDExMSw5NDE3Niw5NDE3Nyw5NDE3OSw5NDE3OSw5NDIwOCwxMDAzNDMsMTAwMzUyLDEwMTEwNiwxMTA1OTIsMTEwODc4LDExMDkyOCwxMTA5MzAsMTEwOTQ4LDExMDk1MSwxMTA5NjAsMTExMzU1LDExMzY2NCwxMTM3NzAsMTEzNzc2LDExMzc4OCwxMTM3OTIsMTEzODAwLDExMzgwOCwxMTM4MTcsMTEzODIxLDExMzgyMiwxMTkxNDEsMTE5MTQ1LDExOTE0OSwxMTkxNTQsMTE5MTYzLDExOTE3MCwxMTkxNzMsMTE5MTc5LDExOTIxMCwxMTkyMTMsMTE5MzYyLDExOTM2NCwxMTk4MDgsMTE5ODkyLDExOTg5NCwxMTk5NjQsMTE5OTY2LDExOTk2NywxMTk5NzAsMTE5OTcwLDExOTk3MywxMTk5NzQsMTE5OTc3LDExOTk4MCwxMTk5ODIsMTE5OTkzLDExOTk5NSwxMTk5OTUsMTE5OTk3LDEyMDAwMywxMjAwMDUsMTIwMDY5LDEyMDA3MSwxMjAwNzQsMTIwMDc3LDEyMDA4NCwxMjAwODYsMTIwMDkyLDEyMDA5NCwxMjAxMjEsMTIwMTIzLDEyMDEyNiwxMjAxMjgsMTIwMTMyLDEyMDEzNCwxMjAxMzQsMTIwMTM4LDEyMDE0NCwxMjAxNDYsMTIwNDg1LDEyMDQ4OCwxMjA1MTIsMTIwNTE0LDEyMDUzOCwxMjA1NDAsMTIwNTcwLDEyMDU3MiwxMjA1OTYsMTIwNTk4LDEyMDYyOCwxMjA2MzAsMTIwNjU0LDEyMDY1NiwxMjA2ODYsMTIwNjg4LDEyMDcxMiwxMjA3MTQsMTIwNzQ0LDEyMDc0NiwxMjA3NzAsMTIwNzcyLDEyMDc3OSwxMjA3ODIsMTIwODMxLDEyMTM0NCwxMjEzOTgsMTIxNDAzLDEyMTQ1MiwxMjE0NjEsMTIxNDYxLDEyMTQ3NiwxMjE0NzYsMTIxNDk5LDEyMTUwMywxMjE1MDUsMTIxNTE5LDEyMjg4MCwxMjI4ODYsMTIyODg4LDEyMjkwNCwxMjI5MDcsMTIyOTEzLDEyMjkxNSwxMjI5MTYsMTIyOTE4LDEyMjkyMiwxMjMxMzYsMTIzMTgwLDEyMzE4NCwxMjMxOTcsMTIzMjAwLDEyMzIwOSwxMjMyMTQsMTIzMjE0LDEyMzU4NCwxMjM2NDEsMTI0OTI4LDEyNTEyNCwxMjUxMzYsMTI1MTQyLDEyNTE4NCwxMjUyNTksMTI1MjY0LDEyNTI3MywxMjY0NjQsMTI2NDY3LDEyNjQ2OSwxMjY0OTUsMTI2NDk3LDEyNjQ5OCwxMjY1MDAsMTI2NTAwLDEyNjUwMywxMjY1MDMsMTI2NTA1LDEyNjUxNCwxMjY1MTYsMTI2NTE5LDEyNjUyMSwxMjY1MjEsMTI2NTIzLDEyNjUyMywxMjY1MzAsMTI2NTMwLDEyNjUzNSwxMjY1MzUsMTI2NTM3LDEyNjUzNywxMjY1MzksMTI2NTM5LDEyNjU0MSwxMjY1NDMsMTI2NTQ1LDEyNjU0NiwxMjY1NDgsMTI2NTQ4LDEyNjU1MSwxMjY1NTEsMTI2NTUzLDEyNjU1MywxMjY1NTUsMTI2NTU1LDEyNjU1NywxMjY1NTcsMTI2NTU5LDEyNjU1OSwxMjY1NjEsMTI2NTYyLDEyNjU2NCwxMjY1NjQsMTI2NTY3LDEyNjU3MCwxMjY1NzIsMTI2NTc4LDEyNjU4MCwxMjY1ODMsMTI2NTg1LDEyNjU4OCwxMjY1OTAsMTI2NTkwLDEyNjU5MiwxMjY2MDEsMTI2NjAzLDEyNjYxOSwxMjY2MjUsMTI2NjI3LDEyNjYyOSwxMjY2MzMsMTI2NjM1LDEyNjY1MSwxMzEwNzIsMTczNzgyLDE3MzgyNCwxNzc5NzIsMTc3OTg0LDE3ODIwNSwxNzgyMDgsMTgzOTY5LDE4Mzk4NCwxOTE0NTYsMTk0NTYwLDE5NTEwMSw5MTc3NjAsOTE3OTk5XSxvZT0vXlxcL1xcL1xcLz9cXHMqQCh0cy1leHBlY3QtZXJyb3J8dHMtaWdub3JlKS8sZj0vXig/OlxcL3xcXCopKlxccypAKHRzLWV4cGVjdC1lcnJvcnx0cy1pZ25vcmUpLztmdW5jdGlvbiBUKHllLEFlKXtpZih5ZTxBZVswXSlyZXR1cm4hMTtmb3IodmFyIGVyPTAsaXI9QWUubGVuZ3RoLENyO2VyKzE8aXI7KXtpZihDcj1lcisoaXItZXIpLzIsQ3ItPUNyJTIsQWVbQ3JdPD15ZSYmeWU8PUFlW0NyKzFdKXJldHVybiEwO3llPEFlW0NyXT9pcj1Dcjplcj1DcisyfXJldHVybiExfWZ1bmN0aW9uIEsoeWUsQWUpe3JldHVybiBBZT49Mj9UKHllLG0pOkFlPT09MT9UKHllLE4pOlQoeWUsUSl9ZS5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQ9SztmdW5jdGlvbiBiKHllLEFlKXtyZXR1cm4gQWU+PTI/VCh5ZSxHKTpBZT09PTE/VCh5ZSxwKTpUKHllLGxlKX1mdW5jdGlvbiBzZSh5ZSl7dmFyIEFlPVtdO3JldHVybiB5ZS5mb3JFYWNoKGZ1bmN0aW9uKGVyLGlyKXtBZVtlcl09aXJ9KSxBZX12YXIgSj1zZShFKTtmdW5jdGlvbiBpZSh5ZSl7cmV0dXJuIEpbeWVdfWUudG9rZW5Ub1N0cmluZz1pZTtmdW5jdGlvbiBSKHllKXtyZXR1cm4gRS5nZXQoeWUpfWUuc3RyaW5nVG9Ub2tlbj1SO2Z1bmN0aW9uIHEoeWUpe2Zvcih2YXIgQWU9bmV3IEFycmF5LGVyPTAsaXI9MDtlcjx5ZS5sZW5ndGg7KXt2YXIgQ3I9eWUuY2hhckNvZGVBdChlcik7c3dpdGNoKGVyKyssQ3Ipe2Nhc2UgMTM6eWUuY2hhckNvZGVBdChlcik9PT0xMCYmZXIrKztjYXNlIDEwOkFlLnB1c2goaXIpLGlyPWVyO2JyZWFrO2RlZmF1bHQ6Q3I+MTI3JiZ5KENyKSYmKEFlLnB1c2goaXIpLGlyPWVyKTticmVha319cmV0dXJuIEFlLnB1c2goaXIpLEFlfWUuY29tcHV0ZUxpbmVTdGFydHM9cTtmdW5jdGlvbiBPKHllLEFlLGVyLGlyKXtyZXR1cm4geWUuZ2V0UG9zaXRpb25PZkxpbmVBbmRDaGFyYWN0ZXI/eWUuZ2V0UG9zaXRpb25PZkxpbmVBbmRDaGFyYWN0ZXIoQWUsZXIsaXIpOnZlKGVlKHllKSxBZSxlcix5ZS50ZXh0LGlyKX1lLmdldFBvc2l0aW9uT2ZMaW5lQW5kQ2hhcmFjdGVyPU87ZnVuY3Rpb24gdmUoeWUsQWUsZXIsaXIsQ3IpeyhBZTwwfHxBZT49eWUubGVuZ3RoKSYmKENyP0FlPUFlPDA/MDpBZT49eWUubGVuZ3RoP3llLmxlbmd0aC0xOkFlOmUuRGVidWcuZmFpbChcIkJhZCBsaW5lIG51bWJlci4gTGluZTogXCIuY29uY2F0KEFlLFwiLCBsaW5lU3RhcnRzLmxlbmd0aDogXCIpLmNvbmNhdCh5ZS5sZW5ndGgsXCIgLCBsaW5lIG1hcCBpcyBjb3JyZWN0PyBcIikuY29uY2F0KGlyIT09dm9pZCAwP2UuYXJyYXlzRXF1YWwoeWUscShpcikpOlwidW5rbm93blwiKSkpO3ZhciBZZT15ZVtBZV0rZXI7cmV0dXJuIENyP1llPnllW0FlKzFdP3llW0FlKzFdOnR5cGVvZiBpcj09XCJzdHJpbmdcIiYmWWU+aXIubGVuZ3RoP2lyLmxlbmd0aDpZZTooQWU8eWUubGVuZ3RoLTE/ZS5EZWJ1Zy5hc3NlcnQoWWU8eWVbQWUrMV0pOmlyIT09dm9pZCAwJiZlLkRlYnVnLmFzc2VydChZZTw9aXIubGVuZ3RoKSxZZSl9ZS5jb21wdXRlUG9zaXRpb25PZkxpbmVBbmRDaGFyYWN0ZXI9dmU7ZnVuY3Rpb24gZWUoeWUpe3JldHVybiB5ZS5saW5lTWFwfHwoeWUubGluZU1hcD1xKHllLnRleHQpKX1lLmdldExpbmVTdGFydHM9ZWU7ZnVuY3Rpb24gaGUoeWUsQWUpe3ZhciBlcj1GKHllLEFlKTtyZXR1cm57bGluZTplcixjaGFyYWN0ZXI6QWUteWVbZXJdfX1lLmNvbXB1dGVMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbj1oZTtmdW5jdGlvbiBGKHllLEFlLGVyKXt2YXIgaXI9ZS5iaW5hcnlTZWFyY2goeWUsQWUsZS5pZGVudGl0eSxlLmNvbXBhcmVWYWx1ZXMsZXIpO3JldHVybiBpcjwwJiYoaXI9fmlyLTEsZS5EZWJ1Zy5hc3NlcnQoaXIhPT0tMSxcInBvc2l0aW9uIGNhbm5vdCBwcmVjZWRlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVcIikpLGlyfWUuY29tcHV0ZUxpbmVPZlBvc2l0aW9uPUY7ZnVuY3Rpb24geCh5ZSxBZSxlcil7aWYoQWU9PT1lcilyZXR1cm4gMDt2YXIgaXI9ZWUoeWUpLENyPU1hdGgubWluKEFlLGVyKSxZZT1Dcj09PWVyLEJyPVllP0FlOmVyLEVyPUYoaXIsQ3IpLE5lPUYoaXIsQnIsRXIpO3JldHVybiBZZT9Fci1OZTpOZS1Fcn1lLmdldExpbmVzQmV0d2VlblBvc2l0aW9ucz14O2Z1bmN0aW9uIFgoeWUsQWUpe3JldHVybiBoZShlZSh5ZSksQWUpfWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb249WDtmdW5jdGlvbiAkKHllKXtyZXR1cm4gQSh5ZSl8fHkoeWUpfWUuaXNXaGl0ZVNwYWNlTGlrZT0kO2Z1bmN0aW9uIEEoeWUpe3JldHVybiB5ZT09PTMyfHx5ZT09PTl8fHllPT09MTF8fHllPT09MTJ8fHllPT09MTYwfHx5ZT09PTEzM3x8eWU9PT01NzYwfHx5ZT49ODE5MiYmeWU8PTgyMDN8fHllPT09ODIzOXx8eWU9PT04Mjg3fHx5ZT09PTEyMjg4fHx5ZT09PTY1Mjc5fWUuaXNXaGl0ZVNwYWNlU2luZ2xlTGluZT1BO2Z1bmN0aW9uIHkoeWUpe3JldHVybiB5ZT09PTEwfHx5ZT09PTEzfHx5ZT09PTgyMzJ8fHllPT09ODIzM31lLmlzTGluZUJyZWFrPXk7ZnVuY3Rpb24gVih5ZSl7cmV0dXJuIHllPj00OCYmeWU8PTU3fWZ1bmN0aW9uIEwoeWUpe3JldHVybiBWKHllKXx8eWU+PTY1JiZ5ZTw9NzB8fHllPj05NyYmeWU8PTEwMn1mdW5jdGlvbiBQKHllKXtyZXR1cm4geWU8PTExMTQxMTF9ZnVuY3Rpb24gayh5ZSl7cmV0dXJuIHllPj00OCYmeWU8PTU1fWUuaXNPY3RhbERpZ2l0PWs7ZnVuY3Rpb24gWSh5ZSxBZSl7dmFyIGVyPXllLmNoYXJDb2RlQXQoQWUpO3N3aXRjaChlcil7Y2FzZSAxMzpjYXNlIDEwOmNhc2UgOTpjYXNlIDExOmNhc2UgMTI6Y2FzZSAzMjpjYXNlIDQ3OmNhc2UgNjA6Y2FzZSAxMjQ6Y2FzZSA2MTpjYXNlIDYyOnJldHVybiEwO2Nhc2UgMzU6cmV0dXJuIEFlPT09MDtkZWZhdWx0OnJldHVybiBlcj4xMjd9fWUuY291bGRTdGFydFRyaXZpYT1ZO2Z1bmN0aW9uIFUoeWUsQWUsZXIsaXIsQ3Ipe2lmKGUucG9zaXRpb25Jc1N5bnRoZXNpemVkKEFlKSlyZXR1cm4gQWU7Zm9yKHZhciBZZT0hMTs7KXt2YXIgQnI9eWUuY2hhckNvZGVBdChBZSk7c3dpdGNoKEJyKXtjYXNlIDEzOnllLmNoYXJDb2RlQXQoQWUrMSk9PT0xMCYmQWUrKztjYXNlIDEwOmlmKEFlKyssZXIpcmV0dXJuIEFlO1llPSEhQ3I7Y29udGludWU7Y2FzZSA5OmNhc2UgMTE6Y2FzZSAxMjpjYXNlIDMyOkFlKys7Y29udGludWU7Y2FzZSA0NzppZihpcilicmVhaztpZih5ZS5jaGFyQ29kZUF0KEFlKzEpPT09NDcpe2ZvcihBZSs9MjtBZTx5ZS5sZW5ndGgmJiF5KHllLmNoYXJDb2RlQXQoQWUpKTspQWUrKztZZT0hMTtjb250aW51ZX1pZih5ZS5jaGFyQ29kZUF0KEFlKzEpPT09NDIpe2ZvcihBZSs9MjtBZTx5ZS5sZW5ndGg7KXtpZih5ZS5jaGFyQ29kZUF0KEFlKT09PTQyJiZ5ZS5jaGFyQ29kZUF0KEFlKzEpPT09NDcpe0FlKz0yO2JyZWFrfUFlKyt9WWU9ITE7Y29udGludWV9YnJlYWs7Y2FzZSA2MDpjYXNlIDEyNDpjYXNlIDYxOmNhc2UgNjI6aWYoSCh5ZSxBZSkpe0FlPUkoeWUsQWUpLFllPSExO2NvbnRpbnVlfWJyZWFrO2Nhc2UgMzU6aWYoQWU9PT0wJiZkKHllLEFlKSl7QWU9RCh5ZSxBZSksWWU9ITE7Y29udGludWV9YnJlYWs7Y2FzZSA0MjppZihZZSl7QWUrKyxZZT0hMTtjb250aW51ZX1icmVhaztkZWZhdWx0OmlmKEJyPjEyNyYmJChCcikpe0FlKys7Y29udGludWV9YnJlYWt9cmV0dXJuIEFlfX1lLnNraXBUcml2aWE9VTt2YXIgaj03O2Z1bmN0aW9uIEgoeWUsQWUpe2lmKGUuRGVidWcuYXNzZXJ0KEFlPj0wKSxBZT09PTB8fHkoeWUuY2hhckNvZGVBdChBZS0xKSkpe3ZhciBlcj15ZS5jaGFyQ29kZUF0KEFlKTtpZihBZStqPHllLmxlbmd0aCl7Zm9yKHZhciBpcj0wO2lyPGo7aXIrKylpZih5ZS5jaGFyQ29kZUF0KEFlK2lyKSE9PWVyKXJldHVybiExO3JldHVybiBlcj09PTYxfHx5ZS5jaGFyQ29kZUF0KEFlK2opPT09MzJ9fXJldHVybiExfWZ1bmN0aW9uIEkoeWUsQWUsZXIpe2VyJiZlcihlLkRpYWdub3N0aWNzLk1lcmdlX2NvbmZsaWN0X21hcmtlcl9lbmNvdW50ZXJlZCxBZSxqKTt2YXIgaXI9eWUuY2hhckNvZGVBdChBZSksQ3I9eWUubGVuZ3RoO2lmKGlyPT09NjB8fGlyPT09NjIpZm9yKDtBZTxDciYmIXkoeWUuY2hhckNvZGVBdChBZSkpOylBZSsrO2Vsc2UgZm9yKGUuRGVidWcuYXNzZXJ0KGlyPT09MTI0fHxpcj09PTYxKTtBZTxDcjspe3ZhciBZZT15ZS5jaGFyQ29kZUF0KEFlKTtpZigoWWU9PT02MXx8WWU9PT02MikmJlllIT09aXImJkgoeWUsQWUpKWJyZWFrO0FlKyt9cmV0dXJuIEFlfXZhciBsPS9eIyEuKi87ZnVuY3Rpb24gZCh5ZSxBZSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KEFlPT09MCksbC50ZXN0KHllKX1lLmlzU2hlYmFuZ1RyaXZpYT1kO2Z1bmN0aW9uIEQoeWUsQWUpe3ZhciBlcj1sLmV4ZWMoeWUpWzBdO3JldHVybiBBZT1BZStlci5sZW5ndGgsQWV9ZS5zY2FuU2hlYmFuZ1RyaXZpYT1EO2Z1bmN0aW9uIGZlKHllLEFlLGVyLGlyLENyLFllLEJyKXt2YXIgRXIsTmUsbixscixiZT0hMSxHZT1pcix1cj1CcjtpZihlcj09PTApe0dlPSEwO3ZhciB5cj1nZShBZSk7eXImJihlcj15ci5sZW5ndGgpfWU6Zm9yKDtlcj49MCYmZXI8QWUubGVuZ3RoOyl7dmFyIElyPUFlLmNoYXJDb2RlQXQoZXIpO3N3aXRjaChJcil7Y2FzZSAxMzpBZS5jaGFyQ29kZUF0KGVyKzEpPT09MTAmJmVyKys7Y2FzZSAxMDppZihlcisrLGlyKWJyZWFrIGU7R2U9ITAsYmUmJihscj0hMCk7Y29udGludWU7Y2FzZSA5OmNhc2UgMTE6Y2FzZSAxMjpjYXNlIDMyOmVyKys7Y29udGludWU7Y2FzZSA0Nzp2YXIgd3I9QWUuY2hhckNvZGVBdChlcisxKSxVcj0hMTtpZih3cj09PTQ3fHx3cj09PTQyKXt2YXIgaWk9d3I9PT00Nz8yOjMsbWk9ZXI7aWYoZXIrPTIsd3I9PT00Nylmb3IoO2VyPEFlLmxlbmd0aDspe2lmKHkoQWUuY2hhckNvZGVBdChlcikpKXtVcj0hMDticmVha31lcisrfWVsc2UgZm9yKDtlcjxBZS5sZW5ndGg7KXtpZihBZS5jaGFyQ29kZUF0KGVyKT09PTQyJiZBZS5jaGFyQ29kZUF0KGVyKzEpPT09NDcpe2VyKz0yO2JyZWFrfWVyKyt9aWYoR2Upe2lmKGJlJiYodXI9Q3IoRXIsTmUsbixscixZZSx1ciksIXllJiZ1cikpcmV0dXJuIHVyO0VyPW1pLE5lPWVyLG49aWksbHI9VXIsYmU9ITB9Y29udGludWV9YnJlYWsgZTtkZWZhdWx0OmlmKElyPjEyNyYmJChJcikpe2JlJiZ5KElyKSYmKGxyPSEwKSxlcisrO2NvbnRpbnVlfWJyZWFrIGV9fXJldHVybiBiZSYmKHVyPUNyKEVyLE5lLG4sbHIsWWUsdXIpKSx1cn1mdW5jdGlvbiBnKHllLEFlLGVyLGlyKXtyZXR1cm4gZmUoITEseWUsQWUsITEsZXIsaXIpfWUuZm9yRWFjaExlYWRpbmdDb21tZW50UmFuZ2U9ZztmdW5jdGlvbiBuZSh5ZSxBZSxlcixpcil7cmV0dXJuIGZlKCExLHllLEFlLCEwLGVyLGlyKX1lLmZvckVhY2hUcmFpbGluZ0NvbW1lbnRSYW5nZT1uZTtmdW5jdGlvbiB1ZSh5ZSxBZSxlcixpcixDcil7cmV0dXJuIGZlKCEwLHllLEFlLCExLGVyLGlyLENyKX1lLnJlZHVjZUVhY2hMZWFkaW5nQ29tbWVudFJhbmdlPXVlO2Z1bmN0aW9uIFdlKHllLEFlLGVyLGlyLENyKXtyZXR1cm4gZmUoITAseWUsQWUsITAsZXIsaXIsQ3IpfWUucmVkdWNlRWFjaFRyYWlsaW5nQ29tbWVudFJhbmdlPVdlO2Z1bmN0aW9uIEZlKHllLEFlLGVyLGlyLENyLFllKXtyZXR1cm4gWWV8fChZZT1bXSksWWUucHVzaCh7a2luZDplcixwb3M6eWUsZW5kOkFlLGhhc1RyYWlsaW5nTmV3TGluZTppcn0pLFllfWZ1bmN0aW9uIFooeWUsQWUpe3JldHVybiB1ZSh5ZSxBZSxGZSx2b2lkIDAsdm9pZCAwKX1lLmdldExlYWRpbmdDb21tZW50UmFuZ2VzPVo7ZnVuY3Rpb24gQmUoeWUsQWUpe3JldHVybiBXZSh5ZSxBZSxGZSx2b2lkIDAsdm9pZCAwKX1lLmdldFRyYWlsaW5nQ29tbWVudFJhbmdlcz1CZTtmdW5jdGlvbiBnZSh5ZSl7dmFyIEFlPWwuZXhlYyh5ZSk7aWYoQWUpcmV0dXJuIEFlWzBdfWUuZ2V0U2hlYmFuZz1nZTtmdW5jdGlvbiBSZSh5ZSxBZSl7cmV0dXJuIHllPj02NSYmeWU8PTkwfHx5ZT49OTcmJnllPD0xMjJ8fHllPT09MzZ8fHllPT09OTV8fHllPjEyNyYmSyh5ZSxBZSl9ZS5pc0lkZW50aWZpZXJTdGFydD1SZTtmdW5jdGlvbiB6ZSh5ZSxBZSxlcil7cmV0dXJuIHllPj02NSYmeWU8PTkwfHx5ZT49OTcmJnllPD0xMjJ8fHllPj00OCYmeWU8PTU3fHx5ZT09PTM2fHx5ZT09PTk1fHwoZXI9PT0xP3llPT09NDV8fHllPT09NTg6ITEpfHx5ZT4xMjcmJmIoeWUsQWUpfWUuaXNJZGVudGlmaWVyUGFydD16ZTtmdW5jdGlvbiBFZSh5ZSxBZSxlcil7dmFyIGlyPXJyKHllLDApO2lmKCFSZShpcixBZSkpcmV0dXJuITE7Zm9yKHZhciBDcj1JZShpcik7Q3I8eWUubGVuZ3RoO0NyKz1JZShpcikpaWYoIXplKGlyPXJyKHllLENyKSxBZSxlcikpcmV0dXJuITE7cmV0dXJuITB9ZS5pc0lkZW50aWZpZXJUZXh0PUVlO2Z1bmN0aW9uIEhlKHllLEFlLGVyLGlyLENyLFllLEJyKXtlcj09PXZvaWQgMCYmKGVyPTApO3ZhciBFcj1pcixOZSxuLGxyLGJlLEdlLHVyLHlyLElyLHdyPTA7bnQoRXIsWWUsQnIpO3ZhciBVcj17Z2V0U3RhcnRQb3M6ZnVuY3Rpb24oKXtyZXR1cm4gbHJ9LGdldFRleHRQb3M6ZnVuY3Rpb24oKXtyZXR1cm4gTmV9LGdldFRva2VuOmZ1bmN0aW9uKCl7cmV0dXJuIEdlfSxnZXRUb2tlblBvczpmdW5jdGlvbigpe3JldHVybiBiZX0sZ2V0VG9rZW5UZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIEVyLnN1YnN0cmluZyhiZSxOZSl9LGdldFRva2VuVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdXJ9LGhhc1VuaWNvZGVFc2NhcGU6ZnVuY3Rpb24oKXtyZXR1cm4oeXImMTAyNCkhPT0wfSxoYXNFeHRlbmRlZFVuaWNvZGVFc2NhcGU6ZnVuY3Rpb24oKXtyZXR1cm4oeXImOCkhPT0wfSxoYXNQcmVjZWRpbmdMaW5lQnJlYWs6ZnVuY3Rpb24oKXtyZXR1cm4oeXImMSkhPT0wfSxoYXNQcmVjZWRpbmdKU0RvY0NvbW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4oeXImMikhPT0wfSxpc0lkZW50aWZpZXI6ZnVuY3Rpb24oKXtyZXR1cm4gR2U9PT03OXx8R2U+MTE2fSxpc1Jlc2VydmVkV29yZDpmdW5jdGlvbigpe3JldHVybiBHZT49ODEmJkdlPD0xMTZ9LGlzVW50ZXJtaW5hdGVkOmZ1bmN0aW9uKCl7cmV0dXJuKHlyJjQpIT09MH0sZ2V0Q29tbWVudERpcmVjdGl2ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gSXJ9LGdldE51bWVyaWNMaXRlcmFsRmxhZ3M6ZnVuY3Rpb24oKXtyZXR1cm4geXImMTAwOH0sZ2V0VG9rZW5GbGFnczpmdW5jdGlvbigpe3JldHVybiB5cn0scmVTY2FuR3JlYXRlclRva2VuOldyLHJlU2NhbkFzdGVyaXNrRXF1YWxzVG9rZW46SmUscmVTY2FuU2xhc2hUb2tlbjp4ZSxyZVNjYW5UZW1wbGF0ZVRva2VuOkFyLHJlU2NhblRlbXBsYXRlSGVhZE9yTm9TdWJzdGl0dXRpb25UZW1wbGF0ZTpPZSxzY2FuSnN4SWRlbnRpZmllcjpEZSxzY2FuSnN4QXR0cmlidXRlVmFsdWU6Z3IscmVTY2FuSnN4QXR0cmlidXRlVmFsdWU6VnIscmVTY2FuSnN4VG9rZW46bnIscmVTY2FuTGVzc1RoYW5Ub2tlbjpNcixyZVNjYW5IYXNoVG9rZW46UGUscmVTY2FuUXVlc3Rpb25Ub2tlbjpVZSxyZVNjYW5JbnZhbGlkSWRlbnRpZmllcjpTcixzY2FuSnN4VG9rZW46ZnIsc2NhbkpzRG9jVG9rZW46VHIsc2NhbjpaZSxnZXRUZXh0OmN0LGNsZWFyQ29tbWVudERpcmVjdGl2ZXM6TGksc2V0VGV4dDpudCxzZXRTY3JpcHRUYXJnZXQ6eHQsc2V0TGFuZ3VhZ2VWYXJpYW50OnV0LHNldE9uRXJyb3I6TXQsc2V0VGV4dFBvczpEdCxzZXRJbkpTRG9jVHlwZTpSdCx0cnlTY2FuOldpLGxvb2tBaGVhZDpZaSxzY2FuUmFuZ2U6VWl9O3JldHVybiBlLkRlYnVnLmlzRGVidWdnaW5nJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoVXIsXCJfX2RlYnVnU2hvd0N1cnJlbnRQb3NpdGlvbkluVGV4dFwiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgSWk9VXIuZ2V0VGV4dCgpO3JldHVybiBJaS5zbGljZSgwLFVyLmdldFN0YXJ0UG9zKCkpK1wiXFx1MjU1MVwiK0lpLnNsaWNlKFVyLmdldFN0YXJ0UG9zKCkpfX0pLFVyO2Z1bmN0aW9uIGlpKElpLEtpLEZpKXtpZihLaT09PXZvaWQgMCYmKEtpPU5lKSxDcil7dmFyIHVpPU5lO05lPUtpLENyKElpLEZpfHwwKSxOZT11aX19ZnVuY3Rpb24gbWkoKXtmb3IodmFyIElpPU5lLEtpPSExLEZpPSExLHVpPVwiXCI7Oyl7dmFyIEJ0PUVyLmNoYXJDb2RlQXQoTmUpO2lmKEJ0PT09OTUpe3lyfD01MTIsS2k/KEtpPSExLEZpPSEwLHVpKz1Fci5zdWJzdHJpbmcoSWksTmUpKTppaShGaT9lLkRpYWdub3N0aWNzLk11bHRpcGxlX2NvbnNlY3V0aXZlX251bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X3Blcm1pdHRlZDplLkRpYWdub3N0aWNzLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxOZSwxKSxOZSsrLElpPU5lO2NvbnRpbnVlfWlmKFYoQnQpKXtLaT0hMCxGaT0hMSxOZSsrO2NvbnRpbnVlfWJyZWFrfXJldHVybiBFci5jaGFyQ29kZUF0KE5lLTEpPT09OTUmJmlpKGUuRGlhZ25vc3RpY3MuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLE5lLTEsMSksdWkrRXIuc3Vic3RyaW5nKElpLE5lKX1mdW5jdGlvbiBwZSgpe3ZhciBJaT1OZSxLaT1taSgpLEZpLHVpO0VyLmNoYXJDb2RlQXQoTmUpPT09NDYmJihOZSsrLEZpPW1pKCkpO3ZhciBCdD1OZTtpZihFci5jaGFyQ29kZUF0KE5lKT09PTY5fHxFci5jaGFyQ29kZUF0KE5lKT09PTEwMSl7TmUrKyx5cnw9MTYsKEVyLmNoYXJDb2RlQXQoTmUpPT09NDN8fEVyLmNoYXJDb2RlQXQoTmUpPT09NDUpJiZOZSsrO3ZhciB3dD1OZSxuYT1taSgpO25hPyh1aT1Fci5zdWJzdHJpbmcoQnQsd3QpK25hLEJ0PU5lKTppaShlLkRpYWdub3N0aWNzLkRpZ2l0X2V4cGVjdGVkKX12YXIgQWk7aWYoeXImNTEyPyhBaT1LaSxGaSYmKEFpKz1cIi5cIitGaSksdWkmJihBaSs9dWkpKTpBaT1Fci5zdWJzdHJpbmcoSWksQnQpLEZpIT09dm9pZCAwfHx5ciYxNilyZXR1cm4gb3IoSWksRmk9PT12b2lkIDAmJiEhKHlyJjE2KSkse3R5cGU6OCx2YWx1ZTpcIlwiKyArQWl9O3VyPUFpO3ZhciBPaT10aSgpO3JldHVybiBvcihJaSkse3R5cGU6T2ksdmFsdWU6dXJ9fWZ1bmN0aW9uIG9yKElpLEtpKXtpZighIVJlKHJyKEVyLE5lKSx5ZSkpe3ZhciBGaT1OZSx1aT1hZSgpLmxlbmd0aDt1aT09PTEmJkVyW0ZpXT09PVwiblwiP2lpKEtpP2UuRGlhZ25vc3RpY3MuQV9iaWdpbnRfbGl0ZXJhbF9jYW5ub3RfdXNlX2V4cG9uZW50aWFsX25vdGF0aW9uOmUuRGlhZ25vc3RpY3MuQV9iaWdpbnRfbGl0ZXJhbF9tdXN0X2JlX2FuX2ludGVnZXIsSWksRmktSWkrMSk6KGlpKGUuRGlhZ25vc3RpY3MuQW5faWRlbnRpZmllcl9vcl9rZXl3b3JkX2Nhbm5vdF9pbW1lZGlhdGVseV9mb2xsb3dfYV9udW1lcmljX2xpdGVyYWwsRmksdWkpLE5lPUZpKX19ZnVuY3Rpb24gcXIoKXtmb3IodmFyIElpPU5lO2soRXIuY2hhckNvZGVBdChOZSkpOylOZSsrO3JldHVybitFci5zdWJzdHJpbmcoSWksTmUpfWZ1bmN0aW9uIHNpKElpLEtpKXt2YXIgRmk9d2koSWksITEsS2kpO3JldHVybiBGaT9wYXJzZUludChGaSwxNik6LTF9ZnVuY3Rpb24gRGkoSWksS2kpe3JldHVybiB3aShJaSwhMCxLaSl9ZnVuY3Rpb24gd2koSWksS2ksRmkpe2Zvcih2YXIgdWk9W10sQnQ9ITEsd3Q9ITE7dWkubGVuZ3RoPElpfHxLaTspe3ZhciBuYT1Fci5jaGFyQ29kZUF0KE5lKTtpZihGaSYmbmE9PT05NSl7eXJ8PTUxMixCdD8oQnQ9ITEsd3Q9ITApOmlpKHd0P2UuRGlhZ25vc3RpY3MuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkOmUuRGlhZ25vc3RpY3MuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLE5lLDEpLE5lKys7Y29udGludWV9aWYoQnQ9RmksbmE+PTY1JiZuYTw9NzApbmErPTk3LTY1O2Vsc2UgaWYoIShuYT49NDgmJm5hPD01N3x8bmE+PTk3JiZuYTw9MTAyKSlicmVhazt1aS5wdXNoKG5hKSxOZSsrLHd0PSExfXJldHVybiB1aS5sZW5ndGg8SWkmJih1aT1bXSksRXIuY2hhckNvZGVBdChOZS0xKT09PTk1JiZpaShlLkRpYWdub3N0aWNzLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxOZS0xLDEpLFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHVpKX1mdW5jdGlvbiBYaShJaSl7SWk9PT12b2lkIDAmJihJaT0hMSk7dmFyIEtpPUVyLmNoYXJDb2RlQXQoTmUpO05lKys7Zm9yKHZhciBGaT1cIlwiLHVpPU5lOzspe2lmKE5lPj1uKXtGaSs9RXIuc3Vic3RyaW5nKHVpLE5lKSx5cnw9NCxpaShlLkRpYWdub3N0aWNzLlVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbCk7YnJlYWt9dmFyIEJ0PUVyLmNoYXJDb2RlQXQoTmUpO2lmKEJ0PT09S2kpe0ZpKz1Fci5zdWJzdHJpbmcodWksTmUpLE5lKys7YnJlYWt9aWYoQnQ9PT05MiYmIUlpKXtGaSs9RXIuc3Vic3RyaW5nKHVpLE5lKSxGaSs9R2koKSx1aT1OZTtjb250aW51ZX1pZih5KEJ0KSYmIUlpKXtGaSs9RXIuc3Vic3RyaW5nKHVpLE5lKSx5cnw9NCxpaShlLkRpYWdub3N0aWNzLlVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbCk7YnJlYWt9TmUrK31yZXR1cm4gRml9ZnVuY3Rpb24gZXQoSWkpe3ZhciBLaT1Fci5jaGFyQ29kZUF0KE5lKT09PTk2O05lKys7Zm9yKHZhciBGaT1OZSx1aT1cIlwiLEJ0Ozspe2lmKE5lPj1uKXt1aSs9RXIuc3Vic3RyaW5nKEZpLE5lKSx5cnw9NCxpaShlLkRpYWdub3N0aWNzLlVudGVybWluYXRlZF90ZW1wbGF0ZV9saXRlcmFsKSxCdD1LaT8xNDoxNzticmVha312YXIgd3Q9RXIuY2hhckNvZGVBdChOZSk7aWYod3Q9PT05Nil7dWkrPUVyLnN1YnN0cmluZyhGaSxOZSksTmUrKyxCdD1LaT8xNDoxNzticmVha31pZih3dD09PTM2JiZOZSsxPG4mJkVyLmNoYXJDb2RlQXQoTmUrMSk9PT0xMjMpe3VpKz1Fci5zdWJzdHJpbmcoRmksTmUpLE5lKz0yLEJ0PUtpPzE1OjE2O2JyZWFrfWlmKHd0PT09OTIpe3VpKz1Fci5zdWJzdHJpbmcoRmksTmUpLHVpKz1HaShJaSksRmk9TmU7Y29udGludWV9aWYod3Q9PT0xMyl7dWkrPUVyLnN1YnN0cmluZyhGaSxOZSksTmUrKyxOZTxuJiZFci5jaGFyQ29kZUF0KE5lKT09PTEwJiZOZSsrLHVpKz1gXG5gLEZpPU5lO2NvbnRpbnVlfU5lKyt9cmV0dXJuIGUuRGVidWcuYXNzZXJ0KEJ0IT09dm9pZCAwKSx1cj11aSxCdH1mdW5jdGlvbiBHaShJaSl7dmFyIEtpPU5lO2lmKE5lKyssTmU+PW4pcmV0dXJuIGlpKGUuRGlhZ25vc3RpY3MuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCksXCJcIjt2YXIgRmk9RXIuY2hhckNvZGVBdChOZSk7c3dpdGNoKE5lKyssRmkpe2Nhc2UgNDg6cmV0dXJuIElpJiZOZTxuJiZWKEVyLmNoYXJDb2RlQXQoTmUpKT8oTmUrKyx5cnw9MjA0OCxFci5zdWJzdHJpbmcoS2ksTmUpKTpcIlxcMFwiO2Nhc2UgOTg6cmV0dXJuXCJcXGJcIjtjYXNlIDExNjpyZXR1cm5cIlx0XCI7Y2FzZSAxMTA6cmV0dXJuYFxuYDtjYXNlIDExODpyZXR1cm5cIlxcdlwiO2Nhc2UgMTAyOnJldHVyblwiXFxmXCI7Y2FzZSAxMTQ6cmV0dXJuXCJcXHJcIjtjYXNlIDM5OnJldHVyblwiJ1wiO2Nhc2UgMzQ6cmV0dXJuJ1wiJztjYXNlIDExNzppZihJaSl7Zm9yKHZhciB1aT1OZTt1aTxOZSs0O3VpKyspaWYodWk8biYmIUwoRXIuY2hhckNvZGVBdCh1aSkpJiZFci5jaGFyQ29kZUF0KHVpKSE9PTEyMylyZXR1cm4gTmU9dWkseXJ8PTIwNDgsRXIuc3Vic3RyaW5nKEtpLE5lKX1pZihOZTxuJiZFci5jaGFyQ29kZUF0KE5lKT09PTEyMyl7aWYoTmUrKyxJaSYmIUwoRXIuY2hhckNvZGVBdChOZSkpKXJldHVybiB5cnw9MjA0OCxFci5zdWJzdHJpbmcoS2ksTmUpO2lmKElpKXt2YXIgQnQ9TmUsd3Q9RGkoMSwhMSksbmE9d3Q/cGFyc2VJbnQod3QsMTYpOi0xO2lmKCFQKG5hKXx8RXIuY2hhckNvZGVBdChOZSkhPT0xMjUpcmV0dXJuIHlyfD0yMDQ4LEVyLnN1YnN0cmluZyhLaSxOZSk7TmU9QnR9cmV0dXJuIHlyfD04LFp0KCl9cmV0dXJuIHlyfD0xMDI0LFd0KDQpO2Nhc2UgMTIwOmlmKElpKWlmKEwoRXIuY2hhckNvZGVBdChOZSkpKXtpZighTChFci5jaGFyQ29kZUF0KE5lKzEpKSlyZXR1cm4gTmUrKyx5cnw9MjA0OCxFci5zdWJzdHJpbmcoS2ksTmUpfWVsc2UgcmV0dXJuIHlyfD0yMDQ4LEVyLnN1YnN0cmluZyhLaSxOZSk7cmV0dXJuIFd0KDIpO2Nhc2UgMTM6TmU8biYmRXIuY2hhckNvZGVBdChOZSk9PT0xMCYmTmUrKztjYXNlIDEwOmNhc2UgODIzMjpjYXNlIDgyMzM6cmV0dXJuXCJcIjtkZWZhdWx0OnJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKEZpKX19ZnVuY3Rpb24gV3QoSWkpe3ZhciBLaT1zaShJaSwhMSk7cmV0dXJuIEtpPj0wP1N0cmluZy5mcm9tQ2hhckNvZGUoS2kpOihpaShlLkRpYWdub3N0aWNzLkhleGFkZWNpbWFsX2RpZ2l0X2V4cGVjdGVkKSxcIlwiKX1mdW5jdGlvbiBadCgpe3ZhciBJaT1EaSgxLCExKSxLaT1JaT9wYXJzZUludChJaSwxNik6LTEsRmk9ITE7cmV0dXJuIEtpPDA/KGlpKGUuRGlhZ25vc3RpY3MuSGV4YWRlY2ltYWxfZGlnaXRfZXhwZWN0ZWQpLEZpPSEwKTpLaT4xMTE0MTExJiYoaWkoZS5EaWFnbm9zdGljcy5Bbl9leHRlbmRlZF9Vbmljb2RlX2VzY2FwZV92YWx1ZV9tdXN0X2JlX2JldHdlZW5fMHgwX2FuZF8weDEwRkZGRl9pbmNsdXNpdmUpLEZpPSEwKSxOZT49bj8oaWkoZS5EaWFnbm9zdGljcy5VbmV4cGVjdGVkX2VuZF9vZl90ZXh0KSxGaT0hMCk6RXIuY2hhckNvZGVBdChOZSk9PT0xMjU/TmUrKzooaWkoZS5EaWFnbm9zdGljcy5VbnRlcm1pbmF0ZWRfVW5pY29kZV9lc2NhcGVfc2VxdWVuY2UpLEZpPSEwKSxGaT9cIlwiOmRlKEtpKX1mdW5jdGlvbiBfcigpe2lmKE5lKzU8biYmRXIuY2hhckNvZGVBdChOZSsxKT09PTExNyl7dmFyIElpPU5lO05lKz0yO3ZhciBLaT1zaSg0LCExKTtyZXR1cm4gTmU9SWksS2l9cmV0dXJuLTF9ZnVuY3Rpb24gcGkoKXtpZih5ZT49MiYmcnIoRXIsTmUrMSk9PT0xMTcmJnJyKEVyLE5lKzIpPT09MTIzKXt2YXIgSWk9TmU7TmUrPTM7dmFyIEtpPURpKDEsITEpLEZpPUtpP3BhcnNlSW50KEtpLDE2KTotMTtyZXR1cm4gTmU9SWksRml9cmV0dXJuLTF9ZnVuY3Rpb24gYWUoKXtmb3IodmFyIElpPVwiXCIsS2k9TmU7TmU8bjspe3ZhciBGaT1ycihFcixOZSk7aWYoemUoRmkseWUpKU5lKz1JZShGaSk7ZWxzZSBpZihGaT09PTkyKXtpZihGaT1waSgpLEZpPj0wJiZ6ZShGaSx5ZSkpe05lKz0zLHlyfD04LElpKz1adCgpLEtpPU5lO2NvbnRpbnVlfWlmKEZpPV9yKCksIShGaT49MCYmemUoRmkseWUpKSlicmVhazt5cnw9MTAyNCxJaSs9RXIuc3Vic3RyaW5nKEtpLE5lKSxJaSs9ZGUoRmkpLE5lKz02LEtpPU5lfWVsc2UgYnJlYWt9cmV0dXJuIElpKz1Fci5zdWJzdHJpbmcoS2ksTmUpLElpfWZ1bmN0aW9uIFhlKCl7dmFyIElpPXVyLmxlbmd0aDtpZihJaT49MiYmSWk8PTEyKXt2YXIgS2k9dXIuY2hhckNvZGVBdCgwKTtpZihLaT49OTcmJktpPD0xMjIpe3ZhciBGaT1CLmdldCh1cik7aWYoRmkhPT12b2lkIDApcmV0dXJuIEdlPUZpfX1yZXR1cm4gR2U9Nzl9ZnVuY3Rpb24gSnIoSWkpe2Zvcih2YXIgS2k9XCJcIixGaT0hMSx1aT0hMTs7KXt2YXIgQnQ9RXIuY2hhckNvZGVBdChOZSk7aWYoQnQ9PT05NSl7eXJ8PTUxMixGaT8oRmk9ITEsdWk9ITApOmlpKHVpP2UuRGlhZ25vc3RpY3MuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkOmUuRGlhZ25vc3RpY3MuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLE5lLDEpLE5lKys7Y29udGludWV9aWYoRmk9ITAsIVYoQnQpfHxCdC00OD49SWkpYnJlYWs7S2krPUVyW05lXSxOZSsrLHVpPSExfXJldHVybiBFci5jaGFyQ29kZUF0KE5lLTEpPT09OTUmJmlpKGUuRGlhZ25vc3RpY3MuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLE5lLTEsMSksS2l9ZnVuY3Rpb24gdGkoKXtpZihFci5jaGFyQ29kZUF0KE5lKT09PTExMClyZXR1cm4gdXIrPVwiblwiLHlyJjM4NCYmKHVyPWUucGFyc2VQc2V1ZG9CaWdJbnQodXIpK1wiblwiKSxOZSsrLDk7dmFyIElpPXlyJjEyOD9wYXJzZUludCh1ci5zbGljZSgyKSwyKTp5ciYyNTY/cGFyc2VJbnQodXIuc2xpY2UoMiksOCk6K3VyO3JldHVybiB1cj1cIlwiK0lpLDh9ZnVuY3Rpb24gWmUoKXt2YXIgSWk7bHI9TmUseXI9MDtmb3IodmFyIEtpPSExOzspe2lmKGJlPU5lLE5lPj1uKXJldHVybiBHZT0xO3ZhciBGaT1ycihFcixOZSk7aWYoRmk9PT0zNSYmTmU9PT0wJiZkKEVyLE5lKSl7aWYoTmU9RChFcixOZSksQWUpY29udGludWU7cmV0dXJuIEdlPTZ9c3dpdGNoKEZpKXtjYXNlIDEwOmNhc2UgMTM6aWYoeXJ8PTEsQWUpe05lKys7Y29udGludWV9ZWxzZSByZXR1cm4gRmk9PT0xMyYmTmUrMTxuJiZFci5jaGFyQ29kZUF0KE5lKzEpPT09MTA/TmUrPTI6TmUrKyxHZT00O2Nhc2UgOTpjYXNlIDExOmNhc2UgMTI6Y2FzZSAzMjpjYXNlIDE2MDpjYXNlIDU3NjA6Y2FzZSA4MTkyOmNhc2UgODE5MzpjYXNlIDgxOTQ6Y2FzZSA4MTk1OmNhc2UgODE5NjpjYXNlIDgxOTc6Y2FzZSA4MTk4OmNhc2UgODE5OTpjYXNlIDgyMDA6Y2FzZSA4MjAxOmNhc2UgODIwMjpjYXNlIDgyMDM6Y2FzZSA4MjM5OmNhc2UgODI4NzpjYXNlIDEyMjg4OmNhc2UgNjUyNzk6aWYoQWUpe05lKys7Y29udGludWV9ZWxzZXtmb3IoO05lPG4mJkEoRXIuY2hhckNvZGVBdChOZSkpOylOZSsrO3JldHVybiBHZT01fWNhc2UgMzM6cmV0dXJuIEVyLmNoYXJDb2RlQXQoTmUrMSk9PT02MT9Fci5jaGFyQ29kZUF0KE5lKzIpPT09NjE/KE5lKz0zLEdlPTM3KTooTmUrPTIsR2U9MzUpOihOZSsrLEdlPTUzKTtjYXNlIDM0OmNhc2UgMzk6cmV0dXJuIHVyPVhpKCksR2U9MTA7Y2FzZSA5NjpyZXR1cm4gR2U9ZXQoITEpO2Nhc2UgMzc6cmV0dXJuIEVyLmNoYXJDb2RlQXQoTmUrMSk9PT02MT8oTmUrPTIsR2U9NjkpOihOZSsrLEdlPTQ0KTtjYXNlIDM4OnJldHVybiBFci5jaGFyQ29kZUF0KE5lKzEpPT09Mzg/RXIuY2hhckNvZGVBdChOZSsyKT09PTYxPyhOZSs9MyxHZT03Nik6KE5lKz0yLEdlPTU1KTpFci5jaGFyQ29kZUF0KE5lKzEpPT09NjE/KE5lKz0yLEdlPTczKTooTmUrKyxHZT01MCk7Y2FzZSA0MDpyZXR1cm4gTmUrKyxHZT0yMDtjYXNlIDQxOnJldHVybiBOZSsrLEdlPTIxO2Nhc2UgNDI6aWYoRXIuY2hhckNvZGVBdChOZSsxKT09PTYxKXJldHVybiBOZSs9MixHZT02NjtpZihFci5jaGFyQ29kZUF0KE5lKzEpPT09NDIpcmV0dXJuIEVyLmNoYXJDb2RlQXQoTmUrMik9PT02MT8oTmUrPTMsR2U9NjcpOihOZSs9MixHZT00Mik7aWYoTmUrKyx3ciYmIUtpJiZ5ciYxKXtLaT0hMDtjb250aW51ZX1yZXR1cm4gR2U9NDE7Y2FzZSA0MzpyZXR1cm4gRXIuY2hhckNvZGVBdChOZSsxKT09PTQzPyhOZSs9MixHZT00NSk6RXIuY2hhckNvZGVBdChOZSsxKT09PTYxPyhOZSs9MixHZT02NCk6KE5lKyssR2U9MzkpO2Nhc2UgNDQ6cmV0dXJuIE5lKyssR2U9Mjc7Y2FzZSA0NTpyZXR1cm4gRXIuY2hhckNvZGVBdChOZSsxKT09PTQ1PyhOZSs9MixHZT00Nik6RXIuY2hhckNvZGVBdChOZSsxKT09PTYxPyhOZSs9MixHZT02NSk6KE5lKyssR2U9NDApO2Nhc2UgNDY6cmV0dXJuIFYoRXIuY2hhckNvZGVBdChOZSsxKSk/KHVyPXBlKCkudmFsdWUsR2U9OCk6RXIuY2hhckNvZGVBdChOZSsxKT09PTQ2JiZFci5jaGFyQ29kZUF0KE5lKzIpPT09NDY/KE5lKz0zLEdlPTI1KTooTmUrKyxHZT0yNCk7Y2FzZSA0NzppZihFci5jaGFyQ29kZUF0KE5lKzEpPT09NDcpe2ZvcihOZSs9MjtOZTxuJiYheShFci5jaGFyQ29kZUF0KE5lKSk7KU5lKys7aWYoSXI9dnIoSXIsRXIuc2xpY2UoYmUsTmUpLG9lLGJlKSxBZSljb250aW51ZTtyZXR1cm4gR2U9Mn1pZihFci5jaGFyQ29kZUF0KE5lKzEpPT09NDIpe05lKz0yLEVyLmNoYXJDb2RlQXQoTmUpPT09NDImJkVyLmNoYXJDb2RlQXQoTmUrMSkhPT00NyYmKHlyfD0yKTtmb3IodmFyIHVpPSExLEJ0PWJlO05lPG47KXt2YXIgd3Q9RXIuY2hhckNvZGVBdChOZSk7aWYod3Q9PT00MiYmRXIuY2hhckNvZGVBdChOZSsxKT09PTQ3KXtOZSs9Mix1aT0hMDticmVha31OZSsrLHkod3QpJiYoQnQ9TmUseXJ8PTEpfWlmKElyPXZyKElyLEVyLnNsaWNlKEJ0LE5lKSxmLEJ0KSx1aXx8aWkoZS5EaWFnbm9zdGljcy5Bc3Rlcmlza19TbGFzaF9leHBlY3RlZCksQWUpY29udGludWU7cmV0dXJuIHVpfHwoeXJ8PTQpLEdlPTN9cmV0dXJuIEVyLmNoYXJDb2RlQXQoTmUrMSk9PT02MT8oTmUrPTIsR2U9NjgpOihOZSsrLEdlPTQzKTtjYXNlIDQ4OmlmKE5lKzI8biYmKEVyLmNoYXJDb2RlQXQoTmUrMSk9PT04OHx8RXIuY2hhckNvZGVBdChOZSsxKT09PTEyMCkpcmV0dXJuIE5lKz0yLHVyPURpKDEsITApLHVyfHwoaWkoZS5EaWFnbm9zdGljcy5IZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCksdXI9XCIwXCIpLHVyPVwiMHhcIit1cix5cnw9NjQsR2U9dGkoKTtpZihOZSsyPG4mJihFci5jaGFyQ29kZUF0KE5lKzEpPT09NjZ8fEVyLmNoYXJDb2RlQXQoTmUrMSk9PT05OCkpcmV0dXJuIE5lKz0yLHVyPUpyKDIpLHVyfHwoaWkoZS5EaWFnbm9zdGljcy5CaW5hcnlfZGlnaXRfZXhwZWN0ZWQpLHVyPVwiMFwiKSx1cj1cIjBiXCIrdXIseXJ8PTEyOCxHZT10aSgpO2lmKE5lKzI8biYmKEVyLmNoYXJDb2RlQXQoTmUrMSk9PT03OXx8RXIuY2hhckNvZGVBdChOZSsxKT09PTExMSkpcmV0dXJuIE5lKz0yLHVyPUpyKDgpLHVyfHwoaWkoZS5EaWFnbm9zdGljcy5PY3RhbF9kaWdpdF9leHBlY3RlZCksdXI9XCIwXCIpLHVyPVwiMG9cIit1cix5cnw9MjU2LEdlPXRpKCk7aWYoTmUrMTxuJiZrKEVyLmNoYXJDb2RlQXQoTmUrMSkpKXJldHVybiB1cj1cIlwiK3FyKCkseXJ8PTMyLEdlPTg7Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6cmV0dXJuIElpPXBlKCksR2U9SWkudHlwZSx1cj1JaS52YWx1ZSxHZTtjYXNlIDU4OnJldHVybiBOZSsrLEdlPTU4O2Nhc2UgNTk6cmV0dXJuIE5lKyssR2U9MjY7Y2FzZSA2MDppZihIKEVyLE5lKSl7aWYoTmU9SShFcixOZSxpaSksQWUpY29udGludWU7cmV0dXJuIEdlPTd9cmV0dXJuIEVyLmNoYXJDb2RlQXQoTmUrMSk9PT02MD9Fci5jaGFyQ29kZUF0KE5lKzIpPT09NjE/KE5lKz0zLEdlPTcwKTooTmUrPTIsR2U9NDcpOkVyLmNoYXJDb2RlQXQoTmUrMSk9PT02MT8oTmUrPTIsR2U9MzIpOmVyPT09MSYmRXIuY2hhckNvZGVBdChOZSsxKT09PTQ3JiZFci5jaGFyQ29kZUF0KE5lKzIpIT09NDI/KE5lKz0yLEdlPTMwKTooTmUrKyxHZT0yOSk7Y2FzZSA2MTppZihIKEVyLE5lKSl7aWYoTmU9SShFcixOZSxpaSksQWUpY29udGludWU7cmV0dXJuIEdlPTd9cmV0dXJuIEVyLmNoYXJDb2RlQXQoTmUrMSk9PT02MT9Fci5jaGFyQ29kZUF0KE5lKzIpPT09NjE/KE5lKz0zLEdlPTM2KTooTmUrPTIsR2U9MzQpOkVyLmNoYXJDb2RlQXQoTmUrMSk9PT02Mj8oTmUrPTIsR2U9MzgpOihOZSsrLEdlPTYzKTtjYXNlIDYyOmlmKEgoRXIsTmUpKXtpZihOZT1JKEVyLE5lLGlpKSxBZSljb250aW51ZTtyZXR1cm4gR2U9N31yZXR1cm4gTmUrKyxHZT0zMTtjYXNlIDYzOnJldHVybiBFci5jaGFyQ29kZUF0KE5lKzEpPT09NDYmJiFWKEVyLmNoYXJDb2RlQXQoTmUrMikpPyhOZSs9MixHZT0yOCk6RXIuY2hhckNvZGVBdChOZSsxKT09PTYzP0VyLmNoYXJDb2RlQXQoTmUrMik9PT02MT8oTmUrPTMsR2U9NzcpOihOZSs9MixHZT02MCk6KE5lKyssR2U9NTcpO2Nhc2UgOTE6cmV0dXJuIE5lKyssR2U9MjI7Y2FzZSA5MzpyZXR1cm4gTmUrKyxHZT0yMztjYXNlIDk0OnJldHVybiBFci5jaGFyQ29kZUF0KE5lKzEpPT09NjE/KE5lKz0yLEdlPTc4KTooTmUrKyxHZT01Mik7Y2FzZSAxMjM6cmV0dXJuIE5lKyssR2U9MTg7Y2FzZSAxMjQ6aWYoSChFcixOZSkpe2lmKE5lPUkoRXIsTmUsaWkpLEFlKWNvbnRpbnVlO3JldHVybiBHZT03fXJldHVybiBFci5jaGFyQ29kZUF0KE5lKzEpPT09MTI0P0VyLmNoYXJDb2RlQXQoTmUrMik9PT02MT8oTmUrPTMsR2U9NzUpOihOZSs9MixHZT01Nik6RXIuY2hhckNvZGVBdChOZSsxKT09PTYxPyhOZSs9MixHZT03NCk6KE5lKyssR2U9NTEpO2Nhc2UgMTI1OnJldHVybiBOZSsrLEdlPTE5O2Nhc2UgMTI2OnJldHVybiBOZSsrLEdlPTU0O2Nhc2UgNjQ6cmV0dXJuIE5lKyssR2U9NTk7Y2FzZSA5Mjp2YXIgbmE9cGkoKTtpZihuYT49MCYmUmUobmEseWUpKXJldHVybiBOZSs9Myx5cnw9OCx1cj1adCgpK2FlKCksR2U9WGUoKTt2YXIgQWk9X3IoKTtyZXR1cm4gQWk+PTAmJlJlKEFpLHllKT8oTmUrPTYseXJ8PTEwMjQsdXI9U3RyaW5nLmZyb21DaGFyQ29kZShBaSkrYWUoKSxHZT1YZSgpKTooaWkoZS5EaWFnbm9zdGljcy5JbnZhbGlkX2NoYXJhY3RlciksTmUrKyxHZT0wKTtjYXNlIDM1OnJldHVybiBOZSE9PTAmJkVyW05lKzFdPT09XCIhXCI/KGlpKGUuRGlhZ25vc3RpY3MuY2FuX29ubHlfYmVfdXNlZF9hdF90aGVfc3RhcnRfb2ZfYV9maWxlKSxOZSsrLEdlPTApOihSZShycihFcixOZSsxKSx5ZSk/KE5lKyssenIocnIoRXIsTmUpLHllKSk6KHVyPVN0cmluZy5mcm9tQ2hhckNvZGUocnIoRXIsTmUpKSxpaShlLkRpYWdub3N0aWNzLkludmFsaWRfY2hhcmFjdGVyLE5lKyssSWUoRmkpKSksR2U9ODApO2RlZmF1bHQ6dmFyIE9pPXpyKEZpLHllKTtpZihPaSlyZXR1cm4gR2U9T2k7aWYoQShGaSkpe05lKz1JZShGaSk7Y29udGludWV9ZWxzZSBpZih5KEZpKSl7eXJ8PTEsTmUrPUllKEZpKTtjb250aW51ZX12YXIgamk9SWUoRmkpO3JldHVybiBpaShlLkRpYWdub3N0aWNzLkludmFsaWRfY2hhcmFjdGVyLE5lLGppKSxOZSs9amksR2U9MH19fWZ1bmN0aW9uIFNyKCl7ZS5EZWJ1Zy5hc3NlcnQoR2U9PT0wLFwiJ3JlU2NhbkludmFsaWRJZGVudGlmaWVyJyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgY3VycmVudCB0b2tlbiBpcyAnU3ludGF4S2luZC5Vbmtub3duJy5cIiksTmU9YmU9bHIseXI9MDt2YXIgSWk9cnIoRXIsTmUpLEtpPXpyKElpLDk5KTtyZXR1cm4gS2k/R2U9S2k6KE5lKz1JZShJaSksR2UpfWZ1bmN0aW9uIHpyKElpLEtpKXt2YXIgRmk9SWk7aWYoUmUoRmksS2kpKXtmb3IoTmUrPUllKEZpKTtOZTxuJiZ6ZShGaT1ycihFcixOZSksS2kpOylOZSs9SWUoRmkpO3JldHVybiB1cj1Fci5zdWJzdHJpbmcoYmUsTmUpLEZpPT09OTImJih1cis9YWUoKSksWGUoKX19ZnVuY3Rpb24gV3IoKXtpZihHZT09PTMxKXtpZihFci5jaGFyQ29kZUF0KE5lKT09PTYyKXJldHVybiBFci5jaGFyQ29kZUF0KE5lKzEpPT09NjI/RXIuY2hhckNvZGVBdChOZSsyKT09PTYxPyhOZSs9MyxHZT03Mik6KE5lKz0yLEdlPTQ5KTpFci5jaGFyQ29kZUF0KE5lKzEpPT09NjE/KE5lKz0yLEdlPTcxKTooTmUrKyxHZT00OCk7aWYoRXIuY2hhckNvZGVBdChOZSk9PT02MSlyZXR1cm4gTmUrKyxHZT0zM31yZXR1cm4gR2V9ZnVuY3Rpb24gSmUoKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoR2U9PT02NixcIidyZVNjYW5Bc3Rlcmlza0VxdWFsc1Rva2VuJyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gYSAnKj0nXCIpLE5lPWJlKzEsR2U9NjN9ZnVuY3Rpb24geGUoKXtpZihHZT09PTQzfHxHZT09PTY4KXtmb3IodmFyIElpPWJlKzEsS2k9ITEsRmk9ITE7Oyl7aWYoSWk+PW4pe3lyfD00LGlpKGUuRGlhZ25vc3RpY3MuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsKTticmVha312YXIgdWk9RXIuY2hhckNvZGVBdChJaSk7aWYoeSh1aSkpe3lyfD00LGlpKGUuRGlhZ25vc3RpY3MuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsKTticmVha31pZihLaSlLaT0hMTtlbHNlIGlmKHVpPT09NDcmJiFGaSl7SWkrKzticmVha31lbHNlIHVpPT09OTE/Rmk9ITA6dWk9PT05Mj9LaT0hMDp1aT09PTkzJiYoRmk9ITEpO0lpKyt9Zm9yKDtJaTxuJiZ6ZShFci5jaGFyQ29kZUF0KElpKSx5ZSk7KUlpKys7TmU9SWksdXI9RXIuc3Vic3RyaW5nKGJlLE5lKSxHZT0xM31yZXR1cm4gR2V9ZnVuY3Rpb24gdnIoSWksS2ksRmksdWkpe3ZhciBCdD1tcihlLnRyaW1TdHJpbmdTdGFydChLaSksRmkpO3JldHVybiBCdD09PXZvaWQgMD9JaTplLmFwcGVuZChJaSx7cmFuZ2U6e3Bvczp1aSxlbmQ6TmV9LHR5cGU6QnR9KX1mdW5jdGlvbiBtcihJaSxLaSl7dmFyIEZpPUtpLmV4ZWMoSWkpO2lmKCEhRmkpc3dpdGNoKEZpWzFdKXtjYXNlXCJ0cy1leHBlY3QtZXJyb3JcIjpyZXR1cm4gMDtjYXNlXCJ0cy1pZ25vcmVcIjpyZXR1cm4gMX19ZnVuY3Rpb24gQXIoSWkpe3JldHVybiBlLkRlYnVnLmFzc2VydChHZT09PTE5LFwiJ3JlU2NhblRlbXBsYXRlVG9rZW4nIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBhICd9J1wiKSxOZT1iZSxHZT1ldChJaSl9ZnVuY3Rpb24gT2UoKXtyZXR1cm4gTmU9YmUsR2U9ZXQoITApfWZ1bmN0aW9uIG5yKElpKXtyZXR1cm4gSWk9PT12b2lkIDAmJihJaT0hMCksTmU9YmU9bHIsR2U9ZnIoSWkpfWZ1bmN0aW9uIE1yKCl7cmV0dXJuIEdlPT09NDc/KE5lPWJlKzEsR2U9MjkpOkdlfWZ1bmN0aW9uIFBlKCl7cmV0dXJuIEdlPT09ODA/KE5lPWJlKzEsR2U9NjIpOkdlfWZ1bmN0aW9uIFVlKCl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KEdlPT09NjAsXCIncmVTY2FuUXVlc3Rpb25Ub2tlbicgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIGEgJz8/J1wiKSxOZT1iZSsxLEdlPTU3fWZ1bmN0aW9uIGZyKElpKXtpZihJaT09PXZvaWQgMCYmKElpPSEwKSxscj1iZT1OZSxOZT49bilyZXR1cm4gR2U9MTt2YXIgS2k9RXIuY2hhckNvZGVBdChOZSk7aWYoS2k9PT02MClyZXR1cm4gRXIuY2hhckNvZGVBdChOZSsxKT09PTQ3PyhOZSs9MixHZT0zMCk6KE5lKyssR2U9MjkpO2lmKEtpPT09MTIzKXJldHVybiBOZSsrLEdlPTE4O2Zvcih2YXIgRmk9MDtOZTxuJiYoS2k9RXIuY2hhckNvZGVBdChOZSksS2khPT0xMjMpOyl7aWYoS2k9PT02MCl7aWYoSChFcixOZSkpcmV0dXJuIE5lPUkoRXIsTmUsaWkpLEdlPTc7YnJlYWt9aWYoS2k9PT02MiYmaWkoZS5EaWFnbm9zdGljcy5VbmV4cGVjdGVkX3Rva2VuX0RpZF95b3VfbWVhbl9vcl9ndCxOZSwxKSxLaT09PTEyNSYmaWkoZS5EaWFnbm9zdGljcy5VbmV4cGVjdGVkX3Rva2VuX0RpZF95b3VfbWVhbl9vcl9yYnJhY2UsTmUsMSkseShLaSkmJkZpPT09MClGaT0tMTtlbHNle2lmKCFJaSYmeShLaSkmJkZpPjApYnJlYWs7JChLaSl8fChGaT1OZSl9TmUrK31yZXR1cm4gdXI9RXIuc3Vic3RyaW5nKGxyLE5lKSxGaT09PS0xPzEyOjExfWZ1bmN0aW9uIERlKCl7aWYoQyhHZSkpe2Zvcih2YXIgSWk9ITE7TmU8bjspe3ZhciBLaT1Fci5jaGFyQ29kZUF0KE5lKTtpZihLaT09PTQ1KXt1cis9XCItXCIsTmUrKztjb250aW51ZX1lbHNlIGlmKEtpPT09NTgmJiFJaSl7dXIrPVwiOlwiLE5lKyssSWk9ITAsR2U9Nzk7Y29udGludWV9dmFyIEZpPU5lO2lmKHVyKz1hZSgpLE5lPT09RmkpYnJlYWt9cmV0dXJuIHVyLnNsaWNlKC0xKT09PVwiOlwiJiYodXI9dXIuc2xpY2UoMCwtMSksTmUtLSksWGUoKX1yZXR1cm4gR2V9ZnVuY3Rpb24gZ3IoKXtzd2l0Y2gobHI9TmUsRXIuY2hhckNvZGVBdChOZSkpe2Nhc2UgMzQ6Y2FzZSAzOTpyZXR1cm4gdXI9WGkoITApLEdlPTEwO2RlZmF1bHQ6cmV0dXJuIFplKCl9fWZ1bmN0aW9uIFZyKCl7cmV0dXJuIE5lPWJlPWxyLGdyKCl9ZnVuY3Rpb24gVHIoKXtpZihscj1iZT1OZSx5cj0wLE5lPj1uKXJldHVybiBHZT0xO3ZhciBJaT1ycihFcixOZSk7c3dpdGNoKE5lKz1JZShJaSksSWkpe2Nhc2UgOTpjYXNlIDExOmNhc2UgMTI6Y2FzZSAzMjpmb3IoO05lPG4mJkEoRXIuY2hhckNvZGVBdChOZSkpOylOZSsrO3JldHVybiBHZT01O2Nhc2UgNjQ6cmV0dXJuIEdlPTU5O2Nhc2UgMTM6RXIuY2hhckNvZGVBdChOZSk9PT0xMCYmTmUrKztjYXNlIDEwOnJldHVybiB5cnw9MSxHZT00O2Nhc2UgNDI6cmV0dXJuIEdlPTQxO2Nhc2UgMTIzOnJldHVybiBHZT0xODtjYXNlIDEyNTpyZXR1cm4gR2U9MTk7Y2FzZSA5MTpyZXR1cm4gR2U9MjI7Y2FzZSA5MzpyZXR1cm4gR2U9MjM7Y2FzZSA2MDpyZXR1cm4gR2U9Mjk7Y2FzZSA2MjpyZXR1cm4gR2U9MzE7Y2FzZSA2MTpyZXR1cm4gR2U9NjM7Y2FzZSA0NDpyZXR1cm4gR2U9Mjc7Y2FzZSA0NjpyZXR1cm4gR2U9MjQ7Y2FzZSA5NjpyZXR1cm4gR2U9NjE7Y2FzZSAzNTpyZXR1cm4gR2U9NjI7Y2FzZSA5MjpOZS0tO3ZhciBLaT1waSgpO2lmKEtpPj0wJiZSZShLaSx5ZSkpcmV0dXJuIE5lKz0zLHlyfD04LHVyPVp0KCkrYWUoKSxHZT1YZSgpO3ZhciBGaT1fcigpO3JldHVybiBGaT49MCYmUmUoRmkseWUpPyhOZSs9Nix5cnw9MTAyNCx1cj1TdHJpbmcuZnJvbUNoYXJDb2RlKEZpKSthZSgpLEdlPVhlKCkpOihOZSsrLEdlPTApfWlmKFJlKElpLHllKSl7Zm9yKHZhciB1aT1JaTtOZTxuJiZ6ZSh1aT1ycihFcixOZSkseWUpfHxFci5jaGFyQ29kZUF0KE5lKT09PTQ1OylOZSs9SWUodWkpO3JldHVybiB1cj1Fci5zdWJzdHJpbmcoYmUsTmUpLHVpPT09OTImJih1cis9YWUoKSksR2U9WGUoKX1lbHNlIHJldHVybiBHZT0wfWZ1bmN0aW9uIHZpKElpLEtpKXt2YXIgRmk9TmUsdWk9bHIsQnQ9YmUsd3Q9R2UsbmE9dXIsQWk9eXIsT2k9SWkoKTtyZXR1cm4oIU9pfHxLaSkmJihOZT1GaSxscj11aSxiZT1CdCxHZT13dCx1cj1uYSx5cj1BaSksT2l9ZnVuY3Rpb24gVWkoSWksS2ksRmkpe3ZhciB1aT1uLEJ0PU5lLHd0PWxyLG5hPWJlLEFpPUdlLE9pPXVyLGppPXlyLFZpPUlyO250KEVyLElpLEtpKTt2YXIgYXQ9RmkoKTtyZXR1cm4gbj11aSxOZT1CdCxscj13dCxiZT1uYSxHZT1BaSx1cj1PaSx5cj1qaSxJcj1WaSxhdH1mdW5jdGlvbiBZaShJaSl7cmV0dXJuIHZpKElpLCEwKX1mdW5jdGlvbiBXaShJaSl7cmV0dXJuIHZpKElpLCExKX1mdW5jdGlvbiBjdCgpe3JldHVybiBFcn1mdW5jdGlvbiBMaSgpe0lyPXZvaWQgMH1mdW5jdGlvbiBudChJaSxLaSxGaSl7RXI9SWl8fFwiXCIsbj1GaT09PXZvaWQgMD9Fci5sZW5ndGg6S2krRmksRHQoS2l8fDApfWZ1bmN0aW9uIE10KElpKXtDcj1JaX1mdW5jdGlvbiB4dChJaSl7eWU9SWl9ZnVuY3Rpb24gdXQoSWkpe2VyPUlpfWZ1bmN0aW9uIER0KElpKXtlLkRlYnVnLmFzc2VydChJaT49MCksTmU9SWksbHI9SWksYmU9SWksR2U9MCx1cj12b2lkIDAseXI9MH1mdW5jdGlvbiBSdChJaSl7d3IrPUlpPzE6LTF9fWUuY3JlYXRlU2Nhbm5lcj1IZTt2YXIgcnI9U3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdD9mdW5jdGlvbih5ZSxBZSl7cmV0dXJuIHllLmNvZGVQb2ludEF0KEFlKX06ZnVuY3Rpb24oQWUsZXIpe3ZhciBpcj1BZS5sZW5ndGg7aWYoIShlcjwwfHxlcj49aXIpKXt2YXIgQ3I9QWUuY2hhckNvZGVBdChlcik7aWYoQ3I+PTU1Mjk2JiZDcjw9NTYzMTkmJmlyPmVyKzEpe3ZhciBZZT1BZS5jaGFyQ29kZUF0KGVyKzEpO2lmKFllPj01NjMyMCYmWWU8PTU3MzQzKXJldHVybihDci01NTI5NikqMTAyNCtZZS01NjMyMCs2NTUzNn1yZXR1cm4gQ3J9fTtmdW5jdGlvbiBJZSh5ZSl7cmV0dXJuIHllPj02NTUzNj8yOjF9ZnVuY3Rpb24gX2UoeWUpe2lmKGUuRGVidWcuYXNzZXJ0KDA8PXllJiZ5ZTw9MTExNDExMSkseWU8PTY1NTM1KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHllKTt2YXIgQWU9TWF0aC5mbG9vcigoeWUtNjU1MzYpLzEwMjQpKzU1Mjk2LGVyPSh5ZS02NTUzNiklMTAyNCs1NjMyMDtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShBZSxlcil9dmFyIHdlPVN0cmluZy5mcm9tQ29kZVBvaW50P2Z1bmN0aW9uKHllKXtyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoeWUpfTpfZTtmdW5jdGlvbiBkZSh5ZSl7cmV0dXJuIHdlKHllKX1lLnV0ZjE2RW5jb2RlQXNTdHJpbmc9ZGV9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKGplKXtyZXR1cm4gZS5wYXRoSXNSZWxhdGl2ZShqZSl8fGUuaXNSb290ZWREaXNrUGF0aChqZSl9ZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlPWE7ZnVuY3Rpb24gQyhqZSl7cmV0dXJuIGUuc29ydEFuZERlZHVwbGljYXRlKGplLGUuY29tcGFyZURpYWdub3N0aWNzKX1lLnNvcnRBbmREZWR1cGxpY2F0ZURpYWdub3N0aWNzPUM7ZnVuY3Rpb24gdyhqZSl7c3dpdGNoKGUuZ2V0RW1pdFNjcmlwdFRhcmdldChqZSkpe2Nhc2UgOTk6cmV0dXJuXCJsaWIuZXNuZXh0LmZ1bGwuZC50c1wiO2Nhc2UgOTpyZXR1cm5cImxpYi5lczIwMjIuZnVsbC5kLnRzXCI7Y2FzZSA4OnJldHVyblwibGliLmVzMjAyMS5mdWxsLmQudHNcIjtjYXNlIDc6cmV0dXJuXCJsaWIuZXMyMDIwLmZ1bGwuZC50c1wiO2Nhc2UgNjpyZXR1cm5cImxpYi5lczIwMTkuZnVsbC5kLnRzXCI7Y2FzZSA1OnJldHVyblwibGliLmVzMjAxOC5mdWxsLmQudHNcIjtjYXNlIDQ6cmV0dXJuXCJsaWIuZXMyMDE3LmZ1bGwuZC50c1wiO2Nhc2UgMzpyZXR1cm5cImxpYi5lczIwMTYuZnVsbC5kLnRzXCI7Y2FzZSAyOnJldHVyblwibGliLmVzNi5kLnRzXCI7ZGVmYXVsdDpyZXR1cm5cImxpYi5kLnRzXCJ9fWUuZ2V0RGVmYXVsdExpYkZpbGVOYW1lPXc7ZnVuY3Rpb24gQihqZSl7cmV0dXJuIGplLnN0YXJ0K2plLmxlbmd0aH1lLnRleHRTcGFuRW5kPUI7ZnVuY3Rpb24gRShqZSl7cmV0dXJuIGplLmxlbmd0aD09PTB9ZS50ZXh0U3BhbklzRW1wdHk9RTtmdW5jdGlvbiBRKGplLEhyKXtyZXR1cm4gSHI+PWplLnN0YXJ0JiZIcjxCKGplKX1lLnRleHRTcGFuQ29udGFpbnNQb3NpdGlvbj1RO2Z1bmN0aW9uIGxlKGplLEhyKXtyZXR1cm4gSHI+PWplLnBvcyYmSHI8PWplLmVuZH1lLnRleHRSYW5nZUNvbnRhaW5zUG9zaXRpb25JbmNsdXNpdmU9bGU7ZnVuY3Rpb24gTihqZSxIcil7cmV0dXJuIEhyLnN0YXJ0Pj1qZS5zdGFydCYmQihIcik8PUIoamUpfWUudGV4dFNwYW5Db250YWluc1RleHRTcGFuPU47ZnVuY3Rpb24gcChqZSxIcil7cmV0dXJuIG0oamUsSHIpIT09dm9pZCAwfWUudGV4dFNwYW5PdmVybGFwc1dpdGg9cDtmdW5jdGlvbiBtKGplLEhyKXt2YXIgcHQ9SyhqZSxIcik7cmV0dXJuIHB0JiZwdC5sZW5ndGg9PT0wP3ZvaWQgMDpwdH1lLnRleHRTcGFuT3ZlcmxhcD1tO2Z1bmN0aW9uIEcoamUsSHIpe3JldHVybiBmKGplLnN0YXJ0LGplLmxlbmd0aCxIci5zdGFydCxIci5sZW5ndGgpfWUudGV4dFNwYW5JbnRlcnNlY3RzV2l0aFRleHRTcGFuPUc7ZnVuY3Rpb24gb2UoamUsSHIscHQpe3JldHVybiBmKGplLnN0YXJ0LGplLmxlbmd0aCxIcixwdCl9ZS50ZXh0U3BhbkludGVyc2VjdHNXaXRoPW9lO2Z1bmN0aW9uIGYoamUsSHIscHQsUHQpe3ZhciBnYT1qZStIcix1YT1wdCtQdDtyZXR1cm4gcHQ8PWdhJiZ1YT49amV9ZS5kZWNvZGVkVGV4dFNwYW5JbnRlcnNlY3RzV2l0aD1mO2Z1bmN0aW9uIFQoamUsSHIpe3JldHVybiBIcjw9QihqZSkmJkhyPj1qZS5zdGFydH1lLnRleHRTcGFuSW50ZXJzZWN0c1dpdGhQb3NpdGlvbj1UO2Z1bmN0aW9uIEsoamUsSHIpe3ZhciBwdD1NYXRoLm1heChqZS5zdGFydCxIci5zdGFydCksUHQ9TWF0aC5taW4oQihqZSksQihIcikpO3JldHVybiBwdDw9UHQ/c2UocHQsUHQpOnZvaWQgMH1lLnRleHRTcGFuSW50ZXJzZWN0aW9uPUs7ZnVuY3Rpb24gYihqZSxIcil7aWYoamU8MCl0aHJvdyBuZXcgRXJyb3IoXCJzdGFydCA8IDBcIik7aWYoSHI8MCl0aHJvdyBuZXcgRXJyb3IoXCJsZW5ndGggPCAwXCIpO3JldHVybntzdGFydDpqZSxsZW5ndGg6SHJ9fWUuY3JlYXRlVGV4dFNwYW49YjtmdW5jdGlvbiBzZShqZSxIcil7cmV0dXJuIGIoamUsSHItamUpfWUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzPXNlO2Z1bmN0aW9uIEooamUpe3JldHVybiBiKGplLnNwYW4uc3RhcnQsamUubmV3TGVuZ3RoKX1lLnRleHRDaGFuZ2VSYW5nZU5ld1NwYW49SjtmdW5jdGlvbiBpZShqZSl7cmV0dXJuIEUoamUuc3BhbikmJmplLm5ld0xlbmd0aD09PTB9ZS50ZXh0Q2hhbmdlUmFuZ2VJc1VuY2hhbmdlZD1pZTtmdW5jdGlvbiBSKGplLEhyKXtpZihIcjwwKXRocm93IG5ldyBFcnJvcihcIm5ld0xlbmd0aCA8IDBcIik7cmV0dXJue3NwYW46amUsbmV3TGVuZ3RoOkhyfX1lLmNyZWF0ZVRleHRDaGFuZ2VSYW5nZT1SLGUudW5jaGFuZ2VkVGV4dENoYW5nZVJhbmdlPVIoYigwLDApLDApO2Z1bmN0aW9uIHEoamUpe2lmKGplLmxlbmd0aD09PTApcmV0dXJuIGUudW5jaGFuZ2VkVGV4dENoYW5nZVJhbmdlO2lmKGplLmxlbmd0aD09PTEpcmV0dXJuIGplWzBdO2Zvcih2YXIgSHI9amVbMF0scHQ9SHIuc3Bhbi5zdGFydCxQdD1CKEhyLnNwYW4pLGdhPXB0K0hyLm5ld0xlbmd0aCx1YT0xO3VhPGplLmxlbmd0aDt1YSsrKXt2YXIgWG49amVbdWFdLGpyPXB0LGZvPVB0LHhzPWdhLEZvPVhuLnNwYW4uc3RhcnQsa289QihYbi5zcGFuKSxBbz1GbytYbi5uZXdMZW5ndGg7cHQ9TWF0aC5taW4oanIsRm8pLFB0PU1hdGgubWF4KGZvLGZvKyhrby14cykpLGdhPU1hdGgubWF4KEFvLEFvKyh4cy1rbykpfXJldHVybiBSKHNlKHB0LFB0KSxnYS1wdCl9ZS5jb2xsYXBzZVRleHRDaGFuZ2VSYW5nZXNBY3Jvc3NNdWx0aXBsZVZlcnNpb25zPXE7ZnVuY3Rpb24gTyhqZSl7aWYoamUmJmplLmtpbmQ9PT0xNjMpe2Zvcih2YXIgSHI9amU7SHI7SHI9SHIucGFyZW50KWlmKER0KEhyKXx8bmEoSHIpfHxIci5raW5kPT09MjU4KXJldHVybiBIcn19ZS5nZXRUeXBlUGFyYW1ldGVyT3duZXI9TztmdW5jdGlvbiB2ZShqZSxIcil7cmV0dXJuIGUuaGFzU3ludGFjdGljTW9kaWZpZXIoamUsMTY0NzYpJiZIci5raW5kPT09MTcxfWUuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uPXZlO2Z1bmN0aW9uIGVlKGplKXtyZXR1cm4gJGEoamUpP2UuZXZlcnkoamUuZWxlbWVudHMsaGUpOiExfWUuaXNFbXB0eUJpbmRpbmdQYXR0ZXJuPWVlO2Z1bmN0aW9uIGhlKGplKXtyZXR1cm4gZS5pc09taXR0ZWRFeHByZXNzaW9uKGplKT8hMDplZShqZS5uYW1lKX1lLmlzRW1wdHlCaW5kaW5nRWxlbWVudD1oZTtmdW5jdGlvbiBGKGplKXtmb3IodmFyIEhyPWplLnBhcmVudDtlLmlzQmluZGluZ0VsZW1lbnQoSHIucGFyZW50KTspSHI9SHIucGFyZW50LnBhcmVudDtyZXR1cm4gSHIucGFyZW50fWUud2Fsa1VwQmluZGluZ0VsZW1lbnRzQW5kUGF0dGVybnM9RjtmdW5jdGlvbiB4KGplLEhyKXtlLmlzQmluZGluZ0VsZW1lbnQoamUpJiYoamU9RihqZSkpO3ZhciBwdD1IcihqZSk7cmV0dXJuIGplLmtpbmQ9PT0yNTQmJihqZT1qZS5wYXJlbnQpLGplJiZqZS5raW5kPT09MjU1JiYocHR8PUhyKGplKSxqZT1qZS5wYXJlbnQpLGplJiZqZS5raW5kPT09MjM3JiYocHR8PUhyKGplKSkscHR9ZnVuY3Rpb24gWChqZSl7cmV0dXJuIHgoamUsZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKX1lLmdldENvbWJpbmVkTW9kaWZpZXJGbGFncz1YO2Z1bmN0aW9uICQoamUpe3JldHVybiB4KGplLGUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFnc0Fsd2F5c0luY2x1ZGVKU0RvYyl9ZS5nZXRDb21iaW5lZE5vZGVGbGFnc0Fsd2F5c0luY2x1ZGVKU0RvYz0kO2Z1bmN0aW9uIEEoamUpe3JldHVybiB4KGplLGZ1bmN0aW9uKEhyKXtyZXR1cm4gSHIuZmxhZ3N9KX1lLmdldENvbWJpbmVkTm9kZUZsYWdzPUEsZS5zdXBwb3J0ZWRMb2NhbGVEaXJlY3Rvcmllcz1bXCJjc1wiLFwiZGVcIixcImVzXCIsXCJmclwiLFwiaXRcIixcImphXCIsXCJrb1wiLFwicGxcIixcInB0LWJyXCIsXCJydVwiLFwidHJcIixcInpoLWNuXCIsXCJ6aC10d1wiXTtmdW5jdGlvbiB5KGplLEhyLHB0KXt2YXIgUHQ9amUudG9Mb3dlckNhc2UoKSxnYT0vXihbYS16XSspKFtfXFwtXShbYS16XSspKT8kLy5leGVjKFB0KTtpZighZ2Epe3B0JiZwdC5wdXNoKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGUuRGlhZ25vc3RpY3MuTG9jYWxlX211c3RfYmVfb2ZfdGhlX2Zvcm1fbGFuZ3VhZ2Vfb3JfbGFuZ3VhZ2VfdGVycml0b3J5X0Zvcl9leGFtcGxlXzBfb3JfMSxcImVuXCIsXCJqYS1qcFwiKSk7cmV0dXJufXZhciB1YT1nYVsxXSxYbj1nYVszXTtlLmNvbnRhaW5zKGUuc3VwcG9ydGVkTG9jYWxlRGlyZWN0b3JpZXMsUHQpJiYhanIodWEsWG4scHQpJiZqcih1YSx2b2lkIDAscHQpLGUuc2V0VUlMb2NhbGUoamUpO2Z1bmN0aW9uIGpyKGZvLHhzLEZvKXt2YXIga289ZS5ub3JtYWxpemVQYXRoKEhyLmdldEV4ZWN1dGluZ0ZpbGVQYXRoKCkpLEFvPWUuZ2V0RGlyZWN0b3J5UGF0aChrbyksTXM9ZS5jb21iaW5lUGF0aHMoQW8sZm8pO2lmKHhzJiYoTXM9TXMrXCItXCIreHMpLE1zPUhyLnJlc29sdmVQYXRoKGUuY29tYmluZVBhdGhzKE1zLFwiZGlhZ25vc3RpY01lc3NhZ2VzLmdlbmVyYXRlZC5qc29uXCIpKSwhSHIuZmlsZUV4aXN0cyhNcykpcmV0dXJuITE7dmFyIEJzPVwiXCI7dHJ5e0JzPUhyLnJlYWRGaWxlKE1zKX1jYXRjaHtyZXR1cm4gRm8mJkZvLnB1c2goZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoZS5EaWFnbm9zdGljcy5VbmFibGVfdG9fb3Blbl9maWxlXzAsTXMpKSwhMX10cnl7ZS5zZXRMb2NhbGl6ZWREaWFnbm9zdGljTWVzc2FnZXMoSlNPTi5wYXJzZShCcykpfWNhdGNoe3JldHVybiBGbyYmRm8ucHVzaChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLkNvcnJ1cHRlZF9sb2NhbGVfZmlsZV8wLE1zKSksITF9cmV0dXJuITB9fWUudmFsaWRhdGVMb2NhbGVBbmRTZXRMYW5ndWFnZT15O2Z1bmN0aW9uIFYoamUsSHIpe2lmKGplKWZvcig7amUub3JpZ2luYWwhPT12b2lkIDA7KWplPWplLm9yaWdpbmFsO3JldHVybiFIcnx8SHIoamUpP2plOnZvaWQgMH1lLmdldE9yaWdpbmFsTm9kZT1WO2Z1bmN0aW9uIEwoamUsSHIpe2Zvcig7amU7KXt2YXIgcHQ9SHIoamUpO2lmKHB0PT09XCJxdWl0XCIpcmV0dXJuO2lmKHB0KXJldHVybiBqZTtqZT1qZS5wYXJlbnR9fWUuZmluZEFuY2VzdG9yPUw7ZnVuY3Rpb24gUChqZSl7cmV0dXJuKGplLmZsYWdzJjgpPT09MH1lLmlzUGFyc2VUcmVlTm9kZT1QO2Z1bmN0aW9uIGsoamUsSHIpe2lmKGplPT09dm9pZCAwfHxQKGplKSlyZXR1cm4gamU7Zm9yKGplPWplLm9yaWdpbmFsO2plOyl7aWYoUChqZSkpcmV0dXJuIUhyfHxIcihqZSk/amU6dm9pZCAwO2plPWplLm9yaWdpbmFsfX1lLmdldFBhcnNlVHJlZU5vZGU9aztmdW5jdGlvbiBZKGplKXtyZXR1cm4gamUubGVuZ3RoPj0yJiZqZS5jaGFyQ29kZUF0KDApPT09OTUmJmplLmNoYXJDb2RlQXQoMSk9PT05NT9cIl9cIitqZTpqZX1lLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcz1ZO2Z1bmN0aW9uIFUoamUpe3ZhciBIcj1qZTtyZXR1cm4gSHIubGVuZ3RoPj0zJiZIci5jaGFyQ29kZUF0KDApPT09OTUmJkhyLmNoYXJDb2RlQXQoMSk9PT05NSYmSHIuY2hhckNvZGVBdCgyKT09PTk1P0hyLnN1YnN0cigxKTpIcn1lLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzPVU7ZnVuY3Rpb24gaihqZSl7cmV0dXJuIFUoamUuZXNjYXBlZFRleHQpfWUuaWRUZXh0PWo7ZnVuY3Rpb24gSChqZSl7cmV0dXJuIGplLnZhbHVlRGVjbGFyYXRpb24mJlVpKGplLnZhbHVlRGVjbGFyYXRpb24pP2ooamUudmFsdWVEZWNsYXJhdGlvbi5uYW1lKTpVKGplLmVzY2FwZWROYW1lKX1lLnN5bWJvbE5hbWU9SDtmdW5jdGlvbiBJKGplKXt2YXIgSHI9amUucGFyZW50LnBhcmVudDtpZighIUhyKXtpZihTaShIcikpcmV0dXJuIGwoSHIpO3N3aXRjaChIci5raW5kKXtjYXNlIDIzNzppZihIci5kZWNsYXJhdGlvbkxpc3QmJkhyLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnNbMF0pcmV0dXJuIGwoSHIuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9uc1swXSk7YnJlYWs7Y2FzZSAyMzg6dmFyIHB0PUhyLmV4cHJlc3Npb247c3dpdGNoKHB0LmtpbmQ9PT0yMjEmJnB0Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzJiYocHQ9cHQubGVmdCkscHQua2luZCl7Y2FzZSAyMDY6cmV0dXJuIHB0Lm5hbWU7Y2FzZSAyMDc6dmFyIFB0PXB0LmFyZ3VtZW50RXhwcmVzc2lvbjtpZihlLmlzSWRlbnRpZmllcihQdCkpcmV0dXJuIFB0fWJyZWFrO2Nhc2UgMjEyOnJldHVybiBsKEhyLmV4cHJlc3Npb24pO2Nhc2UgMjUwOntpZihTaShIci5zdGF0ZW1lbnQpfHxFbihIci5zdGF0ZW1lbnQpKXJldHVybiBsKEhyLnN0YXRlbWVudCk7YnJlYWt9fX19ZnVuY3Rpb24gbChqZSl7dmFyIEhyPW5lKGplKTtyZXR1cm4gSHImJmUuaXNJZGVudGlmaWVyKEhyKT9Icjp2b2lkIDB9ZnVuY3Rpb24gZChqZSxIcil7cmV0dXJuISEoZmUoamUpJiZlLmlzSWRlbnRpZmllcihqZS5uYW1lKSYmaihqZS5uYW1lKT09PWooSHIpfHxlLmlzVmFyaWFibGVTdGF0ZW1lbnQoamUpJiZlLnNvbWUoamUuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucyxmdW5jdGlvbihwdCl7cmV0dXJuIGQocHQsSHIpfSkpfWUubm9kZUhhc05hbWU9ZDtmdW5jdGlvbiBEKGplKXtyZXR1cm4gamUubmFtZXx8SShqZSl9ZS5nZXROYW1lT2ZKU0RvY1R5cGVkZWY9RDtmdW5jdGlvbiBmZShqZSl7cmV0dXJuISFqZS5uYW1lfWUuaXNOYW1lZERlY2xhcmF0aW9uPWZlO2Z1bmN0aW9uIGcoamUpe3N3aXRjaChqZS5raW5kKXtjYXNlIDc5OnJldHVybiBqZTtjYXNlIDM0NzpjYXNlIDM0MDp7dmFyIEhyPWplLm5hbWU7aWYoSHIua2luZD09PTE2MSlyZXR1cm4gSHIucmlnaHQ7YnJlYWt9Y2FzZSAyMDg6Y2FzZSAyMjE6e3ZhciBwdD1qZTtzd2l0Y2goZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHB0KSl7Y2FzZSAxOmNhc2UgNDpjYXNlIDU6Y2FzZSAzOnJldHVybiBlLmdldEVsZW1lbnRPclByb3BlcnR5QWNjZXNzQXJndW1lbnRFeHByZXNzaW9uT3JOYW1lKHB0LmxlZnQpO2Nhc2UgNzpjYXNlIDg6Y2FzZSA5OnJldHVybiBwdC5hcmd1bWVudHNbMV07ZGVmYXVsdDpyZXR1cm59fWNhc2UgMzQ1OnJldHVybiBEKGplKTtjYXNlIDMzOTpyZXR1cm4gSShqZSk7Y2FzZSAyNzE6e3ZhciBQdD1qZS5leHByZXNzaW9uO3JldHVybiBlLmlzSWRlbnRpZmllcihQdCk/UHQ6dm9pZCAwfWNhc2UgMjA3OnZhciBnYT1qZTtpZihlLmlzQmluZGFibGVTdGF0aWNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihnYSkpcmV0dXJuIGdhLmFyZ3VtZW50RXhwcmVzc2lvbn1yZXR1cm4gamUubmFtZX1lLmdldE5vbkFzc2lnbmVkTmFtZU9mRGVjbGFyYXRpb249ZztmdW5jdGlvbiBuZShqZSl7aWYoamUhPT12b2lkIDApcmV0dXJuIGcoamUpfHwoZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihqZSl8fGUuaXNBcnJvd0Z1bmN0aW9uKGplKXx8ZS5pc0NsYXNzRXhwcmVzc2lvbihqZSk/dWUoamUpOnZvaWQgMCl9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbj1uZTtmdW5jdGlvbiB1ZShqZSl7aWYoamUucGFyZW50KXtpZihlLmlzUHJvcGVydHlBc3NpZ25tZW50KGplLnBhcmVudCl8fGUuaXNCaW5kaW5nRWxlbWVudChqZS5wYXJlbnQpKXJldHVybiBqZS5wYXJlbnQubmFtZTtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihqZS5wYXJlbnQpJiZqZT09PWplLnBhcmVudC5yaWdodCl7aWYoZS5pc0lkZW50aWZpZXIoamUucGFyZW50LmxlZnQpKXJldHVybiBqZS5wYXJlbnQubGVmdDtpZihlLmlzQWNjZXNzRXhwcmVzc2lvbihqZS5wYXJlbnQubGVmdCkpcmV0dXJuIGUuZ2V0RWxlbWVudE9yUHJvcGVydHlBY2Nlc3NBcmd1bWVudEV4cHJlc3Npb25Pck5hbWUoamUucGFyZW50LmxlZnQpfWVsc2UgaWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oamUucGFyZW50KSYmZS5pc0lkZW50aWZpZXIoamUucGFyZW50Lm5hbWUpKXJldHVybiBqZS5wYXJlbnQubmFtZX1lbHNlIHJldHVybn1lLmdldEFzc2lnbmVkTmFtZT11ZTtmdW5jdGlvbiBXZShqZSxIcil7aWYoamUubmFtZSlpZihlLmlzSWRlbnRpZmllcihqZS5uYW1lKSl7dmFyIHB0PWplLm5hbWUuZXNjYXBlZFRleHQ7cmV0dXJuIHlyKGplLnBhcmVudCxIcikuZmlsdGVyKGZ1bmN0aW9uKHVhKXtyZXR1cm4gZS5pc0pTRG9jUGFyYW1ldGVyVGFnKHVhKSYmZS5pc0lkZW50aWZpZXIodWEubmFtZSkmJnVhLm5hbWUuZXNjYXBlZFRleHQ9PT1wdH0pfWVsc2V7dmFyIFB0PWplLnBhcmVudC5wYXJhbWV0ZXJzLmluZGV4T2YoamUpO2UuRGVidWcuYXNzZXJ0KFB0Pi0xLFwiUGFyYW1ldGVycyBzaG91bGQgYWx3YXlzIGJlIGluIHRoZWlyIHBhcmVudHMnIHBhcmFtZXRlciBsaXN0XCIpO3ZhciBnYT15cihqZS5wYXJlbnQsSHIpLmZpbHRlcihlLmlzSlNEb2NQYXJhbWV0ZXJUYWcpO2lmKFB0PGdhLmxlbmd0aClyZXR1cm5bZ2FbUHRdXX1yZXR1cm4gZS5lbXB0eUFycmF5fWZ1bmN0aW9uIEZlKGplKXtyZXR1cm4gV2UoamUsITEpfWUuZ2V0SlNEb2NQYXJhbWV0ZXJUYWdzPUZlO2Z1bmN0aW9uIFooamUpe3JldHVybiBXZShqZSwhMCl9ZS5nZXRKU0RvY1BhcmFtZXRlclRhZ3NOb0NhY2hlPVo7ZnVuY3Rpb24gQmUoamUsSHIpe3ZhciBwdD1qZS5uYW1lLmVzY2FwZWRUZXh0O3JldHVybiB5cihqZS5wYXJlbnQsSHIpLmZpbHRlcihmdW5jdGlvbihQdCl7cmV0dXJuIGUuaXNKU0RvY1RlbXBsYXRlVGFnKFB0KSYmUHQudHlwZVBhcmFtZXRlcnMuc29tZShmdW5jdGlvbihnYSl7cmV0dXJuIGdhLm5hbWUuZXNjYXBlZFRleHQ9PT1wdH0pfSl9ZnVuY3Rpb24gZ2UoamUpe3JldHVybiBCZShqZSwhMSl9ZS5nZXRKU0RvY1R5cGVQYXJhbWV0ZXJUYWdzPWdlO2Z1bmN0aW9uIFJlKGplKXtyZXR1cm4gQmUoamUsITApfWUuZ2V0SlNEb2NUeXBlUGFyYW1ldGVyVGFnc05vQ2FjaGU9UmU7ZnVuY3Rpb24gemUoamUpe3JldHVybiEhVXIoamUsZS5pc0pTRG9jUGFyYW1ldGVyVGFnKX1lLmhhc0pTRG9jUGFyYW1ldGVyVGFncz16ZTtmdW5jdGlvbiBFZShqZSl7cmV0dXJuIFVyKGplLGUuaXNKU0RvY0F1Z21lbnRzVGFnKX1lLmdldEpTRG9jQXVnbWVudHNUYWc9RWU7ZnVuY3Rpb24gSGUoamUpe3JldHVybiBpaShqZSxlLmlzSlNEb2NJbXBsZW1lbnRzVGFnKX1lLmdldEpTRG9jSW1wbGVtZW50c1RhZ3M9SGU7ZnVuY3Rpb24gcnIoamUpe3JldHVybiBVcihqZSxlLmlzSlNEb2NDbGFzc1RhZyl9ZS5nZXRKU0RvY0NsYXNzVGFnPXJyO2Z1bmN0aW9uIEllKGplKXtyZXR1cm4gVXIoamUsZS5pc0pTRG9jUHVibGljVGFnKX1lLmdldEpTRG9jUHVibGljVGFnPUllO2Z1bmN0aW9uIF9lKGplKXtyZXR1cm4gVXIoamUsZS5pc0pTRG9jUHVibGljVGFnLCEwKX1lLmdldEpTRG9jUHVibGljVGFnTm9DYWNoZT1fZTtmdW5jdGlvbiB3ZShqZSl7cmV0dXJuIFVyKGplLGUuaXNKU0RvY1ByaXZhdGVUYWcpfWUuZ2V0SlNEb2NQcml2YXRlVGFnPXdlO2Z1bmN0aW9uIGRlKGplKXtyZXR1cm4gVXIoamUsZS5pc0pTRG9jUHJpdmF0ZVRhZywhMCl9ZS5nZXRKU0RvY1ByaXZhdGVUYWdOb0NhY2hlPWRlO2Z1bmN0aW9uIHllKGplKXtyZXR1cm4gVXIoamUsZS5pc0pTRG9jUHJvdGVjdGVkVGFnKX1lLmdldEpTRG9jUHJvdGVjdGVkVGFnPXllO2Z1bmN0aW9uIEFlKGplKXtyZXR1cm4gVXIoamUsZS5pc0pTRG9jUHJvdGVjdGVkVGFnLCEwKX1lLmdldEpTRG9jUHJvdGVjdGVkVGFnTm9DYWNoZT1BZTtmdW5jdGlvbiBlcihqZSl7cmV0dXJuIFVyKGplLGUuaXNKU0RvY1JlYWRvbmx5VGFnKX1lLmdldEpTRG9jUmVhZG9ubHlUYWc9ZXI7ZnVuY3Rpb24gaXIoamUpe3JldHVybiBVcihqZSxlLmlzSlNEb2NSZWFkb25seVRhZywhMCl9ZS5nZXRKU0RvY1JlYWRvbmx5VGFnTm9DYWNoZT1pcjtmdW5jdGlvbiBDcihqZSl7cmV0dXJuIFVyKGplLGUuaXNKU0RvY092ZXJyaWRlVGFnLCEwKX1lLmdldEpTRG9jT3ZlcnJpZGVUYWdOb0NhY2hlPUNyO2Z1bmN0aW9uIFllKGplKXtyZXR1cm4gVXIoamUsZS5pc0pTRG9jRGVwcmVjYXRlZFRhZyl9ZS5nZXRKU0RvY0RlcHJlY2F0ZWRUYWc9WWU7ZnVuY3Rpb24gQnIoamUpe3JldHVybiBVcihqZSxlLmlzSlNEb2NEZXByZWNhdGVkVGFnLCEwKX1lLmdldEpTRG9jRGVwcmVjYXRlZFRhZ05vQ2FjaGU9QnI7ZnVuY3Rpb24gRXIoamUpe3JldHVybiBVcihqZSxlLmlzSlNEb2NFbnVtVGFnKX1lLmdldEpTRG9jRW51bVRhZz1FcjtmdW5jdGlvbiBOZShqZSl7cmV0dXJuIFVyKGplLGUuaXNKU0RvY1RoaXNUYWcpfWUuZ2V0SlNEb2NUaGlzVGFnPU5lO2Z1bmN0aW9uIG4oamUpe3JldHVybiBVcihqZSxlLmlzSlNEb2NSZXR1cm5UYWcpfWUuZ2V0SlNEb2NSZXR1cm5UYWc9bjtmdW5jdGlvbiBscihqZSl7cmV0dXJuIFVyKGplLGUuaXNKU0RvY1RlbXBsYXRlVGFnKX1lLmdldEpTRG9jVGVtcGxhdGVUYWc9bHI7ZnVuY3Rpb24gYmUoamUpe3ZhciBIcj1VcihqZSxlLmlzSlNEb2NUeXBlVGFnKTtpZihIciYmSHIudHlwZUV4cHJlc3Npb24mJkhyLnR5cGVFeHByZXNzaW9uLnR5cGUpcmV0dXJuIEhyfWUuZ2V0SlNEb2NUeXBlVGFnPWJlO2Z1bmN0aW9uIEdlKGplKXt2YXIgSHI9VXIoamUsZS5pc0pTRG9jVHlwZVRhZyk7cmV0dXJuIUhyJiZlLmlzUGFyYW1ldGVyKGplKSYmKEhyPWUuZmluZChGZShqZSksZnVuY3Rpb24ocHQpe3JldHVybiEhcHQudHlwZUV4cHJlc3Npb259KSksSHImJkhyLnR5cGVFeHByZXNzaW9uJiZIci50eXBlRXhwcmVzc2lvbi50eXBlfWUuZ2V0SlNEb2NUeXBlPUdlO2Z1bmN0aW9uIHVyKGplKXt2YXIgSHI9bihqZSk7aWYoSHImJkhyLnR5cGVFeHByZXNzaW9uKXJldHVybiBIci50eXBlRXhwcmVzc2lvbi50eXBlO3ZhciBwdD1iZShqZSk7aWYocHQmJnB0LnR5cGVFeHByZXNzaW9uKXt2YXIgUHQ9cHQudHlwZUV4cHJlc3Npb24udHlwZTtpZihlLmlzVHlwZUxpdGVyYWxOb2RlKFB0KSl7dmFyIGdhPWUuZmluZChQdC5tZW1iZXJzLGUuaXNDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb24pO3JldHVybiBnYSYmZ2EudHlwZX1pZihlLmlzRnVuY3Rpb25UeXBlTm9kZShQdCl8fGUuaXNKU0RvY0Z1bmN0aW9uVHlwZShQdCkpcmV0dXJuIFB0LnR5cGV9fWUuZ2V0SlNEb2NSZXR1cm5UeXBlPXVyO2Z1bmN0aW9uIHlyKGplLEhyKXt2YXIgcHQ9amUuanNEb2NDYWNoZTtpZihwdD09PXZvaWQgMHx8SHIpe3ZhciBQdD1lLmdldEpTRG9jQ29tbWVudHNBbmRUYWdzKGplLEhyKTtlLkRlYnVnLmFzc2VydChQdC5sZW5ndGg8Mnx8UHRbMF0hPT1QdFsxXSkscHQ9ZS5mbGF0TWFwKFB0LGZ1bmN0aW9uKGdhKXtyZXR1cm4gZS5pc0pTRG9jKGdhKT9nYS50YWdzOmdhfSksSHJ8fChqZS5qc0RvY0NhY2hlPXB0KX1yZXR1cm4gcHR9ZnVuY3Rpb24gSXIoamUpe3JldHVybiB5cihqZSwhMSl9ZS5nZXRKU0RvY1RhZ3M9SXI7ZnVuY3Rpb24gd3IoamUpe3JldHVybiB5cihqZSwhMCl9ZS5nZXRKU0RvY1RhZ3NOb0NhY2hlPXdyO2Z1bmN0aW9uIFVyKGplLEhyLHB0KXtyZXR1cm4gZS5maW5kKHlyKGplLHB0KSxIcil9ZnVuY3Rpb24gaWkoamUsSHIpe3JldHVybiBJcihqZSkuZmlsdGVyKEhyKX1lLmdldEFsbEpTRG9jVGFncz1paTtmdW5jdGlvbiBtaShqZSxIcil7cmV0dXJuIElyKGplKS5maWx0ZXIoZnVuY3Rpb24ocHQpe3JldHVybiBwdC5raW5kPT09SHJ9KX1lLmdldEFsbEpTRG9jVGFnc09mS2luZD1taTtmdW5jdGlvbiBwZShqZSl7cmV0dXJuIHR5cGVvZiBqZT09XCJzdHJpbmdcIj9qZTpqZT09bnVsbD92b2lkIDA6amUubWFwKGZ1bmN0aW9uKEhyKXtyZXR1cm4gSHIua2luZD09PTMyMT9Ici50ZXh0Om9yKEhyKX0pLmpvaW4oXCJcIil9ZS5nZXRUZXh0T2ZKU0RvY0NvbW1lbnQ9cGU7ZnVuY3Rpb24gb3IoamUpe3ZhciBIcj1qZS5raW5kPT09MzI0P1wibGlua1wiOmplLmtpbmQ9PT0zMjU/XCJsaW5rY29kZVwiOlwibGlua3BsYWluXCIscHQ9amUubmFtZT9lLmVudGl0eU5hbWVUb1N0cmluZyhqZS5uYW1lKTpcIlwiLFB0PWplLm5hbWUmJmplLnRleHQuc3RhcnRzV2l0aChcIjovL1wiKT9cIlwiOlwiIFwiO3JldHVyblwie0BcIi5jb25jYXQoSHIsXCIgXCIpLmNvbmNhdChwdCkuY29uY2F0KFB0KS5jb25jYXQoamUudGV4dCxcIn1cIil9ZnVuY3Rpb24gcXIoamUpe2lmKGUuaXNKU0RvY1NpZ25hdHVyZShqZSkpcmV0dXJuIGUuZW1wdHlBcnJheTtpZihlLmlzSlNEb2NUeXBlQWxpYXMoamUpKXJldHVybiBlLkRlYnVnLmFzc2VydChqZS5wYXJlbnQua2luZD09PTMyMCksZS5mbGF0TWFwKGplLnBhcmVudC50YWdzLGZ1bmN0aW9uKFB0KXtyZXR1cm4gZS5pc0pTRG9jVGVtcGxhdGVUYWcoUHQpP1B0LnR5cGVQYXJhbWV0ZXJzOnZvaWQgMH0pO2lmKGplLnR5cGVQYXJhbWV0ZXJzKXJldHVybiBqZS50eXBlUGFyYW1ldGVycztpZihlLmlzSW5KU0ZpbGUoamUpKXt2YXIgSHI9ZS5nZXRKU0RvY1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnMoamUpO2lmKEhyLmxlbmd0aClyZXR1cm4gSHI7dmFyIHB0PUdlKGplKTtpZihwdCYmZS5pc0Z1bmN0aW9uVHlwZU5vZGUocHQpJiZwdC50eXBlUGFyYW1ldGVycylyZXR1cm4gcHQudHlwZVBhcmFtZXRlcnN9cmV0dXJuIGUuZW1wdHlBcnJheX1lLmdldEVmZmVjdGl2ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnM9cXI7ZnVuY3Rpb24gc2koamUpe3JldHVybiBqZS5jb25zdHJhaW50P2plLmNvbnN0cmFpbnQ6ZS5pc0pTRG9jVGVtcGxhdGVUYWcoamUucGFyZW50KSYmamU9PT1qZS5wYXJlbnQudHlwZVBhcmFtZXRlcnNbMF0/amUucGFyZW50LmNvbnN0cmFpbnQ6dm9pZCAwfWUuZ2V0RWZmZWN0aXZlQ29uc3RyYWludE9mVHlwZVBhcmFtZXRlcj1zaTtmdW5jdGlvbiBEaShqZSl7cmV0dXJuIGplLmtpbmQ9PT03OXx8amUua2luZD09PTgwfWUuaXNNZW1iZXJOYW1lPURpO2Z1bmN0aW9uIHdpKGplKXtyZXR1cm4gamUua2luZD09PTE3M3x8amUua2luZD09PTE3Mn1lLmlzR2V0T3JTZXRBY2Nlc3NvckRlY2xhcmF0aW9uPXdpO2Z1bmN0aW9uIFhpKGplKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihqZSkmJiEhKGplLmZsYWdzJjMyKX1lLmlzUHJvcGVydHlBY2Nlc3NDaGFpbj1YaTtmdW5jdGlvbiBldChqZSl7cmV0dXJuIGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihqZSkmJiEhKGplLmZsYWdzJjMyKX1lLmlzRWxlbWVudEFjY2Vzc0NoYWluPWV0O2Z1bmN0aW9uIEdpKGplKXtyZXR1cm4gZS5pc0NhbGxFeHByZXNzaW9uKGplKSYmISEoamUuZmxhZ3MmMzIpfWUuaXNDYWxsQ2hhaW49R2k7ZnVuY3Rpb24gV3QoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiEhKGplLmZsYWdzJjMyKSYmKEhyPT09MjA2fHxIcj09PTIwN3x8SHI9PT0yMDh8fEhyPT09MjMwKX1lLmlzT3B0aW9uYWxDaGFpbj1XdDtmdW5jdGlvbiBadChqZSl7cmV0dXJuIFd0KGplKSYmIWUuaXNOb25OdWxsRXhwcmVzc2lvbihqZSkmJiEhamUucXVlc3Rpb25Eb3RUb2tlbn1lLmlzT3B0aW9uYWxDaGFpblJvb3Q9WnQ7ZnVuY3Rpb24gX3IoamUpe3JldHVybiBadChqZS5wYXJlbnQpJiZqZS5wYXJlbnQuZXhwcmVzc2lvbj09PWplfWUuaXNFeHByZXNzaW9uT2ZPcHRpb25hbENoYWluUm9vdD1fcjtmdW5jdGlvbiBwaShqZSl7cmV0dXJuIVd0KGplLnBhcmVudCl8fFp0KGplLnBhcmVudCl8fGplIT09amUucGFyZW50LmV4cHJlc3Npb259ZS5pc091dGVybW9zdE9wdGlvbmFsQ2hhaW49cGk7ZnVuY3Rpb24gYWUoamUpe3JldHVybiBqZS5raW5kPT09MjIxJiZqZS5vcGVyYXRvclRva2VuLmtpbmQ9PT02MH1lLmlzTnVsbGlzaENvYWxlc2NlPWFlO2Z1bmN0aW9uIFhlKGplKXtyZXR1cm4gZS5pc1R5cGVSZWZlcmVuY2VOb2RlKGplKSYmZS5pc0lkZW50aWZpZXIoamUudHlwZU5hbWUpJiZqZS50eXBlTmFtZS5lc2NhcGVkVGV4dD09PVwiY29uc3RcIiYmIWplLnR5cGVBcmd1bWVudHN9ZS5pc0NvbnN0VHlwZVJlZmVyZW5jZT1YZTtmdW5jdGlvbiBKcihqZSl7cmV0dXJuIGUuc2tpcE91dGVyRXhwcmVzc2lvbnMoamUsOCl9ZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zPUpyO2Z1bmN0aW9uIHRpKGplKXtyZXR1cm4gZS5pc05vbk51bGxFeHByZXNzaW9uKGplKSYmISEoamUuZmxhZ3MmMzIpfWUuaXNOb25OdWxsQ2hhaW49dGk7ZnVuY3Rpb24gWmUoamUpe3JldHVybiBqZS5raW5kPT09MjQ2fHxqZS5raW5kPT09MjQ1fWUuaXNCcmVha09yQ29udGludWVTdGF0ZW1lbnQ9WmU7ZnVuY3Rpb24gU3IoamUpe3JldHVybiBqZS5raW5kPT09Mjc0fHxqZS5raW5kPT09MjczfWUuaXNOYW1lZEV4cG9ydEJpbmRpbmdzPVNyO2Z1bmN0aW9uIHpyKGplKXtzd2l0Y2goamUua2luZCl7Y2FzZSAzMDI6Y2FzZSAzMDM6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc1VucGFyc2VkVGV4dExpa2U9enI7ZnVuY3Rpb24gV3IoamUpe3JldHVybiB6cihqZSl8fGplLmtpbmQ9PT0zMDB8fGplLmtpbmQ9PT0zMDR9ZS5pc1VucGFyc2VkTm9kZT1XcjtmdW5jdGlvbiBKZShqZSl7cmV0dXJuIGplLmtpbmQ9PT0zNDd8fGplLmtpbmQ9PT0zNDB9ZS5pc0pTRG9jUHJvcGVydHlMaWtlVGFnPUplO2Z1bmN0aW9uIHhlKGplKXtyZXR1cm4gdnIoamUua2luZCl9ZS5pc05vZGU9eGU7ZnVuY3Rpb24gdnIoamUpe3JldHVybiBqZT49MTYxfWUuaXNOb2RlS2luZD12cjtmdW5jdGlvbiBtcihqZSl7cmV0dXJuIGplPj0wJiZqZTw9MTYwfWUuaXNUb2tlbktpbmQ9bXI7ZnVuY3Rpb24gQXIoamUpe3JldHVybiBtcihqZS5raW5kKX1lLmlzVG9rZW49QXI7ZnVuY3Rpb24gT2UoamUpe3JldHVybiBqZS5oYXNPd25Qcm9wZXJ0eShcInBvc1wiKSYmamUuaGFzT3duUHJvcGVydHkoXCJlbmRcIil9ZS5pc05vZGVBcnJheT1PZTtmdW5jdGlvbiBucihqZSl7cmV0dXJuIDg8PWplJiZqZTw9MTR9ZS5pc0xpdGVyYWxLaW5kPW5yO2Z1bmN0aW9uIE1yKGplKXtyZXR1cm4gbnIoamUua2luZCl9ZS5pc0xpdGVyYWxFeHByZXNzaW9uPU1yO2Z1bmN0aW9uIFBlKGplKXtyZXR1cm4gMTQ8PWplJiZqZTw9MTd9ZS5pc1RlbXBsYXRlTGl0ZXJhbEtpbmQ9UGU7ZnVuY3Rpb24gVWUoamUpe3JldHVybiBQZShqZS5raW5kKX1lLmlzVGVtcGxhdGVMaXRlcmFsVG9rZW49VWU7ZnVuY3Rpb24gZnIoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTE2fHxIcj09PTE3fWUuaXNUZW1wbGF0ZU1pZGRsZU9yVGVtcGxhdGVUYWlsPWZyO2Z1bmN0aW9uIERlKGplKXtyZXR1cm4gZS5pc0ltcG9ydFNwZWNpZmllcihqZSl8fGUuaXNFeHBvcnRTcGVjaWZpZXIoamUpfWUuaXNJbXBvcnRPckV4cG9ydFNwZWNpZmllcj1EZTtmdW5jdGlvbiBncihqZSl7c3dpdGNoKGplLmtpbmQpe2Nhc2UgMjcwOmNhc2UgMjc1OnJldHVybiBqZS5pc1R5cGVPbmx5fHxqZS5wYXJlbnQucGFyZW50LmlzVHlwZU9ubHk7Y2FzZSAyNjg6cmV0dXJuIGplLnBhcmVudC5pc1R5cGVPbmx5O2Nhc2UgMjY3OmNhc2UgMjY1OnJldHVybiBqZS5pc1R5cGVPbmx5O2RlZmF1bHQ6cmV0dXJuITF9fWUuaXNUeXBlT25seUltcG9ydE9yRXhwb3J0RGVjbGFyYXRpb249Z3I7ZnVuY3Rpb24gVnIoamUpe3JldHVybiBlLmlzU3RyaW5nTGl0ZXJhbChqZSl8fGUuaXNJZGVudGlmaWVyKGplKX1lLmlzQXNzZXJ0aW9uS2V5PVZyO2Z1bmN0aW9uIFRyKGplKXtyZXR1cm4gamUua2luZD09PTEwfHxQZShqZS5raW5kKX1lLmlzU3RyaW5nVGV4dENvbnRhaW5pbmdOb2RlPVRyO2Z1bmN0aW9uIHZpKGplKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoamUpJiYoamUuYXV0b0dlbmVyYXRlRmxhZ3MmNyk+MH1lLmlzR2VuZXJhdGVkSWRlbnRpZmllcj12aTtmdW5jdGlvbiBVaShqZSl7cmV0dXJuKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKGplKXx8T2koamUpKSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKGplLm5hbWUpfWUuaXNQcml2YXRlSWRlbnRpZmllckNsYXNzRWxlbWVudERlY2xhcmF0aW9uPVVpO2Z1bmN0aW9uIFlpKGplKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihqZSkmJmUuaXNQcml2YXRlSWRlbnRpZmllcihqZS5uYW1lKX1lLmlzUHJpdmF0ZUlkZW50aWZpZXJQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb249WWk7ZnVuY3Rpb24gV2koamUpe3N3aXRjaChqZSl7Y2FzZSAxMjY6Y2FzZSAxMzE6Y2FzZSA4NTpjYXNlIDEzNTpjYXNlIDg4OmNhc2UgOTM6Y2FzZSAxMDE6Y2FzZSAxMjM6Y2FzZSAxMjE6Y2FzZSAxMjI6Y2FzZSAxNDU6Y2FzZSAxMjQ6Y2FzZSAxNDQ6Y2FzZSAxNTk6cmV0dXJuITB9cmV0dXJuITF9ZS5pc01vZGlmaWVyS2luZD1XaTtmdW5jdGlvbiBjdChqZSl7cmV0dXJuISEoZS5tb2RpZmllclRvRmxhZyhqZSkmMTY0NzYpfWUuaXNQYXJhbWV0ZXJQcm9wZXJ0eU1vZGlmaWVyPWN0O2Z1bmN0aW9uIExpKGplKXtyZXR1cm4gY3QoamUpfHxqZT09PTEyNHx8amU9PT0xNTl9ZS5pc0NsYXNzTWVtYmVyTW9kaWZpZXI9TGk7ZnVuY3Rpb24gbnQoamUpe3JldHVybiBXaShqZS5raW5kKX1lLmlzTW9kaWZpZXI9bnQ7ZnVuY3Rpb24gTXQoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTE2MXx8SHI9PT03OX1lLmlzRW50aXR5TmFtZT1NdDtmdW5jdGlvbiB4dChqZSl7dmFyIEhyPWplLmtpbmQ7cmV0dXJuIEhyPT09Nzl8fEhyPT09ODB8fEhyPT09MTB8fEhyPT09OHx8SHI9PT0xNjJ9ZS5pc1Byb3BlcnR5TmFtZT14dDtmdW5jdGlvbiB1dChqZSl7dmFyIEhyPWplLmtpbmQ7cmV0dXJuIEhyPT09Nzl8fEhyPT09MjAxfHxIcj09PTIwMn1lLmlzQmluZGluZ05hbWU9dXQ7ZnVuY3Rpb24gRHQoamUpe3JldHVybiEhamUmJnVpKGplLmtpbmQpfWUuaXNGdW5jdGlvbkxpa2U9RHQ7ZnVuY3Rpb24gUnQoamUpe3JldHVybiEhamUmJih1aShqZS5raW5kKXx8ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihqZSkpfWUuaXNGdW5jdGlvbkxpa2VPckNsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbj1SdDtmdW5jdGlvbiBJaShqZSl7cmV0dXJuIGplJiZGaShqZS5raW5kKX1lLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb249SWk7ZnVuY3Rpb24gS2koamUpe3JldHVybiBqZS5raW5kPT09MTEwfHxqZS5raW5kPT09OTV9ZS5pc0Jvb2xlYW5MaXRlcmFsPUtpO2Z1bmN0aW9uIEZpKGplKXtzd2l0Y2goamUpe2Nhc2UgMjU2OmNhc2UgMTY5OmNhc2UgMTcxOmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMjEzOmNhc2UgMjE0OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHVpKGplKXtzd2l0Y2goamUpe2Nhc2UgMTY4OmNhc2UgMTc0OmNhc2UgMzIzOmNhc2UgMTc1OmNhc2UgMTc2OmNhc2UgMTc5OmNhc2UgMzE3OmNhc2UgMTgwOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuIEZpKGplKX19ZS5pc0Z1bmN0aW9uTGlrZUtpbmQ9dWk7ZnVuY3Rpb24gQnQoamUpe3JldHVybiBlLmlzU291cmNlRmlsZShqZSl8fGUuaXNNb2R1bGVCbG9jayhqZSl8fGUuaXNCbG9jayhqZSkmJkR0KGplLnBhcmVudCl9ZS5pc0Z1bmN0aW9uT3JNb2R1bGVCbG9jaz1CdDtmdW5jdGlvbiB3dChqZSl7dmFyIEhyPWplLmtpbmQ7cmV0dXJuIEhyPT09MTcxfHxIcj09PTE2N3x8SHI9PT0xNjl8fEhyPT09MTcyfHxIcj09PTE3M3x8SHI9PT0xNzZ8fEhyPT09MTcwfHxIcj09PTIzNH1lLmlzQ2xhc3NFbGVtZW50PXd0O2Z1bmN0aW9uIG5hKGplKXtyZXR1cm4gamUmJihqZS5raW5kPT09MjU3fHxqZS5raW5kPT09MjI2KX1lLmlzQ2xhc3NMaWtlPW5hO2Z1bmN0aW9uIEFpKGplKXtyZXR1cm4gamUmJihqZS5raW5kPT09MTcyfHxqZS5raW5kPT09MTczKX1lLmlzQWNjZXNzb3I9QWk7ZnVuY3Rpb24gT2koamUpe3N3aXRjaChqZS5raW5kKXtjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1lLmlzTWV0aG9kT3JBY2Nlc3Nvcj1PaTtmdW5jdGlvbiBqaShqZSl7dmFyIEhyPWplLmtpbmQ7cmV0dXJuIEhyPT09MTc1fHxIcj09PTE3NHx8SHI9PT0xNjZ8fEhyPT09MTY4fHxIcj09PTE3Nnx8SHI9PT0xNzJ8fEhyPT09MTczfWUuaXNUeXBlRWxlbWVudD1qaTtmdW5jdGlvbiBWaShqZSl7cmV0dXJuIGppKGplKXx8d3QoamUpfWUuaXNDbGFzc09yVHlwZUVsZW1lbnQ9Vmk7ZnVuY3Rpb24gYXQoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTI5Nnx8SHI9PT0yOTd8fEhyPT09Mjk4fHxIcj09PTE2OXx8SHI9PT0xNzJ8fEhyPT09MTczfWUuaXNPYmplY3RMaXRlcmFsRWxlbWVudExpa2U9YXQ7ZnVuY3Rpb24gQXQoamUpe3JldHVybiBlLmlzVHlwZU5vZGVLaW5kKGplLmtpbmQpfWUuaXNUeXBlTm9kZT1BdDtmdW5jdGlvbiBiYShqZSl7c3dpdGNoKGplLmtpbmQpe2Nhc2UgMTc5OmNhc2UgMTgwOnJldHVybiEwfXJldHVybiExfWUuaXNGdW5jdGlvbk9yQ29uc3RydWN0b3JUeXBlTm9kZT1iYTtmdW5jdGlvbiAkYShqZSl7aWYoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTIwMnx8SHI9PT0yMDF9cmV0dXJuITF9ZS5pc0JpbmRpbmdQYXR0ZXJuPSRhO2Z1bmN0aW9uIFFhKGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gSHI9PT0yMDR8fEhyPT09MjA1fWUuaXNBc3NpZ25tZW50UGF0dGVybj1RYTtmdW5jdGlvbiBhaShqZSl7dmFyIEhyPWplLmtpbmQ7cmV0dXJuIEhyPT09MjAzfHxIcj09PTIyN31lLmlzQXJyYXlCaW5kaW5nRWxlbWVudD1haTtmdW5jdGlvbiBEbihqZSl7c3dpdGNoKGplLmtpbmQpe2Nhc2UgMjU0OmNhc2UgMTY0OmNhc2UgMjAzOnJldHVybiEwfXJldHVybiExfWUuaXNEZWNsYXJhdGlvbkJpbmRpbmdFbGVtZW50PURuO2Z1bmN0aW9uIGthKGplKXtyZXR1cm4gQmEoamUpfHxDbihqZSl9ZS5pc0JpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuPWthO2Z1bmN0aW9uIEJhKGplKXtzd2l0Y2goamUua2luZCl7Y2FzZSAyMDE6Y2FzZSAyMDU6cmV0dXJuITB9cmV0dXJuITF9ZS5pc09iamVjdEJpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuPUJhO2Z1bmN0aW9uIHBuKGplKXtzd2l0Y2goamUua2luZCl7Y2FzZSAyMDM6Y2FzZSAyOTY6Y2FzZSAyOTc6Y2FzZSAyOTg6cmV0dXJuITB9cmV0dXJuITF9ZS5pc09iamVjdEJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50PXBuO2Z1bmN0aW9uIENuKGplKXtzd2l0Y2goamUua2luZCl7Y2FzZSAyMDI6Y2FzZSAyMDQ6cmV0dXJuITB9cmV0dXJuITF9ZS5pc0FycmF5QmluZGluZ09yQXNzaWdubWVudFBhdHRlcm49Q247ZnVuY3Rpb24gQmkoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTIwNnx8SHI9PT0xNjF8fEhyPT09MjAwfWUuaXNQcm9wZXJ0eUFjY2Vzc09yUXVhbGlmaWVkTmFtZU9ySW1wb3J0VHlwZU5vZGU9Qmk7ZnVuY3Rpb24ga24oamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTIwNnx8SHI9PT0xNjF9ZS5pc1Byb3BlcnR5QWNjZXNzT3JRdWFsaWZpZWROYW1lPWtuO2Z1bmN0aW9uIHhuKGplKXtzd2l0Y2goamUua2luZCl7Y2FzZSAyODA6Y2FzZSAyNzk6Y2FzZSAyMDg6Y2FzZSAyMDk6Y2FzZSAyMTA6Y2FzZSAxNjU6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc0NhbGxMaWtlRXhwcmVzc2lvbj14bjtmdW5jdGlvbiBLbihqZSl7cmV0dXJuIGplLmtpbmQ9PT0yMDh8fGplLmtpbmQ9PT0yMDl9ZS5pc0NhbGxPck5ld0V4cHJlc3Npb249S247ZnVuY3Rpb24gUG4oamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTIyM3x8SHI9PT0xNH1lLmlzVGVtcGxhdGVMaXRlcmFsPVBuO2Z1bmN0aW9uIGVvKGplKXtyZXR1cm4gUm4oSnIoamUpLmtpbmQpfWUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uPWVvO2Z1bmN0aW9uIFJuKGplKXtzd2l0Y2goamUpe2Nhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMjA5OmNhc2UgMjA4OmNhc2UgMjc4OmNhc2UgMjc5OmNhc2UgMjgyOmNhc2UgMjEwOmNhc2UgMjA0OmNhc2UgMjEyOmNhc2UgMjA1OmNhc2UgMjI2OmNhc2UgMjEzOmNhc2UgNzk6Y2FzZSA4MDpjYXNlIDEzOmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDE0OmNhc2UgMjIzOmNhc2UgOTU6Y2FzZSAxMDQ6Y2FzZSAxMDg6Y2FzZSAxMTA6Y2FzZSAxMDY6Y2FzZSAyMzA6Y2FzZSAyMjg6Y2FzZSAyMzE6Y2FzZSAxMDA6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRGEoamUpe3JldHVybiBibyhKcihqZSkua2luZCl9ZS5pc1VuYXJ5RXhwcmVzc2lvbj1EYTtmdW5jdGlvbiBibyhqZSl7c3dpdGNoKGplKXtjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIxNTpjYXNlIDIxNjpjYXNlIDIxNzpjYXNlIDIxODpjYXNlIDIxMTpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiBSbihqZSl9fWZ1bmN0aW9uIFJvKGplKXtzd2l0Y2goamUua2luZCl7Y2FzZSAyMjA6cmV0dXJuITA7Y2FzZSAyMTk6cmV0dXJuIGplLm9wZXJhdG9yPT09NDV8fGplLm9wZXJhdG9yPT09NDY7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc1VuYXJ5RXhwcmVzc2lvbldpdGhXcml0ZT1SbztmdW5jdGlvbiBFbihqZSl7cmV0dXJuIFduKEpyKGplKS5raW5kKX1lLmlzRXhwcmVzc2lvbj1FbjtmdW5jdGlvbiBXbihqZSl7c3dpdGNoKGplKXtjYXNlIDIyMjpjYXNlIDIyNDpjYXNlIDIxNDpjYXNlIDIyMTpjYXNlIDIyNTpjYXNlIDIyOTpjYXNlIDIyNzpjYXNlIDM1MTpjYXNlIDM1MDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiBibyhqZSl9fWZ1bmN0aW9uIHRvKGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gSHI9PT0yMTF8fEhyPT09MjI5fWUuaXNBc3NlcnRpb25FeHByZXNzaW9uPXRvO2Z1bmN0aW9uIENvKGplKXtyZXR1cm4gZS5pc05vdEVtaXR0ZWRTdGF0ZW1lbnQoamUpfHxlLmlzUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb24oamUpfWUuaXNOb3RFbWl0dGVkT3JQYXJ0aWFsbHlFbWl0dGVkTm9kZT1DbztmdW5jdGlvbiBLbyhqZSxIcil7c3dpdGNoKGplLmtpbmQpe2Nhc2UgMjQyOmNhc2UgMjQzOmNhc2UgMjQ0OmNhc2UgMjQwOmNhc2UgMjQxOnJldHVybiEwO2Nhc2UgMjUwOnJldHVybiBIciYmS28oamUuc3RhdGVtZW50LEhyKX1yZXR1cm4hMX1lLmlzSXRlcmF0aW9uU3RhdGVtZW50PUtvO2Z1bmN0aW9uIE9vKGplKXtyZXR1cm4gZS5pc0V4cG9ydEFzc2lnbm1lbnQoamUpfHxlLmlzRXhwb3J0RGVjbGFyYXRpb24oamUpfWUuaXNTY29wZU1hcmtlcj1PbztmdW5jdGlvbiBubyhqZSl7cmV0dXJuIGUuc29tZShqZSxPbyl9ZS5oYXNTY29wZU1hcmtlcj1ubztmdW5jdGlvbiAkbyhqZSl7cmV0dXJuIWUuaXNBbnlJbXBvcnRPclJlRXhwb3J0KGplKSYmIWUuaXNFeHBvcnRBc3NpZ25tZW50KGplKSYmIWUuaGFzU3ludGFjdGljTW9kaWZpZXIoamUsMSkmJiFlLmlzQW1iaWVudE1vZHVsZShqZSl9ZS5uZWVkc1Njb3BlTWFya2VyPSRvO2Z1bmN0aW9uIFByKGplKXtyZXR1cm4gZS5pc0FueUltcG9ydE9yUmVFeHBvcnQoamUpfHxlLmlzRXhwb3J0QXNzaWdubWVudChqZSl8fGUuaGFzU3ludGFjdGljTW9kaWZpZXIoamUsMSl9ZS5pc0V4dGVybmFsTW9kdWxlSW5kaWNhdG9yPVByO2Z1bmN0aW9uIHhpKGplKXtyZXR1cm4gamUua2luZD09PTI0M3x8amUua2luZD09PTI0NH1lLmlzRm9ySW5Pck9mU3RhdGVtZW50PXhpO2Z1bmN0aW9uIFN0KGplKXtyZXR1cm4gZS5pc0Jsb2NrKGplKXx8RW4oamUpfWUuaXNDb25jaXNlQm9keT1TdDtmdW5jdGlvbiBwYShqZSl7cmV0dXJuIGUuaXNCbG9jayhqZSl9ZS5pc0Z1bmN0aW9uQm9keT1wYTtmdW5jdGlvbiBkbihqZSl7cmV0dXJuIGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChqZSl8fEVuKGplKX1lLmlzRm9ySW5pdGlhbGl6ZXI9ZG47ZnVuY3Rpb24gSm4oamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTI2Mnx8SHI9PT0yNjF8fEhyPT09Nzl9ZS5pc01vZHVsZUJvZHk9Sm47ZnVuY3Rpb24gUWUoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTI2Mnx8SHI9PT0yNjF9ZS5pc05hbWVzcGFjZUJvZHk9UWU7ZnVuY3Rpb24gR3IoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTc5fHxIcj09PTI2MX1lLmlzSlNEb2NOYW1lc3BhY2VCb2R5PUdyO2Z1bmN0aW9uIFMoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTI2OXx8SHI9PT0yNjh9ZS5pc05hbWVkSW1wb3J0QmluZGluZ3M9UztmdW5jdGlvbiBDZShqZSl7cmV0dXJuIGplLmtpbmQ9PT0yNjF8fGplLmtpbmQ9PT0yNjB9ZS5pc01vZHVsZU9yRW51bURlY2xhcmF0aW9uPUNlO2Z1bmN0aW9uIHFlKGplKXtyZXR1cm4gamU9PT0yMTR8fGplPT09MjAzfHxqZT09PTI1N3x8amU9PT0yMjZ8fGplPT09MTcwfHxqZT09PTE3MXx8amU9PT0yNjB8fGplPT09Mjk5fHxqZT09PTI3NXx8amU9PT0yNTZ8fGplPT09MjEzfHxqZT09PTE3Mnx8amU9PT0yNjd8fGplPT09MjY1fHxqZT09PTI3MHx8amU9PT0yNTh8fGplPT09Mjg1fHxqZT09PTE2OXx8amU9PT0xNjh8fGplPT09MjYxfHxqZT09PTI2NHx8amU9PT0yNjh8fGplPT09Mjc0fHxqZT09PTE2NHx8amU9PT0yOTZ8fGplPT09MTY3fHxqZT09PTE2Nnx8amU9PT0xNzN8fGplPT09Mjk3fHxqZT09PTI1OXx8amU9PT0xNjN8fGplPT09MjU0fHxqZT09PTM0NXx8amU9PT0zMzh8fGplPT09MzQ3fWZ1bmN0aW9uIGJyKGplKXtyZXR1cm4gamU9PT0yNTZ8fGplPT09Mjc2fHxqZT09PTI1N3x8amU9PT0yNTh8fGplPT09MjU5fHxqZT09PTI2MHx8amU9PT0yNjF8fGplPT09MjY2fHxqZT09PTI2NXx8amU9PT0yNzJ8fGplPT09MjcxfHxqZT09PTI2NH1mdW5jdGlvbiBacihqZSl7cmV0dXJuIGplPT09MjQ2fHxqZT09PTI0NXx8amU9PT0yNTN8fGplPT09MjQwfHxqZT09PTIzOHx8amU9PT0yMzZ8fGplPT09MjQzfHxqZT09PTI0NHx8amU9PT0yNDJ8fGplPT09MjM5fHxqZT09PTI1MHx8amU9PT0yNDd8fGplPT09MjQ5fHxqZT09PTI1MXx8amU9PT0yNTJ8fGplPT09MjM3fHxqZT09PTI0MXx8amU9PT0yNDh8fGplPT09MzQ5fHxqZT09PTM1M3x8amU9PT0zNTJ9ZnVuY3Rpb24gU2koamUpe3JldHVybiBqZS5raW5kPT09MTYzP2plLnBhcmVudCYmamUucGFyZW50LmtpbmQhPT0zNDR8fGUuaXNJbkpTRmlsZShqZSk6cWUoamUua2luZCl9ZS5pc0RlY2xhcmF0aW9uPVNpO2Z1bmN0aW9uIFBpKGplKXtyZXR1cm4gYnIoamUua2luZCl9ZS5pc0RlY2xhcmF0aW9uU3RhdGVtZW50PVBpO2Z1bmN0aW9uIFFpKGplKXtyZXR1cm4gWnIoamUua2luZCl9ZS5pc1N0YXRlbWVudEJ1dE5vdERlY2xhcmF0aW9uPVFpO2Z1bmN0aW9uIEN0KGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gWnIoSHIpfHxicihIcil8fHNhKGplKX1lLmlzU3RhdGVtZW50PUN0O2Z1bmN0aW9uIHNhKGplKXtyZXR1cm4gamUua2luZCE9PTIzNXx8amUucGFyZW50IT09dm9pZCAwJiYoamUucGFyZW50LmtpbmQ9PT0yNTJ8fGplLnBhcmVudC5raW5kPT09MjkyKT8hMTohZS5pc0Z1bmN0aW9uQmxvY2soamUpfWZ1bmN0aW9uIGVuKGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gWnIoSHIpfHxicihIcil8fEhyPT09MjM1fWUuaXNTdGF0ZW1lbnRPckJsb2NrPWVuO2Z1bmN0aW9uIFdhKGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gSHI9PT0yNzd8fEhyPT09MTYxfHxIcj09PTc5fWUuaXNNb2R1bGVSZWZlcmVuY2U9V2E7ZnVuY3Rpb24gcW4oamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTEwOHx8SHI9PT03OXx8SHI9PT0yMDZ9ZS5pc0pzeFRhZ05hbWVFeHByZXNzaW9uPXFuO2Z1bmN0aW9uIG1vKGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gSHI9PT0yNzh8fEhyPT09Mjg4fHxIcj09PTI3OXx8SHI9PT0xMXx8SHI9PT0yODJ9ZS5pc0pzeENoaWxkPW1vO2Z1bmN0aW9uIFNvKGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gSHI9PT0yODV8fEhyPT09Mjg3fWUuaXNKc3hBdHRyaWJ1dGVMaWtlPVNvO2Z1bmN0aW9uIEdvKGplKXt2YXIgSHI9amUua2luZDtyZXR1cm4gSHI9PT0xMHx8SHI9PT0yODh9ZS5pc1N0cmluZ0xpdGVyYWxPckpzeEV4cHJlc3Npb249R287ZnVuY3Rpb24geXMoamUpe3ZhciBIcj1qZS5raW5kO3JldHVybiBIcj09PTI4MHx8SHI9PT0yNzl9ZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudD15cztmdW5jdGlvbiBQYyhqZSl7dmFyIEhyPWplLmtpbmQ7cmV0dXJuIEhyPT09Mjg5fHxIcj09PTI5MH1lLmlzQ2FzZU9yRGVmYXVsdENsYXVzZT1QYztmdW5jdGlvbiBWYyhqZSl7cmV0dXJuIGplLmtpbmQ+PTMwOSYmamUua2luZDw9MzQ3fWUuaXNKU0RvY05vZGU9VmM7ZnVuY3Rpb24gS2MoamUpe3JldHVybiBqZS5raW5kPT09MzIwfHxqZS5raW5kPT09MzE5fHxqZS5raW5kPT09MzIxfHxxaShqZSl8fFhzKGplKXx8ZS5pc0pTRG9jVHlwZUxpdGVyYWwoamUpfHxlLmlzSlNEb2NTaWduYXR1cmUoamUpfWUuaXNKU0RvY0NvbW1lbnRDb250YWluaW5nTm9kZT1LYztmdW5jdGlvbiBYcyhqZSl7cmV0dXJuIGplLmtpbmQ+PTMyNyYmamUua2luZDw9MzQ3fWUuaXNKU0RvY1RhZz1YcztmdW5jdGlvbiBwYyhqZSl7cmV0dXJuIGplLmtpbmQ9PT0xNzN9ZS5pc1NldEFjY2Vzc29yPXBjO2Z1bmN0aW9uIGhzKGplKXtyZXR1cm4gamUua2luZD09PTE3Mn1lLmlzR2V0QWNjZXNzb3I9aHM7ZnVuY3Rpb24gdGMoamUpe3ZhciBIcj1qZS5qc0RvYztyZXR1cm4hIUhyJiZIci5sZW5ndGg+MH1lLmhhc0pTRG9jTm9kZXM9dGM7ZnVuY3Rpb24gcHMoamUpe3JldHVybiEhamUudHlwZX1lLmhhc1R5cGU9cHM7ZnVuY3Rpb24gUXMoamUpe3JldHVybiEhamUuaW5pdGlhbGl6ZXJ9ZS5oYXNJbml0aWFsaXplcj1RcztmdW5jdGlvbiBqcyhqZSl7c3dpdGNoKGplLmtpbmQpe2Nhc2UgMjU0OmNhc2UgMTY0OmNhc2UgMjAzOmNhc2UgMTY2OmNhc2UgMTY3OmNhc2UgMjk2OmNhc2UgMjk5OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWUuaGFzT25seUV4cHJlc3Npb25Jbml0aWFsaXplcj1qcztmdW5jdGlvbiBkcyhqZSl7cmV0dXJuIGplLmtpbmQ9PT0yODV8fGplLmtpbmQ9PT0yODd8fGF0KGplKX1lLmlzT2JqZWN0TGl0ZXJhbEVsZW1lbnQ9ZHM7ZnVuY3Rpb24gSmkoamUpe3JldHVybiBqZS5raW5kPT09MTc4fHxqZS5raW5kPT09MjI4fWUuaXNUeXBlUmVmZXJlbmNlVHlwZT1KaTt2YXIgY2U9MTA3Mzc0MTgyMztmdW5jdGlvbiBScihqZSl7Zm9yKHZhciBIcj1jZSxwdD0wLFB0PWplO3B0PFB0Lmxlbmd0aDtwdCsrKXt2YXIgZ2E9UHRbcHRdO2lmKCEhZ2EubGVuZ3RoKXtmb3IodmFyIHVhPTA7dWE8Z2EubGVuZ3RoJiZ1YTxIciYmZS5pc1doaXRlU3BhY2VMaWtlKGdhLmNoYXJDb2RlQXQodWEpKTt1YSsrKTtpZih1YTxIciYmKEhyPXVhKSxIcj09PTApcmV0dXJuIDB9fXJldHVybiBIcj09PWNlP3ZvaWQgMDpIcn1lLmd1ZXNzSW5kZW50YXRpb249UnI7ZnVuY3Rpb24geWkoamUpe3JldHVybiBqZS5raW5kPT09MTB8fGplLmtpbmQ9PT0xNH1lLmlzU3RyaW5nTGl0ZXJhbExpa2U9eWk7ZnVuY3Rpb24gcWkoamUpe3JldHVybiBqZS5raW5kPT09MzI0fHxqZS5raW5kPT09MzI1fHxqZS5raW5kPT09MzI2fWUuaXNKU0RvY0xpbmtMaWtlPXFpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZS5yZXNvbHZpbmdFbXB0eUFycmF5PVtdLGUuZXh0ZXJuYWxIZWxwZXJzTW9kdWxlTmFtZVRleHQ9XCJ0c2xpYlwiLGUuZGVmYXVsdE1heGltdW1UcnVuY2F0aW9uTGVuZ3RoPTE2MCxlLm5vVHJ1bmNhdGlvbk1heGltdW1UcnVuY2F0aW9uTGVuZ3RoPTFlNjtmdW5jdGlvbiBhKGMsdGUpe3ZhciB4cj1jLmRlY2xhcmF0aW9ucztpZih4cilmb3IodmFyIGVpPTAsYmk9eHI7ZWk8YmkubGVuZ3RoO2VpKyspe3ZhciBGdD1iaVtlaV07aWYoRnQua2luZD09PXRlKXJldHVybiBGdH19ZS5nZXREZWNsYXJhdGlvbk9mS2luZD1hO2Z1bmN0aW9uIEMoYyx0ZSl7cmV0dXJuIGUuZmlsdGVyKGMuZGVjbGFyYXRpb25zfHxlLmVtcHR5QXJyYXksZnVuY3Rpb24oeHIpe3JldHVybiB4ci5raW5kPT09dGV9KX1lLmdldERlY2xhcmF0aW9uc09mS2luZD1DO2Z1bmN0aW9uIHcoYyl7dmFyIHRlPW5ldyBlLk1hcDtpZihjKWZvcih2YXIgeHI9MCxlaT1jO3hyPGVpLmxlbmd0aDt4cisrKXt2YXIgYmk9ZWlbeHJdO3RlLnNldChiaS5lc2NhcGVkTmFtZSxiaSl9cmV0dXJuIHRlfWUuY3JlYXRlU3ltYm9sVGFibGU9dztmdW5jdGlvbiBCKGMpe3JldHVybihjLmZsYWdzJjMzNTU0NDMyKSE9PTB9ZS5pc1RyYW5zaWVudFN5bWJvbD1CO3ZhciBFPVEoKTtmdW5jdGlvbiBRKCl7dmFyIGM9XCJcIix0ZT1mdW5jdGlvbih4cil7cmV0dXJuIGMrPXhyfTtyZXR1cm57Z2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiBjfSx3cml0ZTp0ZSxyYXdXcml0ZTp0ZSx3cml0ZUtleXdvcmQ6dGUsd3JpdGVPcGVyYXRvcjp0ZSx3cml0ZVB1bmN0dWF0aW9uOnRlLHdyaXRlU3BhY2U6dGUsd3JpdGVTdHJpbmdMaXRlcmFsOnRlLHdyaXRlTGl0ZXJhbDp0ZSx3cml0ZVBhcmFtZXRlcjp0ZSx3cml0ZVByb3BlcnR5OnRlLHdyaXRlU3ltYm9sOmZ1bmN0aW9uKHhyLGVpKXtyZXR1cm4gdGUoeHIpfSx3cml0ZVRyYWlsaW5nU2VtaWNvbG9uOnRlLHdyaXRlQ29tbWVudDp0ZSxnZXRUZXh0UG9zOmZ1bmN0aW9uKCl7cmV0dXJuIGMubGVuZ3RofSxnZXRMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGdldENvbHVtbjpmdW5jdGlvbigpe3JldHVybiAwfSxnZXRJbmRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0saXNBdFN0YXJ0T2ZMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGhhc1RyYWlsaW5nQ29tbWVudDpmdW5jdGlvbigpe3JldHVybiExfSxoYXNUcmFpbGluZ1doaXRlc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4hIWMubGVuZ3RoJiZlLmlzV2hpdGVTcGFjZUxpa2UoYy5jaGFyQ29kZUF0KGMubGVuZ3RoLTEpKX0sd3JpdGVMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIGMrPVwiIFwifSxpbmNyZWFzZUluZGVudDplLm5vb3AsZGVjcmVhc2VJbmRlbnQ6ZS5ub29wLGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGM9XCJcIn0sdHJhY2tTeW1ib2w6ZnVuY3Rpb24oKXtyZXR1cm4hMX0scmVwb3J0SW5hY2Nlc3NpYmxlVGhpc0Vycm9yOmUubm9vcCxyZXBvcnRJbmFjY2Vzc2libGVVbmlxdWVTeW1ib2xFcnJvcjplLm5vb3AscmVwb3J0UHJpdmF0ZUluQmFzZU9mQ2xhc3NFeHByZXNzaW9uOmUubm9vcH19ZnVuY3Rpb24gbGUoYyx0ZSl7cmV0dXJuIGMuY29uZmlnRmlsZVBhdGghPT10ZS5jb25maWdGaWxlUGF0aHx8TihjLHRlKX1lLmNoYW5nZXNBZmZlY3RNb2R1bGVSZXNvbHV0aW9uPWxlO2Z1bmN0aW9uIE4oYyx0ZSl7cmV0dXJuIG0oYyx0ZSxlLm1vZHVsZVJlc29sdXRpb25PcHRpb25EZWNsYXJhdGlvbnMpfWUub3B0aW9uc0hhdmVNb2R1bGVSZXNvbHV0aW9uQ2hhbmdlcz1OO2Z1bmN0aW9uIHAoYyx0ZSl7cmV0dXJuIG0oYyx0ZSxlLm9wdGlvbnNBZmZlY3RpbmdQcm9ncmFtU3RydWN0dXJlKX1lLmNoYW5nZXNBZmZlY3RpbmdQcm9ncmFtU3RydWN0dXJlPXA7ZnVuY3Rpb24gbShjLHRlLHhyKXtyZXR1cm4gYyE9PXRlJiZ4ci5zb21lKGZ1bmN0aW9uKGVpKXtyZXR1cm4hdW8oQm0oYyxlaSksQm0odGUsZWkpKX0pfWUub3B0aW9uc0hhdmVDaGFuZ2VzPW07ZnVuY3Rpb24gRyhjLHRlKXtmb3IoOzspe3ZhciB4cj10ZShjKTtpZih4cj09PVwicXVpdFwiKXJldHVybjtpZih4ciE9PXZvaWQgMClyZXR1cm4geHI7aWYoZS5pc1NvdXJjZUZpbGUoYykpcmV0dXJuO2M9Yy5wYXJlbnR9fWUuZm9yRWFjaEFuY2VzdG9yPUc7ZnVuY3Rpb24gb2UoYyx0ZSl7Zm9yKHZhciB4cj1jLmVudHJpZXMoKSxlaT14ci5uZXh0KCk7IWVpLmRvbmU7ZWk9eHIubmV4dCgpKXt2YXIgYmk9ZWkudmFsdWUsRnQ9YmlbMF0sb3Q9YmlbMV0seGE9dGUob3QsRnQpO2lmKHhhKXJldHVybiB4YX19ZS5mb3JFYWNoRW50cnk9b2U7ZnVuY3Rpb24gZihjLHRlKXtmb3IodmFyIHhyPWMua2V5cygpLGVpPXhyLm5leHQoKTshZWkuZG9uZTtlaT14ci5uZXh0KCkpe3ZhciBiaT10ZShlaS52YWx1ZSk7aWYoYmkpcmV0dXJuIGJpfX1lLmZvckVhY2hLZXk9ZjtmdW5jdGlvbiBUKGMsdGUpe2MuZm9yRWFjaChmdW5jdGlvbih4cixlaSl7dGUuc2V0KGVpLHhyKX0pfWUuY29weUVudHJpZXM9VDtmdW5jdGlvbiBLKGMpe3ZhciB0ZT1FLmdldFRleHQoKTt0cnl7cmV0dXJuIGMoRSksRS5nZXRUZXh0KCl9ZmluYWxseXtFLmNsZWFyKCksRS53cml0ZUtleXdvcmQodGUpfX1lLnVzaW5nU2luZ2xlTGluZVN0cmluZ1dyaXRlcj1LO2Z1bmN0aW9uIGIoYyl7cmV0dXJuIGMuZW5kLWMucG9zfWUuZ2V0RnVsbFdpZHRoPWI7ZnVuY3Rpb24gc2UoYyx0ZSx4cil7cmV0dXJuIGMmJmMucmVzb2x2ZWRNb2R1bGVzJiZjLnJlc29sdmVkTW9kdWxlcy5nZXQodGUseHIpfWUuZ2V0UmVzb2x2ZWRNb2R1bGU9c2U7ZnVuY3Rpb24gSihjLHRlLHhyLGVpKXtjLnJlc29sdmVkTW9kdWxlc3x8KGMucmVzb2x2ZWRNb2R1bGVzPWUuY3JlYXRlTW9kZUF3YXJlQ2FjaGUoKSksYy5yZXNvbHZlZE1vZHVsZXMuc2V0KHRlLGVpLHhyKX1lLnNldFJlc29sdmVkTW9kdWxlPUo7ZnVuY3Rpb24gaWUoYyx0ZSx4cil7Yy5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVOYW1lc3x8KGMucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlTmFtZXM9ZS5jcmVhdGVNb2RlQXdhcmVDYWNoZSgpKSxjLnJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZU5hbWVzLnNldCh0ZSx2b2lkIDAseHIpfWUuc2V0UmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlPWllO2Z1bmN0aW9uIFIoYyx0ZSl7cmV0dXJuIGMucGF0aD09PXRlLnBhdGgmJiFjLnByZXBlbmQ9PSF0ZS5wcmVwZW5kJiYhYy5jaXJjdWxhcj09IXRlLmNpcmN1bGFyfWUucHJvamVjdFJlZmVyZW5jZUlzRXF1YWxUbz1SO2Z1bmN0aW9uIHEoYyx0ZSl7cmV0dXJuIGMuaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQ9PT10ZS5pc0V4dGVybmFsTGlicmFyeUltcG9ydCYmYy5leHRlbnNpb249PT10ZS5leHRlbnNpb24mJmMucmVzb2x2ZWRGaWxlTmFtZT09PXRlLnJlc29sdmVkRmlsZU5hbWUmJmMub3JpZ2luYWxQYXRoPT09dGUub3JpZ2luYWxQYXRoJiZPKGMucGFja2FnZUlkLHRlLnBhY2thZ2VJZCl9ZS5tb2R1bGVSZXNvbHV0aW9uSXNFcXVhbFRvPXE7ZnVuY3Rpb24gTyhjLHRlKXtyZXR1cm4gYz09PXRlfHwhIWMmJiEhdGUmJmMubmFtZT09PXRlLm5hbWUmJmMuc3ViTW9kdWxlTmFtZT09PXRlLnN1Yk1vZHVsZU5hbWUmJmMudmVyc2lvbj09PXRlLnZlcnNpb259ZnVuY3Rpb24gdmUoYyl7dmFyIHRlPWMubmFtZSx4cj1jLnN1Yk1vZHVsZU5hbWU7cmV0dXJuIHhyP1wiXCIuY29uY2F0KHRlLFwiL1wiKS5jb25jYXQoeHIpOnRlfWUucGFja2FnZUlkVG9QYWNrYWdlTmFtZT12ZTtmdW5jdGlvbiBlZShjKXtyZXR1cm5cIlwiLmNvbmNhdCh2ZShjKSxcIkBcIikuY29uY2F0KGMudmVyc2lvbil9ZS5wYWNrYWdlSWRUb1N0cmluZz1lZTtmdW5jdGlvbiBoZShjLHRlKXtyZXR1cm4gYy5yZXNvbHZlZEZpbGVOYW1lPT09dGUucmVzb2x2ZWRGaWxlTmFtZSYmYy5wcmltYXJ5PT09dGUucHJpbWFyeSYmYy5vcmlnaW5hbFBhdGg9PT10ZS5vcmlnaW5hbFBhdGh9ZS50eXBlRGlyZWN0aXZlSXNFcXVhbFRvPWhlO2Z1bmN0aW9uIEYoYyx0ZSx4cixlaSxiaSl7ZS5EZWJ1Zy5hc3NlcnQoYy5sZW5ndGg9PT10ZS5sZW5ndGgpO2Zvcih2YXIgRnQ9MDtGdDxjLmxlbmd0aDtGdCsrKXt2YXIgb3Q9dGVbRnRdLHhhPWNbRnRdLG1uPWUuaXNTdHJpbmcoeGEpP3hhOnhhLmZpbGVOYW1lLnRvTG93ZXJDYXNlKCksYW49ZS5pc1N0cmluZyh4YSk/ZWkmJmUuZ2V0TW9kZUZvclJlc29sdXRpb25BdEluZGV4KGVpLEZ0KTplLmdldE1vZGVGb3JGaWxlUmVmZXJlbmNlKHhhLGVpPT1udWxsP3ZvaWQgMDplaS5pbXBsaWVkTm9kZUZvcm1hdCksVG89eHImJnhyLmdldChtbixhbiksSG49VG8/IW90fHwhYmkoVG8sb3QpOm90O2lmKEhuKXJldHVybiEwfXJldHVybiExfWUuaGFzQ2hhbmdlc0luUmVzb2x1dGlvbnM9RjtmdW5jdGlvbiB4KGMpe3JldHVybiBYKGMpLChjLmZsYWdzJjUyNDI4OCkhPT0wfWUuY29udGFpbnNQYXJzZUVycm9yPXg7ZnVuY3Rpb24gWChjKXtpZighKGMuZmxhZ3MmMTA0ODU3Nikpe3ZhciB0ZT0oYy5mbGFncyYxMzEwNzIpIT09MHx8ZS5mb3JFYWNoQ2hpbGQoYyx4KTt0ZSYmKGMuZmxhZ3N8PTUyNDI4OCksYy5mbGFnc3w9MTA0ODU3Nn19ZnVuY3Rpb24gJChjKXtmb3IoO2MmJmMua2luZCE9PTMwNTspYz1jLnBhcmVudDtyZXR1cm4gY31lLmdldFNvdXJjZUZpbGVPZk5vZGU9JDtmdW5jdGlvbiBBKGMpe3JldHVybiAkKGMudmFsdWVEZWNsYXJhdGlvbnx8SXIoYykpfWUuZ2V0U291cmNlRmlsZU9mTW9kdWxlPUE7ZnVuY3Rpb24geShjLHRlKXtyZXR1cm4hIWMmJihjLnNjcmlwdEtpbmQ9PT0xfHxjLnNjcmlwdEtpbmQ9PT0yKSYmIWMuY2hlY2tKc0RpcmVjdGl2ZSYmdGU9PT12b2lkIDB9ZS5pc1BsYWluSnNGaWxlPXk7ZnVuY3Rpb24gVihjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDIzNTpjYXNlIDI2MzpjYXNlIDI0MjpjYXNlIDI0MzpjYXNlIDI0NDpyZXR1cm4hMH1yZXR1cm4hMX1lLmlzU3RhdGVtZW50V2l0aExvY2Fscz1WO2Z1bmN0aW9uIEwoYyx0ZSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGM+PTApLGUuZ2V0TGluZVN0YXJ0cyh0ZSlbY119ZS5nZXRTdGFydFBvc2l0aW9uT2ZMaW5lPUw7ZnVuY3Rpb24gUChjKXt2YXIgdGU9JChjKSx4cj1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHRlLGMucG9zKTtyZXR1cm5cIlwiLmNvbmNhdCh0ZS5maWxlTmFtZSxcIihcIikuY29uY2F0KHhyLmxpbmUrMSxcIixcIikuY29uY2F0KHhyLmNoYXJhY3RlcisxLFwiKVwiKX1lLm5vZGVQb3NUb1N0cmluZz1QO2Z1bmN0aW9uIGsoYyx0ZSl7ZS5EZWJ1Zy5hc3NlcnQoYz49MCk7dmFyIHhyPWUuZ2V0TGluZVN0YXJ0cyh0ZSksZWk9YyxiaT10ZS50ZXh0O2lmKGVpKzE9PT14ci5sZW5ndGgpcmV0dXJuIGJpLmxlbmd0aC0xO3ZhciBGdD14cltlaV0sb3Q9eHJbZWkrMV0tMTtmb3IoZS5EZWJ1Zy5hc3NlcnQoZS5pc0xpbmVCcmVhayhiaS5jaGFyQ29kZUF0KG90KSkpO0Z0PD1vdCYmZS5pc0xpbmVCcmVhayhiaS5jaGFyQ29kZUF0KG90KSk7KW90LS07cmV0dXJuIG90fWUuZ2V0RW5kTGluZVBvc2l0aW9uPWs7ZnVuY3Rpb24gWShjLHRlLHhyKXtyZXR1cm4hKHhyJiZ4cih0ZSkpJiYhYy5pZGVudGlmaWVycy5oYXModGUpfWUuaXNGaWxlTGV2ZWxVbmlxdWVOYW1lPVk7ZnVuY3Rpb24gVShjKXtyZXR1cm4gYz09PXZvaWQgMD8hMDpjLnBvcz09PWMuZW5kJiZjLnBvcz49MCYmYy5raW5kIT09MX1lLm5vZGVJc01pc3Npbmc9VTtmdW5jdGlvbiBqKGMpe3JldHVybiFVKGMpfWUubm9kZUlzUHJlc2VudD1qO2Z1bmN0aW9uIEgoYyx0ZSx4cil7aWYodGU9PT12b2lkIDB8fHRlLmxlbmd0aD09PTApcmV0dXJuIGM7Zm9yKHZhciBlaT0wO2VpPGMubGVuZ3RoJiZ4cihjW2VpXSk7KytlaSk7cmV0dXJuIGMuc3BsaWNlLmFwcGx5KGMsVmUoW2VpLDBdLHRlLCExKSksY31mdW5jdGlvbiBJKGMsdGUseHIpe2lmKHRlPT09dm9pZCAwKXJldHVybiBjO2Zvcih2YXIgZWk9MDtlaTxjLmxlbmd0aCYmeHIoY1tlaV0pOysrZWkpO3JldHVybiBjLnNwbGljZShlaSwwLHRlKSxjfWZ1bmN0aW9uIGwoYyl7cmV0dXJuIFVpKGMpfHwhIShJZShjKSYxMDQ4NTc2KX1mdW5jdGlvbiBkKGMsdGUpe3JldHVybiBIKGMsdGUsVWkpfWUuaW5zZXJ0U3RhdGVtZW50c0FmdGVyU3RhbmRhcmRQcm9sb2d1ZT1kO2Z1bmN0aW9uIEQoYyx0ZSl7cmV0dXJuIEgoYyx0ZSxsKX1lLmluc2VydFN0YXRlbWVudHNBZnRlckN1c3RvbVByb2xvZ3VlPUQ7ZnVuY3Rpb24gZmUoYyx0ZSl7cmV0dXJuIEkoYyx0ZSxVaSl9ZS5pbnNlcnRTdGF0ZW1lbnRBZnRlclN0YW5kYXJkUHJvbG9ndWU9ZmU7ZnVuY3Rpb24gZyhjLHRlKXtyZXR1cm4gSShjLHRlLGwpfWUuaW5zZXJ0U3RhdGVtZW50QWZ0ZXJDdXN0b21Qcm9sb2d1ZT1nO2Z1bmN0aW9uIG5lKGMsdGUseHIpe2lmKGMuY2hhckNvZGVBdCh0ZSsxKT09PTQ3JiZ0ZSsyPHhyJiZjLmNoYXJDb2RlQXQodGUrMik9PT00Nyl7dmFyIGVpPWMuc3Vic3RyaW5nKHRlLHhyKTtyZXR1cm4hIShlLmZ1bGxUcmlwbGVTbGFzaFJlZmVyZW5jZVBhdGhSZWdFeC50ZXN0KGVpKXx8ZS5mdWxsVHJpcGxlU2xhc2hBTURSZWZlcmVuY2VQYXRoUmVnRXgudGVzdChlaSl8fHh0LnRlc3QoZWkpfHx1dC50ZXN0KGVpKSl9cmV0dXJuITF9ZS5pc1JlY29nbml6ZWRUcmlwbGVTbGFzaENvbW1lbnQ9bmU7ZnVuY3Rpb24gdWUoYyx0ZSl7cmV0dXJuIGMuY2hhckNvZGVBdCh0ZSsxKT09PTQyJiZjLmNoYXJDb2RlQXQodGUrMik9PT0zM31lLmlzUGlubmVkQ29tbWVudD11ZTtmdW5jdGlvbiBXZShjLHRlKXt2YXIgeHI9bmV3IGUuTWFwKHRlLm1hcChmdW5jdGlvbihvdCl7cmV0dXJuW1wiXCIuY29uY2F0KGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oYyxvdC5yYW5nZS5lbmQpLmxpbmUpLG90XX0pKSxlaT1uZXcgZS5NYXA7cmV0dXJue2dldFVudXNlZEV4cGVjdGF0aW9uczpiaSxtYXJrVXNlZDpGdH07ZnVuY3Rpb24gYmkoKXtyZXR1cm4gZS5hcnJheUZyb20oeHIuZW50cmllcygpKS5maWx0ZXIoZnVuY3Rpb24ob3Qpe3ZhciB4YT1vdFswXSxtbj1vdFsxXTtyZXR1cm4gbW4udHlwZT09PTAmJiFlaS5nZXQoeGEpfSkubWFwKGZ1bmN0aW9uKG90KXt2YXIgeGE9b3RbMF0sbW49b3RbMV07cmV0dXJuIG1ufSl9ZnVuY3Rpb24gRnQob3Qpe3JldHVybiB4ci5oYXMoXCJcIi5jb25jYXQob3QpKT8oZWkuc2V0KFwiXCIuY29uY2F0KG90KSwhMCksITApOiExfX1lLmNyZWF0ZUNvbW1lbnREaXJlY3RpdmVzTWFwPVdlO2Z1bmN0aW9uIEZlKGMsdGUseHIpe3JldHVybiBVKGMpP2MucG9zOmUuaXNKU0RvY05vZGUoYyl8fGMua2luZD09PTExP2Uuc2tpcFRyaXZpYSgodGV8fCQoYykpLnRleHQsYy5wb3MsITEsITApOnhyJiZlLmhhc0pTRG9jTm9kZXMoYyk/RmUoYy5qc0RvY1swXSx0ZSk6Yy5raW5kPT09MzQ4JiZjLl9jaGlsZHJlbi5sZW5ndGg+MD9GZShjLl9jaGlsZHJlblswXSx0ZSx4cik6ZS5za2lwVHJpdmlhKCh0ZXx8JChjKSkudGV4dCxjLnBvcywhMSwhMSxXYShjKSl9ZS5nZXRUb2tlblBvc09mTm9kZT1GZTtmdW5jdGlvbiBaKGMsdGUpe3JldHVybiBVKGMpfHwhYy5kZWNvcmF0b3JzP0ZlKGMsdGUpOmUuc2tpcFRyaXZpYSgodGV8fCQoYykpLnRleHQsYy5kZWNvcmF0b3JzLmVuZCl9ZS5nZXROb25EZWNvcmF0b3JUb2tlblBvc09mTm9kZT1aO2Z1bmN0aW9uIEJlKGMsdGUseHIpe3JldHVybiB4cj09PXZvaWQgMCYmKHhyPSExKSx6ZShjLnRleHQsdGUseHIpfWUuZ2V0U291cmNlVGV4dE9mTm9kZUZyb21Tb3VyY2VGaWxlPUJlO2Z1bmN0aW9uIGdlKGMpe3JldHVybiEhZS5maW5kQW5jZXN0b3IoYyxlLmlzSlNEb2NUeXBlRXhwcmVzc2lvbil9ZnVuY3Rpb24gUmUoYyl7cmV0dXJuISEoZS5pc0V4cG9ydERlY2xhcmF0aW9uKGMpJiZjLmV4cG9ydENsYXVzZSYmZS5pc05hbWVzcGFjZUV4cG9ydChjLmV4cG9ydENsYXVzZSkmJmMuZXhwb3J0Q2xhdXNlLm5hbWUuZXNjYXBlZFRleHQ9PT1cImRlZmF1bHRcIil9ZS5pc0V4cG9ydE5hbWVzcGFjZUFzRGVmYXVsdERlY2xhcmF0aW9uPVJlO2Z1bmN0aW9uIHplKGMsdGUseHIpe2lmKHhyPT09dm9pZCAwJiYoeHI9ITEpLFUodGUpKXJldHVyblwiXCI7dmFyIGVpPWMuc3Vic3RyaW5nKHhyP3RlLnBvczplLnNraXBUcml2aWEoYyx0ZS5wb3MpLHRlLmVuZCk7cmV0dXJuIGdlKHRlKSYmKGVpPWVpLnNwbGl0KC9cXHJcXG58XFxufFxcci8pLm1hcChmdW5jdGlvbihiaSl7cmV0dXJuIGUudHJpbVN0cmluZ1N0YXJ0KGJpLnJlcGxhY2UoL15cXHMqXFwqLyxcIlwiKSl9KS5qb2luKGBcbmApKSxlaX1lLmdldFRleHRPZk5vZGVGcm9tU291cmNlVGV4dD16ZTtmdW5jdGlvbiBFZShjLHRlKXtyZXR1cm4gdGU9PT12b2lkIDAmJih0ZT0hMSksQmUoJChjKSxjLHRlKX1lLmdldFRleHRPZk5vZGU9RWU7ZnVuY3Rpb24gSGUoYyl7cmV0dXJuIGMucG9zfWZ1bmN0aW9uIHJyKGMsdGUpe3JldHVybiBlLmJpbmFyeVNlYXJjaChjLHRlLEhlLGUuY29tcGFyZVZhbHVlcyl9ZS5pbmRleE9mTm9kZT1ycjtmdW5jdGlvbiBJZShjKXt2YXIgdGU9Yy5lbWl0Tm9kZTtyZXR1cm4gdGUmJnRlLmZsYWdzfHwwfWUuZ2V0RW1pdEZsYWdzPUllO2Z1bmN0aW9uIF9lKCl7cmV0dXJue2VzMjAxNTp7QXJyYXk6W1wiZmluZFwiLFwiZmluZEluZGV4XCIsXCJmaWxsXCIsXCJjb3B5V2l0aGluXCIsXCJlbnRyaWVzXCIsXCJrZXlzXCIsXCJ2YWx1ZXNcIl0sUmVnRXhwOltcImZsYWdzXCIsXCJzdGlja3lcIixcInVuaWNvZGVcIl0sUmVmbGVjdDpbXCJhcHBseVwiLFwiY29uc3RydWN0XCIsXCJkZWZpbmVQcm9wZXJ0eVwiLFwiZGVsZXRlUHJvcGVydHlcIixcImdldFwiLFwiIGdldE93blByb3BlcnR5RGVzY3JpcHRvclwiLFwiZ2V0UHJvdG90eXBlT2ZcIixcImhhc1wiLFwiaXNFeHRlbnNpYmxlXCIsXCJvd25LZXlzXCIsXCJwcmV2ZW50RXh0ZW5zaW9uc1wiLFwic2V0XCIsXCJzZXRQcm90b3R5cGVPZlwiXSxBcnJheUNvbnN0cnVjdG9yOltcImZyb21cIixcIm9mXCJdLE9iamVjdENvbnN0cnVjdG9yOltcImFzc2lnblwiLFwiZ2V0T3duUHJvcGVydHlTeW1ib2xzXCIsXCJrZXlzXCIsXCJpc1wiLFwic2V0UHJvdG90eXBlT2ZcIl0sTnVtYmVyQ29uc3RydWN0b3I6W1wiaXNGaW5pdGVcIixcImlzSW50ZWdlclwiLFwiaXNOYU5cIixcImlzU2FmZUludGVnZXJcIixcInBhcnNlRmxvYXRcIixcInBhcnNlSW50XCJdLE1hdGg6W1wiY2x6MzJcIixcImltdWxcIixcInNpZ25cIixcImxvZzEwXCIsXCJsb2cyXCIsXCJsb2cxcFwiLFwiZXhwbTFcIixcImNvc2hcIixcInNpbmhcIixcInRhbmhcIixcImFjb3NoXCIsXCJhc2luaFwiLFwiYXRhbmhcIixcImh5cG90XCIsXCJ0cnVuY1wiLFwiZnJvdW5kXCIsXCJjYnJ0XCJdLE1hcDpbXCJlbnRyaWVzXCIsXCJrZXlzXCIsXCJ2YWx1ZXNcIl0sU2V0OltcImVudHJpZXNcIixcImtleXNcIixcInZhbHVlc1wiXSxQcm9taXNlOmUuZW1wdHlBcnJheSxQcm9taXNlQ29uc3RydWN0b3I6W1wiYWxsXCIsXCJyYWNlXCIsXCJyZWplY3RcIixcInJlc29sdmVcIl0sU3ltYm9sOltcImZvclwiLFwia2V5Rm9yXCJdLFdlYWtNYXA6W1wiZW50cmllc1wiLFwia2V5c1wiLFwidmFsdWVzXCJdLFdlYWtTZXQ6W1wiZW50cmllc1wiLFwia2V5c1wiLFwidmFsdWVzXCJdLEl0ZXJhdG9yOmUuZW1wdHlBcnJheSxBc3luY0l0ZXJhdG9yOmUuZW1wdHlBcnJheSxTdHJpbmc6W1wiY29kZVBvaW50QXRcIixcImluY2x1ZGVzXCIsXCJlbmRzV2l0aFwiLFwibm9ybWFsaXplXCIsXCJyZXBlYXRcIixcInN0YXJ0c1dpdGhcIixcImFuY2hvclwiLFwiYmlnXCIsXCJibGlua1wiLFwiYm9sZFwiLFwiZml4ZWRcIixcImZvbnRjb2xvclwiLFwiZm9udHNpemVcIixcIml0YWxpY3NcIixcImxpbmtcIixcInNtYWxsXCIsXCJzdHJpa2VcIixcInN1YlwiLFwic3VwXCJdLFN0cmluZ0NvbnN0cnVjdG9yOltcImZyb21Db2RlUG9pbnRcIixcInJhd1wiXX0sZXMyMDE2OntBcnJheTpbXCJpbmNsdWRlc1wiXX0sZXMyMDE3OntBdG9taWNzOmUuZW1wdHlBcnJheSxTaGFyZWRBcnJheUJ1ZmZlcjplLmVtcHR5QXJyYXksU3RyaW5nOltcInBhZFN0YXJ0XCIsXCJwYWRFbmRcIl0sT2JqZWN0Q29uc3RydWN0b3I6W1widmFsdWVzXCIsXCJlbnRyaWVzXCIsXCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzXCJdLERhdGVUaW1lRm9ybWF0OltcImZvcm1hdFRvUGFydHNcIl19LGVzMjAxODp7UHJvbWlzZTpbXCJmaW5hbGx5XCJdLFJlZ0V4cE1hdGNoQXJyYXk6W1wiZ3JvdXBzXCJdLFJlZ0V4cEV4ZWNBcnJheTpbXCJncm91cHNcIl0sUmVnRXhwOltcImRvdEFsbFwiXSxJbnRsOltcIlBsdXJhbFJ1bGVzXCJdLEFzeW5jSXRlcmFibGU6ZS5lbXB0eUFycmF5LEFzeW5jSXRlcmFibGVJdGVyYXRvcjplLmVtcHR5QXJyYXksQXN5bmNHZW5lcmF0b3I6ZS5lbXB0eUFycmF5LEFzeW5jR2VuZXJhdG9yRnVuY3Rpb246ZS5lbXB0eUFycmF5LE51bWJlckZvcm1hdDpbXCJmb3JtYXRUb1BhcnRzXCJdfSxlczIwMTk6e0FycmF5OltcImZsYXRcIixcImZsYXRNYXBcIl0sT2JqZWN0Q29uc3RydWN0b3I6W1wiZnJvbUVudHJpZXNcIl0sU3RyaW5nOltcInRyaW1TdGFydFwiLFwidHJpbUVuZFwiLFwidHJpbUxlZnRcIixcInRyaW1SaWdodFwiXSxTeW1ib2w6W1wiZGVzY3JpcHRpb25cIl19LGVzMjAyMDp7QmlnSW50OmUuZW1wdHlBcnJheSxCaWdJbnQ2NEFycmF5OmUuZW1wdHlBcnJheSxCaWdVaW50NjRBcnJheTplLmVtcHR5QXJyYXksUHJvbWlzZUNvbnN0cnVjdG9yOltcImFsbFNldHRsZWRcIl0sU3ltYm9sQ29uc3RydWN0b3I6W1wibWF0Y2hBbGxcIl0sU3RyaW5nOltcIm1hdGNoQWxsXCJdLERhdGFWaWV3OltcInNldEJpZ0ludDY0XCIsXCJzZXRCaWdVaW50NjRcIixcImdldEJpZ0ludDY0XCIsXCJnZXRCaWdVaW50NjRcIl0sUmVsYXRpdmVUaW1lRm9ybWF0OltcImZvcm1hdFwiLFwiZm9ybWF0VG9QYXJ0c1wiLFwicmVzb2x2ZWRPcHRpb25zXCJdfSxlczIwMjE6e1Byb21pc2VDb25zdHJ1Y3RvcjpbXCJhbnlcIl0sU3RyaW5nOltcInJlcGxhY2VBbGxcIl19LGVzMjAyMjp7QXJyYXk6W1wiYXRcIl0sU3RyaW5nOltcImF0XCJdLEludDhBcnJheTpbXCJhdFwiXSxVaW50OEFycmF5OltcImF0XCJdLFVpbnQ4Q2xhbXBlZEFycmF5OltcImF0XCJdLEludDE2QXJyYXk6W1wiYXRcIl0sVWludDE2QXJyYXk6W1wiYXRcIl0sSW50MzJBcnJheTpbXCJhdFwiXSxVaW50MzJBcnJheTpbXCJhdFwiXSxGbG9hdDMyQXJyYXk6W1wiYXRcIl0sRmxvYXQ2NEFycmF5OltcImF0XCJdLEJpZ0ludDY0QXJyYXk6W1wiYXRcIl0sQmlnVWludDY0QXJyYXk6W1wiYXRcIl0sT2JqZWN0Q29uc3RydWN0b3I6W1wiaGFzT3duXCJdLEVycm9yOltcImNhdXNlXCJdfX19ZS5nZXRTY3JpcHRUYXJnZXRGZWF0dXJlcz1fZTt2YXIgd2U7KGZ1bmN0aW9uKGMpe2NbYy5Ob25lPTBdPVwiTm9uZVwiLGNbYy5OZXZlckFzY2lpRXNjYXBlPTFdPVwiTmV2ZXJBc2NpaUVzY2FwZVwiLGNbYy5Kc3hBdHRyaWJ1dGVFc2NhcGU9Ml09XCJKc3hBdHRyaWJ1dGVFc2NhcGVcIixjW2MuVGVybWluYXRlVW50ZXJtaW5hdGVkTGl0ZXJhbHM9NF09XCJUZXJtaW5hdGVVbnRlcm1pbmF0ZWRMaXRlcmFsc1wiLGNbYy5BbGxvd051bWVyaWNTZXBhcmF0b3I9OF09XCJBbGxvd051bWVyaWNTZXBhcmF0b3JcIn0pKHdlPWUuR2V0TGl0ZXJhbFRleHRGbGFnc3x8KGUuR2V0TGl0ZXJhbFRleHRGbGFncz17fSkpO2Z1bmN0aW9uIGRlKGMsdGUseHIpe3ZhciBlaTtpZih0ZSYmeWUoYyx4cikpcmV0dXJuIEJlKHRlLGMpO3N3aXRjaChjLmtpbmQpe2Nhc2UgMTA6e3ZhciBiaT14ciYyP3djOnhyJjF8fEllKGMpJjE2Nzc3MjE2P2tzOlpsO3JldHVybiBjLnNpbmdsZVF1b3RlP1wiJ1wiK2JpKGMudGV4dCwzOSkrXCInXCI6J1wiJytiaShjLnRleHQsMzQpKydcIid9Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMTY6Y2FzZSAxNzp7dmFyIGJpPXhyJjF8fEllKGMpJjE2Nzc3MjE2P2tzOlpsLEZ0PShlaT1jLnJhd1RleHQpIT09bnVsbCYmZWkhPT12b2lkIDA/ZWk6Z2QoYmkoYy50ZXh0LDk2KSk7c3dpdGNoKGMua2luZCl7Y2FzZSAxNDpyZXR1cm5cImBcIitGdCtcImBcIjtjYXNlIDE1OnJldHVyblwiYFwiK0Z0K1wiJHtcIjtjYXNlIDE2OnJldHVyblwifVwiK0Z0K1wiJHtcIjtjYXNlIDE3OnJldHVyblwifVwiK0Z0K1wiYFwifWJyZWFrfWNhc2UgODpjYXNlIDk6cmV0dXJuIGMudGV4dDtjYXNlIDEzOnJldHVybiB4ciY0JiZjLmlzVW50ZXJtaW5hdGVkP2MudGV4dCsoYy50ZXh0LmNoYXJDb2RlQXQoYy50ZXh0Lmxlbmd0aC0xKT09PTkyP1wiIC9cIjpcIi9cIik6Yy50ZXh0fXJldHVybiBlLkRlYnVnLmZhaWwoXCJMaXRlcmFsIGtpbmQgJ1wiLmNvbmNhdChjLmtpbmQsXCInIG5vdCBhY2NvdW50ZWQgZm9yLlwiKSl9ZS5nZXRMaXRlcmFsVGV4dD1kZTtmdW5jdGlvbiB5ZShjLHRlKXtyZXR1cm4gRl8oYyl8fCFjLnBhcmVudHx8dGUmNCYmYy5pc1VudGVybWluYXRlZD8hMTplLmlzTnVtZXJpY0xpdGVyYWwoYykmJmMubnVtZXJpY0xpdGVyYWxGbGFncyY1MTI/ISEodGUmOCk6IWUuaXNCaWdJbnRMaXRlcmFsKGMpfWZ1bmN0aW9uIEFlKGMpe3JldHVybiBlLmlzU3RyaW5nKGMpPydcIicrWmwoYykrJ1wiJzpcIlwiK2N9ZS5nZXRUZXh0T2ZDb25zdGFudFZhbHVlPUFlO2Z1bmN0aW9uIGVyKGMpe3JldHVybiBlLmdldEJhc2VGaWxlTmFtZShjKS5yZXBsYWNlKC9eKFxcZCkvLFwiXyQxXCIpLnJlcGxhY2UoL1xcVy9nLFwiX1wiKX1lLm1ha2VJZGVudGlmaWVyRnJvbU1vZHVsZU5hbWU9ZXI7ZnVuY3Rpb24gaXIoYyl7cmV0dXJuKGUuZ2V0Q29tYmluZWROb2RlRmxhZ3MoYykmMykhPT0wfHxDcihjKX1lLmlzQmxvY2tPckNhdGNoU2NvcGVkPWlyO2Z1bmN0aW9uIENyKGMpe3ZhciB0ZT1qZihjKTtyZXR1cm4gdGUua2luZD09PTI1NCYmdGUucGFyZW50LmtpbmQ9PT0yOTJ9ZS5pc0NhdGNoQ2xhdXNlVmFyaWFibGVEZWNsYXJhdGlvbk9yQmluZGluZ0VsZW1lbnQ9Q3I7ZnVuY3Rpb24gWWUoYyl7cmV0dXJuIGUuaXNNb2R1bGVEZWNsYXJhdGlvbihjKSYmKGMubmFtZS5raW5kPT09MTB8fEdlKGMpKX1lLmlzQW1iaWVudE1vZHVsZT1ZZTtmdW5jdGlvbiBCcihjKXtyZXR1cm4gZS5pc01vZHVsZURlY2xhcmF0aW9uKGMpJiZjLm5hbWUua2luZD09PTEwfWUuaXNNb2R1bGVXaXRoU3RyaW5nTGl0ZXJhbE5hbWU9QnI7ZnVuY3Rpb24gRXIoYyl7cmV0dXJuIGUuaXNNb2R1bGVEZWNsYXJhdGlvbihjKSYmZS5pc1N0cmluZ0xpdGVyYWwoYy5uYW1lKX1lLmlzTm9uR2xvYmFsQW1iaWVudE1vZHVsZT1FcjtmdW5jdGlvbiBOZShjKXtyZXR1cm4gZS5pc01vZHVsZURlY2xhcmF0aW9uKGMpfHxlLmlzSWRlbnRpZmllcihjKX1lLmlzRWZmZWN0aXZlTW9kdWxlRGVjbGFyYXRpb249TmU7ZnVuY3Rpb24gbihjKXtyZXR1cm4gbHIoYy52YWx1ZURlY2xhcmF0aW9uKX1lLmlzU2hvcnRoYW5kQW1iaWVudE1vZHVsZVN5bWJvbD1uO2Z1bmN0aW9uIGxyKGMpe3JldHVybiEhYyYmYy5raW5kPT09MjYxJiYhYy5ib2R5fWZ1bmN0aW9uIGJlKGMpe3JldHVybiBjLmtpbmQ9PT0zMDV8fGMua2luZD09PTI2MXx8ZS5pc0Z1bmN0aW9uTGlrZU9yQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKGMpfWUuaXNCbG9ja1Njb3BlZENvbnRhaW5lclRvcExldmVsPWJlO2Z1bmN0aW9uIEdlKGMpe3JldHVybiEhKGMuZmxhZ3MmMTAyNCl9ZS5pc0dsb2JhbFNjb3BlQXVnbWVudGF0aW9uPUdlO2Z1bmN0aW9uIHVyKGMpe3JldHVybiBZZShjKSYmeXIoYyl9ZS5pc0V4dGVybmFsTW9kdWxlQXVnbWVudGF0aW9uPXVyO2Z1bmN0aW9uIHlyKGMpe3N3aXRjaChjLnBhcmVudC5raW5kKXtjYXNlIDMwNTpyZXR1cm4gZS5pc0V4dGVybmFsTW9kdWxlKGMucGFyZW50KTtjYXNlIDI2MjpyZXR1cm4gWWUoYy5wYXJlbnQucGFyZW50KSYmZS5pc1NvdXJjZUZpbGUoYy5wYXJlbnQucGFyZW50LnBhcmVudCkmJiFlLmlzRXh0ZXJuYWxNb2R1bGUoYy5wYXJlbnQucGFyZW50LnBhcmVudCl9cmV0dXJuITF9ZS5pc01vZHVsZUF1Z21lbnRhdGlvbkV4dGVybmFsPXlyO2Z1bmN0aW9uIElyKGMpe3ZhciB0ZTtyZXR1cm4odGU9Yy5kZWNsYXJhdGlvbnMpPT09bnVsbHx8dGU9PT12b2lkIDA/dm9pZCAwOnRlLmZpbmQoZnVuY3Rpb24oeHIpe3JldHVybiF1cih4cikmJiEoZS5pc01vZHVsZURlY2xhcmF0aW9uKHhyKSYmR2UoeHIpKX0pfWUuZ2V0Tm9uQXVnbWVudGF0aW9uRGVjbGFyYXRpb249SXI7ZnVuY3Rpb24gd3IoYyl7cmV0dXJuIGM9PT1lLk1vZHVsZUtpbmQuQ29tbW9uSlN8fGM9PT1lLk1vZHVsZUtpbmQuTm9kZTE2fHxjPT09ZS5Nb2R1bGVLaW5kLk5vZGVOZXh0fWZ1bmN0aW9uIFVyKGMsdGUpe3JldHVybiBlLmlzRXh0ZXJuYWxNb2R1bGUoYyl8fHRlLmlzb2xhdGVkTW9kdWxlc3x8d3IoSmEodGUpKSYmISFjLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yfWUuaXNFZmZlY3RpdmVFeHRlcm5hbE1vZHVsZT1VcjtmdW5jdGlvbiBpaShjLHRlKXtzd2l0Y2goYy5zY3JpcHRLaW5kKXtjYXNlIDE6Y2FzZSAzOmNhc2UgMjpjYXNlIDQ6YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4gYy5pc0RlY2xhcmF0aW9uRmlsZT8hMTpTZCh0ZSxcImFsd2F5c1N0cmljdFwiKXx8ZS5zdGFydHNXaXRoVXNlU3RyaWN0KGMuc3RhdGVtZW50cyk/ITA6ZS5pc0V4dGVybmFsTW9kdWxlKGMpfHx0ZS5pc29sYXRlZE1vZHVsZXM/SmEodGUpPj1lLk1vZHVsZUtpbmQuRVMyMDE1PyEwOiF0ZS5ub0ltcGxpY2l0VXNlU3RyaWN0OiExfWUuaXNFZmZlY3RpdmVTdHJpY3RNb2RlU291cmNlRmlsZT1paTtmdW5jdGlvbiBtaShjLHRlKXtzd2l0Y2goYy5raW5kKXtjYXNlIDMwNTpjYXNlIDI2MzpjYXNlIDI5MjpjYXNlIDI2MTpjYXNlIDI0MjpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDE3MTpjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDE2NzpjYXNlIDE3MDpyZXR1cm4hMDtjYXNlIDIzNTpyZXR1cm4hZS5pc0Z1bmN0aW9uTGlrZU9yQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKHRlKX1yZXR1cm4hMX1lLmlzQmxvY2tTY29wZT1taTtmdW5jdGlvbiBwZShjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDMzODpjYXNlIDM0NTpjYXNlIDMyMzpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiBlLmFzc2VydFR5cGUoYyksb3IoYyl9fWUuaXNEZWNsYXJhdGlvbldpdGhUeXBlUGFyYW1ldGVycz1wZTtmdW5jdGlvbiBvcihjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDE3NDpjYXNlIDE3NTpjYXNlIDE2ODpjYXNlIDE3NjpjYXNlIDE3OTpjYXNlIDE4MDpjYXNlIDMxNzpjYXNlIDI1NzpjYXNlIDIyNjpjYXNlIDI1ODpjYXNlIDI1OTpjYXNlIDM0NDpjYXNlIDI1NjpjYXNlIDE2OTpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDIxMzpjYXNlIDIxNDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiBlLmFzc2VydFR5cGUoYyksITF9fWUuaXNEZWNsYXJhdGlvbldpdGhUeXBlUGFyYW1ldGVyQ2hpbGRyZW49b3I7ZnVuY3Rpb24gcXIoYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAyNjY6Y2FzZSAyNjU6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc0FueUltcG9ydFN5bnRheD1xcjtmdW5jdGlvbiBzaShjKXtyZXR1cm4gcXIoYyl8fEdvKGMpfWUuaXNBbnlJbXBvcnRPckJhcmVPckFjY2Vzc2VkUmVxdWlyZT1zaTtmdW5jdGlvbiBEaShjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDI2NjpjYXNlIDI2NTpjYXNlIDIzNzpjYXNlIDI1NzpjYXNlIDI1NjpjYXNlIDI2MTpjYXNlIDI1OTpjYXNlIDI1ODpjYXNlIDI2MDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1lLmlzTGF0ZVZpc2liaWxpdHlQYWludGVkU3RhdGVtZW50PURpO2Z1bmN0aW9uIHdpKGMpe3JldHVybiBYaShjKXx8ZS5pc01vZHVsZURlY2xhcmF0aW9uKGMpfHxlLmlzSW1wb3J0VHlwZU5vZGUoYyl8fFZyKGMpfWUuaGFzUG9zc2libGVFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZT13aTtmdW5jdGlvbiBYaShjKXtyZXR1cm4gcXIoYyl8fGUuaXNFeHBvcnREZWNsYXJhdGlvbihjKX1lLmlzQW55SW1wb3J0T3JSZUV4cG9ydD1YaTtmdW5jdGlvbiBldChjKXtyZXR1cm4gZS5maW5kQW5jZXN0b3IoYy5wYXJlbnQsZnVuY3Rpb24odGUpe3JldHVybiBtaSh0ZSx0ZS5wYXJlbnQpfSl9ZS5nZXRFbmNsb3NpbmdCbG9ja1Njb3BlQ29udGFpbmVyPWV0O2Z1bmN0aW9uIEdpKGMsdGUpe2Zvcih2YXIgeHI9ZXQoYyk7eHI7KXRlKHhyKSx4cj1ldCh4cil9ZS5mb3JFYWNoRW5jbG9zaW5nQmxvY2tTY29wZUNvbnRhaW5lcj1HaTtmdW5jdGlvbiBXdChjKXtyZXR1cm4hY3x8YihjKT09PTA/XCIoTWlzc2luZylcIjpFZShjKX1lLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nPVd0O2Z1bmN0aW9uIFp0KGMpe3JldHVybiBjLmRlY2xhcmF0aW9uP1d0KGMuZGVjbGFyYXRpb24ucGFyYW1ldGVyc1swXS5uYW1lKTp2b2lkIDB9ZS5nZXROYW1lRnJvbUluZGV4SW5mbz1adDtmdW5jdGlvbiBfcihjKXtyZXR1cm4gYy5raW5kPT09MTYyJiYhbnMoYy5leHByZXNzaW9uKX1lLmlzQ29tcHV0ZWROb25MaXRlcmFsTmFtZT1fcjtmdW5jdGlvbiBwaShjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDc5OmNhc2UgODA6cmV0dXJuIGMuZXNjYXBlZFRleHQ7Y2FzZSAxMDpjYXNlIDg6Y2FzZSAxNDpyZXR1cm4gZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoYy50ZXh0KTtjYXNlIDE2MjpyZXR1cm4gbnMoYy5leHByZXNzaW9uKT9lLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhjLmV4cHJlc3Npb24udGV4dCk6dm9pZCAwO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoYyl9fWUudHJ5R2V0VGV4dE9mUHJvcGVydHlOYW1lPXBpO2Z1bmN0aW9uIGFlKGMpe3JldHVybiBlLkRlYnVnLmNoZWNrRGVmaW5lZChwaShjKSl9ZS5nZXRUZXh0T2ZQcm9wZXJ0eU5hbWU9YWU7ZnVuY3Rpb24gWGUoYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAxMDg6cmV0dXJuXCJ0aGlzXCI7Y2FzZSA4MDpjYXNlIDc5OnJldHVybiBiKGMpPT09MD9lLmlkVGV4dChjKTpFZShjKTtjYXNlIDE2MTpyZXR1cm4gWGUoYy5sZWZ0KStcIi5cIitYZShjLnJpZ2h0KTtjYXNlIDIwNjpyZXR1cm4gZS5pc0lkZW50aWZpZXIoYy5uYW1lKXx8ZS5pc1ByaXZhdGVJZGVudGlmaWVyKGMubmFtZSk/WGUoYy5leHByZXNzaW9uKStcIi5cIitYZShjLm5hbWUpOmUuRGVidWcuYXNzZXJ0TmV2ZXIoYy5uYW1lKTtjYXNlIDMxMTpyZXR1cm4gWGUoYy5sZWZ0KStYZShjLnJpZ2h0KTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKGMpfX1lLmVudGl0eU5hbWVUb1N0cmluZz1YZTtmdW5jdGlvbiBKcihjLHRlLHhyLGVpLGJpLEZ0KXt2YXIgb3Q9JChjKTtyZXR1cm4gWmUob3QsYyx0ZSx4cixlaSxiaSxGdCl9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZT1KcjtmdW5jdGlvbiB0aShjLHRlLHhyLGVpLGJpLEZ0LG90KXt2YXIgeGE9ZS5za2lwVHJpdmlhKGMudGV4dCx0ZS5wb3MpO3JldHVybiBIZyhjLHhhLHRlLmVuZC14YSx4cixlaSxiaSxGdCxvdCl9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUFycmF5PXRpO2Z1bmN0aW9uIFplKGMsdGUseHIsZWksYmksRnQsb3Qpe3ZhciB4YT1PZShjLHRlKTtyZXR1cm4gSGcoYyx4YS5zdGFydCx4YS5sZW5ndGgseHIsZWksYmksRnQsb3QpfWUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGU9WmU7ZnVuY3Rpb24gU3IoYyx0ZSx4cil7dmFyIGVpPSQoYyksYmk9T2UoZWksYyk7cmV0dXJuIFdyKGVpLGJpLnN0YXJ0LGJpLmxlbmd0aCx0ZSx4cil9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUZyb21NZXNzYWdlQ2hhaW49U3I7ZnVuY3Rpb24genIoYyx0ZSx4cil7ZS5EZWJ1Zy5hc3NlcnRHcmVhdGVyVGhhbk9yRXF1YWwodGUsMCksZS5EZWJ1Zy5hc3NlcnRHcmVhdGVyVGhhbk9yRXF1YWwoeHIsMCksYyYmKGUuRGVidWcuYXNzZXJ0TGVzc1RoYW5PckVxdWFsKHRlLGMudGV4dC5sZW5ndGgpLGUuRGVidWcuYXNzZXJ0TGVzc1RoYW5PckVxdWFsKHRlK3hyLGMudGV4dC5sZW5ndGgpKX1mdW5jdGlvbiBXcihjLHRlLHhyLGVpLGJpKXtyZXR1cm4genIoYyx0ZSx4cikse2ZpbGU6YyxzdGFydDp0ZSxsZW5ndGg6eHIsY29kZTplaS5jb2RlLGNhdGVnb3J5OmVpLmNhdGVnb3J5LG1lc3NhZ2VUZXh0OmVpLm5leHQ/ZWk6ZWkubWVzc2FnZVRleHQscmVsYXRlZEluZm9ybWF0aW9uOmJpfX1lLmNyZWF0ZUZpbGVEaWFnbm9zdGljRnJvbU1lc3NhZ2VDaGFpbj1XcjtmdW5jdGlvbiBKZShjLHRlLHhyKXtyZXR1cm57ZmlsZTpjLHN0YXJ0OjAsbGVuZ3RoOjAsY29kZTp0ZS5jb2RlLGNhdGVnb3J5OnRlLmNhdGVnb3J5LG1lc3NhZ2VUZXh0OnRlLm5leHQ/dGU6dGUubWVzc2FnZVRleHQscmVsYXRlZEluZm9ybWF0aW9uOnhyfX1lLmNyZWF0ZURpYWdub3N0aWNGb3JGaWxlRnJvbU1lc3NhZ2VDaGFpbj1KZTtmdW5jdGlvbiB4ZShjKXtyZXR1cm4gdHlwZW9mIGMubWVzc2FnZVRleHQ9PVwic3RyaW5nXCI/e2NvZGU6Yy5jb2RlLGNhdGVnb3J5OmMuY2F0ZWdvcnksbWVzc2FnZVRleHQ6Yy5tZXNzYWdlVGV4dCxuZXh0OmMubmV4dH06Yy5tZXNzYWdlVGV4dH1lLmNyZWF0ZURpYWdub3N0aWNNZXNzYWdlQ2hhaW5Gcm9tRGlhZ25vc3RpYz14ZTtmdW5jdGlvbiB2cihjLHRlLHhyKXtyZXR1cm57ZmlsZTpjLHN0YXJ0OnRlLnBvcyxsZW5ndGg6dGUuZW5kLXRlLnBvcyxjb2RlOnhyLmNvZGUsY2F0ZWdvcnk6eHIuY2F0ZWdvcnksbWVzc2FnZVRleHQ6eHIubWVzc2FnZX19ZS5jcmVhdGVEaWFnbm9zdGljRm9yUmFuZ2U9dnI7ZnVuY3Rpb24gbXIoYyx0ZSl7dmFyIHhyPWUuY3JlYXRlU2Nhbm5lcihjLmxhbmd1YWdlVmVyc2lvbiwhMCxjLmxhbmd1YWdlVmFyaWFudCxjLnRleHQsdm9pZCAwLHRlKTt4ci5zY2FuKCk7dmFyIGVpPXhyLmdldFRva2VuUG9zKCk7cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKGVpLHhyLmdldFRleHRQb3MoKSl9ZS5nZXRTcGFuT2ZUb2tlbkF0UG9zaXRpb249bXI7ZnVuY3Rpb24gQXIoYyx0ZSl7dmFyIHhyPWUuc2tpcFRyaXZpYShjLnRleHQsdGUucG9zKTtpZih0ZS5ib2R5JiZ0ZS5ib2R5LmtpbmQ9PT0yMzUpe3ZhciBlaT1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGMsdGUuYm9keS5wb3MpLmxpbmUsYmk9ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihjLHRlLmJvZHkuZW5kKS5saW5lO2lmKGVpPGJpKXJldHVybiBlLmNyZWF0ZVRleHRTcGFuKHhyLGsoZWksYykteHIrMSl9cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKHhyLHRlLmVuZCl9ZnVuY3Rpb24gT2UoYyx0ZSl7dmFyIHhyPXRlO3N3aXRjaCh0ZS5raW5kKXtjYXNlIDMwNTp2YXIgZWk9ZS5za2lwVHJpdmlhKGMudGV4dCwwLCExKTtyZXR1cm4gZWk9PT1jLnRleHQubGVuZ3RoP2UuY3JlYXRlVGV4dFNwYW4oMCwwKTptcihjLGVpKTtjYXNlIDI1NDpjYXNlIDIwMzpjYXNlIDI1NzpjYXNlIDIyNjpjYXNlIDI1ODpjYXNlIDI2MTpjYXNlIDI2MDpjYXNlIDI5OTpjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDI1OTpjYXNlIDE2NzpjYXNlIDE2NjpjYXNlIDI2ODp4cj10ZS5uYW1lO2JyZWFrO2Nhc2UgMjE0OnJldHVybiBBcihjLHRlKTtjYXNlIDI4OTpjYXNlIDI5MDp2YXIgYmk9ZS5za2lwVHJpdmlhKGMudGV4dCx0ZS5wb3MpLEZ0PXRlLnN0YXRlbWVudHMubGVuZ3RoPjA/dGUuc3RhdGVtZW50c1swXS5wb3M6dGUuZW5kO3JldHVybiBlLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhiaSxGdCl9aWYoeHI9PT12b2lkIDApcmV0dXJuIG1yKGMsdGUucG9zKTtlLkRlYnVnLmFzc2VydCghZS5pc0pTRG9jKHhyKSk7dmFyIG90PVUoeHIpLHhhPW90fHxlLmlzSnN4VGV4dCh0ZSk/eHIucG9zOmUuc2tpcFRyaXZpYShjLnRleHQseHIucG9zKTtyZXR1cm4gb3Q/KGUuRGVidWcuYXNzZXJ0KHhhPT09eHIucG9zLFwiVGhpcyBmYWlsdXJlIGNvdWxkIHRyaWdnZXIgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yMDgwOVwiKSxlLkRlYnVnLmFzc2VydCh4YT09PXhyLmVuZCxcIlRoaXMgZmFpbHVyZSBjb3VsZCB0cmlnZ2VyIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjA4MDlcIikpOihlLkRlYnVnLmFzc2VydCh4YT49eHIucG9zLFwiVGhpcyBmYWlsdXJlIGNvdWxkIHRyaWdnZXIgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yMDgwOVwiKSxlLkRlYnVnLmFzc2VydCh4YTw9eHIuZW5kLFwiVGhpcyBmYWlsdXJlIGNvdWxkIHRyaWdnZXIgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yMDgwOVwiKSksZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMoeGEseHIuZW5kKX1lLmdldEVycm9yU3BhbkZvck5vZGU9T2U7ZnVuY3Rpb24gbnIoYyl7cmV0dXJuKGMuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3J8fGMuY29tbW9uSnNNb2R1bGVJbmRpY2F0b3IpIT09dm9pZCAwfWUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGU9bnI7ZnVuY3Rpb24gTXIoYyl7cmV0dXJuIGMuc2NyaXB0S2luZD09PTZ9ZS5pc0pzb25Tb3VyY2VGaWxlPU1yO2Z1bmN0aW9uIFBlKGMpe3JldHVybiEhKGUuZ2V0Q29tYmluZWRNb2RpZmllckZsYWdzKGMpJjIwNDgpfWUuaXNFbnVtQ29uc3Q9UGU7ZnVuY3Rpb24gVWUoYyl7cmV0dXJuISEoZS5nZXRDb21iaW5lZE1vZGlmaWVyRmxhZ3MoYykmNjQmJiFlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihjLGMucGFyZW50KSl9ZS5pc0RlY2xhcmF0aW9uUmVhZG9ubHk9VWU7ZnVuY3Rpb24gZnIoYyl7cmV0dXJuISEoZS5nZXRDb21iaW5lZE5vZGVGbGFncyhjKSYyKX1lLmlzVmFyQ29uc3Q9ZnI7ZnVuY3Rpb24gRGUoYyl7cmV0dXJuISEoZS5nZXRDb21iaW5lZE5vZGVGbGFncyhjKSYxKX1lLmlzTGV0PURlO2Z1bmN0aW9uIGdyKGMpe3JldHVybiBjLmtpbmQ9PT0yMDgmJmMuZXhwcmVzc2lvbi5raW5kPT09MTA2fWUuaXNTdXBlckNhbGw9Z3I7ZnVuY3Rpb24gVnIoYyl7cmV0dXJuIGMua2luZD09PTIwOCYmYy5leHByZXNzaW9uLmtpbmQ9PT0xMDB9ZS5pc0ltcG9ydENhbGw9VnI7ZnVuY3Rpb24gVHIoYyl7cmV0dXJuIGUuaXNNZXRhUHJvcGVydHkoYykmJmMua2V5d29yZFRva2VuPT09MTAwJiZjLm5hbWUuZXNjYXBlZFRleHQ9PT1cIm1ldGFcIn1lLmlzSW1wb3J0TWV0YT1UcjtmdW5jdGlvbiB2aShjKXtyZXR1cm4gZS5pc0ltcG9ydFR5cGVOb2RlKGMpJiZlLmlzTGl0ZXJhbFR5cGVOb2RlKGMuYXJndW1lbnQpJiZlLmlzU3RyaW5nTGl0ZXJhbChjLmFyZ3VtZW50LmxpdGVyYWwpfWUuaXNMaXRlcmFsSW1wb3J0VHlwZU5vZGU9dmk7ZnVuY3Rpb24gVWkoYyl7cmV0dXJuIGMua2luZD09PTIzOCYmYy5leHByZXNzaW9uLmtpbmQ9PT0xMH1lLmlzUHJvbG9ndWVEaXJlY3RpdmU9VWk7ZnVuY3Rpb24gWWkoYyl7cmV0dXJuISEoSWUoYykmMTA0ODU3Nil9ZS5pc0N1c3RvbVByb2xvZ3VlPVlpO2Z1bmN0aW9uIFdpKGMpe3JldHVybiBZaShjKSYmZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oYyl9ZS5pc0hvaXN0ZWRGdW5jdGlvbj1XaTtmdW5jdGlvbiBjdChjKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoYy5uYW1lKSYmIWMuaW5pdGlhbGl6ZXJ9ZnVuY3Rpb24gTGkoYyl7cmV0dXJuIFlpKGMpJiZlLmlzVmFyaWFibGVTdGF0ZW1lbnQoYykmJmUuZXZlcnkoYy5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLGN0KX1lLmlzSG9pc3RlZFZhcmlhYmxlU3RhdGVtZW50PUxpO2Z1bmN0aW9uIG50KGMsdGUpe3JldHVybiBjLmtpbmQhPT0xMT9lLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKHRlLnRleHQsYy5wb3MpOnZvaWQgMH1lLmdldExlYWRpbmdDb21tZW50UmFuZ2VzT2ZOb2RlPW50O2Z1bmN0aW9uIE10KGMsdGUpe3ZhciB4cj1jLmtpbmQ9PT0xNjR8fGMua2luZD09PTE2M3x8Yy5raW5kPT09MjEzfHxjLmtpbmQ9PT0yMTR8fGMua2luZD09PTIxMnx8Yy5raW5kPT09MjU0fHxjLmtpbmQ9PT0yNzU/ZS5jb25jYXRlbmF0ZShlLmdldFRyYWlsaW5nQ29tbWVudFJhbmdlcyh0ZSxjLnBvcyksZS5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyh0ZSxjLnBvcykpOmUuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXModGUsYy5wb3MpO3JldHVybiBlLmZpbHRlcih4cixmdW5jdGlvbihlaSl7cmV0dXJuIHRlLmNoYXJDb2RlQXQoZWkucG9zKzEpPT09NDImJnRlLmNoYXJDb2RlQXQoZWkucG9zKzIpPT09NDImJnRlLmNoYXJDb2RlQXQoZWkucG9zKzMpIT09NDd9KX1lLmdldEpTRG9jQ29tbWVudFJhbmdlcz1NdCxlLmZ1bGxUcmlwbGVTbGFzaFJlZmVyZW5jZVBhdGhSZWdFeD0vXihcXC9cXC9cXC9cXHMqPHJlZmVyZW5jZVxccytwYXRoXFxzKj1cXHMqKSgoJ1teJ10qJyl8KFwiW15cIl0qXCIpKS4qP1xcLz4vO3ZhciB4dD0vXihcXC9cXC9cXC9cXHMqPHJlZmVyZW5jZVxccyt0eXBlc1xccyo9XFxzKikoKCdbXiddKicpfChcIlteXCJdKlwiKSkuKj9cXC8+LztlLmZ1bGxUcmlwbGVTbGFzaEFNRFJlZmVyZW5jZVBhdGhSZWdFeD0vXihcXC9cXC9cXC9cXHMqPGFtZC1kZXBlbmRlbmN5XFxzK3BhdGhcXHMqPVxccyopKCgnW14nXSonKXwoXCJbXlwiXSpcIikpLio/XFwvPi87dmFyIHV0PS9eKFxcL1xcL1xcL1xccyo8cmVmZXJlbmNlXFxzK25vLWRlZmF1bHQtbGliXFxzKj1cXHMqKSgoJ1teJ10qJyl8KFwiW15cIl0qXCIpKVxccypcXC8+LztmdW5jdGlvbiBEdChjKXtpZigxNzc8PWMua2luZCYmYy5raW5kPD0yMDApcmV0dXJuITA7c3dpdGNoKGMua2luZCl7Y2FzZSAxMzA6Y2FzZSAxNTU6Y2FzZSAxNDc6Y2FzZSAxNTg6Y2FzZSAxNTA6Y2FzZSAxMzM6Y2FzZSAxNTE6Y2FzZSAxNDg6Y2FzZSAxNTM6Y2FzZSAxNDM6cmV0dXJuITA7Y2FzZSAxMTQ6cmV0dXJuIGMucGFyZW50LmtpbmQhPT0yMTc7Y2FzZSAyMjg6cmV0dXJuIGUuaXNIZXJpdGFnZUNsYXVzZShjLnBhcmVudCkmJiFGYyhjKTtjYXNlIDE2MzpyZXR1cm4gYy5wYXJlbnQua2luZD09PTE5NXx8Yy5wYXJlbnQua2luZD09PTE5MDtjYXNlIDc5OihjLnBhcmVudC5raW5kPT09MTYxJiZjLnBhcmVudC5yaWdodD09PWN8fGMucGFyZW50LmtpbmQ9PT0yMDYmJmMucGFyZW50Lm5hbWU9PT1jKSYmKGM9Yy5wYXJlbnQpLGUuRGVidWcuYXNzZXJ0KGMua2luZD09PTc5fHxjLmtpbmQ9PT0xNjF8fGMua2luZD09PTIwNixcIidub2RlJyB3YXMgZXhwZWN0ZWQgdG8gYmUgYSBxdWFsaWZpZWQgbmFtZSwgaWRlbnRpZmllciBvciBwcm9wZXJ0eSBhY2Nlc3MgaW4gJ2lzUGFydE9mVHlwZU5vZGUnLlwiKTtjYXNlIDE2MTpjYXNlIDIwNjpjYXNlIDEwODp7dmFyIHRlPWMucGFyZW50O2lmKHRlLmtpbmQ9PT0xODEpcmV0dXJuITE7aWYodGUua2luZD09PTIwMClyZXR1cm4hdGUuaXNUeXBlT2Y7aWYoMTc3PD10ZS5raW5kJiZ0ZS5raW5kPD0yMDApcmV0dXJuITA7c3dpdGNoKHRlLmtpbmQpe2Nhc2UgMjI4OnJldHVybiBlLmlzSGVyaXRhZ2VDbGF1c2UodGUucGFyZW50KSYmIUZjKHRlKTtjYXNlIDE2MzpyZXR1cm4gYz09PXRlLmNvbnN0cmFpbnQ7Y2FzZSAzNDQ6cmV0dXJuIGM9PT10ZS5jb25zdHJhaW50O2Nhc2UgMTY3OmNhc2UgMTY2OmNhc2UgMTY0OmNhc2UgMjU0OnJldHVybiBjPT09dGUudHlwZTtjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDE3MTpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gYz09PXRlLnR5cGU7Y2FzZSAxNzQ6Y2FzZSAxNzU6Y2FzZSAxNzY6cmV0dXJuIGM9PT10ZS50eXBlO2Nhc2UgMjExOnJldHVybiBjPT09dGUudHlwZTtjYXNlIDIwODpjYXNlIDIwOTpyZXR1cm4gZS5jb250YWlucyh0ZS50eXBlQXJndW1lbnRzLGMpO2Nhc2UgMjEwOnJldHVybiExfX19cmV0dXJuITF9ZS5pc1BhcnRPZlR5cGVOb2RlPUR0O2Z1bmN0aW9uIFJ0KGMsdGUpe2Zvcig7Yzspe2lmKGMua2luZD09PXRlKXJldHVybiEwO2M9Yy5wYXJlbnR9cmV0dXJuITF9ZS5pc0NoaWxkT2ZOb2RlV2l0aEtpbmQ9UnQ7ZnVuY3Rpb24gSWkoYyx0ZSl7cmV0dXJuIHhyKGMpO2Z1bmN0aW9uIHhyKGVpKXtzd2l0Y2goZWkua2luZCl7Y2FzZSAyNDc6cmV0dXJuIHRlKGVpKTtjYXNlIDI2MzpjYXNlIDIzNTpjYXNlIDIzOTpjYXNlIDI0MDpjYXNlIDI0MTpjYXNlIDI0MjpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0ODpjYXNlIDI0OTpjYXNlIDI4OTpjYXNlIDI5MDpjYXNlIDI1MDpjYXNlIDI1MjpjYXNlIDI5MjpyZXR1cm4gZS5mb3JFYWNoQ2hpbGQoZWkseHIpfX19ZS5mb3JFYWNoUmV0dXJuU3RhdGVtZW50PUlpO2Z1bmN0aW9uIEtpKGMsdGUpe3JldHVybiB4cihjKTtmdW5jdGlvbiB4cihlaSl7c3dpdGNoKGVpLmtpbmQpe2Nhc2UgMjI0OnRlKGVpKTt2YXIgYmk9ZWkuZXhwcmVzc2lvbjtiaSYmeHIoYmkpO3JldHVybjtjYXNlIDI2MDpjYXNlIDI1ODpjYXNlIDI2MTpjYXNlIDI1OTpyZXR1cm47ZGVmYXVsdDppZihlLmlzRnVuY3Rpb25MaWtlKGVpKSl7aWYoZWkubmFtZSYmZWkubmFtZS5raW5kPT09MTYyKXt4cihlaS5uYW1lLmV4cHJlc3Npb24pO3JldHVybn19ZWxzZSBEdChlaSl8fGUuZm9yRWFjaENoaWxkKGVpLHhyKX19fWUuZm9yRWFjaFlpZWxkRXhwcmVzc2lvbj1LaTtmdW5jdGlvbiBGaShjKXtyZXR1cm4gYyYmYy5raW5kPT09MTgzP2MuZWxlbWVudFR5cGU6YyYmYy5raW5kPT09MTc4P2Uuc2luZ2xlT3JVbmRlZmluZWQoYy50eXBlQXJndW1lbnRzKTp2b2lkIDB9ZS5nZXRSZXN0UGFyYW1ldGVyRWxlbWVudFR5cGU9Rmk7ZnVuY3Rpb24gdWkoYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAyNTg6Y2FzZSAyNTc6Y2FzZSAyMjY6Y2FzZSAxODI6cmV0dXJuIGMubWVtYmVycztjYXNlIDIwNTpyZXR1cm4gYy5wcm9wZXJ0aWVzfX1lLmdldE1lbWJlcnNPZkRlY2xhcmF0aW9uPXVpO2Z1bmN0aW9uIEJ0KGMpe2lmKGMpc3dpdGNoKGMua2luZCl7Y2FzZSAyMDM6Y2FzZSAyOTk6Y2FzZSAxNjQ6Y2FzZSAyOTY6Y2FzZSAxNjc6Y2FzZSAxNjY6Y2FzZSAyOTc6Y2FzZSAyNTQ6cmV0dXJuITB9cmV0dXJuITF9ZS5pc1ZhcmlhYmxlTGlrZT1CdDtmdW5jdGlvbiB3dChjKXtyZXR1cm4gQnQoYyl8fGUuaXNBY2Nlc3NvcihjKX1lLmlzVmFyaWFibGVMaWtlT3JBY2Nlc3Nvcj13dDtmdW5jdGlvbiBuYShjKXtyZXR1cm4gYy5wYXJlbnQua2luZD09PTI1NSYmYy5wYXJlbnQucGFyZW50LmtpbmQ9PT0yMzd9ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25JblZhcmlhYmxlU3RhdGVtZW50PW5hO2Z1bmN0aW9uIEFpKGMpe3JldHVybiBDdChjKT9lLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oYy5wYXJlbnQpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihjLnBhcmVudC5wYXJlbnQpJiZIcihjLnBhcmVudC5wYXJlbnQpPT09Mnx8T2koYy5wYXJlbnQpOiExfWUuaXNDb21tb25Kc0V4cG9ydGVkRXhwcmVzc2lvbj1BaTtmdW5jdGlvbiBPaShjKXtyZXR1cm4gQ3QoYyk/ZS5pc0JpbmFyeUV4cHJlc3Npb24oYykmJkhyKGMpPT09MTohMX1lLmlzQ29tbW9uSnNFeHBvcnRQcm9wZXJ0eUFzc2lnbm1lbnQ9T2k7ZnVuY3Rpb24gamkoYyl7cmV0dXJuKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGMpP2ZyKGMpJiZlLmlzSWRlbnRpZmllcihjLm5hbWUpJiZuYShjKTplLmlzUHJvcGVydHlEZWNsYXJhdGlvbihjKT93cChjKSYmbWMoYyk6ZS5pc1Byb3BlcnR5U2lnbmF0dXJlKGMpJiZ3cChjKSl8fE9pKGMpfWUuaXNWYWxpZEVTU3ltYm9sRGVjbGFyYXRpb249amk7ZnVuY3Rpb24gVmkoYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAyNTY6Y2FzZSAyMTM6cmV0dXJuITB9cmV0dXJuITF9ZS5pbnRyb2R1Y2VzQXJndW1lbnRzRXhvdGljT2JqZWN0PVZpO2Z1bmN0aW9uIGF0KGMsdGUpe2Zvcig7Oyl7aWYodGUmJnRlKGMpLGMuc3RhdGVtZW50LmtpbmQhPT0yNTApcmV0dXJuIGMuc3RhdGVtZW50O2M9Yy5zdGF0ZW1lbnR9fWUudW53cmFwSW5uZXJtb3N0U3RhdGVtZW50T2ZMYWJlbD1hdDtmdW5jdGlvbiBBdChjKXtyZXR1cm4gYyYmYy5raW5kPT09MjM1JiZlLmlzRnVuY3Rpb25MaWtlKGMucGFyZW50KX1lLmlzRnVuY3Rpb25CbG9jaz1BdDtmdW5jdGlvbiBiYShjKXtyZXR1cm4gYyYmYy5raW5kPT09MTY5JiZjLnBhcmVudC5raW5kPT09MjA1fWUuaXNPYmplY3RMaXRlcmFsTWV0aG9kPWJhO2Z1bmN0aW9uICRhKGMpe3JldHVybihjLmtpbmQ9PT0xNjl8fGMua2luZD09PTE3Mnx8Yy5raW5kPT09MTczKSYmKGMucGFyZW50LmtpbmQ9PT0yMDV8fGMucGFyZW50LmtpbmQ9PT0yMjYpfWUuaXNPYmplY3RMaXRlcmFsT3JDbGFzc0V4cHJlc3Npb25NZXRob2RPckFjY2Vzc29yPSRhO2Z1bmN0aW9uIFFhKGMpe3JldHVybiBjJiZjLmtpbmQ9PT0xfWUuaXNJZGVudGlmaWVyVHlwZVByZWRpY2F0ZT1RYTtmdW5jdGlvbiBhaShjKXtyZXR1cm4gYyYmYy5raW5kPT09MH1lLmlzVGhpc1R5cGVQcmVkaWNhdGU9YWk7ZnVuY3Rpb24gRG4oYyx0ZSx4cil7cmV0dXJuIGMucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24oZWkpe2lmKGVpLmtpbmQ9PT0yOTYpe3ZhciBiaT1waShlaS5uYW1lKTtyZXR1cm4gdGU9PT1iaXx8ISF4ciYmeHI9PT1iaX1yZXR1cm4hMX0pfWUuZ2V0UHJvcGVydHlBc3NpZ25tZW50PURuO2Z1bmN0aW9uIGthKGMsdGUseHIpe3JldHVybiBlLmZpcnN0RGVmaW5lZChEbihjLHRlKSxmdW5jdGlvbihlaSl7cmV0dXJuIGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKGVpLmluaXRpYWxpemVyKT9lLmZpbmQoZWkuaW5pdGlhbGl6ZXIuZWxlbWVudHMsZnVuY3Rpb24oYmkpe3JldHVybiBlLmlzU3RyaW5nTGl0ZXJhbChiaSkmJmJpLnRleHQ9PT14cn0pOnZvaWQgMH0pfWUuZ2V0UHJvcGVydHlBcnJheUVsZW1lbnRWYWx1ZT1rYTtmdW5jdGlvbiBCYShjKXtpZihjJiZjLnN0YXRlbWVudHMubGVuZ3RoKXt2YXIgdGU9Yy5zdGF0ZW1lbnRzWzBdLmV4cHJlc3Npb247cmV0dXJuIGUudHJ5Q2FzdCh0ZSxlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24pfX1lLmdldFRzQ29uZmlnT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb249QmE7ZnVuY3Rpb24gcG4oYyx0ZSx4cil7cmV0dXJuIGUuZmlyc3REZWZpbmVkKENuKGMsdGUpLGZ1bmN0aW9uKGVpKXtyZXR1cm4gZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oZWkuaW5pdGlhbGl6ZXIpP2UuZmluZChlaS5pbml0aWFsaXplci5lbGVtZW50cyxmdW5jdGlvbihiaSl7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsKGJpKSYmYmkudGV4dD09PXhyfSk6dm9pZCAwfSl9ZS5nZXRUc0NvbmZpZ1Byb3BBcnJheUVsZW1lbnRWYWx1ZT1wbjtmdW5jdGlvbiBDbihjLHRlKXt2YXIgeHI9QmEoYyk7cmV0dXJuIHhyP0RuKHhyLHRlKTplLmVtcHR5QXJyYXl9ZS5nZXRUc0NvbmZpZ1Byb3BBcnJheT1DbjtmdW5jdGlvbiBCaShjKXtyZXR1cm4gZS5maW5kQW5jZXN0b3IoYy5wYXJlbnQsZS5pc0Z1bmN0aW9uTGlrZSl9ZS5nZXRDb250YWluaW5nRnVuY3Rpb249Qmk7ZnVuY3Rpb24ga24oYyl7cmV0dXJuIGUuZmluZEFuY2VzdG9yKGMucGFyZW50LGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbil9ZS5nZXRDb250YWluaW5nRnVuY3Rpb25EZWNsYXJhdGlvbj1rbjtmdW5jdGlvbiB4bihjKXtyZXR1cm4gZS5maW5kQW5jZXN0b3IoYy5wYXJlbnQsZS5pc0NsYXNzTGlrZSl9ZS5nZXRDb250YWluaW5nQ2xhc3M9eG47ZnVuY3Rpb24gS24oYyl7cmV0dXJuIGUuZmluZEFuY2VzdG9yKGMucGFyZW50LGZ1bmN0aW9uKHRlKXtyZXR1cm4gZS5pc0NsYXNzTGlrZSh0ZSl8fGUuaXNGdW5jdGlvbkxpa2UodGUpP1wicXVpdFwiOmUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24odGUpfSl9ZS5nZXRDb250YWluaW5nQ2xhc3NTdGF0aWNCbG9jaz1LbjtmdW5jdGlvbiBQbihjKXtyZXR1cm4gZS5maW5kQW5jZXN0b3IoYy5wYXJlbnQsZS5pc0Z1bmN0aW9uTGlrZU9yQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKX1lLmdldENvbnRhaW5pbmdGdW5jdGlvbk9yQ2xhc3NTdGF0aWNCbG9jaz1QbjtmdW5jdGlvbiBlbyhjLHRlKXtmb3IoZS5EZWJ1Zy5hc3NlcnQoYy5raW5kIT09MzA1KTs7KXtpZihjPWMucGFyZW50LCFjKXJldHVybiBlLkRlYnVnLmZhaWwoKTtzd2l0Y2goYy5raW5kKXtjYXNlIDE2MjppZihlLmlzQ2xhc3NMaWtlKGMucGFyZW50LnBhcmVudCkpcmV0dXJuIGM7Yz1jLnBhcmVudDticmVhaztjYXNlIDE2NTpjLnBhcmVudC5raW5kPT09MTY0JiZlLmlzQ2xhc3NFbGVtZW50KGMucGFyZW50LnBhcmVudCk/Yz1jLnBhcmVudC5wYXJlbnQ6ZS5pc0NsYXNzRWxlbWVudChjLnBhcmVudCkmJihjPWMucGFyZW50KTticmVhaztjYXNlIDIxNDppZighdGUpY29udGludWU7Y2FzZSAyNTY6Y2FzZSAyMTM6Y2FzZSAyNjE6Y2FzZSAxNzA6Y2FzZSAxNjc6Y2FzZSAxNjY6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxNzQ6Y2FzZSAxNzU6Y2FzZSAxNzY6Y2FzZSAyNjA6Y2FzZSAzMDU6cmV0dXJuIGN9fX1lLmdldFRoaXNDb250YWluZXI9ZW87ZnVuY3Rpb24gUm4oYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAyMTQ6Y2FzZSAyNTY6Y2FzZSAyMTM6Y2FzZSAxNjc6cmV0dXJuITA7Y2FzZSAyMzU6c3dpdGNoKGMucGFyZW50LmtpbmQpe2Nhc2UgMTcxOmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc1RoaXNDb250YWluZXJPckZ1bmN0aW9uQmxvY2s9Um47ZnVuY3Rpb24gRGEoYyl7ZS5pc0lkZW50aWZpZXIoYykmJihlLmlzQ2xhc3NEZWNsYXJhdGlvbihjLnBhcmVudCl8fGUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKGMucGFyZW50KSkmJmMucGFyZW50Lm5hbWU9PT1jJiYoYz1jLnBhcmVudCk7dmFyIHRlPWVvKGMsITApO3JldHVybiBlLmlzU291cmNlRmlsZSh0ZSl9ZS5pc0luVG9wTGV2ZWxDb250ZXh0PURhO2Z1bmN0aW9uIGJvKGMpe3ZhciB0ZT1lbyhjLCExKTtpZih0ZSlzd2l0Y2godGUua2luZCl7Y2FzZSAxNzE6Y2FzZSAyNTY6Y2FzZSAyMTM6cmV0dXJuIHRlfX1lLmdldE5ld1RhcmdldENvbnRhaW5lcj1ibztmdW5jdGlvbiBSbyhjLHRlKXtmb3IoOzspe2lmKGM9Yy5wYXJlbnQsIWMpcmV0dXJuIGM7c3dpdGNoKGMua2luZCl7Y2FzZSAxNjI6Yz1jLnBhcmVudDticmVhaztjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDIxNDppZighdGUpY29udGludWU7Y2FzZSAxNjc6Y2FzZSAxNjY6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxNzA6cmV0dXJuIGM7Y2FzZSAxNjU6Yy5wYXJlbnQua2luZD09PTE2NCYmZS5pc0NsYXNzRWxlbWVudChjLnBhcmVudC5wYXJlbnQpP2M9Yy5wYXJlbnQucGFyZW50OmUuaXNDbGFzc0VsZW1lbnQoYy5wYXJlbnQpJiYoYz1jLnBhcmVudCk7YnJlYWt9fX1lLmdldFN1cGVyQ29udGFpbmVyPVJvO2Z1bmN0aW9uIEVuKGMpe2lmKGMua2luZD09PTIxM3x8Yy5raW5kPT09MjE0KXtmb3IodmFyIHRlPWMseHI9Yy5wYXJlbnQ7eHIua2luZD09PTIxMjspdGU9eHIseHI9eHIucGFyZW50O2lmKHhyLmtpbmQ9PT0yMDgmJnhyLmV4cHJlc3Npb249PT10ZSlyZXR1cm4geHJ9fWUuZ2V0SW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uPUVuO2Z1bmN0aW9uIFduKGMpe3JldHVybiBjLmtpbmQ9PT0xMDZ8fHRvKGMpfWUuaXNTdXBlck9yU3VwZXJQcm9wZXJ0eT1XbjtmdW5jdGlvbiB0byhjKXt2YXIgdGU9Yy5raW5kO3JldHVybih0ZT09PTIwNnx8dGU9PT0yMDcpJiZjLmV4cHJlc3Npb24ua2luZD09PTEwNn1lLmlzU3VwZXJQcm9wZXJ0eT10bztmdW5jdGlvbiBDbyhjKXt2YXIgdGU9Yy5raW5kO3JldHVybih0ZT09PTIwNnx8dGU9PT0yMDcpJiZjLmV4cHJlc3Npb24ua2luZD09PTEwOH1lLmlzVGhpc1Byb3BlcnR5PUNvO2Z1bmN0aW9uIEtvKGMpe3ZhciB0ZTtyZXR1cm4hIWMmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGMpJiYoKHRlPWMuaW5pdGlhbGl6ZXIpPT09bnVsbHx8dGU9PT12b2lkIDA/dm9pZCAwOnRlLmtpbmQpPT09MTA4fWUuaXNUaGlzSW5pdGlhbGl6ZWREZWNsYXJhdGlvbj1LbztmdW5jdGlvbiBPbyhjKXtyZXR1cm4hIWMmJihlLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KGMpfHxlLmlzUHJvcGVydHlBc3NpZ25tZW50KGMpKSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oYy5wYXJlbnQucGFyZW50KSYmYy5wYXJlbnQucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzJiZjLnBhcmVudC5wYXJlbnQucmlnaHQua2luZD09PTEwOH1lLmlzVGhpc0luaXRpYWxpemVkT2JqZWN0QmluZGluZ0V4cHJlc3Npb249T287ZnVuY3Rpb24gbm8oYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAxNzg6cmV0dXJuIGMudHlwZU5hbWU7Y2FzZSAyMjg6cmV0dXJuIEh1KGMuZXhwcmVzc2lvbik/Yy5leHByZXNzaW9uOnZvaWQgMDtjYXNlIDc5OmNhc2UgMTYxOnJldHVybiBjfX1lLmdldEVudGl0eU5hbWVGcm9tVHlwZU5vZGU9bm87ZnVuY3Rpb24gJG8oYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAyMTA6cmV0dXJuIGMudGFnO2Nhc2UgMjgwOmNhc2UgMjc5OnJldHVybiBjLnRhZ05hbWU7ZGVmYXVsdDpyZXR1cm4gYy5leHByZXNzaW9ufX1lLmdldEludm9rZWRFeHByZXNzaW9uPSRvO2Z1bmN0aW9uIFByKGMsdGUseHIpe2lmKGUuaXNOYW1lZERlY2xhcmF0aW9uKGMpJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIoYy5uYW1lKSlyZXR1cm4hMTtzd2l0Y2goYy5raW5kKXtjYXNlIDI1NzpyZXR1cm4hMDtjYXNlIDE2NzpyZXR1cm4gdGUua2luZD09PTI1NztjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDE2OTpyZXR1cm4gYy5ib2R5IT09dm9pZCAwJiZ0ZS5raW5kPT09MjU3O2Nhc2UgMTY0OnJldHVybiB0ZS5ib2R5IT09dm9pZCAwJiYodGUua2luZD09PTE3MXx8dGUua2luZD09PTE2OXx8dGUua2luZD09PTE3MykmJnhyLmtpbmQ9PT0yNTd9cmV0dXJuITF9ZS5ub2RlQ2FuQmVEZWNvcmF0ZWQ9UHI7ZnVuY3Rpb24geGkoYyx0ZSx4cil7cmV0dXJuIGMuZGVjb3JhdG9ycyE9PXZvaWQgMCYmUHIoYyx0ZSx4cil9ZS5ub2RlSXNEZWNvcmF0ZWQ9eGk7ZnVuY3Rpb24gU3QoYyx0ZSx4cil7cmV0dXJuIHhpKGMsdGUseHIpfHxwYShjLHRlKX1lLm5vZGVPckNoaWxkSXNEZWNvcmF0ZWQ9U3Q7ZnVuY3Rpb24gcGEoYyx0ZSl7c3dpdGNoKGMua2luZCl7Y2FzZSAyNTc6cmV0dXJuIGUuc29tZShjLm1lbWJlcnMsZnVuY3Rpb24oeHIpe3JldHVybiBTdCh4cixjLHRlKX0pO2Nhc2UgMTY5OmNhc2UgMTczOmNhc2UgMTcxOnJldHVybiBlLnNvbWUoYy5wYXJhbWV0ZXJzLGZ1bmN0aW9uKHhyKXtyZXR1cm4geGkoeHIsYyx0ZSl9KTtkZWZhdWx0OnJldHVybiExfX1lLmNoaWxkSXNEZWNvcmF0ZWQ9cGE7ZnVuY3Rpb24gZG4oYyl7aWYoeGkoYykpcmV0dXJuITA7dmFyIHRlPU51KGMpO3JldHVybiEhdGUmJnBhKHRlLGMpfWUuY2xhc3NPckNvbnN0cnVjdG9yUGFyYW1ldGVySXNEZWNvcmF0ZWQ9ZG47ZnVuY3Rpb24gSm4oYyl7dmFyIHRlPWMucGFyZW50O3JldHVybiB0ZS5raW5kPT09MjgwfHx0ZS5raW5kPT09Mjc5fHx0ZS5raW5kPT09MjgxP3RlLnRhZ05hbWU9PT1jOiExfWUuaXNKU1hUYWdOYW1lPUpuO2Z1bmN0aW9uIFFlKGMpe3N3aXRjaChjLmtpbmQpe2Nhc2UgMTA2OmNhc2UgMTA0OmNhc2UgMTEwOmNhc2UgOTU6Y2FzZSAxMzpjYXNlIDIwNDpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDIwODpjYXNlIDIwOTpjYXNlIDIxMDpjYXNlIDIyOTpjYXNlIDIxMTpjYXNlIDIzMDpjYXNlIDIxMjpjYXNlIDIxMzpjYXNlIDIyNjpjYXNlIDIxNDpjYXNlIDIxNzpjYXNlIDIxNTpjYXNlIDIxNjpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyNTpjYXNlIDIyMzpjYXNlIDIyNzpjYXNlIDI3ODpjYXNlIDI3OTpjYXNlIDI4MjpjYXNlIDIyNDpjYXNlIDIxODpjYXNlIDIzMTpyZXR1cm4hMDtjYXNlIDE2MTpmb3IoO2MucGFyZW50LmtpbmQ9PT0xNjE7KWM9Yy5wYXJlbnQ7cmV0dXJuIGMucGFyZW50LmtpbmQ9PT0xODF8fGUuaXNKU0RvY0xpbmtMaWtlKGMucGFyZW50KXx8ZS5pc0pTRG9jTmFtZVJlZmVyZW5jZShjLnBhcmVudCl8fGUuaXNKU0RvY01lbWJlck5hbWUoYy5wYXJlbnQpfHxKbihjKTtjYXNlIDMxMTpmb3IoO2UuaXNKU0RvY01lbWJlck5hbWUoYy5wYXJlbnQpOyljPWMucGFyZW50O3JldHVybiBjLnBhcmVudC5raW5kPT09MTgxfHxlLmlzSlNEb2NMaW5rTGlrZShjLnBhcmVudCl8fGUuaXNKU0RvY05hbWVSZWZlcmVuY2UoYy5wYXJlbnQpfHxlLmlzSlNEb2NNZW1iZXJOYW1lKGMucGFyZW50KXx8Sm4oYyk7Y2FzZSA4MDpyZXR1cm4gZS5pc0JpbmFyeUV4cHJlc3Npb24oYy5wYXJlbnQpJiZjLnBhcmVudC5sZWZ0PT09YyYmYy5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kPT09MTAxO2Nhc2UgNzk6aWYoYy5wYXJlbnQua2luZD09PTE4MXx8ZS5pc0pTRG9jTGlua0xpa2UoYy5wYXJlbnQpfHxlLmlzSlNEb2NOYW1lUmVmZXJlbmNlKGMucGFyZW50KXx8ZS5pc0pTRG9jTWVtYmVyTmFtZShjLnBhcmVudCl8fEpuKGMpKXJldHVybiEwO2Nhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDE0OmNhc2UgMTA4OnJldHVybiBHcihjKTtkZWZhdWx0OnJldHVybiExfX1lLmlzRXhwcmVzc2lvbk5vZGU9UWU7ZnVuY3Rpb24gR3IoYyl7dmFyIHRlPWMucGFyZW50O3N3aXRjaCh0ZS5raW5kKXtjYXNlIDI1NDpjYXNlIDE2NDpjYXNlIDE2NzpjYXNlIDE2NjpjYXNlIDI5OTpjYXNlIDI5NjpjYXNlIDIwMzpyZXR1cm4gdGUuaW5pdGlhbGl6ZXI9PT1jO2Nhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjQwOmNhc2UgMjQxOmNhc2UgMjQ3OmNhc2UgMjQ4OmNhc2UgMjQ5OmNhc2UgMjg5OmNhc2UgMjUxOnJldHVybiB0ZS5leHByZXNzaW9uPT09YztjYXNlIDI0Mjp2YXIgeHI9dGU7cmV0dXJuIHhyLmluaXRpYWxpemVyPT09YyYmeHIuaW5pdGlhbGl6ZXIua2luZCE9PTI1NXx8eHIuY29uZGl0aW9uPT09Y3x8eHIuaW5jcmVtZW50b3I9PT1jO2Nhc2UgMjQzOmNhc2UgMjQ0OnZhciBlaT10ZTtyZXR1cm4gZWkuaW5pdGlhbGl6ZXI9PT1jJiZlaS5pbml0aWFsaXplci5raW5kIT09MjU1fHxlaS5leHByZXNzaW9uPT09YztjYXNlIDIxMTpjYXNlIDIyOTpyZXR1cm4gYz09PXRlLmV4cHJlc3Npb247Y2FzZSAyMzM6cmV0dXJuIGM9PT10ZS5leHByZXNzaW9uO2Nhc2UgMTYyOnJldHVybiBjPT09dGUuZXhwcmVzc2lvbjtjYXNlIDE2NTpjYXNlIDI4ODpjYXNlIDI4NzpjYXNlIDI5ODpyZXR1cm4hMDtjYXNlIDIyODpyZXR1cm4gdGUuZXhwcmVzc2lvbj09PWMmJiFEdCh0ZSk7Y2FzZSAyOTc6cmV0dXJuIHRlLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcj09PWM7ZGVmYXVsdDpyZXR1cm4gUWUodGUpfX1lLmlzSW5FeHByZXNzaW9uQ29udGV4dD1HcjtmdW5jdGlvbiBTKGMpe2Zvcig7Yy5raW5kPT09MTYxfHxjLmtpbmQ9PT03OTspYz1jLnBhcmVudDtyZXR1cm4gYy5raW5kPT09MTgxfWUuaXNQYXJ0T2ZUeXBlUXVlcnk9UztmdW5jdGlvbiBDZShjKXtyZXR1cm4gZS5pc05hbWVzcGFjZUV4cG9ydChjKSYmISFjLnBhcmVudC5tb2R1bGVTcGVjaWZpZXJ9ZS5pc05hbWVzcGFjZVJlZXhwb3J0RGVjbGFyYXRpb249Q2U7ZnVuY3Rpb24gcWUoYyl7cmV0dXJuIGMua2luZD09PTI2NSYmYy5tb2R1bGVSZWZlcmVuY2Uua2luZD09PTI3N31lLmlzRXh0ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbj1xZTtmdW5jdGlvbiBicihjKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQocWUoYykpLGMubW9kdWxlUmVmZXJlbmNlLmV4cHJlc3Npb259ZS5nZXRFeHRlcm5hbE1vZHVsZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uRXhwcmVzc2lvbj1icjtmdW5jdGlvbiBacihjKXtyZXR1cm4gR28oYykmJlhhKGMuaW5pdGlhbGl6ZXIpLmFyZ3VtZW50c1swXX1lLmdldEV4dGVybmFsTW9kdWxlUmVxdWlyZUFyZ3VtZW50PVpyO2Z1bmN0aW9uIFNpKGMpe3JldHVybiBjLmtpbmQ9PT0yNjUmJmMubW9kdWxlUmVmZXJlbmNlLmtpbmQhPT0yNzd9ZS5pc0ludGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb249U2k7ZnVuY3Rpb24gUGkoYyl7cmV0dXJuIEN0KGMpfWUuaXNTb3VyY2VGaWxlSlM9UGk7ZnVuY3Rpb24gUWkoYyl7cmV0dXJuIUN0KGMpfWUuaXNTb3VyY2VGaWxlTm90SlM9UWk7ZnVuY3Rpb24gQ3QoYyl7cmV0dXJuISFjJiYhIShjLmZsYWdzJjI2MjE0NCl9ZS5pc0luSlNGaWxlPUN0O2Z1bmN0aW9uIHNhKGMpe3JldHVybiEhYyYmISEoYy5mbGFncyY2NzEwODg2NCl9ZS5pc0luSnNvbkZpbGU9c2E7ZnVuY3Rpb24gZW4oYyl7cmV0dXJuIU1yKGMpfWUuaXNTb3VyY2VGaWxlTm90SnNvbj1lbjtmdW5jdGlvbiBXYShjKXtyZXR1cm4hIWMmJiEhKGMuZmxhZ3MmODM4ODYwOCl9ZS5pc0luSlNEb2M9V2E7ZnVuY3Rpb24gcW4oYyl7cmV0dXJuIGUuaXNUeXBlUmVmZXJlbmNlTm9kZShjKSYmZS5pc0lkZW50aWZpZXIoYy50eXBlTmFtZSkmJmMudHlwZU5hbWUuZXNjYXBlZFRleHQ9PT1cIk9iamVjdFwiJiZjLnR5cGVBcmd1bWVudHMmJmMudHlwZUFyZ3VtZW50cy5sZW5ndGg9PT0yJiYoYy50eXBlQXJndW1lbnRzWzBdLmtpbmQ9PT0xNTB8fGMudHlwZUFyZ3VtZW50c1swXS5raW5kPT09MTQ3KX1lLmlzSlNEb2NJbmRleFNpZ25hdHVyZT1xbjtmdW5jdGlvbiBtbyhjLHRlKXtpZihjLmtpbmQhPT0yMDgpcmV0dXJuITE7dmFyIHhyPWMsZWk9eHIuZXhwcmVzc2lvbixiaT14ci5hcmd1bWVudHM7aWYoZWkua2luZCE9PTc5fHxlaS5lc2NhcGVkVGV4dCE9PVwicmVxdWlyZVwifHxiaS5sZW5ndGghPT0xKXJldHVybiExO3ZhciBGdD1iaVswXTtyZXR1cm4hdGV8fGUuaXNTdHJpbmdMaXRlcmFsTGlrZShGdCl9ZS5pc1JlcXVpcmVDYWxsPW1vO2Z1bmN0aW9uIFNvKGMpe3JldHVybiB5cyhjLCExKX1lLmlzVmFyaWFibGVEZWNsYXJhdGlvbkluaXRpYWxpemVkVG9SZXF1aXJlPVNvO2Z1bmN0aW9uIEdvKGMpe3JldHVybiB5cyhjLCEwKX1lLmlzVmFyaWFibGVEZWNsYXJhdGlvbkluaXRpYWxpemVkVG9CYXJlT3JBY2Nlc3NlZFJlcXVpcmU9R287ZnVuY3Rpb24geXMoYyx0ZSl7cmV0dXJuIGMua2luZD09PTIwMyYmKGM9Yy5wYXJlbnQucGFyZW50KSxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihjKSYmISFjLmluaXRpYWxpemVyJiZtbyh0ZT9YYShjLmluaXRpYWxpemVyKTpjLmluaXRpYWxpemVyLCEwKX1mdW5jdGlvbiBQYyhjKXtyZXR1cm4gZS5pc1ZhcmlhYmxlU3RhdGVtZW50KGMpJiZjLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnMubGVuZ3RoPjAmJmUuZXZlcnkoYy5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHRlKXtyZXR1cm4gU28odGUpfSl9ZS5pc1JlcXVpcmVWYXJpYWJsZVN0YXRlbWVudD1QYztmdW5jdGlvbiBWYyhjKXtyZXR1cm4gYz09PTM5fHxjPT09MzR9ZS5pc1NpbmdsZU9yRG91YmxlUXVvdGU9VmM7ZnVuY3Rpb24gS2MoYyx0ZSl7cmV0dXJuIEJlKHRlLGMpLmNoYXJDb2RlQXQoMCk9PT0zNH1lLmlzU3RyaW5nRG91YmxlUXVvdGVkPUtjO2Z1bmN0aW9uIFhzKGMpe3JldHVybiBlLmlzQmluYXJ5RXhwcmVzc2lvbihjKXx8Y3IoYyl8fGUuaXNJZGVudGlmaWVyKGMpfHxlLmlzQ2FsbEV4cHJlc3Npb24oYyl9ZS5pc0Fzc2lnbm1lbnREZWNsYXJhdGlvbj1YcztmdW5jdGlvbiBwYyhjKXtyZXR1cm4gQ3QoYykmJmMuaW5pdGlhbGl6ZXImJmUuaXNCaW5hcnlFeHByZXNzaW9uKGMuaW5pdGlhbGl6ZXIpJiYoYy5pbml0aWFsaXplci5vcGVyYXRvclRva2VuLmtpbmQ9PT01Nnx8Yy5pbml0aWFsaXplci5vcGVyYXRvclRva2VuLmtpbmQ9PT02MCkmJmMubmFtZSYmSHUoYy5uYW1lKSYmY2UoYy5uYW1lLGMuaW5pdGlhbGl6ZXIubGVmdCk/Yy5pbml0aWFsaXplci5yaWdodDpjLmluaXRpYWxpemVyfWUuZ2V0RWZmZWN0aXZlSW5pdGlhbGl6ZXI9cGM7ZnVuY3Rpb24gaHMoYyl7dmFyIHRlPXBjKGMpO3JldHVybiB0ZSYmUXModGUsbmYoYy5uYW1lKSl9ZS5nZXREZWNsYXJlZEV4cGFuZG9Jbml0aWFsaXplcj1ocztmdW5jdGlvbiB0YyhjLHRlKXtyZXR1cm4gZS5mb3JFYWNoKGMucHJvcGVydGllcyxmdW5jdGlvbih4cil7cmV0dXJuIGUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQoeHIpJiZlLmlzSWRlbnRpZmllcih4ci5uYW1lKSYmeHIubmFtZS5lc2NhcGVkVGV4dD09PVwidmFsdWVcIiYmeHIuaW5pdGlhbGl6ZXImJlFzKHhyLmluaXRpYWxpemVyLHRlKX0pfWZ1bmN0aW9uIHBzKGMpe2lmKGMmJmMucGFyZW50JiZlLmlzQmluYXJ5RXhwcmVzc2lvbihjLnBhcmVudCkmJmMucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzKXt2YXIgdGU9bmYoYy5wYXJlbnQubGVmdCk7cmV0dXJuIFFzKGMucGFyZW50LnJpZ2h0LHRlKXx8anMoYy5wYXJlbnQubGVmdCxjLnBhcmVudC5yaWdodCx0ZSl9aWYoYyYmZS5pc0NhbGxFeHByZXNzaW9uKGMpJiZwdChjKSl7dmFyIHhyPXRjKGMuYXJndW1lbnRzWzJdLGMuYXJndW1lbnRzWzFdLnRleHQ9PT1cInByb3RvdHlwZVwiKTtpZih4cilyZXR1cm4geHJ9fWUuZ2V0QXNzaWduZWRFeHBhbmRvSW5pdGlhbGl6ZXI9cHM7ZnVuY3Rpb24gUXMoYyx0ZSl7aWYoZS5pc0NhbGxFeHByZXNzaW9uKGMpKXt2YXIgeHI9cG8oYy5leHByZXNzaW9uKTtyZXR1cm4geHIua2luZD09PTIxM3x8eHIua2luZD09PTIxND9jOnZvaWQgMH1pZihjLmtpbmQ9PT0yMTN8fGMua2luZD09PTIyNnx8Yy5raW5kPT09MjE0fHxlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oYykmJihjLnByb3BlcnRpZXMubGVuZ3RoPT09MHx8dGUpKXJldHVybiBjfWUuZ2V0RXhwYW5kb0luaXRpYWxpemVyPVFzO2Z1bmN0aW9uIGpzKGMsdGUseHIpe3ZhciBlaT1lLmlzQmluYXJ5RXhwcmVzc2lvbih0ZSkmJih0ZS5vcGVyYXRvclRva2VuLmtpbmQ9PT01Nnx8dGUub3BlcmF0b3JUb2tlbi5raW5kPT09NjApJiZRcyh0ZS5yaWdodCx4cik7aWYoZWkmJmNlKGMsdGUubGVmdCkpcmV0dXJuIGVpfWZ1bmN0aW9uIGRzKGMpe3ZhciB0ZT1lLmlzVmFyaWFibGVEZWNsYXJhdGlvbihjLnBhcmVudCk/Yy5wYXJlbnQubmFtZTplLmlzQmluYXJ5RXhwcmVzc2lvbihjLnBhcmVudCkmJmMucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzP2MucGFyZW50LmxlZnQ6dm9pZCAwO3JldHVybiB0ZSYmUXMoYy5yaWdodCxuZih0ZSkpJiZIdSh0ZSkmJmNlKHRlLGMubGVmdCl9ZS5pc0RlZmF1bHRlZEV4cGFuZG9Jbml0aWFsaXplcj1kcztmdW5jdGlvbiBKaShjKXtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihjLnBhcmVudCkpe3ZhciB0ZT0oYy5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kPT09NTZ8fGMucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYwKSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oYy5wYXJlbnQucGFyZW50KT9jLnBhcmVudC5wYXJlbnQ6Yy5wYXJlbnQ7aWYodGUub3BlcmF0b3JUb2tlbi5raW5kPT09NjMmJmUuaXNJZGVudGlmaWVyKHRlLmxlZnQpKXJldHVybiB0ZS5sZWZ0fWVsc2UgaWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oYy5wYXJlbnQpKXJldHVybiBjLnBhcmVudC5uYW1lfWUuZ2V0TmFtZU9mRXhwYW5kbz1KaTtmdW5jdGlvbiBjZShjLHRlKXtyZXR1cm4gSmYoYykmJkpmKHRlKT93XyhjKT09PXdfKHRlKTplLmlzTWVtYmVyTmFtZShjKSYmUHQodGUpJiYodGUuZXhwcmVzc2lvbi5raW5kPT09MTA4fHxlLmlzSWRlbnRpZmllcih0ZS5leHByZXNzaW9uKSYmKHRlLmV4cHJlc3Npb24uZXNjYXBlZFRleHQ9PT1cIndpbmRvd1wifHx0ZS5leHByZXNzaW9uLmVzY2FwZWRUZXh0PT09XCJzZWxmXCJ8fHRlLmV4cHJlc3Npb24uZXNjYXBlZFRleHQ9PT1cImdsb2JhbFwiKSk/Y2UoYyxmbyh0ZSkpOlB0KGMpJiZQdCh0ZSk/QW8oYyk9PT1Bbyh0ZSkmJmNlKGMuZXhwcmVzc2lvbix0ZS5leHByZXNzaW9uKTohMX1lLmlzU2FtZUVudGl0eU5hbWU9Y2U7ZnVuY3Rpb24gUnIoYyl7Zm9yKDtkbChjLCEwKTspYz1jLnJpZ2h0O3JldHVybiBjfWUuZ2V0UmlnaHRNb3N0QXNzaWduZWRFeHByZXNzaW9uPVJyO2Z1bmN0aW9uIHlpKGMpe3JldHVybiBlLmlzSWRlbnRpZmllcihjKSYmYy5lc2NhcGVkVGV4dD09PVwiZXhwb3J0c1wifWUuaXNFeHBvcnRzSWRlbnRpZmllcj15aTtmdW5jdGlvbiBxaShjKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoYykmJmMuZXNjYXBlZFRleHQ9PT1cIm1vZHVsZVwifWUuaXNNb2R1bGVJZGVudGlmaWVyPXFpO2Z1bmN0aW9uIGplKGMpe3JldHVybihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGMpfHxnYShjKSkmJnFpKGMuZXhwcmVzc2lvbikmJkFvKGMpPT09XCJleHBvcnRzXCJ9ZS5pc01vZHVsZUV4cG9ydHNBY2Nlc3NFeHByZXNzaW9uPWplO2Z1bmN0aW9uIEhyKGMpe3ZhciB0ZT14cyhjKTtyZXR1cm4gdGU9PT01fHxDdChjKT90ZTowfWUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZD1IcjtmdW5jdGlvbiBwdChjKXtyZXR1cm4gZS5sZW5ndGgoYy5hcmd1bWVudHMpPT09MyYmZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjLmV4cHJlc3Npb24pJiZlLmlzSWRlbnRpZmllcihjLmV4cHJlc3Npb24uZXhwcmVzc2lvbikmJmUuaWRUZXh0KGMuZXhwcmVzc2lvbi5leHByZXNzaW9uKT09PVwiT2JqZWN0XCImJmUuaWRUZXh0KGMuZXhwcmVzc2lvbi5uYW1lKT09PVwiZGVmaW5lUHJvcGVydHlcIiYmbnMoYy5hcmd1bWVudHNbMV0pJiZqcihjLmFyZ3VtZW50c1swXSwhMCl9ZS5pc0JpbmRhYmxlT2JqZWN0RGVmaW5lUHJvcGVydHlDYWxsPXB0O2Z1bmN0aW9uIFB0KGMpe3JldHVybiBlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGMpfHxnYShjKX1lLmlzTGl0ZXJhbExpa2VBY2Nlc3M9UHQ7ZnVuY3Rpb24gZ2EoYyl7cmV0dXJuIGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihjKSYmbnMoYy5hcmd1bWVudEV4cHJlc3Npb24pfWUuaXNMaXRlcmFsTGlrZUVsZW1lbnRBY2Nlc3M9Z2E7ZnVuY3Rpb24gdWEoYyx0ZSl7cmV0dXJuIGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oYykmJighdGUmJmMuZXhwcmVzc2lvbi5raW5kPT09MTA4fHxlLmlzSWRlbnRpZmllcihjLm5hbWUpJiZqcihjLmV4cHJlc3Npb24sITApKXx8WG4oYyx0ZSl9ZS5pc0JpbmRhYmxlU3RhdGljQWNjZXNzRXhwcmVzc2lvbj11YTtmdW5jdGlvbiBYbihjLHRlKXtyZXR1cm4gZ2EoYykmJighdGUmJmMuZXhwcmVzc2lvbi5raW5kPT09MTA4fHxIdShjLmV4cHJlc3Npb24pfHx1YShjLmV4cHJlc3Npb24sITApKX1lLmlzQmluZGFibGVTdGF0aWNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbj1YbjtmdW5jdGlvbiBqcihjLHRlKXtyZXR1cm4gSHUoYyl8fHVhKGMsdGUpfWUuaXNCaW5kYWJsZVN0YXRpY05hbWVFeHByZXNzaW9uPWpyO2Z1bmN0aW9uIGZvKGMpe3JldHVybiBlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGMpP2MubmFtZTpjLmFyZ3VtZW50RXhwcmVzc2lvbn1lLmdldE5hbWVPckFyZ3VtZW50PWZvO2Z1bmN0aW9uIHhzKGMpe2lmKGUuaXNDYWxsRXhwcmVzc2lvbihjKSl7aWYoIXB0KGMpKXJldHVybiAwO3ZhciB0ZT1jLmFyZ3VtZW50c1swXTtyZXR1cm4geWkodGUpfHxqZSh0ZSk/ODp1YSh0ZSkmJkFvKHRlKT09PVwicHJvdG90eXBlXCI/OTo3fXJldHVybiBjLm9wZXJhdG9yVG9rZW4ua2luZCE9PTYzfHwhY3IoYy5sZWZ0KXx8Rm8oUnIoYykpPzA6anIoYy5sZWZ0LmV4cHJlc3Npb24sITApJiZBbyhjLmxlZnQpPT09XCJwcm90b3R5cGVcIiYmZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKEJzKGMpKT82Ok1zKGMubGVmdCl9ZnVuY3Rpb24gRm8oYyl7cmV0dXJuIGUuaXNWb2lkRXhwcmVzc2lvbihjKSYmZS5pc051bWVyaWNMaXRlcmFsKGMuZXhwcmVzc2lvbikmJmMuZXhwcmVzc2lvbi50ZXh0PT09XCIwXCJ9ZnVuY3Rpb24ga28oYyl7aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjKSlyZXR1cm4gYy5uYW1lO3ZhciB0ZT1wbyhjLmFyZ3VtZW50RXhwcmVzc2lvbik7cmV0dXJuIGUuaXNOdW1lcmljTGl0ZXJhbCh0ZSl8fGUuaXNTdHJpbmdMaXRlcmFsTGlrZSh0ZSk/dGU6Y31lLmdldEVsZW1lbnRPclByb3BlcnR5QWNjZXNzQXJndW1lbnRFeHByZXNzaW9uT3JOYW1lPWtvO2Z1bmN0aW9uIEFvKGMpe3ZhciB0ZT1rbyhjKTtpZih0ZSl7aWYoZS5pc0lkZW50aWZpZXIodGUpKXJldHVybiB0ZS5lc2NhcGVkVGV4dDtpZihlLmlzU3RyaW5nTGl0ZXJhbExpa2UodGUpfHxlLmlzTnVtZXJpY0xpdGVyYWwodGUpKXJldHVybiBlLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyh0ZS50ZXh0KX19ZS5nZXRFbGVtZW50T3JQcm9wZXJ0eUFjY2Vzc05hbWU9QW87ZnVuY3Rpb24gTXMoYyl7aWYoYy5leHByZXNzaW9uLmtpbmQ9PT0xMDgpcmV0dXJuIDQ7aWYoamUoYykpcmV0dXJuIDI7aWYoanIoYy5leHByZXNzaW9uLCEwKSl7aWYobmYoYy5leHByZXNzaW9uKSlyZXR1cm4gMztmb3IodmFyIHRlPWM7IWUuaXNJZGVudGlmaWVyKHRlLmV4cHJlc3Npb24pOyl0ZT10ZS5leHByZXNzaW9uO3ZhciB4cj10ZS5leHByZXNzaW9uO2lmKCh4ci5lc2NhcGVkVGV4dD09PVwiZXhwb3J0c1wifHx4ci5lc2NhcGVkVGV4dD09PVwibW9kdWxlXCImJkFvKHRlKT09PVwiZXhwb3J0c1wiKSYmdWEoYykpcmV0dXJuIDE7aWYoanIoYywhMCl8fGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihjKSYmZXMoYykpcmV0dXJuIDV9cmV0dXJuIDB9ZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25Qcm9wZXJ0eUFjY2Vzc0tpbmQ9TXM7ZnVuY3Rpb24gQnMoYyl7Zm9yKDtlLmlzQmluYXJ5RXhwcmVzc2lvbihjLnJpZ2h0KTspYz1jLnJpZ2h0O3JldHVybiBjLnJpZ2h0fWUuZ2V0SW5pdGlhbGl6ZXJPZkJpbmFyeUV4cHJlc3Npb249QnM7ZnVuY3Rpb24geGMoYyl7cmV0dXJuIGUuaXNCaW5hcnlFeHByZXNzaW9uKGMpJiZIcihjKT09PTN9ZS5pc1Byb3RvdHlwZVByb3BlcnR5QXNzaWdubWVudD14YztmdW5jdGlvbiBzdShjKXtyZXR1cm4gQ3QoYykmJmMucGFyZW50JiZjLnBhcmVudC5raW5kPT09MjM4JiYoIWUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihjKXx8Z2EoYykpJiYhIWUuZ2V0SlNEb2NUeXBlVGFnKGMucGFyZW50KX1lLmlzU3BlY2lhbFByb3BlcnR5RGVjbGFyYXRpb249c3U7ZnVuY3Rpb24gdGwoYyx0ZSl7dmFyIHhyPWMudmFsdWVEZWNsYXJhdGlvbjsoIXhyfHwhKHRlLmZsYWdzJjE2Nzc3MjE2JiYhKHhyLmZsYWdzJjE2Nzc3MjE2KSkmJlhzKHhyKSYmIVhzKHRlKXx8eHIua2luZCE9PXRlLmtpbmQmJk5lKHhyKSkmJihjLnZhbHVlRGVjbGFyYXRpb249dGUpfWUuc2V0VmFsdWVEZWNsYXJhdGlvbj10bDtmdW5jdGlvbiBaYyhjKXtpZighY3x8IWMudmFsdWVEZWNsYXJhdGlvbilyZXR1cm4hMTt2YXIgdGU9Yy52YWx1ZURlY2xhcmF0aW9uO3JldHVybiB0ZS5raW5kPT09MjU2fHxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbih0ZSkmJnRlLmluaXRpYWxpemVyJiZlLmlzRnVuY3Rpb25MaWtlKHRlLmluaXRpYWxpemVyKX1lLmlzRnVuY3Rpb25TeW1ib2w9WmM7ZnVuY3Rpb24gUmYoYyl7dmFyIHRlLHhyO3N3aXRjaChjLmtpbmQpe2Nhc2UgMjU0OnJldHVybih0ZT1lLmZpbmRBbmNlc3RvcihjLmluaXRpYWxpemVyLGZ1bmN0aW9uKGVpKXtyZXR1cm4gbW8oZWksITApfSkpPT09bnVsbHx8dGU9PT12b2lkIDA/dm9pZCAwOnRlLmFyZ3VtZW50c1swXTtjYXNlIDI2NjpyZXR1cm4gZS50cnlDYXN0KGMubW9kdWxlU3BlY2lmaWVyLGUuaXNTdHJpbmdMaXRlcmFsTGlrZSk7Y2FzZSAyNjU6cmV0dXJuIGUudHJ5Q2FzdCgoeHI9ZS50cnlDYXN0KGMubW9kdWxlUmVmZXJlbmNlLGUuaXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSkpPT09bnVsbHx8eHI9PT12b2lkIDA/dm9pZCAwOnhyLmV4cHJlc3Npb24sZS5pc1N0cmluZ0xpdGVyYWxMaWtlKTtkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoYyl9fWUudHJ5R2V0TW9kdWxlU3BlY2lmaWVyRnJvbURlY2xhcmF0aW9uPVJmO2Z1bmN0aW9uIGFsKGMpe3JldHVybiBKbyhjKXx8ZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChjLnBhcmVudCl9ZS5pbXBvcnRGcm9tTW9kdWxlU3BlY2lmaWVyPWFsO2Z1bmN0aW9uIEpvKGMpe3N3aXRjaChjLnBhcmVudC5raW5kKXtjYXNlIDI2NjpjYXNlIDI3MjpyZXR1cm4gYy5wYXJlbnQ7Y2FzZSAyNzc6cmV0dXJuIGMucGFyZW50LnBhcmVudDtjYXNlIDIwODpyZXR1cm4gVnIoYy5wYXJlbnQpfHxtbyhjLnBhcmVudCwhMSk/Yy5wYXJlbnQ6dm9pZCAwO2Nhc2UgMTk2OnJldHVybiBlLkRlYnVnLmFzc2VydChlLmlzU3RyaW5nTGl0ZXJhbChjKSksZS50cnlDYXN0KGMucGFyZW50LnBhcmVudCxlLmlzSW1wb3J0VHlwZU5vZGUpO2RlZmF1bHQ6cmV0dXJufX1lLnRyeUdldEltcG9ydEZyb21Nb2R1bGVTcGVjaWZpZXI9Sm87ZnVuY3Rpb24gZXUoYyl7c3dpdGNoKGMua2luZCl7Y2FzZSAyNjY6Y2FzZSAyNzI6cmV0dXJuIGMubW9kdWxlU3BlY2lmaWVyO2Nhc2UgMjY1OnJldHVybiBjLm1vZHVsZVJlZmVyZW5jZS5raW5kPT09Mjc3P2MubW9kdWxlUmVmZXJlbmNlLmV4cHJlc3Npb246dm9pZCAwO2Nhc2UgMjAwOnJldHVybiB2aShjKT9jLmFyZ3VtZW50LmxpdGVyYWw6dm9pZCAwO2Nhc2UgMjA4OnJldHVybiBjLmFyZ3VtZW50c1swXTtjYXNlIDI2MTpyZXR1cm4gYy5uYW1lLmtpbmQ9PT0xMD9jLm5hbWU6dm9pZCAwO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoYyl9fWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lPWV1O2Z1bmN0aW9uIFdzKGMpe3N3aXRjaChjLmtpbmQpe2Nhc2UgMjY2OnJldHVybiBjLmltcG9ydENsYXVzZSYmZS50cnlDYXN0KGMuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MsZS5pc05hbWVzcGFjZUltcG9ydCk7Y2FzZSAyNjU6cmV0dXJuIGM7Y2FzZSAyNzI6cmV0dXJuIGMuZXhwb3J0Q2xhdXNlJiZlLnRyeUNhc3QoYy5leHBvcnRDbGF1c2UsZS5pc05hbWVzcGFjZUV4cG9ydCk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihjKX19ZS5nZXROYW1lc3BhY2VEZWNsYXJhdGlvbk5vZGU9V3M7ZnVuY3Rpb24gcHUoYyl7cmV0dXJuIGMua2luZD09PTI2NiYmISFjLmltcG9ydENsYXVzZSYmISFjLmltcG9ydENsYXVzZS5uYW1lfWUuaXNEZWZhdWx0SW1wb3J0PXB1O2Z1bmN0aW9uIFV1KGMsdGUpe2lmKGMubmFtZSl7dmFyIHhyPXRlKGMpO2lmKHhyKXJldHVybiB4cn1pZihjLm5hbWVkQmluZGluZ3Mpe3ZhciB4cj1lLmlzTmFtZXNwYWNlSW1wb3J0KGMubmFtZWRCaW5kaW5ncyk/dGUoYy5uYW1lZEJpbmRpbmdzKTplLmZvckVhY2goYy5uYW1lZEJpbmRpbmdzLmVsZW1lbnRzLHRlKTtpZih4cilyZXR1cm4geHJ9fWUuZm9yRWFjaEltcG9ydENsYXVzZURlY2xhcmF0aW9uPVV1O2Z1bmN0aW9uIFFsKGMpe2lmKGMpc3dpdGNoKGMua2luZCl7Y2FzZSAxNjQ6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAyOTc6Y2FzZSAyOTY6Y2FzZSAxNjc6Y2FzZSAxNjY6cmV0dXJuIGMucXVlc3Rpb25Ub2tlbiE9PXZvaWQgMH1yZXR1cm4hMX1lLmhhc1F1ZXN0aW9uVG9rZW49UWw7ZnVuY3Rpb24geGwoYyl7dmFyIHRlPWUuaXNKU0RvY0Z1bmN0aW9uVHlwZShjKT9lLmZpcnN0T3JVbmRlZmluZWQoYy5wYXJhbWV0ZXJzKTp2b2lkIDAseHI9ZS50cnlDYXN0KHRlJiZ0ZS5uYW1lLGUuaXNJZGVudGlmaWVyKTtyZXR1cm4hIXhyJiZ4ci5lc2NhcGVkVGV4dD09PVwibmV3XCJ9ZS5pc0pTRG9jQ29uc3RydWN0U2lnbmF0dXJlPXhsO2Z1bmN0aW9uIFlhKGMpe3JldHVybiBjLmtpbmQ9PT0zNDV8fGMua2luZD09PTMzOHx8Yy5raW5kPT09MzM5fWUuaXNKU0RvY1R5cGVBbGlhcz1ZYTtmdW5jdGlvbiBkdShjKXtyZXR1cm4gWWEoYyl8fGUuaXNUeXBlQWxpYXNEZWNsYXJhdGlvbihjKX1lLmlzVHlwZUFsaWFzPWR1O2Z1bmN0aW9uIHZjKGMpe3JldHVybiBlLmlzRXhwcmVzc2lvblN0YXRlbWVudChjKSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oYy5leHByZXNzaW9uKSYmYy5leHByZXNzaW9uLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzP1JyKGMuZXhwcmVzc2lvbik6dm9pZCAwfWZ1bmN0aW9uIEtyKGMpe3JldHVybiBlLmlzRXhwcmVzc2lvblN0YXRlbWVudChjKSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oYy5leHByZXNzaW9uKSYmSHIoYy5leHByZXNzaW9uKSE9PTAmJmUuaXNCaW5hcnlFeHByZXNzaW9uKGMuZXhwcmVzc2lvbi5yaWdodCkmJihjLmV4cHJlc3Npb24ucmlnaHQub3BlcmF0b3JUb2tlbi5raW5kPT09NTZ8fGMuZXhwcmVzc2lvbi5yaWdodC5vcGVyYXRvclRva2VuLmtpbmQ9PT02MCk/Yy5leHByZXNzaW9uLnJpZ2h0LnJpZ2h0OnZvaWQgMH1mdW5jdGlvbiBfaShjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDIzNzp2YXIgdGU9RWkoYyk7cmV0dXJuIHRlJiZ0ZS5pbml0aWFsaXplcjtjYXNlIDE2NzpyZXR1cm4gYy5pbml0aWFsaXplcjtjYXNlIDI5NjpyZXR1cm4gYy5pbml0aWFsaXplcn19ZS5nZXRTaW5nbGVJbml0aWFsaXplck9mVmFyaWFibGVTdGF0ZW1lbnRPclByb3BlcnR5RGVjbGFyYXRpb249X2k7ZnVuY3Rpb24gRWkoYyl7cmV0dXJuIGUuaXNWYXJpYWJsZVN0YXRlbWVudChjKT9lLmZpcnN0T3JVbmRlZmluZWQoYy5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zKTp2b2lkIDB9ZS5nZXRTaW5nbGVWYXJpYWJsZU9mVmFyaWFibGVTdGF0ZW1lbnQ9RWk7ZnVuY3Rpb24gdHQoYyl7cmV0dXJuIGUuaXNNb2R1bGVEZWNsYXJhdGlvbihjKSYmYy5ib2R5JiZjLmJvZHkua2luZD09PTI2MT9jLmJvZHk6dm9pZCAwfWZ1bmN0aW9uIGt0KGMsdGUpe3ZhciB4cjtCdChjKSYmZS5oYXNJbml0aWFsaXplcihjKSYmZS5oYXNKU0RvY05vZGVzKGMuaW5pdGlhbGl6ZXIpJiYoeHI9ZS5hZGRSYW5nZSh4cixidChjLGUubGFzdChjLmluaXRpYWxpemVyLmpzRG9jKSkpKTtmb3IodmFyIGVpPWM7ZWkmJmVpLnBhcmVudDspe2lmKGUuaGFzSlNEb2NOb2RlcyhlaSkmJih4cj1lLmFkZFJhbmdlKHhyLGJ0KGMsZS5sYXN0KGVpLmpzRG9jKSkpKSxlaS5raW5kPT09MTY0KXt4cj1lLmFkZFJhbmdlKHhyLCh0ZT9lLmdldEpTRG9jUGFyYW1ldGVyVGFnc05vQ2FjaGU6ZS5nZXRKU0RvY1BhcmFtZXRlclRhZ3MpKGVpKSk7YnJlYWt9aWYoZWkua2luZD09PTE2Myl7eHI9ZS5hZGRSYW5nZSh4ciwodGU/ZS5nZXRKU0RvY1R5cGVQYXJhbWV0ZXJUYWdzTm9DYWNoZTplLmdldEpTRG9jVHlwZVBhcmFtZXRlclRhZ3MpKGVpKSk7YnJlYWt9ZWk9WHQoZWkpfXJldHVybiB4cnx8ZS5lbXB0eUFycmF5fWUuZ2V0SlNEb2NDb21tZW50c0FuZFRhZ3M9a3Q7ZnVuY3Rpb24gYnQoYyx0ZSl7aWYoZS5pc0pTRG9jKHRlKSl7dmFyIHhyPWUuZmlsdGVyKHRlLnRhZ3MsZnVuY3Rpb24oZWkpe3JldHVybiBpYShjLGVpKX0pO3JldHVybiB0ZS50YWdzPT09eHI/W3RlXTp4cn1yZXR1cm4gaWEoYyx0ZSk/W3RlXTp2b2lkIDB9ZnVuY3Rpb24gaWEoYyx0ZSl7cmV0dXJuIWUuaXNKU0RvY1R5cGVUYWcodGUpfHwhdGUucGFyZW50fHwhZS5pc0pTRG9jKHRlLnBhcmVudCl8fCFlLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24odGUucGFyZW50LnBhcmVudCl8fHRlLnBhcmVudC5wYXJlbnQ9PT1jfWZ1bmN0aW9uIFh0KGMpe3ZhciB0ZT1jLnBhcmVudDtpZih0ZS5raW5kPT09Mjk2fHx0ZS5raW5kPT09MjcxfHx0ZS5raW5kPT09MTY3fHx0ZS5raW5kPT09MjM4JiZjLmtpbmQ9PT0yMDZ8fHRlLmtpbmQ9PT0yNDd8fHR0KHRlKXx8ZS5pc0JpbmFyeUV4cHJlc3Npb24oYykmJmMub3BlcmF0b3JUb2tlbi5raW5kPT09NjMpcmV0dXJuIHRlO2lmKHRlLnBhcmVudCYmKEVpKHRlLnBhcmVudCk9PT1jfHxlLmlzQmluYXJ5RXhwcmVzc2lvbih0ZSkmJnRlLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzKSlyZXR1cm4gdGUucGFyZW50O2lmKHRlLnBhcmVudCYmdGUucGFyZW50LnBhcmVudCYmKEVpKHRlLnBhcmVudC5wYXJlbnQpfHxfaSh0ZS5wYXJlbnQucGFyZW50KT09PWN8fEtyKHRlLnBhcmVudC5wYXJlbnQpKSlyZXR1cm4gdGUucGFyZW50LnBhcmVudH1lLmdldE5leHRKU0RvY0NvbW1lbnRMb2NhdGlvbj1YdDtmdW5jdGlvbiBaYShjKXtpZihjLnN5bWJvbClyZXR1cm4gYy5zeW1ib2w7aWYoISFlLmlzSWRlbnRpZmllcihjLm5hbWUpKXt2YXIgdGU9Yy5uYW1lLmVzY2FwZWRUZXh0LHhyPV9hKGMpO2lmKCEheHIpe3ZhciBlaT1lLmZpbmQoeHIucGFyYW1ldGVycyxmdW5jdGlvbihiaSl7cmV0dXJuIGJpLm5hbWUua2luZD09PTc5JiZiaS5uYW1lLmVzY2FwZWRUZXh0PT09dGV9KTtyZXR1cm4gZWkmJmVpLnN5bWJvbH19fWUuZ2V0UGFyYW1ldGVyU3ltYm9sRnJvbUpTRG9jPVphO2Z1bmN0aW9uIGJuKGMpe2lmKGUuaXNKU0RvYyhjLnBhcmVudCkmJmMucGFyZW50LnRhZ3Mpe3ZhciB0ZT1lLmZpbmQoYy5wYXJlbnQudGFncyxZYSk7aWYodGUpcmV0dXJuIHRlfXJldHVybiBfYShjKX1lLmdldEVmZmVjdGl2ZUNvbnRhaW5lckZvckpTRG9jVGVtcGxhdGVUYWc9Ym47ZnVuY3Rpb24gX2EoYyl7dmFyIHRlPXFhKGMpO2lmKHRlKXJldHVybiBlLmlzUHJvcGVydHlTaWduYXR1cmUodGUpJiZ0ZS50eXBlJiZlLmlzRnVuY3Rpb25MaWtlKHRlLnR5cGUpP3RlLnR5cGU6ZS5pc0Z1bmN0aW9uTGlrZSh0ZSk/dGU6dm9pZCAwfWUuZ2V0SG9zdFNpZ25hdHVyZUZyb21KU0RvYz1fYTtmdW5jdGlvbiBxYShjKXt2YXIgdGU9cm4oYyk7aWYodGUpcmV0dXJuIEtyKHRlKXx8dmModGUpfHxfaSh0ZSl8fEVpKHRlKXx8dHQodGUpfHx0ZX1lLmdldEVmZmVjdGl2ZUpTRG9jSG9zdD1xYTtmdW5jdGlvbiBybihjKXt2YXIgdGU9am4oYyk7aWYoISF0ZSl7dmFyIHhyPXRlLnBhcmVudDtpZih4ciYmeHIuanNEb2MmJnRlPT09ZS5sYXN0T3JVbmRlZmluZWQoeHIuanNEb2MpKXJldHVybiB4cn19ZS5nZXRKU0RvY0hvc3Q9cm47ZnVuY3Rpb24gam4oYyl7cmV0dXJuIGUuZmluZEFuY2VzdG9yKGMucGFyZW50LGUuaXNKU0RvYyl9ZS5nZXRKU0RvY1Jvb3Q9am47ZnVuY3Rpb24gTW8oYyl7dmFyIHRlPWMubmFtZS5lc2NhcGVkVGV4dCx4cj1jLnBhcmVudC5wYXJlbnQucGFyZW50LnR5cGVQYXJhbWV0ZXJzO3JldHVybiB4ciYmZS5maW5kKHhyLGZ1bmN0aW9uKGVpKXtyZXR1cm4gZWkubmFtZS5lc2NhcGVkVGV4dD09PXRlfSl9ZS5nZXRUeXBlUGFyYW1ldGVyRnJvbUpzRG9jPU1vO2Z1bmN0aW9uIGhvKGMpe3ZhciB0ZT1lLmxhc3RPclVuZGVmaW5lZChjLnBhcmFtZXRlcnMpO3JldHVybiEhdGUmJmdzKHRlKX1lLmhhc1Jlc3RQYXJhbWV0ZXI9aG87ZnVuY3Rpb24gZ3MoYyl7dmFyIHRlPWUuaXNKU0RvY1BhcmFtZXRlclRhZyhjKT9jLnR5cGVFeHByZXNzaW9uJiZjLnR5cGVFeHByZXNzaW9uLnR5cGU6Yy50eXBlO3JldHVybiBjLmRvdERvdERvdFRva2VuIT09dm9pZCAwfHwhIXRlJiZ0ZS5raW5kPT09MzE4fWUuaXNSZXN0UGFyYW1ldGVyPWdzO2Z1bmN0aW9uIFNlKGMpe3JldHVybiEhYy50eXBlQXJndW1lbnRzfWUuaGFzVHlwZUFyZ3VtZW50cz1TZTt2YXIgaHI7KGZ1bmN0aW9uKGMpe2NbYy5Ob25lPTBdPVwiTm9uZVwiLGNbYy5EZWZpbml0ZT0xXT1cIkRlZmluaXRlXCIsY1tjLkNvbXBvdW5kPTJdPVwiQ29tcG91bmRcIn0pKGhyPWUuQXNzaWdubWVudEtpbmR8fChlLkFzc2lnbm1lbnRLaW5kPXt9KSk7ZnVuY3Rpb24gT3IoYyl7Zm9yKHZhciB0ZT1jLnBhcmVudDs7KXtzd2l0Y2godGUua2luZCl7Y2FzZSAyMjE6dmFyIHhyPXRlLm9wZXJhdG9yVG9rZW4ua2luZDtyZXR1cm4gQ2YoeHIpJiZ0ZS5sZWZ0PT09Yz94cj09PTYzfHxHdSh4cik/MToyOjA7Y2FzZSAyMTk6Y2FzZSAyMjA6dmFyIGVpPXRlLm9wZXJhdG9yO3JldHVybiBlaT09PTQ1fHxlaT09PTQ2PzI6MDtjYXNlIDI0MzpjYXNlIDI0NDpyZXR1cm4gdGUuaW5pdGlhbGl6ZXI9PT1jPzE6MDtjYXNlIDIxMjpjYXNlIDIwNDpjYXNlIDIyNTpjYXNlIDIzMDpjPXRlO2JyZWFrO2Nhc2UgMjk4OmM9dGUucGFyZW50O2JyZWFrO2Nhc2UgMjk3OmlmKHRlLm5hbWUhPT1jKXJldHVybiAwO2M9dGUucGFyZW50O2JyZWFrO2Nhc2UgMjk2OmlmKHRlLm5hbWU9PT1jKXJldHVybiAwO2M9dGUucGFyZW50O2JyZWFrO2RlZmF1bHQ6cmV0dXJuIDB9dGU9Yy5wYXJlbnR9fWUuZ2V0QXNzaWdubWVudFRhcmdldEtpbmQ9T3I7ZnVuY3Rpb24ga2koYyl7cmV0dXJuIE9yKGMpIT09MH1lLmlzQXNzaWdubWVudFRhcmdldD1raTtmdW5jdGlvbiBkdChjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDIzNTpjYXNlIDIzNzpjYXNlIDI0ODpjYXNlIDIzOTpjYXNlIDI0OTpjYXNlIDI2MzpjYXNlIDI4OTpjYXNlIDI5MDpjYXNlIDI1MDpjYXNlIDI0MjpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0MDpjYXNlIDI0MTpjYXNlIDI1MjpjYXNlIDI5MjpyZXR1cm4hMH1yZXR1cm4hMX1lLmlzTm9kZVdpdGhQb3NzaWJsZUhvaXN0ZWREZWNsYXJhdGlvbj1kdDtmdW5jdGlvbiBsYShjKXtyZXR1cm4gZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihjKXx8ZS5pc0Fycm93RnVuY3Rpb24oYyl8fGUuaXNNZXRob2RPckFjY2Vzc29yKGMpfHxlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihjKXx8ZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oYyl9ZS5pc1ZhbHVlU2lnbmF0dXJlRGVjbGFyYXRpb249bGE7ZnVuY3Rpb24gd2EoYyx0ZSl7Zm9yKDtjJiZjLmtpbmQ9PT10ZTspYz1jLnBhcmVudDtyZXR1cm4gY31mdW5jdGlvbiBPbihjKXtyZXR1cm4gd2EoYywxOTEpfWUud2Fsa1VwUGFyZW50aGVzaXplZFR5cGVzPU9uO2Z1bmN0aW9uIE5vKGMpe3JldHVybiB3YShjLDIxMil9ZS53YWxrVXBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbnM9Tm87ZnVuY3Rpb24gam8oYyl7Zm9yKHZhciB0ZTtjJiZjLmtpbmQ9PT0xOTE7KXRlPWMsYz1jLnBhcmVudDtyZXR1cm5bdGUsY119ZS53YWxrVXBQYXJlbnRoZXNpemVkVHlwZXNBbmRHZXRQYXJlbnRBbmRDaGlsZD1qbztmdW5jdGlvbiBwbyhjLHRlKXt2YXIgeHI9dGU/MTc6MTtyZXR1cm4gZS5za2lwT3V0ZXJFeHByZXNzaW9ucyhjLHhyKX1lLnNraXBQYXJlbnRoZXNlcz1wbztmdW5jdGlvbiBHbihjKXtyZXR1cm4gYy5raW5kIT09MjA2JiZjLmtpbmQhPT0yMDc/ITE6KGM9Tm8oYy5wYXJlbnQpLGMmJmMua2luZD09PTIxNSl9ZS5pc0RlbGV0ZVRhcmdldD1HbjtmdW5jdGlvbiAkbihjLHRlKXtmb3IoO2M7KXtpZihjPT09dGUpcmV0dXJuITA7Yz1jLnBhcmVudH1yZXR1cm4hMX1lLmlzTm9kZURlc2NlbmRhbnRPZj0kbjtmdW5jdGlvbiBIbyhjKXtyZXR1cm4hZS5pc1NvdXJjZUZpbGUoYykmJiFlLmlzQmluZGluZ1BhdHRlcm4oYykmJmUuaXNEZWNsYXJhdGlvbihjLnBhcmVudCkmJmMucGFyZW50Lm5hbWU9PT1jfWUuaXNEZWNsYXJhdGlvbk5hbWU9SG87ZnVuY3Rpb24gWm8oYyl7dmFyIHRlPWMucGFyZW50O3N3aXRjaChjLmtpbmQpe2Nhc2UgMTA6Y2FzZSAxNDpjYXNlIDg6aWYoZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKHRlKSlyZXR1cm4gdGUucGFyZW50O2Nhc2UgNzk6aWYoZS5pc0RlY2xhcmF0aW9uKHRlKSlyZXR1cm4gdGUubmFtZT09PWM/dGU6dm9pZCAwO2lmKGUuaXNRdWFsaWZpZWROYW1lKHRlKSl7dmFyIHhyPXRlLnBhcmVudDtyZXR1cm4gZS5pc0pTRG9jUGFyYW1ldGVyVGFnKHhyKSYmeHIubmFtZT09PXRlP3hyOnZvaWQgMH1lbHNle3ZhciBlaT10ZS5wYXJlbnQ7cmV0dXJuIGUuaXNCaW5hcnlFeHByZXNzaW9uKGVpKSYmSHIoZWkpIT09MCYmKGVpLmxlZnQuc3ltYm9sfHxlaS5zeW1ib2wpJiZlLmdldE5hbWVPZkRlY2xhcmF0aW9uKGVpKT09PWM/ZWk6dm9pZCAwfWNhc2UgODA6cmV0dXJuIGUuaXNEZWNsYXJhdGlvbih0ZSkmJnRlLm5hbWU9PT1jP3RlOnZvaWQgMDtkZWZhdWx0OnJldHVybn19ZS5nZXREZWNsYXJhdGlvbkZyb21OYW1lPVpvO2Z1bmN0aW9uIEVzKGMpe3JldHVybiBucyhjKSYmYy5wYXJlbnQua2luZD09PTE2MiYmZS5pc0RlY2xhcmF0aW9uKGMucGFyZW50LnBhcmVudCl9ZS5pc0xpdGVyYWxDb21wdXRlZFByb3BlcnR5RGVjbGFyYXRpb25OYW1lPUVzO2Z1bmN0aW9uIHljKGMpe3ZhciB0ZT1jLnBhcmVudDtzd2l0Y2godGUua2luZCl7Y2FzZSAxNjc6Y2FzZSAxNjY6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAyOTk6Y2FzZSAyOTY6Y2FzZSAyMDY6cmV0dXJuIHRlLm5hbWU9PT1jO2Nhc2UgMTYxOnJldHVybiB0ZS5yaWdodD09PWM7Y2FzZSAyMDM6Y2FzZSAyNzA6cmV0dXJuIHRlLnByb3BlcnR5TmFtZT09PWM7Y2FzZSAyNzU6Y2FzZSAyODU6Y2FzZSAyNzk6Y2FzZSAyODA6Y2FzZSAyODE6cmV0dXJuITB9cmV0dXJuITF9ZS5pc0lkZW50aWZpZXJOYW1lPXljO2Z1bmN0aW9uIFhyKGMpe3JldHVybiBjLmtpbmQ9PT0yNjV8fGMua2luZD09PTI2NHx8Yy5raW5kPT09MjY3JiYhIWMubmFtZXx8Yy5raW5kPT09MjY4fHxjLmtpbmQ9PT0yNzR8fGMua2luZD09PTI3MHx8Yy5raW5kPT09Mjc1fHxjLmtpbmQ9PT0yNzEmJnp1KGMpPyEwOkN0KGMpJiYoZS5pc0JpbmFyeUV4cHJlc3Npb24oYykmJkhyKGMpPT09MiYmenUoYyl8fGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oYykmJmUuaXNCaW5hcnlFeHByZXNzaW9uKGMucGFyZW50KSYmYy5wYXJlbnQubGVmdD09PWMmJmMucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzJiZJYyhjLnBhcmVudC5yaWdodCkpfWUuaXNBbGlhc1N5bWJvbERlY2xhcmF0aW9uPVhyO2Z1bmN0aW9uIExzKGMpe3N3aXRjaChjLnBhcmVudC5raW5kKXtjYXNlIDI2NzpjYXNlIDI3MDpjYXNlIDI2ODpjYXNlIDI3NTpjYXNlIDI3MTpjYXNlIDI2NTpjYXNlIDI3NDpyZXR1cm4gYy5wYXJlbnQ7Y2FzZSAxNjE6ZG8gYz1jLnBhcmVudDt3aGlsZShjLnBhcmVudC5raW5kPT09MTYxKTtyZXR1cm4gTHMoYyl9fWUuZ2V0QWxpYXNEZWNsYXJhdGlvbkZyb21OYW1lPUxzO2Z1bmN0aW9uIEljKGMpe3JldHVybiBIdShjKXx8ZS5pc0NsYXNzRXhwcmVzc2lvbihjKX1lLmlzQWxpYXNhYmxlRXhwcmVzc2lvbj1JYztmdW5jdGlvbiB6dShjKXt2YXIgdGU9dmYoYyk7cmV0dXJuIEljKHRlKX1lLmV4cG9ydEFzc2lnbm1lbnRJc0FsaWFzPXp1O2Z1bmN0aW9uIHZmKGMpe3JldHVybiBlLmlzRXhwb3J0QXNzaWdubWVudChjKT9jLmV4cHJlc3Npb246Yy5yaWdodH1lLmdldEV4cG9ydEFzc2lnbm1lbnRFeHByZXNzaW9uPXZmO2Z1bmN0aW9uIFBfKGMpe3JldHVybiBjLmtpbmQ9PT0yOTc/Yy5uYW1lOmMua2luZD09PTI5Nj9jLmluaXRpYWxpemVyOmMucGFyZW50LnJpZ2h0fWUuZ2V0UHJvcGVydHlBc3NpZ25tZW50QWxpYXNMaWtlRXhwcmVzc2lvbj1QXztmdW5jdGlvbiBFbChjKXt2YXIgdGU9dnAoYyk7aWYodGUmJkN0KGMpKXt2YXIgeHI9ZS5nZXRKU0RvY0F1Z21lbnRzVGFnKGMpO2lmKHhyKXJldHVybiB4ci5jbGFzc31yZXR1cm4gdGV9ZS5nZXRFZmZlY3RpdmVCYXNlVHlwZU5vZGU9RWw7ZnVuY3Rpb24gdnAoYyl7dmFyIHRlPVlsKGMuaGVyaXRhZ2VDbGF1c2VzLDk0KTtyZXR1cm4gdGUmJnRlLnR5cGVzLmxlbmd0aD4wP3RlLnR5cGVzWzBdOnZvaWQgMH1lLmdldENsYXNzRXh0ZW5kc0hlcml0YWdlRWxlbWVudD12cDtmdW5jdGlvbiBvbyhjKXtpZihDdChjKSlyZXR1cm4gZS5nZXRKU0RvY0ltcGxlbWVudHNUYWdzKGMpLm1hcChmdW5jdGlvbih4cil7cmV0dXJuIHhyLmNsYXNzfSk7dmFyIHRlPVlsKGMuaGVyaXRhZ2VDbGF1c2VzLDExNyk7cmV0dXJuIHRlPT1udWxsP3ZvaWQgMDp0ZS50eXBlc31lLmdldEVmZmVjdGl2ZUltcGxlbWVudHNUeXBlTm9kZXM9b287ZnVuY3Rpb24gSV8oYyl7cmV0dXJuIGUuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihjKT95cChjKXx8ZS5lbXB0eUFycmF5OmUuaXNDbGFzc0xpa2UoYykmJmUuY29uY2F0ZW5hdGUoZS5zaW5nbGVFbGVtZW50QXJyYXkoRWwoYykpLG9vKGMpKXx8ZS5lbXB0eUFycmF5fWUuZ2V0QWxsU3VwZXJUeXBlTm9kZXM9SV87ZnVuY3Rpb24geXAoYyl7dmFyIHRlPVlsKGMuaGVyaXRhZ2VDbGF1c2VzLDk0KTtyZXR1cm4gdGU/dGUudHlwZXM6dm9pZCAwfWUuZ2V0SW50ZXJmYWNlQmFzZVR5cGVOb2Rlcz15cDtmdW5jdGlvbiBZbChjLHRlKXtpZihjKWZvcih2YXIgeHI9MCxlaT1jO3hyPGVpLmxlbmd0aDt4cisrKXt2YXIgYmk9ZWlbeHJdO2lmKGJpLnRva2VuPT09dGUpcmV0dXJuIGJpfX1lLmdldEhlcml0YWdlQ2xhdXNlPVlsO2Z1bmN0aW9uIEJmKGMsdGUpe2Zvcig7Yzspe2lmKGMua2luZD09PXRlKXJldHVybiBjO2M9Yy5wYXJlbnR9fWUuZ2V0QW5jZXN0b3I9QmY7ZnVuY3Rpb24gQ2woYyl7cmV0dXJuIDgxPD1jJiZjPD0xNjB9ZS5pc0tleXdvcmQ9Q2w7ZnVuY3Rpb24gY18oYyl7cmV0dXJuIDEyNjw9YyYmYzw9MTYwfWUuaXNDb250ZXh0dWFsS2V5d29yZD1jXztmdW5jdGlvbiBocChjKXtyZXR1cm4gQ2woYykmJiFjXyhjKX1lLmlzTm9uQ29udGV4dHVhbEtleXdvcmQ9aHA7ZnVuY3Rpb24gZ3UoYyl7cmV0dXJuIDExNzw9YyYmYzw9MTI1fWUuaXNGdXR1cmVSZXNlcnZlZEtleXdvcmQ9Z3U7ZnVuY3Rpb24gRHAoYyl7dmFyIHRlPWUuc3RyaW5nVG9Ub2tlbihjKTtyZXR1cm4gdGUhPT12b2lkIDAmJmhwKHRlKX1lLmlzU3RyaW5nQU5vbkNvbnRleHR1YWxLZXl3b3JkPURwO2Z1bmN0aW9uIHNkKGMpe3ZhciB0ZT1lLnN0cmluZ1RvVG9rZW4oYyk7cmV0dXJuIHRlIT09dm9pZCAwJiZDbCh0ZSl9ZS5pc1N0cmluZ0FLZXl3b3JkPXNkO2Z1bmN0aW9uIEFhKGMpe3ZhciB0ZT1jLm9yaWdpbmFsS2V5d29yZEtpbmQ7cmV0dXJuISF0ZSYmIWNfKHRlKX1lLmlzSWRlbnRpZmllckFOb25Db250ZXh0dWFsS2V5d29yZD1BYTtmdW5jdGlvbiB2YShjKXtyZXR1cm4gMjw9YyYmYzw9N31lLmlzVHJpdmlhPXZhO3ZhciBDdTsoZnVuY3Rpb24oYyl7Y1tjLk5vcm1hbD0wXT1cIk5vcm1hbFwiLGNbYy5HZW5lcmF0b3I9MV09XCJHZW5lcmF0b3JcIixjW2MuQXN5bmM9Ml09XCJBc3luY1wiLGNbYy5JbnZhbGlkPTRdPVwiSW52YWxpZFwiLGNbYy5Bc3luY0dlbmVyYXRvcj0zXT1cIkFzeW5jR2VuZXJhdG9yXCJ9KShDdT1lLkZ1bmN0aW9uRmxhZ3N8fChlLkZ1bmN0aW9uRmxhZ3M9e30pKTtmdW5jdGlvbiBxcyhjKXtpZighYylyZXR1cm4gNDt2YXIgdGU9MDtzd2l0Y2goYy5raW5kKXtjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDE2OTpjLmFzdGVyaXNrVG9rZW4mJih0ZXw9MSk7Y2FzZSAyMTQ6Z2MoYywyNTYpJiYodGV8PTIpO2JyZWFrfXJldHVybiBjLmJvZHl8fCh0ZXw9NCksdGV9ZS5nZXRGdW5jdGlvbkZsYWdzPXFzO2Z1bmN0aW9uIGNkKGMpe3N3aXRjaChjLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjEzOmNhc2UgMjE0OmNhc2UgMTY5OnJldHVybiBjLmJvZHkhPT12b2lkIDAmJmMuYXN0ZXJpc2tUb2tlbj09PXZvaWQgMCYmZ2MoYywyNTYpfXJldHVybiExfWUuaXNBc3luY0Z1bmN0aW9uPWNkO2Z1bmN0aW9uIG5zKGMpe3JldHVybiBlLmlzU3RyaW5nTGl0ZXJhbExpa2UoYyl8fGUuaXNOdW1lcmljTGl0ZXJhbChjKX1lLmlzU3RyaW5nT3JOdW1lcmljTGl0ZXJhbExpa2U9bnM7ZnVuY3Rpb24gbmwoYyl7cmV0dXJuIGUuaXNQcmVmaXhVbmFyeUV4cHJlc3Npb24oYykmJihjLm9wZXJhdG9yPT09Mzl8fGMub3BlcmF0b3I9PT00MCkmJmUuaXNOdW1lcmljTGl0ZXJhbChjLm9wZXJhbmQpfWUuaXNTaWduZWROdW1lcmljTGl0ZXJhbD1ubDtmdW5jdGlvbiBoYyhjKXt2YXIgdGU9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihjKTtyZXR1cm4hIXRlJiZlcyh0ZSl9ZS5oYXNEeW5hbWljTmFtZT1oYztmdW5jdGlvbiBlcyhjKXtpZighKGMua2luZD09PTE2Mnx8Yy5raW5kPT09MjA3KSlyZXR1cm4hMTt2YXIgdGU9ZS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGMpP3BvKGMuYXJndW1lbnRFeHByZXNzaW9uKTpjLmV4cHJlc3Npb247cmV0dXJuIW5zKHRlKSYmIW5sKHRlKX1lLmlzRHluYW1pY05hbWU9ZXM7ZnVuY3Rpb24gdV8oYyl7c3dpdGNoKGMua2luZCl7Y2FzZSA3OTpjYXNlIDgwOnJldHVybiBjLmVzY2FwZWRUZXh0O2Nhc2UgMTA6Y2FzZSA4OnJldHVybiBlLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhjLnRleHQpO2Nhc2UgMTYyOnZhciB0ZT1jLmV4cHJlc3Npb247cmV0dXJuIG5zKHRlKT9lLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyh0ZS50ZXh0KTpubCh0ZSk/dGUub3BlcmF0b3I9PT00MD9lLnRva2VuVG9TdHJpbmcodGUub3BlcmF0b3IpK3RlLm9wZXJhbmQudGV4dDp0ZS5vcGVyYW5kLnRleHQ6dm9pZCAwO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoYyl9fWUuZ2V0UHJvcGVydHlOYW1lRm9yUHJvcGVydHlOYW1lTm9kZT11XztmdW5jdGlvbiBKZihjKXtzd2l0Y2goYy5raW5kKXtjYXNlIDc5OmNhc2UgMTA6Y2FzZSAxNDpjYXNlIDg6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc1Byb3BlcnR5TmFtZUxpdGVyYWw9SmY7ZnVuY3Rpb24gd18oYyl7cmV0dXJuIGUuaXNNZW1iZXJOYW1lKGMpP2UuaWRUZXh0KGMpOmMudGV4dH1lLmdldFRleHRPZklkZW50aWZpZXJPckxpdGVyYWw9d187ZnVuY3Rpb24gdWQoYyl7cmV0dXJuIGUuaXNNZW1iZXJOYW1lKGMpP2MuZXNjYXBlZFRleHQ6ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoYy50ZXh0KX1lLmdldEVzY2FwZWRUZXh0T2ZJZGVudGlmaWVyT3JMaXRlcmFsPXVkO2Z1bmN0aW9uIGt1KGMpe3JldHVyblwiX19AXCIuY29uY2F0KGUuZ2V0U3ltYm9sSWQoYyksXCJAXCIpLmNvbmNhdChjLmVzY2FwZWROYW1lKX1lLmdldFByb3BlcnR5TmFtZUZvclVuaXF1ZUVTU3ltYm9sPWt1O2Z1bmN0aW9uIGxkKGMsdGUpe3JldHVyblwiX18jXCIuY29uY2F0KGUuZ2V0U3ltYm9sSWQoYyksXCJAXCIpLmNvbmNhdCh0ZSl9ZS5nZXRTeW1ib2xOYW1lRm9yUHJpdmF0ZUlkZW50aWZpZXI9bGQ7ZnVuY3Rpb24gZmQoYyl7cmV0dXJuIGUuc3RhcnRzV2l0aChjLmVzY2FwZWROYW1lLFwiX19AXCIpfWUuaXNLbm93blN5bWJvbD1mZDtmdW5jdGlvbiBicChjKXtyZXR1cm4gZS5zdGFydHNXaXRoKGMuZXNjYXBlZE5hbWUsXCJfXyNcIil9ZS5pc1ByaXZhdGVJZGVudGlmaWVyU3ltYm9sPWJwO2Z1bmN0aW9uIFNwKGMpe3JldHVybiBjLmtpbmQ9PT03OSYmYy5lc2NhcGVkVGV4dD09PVwiU3ltYm9sXCJ9ZS5pc0VTU3ltYm9sSWRlbnRpZmllcj1TcDtmdW5jdGlvbiBUcChjKXtyZXR1cm4gYy5lc2NhcGVkVGV4dD09PVwicHVzaFwifHxjLmVzY2FwZWRUZXh0PT09XCJ1bnNoaWZ0XCJ9ZS5pc1B1c2hPclVuc2hpZnRJZGVudGlmaWVyPVRwO2Z1bmN0aW9uIF9kKGMpe3ZhciB0ZT1qZihjKTtyZXR1cm4gdGUua2luZD09PTE2NH1lLmlzUGFyYW1ldGVyRGVjbGFyYXRpb249X2Q7ZnVuY3Rpb24gamYoYyl7Zm9yKDtjLmtpbmQ9PT0yMDM7KWM9Yy5wYXJlbnQucGFyZW50O3JldHVybiBjfWUuZ2V0Um9vdERlY2xhcmF0aW9uPWpmO2Z1bmN0aW9uIE9fKGMpe3ZhciB0ZT1jLmtpbmQ7cmV0dXJuIHRlPT09MTcxfHx0ZT09PTIxM3x8dGU9PT0yNTZ8fHRlPT09MjE0fHx0ZT09PTE2OXx8dGU9PT0xNzJ8fHRlPT09MTczfHx0ZT09PTI2MXx8dGU9PT0zMDV9ZS5ub2RlU3RhcnRzTmV3TGV4aWNhbEVudmlyb25tZW50PU9fO2Z1bmN0aW9uIEZfKGMpe3JldHVybiBKbChjLnBvcyl8fEpsKGMuZW5kKX1lLm5vZGVJc1N5bnRoZXNpemVkPUZfO2Z1bmN0aW9uIHBkKGMpe3JldHVybiBlLmdldFBhcnNlVHJlZU5vZGUoYyxlLmlzU291cmNlRmlsZSl8fGN9ZS5nZXRPcmlnaW5hbFNvdXJjZUZpbGU9cGQ7dmFyIHhwOyhmdW5jdGlvbihjKXtjW2MuTGVmdD0wXT1cIkxlZnRcIixjW2MuUmlnaHQ9MV09XCJSaWdodFwifSkoeHA9ZS5Bc3NvY2lhdGl2aXR5fHwoZS5Bc3NvY2lhdGl2aXR5PXt9KSk7ZnVuY3Rpb24gTV8oYyl7dmFyIHRlPUF1KGMpLHhyPWMua2luZD09PTIwOSYmYy5hcmd1bWVudHMhPT12b2lkIDA7cmV0dXJuIEVwKGMua2luZCx0ZSx4cil9ZS5nZXRFeHByZXNzaW9uQXNzb2NpYXRpdml0eT1NXztmdW5jdGlvbiBFcChjLHRlLHhyKXtzd2l0Y2goYyl7Y2FzZSAyMDk6cmV0dXJuIHhyPzA6MTtjYXNlIDIxOTpjYXNlIDIxNjpjYXNlIDIxNzpjYXNlIDIxNTpjYXNlIDIxODpjYXNlIDIyMjpjYXNlIDIyNDpyZXR1cm4gMTtjYXNlIDIyMTpzd2l0Y2godGUpe2Nhc2UgNDI6Y2FzZSA2MzpjYXNlIDY0OmNhc2UgNjU6Y2FzZSA2NzpjYXNlIDY2OmNhc2UgNjg6Y2FzZSA2OTpjYXNlIDcwOmNhc2UgNzE6Y2FzZSA3MjpjYXNlIDczOmNhc2UgNzg6Y2FzZSA3NDpjYXNlIDc1OmNhc2UgNzY6Y2FzZSA3NzpyZXR1cm4gMX19cmV0dXJuIDB9ZS5nZXRPcGVyYXRvckFzc29jaWF0aXZpdHk9RXA7ZnVuY3Rpb24gb2woYyl7dmFyIHRlPUF1KGMpLHhyPWMua2luZD09PTIwOSYmYy5hcmd1bWVudHMhPT12b2lkIDA7cmV0dXJuIHlmKGMua2luZCx0ZSx4cil9ZS5nZXRFeHByZXNzaW9uUHJlY2VkZW5jZT1vbDtmdW5jdGlvbiBBdShjKXtyZXR1cm4gYy5raW5kPT09MjIxP2Mub3BlcmF0b3JUb2tlbi5raW5kOmMua2luZD09PTIxOXx8Yy5raW5kPT09MjIwP2Mub3BlcmF0b3I6Yy5raW5kfWUuZ2V0T3BlcmF0b3I9QXU7dmFyIHJ1OyhmdW5jdGlvbihjKXtjW2MuQ29tbWE9MF09XCJDb21tYVwiLGNbYy5TcHJlYWQ9MV09XCJTcHJlYWRcIixjW2MuWWllbGQ9Ml09XCJZaWVsZFwiLGNbYy5Bc3NpZ25tZW50PTNdPVwiQXNzaWdubWVudFwiLGNbYy5Db25kaXRpb25hbD00XT1cIkNvbmRpdGlvbmFsXCIsY1tjLkNvYWxlc2NlPTRdPVwiQ29hbGVzY2VcIixjW2MuTG9naWNhbE9SPTVdPVwiTG9naWNhbE9SXCIsY1tjLkxvZ2ljYWxBTkQ9Nl09XCJMb2dpY2FsQU5EXCIsY1tjLkJpdHdpc2VPUj03XT1cIkJpdHdpc2VPUlwiLGNbYy5CaXR3aXNlWE9SPThdPVwiQml0d2lzZVhPUlwiLGNbYy5CaXR3aXNlQU5EPTldPVwiQml0d2lzZUFORFwiLGNbYy5FcXVhbGl0eT0xMF09XCJFcXVhbGl0eVwiLGNbYy5SZWxhdGlvbmFsPTExXT1cIlJlbGF0aW9uYWxcIixjW2MuU2hpZnQ9MTJdPVwiU2hpZnRcIixjW2MuQWRkaXRpdmU9MTNdPVwiQWRkaXRpdmVcIixjW2MuTXVsdGlwbGljYXRpdmU9MTRdPVwiTXVsdGlwbGljYXRpdmVcIixjW2MuRXhwb25lbnRpYXRpb249MTVdPVwiRXhwb25lbnRpYXRpb25cIixjW2MuVW5hcnk9MTZdPVwiVW5hcnlcIixjW2MuVXBkYXRlPTE3XT1cIlVwZGF0ZVwiLGNbYy5MZWZ0SGFuZFNpZGU9MThdPVwiTGVmdEhhbmRTaWRlXCIsY1tjLk1lbWJlcj0xOV09XCJNZW1iZXJcIixjW2MuUHJpbWFyeT0yMF09XCJQcmltYXJ5XCIsY1tjLkhpZ2hlc3Q9MjBdPVwiSGlnaGVzdFwiLGNbYy5Mb3dlc3Q9MF09XCJMb3dlc3RcIixjW2MuSW52YWxpZD0tMV09XCJJbnZhbGlkXCJ9KShydT1lLk9wZXJhdG9yUHJlY2VkZW5jZXx8KGUuT3BlcmF0b3JQcmVjZWRlbmNlPXt9KSk7ZnVuY3Rpb24geWYoYyx0ZSx4cil7c3dpdGNoKGMpe2Nhc2UgMzUxOnJldHVybiAwO2Nhc2UgMjI1OnJldHVybiAxO2Nhc2UgMjI0OnJldHVybiAyO2Nhc2UgMjIyOnJldHVybiA0O2Nhc2UgMjIxOnN3aXRjaCh0ZSl7Y2FzZSAyNzpyZXR1cm4gMDtjYXNlIDYzOmNhc2UgNjQ6Y2FzZSA2NTpjYXNlIDY3OmNhc2UgNjY6Y2FzZSA2ODpjYXNlIDY5OmNhc2UgNzA6Y2FzZSA3MTpjYXNlIDcyOmNhc2UgNzM6Y2FzZSA3ODpjYXNlIDc0OmNhc2UgNzU6Y2FzZSA3NjpjYXNlIDc3OnJldHVybiAzO2RlZmF1bHQ6cmV0dXJuIENwKHRlKX1jYXNlIDIxMTpjYXNlIDIzMDpjYXNlIDIxOTpjYXNlIDIxNjpjYXNlIDIxNzpjYXNlIDIxNTpjYXNlIDIxODpyZXR1cm4gMTY7Y2FzZSAyMjA6cmV0dXJuIDE3O2Nhc2UgMjA4OnJldHVybiAxODtjYXNlIDIwOTpyZXR1cm4geHI/MTk6MTg7Y2FzZSAyMTA6Y2FzZSAyMDY6Y2FzZSAyMDc6Y2FzZSAyMzE6cmV0dXJuIDE5O2Nhc2UgMjI5OnJldHVybiAxMTtjYXNlIDEwODpjYXNlIDEwNjpjYXNlIDc5OmNhc2UgODA6Y2FzZSAxMDQ6Y2FzZSAxMTA6Y2FzZSA5NTpjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAyMDQ6Y2FzZSAyMDU6Y2FzZSAyMTM6Y2FzZSAyMTQ6Y2FzZSAyMjY6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMjIzOmNhc2UgMjEyOmNhc2UgMjI3OmNhc2UgMjc4OmNhc2UgMjc5OmNhc2UgMjgyOnJldHVybiAyMDtkZWZhdWx0OnJldHVybi0xfX1lLmdldE9wZXJhdG9yUHJlY2VkZW5jZT15ZjtmdW5jdGlvbiBDcChjKXtzd2l0Y2goYyl7Y2FzZSA2MDpyZXR1cm4gNDtjYXNlIDU2OnJldHVybiA1O2Nhc2UgNTU6cmV0dXJuIDY7Y2FzZSA1MTpyZXR1cm4gNztjYXNlIDUyOnJldHVybiA4O2Nhc2UgNTA6cmV0dXJuIDk7Y2FzZSAzNDpjYXNlIDM1OmNhc2UgMzY6Y2FzZSAzNzpyZXR1cm4gMTA7Y2FzZSAyOTpjYXNlIDMxOmNhc2UgMzI6Y2FzZSAzMzpjYXNlIDEwMjpjYXNlIDEwMTpjYXNlIDEyNzpyZXR1cm4gMTE7Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgNDk6cmV0dXJuIDEyO2Nhc2UgMzk6Y2FzZSA0MDpyZXR1cm4gMTM7Y2FzZSA0MTpjYXNlIDQzOmNhc2UgNDQ6cmV0dXJuIDE0O2Nhc2UgNDI6cmV0dXJuIDE1fXJldHVybi0xfWUuZ2V0QmluYXJ5T3BlcmF0b3JQcmVjZWRlbmNlPUNwO2Z1bmN0aW9uIGRkKGMpe3JldHVybiBlLmZpbHRlcihjLGZ1bmN0aW9uKHRlKXtzd2l0Y2godGUua2luZCl7Y2FzZSAyODg6cmV0dXJuISF0ZS5leHByZXNzaW9uO2Nhc2UgMTE6cmV0dXJuIXRlLmNvbnRhaW5zT25seVRyaXZpYVdoaXRlU3BhY2VzO2RlZmF1bHQ6cmV0dXJuITB9fSl9ZS5nZXRTZW1hbnRpY0pzeENoaWxkcmVuPWRkO2Z1bmN0aW9uIGtwKCl7dmFyIGM9W10sdGU9W10seHI9bmV3IGUuTWFwLGVpPSExO3JldHVybnthZGQ6RnQsbG9va3VwOmJpLGdldEdsb2JhbERpYWdub3N0aWNzOm90LGdldERpYWdub3N0aWNzOnhhfTtmdW5jdGlvbiBiaShtbil7dmFyIGFuO2lmKG1uLmZpbGU/YW49eHIuZ2V0KG1uLmZpbGUuZmlsZU5hbWUpOmFuPWMsISFhbil7dmFyIFRvPWUuYmluYXJ5U2VhcmNoKGFuLG1uLGUuaWRlbnRpdHksX2cpO2lmKFRvPj0wKXJldHVybiBhbltUb119fWZ1bmN0aW9uIEZ0KG1uKXt2YXIgYW47bW4uZmlsZT8oYW49eHIuZ2V0KG1uLmZpbGUuZmlsZU5hbWUpLGFufHwoYW49W10seHIuc2V0KG1uLmZpbGUuZmlsZU5hbWUsYW4pLGUuaW5zZXJ0U29ydGVkKHRlLG1uLmZpbGUuZmlsZU5hbWUsZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpKSk6KGVpJiYoZWk9ITEsYz1jLnNsaWNlKCkpLGFuPWMpLGUuaW5zZXJ0U29ydGVkKGFuLG1uLFFnKX1mdW5jdGlvbiBvdCgpe3JldHVybiBlaT0hMCxjfWZ1bmN0aW9uIHhhKG1uKXtpZihtbilyZXR1cm4geHIuZ2V0KG1uKXx8W107dmFyIGFuPWUuZmxhdE1hcFRvTXV0YWJsZSh0ZSxmdW5jdGlvbihUbyl7cmV0dXJuIHhyLmdldChUbyl9KTtyZXR1cm4gYy5sZW5ndGgmJmFuLnVuc2hpZnQuYXBwbHkoYW4sYyksYW59fWUuY3JlYXRlRGlhZ25vc3RpY0NvbGxlY3Rpb249a3A7dmFyIG11PS9cXCRcXHsvZztmdW5jdGlvbiBnZChjKXtyZXR1cm4gYy5yZXBsYWNlKG11LFwiXFxcXCR7XCIpfWZ1bmN0aW9uIGhmKGMpe3JldHVybiBjJiYhIShlLmlzTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWwoYyk/Yy50ZW1wbGF0ZUZsYWdzOmMuaGVhZC50ZW1wbGF0ZUZsYWdzfHxlLnNvbWUoYy50ZW1wbGF0ZVNwYW5zLGZ1bmN0aW9uKHRlKXtyZXR1cm4hIXRlLmxpdGVyYWwudGVtcGxhdGVGbGFnc30pKX1lLmhhc0ludmFsaWRFc2NhcGU9aGY7dmFyICRsPS9bXFxcXFxcXCJcXHUwMDAwLVxcdTAwMWZcXHRcXHZcXGZcXGJcXHJcXG5cXHUyMDI4XFx1MjAyOVxcdTAwODVdL2csVWY9L1tcXFxcXFwnXFx1MDAwMC1cXHUwMDFmXFx0XFx2XFxmXFxiXFxyXFxuXFx1MjAyOFxcdTIwMjlcXHUwMDg1XS9nLExfPS9cXHJcXG58W1xcXFxcXGBcXHUwMDAwLVxcdTAwMWZcXHRcXHZcXGZcXGJcXHJcXHUyMDI4XFx1MjAyOVxcdTAwODVdL2csbF89bmV3IGUuTWFwKGUuZ2V0RW50cmllcyh7XCJcdFwiOlwiXFxcXHRcIixcIlxcdlwiOlwiXFxcXHZcIixcIlxcZlwiOlwiXFxcXGZcIixcIlxcYlwiOlwiXFxcXGJcIixcIlxcclwiOlwiXFxcXHJcIixcIlxcblwiOlwiXFxcXG5cIixcIlxcXFxcIjpcIlxcXFxcXFxcXCIsJ1wiJzonXFxcXFwiJyxcIidcIjpcIlxcXFwnXCIsXCJgXCI6XCJcXFxcYFwiLFwiXFx1MjAyOFwiOlwiXFxcXHUyMDI4XCIsXCJcXHUyMDI5XCI6XCJcXFxcdTIwMjlcIixcIlxceDg1XCI6XCJcXFxcdTAwODVcIixcIlxcclxcblwiOlwiXFxcXHJcXFxcblwifSkpO2Z1bmN0aW9uIGZfKGMpe3ZhciB0ZT1jLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLHhyPShcIjAwMDBcIit0ZSkuc2xpY2UoLTQpO3JldHVyblwiXFxcXHVcIit4cn1mdW5jdGlvbiBtZChjLHRlLHhyKXtpZihjLmNoYXJDb2RlQXQoMCk9PT0wKXt2YXIgZWk9eHIuY2hhckNvZGVBdCh0ZStjLmxlbmd0aCk7cmV0dXJuIGVpPj00OCYmZWk8PTU3P1wiXFxcXHgwMFwiOlwiXFxcXDBcIn1yZXR1cm4gbF8uZ2V0KGMpfHxmXyhjLmNoYXJDb2RlQXQoMCkpfWZ1bmN0aW9uIGtzKGMsdGUpe3ZhciB4cj10ZT09PTk2P0xfOnRlPT09Mzk/VWY6JGw7cmV0dXJuIGMucmVwbGFjZSh4cixtZCl9ZS5lc2NhcGVTdHJpbmc9a3M7dmFyIFd1PS9bXlxcdTAwMDAtXFx1MDA3Rl0vZztmdW5jdGlvbiBabChjLHRlKXtyZXR1cm4gYz1rcyhjLHRlKSxXdS50ZXN0KGMpP2MucmVwbGFjZShXdSxmdW5jdGlvbih4cil7cmV0dXJuIGZfKHhyLmNoYXJDb2RlQXQoMCkpfSk6Y31lLmVzY2FwZU5vbkFzY2lpU3RyaW5nPVpsO3ZhciBSXz0vW1xcXCJcXHUwMDAwLVxcdTAwMWZcXHUyMDI4XFx1MjAyOVxcdTAwODVdL2csa2w9L1tcXCdcXHUwMDAwLVxcdTAwMWZcXHUyMDI4XFx1MjAyOVxcdTAwODVdL2csX189bmV3IGUuTWFwKGUuZ2V0RW50cmllcyh7J1wiJzpcIiZxdW90O1wiLFwiJ1wiOlwiJmFwb3M7XCJ9KSk7ZnVuY3Rpb24gemQoYyl7dmFyIHRlPWMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuXCImI3hcIit0ZStcIjtcIn1mdW5jdGlvbiBBbChjKXtyZXR1cm4gYy5jaGFyQ29kZUF0KDApPT09MD9cIiYjMDtcIjpfXy5nZXQoYyl8fHpkKGMuY2hhckNvZGVBdCgwKSl9ZnVuY3Rpb24gd2MoYyx0ZSl7dmFyIHhyPXRlPT09Mzk/a2w6Ul87cmV0dXJuIGMucmVwbGFjZSh4cixBbCl9ZS5lc2NhcGVKc3hBdHRyaWJ1dGVTdHJpbmc9d2M7ZnVuY3Rpb24gcXUoYyl7dmFyIHRlPWMubGVuZ3RoO3JldHVybiB0ZT49MiYmYy5jaGFyQ29kZUF0KDApPT09Yy5jaGFyQ29kZUF0KHRlLTEpJiZWdShjLmNoYXJDb2RlQXQoMCkpP2Muc3Vic3RyaW5nKDEsdGUtMSk6Y31lLnN0cmlwUXVvdGVzPXF1O2Z1bmN0aW9uIFZ1KGMpe3JldHVybiBjPT09Mzl8fGM9PT0zNHx8Yz09PTk2fWZ1bmN0aW9uIGVmKGMpe3ZhciB0ZT1jLmNoYXJDb2RlQXQoMCk7cmV0dXJuIHRlPj05NyYmdGU8PTEyMnx8ZS5zdHJpbmdDb250YWlucyhjLFwiLVwiKXx8ZS5zdHJpbmdDb250YWlucyhjLFwiOlwiKX1lLmlzSW50cmluc2ljSnN4TmFtZT1lZjt2YXIgc2w9W1wiXCIsXCIgICAgXCJdO2Z1bmN0aW9uIHBfKGMpe2Zvcih2YXIgdGU9c2xbMV0seHI9c2wubGVuZ3RoO3hyPD1jO3hyKyspc2wucHVzaChzbFt4ci0xXSt0ZSk7cmV0dXJuIHNsW2NdfWUuZ2V0SW5kZW50U3RyaW5nPXBfO2Z1bmN0aW9uIERmKCl7cmV0dXJuIHNsWzFdLmxlbmd0aH1lLmdldEluZGVudFNpemU9RGY7ZnVuY3Rpb24gRWMoKXtyZXR1cm4gZS5zdHJpbmdDb250YWlucyhlLnZlcnNpb24sXCItZGV2XCIpfHxlLnN0cmluZ0NvbnRhaW5zKGUudmVyc2lvbixcIi1pbnNpZGVyc1wiKX1lLmlzTmlnaHRseT1FYztmdW5jdGlvbiBabihjKXt2YXIgdGUseHIsZWksYmksRnQsb3Q9ITE7ZnVuY3Rpb24geGEoWG8pe3ZhciBqbD1lLmNvbXB1dGVMaW5lU3RhcnRzKFhvKTtqbC5sZW5ndGg+MT8oYmk9YmkramwubGVuZ3RoLTEsRnQ9dGUubGVuZ3RoLVhvLmxlbmd0aCtlLmxhc3QoamwpLGVpPUZ0LXRlLmxlbmd0aD09PTApOmVpPSExfWZ1bmN0aW9uIG1uKFhvKXtYbyYmWG8ubGVuZ3RoJiYoZWkmJihYbz1wXyh4cikrWG8sZWk9ITEpLHRlKz1Ybyx4YShYbykpfWZ1bmN0aW9uIGFuKFhvKXtYbyYmKG90PSExKSxtbihYbyl9ZnVuY3Rpb24gVG8oWG8pe1hvJiYob3Q9ITApLG1uKFhvKX1mdW5jdGlvbiBIbigpe3RlPVwiXCIseHI9MCxlaT0hMCxiaT0wLEZ0PTAsb3Q9ITF9ZnVuY3Rpb24gc3MoWG8pe1hvIT09dm9pZCAwJiYodGUrPVhvLHhhKFhvKSxvdD0hMSl9ZnVuY3Rpb24gY3MoWG8pe1hvJiZYby5sZW5ndGgmJmFuKFhvKX1mdW5jdGlvbiB3cyhYbyl7KCFlaXx8WG8pJiYodGUrPWMsYmkrKyxGdD10ZS5sZW5ndGgsZWk9ITAsb3Q9ITEpfWZ1bmN0aW9uIG51KCl7cmV0dXJuIGVpP3RlLmxlbmd0aDp0ZS5sZW5ndGgrYy5sZW5ndGh9cmV0dXJuIEhuKCkse3dyaXRlOmFuLHJhd1dyaXRlOnNzLHdyaXRlTGl0ZXJhbDpjcyx3cml0ZUxpbmU6d3MsaW5jcmVhc2VJbmRlbnQ6ZnVuY3Rpb24oKXt4cisrfSxkZWNyZWFzZUluZGVudDpmdW5jdGlvbigpe3hyLS19LGdldEluZGVudDpmdW5jdGlvbigpe3JldHVybiB4cn0sZ2V0VGV4dFBvczpmdW5jdGlvbigpe3JldHVybiB0ZS5sZW5ndGh9LGdldExpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gYml9LGdldENvbHVtbjpmdW5jdGlvbigpe3JldHVybiBlaT94cipEZigpOnRlLmxlbmd0aC1GdH0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiB0ZX0saXNBdFN0YXJ0T2ZMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIGVpfSxoYXNUcmFpbGluZ0NvbW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gb3R9LGhhc1RyYWlsaW5nV2hpdGVzcGFjZTpmdW5jdGlvbigpe3JldHVybiEhdGUubGVuZ3RoJiZlLmlzV2hpdGVTcGFjZUxpa2UodGUuY2hhckNvZGVBdCh0ZS5sZW5ndGgtMSkpfSxjbGVhcjpIbixyZXBvcnRJbmFjY2Vzc2libGVUaGlzRXJyb3I6ZS5ub29wLHJlcG9ydFByaXZhdGVJbkJhc2VPZkNsYXNzRXhwcmVzc2lvbjplLm5vb3AscmVwb3J0SW5hY2Nlc3NpYmxlVW5pcXVlU3ltYm9sRXJyb3I6ZS5ub29wLHRyYWNrU3ltYm9sOmZ1bmN0aW9uKCl7cmV0dXJuITF9LHdyaXRlS2V5d29yZDphbix3cml0ZU9wZXJhdG9yOmFuLHdyaXRlUGFyYW1ldGVyOmFuLHdyaXRlUHJvcGVydHk6YW4sd3JpdGVQdW5jdHVhdGlvbjphbix3cml0ZVNwYWNlOmFuLHdyaXRlU3RyaW5nTGl0ZXJhbDphbix3cml0ZVN5bWJvbDpmdW5jdGlvbihYbyxqbCl7cmV0dXJuIGFuKFhvKX0sd3JpdGVUcmFpbGluZ1NlbWljb2xvbjphbix3cml0ZUNvbW1lbnQ6VG8sZ2V0VGV4dFBvc1dpdGhXcml0ZUxpbmU6bnV9fWUuY3JlYXRlVGV4dFdyaXRlcj1abjtmdW5jdGlvbiBvcyhjKXt2YXIgdGU9ITE7ZnVuY3Rpb24geHIoKXt0ZSYmKGMud3JpdGVUcmFpbGluZ1NlbWljb2xvbihcIjtcIiksdGU9ITEpfXJldHVybiBLZShLZSh7fSxjKSx7d3JpdGVUcmFpbGluZ1NlbWljb2xvbjpmdW5jdGlvbigpe3RlPSEwfSx3cml0ZUxpdGVyYWw6ZnVuY3Rpb24oZWkpe3hyKCksYy53cml0ZUxpdGVyYWwoZWkpfSx3cml0ZVN0cmluZ0xpdGVyYWw6ZnVuY3Rpb24oZWkpe3hyKCksYy53cml0ZVN0cmluZ0xpdGVyYWwoZWkpfSx3cml0ZVN5bWJvbDpmdW5jdGlvbihlaSxiaSl7eHIoKSxjLndyaXRlU3ltYm9sKGVpLGJpKX0sd3JpdGVQdW5jdHVhdGlvbjpmdW5jdGlvbihlaSl7eHIoKSxjLndyaXRlUHVuY3R1YXRpb24oZWkpfSx3cml0ZUtleXdvcmQ6ZnVuY3Rpb24oZWkpe3hyKCksYy53cml0ZUtleXdvcmQoZWkpfSx3cml0ZU9wZXJhdG9yOmZ1bmN0aW9uKGVpKXt4cigpLGMud3JpdGVPcGVyYXRvcihlaSl9LHdyaXRlUGFyYW1ldGVyOmZ1bmN0aW9uKGVpKXt4cigpLGMud3JpdGVQYXJhbWV0ZXIoZWkpfSx3cml0ZVNwYWNlOmZ1bmN0aW9uKGVpKXt4cigpLGMud3JpdGVTcGFjZShlaSl9LHdyaXRlUHJvcGVydHk6ZnVuY3Rpb24oZWkpe3hyKCksYy53cml0ZVByb3BlcnR5KGVpKX0sd3JpdGVDb21tZW50OmZ1bmN0aW9uKGVpKXt4cigpLGMud3JpdGVDb21tZW50KGVpKX0sd3JpdGVMaW5lOmZ1bmN0aW9uKCl7eHIoKSxjLndyaXRlTGluZSgpfSxpbmNyZWFzZUluZGVudDpmdW5jdGlvbigpe3hyKCksYy5pbmNyZWFzZUluZGVudCgpfSxkZWNyZWFzZUluZGVudDpmdW5jdGlvbigpe3hyKCksYy5kZWNyZWFzZUluZGVudCgpfX0pfWUuZ2V0VHJhaWxpbmdTZW1pY29sb25EZWZlcnJpbmdXcml0ZXI9b3M7ZnVuY3Rpb24gUHMoYyl7cmV0dXJuIGMudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcz9jLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKTohMX1lLmhvc3RVc2VzQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcz1QcztmdW5jdGlvbiBkXyhjKXtyZXR1cm4gZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShQcyhjKSl9ZS5ob3N0R2V0Q2Fub25pY2FsRmlsZU5hbWU9ZF87ZnVuY3Rpb24gR2MoYyx0ZSx4cil7cmV0dXJuIHRlLm1vZHVsZU5hbWV8fEd0KGMsdGUuZmlsZU5hbWUseHImJnhyLmZpbGVOYW1lKX1lLmdldFJlc29sdmVkRXh0ZXJuYWxNb2R1bGVOYW1lPUdjO2Z1bmN0aW9uIEJfKGMsdGUpe3JldHVybiBjLmdldENhbm9uaWNhbEZpbGVOYW1lKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aCh0ZSxjLmdldEN1cnJlbnREaXJlY3RvcnkoKSkpfWZ1bmN0aW9uIHZ1KGMsdGUseHIpe3ZhciBlaT10ZS5nZXRFeHRlcm5hbE1vZHVsZUZpbGVGcm9tRGVjbGFyYXRpb24oeHIpO2lmKCEoIWVpfHxlaS5pc0RlY2xhcmF0aW9uRmlsZSkpe3ZhciBiaT1ldSh4cik7aWYoIShiaSYmZS5pc1N0cmluZ0xpdGVyYWxMaWtlKGJpKSYmIWUucGF0aElzUmVsYXRpdmUoYmkudGV4dCkmJkJfKGMsZWkucGF0aCkuaW5kZXhPZihCXyhjLGUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoYy5nZXRDb21tb25Tb3VyY2VEaXJlY3RvcnkoKSkpKT09PS0xKSlyZXR1cm4gR2MoYyxlaSl9fWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lRnJvbURlY2xhcmF0aW9uPXZ1O2Z1bmN0aW9uIEd0KGMsdGUseHIpe3ZhciBlaT1mdW5jdGlvbihtbil7cmV0dXJuIGMuZ2V0Q2Fub25pY2FsRmlsZU5hbWUobW4pfSxiaT1lLnRvUGF0aCh4cj9lLmdldERpcmVjdG9yeVBhdGgoeHIpOmMuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KCksYy5nZXRDdXJyZW50RGlyZWN0b3J5KCksZWkpLEZ0PWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aCh0ZSxjLmdldEN1cnJlbnREaXJlY3RvcnkoKSksb3Q9ZS5nZXRSZWxhdGl2ZVBhdGhUb0RpcmVjdG9yeU9yVXJsKGJpLEZ0LGJpLGVpLCExKSx4YT1HZChvdCk7cmV0dXJuIHhyP2UuZW5zdXJlUGF0aElzTm9uTW9kdWxlTmFtZSh4YSk6eGF9ZS5nZXRFeHRlcm5hbE1vZHVsZU5hbWVGcm9tUGF0aD1HdDtmdW5jdGlvbiBBcyhjLHRlLHhyKXt2YXIgZWk9dGUuZ2V0Q29tcGlsZXJPcHRpb25zKCksYmk7cmV0dXJuIGVpLm91dERpcj9iaT1HZChEYyhjLHRlLGVpLm91dERpcikpOmJpPUdkKGMpLGJpK3hyfWUuZ2V0T3duRW1pdE91dHB1dEZpbGVQYXRoPUFzO2Z1bmN0aW9uIHZuKGMsdGUpe3JldHVybiBObChjLHRlLmdldENvbXBpbGVyT3B0aW9ucygpLHRlLmdldEN1cnJlbnREaXJlY3RvcnkoKSx0ZS5nZXRDb21tb25Tb3VyY2VEaXJlY3RvcnkoKSxmdW5jdGlvbih4cil7cmV0dXJuIHRlLmdldENhbm9uaWNhbEZpbGVOYW1lKHhyKX0pfWUuZ2V0RGVjbGFyYXRpb25FbWl0T3V0cHV0RmlsZVBhdGg9dm47ZnVuY3Rpb24gTmwoYyx0ZSx4cixlaSxiaSl7dmFyIEZ0PXRlLmRlY2xhcmF0aW9uRGlyfHx0ZS5vdXREaXIsb3Q9RnQ/Q2MoYyxGdCx4cixlaSxiaSk6Yyx4YT1jbChvdCk7cmV0dXJuIEdkKG90KSt4YX1lLmdldERlY2xhcmF0aW9uRW1pdE91dHB1dEZpbGVQYXRoV29ya2VyPU5sO2Z1bmN0aW9uIGNsKGMpe3JldHVybiBlLmZpbGVFeHRlbnNpb25Jc09uZU9mKGMsW1wiLm1qc1wiLFwiLm10c1wiXSk/XCIuZC5tdHNcIjplLmZpbGVFeHRlbnNpb25Jc09uZU9mKGMsW1wiLmNqc1wiLFwiLmN0c1wiXSk/XCIuZC5jdHNcIjplLmZpbGVFeHRlbnNpb25Jc09uZU9mKGMsW1wiLmpzb25cIl0pP1wiLmpzb24uZC50c1wiOlwiLmQudHNcIn1lLmdldERlY2xhcmF0aW9uRW1pdEV4dGVuc2lvbkZvclBhdGg9Y2w7ZnVuY3Rpb24gcmYoYyl7cmV0dXJuIGUuZmlsZUV4dGVuc2lvbklzT25lT2YoYyxbXCIuZC5tdHNcIixcIi5tanNcIixcIi5tdHNcIl0pP1tcIi5tdHNcIixcIi5tanNcIl06ZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihjLFtcIi5kLmN0c1wiLFwiLmNqc1wiLFwiLmN0c1wiXSk/W1wiLmN0c1wiLFwiLmNqc1wiXTplLmZpbGVFeHRlbnNpb25Jc09uZU9mKGMsW1wiLmpzb24uZC50c1wiXSk/W1wiLmpzb25cIl06W1wiLnRzeFwiLFwiLnRzXCIsXCIuanN4XCIsXCIuanNcIl19ZS5nZXRQb3NzaWJsZU9yaWdpbmFsSW5wdXRFeHRlbnNpb25Gb3JFeHRlbnNpb249cmY7ZnVuY3Rpb24gVXQoYyl7cmV0dXJuIGMub3V0RmlsZXx8Yy5vdXR9ZS5vdXRGaWxlPVV0O2Z1bmN0aW9uIERzKGMsdGUpe3ZhciB4cixlaTtpZighIWMucGF0aHMpcmV0dXJuKHhyPWMuYmFzZVVybCkhPT1udWxsJiZ4ciE9PXZvaWQgMD94cjplLkRlYnVnLmNoZWNrRGVmaW5lZChjLnBhdGhzQmFzZVBhdGh8fCgoZWk9dGUuZ2V0Q3VycmVudERpcmVjdG9yeSk9PT1udWxsfHxlaT09PXZvaWQgMD92b2lkIDA6ZWkuY2FsbCh0ZSkpLFwiRW5jb3VudGVyZWQgJ3BhdGhzJyB3aXRob3V0IGEgJ2Jhc2VVcmwnLCBjb25maWcgZmlsZSwgb3IgaG9zdCAnZ2V0Q3VycmVudERpcmVjdG9yeScuXCIpfWUuZ2V0UGF0aHNCYXNlUGF0aD1EcztmdW5jdGlvbiBiZihjLHRlLHhyKXt2YXIgZWk9Yy5nZXRDb21waWxlck9wdGlvbnMoKTtpZihVdChlaSkpe3ZhciBiaT1KYShlaSksRnQ9ZWkuZW1pdERlY2xhcmF0aW9uT25seXx8Ymk9PT1lLk1vZHVsZUtpbmQuQU1EfHxiaT09PWUuTW9kdWxlS2luZC5TeXN0ZW07cmV0dXJuIGUuZmlsdGVyKGMuZ2V0U291cmNlRmlsZXMoKSxmdW5jdGlvbih4YSl7cmV0dXJuKEZ0fHwhZS5pc0V4dGVybmFsTW9kdWxlKHhhKSkmJmJzKHhhLGMseHIpfSl9ZWxzZXt2YXIgb3Q9dGU9PT12b2lkIDA/Yy5nZXRTb3VyY2VGaWxlcygpOlt0ZV07cmV0dXJuIGUuZmlsdGVyKG90LGZ1bmN0aW9uKHhhKXtyZXR1cm4gYnMoeGEsYyx4cil9KX19ZS5nZXRTb3VyY2VGaWxlc1RvRW1pdD1iZjtmdW5jdGlvbiBicyhjLHRlLHhyKXt2YXIgZWk9dGUuZ2V0Q29tcGlsZXJPcHRpb25zKCk7cmV0dXJuIShlaS5ub0VtaXRGb3JKc0ZpbGVzJiZQaShjKSkmJiFjLmlzRGVjbGFyYXRpb25GaWxlJiYhdGUuaXNTb3VyY2VGaWxlRnJvbUV4dGVybmFsTGlicmFyeShjKSYmKHhyfHwhKE1yKGMpJiZ0ZS5nZXRSZXNvbHZlZFByb2plY3RSZWZlcmVuY2VUb1JlZGlyZWN0KGMuZmlsZU5hbWUpKSYmIXRlLmlzU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QoYy5maWxlTmFtZSkpfWUuc291cmNlRmlsZU1heUJlRW1pdHRlZD1icztmdW5jdGlvbiBEYyhjLHRlLHhyKXtyZXR1cm4gQ2MoYyx4cix0ZS5nZXRDdXJyZW50RGlyZWN0b3J5KCksdGUuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KCksZnVuY3Rpb24oZWkpe3JldHVybiB0ZS5nZXRDYW5vbmljYWxGaWxlTmFtZShlaSl9KX1lLmdldFNvdXJjZUZpbGVQYXRoSW5OZXdEaXI9RGM7ZnVuY3Rpb24gQ2MoYyx0ZSx4cixlaSxiaSl7dmFyIEZ0PWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChjLHhyKSxvdD1iaShGdCkuaW5kZXhPZihiaShlaSkpPT09MDtyZXR1cm4gRnQ9b3Q/RnQuc3Vic3RyaW5nKGVpLmxlbmd0aCk6RnQsZS5jb21iaW5lUGF0aHModGUsRnQpfWUuZ2V0U291cmNlRmlsZVBhdGhJbk5ld0Rpcldvcmtlcj1DYztmdW5jdGlvbiBhYyhjLHRlLHhyLGVpLGJpLEZ0LG90KXtjLndyaXRlRmlsZSh4cixlaSxiaSxmdW5jdGlvbih4YSl7dGUuYWRkKHFkKGUuRGlhZ25vc3RpY3MuQ291bGRfbm90X3dyaXRlX2ZpbGVfMF9Db2xvbl8xLHhyLHhhKSl9LEZ0LG90KX1lLndyaXRlRmlsZT1hYztmdW5jdGlvbiBQbChjLHRlLHhyKXtpZihjLmxlbmd0aD5lLmdldFJvb3RMZW5ndGgoYykmJiF4cihjKSl7dmFyIGVpPWUuZ2V0RGlyZWN0b3J5UGF0aChjKTtQbChlaSx0ZSx4ciksdGUoYyl9fWZ1bmN0aW9uIElsKGMsdGUseHIsZWksYmksRnQpe3RyeXtlaShjLHRlLHhyKX1jYXRjaHtQbChlLmdldERpcmVjdG9yeVBhdGgoZS5ub3JtYWxpemVQYXRoKGMpKSxiaSxGdCksZWkoYyx0ZSx4cil9fWUud3JpdGVGaWxlRW5zdXJpbmdEaXJlY3Rvcmllcz1JbDtmdW5jdGlvbiB6ZihjLHRlKXt2YXIgeHI9ZS5nZXRMaW5lU3RhcnRzKGMpO3JldHVybiBlLmNvbXB1dGVMaW5lT2ZQb3NpdGlvbih4cix0ZSl9ZS5nZXRMaW5lT2ZMb2NhbFBvc2l0aW9uPXpmO2Z1bmN0aW9uIHVsKGMsdGUpe3JldHVybiBlLmNvbXB1dGVMaW5lT2ZQb3NpdGlvbihjLHRlKX1lLmdldExpbmVPZkxvY2FsUG9zaXRpb25Gcm9tTGluZU1hcD11bDtmdW5jdGlvbiBOdShjKXtyZXR1cm4gZS5maW5kKGMubWVtYmVycyxmdW5jdGlvbih0ZSl7cmV0dXJuIGUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKHRlKSYmaih0ZS5ib2R5KX0pfWUuZ2V0Rmlyc3RDb25zdHJ1Y3RvcldpdGhCb2R5PU51O2Z1bmN0aW9uIFVzKGMpe2lmKGMmJmMucGFyYW1ldGVycy5sZW5ndGg+MCl7dmFyIHRlPWMucGFyYW1ldGVycy5sZW5ndGg9PT0yJiZTZihjLnBhcmFtZXRlcnNbMF0pO3JldHVybiBjLnBhcmFtZXRlcnNbdGU/MTowXX19ZS5nZXRTZXRBY2Nlc3NvclZhbHVlUGFyYW1ldGVyPVVzO2Z1bmN0aW9uIEFwKGMpe3ZhciB0ZT1VcyhjKTtyZXR1cm4gdGUmJnRlLnR5cGV9ZS5nZXRTZXRBY2Nlc3NvclR5cGVBbm5vdGF0aW9uTm9kZT1BcDtmdW5jdGlvbiBXZihjKXtpZihjLnBhcmFtZXRlcnMubGVuZ3RoJiYhZS5pc0pTRG9jU2lnbmF0dXJlKGMpKXt2YXIgdGU9Yy5wYXJhbWV0ZXJzWzBdO2lmKFNmKHRlKSlyZXR1cm4gdGV9fWUuZ2V0VGhpc1BhcmFtZXRlcj1XZjtmdW5jdGlvbiBTZihjKXtyZXR1cm4gbGwoYy5uYW1lKX1lLnBhcmFtZXRlcklzVGhpc0tleXdvcmQ9U2Y7ZnVuY3Rpb24gbGwoYyl7cmV0dXJuISFjJiZjLmtpbmQ9PT03OSYmal8oYyl9ZS5pc1RoaXNJZGVudGlmaWVyPWxsO2Z1bmN0aW9uIEpfKGMpe2lmKCFsbChjKSlyZXR1cm4hMTtmb3IoO2UuaXNRdWFsaWZpZWROYW1lKGMucGFyZW50KSYmYy5wYXJlbnQubGVmdD09PWM7KWM9Yy5wYXJlbnQ7cmV0dXJuIGMucGFyZW50LmtpbmQ9PT0xODF9ZS5pc1RoaXNJblR5cGVRdWVyeT1KXztmdW5jdGlvbiBqXyhjKXtyZXR1cm4gYy5vcmlnaW5hbEtleXdvcmRLaW5kPT09MTA4fWUuaWRlbnRpZmllcklzVGhpc0tleXdvcmQ9al87ZnVuY3Rpb24gVV8oYyx0ZSl7dmFyIHhyLGVpLGJpLEZ0O3JldHVybiBoYyh0ZSk/KHhyPXRlLHRlLmtpbmQ9PT0xNzI/Ymk9dGU6dGUua2luZD09PTE3Mz9GdD10ZTplLkRlYnVnLmZhaWwoXCJBY2Nlc3NvciBoYXMgd3Jvbmcga2luZFwiKSk6ZS5mb3JFYWNoKGMsZnVuY3Rpb24ob3Qpe2lmKGUuaXNBY2Nlc3NvcihvdCkmJlRmKG90KT09PVRmKHRlKSl7dmFyIHhhPXVfKG90Lm5hbWUpLG1uPXVfKHRlLm5hbWUpO3hhPT09bW4mJih4cj9laXx8KGVpPW90KTp4cj1vdCxvdC5raW5kPT09MTcyJiYhYmkmJihiaT1vdCksb3Qua2luZD09PTE3MyYmIUZ0JiYoRnQ9b3QpKX19KSx7Zmlyc3RBY2Nlc3Nvcjp4cixzZWNvbmRBY2Nlc3NvcjplaSxnZXRBY2Nlc3NvcjpiaSxzZXRBY2Nlc3NvcjpGdH19ZS5nZXRBbGxBY2Nlc3NvckRlY2xhcmF0aW9ucz1VXztmdW5jdGlvbiBpdShjKXtpZighKCFDdChjKSYmZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oYykpKXt2YXIgdGU9Yy50eXBlO3JldHVybiB0ZXx8IUN0KGMpP3RlOmUuaXNKU0RvY1Byb3BlcnR5TGlrZVRhZyhjKT9jLnR5cGVFeHByZXNzaW9uJiZjLnR5cGVFeHByZXNzaW9uLnR5cGU6ZS5nZXRKU0RvY1R5cGUoYyl9fWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlPWl1O2Z1bmN0aW9uIHZkKGMpe3JldHVybiBjLnR5cGV9ZS5nZXRUeXBlQW5ub3RhdGlvbk5vZGU9dmQ7ZnVuY3Rpb24gcWYoYyl7cmV0dXJuIGUuaXNKU0RvY1NpZ25hdHVyZShjKT9jLnR5cGUmJmMudHlwZS50eXBlRXhwcmVzc2lvbiYmYy50eXBlLnR5cGVFeHByZXNzaW9uLnR5cGU6Yy50eXBlfHwoQ3QoYyk/ZS5nZXRKU0RvY1JldHVyblR5cGUoYyk6dm9pZCAwKX1lLmdldEVmZmVjdGl2ZVJldHVyblR5cGVOb2RlPXFmO2Z1bmN0aW9uIGRjKGMpe3JldHVybiBlLmZsYXRNYXAoZS5nZXRKU0RvY1RhZ3MoYyksZnVuY3Rpb24odGUpe3JldHVybiBQdSh0ZSk/dGUudHlwZVBhcmFtZXRlcnM6dm9pZCAwfSl9ZS5nZXRKU0RvY1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnM9ZGM7ZnVuY3Rpb24gUHUoYyl7cmV0dXJuIGUuaXNKU0RvY1RlbXBsYXRlVGFnKGMpJiYhKGMucGFyZW50LmtpbmQ9PT0zMjAmJmMucGFyZW50LnRhZ3Muc29tZShZYSkpfWZ1bmN0aW9uIHdsKGMpe3ZhciB0ZT1VcyhjKTtyZXR1cm4gdGUmJml1KHRlKX1lLmdldEVmZmVjdGl2ZVNldEFjY2Vzc29yVHlwZUFubm90YXRpb25Ob2RlPXdsO2Z1bmN0aW9uIEl1KGMsdGUseHIsZWkpe3NvKGMsdGUseHIucG9zLGVpKX1lLmVtaXROZXdMaW5lQmVmb3JlTGVhZGluZ0NvbW1lbnRzPUl1O2Z1bmN0aW9uIHNvKGMsdGUseHIsZWkpe2VpJiZlaS5sZW5ndGgmJnhyIT09ZWlbMF0ucG9zJiZ1bChjLHhyKSE9PXVsKGMsZWlbMF0ucG9zKSYmdGUud3JpdGVMaW5lKCl9ZS5lbWl0TmV3TGluZUJlZm9yZUxlYWRpbmdDb21tZW50c09mUG9zaXRpb249c287ZnVuY3Rpb24gRXQoYyx0ZSx4cixlaSl7eHIhPT1laSYmdWwoYyx4cikhPT11bChjLGVpKSYmdGUud3JpdGVMaW5lKCl9ZS5lbWl0TmV3TGluZUJlZm9yZUxlYWRpbmdDb21tZW50T2ZQb3NpdGlvbj1FdDtmdW5jdGlvbiBZcyhjLHRlLHhyLGVpLGJpLEZ0LG90LHhhKXtpZihlaSYmZWkubGVuZ3RoPjApe2JpJiZ4ci53cml0ZVNwYWNlKFwiIFwiKTtmb3IodmFyIG1uPSExLGFuPTAsVG89ZWk7YW48VG8ubGVuZ3RoO2FuKyspe3ZhciBIbj1Ub1thbl07bW4mJih4ci53cml0ZVNwYWNlKFwiIFwiKSxtbj0hMSkseGEoYyx0ZSx4cixIbi5wb3MsSG4uZW5kLG90KSxIbi5oYXNUcmFpbGluZ05ld0xpbmU/eHIud3JpdGVMaW5lKCk6bW49ITB9bW4mJkZ0JiZ4ci53cml0ZVNwYWNlKFwiIFwiKX19ZS5lbWl0Q29tbWVudHM9WXM7ZnVuY3Rpb24gS3UoYyx0ZSx4cixlaSxiaSxGdCxvdCl7dmFyIHhhLG1uO2lmKG90P2JpLnBvcz09PTAmJih4YT1lLmZpbHRlcihlLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKGMsYmkucG9zKSxqbCkpOnhhPWUuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoYyxiaS5wb3MpLHhhKXtmb3IodmFyIGFuPVtdLFRvPXZvaWQgMCxIbj0wLHNzPXhhO0huPHNzLmxlbmd0aDtIbisrKXt2YXIgY3M9c3NbSG5dO2lmKFRvKXt2YXIgd3M9dWwodGUsVG8uZW5kKSxudT11bCh0ZSxjcy5wb3MpO2lmKG51Pj13cysyKWJyZWFrfWFuLnB1c2goY3MpLFRvPWNzfWlmKGFuLmxlbmd0aCl7dmFyIHdzPXVsKHRlLGUubGFzdChhbikuZW5kKSxYbz11bCh0ZSxlLnNraXBUcml2aWEoYyxiaS5wb3MpKTtYbz49d3MrMiYmKEl1KHRlLHhyLGJpLHhhKSxZcyhjLHRlLHhyLGFuLCExLCEwLEZ0LGVpKSxtbj17bm9kZVBvczpiaS5wb3MsZGV0YWNoZWRDb21tZW50RW5kUG9zOmUubGFzdChhbikuZW5kfSl9fXJldHVybiBtbjtmdW5jdGlvbiBqbChZXyl7cmV0dXJuIHVlKGMsWV8ucG9zKX19ZS5lbWl0RGV0YWNoZWRDb21tZW50cz1LdTtmdW5jdGlvbiBOcChjLHRlLHhyLGVpLGJpLEZ0KXtpZihjLmNoYXJDb2RlQXQoZWkrMSk9PT00Milmb3IodmFyIG90PWUuY29tcHV0ZUxpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHRlLGVpKSx4YT10ZS5sZW5ndGgsbW49dm9pZCAwLGFuPWVpLFRvPW90LmxpbmU7YW48Ymk7VG8rKyl7dmFyIEhuPVRvKzE9PT14YT9jLmxlbmd0aCsxOnRlW1RvKzFdO2lmKGFuIT09ZWkpe21uPT09dm9pZCAwJiYobW49bmMoYyx0ZVtvdC5saW5lXSxlaSkpO3ZhciBzcz14ci5nZXRJbmRlbnQoKSpEZigpLGNzPXNzLW1uK25jKGMsYW4sSG4pO2lmKGNzPjApe3ZhciB3cz1jcyVEZigpLG51PXBfKChjcy13cykvRGYoKSk7Zm9yKHhyLnJhd1dyaXRlKG51KTt3czspeHIucmF3V3JpdGUoXCIgXCIpLHdzLS19ZWxzZSB4ci5yYXdXcml0ZShcIlwiKX1QcChjLGJpLHhyLEZ0LGFuLEhuKSxhbj1Ibn1lbHNlIHhyLndyaXRlQ29tbWVudChjLnN1YnN0cmluZyhlaSxiaSkpfWUud3JpdGVDb21tZW50UmFuZ2U9TnA7ZnVuY3Rpb24gUHAoYyx0ZSx4cixlaSxiaSxGdCl7dmFyIG90PU1hdGgubWluKHRlLEZ0LTEpLHhhPWUudHJpbVN0cmluZyhjLnN1YnN0cmluZyhiaSxvdCkpO3hhPyh4ci53cml0ZUNvbW1lbnQoeGEpLG90IT09dGUmJnhyLndyaXRlTGluZSgpKTp4ci5yYXdXcml0ZShlaSl9ZnVuY3Rpb24gbmMoYyx0ZSx4cil7Zm9yKHZhciBlaT0wO3RlPHhyJiZlLmlzV2hpdGVTcGFjZVNpbmdsZUxpbmUoYy5jaGFyQ29kZUF0KHRlKSk7dGUrKyljLmNoYXJDb2RlQXQodGUpPT09OT9laSs9RGYoKS1laSVEZigpOmVpKys7cmV0dXJuIGVpfWZ1bmN0aW9uIGZsKGMpe3JldHVybiB4ZihjKSE9PTB9ZS5oYXNFZmZlY3RpdmVNb2RpZmllcnM9Zmw7ZnVuY3Rpb24gX2woYyl7cmV0dXJuIE9jKGMpIT09MH1lLmhhc1N5bnRhY3RpY01vZGlmaWVycz1fbDtmdW5jdGlvbiBjdShjLHRlKXtyZXR1cm4hIUhjKGMsdGUpfWUuaGFzRWZmZWN0aXZlTW9kaWZpZXI9Y3U7ZnVuY3Rpb24gZ2MoYyx0ZSl7cmV0dXJuISFPbChjLHRlKX1lLmhhc1N5bnRhY3RpY01vZGlmaWVyPWdjO2Z1bmN0aW9uIFRmKGMpe3JldHVybiBlLmlzQ2xhc3NFbGVtZW50KGMpJiZtYyhjKXx8ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihjKX1lLmlzU3RhdGljPVRmO2Z1bmN0aW9uIG1jKGMpe3JldHVybiBnYyhjLDMyKX1lLmhhc1N0YXRpY01vZGlmaWVyPW1jO2Z1bmN0aW9uIElwKGMpe3JldHVybiBjdShjLDE2Mzg0KX1lLmhhc092ZXJyaWRlTW9kaWZpZXI9SXA7ZnVuY3Rpb24gbXMoYyl7cmV0dXJuIGdjKGMsMTI4KX1lLmhhc0Fic3RyYWN0TW9kaWZpZXI9bXM7ZnVuY3Rpb24gdHUoYyl7cmV0dXJuIGdjKGMsMil9ZS5oYXNBbWJpZW50TW9kaWZpZXI9dHU7ZnVuY3Rpb24gd3AoYyl7cmV0dXJuIGN1KGMsNjQpfWUuaGFzRWZmZWN0aXZlUmVhZG9ubHlNb2RpZmllcj13cDtmdW5jdGlvbiBIYyhjLHRlKXtyZXR1cm4geGYoYykmdGV9ZS5nZXRTZWxlY3RlZEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3M9SGM7ZnVuY3Rpb24gT2woYyx0ZSl7cmV0dXJuIE9jKGMpJnRlfWUuZ2V0U2VsZWN0ZWRTeW50YWN0aWNNb2RpZmllckZsYWdzPU9sO2Z1bmN0aW9uIHRmKGMsdGUseHIpe3JldHVybiBjLmtpbmQ+PTAmJmMua2luZDw9MTYwPzA6KGMubW9kaWZpZXJGbGFnc0NhY2hlJjUzNjg3MDkxMnx8KGMubW9kaWZpZXJGbGFnc0NhY2hlPUVmKGMpfDUzNjg3MDkxMiksdGUmJiEoYy5tb2RpZmllckZsYWdzQ2FjaGUmNDA5NikmJih4cnx8Q3QoYykpJiZjLnBhcmVudCYmKGMubW9kaWZpZXJGbGFnc0NhY2hlfD1ycyhjKXw0MDk2KSxjLm1vZGlmaWVyRmxhZ3NDYWNoZSYtNTM2ODc1MDA5KX1mdW5jdGlvbiB4ZihjKXtyZXR1cm4gdGYoYywhMCl9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzPXhmO2Z1bmN0aW9uIHpfKGMpe3JldHVybiB0ZihjLCEwLCEwKX1lLmdldEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3NBbHdheXNJbmNsdWRlSlNEb2M9el87ZnVuY3Rpb24gT2MoYyl7cmV0dXJuIHRmKGMsITEpfWUuZ2V0U3ludGFjdGljTW9kaWZpZXJGbGFncz1PYztmdW5jdGlvbiBycyhjKXt2YXIgdGU9MDtyZXR1cm4hIWMucGFyZW50JiYhZS5pc1BhcmFtZXRlcihjKSYmKEN0KGMpJiYoZS5nZXRKU0RvY1B1YmxpY1RhZ05vQ2FjaGUoYykmJih0ZXw9NCksZS5nZXRKU0RvY1ByaXZhdGVUYWdOb0NhY2hlKGMpJiYodGV8PTgpLGUuZ2V0SlNEb2NQcm90ZWN0ZWRUYWdOb0NhY2hlKGMpJiYodGV8PTE2KSxlLmdldEpTRG9jUmVhZG9ubHlUYWdOb0NhY2hlKGMpJiYodGV8PTY0KSxlLmdldEpTRG9jT3ZlcnJpZGVUYWdOb0NhY2hlKGMpJiYodGV8PTE2Mzg0KSksZS5nZXRKU0RvY0RlcHJlY2F0ZWRUYWdOb0NhY2hlKGMpJiYodGV8PTgxOTIpKSx0ZX1mdW5jdGlvbiBPcChjKXtyZXR1cm4gRWYoYyl8cnMoYyl9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzTm9DYWNoZT1PcDtmdW5jdGlvbiBFZihjKXt2YXIgdGU9RmwoYy5tb2RpZmllcnMpO3JldHVybihjLmZsYWdzJjR8fGMua2luZD09PTc5JiZjLmlzSW5KU0RvY05hbWVzcGFjZSkmJih0ZXw9MSksdGV9ZS5nZXRTeW50YWN0aWNNb2RpZmllckZsYWdzTm9DYWNoZT1FZjtmdW5jdGlvbiBGbChjKXt2YXIgdGU9MDtpZihjKWZvcih2YXIgeHI9MCxlaT1jO3hyPGVpLmxlbmd0aDt4cisrKXt2YXIgYmk9ZWlbeHJdO3RlfD1wbChiaS5raW5kKX1yZXR1cm4gdGV9ZS5tb2RpZmllcnNUb0ZsYWdzPUZsO2Z1bmN0aW9uIHBsKGMpe3N3aXRjaChjKXtjYXNlIDEyNDpyZXR1cm4gMzI7Y2FzZSAxMjM6cmV0dXJuIDQ7Y2FzZSAxMjI6cmV0dXJuIDE2O2Nhc2UgMTIxOnJldHVybiA4O2Nhc2UgMTI2OnJldHVybiAxMjg7Y2FzZSA5MzpyZXR1cm4gMTtjYXNlIDEzNTpyZXR1cm4gMjtjYXNlIDg1OnJldHVybiAyMDQ4O2Nhc2UgODg6cmV0dXJuIDUxMjtjYXNlIDEzMTpyZXR1cm4gMjU2O2Nhc2UgMTQ1OnJldHVybiA2NDtjYXNlIDE1OTpyZXR1cm4gMTYzODQ7Y2FzZSAxMDE6cmV0dXJuIDMyNzY4O2Nhc2UgMTQ0OnJldHVybiA2NTUzNn1yZXR1cm4gMH1lLm1vZGlmaWVyVG9GbGFnPXBsO2Z1bmN0aW9uIEZwKGMpe3JldHVybiBjP2UuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzKGMpKTp2b2lkIDB9ZS5jcmVhdGVNb2RpZmllcnM9RnA7ZnVuY3Rpb24gTXAoYyl7cmV0dXJuIGM9PT01Nnx8Yz09PTU1fHxjPT09NTN9ZS5pc0xvZ2ljYWxPcGVyYXRvcj1NcDtmdW5jdGlvbiBHdShjKXtyZXR1cm4gYz09PTc1fHxjPT09NzZ8fGM9PT03N31lLmlzTG9naWNhbE9yQ29hbGVzY2luZ0Fzc2lnbm1lbnRPcGVyYXRvcj1HdTtmdW5jdGlvbiBMcChjKXtyZXR1cm4gR3UoYy5vcGVyYXRvclRva2VuLmtpbmQpfWUuaXNMb2dpY2FsT3JDb2FsZXNjaW5nQXNzaWdubWVudEV4cHJlc3Npb249THA7ZnVuY3Rpb24gQ2YoYyl7cmV0dXJuIGM+PTYzJiZjPD03OH1lLmlzQXNzaWdubWVudE9wZXJhdG9yPUNmO2Z1bmN0aW9uIFdfKGMpe3ZhciB0ZT1nXyhjKTtyZXR1cm4gdGUmJiF0ZS5pc0ltcGxlbWVudHM/dGUuY2xhc3M6dm9pZCAwfWUudHJ5R2V0Q2xhc3NFeHRlbmRpbmdFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHM9V187ZnVuY3Rpb24gZ18oYyl7cmV0dXJuIGUuaXNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoYykmJmUuaXNIZXJpdGFnZUNsYXVzZShjLnBhcmVudCkmJmUuaXNDbGFzc0xpa2UoYy5wYXJlbnQucGFyZW50KT97Y2xhc3M6Yy5wYXJlbnQucGFyZW50LGlzSW1wbGVtZW50czpjLnBhcmVudC50b2tlbj09PTExN306dm9pZCAwfWUudHJ5R2V0Q2xhc3NJbXBsZW1lbnRpbmdPckV4dGVuZGluZ0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cz1nXztmdW5jdGlvbiBkbChjLHRlKXtyZXR1cm4gZS5pc0JpbmFyeUV4cHJlc3Npb24oYykmJih0ZT9jLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzOkNmKGMub3BlcmF0b3JUb2tlbi5raW5kKSkmJmUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKGMubGVmdCl9ZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uPWRsO2Z1bmN0aW9uIGdsKGMpe3JldHVybiBkbChjLnBhcmVudCkmJmMucGFyZW50LmxlZnQ9PT1jfWUuaXNMZWZ0SGFuZFNpZGVPZkFzc2lnbm1lbnQ9Z2w7ZnVuY3Rpb24gVmYoYyl7aWYoZGwoYywhMCkpe3ZhciB0ZT1jLmxlZnQua2luZDtyZXR1cm4gdGU9PT0yMDV8fHRlPT09MjA0fXJldHVybiExfWUuaXNEZXN0cnVjdHVyaW5nQXNzaWdubWVudD1WZjtmdW5jdGlvbiBGYyhjKXtyZXR1cm4gV18oYykhPT12b2lkIDB9ZS5pc0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50c0luQ2xhc3NFeHRlbmRzQ2xhdXNlPUZjO2Z1bmN0aW9uIEh1KGMpe3JldHVybiBjLmtpbmQ9PT03OXx8TWwoYyl9ZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uPUh1O2Z1bmN0aW9uIGFmKGMpe3N3aXRjaChjLmtpbmQpe2Nhc2UgNzk6cmV0dXJuIGM7Y2FzZSAxNjE6ZG8gYz1jLmxlZnQ7d2hpbGUoYy5raW5kIT09NzkpO3JldHVybiBjO2Nhc2UgMjA2OmRvIGM9Yy5leHByZXNzaW9uO3doaWxlKGMua2luZCE9PTc5KTtyZXR1cm4gY319ZS5nZXRGaXJzdElkZW50aWZpZXI9YWY7ZnVuY3Rpb24gdG4oYyl7cmV0dXJuIGMua2luZD09PTc5fHxjLmtpbmQ9PT0xMDh8fGMua2luZD09PTEwNnx8Yy5raW5kPT09MjMxfHxjLmtpbmQ9PT0yMDYmJnRuKGMuZXhwcmVzc2lvbil8fGMua2luZD09PTIxMiYmdG4oYy5leHByZXNzaW9uKX1lLmlzRG90dGVkTmFtZT10bjtmdW5jdGlvbiBNbChjKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjKSYmZS5pc0lkZW50aWZpZXIoYy5uYW1lKSYmSHUoYy5leHByZXNzaW9uKX1lLmlzUHJvcGVydHlBY2Nlc3NFbnRpdHlOYW1lRXhwcmVzc2lvbj1NbDtmdW5jdGlvbiBPdChjKXtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGMpKXt2YXIgdGU9T3QoYy5leHByZXNzaW9uKTtpZih0ZSE9PXZvaWQgMClyZXR1cm4gdGUrXCIuXCIrWGUoYy5uYW1lKX1lbHNlIGlmKGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihjKSl7dmFyIHRlPU90KGMuZXhwcmVzc2lvbik7aWYodGUhPT12b2lkIDAmJmUuaXNQcm9wZXJ0eU5hbWUoYy5hcmd1bWVudEV4cHJlc3Npb24pKXJldHVybiB0ZStcIi5cIit1XyhjLmFyZ3VtZW50RXhwcmVzc2lvbil9ZWxzZSBpZihlLmlzSWRlbnRpZmllcihjKSlyZXR1cm4gZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhjLmVzY2FwZWRUZXh0KX1lLnRyeUdldFByb3BlcnR5QWNjZXNzT3JJZGVudGlmaWVyVG9TdHJpbmc9T3Q7ZnVuY3Rpb24gbmYoYyl7cmV0dXJuIHVhKGMpJiZBbyhjKT09PVwicHJvdG90eXBlXCJ9ZS5pc1Byb3RvdHlwZUFjY2Vzcz1uZjtmdW5jdGlvbiBxXyhjKXtyZXR1cm4gYy5wYXJlbnQua2luZD09PTE2MSYmYy5wYXJlbnQucmlnaHQ9PT1jfHxjLnBhcmVudC5raW5kPT09MjA2JiZjLnBhcmVudC5uYW1lPT09Y31lLmlzUmlnaHRTaWRlT2ZRdWFsaWZpZWROYW1lT3JQcm9wZXJ0eUFjY2Vzcz1xXztmdW5jdGlvbiBLZihjKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjLnBhcmVudCkmJmMucGFyZW50Lm5hbWU9PT1jfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oYy5wYXJlbnQpJiZjLnBhcmVudC5hcmd1bWVudEV4cHJlc3Npb249PT1jfWUuaXNSaWdodFNpZGVPZkFjY2Vzc0V4cHJlc3Npb249S2Y7ZnVuY3Rpb24gUnAoYyl7cmV0dXJuIGUuaXNRdWFsaWZpZWROYW1lKGMucGFyZW50KSYmYy5wYXJlbnQucmlnaHQ9PT1jfHxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGMucGFyZW50KSYmYy5wYXJlbnQubmFtZT09PWN8fGUuaXNKU0RvY01lbWJlck5hbWUoYy5wYXJlbnQpJiZjLnBhcmVudC5yaWdodD09PWN9ZS5pc1JpZ2h0U2lkZU9mUXVhbGlmaWVkTmFtZU9yUHJvcGVydHlBY2Nlc3NPckpTRG9jTWVtYmVyTmFtZT1ScDtmdW5jdGlvbiB5ZChjKXtyZXR1cm4gYy5raW5kPT09MjA1JiZjLnByb3BlcnRpZXMubGVuZ3RoPT09MH1lLmlzRW1wdHlPYmplY3RMaXRlcmFsPXlkO2Z1bmN0aW9uIG1fKGMpe3JldHVybiBjLmtpbmQ9PT0yMDQmJmMuZWxlbWVudHMubGVuZ3RoPT09MH1lLmlzRW1wdHlBcnJheUxpdGVyYWw9bV87ZnVuY3Rpb24gTGwoYyl7aWYoISghaGQoYyl8fCFjLmRlY2xhcmF0aW9ucykpZm9yKHZhciB0ZT0wLHhyPWMuZGVjbGFyYXRpb25zO3RlPHhyLmxlbmd0aDt0ZSsrKXt2YXIgZWk9eHJbdGVdO2lmKGVpLmxvY2FsU3ltYm9sKXJldHVybiBlaS5sb2NhbFN5bWJvbH19ZS5nZXRMb2NhbFN5bWJvbEZvckV4cG9ydERlZmF1bHQ9TGw7ZnVuY3Rpb24gaGQoYyl7cmV0dXJuIGMmJmUubGVuZ3RoKGMuZGVjbGFyYXRpb25zKT4wJiZnYyhjLmRlY2xhcmF0aW9uc1swXSw1MTIpfWZ1bmN0aW9uIHZfKGMpe3JldHVybiBlLmZpbmQob2gsZnVuY3Rpb24odGUpe3JldHVybiBlLmZpbGVFeHRlbnNpb25JcyhjLHRlKX0pfWUudHJ5RXh0cmFjdFRTRXh0ZW5zaW9uPXZfO2Z1bmN0aW9uIEJwKGMpe2Zvcih2YXIgdGU9W10seHI9Yy5sZW5ndGgsZWk9MDtlaTx4cjtlaSsrKXt2YXIgYmk9Yy5jaGFyQ29kZUF0KGVpKTtiaTwxMjg/dGUucHVzaChiaSk6Ymk8MjA0OD8odGUucHVzaChiaT4+NnwxOTIpLHRlLnB1c2goYmkmNjN8MTI4KSk6Ymk8NjU1MzY/KHRlLnB1c2goYmk+PjEyfDIyNCksdGUucHVzaChiaT4+NiY2M3wxMjgpLHRlLnB1c2goYmkmNjN8MTI4KSk6Ymk8MTMxMDcyPyh0ZS5wdXNoKGJpPj4xOHwyNDApLHRlLnB1c2goYmk+PjEyJjYzfDEyOCksdGUucHVzaChiaT4+NiY2M3wxMjgpLHRlLnB1c2goYmkmNjN8MTI4KSk6ZS5EZWJ1Zy5hc3NlcnQoITEsXCJVbmV4cGVjdGVkIGNvZGUgcG9pbnRcIil9cmV0dXJuIHRlfXZhciBYdT1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7ZnVuY3Rpb24gWGMoYyl7Zm9yKHZhciB0ZT1cIlwiLHhyPUJwKGMpLGVpPTAsYmk9eHIubGVuZ3RoLEZ0LG90LHhhLG1uO2VpPGJpOylGdD14cltlaV0+PjIsb3Q9KHhyW2VpXSYzKTw8NHx4cltlaSsxXT4+NCx4YT0oeHJbZWkrMV0mMTUpPDwyfHhyW2VpKzJdPj42LG1uPXhyW2VpKzJdJjYzLGVpKzE+PWJpP3hhPW1uPTY0OmVpKzI+PWJpJiYobW49NjQpLHRlKz1YdS5jaGFyQXQoRnQpK1h1LmNoYXJBdChvdCkrWHUuY2hhckF0KHhhKStYdS5jaGFyQXQobW4pLGVpKz0zO3JldHVybiB0ZX1lLmNvbnZlcnRUb0Jhc2U2ND1YYztmdW5jdGlvbiBHZihjKXtmb3IodmFyIHRlPVwiXCIseHI9MCxlaT1jLmxlbmd0aDt4cjxlaTspe3ZhciBiaT1jW3hyXTtpZihiaTwxMjgpdGUrPVN0cmluZy5mcm9tQ2hhckNvZGUoYmkpLHhyKys7ZWxzZSBpZigoYmkmMTkyKT09PTE5Mil7dmFyIEZ0PWJpJjYzO3hyKys7Zm9yKHZhciBvdD1jW3hyXTsob3QmMTkyKT09PTEyODspRnQ9RnQ8PDZ8b3QmNjMseHIrKyxvdD1jW3hyXTt0ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShGdCl9ZWxzZSB0ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShiaSkseHIrK31yZXR1cm4gdGV9ZnVuY3Rpb24gb2YoYyx0ZSl7cmV0dXJuIGMmJmMuYmFzZTY0ZW5jb2RlP2MuYmFzZTY0ZW5jb2RlKHRlKTpYYyh0ZSl9ZS5iYXNlNjRlbmNvZGU9b2Y7ZnVuY3Rpb24gd3UoYyx0ZSl7aWYoYyYmYy5iYXNlNjRkZWNvZGUpcmV0dXJuIGMuYmFzZTY0ZGVjb2RlKHRlKTtmb3IodmFyIHhyPXRlLmxlbmd0aCxlaT1bXSxiaT0wO2JpPHhyJiZ0ZS5jaGFyQ29kZUF0KGJpKSE9PVh1LmNoYXJDb2RlQXQoNjQpOyl7dmFyIEZ0PVh1LmluZGV4T2YodGVbYmldKSxvdD1YdS5pbmRleE9mKHRlW2JpKzFdKSx4YT1YdS5pbmRleE9mKHRlW2JpKzJdKSxtbj1YdS5pbmRleE9mKHRlW2JpKzNdKSxhbj0oRnQmNjMpPDwyfG90Pj40JjMsVG89KG90JjE1KTw8NHx4YT4+MiYxNSxIbj0oeGEmMyk8PDZ8bW4mNjM7VG89PT0wJiZ4YSE9PTA/ZWkucHVzaChhbik6SG49PT0wJiZtbiE9PTA/ZWkucHVzaChhbixUbyk6ZWkucHVzaChhbixUbyxIbiksYmkrPTR9cmV0dXJuIEdmKGVpKX1lLmJhc2U2NGRlY29kZT13dTtmdW5jdGlvbiBWXyhjLHRlKXt0cnl7dmFyIHhyPXRlLnJlYWRGaWxlKGMpO2lmKCF4cilyZXR1cm57fTt2YXIgZWk9ZS5wYXJzZUNvbmZpZ0ZpbGVUZXh0VG9Kc29uKGMseHIpO3JldHVybiBlaS5lcnJvcj97fTplaS5jb25maWd9Y2F0Y2h7cmV0dXJue319fWUucmVhZEpzb249Vl87ZnVuY3Rpb24geXUoYyx0ZSl7cmV0dXJuIXRlLmRpcmVjdG9yeUV4aXN0c3x8dGUuZGlyZWN0b3J5RXhpc3RzKGMpfWUuZGlyZWN0b3J5UHJvYmFibHlFeGlzdHM9eXU7dmFyIHY9YFxcclxuYCxzcj1gXG5gO2Z1bmN0aW9uIGZpKGMsdGUpe3N3aXRjaChjLm5ld0xpbmUpe2Nhc2UgMDpyZXR1cm4gdjtjYXNlIDE6cmV0dXJuIHNyfXJldHVybiB0ZT90ZSgpOmUuc3lzP2Uuc3lzLm5ld0xpbmU6dn1lLmdldE5ld0xpbmVDaGFyYWN0ZXI9Zmk7ZnVuY3Rpb24gemkoYyx0ZSl7cmV0dXJuIHRlPT09dm9pZCAwJiYodGU9YyksZS5EZWJ1Zy5hc3NlcnQodGU+PWN8fHRlPT09LTEpLHtwb3M6YyxlbmQ6dGV9fWUuY3JlYXRlUmFuZ2U9emk7ZnVuY3Rpb24gU2EoYyx0ZSl7cmV0dXJuIHppKGMucG9zLHRlKX1lLm1vdmVSYW5nZUVuZD1TYTtmdW5jdGlvbiBkYShjLHRlKXtyZXR1cm4gemkodGUsYy5lbmQpfWUubW92ZVJhbmdlUG9zPWRhO2Z1bmN0aW9uIEhhKGMpe3JldHVybiBjLmRlY29yYXRvcnMmJmMuZGVjb3JhdG9ycy5sZW5ndGg+MD9kYShjLGMuZGVjb3JhdG9ycy5lbmQpOmN9ZS5tb3ZlUmFuZ2VQYXN0RGVjb3JhdG9ycz1IYTtmdW5jdGlvbiB0YShjKXtyZXR1cm4gYy5tb2RpZmllcnMmJmMubW9kaWZpZXJzLmxlbmd0aD4wP2RhKGMsYy5tb2RpZmllcnMuZW5kKTpIYShjKX1lLm1vdmVSYW5nZVBhc3RNb2RpZmllcnM9dGE7ZnVuY3Rpb24gbm4oYyl7cmV0dXJuIGMucG9zPT09Yy5lbmR9ZS5pc0NvbGxhcHNlZFJhbmdlPW5uO2Z1bmN0aW9uIFdvKGMsdGUpe3JldHVybiB6aShjLGMrZS50b2tlblRvU3RyaW5nKHRlKS5sZW5ndGgpfWUuY3JlYXRlVG9rZW5SYW5nZT1XbztmdW5jdGlvbiBMbyhjLHRlKXtyZXR1cm4gaXMoYyxjLHRlKX1lLnJhbmdlSXNPblNpbmdsZUxpbmU9TG87ZnVuY3Rpb24gb2MoYyx0ZSx4cil7cmV0dXJuIGNmKHVmKGMseHIsITEpLHVmKHRlLHhyLCExKSx4cil9ZS5yYW5nZVN0YXJ0UG9zaXRpb25zQXJlT25TYW1lTGluZT1vYztmdW5jdGlvbiB1dShjLHRlLHhyKXtyZXR1cm4gY2YoYy5lbmQsdGUuZW5kLHhyKX1lLnJhbmdlRW5kUG9zaXRpb25zQXJlT25TYW1lTGluZT11dTtmdW5jdGlvbiBpcyhjLHRlLHhyKXtyZXR1cm4gY2YodWYoYyx4ciwhMSksdGUuZW5kLHhyKX1lLnJhbmdlU3RhcnRJc09uU2FtZUxpbmVBc1JhbmdlRW5kPWlzO2Z1bmN0aW9uIGF1KGMsdGUseHIpe3JldHVybiBjZihjLmVuZCx1Zih0ZSx4ciwhMSkseHIpfWUucmFuZ2VFbmRJc09uU2FtZUxpbmVBc1JhbmdlU3RhcnQ9YXU7ZnVuY3Rpb24gT3UoYyx0ZSx4cixlaSl7dmFyIGJpPXVmKHRlLHhyLGVpKTtyZXR1cm4gZS5nZXRMaW5lc0JldHdlZW5Qb3NpdGlvbnMoeHIsYy5lbmQsYmkpfWUuZ2V0TGluZXNCZXR3ZWVuUmFuZ2VFbmRBbmRSYW5nZVN0YXJ0PU91O2Z1bmN0aW9uIHNmKGMsdGUseHIpe3JldHVybiBlLmdldExpbmVzQmV0d2VlblBvc2l0aW9ucyh4cixjLmVuZCx0ZS5lbmQpfWUuZ2V0TGluZXNCZXR3ZWVuUmFuZ2VFbmRQb3NpdGlvbnM9c2Y7ZnVuY3Rpb24gbHUoYyx0ZSl7cmV0dXJuIWNmKGMucG9zLGMuZW5kLHRlKX1lLmlzTm9kZUFycmF5TXVsdGlMaW5lPWx1O2Z1bmN0aW9uIGNmKGMsdGUseHIpe3JldHVybiBlLmdldExpbmVzQmV0d2VlblBvc2l0aW9ucyh4cixjLHRlKT09PTB9ZS5wb3NpdGlvbnNBcmVPblNhbWVMaW5lPWNmO2Z1bmN0aW9uIHVmKGMsdGUseHIpe3JldHVybiBKbChjLnBvcyk/LTE6ZS5za2lwVHJpdmlhKHRlLnRleHQsYy5wb3MsITEseHIpfWUuZ2V0U3RhcnRQb3NpdGlvbk9mUmFuZ2U9dWY7ZnVuY3Rpb24gS18oYyx0ZSx4cixlaSl7dmFyIGJpPWUuc2tpcFRyaXZpYSh4ci50ZXh0LGMsITEsZWkpLEZ0PUhmKGJpLHRlLHhyKTtyZXR1cm4gZS5nZXRMaW5lc0JldHdlZW5Qb3NpdGlvbnMoeHIsRnQhPW51bGw/RnQ6dGUsYmkpfWUuZ2V0TGluZXNCZXR3ZWVuUG9zaXRpb25BbmRQcmVjZWRpbmdOb25XaGl0ZXNwYWNlQ2hhcmFjdGVyPUtfO2Z1bmN0aW9uIEpwKGMsdGUseHIsZWkpe3ZhciBiaT1lLnNraXBUcml2aWEoeHIudGV4dCxjLCExLGVpKTtyZXR1cm4gZS5nZXRMaW5lc0JldHdlZW5Qb3NpdGlvbnMoeHIsYyxNYXRoLm1pbih0ZSxiaSkpfWUuZ2V0TGluZXNCZXR3ZWVuUG9zaXRpb25BbmROZXh0Tm9uV2hpdGVzcGFjZUNoYXJhY3Rlcj1KcDtmdW5jdGlvbiBIZihjLHRlLHhyKXtmb3IodGU9PT12b2lkIDAmJih0ZT0wKTtjLS0gPnRlOylpZighZS5pc1doaXRlU3BhY2VMaWtlKHhyLnRleHQuY2hhckNvZGVBdChjKSkpcmV0dXJuIGN9ZnVuY3Rpb24ga2MoYyl7dmFyIHRlPWUuZ2V0UGFyc2VUcmVlTm9kZShjKTtpZih0ZSlzd2l0Y2godGUucGFyZW50LmtpbmQpe2Nhc2UgMjYwOmNhc2UgMjYxOnJldHVybiB0ZT09PXRlLnBhcmVudC5uYW1lfXJldHVybiExfWUuaXNEZWNsYXJhdGlvbk5hbWVPZkVudW1Pck5hbWVzcGFjZT1rYztmdW5jdGlvbiBHXyhjKXtyZXR1cm4gZS5maWx0ZXIoYy5kZWNsYXJhdGlvbnMsTGUpfWUuZ2V0SW5pdGlhbGl6ZWRWYXJpYWJsZXM9R187ZnVuY3Rpb24gTGUoYyl7cmV0dXJuIGMuaW5pdGlhbGl6ZXIhPT12b2lkIDB9ZnVuY3Rpb24gTnIoYyl7cmV0dXJuIGMud2F0Y2gmJmMuaGFzT3duUHJvcGVydHkoXCJ3YXRjaFwiKX1lLmlzV2F0Y2hTZXQ9TnI7ZnVuY3Rpb24gcmkoYyl7Yy5jbG9zZSgpfWUuY2xvc2VGaWxlV2F0Y2hlcj1yaTtmdW5jdGlvbiBkaShjKXtyZXR1cm4gYy5mbGFncyYzMzU1NDQzMj9jLmNoZWNrRmxhZ3M6MH1lLmdldENoZWNrRmxhZ3M9ZGk7ZnVuY3Rpb24gTWkoYyx0ZSl7aWYodGU9PT12b2lkIDAmJih0ZT0hMSksYy52YWx1ZURlY2xhcmF0aW9uKXt2YXIgeHI9dGUmJmMuZGVjbGFyYXRpb25zJiZlLmZpbmQoYy5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oeGEpe3JldHVybiB4YS5raW5kPT09MTczfSl8fGMudmFsdWVEZWNsYXJhdGlvbixlaT1lLmdldENvbWJpbmVkTW9kaWZpZXJGbGFncyh4cik7cmV0dXJuIGMucGFyZW50JiZjLnBhcmVudC5mbGFncyYzMj9laTplaSYtMjl9aWYoZGkoYykmNil7dmFyIGJpPWMuY2hlY2tGbGFncyxGdD1iaSYxMDI0Pzg6YmkmMjU2PzQ6MTYsb3Q9YmkmMjA0OD8zMjowO3JldHVybiBGdHxvdH1yZXR1cm4gYy5mbGFncyY0MTk0MzA0PzM2OjB9ZS5nZXREZWNsYXJhdGlvbk1vZGlmaWVyRmxhZ3NGcm9tU3ltYm9sPU1pO2Z1bmN0aW9uIHN0KGMsdGUpe3JldHVybiBjLmZsYWdzJjIwOTcxNTI/dGUuZ2V0QWxpYXNlZFN5bWJvbChjKTpjfWUuc2tpcEFsaWFzPXN0O2Z1bmN0aW9uIHJhKGMpe3JldHVybiBjLmV4cG9ydFN5bWJvbD9jLmV4cG9ydFN5bWJvbC5mbGFnc3xjLmZsYWdzOmMuZmxhZ3N9ZS5nZXRDb21iaW5lZExvY2FsQW5kRXhwb3J0U3ltYm9sRmxhZ3M9cmE7ZnVuY3Rpb24gVGEoYyl7cmV0dXJuIEluKGMpPT09MX1lLmlzV3JpdGVPbmx5QWNjZXNzPVRhO2Z1bmN0aW9uIGhhKGMpe3JldHVybiBJbihjKSE9PTB9ZS5pc1dyaXRlQWNjZXNzPWhhO3ZhciBOYTsoZnVuY3Rpb24oYyl7Y1tjLlJlYWQ9MF09XCJSZWFkXCIsY1tjLldyaXRlPTFdPVwiV3JpdGVcIixjW2MuUmVhZFdyaXRlPTJdPVwiUmVhZFdyaXRlXCJ9KShOYXx8KE5hPXt9KSk7ZnVuY3Rpb24gSW4oYyl7dmFyIHRlPWMucGFyZW50O2lmKCF0ZSlyZXR1cm4gMDtzd2l0Y2godGUua2luZCl7Y2FzZSAyMTI6cmV0dXJuIEluKHRlKTtjYXNlIDIyMDpjYXNlIDIxOTp2YXIgeHI9dGUub3BlcmF0b3I7cmV0dXJuIHhyPT09NDV8fHhyPT09NDY/eGEoKTowO2Nhc2UgMjIxOnZhciBlaT10ZSxiaT1laS5sZWZ0LEZ0PWVpLm9wZXJhdG9yVG9rZW47cmV0dXJuIGJpPT09YyYmQ2YoRnQua2luZCk/RnQua2luZD09PTYzPzE6eGEoKTowO2Nhc2UgMjA2OnJldHVybiB0ZS5uYW1lIT09Yz8wOkluKHRlKTtjYXNlIDI5Njp7dmFyIG90PUluKHRlLnBhcmVudCk7cmV0dXJuIGM9PT10ZS5uYW1lP3FvKG90KTpvdH1jYXNlIDI5NzpyZXR1cm4gYz09PXRlLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcj8wOkluKHRlLnBhcmVudCk7Y2FzZSAyMDQ6cmV0dXJuIEluKHRlKTtkZWZhdWx0OnJldHVybiAwfWZ1bmN0aW9uIHhhKCl7cmV0dXJuIHRlLnBhcmVudCYmTm8odGUucGFyZW50KS5raW5kPT09MjM4PzE6Mn19ZnVuY3Rpb24gcW8oYyl7c3dpdGNoKGMpe2Nhc2UgMDpyZXR1cm4gMTtjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoYyl9fWZ1bmN0aW9uIGNvKGMsdGUpe2lmKCFjfHwhdGV8fE9iamVjdC5rZXlzKGMpLmxlbmd0aCE9PU9iamVjdC5rZXlzKHRlKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciB4ciBpbiBjKWlmKHR5cGVvZiBjW3hyXT09XCJvYmplY3RcIil7aWYoIWNvKGNbeHJdLHRlW3hyXSkpcmV0dXJuITF9ZWxzZSBpZih0eXBlb2YgY1t4cl0hPVwiZnVuY3Rpb25cIiYmY1t4cl0hPT10ZVt4cl0pcmV0dXJuITE7cmV0dXJuITB9ZS5jb21wYXJlRGF0YU9iamVjdHM9Y287ZnVuY3Rpb24gdHMoYyx0ZSl7Yy5mb3JFYWNoKHRlKSxjLmNsZWFyKCl9ZS5jbGVhck1hcD10cztmdW5jdGlvbiB2cyhjLHRlLHhyKXt2YXIgZWk9eHIub25EZWxldGVWYWx1ZSxiaT14ci5vbkV4aXN0aW5nVmFsdWU7Yy5mb3JFYWNoKGZ1bmN0aW9uKEZ0LG90KXt2YXIgeGE9dGUuZ2V0KG90KTt4YT09PXZvaWQgMD8oYy5kZWxldGUob3QpLGVpKEZ0LG90KSk6YmkmJmJpKEZ0LHhhLG90KX0pfWUubXV0YXRlTWFwU2tpcHBpbmdOZXdWYWx1ZXM9dnM7ZnVuY3Rpb24gQWMoYyx0ZSx4cil7dnMoYyx0ZSx4cik7dmFyIGVpPXhyLmNyZWF0ZU5ld1ZhbHVlO3RlLmZvckVhY2goZnVuY3Rpb24oYmksRnQpe2MuaGFzKEZ0KXx8Yy5zZXQoRnQsZWkoRnQsYmkpKX0pfWUubXV0YXRlTWFwPUFjO2Z1bmN0aW9uIElzKGMpe2lmKGMuZmxhZ3MmMzIpe3ZhciB0ZT1RdShjKTtyZXR1cm4hIXRlJiZnYyh0ZSwxMjgpfXJldHVybiExfWUuaXNBYnN0cmFjdENvbnN0cnVjdG9yU3ltYm9sPUlzO2Z1bmN0aW9uIFF1KGMpe3ZhciB0ZTtyZXR1cm4odGU9Yy5kZWNsYXJhdGlvbnMpPT09bnVsbHx8dGU9PT12b2lkIDA/dm9pZCAwOnRlLmZpbmQoZS5pc0NsYXNzTGlrZSl9ZS5nZXRDbGFzc0xpa2VEZWNsYXJhdGlvbk9mU3ltYm9sPVF1O2Z1bmN0aW9uIHNjKGMpe3JldHVybiBjLmZsYWdzJjM4OTkzOTM/Yy5vYmplY3RGbGFnczowfWUuZ2V0T2JqZWN0RmxhZ3M9c2M7ZnVuY3Rpb24gYmMoYyx0ZSl7cmV0dXJuIHRlLmdldFNpZ25hdHVyZXNPZlR5cGUoYywwKS5sZW5ndGghPT0wfHx0ZS5nZXRTaWduYXR1cmVzT2ZUeXBlKGMsMSkubGVuZ3RoIT09MH1lLnR5cGVIYXNDYWxsT3JDb25zdHJ1Y3RTaWduYXR1cmVzPWJjO2Z1bmN0aW9uIE1jKGMsdGUpe3JldHVybiEhZS5mb3JFYWNoQW5jZXN0b3JEaXJlY3RvcnkoYyxmdW5jdGlvbih4cil7cmV0dXJuIHRlKHhyKT8hMDp2b2lkIDB9KX1lLmZvclNvbWVBbmNlc3RvckRpcmVjdG9yeT1NYztmdW5jdGlvbiBZdShjKXtyZXR1cm4hIWMmJiEhYy5kZWNsYXJhdGlvbnMmJiEhYy5kZWNsYXJhdGlvbnNbMF0mJmUuaXNOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbihjLmRlY2xhcmF0aW9uc1swXSl9ZS5pc1VNREV4cG9ydFN5bWJvbD1ZdTtmdW5jdGlvbiBSbChjKXt2YXIgdGU9Yy5tb2R1bGVTcGVjaWZpZXI7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsKHRlKT90ZS50ZXh0OkVlKHRlKX1lLnNob3dNb2R1bGVTcGVjaWZpZXI9Umw7ZnVuY3Rpb24gTGMoYyl7dmFyIHRlO3JldHVybiBlLmZvckVhY2hDaGlsZChjLGZ1bmN0aW9uKHhyKXtqKHhyKSYmKHRlPXhyKX0sZnVuY3Rpb24oeHIpe2Zvcih2YXIgZWk9eHIubGVuZ3RoLTE7ZWk+PTA7ZWktLSlpZihqKHhyW2VpXSkpe3RlPXhyW2VpXTticmVha319KSx0ZX1lLmdldExhc3RDaGlsZD1MYztmdW5jdGlvbiBfKGMsdGUseHIpe3JldHVybiB4cj09PXZvaWQgMCYmKHhyPSEwKSxjLmhhcyh0ZSk/ITE6KGMuc2V0KHRlLHhyKSwhMCl9ZS5hZGRUb1NlZW49XztmdW5jdGlvbiBXKGMpe3JldHVybiBlLmlzQ2xhc3NMaWtlKGMpfHxlLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24oYyl8fGUuaXNUeXBlTGl0ZXJhbE5vZGUoYyl9ZS5pc09iamVjdFR5cGVEZWNsYXJhdGlvbj1XO2Z1bmN0aW9uIFRlKGMpe3JldHVybiBjPj0xNzcmJmM8PTIwMHx8Yz09PTEzMHx8Yz09PTE1NXx8Yz09PTE0N3x8Yz09PTE1OHx8Yz09PTE0OHx8Yz09PTEzM3x8Yz09PTE1MHx8Yz09PTE1MXx8Yz09PTExNHx8Yz09PTE1M3x8Yz09PTE0M3x8Yz09PTIyOHx8Yz09PTMxMnx8Yz09PTMxM3x8Yz09PTMxNHx8Yz09PTMxNXx8Yz09PTMxNnx8Yz09PTMxN3x8Yz09PTMxOH1lLmlzVHlwZU5vZGVLaW5kPVRlO2Z1bmN0aW9uIGNyKGMpe3JldHVybiBjLmtpbmQ9PT0yMDZ8fGMua2luZD09PTIwN31lLmlzQWNjZXNzRXhwcmVzc2lvbj1jcjtmdW5jdGlvbiBuaShjKXtyZXR1cm4gYy5raW5kPT09MjA2P2MubmFtZTooZS5EZWJ1Zy5hc3NlcnQoYy5raW5kPT09MjA3KSxjLmFyZ3VtZW50RXhwcmVzc2lvbil9ZS5nZXROYW1lT2ZBY2Nlc3NFeHByZXNzaW9uPW5pO2Z1bmN0aW9uIHJ0KGMpe3N3aXRjaChjLmtpbmQpe2Nhc2VcInRleHRcIjpjYXNlXCJpbnRlcm5hbFwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWUuaXNCdW5kbGVGaWxlVGV4dExpa2U9cnQ7ZnVuY3Rpb24geXQoYyl7cmV0dXJuIGMua2luZD09PTI2OXx8Yy5raW5kPT09MjczfWUuaXNOYW1lZEltcG9ydHNPckV4cG9ydHM9eXQ7ZnVuY3Rpb24gWGEoYyl7Zm9yKDtjcihjKTspYz1jLmV4cHJlc3Npb247cmV0dXJuIGN9ZS5nZXRMZWZ0bW9zdEFjY2Vzc0V4cHJlc3Npb249WGE7ZnVuY3Rpb24gdm8oYyx0ZSl7aWYoY3IoYy5wYXJlbnQpJiZLZihjKSlyZXR1cm4geHIoYy5wYXJlbnQpO2Z1bmN0aW9uIHhyKGVpKXtpZihlaS5raW5kPT09MjA2KXt2YXIgYmk9dGUoZWkubmFtZSk7aWYoYmkhPT12b2lkIDApcmV0dXJuIGJpfWVsc2UgaWYoZWkua2luZD09PTIwNylpZihlLmlzSWRlbnRpZmllcihlaS5hcmd1bWVudEV4cHJlc3Npb24pfHxlLmlzU3RyaW5nTGl0ZXJhbExpa2UoZWkuYXJndW1lbnRFeHByZXNzaW9uKSl7dmFyIGJpPXRlKGVpLmFyZ3VtZW50RXhwcmVzc2lvbik7aWYoYmkhPT12b2lkIDApcmV0dXJuIGJpfWVsc2UgcmV0dXJuO2lmKGNyKGVpLmV4cHJlc3Npb24pKXJldHVybiB4cihlaS5leHByZXNzaW9uKTtpZihlLmlzSWRlbnRpZmllcihlaS5leHByZXNzaW9uKSlyZXR1cm4gdGUoZWkuZXhwcmVzc2lvbil9fWUuZm9yRWFjaE5hbWVJbkFjY2Vzc0NoYWluV2Fsa2luZ0xlZnQ9dm87ZnVuY3Rpb24gVnMoYyx0ZSl7Zm9yKDs7KXtzd2l0Y2goYy5raW5kKXtjYXNlIDIyMDpjPWMub3BlcmFuZDtjb250aW51ZTtjYXNlIDIyMTpjPWMubGVmdDtjb250aW51ZTtjYXNlIDIyMjpjPWMuY29uZGl0aW9uO2NvbnRpbnVlO2Nhc2UgMjEwOmM9Yy50YWc7Y29udGludWU7Y2FzZSAyMDg6aWYodGUpcmV0dXJuIGM7Y2FzZSAyMjk6Y2FzZSAyMDc6Y2FzZSAyMDY6Y2FzZSAyMzA6Y2FzZSAzNTA6Yz1jLmV4cHJlc3Npb247Y29udGludWV9cmV0dXJuIGN9fWUuZ2V0TGVmdG1vc3RFeHByZXNzaW9uPVZzO2Z1bmN0aW9uIEhfKGMsdGUpe3RoaXMuZmxhZ3M9Yyx0aGlzLmVzY2FwZWROYW1lPXRlLHRoaXMuZGVjbGFyYXRpb25zPXZvaWQgMCx0aGlzLnZhbHVlRGVjbGFyYXRpb249dm9pZCAwLHRoaXMuaWQ9dm9pZCAwLHRoaXMubWVyZ2VJZD12b2lkIDAsdGhpcy5wYXJlbnQ9dm9pZCAwfWZ1bmN0aW9uIHlfKGMsdGUpe3RoaXMuZmxhZ3M9dGUsKGUuRGVidWcuaXNEZWJ1Z2dpbmd8fGUudHJhY2luZykmJih0aGlzLmNoZWNrZXI9Yyl9ZnVuY3Rpb24gRGQoYyx0ZSl7dGhpcy5mbGFncz10ZSxlLkRlYnVnLmlzRGVidWdnaW5nJiYodGhpcy5jaGVja2VyPWMpfWZ1bmN0aW9uIGpwKGMsdGUseHIpe3RoaXMucG9zPXRlLHRoaXMuZW5kPXhyLHRoaXMua2luZD1jLHRoaXMuaWQ9MCx0aGlzLmZsYWdzPTAsdGhpcy5tb2RpZmllckZsYWdzQ2FjaGU9MCx0aGlzLnRyYW5zZm9ybUZsYWdzPTAsdGhpcy5wYXJlbnQ9dm9pZCAwLHRoaXMub3JpZ2luYWw9dm9pZCAwfWZ1bmN0aW9uIGxnKGMsdGUseHIpe3RoaXMucG9zPXRlLHRoaXMuZW5kPXhyLHRoaXMua2luZD1jLHRoaXMuaWQ9MCx0aGlzLmZsYWdzPTAsdGhpcy50cmFuc2Zvcm1GbGFncz0wLHRoaXMucGFyZW50PXZvaWQgMH1mdW5jdGlvbiBPbShjLHRlLHhyKXt0aGlzLnBvcz10ZSx0aGlzLmVuZD14cix0aGlzLmtpbmQ9Yyx0aGlzLmlkPTAsdGhpcy5mbGFncz0wLHRoaXMudHJhbnNmb3JtRmxhZ3M9MCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5vcmlnaW5hbD12b2lkIDAsdGhpcy5mbG93Tm9kZT12b2lkIDB9ZnVuY3Rpb24gRm0oYyx0ZSx4cil7dGhpcy5maWxlTmFtZT1jLHRoaXMudGV4dD10ZSx0aGlzLnNraXBUcml2aWE9eHJ8fGZ1bmN0aW9uKGVpKXtyZXR1cm4gZWl9fWUub2JqZWN0QWxsb2NhdG9yPXtnZXROb2RlQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4ganB9LGdldFRva2VuQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gbGd9LGdldElkZW50aWZpZXJDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3JldHVybiBPbX0sZ2V0UHJpdmF0ZUlkZW50aWZpZXJDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3JldHVybiBqcH0sZ2V0U291cmNlRmlsZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIGpwfSxnZXRTeW1ib2xDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3JldHVybiBIX30sZ2V0VHlwZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHlffSxnZXRTaWduYXR1cmVDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3JldHVybiBEZH0sZ2V0U291cmNlTWFwU291cmNlQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gRm19fTtmdW5jdGlvbiBWZyhjKXtPYmplY3QuYXNzaWduKGUub2JqZWN0QWxsb2NhdG9yLGMpfWUuc2V0T2JqZWN0QWxsb2NhdG9yPVZnO2Z1bmN0aW9uIEp0KGMsdGUseHIpe3JldHVybiB4cj09PXZvaWQgMCYmKHhyPTApLGMucmVwbGFjZSgveyhcXGQrKX0vZyxmdW5jdGlvbihlaSxiaSl7cmV0dXJuXCJcIitlLkRlYnVnLmNoZWNrRGVmaW5lZCh0ZVsrYmkreHJdKX0pfWUuZm9ybWF0U3RyaW5nRnJvbUFyZ3M9SnQ7dmFyIG1sO2Z1bmN0aW9uIFhmKGMpe21sPWN9ZS5zZXRMb2NhbGl6ZWREaWFnbm9zdGljTWVzc2FnZXM9WGY7ZnVuY3Rpb24gYmQoYyl7IW1sJiZjJiYobWw9YygpKX1lLm1heWJlU2V0TG9jYWxpemVkRGlhZ25vc3RpY01lc3NhZ2VzPWJkO2Z1bmN0aW9uIGxmKGMpe3JldHVybiBtbCYmbWxbYy5rZXldfHxjLm1lc3NhZ2V9ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2U9bGY7ZnVuY3Rpb24gS2coYyx0ZSx4cixlaSl7enIodm9pZCAwLHRlLHhyKTt2YXIgYmk9bGYoZWkpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjQmJihiaT1KdChiaSxhcmd1bWVudHMsNCkpLHtmaWxlOnZvaWQgMCxzdGFydDp0ZSxsZW5ndGg6eHIsbWVzc2FnZVRleHQ6YmksY2F0ZWdvcnk6ZWkuY2F0ZWdvcnksY29kZTplaS5jb2RlLHJlcG9ydHNVbm5lY2Vzc2FyeTplaS5yZXBvcnRzVW5uZWNlc3NhcnksZmlsZU5hbWU6Y319ZS5jcmVhdGVEZXRhY2hlZERpYWdub3N0aWM9S2c7ZnVuY3Rpb24ga2YoYyl7cmV0dXJuIGMuZmlsZT09PXZvaWQgMCYmYy5zdGFydCE9PXZvaWQgMCYmYy5sZW5ndGghPT12b2lkIDAmJnR5cGVvZiBjLmZpbGVOYW1lPT1cInN0cmluZ1wifWZ1bmN0aW9uIEdnKGMsdGUpe3ZhciB4cj10ZS5maWxlTmFtZXx8XCJcIixlaT10ZS50ZXh0Lmxlbmd0aDtlLkRlYnVnLmFzc2VydEVxdWFsKGMuZmlsZU5hbWUseHIpLGUuRGVidWcuYXNzZXJ0TGVzc1RoYW5PckVxdWFsKGMuc3RhcnQsZWkpLGUuRGVidWcuYXNzZXJ0TGVzc1RoYW5PckVxdWFsKGMuc3RhcnQrYy5sZW5ndGgsZWkpO3ZhciBiaT17ZmlsZTp0ZSxzdGFydDpjLnN0YXJ0LGxlbmd0aDpjLmxlbmd0aCxtZXNzYWdlVGV4dDpjLm1lc3NhZ2VUZXh0LGNhdGVnb3J5OmMuY2F0ZWdvcnksY29kZTpjLmNvZGUscmVwb3J0c1VubmVjZXNzYXJ5OmMucmVwb3J0c1VubmVjZXNzYXJ5fTtpZihjLnJlbGF0ZWRJbmZvcm1hdGlvbil7YmkucmVsYXRlZEluZm9ybWF0aW9uPVtdO2Zvcih2YXIgRnQ9MCxvdD1jLnJlbGF0ZWRJbmZvcm1hdGlvbjtGdDxvdC5sZW5ndGg7RnQrKyl7dmFyIHhhPW90W0Z0XTtrZih4YSkmJnhhLmZpbGVOYW1lPT09eHI/KGUuRGVidWcuYXNzZXJ0TGVzc1RoYW5PckVxdWFsKHhhLnN0YXJ0LGVpKSxlLkRlYnVnLmFzc2VydExlc3NUaGFuT3JFcXVhbCh4YS5zdGFydCt4YS5sZW5ndGgsZWkpLGJpLnJlbGF0ZWRJbmZvcm1hdGlvbi5wdXNoKEdnKHhhLHRlKSkpOmJpLnJlbGF0ZWRJbmZvcm1hdGlvbi5wdXNoKHhhKX19cmV0dXJuIGJpfWZ1bmN0aW9uIEFmKGMsdGUpe2Zvcih2YXIgeHI9W10sZWk9MCxiaT1jO2VpPGJpLmxlbmd0aDtlaSsrKXt2YXIgRnQ9YmlbZWldO3hyLnB1c2goR2coRnQsdGUpKX1yZXR1cm4geHJ9ZS5hdHRhY2hGaWxlVG9EaWFnbm9zdGljcz1BZjtmdW5jdGlvbiBIZyhjLHRlLHhyLGVpKXt6cihjLHRlLHhyKTt2YXIgYmk9bGYoZWkpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjQmJihiaT1KdChiaSxhcmd1bWVudHMsNCkpLHtmaWxlOmMsc3RhcnQ6dGUsbGVuZ3RoOnhyLG1lc3NhZ2VUZXh0OmJpLGNhdGVnb3J5OmVpLmNhdGVnb3J5LGNvZGU6ZWkuY29kZSxyZXBvcnRzVW5uZWNlc3Nhcnk6ZWkucmVwb3J0c1VubmVjZXNzYXJ5LHJlcG9ydHNEZXByZWNhdGVkOmVpLnJlcG9ydHNEZXByZWNhdGVkfX1lLmNyZWF0ZUZpbGVEaWFnbm9zdGljPUhnO2Z1bmN0aW9uIFdkKGMsdGUpe3ZhciB4cj1sZih0ZSk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MiYmKHhyPUp0KHhyLGFyZ3VtZW50cywyKSkseHJ9ZS5mb3JtYXRNZXNzYWdlPVdkO2Z1bmN0aW9uIHFkKGMpe3ZhciB0ZT1sZihjKTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xJiYodGU9SnQodGUsYXJndW1lbnRzLDEpKSx7ZmlsZTp2b2lkIDAsc3RhcnQ6dm9pZCAwLGxlbmd0aDp2b2lkIDAsbWVzc2FnZVRleHQ6dGUsY2F0ZWdvcnk6Yy5jYXRlZ29yeSxjb2RlOmMuY29kZSxyZXBvcnRzVW5uZWNlc3Nhcnk6Yy5yZXBvcnRzVW5uZWNlc3NhcnkscmVwb3J0c0RlcHJlY2F0ZWQ6Yy5yZXBvcnRzRGVwcmVjYXRlZH19ZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWM9cWQ7ZnVuY3Rpb24gZmcoYyx0ZSl7cmV0dXJue2ZpbGU6dm9pZCAwLHN0YXJ0OnZvaWQgMCxsZW5ndGg6dm9pZCAwLGNvZGU6Yy5jb2RlLGNhdGVnb3J5OmMuY2F0ZWdvcnksbWVzc2FnZVRleHQ6Yy5uZXh0P2M6Yy5tZXNzYWdlVGV4dCxyZWxhdGVkSW5mb3JtYXRpb246dGV9fWUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljRnJvbU1lc3NhZ2VDaGFpbj1mZztmdW5jdGlvbiBNbShjLHRlKXt2YXIgeHI9bGYodGUpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjImJih4cj1KdCh4cixhcmd1bWVudHMsMikpLHttZXNzYWdlVGV4dDp4cixjYXRlZ29yeTp0ZS5jYXRlZ29yeSxjb2RlOnRlLmNvZGUsbmV4dDpjPT09dm9pZCAwfHxBcnJheS5pc0FycmF5KGMpP2M6W2NdfX1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzPU1tO2Z1bmN0aW9uIFhnKGMsdGUpe2Zvcih2YXIgeHI9Yzt4ci5uZXh0Oyl4cj14ci5uZXh0WzBdO3hyLm5leHQ9W3RlXX1lLmNvbmNhdGVuYXRlRGlhZ25vc3RpY01lc3NhZ2VDaGFpbnM9WGc7ZnVuY3Rpb24gQmwoYyl7cmV0dXJuIGMuZmlsZT9jLmZpbGUucGF0aDp2b2lkIDB9ZnVuY3Rpb24gUWcoYyx0ZSl7cmV0dXJuIF9nKGMsdGUpfHxRYyhjLHRlKXx8MH1lLmNvbXBhcmVEaWFnbm9zdGljcz1RZztmdW5jdGlvbiBfZyhjLHRlKXtyZXR1cm4gZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUoQmwoYyksQmwodGUpKXx8ZS5jb21wYXJlVmFsdWVzKGMuc3RhcnQsdGUuc3RhcnQpfHxlLmNvbXBhcmVWYWx1ZXMoYy5sZW5ndGgsdGUubGVuZ3RoKXx8ZS5jb21wYXJlVmFsdWVzKGMuY29kZSx0ZS5jb2RlKXx8TG0oYy5tZXNzYWdlVGV4dCx0ZS5tZXNzYWdlVGV4dCl8fDB9ZS5jb21wYXJlRGlhZ25vc3RpY3NTa2lwUmVsYXRlZEluZm9ybWF0aW9uPV9nO2Z1bmN0aW9uIFFjKGMsdGUpe3JldHVybiFjLnJlbGF0ZWRJbmZvcm1hdGlvbiYmIXRlLnJlbGF0ZWRJbmZvcm1hdGlvbj8wOmMucmVsYXRlZEluZm9ybWF0aW9uJiZ0ZS5yZWxhdGVkSW5mb3JtYXRpb24/ZS5jb21wYXJlVmFsdWVzKGMucmVsYXRlZEluZm9ybWF0aW9uLmxlbmd0aCx0ZS5yZWxhdGVkSW5mb3JtYXRpb24ubGVuZ3RoKXx8ZS5mb3JFYWNoKGMucmVsYXRlZEluZm9ybWF0aW9uLGZ1bmN0aW9uKHhyLGVpKXt2YXIgYmk9dGUucmVsYXRlZEluZm9ybWF0aW9uW2VpXTtyZXR1cm4gUWcoeHIsYmkpfSl8fDA6Yy5yZWxhdGVkSW5mb3JtYXRpb24/LTE6MX1mdW5jdGlvbiBMbShjLHRlKXtpZih0eXBlb2YgYz09XCJzdHJpbmdcIiYmdHlwZW9mIHRlPT1cInN0cmluZ1wiKXJldHVybiBlLmNvbXBhcmVTdHJpbmdzQ2FzZVNlbnNpdGl2ZShjLHRlKTtpZih0eXBlb2YgYz09XCJzdHJpbmdcIilyZXR1cm4tMTtpZih0eXBlb2YgdGU9PVwic3RyaW5nXCIpcmV0dXJuIDE7dmFyIHhyPWUuY29tcGFyZVN0cmluZ3NDYXNlU2Vuc2l0aXZlKGMubWVzc2FnZVRleHQsdGUubWVzc2FnZVRleHQpO2lmKHhyKXJldHVybiB4cjtpZighYy5uZXh0JiYhdGUubmV4dClyZXR1cm4gMDtpZighYy5uZXh0KXJldHVybi0xO2lmKCF0ZS5uZXh0KXJldHVybiAxO2Zvcih2YXIgZWk9TWF0aC5taW4oYy5uZXh0Lmxlbmd0aCx0ZS5uZXh0Lmxlbmd0aCksYmk9MDtiaTxlaTtiaSsrKWlmKHhyPUxtKGMubmV4dFtiaV0sdGUubmV4dFtiaV0pLHhyKXJldHVybiB4cjtyZXR1cm4gYy5uZXh0Lmxlbmd0aDx0ZS5uZXh0Lmxlbmd0aD8tMTpjLm5leHQubGVuZ3RoPnRlLm5leHQubGVuZ3RoPzE6MH1mdW5jdGlvbiBVcChjKXtyZXR1cm4gYz09PTR8fGM9PT0yfHxjPT09MXx8Yz09PTY/MTowfWUuZ2V0TGFuZ3VhZ2VWYXJpYW50PVVwO2Z1bmN0aW9uIFJtKGMpe2lmKCEhKGMudHJhbnNmb3JtRmxhZ3MmMikpcmV0dXJuIGUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQoYyl8fGUuaXNKc3hGcmFnbWVudChjKT9jOmUuZm9yRWFjaENoaWxkKGMsUm0pfWZ1bmN0aW9uIGZmKGMpe3JldHVybiBjLmlzRGVjbGFyYXRpb25GaWxlP3ZvaWQgMDpSbShjKX1mdW5jdGlvbiBJdChjKXtyZXR1cm4gYy5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5FU05leHQmJiFjLmlzRGVjbGFyYXRpb25GaWxlPyEwOnZvaWQgMH1mdW5jdGlvbiBNYShjKXtzd2l0Y2gocm8oYykpe2Nhc2UgZS5Nb2R1bGVEZXRlY3Rpb25LaW5kLkZvcmNlOnJldHVybiBmdW5jdGlvbihGdCl7RnQuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I9IUZ0LmlzRGVjbGFyYXRpb25GaWxlfHxlLmlzRmlsZVByb2JhYmx5RXh0ZXJuYWxNb2R1bGUoRnQpfTtjYXNlIGUuTW9kdWxlRGV0ZWN0aW9uS2luZC5MZWdhY3k6cmV0dXJuIGZ1bmN0aW9uKEZ0KXtGdC5leHRlcm5hbE1vZHVsZUluZGljYXRvcj1lLmlzRmlsZVByb2JhYmx5RXh0ZXJuYWxNb2R1bGUoRnQpfTtjYXNlIGUuTW9kdWxlRGV0ZWN0aW9uS2luZC5BdXRvOnZhciB0ZT1bZS5pc0ZpbGVQcm9iYWJseUV4dGVybmFsTW9kdWxlXTsoYy5qc3g9PT00fHxjLmpzeD09PTUpJiZ0ZS5wdXNoKGZmKTt2YXIgeHI9SmEoYyk7KHhyPT09ZS5Nb2R1bGVLaW5kLk5vZGUxNnx8eHI9PT1lLk1vZHVsZUtpbmQuTm9kZU5leHQpJiZ0ZS5wdXNoKEl0KTt2YXIgZWk9ZS5vci5hcHBseSh2b2lkIDAsdGUpLGJpPWZ1bmN0aW9uKEZ0KXtyZXR1cm4gdm9pZChGdC5leHRlcm5hbE1vZHVsZUluZGljYXRvcj1laShGdCkpfTtyZXR1cm4gYml9fWUuZ2V0U2V0RXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I9TWE7ZnVuY3Rpb24gYWEoYyl7cmV0dXJuIGMudGFyZ2V0fHxjLm1vZHVsZT09PWUuTW9kdWxlS2luZC5Ob2RlMTYmJjl8fGMubW9kdWxlPT09ZS5Nb2R1bGVLaW5kLk5vZGVOZXh0JiY5OXx8MH1lLmdldEVtaXRTY3JpcHRUYXJnZXQ9YWE7ZnVuY3Rpb24gSmEoYyl7cmV0dXJuIHR5cGVvZiBjLm1vZHVsZT09XCJudW1iZXJcIj9jLm1vZHVsZTphYShjKT49Mj9lLk1vZHVsZUtpbmQuRVMyMDE1OmUuTW9kdWxlS2luZC5Db21tb25KU31lLmdldEVtaXRNb2R1bGVLaW5kPUphO2Z1bmN0aW9uIF9uKGMpe3ZhciB0ZT1jLm1vZHVsZVJlc29sdXRpb247aWYodGU9PT12b2lkIDApc3dpdGNoKEphKGMpKXtjYXNlIGUuTW9kdWxlS2luZC5Db21tb25KUzp0ZT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKczticmVhaztjYXNlIGUuTW9kdWxlS2luZC5Ob2RlMTY6dGU9ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTY7YnJlYWs7Y2FzZSBlLk1vZHVsZUtpbmQuTm9kZU5leHQ6dGU9ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dDticmVhaztkZWZhdWx0OnRlPWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuQ2xhc3NpYzticmVha31yZXR1cm4gdGV9ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQ9X247ZnVuY3Rpb24gcm8oYyl7cmV0dXJuIGMubW9kdWxlRGV0ZWN0aW9ufHxlLk1vZHVsZURldGVjdGlvbktpbmQuQXV0b31lLmdldEVtaXRNb2R1bGVEZXRlY3Rpb25LaW5kPXJvO2Z1bmN0aW9uIGFzKGMpe3N3aXRjaChKYShjKSl7Y2FzZSBlLk1vZHVsZUtpbmQuQ29tbW9uSlM6Y2FzZSBlLk1vZHVsZUtpbmQuQU1EOmNhc2UgZS5Nb2R1bGVLaW5kLkVTMjAxNTpjYXNlIGUuTW9kdWxlS2luZC5FUzIwMjA6Y2FzZSBlLk1vZHVsZUtpbmQuRVMyMDIyOmNhc2UgZS5Nb2R1bGVLaW5kLkVTTmV4dDpjYXNlIGUuTW9kdWxlS2luZC5Ob2RlMTY6Y2FzZSBlLk1vZHVsZUtpbmQuTm9kZU5leHQ6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZS5oYXNKc29uTW9kdWxlRW1pdEVuYWJsZWQ9YXM7ZnVuY3Rpb24gY2MoYyl7cmV0dXJuIGMuYWxsb3dVbnJlYWNoYWJsZUNvZGU9PT0hMX1lLnVucmVhY2hhYmxlQ29kZUlzRXJyb3I9Y2M7ZnVuY3Rpb24gU2MoYyl7cmV0dXJuIGMuYWxsb3dVbnVzZWRMYWJlbHM9PT0hMX1lLnVudXNlZExhYmVsSXNFcnJvcj1TYztmdW5jdGlvbiBodShjKXtyZXR1cm4hIShnbyhjKSYmYy5kZWNsYXJhdGlvbk1hcCl9ZS5nZXRBcmVEZWNsYXJhdGlvbk1hcHNFbmFibGVkPWh1O2Z1bmN0aW9uIEpzKGMpe2lmKGMuZXNNb2R1bGVJbnRlcm9wIT09dm9pZCAwKXJldHVybiBjLmVzTW9kdWxlSW50ZXJvcDtzd2l0Y2goSmEoYykpe2Nhc2UgZS5Nb2R1bGVLaW5kLk5vZGUxNjpjYXNlIGUuTW9kdWxlS2luZC5Ob2RlTmV4dDpyZXR1cm4hMH19ZS5nZXRFU01vZHVsZUludGVyb3A9SnM7ZnVuY3Rpb24gUWYoYyl7dmFyIHRlPUphKGMpO3JldHVybiBjLmFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMhPT12b2lkIDA/Yy5hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOkpzKGMpfHx0ZT09PWUuTW9kdWxlS2luZC5TeXN0ZW19ZS5nZXRBbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzPVFmO2Z1bmN0aW9uIGdvKGMpe3JldHVybiEhKGMuZGVjbGFyYXRpb258fGMuY29tcG9zaXRlKX1lLmdldEVtaXREZWNsYXJhdGlvbnM9Z287ZnVuY3Rpb24gVmQoYyl7cmV0dXJuISEoYy5wcmVzZXJ2ZUNvbnN0RW51bXN8fGMuaXNvbGF0ZWRNb2R1bGVzKX1lLnNob3VsZFByZXNlcnZlQ29uc3RFbnVtcz1WZDtmdW5jdGlvbiBYXyhjKXtyZXR1cm4hIShjLmluY3JlbWVudGFsfHxjLmNvbXBvc2l0ZSl9ZS5pc0luY3JlbWVudGFsQ29tcGlsYXRpb249WF87ZnVuY3Rpb24gU2QoYyx0ZSl7cmV0dXJuIGNbdGVdPT09dm9pZCAwPyEhYy5zdHJpY3Q6ISFjW3RlXX1lLmdldFN0cmljdE9wdGlvblZhbHVlPVNkO2Z1bmN0aW9uIFlnKGMpe3JldHVybiBjLmFsbG93SnM9PT12b2lkIDA/ISFjLmNoZWNrSnM6Yy5hbGxvd0pzfWUuZ2V0QWxsb3dKU0NvbXBpbGVyT3B0aW9uPVlnO2Z1bmN0aW9uIE4xKGMpe3JldHVybiBjLnVzZURlZmluZUZvckNsYXNzRmllbGRzPT09dm9pZCAwP2FhKGMpPj05OmMudXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHN9ZS5nZXRVc2VEZWZpbmVGb3JDbGFzc0ZpZWxkcz1OMTtmdW5jdGlvbiBQMShjLHRlKXtyZXR1cm4gbSh0ZSxjLGUuc2VtYW50aWNEaWFnbm9zdGljc09wdGlvbkRlY2xhcmF0aW9ucyl9ZS5jb21waWxlck9wdGlvbnNBZmZlY3RTZW1hbnRpY0RpYWdub3N0aWNzPVAxO2Z1bmN0aW9uIFl5KGMsdGUpe3JldHVybiBtKHRlLGMsZS5hZmZlY3RzRW1pdE9wdGlvbkRlY2xhcmF0aW9ucyl9ZS5jb21waWxlck9wdGlvbnNBZmZlY3RFbWl0PVl5O2Z1bmN0aW9uIEJtKGMsdGUpe3JldHVybiB0ZS5zdHJpY3RGbGFnP1NkKGMsdGUubmFtZSk6Y1t0ZS5uYW1lXX1lLmdldENvbXBpbGVyT3B0aW9uVmFsdWU9Qm07ZnVuY3Rpb24gJHkoYyl7dmFyIHRlPWMuanN4O3JldHVybiB0ZT09PTJ8fHRlPT09NHx8dGU9PT01fWUuZ2V0SlNYVHJhbnNmb3JtRW5hYmxlZD0keTtmdW5jdGlvbiBMdihjLHRlKXt2YXIgeHI9dGU9PW51bGw/dm9pZCAwOnRlLnByYWdtYXMuZ2V0KFwianN4aW1wb3J0c291cmNlXCIpLGVpPWUuaXNBcnJheSh4cik/eHJbeHIubGVuZ3RoLTFdOnhyO3JldHVybiBjLmpzeD09PTR8fGMuanN4PT09NXx8Yy5qc3hJbXBvcnRTb3VyY2V8fGVpPyhlaT09bnVsbD92b2lkIDA6ZWkuYXJndW1lbnRzLmZhY3RvcnkpfHxjLmpzeEltcG9ydFNvdXJjZXx8XCJyZWFjdFwiOnZvaWQgMH1lLmdldEpTWEltcGxpY2l0SW1wb3J0QmFzZT1MdjtmdW5jdGlvbiBfZihjLHRlKXtyZXR1cm4gYz9cIlwiLmNvbmNhdChjLFwiL1wiKS5jb25jYXQodGUuanN4PT09NT9cImpzeC1kZXYtcnVudGltZVwiOlwianN4LXJ1bnRpbWVcIik6dm9pZCAwfWUuZ2V0SlNYUnVudGltZUltcG9ydD1fZjtmdW5jdGlvbiBSdihjKXtmb3IodmFyIHRlPSExLHhyPTA7eHI8Yy5sZW5ndGg7eHIrKylpZihjLmNoYXJDb2RlQXQoeHIpPT09NDIpaWYoIXRlKXRlPSEwO2Vsc2UgcmV0dXJuITE7cmV0dXJuITB9ZS5oYXNaZXJvT3JPbmVBc3Rlcmlza0NoYXJhY3Rlcj1SdjtmdW5jdGlvbiBwZyhjLHRlKXt2YXIgeHIsZWksYmksRnQ9ITE7cmV0dXJue2dldFN5bWxpbmtlZEZpbGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGJpfSxnZXRTeW1saW5rZWREaXJlY3RvcmllczpmdW5jdGlvbigpe3JldHVybiB4cn0sZ2V0U3ltbGlua2VkRGlyZWN0b3JpZXNCeVJlYWxwYXRoOmZ1bmN0aW9uKCl7cmV0dXJuIGVpfSxzZXRTeW1saW5rZWRGaWxlOmZ1bmN0aW9uKHhhLG1uKXtyZXR1cm4oYml8fChiaT1uZXcgZS5NYXApKS5zZXQoeGEsbW4pfSxzZXRTeW1saW5rZWREaXJlY3Rvcnk6ZnVuY3Rpb24oeGEsbW4pe3ZhciBhbj1lLnRvUGF0aCh4YSxjLHRlKTtEXyhhbil8fChhbj1lLmVuc3VyZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKGFuKSxtbiE9PSExJiYhKHhyIT1udWxsJiZ4ci5oYXMoYW4pKSYmKGVpfHwoZWk9ZS5jcmVhdGVNdWx0aU1hcCgpKSkuYWRkKGUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IobW4ucmVhbFBhdGgpLHhhKSwoeHJ8fCh4cj1uZXcgZS5NYXApKS5zZXQoYW4sbW4pKX0sc2V0U3ltbGlua3NGcm9tUmVzb2x1dGlvbnM6ZnVuY3Rpb24oeGEsbW4pe3ZhciBhbj10aGlzLFRvO2UuRGVidWcuYXNzZXJ0KCFGdCksRnQ9ITA7Zm9yKHZhciBIbj0wLHNzPXhhO0huPHNzLmxlbmd0aDtIbisrKXt2YXIgY3M9c3NbSG5dOyhUbz1jcy5yZXNvbHZlZE1vZHVsZXMpPT09bnVsbHx8VG89PT12b2lkIDB8fFRvLmZvckVhY2goZnVuY3Rpb24od3Mpe3JldHVybiBvdChhbix3cyl9KX1tbj09bnVsbHx8bW4uZm9yRWFjaChmdW5jdGlvbih3cyl7cmV0dXJuIG90KGFuLHdzKX0pfSxoYXNQcm9jZXNzZWRSZXNvbHV0aW9uczpmdW5jdGlvbigpe3JldHVybiBGdH19O2Z1bmN0aW9uIG90KHhhLG1uKXtpZighKCFtbnx8IW1uLm9yaWdpbmFsUGF0aHx8IW1uLnJlc29sdmVkRmlsZU5hbWUpKXt2YXIgYW49bW4ucmVzb2x2ZWRGaWxlTmFtZSxUbz1tbi5vcmlnaW5hbFBhdGg7eGEuc2V0U3ltbGlua2VkRmlsZShlLnRvUGF0aChUbyxjLHRlKSxhbik7dmFyIEhuPSRnKGFuLFRvLGMsdGUpfHxlLmVtcHR5QXJyYXksc3M9SG5bMF0sY3M9SG5bMV07c3MmJmNzJiZ4YS5zZXRTeW1saW5rZWREaXJlY3RvcnkoY3Mse3JlYWw6c3MscmVhbFBhdGg6ZS50b1BhdGgoc3MsYyx0ZSl9KX19fWUuY3JlYXRlU3ltbGlua0NhY2hlPXBnO2Z1bmN0aW9uICRnKGMsdGUseHIsZWkpe2Zvcih2YXIgYmk9ZS5nZXRQYXRoQ29tcG9uZW50cyhlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoYyx4cikpLEZ0PWUuZ2V0UGF0aENvbXBvbmVudHMoZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKHRlLHhyKSksb3Q9ITE7YmkubGVuZ3RoPj0yJiZGdC5sZW5ndGg+PTImJiFUZChiaVtiaS5sZW5ndGgtMl0sZWkpJiYhVGQoRnRbRnQubGVuZ3RoLTJdLGVpKSYmZWkoYmlbYmkubGVuZ3RoLTFdKT09PWVpKEZ0W0Z0Lmxlbmd0aC0xXSk7KWJpLnBvcCgpLEZ0LnBvcCgpLG90PSEwO3JldHVybiBvdD9bZS5nZXRQYXRoRnJvbVBhdGhDb21wb25lbnRzKGJpKSxlLmdldFBhdGhGcm9tUGF0aENvbXBvbmVudHMoRnQpXTp2b2lkIDB9ZnVuY3Rpb24gVGQoYyx0ZSl7cmV0dXJuIGMhPT12b2lkIDAmJih0ZShjKT09PVwibm9kZV9tb2R1bGVzXCJ8fGUuc3RhcnRzV2l0aChjLFwiQFwiKSl9ZnVuY3Rpb24gSTEoYyl7cmV0dXJuIGUuaXNBbnlEaXJlY3RvcnlTZXBhcmF0b3IoYy5jaGFyQ29kZUF0KDApKT9jLnNsaWNlKDEpOnZvaWQgMH1mdW5jdGlvbiBwZihjLHRlLHhyKXt2YXIgZWk9ZS50cnlSZW1vdmVQcmVmaXgoYyx0ZSx4cik7cmV0dXJuIGVpPT09dm9pZCAwP3ZvaWQgMDpJMShlaSl9ZS50cnlSZW1vdmVEaXJlY3RvcnlQcmVmaXg9cGY7dmFyIEJ2PS9bXlxcd1xcc1xcL10vZztmdW5jdGlvbiBaeShjKXtyZXR1cm4gYy5yZXBsYWNlKEJ2LEp2KX1lLnJlZ0V4cEVzY2FwZT1aeTtmdW5jdGlvbiBKdihjKXtyZXR1cm5cIlxcXFxcIitjfXZhciBOZj1bNDIsNjNdO2UuY29tbW9uUGFja2FnZUZvbGRlcnM9W1wibm9kZV9tb2R1bGVzXCIsXCJib3dlcl9jb21wb25lbnRzXCIsXCJqc3BtX3BhY2thZ2VzXCJdO3ZhciBkZz1cIig/IShcIi5jb25jYXQoZS5jb21tb25QYWNrYWdlRm9sZGVycy5qb2luKFwifFwiKSxcIikoL3wkKSlcIiksUmM9e3NpbmdsZUFzdGVyaXNrUmVnZXhGcmFnbWVudDpcIihbXi4vXXwoXFxcXC4oPyFtaW5cXFxcLmpzJCkpPykqXCIsZG91YmxlQXN0ZXJpc2tSZWdleEZyYWdtZW50OlwiKC9cIi5jb25jYXQoZGcsXCJbXi8uXVteL10qKSo/XCIpLHJlcGxhY2VXaWxkY2FyZENoYXJhY3RlcjpmdW5jdGlvbihjKXtyZXR1cm4gSm0oYyxSYy5zaW5nbGVBc3Rlcmlza1JlZ2V4RnJhZ21lbnQpfX0sanY9e3NpbmdsZUFzdGVyaXNrUmVnZXhGcmFnbWVudDpcIlteL10qXCIsZG91YmxlQXN0ZXJpc2tSZWdleEZyYWdtZW50OlwiKC9cIi5jb25jYXQoZGcsXCJbXi8uXVteL10qKSo/XCIpLHJlcGxhY2VXaWxkY2FyZENoYXJhY3RlcjpmdW5jdGlvbihjKXtyZXR1cm4gSm0oYyxqdi5zaW5nbGVBc3Rlcmlza1JlZ2V4RnJhZ21lbnQpfX0sZWg9e3NpbmdsZUFzdGVyaXNrUmVnZXhGcmFnbWVudDpcIlteL10qXCIsZG91YmxlQXN0ZXJpc2tSZWdleEZyYWdtZW50OlwiKC8uKz8pP1wiLHJlcGxhY2VXaWxkY2FyZENoYXJhY3RlcjpmdW5jdGlvbihjKXtyZXR1cm4gSm0oYyxlaC5zaW5nbGVBc3Rlcmlza1JlZ2V4RnJhZ21lbnQpfX0scmg9e2ZpbGVzOlJjLGRpcmVjdG9yaWVzOmp2LGV4Y2x1ZGU6ZWh9O2Z1bmN0aW9uIEZ1KGMsdGUseHIpe3ZhciBlaT14ZChjLHRlLHhyKTtpZighKCFlaXx8IWVpLmxlbmd0aCkpe3ZhciBiaT1laS5tYXAoZnVuY3Rpb24ob3Qpe3JldHVyblwiKFwiLmNvbmNhdChvdCxcIilcIil9KS5qb2luKFwifFwiKSxGdD14cj09PVwiZXhjbHVkZVwiP1wiKCR8LylcIjpcIiRcIjtyZXR1cm5cIl4oXCIuY29uY2F0KGJpLFwiKVwiKS5jb25jYXQoRnQpfX1lLmdldFJlZ3VsYXJFeHByZXNzaW9uRm9yV2lsZGNhcmQ9RnU7ZnVuY3Rpb24geGQoYyx0ZSx4cil7aWYoIShjPT09dm9pZCAwfHxjLmxlbmd0aD09PTApKXJldHVybiBlLmZsYXRNYXAoYyxmdW5jdGlvbihlaSl7cmV0dXJuIGVpJiZpaChlaSx0ZSx4cixyaFt4cl0pfSl9ZS5nZXRSZWd1bGFyRXhwcmVzc2lvbnNGb3JXaWxkY2FyZHM9eGQ7ZnVuY3Rpb24gVXYoYyl7cmV0dXJuIS9bLio/XS8udGVzdChjKX1lLmlzSW1wbGljaXRHbG9iPVV2O2Z1bmN0aW9uIHcxKGMsdGUseHIpe3ZhciBlaT1jJiZpaChjLHRlLHhyLHJoW3hyXSk7cmV0dXJuIGVpJiZcIl4oXCIuY29uY2F0KGVpLFwiKVwiKS5jb25jYXQoeHI9PT1cImV4Y2x1ZGVcIj9cIigkfC8pXCI6XCIkXCIpfWUuZ2V0UGF0dGVybkZyb21TcGVjPXcxO2Z1bmN0aW9uIGloKGMsdGUseHIsZWkpe3ZhciBiaT1laS5zaW5nbGVBc3Rlcmlza1JlZ2V4RnJhZ21lbnQsRnQ9ZWkuZG91YmxlQXN0ZXJpc2tSZWdleEZyYWdtZW50LG90PWVpLnJlcGxhY2VXaWxkY2FyZENoYXJhY3Rlcix4YT1cIlwiLG1uPSExLGFuPWUuZ2V0Tm9ybWFsaXplZFBhdGhDb21wb25lbnRzKGMsdGUpLFRvPWUubGFzdChhbik7aWYoISh4ciE9PVwiZXhjbHVkZVwiJiZUbz09PVwiKipcIikpe2FuWzBdPWUucmVtb3ZlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoYW5bMF0pLFV2KFRvKSYmYW4ucHVzaChcIioqXCIsXCIqXCIpO2Zvcih2YXIgSG49MCxzcz0wLGNzPWFuO3NzPGNzLmxlbmd0aDtzcysrKXt2YXIgd3M9Y3Nbc3NdO2lmKHdzPT09XCIqKlwiKXhhKz1GdDtlbHNlIGlmKHhyPT09XCJkaXJlY3Rvcmllc1wiJiYoeGErPVwiKFwiLEhuKyspLG1uJiYoeGErPWUuZGlyZWN0b3J5U2VwYXJhdG9yKSx4ciE9PVwiZXhjbHVkZVwiKXt2YXIgbnU9XCJcIjt3cy5jaGFyQ29kZUF0KDApPT09NDI/KG51Kz1cIihbXi4vXVwiK2JpK1wiKT9cIix3cz13cy5zdWJzdHIoMSkpOndzLmNoYXJDb2RlQXQoMCk9PT02MyYmKG51Kz1cIlteLi9dXCIsd3M9d3Muc3Vic3RyKDEpKSxudSs9d3MucmVwbGFjZShCdixvdCksbnUhPT13cyYmKHhhKz1kZykseGErPW51fWVsc2UgeGErPXdzLnJlcGxhY2UoQnYsb3QpO21uPSEwfWZvcig7SG4+MDspeGErPVwiKT9cIixIbi0tO3JldHVybiB4YX19ZnVuY3Rpb24gSm0oYyx0ZSl7cmV0dXJuIGM9PT1cIipcIj90ZTpjPT09XCI/XCI/XCJbXi9dXCI6XCJcXFxcXCIrY31mdW5jdGlvbiB0aChjLHRlLHhyLGVpLGJpKXtjPWUubm9ybWFsaXplUGF0aChjKSxiaT1lLm5vcm1hbGl6ZVBhdGgoYmkpO3ZhciBGdD1lLmNvbWJpbmVQYXRocyhiaSxjKTtyZXR1cm57aW5jbHVkZUZpbGVQYXR0ZXJuczplLm1hcCh4ZCh4cixGdCxcImZpbGVzXCIpLGZ1bmN0aW9uKG90KXtyZXR1cm5cIl5cIi5jb25jYXQob3QsXCIkXCIpfSksaW5jbHVkZUZpbGVQYXR0ZXJuOkZ1KHhyLEZ0LFwiZmlsZXNcIiksaW5jbHVkZURpcmVjdG9yeVBhdHRlcm46RnUoeHIsRnQsXCJkaXJlY3Rvcmllc1wiKSxleGNsdWRlUGF0dGVybjpGdSh0ZSxGdCxcImV4Y2x1ZGVcIiksYmFzZVBhdGhzOnp2KGMseHIsZWkpfX1lLmdldEZpbGVNYXRjaGVyUGF0dGVybnM9dGg7ZnVuY3Rpb24gZ2coYyx0ZSl7cmV0dXJuIG5ldyBSZWdFeHAoYyx0ZT9cIlwiOlwiaVwiKX1lLmdldFJlZ2V4RnJvbVBhdHRlcm49Z2c7ZnVuY3Rpb24gTzEoYyx0ZSx4cixlaSxiaSxGdCxvdCx4YSxtbil7Yz1lLm5vcm1hbGl6ZVBhdGgoYyksRnQ9ZS5ub3JtYWxpemVQYXRoKEZ0KTtmb3IodmFyIGFuPXRoKGMseHIsZWksYmksRnQpLFRvPWFuLmluY2x1ZGVGaWxlUGF0dGVybnMmJmFuLmluY2x1ZGVGaWxlUGF0dGVybnMubWFwKGZ1bmN0aW9uKGJfKXtyZXR1cm4gZ2coYl8sYmkpfSksSG49YW4uaW5jbHVkZURpcmVjdG9yeVBhdHRlcm4mJmdnKGFuLmluY2x1ZGVEaXJlY3RvcnlQYXR0ZXJuLGJpKSxzcz1hbi5leGNsdWRlUGF0dGVybiYmZ2coYW4uZXhjbHVkZVBhdHRlcm4sYmkpLGNzPVRvP1RvLm1hcChmdW5jdGlvbigpe3JldHVybltdfSk6W1tdXSx3cz1uZXcgZS5NYXAsbnU9ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShiaSksWG89MCxqbD1hbi5iYXNlUGF0aHM7WG88amwubGVuZ3RoO1hvKyspe3ZhciBZXz1qbFtYb107Q2QoWV8sZS5jb21iaW5lUGF0aHMoRnQsWV8pLG90KX1yZXR1cm4gZS5mbGF0dGVuKGNzKTtmdW5jdGlvbiBDZChiXyxrZCxxbSl7dmFyIFZtPW51KG1uKGtkKSk7aWYoIXdzLmhhcyhWbSkpe3dzLnNldChWbSwhMCk7Zm9yKHZhciB2Zz14YShiXyksVWw9dmcuZmlsZXMsenA9dmcuZGlyZWN0b3JpZXMseWw9ZnVuY3Rpb24oVF8pe3ZhciBZYz1lLmNvbWJpbmVQYXRocyhiXyxUXyksZ2g9ZS5jb21iaW5lUGF0aHMoa2QsVF8pO2lmKHRlJiYhZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihZYyx0ZSl8fHNzJiZzcy50ZXN0KGdoKSlyZXR1cm5cImNvbnRpbnVlXCI7aWYoIVRvKWNzWzBdLnB1c2goWWMpO2Vsc2V7dmFyIGl5PWUuZmluZEluZGV4KFRvLGZ1bmN0aW9uKHlvKXtyZXR1cm4geW8udGVzdChnaCl9KTtpeSE9PS0xJiZjc1tpeV0ucHVzaChZYyl9fSxleT0wLHJtPWUuc29ydChVbCxlLmNvbXBhcmVTdHJpbmdzQ2FzZVNlbnNpdGl2ZSk7ZXk8cm0ubGVuZ3RoO2V5Kyspe3ZhciBLbT1ybVtleV07eWwoS20pfWlmKCEocW0hPT12b2lkIDAmJihxbS0tLHFtPT09MCkpKWZvcih2YXIgcnk9MCxHbT1lLnNvcnQoenAsZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpO3J5PEdtLmxlbmd0aDtyeSsrKXt2YXIgS209R21bcnldLFNfPWUuY29tYmluZVBhdGhzKGJfLEttKSxIbT1lLmNvbWJpbmVQYXRocyhrZCxLbSk7KCFIbnx8SG4udGVzdChIbSkpJiYoIXNzfHwhc3MudGVzdChIbSkpJiZDZChTXyxIbSxxbSl9fX19ZS5tYXRjaEZpbGVzPU8xO2Z1bmN0aW9uIHp2KGMsdGUseHIpe3ZhciBlaT1bY107aWYodGUpe2Zvcih2YXIgYmk9W10sRnQ9MCxvdD10ZTtGdDxvdC5sZW5ndGg7RnQrKyl7dmFyIHhhPW90W0Z0XSxtbj1lLmlzUm9vdGVkRGlza1BhdGgoeGEpP3hhOmUubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyhjLHhhKSk7YmkucHVzaChhaChtbikpfWJpLnNvcnQoZS5nZXRTdHJpbmdDb21wYXJlcigheHIpKTtmb3IodmFyIGFuPWZ1bmN0aW9uKGNzKXtlLmV2ZXJ5KGVpLGZ1bmN0aW9uKHdzKXtyZXR1cm4hZS5jb250YWluc1BhdGgod3MsY3MsYywheHIpfSkmJmVpLnB1c2goY3MpfSxUbz0wLEhuPWJpO1RvPEhuLmxlbmd0aDtUbysrKXt2YXIgc3M9SG5bVG9dO2FuKHNzKX19cmV0dXJuIGVpfWZ1bmN0aW9uIGFoKGMpe3ZhciB0ZT1lLmluZGV4T2ZBbnlDaGFyQ29kZShjLE5mKTtyZXR1cm4gdGU8MD9lLmhhc0V4dGVuc2lvbihjKT9lLnJlbW92ZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKGUuZ2V0RGlyZWN0b3J5UGF0aChjKSk6YzpjLnN1YnN0cmluZygwLGMubGFzdEluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IsdGUpKX1mdW5jdGlvbiBGMShjLHRlKXtyZXR1cm4gdGV8fG5oKGMpfHwzfWUuZW5zdXJlU2NyaXB0S2luZD1GMTtmdW5jdGlvbiBuaChjKXt2YXIgdGU9Yy5zdWJzdHIoYy5sYXN0SW5kZXhPZihcIi5cIikpO3N3aXRjaCh0ZS50b0xvd2VyQ2FzZSgpKXtjYXNlXCIuanNcIjpjYXNlXCIuY2pzXCI6Y2FzZVwiLm1qc1wiOnJldHVybiAxO2Nhc2VcIi5qc3hcIjpyZXR1cm4gMjtjYXNlXCIudHNcIjpjYXNlXCIuY3RzXCI6Y2FzZVwiLm10c1wiOnJldHVybiAzO2Nhc2VcIi50c3hcIjpyZXR1cm4gNDtjYXNlXCIuanNvblwiOnJldHVybiA2O2RlZmF1bHQ6cmV0dXJuIDB9fWUuZ2V0U2NyaXB0S2luZEZyb21GaWxlTmFtZT1uaCxlLnN1cHBvcnRlZFRTRXh0ZW5zaW9ucz1bW1wiLnRzXCIsXCIudHN4XCIsXCIuZC50c1wiXSxbXCIuY3RzXCIsXCIuZC5jdHNcIl0sW1wiLm10c1wiLFwiLmQubXRzXCJdXSxlLnN1cHBvcnRlZFRTRXh0ZW5zaW9uc0ZsYXQ9ZS5mbGF0dGVuKGUuc3VwcG9ydGVkVFNFeHRlbnNpb25zKTt2YXIgTTE9VmUoVmUoW10sZS5zdXBwb3J0ZWRUU0V4dGVuc2lvbnMsITApLFtbXCIuanNvblwiXV0sITEpLG9oPVtcIi5kLnRzXCIsXCIuZC5jdHNcIixcIi5kLm10c1wiLFwiLmN0c1wiLFwiLm10c1wiLFwiLnRzXCIsXCIudHN4XCIsXCIuY3RzXCIsXCIubXRzXCJdO2Uuc3VwcG9ydGVkSlNFeHRlbnNpb25zPVtbXCIuanNcIixcIi5qc3hcIl0sW1wiLm1qc1wiXSxbXCIuY2pzXCJdXSxlLnN1cHBvcnRlZEpTRXh0ZW5zaW9uc0ZsYXQ9ZS5mbGF0dGVuKGUuc3VwcG9ydGVkSlNFeHRlbnNpb25zKTt2YXIgam09W1tcIi50c1wiLFwiLnRzeFwiLFwiLmQudHNcIixcIi5qc1wiLFwiLmpzeFwiXSxbXCIuY3RzXCIsXCIuZC5jdHNcIixcIi5janNcIl0sW1wiLm10c1wiLFwiLmQubXRzXCIsXCIubWpzXCJdXSxaZz1WZShWZShbXSxqbSwhMCksW1tcIi5qc29uXCJdXSwhMSk7ZS5zdXBwb3J0ZWREZWNsYXJhdGlvbkV4dGVuc2lvbnM9W1wiLmQudHNcIixcIi5kLmN0c1wiLFwiLmQubXRzXCJdO2Z1bmN0aW9uIFd2KGMsdGUpe3ZhciB4cj1jJiZZZyhjKTtpZighdGV8fHRlLmxlbmd0aD09PTApcmV0dXJuIHhyP2ptOmUuc3VwcG9ydGVkVFNFeHRlbnNpb25zO3ZhciBlaT14cj9qbTplLnN1cHBvcnRlZFRTRXh0ZW5zaW9ucyxiaT1lLmZsYXR0ZW4oZWkpLEZ0PVZlKFZlKFtdLGVpLCEwKSxlLm1hcERlZmluZWQodGUsZnVuY3Rpb24ob3Qpe3JldHVybiBvdC5zY3JpcHRLaW5kPT09N3x8eHImJkwxKG90LnNjcmlwdEtpbmQpJiZiaS5pbmRleE9mKG90LmV4dGVuc2lvbik9PT0tMT9bb3QuZXh0ZW5zaW9uXTp2b2lkIDB9KSwhMCk7cmV0dXJuIEZ0fWUuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucz1XdjtmdW5jdGlvbiBzaChjLHRlKXtyZXR1cm4hY3x8IWMucmVzb2x2ZUpzb25Nb2R1bGU/dGU6dGU9PT1qbT9aZzp0ZT09PWUuc3VwcG9ydGVkVFNFeHRlbnNpb25zP00xOlZlKFZlKFtdLHRlLCEwKSxbW1wiLmpzb25cIl1dLCExKX1lLmdldFN1cHBvcnRlZEV4dGVuc2lvbnNXaXRoSnNvbklmUmVzb2x2ZUpzb25Nb2R1bGU9c2g7ZnVuY3Rpb24gTDEoYyl7cmV0dXJuIGM9PT0xfHxjPT09Mn1mdW5jdGlvbiBjaChjKXtyZXR1cm4gZS5zb21lKGUuc3VwcG9ydGVkSlNFeHRlbnNpb25zRmxhdCxmdW5jdGlvbih0ZSl7cmV0dXJuIGUuZmlsZUV4dGVuc2lvbklzKGMsdGUpfSl9ZS5oYXNKU0ZpbGVFeHRlbnNpb249Y2g7ZnVuY3Rpb24gdWgoYyl7cmV0dXJuIGUuc29tZShlLnN1cHBvcnRlZFRTRXh0ZW5zaW9uc0ZsYXQsZnVuY3Rpb24odGUpe3JldHVybiBlLmZpbGVFeHRlbnNpb25JcyhjLHRlKX0pfWUuaGFzVFNGaWxlRXh0ZW5zaW9uPXVoO2Z1bmN0aW9uIFIxKGMsdGUseHIpe2lmKCFjKXJldHVybiExO2Zvcih2YXIgZWk9V3YodGUseHIpLGJpPTAsRnQ9ZS5mbGF0dGVuKHNoKHRlLGVpKSk7Ymk8RnQubGVuZ3RoO2JpKyspe3ZhciBvdD1GdFtiaV07aWYoZS5maWxlRXh0ZW5zaW9uSXMoYyxvdCkpcmV0dXJuITB9cmV0dXJuITF9ZS5pc1N1cHBvcnRlZFNvdXJjZUZpbGVOYW1lPVIxO2Z1bmN0aW9uIGxoKGMpe3ZhciB0ZT1jLm1hdGNoKC9cXC8vZyk7cmV0dXJuIHRlP3RlLmxlbmd0aDowfWZ1bmN0aW9uIEIxKGMsdGUpe3JldHVybiBlLmNvbXBhcmVWYWx1ZXMobGgoYyksbGgodGUpKX1lLmNvbXBhcmVOdW1iZXJPZkRpcmVjdG9yeVNlcGFyYXRvcnM9QjE7dmFyIEtkPVtcIi5kLnRzXCIsXCIuZC5tdHNcIixcIi5kLmN0c1wiLFwiLm1qc1wiLFwiLm10c1wiLFwiLmNqc1wiLFwiLmN0c1wiLFwiLnRzXCIsXCIuanNcIixcIi50c3hcIixcIi5qc3hcIixcIi5qc29uXCJdO2Z1bmN0aW9uIEdkKGMpe2Zvcih2YXIgdGU9MCx4cj1LZDt0ZTx4ci5sZW5ndGg7dGUrKyl7dmFyIGVpPXhyW3RlXSxiaT1VbShjLGVpKTtpZihiaSE9PXZvaWQgMClyZXR1cm4gYml9cmV0dXJuIGN9ZS5yZW1vdmVGaWxlRXh0ZW5zaW9uPUdkO2Z1bmN0aW9uIFVtKGMsdGUpe3JldHVybiBlLmZpbGVFeHRlbnNpb25JcyhjLHRlKT9maChjLHRlKTp2b2lkIDB9ZS50cnlSZW1vdmVFeHRlbnNpb249VW07ZnVuY3Rpb24gZmgoYyx0ZSl7cmV0dXJuIGMuc3Vic3RyaW5nKDAsYy5sZW5ndGgtdGUubGVuZ3RoKX1lLnJlbW92ZUV4dGVuc2lvbj1maDtmdW5jdGlvbiBKMShjLHRlKXtyZXR1cm4gZS5jaGFuZ2VBbnlFeHRlbnNpb24oYyx0ZSxLZCwhMSl9ZS5jaGFuZ2VFeHRlbnNpb249SjE7ZnVuY3Rpb24gRHUoYyl7dmFyIHRlPWMuaW5kZXhPZihcIipcIik7cmV0dXJuIHRlPT09LTE/YzpjLmluZGV4T2YoXCIqXCIsdGUrMSkhPT0tMT92b2lkIDA6e3ByZWZpeDpjLnN1YnN0cigwLHRlKSxzdWZmaXg6Yy5zdWJzdHIodGUrMSl9fWUudHJ5UGFyc2VQYXR0ZXJuPUR1O2Z1bmN0aW9uIE11KGMpe3JldHVybiBlLm1hcERlZmluZWQoZS5nZXRPd25LZXlzKGMpLGZ1bmN0aW9uKHRlKXtyZXR1cm4gRHUodGUpfSl9ZS50cnlQYXJzZVBhdHRlcm5zPU11O2Z1bmN0aW9uIEpsKGMpe3JldHVybiEoYz49MCl9ZS5wb3NpdGlvbklzU3ludGhlc2l6ZWQ9Smw7ZnVuY3Rpb24gdmwoYyl7cmV0dXJuIGM9PT1cIi50c1wifHxjPT09XCIudHN4XCJ8fGM9PT1cIi5kLnRzXCJ8fGM9PT1cIi5jdHNcInx8Yz09PVwiLm10c1wifHxjPT09XCIuZC5tdHNcInx8Yz09PVwiLmQuY3RzXCJ9ZS5leHRlbnNpb25Jc1RTPXZsO2Z1bmN0aW9uIF9oKGMpe3JldHVybiB2bChjKXx8Yz09PVwiLmpzb25cIn1lLnJlc29sdXRpb25FeHRlbnNpb25Jc1RTT3JKc29uPV9oO2Z1bmN0aW9uIG1nKGMpe3ZhciB0ZT1MdShjKTtyZXR1cm4gdGUhPT12b2lkIDA/dGU6ZS5EZWJ1Zy5mYWlsKFwiRmlsZSBcIi5jb25jYXQoYyxcIiBoYXMgdW5rbm93biBleHRlbnNpb24uXCIpKX1lLmV4dGVuc2lvbkZyb21QYXRoPW1nO2Z1bmN0aW9uIEVkKGMpe3JldHVybiBMdShjKSE9PXZvaWQgMH1lLmlzQW55U3VwcG9ydGVkRmlsZUV4dGVuc2lvbj1FZDtmdW5jdGlvbiBMdShjKXtyZXR1cm4gZS5maW5kKEtkLGZ1bmN0aW9uKHRlKXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXMoYyx0ZSl9KX1lLnRyeUdldEV4dGVuc2lvbkZyb21QYXRoPUx1O2Z1bmN0aW9uIHBoKGMsdGUpe3JldHVybiBjLmNoZWNrSnNEaXJlY3RpdmU/Yy5jaGVja0pzRGlyZWN0aXZlLmVuYWJsZWQ6dGUuY2hlY2tKc31lLmlzQ2hlY2tKc0VuYWJsZWRGb3JGaWxlPXBoLGUuZW1wdHlGaWxlU3lzdGVtRW50cmllcz17ZmlsZXM6ZS5lbXB0eUFycmF5LGRpcmVjdG9yaWVzOmUuZW1wdHlBcnJheX07ZnVuY3Rpb24gcXYoYyx0ZSl7Zm9yKHZhciB4cj1bXSxlaT0wLGJpPWM7ZWk8YmkubGVuZ3RoO2VpKyspe3ZhciBGdD1iaVtlaV07aWYoRnQ9PT10ZSlyZXR1cm4gdGU7ZS5pc1N0cmluZyhGdCl8fHhyLnB1c2goRnQpfXJldHVybiBlLmZpbmRCZXN0UGF0dGVybk1hdGNoKHhyLGZ1bmN0aW9uKG90KXtyZXR1cm4gb3R9LHRlKX1lLm1hdGNoUGF0dGVybk9yRXhhY3Q9cXY7ZnVuY3Rpb24gajEoYyx0ZSl7dmFyIHhyPWMuaW5kZXhPZih0ZSk7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KHhyIT09LTEpLGMuc2xpY2UoeHIpfWUuc2xpY2VBZnRlcj1qMTtmdW5jdGlvbiBCYyhjKXtmb3IodmFyIHRlLHhyPVtdLGVpPTE7ZWk8YXJndW1lbnRzLmxlbmd0aDtlaSsrKXhyW2VpLTFdPWFyZ3VtZW50c1tlaV07cmV0dXJuIHhyLmxlbmd0aCYmKGMucmVsYXRlZEluZm9ybWF0aW9ufHwoYy5yZWxhdGVkSW5mb3JtYXRpb249W10pLGUuRGVidWcuYXNzZXJ0KGMucmVsYXRlZEluZm9ybWF0aW9uIT09ZS5lbXB0eUFycmF5LFwiRGlhZ25vc3RpYyBoYWQgZW1wdHkgYXJyYXkgc2luZ2xldG9uIGZvciByZWxhdGVkIGluZm8sIGJ1dCBpcyBzdGlsbCBiZWluZyBjb25zdHJ1Y3RlZCFcIiksKHRlPWMucmVsYXRlZEluZm9ybWF0aW9uKS5wdXNoLmFwcGx5KHRlLHhyKSksY31lLmFkZFJlbGF0ZWRJbmZvPUJjO2Z1bmN0aW9uIFJ1KGMsdGUpe2UuRGVidWcuYXNzZXJ0KGMubGVuZ3RoIT09MCk7Zm9yKHZhciB4cj10ZShjWzBdKSxlaT14cixiaT0xO2JpPGMubGVuZ3RoO2JpKyspe3ZhciBGdD10ZShjW2JpXSk7RnQ8eHI/eHI9RnQ6RnQ+ZWkmJihlaT1GdCl9cmV0dXJue21pbjp4cixtYXg6ZWl9fWUubWluQW5kTWF4PVJ1O2Z1bmN0aW9uIFBmKGMpe3JldHVybntwb3M6RmUoYyksZW5kOmMuZW5kfX1lLnJhbmdlT2ZOb2RlPVBmO2Z1bmN0aW9uIGhfKGMsdGUpe3ZhciB4cj10ZS5wb3MtMSxlaT1lLnNraXBUcml2aWEoYy50ZXh0LHRlLmVuZCkrMTtyZXR1cm57cG9zOnhyLGVuZDplaX19ZS5yYW5nZU9mVHlwZVBhcmFtZXRlcnM9aF87ZnVuY3Rpb24gZW0oYyx0ZSx4cil7cmV0dXJuIHRlLnNraXBMaWJDaGVjayYmYy5pc0RlY2xhcmF0aW9uRmlsZXx8dGUuc2tpcERlZmF1bHRMaWJDaGVjayYmYy5oYXNOb0RlZmF1bHRMaWJ8fHhyLmlzU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QoYy5maWxlTmFtZSl9ZS5za2lwVHlwZUNoZWNraW5nPWVtO2Z1bmN0aW9uIHVvKGMsdGUpe3JldHVybiBjPT09dGV8fHR5cGVvZiBjPT1cIm9iamVjdFwiJiZjIT09bnVsbCYmdHlwZW9mIHRlPT1cIm9iamVjdFwiJiZ0ZSE9PW51bGwmJmUuZXF1YWxPd25Qcm9wZXJ0aWVzKGMsdGUsdW8pfWUuaXNKc29uRXF1YWw9dW87ZnVuY3Rpb24gVTEoYyl7dmFyIHRlO3N3aXRjaChjLmNoYXJDb2RlQXQoMSkpe2Nhc2UgOTg6Y2FzZSA2Njp0ZT0xO2JyZWFrO2Nhc2UgMTExOmNhc2UgNzk6dGU9MzticmVhaztjYXNlIDEyMDpjYXNlIDg4OnRlPTQ7YnJlYWs7ZGVmYXVsdDpmb3IodmFyIHhyPWMubGVuZ3RoLTEsZWk9MDtjLmNoYXJDb2RlQXQoZWkpPT09NDg7KWVpKys7cmV0dXJuIGMuc2xpY2UoZWkseHIpfHxcIjBcIn1mb3IodmFyIGJpPTIsRnQ9Yy5sZW5ndGgtMSxvdD0oRnQtYmkpKnRlLHhhPW5ldyBVaW50MTZBcnJheSgob3Q+Pj40KSsob3QmMTU/MTowKSksbW49RnQtMSxhbj0wO21uPj1iaTttbi0tLGFuKz10ZSl7dmFyIFRvPWFuPj4+NCxIbj1jLmNoYXJDb2RlQXQobW4pLHNzPUhuPD01Nz9Ibi00ODoxMCtIbi0oSG48PTcwPzY1Ojk3KSxjcz1zczw8KGFuJjE1KTt4YVtUb118PWNzO3ZhciB3cz1jcz4+PjE2O3dzJiYoeGFbVG8rMV18PXdzKX1mb3IodmFyIG51PVwiXCIsWG89eGEubGVuZ3RoLTEsamw9ITA7amw7KXt2YXIgWV89MDtqbD0hMTtmb3IodmFyIFRvPVhvO1RvPj0wO1RvLS0pe3ZhciBDZD1ZXzw8MTZ8eGFbVG9dLGJfPUNkLzEwfDA7eGFbVG9dPWJfLFlfPUNkLWJfKjEwLGJfJiYhamwmJihYbz1UbyxqbD0hMCl9bnU9WV8rbnV9cmV0dXJuIG51fWUucGFyc2VQc2V1ZG9CaWdJbnQ9VTE7ZnVuY3Rpb24gejEoYyl7dmFyIHRlPWMubmVnYXRpdmUseHI9Yy5iYXNlMTBWYWx1ZTtyZXR1cm4odGUmJnhyIT09XCIwXCI/XCItXCI6XCJcIikreHJ9ZS5wc2V1ZG9CaWdJbnRUb1N0cmluZz16MTtmdW5jdGlvbiBXMShjKXtyZXR1cm4hIShjLmZsYWdzJjE2Nzc3MjE2KXx8UyhjKXx8cTEoYyl8fFRjKGMpfHwhKFFlKGMpfHxRXyhjKSl9ZS5pc1ZhbGlkVHlwZU9ubHlBbGlhc1VzZVNpdGU9VzE7ZnVuY3Rpb24gUV8oYyl7cmV0dXJuIGUuaXNJZGVudGlmaWVyKGMpJiZlLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KGMucGFyZW50KSYmYy5wYXJlbnQubmFtZT09PWN9ZnVuY3Rpb24gVGMoYyl7Zm9yKDtjLmtpbmQ9PT03OXx8Yy5raW5kPT09MjA2OyljPWMucGFyZW50O2lmKGMua2luZCE9PTE2MilyZXR1cm4hMTtpZihnYyhjLnBhcmVudCwxMjgpKXJldHVybiEwO3ZhciB0ZT1jLnBhcmVudC5wYXJlbnQua2luZDtyZXR1cm4gdGU9PT0yNTh8fHRlPT09MTgyfWZ1bmN0aW9uIHExKGMpe2lmKGMua2luZCE9PTc5KXJldHVybiExO3ZhciB0ZT1lLmZpbmRBbmNlc3RvcihjLnBhcmVudCxmdW5jdGlvbih4cil7c3dpdGNoKHhyLmtpbmQpe2Nhc2UgMjkxOnJldHVybiEwO2Nhc2UgMjA2OmNhc2UgMjI4OnJldHVybiExO2RlZmF1bHQ6cmV0dXJuXCJxdWl0XCJ9fSk7cmV0dXJuKHRlPT1udWxsP3ZvaWQgMDp0ZS50b2tlbik9PT0xMTd8fCh0ZT09bnVsbD92b2lkIDA6dGUucGFyZW50LmtpbmQpPT09MjU4fWZ1bmN0aW9uIFZ2KGMpe3JldHVybiBlLmlzVHlwZVJlZmVyZW5jZU5vZGUoYykmJmUuaXNJZGVudGlmaWVyKGMudHlwZU5hbWUpfWUuaXNJZGVudGlmaWVyVHlwZVJlZmVyZW5jZT1WdjtmdW5jdGlvbiBWMShjLHRlKXtpZih0ZT09PXZvaWQgMCYmKHRlPWUuZXF1YXRlVmFsdWVzKSxjLmxlbmd0aDwyKXJldHVybiEwO2Zvcih2YXIgeHI9Y1swXSxlaT0xLGJpPWMubGVuZ3RoO2VpPGJpO2VpKyspe3ZhciBGdD1jW2VpXTtpZighdGUoeHIsRnQpKXJldHVybiExfXJldHVybiEwfWUuYXJyYXlJc0hvbW9nZW5lb3VzPVYxO2Z1bmN0aW9uIHptKGMsdGUpe3JldHVybiBjLnBvcz10ZSxjfWUuc2V0VGV4dFJhbmdlUG9zPXptO2Z1bmN0aW9uIEt2KGMsdGUpe3JldHVybiBjLmVuZD10ZSxjfWUuc2V0VGV4dFJhbmdlRW5kPUt2O2Z1bmN0aW9uIEd2KGMsdGUseHIpe3JldHVybiBLdih6bShjLHRlKSx4cil9ZS5zZXRUZXh0UmFuZ2VQb3NFbmQ9R3Y7ZnVuY3Rpb24gSzEoYyx0ZSx4cil7cmV0dXJuIEd2KGMsdGUsdGUreHIpfWUuc2V0VGV4dFJhbmdlUG9zV2lkdGg9SzE7ZnVuY3Rpb24gRzEoYyx0ZSl7cmV0dXJuIGMmJihjLmZsYWdzPXRlKSxjfWUuc2V0Tm9kZUZsYWdzPUcxO2Z1bmN0aW9uIHVjKGMsdGUpe3JldHVybiBjJiZ0ZSYmKGMucGFyZW50PXRlKSxjfWUuc2V0UGFyZW50PXVjO2Z1bmN0aW9uIEhkKGMsdGUpe2lmKGMpZm9yKHZhciB4cj0wLGVpPWM7eHI8ZWkubGVuZ3RoO3hyKyspe3ZhciBiaT1laVt4cl07dWMoYmksdGUpfXJldHVybiBjfWUuc2V0RWFjaFBhcmVudD1IZDtmdW5jdGlvbiBXbShjLHRlKXtpZighYylyZXR1cm4gYztyZXR1cm4gZS5mb3JFYWNoQ2hpbGRSZWN1cnNpdmVseShjLGUuaXNKU0RvY05vZGUoYyk/eHI6YmkpLGM7ZnVuY3Rpb24geHIoRnQsb3Qpe2lmKHRlJiZGdC5wYXJlbnQ9PT1vdClyZXR1cm5cInNraXBcIjt1YyhGdCxvdCl9ZnVuY3Rpb24gZWkoRnQpe2lmKGUuaGFzSlNEb2NOb2RlcyhGdCkpZm9yKHZhciBvdD0wLHhhPUZ0LmpzRG9jO290PHhhLmxlbmd0aDtvdCsrKXt2YXIgbW49eGFbb3RdO3hyKG1uLEZ0KSxlLmZvckVhY2hDaGlsZFJlY3Vyc2l2ZWx5KG1uLHhyKX19ZnVuY3Rpb24gYmkoRnQsb3Qpe3JldHVybiB4cihGdCxvdCl8fGVpKEZ0KX19ZS5zZXRQYXJlbnRSZWN1cnNpdmU9V207ZnVuY3Rpb24gSHYoYyl7cmV0dXJuIWUuaXNPbWl0dGVkRXhwcmVzc2lvbihjKX1mdW5jdGlvbiBIMShjKXtyZXR1cm4gZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oYykmJmUuZXZlcnkoYy5lbGVtZW50cyxIdil9ZS5pc1BhY2tlZEFycmF5TGl0ZXJhbD1IMTtmdW5jdGlvbiBYdihjKXtmb3IoZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQoYy5wYXJlbnQpOzspe3ZhciB0ZT1jLnBhcmVudDtpZihlLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24odGUpKXtjPXRlO2NvbnRpbnVlfWlmKGUuaXNFeHByZXNzaW9uU3RhdGVtZW50KHRlKXx8ZS5pc1ZvaWRFeHByZXNzaW9uKHRlKXx8ZS5pc0ZvclN0YXRlbWVudCh0ZSkmJih0ZS5pbml0aWFsaXplcj09PWN8fHRlLmluY3JlbWVudG9yPT09YykpcmV0dXJuITA7aWYoZS5pc0NvbW1hTGlzdEV4cHJlc3Npb24odGUpKXtpZihjIT09ZS5sYXN0KHRlLmVsZW1lbnRzKSlyZXR1cm4hMDtjPXRlO2NvbnRpbnVlfWlmKGUuaXNCaW5hcnlFeHByZXNzaW9uKHRlKSYmdGUub3BlcmF0b3JUb2tlbi5raW5kPT09Mjcpe2lmKGM9PT10ZS5sZWZ0KXJldHVybiEwO2M9dGU7Y29udGludWV9cmV0dXJuITF9fWUuZXhwcmVzc2lvblJlc3VsdElzVW51c2VkPVh2O2Z1bmN0aW9uIERfKGMpe3JldHVybiBlLnNvbWUoZS5pZ25vcmVkUGF0aHMsZnVuY3Rpb24odGUpe3JldHVybiBlLnN0cmluZ0NvbnRhaW5zKGMsdGUpfSl9ZS5jb250YWluc0lnbm9yZWRQYXRoPURfO2Z1bmN0aW9uIFgxKGMpe2lmKCEhYy5wYXJlbnQpe3N3aXRjaChjLmtpbmQpe2Nhc2UgMTYzOnZhciB0ZT1jLnBhcmVudDtyZXR1cm4gdGUua2luZD09PTE5MD92b2lkIDA6dGUudHlwZVBhcmFtZXRlcnM7Y2FzZSAxNjQ6cmV0dXJuIGMucGFyZW50LnBhcmFtZXRlcnM7Y2FzZSAxOTk6cmV0dXJuIGMucGFyZW50LnRlbXBsYXRlU3BhbnM7Y2FzZSAyMzM6cmV0dXJuIGMucGFyZW50LnRlbXBsYXRlU3BhbnM7Y2FzZSAxNjU6cmV0dXJuIGMucGFyZW50LmRlY29yYXRvcnM7Y2FzZSAyOTE6cmV0dXJuIGMucGFyZW50Lmhlcml0YWdlQ2xhdXNlc312YXIgeHI9Yy5wYXJlbnQ7aWYoZS5pc0pTRG9jVGFnKGMpKXJldHVybiBlLmlzSlNEb2NUeXBlTGl0ZXJhbChjLnBhcmVudCk/dm9pZCAwOmMucGFyZW50LnRhZ3M7c3dpdGNoKHhyLmtpbmQpe2Nhc2UgMTgyOmNhc2UgMjU4OnJldHVybiBlLmlzVHlwZUVsZW1lbnQoYyk/eHIubWVtYmVyczp2b2lkIDA7Y2FzZSAxODc6Y2FzZSAxODg6cmV0dXJuIHhyLnR5cGVzO2Nhc2UgMTg0OmNhc2UgMjA0OmNhc2UgMzUxOmNhc2UgMjY5OmNhc2UgMjczOnJldHVybiB4ci5lbGVtZW50cztjYXNlIDIwNTpjYXNlIDI4NjpyZXR1cm4geHIucHJvcGVydGllcztjYXNlIDIwODpjYXNlIDIwOTpyZXR1cm4gZS5pc1R5cGVOb2RlKGMpP3hyLnR5cGVBcmd1bWVudHM6eHIuZXhwcmVzc2lvbj09PWM/dm9pZCAwOnhyLmFyZ3VtZW50cztjYXNlIDI3ODpjYXNlIDI4MjpyZXR1cm4gZS5pc0pzeENoaWxkKGMpP3hyLmNoaWxkcmVuOnZvaWQgMDtjYXNlIDI4MDpjYXNlIDI3OTpyZXR1cm4gZS5pc1R5cGVOb2RlKGMpP3hyLnR5cGVBcmd1bWVudHM6dm9pZCAwO2Nhc2UgMjM1OmNhc2UgMjg5OmNhc2UgMjkwOmNhc2UgMjYyOnJldHVybiB4ci5zdGF0ZW1lbnRzO2Nhc2UgMjYzOnJldHVybiB4ci5jbGF1c2VzO2Nhc2UgMjU3OmNhc2UgMjI2OnJldHVybiBlLmlzQ2xhc3NFbGVtZW50KGMpP3hyLm1lbWJlcnM6dm9pZCAwO2Nhc2UgMjYwOnJldHVybiBlLmlzRW51bU1lbWJlcihjKT94ci5tZW1iZXJzOnZvaWQgMDtjYXNlIDMwNTpyZXR1cm4geHIuc3RhdGVtZW50c319fWUuZ2V0Q29udGFpbmluZ05vZGVBcnJheT1YMTtmdW5jdGlvbiBRMShjKXtpZighYy50eXBlUGFyYW1ldGVycyl7aWYoZS5zb21lKGMucGFyYW1ldGVycyxmdW5jdGlvbih4cil7cmV0dXJuIWl1KHhyKX0pKXJldHVybiEwO2lmKGMua2luZCE9PTIxNCl7dmFyIHRlPWUuZmlyc3RPclVuZGVmaW5lZChjLnBhcmFtZXRlcnMpO2lmKCEodGUmJlNmKHRlKSkpcmV0dXJuITB9fXJldHVybiExfWUuaGFzQ29udGV4dFNlbnNpdGl2ZVBhcmFtZXRlcnM9UTE7ZnVuY3Rpb24gWTEoYyl7cmV0dXJuIGM9PT1cIkluZmluaXR5XCJ8fGM9PT1cIi1JbmZpbml0eVwifHxjPT09XCJOYU5cIn1lLmlzSW5maW5pdHlPck5hTlN0cmluZz1ZMTtmdW5jdGlvbiBkaChjKXtyZXR1cm4gYy5raW5kPT09MjU0JiZjLnBhcmVudC5raW5kPT09MjkyfWUuaXNDYXRjaENsYXVzZVZhcmlhYmxlRGVjbGFyYXRpb249ZGg7ZnVuY3Rpb24gUXYoYyl7dmFyIHRlPWMudmFsdWVEZWNsYXJhdGlvbiYmamYoYy52YWx1ZURlY2xhcmF0aW9uKTtyZXR1cm4hIXRlJiYoZS5pc1BhcmFtZXRlcih0ZSl8fGRoKHRlKSl9ZS5pc1BhcmFtZXRlck9yQ2F0Y2hDbGF1c2VWYXJpYWJsZT1RdjtmdW5jdGlvbiAkcyhjKXtyZXR1cm4gYy5raW5kPT09MjEzfHxjLmtpbmQ9PT0yMTR9ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbk9yQXJyb3dGdW5jdGlvbj0kcztmdW5jdGlvbiBYZChjKXtyZXR1cm4gYy5yZXBsYWNlKC9cXCQvZ20sZnVuY3Rpb24oKXtyZXR1cm5cIlxcXFwkXCJ9KX1lLmVzY2FwZVNuaXBwZXRUZXh0PVhkO2Z1bmN0aW9uIFl2KGMpe3JldHVybigrYykudG9TdHJpbmcoKT09PWN9ZS5pc051bWVyaWNMaXRlcmFsTmFtZT1ZdjtmdW5jdGlvbiAkdihjLHRlLHhyLGVpKXtyZXR1cm4gZS5pc0lkZW50aWZpZXJUZXh0KGMsdGUpP2UuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGMpOiFlaSYmWXYoYykmJitjPj0wP2UuZmFjdG9yeS5jcmVhdGVOdW1lcmljTGl0ZXJhbCgrYyk6ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoYywhIXhyKX1lLmNyZWF0ZVByb3BlcnR5TmFtZU5vZGVGb3JJZGVudGlmaWVyT3JMaXRlcmFsPSR2O2Z1bmN0aW9uIFp2KGMpe3JldHVybiEhKGMuZmxhZ3MmMjYyMTQ0JiZjLmlzVGhpc1R5cGUpfWUuaXNUaGlzVHlwZVBhcmFtZXRlcj1adjtmdW5jdGlvbiBidShjKXt2YXIgdGU9MCx4cj0wLGVpPTAsYmk9MCxGdDsoZnVuY3Rpb24oYW4pe2FuW2FuLkJlZm9yZU5vZGVNb2R1bGVzPTBdPVwiQmVmb3JlTm9kZU1vZHVsZXNcIixhblthbi5Ob2RlTW9kdWxlcz0xXT1cIk5vZGVNb2R1bGVzXCIsYW5bYW4uU2NvcGU9Ml09XCJTY29wZVwiLGFuW2FuLlBhY2thZ2VDb250ZW50PTNdPVwiUGFja2FnZUNvbnRlbnRcIn0pKEZ0fHwoRnQ9e30pKTtmb3IodmFyIG90PTAseGE9MCxtbj0wO3hhPj0wOylzd2l0Y2gob3Q9eGEseGE9Yy5pbmRleE9mKFwiL1wiLG90KzEpLG1uKXtjYXNlIDA6Yy5pbmRleE9mKGUubm9kZU1vZHVsZXNQYXRoUGFydCxvdCk9PT1vdCYmKHRlPW90LHhyPXhhLG1uPTEpO2JyZWFrO2Nhc2UgMTpjYXNlIDI6bW49PT0xJiZjLmNoYXJBdChvdCsxKT09PVwiQFwiP21uPTI6KGVpPXhhLG1uPTMpO2JyZWFrO2Nhc2UgMzpjLmluZGV4T2YoZS5ub2RlTW9kdWxlc1BhdGhQYXJ0LG90KT09PW90P21uPTE6bW49MzticmVha31yZXR1cm4gYmk9b3QsbW4+MT97dG9wTGV2ZWxOb2RlTW9kdWxlc0luZGV4OnRlLHRvcExldmVsUGFja2FnZU5hbWVJbmRleDp4cixwYWNrYWdlUm9vdEluZGV4OmVpLGZpbGVOYW1lSW5kZXg6Yml9OnZvaWQgMH1lLmdldE5vZGVNb2R1bGVQYXRoUGFydHM9YnU7ZnVuY3Rpb24gJDEoYyl7dmFyIHRlO3JldHVybiBjLmtpbmQ9PT0zNDA/KHRlPWMudHlwZUV4cHJlc3Npb24pPT09bnVsbHx8dGU9PT12b2lkIDA/dm9pZCAwOnRlLnR5cGU6Yy50eXBlfWUuZ2V0UGFyYW1ldGVyVHlwZU5vZGU9JDF9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKCl7dmFyIEMsdyxCLEUsUTtyZXR1cm57Y3JlYXRlQmFzZVNvdXJjZUZpbGVOb2RlOmxlLGNyZWF0ZUJhc2VJZGVudGlmaWVyTm9kZTpOLGNyZWF0ZUJhc2VQcml2YXRlSWRlbnRpZmllck5vZGU6cCxjcmVhdGVCYXNlVG9rZW5Ob2RlOm0sY3JlYXRlQmFzZU5vZGU6R307ZnVuY3Rpb24gbGUob2Upe3JldHVybiBuZXcoUXx8KFE9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0U291cmNlRmlsZUNvbnN0cnVjdG9yKCkpKShvZSwtMSwtMSl9ZnVuY3Rpb24gTihvZSl7cmV0dXJuIG5ldyhCfHwoQj1lLm9iamVjdEFsbG9jYXRvci5nZXRJZGVudGlmaWVyQ29uc3RydWN0b3IoKSkpKG9lLC0xLC0xKX1mdW5jdGlvbiBwKG9lKXtyZXR1cm4gbmV3KEV8fChFPWUub2JqZWN0QWxsb2NhdG9yLmdldFByaXZhdGVJZGVudGlmaWVyQ29uc3RydWN0b3IoKSkpKG9lLC0xLC0xKX1mdW5jdGlvbiBtKG9lKXtyZXR1cm4gbmV3KHd8fCh3PWUub2JqZWN0QWxsb2NhdG9yLmdldFRva2VuQ29uc3RydWN0b3IoKSkpKG9lLC0xLC0xKX1mdW5jdGlvbiBHKG9lKXtyZXR1cm4gbmV3KEN8fChDPWUub2JqZWN0QWxsb2NhdG9yLmdldE5vZGVDb25zdHJ1Y3RvcigpKSkob2UsLTEsLTEpfX1lLmNyZWF0ZUJhc2VOb2RlRmFjdG9yeT1hfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShDKXt2YXIgdyxCO3JldHVybntnZXRQYXJlbnRoZXNpemVMZWZ0U2lkZU9mQmluYXJ5Rm9yT3BlcmF0b3I6RSxnZXRQYXJlbnRoZXNpemVSaWdodFNpZGVPZkJpbmFyeUZvck9wZXJhdG9yOlEscGFyZW50aGVzaXplTGVmdFNpZGVPZkJpbmFyeTpHLHBhcmVudGhlc2l6ZVJpZ2h0U2lkZU9mQmluYXJ5Om9lLHBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkNvbXB1dGVkUHJvcGVydHlOYW1lOmYscGFyZW50aGVzaXplQ29uZGl0aW9uT2ZDb25kaXRpb25hbEV4cHJlc3Npb246VCxwYXJlbnRoZXNpemVCcmFuY2hPZkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpLLHBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkV4cG9ydERlZmF1bHQ6YixwYXJlbnRoZXNpemVFeHByZXNzaW9uT2ZOZXc6c2UscGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2VzczpKLHBhcmVudGhlc2l6ZU9wZXJhbmRPZlBvc3RmaXhVbmFyeTppZSxwYXJlbnRoZXNpemVPcGVyYW5kT2ZQcmVmaXhVbmFyeTpSLHBhcmVudGhlc2l6ZUV4cHJlc3Npb25zT2ZDb21tYURlbGltaXRlZExpc3Q6cSxwYXJlbnRoZXNpemVFeHByZXNzaW9uRm9yRGlzYWxsb3dlZENvbW1hOk8scGFyZW50aGVzaXplRXhwcmVzc2lvbk9mRXhwcmVzc2lvblN0YXRlbWVudDp2ZSxwYXJlbnRoZXNpemVDb25jaXNlQm9keU9mQXJyb3dGdW5jdGlvbjplZSxwYXJlbnRoZXNpemVDaGVja1R5cGVPZkNvbmRpdGlvbmFsVHlwZTpoZSxwYXJlbnRoZXNpemVFeHRlbmRzVHlwZU9mQ29uZGl0aW9uYWxUeXBlOkYscGFyZW50aGVzaXplQ29uc3RpdHVlbnRUeXBlc09mVW5pb25UeXBlOlgscGFyZW50aGVzaXplQ29uc3RpdHVlbnRUeXBlT2ZVbmlvblR5cGU6eCxwYXJlbnRoZXNpemVDb25zdGl0dWVudFR5cGVzT2ZJbnRlcnNlY3Rpb25UeXBlOkEscGFyZW50aGVzaXplQ29uc3RpdHVlbnRUeXBlT2ZJbnRlcnNlY3Rpb25UeXBlOiQscGFyZW50aGVzaXplT3BlcmFuZE9mVHlwZU9wZXJhdG9yOnkscGFyZW50aGVzaXplT3BlcmFuZE9mUmVhZG9ubHlUeXBlT3BlcmF0b3I6VixwYXJlbnRoZXNpemVOb25BcnJheVR5cGVPZlBvc3RmaXhUeXBlOkwscGFyZW50aGVzaXplRWxlbWVudFR5cGVzT2ZUdXBsZVR5cGU6UCxwYXJlbnRoZXNpemVFbGVtZW50VHlwZU9mVHVwbGVUeXBlOmsscGFyZW50aGVzaXplVHlwZU9mT3B0aW9uYWxUeXBlOlUscGFyZW50aGVzaXplVHlwZUFyZ3VtZW50czpJLHBhcmVudGhlc2l6ZUxlYWRpbmdUeXBlQXJndW1lbnQ6an07ZnVuY3Rpb24gRShsKXt3fHwodz1uZXcgZS5NYXApO3ZhciBkPXcuZ2V0KGwpO3JldHVybiBkfHwoZD1mdW5jdGlvbihEKXtyZXR1cm4gRyhsLEQpfSx3LnNldChsLGQpKSxkfWZ1bmN0aW9uIFEobCl7Qnx8KEI9bmV3IGUuTWFwKTt2YXIgZD1CLmdldChsKTtyZXR1cm4gZHx8KGQ9ZnVuY3Rpb24oRCl7cmV0dXJuIG9lKGwsdm9pZCAwLEQpfSxCLnNldChsLGQpKSxkfWZ1bmN0aW9uIGxlKGwsZCxELGZlKXt2YXIgZz1lLmdldE9wZXJhdG9yUHJlY2VkZW5jZSgyMjEsbCksbmU9ZS5nZXRPcGVyYXRvckFzc29jaWF0aXZpdHkoMjIxLGwpLHVlPWUuc2tpcFBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9ucyhkKTtpZighRCYmZC5raW5kPT09MjE0JiZnPjMpcmV0dXJuITA7dmFyIFdlPWUuZ2V0RXhwcmVzc2lvblByZWNlZGVuY2UodWUpO3N3aXRjaChlLmNvbXBhcmVWYWx1ZXMoV2UsZykpe2Nhc2UtMTpyZXR1cm4hKCFEJiZuZT09PTEmJmQua2luZD09PTIyNCk7Y2FzZSAxOnJldHVybiExO2Nhc2UgMDppZihEKXJldHVybiBuZT09PTE7aWYoZS5pc0JpbmFyeUV4cHJlc3Npb24odWUpJiZ1ZS5vcGVyYXRvclRva2VuLmtpbmQ9PT1sKXtpZihOKGwpKXJldHVybiExO2lmKGw9PT0zOSl7dmFyIEZlPWZlP3AoZmUpOjA7aWYoZS5pc0xpdGVyYWxLaW5kKEZlKSYmRmU9PT1wKHVlKSlyZXR1cm4hMX19dmFyIFo9ZS5nZXRFeHByZXNzaW9uQXNzb2NpYXRpdml0eSh1ZSk7cmV0dXJuIFo9PT0wfX1mdW5jdGlvbiBOKGwpe3JldHVybiBsPT09NDF8fGw9PT01MXx8bD09PTUwfHxsPT09NTJ9ZnVuY3Rpb24gcChsKXtpZihsPWUuc2tpcFBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9ucyhsKSxlLmlzTGl0ZXJhbEtpbmQobC5raW5kKSlyZXR1cm4gbC5raW5kO2lmKGwua2luZD09PTIyMSYmbC5vcGVyYXRvclRva2VuLmtpbmQ9PT0zOSl7aWYobC5jYWNoZWRMaXRlcmFsS2luZCE9PXZvaWQgMClyZXR1cm4gbC5jYWNoZWRMaXRlcmFsS2luZDt2YXIgZD1wKGwubGVmdCksRD1lLmlzTGl0ZXJhbEtpbmQoZCkmJmQ9PT1wKGwucmlnaHQpP2Q6MDtyZXR1cm4gbC5jYWNoZWRMaXRlcmFsS2luZD1ELER9cmV0dXJuIDB9ZnVuY3Rpb24gbShsLGQsRCxmZSl7dmFyIGc9ZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zKGQpO3JldHVybiBnLmtpbmQ9PT0yMTI/ZDpsZShsLGQsRCxmZSk/Qy5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihkKTpkfWZ1bmN0aW9uIEcobCxkKXtyZXR1cm4gbShsLGQsITApfWZ1bmN0aW9uIG9lKGwsZCxEKXtyZXR1cm4gbShsLEQsITEsZCl9ZnVuY3Rpb24gZihsKXtyZXR1cm4gZS5pc0NvbW1hU2VxdWVuY2UobCk/Qy5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihsKTpsfWZ1bmN0aW9uIFQobCl7dmFyIGQ9ZS5nZXRPcGVyYXRvclByZWNlZGVuY2UoMjIyLDU3KSxEPWUuc2tpcFBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9ucyhsKSxmZT1lLmdldEV4cHJlc3Npb25QcmVjZWRlbmNlKEQpO3JldHVybiBlLmNvbXBhcmVWYWx1ZXMoZmUsZCkhPT0xP0MuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24obCk6bH1mdW5jdGlvbiBLKGwpe3ZhciBkPWUuc2tpcFBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9ucyhsKTtyZXR1cm4gZS5pc0NvbW1hU2VxdWVuY2UoZCk/Qy5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihsKTpsfWZ1bmN0aW9uIGIobCl7dmFyIGQ9ZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zKGwpLEQ9ZS5pc0NvbW1hU2VxdWVuY2UoZCk7aWYoIUQpc3dpdGNoKGUuZ2V0TGVmdG1vc3RFeHByZXNzaW9uKGQsITEpLmtpbmQpe2Nhc2UgMjI2OmNhc2UgMjEzOkQ9ITB9cmV0dXJuIEQ/Qy5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihsKTpsfWZ1bmN0aW9uIHNlKGwpe3ZhciBkPWUuZ2V0TGVmdG1vc3RFeHByZXNzaW9uKGwsITApO3N3aXRjaChkLmtpbmQpe2Nhc2UgMjA4OnJldHVybiBDLmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGwpO2Nhc2UgMjA5OnJldHVybiBkLmFyZ3VtZW50cz9sOkMuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24obCl9cmV0dXJuIEoobCl9ZnVuY3Rpb24gSihsKXt2YXIgZD1lLnNraXBQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbnMobCk7cmV0dXJuIGUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKGQpJiYoZC5raW5kIT09MjA5fHxkLmFyZ3VtZW50cyk/bDplLnNldFRleHRSYW5nZShDLmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGwpLGwpfWZ1bmN0aW9uIGllKGwpe3JldHVybiBlLmlzTGVmdEhhbmRTaWRlRXhwcmVzc2lvbihsKT9sOmUuc2V0VGV4dFJhbmdlKEMuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24obCksbCl9ZnVuY3Rpb24gUihsKXtyZXR1cm4gZS5pc1VuYXJ5RXhwcmVzc2lvbihsKT9sOmUuc2V0VGV4dFJhbmdlKEMuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24obCksbCl9ZnVuY3Rpb24gcShsKXt2YXIgZD1lLnNhbWVNYXAobCxPKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UoQy5jcmVhdGVOb2RlQXJyYXkoZCxsLmhhc1RyYWlsaW5nQ29tbWEpLGwpfWZ1bmN0aW9uIE8obCl7dmFyIGQ9ZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zKGwpLEQ9ZS5nZXRFeHByZXNzaW9uUHJlY2VkZW5jZShkKSxmZT1lLmdldE9wZXJhdG9yUHJlY2VkZW5jZSgyMjEsMjcpO3JldHVybiBEPmZlP2w6ZS5zZXRUZXh0UmFuZ2UoQy5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihsKSxsKX1mdW5jdGlvbiB2ZShsKXt2YXIgZD1lLnNraXBQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbnMobCk7aWYoZS5pc0NhbGxFeHByZXNzaW9uKGQpKXt2YXIgRD1kLmV4cHJlc3Npb24sZmU9ZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zKEQpLmtpbmQ7aWYoZmU9PT0yMTN8fGZlPT09MjE0KXt2YXIgZz1DLnVwZGF0ZUNhbGxFeHByZXNzaW9uKGQsZS5zZXRUZXh0UmFuZ2UoQy5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihEKSxEKSxkLnR5cGVBcmd1bWVudHMsZC5hcmd1bWVudHMpO3JldHVybiBDLnJlc3RvcmVPdXRlckV4cHJlc3Npb25zKGwsZyw4KX19dmFyIG5lPWUuZ2V0TGVmdG1vc3RFeHByZXNzaW9uKGQsITEpLmtpbmQ7cmV0dXJuIG5lPT09MjA1fHxuZT09PTIxMz9lLnNldFRleHRSYW5nZShDLmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGwpLGwpOmx9ZnVuY3Rpb24gZWUobCl7cmV0dXJuIWUuaXNCbG9jayhsKSYmKGUuaXNDb21tYVNlcXVlbmNlKGwpfHxlLmdldExlZnRtb3N0RXhwcmVzc2lvbihsLCExKS5raW5kPT09MjA1KT9lLnNldFRleHRSYW5nZShDLmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGwpLGwpOmx9ZnVuY3Rpb24gaGUobCl7c3dpdGNoKGwua2luZCl7Y2FzZSAxNzk6Y2FzZSAxODA6Y2FzZSAxODk6cmV0dXJuIEMuY3JlYXRlUGFyZW50aGVzaXplZFR5cGUobCl9cmV0dXJuIGx9ZnVuY3Rpb24gRihsKXtzd2l0Y2gobC5raW5kKXtjYXNlIDE4OTpyZXR1cm4gQy5jcmVhdGVQYXJlbnRoZXNpemVkVHlwZShsKX1yZXR1cm4gbH1mdW5jdGlvbiB4KGwpe3N3aXRjaChsLmtpbmQpe2Nhc2UgMTg3OmNhc2UgMTg4OnJldHVybiBDLmNyZWF0ZVBhcmVudGhlc2l6ZWRUeXBlKGwpfXJldHVybiBoZShsKX1mdW5jdGlvbiBYKGwpe3JldHVybiBDLmNyZWF0ZU5vZGVBcnJheShlLnNhbWVNYXAobCx4KSl9ZnVuY3Rpb24gJChsKXtzd2l0Y2gobC5raW5kKXtjYXNlIDE4NzpjYXNlIDE4ODpyZXR1cm4gQy5jcmVhdGVQYXJlbnRoZXNpemVkVHlwZShsKX1yZXR1cm4geChsKX1mdW5jdGlvbiBBKGwpe3JldHVybiBDLmNyZWF0ZU5vZGVBcnJheShlLnNhbWVNYXAobCwkKSl9ZnVuY3Rpb24geShsKXtzd2l0Y2gobC5raW5kKXtjYXNlIDE4ODpyZXR1cm4gQy5jcmVhdGVQYXJlbnRoZXNpemVkVHlwZShsKX1yZXR1cm4gJChsKX1mdW5jdGlvbiBWKGwpe3N3aXRjaChsLmtpbmQpe2Nhc2UgMTkzOnJldHVybiBDLmNyZWF0ZVBhcmVudGhlc2l6ZWRUeXBlKGwpfXJldHVybiB5KGwpfWZ1bmN0aW9uIEwobCl7c3dpdGNoKGwua2luZCl7Y2FzZSAxOTA6Y2FzZSAxOTM6Y2FzZSAxODE6cmV0dXJuIEMuY3JlYXRlUGFyZW50aGVzaXplZFR5cGUobCl9cmV0dXJuIHkobCl9ZnVuY3Rpb24gUChsKXtyZXR1cm4gQy5jcmVhdGVOb2RlQXJyYXkoZS5zYW1lTWFwKGwsaykpfWZ1bmN0aW9uIGsobCl7cmV0dXJuIFkobCk/Qy5jcmVhdGVQYXJlbnRoZXNpemVkVHlwZShsKTpsfWZ1bmN0aW9uIFkobCl7cmV0dXJuIGUuaXNKU0RvY051bGxhYmxlVHlwZShsKT9sLnBvc3RmaXg6ZS5pc05hbWVkVHVwbGVNZW1iZXIobCl8fGUuaXNGdW5jdGlvblR5cGVOb2RlKGwpfHxlLmlzQ29uc3RydWN0b3JUeXBlTm9kZShsKXx8ZS5pc1R5cGVPcGVyYXRvck5vZGUobCk/WShsLnR5cGUpOmUuaXNDb25kaXRpb25hbFR5cGVOb2RlKGwpP1kobC5mYWxzZVR5cGUpOmUuaXNVbmlvblR5cGVOb2RlKGwpfHxlLmlzSW50ZXJzZWN0aW9uVHlwZU5vZGUobCk/WShlLmxhc3QobC50eXBlcykpOmUuaXNJbmZlclR5cGVOb2RlKGwpPyEhbC50eXBlUGFyYW1ldGVyLmNvbnN0cmFpbnQmJlkobC50eXBlUGFyYW1ldGVyLmNvbnN0cmFpbnQpOiExfWZ1bmN0aW9uIFUobCl7cmV0dXJuIFkobCk/Qy5jcmVhdGVQYXJlbnRoZXNpemVkVHlwZShsKTpMKGwpfWZ1bmN0aW9uIGoobCl7cmV0dXJuIGUuaXNGdW5jdGlvbk9yQ29uc3RydWN0b3JUeXBlTm9kZShsKSYmbC50eXBlUGFyYW1ldGVycz9DLmNyZWF0ZVBhcmVudGhlc2l6ZWRUeXBlKGwpOmx9ZnVuY3Rpb24gSChsLGQpe3JldHVybiBkPT09MD9qKGwpOmx9ZnVuY3Rpb24gSShsKXtpZihlLnNvbWUobCkpcmV0dXJuIEMuY3JlYXRlTm9kZUFycmF5KGUuc2FtZU1hcChsLEgpKX19ZS5jcmVhdGVQYXJlbnRoZXNpemVyUnVsZXM9YSxlLm51bGxQYXJlbnRoZXNpemVyUnVsZXM9e2dldFBhcmVudGhlc2l6ZUxlZnRTaWRlT2ZCaW5hcnlGb3JPcGVyYXRvcjpmdW5jdGlvbihDKXtyZXR1cm4gZS5pZGVudGl0eX0sZ2V0UGFyZW50aGVzaXplUmlnaHRTaWRlT2ZCaW5hcnlGb3JPcGVyYXRvcjpmdW5jdGlvbihDKXtyZXR1cm4gZS5pZGVudGl0eX0scGFyZW50aGVzaXplTGVmdFNpZGVPZkJpbmFyeTpmdW5jdGlvbihDLHcpe3JldHVybiB3fSxwYXJlbnRoZXNpemVSaWdodFNpZGVPZkJpbmFyeTpmdW5jdGlvbihDLHcsQil7cmV0dXJuIEJ9LHBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkNvbXB1dGVkUHJvcGVydHlOYW1lOmUuaWRlbnRpdHkscGFyZW50aGVzaXplQ29uZGl0aW9uT2ZDb25kaXRpb25hbEV4cHJlc3Npb246ZS5pZGVudGl0eSxwYXJlbnRoZXNpemVCcmFuY2hPZkNvbmRpdGlvbmFsRXhwcmVzc2lvbjplLmlkZW50aXR5LHBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkV4cG9ydERlZmF1bHQ6ZS5pZGVudGl0eSxwYXJlbnRoZXNpemVFeHByZXNzaW9uT2ZOZXc6ZnVuY3Rpb24oQyl7cmV0dXJuIGUuY2FzdChDLGUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKX0scGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2VzczpmdW5jdGlvbihDKXtyZXR1cm4gZS5jYXN0KEMsZS5pc0xlZnRIYW5kU2lkZUV4cHJlc3Npb24pfSxwYXJlbnRoZXNpemVPcGVyYW5kT2ZQb3N0Zml4VW5hcnk6ZnVuY3Rpb24oQyl7cmV0dXJuIGUuY2FzdChDLGUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKX0scGFyZW50aGVzaXplT3BlcmFuZE9mUHJlZml4VW5hcnk6ZnVuY3Rpb24oQyl7cmV0dXJuIGUuY2FzdChDLGUuaXNVbmFyeUV4cHJlc3Npb24pfSxwYXJlbnRoZXNpemVFeHByZXNzaW9uc09mQ29tbWFEZWxpbWl0ZWRMaXN0OmZ1bmN0aW9uKEMpe3JldHVybiBlLmNhc3QoQyxlLmlzTm9kZUFycmF5KX0scGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYTplLmlkZW50aXR5LHBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkV4cHJlc3Npb25TdGF0ZW1lbnQ6ZS5pZGVudGl0eSxwYXJlbnRoZXNpemVDb25jaXNlQm9keU9mQXJyb3dGdW5jdGlvbjplLmlkZW50aXR5LHBhcmVudGhlc2l6ZUNoZWNrVHlwZU9mQ29uZGl0aW9uYWxUeXBlOmUuaWRlbnRpdHkscGFyZW50aGVzaXplRXh0ZW5kc1R5cGVPZkNvbmRpdGlvbmFsVHlwZTplLmlkZW50aXR5LHBhcmVudGhlc2l6ZUNvbnN0aXR1ZW50VHlwZXNPZlVuaW9uVHlwZTpmdW5jdGlvbihDKXtyZXR1cm4gZS5jYXN0KEMsZS5pc05vZGVBcnJheSl9LHBhcmVudGhlc2l6ZUNvbnN0aXR1ZW50VHlwZU9mVW5pb25UeXBlOmUuaWRlbnRpdHkscGFyZW50aGVzaXplQ29uc3RpdHVlbnRUeXBlc09mSW50ZXJzZWN0aW9uVHlwZTpmdW5jdGlvbihDKXtyZXR1cm4gZS5jYXN0KEMsZS5pc05vZGVBcnJheSl9LHBhcmVudGhlc2l6ZUNvbnN0aXR1ZW50VHlwZU9mSW50ZXJzZWN0aW9uVHlwZTplLmlkZW50aXR5LHBhcmVudGhlc2l6ZU9wZXJhbmRPZlR5cGVPcGVyYXRvcjplLmlkZW50aXR5LHBhcmVudGhlc2l6ZU9wZXJhbmRPZlJlYWRvbmx5VHlwZU9wZXJhdG9yOmUuaWRlbnRpdHkscGFyZW50aGVzaXplTm9uQXJyYXlUeXBlT2ZQb3N0Zml4VHlwZTplLmlkZW50aXR5LHBhcmVudGhlc2l6ZUVsZW1lbnRUeXBlc09mVHVwbGVUeXBlOmZ1bmN0aW9uKEMpe3JldHVybiBlLmNhc3QoQyxlLmlzTm9kZUFycmF5KX0scGFyZW50aGVzaXplRWxlbWVudFR5cGVPZlR1cGxlVHlwZTplLmlkZW50aXR5LHBhcmVudGhlc2l6ZVR5cGVPZk9wdGlvbmFsVHlwZTplLmlkZW50aXR5LHBhcmVudGhlc2l6ZVR5cGVBcmd1bWVudHM6ZnVuY3Rpb24oQyl7cmV0dXJuIEMmJmUuY2FzdChDLGUuaXNOb2RlQXJyYXkpfSxwYXJlbnRoZXNpemVMZWFkaW5nVHlwZUFyZ3VtZW50OmUuaWRlbnRpdHl9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShDKXtyZXR1cm57Y29udmVydFRvRnVuY3Rpb25CbG9jazp3LGNvbnZlcnRUb0Z1bmN0aW9uRXhwcmVzc2lvbjpCLGNvbnZlcnRUb0FycmF5QXNzaWdubWVudEVsZW1lbnQ6RSxjb252ZXJ0VG9PYmplY3RBc3NpZ25tZW50RWxlbWVudDpRLGNvbnZlcnRUb0Fzc2lnbm1lbnRQYXR0ZXJuOmxlLGNvbnZlcnRUb09iamVjdEFzc2lnbm1lbnRQYXR0ZXJuOk4sY29udmVydFRvQXJyYXlBc3NpZ25tZW50UGF0dGVybjpwLGNvbnZlcnRUb0Fzc2lnbm1lbnRFbGVtZW50VGFyZ2V0Om19O2Z1bmN0aW9uIHcoRyxvZSl7aWYoZS5pc0Jsb2NrKEcpKXJldHVybiBHO3ZhciBmPUMuY3JlYXRlUmV0dXJuU3RhdGVtZW50KEcpO2Uuc2V0VGV4dFJhbmdlKGYsRyk7dmFyIFQ9Qy5jcmVhdGVCbG9jayhbZl0sb2UpO3JldHVybiBlLnNldFRleHRSYW5nZShULEcpLFR9ZnVuY3Rpb24gQihHKXtpZighRy5ib2R5KXJldHVybiBlLkRlYnVnLmZhaWwoXCJDYW5ub3QgY29udmVydCBhIEZ1bmN0aW9uRGVjbGFyYXRpb24gd2l0aG91dCBhIGJvZHlcIik7dmFyIG9lPUMuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKEcubW9kaWZpZXJzLEcuYXN0ZXJpc2tUb2tlbixHLm5hbWUsRy50eXBlUGFyYW1ldGVycyxHLnBhcmFtZXRlcnMsRy50eXBlLEcuYm9keSk7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKG9lLEcpLGUuc2V0VGV4dFJhbmdlKG9lLEcpLGUuZ2V0U3RhcnRzT25OZXdMaW5lKEcpJiZlLnNldFN0YXJ0c09uTmV3TGluZShvZSwhMCksb2V9ZnVuY3Rpb24gRShHKXtpZihlLmlzQmluZGluZ0VsZW1lbnQoRykpe2lmKEcuZG90RG90RG90VG9rZW4pcmV0dXJuIGUuRGVidWcuYXNzZXJ0Tm9kZShHLm5hbWUsZS5pc0lkZW50aWZpZXIpLGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEMuY3JlYXRlU3ByZWFkRWxlbWVudChHLm5hbWUpLEcpLEcpO3ZhciBvZT1tKEcubmFtZSk7cmV0dXJuIEcuaW5pdGlhbGl6ZXI/ZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoQy5jcmVhdGVBc3NpZ25tZW50KG9lLEcuaW5pdGlhbGl6ZXIpLEcpLEcpOm9lfXJldHVybiBlLmNhc3QoRyxlLmlzRXhwcmVzc2lvbil9ZnVuY3Rpb24gUShHKXtpZihlLmlzQmluZGluZ0VsZW1lbnQoRykpe2lmKEcuZG90RG90RG90VG9rZW4pcmV0dXJuIGUuRGVidWcuYXNzZXJ0Tm9kZShHLm5hbWUsZS5pc0lkZW50aWZpZXIpLGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEMuY3JlYXRlU3ByZWFkQXNzaWdubWVudChHLm5hbWUpLEcpLEcpO2lmKEcucHJvcGVydHlOYW1lKXt2YXIgb2U9bShHLm5hbWUpO3JldHVybiBlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShDLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChHLnByb3BlcnR5TmFtZSxHLmluaXRpYWxpemVyP0MuY3JlYXRlQXNzaWdubWVudChvZSxHLmluaXRpYWxpemVyKTpvZSksRyksRyl9cmV0dXJuIGUuRGVidWcuYXNzZXJ0Tm9kZShHLm5hbWUsZS5pc0lkZW50aWZpZXIpLGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEMuY3JlYXRlU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KEcubmFtZSxHLmluaXRpYWxpemVyKSxHKSxHKX1yZXR1cm4gZS5jYXN0KEcsZS5pc09iamVjdExpdGVyYWxFbGVtZW50TGlrZSl9ZnVuY3Rpb24gbGUoRyl7c3dpdGNoKEcua2luZCl7Y2FzZSAyMDI6Y2FzZSAyMDQ6cmV0dXJuIHAoRyk7Y2FzZSAyMDE6Y2FzZSAyMDU6cmV0dXJuIE4oRyl9fWZ1bmN0aW9uIE4oRyl7cmV0dXJuIGUuaXNPYmplY3RCaW5kaW5nUGF0dGVybihHKT9lLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShDLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKGUubWFwKEcuZWxlbWVudHMsUSkpLEcpLEcpOmUuY2FzdChHLGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbil9ZnVuY3Rpb24gcChHKXtyZXR1cm4gZS5pc0FycmF5QmluZGluZ1BhdHRlcm4oRyk/ZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoQy5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKGUubWFwKEcuZWxlbWVudHMsRSkpLEcpLEcpOmUuY2FzdChHLGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKX1mdW5jdGlvbiBtKEcpe3JldHVybiBlLmlzQmluZGluZ1BhdHRlcm4oRyk/bGUoRyk6ZS5jYXN0KEcsZS5pc0V4cHJlc3Npb24pfX1lLmNyZWF0ZU5vZGVDb252ZXJ0ZXJzPWEsZS5udWxsTm9kZUNvbnZlcnRlcnM9e2NvbnZlcnRUb0Z1bmN0aW9uQmxvY2s6ZS5ub3RJbXBsZW1lbnRlZCxjb252ZXJ0VG9GdW5jdGlvbkV4cHJlc3Npb246ZS5ub3RJbXBsZW1lbnRlZCxjb252ZXJ0VG9BcnJheUFzc2lnbm1lbnRFbGVtZW50OmUubm90SW1wbGVtZW50ZWQsY29udmVydFRvT2JqZWN0QXNzaWdubWVudEVsZW1lbnQ6ZS5ub3RJbXBsZW1lbnRlZCxjb252ZXJ0VG9Bc3NpZ25tZW50UGF0dGVybjplLm5vdEltcGxlbWVudGVkLGNvbnZlcnRUb09iamVjdEFzc2lnbm1lbnRQYXR0ZXJuOmUubm90SW1wbGVtZW50ZWQsY29udmVydFRvQXJyYXlBc3NpZ25tZW50UGF0dGVybjplLm5vdEltcGxlbWVudGVkLGNvbnZlcnRUb0Fzc2lnbm1lbnRFbGVtZW50VGFyZ2V0OmUubm90SW1wbGVtZW50ZWR9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE9MCxDOyhmdW5jdGlvbihYKXtYW1guTm9uZT0wXT1cIk5vbmVcIixYW1guTm9QYXJlbnRoZXNpemVyUnVsZXM9MV09XCJOb1BhcmVudGhlc2l6ZXJSdWxlc1wiLFhbWC5Ob05vZGVDb252ZXJ0ZXJzPTJdPVwiTm9Ob2RlQ29udmVydGVyc1wiLFhbWC5Ob0luZGVudGF0aW9uT25GcmVzaFByb3BlcnR5QWNjZXNzPTRdPVwiTm9JbmRlbnRhdGlvbk9uRnJlc2hQcm9wZXJ0eUFjY2Vzc1wiLFhbWC5Ob09yaWdpbmFsTm9kZT04XT1cIk5vT3JpZ2luYWxOb2RlXCJ9KShDPWUuTm9kZUZhY3RvcnlGbGFnc3x8KGUuTm9kZUZhY3RvcnlGbGFncz17fSkpO2Z1bmN0aW9uIHcoWCwkKXt2YXIgQT1YJjg/QjpFLHk9ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIFgmMT9lLm51bGxQYXJlbnRoZXNpemVyUnVsZXM6ZS5jcmVhdGVQYXJlbnRoZXNpemVyUnVsZXMoZyl9KSxWPWUubWVtb2l6ZShmdW5jdGlvbigpe3JldHVybiBYJjI/ZS5udWxsTm9kZUNvbnZlcnRlcnM6ZS5jcmVhdGVOb2RlQ29udmVydGVycyhnKX0pLEw9ZS5tZW1vaXplT25lKGZ1bmN0aW9uKF8pe3JldHVybiBmdW5jdGlvbihXLFRlKXtyZXR1cm4ganIoVyxfLFRlKX19KSxQPWUubWVtb2l6ZU9uZShmdW5jdGlvbihfKXtyZXR1cm4gZnVuY3Rpb24oVyl7cmV0dXJuIFB0KF8sVyl9fSksaz1lLm1lbW9pemVPbmUoZnVuY3Rpb24oXyl7cmV0dXJuIGZ1bmN0aW9uKFcpe3JldHVybiB1YShXLF8pfX0pLFk9ZS5tZW1vaXplT25lKGZ1bmN0aW9uKF8pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBabChfKX19KSxVPWUubWVtb2l6ZU9uZShmdW5jdGlvbihfKXtyZXR1cm4gZnVuY3Rpb24oVyl7cmV0dXJuIGtsKF8sVyl9fSksaj1lLm1lbW9pemVPbmUoZnVuY3Rpb24oXyl7cmV0dXJuIGZ1bmN0aW9uKFcsVGUpe3JldHVybiB6ZChfLFcsVGUpfX0pLEg9ZS5tZW1vaXplT25lKGZ1bmN0aW9uKF8pe3JldHVybiBmdW5jdGlvbihXLFRlKXtyZXR1cm4gUl8oXyxXLFRlKX19KSxJPWUubWVtb2l6ZU9uZShmdW5jdGlvbihfKXtyZXR1cm4gZnVuY3Rpb24oVyxUZSl7cmV0dXJuIF9fKF8sVyxUZSl9fSksbD1lLm1lbW9pemVPbmUoZnVuY3Rpb24oXyl7cmV0dXJuIGZ1bmN0aW9uKFcsVGUpe3JldHVybiBXZihfLFcsVGUpfX0pLGQ9ZS5tZW1vaXplT25lKGZ1bmN0aW9uKF8pe3JldHVybiBmdW5jdGlvbihXLFRlLGNyKXtyZXR1cm4gU2YoXyxXLFRlLGNyKX19KSxEPWUubWVtb2l6ZU9uZShmdW5jdGlvbihfKXtyZXR1cm4gZnVuY3Rpb24oVyxUZSxjcil7cmV0dXJuIGxsKF8sVyxUZSxjcil9fSksZmU9ZS5tZW1vaXplT25lKGZ1bmN0aW9uKF8pe3JldHVybiBmdW5jdGlvbihXLFRlLGNyLG5pKXtyZXR1cm4gSl8oXyxXLFRlLGNyLG5pKX19KSxnPXtnZXQgcGFyZW50aGVzaXplcigpe3JldHVybiB5KCl9LGdldCBjb252ZXJ0ZXJzKCl7cmV0dXJuIFYoKX0sYmFzZUZhY3Rvcnk6JCxmbGFnczpYLGNyZWF0ZU5vZGVBcnJheTpuZSxjcmVhdGVOdW1lcmljTGl0ZXJhbDp3ZSxjcmVhdGVCaWdJbnRMaXRlcmFsOmRlLGNyZWF0ZVN0cmluZ0xpdGVyYWw6QWUsY3JlYXRlU3RyaW5nTGl0ZXJhbEZyb21Ob2RlOmVyLGNyZWF0ZVJlZ3VsYXJFeHByZXNzaW9uTGl0ZXJhbDppcixjcmVhdGVMaXRlcmFsTGlrZU5vZGU6Q3IsY3JlYXRlSWRlbnRpZmllcjpFcix1cGRhdGVJZGVudGlmaWVyOk5lLGNyZWF0ZVRlbXBWYXJpYWJsZTpuLGNyZWF0ZUxvb3BWYXJpYWJsZTpscixjcmVhdGVVbmlxdWVOYW1lOmJlLGdldEdlbmVyYXRlZE5hbWVGb3JOb2RlOkdlLGNyZWF0ZVByaXZhdGVJZGVudGlmaWVyOnVyLGNyZWF0ZVRva2VuOklyLGNyZWF0ZVN1cGVyOndyLGNyZWF0ZVRoaXM6VXIsY3JlYXRlTnVsbDppaSxjcmVhdGVUcnVlOm1pLGNyZWF0ZUZhbHNlOnBlLGNyZWF0ZU1vZGlmaWVyOm9yLGNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzOnFyLGNyZWF0ZVF1YWxpZmllZE5hbWU6c2ksdXBkYXRlUXVhbGlmaWVkTmFtZTpEaSxjcmVhdGVDb21wdXRlZFByb3BlcnR5TmFtZTp3aSx1cGRhdGVDb21wdXRlZFByb3BlcnR5TmFtZTpYaSxjcmVhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb246ZXQsdXBkYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uOkdpLGNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uOld0LHVwZGF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uOlp0LGNyZWF0ZURlY29yYXRvcjpfcix1cGRhdGVEZWNvcmF0b3I6cGksY3JlYXRlUHJvcGVydHlTaWduYXR1cmU6YWUsdXBkYXRlUHJvcGVydHlTaWduYXR1cmU6WGUsY3JlYXRlUHJvcGVydHlEZWNsYXJhdGlvbjpKcix1cGRhdGVQcm9wZXJ0eURlY2xhcmF0aW9uOnRpLGNyZWF0ZU1ldGhvZFNpZ25hdHVyZTpaZSx1cGRhdGVNZXRob2RTaWduYXR1cmU6U3IsY3JlYXRlTWV0aG9kRGVjbGFyYXRpb246enIsdXBkYXRlTWV0aG9kRGVjbGFyYXRpb246V3IsY3JlYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbjp2cix1cGRhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uOm1yLGNyZWF0ZUdldEFjY2Vzc29yRGVjbGFyYXRpb246QXIsdXBkYXRlR2V0QWNjZXNzb3JEZWNsYXJhdGlvbjpPZSxjcmVhdGVTZXRBY2Nlc3NvckRlY2xhcmF0aW9uOm5yLHVwZGF0ZVNldEFjY2Vzc29yRGVjbGFyYXRpb246TXIsY3JlYXRlQ2FsbFNpZ25hdHVyZTpQZSx1cGRhdGVDYWxsU2lnbmF0dXJlOlVlLGNyZWF0ZUNvbnN0cnVjdFNpZ25hdHVyZTpmcix1cGRhdGVDb25zdHJ1Y3RTaWduYXR1cmU6RGUsY3JlYXRlSW5kZXhTaWduYXR1cmU6Z3IsdXBkYXRlSW5kZXhTaWduYXR1cmU6VnIsY3JlYXRlQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uOkplLHVwZGF0ZUNsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbjp4ZSxjcmVhdGVUZW1wbGF0ZUxpdGVyYWxUeXBlU3BhbjpUcix1cGRhdGVUZW1wbGF0ZUxpdGVyYWxUeXBlU3Bhbjp2aSxjcmVhdGVLZXl3b3JkVHlwZU5vZGU6VWksY3JlYXRlVHlwZVByZWRpY2F0ZU5vZGU6WWksdXBkYXRlVHlwZVByZWRpY2F0ZU5vZGU6V2ksY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGU6Y3QsdXBkYXRlVHlwZVJlZmVyZW5jZU5vZGU6TGksY3JlYXRlRnVuY3Rpb25UeXBlTm9kZTpudCx1cGRhdGVGdW5jdGlvblR5cGVOb2RlOk10LGNyZWF0ZUNvbnN0cnVjdG9yVHlwZU5vZGU6eHQsdXBkYXRlQ29uc3RydWN0b3JUeXBlTm9kZTpSdCxjcmVhdGVUeXBlUXVlcnlOb2RlOkZpLHVwZGF0ZVR5cGVRdWVyeU5vZGU6dWksY3JlYXRlVHlwZUxpdGVyYWxOb2RlOkJ0LHVwZGF0ZVR5cGVMaXRlcmFsTm9kZTp3dCxjcmVhdGVBcnJheVR5cGVOb2RlOm5hLHVwZGF0ZUFycmF5VHlwZU5vZGU6QWksY3JlYXRlVHVwbGVUeXBlTm9kZTpPaSx1cGRhdGVUdXBsZVR5cGVOb2RlOmppLGNyZWF0ZU5hbWVkVHVwbGVNZW1iZXI6VmksdXBkYXRlTmFtZWRUdXBsZU1lbWJlcjphdCxjcmVhdGVPcHRpb25hbFR5cGVOb2RlOkF0LHVwZGF0ZU9wdGlvbmFsVHlwZU5vZGU6YmEsY3JlYXRlUmVzdFR5cGVOb2RlOiRhLHVwZGF0ZVJlc3RUeXBlTm9kZTpRYSxjcmVhdGVVbmlvblR5cGVOb2RlOmthLHVwZGF0ZVVuaW9uVHlwZU5vZGU6QmEsY3JlYXRlSW50ZXJzZWN0aW9uVHlwZU5vZGU6cG4sdXBkYXRlSW50ZXJzZWN0aW9uVHlwZU5vZGU6Q24sY3JlYXRlQ29uZGl0aW9uYWxUeXBlTm9kZTpCaSx1cGRhdGVDb25kaXRpb25hbFR5cGVOb2RlOmtuLGNyZWF0ZUluZmVyVHlwZU5vZGU6eG4sdXBkYXRlSW5mZXJUeXBlTm9kZTpLbixjcmVhdGVJbXBvcnRUeXBlTm9kZTpSbix1cGRhdGVJbXBvcnRUeXBlTm9kZTpEYSxjcmVhdGVQYXJlbnRoZXNpemVkVHlwZTpibyx1cGRhdGVQYXJlbnRoZXNpemVkVHlwZTpSbyxjcmVhdGVUaGlzVHlwZU5vZGU6RW4sY3JlYXRlVHlwZU9wZXJhdG9yTm9kZTpXbix1cGRhdGVUeXBlT3BlcmF0b3JOb2RlOnRvLGNyZWF0ZUluZGV4ZWRBY2Nlc3NUeXBlTm9kZTpDbyx1cGRhdGVJbmRleGVkQWNjZXNzVHlwZU5vZGU6S28sY3JlYXRlTWFwcGVkVHlwZU5vZGU6T28sdXBkYXRlTWFwcGVkVHlwZU5vZGU6bm8sY3JlYXRlTGl0ZXJhbFR5cGVOb2RlOiRvLHVwZGF0ZUxpdGVyYWxUeXBlTm9kZTpQcixjcmVhdGVUZW1wbGF0ZUxpdGVyYWxUeXBlOlBuLHVwZGF0ZVRlbXBsYXRlTGl0ZXJhbFR5cGU6ZW8sY3JlYXRlT2JqZWN0QmluZGluZ1BhdHRlcm46eGksdXBkYXRlT2JqZWN0QmluZGluZ1BhdHRlcm46U3QsY3JlYXRlQXJyYXlCaW5kaW5nUGF0dGVybjpwYSx1cGRhdGVBcnJheUJpbmRpbmdQYXR0ZXJuOmRuLGNyZWF0ZUJpbmRpbmdFbGVtZW50OkpuLHVwZGF0ZUJpbmRpbmdFbGVtZW50OlFlLGNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb246Uyx1cGRhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uOkNlLGNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uOnFlLHVwZGF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uOmJyLGNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjpYJjQ/ZnVuY3Rpb24oXyxXKXtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoWnIoXyxXKSwxMzEwNzIpfTpacix1cGRhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246U2ksY3JlYXRlUHJvcGVydHlBY2Nlc3NDaGFpbjpYJjQ/ZnVuY3Rpb24oXyxXLFRlKXtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoUGkoXyxXLFRlKSwxMzEwNzIpfTpQaSx1cGRhdGVQcm9wZXJ0eUFjY2Vzc0NoYWluOlFpLGNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uOkN0LHVwZGF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uOnNhLGNyZWF0ZUVsZW1lbnRBY2Nlc3NDaGFpbjplbix1cGRhdGVFbGVtZW50QWNjZXNzQ2hhaW46V2EsY3JlYXRlQ2FsbEV4cHJlc3Npb246cW4sdXBkYXRlQ2FsbEV4cHJlc3Npb246bW8sY3JlYXRlQ2FsbENoYWluOlNvLHVwZGF0ZUNhbGxDaGFpbjpHbyxjcmVhdGVOZXdFeHByZXNzaW9uOnlzLHVwZGF0ZU5ld0V4cHJlc3Npb246UGMsY3JlYXRlVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOlZjLHVwZGF0ZVRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjpLYyxjcmVhdGVUeXBlQXNzZXJ0aW9uOlhzLHVwZGF0ZVR5cGVBc3NlcnRpb246cGMsY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb246aHMsdXBkYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb246dGMsY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uOnBzLHVwZGF0ZUZ1bmN0aW9uRXhwcmVzc2lvbjpRcyxjcmVhdGVBcnJvd0Z1bmN0aW9uOmpzLHVwZGF0ZUFycm93RnVuY3Rpb246ZHMsY3JlYXRlRGVsZXRlRXhwcmVzc2lvbjpKaSx1cGRhdGVEZWxldGVFeHByZXNzaW9uOmNlLGNyZWF0ZVR5cGVPZkV4cHJlc3Npb246UnIsdXBkYXRlVHlwZU9mRXhwcmVzc2lvbjp5aSxjcmVhdGVWb2lkRXhwcmVzc2lvbjpxaSx1cGRhdGVWb2lkRXhwcmVzc2lvbjpqZSxjcmVhdGVBd2FpdEV4cHJlc3Npb246SHIsdXBkYXRlQXdhaXRFeHByZXNzaW9uOnB0LGNyZWF0ZVByZWZpeFVuYXJ5RXhwcmVzc2lvbjpQdCx1cGRhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb246Z2EsY3JlYXRlUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbjp1YSx1cGRhdGVQb3N0Zml4VW5hcnlFeHByZXNzaW9uOlhuLGNyZWF0ZUJpbmFyeUV4cHJlc3Npb246anIsdXBkYXRlQmluYXJ5RXhwcmVzc2lvbjp4cyxjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb246Rm8sdXBkYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uOmtvLGNyZWF0ZVRlbXBsYXRlRXhwcmVzc2lvbjpBbyx1cGRhdGVUZW1wbGF0ZUV4cHJlc3Npb246TXMsY3JlYXRlVGVtcGxhdGVIZWFkOnN1LGNyZWF0ZVRlbXBsYXRlTWlkZGxlOnRsLGNyZWF0ZVRlbXBsYXRlVGFpbDpaYyxjcmVhdGVOb1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbDpSZixjcmVhdGVUZW1wbGF0ZUxpdGVyYWxMaWtlTm9kZTp4YyxjcmVhdGVZaWVsZEV4cHJlc3Npb246YWwsdXBkYXRlWWllbGRFeHByZXNzaW9uOkpvLGNyZWF0ZVNwcmVhZEVsZW1lbnQ6ZXUsdXBkYXRlU3ByZWFkRWxlbWVudDpXcyxjcmVhdGVDbGFzc0V4cHJlc3Npb246cHUsdXBkYXRlQ2xhc3NFeHByZXNzaW9uOlV1LGNyZWF0ZU9taXR0ZWRFeHByZXNzaW9uOlFsLGNyZWF0ZUV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50czp4bCx1cGRhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHM6WWEsY3JlYXRlQXNFeHByZXNzaW9uOmR1LHVwZGF0ZUFzRXhwcmVzc2lvbjp2YyxjcmVhdGVOb25OdWxsRXhwcmVzc2lvbjpLcix1cGRhdGVOb25OdWxsRXhwcmVzc2lvbjpfaSxjcmVhdGVOb25OdWxsQ2hhaW46RWksdXBkYXRlTm9uTnVsbENoYWluOnR0LGNyZWF0ZU1ldGFQcm9wZXJ0eTprdCx1cGRhdGVNZXRhUHJvcGVydHk6YnQsY3JlYXRlVGVtcGxhdGVTcGFuOmlhLHVwZGF0ZVRlbXBsYXRlU3BhbjpYdCxjcmVhdGVTZW1pY29sb25DbGFzc0VsZW1lbnQ6WmEsY3JlYXRlQmxvY2s6Ym4sdXBkYXRlQmxvY2s6X2EsY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQ6cWEsdXBkYXRlVmFyaWFibGVTdGF0ZW1lbnQ6cm4sY3JlYXRlRW1wdHlTdGF0ZW1lbnQ6am4sY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudDpNbyx1cGRhdGVFeHByZXNzaW9uU3RhdGVtZW50OmhvLGNyZWF0ZUlmU3RhdGVtZW50OmdzLHVwZGF0ZUlmU3RhdGVtZW50OlNlLGNyZWF0ZURvU3RhdGVtZW50OmhyLHVwZGF0ZURvU3RhdGVtZW50Ok9yLGNyZWF0ZVdoaWxlU3RhdGVtZW50OmtpLHVwZGF0ZVdoaWxlU3RhdGVtZW50OmR0LGNyZWF0ZUZvclN0YXRlbWVudDpsYSx1cGRhdGVGb3JTdGF0ZW1lbnQ6d2EsY3JlYXRlRm9ySW5TdGF0ZW1lbnQ6T24sdXBkYXRlRm9ySW5TdGF0ZW1lbnQ6Tm8sY3JlYXRlRm9yT2ZTdGF0ZW1lbnQ6am8sdXBkYXRlRm9yT2ZTdGF0ZW1lbnQ6cG8sY3JlYXRlQ29udGludWVTdGF0ZW1lbnQ6R24sdXBkYXRlQ29udGludWVTdGF0ZW1lbnQ6JG4sY3JlYXRlQnJlYWtTdGF0ZW1lbnQ6SG8sdXBkYXRlQnJlYWtTdGF0ZW1lbnQ6Wm8sY3JlYXRlUmV0dXJuU3RhdGVtZW50OkVzLHVwZGF0ZVJldHVyblN0YXRlbWVudDp5YyxjcmVhdGVXaXRoU3RhdGVtZW50OlhyLHVwZGF0ZVdpdGhTdGF0ZW1lbnQ6THMsY3JlYXRlU3dpdGNoU3RhdGVtZW50OkljLHVwZGF0ZVN3aXRjaFN0YXRlbWVudDp6dSxjcmVhdGVMYWJlbGVkU3RhdGVtZW50OnZmLHVwZGF0ZUxhYmVsZWRTdGF0ZW1lbnQ6UF8sY3JlYXRlVGhyb3dTdGF0ZW1lbnQ6RWwsdXBkYXRlVGhyb3dTdGF0ZW1lbnQ6dnAsY3JlYXRlVHJ5U3RhdGVtZW50Om9vLHVwZGF0ZVRyeVN0YXRlbWVudDpJXyxjcmVhdGVEZWJ1Z2dlclN0YXRlbWVudDp5cCxjcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uOllsLHVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb246QmYsY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q6Q2wsdXBkYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q6Y18sY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbjpocCx1cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uOmd1LGNyZWF0ZUNsYXNzRGVjbGFyYXRpb246RHAsdXBkYXRlQ2xhc3NEZWNsYXJhdGlvbjpzZCxjcmVhdGVJbnRlcmZhY2VEZWNsYXJhdGlvbjpBYSx1cGRhdGVJbnRlcmZhY2VEZWNsYXJhdGlvbjp2YSxjcmVhdGVUeXBlQWxpYXNEZWNsYXJhdGlvbjpDdSx1cGRhdGVUeXBlQWxpYXNEZWNsYXJhdGlvbjpxcyxjcmVhdGVFbnVtRGVjbGFyYXRpb246Y2QsdXBkYXRlRW51bURlY2xhcmF0aW9uOm5zLGNyZWF0ZU1vZHVsZURlY2xhcmF0aW9uOm5sLHVwZGF0ZU1vZHVsZURlY2xhcmF0aW9uOmhjLGNyZWF0ZU1vZHVsZUJsb2NrOmVzLHVwZGF0ZU1vZHVsZUJsb2NrOnVfLGNyZWF0ZUNhc2VCbG9jazpKZix1cGRhdGVDYXNlQmxvY2s6d18sY3JlYXRlTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb246dWQsdXBkYXRlTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb246a3UsY3JlYXRlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb246bGQsdXBkYXRlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb246ZmQsY3JlYXRlSW1wb3J0RGVjbGFyYXRpb246YnAsdXBkYXRlSW1wb3J0RGVjbGFyYXRpb246U3AsY3JlYXRlSW1wb3J0Q2xhdXNlOlRwLHVwZGF0ZUltcG9ydENsYXVzZTpfZCxjcmVhdGVBc3NlcnRDbGF1c2U6amYsdXBkYXRlQXNzZXJ0Q2xhdXNlOk9fLGNyZWF0ZUFzc2VydEVudHJ5OkZfLHVwZGF0ZUFzc2VydEVudHJ5OnBkLGNyZWF0ZUltcG9ydFR5cGVBc3NlcnRpb25Db250YWluZXI6eHAsdXBkYXRlSW1wb3J0VHlwZUFzc2VydGlvbkNvbnRhaW5lcjpNXyxjcmVhdGVOYW1lc3BhY2VJbXBvcnQ6RXAsdXBkYXRlTmFtZXNwYWNlSW1wb3J0Om9sLGNyZWF0ZU5hbWVzcGFjZUV4cG9ydDpBdSx1cGRhdGVOYW1lc3BhY2VFeHBvcnQ6cnUsY3JlYXRlTmFtZWRJbXBvcnRzOnlmLHVwZGF0ZU5hbWVkSW1wb3J0czpDcCxjcmVhdGVJbXBvcnRTcGVjaWZpZXI6ZGQsdXBkYXRlSW1wb3J0U3BlY2lmaWVyOmtwLGNyZWF0ZUV4cG9ydEFzc2lnbm1lbnQ6bXUsdXBkYXRlRXhwb3J0QXNzaWdubWVudDpnZCxjcmVhdGVFeHBvcnREZWNsYXJhdGlvbjpoZix1cGRhdGVFeHBvcnREZWNsYXJhdGlvbjokbCxjcmVhdGVOYW1lZEV4cG9ydHM6VWYsdXBkYXRlTmFtZWRFeHBvcnRzOkxfLGNyZWF0ZUV4cG9ydFNwZWNpZmllcjpsXyx1cGRhdGVFeHBvcnRTcGVjaWZpZXI6Zl8sY3JlYXRlTWlzc2luZ0RlY2xhcmF0aW9uOm1kLGNyZWF0ZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlOmtzLHVwZGF0ZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlOld1LGdldCBjcmVhdGVKU0RvY0FsbFR5cGUoKXtyZXR1cm4gWSgzMTIpfSxnZXQgY3JlYXRlSlNEb2NVbmtub3duVHlwZSgpe3JldHVybiBZKDMxMyl9LGdldCBjcmVhdGVKU0RvY05vbk51bGxhYmxlVHlwZSgpe3JldHVybiBIKDMxNSl9LGdldCB1cGRhdGVKU0RvY05vbk51bGxhYmxlVHlwZSgpe3JldHVybiBJKDMxNSl9LGdldCBjcmVhdGVKU0RvY051bGxhYmxlVHlwZSgpe3JldHVybiBIKDMxNCl9LGdldCB1cGRhdGVKU0RvY051bGxhYmxlVHlwZSgpe3JldHVybiBJKDMxNCl9LGdldCBjcmVhdGVKU0RvY09wdGlvbmFsVHlwZSgpe3JldHVybiBVKDMxNil9LGdldCB1cGRhdGVKU0RvY09wdGlvbmFsVHlwZSgpe3JldHVybiBqKDMxNil9LGdldCBjcmVhdGVKU0RvY1ZhcmlhZGljVHlwZSgpe3JldHVybiBVKDMxOCl9LGdldCB1cGRhdGVKU0RvY1ZhcmlhZGljVHlwZSgpe3JldHVybiBqKDMxOCl9LGdldCBjcmVhdGVKU0RvY05hbWVwYXRoVHlwZSgpe3JldHVybiBVKDMxOSl9LGdldCB1cGRhdGVKU0RvY05hbWVwYXRoVHlwZSgpe3JldHVybiBqKDMxOSl9LGNyZWF0ZUpTRG9jRnVuY3Rpb25UeXBlOkFsLHVwZGF0ZUpTRG9jRnVuY3Rpb25UeXBlOndjLGNyZWF0ZUpTRG9jVHlwZUxpdGVyYWw6cXUsdXBkYXRlSlNEb2NUeXBlTGl0ZXJhbDpWdSxjcmVhdGVKU0RvY1R5cGVFeHByZXNzaW9uOmVmLHVwZGF0ZUpTRG9jVHlwZUV4cHJlc3Npb246c2wsY3JlYXRlSlNEb2NTaWduYXR1cmU6cF8sdXBkYXRlSlNEb2NTaWduYXR1cmU6RGYsY3JlYXRlSlNEb2NUZW1wbGF0ZVRhZzpvcyx1cGRhdGVKU0RvY1RlbXBsYXRlVGFnOlBzLGNyZWF0ZUpTRG9jVHlwZWRlZlRhZzpkXyx1cGRhdGVKU0RvY1R5cGVkZWZUYWc6R2MsY3JlYXRlSlNEb2NQYXJhbWV0ZXJUYWc6Ql8sdXBkYXRlSlNEb2NQYXJhbWV0ZXJUYWc6dnUsY3JlYXRlSlNEb2NQcm9wZXJ0eVRhZzpHdCx1cGRhdGVKU0RvY1Byb3BlcnR5VGFnOkFzLGNyZWF0ZUpTRG9jQ2FsbGJhY2tUYWc6dm4sdXBkYXRlSlNEb2NDYWxsYmFja1RhZzpObCxjcmVhdGVKU0RvY0F1Z21lbnRzVGFnOmNsLHVwZGF0ZUpTRG9jQXVnbWVudHNUYWc6cmYsY3JlYXRlSlNEb2NJbXBsZW1lbnRzVGFnOlV0LHVwZGF0ZUpTRG9jSW1wbGVtZW50c1RhZzpBcCxjcmVhdGVKU0RvY1NlZVRhZzpEcyx1cGRhdGVKU0RvY1NlZVRhZzpiZixjcmVhdGVKU0RvY05hbWVSZWZlcmVuY2U6YnMsdXBkYXRlSlNEb2NOYW1lUmVmZXJlbmNlOkRjLGNyZWF0ZUpTRG9jTWVtYmVyTmFtZTpDYyx1cGRhdGVKU0RvY01lbWJlck5hbWU6YWMsY3JlYXRlSlNEb2NMaW5rOlBsLHVwZGF0ZUpTRG9jTGluazpJbCxjcmVhdGVKU0RvY0xpbmtDb2RlOnpmLHVwZGF0ZUpTRG9jTGlua0NvZGU6dWwsY3JlYXRlSlNEb2NMaW5rUGxhaW46TnUsdXBkYXRlSlNEb2NMaW5rUGxhaW46VXMsZ2V0IGNyZWF0ZUpTRG9jVHlwZVRhZygpe3JldHVybiBEKDM0Myl9LGdldCB1cGRhdGVKU0RvY1R5cGVUYWcoKXtyZXR1cm4gZmUoMzQzKX0sZ2V0IGNyZWF0ZUpTRG9jUmV0dXJuVGFnKCl7cmV0dXJuIEQoMzQxKX0sZ2V0IHVwZGF0ZUpTRG9jUmV0dXJuVGFnKCl7cmV0dXJuIGZlKDM0MSl9LGdldCBjcmVhdGVKU0RvY1RoaXNUYWcoKXtyZXR1cm4gRCgzNDIpfSxnZXQgdXBkYXRlSlNEb2NUaGlzVGFnKCl7cmV0dXJuIGZlKDM0Mil9LGdldCBjcmVhdGVKU0RvY0VudW1UYWcoKXtyZXR1cm4gRCgzMzkpfSxnZXQgdXBkYXRlSlNEb2NFbnVtVGFnKCl7cmV0dXJuIGZlKDMzOSl9LGdldCBjcmVhdGVKU0RvY0F1dGhvclRhZygpe3JldHVybiBsKDMzMCl9LGdldCB1cGRhdGVKU0RvY0F1dGhvclRhZygpe3JldHVybiBkKDMzMCl9LGdldCBjcmVhdGVKU0RvY0NsYXNzVGFnKCl7cmV0dXJuIGwoMzMyKX0sZ2V0IHVwZGF0ZUpTRG9jQ2xhc3NUYWcoKXtyZXR1cm4gZCgzMzIpfSxnZXQgY3JlYXRlSlNEb2NQdWJsaWNUYWcoKXtyZXR1cm4gbCgzMzMpfSxnZXQgdXBkYXRlSlNEb2NQdWJsaWNUYWcoKXtyZXR1cm4gZCgzMzMpfSxnZXQgY3JlYXRlSlNEb2NQcml2YXRlVGFnKCl7cmV0dXJuIGwoMzM0KX0sZ2V0IHVwZGF0ZUpTRG9jUHJpdmF0ZVRhZygpe3JldHVybiBkKDMzNCl9LGdldCBjcmVhdGVKU0RvY1Byb3RlY3RlZFRhZygpe3JldHVybiBsKDMzNSl9LGdldCB1cGRhdGVKU0RvY1Byb3RlY3RlZFRhZygpe3JldHVybiBkKDMzNSl9LGdldCBjcmVhdGVKU0RvY1JlYWRvbmx5VGFnKCl7cmV0dXJuIGwoMzM2KX0sZ2V0IHVwZGF0ZUpTRG9jUmVhZG9ubHlUYWcoKXtyZXR1cm4gZCgzMzYpfSxnZXQgY3JlYXRlSlNEb2NPdmVycmlkZVRhZygpe3JldHVybiBsKDMzNyl9LGdldCB1cGRhdGVKU0RvY092ZXJyaWRlVGFnKCl7cmV0dXJuIGQoMzM3KX0sZ2V0IGNyZWF0ZUpTRG9jRGVwcmVjYXRlZFRhZygpe3JldHVybiBsKDMzMSl9LGdldCB1cGRhdGVKU0RvY0RlcHJlY2F0ZWRUYWcoKXtyZXR1cm4gZCgzMzEpfSxjcmVhdGVKU0RvY1Vua25vd25UYWc6al8sdXBkYXRlSlNEb2NVbmtub3duVGFnOlVfLGNyZWF0ZUpTRG9jVGV4dDppdSx1cGRhdGVKU0RvY1RleHQ6dmQsY3JlYXRlSlNEb2NDb21tZW50OnFmLHVwZGF0ZUpTRG9jQ29tbWVudDpkYyxjcmVhdGVKc3hFbGVtZW50OlB1LHVwZGF0ZUpzeEVsZW1lbnQ6d2wsY3JlYXRlSnN4U2VsZkNsb3NpbmdFbGVtZW50Okl1LHVwZGF0ZUpzeFNlbGZDbG9zaW5nRWxlbWVudDpzbyxjcmVhdGVKc3hPcGVuaW5nRWxlbWVudDpFdCx1cGRhdGVKc3hPcGVuaW5nRWxlbWVudDpZcyxjcmVhdGVKc3hDbG9zaW5nRWxlbWVudDpLdSx1cGRhdGVKc3hDbG9zaW5nRWxlbWVudDpOcCxjcmVhdGVKc3hGcmFnbWVudDpQcCxjcmVhdGVKc3hUZXh0OmZsLHVwZGF0ZUpzeFRleHQ6X2wsY3JlYXRlSnN4T3BlbmluZ0ZyYWdtZW50OmN1LGNyZWF0ZUpzeEpzeENsb3NpbmdGcmFnbWVudDpnYyx1cGRhdGVKc3hGcmFnbWVudDpuYyxjcmVhdGVKc3hBdHRyaWJ1dGU6VGYsdXBkYXRlSnN4QXR0cmlidXRlOm1jLGNyZWF0ZUpzeEF0dHJpYnV0ZXM6SXAsdXBkYXRlSnN4QXR0cmlidXRlczptcyxjcmVhdGVKc3hTcHJlYWRBdHRyaWJ1dGU6dHUsdXBkYXRlSnN4U3ByZWFkQXR0cmlidXRlOndwLGNyZWF0ZUpzeEV4cHJlc3Npb246SGMsdXBkYXRlSnN4RXhwcmVzc2lvbjpPbCxjcmVhdGVDYXNlQ2xhdXNlOnRmLHVwZGF0ZUNhc2VDbGF1c2U6eGYsY3JlYXRlRGVmYXVsdENsYXVzZTp6Xyx1cGRhdGVEZWZhdWx0Q2xhdXNlOk9jLGNyZWF0ZUhlcml0YWdlQ2xhdXNlOnJzLHVwZGF0ZUhlcml0YWdlQ2xhdXNlOk9wLGNyZWF0ZUNhdGNoQ2xhdXNlOkVmLHVwZGF0ZUNhdGNoQ2xhdXNlOkZsLGNyZWF0ZVByb3BlcnR5QXNzaWdubWVudDpwbCx1cGRhdGVQcm9wZXJ0eUFzc2lnbm1lbnQ6TXAsY3JlYXRlU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50Okd1LHVwZGF0ZVNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudDpDZixjcmVhdGVTcHJlYWRBc3NpZ25tZW50OldfLHVwZGF0ZVNwcmVhZEFzc2lnbm1lbnQ6Z18sY3JlYXRlRW51bU1lbWJlcjpkbCx1cGRhdGVFbnVtTWVtYmVyOmdsLGNyZWF0ZVNvdXJjZUZpbGU6VmYsdXBkYXRlU291cmNlRmlsZTpIdSxjcmVhdGVCdW5kbGU6YWYsdXBkYXRlQnVuZGxlOnRuLGNyZWF0ZVVucGFyc2VkU291cmNlOk1sLGNyZWF0ZVVucGFyc2VkUHJvbG9ndWU6bmYsY3JlYXRlVW5wYXJzZWRQcmVwZW5kOnFfLGNyZWF0ZVVucGFyc2VkVGV4dExpa2U6S2YsY3JlYXRlVW5wYXJzZWRTeW50aGV0aWNSZWZlcmVuY2U6UnAsY3JlYXRlSW5wdXRGaWxlczp5ZCxjcmVhdGVTeW50aGV0aWNFeHByZXNzaW9uOm1fLGNyZWF0ZVN5bnRheExpc3Q6TGwsY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudDpoZCxjcmVhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbjp2Xyx1cGRhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbjpCcCxjcmVhdGVDb21tYUxpc3RFeHByZXNzaW9uOlhjLHVwZGF0ZUNvbW1hTGlzdEV4cHJlc3Npb246R2YsY3JlYXRlRW5kT2ZEZWNsYXJhdGlvbk1hcmtlcjpvZixjcmVhdGVNZXJnZURlY2xhcmF0aW9uTWFya2VyOnd1LGNyZWF0ZVN5bnRoZXRpY1JlZmVyZW5jZUV4cHJlc3Npb246Vl8sdXBkYXRlU3ludGhldGljUmVmZXJlbmNlRXhwcmVzc2lvbjp5dSxjbG9uZU5vZGU6dixnZXQgY3JlYXRlQ29tbWEoKXtyZXR1cm4gTCgyNyl9LGdldCBjcmVhdGVBc3NpZ25tZW50KCl7cmV0dXJuIEwoNjMpfSxnZXQgY3JlYXRlTG9naWNhbE9yKCl7cmV0dXJuIEwoNTYpfSxnZXQgY3JlYXRlTG9naWNhbEFuZCgpe3JldHVybiBMKDU1KX0sZ2V0IGNyZWF0ZUJpdHdpc2VPcigpe3JldHVybiBMKDUxKX0sZ2V0IGNyZWF0ZUJpdHdpc2VYb3IoKXtyZXR1cm4gTCg1Mil9LGdldCBjcmVhdGVCaXR3aXNlQW5kKCl7cmV0dXJuIEwoNTApfSxnZXQgY3JlYXRlU3RyaWN0RXF1YWxpdHkoKXtyZXR1cm4gTCgzNil9LGdldCBjcmVhdGVTdHJpY3RJbmVxdWFsaXR5KCl7cmV0dXJuIEwoMzcpfSxnZXQgY3JlYXRlRXF1YWxpdHkoKXtyZXR1cm4gTCgzNCl9LGdldCBjcmVhdGVJbmVxdWFsaXR5KCl7cmV0dXJuIEwoMzUpfSxnZXQgY3JlYXRlTGVzc1RoYW4oKXtyZXR1cm4gTCgyOSl9LGdldCBjcmVhdGVMZXNzVGhhbkVxdWFscygpe3JldHVybiBMKDMyKX0sZ2V0IGNyZWF0ZUdyZWF0ZXJUaGFuKCl7cmV0dXJuIEwoMzEpfSxnZXQgY3JlYXRlR3JlYXRlclRoYW5FcXVhbHMoKXtyZXR1cm4gTCgzMyl9LGdldCBjcmVhdGVMZWZ0U2hpZnQoKXtyZXR1cm4gTCg0Nyl9LGdldCBjcmVhdGVSaWdodFNoaWZ0KCl7cmV0dXJuIEwoNDgpfSxnZXQgY3JlYXRlVW5zaWduZWRSaWdodFNoaWZ0KCl7cmV0dXJuIEwoNDkpfSxnZXQgY3JlYXRlQWRkKCl7cmV0dXJuIEwoMzkpfSxnZXQgY3JlYXRlU3VidHJhY3QoKXtyZXR1cm4gTCg0MCl9LGdldCBjcmVhdGVNdWx0aXBseSgpe3JldHVybiBMKDQxKX0sZ2V0IGNyZWF0ZURpdmlkZSgpe3JldHVybiBMKDQzKX0sZ2V0IGNyZWF0ZU1vZHVsbygpe3JldHVybiBMKDQ0KX0sZ2V0IGNyZWF0ZUV4cG9uZW50KCl7cmV0dXJuIEwoNDIpfSxnZXQgY3JlYXRlUHJlZml4UGx1cygpe3JldHVybiBQKDM5KX0sZ2V0IGNyZWF0ZVByZWZpeE1pbnVzKCl7cmV0dXJuIFAoNDApfSxnZXQgY3JlYXRlUHJlZml4SW5jcmVtZW50KCl7cmV0dXJuIFAoNDUpfSxnZXQgY3JlYXRlUHJlZml4RGVjcmVtZW50KCl7cmV0dXJuIFAoNDYpfSxnZXQgY3JlYXRlQml0d2lzZU5vdCgpe3JldHVybiBQKDU0KX0sZ2V0IGNyZWF0ZUxvZ2ljYWxOb3QoKXtyZXR1cm4gUCg1Myl9LGdldCBjcmVhdGVQb3N0Zml4SW5jcmVtZW50KCl7cmV0dXJuIGsoNDUpfSxnZXQgY3JlYXRlUG9zdGZpeERlY3JlbWVudCgpe3JldHVybiBrKDQ2KX0sY3JlYXRlSW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uOnNyLGNyZWF0ZUltbWVkaWF0ZWx5SW52b2tlZEFycm93RnVuY3Rpb246ZmksY3JlYXRlVm9pZFplcm86emksY3JlYXRlRXhwb3J0RGVmYXVsdDpTYSxjcmVhdGVFeHRlcm5hbE1vZHVsZUV4cG9ydDpkYSxjcmVhdGVUeXBlQ2hlY2s6SGEsY3JlYXRlTWV0aG9kQ2FsbDp0YSxjcmVhdGVHbG9iYWxNZXRob2RDYWxsOm9jLGNyZWF0ZUZ1bmN0aW9uQmluZENhbGw6bm4sY3JlYXRlRnVuY3Rpb25DYWxsQ2FsbDpXbyxjcmVhdGVGdW5jdGlvbkFwcGx5Q2FsbDpMbyxjcmVhdGVBcnJheVNsaWNlQ2FsbDp1dSxjcmVhdGVBcnJheUNvbmNhdENhbGw6aXMsY3JlYXRlT2JqZWN0RGVmaW5lUHJvcGVydHlDYWxsOmF1LGNyZWF0ZVJlZmxlY3RHZXRDYWxsOk91LGNyZWF0ZVJlZmxlY3RTZXRDYWxsOnNmLGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcjpjZixjcmVhdGVDYWxsQmluZGluZzpHXyxjcmVhdGVBc3NpZ25tZW50VGFyZ2V0V3JhcHBlcjpMZSxpbmxpbmVFeHByZXNzaW9uczpOcixnZXRJbnRlcm5hbE5hbWU6ZGksZ2V0TG9jYWxOYW1lOk1pLGdldEV4cG9ydE5hbWU6c3QsZ2V0RGVjbGFyYXRpb25OYW1lOnJhLGdldE5hbWVzcGFjZU1lbWJlck5hbWU6VGEsZ2V0RXh0ZXJuYWxNb2R1bGVPck5hbWVzcGFjZUV4cG9ydE5hbWU6aGEscmVzdG9yZU91dGVyRXhwcmVzc2lvbnM6SnAscmVzdG9yZUVuY2xvc2luZ0xhYmVsOkhmLGNyZWF0ZVVzZVN0cmljdFByb2xvZ3VlOnFvLGNvcHlQcm9sb2d1ZTpOYSxjb3B5U3RhbmRhcmRQcm9sb2d1ZTpjbyxjb3B5Q3VzdG9tUHJvbG9ndWU6dHMsZW5zdXJlVXNlU3RyaWN0OnZzLGxpZnRUb0Jsb2NrOkFjLG1lcmdlTGV4aWNhbEVudmlyb25tZW50OlF1LHVwZGF0ZU1vZGlmaWVyczpzY307cmV0dXJuIGc7ZnVuY3Rpb24gbmUoXyxXKXtpZihfPT09dm9pZCAwfHxfPT09ZS5lbXB0eUFycmF5KV89W107ZWxzZSBpZihlLmlzTm9kZUFycmF5KF8pKXtpZihXPT09dm9pZCAwfHxfLmhhc1RyYWlsaW5nQ29tbWE9PT1XKXJldHVybiBfLnRyYW5zZm9ybUZsYWdzPT09dm9pZCAwJiZUKF8pLGUuRGVidWcuYXR0YWNoTm9kZUFycmF5RGVidWdJbmZvKF8pLF87dmFyIFRlPV8uc2xpY2UoKTtyZXR1cm4gVGUucG9zPV8ucG9zLFRlLmVuZD1fLmVuZCxUZS5oYXNUcmFpbGluZ0NvbW1hPVcsVGUudHJhbnNmb3JtRmxhZ3M9Xy50cmFuc2Zvcm1GbGFncyxlLkRlYnVnLmF0dGFjaE5vZGVBcnJheURlYnVnSW5mbyhUZSksVGV9dmFyIGNyPV8ubGVuZ3RoLG5pPWNyPj0xJiZjcjw9ND9fLnNsaWNlKCk6XztyZXR1cm4gZS5zZXRUZXh0UmFuZ2VQb3NFbmQobmksLTEsLTEpLG5pLmhhc1RyYWlsaW5nQ29tbWE9ISFXLFQobmkpLGUuRGVidWcuYXR0YWNoTm9kZUFycmF5RGVidWdJbmZvKG5pKSxuaX1mdW5jdGlvbiB1ZShfKXtyZXR1cm4gJC5jcmVhdGVCYXNlTm9kZShfKX1mdW5jdGlvbiBXZShfLFcsVGUpe3ZhciBjcj11ZShfKTtyZXR1cm4gY3IuZGVjb3JhdG9ycz1iYyhXKSxjci5tb2RpZmllcnM9YmMoVGUpLGNyLnRyYW5zZm9ybUZsYWdzfD1mKGNyLmRlY29yYXRvcnMpfGYoY3IubW9kaWZpZXJzKSxjci5zeW1ib2w9dm9pZCAwLGNyLmxvY2FsU3ltYm9sPXZvaWQgMCxjci5sb2NhbHM9dm9pZCAwLGNyLm5leHRDb250YWluZXI9dm9pZCAwLGNyfWZ1bmN0aW9uIEZlKF8sVyxUZSxjcil7dmFyIG5pPVdlKF8sVyxUZSk7aWYoY3I9TWMoY3IpLG5pLm5hbWU9Y3IsY3Ipc3dpdGNoKG5pLmtpbmQpe2Nhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMTY3OmNhc2UgMjk2OmlmKGUuaXNJZGVudGlmaWVyKGNyKSl7bmkudHJhbnNmb3JtRmxhZ3N8PW0oY3IpO2JyZWFrfWRlZmF1bHQ6bmkudHJhbnNmb3JtRmxhZ3N8PW9lKGNyKTticmVha31yZXR1cm4gbml9ZnVuY3Rpb24gWihfLFcsVGUsY3Isbmkpe3ZhciBydD1GZShfLFcsVGUsY3IpO3JldHVybiBydC50eXBlUGFyYW1ldGVycz1iYyhuaSkscnQudHJhbnNmb3JtRmxhZ3N8PWYocnQudHlwZVBhcmFtZXRlcnMpLG5pJiYocnQudHJhbnNmb3JtRmxhZ3N8PTEpLHJ0fWZ1bmN0aW9uIEJlKF8sVyxUZSxjcixuaSxydCx5dCl7dmFyIFhhPVooXyxXLFRlLGNyLG5pKTtyZXR1cm4gWGEucGFyYW1ldGVycz1uZShydCksWGEudHlwZT15dCxYYS50cmFuc2Zvcm1GbGFnc3w9ZihYYS5wYXJhbWV0ZXJzKXxvZShYYS50eXBlKSx5dCYmKFhhLnRyYW5zZm9ybUZsYWdzfD0xKSxYYX1mdW5jdGlvbiBnZShfLFcpe3JldHVybiBXLnR5cGVBcmd1bWVudHMmJihfLnR5cGVBcmd1bWVudHM9Vy50eXBlQXJndW1lbnRzKSxBKF8sVyl9ZnVuY3Rpb24gUmUoXyxXLFRlLGNyLG5pLHJ0LHl0LFhhKXt2YXIgdm89QmUoXyxXLFRlLGNyLG5pLHJ0LHl0KTtyZXR1cm4gdm8uYm9keT1YYSx2by50cmFuc2Zvcm1GbGFnc3w9b2Uodm8uYm9keSkmLTE2Nzc3MjE3LFhhfHwodm8udHJhbnNmb3JtRmxhZ3N8PTEpLHZvfWZ1bmN0aW9uIHplKF8sVyl7cmV0dXJuIFcuZXhjbGFtYXRpb25Ub2tlbiYmKF8uZXhjbGFtYXRpb25Ub2tlbj1XLmV4Y2xhbWF0aW9uVG9rZW4pLFcudHlwZUFyZ3VtZW50cyYmKF8udHlwZUFyZ3VtZW50cz1XLnR5cGVBcmd1bWVudHMpLGdlKF8sVyl9ZnVuY3Rpb24gRWUoXyxXLFRlLGNyLG5pLHJ0KXt2YXIgeXQ9WihfLFcsVGUsY3IsbmkpO3JldHVybiB5dC5oZXJpdGFnZUNsYXVzZXM9YmMocnQpLHl0LnRyYW5zZm9ybUZsYWdzfD1mKHl0Lmhlcml0YWdlQ2xhdXNlcykseXR9ZnVuY3Rpb24gSGUoXyxXLFRlLGNyLG5pLHJ0LHl0KXt2YXIgWGE9RWUoXyxXLFRlLGNyLG5pLHJ0KTtyZXR1cm4gWGEubWVtYmVycz1uZSh5dCksWGEudHJhbnNmb3JtRmxhZ3N8PWYoWGEubWVtYmVycyksWGF9ZnVuY3Rpb24gcnIoXyxXLFRlLGNyLG5pKXt2YXIgcnQ9RmUoXyxXLFRlLGNyKTtyZXR1cm4gcnQuaW5pdGlhbGl6ZXI9bmkscnQudHJhbnNmb3JtRmxhZ3N8PW9lKHJ0LmluaXRpYWxpemVyKSxydH1mdW5jdGlvbiBJZShfLFcsVGUsY3IsbmkscnQpe3ZhciB5dD1ycihfLFcsVGUsY3IscnQpO3JldHVybiB5dC50eXBlPW5pLHl0LnRyYW5zZm9ybUZsYWdzfD1vZShuaSksbmkmJih5dC50cmFuc2Zvcm1GbGFnc3w9MSkseXR9ZnVuY3Rpb24gX2UoXyxXKXt2YXIgVGU9eXIoXyk7cmV0dXJuIFRlLnRleHQ9VyxUZX1mdW5jdGlvbiB3ZShfLFcpe1c9PT12b2lkIDAmJihXPTApO3ZhciBUZT1fZSg4LHR5cGVvZiBfPT1cIm51bWJlclwiP18rXCJcIjpfKTtyZXR1cm4gVGUubnVtZXJpY0xpdGVyYWxGbGFncz1XLFcmMzg0JiYoVGUudHJhbnNmb3JtRmxhZ3N8PTEwMjQpLFRlfWZ1bmN0aW9uIGRlKF8pe3ZhciBXPV9lKDksdHlwZW9mIF89PVwic3RyaW5nXCI/XzplLnBzZXVkb0JpZ0ludFRvU3RyaW5nKF8pK1wiblwiKTtyZXR1cm4gVy50cmFuc2Zvcm1GbGFnc3w9NCxXfWZ1bmN0aW9uIHllKF8sVyl7dmFyIFRlPV9lKDEwLF8pO3JldHVybiBUZS5zaW5nbGVRdW90ZT1XLFRlfWZ1bmN0aW9uIEFlKF8sVyxUZSl7dmFyIGNyPXllKF8sVyk7cmV0dXJuIGNyLmhhc0V4dGVuZGVkVW5pY29kZUVzY2FwZT1UZSxUZSYmKGNyLnRyYW5zZm9ybUZsYWdzfD0xMDI0KSxjcn1mdW5jdGlvbiBlcihfKXt2YXIgVz15ZShlLmdldFRleHRPZklkZW50aWZpZXJPckxpdGVyYWwoXyksdm9pZCAwKTtyZXR1cm4gVy50ZXh0U291cmNlTm9kZT1fLFd9ZnVuY3Rpb24gaXIoXyl7dmFyIFc9X2UoMTMsXyk7cmV0dXJuIFd9ZnVuY3Rpb24gQ3IoXyxXKXtzd2l0Y2goXyl7Y2FzZSA4OnJldHVybiB3ZShXLDApO2Nhc2UgOTpyZXR1cm4gZGUoVyk7Y2FzZSAxMDpyZXR1cm4gQWUoVyx2b2lkIDApO2Nhc2UgMTE6cmV0dXJuIGZsKFcsITEpO2Nhc2UgMTI6cmV0dXJuIGZsKFcsITApO2Nhc2UgMTM6cmV0dXJuIGlyKFcpO2Nhc2UgMTQ6cmV0dXJuIHhjKF8sVyx2b2lkIDAsMCl9fWZ1bmN0aW9uIFllKF8sVyl7Vz09PXZvaWQgMCYmXyYmKFc9ZS5zdHJpbmdUb1Rva2VuKF8pKSxXPT09NzkmJihXPXZvaWQgMCk7dmFyIFRlPSQuY3JlYXRlQmFzZUlkZW50aWZpZXJOb2RlKDc5KTtyZXR1cm4gVGUub3JpZ2luYWxLZXl3b3JkS2luZD1XLFRlLmVzY2FwZWRUZXh0PWUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKF8pLFRlfWZ1bmN0aW9uIEJyKF8sVyl7dmFyIFRlPVllKF8sdm9pZCAwKTtyZXR1cm4gVGUuYXV0b0dlbmVyYXRlRmxhZ3M9VyxUZS5hdXRvR2VuZXJhdGVJZD1hLGErKyxUZX1mdW5jdGlvbiBFcihfLFcsVGUpe3ZhciBjcj1ZZShfLFRlKTtyZXR1cm4gVyYmKGNyLnR5cGVBcmd1bWVudHM9bmUoVykpLGNyLm9yaWdpbmFsS2V5d29yZEtpbmQ9PT0xMzImJihjci50cmFuc2Zvcm1GbGFnc3w9MTY3NzcyMTYpLGNyfWZ1bmN0aW9uIE5lKF8sVyl7cmV0dXJuIF8udHlwZUFyZ3VtZW50cyE9PVc/QShFcihlLmlkVGV4dChfKSxXKSxfKTpffWZ1bmN0aW9uIG4oXyxXKXt2YXIgVGU9MTtXJiYoVGV8PTgpO3ZhciBjcj1CcihcIlwiLFRlKTtyZXR1cm4gXyYmXyhjciksY3J9ZnVuY3Rpb24gbHIoXyl7dmFyIFc9MjtyZXR1cm4gXyYmKFd8PTgpLEJyKFwiXCIsVyl9ZnVuY3Rpb24gYmUoXyxXKXtyZXR1cm4gVz09PXZvaWQgMCYmKFc9MCksZS5EZWJ1Zy5hc3NlcnQoIShXJjcpLFwiQXJndW1lbnQgb3V0IG9mIHJhbmdlOiBmbGFnc1wiKSxlLkRlYnVnLmFzc2VydCgoVyY0OCkhPT0zMixcIkdlbmVyYXRlZElkZW50aWZpZXJGbGFncy5GaWxlTGV2ZWwgY2Fubm90IGJlIHNldCB3aXRob3V0IGFsc28gc2V0dGluZyBHZW5lcmF0ZWRJZGVudGlmaWVyRmxhZ3MuT3B0aW1pc3RpY1wiKSxCcihfLDN8Vyl9ZnVuY3Rpb24gR2UoXyxXKXtXPT09dm9pZCAwJiYoVz0wKSxlLkRlYnVnLmFzc2VydCghKFcmNyksXCJBcmd1bWVudCBvdXQgb2YgcmFuZ2U6IGZsYWdzXCIpO3ZhciBUZT1CcihfJiZlLmlzSWRlbnRpZmllcihfKT9lLmlkVGV4dChfKTpcIlwiLDR8Vyk7cmV0dXJuIFRlLm9yaWdpbmFsPV8sVGV9ZnVuY3Rpb24gdXIoXyl7ZS5zdGFydHNXaXRoKF8sXCIjXCIpfHxlLkRlYnVnLmZhaWwoXCJGaXJzdCBjaGFyYWN0ZXIgb2YgcHJpdmF0ZSBpZGVudGlmaWVyIG11c3QgYmUgIzogXCIrXyk7dmFyIFc9JC5jcmVhdGVCYXNlUHJpdmF0ZUlkZW50aWZpZXJOb2RlKDgwKTtyZXR1cm4gVy5lc2NhcGVkVGV4dD1lLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhfKSxXLnRyYW5zZm9ybUZsYWdzfD04Mzg4NjA4LFd9ZnVuY3Rpb24geXIoXyl7cmV0dXJuICQuY3JlYXRlQmFzZVRva2VuTm9kZShfKX1mdW5jdGlvbiBJcihfKXtlLkRlYnVnLmFzc2VydChfPj0wJiZfPD0xNjAsXCJJbnZhbGlkIHRva2VuXCIpLGUuRGVidWcuYXNzZXJ0KF88PTE0fHxfPj0xNyxcIkludmFsaWQgdG9rZW4uIFVzZSAnY3JlYXRlVGVtcGxhdGVMaXRlcmFsTGlrZU5vZGUnIHRvIGNyZWF0ZSB0ZW1wbGF0ZSBsaXRlcmFscy5cIiksZS5EZWJ1Zy5hc3NlcnQoXzw9OHx8Xz49MTQsXCJJbnZhbGlkIHRva2VuLiBVc2UgJ2NyZWF0ZUxpdGVyYWxMaWtlTm9kZScgdG8gY3JlYXRlIGxpdGVyYWxzLlwiKSxlLkRlYnVnLmFzc2VydChfIT09NzksXCJJbnZhbGlkIHRva2VuLiBVc2UgJ2NyZWF0ZUlkZW50aWZpZXInIHRvIGNyZWF0ZSBpZGVudGlmaWVyc1wiKTt2YXIgVz15cihfKSxUZT0wO3N3aXRjaChfKXtjYXNlIDEzMTpUZT0zODQ7YnJlYWs7Y2FzZSAxMjM6Y2FzZSAxMjE6Y2FzZSAxMjI6Y2FzZSAxNDU6Y2FzZSAxMjY6Y2FzZSAxMzU6Y2FzZSA4NTpjYXNlIDEzMDpjYXNlIDE0NzpjYXNlIDE1ODpjYXNlIDE0MzpjYXNlIDE0ODpjYXNlIDEwMTpjYXNlIDE0NDpjYXNlIDE1OTpjYXNlIDE1MDpjYXNlIDEzMzpjYXNlIDE1MTpjYXNlIDExNDpjYXNlIDE1NTpjYXNlIDE1MzpUZT0xO2JyZWFrO2Nhc2UgMTA2OlRlPTMzNTU1NDU2O2JyZWFrO2Nhc2UgMTI0OlRlPTEwMjQ7YnJlYWs7Y2FzZSAxMDg6VGU9ODE5MjticmVha31yZXR1cm4gVGUmJihXLnRyYW5zZm9ybUZsYWdzfD1UZSksV31mdW5jdGlvbiB3cigpe3JldHVybiBJcigxMDYpfWZ1bmN0aW9uIFVyKCl7cmV0dXJuIElyKDEwOCl9ZnVuY3Rpb24gaWkoKXtyZXR1cm4gSXIoMTA0KX1mdW5jdGlvbiBtaSgpe3JldHVybiBJcigxMTApfWZ1bmN0aW9uIHBlKCl7cmV0dXJuIElyKDk1KX1mdW5jdGlvbiBvcihfKXtyZXR1cm4gSXIoXyl9ZnVuY3Rpb24gcXIoXyl7dmFyIFc9W107cmV0dXJuIF8mMSYmVy5wdXNoKG9yKDkzKSksXyYyJiZXLnB1c2gob3IoMTM1KSksXyY1MTImJlcucHVzaChvcig4OCkpLF8mMjA0OCYmVy5wdXNoKG9yKDg1KSksXyY0JiZXLnB1c2gob3IoMTIzKSksXyY4JiZXLnB1c2gob3IoMTIxKSksXyYxNiYmVy5wdXNoKG9yKDEyMikpLF8mMTI4JiZXLnB1c2gob3IoMTI2KSksXyYzMiYmVy5wdXNoKG9yKDEyNCkpLF8mMTYzODQmJlcucHVzaChvcigxNTkpKSxfJjY0JiZXLnB1c2gob3IoMTQ1KSksXyYyNTYmJlcucHVzaChvcigxMzEpKSxfJjMyNzY4JiZXLnB1c2gob3IoMTAxKSksXyY2NTUzNiYmVy5wdXNoKG9yKDE0NCkpLFcubGVuZ3RoP1c6dm9pZCAwfWZ1bmN0aW9uIHNpKF8sVyl7dmFyIFRlPXVlKDE2MSk7cmV0dXJuIFRlLmxlZnQ9XyxUZS5yaWdodD1NYyhXKSxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUubGVmdCl8bShUZS5yaWdodCksVGV9ZnVuY3Rpb24gRGkoXyxXLFRlKXtyZXR1cm4gXy5sZWZ0IT09V3x8Xy5yaWdodCE9PVRlP0Eoc2koVyxUZSksXyk6X31mdW5jdGlvbiB3aShfKXt2YXIgVz11ZSgxNjIpO3JldHVybiBXLmV4cHJlc3Npb249eSgpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkNvbXB1dGVkUHJvcGVydHlOYW1lKF8pLFcudHJhbnNmb3JtRmxhZ3N8PW9lKFcuZXhwcmVzc2lvbil8MTAyNHw2NTUzNixXfWZ1bmN0aW9uIFhpKF8sVyl7cmV0dXJuIF8uZXhwcmVzc2lvbiE9PVc/QSh3aShXKSxfKTpffWZ1bmN0aW9uIGV0KF8sVyxUZSxjcil7dmFyIG5pLHJ0LHl0O189PT12b2lkIDB8fGUuaXNBcnJheShfKT8ocnQ9XyxuaT1XLHl0PVRlKToocnQ9dm9pZCAwLG5pPV8seXQ9Vyk7dmFyIFhhPUZlKDE2Myx2b2lkIDAscnQsbmkpO3JldHVybiBYYS5jb25zdHJhaW50PXl0LFhhLmRlZmF1bHQ9Y3IsWGEudHJhbnNmb3JtRmxhZ3M9MSxYYX1mdW5jdGlvbiBHaShfLFcsVGUsY3Isbmkpe3ZhciBydCx5dCxYYTtyZXR1cm4gVz09PXZvaWQgMHx8ZS5pc0FycmF5KFcpPyh5dD1XLHJ0PVRlLFhhPWNyKTooeXQ9dm9pZCAwLHJ0PVcsWGE9VGUpLF8ubW9kaWZpZXJzIT09eXR8fF8ubmFtZSE9PXJ0fHxfLmNvbnN0cmFpbnQhPT1YYXx8Xy5kZWZhdWx0IT09bmk/QShldCh5dCxydCxYYSxuaSksXyk6X31mdW5jdGlvbiBXdChfLFcsVGUsY3IsbmkscnQseXQpe3ZhciBYYT1JZSgxNjQsXyxXLGNyLHJ0LHl0JiZ5KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYSh5dCkpO3JldHVybiBYYS5kb3REb3REb3RUb2tlbj1UZSxYYS5xdWVzdGlvblRva2VuPW5pLGUuaXNUaGlzSWRlbnRpZmllcihYYS5uYW1lKT9YYS50cmFuc2Zvcm1GbGFncz0xOihYYS50cmFuc2Zvcm1GbGFnc3w9b2UoWGEuZG90RG90RG90VG9rZW4pfG9lKFhhLnF1ZXN0aW9uVG9rZW4pLG5pJiYoWGEudHJhbnNmb3JtRmxhZ3N8PTEpLGUubW9kaWZpZXJzVG9GbGFncyhYYS5tb2RpZmllcnMpJjE2NDc2JiYoWGEudHJhbnNmb3JtRmxhZ3N8PTQwOTYpLCh5dHx8VGUpJiYoWGEudHJhbnNmb3JtRmxhZ3N8PTEwMjQpKSxYYX1mdW5jdGlvbiBadChfLFcsVGUsY3IsbmkscnQseXQsWGEpe3JldHVybiBfLmRlY29yYXRvcnMhPT1XfHxfLm1vZGlmaWVycyE9PVRlfHxfLmRvdERvdERvdFRva2VuIT09Y3J8fF8ubmFtZSE9PW5pfHxfLnF1ZXN0aW9uVG9rZW4hPT1ydHx8Xy50eXBlIT09eXR8fF8uaW5pdGlhbGl6ZXIhPT1YYT9BKFd0KFcsVGUsY3IsbmkscnQseXQsWGEpLF8pOl99ZnVuY3Rpb24gX3IoXyl7dmFyIFc9dWUoMTY1KTtyZXR1cm4gVy5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKF8pLFcudHJhbnNmb3JtRmxhZ3N8PW9lKFcuZXhwcmVzc2lvbil8MXw0MDk2LFd9ZnVuY3Rpb24gcGkoXyxXKXtyZXR1cm4gXy5leHByZXNzaW9uIT09Vz9BKF9yKFcpLF8pOl99ZnVuY3Rpb24gYWUoXyxXLFRlLGNyKXt2YXIgbmk9RmUoMTY2LHZvaWQgMCxfLFcpO3JldHVybiBuaS50eXBlPWNyLG5pLnF1ZXN0aW9uVG9rZW49VGUsbmkudHJhbnNmb3JtRmxhZ3M9MSxuaX1mdW5jdGlvbiBYZShfLFcsVGUsY3Isbmkpe3JldHVybiBfLm1vZGlmaWVycyE9PVd8fF8ubmFtZSE9PVRlfHxfLnF1ZXN0aW9uVG9rZW4hPT1jcnx8Xy50eXBlIT09bmk/QShhZShXLFRlLGNyLG5pKSxfKTpffWZ1bmN0aW9uIEpyKF8sVyxUZSxjcixuaSxydCl7dmFyIHl0PUllKDE2NyxfLFcsVGUsbmkscnQpO3JldHVybiB5dC5xdWVzdGlvblRva2VuPWNyJiZlLmlzUXVlc3Rpb25Ub2tlbihjcik/Y3I6dm9pZCAwLHl0LmV4Y2xhbWF0aW9uVG9rZW49Y3ImJmUuaXNFeGNsYW1hdGlvblRva2VuKGNyKT9jcjp2b2lkIDAseXQudHJhbnNmb3JtRmxhZ3N8PW9lKHl0LnF1ZXN0aW9uVG9rZW4pfG9lKHl0LmV4Y2xhbWF0aW9uVG9rZW4pfDgzODg2MDgsKGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZSh5dC5uYW1lKXx8ZS5oYXNTdGF0aWNNb2RpZmllcih5dCkmJnl0LmluaXRpYWxpemVyKSYmKHl0LnRyYW5zZm9ybUZsYWdzfD00MDk2KSwoY3J8fGUubW9kaWZpZXJzVG9GbGFncyh5dC5tb2RpZmllcnMpJjIpJiYoeXQudHJhbnNmb3JtRmxhZ3N8PTEpLHl0fWZ1bmN0aW9uIHRpKF8sVyxUZSxjcixuaSxydCx5dCl7cmV0dXJuIF8uZGVjb3JhdG9ycyE9PVd8fF8ubW9kaWZpZXJzIT09VGV8fF8ubmFtZSE9PWNyfHxfLnF1ZXN0aW9uVG9rZW4hPT0obmkhPT12b2lkIDAmJmUuaXNRdWVzdGlvblRva2VuKG5pKT9uaTp2b2lkIDApfHxfLmV4Y2xhbWF0aW9uVG9rZW4hPT0obmkhPT12b2lkIDAmJmUuaXNFeGNsYW1hdGlvblRva2VuKG5pKT9uaTp2b2lkIDApfHxfLnR5cGUhPT1ydHx8Xy5pbml0aWFsaXplciE9PXl0P0EoSnIoVyxUZSxjcixuaSxydCx5dCksXyk6X31mdW5jdGlvbiBaZShfLFcsVGUsY3IsbmkscnQpe3ZhciB5dD1CZSgxNjgsdm9pZCAwLF8sVyxjcixuaSxydCk7cmV0dXJuIHl0LnF1ZXN0aW9uVG9rZW49VGUseXQudHJhbnNmb3JtRmxhZ3M9MSx5dH1mdW5jdGlvbiBTcihfLFcsVGUsY3IsbmkscnQseXQpe3JldHVybiBfLm1vZGlmaWVycyE9PVd8fF8ubmFtZSE9PVRlfHxfLnF1ZXN0aW9uVG9rZW4hPT1jcnx8Xy50eXBlUGFyYW1ldGVycyE9PW5pfHxfLnBhcmFtZXRlcnMhPT1ydHx8Xy50eXBlIT09eXQ/Z2UoWmUoVyxUZSxjcixuaSxydCx5dCksXyk6X31mdW5jdGlvbiB6cihfLFcsVGUsY3IsbmkscnQseXQsWGEsdm8pe3ZhciBWcz1SZSgxNjksXyxXLGNyLHJ0LHl0LFhhLHZvKTtyZXR1cm4gVnMuYXN0ZXJpc2tUb2tlbj1UZSxWcy5xdWVzdGlvblRva2VuPW5pLFZzLnRyYW5zZm9ybUZsYWdzfD1vZShWcy5hc3Rlcmlza1Rva2VuKXxvZShWcy5xdWVzdGlvblRva2VuKXwxMDI0LG5pJiYoVnMudHJhbnNmb3JtRmxhZ3N8PTEpLGUubW9kaWZpZXJzVG9GbGFncyhWcy5tb2RpZmllcnMpJjI1Nj9UZT9Wcy50cmFuc2Zvcm1GbGFnc3w9MTI4OlZzLnRyYW5zZm9ybUZsYWdzfD0yNTY6VGUmJihWcy50cmFuc2Zvcm1GbGFnc3w9MjA0OCksVnN9ZnVuY3Rpb24gV3IoXyxXLFRlLGNyLG5pLHJ0LHl0LFhhLHZvLFZzKXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5hc3Rlcmlza1Rva2VuIT09Y3J8fF8ubmFtZSE9PW5pfHxfLnF1ZXN0aW9uVG9rZW4hPT1ydHx8Xy50eXBlUGFyYW1ldGVycyE9PXl0fHxfLnBhcmFtZXRlcnMhPT1YYXx8Xy50eXBlIT09dm98fF8uYm9keSE9PVZzP3plKHpyKFcsVGUsY3IsbmkscnQseXQsWGEsdm8sVnMpLF8pOl99ZnVuY3Rpb24gSmUoXyxXLFRlKXt2YXIgY3I9WigxNzAsXyxXLHZvaWQgMCx2b2lkIDApO3JldHVybiBjci5ib2R5PVRlLGNyLnRyYW5zZm9ybUZsYWdzPW9lKFRlKXw4Mzg4NjA4LGNyfWZ1bmN0aW9uIHhlKF8sVyxUZSxjcil7cmV0dXJuIF8uZGVjb3JhdG9ycyE9PVd8fF8ubW9kaWZpZXIhPT1UZXx8Xy5ib2R5IT09Y3I/QShKZShXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIHZyKF8sVyxUZSxjcil7dmFyIG5pPVJlKDE3MSxfLFcsdm9pZCAwLHZvaWQgMCxUZSx2b2lkIDAsY3IpO3JldHVybiBuaS50cmFuc2Zvcm1GbGFnc3w9MTAyNCxuaX1mdW5jdGlvbiBtcihfLFcsVGUsY3Isbmkpe3JldHVybiBfLmRlY29yYXRvcnMhPT1XfHxfLm1vZGlmaWVycyE9PVRlfHxfLnBhcmFtZXRlcnMhPT1jcnx8Xy5ib2R5IT09bmk/emUodnIoVyxUZSxjcixuaSksXyk6X31mdW5jdGlvbiBBcihfLFcsVGUsY3IsbmkscnQpe3JldHVybiBSZSgxNzIsXyxXLFRlLHZvaWQgMCxjcixuaSxydCl9ZnVuY3Rpb24gT2UoXyxXLFRlLGNyLG5pLHJ0LHl0KXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5uYW1lIT09Y3J8fF8ucGFyYW1ldGVycyE9PW5pfHxfLnR5cGUhPT1ydHx8Xy5ib2R5IT09eXQ/emUoQXIoVyxUZSxjcixuaSxydCx5dCksXyk6X31mdW5jdGlvbiBucihfLFcsVGUsY3Isbmkpe3JldHVybiBSZSgxNzMsXyxXLFRlLHZvaWQgMCxjcix2b2lkIDAsbmkpfWZ1bmN0aW9uIE1yKF8sVyxUZSxjcixuaSxydCl7cmV0dXJuIF8uZGVjb3JhdG9ycyE9PVd8fF8ubW9kaWZpZXJzIT09VGV8fF8ubmFtZSE9PWNyfHxfLnBhcmFtZXRlcnMhPT1uaXx8Xy5ib2R5IT09cnQ/emUobnIoVyxUZSxjcixuaSxydCksXyk6X31mdW5jdGlvbiBQZShfLFcsVGUpe3ZhciBjcj1CZSgxNzQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsXyxXLFRlKTtyZXR1cm4gY3IudHJhbnNmb3JtRmxhZ3M9MSxjcn1mdW5jdGlvbiBVZShfLFcsVGUsY3Ipe3JldHVybiBfLnR5cGVQYXJhbWV0ZXJzIT09V3x8Xy5wYXJhbWV0ZXJzIT09VGV8fF8udHlwZSE9PWNyP2dlKFBlKFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24gZnIoXyxXLFRlKXt2YXIgY3I9QmUoMTc1LHZvaWQgMCx2b2lkIDAsdm9pZCAwLF8sVyxUZSk7cmV0dXJuIGNyLnRyYW5zZm9ybUZsYWdzPTEsY3J9ZnVuY3Rpb24gRGUoXyxXLFRlLGNyKXtyZXR1cm4gXy50eXBlUGFyYW1ldGVycyE9PVd8fF8ucGFyYW1ldGVycyE9PVRlfHxfLnR5cGUhPT1jcj9nZShmcihXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIGdyKF8sVyxUZSxjcil7dmFyIG5pPUJlKDE3NixfLFcsdm9pZCAwLHZvaWQgMCxUZSxjcik7cmV0dXJuIG5pLnRyYW5zZm9ybUZsYWdzPTEsbml9ZnVuY3Rpb24gVnIoXyxXLFRlLGNyLG5pKXtyZXR1cm4gXy5wYXJhbWV0ZXJzIT09Y3J8fF8udHlwZSE9PW5pfHxfLmRlY29yYXRvcnMhPT1XfHxfLm1vZGlmaWVycyE9PVRlP2dlKGdyKFcsVGUsY3IsbmkpLF8pOl99ZnVuY3Rpb24gVHIoXyxXKXt2YXIgVGU9dWUoMTk5KTtyZXR1cm4gVGUudHlwZT1fLFRlLmxpdGVyYWw9VyxUZS50cmFuc2Zvcm1GbGFncz0xLFRlfWZ1bmN0aW9uIHZpKF8sVyxUZSl7cmV0dXJuIF8udHlwZSE9PVd8fF8ubGl0ZXJhbCE9PVRlP0EoVHIoVyxUZSksXyk6X31mdW5jdGlvbiBVaShfKXtyZXR1cm4gSXIoXyl9ZnVuY3Rpb24gWWkoXyxXLFRlKXt2YXIgY3I9dWUoMTc3KTtyZXR1cm4gY3IuYXNzZXJ0c01vZGlmaWVyPV8sY3IucGFyYW1ldGVyTmFtZT1NYyhXKSxjci50eXBlPVRlLGNyLnRyYW5zZm9ybUZsYWdzPTEsY3J9ZnVuY3Rpb24gV2koXyxXLFRlLGNyKXtyZXR1cm4gXy5hc3NlcnRzTW9kaWZpZXIhPT1XfHxfLnBhcmFtZXRlck5hbWUhPT1UZXx8Xy50eXBlIT09Y3I/QShZaShXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIGN0KF8sVyl7dmFyIFRlPXVlKDE3OCk7cmV0dXJuIFRlLnR5cGVOYW1lPU1jKF8pLFRlLnR5cGVBcmd1bWVudHM9VyYmeSgpLnBhcmVudGhlc2l6ZVR5cGVBcmd1bWVudHMobmUoVykpLFRlLnRyYW5zZm9ybUZsYWdzPTEsVGV9ZnVuY3Rpb24gTGkoXyxXLFRlKXtyZXR1cm4gXy50eXBlTmFtZSE9PVd8fF8udHlwZUFyZ3VtZW50cyE9PVRlP0EoY3QoVyxUZSksXyk6X31mdW5jdGlvbiBudChfLFcsVGUpe3ZhciBjcj1CZSgxNzksdm9pZCAwLHZvaWQgMCx2b2lkIDAsXyxXLFRlKTtyZXR1cm4gY3IudHJhbnNmb3JtRmxhZ3M9MSxjcn1mdW5jdGlvbiBNdChfLFcsVGUsY3Ipe3JldHVybiBfLnR5cGVQYXJhbWV0ZXJzIT09V3x8Xy5wYXJhbWV0ZXJzIT09VGV8fF8udHlwZSE9PWNyP2dlKG50KFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24geHQoKXtmb3IodmFyIF89W10sVz0wO1c8YXJndW1lbnRzLmxlbmd0aDtXKyspX1tXXT1hcmd1bWVudHNbV107cmV0dXJuIF8ubGVuZ3RoPT09ND91dC5hcHBseSh2b2lkIDAsXyk6Xy5sZW5ndGg9PT0zP0R0LmFwcGx5KHZvaWQgMCxfKTplLkRlYnVnLmZhaWwoXCJJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBzcGVjaWZpZWQuXCIpfWZ1bmN0aW9uIHV0KF8sVyxUZSxjcil7dmFyIG5pPUJlKDE4MCx2b2lkIDAsXyx2b2lkIDAsVyxUZSxjcik7cmV0dXJuIG5pLnRyYW5zZm9ybUZsYWdzPTEsbml9ZnVuY3Rpb24gRHQoXyxXLFRlKXtyZXR1cm4gdXQodm9pZCAwLF8sVyxUZSl9ZnVuY3Rpb24gUnQoKXtmb3IodmFyIF89W10sVz0wO1c8YXJndW1lbnRzLmxlbmd0aDtXKyspX1tXXT1hcmd1bWVudHNbV107cmV0dXJuIF8ubGVuZ3RoPT09NT9JaS5hcHBseSh2b2lkIDAsXyk6Xy5sZW5ndGg9PT00P0tpLmFwcGx5KHZvaWQgMCxfKTplLkRlYnVnLmZhaWwoXCJJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBzcGVjaWZpZWQuXCIpfWZ1bmN0aW9uIElpKF8sVyxUZSxjcixuaSl7cmV0dXJuIF8ubW9kaWZpZXJzIT09V3x8Xy50eXBlUGFyYW1ldGVycyE9PVRlfHxfLnBhcmFtZXRlcnMhPT1jcnx8Xy50eXBlIT09bmk/Z2UoeHQoVyxUZSxjcixuaSksXyk6X31mdW5jdGlvbiBLaShfLFcsVGUsY3Ipe3JldHVybiBJaShfLF8ubW9kaWZpZXJzLFcsVGUsY3IpfWZ1bmN0aW9uIEZpKF8sVyl7dmFyIFRlPXVlKDE4MSk7cmV0dXJuIFRlLmV4cHJOYW1lPV8sVGUudHlwZUFyZ3VtZW50cz1XJiZ5KCkucGFyZW50aGVzaXplVHlwZUFyZ3VtZW50cyhXKSxUZS50cmFuc2Zvcm1GbGFncz0xLFRlfWZ1bmN0aW9uIHVpKF8sVyxUZSl7cmV0dXJuIF8uZXhwck5hbWUhPT1XfHxfLnR5cGVBcmd1bWVudHMhPT1UZT9BKEZpKFcsVGUpLF8pOl99ZnVuY3Rpb24gQnQoXyl7dmFyIFc9dWUoMTgyKTtyZXR1cm4gVy5tZW1iZXJzPW5lKF8pLFcudHJhbnNmb3JtRmxhZ3M9MSxXfWZ1bmN0aW9uIHd0KF8sVyl7cmV0dXJuIF8ubWVtYmVycyE9PVc/QShCdChXKSxfKTpffWZ1bmN0aW9uIG5hKF8pe3ZhciBXPXVlKDE4Myk7cmV0dXJuIFcuZWxlbWVudFR5cGU9eSgpLnBhcmVudGhlc2l6ZU5vbkFycmF5VHlwZU9mUG9zdGZpeFR5cGUoXyksVy50cmFuc2Zvcm1GbGFncz0xLFd9ZnVuY3Rpb24gQWkoXyxXKXtyZXR1cm4gXy5lbGVtZW50VHlwZSE9PVc/QShuYShXKSxfKTpffWZ1bmN0aW9uIE9pKF8pe3ZhciBXPXVlKDE4NCk7cmV0dXJuIFcuZWxlbWVudHM9bmUoeSgpLnBhcmVudGhlc2l6ZUVsZW1lbnRUeXBlc09mVHVwbGVUeXBlKF8pKSxXLnRyYW5zZm9ybUZsYWdzPTEsV31mdW5jdGlvbiBqaShfLFcpe3JldHVybiBfLmVsZW1lbnRzIT09Vz9BKE9pKFcpLF8pOl99ZnVuY3Rpb24gVmkoXyxXLFRlLGNyKXt2YXIgbmk9dWUoMTk3KTtyZXR1cm4gbmkuZG90RG90RG90VG9rZW49XyxuaS5uYW1lPVcsbmkucXVlc3Rpb25Ub2tlbj1UZSxuaS50eXBlPWNyLG5pLnRyYW5zZm9ybUZsYWdzPTEsbml9ZnVuY3Rpb24gYXQoXyxXLFRlLGNyLG5pKXtyZXR1cm4gXy5kb3REb3REb3RUb2tlbiE9PVd8fF8ubmFtZSE9PVRlfHxfLnF1ZXN0aW9uVG9rZW4hPT1jcnx8Xy50eXBlIT09bmk/QShWaShXLFRlLGNyLG5pKSxfKTpffWZ1bmN0aW9uIEF0KF8pe3ZhciBXPXVlKDE4NSk7cmV0dXJuIFcudHlwZT15KCkucGFyZW50aGVzaXplVHlwZU9mT3B0aW9uYWxUeXBlKF8pLFcudHJhbnNmb3JtRmxhZ3M9MSxXfWZ1bmN0aW9uIGJhKF8sVyl7cmV0dXJuIF8udHlwZSE9PVc/QShBdChXKSxfKTpffWZ1bmN0aW9uICRhKF8pe3ZhciBXPXVlKDE4Nik7cmV0dXJuIFcudHlwZT1fLFcudHJhbnNmb3JtRmxhZ3M9MSxXfWZ1bmN0aW9uIFFhKF8sVyl7cmV0dXJuIF8udHlwZSE9PVc/QSgkYShXKSxfKTpffWZ1bmN0aW9uIGFpKF8sVyxUZSl7dmFyIGNyPXVlKF8pO3JldHVybiBjci50eXBlcz1nLmNyZWF0ZU5vZGVBcnJheShUZShXKSksY3IudHJhbnNmb3JtRmxhZ3M9MSxjcn1mdW5jdGlvbiBEbihfLFcsVGUpe3JldHVybiBfLnR5cGVzIT09Vz9BKGFpKF8ua2luZCxXLFRlKSxfKTpffWZ1bmN0aW9uIGthKF8pe3JldHVybiBhaSgxODcsXyx5KCkucGFyZW50aGVzaXplQ29uc3RpdHVlbnRUeXBlc09mVW5pb25UeXBlKX1mdW5jdGlvbiBCYShfLFcpe3JldHVybiBEbihfLFcseSgpLnBhcmVudGhlc2l6ZUNvbnN0aXR1ZW50VHlwZXNPZlVuaW9uVHlwZSl9ZnVuY3Rpb24gcG4oXyl7cmV0dXJuIGFpKDE4OCxfLHkoKS5wYXJlbnRoZXNpemVDb25zdGl0dWVudFR5cGVzT2ZJbnRlcnNlY3Rpb25UeXBlKX1mdW5jdGlvbiBDbihfLFcpe3JldHVybiBEbihfLFcseSgpLnBhcmVudGhlc2l6ZUNvbnN0aXR1ZW50VHlwZXNPZkludGVyc2VjdGlvblR5cGUpfWZ1bmN0aW9uIEJpKF8sVyxUZSxjcil7dmFyIG5pPXVlKDE4OSk7cmV0dXJuIG5pLmNoZWNrVHlwZT15KCkucGFyZW50aGVzaXplQ2hlY2tUeXBlT2ZDb25kaXRpb25hbFR5cGUoXyksbmkuZXh0ZW5kc1R5cGU9eSgpLnBhcmVudGhlc2l6ZUV4dGVuZHNUeXBlT2ZDb25kaXRpb25hbFR5cGUoVyksbmkudHJ1ZVR5cGU9VGUsbmkuZmFsc2VUeXBlPWNyLG5pLnRyYW5zZm9ybUZsYWdzPTEsbml9ZnVuY3Rpb24ga24oXyxXLFRlLGNyLG5pKXtyZXR1cm4gXy5jaGVja1R5cGUhPT1XfHxfLmV4dGVuZHNUeXBlIT09VGV8fF8udHJ1ZVR5cGUhPT1jcnx8Xy5mYWxzZVR5cGUhPT1uaT9BKEJpKFcsVGUsY3IsbmkpLF8pOl99ZnVuY3Rpb24geG4oXyl7dmFyIFc9dWUoMTkwKTtyZXR1cm4gVy50eXBlUGFyYW1ldGVyPV8sVy50cmFuc2Zvcm1GbGFncz0xLFd9ZnVuY3Rpb24gS24oXyxXKXtyZXR1cm4gXy50eXBlUGFyYW1ldGVyIT09Vz9BKHhuKFcpLF8pOl99ZnVuY3Rpb24gUG4oXyxXKXt2YXIgVGU9dWUoMTk4KTtyZXR1cm4gVGUuaGVhZD1fLFRlLnRlbXBsYXRlU3BhbnM9bmUoVyksVGUudHJhbnNmb3JtRmxhZ3M9MSxUZX1mdW5jdGlvbiBlbyhfLFcsVGUpe3JldHVybiBfLmhlYWQhPT1XfHxfLnRlbXBsYXRlU3BhbnMhPT1UZT9BKFBuKFcsVGUpLF8pOl99ZnVuY3Rpb24gUm4oXyxXLFRlLGNyLG5pKXt2YXIgcnQ9VyYmVy5raW5kPT09Mjk1P1c6dm9pZCAwLHl0PVcmJmUuaXNFbnRpdHlOYW1lKFcpP1c6VGUmJiFlLmlzQXJyYXkoVGUpP1RlOnZvaWQgMCxYYT1lLmlzQXJyYXkoVGUpP1RlOmUuaXNBcnJheShjcik/Y3I6dm9pZCAwO25pPXR5cGVvZiBjcj09XCJib29sZWFuXCI/Y3I6dHlwZW9mIG5pPT1cImJvb2xlYW5cIj9uaTohMTt2YXIgdm89dWUoMjAwKTtyZXR1cm4gdm8uYXJndW1lbnQ9Xyx2by5hc3NlcnRpb25zPXJ0LHZvLnF1YWxpZmllcj15dCx2by50eXBlQXJndW1lbnRzPVhhJiZ5KCkucGFyZW50aGVzaXplVHlwZUFyZ3VtZW50cyhYYSksdm8uaXNUeXBlT2Y9bmksdm8udHJhbnNmb3JtRmxhZ3M9MSx2b31mdW5jdGlvbiBEYShfLFcsVGUsY3IsbmkscnQpe3ZhciB5dD1UZSYmVGUua2luZD09PTI5NT9UZTp2b2lkIDAsWGE9VGUmJmUuaXNFbnRpdHlOYW1lKFRlKT9UZTpjciYmIWUuaXNBcnJheShjcik/Y3I6dm9pZCAwLHZvPWUuaXNBcnJheShjcik/Y3I6ZS5pc0FycmF5KG5pKT9uaTp2b2lkIDA7cmV0dXJuIHJ0PXR5cGVvZiBuaT09XCJib29sZWFuXCI/bmk6dHlwZW9mIHJ0PT1cImJvb2xlYW5cIj9ydDpfLmlzVHlwZU9mLF8uYXJndW1lbnQhPT1XfHxfLmFzc2VydGlvbnMhPT15dHx8Xy5xdWFsaWZpZXIhPT1YYXx8Xy50eXBlQXJndW1lbnRzIT09dm98fF8uaXNUeXBlT2YhPT1ydD9BKFJuKFcseXQsWGEsdm8scnQpLF8pOl99ZnVuY3Rpb24gYm8oXyl7dmFyIFc9dWUoMTkxKTtyZXR1cm4gVy50eXBlPV8sVy50cmFuc2Zvcm1GbGFncz0xLFd9ZnVuY3Rpb24gUm8oXyxXKXtyZXR1cm4gXy50eXBlIT09Vz9BKGJvKFcpLF8pOl99ZnVuY3Rpb24gRW4oKXt2YXIgXz11ZSgxOTIpO3JldHVybiBfLnRyYW5zZm9ybUZsYWdzPTEsX31mdW5jdGlvbiBXbihfLFcpe3ZhciBUZT11ZSgxOTMpO3JldHVybiBUZS5vcGVyYXRvcj1fLFRlLnR5cGU9Xz09PTE0NT95KCkucGFyZW50aGVzaXplT3BlcmFuZE9mUmVhZG9ubHlUeXBlT3BlcmF0b3IoVyk6eSgpLnBhcmVudGhlc2l6ZU9wZXJhbmRPZlR5cGVPcGVyYXRvcihXKSxUZS50cmFuc2Zvcm1GbGFncz0xLFRlfWZ1bmN0aW9uIHRvKF8sVyl7cmV0dXJuIF8udHlwZSE9PVc/QShXbihfLm9wZXJhdG9yLFcpLF8pOl99ZnVuY3Rpb24gQ28oXyxXKXt2YXIgVGU9dWUoMTk0KTtyZXR1cm4gVGUub2JqZWN0VHlwZT15KCkucGFyZW50aGVzaXplTm9uQXJyYXlUeXBlT2ZQb3N0Zml4VHlwZShfKSxUZS5pbmRleFR5cGU9VyxUZS50cmFuc2Zvcm1GbGFncz0xLFRlfWZ1bmN0aW9uIEtvKF8sVyxUZSl7cmV0dXJuIF8ub2JqZWN0VHlwZSE9PVd8fF8uaW5kZXhUeXBlIT09VGU/QShDbyhXLFRlKSxfKTpffWZ1bmN0aW9uIE9vKF8sVyxUZSxjcixuaSxydCl7dmFyIHl0PXVlKDE5NSk7cmV0dXJuIHl0LnJlYWRvbmx5VG9rZW49Xyx5dC50eXBlUGFyYW1ldGVyPVcseXQubmFtZVR5cGU9VGUseXQucXVlc3Rpb25Ub2tlbj1jcix5dC50eXBlPW5pLHl0Lm1lbWJlcnM9cnQmJm5lKHJ0KSx5dC50cmFuc2Zvcm1GbGFncz0xLHl0fWZ1bmN0aW9uIG5vKF8sVyxUZSxjcixuaSxydCx5dCl7cmV0dXJuIF8ucmVhZG9ubHlUb2tlbiE9PVd8fF8udHlwZVBhcmFtZXRlciE9PVRlfHxfLm5hbWVUeXBlIT09Y3J8fF8ucXVlc3Rpb25Ub2tlbiE9PW5pfHxfLnR5cGUhPT1ydHx8Xy5tZW1iZXJzIT09eXQ/QShPbyhXLFRlLGNyLG5pLHJ0LHl0KSxfKTpffWZ1bmN0aW9uICRvKF8pe3ZhciBXPXVlKDE5Nik7cmV0dXJuIFcubGl0ZXJhbD1fLFcudHJhbnNmb3JtRmxhZ3M9MSxXfWZ1bmN0aW9uIFByKF8sVyl7cmV0dXJuIF8ubGl0ZXJhbCE9PVc/QSgkbyhXKSxfKTpffWZ1bmN0aW9uIHhpKF8pe3ZhciBXPXVlKDIwMSk7cmV0dXJuIFcuZWxlbWVudHM9bmUoXyksVy50cmFuc2Zvcm1GbGFnc3w9ZihXLmVsZW1lbnRzKXwxMDI0fDI2MjE0NCxXLnRyYW5zZm9ybUZsYWdzJjE2Mzg0JiYoVy50cmFuc2Zvcm1GbGFnc3w9MzI4OTYpLFd9ZnVuY3Rpb24gU3QoXyxXKXtyZXR1cm4gXy5lbGVtZW50cyE9PVc/QSh4aShXKSxfKTpffWZ1bmN0aW9uIHBhKF8pe3ZhciBXPXVlKDIwMik7cmV0dXJuIFcuZWxlbWVudHM9bmUoXyksVy50cmFuc2Zvcm1GbGFnc3w9ZihXLmVsZW1lbnRzKXwxMDI0fDI2MjE0NCxXfWZ1bmN0aW9uIGRuKF8sVyl7cmV0dXJuIF8uZWxlbWVudHMhPT1XP0EocGEoVyksXyk6X31mdW5jdGlvbiBKbihfLFcsVGUsY3Ipe3ZhciBuaT1ycigyMDMsdm9pZCAwLHZvaWQgMCxUZSxjciYmeSgpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEoY3IpKTtyZXR1cm4gbmkucHJvcGVydHlOYW1lPU1jKFcpLG5pLmRvdERvdERvdFRva2VuPV8sbmkudHJhbnNmb3JtRmxhZ3N8PW9lKG5pLmRvdERvdERvdFRva2VuKXwxMDI0LG5pLnByb3BlcnR5TmFtZSYmKG5pLnRyYW5zZm9ybUZsYWdzfD1lLmlzSWRlbnRpZmllcihuaS5wcm9wZXJ0eU5hbWUpP20obmkucHJvcGVydHlOYW1lKTpvZShuaS5wcm9wZXJ0eU5hbWUpKSxfJiYobmkudHJhbnNmb3JtRmxhZ3N8PTE2Mzg0KSxuaX1mdW5jdGlvbiBRZShfLFcsVGUsY3Isbmkpe3JldHVybiBfLnByb3BlcnR5TmFtZSE9PVRlfHxfLmRvdERvdERvdFRva2VuIT09V3x8Xy5uYW1lIT09Y3J8fF8uaW5pdGlhbGl6ZXIhPT1uaT9BKEpuKFcsVGUsY3IsbmkpLF8pOl99ZnVuY3Rpb24gR3IoXyl7dmFyIFc9dWUoXyk7cmV0dXJuIFd9ZnVuY3Rpb24gUyhfLFcpe3ZhciBUZT1HcigyMDQpLGNyPV8mJmUubGFzdE9yVW5kZWZpbmVkKF8pLG5pPW5lKF8sY3ImJmUuaXNPbWl0dGVkRXhwcmVzc2lvbihjcik/ITA6dm9pZCAwKTtyZXR1cm4gVGUuZWxlbWVudHM9eSgpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25zT2ZDb21tYURlbGltaXRlZExpc3QobmkpLFRlLm11bHRpTGluZT1XLFRlLnRyYW5zZm9ybUZsYWdzfD1mKFRlLmVsZW1lbnRzKSxUZX1mdW5jdGlvbiBDZShfLFcpe3JldHVybiBfLmVsZW1lbnRzIT09Vz9BKFMoVyxfLm11bHRpTGluZSksXyk6X31mdW5jdGlvbiBxZShfLFcpe3ZhciBUZT1HcigyMDUpO3JldHVybiBUZS5wcm9wZXJ0aWVzPW5lKF8pLFRlLm11bHRpTGluZT1XLFRlLnRyYW5zZm9ybUZsYWdzfD1mKFRlLnByb3BlcnRpZXMpLFRlfWZ1bmN0aW9uIGJyKF8sVyl7cmV0dXJuIF8ucHJvcGVydGllcyE9PVc/QShxZShXLF8ubXVsdGlMaW5lKSxfKTpffWZ1bmN0aW9uIFpyKF8sVyl7dmFyIFRlPUdyKDIwNik7cmV0dXJuIFRlLmV4cHJlc3Npb249eSgpLnBhcmVudGhlc2l6ZUxlZnRTaWRlT2ZBY2Nlc3MoXyksVGUubmFtZT1NYyhXKSxUZS50cmFuc2Zvcm1GbGFncz1vZShUZS5leHByZXNzaW9uKXwoZS5pc0lkZW50aWZpZXIoVGUubmFtZSk/bShUZS5uYW1lKTpvZShUZS5uYW1lKSksZS5pc1N1cGVyS2V5d29yZChfKSYmKFRlLnRyYW5zZm9ybUZsYWdzfD0zODQpLFRlfWZ1bmN0aW9uIFNpKF8sVyxUZSl7cmV0dXJuIGUuaXNQcm9wZXJ0eUFjY2Vzc0NoYWluKF8pP1FpKF8sVyxfLnF1ZXN0aW9uRG90VG9rZW4sZS5jYXN0KFRlLGUuaXNJZGVudGlmaWVyKSk6Xy5leHByZXNzaW9uIT09V3x8Xy5uYW1lIT09VGU/QShacihXLFRlKSxfKTpffWZ1bmN0aW9uIFBpKF8sVyxUZSl7dmFyIGNyPUdyKDIwNik7cmV0dXJuIGNyLmZsYWdzfD0zMixjci5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKF8pLGNyLnF1ZXN0aW9uRG90VG9rZW49Vyxjci5uYW1lPU1jKFRlKSxjci50cmFuc2Zvcm1GbGFnc3w9MzJ8b2UoY3IuZXhwcmVzc2lvbil8b2UoY3IucXVlc3Rpb25Eb3RUb2tlbil8KGUuaXNJZGVudGlmaWVyKGNyLm5hbWUpP20oY3IubmFtZSk6b2UoY3IubmFtZSkpLGNyfWZ1bmN0aW9uIFFpKF8sVyxUZSxjcil7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCEhKF8uZmxhZ3MmMzIpLFwiQ2Fubm90IHVwZGF0ZSBhIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiB1c2luZyB1cGRhdGVQcm9wZXJ0eUFjY2Vzc0NoYWluLiBVc2UgdXBkYXRlUHJvcGVydHlBY2Nlc3MgaW5zdGVhZC5cIiksXy5leHByZXNzaW9uIT09V3x8Xy5xdWVzdGlvbkRvdFRva2VuIT09VGV8fF8ubmFtZSE9PWNyP0EoUGkoVyxUZSxjciksXyk6X31mdW5jdGlvbiBDdChfLFcpe3ZhciBUZT1HcigyMDcpO3JldHVybiBUZS5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKF8pLFRlLmFyZ3VtZW50RXhwcmVzc2lvbj1ZdShXKSxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUuZXhwcmVzc2lvbil8b2UoVGUuYXJndW1lbnRFeHByZXNzaW9uKSxlLmlzU3VwZXJLZXl3b3JkKF8pJiYoVGUudHJhbnNmb3JtRmxhZ3N8PTM4NCksVGV9ZnVuY3Rpb24gc2EoXyxXLFRlKXtyZXR1cm4gZS5pc0VsZW1lbnRBY2Nlc3NDaGFpbihfKT9XYShfLFcsXy5xdWVzdGlvbkRvdFRva2VuLFRlKTpfLmV4cHJlc3Npb24hPT1XfHxfLmFyZ3VtZW50RXhwcmVzc2lvbiE9PVRlP0EoQ3QoVyxUZSksXyk6X31mdW5jdGlvbiBlbihfLFcsVGUpe3ZhciBjcj1HcigyMDcpO3JldHVybiBjci5mbGFnc3w9MzIsY3IuZXhwcmVzc2lvbj15KCkucGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2VzcyhfKSxjci5xdWVzdGlvbkRvdFRva2VuPVcsY3IuYXJndW1lbnRFeHByZXNzaW9uPVl1KFRlKSxjci50cmFuc2Zvcm1GbGFnc3w9b2UoY3IuZXhwcmVzc2lvbil8b2UoY3IucXVlc3Rpb25Eb3RUb2tlbil8b2UoY3IuYXJndW1lbnRFeHByZXNzaW9uKXwzMixjcn1mdW5jdGlvbiBXYShfLFcsVGUsY3Ipe3JldHVybiBlLkRlYnVnLmFzc2VydCghIShfLmZsYWdzJjMyKSxcIkNhbm5vdCB1cGRhdGUgYSBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiB1c2luZyB1cGRhdGVFbGVtZW50QWNjZXNzQ2hhaW4uIFVzZSB1cGRhdGVFbGVtZW50QWNjZXNzIGluc3RlYWQuXCIpLF8uZXhwcmVzc2lvbiE9PVd8fF8ucXVlc3Rpb25Eb3RUb2tlbiE9PVRlfHxfLmFyZ3VtZW50RXhwcmVzc2lvbiE9PWNyP0EoZW4oVyxUZSxjciksXyk6X31mdW5jdGlvbiBxbihfLFcsVGUpe3ZhciBjcj1HcigyMDgpO3JldHVybiBjci5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKF8pLGNyLnR5cGVBcmd1bWVudHM9YmMoVyksY3IuYXJndW1lbnRzPXkoKS5wYXJlbnRoZXNpemVFeHByZXNzaW9uc09mQ29tbWFEZWxpbWl0ZWRMaXN0KG5lKFRlKSksY3IudHJhbnNmb3JtRmxhZ3N8PW9lKGNyLmV4cHJlc3Npb24pfGYoY3IudHlwZUFyZ3VtZW50cyl8Zihjci5hcmd1bWVudHMpLGNyLnR5cGVBcmd1bWVudHMmJihjci50cmFuc2Zvcm1GbGFnc3w9MSksZS5pc0ltcG9ydEtleXdvcmQoY3IuZXhwcmVzc2lvbik/Y3IudHJhbnNmb3JtRmxhZ3N8PTQxOTQzMDQ6ZS5pc1N1cGVyUHJvcGVydHkoY3IuZXhwcmVzc2lvbikmJihjci50cmFuc2Zvcm1GbGFnc3w9ODE5MiksY3J9ZnVuY3Rpb24gbW8oXyxXLFRlLGNyKXtyZXR1cm4gZS5pc0NhbGxDaGFpbihfKT9HbyhfLFcsXy5xdWVzdGlvbkRvdFRva2VuLFRlLGNyKTpfLmV4cHJlc3Npb24hPT1XfHxfLnR5cGVBcmd1bWVudHMhPT1UZXx8Xy5hcmd1bWVudHMhPT1jcj9BKHFuKFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24gU28oXyxXLFRlLGNyKXt2YXIgbmk9R3IoMjA4KTtyZXR1cm4gbmkuZmxhZ3N8PTMyLG5pLmV4cHJlc3Npb249eSgpLnBhcmVudGhlc2l6ZUxlZnRTaWRlT2ZBY2Nlc3MoXyksbmkucXVlc3Rpb25Eb3RUb2tlbj1XLG5pLnR5cGVBcmd1bWVudHM9YmMoVGUpLG5pLmFyZ3VtZW50cz15KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbnNPZkNvbW1hRGVsaW1pdGVkTGlzdChuZShjcikpLG5pLnRyYW5zZm9ybUZsYWdzfD1vZShuaS5leHByZXNzaW9uKXxvZShuaS5xdWVzdGlvbkRvdFRva2VuKXxmKG5pLnR5cGVBcmd1bWVudHMpfGYobmkuYXJndW1lbnRzKXwzMixuaS50eXBlQXJndW1lbnRzJiYobmkudHJhbnNmb3JtRmxhZ3N8PTEpLGUuaXNTdXBlclByb3BlcnR5KG5pLmV4cHJlc3Npb24pJiYobmkudHJhbnNmb3JtRmxhZ3N8PTgxOTIpLG5pfWZ1bmN0aW9uIEdvKF8sVyxUZSxjcixuaSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCEhKF8uZmxhZ3MmMzIpLFwiQ2Fubm90IHVwZGF0ZSBhIENhbGxFeHByZXNzaW9uIHVzaW5nIHVwZGF0ZUNhbGxDaGFpbi4gVXNlIHVwZGF0ZUNhbGwgaW5zdGVhZC5cIiksXy5leHByZXNzaW9uIT09V3x8Xy5xdWVzdGlvbkRvdFRva2VuIT09VGV8fF8udHlwZUFyZ3VtZW50cyE9PWNyfHxfLmFyZ3VtZW50cyE9PW5pP0EoU28oVyxUZSxjcixuaSksXyk6X31mdW5jdGlvbiB5cyhfLFcsVGUpe3ZhciBjcj1HcigyMDkpO3JldHVybiBjci5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVFeHByZXNzaW9uT2ZOZXcoXyksY3IudHlwZUFyZ3VtZW50cz1iYyhXKSxjci5hcmd1bWVudHM9VGU/eSgpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25zT2ZDb21tYURlbGltaXRlZExpc3QoVGUpOnZvaWQgMCxjci50cmFuc2Zvcm1GbGFnc3w9b2UoY3IuZXhwcmVzc2lvbil8Zihjci50eXBlQXJndW1lbnRzKXxmKGNyLmFyZ3VtZW50cyl8MzIsY3IudHlwZUFyZ3VtZW50cyYmKGNyLnRyYW5zZm9ybUZsYWdzfD0xKSxjcn1mdW5jdGlvbiBQYyhfLFcsVGUsY3Ipe3JldHVybiBfLmV4cHJlc3Npb24hPT1XfHxfLnR5cGVBcmd1bWVudHMhPT1UZXx8Xy5hcmd1bWVudHMhPT1jcj9BKHlzKFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24gVmMoXyxXLFRlKXt2YXIgY3I9R3IoMjEwKTtyZXR1cm4gY3IudGFnPXkoKS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKF8pLGNyLnR5cGVBcmd1bWVudHM9YmMoVyksY3IudGVtcGxhdGU9VGUsY3IudHJhbnNmb3JtRmxhZ3N8PW9lKGNyLnRhZyl8Zihjci50eXBlQXJndW1lbnRzKXxvZShjci50ZW1wbGF0ZSl8MTAyNCxjci50eXBlQXJndW1lbnRzJiYoY3IudHJhbnNmb3JtRmxhZ3N8PTEpLGUuaGFzSW52YWxpZEVzY2FwZShjci50ZW1wbGF0ZSkmJihjci50cmFuc2Zvcm1GbGFnc3w9MTI4KSxjcn1mdW5jdGlvbiBLYyhfLFcsVGUsY3Ipe3JldHVybiBfLnRhZyE9PVd8fF8udHlwZUFyZ3VtZW50cyE9PVRlfHxfLnRlbXBsYXRlIT09Y3I/QShWYyhXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIFhzKF8sVyl7dmFyIFRlPUdyKDIxMSk7cmV0dXJuIFRlLmV4cHJlc3Npb249eSgpLnBhcmVudGhlc2l6ZU9wZXJhbmRPZlByZWZpeFVuYXJ5KFcpLFRlLnR5cGU9XyxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUuZXhwcmVzc2lvbil8b2UoVGUudHlwZSl8MSxUZX1mdW5jdGlvbiBwYyhfLFcsVGUpe3JldHVybiBfLnR5cGUhPT1XfHxfLmV4cHJlc3Npb24hPT1UZT9BKFhzKFcsVGUpLF8pOl99ZnVuY3Rpb24gaHMoXyl7dmFyIFc9R3IoMjEyKTtyZXR1cm4gVy5leHByZXNzaW9uPV8sVy50cmFuc2Zvcm1GbGFncz1vZShXLmV4cHJlc3Npb24pLFd9ZnVuY3Rpb24gdGMoXyxXKXtyZXR1cm4gXy5leHByZXNzaW9uIT09Vz9BKGhzKFcpLF8pOl99ZnVuY3Rpb24gcHMoXyxXLFRlLGNyLG5pLHJ0LHl0KXt2YXIgWGE9UmUoMjEzLHZvaWQgMCxfLFRlLGNyLG5pLHJ0LHl0KTtyZXR1cm4gWGEuYXN0ZXJpc2tUb2tlbj1XLFhhLnRyYW5zZm9ybUZsYWdzfD1vZShYYS5hc3Rlcmlza1Rva2VuKSxYYS50eXBlUGFyYW1ldGVycyYmKFhhLnRyYW5zZm9ybUZsYWdzfD0xKSxlLm1vZGlmaWVyc1RvRmxhZ3MoWGEubW9kaWZpZXJzKSYyNTY/WGEuYXN0ZXJpc2tUb2tlbj9YYS50cmFuc2Zvcm1GbGFnc3w9MTI4OlhhLnRyYW5zZm9ybUZsYWdzfD0yNTY6WGEuYXN0ZXJpc2tUb2tlbiYmKFhhLnRyYW5zZm9ybUZsYWdzfD0yMDQ4KSxYYX1mdW5jdGlvbiBRcyhfLFcsVGUsY3IsbmkscnQseXQsWGEpe3JldHVybiBfLm5hbWUhPT1jcnx8Xy5tb2RpZmllcnMhPT1XfHxfLmFzdGVyaXNrVG9rZW4hPT1UZXx8Xy50eXBlUGFyYW1ldGVycyE9PW5pfHxfLnBhcmFtZXRlcnMhPT1ydHx8Xy50eXBlIT09eXR8fF8uYm9keSE9PVhhP3plKHBzKFcsVGUsY3IsbmkscnQseXQsWGEpLF8pOl99ZnVuY3Rpb24ganMoXyxXLFRlLGNyLG5pLHJ0KXt2YXIgeXQ9UmUoMjE0LHZvaWQgMCxfLHZvaWQgMCxXLFRlLGNyLHkoKS5wYXJlbnRoZXNpemVDb25jaXNlQm9keU9mQXJyb3dGdW5jdGlvbihydCkpO3JldHVybiB5dC5lcXVhbHNHcmVhdGVyVGhhblRva2VuPW5pIT1udWxsP25pOklyKDM4KSx5dC50cmFuc2Zvcm1GbGFnc3w9b2UoeXQuZXF1YWxzR3JlYXRlclRoYW5Ub2tlbil8MTAyNCxlLm1vZGlmaWVyc1RvRmxhZ3MoeXQubW9kaWZpZXJzKSYyNTYmJih5dC50cmFuc2Zvcm1GbGFnc3w9ODQ0OCkseXR9ZnVuY3Rpb24gZHMoXyxXLFRlLGNyLG5pLHJ0LHl0KXtyZXR1cm4gXy5tb2RpZmllcnMhPT1XfHxfLnR5cGVQYXJhbWV0ZXJzIT09VGV8fF8ucGFyYW1ldGVycyE9PWNyfHxfLnR5cGUhPT1uaXx8Xy5lcXVhbHNHcmVhdGVyVGhhblRva2VuIT09cnR8fF8uYm9keSE9PXl0P3plKGpzKFcsVGUsY3IsbmkscnQseXQpLF8pOl99ZnVuY3Rpb24gSmkoXyl7dmFyIFc9R3IoMjE1KTtyZXR1cm4gVy5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVPcGVyYW5kT2ZQcmVmaXhVbmFyeShfKSxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmV4cHJlc3Npb24pLFd9ZnVuY3Rpb24gY2UoXyxXKXtyZXR1cm4gXy5leHByZXNzaW9uIT09Vz9BKEppKFcpLF8pOl99ZnVuY3Rpb24gUnIoXyl7dmFyIFc9R3IoMjE2KTtyZXR1cm4gVy5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVPcGVyYW5kT2ZQcmVmaXhVbmFyeShfKSxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmV4cHJlc3Npb24pLFd9ZnVuY3Rpb24geWkoXyxXKXtyZXR1cm4gXy5leHByZXNzaW9uIT09Vz9BKFJyKFcpLF8pOl99ZnVuY3Rpb24gcWkoXyl7dmFyIFc9R3IoMjE3KTtyZXR1cm4gVy5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVPcGVyYW5kT2ZQcmVmaXhVbmFyeShfKSxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmV4cHJlc3Npb24pLFd9ZnVuY3Rpb24gamUoXyxXKXtyZXR1cm4gXy5leHByZXNzaW9uIT09Vz9BKHFpKFcpLF8pOl99ZnVuY3Rpb24gSHIoXyl7dmFyIFc9R3IoMjE4KTtyZXR1cm4gVy5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVPcGVyYW5kT2ZQcmVmaXhVbmFyeShfKSxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmV4cHJlc3Npb24pfDI1NnwxMjh8MTA0ODU3NixXfWZ1bmN0aW9uIHB0KF8sVyl7cmV0dXJuIF8uZXhwcmVzc2lvbiE9PVc/QShIcihXKSxfKTpffWZ1bmN0aW9uIFB0KF8sVyl7dmFyIFRlPUdyKDIxOSk7cmV0dXJuIFRlLm9wZXJhdG9yPV8sVGUub3BlcmFuZD15KCkucGFyZW50aGVzaXplT3BlcmFuZE9mUHJlZml4VW5hcnkoVyksVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLm9wZXJhbmQpLChfPT09NDV8fF89PT00NikmJmUuaXNJZGVudGlmaWVyKFRlLm9wZXJhbmQpJiYhZS5pc0dlbmVyYXRlZElkZW50aWZpZXIoVGUub3BlcmFuZCkmJiFlLmlzTG9jYWxOYW1lKFRlLm9wZXJhbmQpJiYoVGUudHJhbnNmb3JtRmxhZ3N8PTY3MTA4ODY0KSxUZX1mdW5jdGlvbiBnYShfLFcpe3JldHVybiBfLm9wZXJhbmQhPT1XP0EoUHQoXy5vcGVyYXRvcixXKSxfKTpffWZ1bmN0aW9uIHVhKF8sVyl7dmFyIFRlPUdyKDIyMCk7cmV0dXJuIFRlLm9wZXJhdG9yPVcsVGUub3BlcmFuZD15KCkucGFyZW50aGVzaXplT3BlcmFuZE9mUG9zdGZpeFVuYXJ5KF8pLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5vcGVyYW5kKSxlLmlzSWRlbnRpZmllcihUZS5vcGVyYW5kKSYmIWUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKFRlLm9wZXJhbmQpJiYhZS5pc0xvY2FsTmFtZShUZS5vcGVyYW5kKSYmKFRlLnRyYW5zZm9ybUZsYWdzfD02NzEwODg2NCksVGV9ZnVuY3Rpb24gWG4oXyxXKXtyZXR1cm4gXy5vcGVyYW5kIT09Vz9BKHVhKFcsXy5vcGVyYXRvciksXyk6X31mdW5jdGlvbiBqcihfLFcsVGUpe3ZhciBjcj1HcigyMjEpLG5pPVJsKFcpLHJ0PW5pLmtpbmQ7cmV0dXJuIGNyLmxlZnQ9eSgpLnBhcmVudGhlc2l6ZUxlZnRTaWRlT2ZCaW5hcnkocnQsXyksY3Iub3BlcmF0b3JUb2tlbj1uaSxjci5yaWdodD15KCkucGFyZW50aGVzaXplUmlnaHRTaWRlT2ZCaW5hcnkocnQsY3IubGVmdCxUZSksY3IudHJhbnNmb3JtRmxhZ3N8PW9lKGNyLmxlZnQpfG9lKGNyLm9wZXJhdG9yVG9rZW4pfG9lKGNyLnJpZ2h0KSxydD09PTYwP2NyLnRyYW5zZm9ybUZsYWdzfD0zMjpydD09PTYzP2UuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihjci5sZWZ0KT9jci50cmFuc2Zvcm1GbGFnc3w9NTI0OHxmbyhjci5sZWZ0KTplLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihjci5sZWZ0KSYmKGNyLnRyYW5zZm9ybUZsYWdzfD01MTIwfGZvKGNyLmxlZnQpKTpydD09PTQyfHxydD09PTY3P2NyLnRyYW5zZm9ybUZsYWdzfD01MTI6ZS5pc0xvZ2ljYWxPckNvYWxlc2NpbmdBc3NpZ25tZW50T3BlcmF0b3IocnQpJiYoY3IudHJhbnNmb3JtRmxhZ3N8PTE2KSxjcn1mdW5jdGlvbiBmbyhfKXtpZihfLnRyYW5zZm9ybUZsYWdzJjMyNzY4KXJldHVybiAzMjc2ODtpZihfLnRyYW5zZm9ybUZsYWdzJjEyOClmb3IodmFyIFc9MCxUZT1lLmdldEVsZW1lbnRzT2ZCaW5kaW5nT3JBc3NpZ25tZW50UGF0dGVybihfKTtXPFRlLmxlbmd0aDtXKyspe3ZhciBjcj1UZVtXXSxuaT1lLmdldFRhcmdldE9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoY3IpO2lmKG5pJiZlLmlzQXNzaWdubWVudFBhdHRlcm4obmkpKXtpZihuaS50cmFuc2Zvcm1GbGFncyYzMjc2OClyZXR1cm4gMzI3Njg7aWYobmkudHJhbnNmb3JtRmxhZ3MmMTI4KXt2YXIgcnQ9Zm8obmkpO2lmKHJ0KXJldHVybiBydH19fXJldHVybiAwfWZ1bmN0aW9uIHhzKF8sVyxUZSxjcil7cmV0dXJuIF8ubGVmdCE9PVd8fF8ub3BlcmF0b3JUb2tlbiE9PVRlfHxfLnJpZ2h0IT09Y3I/QShqcihXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIEZvKF8sVyxUZSxjcixuaSl7dmFyIHJ0PUdyKDIyMik7cmV0dXJuIHJ0LmNvbmRpdGlvbj15KCkucGFyZW50aGVzaXplQ29uZGl0aW9uT2ZDb25kaXRpb25hbEV4cHJlc3Npb24oXykscnQucXVlc3Rpb25Ub2tlbj1XIT1udWxsP1c6SXIoNTcpLHJ0LndoZW5UcnVlPXkoKS5wYXJlbnRoZXNpemVCcmFuY2hPZkNvbmRpdGlvbmFsRXhwcmVzc2lvbihUZSkscnQuY29sb25Ub2tlbj1jciE9bnVsbD9jcjpJcig1OCkscnQud2hlbkZhbHNlPXkoKS5wYXJlbnRoZXNpemVCcmFuY2hPZkNvbmRpdGlvbmFsRXhwcmVzc2lvbihuaSkscnQudHJhbnNmb3JtRmxhZ3N8PW9lKHJ0LmNvbmRpdGlvbil8b2UocnQucXVlc3Rpb25Ub2tlbil8b2UocnQud2hlblRydWUpfG9lKHJ0LmNvbG9uVG9rZW4pfG9lKHJ0LndoZW5GYWxzZSkscnR9ZnVuY3Rpb24ga28oXyxXLFRlLGNyLG5pLHJ0KXtyZXR1cm4gXy5jb25kaXRpb24hPT1XfHxfLnF1ZXN0aW9uVG9rZW4hPT1UZXx8Xy53aGVuVHJ1ZSE9PWNyfHxfLmNvbG9uVG9rZW4hPT1uaXx8Xy53aGVuRmFsc2UhPT1ydD9BKEZvKFcsVGUsY3IsbmkscnQpLF8pOl99ZnVuY3Rpb24gQW8oXyxXKXt2YXIgVGU9R3IoMjIzKTtyZXR1cm4gVGUuaGVhZD1fLFRlLnRlbXBsYXRlU3BhbnM9bmUoVyksVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLmhlYWQpfGYoVGUudGVtcGxhdGVTcGFucyl8MTAyNCxUZX1mdW5jdGlvbiBNcyhfLFcsVGUpe3JldHVybiBfLmhlYWQhPT1XfHxfLnRlbXBsYXRlU3BhbnMhPT1UZT9BKEFvKFcsVGUpLF8pOl99ZnVuY3Rpb24gQnMoXyxXLFRlLGNyKXtjcj09PXZvaWQgMCYmKGNyPTApLGUuRGVidWcuYXNzZXJ0KCEoY3ImLTIwNDkpLFwiVW5zdXBwb3J0ZWQgdGVtcGxhdGUgZmxhZ3MuXCIpO3ZhciBuaT12b2lkIDA7aWYoVGUhPT12b2lkIDAmJlRlIT09VyYmKG5pPXAoXyxUZSksdHlwZW9mIG5pPT1cIm9iamVjdFwiKSlyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiSW52YWxpZCByYXcgdGV4dFwiKTtpZihXPT09dm9pZCAwKXtpZihuaT09PXZvaWQgMClyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiQXJndW1lbnRzICd0ZXh0JyBhbmQgJ3Jhd1RleHQnIG1heSBub3QgYm90aCBiZSB1bmRlZmluZWQuXCIpO1c9bml9ZWxzZSBuaSE9PXZvaWQgMCYmZS5EZWJ1Zy5hc3NlcnQoVz09PW5pLFwiRXhwZWN0ZWQgYXJndW1lbnQgJ3RleHQnIHRvIGJlIHRoZSBub3JtYWxpemVkIChpLmUuICdjb29rZWQnKSB2ZXJzaW9uIG9mIGFyZ3VtZW50ICdyYXdUZXh0Jy5cIik7cmV0dXJuIHhjKF8sVyxUZSxjcil9ZnVuY3Rpb24geGMoXyxXLFRlLGNyKXt2YXIgbmk9eXIoXyk7cmV0dXJuIG5pLnRleHQ9VyxuaS5yYXdUZXh0PVRlLG5pLnRlbXBsYXRlRmxhZ3M9Y3ImMjA0OCxuaS50cmFuc2Zvcm1GbGFnc3w9MTAyNCxuaS50ZW1wbGF0ZUZsYWdzJiYobmkudHJhbnNmb3JtRmxhZ3N8PTEyOCksbml9ZnVuY3Rpb24gc3UoXyxXLFRlKXtyZXR1cm4gQnMoMTUsXyxXLFRlKX1mdW5jdGlvbiB0bChfLFcsVGUpe3JldHVybiBCcygxNixfLFcsVGUpfWZ1bmN0aW9uIFpjKF8sVyxUZSl7cmV0dXJuIEJzKDE3LF8sVyxUZSl9ZnVuY3Rpb24gUmYoXyxXLFRlKXtyZXR1cm4gQnMoMTQsXyxXLFRlKX1mdW5jdGlvbiBhbChfLFcpe2UuRGVidWcuYXNzZXJ0KCFffHwhIVcsXCJBIGBZaWVsZEV4cHJlc3Npb25gIHdpdGggYW4gYXN0ZXJpc2tUb2tlbiBtdXN0IGhhdmUgYW4gZXhwcmVzc2lvbi5cIik7dmFyIFRlPUdyKDIyNCk7cmV0dXJuIFRlLmV4cHJlc3Npb249VyYmeSgpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEoVyksVGUuYXN0ZXJpc2tUb2tlbj1fLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5leHByZXNzaW9uKXxvZShUZS5hc3Rlcmlza1Rva2VuKXwxMDI0fDEyOHw1MjQyODgsVGV9ZnVuY3Rpb24gSm8oXyxXLFRlKXtyZXR1cm4gXy5leHByZXNzaW9uIT09VGV8fF8uYXN0ZXJpc2tUb2tlbiE9PVc/QShhbChXLFRlKSxfKTpffWZ1bmN0aW9uIGV1KF8pe3ZhciBXPUdyKDIyNSk7cmV0dXJuIFcuZXhwcmVzc2lvbj15KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYShfKSxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmV4cHJlc3Npb24pfDEwMjR8MTYzODQsV31mdW5jdGlvbiBXcyhfLFcpe3JldHVybiBfLmV4cHJlc3Npb24hPT1XP0EoZXUoVyksXyk6X31mdW5jdGlvbiBwdShfLFcsVGUsY3IsbmkscnQpe3ZhciB5dD1IZSgyMjYsXyxXLFRlLGNyLG5pLHJ0KTtyZXR1cm4geXQudHJhbnNmb3JtRmxhZ3N8PTEwMjQseXR9ZnVuY3Rpb24gVXUoXyxXLFRlLGNyLG5pLHJ0LHl0KXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5uYW1lIT09Y3J8fF8udHlwZVBhcmFtZXRlcnMhPT1uaXx8Xy5oZXJpdGFnZUNsYXVzZXMhPT1ydHx8Xy5tZW1iZXJzIT09eXQ/QShwdShXLFRlLGNyLG5pLHJ0LHl0KSxfKTpffWZ1bmN0aW9uIFFsKCl7cmV0dXJuIEdyKDIyNyl9ZnVuY3Rpb24geGwoXyxXKXt2YXIgVGU9dWUoMjI4KTtyZXR1cm4gVGUuZXhwcmVzc2lvbj15KCkucGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2VzcyhfKSxUZS50eXBlQXJndW1lbnRzPVcmJnkoKS5wYXJlbnRoZXNpemVUeXBlQXJndW1lbnRzKFcpLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5leHByZXNzaW9uKXxmKFRlLnR5cGVBcmd1bWVudHMpfDEwMjQsVGV9ZnVuY3Rpb24gWWEoXyxXLFRlKXtyZXR1cm4gXy5leHByZXNzaW9uIT09V3x8Xy50eXBlQXJndW1lbnRzIT09VGU/QSh4bChXLFRlKSxfKTpffWZ1bmN0aW9uIGR1KF8sVyl7dmFyIFRlPUdyKDIyOSk7cmV0dXJuIFRlLmV4cHJlc3Npb249XyxUZS50eXBlPVcsVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLmV4cHJlc3Npb24pfG9lKFRlLnR5cGUpfDEsVGV9ZnVuY3Rpb24gdmMoXyxXLFRlKXtyZXR1cm4gXy5leHByZXNzaW9uIT09V3x8Xy50eXBlIT09VGU/QShkdShXLFRlKSxfKTpffWZ1bmN0aW9uIEtyKF8pe3ZhciBXPUdyKDIzMCk7cmV0dXJuIFcuZXhwcmVzc2lvbj15KCkucGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2VzcyhfKSxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmV4cHJlc3Npb24pfDEsV31mdW5jdGlvbiBfaShfLFcpe3JldHVybiBlLmlzTm9uTnVsbENoYWluKF8pP3R0KF8sVyk6Xy5leHByZXNzaW9uIT09Vz9BKEtyKFcpLF8pOl99ZnVuY3Rpb24gRWkoXyl7dmFyIFc9R3IoMjMwKTtyZXR1cm4gVy5mbGFnc3w9MzIsVy5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKF8pLFcudHJhbnNmb3JtRmxhZ3N8PW9lKFcuZXhwcmVzc2lvbil8MSxXfWZ1bmN0aW9uIHR0KF8sVyl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCEhKF8uZmxhZ3MmMzIpLFwiQ2Fubm90IHVwZGF0ZSBhIE5vbk51bGxFeHByZXNzaW9uIHVzaW5nIHVwZGF0ZU5vbk51bGxDaGFpbi4gVXNlIHVwZGF0ZU5vbk51bGxFeHByZXNzaW9uIGluc3RlYWQuXCIpLF8uZXhwcmVzc2lvbiE9PVc/QShFaShXKSxfKTpffWZ1bmN0aW9uIGt0KF8sVyl7dmFyIFRlPUdyKDIzMSk7c3dpdGNoKFRlLmtleXdvcmRUb2tlbj1fLFRlLm5hbWU9VyxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUubmFtZSksXyl7Y2FzZSAxMDM6VGUudHJhbnNmb3JtRmxhZ3N8PTEwMjQ7YnJlYWs7Y2FzZSAxMDA6VGUudHJhbnNmb3JtRmxhZ3N8PTQ7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihfKX1yZXR1cm4gVGV9ZnVuY3Rpb24gYnQoXyxXKXtyZXR1cm4gXy5uYW1lIT09Vz9BKGt0KF8ua2V5d29yZFRva2VuLFcpLF8pOl99ZnVuY3Rpb24gaWEoXyxXKXt2YXIgVGU9dWUoMjMzKTtyZXR1cm4gVGUuZXhwcmVzc2lvbj1fLFRlLmxpdGVyYWw9VyxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUuZXhwcmVzc2lvbil8b2UoVGUubGl0ZXJhbCl8MTAyNCxUZX1mdW5jdGlvbiBYdChfLFcsVGUpe3JldHVybiBfLmV4cHJlc3Npb24hPT1XfHxfLmxpdGVyYWwhPT1UZT9BKGlhKFcsVGUpLF8pOl99ZnVuY3Rpb24gWmEoKXt2YXIgXz11ZSgyMzQpO3JldHVybiBfLnRyYW5zZm9ybUZsYWdzfD0xMDI0LF99ZnVuY3Rpb24gYm4oXyxXKXt2YXIgVGU9dWUoMjM1KTtyZXR1cm4gVGUuc3RhdGVtZW50cz1uZShfKSxUZS5tdWx0aUxpbmU9VyxUZS50cmFuc2Zvcm1GbGFnc3w9ZihUZS5zdGF0ZW1lbnRzKSxUZX1mdW5jdGlvbiBfYShfLFcpe3JldHVybiBfLnN0YXRlbWVudHMhPT1XP0EoYm4oVyxfLm11bHRpTGluZSksXyk6X31mdW5jdGlvbiBxYShfLFcpe3ZhciBUZT1XZSgyMzcsdm9pZCAwLF8pO3JldHVybiBUZS5kZWNsYXJhdGlvbkxpc3Q9ZS5pc0FycmF5KFcpP0NsKFcpOlcsVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLmRlY2xhcmF0aW9uTGlzdCksZS5tb2RpZmllcnNUb0ZsYWdzKFRlLm1vZGlmaWVycykmMiYmKFRlLnRyYW5zZm9ybUZsYWdzPTEpLFRlfWZ1bmN0aW9uIHJuKF8sVyxUZSl7cmV0dXJuIF8ubW9kaWZpZXJzIT09V3x8Xy5kZWNsYXJhdGlvbkxpc3QhPT1UZT9BKHFhKFcsVGUpLF8pOl99ZnVuY3Rpb24gam4oKXtyZXR1cm4gdWUoMjM2KX1mdW5jdGlvbiBNbyhfKXt2YXIgVz11ZSgyMzgpO3JldHVybiBXLmV4cHJlc3Npb249eSgpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkV4cHJlc3Npb25TdGF0ZW1lbnQoXyksVy50cmFuc2Zvcm1GbGFnc3w9b2UoVy5leHByZXNzaW9uKSxXfWZ1bmN0aW9uIGhvKF8sVyl7cmV0dXJuIF8uZXhwcmVzc2lvbiE9PVc/QShNbyhXKSxfKTpffWZ1bmN0aW9uIGdzKF8sVyxUZSl7dmFyIGNyPXVlKDIzOSk7cmV0dXJuIGNyLmV4cHJlc3Npb249Xyxjci50aGVuU3RhdGVtZW50PUxjKFcpLGNyLmVsc2VTdGF0ZW1lbnQ9TGMoVGUpLGNyLnRyYW5zZm9ybUZsYWdzfD1vZShjci5leHByZXNzaW9uKXxvZShjci50aGVuU3RhdGVtZW50KXxvZShjci5lbHNlU3RhdGVtZW50KSxjcn1mdW5jdGlvbiBTZShfLFcsVGUsY3Ipe3JldHVybiBfLmV4cHJlc3Npb24hPT1XfHxfLnRoZW5TdGF0ZW1lbnQhPT1UZXx8Xy5lbHNlU3RhdGVtZW50IT09Y3I/QShncyhXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIGhyKF8sVyl7dmFyIFRlPXVlKDI0MCk7cmV0dXJuIFRlLnN0YXRlbWVudD1MYyhfKSxUZS5leHByZXNzaW9uPVcsVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLnN0YXRlbWVudCl8b2UoVGUuZXhwcmVzc2lvbiksVGV9ZnVuY3Rpb24gT3IoXyxXLFRlKXtyZXR1cm4gXy5zdGF0ZW1lbnQhPT1XfHxfLmV4cHJlc3Npb24hPT1UZT9BKGhyKFcsVGUpLF8pOl99ZnVuY3Rpb24ga2koXyxXKXt2YXIgVGU9dWUoMjQxKTtyZXR1cm4gVGUuZXhwcmVzc2lvbj1fLFRlLnN0YXRlbWVudD1MYyhXKSxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUuZXhwcmVzc2lvbil8b2UoVGUuc3RhdGVtZW50KSxUZX1mdW5jdGlvbiBkdChfLFcsVGUpe3JldHVybiBfLmV4cHJlc3Npb24hPT1XfHxfLnN0YXRlbWVudCE9PVRlP0Eoa2koVyxUZSksXyk6X31mdW5jdGlvbiBsYShfLFcsVGUsY3Ipe3ZhciBuaT11ZSgyNDIpO3JldHVybiBuaS5pbml0aWFsaXplcj1fLG5pLmNvbmRpdGlvbj1XLG5pLmluY3JlbWVudG9yPVRlLG5pLnN0YXRlbWVudD1MYyhjciksbmkudHJhbnNmb3JtRmxhZ3N8PW9lKG5pLmluaXRpYWxpemVyKXxvZShuaS5jb25kaXRpb24pfG9lKG5pLmluY3JlbWVudG9yKXxvZShuaS5zdGF0ZW1lbnQpLG5pfWZ1bmN0aW9uIHdhKF8sVyxUZSxjcixuaSl7cmV0dXJuIF8uaW5pdGlhbGl6ZXIhPT1XfHxfLmNvbmRpdGlvbiE9PVRlfHxfLmluY3JlbWVudG9yIT09Y3J8fF8uc3RhdGVtZW50IT09bmk/QShsYShXLFRlLGNyLG5pKSxfKTpffWZ1bmN0aW9uIE9uKF8sVyxUZSl7dmFyIGNyPXVlKDI0Myk7cmV0dXJuIGNyLmluaXRpYWxpemVyPV8sY3IuZXhwcmVzc2lvbj1XLGNyLnN0YXRlbWVudD1MYyhUZSksY3IudHJhbnNmb3JtRmxhZ3N8PW9lKGNyLmluaXRpYWxpemVyKXxvZShjci5leHByZXNzaW9uKXxvZShjci5zdGF0ZW1lbnQpLGNyfWZ1bmN0aW9uIE5vKF8sVyxUZSxjcil7cmV0dXJuIF8uaW5pdGlhbGl6ZXIhPT1XfHxfLmV4cHJlc3Npb24hPT1UZXx8Xy5zdGF0ZW1lbnQhPT1jcj9BKE9uKFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24gam8oXyxXLFRlLGNyKXt2YXIgbmk9dWUoMjQ0KTtyZXR1cm4gbmkuYXdhaXRNb2RpZmllcj1fLG5pLmluaXRpYWxpemVyPVcsbmkuZXhwcmVzc2lvbj15KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYShUZSksbmkuc3RhdGVtZW50PUxjKGNyKSxuaS50cmFuc2Zvcm1GbGFnc3w9b2UobmkuYXdhaXRNb2RpZmllcil8b2UobmkuaW5pdGlhbGl6ZXIpfG9lKG5pLmV4cHJlc3Npb24pfG9lKG5pLnN0YXRlbWVudCl8MTAyNCxfJiYobmkudHJhbnNmb3JtRmxhZ3N8PTEyOCksbml9ZnVuY3Rpb24gcG8oXyxXLFRlLGNyLG5pKXtyZXR1cm4gXy5hd2FpdE1vZGlmaWVyIT09V3x8Xy5pbml0aWFsaXplciE9PVRlfHxfLmV4cHJlc3Npb24hPT1jcnx8Xy5zdGF0ZW1lbnQhPT1uaT9BKGpvKFcsVGUsY3IsbmkpLF8pOl99ZnVuY3Rpb24gR24oXyl7dmFyIFc9dWUoMjQ1KTtyZXR1cm4gVy5sYWJlbD1NYyhfKSxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmxhYmVsKXwyMDk3MTUyLFd9ZnVuY3Rpb24gJG4oXyxXKXtyZXR1cm4gXy5sYWJlbCE9PVc/QShHbihXKSxfKTpffWZ1bmN0aW9uIEhvKF8pe3ZhciBXPXVlKDI0Nik7cmV0dXJuIFcubGFiZWw9TWMoXyksVy50cmFuc2Zvcm1GbGFnc3w9b2UoVy5sYWJlbCl8MjA5NzE1MixXfWZ1bmN0aW9uIFpvKF8sVyl7cmV0dXJuIF8ubGFiZWwhPT1XP0EoSG8oVyksXyk6X31mdW5jdGlvbiBFcyhfKXt2YXIgVz11ZSgyNDcpO3JldHVybiBXLmV4cHJlc3Npb249XyxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLmV4cHJlc3Npb24pfDEyOHwyMDk3MTUyLFd9ZnVuY3Rpb24geWMoXyxXKXtyZXR1cm4gXy5leHByZXNzaW9uIT09Vz9BKEVzKFcpLF8pOl99ZnVuY3Rpb24gWHIoXyxXKXt2YXIgVGU9dWUoMjQ4KTtyZXR1cm4gVGUuZXhwcmVzc2lvbj1fLFRlLnN0YXRlbWVudD1MYyhXKSxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUuZXhwcmVzc2lvbil8b2UoVGUuc3RhdGVtZW50KSxUZX1mdW5jdGlvbiBMcyhfLFcsVGUpe3JldHVybiBfLmV4cHJlc3Npb24hPT1XfHxfLnN0YXRlbWVudCE9PVRlP0EoWHIoVyxUZSksXyk6X31mdW5jdGlvbiBJYyhfLFcpe3ZhciBUZT11ZSgyNDkpO3JldHVybiBUZS5leHByZXNzaW9uPXkoKS5wYXJlbnRoZXNpemVFeHByZXNzaW9uRm9yRGlzYWxsb3dlZENvbW1hKF8pLFRlLmNhc2VCbG9jaz1XLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5leHByZXNzaW9uKXxvZShUZS5jYXNlQmxvY2spLFRlfWZ1bmN0aW9uIHp1KF8sVyxUZSl7cmV0dXJuIF8uZXhwcmVzc2lvbiE9PVd8fF8uY2FzZUJsb2NrIT09VGU/QShJYyhXLFRlKSxfKTpffWZ1bmN0aW9uIHZmKF8sVyl7dmFyIFRlPXVlKDI1MCk7cmV0dXJuIFRlLmxhYmVsPU1jKF8pLFRlLnN0YXRlbWVudD1MYyhXKSxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUubGFiZWwpfG9lKFRlLnN0YXRlbWVudCksVGV9ZnVuY3Rpb24gUF8oXyxXLFRlKXtyZXR1cm4gXy5sYWJlbCE9PVd8fF8uc3RhdGVtZW50IT09VGU/QSh2ZihXLFRlKSxfKTpffWZ1bmN0aW9uIEVsKF8pe3ZhciBXPXVlKDI1MSk7cmV0dXJuIFcuZXhwcmVzc2lvbj1fLFcudHJhbnNmb3JtRmxhZ3N8PW9lKFcuZXhwcmVzc2lvbiksV31mdW5jdGlvbiB2cChfLFcpe3JldHVybiBfLmV4cHJlc3Npb24hPT1XP0EoRWwoVyksXyk6X31mdW5jdGlvbiBvbyhfLFcsVGUpe3ZhciBjcj11ZSgyNTIpO3JldHVybiBjci50cnlCbG9jaz1fLGNyLmNhdGNoQ2xhdXNlPVcsY3IuZmluYWxseUJsb2NrPVRlLGNyLnRyYW5zZm9ybUZsYWdzfD1vZShjci50cnlCbG9jayl8b2UoY3IuY2F0Y2hDbGF1c2UpfG9lKGNyLmZpbmFsbHlCbG9jayksY3J9ZnVuY3Rpb24gSV8oXyxXLFRlLGNyKXtyZXR1cm4gXy50cnlCbG9jayE9PVd8fF8uY2F0Y2hDbGF1c2UhPT1UZXx8Xy5maW5hbGx5QmxvY2shPT1jcj9BKG9vKFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24geXAoKXtyZXR1cm4gdWUoMjUzKX1mdW5jdGlvbiBZbChfLFcsVGUsY3Ipe3ZhciBuaT1JZSgyNTQsdm9pZCAwLHZvaWQgMCxfLFRlLGNyJiZ5KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYShjcikpO3JldHVybiBuaS5leGNsYW1hdGlvblRva2VuPVcsbmkudHJhbnNmb3JtRmxhZ3N8PW9lKG5pLmV4Y2xhbWF0aW9uVG9rZW4pLFcmJihuaS50cmFuc2Zvcm1GbGFnc3w9MSksbml9ZnVuY3Rpb24gQmYoXyxXLFRlLGNyLG5pKXtyZXR1cm4gXy5uYW1lIT09V3x8Xy50eXBlIT09Y3J8fF8uZXhjbGFtYXRpb25Ub2tlbiE9PVRlfHxfLmluaXRpYWxpemVyIT09bmk/QShZbChXLFRlLGNyLG5pKSxfKTpffWZ1bmN0aW9uIENsKF8sVyl7Vz09PXZvaWQgMCYmKFc9MCk7dmFyIFRlPXVlKDI1NSk7cmV0dXJuIFRlLmZsYWdzfD1XJjMsVGUuZGVjbGFyYXRpb25zPW5lKF8pLFRlLnRyYW5zZm9ybUZsYWdzfD1mKFRlLmRlY2xhcmF0aW9ucyl8MjA5NzE1MixXJjMmJihUZS50cmFuc2Zvcm1GbGFnc3w9MTMyMDk2KSxUZX1mdW5jdGlvbiBjXyhfLFcpe3JldHVybiBfLmRlY2xhcmF0aW9ucyE9PVc/QShDbChXLF8uZmxhZ3MpLF8pOl99ZnVuY3Rpb24gaHAoXyxXLFRlLGNyLG5pLHJ0LHl0LFhhKXt2YXIgdm89UmUoMjU2LF8sVyxjcixuaSxydCx5dCxYYSk7cmV0dXJuIHZvLmFzdGVyaXNrVG9rZW49VGUsIXZvLmJvZHl8fGUubW9kaWZpZXJzVG9GbGFncyh2by5tb2RpZmllcnMpJjI/dm8udHJhbnNmb3JtRmxhZ3M9MToodm8udHJhbnNmb3JtRmxhZ3N8PW9lKHZvLmFzdGVyaXNrVG9rZW4pfDIwOTcxNTIsZS5tb2RpZmllcnNUb0ZsYWdzKHZvLm1vZGlmaWVycykmMjU2P3ZvLmFzdGVyaXNrVG9rZW4/dm8udHJhbnNmb3JtRmxhZ3N8PTEyODp2by50cmFuc2Zvcm1GbGFnc3w9MjU2OnZvLmFzdGVyaXNrVG9rZW4mJih2by50cmFuc2Zvcm1GbGFnc3w9MjA0OCkpLHZvfWZ1bmN0aW9uIGd1KF8sVyxUZSxjcixuaSxydCx5dCxYYSx2byl7cmV0dXJuIF8uZGVjb3JhdG9ycyE9PVd8fF8ubW9kaWZpZXJzIT09VGV8fF8uYXN0ZXJpc2tUb2tlbiE9PWNyfHxfLm5hbWUhPT1uaXx8Xy50eXBlUGFyYW1ldGVycyE9PXJ0fHxfLnBhcmFtZXRlcnMhPT15dHx8Xy50eXBlIT09WGF8fF8uYm9keSE9PXZvP3plKGhwKFcsVGUsY3IsbmkscnQseXQsWGEsdm8pLF8pOl99ZnVuY3Rpb24gRHAoXyxXLFRlLGNyLG5pLHJ0KXt2YXIgeXQ9SGUoMjU3LF8sVyxUZSxjcixuaSxydCk7cmV0dXJuIGUubW9kaWZpZXJzVG9GbGFncyh5dC5tb2RpZmllcnMpJjI/eXQudHJhbnNmb3JtRmxhZ3M9MTooeXQudHJhbnNmb3JtRmxhZ3N8PTEwMjQseXQudHJhbnNmb3JtRmxhZ3MmNDA5NiYmKHl0LnRyYW5zZm9ybUZsYWdzfD0xKSkseXR9ZnVuY3Rpb24gc2QoXyxXLFRlLGNyLG5pLHJ0LHl0KXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5uYW1lIT09Y3J8fF8udHlwZVBhcmFtZXRlcnMhPT1uaXx8Xy5oZXJpdGFnZUNsYXVzZXMhPT1ydHx8Xy5tZW1iZXJzIT09eXQ/QShEcChXLFRlLGNyLG5pLHJ0LHl0KSxfKTpffWZ1bmN0aW9uIEFhKF8sVyxUZSxjcixuaSxydCl7dmFyIHl0PUVlKDI1OCxfLFcsVGUsY3IsbmkpO3JldHVybiB5dC5tZW1iZXJzPW5lKHJ0KSx5dC50cmFuc2Zvcm1GbGFncz0xLHl0fWZ1bmN0aW9uIHZhKF8sVyxUZSxjcixuaSxydCx5dCl7cmV0dXJuIF8uZGVjb3JhdG9ycyE9PVd8fF8ubW9kaWZpZXJzIT09VGV8fF8ubmFtZSE9PWNyfHxfLnR5cGVQYXJhbWV0ZXJzIT09bml8fF8uaGVyaXRhZ2VDbGF1c2VzIT09cnR8fF8ubWVtYmVycyE9PXl0P0EoQWEoVyxUZSxjcixuaSxydCx5dCksXyk6X31mdW5jdGlvbiBDdShfLFcsVGUsY3Isbmkpe3ZhciBydD1aKDI1OSxfLFcsVGUsY3IpO3JldHVybiBydC50eXBlPW5pLHJ0LnRyYW5zZm9ybUZsYWdzPTEscnR9ZnVuY3Rpb24gcXMoXyxXLFRlLGNyLG5pLHJ0KXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5uYW1lIT09Y3J8fF8udHlwZVBhcmFtZXRlcnMhPT1uaXx8Xy50eXBlIT09cnQ/QShDdShXLFRlLGNyLG5pLHJ0KSxfKTpffWZ1bmN0aW9uIGNkKF8sVyxUZSxjcil7dmFyIG5pPUZlKDI2MCxfLFcsVGUpO3JldHVybiBuaS5tZW1iZXJzPW5lKGNyKSxuaS50cmFuc2Zvcm1GbGFnc3w9ZihuaS5tZW1iZXJzKXwxLG5pLnRyYW5zZm9ybUZsYWdzJj0tMTY3NzcyMTcsbml9ZnVuY3Rpb24gbnMoXyxXLFRlLGNyLG5pKXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5uYW1lIT09Y3J8fF8ubWVtYmVycyE9PW5pP0EoY2QoVyxUZSxjcixuaSksXyk6X31mdW5jdGlvbiBubChfLFcsVGUsY3Isbmkpe25pPT09dm9pZCAwJiYobmk9MCk7dmFyIHJ0PVdlKDI2MSxfLFcpO3JldHVybiBydC5mbGFnc3w9bmkmMTA0NCxydC5uYW1lPVRlLHJ0LmJvZHk9Y3IsZS5tb2RpZmllcnNUb0ZsYWdzKHJ0Lm1vZGlmaWVycykmMj9ydC50cmFuc2Zvcm1GbGFncz0xOnJ0LnRyYW5zZm9ybUZsYWdzfD1vZShydC5uYW1lKXxvZShydC5ib2R5KXwxLHJ0LnRyYW5zZm9ybUZsYWdzJj0tMTY3NzcyMTcscnR9ZnVuY3Rpb24gaGMoXyxXLFRlLGNyLG5pKXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5uYW1lIT09Y3J8fF8uYm9keSE9PW5pP0EobmwoVyxUZSxjcixuaSxfLmZsYWdzKSxfKTpffWZ1bmN0aW9uIGVzKF8pe3ZhciBXPXVlKDI2Mik7cmV0dXJuIFcuc3RhdGVtZW50cz1uZShfKSxXLnRyYW5zZm9ybUZsYWdzfD1mKFcuc3RhdGVtZW50cyksV31mdW5jdGlvbiB1XyhfLFcpe3JldHVybiBfLnN0YXRlbWVudHMhPT1XP0EoZXMoVyksXyk6X31mdW5jdGlvbiBKZihfKXt2YXIgVz11ZSgyNjMpO3JldHVybiBXLmNsYXVzZXM9bmUoXyksVy50cmFuc2Zvcm1GbGFnc3w9ZihXLmNsYXVzZXMpLFd9ZnVuY3Rpb24gd18oXyxXKXtyZXR1cm4gXy5jbGF1c2VzIT09Vz9BKEpmKFcpLF8pOl99ZnVuY3Rpb24gdWQoXyl7dmFyIFc9RmUoMjY0LHZvaWQgMCx2b2lkIDAsXyk7cmV0dXJuIFcudHJhbnNmb3JtRmxhZ3M9MSxXfWZ1bmN0aW9uIGt1KF8sVyl7cmV0dXJuIF8ubmFtZSE9PVc/QSh1ZChXKSxfKTpffWZ1bmN0aW9uIGxkKF8sVyxUZSxjcixuaSl7dmFyIHJ0PUZlKDI2NSxfLFcsY3IpO3JldHVybiBydC5pc1R5cGVPbmx5PVRlLHJ0Lm1vZHVsZVJlZmVyZW5jZT1uaSxydC50cmFuc2Zvcm1GbGFnc3w9b2UocnQubW9kdWxlUmVmZXJlbmNlKSxlLmlzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UocnQubW9kdWxlUmVmZXJlbmNlKXx8KHJ0LnRyYW5zZm9ybUZsYWdzfD0xKSxydC50cmFuc2Zvcm1GbGFncyY9LTE2Nzc3MjE3LHJ0fWZ1bmN0aW9uIGZkKF8sVyxUZSxjcixuaSxydCl7cmV0dXJuIF8uZGVjb3JhdG9ycyE9PVd8fF8ubW9kaWZpZXJzIT09VGV8fF8uaXNUeXBlT25seSE9PWNyfHxfLm5hbWUhPT1uaXx8Xy5tb2R1bGVSZWZlcmVuY2UhPT1ydD9BKGxkKFcsVGUsY3IsbmkscnQpLF8pOl99ZnVuY3Rpb24gYnAoXyxXLFRlLGNyLG5pKXt2YXIgcnQ9V2UoMjY2LF8sVyk7cmV0dXJuIHJ0LmltcG9ydENsYXVzZT1UZSxydC5tb2R1bGVTcGVjaWZpZXI9Y3IscnQuYXNzZXJ0Q2xhdXNlPW5pLHJ0LnRyYW5zZm9ybUZsYWdzfD1vZShydC5pbXBvcnRDbGF1c2UpfG9lKHJ0Lm1vZHVsZVNwZWNpZmllcikscnQudHJhbnNmb3JtRmxhZ3MmPS0xNjc3NzIxNyxydH1mdW5jdGlvbiBTcChfLFcsVGUsY3IsbmkscnQpe3JldHVybiBfLmRlY29yYXRvcnMhPT1XfHxfLm1vZGlmaWVycyE9PVRlfHxfLmltcG9ydENsYXVzZSE9PWNyfHxfLm1vZHVsZVNwZWNpZmllciE9PW5pfHxfLmFzc2VydENsYXVzZSE9PXJ0P0EoYnAoVyxUZSxjcixuaSxydCksXyk6X31mdW5jdGlvbiBUcChfLFcsVGUpe3ZhciBjcj11ZSgyNjcpO3JldHVybiBjci5pc1R5cGVPbmx5PV8sY3IubmFtZT1XLGNyLm5hbWVkQmluZGluZ3M9VGUsY3IudHJhbnNmb3JtRmxhZ3N8PW9lKGNyLm5hbWUpfG9lKGNyLm5hbWVkQmluZGluZ3MpLF8mJihjci50cmFuc2Zvcm1GbGFnc3w9MSksY3IudHJhbnNmb3JtRmxhZ3MmPS0xNjc3NzIxNyxjcn1mdW5jdGlvbiBfZChfLFcsVGUsY3Ipe3JldHVybiBfLmlzVHlwZU9ubHkhPT1XfHxfLm5hbWUhPT1UZXx8Xy5uYW1lZEJpbmRpbmdzIT09Y3I/QShUcChXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIGpmKF8sVyl7dmFyIFRlPXVlKDI5Myk7cmV0dXJuIFRlLmVsZW1lbnRzPW5lKF8pLFRlLm11bHRpTGluZT1XLFRlLnRyYW5zZm9ybUZsYWdzfD00LFRlfWZ1bmN0aW9uIE9fKF8sVyxUZSl7cmV0dXJuIF8uZWxlbWVudHMhPT1XfHxfLm11bHRpTGluZSE9PVRlP0EoamYoVyxUZSksXyk6X31mdW5jdGlvbiBGXyhfLFcpe3ZhciBUZT11ZSgyOTQpO3JldHVybiBUZS5uYW1lPV8sVGUudmFsdWU9VyxUZS50cmFuc2Zvcm1GbGFnc3w9NCxUZX1mdW5jdGlvbiBwZChfLFcsVGUpe3JldHVybiBfLm5hbWUhPT1XfHxfLnZhbHVlIT09VGU/QShGXyhXLFRlKSxfKTpffWZ1bmN0aW9uIHhwKF8sVyl7dmFyIFRlPXVlKDI5NSk7cmV0dXJuIFRlLmFzc2VydENsYXVzZT1fLFRlLm11bHRpTGluZT1XLFRlfWZ1bmN0aW9uIE1fKF8sVyxUZSl7cmV0dXJuIF8uYXNzZXJ0Q2xhdXNlIT09V3x8Xy5tdWx0aUxpbmUhPT1UZT9BKHhwKFcsVGUpLF8pOl99ZnVuY3Rpb24gRXAoXyl7dmFyIFc9dWUoMjY4KTtyZXR1cm4gVy5uYW1lPV8sVy50cmFuc2Zvcm1GbGFnc3w9b2UoVy5uYW1lKSxXLnRyYW5zZm9ybUZsYWdzJj0tMTY3NzcyMTcsV31mdW5jdGlvbiBvbChfLFcpe3JldHVybiBfLm5hbWUhPT1XP0EoRXAoVyksXyk6X31mdW5jdGlvbiBBdShfKXt2YXIgVz11ZSgyNzQpO3JldHVybiBXLm5hbWU9XyxXLnRyYW5zZm9ybUZsYWdzfD1vZShXLm5hbWUpfDQsVy50cmFuc2Zvcm1GbGFncyY9LTE2Nzc3MjE3LFd9ZnVuY3Rpb24gcnUoXyxXKXtyZXR1cm4gXy5uYW1lIT09Vz9BKEF1KFcpLF8pOl99ZnVuY3Rpb24geWYoXyl7dmFyIFc9dWUoMjY5KTtyZXR1cm4gVy5lbGVtZW50cz1uZShfKSxXLnRyYW5zZm9ybUZsYWdzfD1mKFcuZWxlbWVudHMpLFcudHJhbnNmb3JtRmxhZ3MmPS0xNjc3NzIxNyxXfWZ1bmN0aW9uIENwKF8sVyl7cmV0dXJuIF8uZWxlbWVudHMhPT1XP0EoeWYoVyksXyk6X31mdW5jdGlvbiBkZChfLFcsVGUpe3ZhciBjcj11ZSgyNzApO3JldHVybiBjci5pc1R5cGVPbmx5PV8sY3IucHJvcGVydHlOYW1lPVcsY3IubmFtZT1UZSxjci50cmFuc2Zvcm1GbGFnc3w9b2UoY3IucHJvcGVydHlOYW1lKXxvZShjci5uYW1lKSxjci50cmFuc2Zvcm1GbGFncyY9LTE2Nzc3MjE3LGNyfWZ1bmN0aW9uIGtwKF8sVyxUZSxjcil7cmV0dXJuIF8uaXNUeXBlT25seSE9PVd8fF8ucHJvcGVydHlOYW1lIT09VGV8fF8ubmFtZSE9PWNyP0EoZGQoVyxUZSxjciksXyk6X31mdW5jdGlvbiBtdShfLFcsVGUsY3Ipe3ZhciBuaT1XZSgyNzEsXyxXKTtyZXR1cm4gbmkuaXNFeHBvcnRFcXVhbHM9VGUsbmkuZXhwcmVzc2lvbj1UZT95KCkucGFyZW50aGVzaXplUmlnaHRTaWRlT2ZCaW5hcnkoNjMsdm9pZCAwLGNyKTp5KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbk9mRXhwb3J0RGVmYXVsdChjciksbmkudHJhbnNmb3JtRmxhZ3N8PW9lKG5pLmV4cHJlc3Npb24pLG5pLnRyYW5zZm9ybUZsYWdzJj0tMTY3NzcyMTcsbml9ZnVuY3Rpb24gZ2QoXyxXLFRlLGNyKXtyZXR1cm4gXy5kZWNvcmF0b3JzIT09V3x8Xy5tb2RpZmllcnMhPT1UZXx8Xy5leHByZXNzaW9uIT09Y3I/QShtdShXLFRlLF8uaXNFeHBvcnRFcXVhbHMsY3IpLF8pOl99ZnVuY3Rpb24gaGYoXyxXLFRlLGNyLG5pLHJ0KXt2YXIgeXQ9V2UoMjcyLF8sVyk7cmV0dXJuIHl0LmlzVHlwZU9ubHk9VGUseXQuZXhwb3J0Q2xhdXNlPWNyLHl0Lm1vZHVsZVNwZWNpZmllcj1uaSx5dC5hc3NlcnRDbGF1c2U9cnQseXQudHJhbnNmb3JtRmxhZ3N8PW9lKHl0LmV4cG9ydENsYXVzZSl8b2UoeXQubW9kdWxlU3BlY2lmaWVyKSx5dC50cmFuc2Zvcm1GbGFncyY9LTE2Nzc3MjE3LHl0fWZ1bmN0aW9uICRsKF8sVyxUZSxjcixuaSxydCx5dCl7cmV0dXJuIF8uZGVjb3JhdG9ycyE9PVd8fF8ubW9kaWZpZXJzIT09VGV8fF8uaXNUeXBlT25seSE9PWNyfHxfLmV4cG9ydENsYXVzZSE9PW5pfHxfLm1vZHVsZVNwZWNpZmllciE9PXJ0fHxfLmFzc2VydENsYXVzZSE9PXl0P0EoaGYoVyxUZSxjcixuaSxydCx5dCksXyk6X31mdW5jdGlvbiBVZihfKXt2YXIgVz11ZSgyNzMpO3JldHVybiBXLmVsZW1lbnRzPW5lKF8pLFcudHJhbnNmb3JtRmxhZ3N8PWYoVy5lbGVtZW50cyksVy50cmFuc2Zvcm1GbGFncyY9LTE2Nzc3MjE3LFd9ZnVuY3Rpb24gTF8oXyxXKXtyZXR1cm4gXy5lbGVtZW50cyE9PVc/QShVZihXKSxfKTpffWZ1bmN0aW9uIGxfKF8sVyxUZSl7dmFyIGNyPXVlKDI3NSk7cmV0dXJuIGNyLmlzVHlwZU9ubHk9Xyxjci5wcm9wZXJ0eU5hbWU9TWMoVyksY3IubmFtZT1NYyhUZSksY3IudHJhbnNmb3JtRmxhZ3N8PW9lKGNyLnByb3BlcnR5TmFtZSl8b2UoY3IubmFtZSksY3IudHJhbnNmb3JtRmxhZ3MmPS0xNjc3NzIxNyxjcn1mdW5jdGlvbiBmXyhfLFcsVGUsY3Ipe3JldHVybiBfLmlzVHlwZU9ubHkhPT1XfHxfLnByb3BlcnR5TmFtZSE9PVRlfHxfLm5hbWUhPT1jcj9BKGxfKFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24gbWQoKXt2YXIgXz1XZSgyNzYsdm9pZCAwLHZvaWQgMCk7cmV0dXJuIF99ZnVuY3Rpb24ga3MoXyl7dmFyIFc9dWUoMjc3KTtyZXR1cm4gVy5leHByZXNzaW9uPV8sVy50cmFuc2Zvcm1GbGFnc3w9b2UoVy5leHByZXNzaW9uKSxXLnRyYW5zZm9ybUZsYWdzJj0tMTY3NzcyMTcsV31mdW5jdGlvbiBXdShfLFcpe3JldHVybiBfLmV4cHJlc3Npb24hPT1XP0Eoa3MoVyksXyk6X31mdW5jdGlvbiBabChfKXtyZXR1cm4gdWUoXyl9ZnVuY3Rpb24gUl8oXyxXLFRlKXtUZT09PXZvaWQgMCYmKFRlPSExKTt2YXIgY3I9a2woXyxUZT9XJiZ5KCkucGFyZW50aGVzaXplTm9uQXJyYXlUeXBlT2ZQb3N0Zml4VHlwZShXKTpXKTtyZXR1cm4gY3IucG9zdGZpeD1UZSxjcn1mdW5jdGlvbiBrbChfLFcpe3ZhciBUZT11ZShfKTtyZXR1cm4gVGUudHlwZT1XLFRlfWZ1bmN0aW9uIF9fKF8sVyxUZSl7cmV0dXJuIFcudHlwZSE9PVRlP0EoUl8oXyxUZSxXLnBvc3RmaXgpLFcpOld9ZnVuY3Rpb24gemQoXyxXLFRlKXtyZXR1cm4gVy50eXBlIT09VGU/QShrbChfLFRlKSxXKTpXfWZ1bmN0aW9uIEFsKF8sVyl7dmFyIFRlPUJlKDMxNyx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsXyxXKTtyZXR1cm4gVGV9ZnVuY3Rpb24gd2MoXyxXLFRlKXtyZXR1cm4gXy5wYXJhbWV0ZXJzIT09V3x8Xy50eXBlIT09VGU/QShBbChXLFRlKSxfKTpffWZ1bmN0aW9uIHF1KF8sVyl7Vz09PXZvaWQgMCYmKFc9ITEpO3ZhciBUZT11ZSgzMjIpO3JldHVybiBUZS5qc0RvY1Byb3BlcnR5VGFncz1iYyhfKSxUZS5pc0FycmF5VHlwZT1XLFRlfWZ1bmN0aW9uIFZ1KF8sVyxUZSl7cmV0dXJuIF8uanNEb2NQcm9wZXJ0eVRhZ3MhPT1XfHxfLmlzQXJyYXlUeXBlIT09VGU/QShxdShXLFRlKSxfKTpffWZ1bmN0aW9uIGVmKF8pe3ZhciBXPXVlKDMwOSk7cmV0dXJuIFcudHlwZT1fLFd9ZnVuY3Rpb24gc2woXyxXKXtyZXR1cm4gXy50eXBlIT09Vz9BKGVmKFcpLF8pOl99ZnVuY3Rpb24gcF8oXyxXLFRlKXt2YXIgY3I9dWUoMzIzKTtyZXR1cm4gY3IudHlwZVBhcmFtZXRlcnM9YmMoXyksY3IucGFyYW1ldGVycz1uZShXKSxjci50eXBlPVRlLGNyfWZ1bmN0aW9uIERmKF8sVyxUZSxjcil7cmV0dXJuIF8udHlwZVBhcmFtZXRlcnMhPT1XfHxfLnBhcmFtZXRlcnMhPT1UZXx8Xy50eXBlIT09Y3I/QShwXyhXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIEVjKF8pe3ZhciBXPVEoXy5raW5kKTtyZXR1cm4gXy50YWdOYW1lLmVzY2FwZWRUZXh0PT09ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoVyk/Xy50YWdOYW1lOkVyKFcpfWZ1bmN0aW9uIFpuKF8sVyxUZSl7dmFyIGNyPXVlKF8pO3JldHVybiBjci50YWdOYW1lPVcsY3IuY29tbWVudD1UZSxjcn1mdW5jdGlvbiBvcyhfLFcsVGUsY3Ipe3ZhciBuaT1abigzNDQsXyE9bnVsbD9fOkVyKFwidGVtcGxhdGVcIiksY3IpO3JldHVybiBuaS5jb25zdHJhaW50PVcsbmkudHlwZVBhcmFtZXRlcnM9bmUoVGUpLG5pfWZ1bmN0aW9uIFBzKF8sVyxUZSxjcixuaSl7cmV0dXJuIFc9PT12b2lkIDAmJihXPUVjKF8pKSxfLnRhZ05hbWUhPT1XfHxfLmNvbnN0cmFpbnQhPT1UZXx8Xy50eXBlUGFyYW1ldGVycyE9PWNyfHxfLmNvbW1lbnQhPT1uaT9BKG9zKFcsVGUsY3IsbmkpLF8pOl99ZnVuY3Rpb24gZF8oXyxXLFRlLGNyKXt2YXIgbmk9Wm4oMzQ1LF8hPW51bGw/XzpFcihcInR5cGVkZWZcIiksY3IpO3JldHVybiBuaS50eXBlRXhwcmVzc2lvbj1XLG5pLmZ1bGxOYW1lPVRlLG5pLm5hbWU9ZS5nZXRKU0RvY1R5cGVBbGlhc05hbWUoVGUpLG5pfWZ1bmN0aW9uIEdjKF8sVyxUZSxjcixuaSl7cmV0dXJuIFc9PT12b2lkIDAmJihXPUVjKF8pKSxfLnRhZ05hbWUhPT1XfHxfLnR5cGVFeHByZXNzaW9uIT09VGV8fF8uZnVsbE5hbWUhPT1jcnx8Xy5jb21tZW50IT09bmk/QShkXyhXLFRlLGNyLG5pKSxfKTpffWZ1bmN0aW9uIEJfKF8sVyxUZSxjcixuaSxydCl7dmFyIHl0PVpuKDM0MCxfIT1udWxsP186RXIoXCJwYXJhbVwiKSxydCk7cmV0dXJuIHl0LnR5cGVFeHByZXNzaW9uPWNyLHl0Lm5hbWU9Vyx5dC5pc05hbWVGaXJzdD0hIW5pLHl0LmlzQnJhY2tldGVkPVRlLHl0fWZ1bmN0aW9uIHZ1KF8sVyxUZSxjcixuaSxydCx5dCl7cmV0dXJuIFc9PT12b2lkIDAmJihXPUVjKF8pKSxfLnRhZ05hbWUhPT1XfHxfLm5hbWUhPT1UZXx8Xy5pc0JyYWNrZXRlZCE9PWNyfHxfLnR5cGVFeHByZXNzaW9uIT09bml8fF8uaXNOYW1lRmlyc3QhPT1ydHx8Xy5jb21tZW50IT09eXQ/QShCXyhXLFRlLGNyLG5pLHJ0LHl0KSxfKTpffWZ1bmN0aW9uIEd0KF8sVyxUZSxjcixuaSxydCl7dmFyIHl0PVpuKDM0NyxfIT1udWxsP186RXIoXCJwcm9wXCIpLHJ0KTtyZXR1cm4geXQudHlwZUV4cHJlc3Npb249Y3IseXQubmFtZT1XLHl0LmlzTmFtZUZpcnN0PSEhbmkseXQuaXNCcmFja2V0ZWQ9VGUseXR9ZnVuY3Rpb24gQXMoXyxXLFRlLGNyLG5pLHJ0LHl0KXtyZXR1cm4gVz09PXZvaWQgMCYmKFc9RWMoXykpLF8udGFnTmFtZSE9PVd8fF8ubmFtZSE9PVRlfHxfLmlzQnJhY2tldGVkIT09Y3J8fF8udHlwZUV4cHJlc3Npb24hPT1uaXx8Xy5pc05hbWVGaXJzdCE9PXJ0fHxfLmNvbW1lbnQhPT15dD9BKEd0KFcsVGUsY3IsbmkscnQseXQpLF8pOl99ZnVuY3Rpb24gdm4oXyxXLFRlLGNyKXt2YXIgbmk9Wm4oMzM4LF8hPW51bGw/XzpFcihcImNhbGxiYWNrXCIpLGNyKTtyZXR1cm4gbmkudHlwZUV4cHJlc3Npb249VyxuaS5mdWxsTmFtZT1UZSxuaS5uYW1lPWUuZ2V0SlNEb2NUeXBlQWxpYXNOYW1lKFRlKSxuaX1mdW5jdGlvbiBObChfLFcsVGUsY3Isbmkpe3JldHVybiBXPT09dm9pZCAwJiYoVz1FYyhfKSksXy50YWdOYW1lIT09V3x8Xy50eXBlRXhwcmVzc2lvbiE9PVRlfHxfLmZ1bGxOYW1lIT09Y3J8fF8uY29tbWVudCE9PW5pP0Eodm4oVyxUZSxjcixuaSksXyk6X31mdW5jdGlvbiBjbChfLFcsVGUpe3ZhciBjcj1abigzMjgsXyE9bnVsbD9fOkVyKFwiYXVnbWVudHNcIiksVGUpO3JldHVybiBjci5jbGFzcz1XLGNyfWZ1bmN0aW9uIHJmKF8sVyxUZSxjcil7cmV0dXJuIFc9PT12b2lkIDAmJihXPUVjKF8pKSxfLnRhZ05hbWUhPT1XfHxfLmNsYXNzIT09VGV8fF8uY29tbWVudCE9PWNyP0EoY2woVyxUZSxjciksXyk6X31mdW5jdGlvbiBVdChfLFcsVGUpe3ZhciBjcj1abigzMjksXyE9bnVsbD9fOkVyKFwiaW1wbGVtZW50c1wiKSxUZSk7cmV0dXJuIGNyLmNsYXNzPVcsY3J9ZnVuY3Rpb24gRHMoXyxXLFRlKXt2YXIgY3I9Wm4oMzQ2LF8hPW51bGw/XzpFcihcInNlZVwiKSxUZSk7cmV0dXJuIGNyLm5hbWU9Vyxjcn1mdW5jdGlvbiBiZihfLFcsVGUsY3Ipe3JldHVybiBfLnRhZ05hbWUhPT1XfHxfLm5hbWUhPT1UZXx8Xy5jb21tZW50IT09Y3I/QShEcyhXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIGJzKF8pe3ZhciBXPXVlKDMxMCk7cmV0dXJuIFcubmFtZT1fLFd9ZnVuY3Rpb24gRGMoXyxXKXtyZXR1cm4gXy5uYW1lIT09Vz9BKGJzKFcpLF8pOl99ZnVuY3Rpb24gQ2MoXyxXKXt2YXIgVGU9dWUoMzExKTtyZXR1cm4gVGUubGVmdD1fLFRlLnJpZ2h0PVcsVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLmxlZnQpfG9lKFRlLnJpZ2h0KSxUZX1mdW5jdGlvbiBhYyhfLFcsVGUpe3JldHVybiBfLmxlZnQhPT1XfHxfLnJpZ2h0IT09VGU/QShDYyhXLFRlKSxfKTpffWZ1bmN0aW9uIFBsKF8sVyl7dmFyIFRlPXVlKDMyNCk7cmV0dXJuIFRlLm5hbWU9XyxUZS50ZXh0PVcsVGV9ZnVuY3Rpb24gSWwoXyxXLFRlKXtyZXR1cm4gXy5uYW1lIT09Vz9BKFBsKFcsVGUpLF8pOl99ZnVuY3Rpb24gemYoXyxXKXt2YXIgVGU9dWUoMzI1KTtyZXR1cm4gVGUubmFtZT1fLFRlLnRleHQ9VyxUZX1mdW5jdGlvbiB1bChfLFcsVGUpe3JldHVybiBfLm5hbWUhPT1XP0EoemYoVyxUZSksXyk6X31mdW5jdGlvbiBOdShfLFcpe3ZhciBUZT11ZSgzMjYpO3JldHVybiBUZS5uYW1lPV8sVGUudGV4dD1XLFRlfWZ1bmN0aW9uIFVzKF8sVyxUZSl7cmV0dXJuIF8ubmFtZSE9PVc/QShOdShXLFRlKSxfKTpffWZ1bmN0aW9uIEFwKF8sVyxUZSxjcil7cmV0dXJuIFc9PT12b2lkIDAmJihXPUVjKF8pKSxfLnRhZ05hbWUhPT1XfHxfLmNsYXNzIT09VGV8fF8uY29tbWVudCE9PWNyP0EoVXQoVyxUZSxjciksXyk6X31mdW5jdGlvbiBXZihfLFcsVGUpe3ZhciBjcj1abihfLFchPW51bGw/VzpFcihRKF8pKSxUZSk7cmV0dXJuIGNyfWZ1bmN0aW9uIFNmKF8sVyxUZSxjcil7cmV0dXJuIFRlPT09dm9pZCAwJiYoVGU9RWMoVykpLFcudGFnTmFtZSE9PVRlfHxXLmNvbW1lbnQhPT1jcj9BKFdmKF8sVGUsY3IpLFcpOld9ZnVuY3Rpb24gbGwoXyxXLFRlLGNyKXt2YXIgbmk9Wm4oXyxXIT1udWxsP1c6RXIoUShfKSksY3IpO3JldHVybiBuaS50eXBlRXhwcmVzc2lvbj1UZSxuaX1mdW5jdGlvbiBKXyhfLFcsVGUsY3Isbmkpe3JldHVybiBUZT09PXZvaWQgMCYmKFRlPUVjKFcpKSxXLnRhZ05hbWUhPT1UZXx8Vy50eXBlRXhwcmVzc2lvbiE9PWNyfHxXLmNvbW1lbnQhPT1uaT9BKGxsKF8sVGUsY3IsbmkpLFcpOld9ZnVuY3Rpb24gal8oXyxXKXt2YXIgVGU9Wm4oMzI3LF8sVyk7cmV0dXJuIFRlfWZ1bmN0aW9uIFVfKF8sVyxUZSl7cmV0dXJuIF8udGFnTmFtZSE9PVd8fF8uY29tbWVudCE9PVRlP0Eoal8oVyxUZSksXyk6X31mdW5jdGlvbiBpdShfKXt2YXIgVz11ZSgzMjEpO3JldHVybiBXLnRleHQ9XyxXfWZ1bmN0aW9uIHZkKF8sVyl7cmV0dXJuIF8udGV4dCE9PVc/QShpdShXKSxfKTpffWZ1bmN0aW9uIHFmKF8sVyl7dmFyIFRlPXVlKDMyMCk7cmV0dXJuIFRlLmNvbW1lbnQ9XyxUZS50YWdzPWJjKFcpLFRlfWZ1bmN0aW9uIGRjKF8sVyxUZSl7cmV0dXJuIF8uY29tbWVudCE9PVd8fF8udGFncyE9PVRlP0EocWYoVyxUZSksXyk6X31mdW5jdGlvbiBQdShfLFcsVGUpe3ZhciBjcj11ZSgyNzgpO3JldHVybiBjci5vcGVuaW5nRWxlbWVudD1fLGNyLmNoaWxkcmVuPW5lKFcpLGNyLmNsb3NpbmdFbGVtZW50PVRlLGNyLnRyYW5zZm9ybUZsYWdzfD1vZShjci5vcGVuaW5nRWxlbWVudCl8Zihjci5jaGlsZHJlbil8b2UoY3IuY2xvc2luZ0VsZW1lbnQpfDIsY3J9ZnVuY3Rpb24gd2woXyxXLFRlLGNyKXtyZXR1cm4gXy5vcGVuaW5nRWxlbWVudCE9PVd8fF8uY2hpbGRyZW4hPT1UZXx8Xy5jbG9zaW5nRWxlbWVudCE9PWNyP0EoUHUoVyxUZSxjciksXyk6X31mdW5jdGlvbiBJdShfLFcsVGUpe3ZhciBjcj11ZSgyNzkpO3JldHVybiBjci50YWdOYW1lPV8sY3IudHlwZUFyZ3VtZW50cz1iYyhXKSxjci5hdHRyaWJ1dGVzPVRlLGNyLnRyYW5zZm9ybUZsYWdzfD1vZShjci50YWdOYW1lKXxmKGNyLnR5cGVBcmd1bWVudHMpfG9lKGNyLmF0dHJpYnV0ZXMpfDIsY3IudHlwZUFyZ3VtZW50cyYmKGNyLnRyYW5zZm9ybUZsYWdzfD0xKSxjcn1mdW5jdGlvbiBzbyhfLFcsVGUsY3Ipe3JldHVybiBfLnRhZ05hbWUhPT1XfHxfLnR5cGVBcmd1bWVudHMhPT1UZXx8Xy5hdHRyaWJ1dGVzIT09Y3I/QShJdShXLFRlLGNyKSxfKTpffWZ1bmN0aW9uIEV0KF8sVyxUZSl7dmFyIGNyPXVlKDI4MCk7cmV0dXJuIGNyLnRhZ05hbWU9Xyxjci50eXBlQXJndW1lbnRzPWJjKFcpLGNyLmF0dHJpYnV0ZXM9VGUsY3IudHJhbnNmb3JtRmxhZ3N8PW9lKGNyLnRhZ05hbWUpfGYoY3IudHlwZUFyZ3VtZW50cyl8b2UoY3IuYXR0cmlidXRlcyl8MixXJiYoY3IudHJhbnNmb3JtRmxhZ3N8PTEpLGNyfWZ1bmN0aW9uIFlzKF8sVyxUZSxjcil7cmV0dXJuIF8udGFnTmFtZSE9PVd8fF8udHlwZUFyZ3VtZW50cyE9PVRlfHxfLmF0dHJpYnV0ZXMhPT1jcj9BKEV0KFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24gS3UoXyl7dmFyIFc9dWUoMjgxKTtyZXR1cm4gVy50YWdOYW1lPV8sVy50cmFuc2Zvcm1GbGFnc3w9b2UoVy50YWdOYW1lKXwyLFd9ZnVuY3Rpb24gTnAoXyxXKXtyZXR1cm4gXy50YWdOYW1lIT09Vz9BKEt1KFcpLF8pOl99ZnVuY3Rpb24gUHAoXyxXLFRlKXt2YXIgY3I9dWUoMjgyKTtyZXR1cm4gY3Iub3BlbmluZ0ZyYWdtZW50PV8sY3IuY2hpbGRyZW49bmUoVyksY3IuY2xvc2luZ0ZyYWdtZW50PVRlLGNyLnRyYW5zZm9ybUZsYWdzfD1vZShjci5vcGVuaW5nRnJhZ21lbnQpfGYoY3IuY2hpbGRyZW4pfG9lKGNyLmNsb3NpbmdGcmFnbWVudCl8Mixjcn1mdW5jdGlvbiBuYyhfLFcsVGUsY3Ipe3JldHVybiBfLm9wZW5pbmdGcmFnbWVudCE9PVd8fF8uY2hpbGRyZW4hPT1UZXx8Xy5jbG9zaW5nRnJhZ21lbnQhPT1jcj9BKFBwKFcsVGUsY3IpLF8pOl99ZnVuY3Rpb24gZmwoXyxXKXt2YXIgVGU9dWUoMTEpO3JldHVybiBUZS50ZXh0PV8sVGUuY29udGFpbnNPbmx5VHJpdmlhV2hpdGVTcGFjZXM9ISFXLFRlLnRyYW5zZm9ybUZsYWdzfD0yLFRlfWZ1bmN0aW9uIF9sKF8sVyxUZSl7cmV0dXJuIF8udGV4dCE9PVd8fF8uY29udGFpbnNPbmx5VHJpdmlhV2hpdGVTcGFjZXMhPT1UZT9BKGZsKFcsVGUpLF8pOl99ZnVuY3Rpb24gY3UoKXt2YXIgXz11ZSgyODMpO3JldHVybiBfLnRyYW5zZm9ybUZsYWdzfD0yLF99ZnVuY3Rpb24gZ2MoKXt2YXIgXz11ZSgyODQpO3JldHVybiBfLnRyYW5zZm9ybUZsYWdzfD0yLF99ZnVuY3Rpb24gVGYoXyxXKXt2YXIgVGU9dWUoMjg1KTtyZXR1cm4gVGUubmFtZT1fLFRlLmluaXRpYWxpemVyPVcsVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLm5hbWUpfG9lKFRlLmluaXRpYWxpemVyKXwyLFRlfWZ1bmN0aW9uIG1jKF8sVyxUZSl7cmV0dXJuIF8ubmFtZSE9PVd8fF8uaW5pdGlhbGl6ZXIhPT1UZT9BKFRmKFcsVGUpLF8pOl99ZnVuY3Rpb24gSXAoXyl7dmFyIFc9dWUoMjg2KTtyZXR1cm4gVy5wcm9wZXJ0aWVzPW5lKF8pLFcudHJhbnNmb3JtRmxhZ3N8PWYoVy5wcm9wZXJ0aWVzKXwyLFd9ZnVuY3Rpb24gbXMoXyxXKXtyZXR1cm4gXy5wcm9wZXJ0aWVzIT09Vz9BKElwKFcpLF8pOl99ZnVuY3Rpb24gdHUoXyl7dmFyIFc9dWUoMjg3KTtyZXR1cm4gVy5leHByZXNzaW9uPV8sVy50cmFuc2Zvcm1GbGFnc3w9b2UoVy5leHByZXNzaW9uKXwyLFd9ZnVuY3Rpb24gd3AoXyxXKXtyZXR1cm4gXy5leHByZXNzaW9uIT09Vz9BKHR1KFcpLF8pOl99ZnVuY3Rpb24gSGMoXyxXKXt2YXIgVGU9dWUoMjg4KTtyZXR1cm4gVGUuZG90RG90RG90VG9rZW49XyxUZS5leHByZXNzaW9uPVcsVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLmRvdERvdERvdFRva2VuKXxvZShUZS5leHByZXNzaW9uKXwyLFRlfWZ1bmN0aW9uIE9sKF8sVyl7cmV0dXJuIF8uZXhwcmVzc2lvbiE9PVc/QShIYyhfLmRvdERvdERvdFRva2VuLFcpLF8pOl99ZnVuY3Rpb24gdGYoXyxXKXt2YXIgVGU9dWUoMjg5KTtyZXR1cm4gVGUuZXhwcmVzc2lvbj15KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYShfKSxUZS5zdGF0ZW1lbnRzPW5lKFcpLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5leHByZXNzaW9uKXxmKFRlLnN0YXRlbWVudHMpLFRlfWZ1bmN0aW9uIHhmKF8sVyxUZSl7cmV0dXJuIF8uZXhwcmVzc2lvbiE9PVd8fF8uc3RhdGVtZW50cyE9PVRlP0EodGYoVyxUZSksXyk6X31mdW5jdGlvbiB6XyhfKXt2YXIgVz11ZSgyOTApO3JldHVybiBXLnN0YXRlbWVudHM9bmUoXyksVy50cmFuc2Zvcm1GbGFncz1mKFcuc3RhdGVtZW50cyksV31mdW5jdGlvbiBPYyhfLFcpe3JldHVybiBfLnN0YXRlbWVudHMhPT1XP0Eoel8oVyksXyk6X31mdW5jdGlvbiBycyhfLFcpe3ZhciBUZT11ZSgyOTEpO3N3aXRjaChUZS50b2tlbj1fLFRlLnR5cGVzPW5lKFcpLFRlLnRyYW5zZm9ybUZsYWdzfD1mKFRlLnR5cGVzKSxfKXtjYXNlIDk0OlRlLnRyYW5zZm9ybUZsYWdzfD0xMDI0O2JyZWFrO2Nhc2UgMTE3OlRlLnRyYW5zZm9ybUZsYWdzfD0xO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoXyl9cmV0dXJuIFRlfWZ1bmN0aW9uIE9wKF8sVyl7cmV0dXJuIF8udHlwZXMhPT1XP0EocnMoXy50b2tlbixXKSxfKTpffWZ1bmN0aW9uIEVmKF8sVyl7dmFyIFRlPXVlKDI5Mik7cmV0dXJuKHR5cGVvZiBfPT1cInN0cmluZ1wifHxfJiYhZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oXykpJiYoXz1ZbChfLHZvaWQgMCx2b2lkIDAsdm9pZCAwKSksVGUudmFyaWFibGVEZWNsYXJhdGlvbj1fLFRlLmJsb2NrPVcsVGUudHJhbnNmb3JtRmxhZ3N8PW9lKFRlLnZhcmlhYmxlRGVjbGFyYXRpb24pfG9lKFRlLmJsb2NrKSxffHwoVGUudHJhbnNmb3JtRmxhZ3N8PTY0KSxUZX1mdW5jdGlvbiBGbChfLFcsVGUpe3JldHVybiBfLnZhcmlhYmxlRGVjbGFyYXRpb24hPT1XfHxfLmJsb2NrIT09VGU/QShFZihXLFRlKSxfKTpffWZ1bmN0aW9uIHBsKF8sVyl7dmFyIFRlPUZlKDI5Nix2b2lkIDAsdm9pZCAwLF8pO3JldHVybiBUZS5pbml0aWFsaXplcj15KCkucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYShXKSxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUubmFtZSl8b2UoVGUuaW5pdGlhbGl6ZXIpLFRlfWZ1bmN0aW9uIEZwKF8sVyl7cmV0dXJuIFcuZGVjb3JhdG9ycyYmKF8uZGVjb3JhdG9ycz1XLmRlY29yYXRvcnMpLFcubW9kaWZpZXJzJiYoXy5tb2RpZmllcnM9Vy5tb2RpZmllcnMpLFcucXVlc3Rpb25Ub2tlbiYmKF8ucXVlc3Rpb25Ub2tlbj1XLnF1ZXN0aW9uVG9rZW4pLFcuZXhjbGFtYXRpb25Ub2tlbiYmKF8uZXhjbGFtYXRpb25Ub2tlbj1XLmV4Y2xhbWF0aW9uVG9rZW4pLEEoXyxXKX1mdW5jdGlvbiBNcChfLFcsVGUpe3JldHVybiBfLm5hbWUhPT1XfHxfLmluaXRpYWxpemVyIT09VGU/RnAocGwoVyxUZSksXyk6X31mdW5jdGlvbiBHdShfLFcpe3ZhciBUZT1GZSgyOTcsdm9pZCAwLHZvaWQgMCxfKTtyZXR1cm4gVGUub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyPVcmJnkoKS5wYXJlbnRoZXNpemVFeHByZXNzaW9uRm9yRGlzYWxsb3dlZENvbW1hKFcpLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXIpfDEwMjQsVGV9ZnVuY3Rpb24gTHAoXyxXKXtyZXR1cm4gVy5kZWNvcmF0b3JzJiYoXy5kZWNvcmF0b3JzPVcuZGVjb3JhdG9ycyksVy5tb2RpZmllcnMmJihfLm1vZGlmaWVycz1XLm1vZGlmaWVycyksVy5lcXVhbHNUb2tlbiYmKF8uZXF1YWxzVG9rZW49Vy5lcXVhbHNUb2tlbiksVy5xdWVzdGlvblRva2VuJiYoXy5xdWVzdGlvblRva2VuPVcucXVlc3Rpb25Ub2tlbiksVy5leGNsYW1hdGlvblRva2VuJiYoXy5leGNsYW1hdGlvblRva2VuPVcuZXhjbGFtYXRpb25Ub2tlbiksQShfLFcpfWZ1bmN0aW9uIENmKF8sVyxUZSl7cmV0dXJuIF8ubmFtZSE9PVd8fF8ub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyIT09VGU/THAoR3UoVyxUZSksXyk6X31mdW5jdGlvbiBXXyhfKXt2YXIgVz11ZSgyOTgpO3JldHVybiBXLmV4cHJlc3Npb249eSgpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEoXyksVy50cmFuc2Zvcm1GbGFnc3w9b2UoVy5leHByZXNzaW9uKXwxMjh8MzI3NjgsV31mdW5jdGlvbiBnXyhfLFcpe3JldHVybiBfLmV4cHJlc3Npb24hPT1XP0EoV18oVyksXyk6X31mdW5jdGlvbiBkbChfLFcpe3ZhciBUZT11ZSgyOTkpO3JldHVybiBUZS5uYW1lPU1jKF8pLFRlLmluaXRpYWxpemVyPVcmJnkoKS5wYXJlbnRoZXNpemVFeHByZXNzaW9uRm9yRGlzYWxsb3dlZENvbW1hKFcpLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5uYW1lKXxvZShUZS5pbml0aWFsaXplcil8MSxUZX1mdW5jdGlvbiBnbChfLFcsVGUpe3JldHVybiBfLm5hbWUhPT1XfHxfLmluaXRpYWxpemVyIT09VGU/QShkbChXLFRlKSxfKTpffWZ1bmN0aW9uIFZmKF8sVyxUZSl7dmFyIGNyPSQuY3JlYXRlQmFzZVNvdXJjZUZpbGVOb2RlKDMwNSk7cmV0dXJuIGNyLnN0YXRlbWVudHM9bmUoXyksY3IuZW5kT2ZGaWxlVG9rZW49Vyxjci5mbGFnc3w9VGUsY3IuZmlsZU5hbWU9XCJcIixjci50ZXh0PVwiXCIsY3IubGFuZ3VhZ2VWZXJzaW9uPTAsY3IubGFuZ3VhZ2VWYXJpYW50PTAsY3Iuc2NyaXB0S2luZD0wLGNyLmlzRGVjbGFyYXRpb25GaWxlPSExLGNyLmhhc05vRGVmYXVsdExpYj0hMSxjci50cmFuc2Zvcm1GbGFnc3w9Zihjci5zdGF0ZW1lbnRzKXxvZShjci5lbmRPZkZpbGVUb2tlbiksY3J9ZnVuY3Rpb24gRmMoXyxXLFRlLGNyLG5pLHJ0LHl0KXt2YXIgWGE9Xy5yZWRpcmVjdEluZm8/T2JqZWN0LmNyZWF0ZShfLnJlZGlyZWN0SW5mby5yZWRpcmVjdFRhcmdldCk6JC5jcmVhdGVCYXNlU291cmNlRmlsZU5vZGUoMzA1KTtmb3IodmFyIHZvIGluIF8pdm89PT1cImVtaXROb2RlXCJ8fGUuaGFzUHJvcGVydHkoWGEsdm8pfHwhZS5oYXNQcm9wZXJ0eShfLHZvKXx8KFhhW3ZvXT1fW3ZvXSk7cmV0dXJuIFhhLmZsYWdzfD1fLmZsYWdzLFhhLnN0YXRlbWVudHM9bmUoVyksWGEuZW5kT2ZGaWxlVG9rZW49Xy5lbmRPZkZpbGVUb2tlbixYYS5pc0RlY2xhcmF0aW9uRmlsZT1UZSxYYS5yZWZlcmVuY2VkRmlsZXM9Y3IsWGEudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXM9bmksWGEuaGFzTm9EZWZhdWx0TGliPXJ0LFhhLmxpYlJlZmVyZW5jZURpcmVjdGl2ZXM9eXQsWGEudHJhbnNmb3JtRmxhZ3M9ZihYYS5zdGF0ZW1lbnRzKXxvZShYYS5lbmRPZkZpbGVUb2tlbiksWGEuaW1wbGllZE5vZGVGb3JtYXQ9Xy5pbXBsaWVkTm9kZUZvcm1hdCxYYX1mdW5jdGlvbiBIdShfLFcsVGUsY3IsbmkscnQseXQpe3JldHVybiBUZT09PXZvaWQgMCYmKFRlPV8uaXNEZWNsYXJhdGlvbkZpbGUpLGNyPT09dm9pZCAwJiYoY3I9Xy5yZWZlcmVuY2VkRmlsZXMpLG5pPT09dm9pZCAwJiYobmk9Xy50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcykscnQ9PT12b2lkIDAmJihydD1fLmhhc05vRGVmYXVsdExpYikseXQ9PT12b2lkIDAmJih5dD1fLmxpYlJlZmVyZW5jZURpcmVjdGl2ZXMpLF8uc3RhdGVtZW50cyE9PVd8fF8uaXNEZWNsYXJhdGlvbkZpbGUhPT1UZXx8Xy5yZWZlcmVuY2VkRmlsZXMhPT1jcnx8Xy50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcyE9PW5pfHxfLmhhc05vRGVmYXVsdExpYiE9PXJ0fHxfLmxpYlJlZmVyZW5jZURpcmVjdGl2ZXMhPT15dD9BKEZjKF8sVyxUZSxjcixuaSxydCx5dCksXyk6X31mdW5jdGlvbiBhZihfLFcpe1c9PT12b2lkIDAmJihXPWUuZW1wdHlBcnJheSk7dmFyIFRlPXVlKDMwNik7cmV0dXJuIFRlLnByZXBlbmRzPVcsVGUuc291cmNlRmlsZXM9XyxUZX1mdW5jdGlvbiB0bihfLFcsVGUpe3JldHVybiBUZT09PXZvaWQgMCYmKFRlPWUuZW1wdHlBcnJheSksXy5zb3VyY2VGaWxlcyE9PVd8fF8ucHJlcGVuZHMhPT1UZT9BKGFmKFcsVGUpLF8pOl99ZnVuY3Rpb24gTWwoXyxXLFRlKXt2YXIgY3I9dWUoMzA3KTtyZXR1cm4gY3IucHJvbG9ndWVzPV8sY3Iuc3ludGhldGljUmVmZXJlbmNlcz1XLGNyLnRleHRzPVRlLGNyLmZpbGVOYW1lPVwiXCIsY3IudGV4dD1cIlwiLGNyLnJlZmVyZW5jZWRGaWxlcz1lLmVtcHR5QXJyYXksY3IubGliUmVmZXJlbmNlRGlyZWN0aXZlcz1lLmVtcHR5QXJyYXksY3IuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb249ZnVuY3Rpb24obmkpe3JldHVybiBlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGNyLG5pKX0sY3J9ZnVuY3Rpb24gT3QoXyxXKXt2YXIgVGU9dWUoXyk7cmV0dXJuIFRlLmRhdGE9VyxUZX1mdW5jdGlvbiBuZihfKXtyZXR1cm4gT3QoMzAwLF8pfWZ1bmN0aW9uIHFfKF8sVyl7dmFyIFRlPU90KDMwMSxfKTtyZXR1cm4gVGUudGV4dHM9VyxUZX1mdW5jdGlvbiBLZihfLFcpe3JldHVybiBPdChXPzMwMzozMDIsXyl9ZnVuY3Rpb24gUnAoXyl7dmFyIFc9dWUoMzA0KTtyZXR1cm4gVy5kYXRhPV8uZGF0YSxXLnNlY3Rpb249XyxXfWZ1bmN0aW9uIHlkKCl7dmFyIF89dWUoMzA4KTtyZXR1cm4gXy5qYXZhc2NyaXB0VGV4dD1cIlwiLF8uZGVjbGFyYXRpb25UZXh0PVwiXCIsX31mdW5jdGlvbiBtXyhfLFcsVGUpe1c9PT12b2lkIDAmJihXPSExKTt2YXIgY3I9dWUoMjMyKTtyZXR1cm4gY3IudHlwZT1fLGNyLmlzU3ByZWFkPVcsY3IudHVwbGVOYW1lU291cmNlPVRlLGNyfWZ1bmN0aW9uIExsKF8pe3ZhciBXPXVlKDM0OCk7cmV0dXJuIFcuX2NoaWxkcmVuPV8sV31mdW5jdGlvbiBoZChfKXt2YXIgVz11ZSgzNDkpO3JldHVybiBXLm9yaWdpbmFsPV8sZS5zZXRUZXh0UmFuZ2UoVyxfKSxXfWZ1bmN0aW9uIHZfKF8sVyl7dmFyIFRlPXVlKDM1MCk7cmV0dXJuIFRlLmV4cHJlc3Npb249XyxUZS5vcmlnaW5hbD1XLFRlLnRyYW5zZm9ybUZsYWdzfD1vZShUZS5leHByZXNzaW9uKXwxLGUuc2V0VGV4dFJhbmdlKFRlLFcpLFRlfWZ1bmN0aW9uIEJwKF8sVyl7cmV0dXJuIF8uZXhwcmVzc2lvbiE9PVc/QSh2XyhXLF8ub3JpZ2luYWwpLF8pOl99ZnVuY3Rpb24gWHUoXyl7aWYoZS5ub2RlSXNTeW50aGVzaXplZChfKSYmIWUuaXNQYXJzZVRyZWVOb2RlKF8pJiYhXy5vcmlnaW5hbCYmIV8uZW1pdE5vZGUmJiFfLmlkKXtpZihlLmlzQ29tbWFMaXN0RXhwcmVzc2lvbihfKSlyZXR1cm4gXy5lbGVtZW50cztpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihfKSYmZS5pc0NvbW1hVG9rZW4oXy5vcGVyYXRvclRva2VuKSlyZXR1cm5bXy5sZWZ0LF8ucmlnaHRdfXJldHVybiBffWZ1bmN0aW9uIFhjKF8pe3ZhciBXPXVlKDM1MSk7cmV0dXJuIFcuZWxlbWVudHM9bmUoZS5zYW1lRmxhdE1hcChfLFh1KSksVy50cmFuc2Zvcm1GbGFnc3w9ZihXLmVsZW1lbnRzKSxXfWZ1bmN0aW9uIEdmKF8sVyl7cmV0dXJuIF8uZWxlbWVudHMhPT1XP0EoWGMoVyksXyk6X31mdW5jdGlvbiBvZihfKXt2YXIgVz11ZSgzNTMpO3JldHVybiBXLmVtaXROb2RlPXt9LFcub3JpZ2luYWw9XyxXfWZ1bmN0aW9uIHd1KF8pe3ZhciBXPXVlKDM1Mik7cmV0dXJuIFcuZW1pdE5vZGU9e30sVy5vcmlnaW5hbD1fLFd9ZnVuY3Rpb24gVl8oXyxXKXt2YXIgVGU9dWUoMzU0KTtyZXR1cm4gVGUuZXhwcmVzc2lvbj1fLFRlLnRoaXNBcmc9VyxUZS50cmFuc2Zvcm1GbGFnc3w9b2UoVGUuZXhwcmVzc2lvbil8b2UoVGUudGhpc0FyZyksVGV9ZnVuY3Rpb24geXUoXyxXLFRlKXtyZXR1cm4gXy5leHByZXNzaW9uIT09V3x8Xy50aGlzQXJnIT09VGU/QShWXyhXLFRlKSxfKTpffWZ1bmN0aW9uIHYoXyl7aWYoXz09PXZvaWQgMClyZXR1cm4gXzt2YXIgVz1lLmlzU291cmNlRmlsZShfKT8kLmNyZWF0ZUJhc2VTb3VyY2VGaWxlTm9kZSgzMDUpOmUuaXNJZGVudGlmaWVyKF8pPyQuY3JlYXRlQmFzZUlkZW50aWZpZXJOb2RlKDc5KTplLmlzUHJpdmF0ZUlkZW50aWZpZXIoXyk/JC5jcmVhdGVCYXNlUHJpdmF0ZUlkZW50aWZpZXJOb2RlKDgwKTplLmlzTm9kZUtpbmQoXy5raW5kKT8kLmNyZWF0ZUJhc2VOb2RlKF8ua2luZCk6JC5jcmVhdGVCYXNlVG9rZW5Ob2RlKF8ua2luZCk7Vy5mbGFnc3w9Xy5mbGFncyYtOSxXLnRyYW5zZm9ybUZsYWdzPV8udHJhbnNmb3JtRmxhZ3MsaGUoVyxfKTtmb3IodmFyIFRlIGluIF8pVy5oYXNPd25Qcm9wZXJ0eShUZSl8fCFfLmhhc093blByb3BlcnR5KFRlKXx8KFdbVGVdPV9bVGVdKTtyZXR1cm4gV31mdW5jdGlvbiBzcihfLFcsVGUpe3JldHVybiBxbihwcyh2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsVz9bV106W10sdm9pZCAwLGJuKF8sITApKSx2b2lkIDAsVGU/W1RlXTpbXSl9ZnVuY3Rpb24gZmkoXyxXLFRlKXtyZXR1cm4gcW4oanModm9pZCAwLHZvaWQgMCxXP1tXXTpbXSx2b2lkIDAsdm9pZCAwLGJuKF8sITApKSx2b2lkIDAsVGU/W1RlXTpbXSl9ZnVuY3Rpb24gemkoKXtyZXR1cm4gcWkod2UoXCIwXCIpKX1mdW5jdGlvbiBTYShfKXtyZXR1cm4gbXUodm9pZCAwLHZvaWQgMCwhMSxfKX1mdW5jdGlvbiBkYShfKXtyZXR1cm4gaGYodm9pZCAwLHZvaWQgMCwhMSxVZihbbF8oITEsdm9pZCAwLF8pXSkpfWZ1bmN0aW9uIEhhKF8sVyl7cmV0dXJuIFc9PT1cInVuZGVmaW5lZFwiP2cuY3JlYXRlU3RyaWN0RXF1YWxpdHkoXyx6aSgpKTpnLmNyZWF0ZVN0cmljdEVxdWFsaXR5KFJyKF8pLEFlKFcpKX1mdW5jdGlvbiB0YShfLFcsVGUpe3JldHVybiBlLmlzQ2FsbENoYWluKF8pP1NvKFBpKF8sdm9pZCAwLFcpLHZvaWQgMCx2b2lkIDAsVGUpOnFuKFpyKF8sVyksdm9pZCAwLFRlKX1mdW5jdGlvbiBubihfLFcsVGUpe3JldHVybiB0YShfLFwiYmluZFwiLFZlKFtXXSxUZSwhMCkpfWZ1bmN0aW9uIFdvKF8sVyxUZSl7cmV0dXJuIHRhKF8sXCJjYWxsXCIsVmUoW1ddLFRlLCEwKSl9ZnVuY3Rpb24gTG8oXyxXLFRlKXtyZXR1cm4gdGEoXyxcImFwcGx5XCIsW1csVGVdKX1mdW5jdGlvbiBvYyhfLFcsVGUpe3JldHVybiB0YShFcihfKSxXLFRlKX1mdW5jdGlvbiB1dShfLFcpe3JldHVybiB0YShfLFwic2xpY2VcIixXPT09dm9pZCAwP1tdOltZdShXKV0pfWZ1bmN0aW9uIGlzKF8sVyl7cmV0dXJuIHRhKF8sXCJjb25jYXRcIixXKX1mdW5jdGlvbiBhdShfLFcsVGUpe3JldHVybiBvYyhcIk9iamVjdFwiLFwiZGVmaW5lUHJvcGVydHlcIixbXyxZdShXKSxUZV0pfWZ1bmN0aW9uIE91KF8sVyxUZSl7cmV0dXJuIG9jKFwiUmVmbGVjdFwiLFwiZ2V0XCIsVGU/W18sVyxUZV06W18sV10pfWZ1bmN0aW9uIHNmKF8sVyxUZSxjcil7cmV0dXJuIG9jKFwiUmVmbGVjdFwiLFwic2V0XCIsY3I/W18sVyxUZSxjcl06W18sVyxUZV0pfWZ1bmN0aW9uIGx1KF8sVyxUZSl7cmV0dXJuIFRlPyhfLnB1c2gocGwoVyxUZSkpLCEwKTohMX1mdW5jdGlvbiBjZihfLFcpe3ZhciBUZT1bXTtsdShUZSxcImVudW1lcmFibGVcIixZdShfLmVudW1lcmFibGUpKSxsdShUZSxcImNvbmZpZ3VyYWJsZVwiLFl1KF8uY29uZmlndXJhYmxlKSk7dmFyIGNyPWx1KFRlLFwid3JpdGFibGVcIixZdShfLndyaXRhYmxlKSk7Y3I9bHUoVGUsXCJ2YWx1ZVwiLF8udmFsdWUpfHxjcjt2YXIgbmk9bHUoVGUsXCJnZXRcIixfLmdldCk7cmV0dXJuIG5pPWx1KFRlLFwic2V0XCIsXy5zZXQpfHxuaSxlLkRlYnVnLmFzc2VydCghKGNyJiZuaSksXCJBIFByb3BlcnR5RGVzY3JpcHRvciBtYXkgbm90IGJlIGJvdGggYW4gYWNjZXNzb3IgZGVzY3JpcHRvciBhbmQgYSBkYXRhIGRlc2NyaXB0b3IuXCIpLHFlKFRlLCFXKX1mdW5jdGlvbiB1ZihfLFcpe3N3aXRjaChfLmtpbmQpe2Nhc2UgMjEyOnJldHVybiB0YyhfLFcpO2Nhc2UgMjExOnJldHVybiBwYyhfLF8udHlwZSxXKTtjYXNlIDIyOTpyZXR1cm4gdmMoXyxXLF8udHlwZSk7Y2FzZSAyMzA6cmV0dXJuIF9pKF8sVyk7Y2FzZSAzNTA6cmV0dXJuIEJwKF8sVyl9fWZ1bmN0aW9uIEtfKF8pe3JldHVybiBlLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24oXykmJmUubm9kZUlzU3ludGhlc2l6ZWQoXykmJmUubm9kZUlzU3ludGhlc2l6ZWQoZS5nZXRTb3VyY2VNYXBSYW5nZShfKSkmJmUubm9kZUlzU3ludGhlc2l6ZWQoZS5nZXRDb21tZW50UmFuZ2UoXykpJiYhZS5zb21lKGUuZ2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKF8pKSYmIWUuc29tZShlLmdldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHMoXykpfWZ1bmN0aW9uIEpwKF8sVyxUZSl7cmV0dXJuIFRlPT09dm9pZCAwJiYoVGU9MTUpLF8mJmUuaXNPdXRlckV4cHJlc3Npb24oXyxUZSkmJiFLXyhfKT91ZihfLEpwKF8uZXhwcmVzc2lvbixXKSk6V31mdW5jdGlvbiBIZihfLFcsVGUpe2lmKCFXKXJldHVybiBfO3ZhciBjcj1QXyhXLFcubGFiZWwsZS5pc0xhYmVsZWRTdGF0ZW1lbnQoVy5zdGF0ZW1lbnQpP0hmKF8sVy5zdGF0ZW1lbnQpOl8pO3JldHVybiBUZSYmVGUoVyksY3J9ZnVuY3Rpb24ga2MoXyxXKXt2YXIgVGU9ZS5za2lwUGFyZW50aGVzZXMoXyk7c3dpdGNoKFRlLmtpbmQpe2Nhc2UgNzk6cmV0dXJuIFc7Y2FzZSAxMDg6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOnJldHVybiExO2Nhc2UgMjA0OnZhciBjcj1UZS5lbGVtZW50cztyZXR1cm4gY3IubGVuZ3RoIT09MDtjYXNlIDIwNTpyZXR1cm4gVGUucHJvcGVydGllcy5sZW5ndGg+MDtkZWZhdWx0OnJldHVybiEwfX1mdW5jdGlvbiBHXyhfLFcsVGUsY3Ipe2NyPT09dm9pZCAwJiYoY3I9ITEpO3ZhciBuaT1lLnNraXBPdXRlckV4cHJlc3Npb25zKF8sMTUpLHJ0LHl0O3JldHVybiBlLmlzU3VwZXJQcm9wZXJ0eShuaSk/KHJ0PVVyKCkseXQ9bmkpOmUuaXNTdXBlcktleXdvcmQobmkpPyhydD1VcigpLHl0PVRlIT09dm9pZCAwJiZUZTwyP2Uuc2V0VGV4dFJhbmdlKEVyKFwiX3N1cGVyXCIpLG5pKTpuaSk6ZS5nZXRFbWl0RmxhZ3MobmkpJjQwOTY/KHJ0PXppKCkseXQ9eSgpLnBhcmVudGhlc2l6ZUxlZnRTaWRlT2ZBY2Nlc3MobmkpKTplLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5pKT9rYyhuaS5leHByZXNzaW9uLGNyKT8ocnQ9bihXKSx5dD1acihlLnNldFRleHRSYW5nZShnLmNyZWF0ZUFzc2lnbm1lbnQocnQsbmkuZXhwcmVzc2lvbiksbmkuZXhwcmVzc2lvbiksbmkubmFtZSksZS5zZXRUZXh0UmFuZ2UoeXQsbmkpKToocnQ9bmkuZXhwcmVzc2lvbix5dD1uaSk6ZS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKG5pKT9rYyhuaS5leHByZXNzaW9uLGNyKT8ocnQ9bihXKSx5dD1DdChlLnNldFRleHRSYW5nZShnLmNyZWF0ZUFzc2lnbm1lbnQocnQsbmkuZXhwcmVzc2lvbiksbmkuZXhwcmVzc2lvbiksbmkuYXJndW1lbnRFeHByZXNzaW9uKSxlLnNldFRleHRSYW5nZSh5dCxuaSkpOihydD1uaS5leHByZXNzaW9uLHl0PW5pKToocnQ9emkoKSx5dD15KCkucGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2VzcyhfKSkse3RhcmdldDp5dCx0aGlzQXJnOnJ0fX1mdW5jdGlvbiBMZShfLFcpe3JldHVybiBacihocyhxZShbbnIodm9pZCAwLHZvaWQgMCxcInZhbHVlXCIsW1d0KHZvaWQgMCx2b2lkIDAsdm9pZCAwLF8sdm9pZCAwLHZvaWQgMCx2b2lkIDApXSxibihbTW8oVyldKSldKSksXCJ2YWx1ZVwiKX1mdW5jdGlvbiBOcihfKXtyZXR1cm4gXy5sZW5ndGg+MTA/WGMoXyk6ZS5yZWR1Y2VMZWZ0KF8sZy5jcmVhdGVDb21tYSl9ZnVuY3Rpb24gcmkoXyxXLFRlLGNyKXtjcj09PXZvaWQgMCYmKGNyPTApO3ZhciBuaT1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKF8pO2lmKG5pJiZlLmlzSWRlbnRpZmllcihuaSkmJiFlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihuaSkpe3ZhciBydD1lLnNldFBhcmVudChlLnNldFRleHRSYW5nZSh2KG5pKSxuaSksbmkucGFyZW50KTtyZXR1cm4gY3J8PWUuZ2V0RW1pdEZsYWdzKG5pKSxUZXx8KGNyfD00OCksV3x8KGNyfD0xNTM2KSxjciYmZS5zZXRFbWl0RmxhZ3MocnQsY3IpLHJ0fXJldHVybiBHZShfKX1mdW5jdGlvbiBkaShfLFcsVGUpe3JldHVybiByaShfLFcsVGUsNDkxNTIpfWZ1bmN0aW9uIE1pKF8sVyxUZSl7cmV0dXJuIHJpKF8sVyxUZSwxNjM4NCl9ZnVuY3Rpb24gc3QoXyxXLFRlKXtyZXR1cm4gcmkoXyxXLFRlLDgxOTIpfWZ1bmN0aW9uIHJhKF8sVyxUZSl7cmV0dXJuIHJpKF8sVyxUZSl9ZnVuY3Rpb24gVGEoXyxXLFRlLGNyKXt2YXIgbmk9WnIoXyxlLm5vZGVJc1N5bnRoZXNpemVkKFcpP1c6dihXKSk7ZS5zZXRUZXh0UmFuZ2UobmksVyk7dmFyIHJ0PTA7cmV0dXJuIGNyfHwocnR8PTQ4KSxUZXx8KHJ0fD0xNTM2KSxydCYmZS5zZXRFbWl0RmxhZ3MobmkscnQpLG5pfWZ1bmN0aW9uIGhhKF8sVyxUZSxjcil7cmV0dXJuIF8mJmUuaGFzU3ludGFjdGljTW9kaWZpZXIoVywxKT9UYShfLHJpKFcpLFRlLGNyKTpzdChXLFRlLGNyKX1mdW5jdGlvbiBOYShfLFcsVGUsY3Ipe3ZhciBuaT1jbyhfLFcsMCxUZSk7cmV0dXJuIHRzKF8sVyxuaSxjcil9ZnVuY3Rpb24gSW4oXyl7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsKF8uZXhwcmVzc2lvbikmJl8uZXhwcmVzc2lvbi50ZXh0PT09XCJ1c2Ugc3RyaWN0XCJ9ZnVuY3Rpb24gcW8oKXtyZXR1cm4gZS5zdGFydE9uTmV3TGluZShNbyhBZShcInVzZSBzdHJpY3RcIikpKX1mdW5jdGlvbiBjbyhfLFcsVGUsY3Ipe1RlPT09dm9pZCAwJiYoVGU9MCksZS5EZWJ1Zy5hc3NlcnQoVy5sZW5ndGg9PT0wLFwiUHJvbG9ndWUgZGlyZWN0aXZlcyBzaG91bGQgYmUgYXQgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgdGFyZ2V0IHN0YXRlbWVudHMgYXJyYXlcIik7Zm9yKHZhciBuaT0hMSxydD1fLmxlbmd0aDtUZTxydDspe3ZhciB5dD1fW1RlXTtpZihlLmlzUHJvbG9ndWVEaXJlY3RpdmUoeXQpKUluKHl0KSYmKG5pPSEwKSxXLnB1c2goeXQpO2Vsc2UgYnJlYWs7VGUrK31yZXR1cm4gY3ImJiFuaSYmVy5wdXNoKHFvKCkpLFRlfWZ1bmN0aW9uIHRzKF8sVyxUZSxjcixuaSl7bmk9PT12b2lkIDAmJihuaT1lLnJldHVyblRydWUpO2Zvcih2YXIgcnQ9Xy5sZW5ndGg7VGUhPT12b2lkIDAmJlRlPHJ0Oyl7dmFyIHl0PV9bVGVdO2lmKGUuZ2V0RW1pdEZsYWdzKHl0KSYxMDQ4NTc2JiZuaSh5dCkpZS5hcHBlbmQoVyxjcj9lLnZpc2l0Tm9kZSh5dCxjcixlLmlzU3RhdGVtZW50KTp5dCk7ZWxzZSBicmVhaztUZSsrfXJldHVybiBUZX1mdW5jdGlvbiB2cyhfKXt2YXIgVz1lLmZpbmRVc2VTdHJpY3RQcm9sb2d1ZShfKTtyZXR1cm4gVz9fOmUuc2V0VGV4dFJhbmdlKG5lKFZlKFtxbygpXSxfLCEwKSksXyl9ZnVuY3Rpb24gQWMoXyl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGUuZXZlcnkoXyxlLmlzU3RhdGVtZW50T3JCbG9jayksXCJDYW5ub3QgbGlmdCBub2RlcyB0byBhIEJsb2NrLlwiKSxlLnNpbmdsZU9yVW5kZWZpbmVkKF8pfHxibihfKX1mdW5jdGlvbiBJcyhfLFcsVGUpe2Zvcih2YXIgY3I9VGU7Y3I8Xy5sZW5ndGgmJlcoX1tjcl0pOyljcisrO3JldHVybiBjcn1mdW5jdGlvbiBRdShfLFcpe2lmKCFlLnNvbWUoVykpcmV0dXJuIF87dmFyIFRlPUlzKF8sZS5pc1Byb2xvZ3VlRGlyZWN0aXZlLDApLGNyPUlzKF8sZS5pc0hvaXN0ZWRGdW5jdGlvbixUZSksbmk9SXMoXyxlLmlzSG9pc3RlZFZhcmlhYmxlU3RhdGVtZW50LGNyKSxydD1JcyhXLGUuaXNQcm9sb2d1ZURpcmVjdGl2ZSwwKSx5dD1JcyhXLGUuaXNIb2lzdGVkRnVuY3Rpb24scnQpLFhhPUlzKFcsZS5pc0hvaXN0ZWRWYXJpYWJsZVN0YXRlbWVudCx5dCksdm89SXMoVyxlLmlzQ3VzdG9tUHJvbG9ndWUsWGEpO2UuRGVidWcuYXNzZXJ0KHZvPT09Vy5sZW5ndGgsXCJFeHBlY3RlZCBkZWNsYXJhdGlvbnMgdG8gYmUgdmFsaWQgc3RhbmRhcmQgb3IgY3VzdG9tIHByb2xvZ3Vlc1wiKTt2YXIgVnM9ZS5pc05vZGVBcnJheShfKT9fLnNsaWNlKCk6XztpZih2bz5YYSYmVnMuc3BsaWNlLmFwcGx5KFZzLFZlKFtuaSwwXSxXLnNsaWNlKFhhLHZvKSwhMSkpLFhhPnl0JiZWcy5zcGxpY2UuYXBwbHkoVnMsVmUoW2NyLDBdLFcuc2xpY2UoeXQsWGEpLCExKSkseXQ+cnQmJlZzLnNwbGljZS5hcHBseShWcyxWZShbVGUsMF0sVy5zbGljZShydCx5dCksITEpKSxydD4wKWlmKFRlPT09MClWcy5zcGxpY2UuYXBwbHkoVnMsVmUoWzAsMF0sVy5zbGljZSgwLHJ0KSwhMSkpO2Vsc2V7Zm9yKHZhciBIXz1uZXcgZS5NYXAseV89MDt5XzxUZTt5XysrKXt2YXIgRGQ9X1t5X107SF8uc2V0KERkLmV4cHJlc3Npb24udGV4dCwhMCl9Zm9yKHZhciB5Xz1ydC0xO3lfPj0wO3lfLS0pe3ZhciBqcD1XW3lfXTtIXy5oYXMoanAuZXhwcmVzc2lvbi50ZXh0KXx8VnMudW5zaGlmdChqcCl9fXJldHVybiBlLmlzTm9kZUFycmF5KF8pP2Uuc2V0VGV4dFJhbmdlKG5lKFZzLF8uaGFzVHJhaWxpbmdDb21tYSksXyk6X31mdW5jdGlvbiBzYyhfLFcpe3ZhciBUZSxjcjtyZXR1cm4gdHlwZW9mIFc9PVwibnVtYmVyXCI/Y3I9cXIoVyk6Y3I9VyxlLmlzUGFyYW1ldGVyKF8pP1p0KF8sXy5kZWNvcmF0b3JzLGNyLF8uZG90RG90RG90VG9rZW4sXy5uYW1lLF8ucXVlc3Rpb25Ub2tlbixfLnR5cGUsXy5pbml0aWFsaXplcik6ZS5pc1Byb3BlcnR5U2lnbmF0dXJlKF8pP1hlKF8sY3IsXy5uYW1lLF8ucXVlc3Rpb25Ub2tlbixfLnR5cGUpOmUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKF8pP3RpKF8sXy5kZWNvcmF0b3JzLGNyLF8ubmFtZSwoVGU9Xy5xdWVzdGlvblRva2VuKSE9PW51bGwmJlRlIT09dm9pZCAwP1RlOl8uZXhjbGFtYXRpb25Ub2tlbixfLnR5cGUsXy5pbml0aWFsaXplcik6ZS5pc01ldGhvZFNpZ25hdHVyZShfKT9TcihfLGNyLF8ubmFtZSxfLnF1ZXN0aW9uVG9rZW4sXy50eXBlUGFyYW1ldGVycyxfLnBhcmFtZXRlcnMsXy50eXBlKTplLmlzTWV0aG9kRGVjbGFyYXRpb24oXyk/V3IoXyxfLmRlY29yYXRvcnMsY3IsXy5hc3Rlcmlza1Rva2VuLF8ubmFtZSxfLnF1ZXN0aW9uVG9rZW4sXy50eXBlUGFyYW1ldGVycyxfLnBhcmFtZXRlcnMsXy50eXBlLF8uYm9keSk6ZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oXyk/bXIoXyxfLmRlY29yYXRvcnMsY3IsXy5wYXJhbWV0ZXJzLF8uYm9keSk6ZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oXyk/T2UoXyxfLmRlY29yYXRvcnMsY3IsXy5uYW1lLF8ucGFyYW1ldGVycyxfLnR5cGUsXy5ib2R5KTplLmlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihfKT9NcihfLF8uZGVjb3JhdG9ycyxjcixfLm5hbWUsXy5wYXJhbWV0ZXJzLF8uYm9keSk6ZS5pc0luZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oXyk/VnIoXyxfLmRlY29yYXRvcnMsY3IsXy5wYXJhbWV0ZXJzLF8udHlwZSk6ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihfKT9RcyhfLGNyLF8uYXN0ZXJpc2tUb2tlbixfLm5hbWUsXy50eXBlUGFyYW1ldGVycyxfLnBhcmFtZXRlcnMsXy50eXBlLF8uYm9keSk6ZS5pc0Fycm93RnVuY3Rpb24oXyk/ZHMoXyxjcixfLnR5cGVQYXJhbWV0ZXJzLF8ucGFyYW1ldGVycyxfLnR5cGUsXy5lcXVhbHNHcmVhdGVyVGhhblRva2VuLF8uYm9keSk6ZS5pc0NsYXNzRXhwcmVzc2lvbihfKT9VdShfLF8uZGVjb3JhdG9ycyxjcixfLm5hbWUsXy50eXBlUGFyYW1ldGVycyxfLmhlcml0YWdlQ2xhdXNlcyxfLm1lbWJlcnMpOmUuaXNWYXJpYWJsZVN0YXRlbWVudChfKT9ybihfLGNyLF8uZGVjbGFyYXRpb25MaXN0KTplLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihfKT9ndShfLF8uZGVjb3JhdG9ycyxjcixfLmFzdGVyaXNrVG9rZW4sXy5uYW1lLF8udHlwZVBhcmFtZXRlcnMsXy5wYXJhbWV0ZXJzLF8udHlwZSxfLmJvZHkpOmUuaXNDbGFzc0RlY2xhcmF0aW9uKF8pP3NkKF8sXy5kZWNvcmF0b3JzLGNyLF8ubmFtZSxfLnR5cGVQYXJhbWV0ZXJzLF8uaGVyaXRhZ2VDbGF1c2VzLF8ubWVtYmVycyk6ZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKF8pP3ZhKF8sXy5kZWNvcmF0b3JzLGNyLF8ubmFtZSxfLnR5cGVQYXJhbWV0ZXJzLF8uaGVyaXRhZ2VDbGF1c2VzLF8ubWVtYmVycyk6ZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKF8pP3FzKF8sXy5kZWNvcmF0b3JzLGNyLF8ubmFtZSxfLnR5cGVQYXJhbWV0ZXJzLF8udHlwZSk6ZS5pc0VudW1EZWNsYXJhdGlvbihfKT9ucyhfLF8uZGVjb3JhdG9ycyxjcixfLm5hbWUsXy5tZW1iZXJzKTplLmlzTW9kdWxlRGVjbGFyYXRpb24oXyk/aGMoXyxfLmRlY29yYXRvcnMsY3IsXy5uYW1lLF8uYm9keSk6ZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKF8pP2ZkKF8sXy5kZWNvcmF0b3JzLGNyLF8uaXNUeXBlT25seSxfLm5hbWUsXy5tb2R1bGVSZWZlcmVuY2UpOmUuaXNJbXBvcnREZWNsYXJhdGlvbihfKT9TcChfLF8uZGVjb3JhdG9ycyxjcixfLmltcG9ydENsYXVzZSxfLm1vZHVsZVNwZWNpZmllcixfLmFzc2VydENsYXVzZSk6ZS5pc0V4cG9ydEFzc2lnbm1lbnQoXyk/Z2QoXyxfLmRlY29yYXRvcnMsY3IsXy5leHByZXNzaW9uKTplLmlzRXhwb3J0RGVjbGFyYXRpb24oXyk/JGwoXyxfLmRlY29yYXRvcnMsY3IsXy5pc1R5cGVPbmx5LF8uZXhwb3J0Q2xhdXNlLF8ubW9kdWxlU3BlY2lmaWVyLF8uYXNzZXJ0Q2xhdXNlKTplLkRlYnVnLmFzc2VydE5ldmVyKF8pfWZ1bmN0aW9uIGJjKF8pe3JldHVybiBfP25lKF8pOnZvaWQgMH1mdW5jdGlvbiBNYyhfKXtyZXR1cm4gdHlwZW9mIF89PVwic3RyaW5nXCI/RXIoXyk6X31mdW5jdGlvbiBZdShfKXtyZXR1cm4gdHlwZW9mIF89PVwic3RyaW5nXCI/QWUoXyk6dHlwZW9mIF89PVwibnVtYmVyXCI/d2UoXyk6dHlwZW9mIF89PVwiYm9vbGVhblwiP18/bWkoKTpwZSgpOl99ZnVuY3Rpb24gUmwoXyl7cmV0dXJuIHR5cGVvZiBfPT1cIm51bWJlclwiP0lyKF8pOl99ZnVuY3Rpb24gTGMoXyl7cmV0dXJuIF8mJmUuaXNOb3RFbWl0dGVkU3RhdGVtZW50KF8pP2Uuc2V0VGV4dFJhbmdlKGhlKGpuKCksXyksXyk6X319ZS5jcmVhdGVOb2RlRmFjdG9yeT13O2Z1bmN0aW9uIEIoWCwkKXtyZXR1cm4gWCE9PSQmJmUuc2V0VGV4dFJhbmdlKFgsJCksWH1mdW5jdGlvbiBFKFgsJCl7cmV0dXJuIFghPT0kJiYoaGUoWCwkKSxlLnNldFRleHRSYW5nZShYLCQpKSxYfWZ1bmN0aW9uIFEoWCl7c3dpdGNoKFgpe2Nhc2UgMzQzOnJldHVyblwidHlwZVwiO2Nhc2UgMzQxOnJldHVyblwicmV0dXJuc1wiO2Nhc2UgMzQyOnJldHVyblwidGhpc1wiO2Nhc2UgMzM5OnJldHVyblwiZW51bVwiO2Nhc2UgMzMwOnJldHVyblwiYXV0aG9yXCI7Y2FzZSAzMzI6cmV0dXJuXCJjbGFzc1wiO2Nhc2UgMzMzOnJldHVyblwicHVibGljXCI7Y2FzZSAzMzQ6cmV0dXJuXCJwcml2YXRlXCI7Y2FzZSAzMzU6cmV0dXJuXCJwcm90ZWN0ZWRcIjtjYXNlIDMzNjpyZXR1cm5cInJlYWRvbmx5XCI7Y2FzZSAzMzc6cmV0dXJuXCJvdmVycmlkZVwiO2Nhc2UgMzQ0OnJldHVyblwidGVtcGxhdGVcIjtjYXNlIDM0NTpyZXR1cm5cInR5cGVkZWZcIjtjYXNlIDM0MDpyZXR1cm5cInBhcmFtXCI7Y2FzZSAzNDc6cmV0dXJuXCJwcm9wXCI7Y2FzZSAzMzg6cmV0dXJuXCJjYWxsYmFja1wiO2Nhc2UgMzI4OnJldHVyblwiYXVnbWVudHNcIjtjYXNlIDMyOTpyZXR1cm5cImltcGxlbWVudHNcIjtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoXCJVbnN1cHBvcnRlZCBraW5kOiBcIi5jb25jYXQoZS5EZWJ1Zy5mb3JtYXRTeW50YXhLaW5kKFgpKSl9fXZhciBsZSxOPXt9O2Z1bmN0aW9uIHAoWCwkKXtzd2l0Y2gobGV8fChsZT1lLmNyZWF0ZVNjYW5uZXIoOTksITEsMCkpLFgpe2Nhc2UgMTQ6bGUuc2V0VGV4dChcImBcIiskK1wiYFwiKTticmVhaztjYXNlIDE1OmxlLnNldFRleHQoXCJgXCIrJCtcIiR7XCIpO2JyZWFrO2Nhc2UgMTY6bGUuc2V0VGV4dChcIn1cIiskK1wiJHtcIik7YnJlYWs7Y2FzZSAxNzpsZS5zZXRUZXh0KFwifVwiKyQrXCJgXCIpO2JyZWFrfXZhciBBPWxlLnNjYW4oKTtpZihBPT09MTkmJihBPWxlLnJlU2NhblRlbXBsYXRlVG9rZW4oITEpKSxsZS5pc1VudGVybWluYXRlZCgpKXJldHVybiBsZS5zZXRUZXh0KHZvaWQgMCksTjt2YXIgeTtzd2l0Y2goQSl7Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMTY6Y2FzZSAxNzp5PWxlLmdldFRva2VuVmFsdWUoKTticmVha31yZXR1cm4geT09PXZvaWQgMHx8bGUuc2NhbigpIT09MT8obGUuc2V0VGV4dCh2b2lkIDApLE4pOihsZS5zZXRUZXh0KHZvaWQgMCkseSl9ZnVuY3Rpb24gbShYKXtyZXR1cm4gb2UoWCkmLTE2Nzc3MjE3fWZ1bmN0aW9uIEcoWCwkKXtyZXR1cm4gJHxYLnRyYW5zZm9ybUZsYWdzJjMzNTYyNjI0fWZ1bmN0aW9uIG9lKFgpe2lmKCFYKXJldHVybiAwO3ZhciAkPVgudHJhbnNmb3JtRmxhZ3MmfksoWC5raW5kKTtyZXR1cm4gZS5pc05hbWVkRGVjbGFyYXRpb24oWCkmJmUuaXNQcm9wZXJ0eU5hbWUoWC5uYW1lKT9HKFgubmFtZSwkKTokfWZ1bmN0aW9uIGYoWCl7cmV0dXJuIFg/WC50cmFuc2Zvcm1GbGFnczowfWZ1bmN0aW9uIFQoWCl7Zm9yKHZhciAkPTAsQT0wLHk9WDtBPHkubGVuZ3RoO0ErKyl7dmFyIFY9eVtBXTskfD1vZShWKX1YLnRyYW5zZm9ybUZsYWdzPSR9ZnVuY3Rpb24gSyhYKXtpZihYPj0xNzcmJlg8PTIwMClyZXR1cm4tMjtzd2l0Y2goWCl7Y2FzZSAyMDg6Y2FzZSAyMDk6Y2FzZSAyMDQ6cmV0dXJuIDUzNjg4NzI5NjtjYXNlIDI2MTpyZXR1cm4gNTg5NDQzMDcyO2Nhc2UgMTY0OnJldHVybiA1MzY4NzA5MTI7Y2FzZSAyMTQ6cmV0dXJuIDU1Nzc0ODIyNDtjYXNlIDIxMzpjYXNlIDI1NjpyZXR1cm4gNTkxMzEwODQ4O2Nhc2UgMjU1OnJldHVybiA1MzcxNjU4MjQ7Y2FzZSAyNTc6Y2FzZSAyMjY6cmV0dXJuIDUzNjk0MDU0NDtjYXNlIDE3MTpyZXR1cm4gNTkxMzA2NzUyO2Nhc2UgMTY3OnJldHVybiA1NzA0MzM1MzY7Y2FzZSAxNjk6Y2FzZSAxNzI6Y2FzZSAxNzM6cmV0dXJuIDU3NDUyOTUzNjtjYXNlIDEzMDpjYXNlIDE0NzpjYXNlIDE1ODpjYXNlIDE0MzpjYXNlIDE1MDpjYXNlIDE0ODpjYXNlIDEzMzpjYXNlIDE1MTpjYXNlIDExNDpjYXNlIDE2MzpjYXNlIDE2NjpjYXNlIDE2ODpjYXNlIDE3NDpjYXNlIDE3NTpjYXNlIDE3NjpjYXNlIDI1ODpjYXNlIDI1OTpyZXR1cm4tMjtjYXNlIDIwNTpyZXR1cm4gNTM2OTczMzEyO2Nhc2UgMjkyOnJldHVybiA1MzY5MDM2ODA7Y2FzZSAyMDE6Y2FzZSAyMDI6cmV0dXJuIDUzNjg4NzI5NjtjYXNlIDIxMTpjYXNlIDIyOTpjYXNlIDM1MDpjYXNlIDIxMjpjYXNlIDEwNjpyZXR1cm4gNTM2ODcwOTEyO2Nhc2UgMjA2OmNhc2UgMjA3OnJldHVybiA1MzY4NzA5MTI7ZGVmYXVsdDpyZXR1cm4gNTM2ODcwOTEyfX1lLmdldFRyYW5zZm9ybUZsYWdzU3VidHJlZUV4Y2x1c2lvbnM9Szt2YXIgYj1lLmNyZWF0ZUJhc2VOb2RlRmFjdG9yeSgpO2Z1bmN0aW9uIHNlKFgpe3JldHVybiBYLmZsYWdzfD04LFh9dmFyIEo9e2NyZWF0ZUJhc2VTb3VyY2VGaWxlTm9kZTpmdW5jdGlvbihYKXtyZXR1cm4gc2UoYi5jcmVhdGVCYXNlU291cmNlRmlsZU5vZGUoWCkpfSxjcmVhdGVCYXNlSWRlbnRpZmllck5vZGU6ZnVuY3Rpb24oWCl7cmV0dXJuIHNlKGIuY3JlYXRlQmFzZUlkZW50aWZpZXJOb2RlKFgpKX0sY3JlYXRlQmFzZVByaXZhdGVJZGVudGlmaWVyTm9kZTpmdW5jdGlvbihYKXtyZXR1cm4gc2UoYi5jcmVhdGVCYXNlUHJpdmF0ZUlkZW50aWZpZXJOb2RlKFgpKX0sY3JlYXRlQmFzZVRva2VuTm9kZTpmdW5jdGlvbihYKXtyZXR1cm4gc2UoYi5jcmVhdGVCYXNlVG9rZW5Ob2RlKFgpKX0sY3JlYXRlQmFzZU5vZGU6ZnVuY3Rpb24oWCl7cmV0dXJuIHNlKGIuY3JlYXRlQmFzZU5vZGUoWCkpfX07ZS5mYWN0b3J5PXcoNCxKKTtmdW5jdGlvbiBpZShYLCQsQSl7dmFyIHksVixMLFAsayxZLFUsaixILEk7ZS5pc1N0cmluZyhYKT8oTD1cIlwiLFA9WCxrPVgubGVuZ3RoLFk9JCxVPUEpOihlLkRlYnVnLmFzc2VydCgkPT09XCJqc1wifHwkPT09XCJkdHNcIiksTD0oJD09PVwianNcIj9YLmphdmFzY3JpcHRQYXRoOlguZGVjbGFyYXRpb25QYXRoKXx8XCJcIixZPSQ9PT1cImpzXCI/WC5qYXZhc2NyaXB0TWFwUGF0aDpYLmRlY2xhcmF0aW9uTWFwUGF0aCxqPWZ1bmN0aW9uKCl7cmV0dXJuICQ9PT1cImpzXCI/WC5qYXZhc2NyaXB0VGV4dDpYLmRlY2xhcmF0aW9uVGV4dH0sSD1mdW5jdGlvbigpe3JldHVybiAkPT09XCJqc1wiP1guamF2YXNjcmlwdE1hcFRleHQ6WC5kZWNsYXJhdGlvbk1hcFRleHR9LGs9ZnVuY3Rpb24oKXtyZXR1cm4gaigpLmxlbmd0aH0sWC5idWlsZEluZm8mJlguYnVpbGRJbmZvLmJ1bmRsZSYmKGUuRGVidWcuYXNzZXJ0KEE9PT12b2lkIDB8fHR5cGVvZiBBPT1cImJvb2xlYW5cIikseT1BLFY9JD09PVwianNcIj9YLmJ1aWxkSW5mby5idW5kbGUuanM6WC5idWlsZEluZm8uYnVuZGxlLmR0cyxJPVgub2xkRmlsZU9mQ3VycmVudEVtaXQpKTt2YXIgbD1JP3EoZS5EZWJ1Zy5jaGVja0RlZmluZWQoVikpOlIoVix5LGspO3JldHVybiBsLmZpbGVOYW1lPUwsbC5zb3VyY2VNYXBQYXRoPVksbC5vbGRGaWxlT2ZDdXJyZW50RW1pdD1JLGomJkg/KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFwidGV4dFwiLHtnZXQ6an0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFwic291cmNlTWFwVGV4dFwiLHtnZXQ6SH0pKTooZS5EZWJ1Zy5hc3NlcnQoIUkpLGwudGV4dD1QIT1udWxsP1A6XCJcIixsLnNvdXJjZU1hcFRleHQ9VSksbH1lLmNyZWF0ZVVucGFyc2VkU291cmNlRmlsZT1pZTtmdW5jdGlvbiBSKFgsJCxBKXtmb3IodmFyIHksVixMLFAsayxZLFUsaixIPTAsST1YP1guc2VjdGlvbnM6ZS5lbXB0eUFycmF5O0g8SS5sZW5ndGg7SCsrKXt2YXIgbD1JW0hdO3N3aXRjaChsLmtpbmQpe2Nhc2VcInByb2xvZ3VlXCI6eT1lLmFwcGVuZCh5LGUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVVbnBhcnNlZFByb2xvZ3VlKGwuZGF0YSksbCkpO2JyZWFrO2Nhc2VcImVtaXRIZWxwZXJzXCI6Vj1lLmFwcGVuZChWLGUuZ2V0QWxsVW5zY29wZWRFbWl0SGVscGVycygpLmdldChsLmRhdGEpKTticmVhaztjYXNlXCJuby1kZWZhdWx0LWxpYlwiOmo9ITA7YnJlYWs7Y2FzZVwicmVmZXJlbmNlXCI6TD1lLmFwcGVuZChMLHtwb3M6LTEsZW5kOi0xLGZpbGVOYW1lOmwuZGF0YX0pO2JyZWFrO2Nhc2VcInR5cGVcIjpQPWUuYXBwZW5kKFAse3BvczotMSxlbmQ6LTEsZmlsZU5hbWU6bC5kYXRhfSk7YnJlYWs7Y2FzZVwidHlwZS1pbXBvcnRcIjpQPWUuYXBwZW5kKFAse3BvczotMSxlbmQ6LTEsZmlsZU5hbWU6bC5kYXRhLHJlc29sdXRpb25Nb2RlOmUuTW9kdWxlS2luZC5FU05leHR9KTticmVhaztjYXNlXCJ0eXBlLXJlcXVpcmVcIjpQPWUuYXBwZW5kKFAse3BvczotMSxlbmQ6LTEsZmlsZU5hbWU6bC5kYXRhLHJlc29sdXRpb25Nb2RlOmUuTW9kdWxlS2luZC5Db21tb25KU30pO2JyZWFrO2Nhc2VcImxpYlwiOms9ZS5hcHBlbmQoayx7cG9zOi0xLGVuZDotMSxmaWxlTmFtZTpsLmRhdGF9KTticmVhaztjYXNlXCJwcmVwZW5kXCI6Zm9yKHZhciBkPXZvaWQgMCxEPTAsZmU9bC50ZXh0cztEPGZlLmxlbmd0aDtEKyspe3ZhciBnPWZlW0RdOyghJHx8Zy5raW5kIT09XCJpbnRlcm5hbFwiKSYmKGQ9ZS5hcHBlbmQoZCxlLnNldFRleHRSYW5nZShlLmZhY3RvcnkuY3JlYXRlVW5wYXJzZWRUZXh0TGlrZShnLmRhdGEsZy5raW5kPT09XCJpbnRlcm5hbFwiKSxnKSkpfVk9ZS5hZGRSYW5nZShZLGQpLFU9ZS5hcHBlbmQoVSxlLmZhY3RvcnkuY3JlYXRlVW5wYXJzZWRQcmVwZW5kKGwuZGF0YSxkIT1udWxsP2Q6ZS5lbXB0eUFycmF5KSk7YnJlYWs7Y2FzZVwiaW50ZXJuYWxcIjppZigkKXtVfHwoVT1bXSk7YnJlYWt9Y2FzZVwidGV4dFwiOlU9ZS5hcHBlbmQoVSxlLnNldFRleHRSYW5nZShlLmZhY3RvcnkuY3JlYXRlVW5wYXJzZWRUZXh0TGlrZShsLmRhdGEsbC5raW5kPT09XCJpbnRlcm5hbFwiKSxsKSk7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKGwpfX1pZighVSl7dmFyIG5lPWUuZmFjdG9yeS5jcmVhdGVVbnBhcnNlZFRleHRMaWtlKHZvaWQgMCwhMSk7ZS5zZXRUZXh0UmFuZ2VQb3NXaWR0aChuZSwwLHR5cGVvZiBBPT1cImZ1bmN0aW9uXCI/QSgpOkEpLFU9W25lXX12YXIgdWU9ZS5wYXJzZU5vZGVGYWN0b3J5LmNyZWF0ZVVucGFyc2VkU291cmNlKHkhPW51bGw/eTplLmVtcHR5QXJyYXksdm9pZCAwLFUpO3JldHVybiBlLnNldEVhY2hQYXJlbnQoeSx1ZSksZS5zZXRFYWNoUGFyZW50KFUsdWUpLGUuc2V0RWFjaFBhcmVudChZLHVlKSx1ZS5oYXNOb0RlZmF1bHRMaWI9aix1ZS5oZWxwZXJzPVYsdWUucmVmZXJlbmNlZEZpbGVzPUx8fGUuZW1wdHlBcnJheSx1ZS50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcz1QLHVlLmxpYlJlZmVyZW5jZURpcmVjdGl2ZXM9a3x8ZS5lbXB0eUFycmF5LHVlfWZ1bmN0aW9uIHEoWCl7Zm9yKHZhciAkLEEseT0wLFY9WC5zZWN0aW9uczt5PFYubGVuZ3RoO3krKyl7dmFyIEw9Vlt5XTtzd2l0Y2goTC5raW5kKXtjYXNlXCJpbnRlcm5hbFwiOmNhc2VcInRleHRcIjokPWUuYXBwZW5kKCQsZS5zZXRUZXh0UmFuZ2UoZS5mYWN0b3J5LmNyZWF0ZVVucGFyc2VkVGV4dExpa2UoTC5kYXRhLEwua2luZD09PVwiaW50ZXJuYWxcIiksTCkpO2JyZWFrO2Nhc2VcIm5vLWRlZmF1bHQtbGliXCI6Y2FzZVwicmVmZXJlbmNlXCI6Y2FzZVwidHlwZVwiOmNhc2VcInR5cGUtaW1wb3J0XCI6Y2FzZVwidHlwZS1yZXF1aXJlXCI6Y2FzZVwibGliXCI6QT1lLmFwcGVuZChBLGUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVVbnBhcnNlZFN5bnRoZXRpY1JlZmVyZW5jZShMKSxMKSk7YnJlYWs7Y2FzZVwicHJvbG9ndWVcIjpjYXNlXCJlbWl0SGVscGVyc1wiOmNhc2VcInByZXBlbmRcIjpicmVhaztkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoTCl9fXZhciBQPWUuZmFjdG9yeS5jcmVhdGVVbnBhcnNlZFNvdXJjZShlLmVtcHR5QXJyYXksQSwkIT1udWxsPyQ6ZS5lbXB0eUFycmF5KTtyZXR1cm4gZS5zZXRFYWNoUGFyZW50KEEsUCksZS5zZXRFYWNoUGFyZW50KCQsUCksUC5oZWxwZXJzPWUubWFwKFguc291cmNlcyYmWC5zb3VyY2VzLmhlbHBlcnMsZnVuY3Rpb24oayl7cmV0dXJuIGUuZ2V0QWxsVW5zY29wZWRFbWl0SGVscGVycygpLmdldChrKX0pLFB9ZnVuY3Rpb24gTyhYLCQsQSx5LFYsTCxQLGssWSxVLGope3ZhciBIPWUucGFyc2VOb2RlRmFjdG9yeS5jcmVhdGVJbnB1dEZpbGVzKCk7aWYoZS5pc1N0cmluZyhYKSlILmphdmFzY3JpcHRUZXh0PVgsSC5qYXZhc2NyaXB0TWFwUGF0aD1BLEguamF2YXNjcmlwdE1hcFRleHQ9eSxILmRlY2xhcmF0aW9uVGV4dD0kLEguZGVjbGFyYXRpb25NYXBQYXRoPVYsSC5kZWNsYXJhdGlvbk1hcFRleHQ9TCxILmphdmFzY3JpcHRQYXRoPVAsSC5kZWNsYXJhdGlvblBhdGg9ayxILmJ1aWxkSW5mb1BhdGg9WSxILmJ1aWxkSW5mbz1VLEgub2xkRmlsZU9mQ3VycmVudEVtaXQ9ajtlbHNle3ZhciBJPW5ldyBlLk1hcCxsPWZ1bmN0aW9uKGcpe2lmKGchPT12b2lkIDApe3ZhciBuZT1JLmdldChnKTtyZXR1cm4gbmU9PT12b2lkIDAmJihuZT1YKGcpLEkuc2V0KGcsbmUhPT12b2lkIDA/bmU6ITEpKSxuZSE9PSExP25lOnZvaWQgMH19LGQ9ZnVuY3Rpb24oZyl7dmFyIG5lPWwoZyk7cmV0dXJuIG5lIT09dm9pZCAwP25lOlwiLyogSW5wdXQgZmlsZSBcIi5jb25jYXQoZyxgIHdhcyBtaXNzaW5nICovXFxyXG5gKX0sRCxmZT1mdW5jdGlvbihnKXtpZihEPT09dm9pZCAwKXt2YXIgbmU9ZygpO0Q9bmUhPT12b2lkIDA/ZS5nZXRCdWlsZEluZm8obmUpOiExfXJldHVybiBEfHx2b2lkIDB9O0guamF2YXNjcmlwdFBhdGg9JCxILmphdmFzY3JpcHRNYXBQYXRoPUEsSC5kZWNsYXJhdGlvblBhdGg9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoeSksSC5kZWNsYXJhdGlvbk1hcFBhdGg9VixILmJ1aWxkSW5mb1BhdGg9TCxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhILHtqYXZhc2NyaXB0VGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQoJCl9fSxqYXZhc2NyaXB0TWFwVGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwoQSl9fSxkZWNsYXJhdGlvblRleHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBkKGUuRGVidWcuY2hlY2tEZWZpbmVkKHkpKX19LGRlY2xhcmF0aW9uTWFwVGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwoVil9fSxidWlsZEluZm86e2dldDpmdW5jdGlvbigpe3JldHVybiBmZShmdW5jdGlvbigpe3JldHVybiBsKEwpfSl9fX0pfXJldHVybiBIfWUuY3JlYXRlSW5wdXRGaWxlcz1PO3ZhciB2ZTtmdW5jdGlvbiBlZShYLCQsQSl7cmV0dXJuIG5ldyh2ZXx8KHZlPWUub2JqZWN0QWxsb2NhdG9yLmdldFNvdXJjZU1hcFNvdXJjZUNvbnN0cnVjdG9yKCkpKShYLCQsQSl9ZS5jcmVhdGVTb3VyY2VNYXBTb3VyY2U9ZWU7ZnVuY3Rpb24gaGUoWCwkKXtpZihYLm9yaWdpbmFsPSQsJCl7dmFyIEE9JC5lbWl0Tm9kZTtBJiYoWC5lbWl0Tm9kZT1GKEEsWC5lbWl0Tm9kZSkpfXJldHVybiBYfWUuc2V0T3JpZ2luYWxOb2RlPWhlO2Z1bmN0aW9uIEYoWCwkKXt2YXIgQT1YLmZsYWdzLHk9WC5sZWFkaW5nQ29tbWVudHMsVj1YLnRyYWlsaW5nQ29tbWVudHMsTD1YLmNvbW1lbnRSYW5nZSxQPVguc291cmNlTWFwUmFuZ2Usaz1YLnRva2VuU291cmNlTWFwUmFuZ2VzLFk9WC5jb25zdGFudFZhbHVlLFU9WC5oZWxwZXJzLGo9WC5zdGFydHNPbk5ld0xpbmU7aWYoJHx8KCQ9e30pLHkmJigkLmxlYWRpbmdDb21tZW50cz1lLmFkZFJhbmdlKHkuc2xpY2UoKSwkLmxlYWRpbmdDb21tZW50cykpLFYmJigkLnRyYWlsaW5nQ29tbWVudHM9ZS5hZGRSYW5nZShWLnNsaWNlKCksJC50cmFpbGluZ0NvbW1lbnRzKSksQSYmKCQuZmxhZ3M9QSYtMjY4NDM1NDU3KSxMJiYoJC5jb21tZW50UmFuZ2U9TCksUCYmKCQuc291cmNlTWFwUmFuZ2U9UCksayYmKCQudG9rZW5Tb3VyY2VNYXBSYW5nZXM9eChrLCQudG9rZW5Tb3VyY2VNYXBSYW5nZXMpKSxZIT09dm9pZCAwJiYoJC5jb25zdGFudFZhbHVlPVkpLFUpZm9yKHZhciBIPTAsST1VO0g8SS5sZW5ndGg7SCsrKXt2YXIgbD1JW0hdOyQuaGVscGVycz1lLmFwcGVuZElmVW5pcXVlKCQuaGVscGVycyxsKX1yZXR1cm4gaiE9PXZvaWQgMCYmKCQuc3RhcnRzT25OZXdMaW5lPWopLCR9ZnVuY3Rpb24geChYLCQpeyR8fCgkPVtdKTtmb3IodmFyIEEgaW4gWCkkW0FdPVhbQV07cmV0dXJuICR9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShMKXt2YXIgUDtpZihMLmVtaXROb2RlKWUuRGVidWcuYXNzZXJ0KCEoTC5lbWl0Tm9kZS5mbGFncyYyNjg0MzU0NTYpLFwiSW52YWxpZCBhdHRlbXB0IHRvIG11dGF0ZSBhbiBpbW11dGFibGUgbm9kZS5cIik7ZWxzZXtpZihlLmlzUGFyc2VUcmVlTm9kZShMKSl7aWYoTC5raW5kPT09MzA1KXJldHVybiBMLmVtaXROb2RlPXthbm5vdGF0ZWROb2RlczpbTF19O3ZhciBrPShQPWUuZ2V0U291cmNlRmlsZU9mTm9kZShlLmdldFBhcnNlVHJlZU5vZGUoZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKEwpKSkpIT09bnVsbCYmUCE9PXZvaWQgMD9QOmUuRGVidWcuZmFpbChcIkNvdWxkIG5vdCBkZXRlcm1pbmUgcGFyc2VkIHNvdXJjZSBmaWxlLlwiKTthKGspLmFubm90YXRlZE5vZGVzLnB1c2goTCl9TC5lbWl0Tm9kZT17fX1yZXR1cm4gTC5lbWl0Tm9kZX1lLmdldE9yQ3JlYXRlRW1pdE5vZGU9YTtmdW5jdGlvbiBDKEwpe3ZhciBQLGssWT0oaz0oUD1lLmdldFNvdXJjZUZpbGVPZk5vZGUoZS5nZXRQYXJzZVRyZWVOb2RlKEwpKSk9PT1udWxsfHxQPT09dm9pZCAwP3ZvaWQgMDpQLmVtaXROb2RlKT09PW51bGx8fGs9PT12b2lkIDA/dm9pZCAwOmsuYW5ub3RhdGVkTm9kZXM7aWYoWSlmb3IodmFyIFU9MCxqPVk7VTxqLmxlbmd0aDtVKyspe3ZhciBIPWpbVV07SC5lbWl0Tm9kZT12b2lkIDB9fWUuZGlzcG9zZUVtaXROb2Rlcz1DO2Z1bmN0aW9uIHcoTCl7dmFyIFA9YShMKTtyZXR1cm4gUC5mbGFnc3w9MTUzNixQLmxlYWRpbmdDb21tZW50cz12b2lkIDAsUC50cmFpbGluZ0NvbW1lbnRzPXZvaWQgMCxMfWUucmVtb3ZlQWxsQ29tbWVudHM9dztmdW5jdGlvbiBCKEwsUCl7cmV0dXJuIGEoTCkuZmxhZ3M9UCxMfWUuc2V0RW1pdEZsYWdzPUI7ZnVuY3Rpb24gRShMLFApe3ZhciBrPWEoTCk7cmV0dXJuIGsuZmxhZ3M9ay5mbGFnc3xQLEx9ZS5hZGRFbWl0RmxhZ3M9RTtmdW5jdGlvbiBRKEwpe3ZhciBQLGs7cmV0dXJuKGs9KFA9TC5lbWl0Tm9kZSk9PT1udWxsfHxQPT09dm9pZCAwP3ZvaWQgMDpQLnNvdXJjZU1hcFJhbmdlKSE9PW51bGwmJmshPT12b2lkIDA/azpMfWUuZ2V0U291cmNlTWFwUmFuZ2U9UTtmdW5jdGlvbiBsZShMLFApe3JldHVybiBhKEwpLnNvdXJjZU1hcFJhbmdlPVAsTH1lLnNldFNvdXJjZU1hcFJhbmdlPWxlO2Z1bmN0aW9uIE4oTCxQKXt2YXIgayxZO3JldHVybihZPShrPUwuZW1pdE5vZGUpPT09bnVsbHx8az09PXZvaWQgMD92b2lkIDA6ay50b2tlblNvdXJjZU1hcFJhbmdlcyk9PT1udWxsfHxZPT09dm9pZCAwP3ZvaWQgMDpZW1BdfWUuZ2V0VG9rZW5Tb3VyY2VNYXBSYW5nZT1OO2Z1bmN0aW9uIHAoTCxQLGspe3ZhciBZLFU9YShMKSxqPShZPVUudG9rZW5Tb3VyY2VNYXBSYW5nZXMpIT09bnVsbCYmWSE9PXZvaWQgMD9ZOlUudG9rZW5Tb3VyY2VNYXBSYW5nZXM9W107cmV0dXJuIGpbUF09ayxMfWUuc2V0VG9rZW5Tb3VyY2VNYXBSYW5nZT1wO2Z1bmN0aW9uIG0oTCl7dmFyIFA7cmV0dXJuKFA9TC5lbWl0Tm9kZSk9PT1udWxsfHxQPT09dm9pZCAwP3ZvaWQgMDpQLnN0YXJ0c09uTmV3TGluZX1lLmdldFN0YXJ0c09uTmV3TGluZT1tO2Z1bmN0aW9uIEcoTCxQKXtyZXR1cm4gYShMKS5zdGFydHNPbk5ld0xpbmU9UCxMfWUuc2V0U3RhcnRzT25OZXdMaW5lPUc7ZnVuY3Rpb24gb2UoTCl7dmFyIFAsaztyZXR1cm4oaz0oUD1MLmVtaXROb2RlKT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAuY29tbWVudFJhbmdlKSE9PW51bGwmJmshPT12b2lkIDA/azpMfWUuZ2V0Q29tbWVudFJhbmdlPW9lO2Z1bmN0aW9uIGYoTCxQKXtyZXR1cm4gYShMKS5jb21tZW50UmFuZ2U9UCxMfWUuc2V0Q29tbWVudFJhbmdlPWY7ZnVuY3Rpb24gVChMKXt2YXIgUDtyZXR1cm4oUD1MLmVtaXROb2RlKT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAubGVhZGluZ0NvbW1lbnRzfWUuZ2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzPVQ7ZnVuY3Rpb24gSyhMLFApe3JldHVybiBhKEwpLmxlYWRpbmdDb21tZW50cz1QLEx9ZS5zZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHM9SztmdW5jdGlvbiBiKEwsUCxrLFkpe3JldHVybiBLKEwsZS5hcHBlbmQoVChMKSx7a2luZDpQLHBvczotMSxlbmQ6LTEsaGFzVHJhaWxpbmdOZXdMaW5lOlksdGV4dDprfSkpfWUuYWRkU3ludGhldGljTGVhZGluZ0NvbW1lbnQ9YjtmdW5jdGlvbiBzZShMKXt2YXIgUDtyZXR1cm4oUD1MLmVtaXROb2RlKT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAudHJhaWxpbmdDb21tZW50c31lLmdldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHM9c2U7ZnVuY3Rpb24gSihMLFApe3JldHVybiBhKEwpLnRyYWlsaW5nQ29tbWVudHM9UCxMfWUuc2V0U3ludGhldGljVHJhaWxpbmdDb21tZW50cz1KO2Z1bmN0aW9uIGllKEwsUCxrLFkpe3JldHVybiBKKEwsZS5hcHBlbmQoc2UoTCkse2tpbmQ6UCxwb3M6LTEsZW5kOi0xLGhhc1RyYWlsaW5nTmV3TGluZTpZLHRleHQ6a30pKX1lLmFkZFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudD1pZTtmdW5jdGlvbiBSKEwsUCl7SyhMLFQoUCkpLEooTCxzZShQKSk7dmFyIGs9YShQKTtyZXR1cm4gay5sZWFkaW5nQ29tbWVudHM9dm9pZCAwLGsudHJhaWxpbmdDb21tZW50cz12b2lkIDAsTH1lLm1vdmVTeW50aGV0aWNDb21tZW50cz1SO2Z1bmN0aW9uIHEoTCl7dmFyIFA7cmV0dXJuKFA9TC5lbWl0Tm9kZSk9PT1udWxsfHxQPT09dm9pZCAwP3ZvaWQgMDpQLmNvbnN0YW50VmFsdWV9ZS5nZXRDb25zdGFudFZhbHVlPXE7ZnVuY3Rpb24gTyhMLFApe3ZhciBrPWEoTCk7cmV0dXJuIGsuY29uc3RhbnRWYWx1ZT1QLEx9ZS5zZXRDb25zdGFudFZhbHVlPU87ZnVuY3Rpb24gdmUoTCxQKXt2YXIgaz1hKEwpO3JldHVybiBrLmhlbHBlcnM9ZS5hcHBlbmQoay5oZWxwZXJzLFApLEx9ZS5hZGRFbWl0SGVscGVyPXZlO2Z1bmN0aW9uIGVlKEwsUCl7aWYoZS5zb21lKFApKWZvcih2YXIgaz1hKEwpLFk9MCxVPVA7WTxVLmxlbmd0aDtZKyspe3ZhciBqPVVbWV07ay5oZWxwZXJzPWUuYXBwZW5kSWZVbmlxdWUoay5oZWxwZXJzLGopfXJldHVybiBMfWUuYWRkRW1pdEhlbHBlcnM9ZWU7ZnVuY3Rpb24gaGUoTCxQKXt2YXIgayxZPShrPUwuZW1pdE5vZGUpPT09bnVsbHx8az09PXZvaWQgMD92b2lkIDA6ay5oZWxwZXJzO3JldHVybiBZP2Uub3JkZXJlZFJlbW92ZUl0ZW0oWSxQKTohMX1lLnJlbW92ZUVtaXRIZWxwZXI9aGU7ZnVuY3Rpb24gRihMKXt2YXIgUDtyZXR1cm4oUD1MLmVtaXROb2RlKT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAuaGVscGVyc31lLmdldEVtaXRIZWxwZXJzPUY7ZnVuY3Rpb24geChMLFAsayl7dmFyIFk9TC5lbWl0Tm9kZSxVPVkmJlkuaGVscGVycztpZighIWUuc29tZShVKSl7Zm9yKHZhciBqPWEoUCksSD0wLEk9MDtJPFUubGVuZ3RoO0krKyl7dmFyIGw9VVtJXTtrKGwpPyhIKyssai5oZWxwZXJzPWUuYXBwZW5kSWZVbmlxdWUoai5oZWxwZXJzLGwpKTpIPjAmJihVW0ktSF09bCl9SD4wJiYoVS5sZW5ndGgtPUgpfX1lLm1vdmVFbWl0SGVscGVycz14O2Z1bmN0aW9uIFgoTCl7dmFyIFA7cmV0dXJuKFA9TC5lbWl0Tm9kZSk9PT1udWxsfHxQPT09dm9pZCAwP3ZvaWQgMDpQLnNuaXBwZXRFbGVtZW50fWUuZ2V0U25pcHBldEVsZW1lbnQ9WDtmdW5jdGlvbiAkKEwsUCl7dmFyIGs9YShMKTtyZXR1cm4gay5zbmlwcGV0RWxlbWVudD1QLEx9ZS5zZXRTbmlwcGV0RWxlbWVudD0kO2Z1bmN0aW9uIEEoTCl7cmV0dXJuIGEoTCkuZmxhZ3N8PTEzNDIxNzcyOCxMfWUuaWdub3JlU291cmNlTmV3bGluZXM9QTtmdW5jdGlvbiB5KEwsUCl7dmFyIGs9YShMKTtyZXR1cm4gay50eXBlTm9kZT1QLEx9ZS5zZXRUeXBlTm9kZT15O2Z1bmN0aW9uIFYoTCl7dmFyIFA7cmV0dXJuKFA9TC5lbWl0Tm9kZSk9PT1udWxsfHxQPT09dm9pZCAwP3ZvaWQgMDpQLnR5cGVOb2RlfWUuZ2V0VHlwZU5vZGU9Vn0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEobGUpe3ZhciBOPWxlLmZhY3RvcnkscD1lLm1lbW9pemUoZnVuY3Rpb24oKXtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoTi5jcmVhdGVUcnVlKCksMjY4NDM1NDU2KX0pLG09ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIGUuc2V0RW1pdEZsYWdzKE4uY3JlYXRlRmFsc2UoKSwyNjg0MzU0NTYpfSk7cmV0dXJue2dldFVuc2NvcGVkSGVscGVyTmFtZTpHLGNyZWF0ZURlY29yYXRlSGVscGVyOm9lLGNyZWF0ZU1ldGFkYXRhSGVscGVyOmYsY3JlYXRlUGFyYW1IZWxwZXI6VCxjcmVhdGVBc3NpZ25IZWxwZXI6SyxjcmVhdGVBd2FpdEhlbHBlcjpiLGNyZWF0ZUFzeW5jR2VuZXJhdG9ySGVscGVyOnNlLGNyZWF0ZUFzeW5jRGVsZWdhdG9ySGVscGVyOkosY3JlYXRlQXN5bmNWYWx1ZXNIZWxwZXI6aWUsY3JlYXRlUmVzdEhlbHBlcjpSLGNyZWF0ZUF3YWl0ZXJIZWxwZXI6cSxjcmVhdGVFeHRlbmRzSGVscGVyOk8sY3JlYXRlVGVtcGxhdGVPYmplY3RIZWxwZXI6dmUsY3JlYXRlU3ByZWFkQXJyYXlIZWxwZXI6ZWUsY3JlYXRlVmFsdWVzSGVscGVyOmhlLGNyZWF0ZVJlYWRIZWxwZXI6RixjcmVhdGVHZW5lcmF0b3JIZWxwZXI6eCxjcmVhdGVDcmVhdGVCaW5kaW5nSGVscGVyOlgsY3JlYXRlSW1wb3J0U3RhckhlbHBlcjokLGNyZWF0ZUltcG9ydFN0YXJDYWxsYmFja0hlbHBlcjpBLGNyZWF0ZUltcG9ydERlZmF1bHRIZWxwZXI6eSxjcmVhdGVFeHBvcnRTdGFySGVscGVyOlYsY3JlYXRlQ2xhc3NQcml2YXRlRmllbGRHZXRIZWxwZXI6TCxjcmVhdGVDbGFzc1ByaXZhdGVGaWVsZFNldEhlbHBlcjpQLGNyZWF0ZUNsYXNzUHJpdmF0ZUZpZWxkSW5IZWxwZXI6a307ZnVuY3Rpb24gRyhZKXtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoTi5jcmVhdGVJZGVudGlmaWVyKFkpLDQwOTgpfWZ1bmN0aW9uIG9lKFksVSxqLEgpe2xlLnJlcXVlc3RFbWl0SGVscGVyKGUuZGVjb3JhdGVIZWxwZXIpO3ZhciBJPVtdO3JldHVybiBJLnB1c2goTi5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKFksITApKSxJLnB1c2goVSksaiYmKEkucHVzaChqKSxIJiZJLnB1c2goSCkpLE4uY3JlYXRlQ2FsbEV4cHJlc3Npb24oRyhcIl9fZGVjb3JhdGVcIiksdm9pZCAwLEkpfWZ1bmN0aW9uIGYoWSxVKXtyZXR1cm4gbGUucmVxdWVzdEVtaXRIZWxwZXIoZS5tZXRhZGF0YUhlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19tZXRhZGF0YVwiKSx2b2lkIDAsW04uY3JlYXRlU3RyaW5nTGl0ZXJhbChZKSxVXSl9ZnVuY3Rpb24gVChZLFUsail7cmV0dXJuIGxlLnJlcXVlc3RFbWl0SGVscGVyKGUucGFyYW1IZWxwZXIpLGUuc2V0VGV4dFJhbmdlKE4uY3JlYXRlQ2FsbEV4cHJlc3Npb24oRyhcIl9fcGFyYW1cIiksdm9pZCAwLFtOLmNyZWF0ZU51bWVyaWNMaXRlcmFsKFUrXCJcIiksWV0pLGopfWZ1bmN0aW9uIEsoWSl7cmV0dXJuIGUuZ2V0RW1pdFNjcmlwdFRhcmdldChsZS5nZXRDb21waWxlck9wdGlvbnMoKSk+PTI/Ti5jcmVhdGVDYWxsRXhwcmVzc2lvbihOLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihOLmNyZWF0ZUlkZW50aWZpZXIoXCJPYmplY3RcIiksXCJhc3NpZ25cIiksdm9pZCAwLFkpOihsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmFzc2lnbkhlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19hc3NpZ25cIiksdm9pZCAwLFkpKX1mdW5jdGlvbiBiKFkpe3JldHVybiBsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmF3YWl0SGVscGVyKSxOLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEcoXCJfX2F3YWl0XCIpLHZvaWQgMCxbWV0pfWZ1bmN0aW9uIHNlKFksVSl7cmV0dXJuIGxlLnJlcXVlc3RFbWl0SGVscGVyKGUuYXdhaXRIZWxwZXIpLGxlLnJlcXVlc3RFbWl0SGVscGVyKGUuYXN5bmNHZW5lcmF0b3JIZWxwZXIpLChZLmVtaXROb2RlfHwoWS5lbWl0Tm9kZT17fSkpLmZsYWdzfD03ODY0MzIsTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19hc3luY0dlbmVyYXRvclwiKSx2b2lkIDAsW1U/Ti5jcmVhdGVUaGlzKCk6Ti5jcmVhdGVWb2lkWmVybygpLE4uY3JlYXRlSWRlbnRpZmllcihcImFyZ3VtZW50c1wiKSxZXSl9ZnVuY3Rpb24gSihZKXtyZXR1cm4gbGUucmVxdWVzdEVtaXRIZWxwZXIoZS5hd2FpdEhlbHBlciksbGUucmVxdWVzdEVtaXRIZWxwZXIoZS5hc3luY0RlbGVnYXRvciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19hc3luY0RlbGVnYXRvclwiKSx2b2lkIDAsW1ldKX1mdW5jdGlvbiBpZShZKXtyZXR1cm4gbGUucmVxdWVzdEVtaXRIZWxwZXIoZS5hc3luY1ZhbHVlcyksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19hc3luY1ZhbHVlc1wiKSx2b2lkIDAsW1ldKX1mdW5jdGlvbiBSKFksVSxqLEgpe2xlLnJlcXVlc3RFbWl0SGVscGVyKGUucmVzdEhlbHBlcik7Zm9yKHZhciBJPVtdLGw9MCxkPTA7ZDxVLmxlbmd0aC0xO2QrKyl7dmFyIEQ9ZS5nZXRQcm9wZXJ0eU5hbWVPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50KFVbZF0pO2lmKEQpaWYoZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKEQpKXtlLkRlYnVnLmFzc2VydElzRGVmaW5lZChqLFwiRW5jb3VudGVyZWQgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSBidXQgJ2NvbXB1dGVkVGVtcFZhcmlhYmxlcycgYXJndW1lbnQgd2FzIG5vdCBwcm92aWRlZC5cIik7dmFyIGZlPWpbbF07bCsrLEkucHVzaChOLmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihOLmNyZWF0ZVR5cGVDaGVjayhmZSxcInN5bWJvbFwiKSx2b2lkIDAsZmUsdm9pZCAwLE4uY3JlYXRlQWRkKGZlLE4uY3JlYXRlU3RyaW5nTGl0ZXJhbChcIlwiKSkpKX1lbHNlIEkucHVzaChOLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShEKSl9cmV0dXJuIE4uY3JlYXRlQ2FsbEV4cHJlc3Npb24oRyhcIl9fcmVzdFwiKSx2b2lkIDAsW1ksZS5zZXRUZXh0UmFuZ2UoTi5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKEkpLEgpXSl9ZnVuY3Rpb24gcShZLFUsaixIKXtsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmF3YWl0ZXJIZWxwZXIpO3ZhciBJPU4uY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHZvaWQgMCxOLmNyZWF0ZVRva2VuKDQxKSx2b2lkIDAsdm9pZCAwLFtdLHZvaWQgMCxIKTtyZXR1cm4oSS5lbWl0Tm9kZXx8KEkuZW1pdE5vZGU9e30pKS5mbGFnc3w9Nzg2NDMyLE4uY3JlYXRlQ2FsbEV4cHJlc3Npb24oRyhcIl9fYXdhaXRlclwiKSx2b2lkIDAsW1k/Ti5jcmVhdGVUaGlzKCk6Ti5jcmVhdGVWb2lkWmVybygpLFU/Ti5jcmVhdGVJZGVudGlmaWVyKFwiYXJndW1lbnRzXCIpOk4uY3JlYXRlVm9pZFplcm8oKSxqP2UuY3JlYXRlRXhwcmVzc2lvbkZyb21FbnRpdHlOYW1lKE4saik6Ti5jcmVhdGVWb2lkWmVybygpLEldKX1mdW5jdGlvbiBPKFkpe3JldHVybiBsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmV4dGVuZHNIZWxwZXIpLE4uY3JlYXRlQ2FsbEV4cHJlc3Npb24oRyhcIl9fZXh0ZW5kc1wiKSx2b2lkIDAsW1ksTi5jcmVhdGVVbmlxdWVOYW1lKFwiX3N1cGVyXCIsNDgpXSl9ZnVuY3Rpb24gdmUoWSxVKXtyZXR1cm4gbGUucmVxdWVzdEVtaXRIZWxwZXIoZS50ZW1wbGF0ZU9iamVjdEhlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19tYWtlVGVtcGxhdGVPYmplY3RcIiksdm9pZCAwLFtZLFVdKX1mdW5jdGlvbiBlZShZLFUsail7cmV0dXJuIGxlLnJlcXVlc3RFbWl0SGVscGVyKGUuc3ByZWFkQXJyYXlIZWxwZXIpLE4uY3JlYXRlQ2FsbEV4cHJlc3Npb24oRyhcIl9fc3ByZWFkQXJyYXlcIiksdm9pZCAwLFtZLFUsaj9wKCk6bSgpXSl9ZnVuY3Rpb24gaGUoWSl7cmV0dXJuIGxlLnJlcXVlc3RFbWl0SGVscGVyKGUudmFsdWVzSGVscGVyKSxOLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEcoXCJfX3ZhbHVlc1wiKSx2b2lkIDAsW1ldKX1mdW5jdGlvbiBGKFksVSl7cmV0dXJuIGxlLnJlcXVlc3RFbWl0SGVscGVyKGUucmVhZEhlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19yZWFkXCIpLHZvaWQgMCxVIT09dm9pZCAwP1tZLE4uY3JlYXRlTnVtZXJpY0xpdGVyYWwoVStcIlwiKV06W1ldKX1mdW5jdGlvbiB4KFkpe3JldHVybiBsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmdlbmVyYXRvckhlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19nZW5lcmF0b3JcIiksdm9pZCAwLFtOLmNyZWF0ZVRoaXMoKSxZXSl9ZnVuY3Rpb24gWChZLFUsail7cmV0dXJuIGxlLnJlcXVlc3RFbWl0SGVscGVyKGUuY3JlYXRlQmluZGluZ0hlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19jcmVhdGVCaW5kaW5nXCIpLHZvaWQgMCxWZShbTi5jcmVhdGVJZGVudGlmaWVyKFwiZXhwb3J0c1wiKSxZLFVdLGo/W2pdOltdLCEwKSl9ZnVuY3Rpb24gJChZKXtyZXR1cm4gbGUucmVxdWVzdEVtaXRIZWxwZXIoZS5pbXBvcnRTdGFySGVscGVyKSxOLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEcoXCJfX2ltcG9ydFN0YXJcIiksdm9pZCAwLFtZXSl9ZnVuY3Rpb24gQSgpe3JldHVybiBsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmltcG9ydFN0YXJIZWxwZXIpLEcoXCJfX2ltcG9ydFN0YXJcIil9ZnVuY3Rpb24geShZKXtyZXR1cm4gbGUucmVxdWVzdEVtaXRIZWxwZXIoZS5pbXBvcnREZWZhdWx0SGVscGVyKSxOLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEcoXCJfX2ltcG9ydERlZmF1bHRcIiksdm9pZCAwLFtZXSl9ZnVuY3Rpb24gVihZLFUpe3JldHVybiBVPT09dm9pZCAwJiYoVT1OLmNyZWF0ZUlkZW50aWZpZXIoXCJleHBvcnRzXCIpKSxsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmV4cG9ydFN0YXJIZWxwZXIpLGxlLnJlcXVlc3RFbWl0SGVscGVyKGUuY3JlYXRlQmluZGluZ0hlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19leHBvcnRTdGFyXCIpLHZvaWQgMCxbWSxVXSl9ZnVuY3Rpb24gTChZLFUsaixIKXtsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmNsYXNzUHJpdmF0ZUZpZWxkR2V0SGVscGVyKTt2YXIgSTtyZXR1cm4gSD9JPVtZLFUsTi5jcmVhdGVTdHJpbmdMaXRlcmFsKGopLEhdOkk9W1ksVSxOLmNyZWF0ZVN0cmluZ0xpdGVyYWwoaildLE4uY3JlYXRlQ2FsbEV4cHJlc3Npb24oRyhcIl9fY2xhc3NQcml2YXRlRmllbGRHZXRcIiksdm9pZCAwLEkpfWZ1bmN0aW9uIFAoWSxVLGosSCxJKXtsZS5yZXF1ZXN0RW1pdEhlbHBlcihlLmNsYXNzUHJpdmF0ZUZpZWxkU2V0SGVscGVyKTt2YXIgbDtyZXR1cm4gST9sPVtZLFUsaixOLmNyZWF0ZVN0cmluZ0xpdGVyYWwoSCksSV06bD1bWSxVLGosTi5jcmVhdGVTdHJpbmdMaXRlcmFsKEgpXSxOLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEcoXCJfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0XCIpLHZvaWQgMCxsKX1mdW5jdGlvbiBrKFksVSl7cmV0dXJuIGxlLnJlcXVlc3RFbWl0SGVscGVyKGUuY2xhc3NQcml2YXRlRmllbGRJbkhlbHBlciksTi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFwiX19jbGFzc1ByaXZhdGVGaWVsZEluXCIpLHZvaWQgMCxbWSxVXSl9fWUuY3JlYXRlRW1pdEhlbHBlckZhY3Rvcnk9YTtmdW5jdGlvbiBDKGxlLE4pe3JldHVybiBsZT09PU58fGxlLnByaW9yaXR5PT09Ti5wcmlvcml0eT8wOmxlLnByaW9yaXR5PT09dm9pZCAwPzE6Ti5wcmlvcml0eT09PXZvaWQgMD8tMTplLmNvbXBhcmVWYWx1ZXMobGUucHJpb3JpdHksTi5wcmlvcml0eSl9ZS5jb21wYXJlRW1pdEhlbHBlcnM9QztmdW5jdGlvbiB3KGxlKXtmb3IodmFyIE49W10scD0xO3A8YXJndW1lbnRzLmxlbmd0aDtwKyspTltwLTFdPWFyZ3VtZW50c1twXTtyZXR1cm4gZnVuY3Rpb24obSl7Zm9yKHZhciBHPVwiXCIsb2U9MDtvZTxOLmxlbmd0aDtvZSsrKUcrPWxlW29lXSxHKz1tKE5bb2VdKTtyZXR1cm4gRys9bGVbbGUubGVuZ3RoLTFdLEd9fWUuaGVscGVyU3RyaW5nPXcsZS5kZWNvcmF0ZUhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6ZGVjb3JhdGVcIixpbXBvcnROYW1lOlwiX19kZWNvcmF0ZVwiLHNjb3BlZDohMSxwcmlvcml0eToyLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fZGVjb3JhdGUgPSAodGhpcyAmJiB0aGlzLl9fZGVjb3JhdGUpIHx8IGZ1bmN0aW9uIChkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICAgICAgICAgICAgICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgICAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICAgICAgICAgICAgICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG4gICAgICAgICAgICB9O2B9LGUubWV0YWRhdGFIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0Om1ldGFkYXRhXCIsaW1wb3J0TmFtZTpcIl9fbWV0YWRhdGFcIixzY29wZWQ6ITEscHJpb3JpdHk6Myx0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbiAgICAgICAgICAgIH07YH0sZS5wYXJhbUhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6cGFyYW1cIixpbXBvcnROYW1lOlwiX19wYXJhbVwiLHNjb3BlZDohMSxwcmlvcml0eTo0LHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fcGFyYW0gPSAodGhpcyAmJiB0aGlzLl9fcGFyYW0pIHx8IGZ1bmN0aW9uIChwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cbiAgICAgICAgICAgIH07YH0sZS5hc3NpZ25IZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0OmFzc2lnblwiLGltcG9ydE5hbWU6XCJfX2Fzc2lnblwiLHNjb3BlZDohMSxwcmlvcml0eToxLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfTtgfSxlLmF3YWl0SGVscGVyPXtuYW1lOlwidHlwZXNjcmlwdDphd2FpdFwiLGltcG9ydE5hbWU6XCJfX2F3YWl0XCIsc2NvcGVkOiExLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fYXdhaXQgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXQpIHx8IGZ1bmN0aW9uICh2KSB7IHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpOyB9YH0sZS5hc3luY0dlbmVyYXRvckhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6YXN5bmNHZW5lcmF0b3JcIixpbXBvcnROYW1lOlwiX19hc3luY0dlbmVyYXRvclwiLHNjb3BlZDohMSxkZXBlbmRlbmNpZXM6W2UuYXdhaXRIZWxwZXJdLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fYXN5bmNHZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fYXN5bmNHZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgICAgICAgICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbiAgICAgICAgICAgIH07YH0sZS5hc3luY0RlbGVnYXRvcj17bmFtZTpcInR5cGVzY3JpcHQ6YXN5bmNEZWxlZ2F0b3JcIixpbXBvcnROYW1lOlwiX19hc3luY0RlbGVnYXRvclwiLHNjb3BlZDohMSxkZXBlbmRlbmNpZXM6W2UuYXdhaXRIZWxwZXJdLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fYXN5bmNEZWxlZ2F0b3IgPSAodGhpcyAmJiB0aGlzLl9fYXN5bmNEZWxlZ2F0b3IpIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICAgICAgdmFyIGksIHA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XG4gICAgICAgICAgICB9O2B9LGUuYXN5bmNWYWx1ZXM9e25hbWU6XCJ0eXBlc2NyaXB0OmFzeW5jVmFsdWVzXCIsaW1wb3J0TmFtZTpcIl9fYXN5bmNWYWx1ZXNcIixzY29wZWQ6ITEsdGV4dDpgXG4gICAgICAgICAgICB2YXIgX19hc3luY1ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX19hc3luY1ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgICAgICAgICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG4gICAgICAgICAgICB9O2B9LGUucmVzdEhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6cmVzdFwiLGltcG9ydE5hbWU6XCJfX3Jlc3RcIixzY29wZWQ6ITEsdGV4dDpgXG4gICAgICAgICAgICB2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHQgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgICAgICAgICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgICAgIH07YH0sZS5hd2FpdGVySGVscGVyPXtuYW1lOlwidHlwZXNjcmlwdDphd2FpdGVyXCIsaW1wb3J0TmFtZTpcIl9fYXdhaXRlclwiLHNjb3BlZDohMSxwcmlvcml0eTo1LHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07YH0sZS5leHRlbmRzSGVscGVyPXtuYW1lOlwidHlwZXNjcmlwdDpleHRlbmRzXCIsaW1wb3J0TmFtZTpcIl9fZXh0ZW5kc1wiLHNjb3BlZDohMSxwcmlvcml0eTowLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgICAgICAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSgpO2B9LGUudGVtcGxhdGVPYmplY3RIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0Om1ha2VUZW1wbGF0ZU9iamVjdFwiLGltcG9ydE5hbWU6XCJfX21ha2VUZW1wbGF0ZU9iamVjdFwiLHNjb3BlZDohMSxwcmlvcml0eTowLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gKHRoaXMgJiYgdGhpcy5fX21ha2VUZW1wbGF0ZU9iamVjdCkgfHwgZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY29va2VkO1xuICAgICAgICAgICAgfTtgfSxlLnJlYWRIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0OnJlYWRcIixpbXBvcnROYW1lOlwiX19yZWFkXCIsc2NvcGVkOiExLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgICAgICAgICAgICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICAgICAgICAgICAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgICAgICAgICAgICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYXI7XG4gICAgICAgICAgICB9O2B9LGUuc3ByZWFkQXJyYXlIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0OnNwcmVhZEFycmF5XCIsaW1wb3J0TmFtZTpcIl9fc3ByZWFkQXJyYXlcIixzY29wZWQ6ITEsdGV4dDpgXG4gICAgICAgICAgICB2YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbiAgICAgICAgICAgIH07YH0sZS52YWx1ZXNIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0OnZhbHVlc1wiLGltcG9ydE5hbWU6XCJfX3ZhbHVlc1wiLHNjb3BlZDohMSx0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgICAgICAgICAgICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgICAgICAgfTtgfSxlLmdlbmVyYXRvckhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6Z2VuZXJhdG9yXCIsaW1wb3J0TmFtZTpcIl9fZ2VuZXJhdG9yXCIsc2NvcGVkOiExLHByaW9yaXR5OjYsdGV4dDpgXG4gICAgICAgICAgICB2YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgICAgICAgICAgICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtgfSxlLmNyZWF0ZUJpbmRpbmdIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0OmNvbW1vbmpzY3JlYXRlYmluZGluZ1wiLGltcG9ydE5hbWU6XCJfX2NyZWF0ZUJpbmRpbmdcIixzY29wZWQ6ITEscHJpb3JpdHk6MSx0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICAgICAgICAgICAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgICAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbiAgICAgICAgICAgIH0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICAgICAgICAgICAgICBvW2syXSA9IG1ba107XG4gICAgICAgICAgICB9KSk7YH0sZS5zZXRNb2R1bGVEZWZhdWx0SGVscGVyPXtuYW1lOlwidHlwZXNjcmlwdDpjb21tb25qc2NyZWF0ZXZhbHVlXCIsaW1wb3J0TmFtZTpcIl9fc2V0TW9kdWxlRGVmYXVsdFwiLHNjb3BlZDohMSxwcmlvcml0eToxLHRleHQ6YFxuICAgICAgICAgICAgdmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19zZXRNb2R1bGVEZWZhdWx0KSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xuICAgICAgICAgICAgfSkgOiBmdW5jdGlvbihvLCB2KSB7XG4gICAgICAgICAgICAgICAgb1tcImRlZmF1bHRcIl0gPSB2O1xuICAgICAgICAgICAgfSk7YH0sZS5pbXBvcnRTdGFySGVscGVyPXtuYW1lOlwidHlwZXNjcmlwdDpjb21tb25qc2ltcG9ydHN0YXJcIixpbXBvcnROYW1lOlwiX19pbXBvcnRTdGFyXCIsc2NvcGVkOiExLGRlcGVuZGVuY2llczpbZS5jcmVhdGVCaW5kaW5nSGVscGVyLGUuc2V0TW9kdWxlRGVmYXVsdEhlbHBlcl0scHJpb3JpdHk6Mix0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgICAgICAgICAgICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgICAgICAgICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcbiAgICAgICAgICAgICAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9O2B9LGUuaW1wb3J0RGVmYXVsdEhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6Y29tbW9uanNpbXBvcnRkZWZhdWx0XCIsaW1wb3J0TmFtZTpcIl9faW1wb3J0RGVmYXVsdFwiLHNjb3BlZDohMSx0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xuICAgICAgICAgICAgfTtgfSxlLmV4cG9ydFN0YXJIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0OmV4cG9ydC1zdGFyXCIsaW1wb3J0TmFtZTpcIl9fZXhwb3J0U3RhclwiLHNjb3BlZDohMSxkZXBlbmRlbmNpZXM6W2UuY3JlYXRlQmluZGluZ0hlbHBlcl0scHJpb3JpdHk6Mix0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbiAgICAgICAgICAgIH07YH0sZS5jbGFzc1ByaXZhdGVGaWVsZEdldEhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6Y2xhc3NQcml2YXRlRmllbGRHZXRcIixpbXBvcnROYW1lOlwiX19jbGFzc1ByaXZhdGVGaWVsZEdldFwiLHNjb3BlZDohMSx0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0ID0gKHRoaXMgJiYgdGhpcy5fX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KSB8fCBmdW5jdGlvbiAocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XG4gICAgICAgICAgICB9O2B9LGUuY2xhc3NQcml2YXRlRmllbGRTZXRIZWxwZXI9e25hbWU6XCJ0eXBlc2NyaXB0OmNsYXNzUHJpdmF0ZUZpZWxkU2V0XCIsaW1wb3J0TmFtZTpcIl9fY2xhc3NQcml2YXRlRmllbGRTZXRcIixzY29wZWQ6ITEsdGV4dDpgXG4gICAgICAgICAgICB2YXIgX19jbGFzc1ByaXZhdGVGaWVsZFNldCA9ICh0aGlzICYmIHRoaXMuX19jbGFzc1ByaXZhdGVGaWVsZFNldCkgfHwgZnVuY3Rpb24gKHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XG4gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XG4gICAgICAgICAgICB9O2B9LGUuY2xhc3NQcml2YXRlRmllbGRJbkhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6Y2xhc3NQcml2YXRlRmllbGRJblwiLGltcG9ydE5hbWU6XCJfX2NsYXNzUHJpdmF0ZUZpZWxkSW5cIixzY29wZWQ6ITEsdGV4dDpgXG4gICAgICAgICAgICB2YXIgX19jbGFzc1ByaXZhdGVGaWVsZEluID0gKHRoaXMgJiYgdGhpcy5fX2NsYXNzUHJpdmF0ZUZpZWxkSW4pIHx8IGZ1bmN0aW9uKHN0YXRlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG4gICAgICAgICAgICB9O2B9O3ZhciBCO2Z1bmN0aW9uIEUoKXtyZXR1cm4gQnx8KEI9ZS5hcnJheVRvTWFwKFtlLmRlY29yYXRlSGVscGVyLGUubWV0YWRhdGFIZWxwZXIsZS5wYXJhbUhlbHBlcixlLmFzc2lnbkhlbHBlcixlLmF3YWl0SGVscGVyLGUuYXN5bmNHZW5lcmF0b3JIZWxwZXIsZS5hc3luY0RlbGVnYXRvcixlLmFzeW5jVmFsdWVzLGUucmVzdEhlbHBlcixlLmF3YWl0ZXJIZWxwZXIsZS5leHRlbmRzSGVscGVyLGUudGVtcGxhdGVPYmplY3RIZWxwZXIsZS5zcHJlYWRBcnJheUhlbHBlcixlLnZhbHVlc0hlbHBlcixlLnJlYWRIZWxwZXIsZS5nZW5lcmF0b3JIZWxwZXIsZS5pbXBvcnRTdGFySGVscGVyLGUuaW1wb3J0RGVmYXVsdEhlbHBlcixlLmV4cG9ydFN0YXJIZWxwZXIsZS5jbGFzc1ByaXZhdGVGaWVsZEdldEhlbHBlcixlLmNsYXNzUHJpdmF0ZUZpZWxkU2V0SGVscGVyLGUuY2xhc3NQcml2YXRlRmllbGRJbkhlbHBlcixlLmNyZWF0ZUJpbmRpbmdIZWxwZXIsZS5zZXRNb2R1bGVEZWZhdWx0SGVscGVyXSxmdW5jdGlvbihsZSl7cmV0dXJuIGxlLm5hbWV9KSl9ZS5nZXRBbGxVbnNjb3BlZEVtaXRIZWxwZXJzPUUsZS5hc3luY1N1cGVySGVscGVyPXtuYW1lOlwidHlwZXNjcmlwdDphc3luYy1zdXBlclwiLHNjb3BlZDohMCx0ZXh0Oncob2koW2BcbiAgICAgICAgICAgIGNvbnN0IGAsXCIgPSBuYW1lID0+IHN1cGVyW25hbWVdO1wiXSxbYFxuICAgICAgICAgICAgY29uc3QgYCxcIiA9IG5hbWUgPT4gc3VwZXJbbmFtZV07XCJdKSxcIl9zdXBlckluZGV4XCIpfSxlLmFkdmFuY2VkQXN5bmNTdXBlckhlbHBlcj17bmFtZTpcInR5cGVzY3JpcHQ6YWR2YW5jZWQtYXN5bmMtc3VwZXJcIixzY29wZWQ6ITAsdGV4dDp3KG9pKFtgXG4gICAgICAgICAgICBjb25zdCBgLGAgPSAoZnVuY3Rpb24gKGdldGksIHNldGkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT4gY2FjaGVbbmFtZV0gfHwgKGNhY2hlW25hbWVdID0geyBnZXQgdmFsdWUoKSB7IHJldHVybiBnZXRpKG5hbWUpOyB9LCBzZXQgdmFsdWUodikgeyBzZXRpKG5hbWUsIHYpOyB9IH0pO1xuICAgICAgICAgICAgfSkobmFtZSA9PiBzdXBlcltuYW1lXSwgKG5hbWUsIHZhbHVlKSA9PiBzdXBlcltuYW1lXSA9IHZhbHVlKTtgXSxbYFxuICAgICAgICAgICAgY29uc3QgYCxgID0gKGZ1bmN0aW9uIChnZXRpLCBzZXRpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuYW1lID0+IGNhY2hlW25hbWVdIHx8IChjYWNoZVtuYW1lXSA9IHsgZ2V0IHZhbHVlKCkgeyByZXR1cm4gZ2V0aShuYW1lKTsgfSwgc2V0IHZhbHVlKHYpIHsgc2V0aShuYW1lLCB2KTsgfSB9KTtcbiAgICAgICAgICAgIH0pKG5hbWUgPT4gc3VwZXJbbmFtZV0sIChuYW1lLCB2YWx1ZSkgPT4gc3VwZXJbbmFtZV0gPSB2YWx1ZSk7YF0pLFwiX3N1cGVySW5kZXhcIil9O2Z1bmN0aW9uIFEobGUsTil7cmV0dXJuIGUuaXNDYWxsRXhwcmVzc2lvbihsZSkmJmUuaXNJZGVudGlmaWVyKGxlLmV4cHJlc3Npb24pJiYoZS5nZXRFbWl0RmxhZ3MobGUuZXhwcmVzc2lvbikmNDA5NikhPT0wJiZsZS5leHByZXNzaW9uLmVzY2FwZWRUZXh0PT09Tn1lLmlzQ2FsbFRvSGVscGVyPVF9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKGpyKXtyZXR1cm4ganIua2luZD09PTh9ZS5pc051bWVyaWNMaXRlcmFsPWE7ZnVuY3Rpb24gQyhqcil7cmV0dXJuIGpyLmtpbmQ9PT05fWUuaXNCaWdJbnRMaXRlcmFsPUM7ZnVuY3Rpb24gdyhqcil7cmV0dXJuIGpyLmtpbmQ9PT0xMH1lLmlzU3RyaW5nTGl0ZXJhbD13O2Z1bmN0aW9uIEIoanIpe3JldHVybiBqci5raW5kPT09MTF9ZS5pc0pzeFRleHQ9QjtmdW5jdGlvbiBFKGpyKXtyZXR1cm4ganIua2luZD09PTEzfWUuaXNSZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWw9RTtmdW5jdGlvbiBRKGpyKXtyZXR1cm4ganIua2luZD09PTE0fWUuaXNOb1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbD1RO2Z1bmN0aW9uIGxlKGpyKXtyZXR1cm4ganIua2luZD09PTE1fWUuaXNUZW1wbGF0ZUhlYWQ9bGU7ZnVuY3Rpb24gTihqcil7cmV0dXJuIGpyLmtpbmQ9PT0xNn1lLmlzVGVtcGxhdGVNaWRkbGU9TjtmdW5jdGlvbiBwKGpyKXtyZXR1cm4ganIua2luZD09PTE3fWUuaXNUZW1wbGF0ZVRhaWw9cDtmdW5jdGlvbiBtKGpyKXtyZXR1cm4ganIua2luZD09PTI1fWUuaXNEb3REb3REb3RUb2tlbj1tO2Z1bmN0aW9uIEcoanIpe3JldHVybiBqci5raW5kPT09Mjd9ZS5pc0NvbW1hVG9rZW49RztmdW5jdGlvbiBvZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0zOX1lLmlzUGx1c1Rva2VuPW9lO2Z1bmN0aW9uIGYoanIpe3JldHVybiBqci5raW5kPT09NDB9ZS5pc01pbnVzVG9rZW49ZjtmdW5jdGlvbiBUKGpyKXtyZXR1cm4ganIua2luZD09PTQxfWUuaXNBc3Rlcmlza1Rva2VuPVQ7ZnVuY3Rpb24gSyhqcil7cmV0dXJuIGpyLmtpbmQ9PT01M31lLmlzRXhjbGFtYXRpb25Ub2tlbj1LO2Z1bmN0aW9uIGIoanIpe3JldHVybiBqci5raW5kPT09NTd9ZS5pc1F1ZXN0aW9uVG9rZW49YjtmdW5jdGlvbiBzZShqcil7cmV0dXJuIGpyLmtpbmQ9PT01OH1lLmlzQ29sb25Ub2tlbj1zZTtmdW5jdGlvbiBKKGpyKXtyZXR1cm4ganIua2luZD09PTI4fWUuaXNRdWVzdGlvbkRvdFRva2VuPUo7ZnVuY3Rpb24gaWUoanIpe3JldHVybiBqci5raW5kPT09Mzh9ZS5pc0VxdWFsc0dyZWF0ZXJUaGFuVG9rZW49aWU7ZnVuY3Rpb24gUihqcil7cmV0dXJuIGpyLmtpbmQ9PT03OX1lLmlzSWRlbnRpZmllcj1SO2Z1bmN0aW9uIHEoanIpe3JldHVybiBqci5raW5kPT09ODB9ZS5pc1ByaXZhdGVJZGVudGlmaWVyPXE7ZnVuY3Rpb24gTyhqcil7cmV0dXJuIGpyLmtpbmQ9PT05M31lLmlzRXhwb3J0TW9kaWZpZXI9TztmdW5jdGlvbiB2ZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xMzF9ZS5pc0FzeW5jTW9kaWZpZXI9dmU7ZnVuY3Rpb24gZWUoanIpe3JldHVybiBqci5raW5kPT09MTI4fWUuaXNBc3NlcnRzS2V5d29yZD1lZTtmdW5jdGlvbiBoZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xMzJ9ZS5pc0F3YWl0S2V5d29yZD1oZTtmdW5jdGlvbiBGKGpyKXtyZXR1cm4ganIua2luZD09PTE0NX1lLmlzUmVhZG9ubHlLZXl3b3JkPUY7ZnVuY3Rpb24geChqcil7cmV0dXJuIGpyLmtpbmQ9PT0xMjR9ZS5pc1N0YXRpY01vZGlmaWVyPXg7ZnVuY3Rpb24gWChqcil7cmV0dXJuIGpyLmtpbmQ9PT0xMjZ9ZS5pc0Fic3RyYWN0TW9kaWZpZXI9WDtmdW5jdGlvbiAkKGpyKXtyZXR1cm4ganIua2luZD09PTEwNn1lLmlzU3VwZXJLZXl3b3JkPSQ7ZnVuY3Rpb24gQShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xMDB9ZS5pc0ltcG9ydEtleXdvcmQ9QTtmdW5jdGlvbiB5KGpyKXtyZXR1cm4ganIua2luZD09PTE2MX1lLmlzUXVhbGlmaWVkTmFtZT15O2Z1bmN0aW9uIFYoanIpe3JldHVybiBqci5raW5kPT09MTYyfWUuaXNDb21wdXRlZFByb3BlcnR5TmFtZT1WO2Z1bmN0aW9uIEwoanIpe3JldHVybiBqci5raW5kPT09MTYzfWUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb249TDtmdW5jdGlvbiBQKGpyKXtyZXR1cm4ganIua2luZD09PTE2NH1lLmlzUGFyYW1ldGVyPVA7ZnVuY3Rpb24gayhqcil7cmV0dXJuIGpyLmtpbmQ9PT0xNjV9ZS5pc0RlY29yYXRvcj1rO2Z1bmN0aW9uIFkoanIpe3JldHVybiBqci5raW5kPT09MTY2fWUuaXNQcm9wZXJ0eVNpZ25hdHVyZT1ZO2Z1bmN0aW9uIFUoanIpe3JldHVybiBqci5raW5kPT09MTY3fWUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uPVU7ZnVuY3Rpb24gaihqcil7cmV0dXJuIGpyLmtpbmQ9PT0xNjh9ZS5pc01ldGhvZFNpZ25hdHVyZT1qO2Z1bmN0aW9uIEgoanIpe3JldHVybiBqci5raW5kPT09MTY5fWUuaXNNZXRob2REZWNsYXJhdGlvbj1IO2Z1bmN0aW9uIEkoanIpe3JldHVybiBqci5raW5kPT09MTcwfWUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb249STtmdW5jdGlvbiBsKGpyKXtyZXR1cm4ganIua2luZD09PTE3MX1lLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbj1sO2Z1bmN0aW9uIGQoanIpe3JldHVybiBqci5raW5kPT09MTcyfWUuaXNHZXRBY2Nlc3NvckRlY2xhcmF0aW9uPWQ7ZnVuY3Rpb24gRChqcil7cmV0dXJuIGpyLmtpbmQ9PT0xNzN9ZS5pc1NldEFjY2Vzc29yRGVjbGFyYXRpb249RDtmdW5jdGlvbiBmZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xNzR9ZS5pc0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbj1mZTtmdW5jdGlvbiBnKGpyKXtyZXR1cm4ganIua2luZD09PTE3NX1lLmlzQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb249ZztmdW5jdGlvbiBuZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xNzZ9ZS5pc0luZGV4U2lnbmF0dXJlRGVjbGFyYXRpb249bmU7ZnVuY3Rpb24gdWUoanIpe3JldHVybiBqci5raW5kPT09MTc3fWUuaXNUeXBlUHJlZGljYXRlTm9kZT11ZTtmdW5jdGlvbiBXZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xNzh9ZS5pc1R5cGVSZWZlcmVuY2VOb2RlPVdlO2Z1bmN0aW9uIEZlKGpyKXtyZXR1cm4ganIua2luZD09PTE3OX1lLmlzRnVuY3Rpb25UeXBlTm9kZT1GZTtmdW5jdGlvbiBaKGpyKXtyZXR1cm4ganIua2luZD09PTE4MH1lLmlzQ29uc3RydWN0b3JUeXBlTm9kZT1aO2Z1bmN0aW9uIEJlKGpyKXtyZXR1cm4ganIua2luZD09PTE4MX1lLmlzVHlwZVF1ZXJ5Tm9kZT1CZTtmdW5jdGlvbiBnZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xODJ9ZS5pc1R5cGVMaXRlcmFsTm9kZT1nZTtmdW5jdGlvbiBSZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xODN9ZS5pc0FycmF5VHlwZU5vZGU9UmU7ZnVuY3Rpb24gemUoanIpe3JldHVybiBqci5raW5kPT09MTg0fWUuaXNUdXBsZVR5cGVOb2RlPXplO2Z1bmN0aW9uIEVlKGpyKXtyZXR1cm4ganIua2luZD09PTE5N31lLmlzTmFtZWRUdXBsZU1lbWJlcj1FZTtmdW5jdGlvbiBIZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xODV9ZS5pc09wdGlvbmFsVHlwZU5vZGU9SGU7ZnVuY3Rpb24gcnIoanIpe3JldHVybiBqci5raW5kPT09MTg2fWUuaXNSZXN0VHlwZU5vZGU9cnI7ZnVuY3Rpb24gSWUoanIpe3JldHVybiBqci5raW5kPT09MTg3fWUuaXNVbmlvblR5cGVOb2RlPUllO2Z1bmN0aW9uIF9lKGpyKXtyZXR1cm4ganIua2luZD09PTE4OH1lLmlzSW50ZXJzZWN0aW9uVHlwZU5vZGU9X2U7ZnVuY3Rpb24gd2UoanIpe3JldHVybiBqci5raW5kPT09MTg5fWUuaXNDb25kaXRpb25hbFR5cGVOb2RlPXdlO2Z1bmN0aW9uIGRlKGpyKXtyZXR1cm4ganIua2luZD09PTE5MH1lLmlzSW5mZXJUeXBlTm9kZT1kZTtmdW5jdGlvbiB5ZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xOTF9ZS5pc1BhcmVudGhlc2l6ZWRUeXBlTm9kZT15ZTtmdW5jdGlvbiBBZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xOTJ9ZS5pc1RoaXNUeXBlTm9kZT1BZTtmdW5jdGlvbiBlcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0xOTN9ZS5pc1R5cGVPcGVyYXRvck5vZGU9ZXI7ZnVuY3Rpb24gaXIoanIpe3JldHVybiBqci5raW5kPT09MTk0fWUuaXNJbmRleGVkQWNjZXNzVHlwZU5vZGU9aXI7ZnVuY3Rpb24gQ3IoanIpe3JldHVybiBqci5raW5kPT09MTk1fWUuaXNNYXBwZWRUeXBlTm9kZT1DcjtmdW5jdGlvbiBZZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0xOTZ9ZS5pc0xpdGVyYWxUeXBlTm9kZT1ZZTtmdW5jdGlvbiBCcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMDB9ZS5pc0ltcG9ydFR5cGVOb2RlPUJyO2Z1bmN0aW9uIEVyKGpyKXtyZXR1cm4ganIua2luZD09PTE5OX1lLmlzVGVtcGxhdGVMaXRlcmFsVHlwZVNwYW49RXI7ZnVuY3Rpb24gTmUoanIpe3JldHVybiBqci5raW5kPT09MTk4fWUuaXNUZW1wbGF0ZUxpdGVyYWxUeXBlTm9kZT1OZTtmdW5jdGlvbiBuKGpyKXtyZXR1cm4ganIua2luZD09PTIwMX1lLmlzT2JqZWN0QmluZGluZ1BhdHRlcm49bjtmdW5jdGlvbiBscihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMDJ9ZS5pc0FycmF5QmluZGluZ1BhdHRlcm49bHI7ZnVuY3Rpb24gYmUoanIpe3JldHVybiBqci5raW5kPT09MjAzfWUuaXNCaW5kaW5nRWxlbWVudD1iZTtmdW5jdGlvbiBHZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMDR9ZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb249R2U7ZnVuY3Rpb24gdXIoanIpe3JldHVybiBqci5raW5kPT09MjA1fWUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbj11cjtmdW5jdGlvbiB5cihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMDZ9ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj15cjtmdW5jdGlvbiBJcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMDd9ZS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPUlyO2Z1bmN0aW9uIHdyKGpyKXtyZXR1cm4ganIua2luZD09PTIwOH1lLmlzQ2FsbEV4cHJlc3Npb249d3I7ZnVuY3Rpb24gVXIoanIpe3JldHVybiBqci5raW5kPT09MjA5fWUuaXNOZXdFeHByZXNzaW9uPVVyO2Z1bmN0aW9uIGlpKGpyKXtyZXR1cm4ganIua2luZD09PTIxMH1lLmlzVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uPWlpO2Z1bmN0aW9uIG1pKGpyKXtyZXR1cm4ganIua2luZD09PTIxMX1lLmlzVHlwZUFzc2VydGlvbkV4cHJlc3Npb249bWk7ZnVuY3Rpb24gcGUoanIpe3JldHVybiBqci5raW5kPT09MjEyfWUuaXNQYXJlbnRoZXNpemVkRXhwcmVzc2lvbj1wZTtmdW5jdGlvbiBvcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMTN9ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbj1vcjtmdW5jdGlvbiBxcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMTR9ZS5pc0Fycm93RnVuY3Rpb249cXI7ZnVuY3Rpb24gc2koanIpe3JldHVybiBqci5raW5kPT09MjE1fWUuaXNEZWxldGVFeHByZXNzaW9uPXNpO2Z1bmN0aW9uIERpKGpyKXtyZXR1cm4ganIua2luZD09PTIxNn1lLmlzVHlwZU9mRXhwcmVzc2lvbj1EaTtmdW5jdGlvbiB3aShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMTd9ZS5pc1ZvaWRFeHByZXNzaW9uPXdpO2Z1bmN0aW9uIFhpKGpyKXtyZXR1cm4ganIua2luZD09PTIxOH1lLmlzQXdhaXRFeHByZXNzaW9uPVhpO2Z1bmN0aW9uIGV0KGpyKXtyZXR1cm4ganIua2luZD09PTIxOX1lLmlzUHJlZml4VW5hcnlFeHByZXNzaW9uPWV0O2Z1bmN0aW9uIEdpKGpyKXtyZXR1cm4ganIua2luZD09PTIyMH1lLmlzUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbj1HaTtmdW5jdGlvbiBXdChqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMjF9ZS5pc0JpbmFyeUV4cHJlc3Npb249V3Q7ZnVuY3Rpb24gWnQoanIpe3JldHVybiBqci5raW5kPT09MjIyfWUuaXNDb25kaXRpb25hbEV4cHJlc3Npb249WnQ7ZnVuY3Rpb24gX3IoanIpe3JldHVybiBqci5raW5kPT09MjIzfWUuaXNUZW1wbGF0ZUV4cHJlc3Npb249X3I7ZnVuY3Rpb24gcGkoanIpe3JldHVybiBqci5raW5kPT09MjI0fWUuaXNZaWVsZEV4cHJlc3Npb249cGk7ZnVuY3Rpb24gYWUoanIpe3JldHVybiBqci5raW5kPT09MjI1fWUuaXNTcHJlYWRFbGVtZW50PWFlO2Z1bmN0aW9uIFhlKGpyKXtyZXR1cm4ganIua2luZD09PTIyNn1lLmlzQ2xhc3NFeHByZXNzaW9uPVhlO2Z1bmN0aW9uIEpyKGpyKXtyZXR1cm4ganIua2luZD09PTIyN31lLmlzT21pdHRlZEV4cHJlc3Npb249SnI7ZnVuY3Rpb24gdGkoanIpe3JldHVybiBqci5raW5kPT09MjI4fWUuaXNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHM9dGk7ZnVuY3Rpb24gWmUoanIpe3JldHVybiBqci5raW5kPT09MjI5fWUuaXNBc0V4cHJlc3Npb249WmU7ZnVuY3Rpb24gU3IoanIpe3JldHVybiBqci5raW5kPT09MjMwfWUuaXNOb25OdWxsRXhwcmVzc2lvbj1TcjtmdW5jdGlvbiB6cihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMzF9ZS5pc01ldGFQcm9wZXJ0eT16cjtmdW5jdGlvbiBXcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMzJ9ZS5pc1N5bnRoZXRpY0V4cHJlc3Npb249V3I7ZnVuY3Rpb24gSmUoanIpe3JldHVybiBqci5raW5kPT09MzUwfWUuaXNQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbj1KZTtmdW5jdGlvbiB4ZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0zNTF9ZS5pc0NvbW1hTGlzdEV4cHJlc3Npb249eGU7ZnVuY3Rpb24gdnIoanIpe3JldHVybiBqci5raW5kPT09MjMzfWUuaXNUZW1wbGF0ZVNwYW49dnI7ZnVuY3Rpb24gbXIoanIpe3JldHVybiBqci5raW5kPT09MjM0fWUuaXNTZW1pY29sb25DbGFzc0VsZW1lbnQ9bXI7ZnVuY3Rpb24gQXIoanIpe3JldHVybiBqci5raW5kPT09MjM1fWUuaXNCbG9jaz1BcjtmdW5jdGlvbiBPZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yMzd9ZS5pc1ZhcmlhYmxlU3RhdGVtZW50PU9lO2Z1bmN0aW9uIG5yKGpyKXtyZXR1cm4ganIua2luZD09PTIzNn1lLmlzRW1wdHlTdGF0ZW1lbnQ9bnI7ZnVuY3Rpb24gTXIoanIpe3JldHVybiBqci5raW5kPT09MjM4fWUuaXNFeHByZXNzaW9uU3RhdGVtZW50PU1yO2Z1bmN0aW9uIFBlKGpyKXtyZXR1cm4ganIua2luZD09PTIzOX1lLmlzSWZTdGF0ZW1lbnQ9UGU7ZnVuY3Rpb24gVWUoanIpe3JldHVybiBqci5raW5kPT09MjQwfWUuaXNEb1N0YXRlbWVudD1VZTtmdW5jdGlvbiBmcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yNDF9ZS5pc1doaWxlU3RhdGVtZW50PWZyO2Z1bmN0aW9uIERlKGpyKXtyZXR1cm4ganIua2luZD09PTI0Mn1lLmlzRm9yU3RhdGVtZW50PURlO2Z1bmN0aW9uIGdyKGpyKXtyZXR1cm4ganIua2luZD09PTI0M31lLmlzRm9ySW5TdGF0ZW1lbnQ9Z3I7ZnVuY3Rpb24gVnIoanIpe3JldHVybiBqci5raW5kPT09MjQ0fWUuaXNGb3JPZlN0YXRlbWVudD1WcjtmdW5jdGlvbiBUcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yNDV9ZS5pc0NvbnRpbnVlU3RhdGVtZW50PVRyO2Z1bmN0aW9uIHZpKGpyKXtyZXR1cm4ganIua2luZD09PTI0Nn1lLmlzQnJlYWtTdGF0ZW1lbnQ9dmk7ZnVuY3Rpb24gVWkoanIpe3JldHVybiBqci5raW5kPT09MjQ3fWUuaXNSZXR1cm5TdGF0ZW1lbnQ9VWk7ZnVuY3Rpb24gWWkoanIpe3JldHVybiBqci5raW5kPT09MjQ4fWUuaXNXaXRoU3RhdGVtZW50PVlpO2Z1bmN0aW9uIFdpKGpyKXtyZXR1cm4ganIua2luZD09PTI0OX1lLmlzU3dpdGNoU3RhdGVtZW50PVdpO2Z1bmN0aW9uIGN0KGpyKXtyZXR1cm4ganIua2luZD09PTI1MH1lLmlzTGFiZWxlZFN0YXRlbWVudD1jdDtmdW5jdGlvbiBMaShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yNTF9ZS5pc1Rocm93U3RhdGVtZW50PUxpO2Z1bmN0aW9uIG50KGpyKXtyZXR1cm4ganIua2luZD09PTI1Mn1lLmlzVHJ5U3RhdGVtZW50PW50O2Z1bmN0aW9uIE10KGpyKXtyZXR1cm4ganIua2luZD09PTI1M31lLmlzRGVidWdnZXJTdGF0ZW1lbnQ9TXQ7ZnVuY3Rpb24geHQoanIpe3JldHVybiBqci5raW5kPT09MjU0fWUuaXNWYXJpYWJsZURlY2xhcmF0aW9uPXh0O2Z1bmN0aW9uIHV0KGpyKXtyZXR1cm4ganIua2luZD09PTI1NX1lLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q9dXQ7ZnVuY3Rpb24gRHQoanIpe3JldHVybiBqci5raW5kPT09MjU2fWUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uPUR0O2Z1bmN0aW9uIFJ0KGpyKXtyZXR1cm4ganIua2luZD09PTI1N31lLmlzQ2xhc3NEZWNsYXJhdGlvbj1SdDtmdW5jdGlvbiBJaShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yNTh9ZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uPUlpO2Z1bmN0aW9uIEtpKGpyKXtyZXR1cm4ganIua2luZD09PTI1OX1lLmlzVHlwZUFsaWFzRGVjbGFyYXRpb249S2k7ZnVuY3Rpb24gRmkoanIpe3JldHVybiBqci5raW5kPT09MjYwfWUuaXNFbnVtRGVjbGFyYXRpb249Rmk7ZnVuY3Rpb24gdWkoanIpe3JldHVybiBqci5raW5kPT09MjYxfWUuaXNNb2R1bGVEZWNsYXJhdGlvbj11aTtmdW5jdGlvbiBCdChqcil7cmV0dXJuIGpyLmtpbmQ9PT0yNjJ9ZS5pc01vZHVsZUJsb2NrPUJ0O2Z1bmN0aW9uIHd0KGpyKXtyZXR1cm4ganIua2luZD09PTI2M31lLmlzQ2FzZUJsb2NrPXd0O2Z1bmN0aW9uIG5hKGpyKXtyZXR1cm4ganIua2luZD09PTI2NH1lLmlzTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb249bmE7ZnVuY3Rpb24gQWkoanIpe3JldHVybiBqci5raW5kPT09MjY1fWUuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbj1BaTtmdW5jdGlvbiBPaShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yNjZ9ZS5pc0ltcG9ydERlY2xhcmF0aW9uPU9pO2Z1bmN0aW9uIGppKGpyKXtyZXR1cm4ganIua2luZD09PTI2N31lLmlzSW1wb3J0Q2xhdXNlPWppO2Z1bmN0aW9uIFZpKGpyKXtyZXR1cm4ganIua2luZD09PTI5M31lLmlzQXNzZXJ0Q2xhdXNlPVZpO2Z1bmN0aW9uIGF0KGpyKXtyZXR1cm4ganIua2luZD09PTI5NH1lLmlzQXNzZXJ0RW50cnk9YXQ7ZnVuY3Rpb24gQXQoanIpe3JldHVybiBqci5raW5kPT09MjY4fWUuaXNOYW1lc3BhY2VJbXBvcnQ9QXQ7ZnVuY3Rpb24gYmEoanIpe3JldHVybiBqci5raW5kPT09Mjc0fWUuaXNOYW1lc3BhY2VFeHBvcnQ9YmE7ZnVuY3Rpb24gJGEoanIpe3JldHVybiBqci5raW5kPT09MjY5fWUuaXNOYW1lZEltcG9ydHM9JGE7ZnVuY3Rpb24gUWEoanIpe3JldHVybiBqci5raW5kPT09MjcwfWUuaXNJbXBvcnRTcGVjaWZpZXI9UWE7ZnVuY3Rpb24gYWkoanIpe3JldHVybiBqci5raW5kPT09MjcxfWUuaXNFeHBvcnRBc3NpZ25tZW50PWFpO2Z1bmN0aW9uIERuKGpyKXtyZXR1cm4ganIua2luZD09PTI3Mn1lLmlzRXhwb3J0RGVjbGFyYXRpb249RG47ZnVuY3Rpb24ga2EoanIpe3JldHVybiBqci5raW5kPT09MjczfWUuaXNOYW1lZEV4cG9ydHM9a2E7ZnVuY3Rpb24gQmEoanIpe3JldHVybiBqci5raW5kPT09Mjc1fWUuaXNFeHBvcnRTcGVjaWZpZXI9QmE7ZnVuY3Rpb24gcG4oanIpe3JldHVybiBqci5raW5kPT09Mjc2fWUuaXNNaXNzaW5nRGVjbGFyYXRpb249cG47ZnVuY3Rpb24gQ24oanIpe3JldHVybiBqci5raW5kPT09MzQ5fWUuaXNOb3RFbWl0dGVkU3RhdGVtZW50PUNuO2Z1bmN0aW9uIEJpKGpyKXtyZXR1cm4ganIua2luZD09PTM1NH1lLmlzU3ludGhldGljUmVmZXJlbmNlPUJpO2Z1bmN0aW9uIGtuKGpyKXtyZXR1cm4ganIua2luZD09PTM1Mn1lLmlzTWVyZ2VEZWNsYXJhdGlvbk1hcmtlcj1rbjtmdW5jdGlvbiB4bihqcil7cmV0dXJuIGpyLmtpbmQ9PT0zNTN9ZS5pc0VuZE9mRGVjbGFyYXRpb25NYXJrZXI9eG47ZnVuY3Rpb24gS24oanIpe3JldHVybiBqci5raW5kPT09Mjc3fWUuaXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZT1LbjtmdW5jdGlvbiBQbihqcil7cmV0dXJuIGpyLmtpbmQ9PT0yNzh9ZS5pc0pzeEVsZW1lbnQ9UG47ZnVuY3Rpb24gZW8oanIpe3JldHVybiBqci5raW5kPT09Mjc5fWUuaXNKc3hTZWxmQ2xvc2luZ0VsZW1lbnQ9ZW87ZnVuY3Rpb24gUm4oanIpe3JldHVybiBqci5raW5kPT09MjgwfWUuaXNKc3hPcGVuaW5nRWxlbWVudD1SbjtmdW5jdGlvbiBEYShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yODF9ZS5pc0pzeENsb3NpbmdFbGVtZW50PURhO2Z1bmN0aW9uIGJvKGpyKXtyZXR1cm4ganIua2luZD09PTI4Mn1lLmlzSnN4RnJhZ21lbnQ9Ym87ZnVuY3Rpb24gUm8oanIpe3JldHVybiBqci5raW5kPT09MjgzfWUuaXNKc3hPcGVuaW5nRnJhZ21lbnQ9Um87ZnVuY3Rpb24gRW4oanIpe3JldHVybiBqci5raW5kPT09Mjg0fWUuaXNKc3hDbG9zaW5nRnJhZ21lbnQ9RW47ZnVuY3Rpb24gV24oanIpe3JldHVybiBqci5raW5kPT09Mjg1fWUuaXNKc3hBdHRyaWJ1dGU9V247ZnVuY3Rpb24gdG8oanIpe3JldHVybiBqci5raW5kPT09Mjg2fWUuaXNKc3hBdHRyaWJ1dGVzPXRvO2Z1bmN0aW9uIENvKGpyKXtyZXR1cm4ganIua2luZD09PTI4N31lLmlzSnN4U3ByZWFkQXR0cmlidXRlPUNvO2Z1bmN0aW9uIEtvKGpyKXtyZXR1cm4ganIua2luZD09PTI4OH1lLmlzSnN4RXhwcmVzc2lvbj1LbztmdW5jdGlvbiBPbyhqcil7cmV0dXJuIGpyLmtpbmQ9PT0yODl9ZS5pc0Nhc2VDbGF1c2U9T287ZnVuY3Rpb24gbm8oanIpe3JldHVybiBqci5raW5kPT09MjkwfWUuaXNEZWZhdWx0Q2xhdXNlPW5vO2Z1bmN0aW9uICRvKGpyKXtyZXR1cm4ganIua2luZD09PTI5MX1lLmlzSGVyaXRhZ2VDbGF1c2U9JG87ZnVuY3Rpb24gUHIoanIpe3JldHVybiBqci5raW5kPT09MjkyfWUuaXNDYXRjaENsYXVzZT1QcjtmdW5jdGlvbiB4aShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yOTZ9ZS5pc1Byb3BlcnR5QXNzaWdubWVudD14aTtmdW5jdGlvbiBTdChqcil7cmV0dXJuIGpyLmtpbmQ9PT0yOTd9ZS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudD1TdDtmdW5jdGlvbiBwYShqcil7cmV0dXJuIGpyLmtpbmQ9PT0yOTh9ZS5pc1NwcmVhZEFzc2lnbm1lbnQ9cGE7ZnVuY3Rpb24gZG4oanIpe3JldHVybiBqci5raW5kPT09Mjk5fWUuaXNFbnVtTWVtYmVyPWRuO2Z1bmN0aW9uIEpuKGpyKXtyZXR1cm4ganIua2luZD09PTMwMX1lLmlzVW5wYXJzZWRQcmVwZW5kPUpuO2Z1bmN0aW9uIFFlKGpyKXtyZXR1cm4ganIua2luZD09PTMwNX1lLmlzU291cmNlRmlsZT1RZTtmdW5jdGlvbiBHcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0zMDZ9ZS5pc0J1bmRsZT1HcjtmdW5jdGlvbiBTKGpyKXtyZXR1cm4ganIua2luZD09PTMwN31lLmlzVW5wYXJzZWRTb3VyY2U9UztmdW5jdGlvbiBDZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0zMDl9ZS5pc0pTRG9jVHlwZUV4cHJlc3Npb249Q2U7ZnVuY3Rpb24gcWUoanIpe3JldHVybiBqci5raW5kPT09MzEwfWUuaXNKU0RvY05hbWVSZWZlcmVuY2U9cWU7ZnVuY3Rpb24gYnIoanIpe3JldHVybiBqci5raW5kPT09MzExfWUuaXNKU0RvY01lbWJlck5hbWU9YnI7ZnVuY3Rpb24gWnIoanIpe3JldHVybiBqci5raW5kPT09MzI0fWUuaXNKU0RvY0xpbms9WnI7ZnVuY3Rpb24gU2koanIpe3JldHVybiBqci5raW5kPT09MzI1fWUuaXNKU0RvY0xpbmtDb2RlPVNpO2Z1bmN0aW9uIFBpKGpyKXtyZXR1cm4ganIua2luZD09PTMyNn1lLmlzSlNEb2NMaW5rUGxhaW49UGk7ZnVuY3Rpb24gUWkoanIpe3JldHVybiBqci5raW5kPT09MzEyfWUuaXNKU0RvY0FsbFR5cGU9UWk7ZnVuY3Rpb24gQ3QoanIpe3JldHVybiBqci5raW5kPT09MzEzfWUuaXNKU0RvY1Vua25vd25UeXBlPUN0O2Z1bmN0aW9uIHNhKGpyKXtyZXR1cm4ganIua2luZD09PTMxNH1lLmlzSlNEb2NOdWxsYWJsZVR5cGU9c2E7ZnVuY3Rpb24gZW4oanIpe3JldHVybiBqci5raW5kPT09MzE1fWUuaXNKU0RvY05vbk51bGxhYmxlVHlwZT1lbjtmdW5jdGlvbiBXYShqcil7cmV0dXJuIGpyLmtpbmQ9PT0zMTZ9ZS5pc0pTRG9jT3B0aW9uYWxUeXBlPVdhO2Z1bmN0aW9uIHFuKGpyKXtyZXR1cm4ganIua2luZD09PTMxN31lLmlzSlNEb2NGdW5jdGlvblR5cGU9cW47ZnVuY3Rpb24gbW8oanIpe3JldHVybiBqci5raW5kPT09MzE4fWUuaXNKU0RvY1ZhcmlhZGljVHlwZT1tbztmdW5jdGlvbiBTbyhqcil7cmV0dXJuIGpyLmtpbmQ9PT0zMTl9ZS5pc0pTRG9jTmFtZXBhdGhUeXBlPVNvO2Z1bmN0aW9uIEdvKGpyKXtyZXR1cm4ganIua2luZD09PTMyMH1lLmlzSlNEb2M9R287ZnVuY3Rpb24geXMoanIpe3JldHVybiBqci5raW5kPT09MzIyfWUuaXNKU0RvY1R5cGVMaXRlcmFsPXlzO2Z1bmN0aW9uIFBjKGpyKXtyZXR1cm4ganIua2luZD09PTMyM31lLmlzSlNEb2NTaWduYXR1cmU9UGM7ZnVuY3Rpb24gVmMoanIpe3JldHVybiBqci5raW5kPT09MzI4fWUuaXNKU0RvY0F1Z21lbnRzVGFnPVZjO2Z1bmN0aW9uIEtjKGpyKXtyZXR1cm4ganIua2luZD09PTMzMH1lLmlzSlNEb2NBdXRob3JUYWc9S2M7ZnVuY3Rpb24gWHMoanIpe3JldHVybiBqci5raW5kPT09MzMyfWUuaXNKU0RvY0NsYXNzVGFnPVhzO2Z1bmN0aW9uIHBjKGpyKXtyZXR1cm4ganIua2luZD09PTMzOH1lLmlzSlNEb2NDYWxsYmFja1RhZz1wYztmdW5jdGlvbiBocyhqcil7cmV0dXJuIGpyLmtpbmQ9PT0zMzN9ZS5pc0pTRG9jUHVibGljVGFnPWhzO2Z1bmN0aW9uIHRjKGpyKXtyZXR1cm4ganIua2luZD09PTMzNH1lLmlzSlNEb2NQcml2YXRlVGFnPXRjO2Z1bmN0aW9uIHBzKGpyKXtyZXR1cm4ganIua2luZD09PTMzNX1lLmlzSlNEb2NQcm90ZWN0ZWRUYWc9cHM7ZnVuY3Rpb24gUXMoanIpe3JldHVybiBqci5raW5kPT09MzM2fWUuaXNKU0RvY1JlYWRvbmx5VGFnPVFzO2Z1bmN0aW9uIGpzKGpyKXtyZXR1cm4ganIua2luZD09PTMzN31lLmlzSlNEb2NPdmVycmlkZVRhZz1qcztmdW5jdGlvbiBkcyhqcil7cmV0dXJuIGpyLmtpbmQ9PT0zMzF9ZS5pc0pTRG9jRGVwcmVjYXRlZFRhZz1kcztmdW5jdGlvbiBKaShqcil7cmV0dXJuIGpyLmtpbmQ9PT0zNDZ9ZS5pc0pTRG9jU2VlVGFnPUppO2Z1bmN0aW9uIGNlKGpyKXtyZXR1cm4ganIua2luZD09PTMzOX1lLmlzSlNEb2NFbnVtVGFnPWNlO2Z1bmN0aW9uIFJyKGpyKXtyZXR1cm4ganIua2luZD09PTM0MH1lLmlzSlNEb2NQYXJhbWV0ZXJUYWc9UnI7ZnVuY3Rpb24geWkoanIpe3JldHVybiBqci5raW5kPT09MzQxfWUuaXNKU0RvY1JldHVyblRhZz15aTtmdW5jdGlvbiBxaShqcil7cmV0dXJuIGpyLmtpbmQ9PT0zNDJ9ZS5pc0pTRG9jVGhpc1RhZz1xaTtmdW5jdGlvbiBqZShqcil7cmV0dXJuIGpyLmtpbmQ9PT0zNDN9ZS5pc0pTRG9jVHlwZVRhZz1qZTtmdW5jdGlvbiBIcihqcil7cmV0dXJuIGpyLmtpbmQ9PT0zNDR9ZS5pc0pTRG9jVGVtcGxhdGVUYWc9SHI7ZnVuY3Rpb24gcHQoanIpe3JldHVybiBqci5raW5kPT09MzQ1fWUuaXNKU0RvY1R5cGVkZWZUYWc9cHQ7ZnVuY3Rpb24gUHQoanIpe3JldHVybiBqci5raW5kPT09MzI3fWUuaXNKU0RvY1Vua25vd25UYWc9UHQ7ZnVuY3Rpb24gZ2EoanIpe3JldHVybiBqci5raW5kPT09MzQ3fWUuaXNKU0RvY1Byb3BlcnR5VGFnPWdhO2Z1bmN0aW9uIHVhKGpyKXtyZXR1cm4ganIua2luZD09PTMyOX1lLmlzSlNEb2NJbXBsZW1lbnRzVGFnPXVhO2Z1bmN0aW9uIFhuKGpyKXtyZXR1cm4ganIua2luZD09PTM0OH1lLmlzU3ludGF4TGlzdD1Ybn0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEobHIpe3JldHVybiBsci5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCExLGxyLmNyZWF0ZU5hbWVkRXhwb3J0cyhbXSksdm9pZCAwKX1lLmNyZWF0ZUVtcHR5RXhwb3J0cz1hO2Z1bmN0aW9uIEMobHIsYmUsR2UsdXIpe2lmKGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShHZSkpcmV0dXJuIGUuc2V0VGV4dFJhbmdlKGxyLmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGJlLEdlLmV4cHJlc3Npb24pLHVyKTt2YXIgeXI9ZS5zZXRUZXh0UmFuZ2UoZS5pc01lbWJlck5hbWUoR2UpP2xyLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihiZSxHZSk6bHIuY3JlYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oYmUsR2UpLEdlKTtyZXR1cm4gZS5nZXRPckNyZWF0ZUVtaXROb2RlKHlyKS5mbGFnc3w9NjQseXJ9ZS5jcmVhdGVNZW1iZXJBY2Nlc3NGb3JQcm9wZXJ0eU5hbWU9QztmdW5jdGlvbiB3KGxyLGJlKXt2YXIgR2U9ZS5wYXJzZU5vZGVGYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIobHJ8fFwiUmVhY3RcIik7cmV0dXJuIGUuc2V0UGFyZW50KEdlLGUuZ2V0UGFyc2VUcmVlTm9kZShiZSkpLEdlfWZ1bmN0aW9uIEIobHIsYmUsR2Upe2lmKGUuaXNRdWFsaWZpZWROYW1lKGJlKSl7dmFyIHVyPUIobHIsYmUubGVmdCxHZSkseXI9bHIuY3JlYXRlSWRlbnRpZmllcihlLmlkVGV4dChiZS5yaWdodCkpO3JldHVybiB5ci5lc2NhcGVkVGV4dD1iZS5yaWdodC5lc2NhcGVkVGV4dCxsci5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24odXIseXIpfWVsc2UgcmV0dXJuIHcoZS5pZFRleHQoYmUpLEdlKX1mdW5jdGlvbiBFKGxyLGJlLEdlLHVyKXtyZXR1cm4gYmU/QihscixiZSx1cik6bHIuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHcoR2UsdXIpLFwiY3JlYXRlRWxlbWVudFwiKX1lLmNyZWF0ZUpzeEZhY3RvcnlFeHByZXNzaW9uPUU7ZnVuY3Rpb24gUShscixiZSxHZSx1cil7cmV0dXJuIGJlP0IobHIsYmUsdXIpOmxyLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih3KEdlLHVyKSxcIkZyYWdtZW50XCIpfWZ1bmN0aW9uIGxlKGxyLGJlLEdlLHVyLHlyLElyKXt2YXIgd3I9W0dlXTtpZih1ciYmd3IucHVzaCh1cikseXImJnlyLmxlbmd0aD4wKWlmKHVyfHx3ci5wdXNoKGxyLmNyZWF0ZU51bGwoKSkseXIubGVuZ3RoPjEpZm9yKHZhciBVcj0wLGlpPXlyO1VyPGlpLmxlbmd0aDtVcisrKXt2YXIgbWk9aWlbVXJdO3kobWkpLHdyLnB1c2gobWkpfWVsc2Ugd3IucHVzaCh5clswXSk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKGxyLmNyZWF0ZUNhbGxFeHByZXNzaW9uKGJlLHZvaWQgMCx3ciksSXIpfWUuY3JlYXRlRXhwcmVzc2lvbkZvckpzeEVsZW1lbnQ9bGU7ZnVuY3Rpb24gTihscixiZSxHZSx1cix5cixJcix3cil7dmFyIFVyPVEobHIsR2UsdXIsSXIpLGlpPVtVcixsci5jcmVhdGVOdWxsKCldO2lmKHlyJiZ5ci5sZW5ndGg+MClpZih5ci5sZW5ndGg+MSlmb3IodmFyIG1pPTAscGU9eXI7bWk8cGUubGVuZ3RoO21pKyspe3ZhciBvcj1wZVttaV07eShvciksaWkucHVzaChvcil9ZWxzZSBpaS5wdXNoKHlyWzBdKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRShscixiZSx1cixJciksdm9pZCAwLGlpKSx3cil9ZS5jcmVhdGVFeHByZXNzaW9uRm9ySnN4RnJhZ21lbnQ9TjtmdW5jdGlvbiBwKGxyLGJlLEdlKXtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoYmUpKXt2YXIgdXI9ZS5maXJzdChiZS5kZWNsYXJhdGlvbnMpLHlyPWxyLnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb24odXIsdXIubmFtZSx2b2lkIDAsdm9pZCAwLEdlKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLGxyLnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGJlLFt5cl0pKSxiZSl9ZWxzZXt2YXIgSXI9ZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlQXNzaWdubWVudChiZSxHZSksYmUpO3JldHVybiBlLnNldFRleHRSYW5nZShsci5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KElyKSxiZSl9fWUuY3JlYXRlRm9yT2ZCaW5kaW5nU3RhdGVtZW50PXA7ZnVuY3Rpb24gbShscixiZSxHZSl7cmV0dXJuIGUuaXNCbG9jayhiZSk/bHIudXBkYXRlQmxvY2soYmUsZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlTm9kZUFycmF5KFZlKFtHZV0sYmUuc3RhdGVtZW50cywhMCkpLGJlLnN0YXRlbWVudHMpKTpsci5jcmVhdGVCbG9jayhsci5jcmVhdGVOb2RlQXJyYXkoW2JlLEdlXSksITApfWUuaW5zZXJ0TGVhZGluZ1N0YXRlbWVudD1tO2Z1bmN0aW9uIEcobHIsYmUpe2lmKGUuaXNRdWFsaWZpZWROYW1lKGJlKSl7dmFyIEdlPUcobHIsYmUubGVmdCksdXI9ZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UobHIuY2xvbmVOb2RlKGJlLnJpZ2h0KSxiZS5yaWdodCksYmUucmlnaHQucGFyZW50KTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEdlLHVyKSxiZSl9ZWxzZSByZXR1cm4gZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UobHIuY2xvbmVOb2RlKGJlKSxiZSksYmUucGFyZW50KX1lLmNyZWF0ZUV4cHJlc3Npb25Gcm9tRW50aXR5TmFtZT1HO2Z1bmN0aW9uIG9lKGxyLGJlKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoYmUpP2xyLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShiZSk6ZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKGJlKT9lLnNldFBhcmVudChlLnNldFRleHRSYW5nZShsci5jbG9uZU5vZGUoYmUuZXhwcmVzc2lvbiksYmUuZXhwcmVzc2lvbiksYmUuZXhwcmVzc2lvbi5wYXJlbnQpOmUuc2V0UGFyZW50KGUuc2V0VGV4dFJhbmdlKGxyLmNsb25lTm9kZShiZSksYmUpLGJlLnBhcmVudCl9ZS5jcmVhdGVFeHByZXNzaW9uRm9yUHJvcGVydHlOYW1lPW9lO2Z1bmN0aW9uIGYobHIsYmUsR2UsdXIseXIpe3ZhciBJcj1lLmdldEFsbEFjY2Vzc29yRGVjbGFyYXRpb25zKGJlLEdlKSx3cj1Jci5maXJzdEFjY2Vzc29yLFVyPUlyLmdldEFjY2Vzc29yLGlpPUlyLnNldEFjY2Vzc29yO2lmKEdlPT09d3IpcmV0dXJuIGUuc2V0VGV4dFJhbmdlKGxyLmNyZWF0ZU9iamVjdERlZmluZVByb3BlcnR5Q2FsbCh1cixvZShscixHZS5uYW1lKSxsci5jcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3Ioe2VudW1lcmFibGU6bHIuY3JlYXRlRmFsc2UoKSxjb25maWd1cmFibGU6ITAsZ2V0OlVyJiZlLnNldFRleHRSYW5nZShlLnNldE9yaWdpbmFsTm9kZShsci5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oVXIubW9kaWZpZXJzLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFVyLnBhcmFtZXRlcnMsdm9pZCAwLFVyLmJvZHkpLFVyKSxVciksc2V0OmlpJiZlLnNldFRleHRSYW5nZShlLnNldE9yaWdpbmFsTm9kZShsci5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oaWkubW9kaWZpZXJzLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGlpLnBhcmFtZXRlcnMsdm9pZCAwLGlpLmJvZHkpLGlpKSxpaSl9LCF5cikpLHdyKX1mdW5jdGlvbiBUKGxyLGJlLEdlKXtyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlQXNzaWdubWVudChDKGxyLEdlLGJlLm5hbWUsYmUubmFtZSksYmUuaW5pdGlhbGl6ZXIpLGJlKSxiZSl9ZnVuY3Rpb24gSyhscixiZSxHZSl7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKGxyLmNyZWF0ZUFzc2lnbm1lbnQoQyhscixHZSxiZS5uYW1lLGJlLm5hbWUpLGxyLmNsb25lTm9kZShiZS5uYW1lKSksYmUpLGJlKX1mdW5jdGlvbiBiKGxyLGJlLEdlKXtyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlQXNzaWdubWVudChDKGxyLEdlLGJlLm5hbWUsYmUubmFtZSksZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UobHIuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGJlLm1vZGlmaWVycyxiZS5hc3Rlcmlza1Rva2VuLHZvaWQgMCx2b2lkIDAsYmUucGFyYW1ldGVycyx2b2lkIDAsYmUuYm9keSksYmUpLGJlKSksYmUpLGJlKX1mdW5jdGlvbiBzZShscixiZSxHZSx1cil7c3dpdGNoKEdlLm5hbWUmJmUuaXNQcml2YXRlSWRlbnRpZmllcihHZS5uYW1lKSYmZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChHZS5uYW1lLFwiUHJpdmF0ZSBpZGVudGlmaWVycyBhcmUgbm90IGFsbG93ZWQgaW4gb2JqZWN0IGxpdGVyYWxzLlwiKSxHZS5raW5kKXtjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gZihscixiZS5wcm9wZXJ0aWVzLEdlLHVyLCEhYmUubXVsdGlMaW5lKTtjYXNlIDI5NjpyZXR1cm4gVChscixHZSx1cik7Y2FzZSAyOTc6cmV0dXJuIEsobHIsR2UsdXIpO2Nhc2UgMTY5OnJldHVybiBiKGxyLEdlLHVyKX19ZS5jcmVhdGVFeHByZXNzaW9uRm9yT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlPXNlO2Z1bmN0aW9uIEoobHIsYmUsR2UsdXIseXIpe3ZhciBJcj1iZS5vcGVyYXRvcjtlLkRlYnVnLmFzc2VydChJcj09PTQ1fHxJcj09PTQ2LFwiRXhwZWN0ZWQgJ25vZGUnIHRvIGJlIGEgcHJlLSBvciBwb3N0LWluY3JlbWVudCBvciBwcmUtIG9yIHBvc3QtZGVjcmVtZW50IGV4cHJlc3Npb25cIik7dmFyIHdyPWxyLmNyZWF0ZVRlbXBWYXJpYWJsZSh1cik7R2U9bHIuY3JlYXRlQXNzaWdubWVudCh3cixHZSksZS5zZXRUZXh0UmFuZ2UoR2UsYmUub3BlcmFuZCk7dmFyIFVyPWUuaXNQcmVmaXhVbmFyeUV4cHJlc3Npb24oYmUpP2xyLmNyZWF0ZVByZWZpeFVuYXJ5RXhwcmVzc2lvbihJcix3cik6bHIuY3JlYXRlUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbih3cixJcik7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKFVyLGJlKSx5ciYmKFVyPWxyLmNyZWF0ZUFzc2lnbm1lbnQoeXIsVXIpLGUuc2V0VGV4dFJhbmdlKFVyLGJlKSksR2U9bHIuY3JlYXRlQ29tbWEoR2UsVXIpLGUuc2V0VGV4dFJhbmdlKEdlLGJlKSxlLmlzUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbihiZSkmJihHZT1sci5jcmVhdGVDb21tYShHZSx3ciksZS5zZXRUZXh0UmFuZ2UoR2UsYmUpKSxHZX1lLmV4cGFuZFByZU9yUG9zdGZpeEluY3JlbWVudE9yRGVjcmVtZW50RXhwcmVzc2lvbj1KO2Z1bmN0aW9uIGllKGxyKXtyZXR1cm4oZS5nZXRFbWl0RmxhZ3MobHIpJjMyNzY4KSE9PTB9ZS5pc0ludGVybmFsTmFtZT1pZTtmdW5jdGlvbiBSKGxyKXtyZXR1cm4oZS5nZXRFbWl0RmxhZ3MobHIpJjE2Mzg0KSE9PTB9ZS5pc0xvY2FsTmFtZT1SO2Z1bmN0aW9uIHEobHIpe3JldHVybihlLmdldEVtaXRGbGFncyhscikmODE5MikhPT0wfWUuaXNFeHBvcnROYW1lPXE7ZnVuY3Rpb24gTyhscil7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsKGxyLmV4cHJlc3Npb24pJiZsci5leHByZXNzaW9uLnRleHQ9PT1cInVzZSBzdHJpY3RcIn1mdW5jdGlvbiB2ZShscil7Zm9yKHZhciBiZT0wLEdlPWxyO2JlPEdlLmxlbmd0aDtiZSsrKXt2YXIgdXI9R2VbYmVdO2lmKGUuaXNQcm9sb2d1ZURpcmVjdGl2ZSh1cikpe2lmKE8odXIpKXJldHVybiB1cn1lbHNlIGJyZWFrfX1lLmZpbmRVc2VTdHJpY3RQcm9sb2d1ZT12ZTtmdW5jdGlvbiBlZShscil7dmFyIGJlPWUuZmlyc3RPclVuZGVmaW5lZChscik7cmV0dXJuIGJlIT09dm9pZCAwJiZlLmlzUHJvbG9ndWVEaXJlY3RpdmUoYmUpJiZPKGJlKX1lLnN0YXJ0c1dpdGhVc2VTdHJpY3Q9ZWU7ZnVuY3Rpb24gaGUobHIpe3JldHVybiBsci5raW5kPT09MjIxJiZsci5vcGVyYXRvclRva2VuLmtpbmQ9PT0yN3x8bHIua2luZD09PTM1MX1lLmlzQ29tbWFTZXF1ZW5jZT1oZTtmdW5jdGlvbiBGKGxyKXtyZXR1cm4gZS5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGxyKSYmZS5pc0luSlNGaWxlKGxyKSYmISFlLmdldEpTRG9jVHlwZVRhZyhscil9ZS5pc0pTRG9jVHlwZUFzc2VydGlvbj1GO2Z1bmN0aW9uIHgobHIpe3ZhciBiZT1lLmdldEpTRG9jVHlwZShscik7cmV0dXJuIGUuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKGJlKSxiZX1lLmdldEpTRG9jVHlwZUFzc2VydGlvblR5cGU9eDtmdW5jdGlvbiBYKGxyLGJlKXtzd2l0Y2goYmU9PT12b2lkIDAmJihiZT0xNSksbHIua2luZCl7Y2FzZSAyMTI6cmV0dXJuIGJlJjE2JiZGKGxyKT8hMTooYmUmMSkhPT0wO2Nhc2UgMjExOmNhc2UgMjI5OnJldHVybihiZSYyKSE9PTA7Y2FzZSAyMzA6cmV0dXJuKGJlJjQpIT09MDtjYXNlIDM1MDpyZXR1cm4oYmUmOCkhPT0wfXJldHVybiExfWUuaXNPdXRlckV4cHJlc3Npb249WDtmdW5jdGlvbiAkKGxyLGJlKXtmb3IoYmU9PT12b2lkIDAmJihiZT0xNSk7WChscixiZSk7KWxyPWxyLmV4cHJlc3Npb247cmV0dXJuIGxyfWUuc2tpcE91dGVyRXhwcmVzc2lvbnM9JDtmdW5jdGlvbiBBKGxyKXtyZXR1cm4gJChsciw2KX1lLnNraXBBc3NlcnRpb25zPUE7ZnVuY3Rpb24geShscil7cmV0dXJuIGUuc2V0U3RhcnRzT25OZXdMaW5lKGxyLCEwKX1lLnN0YXJ0T25OZXdMaW5lPXk7ZnVuY3Rpb24gVihscil7dmFyIGJlPWUuZ2V0T3JpZ2luYWxOb2RlKGxyLGUuaXNTb3VyY2VGaWxlKSxHZT1iZSYmYmUuZW1pdE5vZGU7cmV0dXJuIEdlJiZHZS5leHRlcm5hbEhlbHBlcnNNb2R1bGVOYW1lfWUuZ2V0RXh0ZXJuYWxIZWxwZXJzTW9kdWxlTmFtZT1WO2Z1bmN0aW9uIEwobHIpe3ZhciBiZT1lLmdldE9yaWdpbmFsTm9kZShscixlLmlzU291cmNlRmlsZSksR2U9YmUmJmJlLmVtaXROb2RlO3JldHVybiEhR2UmJighIUdlLmV4dGVybmFsSGVscGVyc01vZHVsZU5hbWV8fCEhR2UuZXh0ZXJuYWxIZWxwZXJzKX1lLmhhc1JlY29yZGVkRXh0ZXJuYWxIZWxwZXJzPUw7ZnVuY3Rpb24gUChscixiZSxHZSx1cix5cixJcix3cil7aWYodXIuaW1wb3J0SGVscGVycyYmZS5pc0VmZmVjdGl2ZUV4dGVybmFsTW9kdWxlKEdlLHVyKSl7dmFyIFVyPXZvaWQgMCxpaT1lLmdldEVtaXRNb2R1bGVLaW5kKHVyKTtpZihpaT49ZS5Nb2R1bGVLaW5kLkVTMjAxNSYmaWk8PWUuTW9kdWxlS2luZC5FU05leHR8fEdlLmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkVTTmV4dCl7dmFyIG1pPWUuZ2V0RW1pdEhlbHBlcnMoR2UpO2lmKG1pKXtmb3IodmFyIHBlPVtdLG9yPTAscXI9bWk7b3I8cXIubGVuZ3RoO29yKyspe3ZhciBzaT1xcltvcl07aWYoIXNpLnNjb3BlZCl7dmFyIERpPXNpLmltcG9ydE5hbWU7RGkmJmUucHVzaElmVW5pcXVlKHBlLERpKX19aWYoZS5zb21lKHBlKSl7cGUuc29ydChlLmNvbXBhcmVTdHJpbmdzQ2FzZVNlbnNpdGl2ZSksVXI9bHIuY3JlYXRlTmFtZWRJbXBvcnRzKGUubWFwKHBlLGZ1bmN0aW9uKFd0KXtyZXR1cm4gZS5pc0ZpbGVMZXZlbFVuaXF1ZU5hbWUoR2UsV3QpP2xyLmNyZWF0ZUltcG9ydFNwZWNpZmllcighMSx2b2lkIDAsbHIuY3JlYXRlSWRlbnRpZmllcihXdCkpOmxyLmNyZWF0ZUltcG9ydFNwZWNpZmllcighMSxsci5jcmVhdGVJZGVudGlmaWVyKFd0KSxiZS5nZXRVbnNjb3BlZEhlbHBlck5hbWUoV3QpKX0pKTt2YXIgd2k9ZS5nZXRPcmlnaW5hbE5vZGUoR2UsZS5pc1NvdXJjZUZpbGUpLFhpPWUuZ2V0T3JDcmVhdGVFbWl0Tm9kZSh3aSk7WGkuZXh0ZXJuYWxIZWxwZXJzPSEwfX19ZWxzZXt2YXIgZXQ9ayhscixHZSx1cix5cixJcnx8d3IpO2V0JiYoVXI9bHIuY3JlYXRlTmFtZXNwYWNlSW1wb3J0KGV0KSl9aWYoVXIpe3ZhciBHaT1sci5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLGxyLmNyZWF0ZUltcG9ydENsYXVzZSghMSx2b2lkIDAsVXIpLGxyLmNyZWF0ZVN0cmluZ0xpdGVyYWwoZS5leHRlcm5hbEhlbHBlcnNNb2R1bGVOYW1lVGV4dCksdm9pZCAwKTtyZXR1cm4gZS5hZGRFbWl0RmxhZ3MoR2ksNjcxMDg4NjQpLEdpfX19ZS5jcmVhdGVFeHRlcm5hbEhlbHBlcnNJbXBvcnREZWNsYXJhdGlvbklmTmVlZGVkPVA7ZnVuY3Rpb24gayhscixiZSxHZSx1cix5cil7aWYoR2UuaW1wb3J0SGVscGVycyYmZS5pc0VmZmVjdGl2ZUV4dGVybmFsTW9kdWxlKGJlLEdlKSl7dmFyIElyPVYoYmUpO2lmKElyKXJldHVybiBJcjt2YXIgd3I9ZS5nZXRFbWl0TW9kdWxlS2luZChHZSksVXI9KHVyfHxlLmdldEVTTW9kdWxlSW50ZXJvcChHZSkmJnlyKSYmd3IhPT1lLk1vZHVsZUtpbmQuU3lzdGVtJiYod3I8ZS5Nb2R1bGVLaW5kLkVTMjAxNXx8YmUuaW1wbGllZE5vZGVGb3JtYXQ9PT1lLk1vZHVsZUtpbmQuQ29tbW9uSlMpO2lmKCFVcil7dmFyIGlpPWUuZ2V0RW1pdEhlbHBlcnMoYmUpO2lmKGlpKWZvcih2YXIgbWk9MCxwZT1paTttaTxwZS5sZW5ndGg7bWkrKyl7dmFyIG9yPXBlW21pXTtpZighb3Iuc2NvcGVkKXtVcj0hMDticmVha319fWlmKFVyKXt2YXIgcXI9ZS5nZXRPcmlnaW5hbE5vZGUoYmUsZS5pc1NvdXJjZUZpbGUpLHNpPWUuZ2V0T3JDcmVhdGVFbWl0Tm9kZShxcik7cmV0dXJuIHNpLmV4dGVybmFsSGVscGVyc01vZHVsZU5hbWV8fChzaS5leHRlcm5hbEhlbHBlcnNNb2R1bGVOYW1lPWxyLmNyZWF0ZVVuaXF1ZU5hbWUoZS5leHRlcm5hbEhlbHBlcnNNb2R1bGVOYW1lVGV4dCkpfX19ZS5nZXRPckNyZWF0ZUV4dGVybmFsSGVscGVyc01vZHVsZU5hbWVJZk5lZWRlZD1rO2Z1bmN0aW9uIFkobHIsYmUsR2Upe3ZhciB1cj1lLmdldE5hbWVzcGFjZURlY2xhcmF0aW9uTm9kZShiZSk7aWYodXImJiFlLmlzRGVmYXVsdEltcG9ydChiZSkmJiFlLmlzRXhwb3J0TmFtZXNwYWNlQXNEZWZhdWx0RGVjbGFyYXRpb24oYmUpKXt2YXIgeXI9dXIubmFtZTtyZXR1cm4gZS5pc0dlbmVyYXRlZElkZW50aWZpZXIoeXIpP3lyOmxyLmNyZWF0ZUlkZW50aWZpZXIoZS5nZXRTb3VyY2VUZXh0T2ZOb2RlRnJvbVNvdXJjZUZpbGUoR2UseXIpfHxlLmlkVGV4dCh5cikpfWlmKGJlLmtpbmQ9PT0yNjYmJmJlLmltcG9ydENsYXVzZXx8YmUua2luZD09PTI3MiYmYmUubW9kdWxlU3BlY2lmaWVyKXJldHVybiBsci5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShiZSl9ZS5nZXRMb2NhbE5hbWVGb3JFeHRlcm5hbEltcG9ydD1ZO2Z1bmN0aW9uIFUobHIsYmUsR2UsdXIseXIsSXIpe3ZhciB3cj1lLmdldEV4dGVybmFsTW9kdWxlTmFtZShiZSk7aWYod3ImJmUuaXNTdHJpbmdMaXRlcmFsKHdyKSlyZXR1cm4gSShiZSx1cixscix5cixJcil8fGoobHIsd3IsR2UpfHxsci5jbG9uZU5vZGUod3IpfWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lTGl0ZXJhbD1VO2Z1bmN0aW9uIGoobHIsYmUsR2Upe3ZhciB1cj1HZS5yZW5hbWVkRGVwZW5kZW5jaWVzJiZHZS5yZW5hbWVkRGVwZW5kZW5jaWVzLmdldChiZS50ZXh0KTtyZXR1cm4gdXI/bHIuY3JlYXRlU3RyaW5nTGl0ZXJhbCh1cik6dm9pZCAwfWZ1bmN0aW9uIEgobHIsYmUsR2UsdXIpe2lmKCEhYmUpe2lmKGJlLm1vZHVsZU5hbWUpcmV0dXJuIGxyLmNyZWF0ZVN0cmluZ0xpdGVyYWwoYmUubW9kdWxlTmFtZSk7aWYoIWJlLmlzRGVjbGFyYXRpb25GaWxlJiZlLm91dEZpbGUodXIpKXJldHVybiBsci5jcmVhdGVTdHJpbmdMaXRlcmFsKGUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lRnJvbVBhdGgoR2UsYmUuZmlsZU5hbWUpKX19ZS50cnlHZXRNb2R1bGVOYW1lRnJvbUZpbGU9SDtmdW5jdGlvbiBJKGxyLGJlLEdlLHVyLHlyKXtyZXR1cm4gSChHZSx1ci5nZXRFeHRlcm5hbE1vZHVsZUZpbGVGcm9tRGVjbGFyYXRpb24obHIpLGJlLHlyKX1mdW5jdGlvbiBsKGxyKXtpZihlLmlzRGVjbGFyYXRpb25CaW5kaW5nRWxlbWVudChscikpcmV0dXJuIGxyLmluaXRpYWxpemVyO2lmKGUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobHIpKXt2YXIgYmU9bHIuaW5pdGlhbGl6ZXI7cmV0dXJuIGUuaXNBc3NpZ25tZW50RXhwcmVzc2lvbihiZSwhMCk/YmUucmlnaHQ6dm9pZCAwfWlmKGUuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQobHIpKXJldHVybiBsci5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXI7aWYoZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKGxyLCEwKSlyZXR1cm4gbHIucmlnaHQ7aWYoZS5pc1NwcmVhZEVsZW1lbnQobHIpKXJldHVybiBsKGxyLmV4cHJlc3Npb24pfWUuZ2V0SW5pdGlhbGl6ZXJPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50PWw7ZnVuY3Rpb24gZChscil7aWYoZS5pc0RlY2xhcmF0aW9uQmluZGluZ0VsZW1lbnQobHIpKXJldHVybiBsci5uYW1lO2lmKGUuaXNPYmplY3RMaXRlcmFsRWxlbWVudExpa2UobHIpKXtzd2l0Y2gobHIua2luZCl7Y2FzZSAyOTY6cmV0dXJuIGQobHIuaW5pdGlhbGl6ZXIpO2Nhc2UgMjk3OnJldHVybiBsci5uYW1lO2Nhc2UgMjk4OnJldHVybiBkKGxyLmV4cHJlc3Npb24pfXJldHVybn1yZXR1cm4gZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKGxyLCEwKT9kKGxyLmxlZnQpOmUuaXNTcHJlYWRFbGVtZW50KGxyKT9kKGxyLmV4cHJlc3Npb24pOmxyfWUuZ2V0VGFyZ2V0T2ZCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudD1kO2Z1bmN0aW9uIEQobHIpe3N3aXRjaChsci5raW5kKXtjYXNlIDE2NDpjYXNlIDIwMzpyZXR1cm4gbHIuZG90RG90RG90VG9rZW47Y2FzZSAyMjU6Y2FzZSAyOTg6cmV0dXJuIGxyfX1lLmdldFJlc3RJbmRpY2F0b3JPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50PUQ7ZnVuY3Rpb24gZmUobHIpe3ZhciBiZT1nKGxyKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoISFiZXx8ZS5pc1NwcmVhZEFzc2lnbm1lbnQobHIpLFwiSW52YWxpZCBwcm9wZXJ0eSBuYW1lIGZvciBiaW5kaW5nIGVsZW1lbnQuXCIpLGJlfWUuZ2V0UHJvcGVydHlOYW1lT2ZCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudD1mZTtmdW5jdGlvbiBnKGxyKXtzd2l0Y2gobHIua2luZCl7Y2FzZSAyMDM6aWYobHIucHJvcGVydHlOYW1lKXt2YXIgYmU9bHIucHJvcGVydHlOYW1lO3JldHVybiBlLmlzUHJpdmF0ZUlkZW50aWZpZXIoYmUpP2UuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoYmUpOmUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShiZSkmJm5lKGJlLmV4cHJlc3Npb24pP2JlLmV4cHJlc3Npb246YmV9YnJlYWs7Y2FzZSAyOTY6aWYobHIubmFtZSl7dmFyIGJlPWxyLm5hbWU7cmV0dXJuIGUuaXNQcml2YXRlSWRlbnRpZmllcihiZSk/ZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChiZSk6ZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKGJlKSYmbmUoYmUuZXhwcmVzc2lvbik/YmUuZXhwcmVzc2lvbjpiZX1icmVhaztjYXNlIDI5ODpyZXR1cm4gbHIubmFtZSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKGxyLm5hbWUpP2UuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQobHIubmFtZSk6bHIubmFtZX12YXIgR2U9ZChscik7aWYoR2UmJmUuaXNQcm9wZXJ0eU5hbWUoR2UpKXJldHVybiBHZX1lLnRyeUdldFByb3BlcnR5TmFtZU9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQ9ZztmdW5jdGlvbiBuZShscil7dmFyIGJlPWxyLmtpbmQ7cmV0dXJuIGJlPT09MTB8fGJlPT09OH1mdW5jdGlvbiB1ZShscil7c3dpdGNoKGxyLmtpbmQpe2Nhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjA0OnJldHVybiBsci5lbGVtZW50cztjYXNlIDIwNTpyZXR1cm4gbHIucHJvcGVydGllc319ZS5nZXRFbGVtZW50c09mQmluZGluZ09yQXNzaWdubWVudFBhdHRlcm49dWU7ZnVuY3Rpb24gV2UobHIpe2lmKGxyKWZvcih2YXIgYmU9bHI7Oyl7aWYoZS5pc0lkZW50aWZpZXIoYmUpfHwhYmUuYm9keSlyZXR1cm4gZS5pc0lkZW50aWZpZXIoYmUpP2JlOmJlLm5hbWU7YmU9YmUuYm9keX19ZS5nZXRKU0RvY1R5cGVBbGlhc05hbWU9V2U7ZnVuY3Rpb24gRmUobHIpe3ZhciBiZT1sci5raW5kO3JldHVybiBiZT09PTE2NHx8YmU9PT0xNjZ8fGJlPT09MTY3fHxiZT09PTE2OHx8YmU9PT0xNjl8fGJlPT09MTcxfHxiZT09PTE3Mnx8YmU9PT0xNzN8fGJlPT09MTc2fHxiZT09PTIxM3x8YmU9PT0yMTR8fGJlPT09MjI2fHxiZT09PTIzN3x8YmU9PT0yNTZ8fGJlPT09MjU3fHxiZT09PTI1OHx8YmU9PT0yNTl8fGJlPT09MjYwfHxiZT09PTI2MXx8YmU9PT0yNjV8fGJlPT09MjY2fHxiZT09PTI3MXx8YmU9PT0yNzJ9ZS5jYW5IYXZlTW9kaWZpZXJzPUZlLGUuaXNUeXBlTm9kZU9yVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uPWUub3IoZS5pc1R5cGVOb2RlLGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLGUuaXNRdWVzdGlvbk9yRXhjbGFtYXRpb25Ub2tlbj1lLm9yKGUuaXNRdWVzdGlvblRva2VuLGUuaXNFeGNsYW1hdGlvblRva2VuKSxlLmlzSWRlbnRpZmllck9yVGhpc1R5cGVOb2RlPWUub3IoZS5pc0lkZW50aWZpZXIsZS5pc1RoaXNUeXBlTm9kZSksZS5pc1JlYWRvbmx5S2V5d29yZE9yUGx1c09yTWludXNUb2tlbj1lLm9yKGUuaXNSZWFkb25seUtleXdvcmQsZS5pc1BsdXNUb2tlbixlLmlzTWludXNUb2tlbiksZS5pc1F1ZXN0aW9uT3JQbHVzT3JNaW51c1Rva2VuPWUub3IoZS5pc1F1ZXN0aW9uVG9rZW4sZS5pc1BsdXNUb2tlbixlLmlzTWludXNUb2tlbiksZS5pc01vZHVsZU5hbWU9ZS5vcihlLmlzSWRlbnRpZmllcixlLmlzU3RyaW5nTGl0ZXJhbCk7ZnVuY3Rpb24gWihscil7dmFyIGJlPWxyLmtpbmQ7cmV0dXJuIGJlPT09MTA0fHxiZT09PTExMHx8YmU9PT05NXx8ZS5pc0xpdGVyYWxFeHByZXNzaW9uKGxyKXx8ZS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihscil9ZS5pc0xpdGVyYWxUeXBlTGlrZUV4cHJlc3Npb249WjtmdW5jdGlvbiBCZShscil7cmV0dXJuIGxyPT09NDJ9ZnVuY3Rpb24gZ2UobHIpe3JldHVybiBscj09PTQxfHxscj09PTQzfHxscj09PTQ0fWZ1bmN0aW9uIFJlKGxyKXtyZXR1cm4gQmUobHIpfHxnZShscil9ZnVuY3Rpb24gemUobHIpe3JldHVybiBscj09PTM5fHxscj09PTQwfWZ1bmN0aW9uIEVlKGxyKXtyZXR1cm4gemUobHIpfHxSZShscil9ZnVuY3Rpb24gSGUobHIpe3JldHVybiBscj09PTQ3fHxscj09PTQ4fHxscj09PTQ5fWZ1bmN0aW9uIHJyKGxyKXtyZXR1cm4gSGUobHIpfHxFZShscil9ZnVuY3Rpb24gSWUobHIpe3JldHVybiBscj09PTI5fHxscj09PTMyfHxscj09PTMxfHxscj09PTMzfHxscj09PTEwMnx8bHI9PT0xMDF9ZnVuY3Rpb24gX2UobHIpe3JldHVybiBJZShscil8fHJyKGxyKX1mdW5jdGlvbiB3ZShscil7cmV0dXJuIGxyPT09MzR8fGxyPT09MzZ8fGxyPT09MzV8fGxyPT09Mzd9ZnVuY3Rpb24gZGUobHIpe3JldHVybiB3ZShscil8fF9lKGxyKX1mdW5jdGlvbiB5ZShscil7cmV0dXJuIGxyPT09NTB8fGxyPT09NTF8fGxyPT09NTJ9ZnVuY3Rpb24gQWUobHIpe3JldHVybiB5ZShscil8fGRlKGxyKX1mdW5jdGlvbiBlcihscil7cmV0dXJuIGxyPT09NTV8fGxyPT09NTZ9ZnVuY3Rpb24gaXIobHIpe3JldHVybiBlcihscil8fEFlKGxyKX1mdW5jdGlvbiBDcihscil7cmV0dXJuIGxyPT09NjB8fGlyKGxyKXx8ZS5pc0Fzc2lnbm1lbnRPcGVyYXRvcihscil9ZnVuY3Rpb24gWWUobHIpe3JldHVybiBDcihscil8fGxyPT09Mjd9ZnVuY3Rpb24gQnIobHIpe3JldHVybiBZZShsci5raW5kKX1lLmlzQmluYXJ5T3BlcmF0b3JUb2tlbj1Ccjt2YXIgRXI7KGZ1bmN0aW9uKGxyKXtmdW5jdGlvbiBiZShwZSxvcixxcixzaSxEaSx3aSxYaSl7dmFyIGV0PW9yPjA/RGlbb3ItMV06dm9pZCAwO3JldHVybiBlLkRlYnVnLmFzc2VydEVxdWFsKHFyW29yXSxiZSksRGlbb3JdPXBlLm9uRW50ZXIoc2lbb3JdLGV0LFhpKSxxcltvcl09VXIocGUsYmUpLG9yfWxyLmVudGVyPWJlO2Z1bmN0aW9uIEdlKHBlLG9yLHFyLHNpLERpLHdpLFhpKXtlLkRlYnVnLmFzc2VydEVxdWFsKHFyW29yXSxHZSksZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQocGUub25MZWZ0KSxxcltvcl09VXIocGUsR2UpO3ZhciBldD1wZS5vbkxlZnQoc2lbb3JdLmxlZnQsRGlbb3JdLHNpW29yXSk7cmV0dXJuIGV0PyhtaShvcixzaSxldCksaWkob3IscXIsc2ksRGksZXQpKTpvcn1sci5sZWZ0PUdlO2Z1bmN0aW9uIHVyKHBlLG9yLHFyLHNpLERpLHdpLFhpKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnRFcXVhbChxcltvcl0sdXIpLGUuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKHBlLm9uT3BlcmF0b3IpLHFyW29yXT1VcihwZSx1cikscGUub25PcGVyYXRvcihzaVtvcl0ub3BlcmF0b3JUb2tlbixEaVtvcl0sc2lbb3JdKSxvcn1sci5vcGVyYXRvcj11cjtmdW5jdGlvbiB5cihwZSxvcixxcixzaSxEaSx3aSxYaSl7ZS5EZWJ1Zy5hc3NlcnRFcXVhbChxcltvcl0seXIpLGUuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKHBlLm9uUmlnaHQpLHFyW29yXT1VcihwZSx5cik7dmFyIGV0PXBlLm9uUmlnaHQoc2lbb3JdLnJpZ2h0LERpW29yXSxzaVtvcl0pO3JldHVybiBldD8obWkob3Isc2ksZXQpLGlpKG9yLHFyLHNpLERpLGV0KSk6b3J9bHIucmlnaHQ9eXI7ZnVuY3Rpb24gSXIocGUsb3IscXIsc2ksRGksd2ksWGkpe2UuRGVidWcuYXNzZXJ0RXF1YWwocXJbb3JdLElyKSxxcltvcl09VXIocGUsSXIpO3ZhciBldD1wZS5vbkV4aXQoc2lbb3JdLERpW29yXSk7aWYob3I+MCl7aWYob3ItLSxwZS5mb2xkU3RhdGUpe3ZhciBHaT1xcltvcl09PT1Jcj9cInJpZ2h0XCI6XCJsZWZ0XCI7RGlbb3JdPXBlLmZvbGRTdGF0ZShEaVtvcl0sZXQsR2kpfX1lbHNlIHdpLnZhbHVlPWV0O3JldHVybiBvcn1sci5leGl0PUlyO2Z1bmN0aW9uIHdyKHBlLG9yLHFyLHNpLERpLHdpLFhpKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnRFcXVhbChxcltvcl0sd3IpLG9yfWxyLmRvbmU9d3I7ZnVuY3Rpb24gVXIocGUsb3Ipe3N3aXRjaChvcil7Y2FzZSBiZTppZihwZS5vbkxlZnQpcmV0dXJuIEdlO2Nhc2UgR2U6aWYocGUub25PcGVyYXRvcilyZXR1cm4gdXI7Y2FzZSB1cjppZihwZS5vblJpZ2h0KXJldHVybiB5cjtjYXNlIHlyOnJldHVybiBJcjtjYXNlIElyOnJldHVybiB3cjtjYXNlIHdyOnJldHVybiB3cjtkZWZhdWx0OmUuRGVidWcuZmFpbChcIkludmFsaWQgc3RhdGVcIil9fWxyLm5leHRTdGF0ZT1VcjtmdW5jdGlvbiBpaShwZSxvcixxcixzaSxEaSl7cmV0dXJuIHBlKyssb3JbcGVdPWJlLHFyW3BlXT1EaSxzaVtwZV09dm9pZCAwLHBlfWZ1bmN0aW9uIG1pKHBlLG9yLHFyKXtpZihlLkRlYnVnLnNob3VsZEFzc2VydCgyKSlmb3IoO3BlPj0wOyllLkRlYnVnLmFzc2VydChvcltwZV0hPT1xcixcIkNpcmN1bGFyIHRyYXZlcnNhbCBkZXRlY3RlZC5cIikscGUtLX19KShFcnx8KEVyPXt9KSk7dmFyIE5lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbHIoYmUsR2UsdXIseXIsSXIsd3Ipe3RoaXMub25FbnRlcj1iZSx0aGlzLm9uTGVmdD1HZSx0aGlzLm9uT3BlcmF0b3I9dXIsdGhpcy5vblJpZ2h0PXlyLHRoaXMub25FeGl0PUlyLHRoaXMuZm9sZFN0YXRlPXdyfXJldHVybiBscn0oKTtmdW5jdGlvbiBuKGxyLGJlLEdlLHVyLHlyLElyKXt2YXIgd3I9bmV3IE5lKGxyLGJlLEdlLHVyLHlyLElyKTtyZXR1cm4gVXI7ZnVuY3Rpb24gVXIoaWksbWkpe2Zvcih2YXIgcGU9e3ZhbHVlOnZvaWQgMH0sb3I9W0VyLmVudGVyXSxxcj1baWldLHNpPVt2b2lkIDBdLERpPTA7b3JbRGldIT09RXIuZG9uZTspRGk9b3JbRGldKHdyLERpLG9yLHFyLHNpLHBlLG1pKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnRFcXVhbChEaSwwKSxwZS52YWx1ZX19ZS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uVHJhbXBvbGluZT1ufSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShDLHcpe3JldHVybiB3P2Uuc2V0VGV4dFJhbmdlUG9zRW5kKEMsdy5wb3Msdy5lbmQpOkN9ZS5zZXRUZXh0UmFuZ2U9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihkKXtkW2QuTm9uZT0wXT1cIk5vbmVcIixkW2QuWWllbGQ9MV09XCJZaWVsZFwiLGRbZC5Bd2FpdD0yXT1cIkF3YWl0XCIsZFtkLlR5cGU9NF09XCJUeXBlXCIsZFtkLklnbm9yZU1pc3NpbmdPcGVuQnJhY2U9MTZdPVwiSWdub3JlTWlzc2luZ09wZW5CcmFjZVwiLGRbZC5KU0RvYz0zMl09XCJKU0RvY1wifSkoYXx8KGE9e30pKTt2YXIgQzsoZnVuY3Rpb24oZCl7ZFtkLlRyeVBhcnNlPTBdPVwiVHJ5UGFyc2VcIixkW2QuTG9va2FoZWFkPTFdPVwiTG9va2FoZWFkXCIsZFtkLlJlcGFyc2U9Ml09XCJSZXBhcnNlXCJ9KShDfHwoQz17fSkpO3ZhciB3LEIsRSxRLGxlO2UucGFyc2VCYXNlTm9kZUZhY3Rvcnk9e2NyZWF0ZUJhc2VTb3VyY2VGaWxlTm9kZTpmdW5jdGlvbihkKXtyZXR1cm4gbmV3KGxlfHwobGU9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0U291cmNlRmlsZUNvbnN0cnVjdG9yKCkpKShkLC0xLC0xKX0sY3JlYXRlQmFzZUlkZW50aWZpZXJOb2RlOmZ1bmN0aW9uKGQpe3JldHVybiBuZXcoRXx8KEU9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0SWRlbnRpZmllckNvbnN0cnVjdG9yKCkpKShkLC0xLC0xKX0sY3JlYXRlQmFzZVByaXZhdGVJZGVudGlmaWVyTm9kZTpmdW5jdGlvbihkKXtyZXR1cm4gbmV3KFF8fChRPWUub2JqZWN0QWxsb2NhdG9yLmdldFByaXZhdGVJZGVudGlmaWVyQ29uc3RydWN0b3IoKSkpKGQsLTEsLTEpfSxjcmVhdGVCYXNlVG9rZW5Ob2RlOmZ1bmN0aW9uKGQpe3JldHVybiBuZXcoQnx8KEI9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0VG9rZW5Db25zdHJ1Y3RvcigpKSkoZCwtMSwtMSl9LGNyZWF0ZUJhc2VOb2RlOmZ1bmN0aW9uKGQpe3JldHVybiBuZXcod3x8KHc9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0Tm9kZUNvbnN0cnVjdG9yKCkpKShkLC0xLC0xKX19LGUucGFyc2VOb2RlRmFjdG9yeT1lLmNyZWF0ZU5vZGVGYWN0b3J5KDEsZS5wYXJzZUJhc2VOb2RlRmFjdG9yeSk7ZnVuY3Rpb24gTihkLEQpe3JldHVybiBEJiZkKEQpfWZ1bmN0aW9uIHAoZCxELGZlKXtpZihmZSl7aWYoRClyZXR1cm4gRChmZSk7Zm9yKHZhciBnPTAsbmU9ZmU7ZzxuZS5sZW5ndGg7ZysrKXt2YXIgdWU9bmVbZ10sV2U9ZCh1ZSk7aWYoV2UpcmV0dXJuIFdlfX19ZnVuY3Rpb24gbShkLEQpe3JldHVybiBkLmNoYXJDb2RlQXQoRCsxKT09PTQyJiZkLmNoYXJDb2RlQXQoRCsyKT09PTQyJiZkLmNoYXJDb2RlQXQoRCszKSE9PTQ3fWUuaXNKU0RvY0xpa2VUZXh0PW07ZnVuY3Rpb24gRyhkKXtyZXR1cm4gZS5mb3JFYWNoKGQuc3RhdGVtZW50cyxvZSl8fGYoZCl9ZS5pc0ZpbGVQcm9iYWJseUV4dGVybmFsTW9kdWxlPUc7ZnVuY3Rpb24gb2UoZCl7cmV0dXJuIEsoZCw5Myl8fGUuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihkKSYmZS5pc0V4dGVybmFsTW9kdWxlUmVmZXJlbmNlKGQubW9kdWxlUmVmZXJlbmNlKXx8ZS5pc0ltcG9ydERlY2xhcmF0aW9uKGQpfHxlLmlzRXhwb3J0QXNzaWdubWVudChkKXx8ZS5pc0V4cG9ydERlY2xhcmF0aW9uKGQpP2Q6dm9pZCAwfWZ1bmN0aW9uIGYoZCl7cmV0dXJuIGQuZmxhZ3MmNDE5NDMwND9UKGQpOnZvaWQgMH1mdW5jdGlvbiBUKGQpe3JldHVybiBiKGQpP2Q6c2UoZCxUKX1mdW5jdGlvbiBLKGQsRCl7cmV0dXJuIGUuc29tZShkLm1vZGlmaWVycyxmdW5jdGlvbihmZSl7cmV0dXJuIGZlLmtpbmQ9PT1EfSl9ZnVuY3Rpb24gYihkKXtyZXR1cm4gZS5pc01ldGFQcm9wZXJ0eShkKSYmZC5rZXl3b3JkVG9rZW49PT0xMDAmJmQubmFtZS5lc2NhcGVkVGV4dD09PVwibWV0YVwifWZ1bmN0aW9uIHNlKGQsRCxmZSl7aWYoISghZHx8ZC5raW5kPD0xNjApKXN3aXRjaChkLmtpbmQpe2Nhc2UgMTYxOnJldHVybiBOKEQsZC5sZWZ0KXx8TihELGQucmlnaHQpO2Nhc2UgMTYzOnJldHVybiBwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5uYW1lKXx8TihELGQuY29uc3RyYWludCl8fE4oRCxkLmRlZmF1bHQpfHxOKEQsZC5leHByZXNzaW9uKTtjYXNlIDI5NzpyZXR1cm4gcChELGZlLGQuZGVjb3JhdG9ycyl8fHAoRCxmZSxkLm1vZGlmaWVycyl8fE4oRCxkLm5hbWUpfHxOKEQsZC5xdWVzdGlvblRva2VuKXx8TihELGQuZXhjbGFtYXRpb25Ub2tlbil8fE4oRCxkLmVxdWFsc1Rva2VuKXx8TihELGQub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyKTtjYXNlIDI5ODpyZXR1cm4gTihELGQuZXhwcmVzc2lvbik7Y2FzZSAxNjQ6cmV0dXJuIHAoRCxmZSxkLmRlY29yYXRvcnMpfHxwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5kb3REb3REb3RUb2tlbil8fE4oRCxkLm5hbWUpfHxOKEQsZC5xdWVzdGlvblRva2VuKXx8TihELGQudHlwZSl8fE4oRCxkLmluaXRpYWxpemVyKTtjYXNlIDE2NzpyZXR1cm4gcChELGZlLGQuZGVjb3JhdG9ycyl8fHAoRCxmZSxkLm1vZGlmaWVycyl8fE4oRCxkLm5hbWUpfHxOKEQsZC5xdWVzdGlvblRva2VuKXx8TihELGQuZXhjbGFtYXRpb25Ub2tlbil8fE4oRCxkLnR5cGUpfHxOKEQsZC5pbml0aWFsaXplcik7Y2FzZSAxNjY6cmV0dXJuIHAoRCxmZSxkLmRlY29yYXRvcnMpfHxwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5uYW1lKXx8TihELGQucXVlc3Rpb25Ub2tlbil8fE4oRCxkLnR5cGUpfHxOKEQsZC5pbml0aWFsaXplcik7Y2FzZSAyOTY6cmV0dXJuIHAoRCxmZSxkLmRlY29yYXRvcnMpfHxwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5uYW1lKXx8TihELGQucXVlc3Rpb25Ub2tlbil8fE4oRCxkLmluaXRpYWxpemVyKTtjYXNlIDI1NDpyZXR1cm4gcChELGZlLGQuZGVjb3JhdG9ycyl8fHAoRCxmZSxkLm1vZGlmaWVycyl8fE4oRCxkLm5hbWUpfHxOKEQsZC5leGNsYW1hdGlvblRva2VuKXx8TihELGQudHlwZSl8fE4oRCxkLmluaXRpYWxpemVyKTtjYXNlIDIwMzpyZXR1cm4gcChELGZlLGQuZGVjb3JhdG9ycyl8fHAoRCxmZSxkLm1vZGlmaWVycyl8fE4oRCxkLmRvdERvdERvdFRva2VuKXx8TihELGQucHJvcGVydHlOYW1lKXx8TihELGQubmFtZSl8fE4oRCxkLmluaXRpYWxpemVyKTtjYXNlIDE3OTpjYXNlIDE4MDpjYXNlIDE3NDpjYXNlIDE3NTpjYXNlIDE3NjpyZXR1cm4gcChELGZlLGQuZGVjb3JhdG9ycyl8fHAoRCxmZSxkLm1vZGlmaWVycyl8fHAoRCxmZSxkLnR5cGVQYXJhbWV0ZXJzKXx8cChELGZlLGQucGFyYW1ldGVycyl8fE4oRCxkLnR5cGUpO2Nhc2UgMTY5OmNhc2UgMTY4OmNhc2UgMTcxOmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMjEzOmNhc2UgMjU2OmNhc2UgMjE0OnJldHVybiBwKEQsZmUsZC5kZWNvcmF0b3JzKXx8cChELGZlLGQubW9kaWZpZXJzKXx8TihELGQuYXN0ZXJpc2tUb2tlbil8fE4oRCxkLm5hbWUpfHxOKEQsZC5xdWVzdGlvblRva2VuKXx8TihELGQuZXhjbGFtYXRpb25Ub2tlbil8fHAoRCxmZSxkLnR5cGVQYXJhbWV0ZXJzKXx8cChELGZlLGQucGFyYW1ldGVycyl8fE4oRCxkLnR5cGUpfHxOKEQsZC5lcXVhbHNHcmVhdGVyVGhhblRva2VuKXx8TihELGQuYm9keSk7Y2FzZSAxNzA6cmV0dXJuIHAoRCxmZSxkLmRlY29yYXRvcnMpfHxwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5ib2R5KTtjYXNlIDE3ODpyZXR1cm4gTihELGQudHlwZU5hbWUpfHxwKEQsZmUsZC50eXBlQXJndW1lbnRzKTtjYXNlIDE3NzpyZXR1cm4gTihELGQuYXNzZXJ0c01vZGlmaWVyKXx8TihELGQucGFyYW1ldGVyTmFtZSl8fE4oRCxkLnR5cGUpO2Nhc2UgMTgxOnJldHVybiBOKEQsZC5leHByTmFtZSl8fHAoRCxmZSxkLnR5cGVBcmd1bWVudHMpO2Nhc2UgMTgyOnJldHVybiBwKEQsZmUsZC5tZW1iZXJzKTtjYXNlIDE4MzpyZXR1cm4gTihELGQuZWxlbWVudFR5cGUpO2Nhc2UgMTg0OnJldHVybiBwKEQsZmUsZC5lbGVtZW50cyk7Y2FzZSAxODc6Y2FzZSAxODg6cmV0dXJuIHAoRCxmZSxkLnR5cGVzKTtjYXNlIDE4OTpyZXR1cm4gTihELGQuY2hlY2tUeXBlKXx8TihELGQuZXh0ZW5kc1R5cGUpfHxOKEQsZC50cnVlVHlwZSl8fE4oRCxkLmZhbHNlVHlwZSk7Y2FzZSAxOTA6cmV0dXJuIE4oRCxkLnR5cGVQYXJhbWV0ZXIpO2Nhc2UgMjAwOnJldHVybiBOKEQsZC5hcmd1bWVudCl8fE4oRCxkLmFzc2VydGlvbnMpfHxOKEQsZC5xdWFsaWZpZXIpfHxwKEQsZmUsZC50eXBlQXJndW1lbnRzKTtjYXNlIDI5NTpyZXR1cm4gTihELGQuYXNzZXJ0Q2xhdXNlKTtjYXNlIDE5MTpjYXNlIDE5MzpyZXR1cm4gTihELGQudHlwZSk7Y2FzZSAxOTQ6cmV0dXJuIE4oRCxkLm9iamVjdFR5cGUpfHxOKEQsZC5pbmRleFR5cGUpO2Nhc2UgMTk1OnJldHVybiBOKEQsZC5yZWFkb25seVRva2VuKXx8TihELGQudHlwZVBhcmFtZXRlcil8fE4oRCxkLm5hbWVUeXBlKXx8TihELGQucXVlc3Rpb25Ub2tlbil8fE4oRCxkLnR5cGUpfHxwKEQsZmUsZC5tZW1iZXJzKTtjYXNlIDE5NjpyZXR1cm4gTihELGQubGl0ZXJhbCk7Y2FzZSAxOTc6cmV0dXJuIE4oRCxkLmRvdERvdERvdFRva2VuKXx8TihELGQubmFtZSl8fE4oRCxkLnF1ZXN0aW9uVG9rZW4pfHxOKEQsZC50eXBlKTtjYXNlIDIwMTpjYXNlIDIwMjpyZXR1cm4gcChELGZlLGQuZWxlbWVudHMpO2Nhc2UgMjA0OnJldHVybiBwKEQsZmUsZC5lbGVtZW50cyk7Y2FzZSAyMDU6cmV0dXJuIHAoRCxmZSxkLnByb3BlcnRpZXMpO2Nhc2UgMjA2OnJldHVybiBOKEQsZC5leHByZXNzaW9uKXx8TihELGQucXVlc3Rpb25Eb3RUb2tlbil8fE4oRCxkLm5hbWUpO2Nhc2UgMjA3OnJldHVybiBOKEQsZC5leHByZXNzaW9uKXx8TihELGQucXVlc3Rpb25Eb3RUb2tlbil8fE4oRCxkLmFyZ3VtZW50RXhwcmVzc2lvbik7Y2FzZSAyMDg6Y2FzZSAyMDk6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pfHxOKEQsZC5xdWVzdGlvbkRvdFRva2VuKXx8cChELGZlLGQudHlwZUFyZ3VtZW50cyl8fHAoRCxmZSxkLmFyZ3VtZW50cyk7Y2FzZSAyMTA6cmV0dXJuIE4oRCxkLnRhZyl8fE4oRCxkLnF1ZXN0aW9uRG90VG9rZW4pfHxwKEQsZmUsZC50eXBlQXJndW1lbnRzKXx8TihELGQudGVtcGxhdGUpO2Nhc2UgMjExOnJldHVybiBOKEQsZC50eXBlKXx8TihELGQuZXhwcmVzc2lvbik7Y2FzZSAyMTI6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjE1OnJldHVybiBOKEQsZC5leHByZXNzaW9uKTtjYXNlIDIxNjpyZXR1cm4gTihELGQuZXhwcmVzc2lvbik7Y2FzZSAyMTc6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjE5OnJldHVybiBOKEQsZC5vcGVyYW5kKTtjYXNlIDIyNDpyZXR1cm4gTihELGQuYXN0ZXJpc2tUb2tlbil8fE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjE4OnJldHVybiBOKEQsZC5leHByZXNzaW9uKTtjYXNlIDIyMDpyZXR1cm4gTihELGQub3BlcmFuZCk7Y2FzZSAyMjE6cmV0dXJuIE4oRCxkLmxlZnQpfHxOKEQsZC5vcGVyYXRvclRva2VuKXx8TihELGQucmlnaHQpO2Nhc2UgMjI5OnJldHVybiBOKEQsZC5leHByZXNzaW9uKXx8TihELGQudHlwZSk7Y2FzZSAyMzA6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjMxOnJldHVybiBOKEQsZC5uYW1lKTtjYXNlIDIyMjpyZXR1cm4gTihELGQuY29uZGl0aW9uKXx8TihELGQucXVlc3Rpb25Ub2tlbil8fE4oRCxkLndoZW5UcnVlKXx8TihELGQuY29sb25Ub2tlbil8fE4oRCxkLndoZW5GYWxzZSk7Y2FzZSAyMjU6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjM1OmNhc2UgMjYyOnJldHVybiBwKEQsZmUsZC5zdGF0ZW1lbnRzKTtjYXNlIDMwNTpyZXR1cm4gcChELGZlLGQuc3RhdGVtZW50cyl8fE4oRCxkLmVuZE9mRmlsZVRva2VuKTtjYXNlIDIzNzpyZXR1cm4gcChELGZlLGQuZGVjb3JhdG9ycyl8fHAoRCxmZSxkLm1vZGlmaWVycyl8fE4oRCxkLmRlY2xhcmF0aW9uTGlzdCk7Y2FzZSAyNTU6cmV0dXJuIHAoRCxmZSxkLmRlY2xhcmF0aW9ucyk7Y2FzZSAyMzg6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjM5OnJldHVybiBOKEQsZC5leHByZXNzaW9uKXx8TihELGQudGhlblN0YXRlbWVudCl8fE4oRCxkLmVsc2VTdGF0ZW1lbnQpO2Nhc2UgMjQwOnJldHVybiBOKEQsZC5zdGF0ZW1lbnQpfHxOKEQsZC5leHByZXNzaW9uKTtjYXNlIDI0MTpyZXR1cm4gTihELGQuZXhwcmVzc2lvbil8fE4oRCxkLnN0YXRlbWVudCk7Y2FzZSAyNDI6cmV0dXJuIE4oRCxkLmluaXRpYWxpemVyKXx8TihELGQuY29uZGl0aW9uKXx8TihELGQuaW5jcmVtZW50b3IpfHxOKEQsZC5zdGF0ZW1lbnQpO2Nhc2UgMjQzOnJldHVybiBOKEQsZC5pbml0aWFsaXplcil8fE4oRCxkLmV4cHJlc3Npb24pfHxOKEQsZC5zdGF0ZW1lbnQpO2Nhc2UgMjQ0OnJldHVybiBOKEQsZC5hd2FpdE1vZGlmaWVyKXx8TihELGQuaW5pdGlhbGl6ZXIpfHxOKEQsZC5leHByZXNzaW9uKXx8TihELGQuc3RhdGVtZW50KTtjYXNlIDI0NTpjYXNlIDI0NjpyZXR1cm4gTihELGQubGFiZWwpO2Nhc2UgMjQ3OnJldHVybiBOKEQsZC5leHByZXNzaW9uKTtjYXNlIDI0ODpyZXR1cm4gTihELGQuZXhwcmVzc2lvbil8fE4oRCxkLnN0YXRlbWVudCk7Y2FzZSAyNDk6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pfHxOKEQsZC5jYXNlQmxvY2spO2Nhc2UgMjYzOnJldHVybiBwKEQsZmUsZC5jbGF1c2VzKTtjYXNlIDI4OTpyZXR1cm4gTihELGQuZXhwcmVzc2lvbil8fHAoRCxmZSxkLnN0YXRlbWVudHMpO2Nhc2UgMjkwOnJldHVybiBwKEQsZmUsZC5zdGF0ZW1lbnRzKTtjYXNlIDI1MDpyZXR1cm4gTihELGQubGFiZWwpfHxOKEQsZC5zdGF0ZW1lbnQpO2Nhc2UgMjUxOnJldHVybiBOKEQsZC5leHByZXNzaW9uKTtjYXNlIDI1MjpyZXR1cm4gTihELGQudHJ5QmxvY2spfHxOKEQsZC5jYXRjaENsYXVzZSl8fE4oRCxkLmZpbmFsbHlCbG9jayk7Y2FzZSAyOTI6cmV0dXJuIE4oRCxkLnZhcmlhYmxlRGVjbGFyYXRpb24pfHxOKEQsZC5ibG9jayk7Y2FzZSAxNjU6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjU3OmNhc2UgMjI2OnJldHVybiBwKEQsZmUsZC5kZWNvcmF0b3JzKXx8cChELGZlLGQubW9kaWZpZXJzKXx8TihELGQubmFtZSl8fHAoRCxmZSxkLnR5cGVQYXJhbWV0ZXJzKXx8cChELGZlLGQuaGVyaXRhZ2VDbGF1c2VzKXx8cChELGZlLGQubWVtYmVycyk7Y2FzZSAyNTg6cmV0dXJuIHAoRCxmZSxkLmRlY29yYXRvcnMpfHxwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5uYW1lKXx8cChELGZlLGQudHlwZVBhcmFtZXRlcnMpfHxwKEQsZmUsZC5oZXJpdGFnZUNsYXVzZXMpfHxwKEQsZmUsZC5tZW1iZXJzKTtjYXNlIDI1OTpyZXR1cm4gcChELGZlLGQuZGVjb3JhdG9ycyl8fHAoRCxmZSxkLm1vZGlmaWVycyl8fE4oRCxkLm5hbWUpfHxwKEQsZmUsZC50eXBlUGFyYW1ldGVycyl8fE4oRCxkLnR5cGUpO2Nhc2UgMjYwOnJldHVybiBwKEQsZmUsZC5kZWNvcmF0b3JzKXx8cChELGZlLGQubW9kaWZpZXJzKXx8TihELGQubmFtZSl8fHAoRCxmZSxkLm1lbWJlcnMpO2Nhc2UgMjk5OnJldHVybiBOKEQsZC5uYW1lKXx8TihELGQuaW5pdGlhbGl6ZXIpO2Nhc2UgMjYxOnJldHVybiBwKEQsZmUsZC5kZWNvcmF0b3JzKXx8cChELGZlLGQubW9kaWZpZXJzKXx8TihELGQubmFtZSl8fE4oRCxkLmJvZHkpO2Nhc2UgMjY1OnJldHVybiBwKEQsZmUsZC5kZWNvcmF0b3JzKXx8cChELGZlLGQubW9kaWZpZXJzKXx8TihELGQubmFtZSl8fE4oRCxkLm1vZHVsZVJlZmVyZW5jZSk7Y2FzZSAyNjY6cmV0dXJuIHAoRCxmZSxkLmRlY29yYXRvcnMpfHxwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5pbXBvcnRDbGF1c2UpfHxOKEQsZC5tb2R1bGVTcGVjaWZpZXIpfHxOKEQsZC5hc3NlcnRDbGF1c2UpO2Nhc2UgMjY3OnJldHVybiBOKEQsZC5uYW1lKXx8TihELGQubmFtZWRCaW5kaW5ncyk7Y2FzZSAyOTM6cmV0dXJuIHAoRCxmZSxkLmVsZW1lbnRzKTtjYXNlIDI5NDpyZXR1cm4gTihELGQubmFtZSl8fE4oRCxkLnZhbHVlKTtjYXNlIDI2NDpyZXR1cm4gTihELGQubmFtZSk7Y2FzZSAyNjg6cmV0dXJuIE4oRCxkLm5hbWUpO2Nhc2UgMjc0OnJldHVybiBOKEQsZC5uYW1lKTtjYXNlIDI2OTpjYXNlIDI3MzpyZXR1cm4gcChELGZlLGQuZWxlbWVudHMpO2Nhc2UgMjcyOnJldHVybiBwKEQsZmUsZC5kZWNvcmF0b3JzKXx8cChELGZlLGQubW9kaWZpZXJzKXx8TihELGQuZXhwb3J0Q2xhdXNlKXx8TihELGQubW9kdWxlU3BlY2lmaWVyKXx8TihELGQuYXNzZXJ0Q2xhdXNlKTtjYXNlIDI3MDpjYXNlIDI3NTpyZXR1cm4gTihELGQucHJvcGVydHlOYW1lKXx8TihELGQubmFtZSk7Y2FzZSAyNzE6cmV0dXJuIHAoRCxmZSxkLmRlY29yYXRvcnMpfHxwKEQsZmUsZC5tb2RpZmllcnMpfHxOKEQsZC5leHByZXNzaW9uKTtjYXNlIDIyMzpyZXR1cm4gTihELGQuaGVhZCl8fHAoRCxmZSxkLnRlbXBsYXRlU3BhbnMpO2Nhc2UgMjMzOnJldHVybiBOKEQsZC5leHByZXNzaW9uKXx8TihELGQubGl0ZXJhbCk7Y2FzZSAxOTg6cmV0dXJuIE4oRCxkLmhlYWQpfHxwKEQsZmUsZC50ZW1wbGF0ZVNwYW5zKTtjYXNlIDE5OTpyZXR1cm4gTihELGQudHlwZSl8fE4oRCxkLmxpdGVyYWwpO2Nhc2UgMTYyOnJldHVybiBOKEQsZC5leHByZXNzaW9uKTtjYXNlIDI5MTpyZXR1cm4gcChELGZlLGQudHlwZXMpO2Nhc2UgMjI4OnJldHVybiBOKEQsZC5leHByZXNzaW9uKXx8cChELGZlLGQudHlwZUFyZ3VtZW50cyk7Y2FzZSAyNzc6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pO2Nhc2UgMjc2OnJldHVybiBwKEQsZmUsZC5kZWNvcmF0b3JzKTtjYXNlIDM1MTpyZXR1cm4gcChELGZlLGQuZWxlbWVudHMpO2Nhc2UgMjc4OnJldHVybiBOKEQsZC5vcGVuaW5nRWxlbWVudCl8fHAoRCxmZSxkLmNoaWxkcmVuKXx8TihELGQuY2xvc2luZ0VsZW1lbnQpO2Nhc2UgMjgyOnJldHVybiBOKEQsZC5vcGVuaW5nRnJhZ21lbnQpfHxwKEQsZmUsZC5jaGlsZHJlbil8fE4oRCxkLmNsb3NpbmdGcmFnbWVudCk7Y2FzZSAyNzk6Y2FzZSAyODA6cmV0dXJuIE4oRCxkLnRhZ05hbWUpfHxwKEQsZmUsZC50eXBlQXJndW1lbnRzKXx8TihELGQuYXR0cmlidXRlcyk7Y2FzZSAyODY6cmV0dXJuIHAoRCxmZSxkLnByb3BlcnRpZXMpO2Nhc2UgMjg1OnJldHVybiBOKEQsZC5uYW1lKXx8TihELGQuaW5pdGlhbGl6ZXIpO2Nhc2UgMjg3OnJldHVybiBOKEQsZC5leHByZXNzaW9uKTtjYXNlIDI4ODpyZXR1cm4gTihELGQuZG90RG90RG90VG9rZW4pfHxOKEQsZC5leHByZXNzaW9uKTtjYXNlIDI4MTpyZXR1cm4gTihELGQudGFnTmFtZSk7Y2FzZSAxODU6Y2FzZSAxODY6Y2FzZSAzMDk6Y2FzZSAzMTU6Y2FzZSAzMTQ6Y2FzZSAzMTY6Y2FzZSAzMTg6cmV0dXJuIE4oRCxkLnR5cGUpO2Nhc2UgMzE3OnJldHVybiBwKEQsZmUsZC5wYXJhbWV0ZXJzKXx8TihELGQudHlwZSk7Y2FzZSAzMjA6cmV0dXJuKHR5cGVvZiBkLmNvbW1lbnQ9PVwic3RyaW5nXCI/dm9pZCAwOnAoRCxmZSxkLmNvbW1lbnQpKXx8cChELGZlLGQudGFncyk7Y2FzZSAzNDY6cmV0dXJuIE4oRCxkLnRhZ05hbWUpfHxOKEQsZC5uYW1lKXx8KHR5cGVvZiBkLmNvbW1lbnQ9PVwic3RyaW5nXCI/dm9pZCAwOnAoRCxmZSxkLmNvbW1lbnQpKTtjYXNlIDMxMDpyZXR1cm4gTihELGQubmFtZSk7Y2FzZSAzMTE6cmV0dXJuIE4oRCxkLmxlZnQpfHxOKEQsZC5yaWdodCk7Y2FzZSAzNDA6Y2FzZSAzNDc6cmV0dXJuIE4oRCxkLnRhZ05hbWUpfHwoZC5pc05hbWVGaXJzdD9OKEQsZC5uYW1lKXx8TihELGQudHlwZUV4cHJlc3Npb24pfHwodHlwZW9mIGQuY29tbWVudD09XCJzdHJpbmdcIj92b2lkIDA6cChELGZlLGQuY29tbWVudCkpOk4oRCxkLnR5cGVFeHByZXNzaW9uKXx8TihELGQubmFtZSl8fCh0eXBlb2YgZC5jb21tZW50PT1cInN0cmluZ1wiP3ZvaWQgMDpwKEQsZmUsZC5jb21tZW50KSkpO2Nhc2UgMzMwOnJldHVybiBOKEQsZC50YWdOYW1lKXx8KHR5cGVvZiBkLmNvbW1lbnQ9PVwic3RyaW5nXCI/dm9pZCAwOnAoRCxmZSxkLmNvbW1lbnQpKTtjYXNlIDMyOTpyZXR1cm4gTihELGQudGFnTmFtZSl8fE4oRCxkLmNsYXNzKXx8KHR5cGVvZiBkLmNvbW1lbnQ9PVwic3RyaW5nXCI/dm9pZCAwOnAoRCxmZSxkLmNvbW1lbnQpKTtjYXNlIDMyODpyZXR1cm4gTihELGQudGFnTmFtZSl8fE4oRCxkLmNsYXNzKXx8KHR5cGVvZiBkLmNvbW1lbnQ9PVwic3RyaW5nXCI/dm9pZCAwOnAoRCxmZSxkLmNvbW1lbnQpKTtjYXNlIDM0NDpyZXR1cm4gTihELGQudGFnTmFtZSl8fE4oRCxkLmNvbnN0cmFpbnQpfHxwKEQsZmUsZC50eXBlUGFyYW1ldGVycyl8fCh0eXBlb2YgZC5jb21tZW50PT1cInN0cmluZ1wiP3ZvaWQgMDpwKEQsZmUsZC5jb21tZW50KSk7Y2FzZSAzNDU6cmV0dXJuIE4oRCxkLnRhZ05hbWUpfHwoZC50eXBlRXhwcmVzc2lvbiYmZC50eXBlRXhwcmVzc2lvbi5raW5kPT09MzA5P04oRCxkLnR5cGVFeHByZXNzaW9uKXx8TihELGQuZnVsbE5hbWUpfHwodHlwZW9mIGQuY29tbWVudD09XCJzdHJpbmdcIj92b2lkIDA6cChELGZlLGQuY29tbWVudCkpOk4oRCxkLmZ1bGxOYW1lKXx8TihELGQudHlwZUV4cHJlc3Npb24pfHwodHlwZW9mIGQuY29tbWVudD09XCJzdHJpbmdcIj92b2lkIDA6cChELGZlLGQuY29tbWVudCkpKTtjYXNlIDMzODpyZXR1cm4gTihELGQudGFnTmFtZSl8fE4oRCxkLmZ1bGxOYW1lKXx8TihELGQudHlwZUV4cHJlc3Npb24pfHwodHlwZW9mIGQuY29tbWVudD09XCJzdHJpbmdcIj92b2lkIDA6cChELGZlLGQuY29tbWVudCkpO2Nhc2UgMzQxOmNhc2UgMzQzOmNhc2UgMzQyOmNhc2UgMzM5OnJldHVybiBOKEQsZC50YWdOYW1lKXx8TihELGQudHlwZUV4cHJlc3Npb24pfHwodHlwZW9mIGQuY29tbWVudD09XCJzdHJpbmdcIj92b2lkIDA6cChELGZlLGQuY29tbWVudCkpO2Nhc2UgMzIzOnJldHVybiBlLmZvckVhY2goZC50eXBlUGFyYW1ldGVycyxEKXx8ZS5mb3JFYWNoKGQucGFyYW1ldGVycyxEKXx8TihELGQudHlwZSk7Y2FzZSAzMjQ6Y2FzZSAzMjU6Y2FzZSAzMjY6cmV0dXJuIE4oRCxkLm5hbWUpO2Nhc2UgMzIyOnJldHVybiBlLmZvckVhY2goZC5qc0RvY1Byb3BlcnR5VGFncyxEKTtjYXNlIDMyNzpjYXNlIDMzMjpjYXNlIDMzMzpjYXNlIDMzNDpjYXNlIDMzNTpjYXNlIDMzNjpjYXNlIDMzMTpyZXR1cm4gTihELGQudGFnTmFtZSl8fCh0eXBlb2YgZC5jb21tZW50PT1cInN0cmluZ1wiP3ZvaWQgMDpwKEQsZmUsZC5jb21tZW50KSk7Y2FzZSAzNTA6cmV0dXJuIE4oRCxkLmV4cHJlc3Npb24pfX1lLmZvckVhY2hDaGlsZD1zZTtmdW5jdGlvbiBKKGQsRCxmZSl7Zm9yKHZhciBnPWllKGQpLG5lPVtdO25lLmxlbmd0aDxnLmxlbmd0aDspbmUucHVzaChkKTtmb3IoO2cubGVuZ3RoIT09MDspe3ZhciB1ZT1nLnBvcCgpLFdlPW5lLnBvcCgpO2lmKGUuaXNBcnJheSh1ZSkpe2lmKGZlKXt2YXIgRmU9ZmUodWUsV2UpO2lmKEZlKXtpZihGZT09PVwic2tpcFwiKWNvbnRpbnVlO3JldHVybiBGZX19Zm9yKHZhciBaPXVlLmxlbmd0aC0xO1o+PTA7LS1aKWcucHVzaCh1ZVtaXSksbmUucHVzaChXZSl9ZWxzZXt2YXIgRmU9RCh1ZSxXZSk7aWYoRmUpe2lmKEZlPT09XCJza2lwXCIpY29udGludWU7cmV0dXJuIEZlfWlmKHVlLmtpbmQ+PTE2MSlmb3IodmFyIEJlPTAsZ2U9aWUodWUpO0JlPGdlLmxlbmd0aDtCZSsrKXt2YXIgUmU9Z2VbQmVdO2cucHVzaChSZSksbmUucHVzaCh1ZSl9fX19ZS5mb3JFYWNoQ2hpbGRSZWN1cnNpdmVseT1KO2Z1bmN0aW9uIGllKGQpe3ZhciBEPVtdO3JldHVybiBzZShkLGZlLGZlKSxEO2Z1bmN0aW9uIGZlKGcpe0QudW5zaGlmdChnKX19ZnVuY3Rpb24gUihkKXtkLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yPUcoZCl9ZnVuY3Rpb24gcShkLEQsZmUsZyxuZSl7Zz09PXZvaWQgMCYmKGc9ITEpLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJwYXJzZVwiLFwiY3JlYXRlU291cmNlRmlsZVwiLHtwYXRoOmR9LCEwKSxlLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVQYXJzZVwiKTt2YXIgdWU7ZS5wZXJmTG9nZ2VyLmxvZ1N0YXJ0UGFyc2VTb3VyY2VGaWxlKGQpO3ZhciBXZT10eXBlb2YgZmU9PVwib2JqZWN0XCI/ZmU6e2xhbmd1YWdlVmVyc2lvbjpmZX0sRmU9V2UubGFuZ3VhZ2VWZXJzaW9uLFo9V2Uuc2V0RXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3IsQmU9V2UuaW1wbGllZE5vZGVGb3JtYXQ7aWYoRmU9PT0xMDApdWU9WC5wYXJzZVNvdXJjZUZpbGUoZCxELEZlLHZvaWQgMCxnLDYsZS5ub29wKTtlbHNle3ZhciBnZT1CZT09PXZvaWQgMD9aOmZ1bmN0aW9uKFJlKXtyZXR1cm4gUmUuaW1wbGllZE5vZGVGb3JtYXQ9QmUsKFp8fFIpKFJlKX07dWU9WC5wYXJzZVNvdXJjZUZpbGUoZCxELEZlLHZvaWQgMCxnLG5lLGdlKX1yZXR1cm4gZS5wZXJmTG9nZ2VyLmxvZ1N0b3BQYXJzZVNvdXJjZUZpbGUoKSxlLnBlcmZvcm1hbmNlLm1hcmsoXCJhZnRlclBhcnNlXCIpLGUucGVyZm9ybWFuY2UubWVhc3VyZShcIlBhcnNlXCIsXCJiZWZvcmVQYXJzZVwiLFwiYWZ0ZXJQYXJzZVwiKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSx1ZX1lLmNyZWF0ZVNvdXJjZUZpbGU9cTtmdW5jdGlvbiBPKGQsRCl7cmV0dXJuIFgucGFyc2VJc29sYXRlZEVudGl0eU5hbWUoZCxEKX1lLnBhcnNlSXNvbGF0ZWRFbnRpdHlOYW1lPU87ZnVuY3Rpb24gdmUoZCxEKXtyZXR1cm4gWC5wYXJzZUpzb25UZXh0KGQsRCl9ZS5wYXJzZUpzb25UZXh0PXZlO2Z1bmN0aW9uIGVlKGQpe3JldHVybiBkLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yIT09dm9pZCAwfWUuaXNFeHRlcm5hbE1vZHVsZT1lZTtmdW5jdGlvbiBoZShkLEQsZmUsZyl7Zz09PXZvaWQgMCYmKGc9ITEpO3ZhciBuZT0kLnVwZGF0ZVNvdXJjZUZpbGUoZCxELGZlLGcpO3JldHVybiBuZS5mbGFnc3w9ZC5mbGFncyY2MjkxNDU2LG5lfWUudXBkYXRlU291cmNlRmlsZT1oZTtmdW5jdGlvbiBGKGQsRCxmZSl7dmFyIGc9WC5KU0RvY1BhcnNlci5wYXJzZUlzb2xhdGVkSlNEb2NDb21tZW50KGQsRCxmZSk7cmV0dXJuIGcmJmcuanNEb2MmJlguZml4dXBQYXJlbnRSZWZlcmVuY2VzKGcuanNEb2MpLGd9ZS5wYXJzZUlzb2xhdGVkSlNEb2NDb21tZW50PUY7ZnVuY3Rpb24geChkLEQsZmUpe3JldHVybiBYLkpTRG9jUGFyc2VyLnBhcnNlSlNEb2NUeXBlRXhwcmVzc2lvbkZvclRlc3RzKGQsRCxmZSl9ZS5wYXJzZUpTRG9jVHlwZUV4cHJlc3Npb25Gb3JUZXN0cz14O3ZhciBYOyhmdW5jdGlvbihkKXt2YXIgRD1lLmNyZWF0ZVNjYW5uZXIoOTksITApLGZlPTIwNDgwLGcsbmUsdWUsV2UsRmU7ZnVuY3Rpb24gWihMZSl7cmV0dXJuIEFlKyssTGV9dmFyIEJlPXtjcmVhdGVCYXNlU291cmNlRmlsZU5vZGU6ZnVuY3Rpb24oTGUpe3JldHVybiBaKG5ldyBGZShMZSwwLDApKX0sY3JlYXRlQmFzZUlkZW50aWZpZXJOb2RlOmZ1bmN0aW9uKExlKXtyZXR1cm4gWihuZXcgdWUoTGUsMCwwKSl9LGNyZWF0ZUJhc2VQcml2YXRlSWRlbnRpZmllck5vZGU6ZnVuY3Rpb24oTGUpe3JldHVybiBaKG5ldyBXZShMZSwwLDApKX0sY3JlYXRlQmFzZVRva2VuTm9kZTpmdW5jdGlvbihMZSl7cmV0dXJuIFoobmV3IG5lKExlLDAsMCkpfSxjcmVhdGVCYXNlTm9kZTpmdW5jdGlvbihMZSl7cmV0dXJuIFoobmV3IGcoTGUsMCwwKSl9fSxnZT1lLmNyZWF0ZU5vZGVGYWN0b3J5KDExLEJlKSxSZSx6ZSxFZSxIZSxycixJZSxfZSx3ZSxkZSx5ZSxBZSxlcixpcixDcixZZSxCcixFcixOZT0hMCxuPSExO2Z1bmN0aW9uIGxyKExlLE5yLHJpLGRpLE1pLHN0LHJhKXt2YXIgVGE7aWYoTWk9PT12b2lkIDAmJihNaT0hMSksc3Q9ZS5lbnN1cmVTY3JpcHRLaW5kKExlLHN0KSxzdD09PTYpe3ZhciBoYT1HZShMZSxOcixyaSxkaSxNaSk7cmV0dXJuIGUuY29udmVydFRvT2JqZWN0V29ya2VyKGhhLChUYT1oYS5zdGF0ZW1lbnRzWzBdKT09PW51bGx8fFRhPT09dm9pZCAwP3ZvaWQgMDpUYS5leHByZXNzaW9uLGhhLnBhcnNlRGlhZ25vc3RpY3MsITEsdm9pZCAwLHZvaWQgMCksaGEucmVmZXJlbmNlZEZpbGVzPWUuZW1wdHlBcnJheSxoYS50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcz1lLmVtcHR5QXJyYXksaGEubGliUmVmZXJlbmNlRGlyZWN0aXZlcz1lLmVtcHR5QXJyYXksaGEuYW1kRGVwZW5kZW5jaWVzPWUuZW1wdHlBcnJheSxoYS5oYXNOb0RlZmF1bHRMaWI9ITEsaGEucHJhZ21hcz1lLmVtcHR5TWFwLGhhfXVyKExlLE5yLHJpLGRpLHN0KTt2YXIgTmE9SXIocmksTWksc3QscmF8fFIpO3JldHVybiB5cigpLE5hfWQucGFyc2VTb3VyY2VGaWxlPWxyO2Z1bmN0aW9uIGJlKExlLE5yKXt1cihcIlwiLExlLE5yLHZvaWQgMCwxKSxUcigpO3ZhciByaT1kcyghMCksZGk9RGUoKT09PTEmJiFfZS5sZW5ndGg7cmV0dXJuIHlyKCksZGk/cmk6dm9pZCAwfWQucGFyc2VJc29sYXRlZEVudGl0eU5hbWU9YmU7ZnVuY3Rpb24gR2UoTGUsTnIscmksZGksTWkpe3JpPT09dm9pZCAwJiYocmk9MiksTWk9PT12b2lkIDAmJihNaT0hMSksdXIoTGUsTnIscmksZGksNiksemU9RXIsVHIoKTt2YXIgc3Q9VWUoKSxyYSxUYTtpZihEZSgpPT09MSlyYT1DbihbXSxzdCxzdCksVGE9YWkoKTtlbHNle2Zvcih2YXIgaGE9dm9pZCAwO0RlKCkhPT0xOyl7dmFyIE5hPXZvaWQgMDtzd2l0Y2goRGUoKSl7Y2FzZSAyMjpOYT1jbCgpO2JyZWFrO2Nhc2UgMTEwOmNhc2UgOTU6Y2FzZSAxMDQ6TmE9YWkoKTticmVhaztjYXNlIDQwOlJ0KGZ1bmN0aW9uKCl7cmV0dXJuIFRyKCk9PT04JiZUcigpIT09NTh9KT9OYT1vbCgpOk5hPVV0KCk7YnJlYWs7Y2FzZSA4OmNhc2UgMTA6aWYoUnQoZnVuY3Rpb24oKXtyZXR1cm4gVHIoKSE9PTU4fSkpe05hPWdhKCk7YnJlYWt9ZGVmYXVsdDpOYT1VdCgpO2JyZWFrfWhhJiZlLmlzQXJyYXkoaGEpP2hhLnB1c2goTmEpOmhhP2hhPVtoYSxOYV06KGhhPU5hLERlKCkhPT0xJiZBcihlLkRpYWdub3N0aWNzLlVuZXhwZWN0ZWRfdG9rZW4pKX12YXIgSW49ZS5pc0FycmF5KGhhKT9CaShnZS5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKGhhKSxzdCk6ZS5EZWJ1Zy5jaGVja0RlZmluZWQoaGEpLHFvPWdlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoSW4pO0JpKHFvLHN0KSxyYT1DbihbcW9dLHN0KSxUYT0kYSgxLGUuRGlhZ25vc3RpY3MuVW5leHBlY3RlZF90b2tlbil9dmFyIGNvPW9yKExlLDIsNiwhMSxyYSxUYSx6ZSxlLm5vb3ApO01pJiZwZShjbyksY28ubm9kZUNvdW50PUFlLGNvLmlkZW50aWZpZXJDb3VudD1Dcixjby5pZGVudGlmaWVycz1lcixjby5wYXJzZURpYWdub3N0aWNzPWUuYXR0YWNoRmlsZVRvRGlhZ25vc3RpY3MoX2UsY28pLHdlJiYoY28uanNEb2NEaWFnbm9zdGljcz1lLmF0dGFjaEZpbGVUb0RpYWdub3N0aWNzKHdlLGNvKSk7dmFyIHRzPWNvO3JldHVybiB5cigpLHRzfWQucGFyc2VKc29uVGV4dD1HZTtmdW5jdGlvbiB1cihMZSxOcixyaSxkaSxNaSl7c3dpdGNoKGc9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0Tm9kZUNvbnN0cnVjdG9yKCksbmU9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0VG9rZW5Db25zdHJ1Y3RvcigpLHVlPWUub2JqZWN0QWxsb2NhdG9yLmdldElkZW50aWZpZXJDb25zdHJ1Y3RvcigpLFdlPWUub2JqZWN0QWxsb2NhdG9yLmdldFByaXZhdGVJZGVudGlmaWVyQ29uc3RydWN0b3IoKSxGZT1lLm9iamVjdEFsbG9jYXRvci5nZXRTb3VyY2VGaWxlQ29uc3RydWN0b3IoKSxSZT1lLm5vcm1hbGl6ZVBhdGgoTGUpLEVlPU5yLEhlPXJpLGRlPWRpLHJyPU1pLEllPWUuZ2V0TGFuZ3VhZ2VWYXJpYW50KE1pKSxfZT1bXSxZZT0wLGVyPW5ldyBlLk1hcCxpcj1uZXcgZS5NYXAsQ3I9MCxBZT0wLHplPTAsTmU9ITAscnIpe2Nhc2UgMTpjYXNlIDI6RXI9MjYyMTQ0O2JyZWFrO2Nhc2UgNjpFcj02NzM3MTAwODticmVhaztkZWZhdWx0OkVyPTA7YnJlYWt9bj0hMSxELnNldFRleHQoRWUpLEQuc2V0T25FcnJvcihQZSksRC5zZXRTY3JpcHRUYXJnZXQoSGUpLEQuc2V0TGFuZ3VhZ2VWYXJpYW50KEllKX1mdW5jdGlvbiB5cigpe0QuY2xlYXJDb21tZW50RGlyZWN0aXZlcygpLEQuc2V0VGV4dChcIlwiKSxELnNldE9uRXJyb3Iodm9pZCAwKSxFZT12b2lkIDAsSGU9dm9pZCAwLGRlPXZvaWQgMCxycj12b2lkIDAsSWU9dm9pZCAwLHplPTAsX2U9dm9pZCAwLHdlPXZvaWQgMCxZZT0wLGVyPXZvaWQgMCxCcj12b2lkIDAsTmU9ITB9ZnVuY3Rpb24gSXIoTGUsTnIscmksZGkpe3ZhciBNaT1BKFJlKTtNaSYmKEVyfD0xNjc3NzIxNiksemU9RXIsVHIoKTt2YXIgc3Q9UWkoMCxuYyk7ZS5EZWJ1Zy5hc3NlcnQoRGUoKT09PTEpO3ZhciByYT1paShhaSgpKSxUYT1vcihSZSxMZSxyaSxNaSxzdCxyYSx6ZSxkaSk7cmV0dXJuIFYoVGEsRWUpLEwoVGEsaGEpLFRhLmNvbW1lbnREaXJlY3RpdmVzPUQuZ2V0Q29tbWVudERpcmVjdGl2ZXMoKSxUYS5ub2RlQ291bnQ9QWUsVGEuaWRlbnRpZmllckNvdW50PUNyLFRhLmlkZW50aWZpZXJzPWVyLFRhLnBhcnNlRGlhZ25vc3RpY3M9ZS5hdHRhY2hGaWxlVG9EaWFnbm9zdGljcyhfZSxUYSksd2UmJihUYS5qc0RvY0RpYWdub3N0aWNzPWUuYXR0YWNoRmlsZVRvRGlhZ25vc3RpY3Mod2UsVGEpKSxOciYmcGUoVGEpLFRhO2Z1bmN0aW9uIGhhKE5hLEluLHFvKXtfZS5wdXNoKGUuY3JlYXRlRGV0YWNoZWREaWFnbm9zdGljKFJlLE5hLEluLHFvKSl9fWZ1bmN0aW9uIHdyKExlLE5yKXtyZXR1cm4gTnI/aWkoTGUpOkxlfXZhciBVcj0hMTtmdW5jdGlvbiBpaShMZSl7ZS5EZWJ1Zy5hc3NlcnQoIUxlLmpzRG9jKTt2YXIgTnI9ZS5tYXBEZWZpbmVkKGUuZ2V0SlNEb2NDb21tZW50UmFuZ2VzKExlLEVlKSxmdW5jdGlvbihyaSl7cmV0dXJuIEdfLnBhcnNlSlNEb2NDb21tZW50KExlLHJpLnBvcyxyaS5lbmQtcmkucG9zKX0pO3JldHVybiBOci5sZW5ndGgmJihMZS5qc0RvYz1OciksVXImJihVcj0hMSxMZS5mbGFnc3w9MjY4NDM1NDU2KSxMZX1mdW5jdGlvbiBtaShMZSl7dmFyIE5yPWRlLHJpPSQuY3JlYXRlU3ludGF4Q3Vyc29yKExlKTtkZT17Y3VycmVudE5vZGU6dHN9O3ZhciBkaT1bXSxNaT1fZTtfZT1bXTtmb3IodmFyIHN0PTAscmE9cW8oTGUuc3RhdGVtZW50cywwKSxUYT1mdW5jdGlvbigpe3ZhciB2cz1MZS5zdGF0ZW1lbnRzW3N0XSxBYz1MZS5zdGF0ZW1lbnRzW3JhXTtlLmFkZFJhbmdlKGRpLExlLnN0YXRlbWVudHMsc3QscmEpLHN0PWNvKExlLnN0YXRlbWVudHMscmEpO3ZhciBJcz1lLmZpbmRJbmRleChNaSxmdW5jdGlvbihzYyl7cmV0dXJuIHNjLnN0YXJ0Pj12cy5wb3N9KSxRdT1Jcz49MD9lLmZpbmRJbmRleChNaSxmdW5jdGlvbihzYyl7cmV0dXJuIHNjLnN0YXJ0Pj1BYy5wb3N9LElzKTotMTtJcz49MCYmZS5hZGRSYW5nZShfZSxNaSxJcyxRdT49MD9RdTp2b2lkIDApLER0KGZ1bmN0aW9uKCl7dmFyIHNjPUVyO2ZvcihFcnw9MzI3NjgsRC5zZXRUZXh0UG9zKEFjLnBvcyksVHIoKTtEZSgpIT09MTspe3ZhciBiYz1ELmdldFN0YXJ0UG9zKCksTWM9Q3QoMCxuYyk7aWYoZGkucHVzaChNYyksYmM9PT1ELmdldFN0YXJ0UG9zKCkmJlRyKCksc3Q+PTApe3ZhciBZdT1MZS5zdGF0ZW1lbnRzW3N0XTtpZihNYy5lbmQ9PT1ZdS5wb3MpYnJlYWs7TWMuZW5kPll1LnBvcyYmKHN0PWNvKExlLnN0YXRlbWVudHMsc3QrMSkpfX1Fcj1zY30sMikscmE9c3Q+PTA/cW8oTGUuc3RhdGVtZW50cyxzdCk6LTF9O3JhIT09LTE7KVRhKCk7aWYoc3Q+PTApe3ZhciBoYT1MZS5zdGF0ZW1lbnRzW3N0XTtlLmFkZFJhbmdlKGRpLExlLnN0YXRlbWVudHMsc3QpO3ZhciBOYT1lLmZpbmRJbmRleChNaSxmdW5jdGlvbih2cyl7cmV0dXJuIHZzLnN0YXJ0Pj1oYS5wb3N9KTtOYT49MCYmZS5hZGRSYW5nZShfZSxNaSxOYSl9cmV0dXJuIGRlPU5yLGdlLnVwZGF0ZVNvdXJjZUZpbGUoTGUsZS5zZXRUZXh0UmFuZ2UoZ2UuY3JlYXRlTm9kZUFycmF5KGRpKSxMZS5zdGF0ZW1lbnRzKSk7ZnVuY3Rpb24gSW4odnMpe3JldHVybiEodnMuZmxhZ3MmMzI3NjgpJiYhISh2cy50cmFuc2Zvcm1GbGFncyYxNjc3NzIxNil9ZnVuY3Rpb24gcW8odnMsQWMpe2Zvcih2YXIgSXM9QWM7SXM8dnMubGVuZ3RoO0lzKyspaWYoSW4odnNbSXNdKSlyZXR1cm4gSXM7cmV0dXJuLTF9ZnVuY3Rpb24gY28odnMsQWMpe2Zvcih2YXIgSXM9QWM7SXM8dnMubGVuZ3RoO0lzKyspaWYoIUluKHZzW0lzXSkpcmV0dXJuIElzO3JldHVybi0xfWZ1bmN0aW9uIHRzKHZzKXt2YXIgQWM9cmkuY3VycmVudE5vZGUodnMpO3JldHVybiBOZSYmQWMmJkluKEFjKSYmKEFjLmludGVyc2VjdHNDaGFuZ2U9ITApLEFjfX1mdW5jdGlvbiBwZShMZSl7ZS5zZXRQYXJlbnRSZWN1cnNpdmUoTGUsITApfWQuZml4dXBQYXJlbnRSZWZlcmVuY2VzPXBlO2Z1bmN0aW9uIG9yKExlLE5yLHJpLGRpLE1pLHN0LHJhLFRhKXt2YXIgaGE9Z2UuY3JlYXRlU291cmNlRmlsZShNaSxzdCxyYSk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlUG9zV2lkdGgoaGEsMCxFZS5sZW5ndGgpLE5hKGhhKSwhZGkmJmVlKGhhKSYmaGEudHJhbnNmb3JtRmxhZ3MmMTY3NzcyMTYmJihoYT1taShoYSksTmEoaGEpKSxoYTtmdW5jdGlvbiBOYShJbil7SW4udGV4dD1FZSxJbi5iaW5kRGlhZ25vc3RpY3M9W10sSW4uYmluZFN1Z2dlc3Rpb25EaWFnbm9zdGljcz12b2lkIDAsSW4ubGFuZ3VhZ2VWZXJzaW9uPU5yLEluLmZpbGVOYW1lPUxlLEluLmxhbmd1YWdlVmFyaWFudD1lLmdldExhbmd1YWdlVmFyaWFudChyaSksSW4uaXNEZWNsYXJhdGlvbkZpbGU9ZGksSW4uc2NyaXB0S2luZD1yaSxUYShJbiksSW4uc2V0RXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I9VGF9fWZ1bmN0aW9uIHFyKExlLE5yKXtMZT9Fcnw9TnI6RXImPX5Ocn1mdW5jdGlvbiBzaShMZSl7cXIoTGUsNDA5Nil9ZnVuY3Rpb24gRGkoTGUpe3FyKExlLDgxOTIpfWZ1bmN0aW9uIHdpKExlKXtxcihMZSwxNjM4NCl9ZnVuY3Rpb24gWGkoTGUpe3FyKExlLDMyNzY4KX1mdW5jdGlvbiBldChMZSxOcil7dmFyIHJpPUxlJkVyO2lmKHJpKXtxcighMSxyaSk7dmFyIGRpPU5yKCk7cmV0dXJuIHFyKCEwLHJpKSxkaX1yZXR1cm4gTnIoKX1mdW5jdGlvbiBHaShMZSxOcil7dmFyIHJpPUxlJn5FcjtpZihyaSl7cXIoITAscmkpO3ZhciBkaT1OcigpO3JldHVybiBxcighMSxyaSksZGl9cmV0dXJuIE5yKCl9ZnVuY3Rpb24gV3QoTGUpe3JldHVybiBldCg0MDk2LExlKX1mdW5jdGlvbiBadChMZSl7cmV0dXJuIEdpKDQwOTYsTGUpfWZ1bmN0aW9uIF9yKExlKXtyZXR1cm4gZXQoNjU1MzYsTGUpfWZ1bmN0aW9uIHBpKExlKXtyZXR1cm4gR2koNjU1MzYsTGUpfWZ1bmN0aW9uIGFlKExlKXtyZXR1cm4gR2koODE5MixMZSl9ZnVuY3Rpb24gWGUoTGUpe3JldHVybiBHaSgxNjM4NCxMZSl9ZnVuY3Rpb24gSnIoTGUpe3JldHVybiBHaSgzMjc2OCxMZSl9ZnVuY3Rpb24gdGkoTGUpe3JldHVybiBldCgzMjc2OCxMZSl9ZnVuY3Rpb24gWmUoTGUpe3JldHVybiBHaSg0MDk2MCxMZSl9ZnVuY3Rpb24gU3IoTGUpe3JldHVybiBldCg0MDk2MCxMZSl9ZnVuY3Rpb24genIoTGUpe3JldHVybihFciZMZSkhPT0wfWZ1bmN0aW9uIFdyKCl7cmV0dXJuIHpyKDgxOTIpfWZ1bmN0aW9uIEplKCl7cmV0dXJuIHpyKDQwOTYpfWZ1bmN0aW9uIHhlKCl7cmV0dXJuIHpyKDY1NTM2KX1mdW5jdGlvbiB2cigpe3JldHVybiB6cigxNjM4NCl9ZnVuY3Rpb24gbXIoKXtyZXR1cm4genIoMzI3NjgpfWZ1bmN0aW9uIEFyKExlLE5yKXtyZXR1cm4gbnIoRC5nZXRUb2tlblBvcygpLEQuZ2V0VGV4dFBvcygpLExlLE5yKX1mdW5jdGlvbiBPZShMZSxOcixyaSxkaSl7dmFyIE1pPWUubGFzdE9yVW5kZWZpbmVkKF9lKSxzdDtyZXR1cm4oIU1pfHxMZSE9PU1pLnN0YXJ0KSYmKHN0PWUuY3JlYXRlRGV0YWNoZWREaWFnbm9zdGljKFJlLExlLE5yLHJpLGRpKSxfZS5wdXNoKHN0KSksbj0hMCxzdH1mdW5jdGlvbiBucihMZSxOcixyaSxkaSl7cmV0dXJuIE9lKExlLE5yLUxlLHJpLGRpKX1mdW5jdGlvbiBNcihMZSxOcixyaSl7bnIoTGUucG9zLExlLmVuZCxOcixyaSl9ZnVuY3Rpb24gUGUoTGUsTnIpe09lKEQuZ2V0VGV4dFBvcygpLE5yLExlKX1mdW5jdGlvbiBVZSgpe3JldHVybiBELmdldFN0YXJ0UG9zKCl9ZnVuY3Rpb24gZnIoKXtyZXR1cm4gRC5oYXNQcmVjZWRpbmdKU0RvY0NvbW1lbnQoKX1mdW5jdGlvbiBEZSgpe3JldHVybiB5ZX1mdW5jdGlvbiBncigpe3JldHVybiB5ZT1ELnNjYW4oKX1mdW5jdGlvbiBWcihMZSl7cmV0dXJuIFRyKCksTGUoKX1mdW5jdGlvbiBUcigpe3JldHVybiBlLmlzS2V5d29yZCh5ZSkmJihELmhhc1VuaWNvZGVFc2NhcGUoKXx8RC5oYXNFeHRlbmRlZFVuaWNvZGVFc2NhcGUoKSkmJm5yKEQuZ2V0VG9rZW5Qb3MoKSxELmdldFRleHRQb3MoKSxlLkRpYWdub3N0aWNzLktleXdvcmRzX2Nhbm5vdF9jb250YWluX2VzY2FwZV9jaGFyYWN0ZXJzKSxncigpfWZ1bmN0aW9uIHZpKCl7cmV0dXJuIHllPUQuc2NhbkpzRG9jVG9rZW4oKX1mdW5jdGlvbiBVaSgpe3JldHVybiB5ZT1ELnJlU2NhbkdyZWF0ZXJUb2tlbigpfWZ1bmN0aW9uIFlpKCl7cmV0dXJuIHllPUQucmVTY2FuU2xhc2hUb2tlbigpfWZ1bmN0aW9uIFdpKExlKXtyZXR1cm4geWU9RC5yZVNjYW5UZW1wbGF0ZVRva2VuKExlKX1mdW5jdGlvbiBjdCgpe3JldHVybiB5ZT1ELnJlU2NhblRlbXBsYXRlSGVhZE9yTm9TdWJzdGl0dXRpb25UZW1wbGF0ZSgpfWZ1bmN0aW9uIExpKCl7cmV0dXJuIHllPUQucmVTY2FuTGVzc1RoYW5Ub2tlbigpfWZ1bmN0aW9uIG50KCl7cmV0dXJuIHllPUQucmVTY2FuSGFzaFRva2VuKCl9ZnVuY3Rpb24gTXQoKXtyZXR1cm4geWU9RC5zY2FuSnN4SWRlbnRpZmllcigpfWZ1bmN0aW9uIHh0KCl7cmV0dXJuIHllPUQuc2NhbkpzeFRva2VuKCl9ZnVuY3Rpb24gdXQoKXtyZXR1cm4geWU9RC5zY2FuSnN4QXR0cmlidXRlVmFsdWUoKX1mdW5jdGlvbiBEdChMZSxOcil7dmFyIHJpPXllLGRpPV9lLmxlbmd0aCxNaT1uLHN0PUVyLHJhPU5yIT09MD9ELmxvb2tBaGVhZChMZSk6RC50cnlTY2FuKExlKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoc3Q9PT1FciksKCFyYXx8TnIhPT0wKSYmKHllPXJpLE5yIT09MiYmKF9lLmxlbmd0aD1kaSksbj1NaSkscmF9ZnVuY3Rpb24gUnQoTGUpe3JldHVybiBEdChMZSwxKX1mdW5jdGlvbiBJaShMZSl7cmV0dXJuIER0KExlLDApfWZ1bmN0aW9uIEtpKCl7cmV0dXJuIERlKCk9PT03OT8hMDpEZSgpPjExNn1mdW5jdGlvbiBGaSgpe3JldHVybiBEZSgpPT09Nzk/ITA6RGUoKT09PTEyNSYmV3IoKXx8RGUoKT09PTEzMiYmbXIoKT8hMTpEZSgpPjExNn1mdW5jdGlvbiB1aShMZSxOcixyaSl7cmV0dXJuIHJpPT09dm9pZCAwJiYocmk9ITApLERlKCk9PT1MZT8ocmkmJlRyKCksITApOihOcj9BcihOcik6QXIoZS5EaWFnbm9zdGljcy5fMF9leHBlY3RlZCxlLnRva2VuVG9TdHJpbmcoTGUpKSwhMSl9dmFyIEJ0PU9iamVjdC5rZXlzKGUudGV4dFRvS2V5d29yZE9iaikuZmlsdGVyKGZ1bmN0aW9uKExlKXtyZXR1cm4gTGUubGVuZ3RoPjJ9KTtmdW5jdGlvbiB3dChMZSl7dmFyIE5yO2lmKGUuaXNUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oTGUpKXtucihlLnNraXBUcml2aWEoRWUsTGUudGVtcGxhdGUucG9zKSxMZS50ZW1wbGF0ZS5lbmQsZS5EaWFnbm9zdGljcy5Nb2R1bGVfZGVjbGFyYXRpb25fbmFtZXNfbWF5X29ubHlfdXNlX29yX3F1b3RlZF9zdHJpbmdzKTtyZXR1cm59dmFyIHJpPWUuaXNJZGVudGlmaWVyKExlKT9lLmlkVGV4dChMZSk6dm9pZCAwO2lmKCFyaXx8IWUuaXNJZGVudGlmaWVyVGV4dChyaSxIZSkpe0FyKGUuRGlhZ25vc3RpY3MuXzBfZXhwZWN0ZWQsZS50b2tlblRvU3RyaW5nKDI2KSk7cmV0dXJufXZhciBkaT1lLnNraXBUcml2aWEoRWUsTGUucG9zKTtzd2l0Y2gocmkpe2Nhc2VcImNvbnN0XCI6Y2FzZVwibGV0XCI6Y2FzZVwidmFyXCI6bnIoZGksTGUuZW5kLGUuRGlhZ25vc3RpY3MuVmFyaWFibGVfZGVjbGFyYXRpb25fbm90X2FsbG93ZWRfYXRfdGhpc19sb2NhdGlvbik7cmV0dXJuO2Nhc2VcImRlY2xhcmVcIjpyZXR1cm47Y2FzZVwiaW50ZXJmYWNlXCI6bmEoZS5EaWFnbm9zdGljcy5JbnRlcmZhY2VfbmFtZV9jYW5ub3RfYmVfMCxlLkRpYWdub3N0aWNzLkludGVyZmFjZV9tdXN0X2JlX2dpdmVuX2FfbmFtZSwxOCk7cmV0dXJuO2Nhc2VcImlzXCI6bnIoZGksRC5nZXRUZXh0UG9zKCksZS5EaWFnbm9zdGljcy5BX3R5cGVfcHJlZGljYXRlX2lzX29ubHlfYWxsb3dlZF9pbl9yZXR1cm5fdHlwZV9wb3NpdGlvbl9mb3JfZnVuY3Rpb25zX2FuZF9tZXRob2RzKTtyZXR1cm47Y2FzZVwibW9kdWxlXCI6Y2FzZVwibmFtZXNwYWNlXCI6bmEoZS5EaWFnbm9zdGljcy5OYW1lc3BhY2VfbmFtZV9jYW5ub3RfYmVfMCxlLkRpYWdub3N0aWNzLk5hbWVzcGFjZV9tdXN0X2JlX2dpdmVuX2FfbmFtZSwxOCk7cmV0dXJuO2Nhc2VcInR5cGVcIjpuYShlLkRpYWdub3N0aWNzLlR5cGVfYWxpYXNfbmFtZV9jYW5ub3RfYmVfMCxlLkRpYWdub3N0aWNzLlR5cGVfYWxpYXNfbXVzdF9iZV9naXZlbl9hX25hbWUsNjMpO3JldHVybn12YXIgTWk9KE5yPWUuZ2V0U3BlbGxpbmdTdWdnZXN0aW9uKHJpLEJ0LGZ1bmN0aW9uKHN0KXtyZXR1cm4gc3R9KSkhPT1udWxsJiZOciE9PXZvaWQgMD9OcjpBaShyaSk7aWYoTWkpe25yKGRpLExlLmVuZCxlLkRpYWdub3N0aWNzLlVua25vd25fa2V5d29yZF9vcl9pZGVudGlmaWVyX0RpZF95b3VfbWVhbl8wLE1pKTtyZXR1cm59RGUoKSE9PTAmJm5yKGRpLExlLmVuZCxlLkRpYWdub3N0aWNzLlVuZXhwZWN0ZWRfa2V5d29yZF9vcl9pZGVudGlmaWVyKX1mdW5jdGlvbiBuYShMZSxOcixyaSl7RGUoKT09PXJpP0FyKE5yKTpBcihMZSxELmdldFRva2VuVmFsdWUoKSl9ZnVuY3Rpb24gQWkoTGUpe2Zvcih2YXIgTnI9MCxyaT1CdDtOcjxyaS5sZW5ndGg7TnIrKyl7dmFyIGRpPXJpW05yXTtpZihMZS5sZW5ndGg+ZGkubGVuZ3RoKzImJmUuc3RhcnRzV2l0aChMZSxkaSkpcmV0dXJuXCJcIi5jb25jYXQoZGksXCIgXCIpLmNvbmNhdChMZS5zbGljZShkaS5sZW5ndGgpKX19ZnVuY3Rpb24gT2koTGUsTnIscmkpe2lmKERlKCk9PT01OSYmIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkpe0FyKGUuRGlhZ25vc3RpY3MuRGVjb3JhdG9yc19tdXN0X3ByZWNlZGVfdGhlX25hbWVfYW5kX2FsbF9rZXl3b3Jkc19vZl9wcm9wZXJ0eV9kZWNsYXJhdGlvbnMpO3JldHVybn1pZihEZSgpPT09MjApe0FyKGUuRGlhZ25vc3RpY3MuQ2Fubm90X3N0YXJ0X2FfZnVuY3Rpb25fY2FsbF9pbl9hX3R5cGVfYW5ub3RhdGlvbiksVHIoKTtyZXR1cm59aWYoTnImJiFrYSgpKXtyaT9BcihlLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLGUudG9rZW5Ub1N0cmluZygyNikpOkFyKGUuRGlhZ25vc3RpY3MuRXhwZWN0ZWRfZm9yX3Byb3BlcnR5X2luaXRpYWxpemVyKTtyZXR1cm59aWYoIUJhKCkpe2lmKHJpKXtBcihlLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLGUudG9rZW5Ub1N0cmluZygyNikpO3JldHVybn13dChMZSl9fWZ1bmN0aW9uIGppKExlKXtyZXR1cm4gRGUoKT09PUxlPyh2aSgpLCEwKTooQXIoZS5EaWFnbm9zdGljcy5fMF9leHBlY3RlZCxlLnRva2VuVG9TdHJpbmcoTGUpKSwhMSl9ZnVuY3Rpb24gVmkoTGUsTnIscmksZGkpe2lmKERlKCk9PT1Ocil7VHIoKTtyZXR1cm59dmFyIE1pPUFyKGUuRGlhZ25vc3RpY3MuXzBfZXhwZWN0ZWQsZS50b2tlblRvU3RyaW5nKE5yKSk7IXJpfHxNaSYmZS5hZGRSZWxhdGVkSW5mbyhNaSxlLmNyZWF0ZURldGFjaGVkRGlhZ25vc3RpYyhSZSxkaSwxLGUuRGlhZ25vc3RpY3MuVGhlX3BhcnNlcl9leHBlY3RlZF90b19maW5kX2FfMV90b19tYXRjaF90aGVfMF90b2tlbl9oZXJlLGUudG9rZW5Ub1N0cmluZyhMZSksZS50b2tlblRvU3RyaW5nKE5yKSkpfWZ1bmN0aW9uIGF0KExlKXtyZXR1cm4gRGUoKT09PUxlPyhUcigpLCEwKTohMX1mdW5jdGlvbiBBdChMZSl7aWYoRGUoKT09PUxlKXJldHVybiBhaSgpfWZ1bmN0aW9uIGJhKExlKXtpZihEZSgpPT09TGUpcmV0dXJuIERuKCl9ZnVuY3Rpb24gJGEoTGUsTnIscmkpe3JldHVybiBBdChMZSl8fGtuKExlLCExLE5yfHxlLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLHJpfHxlLnRva2VuVG9TdHJpbmcoTGUpKX1mdW5jdGlvbiBRYShMZSl7cmV0dXJuIGJhKExlKXx8a24oTGUsITEsZS5EaWFnbm9zdGljcy5fMF9leHBlY3RlZCxlLnRva2VuVG9TdHJpbmcoTGUpKX1mdW5jdGlvbiBhaSgpe3ZhciBMZT1VZSgpLE5yPURlKCk7cmV0dXJuIFRyKCksQmkoZ2UuY3JlYXRlVG9rZW4oTnIpLExlKX1mdW5jdGlvbiBEbigpe3ZhciBMZT1VZSgpLE5yPURlKCk7cmV0dXJuIHZpKCksQmkoZ2UuY3JlYXRlVG9rZW4oTnIpLExlKX1mdW5jdGlvbiBrYSgpe3JldHVybiBEZSgpPT09MjY/ITA6RGUoKT09PTE5fHxEZSgpPT09MXx8RC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKX1mdW5jdGlvbiBCYSgpe3JldHVybiBrYSgpPyhEZSgpPT09MjYmJlRyKCksITApOiExfWZ1bmN0aW9uIHBuKCl7cmV0dXJuIEJhKCl8fHVpKDI2KX1mdW5jdGlvbiBDbihMZSxOcixyaSxkaSl7dmFyIE1pPWdlLmNyZWF0ZU5vZGVBcnJheShMZSxkaSk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlUG9zRW5kKE1pLE5yLHJpIT1udWxsP3JpOkQuZ2V0U3RhcnRQb3MoKSksTWl9ZnVuY3Rpb24gQmkoTGUsTnIscmkpe3JldHVybiBlLnNldFRleHRSYW5nZVBvc0VuZChMZSxOcixyaSE9bnVsbD9yaTpELmdldFN0YXJ0UG9zKCkpLEVyJiYoTGUuZmxhZ3N8PUVyKSxuJiYobj0hMSxMZS5mbGFnc3w9MTMxMDcyKSxMZX1mdW5jdGlvbiBrbihMZSxOcixyaSxkaSl7TnI/T2UoRC5nZXRTdGFydFBvcygpLDAscmksZGkpOnJpJiZBcihyaSxkaSk7dmFyIE1pPVVlKCksc3Q9TGU9PT03OT9nZS5jcmVhdGVJZGVudGlmaWVyKFwiXCIsdm9pZCAwLHZvaWQgMCk6ZS5pc1RlbXBsYXRlTGl0ZXJhbEtpbmQoTGUpP2dlLmNyZWF0ZVRlbXBsYXRlTGl0ZXJhbExpa2VOb2RlKExlLFwiXCIsXCJcIix2b2lkIDApOkxlPT09OD9nZS5jcmVhdGVOdW1lcmljTGl0ZXJhbChcIlwiLHZvaWQgMCk6TGU9PT0xMD9nZS5jcmVhdGVTdHJpbmdMaXRlcmFsKFwiXCIsdm9pZCAwKTpMZT09PTI3Nj9nZS5jcmVhdGVNaXNzaW5nRGVjbGFyYXRpb24oKTpnZS5jcmVhdGVUb2tlbihMZSk7cmV0dXJuIEJpKHN0LE1pKX1mdW5jdGlvbiB4bihMZSl7dmFyIE5yPWVyLmdldChMZSk7cmV0dXJuIE5yPT09dm9pZCAwJiZlci5zZXQoTGUsTnI9TGUpLE5yfWZ1bmN0aW9uIEtuKExlLE5yLHJpKXtpZihMZSl7Q3IrKzt2YXIgZGk9VWUoKSxNaT1EZSgpLHN0PXhuKEQuZ2V0VG9rZW5WYWx1ZSgpKTtyZXR1cm4gZ3IoKSxCaShnZS5jcmVhdGVJZGVudGlmaWVyKHN0LHZvaWQgMCxNaSksZGkpfWlmKERlKCk9PT04MClyZXR1cm4gQXIocml8fGUuRGlhZ25vc3RpY3MuUHJpdmF0ZV9pZGVudGlmaWVyc19hcmVfbm90X2FsbG93ZWRfb3V0c2lkZV9jbGFzc19ib2RpZXMpLEtuKCEwKTtpZihEZSgpPT09MCYmRC50cnlTY2FuKGZ1bmN0aW9uKCl7cmV0dXJuIEQucmVTY2FuSW52YWxpZElkZW50aWZpZXIoKT09PTc5fSkpcmV0dXJuIEtuKCEwKTtDcisrO3ZhciByYT1EZSgpPT09MSxUYT1ELmlzUmVzZXJ2ZWRXb3JkKCksaGE9RC5nZXRUb2tlblRleHQoKSxOYT1UYT9lLkRpYWdub3N0aWNzLklkZW50aWZpZXJfZXhwZWN0ZWRfMF9pc19hX3Jlc2VydmVkX3dvcmRfdGhhdF9jYW5ub3RfYmVfdXNlZF9oZXJlOmUuRGlhZ25vc3RpY3MuSWRlbnRpZmllcl9leHBlY3RlZDtyZXR1cm4ga24oNzkscmEsTnJ8fE5hLGhhKX1mdW5jdGlvbiBQbihMZSl7cmV0dXJuIEtuKEtpKCksdm9pZCAwLExlKX1mdW5jdGlvbiBlbyhMZSxOcil7cmV0dXJuIEtuKEZpKCksTGUsTnIpfWZ1bmN0aW9uIFJuKExlKXtyZXR1cm4gS24oZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZChEZSgpKSxMZSl9ZnVuY3Rpb24gRGEoKXtyZXR1cm4gZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZChEZSgpKXx8RGUoKT09PTEwfHxEZSgpPT09OH1mdW5jdGlvbiBibygpe3JldHVybiBlLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpfHxEZSgpPT09MTB9ZnVuY3Rpb24gUm8oTGUpe2lmKERlKCk9PT0xMHx8RGUoKT09PTgpe3ZhciBOcj1nYSgpO3JldHVybiBOci50ZXh0PXhuKE5yLnRleHQpLE5yfXJldHVybiBMZSYmRGUoKT09PTIyP1duKCk6RGUoKT09PTgwP0NvKCk6Um4oKX1mdW5jdGlvbiBFbigpe3JldHVybiBSbyghMCl9ZnVuY3Rpb24gV24oKXt2YXIgTGU9VWUoKTt1aSgyMik7dmFyIE5yPVd0KG5zKTtyZXR1cm4gdWkoMjMpLEJpKGdlLmNyZWF0ZUNvbXB1dGVkUHJvcGVydHlOYW1lKE5yKSxMZSl9ZnVuY3Rpb24gdG8oTGUpe3ZhciBOcj1pci5nZXQoTGUpO3JldHVybiBOcj09PXZvaWQgMCYmaXIuc2V0KExlLE5yPUxlKSxOcn1mdW5jdGlvbiBDbygpe3ZhciBMZT1VZSgpLE5yPWdlLmNyZWF0ZVByaXZhdGVJZGVudGlmaWVyKHRvKEQuZ2V0VG9rZW5UZXh0KCkpKTtyZXR1cm4gVHIoKSxCaShOcixMZSl9ZnVuY3Rpb24gS28oTGUpe3JldHVybiBEZSgpPT09TGUmJklpKG5vKX1mdW5jdGlvbiBPbygpe3JldHVybiBUcigpLEQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCk/ITE6U3QoKX1mdW5jdGlvbiBubygpe3N3aXRjaChEZSgpKXtjYXNlIDg1OnJldHVybiBUcigpPT09OTI7Y2FzZSA5MzpyZXR1cm4gVHIoKSxEZSgpPT09ODg/UnQocGEpOkRlKCk9PT0xNTI/UnQoUHIpOiRvKCk7Y2FzZSA4ODpyZXR1cm4gcGEoKTtjYXNlIDEyNDpjYXNlIDEzNjpjYXNlIDE0OTpyZXR1cm4gVHIoKSxTdCgpO2RlZmF1bHQ6cmV0dXJuIE9vKCl9fWZ1bmN0aW9uICRvKCl7cmV0dXJuIERlKCkhPT00MSYmRGUoKSE9PTEyNyYmRGUoKSE9PTE4JiZTdCgpfWZ1bmN0aW9uIFByKCl7cmV0dXJuIFRyKCksJG8oKX1mdW5jdGlvbiB4aSgpe3JldHVybiBlLmlzTW9kaWZpZXJLaW5kKERlKCkpJiZJaShubyl9ZnVuY3Rpb24gU3QoKXtyZXR1cm4gRGUoKT09PTIyfHxEZSgpPT09MTh8fERlKCk9PT00MXx8RGUoKT09PTI1fHxEYSgpfWZ1bmN0aW9uIHBhKCl7cmV0dXJuIFRyKCksRGUoKT09PTg0fHxEZSgpPT09OTh8fERlKCk9PT0xMTh8fERlKCk9PT0xMjYmJlJ0KHdsKXx8RGUoKT09PTEzMSYmUnQoSXUpfWZ1bmN0aW9uIGRuKExlLE5yKXt2YXIgcmk9c2EoTGUpO2lmKHJpKXJldHVybiEwO3N3aXRjaChMZSl7Y2FzZSAwOmNhc2UgMTpjYXNlIDM6cmV0dXJuIShEZSgpPT09MjYmJk5yKSYmS3UoKTtjYXNlIDI6cmV0dXJuIERlKCk9PT04Mnx8RGUoKT09PTg4O2Nhc2UgNDpyZXR1cm4gUnQoYm4pO2Nhc2UgNTpyZXR1cm4gUnQoTHApfHxEZSgpPT09MjYmJiFOcjtjYXNlIDY6cmV0dXJuIERlKCk9PT0yMnx8RGEoKTtjYXNlIDEyOnN3aXRjaChEZSgpKXtjYXNlIDIyOmNhc2UgNDE6Y2FzZSAyNTpjYXNlIDI0OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuIERhKCl9Y2FzZSAxODpyZXR1cm4gRGEoKTtjYXNlIDk6cmV0dXJuIERlKCk9PT0yMnx8RGUoKT09PTI1fHxEYSgpO2Nhc2UgMjQ6cmV0dXJuIGJvKCk7Y2FzZSA3OnJldHVybiBEZSgpPT09MTg/UnQoSm4pOk5yP0ZpKCkmJiFDZSgpOkN1KCkmJiFDZSgpO2Nhc2UgODpyZXR1cm4gSGMoKTtjYXNlIDEwOnJldHVybiBEZSgpPT09Mjd8fERlKCk9PT0yNXx8SGMoKTtjYXNlIDE5OnJldHVybiBEZSgpPT09MTAxfHxGaSgpO2Nhc2UgMTU6c3dpdGNoKERlKCkpe2Nhc2UgMjc6Y2FzZSAyNDpyZXR1cm4hMH1jYXNlIDExOnJldHVybiBEZSgpPT09MjV8fHFzKCk7Y2FzZSAxNjpyZXR1cm4gcHUoITEpO2Nhc2UgMTc6cmV0dXJuIHB1KCEwKTtjYXNlIDIwOmNhc2UgMjE6cmV0dXJuIERlKCk9PT0yN3x8WHIoKTtjYXNlIDIyOnJldHVybiBMbCgpO2Nhc2UgMjM6cmV0dXJuIGUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSk7Y2FzZSAxMzpyZXR1cm4gZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZChEZSgpKXx8RGUoKT09PTE4O2Nhc2UgMTQ6cmV0dXJuITB9cmV0dXJuIGUuRGVidWcuZmFpbChcIk5vbi1leGhhdXN0aXZlIGNhc2UgaW4gJ2lzTGlzdEVsZW1lbnQnLlwiKX1mdW5jdGlvbiBKbigpe2lmKGUuRGVidWcuYXNzZXJ0KERlKCk9PT0xOCksVHIoKT09PTE5KXt2YXIgTGU9VHIoKTtyZXR1cm4gTGU9PT0yN3x8TGU9PT0xOHx8TGU9PT05NHx8TGU9PT0xMTd9cmV0dXJuITB9ZnVuY3Rpb24gUWUoKXtyZXR1cm4gVHIoKSxGaSgpfWZ1bmN0aW9uIEdyKCl7cmV0dXJuIFRyKCksZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZChEZSgpKX1mdW5jdGlvbiBTKCl7cmV0dXJuIFRyKCksZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZE9yR3JlYXRlclRoYW4oRGUoKSl9ZnVuY3Rpb24gQ2UoKXtyZXR1cm4gRGUoKT09PTExN3x8RGUoKT09PTk0P1J0KHFlKTohMX1mdW5jdGlvbiBxZSgpe3JldHVybiBUcigpLHFzKCl9ZnVuY3Rpb24gYnIoKXtyZXR1cm4gVHIoKSxYcigpfWZ1bmN0aW9uIFpyKExlKXtpZihEZSgpPT09MSlyZXR1cm4hMDtzd2l0Y2goTGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAyMzpjYXNlIDI0OnJldHVybiBEZSgpPT09MTk7Y2FzZSAzOnJldHVybiBEZSgpPT09MTl8fERlKCk9PT04Mnx8RGUoKT09PTg4O2Nhc2UgNzpyZXR1cm4gRGUoKT09PTE4fHxEZSgpPT09OTR8fERlKCk9PT0xMTc7Y2FzZSA4OnJldHVybiBTaSgpO2Nhc2UgMTk6cmV0dXJuIERlKCk9PT0zMXx8RGUoKT09PTIwfHxEZSgpPT09MTh8fERlKCk9PT05NHx8RGUoKT09PTExNztjYXNlIDExOnJldHVybiBEZSgpPT09MjF8fERlKCk9PT0yNjtjYXNlIDE1OmNhc2UgMjE6Y2FzZSAxMDpyZXR1cm4gRGUoKT09PTIzO2Nhc2UgMTc6Y2FzZSAxNjpjYXNlIDE4OnJldHVybiBEZSgpPT09MjF8fERlKCk9PT0yMztjYXNlIDIwOnJldHVybiBEZSgpIT09Mjc7Y2FzZSAyMjpyZXR1cm4gRGUoKT09PTE4fHxEZSgpPT09MTk7Y2FzZSAxMzpyZXR1cm4gRGUoKT09PTMxfHxEZSgpPT09NDM7Y2FzZSAxNDpyZXR1cm4gRGUoKT09PTI5JiZSdChmaSk7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gU2koKXtyZXR1cm4hIShrYSgpfHxGXyhEZSgpKXx8RGUoKT09PTM4KX1mdW5jdGlvbiBQaSgpe2Zvcih2YXIgTGU9MDtMZTwyNTtMZSsrKWlmKFllJjE8PExlJiYoZG4oTGUsITApfHxacihMZSkpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFFpKExlLE5yKXt2YXIgcmk9WWU7WWV8PTE8PExlO2Zvcih2YXIgZGk9W10sTWk9VWUoKTshWnIoTGUpOyl7aWYoZG4oTGUsITEpKXtkaS5wdXNoKEN0KExlLE5yKSk7Y29udGludWV9aWYoWHMoTGUpKWJyZWFrfXJldHVybiBZZT1yaSxDbihkaSxNaSl9ZnVuY3Rpb24gQ3QoTGUsTnIpe3ZhciByaT1zYShMZSk7cmV0dXJuIHJpP2VuKHJpKTpOcigpfWZ1bmN0aW9uIHNhKExlKXtpZighKCFkZXx8IVdhKExlKXx8bikpe3ZhciBOcj1kZS5jdXJyZW50Tm9kZShELmdldFN0YXJ0UG9zKCkpO2lmKCEoZS5ub2RlSXNNaXNzaW5nKE5yKXx8TnIuaW50ZXJzZWN0c0NoYW5nZXx8ZS5jb250YWluc1BhcnNlRXJyb3IoTnIpKSl7dmFyIHJpPU5yLmZsYWdzJjUwNzIwNzY4O2lmKHJpPT09RXImJiEhcW4oTnIsTGUpKXJldHVybiBOci5qc0RvY0NhY2hlJiYoTnIuanNEb2NDYWNoZT12b2lkIDApLE5yfX19ZnVuY3Rpb24gZW4oTGUpe3JldHVybiBELnNldFRleHRQb3MoTGUuZW5kKSxUcigpLExlfWZ1bmN0aW9uIFdhKExlKXtzd2l0Y2goTGUpe2Nhc2UgNTpjYXNlIDI6Y2FzZSAwOmNhc2UgMTpjYXNlIDM6Y2FzZSA2OmNhc2UgNDpjYXNlIDg6Y2FzZSAxNzpjYXNlIDE2OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHFuKExlLE5yKXtzd2l0Y2goTnIpe2Nhc2UgNTpyZXR1cm4gbW8oTGUpO2Nhc2UgMjpyZXR1cm4gU28oTGUpO2Nhc2UgMDpjYXNlIDE6Y2FzZSAzOnJldHVybiBHbyhMZSk7Y2FzZSA2OnJldHVybiB5cyhMZSk7Y2FzZSA0OnJldHVybiBQYyhMZSk7Y2FzZSA4OnJldHVybiBWYyhMZSk7Y2FzZSAxNzpjYXNlIDE2OnJldHVybiBLYyhMZSl9cmV0dXJuITF9ZnVuY3Rpb24gbW8oTGUpe2lmKExlKXN3aXRjaChMZS5raW5kKXtjYXNlIDE3MTpjYXNlIDE3NjpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDE2NzpjYXNlIDIzNDpyZXR1cm4hMDtjYXNlIDE2OTp2YXIgTnI9TGUscmk9TnIubmFtZS5raW5kPT09NzkmJk5yLm5hbWUub3JpZ2luYWxLZXl3b3JkS2luZD09PTEzNDtyZXR1cm4hcml9cmV0dXJuITF9ZnVuY3Rpb24gU28oTGUpe2lmKExlKXN3aXRjaChMZS5raW5kKXtjYXNlIDI4OTpjYXNlIDI5MDpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBHbyhMZSl7aWYoTGUpc3dpdGNoKExlLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjM3OmNhc2UgMjM1OmNhc2UgMjM5OmNhc2UgMjM4OmNhc2UgMjUxOmNhc2UgMjQ3OmNhc2UgMjQ5OmNhc2UgMjQ2OmNhc2UgMjQ1OmNhc2UgMjQzOmNhc2UgMjQ0OmNhc2UgMjQyOmNhc2UgMjQxOmNhc2UgMjQ4OmNhc2UgMjM2OmNhc2UgMjUyOmNhc2UgMjUwOmNhc2UgMjQwOmNhc2UgMjUzOmNhc2UgMjY2OmNhc2UgMjY1OmNhc2UgMjcyOmNhc2UgMjcxOmNhc2UgMjYxOmNhc2UgMjU3OmNhc2UgMjU4OmNhc2UgMjYwOmNhc2UgMjU5OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHlzKExlKXtyZXR1cm4gTGUua2luZD09PTI5OX1mdW5jdGlvbiBQYyhMZSl7aWYoTGUpc3dpdGNoKExlLmtpbmQpe2Nhc2UgMTc1OmNhc2UgMTY4OmNhc2UgMTc2OmNhc2UgMTY2OmNhc2UgMTc0OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFZjKExlKXtpZihMZS5raW5kIT09MjU0KXJldHVybiExO3ZhciBOcj1MZTtyZXR1cm4gTnIuaW5pdGlhbGl6ZXI9PT12b2lkIDB9ZnVuY3Rpb24gS2MoTGUpe2lmKExlLmtpbmQhPT0xNjQpcmV0dXJuITE7dmFyIE5yPUxlO3JldHVybiBOci5pbml0aWFsaXplcj09PXZvaWQgMH1mdW5jdGlvbiBYcyhMZSl7cmV0dXJuIHBjKExlKSxQaSgpPyEwOihUcigpLCExKX1mdW5jdGlvbiBwYyhMZSl7c3dpdGNoKExlKXtjYXNlIDA6cmV0dXJuIERlKCk9PT04OD9BcihlLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLGUudG9rZW5Ub1N0cmluZyg5MykpOkFyKGUuRGlhZ25vc3RpY3MuRGVjbGFyYXRpb25fb3Jfc3RhdGVtZW50X2V4cGVjdGVkKTtjYXNlIDE6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuRGVjbGFyYXRpb25fb3Jfc3RhdGVtZW50X2V4cGVjdGVkKTtjYXNlIDI6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuY2FzZV9vcl9kZWZhdWx0X2V4cGVjdGVkKTtjYXNlIDM6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuU3RhdGVtZW50X2V4cGVjdGVkKTtjYXNlIDE4OmNhc2UgNDpyZXR1cm4gQXIoZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV9vcl9zaWduYXR1cmVfZXhwZWN0ZWQpO2Nhc2UgNTpyZXR1cm4gQXIoZS5EaWFnbm9zdGljcy5VbmV4cGVjdGVkX3Rva2VuX0FfY29uc3RydWN0b3JfbWV0aG9kX2FjY2Vzc29yX29yX3Byb3BlcnR5X3dhc19leHBlY3RlZCk7Y2FzZSA2OnJldHVybiBBcihlLkRpYWdub3N0aWNzLkVudW1fbWVtYmVyX2V4cGVjdGVkKTtjYXNlIDc6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuRXhwcmVzc2lvbl9leHBlY3RlZCk7Y2FzZSA4OnJldHVybiBlLmlzS2V5d29yZChEZSgpKT9BcihlLkRpYWdub3N0aWNzLl8wX2lzX25vdF9hbGxvd2VkX2FzX2FfdmFyaWFibGVfZGVjbGFyYXRpb25fbmFtZSxlLnRva2VuVG9TdHJpbmcoRGUoKSkpOkFyKGUuRGlhZ25vc3RpY3MuVmFyaWFibGVfZGVjbGFyYXRpb25fZXhwZWN0ZWQpO2Nhc2UgOTpyZXR1cm4gQXIoZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV9kZXN0cnVjdHVyaW5nX3BhdHRlcm5fZXhwZWN0ZWQpO2Nhc2UgMTA6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuQXJyYXlfZWxlbWVudF9kZXN0cnVjdHVyaW5nX3BhdHRlcm5fZXhwZWN0ZWQpO2Nhc2UgMTE6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuQXJndW1lbnRfZXhwcmVzc2lvbl9leHBlY3RlZCk7Y2FzZSAxMjpyZXR1cm4gQXIoZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV9hc3NpZ25tZW50X2V4cGVjdGVkKTtjYXNlIDE1OnJldHVybiBBcihlLkRpYWdub3N0aWNzLkV4cHJlc3Npb25fb3JfY29tbWFfZXhwZWN0ZWQpO2Nhc2UgMTc6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyX2RlY2xhcmF0aW9uX2V4cGVjdGVkKTtjYXNlIDE2OnJldHVybiBlLmlzS2V5d29yZChEZSgpKT9BcihlLkRpYWdub3N0aWNzLl8wX2lzX25vdF9hbGxvd2VkX2FzX2FfcGFyYW1ldGVyX25hbWUsZS50b2tlblRvU3RyaW5nKERlKCkpKTpBcihlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl9kZWNsYXJhdGlvbl9leHBlY3RlZCk7Y2FzZSAxOTpyZXR1cm4gQXIoZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcl9kZWNsYXJhdGlvbl9leHBlY3RlZCk7Y2FzZSAyMDpyZXR1cm4gQXIoZS5EaWFnbm9zdGljcy5UeXBlX2FyZ3VtZW50X2V4cGVjdGVkKTtjYXNlIDIxOnJldHVybiBBcihlLkRpYWdub3N0aWNzLlR5cGVfZXhwZWN0ZWQpO2Nhc2UgMjI6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuVW5leHBlY3RlZF90b2tlbl9leHBlY3RlZCk7Y2FzZSAyMzpyZXR1cm4gQXIoZS5EaWFnbm9zdGljcy5JZGVudGlmaWVyX2V4cGVjdGVkKTtjYXNlIDEzOnJldHVybiBBcihlLkRpYWdub3N0aWNzLklkZW50aWZpZXJfZXhwZWN0ZWQpO2Nhc2UgMTQ6cmV0dXJuIEFyKGUuRGlhZ25vc3RpY3MuSWRlbnRpZmllcl9leHBlY3RlZCk7ZGVmYXVsdDpyZXR1cm5bdm9pZCAwXX19ZnVuY3Rpb24gaHMoTGUsTnIscmkpe3ZhciBkaT1ZZTtZZXw9MTw8TGU7Zm9yKHZhciBNaT1bXSxzdD1VZSgpLHJhPS0xOzspe2lmKGRuKExlLCExKSl7dmFyIFRhPUQuZ2V0U3RhcnRQb3MoKSxoYT1DdChMZSxOcik7aWYoIWhhKXtZZT1kaTtyZXR1cm59aWYoTWkucHVzaChoYSkscmE9RC5nZXRUb2tlblBvcygpLGF0KDI3KSljb250aW51ZTtpZihyYT0tMSxacihMZSkpYnJlYWs7dWkoMjcsdGMoTGUpKSxyaSYmRGUoKT09PTI2JiYhRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSYmVHIoKSxUYT09PUQuZ2V0U3RhcnRQb3MoKSYmVHIoKTtjb250aW51ZX1pZihacihMZSl8fFhzKExlKSlicmVha31yZXR1cm4gWWU9ZGksQ24oTWksc3Qsdm9pZCAwLHJhPj0wKX1mdW5jdGlvbiB0YyhMZSl7cmV0dXJuIExlPT09Nj9lLkRpYWdub3N0aWNzLkFuX2VudW1fbWVtYmVyX25hbWVfbXVzdF9iZV9mb2xsb3dlZF9ieV9hX29yOnZvaWQgMH1mdW5jdGlvbiBwcygpe3ZhciBMZT1DbihbXSxVZSgpKTtyZXR1cm4gTGUuaXNNaXNzaW5nTGlzdD0hMCxMZX1mdW5jdGlvbiBRcyhMZSl7cmV0dXJuISFMZS5pc01pc3NpbmdMaXN0fWZ1bmN0aW9uIGpzKExlLE5yLHJpLGRpKXtpZih1aShyaSkpe3ZhciBNaT1ocyhMZSxOcik7cmV0dXJuIHVpKGRpKSxNaX1yZXR1cm4gcHMoKX1mdW5jdGlvbiBkcyhMZSxOcil7Zm9yKHZhciByaT1VZSgpLGRpPUxlP1JuKE5yKTplbyhOciksTWk9VWUoKTthdCgyNCk7KXtpZihEZSgpPT09Mjkpe2RpLmpzZG9jRG90UG9zPU1pO2JyZWFrfU1pPVVlKCksZGk9QmkoZ2UuY3JlYXRlUXVhbGlmaWVkTmFtZShkaSxjZShMZSwhMSkpLHJpKX1yZXR1cm4gZGl9ZnVuY3Rpb24gSmkoTGUsTnIpe3JldHVybiBCaShnZS5jcmVhdGVRdWFsaWZpZWROYW1lKExlLE5yKSxMZS5wb3MpfWZ1bmN0aW9uIGNlKExlLE5yKXtpZihELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpJiZlLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpKXt2YXIgcmk9UnQoUHUpO2lmKHJpKXJldHVybiBrbig3OSwhMCxlLkRpYWdub3N0aWNzLklkZW50aWZpZXJfZXhwZWN0ZWQpfWlmKERlKCk9PT04MCl7dmFyIGRpPUNvKCk7cmV0dXJuIE5yP2RpOmtuKDc5LCEwLGUuRGlhZ25vc3RpY3MuSWRlbnRpZmllcl9leHBlY3RlZCl9cmV0dXJuIExlP1JuKCk6ZW8oKX1mdW5jdGlvbiBScihMZSl7dmFyIE5yPVVlKCkscmk9W10sZGk7ZG8gZGk9UHQoTGUpLHJpLnB1c2goZGkpO3doaWxlKGRpLmxpdGVyYWwua2luZD09PTE2KTtyZXR1cm4gQ24ocmksTnIpfWZ1bmN0aW9uIHlpKExlKXt2YXIgTnI9VWUoKTtyZXR1cm4gQmkoZ2UuY3JlYXRlVGVtcGxhdGVFeHByZXNzaW9uKHVhKExlKSxScihMZSkpLE5yKX1mdW5jdGlvbiBxaSgpe3ZhciBMZT1VZSgpO3JldHVybiBCaShnZS5jcmVhdGVUZW1wbGF0ZUxpdGVyYWxUeXBlKHVhKCExKSxqZSgpKSxMZSl9ZnVuY3Rpb24gamUoKXt2YXIgTGU9VWUoKSxOcj1bXSxyaTtkbyByaT1IcigpLE5yLnB1c2gocmkpO3doaWxlKHJpLmxpdGVyYWwua2luZD09PTE2KTtyZXR1cm4gQ24oTnIsTGUpfWZ1bmN0aW9uIEhyKCl7dmFyIExlPVVlKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZVRlbXBsYXRlTGl0ZXJhbFR5cGVTcGFuKEFhKCkscHQoITEpKSxMZSl9ZnVuY3Rpb24gcHQoTGUpe3JldHVybiBEZSgpPT09MTk/KFdpKExlKSxYbigpKTokYSgxNyxlLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLGUudG9rZW5Ub1N0cmluZygxOSkpfWZ1bmN0aW9uIFB0KExlKXt2YXIgTnI9VWUoKTtyZXR1cm4gQmkoZ2UuY3JlYXRlVGVtcGxhdGVTcGFuKFd0KG5zKSxwdChMZSkpLE5yKX1mdW5jdGlvbiBnYSgpe3JldHVybiBmbyhEZSgpKX1mdW5jdGlvbiB1YShMZSl7TGUmJmN0KCk7dmFyIE5yPWZvKERlKCkpO3JldHVybiBlLkRlYnVnLmFzc2VydChOci5raW5kPT09MTUsXCJUZW1wbGF0ZSBoZWFkIGhhcyB3cm9uZyB0b2tlbiBraW5kXCIpLE5yfWZ1bmN0aW9uIFhuKCl7dmFyIExlPWZvKERlKCkpO3JldHVybiBlLkRlYnVnLmFzc2VydChMZS5raW5kPT09MTZ8fExlLmtpbmQ9PT0xNyxcIlRlbXBsYXRlIGZyYWdtZW50IGhhcyB3cm9uZyB0b2tlbiBraW5kXCIpLExlfWZ1bmN0aW9uIGpyKExlKXt2YXIgTnI9TGU9PT0xNHx8TGU9PT0xNyxyaT1ELmdldFRva2VuVGV4dCgpO3JldHVybiByaS5zdWJzdHJpbmcoMSxyaS5sZW5ndGgtKEQuaXNVbnRlcm1pbmF0ZWQoKT8wOk5yPzE6MikpfWZ1bmN0aW9uIGZvKExlKXt2YXIgTnI9VWUoKSxyaT1lLmlzVGVtcGxhdGVMaXRlcmFsS2luZChMZSk/Z2UuY3JlYXRlVGVtcGxhdGVMaXRlcmFsTGlrZU5vZGUoTGUsRC5nZXRUb2tlblZhbHVlKCksanIoTGUpLEQuZ2V0VG9rZW5GbGFncygpJjIwNDgpOkxlPT09OD9nZS5jcmVhdGVOdW1lcmljTGl0ZXJhbChELmdldFRva2VuVmFsdWUoKSxELmdldE51bWVyaWNMaXRlcmFsRmxhZ3MoKSk6TGU9PT0xMD9nZS5jcmVhdGVTdHJpbmdMaXRlcmFsKEQuZ2V0VG9rZW5WYWx1ZSgpLHZvaWQgMCxELmhhc0V4dGVuZGVkVW5pY29kZUVzY2FwZSgpKTplLmlzTGl0ZXJhbEtpbmQoTGUpP2dlLmNyZWF0ZUxpdGVyYWxMaWtlTm9kZShMZSxELmdldFRva2VuVmFsdWUoKSk6ZS5EZWJ1Zy5mYWlsKCk7cmV0dXJuIEQuaGFzRXh0ZW5kZWRVbmljb2RlRXNjYXBlKCkmJihyaS5oYXNFeHRlbmRlZFVuaWNvZGVFc2NhcGU9ITApLEQuaXNVbnRlcm1pbmF0ZWQoKSYmKHJpLmlzVW50ZXJtaW5hdGVkPSEwKSxUcigpLEJpKHJpLE5yKX1mdW5jdGlvbiB4cygpe3JldHVybiBkcyghMCxlLkRpYWdub3N0aWNzLlR5cGVfZXhwZWN0ZWQpfWZ1bmN0aW9uIEZvKCl7aWYoIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJkxpKCk9PT0yOSlyZXR1cm4ganMoMjAsQWEsMjksMzEpfWZ1bmN0aW9uIGtvKCl7dmFyIExlPVVlKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKHhzKCksRm8oKSksTGUpfWZ1bmN0aW9uIEFvKExlKXtzd2l0Y2goTGUua2luZCl7Y2FzZSAxNzg6cmV0dXJuIGUubm9kZUlzTWlzc2luZyhMZS50eXBlTmFtZSk7Y2FzZSAxNzk6Y2FzZSAxODA6e3ZhciBOcj1MZSxyaT1Oci5wYXJhbWV0ZXJzLGRpPU5yLnR5cGU7cmV0dXJuIFFzKHJpKXx8QW8oZGkpfWNhc2UgMTkxOnJldHVybiBBbyhMZS50eXBlKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBNcyhMZSl7cmV0dXJuIFRyKCksQmkoZ2UuY3JlYXRlVHlwZVByZWRpY2F0ZU5vZGUodm9pZCAwLExlLEFhKCkpLExlLnBvcyl9ZnVuY3Rpb24gQnMoKXt2YXIgTGU9VWUoKTtyZXR1cm4gVHIoKSxCaShnZS5jcmVhdGVUaGlzVHlwZU5vZGUoKSxMZSl9ZnVuY3Rpb24geGMoKXt2YXIgTGU9VWUoKTtyZXR1cm4gVHIoKSxCaShnZS5jcmVhdGVKU0RvY0FsbFR5cGUoKSxMZSl9ZnVuY3Rpb24gc3UoKXt2YXIgTGU9VWUoKTtyZXR1cm4gVHIoKSxCaShnZS5jcmVhdGVKU0RvY05vbk51bGxhYmxlVHlwZSh5YygpLCExKSxMZSl9ZnVuY3Rpb24gdGwoKXt2YXIgTGU9VWUoKTtyZXR1cm4gVHIoKSxEZSgpPT09Mjd8fERlKCk9PT0xOXx8RGUoKT09PTIxfHxEZSgpPT09MzF8fERlKCk9PT02M3x8RGUoKT09PTUxP0JpKGdlLmNyZWF0ZUpTRG9jVW5rbm93blR5cGUoKSxMZSk6QmkoZ2UuY3JlYXRlSlNEb2NOdWxsYWJsZVR5cGUoQWEoKSwhMSksTGUpfWZ1bmN0aW9uIFpjKCl7dmFyIExlPVVlKCksTnI9ZnIoKTtpZihSdCh2KSl7VHIoKTt2YXIgcmk9RWkoMzYpLGRpPXZjKDU4LCExKTtyZXR1cm4gd3IoQmkoZ2UuY3JlYXRlSlNEb2NGdW5jdGlvblR5cGUocmksZGkpLExlKSxOcil9cmV0dXJuIEJpKGdlLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKFJuKCksdm9pZCAwKSxMZSl9ZnVuY3Rpb24gUmYoKXt2YXIgTGU9VWUoKSxOcjtyZXR1cm4oRGUoKT09PTEwOHx8RGUoKT09PTEwMykmJihOcj1SbigpLHVpKDU4KSksQmkoZ2UuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsTnIsdm9pZCAwLGFsKCksdm9pZCAwKSxMZSl9ZnVuY3Rpb24gYWwoKXtELnNldEluSlNEb2NUeXBlKCEwKTt2YXIgTGU9VWUoKTtpZihhdCgxNDEpKXt2YXIgTnI9Z2UuY3JlYXRlSlNEb2NOYW1lcGF0aFR5cGUodm9pZCAwKTtlOmZvcig7Oylzd2l0Y2goRGUoKSl7Y2FzZSAxOTpjYXNlIDE6Y2FzZSAyNzpjYXNlIDU6YnJlYWsgZTtkZWZhdWx0OnZpKCl9cmV0dXJuIEQuc2V0SW5KU0RvY1R5cGUoITEpLEJpKE5yLExlKX12YXIgcmk9YXQoMjUpLGRpPWd1KCk7cmV0dXJuIEQuc2V0SW5KU0RvY1R5cGUoITEpLHJpJiYoZGk9QmkoZ2UuY3JlYXRlSlNEb2NWYXJpYWRpY1R5cGUoZGkpLExlKSksRGUoKT09PTYzPyhUcigpLEJpKGdlLmNyZWF0ZUpTRG9jT3B0aW9uYWxUeXBlKGRpKSxMZSkpOmRpfWZ1bmN0aW9uIEpvKCl7dmFyIExlPVVlKCk7dWkoMTEyKTt2YXIgTnI9ZHMoITApLHJpPUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCk/dm9pZCAwOm1fKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZVR5cGVRdWVyeU5vZGUoTnIscmkpLExlKX1mdW5jdGlvbiBldSgpe3ZhciBMZT1VZSgpLE5yPUZjKCkscmk9ZW8oKSxkaSxNaTthdCg5NCkmJihYcigpfHwhcXMoKT9kaT1BYSgpOk1pPWtwKCkpO3ZhciBzdD1hdCg2Myk/QWEoKTp2b2lkIDAscmE9Z2UuY3JlYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKE5yLHJpLGRpLHN0KTtyZXR1cm4gcmEuZXhwcmVzc2lvbj1NaSxCaShyYSxMZSl9ZnVuY3Rpb24gV3MoKXtpZihEZSgpPT09MjkpcmV0dXJuIGpzKDE5LGV1LDI5LDMxKX1mdW5jdGlvbiBwdShMZSl7cmV0dXJuIERlKCk9PT0yNXx8SGMoKXx8ZS5pc01vZGlmaWVyS2luZChEZSgpKXx8RGUoKT09PTU5fHxYcighTGUpfWZ1bmN0aW9uIFV1KExlKXt2YXIgTnI9T2woZS5EaWFnbm9zdGljcy5Qcml2YXRlX2lkZW50aWZpZXJzX2Nhbm5vdF9iZV91c2VkX2FzX3BhcmFtZXRlcnMpO3JldHVybiBlLmdldEZ1bGxXaWR0aChOcik9PT0wJiYhZS5zb21lKExlKSYmZS5pc01vZGlmaWVyS2luZChEZSgpKSYmVHIoKSxOcn1mdW5jdGlvbiBRbCgpe3JldHVybiBLaSgpfHxEZSgpPT09MjJ8fERlKCk9PT0xOH1mdW5jdGlvbiB4bChMZSl7cmV0dXJuIGR1KExlKX1mdW5jdGlvbiBZYShMZSl7cmV0dXJuIGR1KExlLCExKX1mdW5jdGlvbiBkdShMZSxOcil7TnI9PT12b2lkIDAmJihOcj0hMCk7dmFyIHJpPVVlKCksZGk9ZnIoKSxNaT1MZT9KcihnbCk6Z2woKTtpZihEZSgpPT09MTA4KXt2YXIgc3Q9Z2UuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24oTWksdm9pZCAwLHZvaWQgMCxLbighMCksdm9pZCAwLHZhKCksdm9pZCAwKTtyZXR1cm4gTWkmJk1yKE1pWzBdLGUuRGlhZ25vc3RpY3MuRGVjb3JhdG9yc19tYXlfbm90X2JlX2FwcGxpZWRfdG9fdGhpc19wYXJhbWV0ZXJzKSx3cihCaShzdCxyaSksZGkpfXZhciByYT1OZTtOZT0hMTt2YXIgVGE9RmMoKSxoYT1BdCgyNSk7aWYoISghTnImJiFRbCgpKSl7dmFyIE5hPXdyKEJpKGdlLmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKE1pLFRhLGhhLFV1KFRhKSxBdCg1NyksdmEoKSxubCgpKSxyaSksZGkpO3JldHVybiBOZT1yYSxOYX19ZnVuY3Rpb24gdmMoTGUsTnIpe2lmKEtyKExlLE5yKSlyZXR1cm4gX3IoZ3UpfWZ1bmN0aW9uIEtyKExlLE5yKXtyZXR1cm4gTGU9PT0zOD8odWkoTGUpLCEwKTphdCg1OCk/ITA6TnImJkRlKCk9PT0zOD8oQXIoZS5EaWFnbm9zdGljcy5fMF9leHBlY3RlZCxlLnRva2VuVG9TdHJpbmcoNTgpKSxUcigpLCEwKTohMX1mdW5jdGlvbiBfaShMZSxOcil7dmFyIHJpPVdyKCksZGk9bXIoKTtEaSghIShMZSYxKSksWGkoISEoTGUmMikpO3ZhciBNaT1MZSYzMj9ocygxNyxSZik6aHMoMTYsZnVuY3Rpb24oKXtyZXR1cm4gTnI/eGwoZGkpOllhKGRpKX0pO3JldHVybiBEaShyaSksWGkoZGkpLE1pfWZ1bmN0aW9uIEVpKExlKXtpZighdWkoMjApKXJldHVybiBwcygpO3ZhciBOcj1faShMZSwhMCk7cmV0dXJuIHVpKDIxKSxOcn1mdW5jdGlvbiB0dCgpe2F0KDI3KXx8cG4oKX1mdW5jdGlvbiBrdChMZSl7dmFyIE5yPVVlKCkscmk9ZnIoKTtMZT09PTE3NSYmdWkoMTAzKTt2YXIgZGk9V3MoKSxNaT1FaSg0KSxzdD12Yyg1OCwhMCk7dHQoKTt2YXIgcmE9TGU9PT0xNzQ/Z2UuY3JlYXRlQ2FsbFNpZ25hdHVyZShkaSxNaSxzdCk6Z2UuY3JlYXRlQ29uc3RydWN0U2lnbmF0dXJlKGRpLE1pLHN0KTtyZXR1cm4gd3IoQmkocmEsTnIpLHJpKX1mdW5jdGlvbiBidCgpe3JldHVybiBEZSgpPT09MjImJlJ0KGlhKX1mdW5jdGlvbiBpYSgpe2lmKFRyKCksRGUoKT09PTI1fHxEZSgpPT09MjMpcmV0dXJuITA7aWYoZS5pc01vZGlmaWVyS2luZChEZSgpKSl7aWYoVHIoKSxGaSgpKXJldHVybiEwfWVsc2UgaWYoRmkoKSlUcigpO2Vsc2UgcmV0dXJuITE7cmV0dXJuIERlKCk9PT01OHx8RGUoKT09PTI3PyEwOkRlKCkhPT01Nz8hMTooVHIoKSxEZSgpPT09NTh8fERlKCk9PT0yN3x8RGUoKT09PTIzKX1mdW5jdGlvbiBYdChMZSxOcixyaSxkaSl7dmFyIE1pPWpzKDE2LGZ1bmN0aW9uKCl7cmV0dXJuIHhsKCExKX0sMjIsMjMpLHN0PXZhKCk7dHQoKTt2YXIgcmE9Z2UuY3JlYXRlSW5kZXhTaWduYXR1cmUocmksZGksTWksc3QpO3JldHVybiB3cihCaShyYSxMZSksTnIpfWZ1bmN0aW9uIFphKExlLE5yLHJpKXt2YXIgZGk9RW4oKSxNaT1BdCg1Nyksc3Q7aWYoRGUoKT09PTIwfHxEZSgpPT09Mjkpe3ZhciByYT1XcygpLFRhPUVpKDQpLGhhPXZjKDU4LCEwKTtzdD1nZS5jcmVhdGVNZXRob2RTaWduYXR1cmUocmksZGksTWkscmEsVGEsaGEpfWVsc2V7dmFyIGhhPXZhKCk7c3Q9Z2UuY3JlYXRlUHJvcGVydHlTaWduYXR1cmUocmksZGksTWksaGEpLERlKCk9PT02MyYmKHN0LmluaXRpYWxpemVyPW5sKCkpfXJldHVybiB0dCgpLHdyKEJpKHN0LExlKSxOcil9ZnVuY3Rpb24gYm4oKXtpZihEZSgpPT09MjB8fERlKCk9PT0yOXx8RGUoKT09PTEzNnx8RGUoKT09PTE0OSlyZXR1cm4hMDtmb3IodmFyIExlPSExO2UuaXNNb2RpZmllcktpbmQoRGUoKSk7KUxlPSEwLFRyKCk7cmV0dXJuIERlKCk9PT0yMj8hMDooRGEoKSYmKExlPSEwLFRyKCkpLExlP0RlKCk9PT0yMHx8RGUoKT09PTI5fHxEZSgpPT09NTd8fERlKCk9PT01OHx8RGUoKT09PTI3fHxrYSgpOiExKX1mdW5jdGlvbiBfYSgpe2lmKERlKCk9PT0yMHx8RGUoKT09PTI5KXJldHVybiBrdCgxNzQpO2lmKERlKCk9PT0xMDMmJlJ0KHFhKSlyZXR1cm4ga3QoMTc1KTt2YXIgTGU9VWUoKSxOcj1mcigpLHJpPUZjKCk7cmV0dXJuIEtvKDEzNik/R3UoTGUsTnIsdm9pZCAwLHJpLDE3Mik6S28oMTQ5KT9HdShMZSxOcix2b2lkIDAscmksMTczKTpidCgpP1h0KExlLE5yLHZvaWQgMCxyaSk6WmEoTGUsTnIscmkpfWZ1bmN0aW9uIHFhKCl7cmV0dXJuIFRyKCksRGUoKT09PTIwfHxEZSgpPT09Mjl9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gVHIoKT09PTI0fWZ1bmN0aW9uIGpuKCl7c3dpdGNoKFRyKCkpe2Nhc2UgMjA6Y2FzZSAyOTpjYXNlIDI0OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIE1vKCl7dmFyIExlPVVlKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZVR5cGVMaXRlcmFsTm9kZShobygpKSxMZSl9ZnVuY3Rpb24gaG8oKXt2YXIgTGU7cmV0dXJuIHVpKDE4KT8oTGU9UWkoNCxfYSksdWkoMTkpKTpMZT1wcygpLExlfWZ1bmN0aW9uIGdzKCl7cmV0dXJuIFRyKCksRGUoKT09PTM5fHxEZSgpPT09NDA/VHIoKT09PTE0NTooRGUoKT09PTE0NSYmVHIoKSxEZSgpPT09MjImJlFlKCkmJlRyKCk9PT0xMDEpfWZ1bmN0aW9uIFNlKCl7dmFyIExlPVVlKCksTnI9Um4oKTt1aSgxMDEpO3ZhciByaT1BYSgpO3JldHVybiBCaShnZS5jcmVhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLE5yLHJpLHZvaWQgMCksTGUpfWZ1bmN0aW9uIGhyKCl7dmFyIExlPVVlKCk7dWkoMTgpO3ZhciBOcjsoRGUoKT09PTE0NXx8RGUoKT09PTM5fHxEZSgpPT09NDApJiYoTnI9YWkoKSxOci5raW5kIT09MTQ1JiZ1aSgxNDUpKSx1aSgyMik7dmFyIHJpPVNlKCksZGk9YXQoMTI3KT9BYSgpOnZvaWQgMDt1aSgyMyk7dmFyIE1pOyhEZSgpPT09NTd8fERlKCk9PT0zOXx8RGUoKT09PTQwKSYmKE1pPWFpKCksTWkua2luZCE9PTU3JiZ1aSg1NykpO3ZhciBzdD12YSgpO3BuKCk7dmFyIHJhPVFpKDQsX2EpO3JldHVybiB1aSgxOSksQmkoZ2UuY3JlYXRlTWFwcGVkVHlwZU5vZGUoTnIscmksZGksTWksc3QscmEpLExlKX1mdW5jdGlvbiBPcigpe3ZhciBMZT1VZSgpO2lmKGF0KDI1KSlyZXR1cm4gQmkoZ2UuY3JlYXRlUmVzdFR5cGVOb2RlKEFhKCkpLExlKTt2YXIgTnI9QWEoKTtpZihlLmlzSlNEb2NOdWxsYWJsZVR5cGUoTnIpJiZOci5wb3M9PT1Oci50eXBlLnBvcyl7dmFyIHJpPWdlLmNyZWF0ZU9wdGlvbmFsVHlwZU5vZGUoTnIudHlwZSk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKHJpLE5yKSxyaS5mbGFncz1Oci5mbGFncyxyaX1yZXR1cm4gTnJ9ZnVuY3Rpb24ga2koKXtyZXR1cm4gVHIoKT09PTU4fHxEZSgpPT09NTcmJlRyKCk9PT01OH1mdW5jdGlvbiBkdCgpe3JldHVybiBEZSgpPT09MjU/ZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZChUcigpKSYma2koKTplLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpJiZraSgpfWZ1bmN0aW9uIGxhKCl7aWYoUnQoZHQpKXt2YXIgTGU9VWUoKSxOcj1mcigpLHJpPUF0KDI1KSxkaT1SbigpLE1pPUF0KDU3KTt1aSg1OCk7dmFyIHN0PU9yKCkscmE9Z2UuY3JlYXRlTmFtZWRUdXBsZU1lbWJlcihyaSxkaSxNaSxzdCk7cmV0dXJuIHdyKEJpKHJhLExlKSxOcil9cmV0dXJuIE9yKCl9ZnVuY3Rpb24gd2EoKXt2YXIgTGU9VWUoKTtyZXR1cm4gQmkoZ2UuY3JlYXRlVHVwbGVUeXBlTm9kZShqcygyMSxsYSwyMiwyMykpLExlKX1mdW5jdGlvbiBPbigpe3ZhciBMZT1VZSgpO3VpKDIwKTt2YXIgTnI9QWEoKTtyZXR1cm4gdWkoMjEpLEJpKGdlLmNyZWF0ZVBhcmVudGhlc2l6ZWRUeXBlKE5yKSxMZSl9ZnVuY3Rpb24gTm8oKXt2YXIgTGU7aWYoRGUoKT09PTEyNil7dmFyIE5yPVVlKCk7VHIoKTt2YXIgcmk9QmkoZ2UuY3JlYXRlVG9rZW4oMTI2KSxOcik7TGU9Q24oW3JpXSxOcil9cmV0dXJuIExlfWZ1bmN0aW9uIGpvKCl7dmFyIExlPVVlKCksTnI9ZnIoKSxyaT1ObygpLGRpPWF0KDEwMyksTWk9V3MoKSxzdD1FaSg0KSxyYT12YygzOCwhMSksVGE9ZGk/Z2UuY3JlYXRlQ29uc3RydWN0b3JUeXBlTm9kZShyaSxNaSxzdCxyYSk6Z2UuY3JlYXRlRnVuY3Rpb25UeXBlTm9kZShNaSxzdCxyYSk7cmV0dXJuIGRpfHwoVGEubW9kaWZpZXJzPXJpKSx3cihCaShUYSxMZSksTnIpfWZ1bmN0aW9uIHBvKCl7dmFyIExlPWFpKCk7cmV0dXJuIERlKCk9PT0yND92b2lkIDA6TGV9ZnVuY3Rpb24gR24oTGUpe3ZhciBOcj1VZSgpO0xlJiZUcigpO3ZhciByaT1EZSgpPT09MTEwfHxEZSgpPT09OTV8fERlKCk9PT0xMDQ/YWkoKTpmbyhEZSgpKTtyZXR1cm4gTGUmJihyaT1CaShnZS5jcmVhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24oNDAscmkpLE5yKSksQmkoZ2UuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKHJpKSxOcil9ZnVuY3Rpb24gJG4oKXtyZXR1cm4gVHIoKSxEZSgpPT09MTAwfWZ1bmN0aW9uIEhvKCl7dmFyIExlPVVlKCksTnI9RC5nZXRUb2tlblBvcygpO3VpKDE4KTt2YXIgcmk9RC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKTt1aSgxMjkpLHVpKDU4KTt2YXIgZGk9SGEoITApO2lmKCF1aSgxOSkpe3ZhciBNaT1lLmxhc3RPclVuZGVmaW5lZChfZSk7TWkmJk1pLmNvZGU9PT1lLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLmNvZGUmJmUuYWRkUmVsYXRlZEluZm8oTWksZS5jcmVhdGVEZXRhY2hlZERpYWdub3N0aWMoUmUsTnIsMSxlLkRpYWdub3N0aWNzLlRoZV9wYXJzZXJfZXhwZWN0ZWRfdG9fZmluZF9hXzFfdG9fbWF0Y2hfdGhlXzBfdG9rZW5faGVyZSxcIntcIixcIn1cIikpfXJldHVybiBCaShnZS5jcmVhdGVJbXBvcnRUeXBlQXNzZXJ0aW9uQ29udGFpbmVyKGRpLHJpKSxMZSl9ZnVuY3Rpb24gWm8oKXt6ZXw9MjA5NzE1Mjt2YXIgTGU9VWUoKSxOcj1hdCgxMTIpO3VpKDEwMCksdWkoMjApO3ZhciByaT1BYSgpLGRpO2F0KDI3KSYmKGRpPUhvKCkpLHVpKDIxKTt2YXIgTWk9YXQoMjQpP3hzKCk6dm9pZCAwLHN0PUZvKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZUltcG9ydFR5cGVOb2RlKHJpLGRpLE1pLHN0LE5yKSxMZSl9ZnVuY3Rpb24gRXMoKXtyZXR1cm4gVHIoKSxEZSgpPT09OHx8RGUoKT09PTl9ZnVuY3Rpb24geWMoKXtzd2l0Y2goRGUoKSl7Y2FzZSAxMzA6Y2FzZSAxNTU6Y2FzZSAxNTA6Y2FzZSAxNDc6Y2FzZSAxNTg6Y2FzZSAxNTE6Y2FzZSAxMzM6Y2FzZSAxNTM6Y2FzZSAxNDM6Y2FzZSAxNDg6cmV0dXJuIElpKHBvKXx8a28oKTtjYXNlIDY2OkQucmVTY2FuQXN0ZXJpc2tFcXVhbHNUb2tlbigpO2Nhc2UgNDE6cmV0dXJuIHhjKCk7Y2FzZSA2MDpELnJlU2NhblF1ZXN0aW9uVG9rZW4oKTtjYXNlIDU3OnJldHVybiB0bCgpO2Nhc2UgOTg6cmV0dXJuIFpjKCk7Y2FzZSA1MzpyZXR1cm4gc3UoKTtjYXNlIDE0OmNhc2UgMTA6Y2FzZSA4OmNhc2UgOTpjYXNlIDExMDpjYXNlIDk1OmNhc2UgMTA0OnJldHVybiBHbigpO2Nhc2UgNDA6cmV0dXJuIFJ0KEVzKT9HbighMCk6a28oKTtjYXNlIDExNDpyZXR1cm4gYWkoKTtjYXNlIDEwODp7dmFyIExlPUJzKCk7cmV0dXJuIERlKCk9PT0xMzkmJiFELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpP01zKExlKTpMZX1jYXNlIDExMjpyZXR1cm4gUnQoJG4pP1pvKCk6Sm8oKTtjYXNlIDE4OnJldHVybiBSdChncyk/aHIoKTpNbygpO2Nhc2UgMjI6cmV0dXJuIHdhKCk7Y2FzZSAyMDpyZXR1cm4gT24oKTtjYXNlIDEwMDpyZXR1cm4gWm8oKTtjYXNlIDEyODpyZXR1cm4gUnQoUHUpP3NkKCk6a28oKTtjYXNlIDE1OnJldHVybiBxaSgpO2RlZmF1bHQ6cmV0dXJuIGtvKCl9fWZ1bmN0aW9uIFhyKExlKXtzd2l0Y2goRGUoKSl7Y2FzZSAxMzA6Y2FzZSAxNTU6Y2FzZSAxNTA6Y2FzZSAxNDc6Y2FzZSAxNTg6Y2FzZSAxMzM6Y2FzZSAxNDU6Y2FzZSAxNTE6Y2FzZSAxNTQ6Y2FzZSAxMTQ6Y2FzZSAxNTM6Y2FzZSAxMDQ6Y2FzZSAxMDg6Y2FzZSAxMTI6Y2FzZSAxNDM6Y2FzZSAxODpjYXNlIDIyOmNhc2UgMjk6Y2FzZSA1MTpjYXNlIDUwOmNhc2UgMTAzOmNhc2UgMTA6Y2FzZSA4OmNhc2UgOTpjYXNlIDExMDpjYXNlIDk1OmNhc2UgMTQ4OmNhc2UgNDE6Y2FzZSA1NzpjYXNlIDUzOmNhc2UgMjU6Y2FzZSAxMzc6Y2FzZSAxMDA6Y2FzZSAxMjg6Y2FzZSAxNDpjYXNlIDE1OnJldHVybiEwO2Nhc2UgOTg6cmV0dXJuIUxlO2Nhc2UgNDA6cmV0dXJuIUxlJiZSdChFcyk7Y2FzZSAyMDpyZXR1cm4hTGUmJlJ0KExzKTtkZWZhdWx0OnJldHVybiBGaSgpfX1mdW5jdGlvbiBMcygpe3JldHVybiBUcigpLERlKCk9PT0yMXx8cHUoITEpfHxYcigpfWZ1bmN0aW9uIEljKCl7Zm9yKHZhciBMZT1VZSgpLE5yPXljKCk7IUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCk7KXN3aXRjaChEZSgpKXtjYXNlIDUzOlRyKCksTnI9QmkoZ2UuY3JlYXRlSlNEb2NOb25OdWxsYWJsZVR5cGUoTnIsITApLExlKTticmVhaztjYXNlIDU3OmlmKFJ0KGJyKSlyZXR1cm4gTnI7VHIoKSxOcj1CaShnZS5jcmVhdGVKU0RvY051bGxhYmxlVHlwZShOciwhMCksTGUpO2JyZWFrO2Nhc2UgMjI6aWYodWkoMjIpLFhyKCkpe3ZhciByaT1BYSgpO3VpKDIzKSxOcj1CaShnZS5jcmVhdGVJbmRleGVkQWNjZXNzVHlwZU5vZGUoTnIscmkpLExlKX1lbHNlIHVpKDIzKSxOcj1CaShnZS5jcmVhdGVBcnJheVR5cGVOb2RlKE5yKSxMZSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gTnJ9cmV0dXJuIE5yfWZ1bmN0aW9uIHp1KExlKXt2YXIgTnI9VWUoKTtyZXR1cm4gdWkoTGUpLEJpKGdlLmNyZWF0ZVR5cGVPcGVyYXRvck5vZGUoTGUsdnAoKSksTnIpfWZ1bmN0aW9uIHZmKCl7aWYoYXQoOTQpKXt2YXIgTGU9cGkoQWEpO2lmKHhlKCl8fERlKCkhPT01NylyZXR1cm4gTGV9fWZ1bmN0aW9uIFBfKCl7dmFyIExlPVVlKCksTnI9ZW8oKSxyaT1JaSh2ZiksZGk9Z2UuY3JlYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCxOcixyaSk7cmV0dXJuIEJpKGRpLExlKX1mdW5jdGlvbiBFbCgpe3ZhciBMZT1VZSgpO3JldHVybiB1aSgxMzcpLEJpKGdlLmNyZWF0ZUluZmVyVHlwZU5vZGUoUF8oKSksTGUpfWZ1bmN0aW9uIHZwKCl7dmFyIExlPURlKCk7c3dpdGNoKExlKXtjYXNlIDE0MDpjYXNlIDE1NDpjYXNlIDE0NTpyZXR1cm4genUoTGUpO2Nhc2UgMTM3OnJldHVybiBFbCgpfXJldHVybiBfcihJYyl9ZnVuY3Rpb24gb28oTGUpe2lmKENsKCkpe3ZhciBOcj1qbygpLHJpPXZvaWQgMDtyZXR1cm4gZS5pc0Z1bmN0aW9uVHlwZU5vZGUoTnIpP3JpPUxlP2UuRGlhZ25vc3RpY3MuRnVuY3Rpb25fdHlwZV9ub3RhdGlvbl9tdXN0X2JlX3BhcmVudGhlc2l6ZWRfd2hlbl91c2VkX2luX2FfdW5pb25fdHlwZTplLkRpYWdub3N0aWNzLkZ1bmN0aW9uX3R5cGVfbm90YXRpb25fbXVzdF9iZV9wYXJlbnRoZXNpemVkX3doZW5fdXNlZF9pbl9hbl9pbnRlcnNlY3Rpb25fdHlwZTpyaT1MZT9lLkRpYWdub3N0aWNzLkNvbnN0cnVjdG9yX3R5cGVfbm90YXRpb25fbXVzdF9iZV9wYXJlbnRoZXNpemVkX3doZW5fdXNlZF9pbl9hX3VuaW9uX3R5cGU6ZS5EaWFnbm9zdGljcy5Db25zdHJ1Y3Rvcl90eXBlX25vdGF0aW9uX211c3RfYmVfcGFyZW50aGVzaXplZF93aGVuX3VzZWRfaW5fYW5faW50ZXJzZWN0aW9uX3R5cGUsTXIoTnIscmkpLE5yfX1mdW5jdGlvbiBJXyhMZSxOcixyaSl7dmFyIGRpPVVlKCksTWk9TGU9PT01MSxzdD1hdChMZSkscmE9c3QmJm9vKE1pKXx8TnIoKTtpZihEZSgpPT09TGV8fHN0KXtmb3IodmFyIFRhPVtyYV07YXQoTGUpOylUYS5wdXNoKG9vKE1pKXx8TnIoKSk7cmE9QmkocmkoQ24oVGEsZGkpKSxkaSl9cmV0dXJuIHJhfWZ1bmN0aW9uIHlwKCl7cmV0dXJuIElfKDUwLHZwLGdlLmNyZWF0ZUludGVyc2VjdGlvblR5cGVOb2RlKX1mdW5jdGlvbiBZbCgpe3JldHVybiBJXyg1MSx5cCxnZS5jcmVhdGVVbmlvblR5cGVOb2RlKX1mdW5jdGlvbiBCZigpe3JldHVybiBUcigpLERlKCk9PT0xMDN9ZnVuY3Rpb24gQ2woKXtyZXR1cm4gRGUoKT09PTI5fHxEZSgpPT09MjAmJlJ0KGhwKT8hMDpEZSgpPT09MTAzfHxEZSgpPT09MTI2JiZSdChCZil9ZnVuY3Rpb24gY18oKXtpZihlLmlzTW9kaWZpZXJLaW5kKERlKCkpJiZGYygpLEZpKCl8fERlKCk9PT0xMDgpcmV0dXJuIFRyKCksITA7aWYoRGUoKT09PTIyfHxEZSgpPT09MTgpe3ZhciBMZT1fZS5sZW5ndGg7cmV0dXJuIE9sKCksTGU9PT1fZS5sZW5ndGh9cmV0dXJuITF9ZnVuY3Rpb24gaHAoKXtyZXR1cm4gVHIoKSwhIShEZSgpPT09MjF8fERlKCk9PT0yNXx8Y18oKSYmKERlKCk9PT01OHx8RGUoKT09PTI3fHxEZSgpPT09NTd8fERlKCk9PT02M3x8RGUoKT09PTIxJiYoVHIoKSxEZSgpPT09MzgpKSl9ZnVuY3Rpb24gZ3UoKXt2YXIgTGU9VWUoKSxOcj1GaSgpJiZJaShEcCkscmk9QWEoKTtyZXR1cm4gTnI/QmkoZ2UuY3JlYXRlVHlwZVByZWRpY2F0ZU5vZGUodm9pZCAwLE5yLHJpKSxMZSk6cml9ZnVuY3Rpb24gRHAoKXt2YXIgTGU9ZW8oKTtpZihEZSgpPT09MTM5JiYhRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSlyZXR1cm4gVHIoKSxMZX1mdW5jdGlvbiBzZCgpe3ZhciBMZT1VZSgpLE5yPSRhKDEyOCkscmk9RGUoKT09PTEwOD9CcygpOmVvKCksZGk9YXQoMTM5KT9BYSgpOnZvaWQgMDtyZXR1cm4gQmkoZ2UuY3JlYXRlVHlwZVByZWRpY2F0ZU5vZGUoTnIscmksZGkpLExlKX1mdW5jdGlvbiBBYSgpe2lmKEVyJjQwOTYwKXJldHVybiBldCg0MDk2MCxBYSk7aWYoQ2woKSlyZXR1cm4gam8oKTt2YXIgTGU9VWUoKSxOcj1ZbCgpO2lmKCF4ZSgpJiYhRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSYmYXQoOTQpKXt2YXIgcmk9cGkoQWEpO3VpKDU3KTt2YXIgZGk9X3IoQWEpO3VpKDU4KTt2YXIgTWk9X3IoQWEpO3JldHVybiBCaShnZS5jcmVhdGVDb25kaXRpb25hbFR5cGVOb2RlKE5yLHJpLGRpLE1pKSxMZSl9cmV0dXJuIE5yfWZ1bmN0aW9uIHZhKCl7cmV0dXJuIGF0KDU4KT9BYSgpOnZvaWQgMH1mdW5jdGlvbiBDdSgpe3N3aXRjaChEZSgpKXtjYXNlIDEwODpjYXNlIDEwNjpjYXNlIDEwNDpjYXNlIDExMDpjYXNlIDk1OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAyMDpjYXNlIDIyOmNhc2UgMTg6Y2FzZSA5ODpjYXNlIDg0OmNhc2UgMTAzOmNhc2UgNDM6Y2FzZSA2ODpjYXNlIDc5OnJldHVybiEwO2Nhc2UgMTAwOnJldHVybiBSdChqbik7ZGVmYXVsdDpyZXR1cm4gRmkoKX19ZnVuY3Rpb24gcXMoKXtpZihDdSgpKXJldHVybiEwO3N3aXRjaChEZSgpKXtjYXNlIDM5OmNhc2UgNDA6Y2FzZSA1NDpjYXNlIDUzOmNhc2UgODk6Y2FzZSAxMTI6Y2FzZSAxMTQ6Y2FzZSA0NTpjYXNlIDQ2OmNhc2UgMjk6Y2FzZSAxMzI6Y2FzZSAxMjU6Y2FzZSA4MDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiB4cCgpPyEwOkZpKCl9fWZ1bmN0aW9uIGNkKCl7cmV0dXJuIERlKCkhPT0xOCYmRGUoKSE9PTk4JiZEZSgpIT09ODQmJkRlKCkhPT01OSYmcXMoKX1mdW5jdGlvbiBucygpe3ZhciBMZT12cigpO0xlJiZ3aSghMSk7Zm9yKHZhciBOcj1VZSgpLHJpPWhjKCksZGk7ZGk9QXQoMjcpOylyaT1NXyhyaSxkaSxoYygpLE5yKTtyZXR1cm4gTGUmJndpKCEwKSxyaX1mdW5jdGlvbiBubCgpe3JldHVybiBhdCg2Myk/aGMoKTp2b2lkIDB9ZnVuY3Rpb24gaGMoKXtpZihlcygpKXJldHVybiBKZigpO3ZhciBMZT11ZCgpfHxicCgpO2lmKExlKXJldHVybiBMZTt2YXIgTnI9VWUoKSxyaT1PXygwKTtyZXR1cm4gcmkua2luZD09PTc5JiZEZSgpPT09Mzg/d18oTnIscmksdm9pZCAwKTplLmlzTGVmdEhhbmRTaWRlRXhwcmVzc2lvbihyaSkmJmUuaXNBc3NpZ25tZW50T3BlcmF0b3IoVWkoKSk/TV8ocmksYWkoKSxoYygpLE5yKTpqZihyaSxOcil9ZnVuY3Rpb24gZXMoKXtyZXR1cm4gRGUoKT09PTEyNT9XcigpPyEwOlJ0KHNvKTohMX1mdW5jdGlvbiB1Xygpe3JldHVybiBUcigpLCFELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpJiZGaSgpfWZ1bmN0aW9uIEpmKCl7dmFyIExlPVVlKCk7cmV0dXJuIFRyKCksIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJihEZSgpPT09NDF8fHFzKCkpP0JpKGdlLmNyZWF0ZVlpZWxkRXhwcmVzc2lvbihBdCg0MSksaGMoKSksTGUpOkJpKGdlLmNyZWF0ZVlpZWxkRXhwcmVzc2lvbih2b2lkIDAsdm9pZCAwKSxMZSl9ZnVuY3Rpb24gd18oTGUsTnIscmkpe2UuRGVidWcuYXNzZXJ0KERlKCk9PT0zOCxcInBhcnNlU2ltcGxlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gc2hvdWxkIG9ubHkgaGF2ZSBiZWVuIGNhbGxlZCBpZiB3ZSBoYWQgYSA9PlwiKTt2YXIgZGk9Z2UuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsTnIsdm9pZCAwLHZvaWQgMCx2b2lkIDApO0JpKGRpLE5yLnBvcyk7dmFyIE1pPUNuKFtkaV0sZGkucG9zLGRpLmVuZCksc3Q9JGEoMzgpLHJhPV9kKCEhcmkpLFRhPWdlLmNyZWF0ZUFycm93RnVuY3Rpb24ocmksdm9pZCAwLE1pLHZvaWQgMCxzdCxyYSk7cmV0dXJuIGlpKEJpKFRhLExlKSl9ZnVuY3Rpb24gdWQoKXt2YXIgTGU9a3UoKTtpZihMZSE9PTApcmV0dXJuIExlPT09MT9UcCghMCk6SWkoZmQpfWZ1bmN0aW9uIGt1KCl7cmV0dXJuIERlKCk9PT0yMHx8RGUoKT09PTI5fHxEZSgpPT09MTMxP1J0KGxkKTpEZSgpPT09Mzg/MTowfWZ1bmN0aW9uIGxkKCl7aWYoRGUoKT09PTEzMSYmKFRyKCksRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKXx8RGUoKSE9PTIwJiZEZSgpIT09MjkpKXJldHVybiAwO3ZhciBMZT1EZSgpLE5yPVRyKCk7aWYoTGU9PT0yMCl7aWYoTnI9PT0yMSl7dmFyIHJpPVRyKCk7c3dpdGNoKHJpKXtjYXNlIDM4OmNhc2UgNTg6Y2FzZSAxODpyZXR1cm4gMTtkZWZhdWx0OnJldHVybiAwfX1pZihOcj09PTIyfHxOcj09PTE4KXJldHVybiAyO2lmKE5yPT09MjUpcmV0dXJuIDE7aWYoZS5pc01vZGlmaWVyS2luZChOcikmJk5yIT09MTMxJiZSdChRZSkpcmV0dXJuIFJ0KGZ1bmN0aW9uKCl7cmV0dXJuIFRyKCk9PT0xMjd9KT8wOjE7aWYoIUZpKCkmJk5yIT09MTA4KXJldHVybiAwO3N3aXRjaChUcigpKXtjYXNlIDU4OnJldHVybiAxO2Nhc2UgNTc6cmV0dXJuIFRyKCksRGUoKT09PTU4fHxEZSgpPT09Mjd8fERlKCk9PT02M3x8RGUoKT09PTIxPzE6MDtjYXNlIDI3OmNhc2UgNjM6Y2FzZSAyMTpyZXR1cm4gMn1yZXR1cm4gMH1lbHNle2lmKGUuRGVidWcuYXNzZXJ0KExlPT09MjkpLCFGaSgpKXJldHVybiAwO2lmKEllPT09MSl7dmFyIGRpPVJ0KGZ1bmN0aW9uKCl7dmFyIE1pPVRyKCk7aWYoTWk9PT05NCl7dmFyIHN0PVRyKCk7c3dpdGNoKHN0KXtjYXNlIDYzOmNhc2UgMzE6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19ZWxzZSBpZihNaT09PTI3fHxNaT09PTYzKXJldHVybiEwO3JldHVybiExfSk7cmV0dXJuIGRpPzE6MH1yZXR1cm4gMn19ZnVuY3Rpb24gZmQoKXt2YXIgTGU9RC5nZXRUb2tlblBvcygpO2lmKCEoQnIhPW51bGwmJkJyLmhhcyhMZSkpKXt2YXIgTnI9VHAoITEpO3JldHVybiBOcnx8KEJyfHwoQnI9bmV3IGUuU2V0KSkuYWRkKExlKSxOcn19ZnVuY3Rpb24gYnAoKXtpZihEZSgpPT09MTMxJiZSdChTcCk9PT0xKXt2YXIgTGU9VWUoKSxOcj1IdSgpLHJpPU9fKDApO3JldHVybiB3XyhMZSxyaSxOcil9fWZ1bmN0aW9uIFNwKCl7aWYoRGUoKT09PTEzMSl7aWYoVHIoKSxELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpfHxEZSgpPT09MzgpcmV0dXJuIDA7dmFyIExlPU9fKDApO2lmKCFELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpJiZMZS5raW5kPT09NzkmJkRlKCk9PT0zOClyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBUcChMZSl7dmFyIE5yPVVlKCkscmk9ZnIoKSxkaT1IdSgpLE1pPWUuc29tZShkaSxlLmlzQXN5bmNNb2RpZmllcik/MjowLHN0PVdzKCkscmE7aWYodWkoMjApKXtpZihMZSlyYT1faShNaSxMZSk7ZWxzZXt2YXIgVGE9X2koTWksTGUpO2lmKCFUYSlyZXR1cm47cmE9VGF9aWYoIXVpKDIxKSYmIUxlKXJldHVybn1lbHNle2lmKCFMZSlyZXR1cm47cmE9cHMoKX12YXIgaGE9dmMoNTgsITEpO2lmKCEoaGEmJiFMZSYmQW8oaGEpKSl7Zm9yKHZhciBOYT1oYTsoTmE9PW51bGw/dm9pZCAwOk5hLmtpbmQpPT09MTkxOylOYT1OYS50eXBlO3ZhciBJbj1OYSYmZS5pc0pTRG9jRnVuY3Rpb25UeXBlKE5hKTtpZighKCFMZSYmRGUoKSE9PTM4JiYoSW58fERlKCkhPT0xOCkpKXt2YXIgcW89RGUoKSxjbz0kYSgzOCksdHM9cW89PT0zOHx8cW89PT0xOD9fZChlLnNvbWUoZGksZS5pc0FzeW5jTW9kaWZpZXIpKTplbygpLHZzPWdlLmNyZWF0ZUFycm93RnVuY3Rpb24oZGksc3QscmEsaGEsY28sdHMpO3JldHVybiB3cihCaSh2cyxOcikscmkpfX19ZnVuY3Rpb24gX2QoTGUpe2lmKERlKCk9PT0xOClyZXR1cm4gQ2MoTGU/MjowKTtpZihEZSgpIT09MjYmJkRlKCkhPT05OCYmRGUoKSE9PTg0JiZLdSgpJiYhY2QoKSlyZXR1cm4gQ2MoMTZ8KExlPzI6MCkpO3ZhciBOcj1OZTtOZT0hMTt2YXIgcmk9TGU/SnIoaGMpOnRpKGhjKTtyZXR1cm4gTmU9TnIscml9ZnVuY3Rpb24gamYoTGUsTnIpe3ZhciByaT1BdCg1Nyk7aWYoIXJpKXJldHVybiBMZTt2YXIgZGk7cmV0dXJuIEJpKGdlLmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihMZSxyaSxldChmZSxoYyksZGk9JGEoNTgpLGUubm9kZUlzUHJlc2VudChkaSk/aGMoKTprbig3OSwhMSxlLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLGUudG9rZW5Ub1N0cmluZyg1OCkpKSxOcil9ZnVuY3Rpb24gT18oTGUpe3ZhciBOcj1VZSgpLHJpPWtwKCk7cmV0dXJuIHBkKExlLHJpLE5yKX1mdW5jdGlvbiBGXyhMZSl7cmV0dXJuIExlPT09MTAxfHxMZT09PTE2MH1mdW5jdGlvbiBwZChMZSxOcixyaSl7Zm9yKDs7KXtVaSgpO3ZhciBkaT1lLmdldEJpbmFyeU9wZXJhdG9yUHJlY2VkZW5jZShEZSgpKSxNaT1EZSgpPT09NDI/ZGk+PUxlOmRpPkxlO2lmKCFNaXx8RGUoKT09PTEwMSYmSmUoKSlicmVhaztpZihEZSgpPT09MTI3KXtpZihELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpKWJyZWFrO1RyKCksTnI9RXAoTnIsQWEoKSl9ZWxzZSBOcj1NXyhOcixhaSgpLE9fKGRpKSxyaSl9cmV0dXJuIE5yfWZ1bmN0aW9uIHhwKCl7cmV0dXJuIEplKCkmJkRlKCk9PT0xMDE/ITE6ZS5nZXRCaW5hcnlPcGVyYXRvclByZWNlZGVuY2UoRGUoKSk+MH1mdW5jdGlvbiBNXyhMZSxOcixyaSxkaSl7cmV0dXJuIEJpKGdlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oTGUsTnIscmkpLGRpKX1mdW5jdGlvbiBFcChMZSxOcil7cmV0dXJuIEJpKGdlLmNyZWF0ZUFzRXhwcmVzc2lvbihMZSxOciksTGUucG9zKX1mdW5jdGlvbiBvbCgpe3ZhciBMZT1VZSgpO3JldHVybiBCaShnZS5jcmVhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24oRGUoKSxWcihtdSkpLExlKX1mdW5jdGlvbiBBdSgpe3ZhciBMZT1VZSgpO3JldHVybiBCaShnZS5jcmVhdGVEZWxldGVFeHByZXNzaW9uKFZyKG11KSksTGUpfWZ1bmN0aW9uIHJ1KCl7dmFyIExlPVVlKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZVR5cGVPZkV4cHJlc3Npb24oVnIobXUpKSxMZSl9ZnVuY3Rpb24geWYoKXt2YXIgTGU9VWUoKTtyZXR1cm4gQmkoZ2UuY3JlYXRlVm9pZEV4cHJlc3Npb24oVnIobXUpKSxMZSl9ZnVuY3Rpb24gQ3AoKXtyZXR1cm4gRGUoKT09PTEzMj9tcigpPyEwOlJ0KHNvKTohMX1mdW5jdGlvbiBkZCgpe3ZhciBMZT1VZSgpO3JldHVybiBCaShnZS5jcmVhdGVBd2FpdEV4cHJlc3Npb24oVnIobXUpKSxMZSl9ZnVuY3Rpb24ga3AoKXtpZihnZCgpKXt2YXIgTGU9VWUoKSxOcj1oZigpO3JldHVybiBEZSgpPT09NDI/cGQoZS5nZXRCaW5hcnlPcGVyYXRvclByZWNlZGVuY2UoRGUoKSksTnIsTGUpOk5yfXZhciByaT1EZSgpLGRpPW11KCk7aWYoRGUoKT09PTQyKXt2YXIgTGU9ZS5za2lwVHJpdmlhKEVlLGRpLnBvcyksTWk9ZGkuZW5kO2RpLmtpbmQ9PT0yMTE/bnIoTGUsTWksZS5EaWFnbm9zdGljcy5BX3R5cGVfYXNzZXJ0aW9uX2V4cHJlc3Npb25faXNfbm90X2FsbG93ZWRfaW5fdGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2V4cG9uZW50aWF0aW9uX2V4cHJlc3Npb25fQ29uc2lkZXJfZW5jbG9zaW5nX3RoZV9leHByZXNzaW9uX2luX3BhcmVudGhlc2VzKTpucihMZSxNaSxlLkRpYWdub3N0aWNzLkFuX3VuYXJ5X2V4cHJlc3Npb25fd2l0aF90aGVfMF9vcGVyYXRvcl9pc19ub3RfYWxsb3dlZF9pbl90aGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fZXhwb25lbnRpYXRpb25fZXhwcmVzc2lvbl9Db25zaWRlcl9lbmNsb3NpbmdfdGhlX2V4cHJlc3Npb25faW5fcGFyZW50aGVzZXMsZS50b2tlblRvU3RyaW5nKHJpKSl9cmV0dXJuIGRpfWZ1bmN0aW9uIG11KCl7c3dpdGNoKERlKCkpe2Nhc2UgMzk6Y2FzZSA0MDpjYXNlIDU0OmNhc2UgNTM6cmV0dXJuIG9sKCk7Y2FzZSA4OTpyZXR1cm4gQXUoKTtjYXNlIDExMjpyZXR1cm4gcnUoKTtjYXNlIDExNDpyZXR1cm4geWYoKTtjYXNlIDI5OnJldHVybiBxdSgpO2Nhc2UgMTMyOmlmKENwKCkpcmV0dXJuIGRkKCk7ZGVmYXVsdDpyZXR1cm4gaGYoKX19ZnVuY3Rpb24gZ2QoKXtzd2l0Y2goRGUoKSl7Y2FzZSAzOTpjYXNlIDQwOmNhc2UgNTQ6Y2FzZSA1MzpjYXNlIDg5OmNhc2UgMTEyOmNhc2UgMTE0OmNhc2UgMTMyOnJldHVybiExO2Nhc2UgMjk6aWYoSWUhPT0xKXJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fWZ1bmN0aW9uIGhmKCl7aWYoRGUoKT09PTQ1fHxEZSgpPT09NDYpe3ZhciBMZT1VZSgpO3JldHVybiBCaShnZS5jcmVhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24oRGUoKSxWcigkbCkpLExlKX1lbHNlIGlmKEllPT09MSYmRGUoKT09PTI5JiZSdChTKSlyZXR1cm4gbF8oITApO3ZhciBOcj0kbCgpO2lmKGUuRGVidWcuYXNzZXJ0KGUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKE5yKSksKERlKCk9PT00NXx8RGUoKT09PTQ2KSYmIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkpe3ZhciByaT1EZSgpO3JldHVybiBUcigpLEJpKGdlLmNyZWF0ZVBvc3RmaXhVbmFyeUV4cHJlc3Npb24oTnIscmkpLE5yLnBvcyl9cmV0dXJuIE5yfWZ1bmN0aW9uICRsKCl7dmFyIExlPVVlKCksTnI7cmV0dXJuIERlKCk9PT0xMDA/UnQocWEpPyh6ZXw9MjA5NzE1MixOcj1haSgpKTpSdChybik/KFRyKCksVHIoKSxOcj1CaShnZS5jcmVhdGVNZXRhUHJvcGVydHkoMTAwLFJuKCkpLExlKSx6ZXw9NDE5NDMwNCk6TnI9VWYoKTpOcj1EZSgpPT09MTA2P0xfKCk6VWYoKSxQcyhMZSxOcil9ZnVuY3Rpb24gVWYoKXt2YXIgTGU9VWUoKSxOcj12dSgpO3JldHVybiBFYyhMZSxOciwhMCl9ZnVuY3Rpb24gTF8oKXt2YXIgTGU9VWUoKSxOcj1haSgpO2lmKERlKCk9PT0yOSl7dmFyIHJpPVVlKCksZGk9SWkoR2MpO2RpIT09dm9pZCAwJiZucihyaSxVZSgpLGUuRGlhZ25vc3RpY3Muc3VwZXJfbWF5X25vdF91c2VfdHlwZV9hcmd1bWVudHMpfXJldHVybiBEZSgpPT09MjB8fERlKCk9PT0yNHx8RGUoKT09PTIyP05yOigkYSgyNCxlLkRpYWdub3N0aWNzLnN1cGVyX211c3RfYmVfZm9sbG93ZWRfYnlfYW5fYXJndW1lbnRfbGlzdF9vcl9tZW1iZXJfYWNjZXNzKSxCaShnZS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oTnIsY2UoITAsITApKSxMZSkpfWZ1bmN0aW9uIGxfKExlLE5yLHJpKXt2YXIgZGk9VWUoKSxNaT1abChMZSksc3Q7aWYoTWkua2luZD09PTI4MCl7dmFyIHJhPWtzKE1pKSxUYT12b2lkIDAsaGE9cmFbcmEubGVuZ3RoLTFdO2lmKChoYT09bnVsbD92b2lkIDA6aGEua2luZCk9PT0yNzgmJiFsKGhhLm9wZW5pbmdFbGVtZW50LnRhZ05hbWUsaGEuY2xvc2luZ0VsZW1lbnQudGFnTmFtZSkmJmwoTWkudGFnTmFtZSxoYS5jbG9zaW5nRWxlbWVudC50YWdOYW1lKSl7dmFyIE5hPWhhLmNoaWxkcmVuLmVuZCxJbj1CaShnZS5jcmVhdGVKc3hFbGVtZW50KGhhLm9wZW5pbmdFbGVtZW50LGhhLmNoaWxkcmVuLEJpKGdlLmNyZWF0ZUpzeENsb3NpbmdFbGVtZW50KEJpKGdlLmNyZWF0ZUlkZW50aWZpZXIoXCJcIiksTmEsTmEpKSxOYSxOYSkpLGhhLm9wZW5pbmdFbGVtZW50LnBvcyxOYSk7cmE9Q24oVmUoVmUoW10scmEuc2xpY2UoMCxyYS5sZW5ndGgtMSksITApLFtJbl0sITEpLHJhLnBvcyxOYSksVGE9aGEuY2xvc2luZ0VsZW1lbnR9ZWxzZSBUYT1BbChNaSxMZSksbChNaS50YWdOYW1lLFRhLnRhZ05hbWUpfHwocmkmJmUuaXNKc3hPcGVuaW5nRWxlbWVudChyaSkmJmwoVGEudGFnTmFtZSxyaS50YWdOYW1lKT9NcihNaS50YWdOYW1lLGUuRGlhZ25vc3RpY3MuSlNYX2VsZW1lbnRfMF9oYXNfbm9fY29ycmVzcG9uZGluZ19jbG9zaW5nX3RhZyxlLmdldFRleHRPZk5vZGVGcm9tU291cmNlVGV4dChFZSxNaS50YWdOYW1lKSk6TXIoVGEudGFnTmFtZSxlLkRpYWdub3N0aWNzLkV4cGVjdGVkX2NvcnJlc3BvbmRpbmdfSlNYX2Nsb3NpbmdfdGFnX2Zvcl8wLGUuZ2V0VGV4dE9mTm9kZUZyb21Tb3VyY2VUZXh0KEVlLE1pLnRhZ05hbWUpKSk7c3Q9QmkoZ2UuY3JlYXRlSnN4RWxlbWVudChNaSxyYSxUYSksZGkpfWVsc2UgTWkua2luZD09PTI4Mz9zdD1CaShnZS5jcmVhdGVKc3hGcmFnbWVudChNaSxrcyhNaSksd2MoTGUpKSxkaSk6KGUuRGVidWcuYXNzZXJ0KE1pLmtpbmQ9PT0yNzkpLHN0PU1pKTtpZihMZSYmRGUoKT09PTI5KXt2YXIgcW89dHlwZW9mIE5yPlwidVwiP3N0LnBvczpOcixjbz1JaShmdW5jdGlvbigpe3JldHVybiBsXyghMCxxbyl9KTtpZihjbyl7dmFyIHRzPWtuKDI3LCExKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2VQb3NXaWR0aCh0cyxjby5wb3MsMCksbnIoZS5za2lwVHJpdmlhKEVlLHFvKSxjby5lbmQsZS5EaWFnbm9zdGljcy5KU1hfZXhwcmVzc2lvbnNfbXVzdF9oYXZlX29uZV9wYXJlbnRfZWxlbWVudCksQmkoZ2UuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihzdCx0cyxjbyksZGkpfX1yZXR1cm4gc3R9ZnVuY3Rpb24gZl8oKXt2YXIgTGU9VWUoKSxOcj1nZS5jcmVhdGVKc3hUZXh0KEQuZ2V0VG9rZW5WYWx1ZSgpLHllPT09MTIpO3JldHVybiB5ZT1ELnNjYW5Kc3hUb2tlbigpLEJpKE5yLExlKX1mdW5jdGlvbiBtZChMZSxOcil7c3dpdGNoKE5yKXtjYXNlIDE6aWYoZS5pc0pzeE9wZW5pbmdGcmFnbWVudChMZSkpTXIoTGUsZS5EaWFnbm9zdGljcy5KU1hfZnJhZ21lbnRfaGFzX25vX2NvcnJlc3BvbmRpbmdfY2xvc2luZ190YWcpO2Vsc2V7dmFyIHJpPUxlLnRhZ05hbWUsZGk9ZS5za2lwVHJpdmlhKEVlLHJpLnBvcyk7bnIoZGkscmkuZW5kLGUuRGlhZ25vc3RpY3MuSlNYX2VsZW1lbnRfMF9oYXNfbm9fY29ycmVzcG9uZGluZ19jbG9zaW5nX3RhZyxlLmdldFRleHRPZk5vZGVGcm9tU291cmNlVGV4dChFZSxMZS50YWdOYW1lKSl9cmV0dXJuO2Nhc2UgMzA6Y2FzZSA3OnJldHVybjtjYXNlIDExOmNhc2UgMTI6cmV0dXJuIGZfKCk7Y2FzZSAxODpyZXR1cm4ga2woITEpO2Nhc2UgMjk6cmV0dXJuIGxfKCExLHZvaWQgMCxMZSk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihOcil9fWZ1bmN0aW9uIGtzKExlKXt2YXIgTnI9W10scmk9VWUoKSxkaT1ZZTtmb3IoWWV8PTE8PDE0Ozspe3ZhciBNaT1tZChMZSx5ZT1ELnJlU2NhbkpzeFRva2VuKCkpO2lmKCFNaXx8KE5yLnB1c2goTWkpLGUuaXNKc3hPcGVuaW5nRWxlbWVudChMZSkmJihNaT09bnVsbD92b2lkIDA6TWkua2luZCk9PT0yNzgmJiFsKE1pLm9wZW5pbmdFbGVtZW50LnRhZ05hbWUsTWkuY2xvc2luZ0VsZW1lbnQudGFnTmFtZSkmJmwoTGUudGFnTmFtZSxNaS5jbG9zaW5nRWxlbWVudC50YWdOYW1lKSkpYnJlYWt9cmV0dXJuIFllPWRpLENuKE5yLHJpKX1mdW5jdGlvbiBXdSgpe3ZhciBMZT1VZSgpO3JldHVybiBCaShnZS5jcmVhdGVKc3hBdHRyaWJ1dGVzKFFpKDEzLF9fKSksTGUpfWZ1bmN0aW9uIFpsKExlKXt2YXIgTnI9VWUoKTtpZih1aSgyOSksRGUoKT09PTMxKXJldHVybiB4dCgpLEJpKGdlLmNyZWF0ZUpzeE9wZW5pbmdGcmFnbWVudCgpLE5yKTt2YXIgcmk9Ul8oKSxkaT0oRXImMjYyMTQ0KT09PTA/bV8oKTp2b2lkIDAsTWk9V3UoKSxzdDtyZXR1cm4gRGUoKT09PTMxPyh4dCgpLHN0PWdlLmNyZWF0ZUpzeE9wZW5pbmdFbGVtZW50KHJpLGRpLE1pKSk6KHVpKDQzKSx1aSgzMSx2b2lkIDAsITEpJiYoTGU/VHIoKTp4dCgpKSxzdD1nZS5jcmVhdGVKc3hTZWxmQ2xvc2luZ0VsZW1lbnQocmksZGksTWkpKSxCaShzdCxOcil9ZnVuY3Rpb24gUl8oKXt2YXIgTGU9VWUoKTtNdCgpO2Zvcih2YXIgTnI9RGUoKT09PTEwOD9haSgpOlJuKCk7YXQoMjQpOylOcj1CaShnZS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oTnIsY2UoITAsITEpKSxMZSk7cmV0dXJuIE5yfWZ1bmN0aW9uIGtsKExlKXt2YXIgTnI9VWUoKTtpZighIXVpKDE4KSl7dmFyIHJpLGRpO3JldHVybiBEZSgpIT09MTkmJihyaT1BdCgyNSksZGk9bnMoKSksTGU/dWkoMTkpOnVpKDE5LHZvaWQgMCwhMSkmJnh0KCksQmkoZ2UuY3JlYXRlSnN4RXhwcmVzc2lvbihyaSxkaSksTnIpfX1mdW5jdGlvbiBfXygpe2lmKERlKCk9PT0xOClyZXR1cm4gemQoKTtNdCgpO3ZhciBMZT1VZSgpO3JldHVybiBCaShnZS5jcmVhdGVKc3hBdHRyaWJ1dGUoUm4oKSxEZSgpIT09NjM/dm9pZCAwOnV0KCk9PT0xMD9nYSgpOmtsKCEwKSksTGUpfWZ1bmN0aW9uIHpkKCl7dmFyIExlPVVlKCk7dWkoMTgpLHVpKDI1KTt2YXIgTnI9bnMoKTtyZXR1cm4gdWkoMTkpLEJpKGdlLmNyZWF0ZUpzeFNwcmVhZEF0dHJpYnV0ZShOciksTGUpfWZ1bmN0aW9uIEFsKExlLE5yKXt2YXIgcmk9VWUoKTt1aSgzMCk7dmFyIGRpPVJfKCk7cmV0dXJuIHVpKDMxLHZvaWQgMCwhMSkmJihOcnx8IWwoTGUudGFnTmFtZSxkaSk/VHIoKTp4dCgpKSxCaShnZS5jcmVhdGVKc3hDbG9zaW5nRWxlbWVudChkaSkscmkpfWZ1bmN0aW9uIHdjKExlKXt2YXIgTnI9VWUoKTtyZXR1cm4gdWkoMzApLGUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSkmJk1yKFJfKCksZS5EaWFnbm9zdGljcy5FeHBlY3RlZF9jb3JyZXNwb25kaW5nX2Nsb3NpbmdfdGFnX2Zvcl9KU1hfZnJhZ21lbnQpLHVpKDMxLHZvaWQgMCwhMSkmJihMZT9UcigpOnh0KCkpLEJpKGdlLmNyZWF0ZUpzeEpzeENsb3NpbmdGcmFnbWVudCgpLE5yKX1mdW5jdGlvbiBxdSgpe3ZhciBMZT1VZSgpO3VpKDI5KTt2YXIgTnI9QWEoKTt1aSgzMSk7dmFyIHJpPW11KCk7cmV0dXJuIEJpKGdlLmNyZWF0ZVR5cGVBc3NlcnRpb24oTnIscmkpLExlKX1mdW5jdGlvbiBWdSgpe3JldHVybiBUcigpLGUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSl8fERlKCk9PT0yMnx8Wm4oKX1mdW5jdGlvbiBlZigpe3JldHVybiBEZSgpPT09MjgmJlJ0KFZ1KX1mdW5jdGlvbiBzbChMZSl7aWYoTGUuZmxhZ3MmMzIpcmV0dXJuITA7aWYoZS5pc05vbk51bGxFeHByZXNzaW9uKExlKSl7Zm9yKHZhciBOcj1MZS5leHByZXNzaW9uO2UuaXNOb25OdWxsRXhwcmVzc2lvbihOcikmJiEoTnIuZmxhZ3MmMzIpOylOcj1Oci5leHByZXNzaW9uO2lmKE5yLmZsYWdzJjMyKXtmb3IoO2UuaXNOb25OdWxsRXhwcmVzc2lvbihMZSk7KUxlLmZsYWdzfD0zMixMZT1MZS5leHByZXNzaW9uO3JldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBwXyhMZSxOcixyaSl7dmFyIGRpPWNlKCEwLCEwKSxNaT1yaXx8c2woTnIpLHN0PU1pP2dlLmNyZWF0ZVByb3BlcnR5QWNjZXNzQ2hhaW4oTnIscmksZGkpOmdlLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihOcixkaSk7cmV0dXJuIE1pJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIoc3QubmFtZSkmJk1yKHN0Lm5hbWUsZS5EaWFnbm9zdGljcy5Bbl9vcHRpb25hbF9jaGFpbl9jYW5ub3RfY29udGFpbl9wcml2YXRlX2lkZW50aWZpZXJzKSxCaShzdCxMZSl9ZnVuY3Rpb24gRGYoTGUsTnIscmkpe3ZhciBkaTtpZihEZSgpPT09MjMpZGk9a24oNzksITAsZS5EaWFnbm9zdGljcy5Bbl9lbGVtZW50X2FjY2Vzc19leHByZXNzaW9uX3Nob3VsZF90YWtlX2FuX2FyZ3VtZW50KTtlbHNle3ZhciBNaT1XdChucyk7ZS5pc1N0cmluZ09yTnVtZXJpY0xpdGVyYWxMaWtlKE1pKSYmKE1pLnRleHQ9eG4oTWkudGV4dCkpLGRpPU1pfXVpKDIzKTt2YXIgc3Q9cml8fHNsKE5yKT9nZS5jcmVhdGVFbGVtZW50QWNjZXNzQ2hhaW4oTnIscmksZGkpOmdlLmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKE5yLGRpKTtyZXR1cm4gQmkoc3QsTGUpfWZ1bmN0aW9uIEVjKExlLE5yLHJpKXtmb3IoOzspe3ZhciBkaT12b2lkIDAsTWk9ITE7aWYocmkmJmVmKCk/KGRpPSRhKDI4KSxNaT1lLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpKTpNaT1hdCgyNCksTWkpe05yPXBfKExlLE5yLGRpKTtjb250aW51ZX1pZigoZGl8fCF2cigpKSYmYXQoMjIpKXtOcj1EZihMZSxOcixkaSk7Y29udGludWV9aWYoWm4oKSl7TnI9IWRpJiZOci5raW5kPT09MjI4P29zKExlLE5yLmV4cHJlc3Npb24sZGksTnIudHlwZUFyZ3VtZW50cyk6b3MoTGUsTnIsZGksdm9pZCAwKTtjb250aW51ZX1pZighZGkpe2lmKERlKCk9PT01MyYmIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkpe1RyKCksTnI9QmkoZ2UuY3JlYXRlTm9uTnVsbEV4cHJlc3Npb24oTnIpLExlKTtjb250aW51ZX12YXIgc3Q9SWkoR2MpO2lmKHN0KXtOcj1CaShnZS5jcmVhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoTnIsc3QpLExlKTtjb250aW51ZX19cmV0dXJuIE5yfX1mdW5jdGlvbiBabigpe3JldHVybiBEZSgpPT09MTR8fERlKCk9PT0xNX1mdW5jdGlvbiBvcyhMZSxOcixyaSxkaSl7dmFyIE1pPWdlLmNyZWF0ZVRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbihOcixkaSxEZSgpPT09MTQ/KGN0KCksZ2EoKSk6eWkoITApKTtyZXR1cm4ocml8fE5yLmZsYWdzJjMyKSYmKE1pLmZsYWdzfD0zMiksTWkucXVlc3Rpb25Eb3RUb2tlbj1yaSxCaShNaSxMZSl9ZnVuY3Rpb24gUHMoTGUsTnIpe2Zvcig7Oyl7TnI9RWMoTGUsTnIsITApO3ZhciByaT12b2lkIDAsZGk9QXQoMjgpO2lmKGRpJiYocmk9SWkoR2MpLFpuKCkpKXtOcj1vcyhMZSxOcixkaSxyaSk7Y29udGludWV9aWYocml8fERlKCk9PT0yMCl7IWRpJiZOci5raW5kPT09MjI4JiYocmk9TnIudHlwZUFyZ3VtZW50cyxOcj1Oci5leHByZXNzaW9uKTt2YXIgTWk9ZF8oKSxzdD1kaXx8c2woTnIpP2dlLmNyZWF0ZUNhbGxDaGFpbihOcixkaSxyaSxNaSk6Z2UuY3JlYXRlQ2FsbEV4cHJlc3Npb24oTnIscmksTWkpO05yPUJpKHN0LExlKTtjb250aW51ZX1pZihkaSl7dmFyIHJhPWtuKDc5LCExLGUuRGlhZ25vc3RpY3MuSWRlbnRpZmllcl9leHBlY3RlZCk7TnI9QmkoZ2UuY3JlYXRlUHJvcGVydHlBY2Nlc3NDaGFpbihOcixkaSxyYSksTGUpfWJyZWFrfXJldHVybiBOcn1mdW5jdGlvbiBkXygpe3VpKDIwKTt2YXIgTGU9aHMoMTEsTmwpO3JldHVybiB1aSgyMSksTGV9ZnVuY3Rpb24gR2MoKXtpZigoRXImMjYyMTQ0KT09PTAmJkxpKCk9PT0yOSl7VHIoKTt2YXIgTGU9aHMoMjAsQWEpO2lmKCEhdWkoMzEpKXJldHVybiBMZSYmQl8oKT9MZTp2b2lkIDB9fWZ1bmN0aW9uIEJfKCl7c3dpdGNoKERlKCkpe2Nhc2UgMjA6Y2FzZSAxNDpjYXNlIDE1OnJldHVybiEwfXJldHVybiFxcygpfWZ1bmN0aW9uIHZ1KCl7c3dpdGNoKERlKCkpe2Nhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDE0OnJldHVybiBnYSgpO2Nhc2UgMTA4OmNhc2UgMTA2OmNhc2UgMTA0OmNhc2UgMTEwOmNhc2UgOTU6cmV0dXJuIGFpKCk7Y2FzZSAyMDpyZXR1cm4gR3QoKTtjYXNlIDIyOnJldHVybiBjbCgpO2Nhc2UgMTg6cmV0dXJuIFV0KCk7Y2FzZSAxMzE6aWYoIVJ0KEl1KSlicmVhaztyZXR1cm4gRHMoKTtjYXNlIDg0OnJldHVybiB0bigpO2Nhc2UgOTg6cmV0dXJuIERzKCk7Y2FzZSAxMDM6cmV0dXJuIGJzKCk7Y2FzZSA0MzpjYXNlIDY4OmlmKFlpKCk9PT0xMylyZXR1cm4gZ2EoKTticmVhaztjYXNlIDE1OnJldHVybiB5aSghMSk7Y2FzZSA4MDpyZXR1cm4gQ28oKX1yZXR1cm4gZW8oZS5EaWFnbm9zdGljcy5FeHByZXNzaW9uX2V4cGVjdGVkKX1mdW5jdGlvbiBHdCgpe3ZhciBMZT1VZSgpLE5yPWZyKCk7dWkoMjApO3ZhciByaT1XdChucyk7cmV0dXJuIHVpKDIxKSx3cihCaShnZS5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihyaSksTGUpLE5yKX1mdW5jdGlvbiBBcygpe3ZhciBMZT1VZSgpO3VpKDI1KTt2YXIgTnI9aGMoKTtyZXR1cm4gQmkoZ2UuY3JlYXRlU3ByZWFkRWxlbWVudChOciksTGUpfWZ1bmN0aW9uIHZuKCl7cmV0dXJuIERlKCk9PT0yNT9BcygpOkRlKCk9PT0yNz9CaShnZS5jcmVhdGVPbWl0dGVkRXhwcmVzc2lvbigpLFVlKCkpOmhjKCl9ZnVuY3Rpb24gTmwoKXtyZXR1cm4gZXQoZmUsdm4pfWZ1bmN0aW9uIGNsKCl7dmFyIExlPVVlKCksTnI9RC5nZXRUb2tlblBvcygpLHJpPXVpKDIyKSxkaT1ELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpLE1pPWhzKDE1LHZuKTtyZXR1cm4gVmkoMjIsMjMscmksTnIpLEJpKGdlLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oTWksZGkpLExlKX1mdW5jdGlvbiByZigpe3ZhciBMZT1VZSgpLE5yPWZyKCk7aWYoQXQoMjUpKXt2YXIgcmk9aGMoKTtyZXR1cm4gd3IoQmkoZ2UuY3JlYXRlU3ByZWFkQXNzaWdubWVudChyaSksTGUpLE5yKX12YXIgZGk9Z2woKSxNaT1GYygpO2lmKEtvKDEzNikpcmV0dXJuIEd1KExlLE5yLGRpLE1pLDE3Mik7aWYoS28oMTQ5KSlyZXR1cm4gR3UoTGUsTnIsZGksTWksMTczKTt2YXIgc3Q9QXQoNDEpLHJhPUZpKCksVGE9RW4oKSxoYT1BdCg1NyksTmE9QXQoNTMpO2lmKHN0fHxEZSgpPT09MjB8fERlKCk9PT0yOSlyZXR1cm4gcGwoTGUsTnIsZGksTWksc3QsVGEsaGEsTmEpO3ZhciBJbixxbz1yYSYmRGUoKSE9PTU4O2lmKHFvKXt2YXIgY289QXQoNjMpLHRzPWNvP1d0KGhjKTp2b2lkIDA7SW49Z2UuY3JlYXRlU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KFRhLHRzKSxJbi5lcXVhbHNUb2tlbj1jb31lbHNle3VpKDU4KTt2YXIgdnM9V3QoaGMpO0luPWdlLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChUYSx2cyl9cmV0dXJuIEluLmRlY29yYXRvcnM9ZGksSW4ubW9kaWZpZXJzPU1pLEluLnF1ZXN0aW9uVG9rZW49aGEsSW4uZXhjbGFtYXRpb25Ub2tlbj1OYSx3cihCaShJbixMZSksTnIpfWZ1bmN0aW9uIFV0KCl7dmFyIExlPVVlKCksTnI9RC5nZXRUb2tlblBvcygpLHJpPXVpKDE4KSxkaT1ELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpLE1pPWhzKDEyLHJmLCEwKTtyZXR1cm4gVmkoMTgsMTkscmksTnIpLEJpKGdlLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKE1pLGRpKSxMZSl9ZnVuY3Rpb24gRHMoKXt2YXIgTGU9dnIoKTt3aSghMSk7dmFyIE5yPVVlKCkscmk9ZnIoKSxkaT1GYygpO3VpKDk4KTt2YXIgTWk9QXQoNDEpLHN0PU1pPzE6MCxyYT1lLnNvbWUoZGksZS5pc0FzeW5jTW9kaWZpZXIpPzI6MCxUYT1zdCYmcmE/WmUoYmYpOnN0P2FlKGJmKTpyYT9KcihiZik6YmYoKSxoYT1XcygpLE5hPUVpKHN0fHJhKSxJbj12Yyg1OCwhMSkscW89Q2Moc3R8cmEpO3dpKExlKTt2YXIgY289Z2UuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGRpLE1pLFRhLGhhLE5hLEluLHFvKTtyZXR1cm4gd3IoQmkoY28sTnIpLHJpKX1mdW5jdGlvbiBiZigpe3JldHVybiBLaSgpP1BuKCk6dm9pZCAwfWZ1bmN0aW9uIGJzKCl7dmFyIExlPVVlKCk7aWYodWkoMTAzKSxhdCgyNCkpe3ZhciBOcj1SbigpO3JldHVybiBCaShnZS5jcmVhdGVNZXRhUHJvcGVydHkoMTAzLE5yKSxMZSl9dmFyIHJpPVVlKCksZGk9RWMocmksdnUoKSwhMSksTWk7ZGkua2luZD09PTIyOCYmKE1pPWRpLnR5cGVBcmd1bWVudHMsZGk9ZGkuZXhwcmVzc2lvbik7dmFyIHN0PURlKCk9PT0yMD9kXygpOnZvaWQgMDtyZXR1cm4gQmkoZ2UuY3JlYXRlTmV3RXhwcmVzc2lvbihkaSxNaSxzdCksTGUpfWZ1bmN0aW9uIERjKExlLE5yKXt2YXIgcmk9VWUoKSxkaT1mcigpLE1pPUQuZ2V0VG9rZW5Qb3MoKSxzdD11aSgxOCxOcik7aWYoc3R8fExlKXt2YXIgcmE9RC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSxUYT1RaSgxLG5jKTtWaSgxOCwxOSxzdCxNaSk7dmFyIGhhPXdyKEJpKGdlLmNyZWF0ZUJsb2NrKFRhLHJhKSxyaSksZGkpO3JldHVybiBEZSgpPT09NjMmJihBcihlLkRpYWdub3N0aWNzLkRlY2xhcmF0aW9uX29yX3N0YXRlbWVudF9leHBlY3RlZF9UaGlzX2ZvbGxvd3NfYV9ibG9ja19vZl9zdGF0ZW1lbnRzX3NvX2lmX3lvdV9pbnRlbmRlZF90b193cml0ZV9hX2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF95b3VfbWlnaHRfbmVlZF90b193cmFwX3RoZV90aGVfd2hvbGVfYXNzaWdubWVudF9pbl9wYXJlbnRoZXNlcyksVHIoKSksaGF9ZWxzZXt2YXIgVGE9cHMoKTtyZXR1cm4gd3IoQmkoZ2UuY3JlYXRlQmxvY2soVGEsdm9pZCAwKSxyaSksZGkpfX1mdW5jdGlvbiBDYyhMZSxOcil7dmFyIHJpPVdyKCk7RGkoISEoTGUmMSkpO3ZhciBkaT1tcigpO1hpKCEhKExlJjIpKTt2YXIgTWk9TmU7TmU9ITE7dmFyIHN0PXZyKCk7c3QmJndpKCExKTt2YXIgcmE9RGMoISEoTGUmMTYpLE5yKTtyZXR1cm4gc3QmJndpKCEwKSxOZT1NaSxEaShyaSksWGkoZGkpLHJhfWZ1bmN0aW9uIGFjKCl7dmFyIExlPVVlKCksTnI9ZnIoKTtyZXR1cm4gdWkoMjYpLHdyKEJpKGdlLmNyZWF0ZUVtcHR5U3RhdGVtZW50KCksTGUpLE5yKX1mdW5jdGlvbiBQbCgpe3ZhciBMZT1VZSgpLE5yPWZyKCk7dWkoOTkpO3ZhciByaT1ELmdldFRva2VuUG9zKCksZGk9dWkoMjApLE1pPVd0KG5zKTtWaSgyMCwyMSxkaSxyaSk7dmFyIHN0PW5jKCkscmE9YXQoOTEpP25jKCk6dm9pZCAwO3JldHVybiB3cihCaShnZS5jcmVhdGVJZlN0YXRlbWVudChNaSxzdCxyYSksTGUpLE5yKX1mdW5jdGlvbiBJbCgpe3ZhciBMZT1VZSgpLE5yPWZyKCk7dWkoOTApO3ZhciByaT1uYygpO3VpKDExNSk7dmFyIGRpPUQuZ2V0VG9rZW5Qb3MoKSxNaT11aSgyMCksc3Q9V3QobnMpO3JldHVybiBWaSgyMCwyMSxNaSxkaSksYXQoMjYpLHdyKEJpKGdlLmNyZWF0ZURvU3RhdGVtZW50KHJpLHN0KSxMZSksTnIpfWZ1bmN0aW9uIHpmKCl7dmFyIExlPVVlKCksTnI9ZnIoKTt1aSgxMTUpO3ZhciByaT1ELmdldFRva2VuUG9zKCksZGk9dWkoMjApLE1pPVd0KG5zKTtWaSgyMCwyMSxkaSxyaSk7dmFyIHN0PW5jKCk7cmV0dXJuIHdyKEJpKGdlLmNyZWF0ZVdoaWxlU3RhdGVtZW50KE1pLHN0KSxMZSksTnIpfWZ1bmN0aW9uIHVsKCl7dmFyIExlPVVlKCksTnI9ZnIoKTt1aSg5Nyk7dmFyIHJpPUF0KDEzMik7dWkoMjApO3ZhciBkaTtEZSgpIT09MjYmJihEZSgpPT09MTEzfHxEZSgpPT09MTE5fHxEZSgpPT09ODU/ZGk9el8oITApOmRpPVp0KG5zKSk7dmFyIE1pO2lmKHJpP3VpKDE2MCk6YXQoMTYwKSl7dmFyIHN0PVd0KGhjKTt1aSgyMSksTWk9Z2UuY3JlYXRlRm9yT2ZTdGF0ZW1lbnQocmksZGksc3QsbmMoKSl9ZWxzZSBpZihhdCgxMDEpKXt2YXIgc3Q9V3QobnMpO3VpKDIxKSxNaT1nZS5jcmVhdGVGb3JJblN0YXRlbWVudChkaSxzdCxuYygpKX1lbHNle3VpKDI2KTt2YXIgcmE9RGUoKSE9PTI2JiZEZSgpIT09MjE/V3QobnMpOnZvaWQgMDt1aSgyNik7dmFyIFRhPURlKCkhPT0yMT9XdChucyk6dm9pZCAwO3VpKDIxKSxNaT1nZS5jcmVhdGVGb3JTdGF0ZW1lbnQoZGkscmEsVGEsbmMoKSl9cmV0dXJuIHdyKEJpKE1pLExlKSxOcil9ZnVuY3Rpb24gTnUoTGUpe3ZhciBOcj1VZSgpLHJpPWZyKCk7dWkoTGU9PT0yNDY/ODE6ODYpO3ZhciBkaT1rYSgpP3ZvaWQgMDplbygpO3BuKCk7dmFyIE1pPUxlPT09MjQ2P2dlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KGRpKTpnZS5jcmVhdGVDb250aW51ZVN0YXRlbWVudChkaSk7cmV0dXJuIHdyKEJpKE1pLE5yKSxyaSl9ZnVuY3Rpb24gVXMoKXt2YXIgTGU9VWUoKSxOcj1mcigpO3VpKDEwNSk7dmFyIHJpPWthKCk/dm9pZCAwOld0KG5zKTtyZXR1cm4gcG4oKSx3cihCaShnZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQocmkpLExlKSxOcil9ZnVuY3Rpb24gQXAoKXt2YXIgTGU9VWUoKSxOcj1mcigpO3VpKDExNik7dmFyIHJpPUQuZ2V0VG9rZW5Qb3MoKSxkaT11aSgyMCksTWk9V3QobnMpO1ZpKDIwLDIxLGRpLHJpKTt2YXIgc3Q9R2koMzM1NTQ0MzIsbmMpO3JldHVybiB3cihCaShnZS5jcmVhdGVXaXRoU3RhdGVtZW50KE1pLHN0KSxMZSksTnIpfWZ1bmN0aW9uIFdmKCl7dmFyIExlPVVlKCksTnI9ZnIoKTt1aSg4Mik7dmFyIHJpPVd0KG5zKTt1aSg1OCk7dmFyIGRpPVFpKDMsbmMpO3JldHVybiB3cihCaShnZS5jcmVhdGVDYXNlQ2xhdXNlKHJpLGRpKSxMZSksTnIpfWZ1bmN0aW9uIFNmKCl7dmFyIExlPVVlKCk7dWkoODgpLHVpKDU4KTt2YXIgTnI9UWkoMyxuYyk7cmV0dXJuIEJpKGdlLmNyZWF0ZURlZmF1bHRDbGF1c2UoTnIpLExlKX1mdW5jdGlvbiBsbCgpe3JldHVybiBEZSgpPT09ODI/V2YoKTpTZigpfWZ1bmN0aW9uIEpfKCl7dmFyIExlPVVlKCk7dWkoMTgpO3ZhciBOcj1RaSgyLGxsKTtyZXR1cm4gdWkoMTkpLEJpKGdlLmNyZWF0ZUNhc2VCbG9jayhOciksTGUpfWZ1bmN0aW9uIGpfKCl7dmFyIExlPVVlKCksTnI9ZnIoKTt1aSgxMDcpLHVpKDIwKTt2YXIgcmk9V3QobnMpO3VpKDIxKTt2YXIgZGk9Sl8oKTtyZXR1cm4gd3IoQmkoZ2UuY3JlYXRlU3dpdGNoU3RhdGVtZW50KHJpLGRpKSxMZSksTnIpfWZ1bmN0aW9uIFVfKCl7dmFyIExlPVVlKCksTnI9ZnIoKTt1aSgxMDkpO3ZhciByaT1ELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpP3ZvaWQgMDpXdChucyk7cmV0dXJuIHJpPT09dm9pZCAwJiYoQ3IrKyxyaT1CaShnZS5jcmVhdGVJZGVudGlmaWVyKFwiXCIpLFVlKCkpKSxCYSgpfHx3dChyaSksd3IoQmkoZ2UuY3JlYXRlVGhyb3dTdGF0ZW1lbnQocmkpLExlKSxOcil9ZnVuY3Rpb24gaXUoKXt2YXIgTGU9VWUoKSxOcj1mcigpO3VpKDExMSk7dmFyIHJpPURjKCExKSxkaT1EZSgpPT09ODM/dmQoKTp2b2lkIDAsTWk7cmV0dXJuKCFkaXx8RGUoKT09PTk2KSYmKHVpKDk2LGUuRGlhZ25vc3RpY3MuY2F0Y2hfb3JfZmluYWxseV9leHBlY3RlZCksTWk9RGMoITEpKSx3cihCaShnZS5jcmVhdGVUcnlTdGF0ZW1lbnQocmksZGksTWkpLExlKSxOcil9ZnVuY3Rpb24gdmQoKXt2YXIgTGU9VWUoKTt1aSg4Myk7dmFyIE5yO2F0KDIwKT8oTnI9eGYoKSx1aSgyMSkpOk5yPXZvaWQgMDt2YXIgcmk9RGMoITEpO3JldHVybiBCaShnZS5jcmVhdGVDYXRjaENsYXVzZShOcixyaSksTGUpfWZ1bmN0aW9uIHFmKCl7dmFyIExlPVVlKCksTnI9ZnIoKTtyZXR1cm4gdWkoODcpLHBuKCksd3IoQmkoZ2UuY3JlYXRlRGVidWdnZXJTdGF0ZW1lbnQoKSxMZSksTnIpfWZ1bmN0aW9uIGRjKCl7dmFyIExlPVVlKCksTnI9ZnIoKSxyaSxkaT1EZSgpPT09MjAsTWk9V3QobnMpO3JldHVybiBlLmlzSWRlbnRpZmllcihNaSkmJmF0KDU4KT9yaT1nZS5jcmVhdGVMYWJlbGVkU3RhdGVtZW50KE1pLG5jKCkpOihCYSgpfHx3dChNaSkscmk9Z2UuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChNaSksZGkmJihOcj0hMSkpLHdyKEJpKHJpLExlKSxOcil9ZnVuY3Rpb24gUHUoKXtyZXR1cm4gVHIoKSxlLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpJiYhRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKX1mdW5jdGlvbiB3bCgpe3JldHVybiBUcigpLERlKCk9PT04NCYmIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCl9ZnVuY3Rpb24gSXUoKXtyZXR1cm4gVHIoKSxEZSgpPT09OTgmJiFELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpfWZ1bmN0aW9uIHNvKCl7cmV0dXJuIFRyKCksKGUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSl8fERlKCk9PT04fHxEZSgpPT09OXx8RGUoKT09PTEwKSYmIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCl9ZnVuY3Rpb24gRXQoKXtmb3IoOzspc3dpdGNoKERlKCkpe2Nhc2UgMTEzOmNhc2UgMTE5OmNhc2UgODU6Y2FzZSA5ODpjYXNlIDg0OmNhc2UgOTI6cmV0dXJuITA7Y2FzZSAxMTg6Y2FzZSAxNTI6cmV0dXJuIHVfKCk7Y2FzZSAxNDE6Y2FzZSAxNDI6cmV0dXJuIFRmKCk7Y2FzZSAxMjY6Y2FzZSAxMzE6Y2FzZSAxMzU6Y2FzZSAxMjE6Y2FzZSAxMjI6Y2FzZSAxMjM6Y2FzZSAxNDU6aWYoVHIoKSxELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpKXJldHVybiExO2NvbnRpbnVlO2Nhc2UgMTU3OnJldHVybiBUcigpLERlKCk9PT0xOHx8RGUoKT09PTc5fHxEZSgpPT09OTM7Y2FzZSAxMDA6cmV0dXJuIFRyKCksRGUoKT09PTEwfHxEZSgpPT09NDF8fERlKCk9PT0xOHx8ZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZChEZSgpKTtjYXNlIDkzOnZhciBMZT1UcigpO2lmKExlPT09MTUyJiYoTGU9UnQoVHIpKSxMZT09PTYzfHxMZT09PTQxfHxMZT09PTE4fHxMZT09PTg4fHxMZT09PTEyNylyZXR1cm4hMDtjb250aW51ZTtjYXNlIDEyNDpUcigpO2NvbnRpbnVlO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIFlzKCl7cmV0dXJuIFJ0KEV0KX1mdW5jdGlvbiBLdSgpe3N3aXRjaChEZSgpKXtjYXNlIDU5OmNhc2UgMjY6Y2FzZSAxODpjYXNlIDExMzpjYXNlIDExOTpjYXNlIDk4OmNhc2UgODQ6Y2FzZSA5MjpjYXNlIDk5OmNhc2UgOTA6Y2FzZSAxMTU6Y2FzZSA5NzpjYXNlIDg2OmNhc2UgODE6Y2FzZSAxMDU6Y2FzZSAxMTY6Y2FzZSAxMDc6Y2FzZSAxMDk6Y2FzZSAxMTE6Y2FzZSA4NzpjYXNlIDgzOmNhc2UgOTY6cmV0dXJuITA7Y2FzZSAxMDA6cmV0dXJuIFlzKCl8fFJ0KGpuKTtjYXNlIDg1OmNhc2UgOTM6cmV0dXJuIFlzKCk7Y2FzZSAxMzE6Y2FzZSAxMzU6Y2FzZSAxMTg6Y2FzZSAxNDE6Y2FzZSAxNDI6Y2FzZSAxNTI6Y2FzZSAxNTc6cmV0dXJuITA7Y2FzZSAxMjM6Y2FzZSAxMjE6Y2FzZSAxMjI6Y2FzZSAxMjQ6Y2FzZSAxNDU6cmV0dXJuIFlzKCl8fCFSdChQdSk7ZGVmYXVsdDpyZXR1cm4gcXMoKX19ZnVuY3Rpb24gTnAoKXtyZXR1cm4gVHIoKSxLaSgpfHxEZSgpPT09MTh8fERlKCk9PT0yMn1mdW5jdGlvbiBQcCgpe3JldHVybiBSdChOcCl9ZnVuY3Rpb24gbmMoKXtzd2l0Y2goRGUoKSl7Y2FzZSAyNjpyZXR1cm4gYWMoKTtjYXNlIDE4OnJldHVybiBEYyghMSk7Y2FzZSAxMTM6cmV0dXJuIHJzKFVlKCksZnIoKSx2b2lkIDAsdm9pZCAwKTtjYXNlIDExOTppZihQcCgpKXJldHVybiBycyhVZSgpLGZyKCksdm9pZCAwLHZvaWQgMCk7YnJlYWs7Y2FzZSA5ODpyZXR1cm4gT3AoVWUoKSxmcigpLHZvaWQgMCx2b2lkIDApO2Nhc2UgODQ6cmV0dXJuIE1sKFVlKCksZnIoKSx2b2lkIDAsdm9pZCAwKTtjYXNlIDk5OnJldHVybiBQbCgpO2Nhc2UgOTA6cmV0dXJuIElsKCk7Y2FzZSAxMTU6cmV0dXJuIHpmKCk7Y2FzZSA5NzpyZXR1cm4gdWwoKTtjYXNlIDg2OnJldHVybiBOdSgyNDUpO2Nhc2UgODE6cmV0dXJuIE51KDI0Nik7Y2FzZSAxMDU6cmV0dXJuIFVzKCk7Y2FzZSAxMTY6cmV0dXJuIEFwKCk7Y2FzZSAxMDc6cmV0dXJuIGpfKCk7Y2FzZSAxMDk6cmV0dXJuIFVfKCk7Y2FzZSAxMTE6Y2FzZSA4MzpjYXNlIDk2OnJldHVybiBpdSgpO2Nhc2UgODc6cmV0dXJuIHFmKCk7Y2FzZSA1OTpyZXR1cm4gX2woKTtjYXNlIDEzMTpjYXNlIDExODpjYXNlIDE1MjpjYXNlIDE0MTpjYXNlIDE0MjpjYXNlIDEzNTpjYXNlIDg1OmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDEwMDpjYXNlIDEyMTpjYXNlIDEyMjpjYXNlIDEyMzpjYXNlIDEyNjpjYXNlIDEyNDpjYXNlIDE0NTpjYXNlIDE1NzppZihZcygpKXJldHVybiBfbCgpO2JyZWFrfXJldHVybiBkYygpfWZ1bmN0aW9uIGZsKExlKXtyZXR1cm4gTGUua2luZD09PTEzNX1mdW5jdGlvbiBfbCgpe3ZhciBMZT1lLnNvbWUoUnQoZnVuY3Rpb24oKXtyZXR1cm4gZ2woKSxGYygpfSksZmwpO2lmKExlKXt2YXIgTnI9Y3UoKTtpZihOcilyZXR1cm4gTnJ9dmFyIHJpPVVlKCksZGk9ZnIoKSxNaT1nbCgpLHN0PUZjKCk7aWYoTGUpe2Zvcih2YXIgcmE9MCxUYT1zdDtyYTxUYS5sZW5ndGg7cmErKyl7dmFyIGhhPVRhW3JhXTtoYS5mbGFnc3w9MTY3NzcyMTZ9cmV0dXJuIEdpKDE2Nzc3MjE2LGZ1bmN0aW9uKCl7cmV0dXJuIGdjKHJpLGRpLE1pLHN0KX0pfWVsc2UgcmV0dXJuIGdjKHJpLGRpLE1pLHN0KX1mdW5jdGlvbiBjdSgpe3JldHVybiBHaSgxNjc3NzIxNixmdW5jdGlvbigpe3ZhciBMZT1zYShZZSk7aWYoTGUpcmV0dXJuIGVuKExlKX0pfWZ1bmN0aW9uIGdjKExlLE5yLHJpLGRpKXtzd2l0Y2goRGUoKSl7Y2FzZSAxMTM6Y2FzZSAxMTk6Y2FzZSA4NTpyZXR1cm4gcnMoTGUsTnIscmksZGkpO2Nhc2UgOTg6cmV0dXJuIE9wKExlLE5yLHJpLGRpKTtjYXNlIDg0OnJldHVybiBNbChMZSxOcixyaSxkaSk7Y2FzZSAxMTg6cmV0dXJuIHZfKExlLE5yLHJpLGRpKTtjYXNlIDE1MjpyZXR1cm4gQnAoTGUsTnIscmksZGkpO2Nhc2UgOTI6cmV0dXJuIFhjKExlLE5yLHJpLGRpKTtjYXNlIDE1NzpjYXNlIDE0MTpjYXNlIDE0MjpyZXR1cm4gVl8oTGUsTnIscmksZGkpO2Nhc2UgMTAwOnJldHVybiBTYShMZSxOcixyaSxkaSk7Y2FzZSA5Mzpzd2l0Y2goVHIoKSxEZSgpKXtjYXNlIDg4OmNhc2UgNjM6cmV0dXJuIEpwKExlLE5yLHJpLGRpKTtjYXNlIDEyNzpyZXR1cm4gemkoTGUsTnIscmksZGkpO2RlZmF1bHQ6cmV0dXJuIEtfKExlLE5yLHJpLGRpKX1kZWZhdWx0OmlmKHJpfHxkaSl7dmFyIE1pPWtuKDI3NiwhMCxlLkRpYWdub3N0aWNzLkRlY2xhcmF0aW9uX2V4cGVjdGVkKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2VQb3MoTWksTGUpLE1pLmRlY29yYXRvcnM9cmksTWkubW9kaWZpZXJzPWRpLE1pfXJldHVybn19ZnVuY3Rpb24gVGYoKXtyZXR1cm4gVHIoKSwhRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSYmKEZpKCl8fERlKCk9PT0xMCl9ZnVuY3Rpb24gbWMoTGUsTnIpe2lmKERlKCkhPT0xOCYma2EoKSl7cG4oKTtyZXR1cm59cmV0dXJuIENjKExlLE5yKX1mdW5jdGlvbiBJcCgpe3ZhciBMZT1VZSgpO2lmKERlKCk9PT0yNylyZXR1cm4gQmkoZ2UuY3JlYXRlT21pdHRlZEV4cHJlc3Npb24oKSxMZSk7dmFyIE5yPUF0KDI1KSxyaT1PbCgpLGRpPW5sKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZUJpbmRpbmdFbGVtZW50KE5yLHZvaWQgMCxyaSxkaSksTGUpfWZ1bmN0aW9uIG1zKCl7dmFyIExlPVVlKCksTnI9QXQoMjUpLHJpPUtpKCksZGk9RW4oKSxNaTtyaSYmRGUoKSE9PTU4PyhNaT1kaSxkaT12b2lkIDApOih1aSg1OCksTWk9T2woKSk7dmFyIHN0PW5sKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZUJpbmRpbmdFbGVtZW50KE5yLGRpLE1pLHN0KSxMZSl9ZnVuY3Rpb24gdHUoKXt2YXIgTGU9VWUoKTt1aSgxOCk7dmFyIE5yPWhzKDksbXMpO3JldHVybiB1aSgxOSksQmkoZ2UuY3JlYXRlT2JqZWN0QmluZGluZ1BhdHRlcm4oTnIpLExlKX1mdW5jdGlvbiB3cCgpe3ZhciBMZT1VZSgpO3VpKDIyKTt2YXIgTnI9aHMoMTAsSXApO3JldHVybiB1aSgyMyksQmkoZ2UuY3JlYXRlQXJyYXlCaW5kaW5nUGF0dGVybihOciksTGUpfWZ1bmN0aW9uIEhjKCl7cmV0dXJuIERlKCk9PT0xOHx8RGUoKT09PTIyfHxEZSgpPT09ODB8fEtpKCl9ZnVuY3Rpb24gT2woTGUpe3JldHVybiBEZSgpPT09MjI/d3AoKTpEZSgpPT09MTg/dHUoKTpQbihMZSl9ZnVuY3Rpb24gdGYoKXtyZXR1cm4geGYoITApfWZ1bmN0aW9uIHhmKExlKXt2YXIgTnI9VWUoKSxyaT1mcigpLGRpPU9sKGUuRGlhZ25vc3RpY3MuUHJpdmF0ZV9pZGVudGlmaWVyc19hcmVfbm90X2FsbG93ZWRfaW5fdmFyaWFibGVfZGVjbGFyYXRpb25zKSxNaTtMZSYmZGkua2luZD09PTc5JiZEZSgpPT09NTMmJiFELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpJiYoTWk9YWkoKSk7dmFyIHN0PXZhKCkscmE9Rl8oRGUoKSk/dm9pZCAwOm5sKCksVGE9Z2UuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkaSxNaSxzdCxyYSk7cmV0dXJuIHdyKEJpKFRhLE5yKSxyaSl9ZnVuY3Rpb24gel8oTGUpe3ZhciBOcj1VZSgpLHJpPTA7c3dpdGNoKERlKCkpe2Nhc2UgMTEzOmJyZWFrO2Nhc2UgMTE5OnJpfD0xO2JyZWFrO2Nhc2UgODU6cml8PTI7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmZhaWwoKX1UcigpO3ZhciBkaTtpZihEZSgpPT09MTYwJiZSdChPYykpZGk9cHMoKTtlbHNle3ZhciBNaT1KZSgpO3NpKExlKSxkaT1ocyg4LExlP3hmOnRmKSxzaShNaSl9cmV0dXJuIEJpKGdlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGRpLHJpKSxOcil9ZnVuY3Rpb24gT2MoKXtyZXR1cm4gUWUoKSYmVHIoKT09PTIxfWZ1bmN0aW9uIHJzKExlLE5yLHJpLGRpKXt2YXIgTWk9el8oITEpO3BuKCk7dmFyIHN0PWdlLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KGRpLE1pKTtyZXR1cm4gc3QuZGVjb3JhdG9ycz1yaSx3cihCaShzdCxMZSksTnIpfWZ1bmN0aW9uIE9wKExlLE5yLHJpLGRpKXt2YXIgTWk9bXIoKSxzdD1lLm1vZGlmaWVyc1RvRmxhZ3MoZGkpO3VpKDk4KTt2YXIgcmE9QXQoNDEpLFRhPXN0JjUxMj9iZigpOlBuKCksaGE9cmE/MTowLE5hPXN0JjI1Nj8yOjAsSW49V3MoKTtzdCYxJiZYaSghMCk7dmFyIHFvPUVpKGhhfE5hKSxjbz12Yyg1OCwhMSksdHM9bWMoaGF8TmEsZS5EaWFnbm9zdGljcy5vcl9leHBlY3RlZCk7WGkoTWkpO3ZhciB2cz1nZS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKHJpLGRpLHJhLFRhLEluLHFvLGNvLHRzKTtyZXR1cm4gd3IoQmkodnMsTGUpLE5yKX1mdW5jdGlvbiBFZigpe2lmKERlKCk9PT0xMzQpcmV0dXJuIHVpKDEzNCk7aWYoRGUoKT09PTEwJiZSdChUcik9PT0yMClyZXR1cm4gSWkoZnVuY3Rpb24oKXt2YXIgTGU9Z2EoKTtyZXR1cm4gTGUudGV4dD09PVwiY29uc3RydWN0b3JcIj9MZTp2b2lkIDB9KX1mdW5jdGlvbiBGbChMZSxOcixyaSxkaSl7cmV0dXJuIElpKGZ1bmN0aW9uKCl7aWYoRWYoKSl7dmFyIE1pPVdzKCksc3Q9RWkoMCkscmE9dmMoNTgsITEpLFRhPW1jKDAsZS5EaWFnbm9zdGljcy5vcl9leHBlY3RlZCksaGE9Z2UuY3JlYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbihyaSxkaSxzdCxUYSk7cmV0dXJuIGhhLnR5cGVQYXJhbWV0ZXJzPU1pLGhhLnR5cGU9cmEsd3IoQmkoaGEsTGUpLE5yKX19KX1mdW5jdGlvbiBwbChMZSxOcixyaSxkaSxNaSxzdCxyYSxUYSxoYSl7dmFyIE5hPU1pPzE6MCxJbj1lLnNvbWUoZGksZS5pc0FzeW5jTW9kaWZpZXIpPzI6MCxxbz1XcygpLGNvPUVpKE5hfEluKSx0cz12Yyg1OCwhMSksdnM9bWMoTmF8SW4saGEpLEFjPWdlLmNyZWF0ZU1ldGhvZERlY2xhcmF0aW9uKHJpLGRpLE1pLHN0LHJhLHFvLGNvLHRzLHZzKTtyZXR1cm4gQWMuZXhjbGFtYXRpb25Ub2tlbj1UYSx3cihCaShBYyxMZSksTnIpfWZ1bmN0aW9uIEZwKExlLE5yLHJpLGRpLE1pLHN0KXt2YXIgcmE9IXN0JiYhRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKT9BdCg1Myk6dm9pZCAwLFRhPXZhKCksaGE9ZXQoNDUwNTYsbmwpO09pKE1pLFRhLGhhKTt2YXIgTmE9Z2UuY3JlYXRlUHJvcGVydHlEZWNsYXJhdGlvbihyaSxkaSxNaSxzdHx8cmEsVGEsaGEpO3JldHVybiB3cihCaShOYSxMZSksTnIpfWZ1bmN0aW9uIE1wKExlLE5yLHJpLGRpKXt2YXIgTWk9QXQoNDEpLHN0PUVuKCkscmE9QXQoNTcpO3JldHVybiBNaXx8RGUoKT09PTIwfHxEZSgpPT09Mjk/cGwoTGUsTnIscmksZGksTWksc3QscmEsdm9pZCAwLGUuRGlhZ25vc3RpY3Mub3JfZXhwZWN0ZWQpOkZwKExlLE5yLHJpLGRpLHN0LHJhKX1mdW5jdGlvbiBHdShMZSxOcixyaSxkaSxNaSl7dmFyIHN0PUVuKCkscmE9V3MoKSxUYT1FaSgwKSxoYT12Yyg1OCwhMSksTmE9bWMoMCksSW49TWk9PT0xNzI/Z2UuY3JlYXRlR2V0QWNjZXNzb3JEZWNsYXJhdGlvbihyaSxkaSxzdCxUYSxoYSxOYSk6Z2UuY3JlYXRlU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihyaSxkaSxzdCxUYSxOYSk7cmV0dXJuIEluLnR5cGVQYXJhbWV0ZXJzPXJhLGhhJiZJbi5raW5kPT09MTczJiYoSW4udHlwZT1oYSksd3IoQmkoSW4sTGUpLE5yKX1mdW5jdGlvbiBMcCgpe3ZhciBMZTtpZihEZSgpPT09NTkpcmV0dXJuITA7Zm9yKDtlLmlzTW9kaWZpZXJLaW5kKERlKCkpOyl7aWYoTGU9RGUoKSxlLmlzQ2xhc3NNZW1iZXJNb2RpZmllcihMZSkpcmV0dXJuITA7VHIoKX1pZihEZSgpPT09NDF8fChEYSgpJiYoTGU9RGUoKSxUcigpKSxEZSgpPT09MjIpKXJldHVybiEwO2lmKExlIT09dm9pZCAwKXtpZighZS5pc0tleXdvcmQoTGUpfHxMZT09PTE0OXx8TGU9PT0xMzYpcmV0dXJuITA7c3dpdGNoKERlKCkpe2Nhc2UgMjA6Y2FzZSAyOTpjYXNlIDUzOmNhc2UgNTg6Y2FzZSA2MzpjYXNlIDU3OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuIGthKCl9fXJldHVybiExfWZ1bmN0aW9uIENmKExlLE5yLHJpLGRpKXskYSgxMjQpO3ZhciBNaT1XXygpO3JldHVybiB3cihCaShnZS5jcmVhdGVDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24ocmksZGksTWkpLExlKSxOcil9ZnVuY3Rpb24gV18oKXt2YXIgTGU9V3IoKSxOcj1tcigpO0RpKCExKSxYaSghMCk7dmFyIHJpPURjKCExKTtyZXR1cm4gRGkoTGUpLFhpKE5yKSxyaX1mdW5jdGlvbiBnXygpe2lmKG1yKCkmJkRlKCk9PT0xMzIpe3ZhciBMZT1VZSgpLE5yPWVvKGUuRGlhZ25vc3RpY3MuRXhwcmVzc2lvbl9leHBlY3RlZCk7VHIoKTt2YXIgcmk9RWMoTGUsTnIsITApO3JldHVybiBQcyhMZSxyaSl9cmV0dXJuICRsKCl9ZnVuY3Rpb24gZGwoKXt2YXIgTGU9VWUoKTtpZighIWF0KDU5KSl7dmFyIE5yPVhlKGdfKTtyZXR1cm4gQmkoZ2UuY3JlYXRlRGVjb3JhdG9yKE5yKSxMZSl9fWZ1bmN0aW9uIGdsKCl7Zm9yKHZhciBMZT1VZSgpLE5yLHJpO3JpPWRsKCk7KU5yPWUuYXBwZW5kKE5yLHJpKTtyZXR1cm4gTnImJkNuKE5yLExlKX1mdW5jdGlvbiBWZihMZSxOcixyaSl7dmFyIGRpPVVlKCksTWk9RGUoKTtpZihEZSgpPT09ODUmJkxlKXtpZighSWkoT28pKXJldHVybn1lbHNle2lmKE5yJiZEZSgpPT09MTI0JiZSdChzcikpcmV0dXJuO2lmKHJpJiZEZSgpPT09MTI0KXJldHVybjtpZigheGkoKSlyZXR1cm59cmV0dXJuIEJpKGdlLmNyZWF0ZVRva2VuKE1pKSxkaSl9ZnVuY3Rpb24gRmMoTGUsTnIpe2Zvcih2YXIgcmk9VWUoKSxkaSxNaSxzdD0hMTtNaT1WZihMZSxOcixzdCk7KU1pLmtpbmQ9PT0xMjQmJihzdD0hMCksZGk9ZS5hcHBlbmQoZGksTWkpO3JldHVybiBkaSYmQ24oZGkscmkpfWZ1bmN0aW9uIEh1KCl7dmFyIExlO2lmKERlKCk9PT0xMzEpe3ZhciBOcj1VZSgpO1RyKCk7dmFyIHJpPUJpKGdlLmNyZWF0ZVRva2VuKDEzMSksTnIpO0xlPUNuKFtyaV0sTnIpfXJldHVybiBMZX1mdW5jdGlvbiBhZigpe3ZhciBMZT1VZSgpO2lmKERlKCk9PT0yNilyZXR1cm4gVHIoKSxCaShnZS5jcmVhdGVTZW1pY29sb25DbGFzc0VsZW1lbnQoKSxMZSk7dmFyIE5yPWZyKCkscmk9Z2woKSxkaT1GYyghMCwhMCk7aWYoRGUoKT09PTEyNCYmUnQoc3IpKXJldHVybiBDZihMZSxOcixyaSxkaSk7aWYoS28oMTM2KSlyZXR1cm4gR3UoTGUsTnIscmksZGksMTcyKTtpZihLbygxNDkpKXJldHVybiBHdShMZSxOcixyaSxkaSwxNzMpO2lmKERlKCk9PT0xMzR8fERlKCk9PT0xMCl7dmFyIE1pPUZsKExlLE5yLHJpLGRpKTtpZihNaSlyZXR1cm4gTWl9aWYoYnQoKSlyZXR1cm4gWHQoTGUsTnIscmksZGkpO2lmKGUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSl8fERlKCk9PT0xMHx8RGUoKT09PTh8fERlKCk9PT00MXx8RGUoKT09PTIyKXt2YXIgc3Q9ZS5zb21lKGRpLGZsKTtpZihzdCl7Zm9yKHZhciByYT0wLFRhPWRpO3JhPFRhLmxlbmd0aDtyYSsrKXt2YXIgaGE9VGFbcmFdO2hhLmZsYWdzfD0xNjc3NzIxNn1yZXR1cm4gR2koMTY3NzcyMTYsZnVuY3Rpb24oKXtyZXR1cm4gTXAoTGUsTnIscmksZGkpfSl9ZWxzZSByZXR1cm4gTXAoTGUsTnIscmksZGkpfWlmKHJpfHxkaSl7dmFyIE5hPWtuKDc5LCEwLGUuRGlhZ25vc3RpY3MuRGVjbGFyYXRpb25fZXhwZWN0ZWQpO3JldHVybiBGcChMZSxOcixyaSxkaSxOYSx2b2lkIDApfXJldHVybiBlLkRlYnVnLmZhaWwoXCJTaG91bGQgbm90IGhhdmUgYXR0ZW1wdGVkIHRvIHBhcnNlIGNsYXNzIG1lbWJlciBkZWNsYXJhdGlvbi5cIil9ZnVuY3Rpb24gdG4oKXtyZXR1cm4gT3QoVWUoKSxmcigpLHZvaWQgMCx2b2lkIDAsMjI2KX1mdW5jdGlvbiBNbChMZSxOcixyaSxkaSl7cmV0dXJuIE90KExlLE5yLHJpLGRpLDI1Nyl9ZnVuY3Rpb24gT3QoTGUsTnIscmksZGksTWkpe3ZhciBzdD1tcigpO3VpKDg0KTt2YXIgcmE9bmYoKSxUYT1XcygpO2Uuc29tZShkaSxlLmlzRXhwb3J0TW9kaWZpZXIpJiZYaSghMCk7dmFyIGhhPUtmKCksTmE7dWkoMTgpPyhOYT1oZCgpLHVpKDE5KSk6TmE9cHMoKSxYaShzdCk7dmFyIEluPU1pPT09MjU3P2dlLmNyZWF0ZUNsYXNzRGVjbGFyYXRpb24ocmksZGkscmEsVGEsaGEsTmEpOmdlLmNyZWF0ZUNsYXNzRXhwcmVzc2lvbihyaSxkaSxyYSxUYSxoYSxOYSk7cmV0dXJuIHdyKEJpKEluLExlKSxOcil9ZnVuY3Rpb24gbmYoKXtyZXR1cm4gS2koKSYmIXFfKCk/S24oS2koKSk6dm9pZCAwfWZ1bmN0aW9uIHFfKCl7cmV0dXJuIERlKCk9PT0xMTcmJlJ0KEdyKX1mdW5jdGlvbiBLZigpe2lmKExsKCkpcmV0dXJuIFFpKDIyLFJwKX1mdW5jdGlvbiBScCgpe3ZhciBMZT1VZSgpLE5yPURlKCk7ZS5EZWJ1Zy5hc3NlcnQoTnI9PT05NHx8TnI9PT0xMTcpLFRyKCk7dmFyIHJpPWhzKDcseWQpO3JldHVybiBCaShnZS5jcmVhdGVIZXJpdGFnZUNsYXVzZShOcixyaSksTGUpfWZ1bmN0aW9uIHlkKCl7dmFyIExlPVVlKCksTnI9JGwoKTtpZihOci5raW5kPT09MjI4KXJldHVybiBOcjt2YXIgcmk9bV8oKTtyZXR1cm4gQmkoZ2UuY3JlYXRlRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKE5yLHJpKSxMZSl9ZnVuY3Rpb24gbV8oKXtyZXR1cm4gRGUoKT09PTI5P2pzKDIwLEFhLDI5LDMxKTp2b2lkIDB9ZnVuY3Rpb24gTGwoKXtyZXR1cm4gRGUoKT09PTk0fHxEZSgpPT09MTE3fWZ1bmN0aW9uIGhkKCl7cmV0dXJuIFFpKDUsYWYpfWZ1bmN0aW9uIHZfKExlLE5yLHJpLGRpKXt1aSgxMTgpO3ZhciBNaT1lbygpLHN0PVdzKCkscmE9S2YoKSxUYT1obygpLGhhPWdlLmNyZWF0ZUludGVyZmFjZURlY2xhcmF0aW9uKHJpLGRpLE1pLHN0LHJhLFRhKTtyZXR1cm4gd3IoQmkoaGEsTGUpLE5yKX1mdW5jdGlvbiBCcChMZSxOcixyaSxkaSl7dWkoMTUyKTt2YXIgTWk9ZW8oKSxzdD1XcygpO3VpKDYzKTt2YXIgcmE9RGUoKT09PTEzOCYmSWkocG8pfHxBYSgpO3BuKCk7dmFyIFRhPWdlLmNyZWF0ZVR5cGVBbGlhc0RlY2xhcmF0aW9uKHJpLGRpLE1pLHN0LHJhKTtyZXR1cm4gd3IoQmkoVGEsTGUpLE5yKX1mdW5jdGlvbiBYdSgpe3ZhciBMZT1VZSgpLE5yPWZyKCkscmk9RW4oKSxkaT1XdChubCk7cmV0dXJuIHdyKEJpKGdlLmNyZWF0ZUVudW1NZW1iZXIocmksZGkpLExlKSxOcil9ZnVuY3Rpb24gWGMoTGUsTnIscmksZGkpe3VpKDkyKTt2YXIgTWk9ZW8oKSxzdDt1aSgxOCk/KHN0PVNyKGZ1bmN0aW9uKCl7cmV0dXJuIGhzKDYsWHUpfSksdWkoMTkpKTpzdD1wcygpO3ZhciByYT1nZS5jcmVhdGVFbnVtRGVjbGFyYXRpb24ocmksZGksTWksc3QpO3JldHVybiB3cihCaShyYSxMZSksTnIpfWZ1bmN0aW9uIEdmKCl7dmFyIExlPVVlKCksTnI7cmV0dXJuIHVpKDE4KT8oTnI9UWkoMSxuYyksdWkoMTkpKTpOcj1wcygpLEJpKGdlLmNyZWF0ZU1vZHVsZUJsb2NrKE5yKSxMZSl9ZnVuY3Rpb24gb2YoTGUsTnIscmksZGksTWkpe3ZhciBzdD1NaSYxNixyYT1lbygpLFRhPWF0KDI0KT9vZihVZSgpLCExLHZvaWQgMCx2b2lkIDAsNHxzdCk6R2YoKSxoYT1nZS5jcmVhdGVNb2R1bGVEZWNsYXJhdGlvbihyaSxkaSxyYSxUYSxNaSk7cmV0dXJuIHdyKEJpKGhhLExlKSxOcil9ZnVuY3Rpb24gd3UoTGUsTnIscmksZGkpe3ZhciBNaT0wLHN0O0RlKCk9PT0xNTc/KHN0PWVvKCksTWl8PTEwMjQpOihzdD1nYSgpLHN0LnRleHQ9eG4oc3QudGV4dCkpO3ZhciByYTtEZSgpPT09MTg/cmE9R2YoKTpwbigpO3ZhciBUYT1nZS5jcmVhdGVNb2R1bGVEZWNsYXJhdGlvbihyaSxkaSxzdCxyYSxNaSk7cmV0dXJuIHdyKEJpKFRhLExlKSxOcil9ZnVuY3Rpb24gVl8oTGUsTnIscmksZGkpe3ZhciBNaT0wO2lmKERlKCk9PT0xNTcpcmV0dXJuIHd1KExlLE5yLHJpLGRpKTtpZihhdCgxNDIpKU1pfD0xNjtlbHNlIGlmKHVpKDE0MSksRGUoKT09PTEwKXJldHVybiB3dShMZSxOcixyaSxkaSk7cmV0dXJuIG9mKExlLE5yLHJpLGRpLE1pKX1mdW5jdGlvbiB5dSgpe3JldHVybiBEZSgpPT09MTQ2JiZSdCh2KX1mdW5jdGlvbiB2KCl7cmV0dXJuIFRyKCk9PT0yMH1mdW5jdGlvbiBzcigpe3JldHVybiBUcigpPT09MTh9ZnVuY3Rpb24gZmkoKXtyZXR1cm4gVHIoKT09PTQzfWZ1bmN0aW9uIHppKExlLE5yLHJpLGRpKXt1aSgxMjcpLHVpKDE0Mik7dmFyIE1pPWVvKCk7cG4oKTt2YXIgc3Q9Z2UuY3JlYXRlTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb24oTWkpO3JldHVybiBzdC5kZWNvcmF0b3JzPXJpLHN0Lm1vZGlmaWVycz1kaSx3cihCaShzdCxMZSksTnIpfWZ1bmN0aW9uIFNhKExlLE5yLHJpLGRpKXt1aSgxMDApO3ZhciBNaT1ELmdldFN0YXJ0UG9zKCksc3Q7RmkoKSYmKHN0PWVvKCkpO3ZhciByYT0hMTtpZihEZSgpIT09MTU2JiYoc3Q9PW51bGw/dm9pZCAwOnN0LmVzY2FwZWRUZXh0KT09PVwidHlwZVwiJiYoRmkoKXx8dGEoKSkmJihyYT0hMCxzdD1GaSgpP2VvKCk6dm9pZCAwKSxzdCYmIW5uKCkpcmV0dXJuIFdvKExlLE5yLHJpLGRpLHN0LHJhKTt2YXIgVGE7KHN0fHxEZSgpPT09NDF8fERlKCk9PT0xOCkmJihUYT1MbyhzdCxNaSxyYSksdWkoMTU2KSk7dmFyIGhhPWlzKCksTmE7RGUoKT09PTEyOSYmIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJihOYT1IYSgpKSxwbigpO3ZhciBJbj1nZS5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbihyaSxkaSxUYSxoYSxOYSk7cmV0dXJuIHdyKEJpKEluLExlKSxOcil9ZnVuY3Rpb24gZGEoKXt2YXIgTGU9VWUoKSxOcj1lLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpP1JuKCk6Zm8oMTApO3VpKDU4KTt2YXIgcmk9aGMoKTtyZXR1cm4gQmkoZ2UuY3JlYXRlQXNzZXJ0RW50cnkoTnIscmkpLExlKX1mdW5jdGlvbiBIYShMZSl7dmFyIE5yPVVlKCk7TGV8fHVpKDEyOSk7dmFyIHJpPUQuZ2V0VG9rZW5Qb3MoKTtpZih1aSgxOCkpe3ZhciBkaT1ELmhhc1ByZWNlZGluZ0xpbmVCcmVhaygpLE1pPWhzKDI0LGRhLCEwKTtpZighdWkoMTkpKXt2YXIgc3Q9ZS5sYXN0T3JVbmRlZmluZWQoX2UpO3N0JiZzdC5jb2RlPT09ZS5EaWFnbm9zdGljcy5fMF9leHBlY3RlZC5jb2RlJiZlLmFkZFJlbGF0ZWRJbmZvKHN0LGUuY3JlYXRlRGV0YWNoZWREaWFnbm9zdGljKFJlLHJpLDEsZS5EaWFnbm9zdGljcy5UaGVfcGFyc2VyX2V4cGVjdGVkX3RvX2ZpbmRfYV8xX3RvX21hdGNoX3RoZV8wX3Rva2VuX2hlcmUsXCJ7XCIsXCJ9XCIpKX1yZXR1cm4gQmkoZ2UuY3JlYXRlQXNzZXJ0Q2xhdXNlKE1pLGRpKSxOcil9ZWxzZXt2YXIgTWk9Q24oW10sVWUoKSx2b2lkIDAsITEpO3JldHVybiBCaShnZS5jcmVhdGVBc3NlcnRDbGF1c2UoTWksITEpLE5yKX19ZnVuY3Rpb24gdGEoKXtyZXR1cm4gRGUoKT09PTQxfHxEZSgpPT09MTh9ZnVuY3Rpb24gbm4oKXtyZXR1cm4gRGUoKT09PTI3fHxEZSgpPT09MTU2fWZ1bmN0aW9uIFdvKExlLE5yLHJpLGRpLE1pLHN0KXt1aSg2Myk7dmFyIHJhPW9jKCk7cG4oKTt2YXIgVGE9Z2UuY3JlYXRlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24ocmksZGksc3QsTWkscmEpLGhhPXdyKEJpKFRhLExlKSxOcik7cmV0dXJuIGhhfWZ1bmN0aW9uIExvKExlLE5yLHJpKXt2YXIgZGk7cmV0dXJuKCFMZXx8YXQoMjcpKSYmKGRpPURlKCk9PT00MT9hdSgpOk91KDI2OSkpLEJpKGdlLmNyZWF0ZUltcG9ydENsYXVzZShyaSxMZSxkaSksTnIpfWZ1bmN0aW9uIG9jKCl7cmV0dXJuIHl1KCk/dXUoKTpkcyghMSl9ZnVuY3Rpb24gdXUoKXt2YXIgTGU9VWUoKTt1aSgxNDYpLHVpKDIwKTt2YXIgTnI9aXMoKTtyZXR1cm4gdWkoMjEpLEJpKGdlLmNyZWF0ZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlKE5yKSxMZSl9ZnVuY3Rpb24gaXMoKXtpZihEZSgpPT09MTApe3ZhciBMZT1nYSgpO3JldHVybiBMZS50ZXh0PXhuKExlLnRleHQpLExlfWVsc2UgcmV0dXJuIG5zKCl9ZnVuY3Rpb24gYXUoKXt2YXIgTGU9VWUoKTt1aSg0MSksdWkoMTI3KTt2YXIgTnI9ZW8oKTtyZXR1cm4gQmkoZ2UuY3JlYXRlTmFtZXNwYWNlSW1wb3J0KE5yKSxMZSl9ZnVuY3Rpb24gT3UoTGUpe3ZhciBOcj1VZSgpLHJpPUxlPT09MjY5P2dlLmNyZWF0ZU5hbWVkSW1wb3J0cyhqcygyMyxsdSwxOCwxOSkpOmdlLmNyZWF0ZU5hbWVkRXhwb3J0cyhqcygyMyxzZiwxOCwxOSkpO3JldHVybiBCaShyaSxOcil9ZnVuY3Rpb24gc2YoKXt2YXIgTGU9ZnIoKTtyZXR1cm4gd3IoY2YoMjc1KSxMZSl9ZnVuY3Rpb24gbHUoKXtyZXR1cm4gY2YoMjcwKX1mdW5jdGlvbiBjZihMZSl7dmFyIE5yPVVlKCkscmk9ZS5pc0tleXdvcmQoRGUoKSkmJiFGaSgpLGRpPUQuZ2V0VG9rZW5Qb3MoKSxNaT1ELmdldFRleHRQb3MoKSxzdD0hMSxyYSxUYT0hMCxoYT1SbigpO2lmKGhhLmVzY2FwZWRUZXh0PT09XCJ0eXBlXCIpaWYoRGUoKT09PTEyNyl7dmFyIE5hPVJuKCk7aWYoRGUoKT09PTEyNyl7dmFyIEluPVJuKCk7ZS50b2tlbklzSWRlbnRpZmllck9yS2V5d29yZChEZSgpKT8oc3Q9ITAscmE9TmEsaGE9Y28oKSxUYT0hMSk6KHJhPWhhLGhhPUluLFRhPSExKX1lbHNlIGUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSk/KHJhPWhhLFRhPSExLGhhPWNvKCkpOihzdD0hMCxoYT1OYSl9ZWxzZSBlLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpJiYoc3Q9ITAsaGE9Y28oKSk7VGEmJkRlKCk9PT0xMjcmJihyYT1oYSx1aSgxMjcpLGhhPWNvKCkpLExlPT09MjcwJiZyaSYmbnIoZGksTWksZS5EaWFnbm9zdGljcy5JZGVudGlmaWVyX2V4cGVjdGVkKTt2YXIgcW89TGU9PT0yNzA/Z2UuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKHN0LHJhLGhhKTpnZS5jcmVhdGVFeHBvcnRTcGVjaWZpZXIoc3QscmEsaGEpO3JldHVybiBCaShxbyxOcik7ZnVuY3Rpb24gY28oKXtyZXR1cm4gcmk9ZS5pc0tleXdvcmQoRGUoKSkmJiFGaSgpLGRpPUQuZ2V0VG9rZW5Qb3MoKSxNaT1ELmdldFRleHRQb3MoKSxSbigpfX1mdW5jdGlvbiB1ZihMZSl7cmV0dXJuIEJpKGdlLmNyZWF0ZU5hbWVzcGFjZUV4cG9ydChSbigpKSxMZSl9ZnVuY3Rpb24gS18oTGUsTnIscmksZGkpe3ZhciBNaT1tcigpO1hpKCEwKTt2YXIgc3QscmEsVGEsaGE9YXQoMTUyKSxOYT1VZSgpO2F0KDQxKT8oYXQoMTI3KSYmKHN0PXVmKE5hKSksdWkoMTU2KSxyYT1pcygpKTooc3Q9T3UoMjczKSwoRGUoKT09PTE1Nnx8RGUoKT09PTEwJiYhRC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsoKSkmJih1aSgxNTYpLHJhPWlzKCkpKSxyYSYmRGUoKT09PTEyOSYmIUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCkmJihUYT1IYSgpKSxwbigpLFhpKE1pKTt2YXIgSW49Z2UuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24ocmksZGksaGEsc3QscmEsVGEpO3JldHVybiB3cihCaShJbixMZSksTnIpfWZ1bmN0aW9uIEpwKExlLE5yLHJpLGRpKXt2YXIgTWk9bXIoKTtYaSghMCk7dmFyIHN0O2F0KDYzKT9zdD0hMDp1aSg4OCk7dmFyIHJhPWhjKCk7cG4oKSxYaShNaSk7dmFyIFRhPWdlLmNyZWF0ZUV4cG9ydEFzc2lnbm1lbnQocmksZGksc3QscmEpO3JldHVybiB3cihCaShUYSxMZSksTnIpfXZhciBIZjsoZnVuY3Rpb24oTGUpe0xlW0xlLlNvdXJjZUVsZW1lbnRzPTBdPVwiU291cmNlRWxlbWVudHNcIixMZVtMZS5CbG9ja1N0YXRlbWVudHM9MV09XCJCbG9ja1N0YXRlbWVudHNcIixMZVtMZS5Td2l0Y2hDbGF1c2VzPTJdPVwiU3dpdGNoQ2xhdXNlc1wiLExlW0xlLlN3aXRjaENsYXVzZVN0YXRlbWVudHM9M109XCJTd2l0Y2hDbGF1c2VTdGF0ZW1lbnRzXCIsTGVbTGUuVHlwZU1lbWJlcnM9NF09XCJUeXBlTWVtYmVyc1wiLExlW0xlLkNsYXNzTWVtYmVycz01XT1cIkNsYXNzTWVtYmVyc1wiLExlW0xlLkVudW1NZW1iZXJzPTZdPVwiRW51bU1lbWJlcnNcIixMZVtMZS5IZXJpdGFnZUNsYXVzZUVsZW1lbnQ9N109XCJIZXJpdGFnZUNsYXVzZUVsZW1lbnRcIixMZVtMZS5WYXJpYWJsZURlY2xhcmF0aW9ucz04XT1cIlZhcmlhYmxlRGVjbGFyYXRpb25zXCIsTGVbTGUuT2JqZWN0QmluZGluZ0VsZW1lbnRzPTldPVwiT2JqZWN0QmluZGluZ0VsZW1lbnRzXCIsTGVbTGUuQXJyYXlCaW5kaW5nRWxlbWVudHM9MTBdPVwiQXJyYXlCaW5kaW5nRWxlbWVudHNcIixMZVtMZS5Bcmd1bWVudEV4cHJlc3Npb25zPTExXT1cIkFyZ3VtZW50RXhwcmVzc2lvbnNcIixMZVtMZS5PYmplY3RMaXRlcmFsTWVtYmVycz0xMl09XCJPYmplY3RMaXRlcmFsTWVtYmVyc1wiLExlW0xlLkpzeEF0dHJpYnV0ZXM9MTNdPVwiSnN4QXR0cmlidXRlc1wiLExlW0xlLkpzeENoaWxkcmVuPTE0XT1cIkpzeENoaWxkcmVuXCIsTGVbTGUuQXJyYXlMaXRlcmFsTWVtYmVycz0xNV09XCJBcnJheUxpdGVyYWxNZW1iZXJzXCIsTGVbTGUuUGFyYW1ldGVycz0xNl09XCJQYXJhbWV0ZXJzXCIsTGVbTGUuSlNEb2NQYXJhbWV0ZXJzPTE3XT1cIkpTRG9jUGFyYW1ldGVyc1wiLExlW0xlLlJlc3RQcm9wZXJ0aWVzPTE4XT1cIlJlc3RQcm9wZXJ0aWVzXCIsTGVbTGUuVHlwZVBhcmFtZXRlcnM9MTldPVwiVHlwZVBhcmFtZXRlcnNcIixMZVtMZS5UeXBlQXJndW1lbnRzPTIwXT1cIlR5cGVBcmd1bWVudHNcIixMZVtMZS5UdXBsZUVsZW1lbnRUeXBlcz0yMV09XCJUdXBsZUVsZW1lbnRUeXBlc1wiLExlW0xlLkhlcml0YWdlQ2xhdXNlcz0yMl09XCJIZXJpdGFnZUNsYXVzZXNcIixMZVtMZS5JbXBvcnRPckV4cG9ydFNwZWNpZmllcnM9MjNdPVwiSW1wb3J0T3JFeHBvcnRTcGVjaWZpZXJzXCIsTGVbTGUuQXNzZXJ0RW50cmllcz0yNF09XCJBc3NlcnRFbnRyaWVzXCIsTGVbTGUuQ291bnQ9MjVdPVwiQ291bnRcIn0pKEhmfHwoSGY9e30pKTt2YXIga2M7KGZ1bmN0aW9uKExlKXtMZVtMZS5GYWxzZT0wXT1cIkZhbHNlXCIsTGVbTGUuVHJ1ZT0xXT1cIlRydWVcIixMZVtMZS5Vbmtub3duPTJdPVwiVW5rbm93blwifSkoa2N8fChrYz17fSkpO3ZhciBHXzsoZnVuY3Rpb24oTGUpe2Z1bmN0aW9uIE5yKE5hLEluLHFvKXt1cihcImZpbGUuanNcIixOYSw5OSx2b2lkIDAsMSksRC5zZXRUZXh0KE5hLEluLHFvKSx5ZT1ELnNjYW4oKTt2YXIgY289cmkoKSx0cz1vcihcImZpbGUuanNcIiw5OSwxLCExLFtdLGdlLmNyZWF0ZVRva2VuKDEpLDAsZS5ub29wKSx2cz1lLmF0dGFjaEZpbGVUb0RpYWdub3N0aWNzKF9lLHRzKTtyZXR1cm4gd2UmJih0cy5qc0RvY0RpYWdub3N0aWNzPWUuYXR0YWNoRmlsZVRvRGlhZ25vc3RpY3Mod2UsdHMpKSx5cigpLGNvP3tqc0RvY1R5cGVFeHByZXNzaW9uOmNvLGRpYWdub3N0aWNzOnZzfTp2b2lkIDB9TGUucGFyc2VKU0RvY1R5cGVFeHByZXNzaW9uRm9yVGVzdHM9TnI7ZnVuY3Rpb24gcmkoTmEpe3ZhciBJbj1VZSgpLHFvPShOYT9hdDp1aSkoMTgpLGNvPUdpKDgzODg2MDgsYWwpOyghTmF8fHFvKSYmamkoMTkpO3ZhciB0cz1nZS5jcmVhdGVKU0RvY1R5cGVFeHByZXNzaW9uKGNvKTtyZXR1cm4gcGUodHMpLEJpKHRzLEluKX1MZS5wYXJzZUpTRG9jVHlwZUV4cHJlc3Npb249cmk7ZnVuY3Rpb24gZGkoKXtmb3IodmFyIE5hPVVlKCksSW49YXQoMTgpLHFvPVVlKCksY289ZHMoITEpO0RlKCk9PT04MDspbnQoKSx2aSgpLGNvPUJpKGdlLmNyZWF0ZUpTRG9jTWVtYmVyTmFtZShjbyxlbygpKSxxbyk7SW4mJmppKDE5KTt2YXIgdHM9Z2UuY3JlYXRlSlNEb2NOYW1lUmVmZXJlbmNlKGNvKTtyZXR1cm4gcGUodHMpLEJpKHRzLE5hKX1MZS5wYXJzZUpTRG9jTmFtZVJlZmVyZW5jZT1kaTtmdW5jdGlvbiBNaShOYSxJbixxbyl7dXIoXCJcIixOYSw5OSx2b2lkIDAsMSk7dmFyIGNvPUdpKDgzODg2MDgsZnVuY3Rpb24oKXtyZXR1cm4gaGEoSW4scW8pfSksdHM9e2xhbmd1YWdlVmFyaWFudDowLHRleHQ6TmF9LHZzPWUuYXR0YWNoRmlsZVRvRGlhZ25vc3RpY3MoX2UsdHMpO3JldHVybiB5cigpLGNvP3tqc0RvYzpjbyxkaWFnbm9zdGljczp2c306dm9pZCAwfUxlLnBhcnNlSXNvbGF0ZWRKU0RvY0NvbW1lbnQ9TWk7ZnVuY3Rpb24gc3QoTmEsSW4scW8pe3ZhciBjbz15ZSx0cz1fZS5sZW5ndGgsdnM9bixBYz1HaSg4Mzg4NjA4LGZ1bmN0aW9uKCl7cmV0dXJuIGhhKEluLHFvKX0pO3JldHVybiBlLnNldFBhcmVudChBYyxOYSksRXImMjYyMTQ0JiYod2V8fCh3ZT1bXSksd2UucHVzaC5hcHBseSh3ZSxfZSkpLHllPWNvLF9lLmxlbmd0aD10cyxuPXZzLEFjfUxlLnBhcnNlSlNEb2NDb21tZW50PXN0O3ZhciByYTsoZnVuY3Rpb24oTmEpe05hW05hLkJlZ2lubmluZ09mTGluZT0wXT1cIkJlZ2lubmluZ09mTGluZVwiLE5hW05hLlNhd0FzdGVyaXNrPTFdPVwiU2F3QXN0ZXJpc2tcIixOYVtOYS5TYXZpbmdDb21tZW50cz0yXT1cIlNhdmluZ0NvbW1lbnRzXCIsTmFbTmEuU2F2aW5nQmFja3RpY2tzPTNdPVwiU2F2aW5nQmFja3RpY2tzXCJ9KShyYXx8KHJhPXt9KSk7dmFyIFRhOyhmdW5jdGlvbihOYSl7TmFbTmEuUHJvcGVydHk9MV09XCJQcm9wZXJ0eVwiLE5hW05hLlBhcmFtZXRlcj0yXT1cIlBhcmFtZXRlclwiLE5hW05hLkNhbGxiYWNrUGFyYW1ldGVyPTRdPVwiQ2FsbGJhY2tQYXJhbWV0ZXJcIn0pKFRhfHwoVGE9e30pKTtmdW5jdGlvbiBoYShOYSxJbil7TmE9PT12b2lkIDAmJihOYT0wKTt2YXIgcW89RWUsY289SW49PT12b2lkIDA/cW8ubGVuZ3RoOk5hK0luO2lmKEluPWNvLU5hLGUuRGVidWcuYXNzZXJ0KE5hPj0wKSxlLkRlYnVnLmFzc2VydChOYTw9Y28pLGUuRGVidWcuYXNzZXJ0KGNvPD1xby5sZW5ndGgpLCFtKHFvLE5hKSlyZXR1cm47dmFyIHRzLHZzLEFjLElzLFF1LHNjPVtdLGJjPVtdO3JldHVybiBELnNjYW5SYW5nZShOYSszLEluLTUsZnVuY3Rpb24oKXt2YXIgSXQ9MSxNYSxhYT1OYS0ocW8ubGFzdEluZGV4T2YoYFxuYCxOYSkrMSkrNDtmdW5jdGlvbiBKYShKcyl7TWF8fChNYT1hYSksc2MucHVzaChKcyksYWErPUpzLmxlbmd0aH1mb3IodmkoKTtVcCg1KTspO1VwKDQpJiYoSXQ9MCxhYT0wKTtlOmZvcig7Oyl7c3dpdGNoKERlKCkpe2Nhc2UgNTk6SXQ9PT0wfHxJdD09PTE/KFl1KHNjKSxRdXx8KFF1PVVlKCkpLFZzKFcoYWEpKSxJdD0wLE1hPXZvaWQgMCk6SmEoRC5nZXRUb2tlblRleHQoKSk7YnJlYWs7Y2FzZSA0OnNjLnB1c2goRC5nZXRUb2tlblRleHQoKSksSXQ9MCxhYT0wO2JyZWFrO2Nhc2UgNDE6dmFyIF9uPUQuZ2V0VG9rZW5UZXh0KCk7SXQ9PT0xfHxJdD09PTI/KEl0PTIsSmEoX24pKTooSXQ9MSxhYSs9X24ubGVuZ3RoKTticmVhaztjYXNlIDU6dmFyIHJvPUQuZ2V0VG9rZW5UZXh0KCk7SXQ9PT0yP3NjLnB1c2gocm8pOk1hIT09dm9pZCAwJiZhYStyby5sZW5ndGg+TWEmJnNjLnB1c2gocm8uc2xpY2UoTWEtYWEpKSxhYSs9cm8ubGVuZ3RoO2JyZWFrO2Nhc2UgMTpicmVhayBlO2Nhc2UgMTg6SXQ9Mjt2YXIgYXM9RC5nZXRTdGFydFBvcygpLGNjPUQuZ2V0VGV4dFBvcygpLTEsU2M9cnQoY2MpO2lmKFNjKXtJc3x8TWMoc2MpLGJjLnB1c2goQmkoZ2UuY3JlYXRlSlNEb2NUZXh0KHNjLmpvaW4oXCJcIikpLElzIT1udWxsP0lzOk5hLGFzKSksYmMucHVzaChTYyksc2M9W10sSXM9RC5nZXRUZXh0UG9zKCk7YnJlYWt9ZGVmYXVsdDpJdD0yLEphKEQuZ2V0VG9rZW5UZXh0KCkpO2JyZWFrfXZpKCl9WXUoc2MpLGJjLmxlbmd0aCYmc2MubGVuZ3RoJiZiYy5wdXNoKEJpKGdlLmNyZWF0ZUpTRG9jVGV4dChzYy5qb2luKFwiXCIpKSxJcyE9bnVsbD9JczpOYSxRdSkpLGJjLmxlbmd0aCYmdHMmJmUuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKFF1LFwiaGF2aW5nIHBhcnNlZCB0YWdzIGltcGxpZXMgdGhhdCB0aGUgZW5kIG9mIHRoZSBjb21tZW50IHNwYW4gc2hvdWxkIGJlIHNldFwiKTt2YXIgaHU9dHMmJkNuKHRzLHZzLEFjKTtyZXR1cm4gQmkoZ2UuY3JlYXRlSlNEb2NDb21tZW50KGJjLmxlbmd0aD9DbihiYyxOYSxRdSk6c2MubGVuZ3RoP3NjLmpvaW4oXCJcIik6dm9pZCAwLGh1KSxOYSxjbyl9KTtmdW5jdGlvbiBNYyhJdCl7Zm9yKDtJdC5sZW5ndGgmJihJdFswXT09PWBcbmB8fEl0WzBdPT09XCJcXHJcIik7KUl0LnNoaWZ0KCl9ZnVuY3Rpb24gWXUoSXQpe2Zvcig7SXQubGVuZ3RoJiZJdFtJdC5sZW5ndGgtMV0udHJpbSgpPT09XCJcIjspSXQucG9wKCl9ZnVuY3Rpb24gUmwoKXtmb3IoOzspe2lmKHZpKCksRGUoKT09PTEpcmV0dXJuITA7aWYoIShEZSgpPT09NXx8RGUoKT09PTQpKXJldHVybiExfX1mdW5jdGlvbiBMYygpe2lmKCEoKERlKCk9PT01fHxEZSgpPT09NCkmJlJ0KFJsKSkpZm9yKDtEZSgpPT09NXx8RGUoKT09PTQ7KXZpKCl9ZnVuY3Rpb24gXygpe2lmKChEZSgpPT09NXx8RGUoKT09PTQpJiZSdChSbCkpcmV0dXJuXCJcIjtmb3IodmFyIEl0PUQuaGFzUHJlY2VkaW5nTGluZUJyZWFrKCksTWE9ITEsYWE9XCJcIjtJdCYmRGUoKT09PTQxfHxEZSgpPT09NXx8RGUoKT09PTQ7KWFhKz1ELmdldFRva2VuVGV4dCgpLERlKCk9PT00PyhJdD0hMCxNYT0hMCxhYT1cIlwiKTpEZSgpPT09NDEmJihJdD0hMSksdmkoKTtyZXR1cm4gTWE/YWE6XCJcIn1mdW5jdGlvbiBXKEl0KXtlLkRlYnVnLmFzc2VydChEZSgpPT09NTkpO3ZhciBNYT1ELmdldFRva2VuUG9zKCk7dmkoKTt2YXIgYWE9ZmYodm9pZCAwKSxKYT1fKCksX247c3dpdGNoKGFhLmVzY2FwZWRUZXh0KXtjYXNlXCJhdXRob3JcIjpfbj1KdChNYSxhYSxJdCxKYSk7YnJlYWs7Y2FzZVwiaW1wbGVtZW50c1wiOl9uPVhmKE1hLGFhLEl0LEphKTticmVhaztjYXNlXCJhdWdtZW50c1wiOmNhc2VcImV4dGVuZHNcIjpfbj1iZChNYSxhYSxJdCxKYSk7YnJlYWs7Y2FzZVwiY2xhc3NcIjpjYXNlXCJjb25zdHJ1Y3RvclwiOl9uPWtmKE1hLGdlLmNyZWF0ZUpTRG9jQ2xhc3NUYWcsYWEsSXQsSmEpO2JyZWFrO2Nhc2VcInB1YmxpY1wiOl9uPWtmKE1hLGdlLmNyZWF0ZUpTRG9jUHVibGljVGFnLGFhLEl0LEphKTticmVhaztjYXNlXCJwcml2YXRlXCI6X249a2YoTWEsZ2UuY3JlYXRlSlNEb2NQcml2YXRlVGFnLGFhLEl0LEphKTticmVhaztjYXNlXCJwcm90ZWN0ZWRcIjpfbj1rZihNYSxnZS5jcmVhdGVKU0RvY1Byb3RlY3RlZFRhZyxhYSxJdCxKYSk7YnJlYWs7Y2FzZVwicmVhZG9ubHlcIjpfbj1rZihNYSxnZS5jcmVhdGVKU0RvY1JlYWRvbmx5VGFnLGFhLEl0LEphKTticmVhaztjYXNlXCJvdmVycmlkZVwiOl9uPWtmKE1hLGdlLmNyZWF0ZUpTRG9jT3ZlcnJpZGVUYWcsYWEsSXQsSmEpO2JyZWFrO2Nhc2VcImRlcHJlY2F0ZWRcIjpVcj0hMCxfbj1rZihNYSxnZS5jcmVhdGVKU0RvY0RlcHJlY2F0ZWRUYWcsYWEsSXQsSmEpO2JyZWFrO2Nhc2VcInRoaXNcIjpfbj1HZyhNYSxhYSxJdCxKYSk7YnJlYWs7Y2FzZVwiZW51bVwiOl9uPUFmKE1hLGFhLEl0LEphKTticmVhaztjYXNlXCJhcmdcIjpjYXNlXCJhcmd1bWVudFwiOmNhc2VcInBhcmFtXCI6cmV0dXJuIGpwKE1hLGFhLDIsSXQpO2Nhc2VcInJldHVyblwiOmNhc2VcInJldHVybnNcIjpfbj1PbShNYSxhYSxJdCxKYSk7YnJlYWs7Y2FzZVwidGVtcGxhdGVcIjpfbj1MbShNYSxhYSxJdCxKYSk7YnJlYWs7Y2FzZVwidHlwZVwiOl9uPUZtKE1hLGFhLEl0LEphKTticmVhaztjYXNlXCJ0eXBlZGVmXCI6X249SGcoTWEsYWEsSXQsSmEpO2JyZWFrO2Nhc2VcImNhbGxiYWNrXCI6X249ZmcoTWEsYWEsSXQsSmEpO2JyZWFrO2Nhc2VcInNlZVwiOl9uPVZnKE1hLGFhLEl0LEphKTticmVhaztkZWZhdWx0Ol9uPXZvKE1hLGFhLEl0LEphKTticmVha31yZXR1cm4gX259ZnVuY3Rpb24gVGUoSXQsTWEsYWEsSmEpe3JldHVybiBKYXx8KGFhKz1NYS1JdCksY3IoYWEsSmEuc2xpY2UoYWEpKX1mdW5jdGlvbiBjcihJdCxNYSl7dmFyIGFhPVVlKCksSmE9W10sX249W10scm8sYXM9MCxjYz0hMCxTYztmdW5jdGlvbiBodShTZCl7U2N8fChTYz1JdCksSmEucHVzaChTZCksSXQrPVNkLmxlbmd0aH1NYSE9PXZvaWQgMCYmKE1hIT09XCJcIiYmaHUoTWEpLGFzPTEpO3ZhciBKcz1EZSgpO2U6Zm9yKDs7KXtzd2l0Y2goSnMpe2Nhc2UgNDphcz0wLEphLnB1c2goRC5nZXRUb2tlblRleHQoKSksSXQ9MDticmVhaztjYXNlIDU5OmlmKGFzPT09M3x8YXM9PT0yJiYoIWNjfHxSdChuaSkpKXtKYS5wdXNoKEQuZ2V0VG9rZW5UZXh0KCkpO2JyZWFrfUQuc2V0VGV4dFBvcyhELmdldFRleHRQb3MoKS0xKTtjYXNlIDE6YnJlYWsgZTtjYXNlIDU6aWYoYXM9PT0yfHxhcz09PTMpaHUoRC5nZXRUb2tlblRleHQoKSk7ZWxzZXt2YXIgUWY9RC5nZXRUb2tlblRleHQoKTtTYyE9PXZvaWQgMCYmSXQrUWYubGVuZ3RoPlNjJiZKYS5wdXNoKFFmLnNsaWNlKFNjLUl0KSksSXQrPVFmLmxlbmd0aH1icmVhaztjYXNlIDE4OmFzPTI7dmFyIGdvPUQuZ2V0U3RhcnRQb3MoKSxWZD1ELmdldFRleHRQb3MoKS0xLFhfPXJ0KFZkKTtYXz8oX24ucHVzaChCaShnZS5jcmVhdGVKU0RvY1RleHQoSmEuam9pbihcIlwiKSkscm8hPW51bGw/cm86YWEsZ28pKSxfbi5wdXNoKFhfKSxKYT1bXSxybz1ELmdldFRleHRQb3MoKSk6aHUoRC5nZXRUb2tlblRleHQoKSk7YnJlYWs7Y2FzZSA2MTphcz09PTM/YXM9Mjphcz0zLGh1KEQuZ2V0VG9rZW5UZXh0KCkpO2JyZWFrO2Nhc2UgNDE6aWYoYXM9PT0wKXthcz0xLEl0Kz0xO2JyZWFrfWRlZmF1bHQ6YXMhPT0zJiYoYXM9MiksaHUoRC5nZXRUb2tlblRleHQoKSk7YnJlYWt9Y2M9RGUoKT09PTUsSnM9dmkoKX1pZihNYyhKYSksWXUoSmEpLF9uLmxlbmd0aClyZXR1cm4gSmEubGVuZ3RoJiZfbi5wdXNoKEJpKGdlLmNyZWF0ZUpTRG9jVGV4dChKYS5qb2luKFwiXCIpKSxybyE9bnVsbD9ybzphYSkpLENuKF9uLGFhLEQuZ2V0VGV4dFBvcygpKTtpZihKYS5sZW5ndGgpcmV0dXJuIEphLmpvaW4oXCJcIil9ZnVuY3Rpb24gbmkoKXt2YXIgSXQ9dmkoKTtyZXR1cm4gSXQ9PT01fHxJdD09PTR9ZnVuY3Rpb24gcnQoSXQpe3ZhciBNYT1JaSh5dCk7aWYoISFNYSl7dmkoKSxMYygpO3ZhciBhYT1VZSgpLEphPWUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSk/ZHMoITApOnZvaWQgMDtpZihKYSlmb3IoO0RlKCk9PT04MDspbnQoKSx2aSgpLEphPUJpKGdlLmNyZWF0ZUpTRG9jTWVtYmVyTmFtZShKYSxlbygpKSxhYSk7Zm9yKHZhciBfbj1bXTtEZSgpIT09MTkmJkRlKCkhPT00JiZEZSgpIT09MTspX24ucHVzaChELmdldFRva2VuVGV4dCgpKSx2aSgpO3ZhciBybz1NYT09PVwibGlua1wiP2dlLmNyZWF0ZUpTRG9jTGluazpNYT09PVwibGlua2NvZGVcIj9nZS5jcmVhdGVKU0RvY0xpbmtDb2RlOmdlLmNyZWF0ZUpTRG9jTGlua1BsYWluO3JldHVybiBCaShybyhKYSxfbi5qb2luKFwiXCIpKSxJdCxELmdldFRleHRQb3MoKSl9fWZ1bmN0aW9uIHl0KCl7aWYoXygpLERlKCk9PT0xOCYmdmkoKT09PTU5JiZlLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKHZpKCkpKXt2YXIgSXQ9RC5nZXRUb2tlblZhbHVlKCk7aWYoWGEoSXQpKXJldHVybiBJdH19ZnVuY3Rpb24gWGEoSXQpe3JldHVybiBJdD09PVwibGlua1wifHxJdD09PVwibGlua2NvZGVcInx8SXQ9PT1cImxpbmtwbGFpblwifWZ1bmN0aW9uIHZvKEl0LE1hLGFhLEphKXtyZXR1cm4gQmkoZ2UuY3JlYXRlSlNEb2NVbmtub3duVGFnKE1hLFRlKEl0LFVlKCksYWEsSmEpKSxJdCl9ZnVuY3Rpb24gVnMoSXQpeyFJdHx8KHRzP3RzLnB1c2goSXQpOih0cz1bSXRdLHZzPUl0LnBvcyksQWM9SXQuZW5kKX1mdW5jdGlvbiBIXygpe3JldHVybiBfKCksRGUoKT09PTE4P3JpKCk6dm9pZCAwfWZ1bmN0aW9uIHlfKCl7dmFyIEl0PVVwKDIyKTtJdCYmTGMoKTt2YXIgTWE9VXAoNjEpLGFhPVJtKCk7cmV0dXJuIE1hJiZRYSg2MSksSXQmJihMYygpLEF0KDYzKSYmbnMoKSx1aSgyMykpLHtuYW1lOmFhLGlzQnJhY2tldGVkOkl0fX1mdW5jdGlvbiBEZChJdCl7c3dpdGNoKEl0LmtpbmQpe2Nhc2UgMTQ4OnJldHVybiEwO2Nhc2UgMTgzOnJldHVybiBEZChJdC5lbGVtZW50VHlwZSk7ZGVmYXVsdDpyZXR1cm4gZS5pc1R5cGVSZWZlcmVuY2VOb2RlKEl0KSYmZS5pc0lkZW50aWZpZXIoSXQudHlwZU5hbWUpJiZJdC50eXBlTmFtZS5lc2NhcGVkVGV4dD09PVwiT2JqZWN0XCImJiFJdC50eXBlQXJndW1lbnRzfX1mdW5jdGlvbiBqcChJdCxNYSxhYSxKYSl7dmFyIF9uPUhfKCkscm89IV9uO18oKTt2YXIgYXM9eV8oKSxjYz1hcy5uYW1lLFNjPWFzLmlzQnJhY2tldGVkLGh1PV8oKTtybyYmIVJ0KHl0KSYmKF9uPUhfKCkpO3ZhciBKcz1UZShJdCxVZSgpLEphLGh1KSxRZj1hYSE9PTQmJmxnKF9uLGNjLGFhLEphKTtRZiYmKF9uPVFmLHJvPSEwKTt2YXIgZ289YWE9PT0xP2dlLmNyZWF0ZUpTRG9jUHJvcGVydHlUYWcoTWEsY2MsU2MsX24scm8sSnMpOmdlLmNyZWF0ZUpTRG9jUGFyYW1ldGVyVGFnKE1hLGNjLFNjLF9uLHJvLEpzKTtyZXR1cm4gQmkoZ28sSXQpfWZ1bmN0aW9uIGxnKEl0LE1hLGFhLEphKXtpZihJdCYmRGQoSXQudHlwZSkpe2Zvcih2YXIgX249VWUoKSxybz12b2lkIDAsYXM9dm9pZCAwO3JvPUlpKGZ1bmN0aW9uKCl7cmV0dXJuIEJsKGFhLEphLE1hKX0pOykocm8ua2luZD09PTM0MHx8cm8ua2luZD09PTM0NykmJihhcz1lLmFwcGVuZChhcyxybykpO2lmKGFzKXt2YXIgY2M9QmkoZ2UuY3JlYXRlSlNEb2NUeXBlTGl0ZXJhbChhcyxJdC50eXBlLmtpbmQ9PT0xODMpLF9uKTtyZXR1cm4gQmkoZ2UuY3JlYXRlSlNEb2NUeXBlRXhwcmVzc2lvbihjYyksX24pfX19ZnVuY3Rpb24gT20oSXQsTWEsYWEsSmEpe2Uuc29tZSh0cyxlLmlzSlNEb2NSZXR1cm5UYWcpJiZucihNYS5wb3MsRC5nZXRUb2tlblBvcygpLGUuRGlhZ25vc3RpY3MuXzBfdGFnX2FscmVhZHlfc3BlY2lmaWVkLE1hLmVzY2FwZWRUZXh0KTt2YXIgX249SF8oKTtyZXR1cm4gQmkoZ2UuY3JlYXRlSlNEb2NSZXR1cm5UYWcoTWEsX24sVGUoSXQsVWUoKSxhYSxKYSkpLEl0KX1mdW5jdGlvbiBGbShJdCxNYSxhYSxKYSl7ZS5zb21lKHRzLGUuaXNKU0RvY1R5cGVUYWcpJiZucihNYS5wb3MsRC5nZXRUb2tlblBvcygpLGUuRGlhZ25vc3RpY3MuXzBfdGFnX2FscmVhZHlfc3BlY2lmaWVkLE1hLmVzY2FwZWRUZXh0KTt2YXIgX249cmkoITApLHJvPWFhIT09dm9pZCAwJiZKYSE9PXZvaWQgMD9UZShJdCxVZSgpLGFhLEphKTp2b2lkIDA7cmV0dXJuIEJpKGdlLmNyZWF0ZUpTRG9jVHlwZVRhZyhNYSxfbixybyksSXQpfWZ1bmN0aW9uIFZnKEl0LE1hLGFhLEphKXt2YXIgX249RGUoKT09PTIyfHxSdChmdW5jdGlvbigpe3JldHVybiB2aSgpPT09NTkmJmUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQodmkoKSkmJlhhKEQuZ2V0VG9rZW5WYWx1ZSgpKX0pLHJvPV9uP3ZvaWQgMDpkaSgpLGFzPWFhIT09dm9pZCAwJiZKYSE9PXZvaWQgMD9UZShJdCxVZSgpLGFhLEphKTp2b2lkIDA7cmV0dXJuIEJpKGdlLmNyZWF0ZUpTRG9jU2VlVGFnKE1hLHJvLGFzKSxJdCl9ZnVuY3Rpb24gSnQoSXQsTWEsYWEsSmEpe3ZhciBfbj1VZSgpLHJvPW1sKCksYXM9RC5nZXRTdGFydFBvcygpLGNjPVRlKEl0LGFzLGFhLEphKTtjY3x8KGFzPUQuZ2V0U3RhcnRQb3MoKSk7dmFyIFNjPXR5cGVvZiBjYyE9XCJzdHJpbmdcIj9DbihlLmNvbmNhdGVuYXRlKFtCaShybyxfbixhcyldLGNjKSxfbik6cm8udGV4dCtjYztyZXR1cm4gQmkoZ2UuY3JlYXRlSlNEb2NBdXRob3JUYWcoTWEsU2MpLEl0KX1mdW5jdGlvbiBtbCgpe2Zvcih2YXIgSXQ9W10sTWE9ITEsYWE9RC5nZXRUb2tlbigpO2FhIT09MSYmYWEhPT00Oyl7aWYoYWE9PT0yOSlNYT0hMDtlbHNle2lmKGFhPT09NTkmJiFNYSlicmVhaztpZihhYT09PTMxJiZNYSl7SXQucHVzaChELmdldFRva2VuVGV4dCgpKSxELnNldFRleHRQb3MoRC5nZXRUb2tlblBvcygpKzEpO2JyZWFrfX1JdC5wdXNoKEQuZ2V0VG9rZW5UZXh0KCkpLGFhPXZpKCl9cmV0dXJuIGdlLmNyZWF0ZUpTRG9jVGV4dChJdC5qb2luKFwiXCIpKX1mdW5jdGlvbiBYZihJdCxNYSxhYSxKYSl7dmFyIF9uPWxmKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZUpTRG9jSW1wbGVtZW50c1RhZyhNYSxfbixUZShJdCxVZSgpLGFhLEphKSksSXQpfWZ1bmN0aW9uIGJkKEl0LE1hLGFhLEphKXt2YXIgX249bGYoKTtyZXR1cm4gQmkoZ2UuY3JlYXRlSlNEb2NBdWdtZW50c1RhZyhNYSxfbixUZShJdCxVZSgpLGFhLEphKSksSXQpfWZ1bmN0aW9uIGxmKCl7dmFyIEl0PWF0KDE4KSxNYT1VZSgpLGFhPUtnKCksSmE9bV8oKSxfbj1nZS5jcmVhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoYWEsSmEpLHJvPUJpKF9uLE1hKTtyZXR1cm4gSXQmJnVpKDE5KSxyb31mdW5jdGlvbiBLZygpe2Zvcih2YXIgSXQ9VWUoKSxNYT1mZigpO2F0KDI0KTspe3ZhciBhYT1mZigpO01hPUJpKGdlLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihNYSxhYSksSXQpfXJldHVybiBNYX1mdW5jdGlvbiBrZihJdCxNYSxhYSxKYSxfbil7cmV0dXJuIEJpKE1hKGFhLFRlKEl0LFVlKCksSmEsX24pKSxJdCl9ZnVuY3Rpb24gR2coSXQsTWEsYWEsSmEpe3ZhciBfbj1yaSghMCk7cmV0dXJuIExjKCksQmkoZ2UuY3JlYXRlSlNEb2NUaGlzVGFnKE1hLF9uLFRlKEl0LFVlKCksYWEsSmEpKSxJdCl9ZnVuY3Rpb24gQWYoSXQsTWEsYWEsSmEpe3ZhciBfbj1yaSghMCk7cmV0dXJuIExjKCksQmkoZ2UuY3JlYXRlSlNEb2NFbnVtVGFnKE1hLF9uLFRlKEl0LFVlKCksYWEsSmEpKSxJdCl9ZnVuY3Rpb24gSGcoSXQsTWEsYWEsSmEpe3ZhciBfbixybz1IXygpO18oKTt2YXIgYXM9V2QoKTtMYygpO3ZhciBjYz1jcihhYSksU2M7aWYoIXJvfHxEZChyby50eXBlKSl7Zm9yKHZhciBodT12b2lkIDAsSnM9dm9pZCAwLFFmPXZvaWQgMCxnbz0hMTtodT1JaShmdW5jdGlvbigpe3JldHVybiBYZyhhYSl9KTspaWYoZ289ITAsaHUua2luZD09PTM0MylpZihKcyl7dmFyIFZkPUFyKGUuRGlhZ25vc3RpY3MuQV9KU0RvY190eXBlZGVmX2NvbW1lbnRfbWF5X25vdF9jb250YWluX211bHRpcGxlX3R5cGVfdGFncyk7VmQmJmUuYWRkUmVsYXRlZEluZm8oVmQsZS5jcmVhdGVEZXRhY2hlZERpYWdub3N0aWMoUmUsMCwwLGUuRGlhZ25vc3RpY3MuVGhlX3RhZ193YXNfZmlyc3Rfc3BlY2lmaWVkX2hlcmUpKTticmVha31lbHNlIEpzPWh1O2Vsc2UgUWY9ZS5hcHBlbmQoUWYsaHUpO2lmKGdvKXt2YXIgWF89cm8mJnJvLnR5cGUua2luZD09PTE4MyxTZD1nZS5jcmVhdGVKU0RvY1R5cGVMaXRlcmFsKFFmLFhfKTtybz1KcyYmSnMudHlwZUV4cHJlc3Npb24mJiFEZChKcy50eXBlRXhwcmVzc2lvbi50eXBlKT9Kcy50eXBlRXhwcmVzc2lvbjpCaShTZCxJdCksU2M9cm8uZW5kfX1TYz1TY3x8Y2MhPT12b2lkIDA/VWUoKTooKF9uPWFzIT1udWxsP2FzOnJvKSE9PW51bGwmJl9uIT09dm9pZCAwP19uOk1hKS5lbmQsY2N8fChjYz1UZShJdCxTYyxhYSxKYSkpO3ZhciBZZz1nZS5jcmVhdGVKU0RvY1R5cGVkZWZUYWcoTWEscm8sYXMsY2MpO3JldHVybiBCaShZZyxJdCxTYyl9ZnVuY3Rpb24gV2QoSXQpe3ZhciBNYT1ELmdldFRva2VuUG9zKCk7aWYoISFlLnRva2VuSXNJZGVudGlmaWVyT3JLZXl3b3JkKERlKCkpKXt2YXIgYWE9ZmYoKTtpZihhdCgyNCkpe3ZhciBKYT1XZCghMCksX249Z2UuY3JlYXRlTW9kdWxlRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxhYSxKYSxJdD80OnZvaWQgMCk7cmV0dXJuIEJpKF9uLE1hKX1yZXR1cm4gSXQmJihhYS5pc0luSlNEb2NOYW1lc3BhY2U9ITApLGFhfX1mdW5jdGlvbiBxZChJdCl7Zm9yKHZhciBNYT1VZSgpLGFhLEphO2FhPUlpKGZ1bmN0aW9uKCl7cmV0dXJuIEJsKDQsSXQpfSk7KUphPWUuYXBwZW5kKEphLGFhKTtyZXR1cm4gQ24oSmF8fFtdLE1hKX1mdW5jdGlvbiBmZyhJdCxNYSxhYSxKYSl7dmFyIF9uPVdkKCk7TGMoKTt2YXIgcm89Y3IoYWEpLGFzPXFkKGFhKSxjYz1JaShmdW5jdGlvbigpe2lmKFVwKDU5KSl7dmFyIEpzPVcoYWEpO2lmKEpzJiZKcy5raW5kPT09MzQxKXJldHVybiBKc319KSxTYz1CaShnZS5jcmVhdGVKU0RvY1NpZ25hdHVyZSh2b2lkIDAsYXMsY2MpLEl0KTtyb3x8KHJvPVRlKEl0LFVlKCksYWEsSmEpKTt2YXIgaHU9cm8hPT12b2lkIDA/VWUoKTpTYy5lbmQ7cmV0dXJuIEJpKGdlLmNyZWF0ZUpTRG9jQ2FsbGJhY2tUYWcoTWEsU2MsX24scm8pLEl0LGh1KX1mdW5jdGlvbiBNbShJdCxNYSl7Zm9yKDshZS5pc0lkZW50aWZpZXIoSXQpfHwhZS5pc0lkZW50aWZpZXIoTWEpOylpZighZS5pc0lkZW50aWZpZXIoSXQpJiYhZS5pc0lkZW50aWZpZXIoTWEpJiZJdC5yaWdodC5lc2NhcGVkVGV4dD09PU1hLnJpZ2h0LmVzY2FwZWRUZXh0KUl0PUl0LmxlZnQsTWE9TWEubGVmdDtlbHNlIHJldHVybiExO3JldHVybiBJdC5lc2NhcGVkVGV4dD09PU1hLmVzY2FwZWRUZXh0fWZ1bmN0aW9uIFhnKEl0KXtyZXR1cm4gQmwoMSxJdCl9ZnVuY3Rpb24gQmwoSXQsTWEsYWEpe2Zvcih2YXIgSmE9ITAsX249ITE7Oylzd2l0Y2godmkoKSl7Y2FzZSA1OTppZihKYSl7dmFyIHJvPVFnKEl0LE1hKTtyZXR1cm4gcm8mJihyby5raW5kPT09MzQwfHxyby5raW5kPT09MzQ3KSYmSXQhPT00JiZhYSYmKGUuaXNJZGVudGlmaWVyKHJvLm5hbWUpfHwhTW0oYWEscm8ubmFtZS5sZWZ0KSk/ITE6cm99X249ITE7YnJlYWs7Y2FzZSA0OkphPSEwLF9uPSExO2JyZWFrO2Nhc2UgNDE6X24mJihKYT0hMSksX249ITA7YnJlYWs7Y2FzZSA3OTpKYT0hMTticmVhaztjYXNlIDE6cmV0dXJuITF9fWZ1bmN0aW9uIFFnKEl0LE1hKXtlLkRlYnVnLmFzc2VydChEZSgpPT09NTkpO3ZhciBhYT1ELmdldFN0YXJ0UG9zKCk7dmkoKTt2YXIgSmE9ZmYoKTtMYygpO3ZhciBfbjtzd2l0Y2goSmEuZXNjYXBlZFRleHQpe2Nhc2VcInR5cGVcIjpyZXR1cm4gSXQ9PT0xJiZGbShhYSxKYSk7Y2FzZVwicHJvcFwiOmNhc2VcInByb3BlcnR5XCI6X249MTticmVhaztjYXNlXCJhcmdcIjpjYXNlXCJhcmd1bWVudFwiOmNhc2VcInBhcmFtXCI6X249NjticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiBJdCZfbj9qcChhYSxKYSxJdCxNYSk6ITF9ZnVuY3Rpb24gX2coKXt2YXIgSXQ9VWUoKSxNYT1VcCgyMik7TWEmJkxjKCk7dmFyIGFhPWZmKGUuRGlhZ25vc3RpY3MuVW5leHBlY3RlZF90b2tlbl9BX3R5cGVfcGFyYW1ldGVyX25hbWVfd2FzX2V4cGVjdGVkX3dpdGhvdXRfY3VybHlfYnJhY2VzKSxKYTtpZihNYSYmKExjKCksdWkoNjMpLEphPUdpKDgzODg2MDgsYWwpLHVpKDIzKSksIWUubm9kZUlzTWlzc2luZyhhYSkpcmV0dXJuIEJpKGdlLmNyZWF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsYWEsdm9pZCAwLEphKSxJdCl9ZnVuY3Rpb24gUWMoKXt2YXIgSXQ9VWUoKSxNYT1bXTtkb3tMYygpO3ZhciBhYT1fZygpO2FhIT09dm9pZCAwJiZNYS5wdXNoKGFhKSxfKCl9d2hpbGUoVXAoMjcpKTtyZXR1cm4gQ24oTWEsSXQpfWZ1bmN0aW9uIExtKEl0LE1hLGFhLEphKXt2YXIgX249RGUoKT09PTE4P3JpKCk6dm9pZCAwLHJvPVFjKCk7cmV0dXJuIEJpKGdlLmNyZWF0ZUpTRG9jVGVtcGxhdGVUYWcoTWEsX24scm8sVGUoSXQsVWUoKSxhYSxKYSkpLEl0KX1mdW5jdGlvbiBVcChJdCl7cmV0dXJuIERlKCk9PT1JdD8odmkoKSwhMCk6ITF9ZnVuY3Rpb24gUm0oKXt2YXIgSXQ9ZmYoKTtmb3IoYXQoMjIpJiZ1aSgyMyk7YXQoMjQpOyl7dmFyIE1hPWZmKCk7YXQoMjIpJiZ1aSgyMyksSXQ9SmkoSXQsTWEpfXJldHVybiBJdH1mdW5jdGlvbiBmZihJdCl7aWYoIWUudG9rZW5Jc0lkZW50aWZpZXJPcktleXdvcmQoRGUoKSkpcmV0dXJuIGtuKDc5LCFJdCxJdHx8ZS5EaWFnbm9zdGljcy5JZGVudGlmaWVyX2V4cGVjdGVkKTtDcisrO3ZhciBNYT1ELmdldFRva2VuUG9zKCksYWE9RC5nZXRUZXh0UG9zKCksSmE9RGUoKSxfbj14bihELmdldFRva2VuVmFsdWUoKSkscm89QmkoZ2UuY3JlYXRlSWRlbnRpZmllcihfbix2b2lkIDAsSmEpLE1hLGFhKTtyZXR1cm4gdmkoKSxyb319fSkoR189ZC5KU0RvY1BhcnNlcnx8KGQuSlNEb2NQYXJzZXI9e30pKX0pKFh8fChYPXt9KSk7dmFyICQ7KGZ1bmN0aW9uKGQpe2Z1bmN0aW9uIEQoRWUsSGUscnIsSWUpe2lmKEllPUllfHxlLkRlYnVnLnNob3VsZEFzc2VydCgyKSxnZShFZSxIZSxycixJZSksZS50ZXh0Q2hhbmdlUmFuZ2VJc1VuY2hhbmdlZChycikpcmV0dXJuIEVlO2lmKEVlLnN0YXRlbWVudHMubGVuZ3RoPT09MClyZXR1cm4gWC5wYXJzZVNvdXJjZUZpbGUoRWUuZmlsZU5hbWUsSGUsRWUubGFuZ3VhZ2VWZXJzaW9uLHZvaWQgMCwhMCxFZS5zY3JpcHRLaW5kLEVlLnNldEV4dGVybmFsTW9kdWxlSW5kaWNhdG9yKTt2YXIgX2U9RWU7ZS5EZWJ1Zy5hc3NlcnQoIV9lLmhhc0JlZW5JbmNyZW1lbnRhbGx5UGFyc2VkKSxfZS5oYXNCZWVuSW5jcmVtZW50YWxseVBhcnNlZD0hMCxYLmZpeHVwUGFyZW50UmVmZXJlbmNlcyhfZSk7dmFyIHdlPUVlLnRleHQsZGU9UmUoRWUpLHllPVooRWUscnIpO2dlKEVlLEhlLHllLEllKSxlLkRlYnVnLmFzc2VydCh5ZS5zcGFuLnN0YXJ0PD1yci5zcGFuLnN0YXJ0KSxlLkRlYnVnLmFzc2VydChlLnRleHRTcGFuRW5kKHllLnNwYW4pPT09ZS50ZXh0U3BhbkVuZChyci5zcGFuKSksZS5EZWJ1Zy5hc3NlcnQoZS50ZXh0U3BhbkVuZChlLnRleHRDaGFuZ2VSYW5nZU5ld1NwYW4oeWUpKT09PWUudGV4dFNwYW5FbmQoZS50ZXh0Q2hhbmdlUmFuZ2VOZXdTcGFuKHJyKSkpO3ZhciBBZT1lLnRleHRDaGFuZ2VSYW5nZU5ld1NwYW4oeWUpLmxlbmd0aC15ZS5zcGFuLmxlbmd0aDtGZShfZSx5ZS5zcGFuLnN0YXJ0LGUudGV4dFNwYW5FbmQoeWUuc3BhbiksZS50ZXh0U3BhbkVuZChlLnRleHRDaGFuZ2VSYW5nZU5ld1NwYW4oeWUpKSxBZSx3ZSxIZSxJZSk7dmFyIGVyPVgucGFyc2VTb3VyY2VGaWxlKEVlLmZpbGVOYW1lLEhlLEVlLmxhbmd1YWdlVmVyc2lvbixkZSwhMCxFZS5zY3JpcHRLaW5kLEVlLnNldEV4dGVybmFsTW9kdWxlSW5kaWNhdG9yKTtyZXR1cm4gZXIuY29tbWVudERpcmVjdGl2ZXM9ZmUoRWUuY29tbWVudERpcmVjdGl2ZXMsZXIuY29tbWVudERpcmVjdGl2ZXMseWUuc3Bhbi5zdGFydCxlLnRleHRTcGFuRW5kKHllLnNwYW4pLEFlLHdlLEhlLEllKSxlci5pbXBsaWVkTm9kZUZvcm1hdD1FZS5pbXBsaWVkTm9kZUZvcm1hdCxlcn1kLnVwZGF0ZVNvdXJjZUZpbGU9RDtmdW5jdGlvbiBmZShFZSxIZSxycixJZSxfZSx3ZSxkZSx5ZSl7aWYoIUVlKXJldHVybiBIZTtmb3IodmFyIEFlLGVyPSExLGlyPTAsQ3I9RWU7aXI8Q3IubGVuZ3RoO2lyKyspe3ZhciBZZT1Dcltpcl0sQnI9WWUucmFuZ2UsRXI9WWUudHlwZTtpZihCci5lbmQ8cnIpQWU9ZS5hcHBlbmQoQWUsWWUpO2Vsc2UgaWYoQnIucG9zPkllKXtuKCk7dmFyIE5lPXtyYW5nZTp7cG9zOkJyLnBvcytfZSxlbmQ6QnIuZW5kK19lfSx0eXBlOkVyfTtBZT1lLmFwcGVuZChBZSxOZSkseWUmJmUuRGVidWcuYXNzZXJ0KHdlLnN1YnN0cmluZyhCci5wb3MsQnIuZW5kKT09PWRlLnN1YnN0cmluZyhOZS5yYW5nZS5wb3MsTmUucmFuZ2UuZW5kKSl9fXJldHVybiBuKCksQWU7ZnVuY3Rpb24gbigpe2VyfHwoZXI9ITAsQWU/SGUmJkFlLnB1c2guYXBwbHkoQWUsSGUpOkFlPUhlKX19ZnVuY3Rpb24gZyhFZSxIZSxycixJZSxfZSx3ZSl7SGU/eWUoRWUpOmRlKEVlKTtyZXR1cm47ZnVuY3Rpb24gZGUoQWUpe3ZhciBlcj1cIlwiO2lmKHdlJiZuZShBZSkmJihlcj1JZS5zdWJzdHJpbmcoQWUucG9zLEFlLmVuZCkpLEFlLl9jaGlsZHJlbiYmKEFlLl9jaGlsZHJlbj12b2lkIDApLGUuc2V0VGV4dFJhbmdlUG9zRW5kKEFlLEFlLnBvcytycixBZS5lbmQrcnIpLHdlJiZuZShBZSkmJmUuRGVidWcuYXNzZXJ0KGVyPT09X2Uuc3Vic3RyaW5nKEFlLnBvcyxBZS5lbmQpKSxzZShBZSxkZSx5ZSksZS5oYXNKU0RvY05vZGVzKEFlKSlmb3IodmFyIGlyPTAsQ3I9QWUuanNEb2M7aXI8Q3IubGVuZ3RoO2lyKyspe3ZhciBZZT1Dcltpcl07ZGUoWWUpfVdlKEFlLHdlKX1mdW5jdGlvbiB5ZShBZSl7QWUuX2NoaWxkcmVuPXZvaWQgMCxlLnNldFRleHRSYW5nZVBvc0VuZChBZSxBZS5wb3MrcnIsQWUuZW5kK3JyKTtmb3IodmFyIGVyPTAsaXI9QWU7ZXI8aXIubGVuZ3RoO2VyKyspe3ZhciBDcj1pcltlcl07ZGUoQ3IpfX19ZnVuY3Rpb24gbmUoRWUpe3N3aXRjaChFZS5raW5kKXtjYXNlIDEwOmNhc2UgODpjYXNlIDc5OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHVlKEVlLEhlLHJyLEllLF9lKXtlLkRlYnVnLmFzc2VydChFZS5lbmQ+PUhlLFwiQWRqdXN0aW5nIGFuIGVsZW1lbnQgdGhhdCB3YXMgZW50aXJlbHkgYmVmb3JlIHRoZSBjaGFuZ2UgcmFuZ2VcIiksZS5EZWJ1Zy5hc3NlcnQoRWUucG9zPD1ycixcIkFkanVzdGluZyBhbiBlbGVtZW50IHRoYXQgd2FzIGVudGlyZWx5IGFmdGVyIHRoZSBjaGFuZ2UgcmFuZ2VcIiksZS5EZWJ1Zy5hc3NlcnQoRWUucG9zPD1FZS5lbmQpO3ZhciB3ZT1NYXRoLm1pbihFZS5wb3MsSWUpLGRlPUVlLmVuZD49cnI/RWUuZW5kK19lOk1hdGgubWluKEVlLmVuZCxJZSk7ZS5EZWJ1Zy5hc3NlcnQod2U8PWRlKSxFZS5wYXJlbnQmJihlLkRlYnVnLmFzc2VydEdyZWF0ZXJUaGFuT3JFcXVhbCh3ZSxFZS5wYXJlbnQucG9zKSxlLkRlYnVnLmFzc2VydExlc3NUaGFuT3JFcXVhbChkZSxFZS5wYXJlbnQuZW5kKSksZS5zZXRUZXh0UmFuZ2VQb3NFbmQoRWUsd2UsZGUpfWZ1bmN0aW9uIFdlKEVlLEhlKXtpZihIZSl7dmFyIHJyPUVlLnBvcyxJZT1mdW5jdGlvbih5ZSl7ZS5EZWJ1Zy5hc3NlcnQoeWUucG9zPj1ycikscnI9eWUuZW5kfTtpZihlLmhhc0pTRG9jTm9kZXMoRWUpKWZvcih2YXIgX2U9MCx3ZT1FZS5qc0RvYztfZTx3ZS5sZW5ndGg7X2UrKyl7dmFyIGRlPXdlW19lXTtJZShkZSl9c2UoRWUsSWUpLGUuRGVidWcuYXNzZXJ0KHJyPD1FZS5lbmQpfX1mdW5jdGlvbiBGZShFZSxIZSxycixJZSxfZSx3ZSxkZSx5ZSl7QWUoRWUpO3JldHVybjtmdW5jdGlvbiBBZShpcil7aWYoZS5EZWJ1Zy5hc3NlcnQoaXIucG9zPD1pci5lbmQpLGlyLnBvcz5ycil7ZyhpciwhMSxfZSx3ZSxkZSx5ZSk7cmV0dXJufXZhciBDcj1pci5lbmQ7aWYoQ3I+PUhlKXtpZihpci5pbnRlcnNlY3RzQ2hhbmdlPSEwLGlyLl9jaGlsZHJlbj12b2lkIDAsdWUoaXIsSGUscnIsSWUsX2UpLHNlKGlyLEFlLGVyKSxlLmhhc0pTRG9jTm9kZXMoaXIpKWZvcih2YXIgWWU9MCxCcj1pci5qc0RvYztZZTxCci5sZW5ndGg7WWUrKyl7dmFyIEVyPUJyW1llXTtBZShFcil9V2UoaXIseWUpO3JldHVybn1lLkRlYnVnLmFzc2VydChDcjxIZSl9ZnVuY3Rpb24gZXIoaXIpe2lmKGUuRGVidWcuYXNzZXJ0KGlyLnBvczw9aXIuZW5kKSxpci5wb3M+cnIpe2coaXIsITAsX2Usd2UsZGUseWUpO3JldHVybn12YXIgQ3I9aXIuZW5kO2lmKENyPj1IZSl7aXIuaW50ZXJzZWN0c0NoYW5nZT0hMCxpci5fY2hpbGRyZW49dm9pZCAwLHVlKGlyLEhlLHJyLEllLF9lKTtmb3IodmFyIFllPTAsQnI9aXI7WWU8QnIubGVuZ3RoO1llKyspe3ZhciBFcj1CcltZZV07QWUoRXIpfXJldHVybn1lLkRlYnVnLmFzc2VydChDcjxIZSl9fWZ1bmN0aW9uIFooRWUsSGUpe2Zvcih2YXIgcnI9MSxJZT1IZS5zcGFuLnN0YXJ0LF9lPTA7SWU+MCYmX2U8PXJyO19lKyspe3ZhciB3ZT1CZShFZSxJZSk7ZS5EZWJ1Zy5hc3NlcnQod2UucG9zPD1JZSk7dmFyIGRlPXdlLnBvcztJZT1NYXRoLm1heCgwLGRlLTEpfXZhciB5ZT1lLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhJZSxlLnRleHRTcGFuRW5kKEhlLnNwYW4pKSxBZT1IZS5uZXdMZW5ndGgrKEhlLnNwYW4uc3RhcnQtSWUpO3JldHVybiBlLmNyZWF0ZVRleHRDaGFuZ2VSYW5nZSh5ZSxBZSl9ZnVuY3Rpb24gQmUoRWUsSGUpe3ZhciBycj1FZSxJZTtpZihzZShFZSxkZSksSWUpe3ZhciBfZT13ZShJZSk7X2UucG9zPnJyLnBvcyYmKHJyPV9lKX1yZXR1cm4gcnI7ZnVuY3Rpb24gd2UoeWUpe2Zvcig7Oyl7dmFyIEFlPWUuZ2V0TGFzdENoaWxkKHllKTtpZihBZSl5ZT1BZTtlbHNlIHJldHVybiB5ZX19ZnVuY3Rpb24gZGUoeWUpe2lmKCFlLm5vZGVJc01pc3NpbmcoeWUpKWlmKHllLnBvczw9SGUpe2lmKHllLnBvcz49cnIucG9zJiYocnI9eWUpLEhlPHllLmVuZClyZXR1cm4gc2UoeWUsZGUpLCEwO2UuRGVidWcuYXNzZXJ0KHllLmVuZDw9SGUpLEllPXllfWVsc2UgcmV0dXJuIGUuRGVidWcuYXNzZXJ0KHllLnBvcz5IZSksITB9fWZ1bmN0aW9uIGdlKEVlLEhlLHJyLEllKXt2YXIgX2U9RWUudGV4dDtpZihyciYmKGUuRGVidWcuYXNzZXJ0KF9lLmxlbmd0aC1yci5zcGFuLmxlbmd0aCtyci5uZXdMZW5ndGg9PT1IZS5sZW5ndGgpLEllfHxlLkRlYnVnLnNob3VsZEFzc2VydCgzKSkpe3ZhciB3ZT1fZS5zdWJzdHIoMCxyci5zcGFuLnN0YXJ0KSxkZT1IZS5zdWJzdHIoMCxyci5zcGFuLnN0YXJ0KTtlLkRlYnVnLmFzc2VydCh3ZT09PWRlKTt2YXIgeWU9X2Uuc3Vic3RyaW5nKGUudGV4dFNwYW5FbmQocnIuc3BhbiksX2UubGVuZ3RoKSxBZT1IZS5zdWJzdHJpbmcoZS50ZXh0U3BhbkVuZChlLnRleHRDaGFuZ2VSYW5nZU5ld1NwYW4ocnIpKSxIZS5sZW5ndGgpO2UuRGVidWcuYXNzZXJ0KHllPT09QWUpfX1mdW5jdGlvbiBSZShFZSl7dmFyIEhlPUVlLnN0YXRlbWVudHMscnI9MDtlLkRlYnVnLmFzc2VydChycjxIZS5sZW5ndGgpO3ZhciBJZT1IZVtycl0sX2U9LTE7cmV0dXJue2N1cnJlbnROb2RlOmZ1bmN0aW9uKGRlKXtyZXR1cm4gZGUhPT1fZSYmKEllJiZJZS5lbmQ9PT1kZSYmcnI8SGUubGVuZ3RoLTEmJihycisrLEllPUhlW3JyXSksKCFJZXx8SWUucG9zIT09ZGUpJiZ3ZShkZSkpLF9lPWRlLGUuRGVidWcuYXNzZXJ0KCFJZXx8SWUucG9zPT09ZGUpLEllfX07ZnVuY3Rpb24gd2UoZGUpe0hlPXZvaWQgMCxycj0tMSxJZT12b2lkIDAsc2UoRWUseWUsQWUpO3JldHVybjtmdW5jdGlvbiB5ZShlcil7cmV0dXJuIGRlPj1lci5wb3MmJmRlPGVyLmVuZD8oc2UoZXIseWUsQWUpLCEwKTohMX1mdW5jdGlvbiBBZShlcil7aWYoZGU+PWVyLnBvcyYmZGU8ZXIuZW5kKWZvcih2YXIgaXI9MDtpcjxlci5sZW5ndGg7aXIrKyl7dmFyIENyPWVyW2lyXTtpZihDcil7aWYoQ3IucG9zPT09ZGUpcmV0dXJuIEhlPWVyLHJyPWlyLEllPUNyLCEwO2lmKENyLnBvczxkZSYmZGU8Q3IuZW5kKXJldHVybiBzZShDcix5ZSxBZSksITB9fXJldHVybiExfX19ZC5jcmVhdGVTeW50YXhDdXJzb3I9UmU7dmFyIHplOyhmdW5jdGlvbihFZSl7RWVbRWUuVmFsdWU9LTFdPVwiVmFsdWVcIn0pKHplfHwoemU9e30pKX0pKCR8fCgkPXt9KSk7ZnVuY3Rpb24gQShkKXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihkLGUuc3VwcG9ydGVkRGVjbGFyYXRpb25FeHRlbnNpb25zKX1lLmlzRGVjbGFyYXRpb25GaWxlTmFtZT1BO2Z1bmN0aW9uIHkoZCxELGZlLGcpe2lmKCEhZCl7aWYoZD09PVwiaW1wb3J0XCIpcmV0dXJuIGUuTW9kdWxlS2luZC5FU05leHQ7aWYoZD09PVwicmVxdWlyZVwiKXJldHVybiBlLk1vZHVsZUtpbmQuQ29tbW9uSlM7ZyhELGZlLUQsZS5EaWFnbm9zdGljcy5yZXNvbHV0aW9uX21vZGVfc2hvdWxkX2JlX2VpdGhlcl9yZXF1aXJlX29yX2ltcG9ydCl9fWZ1bmN0aW9uIFYoZCxEKXtmb3IodmFyIGZlPVtdLGc9MCxuZT1lLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKEQsMCl8fGUuZW1wdHlBcnJheTtnPG5lLmxlbmd0aDtnKyspe3ZhciB1ZT1uZVtnXSxXZT1ELnN1YnN0cmluZyh1ZS5wb3MsdWUuZW5kKTtqKGZlLHVlLFdlKX1kLnByYWdtYXM9bmV3IGUuTWFwO2Zvcih2YXIgRmU9MCxaPWZlO0ZlPFoubGVuZ3RoO0ZlKyspe3ZhciBCZT1aW0ZlXTtpZihkLnByYWdtYXMuaGFzKEJlLm5hbWUpKXt2YXIgZ2U9ZC5wcmFnbWFzLmdldChCZS5uYW1lKTtnZSBpbnN0YW5jZW9mIEFycmF5P2dlLnB1c2goQmUuYXJncyk6ZC5wcmFnbWFzLnNldChCZS5uYW1lLFtnZSxCZS5hcmdzXSk7Y29udGludWV9ZC5wcmFnbWFzLnNldChCZS5uYW1lLEJlLmFyZ3MpfX1lLnByb2Nlc3NDb21tZW50UHJhZ21hcz1WO2Z1bmN0aW9uIEwoZCxEKXtkLmNoZWNrSnNEaXJlY3RpdmU9dm9pZCAwLGQucmVmZXJlbmNlZEZpbGVzPVtdLGQudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXM9W10sZC5saWJSZWZlcmVuY2VEaXJlY3RpdmVzPVtdLGQuYW1kRGVwZW5kZW5jaWVzPVtdLGQuaGFzTm9EZWZhdWx0TGliPSExLGQucHJhZ21hcy5mb3JFYWNoKGZ1bmN0aW9uKGZlLGcpe3N3aXRjaChnKXtjYXNlXCJyZWZlcmVuY2VcIjp7dmFyIG5lPWQucmVmZXJlbmNlZEZpbGVzLHVlPWQudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMsV2U9ZC5saWJSZWZlcmVuY2VEaXJlY3RpdmVzO2UuZm9yRWFjaChlLnRvQXJyYXkoZmUpLGZ1bmN0aW9uKGdlKXt2YXIgUmU9Z2UuYXJndW1lbnRzLHplPVJlLnR5cGVzLEVlPVJlLmxpYixIZT1SZS5wYXRoLHJyPVJlW1wicmVzb2x1dGlvbi1tb2RlXCJdO2lmKGdlLmFyZ3VtZW50c1tcIm5vLWRlZmF1bHQtbGliXCJdKWQuaGFzTm9EZWZhdWx0TGliPSEwO2Vsc2UgaWYoemUpe3ZhciBJZT15KHJyLHplLnBvcyx6ZS5lbmQsRCk7dWUucHVzaChLZSh7cG9zOnplLnBvcyxlbmQ6emUuZW5kLGZpbGVOYW1lOnplLnZhbHVlfSxJZT97cmVzb2x1dGlvbk1vZGU6SWV9Ont9KSl9ZWxzZSBFZT9XZS5wdXNoKHtwb3M6RWUucG9zLGVuZDpFZS5lbmQsZmlsZU5hbWU6RWUudmFsdWV9KTpIZT9uZS5wdXNoKHtwb3M6SGUucG9zLGVuZDpIZS5lbmQsZmlsZU5hbWU6SGUudmFsdWV9KTpEKGdlLnJhbmdlLnBvcyxnZS5yYW5nZS5lbmQtZ2UucmFuZ2UucG9zLGUuRGlhZ25vc3RpY3MuSW52YWxpZF9yZWZlcmVuY2VfZGlyZWN0aXZlX3N5bnRheCl9KTticmVha31jYXNlXCJhbWQtZGVwZW5kZW5jeVwiOntkLmFtZERlcGVuZGVuY2llcz1lLm1hcChlLnRvQXJyYXkoZmUpLGZ1bmN0aW9uKGdlKXtyZXR1cm57bmFtZTpnZS5hcmd1bWVudHMubmFtZSxwYXRoOmdlLmFyZ3VtZW50cy5wYXRofX0pO2JyZWFrfWNhc2VcImFtZC1tb2R1bGVcIjp7aWYoZmUgaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIEZlPTAsWj1mZTtGZTxaLmxlbmd0aDtGZSsrKXt2YXIgQmU9WltGZV07ZC5tb2R1bGVOYW1lJiZEKEJlLnJhbmdlLnBvcyxCZS5yYW5nZS5lbmQtQmUucmFuZ2UucG9zLGUuRGlhZ25vc3RpY3MuQW5fQU1EX21vZHVsZV9jYW5ub3RfaGF2ZV9tdWx0aXBsZV9uYW1lX2Fzc2lnbm1lbnRzKSxkLm1vZHVsZU5hbWU9QmUuYXJndW1lbnRzLm5hbWV9ZWxzZSBkLm1vZHVsZU5hbWU9ZmUuYXJndW1lbnRzLm5hbWU7YnJlYWt9Y2FzZVwidHMtbm9jaGVja1wiOmNhc2VcInRzLWNoZWNrXCI6e2UuZm9yRWFjaChlLnRvQXJyYXkoZmUpLGZ1bmN0aW9uKGdlKXsoIWQuY2hlY2tKc0RpcmVjdGl2ZXx8Z2UucmFuZ2UucG9zPmQuY2hlY2tKc0RpcmVjdGl2ZS5wb3MpJiYoZC5jaGVja0pzRGlyZWN0aXZlPXtlbmFibGVkOmc9PT1cInRzLWNoZWNrXCIsZW5kOmdlLnJhbmdlLmVuZCxwb3M6Z2UucmFuZ2UucG9zfSl9KTticmVha31jYXNlXCJqc3hcIjpjYXNlXCJqc3hmcmFnXCI6Y2FzZVwianN4aW1wb3J0c291cmNlXCI6Y2FzZVwianN4cnVudGltZVwiOnJldHVybjtkZWZhdWx0OmUuRGVidWcuZmFpbChcIlVuaGFuZGxlZCBwcmFnbWEga2luZFwiKX19KX1lLnByb2Nlc3NQcmFnbWFzSW50b0ZpZWxkcz1MO3ZhciBQPW5ldyBlLk1hcDtmdW5jdGlvbiBrKGQpe2lmKFAuaGFzKGQpKXJldHVybiBQLmdldChkKTt2YXIgRD1uZXcgUmVnRXhwKFwiKFxcXFxzXCIuY29uY2F0KGQsYFxcXFxzKj1cXFxccyopKD86KD86JyhbXiddKiknKXwoPzpcIihbXlwiXSopXCIpKWApLFwiaW1cIik7cmV0dXJuIFAuc2V0KGQsRCksRH12YXIgWT0vXlxcL1xcL1xcL1xccyo8KFxcUyspXFxzLio/XFwvPi9pbSxVPS9eXFwvXFwvXFwvP1xccypAKFxcUyspXFxzKiguKilcXHMqJC9pbTtmdW5jdGlvbiBqKGQsRCxmZSl7dmFyIGc9RC5raW5kPT09MiYmWS5leGVjKGZlKTtpZihnKXt2YXIgbmU9Z1sxXS50b0xvd2VyQ2FzZSgpLHVlPWUuY29tbWVudFByYWdtYXNbbmVdO2lmKCF1ZXx8ISh1ZS5raW5kJjEpKXJldHVybjtpZih1ZS5hcmdzKXtmb3IodmFyIFdlPXt9LEZlPTAsWj11ZS5hcmdzO0ZlPFoubGVuZ3RoO0ZlKyspe3ZhciBCZT1aW0ZlXSxnZT1rKEJlLm5hbWUpLFJlPWdlLmV4ZWMoZmUpO2lmKCFSZSYmIUJlLm9wdGlvbmFsKXJldHVybjtpZihSZSl7dmFyIHplPVJlWzJdfHxSZVszXTtpZihCZS5jYXB0dXJlU3Bhbil7dmFyIEVlPUQucG9zK1JlLmluZGV4K1JlWzFdLmxlbmd0aCsxO1dlW0JlLm5hbWVdPXt2YWx1ZTp6ZSxwb3M6RWUsZW5kOkVlK3plLmxlbmd0aH19ZWxzZSBXZVtCZS5uYW1lXT16ZX19ZC5wdXNoKHtuYW1lOm5lLGFyZ3M6e2FyZ3VtZW50czpXZSxyYW5nZTpEfX0pfWVsc2UgZC5wdXNoKHtuYW1lOm5lLGFyZ3M6e2FyZ3VtZW50czp7fSxyYW5nZTpEfX0pO3JldHVybn12YXIgSGU9RC5raW5kPT09MiYmVS5leGVjKGZlKTtpZihIZSlyZXR1cm4gSChkLEQsMixIZSk7aWYoRC5raW5kPT09Mylmb3IodmFyIHJyPS9AKFxcUyspKFxccysuKik/JC9naW0sSWU9dm9pZCAwO0llPXJyLmV4ZWMoZmUpOylIKGQsRCw0LEllKX1mdW5jdGlvbiBIKGQsRCxmZSxnKXtpZighIWcpe3ZhciBuZT1nWzFdLnRvTG93ZXJDYXNlKCksdWU9ZS5jb21tZW50UHJhZ21hc1tuZV07aWYoISghdWV8fCEodWUua2luZCZmZSkpKXt2YXIgV2U9Z1syXSxGZT1JKHVlLFdlKTtGZSE9PVwiZmFpbFwiJiZkLnB1c2goe25hbWU6bmUsYXJnczp7YXJndW1lbnRzOkZlLHJhbmdlOkR9fSl9fX1mdW5jdGlvbiBJKGQsRCl7aWYoIUQpcmV0dXJue307aWYoIWQuYXJncylyZXR1cm57fTtmb3IodmFyIGZlPWUudHJpbVN0cmluZyhEKS5zcGxpdCgvXFxzKy8pLGc9e30sbmU9MDtuZTxkLmFyZ3MubGVuZ3RoO25lKyspe3ZhciB1ZT1kLmFyZ3NbbmVdO2lmKCFmZVtuZV0mJiF1ZS5vcHRpb25hbClyZXR1cm5cImZhaWxcIjtpZih1ZS5jYXB0dXJlU3BhbilyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiQ2FwdHVyZSBzcGFucyBub3QgeWV0IGltcGxlbWVudGVkIGZvciBub24teG1sIHByYWdtYXNcIik7Z1t1ZS5uYW1lXT1mZVtuZV19cmV0dXJuIGd9ZnVuY3Rpb24gbChkLEQpe3JldHVybiBkLmtpbmQhPT1ELmtpbmQ/ITE6ZC5raW5kPT09Nzk/ZC5lc2NhcGVkVGV4dD09PUQuZXNjYXBlZFRleHQ6ZC5raW5kPT09MTA4PyEwOmQubmFtZS5lc2NhcGVkVGV4dD09PUQubmFtZS5lc2NhcGVkVGV4dCYmbChkLmV4cHJlc3Npb24sRC5leHByZXNzaW9uKX1lLnRhZ05hbWVzQXJlRXF1aXZhbGVudD1sfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZS5jb21waWxlT25TYXZlQ29tbWFuZExpbmVPcHRpb249e25hbWU6XCJjb21waWxlT25TYXZlXCIsdHlwZTpcImJvb2xlYW5cIixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX07dmFyIGE9bmV3IGUuTWFwKGUuZ2V0RW50cmllcyh7cHJlc2VydmU6MSxcInJlYWN0LW5hdGl2ZVwiOjMscmVhY3Q6MixcInJlYWN0LWpzeFwiOjQsXCJyZWFjdC1qc3hkZXZcIjo1fSkpO2UuaW52ZXJzZUpzeE9wdGlvbk1hcD1uZXcgZS5NYXAoZS5hcnJheUZyb20oZS5tYXBJdGVyYXRvcihhLmVudHJpZXMoKSxmdW5jdGlvbihQZSl7dmFyIFVlPVBlWzBdLGZyPVBlWzFdO3JldHVybltcIlwiK2ZyLFVlXX0pKSk7dmFyIEM9W1tcImVzNVwiLFwibGliLmVzNS5kLnRzXCJdLFtcImVzNlwiLFwibGliLmVzMjAxNS5kLnRzXCJdLFtcImVzMjAxNVwiLFwibGliLmVzMjAxNS5kLnRzXCJdLFtcImVzN1wiLFwibGliLmVzMjAxNi5kLnRzXCJdLFtcImVzMjAxNlwiLFwibGliLmVzMjAxNi5kLnRzXCJdLFtcImVzMjAxN1wiLFwibGliLmVzMjAxNy5kLnRzXCJdLFtcImVzMjAxOFwiLFwibGliLmVzMjAxOC5kLnRzXCJdLFtcImVzMjAxOVwiLFwibGliLmVzMjAxOS5kLnRzXCJdLFtcImVzMjAyMFwiLFwibGliLmVzMjAyMC5kLnRzXCJdLFtcImVzMjAyMVwiLFwibGliLmVzMjAyMS5kLnRzXCJdLFtcImVzMjAyMlwiLFwibGliLmVzMjAyMi5kLnRzXCJdLFtcImVzbmV4dFwiLFwibGliLmVzbmV4dC5kLnRzXCJdLFtcImRvbVwiLFwibGliLmRvbS5kLnRzXCJdLFtcImRvbS5pdGVyYWJsZVwiLFwibGliLmRvbS5pdGVyYWJsZS5kLnRzXCJdLFtcIndlYndvcmtlclwiLFwibGliLndlYndvcmtlci5kLnRzXCJdLFtcIndlYndvcmtlci5pbXBvcnRzY3JpcHRzXCIsXCJsaWIud2Vid29ya2VyLmltcG9ydHNjcmlwdHMuZC50c1wiXSxbXCJ3ZWJ3b3JrZXIuaXRlcmFibGVcIixcImxpYi53ZWJ3b3JrZXIuaXRlcmFibGUuZC50c1wiXSxbXCJzY3JpcHRob3N0XCIsXCJsaWIuc2NyaXB0aG9zdC5kLnRzXCJdLFtcImVzMjAxNS5jb3JlXCIsXCJsaWIuZXMyMDE1LmNvcmUuZC50c1wiXSxbXCJlczIwMTUuY29sbGVjdGlvblwiLFwibGliLmVzMjAxNS5jb2xsZWN0aW9uLmQudHNcIl0sW1wiZXMyMDE1LmdlbmVyYXRvclwiLFwibGliLmVzMjAxNS5nZW5lcmF0b3IuZC50c1wiXSxbXCJlczIwMTUuaXRlcmFibGVcIixcImxpYi5lczIwMTUuaXRlcmFibGUuZC50c1wiXSxbXCJlczIwMTUucHJvbWlzZVwiLFwibGliLmVzMjAxNS5wcm9taXNlLmQudHNcIl0sW1wiZXMyMDE1LnByb3h5XCIsXCJsaWIuZXMyMDE1LnByb3h5LmQudHNcIl0sW1wiZXMyMDE1LnJlZmxlY3RcIixcImxpYi5lczIwMTUucmVmbGVjdC5kLnRzXCJdLFtcImVzMjAxNS5zeW1ib2xcIixcImxpYi5lczIwMTUuc3ltYm9sLmQudHNcIl0sW1wiZXMyMDE1LnN5bWJvbC53ZWxsa25vd25cIixcImxpYi5lczIwMTUuc3ltYm9sLndlbGxrbm93bi5kLnRzXCJdLFtcImVzMjAxNi5hcnJheS5pbmNsdWRlXCIsXCJsaWIuZXMyMDE2LmFycmF5LmluY2x1ZGUuZC50c1wiXSxbXCJlczIwMTcub2JqZWN0XCIsXCJsaWIuZXMyMDE3Lm9iamVjdC5kLnRzXCJdLFtcImVzMjAxNy5zaGFyZWRtZW1vcnlcIixcImxpYi5lczIwMTcuc2hhcmVkbWVtb3J5LmQudHNcIl0sW1wiZXMyMDE3LnN0cmluZ1wiLFwibGliLmVzMjAxNy5zdHJpbmcuZC50c1wiXSxbXCJlczIwMTcuaW50bFwiLFwibGliLmVzMjAxNy5pbnRsLmQudHNcIl0sW1wiZXMyMDE3LnR5cGVkYXJyYXlzXCIsXCJsaWIuZXMyMDE3LnR5cGVkYXJyYXlzLmQudHNcIl0sW1wiZXMyMDE4LmFzeW5jZ2VuZXJhdG9yXCIsXCJsaWIuZXMyMDE4LmFzeW5jZ2VuZXJhdG9yLmQudHNcIl0sW1wiZXMyMDE4LmFzeW5jaXRlcmFibGVcIixcImxpYi5lczIwMTguYXN5bmNpdGVyYWJsZS5kLnRzXCJdLFtcImVzMjAxOC5pbnRsXCIsXCJsaWIuZXMyMDE4LmludGwuZC50c1wiXSxbXCJlczIwMTgucHJvbWlzZVwiLFwibGliLmVzMjAxOC5wcm9taXNlLmQudHNcIl0sW1wiZXMyMDE4LnJlZ2V4cFwiLFwibGliLmVzMjAxOC5yZWdleHAuZC50c1wiXSxbXCJlczIwMTkuYXJyYXlcIixcImxpYi5lczIwMTkuYXJyYXkuZC50c1wiXSxbXCJlczIwMTkub2JqZWN0XCIsXCJsaWIuZXMyMDE5Lm9iamVjdC5kLnRzXCJdLFtcImVzMjAxOS5zdHJpbmdcIixcImxpYi5lczIwMTkuc3RyaW5nLmQudHNcIl0sW1wiZXMyMDE5LnN5bWJvbFwiLFwibGliLmVzMjAxOS5zeW1ib2wuZC50c1wiXSxbXCJlczIwMjAuYmlnaW50XCIsXCJsaWIuZXMyMDIwLmJpZ2ludC5kLnRzXCJdLFtcImVzMjAyMC5kYXRlXCIsXCJsaWIuZXMyMDIwLmRhdGUuZC50c1wiXSxbXCJlczIwMjAucHJvbWlzZVwiLFwibGliLmVzMjAyMC5wcm9taXNlLmQudHNcIl0sW1wiZXMyMDIwLnNoYXJlZG1lbW9yeVwiLFwibGliLmVzMjAyMC5zaGFyZWRtZW1vcnkuZC50c1wiXSxbXCJlczIwMjAuc3RyaW5nXCIsXCJsaWIuZXMyMDIwLnN0cmluZy5kLnRzXCJdLFtcImVzMjAyMC5zeW1ib2wud2VsbGtub3duXCIsXCJsaWIuZXMyMDIwLnN5bWJvbC53ZWxsa25vd24uZC50c1wiXSxbXCJlczIwMjAuaW50bFwiLFwibGliLmVzMjAyMC5pbnRsLmQudHNcIl0sW1wiZXMyMDIwLm51bWJlclwiLFwibGliLmVzMjAyMC5udW1iZXIuZC50c1wiXSxbXCJlczIwMjEucHJvbWlzZVwiLFwibGliLmVzMjAyMS5wcm9taXNlLmQudHNcIl0sW1wiZXMyMDIxLnN0cmluZ1wiLFwibGliLmVzMjAyMS5zdHJpbmcuZC50c1wiXSxbXCJlczIwMjEud2Vha3JlZlwiLFwibGliLmVzMjAyMS53ZWFrcmVmLmQudHNcIl0sW1wiZXMyMDIxLmludGxcIixcImxpYi5lczIwMjEuaW50bC5kLnRzXCJdLFtcImVzMjAyMi5hcnJheVwiLFwibGliLmVzMjAyMi5hcnJheS5kLnRzXCJdLFtcImVzMjAyMi5lcnJvclwiLFwibGliLmVzMjAyMi5lcnJvci5kLnRzXCJdLFtcImVzMjAyMi5pbnRsXCIsXCJsaWIuZXMyMDIyLmludGwuZC50c1wiXSxbXCJlczIwMjIub2JqZWN0XCIsXCJsaWIuZXMyMDIyLm9iamVjdC5kLnRzXCJdLFtcImVzMjAyMi5zdHJpbmdcIixcImxpYi5lczIwMjIuc3RyaW5nLmQudHNcIl0sW1wiZXNuZXh0LmFycmF5XCIsXCJsaWIuZXMyMDIyLmFycmF5LmQudHNcIl0sW1wiZXNuZXh0LnN5bWJvbFwiLFwibGliLmVzMjAxOS5zeW1ib2wuZC50c1wiXSxbXCJlc25leHQuYXN5bmNpdGVyYWJsZVwiLFwibGliLmVzMjAxOC5hc3luY2l0ZXJhYmxlLmQudHNcIl0sW1wiZXNuZXh0LmludGxcIixcImxpYi5lc25leHQuaW50bC5kLnRzXCJdLFtcImVzbmV4dC5iaWdpbnRcIixcImxpYi5lczIwMjAuYmlnaW50LmQudHNcIl0sW1wiZXNuZXh0LnN0cmluZ1wiLFwibGliLmVzMjAyMi5zdHJpbmcuZC50c1wiXSxbXCJlc25leHQucHJvbWlzZVwiLFwibGliLmVzMjAyMS5wcm9taXNlLmQudHNcIl0sW1wiZXNuZXh0LndlYWtyZWZcIixcImxpYi5lczIwMjEud2Vha3JlZi5kLnRzXCJdXTtlLmxpYnM9Qy5tYXAoZnVuY3Rpb24oUGUpe3JldHVybiBQZVswXX0pLGUubGliTWFwPW5ldyBlLk1hcChDKSxlLm9wdGlvbnNGb3JXYXRjaD1be25hbWU6XCJ3YXRjaEZpbGVcIix0eXBlOm5ldyBlLk1hcChlLmdldEVudHJpZXMoe2ZpeGVkcG9sbGluZ2ludGVydmFsOmUuV2F0Y2hGaWxlS2luZC5GaXhlZFBvbGxpbmdJbnRlcnZhbCxwcmlvcml0eXBvbGxpbmdpbnRlcnZhbDplLldhdGNoRmlsZUtpbmQuUHJpb3JpdHlQb2xsaW5nSW50ZXJ2YWwsZHluYW1pY3ByaW9yaXR5cG9sbGluZzplLldhdGNoRmlsZUtpbmQuRHluYW1pY1ByaW9yaXR5UG9sbGluZyxmaXhlZGNodW5rc2l6ZXBvbGxpbmc6ZS5XYXRjaEZpbGVLaW5kLkZpeGVkQ2h1bmtTaXplUG9sbGluZyx1c2Vmc2V2ZW50czplLldhdGNoRmlsZUtpbmQuVXNlRnNFdmVudHMsdXNlZnNldmVudHNvbnBhcmVudGRpcmVjdG9yeTplLldhdGNoRmlsZUtpbmQuVXNlRnNFdmVudHNPblBhcmVudERpcmVjdG9yeX0pKSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLldhdGNoX2FuZF9CdWlsZF9Nb2RlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNwZWNpZnlfaG93X3RoZV9UeXBlU2NyaXB0X3dhdGNoX21vZGVfd29ya3MsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5XYXRjaEZpbGVLaW5kLlVzZUZzRXZlbnRzfSx7bmFtZTpcIndhdGNoRGlyZWN0b3J5XCIsdHlwZTpuZXcgZS5NYXAoZS5nZXRFbnRyaWVzKHt1c2Vmc2V2ZW50czplLldhdGNoRGlyZWN0b3J5S2luZC5Vc2VGc0V2ZW50cyxmaXhlZHBvbGxpbmdpbnRlcnZhbDplLldhdGNoRGlyZWN0b3J5S2luZC5GaXhlZFBvbGxpbmdJbnRlcnZhbCxkeW5hbWljcHJpb3JpdHlwb2xsaW5nOmUuV2F0Y2hEaXJlY3RvcnlLaW5kLkR5bmFtaWNQcmlvcml0eVBvbGxpbmcsZml4ZWRjaHVua3NpemVwb2xsaW5nOmUuV2F0Y2hEaXJlY3RvcnlLaW5kLkZpeGVkQ2h1bmtTaXplUG9sbGluZ30pKSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLldhdGNoX2FuZF9CdWlsZF9Nb2RlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNwZWNpZnlfaG93X2RpcmVjdG9yaWVzX2FyZV93YXRjaGVkX29uX3N5c3RlbXNfdGhhdF9sYWNrX3JlY3Vyc2l2ZV9maWxlX3dhdGNoaW5nX2Z1bmN0aW9uYWxpdHksZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5XYXRjaERpcmVjdG9yeUtpbmQuVXNlRnNFdmVudHN9LHtuYW1lOlwiZmFsbGJhY2tQb2xsaW5nXCIsdHlwZTpuZXcgZS5NYXAoZS5nZXRFbnRyaWVzKHtmaXhlZGludGVydmFsOmUuUG9sbGluZ1dhdGNoS2luZC5GaXhlZEludGVydmFsLHByaW9yaXR5aW50ZXJ2YWw6ZS5Qb2xsaW5nV2F0Y2hLaW5kLlByaW9yaXR5SW50ZXJ2YWwsZHluYW1pY3ByaW9yaXR5OmUuUG9sbGluZ1dhdGNoS2luZC5EeW5hbWljUHJpb3JpdHksZml4ZWRjaHVua3NpemU6ZS5Qb2xsaW5nV2F0Y2hLaW5kLkZpeGVkQ2h1bmtTaXplfSkpLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuV2F0Y2hfYW5kX0J1aWxkX01vZGVzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV93aGF0X2FwcHJvYWNoX3RoZV93YXRjaGVyX3Nob3VsZF91c2VfaWZfdGhlX3N5c3RlbV9ydW5zX291dF9vZl9uYXRpdmVfZmlsZV93YXRjaGVycyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjplLlBvbGxpbmdXYXRjaEtpbmQuUHJpb3JpdHlJbnRlcnZhbH0se25hbWU6XCJzeW5jaHJvbm91c1dhdGNoRGlyZWN0b3J5XCIsdHlwZTpcImJvb2xlYW5cIixjYXRlZ29yeTplLkRpYWdub3N0aWNzLldhdGNoX2FuZF9CdWlsZF9Nb2RlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlN5bmNocm9ub3VzbHlfY2FsbF9jYWxsYmFja3NfYW5kX3VwZGF0ZV90aGVfc3RhdGVfb2ZfZGlyZWN0b3J5X3dhdGNoZXJzX29uX3BsYXRmb3Jtc190aGF0X2Rvbl90X3N1cHBvcnRfcmVjdXJzaXZlX3dhdGNoaW5nX25hdGl2ZWx5LGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImV4Y2x1ZGVEaXJlY3Rvcmllc1wiLHR5cGU6XCJsaXN0XCIsZWxlbWVudDp7bmFtZTpcImV4Y2x1ZGVEaXJlY3RvcnlcIix0eXBlOlwic3RyaW5nXCIsaXNGaWxlUGF0aDohMCxleHRyYVZhbGlkYXRpb246SmV9LGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuV2F0Y2hfYW5kX0J1aWxkX01vZGVzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuUmVtb3ZlX2FfbGlzdF9vZl9kaXJlY3Rvcmllc19mcm9tX3RoZV93YXRjaF9wcm9jZXNzfSx7bmFtZTpcImV4Y2x1ZGVGaWxlc1wiLHR5cGU6XCJsaXN0XCIsZWxlbWVudDp7bmFtZTpcImV4Y2x1ZGVGaWxlXCIsdHlwZTpcInN0cmluZ1wiLGlzRmlsZVBhdGg6ITAsZXh0cmFWYWxpZGF0aW9uOkplfSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLldhdGNoX2FuZF9CdWlsZF9Nb2RlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlJlbW92ZV9hX2xpc3Rfb2ZfZmlsZXNfZnJvbV90aGVfd2F0Y2hfbW9kZV9zX3Byb2Nlc3Npbmd9XSxlLmNvbW1vbk9wdGlvbnNXaXRoQnVpbGQ9W3tuYW1lOlwiaGVscFwiLHNob3J0TmFtZTpcImhcIix0eXBlOlwiYm9vbGVhblwiLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbW1hbmRfbGluZV9PcHRpb25zLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuUHJpbnRfdGhpc19tZXNzYWdlLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImhlbHBcIixzaG9ydE5hbWU6XCI/XCIsdHlwZTpcImJvb2xlYW5cIixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJ3YXRjaFwiLHNob3J0TmFtZTpcIndcIix0eXBlOlwiYm9vbGVhblwiLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxpc0NvbW1hbmRMaW5lT25seTohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbW1hbmRfbGluZV9PcHRpb25zLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuV2F0Y2hfaW5wdXRfZmlsZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwicHJlc2VydmVXYXRjaE91dHB1dFwiLHR5cGU6XCJib29sZWFuXCIsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiExLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuT3V0cHV0X0Zvcm1hdHRpbmcsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5EaXNhYmxlX3dpcGluZ190aGVfY29uc29sZV9pbl93YXRjaF9tb2RlLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImxpc3RGaWxlc1wiLHR5cGU6XCJib29sZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21waWxlcl9EaWFnbm9zdGljcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlByaW50X2FsbF9vZl90aGVfZmlsZXNfcmVhZF9kdXJpbmdfdGhlX2NvbXBpbGF0aW9uLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImV4cGxhaW5GaWxlc1wiLHR5cGU6XCJib29sZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21waWxlcl9EaWFnbm9zdGljcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlByaW50X2ZpbGVzX3JlYWRfZHVyaW5nX3RoZV9jb21waWxhdGlvbl9pbmNsdWRpbmdfd2h5X2l0X3dhc19pbmNsdWRlZCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJsaXN0RW1pdHRlZEZpbGVzXCIsdHlwZTpcImJvb2xlYW5cIixjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbXBpbGVyX0RpYWdub3N0aWNzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuUHJpbnRfdGhlX25hbWVzX29mX2VtaXR0ZWRfZmlsZXNfYWZ0ZXJfYV9jb21waWxhdGlvbixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJwcmV0dHlcIix0eXBlOlwiYm9vbGVhblwiLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLk91dHB1dF9Gb3JtYXR0aW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5hYmxlX2NvbG9yX2FuZF9mb3JtYXR0aW5nX2luX1R5cGVTY3JpcHRfc19vdXRwdXRfdG9fbWFrZV9jb21waWxlcl9lcnJvcnNfZWFzaWVyX3RvX3JlYWQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITB9LHtuYW1lOlwidHJhY2VSZXNvbHV0aW9uXCIsdHlwZTpcImJvb2xlYW5cIixjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbXBpbGVyX0RpYWdub3N0aWNzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuTG9nX3BhdGhzX3VzZWRfZHVyaW5nX3RoZV9tb2R1bGVSZXNvbHV0aW9uX3Byb2Nlc3MsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiZGlhZ25vc3RpY3NcIix0eXBlOlwiYm9vbGVhblwiLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuQ29tcGlsZXJfRGlhZ25vc3RpY3MsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5PdXRwdXRfY29tcGlsZXJfcGVyZm9ybWFuY2VfaW5mb3JtYXRpb25fYWZ0ZXJfYnVpbGRpbmcsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiZXh0ZW5kZWREaWFnbm9zdGljc1wiLHR5cGU6XCJib29sZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21waWxlcl9EaWFnbm9zdGljcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLk91dHB1dF9tb3JlX2RldGFpbGVkX2NvbXBpbGVyX3BlcmZvcm1hbmNlX2luZm9ybWF0aW9uX2FmdGVyX2J1aWxkaW5nLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImdlbmVyYXRlQ3B1UHJvZmlsZVwiLHR5cGU6XCJzdHJpbmdcIixpc0ZpbGVQYXRoOiEwLHBhcmFtVHlwZTplLkRpYWdub3N0aWNzLkZJTEVfT1JfRElSRUNUT1JZLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuQ29tcGlsZXJfRGlhZ25vc3RpY3MsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5FbWl0X2FfdjhfQ1BVX3Byb2ZpbGVfb2ZfdGhlX2NvbXBpbGVyX3J1bl9mb3JfZGVidWdnaW5nLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOlwicHJvZmlsZS5jcHVwcm9maWxlXCJ9LHtuYW1lOlwiZ2VuZXJhdGVUcmFjZVwiLHR5cGU6XCJzdHJpbmdcIixpc0ZpbGVQYXRoOiEwLGlzQ29tbWFuZExpbmVPbmx5OiEwLHBhcmFtVHlwZTplLkRpYWdub3N0aWNzLkRJUkVDVE9SWSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbXBpbGVyX0RpYWdub3N0aWNzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuR2VuZXJhdGVzX2FuX2V2ZW50X3RyYWNlX2FuZF9hX2xpc3Rfb2ZfdHlwZXN9LHtuYW1lOlwiaW5jcmVtZW50YWxcIixzaG9ydE5hbWU6XCJpXCIsdHlwZTpcImJvb2xlYW5cIixjYXRlZ29yeTplLkRpYWdub3N0aWNzLlByb2plY3RzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU2F2ZV90c2J1aWxkaW5mb19maWxlc190b19hbGxvd19mb3JfaW5jcmVtZW50YWxfY29tcGlsYXRpb25fb2ZfcHJvamVjdHMsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuZmFsc2VfdW5sZXNzX2NvbXBvc2l0ZV9pc19zZXR9LHtuYW1lOlwiYXNzdW1lQ2hhbmdlc09ubHlBZmZlY3REaXJlY3REZXBlbmRlbmNpZXNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGFmZmVjdHNFbWl0OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuV2F0Y2hfYW5kX0J1aWxkX01vZGVzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuSGF2ZV9yZWNvbXBpbGVzX2luX3Byb2plY3RzX3RoYXRfdXNlX2luY3JlbWVudGFsX2FuZF93YXRjaF9tb2RlX2Fzc3VtZV90aGF0X2NoYW5nZXNfd2l0aGluX2FfZmlsZV93aWxsX29ubHlfYWZmZWN0X2ZpbGVzX2RpcmVjdGx5X2RlcGVuZGluZ19vbl9pdCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJsb2NhbGVcIix0eXBlOlwic3RyaW5nXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxpc0NvbW1hbmRMaW5lT25seTohMCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNldF90aGVfbGFuZ3VhZ2Vfb2ZfdGhlX21lc3NhZ2luZ19mcm9tX1R5cGVTY3JpcHRfVGhpc19kb2VzX25vdF9hZmZlY3RfZW1pdCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlBsYXRmb3JtX3NwZWNpZmljfV0sZS50YXJnZXRPcHRpb25EZWNsYXJhdGlvbj17bmFtZTpcInRhcmdldFwiLHNob3J0TmFtZTpcInRcIix0eXBlOm5ldyBlLk1hcChlLmdldEVudHJpZXMoe2VzMzowLGVzNToxLGVzNjoyLGVzMjAxNToyLGVzMjAxNjozLGVzMjAxNzo0LGVzMjAxODo1LGVzMjAxOTo2LGVzMjAyMDo3LGVzMjAyMTo4LGVzMjAyMjo5LGVzbmV4dDo5OX0pKSxhZmZlY3RzU291cmNlRmlsZTohMCxhZmZlY3RzTW9kdWxlUmVzb2x1dGlvbjohMCxhZmZlY3RzRW1pdDohMCxwYXJhbVR5cGU6ZS5EaWFnbm9zdGljcy5WRVJTSU9OLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkxhbmd1YWdlX2FuZF9FbnZpcm9ubWVudCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNldF90aGVfSmF2YVNjcmlwdF9sYW5ndWFnZV92ZXJzaW9uX2Zvcl9lbWl0dGVkX0phdmFTY3JpcHRfYW5kX2luY2x1ZGVfY29tcGF0aWJsZV9saWJyYXJ5X2RlY2xhcmF0aW9ucyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjowfTt2YXIgdz1be25hbWU6XCJhbGxcIix0eXBlOlwiYm9vbGVhblwiLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbW1hbmRfbGluZV9PcHRpb25zLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU2hvd19hbGxfY29tcGlsZXJfb3B0aW9ucyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJ2ZXJzaW9uXCIsc2hvcnROYW1lOlwidlwiLHR5cGU6XCJib29sZWFuXCIsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuQ29tbWFuZF9saW5lX09wdGlvbnMsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5QcmludF90aGVfY29tcGlsZXJfc192ZXJzaW9uLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImluaXRcIix0eXBlOlwiYm9vbGVhblwiLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbW1hbmRfbGluZV9PcHRpb25zLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuSW5pdGlhbGl6ZXNfYV9UeXBlU2NyaXB0X3Byb2plY3RfYW5kX2NyZWF0ZXNfYV90c2NvbmZpZ19qc29uX2ZpbGUsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwicHJvamVjdFwiLHNob3J0TmFtZTpcInBcIix0eXBlOlwic3RyaW5nXCIsaXNGaWxlUGF0aDohMCxzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxwYXJhbVR5cGU6ZS5EaWFnbm9zdGljcy5GSUxFX09SX0RJUkVDVE9SWSxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkNvbXBpbGVfdGhlX3Byb2plY3RfZ2l2ZW5fdGhlX3BhdGhfdG9faXRzX2NvbmZpZ3VyYXRpb25fZmlsZV9vcl90b19hX2ZvbGRlcl93aXRoX2FfdHNjb25maWdfanNvbn0se25hbWU6XCJidWlsZFwiLHR5cGU6XCJib29sZWFuXCIsc2hvcnROYW1lOlwiYlwiLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkNvbW1hbmRfbGluZV9PcHRpb25zLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuQnVpbGRfb25lX29yX21vcmVfcHJvamVjdHNfYW5kX3RoZWlyX2RlcGVuZGVuY2llc19pZl9vdXRfb2ZfZGF0ZSxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJzaG93Q29uZmlnXCIsdHlwZTpcImJvb2xlYW5cIixzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxpc0NvbW1hbmRMaW5lT25seTohMCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlByaW50X3RoZV9maW5hbF9jb25maWd1cmF0aW9uX2luc3RlYWRfb2ZfYnVpbGRpbmcsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibGlzdEZpbGVzT25seVwiLHR5cGU6XCJib29sZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxhZmZlY3RzU2VtYW50aWNEaWFnbm9zdGljczohMCxhZmZlY3RzRW1pdDohMCxpc0NvbW1hbmRMaW5lT25seTohMCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlByaW50X25hbWVzX29mX2ZpbGVzX3RoYXRfYXJlX3BhcnRfb2ZfdGhlX2NvbXBpbGF0aW9uX2FuZF90aGVuX3N0b3BfcHJvY2Vzc2luZyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0sZS50YXJnZXRPcHRpb25EZWNsYXJhdGlvbix7bmFtZTpcIm1vZHVsZVwiLHNob3J0TmFtZTpcIm1cIix0eXBlOm5ldyBlLk1hcChlLmdldEVudHJpZXMoe25vbmU6ZS5Nb2R1bGVLaW5kLk5vbmUsY29tbW9uanM6ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTLGFtZDplLk1vZHVsZUtpbmQuQU1ELHN5c3RlbTplLk1vZHVsZUtpbmQuU3lzdGVtLHVtZDplLk1vZHVsZUtpbmQuVU1ELGVzNjplLk1vZHVsZUtpbmQuRVMyMDE1LGVzMjAxNTplLk1vZHVsZUtpbmQuRVMyMDE1LGVzMjAyMDplLk1vZHVsZUtpbmQuRVMyMDIwLGVzMjAyMjplLk1vZHVsZUtpbmQuRVMyMDIyLGVzbmV4dDplLk1vZHVsZUtpbmQuRVNOZXh0LG5vZGUxNjplLk1vZHVsZUtpbmQuTm9kZTE2LG5vZGVuZXh0OmUuTW9kdWxlS2luZC5Ob2RlTmV4dH0pKSxhZmZlY3RzTW9kdWxlUmVzb2x1dGlvbjohMCxhZmZlY3RzRW1pdDohMCxwYXJhbVR5cGU6ZS5EaWFnbm9zdGljcy5LSU5ELHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLk1vZHVsZXMsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TcGVjaWZ5X3doYXRfbW9kdWxlX2NvZGVfaXNfZ2VuZXJhdGVkLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOnZvaWQgMH0se25hbWU6XCJsaWJcIix0eXBlOlwibGlzdFwiLGVsZW1lbnQ6e25hbWU6XCJsaWJcIix0eXBlOmUubGliTWFwLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOnZvaWQgMH0sYWZmZWN0c1Byb2dyYW1TdHJ1Y3R1cmU6ITAsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTGFuZ3VhZ2VfYW5kX0Vudmlyb25tZW50LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV9hX3NldF9vZl9idW5kbGVkX2xpYnJhcnlfZGVjbGFyYXRpb25fZmlsZXNfdGhhdF9kZXNjcmliZV90aGVfdGFyZ2V0X3J1bnRpbWVfZW52aXJvbm1lbnQsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwfSx7bmFtZTpcImFsbG93SnNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNNb2R1bGVSZXNvbHV0aW9uOiEwLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkphdmFTY3JpcHRfU3VwcG9ydCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkFsbG93X0phdmFTY3JpcHRfZmlsZXNfdG9fYmVfYV9wYXJ0X29mX3lvdXJfcHJvZ3JhbV9Vc2VfdGhlX2NoZWNrSlNfb3B0aW9uX3RvX2dldF9lcnJvcnNfZnJvbV90aGVzZV9maWxlcyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJjaGVja0pzXCIsdHlwZTpcImJvb2xlYW5cIixzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5KYXZhU2NyaXB0X1N1cHBvcnQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5FbmFibGVfZXJyb3JfcmVwb3J0aW5nX2luX3R5cGVfY2hlY2tlZF9KYXZhU2NyaXB0X2ZpbGVzLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImpzeFwiLHR5cGU6YSxhZmZlY3RzU291cmNlRmlsZTohMCxhZmZlY3RzRW1pdDohMCxhZmZlY3RzTW9kdWxlUmVzb2x1dGlvbjohMCxwYXJhbVR5cGU6ZS5EaWFnbm9zdGljcy5LSU5ELHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkxhbmd1YWdlX2FuZF9FbnZpcm9ubWVudCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNwZWNpZnlfd2hhdF9KU1hfY29kZV9pc19nZW5lcmF0ZWQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246dm9pZCAwfSx7bmFtZTpcImRlY2xhcmF0aW9uXCIsc2hvcnROYW1lOlwiZFwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCx0cmFuc3BpbGVPcHRpb25WYWx1ZTp2b2lkIDAsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5HZW5lcmF0ZV9kX3RzX2ZpbGVzX2Zyb21fVHlwZVNjcmlwdF9hbmRfSmF2YVNjcmlwdF9maWxlc19pbl95b3VyX3Byb2plY3QsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5mYWxzZV91bmxlc3NfY29tcG9zaXRlX2lzX3NldH0se25hbWU6XCJkZWNsYXJhdGlvbk1hcFwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCx0cmFuc3BpbGVPcHRpb25WYWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITEsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5DcmVhdGVfc291cmNlbWFwc19mb3JfZF90c19maWxlc30se25hbWU6XCJlbWl0RGVjbGFyYXRpb25Pbmx5XCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzRW1pdDohMCxzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuT25seV9vdXRwdXRfZF90c19maWxlc19hbmRfbm90X0phdmFTY3JpcHRfZmlsZXMsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcInNvdXJjZU1hcFwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMSxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkNyZWF0ZV9zb3VyY2VfbWFwX2ZpbGVzX2Zvcl9lbWl0dGVkX0phdmFTY3JpcHRfZmlsZXN9LHtuYW1lOlwib3V0RmlsZVwiLHR5cGU6XCJzdHJpbmdcIixhZmZlY3RzRW1pdDohMCxpc0ZpbGVQYXRoOiEwLHBhcmFtVHlwZTplLkRpYWdub3N0aWNzLkZJTEUsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNwZWNpZnlfYV9maWxlX3RoYXRfYnVuZGxlc19hbGxfb3V0cHV0c19pbnRvX29uZV9KYXZhU2NyaXB0X2ZpbGVfSWZfZGVjbGFyYXRpb25faXNfdHJ1ZV9hbHNvX2Rlc2lnbmF0ZXNfYV9maWxlX3RoYXRfYnVuZGxlc19hbGxfZF90c19vdXRwdXQsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwfSx7bmFtZTpcIm91dERpclwiLHR5cGU6XCJzdHJpbmdcIixhZmZlY3RzRW1pdDohMCxpc0ZpbGVQYXRoOiEwLHBhcmFtVHlwZTplLkRpYWdub3N0aWNzLkRJUkVDVE9SWSxzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV9hbl9vdXRwdXRfZm9sZGVyX2Zvcl9hbGxfZW1pdHRlZF9maWxlc30se25hbWU6XCJyb290RGlyXCIsdHlwZTpcInN0cmluZ1wiLGFmZmVjdHNFbWl0OiEwLGlzRmlsZVBhdGg6ITAscGFyYW1UeXBlOmUuRGlhZ25vc3RpY3MuTE9DQVRJT04sY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Nb2R1bGVzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV90aGVfcm9vdF9mb2xkZXJfd2l0aGluX3lvdXJfc291cmNlX2ZpbGVzLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuQ29tcHV0ZWRfZnJvbV90aGVfbGlzdF9vZl9pbnB1dF9maWxlc30se25hbWU6XCJjb21wb3NpdGVcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNFbWl0OiEwLGlzVFNDb25maWdPbmx5OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuUHJvamVjdHMsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5hYmxlX2NvbnN0cmFpbnRzX3RoYXRfYWxsb3dfYV9UeXBlU2NyaXB0X3Byb2plY3RfdG9fYmVfdXNlZF93aXRoX3Byb2plY3RfcmVmZXJlbmNlc30se25hbWU6XCJ0c0J1aWxkSW5mb0ZpbGVcIix0eXBlOlwic3RyaW5nXCIsYWZmZWN0c0VtaXQ6ITAsaXNGaWxlUGF0aDohMCxwYXJhbVR5cGU6ZS5EaWFnbm9zdGljcy5GSUxFLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuUHJvamVjdHMsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOlwiLnRzYnVpbGRpbmZvXCIsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TcGVjaWZ5X3RoZV9wYXRoX3RvX3RzYnVpbGRpbmZvX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uX2ZpbGV9LHtuYW1lOlwicmVtb3ZlQ29tbWVudHNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNFbWl0OiEwLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkVtaXQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITEsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5EaXNhYmxlX2VtaXR0aW5nX2NvbW1lbnRzfSx7bmFtZTpcIm5vRW1pdFwiLHR5cGU6XCJib29sZWFuXCIsc2hvd0luU2ltcGxpZmllZEhlbHBWaWV3OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfZW1pdHRpbmdfZmlsZXNfZnJvbV9hX2NvbXBpbGF0aW9uLHRyYW5zcGlsZU9wdGlvblZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJpbXBvcnRIZWxwZXJzXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzRW1pdDohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkVtaXQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5BbGxvd19pbXBvcnRpbmdfaGVscGVyX2Z1bmN0aW9uc19mcm9tX3RzbGliX29uY2VfcGVyX3Byb2plY3RfaW5zdGVhZF9vZl9pbmNsdWRpbmdfdGhlbV9wZXJfZmlsZSxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJpbXBvcnRzTm90VXNlZEFzVmFsdWVzXCIsdHlwZTpuZXcgZS5NYXAoZS5nZXRFbnRyaWVzKHtyZW1vdmU6MCxwcmVzZXJ2ZToxLGVycm9yOjJ9KSksYWZmZWN0c0VtaXQ6ITAsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV9lbWl0X1NsYXNoY2hlY2tpbmdfYmVoYXZpb3JfZm9yX2ltcG9ydHNfdGhhdF9hcmVfb25seV91c2VkX2Zvcl90eXBlcyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjowfSx7bmFtZTpcImRvd25sZXZlbEl0ZXJhdGlvblwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW1pdF9tb3JlX2NvbXBsaWFudF9idXRfdmVyYm9zZV9hbmRfbGVzc19wZXJmb3JtYW50X0phdmFTY3JpcHRfZm9yX2l0ZXJhdGlvbixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJpc29sYXRlZE1vZHVsZXNcIix0eXBlOlwiYm9vbGVhblwiLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuSW50ZXJvcF9Db25zdHJhaW50cyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkVuc3VyZV90aGF0X2VhY2hfZmlsZV9jYW5fYmVfc2FmZWx5X3RyYW5zcGlsZWRfd2l0aG91dF9yZWx5aW5nX29uX290aGVyX2ltcG9ydHMsdHJhbnNwaWxlT3B0aW9uVmFsdWU6ITAsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwic3RyaWN0XCIsdHlwZTpcImJvb2xlYW5cIixzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5hYmxlX2FsbF9zdHJpY3RfdHlwZV9jaGVja2luZ19vcHRpb25zLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcIm5vSW1wbGljaXRBbnlcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLHN0cmljdEZsYWc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5hYmxlX2Vycm9yX3JlcG9ydGluZ19mb3JfZXhwcmVzc2lvbnNfYW5kX2RlY2xhcmF0aW9uc193aXRoX2FuX2ltcGxpZWRfYW55X3R5cGUsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5mYWxzZV91bmxlc3Nfc3RyaWN0X2lzX3NldH0se25hbWU6XCJzdHJpY3ROdWxsQ2hlY2tzXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzU2VtYW50aWNEaWFnbm9zdGljczohMCxzdHJpY3RGbGFnOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuVHlwZV9DaGVja2luZyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLldoZW5fdHlwZV9jaGVja2luZ190YWtlX2ludG9fYWNjb3VudF9udWxsX2FuZF91bmRlZmluZWQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5mYWxzZV91bmxlc3Nfc3RyaWN0X2lzX3NldH0se25hbWU6XCJzdHJpY3RGdW5jdGlvblR5cGVzXCIsdHlwZTpcImJvb2xlYW5cIixzdHJpY3RGbGFnOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuVHlwZV9DaGVja2luZyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLldoZW5fYXNzaWduaW5nX2Z1bmN0aW9uc19jaGVja190b19lbnN1cmVfcGFyYW1ldGVyc19hbmRfdGhlX3JldHVybl92YWx1ZXNfYXJlX3N1YnR5cGVfY29tcGF0aWJsZSxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLmZhbHNlX3VubGVzc19zdHJpY3RfaXNfc2V0fSx7bmFtZTpcInN0cmljdEJpbmRDYWxsQXBwbHlcIix0eXBlOlwiYm9vbGVhblwiLHN0cmljdEZsYWc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuQ2hlY2tfdGhhdF90aGVfYXJndW1lbnRzX2Zvcl9iaW5kX2NhbGxfYW5kX2FwcGx5X21ldGhvZHNfbWF0Y2hfdGhlX29yaWdpbmFsX2Z1bmN0aW9uLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuZmFsc2VfdW5sZXNzX3N0cmljdF9pc19zZXR9LHtuYW1lOlwic3RyaWN0UHJvcGVydHlJbml0aWFsaXphdGlvblwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsc3RyaWN0RmxhZzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLlR5cGVfQ2hlY2tpbmcsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5DaGVja19mb3JfY2xhc3NfcHJvcGVydGllc190aGF0X2FyZV9kZWNsYXJlZF9idXRfbm90X3NldF9pbl90aGVfY29uc3RydWN0b3IsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5mYWxzZV91bmxlc3Nfc3RyaWN0X2lzX3NldH0se25hbWU6XCJub0ltcGxpY2l0VGhpc1wiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsc3RyaWN0RmxhZzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLlR5cGVfQ2hlY2tpbmcsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5FbmFibGVfZXJyb3JfcmVwb3J0aW5nX3doZW5fdGhpc19pc19naXZlbl90aGVfdHlwZV9hbnksZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5mYWxzZV91bmxlc3Nfc3RyaWN0X2lzX3NldH0se25hbWU6XCJ1c2VVbmtub3duSW5DYXRjaFZhcmlhYmxlc1wiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsc3RyaWN0RmxhZzohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLlR5cGVfQ2hlY2tpbmcsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5EZWZhdWx0X2NhdGNoX2NsYXVzZV92YXJpYWJsZXNfYXNfdW5rbm93bl9pbnN0ZWFkX29mX2FueSxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJhbHdheXNTdHJpY3RcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTb3VyY2VGaWxlOiEwLHN0cmljdEZsYWc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5zdXJlX3VzZV9zdHJpY3RfaXNfYWx3YXlzX2VtaXR0ZWQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5mYWxzZV91bmxlc3Nfc3RyaWN0X2lzX3NldH0se25hbWU6XCJub1VudXNlZExvY2Fsc1wiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5hYmxlX2Vycm9yX3JlcG9ydGluZ193aGVuX2xvY2FsX3ZhcmlhYmxlc19hcmVuX3RfcmVhZCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJub1VudXNlZFBhcmFtZXRlcnNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuVHlwZV9DaGVja2luZyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlJhaXNlX2FuX2Vycm9yX3doZW5fYV9mdW5jdGlvbl9wYXJhbWV0ZXJfaXNuX3RfcmVhZCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc1wiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuSW50ZXJwcmV0X29wdGlvbmFsX3Byb3BlcnR5X3R5cGVzX2FzX3dyaXR0ZW5fcmF0aGVyX3RoYW5fYWRkaW5nX3VuZGVmaW5lZCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJub0ltcGxpY2l0UmV0dXJuc1wiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5hYmxlX2Vycm9yX3JlcG9ydGluZ19mb3JfY29kZXBhdGhzX3RoYXRfZG9fbm90X2V4cGxpY2l0bHlfcmV0dXJuX2luX2FfZnVuY3Rpb24sZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2hcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNCaW5kRGlhZ25vc3RpY3M6ITAsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5hYmxlX2Vycm9yX3JlcG9ydGluZ19mb3JfZmFsbHRocm91Z2hfY2FzZXNfaW5fc3dpdGNoX3N0YXRlbWVudHMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibm9VbmNoZWNrZWRJbmRleGVkQWNjZXNzXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzU2VtYW50aWNEaWFnbm9zdGljczohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLlR5cGVfQ2hlY2tpbmcsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5BZGRfdW5kZWZpbmVkX3RvX2FfdHlwZV93aGVuX2FjY2Vzc2VkX3VzaW5nX2FuX2luZGV4LGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcIm5vSW1wbGljaXRPdmVycmlkZVwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW5zdXJlX292ZXJyaWRpbmdfbWVtYmVyc19pbl9kZXJpdmVkX2NsYXNzZXNfYXJlX21hcmtlZF93aXRoX2FuX292ZXJyaWRlX21vZGlmaWVyLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcIm5vUHJvcGVydHlBY2Nlc3NGcm9tSW5kZXhTaWduYXR1cmVcIix0eXBlOlwiYm9vbGVhblwiLHNob3dJblNpbXBsaWZpZWRIZWxwVmlldzohMSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLlR5cGVfQ2hlY2tpbmcsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5FbmZvcmNlc191c2luZ19pbmRleGVkX2FjY2Vzc29yc19mb3Jfa2V5c19kZWNsYXJlZF91c2luZ19hbl9pbmRleGVkX3R5cGUsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibW9kdWxlUmVzb2x1dGlvblwiLHR5cGU6bmV3IGUuTWFwKGUuZ2V0RW50cmllcyh7bm9kZTplLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKcyxjbGFzc2ljOmUuTW9kdWxlUmVzb2x1dGlvbktpbmQuQ2xhc3NpYyxub2RlMTY6ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTYsbm9kZW5leHQ6ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dH0pKSxhZmZlY3RzTW9kdWxlUmVzb2x1dGlvbjohMCxwYXJhbVR5cGU6ZS5EaWFnbm9zdGljcy5TVFJBVEVHWSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLk1vZHVsZXMsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TcGVjaWZ5X2hvd19UeXBlU2NyaXB0X2xvb2tzX3VwX2FfZmlsZV9mcm9tX2FfZ2l2ZW5fbW9kdWxlX3NwZWNpZmllcixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLm1vZHVsZV9BTURfb3JfVU1EX29yX1N5c3RlbV9vcl9FUzZfdGhlbl9DbGFzc2ljX090aGVyd2lzZV9Ob2RlfSx7bmFtZTpcImJhc2VVcmxcIix0eXBlOlwic3RyaW5nXCIsYWZmZWN0c01vZHVsZVJlc29sdXRpb246ITAsaXNGaWxlUGF0aDohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLk1vZHVsZXMsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TcGVjaWZ5X3RoZV9iYXNlX2RpcmVjdG9yeV90b19yZXNvbHZlX25vbl9yZWxhdGl2ZV9tb2R1bGVfbmFtZXN9LHtuYW1lOlwicGF0aHNcIix0eXBlOlwib2JqZWN0XCIsYWZmZWN0c01vZHVsZVJlc29sdXRpb246ITAsaXNUU0NvbmZpZ09ubHk6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Nb2R1bGVzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV9hX3NldF9vZl9lbnRyaWVzX3RoYXRfcmVfbWFwX2ltcG9ydHNfdG9fYWRkaXRpb25hbF9sb29rdXBfbG9jYXRpb25zLHRyYW5zcGlsZU9wdGlvblZhbHVlOnZvaWQgMH0se25hbWU6XCJyb290RGlyc1wiLHR5cGU6XCJsaXN0XCIsaXNUU0NvbmZpZ09ubHk6ITAsZWxlbWVudDp7bmFtZTpcInJvb3REaXJzXCIsdHlwZTpcInN0cmluZ1wiLGlzRmlsZVBhdGg6ITB9LGFmZmVjdHNNb2R1bGVSZXNvbHV0aW9uOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTW9kdWxlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkFsbG93X211bHRpcGxlX2ZvbGRlcnNfdG9fYmVfdHJlYXRlZF9hc19vbmVfd2hlbl9yZXNvbHZpbmdfbW9kdWxlcyx0cmFuc3BpbGVPcHRpb25WYWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5Db21wdXRlZF9mcm9tX3RoZV9saXN0X29mX2lucHV0X2ZpbGVzfSx7bmFtZTpcInR5cGVSb290c1wiLHR5cGU6XCJsaXN0XCIsZWxlbWVudDp7bmFtZTpcInR5cGVSb290c1wiLHR5cGU6XCJzdHJpbmdcIixpc0ZpbGVQYXRoOiEwfSxhZmZlY3RzTW9kdWxlUmVzb2x1dGlvbjohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLk1vZHVsZXMsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TcGVjaWZ5X211bHRpcGxlX2ZvbGRlcnNfdGhhdF9hY3RfbGlrZV9TbGFzaG5vZGVfbW9kdWxlc19TbGFzaF90eXBlc30se25hbWU6XCJ0eXBlc1wiLHR5cGU6XCJsaXN0XCIsZWxlbWVudDp7bmFtZTpcInR5cGVzXCIsdHlwZTpcInN0cmluZ1wifSxhZmZlY3RzUHJvZ3JhbVN0cnVjdHVyZTohMCxzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Nb2R1bGVzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV90eXBlX3BhY2thZ2VfbmFtZXNfdG9fYmVfaW5jbHVkZWRfd2l0aG91dF9iZWluZ19yZWZlcmVuY2VkX2luX2Ffc291cmNlX2ZpbGUsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwfSx7bmFtZTpcImFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuSW50ZXJvcF9Db25zdHJhaW50cyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkFsbG93X2ltcG9ydF94X2Zyb21feV93aGVuX2FfbW9kdWxlX2RvZXNuX3RfaGF2ZV9hX2RlZmF1bHRfZXhwb3J0LGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MubW9kdWxlX3N5c3RlbV9vcl9lc01vZHVsZUludGVyb3B9LHtuYW1lOlwiZXNNb2R1bGVJbnRlcm9wXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzU2VtYW50aWNEaWFnbm9zdGljczohMCxhZmZlY3RzRW1pdDohMCxzaG93SW5TaW1wbGlmaWVkSGVscFZpZXc6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5JbnRlcm9wX0NvbnN0cmFpbnRzLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW1pdF9hZGRpdGlvbmFsX0phdmFTY3JpcHRfdG9fZWFzZV9zdXBwb3J0X2Zvcl9pbXBvcnRpbmdfQ29tbW9uSlNfbW9kdWxlc19UaGlzX2VuYWJsZXNfYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0c19mb3JfdHlwZV9jb21wYXRpYmlsaXR5LGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcInByZXNlcnZlU3ltbGlua3NcIix0eXBlOlwiYm9vbGVhblwiLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuSW50ZXJvcF9Db25zdHJhaW50cyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfcmVzb2x2aW5nX3N5bWxpbmtzX3RvX3RoZWlyX3JlYWxwYXRoX1RoaXNfY29ycmVsYXRlc190b190aGVfc2FtZV9mbGFnX2luX25vZGUsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiYWxsb3dVbWRHbG9iYWxBY2Nlc3NcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTW9kdWxlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkFsbG93X2FjY2Vzc2luZ19VTURfZ2xvYmFsc19mcm9tX21vZHVsZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibW9kdWxlU3VmZml4ZXNcIix0eXBlOlwibGlzdFwiLGVsZW1lbnQ6e25hbWU6XCJzdWZmaXhcIix0eXBlOlwic3RyaW5nXCJ9LGxpc3RQcmVzZXJ2ZUZhbHN5VmFsdWVzOiEwLGFmZmVjdHNNb2R1bGVSZXNvbHV0aW9uOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTW9kdWxlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkxpc3Rfb2ZfZmlsZV9uYW1lX3N1ZmZpeGVzX3RvX3NlYXJjaF93aGVuX3Jlc29sdmluZ19hX21vZHVsZX0se25hbWU6XCJzb3VyY2VSb290XCIsdHlwZTpcInN0cmluZ1wiLGFmZmVjdHNFbWl0OiEwLHBhcmFtVHlwZTplLkRpYWdub3N0aWNzLkxPQ0FUSU9OLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNwZWNpZnlfdGhlX3Jvb3RfcGF0aF9mb3JfZGVidWdnZXJzX3RvX2ZpbmRfdGhlX3JlZmVyZW5jZV9zb3VyY2VfY29kZX0se25hbWU6XCJtYXBSb290XCIsdHlwZTpcInN0cmluZ1wiLGFmZmVjdHNFbWl0OiEwLHBhcmFtVHlwZTplLkRpYWdub3N0aWNzLkxPQ0FUSU9OLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNwZWNpZnlfdGhlX2xvY2F0aW9uX3doZXJlX2RlYnVnZ2VyX3Nob3VsZF9sb2NhdGVfbWFwX2ZpbGVzX2luc3RlYWRfb2ZfZ2VuZXJhdGVkX2xvY2F0aW9uc30se25hbWU6XCJpbmxpbmVTb3VyY2VNYXBcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNFbWl0OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkluY2x1ZGVfc291cmNlbWFwX2ZpbGVzX2luc2lkZV90aGVfZW1pdHRlZF9KYXZhU2NyaXB0LGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImlubGluZVNvdXJjZXNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNFbWl0OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkluY2x1ZGVfc291cmNlX2NvZGVfaW5fdGhlX3NvdXJjZW1hcHNfaW5zaWRlX3RoZV9lbWl0dGVkX0phdmFTY3JpcHQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiZXhwZXJpbWVudGFsRGVjb3JhdG9yc1wiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5MYW5ndWFnZV9hbmRfRW52aXJvbm1lbnQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5FbmFibGVfZXhwZXJpbWVudGFsX3N1cHBvcnRfZm9yX1RDMzlfc3RhZ2VfMl9kcmFmdF9kZWNvcmF0b3JzLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImVtaXREZWNvcmF0b3JNZXRhZGF0YVwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsYWZmZWN0c0VtaXQ6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5MYW5ndWFnZV9hbmRfRW52aXJvbm1lbnQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5FbWl0X2Rlc2lnbl90eXBlX21ldGFkYXRhX2Zvcl9kZWNvcmF0ZWRfZGVjbGFyYXRpb25zX2luX3NvdXJjZV9maWxlcyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJqc3hGYWN0b3J5XCIsdHlwZTpcInN0cmluZ1wiLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTGFuZ3VhZ2VfYW5kX0Vudmlyb25tZW50LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV90aGVfSlNYX2ZhY3RvcnlfZnVuY3Rpb25fdXNlZF93aGVuX3RhcmdldGluZ19SZWFjdF9KU1hfZW1pdF9lX2dfUmVhY3RfY3JlYXRlRWxlbWVudF9vcl9oLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOlwiYFJlYWN0LmNyZWF0ZUVsZW1lbnRgXCJ9LHtuYW1lOlwianN4RnJhZ21lbnRGYWN0b3J5XCIsdHlwZTpcInN0cmluZ1wiLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTGFuZ3VhZ2VfYW5kX0Vudmlyb25tZW50LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV90aGVfSlNYX0ZyYWdtZW50X3JlZmVyZW5jZV91c2VkX2Zvcl9mcmFnbWVudHNfd2hlbl90YXJnZXRpbmdfUmVhY3RfSlNYX2VtaXRfZV9nX1JlYWN0X0ZyYWdtZW50X29yX0ZyYWdtZW50LGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOlwiUmVhY3QuRnJhZ21lbnRcIn0se25hbWU6XCJqc3hJbXBvcnRTb3VyY2VcIix0eXBlOlwic3RyaW5nXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsYWZmZWN0c0VtaXQ6ITAsYWZmZWN0c01vZHVsZVJlc29sdXRpb246ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5MYW5ndWFnZV9hbmRfRW52aXJvbm1lbnQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TcGVjaWZ5X21vZHVsZV9zcGVjaWZpZXJfdXNlZF90b19pbXBvcnRfdGhlX0pTWF9mYWN0b3J5X2Z1bmN0aW9uc193aGVuX3VzaW5nX2pzeF9Db2xvbl9yZWFjdF9qc3hfQXN0ZXJpc2ssZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246XCJyZWFjdFwifSx7bmFtZTpcInJlc29sdmVKc29uTW9kdWxlXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzTW9kdWxlUmVzb2x1dGlvbjohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLk1vZHVsZXMsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5FbmFibGVfaW1wb3J0aW5nX2pzb25fZmlsZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwib3V0XCIsdHlwZTpcInN0cmluZ1wiLGFmZmVjdHNFbWl0OiEwLGlzRmlsZVBhdGg6ITEsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5CYWNrd2FyZHNfQ29tcGF0aWJpbGl0eSxwYXJhbVR5cGU6ZS5EaWFnbm9zdGljcy5GSUxFLHRyYW5zcGlsZU9wdGlvblZhbHVlOnZvaWQgMCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRlcHJlY2F0ZWRfc2V0dGluZ19Vc2Vfb3V0RmlsZV9pbnN0ZWFkfSx7bmFtZTpcInJlYWN0TmFtZXNwYWNlXCIsdHlwZTpcInN0cmluZ1wiLGFmZmVjdHNFbWl0OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTGFuZ3VhZ2VfYW5kX0Vudmlyb25tZW50LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV90aGVfb2JqZWN0X2ludm9rZWRfZm9yX2NyZWF0ZUVsZW1lbnRfVGhpc19vbmx5X2FwcGxpZXNfd2hlbl90YXJnZXRpbmdfcmVhY3RfSlNYX2VtaXQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246XCJgUmVhY3RgXCJ9LHtuYW1lOlwic2tpcERlZmF1bHRMaWJDaGVja1wiLHR5cGU6XCJib29sZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21wbGV0ZW5lc3MsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5Ta2lwX3R5cGVfY2hlY2tpbmdfZF90c19maWxlc190aGF0X2FyZV9pbmNsdWRlZF93aXRoX1R5cGVTY3JpcHQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiY2hhcnNldFwiLHR5cGU6XCJzdHJpbmdcIixjYXRlZ29yeTplLkRpYWdub3N0aWNzLkJhY2t3YXJkc19Db21wYXRpYmlsaXR5LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuTm9fbG9uZ2VyX3N1cHBvcnRlZF9Jbl9lYXJseV92ZXJzaW9uc19tYW51YWxseV9zZXRfdGhlX3RleHRfZW5jb2RpbmdfZm9yX3JlYWRpbmdfZmlsZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246XCJ1dGY4XCJ9LHtuYW1lOlwiZW1pdEJPTVwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW1pdF9hX1VURl84X0J5dGVfT3JkZXJfTWFya19CT01faW5fdGhlX2JlZ2lubmluZ19vZl9vdXRwdXRfZmlsZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibmV3TGluZVwiLHR5cGU6bmV3IGUuTWFwKGUuZ2V0RW50cmllcyh7Y3JsZjowLGxmOjF9KSksYWZmZWN0c0VtaXQ6ITAscGFyYW1UeXBlOmUuRGlhZ25vc3RpY3MuTkVXTElORSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkVtaXQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TZXRfdGhlX25ld2xpbmVfY2hhcmFjdGVyX2Zvcl9lbWl0dGluZ19maWxlcyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlBsYXRmb3JtX3NwZWNpZmljfSx7bmFtZTpcIm5vRXJyb3JUcnVuY2F0aW9uXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzU2VtYW50aWNEaWFnbm9zdGljczohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLk91dHB1dF9Gb3JtYXR0aW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRGlzYWJsZV90cnVuY2F0aW5nX3R5cGVzX2luX2Vycm9yX21lc3NhZ2VzLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcIm5vTGliXCIsdHlwZTpcImJvb2xlYW5cIixjYXRlZ29yeTplLkRpYWdub3N0aWNzLkxhbmd1YWdlX2FuZF9FbnZpcm9ubWVudCxhZmZlY3RzUHJvZ3JhbVN0cnVjdHVyZTohMCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfaW5jbHVkaW5nX2FueV9saWJyYXJ5X2ZpbGVzX2luY2x1ZGluZ190aGVfZGVmYXVsdF9saWJfZF90cyx0cmFuc3BpbGVPcHRpb25WYWx1ZTohMCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJub1Jlc29sdmVcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNNb2R1bGVSZXNvbHV0aW9uOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTW9kdWxlcyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FsbG93X2ltcG9ydF9zX3JlcXVpcmVfc19vcl9yZWZlcmVuY2Vfc19mcm9tX2V4cGFuZGluZ190aGVfbnVtYmVyX29mX2ZpbGVzX1R5cGVTY3JpcHRfc2hvdWxkX2FkZF90b19hX3Byb2plY3QsdHJhbnNwaWxlT3B0aW9uVmFsdWU6ITAsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwic3RyaXBJbnRlcm5hbFwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRGlzYWJsZV9lbWl0dGluZ19kZWNsYXJhdGlvbnNfdGhhdF9oYXZlX2ludGVybmFsX2luX3RoZWlyX0pTRG9jX2NvbW1lbnRzLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImRpc2FibGVTaXplTGltaXRcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNQcm9ncmFtU3RydWN0dXJlOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRWRpdG9yX1N1cHBvcnQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5SZW1vdmVfdGhlXzIwbWJfY2FwX29uX3RvdGFsX3NvdXJjZV9jb2RlX3NpemVfZm9yX0phdmFTY3JpcHRfZmlsZXNfaW5fdGhlX1R5cGVTY3JpcHRfbGFuZ3VhZ2Vfc2VydmVyLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImRpc2FibGVTb3VyY2VPZlByb2plY3RSZWZlcmVuY2VSZWRpcmVjdFwiLHR5cGU6XCJib29sZWFuXCIsaXNUU0NvbmZpZ09ubHk6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Qcm9qZWN0cyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfcHJlZmVycmluZ19zb3VyY2VfZmlsZXNfaW5zdGVhZF9vZl9kZWNsYXJhdGlvbl9maWxlc193aGVuX3JlZmVyZW5jaW5nX2NvbXBvc2l0ZV9wcm9qZWN0cyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJkaXNhYmxlU29sdXRpb25TZWFyY2hpbmdcIix0eXBlOlwiYm9vbGVhblwiLGlzVFNDb25maWdPbmx5OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuUHJvamVjdHMsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5PcHRfYV9wcm9qZWN0X291dF9vZl9tdWx0aV9wcm9qZWN0X3JlZmVyZW5jZV9jaGVja2luZ193aGVuX2VkaXRpbmcsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiZGlzYWJsZVJlZmVyZW5jZWRQcm9qZWN0TG9hZFwiLHR5cGU6XCJib29sZWFuXCIsaXNUU0NvbmZpZ09ubHk6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Qcm9qZWN0cyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlJlZHVjZV90aGVfbnVtYmVyX29mX3Byb2plY3RzX2xvYWRlZF9hdXRvbWF0aWNhbGx5X2J5X1R5cGVTY3JpcHQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibm9JbXBsaWNpdFVzZVN0cmljdFwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5CYWNrd2FyZHNfQ29tcGF0aWJpbGl0eSxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfYWRkaW5nX3VzZV9zdHJpY3RfZGlyZWN0aXZlc19pbl9lbWl0dGVkX0phdmFTY3JpcHRfZmlsZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibm9FbWl0SGVscGVyc1wiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRGlzYWJsZV9nZW5lcmF0aW5nX2N1c3RvbV9oZWxwZXJfZnVuY3Rpb25zX2xpa2VfZXh0ZW5kc19pbl9jb21waWxlZF9vdXRwdXQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibm9FbWl0T25FcnJvclwiLHR5cGU6XCJib29sZWFuXCIsYWZmZWN0c0VtaXQ6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5FbWl0LHRyYW5zcGlsZU9wdGlvblZhbHVlOnZvaWQgMCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfZW1pdHRpbmdfZmlsZXNfaWZfYW55X3R5cGVfY2hlY2tpbmdfZXJyb3JzX2FyZV9yZXBvcnRlZCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJwcmVzZXJ2ZUNvbnN0RW51bXNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNFbWl0OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfZXJhc2luZ19jb25zdF9lbnVtX2RlY2xhcmF0aW9uc19pbl9nZW5lcmF0ZWRfY29kZSxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJkZWNsYXJhdGlvbkRpclwiLHR5cGU6XCJzdHJpbmdcIixhZmZlY3RzRW1pdDohMCxpc0ZpbGVQYXRoOiEwLHBhcmFtVHlwZTplLkRpYWdub3N0aWNzLkRJUkVDVE9SWSxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkVtaXQsdHJhbnNwaWxlT3B0aW9uVmFsdWU6dm9pZCAwLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuU3BlY2lmeV90aGVfb3V0cHV0X2RpcmVjdG9yeV9mb3JfZ2VuZXJhdGVkX2RlY2xhcmF0aW9uX2ZpbGVzfSx7bmFtZTpcInNraXBMaWJDaGVja1wiLHR5cGU6XCJib29sZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21wbGV0ZW5lc3MsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5Ta2lwX3R5cGVfY2hlY2tpbmdfYWxsX2RfdHNfZmlsZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiYWxsb3dVbnVzZWRMYWJlbHNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNCaW5kRGlhZ25vc3RpY3M6ITAsYWZmZWN0c1NlbWFudGljRGlhZ25vc3RpY3M6ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5UeXBlX0NoZWNraW5nLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRGlzYWJsZV9lcnJvcl9yZXBvcnRpbmdfZm9yX3VudXNlZF9sYWJlbHMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246dm9pZCAwfSx7bmFtZTpcImFsbG93VW5yZWFjaGFibGVDb2RlXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzQmluZERpYWdub3N0aWNzOiEwLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuVHlwZV9DaGVja2luZyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRpc2FibGVfZXJyb3JfcmVwb3J0aW5nX2Zvcl91bnJlYWNoYWJsZV9jb2RlLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOnZvaWQgMH0se25hbWU6XCJzdXBwcmVzc0V4Y2Vzc1Byb3BlcnR5RXJyb3JzXCIsdHlwZTpcImJvb2xlYW5cIixhZmZlY3RzU2VtYW50aWNEaWFnbm9zdGljczohMCxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkJhY2t3YXJkc19Db21wYXRpYmlsaXR5LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRGlzYWJsZV9yZXBvcnRpbmdfb2ZfZXhjZXNzX3Byb3BlcnR5X2Vycm9yc19kdXJpbmdfdGhlX2NyZWF0aW9uX29mX29iamVjdF9saXRlcmFscyxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJzdXBwcmVzc0ltcGxpY2l0QW55SW5kZXhFcnJvcnNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuQmFja3dhcmRzX0NvbXBhdGliaWxpdHksZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TdXBwcmVzc19ub0ltcGxpY2l0QW55X2Vycm9yc193aGVuX2luZGV4aW5nX29iamVjdHNfdGhhdF9sYWNrX2luZGV4X3NpZ25hdHVyZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNNb2R1bGVSZXNvbHV0aW9uOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuSW50ZXJvcF9Db25zdHJhaW50cyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkVuc3VyZV90aGF0X2Nhc2luZ19pc19jb3JyZWN0X2luX2ltcG9ydHMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwibWF4Tm9kZU1vZHVsZUpzRGVwdGhcIix0eXBlOlwibnVtYmVyXCIsYWZmZWN0c01vZHVsZVJlc29sdXRpb246ITAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5KYXZhU2NyaXB0X1N1cHBvcnQsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5TcGVjaWZ5X3RoZV9tYXhpbXVtX2ZvbGRlcl9kZXB0aF91c2VkX2Zvcl9jaGVja2luZ19KYXZhU2NyaXB0X2ZpbGVzX2Zyb21fbm9kZV9tb2R1bGVzX09ubHlfYXBwbGljYWJsZV93aXRoX2FsbG93SnMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246MH0se25hbWU6XCJub1N0cmljdEdlbmVyaWNDaGVja3NcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuQmFja3dhcmRzX0NvbXBhdGliaWxpdHksZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5EaXNhYmxlX3N0cmljdF9jaGVja2luZ19vZl9nZW5lcmljX3NpZ25hdHVyZXNfaW5fZnVuY3Rpb25fdHlwZXMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwidXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzOiEwLGFmZmVjdHNFbWl0OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuTGFuZ3VhZ2VfYW5kX0Vudmlyb25tZW50LGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuRW1pdF9FQ01BU2NyaXB0X3N0YW5kYXJkX2NvbXBsaWFudF9jbGFzc19maWVsZHMsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy50cnVlX2Zvcl9FUzIwMjJfYW5kX2Fib3ZlX2luY2x1ZGluZ19FU05leHR9LHtuYW1lOlwicHJlc2VydmVWYWx1ZUltcG9ydHNcIix0eXBlOlwiYm9vbGVhblwiLGFmZmVjdHNFbWl0OiEwLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRW1pdCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlByZXNlcnZlX3VudXNlZF9pbXBvcnRlZF92YWx1ZXNfaW5fdGhlX0phdmFTY3JpcHRfb3V0cHV0X3RoYXRfd291bGRfb3RoZXJ3aXNlX2JlX3JlbW92ZWQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwia2V5b2ZTdHJpbmdzT25seVwiLHR5cGU6XCJib29sZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5CYWNrd2FyZHNfQ29tcGF0aWJpbGl0eSxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLk1ha2Vfa2V5b2Zfb25seV9yZXR1cm5fc3RyaW5nc19pbnN0ZWFkX29mX3N0cmluZ19udW1iZXJzX29yX3N5bWJvbHNfTGVnYWN5X29wdGlvbixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJwbHVnaW5zXCIsdHlwZTpcImxpc3RcIixpc1RTQ29uZmlnT25seTohMCxlbGVtZW50OntuYW1lOlwicGx1Z2luXCIsdHlwZTpcIm9iamVjdFwifSxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNwZWNpZnlfYV9saXN0X29mX2xhbmd1YWdlX3NlcnZpY2VfcGx1Z2luc190b19pbmNsdWRlLGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRWRpdG9yX1N1cHBvcnR9LHtuYW1lOlwibW9kdWxlRGV0ZWN0aW9uXCIsdHlwZTpuZXcgZS5NYXAoZS5nZXRFbnRyaWVzKHthdXRvOmUuTW9kdWxlRGV0ZWN0aW9uS2luZC5BdXRvLGxlZ2FjeTplLk1vZHVsZURldGVjdGlvbktpbmQuTGVnYWN5LGZvcmNlOmUuTW9kdWxlRGV0ZWN0aW9uS2luZC5Gb3JjZX0pKSxhZmZlY3RzTW9kdWxlUmVzb2x1dGlvbjohMCxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkNvbnRyb2xfd2hhdF9tZXRob2RfaXNfdXNlZF90b19kZXRlY3RfbW9kdWxlX2Zvcm1hdF9KU19maWxlcyxjYXRlZ29yeTplLkRpYWdub3N0aWNzLkxhbmd1YWdlX2FuZF9FbnZpcm9ubWVudCxkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLmF1dG9fQ29sb25fVHJlYXRfZmlsZXNfd2l0aF9pbXBvcnRzX2V4cG9ydHNfaW1wb3J0X21ldGFfanN4X3dpdGhfanN4X0NvbG9uX3JlYWN0X2pzeF9vcl9lc21fZm9ybWF0X3dpdGhfbW9kdWxlX0NvbG9uX25vZGUxNl9hc19tb2R1bGVzfV07ZS5vcHRpb25EZWNsYXJhdGlvbnM9VmUoVmUoW10sZS5jb21tb25PcHRpb25zV2l0aEJ1aWxkLCEwKSx3LCEwKSxlLnNlbWFudGljRGlhZ25vc3RpY3NPcHRpb25EZWNsYXJhdGlvbnM9ZS5vcHRpb25EZWNsYXJhdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKFBlKXtyZXR1cm4hIVBlLmFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzfSksZS5hZmZlY3RzRW1pdE9wdGlvbkRlY2xhcmF0aW9ucz1lLm9wdGlvbkRlY2xhcmF0aW9ucy5maWx0ZXIoZnVuY3Rpb24oUGUpe3JldHVybiEhUGUuYWZmZWN0c0VtaXR9KSxlLm1vZHVsZVJlc29sdXRpb25PcHRpb25EZWNsYXJhdGlvbnM9ZS5vcHRpb25EZWNsYXJhdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKFBlKXtyZXR1cm4hIVBlLmFmZmVjdHNNb2R1bGVSZXNvbHV0aW9ufSksZS5zb3VyY2VGaWxlQWZmZWN0aW5nQ29tcGlsZXJPcHRpb25zPWUub3B0aW9uRGVjbGFyYXRpb25zLmZpbHRlcihmdW5jdGlvbihQZSl7cmV0dXJuISFQZS5hZmZlY3RzU291cmNlRmlsZXx8ISFQZS5hZmZlY3RzTW9kdWxlUmVzb2x1dGlvbnx8ISFQZS5hZmZlY3RzQmluZERpYWdub3N0aWNzfSksZS5vcHRpb25zQWZmZWN0aW5nUHJvZ3JhbVN0cnVjdHVyZT1lLm9wdGlvbkRlY2xhcmF0aW9ucy5maWx0ZXIoZnVuY3Rpb24oUGUpe3JldHVybiEhUGUuYWZmZWN0c1Byb2dyYW1TdHJ1Y3R1cmV9KSxlLnRyYW5zcGlsZU9wdGlvblZhbHVlQ29tcGlsZXJPcHRpb25zPWUub3B0aW9uRGVjbGFyYXRpb25zLmZpbHRlcihmdW5jdGlvbihQZSl7cmV0dXJuIGUuaGFzUHJvcGVydHkoUGUsXCJ0cmFuc3BpbGVPcHRpb25WYWx1ZVwiKX0pLGUub3B0aW9uc0ZvckJ1aWxkPVt7bmFtZTpcInZlcmJvc2VcIixzaG9ydE5hbWU6XCJ2XCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkVuYWJsZV92ZXJib3NlX2xvZ2dpbmcsdHlwZTpcImJvb2xlYW5cIixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX0se25hbWU6XCJkcnlcIixzaG9ydE5hbWU6XCJkXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlNob3dfd2hhdF93b3VsZF9iZV9idWlsdF9vcl9kZWxldGVkX2lmX3NwZWNpZmllZF93aXRoX2NsZWFuLHR5cGU6XCJib29sZWFuXCIsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiZm9yY2VcIixzaG9ydE5hbWU6XCJmXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkJ1aWxkX2FsbF9wcm9qZWN0c19pbmNsdWRpbmdfdGhvc2VfdGhhdF9hcHBlYXJfdG9fYmVfdXBfdG9fZGF0ZSx0eXBlOlwiYm9vbGVhblwiLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImNsZWFuXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkRlbGV0ZV90aGVfb3V0cHV0c19vZl9hbGxfcHJvamVjdHMsdHlwZTpcImJvb2xlYW5cIixkZWZhdWx0VmFsdWVEZXNjcmlwdGlvbjohMX1dLGUuYnVpbGRPcHRzPVZlKFZlKFtdLGUuY29tbW9uT3B0aW9uc1dpdGhCdWlsZCwhMCksZS5vcHRpb25zRm9yQnVpbGQsITApLGUudHlwZUFjcXVpc2l0aW9uRGVjbGFyYXRpb25zPVt7bmFtZTpcImVuYWJsZUF1dG9EaXNjb3ZlcnlcIix0eXBlOlwiYm9vbGVhblwiLGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOiExfSx7bmFtZTpcImVuYWJsZVwiLHR5cGU6XCJib29sZWFuXCIsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9LHtuYW1lOlwiaW5jbHVkZVwiLHR5cGU6XCJsaXN0XCIsZWxlbWVudDp7bmFtZTpcImluY2x1ZGVcIix0eXBlOlwic3RyaW5nXCJ9fSx7bmFtZTpcImV4Y2x1ZGVcIix0eXBlOlwibGlzdFwiLGVsZW1lbnQ6e25hbWU6XCJleGNsdWRlXCIsdHlwZTpcInN0cmluZ1wifX0se25hbWU6XCJkaXNhYmxlRmlsZW5hbWVCYXNlZFR5cGVBY3F1aXNpdGlvblwiLHR5cGU6XCJib29sZWFuXCIsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ITF9XTtmdW5jdGlvbiBCKFBlKXt2YXIgVWU9bmV3IGUuTWFwLGZyPW5ldyBlLk1hcDtyZXR1cm4gZS5mb3JFYWNoKFBlLGZ1bmN0aW9uKERlKXtVZS5zZXQoRGUubmFtZS50b0xvd2VyQ2FzZSgpLERlKSxEZS5zaG9ydE5hbWUmJmZyLnNldChEZS5zaG9ydE5hbWUsRGUubmFtZSl9KSx7b3B0aW9uc05hbWVNYXA6VWUsc2hvcnRPcHRpb25OYW1lczpmcn19ZS5jcmVhdGVPcHRpb25OYW1lTWFwPUI7dmFyIEU7ZnVuY3Rpb24gUSgpe3JldHVybiBFfHwoRT1CKGUub3B0aW9uRGVjbGFyYXRpb25zKSl9ZS5nZXRPcHRpb25zTmFtZU1hcD1RO3ZhciBsZT17ZGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLkNvbXBpbGVyX29wdGlvbl8wX21heV9vbmx5X2JlX3VzZWRfd2l0aF9idWlsZCxnZXRPcHRpb25zTmFtZU1hcDpxfTtlLmRlZmF1bHRJbml0Q29tcGlsZXJPcHRpb25zPXttb2R1bGU6ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTLHRhcmdldDozLHN0cmljdDohMCxlc01vZHVsZUludGVyb3A6ITAsZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXM6ITAsc2tpcExpYkNoZWNrOiEwfTtmdW5jdGlvbiBOKFBlKXtyZXR1cm4gUGUmJlBlLmVuYWJsZUF1dG9EaXNjb3ZlcnkhPT12b2lkIDAmJlBlLmVuYWJsZT09PXZvaWQgMD97ZW5hYmxlOlBlLmVuYWJsZUF1dG9EaXNjb3ZlcnksaW5jbHVkZTpQZS5pbmNsdWRlfHxbXSxleGNsdWRlOlBlLmV4Y2x1ZGV8fFtdfTpQZX1lLmNvbnZlcnRFbmFibGVBdXRvRGlzY292ZXJ5VG9FbmFibGU9TjtmdW5jdGlvbiBwKFBlKXtyZXR1cm4gbShQZSxlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyl9ZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWNGb3JJbnZhbGlkQ3VzdG9tVHlwZT1wO2Z1bmN0aW9uIG0oUGUsVWUpe3ZhciBmcj1lLmFycmF5RnJvbShQZS50eXBlLmtleXMoKSkubWFwKGZ1bmN0aW9uKERlKXtyZXR1cm5cIidcIi5jb25jYXQoRGUsXCInXCIpfSkuam9pbihcIiwgXCIpO3JldHVybiBVZShlLkRpYWdub3N0aWNzLkFyZ3VtZW50X2Zvcl8wX29wdGlvbl9tdXN0X2JlX0NvbG9uXzEsXCItLVwiLmNvbmNhdChQZS5uYW1lKSxmcil9ZnVuY3Rpb24gRyhQZSxVZSxmcil7cmV0dXJuIF9yKFBlLGUudHJpbVN0cmluZyhVZXx8XCJcIiksZnIpfWUucGFyc2VDdXN0b21UeXBlT3B0aW9uPUc7ZnVuY3Rpb24gb2UoUGUsVWUsZnIpe2lmKFVlPT09dm9pZCAwJiYoVWU9XCJcIiksVWU9ZS50cmltU3RyaW5nKFVlKSwhZS5zdGFydHNXaXRoKFVlLFwiLVwiKSl7aWYoVWU9PT1cIlwiKXJldHVybltdO3ZhciBEZT1VZS5zcGxpdChcIixcIik7c3dpdGNoKFBlLmVsZW1lbnQudHlwZSl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIGUubWFwRGVmaW5lZChEZSxmdW5jdGlvbihncil7cmV0dXJuIFp0KFBlLmVsZW1lbnQscGFyc2VJbnQoZ3IpLGZyKX0pO2Nhc2VcInN0cmluZ1wiOnJldHVybiBlLm1hcERlZmluZWQoRGUsZnVuY3Rpb24oZ3Ipe3JldHVybiBadChQZS5lbGVtZW50LGdyfHxcIlwiLGZyKX0pO2RlZmF1bHQ6cmV0dXJuIGUubWFwRGVmaW5lZChEZSxmdW5jdGlvbihncil7cmV0dXJuIEcoUGUuZWxlbWVudCxncixmcil9KX19fWUucGFyc2VMaXN0VHlwZU9wdGlvbj1vZTtmdW5jdGlvbiBmKFBlKXtyZXR1cm4gUGUubmFtZX1mdW5jdGlvbiBUKFBlLFVlLGZyLERlKXt2YXIgZ3I7aWYoISgoZ3I9VWUuYWx0ZXJuYXRlTW9kZSk9PT1udWxsfHxncj09PXZvaWQgMCkmJmdyLmdldE9wdGlvbnNOYW1lTWFwKCkub3B0aW9uc05hbWVNYXAuaGFzKFBlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBmcihVZS5hbHRlcm5hdGVNb2RlLmRpYWdub3N0aWMsUGUpO3ZhciBWcj1lLmdldFNwZWxsaW5nU3VnZ2VzdGlvbihQZSxVZS5vcHRpb25EZWNsYXJhdGlvbnMsZik7cmV0dXJuIFZyP2ZyKFVlLnVua25vd25EaWRZb3VNZWFuRGlhZ25vc3RpYyxEZXx8UGUsVnIubmFtZSk6ZnIoVWUudW5rbm93bk9wdGlvbkRpYWdub3N0aWMsRGV8fFBlKX1mdW5jdGlvbiBLKFBlLFVlLGZyKXt2YXIgRGU9e30sZ3IsVnI9W10sVHI9W107cmV0dXJuIHZpKFVlKSx7b3B0aW9uczpEZSx3YXRjaE9wdGlvbnM6Z3IsZmlsZU5hbWVzOlZyLGVycm9yczpUcn07ZnVuY3Rpb24gdmkoWWkpe2Zvcih2YXIgV2k9MDtXaTxZaS5sZW5ndGg7KXt2YXIgY3Q9WWlbV2ldO2lmKFdpKyssY3QuY2hhckNvZGVBdCgwKT09PTY0KVVpKGN0LnNsaWNlKDEpKTtlbHNlIGlmKGN0LmNoYXJDb2RlQXQoMCk9PT00NSl7dmFyIExpPWN0LnNsaWNlKGN0LmNoYXJDb2RlQXQoMSk9PT00NT8yOjEpLG50PWllKFBlLmdldE9wdGlvbnNOYW1lTWFwLExpLCEwKTtpZihudClXaT1iKFlpLFdpLFBlLG50LERlLFRyKTtlbHNle3ZhciBNdD1pZShrLmdldE9wdGlvbnNOYW1lTWFwLExpLCEwKTtNdD9XaT1iKFlpLFdpLGssTXQsZ3J8fChncj17fSksVHIpOlRyLnB1c2goVChMaSxQZSxlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyxjdCkpfX1lbHNlIFZyLnB1c2goY3QpfX1mdW5jdGlvbiBVaShZaSl7dmFyIFdpPUEoWWksZnJ8fGZ1bmN0aW9uKE10KXtyZXR1cm4gZS5zeXMucmVhZEZpbGUoTXQpfSk7aWYoIWUuaXNTdHJpbmcoV2kpKXtUci5wdXNoKFdpKTtyZXR1cm59Zm9yKHZhciBjdD1bXSxMaT0wOzspe2Zvcig7TGk8V2kubGVuZ3RoJiZXaS5jaGFyQ29kZUF0KExpKTw9MzI7KUxpKys7aWYoTGk+PVdpLmxlbmd0aClicmVhazt2YXIgbnQ9TGk7aWYoV2kuY2hhckNvZGVBdChudCk9PT0zNCl7Zm9yKExpKys7TGk8V2kubGVuZ3RoJiZXaS5jaGFyQ29kZUF0KExpKSE9PTM0OylMaSsrO0xpPFdpLmxlbmd0aD8oY3QucHVzaChXaS5zdWJzdHJpbmcobnQrMSxMaSkpLExpKyspOlRyLnB1c2goZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoZS5EaWFnbm9zdGljcy5VbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ19pbl9yZXNwb25zZV9maWxlXzAsWWkpKX1lbHNle2Zvcig7V2kuY2hhckNvZGVBdChMaSk+MzI7KUxpKys7Y3QucHVzaChXaS5zdWJzdHJpbmcobnQsTGkpKX19dmkoY3QpfX1lLnBhcnNlQ29tbWFuZExpbmVXb3JrZXI9SztmdW5jdGlvbiBiKFBlLFVlLGZyLERlLGdyLFZyKXtpZihEZS5pc1RTQ29uZmlnT25seSl7dmFyIFRyPVBlW1VlXTtUcj09PVwibnVsbFwiPyhncltEZS5uYW1lXT12b2lkIDAsVWUrKyk6RGUudHlwZT09PVwiYm9vbGVhblwiP1RyPT09XCJmYWxzZVwiPyhncltEZS5uYW1lXT1adChEZSwhMSxWciksVWUrKyk6KFRyPT09XCJ0cnVlXCImJlVlKyssVnIucHVzaChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbl9vbmx5X2JlX3NwZWNpZmllZF9pbl90c2NvbmZpZ19qc29uX2ZpbGVfb3Jfc2V0X3RvX2ZhbHNlX29yX251bGxfb25fY29tbWFuZF9saW5lLERlLm5hbWUpKSk6KFZyLnB1c2goZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5fb25seV9iZV9zcGVjaWZpZWRfaW5fdHNjb25maWdfanNvbl9maWxlX29yX3NldF90b19udWxsX29uX2NvbW1hbmRfbGluZSxEZS5uYW1lKSksVHImJiFlLnN0YXJ0c1dpdGgoVHIsXCItXCIpJiZVZSsrKX1lbHNlIGlmKCFQZVtVZV0mJkRlLnR5cGUhPT1cImJvb2xlYW5cIiYmVnIucHVzaChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhmci5vcHRpb25UeXBlTWlzbWF0Y2hEaWFnbm9zdGljLERlLm5hbWUsdWUoRGUpKSksUGVbVWVdIT09XCJudWxsXCIpc3dpdGNoKERlLnR5cGUpe2Nhc2VcIm51bWJlclwiOmdyW0RlLm5hbWVdPVp0KERlLHBhcnNlSW50KFBlW1VlXSksVnIpLFVlKys7YnJlYWs7Y2FzZVwiYm9vbGVhblwiOnZhciBUcj1QZVtVZV07Z3JbRGUubmFtZV09WnQoRGUsVHIhPT1cImZhbHNlXCIsVnIpLChUcj09PVwiZmFsc2VcInx8VHI9PT1cInRydWVcIikmJlVlKys7YnJlYWs7Y2FzZVwic3RyaW5nXCI6Z3JbRGUubmFtZV09WnQoRGUsUGVbVWVdfHxcIlwiLFZyKSxVZSsrO2JyZWFrO2Nhc2VcImxpc3RcIjp2YXIgdmk9b2UoRGUsUGVbVWVdLFZyKTtncltEZS5uYW1lXT12aXx8W10sdmkmJlVlKys7YnJlYWs7ZGVmYXVsdDpncltEZS5uYW1lXT1HKERlLFBlW1VlXSxWciksVWUrKzticmVha31lbHNlIGdyW0RlLm5hbWVdPXZvaWQgMCxVZSsrO3JldHVybiBVZX1lLmNvbXBpbGVyT3B0aW9uc0RpZFlvdU1lYW5EaWFnbm9zdGljcz17YWx0ZXJuYXRlTW9kZTpsZSxnZXRPcHRpb25zTmFtZU1hcDpRLG9wdGlvbkRlY2xhcmF0aW9uczplLm9wdGlvbkRlY2xhcmF0aW9ucyx1bmtub3duT3B0aW9uRGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLlVua25vd25fY29tcGlsZXJfb3B0aW9uXzAsdW5rbm93bkRpZFlvdU1lYW5EaWFnbm9zdGljOmUuRGlhZ25vc3RpY3MuVW5rbm93bl9jb21waWxlcl9vcHRpb25fMF9EaWRfeW91X21lYW5fMSxvcHRpb25UeXBlTWlzbWF0Y2hEaWFnbm9zdGljOmUuRGlhZ25vc3RpY3MuQ29tcGlsZXJfb3B0aW9uXzBfZXhwZWN0c19hbl9hcmd1bWVudH07ZnVuY3Rpb24gc2UoUGUsVWUpe3JldHVybiBLKGUuY29tcGlsZXJPcHRpb25zRGlkWW91TWVhbkRpYWdub3N0aWNzLFBlLFVlKX1lLnBhcnNlQ29tbWFuZExpbmU9c2U7ZnVuY3Rpb24gSihQZSxVZSl7cmV0dXJuIGllKFEsUGUsVWUpfWUuZ2V0T3B0aW9uRnJvbU5hbWU9SjtmdW5jdGlvbiBpZShQZSxVZSxmcil7ZnI9PT12b2lkIDAmJihmcj0hMSksVWU9VWUudG9Mb3dlckNhc2UoKTt2YXIgRGU9UGUoKSxncj1EZS5vcHRpb25zTmFtZU1hcCxWcj1EZS5zaG9ydE9wdGlvbk5hbWVzO2lmKGZyKXt2YXIgVHI9VnIuZ2V0KFVlKTtUciE9PXZvaWQgMCYmKFVlPVRyKX1yZXR1cm4gZ3IuZ2V0KFVlKX12YXIgUjtmdW5jdGlvbiBxKCl7cmV0dXJuIFJ8fChSPUIoZS5idWlsZE9wdHMpKX12YXIgTz17ZGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLkNvbXBpbGVyX29wdGlvbl8wX21heV9ub3RfYmVfdXNlZF93aXRoX2J1aWxkLGdldE9wdGlvbnNOYW1lTWFwOlF9LHZlPXthbHRlcm5hdGVNb2RlOk8sZ2V0T3B0aW9uc05hbWVNYXA6cSxvcHRpb25EZWNsYXJhdGlvbnM6ZS5idWlsZE9wdHMsdW5rbm93bk9wdGlvbkRpYWdub3N0aWM6ZS5EaWFnbm9zdGljcy5Vbmtub3duX2J1aWxkX29wdGlvbl8wLHVua25vd25EaWRZb3VNZWFuRGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLlVua25vd25fYnVpbGRfb3B0aW9uXzBfRGlkX3lvdV9tZWFuXzEsb3B0aW9uVHlwZU1pc21hdGNoRGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLkJ1aWxkX29wdGlvbl8wX3JlcXVpcmVzX2FfdmFsdWVfb2ZfdHlwZV8xfTtmdW5jdGlvbiBlZShQZSl7dmFyIFVlPUsodmUsUGUpLGZyPVVlLm9wdGlvbnMsRGU9VWUud2F0Y2hPcHRpb25zLGdyPVVlLmZpbGVOYW1lcyxWcj1VZS5lcnJvcnMsVHI9ZnI7cmV0dXJuIGdyLmxlbmd0aD09PTAmJmdyLnB1c2goXCIuXCIpLFRyLmNsZWFuJiZUci5mb3JjZSYmVnIucHVzaChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLk9wdGlvbnNfMF9hbmRfMV9jYW5ub3RfYmVfY29tYmluZWQsXCJjbGVhblwiLFwiZm9yY2VcIikpLFRyLmNsZWFuJiZUci52ZXJib3NlJiZWci5wdXNoKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGUuRGlhZ25vc3RpY3MuT3B0aW9uc18wX2FuZF8xX2Nhbm5vdF9iZV9jb21iaW5lZCxcImNsZWFuXCIsXCJ2ZXJib3NlXCIpKSxUci5jbGVhbiYmVHIud2F0Y2gmJlZyLnB1c2goZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoZS5EaWFnbm9zdGljcy5PcHRpb25zXzBfYW5kXzFfY2Fubm90X2JlX2NvbWJpbmVkLFwiY2xlYW5cIixcIndhdGNoXCIpKSxUci53YXRjaCYmVHIuZHJ5JiZWci5wdXNoKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGUuRGlhZ25vc3RpY3MuT3B0aW9uc18wX2FuZF8xX2Nhbm5vdF9iZV9jb21iaW5lZCxcIndhdGNoXCIsXCJkcnlcIikpLHtidWlsZE9wdGlvbnM6VHIsd2F0Y2hPcHRpb25zOkRlLHByb2plY3RzOmdyLGVycm9yczpWcn19ZS5wYXJzZUJ1aWxkQ29tbWFuZD1lZTtmdW5jdGlvbiBoZShQZSl7Zm9yKHZhciBVZT1bXSxmcj0xO2ZyPGFyZ3VtZW50cy5sZW5ndGg7ZnIrKylVZVtmci0xXT1hcmd1bWVudHNbZnJdO3ZhciBEZT1lLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYy5hcHBseSh2b2lkIDAsYXJndW1lbnRzKTtyZXR1cm4gRGUubWVzc2FnZVRleHR9ZS5nZXREaWFnbm9zdGljVGV4dD1oZTtmdW5jdGlvbiBGKFBlLFVlLGZyLERlLGdyLFZyKXt2YXIgVHI9QShQZSxmdW5jdGlvbihZaSl7cmV0dXJuIGZyLnJlYWRGaWxlKFlpKX0pO2lmKCFlLmlzU3RyaW5nKFRyKSl7ZnIub25VblJlY292ZXJhYmxlQ29uZmlnRmlsZURpYWdub3N0aWMoVHIpO3JldHVybn12YXIgdmk9ZS5wYXJzZUpzb25UZXh0KFBlLFRyKSxVaT1mci5nZXRDdXJyZW50RGlyZWN0b3J5KCk7cmV0dXJuIHZpLnBhdGg9ZS50b1BhdGgoUGUsVWksZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShmci51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKSksdmkucmVzb2x2ZWRQYXRoPXZpLnBhdGgsdmkub3JpZ2luYWxGaWxlTmFtZT12aS5maWxlTmFtZSxlcih2aSxmcixlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoZS5nZXREaXJlY3RvcnlQYXRoKFBlKSxVaSksVWUsZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKFBlLFVpKSx2b2lkIDAsVnIsRGUsZ3IpfWUuZ2V0UGFyc2VkQ29tbWFuZExpbmVPZkNvbmZpZ0ZpbGU9RjtmdW5jdGlvbiB4KFBlLFVlKXt2YXIgZnI9QShQZSxVZSk7cmV0dXJuIGUuaXNTdHJpbmcoZnIpP1goUGUsZnIpOntjb25maWc6e30sZXJyb3I6ZnJ9fWUucmVhZENvbmZpZ0ZpbGU9eDtmdW5jdGlvbiBYKFBlLFVlKXt2YXIgZnI9ZS5wYXJzZUpzb25UZXh0KFBlLFVlKTtyZXR1cm57Y29uZmlnOmZlKGZyLGZyLnBhcnNlRGlhZ25vc3RpY3MsITEsdm9pZCAwKSxlcnJvcjpmci5wYXJzZURpYWdub3N0aWNzLmxlbmd0aD9mci5wYXJzZURpYWdub3N0aWNzWzBdOnZvaWQgMH19ZS5wYXJzZUNvbmZpZ0ZpbGVUZXh0VG9Kc29uPVg7ZnVuY3Rpb24gJChQZSxVZSl7dmFyIGZyPUEoUGUsVWUpO3JldHVybiBlLmlzU3RyaW5nKGZyKT9lLnBhcnNlSnNvblRleHQoUGUsZnIpOntmaWxlTmFtZTpQZSxwYXJzZURpYWdub3N0aWNzOltmcl19fWUucmVhZEpzb25Db25maWdGaWxlPSQ7ZnVuY3Rpb24gQShQZSxVZSl7dmFyIGZyO3RyeXtmcj1VZShQZSl9Y2F0Y2goRGUpe3JldHVybiBlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLkNhbm5vdF9yZWFkX2ZpbGVfMF9Db2xvbl8xLFBlLERlLm1lc3NhZ2UpfXJldHVybiBmcj09PXZvaWQgMD9lLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLkNhbm5vdF9yZWFkX2ZpbGVfMCxQZSk6ZnJ9ZS50cnlSZWFkRmlsZT1BO2Z1bmN0aW9uIHkoUGUpe3JldHVybiBlLmFycmF5VG9NYXAoUGUsZil9dmFyIFY9e29wdGlvbkRlY2xhcmF0aW9uczplLnR5cGVBY3F1aXNpdGlvbkRlY2xhcmF0aW9ucyx1bmtub3duT3B0aW9uRGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLlVua25vd25fdHlwZV9hY3F1aXNpdGlvbl9vcHRpb25fMCx1bmtub3duRGlkWW91TWVhbkRpYWdub3N0aWM6ZS5EaWFnbm9zdGljcy5Vbmtub3duX3R5cGVfYWNxdWlzaXRpb25fb3B0aW9uXzBfRGlkX3lvdV9tZWFuXzF9LEw7ZnVuY3Rpb24gUCgpe3JldHVybiBMfHwoTD1CKGUub3B0aW9uc0ZvcldhdGNoKSl9dmFyIGs9e2dldE9wdGlvbnNOYW1lTWFwOlAsb3B0aW9uRGVjbGFyYXRpb25zOmUub3B0aW9uc0ZvcldhdGNoLHVua25vd25PcHRpb25EaWFnbm9zdGljOmUuRGlhZ25vc3RpY3MuVW5rbm93bl93YXRjaF9vcHRpb25fMCx1bmtub3duRGlkWW91TWVhbkRpYWdub3N0aWM6ZS5EaWFnbm9zdGljcy5Vbmtub3duX3dhdGNoX29wdGlvbl8wX0RpZF95b3VfbWVhbl8xLG9wdGlvblR5cGVNaXNtYXRjaERpYWdub3N0aWM6ZS5EaWFnbm9zdGljcy5XYXRjaF9vcHRpb25fMF9yZXF1aXJlc19hX3ZhbHVlX29mX3R5cGVfMX0sWTtmdW5jdGlvbiBVKCl7cmV0dXJuIFl8fChZPXkoZS5vcHRpb25EZWNsYXJhdGlvbnMpKX12YXIgajtmdW5jdGlvbiBIKCl7cmV0dXJuIGp8fChqPXkoZS5vcHRpb25zRm9yV2F0Y2gpKX12YXIgSTtmdW5jdGlvbiBsKCl7cmV0dXJuIEl8fChJPXkoZS50eXBlQWNxdWlzaXRpb25EZWNsYXJhdGlvbnMpKX12YXIgZDtmdW5jdGlvbiBEKCl7cmV0dXJuIGQ9PT12b2lkIDAmJihkPXtuYW1lOnZvaWQgMCx0eXBlOlwib2JqZWN0XCIsZWxlbWVudE9wdGlvbnM6eShbe25hbWU6XCJjb21waWxlck9wdGlvbnNcIix0eXBlOlwib2JqZWN0XCIsZWxlbWVudE9wdGlvbnM6VSgpLGV4dHJhS2V5RGlhZ25vc3RpY3M6ZS5jb21waWxlck9wdGlvbnNEaWRZb3VNZWFuRGlhZ25vc3RpY3N9LHtuYW1lOlwid2F0Y2hPcHRpb25zXCIsdHlwZTpcIm9iamVjdFwiLGVsZW1lbnRPcHRpb25zOkgoKSxleHRyYUtleURpYWdub3N0aWNzOmt9LHtuYW1lOlwidHlwaW5nT3B0aW9uc1wiLHR5cGU6XCJvYmplY3RcIixlbGVtZW50T3B0aW9uczpsKCksZXh0cmFLZXlEaWFnbm9zdGljczpWfSx7bmFtZTpcInR5cGVBY3F1aXNpdGlvblwiLHR5cGU6XCJvYmplY3RcIixlbGVtZW50T3B0aW9uczpsKCksZXh0cmFLZXlEaWFnbm9zdGljczpWfSx7bmFtZTpcImV4dGVuZHNcIix0eXBlOlwic3RyaW5nXCIsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5GaWxlX01hbmFnZW1lbnR9LHtuYW1lOlwicmVmZXJlbmNlc1wiLHR5cGU6XCJsaXN0XCIsZWxlbWVudDp7bmFtZTpcInJlZmVyZW5jZXNcIix0eXBlOlwib2JqZWN0XCJ9LGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuUHJvamVjdHN9LHtuYW1lOlwiZmlsZXNcIix0eXBlOlwibGlzdFwiLGVsZW1lbnQ6e25hbWU6XCJmaWxlc1wiLHR5cGU6XCJzdHJpbmdcIn0sY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5GaWxlX01hbmFnZW1lbnR9LHtuYW1lOlwiaW5jbHVkZVwiLHR5cGU6XCJsaXN0XCIsZWxlbWVudDp7bmFtZTpcImluY2x1ZGVcIix0eXBlOlwic3RyaW5nXCJ9LGNhdGVnb3J5OmUuRGlhZ25vc3RpY3MuRmlsZV9NYW5hZ2VtZW50LGRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuaWZfZmlsZXNfaXNfc3BlY2lmaWVkX290aGVyd2lzZV9Bc3Rlcmlza19Bc3Rlcmlza19TbGFzaF9Bc3Rlcmlza30se25hbWU6XCJleGNsdWRlXCIsdHlwZTpcImxpc3RcIixlbGVtZW50OntuYW1lOlwiZXhjbHVkZVwiLHR5cGU6XCJzdHJpbmdcIn0sY2F0ZWdvcnk6ZS5EaWFnbm9zdGljcy5GaWxlX01hbmFnZW1lbnQsZGVmYXVsdFZhbHVlRGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5ub2RlX21vZHVsZXNfYm93ZXJfY29tcG9uZW50c19qc3BtX3BhY2thZ2VzX3BsdXNfdGhlX3ZhbHVlX29mX291dERpcl9pZl9vbmVfaXNfc3BlY2lmaWVkfSxlLmNvbXBpbGVPblNhdmVDb21tYW5kTGluZU9wdGlvbl0pfSksZH1mdW5jdGlvbiBmZShQZSxVZSxmcixEZSl7dmFyIGdyLFZyPShncj1QZS5zdGF0ZW1lbnRzWzBdKT09PW51bGx8fGdyPT09dm9pZCAwP3ZvaWQgMDpnci5leHByZXNzaW9uLFRyPWZyP0QoKTp2b2lkIDA7aWYoVnImJlZyLmtpbmQhPT0yMDUpe2lmKFVlLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUluU291cmNlRmlsZShQZSxWcixlLkRpYWdub3N0aWNzLlRoZV9yb290X3ZhbHVlX29mX2FfMF9maWxlX211c3RfYmVfYW5fb2JqZWN0LGUuZ2V0QmFzZUZpbGVOYW1lKFBlLmZpbGVOYW1lKT09PVwianNjb25maWcuanNvblwiP1wianNjb25maWcuanNvblwiOlwidHNjb25maWcuanNvblwiKSksZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oVnIpKXt2YXIgdmk9ZS5maW5kKFZyLmVsZW1lbnRzLGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbik7aWYodmkpcmV0dXJuIG5lKFBlLHZpLFVlLCEwLFRyLERlKX1yZXR1cm57fX1yZXR1cm4gbmUoUGUsVnIsVWUsITAsVHIsRGUpfWZ1bmN0aW9uIGcoUGUsVWUpe3ZhciBmcjtyZXR1cm4gbmUoUGUsKGZyPVBlLnN0YXRlbWVudHNbMF0pPT09bnVsbHx8ZnI9PT12b2lkIDA/dm9pZCAwOmZyLmV4cHJlc3Npb24sVWUsITAsdm9pZCAwLHZvaWQgMCl9ZS5jb252ZXJ0VG9PYmplY3Q9ZztmdW5jdGlvbiBuZShQZSxVZSxmcixEZSxncixWcil7aWYoIVVlKXJldHVybiBEZT97fTp2b2lkIDA7cmV0dXJuIFlpKFVlLGdyKTtmdW5jdGlvbiBUcihjdCl7cmV0dXJuIGdyJiZnci5lbGVtZW50T3B0aW9ucz09PWN0fWZ1bmN0aW9uIHZpKGN0LExpLG50LE10KXtmb3IodmFyIHh0PURlP3t9OnZvaWQgMCx1dD1mdW5jdGlvbihLaSl7aWYoS2kua2luZCE9PTI5NilyZXR1cm4gZnIucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFBlLEtpLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfYXNzaWdubWVudF9leHBlY3RlZCkpLFwiY29udGludWVcIjtLaS5xdWVzdGlvblRva2VuJiZmci5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGUoUGUsS2kucXVlc3Rpb25Ub2tlbixlLkRpYWdub3N0aWNzLlRoZV8wX21vZGlmaWVyX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcyxcIj9cIikpLFdpKEtpLm5hbWUpfHxmci5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGUoUGUsS2kubmFtZSxlLkRpYWdub3N0aWNzLlN0cmluZ19saXRlcmFsX3dpdGhfZG91YmxlX3F1b3Rlc19leHBlY3RlZCkpO3ZhciBGaT1lLmlzQ29tcHV0ZWROb25MaXRlcmFsTmFtZShLaS5uYW1lKT92b2lkIDA6ZS5nZXRUZXh0T2ZQcm9wZXJ0eU5hbWUoS2kubmFtZSksdWk9RmkmJmUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoRmkpLEJ0PXVpJiZMaT9MaS5nZXQodWkpOnZvaWQgMDt1aSYmbnQmJiFCdCYmKExpP2ZyLnB1c2goVCh1aSxudCxmdW5jdGlvbihBaSxPaSxqaSl7cmV0dXJuIGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGUoUGUsS2kubmFtZSxBaSxPaSxqaSl9KSk6ZnIucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFBlLEtpLm5hbWUsbnQudW5rbm93bk9wdGlvbkRpYWdub3N0aWMsdWkpKSk7dmFyIHd0PVlpKEtpLmluaXRpYWxpemVyLEJ0KTtpZih0eXBlb2YgdWk8XCJ1XCImJihEZSYmKHh0W3VpXT13dCksVnImJihNdHx8VHIoTGkpKSkpe3ZhciBuYT1XZShCdCx3dCk7TXQ/bmEmJlZyLm9uU2V0VmFsaWRPcHRpb25LZXlWYWx1ZUluUGFyZW50KE10LEJ0LHd0KTpUcihMaSkmJihuYT9Wci5vblNldFZhbGlkT3B0aW9uS2V5VmFsdWVJblJvb3QodWksS2kubmFtZSx3dCxLaS5pbml0aWFsaXplcik6QnR8fFZyLm9uU2V0VW5rbm93bk9wdGlvbktleVZhbHVlSW5Sb290KHVpLEtpLm5hbWUsd3QsS2kuaW5pdGlhbGl6ZXIpKX19LER0PTAsUnQ9Y3QucHJvcGVydGllcztEdDxSdC5sZW5ndGg7RHQrKyl7dmFyIElpPVJ0W0R0XTt1dChJaSl9cmV0dXJuIHh0fWZ1bmN0aW9uIFVpKGN0LExpKXtpZighRGUpe2N0LmZvckVhY2goZnVuY3Rpb24obnQpe3JldHVybiBZaShudCxMaSl9KTtyZXR1cm59cmV0dXJuIGUuZmlsdGVyKGN0Lm1hcChmdW5jdGlvbihudCl7cmV0dXJuIFlpKG50LExpKX0pLGZ1bmN0aW9uKG50KXtyZXR1cm4gbnQhPT12b2lkIDB9KX1mdW5jdGlvbiBZaShjdCxMaSl7dmFyIG50O3N3aXRjaChjdC5raW5kKXtjYXNlIDExMDpyZXR1cm4gdWkoTGkmJkxpLnR5cGUhPT1cImJvb2xlYW5cIiksRmkoITApO2Nhc2UgOTU6cmV0dXJuIHVpKExpJiZMaS50eXBlIT09XCJib29sZWFuXCIpLEZpKCExKTtjYXNlIDEwNDpyZXR1cm4gdWkoTGkmJkxpLm5hbWU9PT1cImV4dGVuZHNcIiksRmkobnVsbCk7Y2FzZSAxMDpXaShjdCl8fGZyLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUluU291cmNlRmlsZShQZSxjdCxlLkRpYWdub3N0aWNzLlN0cmluZ19saXRlcmFsX3dpdGhfZG91YmxlX3F1b3Rlc19leHBlY3RlZCkpLHVpKExpJiZlLmlzU3RyaW5nKExpLnR5cGUpJiZMaS50eXBlIT09XCJzdHJpbmdcIik7dmFyIE10PWN0LnRleHQ7aWYoTGkmJiFlLmlzU3RyaW5nKExpLnR5cGUpKXt2YXIgeHQ9TGk7eHQudHlwZS5oYXMoTXQudG9Mb3dlckNhc2UoKSl8fChmci5wdXNoKG0oeHQsZnVuY3Rpb24oQnQsd3QsbmEpe3JldHVybiBlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFBlLGN0LEJ0LHd0LG5hKX0pKSxudD0hMCl9cmV0dXJuIEZpKE10KTtjYXNlIDg6cmV0dXJuIHVpKExpJiZMaS50eXBlIT09XCJudW1iZXJcIiksRmkoTnVtYmVyKGN0LnRleHQpKTtjYXNlIDIxOTppZihjdC5vcGVyYXRvciE9PTQwfHxjdC5vcGVyYW5kLmtpbmQhPT04KWJyZWFrO3JldHVybiB1aShMaSYmTGkudHlwZSE9PVwibnVtYmVyXCIpLEZpKC1OdW1iZXIoY3Qub3BlcmFuZC50ZXh0KSk7Y2FzZSAyMDU6dWkoTGkmJkxpLnR5cGUhPT1cIm9iamVjdFwiKTt2YXIgdXQ9Y3Q7aWYoTGkpe3ZhciBEdD1MaSxSdD1EdC5lbGVtZW50T3B0aW9ucyxJaT1EdC5leHRyYUtleURpYWdub3N0aWNzLEtpPUR0Lm5hbWU7cmV0dXJuIEZpKHZpKHV0LFJ0LElpLEtpKSl9ZWxzZSByZXR1cm4gRmkodmkodXQsdm9pZCAwLHZvaWQgMCx2b2lkIDApKTtjYXNlIDIwNDpyZXR1cm4gdWkoTGkmJkxpLnR5cGUhPT1cImxpc3RcIiksRmkoVWkoY3QuZWxlbWVudHMsTGkmJkxpLmVsZW1lbnQpKX1MaT91aSghMCk6ZnIucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFBlLGN0LGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfdmFsdWVfY2FuX29ubHlfYmVfc3RyaW5nX2xpdGVyYWxfbnVtZXJpY19saXRlcmFsX3RydWVfZmFsc2VfbnVsbF9vYmplY3RfbGl0ZXJhbF9vcl9hcnJheV9saXRlcmFsKSk7cmV0dXJuO2Z1bmN0aW9uIEZpKEJ0KXt2YXIgd3Q7aWYoIW50KXt2YXIgbmE9KHd0PUxpPT1udWxsP3ZvaWQgMDpMaS5leHRyYVZhbGlkYXRpb24pPT09bnVsbHx8d3Q9PT12b2lkIDA/dm9pZCAwOnd0LmNhbGwoTGksQnQpO2lmKG5hKXtmci5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGUuYXBwbHkodm9pZCAwLFZlKFtQZSxjdF0sbmEsITEpKSk7cmV0dXJufX1yZXR1cm4gQnR9ZnVuY3Rpb24gdWkoQnQpe0J0JiYoZnIucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFBlLGN0LGUuRGlhZ25vc3RpY3MuQ29tcGlsZXJfb3B0aW9uXzBfcmVxdWlyZXNfYV92YWx1ZV9vZl90eXBlXzEsTGkubmFtZSx1ZShMaSkpKSxudD0hMCl9fWZ1bmN0aW9uIFdpKGN0KXtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWwoY3QpJiZlLmlzU3RyaW5nRG91YmxlUXVvdGVkKGN0LFBlKX19ZS5jb252ZXJ0VG9PYmplY3RXb3JrZXI9bmU7ZnVuY3Rpb24gdWUoUGUpe3JldHVybiBQZS50eXBlPT09XCJsaXN0XCI/XCJBcnJheVwiOmUuaXNTdHJpbmcoUGUudHlwZSk/UGUudHlwZTpcInN0cmluZ1wifWZ1bmN0aW9uIFdlKFBlLFVlKXtpZihQZSl7aWYoQ3IoVWUpKXJldHVybiEwO2lmKFBlLnR5cGU9PT1cImxpc3RcIilyZXR1cm4gZS5pc0FycmF5KFVlKTt2YXIgZnI9ZS5pc1N0cmluZyhQZS50eXBlKT9QZS50eXBlOlwic3RyaW5nXCI7cmV0dXJuIHR5cGVvZiBVZT09PWZyfXJldHVybiExfWZ1bmN0aW9uIEZlKFBlLFVlLGZyKXt2YXIgRGUsZ3IsVnIsVHI9ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShmci51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKSx2aT1lLm1hcChlLmZpbHRlcihQZS5maWxlTmFtZXMsISgoZ3I9KERlPVBlLm9wdGlvbnMuY29uZmlnRmlsZSk9PT1udWxsfHxEZT09PXZvaWQgMD92b2lkIDA6RGUuY29uZmlnRmlsZVNwZWNzKT09PW51bGx8fGdyPT09dm9pZCAwKSYmZ3IudmFsaWRhdGVkSW5jbHVkZVNwZWNzP2dlKFVlLFBlLm9wdGlvbnMuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MudmFsaWRhdGVkSW5jbHVkZVNwZWNzLFBlLm9wdGlvbnMuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MudmFsaWRhdGVkRXhjbHVkZVNwZWNzLGZyKTplLnJldHVyblRydWUpLGZ1bmN0aW9uKGN0KXtyZXR1cm4gZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRmlsZShlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoVWUsZnIuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSxlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoY3QsZnIuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSxUcil9KSxVaT1FZShQZS5vcHRpb25zLHtjb25maWdGaWxlUGF0aDplLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoVWUsZnIuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSx1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOmZyLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXN9KSxZaT1QZS53YXRjaE9wdGlvbnMmJkhlKFBlLndhdGNoT3B0aW9ucyksV2k9S2UoS2Uoe2NvbXBpbGVyT3B0aW9uczpLZShLZSh7fSxaKFVpKSkse3Nob3dDb25maWc6dm9pZCAwLGNvbmZpZ0ZpbGU6dm9pZCAwLGNvbmZpZ0ZpbGVQYXRoOnZvaWQgMCxoZWxwOnZvaWQgMCxpbml0OnZvaWQgMCxsaXN0RmlsZXM6dm9pZCAwLGxpc3RFbWl0dGVkRmlsZXM6dm9pZCAwLHByb2plY3Q6dm9pZCAwLGJ1aWxkOnZvaWQgMCx2ZXJzaW9uOnZvaWQgMH0pLHdhdGNoT3B0aW9uczpZaSYmWihZaSkscmVmZXJlbmNlczplLm1hcChQZS5wcm9qZWN0UmVmZXJlbmNlcyxmdW5jdGlvbihjdCl7cmV0dXJuIEtlKEtlKHt9LGN0KSx7cGF0aDpjdC5vcmlnaW5hbFBhdGg/Y3Qub3JpZ2luYWxQYXRoOlwiXCIsb3JpZ2luYWxQYXRoOnZvaWQgMH0pfSksZmlsZXM6ZS5sZW5ndGgodmkpP3ZpOnZvaWQgMH0sISgoVnI9UGUub3B0aW9ucy5jb25maWdGaWxlKT09PW51bGx8fFZyPT09dm9pZCAwKSYmVnIuY29uZmlnRmlsZVNwZWNzP3tpbmNsdWRlOkJlKFBlLm9wdGlvbnMuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MudmFsaWRhdGVkSW5jbHVkZVNwZWNzKSxleGNsdWRlOlBlLm9wdGlvbnMuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MudmFsaWRhdGVkRXhjbHVkZVNwZWNzfTp7fSkse2NvbXBpbGVPblNhdmU6UGUuY29tcGlsZU9uU2F2ZT8hMDp2b2lkIDB9KTtyZXR1cm4gV2l9ZS5jb252ZXJ0VG9UU0NvbmZpZz1GZTtmdW5jdGlvbiBaKFBlKXtyZXR1cm4gS2Uoe30sZS5hcnJheUZyb20oUGUuZW50cmllcygpKS5yZWR1Y2UoZnVuY3Rpb24oVWUsZnIpe3ZhciBEZTtyZXR1cm4gS2UoS2Uoe30sVWUpLChEZT17fSxEZVtmclswXV09ZnJbMV0sRGUpKX0se30pKX1mdW5jdGlvbiBCZShQZSl7aWYoISFlLmxlbmd0aChQZSkpe2lmKGUubGVuZ3RoKFBlKSE9PTEpcmV0dXJuIFBlO2lmKFBlWzBdIT09XCIqKi8qXCIpcmV0dXJuIFBlfX1mdW5jdGlvbiBnZShQZSxVZSxmcixEZSl7aWYoIVVlKXJldHVybiBlLnJldHVyblRydWU7dmFyIGdyPWUuZ2V0RmlsZU1hdGNoZXJQYXR0ZXJucyhQZSxmcixVZSxEZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzLERlLmdldEN1cnJlbnREaXJlY3RvcnkoKSksVnI9Z3IuZXhjbHVkZVBhdHRlcm4mJmUuZ2V0UmVnZXhGcm9tUGF0dGVybihnci5leGNsdWRlUGF0dGVybixEZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKSxUcj1nci5pbmNsdWRlRmlsZVBhdHRlcm4mJmUuZ2V0UmVnZXhGcm9tUGF0dGVybihnci5pbmNsdWRlRmlsZVBhdHRlcm4sRGUudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyk7cmV0dXJuIFRyP1ZyP2Z1bmN0aW9uKHZpKXtyZXR1cm4hKFRyLnRlc3QodmkpJiYhVnIudGVzdCh2aSkpfTpmdW5jdGlvbih2aSl7cmV0dXJuIVRyLnRlc3QodmkpfTpWcj9mdW5jdGlvbih2aSl7cmV0dXJuIFZyLnRlc3QodmkpfTplLnJldHVyblRydWV9ZnVuY3Rpb24gUmUoUGUpe2lmKCEoUGUudHlwZT09PVwic3RyaW5nXCJ8fFBlLnR5cGU9PT1cIm51bWJlclwifHxQZS50eXBlPT09XCJib29sZWFuXCJ8fFBlLnR5cGU9PT1cIm9iamVjdFwiKSlyZXR1cm4gUGUudHlwZT09PVwibGlzdFwiP1JlKFBlLmVsZW1lbnQpOlBlLnR5cGV9ZnVuY3Rpb24gemUoUGUsVWUpe3JldHVybiBlLmZvckVhY2hFbnRyeShVZSxmdW5jdGlvbihmcixEZSl7aWYoZnI9PT1QZSlyZXR1cm4gRGV9KX1mdW5jdGlvbiBFZShQZSxVZSl7cmV0dXJuIHJyKFBlLFEoKSxVZSl9ZnVuY3Rpb24gSGUoUGUpe3JldHVybiBycihQZSxQKCkpfWZ1bmN0aW9uIHJyKFBlLFVlLGZyKXt2YXIgRGU9VWUub3B0aW9uc05hbWVNYXAsZ3I9bmV3IGUuTWFwLFZyPWZyJiZlLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKGZyLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMpLFRyPWZ1bmN0aW9uKFVpKXtpZihlLmhhc1Byb3BlcnR5KFBlLFVpKSl7aWYoRGUuaGFzKFVpKSYmKERlLmdldChVaSkuY2F0ZWdvcnk9PT1lLkRpYWdub3N0aWNzLkNvbW1hbmRfbGluZV9PcHRpb25zfHxEZS5nZXQoVWkpLmNhdGVnb3J5PT09ZS5EaWFnbm9zdGljcy5PdXRwdXRfRm9ybWF0dGluZykpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBZaT1QZVtVaV0sV2k9RGUuZ2V0KFVpLnRvTG93ZXJDYXNlKCkpO2lmKFdpKXt2YXIgY3Q9UmUoV2kpO2N0P1dpLnR5cGU9PT1cImxpc3RcIj9nci5zZXQoVWksWWkubWFwKGZ1bmN0aW9uKExpKXtyZXR1cm4gemUoTGksY3QpfSkpOmdyLnNldChVaSx6ZShZaSxjdCkpOmZyJiZXaS5pc0ZpbGVQYXRoP2dyLnNldChVaSxlLmdldFJlbGF0aXZlUGF0aEZyb21GaWxlKGZyLmNvbmZpZ0ZpbGVQYXRoLGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChZaSxlLmdldERpcmVjdG9yeVBhdGgoZnIuY29uZmlnRmlsZVBhdGgpKSxWcikpOmdyLnNldChVaSxZaSl9fX07Zm9yKHZhciB2aSBpbiBQZSlUcih2aSk7cmV0dXJuIGdyfWZ1bmN0aW9uIEllKFBlLFVlKXt2YXIgZnI9X2UoUGUpO3JldHVybiBncigpO2Z1bmN0aW9uIERlKFZyKXtyZXR1cm4gQXJyYXkoVnIrMSkuam9pbihcIiBcIil9ZnVuY3Rpb24gZ3IoKXt2YXIgVnI9W10sVHI9RGUoMik7cmV0dXJuIHcuZm9yRWFjaChmdW5jdGlvbih2aSl7aWYoISFmci5oYXModmkubmFtZSkpe3ZhciBVaT1mci5nZXQodmkubmFtZSksWWk9TXIodmkpO1VpIT09WWk/VnIucHVzaChcIlwiLmNvbmNhdChUcikuY29uY2F0KHZpLm5hbWUsXCI6IFwiKS5jb25jYXQoVWkpKTplLmhhc1Byb3BlcnR5KGUuZGVmYXVsdEluaXRDb21waWxlck9wdGlvbnMsdmkubmFtZSkmJlZyLnB1c2goXCJcIi5jb25jYXQoVHIpLmNvbmNhdCh2aS5uYW1lLFwiOiBcIikuY29uY2F0KFlpKSl9fSksVnIuam9pbihVZSkrVWV9fWUuZ2V0Q29tcGlsZXJPcHRpb25zRGlmZlZhbHVlPUllO2Z1bmN0aW9uIF9lKFBlKXt2YXIgVWU9ZS5leHRlbmQoUGUsZS5kZWZhdWx0SW5pdENvbXBpbGVyT3B0aW9ucyk7cmV0dXJuIEVlKFVlKX1mdW5jdGlvbiB3ZShQZSxVZSxmcil7dmFyIERlPV9lKFBlKTtyZXR1cm4gVHIoKTtmdW5jdGlvbiBncih2aSl7cmV0dXJuIEFycmF5KHZpKzEpLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIFZyKHZpKXt2YXIgVWk9dmkuY2F0ZWdvcnksWWk9dmkubmFtZSxXaT12aS5pc0NvbW1hbmRMaW5lT25seSxjdD1bZS5EaWFnbm9zdGljcy5Db21tYW5kX2xpbmVfT3B0aW9ucyxlLkRpYWdub3N0aWNzLkVkaXRvcl9TdXBwb3J0LGUuRGlhZ25vc3RpY3MuQ29tcGlsZXJfRGlhZ25vc3RpY3MsZS5EaWFnbm9zdGljcy5CYWNrd2FyZHNfQ29tcGF0aWJpbGl0eSxlLkRpYWdub3N0aWNzLldhdGNoX2FuZF9CdWlsZF9Nb2RlcyxlLkRpYWdub3N0aWNzLk91dHB1dF9Gb3JtYXR0aW5nXTtyZXR1cm4hV2kmJlVpIT09dm9pZCAwJiYoIWN0LmluY2x1ZGVzKFVpKXx8RGUuaGFzKFlpKSl9ZnVuY3Rpb24gVHIoKXtmb3IodmFyIHZpPWUuY3JlYXRlTXVsdGlNYXAoKSxVaT0wLFlpPWUub3B0aW9uRGVjbGFyYXRpb25zO1VpPFlpLmxlbmd0aDtVaSsrKXt2YXIgV2k9WWlbVWldLGN0PVdpLmNhdGVnb3J5O1ZyKFdpKSYmdmkuYWRkKGUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGN0KSxXaSl9dmFyIExpPTAsbnQ9MCxNdD1bXTt2aS5mb3JFYWNoKGZ1bmN0aW9uKHd0LG5hKXtNdC5sZW5ndGghPT0wJiZNdC5wdXNoKHt2YWx1ZTpcIlwifSksTXQucHVzaCh7dmFsdWU6XCIvKiBcIi5jb25jYXQobmEsXCIgKi9cIil9KTtmb3IodmFyIEFpPTAsT2k9d3Q7QWk8T2kubGVuZ3RoO0FpKyspe3ZhciBqaT1PaVtBaV0sVmk9dm9pZCAwO0RlLmhhcyhqaS5uYW1lKT9WaT0nXCInLmNvbmNhdChqaS5uYW1lLCdcIjogJykuY29uY2F0KEpTT04uc3RyaW5naWZ5KERlLmdldChqaS5uYW1lKSkpLmNvbmNhdCgobnQrPTEpPT09RGUuc2l6ZT9cIlwiOlwiLFwiKTpWaT0nLy8gXCInLmNvbmNhdChqaS5uYW1lLCdcIjogJykuY29uY2F0KEpTT04uc3RyaW5naWZ5KE1yKGppKSksXCIsXCIpLE10LnB1c2goe3ZhbHVlOlZpLGRlc2NyaXB0aW9uOlwiLyogXCIuY29uY2F0KGppLmRlc2NyaXB0aW9uJiZlLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShqaS5kZXNjcmlwdGlvbil8fGppLm5hbWUsXCIgKi9cIil9KSxMaT1NYXRoLm1heChWaS5sZW5ndGgsTGkpfX0pO3ZhciB4dD1ncigyKSx1dD1bXTt1dC5wdXNoKFwie1wiKSx1dC5wdXNoKFwiXCIuY29uY2F0KHh0LCdcImNvbXBpbGVyT3B0aW9uc1wiOiB7JykpLHV0LnB1c2goXCJcIi5jb25jYXQoeHQpLmNvbmNhdCh4dCxcIi8qIFwiKS5jb25jYXQoZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5WaXNpdF9odHRwc19Db2xvbl9TbGFzaF9TbGFzaGFrYV9tc19TbGFzaHRzY29uZmlnX3RvX3JlYWRfbW9yZV9hYm91dF90aGlzX2ZpbGUpLFwiICovXCIpKSx1dC5wdXNoKFwiXCIpO2Zvcih2YXIgRHQ9MCxSdD1NdDtEdDxSdC5sZW5ndGg7RHQrKyl7dmFyIElpPVJ0W0R0XSxLaT1JaS52YWx1ZSxGaT1JaS5kZXNjcmlwdGlvbix1aT1GaT09PXZvaWQgMD9cIlwiOkZpO3V0LnB1c2goS2kmJlwiXCIuY29uY2F0KHh0KS5jb25jYXQoeHQpLmNvbmNhdChLaSkuY29uY2F0KHVpJiZncihMaS1LaS5sZW5ndGgrMikrdWkpKX1pZihVZS5sZW5ndGgpe3V0LnB1c2goXCJcIi5jb25jYXQoeHQsXCJ9LFwiKSksdXQucHVzaChcIlwiLmNvbmNhdCh4dCwnXCJmaWxlc1wiOiBbJykpO2Zvcih2YXIgQnQ9MDtCdDxVZS5sZW5ndGg7QnQrKyl1dC5wdXNoKFwiXCIuY29uY2F0KHh0KS5jb25jYXQoeHQpLmNvbmNhdChKU09OLnN0cmluZ2lmeShVZVtCdF0pKS5jb25jYXQoQnQ9PT1VZS5sZW5ndGgtMT9cIlwiOlwiLFwiKSk7dXQucHVzaChcIlwiLmNvbmNhdCh4dCxcIl1cIikpfWVsc2UgdXQucHVzaChcIlwiLmNvbmNhdCh4dCxcIn1cIikpO3JldHVybiB1dC5wdXNoKFwifVwiKSx1dC5qb2luKGZyKStmcn19ZS5nZW5lcmF0ZVRTQ29uZmlnPXdlO2Z1bmN0aW9uIGRlKFBlLFVlKXt2YXIgZnI9e30sRGU9USgpLm9wdGlvbnNOYW1lTWFwO2Zvcih2YXIgZ3IgaW4gUGUpZS5oYXNQcm9wZXJ0eShQZSxncikmJihmcltncl09eWUoRGUuZ2V0KGdyLnRvTG93ZXJDYXNlKCkpLFBlW2dyXSxVZSkpO3JldHVybiBmci5jb25maWdGaWxlUGF0aCYmKGZyLmNvbmZpZ0ZpbGVQYXRoPVVlKGZyLmNvbmZpZ0ZpbGVQYXRoKSksZnJ9ZS5jb252ZXJ0VG9PcHRpb25zV2l0aEFic29sdXRlUGF0aHM9ZGU7ZnVuY3Rpb24geWUoUGUsVWUsZnIpe2lmKFBlJiYhQ3IoVWUpKXtpZihQZS50eXBlPT09XCJsaXN0XCIpe3ZhciBEZT1VZTtpZihQZS5lbGVtZW50LmlzRmlsZVBhdGgmJkRlLmxlbmd0aClyZXR1cm4gRGUubWFwKGZyKX1lbHNlIGlmKFBlLmlzRmlsZVBhdGgpcmV0dXJuIGZyKFVlKX1yZXR1cm4gVWV9ZnVuY3Rpb24gQWUoUGUsVWUsZnIsRGUsZ3IsVnIsVHIsdmksVWkpe3JldHVybiBCcihQZSx2b2lkIDAsVWUsZnIsRGUsVWksZ3IsVnIsVHIsdmkpfWUucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQ9QWU7ZnVuY3Rpb24gZXIoUGUsVWUsZnIsRGUsZ3IsVnIsVHIsdmksVWkpe2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJwYXJzZVwiLFwicGFyc2VKc29uU291cmNlRmlsZUNvbmZpZ0ZpbGVDb250ZW50XCIse3BhdGg6UGUuZmlsZU5hbWV9KTt2YXIgWWk9QnIodm9pZCAwLFBlLFVlLGZyLERlLFVpLGdyLFZyLFRyLHZpKTtyZXR1cm4gZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucG9wKCksWWl9ZS5wYXJzZUpzb25Tb3VyY2VGaWxlQ29uZmlnRmlsZUNvbnRlbnQ9ZXI7ZnVuY3Rpb24gaXIoUGUsVWUpe1VlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoUGUsXCJjb25maWdGaWxlXCIse2VudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsdmFsdWU6VWV9KX1lLnNldENvbmZpZ0ZpbGVJbk9wdGlvbnM9aXI7ZnVuY3Rpb24gQ3IoUGUpe3JldHVybiBQZT09bnVsbH1mdW5jdGlvbiBZZShQZSxVZSl7cmV0dXJuIGUuZ2V0RGlyZWN0b3J5UGF0aChlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoUGUsVWUpKX1mdW5jdGlvbiBCcihQZSxVZSxmcixEZSxncixWcixUcix2aSxVaSxZaSl7Z3I9PT12b2lkIDAmJihncj17fSksdmk9PT12b2lkIDAmJih2aT1bXSksVWk9PT12b2lkIDAmJihVaT1bXSksZS5EZWJ1Zy5hc3NlcnQoUGU9PT12b2lkIDAmJlVlIT09dm9pZCAwfHxQZSE9PXZvaWQgMCYmVWU9PT12b2lkIDApO3ZhciBXaT1bXSxjdD11cihQZSxVZSxmcixEZSxUcix2aSxXaSxZaSksTGk9Y3QucmF3LG50PWUuZXh0ZW5kKGdyLGN0Lm9wdGlvbnN8fHt9KSxNdD1WciYmY3Qud2F0Y2hPcHRpb25zP2UuZXh0ZW5kKFZyLGN0LndhdGNoT3B0aW9ucyk6Y3Qud2F0Y2hPcHRpb25zfHxWcjtudC5jb25maWdGaWxlUGF0aD1UciYmZS5ub3JtYWxpemVTbGFzaGVzKFRyKTt2YXIgeHQ9RHQoKTtVZSYmKFVlLmNvbmZpZ0ZpbGVTcGVjcz14dCksaXIobnQsVWUpO3ZhciB1dD1lLm5vcm1hbGl6ZVBhdGgoVHI/WWUoVHIsRGUpOkRlKTtyZXR1cm57b3B0aW9uczpudCx3YXRjaE9wdGlvbnM6TXQsZmlsZU5hbWVzOlJ0KHV0KSxwcm9qZWN0UmVmZXJlbmNlczpJaSh1dCksdHlwZUFjcXVpc2l0aW9uOmN0LnR5cGVBY3F1aXNpdGlvbnx8c2koKSxyYXc6TGksZXJyb3JzOldpLHdpbGRjYXJkRGlyZWN0b3JpZXM6eGUoeHQsdXQsZnIudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyksY29tcGlsZU9uU2F2ZTohIUxpLmNvbXBpbGVPblNhdmV9O2Z1bmN0aW9uIER0KCl7dmFyIHd0PXVpKFwicmVmZXJlbmNlc1wiLGZ1bmN0aW9uKHBuKXtyZXR1cm4gdHlwZW9mIHBuPT1cIm9iamVjdFwifSxcIm9iamVjdFwiKSxuYT1LaShGaShcImZpbGVzXCIpKTtpZihuYSl7dmFyIEFpPXd0PT09XCJuby1wcm9wXCJ8fGUuaXNBcnJheSh3dCkmJnd0Lmxlbmd0aD09PTAsT2k9ZS5oYXNQcm9wZXJ0eShMaSxcImV4dGVuZHNcIik7aWYobmEubGVuZ3RoPT09MCYmQWkmJiFPaSlpZihVZSl7dmFyIGppPVRyfHxcInRzY29uZmlnLmpzb25cIixWaT1lLkRpYWdub3N0aWNzLlRoZV9maWxlc19saXN0X2luX2NvbmZpZ19maWxlXzBfaXNfZW1wdHksYXQ9ZS5maXJzdERlZmluZWQoZS5nZXRUc0NvbmZpZ1Byb3BBcnJheShVZSxcImZpbGVzXCIpLGZ1bmN0aW9uKHBuKXtyZXR1cm4gcG4uaW5pdGlhbGl6ZXJ9KSxBdD1hdD9lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFVlLGF0LFZpLGppKTplLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhWaSxqaSk7V2kucHVzaChBdCl9ZWxzZSBCdChlLkRpYWdub3N0aWNzLlRoZV9maWxlc19saXN0X2luX2NvbmZpZ19maWxlXzBfaXNfZW1wdHksVHJ8fFwidHNjb25maWcuanNvblwiKX12YXIgYmE9S2koRmkoXCJpbmNsdWRlXCIpKSwkYT1GaShcImV4Y2x1ZGVcIiksUWE9S2koJGEpO2lmKCRhPT09XCJuby1wcm9wXCImJkxpLmNvbXBpbGVyT3B0aW9ucyl7dmFyIGFpPUxpLmNvbXBpbGVyT3B0aW9ucy5vdXREaXIsRG49TGkuY29tcGlsZXJPcHRpb25zLmRlY2xhcmF0aW9uRGlyOyhhaXx8RG4pJiYoUWE9W2FpLERuXS5maWx0ZXIoZnVuY3Rpb24ocG4pe3JldHVybiEhcG59KSl9bmE9PT12b2lkIDAmJmJhPT09dm9pZCAwJiYoYmE9W1wiKiovKlwiXSk7dmFyIGthLEJhO3JldHVybiBiYSYmKGthPVdyKGJhLFdpLCEwLFVlLFwiaW5jbHVkZVwiKSksUWEmJihCYT1XcihRYSxXaSwhMSxVZSxcImV4Y2x1ZGVcIikpLHtmaWxlc1NwZWNzOm5hLGluY2x1ZGVTcGVjczpiYSxleGNsdWRlU3BlY3M6UWEsdmFsaWRhdGVkRmlsZXNTcGVjOmUuZmlsdGVyKG5hLGUuaXNTdHJpbmcpLHZhbGlkYXRlZEluY2x1ZGVTcGVjczprYSx2YWxpZGF0ZWRFeGNsdWRlU3BlY3M6QmEscGF0aFBhdHRlcm5zOnZvaWQgMH19ZnVuY3Rpb24gUnQod3Qpe3ZhciBuYT1Kcih4dCx3dCxudCxmcixVaSk7cmV0dXJuIG4obmEsbHIoTGkpLHZpKSYmV2kucHVzaChOZSh4dCxUcikpLG5hfWZ1bmN0aW9uIElpKHd0KXt2YXIgbmEsQWk9dWkoXCJyZWZlcmVuY2VzXCIsZnVuY3Rpb24oYXQpe3JldHVybiB0eXBlb2YgYXQ9PVwib2JqZWN0XCJ9LFwib2JqZWN0XCIpO2lmKGUuaXNBcnJheShBaSkpZm9yKHZhciBPaT0wLGppPUFpO09pPGppLmxlbmd0aDtPaSsrKXt2YXIgVmk9amlbT2ldO3R5cGVvZiBWaS5wYXRoIT1cInN0cmluZ1wiP0J0KGUuRGlhZ25vc3RpY3MuQ29tcGlsZXJfb3B0aW9uXzBfcmVxdWlyZXNfYV92YWx1ZV9vZl90eXBlXzEsXCJyZWZlcmVuY2UucGF0aFwiLFwic3RyaW5nXCIpOihuYXx8KG5hPVtdKSkucHVzaCh7cGF0aDplLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoVmkucGF0aCx3dCksb3JpZ2luYWxQYXRoOlZpLnBhdGgscHJlcGVuZDpWaS5wcmVwZW5kLGNpcmN1bGFyOlZpLmNpcmN1bGFyfSl9cmV0dXJuIG5hfWZ1bmN0aW9uIEtpKHd0KXtyZXR1cm4gZS5pc0FycmF5KHd0KT93dDp2b2lkIDB9ZnVuY3Rpb24gRmkod3Qpe3JldHVybiB1aSh3dCxlLmlzU3RyaW5nLFwic3RyaW5nXCIpfWZ1bmN0aW9uIHVpKHd0LG5hLEFpKXtpZihlLmhhc1Byb3BlcnR5KExpLHd0KSYmIUNyKExpW3d0XSkpaWYoZS5pc0FycmF5KExpW3d0XSkpe3ZhciBPaT1MaVt3dF07cmV0dXJuIVVlJiYhZS5ldmVyeShPaSxuYSkmJldpLnB1c2goZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoZS5EaWFnbm9zdGljcy5Db21waWxlcl9vcHRpb25fMF9yZXF1aXJlc19hX3ZhbHVlX29mX3R5cGVfMSx3dCxBaSkpLE9pfWVsc2UgcmV0dXJuIEJ0KGUuRGlhZ25vc3RpY3MuQ29tcGlsZXJfb3B0aW9uXzBfcmVxdWlyZXNfYV92YWx1ZV9vZl90eXBlXzEsd3QsXCJBcnJheVwiKSxcIm5vdC1hcnJheVwiO3JldHVyblwibm8tcHJvcFwifWZ1bmN0aW9uIEJ0KHd0LG5hLEFpKXtVZXx8V2kucHVzaChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyh3dCxuYSxBaSkpfX1mdW5jdGlvbiBFcihQZSl7cmV0dXJuIFBlLmNvZGU9PT1lLkRpYWdub3N0aWNzLk5vX2lucHV0c193ZXJlX2ZvdW5kX2luX2NvbmZpZ19maWxlXzBfU3BlY2lmaWVkX2luY2x1ZGVfcGF0aHNfd2VyZV8xX2FuZF9leGNsdWRlX3BhdGhzX3dlcmVfMi5jb2RlfWZ1bmN0aW9uIE5lKFBlLFVlKXt2YXIgZnI9UGUuaW5jbHVkZVNwZWNzLERlPVBlLmV4Y2x1ZGVTcGVjcztyZXR1cm4gZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoZS5EaWFnbm9zdGljcy5Ob19pbnB1dHNfd2VyZV9mb3VuZF9pbl9jb25maWdfZmlsZV8wX1NwZWNpZmllZF9pbmNsdWRlX3BhdGhzX3dlcmVfMV9hbmRfZXhjbHVkZV9wYXRoc193ZXJlXzIsVWV8fFwidHNjb25maWcuanNvblwiLEpTT04uc3RyaW5naWZ5KGZyfHxbXSksSlNPTi5zdHJpbmdpZnkoRGV8fFtdKSl9ZnVuY3Rpb24gbihQZSxVZSxmcil7cmV0dXJuIFBlLmxlbmd0aD09PTAmJlVlJiYoIWZyfHxmci5sZW5ndGg9PT0wKX1mdW5jdGlvbiBscihQZSl7cmV0dXJuIWUuaGFzUHJvcGVydHkoUGUsXCJmaWxlc1wiKSYmIWUuaGFzUHJvcGVydHkoUGUsXCJyZWZlcmVuY2VzXCIpfWUuY2FuSnNvblJlcG9ydE5vSW5wdXRGaWxlcz1scjtmdW5jdGlvbiBiZShQZSxVZSxmcixEZSxncil7dmFyIFZyPURlLmxlbmd0aDtyZXR1cm4gbihQZSxncik/RGUucHVzaChOZShmcixVZSkpOmUuZmlsdGVyTXV0YXRlKERlLGZ1bmN0aW9uKFRyKXtyZXR1cm4hRXIoVHIpfSksVnIhPT1EZS5sZW5ndGh9ZS51cGRhdGVFcnJvckZvck5vSW5wdXRGaWxlcz1iZTtmdW5jdGlvbiBHZShQZSl7cmV0dXJuISFQZS5vcHRpb25zfWZ1bmN0aW9uIHVyKFBlLFVlLGZyLERlLGdyLFZyLFRyLHZpKXt2YXIgVWk7RGU9ZS5ub3JtYWxpemVTbGFzaGVzKERlKTt2YXIgWWk9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGdyfHxcIlwiLERlKTtpZihWci5pbmRleE9mKFlpKT49MClyZXR1cm4gVHIucHVzaChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLkNpcmN1bGFyaXR5X2RldGVjdGVkX3doaWxlX3Jlc29sdmluZ19jb25maWd1cmF0aW9uX0NvbG9uXzAsVmUoVmUoW10sVnIsITApLFtZaV0sITEpLmpvaW4oXCIgLT4gXCIpKSkse3JhdzpQZXx8ZyhVZSxUcil9O3ZhciBXaT1QZT95cihQZSxmcixEZSxncixUcik6SXIoVWUsZnIsRGUsZ3IsVHIpO2lmKCEoKFVpPVdpLm9wdGlvbnMpPT09bnVsbHx8VWk9PT12b2lkIDApJiZVaS5wYXRocyYmKFdpLm9wdGlvbnMucGF0aHNCYXNlUGF0aD1EZSksV2kuZXh0ZW5kZWRDb25maWdQYXRoKXtWcj1Wci5jb25jYXQoW1lpXSk7dmFyIGN0PVVyKFVlLFdpLmV4dGVuZGVkQ29uZmlnUGF0aCxmcixWcixUcix2aSk7aWYoY3QmJkdlKGN0KSl7dmFyIExpPWN0LnJhdyxudD1XaS5yYXcsTXQseHQ9ZnVuY3Rpb24odXQpeyFudFt1dF0mJkxpW3V0XSYmKG50W3V0XT1lLm1hcChMaVt1dF0sZnVuY3Rpb24oRHQpe3JldHVybiBlLmlzUm9vdGVkRGlza1BhdGgoRHQpP0R0OmUuY29tYmluZVBhdGhzKE10fHwoTXQ9ZS5jb252ZXJ0VG9SZWxhdGl2ZVBhdGgoZS5nZXREaXJlY3RvcnlQYXRoKFdpLmV4dGVuZGVkQ29uZmlnUGF0aCksRGUsZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShmci51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKSkpLER0KX0pKX07eHQoXCJpbmNsdWRlXCIpLHh0KFwiZXhjbHVkZVwiKSx4dChcImZpbGVzXCIpLG50LmNvbXBpbGVPblNhdmU9PT12b2lkIDAmJihudC5jb21waWxlT25TYXZlPUxpLmNvbXBpbGVPblNhdmUpLFdpLm9wdGlvbnM9ZS5hc3NpZ24oe30sY3Qub3B0aW9ucyxXaS5vcHRpb25zKSxXaS53YXRjaE9wdGlvbnM9V2kud2F0Y2hPcHRpb25zJiZjdC53YXRjaE9wdGlvbnM/ZS5hc3NpZ24oe30sY3Qud2F0Y2hPcHRpb25zLFdpLndhdGNoT3B0aW9ucyk6V2kud2F0Y2hPcHRpb25zfHxjdC53YXRjaE9wdGlvbnN9fXJldHVybiBXaX1mdW5jdGlvbiB5cihQZSxVZSxmcixEZSxncil7ZS5oYXNQcm9wZXJ0eShQZSxcImV4Y2x1ZGVzXCIpJiZnci5wdXNoKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGUuRGlhZ25vc3RpY3MuVW5rbm93bl9vcHRpb25fZXhjbHVkZXNfRGlkX3lvdV9tZWFuX2V4Y2x1ZGUpKTt2YXIgVnI9cXIoUGUuY29tcGlsZXJPcHRpb25zLGZyLGdyLERlKSxUcj1EaShQZS50eXBlQWNxdWlzaXRpb258fFBlLnR5cGluZ09wdGlvbnMsZnIsZ3IsRGUpLHZpPXdpKFBlLndhdGNoT3B0aW9ucyxmcixncik7UGUuY29tcGlsZU9uU2F2ZT1paShQZSxmcixncik7dmFyIFVpO2lmKFBlLmV4dGVuZHMpaWYoIWUuaXNTdHJpbmcoUGUuZXh0ZW5kcykpZ3IucHVzaChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLkNvbXBpbGVyX29wdGlvbl8wX3JlcXVpcmVzX2FfdmFsdWVfb2ZfdHlwZV8xLFwiZXh0ZW5kc1wiLFwic3RyaW5nXCIpKTtlbHNle3ZhciBZaT1EZT9ZZShEZSxmcik6ZnI7VWk9d3IoUGUuZXh0ZW5kcyxVZSxZaSxncixlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyl9cmV0dXJue3JhdzpQZSxvcHRpb25zOlZyLHdhdGNoT3B0aW9uczp2aSx0eXBlQWNxdWlzaXRpb246VHIsZXh0ZW5kZWRDb25maWdQYXRoOlVpfX1mdW5jdGlvbiBJcihQZSxVZSxmcixEZSxncil7dmFyIFZyPW9yKERlKSxUcix2aSxVaSxZaSxXaSxjdD17b25TZXRWYWxpZE9wdGlvbktleVZhbHVlSW5QYXJlbnQ6ZnVuY3Rpb24obnQsTXQseHQpe3ZhciB1dDtzd2l0Y2gobnQpe2Nhc2VcImNvbXBpbGVyT3B0aW9uc1wiOnV0PVZyO2JyZWFrO2Nhc2VcIndhdGNoT3B0aW9uc1wiOnV0PVVpfHwoVWk9e30pO2JyZWFrO2Nhc2VcInR5cGVBY3F1aXNpdGlvblwiOnV0PVRyfHwoVHI9c2koRGUpKTticmVhaztjYXNlXCJ0eXBpbmdPcHRpb25zXCI6dXQ9dml8fCh2aT1zaShEZSkpO2JyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsKFwiVW5rbm93biBvcHRpb25cIil9dXRbTXQubmFtZV09R2koTXQsZnIseHQpfSxvblNldFZhbGlkT3B0aW9uS2V5VmFsdWVJblJvb3Q6ZnVuY3Rpb24obnQsTXQseHQsdXQpe3N3aXRjaChudCl7Y2FzZVwiZXh0ZW5kc1wiOnZhciBEdD1EZT9ZZShEZSxmcik6ZnI7WWk9d3IoeHQsVWUsRHQsZ3IsZnVuY3Rpb24oUnQsSWkpe3JldHVybiBlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFBlLHV0LFJ0LElpKX0pO3JldHVybn19LG9uU2V0VW5rbm93bk9wdGlvbktleVZhbHVlSW5Sb290OmZ1bmN0aW9uKG50LE10LHh0LHV0KXtudD09PVwiZXhjbHVkZXNcIiYmZ3IucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKFBlLE10LGUuRGlhZ25vc3RpY3MuVW5rbm93bl9vcHRpb25fZXhjbHVkZXNfRGlkX3lvdV9tZWFuX2V4Y2x1ZGUpKSxlLmZpbmQodyxmdW5jdGlvbihEdCl7cmV0dXJuIER0Lm5hbWU9PT1udH0pJiYoV2k9ZS5hcHBlbmQoV2ksTXQpKX19LExpPWZlKFBlLGdyLCEwLGN0KTtyZXR1cm4gVHJ8fCh2aT9Ucj12aS5lbmFibGVBdXRvRGlzY292ZXJ5IT09dm9pZCAwP3tlbmFibGU6dmkuZW5hYmxlQXV0b0Rpc2NvdmVyeSxpbmNsdWRlOnZpLmluY2x1ZGUsZXhjbHVkZTp2aS5leGNsdWRlfTp2aTpUcj1zaShEZSkpLFdpJiZMaSYmTGkuY29tcGlsZXJPcHRpb25zPT09dm9pZCAwJiZnci5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGUoUGUsV2lbMF0sZS5EaWFnbm9zdGljcy5fMF9zaG91bGRfYmVfc2V0X2luc2lkZV90aGVfY29tcGlsZXJPcHRpb25zX29iamVjdF9vZl90aGVfY29uZmlnX2pzb25fZmlsZSxlLmdldFRleHRPZlByb3BlcnR5TmFtZShXaVswXSkpKSx7cmF3OkxpLG9wdGlvbnM6VnIsd2F0Y2hPcHRpb25zOlVpLHR5cGVBY3F1aXNpdGlvbjpUcixleHRlbmRlZENvbmZpZ1BhdGg6WWl9fWZ1bmN0aW9uIHdyKFBlLFVlLGZyLERlLGdyKXtpZihQZT1lLm5vcm1hbGl6ZVNsYXNoZXMoUGUpLGUuaXNSb290ZWREaXNrUGF0aChQZSl8fGUuc3RhcnRzV2l0aChQZSxcIi4vXCIpfHxlLnN0YXJ0c1dpdGgoUGUsXCIuLi9cIikpe3ZhciBWcj1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoUGUsZnIpO2lmKCFVZS5maWxlRXhpc3RzKFZyKSYmIWUuZW5kc1dpdGgoVnIsXCIuanNvblwiKSYmKFZyPVwiXCIuY29uY2F0KFZyLFwiLmpzb25cIiksIVVlLmZpbGVFeGlzdHMoVnIpKSl7RGUucHVzaChncihlLkRpYWdub3N0aWNzLkZpbGVfMF9ub3RfZm91bmQsUGUpKTtyZXR1cm59cmV0dXJuIFZyfXZhciBUcj1lLm5vZGVNb2R1bGVOYW1lUmVzb2x2ZXIoUGUsZS5jb21iaW5lUGF0aHMoZnIsXCJ0c2NvbmZpZy5qc29uXCIpLHttb2R1bGVSZXNvbHV0aW9uOmUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzfSxVZSx2b2lkIDAsdm9pZCAwLCEwKTtpZihUci5yZXNvbHZlZE1vZHVsZSlyZXR1cm4gVHIucmVzb2x2ZWRNb2R1bGUucmVzb2x2ZWRGaWxlTmFtZTtEZS5wdXNoKGdyKGUuRGlhZ25vc3RpY3MuRmlsZV8wX25vdF9mb3VuZCxQZSkpfWZ1bmN0aW9uIFVyKFBlLFVlLGZyLERlLGdyLFZyKXt2YXIgVHIsdmk9ZnIudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcz9VZTplLnRvRmlsZU5hbWVMb3dlckNhc2UoVWUpLFVpLFlpLFdpO2lmKFZyJiYoVWk9VnIuZ2V0KHZpKSk/KFlpPVVpLmV4dGVuZGVkUmVzdWx0LFdpPVVpLmV4dGVuZGVkQ29uZmlnKTooWWk9JChVZSxmdW5jdGlvbihjdCl7cmV0dXJuIGZyLnJlYWRGaWxlKGN0KX0pLFlpLnBhcnNlRGlhZ25vc3RpY3MubGVuZ3RofHwoV2k9dXIodm9pZCAwLFlpLGZyLGUuZ2V0RGlyZWN0b3J5UGF0aChVZSksZS5nZXRCYXNlRmlsZU5hbWUoVWUpLERlLGdyLFZyKSksVnImJlZyLnNldCh2aSx7ZXh0ZW5kZWRSZXN1bHQ6WWksZXh0ZW5kZWRDb25maWc6V2l9KSksUGUmJihQZS5leHRlbmRlZFNvdXJjZUZpbGVzPVtZaS5maWxlTmFtZV0sWWkuZXh0ZW5kZWRTb3VyY2VGaWxlcyYmKFRyPVBlLmV4dGVuZGVkU291cmNlRmlsZXMpLnB1c2guYXBwbHkoVHIsWWkuZXh0ZW5kZWRTb3VyY2VGaWxlcykpLFlpLnBhcnNlRGlhZ25vc3RpY3MubGVuZ3RoKXtnci5wdXNoLmFwcGx5KGdyLFlpLnBhcnNlRGlhZ25vc3RpY3MpO3JldHVybn1yZXR1cm4gV2l9ZnVuY3Rpb24gaWkoUGUsVWUsZnIpe2lmKCFlLmhhc1Byb3BlcnR5KFBlLGUuY29tcGlsZU9uU2F2ZUNvbW1hbmRMaW5lT3B0aW9uLm5hbWUpKXJldHVybiExO3ZhciBEZT1ldChlLmNvbXBpbGVPblNhdmVDb21tYW5kTGluZU9wdGlvbixQZS5jb21waWxlT25TYXZlLFVlLGZyKTtyZXR1cm4gdHlwZW9mIERlPT1cImJvb2xlYW5cIiYmRGV9ZnVuY3Rpb24gbWkoUGUsVWUsZnIpe3ZhciBEZT1bXSxncj1xcihQZSxVZSxEZSxmcik7cmV0dXJue29wdGlvbnM6Z3IsZXJyb3JzOkRlfX1lLmNvbnZlcnRDb21waWxlck9wdGlvbnNGcm9tSnNvbj1taTtmdW5jdGlvbiBwZShQZSxVZSxmcil7dmFyIERlPVtdLGdyPURpKFBlLFVlLERlLGZyKTtyZXR1cm57b3B0aW9uczpncixlcnJvcnM6RGV9fWUuY29udmVydFR5cGVBY3F1aXNpdGlvbkZyb21Kc29uPXBlO2Z1bmN0aW9uIG9yKFBlKXt2YXIgVWU9UGUmJmUuZ2V0QmFzZUZpbGVOYW1lKFBlKT09PVwianNjb25maWcuanNvblwiP3thbGxvd0pzOiEwLG1heE5vZGVNb2R1bGVKc0RlcHRoOjIsYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czohMCxza2lwTGliQ2hlY2s6ITAsbm9FbWl0OiEwfTp7fTtyZXR1cm4gVWV9ZnVuY3Rpb24gcXIoUGUsVWUsZnIsRGUpe3ZhciBncj1vcihEZSk7cmV0dXJuIFhpKFUoKSxQZSxVZSxncixlLmNvbXBpbGVyT3B0aW9uc0RpZFlvdU1lYW5EaWFnbm9zdGljcyxmciksRGUmJihnci5jb25maWdGaWxlUGF0aD1lLm5vcm1hbGl6ZVNsYXNoZXMoRGUpKSxncn1mdW5jdGlvbiBzaShQZSl7cmV0dXJue2VuYWJsZTohIVBlJiZlLmdldEJhc2VGaWxlTmFtZShQZSk9PT1cImpzY29uZmlnLmpzb25cIixpbmNsdWRlOltdLGV4Y2x1ZGU6W119fWZ1bmN0aW9uIERpKFBlLFVlLGZyLERlKXt2YXIgZ3I9c2koRGUpLFZyPU4oUGUpO3JldHVybiBYaShsKCksVnIsVWUsZ3IsVixmciksZ3J9ZnVuY3Rpb24gd2koUGUsVWUsZnIpe3JldHVybiBYaShIKCksUGUsVWUsdm9pZCAwLGssZnIpfWZ1bmN0aW9uIFhpKFBlLFVlLGZyLERlLGdyLFZyKXtpZighIVVlKXtmb3IodmFyIFRyIGluIFVlKXt2YXIgdmk9UGUuZ2V0KFRyKTt2aT8oRGV8fChEZT17fSkpW3ZpLm5hbWVdPWV0KHZpLFVlW1RyXSxmcixWcik6VnIucHVzaChUKFRyLGdyLGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKSl9cmV0dXJuIERlfX1mdW5jdGlvbiBldChQZSxVZSxmcixEZSl7aWYoV2UoUGUsVWUpKXt2YXIgZ3I9UGUudHlwZTtpZihncj09PVwibGlzdFwiJiZlLmlzQXJyYXkoVWUpKXJldHVybiBwaShQZSxVZSxmcixEZSk7aWYoIWUuaXNTdHJpbmcoZ3IpKXJldHVybiBfcihQZSxVZSxEZSk7dmFyIFZyPVp0KFBlLFVlLERlKTtyZXR1cm4gQ3IoVnIpP1ZyOld0KFBlLGZyLFZyKX1lbHNlIERlLnB1c2goZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoZS5EaWFnbm9zdGljcy5Db21waWxlcl9vcHRpb25fMF9yZXF1aXJlc19hX3ZhbHVlX29mX3R5cGVfMSxQZS5uYW1lLHVlKFBlKSkpfWUuY29udmVydEpzb25PcHRpb249ZXQ7ZnVuY3Rpb24gR2koUGUsVWUsZnIpe2lmKCFDcihmcikpe2lmKFBlLnR5cGU9PT1cImxpc3RcIil7dmFyIERlPVBlO3JldHVybiBEZS5lbGVtZW50LmlzRmlsZVBhdGh8fCFlLmlzU3RyaW5nKERlLmVsZW1lbnQudHlwZSk/ZS5maWx0ZXIoZS5tYXAoZnIsZnVuY3Rpb24oZ3Ipe3JldHVybiBHaShEZS5lbGVtZW50LFVlLGdyKX0pLGZ1bmN0aW9uKGdyKXtyZXR1cm4gRGUubGlzdFByZXNlcnZlRmFsc3lWYWx1ZXM/ITA6ISFncn0pOmZyfWVsc2UgaWYoIWUuaXNTdHJpbmcoUGUudHlwZSkpcmV0dXJuIFBlLnR5cGUuZ2V0KGUuaXNTdHJpbmcoZnIpP2ZyLnRvTG93ZXJDYXNlKCk6ZnIpO3JldHVybiBXdChQZSxVZSxmcil9fWZ1bmN0aW9uIFd0KFBlLFVlLGZyKXtyZXR1cm4gUGUuaXNGaWxlUGF0aCYmKGZyPWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChmcixVZSksZnI9PT1cIlwiJiYoZnI9XCIuXCIpKSxmcn1mdW5jdGlvbiBadChQZSxVZSxmcil7dmFyIERlO2lmKCFDcihVZSkpe3ZhciBncj0oRGU9UGUuZXh0cmFWYWxpZGF0aW9uKT09PW51bGx8fERlPT09dm9pZCAwP3ZvaWQgMDpEZS5jYWxsKFBlLFVlKTtpZighZ3IpcmV0dXJuIFVlO2ZyLnB1c2goZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMuYXBwbHkodm9pZCAwLGdyKSl9fWZ1bmN0aW9uIF9yKFBlLFVlLGZyKXtpZighQ3IoVWUpKXt2YXIgRGU9VWUudG9Mb3dlckNhc2UoKSxncj1QZS50eXBlLmdldChEZSk7aWYoZ3IhPT12b2lkIDApcmV0dXJuIFp0KFBlLGdyLGZyKTtmci5wdXNoKHAoUGUpKX19ZnVuY3Rpb24gcGkoUGUsVWUsZnIsRGUpe3JldHVybiBlLmZpbHRlcihlLm1hcChVZSxmdW5jdGlvbihncil7cmV0dXJuIGV0KFBlLmVsZW1lbnQsZ3IsZnIsRGUpfSksZnVuY3Rpb24oZ3Ipe3JldHVybiBQZS5saXN0UHJlc2VydmVGYWxzeVZhbHVlcz8hMDohIWdyfSl9dmFyIGFlPS8oXnxcXC8pXFwqXFwqXFwvPyQvLFhlPS9eW14qP10qKD89XFwvW14vXSpbKj9dKS87ZnVuY3Rpb24gSnIoUGUsVWUsZnIsRGUsZ3Ipe2dyPT09dm9pZCAwJiYoZ3I9ZS5lbXB0eUFycmF5KSxVZT1lLm5vcm1hbGl6ZVBhdGgoVWUpO3ZhciBWcj1lLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKERlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMpLFRyPW5ldyBlLk1hcCx2aT1uZXcgZS5NYXAsVWk9bmV3IGUuTWFwLFlpPVBlLnZhbGlkYXRlZEZpbGVzU3BlYyxXaT1QZS52YWxpZGF0ZWRJbmNsdWRlU3BlY3MsY3Q9UGUudmFsaWRhdGVkRXhjbHVkZVNwZWNzLExpPWUuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyhmcixnciksbnQ9ZS5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zV2l0aEpzb25JZlJlc29sdmVKc29uTW9kdWxlKGZyLExpKTtpZihZaSlmb3IodmFyIE10PTAseHQ9WWk7TXQ8eHQubGVuZ3RoO010Kyspe3ZhciB1dD14dFtNdF0sRHQ9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKHV0LFVlKTtUci5zZXQoVnIoRHQpLER0KX12YXIgUnQ7aWYoV2kmJldpLmxlbmd0aD4wKWZvcih2YXIgSWk9ZnVuY3Rpb24od3Qpe2lmKGUuZmlsZUV4dGVuc2lvbklzKHd0LFwiLmpzb25cIikpe2lmKCFSdCl7dmFyIG5hPVdpLmZpbHRlcihmdW5jdGlvbihhdCl7cmV0dXJuIGUuZW5kc1dpdGgoYXQsXCIuanNvblwiKX0pLEFpPWUubWFwKGUuZ2V0UmVndWxhckV4cHJlc3Npb25zRm9yV2lsZGNhcmRzKG5hLFVlLFwiZmlsZXNcIiksZnVuY3Rpb24oYXQpe3JldHVyblwiXlwiLmNvbmNhdChhdCxcIiRcIil9KTtSdD1BaT9BaS5tYXAoZnVuY3Rpb24oYXQpe3JldHVybiBlLmdldFJlZ2V4RnJvbVBhdHRlcm4oYXQsRGUudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyl9KTplLmVtcHR5QXJyYXl9dmFyIE9pPWUuZmluZEluZGV4KFJ0LGZ1bmN0aW9uKGF0KXtyZXR1cm4gYXQudGVzdCh3dCl9KTtpZihPaSE9PS0xKXt2YXIgamk9VnIod3QpOyFUci5oYXMoamkpJiYhVWkuaGFzKGppKSYmVWkuc2V0KGppLHd0KX1yZXR1cm5cImNvbnRpbnVlXCJ9aWYobXIod3QsVHIsdmksTGksVnIpKXJldHVyblwiY29udGludWVcIjtBcih3dCx2aSxMaSxWcik7dmFyIFZpPVZyKHd0KTshVHIuaGFzKFZpKSYmIXZpLmhhcyhWaSkmJnZpLnNldChWaSx3dCl9LEtpPTAsRmk9RGUucmVhZERpcmVjdG9yeShVZSxlLmZsYXR0ZW4obnQpLGN0LFdpLHZvaWQgMCk7S2k8RmkubGVuZ3RoO0tpKyspe3ZhciBEdD1GaVtLaV07SWkoRHQpfXZhciB1aT1lLmFycmF5RnJvbShUci52YWx1ZXMoKSksQnQ9ZS5hcnJheUZyb20odmkudmFsdWVzKCkpO3JldHVybiB1aS5jb25jYXQoQnQsZS5hcnJheUZyb20oVWkudmFsdWVzKCkpKX1lLmdldEZpbGVOYW1lc0Zyb21Db25maWdTcGVjcz1KcjtmdW5jdGlvbiB0aShQZSxVZSxmcixEZSxncil7dmFyIFZyPVVlLnZhbGlkYXRlZEZpbGVzU3BlYyxUcj1VZS52YWxpZGF0ZWRJbmNsdWRlU3BlY3Msdmk9VWUudmFsaWRhdGVkRXhjbHVkZVNwZWNzO2lmKCFlLmxlbmd0aChUcil8fCFlLmxlbmd0aCh2aSkpcmV0dXJuITE7ZnI9ZS5ub3JtYWxpemVQYXRoKGZyKTt2YXIgVWk9ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShEZSk7aWYoVnIpZm9yKHZhciBZaT0wLFdpPVZyO1lpPFdpLmxlbmd0aDtZaSsrKXt2YXIgY3Q9V2lbWWldO2lmKFVpKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChjdCxmcikpPT09UGUpcmV0dXJuITF9cmV0dXJuIHpyKFBlLHZpLERlLGdyLGZyKX1lLmlzRXhjbHVkZWRGaWxlPXRpO2Z1bmN0aW9uIFplKFBlKXt2YXIgVWU9ZS5zdGFydHNXaXRoKFBlLFwiKiovXCIpPzA6UGUuaW5kZXhPZihcIi8qKi9cIik7aWYoVWU9PT0tMSlyZXR1cm4hMTt2YXIgZnI9ZS5lbmRzV2l0aChQZSxcIi8uLlwiKT9QZS5sZW5ndGg6UGUubGFzdEluZGV4T2YoXCIvLi4vXCIpO3JldHVybiBmcj5VZX1mdW5jdGlvbiBTcihQZSxVZSxmcixEZSl7cmV0dXJuIHpyKFBlLGUuZmlsdGVyKFVlLGZ1bmN0aW9uKGdyKXtyZXR1cm4hWmUoZ3IpfSksZnIsRGUpfWUubWF0Y2hlc0V4Y2x1ZGU9U3I7ZnVuY3Rpb24genIoUGUsVWUsZnIsRGUsZ3Ipe3ZhciBWcj1lLmdldFJlZ3VsYXJFeHByZXNzaW9uRm9yV2lsZGNhcmQoVWUsZS5jb21iaW5lUGF0aHMoZS5ub3JtYWxpemVQYXRoKERlKSxnciksXCJleGNsdWRlXCIpLFRyPVZyJiZlLmdldFJlZ2V4RnJvbVBhdHRlcm4oVnIsZnIpO3JldHVybiBUcj9Uci50ZXN0KFBlKT8hMDohZS5oYXNFeHRlbnNpb24oUGUpJiZUci50ZXN0KGUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoUGUpKTohMX1mdW5jdGlvbiBXcihQZSxVZSxmcixEZSxncil7cmV0dXJuIFBlLmZpbHRlcihmdW5jdGlvbihUcil7aWYoIWUuaXNTdHJpbmcoVHIpKXJldHVybiExO3ZhciB2aT1KZShUcixmcik7cmV0dXJuIHZpIT09dm9pZCAwJiZVZS5wdXNoKFZyLmFwcGx5KHZvaWQgMCx2aSkpLHZpPT09dm9pZCAwfSk7ZnVuY3Rpb24gVnIoVHIsdmkpe3ZhciBVaT1lLmdldFRzQ29uZmlnUHJvcEFycmF5RWxlbWVudFZhbHVlKERlLGdyLHZpKTtyZXR1cm4gVWk/ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUluU291cmNlRmlsZShEZSxVaSxUcix2aSk6ZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoVHIsdmkpfX1mdW5jdGlvbiBKZShQZSxVZSl7aWYoVWUmJmFlLnRlc3QoUGUpKXJldHVybltlLkRpYWdub3N0aWNzLkZpbGVfc3BlY2lmaWNhdGlvbl9jYW5ub3RfZW5kX2luX2FfcmVjdXJzaXZlX2RpcmVjdG9yeV93aWxkY2FyZF9Bc3Rlcmlza19Bc3Rlcmlza19Db2xvbl8wLFBlXTtpZihaZShQZSkpcmV0dXJuW2UuRGlhZ25vc3RpY3MuRmlsZV9zcGVjaWZpY2F0aW9uX2Nhbm5vdF9jb250YWluX2FfcGFyZW50X2RpcmVjdG9yeV90aGF0X2FwcGVhcnNfYWZ0ZXJfYV9yZWN1cnNpdmVfZGlyZWN0b3J5X3dpbGRjYXJkX0FzdGVyaXNrX0FzdGVyaXNrX0NvbG9uXzAsUGVdfWZ1bmN0aW9uIHhlKFBlLFVlLGZyKXt2YXIgRGU9UGUudmFsaWRhdGVkSW5jbHVkZVNwZWNzLGdyPVBlLnZhbGlkYXRlZEV4Y2x1ZGVTcGVjcyxWcj1lLmdldFJlZ3VsYXJFeHByZXNzaW9uRm9yV2lsZGNhcmQoZ3IsVWUsXCJleGNsdWRlXCIpLFRyPVZyJiZuZXcgUmVnRXhwKFZyLGZyP1wiXCI6XCJpXCIpLHZpPXt9O2lmKERlIT09dm9pZCAwKXtmb3IodmFyIFVpPVtdLFlpPTAsV2k9RGU7WWk8V2kubGVuZ3RoO1lpKyspe3ZhciBjdD1XaVtZaV0sTGk9ZS5ub3JtYWxpemVQYXRoKGUuY29tYmluZVBhdGhzKFVlLGN0KSk7aWYoIShUciYmVHIudGVzdChMaSkpKXt2YXIgbnQ9dnIoTGksZnIpO2lmKG50KXt2YXIgTXQ9bnQua2V5LHh0PW50LmZsYWdzLHV0PXZpW010XTsodXQ9PT12b2lkIDB8fHV0PHh0KSYmKHZpW010XT14dCx4dD09PTEmJlVpLnB1c2goTXQpKX19fWZvcih2YXIgTXQgaW4gdmkpaWYoZS5oYXNQcm9wZXJ0eSh2aSxNdCkpZm9yKHZhciBEdD0wLFJ0PVVpO0R0PFJ0Lmxlbmd0aDtEdCsrKXt2YXIgSWk9UnRbRHRdO010IT09SWkmJmUuY29udGFpbnNQYXRoKElpLE10LFVlLCFmcikmJmRlbGV0ZSB2aVtNdF19fXJldHVybiB2aX1mdW5jdGlvbiB2cihQZSxVZSl7dmFyIGZyPVhlLmV4ZWMoUGUpO2lmKGZyKXt2YXIgRGU9UGUuaW5kZXhPZihcIj9cIiksZ3I9UGUuaW5kZXhPZihcIipcIiksVnI9UGUubGFzdEluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IpO3JldHVybntrZXk6VWU/ZnJbMF06ZS50b0ZpbGVOYW1lTG93ZXJDYXNlKGZyWzBdKSxmbGFnczpEZSE9PS0xJiZEZTxWcnx8Z3IhPT0tMSYmZ3I8VnI/MTowfX1pZihlLmlzSW1wbGljaXRHbG9iKFBlLnN1YnN0cmluZyhQZS5sYXN0SW5kZXhPZihlLmRpcmVjdG9yeVNlcGFyYXRvcikrMSkpKXJldHVybntrZXk6VWU/UGU6ZS50b0ZpbGVOYW1lTG93ZXJDYXNlKFBlKSxmbGFnczoxfX1mdW5jdGlvbiBtcihQZSxVZSxmcixEZSxncil7dmFyIFZyPWUuZm9yRWFjaChEZSxmdW5jdGlvbihXaSl7cmV0dXJuIGUuZmlsZUV4dGVuc2lvbklzT25lT2YoUGUsV2kpP1dpOnZvaWQgMH0pO2lmKCFWcilyZXR1cm4hMTtmb3IodmFyIFRyPTAsdmk9VnI7VHI8dmkubGVuZ3RoO1RyKyspe3ZhciBVaT12aVtUcl07aWYoZS5maWxlRXh0ZW5zaW9uSXMoUGUsVWkpKXJldHVybiExO3ZhciBZaT1ncihlLmNoYW5nZUV4dGVuc2lvbihQZSxVaSkpO2lmKFVlLmhhcyhZaSl8fGZyLmhhcyhZaSkpe2lmKFVpPT09XCIuZC50c1wiJiYoZS5maWxlRXh0ZW5zaW9uSXMoUGUsXCIuanNcIil8fGUuZmlsZUV4dGVuc2lvbklzKFBlLFwiLmpzeFwiKSkpY29udGludWU7cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIEFyKFBlLFVlLGZyLERlKXt2YXIgZ3I9ZS5mb3JFYWNoKGZyLGZ1bmN0aW9uKFVpKXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihQZSxVaSk/VWk6dm9pZCAwfSk7aWYoISFncilmb3IodmFyIFZyPWdyLmxlbmd0aC0xO1ZyPj0wO1ZyLS0pe3ZhciBUcj1ncltWcl07aWYoZS5maWxlRXh0ZW5zaW9uSXMoUGUsVHIpKXJldHVybjt2YXIgdmk9RGUoZS5jaGFuZ2VFeHRlbnNpb24oUGUsVHIpKTtVZS5kZWxldGUodmkpfX1mdW5jdGlvbiBPZShQZSl7dmFyIFVlPXt9O2Zvcih2YXIgZnIgaW4gUGUpaWYoUGUuaGFzT3duUHJvcGVydHkoZnIpKXt2YXIgRGU9Sihmcik7RGUhPT12b2lkIDAmJihVZVtmcl09bnIoUGVbZnJdLERlKSl9cmV0dXJuIFVlfWUuY29udmVydENvbXBpbGVyT3B0aW9uc0ZvclRlbGVtZXRyeT1PZTtmdW5jdGlvbiBucihQZSxVZSl7c3dpdGNoKFVlLnR5cGUpe2Nhc2VcIm9iamVjdFwiOnJldHVyblwiXCI7Y2FzZVwic3RyaW5nXCI6cmV0dXJuXCJcIjtjYXNlXCJudW1iZXJcIjpyZXR1cm4gdHlwZW9mIFBlPT1cIm51bWJlclwiP1BlOlwiXCI7Y2FzZVwiYm9vbGVhblwiOnJldHVybiB0eXBlb2YgUGU9PVwiYm9vbGVhblwiP1BlOlwiXCI7Y2FzZVwibGlzdFwiOnZhciBmcj1VZS5lbGVtZW50O3JldHVybiBlLmlzQXJyYXkoUGUpP1BlLm1hcChmdW5jdGlvbihEZSl7cmV0dXJuIG5yKERlLGZyKX0pOlwiXCI7ZGVmYXVsdDpyZXR1cm4gZS5mb3JFYWNoRW50cnkoVWUudHlwZSxmdW5jdGlvbihEZSxncil7aWYoRGU9PT1QZSlyZXR1cm4gZ3J9KX19ZnVuY3Rpb24gTXIoUGUpe3N3aXRjaChQZS50eXBlKXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gMTtjYXNlXCJib29sZWFuXCI6cmV0dXJuITA7Y2FzZVwic3RyaW5nXCI6dmFyIFVlPVBlLmRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uO3JldHVybiBQZS5pc0ZpbGVQYXRoP1wiLi9cIi5jb25jYXQoVWUmJnR5cGVvZiBVZT09XCJzdHJpbmdcIj9VZTpcIlwiKTpcIlwiO2Nhc2VcImxpc3RcIjpyZXR1cm5bXTtjYXNlXCJvYmplY3RcIjpyZXR1cm57fTtkZWZhdWx0OnZhciBmcj1QZS50eXBlLmtleXMoKS5uZXh0KCk7cmV0dXJuIGZyLmRvbmU/ZS5EZWJ1Zy5mYWlsKFwiRXhwZWN0ZWQgJ29wdGlvbi50eXBlJyB0byBoYXZlIGVudHJpZXMuXCIpOmZyLnZhbHVlfX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKFplKXtaZS50cmFjZShlLmZvcm1hdE1lc3NhZ2UuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfWUudHJhY2U9YTtmdW5jdGlvbiBDKFplLFNyKXtyZXR1cm4hIVplLnRyYWNlUmVzb2x1dGlvbiYmU3IudHJhY2UhPT12b2lkIDB9ZS5pc1RyYWNlRW5hYmxlZD1DO2Z1bmN0aW9uIHcoWmUsU3Ipe3ZhciB6cjtpZihTciYmWmUpe3ZhciBXcj1aZS5wYWNrYWdlSnNvbkNvbnRlbnQ7dHlwZW9mIFdyLm5hbWU9PVwic3RyaW5nXCImJnR5cGVvZiBXci52ZXJzaW9uPT1cInN0cmluZ1wiJiYoenI9e25hbWU6V3IubmFtZSxzdWJNb2R1bGVOYW1lOlNyLnBhdGguc2xpY2UoWmUucGFja2FnZURpcmVjdG9yeS5sZW5ndGgrZS5kaXJlY3RvcnlTZXBhcmF0b3IubGVuZ3RoKSx2ZXJzaW9uOldyLnZlcnNpb259KX1yZXR1cm4gU3ImJntwYXRoOlNyLnBhdGgsZXh0ZW5zaW9uOlNyLmV4dCxwYWNrYWdlSWQ6enJ9fWZ1bmN0aW9uIEIoWmUpe3JldHVybiB3KHZvaWQgMCxaZSl9ZnVuY3Rpb24gRShaZSl7aWYoWmUpcmV0dXJuIGUuRGVidWcuYXNzZXJ0KFplLnBhY2thZ2VJZD09PXZvaWQgMCkse3BhdGg6WmUucGF0aCxleHQ6WmUuZXh0ZW5zaW9ufX12YXIgUTsoZnVuY3Rpb24oWmUpe1plW1plLlR5cGVTY3JpcHQ9MF09XCJUeXBlU2NyaXB0XCIsWmVbWmUuSmF2YVNjcmlwdD0xXT1cIkphdmFTY3JpcHRcIixaZVtaZS5Kc29uPTJdPVwiSnNvblwiLFplW1plLlRTQ29uZmlnPTNdPVwiVFNDb25maWdcIixaZVtaZS5EdHNPbmx5PTRdPVwiRHRzT25seVwiLFplW1plLlRzT25seT01XT1cIlRzT25seVwifSkoUXx8KFE9e30pKTtmdW5jdGlvbiBsZShaZSl7aWYoISFaZSlyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoZS5leHRlbnNpb25Jc1RTKFplLmV4dGVuc2lvbikpLHtmaWxlTmFtZTpaZS5wYXRoLHBhY2thZ2VJZDpaZS5wYWNrYWdlSWR9fWZ1bmN0aW9uIE4oWmUsU3IsenIsV3IsSmUpe3ZhciB4ZTtyZXR1cm4gSmU/KCh4ZT1KZS5mYWlsZWRMb29rdXBMb2NhdGlvbnMpLnB1c2guYXBwbHkoeGUsenIpLEplKTp7cmVzb2x2ZWRNb2R1bGU6WmUmJntyZXNvbHZlZEZpbGVOYW1lOlplLnBhdGgsb3JpZ2luYWxQYXRoOlplLm9yaWdpbmFsUGF0aD09PSEwP3ZvaWQgMDpaZS5vcmlnaW5hbFBhdGgsZXh0ZW5zaW9uOlplLmV4dGVuc2lvbixpc0V4dGVybmFsTGlicmFyeUltcG9ydDpTcixwYWNrYWdlSWQ6WmUucGFja2FnZUlkfSxmYWlsZWRMb29rdXBMb2NhdGlvbnM6enIscmVzb2x1dGlvbkRpYWdub3N0aWNzOldyfX1mdW5jdGlvbiBwKFplLFNyLHpyLFdyKXtpZighZS5oYXNQcm9wZXJ0eShaZSxTcikpe1dyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MucGFja2FnZV9qc29uX2RvZXNfbm90X2hhdmVfYV8wX2ZpZWxkLFNyKTtyZXR1cm59dmFyIEplPVplW1NyXTtpZih0eXBlb2YgSmUhPT16cnx8SmU9PT1udWxsKXtXci50cmFjZUVuYWJsZWQmJmEoV3IuaG9zdCxlLkRpYWdub3N0aWNzLkV4cGVjdGVkX3R5cGVfb2ZfMF9maWVsZF9pbl9wYWNrYWdlX2pzb25fdG9fYmVfMV9nb3RfMixTcix6cixKZT09PW51bGw/XCJudWxsXCI6dHlwZW9mIEplKTtyZXR1cm59cmV0dXJuIEplfWZ1bmN0aW9uIG0oWmUsU3IsenIsV3Ipe3ZhciBKZT1wKFplLFNyLFwic3RyaW5nXCIsV3IpO2lmKEplIT09dm9pZCAwKXtpZighSmUpe1dyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MucGFja2FnZV9qc29uX2hhZF9hX2ZhbHN5XzBfZmllbGQsU3IpO3JldHVybn12YXIgeGU9ZS5ub3JtYWxpemVQYXRoKGUuY29tYmluZVBhdGhzKHpyLEplKSk7cmV0dXJuIFdyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MucGFja2FnZV9qc29uX2hhc18wX2ZpZWxkXzFfdGhhdF9yZWZlcmVuY2VzXzIsU3IsSmUseGUpLHhlfX1mdW5jdGlvbiBHKFplLFNyLHpyKXtyZXR1cm4gbShaZSxcInR5cGluZ3NcIixTcix6cil8fG0oWmUsXCJ0eXBlc1wiLFNyLHpyKX1mdW5jdGlvbiBvZShaZSxTcix6cil7cmV0dXJuIG0oWmUsXCJ0c2NvbmZpZ1wiLFNyLHpyKX1mdW5jdGlvbiBmKFplLFNyLHpyKXtyZXR1cm4gbShaZSxcIm1haW5cIixTcix6cil9ZnVuY3Rpb24gVChaZSxTcil7dmFyIHpyPXAoWmUsXCJ0eXBlc1ZlcnNpb25zXCIsXCJvYmplY3RcIixTcik7aWYoenIhPT12b2lkIDApcmV0dXJuIFNyLnRyYWNlRW5hYmxlZCYmYShTci5ob3N0LGUuRGlhZ25vc3RpY3MucGFja2FnZV9qc29uX2hhc19hX3R5cGVzVmVyc2lvbnNfZmllbGRfd2l0aF92ZXJzaW9uX3NwZWNpZmljX3BhdGhfbWFwcGluZ3MpLHpyfWZ1bmN0aW9uIEsoWmUsU3Ipe3ZhciB6cj1UKFplLFNyKTtpZih6ciE9PXZvaWQgMCl7aWYoU3IudHJhY2VFbmFibGVkKWZvcih2YXIgV3IgaW4genIpZS5oYXNQcm9wZXJ0eSh6cixXcikmJiFlLlZlcnNpb25SYW5nZS50cnlQYXJzZShXcikmJmEoU3IuaG9zdCxlLkRpYWdub3N0aWNzLnBhY2thZ2VfanNvbl9oYXNfYV90eXBlc1ZlcnNpb25zX2VudHJ5XzBfdGhhdF9pc19ub3RfYV92YWxpZF9zZW12ZXJfcmFuZ2UsV3IpO3ZhciBKZT1zZSh6cik7aWYoIUplKXtTci50cmFjZUVuYWJsZWQmJmEoU3IuaG9zdCxlLkRpYWdub3N0aWNzLnBhY2thZ2VfanNvbl9kb2VzX25vdF9oYXZlX2FfdHlwZXNWZXJzaW9uc19lbnRyeV90aGF0X21hdGNoZXNfdmVyc2lvbl8wLGUudmVyc2lvbk1ham9yTWlub3IpO3JldHVybn12YXIgeGU9SmUudmVyc2lvbix2cj1KZS5wYXRocztpZih0eXBlb2YgdnIhPVwib2JqZWN0XCIpe1NyLnRyYWNlRW5hYmxlZCYmYShTci5ob3N0LGUuRGlhZ25vc3RpY3MuRXhwZWN0ZWRfdHlwZV9vZl8wX2ZpZWxkX2luX3BhY2thZ2VfanNvbl90b19iZV8xX2dvdF8yLFwidHlwZXNWZXJzaW9uc1snXCIuY29uY2F0KHhlLFwiJ11cIiksXCJvYmplY3RcIix0eXBlb2YgdnIpO3JldHVybn1yZXR1cm4gSmV9fXZhciBiO2Z1bmN0aW9uIHNlKFplKXtifHwoYj1uZXcgZS5WZXJzaW9uKGUudmVyc2lvbikpO2Zvcih2YXIgU3IgaW4gWmUpaWYoISFlLmhhc1Byb3BlcnR5KFplLFNyKSl7dmFyIHpyPWUuVmVyc2lvblJhbmdlLnRyeVBhcnNlKFNyKTtpZih6ciE9PXZvaWQgMCYmenIudGVzdChiKSlyZXR1cm57dmVyc2lvbjpTcixwYXRoczpaZVtTcl19fX1lLmdldFBhY2thZ2VKc29uVHlwZXNWZXJzaW9uc1BhdGhzPXNlO2Z1bmN0aW9uIEooWmUsU3Ipe2lmKFplLnR5cGVSb290cylyZXR1cm4gWmUudHlwZVJvb3RzO3ZhciB6cjtpZihaZS5jb25maWdGaWxlUGF0aD96cj1lLmdldERpcmVjdG9yeVBhdGgoWmUuY29uZmlnRmlsZVBhdGgpOlNyLmdldEN1cnJlbnREaXJlY3RvcnkmJih6cj1Tci5nZXRDdXJyZW50RGlyZWN0b3J5KCkpLHpyIT09dm9pZCAwKXJldHVybiBpZSh6cixTcil9ZS5nZXRFZmZlY3RpdmVUeXBlUm9vdHM9SjtmdW5jdGlvbiBpZShaZSxTcil7aWYoIVNyLmRpcmVjdG9yeUV4aXN0cylyZXR1cm5bZS5jb21iaW5lUGF0aHMoWmUsUildO3ZhciB6cjtyZXR1cm4gZS5mb3JFYWNoQW5jZXN0b3JEaXJlY3RvcnkoZS5ub3JtYWxpemVQYXRoKFplKSxmdW5jdGlvbihXcil7dmFyIEplPWUuY29tYmluZVBhdGhzKFdyLFIpO1NyLmRpcmVjdG9yeUV4aXN0cyhKZSkmJih6cnx8KHpyPVtdKSkucHVzaChKZSl9KSx6cn12YXIgUj1lLmNvbWJpbmVQYXRocyhcIm5vZGVfbW9kdWxlc1wiLFwiQHR5cGVzXCIpO2Z1bmN0aW9uIHEoWmUsU3IsenIpe3ZhciBXcj10eXBlb2YgenIudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcz09XCJmdW5jdGlvblwiP3pyLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKTp6ci51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzO3JldHVybiBlLmNvbXBhcmVQYXRocyhaZSxTciwhV3IpPT09MH1mdW5jdGlvbiBPKFplLFNyLHpyLFdyLEplLHhlLHZyKXtlLkRlYnVnLmFzc2VydCh0eXBlb2YgWmU9PVwic3RyaW5nXCIsXCJOb24tc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBgdHMucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVgLCBsaWtlbHkgYnkgYSB3cmFwcGluZyBwYWNrYWdlIHdvcmtpbmcgd2l0aCBhbiBvdXRkYXRlZCBgcmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzYCBzaWduYXR1cmUuIFRoaXMgaXMgcHJvYmFibHkgbm90IGEgcHJvYmxlbSBpbiBUUyBpdHNlbGYuXCIpO3ZhciBtcj1DKHpyLFdyKTtKZSYmKHpyPUplLmNvbW1hbmRMaW5lLm9wdGlvbnMpO3ZhciBBcj1Tcj9lLmdldERpcmVjdG9yeVBhdGgoU3IpOnZvaWQgMCxPZT1Bcj94ZSYmeGUuZ2V0T3JDcmVhdGVDYWNoZUZvckRpcmVjdG9yeShBcixKZSk6dm9pZCAwLG5yPU9lJiZPZS5nZXQoWmUsdnIpO2lmKG5yKXJldHVybiBtciYmKGEoV3IsZS5EaWFnbm9zdGljcy5SZXNvbHZpbmdfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfY29udGFpbmluZ19maWxlXzEsWmUsU3IpLEplJiZhKFdyLGUuRGlhZ25vc3RpY3MuVXNpbmdfY29tcGlsZXJfb3B0aW9uc19vZl9wcm9qZWN0X3JlZmVyZW5jZV9yZWRpcmVjdF8wLEplLnNvdXJjZUZpbGUuZmlsZU5hbWUpLGEoV3IsZS5EaWFnbm9zdGljcy5SZXNvbHV0aW9uX2Zvcl90eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF93YXNfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8xLFplLEFyKSxjdChucikpLG5yO3ZhciBNcj1KKHpyLFdyKTttciYmKFNyPT09dm9pZCAwP01yPT09dm9pZCAwP2EoV3IsZS5EaWFnbm9zdGljcy5SZXNvbHZpbmdfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfY29udGFpbmluZ19maWxlX25vdF9zZXRfcm9vdF9kaXJlY3Rvcnlfbm90X3NldCxaZSk6YShXcixlLkRpYWdub3N0aWNzLlJlc29sdmluZ190eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9jb250YWluaW5nX2ZpbGVfbm90X3NldF9yb290X2RpcmVjdG9yeV8xLFplLE1yKTpNcj09PXZvaWQgMD9hKFdyLGUuRGlhZ25vc3RpY3MuUmVzb2x2aW5nX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2NvbnRhaW5pbmdfZmlsZV8xX3Jvb3RfZGlyZWN0b3J5X25vdF9zZXQsWmUsU3IpOmEoV3IsZS5EaWFnbm9zdGljcy5SZXNvbHZpbmdfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfY29udGFpbmluZ19maWxlXzFfcm9vdF9kaXJlY3RvcnlfMixaZSxTcixNciksSmUmJmEoV3IsZS5EaWFnbm9zdGljcy5Vc2luZ19jb21waWxlcl9vcHRpb25zX29mX3Byb2plY3RfcmVmZXJlbmNlX3JlZGlyZWN0XzAsSmUuc291cmNlRmlsZS5maWxlTmFtZSkpO3ZhciBQZT1bXSxVZT12ZSh6cik7dnI9PT1lLk1vZHVsZUtpbmQuRVNOZXh0JiYoZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoenIpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTZ8fGUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKHpyKT09PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZU5leHQpJiYoVWV8PWQuRXNtTW9kZSk7dmFyIGZyPVVlJmQuRXhwb3J0cz9VZSZkLkVzbU1vZGU/W1wibm9kZVwiLFwiaW1wb3J0XCIsXCJ0eXBlc1wiXTpbXCJub2RlXCIsXCJyZXF1aXJlXCIsXCJ0eXBlc1wiXTpbXSxEZT1bXSxncj17Y29tcGlsZXJPcHRpb25zOnpyLGhvc3Q6V3IsdHJhY2VFbmFibGVkOm1yLGZhaWxlZExvb2t1cExvY2F0aW9uczpQZSxwYWNrYWdlSnNvbkluZm9DYWNoZTp4ZSxmZWF0dXJlczpVZSxjb25kaXRpb25zOmZyLHJlcXVlc3RDb250YWluaW5nRGlyZWN0b3J5OkFyLHJlcG9ydERpYWdub3N0aWM6ZnVuY3Rpb24oTXQpe3JldHVybiB2b2lkIERlLnB1c2goTXQpfX0sVnI9TGkoKSxUcj0hMDtWcnx8KFZyPW50KCksVHI9ITEpO3ZhciB2aTtpZihWcil7dmFyIFVpPVZyLmZpbGVOYW1lLFlpPVZyLnBhY2thZ2VJZCxXaT16ci5wcmVzZXJ2ZVN5bWxpbmtzP1VpOnplKFVpLFdyLG1yKTt2aT17cHJpbWFyeTpUcixyZXNvbHZlZEZpbGVOYW1lOldpLG9yaWdpbmFsUGF0aDpxKFVpLFdpLFdyKT92b2lkIDA6VWkscGFja2FnZUlkOllpLGlzRXh0ZXJuYWxMaWJyYXJ5SW1wb3J0OkhlKFVpKX19cmV0dXJuIG5yPXtyZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmU6dmksZmFpbGVkTG9va3VwTG9jYXRpb25zOlBlLHJlc29sdXRpb25EaWFnbm9zdGljczpEZX0sT2U9PW51bGx8fE9lLnNldChaZSx2cixuciksbXImJmN0KG5yKSxucjtmdW5jdGlvbiBjdChNdCl7dmFyIHh0OyEoKHh0PU10LnJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZSk9PT1udWxsfHx4dD09PXZvaWQgMCkmJnh0LnJlc29sdmVkRmlsZU5hbWU/TXQucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlLnBhY2thZ2VJZD9hKFdyLGUuRGlhZ25vc3RpY3MuVHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18xX3dpdGhfUGFja2FnZV9JRF8yX3ByaW1hcnlfQ29sb25fMyxaZSxNdC5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmUucmVzb2x2ZWRGaWxlTmFtZSxlLnBhY2thZ2VJZFRvU3RyaW5nKE10LnJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZS5wYWNrYWdlSWQpLE10LnJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZS5wcmltYXJ5KTphKFdyLGUuRGlhZ25vc3RpY3MuVHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18xX3ByaW1hcnlfQ29sb25fMixaZSxNdC5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmUucmVzb2x2ZWRGaWxlTmFtZSxNdC5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmUucHJpbWFyeSk6YShXcixlLkRpYWdub3N0aWNzLlR5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX3dhc19ub3RfcmVzb2x2ZWQsWmUpfWZ1bmN0aW9uIExpKCl7aWYoTXImJk1yLmxlbmd0aClyZXR1cm4gbXImJmEoV3IsZS5EaWFnbm9zdGljcy5SZXNvbHZpbmdfd2l0aF9wcmltYXJ5X3NlYXJjaF9wYXRoXzAsTXIuam9pbihcIiwgXCIpKSxlLmZpcnN0RGVmaW5lZChNcixmdW5jdGlvbihNdCl7dmFyIHh0PWUuY29tYmluZVBhdGhzKE10LFplKSx1dD1lLmdldERpcmVjdG9yeVBhdGgoeHQpLER0PWUuZGlyZWN0b3J5UHJvYmFibHlFeGlzdHModXQsV3IpO3JldHVybiFEdCYmbXImJmEoV3IsZS5EaWFnbm9zdGljcy5EaXJlY3RvcnlfMF9kb2VzX25vdF9leGlzdF9za2lwcGluZ19hbGxfbG9va3Vwc19pbl9pdCx1dCksbGUoQ3IoUS5EdHNPbmx5LHh0LCFEdCxncikpfSk7bXImJmEoV3IsZS5EaWFnbm9zdGljcy5Sb290X2RpcmVjdG9yeV9jYW5ub3RfYmVfZGV0ZXJtaW5lZF9za2lwcGluZ19wcmltYXJ5X3NlYXJjaF9wYXRocyl9ZnVuY3Rpb24gbnQoKXt2YXIgTXQ9U3ImJmUuZ2V0RGlyZWN0b3J5UGF0aChTcik7aWYoTXQhPT12b2lkIDApe21yJiZhKFdyLGUuRGlhZ25vc3RpY3MuTG9va2luZ191cF9pbl9ub2RlX21vZHVsZXNfZm9sZGVyX2luaXRpYWxfbG9jYXRpb25fMCxNdCk7dmFyIHh0O2lmKGUuaXNFeHRlcm5hbE1vZHVsZU5hbWVSZWxhdGl2ZShaZSkpe3ZhciBEdD1SZShNdCxaZSkucGF0aDt4dD1FZShRLkR0c09ubHksRHQsITEsZ3IsITApfWVsc2V7dmFyIHV0PW9yKFEuRHRzT25seSxaZSxNdCxncix2b2lkIDAsdm9pZCAwKTt4dD11dCYmdXQudmFsdWV9cmV0dXJuIGxlKHh0KX1lbHNlIG1yJiZhKFdyLGUuRGlhZ25vc3RpY3MuQ29udGFpbmluZ19maWxlX2lzX25vdF9zcGVjaWZpZWRfYW5kX3Jvb3RfZGlyZWN0b3J5X2Nhbm5vdF9iZV9kZXRlcm1pbmVkX3NraXBwaW5nX2xvb2t1cF9pbl9ub2RlX21vZHVsZXNfZm9sZGVyKX19ZS5yZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZT1PO2Z1bmN0aW9uIHZlKFplKXtyZXR1cm4gZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoWmUpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTY/ZC5Ob2RlMTZEZWZhdWx0OmUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKFplKT09PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZU5leHQ/ZC5Ob2RlTmV4dERlZmF1bHQ6ZC5Ob25lfWZ1bmN0aW9uIGVlKFplLFNyLHpyLFdyLEplKXt2YXIgeGU9e2NvbXBpbGVyT3B0aW9uczp6cixob3N0OldyLHRyYWNlRW5hYmxlZDpDKHpyLFdyKSxmYWlsZWRMb29rdXBMb2NhdGlvbnM6W10scGFja2FnZUpzb25JbmZvQ2FjaGU6SmU9PW51bGw/dm9pZCAwOkplLmdldFBhY2thZ2VKc29uSW5mb0NhY2hlKCksY29uZGl0aW9uczplLmVtcHR5QXJyYXksZmVhdHVyZXM6ZC5Ob25lLHJlcXVlc3RDb250YWluaW5nRGlyZWN0b3J5OlNyLHJlcG9ydERpYWdub3N0aWM6ZS5ub29wfTtyZXR1cm4gZS5mb3JFYWNoQW5jZXN0b3JEaXJlY3RvcnkoU3IsZnVuY3Rpb24odnIpe2lmKGUuZ2V0QmFzZUZpbGVOYW1lKHZyKSE9PVwibm9kZV9tb2R1bGVzXCIpe3ZhciBtcj1lLmNvbWJpbmVQYXRocyh2cixcIm5vZGVfbW9kdWxlc1wiKSxBcj1lLmNvbWJpbmVQYXRocyhtcixaZSk7cmV0dXJuIE5lKEFyLCExLHhlKX19KX1lLnJlc29sdmVQYWNrYWdlTmFtZVRvUGFja2FnZUpzb249ZWU7ZnVuY3Rpb24gaGUoWmUsU3Ipe2lmKFplLnR5cGVzKXJldHVybiBaZS50eXBlczt2YXIgenI9W107aWYoU3IuZGlyZWN0b3J5RXhpc3RzJiZTci5nZXREaXJlY3Rvcmllcyl7dmFyIFdyPUooWmUsU3IpO2lmKFdyKWZvcih2YXIgSmU9MCx4ZT1XcjtKZTx4ZS5sZW5ndGg7SmUrKyl7dmFyIHZyPXhlW0plXTtpZihTci5kaXJlY3RvcnlFeGlzdHModnIpKWZvcih2YXIgbXI9MCxBcj1Tci5nZXREaXJlY3Rvcmllcyh2cik7bXI8QXIubGVuZ3RoO21yKyspe3ZhciBPZT1Bclttcl0sbnI9ZS5ub3JtYWxpemVQYXRoKE9lKSxNcj1lLmNvbWJpbmVQYXRocyh2cixucixcInBhY2thZ2UuanNvblwiKSxQZT1Tci5maWxlRXhpc3RzKE1yKSYmZS5yZWFkSnNvbihNcixTcikudHlwaW5ncz09PW51bGw7aWYoIVBlKXt2YXIgVWU9ZS5nZXRCYXNlRmlsZU5hbWUobnIpO1VlLmNoYXJDb2RlQXQoMCkhPT00NiYmenIucHVzaChVZSl9fX19cmV0dXJuIHpyfWUuZ2V0QXV0b21hdGljVHlwZURpcmVjdGl2ZU5hbWVzPWhlO2Z1bmN0aW9uIEYoWmUpe3ZhciBTcj1uZXcgZS5NYXAsenI9bmV3IGUuTWFwO3JldHVybntnZXRPd25NYXA6V3IscmVkaXJlY3RzTWFwOnpyLGdldE9yQ3JlYXRlTWFwT2ZDYWNoZVJlZGlyZWN0czp2cixjbGVhcjptcixzZXRPd25PcHRpb25zOkplLHNldE93bk1hcDp4ZX07ZnVuY3Rpb24gV3IoKXtyZXR1cm4gU3J9ZnVuY3Rpb24gSmUoQXIpe1plPUFyfWZ1bmN0aW9uIHhlKEFyKXtTcj1Bcn1mdW5jdGlvbiB2cihBcil7aWYoIUFyKXJldHVybiBTcjt2YXIgT2U9QXIuc291cmNlRmlsZS5wYXRoLG5yPXpyLmdldChPZSk7cmV0dXJuIG5yfHwobnI9IVplfHxlLm9wdGlvbnNIYXZlTW9kdWxlUmVzb2x1dGlvbkNoYW5nZXMoWmUsQXIuY29tbWFuZExpbmUub3B0aW9ucyk/bmV3IGUuTWFwOlNyLHpyLnNldChPZSxucikpLG5yfWZ1bmN0aW9uIG1yKCl7U3IuY2xlYXIoKSx6ci5jbGVhcigpfX1lLmNyZWF0ZUNhY2hlV2l0aFJlZGlyZWN0cz1GO2Z1bmN0aW9uIHgoWmUsU3Ipe3ZhciB6cjtyZXR1cm57Z2V0UGFja2FnZUpzb25JbmZvOldyLHNldFBhY2thZ2VKc29uSW5mbzpKZSxjbGVhcjp4ZSxlbnRyaWVzOnZyfTtmdW5jdGlvbiBXcihtcil7cmV0dXJuIHpyPT1udWxsP3ZvaWQgMDp6ci5nZXQoZS50b1BhdGgobXIsWmUsU3IpKX1mdW5jdGlvbiBKZShtcixBcil7KHpyfHwoenI9bmV3IGUuTWFwKSkuc2V0KGUudG9QYXRoKG1yLFplLFNyKSxBcil9ZnVuY3Rpb24geGUoKXt6cj12b2lkIDB9ZnVuY3Rpb24gdnIoKXt2YXIgbXI9enI9PW51bGw/dm9pZCAwOnpyLmVudHJpZXMoKTtyZXR1cm4gbXI/ZS5hcnJheUZyb20obXIpOltdfX1mdW5jdGlvbiBYKFplLFNyLHpyLFdyKXt2YXIgSmU9WmUuZ2V0T3JDcmVhdGVNYXBPZkNhY2hlUmVkaXJlY3RzKFNyKSx4ZT1KZS5nZXQoenIpO3JldHVybiB4ZXx8KHhlPVdyKCksSmUuc2V0KHpyLHhlKSkseGV9ZnVuY3Rpb24gJChaZSxTcix6cil7aWYoISFaZS5jb25maWdGaWxlKXtpZihTci5yZWRpcmVjdHNNYXAuc2l6ZT09PTApZS5EZWJ1Zy5hc3NlcnQoIXpyfHx6ci5yZWRpcmVjdHNNYXAuc2l6ZT09PTApLGUuRGVidWcuYXNzZXJ0KFNyLmdldE93bk1hcCgpLnNpemU9PT0wKSxlLkRlYnVnLmFzc2VydCghenJ8fHpyLmdldE93bk1hcCgpLnNpemU9PT0wKSxTci5yZWRpcmVjdHNNYXAuc2V0KFplLmNvbmZpZ0ZpbGUucGF0aCxTci5nZXRPd25NYXAoKSksenI9PW51bGx8fHpyLnJlZGlyZWN0c01hcC5zZXQoWmUuY29uZmlnRmlsZS5wYXRoLHpyLmdldE93bk1hcCgpKTtlbHNle2UuRGVidWcuYXNzZXJ0KCF6cnx8enIucmVkaXJlY3RzTWFwLnNpemU+MCk7dmFyIFdyPXtzb3VyY2VGaWxlOlplLmNvbmZpZ0ZpbGUsY29tbWFuZExpbmU6e29wdGlvbnM6WmV9fTtTci5zZXRPd25NYXAoU3IuZ2V0T3JDcmVhdGVNYXBPZkNhY2hlUmVkaXJlY3RzKFdyKSksenI9PW51bGx8fHpyLnNldE93bk1hcCh6ci5nZXRPckNyZWF0ZU1hcE9mQ2FjaGVSZWRpcmVjdHMoV3IpKX1Tci5zZXRPd25PcHRpb25zKFplKSx6cj09bnVsbHx8enIuc2V0T3duT3B0aW9ucyhaZSl9fWZ1bmN0aW9uIEEoWmUsU3IsenIpe3JldHVybntnZXRPckNyZWF0ZUNhY2hlRm9yRGlyZWN0b3J5OnhlLGNsZWFyOldyLHVwZGF0ZTpKZX07ZnVuY3Rpb24gV3IoKXt6ci5jbGVhcigpfWZ1bmN0aW9uIEplKHZyKXskKHZyLHpyKX1mdW5jdGlvbiB4ZSh2cixtcil7dmFyIEFyPWUudG9QYXRoKHZyLFplLFNyKTtyZXR1cm4gWCh6cixtcixBcixmdW5jdGlvbigpe3JldHVybiB5KCl9KX19ZnVuY3Rpb24geSgpe3ZhciBaZT1uZXcgZS5NYXAsU3I9bmV3IGUuTWFwLHpyPXtnZXQ6ZnVuY3Rpb24oSmUseGUpe3JldHVybiBaZS5nZXQoV3IoSmUseGUpKX0sc2V0OmZ1bmN0aW9uKEplLHhlLHZyKXtyZXR1cm4gWmUuc2V0KFdyKEplLHhlKSx2ciksenJ9LGRlbGV0ZTpmdW5jdGlvbihKZSx4ZSl7cmV0dXJuIFplLmRlbGV0ZShXcihKZSx4ZSkpLHpyfSxoYXM6ZnVuY3Rpb24oSmUseGUpe3JldHVybiBaZS5oYXMoV3IoSmUseGUpKX0sZm9yRWFjaDpmdW5jdGlvbihKZSl7cmV0dXJuIFplLmZvckVhY2goZnVuY3Rpb24oeGUsdnIpe3ZhciBtcj1Tci5nZXQodnIpLEFyPW1yWzBdLE9lPW1yWzFdO3JldHVybiBKZSh4ZSxBcixPZSl9KX0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiBaZS5zaXplfX07cmV0dXJuIHpyO2Z1bmN0aW9uIFdyKEplLHhlKXt2YXIgdnI9eGU9PT12b2lkIDA/SmU6XCJcIi5jb25jYXQoeGUsXCJ8XCIpLmNvbmNhdChKZSk7cmV0dXJuIFNyLnNldCh2cixbSmUseGVdKSx2cn19ZS5jcmVhdGVNb2RlQXdhcmVDYWNoZT15O2Z1bmN0aW9uIFYoWmUsU3IsenIpe2UuRGVidWcuYXNzZXJ0KFNyLmxlbmd0aD09PXpyLmxlbmd0aCk7Zm9yKHZhciBXcj15KCksSmU9MDtKZTxTci5sZW5ndGg7KytKZSl7dmFyIHhlPVNyW0plXSx2cj1lLmlzU3RyaW5nKHhlKT94ZTp4ZS5maWxlTmFtZS50b0xvd2VyQ2FzZSgpLG1yPWUuaXNTdHJpbmcoeGUpP2UuZ2V0TW9kZUZvclJlc29sdXRpb25BdEluZGV4KFplLEplKTp4ZS5yZXNvbHV0aW9uTW9kZXx8WmUuaW1wbGllZE5vZGVGb3JtYXQ7V3Iuc2V0KHZyLG1yLHpyW0plXSl9cmV0dXJuIFdyfWUuemlwVG9Nb2RlQXdhcmVDYWNoZT1WO2Z1bmN0aW9uIEwoWmUsU3IsenIsV3IsSmUpe3ZhciB4ZT1BKFplLFNyLFdyfHwoV3I9Rih6cikpKTtKZXx8KEplPUYoenIpKTt2YXIgdnI9eChaZSxTcik7cmV0dXJuIEtlKEtlKEtlKHt9LHZyKSx4ZSkse2dldE9yQ3JlYXRlQ2FjaGVGb3JNb2R1bGVOYW1lOk9lLGNsZWFyOm1yLHVwZGF0ZTpBcixnZXRQYWNrYWdlSnNvbkluZm9DYWNoZTpmdW5jdGlvbigpe3JldHVybiB2cn19KTtmdW5jdGlvbiBtcigpe3hlLmNsZWFyKCksSmUuY2xlYXIoKSx2ci5jbGVhcigpfWZ1bmN0aW9uIEFyKE1yKXskKE1yLFdyLEplKX1mdW5jdGlvbiBPZShNcixQZSxVZSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUoTXIpKSxYKEplLFVlLFBlPT09dm9pZCAwP01yOlwiXCIuY29uY2F0KFBlLFwifFwiKS5jb25jYXQoTXIpLG5yKX1mdW5jdGlvbiBucigpe3ZhciBNcj1uZXcgZS5NYXA7cmV0dXJue2dldDpQZSxzZXQ6VWV9O2Z1bmN0aW9uIFBlKERlKXtyZXR1cm4gTXIuZ2V0KGUudG9QYXRoKERlLFplLFNyKSl9ZnVuY3Rpb24gVWUoRGUsZ3Ipe3ZhciBWcj1lLnRvUGF0aChEZSxaZSxTcik7aWYoIU1yLmhhcyhWcikpe01yLnNldChWcixncik7Zm9yKHZhciBUcj1nci5yZXNvbHZlZE1vZHVsZSYmKGdyLnJlc29sdmVkTW9kdWxlLm9yaWdpbmFsUGF0aHx8Z3IucmVzb2x2ZWRNb2R1bGUucmVzb2x2ZWRGaWxlTmFtZSksdmk9VHImJmZyKFZyLFRyKSxVaT1WcjtVaSE9PXZpOyl7dmFyIFlpPWUuZ2V0RGlyZWN0b3J5UGF0aChVaSk7aWYoWWk9PT1VaXx8TXIuaGFzKFlpKSlicmVhaztNci5zZXQoWWksZ3IpLFVpPVlpfX19ZnVuY3Rpb24gZnIoRGUsZ3Ipe2Zvcih2YXIgVnI9ZS50b1BhdGgoZS5nZXREaXJlY3RvcnlQYXRoKGdyKSxaZSxTciksVHI9MCx2aT1NYXRoLm1pbihEZS5sZW5ndGgsVnIubGVuZ3RoKTtUcjx2aSYmRGUuY2hhckNvZGVBdChUcik9PT1Wci5jaGFyQ29kZUF0KFRyKTspVHIrKztpZihUcj09PURlLmxlbmd0aCYmKFZyLmxlbmd0aD09PVRyfHxWcltUcl09PT1lLmRpcmVjdG9yeVNlcGFyYXRvcikpcmV0dXJuIERlO3ZhciBVaT1lLmdldFJvb3RMZW5ndGgoRGUpO2lmKCEoVHI8VWkpKXt2YXIgWWk9RGUubGFzdEluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IsVHItMSk7aWYoWWkhPT0tMSlyZXR1cm4gRGUuc3Vic3RyKDAsTWF0aC5tYXgoWWksVWkpKX19fX1lLmNyZWF0ZU1vZHVsZVJlc29sdXRpb25DYWNoZT1MO2Z1bmN0aW9uIFAoWmUsU3IsenIsV3IsSmUpe3ZhciB4ZT1BKFplLFNyLEplfHwoSmU9Rih6cikpKTtyZXR1cm4gV3J8fChXcj14KFplLFNyKSksS2UoS2UoS2Uoe30sV3IpLHhlKSx7Y2xlYXI6dnJ9KTtmdW5jdGlvbiB2cigpe3hlLmNsZWFyKCksV3IuY2xlYXIoKX19ZS5jcmVhdGVUeXBlUmVmZXJlbmNlRGlyZWN0aXZlUmVzb2x1dGlvbkNhY2hlPVA7ZnVuY3Rpb24gayhaZSxTcix6cixXcil7dmFyIEplPWUuZ2V0RGlyZWN0b3J5UGF0aChTcikseGU9enImJnpyLmdldE9yQ3JlYXRlQ2FjaGVGb3JEaXJlY3RvcnkoSmUpO2lmKCEheGUpcmV0dXJuIHhlLmdldChaZSxXcil9ZS5yZXNvbHZlTW9kdWxlTmFtZUZyb21DYWNoZT1rO2Z1bmN0aW9uIFkoWmUsU3IsenIsV3IsSmUseGUsdnIpe3ZhciBtcj1DKHpyLFdyKTt4ZSYmKHpyPXhlLmNvbW1hbmRMaW5lLm9wdGlvbnMpLG1yJiYoYShXcixlLkRpYWdub3N0aWNzLlJlc29sdmluZ19tb2R1bGVfMF9mcm9tXzEsWmUsU3IpLHhlJiZhKFdyLGUuRGlhZ25vc3RpY3MuVXNpbmdfY29tcGlsZXJfb3B0aW9uc19vZl9wcm9qZWN0X3JlZmVyZW5jZV9yZWRpcmVjdF8wLHhlLnNvdXJjZUZpbGUuZmlsZU5hbWUpKTt2YXIgQXI9ZS5nZXREaXJlY3RvcnlQYXRoKFNyKSxPZT1KZSYmSmUuZ2V0T3JDcmVhdGVDYWNoZUZvckRpcmVjdG9yeShBcix4ZSksbnI9T2UmJk9lLmdldChaZSx2cik7aWYobnIpbXImJmEoV3IsZS5EaWFnbm9zdGljcy5SZXNvbHV0aW9uX2Zvcl9tb2R1bGVfMF93YXNfZm91bmRfaW5fY2FjaGVfZnJvbV9sb2NhdGlvbl8xLFplLEFyKTtlbHNle3ZhciBNcj16ci5tb2R1bGVSZXNvbHV0aW9uO2lmKE1yPT09dm9pZCAwKXtzd2l0Y2goZS5nZXRFbWl0TW9kdWxlS2luZCh6cikpe2Nhc2UgZS5Nb2R1bGVLaW5kLkNvbW1vbkpTOk1yPWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzO2JyZWFrO2Nhc2UgZS5Nb2R1bGVLaW5kLk5vZGUxNjpNcj1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNjticmVhaztjYXNlIGUuTW9kdWxlS2luZC5Ob2RlTmV4dDpNcj1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVOZXh0O2JyZWFrO2RlZmF1bHQ6TXI9ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5DbGFzc2ljO2JyZWFrfW1yJiZhKFdyLGUuRGlhZ25vc3RpY3MuTW9kdWxlX3Jlc29sdXRpb25fa2luZF9pc19ub3Rfc3BlY2lmaWVkX3VzaW5nXzAsZS5Nb2R1bGVSZXNvbHV0aW9uS2luZFtNcl0pfWVsc2UgbXImJmEoV3IsZS5EaWFnbm9zdGljcy5FeHBsaWNpdGx5X3NwZWNpZmllZF9tb2R1bGVfcmVzb2x1dGlvbl9raW5kX0NvbG9uXzAsZS5Nb2R1bGVSZXNvbHV0aW9uS2luZFtNcl0pO3N3aXRjaChlLnBlcmZMb2dnZXIubG9nU3RhcnRSZXNvbHZlTW9kdWxlKFplKSxNcil7Y2FzZSBlLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNjpucj1EKFplLFNyLHpyLFdyLEplLHhlLHZyKTticmVhaztjYXNlIGUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZU5leHQ6bnI9ZmUoWmUsU3IsenIsV3IsSmUseGUsdnIpO2JyZWFrO2Nhc2UgZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlSnM6bnI9QmUoWmUsU3IsenIsV3IsSmUseGUpO2JyZWFrO2Nhc2UgZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5DbGFzc2ljOm5yPVhlKFplLFNyLHpyLFdyLEplLHhlKTticmVhaztkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoXCJVbmV4cGVjdGVkIG1vZHVsZVJlc29sdXRpb246IFwiLmNvbmNhdChNcikpfW5yJiZuci5yZXNvbHZlZE1vZHVsZSYmZS5wZXJmTG9nZ2VyLmxvZ0luZm9FdmVudCgnTW9kdWxlIFwiJy5jb25jYXQoWmUsJ1wiIHJlc29sdmVkIHRvIFwiJykuY29uY2F0KG5yLnJlc29sdmVkTW9kdWxlLnJlc29sdmVkRmlsZU5hbWUsJ1wiJykpLGUucGVyZkxvZ2dlci5sb2dTdG9wUmVzb2x2ZU1vZHVsZShuciYmbnIucmVzb2x2ZWRNb2R1bGU/XCJcIituci5yZXNvbHZlZE1vZHVsZS5yZXNvbHZlZEZpbGVOYW1lOlwibnVsbFwiKSxPZSYmKE9lLnNldChaZSx2cixuciksZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKFplKXx8SmUuZ2V0T3JDcmVhdGVDYWNoZUZvck1vZHVsZU5hbWUoWmUsdnIseGUpLnNldChBcixucikpfXJldHVybiBtciYmKG5yLnJlc29sdmVkTW9kdWxlP25yLnJlc29sdmVkTW9kdWxlLnBhY2thZ2VJZD9hKFdyLGUuRGlhZ25vc3RpY3MuTW9kdWxlX25hbWVfMF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzFfd2l0aF9QYWNrYWdlX0lEXzIsWmUsbnIucmVzb2x2ZWRNb2R1bGUucmVzb2x2ZWRGaWxlTmFtZSxlLnBhY2thZ2VJZFRvU3RyaW5nKG5yLnJlc29sdmVkTW9kdWxlLnBhY2thZ2VJZCkpOmEoV3IsZS5EaWFnbm9zdGljcy5Nb2R1bGVfbmFtZV8wX3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMSxaZSxuci5yZXNvbHZlZE1vZHVsZS5yZXNvbHZlZEZpbGVOYW1lKTphKFdyLGUuRGlhZ25vc3RpY3MuTW9kdWxlX25hbWVfMF93YXNfbm90X3Jlc29sdmVkLFplKSksbnJ9ZS5yZXNvbHZlTW9kdWxlTmFtZT1ZO2Z1bmN0aW9uIFUoWmUsU3IsenIsV3IsSmUpe3ZhciB4ZT1qKFplLFNyLFdyLEplKTtyZXR1cm4geGU/eGUudmFsdWU6ZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKFNyKT9IKFplLFNyLHpyLFdyLEplKTpJKFplLFNyLFdyLEplKX1mdW5jdGlvbiBqKFplLFNyLHpyLFdyKXt2YXIgSmUseGU9V3IuY29tcGlsZXJPcHRpb25zLHZyPXhlLmJhc2VVcmwsbXI9eGUucGF0aHMsQXI9eGUuY29uZmlnRmlsZTtpZihtciYmIWUucGF0aElzUmVsYXRpdmUoU3IpKXtXci50cmFjZUVuYWJsZWQmJih2ciYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MuYmFzZVVybF9vcHRpb25faXNfc2V0X3RvXzBfdXNpbmdfdGhpc192YWx1ZV90b19yZXNvbHZlX25vbl9yZWxhdGl2ZV9tb2R1bGVfbmFtZV8xLHZyLFNyKSxhKFdyLmhvc3QsZS5EaWFnbm9zdGljcy5wYXRoc19vcHRpb25faXNfc3BlY2lmaWVkX2xvb2tpbmdfZm9yX2FfcGF0dGVybl90b19tYXRjaF9tb2R1bGVfbmFtZV8wLFNyKSk7dmFyIE9lPWUuZ2V0UGF0aHNCYXNlUGF0aChXci5jb21waWxlck9wdGlvbnMsV3IuaG9zdCksbnI9QXIhPW51bGwmJkFyLmNvbmZpZ0ZpbGVTcGVjcz8oSmU9QXIuY29uZmlnRmlsZVNwZWNzKS5wYXRoUGF0dGVybnN8fChKZS5wYXRoUGF0dGVybnM9ZS50cnlQYXJzZVBhdHRlcm5zKG1yKSk6dm9pZCAwO3JldHVybiBYaShaZSxTcixPZSxtcixucix6ciwhMSxXcil9fWZ1bmN0aW9uIEgoWmUsU3IsenIsV3IsSmUpe2lmKCEhSmUuY29tcGlsZXJPcHRpb25zLnJvb3REaXJzKXtKZS50cmFjZUVuYWJsZWQmJmEoSmUuaG9zdCxlLkRpYWdub3N0aWNzLnJvb3REaXJzX29wdGlvbl9pc19zZXRfdXNpbmdfaXRfdG9fcmVzb2x2ZV9yZWxhdGl2ZV9tb2R1bGVfbmFtZV8wLFNyKTtmb3IodmFyIHhlPWUubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyh6cixTcikpLHZyLG1yLEFyPTAsT2U9SmUuY29tcGlsZXJPcHRpb25zLnJvb3REaXJzO0FyPE9lLmxlbmd0aDtBcisrKXt2YXIgbnI9T2VbQXJdLE1yPWUubm9ybWFsaXplUGF0aChucik7ZS5lbmRzV2l0aChNcixlLmRpcmVjdG9yeVNlcGFyYXRvcil8fChNcis9ZS5kaXJlY3RvcnlTZXBhcmF0b3IpO3ZhciBQZT1lLnN0YXJ0c1dpdGgoeGUsTXIpJiYobXI9PT12b2lkIDB8fG1yLmxlbmd0aDxNci5sZW5ndGgpO0plLnRyYWNlRW5hYmxlZCYmYShKZS5ob3N0LGUuRGlhZ25vc3RpY3MuQ2hlY2tpbmdfaWZfMF9pc190aGVfbG9uZ2VzdF9tYXRjaGluZ19wcmVmaXhfZm9yXzFfMixNcix4ZSxQZSksUGUmJihtcj1Ncix2cj1ucil9aWYobXIpe0plLnRyYWNlRW5hYmxlZCYmYShKZS5ob3N0LGUuRGlhZ25vc3RpY3MuTG9uZ2VzdF9tYXRjaGluZ19wcmVmaXhfZm9yXzBfaXNfMSx4ZSxtcik7dmFyIFVlPXhlLnN1YnN0cihtci5sZW5ndGgpO0plLnRyYWNlRW5hYmxlZCYmYShKZS5ob3N0LGUuRGlhZ25vc3RpY3MuTG9hZGluZ18wX2Zyb21fdGhlX3Jvb3RfZGlyXzFfY2FuZGlkYXRlX2xvY2F0aW9uXzIsVWUsbXIseGUpO3ZhciBmcj1XcihaZSx4ZSwhZS5kaXJlY3RvcnlQcm9iYWJseUV4aXN0cyh6cixKZS5ob3N0KSxKZSk7aWYoZnIpcmV0dXJuIGZyO0plLnRyYWNlRW5hYmxlZCYmYShKZS5ob3N0LGUuRGlhZ25vc3RpY3MuVHJ5aW5nX290aGVyX2VudHJpZXNfaW5fcm9vdERpcnMpO2Zvcih2YXIgRGU9MCxncj1KZS5jb21waWxlck9wdGlvbnMucm9vdERpcnM7RGU8Z3IubGVuZ3RoO0RlKyspe3ZhciBucj1ncltEZV07aWYobnIhPT12cil7dmFyIFZyPWUuY29tYmluZVBhdGhzKGUubm9ybWFsaXplUGF0aChuciksVWUpO0plLnRyYWNlRW5hYmxlZCYmYShKZS5ob3N0LGUuRGlhZ25vc3RpY3MuTG9hZGluZ18wX2Zyb21fdGhlX3Jvb3RfZGlyXzFfY2FuZGlkYXRlX2xvY2F0aW9uXzIsVWUsbnIsVnIpO3ZhciBUcj1lLmdldERpcmVjdG9yeVBhdGgoVnIpLHZpPVdyKFplLFZyLCFlLmRpcmVjdG9yeVByb2JhYmx5RXhpc3RzKFRyLEplLmhvc3QpLEplKTtpZih2aSlyZXR1cm4gdml9fUplLnRyYWNlRW5hYmxlZCYmYShKZS5ob3N0LGUuRGlhZ25vc3RpY3MuTW9kdWxlX3Jlc29sdXRpb25fdXNpbmdfcm9vdERpcnNfaGFzX2ZhaWxlZCl9fX1mdW5jdGlvbiBJKFplLFNyLHpyLFdyKXt2YXIgSmU9V3IuY29tcGlsZXJPcHRpb25zLmJhc2VVcmw7aWYoISFKZSl7V3IudHJhY2VFbmFibGVkJiZhKFdyLmhvc3QsZS5EaWFnbm9zdGljcy5iYXNlVXJsX29wdGlvbl9pc19zZXRfdG9fMF91c2luZ190aGlzX3ZhbHVlX3RvX3Jlc29sdmVfbm9uX3JlbGF0aXZlX21vZHVsZV9uYW1lXzEsSmUsU3IpO3ZhciB4ZT1lLm5vcm1hbGl6ZVBhdGgoZS5jb21iaW5lUGF0aHMoSmUsU3IpKTtyZXR1cm4gV3IudHJhY2VFbmFibGVkJiZhKFdyLmhvc3QsZS5EaWFnbm9zdGljcy5SZXNvbHZpbmdfbW9kdWxlX25hbWVfMF9yZWxhdGl2ZV90b19iYXNlX3VybF8xXzIsU3IsSmUseGUpLHpyKFplLHhlLCFlLmRpcmVjdG9yeVByb2JhYmx5RXhpc3RzKGUuZ2V0RGlyZWN0b3J5UGF0aCh4ZSksV3IuaG9zdCksV3IpfX1mdW5jdGlvbiBsKFplLFNyLHpyKXt2YXIgV3I9WihaZSxTcix6ciksSmU9V3IucmVzb2x2ZWRNb2R1bGUseGU9V3IuZmFpbGVkTG9va3VwTG9jYXRpb25zO2lmKCFKZSl0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgcmVzb2x2ZSBKUyBtb2R1bGUgJ1wiLmNvbmNhdChaZSxcIicgc3RhcnRpbmcgYXQgJ1wiKS5jb25jYXQoU3IsXCInLiBMb29rZWQgaW46IFwiKS5jb25jYXQoeGUuam9pbihcIiwgXCIpKSk7cmV0dXJuIEplLnJlc29sdmVkRmlsZU5hbWV9ZS5yZXNvbHZlSlNNb2R1bGU9bDt2YXIgZDsoZnVuY3Rpb24oWmUpe1plW1plLk5vbmU9MF09XCJOb25lXCIsWmVbWmUuSW1wb3J0cz0yXT1cIkltcG9ydHNcIixaZVtaZS5TZWxmTmFtZT00XT1cIlNlbGZOYW1lXCIsWmVbWmUuRXhwb3J0cz04XT1cIkV4cG9ydHNcIixaZVtaZS5FeHBvcnRzUGF0dGVyblRyYWlsZXJzPTE2XT1cIkV4cG9ydHNQYXR0ZXJuVHJhaWxlcnNcIixaZVtaZS5BbGxGZWF0dXJlcz0zMF09XCJBbGxGZWF0dXJlc1wiLFplW1plLk5vZGUxNkRlZmF1bHQ9MzBdPVwiTm9kZTE2RGVmYXVsdFwiLFplW1plLk5vZGVOZXh0RGVmYXVsdD0zMF09XCJOb2RlTmV4dERlZmF1bHRcIixaZVtaZS5Fc21Nb2RlPTMyXT1cIkVzbU1vZGVcIn0pKGR8fChkPXt9KSk7ZnVuY3Rpb24gRChaZSxTcix6cixXcixKZSx4ZSx2cil7cmV0dXJuIGcoZC5Ob2RlMTZEZWZhdWx0LFplLFNyLHpyLFdyLEplLHhlLHZyKX1mdW5jdGlvbiBmZShaZSxTcix6cixXcixKZSx4ZSx2cil7cmV0dXJuIGcoZC5Ob2RlTmV4dERlZmF1bHQsWmUsU3IsenIsV3IsSmUseGUsdnIpfWZ1bmN0aW9uIGcoWmUsU3IsenIsV3IsSmUseGUsdnIsbXIpe3ZhciBBcj1lLmdldERpcmVjdG9yeVBhdGgoenIpLE9lPW1yPT09ZS5Nb2R1bGVLaW5kLkVTTmV4dD9kLkVzbU1vZGU6MDtyZXR1cm4gZ2UoWmV8T2UsU3IsQXIsV3IsSmUseGUsV3IucmVzb2x2ZUpzb25Nb2R1bGU/V2U6dWUsdnIpfXZhciBuZT1bUS5KYXZhU2NyaXB0XSx1ZT1bUS5UeXBlU2NyaXB0LFEuSmF2YVNjcmlwdF0sV2U9VmUoVmUoW10sdWUsITApLFtRLkpzb25dLCExKSxGZT1bUS5UU0NvbmZpZ107ZnVuY3Rpb24gWihaZSxTcix6cil7cmV0dXJuIGdlKGQuTm9uZSxaZSxTcix7bW9kdWxlUmVzb2x1dGlvbjplLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKcyxhbGxvd0pzOiEwfSx6cix2b2lkIDAsbmUsdm9pZCAwKX1mdW5jdGlvbiBCZShaZSxTcix6cixXcixKZSx4ZSx2cil7dmFyIG1yO3JldHVybiB2cj9tcj1GZTp6ci5ub0R0c1Jlc29sdXRpb24/KG1yPVtRLlRzT25seV0senIuYWxsb3dKcyYmbXIucHVzaChRLkphdmFTY3JpcHQpLHpyLnJlc29sdmVKc29uTW9kdWxlJiZtci5wdXNoKFEuSnNvbikpOm1yPXpyLnJlc29sdmVKc29uTW9kdWxlP1dlOnVlLGdlKGQuTm9uZSxaZSxlLmdldERpcmVjdG9yeVBhdGgoU3IpLHpyLFdyLEplLG1yLHhlKX1lLm5vZGVNb2R1bGVOYW1lUmVzb2x2ZXI9QmU7ZnVuY3Rpb24gZ2UoWmUsU3IsenIsV3IsSmUseGUsdnIsbXIpe3ZhciBBcixPZSxucj1DKFdyLEplKSxNcj1bXSxQZT1aZSZkLkVzbU1vZGU/W1wibm9kZVwiLFwiaW1wb3J0XCIsXCJ0eXBlc1wiXTpbXCJub2RlXCIsXCJyZXF1aXJlXCIsXCJ0eXBlc1wiXTtXci5ub0R0c1Jlc29sdXRpb24mJlBlLnBvcCgpO3ZhciBVZT1bXSxmcj17Y29tcGlsZXJPcHRpb25zOldyLGhvc3Q6SmUsdHJhY2VFbmFibGVkOm5yLGZhaWxlZExvb2t1cExvY2F0aW9uczpNcixwYWNrYWdlSnNvbkluZm9DYWNoZTp4ZSxmZWF0dXJlczpaZSxjb25kaXRpb25zOlBlLHJlcXVlc3RDb250YWluaW5nRGlyZWN0b3J5OnpyLHJlcG9ydERpYWdub3N0aWM6ZnVuY3Rpb24oVnIpe3JldHVybiB2b2lkIFVlLnB1c2goVnIpfX0sRGU9ZS5mb3JFYWNoKHZyLGZ1bmN0aW9uKFZyKXtyZXR1cm4gZ3IoVnIpfSk7cmV0dXJuIE4oKEFyPURlPT1udWxsP3ZvaWQgMDpEZS52YWx1ZSk9PT1udWxsfHxBcj09PXZvaWQgMD92b2lkIDA6QXIucmVzb2x2ZWQsKE9lPURlPT1udWxsP3ZvaWQgMDpEZS52YWx1ZSk9PT1udWxsfHxPZT09PXZvaWQgMD92b2lkIDA6T2UuaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQsTXIsVWUsZnIucmVzdWx0RnJvbUNhY2hlKTtmdW5jdGlvbiBncihWcil7dmFyIFRyPWZ1bmN0aW9uKHV0LER0LFJ0LElpKXtyZXR1cm4gRWUodXQsRHQsUnQsSWksITApfSx2aT1VKFZyLFNyLHpyLFRyLGZyKTtpZih2aSlyZXR1cm4gdGkoe3Jlc29sdmVkOnZpLGlzRXh0ZXJuYWxMaWJyYXJ5SW1wb3J0OkhlKHZpLnBhdGgpfSk7aWYoZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKFNyKSl7dmFyIExpPVJlKHpyLFNyKSxudD1MaS5wYXRoLE10PUxpLnBhcnRzLHh0PUVlKFZyLG50LCExLGZyLCEwKTtyZXR1cm4geHQmJnRpKHtyZXNvbHZlZDp4dCxpc0V4dGVybmFsTGlicmFyeUltcG9ydDplLmNvbnRhaW5zKE10LFwibm9kZV9tb2R1bGVzXCIpfSl9ZWxzZXt2YXIgVWk7aWYoWmUmZC5JbXBvcnRzJiZlLnN0YXJ0c1dpdGgoU3IsXCIjXCIpJiYoVWk9VXIoVnIsU3IsenIsZnIseGUsbXIpKSwhVWkmJlplJmQuU2VsZk5hbWUmJihVaT1JcihWcixTcix6cixmcix4ZSxtcikpLFVpfHwobnImJmEoSmUsZS5EaWFnbm9zdGljcy5Mb2FkaW5nX21vZHVsZV8wX2Zyb21fbm9kZV9tb2R1bGVzX2ZvbGRlcl90YXJnZXRfZmlsZV90eXBlXzEsU3IsUVtWcl0pLFVpPW9yKFZyLFNyLHpyLGZyLHhlLG1yKSksIVVpKXJldHVybjt2YXIgWWk9VWkudmFsdWU7aWYoIVdyLnByZXNlcnZlU3ltbGlua3MmJllpJiYhWWkub3JpZ2luYWxQYXRoKXt2YXIgV2k9emUoWWkucGF0aCxKZSxuciksY3Q9cShXaSxZaS5wYXRoLEplKT92b2lkIDA6WWkucGF0aDtZaT1LZShLZSh7fSxZaSkse3BhdGg6V2ksb3JpZ2luYWxQYXRoOmN0fSl9cmV0dXJue3ZhbHVlOllpJiZ7cmVzb2x2ZWQ6WWksaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQ6ITB9fX19fWZ1bmN0aW9uIFJlKFplLFNyKXt2YXIgenI9ZS5jb21iaW5lUGF0aHMoWmUsU3IpLFdyPWUuZ2V0UGF0aENvbXBvbmVudHMoenIpLEplPWUubGFzdE9yVW5kZWZpbmVkKFdyKSx4ZT1KZT09PVwiLlwifHxKZT09PVwiLi5cIj9lLmVuc3VyZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKGUubm9ybWFsaXplUGF0aCh6cikpOmUubm9ybWFsaXplUGF0aCh6cik7cmV0dXJue3BhdGg6eGUscGFydHM6V3J9fWZ1bmN0aW9uIHplKFplLFNyLHpyKXtpZighU3IucmVhbHBhdGgpcmV0dXJuIFplO3ZhciBXcj1lLm5vcm1hbGl6ZVBhdGgoU3IucmVhbHBhdGgoWmUpKTtyZXR1cm4genImJmEoU3IsZS5EaWFnbm9zdGljcy5SZXNvbHZpbmdfcmVhbF9wYXRoX2Zvcl8wX3Jlc3VsdF8xLFplLFdyKSxlLkRlYnVnLmFzc2VydChTci5maWxlRXhpc3RzKFdyKSxcIlwiLmNvbmNhdChaZSxcIiBsaW5rZWQgdG8gbm9uZXhpc3RlbnQgZmlsZSBcIikuY29uY2F0KFdyKSksV3J9ZnVuY3Rpb24gRWUoWmUsU3IsenIsV3IsSmUpe2lmKFdyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MuTG9hZGluZ19tb2R1bGVfYXNfZmlsZV9TbGFzaF9mb2xkZXJfY2FuZGlkYXRlX21vZHVsZV9sb2NhdGlvbl8wX3RhcmdldF9maWxlX3R5cGVfMSxTcixRW1plXSksIWUuaGFzVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoU3IpKXtpZighenIpe3ZhciB4ZT1lLmdldERpcmVjdG9yeVBhdGgoU3IpO2UuZGlyZWN0b3J5UHJvYmFibHlFeGlzdHMoeGUsV3IuaG9zdCl8fChXci50cmFjZUVuYWJsZWQmJmEoV3IuaG9zdCxlLkRpYWdub3N0aWNzLkRpcmVjdG9yeV8wX2RvZXNfbm90X2V4aXN0X3NraXBwaW5nX2FsbF9sb29rdXBzX2luX2l0LHhlKSx6cj0hMCl9dmFyIHZyPXdlKFplLFNyLHpyLFdyKTtpZih2cil7dmFyIG1yPUplP3JyKHZyLnBhdGgpOnZvaWQgMCxBcj1tcj9OZShtciwhMSxXcik6dm9pZCAwO3JldHVybiB3KEFyLHZyKX19aWYoIXpyKXt2YXIgT2U9ZS5kaXJlY3RvcnlQcm9iYWJseUV4aXN0cyhTcixXci5ob3N0KTtPZXx8KFdyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MuRGlyZWN0b3J5XzBfZG9lc19ub3RfZXhpc3Rfc2tpcHBpbmdfYWxsX2xvb2t1cHNfaW5faXQsU3IpLHpyPSEwKX1pZighKFdyLmZlYXR1cmVzJmQuRXNtTW9kZSkpcmV0dXJuIENyKFplLFNyLHpyLFdyLEplKX1lLm5vZGVNb2R1bGVzUGF0aFBhcnQ9XCIvbm9kZV9tb2R1bGVzL1wiO2Z1bmN0aW9uIEhlKFplKXtyZXR1cm4gZS5zdHJpbmdDb250YWlucyhaZSxlLm5vZGVNb2R1bGVzUGF0aFBhcnQpfWUucGF0aENvbnRhaW5zTm9kZU1vZHVsZXM9SGU7ZnVuY3Rpb24gcnIoWmUpe3ZhciBTcj1lLm5vcm1hbGl6ZVBhdGgoWmUpLHpyPVNyLmxhc3RJbmRleE9mKGUubm9kZU1vZHVsZXNQYXRoUGFydCk7aWYoenIhPT0tMSl7dmFyIFdyPXpyK2Uubm9kZU1vZHVsZXNQYXRoUGFydC5sZW5ndGgsSmU9SWUoU3IsV3IpO3JldHVybiBTci5jaGFyQ29kZUF0KFdyKT09PTY0JiYoSmU9SWUoU3IsSmUpKSxTci5zbGljZSgwLEplKX19ZS5wYXJzZU5vZGVNb2R1bGVGcm9tUGF0aD1ycjtmdW5jdGlvbiBJZShaZSxTcil7dmFyIHpyPVplLmluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IsU3IrMSk7cmV0dXJuIHpyPT09LTE/U3I6enJ9ZnVuY3Rpb24gX2UoWmUsU3IsenIsV3Ipe3JldHVybiBCKHdlKFplLFNyLHpyLFdyKSl9ZnVuY3Rpb24gd2UoWmUsU3IsenIsV3Ipe2lmKFplPT09US5Kc29ufHxaZT09PVEuVFNDb25maWcpe3ZhciBKZT1lLnRyeVJlbW92ZUV4dGVuc2lvbihTcixcIi5qc29uXCIpLHhlPUplP1NyLnN1YnN0cmluZyhKZS5sZW5ndGgpOlwiXCI7cmV0dXJuIEplPT09dm9pZCAwJiZaZT09PVEuSnNvbj92b2lkIDA6QWUoSmV8fFNyLFplLHhlLHpyLFdyKX1pZighKFdyLmZlYXR1cmVzJmQuRXNtTW9kZSkpe3ZhciB2cj1BZShTcixaZSxcIlwiLHpyLFdyKTtpZih2cilyZXR1cm4gdnJ9cmV0dXJuIGRlKFplLFNyLHpyLFdyKX1mdW5jdGlvbiBkZShaZSxTcix6cixXcil7aWYoZS5oYXNKU0ZpbGVFeHRlbnNpb24oU3IpfHxlLmZpbGVFeHRlbnNpb25JcyhTcixcIi5qc29uXCIpJiZXci5jb21waWxlck9wdGlvbnMucmVzb2x2ZUpzb25Nb2R1bGUpe3ZhciBKZT1lLnJlbW92ZUZpbGVFeHRlbnNpb24oU3IpLHhlPVNyLnN1YnN0cmluZyhKZS5sZW5ndGgpO3JldHVybiBXci50cmFjZUVuYWJsZWQmJmEoV3IuaG9zdCxlLkRpYWdub3N0aWNzLkZpbGVfbmFtZV8wX2hhc19hXzFfZXh0ZW5zaW9uX3N0cmlwcGluZ19pdCxTcix4ZSksQWUoSmUsWmUseGUsenIsV3IpfX1mdW5jdGlvbiB5ZShaZSxTcix6cixXcil7aWYoKFplPT09US5UeXBlU2NyaXB0fHxaZT09PVEuRHRzT25seSkmJmUuZmlsZUV4dGVuc2lvbklzT25lT2YoU3IsZS5zdXBwb3J0ZWRUU0V4dGVuc2lvbnNGbGF0KSl7dmFyIEplPWVyKFNyLHpyLFdyKTtyZXR1cm4gSmUhPT12b2lkIDA/e3BhdGg6U3IsZXh0OmUudHJ5RXh0cmFjdFRTRXh0ZW5zaW9uKFNyKX06dm9pZCAwfXJldHVybiBkZShaZSxTcix6cixXcil9ZnVuY3Rpb24gQWUoWmUsU3IsenIsV3IsSmUpe2lmKCFXcil7dmFyIHhlPWUuZ2V0RGlyZWN0b3J5UGF0aChaZSk7eGUmJihXcj0hZS5kaXJlY3RvcnlQcm9iYWJseUV4aXN0cyh4ZSxKZS5ob3N0KSl9c3dpdGNoKFNyKXtjYXNlIFEuRHRzT25seTpzd2l0Y2goenIpe2Nhc2VcIi5tanNcIjpjYXNlXCIubXRzXCI6Y2FzZVwiLmQubXRzXCI6cmV0dXJuIG1yKFwiLmQubXRzXCIpO2Nhc2VcIi5janNcIjpjYXNlXCIuY3RzXCI6Y2FzZVwiLmQuY3RzXCI6cmV0dXJuIG1yKFwiLmQuY3RzXCIpO2Nhc2VcIi5qc29uXCI6cmV0dXJuIFplKz1cIi5qc29uXCIsbXIoXCIuZC50c1wiKTtkZWZhdWx0OnJldHVybiBtcihcIi5kLnRzXCIpfWNhc2UgUS5UeXBlU2NyaXB0OmNhc2UgUS5Uc09ubHk6dmFyIHZyPVNyPT09US5UeXBlU2NyaXB0O3N3aXRjaCh6cil7Y2FzZVwiLm1qc1wiOmNhc2VcIi5tdHNcIjpjYXNlXCIuZC5tdHNcIjpyZXR1cm4gbXIoXCIubXRzXCIpfHwodnI/bXIoXCIuZC5tdHNcIik6dm9pZCAwKTtjYXNlXCIuY2pzXCI6Y2FzZVwiLmN0c1wiOmNhc2VcIi5kLmN0c1wiOnJldHVybiBtcihcIi5jdHNcIil8fCh2cj9tcihcIi5kLmN0c1wiKTp2b2lkIDApO2Nhc2VcIi5qc29uXCI6cmV0dXJuIFplKz1cIi5qc29uXCIsdnI/bXIoXCIuZC50c1wiKTp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gbXIoXCIudHNcIil8fG1yKFwiLnRzeFwiKXx8KHZyP21yKFwiLmQudHNcIik6dm9pZCAwKX1jYXNlIFEuSmF2YVNjcmlwdDpzd2l0Y2goenIpe2Nhc2VcIi5tanNcIjpjYXNlXCIubXRzXCI6Y2FzZVwiLmQubXRzXCI6cmV0dXJuIG1yKFwiLm1qc1wiKTtjYXNlXCIuY2pzXCI6Y2FzZVwiLmN0c1wiOmNhc2VcIi5kLmN0c1wiOnJldHVybiBtcihcIi5janNcIik7Y2FzZVwiLmpzb25cIjpyZXR1cm4gbXIoXCIuanNvblwiKTtkZWZhdWx0OnJldHVybiBtcihcIi5qc1wiKXx8bXIoXCIuanN4XCIpfWNhc2UgUS5UU0NvbmZpZzpjYXNlIFEuSnNvbjpyZXR1cm4gbXIoXCIuanNvblwiKX1mdW5jdGlvbiBtcihBcil7dmFyIE9lPWVyKFplK0FyLFdyLEplKTtyZXR1cm4gT2U9PT12b2lkIDA/dm9pZCAwOntwYXRoOk9lLGV4dDpBcn19fWZ1bmN0aW9uIGVyKFplLFNyLHpyKXt2YXIgV3IsSmU7aWYoISghKChXcj16ci5jb21waWxlck9wdGlvbnMubW9kdWxlU3VmZml4ZXMpPT09bnVsbHx8V3I9PT12b2lkIDApJiZXci5sZW5ndGgpKXJldHVybiBpcihaZSxTcix6cik7dmFyIHhlPShKZT1lLnRyeUdldEV4dGVuc2lvbkZyb21QYXRoKFplKSkhPT1udWxsJiZKZSE9PXZvaWQgMD9KZTpcIlwiLHZyPXhlP2UucmVtb3ZlRXh0ZW5zaW9uKFplLHhlKTpaZTtyZXR1cm4gZS5mb3JFYWNoKHpyLmNvbXBpbGVyT3B0aW9ucy5tb2R1bGVTdWZmaXhlcyxmdW5jdGlvbihtcil7cmV0dXJuIGlyKHZyK21yK3hlLFNyLHpyKX0pfWZ1bmN0aW9uIGlyKFplLFNyLHpyKXtpZighU3Ipe2lmKHpyLmhvc3QuZmlsZUV4aXN0cyhaZSkpcmV0dXJuIHpyLnRyYWNlRW5hYmxlZCYmYSh6ci5ob3N0LGUuRGlhZ25vc3RpY3MuRmlsZV8wX2V4aXN0X3VzZV9pdF9hc19hX25hbWVfcmVzb2x1dGlvbl9yZXN1bHQsWmUpLFplO3pyLnRyYWNlRW5hYmxlZCYmYSh6ci5ob3N0LGUuRGlhZ25vc3RpY3MuRmlsZV8wX2RvZXNfbm90X2V4aXN0LFplKX16ci5mYWlsZWRMb29rdXBMb2NhdGlvbnMucHVzaChaZSl9ZnVuY3Rpb24gQ3IoWmUsU3IsenIsV3IsSmUpe0plPT09dm9pZCAwJiYoSmU9ITApO3ZhciB4ZT1KZT9OZShTcix6cixXcik6dm9pZCAwLHZyPXhlJiZ4ZS5wYWNrYWdlSnNvbkNvbnRlbnQsbXI9eGUmJnhlLnZlcnNpb25QYXRocztyZXR1cm4gdyh4ZSxuKFplLFNyLHpyLFdyLHZyLG1yKSl9ZnVuY3Rpb24gWWUoWmUsU3IsenIsV3IsSmUpe2lmKCFKZSYmWmUucmVzb2x2ZWRFbnRyeXBvaW50cyE9PXZvaWQgMClyZXR1cm4gWmUucmVzb2x2ZWRFbnRyeXBvaW50czt2YXIgeGUsdnI9SmU/US5KYXZhU2NyaXB0OlEuVHlwZVNjcmlwdCxtcj12ZShTciksQXI9e2NvbXBpbGVyT3B0aW9uczpTcixob3N0OnpyLHRyYWNlRW5hYmxlZDpDKFNyLHpyKSxmYWlsZWRMb29rdXBMb2NhdGlvbnM6W10scGFja2FnZUpzb25JbmZvQ2FjaGU6V3I9PW51bGw/dm9pZCAwOldyLmdldFBhY2thZ2VKc29uSW5mb0NhY2hlKCksY29uZGl0aW9uczpbXCJub2RlXCIsXCJyZXF1aXJlXCIsXCJ0eXBlc1wiXSxmZWF0dXJlczptcixyZXF1ZXN0Q29udGFpbmluZ0RpcmVjdG9yeTpaZS5wYWNrYWdlRGlyZWN0b3J5LHJlcG9ydERpYWdub3N0aWM6ZS5ub29wfSxPZT1uKHZyLFplLnBhY2thZ2VEaXJlY3RvcnksITEsQXIsWmUucGFja2FnZUpzb25Db250ZW50LFplLnZlcnNpb25QYXRocyk7aWYoeGU9ZS5hcHBlbmQoeGUsT2U9PW51bGw/dm9pZCAwOk9lLnBhdGgpLG1yJmQuRXhwb3J0cyYmWmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMpZm9yKHZhciBucj0wLE1yPVtbXCJub2RlXCIsXCJpbXBvcnRcIixcInR5cGVzXCJdLFtcIm5vZGVcIixcInJlcXVpcmVcIixcInR5cGVzXCJdXTtucjxNci5sZW5ndGg7bnIrKyl7dmFyIFBlPU1yW25yXSxVZT1LZShLZSh7fSxBcikse2ZhaWxlZExvb2t1cExvY2F0aW9uczpbXSxjb25kaXRpb25zOlBlfSksZnI9QnIoWmUsWmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMsVWUsdnIpO2lmKGZyKWZvcih2YXIgRGU9MCxncj1mcjtEZTxnci5sZW5ndGg7RGUrKyl7dmFyIFZyPWdyW0RlXTt4ZT1lLmFwcGVuZElmVW5pcXVlKHhlLFZyLnBhdGgpfX1yZXR1cm4gWmUucmVzb2x2ZWRFbnRyeXBvaW50cz14ZXx8ITF9ZS5nZXRFbnRyeXBvaW50c0Zyb21QYWNrYWdlSnNvbkluZm89WWU7ZnVuY3Rpb24gQnIoWmUsU3IsenIsV3Ipe3ZhciBKZTtpZihlLmlzQXJyYXkoU3IpKWZvcih2YXIgeGU9MCx2cj1Tcjt4ZTx2ci5sZW5ndGg7eGUrKyl7dmFyIG1yPXZyW3hlXTtPZShtcil9ZWxzZSBpZih0eXBlb2YgU3I9PVwib2JqZWN0XCImJlNyIT09bnVsbCYmdXIoU3IpKWZvcih2YXIgQXIgaW4gU3IpT2UoU3JbQXJdKTtlbHNlIE9lKFNyKTtyZXR1cm4gSmU7ZnVuY3Rpb24gT2UobnIpe3ZhciBNcixQZTtpZih0eXBlb2YgbnI9PVwic3RyaW5nXCImJmUuc3RhcnRzV2l0aChucixcIi4vXCIpJiZuci5pbmRleE9mKFwiKlwiKT09PS0xKXt2YXIgVWU9ZS5nZXRQYXRoQ29tcG9uZW50cyhucikuc2xpY2UoMik7aWYoVWUuaW5kZXhPZihcIi4uXCIpPj0wfHxVZS5pbmRleE9mKFwiLlwiKT49MHx8VWUuaW5kZXhPZihcIm5vZGVfbW9kdWxlc1wiKT49MClyZXR1cm4hMTt2YXIgZnI9ZS5jb21iaW5lUGF0aHMoWmUucGFja2FnZURpcmVjdG9yeSxuciksRGU9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGZyLChQZT0oTXI9enIuaG9zdCkuZ2V0Q3VycmVudERpcmVjdG9yeSk9PT1udWxsfHxQZT09PXZvaWQgMD92b2lkIDA6UGUuY2FsbChNcikpLGdyPXllKFdyLERlLCExLHpyKTtpZihncilyZXR1cm4gSmU9ZS5hcHBlbmRJZlVuaXF1ZShKZSxncixmdW5jdGlvbihZaSxXaSl7cmV0dXJuIFlpLnBhdGg9PT1XaS5wYXRofSksITB9ZWxzZSBpZihBcnJheS5pc0FycmF5KG5yKSlmb3IodmFyIFZyPTAsVHI9bnI7VnI8VHIubGVuZ3RoO1ZyKyspe3ZhciB2aT1UcltWcl0sVWk9T2UodmkpO2lmKFVpKXJldHVybiEwfWVsc2UgaWYodHlwZW9mIG5yPT1cIm9iamVjdFwiJiZuciE9PW51bGwpcmV0dXJuIGUuZm9yRWFjaChlLmdldE93bktleXMobnIpLGZ1bmN0aW9uKFlpKXtpZihZaT09PVwiZGVmYXVsdFwifHxlLmNvbnRhaW5zKHpyLmNvbmRpdGlvbnMsWWkpfHxwZSh6ci5jb25kaXRpb25zLFlpKSlyZXR1cm4gT2UobnJbWWldKSwhMH0pfX1mdW5jdGlvbiBFcihaZSxTcix6cixXcil7dmFyIEplPXtob3N0OnpyLGNvbXBpbGVyT3B0aW9uczpXcix0cmFjZUVuYWJsZWQ6QyhXcix6ciksZmFpbGVkTG9va3VwTG9jYXRpb25zOltdLHBhY2thZ2VKc29uSW5mb0NhY2hlOlNyLGZlYXR1cmVzOjAsY29uZGl0aW9uczpbXSxyZXF1ZXN0Q29udGFpbmluZ0RpcmVjdG9yeTp2b2lkIDAscmVwb3J0RGlhZ25vc3RpYzplLm5vb3B9LHhlPWUuZ2V0UGF0aENvbXBvbmVudHMoWmUpO2Zvcih4ZS5wb3AoKTt4ZS5sZW5ndGg+MDspe3ZhciB2cj1OZShlLmdldFBhdGhGcm9tUGF0aENvbXBvbmVudHMoeGUpLCExLEplKTtpZih2cilyZXR1cm4gdnI7eGUucG9wKCl9fWUuZ2V0UGFja2FnZVNjb3BlRm9yUGF0aD1FcjtmdW5jdGlvbiBOZShaZSxTcix6cil7dmFyIFdyLEplLHhlLHZyPXpyLmhvc3QsbXI9enIudHJhY2VFbmFibGVkLEFyPWUuY29tYmluZVBhdGhzKFplLFwicGFja2FnZS5qc29uXCIpO2lmKFNyKXt6ci5mYWlsZWRMb29rdXBMb2NhdGlvbnMucHVzaChBcik7cmV0dXJufXZhciBPZT0oV3I9enIucGFja2FnZUpzb25JbmZvQ2FjaGUpPT09bnVsbHx8V3I9PT12b2lkIDA/dm9pZCAwOldyLmdldFBhY2thZ2VKc29uSW5mbyhBcik7aWYoT2UhPT12b2lkIDApe2lmKHR5cGVvZiBPZSE9XCJib29sZWFuXCIpcmV0dXJuIG1yJiZhKHZyLGUuRGlhZ25vc3RpY3MuRmlsZV8wX2V4aXN0c19hY2NvcmRpbmdfdG9fZWFybGllcl9jYWNoZWRfbG9va3VwcyxBciksT2U7T2UmJm1yJiZhKHZyLGUuRGlhZ25vc3RpY3MuRmlsZV8wX2RvZXNfbm90X2V4aXN0X2FjY29yZGluZ190b19lYXJsaWVyX2NhY2hlZF9sb29rdXBzLEFyKSx6ci5mYWlsZWRMb29rdXBMb2NhdGlvbnMucHVzaChBcik7cmV0dXJufXZhciBucj1lLmRpcmVjdG9yeVByb2JhYmx5RXhpc3RzKFplLHZyKTtpZihuciYmdnIuZmlsZUV4aXN0cyhBcikpe3ZhciBNcj1lLnJlYWRKc29uKEFyLHZyKTttciYmYSh2cixlLkRpYWdub3N0aWNzLkZvdW5kX3BhY2thZ2VfanNvbl9hdF8wLEFyKTt2YXIgUGU9SyhNcix6ciksVWU9e3BhY2thZ2VEaXJlY3Rvcnk6WmUscGFja2FnZUpzb25Db250ZW50Ok1yLHZlcnNpb25QYXRoczpQZSxyZXNvbHZlZEVudHJ5cG9pbnRzOnZvaWQgMH07cmV0dXJuKEplPXpyLnBhY2thZ2VKc29uSW5mb0NhY2hlKT09PW51bGx8fEplPT09dm9pZCAwfHxKZS5zZXRQYWNrYWdlSnNvbkluZm8oQXIsVWUpLFVlfWVsc2UgbnImJm1yJiZhKHZyLGUuRGlhZ25vc3RpY3MuRmlsZV8wX2RvZXNfbm90X2V4aXN0LEFyKSwoeGU9enIucGFja2FnZUpzb25JbmZvQ2FjaGUpPT09bnVsbHx8eGU9PT12b2lkIDB8fHhlLnNldFBhY2thZ2VKc29uSW5mbyhBcixuciksenIuZmFpbGVkTG9va3VwTG9jYXRpb25zLnB1c2goQXIpfWUuZ2V0UGFja2FnZUpzb25JbmZvPU5lO2Z1bmN0aW9uIG4oWmUsU3IsenIsV3IsSmUseGUpe3ZhciB2cjtpZihKZSlzd2l0Y2goWmUpe2Nhc2UgUS5KYXZhU2NyaXB0OmNhc2UgUS5Kc29uOmNhc2UgUS5Uc09ubHk6dnI9ZihKZSxTcixXcik7YnJlYWs7Y2FzZSBRLlR5cGVTY3JpcHQ6dnI9RyhKZSxTcixXcil8fGYoSmUsU3IsV3IpO2JyZWFrO2Nhc2UgUS5EdHNPbmx5OnZyPUcoSmUsU3IsV3IpO2JyZWFrO2Nhc2UgUS5UU0NvbmZpZzp2cj1vZShKZSxTcixXcik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihaZSl9dmFyIG1yPWZ1bmN0aW9uKGZyLERlLGdyLFZyKXt2YXIgVHI9ZXIoRGUsZ3IsVnIpO2lmKFRyKXt2YXIgdmk9bHIoZnIsVHIpO2lmKHZpKXJldHVybiBCKHZpKTtWci50cmFjZUVuYWJsZWQmJmEoVnIuaG9zdCxlLkRpYWdub3N0aWNzLkZpbGVfMF9oYXNfYW5fdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uX3NvX3NraXBwaW5nX2l0LFRyKX12YXIgVWk9ZnI9PT1RLkR0c09ubHk/US5UeXBlU2NyaXB0OmZyLFlpPVZyLmZlYXR1cmVzOyhKZT09bnVsbD92b2lkIDA6SmUudHlwZSkhPT1cIm1vZHVsZVwiJiYoVnIuZmVhdHVyZXMmPX5kLkVzbU1vZGUpO3ZhciBXaT1FZShVaSxEZSxncixWciwhMSk7cmV0dXJuIFZyLmZlYXR1cmVzPVlpLFdpfSxBcj12cj8hZS5kaXJlY3RvcnlQcm9iYWJseUV4aXN0cyhlLmdldERpcmVjdG9yeVBhdGgodnIpLFdyLmhvc3QpOnZvaWQgMCxPZT16cnx8IWUuZGlyZWN0b3J5UHJvYmFibHlFeGlzdHMoU3IsV3IuaG9zdCksbnI9ZS5jb21iaW5lUGF0aHMoU3IsWmU9PT1RLlRTQ29uZmlnP1widHNjb25maWdcIjpcImluZGV4XCIpO2lmKHhlJiYoIXZyfHxlLmNvbnRhaW5zUGF0aChTcix2cikpKXt2YXIgTXI9ZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRGlyZWN0b3J5KFNyLHZyfHxuciwhMSk7V3IudHJhY2VFbmFibGVkJiZhKFdyLmhvc3QsZS5EaWFnbm9zdGljcy5wYWNrYWdlX2pzb25faGFzX2FfdHlwZXNWZXJzaW9uc19lbnRyeV8wX3RoYXRfbWF0Y2hlc19jb21waWxlcl92ZXJzaW9uXzFfbG9va2luZ19mb3JfYV9wYXR0ZXJuX3RvX21hdGNoX21vZHVsZV9uYW1lXzIseGUudmVyc2lvbixlLnZlcnNpb24sTXIpO3ZhciBQZT1YaShaZSxNcixTcix4ZS5wYXRocyx2b2lkIDAsbXIsQXJ8fE9lLFdyKTtpZihQZSlyZXR1cm4gRShQZS52YWx1ZSl9dmFyIFVlPXZyJiZFKG1yKFplLHZyLEFyLFdyKSk7aWYoVWUpcmV0dXJuIFVlO2lmKCEoV3IuZmVhdHVyZXMmZC5Fc21Nb2RlKSlyZXR1cm4gd2UoWmUsbnIsT2UsV3IpfWZ1bmN0aW9uIGxyKFplLFNyKXt2YXIgenI9ZS50cnlHZXRFeHRlbnNpb25Gcm9tUGF0aChTcik7cmV0dXJuIHpyIT09dm9pZCAwJiZiZShaZSx6cik/e3BhdGg6U3IsZXh0OnpyfTp2b2lkIDB9ZnVuY3Rpb24gYmUoWmUsU3Ipe3N3aXRjaChaZSl7Y2FzZSBRLkphdmFTY3JpcHQ6cmV0dXJuIFNyPT09XCIuanNcInx8U3I9PT1cIi5qc3hcInx8U3I9PT1cIi5tanNcInx8U3I9PT1cIi5janNcIjtjYXNlIFEuVFNDb25maWc6Y2FzZSBRLkpzb246cmV0dXJuIFNyPT09XCIuanNvblwiO2Nhc2UgUS5UeXBlU2NyaXB0OnJldHVybiBTcj09PVwiLnRzXCJ8fFNyPT09XCIudHN4XCJ8fFNyPT09XCIubXRzXCJ8fFNyPT09XCIuY3RzXCJ8fFNyPT09XCIuZC50c1wifHxTcj09PVwiLmQubXRzXCJ8fFNyPT09XCIuZC5jdHNcIjtjYXNlIFEuVHNPbmx5OnJldHVybiBTcj09PVwiLnRzXCJ8fFNyPT09XCIudHN4XCJ8fFNyPT09XCIubXRzXCJ8fFNyPT09XCIuY3RzXCI7Y2FzZSBRLkR0c09ubHk6cmV0dXJuIFNyPT09XCIuZC50c1wifHxTcj09PVwiLmQubXRzXCJ8fFNyPT09XCIuZC5jdHNcIn19ZnVuY3Rpb24gR2UoWmUpe3ZhciBTcj1aZS5pbmRleE9mKGUuZGlyZWN0b3J5U2VwYXJhdG9yKTtyZXR1cm4gWmVbMF09PT1cIkBcIiYmKFNyPVplLmluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IsU3IrMSkpLFNyPT09LTE/e3BhY2thZ2VOYW1lOlplLHJlc3Q6XCJcIn06e3BhY2thZ2VOYW1lOlplLnNsaWNlKDAsU3IpLHJlc3Q6WmUuc2xpY2UoU3IrMSl9fWUucGFyc2VQYWNrYWdlTmFtZT1HZTtmdW5jdGlvbiB1cihaZSl7cmV0dXJuIGUuZXZlcnkoZS5nZXRPd25LZXlzKFplKSxmdW5jdGlvbihTcil7cmV0dXJuIGUuc3RhcnRzV2l0aChTcixcIi5cIil9KX1lLmFsbEtleXNTdGFydFdpdGhEb3Q9dXI7ZnVuY3Rpb24geXIoWmUpe3JldHVybiFlLnNvbWUoZS5nZXRPd25LZXlzKFplKSxmdW5jdGlvbihTcil7cmV0dXJuIGUuc3RhcnRzV2l0aChTcixcIi5cIil9KX1mdW5jdGlvbiBJcihaZSxTcix6cixXcixKZSx4ZSl7dmFyIHZyLG1yLEFyPXR5cGVvZiBXci5ob3N0LnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM9PVwiZnVuY3Rpb25cIj9Xci5ob3N0LnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKTpXci5ob3N0LnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMsT2U9ZS50b1BhdGgoZS5jb21iaW5lUGF0aHMoenIsXCJkdW1teVwiKSwobXI9KHZyPVdyLmhvc3QpLmdldEN1cnJlbnREaXJlY3RvcnkpPT09bnVsbHx8bXI9PT12b2lkIDA/dm9pZCAwOm1yLmNhbGwodnIpLGUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoQXI9PT12b2lkIDA/ITA6QXIpKSxucj1FcihPZSxXci5wYWNrYWdlSnNvbkluZm9DYWNoZSxXci5ob3N0LFdyLmNvbXBpbGVyT3B0aW9ucyk7aWYoISghbnJ8fCFuci5wYWNrYWdlSnNvbkNvbnRlbnQuZXhwb3J0cykmJnR5cGVvZiBuci5wYWNrYWdlSnNvbkNvbnRlbnQubmFtZT09XCJzdHJpbmdcIil7dmFyIE1yPWUuZ2V0UGF0aENvbXBvbmVudHMoU3IpLFBlPWUuZ2V0UGF0aENvbXBvbmVudHMobnIucGFja2FnZUpzb25Db250ZW50Lm5hbWUpO2lmKCEhZS5ldmVyeShQZSxmdW5jdGlvbihmcixEZSl7cmV0dXJuIE1yW0RlXT09PWZyfSkpe3ZhciBVZT1Nci5zbGljZShQZS5sZW5ndGgpO3JldHVybiB3cihucixaZSxlLmxlbmd0aChVZSk/XCIuXCIuY29uY2F0KGUuZGlyZWN0b3J5U2VwYXJhdG9yKS5jb25jYXQoVWUuam9pbihlLmRpcmVjdG9yeVNlcGFyYXRvcikpOlwiLlwiLFdyLEplLHhlKX19fWZ1bmN0aW9uIHdyKFplLFNyLHpyLFdyLEplLHhlKXtpZighIVplLnBhY2thZ2VKc29uQ29udGVudC5leHBvcnRzKXtpZih6cj09PVwiLlwiKXt2YXIgdnI9dm9pZCAwO2lmKHR5cGVvZiBaZS5wYWNrYWdlSnNvbkNvbnRlbnQuZXhwb3J0cz09XCJzdHJpbmdcInx8QXJyYXkuaXNBcnJheShaZS5wYWNrYWdlSnNvbkNvbnRlbnQuZXhwb3J0cyl8fHR5cGVvZiBaZS5wYWNrYWdlSnNvbkNvbnRlbnQuZXhwb3J0cz09XCJvYmplY3RcIiYmeXIoWmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMpP3ZyPVplLnBhY2thZ2VKc29uQ29udGVudC5leHBvcnRzOmUuaGFzUHJvcGVydHkoWmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMsXCIuXCIpJiYodnI9WmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHNbXCIuXCJdKSx2cil7dmFyIG1yPW1pKFNyLFdyLEplLHhlLHpyLFplLCExKTtyZXR1cm4gbXIodnIsXCJcIiwhMSl9fWVsc2UgaWYodXIoWmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMpKXtpZih0eXBlb2YgWmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMhPVwib2JqZWN0XCIpcmV0dXJuIFdyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MuRXhwb3J0X3NwZWNpZmllcl8wX2RvZXNfbm90X2V4aXN0X2luX3BhY2thZ2VfanNvbl9zY29wZV9hdF9wYXRoXzEsenIsWmUucGFja2FnZURpcmVjdG9yeSksdGkodm9pZCAwKTt2YXIgQXI9aWkoU3IsV3IsSmUseGUsenIsWmUucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMsWmUsITEpO2lmKEFyKXJldHVybiBBcn1yZXR1cm4gV3IudHJhY2VFbmFibGVkJiZhKFdyLmhvc3QsZS5EaWFnbm9zdGljcy5FeHBvcnRfc3BlY2lmaWVyXzBfZG9lc19ub3RfZXhpc3RfaW5fcGFja2FnZV9qc29uX3Njb3BlX2F0X3BhdGhfMSx6cixaZS5wYWNrYWdlRGlyZWN0b3J5KSx0aSh2b2lkIDApfX1mdW5jdGlvbiBVcihaZSxTcix6cixXcixKZSx4ZSl7dmFyIHZyLG1yO2lmKFNyPT09XCIjXCJ8fGUuc3RhcnRzV2l0aChTcixcIiMvXCIpKXJldHVybiBXci50cmFjZUVuYWJsZWQmJmEoV3IuaG9zdCxlLkRpYWdub3N0aWNzLkludmFsaWRfaW1wb3J0X3NwZWNpZmllcl8wX2hhc19ub19wb3NzaWJsZV9yZXNvbHV0aW9ucyxTciksdGkodm9pZCAwKTt2YXIgQXI9dHlwZW9mIFdyLmhvc3QudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcz09XCJmdW5jdGlvblwiP1dyLmhvc3QudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpOldyLmhvc3QudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyxPZT1lLnRvUGF0aChlLmNvbWJpbmVQYXRocyh6cixcImR1bW15XCIpLChtcj0odnI9V3IuaG9zdCkuZ2V0Q3VycmVudERpcmVjdG9yeSk9PT1udWxsfHxtcj09PXZvaWQgMD92b2lkIDA6bXIuY2FsbCh2ciksZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShBcj09PXZvaWQgMD8hMDpBcikpLG5yPUVyKE9lLFdyLnBhY2thZ2VKc29uSW5mb0NhY2hlLFdyLmhvc3QsV3IuY29tcGlsZXJPcHRpb25zKTtpZighbnIpcmV0dXJuIFdyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MuRGlyZWN0b3J5XzBfaGFzX25vX2NvbnRhaW5pbmdfcGFja2FnZV9qc29uX3Njb3BlX0ltcG9ydHNfd2lsbF9ub3RfcmVzb2x2ZSxPZSksdGkodm9pZCAwKTtpZighbnIucGFja2FnZUpzb25Db250ZW50LmltcG9ydHMpcmV0dXJuIFdyLnRyYWNlRW5hYmxlZCYmYShXci5ob3N0LGUuRGlhZ25vc3RpY3MucGFja2FnZV9qc29uX3Njb3BlXzBfaGFzX25vX2ltcG9ydHNfZGVmaW5lZCxuci5wYWNrYWdlRGlyZWN0b3J5KSx0aSh2b2lkIDApO3ZhciBNcj1paShaZSxXcixKZSx4ZSxTcixuci5wYWNrYWdlSnNvbkNvbnRlbnQuaW1wb3J0cyxuciwhMCk7cmV0dXJuIE1yfHwoV3IudHJhY2VFbmFibGVkJiZhKFdyLmhvc3QsZS5EaWFnbm9zdGljcy5JbXBvcnRfc3BlY2lmaWVyXzBfZG9lc19ub3RfZXhpc3RfaW5fcGFja2FnZV9qc29uX3Njb3BlX2F0X3BhdGhfMSxTcixuci5wYWNrYWdlRGlyZWN0b3J5KSx0aSh2b2lkIDApKX1mdW5jdGlvbiBpaShaZSxTcix6cixXcixKZSx4ZSx2cixtcil7dmFyIEFyPW1pKFplLFNyLHpyLFdyLEplLHZyLG1yKTtpZighZS5lbmRzV2l0aChKZSxlLmRpcmVjdG9yeVNlcGFyYXRvcikmJkplLmluZGV4T2YoXCIqXCIpPT09LTEmJmUuaGFzUHJvcGVydHkoeGUsSmUpKXt2YXIgT2U9eGVbSmVdO3JldHVybiBBcihPZSxcIlwiLCExKX1mb3IodmFyIG5yPWUuc29ydChlLmZpbHRlcihlLmdldE93bktleXMoeGUpLGZ1bmN0aW9uKFZyKXtyZXR1cm4gVnIuaW5kZXhPZihcIipcIikhPT0tMXx8ZS5lbmRzV2l0aChWcixcIi9cIil9KSxmdW5jdGlvbihWcixUcil7cmV0dXJuIFZyLmxlbmd0aC1Uci5sZW5ndGh9KSxNcj0wLFBlPW5yO01yPFBlLmxlbmd0aDtNcisrKXt2YXIgVWU9UGVbTXJdO2lmKFNyLmZlYXR1cmVzJmQuRXhwb3J0c1BhdHRlcm5UcmFpbGVycyYmZ3IoVWUsSmUpKXt2YXIgT2U9eGVbVWVdLGZyPVVlLmluZGV4T2YoXCIqXCIpLERlPUplLnN1YnN0cmluZyhVZS5zdWJzdHJpbmcoMCxmcikubGVuZ3RoLEplLmxlbmd0aC0oVWUubGVuZ3RoLTEtZnIpKTtyZXR1cm4gQXIoT2UsRGUsITApfWVsc2UgaWYoZS5lbmRzV2l0aChVZSxcIipcIikmJmUuc3RhcnRzV2l0aChKZSxVZS5zdWJzdHJpbmcoMCxVZS5sZW5ndGgtMSkpKXt2YXIgT2U9eGVbVWVdLERlPUplLnN1YnN0cmluZyhVZS5sZW5ndGgtMSk7cmV0dXJuIEFyKE9lLERlLCEwKX1lbHNlIGlmKGUuc3RhcnRzV2l0aChKZSxVZSkpe3ZhciBPZT14ZVtVZV0sRGU9SmUuc3Vic3RyaW5nKFVlLmxlbmd0aCk7cmV0dXJuIEFyKE9lLERlLCExKX19ZnVuY3Rpb24gZ3IoVnIsVHIpe2lmKGUuZW5kc1dpdGgoVnIsXCIqXCIpKXJldHVybiExO3ZhciB2aT1Wci5pbmRleE9mKFwiKlwiKTtyZXR1cm4gdmk9PT0tMT8hMTplLnN0YXJ0c1dpdGgoVHIsVnIuc3Vic3RyaW5nKDAsdmkpKSYmZS5lbmRzV2l0aChUcixWci5zdWJzdHJpbmcodmkrMSkpfX1mdW5jdGlvbiBtaShaZSxTcix6cixXcixKZSx4ZSx2cil7cmV0dXJuIG1yO2Z1bmN0aW9uIG1yKEFyLE9lLG5yKXtpZih0eXBlb2YgQXI9PVwic3RyaW5nXCIpe2lmKCFuciYmT2UubGVuZ3RoPjAmJiFlLmVuZHNXaXRoKEFyLFwiL1wiKSlyZXR1cm4gU3IudHJhY2VFbmFibGVkJiZhKFNyLmhvc3QsZS5EaWFnbm9zdGljcy5wYWNrYWdlX2pzb25fc2NvcGVfMF9oYXNfaW52YWxpZF90eXBlX2Zvcl90YXJnZXRfb2Zfc3BlY2lmaWVyXzEseGUucGFja2FnZURpcmVjdG9yeSxKZSksdGkodm9pZCAwKTtpZighZS5zdGFydHNXaXRoKEFyLFwiLi9cIikpe2lmKHZyJiYhZS5zdGFydHNXaXRoKEFyLFwiLi4vXCIpJiYhZS5zdGFydHNXaXRoKEFyLFwiL1wiKSYmIWUuaXNSb290ZWREaXNrUGF0aChBcikpe3ZhciBNcj1ucj9Bci5yZXBsYWNlKC9cXCovZyxPZSk6QXIrT2UsUGU9Z2UoU3IuZmVhdHVyZXMsTXIseGUucGFja2FnZURpcmVjdG9yeStcIi9cIixTci5jb21waWxlck9wdGlvbnMsU3IuaG9zdCx6cixbWmVdLFdyKTtyZXR1cm4gdGkoUGUucmVzb2x2ZWRNb2R1bGU/e3BhdGg6UGUucmVzb2x2ZWRNb2R1bGUucmVzb2x2ZWRGaWxlTmFtZSxleHRlbnNpb246UGUucmVzb2x2ZWRNb2R1bGUuZXh0ZW5zaW9uLHBhY2thZ2VJZDpQZS5yZXNvbHZlZE1vZHVsZS5wYWNrYWdlSWQsb3JpZ2luYWxQYXRoOlBlLnJlc29sdmVkTW9kdWxlLm9yaWdpbmFsUGF0aH06dm9pZCAwKX1yZXR1cm4gU3IudHJhY2VFbmFibGVkJiZhKFNyLmhvc3QsZS5EaWFnbm9zdGljcy5wYWNrYWdlX2pzb25fc2NvcGVfMF9oYXNfaW52YWxpZF90eXBlX2Zvcl90YXJnZXRfb2Zfc3BlY2lmaWVyXzEseGUucGFja2FnZURpcmVjdG9yeSxKZSksdGkodm9pZCAwKX12YXIgVWU9ZS5wYXRoSXNSZWxhdGl2ZShBcik/ZS5nZXRQYXRoQ29tcG9uZW50cyhBcikuc2xpY2UoMSk6ZS5nZXRQYXRoQ29tcG9uZW50cyhBciksZnI9VWUuc2xpY2UoMSk7aWYoZnIuaW5kZXhPZihcIi4uXCIpPj0wfHxmci5pbmRleE9mKFwiLlwiKT49MHx8ZnIuaW5kZXhPZihcIm5vZGVfbW9kdWxlc1wiKT49MClyZXR1cm4gU3IudHJhY2VFbmFibGVkJiZhKFNyLmhvc3QsZS5EaWFnbm9zdGljcy5wYWNrYWdlX2pzb25fc2NvcGVfMF9oYXNfaW52YWxpZF90eXBlX2Zvcl90YXJnZXRfb2Zfc3BlY2lmaWVyXzEseGUucGFja2FnZURpcmVjdG9yeSxKZSksdGkodm9pZCAwKTt2YXIgRGU9ZS5jb21iaW5lUGF0aHMoeGUucGFja2FnZURpcmVjdG9yeSxBciksZ3I9ZS5nZXRQYXRoQ29tcG9uZW50cyhPZSk7aWYoZ3IuaW5kZXhPZihcIi4uXCIpPj0wfHxnci5pbmRleE9mKFwiLlwiKT49MHx8Z3IuaW5kZXhPZihcIm5vZGVfbW9kdWxlc1wiKT49MClyZXR1cm4gU3IudHJhY2VFbmFibGVkJiZhKFNyLmhvc3QsZS5EaWFnbm9zdGljcy5wYWNrYWdlX2pzb25fc2NvcGVfMF9oYXNfaW52YWxpZF90eXBlX2Zvcl90YXJnZXRfb2Zfc3BlY2lmaWVyXzEseGUucGFja2FnZURpcmVjdG9yeSxKZSksdGkodm9pZCAwKTt2YXIgVnI9TXQobnI/RGUucmVwbGFjZSgvXFwqL2csT2UpOkRlK09lKSxUcj1EdChWcixPZSxlLmNvbWJpbmVQYXRocyh4ZS5wYWNrYWdlRGlyZWN0b3J5LFwicGFja2FnZS5qc29uXCIpLHZyKTtyZXR1cm4gVHJ8fHRpKHcoeGUseWUoWmUsVnIsITEsU3IpKSl9ZWxzZSBpZih0eXBlb2YgQXI9PVwib2JqZWN0XCImJkFyIT09bnVsbClpZihBcnJheS5pc0FycmF5KEFyKSl7aWYoIWUubGVuZ3RoKEFyKSlyZXR1cm4gU3IudHJhY2VFbmFibGVkJiZhKFNyLmhvc3QsZS5EaWFnbm9zdGljcy5wYWNrYWdlX2pzb25fc2NvcGVfMF9oYXNfaW52YWxpZF90eXBlX2Zvcl90YXJnZXRfb2Zfc3BlY2lmaWVyXzEseGUucGFja2FnZURpcmVjdG9yeSxKZSksdGkodm9pZCAwKTtmb3IodmFyIGN0PTAsTGk9QXI7Y3Q8TGkubGVuZ3RoO2N0Kyspe3ZhciBudD1MaVtjdF0sUGU9bXIobnQsT2UsbnIpO2lmKFBlKXJldHVybiBQZX19ZWxzZXtmb3IodmFyIHZpPTAsVWk9ZS5nZXRPd25LZXlzKEFyKTt2aTxVaS5sZW5ndGg7dmkrKyl7dmFyIFlpPVVpW3ZpXTtpZihZaT09PVwiZGVmYXVsdFwifHxTci5jb25kaXRpb25zLmluZGV4T2YoWWkpPj0wfHxwZShTci5jb25kaXRpb25zLFlpKSl7dmFyIFdpPUFyW1lpXSxQZT1tcihXaSxPZSxucik7aWYoUGUpcmV0dXJuIFBlfX1yZXR1cm59ZWxzZSBpZihBcj09PW51bGwpcmV0dXJuIFNyLnRyYWNlRW5hYmxlZCYmYShTci5ob3N0LGUuRGlhZ25vc3RpY3MucGFja2FnZV9qc29uX3Njb3BlXzBfZXhwbGljaXRseV9tYXBzX3NwZWNpZmllcl8xX3RvX251bGwseGUucGFja2FnZURpcmVjdG9yeSxKZSksdGkodm9pZCAwKTtyZXR1cm4gU3IudHJhY2VFbmFibGVkJiZhKFNyLmhvc3QsZS5EaWFnbm9zdGljcy5wYWNrYWdlX2pzb25fc2NvcGVfMF9oYXNfaW52YWxpZF90eXBlX2Zvcl90YXJnZXRfb2Zfc3BlY2lmaWVyXzEseGUucGFja2FnZURpcmVjdG9yeSxKZSksdGkodm9pZCAwKTtmdW5jdGlvbiBNdChSdCl7dmFyIElpLEtpO3JldHVybiBSdD09PXZvaWQgMD9SdDplLmhvc3RHZXRDYW5vbmljYWxGaWxlTmFtZSh7dXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczp1dH0pKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChSdCwoS2k9KElpPVNyLmhvc3QpLmdldEN1cnJlbnREaXJlY3RvcnkpPT09bnVsbHx8S2k9PT12b2lkIDA/dm9pZCAwOktpLmNhbGwoSWkpKSl9ZnVuY3Rpb24geHQoUnQsSWkpe3JldHVybiBlLmVuc3VyZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKGUuY29tYmluZVBhdGhzKFJ0LElpKSl9ZnVuY3Rpb24gdXQoKXtyZXR1cm4gU3IuaG9zdC51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzP3R5cGVvZiBTci5ob3N0LnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM9PVwiYm9vbGVhblwiP1NyLmhvc3QudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczpTci5ob3N0LnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKTohMH1mdW5jdGlvbiBEdChSdCxJaSxLaSxGaSl7dmFyIHVpLEJ0LHd0LG5hO2lmKChaZT09PVEuVHlwZVNjcmlwdHx8WmU9PT1RLkphdmFTY3JpcHR8fFplPT09US5Kc29uKSYmKFNyLmNvbXBpbGVyT3B0aW9ucy5kZWNsYXJhdGlvbkRpcnx8U3IuY29tcGlsZXJPcHRpb25zLm91dERpcikmJlJ0LmluZGV4T2YoXCIvbm9kZV9tb2R1bGVzL1wiKT09PS0xJiYoU3IuY29tcGlsZXJPcHRpb25zLmNvbmZpZ0ZpbGU/ZS5zdGFydHNXaXRoKE10KFNyLmNvbXBpbGVyT3B0aW9ucy5jb25maWdGaWxlLmZpbGVOYW1lKSx4ZS5wYWNrYWdlRGlyZWN0b3J5KTohMCkpe3ZhciBBaT1lLmhvc3RHZXRDYW5vbmljYWxGaWxlTmFtZSh7dXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczp1dH0pLE9pPVtdO2lmKFNyLmNvbXBpbGVyT3B0aW9ucy5yb290RGlyfHxTci5jb21waWxlck9wdGlvbnMuY29tcG9zaXRlJiZTci5jb21waWxlck9wdGlvbnMuY29uZmlnRmlsZVBhdGgpe3ZhciBqaT1NdChlLmdldENvbW1vblNvdXJjZURpcmVjdG9yeShTci5jb21waWxlck9wdGlvbnMsZnVuY3Rpb24oKXtyZXR1cm5bXX0sKChCdD0odWk9U3IuaG9zdCkuZ2V0Q3VycmVudERpcmVjdG9yeSk9PT1udWxsfHxCdD09PXZvaWQgMD92b2lkIDA6QnQuY2FsbCh1aSkpfHxcIlwiLEFpKSk7T2kucHVzaChqaSl9ZWxzZSBpZihTci5yZXF1ZXN0Q29udGFpbmluZ0RpcmVjdG9yeSl7dmFyIFZpPU10KGUuY29tYmluZVBhdGhzKFNyLnJlcXVlc3RDb250YWluaW5nRGlyZWN0b3J5LFwiaW5kZXgudHNcIikpLGppPU10KGUuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KFNyLmNvbXBpbGVyT3B0aW9ucyxmdW5jdGlvbigpe3JldHVybltWaSxNdChLaSldfSwoKG5hPSh3dD1Tci5ob3N0KS5nZXRDdXJyZW50RGlyZWN0b3J5KT09PW51bGx8fG5hPT09dm9pZCAwP3ZvaWQgMDpuYS5jYWxsKHd0KSl8fFwiXCIsQWkpKTtPaS5wdXNoKGppKTtmb3IodmFyIGF0PWUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoamkpO2F0JiZhdC5sZW5ndGg+MTspe3ZhciBBdD1lLmdldFBhdGhDb21wb25lbnRzKGF0KTtBdC5wb3AoKTt2YXIgYmE9ZS5nZXRQYXRoRnJvbVBhdGhDb21wb25lbnRzKEF0KTtPaS51bnNoaWZ0KGJhKSxhdD1lLmVuc3VyZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKGJhKX19T2kubGVuZ3RoPjEmJlNyLnJlcG9ydERpYWdub3N0aWMoZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoRmk/ZS5EaWFnbm9zdGljcy5UaGVfcHJvamVjdF9yb290X2lzX2FtYmlndW91c19idXRfaXNfcmVxdWlyZWRfdG9fcmVzb2x2ZV9pbXBvcnRfbWFwX2VudHJ5XzBfaW5fZmlsZV8xX1N1cHBseV90aGVfcm9vdERpcl9jb21waWxlcl9vcHRpb25fdG9fZGlzYW1iaWd1YXRlOmUuRGlhZ25vc3RpY3MuVGhlX3Byb2plY3Rfcm9vdF9pc19hbWJpZ3VvdXNfYnV0X2lzX3JlcXVpcmVkX3RvX3Jlc29sdmVfZXhwb3J0X21hcF9lbnRyeV8wX2luX2ZpbGVfMV9TdXBwbHlfdGhlX3Jvb3REaXJfY29tcGlsZXJfb3B0aW9uX3RvX2Rpc2FtYmlndWF0ZSxJaT09PVwiXCI/XCIuXCI6SWksS2kpKTtmb3IodmFyICRhPTAsUWE9T2k7JGE8UWEubGVuZ3RoOyRhKyspZm9yKHZhciBhaT1RYVskYV0sRG49RW4oYWkpLGthPTAsQmE9RG47a2E8QmEubGVuZ3RoO2thKyspe3ZhciBwbj1CYVtrYV07aWYoZS5zdGFydHNXaXRoKFJ0LHBuKSlmb3IodmFyIENuPVJ0LnNsaWNlKHBuLmxlbmd0aCsxKSxCaT1lLmNvbWJpbmVQYXRocyhhaSxDbiksa249W1wiLm1qc1wiLFwiLmNqc1wiLFwiLmpzXCIsXCIuanNvblwiLFwiLmQubXRzXCIsXCIuZC5jdHNcIixcIi5kLnRzXCJdLHhuPTAsS249a247eG48S24ubGVuZ3RoO3huKyspe3ZhciBQbj1Lblt4bl07aWYoZS5maWxlRXh0ZW5zaW9uSXMoQmksUG4pKWZvcih2YXIgZW89ZS5nZXRQb3NzaWJsZU9yaWdpbmFsSW5wdXRFeHRlbnNpb25Gb3JFeHRlbnNpb24oQmkpLFJuPTAsRGE9ZW87Um48RGEubGVuZ3RoO1JuKyspe3ZhciBibz1EYVtSbl0sUm89ZS5jaGFuZ2VBbnlFeHRlbnNpb24oQmksYm8sUG4sIXV0KCkpO2lmKCEoWmU9PT1RLlR5cGVTY3JpcHQmJmUuaGFzSlNGaWxlRXh0ZW5zaW9uKFJvKXx8WmU9PT1RLkphdmFTY3JpcHQmJmUuaGFzVFNGaWxlRXh0ZW5zaW9uKFJvKSkmJlNyLmhvc3QuZmlsZUV4aXN0cyhSbykpcmV0dXJuIHRpKHcoeGUseWUoWmUsUm8sITEsU3IpKSl9fX19cmV0dXJuO2Z1bmN0aW9uIEVuKFduKXt2YXIgdG8sQ28sS289U3IuY29tcGlsZXJPcHRpb25zLmNvbmZpZ0ZpbGU/KChDbz0odG89U3IuaG9zdCkuZ2V0Q3VycmVudERpcmVjdG9yeSk9PT1udWxsfHxDbz09PXZvaWQgMD92b2lkIDA6Q28uY2FsbCh0bykpfHxcIlwiOlduLE9vPVtdO3JldHVybiBTci5jb21waWxlck9wdGlvbnMuZGVjbGFyYXRpb25EaXImJk9vLnB1c2goTXQoeHQoS28sU3IuY29tcGlsZXJPcHRpb25zLmRlY2xhcmF0aW9uRGlyKSkpLFNyLmNvbXBpbGVyT3B0aW9ucy5vdXREaXImJlNyLmNvbXBpbGVyT3B0aW9ucy5vdXREaXIhPT1Tci5jb21waWxlck9wdGlvbnMuZGVjbGFyYXRpb25EaXImJk9vLnB1c2goTXQoeHQoS28sU3IuY29tcGlsZXJPcHRpb25zLm91dERpcikpKSxPb319fX1mdW5jdGlvbiBwZShaZSxTcil7aWYoWmUuaW5kZXhPZihcInR5cGVzXCIpPT09LTF8fCFlLnN0YXJ0c1dpdGgoU3IsXCJ0eXBlc0BcIikpcmV0dXJuITE7dmFyIHpyPWUuVmVyc2lvblJhbmdlLnRyeVBhcnNlKFNyLnN1YnN0cmluZyg2KSk7cmV0dXJuIHpyP3pyLnRlc3QoZS52ZXJzaW9uKTohMX1lLmlzQXBwbGljYWJsZVZlcnNpb25lZFR5cGVzS2V5PXBlO2Z1bmN0aW9uIG9yKFplLFNyLHpyLFdyLEplLHhlKXtyZXR1cm4gc2koWmUsU3IsenIsV3IsITEsSmUseGUpfWZ1bmN0aW9uIHFyKFplLFNyLHpyKXtyZXR1cm4gc2koUS5EdHNPbmx5LFplLFNyLHpyLCEwLHZvaWQgMCx2b2lkIDApfWZ1bmN0aW9uIHNpKFplLFNyLHpyLFdyLEplLHhlLHZyKXt2YXIgbXI9eGUmJnhlLmdldE9yQ3JlYXRlQ2FjaGVGb3JNb2R1bGVOYW1lKFNyLFdyLmZlYXR1cmVzPT09MD92b2lkIDA6V3IuZmVhdHVyZXMmZC5Fc21Nb2RlP2UuTW9kdWxlS2luZC5FU05leHQ6ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTLHZyKTtyZXR1cm4gZS5mb3JFYWNoQW5jZXN0b3JEaXJlY3RvcnkoZS5ub3JtYWxpemVTbGFzaGVzKHpyKSxmdW5jdGlvbihBcil7aWYoZS5nZXRCYXNlRmlsZU5hbWUoQXIpIT09XCJub2RlX21vZHVsZXNcIil7dmFyIE9lPWFlKG1yLFNyLEFyLFdyKTtyZXR1cm4gT2V8fHRpKERpKFplLFNyLEFyLFdyLEplLHhlLHZyKSl9fSl9ZnVuY3Rpb24gRGkoWmUsU3IsenIsV3IsSmUseGUsdnIpe3ZhciBtcj1lLmNvbWJpbmVQYXRocyh6cixcIm5vZGVfbW9kdWxlc1wiKSxBcj1lLmRpcmVjdG9yeVByb2JhYmx5RXhpc3RzKG1yLFdyLmhvc3QpOyFBciYmV3IudHJhY2VFbmFibGVkJiZhKFdyLmhvc3QsZS5EaWFnbm9zdGljcy5EaXJlY3RvcnlfMF9kb2VzX25vdF9leGlzdF9za2lwcGluZ19hbGxfbG9va3Vwc19pbl9pdCxtcik7dmFyIE9lPUplP3ZvaWQgMDp3aShaZSxTcixtcixBcixXcix4ZSx2cik7aWYoT2UpcmV0dXJuIE9lO2lmKFplPT09US5UeXBlU2NyaXB0fHxaZT09PVEuRHRzT25seSl7dmFyIG5yPWUuY29tYmluZVBhdGhzKG1yLFwiQHR5cGVzXCIpLE1yPUFyO3JldHVybiBBciYmIWUuZGlyZWN0b3J5UHJvYmFibHlFeGlzdHMobnIsV3IuaG9zdCkmJihXci50cmFjZUVuYWJsZWQmJmEoV3IuaG9zdCxlLkRpYWdub3N0aWNzLkRpcmVjdG9yeV8wX2RvZXNfbm90X2V4aXN0X3NraXBwaW5nX2FsbF9sb29rdXBzX2luX2l0LG5yKSxNcj0hMSksd2koUS5EdHNPbmx5LEdpKFNyLFdyKSxucixNcixXcix4ZSx2cil9fWZ1bmN0aW9uIHdpKFplLFNyLHpyLFdyLEplLHhlLHZyKXt2YXIgbXI9ZS5ub3JtYWxpemVQYXRoKGUuY29tYmluZVBhdGhzKHpyLFNyKSksQXI9TmUobXIsIVdyLEplKTtpZighKEplLmZlYXR1cmVzJmQuRXhwb3J0cykmJkFyKXt2YXIgT2U9d2UoWmUsbXIsIVdyLEplKTtpZihPZSlyZXR1cm4gQihPZSk7dmFyIG5yPW4oWmUsbXIsIVdyLEplLEFyLnBhY2thZ2VKc29uQ29udGVudCxBci52ZXJzaW9uUGF0aHMpO3JldHVybiB3KEFyLG5yKX12YXIgTXI9R2UoU3IpLFBlPU1yLnBhY2thZ2VOYW1lLFVlPU1yLnJlc3QsZnI9ZnVuY3Rpb24oVHIsdmksVWksWWkpe3ZhciBXaTtpZihBciYmQXIucGFja2FnZUpzb25Db250ZW50LmV4cG9ydHMmJllpLmZlYXR1cmVzJmQuRXhwb3J0cylyZXR1cm4oV2k9d3IoQXIsVHIsZS5jb21iaW5lUGF0aHMoXCIuXCIsVWUpLFlpLHhlLHZyKSk9PT1udWxsfHxXaT09PXZvaWQgMD92b2lkIDA6V2kudmFsdWU7dmFyIGN0PXdlKFRyLHZpLFVpLFlpKXx8bihUcix2aSxVaSxZaSxBciYmQXIucGFja2FnZUpzb25Db250ZW50LEFyJiZBci52ZXJzaW9uUGF0aHMpO3JldHVybiFjdCYmQXImJkFyLnBhY2thZ2VKc29uQ29udGVudC5leHBvcnRzPT09dm9pZCAwJiZBci5wYWNrYWdlSnNvbkNvbnRlbnQubWFpbj09PXZvaWQgMCYmWWkuZmVhdHVyZXMmZC5Fc21Nb2RlJiYoY3Q9d2UoVHIsZS5jb21iaW5lUGF0aHModmksXCJpbmRleC5qc1wiKSxVaSxZaSkpLHcoQXIsY3QpfTtpZihVZSE9PVwiXCIpe3ZhciBEZT1lLmNvbWJpbmVQYXRocyh6cixQZSk7aWYoQXI9TmUoRGUsIVdyLEplKSxBciYmQXIudmVyc2lvblBhdGhzKXtKZS50cmFjZUVuYWJsZWQmJmEoSmUuaG9zdCxlLkRpYWdub3N0aWNzLnBhY2thZ2VfanNvbl9oYXNfYV90eXBlc1ZlcnNpb25zX2VudHJ5XzBfdGhhdF9tYXRjaGVzX2NvbXBpbGVyX3ZlcnNpb25fMV9sb29raW5nX2Zvcl9hX3BhdHRlcm5fdG9fbWF0Y2hfbW9kdWxlX25hbWVfMixBci52ZXJzaW9uUGF0aHMudmVyc2lvbixlLnZlcnNpb24sVWUpO3ZhciBncj1XciYmZS5kaXJlY3RvcnlQcm9iYWJseUV4aXN0cyhEZSxKZS5ob3N0KSxWcj1YaShaZSxVZSxEZSxBci52ZXJzaW9uUGF0aHMucGF0aHMsdm9pZCAwLGZyLCFncixKZSk7aWYoVnIpcmV0dXJuIFZyLnZhbHVlfX1yZXR1cm4gZnIoWmUsbXIsIVdyLEplKX1mdW5jdGlvbiBYaShaZSxTcix6cixXcixKZSx4ZSx2cixtcil7SmV8fChKZT1lLnRyeVBhcnNlUGF0dGVybnMoV3IpKTt2YXIgQXI9ZS5tYXRjaFBhdHRlcm5PckV4YWN0KEplLFNyKTtpZihBcil7dmFyIE9lPWUuaXNTdHJpbmcoQXIpP3ZvaWQgMDplLm1hdGNoZWRUZXh0KEFyLFNyKSxucj1lLmlzU3RyaW5nKEFyKT9BcjplLnBhdHRlcm5UZXh0KEFyKTttci50cmFjZUVuYWJsZWQmJmEobXIuaG9zdCxlLkRpYWdub3N0aWNzLk1vZHVsZV9uYW1lXzBfbWF0Y2hlZF9wYXR0ZXJuXzEsU3IsbnIpO3ZhciBNcj1lLmZvckVhY2goV3JbbnJdLGZ1bmN0aW9uKFBlKXt2YXIgVWU9T2U/UGUucmVwbGFjZShcIipcIixPZSk6UGUsZnI9ZS5ub3JtYWxpemVQYXRoKGUuY29tYmluZVBhdGhzKHpyLFVlKSk7bXIudHJhY2VFbmFibGVkJiZhKG1yLmhvc3QsZS5EaWFnbm9zdGljcy5Ucnlpbmdfc3Vic3RpdHV0aW9uXzBfY2FuZGlkYXRlX21vZHVsZV9sb2NhdGlvbl9Db2xvbl8xLFBlLFVlKTt2YXIgRGU9ZS50cnlHZXRFeHRlbnNpb25Gcm9tUGF0aChQZSk7aWYoRGUhPT12b2lkIDApe3ZhciBncj1lcihmcix2cixtcik7aWYoZ3IhPT12b2lkIDApcmV0dXJuIEIoe3BhdGg6Z3IsZXh0OkRlfSl9cmV0dXJuIHhlKFplLGZyLHZyfHwhZS5kaXJlY3RvcnlQcm9iYWJseUV4aXN0cyhlLmdldERpcmVjdG9yeVBhdGgoZnIpLG1yLmhvc3QpLG1yKX0pO3JldHVybnt2YWx1ZTpNcn19fXZhciBldD1cIl9fXCI7ZnVuY3Rpb24gR2koWmUsU3Ipe3ZhciB6cj1adChaZSk7cmV0dXJuIFNyLnRyYWNlRW5hYmxlZCYmenIhPT1aZSYmYShTci5ob3N0LGUuRGlhZ25vc3RpY3MuU2NvcGVkX3BhY2thZ2VfZGV0ZWN0ZWRfbG9va2luZ19pbl8wLHpyKSx6cn1mdW5jdGlvbiBXdChaZSl7cmV0dXJuXCJAdHlwZXMvXCIuY29uY2F0KFp0KFplKSl9ZS5nZXRUeXBlc1BhY2thZ2VOYW1lPVd0O2Z1bmN0aW9uIFp0KFplKXtpZihlLnN0YXJ0c1dpdGgoWmUsXCJAXCIpKXt2YXIgU3I9WmUucmVwbGFjZShlLmRpcmVjdG9yeVNlcGFyYXRvcixldCk7aWYoU3IhPT1aZSlyZXR1cm4gU3Iuc2xpY2UoMSl9cmV0dXJuIFplfWUubWFuZ2xlU2NvcGVkUGFja2FnZU5hbWU9WnQ7ZnVuY3Rpb24gX3IoWmUpe3ZhciBTcj1lLnJlbW92ZVByZWZpeChaZSxcIkB0eXBlcy9cIik7cmV0dXJuIFNyIT09WmU/cGkoU3IpOlplfWUuZ2V0UGFja2FnZU5hbWVGcm9tVHlwZXNQYWNrYWdlTmFtZT1fcjtmdW5jdGlvbiBwaShaZSl7cmV0dXJuIGUuc3RyaW5nQ29udGFpbnMoWmUsZXQpP1wiQFwiK1plLnJlcGxhY2UoZXQsZS5kaXJlY3RvcnlTZXBhcmF0b3IpOlplfWUudW5tYW5nbGVTY29wZWRQYWNrYWdlTmFtZT1waTtmdW5jdGlvbiBhZShaZSxTcix6cixXcil7dmFyIEplPVplJiZaZS5nZXQoenIpO2lmKEplKXJldHVybiBXci50cmFjZUVuYWJsZWQmJmEoV3IuaG9zdCxlLkRpYWdub3N0aWNzLlJlc29sdXRpb25fZm9yX21vZHVsZV8wX3dhc19mb3VuZF9pbl9jYWNoZV9mcm9tX2xvY2F0aW9uXzEsU3IsenIpLFdyLnJlc3VsdEZyb21DYWNoZT1KZSx7dmFsdWU6SmUucmVzb2x2ZWRNb2R1bGUmJntwYXRoOkplLnJlc29sdmVkTW9kdWxlLnJlc29sdmVkRmlsZU5hbWUsb3JpZ2luYWxQYXRoOkplLnJlc29sdmVkTW9kdWxlLm9yaWdpbmFsUGF0aHx8ITAsZXh0ZW5zaW9uOkplLnJlc29sdmVkTW9kdWxlLmV4dGVuc2lvbixwYWNrYWdlSWQ6SmUucmVzb2x2ZWRNb2R1bGUucGFja2FnZUlkfX19ZnVuY3Rpb24gWGUoWmUsU3IsenIsV3IsSmUseGUpe3ZhciB2cj1DKHpyLFdyKSxtcj1bXSxBcj1lLmdldERpcmVjdG9yeVBhdGgoU3IpLE9lPVtdLG5yPXtjb21waWxlck9wdGlvbnM6enIsaG9zdDpXcix0cmFjZUVuYWJsZWQ6dnIsZmFpbGVkTG9va3VwTG9jYXRpb25zOm1yLHBhY2thZ2VKc29uSW5mb0NhY2hlOkplLGZlYXR1cmVzOmQuTm9uZSxjb25kaXRpb25zOltdLHJlcXVlc3RDb250YWluaW5nRGlyZWN0b3J5OkFyLHJlcG9ydERpYWdub3N0aWM6ZnVuY3Rpb24oVWUpe3JldHVybiB2b2lkIE9lLnB1c2goVWUpfX0sTXI9UGUoUS5UeXBlU2NyaXB0KXx8UGUoUS5KYXZhU2NyaXB0KTtyZXR1cm4gTihNciYmTXIudmFsdWUsITEsbXIsT2UsbnIucmVzdWx0RnJvbUNhY2hlKTtmdW5jdGlvbiBQZShVZSl7dmFyIGZyPVUoVWUsWmUsQXIsX2UsbnIpO2lmKGZyKXJldHVybnt2YWx1ZTpmcn07aWYoZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKFplKSl7dmFyIFZyPWUubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyhBcixaZSkpO3JldHVybiB0aShfZShVZSxWciwhMSxucikpfWVsc2V7dmFyIERlPUplJiZKZS5nZXRPckNyZWF0ZUNhY2hlRm9yTW9kdWxlTmFtZShaZSx2b2lkIDAseGUpLGdyPWUuZm9yRWFjaEFuY2VzdG9yRGlyZWN0b3J5KEFyLGZ1bmN0aW9uKFRyKXt2YXIgdmk9YWUoRGUsWmUsVHIsbnIpO2lmKHZpKXJldHVybiB2aTt2YXIgVWk9ZS5ub3JtYWxpemVQYXRoKGUuY29tYmluZVBhdGhzKFRyLFplKSk7cmV0dXJuIHRpKF9lKFVlLFVpLCExLG5yKSl9KTtpZihncilyZXR1cm4gZ3I7aWYoVWU9PT1RLlR5cGVTY3JpcHQpcmV0dXJuIHFyKFplLEFyLG5yKX19fWUuY2xhc3NpY05hbWVSZXNvbHZlcj1YZTtmdW5jdGlvbiBKcihaZSxTcix6cixXcixKZSx4ZSl7dmFyIHZyPUMoenIsV3IpO3ZyJiZhKFdyLGUuRGlhZ25vc3RpY3MuQXV0b19kaXNjb3ZlcnlfZm9yX3R5cGluZ3NfaXNfZW5hYmxlZF9pbl9wcm9qZWN0XzBfUnVubmluZ19leHRyYV9yZXNvbHV0aW9uX3Bhc3NfZm9yX21vZHVsZV8xX3VzaW5nX2NhY2hlX2xvY2F0aW9uXzIsU3IsWmUsSmUpO3ZhciBtcj1bXSxBcj1bXSxPZT17Y29tcGlsZXJPcHRpb25zOnpyLGhvc3Q6V3IsdHJhY2VFbmFibGVkOnZyLGZhaWxlZExvb2t1cExvY2F0aW9uczptcixwYWNrYWdlSnNvbkluZm9DYWNoZTp4ZSxmZWF0dXJlczpkLk5vbmUsY29uZGl0aW9uczpbXSxyZXF1ZXN0Q29udGFpbmluZ0RpcmVjdG9yeTp2b2lkIDAscmVwb3J0RGlhZ25vc3RpYzpmdW5jdGlvbihNcil7cmV0dXJuIHZvaWQgQXIucHVzaChNcil9fSxucj1EaShRLkR0c09ubHksWmUsSmUsT2UsITEsdm9pZCAwLHZvaWQgMCk7cmV0dXJuIE4obnIsITAsbXIsQXIsT2UucmVzdWx0RnJvbUNhY2hlKX1lLmxvYWRNb2R1bGVGcm9tR2xvYmFsQ2FjaGU9SnI7ZnVuY3Rpb24gdGkoWmUpe3JldHVybiBaZSE9PXZvaWQgMD97dmFsdWU6WmV9OnZvaWQgMH19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oYil7YltiLk5vbkluc3RhbnRpYXRlZD0wXT1cIk5vbkluc3RhbnRpYXRlZFwiLGJbYi5JbnN0YW50aWF0ZWQ9MV09XCJJbnN0YW50aWF0ZWRcIixiW2IuQ29uc3RFbnVtT25seT0yXT1cIkNvbnN0RW51bU9ubHlcIn0pKGE9ZS5Nb2R1bGVJbnN0YW5jZVN0YXRlfHwoZS5Nb2R1bGVJbnN0YW5jZVN0YXRlPXt9KSk7ZnVuY3Rpb24gQyhiLHNlKXtyZXR1cm4gYi5ib2R5JiYhYi5ib2R5LnBhcmVudCYmKGUuc2V0UGFyZW50KGIuYm9keSxiKSxlLnNldFBhcmVudFJlY3Vyc2l2ZShiLmJvZHksITEpKSxiLmJvZHk/dyhiLmJvZHksc2UpOjF9ZS5nZXRNb2R1bGVJbnN0YW5jZVN0YXRlPUM7ZnVuY3Rpb24gdyhiLHNlKXtzZT09PXZvaWQgMCYmKHNlPW5ldyBlLk1hcCk7dmFyIEo9ZS5nZXROb2RlSWQoYik7aWYoc2UuaGFzKEopKXJldHVybiBzZS5nZXQoSil8fDA7c2Uuc2V0KEosdm9pZCAwKTt2YXIgaWU9QihiLHNlKTtyZXR1cm4gc2Uuc2V0KEosaWUpLGllfWZ1bmN0aW9uIEIoYixzZSl7c3dpdGNoKGIua2luZCl7Y2FzZSAyNTg6Y2FzZSAyNTk6cmV0dXJuIDA7Y2FzZSAyNjA6aWYoZS5pc0VudW1Db25zdChiKSlyZXR1cm4gMjticmVhaztjYXNlIDI2NjpjYXNlIDI2NTppZighZS5oYXNTeW50YWN0aWNNb2RpZmllcihiLDEpKXJldHVybiAwO2JyZWFrO2Nhc2UgMjcyOnZhciBKPWI7aWYoIUoubW9kdWxlU3BlY2lmaWVyJiZKLmV4cG9ydENsYXVzZSYmSi5leHBvcnRDbGF1c2Uua2luZD09PTI3Myl7Zm9yKHZhciBpZT0wLFI9MCxxPUouZXhwb3J0Q2xhdXNlLmVsZW1lbnRzO1I8cS5sZW5ndGg7UisrKXt2YXIgTz1xW1JdLHZlPUUoTyxzZSk7aWYodmU+aWUmJihpZT12ZSksaWU9PT0xKXJldHVybiBpZX1yZXR1cm4gaWV9YnJlYWs7Y2FzZSAyNjI6e3ZhciBlZT0wO3JldHVybiBlLmZvckVhY2hDaGlsZChiLGZ1bmN0aW9uKGhlKXt2YXIgRj13KGhlLHNlKTtzd2l0Y2goRil7Y2FzZSAwOnJldHVybjtjYXNlIDI6ZWU9MjtyZXR1cm47Y2FzZSAxOnJldHVybiBlZT0xLCEwO2RlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnROZXZlcihGKX19KSxlZX1jYXNlIDI2MTpyZXR1cm4gQyhiLHNlKTtjYXNlIDc5OmlmKGIuaXNJbkpTRG9jTmFtZXNwYWNlKXJldHVybiAwfXJldHVybiAxfWZ1bmN0aW9uIEUoYixzZSl7Zm9yKHZhciBKPWIucHJvcGVydHlOYW1lfHxiLm5hbWUsaWU9Yi5wYXJlbnQ7aWU7KXtpZihlLmlzQmxvY2soaWUpfHxlLmlzTW9kdWxlQmxvY2soaWUpfHxlLmlzU291cmNlRmlsZShpZSkpe2Zvcih2YXIgUj1pZS5zdGF0ZW1lbnRzLHE9dm9pZCAwLE89MCx2ZT1SO088dmUubGVuZ3RoO08rKyl7dmFyIGVlPXZlW09dO2lmKGUubm9kZUhhc05hbWUoZWUsSikpe2VlLnBhcmVudHx8KGUuc2V0UGFyZW50KGVlLGllKSxlLnNldFBhcmVudFJlY3Vyc2l2ZShlZSwhMSkpO3ZhciBoZT13KGVlLHNlKTtpZigocT09PXZvaWQgMHx8aGU+cSkmJihxPWhlKSxxPT09MSlyZXR1cm4gcX19aWYocSE9PXZvaWQgMClyZXR1cm4gcX1pZT1pZS5wYXJlbnR9cmV0dXJuIDF9dmFyIFE7KGZ1bmN0aW9uKGIpe2JbYi5Ob25lPTBdPVwiTm9uZVwiLGJbYi5Jc0NvbnRhaW5lcj0xXT1cIklzQ29udGFpbmVyXCIsYltiLklzQmxvY2tTY29wZWRDb250YWluZXI9Ml09XCJJc0Jsb2NrU2NvcGVkQ29udGFpbmVyXCIsYltiLklzQ29udHJvbEZsb3dDb250YWluZXI9NF09XCJJc0NvbnRyb2xGbG93Q29udGFpbmVyXCIsYltiLklzRnVuY3Rpb25MaWtlPThdPVwiSXNGdW5jdGlvbkxpa2VcIixiW2IuSXNGdW5jdGlvbkV4cHJlc3Npb249MTZdPVwiSXNGdW5jdGlvbkV4cHJlc3Npb25cIixiW2IuSGFzTG9jYWxzPTMyXT1cIkhhc0xvY2Fsc1wiLGJbYi5Jc0ludGVyZmFjZT02NF09XCJJc0ludGVyZmFjZVwiLGJbYi5Jc09iamVjdExpdGVyYWxPckNsYXNzRXhwcmVzc2lvbk1ldGhvZE9yQWNjZXNzb3I9MTI4XT1cIklzT2JqZWN0TGl0ZXJhbE9yQ2xhc3NFeHByZXNzaW9uTWV0aG9kT3JBY2Nlc3NvclwifSkoUXx8KFE9e30pKTtmdW5jdGlvbiBsZShiKXtyZXR1cm4gZS5EZWJ1Zy5hdHRhY2hGbG93Tm9kZURlYnVnSW5mbyhiKSxifXZhciBOPW0oKTtmdW5jdGlvbiBwKGIsc2Upe2UucGVyZm9ybWFuY2UubWFyayhcImJlZm9yZUJpbmRcIiksZS5wZXJmTG9nZ2VyLmxvZ1N0YXJ0QmluZEZpbGUoXCJcIitiLmZpbGVOYW1lKSxOKGIsc2UpLGUucGVyZkxvZ2dlci5sb2dTdG9wQmluZEZpbGUoKSxlLnBlcmZvcm1hbmNlLm1hcmsoXCJhZnRlckJpbmRcIiksZS5wZXJmb3JtYW5jZS5tZWFzdXJlKFwiQmluZFwiLFwiYmVmb3JlQmluZFwiLFwiYWZ0ZXJCaW5kXCIpfWUuYmluZFNvdXJjZUZpbGU9cDtmdW5jdGlvbiBtKCl7dmFyIGIsc2UsSixpZSxSLHEsTyx2ZSxlZSxoZSxGLHgsWCwkLEEseSxWLEwsUCxrLFksVSxqPSExLEg9MCxJLGwsZD17ZmxhZ3M6MX0sRD17ZmxhZ3M6MX0sZmU9QXIoKTtmdW5jdGlvbiBnKGNlLFJyLHlpLHFpLGplKXtyZXR1cm4gZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUluU291cmNlRmlsZShlLmdldFNvdXJjZUZpbGVPZk5vZGUoY2UpfHxiLGNlLFJyLHlpLHFpLGplKX1mdW5jdGlvbiBuZShjZSxScil7Yj1jZSxzZT1ScixKPWUuZ2V0RW1pdFNjcmlwdFRhcmdldChzZSksVT11ZShiLFJyKSxsPW5ldyBlLlNldCxIPTAsST1lLm9iamVjdEFsbG9jYXRvci5nZXRTeW1ib2xDb25zdHJ1Y3RvcigpLGUuRGVidWcuYXR0YWNoRmxvd05vZGVEZWJ1Z0luZm8oZCksZS5EZWJ1Zy5hdHRhY2hGbG93Tm9kZURlYnVnSW5mbyhEKSxiLmxvY2Fsc3x8KGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJiaW5kXCIsXCJiaW5kU291cmNlRmlsZVwiLHtwYXRoOmIucGF0aH0sITApLERhKGIpLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpLGIuc3ltYm9sQ291bnQ9SCxiLmNsYXNzaWZpYWJsZU5hbWVzPWwsQWkoKSksYj12b2lkIDAsc2U9dm9pZCAwLEo9dm9pZCAwLGllPXZvaWQgMCxSPXZvaWQgMCxxPXZvaWQgMCxPPXZvaWQgMCx2ZT12b2lkIDAsZWU9dm9pZCAwLGhlPSExLEY9dm9pZCAwLHg9dm9pZCAwLFg9dm9pZCAwLCQ9dm9pZCAwLEE9dm9pZCAwLHk9dm9pZCAwLFY9dm9pZCAwLFA9dm9pZCAwLGs9ITEsaj0hMSxZPTB9cmV0dXJuIG5lO2Z1bmN0aW9uIHVlKGNlLFJyKXtyZXR1cm4gZS5nZXRTdHJpY3RPcHRpb25WYWx1ZShScixcImFsd2F5c1N0cmljdFwiKSYmIWNlLmlzRGVjbGFyYXRpb25GaWxlPyEwOiEhY2UuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3J9ZnVuY3Rpb24gV2UoY2UsUnIpe3JldHVybiBIKyssbmV3IEkoY2UsUnIpfWZ1bmN0aW9uIEZlKGNlLFJyLHlpKXtjZS5mbGFnc3w9eWksUnIuc3ltYm9sPWNlLGNlLmRlY2xhcmF0aW9ucz1lLmFwcGVuZElmVW5pcXVlKGNlLmRlY2xhcmF0aW9ucyxScikseWkmMTk1NSYmIWNlLmV4cG9ydHMmJihjZS5leHBvcnRzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSkseWkmNjI0MCYmIWNlLm1lbWJlcnMmJihjZS5tZW1iZXJzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSksY2UuY29uc3RFbnVtT25seU1vZHVsZSYmY2UuZmxhZ3MmMzA0JiYoY2UuY29uc3RFbnVtT25seU1vZHVsZT0hMSkseWkmMTExNTUxJiZlLnNldFZhbHVlRGVjbGFyYXRpb24oY2UsUnIpfWZ1bmN0aW9uIFooY2Upe2lmKGNlLmtpbmQ9PT0yNzEpcmV0dXJuIGNlLmlzRXhwb3J0RXF1YWxzP1wiZXhwb3J0PVwiOlwiZGVmYXVsdFwiO3ZhciBScj1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKGNlKTtpZihScil7aWYoZS5pc0FtYmllbnRNb2R1bGUoY2UpKXt2YXIgeWk9ZS5nZXRUZXh0T2ZJZGVudGlmaWVyT3JMaXRlcmFsKFJyKTtyZXR1cm4gZS5pc0dsb2JhbFNjb3BlQXVnbWVudGF0aW9uKGNlKT9cIl9fZ2xvYmFsXCI6J1wiJy5jb25jYXQoeWksJ1wiJyl9aWYoUnIua2luZD09PTE2Mil7dmFyIHFpPVJyLmV4cHJlc3Npb247aWYoZS5pc1N0cmluZ09yTnVtZXJpY0xpdGVyYWxMaWtlKHFpKSlyZXR1cm4gZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMocWkudGV4dCk7aWYoZS5pc1NpZ25lZE51bWVyaWNMaXRlcmFsKHFpKSlyZXR1cm4gZS50b2tlblRvU3RyaW5nKHFpLm9wZXJhdG9yKStxaS5vcGVyYW5kLnRleHQ7ZS5EZWJ1Zy5mYWlsKFwiT25seSBjb21wdXRlZCBwcm9wZXJ0aWVzIHdpdGggbGl0ZXJhbCBuYW1lcyBoYXZlIGRlY2xhcmF0aW9uIG5hbWVzXCIpfWlmKGUuaXNQcml2YXRlSWRlbnRpZmllcihScikpe3ZhciBqZT1lLmdldENvbnRhaW5pbmdDbGFzcyhjZSk7aWYoIWplKXJldHVybjt2YXIgSHI9amUuc3ltYm9sO3JldHVybiBlLmdldFN5bWJvbE5hbWVGb3JQcml2YXRlSWRlbnRpZmllcihIcixSci5lc2NhcGVkVGV4dCl9cmV0dXJuIGUuaXNQcm9wZXJ0eU5hbWVMaXRlcmFsKFJyKT9lLmdldEVzY2FwZWRUZXh0T2ZJZGVudGlmaWVyT3JMaXRlcmFsKFJyKTp2b2lkIDB9c3dpdGNoKGNlLmtpbmQpe2Nhc2UgMTcxOnJldHVyblwiX19jb25zdHJ1Y3RvclwiO2Nhc2UgMTc5OmNhc2UgMTc0OmNhc2UgMzIzOnJldHVyblwiX19jYWxsXCI7Y2FzZSAxODA6Y2FzZSAxNzU6cmV0dXJuXCJfX25ld1wiO2Nhc2UgMTc2OnJldHVyblwiX19pbmRleFwiO2Nhc2UgMjcyOnJldHVyblwiX19leHBvcnRcIjtjYXNlIDMwNTpyZXR1cm5cImV4cG9ydD1cIjtjYXNlIDIyMTppZihlLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoY2UpPT09MilyZXR1cm5cImV4cG9ydD1cIjtlLkRlYnVnLmZhaWwoXCJVbmtub3duIGJpbmFyeSBkZWNsYXJhdGlvbiBraW5kXCIpO2JyZWFrO2Nhc2UgMzE3OnJldHVybiBlLmlzSlNEb2NDb25zdHJ1Y3RTaWduYXR1cmUoY2UpP1wiX19uZXdcIjpcIl9fY2FsbFwiO2Nhc2UgMTY0OmUuRGVidWcuYXNzZXJ0KGNlLnBhcmVudC5raW5kPT09MzE3LFwiSW1wb3NzaWJsZSBwYXJhbWV0ZXIgcGFyZW50IGtpbmRcIixmdW5jdGlvbigpe3JldHVyblwicGFyZW50IGlzOiBcIi5jb25jYXQoZS5TeW50YXhLaW5kP2UuU3ludGF4S2luZFtjZS5wYXJlbnQua2luZF06Y2UucGFyZW50LmtpbmQsXCIsIGV4cGVjdGVkIEpTRG9jRnVuY3Rpb25UeXBlXCIpfSk7dmFyIHB0PWNlLnBhcmVudCxQdD1wdC5wYXJhbWV0ZXJzLmluZGV4T2YoY2UpO3JldHVyblwiYXJnXCIrUHR9fWZ1bmN0aW9uIEJlKGNlKXtyZXR1cm4gZS5pc05hbWVkRGVjbGFyYXRpb24oY2UpP2UuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcoY2UubmFtZSk6ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhlLkRlYnVnLmNoZWNrRGVmaW5lZChaKGNlKSkpfWZ1bmN0aW9uIGdlKGNlLFJyLHlpLHFpLGplLEhyLHB0KXtlLkRlYnVnLmFzc2VydChwdHx8IWUuaGFzRHluYW1pY05hbWUoeWkpKTt2YXIgUHQ9ZS5oYXNTeW50YWN0aWNNb2RpZmllcih5aSw1MTIpfHxlLmlzRXhwb3J0U3BlY2lmaWVyKHlpKSYmeWkubmFtZS5lc2NhcGVkVGV4dD09PVwiZGVmYXVsdFwiLGdhPXB0P1wiX19jb21wdXRlZFwiOlB0JiZScj9cImRlZmF1bHRcIjpaKHlpKSx1YTtpZihnYT09PXZvaWQgMCl1YT1XZSgwLFwiX19taXNzaW5nXCIpO2Vsc2UgaWYodWE9Y2UuZ2V0KGdhKSxxaSYyODg1NjAwJiZsLmFkZChnYSksIXVhKWNlLnNldChnYSx1YT1XZSgwLGdhKSksSHImJih1YS5pc1JlcGxhY2VhYmxlQnlNZXRob2Q9ITApO2Vsc2V7aWYoSHImJiF1YS5pc1JlcGxhY2VhYmxlQnlNZXRob2QpcmV0dXJuIHVhO2lmKHVhLmZsYWdzJmplKXtpZih1YS5pc1JlcGxhY2VhYmxlQnlNZXRob2QpY2Uuc2V0KGdhLHVhPVdlKDAsZ2EpKTtlbHNlIGlmKCEocWkmMyYmdWEuZmxhZ3MmNjcxMDg4NjQpKXtlLmlzTmFtZWREZWNsYXJhdGlvbih5aSkmJmUuc2V0UGFyZW50KHlpLm5hbWUseWkpO3ZhciBYbj11YS5mbGFncyYyP2UuRGlhZ25vc3RpY3MuQ2Fubm90X3JlZGVjbGFyZV9ibG9ja19zY29wZWRfdmFyaWFibGVfMDplLkRpYWdub3N0aWNzLkR1cGxpY2F0ZV9pZGVudGlmaWVyXzAsanI9ITA7KHVhLmZsYWdzJjM4NHx8cWkmMzg0KSYmKFhuPWUuRGlhZ25vc3RpY3MuRW51bV9kZWNsYXJhdGlvbnNfY2FuX29ubHlfbWVyZ2Vfd2l0aF9uYW1lc3BhY2Vfb3Jfb3RoZXJfZW51bV9kZWNsYXJhdGlvbnMsanI9ITEpO3ZhciBmbz0hMTtlLmxlbmd0aCh1YS5kZWNsYXJhdGlvbnMpJiYoUHR8fHVhLmRlY2xhcmF0aW9ucyYmdWEuZGVjbGFyYXRpb25zLmxlbmd0aCYmeWkua2luZD09PTI3MSYmIXlpLmlzRXhwb3J0RXF1YWxzKSYmKFhuPWUuRGlhZ25vc3RpY3MuQV9tb2R1bGVfY2Fubm90X2hhdmVfbXVsdGlwbGVfZGVmYXVsdF9leHBvcnRzLGpyPSExLGZvPSEwKTt2YXIgeHM9W107ZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKHlpKSYmZS5ub2RlSXNNaXNzaW5nKHlpLnR5cGUpJiZlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHlpLDEpJiZ1YS5mbGFncyYyODg3NjU2JiZ4cy5wdXNoKGcoeWksZS5EaWFnbm9zdGljcy5EaWRfeW91X21lYW5fMCxcImV4cG9ydCB0eXBlIHsgXCIuY29uY2F0KGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoeWkubmFtZS5lc2NhcGVkVGV4dCksXCIgfVwiKSkpO3ZhciBGbz1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKHlpKXx8eWk7ZS5mb3JFYWNoKHVhLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihBbyxNcyl7dmFyIEJzPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oQW8pfHxBbyx4Yz1nKEJzLFhuLGpyP0JlKEFvKTp2b2lkIDApO2IuYmluZERpYWdub3N0aWNzLnB1c2goZm8/ZS5hZGRSZWxhdGVkSW5mbyh4YyxnKEZvLE1zPT09MD9lLkRpYWdub3N0aWNzLkFub3RoZXJfZXhwb3J0X2RlZmF1bHRfaXNfaGVyZTplLkRpYWdub3N0aWNzLmFuZF9oZXJlKSk6eGMpLGZvJiZ4cy5wdXNoKGcoQnMsZS5EaWFnbm9zdGljcy5UaGVfZmlyc3RfZXhwb3J0X2RlZmF1bHRfaXNfaGVyZSkpfSk7dmFyIGtvPWcoRm8sWG4sanI/QmUoeWkpOnZvaWQgMCk7Yi5iaW5kRGlhZ25vc3RpY3MucHVzaChlLmFkZFJlbGF0ZWRJbmZvLmFwcGx5KHZvaWQgMCxWZShba29dLHhzLCExKSkpLHVhPVdlKDAsZ2EpfX19cmV0dXJuIEZlKHVhLHlpLHFpKSx1YS5wYXJlbnQ/ZS5EZWJ1Zy5hc3NlcnQodWEucGFyZW50PT09UnIsXCJFeGlzdGluZyBzeW1ib2wgcGFyZW50IHNob3VsZCBtYXRjaCBuZXcgb25lXCIpOnVhLnBhcmVudD1Scix1YX1mdW5jdGlvbiBSZShjZSxScix5aSl7dmFyIHFpPSEhKGUuZ2V0Q29tYmluZWRNb2RpZmllckZsYWdzKGNlKSYxKXx8emUoY2UpO2lmKFJyJjIwOTcxNTIpcmV0dXJuIGNlLmtpbmQ9PT0yNzV8fGNlLmtpbmQ9PT0yNjUmJnFpP2dlKFIuc3ltYm9sLmV4cG9ydHMsUi5zeW1ib2wsY2UsUnIseWkpOmdlKFIubG9jYWxzLHZvaWQgMCxjZSxScix5aSk7aWYoZS5pc0pTRG9jVHlwZUFsaWFzKGNlKSYmZS5EZWJ1Zy5hc3NlcnQoZS5pc0luSlNGaWxlKGNlKSksIWUuaXNBbWJpZW50TW9kdWxlKGNlKSYmKHFpfHxSLmZsYWdzJjY0KSl7aWYoIVIubG9jYWxzfHxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKGNlLDUxMikmJiFaKGNlKSlyZXR1cm4gZ2UoUi5zeW1ib2wuZXhwb3J0cyxSLnN5bWJvbCxjZSxScix5aSk7dmFyIGplPVJyJjExMTU1MT8xMDQ4NTc2OjAsSHI9Z2UoUi5sb2NhbHMsdm9pZCAwLGNlLGplLHlpKTtyZXR1cm4gSHIuZXhwb3J0U3ltYm9sPWdlKFIuc3ltYm9sLmV4cG9ydHMsUi5zeW1ib2wsY2UsUnIseWkpLGNlLmxvY2FsU3ltYm9sPUhyLEhyfWVsc2UgcmV0dXJuIGdlKFIubG9jYWxzLHZvaWQgMCxjZSxScix5aSl9ZnVuY3Rpb24gemUoY2Upe2lmKGNlLnBhcmVudCYmZS5pc01vZHVsZURlY2xhcmF0aW9uKGNlKSYmKGNlPWNlLnBhcmVudCksIWUuaXNKU0RvY1R5cGVBbGlhcyhjZSkpcmV0dXJuITE7aWYoIWUuaXNKU0RvY0VudW1UYWcoY2UpJiYhIWNlLmZ1bGxOYW1lKXJldHVybiEwO3ZhciBScj1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKGNlKTtyZXR1cm4gUnI/ISEoZS5pc1Byb3BlcnR5QWNjZXNzRW50aXR5TmFtZUV4cHJlc3Npb24oUnIucGFyZW50KSYmV2EoUnIucGFyZW50KXx8ZS5pc0RlY2xhcmF0aW9uKFJyLnBhcmVudCkmJmUuZ2V0Q29tYmluZWRNb2RpZmllckZsYWdzKFJyLnBhcmVudCkmMSk6ITF9ZnVuY3Rpb24gRWUoY2UsUnIpe3ZhciB5aT1SLHFpPXEsamU9TztpZihSciYxPyhjZS5raW5kIT09MjE0JiYocT1SKSxSPU89Y2UsUnImMzImJihSLmxvY2Fscz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCkpLExpKFIpKTpSciYyJiYoTz1jZSxPLmxvY2Fscz12b2lkIDApLFJyJjQpe3ZhciBIcj1GLHB0PXgsUHQ9WCxnYT0kLHVhPVYsWG49UCxqcj1rLGZvPVJyJjE2JiYhZS5oYXNTeW50YWN0aWNNb2RpZmllcihjZSwyNTYpJiYhY2UuYXN0ZXJpc2tUb2tlbiYmISFlLmdldEltbWVkaWF0ZWx5SW52b2tlZEZ1bmN0aW9uRXhwcmVzc2lvbihjZSl8fGNlLmtpbmQ9PT0xNzA7Zm98fChGPWxlKHtmbGFnczoyfSksUnImMTQ0JiYoRi5ub2RlPWNlKSksJD1mb3x8Y2Uua2luZD09PTE3MXx8ZS5pc0luSlNGaWxlKGNlKSYmKGNlLmtpbmQ9PT0yNTZ8fGNlLmtpbmQ9PT0yMTMpP1llKCk6dm9pZCAwLFY9dm9pZCAwLHg9dm9pZCAwLFg9dm9pZCAwLFA9dm9pZCAwLGs9ITEsX2UoY2UpLGNlLmZsYWdzJj0tMjgxNywhKEYuZmxhZ3MmMSkmJlJyJjgmJmUubm9kZUlzUHJlc2VudChjZS5ib2R5KSYmKGNlLmZsYWdzfD0yNTYsayYmKGNlLmZsYWdzfD01MTIpLGNlLmVuZEZsb3dOb2RlPUYpLGNlLmtpbmQ9PT0zMDUmJihjZS5mbGFnc3w9WSxjZS5lbmRGbG93Tm9kZT1GKSwkJiYobigkLEYpLEY9eXIoJCksKGNlLmtpbmQ9PT0xNzF8fGNlLmtpbmQ9PT0xNzB8fGUuaXNJbkpTRmlsZShjZSkmJihjZS5raW5kPT09MjU2fHxjZS5raW5kPT09MjEzKSkmJihjZS5yZXR1cm5GbG93Tm9kZT1GKSksZm98fChGPUhyKSx4PXB0LFg9UHQsJD1nYSxWPXVhLFA9WG4saz1qcn1lbHNlIFJyJjY0PyhoZT0hMSxfZShjZSksY2UuZmxhZ3M9aGU/Y2UuZmxhZ3N8MTI4OmNlLmZsYWdzJi0xMjkpOl9lKGNlKTtSPXlpLHE9cWksTz1qZX1mdW5jdGlvbiBIZShjZSl7cnIoY2UsZnVuY3Rpb24oUnIpe3JldHVybiBSci5raW5kPT09MjU2P0RhKFJyKTp2b2lkIDB9KSxycihjZSxmdW5jdGlvbihScil7cmV0dXJuIFJyLmtpbmQhPT0yNTY/RGEoUnIpOnZvaWQgMH0pfWZ1bmN0aW9uIHJyKGNlLFJyKXtScj09PXZvaWQgMCYmKFJyPURhKSxjZSE9PXZvaWQgMCYmZS5mb3JFYWNoKGNlLFJyKX1mdW5jdGlvbiBJZShjZSl7ZS5mb3JFYWNoQ2hpbGQoY2UsRGEscnIpfWZ1bmN0aW9uIF9lKGNlKXt2YXIgUnI9ajtpZihqPSExLEppKGNlKSl7SWUoY2UpLGJvKGNlKSxqPVJyO3JldHVybn1zd2l0Y2goY2Uua2luZD49MjM3JiZjZS5raW5kPD0yNTMmJiFzZS5hbGxvd1VucmVhY2hhYmxlQ29kZSYmKGNlLmZsb3dOb2RlPUYpLGNlLmtpbmQpe2Nhc2UgMjQxOnNpKGNlKTticmVhaztjYXNlIDI0MDpEaShjZSk7YnJlYWs7Y2FzZSAyNDI6d2koY2UpO2JyZWFrO2Nhc2UgMjQzOmNhc2UgMjQ0OlhpKGNlKTticmVhaztjYXNlIDIzOTpldChjZSk7YnJlYWs7Y2FzZSAyNDc6Y2FzZSAyNTE6R2koY2UpO2JyZWFrO2Nhc2UgMjQ2OmNhc2UgMjQ1Ol9yKGNlKTticmVhaztjYXNlIDI1MjpwaShjZSk7YnJlYWs7Y2FzZSAyNDk6YWUoY2UpO2JyZWFrO2Nhc2UgMjYzOlhlKGNlKTticmVhaztjYXNlIDI4OTpKcihjZSk7YnJlYWs7Y2FzZSAyMzg6dGkoY2UpO2JyZWFrO2Nhc2UgMjUwOlNyKGNlKTticmVhaztjYXNlIDIxOTp4ZShjZSk7YnJlYWs7Y2FzZSAyMjA6dnIoY2UpO2JyZWFrO2Nhc2UgMjIxOmlmKGUuaXNEZXN0cnVjdHVyaW5nQXNzaWdubWVudChjZSkpe2o9UnIsbXIoY2UpO3JldHVybn1mZShjZSk7YnJlYWs7Y2FzZSAyMTU6T2UoY2UpO2JyZWFrO2Nhc2UgMjIyOm5yKGNlKTticmVhaztjYXNlIDI1NDpQZShjZSk7YnJlYWs7Y2FzZSAyMDY6Y2FzZSAyMDc6WWkoY2UpO2JyZWFrO2Nhc2UgMjA4OldpKGNlKTticmVhaztjYXNlIDIzMDpVaShjZSk7YnJlYWs7Y2FzZSAzNDU6Y2FzZSAzMzg6Y2FzZSAzMzk6ZnIoY2UpO2JyZWFrO2Nhc2UgMzA1OntIZShjZS5zdGF0ZW1lbnRzKSxEYShjZS5lbmRPZkZpbGVUb2tlbik7YnJlYWt9Y2FzZSAyMzU6Y2FzZSAyNjI6SGUoY2Uuc3RhdGVtZW50cyk7YnJlYWs7Y2FzZSAyMDM6VWUoY2UpO2JyZWFrO2Nhc2UgMjA1OmNhc2UgMjA0OmNhc2UgMjk2OmNhc2UgMjI1Omo9UnI7ZGVmYXVsdDpJZShjZSk7YnJlYWt9Ym8oY2UpLGo9UnJ9ZnVuY3Rpb24gd2UoY2Upe3N3aXRjaChjZS5raW5kKXtjYXNlIDc5OmNhc2UgODA6Y2FzZSAxMDg6Y2FzZSAyMDY6Y2FzZSAyMDc6cmV0dXJuIHllKGNlKTtjYXNlIDIwODpyZXR1cm4gQWUoY2UpO2Nhc2UgMjEyOmNhc2UgMjMwOnJldHVybiB3ZShjZS5leHByZXNzaW9uKTtjYXNlIDIyMTpyZXR1cm4gaXIoY2UpO2Nhc2UgMjE5OnJldHVybiBjZS5vcGVyYXRvcj09PTUzJiZ3ZShjZS5vcGVyYW5kKTtjYXNlIDIxNjpyZXR1cm4gd2UoY2UuZXhwcmVzc2lvbil9cmV0dXJuITF9ZnVuY3Rpb24gZGUoY2Upe3JldHVybiBlLmlzRG90dGVkTmFtZShjZSl8fChlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGNlKXx8ZS5pc05vbk51bGxFeHByZXNzaW9uKGNlKXx8ZS5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGNlKSkmJmRlKGNlLmV4cHJlc3Npb24pfHxlLmlzQmluYXJ5RXhwcmVzc2lvbihjZSkmJmNlLm9wZXJhdG9yVG9rZW4ua2luZD09PTI3JiZkZShjZS5yaWdodCl8fGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihjZSkmJihlLmlzU3RyaW5nT3JOdW1lcmljTGl0ZXJhbExpa2UoY2UuYXJndW1lbnRFeHByZXNzaW9uKXx8ZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKGNlLmFyZ3VtZW50RXhwcmVzc2lvbikpJiZkZShjZS5leHByZXNzaW9uKXx8ZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKGNlKSYmZGUoY2UubGVmdCl9ZnVuY3Rpb24geWUoY2Upe3JldHVybiBkZShjZSl8fGUuaXNPcHRpb25hbENoYWluKGNlKSYmeWUoY2UuZXhwcmVzc2lvbil9ZnVuY3Rpb24gQWUoY2Upe2lmKGNlLmFyZ3VtZW50cylmb3IodmFyIFJyPTAseWk9Y2UuYXJndW1lbnRzO1JyPHlpLmxlbmd0aDtScisrKXt2YXIgcWk9eWlbUnJdO2lmKHllKHFpKSlyZXR1cm4hMH1yZXR1cm4hIShjZS5leHByZXNzaW9uLmtpbmQ9PT0yMDYmJnllKGNlLmV4cHJlc3Npb24uZXhwcmVzc2lvbikpfWZ1bmN0aW9uIGVyKGNlLFJyKXtyZXR1cm4gZS5pc1R5cGVPZkV4cHJlc3Npb24oY2UpJiZDcihjZS5leHByZXNzaW9uKSYmZS5pc1N0cmluZ0xpdGVyYWxMaWtlKFJyKX1mdW5jdGlvbiBpcihjZSl7c3dpdGNoKGNlLm9wZXJhdG9yVG9rZW4ua2luZCl7Y2FzZSA2MzpjYXNlIDc1OmNhc2UgNzY6Y2FzZSA3NzpyZXR1cm4geWUoY2UubGVmdCk7Y2FzZSAzNDpjYXNlIDM1OmNhc2UgMzY6Y2FzZSAzNzpyZXR1cm4gQ3IoY2UubGVmdCl8fENyKGNlLnJpZ2h0KXx8ZXIoY2UucmlnaHQsY2UubGVmdCl8fGVyKGNlLmxlZnQsY2UucmlnaHQpO2Nhc2UgMTAyOnJldHVybiBDcihjZS5sZWZ0KTtjYXNlIDEwMTpyZXR1cm4gd2UoY2UucmlnaHQpO2Nhc2UgMjc6cmV0dXJuIHdlKGNlLnJpZ2h0KX1yZXR1cm4hMX1mdW5jdGlvbiBDcihjZSl7c3dpdGNoKGNlLmtpbmQpe2Nhc2UgMjEyOnJldHVybiBDcihjZS5leHByZXNzaW9uKTtjYXNlIDIyMTpzd2l0Y2goY2Uub3BlcmF0b3JUb2tlbi5raW5kKXtjYXNlIDYzOnJldHVybiBDcihjZS5sZWZ0KTtjYXNlIDI3OnJldHVybiBDcihjZS5yaWdodCl9fXJldHVybiB5ZShjZSl9ZnVuY3Rpb24gWWUoKXtyZXR1cm4gbGUoe2ZsYWdzOjQsYW50ZWNlZGVudHM6dm9pZCAwfSl9ZnVuY3Rpb24gQnIoKXtyZXR1cm4gbGUoe2ZsYWdzOjgsYW50ZWNlZGVudHM6dm9pZCAwfSl9ZnVuY3Rpb24gRXIoY2UsUnIseWkpe3JldHVybiBsZSh7ZmxhZ3M6MTAyNCx0YXJnZXQ6Y2UsYW50ZWNlZGVudHM6UnIsYW50ZWNlZGVudDp5aX0pfWZ1bmN0aW9uIE5lKGNlKXtjZS5mbGFnc3w9Y2UuZmxhZ3MmMjA0OD80MDk2OjIwNDh9ZnVuY3Rpb24gbihjZSxScil7IShSci5mbGFncyYxKSYmIWUuY29udGFpbnMoY2UuYW50ZWNlZGVudHMsUnIpJiYoKGNlLmFudGVjZWRlbnRzfHwoY2UuYW50ZWNlZGVudHM9W10pKS5wdXNoKFJyKSxOZShScikpfWZ1bmN0aW9uIGxyKGNlLFJyLHlpKXtyZXR1cm4gUnIuZmxhZ3MmMT9Scjp5aT8oeWkua2luZD09PTExMCYmY2UmNjR8fHlpLmtpbmQ9PT05NSYmY2UmMzIpJiYhZS5pc0V4cHJlc3Npb25PZk9wdGlvbmFsQ2hhaW5Sb290KHlpKSYmIWUuaXNOdWxsaXNoQ29hbGVzY2UoeWkucGFyZW50KT9kOndlKHlpKT8oTmUoUnIpLGxlKHtmbGFnczpjZSxhbnRlY2VkZW50OlJyLG5vZGU6eWl9KSk6UnI6Y2UmMzI/UnI6ZH1mdW5jdGlvbiBiZShjZSxScix5aSxxaSl7cmV0dXJuIE5lKGNlKSxsZSh7ZmxhZ3M6MTI4LGFudGVjZWRlbnQ6Y2Usc3dpdGNoU3RhdGVtZW50OlJyLGNsYXVzZVN0YXJ0OnlpLGNsYXVzZUVuZDpxaX0pfWZ1bmN0aW9uIEdlKGNlLFJyLHlpKXtOZShScik7dmFyIHFpPWxlKHtmbGFnczpjZSxhbnRlY2VkZW50OlJyLG5vZGU6eWl9KTtyZXR1cm4gViYmbihWLHFpKSxxaX1mdW5jdGlvbiB1cihjZSxScil7cmV0dXJuIE5lKGNlKSxsZSh7ZmxhZ3M6NTEyLGFudGVjZWRlbnQ6Y2Usbm9kZTpScn0pfWZ1bmN0aW9uIHlyKGNlKXt2YXIgUnI9Y2UuYW50ZWNlZGVudHM7cmV0dXJuIFJyP1JyLmxlbmd0aD09PTE/UnJbMF06Y2U6ZH1mdW5jdGlvbiBJcihjZSl7dmFyIFJyPWNlLnBhcmVudDtzd2l0Y2goUnIua2luZCl7Y2FzZSAyMzk6Y2FzZSAyNDE6Y2FzZSAyNDA6cmV0dXJuIFJyLmV4cHJlc3Npb249PT1jZTtjYXNlIDI0MjpjYXNlIDIyMjpyZXR1cm4gUnIuY29uZGl0aW9uPT09Y2V9cmV0dXJuITF9ZnVuY3Rpb24gd3IoY2Upe2Zvcig7OylpZihjZS5raW5kPT09MjEyKWNlPWNlLmV4cHJlc3Npb247ZWxzZSBpZihjZS5raW5kPT09MjE5JiZjZS5vcGVyYXRvcj09PTUzKWNlPWNlLm9wZXJhbmQ7ZWxzZSByZXR1cm4gY2Uua2luZD09PTIyMSYmKGNlLm9wZXJhdG9yVG9rZW4ua2luZD09PTU1fHxjZS5vcGVyYXRvclRva2VuLmtpbmQ9PT01Nnx8Y2Uub3BlcmF0b3JUb2tlbi5raW5kPT09NjApfWZ1bmN0aW9uIFVyKGNlKXtyZXR1cm4gY2U9ZS5za2lwUGFyZW50aGVzZXMoY2UpLGUuaXNCaW5hcnlFeHByZXNzaW9uKGNlKSYmZS5pc0xvZ2ljYWxPckNvYWxlc2NpbmdBc3NpZ25tZW50T3BlcmF0b3IoY2Uub3BlcmF0b3JUb2tlbi5raW5kKX1mdW5jdGlvbiBpaShjZSl7Zm9yKDtlLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24oY2UucGFyZW50KXx8ZS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihjZS5wYXJlbnQpJiZjZS5wYXJlbnQub3BlcmF0b3I9PT01MzspY2U9Y2UucGFyZW50O3JldHVybiFJcihjZSkmJiF3cihjZS5wYXJlbnQpJiYhKGUuaXNPcHRpb25hbENoYWluKGNlLnBhcmVudCkmJmNlLnBhcmVudC5leHByZXNzaW9uPT09Y2UpfWZ1bmN0aW9uIG1pKGNlLFJyLHlpLHFpKXt2YXIgamU9QSxIcj15O0E9eWkseT1xaSxjZShSciksQT1qZSx5PUhyfWZ1bmN0aW9uIHBlKGNlLFJyLHlpKXttaShEYSxjZSxScix5aSksKCFjZXx8IVVyKGNlKSYmIXdyKGNlKSYmIShlLmlzT3B0aW9uYWxDaGFpbihjZSkmJmUuaXNPdXRlcm1vc3RPcHRpb25hbENoYWluKGNlKSkpJiYobihScixscigzMixGLGNlKSksbih5aSxscig2NCxGLGNlKSkpfWZ1bmN0aW9uIG9yKGNlLFJyLHlpKXt2YXIgcWk9eCxqZT1YO3g9UnIsWD15aSxEYShjZSkseD1xaSxYPWplfWZ1bmN0aW9uIHFyKGNlLFJyKXtmb3IodmFyIHlpPVA7eWkmJmNlLnBhcmVudC5raW5kPT09MjUwOyl5aS5jb250aW51ZVRhcmdldD1Scix5aT15aS5uZXh0LGNlPWNlLnBhcmVudDtyZXR1cm4gUnJ9ZnVuY3Rpb24gc2koY2Upe3ZhciBScj1xcihjZSxCcigpKSx5aT1ZZSgpLHFpPVllKCk7bihScixGKSxGPVJyLHBlKGNlLmV4cHJlc3Npb24seWkscWkpLEY9eXIoeWkpLG9yKGNlLnN0YXRlbWVudCxxaSxSciksbihScixGKSxGPXlyKHFpKX1mdW5jdGlvbiBEaShjZSl7dmFyIFJyPUJyKCkseWk9cXIoY2UsWWUoKSkscWk9WWUoKTtuKFJyLEYpLEY9UnIsb3IoY2Uuc3RhdGVtZW50LHFpLHlpKSxuKHlpLEYpLEY9eXIoeWkpLHBlKGNlLmV4cHJlc3Npb24sUnIscWkpLEY9eXIocWkpfWZ1bmN0aW9uIHdpKGNlKXt2YXIgUnI9cXIoY2UsQnIoKSkseWk9WWUoKSxxaT1ZZSgpO0RhKGNlLmluaXRpYWxpemVyKSxuKFJyLEYpLEY9UnIscGUoY2UuY29uZGl0aW9uLHlpLHFpKSxGPXlyKHlpKSxvcihjZS5zdGF0ZW1lbnQscWksUnIpLERhKGNlLmluY3JlbWVudG9yKSxuKFJyLEYpLEY9eXIocWkpfWZ1bmN0aW9uIFhpKGNlKXt2YXIgUnI9cXIoY2UsQnIoKSkseWk9WWUoKTtEYShjZS5leHByZXNzaW9uKSxuKFJyLEYpLEY9UnIsY2Uua2luZD09PTI0NCYmRGEoY2UuYXdhaXRNb2RpZmllciksbih5aSxGKSxEYShjZS5pbml0aWFsaXplciksY2UuaW5pdGlhbGl6ZXIua2luZCE9PTI1NSYmV3IoY2UuaW5pdGlhbGl6ZXIpLG9yKGNlLnN0YXRlbWVudCx5aSxSciksbihScixGKSxGPXlyKHlpKX1mdW5jdGlvbiBldChjZSl7dmFyIFJyPVllKCkseWk9WWUoKSxxaT1ZZSgpO3BlKGNlLmV4cHJlc3Npb24sUnIseWkpLEY9eXIoUnIpLERhKGNlLnRoZW5TdGF0ZW1lbnQpLG4ocWksRiksRj15cih5aSksRGEoY2UuZWxzZVN0YXRlbWVudCksbihxaSxGKSxGPXlyKHFpKX1mdW5jdGlvbiBHaShjZSl7RGEoY2UuZXhwcmVzc2lvbiksY2Uua2luZD09PTI0NyYmKGs9ITAsJCYmbigkLEYpKSxGPWR9ZnVuY3Rpb24gV3QoY2Upe2Zvcih2YXIgUnI9UDtScjtScj1Sci5uZXh0KWlmKFJyLm5hbWU9PT1jZSlyZXR1cm4gUnJ9ZnVuY3Rpb24gWnQoY2UsUnIseWkpe3ZhciBxaT1jZS5raW5kPT09MjQ2P1JyOnlpO3FpJiYobihxaSxGKSxGPWQpfWZ1bmN0aW9uIF9yKGNlKXtpZihEYShjZS5sYWJlbCksY2UubGFiZWwpe3ZhciBScj1XdChjZS5sYWJlbC5lc2NhcGVkVGV4dCk7UnImJihSci5yZWZlcmVuY2VkPSEwLFp0KGNlLFJyLmJyZWFrVGFyZ2V0LFJyLmNvbnRpbnVlVGFyZ2V0KSl9ZWxzZSBadChjZSx4LFgpfWZ1bmN0aW9uIHBpKGNlKXt2YXIgUnI9JCx5aT1WLHFpPVllKCksamU9WWUoKSxIcj1ZZSgpO2lmKGNlLmZpbmFsbHlCbG9jayYmKCQ9amUpLG4oSHIsRiksVj1IcixEYShjZS50cnlCbG9jayksbihxaSxGKSxjZS5jYXRjaENsYXVzZSYmKEY9eXIoSHIpLEhyPVllKCksbihIcixGKSxWPUhyLERhKGNlLmNhdGNoQ2xhdXNlKSxuKHFpLEYpKSwkPVJyLFY9eWksY2UuZmluYWxseUJsb2NrKXt2YXIgcHQ9WWUoKTtwdC5hbnRlY2VkZW50cz1lLmNvbmNhdGVuYXRlKGUuY29uY2F0ZW5hdGUocWkuYW50ZWNlZGVudHMsSHIuYW50ZWNlZGVudHMpLGplLmFudGVjZWRlbnRzKSxGPXB0LERhKGNlLmZpbmFsbHlCbG9jayksRi5mbGFncyYxP0Y9ZDooJCYmamUuYW50ZWNlZGVudHMmJm4oJCxFcihwdCxqZS5hbnRlY2VkZW50cyxGKSksViYmSHIuYW50ZWNlZGVudHMmJm4oVixFcihwdCxIci5hbnRlY2VkZW50cyxGKSksRj1xaS5hbnRlY2VkZW50cz9FcihwdCxxaS5hbnRlY2VkZW50cyxGKTpkKX1lbHNlIEY9eXIocWkpfWZ1bmN0aW9uIGFlKGNlKXt2YXIgUnI9WWUoKTtEYShjZS5leHByZXNzaW9uKTt2YXIgeWk9eCxxaT1MO3g9UnIsTD1GLERhKGNlLmNhc2VCbG9jayksbihScixGKTt2YXIgamU9ZS5mb3JFYWNoKGNlLmNhc2VCbG9jay5jbGF1c2VzLGZ1bmN0aW9uKEhyKXtyZXR1cm4gSHIua2luZD09PTI5MH0pO2NlLnBvc3NpYmx5RXhoYXVzdGl2ZT0hamUmJiFSci5hbnRlY2VkZW50cyxqZXx8bihScixiZShMLGNlLDAsMCkpLHg9eWksTD1xaSxGPXlyKFJyKX1mdW5jdGlvbiBYZShjZSl7Zm9yKHZhciBScj1jZS5jbGF1c2VzLHlpPXdlKGNlLnBhcmVudC5leHByZXNzaW9uKSxxaT1kLGplPTA7amU8UnIubGVuZ3RoO2plKyspe2Zvcih2YXIgSHI9amU7IVJyW2plXS5zdGF0ZW1lbnRzLmxlbmd0aCYmamUrMTxSci5sZW5ndGg7KURhKFJyW2plXSksamUrKzt2YXIgcHQ9WWUoKTtuKHB0LHlpP2JlKEwsY2UucGFyZW50LEhyLGplKzEpOkwpLG4ocHQscWkpLEY9eXIocHQpO3ZhciBQdD1ScltqZV07RGEoUHQpLHFpPUYsIShGLmZsYWdzJjEpJiZqZSE9PVJyLmxlbmd0aC0xJiZzZS5ub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaCYmKFB0LmZhbGx0aHJvdWdoRmxvd05vZGU9Ril9fWZ1bmN0aW9uIEpyKGNlKXt2YXIgUnI9RjtGPUwsRGEoY2UuZXhwcmVzc2lvbiksRj1ScixycihjZS5zdGF0ZW1lbnRzKX1mdW5jdGlvbiB0aShjZSl7RGEoY2UuZXhwcmVzc2lvbiksWmUoY2UuZXhwcmVzc2lvbil9ZnVuY3Rpb24gWmUoY2Upe2lmKGNlLmtpbmQ9PT0yMDgpe3ZhciBScj1jZTtSci5leHByZXNzaW9uLmtpbmQhPT0xMDYmJmUuaXNEb3R0ZWROYW1lKFJyLmV4cHJlc3Npb24pJiYoRj11cihGLFJyKSl9fWZ1bmN0aW9uIFNyKGNlKXt2YXIgUnI9WWUoKTtQPXtuZXh0OlAsbmFtZTpjZS5sYWJlbC5lc2NhcGVkVGV4dCxicmVha1RhcmdldDpScixjb250aW51ZVRhcmdldDp2b2lkIDAscmVmZXJlbmNlZDohMX0sRGEoY2UubGFiZWwpLERhKGNlLnN0YXRlbWVudCksIVAucmVmZXJlbmNlZCYmIXNlLmFsbG93VW51c2VkTGFiZWxzJiZQbihlLnVudXNlZExhYmVsSXNFcnJvcihzZSksY2UubGFiZWwsZS5EaWFnbm9zdGljcy5VbnVzZWRfbGFiZWwpLFA9UC5uZXh0LG4oUnIsRiksRj15cihScil9ZnVuY3Rpb24genIoY2Upe2NlLmtpbmQ9PT0yMjEmJmNlLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzP1dyKGNlLmxlZnQpOldyKGNlKX1mdW5jdGlvbiBXcihjZSl7aWYoZGUoY2UpKUY9R2UoMTYsRixjZSk7ZWxzZSBpZihjZS5raW5kPT09MjA0KWZvcih2YXIgUnI9MCx5aT1jZS5lbGVtZW50cztScjx5aS5sZW5ndGg7UnIrKyl7dmFyIHFpPXlpW1JyXTtxaS5raW5kPT09MjI1P1dyKHFpLmV4cHJlc3Npb24pOnpyKHFpKX1lbHNlIGlmKGNlLmtpbmQ9PT0yMDUpZm9yKHZhciBqZT0wLEhyPWNlLnByb3BlcnRpZXM7amU8SHIubGVuZ3RoO2plKyspe3ZhciBwdD1IcltqZV07cHQua2luZD09PTI5Nj96cihwdC5pbml0aWFsaXplcik6cHQua2luZD09PTI5Nz9XcihwdC5uYW1lKTpwdC5raW5kPT09Mjk4JiZXcihwdC5leHByZXNzaW9uKX19ZnVuY3Rpb24gSmUoY2UsUnIseWkpe3ZhciBxaT1ZZSgpO2NlLm9wZXJhdG9yVG9rZW4ua2luZD09PTU1fHxjZS5vcGVyYXRvclRva2VuLmtpbmQ9PT03Nj9wZShjZS5sZWZ0LHFpLHlpKTpwZShjZS5sZWZ0LFJyLHFpKSxGPXlyKHFpKSxEYShjZS5vcGVyYXRvclRva2VuKSxlLmlzTG9naWNhbE9yQ29hbGVzY2luZ0Fzc2lnbm1lbnRPcGVyYXRvcihjZS5vcGVyYXRvclRva2VuLmtpbmQpPyhtaShEYSxjZS5yaWdodCxScix5aSksV3IoY2UubGVmdCksbihScixscigzMixGLGNlKSksbih5aSxscig2NCxGLGNlKSkpOnBlKGNlLnJpZ2h0LFJyLHlpKX1mdW5jdGlvbiB4ZShjZSl7aWYoY2Uub3BlcmF0b3I9PT01Myl7dmFyIFJyPUE7QT15LHk9UnIsSWUoY2UpLHk9QSxBPVJyfWVsc2UgSWUoY2UpLChjZS5vcGVyYXRvcj09PTQ1fHxjZS5vcGVyYXRvcj09PTQ2KSYmV3IoY2Uub3BlcmFuZCl9ZnVuY3Rpb24gdnIoY2Upe0llKGNlKSwoY2Uub3BlcmF0b3I9PT00NXx8Y2Uub3BlcmF0b3I9PT00NikmJldyKGNlLm9wZXJhbmQpfWZ1bmN0aW9uIG1yKGNlKXtqPyhqPSExLERhKGNlLm9wZXJhdG9yVG9rZW4pLERhKGNlLnJpZ2h0KSxqPSEwLERhKGNlLmxlZnQpKTooaj0hMCxEYShjZS5sZWZ0KSxqPSExLERhKGNlLm9wZXJhdG9yVG9rZW4pLERhKGNlLnJpZ2h0KSksV3IoY2UubGVmdCl9ZnVuY3Rpb24gQXIoKXtyZXR1cm4gZS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uVHJhbXBvbGluZShjZSxScix5aSxxaSxqZSx2b2lkIDApO2Z1bmN0aW9uIGNlKHB0LFB0KXtpZihQdCl7UHQuc3RhY2tJbmRleCsrLGUuc2V0UGFyZW50KHB0LGllKTt2YXIgZ2E9VTtXbihwdCk7dmFyIHVhPWllO2llPXB0LFB0LnNraXA9ITEsUHQuaW5TdHJpY3RNb2RlU3RhY2tbUHQuc3RhY2tJbmRleF09Z2EsUHQucGFyZW50U3RhY2tbUHQuc3RhY2tJbmRleF09dWF9ZWxzZSBQdD17c3RhY2tJbmRleDowLHNraXA6ITEsaW5TdHJpY3RNb2RlU3RhY2s6W3ZvaWQgMF0scGFyZW50U3RhY2s6W3ZvaWQgMF19O3ZhciBYbj1wdC5vcGVyYXRvclRva2VuLmtpbmQ7aWYoWG49PT01NXx8WG49PT01Nnx8WG49PT02MHx8ZS5pc0xvZ2ljYWxPckNvYWxlc2NpbmdBc3NpZ25tZW50T3BlcmF0b3IoWG4pKXtpZihpaShwdCkpe3ZhciBqcj1ZZSgpO0plKHB0LGpyLGpyKSxGPXlyKGpyKX1lbHNlIEplKHB0LEEseSk7UHQuc2tpcD0hMH1yZXR1cm4gUHR9ZnVuY3Rpb24gUnIocHQsUHQsZ2Epe2lmKCFQdC5za2lwKXt2YXIgdWE9SHIocHQpO3JldHVybiBnYS5vcGVyYXRvclRva2VuLmtpbmQ9PT0yNyYmWmUocHQpLHVhfX1mdW5jdGlvbiB5aShwdCxQdCxnYSl7UHQuc2tpcHx8RGEocHQpfWZ1bmN0aW9uIHFpKHB0LFB0LGdhKXtpZighUHQuc2tpcCl7dmFyIHVhPUhyKHB0KTtyZXR1cm4gZ2Eub3BlcmF0b3JUb2tlbi5raW5kPT09MjcmJlplKHB0KSx1YX19ZnVuY3Rpb24gamUocHQsUHQpe2lmKCFQdC5za2lwKXt2YXIgZ2E9cHQub3BlcmF0b3JUb2tlbi5raW5kO2lmKGUuaXNBc3NpZ25tZW50T3BlcmF0b3IoZ2EpJiYhZS5pc0Fzc2lnbm1lbnRUYXJnZXQocHQpJiYoV3IocHQubGVmdCksZ2E9PT02MyYmcHQubGVmdC5raW5kPT09MjA3KSl7dmFyIHVhPXB0LmxlZnQ7Q3IodWEuZXhwcmVzc2lvbikmJihGPUdlKDI1NixGLHB0KSl9fXZhciBYbj1QdC5pblN0cmljdE1vZGVTdGFja1tQdC5zdGFja0luZGV4XSxqcj1QdC5wYXJlbnRTdGFja1tQdC5zdGFja0luZGV4XTtYbiE9PXZvaWQgMCYmKFU9WG4pLGpyIT09dm9pZCAwJiYoaWU9anIpLFB0LnNraXA9ITEsUHQuc3RhY2tJbmRleC0tfWZ1bmN0aW9uIEhyKHB0KXtpZihwdCYmZS5pc0JpbmFyeUV4cHJlc3Npb24ocHQpJiYhZS5pc0Rlc3RydWN0dXJpbmdBc3NpZ25tZW50KHB0KSlyZXR1cm4gcHQ7RGEocHQpfX1mdW5jdGlvbiBPZShjZSl7SWUoY2UpLGNlLmV4cHJlc3Npb24ua2luZD09PTIwNiYmV3IoY2UuZXhwcmVzc2lvbil9ZnVuY3Rpb24gbnIoY2Upe3ZhciBScj1ZZSgpLHlpPVllKCkscWk9WWUoKTtwZShjZS5jb25kaXRpb24sUnIseWkpLEY9eXIoUnIpLERhKGNlLnF1ZXN0aW9uVG9rZW4pLERhKGNlLndoZW5UcnVlKSxuKHFpLEYpLEY9eXIoeWkpLERhKGNlLmNvbG9uVG9rZW4pLERhKGNlLndoZW5GYWxzZSksbihxaSxGKSxGPXlyKHFpKX1mdW5jdGlvbiBNcihjZSl7dmFyIFJyPWUuaXNPbWl0dGVkRXhwcmVzc2lvbihjZSk/dm9pZCAwOmNlLm5hbWU7aWYoZS5pc0JpbmRpbmdQYXR0ZXJuKFJyKSlmb3IodmFyIHlpPTAscWk9UnIuZWxlbWVudHM7eWk8cWkubGVuZ3RoO3lpKyspe3ZhciBqZT1xaVt5aV07TXIoamUpfWVsc2UgRj1HZSgxNixGLGNlKX1mdW5jdGlvbiBQZShjZSl7SWUoY2UpLChjZS5pbml0aWFsaXplcnx8ZS5pc0ZvckluT3JPZlN0YXRlbWVudChjZS5wYXJlbnQucGFyZW50KSkmJk1yKGNlKX1mdW5jdGlvbiBVZShjZSl7ZS5pc0JpbmRpbmdQYXR0ZXJuKGNlLm5hbWUpPyhycihjZS5kZWNvcmF0b3JzKSxycihjZS5tb2RpZmllcnMpLERhKGNlLmRvdERvdERvdFRva2VuKSxEYShjZS5wcm9wZXJ0eU5hbWUpLERhKGNlLmluaXRpYWxpemVyKSxEYShjZS5uYW1lKSk6SWUoY2UpfWZ1bmN0aW9uIGZyKGNlKXtEYShjZS50YWdOYW1lKSxjZS5raW5kIT09MzM5JiZjZS5mdWxsTmFtZSYmKGUuc2V0UGFyZW50KGNlLmZ1bGxOYW1lLGNlKSxlLnNldFBhcmVudFJlY3Vyc2l2ZShjZS5mdWxsTmFtZSwhMSkpLHR5cGVvZiBjZS5jb21tZW50IT1cInN0cmluZ1wiJiZycihjZS5jb21tZW50KX1mdW5jdGlvbiBEZShjZSl7SWUoY2UpO3ZhciBScj1lLmdldEhvc3RTaWduYXR1cmVGcm9tSlNEb2MoY2UpO1JyJiZSci5raW5kIT09MTY5JiZGZShSci5zeW1ib2wsUnIsMzIpfWZ1bmN0aW9uIGdyKGNlLFJyLHlpKXttaShEYSxjZSxScix5aSksKCFlLmlzT3B0aW9uYWxDaGFpbihjZSl8fGUuaXNPdXRlcm1vc3RPcHRpb25hbENoYWluKGNlKSkmJihuKFJyLGxyKDMyLEYsY2UpKSxuKHlpLGxyKDY0LEYsY2UpKSl9ZnVuY3Rpb24gVnIoY2Upe3N3aXRjaChjZS5raW5kKXtjYXNlIDIwNjpEYShjZS5xdWVzdGlvbkRvdFRva2VuKSxEYShjZS5uYW1lKTticmVhaztjYXNlIDIwNzpEYShjZS5xdWVzdGlvbkRvdFRva2VuKSxEYShjZS5hcmd1bWVudEV4cHJlc3Npb24pO2JyZWFrO2Nhc2UgMjA4OkRhKGNlLnF1ZXN0aW9uRG90VG9rZW4pLHJyKGNlLnR5cGVBcmd1bWVudHMpLHJyKGNlLmFyZ3VtZW50cyk7YnJlYWt9fWZ1bmN0aW9uIFRyKGNlLFJyLHlpKXt2YXIgcWk9ZS5pc09wdGlvbmFsQ2hhaW5Sb290KGNlKT9ZZSgpOnZvaWQgMDtncihjZS5leHByZXNzaW9uLHFpfHxScix5aSkscWkmJihGPXlyKHFpKSksbWkoVnIsY2UsUnIseWkpLGUuaXNPdXRlcm1vc3RPcHRpb25hbENoYWluKGNlKSYmKG4oUnIsbHIoMzIsRixjZSkpLG4oeWksbHIoNjQsRixjZSkpKX1mdW5jdGlvbiB2aShjZSl7aWYoaWkoY2UpKXt2YXIgUnI9WWUoKTtUcihjZSxScixSciksRj15cihScil9ZWxzZSBUcihjZSxBLHkpfWZ1bmN0aW9uIFVpKGNlKXtlLmlzT3B0aW9uYWxDaGFpbihjZSk/dmkoY2UpOkllKGNlKX1mdW5jdGlvbiBZaShjZSl7ZS5pc09wdGlvbmFsQ2hhaW4oY2UpP3ZpKGNlKTpJZShjZSl9ZnVuY3Rpb24gV2koY2Upe2lmKGUuaXNPcHRpb25hbENoYWluKGNlKSl2aShjZSk7ZWxzZXt2YXIgUnI9ZS5za2lwUGFyZW50aGVzZXMoY2UuZXhwcmVzc2lvbik7UnIua2luZD09PTIxM3x8UnIua2luZD09PTIxND8ocnIoY2UudHlwZUFyZ3VtZW50cykscnIoY2UuYXJndW1lbnRzKSxEYShjZS5leHByZXNzaW9uKSk6KEllKGNlKSxjZS5leHByZXNzaW9uLmtpbmQ9PT0xMDYmJihGPXVyKEYsY2UpKSl9aWYoY2UuZXhwcmVzc2lvbi5raW5kPT09MjA2KXt2YXIgeWk9Y2UuZXhwcmVzc2lvbjtlLmlzSWRlbnRpZmllcih5aS5uYW1lKSYmQ3IoeWkuZXhwcmVzc2lvbikmJmUuaXNQdXNoT3JVbnNoaWZ0SWRlbnRpZmllcih5aS5uYW1lKSYmKEY9R2UoMjU2LEYsY2UpKX19ZnVuY3Rpb24gY3QoY2Upe3N3aXRjaChjZS5raW5kKXtjYXNlIDIyNjpjYXNlIDI1NzpjYXNlIDI2MDpjYXNlIDIwNTpjYXNlIDE4MjpjYXNlIDMyMjpjYXNlIDI4NjpyZXR1cm4gMTtjYXNlIDI1ODpyZXR1cm4gNjU7Y2FzZSAyNjE6Y2FzZSAyNTk6Y2FzZSAxOTU6Y2FzZSAxNzY6cmV0dXJuIDMzO2Nhc2UgMzA1OnJldHVybiAzNztjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDE2OTppZihlLmlzT2JqZWN0TGl0ZXJhbE9yQ2xhc3NFeHByZXNzaW9uTWV0aG9kT3JBY2Nlc3NvcihjZSkpcmV0dXJuIDE3MztjYXNlIDE3MTpjYXNlIDI1NjpjYXNlIDE2ODpjYXNlIDE3NDpjYXNlIDMyMzpjYXNlIDMxNzpjYXNlIDE3OTpjYXNlIDE3NTpjYXNlIDE4MDpjYXNlIDE3MDpyZXR1cm4gNDU7Y2FzZSAyMTM6Y2FzZSAyMTQ6cmV0dXJuIDYxO2Nhc2UgMjYyOnJldHVybiA0O2Nhc2UgMTY3OnJldHVybiBjZS5pbml0aWFsaXplcj80OjA7Y2FzZSAyOTI6Y2FzZSAyNDI6Y2FzZSAyNDM6Y2FzZSAyNDQ6Y2FzZSAyNjM6cmV0dXJuIDI7Y2FzZSAyMzU6cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2UoY2UucGFyZW50KXx8ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihjZS5wYXJlbnQpPzA6Mn1yZXR1cm4gMH1mdW5jdGlvbiBMaShjZSl7dmUmJih2ZS5uZXh0Q29udGFpbmVyPWNlKSx2ZT1jZX1mdW5jdGlvbiBudChjZSxScix5aSl7c3dpdGNoKFIua2luZCl7Y2FzZSAyNjE6cmV0dXJuIFJlKGNlLFJyLHlpKTtjYXNlIDMwNTpyZXR1cm4geHQoY2UsUnIseWkpO2Nhc2UgMjI2OmNhc2UgMjU3OnJldHVybiBNdChjZSxScix5aSk7Y2FzZSAyNjA6cmV0dXJuIGdlKFIuc3ltYm9sLmV4cG9ydHMsUi5zeW1ib2wsY2UsUnIseWkpO2Nhc2UgMTgyOmNhc2UgMzIyOmNhc2UgMjA1OmNhc2UgMjU4OmNhc2UgMjg2OnJldHVybiBnZShSLnN5bWJvbC5tZW1iZXJzLFIuc3ltYm9sLGNlLFJyLHlpKTtjYXNlIDE3OTpjYXNlIDE4MDpjYXNlIDE3NDpjYXNlIDE3NTpjYXNlIDMyMzpjYXNlIDE3NjpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDMxNzpjYXNlIDM0NTpjYXNlIDMzODpjYXNlIDE3MDpjYXNlIDI1OTpjYXNlIDE5NTpyZXR1cm4gZ2UoUi5sb2NhbHMsdm9pZCAwLGNlLFJyLHlpKX19ZnVuY3Rpb24gTXQoY2UsUnIseWkpe3JldHVybiBlLmlzU3RhdGljKGNlKT9nZShSLnN5bWJvbC5leHBvcnRzLFIuc3ltYm9sLGNlLFJyLHlpKTpnZShSLnN5bWJvbC5tZW1iZXJzLFIuc3ltYm9sLGNlLFJyLHlpKX1mdW5jdGlvbiB4dChjZSxScix5aSl7cmV0dXJuIGUuaXNFeHRlcm5hbE1vZHVsZShiKT9SZShjZSxScix5aSk6Z2UoYi5sb2NhbHMsdm9pZCAwLGNlLFJyLHlpKX1mdW5jdGlvbiB1dChjZSl7dmFyIFJyPWUuaXNTb3VyY2VGaWxlKGNlKT9jZTplLnRyeUNhc3QoY2UuYm9keSxlLmlzTW9kdWxlQmxvY2spO3JldHVybiEhUnImJlJyLnN0YXRlbWVudHMuc29tZShmdW5jdGlvbih5aSl7cmV0dXJuIGUuaXNFeHBvcnREZWNsYXJhdGlvbih5aSl8fGUuaXNFeHBvcnRBc3NpZ25tZW50KHlpKX0pfWZ1bmN0aW9uIER0KGNlKXtjZS5mbGFncyYxNjc3NzIxNiYmIXV0KGNlKT9jZS5mbGFnc3w9NjQ6Y2UuZmxhZ3MmPS02NX1mdW5jdGlvbiBSdChjZSl7aWYoRHQoY2UpLGUuaXNBbWJpZW50TW9kdWxlKGNlKSlpZihlLmhhc1N5bnRhY3RpY01vZGlmaWVyKGNlLDEpJiZLbihjZSxlLkRpYWdub3N0aWNzLmV4cG9ydF9tb2RpZmllcl9jYW5ub3RfYmVfYXBwbGllZF90b19hbWJpZW50X21vZHVsZXNfYW5kX21vZHVsZV9hdWdtZW50YXRpb25zX3NpbmNlX3RoZXlfYXJlX2Fsd2F5c192aXNpYmxlKSxlLmlzTW9kdWxlQXVnbWVudGF0aW9uRXh0ZXJuYWwoY2UpKUlpKGNlKTtlbHNle3ZhciBScj12b2lkIDA7aWYoY2UubmFtZS5raW5kPT09MTApe3ZhciB5aT1jZS5uYW1lLnRleHQ7UnI9ZS50cnlQYXJzZVBhdHRlcm4oeWkpLFJyPT09dm9pZCAwJiZLbihjZS5uYW1lLGUuRGlhZ25vc3RpY3MuUGF0dGVybl8wX2Nhbl9oYXZlX2F0X21vc3Rfb25lX0FzdGVyaXNrX2NoYXJhY3Rlcix5aSl9dmFyIHFpPW50KGNlLDUxMiwxMTA3MzUpO2IucGF0dGVybkFtYmllbnRNb2R1bGVzPWUuYXBwZW5kKGIucGF0dGVybkFtYmllbnRNb2R1bGVzLFJyJiYhZS5pc1N0cmluZyhScik/e3BhdHRlcm46UnIsc3ltYm9sOnFpfTp2b2lkIDApfWVsc2V7dmFyIGplPUlpKGNlKTtpZihqZSE9PTApe3ZhciBxaT1jZS5zeW1ib2w7cWkuY29uc3RFbnVtT25seU1vZHVsZT0hKHFpLmZsYWdzJjMwNCkmJmplPT09MiYmcWkuY29uc3RFbnVtT25seU1vZHVsZSE9PSExfX19ZnVuY3Rpb24gSWkoY2Upe3ZhciBScj1DKGNlKSx5aT1SciE9PTA7cmV0dXJuIG50KGNlLHlpPzUxMjoxMDI0LHlpPzExMDczNTowKSxScn1mdW5jdGlvbiBLaShjZSl7dmFyIFJyPVdlKDEzMTA3MixaKGNlKSk7RmUoUnIsY2UsMTMxMDcyKTt2YXIgeWk9V2UoMjA0OCxcIl9fdHlwZVwiKTtGZSh5aSxjZSwyMDQ4KSx5aS5tZW1iZXJzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSx5aS5tZW1iZXJzLnNldChSci5lc2NhcGVkTmFtZSxScil9ZnVuY3Rpb24gRmkoY2Upe3ZhciBScjtpZihmdW5jdGlvbih1YSl7dWFbdWEuUHJvcGVydHk9MV09XCJQcm9wZXJ0eVwiLHVhW3VhLkFjY2Vzc29yPTJdPVwiQWNjZXNzb3JcIn0oUnJ8fChScj17fSkpLFUmJiFlLmlzQXNzaWdubWVudFRhcmdldChjZSkpZm9yKHZhciB5aT1uZXcgZS5NYXAscWk9MCxqZT1jZS5wcm9wZXJ0aWVzO3FpPGplLmxlbmd0aDtxaSsrKXt2YXIgSHI9amVbcWldO2lmKCEoSHIua2luZD09PTI5OHx8SHIubmFtZS5raW5kIT09NzkpKXt2YXIgcHQ9SHIubmFtZSxQdD1Ici5raW5kPT09Mjk2fHxIci5raW5kPT09Mjk3fHxIci5raW5kPT09MTY5PzE6MixnYT15aS5nZXQocHQuZXNjYXBlZFRleHQpO2lmKCFnYSl7eWkuc2V0KHB0LmVzY2FwZWRUZXh0LFB0KTtjb250aW51ZX19fXJldHVybiB3dChjZSw0MDk2LFwiX19vYmplY3RcIil9ZnVuY3Rpb24gdWkoY2Upe3JldHVybiB3dChjZSw0MDk2LFwiX19qc3hBdHRyaWJ1dGVzXCIpfWZ1bmN0aW9uIEJ0KGNlLFJyLHlpKXtyZXR1cm4gbnQoY2UsUnIseWkpfWZ1bmN0aW9uIHd0KGNlLFJyLHlpKXt2YXIgcWk9V2UoUnIseWkpO3JldHVybiBSciYxMDY1MDgmJihxaS5wYXJlbnQ9Ui5zeW1ib2wpLEZlKHFpLGNlLFJyKSxxaX1mdW5jdGlvbiBuYShjZSxScix5aSl7c3dpdGNoKE8ua2luZCl7Y2FzZSAyNjE6UmUoY2UsUnIseWkpO2JyZWFrO2Nhc2UgMzA1OmlmKGUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUoUikpe1JlKGNlLFJyLHlpKTticmVha31kZWZhdWx0Ok8ubG9jYWxzfHwoTy5sb2NhbHM9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpLExpKE8pKSxnZShPLmxvY2Fscyx2b2lkIDAsY2UsUnIseWkpfX1mdW5jdGlvbiBBaSgpe2lmKCEhZWUpe2Zvcih2YXIgY2U9UixScj12ZSx5aT1PLHFpPWllLGplPUYsSHI9MCxwdD1lZTtIcjxwdC5sZW5ndGg7SHIrKyl7dmFyIFB0PXB0W0hyXSxnYT1QdC5wYXJlbnQucGFyZW50O1I9ZS5maW5kQW5jZXN0b3IoZ2EucGFyZW50LGZ1bmN0aW9uKGZvKXtyZXR1cm4hIShjdChmbykmMSl9KXx8YixPPWUuZ2V0RW5jbG9zaW5nQmxvY2tTY29wZUNvbnRhaW5lcihnYSl8fGIsRj1sZSh7ZmxhZ3M6Mn0pLGllPVB0LERhKFB0LnR5cGVFeHByZXNzaW9uKTt2YXIgdWE9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihQdCk7aWYoKGUuaXNKU0RvY0VudW1UYWcoUHQpfHwhUHQuZnVsbE5hbWUpJiZ1YSYmZS5pc1Byb3BlcnR5QWNjZXNzRW50aXR5TmFtZUV4cHJlc3Npb24odWEucGFyZW50KSl7dmFyIFhuPVdhKHVhLnBhcmVudCk7aWYoWG4pe3NhKGIuc3ltYm9sLHVhLnBhcmVudCxYbiwhIWUuZmluZEFuY2VzdG9yKHVhLGZ1bmN0aW9uKGZvKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihmbykmJmZvLm5hbWUuZXNjYXBlZFRleHQ9PT1cInByb3RvdHlwZVwifSksITEpO3ZhciBqcj1SO3N3aXRjaChlLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvblByb3BlcnR5QWNjZXNzS2luZCh1YS5wYXJlbnQpKXtjYXNlIDE6Y2FzZSAyOmUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUoYik/Uj1iOlI9dm9pZCAwO2JyZWFrO2Nhc2UgNDpSPXVhLnBhcmVudC5leHByZXNzaW9uO2JyZWFrO2Nhc2UgMzpSPXVhLnBhcmVudC5leHByZXNzaW9uLm5hbWU7YnJlYWs7Y2FzZSA1OlI9VChiLHVhLnBhcmVudC5leHByZXNzaW9uKT9iOmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24odWEucGFyZW50LmV4cHJlc3Npb24pP3VhLnBhcmVudC5leHByZXNzaW9uLm5hbWU6dWEucGFyZW50LmV4cHJlc3Npb247YnJlYWs7Y2FzZSAwOnJldHVybiBlLkRlYnVnLmZhaWwoXCJTaG91bGRuJ3QgaGF2ZSBkZXRlY3RlZCB0eXBlZGVmIG9yIGVudW0gb24gbm9uLWFzc2lnbm1lbnQgZGVjbGFyYXRpb25cIil9UiYmUmUoUHQsNTI0Mjg4LDc4ODk2OCksUj1qcn19ZWxzZSBlLmlzSlNEb2NFbnVtVGFnKFB0KXx8IVB0LmZ1bGxOYW1lfHxQdC5mdWxsTmFtZS5raW5kPT09Nzk/KGllPVB0LnBhcmVudCxuYShQdCw1MjQyODgsNzg4OTY4KSk6RGEoUHQuZnVsbE5hbWUpfVI9Y2UsdmU9UnIsTz15aSxpZT1xaSxGPWplfX1mdW5jdGlvbiBPaShjZSl7IWIucGFyc2VEaWFnbm9zdGljcy5sZW5ndGgmJiEoY2UuZmxhZ3MmMTY3NzcyMTYpJiYhKGNlLmZsYWdzJjgzODg2MDgpJiYhZS5pc0lkZW50aWZpZXJOYW1lKGNlKSYmKFUmJmNlLm9yaWdpbmFsS2V5d29yZEtpbmQ+PTExNyYmY2Uub3JpZ2luYWxLZXl3b3JkS2luZDw9MTI1P2IuYmluZERpYWdub3N0aWNzLnB1c2goZyhjZSxqaShjZSksZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhjZSkpKTpjZS5vcmlnaW5hbEtleXdvcmRLaW5kPT09MTMyP2UuaXNFeHRlcm5hbE1vZHVsZShiKSYmZS5pc0luVG9wTGV2ZWxDb250ZXh0KGNlKT9iLmJpbmREaWFnbm9zdGljcy5wdXNoKGcoY2UsZS5EaWFnbm9zdGljcy5JZGVudGlmaWVyX2V4cGVjdGVkXzBfaXNfYV9yZXNlcnZlZF93b3JkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGUsZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhjZSkpKTpjZS5mbGFncyYzMjc2OCYmYi5iaW5kRGlhZ25vc3RpY3MucHVzaChnKGNlLGUuRGlhZ25vc3RpY3MuSWRlbnRpZmllcl9leHBlY3RlZF8wX2lzX2FfcmVzZXJ2ZWRfd29yZF90aGF0X2Nhbm5vdF9iZV91c2VkX2hlcmUsZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhjZSkpKTpjZS5vcmlnaW5hbEtleXdvcmRLaW5kPT09MTI1JiZjZS5mbGFncyY4MTkyJiZiLmJpbmREaWFnbm9zdGljcy5wdXNoKGcoY2UsZS5EaWFnbm9zdGljcy5JZGVudGlmaWVyX2V4cGVjdGVkXzBfaXNfYV9yZXNlcnZlZF93b3JkX3RoYXRfY2Fubm90X2JlX3VzZWRfaGVyZSxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKGNlKSkpKX1mdW5jdGlvbiBqaShjZSl7cmV0dXJuIGUuZ2V0Q29udGFpbmluZ0NsYXNzKGNlKT9lLkRpYWdub3N0aWNzLklkZW50aWZpZXJfZXhwZWN0ZWRfMF9pc19hX3Jlc2VydmVkX3dvcmRfaW5fc3RyaWN0X21vZGVfQ2xhc3NfZGVmaW5pdGlvbnNfYXJlX2F1dG9tYXRpY2FsbHlfaW5fc3RyaWN0X21vZGU6Yi5leHRlcm5hbE1vZHVsZUluZGljYXRvcj9lLkRpYWdub3N0aWNzLklkZW50aWZpZXJfZXhwZWN0ZWRfMF9pc19hX3Jlc2VydmVkX3dvcmRfaW5fc3RyaWN0X21vZGVfTW9kdWxlc19hcmVfYXV0b21hdGljYWxseV9pbl9zdHJpY3RfbW9kZTplLkRpYWdub3N0aWNzLklkZW50aWZpZXJfZXhwZWN0ZWRfMF9pc19hX3Jlc2VydmVkX3dvcmRfaW5fc3RyaWN0X21vZGV9ZnVuY3Rpb24gVmkoY2Upe2NlLmVzY2FwZWRUZXh0PT09XCIjY29uc3RydWN0b3JcIiYmKGIucGFyc2VEaWFnbm9zdGljcy5sZW5ndGh8fGIuYmluZERpYWdub3N0aWNzLnB1c2goZyhjZSxlLkRpYWdub3N0aWNzLmNvbnN0cnVjdG9yX2lzX2FfcmVzZXJ2ZWRfd29yZCxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKGNlKSkpKX1mdW5jdGlvbiBhdChjZSl7VSYmZS5pc0xlZnRIYW5kU2lkZUV4cHJlc3Npb24oY2UubGVmdCkmJmUuaXNBc3NpZ25tZW50T3BlcmF0b3IoY2Uub3BlcmF0b3JUb2tlbi5raW5kKSYmUWEoY2UsY2UubGVmdCl9ZnVuY3Rpb24gQXQoY2Upe1UmJmNlLnZhcmlhYmxlRGVjbGFyYXRpb24mJlFhKGNlLGNlLnZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSl9ZnVuY3Rpb24gYmEoY2Upe2lmKFUmJmNlLmV4cHJlc3Npb24ua2luZD09PTc5KXt2YXIgUnI9ZS5nZXRFcnJvclNwYW5Gb3JOb2RlKGIsY2UuZXhwcmVzc2lvbik7Yi5iaW5kRGlhZ25vc3RpY3MucHVzaChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKGIsUnIuc3RhcnQsUnIubGVuZ3RoLGUuRGlhZ25vc3RpY3MuZGVsZXRlX2Nhbm5vdF9iZV9jYWxsZWRfb25fYW5faWRlbnRpZmllcl9pbl9zdHJpY3RfbW9kZSkpfX1mdW5jdGlvbiAkYShjZSl7cmV0dXJuIGUuaXNJZGVudGlmaWVyKGNlKSYmKGNlLmVzY2FwZWRUZXh0PT09XCJldmFsXCJ8fGNlLmVzY2FwZWRUZXh0PT09XCJhcmd1bWVudHNcIil9ZnVuY3Rpb24gUWEoY2UsUnIpe2lmKFJyJiZSci5raW5kPT09Nzkpe3ZhciB5aT1ScjtpZigkYSh5aSkpe3ZhciBxaT1lLmdldEVycm9yU3BhbkZvck5vZGUoYixScik7Yi5iaW5kRGlhZ25vc3RpY3MucHVzaChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKGIscWkuc3RhcnQscWkubGVuZ3RoLGFpKGNlKSxlLmlkVGV4dCh5aSkpKX19fWZ1bmN0aW9uIGFpKGNlKXtyZXR1cm4gZS5nZXRDb250YWluaW5nQ2xhc3MoY2UpP2UuRGlhZ25vc3RpY3MuQ29kZV9jb250YWluZWRfaW5fYV9jbGFzc19pc19ldmFsdWF0ZWRfaW5fSmF2YVNjcmlwdF9zX3N0cmljdF9tb2RlX3doaWNoX2RvZXNfbm90X2FsbG93X3RoaXNfdXNlX29mXzBfRm9yX21vcmVfaW5mb3JtYXRpb25fc2VlX2h0dHBzX0NvbG9uX1NsYXNoX1NsYXNoZGV2ZWxvcGVyX21vemlsbGFfb3JnX1NsYXNoZW5fVVNfU2xhc2hkb2NzX1NsYXNoV2ViX1NsYXNoSmF2YVNjcmlwdF9TbGFzaFJlZmVyZW5jZV9TbGFzaFN0cmljdF9tb2RlOmIuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I/ZS5EaWFnbm9zdGljcy5JbnZhbGlkX3VzZV9vZl8wX01vZHVsZXNfYXJlX2F1dG9tYXRpY2FsbHlfaW5fc3RyaWN0X21vZGU6ZS5EaWFnbm9zdGljcy5JbnZhbGlkX3VzZV9vZl8wX2luX3N0cmljdF9tb2RlfWZ1bmN0aW9uIERuKGNlKXtVJiZRYShjZSxjZS5uYW1lKX1mdW5jdGlvbiBrYShjZSl7cmV0dXJuIGUuZ2V0Q29udGFpbmluZ0NsYXNzKGNlKT9lLkRpYWdub3N0aWNzLkZ1bmN0aW9uX2RlY2xhcmF0aW9uc19hcmVfbm90X2FsbG93ZWRfaW5zaWRlX2Jsb2Nrc19pbl9zdHJpY3RfbW9kZV93aGVuX3RhcmdldGluZ19FUzNfb3JfRVM1X0NsYXNzX2RlZmluaXRpb25zX2FyZV9hdXRvbWF0aWNhbGx5X2luX3N0cmljdF9tb2RlOmIuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I/ZS5EaWFnbm9zdGljcy5GdW5jdGlvbl9kZWNsYXJhdGlvbnNfYXJlX25vdF9hbGxvd2VkX2luc2lkZV9ibG9ja3NfaW5fc3RyaWN0X21vZGVfd2hlbl90YXJnZXRpbmdfRVMzX29yX0VTNV9Nb2R1bGVzX2FyZV9hdXRvbWF0aWNhbGx5X2luX3N0cmljdF9tb2RlOmUuRGlhZ25vc3RpY3MuRnVuY3Rpb25fZGVjbGFyYXRpb25zX2FyZV9ub3RfYWxsb3dlZF9pbnNpZGVfYmxvY2tzX2luX3N0cmljdF9tb2RlX3doZW5fdGFyZ2V0aW5nX0VTM19vcl9FUzV9ZnVuY3Rpb24gQmEoY2Upe2lmKEo8MiYmTy5raW5kIT09MzA1JiZPLmtpbmQhPT0yNjEmJiFlLmlzRnVuY3Rpb25MaWtlT3JDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oTykpe3ZhciBScj1lLmdldEVycm9yU3BhbkZvck5vZGUoYixjZSk7Yi5iaW5kRGlhZ25vc3RpY3MucHVzaChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKGIsUnIuc3RhcnQsUnIubGVuZ3RoLGthKGNlKSkpfX1mdW5jdGlvbiBwbihjZSl7SjwxJiZVJiZjZS5udW1lcmljTGl0ZXJhbEZsYWdzJjMyJiZiLmJpbmREaWFnbm9zdGljcy5wdXNoKGcoY2UsZS5EaWFnbm9zdGljcy5PY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGUpKX1mdW5jdGlvbiBDbihjZSl7VSYmUWEoY2UsY2Uub3BlcmFuZCl9ZnVuY3Rpb24gQmkoY2Upe1UmJihjZS5vcGVyYXRvcj09PTQ1fHxjZS5vcGVyYXRvcj09PTQ2KSYmUWEoY2UsY2Uub3BlcmFuZCl9ZnVuY3Rpb24ga24oY2Upe1UmJktuKGNlLGUuRGlhZ25vc3RpY3Mud2l0aF9zdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9zdHJpY3RfbW9kZSl9ZnVuY3Rpb24geG4oY2Upe1UmJmUuZ2V0RW1pdFNjcmlwdFRhcmdldChzZSk+PTImJihlLmlzRGVjbGFyYXRpb25TdGF0ZW1lbnQoY2Uuc3RhdGVtZW50KXx8ZS5pc1ZhcmlhYmxlU3RhdGVtZW50KGNlLnN0YXRlbWVudCkpJiZLbihjZS5sYWJlbCxlLkRpYWdub3N0aWNzLkFfbGFiZWxfaXNfbm90X2FsbG93ZWRfaGVyZSl9ZnVuY3Rpb24gS24oY2UsUnIseWkscWksamUpe3ZhciBIcj1lLmdldFNwYW5PZlRva2VuQXRQb3NpdGlvbihiLGNlLnBvcyk7Yi5iaW5kRGlhZ25vc3RpY3MucHVzaChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKGIsSHIuc3RhcnQsSHIubGVuZ3RoLFJyLHlpLHFpLGplKSl9ZnVuY3Rpb24gUG4oY2UsUnIseWkpe2VvKGNlLFJyLFJyLHlpKX1mdW5jdGlvbiBlbyhjZSxScix5aSxxaSl7Um4oY2Use3BvczplLmdldFRva2VuUG9zT2ZOb2RlKFJyLGIpLGVuZDp5aS5lbmR9LHFpKX1mdW5jdGlvbiBSbihjZSxScix5aSl7dmFyIHFpPWUuY3JlYXRlRmlsZURpYWdub3N0aWMoYixSci5wb3MsUnIuZW5kLVJyLnBvcyx5aSk7Y2U/Yi5iaW5kRGlhZ25vc3RpY3MucHVzaChxaSk6Yi5iaW5kU3VnZ2VzdGlvbkRpYWdub3N0aWNzPWUuYXBwZW5kKGIuYmluZFN1Z2dlc3Rpb25EaWFnbm9zdGljcyxLZShLZSh7fSxxaSkse2NhdGVnb3J5OmUuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb259KSl9ZnVuY3Rpb24gRGEoY2Upe2lmKCEhY2Upe2Uuc2V0UGFyZW50KGNlLGllKSxlLnRyYWNpbmcmJihjZS50cmFjaW5nUGF0aD1iLnBhdGgpO3ZhciBScj1VO2lmKFduKGNlKSxjZS5raW5kPjE2MCl7dmFyIHlpPWllO2llPWNlO3ZhciBxaT1jdChjZSk7cWk9PT0wP19lKGNlKTpFZShjZSxxaSksaWU9eWl9ZWxzZXt2YXIgeWk9aWU7Y2Uua2luZD09PTEmJihpZT1jZSksYm8oY2UpLGllPXlpfVU9UnJ9fWZ1bmN0aW9uIGJvKGNlKXtpZihlLmhhc0pTRG9jTm9kZXMoY2UpKWlmKGUuaXNJbkpTRmlsZShjZSkpZm9yKHZhciBScj0wLHlpPWNlLmpzRG9jO1JyPHlpLmxlbmd0aDtScisrKXt2YXIgcWk9eWlbUnJdO0RhKHFpKX1lbHNlIGZvcih2YXIgamU9MCxIcj1jZS5qc0RvYztqZTxIci5sZW5ndGg7amUrKyl7dmFyIHFpPUhyW2plXTtlLnNldFBhcmVudChxaSxjZSksZS5zZXRQYXJlbnRSZWN1cnNpdmUocWksITEpfX1mdW5jdGlvbiBSbyhjZSl7aWYoIVUpZm9yKHZhciBScj0wLHlpPWNlO1JyPHlpLmxlbmd0aDtScisrKXt2YXIgcWk9eWlbUnJdO2lmKCFlLmlzUHJvbG9ndWVEaXJlY3RpdmUocWkpKXJldHVybjtpZihFbihxaSkpe1U9ITA7cmV0dXJufX19ZnVuY3Rpb24gRW4oY2Upe3ZhciBScj1lLmdldFNvdXJjZVRleHRPZk5vZGVGcm9tU291cmNlRmlsZShiLGNlLmV4cHJlc3Npb24pO3JldHVybiBScj09PSdcInVzZSBzdHJpY3RcIid8fFJyPT09XCIndXNlIHN0cmljdCdcIn1mdW5jdGlvbiBXbihjZSl7c3dpdGNoKGNlLmtpbmQpe2Nhc2UgNzk6aWYoY2UuaXNJbkpTRG9jTmFtZXNwYWNlKXtmb3IodmFyIFJyPWNlLnBhcmVudDtSciYmIWUuaXNKU0RvY1R5cGVBbGlhcyhScik7KVJyPVJyLnBhcmVudDtuYShSciw1MjQyODgsNzg4OTY4KTticmVha31jYXNlIDEwODpyZXR1cm4gRiYmKGUuaXNFeHByZXNzaW9uKGNlKXx8aWUua2luZD09PTI5NykmJihjZS5mbG93Tm9kZT1GKSxPaShjZSk7Y2FzZSAxNjE6RiYmZS5pc1BhcnRPZlR5cGVRdWVyeShjZSkmJihjZS5mbG93Tm9kZT1GKTticmVhaztjYXNlIDIzMTpjYXNlIDEwNjpjZS5mbG93Tm9kZT1GO2JyZWFrO2Nhc2UgODA6cmV0dXJuIFZpKGNlKTtjYXNlIDIwNjpjYXNlIDIwNzp2YXIgeWk9Y2U7RiYmZGUoeWkpJiYoeWkuZmxvd05vZGU9RiksZS5pc1NwZWNpYWxQcm9wZXJ0eURlY2xhcmF0aW9uKHlpKSYmcWUoeWkpLGUuaXNJbkpTRmlsZSh5aSkmJmIuY29tbW9uSnNNb2R1bGVJbmRpY2F0b3ImJmUuaXNNb2R1bGVFeHBvcnRzQWNjZXNzRXhwcmVzc2lvbih5aSkmJiFLKE8sXCJtb2R1bGVcIikmJmdlKGIubG9jYWxzLHZvaWQgMCx5aS5leHByZXNzaW9uLDEzNDIxNzcyOSwxMTE1NTApO2JyZWFrO2Nhc2UgMjIxOnZhciBxaT1lLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoY2UpO3N3aXRjaChxaSl7Y2FzZSAxOmRuKGNlKTticmVhaztjYXNlIDI6Sm4oY2UpO2JyZWFrO2Nhc2UgMzpTaShjZS5sZWZ0LGNlKTticmVhaztjYXNlIDY6YnIoY2UpO2JyZWFrO2Nhc2UgNDpHcihjZSk7YnJlYWs7Y2FzZSA1OnZhciBqZT1jZS5sZWZ0LmV4cHJlc3Npb247aWYoZS5pc0luSlNGaWxlKGNlKSYmZS5pc0lkZW50aWZpZXIoamUpKXt2YXIgSHI9SyhPLGplLmVzY2FwZWRUZXh0KTtpZihlLmlzVGhpc0luaXRpYWxpemVkRGVjbGFyYXRpb24oSHI9PW51bGw/dm9pZCAwOkhyLnZhbHVlRGVjbGFyYXRpb24pKXtHcihjZSk7YnJlYWt9fVFpKGNlKTticmVhaztjYXNlIDA6YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmZhaWwoXCJVbmtub3duIGJpbmFyeSBleHByZXNzaW9uIHNwZWNpYWwgcHJvcGVydHkgYXNzaWdubWVudCBraW5kXCIpfXJldHVybiBhdChjZSk7Y2FzZSAyOTI6cmV0dXJuIEF0KGNlKTtjYXNlIDIxNTpyZXR1cm4gYmEoY2UpO2Nhc2UgODpyZXR1cm4gcG4oY2UpO2Nhc2UgMjIwOnJldHVybiBDbihjZSk7Y2FzZSAyMTk6cmV0dXJuIEJpKGNlKTtjYXNlIDI0ODpyZXR1cm4ga24oY2UpO2Nhc2UgMjUwOnJldHVybiB4bihjZSk7Y2FzZSAxOTI6aGU9ITA7cmV0dXJuO2Nhc2UgMTc3OmJyZWFrO2Nhc2UgMTYzOnJldHVybiBqcyhjZSk7Y2FzZSAxNjQ6cmV0dXJuIHBjKGNlKTtjYXNlIDI1NDpyZXR1cm4gWHMoY2UpO2Nhc2UgMjAzOnJldHVybiBjZS5mbG93Tm9kZT1GLFhzKGNlKTtjYXNlIDE2NzpjYXNlIDE2NjpyZXR1cm4gdG8oY2UpO2Nhc2UgMjk2OmNhc2UgMjk3OnJldHVybiBwcyhjZSw0LDApO2Nhc2UgMjk5OnJldHVybiBwcyhjZSw4LDkwMDA5NSk7Y2FzZSAxNzQ6Y2FzZSAxNzU6Y2FzZSAxNzY6cmV0dXJuIG50KGNlLDEzMTA3MiwwKTtjYXNlIDE2OTpjYXNlIDE2ODpyZXR1cm4gcHMoY2UsODE5MnwoY2UucXVlc3Rpb25Ub2tlbj8xNjc3NzIxNjowKSxlLmlzT2JqZWN0TGl0ZXJhbE1ldGhvZChjZSk/MDoxMDMzNTkpO2Nhc2UgMjU2OnJldHVybiBocyhjZSk7Y2FzZSAxNzE6cmV0dXJuIG50KGNlLDE2Mzg0LDApO2Nhc2UgMTcyOnJldHVybiBwcyhjZSwzMjc2OCw0NjAxNSk7Y2FzZSAxNzM6cmV0dXJuIHBzKGNlLDY1NTM2LDc4NzgzKTtjYXNlIDE3OTpjYXNlIDMxNzpjYXNlIDMyMzpjYXNlIDE4MDpyZXR1cm4gS2koY2UpO2Nhc2UgMTgyOmNhc2UgMzIyOmNhc2UgMTk1OnJldHVybiBDbyhjZSk7Y2FzZSAzMzI6cmV0dXJuIERlKGNlKTtjYXNlIDIwNTpyZXR1cm4gRmkoY2UpO2Nhc2UgMjEzOmNhc2UgMjE0OnJldHVybiB0YyhjZSk7Y2FzZSAyMDg6dmFyIHB0PWUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChjZSk7c3dpdGNoKHB0KXtjYXNlIDc6cmV0dXJuIFBpKGNlKTtjYXNlIDg6cmV0dXJuIHBhKGNlKTtjYXNlIDk6cmV0dXJuIFpyKGNlKTtjYXNlIDA6YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiVW5rbm93biBjYWxsIGV4cHJlc3Npb24gYXNzaWdubWVudCBkZWNsYXJhdGlvbiBraW5kXCIpfWUuaXNJbkpTRmlsZShjZSkmJlBjKGNlKTticmVhaztjYXNlIDIyNjpjYXNlIDI1NzpyZXR1cm4gVT0hMCxWYyhjZSk7Y2FzZSAyNTg6cmV0dXJuIG5hKGNlLDY0LDc4ODg3Mik7Y2FzZSAyNTk6cmV0dXJuIG5hKGNlLDUyNDI4OCw3ODg5NjgpO2Nhc2UgMjYwOnJldHVybiBLYyhjZSk7Y2FzZSAyNjE6cmV0dXJuIFJ0KGNlKTtjYXNlIDI4NjpyZXR1cm4gdWkoY2UpO2Nhc2UgMjg1OnJldHVybiBCdChjZSw0LDApO2Nhc2UgMjY1OmNhc2UgMjY4OmNhc2UgMjcwOmNhc2UgMjc1OnJldHVybiBudChjZSwyMDk3MTUyLDIwOTcxNTIpO2Nhc2UgMjY0OnJldHVybiAkbyhjZSk7Y2FzZSAyNjc6cmV0dXJuIHhpKGNlKTtjYXNlIDI3MjpyZXR1cm4gUHIoY2UpO2Nhc2UgMjcxOnJldHVybiBubyhjZSk7Y2FzZSAzMDU6cmV0dXJuIFJvKGNlLnN0YXRlbWVudHMpLEtvKCk7Y2FzZSAyMzU6aWYoIWUuaXNGdW5jdGlvbkxpa2VPckNsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihjZS5wYXJlbnQpKXJldHVybjtjYXNlIDI2MjpyZXR1cm4gUm8oY2Uuc3RhdGVtZW50cyk7Y2FzZSAzNDA6aWYoY2UucGFyZW50LmtpbmQ9PT0zMjMpcmV0dXJuIHBjKGNlKTtpZihjZS5wYXJlbnQua2luZCE9PTMyMilicmVhaztjYXNlIDM0Nzp2YXIgUHQ9Y2UsZ2E9UHQuaXNCcmFja2V0ZWR8fFB0LnR5cGVFeHByZXNzaW9uJiZQdC50eXBlRXhwcmVzc2lvbi50eXBlLmtpbmQ9PT0zMTY/MTY3NzcyMjA6NDtyZXR1cm4gbnQoUHQsZ2EsMCk7Y2FzZSAzNDU6Y2FzZSAzMzg6Y2FzZSAzMzk6cmV0dXJuKGVlfHwoZWU9W10pKS5wdXNoKGNlKX19ZnVuY3Rpb24gdG8oY2Upe3JldHVybiBwcyhjZSw0fChjZS5xdWVzdGlvblRva2VuPzE2Nzc3MjE2OjApLDApfWZ1bmN0aW9uIENvKGNlKXtyZXR1cm4gd3QoY2UsMjA0OCxcIl9fdHlwZVwiKX1mdW5jdGlvbiBLbygpe2lmKER0KGIpLGUuaXNFeHRlcm5hbE1vZHVsZShiKSlPbygpO2Vsc2UgaWYoZS5pc0pzb25Tb3VyY2VGaWxlKGIpKXtPbygpO3ZhciBjZT1iLnN5bWJvbDtnZShiLnN5bWJvbC5leHBvcnRzLGIuc3ltYm9sLGIsNCw2NzEwODg2MyksYi5zeW1ib2w9Y2V9fWZ1bmN0aW9uIE9vKCl7d3QoYiw1MTIsJ1wiJy5jb25jYXQoZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKGIuZmlsZU5hbWUpLCdcIicpKX1mdW5jdGlvbiBubyhjZSl7aWYoIVIuc3ltYm9sfHwhUi5zeW1ib2wuZXhwb3J0cyl3dChjZSwxMTE1NTEsWihjZSkpO2Vsc2V7dmFyIFJyPWUuZXhwb3J0QXNzaWdubWVudElzQWxpYXMoY2UpPzIwOTcxNTI6NCx5aT1nZShSLnN5bWJvbC5leHBvcnRzLFIuc3ltYm9sLGNlLFJyLDY3MTA4ODYzKTtjZS5pc0V4cG9ydEVxdWFscyYmZS5zZXRWYWx1ZURlY2xhcmF0aW9uKHlpLGNlKX19ZnVuY3Rpb24gJG8oY2Upe2NlLm1vZGlmaWVycyYmY2UubW9kaWZpZXJzLmxlbmd0aCYmYi5iaW5kRGlhZ25vc3RpY3MucHVzaChnKGNlLGUuRGlhZ25vc3RpY3MuTW9kaWZpZXJzX2Nhbm5vdF9hcHBlYXJfaGVyZSkpO3ZhciBScj1lLmlzU291cmNlRmlsZShjZS5wYXJlbnQpP2UuaXNFeHRlcm5hbE1vZHVsZShjZS5wYXJlbnQpP2NlLnBhcmVudC5pc0RlY2xhcmF0aW9uRmlsZT92b2lkIDA6ZS5EaWFnbm9zdGljcy5HbG9iYWxfbW9kdWxlX2V4cG9ydHNfbWF5X29ubHlfYXBwZWFyX2luX2RlY2xhcmF0aW9uX2ZpbGVzOmUuRGlhZ25vc3RpY3MuR2xvYmFsX21vZHVsZV9leHBvcnRzX21heV9vbmx5X2FwcGVhcl9pbl9tb2R1bGVfZmlsZXM6ZS5EaWFnbm9zdGljcy5HbG9iYWxfbW9kdWxlX2V4cG9ydHNfbWF5X29ubHlfYXBwZWFyX2F0X3RvcF9sZXZlbDtScj9iLmJpbmREaWFnbm9zdGljcy5wdXNoKGcoY2UsUnIpKTooYi5zeW1ib2wuZ2xvYmFsRXhwb3J0cz1iLnN5bWJvbC5nbG9iYWxFeHBvcnRzfHxlLmNyZWF0ZVN5bWJvbFRhYmxlKCksZ2UoYi5zeW1ib2wuZ2xvYmFsRXhwb3J0cyxiLnN5bWJvbCxjZSwyMDk3MTUyLDIwOTcxNTIpKX1mdW5jdGlvbiBQcihjZSl7IVIuc3ltYm9sfHwhUi5zeW1ib2wuZXhwb3J0cz93dChjZSw4Mzg4NjA4LFooY2UpKTpjZS5leHBvcnRDbGF1c2U/ZS5pc05hbWVzcGFjZUV4cG9ydChjZS5leHBvcnRDbGF1c2UpJiYoZS5zZXRQYXJlbnQoY2UuZXhwb3J0Q2xhdXNlLGNlKSxnZShSLnN5bWJvbC5leHBvcnRzLFIuc3ltYm9sLGNlLmV4cG9ydENsYXVzZSwyMDk3MTUyLDIwOTcxNTIpKTpnZShSLnN5bWJvbC5leHBvcnRzLFIuc3ltYm9sLGNlLDgzODg2MDgsMCl9ZnVuY3Rpb24geGkoY2Upe2NlLm5hbWUmJm50KGNlLDIwOTcxNTIsMjA5NzE1Mil9ZnVuY3Rpb24gU3QoY2Upe3JldHVybiBiLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yPyExOihiLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yfHwoYi5jb21tb25Kc01vZHVsZUluZGljYXRvcj1jZSxPbygpKSwhMCl9ZnVuY3Rpb24gcGEoY2Upe2lmKCEhU3QoY2UpKXt2YXIgUnI9eXMoY2UuYXJndW1lbnRzWzBdLHZvaWQgMCxmdW5jdGlvbihxaSxqZSl7cmV0dXJuIGplJiZGZShqZSxxaSw2NzExMDQwMCksamV9KTtpZihScil7dmFyIHlpPTEwNDg1ODA7Z2UoUnIuZXhwb3J0cyxScixjZSx5aSwwKX19fWZ1bmN0aW9uIGRuKGNlKXtpZighIVN0KGNlKSl7dmFyIFJyPXlzKGNlLmxlZnQuZXhwcmVzc2lvbix2b2lkIDAsZnVuY3Rpb24oamUsSHIpe3JldHVybiBIciYmRmUoSHIsamUsNjcxMTA0MDApLEhyfSk7aWYoUnIpe3ZhciB5aT1lLmlzQWxpYXNhYmxlRXhwcmVzc2lvbihjZS5yaWdodCkmJihlLmlzRXhwb3J0c0lkZW50aWZpZXIoY2UubGVmdC5leHByZXNzaW9uKXx8ZS5pc01vZHVsZUV4cG9ydHNBY2Nlc3NFeHByZXNzaW9uKGNlLmxlZnQuZXhwcmVzc2lvbikpLHFpPXlpPzIwOTcxNTI6MTA0ODU4MDtlLnNldFBhcmVudChjZS5sZWZ0LGNlKSxnZShSci5leHBvcnRzLFJyLGNlLmxlZnQscWksMCl9fX1mdW5jdGlvbiBKbihjZSl7aWYoISFTdChjZSkpe3ZhciBScj1lLmdldFJpZ2h0TW9zdEFzc2lnbmVkRXhwcmVzc2lvbihjZS5yaWdodCk7aWYoIShlLmlzRW1wdHlPYmplY3RMaXRlcmFsKFJyKXx8Uj09PWImJlQoYixScikpKXtpZihlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oUnIpJiZlLmV2ZXJ5KFJyLnByb3BlcnRpZXMsZS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudCkpe2UuZm9yRWFjaChSci5wcm9wZXJ0aWVzLFFlKTtyZXR1cm59dmFyIHlpPWUuZXhwb3J0QXNzaWdubWVudElzQWxpYXMoY2UpPzIwOTcxNTI6MTA0OTA5MixxaT1nZShiLnN5bWJvbC5leHBvcnRzLGIuc3ltYm9sLGNlLHlpfDY3MTA4ODY0LDApO2Uuc2V0VmFsdWVEZWNsYXJhdGlvbihxaSxjZSl9fX1mdW5jdGlvbiBRZShjZSl7Z2UoYi5zeW1ib2wuZXhwb3J0cyxiLnN5bWJvbCxjZSw2OTIwNjAxNiwwKX1mdW5jdGlvbiBHcihjZSl7ZS5EZWJ1Zy5hc3NlcnQoZS5pc0luSlNGaWxlKGNlKSk7dmFyIFJyPWUuaXNCaW5hcnlFeHByZXNzaW9uKGNlKSYmZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjZS5sZWZ0KSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKGNlLmxlZnQubmFtZSl8fGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oY2UpJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIoY2UubmFtZSk7aWYoIVJyKXt2YXIgeWk9ZS5nZXRUaGlzQ29udGFpbmVyKGNlLCExKTtzd2l0Y2goeWkua2luZCl7Y2FzZSAyNTY6Y2FzZSAyMTM6dmFyIHFpPXlpLnN5bWJvbDtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbih5aS5wYXJlbnQpJiZ5aS5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kPT09NjMpe3ZhciBqZT15aS5wYXJlbnQubGVmdDtlLmlzQmluZGFibGVTdGF0aWNBY2Nlc3NFeHByZXNzaW9uKGplKSYmZS5pc1Byb3RvdHlwZUFjY2VzcyhqZS5leHByZXNzaW9uKSYmKHFpPUdvKGplLmV4cHJlc3Npb24uZXhwcmVzc2lvbixxKSl9cWkmJnFpLnZhbHVlRGVjbGFyYXRpb24mJihxaS5tZW1iZXJzPXFpLm1lbWJlcnN8fGUuY3JlYXRlU3ltYm9sVGFibGUoKSxlLmhhc0R5bmFtaWNOYW1lKGNlKT9TKGNlLHFpLHFpLm1lbWJlcnMpOmdlKHFpLm1lbWJlcnMscWksY2UsNjcxMDg4NjgsMCksRmUocWkscWkudmFsdWVEZWNsYXJhdGlvbiwzMikpO2JyZWFrO2Nhc2UgMTcxOmNhc2UgMTY3OmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMTcwOnZhciBIcj15aS5wYXJlbnQscHQ9ZS5pc1N0YXRpYyh5aSk/SHIuc3ltYm9sLmV4cG9ydHM6SHIuc3ltYm9sLm1lbWJlcnM7ZS5oYXNEeW5hbWljTmFtZShjZSk/UyhjZSxIci5zeW1ib2wscHQpOmdlKHB0LEhyLnN5bWJvbCxjZSw2NzEwODg2OCwwLCEwKTticmVhaztjYXNlIDMwNTppZihlLmhhc0R5bmFtaWNOYW1lKGNlKSlicmVhazt5aS5jb21tb25Kc01vZHVsZUluZGljYXRvcj9nZSh5aS5zeW1ib2wuZXhwb3J0cyx5aS5zeW1ib2wsY2UsMTA0ODU4MCwwKTpudChjZSwxLDExMTU1MCk7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmZhaWxCYWRTeW50YXhLaW5kKHlpKX19fWZ1bmN0aW9uIFMoY2UsUnIseWkpe2dlKHlpLFJyLGNlLDQsMCwhMCwhMCksQ2UoY2UsUnIpfWZ1bmN0aW9uIENlKGNlLFJyKXtSciYmKFJyLmFzc2lnbm1lbnREZWNsYXJhdGlvbk1lbWJlcnN8fChSci5hc3NpZ25tZW50RGVjbGFyYXRpb25NZW1iZXJzPW5ldyBlLk1hcCkpLnNldChlLmdldE5vZGVJZChjZSksY2UpfWZ1bmN0aW9uIHFlKGNlKXtjZS5leHByZXNzaW9uLmtpbmQ9PT0xMDg/R3IoY2UpOmUuaXNCaW5kYWJsZVN0YXRpY0FjY2Vzc0V4cHJlc3Npb24oY2UpJiZjZS5wYXJlbnQucGFyZW50LmtpbmQ9PT0zMDUmJihlLmlzUHJvdG90eXBlQWNjZXNzKGNlLmV4cHJlc3Npb24pP1NpKGNlLGNlLnBhcmVudCk6Q3QoY2UpKX1mdW5jdGlvbiBicihjZSl7ZS5zZXRQYXJlbnQoY2UubGVmdCxjZSksZS5zZXRQYXJlbnQoY2UucmlnaHQsY2UpLHFuKGNlLmxlZnQuZXhwcmVzc2lvbixjZS5sZWZ0LCExLCEwKX1mdW5jdGlvbiBacihjZSl7dmFyIFJyPUdvKGNlLmFyZ3VtZW50c1swXS5leHByZXNzaW9uKTtSciYmUnIudmFsdWVEZWNsYXJhdGlvbiYmRmUoUnIsUnIudmFsdWVEZWNsYXJhdGlvbiwzMiksZW4oY2UsUnIsITApfWZ1bmN0aW9uIFNpKGNlLFJyKXt2YXIgeWk9Y2UuZXhwcmVzc2lvbixxaT15aS5leHByZXNzaW9uO2Uuc2V0UGFyZW50KHFpLHlpKSxlLnNldFBhcmVudCh5aSxjZSksZS5zZXRQYXJlbnQoY2UsUnIpLHFuKHFpLGNlLCEwLCEwKX1mdW5jdGlvbiBQaShjZSl7dmFyIFJyPUdvKGNlLmFyZ3VtZW50c1swXSkseWk9Y2UucGFyZW50LnBhcmVudC5raW5kPT09MzA1O1JyPXNhKFJyLGNlLmFyZ3VtZW50c1swXSx5aSwhMSwhMSksZW4oY2UsUnIsITEpfWZ1bmN0aW9uIFFpKGNlKXt2YXIgUnIseWk9R28oY2UubGVmdC5leHByZXNzaW9uLFIpfHxHbyhjZS5sZWZ0LmV4cHJlc3Npb24sTyk7aWYoISghZS5pc0luSlNGaWxlKGNlKSYmIWUuaXNGdW5jdGlvblN5bWJvbCh5aSkpKXt2YXIgcWk9ZS5nZXRMZWZ0bW9zdEFjY2Vzc0V4cHJlc3Npb24oY2UubGVmdCk7aWYoIShlLmlzSWRlbnRpZmllcihxaSkmJigoUnI9SyhSLHFpLmVzY2FwZWRUZXh0KSk9PT1udWxsfHxScj09PXZvaWQgMD92b2lkIDA6UnIuZmxhZ3MpJjIwOTcxNTIpKWlmKGUuc2V0UGFyZW50KGNlLmxlZnQsY2UpLGUuc2V0UGFyZW50KGNlLnJpZ2h0LGNlKSxlLmlzSWRlbnRpZmllcihjZS5sZWZ0LmV4cHJlc3Npb24pJiZSPT09YiYmVChiLGNlLmxlZnQuZXhwcmVzc2lvbikpZG4oY2UpO2Vsc2UgaWYoZS5oYXNEeW5hbWljTmFtZShjZSkpe3d0KGNlLDY3MTA4ODY4LFwiX19jb21wdXRlZFwiKTt2YXIgamU9c2EoeWksY2UubGVmdC5leHByZXNzaW9uLFdhKGNlLmxlZnQpLCExLCExKTtDZShjZSxqZSl9ZWxzZSBDdChlLmNhc3QoY2UubGVmdCxlLmlzQmluZGFibGVTdGF0aWNOYW1lRXhwcmVzc2lvbikpfX1mdW5jdGlvbiBDdChjZSl7ZS5EZWJ1Zy5hc3NlcnQoIWUuaXNJZGVudGlmaWVyKGNlKSksZS5zZXRQYXJlbnQoY2UuZXhwcmVzc2lvbixjZSkscW4oY2UuZXhwcmVzc2lvbixjZSwhMSwhMSl9ZnVuY3Rpb24gc2EoY2UsUnIseWkscWksamUpe2lmKChjZT09bnVsbD92b2lkIDA6Y2UuZmxhZ3MpJjIwOTcxNTIpcmV0dXJuIGNlO2lmKHlpJiYhcWkpe3ZhciBIcj02NzExMDQwMCxwdD0xMTA3MzU7Y2U9eXMoUnIsY2UsZnVuY3Rpb24oUHQsZ2EsdWEpe2lmKGdhKXJldHVybiBGZShnYSxQdCxIciksZ2E7dmFyIFhuPXVhP3VhLmV4cG9ydHM6Yi5qc0dsb2JhbEF1Z21lbnRhdGlvbnN8fChiLmpzR2xvYmFsQXVnbWVudGF0aW9ucz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCkpO3JldHVybiBnZShYbix1YSxQdCxIcixwdCl9KX1yZXR1cm4gamUmJmNlJiZjZS52YWx1ZURlY2xhcmF0aW9uJiZGZShjZSxjZS52YWx1ZURlY2xhcmF0aW9uLDMyKSxjZX1mdW5jdGlvbiBlbihjZSxScix5aSl7aWYoISghUnJ8fCFtbyhScikpKXt2YXIgcWk9eWk/UnIubWVtYmVyc3x8KFJyLm1lbWJlcnM9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpKTpSci5leHBvcnRzfHwoUnIuZXhwb3J0cz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCkpLGplPTAsSHI9MDtlLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oZS5nZXRBc3NpZ25lZEV4cGFuZG9Jbml0aWFsaXplcihjZSkpPyhqZT04MTkyLEhyPTEwMzM1OSk6ZS5pc0NhbGxFeHByZXNzaW9uKGNlKSYmZS5pc0JpbmRhYmxlT2JqZWN0RGVmaW5lUHJvcGVydHlDYWxsKGNlKSYmKGUuc29tZShjZS5hcmd1bWVudHNbMl0ucHJvcGVydGllcyxmdW5jdGlvbihwdCl7dmFyIFB0PWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24ocHQpO3JldHVybiEhUHQmJmUuaXNJZGVudGlmaWVyKFB0KSYmZS5pZFRleHQoUHQpPT09XCJzZXRcIn0pJiYoamV8PTY1NTQwLEhyfD03ODc4MyksZS5zb21lKGNlLmFyZ3VtZW50c1syXS5wcm9wZXJ0aWVzLGZ1bmN0aW9uKHB0KXt2YXIgUHQ9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihwdCk7cmV0dXJuISFQdCYmZS5pc0lkZW50aWZpZXIoUHQpJiZlLmlkVGV4dChQdCk9PT1cImdldFwifSkmJihqZXw9MzI3NzIsSHJ8PTQ2MDE1KSksamU9PT0wJiYoamU9NCxIcj0wKSxnZShxaSxScixjZSxqZXw2NzEwODg2NCxIciYtNjcxMDg4NjUpfX1mdW5jdGlvbiBXYShjZSl7cmV0dXJuIGUuaXNCaW5hcnlFeHByZXNzaW9uKGNlLnBhcmVudCk/U28oY2UucGFyZW50KS5wYXJlbnQua2luZD09PTMwNTpjZS5wYXJlbnQucGFyZW50LmtpbmQ9PT0zMDV9ZnVuY3Rpb24gcW4oY2UsUnIseWkscWkpe3ZhciBqZT1HbyhjZSxSKXx8R28oY2UsTyksSHI9V2EoUnIpO2plPXNhKGplLFJyLmV4cHJlc3Npb24sSHIseWkscWkpLGVuKFJyLGplLHlpKX1mdW5jdGlvbiBtbyhjZSl7aWYoY2UuZmxhZ3MmMTA3MilyZXR1cm4hMDt2YXIgUnI9Y2UudmFsdWVEZWNsYXJhdGlvbjtpZihSciYmZS5pc0NhbGxFeHByZXNzaW9uKFJyKSlyZXR1cm4hIWUuZ2V0QXNzaWduZWRFeHBhbmRvSW5pdGlhbGl6ZXIoUnIpO3ZhciB5aT1Scj9lLmlzVmFyaWFibGVEZWNsYXJhdGlvbihScik/UnIuaW5pdGlhbGl6ZXI6ZS5pc0JpbmFyeUV4cHJlc3Npb24oUnIpP1JyLnJpZ2h0OmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUnIpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihSci5wYXJlbnQpP1JyLnBhcmVudC5yaWdodDp2b2lkIDA6dm9pZCAwO2lmKHlpPXlpJiZlLmdldFJpZ2h0TW9zdEFzc2lnbmVkRXhwcmVzc2lvbih5aSkseWkpe3ZhciBxaT1lLmlzUHJvdG90eXBlQWNjZXNzKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKFJyKT9Sci5uYW1lOmUuaXNCaW5hcnlFeHByZXNzaW9uKFJyKT9Sci5sZWZ0OlJyKTtyZXR1cm4hIWUuZ2V0RXhwYW5kb0luaXRpYWxpemVyKGUuaXNCaW5hcnlFeHByZXNzaW9uKHlpKSYmKHlpLm9wZXJhdG9yVG9rZW4ua2luZD09PTU2fHx5aS5vcGVyYXRvclRva2VuLmtpbmQ9PT02MCk/eWkucmlnaHQ6eWkscWkpfXJldHVybiExfWZ1bmN0aW9uIFNvKGNlKXtmb3IoO2UuaXNCaW5hcnlFeHByZXNzaW9uKGNlLnBhcmVudCk7KWNlPWNlLnBhcmVudDtyZXR1cm4gY2UucGFyZW50fWZ1bmN0aW9uIEdvKGNlLFJyKXtpZihScj09PXZvaWQgMCYmKFJyPVIpLGUuaXNJZGVudGlmaWVyKGNlKSlyZXR1cm4gSyhScixjZS5lc2NhcGVkVGV4dCk7dmFyIHlpPUdvKGNlLmV4cHJlc3Npb24pO3JldHVybiB5aSYmeWkuZXhwb3J0cyYmeWkuZXhwb3J0cy5nZXQoZS5nZXRFbGVtZW50T3JQcm9wZXJ0eUFjY2Vzc05hbWUoY2UpKX1mdW5jdGlvbiB5cyhjZSxScix5aSl7aWYoVChiLGNlKSlyZXR1cm4gYi5zeW1ib2w7aWYoZS5pc0lkZW50aWZpZXIoY2UpKXJldHVybiB5aShjZSxHbyhjZSksUnIpO3ZhciBxaT15cyhjZS5leHByZXNzaW9uLFJyLHlpKSxqZT1lLmdldE5hbWVPckFyZ3VtZW50KGNlKTtyZXR1cm4gZS5pc1ByaXZhdGVJZGVudGlmaWVyKGplKSYmZS5EZWJ1Zy5mYWlsKFwidW5leHBlY3RlZCBQcml2YXRlSWRlbnRpZmllclwiKSx5aShqZSxxaSYmcWkuZXhwb3J0cyYmcWkuZXhwb3J0cy5nZXQoZS5nZXRFbGVtZW50T3JQcm9wZXJ0eUFjY2Vzc05hbWUoY2UpKSxxaSl9ZnVuY3Rpb24gUGMoY2UpeyFiLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yJiZlLmlzUmVxdWlyZUNhbGwoY2UsITEpJiZTdChjZSl9ZnVuY3Rpb24gVmMoY2Upe2lmKGNlLmtpbmQ9PT0yNTcpbmEoY2UsMzIsODk5NTAzKTtlbHNle3ZhciBScj1jZS5uYW1lP2NlLm5hbWUuZXNjYXBlZFRleHQ6XCJfX2NsYXNzXCI7d3QoY2UsMzIsUnIpLGNlLm5hbWUmJmwuYWRkKGNlLm5hbWUuZXNjYXBlZFRleHQpfXZhciB5aT1jZS5zeW1ib2wscWk9V2UoNDE5NDMwOCxcInByb3RvdHlwZVwiKSxqZT15aS5leHBvcnRzLmdldChxaS5lc2NhcGVkTmFtZSk7amUmJihjZS5uYW1lJiZlLnNldFBhcmVudChjZS5uYW1lLGNlKSxiLmJpbmREaWFnbm9zdGljcy5wdXNoKGcoamUuZGVjbGFyYXRpb25zWzBdLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMCxlLnN5bWJvbE5hbWUocWkpKSkpLHlpLmV4cG9ydHMuc2V0KHFpLmVzY2FwZWROYW1lLHFpKSxxaS5wYXJlbnQ9eWl9ZnVuY3Rpb24gS2MoY2Upe3JldHVybiBlLmlzRW51bUNvbnN0KGNlKT9uYShjZSwxMjgsODk5OTY3KTpuYShjZSwyNTYsODk5MzI3KX1mdW5jdGlvbiBYcyhjZSl7VSYmUWEoY2UsY2UubmFtZSksZS5pc0JpbmRpbmdQYXR0ZXJuKGNlLm5hbWUpfHwoZS5pc0luSlNGaWxlKGNlKSYmZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25Jbml0aWFsaXplZFRvQmFyZU9yQWNjZXNzZWRSZXF1aXJlKGNlKSYmIWUuZ2V0SlNEb2NUeXBlVGFnKGNlKSYmIShlLmdldENvbWJpbmVkTW9kaWZpZXJGbGFncyhjZSkmMSk/bnQoY2UsMjA5NzE1MiwyMDk3MTUyKTplLmlzQmxvY2tPckNhdGNoU2NvcGVkKGNlKT9uYShjZSwyLDExMTU1MSk6ZS5pc1BhcmFtZXRlckRlY2xhcmF0aW9uKGNlKT9udChjZSwxLDExMTU1MSk6bnQoY2UsMSwxMTE1NTApKX1mdW5jdGlvbiBwYyhjZSl7aWYoIShjZS5raW5kPT09MzQwJiZSLmtpbmQhPT0zMjMpJiYoVSYmIShjZS5mbGFncyYxNjc3NzIxNikmJlFhKGNlLGNlLm5hbWUpLGUuaXNCaW5kaW5nUGF0dGVybihjZS5uYW1lKT93dChjZSwxLFwiX19cIitjZS5wYXJlbnQucGFyYW1ldGVycy5pbmRleE9mKGNlKSk6bnQoY2UsMSwxMTE1NTEpLGUuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKGNlLGNlLnBhcmVudCkpKXt2YXIgUnI9Y2UucGFyZW50LnBhcmVudDtnZShSci5zeW1ib2wubWVtYmVycyxSci5zeW1ib2wsY2UsNHwoY2UucXVlc3Rpb25Ub2tlbj8xNjc3NzIxNjowKSwwKX19ZnVuY3Rpb24gaHMoY2UpeyFiLmlzRGVjbGFyYXRpb25GaWxlJiYhKGNlLmZsYWdzJjE2Nzc3MjE2KSYmZS5pc0FzeW5jRnVuY3Rpb24oY2UpJiYoWXw9MjA0OCksRG4oY2UpLFU/KEJhKGNlKSxuYShjZSwxNiwxMTA5OTEpKTpudChjZSwxNiwxMTA5OTEpfWZ1bmN0aW9uIHRjKGNlKXshYi5pc0RlY2xhcmF0aW9uRmlsZSYmIShjZS5mbGFncyYxNjc3NzIxNikmJmUuaXNBc3luY0Z1bmN0aW9uKGNlKSYmKFl8PTIwNDgpLEYmJihjZS5mbG93Tm9kZT1GKSxEbihjZSk7dmFyIFJyPWNlLm5hbWU/Y2UubmFtZS5lc2NhcGVkVGV4dDpcIl9fZnVuY3Rpb25cIjtyZXR1cm4gd3QoY2UsMTYsUnIpfWZ1bmN0aW9uIHBzKGNlLFJyLHlpKXtyZXR1cm4hYi5pc0RlY2xhcmF0aW9uRmlsZSYmIShjZS5mbGFncyYxNjc3NzIxNikmJmUuaXNBc3luY0Z1bmN0aW9uKGNlKSYmKFl8PTIwNDgpLEYmJmUuaXNPYmplY3RMaXRlcmFsT3JDbGFzc0V4cHJlc3Npb25NZXRob2RPckFjY2Vzc29yKGNlKSYmKGNlLmZsb3dOb2RlPUYpLGUuaGFzRHluYW1pY05hbWUoY2UpP3d0KGNlLFJyLFwiX19jb21wdXRlZFwiKTpudChjZSxScix5aSl9ZnVuY3Rpb24gUXMoY2Upe3ZhciBScj1lLmZpbmRBbmNlc3RvcihjZSxmdW5jdGlvbih5aSl7cmV0dXJuIHlpLnBhcmVudCYmZS5pc0NvbmRpdGlvbmFsVHlwZU5vZGUoeWkucGFyZW50KSYmeWkucGFyZW50LmV4dGVuZHNUeXBlPT09eWl9KTtyZXR1cm4gUnImJlJyLnBhcmVudH1mdW5jdGlvbiBqcyhjZSl7aWYoZS5pc0pTRG9jVGVtcGxhdGVUYWcoY2UucGFyZW50KSl7dmFyIFJyPWUuZ2V0RWZmZWN0aXZlQ29udGFpbmVyRm9ySlNEb2NUZW1wbGF0ZVRhZyhjZS5wYXJlbnQpO1JyPyhSci5sb2NhbHN8fChSci5sb2NhbHM9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpKSxnZShSci5sb2NhbHMsdm9pZCAwLGNlLDI2MjE0NCw1MjY4MjQpKTpudChjZSwyNjIxNDQsNTI2ODI0KX1lbHNlIGlmKGNlLnBhcmVudC5raW5kPT09MTkwKXt2YXIgeWk9UXMoY2UucGFyZW50KTt5aT8oeWkubG9jYWxzfHwoeWkubG9jYWxzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSksZ2UoeWkubG9jYWxzLHZvaWQgMCxjZSwyNjIxNDQsNTI2ODI0KSk6d3QoY2UsMjYyMTQ0LFooY2UpKX1lbHNlIG50KGNlLDI2MjE0NCw1MjY4MjQpfWZ1bmN0aW9uIGRzKGNlKXt2YXIgUnI9QyhjZSk7cmV0dXJuIFJyPT09MXx8UnI9PT0yJiZlLnNob3VsZFByZXNlcnZlQ29uc3RFbnVtcyhzZSl9ZnVuY3Rpb24gSmkoY2Upe2lmKCEoRi5mbGFncyYxKSlyZXR1cm4hMTtpZihGPT09ZCl7dmFyIFJyPWUuaXNTdGF0ZW1lbnRCdXROb3REZWNsYXJhdGlvbihjZSkmJmNlLmtpbmQhPT0yMzZ8fGNlLmtpbmQ9PT0yNTd8fGNlLmtpbmQ9PT0yNjEmJmRzKGNlKTtpZihSciYmKEY9RCwhc2UuYWxsb3dVbnJlYWNoYWJsZUNvZGUpKXt2YXIgeWk9ZS51bnJlYWNoYWJsZUNvZGVJc0Vycm9yKHNlKSYmIShjZS5mbGFncyYxNjc3NzIxNikmJighZS5pc1ZhcmlhYmxlU3RhdGVtZW50KGNlKXx8ISEoZS5nZXRDb21iaW5lZE5vZGVGbGFncyhjZS5kZWNsYXJhdGlvbkxpc3QpJjMpfHxjZS5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLnNvbWUoZnVuY3Rpb24ocWkpe3JldHVybiEhcWkuaW5pdGlhbGl6ZXJ9KSk7RyhjZSxmdW5jdGlvbihxaSxqZSl7cmV0dXJuIGVvKHlpLHFpLGplLGUuRGlhZ25vc3RpY3MuVW5yZWFjaGFibGVfY29kZV9kZXRlY3RlZCl9KX19cmV0dXJuITB9fWZ1bmN0aW9uIEcoYixzZSl7aWYoZS5pc1N0YXRlbWVudChiKSYmb2UoYikmJmUuaXNCbG9jayhiLnBhcmVudCkpe3ZhciBKPWIucGFyZW50LnN0YXRlbWVudHMsaWU9ZS5zbGljZUFmdGVyKEosYik7ZS5nZXRSYW5nZXNXaGVyZShpZSxvZSxmdW5jdGlvbihSLHEpe3JldHVybiBzZShpZVtSXSxpZVtxLTFdKX0pfWVsc2Ugc2UoYixiKX1mdW5jdGlvbiBvZShiKXtyZXR1cm4hZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oYikmJiFmKGIpJiYhZS5pc0VudW1EZWNsYXJhdGlvbihiKSYmIShlLmlzVmFyaWFibGVTdGF0ZW1lbnQoYikmJiEoZS5nZXRDb21iaW5lZE5vZGVGbGFncyhiKSYzKSYmYi5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLnNvbWUoZnVuY3Rpb24oc2Upe3JldHVybiFzZS5pbml0aWFsaXplcn0pKX1mdW5jdGlvbiBmKGIpe3N3aXRjaChiLmtpbmQpe2Nhc2UgMjU4OmNhc2UgMjU5OnJldHVybiEwO2Nhc2UgMjYxOnJldHVybiBDKGIpIT09MTtjYXNlIDI2MDpyZXR1cm4gZS5oYXNTeW50YWN0aWNNb2RpZmllcihiLDIwNDgpO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIFQoYixzZSl7Zm9yKHZhciBKPTAsaWU9W3NlXTtpZS5sZW5ndGgmJko8MTAwOyl7aWYoSisrLHNlPWllLnNoaWZ0KCksZS5pc0V4cG9ydHNJZGVudGlmaWVyKHNlKXx8ZS5pc01vZHVsZUV4cG9ydHNBY2Nlc3NFeHByZXNzaW9uKHNlKSlyZXR1cm4hMDtpZihlLmlzSWRlbnRpZmllcihzZSkpe3ZhciBSPUsoYixzZS5lc2NhcGVkVGV4dCk7aWYoISFSJiYhIVIudmFsdWVEZWNsYXJhdGlvbiYmZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oUi52YWx1ZURlY2xhcmF0aW9uKSYmISFSLnZhbHVlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIpe3ZhciBxPVIudmFsdWVEZWNsYXJhdGlvbi5pbml0aWFsaXplcjtpZS5wdXNoKHEpLGUuaXNBc3NpZ25tZW50RXhwcmVzc2lvbihxLCEwKSYmKGllLnB1c2gocS5sZWZ0KSxpZS5wdXNoKHEucmlnaHQpKX19fXJldHVybiExfWUuaXNFeHBvcnRzT3JNb2R1bGVFeHBvcnRzT3JBbGlhcz1UO2Z1bmN0aW9uIEsoYixzZSl7dmFyIEo9Yi5sb2NhbHMmJmIubG9jYWxzLmdldChzZSk7cmV0dXJuIEo/Si5leHBvcnRTeW1ib2x8fEo6ZS5pc1NvdXJjZUZpbGUoYikmJmIuanNHbG9iYWxBdWdtZW50YXRpb25zJiZiLmpzR2xvYmFsQXVnbWVudGF0aW9ucy5oYXMoc2UpP2IuanNHbG9iYWxBdWdtZW50YXRpb25zLmdldChzZSk6Yi5zeW1ib2wmJmIuc3ltYm9sLmV4cG9ydHMmJmIuc3ltYm9sLmV4cG9ydHMuZ2V0KHNlKX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEMsdyxCLEUsUSxsZSxOLHAsbSxHKXtyZXR1cm4gb2U7ZnVuY3Rpb24gb2UoZil7Zj09PXZvaWQgMCYmKGY9ZnVuY3Rpb24oKXtyZXR1cm4hMH0pO3ZhciBUPVtdLEs9W107cmV0dXJue3dhbGtUeXBlOmZ1bmN0aW9uKHgpe3RyeXtyZXR1cm4gYih4KSx7dmlzaXRlZFR5cGVzOmUuZ2V0T3duVmFsdWVzKFQpLHZpc2l0ZWRTeW1ib2xzOmUuZ2V0T3duVmFsdWVzKEspfX1maW5hbGx5e2UuY2xlYXIoVCksZS5jbGVhcihLKX19LHdhbGtTeW1ib2w6ZnVuY3Rpb24oeCl7dHJ5e3JldHVybiBGKHgpLHt2aXNpdGVkVHlwZXM6ZS5nZXRPd25WYWx1ZXMoVCksdmlzaXRlZFN5bWJvbHM6ZS5nZXRPd25WYWx1ZXMoSyl9fWZpbmFsbHl7ZS5jbGVhcihUKSxlLmNsZWFyKEspfX19O2Z1bmN0aW9uIGIoeCl7aWYoISF4JiYhVFt4LmlkXSl7VFt4LmlkXT14O3ZhciBYPUYoeC5zeW1ib2wpO2lmKCFYKXtpZih4LmZsYWdzJjUyNDI4OCl7dmFyICQ9eCxBPSQub2JqZWN0RmxhZ3M7QSY0JiZzZSh4KSxBJjMyJiZPKHgpLEEmMyYmZWUoeCksQSYyNCYmaGUoJCl9eC5mbGFncyYyNjIxNDQmJkooeCkseC5mbGFncyYzMTQ1NzI4JiZpZSh4KSx4LmZsYWdzJjQxOTQzMDQmJlIoeCkseC5mbGFncyY4Mzg4NjA4JiZxKHgpfX19ZnVuY3Rpb24gc2UoeCl7Yih4LnRhcmdldCksZS5mb3JFYWNoKEcoeCksYil9ZnVuY3Rpb24gSih4KXtiKHAoeCkpfWZ1bmN0aW9uIGllKHgpe2UuZm9yRWFjaCh4LnR5cGVzLGIpfWZ1bmN0aW9uIFIoeCl7Yih4LnR5cGUpfWZ1bmN0aW9uIHEoeCl7Yih4Lm9iamVjdFR5cGUpLGIoeC5pbmRleFR5cGUpLGIoeC5jb25zdHJhaW50KX1mdW5jdGlvbiBPKHgpe2IoeC50eXBlUGFyYW1ldGVyKSxiKHguY29uc3RyYWludFR5cGUpLGIoeC50ZW1wbGF0ZVR5cGUpLGIoeC5tb2RpZmllcnNUeXBlKX1mdW5jdGlvbiB2ZSh4KXt2YXIgWD13KHgpO1gmJmIoWC50eXBlKSxlLmZvckVhY2goeC50eXBlUGFyYW1ldGVycyxiKTtmb3IodmFyICQ9MCxBPXgucGFyYW1ldGVyczskPEEubGVuZ3RoOyQrKyl7dmFyIHk9QVskXTtGKHkpfWIoQyh4KSksYihCKHgpKX1mdW5jdGlvbiBlZSh4KXtoZSh4KSxlLmZvckVhY2goeC50eXBlUGFyYW1ldGVycyxiKSxlLmZvckVhY2goRSh4KSxiKSxiKHgudGhpc1R5cGUpfWZ1bmN0aW9uIGhlKHgpe2Zvcih2YXIgWD1RKHgpLCQ9MCxBPVguaW5kZXhJbmZvczskPEEubGVuZ3RoOyQrKyl7dmFyIHk9QVskXTtiKHkua2V5VHlwZSksYih5LnR5cGUpfWZvcih2YXIgVj0wLEw9WC5jYWxsU2lnbmF0dXJlcztWPEwubGVuZ3RoO1YrKyl7dmFyIFA9TFtWXTt2ZShQKX1mb3IodmFyIGs9MCxZPVguY29uc3RydWN0U2lnbmF0dXJlcztrPFkubGVuZ3RoO2srKyl7dmFyIFA9WVtrXTt2ZShQKX1mb3IodmFyIFU9MCxqPVgucHJvcGVydGllcztVPGoubGVuZ3RoO1UrKyl7dmFyIEg9altVXTtGKEgpfX1mdW5jdGlvbiBGKHgpe2lmKCF4KXJldHVybiExO3ZhciBYPWUuZ2V0U3ltYm9sSWQoeCk7aWYoS1tYXSlyZXR1cm4hMTtpZihLW1hdPXgsIWYoeCkpcmV0dXJuITA7dmFyICQ9bGUoeCk7cmV0dXJuIGIoJCkseC5leHBvcnRzJiZ4LmV4cG9ydHMuZm9yRWFjaChGKSxlLmZvckVhY2goeC5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oQSl7aWYoQS50eXBlJiZBLnR5cGUua2luZD09PTE4MSl7dmFyIHk9QS50eXBlLFY9TihtKHkuZXhwck5hbWUpKTtGKFYpfX0pLCExfX19ZS5jcmVhdGVHZXRTeW1ib2xXYWxrZXI9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhPS9eXCIuK1wiJC8sQz1cIihhbm9ueW1vdXMpXCIsdz0xLEI9MSxFPTEsUT0xLGxlOyhmdW5jdGlvbihsKXtsW2wuQWxsb3dzU3luY0l0ZXJhYmxlc0ZsYWc9MV09XCJBbGxvd3NTeW5jSXRlcmFibGVzRmxhZ1wiLGxbbC5BbGxvd3NBc3luY0l0ZXJhYmxlc0ZsYWc9Ml09XCJBbGxvd3NBc3luY0l0ZXJhYmxlc0ZsYWdcIixsW2wuQWxsb3dzU3RyaW5nSW5wdXRGbGFnPTRdPVwiQWxsb3dzU3RyaW5nSW5wdXRGbGFnXCIsbFtsLkZvck9mRmxhZz04XT1cIkZvck9mRmxhZ1wiLGxbbC5ZaWVsZFN0YXJGbGFnPTE2XT1cIllpZWxkU3RhckZsYWdcIixsW2wuU3ByZWFkRmxhZz0zMl09XCJTcHJlYWRGbGFnXCIsbFtsLkRlc3RydWN0dXJpbmdGbGFnPTY0XT1cIkRlc3RydWN0dXJpbmdGbGFnXCIsbFtsLlBvc3NpYmx5T3V0T2ZCb3VuZHM9MTI4XT1cIlBvc3NpYmx5T3V0T2ZCb3VuZHNcIixsW2wuRWxlbWVudD0xXT1cIkVsZW1lbnRcIixsW2wuU3ByZWFkPTMzXT1cIlNwcmVhZFwiLGxbbC5EZXN0cnVjdHVyaW5nPTY1XT1cIkRlc3RydWN0dXJpbmdcIixsW2wuRm9yT2Y9MTNdPVwiRm9yT2ZcIixsW2wuRm9yQXdhaXRPZj0xNV09XCJGb3JBd2FpdE9mXCIsbFtsLllpZWxkU3Rhcj0xN109XCJZaWVsZFN0YXJcIixsW2wuQXN5bmNZaWVsZFN0YXI9MTldPVwiQXN5bmNZaWVsZFN0YXJcIixsW2wuR2VuZXJhdG9yUmV0dXJuVHlwZT0xXT1cIkdlbmVyYXRvclJldHVyblR5cGVcIixsW2wuQXN5bmNHZW5lcmF0b3JSZXR1cm5UeXBlPTJdPVwiQXN5bmNHZW5lcmF0b3JSZXR1cm5UeXBlXCJ9KShsZXx8KGxlPXt9KSk7dmFyIE47KGZ1bmN0aW9uKGwpe2xbbC5ZaWVsZD0wXT1cIllpZWxkXCIsbFtsLlJldHVybj0xXT1cIlJldHVyblwiLGxbbC5OZXh0PTJdPVwiTmV4dFwifSkoTnx8KE49e30pKTt2YXIgcDsoZnVuY3Rpb24obCl7bFtsLk5vcm1hbD0wXT1cIk5vcm1hbFwiLGxbbC5GdW5jdGlvblJldHVybj0xXT1cIkZ1bmN0aW9uUmV0dXJuXCIsbFtsLkdlbmVyYXRvck5leHQ9Ml09XCJHZW5lcmF0b3JOZXh0XCIsbFtsLkdlbmVyYXRvcllpZWxkPTNdPVwiR2VuZXJhdG9yWWllbGRcIn0pKHB8fChwPXt9KSk7dmFyIG07KGZ1bmN0aW9uKGwpe2xbbC5Ob25lPTBdPVwiTm9uZVwiLGxbbC5UeXBlb2ZFUVN0cmluZz0xXT1cIlR5cGVvZkVRU3RyaW5nXCIsbFtsLlR5cGVvZkVRTnVtYmVyPTJdPVwiVHlwZW9mRVFOdW1iZXJcIixsW2wuVHlwZW9mRVFCaWdJbnQ9NF09XCJUeXBlb2ZFUUJpZ0ludFwiLGxbbC5UeXBlb2ZFUUJvb2xlYW49OF09XCJUeXBlb2ZFUUJvb2xlYW5cIixsW2wuVHlwZW9mRVFTeW1ib2w9MTZdPVwiVHlwZW9mRVFTeW1ib2xcIixsW2wuVHlwZW9mRVFPYmplY3Q9MzJdPVwiVHlwZW9mRVFPYmplY3RcIixsW2wuVHlwZW9mRVFGdW5jdGlvbj02NF09XCJUeXBlb2ZFUUZ1bmN0aW9uXCIsbFtsLlR5cGVvZkVRSG9zdE9iamVjdD0xMjhdPVwiVHlwZW9mRVFIb3N0T2JqZWN0XCIsbFtsLlR5cGVvZk5FU3RyaW5nPTI1Nl09XCJUeXBlb2ZORVN0cmluZ1wiLGxbbC5UeXBlb2ZORU51bWJlcj01MTJdPVwiVHlwZW9mTkVOdW1iZXJcIixsW2wuVHlwZW9mTkVCaWdJbnQ9MTAyNF09XCJUeXBlb2ZORUJpZ0ludFwiLGxbbC5UeXBlb2ZORUJvb2xlYW49MjA0OF09XCJUeXBlb2ZORUJvb2xlYW5cIixsW2wuVHlwZW9mTkVTeW1ib2w9NDA5Nl09XCJUeXBlb2ZORVN5bWJvbFwiLGxbbC5UeXBlb2ZORU9iamVjdD04MTkyXT1cIlR5cGVvZk5FT2JqZWN0XCIsbFtsLlR5cGVvZk5FRnVuY3Rpb249MTYzODRdPVwiVHlwZW9mTkVGdW5jdGlvblwiLGxbbC5UeXBlb2ZORUhvc3RPYmplY3Q9MzI3NjhdPVwiVHlwZW9mTkVIb3N0T2JqZWN0XCIsbFtsLkVRVW5kZWZpbmVkPTY1NTM2XT1cIkVRVW5kZWZpbmVkXCIsbFtsLkVRTnVsbD0xMzEwNzJdPVwiRVFOdWxsXCIsbFtsLkVRVW5kZWZpbmVkT3JOdWxsPTI2MjE0NF09XCJFUVVuZGVmaW5lZE9yTnVsbFwiLGxbbC5ORVVuZGVmaW5lZD01MjQyODhdPVwiTkVVbmRlZmluZWRcIixsW2wuTkVOdWxsPTEwNDg1NzZdPVwiTkVOdWxsXCIsbFtsLk5FVW5kZWZpbmVkT3JOdWxsPTIwOTcxNTJdPVwiTkVVbmRlZmluZWRPck51bGxcIixsW2wuVHJ1dGh5PTQxOTQzMDRdPVwiVHJ1dGh5XCIsbFtsLkZhbHN5PTgzODg2MDhdPVwiRmFsc3lcIixsW2wuQWxsPTE2Nzc3MjE1XT1cIkFsbFwiLGxbbC5CYXNlU3RyaW5nU3RyaWN0RmFjdHM9MzczNTA0MV09XCJCYXNlU3RyaW5nU3RyaWN0RmFjdHNcIixsW2wuQmFzZVN0cmluZ0ZhY3RzPTEyNTgyNDAxXT1cIkJhc2VTdHJpbmdGYWN0c1wiLGxbbC5TdHJpbmdTdHJpY3RGYWN0cz0xNjMxNzk1M109XCJTdHJpbmdTdHJpY3RGYWN0c1wiLGxbbC5TdHJpbmdGYWN0cz0xNjc3NjcwNV09XCJTdHJpbmdGYWN0c1wiLGxbbC5FbXB0eVN0cmluZ1N0cmljdEZhY3RzPTEyMTIzNjQ5XT1cIkVtcHR5U3RyaW5nU3RyaWN0RmFjdHNcIixsW2wuRW1wdHlTdHJpbmdGYWN0cz0xMjU4MjQwMV09XCJFbXB0eVN0cmluZ0ZhY3RzXCIsbFtsLk5vbkVtcHR5U3RyaW5nU3RyaWN0RmFjdHM9NzkyOTM0NV09XCJOb25FbXB0eVN0cmluZ1N0cmljdEZhY3RzXCIsbFtsLk5vbkVtcHR5U3RyaW5nRmFjdHM9MTY3NzY3MDVdPVwiTm9uRW1wdHlTdHJpbmdGYWN0c1wiLGxbbC5CYXNlTnVtYmVyU3RyaWN0RmFjdHM9MzczNDc4Nl09XCJCYXNlTnVtYmVyU3RyaWN0RmFjdHNcIixsW2wuQmFzZU51bWJlckZhY3RzPTEyNTgyMTQ2XT1cIkJhc2VOdW1iZXJGYWN0c1wiLGxbbC5OdW1iZXJTdHJpY3RGYWN0cz0xNjMxNzY5OF09XCJOdW1iZXJTdHJpY3RGYWN0c1wiLGxbbC5OdW1iZXJGYWN0cz0xNjc3NjQ1MF09XCJOdW1iZXJGYWN0c1wiLGxbbC5aZXJvTnVtYmVyU3RyaWN0RmFjdHM9MTIxMjMzOTRdPVwiWmVyb051bWJlclN0cmljdEZhY3RzXCIsbFtsLlplcm9OdW1iZXJGYWN0cz0xMjU4MjE0Nl09XCJaZXJvTnVtYmVyRmFjdHNcIixsW2wuTm9uWmVyb051bWJlclN0cmljdEZhY3RzPTc5MjkwOTBdPVwiTm9uWmVyb051bWJlclN0cmljdEZhY3RzXCIsbFtsLk5vblplcm9OdW1iZXJGYWN0cz0xNjc3NjQ1MF09XCJOb25aZXJvTnVtYmVyRmFjdHNcIixsW2wuQmFzZUJpZ0ludFN0cmljdEZhY3RzPTM3MzQyNzZdPVwiQmFzZUJpZ0ludFN0cmljdEZhY3RzXCIsbFtsLkJhc2VCaWdJbnRGYWN0cz0xMjU4MTYzNl09XCJCYXNlQmlnSW50RmFjdHNcIixsW2wuQmlnSW50U3RyaWN0RmFjdHM9MTYzMTcxODhdPVwiQmlnSW50U3RyaWN0RmFjdHNcIixsW2wuQmlnSW50RmFjdHM9MTY3NzU5NDBdPVwiQmlnSW50RmFjdHNcIixsW2wuWmVyb0JpZ0ludFN0cmljdEZhY3RzPTEyMTIyODg0XT1cIlplcm9CaWdJbnRTdHJpY3RGYWN0c1wiLGxbbC5aZXJvQmlnSW50RmFjdHM9MTI1ODE2MzZdPVwiWmVyb0JpZ0ludEZhY3RzXCIsbFtsLk5vblplcm9CaWdJbnRTdHJpY3RGYWN0cz03OTI4NTgwXT1cIk5vblplcm9CaWdJbnRTdHJpY3RGYWN0c1wiLGxbbC5Ob25aZXJvQmlnSW50RmFjdHM9MTY3NzU5NDBdPVwiTm9uWmVyb0JpZ0ludEZhY3RzXCIsbFtsLkJhc2VCb29sZWFuU3RyaWN0RmFjdHM9MzczMzI1Nl09XCJCYXNlQm9vbGVhblN0cmljdEZhY3RzXCIsbFtsLkJhc2VCb29sZWFuRmFjdHM9MTI1ODA2MTZdPVwiQmFzZUJvb2xlYW5GYWN0c1wiLGxbbC5Cb29sZWFuU3RyaWN0RmFjdHM9MTYzMTYxNjhdPVwiQm9vbGVhblN0cmljdEZhY3RzXCIsbFtsLkJvb2xlYW5GYWN0cz0xNjc3NDkyMF09XCJCb29sZWFuRmFjdHNcIixsW2wuRmFsc2VTdHJpY3RGYWN0cz0xMjEyMTg2NF09XCJGYWxzZVN0cmljdEZhY3RzXCIsbFtsLkZhbHNlRmFjdHM9MTI1ODA2MTZdPVwiRmFsc2VGYWN0c1wiLGxbbC5UcnVlU3RyaWN0RmFjdHM9NzkyNzU2MF09XCJUcnVlU3RyaWN0RmFjdHNcIixsW2wuVHJ1ZUZhY3RzPTE2Nzc0OTIwXT1cIlRydWVGYWN0c1wiLGxbbC5TeW1ib2xTdHJpY3RGYWN0cz03OTI1NTIwXT1cIlN5bWJvbFN0cmljdEZhY3RzXCIsbFtsLlN5bWJvbEZhY3RzPTE2NzcyODgwXT1cIlN5bWJvbEZhY3RzXCIsbFtsLk9iamVjdFN0cmljdEZhY3RzPTc4ODg4MDBdPVwiT2JqZWN0U3RyaWN0RmFjdHNcIixsW2wuT2JqZWN0RmFjdHM9MTY3MzYxNjBdPVwiT2JqZWN0RmFjdHNcIixsW2wuRnVuY3Rpb25TdHJpY3RGYWN0cz03ODgwNjQwXT1cIkZ1bmN0aW9uU3RyaWN0RmFjdHNcIixsW2wuRnVuY3Rpb25GYWN0cz0xNjcyOGUzXT1cIkZ1bmN0aW9uRmFjdHNcIixsW2wuVW5kZWZpbmVkRmFjdHM9OTgzMDE0NF09XCJVbmRlZmluZWRGYWN0c1wiLGxbbC5OdWxsRmFjdHM9OTM2MzIzMl09XCJOdWxsRmFjdHNcIixsW2wuRW1wdHlPYmplY3RTdHJpY3RGYWN0cz0xNjMxODQ2M109XCJFbXB0eU9iamVjdFN0cmljdEZhY3RzXCIsbFtsLkFsbFR5cGVvZk5FPTU1NjgwMF09XCJBbGxUeXBlb2ZORVwiLGxbbC5FbXB0eU9iamVjdEZhY3RzPTE2Nzc3MjE1XT1cIkVtcHR5T2JqZWN0RmFjdHNcIixsW2wuT3JGYWN0c01hc2s9ODI1Nl09XCJPckZhY3RzTWFza1wiLGxbbC5BbmRGYWN0c01hc2s9MTY3Njg5NTldPVwiQW5kRmFjdHNNYXNrXCJ9KShtfHwobT17fSkpO3ZhciBHPW5ldyBlLk1hcChlLmdldEVudHJpZXMoe3N0cmluZzoxLG51bWJlcjoyLGJpZ2ludDo0LGJvb2xlYW46OCxzeW1ib2w6MTYsdW5kZWZpbmVkOjY1NTM2LG9iamVjdDozMixmdW5jdGlvbjo2NH0pKSxvZT1uZXcgZS5NYXAoZS5nZXRFbnRyaWVzKHtzdHJpbmc6MjU2LG51bWJlcjo1MTIsYmlnaW50OjEwMjQsYm9vbGVhbjoyMDQ4LHN5bWJvbDo0MDk2LHVuZGVmaW5lZDo1MjQyODgsb2JqZWN0OjgxOTIsZnVuY3Rpb246MTYzODR9KSksZjsoZnVuY3Rpb24obCl7bFtsLlR5cGU9MF09XCJUeXBlXCIsbFtsLlJlc29sdmVkQmFzZUNvbnN0cnVjdG9yVHlwZT0xXT1cIlJlc29sdmVkQmFzZUNvbnN0cnVjdG9yVHlwZVwiLGxbbC5EZWNsYXJlZFR5cGU9Ml09XCJEZWNsYXJlZFR5cGVcIixsW2wuUmVzb2x2ZWRSZXR1cm5UeXBlPTNdPVwiUmVzb2x2ZWRSZXR1cm5UeXBlXCIsbFtsLkltbWVkaWF0ZUJhc2VDb25zdHJhaW50PTRdPVwiSW1tZWRpYXRlQmFzZUNvbnN0cmFpbnRcIixsW2wuRW51bVRhZ1R5cGU9NV09XCJFbnVtVGFnVHlwZVwiLGxbbC5SZXNvbHZlZFR5cGVBcmd1bWVudHM9Nl09XCJSZXNvbHZlZFR5cGVBcmd1bWVudHNcIixsW2wuUmVzb2x2ZWRCYXNlVHlwZXM9N109XCJSZXNvbHZlZEJhc2VUeXBlc1wiLGxbbC5Xcml0ZVR5cGU9OF09XCJXcml0ZVR5cGVcIn0pKGZ8fChmPXt9KSk7dmFyIFQ7KGZ1bmN0aW9uKGwpe2xbbC5Ob3JtYWw9MF09XCJOb3JtYWxcIixsW2wuQ29udGV4dHVhbD0xXT1cIkNvbnRleHR1YWxcIixsW2wuSW5mZXJlbnRpYWw9Ml09XCJJbmZlcmVudGlhbFwiLGxbbC5Ta2lwQ29udGV4dFNlbnNpdGl2ZT00XT1cIlNraXBDb250ZXh0U2Vuc2l0aXZlXCIsbFtsLlNraXBHZW5lcmljRnVuY3Rpb25zPThdPVwiU2tpcEdlbmVyaWNGdW5jdGlvbnNcIixsW2wuSXNGb3JTaWduYXR1cmVIZWxwPTE2XT1cIklzRm9yU2lnbmF0dXJlSGVscFwiLGxbbC5Jc0ZvclN0cmluZ0xpdGVyYWxBcmd1bWVudENvbXBsZXRpb25zPTMyXT1cIklzRm9yU3RyaW5nTGl0ZXJhbEFyZ3VtZW50Q29tcGxldGlvbnNcIixsW2wuUmVzdEJpbmRpbmdFbGVtZW50PTY0XT1cIlJlc3RCaW5kaW5nRWxlbWVudFwifSkoVHx8KFQ9e30pKTt2YXIgSzsoZnVuY3Rpb24obCl7bFtsLkJpdmFyaWFudENhbGxiYWNrPTFdPVwiQml2YXJpYW50Q2FsbGJhY2tcIixsW2wuU3RyaWN0Q2FsbGJhY2s9Ml09XCJTdHJpY3RDYWxsYmFja1wiLGxbbC5JZ25vcmVSZXR1cm5UeXBlcz00XT1cIklnbm9yZVJldHVyblR5cGVzXCIsbFtsLlN0cmljdEFyaXR5PThdPVwiU3RyaWN0QXJpdHlcIixsW2wuQ2FsbGJhY2s9M109XCJDYWxsYmFja1wifSkoS3x8KEs9e30pKTt2YXIgYjsoZnVuY3Rpb24obCl7bFtsLk5vbmU9MF09XCJOb25lXCIsbFtsLlNvdXJjZT0xXT1cIlNvdXJjZVwiLGxbbC5UYXJnZXQ9Ml09XCJUYXJnZXRcIixsW2wuUHJvcGVydHlDaGVjaz00XT1cIlByb3BlcnR5Q2hlY2tcIixsW2wuSW5Qcm9wZXJ0eUNoZWNrPThdPVwiSW5Qcm9wZXJ0eUNoZWNrXCJ9KShifHwoYj17fSkpO3ZhciBzZTsoZnVuY3Rpb24obCl7bFtsLk5vbmU9MF09XCJOb25lXCIsbFtsLlNvdXJjZT0xXT1cIlNvdXJjZVwiLGxbbC5UYXJnZXQ9Ml09XCJUYXJnZXRcIixsW2wuQm90aD0zXT1cIkJvdGhcIn0pKHNlfHwoc2U9e30pKTt2YXIgSjsoZnVuY3Rpb24obCl7bFtsLkluY2x1ZGVSZWFkb25seT0xXT1cIkluY2x1ZGVSZWFkb25seVwiLGxbbC5FeGNsdWRlUmVhZG9ubHk9Ml09XCJFeGNsdWRlUmVhZG9ubHlcIixsW2wuSW5jbHVkZU9wdGlvbmFsPTRdPVwiSW5jbHVkZU9wdGlvbmFsXCIsbFtsLkV4Y2x1ZGVPcHRpb25hbD04XT1cIkV4Y2x1ZGVPcHRpb25hbFwifSkoSnx8KEo9e30pKTt2YXIgaWU7KGZ1bmN0aW9uKGwpe2xbbC5Ob25lPTBdPVwiTm9uZVwiLGxbbC5Tb3VyY2U9MV09XCJTb3VyY2VcIixsW2wuVGFyZ2V0PTJdPVwiVGFyZ2V0XCIsbFtsLkJvdGg9M109XCJCb3RoXCJ9KShpZXx8KGllPXt9KSk7dmFyIFI7KGZ1bmN0aW9uKGwpe2wucmVzb2x2ZWRFeHBvcnRzPVwicmVzb2x2ZWRFeHBvcnRzXCIsbC5yZXNvbHZlZE1lbWJlcnM9XCJyZXNvbHZlZE1lbWJlcnNcIn0pKFJ8fChSPXt9KSk7dmFyIHE7KGZ1bmN0aW9uKGwpe2xbbC5Mb2NhbD0wXT1cIkxvY2FsXCIsbFtsLlBhcmFtZXRlcj0xXT1cIlBhcmFtZXRlclwifSkocXx8KHE9e30pKTt2YXIgTz1lLmFuZChrLFApLHZlOyhmdW5jdGlvbihsKXtsW2wuR2V0QWNjZXNzb3I9MV09XCJHZXRBY2Nlc3NvclwiLGxbbC5TZXRBY2Nlc3Nvcj0yXT1cIlNldEFjY2Vzc29yXCIsbFtsLlByb3BlcnR5QXNzaWdubWVudD00XT1cIlByb3BlcnR5QXNzaWdubWVudFwiLGxbbC5NZXRob2Q9OF09XCJNZXRob2RcIixsW2wuUHJpdmF0ZVN0YXRpYz0xNl09XCJQcml2YXRlU3RhdGljXCIsbFtsLkdldE9yU2V0QWNjZXNzb3I9M109XCJHZXRPclNldEFjY2Vzc29yXCIsbFtsLlByb3BlcnR5QXNzaWdubWVudE9yTWV0aG9kPTEyXT1cIlByb3BlcnR5QXNzaWdubWVudE9yTWV0aG9kXCJ9KSh2ZXx8KHZlPXt9KSk7dmFyIGVlOyhmdW5jdGlvbihsKXtsW2wuTm9uZT0wXT1cIk5vbmVcIixsW2wuRXhwb3J0VmFsdWU9MV09XCJFeHBvcnRWYWx1ZVwiLGxbbC5FeHBvcnRUeXBlPTJdPVwiRXhwb3J0VHlwZVwiLGxbbC5FeHBvcnROYW1lc3BhY2U9NF09XCJFeHBvcnROYW1lc3BhY2VcIn0pKGVlfHwoZWU9e30pKTt2YXIgaGU7KGZ1bmN0aW9uKGwpe2xbbC5Ob25lPTBdPVwiTm9uZVwiLGxbbC5TdHJvbmdBcml0eUZvclVudHlwZWRKUz0xXT1cIlN0cm9uZ0FyaXR5Rm9yVW50eXBlZEpTXCIsbFtsLlZvaWRJc05vbk9wdGlvbmFsPTJdPVwiVm9pZElzTm9uT3B0aW9uYWxcIn0pKGhlfHwoaGU9e30pKTt2YXIgRjsoZnVuY3Rpb24obCl7bFtsLlVwcGVyY2FzZT0wXT1cIlVwcGVyY2FzZVwiLGxbbC5Mb3dlcmNhc2U9MV09XCJMb3dlcmNhc2VcIixsW2wuQ2FwaXRhbGl6ZT0yXT1cIkNhcGl0YWxpemVcIixsW2wuVW5jYXBpdGFsaXplPTNdPVwiVW5jYXBpdGFsaXplXCJ9KShGfHwoRj17fSkpO3ZhciB4PW5ldyBlLk1hcChlLmdldEVudHJpZXMoe1VwcGVyY2FzZTowLExvd2VyY2FzZToxLENhcGl0YWxpemU6MixVbmNhcGl0YWxpemU6M30pKTtmdW5jdGlvbiBYKCl7fWZ1bmN0aW9uICQoKXt0aGlzLmZsYWdzPTB9ZnVuY3Rpb24gQShsKXtyZXR1cm4gbC5pZHx8KGwuaWQ9QixCKyspLGwuaWR9ZS5nZXROb2RlSWQ9QTtmdW5jdGlvbiB5KGwpe3JldHVybiBsLmlkfHwobC5pZD13LHcrKyksbC5pZH1lLmdldFN5bWJvbElkPXk7ZnVuY3Rpb24gVihsLGQpe3ZhciBEPWUuZ2V0TW9kdWxlSW5zdGFuY2VTdGF0ZShsKTtyZXR1cm4gRD09PTF8fGQmJkQ9PT0yfWUuaXNJbnN0YW50aWF0ZWRNb2R1bGU9VjtmdW5jdGlvbiBMKGwpe3ZhciBkPWUubWVtb2l6ZShmdW5jdGlvbigpe3ZhciByPW5ldyBlLk1hcDtyZXR1cm4gbC5nZXRTb3VyY2VGaWxlcygpLmZvckVhY2goZnVuY3Rpb24oaSl7IWkucmVzb2x2ZWRNb2R1bGVzfHxpLnJlc29sdmVkTW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QmJnQucGFja2FnZUlkJiZyLnNldCh0LnBhY2thZ2VJZC5uYW1lLHQuZXh0ZW5zaW9uPT09XCIuZC50c1wifHwhIXIuZ2V0KHQucGFja2FnZUlkLm5hbWUpKX0pfSkscn0pLEQ9W10sZmU9ZnVuY3Rpb24ocil7RC5wdXNoKHIpfSxnLG5lLHVlLFdlPWUub2JqZWN0QWxsb2NhdG9yLmdldFN5bWJvbENvbnN0cnVjdG9yKCksRmU9ZS5vYmplY3RBbGxvY2F0b3IuZ2V0VHlwZUNvbnN0cnVjdG9yKCksWj1lLm9iamVjdEFsbG9jYXRvci5nZXRTaWduYXR1cmVDb25zdHJ1Y3RvcigpLEJlPTAsZ2U9MCxSZT0wLHplPTAsRWU9MCxIZT0wLHJyPTAsSWUsX2Usd2U9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpLGRlPVsxXSx5ZT1sLmdldENvbXBpbGVyT3B0aW9ucygpLEFlPWUuZ2V0RW1pdFNjcmlwdFRhcmdldCh5ZSksZXI9ZS5nZXRFbWl0TW9kdWxlS2luZCh5ZSksaXI9ZS5nZXRVc2VEZWZpbmVGb3JDbGFzc0ZpZWxkcyh5ZSksQ3I9ZS5nZXRBbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzKHllKSxZZT1lLmdldFN0cmljdE9wdGlvblZhbHVlKHllLFwic3RyaWN0TnVsbENoZWNrc1wiKSxCcj1lLmdldFN0cmljdE9wdGlvblZhbHVlKHllLFwic3RyaWN0RnVuY3Rpb25UeXBlc1wiKSxFcj1lLmdldFN0cmljdE9wdGlvblZhbHVlKHllLFwic3RyaWN0QmluZENhbGxBcHBseVwiKSxOZT1lLmdldFN0cmljdE9wdGlvblZhbHVlKHllLFwic3RyaWN0UHJvcGVydHlJbml0aWFsaXphdGlvblwiKSxuPWUuZ2V0U3RyaWN0T3B0aW9uVmFsdWUoeWUsXCJub0ltcGxpY2l0QW55XCIpLGxyPWUuZ2V0U3RyaWN0T3B0aW9uVmFsdWUoeWUsXCJub0ltcGxpY2l0VGhpc1wiKSxiZT1lLmdldFN0cmljdE9wdGlvblZhbHVlKHllLFwidXNlVW5rbm93bkluQ2F0Y2hWYXJpYWJsZXNcIiksR2U9ISF5ZS5rZXlvZlN0cmluZ3NPbmx5LHVyPXllLnN1cHByZXNzRXhjZXNzUHJvcGVydHlFcnJvcnM/MDo4MTkyLHlyPXllLmV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzLElyPWRPKCksd3I9TTkoKSxVcj1tXygpLGlpPWUuY3JlYXRlU3ltYm9sVGFibGUoKSxtaT1vbyg0LFwidW5kZWZpbmVkXCIpO21pLmRlY2xhcmF0aW9ucz1bXTt2YXIgcGU9b28oMTUzNixcImdsb2JhbFRoaXNcIiw4KTtwZS5leHBvcnRzPWlpLHBlLmRlY2xhcmF0aW9ucz1bXSxpaS5zZXQocGUuZXNjYXBlZE5hbWUscGUpO3ZhciBvcj1vbyg0LFwiYXJndW1lbnRzXCIpLHFyPW9vKDQsXCJyZXF1aXJlXCIpLHNpLERpPXtnZXROb2RlQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zdW0obC5nZXRTb3VyY2VGaWxlcygpLFwibm9kZUNvdW50XCIpfSxnZXRJZGVudGlmaWVyQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zdW0obC5nZXRTb3VyY2VGaWxlcygpLFwiaWRlbnRpZmllckNvdW50XCIpfSxnZXRTeW1ib2xDb3VudDpmdW5jdGlvbigpe3JldHVybiBlLnN1bShsLmdldFNvdXJjZUZpbGVzKCksXCJzeW1ib2xDb3VudFwiKStnZX0sZ2V0VHlwZUNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIEJlfSxnZXRJbnN0YW50aWF0aW9uQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gemV9LGdldFJlbGF0aW9uQ2FjaGVTaXplczpmdW5jdGlvbigpe3JldHVybnthc3NpZ25hYmxlOmR0LnNpemUsaWRlbnRpdHk6d2Euc2l6ZSxzdWJ0eXBlOk9yLnNpemUsc3RyaWN0U3VidHlwZTpraS5zaXplfX0saXNVbmRlZmluZWRTeW1ib2w6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1taX0saXNBcmd1bWVudHNTeW1ib2w6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1vcn0saXNVbmtub3duU3ltYm9sOmZ1bmN0aW9uKHIpe3JldHVybiByPT09eGV9LGdldE1lcmdlZFN5bWJvbDpzbyxnZXREaWFnbm9zdGljczpYNixnZXRHbG9iYWxEaWFnbm9zdGljczokTSxnZXRSZWN1cnNpb25JZGVudGl0eTpvdixnZXRVbm1hdGNoZWRQcm9wZXJ0aWVzOnNiLGdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb246ZnVuY3Rpb24ocixpKXt2YXIgdD1lLmdldFBhcnNlVHJlZU5vZGUoaSk7cmV0dXJuIHQ/Tjgocix0KTpQZX0sZ2V0VHlwZU9mU3ltYm9sOkp0LGdldFN5bWJvbHNPZlBhcmFtZXRlclByb3BlcnR5RGVjbGFyYXRpb246ZnVuY3Rpb24ocixpKXt2YXIgdD1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzUGFyYW1ldGVyKTtyZXR1cm4gdD09PXZvaWQgMD9lLkRlYnVnLmZhaWwoXCJDYW5ub3QgZ2V0IHN5bWJvbHMgb2YgYSBzeW50aGV0aWMgcGFyYW1ldGVyIHRoYXQgY2Fubm90IGJlIHJlc29sdmVkIHRvIGEgcGFyc2UtdHJlZSBub2RlLlwiKTpjZCh0LGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGkpKX0sZ2V0RGVjbGFyZWRUeXBlT2ZTeW1ib2w6Z28sZ2V0UHJvcGVydGllc09mVHlwZTp1byxnZXRQcm9wZXJ0eU9mVHlwZTpmdW5jdGlvbihyLGkpe3JldHVybiBiaShyLGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGkpKX0sZ2V0UHJpdmF0ZUlkZW50aWZpZXJQcm9wZXJ0eU9mVHlwZTpmdW5jdGlvbihyLGksdCl7dmFyIG89ZS5nZXRQYXJzZVRyZWVOb2RlKHQpO2lmKCEhbyl7dmFyIHM9ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSksdT1nMChzLG8pO3JldHVybiB1P1ViKHIsdSk6dm9pZCAwfX0sZ2V0VHlwZU9mUHJvcGVydHlPZlR5cGU6ZnVuY3Rpb24ocixpKXtyZXR1cm4gZGEocixlLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhpKSl9LGdldEluZGV4SW5mb09mVHlwZTpmdW5jdGlvbihyLGkpe3JldHVybiBzcyhyLGk9PT0wP0xpOm50KX0sZ2V0SW5kZXhJbmZvc09mVHlwZTpIbixnZXRTaWduYXR1cmVzT2ZUeXBlOm90LGdldEluZGV4VHlwZU9mVHlwZTpmdW5jdGlvbihyLGkpe3JldHVybiBjcyhyLGk9PT0wP0xpOm50KX0sZ2V0SW5kZXhUeXBlOmZ1bmN0aW9uKHIpe3JldHVybiBxbChyKX0sZ2V0QmFzZVR5cGVzOlFjLGdldEJhc2VUeXBlT2ZMaXRlcmFsVHlwZTpLbCxnZXRXaWRlbmVkVHlwZTokYyxnZXRUeXBlRnJvbVR5cGVOb2RlOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNUeXBlTm9kZSk7cmV0dXJuIGk/VmEoaSk6UGV9LGdldFBhcmFtZXRlclR5cGU6JHUsZ2V0UGFyYW1ldGVySWRlbnRpZmllck5hbWVBdFBvc2l0aW9uOnE3LGdldFByb21pc2VkVHlwZU9mUHJvbWlzZTpUdixnZXRBd2FpdGVkVHlwZTpmdW5jdGlvbihyKXtyZXR1cm4gYWcocil9LGdldFJldHVyblR5cGVPZlNpZ25hdHVyZTp5byxpc051bGxhYmxlVHlwZTpkMCxnZXROdWxsYWJsZVR5cGU6VWgsZ2V0Tm9uTnVsbGFibGVUeXBlOkNfLGdldE5vbk9wdGlvbmFsVHlwZTpZRCxnZXRUeXBlQXJndW1lbnRzOnhvLHR5cGVUb1R5cGVOb2RlOlVyLnR5cGVUb1R5cGVOb2RlLGluZGV4SW5mb1RvSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbjpVci5pbmRleEluZm9Ub0luZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24sc2lnbmF0dXJlVG9TaWduYXR1cmVEZWNsYXJhdGlvbjpVci5zaWduYXR1cmVUb1NpZ25hdHVyZURlY2xhcmF0aW9uLHN5bWJvbFRvRW50aXR5TmFtZTpVci5zeW1ib2xUb0VudGl0eU5hbWUsc3ltYm9sVG9FeHByZXNzaW9uOlVyLnN5bWJvbFRvRXhwcmVzc2lvbixzeW1ib2xUb1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnM6VXIuc3ltYm9sVG9UeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25zLHN5bWJvbFRvUGFyYW1ldGVyRGVjbGFyYXRpb246VXIuc3ltYm9sVG9QYXJhbWV0ZXJEZWNsYXJhdGlvbix0eXBlUGFyYW1ldGVyVG9EZWNsYXJhdGlvbjpVci50eXBlUGFyYW1ldGVyVG9EZWNsYXJhdGlvbixnZXRTeW1ib2xzSW5TY29wZTpmdW5jdGlvbihyLGkpe3ZhciB0PWUuZ2V0UGFyc2VUcmVlTm9kZShyKTtyZXR1cm4gdD9aTSh0LGkpOltdfSxnZXRTeW1ib2xBdExvY2F0aW9uOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyKTtyZXR1cm4gaT9lbChpLCEwKTp2b2lkIDB9LGdldEluZGV4SW5mb3NBdExvY2F0aW9uOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyKTtyZXR1cm4gaT9vOShpKTp2b2lkIDB9LGdldFNob3J0aGFuZEFzc2lnbm1lbnRWYWx1ZVN5bWJvbDpmdW5jdGlvbihyKXt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocik7cmV0dXJuIGk/czkoaSk6dm9pZCAwfSxnZXRFeHBvcnRTcGVjaWZpZXJMb2NhbFRhcmdldFN5bWJvbDpmdW5jdGlvbihyKXt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzRXhwb3J0U3BlY2lmaWVyKTtyZXR1cm4gaT9jOShpKTp2b2lkIDB9LGdldEV4cG9ydFN5bWJvbE9mU3ltYm9sOmZ1bmN0aW9uKHIpe3JldHVybiBzbyhyLmV4cG9ydFN5bWJvbHx8cil9LGdldFR5cGVBdExvY2F0aW9uOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyKTtyZXR1cm4gaT9CZChpKTpQZX0sZ2V0VHlwZU9mQXNzaWdubWVudFBhdHRlcm46ZnVuY3Rpb24ocil7dmFyIGk9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc0Fzc2lnbm1lbnRQYXR0ZXJuKTtyZXR1cm4gaSYmVjAoaSl8fFBlfSxnZXRQcm9wZXJ0eVN5bWJvbE9mRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQ6ZnVuY3Rpb24ocil7dmFyIGk9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc0lkZW50aWZpZXIpO3JldHVybiBpP3U5KGkpOnZvaWQgMH0sc2lnbmF0dXJlVG9TdHJpbmc6ZnVuY3Rpb24ocixpLHQsbyl7cmV0dXJuIE1sKHIsZS5nZXRQYXJzZVRyZWVOb2RlKGkpLHQsbyl9LHR5cGVUb1N0cmluZzpmdW5jdGlvbihyLGksdCl7cmV0dXJuIE90KHIsZS5nZXRQYXJzZVRyZWVOb2RlKGkpLHQpfSxzeW1ib2xUb1N0cmluZzpmdW5jdGlvbihyLGksdCxvKXtyZXR1cm4gdG4ocixlLmdldFBhcnNlVHJlZU5vZGUoaSksdCxvKX0sdHlwZVByZWRpY2F0ZVRvU3RyaW5nOmZ1bmN0aW9uKHIsaSx0KXtyZXR1cm4gTGwocixlLmdldFBhcnNlVHJlZU5vZGUoaSksdCl9LHdyaXRlU2lnbmF0dXJlOmZ1bmN0aW9uKHIsaSx0LG8scyl7cmV0dXJuIE1sKHIsZS5nZXRQYXJzZVRyZWVOb2RlKGkpLHQsbyxzKX0sd3JpdGVUeXBlOmZ1bmN0aW9uKHIsaSx0LG8pe3JldHVybiBPdChyLGUuZ2V0UGFyc2VUcmVlTm9kZShpKSx0LG8pfSx3cml0ZVN5bWJvbDpmdW5jdGlvbihyLGksdCxvLHMpe3JldHVybiB0bihyLGUuZ2V0UGFyc2VUcmVlTm9kZShpKSx0LG8scyl9LHdyaXRlVHlwZVByZWRpY2F0ZTpmdW5jdGlvbihyLGksdCxvKXtyZXR1cm4gTGwocixlLmdldFBhcnNlVHJlZU5vZGUoaSksdCxvKX0sZ2V0QXVnbWVudGVkUHJvcGVydGllc09mVHlwZTpMUyxnZXRSb290U3ltYm9sczplQSxnZXRTeW1ib2xPZkV4cGFuZG86VDAsZ2V0Q29udGV4dHVhbFR5cGU6ZnVuY3Rpb24ocixpKXt2YXIgdD1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzRXhwcmVzc2lvbik7aWYoISF0KXJldHVybiBpJjQ/d2kodCxmdW5jdGlvbigpe3JldHVybiBvdSh0LGkpfSk6b3UodCxpKX0sZ2V0Q29udGV4dHVhbFR5cGVGb3JPYmplY3RMaXRlcmFsRWxlbWVudDpmdW5jdGlvbihyKXt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlKTtyZXR1cm4gaT9rYihpKTp2b2lkIDB9LGdldENvbnRleHR1YWxUeXBlRm9yQXJndW1lbnRBdEluZGV4OmZ1bmN0aW9uKHIsaSl7dmFyIHQ9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc0NhbGxMaWtlRXhwcmVzc2lvbik7cmV0dXJuIHQmJkNiKHQsaSl9LGdldENvbnRleHR1YWxUeXBlRm9ySnN4QXR0cmlidXRlOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNKc3hBdHRyaWJ1dGVMaWtlKTtyZXR1cm4gaSYmQUMoaSl9LGlzQ29udGV4dFNlbnNpdGl2ZTpKdSxnZXRUeXBlT2ZQcm9wZXJ0eU9mQ29udGV4dHVhbFR5cGU6TWQsZ2V0RnVsbHlRdWFsaWZpZWROYW1lOmNsLGdldFJlc29sdmVkU2lnbmF0dXJlOmZ1bmN0aW9uKHIsaSx0KXtyZXR1cm4gWGkocixpLHQsMCl9LGdldFJlc29sdmVkU2lnbmF0dXJlRm9yU3RyaW5nTGl0ZXJhbENvbXBsZXRpb25zOmZ1bmN0aW9uKHIsaSx0KXtyZXR1cm4gWGkocix0LHZvaWQgMCwzMixpKX0sZ2V0UmVzb2x2ZWRTaWduYXR1cmVGb3JTaWduYXR1cmVIZWxwOmZ1bmN0aW9uKHIsaSx0KXtyZXR1cm4gWGkocixpLHQsMTYpfSxnZXRFeHBhbmRlZFBhcmFtZXRlcnM6Sm0saGFzRWZmZWN0aXZlUmVzdFBhcmFtZXRlcjpYbCxjb250YWluc0FyZ3VtZW50c1JlZmVyZW5jZTpHbSxnZXRDb25zdGFudFZhbHVlOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyLG5BKTtyZXR1cm4gaT9CUyhpKTp2b2lkIDB9LGlzVmFsaWRQcm9wZXJ0eUFjY2VzczpmdW5jdGlvbihyLGkpe3ZhciB0PWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNQcm9wZXJ0eUFjY2Vzc09yUXVhbGlmaWVkTmFtZU9ySW1wb3J0VHlwZU5vZGUpO3JldHVybiEhdCYmYTcodCxlLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhpKSl9LGlzVmFsaWRQcm9wZXJ0eUFjY2Vzc0ZvckNvbXBsZXRpb25zOmZ1bmN0aW9uKHIsaSx0KXt2YXIgbz1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKTtyZXR1cm4hIW8mJmlrKG8saSx0KX0sZ2V0U2lnbmF0dXJlRnJvbURlY2xhcmF0aW9uOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNGdW5jdGlvbkxpa2UpO3JldHVybiBpP3lsKGkpOnZvaWQgMH0saXNJbXBsZW1lbnRhdGlvbk9mT3ZlcmxvYWQ6ZnVuY3Rpb24ocil7dmFyIGk9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc0Z1bmN0aW9uTGlrZSk7cmV0dXJuIGk/dEEoaSk6dm9pZCAwfSxnZXRJbW1lZGlhdGVBbGlhc2VkU3ltYm9sOndiLGdldEFsaWFzZWRTeW1ib2w6UHMsZ2V0RW1pdFJlc29sdmVyOkhvLGdldEV4cG9ydHNPZk1vZHVsZTpKXyxnZXRFeHBvcnRzQW5kUHJvcGVydGllc09mTW9kdWxlOmpfLGZvckVhY2hFeHBvcnRBbmRQcm9wZXJ0eU9mTW9kdWxlOlVfLGdldFN5bWJvbFdhbGtlcjplLmNyZWF0ZUdldFN5bWJvbFdhbGtlcihfMyxZYyx5byxRYyxSdSxKdCxEbCxUYyxlLmdldEZpcnN0SWRlbnRpZmllcix4byksZ2V0QW1iaWVudE1vZHVsZXM6eEwsZ2V0SnN4SW50cmluc2ljVGFnTmFtZXNBdDpSNSxpc09wdGlvbmFsUGFyYW1ldGVyOmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNQYXJhbWV0ZXIpO3JldHVybiBpP2tkKGkpOiExfSx0cnlHZXRNZW1iZXJJbk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24ocixpKXtyZXR1cm4gaXUoZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMociksaSl9LHRyeUdldE1lbWJlckluTW9kdWxlRXhwb3J0c0FuZFByb3BlcnRpZXM6ZnVuY3Rpb24ocixpKXtyZXR1cm4gdmQoZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMociksaSl9LHRyeUZpbmRBbWJpZW50TW9kdWxlOmZ1bmN0aW9uKHIpe3JldHVybiBiXyhyLCEwKX0sdHJ5RmluZEFtYmllbnRNb2R1bGVXaXRob3V0QXVnbWVudGF0aW9uczpmdW5jdGlvbihyKXtyZXR1cm4gYl8ociwhMSl9LGdldEFwcGFyZW50VHlwZTokcyxnZXRVbmlvblR5cGU6UGEsaXNUeXBlQXNzaWduYWJsZVRvOmFvLGNyZWF0ZUFub255bW91c1R5cGU6cnMsY3JlYXRlU2lnbmF0dXJlOkZ1LGNyZWF0ZVN5bWJvbDpvbyxjcmVhdGVJbmRleEluZm86emwsZ2V0QW55VHlwZTpmdW5jdGlvbigpe3JldHVybiBPZX0sZ2V0U3RyaW5nVHlwZTpmdW5jdGlvbigpe3JldHVybiBMaX0sZ2V0TnVtYmVyVHlwZTpmdW5jdGlvbigpe3JldHVybiBudH0sY3JlYXRlUHJvbWlzZVR5cGU6TnksY3JlYXRlQXJyYXlUeXBlOlpzLGdldEVsZW1lbnRUeXBlT2ZBcnJheVR5cGU6S0QsZ2V0Qm9vbGVhblR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gSWl9LGdldEZhbHNlVHlwZTpmdW5jdGlvbihyKXtyZXR1cm4gcj94dDp1dH0sZ2V0VHJ1ZVR5cGU6ZnVuY3Rpb24ocil7cmV0dXJuIHI/RHQ6UnR9LGdldFZvaWRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIEZpfSxnZXRVbmRlZmluZWRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIFRyfSxnZXROdWxsVHlwZTpmdW5jdGlvbigpe3JldHVybiBXaX0sZ2V0RVNTeW1ib2xUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIEtpfSxnZXROZXZlclR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gdWl9LGdldE9wdGlvbmFsVHlwZTpmdW5jdGlvbigpe3JldHVybiBVaX0sZ2V0UHJvbWlzZVR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gYXkoITEpfSxnZXRQcm9taXNlTGlrZVR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4ga3goITEpfSxpc1N5bWJvbEFjY2Vzc2libGU6Z18saXNBcnJheVR5cGU6VHUsaXNUdXBsZVR5cGU6WW4saXNBcnJheUxpa2VUeXBlOnNwLGlzVHlwZUludmFsaWREdWVUb1VuaW9uRGlzY3JpbWluYW50OnoxLGdldEV4YWN0T3B0aW9uYWxQcm9wZXJ0aWVzOmx3LGdldEFsbFBvc3NpYmxlUHJvcGVydGllc09mVHlwZXM6VzEsZ2V0U3VnZ2VzdGVkU3ltYm9sRm9yTm9uZXhpc3RlbnRQcm9wZXJ0eTpxYixnZXRTdWdnZXN0aW9uRm9yTm9uZXhpc3RlbnRQcm9wZXJ0eTpWYixnZXRTdWdnZXN0ZWRTeW1ib2xGb3JOb25leGlzdGVudEpTWEF0dHJpYnV0ZTplayxnZXRTdWdnZXN0ZWRTeW1ib2xGb3JOb25leGlzdGVudFN5bWJvbDpmdW5jdGlvbihyLGksdCl7cmV0dXJuIEtiKHIsZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSksdCl9LGdldFN1Z2dlc3Rpb25Gb3JOb25leGlzdGVudFN5bWJvbDpmdW5jdGlvbihyLGksdCl7cmV0dXJuIGU3KHIsZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSksdCl9LGdldFN1Z2dlc3RlZFN5bWJvbEZvck5vbmV4aXN0ZW50TW9kdWxlOnYwLGdldFN1Z2dlc3Rpb25Gb3JOb25leGlzdGVudEV4cG9ydDpyNyxnZXRTdWdnZXN0ZWRTeW1ib2xGb3JOb25leGlzdGVudENsYXNzTWVtYmVyOlpDLGdldEJhc2VDb25zdHJhaW50T2ZUeXBlOnVjLGdldERlZmF1bHRGcm9tVHlwZVBhcmFtZXRlcjpmdW5jdGlvbihyKXtyZXR1cm4gciYmci5mbGFncyYyNjIxNDQ/RF8ocik6dm9pZCAwfSxyZXNvbHZlTmFtZTpmdW5jdGlvbihyLGksdCxvKXtyZXR1cm4gZXMoaSxlLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhyKSx0LHZvaWQgMCx2b2lkIDAsITEsbyl9LGdldEpzeE5hbWVzcGFjZTpmdW5jdGlvbihyKXtyZXR1cm4gZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhwbyhyKSl9LGdldEpzeEZyYWdtZW50RmFjdG9yeTpmdW5jdGlvbihyKXt2YXIgaT1qUyhyKTtyZXR1cm4gaSYmZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhlLmdldEZpcnN0SWRlbnRpZmllcihpKS5lc2NhcGVkVGV4dCl9LGdldEFjY2Vzc2libGVTeW1ib2xDaGFpbjpwbCxnZXRUeXBlUHJlZGljYXRlT2ZTaWduYXR1cmU6WWMscmVzb2x2ZUV4dGVybmFsTW9kdWxlTmFtZTpmdW5jdGlvbihyKXt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzRXhwcmVzc2lvbik7cmV0dXJuIGkmJmFjKGksaSwhMCl9LHJlc29sdmVFeHRlcm5hbE1vZHVsZVN5bWJvbDpVcyx0cnlHZXRUaGlzVHlwZUF0OmZ1bmN0aW9uKHIsaSl7dmFyIHQ9ZS5nZXRQYXJzZVRyZWVOb2RlKHIpO3JldHVybiB0JiZiYih0LGkpfSxnZXRUeXBlQXJndW1lbnRDb25zdHJhaW50OmZ1bmN0aW9uKHIpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNUeXBlTm9kZSk7cmV0dXJuIGkmJldPKGkpfSxnZXRTdWdnZXN0aW9uRGlhZ25vc3RpY3M6ZnVuY3Rpb24ocixpKXt2YXIgdD1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzU291cmNlRmlsZSl8fGUuRGVidWcuZmFpbChcIkNvdWxkIG5vdCBkZXRlcm1pbmUgcGFyc2VkIHNvdXJjZSBmaWxlLlwiKTtpZihlLnNraXBUeXBlQ2hlY2tpbmcodCx5ZSxsKSlyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciBvO3RyeXtyZXR1cm4gZz1pLEZTKHQpLGUuRGVidWcuYXNzZXJ0KCEhKHZhKHQpLmZsYWdzJjEpKSxvPWUuYWRkUmFuZ2Uobyxqbi5nZXREaWFnbm9zdGljcyh0LmZpbGVOYW1lKSksXzYoSDYodCksZnVuY3Rpb24ocyx1LGgpeyFlLmNvbnRhaW5zUGFyc2VFcnJvcihzKSYmIUc2KHUsISEocy5mbGFncyYxNjc3NzIxNikpJiYob3x8KG89W10pKS5wdXNoKEtlKEtlKHt9LGgpLHtjYXRlZ29yeTplLkRpYWdub3N0aWNDYXRlZ29yeS5TdWdnZXN0aW9ufSkpfSksb3x8ZS5lbXB0eUFycmF5fWZpbmFsbHl7Zz12b2lkIDB9fSxydW5XaXRoQ2FuY2VsbGF0aW9uVG9rZW46ZnVuY3Rpb24ocixpKXt0cnl7cmV0dXJuIGc9cixpKERpKX1maW5hbGx5e2c9dm9pZCAwfX0sZ2V0TG9jYWxUeXBlUGFyYW1ldGVyc09mQ2xhc3NPckludGVyZmFjZU9yVHlwZUFsaWFzOkFmLGlzRGVjbGFyYXRpb25WaXNpYmxlOnd1LGlzUHJvcGVydHlBY2Nlc3NpYmxlOkhiLGdldFR5cGVPbmx5QWxpYXNEZWNsYXJhdGlvbjp2dSxnZXRNZW1iZXJPdmVycmlkZU1vZGlmaWVyU3RhdHVzOmRNfTtmdW5jdGlvbiB3aShyLGkpe3ZhciB0PWUuZmluZEFuY2VzdG9yKHIsZS5pc0NhbGxMaWtlRXhwcmVzc2lvbiksbz10JiZ2YSh0KS5yZXNvbHZlZFNpZ25hdHVyZTtpZih0KXt2YXIgcz1yO2RvIHZhKHMpLnNraXBEaXJlY3RJbmZlcmVuY2U9ITAscz1zLnBhcmVudDt3aGlsZShzJiZzIT09dCk7dmEodCkucmVzb2x2ZWRTaWduYXR1cmU9dm9pZCAwfXZhciB1PWkoKTtpZih0KXt2YXIgcz1yO2RvIHZhKHMpLnNraXBEaXJlY3RJbmZlcmVuY2U9dm9pZCAwLHM9cy5wYXJlbnQ7d2hpbGUocyYmcyE9PXQpO3ZhKHQpLnJlc29sdmVkU2lnbmF0dXJlPW99cmV0dXJuIHV9ZnVuY3Rpb24gWGkocixpLHQsbyxzKXt2YXIgdT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzQ2FsbExpa2VFeHByZXNzaW9uKTtzaT10O3ZhciBoPXU/cz93aShzLGZ1bmN0aW9uKCl7cmV0dXJuIE1nKHUsaSxvKX0pOk1nKHUsaSxvKTp2b2lkIDA7cmV0dXJuIHNpPXZvaWQgMCxofXZhciBldD1uZXcgZS5NYXAsR2k9bmV3IGUuTWFwLFd0PW5ldyBlLk1hcCxadD1uZXcgZS5NYXAsX3I9bmV3IGUuTWFwLHBpPW5ldyBlLk1hcCxhZT1uZXcgZS5NYXAsWGU9bmV3IGUuTWFwLEpyPW5ldyBlLk1hcCx0aT1uZXcgZS5NYXAsWmU9bmV3IGUuTWFwLFNyPW5ldyBlLk1hcCx6cj1bXSxXcj1uZXcgZS5NYXAsSmU9bmV3IGUuU2V0LHhlPW9vKDQsXCJ1bmtub3duXCIpLHZyPW9vKDAsXCJfX3Jlc29sdmluZ19fXCIpLG1yPW5ldyBlLk1hcCxBcj1uZXcgZS5NYXAsT2U9bXMoMSxcImFueVwiKSxucj1tcygxLFwiYW55XCIpLE1yPW1zKDEsXCJhbnlcIiksUGU9bXMoMSxcImVycm9yXCIpLFVlPW1zKDEsXCJ1bnJlc29sdmVkXCIpLGZyPW1zKDEsXCJhbnlcIiw2NTUzNiksRGU9bXMoMSxcImludHJpbnNpY1wiKSxncj1tcygyLFwidW5rbm93blwiKSxWcj1tcygyLFwidW5rbm93blwiKSxUcj1tcygzMjc2OCxcInVuZGVmaW5lZFwiKSx2aT1ZZT9UcjptcygzMjc2OCxcInVuZGVmaW5lZFwiLDY1NTM2KSxVaT1tcygzMjc2OCxcInVuZGVmaW5lZFwiKSxZaT15cj9tcygzMjc2OCxcInVuZGVmaW5lZFwiKTpUcixXaT1tcyg2NTUzNixcIm51bGxcIiksY3Q9WWU/V2k6bXMoNjU1MzYsXCJudWxsXCIsNjU1MzYpLExpPW1zKDQsXCJzdHJpbmdcIiksbnQ9bXMoOCxcIm51bWJlclwiKSxNdD1tcyg2NCxcImJpZ2ludFwiKSx4dD1tcyg1MTIsXCJmYWxzZVwiKSx1dD1tcyg1MTIsXCJmYWxzZVwiKSxEdD1tcyg1MTIsXCJ0cnVlXCIpLFJ0PW1zKDUxMixcInRydWVcIik7RHQucmVndWxhclR5cGU9UnQsRHQuZnJlc2hUeXBlPUR0LFJ0LnJlZ3VsYXJUeXBlPVJ0LFJ0LmZyZXNoVHlwZT1EdCx4dC5yZWd1bGFyVHlwZT11dCx4dC5mcmVzaFR5cGU9eHQsdXQucmVndWxhclR5cGU9dXQsdXQuZnJlc2hUeXBlPXh0O3ZhciBJaT1QYShbdXQsUnRdKSxLaT1tcyg0MDk2LFwic3ltYm9sXCIpLEZpPW1zKDE2Mzg0LFwidm9pZFwiKSx1aT1tcygxMzEwNzIsXCJuZXZlclwiKSxCdD1tcygxMzEwNzIsXCJuZXZlclwiKSx3dD1tcygxMzEwNzIsXCJuZXZlclwiLDI2MjE0NCksbmE9bXMoMTMxMDcyLFwibmV2ZXJcIiksQWk9bXMoMTMxMDcyLFwibmV2ZXJcIiksT2k9bXMoNjcxMDg4NjQsXCJvYmplY3RcIiksamk9UGEoW0xpLG50XSksVmk9UGEoW0xpLG50LEtpXSksYXQ9R2U/TGk6VmksQXQ9UGEoW250LE10XSksYmE9UGEoW0xpLG50LElpLE10LFdpLFRyXSksJGE9RGcoW1wiXCIsXCJcIl0sW250XSksUWE9R3AoZnVuY3Rpb24ocil7cmV0dXJuIHIuZmxhZ3MmMjYyMTQ0P1JJKHIpOnJ9KSxhaT1HcChmdW5jdGlvbihyKXtyZXR1cm4gci5mbGFncyYyNjIxNDQ/TXI6cn0pLERuPW1zKDEzMTA3MixcIm5ldmVyXCIpLGthPUdwKGZ1bmN0aW9uKHIpe3JldHVybiByLmZsYWdzJjI2MjE0ND9EbjpyfSksQmE9cnModm9pZCAwLHdlLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KSxwbj1ycyh2b2lkIDAsd2UsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpO3BuLm9iamVjdEZsYWdzfD0yMDQ4O3ZhciBDbj1vbygyMDQ4LFwiX190eXBlXCIpO0NuLm1lbWJlcnM9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpO3ZhciBCaT1ycyhDbix3ZSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSksa249cnModm9pZCAwLHdlLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KTtrbi5pbnN0YW50aWF0aW9ucz1uZXcgZS5NYXA7dmFyIHhuPXJzKHZvaWQgMCx3ZSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSk7eG4ub2JqZWN0RmxhZ3N8PTI2MjE0NDt2YXIgS249cnModm9pZCAwLHdlLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KSxQbj1ycyh2b2lkIDAsd2UsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpLGVvPXJzKHZvaWQgMCx3ZSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSksUm49SGMoKSxEYT1IYygpO0RhLmNvbnN0cmFpbnQ9Um47dmFyIGJvPUhjKCksUm89dmcoMSxcIjw8dW5yZXNvbHZlZD4+XCIsMCxPZSksRW49RnUodm9pZCAwLHZvaWQgMCx2b2lkIDAsZS5lbXB0eUFycmF5LE9lLHZvaWQgMCwwLDApLFduPUZ1KHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUuZW1wdHlBcnJheSxQZSx2b2lkIDAsMCwwKSx0bz1GdSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxlLmVtcHR5QXJyYXksT2Usdm9pZCAwLDAsMCksQ289RnUodm9pZCAwLHZvaWQgMCx2b2lkIDAsZS5lbXB0eUFycmF5LEJ0LHZvaWQgMCwwLDApLEtvPXpsKG50LExpLCEwKSxPbz1uZXcgZS5NYXAsbm89e2dldCB5aWVsZFR5cGUoKXtyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiTm90IHN1cHBvcnRlZFwiKX0sZ2V0IHJldHVyblR5cGUoKXtyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiTm90IHN1cHBvcnRlZFwiKX0sZ2V0IG5leHRUeXBlKCl7cmV0dXJuIGUuRGVidWcuZmFpbChcIk5vdCBzdXBwb3J0ZWRcIil9fSwkbz1hXyhPZSxPZSxPZSksUHI9YV8oT2UsT2UsZ3IpLHhpPWFfKHVpLE9lLFRyKSxTdD17aXRlcmFibGVDYWNoZUtleTpcIml0ZXJhdGlvblR5cGVzT2ZBc3luY0l0ZXJhYmxlXCIsaXRlcmF0b3JDYWNoZUtleTpcIml0ZXJhdGlvblR5cGVzT2ZBc3luY0l0ZXJhdG9yXCIsaXRlcmF0b3JTeW1ib2xOYW1lOlwiYXN5bmNJdGVyYXRvclwiLGdldEdsb2JhbEl0ZXJhdG9yVHlwZTprMyxnZXRHbG9iYWxJdGVyYWJsZVR5cGU6QzMsZ2V0R2xvYmFsSXRlcmFibGVJdGVyYXRvclR5cGU6QTMsZ2V0R2xvYmFsR2VuZXJhdG9yVHlwZTpOMyxyZXNvbHZlSXRlcmF0aW9uVHlwZTphZyxtdXN0SGF2ZUFOZXh0TWV0aG9kRGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLkFuX2FzeW5jX2l0ZXJhdG9yX211c3RfaGF2ZV9hX25leHRfbWV0aG9kLG11c3RCZUFNZXRob2REaWFnbm9zdGljOmUuRGlhZ25vc3RpY3MuVGhlXzBfcHJvcGVydHlfb2ZfYW5fYXN5bmNfaXRlcmF0b3JfbXVzdF9iZV9hX21ldGhvZCxtdXN0SGF2ZUFWYWx1ZURpYWdub3N0aWM6ZS5EaWFnbm9zdGljcy5UaGVfdHlwZV9yZXR1cm5lZF9ieV90aGVfMF9tZXRob2Rfb2ZfYW5fYXN5bmNfaXRlcmF0b3JfbXVzdF9iZV9hX3Byb21pc2VfZm9yX2FfdHlwZV93aXRoX2FfdmFsdWVfcHJvcGVydHl9LHBhPXtpdGVyYWJsZUNhY2hlS2V5OlwiaXRlcmF0aW9uVHlwZXNPZkl0ZXJhYmxlXCIsaXRlcmF0b3JDYWNoZUtleTpcIml0ZXJhdGlvblR5cGVzT2ZJdGVyYXRvclwiLGl0ZXJhdG9yU3ltYm9sTmFtZTpcIml0ZXJhdG9yXCIsZ2V0R2xvYmFsSXRlcmF0b3JUeXBlOlAzLGdldEdsb2JhbEl0ZXJhYmxlVHlwZTpBeCxnZXRHbG9iYWxJdGVyYWJsZUl0ZXJhdG9yVHlwZTpJMyxnZXRHbG9iYWxHZW5lcmF0b3JUeXBlOnczLHJlc29sdmVJdGVyYXRpb25UeXBlOmZ1bmN0aW9uKHIsaSl7cmV0dXJuIHJ9LG11c3RIYXZlQU5leHRNZXRob2REaWFnbm9zdGljOmUuRGlhZ25vc3RpY3MuQW5faXRlcmF0b3JfbXVzdF9oYXZlX2FfbmV4dF9tZXRob2QsbXVzdEJlQU1ldGhvZERpYWdub3N0aWM6ZS5EaWFnbm9zdGljcy5UaGVfMF9wcm9wZXJ0eV9vZl9hbl9pdGVyYXRvcl9tdXN0X2JlX2FfbWV0aG9kLG11c3RIYXZlQVZhbHVlRGlhZ25vc3RpYzplLkRpYWdub3N0aWNzLlRoZV90eXBlX3JldHVybmVkX2J5X3RoZV8wX21ldGhvZF9vZl9hbl9pdGVyYXRvcl9tdXN0X2hhdmVfYV92YWx1ZV9wcm9wZXJ0eX0sZG4sSm49bmV3IGUuTWFwLFFlPSExLEdyLFMsQ2UscWUsYnIsWnIsU2ksUGksUWksQ3Qsc2EsZW4sV2EscW4sbW8sU28sR28seXMsUGMsVmMsS2MsWHMscGMsaHMsdGMscHMsUXMsanMsZHMsSmksY2UsUnIseWkscWksamUsSHIscHQsUHQsZ2EsdWEsWG4sanIsZm8seHMsRm89bmV3IGUuTWFwLGtvPTAsQW89MCxNcz0wLEJzPSExLHhjPTAsc3UsdGwsWmMsUmY9QnUoXCJcIiksYWw9SWYoMCksSm89RUQoe25lZ2F0aXZlOiExLGJhc2UxMFZhbHVlOlwiMFwifSksZXU9W10sV3M9W10scHU9W10sVXU9MCxRbD0xMCx4bD1bXSxZYT1bXSxkdT1bXSx2Yz1bXSxLcj1bXSxfaT1bXSxFaT1bXSx0dD1bXSxrdD1bXSxidD1bXSxpYT1bXSxYdD1bXSxaYT1bXSxibj1bXSxfYT1bXSxxYT1bXSxybj1lLmNyZWF0ZURpYWdub3N0aWNDb2xsZWN0aW9uKCksam49ZS5jcmVhdGVEaWFnbm9zdGljQ29sbGVjdGlvbigpLE1vPW5ldyBlLk1hcChlLmdldEVudHJpZXMoe3N0cmluZzpMaSxudW1iZXI6bnQsYmlnaW50Ok10LGJvb2xlYW46SWksc3ltYm9sOktpLHVuZGVmaW5lZDpUcn0pKSxobz13cCgpLGdzLFNlLGhyLE9yPW5ldyBlLk1hcCxraT1uZXcgZS5NYXAsZHQ9bmV3IGUuTWFwLGxhPW5ldyBlLk1hcCx3YT1uZXcgZS5NYXAsT249bmV3IGUuTWFwLE5vPWUuY3JlYXRlU3ltYm9sVGFibGUoKTtOby5zZXQobWkuZXNjYXBlZE5hbWUsbWkpO3ZhciBqbz1bW1wiLm10c1wiLFwiLm1qc1wiXSxbXCIudHNcIixcIi5qc1wiXSxbXCIuY3RzXCIsXCIuY2pzXCJdLFtcIi5tanNcIixcIi5tanNcIl0sW1wiLmpzXCIsXCIuanNcIl0sW1wiLmNqc1wiLFwiLmNqc1wiXSxbXCIudHN4XCIseWUuanN4PT09MT9cIi5qc3hcIjpcIi5qc1wiXSxbXCIuanN4XCIsXCIuanN4XCJdLFtcIi5qc29uXCIsXCIuanNvblwiXV07cmV0dXJuIEw5KCksRGk7ZnVuY3Rpb24gcG8ocil7aWYocil7dmFyIGk9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpO2lmKGkpaWYoZS5pc0pzeE9wZW5pbmdGcmFnbWVudChyKSl7aWYoaS5sb2NhbEpzeEZyYWdtZW50TmFtZXNwYWNlKXJldHVybiBpLmxvY2FsSnN4RnJhZ21lbnROYW1lc3BhY2U7dmFyIHQ9aS5wcmFnbWFzLmdldChcImpzeGZyYWdcIik7aWYodCl7dmFyIG89ZS5pc0FycmF5KHQpP3RbMF06dDtpZihpLmxvY2FsSnN4RnJhZ21lbnRGYWN0b3J5PWUucGFyc2VJc29sYXRlZEVudGl0eU5hbWUoby5hcmd1bWVudHMuZmFjdG9yeSxBZSksZS52aXNpdE5vZGUoaS5sb2NhbEpzeEZyYWdtZW50RmFjdG9yeSwkbiksaS5sb2NhbEpzeEZyYWdtZW50RmFjdG9yeSlyZXR1cm4gaS5sb2NhbEpzeEZyYWdtZW50TmFtZXNwYWNlPWUuZ2V0Rmlyc3RJZGVudGlmaWVyKGkubG9jYWxKc3hGcmFnbWVudEZhY3RvcnkpLmVzY2FwZWRUZXh0fXZhciBzPWpTKHIpO2lmKHMpcmV0dXJuIGkubG9jYWxKc3hGcmFnbWVudEZhY3Rvcnk9cyxpLmxvY2FsSnN4RnJhZ21lbnROYW1lc3BhY2U9ZS5nZXRGaXJzdElkZW50aWZpZXIocykuZXNjYXBlZFRleHR9ZWxzZXt2YXIgdT1HbihpKTtpZih1KXJldHVybiBpLmxvY2FsSnN4TmFtZXNwYWNlPXV9fXJldHVybiBnc3x8KGdzPVwiUmVhY3RcIix5ZS5qc3hGYWN0b3J5PyhTZT1lLnBhcnNlSXNvbGF0ZWRFbnRpdHlOYW1lKHllLmpzeEZhY3RvcnksQWUpLGUudmlzaXROb2RlKFNlLCRuKSxTZSYmKGdzPWUuZ2V0Rmlyc3RJZGVudGlmaWVyKFNlKS5lc2NhcGVkVGV4dCkpOnllLnJlYWN0TmFtZXNwYWNlJiYoZ3M9ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoeWUucmVhY3ROYW1lc3BhY2UpKSksU2V8fChTZT1lLmZhY3RvcnkuY3JlYXRlUXVhbGlmaWVkTmFtZShlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGdzKSksXCJjcmVhdGVFbGVtZW50XCIpKSxnc31mdW5jdGlvbiBHbihyKXtpZihyLmxvY2FsSnN4TmFtZXNwYWNlKXJldHVybiByLmxvY2FsSnN4TmFtZXNwYWNlO3ZhciBpPXIucHJhZ21hcy5nZXQoXCJqc3hcIik7aWYoaSl7dmFyIHQ9ZS5pc0FycmF5KGkpP2lbMF06aTtpZihyLmxvY2FsSnN4RmFjdG9yeT1lLnBhcnNlSXNvbGF0ZWRFbnRpdHlOYW1lKHQuYXJndW1lbnRzLmZhY3RvcnksQWUpLGUudmlzaXROb2RlKHIubG9jYWxKc3hGYWN0b3J5LCRuKSxyLmxvY2FsSnN4RmFjdG9yeSlyZXR1cm4gci5sb2NhbEpzeE5hbWVzcGFjZT1lLmdldEZpcnN0SWRlbnRpZmllcihyLmxvY2FsSnN4RmFjdG9yeSkuZXNjYXBlZFRleHR9fWZ1bmN0aW9uICRuKHIpe3JldHVybiBlLnNldFRleHRSYW5nZVBvc0VuZChyLC0xLC0xKSxlLnZpc2l0RWFjaENoaWxkKHIsJG4sZS5udWxsVHJhbnNmb3JtYXRpb25Db250ZXh0KX1mdW5jdGlvbiBIbyhyLGkpe3JldHVybiBYNihyLGkpLHdyfWZ1bmN0aW9uIFpvKHIsaSx0LG8scyx1KXt2YXIgaD1yP2UuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUocixpLHQsbyxzLHUpOmUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGksdCxvLHMsdSksej1ybi5sb29rdXAoaCk7cmV0dXJuIHp8fChybi5hZGQoaCksaCl9ZnVuY3Rpb24gRXMocixpLHQsbyxzLHUsaCl7dmFyIHo9WHIoaSx0LG8scyx1LGgpO3JldHVybiB6LnNraXBwZWRPbj1yLHp9ZnVuY3Rpb24geWMocixpLHQsbyxzLHUpe3JldHVybiByP2UuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUocixpLHQsbyxzLHUpOmUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGksdCxvLHMsdSl9ZnVuY3Rpb24gWHIocixpLHQsbyxzLHUpe3ZhciBoPXljKHIsaSx0LG8scyx1KTtyZXR1cm4gcm4uYWRkKGgpLGh9ZnVuY3Rpb24gTHMocixpKXtyP3JuLmFkZChpKTpqbi5hZGQoS2UoS2Uoe30saSkse2NhdGVnb3J5OmUuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb259KSl9ZnVuY3Rpb24gSWMocixpLHQsbyxzLHUsaCl7aWYoaS5wb3M8MHx8aS5lbmQ8MCl7aWYoIXIpcmV0dXJuO3ZhciB6PWUuZ2V0U291cmNlRmlsZU9mTm9kZShpKTtMcyhyLFwibWVzc2FnZVwiaW4gdD9lLmNyZWF0ZUZpbGVEaWFnbm9zdGljKHosMCwwLHQsbyxzLHUsaCk6ZS5jcmVhdGVEaWFnbm9zdGljRm9yRmlsZUZyb21NZXNzYWdlQ2hhaW4oeix0KSk7cmV0dXJufUxzKHIsXCJtZXNzYWdlXCJpbiB0P2UuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoaSx0LG8scyx1LGgpOmUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVGcm9tTWVzc2FnZUNoYWluKGksdCkpfWZ1bmN0aW9uIHp1KHIsaSx0LG8scyx1LGgpe3ZhciB6PVhyKHIsdCxvLHMsdSxoKTtpZihpKXt2YXIgbWU9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLGUuRGlhZ25vc3RpY3MuRGlkX3lvdV9mb3JnZXRfdG9fdXNlX2F3YWl0KTtlLmFkZFJlbGF0ZWRJbmZvKHosbWUpfXJldHVybiB6fWZ1bmN0aW9uIHZmKHIsaSl7dmFyIHQ9QXJyYXkuaXNBcnJheShyKT9lLmZvckVhY2gocixlLmdldEpTRG9jRGVwcmVjYXRlZFRhZyk6ZS5nZXRKU0RvY0RlcHJlY2F0ZWRUYWcocik7cmV0dXJuIHQmJmUuYWRkUmVsYXRlZEluZm8oaSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHQsZS5EaWFnbm9zdGljcy5UaGVfZGVjbGFyYXRpb25fd2FzX21hcmtlZF9hc19kZXByZWNhdGVkX2hlcmUpKSxqbi5hZGQoaSksaX1mdW5jdGlvbiBQXyhyKXtyZXR1cm4hIShwMChyKSYyNjg0MzU0NTYpfWZ1bmN0aW9uIEVsKHIsaSx0KXt2YXIgbz1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIsZS5EaWFnbm9zdGljcy5fMF9pc19kZXByZWNhdGVkLHQpO3JldHVybiB2ZihpLG8pfWZ1bmN0aW9uIHZwKHIsaSx0LG8pe3ZhciBzPXQ/ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLGUuRGlhZ25vc3RpY3MuVGhlX3NpZ25hdHVyZV8wX29mXzFfaXNfZGVwcmVjYXRlZCxvLHQpOmUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUocixlLkRpYWdub3N0aWNzLl8wX2lzX2RlcHJlY2F0ZWQsbyk7cmV0dXJuIHZmKGkscyl9ZnVuY3Rpb24gb28ocixpLHQpe2dlKys7dmFyIG89bmV3IFdlKHJ8MzM1NTQ0MzIsaSk7cmV0dXJuIG8uY2hlY2tGbGFncz10fHwwLG99ZnVuY3Rpb24gSV8ocil7dmFyIGk9MDtyZXR1cm4gciYyJiYoaXw9MTExNTUxKSxyJjEmJihpfD0xMTE1NTApLHImNCYmKGl8PTApLHImOCYmKGl8PTkwMDA5NSksciYxNiYmKGl8PTExMDk5MSksciYzMiYmKGl8PTg5OTUwMyksciY2NCYmKGl8PTc4ODg3MiksciYyNTYmJihpfD04OTkzMjcpLHImMTI4JiYoaXw9ODk5OTY3KSxyJjUxMiYmKGl8PTExMDczNSksciY4MTkyJiYoaXw9MTAzMzU5KSxyJjMyNzY4JiYoaXw9NDYwMTUpLHImNjU1MzYmJihpfD03ODc4MyksciYyNjIxNDQmJihpfD01MjY4MjQpLHImNTI0Mjg4JiYoaXw9Nzg4OTY4KSxyJjIwOTcxNTImJihpfD0yMDk3MTUyKSxpfWZ1bmN0aW9uIHlwKHIsaSl7aS5tZXJnZUlkfHwoaS5tZXJnZUlkPUUsRSsrKSx4bFtpLm1lcmdlSWRdPXJ9ZnVuY3Rpb24gWWwocil7dmFyIGk9b28oci5mbGFncyxyLmVzY2FwZWROYW1lKTtyZXR1cm4gaS5kZWNsYXJhdGlvbnM9ci5kZWNsYXJhdGlvbnM/ci5kZWNsYXJhdGlvbnMuc2xpY2UoKTpbXSxpLnBhcmVudD1yLnBhcmVudCxyLnZhbHVlRGVjbGFyYXRpb24mJihpLnZhbHVlRGVjbGFyYXRpb249ci52YWx1ZURlY2xhcmF0aW9uKSxyLmNvbnN0RW51bU9ubHlNb2R1bGUmJihpLmNvbnN0RW51bU9ubHlNb2R1bGU9ITApLHIubWVtYmVycyYmKGkubWVtYmVycz1uZXcgZS5NYXAoci5tZW1iZXJzKSksci5leHBvcnRzJiYoaS5leHBvcnRzPW5ldyBlLk1hcChyLmV4cG9ydHMpKSx5cChpLHIpLGl9ZnVuY3Rpb24gQmYocixpLHQpe2lmKHQ9PT12b2lkIDAmJih0PSExKSwhKHIuZmxhZ3MmSV8oaS5mbGFncykpfHwoaS5mbGFnc3xyLmZsYWdzKSY2NzEwODg2NCl7aWYoaT09PXIpcmV0dXJuIHI7aWYoIShyLmZsYWdzJjMzNTU0NDMyKSl7dmFyIG89b3Mocik7aWYobz09PXhlKXJldHVybiBpO3I9WWwobyl9aS5mbGFncyY1MTImJnIuZmxhZ3MmNTEyJiZyLmNvbnN0RW51bU9ubHlNb2R1bGUmJiFpLmNvbnN0RW51bU9ubHlNb2R1bGUmJihyLmNvbnN0RW51bU9ubHlNb2R1bGU9ITEpLHIuZmxhZ3N8PWkuZmxhZ3MsaS52YWx1ZURlY2xhcmF0aW9uJiZlLnNldFZhbHVlRGVjbGFyYXRpb24ocixpLnZhbHVlRGVjbGFyYXRpb24pLGUuYWRkUmFuZ2Uoci5kZWNsYXJhdGlvbnMsaS5kZWNsYXJhdGlvbnMpLGkubWVtYmVycyYmKHIubWVtYmVyc3x8KHIubWVtYmVycz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCkpLGd1KHIubWVtYmVycyxpLm1lbWJlcnMsdCkpLGkuZXhwb3J0cyYmKHIuZXhwb3J0c3x8KHIuZXhwb3J0cz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCkpLGd1KHIuZXhwb3J0cyxpLmV4cG9ydHMsdCkpLHR8fHlwKHIsaSl9ZWxzZSBpZihyLmZsYWdzJjEwMjQpciE9PXBlJiZYcihpLmRlY2xhcmF0aW9ucyYmZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihpLmRlY2xhcmF0aW9uc1swXSksZS5EaWFnbm9zdGljcy5DYW5ub3RfYXVnbWVudF9tb2R1bGVfMF93aXRoX3ZhbHVlX2V4cG9ydHNfYmVjYXVzZV9pdF9yZXNvbHZlc190b19hX25vbl9tb2R1bGVfZW50aXR5LHRuKHIpKTtlbHNle3ZhciBzPSEhKHIuZmxhZ3MmMzg0fHxpLmZsYWdzJjM4NCksdT0hIShyLmZsYWdzJjJ8fGkuZmxhZ3MmMiksaD1zP2UuRGlhZ25vc3RpY3MuRW51bV9kZWNsYXJhdGlvbnNfY2FuX29ubHlfbWVyZ2Vfd2l0aF9uYW1lc3BhY2Vfb3Jfb3RoZXJfZW51bV9kZWNsYXJhdGlvbnM6dT9lLkRpYWdub3N0aWNzLkNhbm5vdF9yZWRlY2xhcmVfYmxvY2tfc2NvcGVkX3ZhcmlhYmxlXzA6ZS5EaWFnbm9zdGljcy5EdXBsaWNhdGVfaWRlbnRpZmllcl8wLHo9aS5kZWNsYXJhdGlvbnMmJmUuZ2V0U291cmNlRmlsZU9mTm9kZShpLmRlY2xhcmF0aW9uc1swXSksbWU9ci5kZWNsYXJhdGlvbnMmJmUuZ2V0U291cmNlRmlsZU9mTm9kZShyLmRlY2xhcmF0aW9uc1swXSksTWU9ZS5pc1BsYWluSnNGaWxlKHoseWUuY2hlY2tKcyksJGU9ZS5pc1BsYWluSnNGaWxlKG1lLHllLmNoZWNrSnMpLHRyPXRuKGkpO2lmKHomJm1lJiZkbiYmIXMmJnohPT1tZSl7dmFyIGRyPWUuY29tcGFyZVBhdGhzKHoucGF0aCxtZS5wYXRoKT09PS0xP3o6bWUsRHI9ZHI9PT16P21lOnosUXI9ZS5nZXRPclVwZGF0ZShkbixcIlwiLmNvbmNhdChkci5wYXRoLFwifFwiKS5jb25jYXQoRHIucGF0aCksZnVuY3Rpb24oKXtyZXR1cm57Zmlyc3RGaWxlOmRyLHNlY29uZEZpbGU6RHIsY29uZmxpY3RpbmdTeW1ib2xzOm5ldyBlLk1hcH19KSxsaT1lLmdldE9yVXBkYXRlKFFyLmNvbmZsaWN0aW5nU3ltYm9scyx0cixmdW5jdGlvbigpe3JldHVybntpc0Jsb2NrU2NvcGVkOnUsZmlyc3RGaWxlTG9jYXRpb25zOltdLHNlY29uZEZpbGVMb2NhdGlvbnM6W119fSk7TWV8fFRpKGxpLmZpcnN0RmlsZUxvY2F0aW9ucyxpKSwkZXx8VGkobGkuc2Vjb25kRmlsZUxvY2F0aW9ucyxyKX1lbHNlIE1lfHxDbChpLGgsdHIsciksJGV8fENsKHIsaCx0cixpKX1yZXR1cm4gcjtmdW5jdGlvbiBUaShDaSwkaSl7aWYoJGkuZGVjbGFyYXRpb25zKWZvcih2YXIgWmk9MCxxdD0kaS5kZWNsYXJhdGlvbnM7Wmk8cXQubGVuZ3RoO1ppKyspe3ZhciBOdD1xdFtaaV07ZS5wdXNoSWZVbmlxdWUoQ2ksTnQpfX19ZnVuY3Rpb24gQ2wocixpLHQsbyl7ZS5mb3JFYWNoKHIuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHMpe2NfKHMsaSx0LG8uZGVjbGFyYXRpb25zKX0pfWZ1bmN0aW9uIGNfKHIsaSx0LG8pe2Zvcih2YXIgcz0oZS5nZXRFeHBhbmRvSW5pdGlhbGl6ZXIociwhMSk/ZS5nZXROYW1lT2ZFeHBhbmRvKHIpOmUuZ2V0TmFtZU9mRGVjbGFyYXRpb24ocikpfHxyLHU9Wm8ocyxpLHQpLGg9ZnVuY3Rpb24oJGUpe3ZhciB0cj0oZS5nZXRFeHBhbmRvSW5pdGlhbGl6ZXIoJGUsITEpP2UuZ2V0TmFtZU9mRXhwYW5kbygkZSk6ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbigkZSkpfHwkZTtpZih0cj09PXMpcmV0dXJuXCJjb250aW51ZVwiO3UucmVsYXRlZEluZm9ybWF0aW9uPXUucmVsYXRlZEluZm9ybWF0aW9ufHxbXTt2YXIgZHI9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSh0cixlLkRpYWdub3N0aWNzLl8wX3dhc19hbHNvX2RlY2xhcmVkX2hlcmUsdCksRHI9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSh0cixlLkRpYWdub3N0aWNzLmFuZF9oZXJlKTtpZihlLmxlbmd0aCh1LnJlbGF0ZWRJbmZvcm1hdGlvbik+PTV8fGUuc29tZSh1LnJlbGF0ZWRJbmZvcm1hdGlvbixmdW5jdGlvbihRcil7cmV0dXJuIGUuY29tcGFyZURpYWdub3N0aWNzKFFyLERyKT09PTB8fGUuY29tcGFyZURpYWdub3N0aWNzKFFyLGRyKT09PTB9KSlyZXR1cm5cImNvbnRpbnVlXCI7ZS5hZGRSZWxhdGVkSW5mbyh1LGUubGVuZ3RoKHUucmVsYXRlZEluZm9ybWF0aW9uKT9Ecjpkcil9LHo9MCxtZT1vfHxlLmVtcHR5QXJyYXk7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel07aChNZSl9fWZ1bmN0aW9uIGhwKHIsaSl7aWYoIShyIT1udWxsJiZyLnNpemUpKXJldHVybiBpO2lmKCEoaSE9bnVsbCYmaS5zaXplKSlyZXR1cm4gcjt2YXIgdD1lLmNyZWF0ZVN5bWJvbFRhYmxlKCk7cmV0dXJuIGd1KHQsciksZ3UodCxpKSx0fWZ1bmN0aW9uIGd1KHIsaSx0KXt0PT09dm9pZCAwJiYodD0hMSksaS5mb3JFYWNoKGZ1bmN0aW9uKG8scyl7dmFyIHU9ci5nZXQocyk7ci5zZXQocyx1P0JmKHUsbyx0KTpvKX0pfWZ1bmN0aW9uIERwKHIpe3ZhciBpLHQsbyxzPXIucGFyZW50O2lmKCgoaT1zLnN5bWJvbC5kZWNsYXJhdGlvbnMpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aVswXSkhPT1zKXtlLkRlYnVnLmFzc2VydChzLnN5bWJvbC5kZWNsYXJhdGlvbnMubGVuZ3RoPjEpO3JldHVybn1pZihlLmlzR2xvYmFsU2NvcGVBdWdtZW50YXRpb24ocykpZ3UoaWkscy5zeW1ib2wuZXhwb3J0cyk7ZWxzZXt2YXIgdT1yLnBhcmVudC5wYXJlbnQuZmxhZ3MmMTY3NzcyMTY/dm9pZCAwOmUuRGlhZ25vc3RpY3MuSW52YWxpZF9tb2R1bGVfbmFtZV9pbl9hdWdtZW50YXRpb25fbW9kdWxlXzBfY2Fubm90X2JlX2ZvdW5kLGg9UGwocixyLHUsITApO2lmKCFoKXJldHVybjtpZihoPVVzKGgpLGguZmxhZ3MmMTkyMClpZihlLnNvbWUoUyxmdW5jdGlvbihRcil7cmV0dXJuIGg9PT1Rci5zeW1ib2x9KSl7dmFyIHo9QmYocy5zeW1ib2wsaCwhMCk7Q2V8fChDZT1uZXcgZS5NYXApLENlLnNldChyLnRleHQseil9ZWxzZXtpZigoKHQ9aC5leHBvcnRzKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZ2V0KFwiX19leHBvcnRcIikpJiYoKG89cy5zeW1ib2wuZXhwb3J0cyk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLnNpemUpKWZvcih2YXIgbWU9SnYoaCxcInJlc29sdmVkRXhwb3J0c1wiKSxNZT0wLCRlPWUuYXJyYXlGcm9tKHMuc3ltYm9sLmV4cG9ydHMuZW50cmllcygpKTtNZTwkZS5sZW5ndGg7TWUrKyl7dmFyIHRyPSRlW01lXSxkcj10clswXSxEcj10clsxXTttZS5oYXMoZHIpJiYhaC5leHBvcnRzLmhhcyhkcikmJkJmKG1lLmdldChkciksRHIpfUJmKGgscy5zeW1ib2wpfWVsc2UgWHIocixlLkRpYWdub3N0aWNzLkNhbm5vdF9hdWdtZW50X21vZHVsZV8wX2JlY2F1c2VfaXRfcmVzb2x2ZXNfdG9fYV9ub25fbW9kdWxlX2VudGl0eSxyLnRleHQpfX1mdW5jdGlvbiBzZChyLGksdCl7aS5mb3JFYWNoKGZ1bmN0aW9uKHMsdSl7dmFyIGg9ci5nZXQodSk7aD9lLmZvckVhY2goaC5kZWNsYXJhdGlvbnMsbyhlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHUpLHQpKTpyLnNldCh1LHMpfSk7ZnVuY3Rpb24gbyhzLHUpe3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gcm4uYWRkKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoaCx1LHMpKX19fWZ1bmN0aW9uIEFhKHIpe2lmKHIuZmxhZ3MmMzM1NTQ0MzIpcmV0dXJuIHI7dmFyIGk9eShyKTtyZXR1cm4gWWFbaV18fChZYVtpXT1uZXcgWCl9ZnVuY3Rpb24gdmEocil7dmFyIGk9QShyKTtyZXR1cm4gZHVbaV18fChkdVtpXT1uZXcgJCl9ZnVuY3Rpb24gQ3Uocil7cmV0dXJuIHIua2luZD09PTMwNSYmIWUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUocil9ZnVuY3Rpb24gcXMocixpLHQpe2lmKHQpe3ZhciBvPXNvKHIuZ2V0KGkpKTtpZihvKXtpZihlLkRlYnVnLmFzc2VydCgoZS5nZXRDaGVja0ZsYWdzKG8pJjEpPT09MCxcIlNob3VsZCBuZXZlciBnZXQgYW4gaW5zdGFudGlhdGVkIHN5bWJvbCBoZXJlLlwiKSxvLmZsYWdzJnQpcmV0dXJuIG87aWYoby5mbGFncyYyMDk3MTUyKXt2YXIgcz1QcyhvKTtpZihzPT09eGV8fHMuZmxhZ3MmdClyZXR1cm4gb319fX1mdW5jdGlvbiBjZChyLGkpe3ZhciB0PXIucGFyZW50LG89ci5wYXJlbnQucGFyZW50LHM9cXModC5sb2NhbHMsaSwxMTE1NTEpLHU9cXMoTmYoby5zeW1ib2wpLGksMTExNTUxKTtyZXR1cm4gcyYmdT9bcyx1XTplLkRlYnVnLmZhaWwoXCJUaGVyZSBzaG91bGQgZXhpc3QgdHdvIHN5bWJvbHMsIG9uZSBhcyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBhbmQgb25lIGFzIHBhcmFtZXRlciBkZWNsYXJhdGlvblwiKX1mdW5jdGlvbiBucyhyLGkpe3ZhciB0PWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKSxvPWUuZ2V0U291cmNlRmlsZU9mTm9kZShpKSxzPWUuZ2V0RW5jbG9zaW5nQmxvY2tTY29wZUNvbnRhaW5lcihyKTtpZih0IT09byl7aWYoZXImJih0LmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yfHxvLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yKXx8IWUub3V0RmlsZSh5ZSl8fF9tKGkpfHxyLmZsYWdzJjE2Nzc3MjE2fHxNZShpLHIpKXJldHVybiEwO3ZhciB1PWwuZ2V0U291cmNlRmlsZXMoKTtyZXR1cm4gdS5pbmRleE9mKHQpPD11LmluZGV4T2Yobyl9aWYoci5wb3M8PWkucG9zJiYhKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHIpJiZlLmlzVGhpc1Byb3BlcnR5KGkucGFyZW50KSYmIXIuaW5pdGlhbGl6ZXImJiFyLmV4Y2xhbWF0aW9uVG9rZW4pKXtpZihyLmtpbmQ9PT0yMDMpe3ZhciBoPWUuZ2V0QW5jZXN0b3IoaSwyMDMpO3JldHVybiBoP2UuZmluZEFuY2VzdG9yKGgsZS5pc0JpbmRpbmdFbGVtZW50KSE9PWUuZmluZEFuY2VzdG9yKHIsZS5pc0JpbmRpbmdFbGVtZW50KXx8ci5wb3M8aC5wb3M6bnMoZS5nZXRBbmNlc3RvcihyLDI1NCksaSl9ZWxzZXtpZihyLmtpbmQ9PT0yNTQpcmV0dXJuIW1lKHIsaSk7aWYoZS5pc0NsYXNzRGVjbGFyYXRpb24ocikpcmV0dXJuIWUuZmluZEFuY2VzdG9yKGksZnVuY3Rpb24odHIpe3JldHVybiBlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUodHIpJiZ0ci5wYXJlbnQucGFyZW50PT09cn0pO2lmKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHIpKXJldHVybiEkZShyLGksITEpO2lmKGUuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKHIsci5wYXJlbnQpKXJldHVybiEoZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KHllKT09PTk5JiZpciYmZS5nZXRDb250YWluaW5nQ2xhc3Mocik9PT1lLmdldENvbnRhaW5pbmdDbGFzcyhpKSYmTWUoaSxyKSl9cmV0dXJuITB9aWYoaS5wYXJlbnQua2luZD09PTI3NXx8aS5wYXJlbnQua2luZD09PTI3MSYmaS5wYXJlbnQuaXNFeHBvcnRFcXVhbHN8fGkua2luZD09PTI3MSYmaS5pc0V4cG9ydEVxdWFsc3x8ISEoaS5mbGFncyY4Mzg4NjA4KXx8X20oaSl8fHooKSlyZXR1cm4hMDtpZihNZShpLHIpKXJldHVybiBlLmdldEVtaXRTY3JpcHRUYXJnZXQoeWUpPT09OTkmJmlyJiZlLmdldENvbnRhaW5pbmdDbGFzcyhyKSYmKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHIpfHxlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihyLHIucGFyZW50KSk/ISRlKHIsaSwhMCk6ITA7cmV0dXJuITE7ZnVuY3Rpb24geigpe3JldHVybiEhZS5maW5kQW5jZXN0b3IoaSxmdW5jdGlvbih0cil7cmV0dXJuIGUuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbih0cil8fGUuaXNUeXBlQWxpYXNEZWNsYXJhdGlvbih0cil9KX1mdW5jdGlvbiBtZSh0cixkcil7c3dpdGNoKHRyLnBhcmVudC5wYXJlbnQua2luZCl7Y2FzZSAyMzc6Y2FzZSAyNDI6Y2FzZSAyNDQ6aWYob2woZHIsdHIscykpcmV0dXJuITA7YnJlYWt9dmFyIERyPXRyLnBhcmVudC5wYXJlbnQ7cmV0dXJuIGUuaXNGb3JJbk9yT2ZTdGF0ZW1lbnQoRHIpJiZvbChkcixEci5leHByZXNzaW9uLHMpfWZ1bmN0aW9uIE1lKHRyLGRyKXtyZXR1cm4hIWUuZmluZEFuY2VzdG9yKHRyLGZ1bmN0aW9uKERyKXtpZihEcj09PXMpcmV0dXJuXCJxdWl0XCI7aWYoZS5pc0Z1bmN0aW9uTGlrZShEcikpcmV0dXJuITA7aWYoZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihEcikpcmV0dXJuIGRyLnBvczx0ci5wb3M7dmFyIFFyPWUudHJ5Q2FzdChEci5wYXJlbnQsZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24pO2lmKFFyKXt2YXIgbGk9UXIuaW5pdGlhbGl6ZXI9PT1EcjtpZihsaSlpZihlLmlzU3RhdGljKERyLnBhcmVudCkpe2lmKGRyLmtpbmQ9PT0xNjkpcmV0dXJuITA7aWYoZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oZHIpJiZlLmdldENvbnRhaW5pbmdDbGFzcyh0cik9PT1lLmdldENvbnRhaW5pbmdDbGFzcyhkcikpe3ZhciBUaT1kci5uYW1lO2lmKGUuaXNJZGVudGlmaWVyKFRpKXx8ZS5pc1ByaXZhdGVJZGVudGlmaWVyKFRpKSl7dmFyIENpPUp0KEV0KGRyKSksJGk9ZS5maWx0ZXIoZHIucGFyZW50Lm1lbWJlcnMsZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbik7aWYoRE0oVGksQ2ksJGksZHIucGFyZW50LnBvcyxEci5wb3MpKXJldHVybiEwfX19ZWxzZXt2YXIgWmk9ZHIua2luZD09PTE2NyYmIWUuaXNTdGF0aWMoZHIpO2lmKCFaaXx8ZS5nZXRDb250YWluaW5nQ2xhc3ModHIpIT09ZS5nZXRDb250YWluaW5nQ2xhc3MoZHIpKXJldHVybiEwfX1yZXR1cm4hMX0pfWZ1bmN0aW9uICRlKHRyLGRyLERyKXtpZihkci5lbmQ+dHIuZW5kKXJldHVybiExO3ZhciBRcj1lLmZpbmRBbmNlc3RvcihkcixmdW5jdGlvbihsaSl7aWYobGk9PT10cilyZXR1cm5cInF1aXRcIjtzd2l0Y2gobGkua2luZCl7Y2FzZSAyMTQ6cmV0dXJuITA7Y2FzZSAxNjc6cmV0dXJuIERyJiYoZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24odHIpJiZsaS5wYXJlbnQ9PT10ci5wYXJlbnR8fGUuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKHRyLHRyLnBhcmVudCkmJmxpLnBhcmVudD09PXRyLnBhcmVudC5wYXJlbnQpP1wicXVpdFwiOiEwO2Nhc2UgMjM1OnN3aXRjaChsaS5wYXJlbnQua2luZCl7Y2FzZSAxNzI6Y2FzZSAxNjk6Y2FzZSAxNzM6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX1kZWZhdWx0OnJldHVybiExfX0pO3JldHVybiBRcj09PXZvaWQgMH19ZnVuY3Rpb24gbmwocixpLHQpe3ZhciBvPWUuZ2V0RW1pdFNjcmlwdFRhcmdldCh5ZSkscz1pO2lmKGUuaXNQYXJhbWV0ZXIodCkmJnMuYm9keSYmci52YWx1ZURlY2xhcmF0aW9uJiZyLnZhbHVlRGVjbGFyYXRpb24ucG9zPj1zLmJvZHkucG9zJiZyLnZhbHVlRGVjbGFyYXRpb24uZW5kPD1zLmJvZHkuZW5kJiZvPj0yKXt2YXIgdT12YShzKTtyZXR1cm4gdS5kZWNsYXJhdGlvblJlcXVpcmVzU2NvcGVDaGFuZ2U9PT12b2lkIDAmJih1LmRlY2xhcmF0aW9uUmVxdWlyZXNTY29wZUNoYW5nZT1lLmZvckVhY2gocy5wYXJhbWV0ZXJzLGgpfHwhMSksIXUuZGVjbGFyYXRpb25SZXF1aXJlc1Njb3BlQ2hhbmdlfXJldHVybiExO2Z1bmN0aW9uIGgobWUpe3JldHVybiB6KG1lLm5hbWUpfHwhIW1lLmluaXRpYWxpemVyJiZ6KG1lLmluaXRpYWxpemVyKX1mdW5jdGlvbiB6KG1lKXtzd2l0Y2gobWUua2luZCl7Y2FzZSAyMTQ6Y2FzZSAyMTM6Y2FzZSAyNTY6Y2FzZSAxNzE6cmV0dXJuITE7Y2FzZSAxNjk6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAyOTY6cmV0dXJuIHoobWUubmFtZSk7Y2FzZSAxNjc6cmV0dXJuIGUuaGFzU3RhdGljTW9kaWZpZXIobWUpP288OTl8fCFpcjp6KG1lLm5hbWUpO2RlZmF1bHQ6cmV0dXJuIGUuaXNOdWxsaXNoQ29hbGVzY2UobWUpfHxlLmlzT3B0aW9uYWxDaGFpbihtZSk/bzw3OmUuaXNCaW5kaW5nRWxlbWVudChtZSkmJm1lLmRvdERvdERvdFRva2VuJiZlLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4obWUucGFyZW50KT9vPDQ6ZS5pc1R5cGVOb2RlKG1lKT8hMTplLmZvckVhY2hDaGlsZChtZSx6KXx8ITF9fX1mdW5jdGlvbiBoYyhyKXtyZXR1cm4gZS5pc0Fzc2VydGlvbkV4cHJlc3Npb24ocikmJmUuaXNDb25zdFR5cGVSZWZlcmVuY2Uoci50eXBlKXx8ZS5pc0pTRG9jVHlwZVRhZyhyKSYmZS5pc0NvbnN0VHlwZVJlZmVyZW5jZShyLnR5cGVFeHByZXNzaW9uKX1mdW5jdGlvbiBlcyhyLGksdCxvLHMsdSxoLHope3JldHVybiBoPT09dm9pZCAwJiYoaD0hMSksej09PXZvaWQgMCYmKHo9ITApLHVfKHIsaSx0LG8scyx1LGgseixxcyl9ZnVuY3Rpb24gdV8ocixpLHQsbyxzLHUsaCx6LG1lKXt2YXIgTWUsJGUsdHIsZHI9cixEcixRcixsaSxUaSxDaSwkaT0hMSxaaT1yLHF0LE50PSExO2U6Zm9yKDtyOyl7aWYoaT09PVwiY29uc3RcIiYmaGMocikpcmV0dXJuO2lmKHIubG9jYWxzJiYhQ3UocikmJihEcj1tZShyLmxvY2FscyxpLHQpKSl7dmFyIFJhPSEwO2lmKGUuaXNGdW5jdGlvbkxpa2UocikmJlFyJiZRciE9PXIuYm9keT8odCZEci5mbGFncyY3ODg5NjgmJlFyLmtpbmQhPT0zMjAmJihSYT1Eci5mbGFncyYyNjIxNDQ/UXI9PT1yLnR5cGV8fFFyLmtpbmQ9PT0xNjR8fFFyLmtpbmQ9PT0zNDB8fFFyLmtpbmQ9PT0zNDF8fFFyLmtpbmQ9PT0xNjM6ITEpLHQmRHIuZmxhZ3MmMyYmKG5sKERyLHIsUXIpP1JhPSExOkRyLmZsYWdzJjEmJihSYT1Rci5raW5kPT09MTY0fHxRcj09PXIudHlwZSYmISFlLmZpbmRBbmNlc3RvcihEci52YWx1ZURlY2xhcmF0aW9uLGUuaXNQYXJhbWV0ZXIpKSkpOnIua2luZD09PTE4OSYmKFJhPVFyPT09ci50cnVlVHlwZSksUmEpYnJlYWsgZTtEcj12b2lkIDB9c3dpdGNoKCRpPSRpfHx3XyhyLFFyKSxyLmtpbmQpe2Nhc2UgMzA1OmlmKCFlLmlzRXh0ZXJuYWxPckNvbW1vbkpzTW9kdWxlKHIpKWJyZWFrO050PSEwO2Nhc2UgMjYxOnZhciBjYT0oKE1lPUV0KHIpKT09PW51bGx8fE1lPT09dm9pZCAwP3ZvaWQgMDpNZS5leHBvcnRzKXx8d2U7aWYoci5raW5kPT09MzA1fHxlLmlzTW9kdWxlRGVjbGFyYXRpb24ocikmJnIuZmxhZ3MmMTY3NzcyMTYmJiFlLmlzR2xvYmFsU2NvcGVBdWdtZW50YXRpb24ocikpe2lmKERyPWNhLmdldChcImRlZmF1bHRcIikpe3ZhciBTbj1lLmdldExvY2FsU3ltYm9sRm9yRXhwb3J0RGVmYXVsdChEcik7aWYoU24mJkRyLmZsYWdzJnQmJlNuLmVzY2FwZWROYW1lPT09aSlicmVhayBlO0RyPXZvaWQgMH12YXIgamE9Y2EuZ2V0KGkpO2lmKGphJiZqYS5mbGFncz09PTIwOTcxNTImJihlLmdldERlY2xhcmF0aW9uT2ZLaW5kKGphLDI3NSl8fGUuZ2V0RGVjbGFyYXRpb25PZktpbmQoamEsMjc0KSkpYnJlYWt9aWYoaSE9PVwiZGVmYXVsdFwiJiYoRHI9bWUoY2EsaSx0JjI2MjM0NzUpKSlpZihlLmlzU291cmNlRmlsZShyKSYmci5jb21tb25Kc01vZHVsZUluZGljYXRvciYmISghKCgkZT1Eci5kZWNsYXJhdGlvbnMpPT09bnVsbHx8JGU9PT12b2lkIDApJiYkZS5zb21lKGUuaXNKU0RvY1R5cGVBbGlhcykpKURyPXZvaWQgMDtlbHNlIGJyZWFrIGU7YnJlYWs7Y2FzZSAyNjA6aWYoRHI9bWUoKCh0cj1FdChyKSk9PT1udWxsfHx0cj09PXZvaWQgMD92b2lkIDA6dHIuZXhwb3J0cyl8fHdlLGksdCY4KSlicmVhayBlO2JyZWFrO2Nhc2UgMTY3OmlmKCFlLmlzU3RhdGljKHIpKXt2YXIgRm49VGYoci5wYXJlbnQpO0ZuJiZGbi5sb2NhbHMmJm1lKEZuLmxvY2FscyxpLHQmMTExNTUxKSYmKFRpPXIpfWJyZWFrO2Nhc2UgMjU3OmNhc2UgMjI2OmNhc2UgMjU4OmlmKERyPW1lKEV0KHIpLm1lbWJlcnN8fHdlLGksdCY3ODg5NjgpKXtpZighbGQoRHIscikpe0RyPXZvaWQgMDticmVha31pZihRciYmZS5pc1N0YXRpYyhRcikpe1hyKFppLGUuRGlhZ25vc3RpY3MuU3RhdGljX21lbWJlcnNfY2Fubm90X3JlZmVyZW5jZV9jbGFzc190eXBlX3BhcmFtZXRlcnMpO3JldHVybn1icmVhayBlfWlmKHIua2luZD09PTIyNiYmdCYzMil7dmFyIHduPXIubmFtZTtpZih3biYmaT09PXduLmVzY2FwZWRUZXh0KXtEcj1yLnN5bWJvbDticmVhayBlfX1icmVhaztjYXNlIDIyODppZihRcj09PXIuZXhwcmVzc2lvbiYmci5wYXJlbnQudG9rZW49PT05NCl7dmFyIFRuPXIucGFyZW50LnBhcmVudDtpZihlLmlzQ2xhc3NMaWtlKFRuKSYmKERyPW1lKEV0KFRuKS5tZW1iZXJzLGksdCY3ODg5NjgpKSl7byYmWHIoWmksZS5EaWFnbm9zdGljcy5CYXNlX2NsYXNzX2V4cHJlc3Npb25zX2Nhbm5vdF9yZWZlcmVuY2VfY2xhc3NfdHlwZV9wYXJhbWV0ZXJzKTtyZXR1cm59fWJyZWFrO2Nhc2UgMTYyOmlmKHF0PXIucGFyZW50LnBhcmVudCwoZS5pc0NsYXNzTGlrZShxdCl8fHF0LmtpbmQ9PT0yNTgpJiYoRHI9bWUoRXQocXQpLm1lbWJlcnMsaSx0Jjc4ODk2OCkpKXtYcihaaSxlLkRpYWdub3N0aWNzLkFfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV9jYW5ub3RfcmVmZXJlbmNlX2FfdHlwZV9wYXJhbWV0ZXJfZnJvbV9pdHNfY29udGFpbmluZ190eXBlKTtyZXR1cm59YnJlYWs7Y2FzZSAyMTQ6aWYoZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KHllKT49MilicmVhaztjYXNlIDE2OTpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDI1NjppZih0JjMmJmk9PT1cImFyZ3VtZW50c1wiKXtEcj1vcjticmVhayBlfWJyZWFrO2Nhc2UgMjEzOmlmKHQmMyYmaT09PVwiYXJndW1lbnRzXCIpe0RyPW9yO2JyZWFrIGV9aWYodCYxNil7dmFyIEVvPXIubmFtZTtpZihFbyYmaT09PUVvLmVzY2FwZWRUZXh0KXtEcj1yLnN5bWJvbDticmVhayBlfX1icmVhaztjYXNlIDE2NTpyLnBhcmVudCYmci5wYXJlbnQua2luZD09PTE2NCYmKHI9ci5wYXJlbnQpLHIucGFyZW50JiYoZS5pc0NsYXNzRWxlbWVudChyLnBhcmVudCl8fHIucGFyZW50LmtpbmQ9PT0yNTcpJiYocj1yLnBhcmVudCk7YnJlYWs7Y2FzZSAzNDU6Y2FzZSAzMzg6Y2FzZSAzMzk6dmFyIGx0PWUuZ2V0SlNEb2NSb290KHIpO2x0JiYocj1sdC5wYXJlbnQpO2JyZWFrO2Nhc2UgMTY0OlFyJiYoUXI9PT1yLmluaXRpYWxpemVyfHxRcj09PXIubmFtZSYmZS5pc0JpbmRpbmdQYXR0ZXJuKFFyKSkmJihDaXx8KENpPXIpKTticmVhaztjYXNlIDIwMzpRciYmKFFyPT09ci5pbml0aWFsaXplcnx8UXI9PT1yLm5hbWUmJmUuaXNCaW5kaW5nUGF0dGVybihRcikpJiZlLmlzUGFyYW1ldGVyRGVjbGFyYXRpb24ocikmJiFDaSYmKENpPXIpO2JyZWFrO2Nhc2UgMTkwOmlmKHQmMjYyMTQ0KXt2YXIgaXQ9ci50eXBlUGFyYW1ldGVyLm5hbWU7aWYoaXQmJmk9PT1pdC5lc2NhcGVkVGV4dCl7RHI9ci50eXBlUGFyYW1ldGVyLnN5bWJvbDticmVhayBlfX1icmVha311ZChyKSYmKGxpPXIpLFFyPXIscj1lLmlzSlNEb2NUZW1wbGF0ZVRhZyhyKT9lLmdldEVmZmVjdGl2ZUNvbnRhaW5lckZvckpTRG9jVGVtcGxhdGVUYWcocil8fHIucGFyZW50OihlLmlzSlNEb2NQYXJhbWV0ZXJUYWcocil8fGUuaXNKU0RvY1JldHVyblRhZyhyKSkmJmUuZ2V0SG9zdFNpZ25hdHVyZUZyb21KU0RvYyhyKXx8ci5wYXJlbnR9aWYodSYmRHImJighbGl8fERyIT09bGkuc3ltYm9sKSYmKERyLmlzUmVmZXJlbmNlZHw9dCksIURyKXtpZihRciYmKGUuRGVidWcuYXNzZXJ0KFFyLmtpbmQ9PT0zMDUpLFFyLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yJiZpPT09XCJleHBvcnRzXCImJnQmUXIuc3ltYm9sLmZsYWdzKSlyZXR1cm4gUXIuc3ltYm9sO2h8fChEcj1tZShpaSxpLHQpKX1pZighRHImJmRyJiZlLmlzSW5KU0ZpbGUoZHIpJiZkci5wYXJlbnQmJmUuaXNSZXF1aXJlQ2FsbChkci5wYXJlbnQsITEpKXJldHVybiBxcjtpZighRHIpe28mJmZlKGZ1bmN0aW9uKCl7aWYoIVppfHwhZmQoWmksaSxzKSYmIWJwKFppKSYmIVRwKFppLGksdCkmJiFPXyhaaSxpKSYmIUZfKFppLGksdCkmJiFNXyhaaSxpLHQpJiYhX2QoWmksaSx0KSl7dmFyIElhPXZvaWQgMDtpZih6JiZVdTxRbCl7SWE9S2IoZHIsaSx0KTt2YXIgUXQ9KElhPT1udWxsP3ZvaWQgMDpJYS52YWx1ZURlY2xhcmF0aW9uKSYmZS5pc0FtYmllbnRNb2R1bGUoSWEudmFsdWVEZWNsYXJhdGlvbikmJmUuaXNHbG9iYWxTY29wZUF1Z21lbnRhdGlvbihJYS52YWx1ZURlY2xhcmF0aW9uKTtpZihRdCYmKElhPXZvaWQgMCksSWEpe3ZhciBLYT10bihJYSksY249V2IoZHIsSWEsITEpLFVuPXQ9PT0xOTIwfHxzJiZ0eXBlb2YgcyE9XCJzdHJpbmdcIiYmZS5ub2RlSXNTeW50aGVzaXplZChzKT9lLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX25hbWVzcGFjZV8wX0RpZF95b3VfbWVhbl8xOmNuP2UuRGlhZ25vc3RpY3MuQ291bGRfbm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl8xOmUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl8xLG9hPXljKFppLFVuLGt1KHMpLEthKTtMcyghY24sb2EpLElhLnZhbHVlRGVjbGFyYXRpb24mJmUuYWRkUmVsYXRlZEluZm8ob2EsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShJYS52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuXzBfaXNfZGVjbGFyZWRfaGVyZSxLYSkpfX1pZighSWEmJnMpe3ZhciBNbj0kNShzKTtNbj9YcihaaSxvLGt1KHMpLE1uKTpYcihaaSxvLGt1KHMpKX1VdSsrfX0pO3JldHVybn1pZihUaSYmIShlLmdldEVtaXRTY3JpcHRUYXJnZXQoeWUpPT09OTkmJmlyKSl7dmFyIFl0PVRpLm5hbWU7WHIoWmksZS5EaWFnbm9zdGljcy5Jbml0aWFsaXplcl9vZl9pbnN0YW5jZV9tZW1iZXJfdmFyaWFibGVfMF9jYW5ub3RfcmVmZXJlbmNlX2lkZW50aWZpZXJfMV9kZWNsYXJlZF9pbl90aGVfY29uc3RydWN0b3IsZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhZdCksa3UocykpO3JldHVybn1yZXR1cm4gbyYmZmUoZnVuY3Rpb24oKXtpZihaaSYmKHQmMnx8KHQmMzJ8fHQmMzg0KSYmKHQmMTExNTUxKT09PTExMTU1MSkpe3ZhciBJYT1jdShEcik7KElhLmZsYWdzJjJ8fElhLmZsYWdzJjMyfHxJYS5mbGFncyYzODQpJiZFcChJYSxaaSl9aWYoRHImJk50JiYodCYxMTE1NTEpPT09MTExNTUxJiYhKGRyLmZsYWdzJjgzODg2MDgpKXt2YXIgUXQ9c28oRHIpO2UubGVuZ3RoKFF0LmRlY2xhcmF0aW9ucykmJmUuZXZlcnkoUXQuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKExuKXtyZXR1cm4gZS5pc05hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uKExuKXx8ZS5pc1NvdXJjZUZpbGUoTG4pJiYhIUxuLnN5bWJvbC5nbG9iYWxFeHBvcnRzfSkmJkljKCF5ZS5hbGxvd1VtZEdsb2JhbEFjY2VzcyxaaSxlLkRpYWdub3N0aWNzLl8wX3JlZmVyc190b19hX1VNRF9nbG9iYWxfYnV0X3RoZV9jdXJyZW50X2ZpbGVfaXNfYV9tb2R1bGVfQ29uc2lkZXJfYWRkaW5nX2FuX2ltcG9ydF9pbnN0ZWFkLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSkpfWlmKERyJiZDaSYmISRpJiYodCYxMTE1NTEpPT09MTExNTUxKXt2YXIgS2E9c28oZGcoRHIpKSxjbj1lLmdldFJvb3REZWNsYXJhdGlvbihDaSk7S2E9PT1FdChDaSk/WHIoWmksZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9jYW5ub3RfcmVmZXJlbmNlX2l0c2VsZixlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKENpLm5hbWUpKTpLYS52YWx1ZURlY2xhcmF0aW9uJiZLYS52YWx1ZURlY2xhcmF0aW9uLnBvcz5DaS5wb3MmJmNuLnBhcmVudC5sb2NhbHMmJm1lKGNuLnBhcmVudC5sb2NhbHMsS2EuZXNjYXBlZE5hbWUsdCk9PT1LYSYmWHIoWmksZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9jYW5ub3RfcmVmZXJlbmNlX2lkZW50aWZpZXJfMV9kZWNsYXJlZF9hZnRlcl9pdCxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKENpLm5hbWUpLGUuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcoWmkpKX1pZihEciYmWmkmJnQmMTExNTUxJiZEci5mbGFncyYyMDk3MTUyJiYhKERyLmZsYWdzJjExMTU1MSkmJiFlLmlzVmFsaWRUeXBlT25seUFsaWFzVXNlU2l0ZShaaSkpe3ZhciBVbj12dShEcik7aWYoVW4pe3ZhciBvYT1Vbi5raW5kPT09Mjc1P2UuRGlhZ25vc3RpY3MuXzBfY2Fubm90X2JlX3VzZWRfYXNfYV92YWx1ZV9iZWNhdXNlX2l0X3dhc19leHBvcnRlZF91c2luZ19leHBvcnRfdHlwZTplLkRpYWdub3N0aWNzLl8wX2Nhbm5vdF9iZV91c2VkX2FzX2FfdmFsdWVfYmVjYXVzZV9pdF93YXNfaW1wb3J0ZWRfdXNpbmdfaW1wb3J0X3R5cGUsTW49ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhpKTtKZihYcihaaSxvYSxNbiksVW4sTW4pfX19KSxEcn1mdW5jdGlvbiBKZihyLGksdCl7cmV0dXJuIGk/ZS5hZGRSZWxhdGVkSW5mbyhyLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoaSxpLmtpbmQ9PT0yNzU/ZS5EaWFnbm9zdGljcy5fMF93YXNfZXhwb3J0ZWRfaGVyZTplLkRpYWdub3N0aWNzLl8wX3dhc19pbXBvcnRlZF9oZXJlLHQpKTpyfWZ1bmN0aW9uIHdfKHIsaSl7cmV0dXJuIHIua2luZCE9PTIxNCYmci5raW5kIT09MjEzP2UuaXNUeXBlUXVlcnlOb2RlKHIpfHwoZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKHIpfHxyLmtpbmQ9PT0xNjcmJiFlLmlzU3RhdGljKHIpKSYmKCFpfHxpIT09ci5uYW1lKTppJiZpPT09ci5uYW1lPyExOnIuYXN0ZXJpc2tUb2tlbnx8ZS5oYXNTeW50YWN0aWNNb2RpZmllcihyLDI1Nik/ITA6IWUuZ2V0SW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uKHIpfWZ1bmN0aW9uIHVkKHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjU3OmNhc2UgMjU4OmNhc2UgMjYwOmNhc2UgMjU5OmNhc2UgMjYxOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGt1KHIpe3JldHVybiBlLmlzU3RyaW5nKHIpP2UudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMocik6ZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhyKX1mdW5jdGlvbiBsZChyLGkpe2lmKHIuZGVjbGFyYXRpb25zKWZvcih2YXIgdD0wLG89ci5kZWNsYXJhdGlvbnM7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aWYocy5raW5kPT09MTYzKXt2YXIgdT1lLmlzSlNEb2NUZW1wbGF0ZVRhZyhzLnBhcmVudCk/ZS5nZXRKU0RvY0hvc3Qocy5wYXJlbnQpOnMucGFyZW50O2lmKHU9PT1pKXJldHVybiEoZS5pc0pTRG9jVGVtcGxhdGVUYWcocy5wYXJlbnQpJiZlLmZpbmQocy5wYXJlbnQucGFyZW50LnRhZ3MsZS5pc0pTRG9jVHlwZUFsaWFzKSl9fXJldHVybiExfWZ1bmN0aW9uIGZkKHIsaSx0KXtpZighZS5pc0lkZW50aWZpZXIocil8fHIuZXNjYXBlZFRleHQhPT1pfHxRNihyKXx8X20ocikpcmV0dXJuITE7Zm9yKHZhciBvPWUuZ2V0VGhpc0NvbnRhaW5lcihyLCExKSxzPW87czspe2lmKGUuaXNDbGFzc0xpa2Uocy5wYXJlbnQpKXt2YXIgdT1FdChzLnBhcmVudCk7aWYoIXUpYnJlYWs7dmFyIGg9SnQodSk7aWYoYmkoaCxpKSlyZXR1cm4gWHIocixlLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fdGhlX3N0YXRpY19tZW1iZXJfMV8wLGt1KHQpLHRuKHUpKSwhMDtpZihzPT09byYmIWUuaXNTdGF0aWMocykpe3ZhciB6PWdvKHUpLnRoaXNUeXBlO2lmKGJpKHosaSkpcmV0dXJuIFhyKHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzBfRGlkX3lvdV9tZWFuX3RoZV9pbnN0YW5jZV9tZW1iZXJfdGhpc18wLGt1KHQpKSwhMH19cz1zLnBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBicChyKXt2YXIgaT1TcChyKTtyZXR1cm4gaSYmRHMoaSw2NCwhMCk/KFhyKHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfZXh0ZW5kX2FuX2ludGVyZmFjZV8wX0RpZF95b3VfbWVhbl9pbXBsZW1lbnRzLGUuZ2V0VGV4dE9mTm9kZShpKSksITApOiExfWZ1bmN0aW9uIFNwKHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgNzk6Y2FzZSAyMDY6cmV0dXJuIHIucGFyZW50P1NwKHIucGFyZW50KTp2b2lkIDA7Y2FzZSAyMjg6aWYoZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKHIuZXhwcmVzc2lvbikpcmV0dXJuIHIuZXhwcmVzc2lvbjtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gVHAocixpLHQpe3ZhciBvPTE5MjB8KGUuaXNJbkpTRmlsZShyKT8xMTE1NTE6MCk7aWYodD09PW8pe3ZhciBzPW9zKGVzKHIsaSw3ODg5Njgmfm8sdm9pZCAwLHZvaWQgMCwhMSkpLHU9ci5wYXJlbnQ7aWYocyl7aWYoZS5pc1F1YWxpZmllZE5hbWUodSkpe2UuRGVidWcuYXNzZXJ0KHUubGVmdD09PXIsXCJTaG91bGQgb25seSBiZSByZXNvbHZpbmcgbGVmdCBzaWRlIG9mIHF1YWxpZmllZCBuYW1lIGFzIGEgbmFtZXNwYWNlXCIpO3ZhciBoPXUucmlnaHQuZXNjYXBlZFRleHQsej1iaShnbyhzKSxoKTtpZih6KXJldHVybiBYcih1LGUuRGlhZ25vc3RpY3MuQ2Fubm90X2FjY2Vzc18wXzFfYmVjYXVzZV8wX2lzX2FfdHlwZV9idXRfbm90X2FfbmFtZXNwYWNlX0RpZF95b3VfbWVhbl90b19yZXRyaWV2ZV90aGVfdHlwZV9vZl90aGVfcHJvcGVydHlfMV9pbl8wX3dpdGhfMF8xLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSksZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhoKSksITB9cmV0dXJuIFhyKHIsZS5EaWFnbm9zdGljcy5fMF9vbmx5X3JlZmVyc190b19hX3R5cGVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV9uYW1lc3BhY2VfaGVyZSxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGkpKSwhMH19cmV0dXJuITF9ZnVuY3Rpb24gX2QocixpLHQpe2lmKHQmNzg4NTg0KXt2YXIgbz1vcyhlcyhyLGksMTExMTI3LHZvaWQgMCx2b2lkIDAsITEpKTtpZihvJiYhKG8uZmxhZ3MmMTkyMCkpcmV0dXJuIFhyKHIsZS5EaWFnbm9zdGljcy5fMF9yZWZlcnNfdG9fYV92YWx1ZV9idXRfaXNfYmVpbmdfdXNlZF9hc19hX3R5cGVfaGVyZV9EaWRfeW91X21lYW5fdHlwZW9mXzAsZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhpKSksITB9cmV0dXJuITF9ZnVuY3Rpb24gamYocil7cmV0dXJuIHI9PT1cImFueVwifHxyPT09XCJzdHJpbmdcInx8cj09PVwibnVtYmVyXCJ8fHI9PT1cImJvb2xlYW5cInx8cj09PVwibmV2ZXJcInx8cj09PVwidW5rbm93blwifWZ1bmN0aW9uIE9fKHIsaSl7cmV0dXJuIGpmKGkpJiZyLnBhcmVudC5raW5kPT09Mjc1PyhYcihyLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2V4cG9ydF8wX09ubHlfbG9jYWxfZGVjbGFyYXRpb25zX2Nhbl9iZV9leHBvcnRlZF9mcm9tX2FfbW9kdWxlLGkpLCEwKTohMX1mdW5jdGlvbiBGXyhyLGksdCl7aWYodCYxMTE1NTEpe2lmKGpmKGkpKXJldHVybiBYcihyLGUuRGlhZ25vc3RpY3MuXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfdmFsdWVfaGVyZSxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGkpKSwhMDt2YXIgbz1vcyhlcyhyLGksNzg4NTQ0LHZvaWQgMCx2b2lkIDAsITEpKTtpZihvJiYhKG8uZmxhZ3MmMTAyNCkpe3ZhciBzPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSk7cmV0dXJuIHhwKGkpP1hyKHIsZS5EaWFnbm9zdGljcy5fMF9vbmx5X3JlZmVyc190b19hX3R5cGVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV92YWx1ZV9oZXJlX0RvX3lvdV9uZWVkX3RvX2NoYW5nZV95b3VyX3RhcmdldF9saWJyYXJ5X1RyeV9jaGFuZ2luZ190aGVfbGliX2NvbXBpbGVyX29wdGlvbl90b19lczIwMTVfb3JfbGF0ZXIscyk6cGQocixvKT9YcihyLGUuRGlhZ25vc3RpY3MuXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfdmFsdWVfaGVyZV9EaWRfeW91X21lYW5fdG9fdXNlXzFfaW5fMCxzLHM9PT1cIktcIj9cIlBcIjpcIktcIik6WHIocixlLkRpYWdub3N0aWNzLl8wX29ubHlfcmVmZXJzX3RvX2FfdHlwZV9idXRfaXNfYmVpbmdfdXNlZF9hc19hX3ZhbHVlX2hlcmUscyksITB9fXJldHVybiExfWZ1bmN0aW9uIHBkKHIsaSl7dmFyIHQ9ZS5maW5kQW5jZXN0b3Ioci5wYXJlbnQsZnVuY3Rpb24ocyl7cmV0dXJuIGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShzKXx8ZS5pc1Byb3BlcnR5U2lnbmF0dXJlKHMpPyExOmUuaXNUeXBlTGl0ZXJhbE5vZGUocyl8fFwicXVpdFwifSk7aWYodCYmdC5tZW1iZXJzLmxlbmd0aD09PTEpe3ZhciBvPWdvKGkpO3JldHVybiEhKG8uZmxhZ3MmMTA0ODU3NikmJkxnKG8sMzg0LCEwKX1yZXR1cm4hMX1mdW5jdGlvbiB4cChyKXtzd2l0Y2gocil7Y2FzZVwiUHJvbWlzZVwiOmNhc2VcIlN5bWJvbFwiOmNhc2VcIk1hcFwiOmNhc2VcIldlYWtNYXBcIjpjYXNlXCJTZXRcIjpjYXNlXCJXZWFrU2V0XCI6cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gTV8ocixpLHQpe2lmKHQmMTExMTI3KXt2YXIgbz1vcyhlcyhyLGksMTAyNCx2b2lkIDAsdm9pZCAwLCExKSk7aWYobylyZXR1cm4gWHIocixlLkRpYWdub3N0aWNzLkNhbm5vdF91c2VfbmFtZXNwYWNlXzBfYXNfYV92YWx1ZSxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGkpKSwhMH1lbHNlIGlmKHQmNzg4NTQ0KXt2YXIgbz1vcyhlcyhyLGksMTUzNix2b2lkIDAsdm9pZCAwLCExKSk7aWYobylyZXR1cm4gWHIocixlLkRpYWdub3N0aWNzLkNhbm5vdF91c2VfbmFtZXNwYWNlXzBfYXNfYV90eXBlLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSkpLCEwfXJldHVybiExfWZ1bmN0aW9uIEVwKHIsaSl7dmFyIHQ7aWYoZS5EZWJ1Zy5hc3NlcnQoISEoci5mbGFncyYyfHxyLmZsYWdzJjMyfHxyLmZsYWdzJjM4NCkpLCEoci5mbGFncyY2NzEwODg4MSYmci5mbGFncyYzMikpe3ZhciBvPSh0PXIuZGVjbGFyYXRpb25zKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZmluZChmdW5jdGlvbihoKXtyZXR1cm4gZS5pc0Jsb2NrT3JDYXRjaFNjb3BlZChoKXx8ZS5pc0NsYXNzTGlrZShoKXx8aC5raW5kPT09MjYwfSk7aWYobz09PXZvaWQgMClyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiY2hlY2tSZXNvbHZlZEJsb2NrU2NvcGVkVmFyaWFibGUgY291bGQgbm90IGZpbmQgYmxvY2stc2NvcGVkIGRlY2xhcmF0aW9uXCIpO2lmKCEoby5mbGFncyYxNjc3NzIxNikmJiFucyhvLGkpKXt2YXIgcz12b2lkIDAsdT1lLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24obykpO3IuZmxhZ3MmMj9zPVhyKGksZS5EaWFnbm9zdGljcy5CbG9ja19zY29wZWRfdmFyaWFibGVfMF91c2VkX2JlZm9yZV9pdHNfZGVjbGFyYXRpb24sdSk6ci5mbGFncyYzMj9zPVhyKGksZS5EaWFnbm9zdGljcy5DbGFzc18wX3VzZWRfYmVmb3JlX2l0c19kZWNsYXJhdGlvbix1KTpyLmZsYWdzJjI1Nj9zPVhyKGksZS5EaWFnbm9zdGljcy5FbnVtXzBfdXNlZF9iZWZvcmVfaXRzX2RlY2xhcmF0aW9uLHUpOihlLkRlYnVnLmFzc2VydCghIShyLmZsYWdzJjEyOCkpLGUuc2hvdWxkUHJlc2VydmVDb25zdEVudW1zKHllKSYmKHM9WHIoaSxlLkRpYWdub3N0aWNzLkVudW1fMF91c2VkX2JlZm9yZV9pdHNfZGVjbGFyYXRpb24sdSkpKSxzJiZlLmFkZFJlbGF0ZWRJbmZvKHMsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShvLGUuRGlhZ25vc3RpY3MuXzBfaXNfZGVjbGFyZWRfaGVyZSx1KSl9fX1mdW5jdGlvbiBvbChyLGksdCl7cmV0dXJuISFpJiYhIWUuZmluZEFuY2VzdG9yKHIsZnVuY3Rpb24obyl7cmV0dXJuIG89PT1pfHwobz09PXR8fGUuaXNGdW5jdGlvbkxpa2UobykmJiFlLmdldEltbWVkaWF0ZWx5SW52b2tlZEZ1bmN0aW9uRXhwcmVzc2lvbihvKT9cInF1aXRcIjohMSl9KX1mdW5jdGlvbiBBdShyKXtzd2l0Y2goci5raW5kKXtjYXNlIDI2NTpyZXR1cm4gcjtjYXNlIDI2NzpyZXR1cm4gci5wYXJlbnQ7Y2FzZSAyNjg6cmV0dXJuIHIucGFyZW50LnBhcmVudDtjYXNlIDI3MDpyZXR1cm4gci5wYXJlbnQucGFyZW50LnBhcmVudDtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gcnUocil7cmV0dXJuIHIuZGVjbGFyYXRpb25zJiZlLmZpbmRMYXN0KHIuZGVjbGFyYXRpb25zLHlmKX1mdW5jdGlvbiB5ZihyKXtyZXR1cm4gci5raW5kPT09MjY1fHxyLmtpbmQ9PT0yNjR8fHIua2luZD09PTI2NyYmISFyLm5hbWV8fHIua2luZD09PTI2OHx8ci5raW5kPT09Mjc0fHxyLmtpbmQ9PT0yNzB8fHIua2luZD09PTI3NXx8ci5raW5kPT09MjcxJiZlLmV4cG9ydEFzc2lnbm1lbnRJc0FsaWFzKHIpfHxlLmlzQmluYXJ5RXhwcmVzc2lvbihyKSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHIpPT09MiYmZS5leHBvcnRBc3NpZ25tZW50SXNBbGlhcyhyKXx8ZS5pc0FjY2Vzc0V4cHJlc3Npb24ocikmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHIucGFyZW50KSYmci5wYXJlbnQubGVmdD09PXImJnIucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzJiZDcChyLnBhcmVudC5yaWdodCl8fHIua2luZD09PTI5N3x8ci5raW5kPT09Mjk2JiZDcChyLmluaXRpYWxpemVyKXx8ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25Jbml0aWFsaXplZFRvQmFyZU9yQWNjZXNzZWRSZXF1aXJlKHIpfWZ1bmN0aW9uIENwKHIpe3JldHVybiBlLmlzQWxpYXNhYmxlRXhwcmVzc2lvbihyKXx8ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihyKSYmU2wocil9ZnVuY3Rpb24gZGQocixpKXt2YXIgdD13YyhyKTtpZih0KXt2YXIgbz1lLmdldExlZnRtb3N0QWNjZXNzRXhwcmVzc2lvbih0LmV4cHJlc3Npb24pLmFyZ3VtZW50c1swXTtyZXR1cm4gZS5pc0lkZW50aWZpZXIodC5uYW1lKT9vcyhiaShIbShvKSx0Lm5hbWUuZXNjYXBlZFRleHQpKTp2b2lkIDB9aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocil8fHIubW9kdWxlUmVmZXJlbmNlLmtpbmQ9PT0yNzcpe3ZhciBzPWFjKHIsZS5nZXRFeHRlcm5hbE1vZHVsZVJlcXVpcmVBcmd1bWVudChyKXx8ZS5nZXRFeHRlcm5hbE1vZHVsZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uRXhwcmVzc2lvbihyKSksdT1VcyhzKTtyZXR1cm4gR2MocixzLHUsITEpLHV9dmFyIGg9Tmwoci5tb2R1bGVSZWZlcmVuY2UsaSk7cmV0dXJuIGtwKHIsaCksaH1mdW5jdGlvbiBrcChyLGkpe2lmKEdjKHIsdm9pZCAwLGksITEpJiYhci5pc1R5cGVPbmx5KXt2YXIgdD12dShFdChyKSksbz10LmtpbmQ9PT0yNzUscz1vP2UuRGlhZ25vc3RpY3MuQW5faW1wb3J0X2FsaWFzX2Nhbm5vdF9yZWZlcmVuY2VfYV9kZWNsYXJhdGlvbl90aGF0X3dhc19leHBvcnRlZF91c2luZ19leHBvcnRfdHlwZTplLkRpYWdub3N0aWNzLkFuX2ltcG9ydF9hbGlhc19jYW5ub3RfcmVmZXJlbmNlX2FfZGVjbGFyYXRpb25fdGhhdF93YXNfaW1wb3J0ZWRfdXNpbmdfaW1wb3J0X3R5cGUsdT1vP2UuRGlhZ25vc3RpY3MuXzBfd2FzX2V4cG9ydGVkX2hlcmU6ZS5EaWFnbm9zdGljcy5fMF93YXNfaW1wb3J0ZWRfaGVyZSxoPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXModC5uYW1lLmVzY2FwZWRUZXh0KTtlLmFkZFJlbGF0ZWRJbmZvKFhyKHIubW9kdWxlUmVmZXJlbmNlLHMpLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUodCx1LGgpKX19ZnVuY3Rpb24gbXUocixpLHQsbyl7dmFyIHM9ci5leHBvcnRzLmdldChcImV4cG9ydD1cIiksdT1zP2JpKEp0KHMpLGkpOnIuZXhwb3J0cy5nZXQoaSksaD1vcyh1LG8pO3JldHVybiBHYyh0LHUsaCwhMSksaH1mdW5jdGlvbiBnZChyKXtyZXR1cm4gZS5pc0V4cG9ydEFzc2lnbm1lbnQocikmJiFyLmlzRXhwb3J0RXF1YWxzfHxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHIsNTEyKXx8ZS5pc0V4cG9ydFNwZWNpZmllcihyKX1mdW5jdGlvbiBoZihyKXtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWxMaWtlKHIpP2UuZ2V0TW9kZUZvclVzYWdlTG9jYXRpb24oZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLHIpOnZvaWQgMH1mdW5jdGlvbiAkbChyLGkpe3JldHVybiByPT09ZS5Nb2R1bGVLaW5kLkVTTmV4dCYmaT09PWUuTW9kdWxlS2luZC5Db21tb25KU31mdW5jdGlvbiBVZihyKXt2YXIgaT1oZihyKTtyZXR1cm4gaT09PWUuTW9kdWxlS2luZC5FU05leHQmJmUuZW5kc1dpdGgoci50ZXh0LFwiLmpzb25cIil9ZnVuY3Rpb24gTF8ocixpLHQsbyl7dmFyIHM9ciYmaGYobyk7aWYociYmcyE9PXZvaWQgMCl7dmFyIHU9JGwocyxyLmltcGxpZWROb2RlRm9ybWF0KTtpZihzPT09ZS5Nb2R1bGVLaW5kLkVTTmV4dHx8dSlyZXR1cm4gdX1pZighQ3IpcmV0dXJuITE7aWYoIXJ8fHIuaXNEZWNsYXJhdGlvbkZpbGUpe3ZhciBoPW11KGksXCJkZWZhdWx0XCIsdm9pZCAwLCEwKTtyZXR1cm4hKGgmJmUuc29tZShoLmRlY2xhcmF0aW9ucyxnZCl8fG11KGksZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoXCJfX2VzTW9kdWxlXCIpLHZvaWQgMCx0KSl9cmV0dXJuIGUuaXNTb3VyY2VGaWxlSlMocik/IXIuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3ImJiFtdShpLGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFwiX19lc01vZHVsZVwiKSx2b2lkIDAsdCk6bGwoaSl9ZnVuY3Rpb24gbF8ocixpKXt2YXIgdCxvPWFjKHIsci5wYXJlbnQubW9kdWxlU3BlY2lmaWVyKTtpZihvKXt2YXIgcz12b2lkIDA7ZS5pc1Nob3J0aGFuZEFtYmllbnRNb2R1bGVTeW1ib2wobyk/cz1vOnM9bXUobyxcImRlZmF1bHRcIixyLGkpO3ZhciB1PSh0PW8uZGVjbGFyYXRpb25zKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZmluZChlLmlzU291cmNlRmlsZSksaD1VZihyLnBhcmVudC5tb2R1bGVTcGVjaWZpZXIpLHo9TF8odSxvLGksci5wYXJlbnQubW9kdWxlU3BlY2lmaWVyKTtpZighcyYmIXomJiFoKWlmKGxsKG8pKXt2YXIgbWU9ZXI+PWUuTW9kdWxlS2luZC5FUzIwMTU/XCJhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzXCI6XCJlc01vZHVsZUludGVyb3BcIixNZT1vLmV4cG9ydHMuZ2V0KFwiZXhwb3J0PVwiKSwkZT1NZS52YWx1ZURlY2xhcmF0aW9uLHRyPVhyKHIubmFtZSxlLkRpYWdub3N0aWNzLk1vZHVsZV8wX2Nhbl9vbmx5X2JlX2RlZmF1bHRfaW1wb3J0ZWRfdXNpbmdfdGhlXzFfZmxhZyx0bihvKSxtZSk7JGUmJmUuYWRkUmVsYXRlZEluZm8odHIsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSgkZSxlLkRpYWdub3N0aWNzLlRoaXNfbW9kdWxlX2lzX2RlY2xhcmVkX3dpdGhfdXNpbmdfZXhwb3J0X2FuZF9jYW5fb25seV9iZV91c2VkX3dpdGhfYV9kZWZhdWx0X2ltcG9ydF93aGVuX3VzaW5nX3RoZV8wX2ZsYWcsbWUpKX1lbHNlIGZfKG8scik7ZWxzZSBpZih6fHxoKXt2YXIgZHI9VXMobyxpKXx8b3MobyxpKTtyZXR1cm4gR2MocixvLGRyLCExKSxkcn1yZXR1cm4gR2MocixzLHZvaWQgMCwhMSksc319ZnVuY3Rpb24gZl8ocixpKXt2YXIgdCxvLHM7aWYoISgodD1yLmV4cG9ydHMpPT09bnVsbHx8dD09PXZvaWQgMCkmJnQuaGFzKGkuc3ltYm9sLmVzY2FwZWROYW1lKSlYcihpLm5hbWUsZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF9oYXNfbm9fZGVmYXVsdF9leHBvcnRfRGlkX3lvdV9tZWFuX3RvX3VzZV9pbXBvcnRfMV9mcm9tXzBfaW5zdGVhZCx0bihyKSx0bihpLnN5bWJvbCkpO2Vsc2V7dmFyIHU9WHIoaS5uYW1lLGUuRGlhZ25vc3RpY3MuTW9kdWxlXzBfaGFzX25vX2RlZmF1bHRfZXhwb3J0LHRuKHIpKSxoPShvPXIuZXhwb3J0cyk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmdldChcIl9fZXhwb3J0XCIpO2lmKGgpe3ZhciB6PShzPWguZGVjbGFyYXRpb25zKT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMuZmluZChmdW5jdGlvbihtZSl7dmFyIE1lLCRlO3JldHVybiEhKGUuaXNFeHBvcnREZWNsYXJhdGlvbihtZSkmJm1lLm1vZHVsZVNwZWNpZmllciYmKCgkZT0oTWU9YWMobWUsbWUubW9kdWxlU3BlY2lmaWVyKSk9PT1udWxsfHxNZT09PXZvaWQgMD92b2lkIDA6TWUuZXhwb3J0cyk9PT1udWxsfHwkZT09PXZvaWQgMD92b2lkIDA6JGUuaGFzKFwiZGVmYXVsdFwiKSkpfSk7eiYmZS5hZGRSZWxhdGVkSW5mbyh1LGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoeixlLkRpYWdub3N0aWNzLmV4cG9ydF9Bc3Rlcmlza19kb2VzX25vdF9yZV9leHBvcnRfYV9kZWZhdWx0KSl9fX1mdW5jdGlvbiBtZChyLGkpe3ZhciB0PXIucGFyZW50LnBhcmVudC5tb2R1bGVTcGVjaWZpZXIsbz1hYyhyLHQpLHM9V2Yobyx0LGksITEpO3JldHVybiBHYyhyLG8scywhMSksc31mdW5jdGlvbiBrcyhyLGkpe3ZhciB0PXIucGFyZW50Lm1vZHVsZVNwZWNpZmllcixvPXQmJmFjKHIsdCkscz10JiZXZihvLHQsaSwhMSk7cmV0dXJuIEdjKHIsbyxzLCExKSxzfWZ1bmN0aW9uIFd1KHIsaSl7aWYocj09PXhlJiZpPT09eGUpcmV0dXJuIHhlO2lmKHIuZmxhZ3MmNzkwNTA0KXJldHVybiByO3ZhciB0PW9vKHIuZmxhZ3N8aS5mbGFncyxyLmVzY2FwZWROYW1lKTtyZXR1cm4gdC5kZWNsYXJhdGlvbnM9ZS5kZWR1cGxpY2F0ZShlLmNvbmNhdGVuYXRlKHIuZGVjbGFyYXRpb25zLGkuZGVjbGFyYXRpb25zKSxlLmVxdWF0ZVZhbHVlcyksdC5wYXJlbnQ9ci5wYXJlbnR8fGkucGFyZW50LHIudmFsdWVEZWNsYXJhdGlvbiYmKHQudmFsdWVEZWNsYXJhdGlvbj1yLnZhbHVlRGVjbGFyYXRpb24pLGkubWVtYmVycyYmKHQubWVtYmVycz1uZXcgZS5NYXAoaS5tZW1iZXJzKSksci5leHBvcnRzJiYodC5leHBvcnRzPW5ldyBlLk1hcChyLmV4cG9ydHMpKSx0fWZ1bmN0aW9uIFpsKHIsaSx0LG8pe2lmKHIuZmxhZ3MmMTUzNil7dmFyIHM9ZGMocikuZ2V0KGkuZXNjYXBlZFRleHQpLHU9b3MocyxvKTtyZXR1cm4gR2ModCxzLHUsITEpLHV9fWZ1bmN0aW9uIFJfKHIsaSl7aWYoci5mbGFncyYzKXt2YXIgdD1yLnZhbHVlRGVjbGFyYXRpb24udHlwZTtpZih0KXJldHVybiBvcyhiaShWYSh0KSxpKSl9fWZ1bmN0aW9uIGtsKHIsaSx0KXt2YXIgbyxzO3Q9PT12b2lkIDAmJih0PSExKTt2YXIgdT1lLmdldEV4dGVybmFsTW9kdWxlUmVxdWlyZUFyZ3VtZW50KHIpfHxyLm1vZHVsZVNwZWNpZmllcixoPWFjKHIsdSksej0hZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihpKSYmaS5wcm9wZXJ0eU5hbWV8fGkubmFtZTtpZighIWUuaXNJZGVudGlmaWVyKHopKXt2YXIgbWU9ei5lc2NhcGVkVGV4dD09PVwiZGVmYXVsdFwiJiYhISh5ZS5hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzfHxlLmdldEVTTW9kdWxlSW50ZXJvcCh5ZSkpLE1lPVdmKGgsdSwhMSxtZSk7aWYoTWUmJnouZXNjYXBlZFRleHQpe2lmKGUuaXNTaG9ydGhhbmRBbWJpZW50TW9kdWxlU3ltYm9sKGgpKXJldHVybiBoO3ZhciAkZT12b2lkIDA7aCYmaC5leHBvcnRzJiZoLmV4cG9ydHMuZ2V0KFwiZXhwb3J0PVwiKT8kZT1iaShKdChNZSksei5lc2NhcGVkVGV4dCwhMCk6JGU9Ul8oTWUsei5lc2NhcGVkVGV4dCksJGU9b3MoJGUsdCk7dmFyIHRyPVpsKE1lLHosaSx0KTtpZih0cj09PXZvaWQgMCYmei5lc2NhcGVkVGV4dD09PVwiZGVmYXVsdFwiKXt2YXIgZHI9KG89aC5kZWNsYXJhdGlvbnMpPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5maW5kKGUuaXNTb3VyY2VGaWxlKTsoVWYodSl8fExfKGRyLGgsdCx1KSkmJih0cj1VcyhoLHQpfHxvcyhoLHQpKX12YXIgRHI9dHImJiRlJiZ0ciE9PSRlP1d1KCRlLHRyKTp0cnx8JGU7aWYoIURyKXt2YXIgUXI9Y2woaCxyKSxsaT1lLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHopLFRpPXYwKHosTWUpO2lmKFRpIT09dm9pZCAwKXt2YXIgQ2k9dG4oVGkpLCRpPVhyKHosZS5EaWFnbm9zdGljcy5fMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyX25hbWVkXzFfRGlkX3lvdV9tZWFuXzIsUXIsbGksQ2kpO1RpLnZhbHVlRGVjbGFyYXRpb24mJmUuYWRkUmVsYXRlZEluZm8oJGksZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShUaS52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuXzBfaXNfZGVjbGFyZWRfaGVyZSxDaSkpfWVsc2UhKChzPWguZXhwb3J0cyk9PT1udWxsfHxzPT09dm9pZCAwKSYmcy5oYXMoXCJkZWZhdWx0XCIpP1hyKHosZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzFfRGlkX3lvdV9tZWFuX3RvX3VzZV9pbXBvcnRfMV9mcm9tXzBfaW5zdGVhZCxRcixsaSk6X18ocix6LGxpLGgsUXIpfXJldHVybiBEcn19fWZ1bmN0aW9uIF9fKHIsaSx0LG8scyl7dmFyIHUsaCx6PShoPSh1PW8udmFsdWVEZWNsYXJhdGlvbik9PT1udWxsfHx1PT09dm9pZCAwP3ZvaWQgMDp1LmxvY2Fscyk9PT1udWxsfHxoPT09dm9pZCAwP3ZvaWQgMDpoLmdldChpLmVzY2FwZWRUZXh0KSxtZT1vLmV4cG9ydHM7aWYoeil7dmFyIE1lPW1lPT1udWxsP3ZvaWQgMDptZS5nZXQoXCJleHBvcnQ9XCIpO2lmKE1lKV9sKE1lLHopP3pkKHIsaSx0LHMpOlhyKGksZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEscyx0KTtlbHNle3ZhciAkZT1tZT9lLmZpbmQoWV8obWUpLGZ1bmN0aW9uKGRyKXtyZXR1cm4hIV9sKGRyLHopfSk6dm9pZCAwLHRyPSRlP1hyKGksZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF9kZWNsYXJlc18xX2xvY2FsbHlfYnV0X2l0X2lzX2V4cG9ydGVkX2FzXzIscyx0LHRuKCRlKSk6WHIoaSxlLkRpYWdub3N0aWNzLk1vZHVsZV8wX2RlY2xhcmVzXzFfbG9jYWxseV9idXRfaXRfaXNfbm90X2V4cG9ydGVkLHMsdCk7ei5kZWNsYXJhdGlvbnMmJmUuYWRkUmVsYXRlZEluZm8uYXBwbHkodm9pZCAwLFZlKFt0cl0sZS5tYXAoei5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oZHIsRHIpe3JldHVybiBlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKGRyLERyPT09MD9lLkRpYWdub3N0aWNzLl8wX2lzX2RlY2xhcmVkX2hlcmU6ZS5EaWFnbm9zdGljcy5hbmRfaGVyZSx0KX0pLCExKSl9fWVsc2UgWHIoaSxlLkRpYWdub3N0aWNzLk1vZHVsZV8wX2hhc19ub19leHBvcnRlZF9tZW1iZXJfMSxzLHQpfWZ1bmN0aW9uIHpkKHIsaSx0LG8pe2lmKGVyPj1lLk1vZHVsZUtpbmQuRVMyMDE1KXt2YXIgcz1lLmdldEVTTW9kdWxlSW50ZXJvcCh5ZSk/ZS5EaWFnbm9zdGljcy5fMF9jYW5fb25seV9iZV9pbXBvcnRlZF9ieV91c2luZ19hX2RlZmF1bHRfaW1wb3J0OmUuRGlhZ25vc3RpY3MuXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzaW5nX2FfZGVmYXVsdF9pbXBvcnQ7WHIoaSxzLHQpfWVsc2UgaWYoZS5pc0luSlNGaWxlKHIpKXt2YXIgcz1lLmdldEVTTW9kdWxlSW50ZXJvcCh5ZSk/ZS5EaWFnbm9zdGljcy5fMF9jYW5fb25seV9iZV9pbXBvcnRlZF9ieV91c2luZ19hX3JlcXVpcmVfY2FsbF9vcl9ieV91c2luZ19hX2RlZmF1bHRfaW1wb3J0OmUuRGlhZ25vc3RpY3MuXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdXNpbmdfYV9yZXF1aXJlX2NhbGxfb3JfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzaW5nX2FfZGVmYXVsdF9pbXBvcnQ7WHIoaSxzLHQpfWVsc2V7dmFyIHM9ZS5nZXRFU01vZHVsZUludGVyb3AoeWUpP2UuRGlhZ25vc3RpY3MuXzBfY2FuX29ubHlfYmVfaW1wb3J0ZWRfYnlfdXNpbmdfaW1wb3J0XzFfcmVxdWlyZV8yX29yX2FfZGVmYXVsdF9pbXBvcnQ6ZS5EaWFnbm9zdGljcy5fMF9jYW5fb25seV9iZV9pbXBvcnRlZF9ieV91c2luZ19pbXBvcnRfMV9yZXF1aXJlXzJfb3JfYnlfdHVybmluZ19vbl90aGVfZXNNb2R1bGVJbnRlcm9wX2ZsYWdfYW5kX3VzaW5nX2FfZGVmYXVsdF9pbXBvcnQ7WHIoaSxzLHQsdCxvKX19ZnVuY3Rpb24gQWwocixpKXt2YXIgdD1lLmlzQmluZGluZ0VsZW1lbnQocik/ZS5nZXRSb290RGVjbGFyYXRpb24ocik6ci5wYXJlbnQucGFyZW50LnBhcmVudCxvPXdjKHQpLHM9a2wodCxvfHxyLGkpLHU9ci5wcm9wZXJ0eU5hbWV8fHIubmFtZTtyZXR1cm4gbyYmcyYmZS5pc0lkZW50aWZpZXIodSk/b3MoYmkoSnQocyksdS5lc2NhcGVkVGV4dCksaSk6KEdjKHIsdm9pZCAwLHMsITEpLHMpfWZ1bmN0aW9uIHdjKHIpe2lmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHIpJiZyLmluaXRpYWxpemVyJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHIuaW5pdGlhbGl6ZXIpKXJldHVybiByLmluaXRpYWxpemVyfWZ1bmN0aW9uIHF1KHIsaSl7dmFyIHQ9VXMoci5wYXJlbnQuc3ltYm9sLGkpO3JldHVybiBHYyhyLHZvaWQgMCx0LCExKSx0fWZ1bmN0aW9uIFZ1KHIsaSx0KXt2YXIgbz1yLnBhcmVudC5wYXJlbnQubW9kdWxlU3BlY2lmaWVyP2tsKHIucGFyZW50LnBhcmVudCxyLHQpOkRzKHIucHJvcGVydHlOYW1lfHxyLm5hbWUsaSwhMSx0KTtyZXR1cm4gR2Mocix2b2lkIDAsbywhMSksb31mdW5jdGlvbiBlZihyLGkpe3ZhciB0PWUuaXNFeHBvcnRBc3NpZ25tZW50KHIpP3IuZXhwcmVzc2lvbjpyLnJpZ2h0LG89c2wodCxpKTtyZXR1cm4gR2Mocix2b2lkIDAsbywhMSksb31mdW5jdGlvbiBzbChyLGkpe2lmKGUuaXNDbGFzc0V4cHJlc3Npb24ocikpcmV0dXJuIE9zKHIpLnN5bWJvbDtpZighKCFlLmlzRW50aXR5TmFtZShyKSYmIWUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbihyKSkpe3ZhciB0PURzKHIsOTAxMTE5LCEwLGkpO3JldHVybiB0fHwoT3MociksdmEocikucmVzb2x2ZWRTeW1ib2wpfX1mdW5jdGlvbiBwXyhyLGkpe3ZhciB0PXIuaW5pdGlhbGl6ZXI7cmV0dXJuIHNsKHQsaSl9ZnVuY3Rpb24gRGYocixpKXtpZighIShlLmlzQmluYXJ5RXhwcmVzc2lvbihyLnBhcmVudCkmJnIucGFyZW50LmxlZnQ9PT1yJiZyLnBhcmVudC5vcGVyYXRvclRva2VuLmtpbmQ9PT02MykpcmV0dXJuIHNsKHIucGFyZW50LnJpZ2h0LGkpfWZ1bmN0aW9uIEVjKHIsaSl7c3dpdGNoKGk9PT12b2lkIDAmJihpPSExKSxyLmtpbmQpe2Nhc2UgMjY1OmNhc2UgMjU0OnJldHVybiBkZChyLGkpO2Nhc2UgMjY3OnJldHVybiBsXyhyLGkpO2Nhc2UgMjY4OnJldHVybiBtZChyLGkpO2Nhc2UgMjc0OnJldHVybiBrcyhyLGkpO2Nhc2UgMjcwOmNhc2UgMjAzOnJldHVybiBBbChyLGkpO2Nhc2UgMjc1OnJldHVybiBWdShyLDkwMTExOSxpKTtjYXNlIDI3MTpjYXNlIDIyMTpyZXR1cm4gZWYocixpKTtjYXNlIDI2NDpyZXR1cm4gcXUocixpKTtjYXNlIDI5NzpyZXR1cm4gRHMoci5uYW1lLDkwMTExOSwhMCxpKTtjYXNlIDI5NjpyZXR1cm4gcF8ocixpKTtjYXNlIDIwNzpjYXNlIDIwNjpyZXR1cm4gRGYocixpKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoKX19ZnVuY3Rpb24gWm4ocixpKXtyZXR1cm4gaT09PXZvaWQgMCYmKGk9OTAxMTE5KSxyPyhyLmZsYWdzJigyMDk3MTUyfGkpKT09PTIwOTcxNTJ8fCEhKHIuZmxhZ3MmMjA5NzE1MiYmci5mbGFncyY2NzEwODg2NCk6ITF9ZnVuY3Rpb24gb3MocixpKXtyZXR1cm4haSYmWm4ocik/UHMocik6cn1mdW5jdGlvbiBQcyhyKXtlLkRlYnVnLmFzc2VydCgoci5mbGFncyYyMDk3MTUyKSE9PTAsXCJTaG91bGQgb25seSBnZXQgQWxpYXMgaGVyZS5cIik7dmFyIGk9QWEocik7aWYoaS5hbGlhc1RhcmdldClpLmFsaWFzVGFyZ2V0PT09dnImJihpLmFsaWFzVGFyZ2V0PXhlKTtlbHNle2kuYWxpYXNUYXJnZXQ9dnI7dmFyIHQ9cnUocik7aWYoIXQpcmV0dXJuIGUuRGVidWcuZmFpbCgpO3ZhciBvPUVjKHQpO2kuYWxpYXNUYXJnZXQ9PT12cj9pLmFsaWFzVGFyZ2V0PW98fHhlOlhyKHQsZS5EaWFnbm9zdGljcy5DaXJjdWxhcl9kZWZpbml0aW9uX29mX2ltcG9ydF9hbGlhc18wLHRuKHIpKX1yZXR1cm4gaS5hbGlhc1RhcmdldH1mdW5jdGlvbiBkXyhyKXt2YXIgaT1BYShyKTtpZihpLmFsaWFzVGFyZ2V0IT09dnIpcmV0dXJuIFBzKHIpfWZ1bmN0aW9uIEdjKHIsaSx0LG8pe2lmKCFyfHxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHIpKXJldHVybiExO3ZhciBzPUV0KHIpO2lmKGUuaXNUeXBlT25seUltcG9ydE9yRXhwb3J0RGVjbGFyYXRpb24ocikpe3ZhciB1PUFhKHMpO3JldHVybiB1LnR5cGVPbmx5RGVjbGFyYXRpb249ciwhMH12YXIgaD1BYShzKTtyZXR1cm4gQl8oaCxpLG8pfHxCXyhoLHQsbyl9ZnVuY3Rpb24gQl8ocixpLHQpe3ZhciBvLHMsdTtpZihpJiYoci50eXBlT25seURlY2xhcmF0aW9uPT09dm9pZCAwfHx0JiZyLnR5cGVPbmx5RGVjbGFyYXRpb249PT0hMSkpe3ZhciBoPShzPShvPWkuZXhwb3J0cyk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmdldChcImV4cG9ydD1cIikpIT09bnVsbCYmcyE9PXZvaWQgMD9zOmksej1oLmRlY2xhcmF0aW9ucyYmZS5maW5kKGguZGVjbGFyYXRpb25zLGUuaXNUeXBlT25seUltcG9ydE9yRXhwb3J0RGVjbGFyYXRpb24pO3IudHlwZU9ubHlEZWNsYXJhdGlvbj0odT16IT1udWxsP3o6QWEoaCkudHlwZU9ubHlEZWNsYXJhdGlvbikhPT1udWxsJiZ1IT09dm9pZCAwP3U6ITF9cmV0dXJuISFyLnR5cGVPbmx5RGVjbGFyYXRpb259ZnVuY3Rpb24gdnUocil7aWYoISEoci5mbGFncyYyMDk3MTUyKSl7dmFyIGk9QWEocik7cmV0dXJuIGkudHlwZU9ubHlEZWNsYXJhdGlvbnx8dm9pZCAwfX1mdW5jdGlvbiBHdChyKXt2YXIgaT1FdChyKSx0PVBzKGkpO2lmKHQpe3ZhciBvPXQ9PT14ZXx8dC5mbGFncyYxMTE1NTEmJiFBdih0KSYmIXZ1KGkpO28mJkFzKGkpfX1mdW5jdGlvbiBBcyhyKXt2YXIgaT1BYShyKTtpZighaS5yZWZlcmVuY2VkKXtpLnJlZmVyZW5jZWQ9ITA7dmFyIHQ9cnUocik7aWYoIXQpcmV0dXJuIGUuRGVidWcuZmFpbCgpO2lmKGUuaXNJbnRlcm5hbE1vZHVsZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKHQpKXt2YXIgbz1vcyhyKTsobz09PXhlfHxvLmZsYWdzJjExMTU1MSkmJk9zKHQubW9kdWxlUmVmZXJlbmNlKX19fWZ1bmN0aW9uIHZuKHIpe3ZhciBpPUFhKHIpO2kuY29uc3RFbnVtUmVmZXJlbmNlZHx8KGkuY29uc3RFbnVtUmVmZXJlbmNlZD0hMCl9ZnVuY3Rpb24gTmwocixpKXtyZXR1cm4gci5raW5kPT09NzkmJmUuaXNSaWdodFNpZGVPZlF1YWxpZmllZE5hbWVPclByb3BlcnR5QWNjZXNzKHIpJiYocj1yLnBhcmVudCksci5raW5kPT09Nzl8fHIucGFyZW50LmtpbmQ9PT0xNjE/RHMociwxOTIwLCExLGkpOihlLkRlYnVnLmFzc2VydChyLnBhcmVudC5raW5kPT09MjY1KSxEcyhyLDkwMTExOSwhMSxpKSl9ZnVuY3Rpb24gY2wocixpKXtyZXR1cm4gci5wYXJlbnQ/Y2woci5wYXJlbnQsaSkrXCIuXCIrdG4ocik6dG4ocixpLHZvaWQgMCwyMCl9ZnVuY3Rpb24gcmYocil7Zm9yKDtlLmlzUXVhbGlmaWVkTmFtZShyLnBhcmVudCk7KXI9ci5wYXJlbnQ7cmV0dXJuIHJ9ZnVuY3Rpb24gVXQocil7dmFyIGk9ZS5nZXRGaXJzdElkZW50aWZpZXIociksdD1lcyhpLGkuZXNjYXBlZFRleHQsMTExNTUxLHZvaWQgMCxpLCEwKTtpZighIXQpe2Zvcig7ZS5pc1F1YWxpZmllZE5hbWUoaS5wYXJlbnQpOyl7dmFyIG89SnQodCk7aWYodD1iaShvLGkucGFyZW50LnJpZ2h0LmVzY2FwZWRUZXh0KSwhdClyZXR1cm47aT1pLnBhcmVudH1yZXR1cm4gdH19ZnVuY3Rpb24gRHMocixpLHQsbyxzKXtpZighZS5ub2RlSXNNaXNzaW5nKHIpKXt2YXIgdT0xOTIwfChlLmlzSW5KU0ZpbGUocik/aSYxMTE1NTE6MCksaDtpZihyLmtpbmQ9PT03OSl7dmFyIHo9aT09PXV8fGUubm9kZUlzU3ludGhlc2l6ZWQocik/ZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lc3BhY2VfMDpIRShlLmdldEZpcnN0SWRlbnRpZmllcihyKSksbWU9ZS5pc0luSlNGaWxlKHIpJiYhZS5ub2RlSXNTeW50aGVzaXplZChyKT9iZihyLGkpOnZvaWQgMDtpZihoPXNvKGVzKHN8fHIsci5lc2NhcGVkVGV4dCxpLHR8fG1lP3ZvaWQgMDp6LHIsITAsITEpKSwhaClyZXR1cm4gc28obWUpfWVsc2UgaWYoci5raW5kPT09MTYxfHxyLmtpbmQ9PT0yMDYpe3ZhciBNZT1yLmtpbmQ9PT0xNjE/ci5sZWZ0OnIuZXhwcmVzc2lvbiwkZT1yLmtpbmQ9PT0xNjE/ci5yaWdodDpyLm5hbWUsdHI9RHMoTWUsdSx0LCExLHMpO2lmKCF0cnx8ZS5ub2RlSXNNaXNzaW5nKCRlKSlyZXR1cm47aWYodHI9PT14ZSlyZXR1cm4gdHI7aWYodHIudmFsdWVEZWNsYXJhdGlvbiYmZS5pc0luSlNGaWxlKHRyLnZhbHVlRGVjbGFyYXRpb24pJiZlLmlzVmFyaWFibGVEZWNsYXJhdGlvbih0ci52YWx1ZURlY2xhcmF0aW9uKSYmdHIudmFsdWVEZWNsYXJhdGlvbi5pbml0aWFsaXplciYmeGsodHIudmFsdWVEZWNsYXJhdGlvbi5pbml0aWFsaXplcikpe3ZhciBkcj10ci52YWx1ZURlY2xhcmF0aW9uLmluaXRpYWxpemVyLmFyZ3VtZW50c1swXSxEcj1hYyhkcixkcik7aWYoRHIpe3ZhciBRcj1VcyhEcik7UXImJih0cj1Rcil9fWlmKGg9c28ocXMoZGModHIpLCRlLmVzY2FwZWRUZXh0LGkpKSwhaCl7aWYoIXQpe3ZhciBsaT1jbCh0ciksVGk9ZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZygkZSksQ2k9djAoJGUsdHIpO2lmKENpKXtYcigkZSxlLkRpYWdub3N0aWNzLl8wX2hhc19ub19leHBvcnRlZF9tZW1iZXJfbmFtZWRfMV9EaWRfeW91X21lYW5fMixsaSxUaSx0bihDaSkpO3JldHVybn12YXIgJGk9ZS5pc1F1YWxpZmllZE5hbWUocikmJnJmKHIpLFppPXFlJiZpJjc4ODk2OCYmJGkmJiFlLmlzVHlwZU9mRXhwcmVzc2lvbigkaS5wYXJlbnQpJiZVdCgkaSk7aWYoWmkpe1hyKCRpLGUuRGlhZ25vc3RpY3MuXzBfcmVmZXJzX3RvX2FfdmFsdWVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV90eXBlX2hlcmVfRGlkX3lvdV9tZWFuX3R5cGVvZl8wLGUuZW50aXR5TmFtZVRvU3RyaW5nKCRpKSk7cmV0dXJufWlmKGkmMTkyMCYmZS5pc1F1YWxpZmllZE5hbWUoci5wYXJlbnQpKXt2YXIgcXQ9c28ocXMoZGModHIpLCRlLmVzY2FwZWRUZXh0LDc4ODk2OCkpO2lmKHF0KXtYcihyLnBhcmVudC5yaWdodCxlLkRpYWdub3N0aWNzLkNhbm5vdF9hY2Nlc3NfMF8xX2JlY2F1c2VfMF9pc19hX3R5cGVfYnV0X25vdF9hX25hbWVzcGFjZV9EaWRfeW91X21lYW5fdG9fcmV0cmlldmVfdGhlX3R5cGVfb2ZfdGhlX3Byb3BlcnR5XzFfaW5fMF93aXRoXzBfMSx0bihxdCksZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhyLnBhcmVudC5yaWdodC5lc2NhcGVkVGV4dCkpO3JldHVybn19WHIoJGUsZS5EaWFnbm9zdGljcy5OYW1lc3BhY2VfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEsbGksVGkpfXJldHVybn19ZWxzZSB0aHJvdyBlLkRlYnVnLmFzc2VydE5ldmVyKHIsXCJVbmtub3duIGVudGl0eSBuYW1lIGtpbmQuXCIpO3JldHVybiBlLkRlYnVnLmFzc2VydCgoZS5nZXRDaGVja0ZsYWdzKGgpJjEpPT09MCxcIlNob3VsZCBuZXZlciBnZXQgYW4gaW5zdGFudGlhdGVkIHN5bWJvbCBoZXJlLlwiKSwhZS5ub2RlSXNTeW50aGVzaXplZChyKSYmZS5pc0VudGl0eU5hbWUocikmJihoLmZsYWdzJjIwOTcxNTJ8fHIucGFyZW50LmtpbmQ9PT0yNzEpJiZHYyhlLmdldEFsaWFzRGVjbGFyYXRpb25Gcm9tTmFtZShyKSxoLHZvaWQgMCwhMCksaC5mbGFncyZpfHxvP2g6UHMoaCl9fWZ1bmN0aW9uIGJmKHIsaSl7aWYoRGgoci5wYXJlbnQpKXt2YXIgdD1icyhyLnBhcmVudCk7aWYodClyZXR1cm4gZXModCxyLmVzY2FwZWRUZXh0LGksdm9pZCAwLHIsITApfX1mdW5jdGlvbiBicyhyKXt2YXIgaT1lLmZpbmRBbmNlc3RvcihyLGZ1bmN0aW9uKHUpe3JldHVybiBlLmlzSlNEb2NOb2RlKHUpfHx1LmZsYWdzJjgzODg2MDg/ZS5pc0pTRG9jVHlwZUFsaWFzKHUpOlwicXVpdFwifSk7aWYoIWkpe3ZhciB0PWUuZ2V0SlNEb2NIb3N0KHIpO2lmKHQmJmUuaXNFeHByZXNzaW9uU3RhdGVtZW50KHQpJiZlLmlzUHJvdG90eXBlUHJvcGVydHlBc3NpZ25tZW50KHQuZXhwcmVzc2lvbikpe3ZhciBvPUV0KHQuZXhwcmVzc2lvbi5sZWZ0KTtpZihvKXJldHVybiBEYyhvKX1pZih0JiZlLmlzRnVuY3Rpb25FeHByZXNzaW9uKHQpJiZlLmlzUHJvdG90eXBlUHJvcGVydHlBc3NpZ25tZW50KHQucGFyZW50KSYmZS5pc0V4cHJlc3Npb25TdGF0ZW1lbnQodC5wYXJlbnQucGFyZW50KSl7dmFyIG89RXQodC5wYXJlbnQubGVmdCk7aWYobylyZXR1cm4gRGMobyl9aWYodCYmKGUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKHQpfHxlLmlzUHJvcGVydHlBc3NpZ25tZW50KHQpKSYmZS5pc0JpbmFyeUV4cHJlc3Npb24odC5wYXJlbnQucGFyZW50KSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHQucGFyZW50LnBhcmVudCk9PT02KXt2YXIgbz1FdCh0LnBhcmVudC5wYXJlbnQubGVmdCk7aWYobylyZXR1cm4gRGMobyl9dmFyIHM9ZS5nZXRFZmZlY3RpdmVKU0RvY0hvc3Qocik7aWYocyYmZS5pc0Z1bmN0aW9uTGlrZShzKSl7dmFyIG89RXQocyk7cmV0dXJuIG8mJm8udmFsdWVEZWNsYXJhdGlvbn19fWZ1bmN0aW9uIERjKHIpe3ZhciBpPXIucGFyZW50LnZhbHVlRGVjbGFyYXRpb247aWYoISFpKXt2YXIgdD1lLmlzQXNzaWdubWVudERlY2xhcmF0aW9uKGkpP2UuZ2V0QXNzaWduZWRFeHBhbmRvSW5pdGlhbGl6ZXIoaSk6ZS5oYXNPbmx5RXhwcmVzc2lvbkluaXRpYWxpemVyKGkpP2UuZ2V0RGVjbGFyZWRFeHBhbmRvSW5pdGlhbGl6ZXIoaSk6dm9pZCAwO3JldHVybiB0fHxpfX1mdW5jdGlvbiBDYyhyKXt2YXIgaT1yLnZhbHVlRGVjbGFyYXRpb247aWYoISghaXx8IWUuaXNJbkpTRmlsZShpKXx8ci5mbGFncyY1MjQyODh8fGUuZ2V0RXhwYW5kb0luaXRpYWxpemVyKGksITEpKSl7dmFyIHQ9ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oaSk/ZS5nZXREZWNsYXJlZEV4cGFuZG9Jbml0aWFsaXplcihpKTplLmdldEFzc2lnbmVkRXhwYW5kb0luaXRpYWxpemVyKGkpO2lmKHQpe3ZhciBvPUV0KHQpO2lmKG8pcmV0dXJuIGlTKG8scil9fX1mdW5jdGlvbiBhYyhyLGksdCl7dmFyIG89ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoeWUpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5DbGFzc2ljLHM9bz9lLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX21vZHVsZV8wX0RpZF95b3VfbWVhbl90b19zZXRfdGhlX21vZHVsZVJlc29sdXRpb25fb3B0aW9uX3RvX25vZGVfb3JfdG9fYWRkX2FsaWFzZXNfdG9fdGhlX3BhdGhzX29wdGlvbjplLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX21vZHVsZV8wX29yX2l0c19jb3JyZXNwb25kaW5nX3R5cGVfZGVjbGFyYXRpb25zO3JldHVybiBQbChyLGksdD92b2lkIDA6cyl9ZnVuY3Rpb24gUGwocixpLHQsbyl7cmV0dXJuIG89PT12b2lkIDAmJihvPSExKSxlLmlzU3RyaW5nTGl0ZXJhbExpa2UoaSk/SWwocixpLnRleHQsdCxpLG8pOnZvaWQgMH1mdW5jdGlvbiBJbChyLGksdCxvLHMpe3ZhciB1LGgseixtZSxNZSwkZSx0cixkcjtpZihzPT09dm9pZCAwJiYocz0hMSksZS5zdGFydHNXaXRoKGksXCJAdHlwZXMvXCIpKXt2YXIgRHI9ZS5EaWFnbm9zdGljcy5DYW5ub3RfaW1wb3J0X3R5cGVfZGVjbGFyYXRpb25fZmlsZXNfQ29uc2lkZXJfaW1wb3J0aW5nXzBfaW5zdGVhZF9vZl8xLFFyPWUucmVtb3ZlUHJlZml4KGksXCJAdHlwZXMvXCIpO1hyKG8sRHIsUXIsaSl9dmFyIGxpPWJfKGksITApO2lmKGxpKXJldHVybiBsaTt2YXIgVGk9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLENpPWUuaXNTdHJpbmdMaXRlcmFsTGlrZShyKT9yOigodT1lLmZpbmRBbmNlc3RvcihyLGUuaXNJbXBvcnRDYWxsKSk9PT1udWxsfHx1PT09dm9pZCAwP3ZvaWQgMDp1LmFyZ3VtZW50c1swXSl8fCgoaD1lLmZpbmRBbmNlc3RvcihyLGUuaXNJbXBvcnREZWNsYXJhdGlvbikpPT09bnVsbHx8aD09PXZvaWQgMD92b2lkIDA6aC5tb2R1bGVTcGVjaWZpZXIpfHwoKHo9ZS5maW5kQW5jZXN0b3IocixlLmlzRXh0ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbikpPT09bnVsbHx8ej09PXZvaWQgMD92b2lkIDA6ei5tb2R1bGVSZWZlcmVuY2UuZXhwcmVzc2lvbil8fCgobWU9ZS5maW5kQW5jZXN0b3IocixlLmlzRXhwb3J0RGVjbGFyYXRpb24pKT09PW51bGx8fG1lPT09dm9pZCAwP3ZvaWQgMDptZS5tb2R1bGVTcGVjaWZpZXIpfHwoKE1lPWUuaXNNb2R1bGVEZWNsYXJhdGlvbihyKT9yOnIucGFyZW50JiZlLmlzTW9kdWxlRGVjbGFyYXRpb24oci5wYXJlbnQpJiZyLnBhcmVudC5uYW1lPT09cj9yLnBhcmVudDp2b2lkIDApPT09bnVsbHx8TWU9PT12b2lkIDA/dm9pZCAwOk1lLm5hbWUpfHwoKCRlPWUuaXNMaXRlcmFsSW1wb3J0VHlwZU5vZGUocik/cjp2b2lkIDApPT09bnVsbHx8JGU9PT12b2lkIDA/dm9pZCAwOiRlLmFyZ3VtZW50LmxpdGVyYWwpLCRpPUNpJiZlLmlzU3RyaW5nTGl0ZXJhbExpa2UoQ2kpP2UuZ2V0TW9kZUZvclVzYWdlTG9jYXRpb24oVGksQ2kpOlRpLmltcGxpZWROb2RlRm9ybWF0LFppPWUuZ2V0UmVzb2x2ZWRNb2R1bGUoVGksaSwkaSkscXQ9WmkmJmUuZ2V0UmVzb2x1dGlvbkRpYWdub3N0aWMoeWUsWmkpLE50PVppJiYoIXF0fHxxdD09PWUuRGlhZ25vc3RpY3MuTW9kdWxlXzBfd2FzX3Jlc29sdmVkX3RvXzFfYnV0X2pzeF9pc19ub3Rfc2V0KSYmbC5nZXRTb3VyY2VGaWxlKFppLnJlc29sdmVkRmlsZU5hbWUpO2lmKE50KXtpZihxdCYmWHIobyxxdCxpLFppLnJlc29sdmVkRmlsZU5hbWUpLE50LnN5bWJvbCl7aWYoWmkuaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQmJiFlLnJlc29sdXRpb25FeHRlbnNpb25Jc1RTT3JKc29uKFppLmV4dGVuc2lvbikmJnpmKCExLG8sWmksaSksZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoeWUpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTZ8fGUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKHllKT09PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZU5leHQpe3ZhciBSYT1UaS5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5Db21tb25KUyYmIWUuZmluZEFuY2VzdG9yKHIsZS5pc0ltcG9ydENhbGwpfHwhIWUuZmluZEFuY2VzdG9yKHIsZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKSxjYT1lLmZpbmRBbmNlc3RvcihyLGZ1bmN0aW9uKGNuKXtyZXR1cm4gZS5pc0ltcG9ydFR5cGVOb2RlKGNuKXx8ZS5pc0V4cG9ydERlY2xhcmF0aW9uKGNuKXx8ZS5pc0ltcG9ydERlY2xhcmF0aW9uKGNuKX0pLFNuPWNhJiZlLmlzSW1wb3J0VHlwZU5vZGUoY2EpPyh0cj1jYS5hc3NlcnRpb25zKT09PW51bGx8fHRyPT09dm9pZCAwP3ZvaWQgMDp0ci5hc3NlcnRDbGF1c2U6Y2E9PW51bGw/dm9pZCAwOmNhLmFzc2VydENsYXVzZTtSYSYmTnQuaW1wbGllZE5vZGVGb3JtYXQ9PT1lLk1vZHVsZUtpbmQuRVNOZXh0JiYhZS5nZXRSZXNvbHV0aW9uTW9kZU92ZXJyaWRlRm9yQ2xhdXNlKFNuKSYmWHIobyxlLkRpYWdub3N0aWNzLk1vZHVsZV8wX2Nhbm5vdF9iZV9pbXBvcnRlZF91c2luZ190aGlzX2NvbnN0cnVjdF9UaGVfc3BlY2lmaWVyX29ubHlfcmVzb2x2ZXNfdG9fYW5fRVNfbW9kdWxlX3doaWNoX2Nhbm5vdF9iZV9pbXBvcnRlZF9zeW5jaHJvbm91c2x5X1VzZV9keW5hbWljX2ltcG9ydF9pbnN0ZWFkLGkpfXJldHVybiBzbyhOdC5zeW1ib2wpfXQmJlhyKG8sZS5EaWFnbm9zdGljcy5GaWxlXzBfaXNfbm90X2FfbW9kdWxlLE50LmZpbGVOYW1lKTtyZXR1cm59aWYoUyl7dmFyIGphPWUuZmluZEJlc3RQYXR0ZXJuTWF0Y2goUyxmdW5jdGlvbihjbil7cmV0dXJuIGNuLnBhdHRlcm59LGkpO2lmKGphKXt2YXIgRm49Q2UmJkNlLmdldChpKTtyZXR1cm4gc28oRm58fGphLnN5bWJvbCl9fWlmKFppJiYhZS5yZXNvbHV0aW9uRXh0ZW5zaW9uSXNUU09ySnNvbihaaS5leHRlbnNpb24pJiZxdD09PXZvaWQgMHx8cXQ9PT1lLkRpYWdub3N0aWNzLkNvdWxkX25vdF9maW5kX2FfZGVjbGFyYXRpb25fZmlsZV9mb3JfbW9kdWxlXzBfMV9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZSl7aWYocyl7dmFyIERyPWUuRGlhZ25vc3RpY3MuSW52YWxpZF9tb2R1bGVfbmFtZV9pbl9hdWdtZW50YXRpb25fTW9kdWxlXzBfcmVzb2x2ZXNfdG9fYW5fdW50eXBlZF9tb2R1bGVfYXRfMV93aGljaF9jYW5ub3RfYmVfYXVnbWVudGVkO1hyKG8sRHIsaSxaaS5yZXNvbHZlZEZpbGVOYW1lKX1lbHNlIHpmKG4mJiEhdCxvLFppLGkpO3JldHVybn1pZih0KXtpZihaaSl7dmFyIHduPWwuZ2V0UHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0KFppLnJlc29sdmVkRmlsZU5hbWUpO2lmKHduKXtYcihvLGUuRGlhZ25vc3RpY3MuT3V0cHV0X2ZpbGVfMF9oYXNfbm90X2JlZW5fYnVpbHRfZnJvbV9zb3VyY2VfZmlsZV8xLHduLFppLnJlc29sdmVkRmlsZU5hbWUpO3JldHVybn19aWYocXQpWHIobyxxdCxpLFppLnJlc29sdmVkRmlsZU5hbWUpO2Vsc2V7dmFyIFRuPWUudHJ5RXh0cmFjdFRTRXh0ZW5zaW9uKGkpLEVvPWUucGF0aElzUmVsYXRpdmUoaSkmJiFlLmhhc0V4dGVuc2lvbihpKSxsdD1lLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZCh5ZSksaXQ9bHQ9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNnx8bHQ9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVOZXh0O2lmKFRuKXt2YXIgRHI9ZS5EaWFnbm9zdGljcy5Bbl9pbXBvcnRfcGF0aF9jYW5ub3RfZW5kX3dpdGhfYV8wX2V4dGVuc2lvbl9Db25zaWRlcl9pbXBvcnRpbmdfMV9pbnN0ZWFkLFl0PWUucmVtb3ZlRXh0ZW5zaW9uKGksVG4pLElhPVl0O2VyPj1lLk1vZHVsZUtpbmQuRVMyMDE1JiYoSWErPVRuPT09XCIubXRzXCI/XCIubWpzXCI6VG49PT1cIi5jdHNcIj9cIi5janNcIjpcIi5qc1wiKSxYcihvLERyLFRuLElhKX1lbHNlIGlmKCF5ZS5yZXNvbHZlSnNvbk1vZHVsZSYmZS5maWxlRXh0ZW5zaW9uSXMoaSxcIi5qc29uXCIpJiZlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZCh5ZSkhPT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLkNsYXNzaWMmJmUuaGFzSnNvbk1vZHVsZUVtaXRFbmFibGVkKHllKSlYcihvLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbW9kdWxlXzBfQ29uc2lkZXJfdXNpbmdfcmVzb2x2ZUpzb25Nb2R1bGVfdG9faW1wb3J0X21vZHVsZV93aXRoX2pzb25fZXh0ZW5zaW9uLGkpO2Vsc2UgaWYoJGk9PT1lLk1vZHVsZUtpbmQuRVNOZXh0JiZpdCYmRW8pe3ZhciBRdD1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoaSxlLmdldERpcmVjdG9yeVBhdGgoVGkucGF0aCkpLEthPShkcj1qby5maW5kKGZ1bmN0aW9uKGNuKXt2YXIgVW49Y25bMF0sb2E9Y25bMV07cmV0dXJuIGwuZmlsZUV4aXN0cyhRdCtVbil9KSk9PT1udWxsfHxkcj09PXZvaWQgMD92b2lkIDA6ZHJbMV07S2E/WHIobyxlLkRpYWdub3N0aWNzLlJlbGF0aXZlX2ltcG9ydF9wYXRoc19uZWVkX2V4cGxpY2l0X2ZpbGVfZXh0ZW5zaW9uc19pbl9FY21hU2NyaXB0X2ltcG9ydHNfd2hlbl9tb2R1bGVSZXNvbHV0aW9uX2lzX25vZGUxNl9vcl9ub2RlbmV4dF9EaWRfeW91X21lYW5fMCxpK0thKTpYcihvLGUuRGlhZ25vc3RpY3MuUmVsYXRpdmVfaW1wb3J0X3BhdGhzX25lZWRfZXhwbGljaXRfZmlsZV9leHRlbnNpb25zX2luX0VjbWFTY3JpcHRfaW1wb3J0c193aGVuX21vZHVsZVJlc29sdXRpb25faXNfbm9kZTE2X29yX25vZGVuZXh0X0NvbnNpZGVyX2FkZGluZ19hbl9leHRlbnNpb25fdG9fdGhlX2ltcG9ydF9wYXRoKX1lbHNlIFhyKG8sdCxpKX19fWZ1bmN0aW9uIHpmKHIsaSx0LG8pe3ZhciBzPXQucGFja2FnZUlkLHU9dC5yZXNvbHZlZEZpbGVOYW1lLGg9IWUuaXNFeHRlcm5hbE1vZHVsZU5hbWVSZWxhdGl2ZShvKSYmcz91bChzLm5hbWUpP2UuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLGUuRGlhZ25vc3RpY3MuSWZfdGhlXzBfcGFja2FnZV9hY3R1YWxseV9leHBvc2VzX3RoaXNfbW9kdWxlX2NvbnNpZGVyX3NlbmRpbmdfYV9wdWxsX3JlcXVlc3RfdG9fYW1lbmRfaHR0cHNfQ29sb25fU2xhc2hfU2xhc2hnaXRodWJfY29tX1NsYXNoRGVmaW5pdGVseVR5cGVkX1NsYXNoRGVmaW5pdGVseVR5cGVkX1NsYXNodHJlZV9TbGFzaG1hc3Rlcl9TbGFzaHR5cGVzX1NsYXNoXzEscy5uYW1lLGUubWFuZ2xlU2NvcGVkUGFja2FnZU5hbWUocy5uYW1lKSk6TnUocy5uYW1lKT9lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKHZvaWQgMCxlLkRpYWdub3N0aWNzLklmX3RoZV8wX3BhY2thZ2VfYWN0dWFsbHlfZXhwb3Nlc190aGlzX21vZHVsZV90cnlfYWRkaW5nX2FfbmV3X2RlY2xhcmF0aW9uX2RfdHNfZmlsZV9jb250YWluaW5nX2RlY2xhcmVfbW9kdWxlXzEscy5uYW1lLG8pOmUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLGUuRGlhZ25vc3RpY3MuVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoXzFfaWZfaXRfZXhpc3RzX29yX2FkZF9hX25ld19kZWNsYXJhdGlvbl9kX3RzX2ZpbGVfY29udGFpbmluZ19kZWNsYXJlX21vZHVsZV8wLG8sZS5tYW5nbGVTY29wZWRQYWNrYWdlTmFtZShzLm5hbWUpKTp2b2lkIDA7SWMocixpLGUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMoaCxlLkRpYWdub3N0aWNzLkNvdWxkX25vdF9maW5kX2FfZGVjbGFyYXRpb25fZmlsZV9mb3JfbW9kdWxlXzBfMV9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZSxvLHUpKX1mdW5jdGlvbiB1bChyKXtyZXR1cm4gZCgpLmhhcyhlLmdldFR5cGVzUGFja2FnZU5hbWUocikpfWZ1bmN0aW9uIE51KHIpe3JldHVybiEhZCgpLmdldChyKX1mdW5jdGlvbiBVcyhyLGkpe2lmKHIhPW51bGwmJnIuZXhwb3J0cyl7dmFyIHQ9b3Moci5leHBvcnRzLmdldChcImV4cG9ydD1cIiksaSksbz1BcChzbyh0KSxzbyhyKSk7cmV0dXJuIHNvKG8pfHxyfX1mdW5jdGlvbiBBcChyLGkpe2lmKCFyfHxyPT09eGV8fHI9PT1pfHxpLmV4cG9ydHMuc2l6ZT09PTF8fHIuZmxhZ3MmMjA5NzE1MilyZXR1cm4gcjt2YXIgdD1BYShyKTtpZih0LmNqc0V4cG9ydE1lcmdlZClyZXR1cm4gdC5janNFeHBvcnRNZXJnZWQ7dmFyIG89ci5mbGFncyYzMzU1NDQzMj9yOllsKHIpO3JldHVybiBvLmZsYWdzPW8uZmxhZ3N8NTEyLG8uZXhwb3J0cz09PXZvaWQgMCYmKG8uZXhwb3J0cz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCkpLGkuZXhwb3J0cy5mb3JFYWNoKGZ1bmN0aW9uKHMsdSl7dSE9PVwiZXhwb3J0PVwiJiZvLmV4cG9ydHMuc2V0KHUsby5leHBvcnRzLmhhcyh1KT9CZihvLmV4cG9ydHMuZ2V0KHUpLHMpOnMpfSksQWEobykuY2pzRXhwb3J0TWVyZ2VkPW8sdC5janNFeHBvcnRNZXJnZWQ9b31mdW5jdGlvbiBXZihyLGksdCxvKXt2YXIgcyx1PVVzKHIsdCk7aWYoIXQmJnUpe2lmKCFvJiYhKHUuZmxhZ3MmMTUzOSkmJiFlLmdldERlY2xhcmF0aW9uT2ZLaW5kKHUsMzA1KSl7dmFyIGg9ZXI+PWUuTW9kdWxlS2luZC5FUzIwMTU/XCJhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzXCI6XCJlc01vZHVsZUludGVyb3BcIjtyZXR1cm4gWHIoaSxlLkRpYWdub3N0aWNzLlRoaXNfbW9kdWxlX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfd2l0aF9FQ01BU2NyaXB0X2ltcG9ydHNfU2xhc2hleHBvcnRzX2J5X3R1cm5pbmdfb25fdGhlXzBfZmxhZ19hbmRfcmVmZXJlbmNpbmdfaXRzX2RlZmF1bHRfZXhwb3J0LGgpLHV9dmFyIHo9aS5wYXJlbnQ7aWYoZS5pc0ltcG9ydERlY2xhcmF0aW9uKHopJiZlLmdldE5hbWVzcGFjZURlY2xhcmF0aW9uTm9kZSh6KXx8ZS5pc0ltcG9ydENhbGwoeikpe3ZhciBtZT1lLmlzSW1wb3J0Q2FsbCh6KT96LmFyZ3VtZW50c1swXTp6Lm1vZHVsZVNwZWNpZmllcixNZT1KdCh1KSwkZT1TayhNZSx1LHIsbWUpO2lmKCRlKXJldHVybiBTZih1LCRlLHopO3ZhciB0cj0ocz1yPT1udWxsP3ZvaWQgMDpyLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLmZpbmQoZS5pc1NvdXJjZUZpbGUpLGRyPXRyJiYkbChoZihtZSksdHIuaW1wbGllZE5vZGVGb3JtYXQpO2lmKGUuZ2V0RVNNb2R1bGVJbnRlcm9wKHllKXx8ZHIpe3ZhciBEcj1GdChNZSwwKTtpZigoIURyfHwhRHIubGVuZ3RoKSYmKERyPUZ0KE1lLDEpKSxEciYmRHIubGVuZ3RofHxiaShNZSxcImRlZmF1bHRcIiwhMCl8fGRyKXt2YXIgUXI9VGsoTWUsdSxyLG1lKTtyZXR1cm4gU2YodSxRcix6KX19fX1yZXR1cm4gdX1mdW5jdGlvbiBTZihyLGksdCl7dmFyIG89b28oci5mbGFncyxyLmVzY2FwZWROYW1lKTtvLmRlY2xhcmF0aW9ucz1yLmRlY2xhcmF0aW9ucz9yLmRlY2xhcmF0aW9ucy5zbGljZSgpOltdLG8ucGFyZW50PXIucGFyZW50LG8udGFyZ2V0PXIsby5vcmlnaW5hdGluZ0ltcG9ydD10LHIudmFsdWVEZWNsYXJhdGlvbiYmKG8udmFsdWVEZWNsYXJhdGlvbj1yLnZhbHVlRGVjbGFyYXRpb24pLHIuY29uc3RFbnVtT25seU1vZHVsZSYmKG8uY29uc3RFbnVtT25seU1vZHVsZT0hMCksci5tZW1iZXJzJiYoby5tZW1iZXJzPW5ldyBlLk1hcChyLm1lbWJlcnMpKSxyLmV4cG9ydHMmJihvLmV4cG9ydHM9bmV3IGUuTWFwKHIuZXhwb3J0cykpO3ZhciBzPVJ1KGkpO3JldHVybiBvLnR5cGU9cnMobyxzLm1lbWJlcnMsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxzLmluZGV4SW5mb3MpLG99ZnVuY3Rpb24gbGwocil7cmV0dXJuIHIuZXhwb3J0cy5nZXQoXCJleHBvcnQ9XCIpIT09dm9pZCAwfWZ1bmN0aW9uIEpfKHIpe3JldHVybiBZXyhQdShyKSl9ZnVuY3Rpb24gal8ocil7dmFyIGk9Sl8ociksdD1VcyhyKTtpZih0IT09cil7dmFyIG89SnQodCk7cWYobykmJmUuYWRkUmFuZ2UoaSx1byhvKSl9cmV0dXJuIGl9ZnVuY3Rpb24gVV8ocixpKXt2YXIgdD1QdShyKTt0LmZvckVhY2goZnVuY3Rpb24odSxoKXtPbChoKXx8aSh1LGgpfSk7dmFyIG89VXMocik7aWYobyE9PXIpe3ZhciBzPUp0KG8pO3FmKHMpJiZVMShzLGZ1bmN0aW9uKHUsaCl7aSh1LGgpfSl9fWZ1bmN0aW9uIGl1KHIsaSl7dmFyIHQ9UHUoaSk7aWYodClyZXR1cm4gdC5nZXQocil9ZnVuY3Rpb24gdmQocixpKXt2YXIgdD1pdShyLGkpO2lmKHQpcmV0dXJuIHQ7dmFyIG89VXMoaSk7aWYobyE9PWkpe3ZhciBzPUp0KG8pO3JldHVybiBxZihzKT9iaShzLHIpOnZvaWQgMH19ZnVuY3Rpb24gcWYocil7cmV0dXJuIShyLmZsYWdzJjEzMTA2OHx8ZS5nZXRPYmplY3RGbGFncyhyKSYxfHxUdShyKXx8WW4ocikpfWZ1bmN0aW9uIGRjKHIpe3JldHVybiByLmZsYWdzJjYyNTY/SnYocixcInJlc29sdmVkRXhwb3J0c1wiKTpyLmZsYWdzJjE1MzY/UHUocik6ci5leHBvcnRzfHx3ZX1mdW5jdGlvbiBQdShyKXt2YXIgaT1BYShyKTtyZXR1cm4gaS5yZXNvbHZlZEV4cG9ydHN8fChpLnJlc29sdmVkRXhwb3J0cz1JdShyKSl9ZnVuY3Rpb24gd2wocixpLHQsbyl7IWl8fGkuZm9yRWFjaChmdW5jdGlvbihzLHUpe2lmKHUhPT1cImRlZmF1bHRcIil7dmFyIGg9ci5nZXQodSk7aWYoIWgpci5zZXQodSxzKSx0JiZvJiZ0LnNldCh1LHtzcGVjaWZpZXJUZXh0OmUuZ2V0VGV4dE9mTm9kZShvLm1vZHVsZVNwZWNpZmllcil9KTtlbHNlIGlmKHQmJm8mJmgmJm9zKGgpIT09b3Mocykpe3ZhciB6PXQuZ2V0KHUpO3ouZXhwb3J0c1dpdGhEdXBsaWNhdGU/ei5leHBvcnRzV2l0aER1cGxpY2F0ZS5wdXNoKG8pOnouZXhwb3J0c1dpdGhEdXBsaWNhdGU9W29dfX19KX1mdW5jdGlvbiBJdShyKXt2YXIgaT1bXTtyZXR1cm4gcj1VcyhyKSx0KHIpfHx3ZTtmdW5jdGlvbiB0KG8pe2lmKCEhKG8mJm8uZXhwb3J0cyYmZS5wdXNoSWZVbmlxdWUoaSxvKSkpe3ZhciBzPW5ldyBlLk1hcChvLmV4cG9ydHMpLHU9by5leHBvcnRzLmdldChcIl9fZXhwb3J0XCIpO2lmKHUpe3ZhciBoPWUuY3JlYXRlU3ltYm9sVGFibGUoKSx6PW5ldyBlLk1hcDtpZih1LmRlY2xhcmF0aW9ucylmb3IodmFyIG1lPTAsTWU9dS5kZWNsYXJhdGlvbnM7bWU8TWUubGVuZ3RoO21lKyspe3ZhciAkZT1NZVttZV0sdHI9YWMoJGUsJGUubW9kdWxlU3BlY2lmaWVyKSxkcj10KHRyKTt3bChoLGRyLHosJGUpfXouZm9yRWFjaChmdW5jdGlvbihEcixRcil7dmFyIGxpPURyLmV4cG9ydHNXaXRoRHVwbGljYXRlO2lmKCEoUXI9PT1cImV4cG9ydD1cInx8IShsaSYmbGkubGVuZ3RoKXx8cy5oYXMoUXIpKSlmb3IodmFyIFRpPTAsQ2k9bGk7VGk8Q2kubGVuZ3RoO1RpKyspe3ZhciAkaT1DaVtUaV07cm4uYWRkKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoJGksZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF9oYXNfYWxyZWFkeV9leHBvcnRlZF9hX21lbWJlcl9uYW1lZF8xX0NvbnNpZGVyX2V4cGxpY2l0bHlfcmVfZXhwb3J0aW5nX3RvX3Jlc29sdmVfdGhlX2FtYmlndWl0eSx6LmdldChRcikuc3BlY2lmaWVyVGV4dCxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFFyKSkpfX0pLHdsKHMsaCl9cmV0dXJuIHN9fX1mdW5jdGlvbiBzbyhyKXt2YXIgaTtyZXR1cm4gciYmci5tZXJnZUlkJiYoaT14bFtyLm1lcmdlSWRdKT9pOnJ9ZnVuY3Rpb24gRXQocil7cmV0dXJuIHNvKHIuc3ltYm9sJiZkZyhyLnN5bWJvbCkpfWZ1bmN0aW9uIFlzKHIpe3JldHVybiBzbyhyLnBhcmVudCYmZGcoci5wYXJlbnQpKX1mdW5jdGlvbiBLdShyLGkpe3ZhciB0PWUuZ2V0U291cmNlRmlsZU9mTm9kZShpKSxvPUEodCkscz1BYShyKSx1O2lmKHMuZXh0ZW5kZWRDb250YWluZXJzQnlGaWxlJiYodT1zLmV4dGVuZGVkQ29udGFpbmVyc0J5RmlsZS5nZXQobykpKXJldHVybiB1O2lmKHQmJnQuaW1wb3J0cyl7Zm9yKHZhciBoPTAsej10LmltcG9ydHM7aDx6Lmxlbmd0aDtoKyspe3ZhciBtZT16W2hdO2lmKCFlLm5vZGVJc1N5bnRoZXNpemVkKG1lKSl7dmFyIE1lPWFjKGksbWUsITApO2lmKCEhTWUpe3ZhciAkZT1mbChNZSxyKTshJGV8fCh1PWUuYXBwZW5kKHUsTWUpKX19fWlmKGUubGVuZ3RoKHUpKXJldHVybihzLmV4dGVuZGVkQ29udGFpbmVyc0J5RmlsZXx8KHMuZXh0ZW5kZWRDb250YWluZXJzQnlGaWxlPW5ldyBlLk1hcCkpLnNldChvLHUpLHV9aWYocy5leHRlbmRlZENvbnRhaW5lcnMpcmV0dXJuIHMuZXh0ZW5kZWRDb250YWluZXJzO2Zvcih2YXIgdHI9bC5nZXRTb3VyY2VGaWxlcygpLGRyPTAsRHI9dHI7ZHI8RHIubGVuZ3RoO2RyKyspe3ZhciBRcj1Ecltkcl07aWYoISFlLmlzRXh0ZXJuYWxNb2R1bGUoUXIpKXt2YXIgbGk9RXQoUXIpLCRlPWZsKGxpLHIpOyEkZXx8KHU9ZS5hcHBlbmQodSxsaSkpfX1yZXR1cm4gcy5leHRlbmRlZENvbnRhaW5lcnM9dXx8ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIE5wKHIsaSx0KXt2YXIgbz1ZcyhyKTtpZihvJiYhKHIuZmxhZ3MmMjYyMTQ0KSl7dmFyIHM9ZS5tYXBEZWZpbmVkKG8uZGVjbGFyYXRpb25zLCRlKSx1PWkmJkt1KHIsaSksaD1QcChvLHQpO2lmKGkmJm8uZmxhZ3MmRmwodCkmJnBsKG8saSwxOTIwLCExKSlyZXR1cm4gZS5hcHBlbmQoZS5jb25jYXRlbmF0ZShlLmNvbmNhdGVuYXRlKFtvXSxzKSx1KSxoKTt2YXIgej0hKG8uZmxhZ3MmRmwodCkpJiZvLmZsYWdzJjc4ODk2OCYmZ28obykuZmxhZ3MmNTI0Mjg4JiZ0PT09MTExNTUxP0VmKGksZnVuY3Rpb24odHIpe3JldHVybiBlLmZvckVhY2hFbnRyeSh0cixmdW5jdGlvbihkcil7aWYoZHIuZmxhZ3MmRmwodCkmJkp0KGRyKT09PWdvKG8pKXJldHVybiBkcn0pfSk6dm9pZCAwLG1lPXo/VmUoVmUoW3pdLHMsITApLFtvXSwhMSk6VmUoVmUoW10scywhMCksW29dLCExKTtyZXR1cm4gbWU9ZS5hcHBlbmQobWUsaCksbWU9ZS5hZGRSYW5nZShtZSx1KSxtZX12YXIgTWU9ZS5tYXBEZWZpbmVkKHIuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHRyKXtpZighZS5pc0FtYmllbnRNb2R1bGUodHIpJiZ0ci5wYXJlbnQpe2lmKEZjKHRyLnBhcmVudCkpcmV0dXJuIEV0KHRyLnBhcmVudCk7aWYoZS5pc01vZHVsZUJsb2NrKHRyLnBhcmVudCkmJnRyLnBhcmVudC5wYXJlbnQmJlVzKEV0KHRyLnBhcmVudC5wYXJlbnQpKT09PXIpcmV0dXJuIEV0KHRyLnBhcmVudC5wYXJlbnQpfWlmKGUuaXNDbGFzc0V4cHJlc3Npb24odHIpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbih0ci5wYXJlbnQpJiZ0ci5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kPT09NjMmJmUuaXNBY2Nlc3NFeHByZXNzaW9uKHRyLnBhcmVudC5sZWZ0KSYmZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKHRyLnBhcmVudC5sZWZ0LmV4cHJlc3Npb24pKXJldHVybiBlLmlzTW9kdWxlRXhwb3J0c0FjY2Vzc0V4cHJlc3Npb24odHIucGFyZW50LmxlZnQpfHxlLmlzRXhwb3J0c0lkZW50aWZpZXIodHIucGFyZW50LmxlZnQuZXhwcmVzc2lvbik/RXQoZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHRyKSk6KE9zKHRyLnBhcmVudC5sZWZ0LmV4cHJlc3Npb24pLHZhKHRyLnBhcmVudC5sZWZ0LmV4cHJlc3Npb24pLnJlc29sdmVkU3ltYm9sKX0pO2lmKCFlLmxlbmd0aChNZSkpcmV0dXJuO3JldHVybiBlLm1hcERlZmluZWQoTWUsZnVuY3Rpb24odHIpe3JldHVybiBmbCh0cixyKT90cjp2b2lkIDB9KTtmdW5jdGlvbiAkZSh0cil7cmV0dXJuIG8mJm5jKHRyLG8pfX1mdW5jdGlvbiBQcChyLGkpe3ZhciB0PSEhZS5sZW5ndGgoci5kZWNsYXJhdGlvbnMpJiZlLmZpcnN0KHIuZGVjbGFyYXRpb25zKTtpZihpJjExMTU1MSYmdCYmdC5wYXJlbnQmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHQucGFyZW50KSYmKGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbih0KSYmdD09PXQucGFyZW50LmluaXRpYWxpemVyfHxlLmlzVHlwZUxpdGVyYWxOb2RlKHQpJiZ0PT09dC5wYXJlbnQudHlwZSkpcmV0dXJuIEV0KHQucGFyZW50KX1mdW5jdGlvbiBuYyhyLGkpe3ZhciB0PWdsKHIpLG89dCYmdC5leHBvcnRzJiZ0LmV4cG9ydHMuZ2V0KFwiZXhwb3J0PVwiKTtyZXR1cm4gbyYmX2wobyxpKT90OnZvaWQgMH1mdW5jdGlvbiBmbChyLGkpe2lmKHI9PT1ZcyhpKSlyZXR1cm4gaTt2YXIgdD1yLmV4cG9ydHMmJnIuZXhwb3J0cy5nZXQoXCJleHBvcnQ9XCIpO2lmKHQmJl9sKHQsaSkpcmV0dXJuIHI7dmFyIG89ZGMocikscz1vLmdldChpLmVzY2FwZWROYW1lKTtyZXR1cm4gcyYmX2wocyxpKT9zOmUuZm9yRWFjaEVudHJ5KG8sZnVuY3Rpb24odSl7aWYoX2wodSxpKSlyZXR1cm4gdX0pfWZ1bmN0aW9uIF9sKHIsaSl7aWYoc28ob3Moc28ocikpKT09PXNvKG9zKHNvKGkpKSkpcmV0dXJuIHJ9ZnVuY3Rpb24gY3Uocil7cmV0dXJuIHNvKHImJihyLmZsYWdzJjEwNDg1NzYpIT09MCYmci5leHBvcnRTeW1ib2x8fHIpfWZ1bmN0aW9uIGdjKHIpe3JldHVybiEhKHIuZmxhZ3MmMTExNTUxfHxyLmZsYWdzJjIwOTcxNTImJlBzKHIpLmZsYWdzJjExMTU1MSYmIXZ1KHIpKX1mdW5jdGlvbiBUZihyKXtmb3IodmFyIGk9ci5tZW1iZXJzLHQ9MCxvPWk7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aWYocy5raW5kPT09MTcxJiZlLm5vZGVJc1ByZXNlbnQocy5ib2R5KSlyZXR1cm4gc319ZnVuY3Rpb24gbWMocil7dmFyIGk9bmV3IEZlKERpLHIpO3JldHVybiBCZSsrLGkuaWQ9QmUsZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucmVjb3JkVHlwZShpKSxpfWZ1bmN0aW9uIElwKHIpe3JldHVybiBuZXcgRmUoRGkscil9ZnVuY3Rpb24gbXMocixpLHQpe3Q9PT12b2lkIDAmJih0PTApO3ZhciBvPW1jKHIpO3JldHVybiBvLmludHJpbnNpY05hbWU9aSxvLm9iamVjdEZsYWdzPXQsb31mdW5jdGlvbiB0dShyLGkpe3ZhciB0PW1jKDUyNDI4OCk7cmV0dXJuIHQub2JqZWN0RmxhZ3M9cix0LnN5bWJvbD1pLHQubWVtYmVycz12b2lkIDAsdC5wcm9wZXJ0aWVzPXZvaWQgMCx0LmNhbGxTaWduYXR1cmVzPXZvaWQgMCx0LmNvbnN0cnVjdFNpZ25hdHVyZXM9dm9pZCAwLHQuaW5kZXhJbmZvcz12b2lkIDAsdH1mdW5jdGlvbiB3cCgpe3JldHVybiBQYShlLmFycmF5RnJvbShHLmtleXMoKSxCdSkpfWZ1bmN0aW9uIEhjKHIpe3ZhciBpPW1jKDI2MjE0NCk7cmV0dXJuIHImJihpLnN5bWJvbD1yKSxpfWZ1bmN0aW9uIE9sKHIpe3JldHVybiByLmNoYXJDb2RlQXQoMCk9PT05NSYmci5jaGFyQ29kZUF0KDEpPT09OTUmJnIuY2hhckNvZGVBdCgyKSE9PTk1JiZyLmNoYXJDb2RlQXQoMikhPT02NCYmci5jaGFyQ29kZUF0KDIpIT09MzV9ZnVuY3Rpb24gdGYocil7dmFyIGk7cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbih0LG8pe3hmKHQsbykmJihpfHwoaT1bXSkpLnB1c2godCl9KSxpfHxlLmVtcHR5QXJyYXl9ZnVuY3Rpb24geGYocixpKXtyZXR1cm4hT2woaSkmJmdjKHIpfWZ1bmN0aW9uIHpfKHIpe3ZhciBpPXRmKHIpLHQ9ckQocik7cmV0dXJuIHQ/ZS5jb25jYXRlbmF0ZShpLFt0XSk6aX1mdW5jdGlvbiBPYyhyLGksdCxvLHMpe3ZhciB1PXI7cmV0dXJuIHUubWVtYmVycz1pLHUucHJvcGVydGllcz1lLmVtcHR5QXJyYXksdS5jYWxsU2lnbmF0dXJlcz10LHUuY29uc3RydWN0U2lnbmF0dXJlcz1vLHUuaW5kZXhJbmZvcz1zLGkhPT13ZSYmKHUucHJvcGVydGllcz10ZihpKSksdX1mdW5jdGlvbiBycyhyLGksdCxvLHMpe3JldHVybiBPYyh0dSgxNixyKSxpLHQsbyxzKX1mdW5jdGlvbiBPcChyKXtpZihyLmNvbnN0cnVjdFNpZ25hdHVyZXMubGVuZ3RoPT09MClyZXR1cm4gcjtpZihyLm9iamVjdFR5cGVXaXRob3V0QWJzdHJhY3RDb25zdHJ1Y3RTaWduYXR1cmVzKXJldHVybiByLm9iamVjdFR5cGVXaXRob3V0QWJzdHJhY3RDb25zdHJ1Y3RTaWduYXR1cmVzO3ZhciBpPWUuZmlsdGVyKHIuY29uc3RydWN0U2lnbmF0dXJlcyxmdW5jdGlvbihvKXtyZXR1cm4hKG8uZmxhZ3MmNCl9KTtpZihyLmNvbnN0cnVjdFNpZ25hdHVyZXM9PT1pKXJldHVybiByO3ZhciB0PXJzKHIuc3ltYm9sLHIubWVtYmVycyxyLmNhbGxTaWduYXR1cmVzLGUuc29tZShpKT9pOmUuZW1wdHlBcnJheSxyLmluZGV4SW5mb3MpO3JldHVybiByLm9iamVjdFR5cGVXaXRob3V0QWJzdHJhY3RDb25zdHJ1Y3RTaWduYXR1cmVzPXQsdC5vYmplY3RUeXBlV2l0aG91dEFic3RyYWN0Q29uc3RydWN0U2lnbmF0dXJlcz10LHR9ZnVuY3Rpb24gRWYocixpKXtmb3IodmFyIHQsbz1mdW5jdGlvbihoKXtpZihoLmxvY2FscyYmIUN1KGgpJiYodD1pKGgubG9jYWxzLHZvaWQgMCwhMCxoKSkpcmV0dXJue3ZhbHVlOnR9O3N3aXRjaChoLmtpbmQpe2Nhc2UgMzA1OmlmKCFlLmlzRXh0ZXJuYWxPckNvbW1vbkpzTW9kdWxlKGgpKWJyZWFrO2Nhc2UgMjYxOnZhciB6PUV0KGgpO2lmKHQ9aSgoej09bnVsbD92b2lkIDA6ei5leHBvcnRzKXx8d2Usdm9pZCAwLCEwLGgpKXJldHVybnt2YWx1ZTp0fTticmVhaztjYXNlIDI1NzpjYXNlIDIyNjpjYXNlIDI1ODp2YXIgbWU7aWYoKEV0KGgpLm1lbWJlcnN8fHdlKS5mb3JFYWNoKGZ1bmN0aW9uKE1lLCRlKXtNZS5mbGFncyY3ODg5NjgmJihtZXx8KG1lPWUuY3JlYXRlU3ltYm9sVGFibGUoKSkpLnNldCgkZSxNZSl9KSxtZSYmKHQ9aShtZSx2b2lkIDAsITEsaCkpKXJldHVybnt2YWx1ZTp0fTticmVha319LHM9cjtzO3M9cy5wYXJlbnQpe3ZhciB1PW8ocyk7aWYodHlwZW9mIHU9PVwib2JqZWN0XCIpcmV0dXJuIHUudmFsdWV9cmV0dXJuIGkoaWksdm9pZCAwLCEwKX1mdW5jdGlvbiBGbChyKXtyZXR1cm4gcj09PTExMTU1MT8xMTE1NTE6MTkyMH1mdW5jdGlvbiBwbChyLGksdCxvLHMpe2lmKHM9PT12b2lkIDAmJihzPW5ldyBlLk1hcCksIShyJiYhTXAocikpKXJldHVybjt2YXIgdT1BYShyKSxoPXUuYWNjZXNzaWJsZUNoYWluQ2FjaGV8fCh1LmFjY2Vzc2libGVDaGFpbkNhY2hlPW5ldyBlLk1hcCksej1FZihpLGZ1bmN0aW9uKENpLCRpLFppLHF0KXtyZXR1cm4gcXR9KSxtZT1cIlwiLmNvbmNhdChvPzA6MSxcInxcIikuY29uY2F0KHomJkEoeiksXCJ8XCIpLmNvbmNhdCh0KTtpZihoLmhhcyhtZSkpcmV0dXJuIGguZ2V0KG1lKTt2YXIgTWU9eShyKSwkZT1zLmdldChNZSk7JGV8fHMuc2V0KE1lLCRlPVtdKTt2YXIgdHI9RWYoaSxkcik7cmV0dXJuIGguc2V0KG1lLHRyKSx0cjtmdW5jdGlvbiBkcihDaSwkaSxaaSl7aWYoISFlLnB1c2hJZlVuaXF1ZSgkZSxDaSkpe3ZhciBxdD1saShDaSwkaSxaaSk7cmV0dXJuICRlLnBvcCgpLHF0fX1mdW5jdGlvbiBEcihDaSwkaSl7cmV0dXJuIUZwKENpLGksJGkpfHwhIXBsKENpLnBhcmVudCxpLEZsKCRpKSxvLHMpfWZ1bmN0aW9uIFFyKENpLCRpLFppKXtyZXR1cm4ocj09PSgkaXx8Q2kpfHxzbyhyKT09PXNvKCRpfHxDaSkpJiYhZS5zb21lKENpLmRlY2xhcmF0aW9ucyxGYykmJihaaXx8RHIoc28oQ2kpLHQpKX1mdW5jdGlvbiBsaShDaSwkaSxaaSl7aWYoUXIoQ2kuZ2V0KHIuZXNjYXBlZE5hbWUpLHZvaWQgMCwkaSkpcmV0dXJuW3JdO3ZhciBxdD1lLmZvckVhY2hFbnRyeShDaSxmdW5jdGlvbihOdCl7aWYoTnQuZmxhZ3MmMjA5NzE1MiYmTnQuZXNjYXBlZE5hbWUhPT1cImV4cG9ydD1cIiYmTnQuZXNjYXBlZE5hbWUhPT1cImRlZmF1bHRcIiYmIShlLmlzVU1ERXhwb3J0U3ltYm9sKE50KSYmaSYmZS5pc0V4dGVybmFsTW9kdWxlKGUuZ2V0U291cmNlRmlsZU9mTm9kZShpKSkpJiYoIW98fGUuc29tZShOdC5kZWNsYXJhdGlvbnMsZS5pc0V4dGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24pKSYmKFppPyFlLnNvbWUoTnQuZGVjbGFyYXRpb25zLGUuaXNOYW1lc3BhY2VSZWV4cG9ydERlY2xhcmF0aW9uKTohMCkmJigkaXx8IWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoTnQsMjc1KSkpe3ZhciBSYT1QcyhOdCksY2E9VGkoTnQsUmEsJGkpO2lmKGNhKXJldHVybiBjYX1pZihOdC5lc2NhcGVkTmFtZT09PXIuZXNjYXBlZE5hbWUmJk50LmV4cG9ydFN5bWJvbCYmUXIoc28oTnQuZXhwb3J0U3ltYm9sKSx2b2lkIDAsJGkpKXJldHVybltyXX0pO3JldHVybiBxdHx8KENpPT09aWk/VGkocGUscGUsJGkpOnZvaWQgMCl9ZnVuY3Rpb24gVGkoQ2ksJGksWmkpe2lmKFFyKENpLCRpLFppKSlyZXR1cm5bQ2ldO3ZhciBxdD1kYygkaSksTnQ9cXQmJmRyKHF0LCEwKTtpZihOdCYmRHIoQ2ksRmwodCkpKXJldHVybltDaV0uY29uY2F0KE50KX19ZnVuY3Rpb24gRnAocixpLHQpe3ZhciBvPSExO3JldHVybiBFZihpLGZ1bmN0aW9uKHMpe3ZhciB1PXNvKHMuZ2V0KHIuZXNjYXBlZE5hbWUpKTtyZXR1cm4gdT91PT09cj8hMDoodT11LmZsYWdzJjIwOTcxNTImJiFlLmdldERlY2xhcmF0aW9uT2ZLaW5kKHUsMjc1KT9Qcyh1KTp1LHUuZmxhZ3MmdD8obz0hMCwhMCk6ITEpOiExfSksb31mdW5jdGlvbiBNcChyKXtpZihyLmRlY2xhcmF0aW9ucyYmci5kZWNsYXJhdGlvbnMubGVuZ3RoKXtmb3IodmFyIGk9MCx0PXIuZGVjbGFyYXRpb25zO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldO3N3aXRjaChvLmtpbmQpe2Nhc2UgMTY3OmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOmNvbnRpbnVlO2RlZmF1bHQ6cmV0dXJuITF9fXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEd1KHIsaSl7dmFyIHQ9ZGwocixpLDc4ODk2OCwhMSwhMCk7cmV0dXJuIHQuYWNjZXNzaWJpbGl0eT09PTB9ZnVuY3Rpb24gTHAocixpKXt2YXIgdD1kbChyLGksMTExNTUxLCExLCEwKTtyZXR1cm4gdC5hY2Nlc3NpYmlsaXR5PT09MH1mdW5jdGlvbiBDZihyLGksdCl7dmFyIG89ZGwocixpLHQsITEsITEpO3JldHVybiBvLmFjY2Vzc2liaWxpdHk9PT0wfWZ1bmN0aW9uIFdfKHIsaSx0LG8scyx1KXtpZighIWUubGVuZ3RoKHIpKXtmb3IodmFyIGgsej0hMSxtZT0wLE1lPXI7bWU8TWUubGVuZ3RoO21lKyspe3ZhciAkZT1NZVttZV0sdHI9cGwoJGUsaSxvLCExKTtpZih0cil7aD0kZTt2YXIgZHI9SHUodHJbMF0scyk7aWYoZHIpcmV0dXJuIGRyfWlmKHUmJmUuc29tZSgkZS5kZWNsYXJhdGlvbnMsRmMpKXtpZihzKXt6PSEwO2NvbnRpbnVlfXJldHVybnthY2Nlc3NpYmlsaXR5OjB9fXZhciBEcj1OcCgkZSxpLG8pLFFyPVdfKERyLGksdCx0PT09JGU/Rmwobyk6byxzLHUpO2lmKFFyKXJldHVybiBRcn1pZih6KXJldHVybnthY2Nlc3NpYmlsaXR5OjB9O2lmKGgpcmV0dXJue2FjY2Vzc2liaWxpdHk6MSxlcnJvclN5bWJvbE5hbWU6dG4odCxpLG8pLGVycm9yTW9kdWxlTmFtZTpoIT09dD90bihoLGksMTkyMCk6dm9pZCAwfX19ZnVuY3Rpb24gZ18ocixpLHQsbyl7cmV0dXJuIGRsKHIsaSx0LG8sITApfWZ1bmN0aW9uIGRsKHIsaSx0LG8scyl7aWYociYmaSl7dmFyIHU9V18oW3JdLGkscix0LG8scyk7aWYodSlyZXR1cm4gdTt2YXIgaD1lLmZvckVhY2goci5kZWNsYXJhdGlvbnMsZ2wpO2lmKGgpe3ZhciB6PWdsKGkpO2lmKGghPT16KXJldHVybnthY2Nlc3NpYmlsaXR5OjIsZXJyb3JTeW1ib2xOYW1lOnRuKHIsaSx0KSxlcnJvck1vZHVsZU5hbWU6dG4oaCksZXJyb3JOb2RlOmUuaXNJbkpTRmlsZShpKT9pOnZvaWQgMH19cmV0dXJue2FjY2Vzc2liaWxpdHk6MSxlcnJvclN5bWJvbE5hbWU6dG4ocixpLHQpfX1yZXR1cm57YWNjZXNzaWJpbGl0eTowfX1mdW5jdGlvbiBnbChyKXt2YXIgaT1lLmZpbmRBbmNlc3RvcihyLFZmKTtyZXR1cm4gaSYmRXQoaSl9ZnVuY3Rpb24gVmYocil7cmV0dXJuIGUuaXNBbWJpZW50TW9kdWxlKHIpfHxyLmtpbmQ9PT0zMDUmJmUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUocil9ZnVuY3Rpb24gRmMocil7cmV0dXJuIGUuaXNNb2R1bGVXaXRoU3RyaW5nTGl0ZXJhbE5hbWUocil8fHIua2luZD09PTMwNSYmZS5pc0V4dGVybmFsT3JDb21tb25Kc01vZHVsZShyKX1mdW5jdGlvbiBIdShyLGkpe3ZhciB0O2lmKCFlLmV2ZXJ5KGUuZmlsdGVyKHIuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHUpe3JldHVybiB1LmtpbmQhPT03OX0pLG8pKXJldHVybjtyZXR1cm57YWNjZXNzaWJpbGl0eTowLGFsaWFzZXNUb01ha2VWaXNpYmxlOnR9O2Z1bmN0aW9uIG8odSl7dmFyIGgsejtpZighd3UodSkpe3ZhciBtZT1BdSh1KTtyZXR1cm4gbWUmJiFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKG1lLDEpJiZ3dShtZS5wYXJlbnQpP3ModSxtZSk6ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24odSkmJmUuaXNWYXJpYWJsZVN0YXRlbWVudCh1LnBhcmVudC5wYXJlbnQpJiYhZS5oYXNTeW50YWN0aWNNb2RpZmllcih1LnBhcmVudC5wYXJlbnQsMSkmJnd1KHUucGFyZW50LnBhcmVudC5wYXJlbnQpP3ModSx1LnBhcmVudC5wYXJlbnQpOmUuaXNMYXRlVmlzaWJpbGl0eVBhaW50ZWRTdGF0ZW1lbnQodSkmJiFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHUsMSkmJnd1KHUucGFyZW50KT9zKHUsdSk6ci5mbGFncyYyMDk3MTUyJiZlLmlzQmluZGluZ0VsZW1lbnQodSkmJmUuaXNJbkpTRmlsZSh1KSYmKChoPXUucGFyZW50KT09PW51bGx8fGg9PT12b2lkIDA/dm9pZCAwOmgucGFyZW50KSYmZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24odS5wYXJlbnQucGFyZW50KSYmKCh6PXUucGFyZW50LnBhcmVudC5wYXJlbnQpPT09bnVsbHx8ej09PXZvaWQgMD92b2lkIDA6ei5wYXJlbnQpJiZlLmlzVmFyaWFibGVTdGF0ZW1lbnQodS5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQpJiYhZS5oYXNTeW50YWN0aWNNb2RpZmllcih1LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudCwxKSYmdS5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50JiZ3dSh1LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQpP3ModSx1LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudCk6ITF9cmV0dXJuITB9ZnVuY3Rpb24gcyh1LGgpe3JldHVybiBpJiYodmEodSkuaXNWaXNpYmxlPSEwLHQ9ZS5hcHBlbmRJZlVuaXF1ZSh0LGgpKSwhMH19ZnVuY3Rpb24gYWYocixpKXt2YXIgdDtyLnBhcmVudC5raW5kPT09MTgxfHxyLnBhcmVudC5raW5kPT09MjI4JiYhZS5pc1BhcnRPZlR5cGVOb2RlKHIucGFyZW50KXx8ci5wYXJlbnQua2luZD09PTE2Mj90PTExNjAxMjc6ci5raW5kPT09MTYxfHxyLmtpbmQ9PT0yMDZ8fHIucGFyZW50LmtpbmQ9PT0yNjU/dD0xOTIwOnQ9Nzg4OTY4O3ZhciBvPWUuZ2V0Rmlyc3RJZGVudGlmaWVyKHIpLHM9ZXMoaSxvLmVzY2FwZWRUZXh0LHQsdm9pZCAwLHZvaWQgMCwhMSk7cmV0dXJuIHMmJnMuZmxhZ3MmMjYyMTQ0JiZ0Jjc4ODk2OD97YWNjZXNzaWJpbGl0eTowfTpzJiZIdShzLCEwKXx8e2FjY2Vzc2liaWxpdHk6MSxlcnJvclN5bWJvbE5hbWU6ZS5nZXRUZXh0T2ZOb2RlKG8pLGVycm9yTm9kZTpvfX1mdW5jdGlvbiB0bihyLGksdCxvLHMpe289PT12b2lkIDAmJihvPTQpO3ZhciB1PTcwMjIxODI0O28mMiYmKHV8PTEyOCksbyYxJiYodXw9NTEyKSxvJjgmJih1fD0xNjM4NCksbyYxNiYmKHV8PTEzNDIxNzcyOCk7dmFyIGg9byY0P1VyLnN5bWJvbFRvRXhwcmVzc2lvbjpVci5zeW1ib2xUb0VudGl0eU5hbWU7cmV0dXJuIHM/eihzKS5nZXRUZXh0KCk6ZS51c2luZ1NpbmdsZUxpbmVTdHJpbmdXcml0ZXIoeik7ZnVuY3Rpb24geihtZSl7dmFyIE1lPWgocix0LGksdSksJGU9KGk9PW51bGw/dm9pZCAwOmkua2luZCk9PT0zMDU/ZS5jcmVhdGVQcmludGVyKHtyZW1vdmVDb21tZW50czohMCxuZXZlckFzY2lpRXNjYXBlOiEwfSk6ZS5jcmVhdGVQcmludGVyKHtyZW1vdmVDb21tZW50czohMH0pLHRyPWkmJmUuZ2V0U291cmNlRmlsZU9mTm9kZShpKTtyZXR1cm4gJGUud3JpdGVOb2RlKDQsTWUsdHIsbWUpLG1lfX1mdW5jdGlvbiBNbChyLGksdCxvLHMpe3JldHVybiB0PT09dm9pZCAwJiYodD0wKSxzP3UocykuZ2V0VGV4dCgpOmUudXNpbmdTaW5nbGVMaW5lU3RyaW5nV3JpdGVyKHUpO2Z1bmN0aW9uIHUoaCl7dmFyIHo7dCYyNjIxNDQ/ej1vPT09MT8xODA6MTc5Ono9bz09PTE/MTc1OjE3NDt2YXIgbWU9VXIuc2lnbmF0dXJlVG9TaWduYXR1cmVEZWNsYXJhdGlvbihyLHosaSxScCh0KXw3MDIyMTgyNHw1MTIpLE1lPWUuY3JlYXRlUHJpbnRlcih7cmVtb3ZlQ29tbWVudHM6ITAsb21pdFRyYWlsaW5nU2VtaWNvbG9uOiEwfSksJGU9aSYmZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGkpO3JldHVybiBNZS53cml0ZU5vZGUoNCxtZSwkZSxlLmdldFRyYWlsaW5nU2VtaWNvbG9uRGVmZXJyaW5nV3JpdGVyKGgpKSxofX1mdW5jdGlvbiBPdChyLGksdCxvKXt0PT09dm9pZCAwJiYodD0xMDY0OTYwKSxvPT09dm9pZCAwJiYobz1lLmNyZWF0ZVRleHRXcml0ZXIoXCJcIikpO3ZhciBzPXllLm5vRXJyb3JUcnVuY2F0aW9ufHx0JjEsdT1Vci50eXBlVG9UeXBlTm9kZShyLGksUnAodCl8NzAyMjE4MjR8KHM/MTowKSxvKTtpZih1PT09dm9pZCAwKXJldHVybiBlLkRlYnVnLmZhaWwoXCJzaG91bGQgYWx3YXlzIGdldCB0eXBlbm9kZVwiKTt2YXIgaD17cmVtb3ZlQ29tbWVudHM6ciE9PVVlfSx6PWUuY3JlYXRlUHJpbnRlcihoKSxtZT1pJiZlLmdldFNvdXJjZUZpbGVPZk5vZGUoaSk7ei53cml0ZU5vZGUoNCx1LG1lLG8pO3ZhciBNZT1vLmdldFRleHQoKSwkZT1zP2Uubm9UcnVuY2F0aW9uTWF4aW11bVRydW5jYXRpb25MZW5ndGgqMjplLmRlZmF1bHRNYXhpbXVtVHJ1bmNhdGlvbkxlbmd0aCoyO3JldHVybiAkZSYmTWUmJk1lLmxlbmd0aD49JGU/TWUuc3Vic3RyKDAsJGUtMykrXCIuLi5cIjpNZX1mdW5jdGlvbiBuZihyLGkpe3ZhciB0PUtmKHIuc3ltYm9sKT9PdChyLHIuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pOk90KHIpLG89S2YoaS5zeW1ib2wpP090KGksaS5zeW1ib2wudmFsdWVEZWNsYXJhdGlvbik6T3QoaSk7cmV0dXJuIHQ9PT1vJiYodD1xXyhyKSxvPXFfKGkpKSxbdCxvXX1mdW5jdGlvbiBxXyhyKXtyZXR1cm4gT3Qocix2b2lkIDAsNjQpfWZ1bmN0aW9uIEtmKHIpe3JldHVybiByJiYhIXIudmFsdWVEZWNsYXJhdGlvbiYmZS5pc0V4cHJlc3Npb24oci52YWx1ZURlY2xhcmF0aW9uKSYmIUp1KHIudmFsdWVEZWNsYXJhdGlvbil9ZnVuY3Rpb24gUnAocil7cmV0dXJuIHI9PT12b2lkIDAmJihyPTApLHImODE0Nzc1NjU5fWZ1bmN0aW9uIHlkKHIpe3JldHVybiEhci5zeW1ib2wmJiEhKHIuc3ltYm9sLmZsYWdzJjMyKSYmKHI9PT1hYShyLnN5bWJvbCl8fCEhKHIuZmxhZ3MmNTI0Mjg4KSYmISEoZS5nZXRPYmplY3RGbGFncyhyKSYxNjc3NzIxNikpfWZ1bmN0aW9uIG1fKCl7cmV0dXJue3R5cGVUb1R5cGVOb2RlOmZ1bmN0aW9uKGNpLEZyLGp0LEx0KXtyZXR1cm4gcihGcixqdCxMdCxmdW5jdGlvbihlYSl7cmV0dXJuIG8oY2ksZWEpfSl9LGluZGV4SW5mb1RvSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbjpmdW5jdGlvbihjaSxGcixqdCxMdCl7cmV0dXJuIHIoRnIsanQsTHQsZnVuY3Rpb24oZWEpe3JldHVybiBNZShjaSxlYSx2b2lkIDApfSl9LHNpZ25hdHVyZVRvU2lnbmF0dXJlRGVjbGFyYXRpb246ZnVuY3Rpb24oY2ksRnIsanQsTHQsZWEpe3JldHVybiByKGp0LEx0LGVhLGZ1bmN0aW9uKEt0KXtyZXR1cm4gJGUoY2ksRnIsS3QpfSl9LHN5bWJvbFRvRW50aXR5TmFtZTpmdW5jdGlvbihjaSxGcixqdCxMdCxlYSl7cmV0dXJuIHIoanQsTHQsZWEsZnVuY3Rpb24oS3Qpe3JldHVybiBGbihjaSxLdCxGciwhMSl9KX0sc3ltYm9sVG9FeHByZXNzaW9uOmZ1bmN0aW9uKGNpLEZyLGp0LEx0LGVhKXtyZXR1cm4gcihqdCxMdCxlYSxmdW5jdGlvbihLdCl7cmV0dXJuIHduKGNpLEt0LEZyKX0pfSxzeW1ib2xUb1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnM6ZnVuY3Rpb24oY2ksRnIsanQsTHQpe3JldHVybiByKEZyLGp0LEx0LGZ1bmN0aW9uKGVhKXtyZXR1cm4gJGkoY2ksZWEpfSl9LHN5bWJvbFRvUGFyYW1ldGVyRGVjbGFyYXRpb246ZnVuY3Rpb24oY2ksRnIsanQsTHQpe3JldHVybiByKEZyLGp0LEx0LGZ1bmN0aW9uKGVhKXtyZXR1cm4gUXIoY2ksZWEpfSl9LHR5cGVQYXJhbWV0ZXJUb0RlY2xhcmF0aW9uOmZ1bmN0aW9uKGNpLEZyLGp0LEx0KXtyZXR1cm4gcihGcixqdCxMdCxmdW5jdGlvbihlYSl7cmV0dXJuIERyKGNpLGVhKX0pfSxzeW1ib2xUYWJsZVRvRGVjbGFyYXRpb25TdGF0ZW1lbnRzOmZ1bmN0aW9uKGNpLEZyLGp0LEx0LGVhKXtyZXR1cm4gcihGcixqdCxMdCxmdW5jdGlvbihLdCl7cmV0dXJuIExuKGNpLEt0LGVhKX0pfX07ZnVuY3Rpb24gcihjaSxGcixqdCxMdCl7dmFyIGVhLEt0O2UuRGVidWcuYXNzZXJ0KGNpPT09dm9pZCAwfHwoY2kuZmxhZ3MmOCk9PT0wKTt2YXIgJHQ9e2VuY2xvc2luZ0RlY2xhcmF0aW9uOmNpLGZsYWdzOkZyfHwwLHRyYWNrZXI6anQmJmp0LnRyYWNrU3ltYm9sP2p0Ont0cmFja1N5bWJvbDpmdW5jdGlvbigpe3JldHVybiExfSxtb2R1bGVSZXNvbHZlckhvc3Q6RnImMTM0MjE3NzI4P3tnZXRDb21tb25Tb3VyY2VEaXJlY3Rvcnk6bC5nZXRDb21tb25Tb3VyY2VEaXJlY3Rvcnk/ZnVuY3Rpb24oKXtyZXR1cm4gbC5nZXRDb21tb25Tb3VyY2VEaXJlY3RvcnkoKX06ZnVuY3Rpb24oKXtyZXR1cm5cIlwifSxnZXRDdXJyZW50RGlyZWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZ2V0Q3VycmVudERpcmVjdG9yeSgpfSxnZXRTeW1saW5rQ2FjaGU6ZS5tYXliZUJpbmQobCxsLmdldFN5bWxpbmtDYWNoZSksZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGU6ZnVuY3Rpb24oKXt2YXIgWXI7cmV0dXJuKFlyPWwuZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGUpPT09bnVsbHx8WXI9PT12b2lkIDA/dm9pZCAwOllyLmNhbGwobCl9LHVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6ZS5tYXliZUJpbmQobCxsLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMpLHJlZGlyZWN0VGFyZ2V0c01hcDpsLnJlZGlyZWN0VGFyZ2V0c01hcCxnZXRQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q6ZnVuY3Rpb24oWXIpe3JldHVybiBsLmdldFByb2plY3RSZWZlcmVuY2VSZWRpcmVjdChZcil9LGlzU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q6ZnVuY3Rpb24oWXIpe3JldHVybiBsLmlzU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QoWXIpfSxmaWxlRXhpc3RzOmZ1bmN0aW9uKFlyKXtyZXR1cm4gbC5maWxlRXhpc3RzKFlyKX0sZ2V0RmlsZUluY2x1ZGVSZWFzb25zOmZ1bmN0aW9uKCl7cmV0dXJuIGwuZ2V0RmlsZUluY2x1ZGVSZWFzb25zKCl9LHJlYWRGaWxlOmwucmVhZEZpbGU/ZnVuY3Rpb24oWXIpe3JldHVybiBsLnJlYWRGaWxlKFlyKX06dm9pZCAwfTp2b2lkIDB9LGVuY291bnRlcmVkRXJyb3I6ITEscmVwb3J0ZWREaWFnbm9zdGljOiExLHZpc2l0ZWRUeXBlczp2b2lkIDAsc3ltYm9sRGVwdGg6dm9pZCAwLGluZmVyVHlwZVBhcmFtZXRlcnM6dm9pZCAwLGFwcHJveGltYXRlTGVuZ3RoOjB9OyR0LnRyYWNrZXI9aSgkdCwkdC50cmFja2VyKTt2YXIgVWE9THQoJHQpO3JldHVybiAkdC50cnVuY2F0aW5nJiYkdC5mbGFncyYxJiYoKEt0PShlYT0kdC50cmFja2VyKT09PW51bGx8fGVhPT09dm9pZCAwP3ZvaWQgMDplYS5yZXBvcnRUcnVuY2F0aW9uRXJyb3IpPT09bnVsbHx8S3Q9PT12b2lkIDB8fEt0LmNhbGwoZWEpKSwkdC5lbmNvdW50ZXJlZEVycm9yP3ZvaWQgMDpVYX1mdW5jdGlvbiBpKGNpLEZyKXt2YXIganQ9RnIudHJhY2tTeW1ib2w7cmV0dXJuIEtlKEtlKHt9LEZyKSx7cmVwb3J0Q3ljbGljU3RydWN0dXJlRXJyb3I6THQoRnIucmVwb3J0Q3ljbGljU3RydWN0dXJlRXJyb3IpLHJlcG9ydEluYWNjZXNzaWJsZVRoaXNFcnJvcjpMdChGci5yZXBvcnRJbmFjY2Vzc2libGVUaGlzRXJyb3IpLHJlcG9ydEluYWNjZXNzaWJsZVVuaXF1ZVN5bWJvbEVycm9yOkx0KEZyLnJlcG9ydEluYWNjZXNzaWJsZVVuaXF1ZVN5bWJvbEVycm9yKSxyZXBvcnRMaWtlbHlVbnNhZmVJbXBvcnRSZXF1aXJlZEVycm9yOkx0KEZyLnJlcG9ydExpa2VseVVuc2FmZUltcG9ydFJlcXVpcmVkRXJyb3IpLHJlcG9ydE5vbmxvY2FsQXVnbWVudGF0aW9uOkx0KEZyLnJlcG9ydE5vbmxvY2FsQXVnbWVudGF0aW9uKSxyZXBvcnRQcml2YXRlSW5CYXNlT2ZDbGFzc0V4cHJlc3Npb246THQoRnIucmVwb3J0UHJpdmF0ZUluQmFzZU9mQ2xhc3NFeHByZXNzaW9uKSxyZXBvcnROb25TZXJpYWxpemFibGVQcm9wZXJ0eTpMdChGci5yZXBvcnROb25TZXJpYWxpemFibGVQcm9wZXJ0eSksdHJhY2tTeW1ib2w6anQmJmZ1bmN0aW9uKCl7Zm9yKHZhciBlYT1bXSxLdD0wO0t0PGFyZ3VtZW50cy5sZW5ndGg7S3QrKyllYVtLdF09YXJndW1lbnRzW0t0XTt2YXIgJHQ9anQuYXBwbHkodm9pZCAwLGVhKTtyZXR1cm4gJHQmJihjaS5yZXBvcnRlZERpYWdub3N0aWM9ITApLCR0fX0pO2Z1bmN0aW9uIEx0KGVhKXtyZXR1cm4gZWEmJmZ1bmN0aW9uKCl7Zm9yKHZhciBLdD1bXSwkdD0wOyR0PGFyZ3VtZW50cy5sZW5ndGg7JHQrKylLdFskdF09YXJndW1lbnRzWyR0XTtyZXR1cm4gY2kucmVwb3J0ZWREaWFnbm9zdGljPSEwLGVhLmFwcGx5KHZvaWQgMCxLdCl9fX1mdW5jdGlvbiB0KGNpKXtyZXR1cm4gY2kudHJ1bmNhdGluZz9jaS50cnVuY2F0aW5nOmNpLnRydW5jYXRpbmc9Y2kuYXBwcm94aW1hdGVMZW5ndGg+KGNpLmZsYWdzJjE/ZS5ub1RydW5jYXRpb25NYXhpbXVtVHJ1bmNhdGlvbkxlbmd0aDplLmRlZmF1bHRNYXhpbXVtVHJ1bmNhdGlvbkxlbmd0aCl9ZnVuY3Rpb24gbyhjaSxGcil7ZyYmZy50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiZnLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKTt2YXIganQ9RnIuZmxhZ3MmODM4ODYwODtpZihGci5mbGFncyY9LTgzODg2MDksIWNpKXtpZighKEZyLmZsYWdzJjI2MjE0NCkpe0ZyLmVuY291bnRlcmVkRXJyb3I9ITA7cmV0dXJufXJldHVybiBGci5hcHByb3hpbWF0ZUxlbmd0aCs9MyxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDEzMCl9aWYoRnIuZmxhZ3MmNTM2ODcwOTEyfHwoY2k9YnUoY2kpKSxjaS5mbGFncyYxKXJldHVybiBjaS5hbGlhc1N5bWJvbD9lLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoUmEoY2kuYWxpYXNTeW1ib2wpLHooY2kuYWxpYXNUeXBlQXJndW1lbnRzLEZyKSk6Y2k9PT1VZT9lLmFkZFN5bnRoZXRpY0xlYWRpbmdDb21tZW50KGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKSwzLFwidW5yZXNvbHZlZFwiKTooRnIuYXBwcm94aW1hdGVMZW5ndGgrPTMsZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZShjaT09PURlPzEzODoxMzApKTtpZihjaS5mbGFncyYyKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1NSk7aWYoY2kuZmxhZ3MmNClyZXR1cm4gRnIuYXBwcm94aW1hdGVMZW5ndGgrPTYsZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxNTApO2lmKGNpLmZsYWdzJjgpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz02LGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTQ3KTtpZihjaS5mbGFncyY2NClyZXR1cm4gRnIuYXBwcm94aW1hdGVMZW5ndGgrPTYsZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxNTgpO2lmKGNpLmZsYWdzJjE2JiYhY2kuYWxpYXNTeW1ib2wpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz03LGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMzKTtpZihjaS5mbGFncyYxMDI0JiYhKGNpLmZsYWdzJjEwNDg1NzYpKXt2YXIgTHQ9WXMoY2kuc3ltYm9sKSxlYT1jYShMdCxGciw3ODg5NjgpO2lmKGdvKEx0KT09PWNpKXJldHVybiBlYTt2YXIgS3Q9ZS5zeW1ib2xOYW1lKGNpLnN5bWJvbCk7cmV0dXJuIGUuaXNJZGVudGlmaWVyVGV4dChLdCwwKT9mcChlYSxlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoS3Qsdm9pZCAwKSk6ZS5pc0ltcG9ydFR5cGVOb2RlKGVhKT8oZWEuaXNUeXBlT2Y9ITAsZS5mYWN0b3J5LmNyZWF0ZUluZGV4ZWRBY2Nlc3NUeXBlTm9kZShlYSxlLmZhY3RvcnkuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKEt0KSkpKTplLmlzVHlwZVJlZmVyZW5jZU5vZGUoZWEpP2UuZmFjdG9yeS5jcmVhdGVJbmRleGVkQWNjZXNzVHlwZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZVR5cGVRdWVyeU5vZGUoZWEudHlwZU5hbWUpLGUuZmFjdG9yeS5jcmVhdGVMaXRlcmFsVHlwZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoS3QpKSk6ZS5EZWJ1Zy5mYWlsKFwiVW5oYW5kbGVkIHR5cGUgbm9kZSBraW5kIHJldHVybmVkIGZyb20gYHN5bWJvbFRvVHlwZU5vZGVgLlwiKX1pZihjaS5mbGFncyYxMDU2KXJldHVybiBjYShjaS5zeW1ib2wsRnIsNzg4OTY4KTtpZihjaS5mbGFncyYxMjgpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz1jaS52YWx1ZS5sZW5ndGgrMixlLmZhY3RvcnkuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKGUuc2V0RW1pdEZsYWdzKGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKGNpLnZhbHVlLCEhKEZyLmZsYWdzJjI2ODQzNTQ1NikpLDE2Nzc3MjE2KSk7aWYoY2kuZmxhZ3MmMjU2KXt2YXIgJHQ9Y2kudmFsdWU7cmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz0oXCJcIiskdCkubGVuZ3RoLGUuZmFjdG9yeS5jcmVhdGVMaXRlcmFsVHlwZU5vZGUoJHQ8MD9lLmZhY3RvcnkuY3JlYXRlUHJlZml4VW5hcnlFeHByZXNzaW9uKDQwLGUuZmFjdG9yeS5jcmVhdGVOdW1lcmljTGl0ZXJhbCgtJHQpKTplLmZhY3RvcnkuY3JlYXRlTnVtZXJpY0xpdGVyYWwoJHQpKX1pZihjaS5mbGFncyYyMDQ4KXJldHVybiBGci5hcHByb3hpbWF0ZUxlbmd0aCs9ZS5wc2V1ZG9CaWdJbnRUb1N0cmluZyhjaS52YWx1ZSkubGVuZ3RoKzEsZS5mYWN0b3J5LmNyZWF0ZUxpdGVyYWxUeXBlTm9kZShlLmZhY3RvcnkuY3JlYXRlQmlnSW50TGl0ZXJhbChjaS52YWx1ZSkpO2lmKGNpLmZsYWdzJjUxMilyZXR1cm4gRnIuYXBwcm94aW1hdGVMZW5ndGgrPWNpLmludHJpbnNpY05hbWUubGVuZ3RoLGUuZmFjdG9yeS5jcmVhdGVMaXRlcmFsVHlwZU5vZGUoY2kuaW50cmluc2ljTmFtZT09PVwidHJ1ZVwiP2UuZmFjdG9yeS5jcmVhdGVUcnVlKCk6ZS5mYWN0b3J5LmNyZWF0ZUZhbHNlKCkpO2lmKGNpLmZsYWdzJjgxOTIpe2lmKCEoRnIuZmxhZ3MmMTA0ODU3Nikpe2lmKExwKGNpLnN5bWJvbCxGci5lbmNsb3NpbmdEZWNsYXJhdGlvbikpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz02LGNhKGNpLnN5bWJvbCxGciwxMTE1NTEpO0ZyLnRyYWNrZXIucmVwb3J0SW5hY2Nlc3NpYmxlVW5pcXVlU3ltYm9sRXJyb3ImJkZyLnRyYWNrZXIucmVwb3J0SW5hY2Nlc3NpYmxlVW5pcXVlU3ltYm9sRXJyb3IoKX1yZXR1cm4gRnIuYXBwcm94aW1hdGVMZW5ndGgrPTEzLGUuZmFjdG9yeS5jcmVhdGVUeXBlT3BlcmF0b3JOb2RlKDE1NCxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1MSkpfWlmKGNpLmZsYWdzJjE2Mzg0KXJldHVybiBGci5hcHByb3hpbWF0ZUxlbmd0aCs9NCxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDExNCk7aWYoY2kuZmxhZ3MmMzI3NjgpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz05LGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTUzKTtpZihjaS5mbGFncyY2NTUzNilyZXR1cm4gRnIuYXBwcm94aW1hdGVMZW5ndGgrPTQsZS5mYWN0b3J5LmNyZWF0ZUxpdGVyYWxUeXBlTm9kZShlLmZhY3RvcnkuY3JlYXRlTnVsbCgpKTtpZihjaS5mbGFncyYxMzEwNzIpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz01LGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTQzKTtpZihjaS5mbGFncyY0MDk2KXJldHVybiBGci5hcHByb3hpbWF0ZUxlbmd0aCs9NixlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1MSk7aWYoY2kuZmxhZ3MmNjcxMDg4NjQpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz02LGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTQ4KTtpZihlLmlzVGhpc1R5cGVQYXJhbWV0ZXIoY2kpKXJldHVybiBGci5mbGFncyY0MTk0MzA0JiYoIUZyLmVuY291bnRlcmVkRXJyb3ImJiEoRnIuZmxhZ3MmMzI3NjgpJiYoRnIuZW5jb3VudGVyZWRFcnJvcj0hMCksRnIudHJhY2tlci5yZXBvcnRJbmFjY2Vzc2libGVUaGlzRXJyb3ImJkZyLnRyYWNrZXIucmVwb3J0SW5hY2Nlc3NpYmxlVGhpc0Vycm9yKCkpLEZyLmFwcHJveGltYXRlTGVuZ3RoKz00LGUuZmFjdG9yeS5jcmVhdGVUaGlzVHlwZU5vZGUoKTtpZighanQmJmNpLmFsaWFzU3ltYm9sJiYoRnIuZmxhZ3MmMTYzODR8fEd1KGNpLmFsaWFzU3ltYm9sLEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uKSkpe3ZhciBVYT16KGNpLmFsaWFzVHlwZUFyZ3VtZW50cyxGcik7cmV0dXJuIE9sKGNpLmFsaWFzU3ltYm9sLmVzY2FwZWROYW1lKSYmIShjaS5hbGlhc1N5bWJvbC5mbGFncyYzMik/ZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwiXCIpLFVhKTpjYShjaS5hbGlhc1N5bWJvbCxGciw3ODg5NjgsVWEpfXZhciBZcj1lLmdldE9iamVjdEZsYWdzKGNpKTtpZihZciY0KXJldHVybiBlLkRlYnVnLmFzc2VydCghIShjaS5mbGFncyY1MjQyODgpKSxjaS5ub2RlP2pkKGNpLFRsKTpUbChjaSk7aWYoY2kuZmxhZ3MmMjYyMTQ0fHxZciYzKXtpZihjaS5mbGFncyYyNjIxNDQmJmUuY29udGFpbnMoRnIuaW5mZXJUeXBlUGFyYW1ldGVycyxjaSkpe0ZyLmFwcHJveGltYXRlTGVuZ3RoKz1lLnN5bWJvbE5hbWUoY2kuc3ltYm9sKS5sZW5ndGgrNjt2YXIgTmk9dm9pZCAwLEhpPVRjKGNpKTtpZihIaSl7dmFyIF90PXN4KGNpLCEwKTtfdCYmd2YoSGksX3QpfHwoRnIuYXBwcm94aW1hdGVMZW5ndGgrPTksTmk9SGkmJm8oSGksRnIpKX1yZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUluZmVyVHlwZU5vZGUoZHIoY2ksRnIsTmkpKX1pZihGci5mbGFncyY0JiZjaS5mbGFncyYyNjIxNDQmJiFHdShjaS5zeW1ib2wsRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24pKXt2YXIgZ3Q9amEoY2ksRnIpO3JldHVybiBGci5hcHByb3hpbWF0ZUxlbmd0aCs9ZS5pZFRleHQoZ3QpLmxlbmd0aCxlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoZS5pZFRleHQoZ3QpKSx2b2lkIDApfWlmKGNpLnN5bWJvbClyZXR1cm4gY2EoY2kuc3ltYm9sLEZyLDc4ODk2OCk7dmFyIFZ0PShjaT09PVJufHxjaT09PURhKSYmX2UmJl9lLnN5bWJvbD8oY2k9PT1EYT9cInN1Yi1cIjpcInN1cGVyLVwiKStlLnN5bWJvbE5hbWUoX2Uuc3ltYm9sKTpcIj9cIjtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFZ0KSx2b2lkIDApfWlmKGNpLmZsYWdzJjEwNDg1NzYmJmNpLm9yaWdpbiYmKGNpPWNpLm9yaWdpbiksY2kuZmxhZ3MmMzE0NTcyOCl7dmFyIEZhPWNpLmZsYWdzJjEwNDg1NzY/aGQoY2kudHlwZXMpOmNpLnR5cGVzO2lmKGUubGVuZ3RoKEZhKT09PTEpcmV0dXJuIG8oRmFbMF0sRnIpO3ZhciBvbj16KEZhLEZyLCEwKTtpZihvbiYmb24ubGVuZ3RoPjApcmV0dXJuIGNpLmZsYWdzJjEwNDg1NzY/ZS5mYWN0b3J5LmNyZWF0ZVVuaW9uVHlwZU5vZGUob24pOmUuZmFjdG9yeS5jcmVhdGVJbnRlcnNlY3Rpb25UeXBlTm9kZShvbik7IUZyLmVuY291bnRlcmVkRXJyb3ImJiEoRnIuZmxhZ3MmMjYyMTQ0KSYmKEZyLmVuY291bnRlcmVkRXJyb3I9ITApO3JldHVybn1pZihZciY0OClyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoISEoY2kuZmxhZ3MmNTI0Mjg4KSkscmwoY2kpO2lmKGNpLmZsYWdzJjQxOTQzMDQpe3ZhciB6bj1jaS50eXBlO0ZyLmFwcHJveGltYXRlTGVuZ3RoKz02O3ZhciBHYT1vKHpuLEZyKTtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVR5cGVPcGVyYXRvck5vZGUoMTQwLEdhKX1pZihjaS5mbGFncyYxMzQyMTc3Mjgpe3ZhciBRbj1jaS50ZXh0cyx3bz1jaS50eXBlcyxQbz1lLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVIZWFkKFFuWzBdKSxVbz1lLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KGUubWFwKHdvLGZ1bmN0aW9uKHphLCRyKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVRlbXBsYXRlTGl0ZXJhbFR5cGVTcGFuKG8oemEsRnIpLCgkcjx3by5sZW5ndGgtMT9lLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVNaWRkbGU6ZS5mYWN0b3J5LmNyZWF0ZVRlbXBsYXRlVGFpbCkoUW5bJHIrMV0pKX0pKTtyZXR1cm4gRnIuYXBwcm94aW1hdGVMZW5ndGgrPTIsZS5mYWN0b3J5LmNyZWF0ZVRlbXBsYXRlTGl0ZXJhbFR5cGUoUG8sVW8pfWlmKGNpLmZsYWdzJjI2ODQzNTQ1Nil7dmFyIFJzPW8oY2kudHlwZSxGcik7cmV0dXJuIGNhKGNpLnN5bWJvbCxGciw3ODg5NjgsW1JzXSl9aWYoY2kuZmxhZ3MmODM4ODYwOCl7dmFyIEZzPW8oY2kub2JqZWN0VHlwZSxGciksR2E9byhjaS5pbmRleFR5cGUsRnIpO3JldHVybiBGci5hcHByb3hpbWF0ZUxlbmd0aCs9MixlLmZhY3RvcnkuY3JlYXRlSW5kZXhlZEFjY2Vzc1R5cGVOb2RlKEZzLEdhKX1pZihjaS5mbGFncyYxNjc3NzIxNilyZXR1cm4gamQoY2ksZnVuY3Rpb24oemEpe3JldHVybiByYyh6YSl9KTtpZihjaS5mbGFncyYzMzU1NDQzMilyZXR1cm4gbyhjaS5iYXNlVHlwZSxGcik7cmV0dXJuIGUuRGVidWcuZmFpbChcIlNob3VsZCBiZSB1bnJlYWNoYWJsZS5cIik7ZnVuY3Rpb24gcmMoemEpe3ZhciAkcj1vKHphLmNoZWNrVHlwZSxGcik7aWYoRnIuYXBwcm94aW1hdGVMZW5ndGgrPTE1LEZyLmZsYWdzJjQmJnphLnJvb3QuaXNEaXN0cmlidXRpdmUmJiEoemEuY2hlY2tUeXBlLmZsYWdzJjI2MjE0NCkpe3ZhciBoaT1IYyhvbygyNjIxNDQsXCJUXCIpKSxSaT1qYShoaSxGciksbXQ9ZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKFJpKTtGci5hcHByb3hpbWF0ZUxlbmd0aCs9Mzc7dmFyIGZ0PSRkKHphLnJvb3QuY2hlY2tUeXBlLGhpLHphLmNvbWJpbmVkTWFwcGVyfHx6YS5tYXBwZXIpLEh0PUZyLmluZmVyVHlwZVBhcmFtZXRlcnM7RnIuaW5mZXJUeXBlUGFyYW1ldGVycz16YS5yb290LmluZmVyVHlwZVBhcmFtZXRlcnM7dmFyIHZ0PW8odW4oemEucm9vdC5leHRlbmRzVHlwZSxmdCksRnIpO0ZyLmluZmVyVHlwZVBhcmFtZXRlcnM9SHQ7dmFyIGh0PXh1KHVuKFZhKHphLnJvb3Qubm9kZS50cnVlVHlwZSksZnQpKSxtYT14dSh1bihWYSh6YS5yb290Lm5vZGUuZmFsc2VUeXBlKSxmdCkpO3JldHVybiBlLmZhY3RvcnkuY3JlYXRlQ29uZGl0aW9uYWxUeXBlTm9kZSgkcixlLmZhY3RvcnkuY3JlYXRlSW5mZXJUeXBlTm9kZShlLmZhY3RvcnkuY3JlYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCxlLmZhY3RvcnkuY2xvbmVOb2RlKG10LnR5cGVOYW1lKSkpLGUuZmFjdG9yeS5jcmVhdGVDb25kaXRpb25hbFR5cGVOb2RlKGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShlLmZhY3RvcnkuY2xvbmVOb2RlKFJpKSksbyh6YS5jaGVja1R5cGUsRnIpLGUuZmFjdG9yeS5jcmVhdGVDb25kaXRpb25hbFR5cGVOb2RlKG10LHZ0LGh0LG1hKSxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE0MykpLGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTQzKSl9dmFyIENhPUZyLmluZmVyVHlwZVBhcmFtZXRlcnM7RnIuaW5mZXJUeXBlUGFyYW1ldGVycz16YS5yb290LmluZmVyVHlwZVBhcmFtZXRlcnM7dmFyIEFuPW8oemEuZXh0ZW5kc1R5cGUsRnIpO0ZyLmluZmVyVHlwZVBhcmFtZXRlcnM9Q2E7dmFyIGduPXh1KGlwKHphKSksVm49eHUodHAoemEpKTtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUNvbmRpdGlvbmFsVHlwZU5vZGUoJHIsQW4sZ24sVm4pfWZ1bmN0aW9uIHh1KHphKXt2YXIgJHIsaGksUmk7cmV0dXJuIHphLmZsYWdzJjEwNDg1NzY/ISgoJHI9RnIudmlzaXRlZFR5cGVzKT09PW51bGx8fCRyPT09dm9pZCAwKSYmJHIuaGFzKGZ1KHphKSk/KEZyLmZsYWdzJjEzMTA3Mnx8KEZyLmVuY291bnRlcmVkRXJyb3I9ITAsKFJpPShoaT1Gci50cmFja2VyKT09PW51bGx8fGhpPT09dm9pZCAwP3ZvaWQgMDpoaS5yZXBvcnRDeWNsaWNTdHJ1Y3R1cmVFcnJvcik9PT1udWxsfHxSaT09PXZvaWQgMHx8UmkuY2FsbChoaSkpLHMoRnIpKTpqZCh6YSxmdW5jdGlvbihtdCl7cmV0dXJuIG8obXQsRnIpfSk6byh6YSxGcil9ZnVuY3Rpb24gVHMoemEpe2UuRGVidWcuYXNzZXJ0KCEhKHphLmZsYWdzJjUyNDI4OCkpO3ZhciAkcj16YS5kZWNsYXJhdGlvbi5yZWFkb25seVRva2VuP2UuZmFjdG9yeS5jcmVhdGVUb2tlbih6YS5kZWNsYXJhdGlvbi5yZWFkb25seVRva2VuLmtpbmQpOnZvaWQgMCxoaT16YS5kZWNsYXJhdGlvbi5xdWVzdGlvblRva2VuP2UuZmFjdG9yeS5jcmVhdGVUb2tlbih6YS5kZWNsYXJhdGlvbi5xdWVzdGlvblRva2VuLmtpbmQpOnZvaWQgMCxSaSxtdDtpZihtZyh6YSkpe2lmKCEoRWQoemEpLmZsYWdzJjI2MjE0NCkmJkZyLmZsYWdzJjQpe3ZhciBmdD1IYyhvbygyNjIxNDQsXCJUXCIpKSxIdD1qYShmdCxGcik7bXQ9ZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKEh0KX1SaT1lLmZhY3RvcnkuY3JlYXRlVHlwZU9wZXJhdG9yTm9kZSgxNDAsbXR8fG8oRWQoemEpLEZyKSl9ZWxzZSBSaT1vKE11KHphKSxGcik7dmFyIHZ0PWRyKER1KHphKSxGcixSaSksaHQ9emEuZGVjbGFyYXRpb24ubmFtZVR5cGU/byhKbCh6YSksRnIpOnZvaWQgMCxtYT1vKGtnKHZsKHphKSwhIShMdSh6YSkmNCkpLEZyKSxDYT1lLmZhY3RvcnkuY3JlYXRlTWFwcGVkVHlwZU5vZGUoJHIsdnQsaHQsaGksbWEsdm9pZCAwKTtGci5hcHByb3hpbWF0ZUxlbmd0aCs9MTA7dmFyIEFuPWUuc2V0RW1pdEZsYWdzKENhLDEpO3JldHVybiBtZyh6YSkmJiEoRWQoemEpLmZsYWdzJjI2MjE0NCkmJkZyLmZsYWdzJjQ/ZS5mYWN0b3J5LmNyZWF0ZUNvbmRpdGlvbmFsVHlwZU5vZGUobyhFZCh6YSksRnIpLGUuZmFjdG9yeS5jcmVhdGVJbmZlclR5cGVOb2RlKGUuZmFjdG9yeS5jcmVhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLGUuZmFjdG9yeS5jbG9uZU5vZGUobXQudHlwZU5hbWUpKSksQW4sZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxNDMpKTpBbn1mdW5jdGlvbiBybCh6YSl7dmFyICRyLGhpPXphLmlkLFJpPXphLnN5bWJvbDtpZihSaSl7dmFyIG10PXlkKHphKT83ODg5Njg6MTExNTUxO2lmKFNsKFJpLnZhbHVlRGVjbGFyYXRpb24pKXJldHVybiBjYShSaSxGcixtdCk7aWYoUmkuZmxhZ3MmMzImJiFYYShSaSkmJiEoUmkudmFsdWVEZWNsYXJhdGlvbiYmUmkudmFsdWVEZWNsYXJhdGlvbi5raW5kPT09MjI2JiZGci5mbGFncyYyMDQ4KXx8UmkuZmxhZ3MmODk2fHxIdCgpKXJldHVybiBjYShSaSxGcixtdCk7aWYoISgoJHI9RnIudmlzaXRlZFR5cGVzKT09PW51bGx8fCRyPT09dm9pZCAwKSYmJHIuaGFzKGhpKSl7dmFyIGZ0PUJwKHphKTtyZXR1cm4gZnQ/Y2EoZnQsRnIsNzg4OTY4KTpzKEZyKX1lbHNlIHJldHVybiBqZCh6YSxscCl9ZWxzZSByZXR1cm4gbHAoemEpO2Z1bmN0aW9uIEh0KCl7dmFyIHZ0LGh0PSEhKFJpLmZsYWdzJjgxOTIpJiZlLnNvbWUoUmkuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKENhKXtyZXR1cm4gZS5pc1N0YXRpYyhDYSl9KSxtYT0hIShSaS5mbGFncyYxNikmJihSaS5wYXJlbnR8fGUuZm9yRWFjaChSaS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oQ2Epe3JldHVybiBDYS5wYXJlbnQua2luZD09PTMwNXx8Q2EucGFyZW50LmtpbmQ9PT0yNjJ9KSk7aWYoaHR8fG1hKXJldHVybighIShGci5mbGFncyY0MDk2KXx8KCh2dD1Gci52aXNpdGVkVHlwZXMpPT09bnVsbHx8dnQ9PT12b2lkIDA/dm9pZCAwOnZ0LmhhcyhoaSkpKSYmKCEoRnIuZmxhZ3MmOCl8fExwKFJpLEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uKSl9fWZ1bmN0aW9uIGpkKHphLCRyKXt2YXIgaGksUmksbXQ9emEuaWQsZnQ9ZS5nZXRPYmplY3RGbGFncyh6YSkmMTYmJnphLnN5bWJvbCYmemEuc3ltYm9sLmZsYWdzJjMyLEh0PWUuZ2V0T2JqZWN0RmxhZ3MoemEpJjQmJnphLm5vZGU/XCJOXCIrQSh6YS5ub2RlKTp6YS5mbGFncyYxNjc3NzIxNj9cIk5cIitBKHphLnJvb3Qubm9kZSk6emEuc3ltYm9sPyhmdD9cIitcIjpcIlwiKSt5KHphLnN5bWJvbCk6dm9pZCAwO0ZyLnZpc2l0ZWRUeXBlc3x8KEZyLnZpc2l0ZWRUeXBlcz1uZXcgZS5TZXQpLEh0JiYhRnIuc3ltYm9sRGVwdGgmJihGci5zeW1ib2xEZXB0aD1uZXcgZS5NYXApO3ZhciB2dD1Gci5lbmNsb3NpbmdEZWNsYXJhdGlvbiYmdmEoRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24pLGh0PVwiXCIuY29uY2F0KGZ1KHphKSxcInxcIikuY29uY2F0KEZyLmZsYWdzKTt2dCYmKHZ0LnNlcmlhbGl6ZWRUeXBlc3x8KHZ0LnNlcmlhbGl6ZWRUeXBlcz1uZXcgZS5NYXApKTt2YXIgbWE9KGhpPXZ0PT1udWxsP3ZvaWQgMDp2dC5zZXJpYWxpemVkVHlwZXMpPT09bnVsbHx8aGk9PT12b2lkIDA/dm9pZCAwOmhpLmdldChodCk7aWYobWEpcmV0dXJuIG1hLnRydW5jYXRpbmcmJihGci50cnVuY2F0aW5nPSEwKSxGci5hcHByb3hpbWF0ZUxlbmd0aCs9bWEuYWRkZWRMZW5ndGgsem8obWEpO3ZhciBDYTtpZihIdCl7aWYoQ2E9RnIuc3ltYm9sRGVwdGguZ2V0KEh0KXx8MCxDYT4xMClyZXR1cm4gcyhGcik7RnIuc3ltYm9sRGVwdGguc2V0KEh0LENhKzEpfUZyLnZpc2l0ZWRUeXBlcy5hZGQobXQpO3ZhciBBbj1Gci5hcHByb3hpbWF0ZUxlbmd0aCxnbj0kcih6YSksVm49RnIuYXBwcm94aW1hdGVMZW5ndGgtQW47cmV0dXJuIUZyLnJlcG9ydGVkRGlhZ25vc3RpYyYmIUZyLmVuY291bnRlcmVkRXJyb3ImJihGci50cnVuY2F0aW5nJiYoZ24udHJ1bmNhdGluZz0hMCksZ24uYWRkZWRMZW5ndGg9Vm4sKFJpPXZ0PT1udWxsP3ZvaWQgMDp2dC5zZXJpYWxpemVkVHlwZXMpPT09bnVsbHx8Umk9PT12b2lkIDB8fFJpLnNldChodCxnbikpLEZyLnZpc2l0ZWRUeXBlcy5kZWxldGUobXQpLEh0JiZGci5zeW1ib2xEZXB0aC5zZXQoSHQsQ2EpLGduO2Z1bmN0aW9uIHpvKEJvKXtyZXR1cm4hZS5ub2RlSXNTeW50aGVzaXplZChCbykmJmUuZ2V0UGFyc2VUcmVlTm9kZShCbyk9PT1Cbz9CbzplLnNldFRleHRSYW5nZShlLmZhY3RvcnkuY2xvbmVOb2RlKGUudmlzaXRFYWNoQ2hpbGQoQm8sem8sZS5udWxsVHJhbnNmb3JtYXRpb25Db250ZXh0LHVzKSksQm8pfWZ1bmN0aW9uIHVzKEJvLElvLFFvLGxzLGdpKXtyZXR1cm4gQm8mJkJvLmxlbmd0aD09PTA/ZS5zZXRUZXh0UmFuZ2UoZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheSh2b2lkIDAsQm8uaGFzVHJhaWxpbmdDb21tYSksQm8pOmUudmlzaXROb2RlcyhCbyxJbyxRbyxscyxnaSl9fWZ1bmN0aW9uIGxwKHphKXtpZihCYyh6YSl8fHphLmNvbnRhaW5zRXJyb3IpcmV0dXJuIFRzKHphKTt2YXIgJHI9UnUoemEpO2lmKCEkci5wcm9wZXJ0aWVzLmxlbmd0aCYmISRyLmluZGV4SW5mb3MubGVuZ3RoKXtpZighJHIuY2FsbFNpZ25hdHVyZXMubGVuZ3RoJiYhJHIuY29uc3RydWN0U2lnbmF0dXJlcy5sZW5ndGgpcmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz0yLGUuc2V0RW1pdEZsYWdzKGUuZmFjdG9yeS5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUodm9pZCAwKSwxKTtpZigkci5jYWxsU2lnbmF0dXJlcy5sZW5ndGg9PT0xJiYhJHIuY29uc3RydWN0U2lnbmF0dXJlcy5sZW5ndGgpe3ZhciBoaT0kci5jYWxsU2lnbmF0dXJlc1swXSxSaT0kZShoaSwxNzksRnIpO3JldHVybiBSaX1pZigkci5jb25zdHJ1Y3RTaWduYXR1cmVzLmxlbmd0aD09PTEmJiEkci5jYWxsU2lnbmF0dXJlcy5sZW5ndGgpe3ZhciBoaT0kci5jb25zdHJ1Y3RTaWduYXR1cmVzWzBdLFJpPSRlKGhpLDE4MCxGcik7cmV0dXJuIFJpfX12YXIgbXQ9ZS5maWx0ZXIoJHIuY29uc3RydWN0U2lnbmF0dXJlcyxmdW5jdGlvbihDYSl7cmV0dXJuISEoQ2EuZmxhZ3MmNCl9KTtpZihlLnNvbWUobXQpKXt2YXIgZnQ9ZS5tYXAobXQsaW0pLEh0PSRyLmNhbGxTaWduYXR1cmVzLmxlbmd0aCsoJHIuY29uc3RydWN0U2lnbmF0dXJlcy5sZW5ndGgtbXQubGVuZ3RoKSskci5pbmRleEluZm9zLmxlbmd0aCsoRnIuZmxhZ3MmMjA0OD9lLmNvdW50V2hlcmUoJHIucHJvcGVydGllcyxmdW5jdGlvbihDYSl7cmV0dXJuIShDYS5mbGFncyY0MTk0MzA0KX0pOmUubGVuZ3RoKCRyLnByb3BlcnRpZXMpKTtyZXR1cm4gSHQmJmZ0LnB1c2goT3AoJHIpKSxvKERvKGZ0KSxGcil9dmFyIHZ0PUZyLmZsYWdzO0ZyLmZsYWdzfD00MTk0MzA0O3ZhciBodD1pZCgkcik7RnIuZmxhZ3M9dnQ7dmFyIG1hPWUuZmFjdG9yeS5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUoaHQpO3JldHVybiBGci5hcHByb3hpbWF0ZUxlbmd0aCs9MixlLnNldEVtaXRGbGFncyhtYSxGci5mbGFncyYxMDI0PzA6MSksbWF9ZnVuY3Rpb24gVGwoemEpe3ZhciAkcj14byh6YSk7aWYoemEudGFyZ2V0PT09UGl8fHphLnRhcmdldD09PVFpKXtpZihGci5mbGFncyYyKXt2YXIgaGk9bygkclswXSxGcik7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZSh6YS50YXJnZXQ9PT1QaT9cIkFycmF5XCI6XCJSZWFkb25seUFycmF5XCIsW2hpXSl9dmFyIFJpPW8oJHJbMF0sRnIpLG10PWUuZmFjdG9yeS5jcmVhdGVBcnJheVR5cGVOb2RlKFJpKTtyZXR1cm4gemEudGFyZ2V0PT09UGk/bXQ6ZS5mYWN0b3J5LmNyZWF0ZVR5cGVPcGVyYXRvck5vZGUoMTQ1LG10KX1lbHNlIGlmKHphLnRhcmdldC5vYmplY3RGbGFncyY4KXtpZigkcj1lLnNhbWVNYXAoJHIsZnVuY3Rpb24oenQsTGEpe3JldHVybiBrZyh6dCwhISh6YS50YXJnZXQuZWxlbWVudEZsYWdzW0xhXSYyKSl9KSwkci5sZW5ndGg+MCl7dmFyIGZ0PSRfKHphKSxIdD16KCRyLnNsaWNlKDAsZnQpLEZyKTtpZihIdCl7aWYoemEudGFyZ2V0LmxhYmVsZWRFbGVtZW50RGVjbGFyYXRpb25zKWZvcih2YXIgdnQ9MDt2dDxIdC5sZW5ndGg7dnQrKyl7dmFyIGh0PXphLnRhcmdldC5lbGVtZW50RmxhZ3NbdnRdO0h0W3Z0XT1lLmZhY3RvcnkuY3JlYXRlTmFtZWRUdXBsZU1lbWJlcihodCYxMj9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjUpOnZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKEUwKHphLnRhcmdldC5sYWJlbGVkRWxlbWVudERlY2xhcmF0aW9uc1t2dF0pKSksaHQmMj9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpOnZvaWQgMCxodCY0P2UuZmFjdG9yeS5jcmVhdGVBcnJheVR5cGVOb2RlKEh0W3Z0XSk6SHRbdnRdKX1lbHNlIGZvcih2YXIgdnQ9MDt2dDxNYXRoLm1pbihmdCxIdC5sZW5ndGgpO3Z0Kyspe3ZhciBodD16YS50YXJnZXQuZWxlbWVudEZsYWdzW3Z0XTtIdFt2dF09aHQmMTI/ZS5mYWN0b3J5LmNyZWF0ZVJlc3RUeXBlTm9kZShodCY0P2UuZmFjdG9yeS5jcmVhdGVBcnJheVR5cGVOb2RlKEh0W3Z0XSk6SHRbdnRdKTpodCYyP2UuZmFjdG9yeS5jcmVhdGVPcHRpb25hbFR5cGVOb2RlKEh0W3Z0XSk6SHRbdnRdfXZhciBtYT1lLnNldEVtaXRGbGFncyhlLmZhY3RvcnkuY3JlYXRlVHVwbGVUeXBlTm9kZShIdCksMSk7cmV0dXJuIHphLnRhcmdldC5yZWFkb25seT9lLmZhY3RvcnkuY3JlYXRlVHlwZU9wZXJhdG9yTm9kZSgxNDUsbWEpOm1hfX1pZihGci5lbmNvdW50ZXJlZEVycm9yfHxGci5mbGFncyY1MjQyODgpe3ZhciBtYT1lLnNldEVtaXRGbGFncyhlLmZhY3RvcnkuY3JlYXRlVHVwbGVUeXBlTm9kZShbXSksMSk7cmV0dXJuIHphLnRhcmdldC5yZWFkb25seT9lLmZhY3RvcnkuY3JlYXRlVHlwZU9wZXJhdG9yTm9kZSgxNDUsbWEpOm1hfUZyLmVuY291bnRlcmVkRXJyb3I9ITA7cmV0dXJufWVsc2V7aWYoRnIuZmxhZ3MmMjA0OCYmemEuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24mJmUuaXNDbGFzc0xpa2UoemEuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pJiYhTHAoemEuc3ltYm9sLEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uKSlyZXR1cm4gcmwoemEpO3ZhciBDYT16YS50YXJnZXQub3V0ZXJUeXBlUGFyYW1ldGVycyx2dD0wLEFuPXZvaWQgMDtpZihDYSlmb3IodmFyIGduPUNhLmxlbmd0aDt2dDxnbjspe3ZhciBWbj12dCx6bz1jeChDYVt2dF0pO2RvIHZ0Kys7d2hpbGUodnQ8Z24mJmN4KENhW3Z0XSk9PT16byk7aWYoIWUucmFuZ2VFcXVhbHMoQ2EsJHIsVm4sdnQpKXt2YXIgdXM9eigkci5zbGljZShWbix2dCksRnIpLEJvPUZyLmZsYWdzO0ZyLmZsYWdzfD0xNjt2YXIgSW89Y2Eoem8sRnIsNzg4OTY4LHVzKTtGci5mbGFncz1CbyxBbj1Bbj9mcChBbixJbyk6SW99fXZhciBRbz12b2lkIDA7aWYoJHIubGVuZ3RoPjApe3ZhciBscz0oemEudGFyZ2V0LnR5cGVQYXJhbWV0ZXJzfHxlLmVtcHR5QXJyYXkpLmxlbmd0aDtRbz16KCRyLnNsaWNlKHZ0LGxzKSxGcil9dmFyIGh0PUZyLmZsYWdzO0ZyLmZsYWdzfD0xNjt2YXIgZ2k9Y2EoemEuc3ltYm9sLEZyLDc4ODk2OCxRbyk7cmV0dXJuIEZyLmZsYWdzPWh0LEFuP2ZwKEFuLGdpKTpnaX19ZnVuY3Rpb24gZnAoemEsJHIpe2lmKGUuaXNJbXBvcnRUeXBlTm9kZSh6YSkpe3ZhciBoaT16YS50eXBlQXJndW1lbnRzLFJpPXphLnF1YWxpZmllcjtSaSYmKGUuaXNJZGVudGlmaWVyKFJpKT9SaT1lLmZhY3RvcnkudXBkYXRlSWRlbnRpZmllcihSaSxoaSk6Umk9ZS5mYWN0b3J5LnVwZGF0ZVF1YWxpZmllZE5hbWUoUmksUmkubGVmdCxlLmZhY3RvcnkudXBkYXRlSWRlbnRpZmllcihSaS5yaWdodCxoaSkpKSxoaT0kci50eXBlQXJndW1lbnRzO2Zvcih2YXIgbXQ9emcoJHIpLGZ0PTAsSHQ9bXQ7ZnQ8SHQubGVuZ3RoO2Z0Kyspe3ZhciB2dD1IdFtmdF07Umk9Umk/ZS5mYWN0b3J5LmNyZWF0ZVF1YWxpZmllZE5hbWUoUmksdnQpOnZ0fXJldHVybiBlLmZhY3RvcnkudXBkYXRlSW1wb3J0VHlwZU5vZGUoemEsemEuYXJndW1lbnQsUmksaGksemEuaXNUeXBlT2YpfWVsc2V7dmFyIGhpPXphLnR5cGVBcmd1bWVudHMsaHQ9emEudHlwZU5hbWU7ZS5pc0lkZW50aWZpZXIoaHQpP2h0PWUuZmFjdG9yeS51cGRhdGVJZGVudGlmaWVyKGh0LGhpKTpodD1lLmZhY3RvcnkudXBkYXRlUXVhbGlmaWVkTmFtZShodCxodC5sZWZ0LGUuZmFjdG9yeS51cGRhdGVJZGVudGlmaWVyKGh0LnJpZ2h0LGhpKSksaGk9JHIudHlwZUFyZ3VtZW50cztmb3IodmFyIG10PXpnKCRyKSxtYT0wLENhPW10O21hPENhLmxlbmd0aDttYSsrKXt2YXIgdnQ9Q2FbbWFdO2h0PWUuZmFjdG9yeS5jcmVhdGVRdWFsaWZpZWROYW1lKGh0LHZ0KX1yZXR1cm4gZS5mYWN0b3J5LnVwZGF0ZVR5cGVSZWZlcmVuY2VOb2RlKHphLGh0LGhpKX19ZnVuY3Rpb24gemcoemEpe2Zvcih2YXIgJHI9emEudHlwZU5hbWUsaGk9W107IWUuaXNJZGVudGlmaWVyKCRyKTspaGkudW5zaGlmdCgkci5yaWdodCksJHI9JHIubGVmdDtyZXR1cm4gaGkudW5zaGlmdCgkciksaGl9ZnVuY3Rpb24gaWQoemEpe2lmKHQoRnIpKXJldHVybltlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlTaWduYXR1cmUodm9pZCAwLFwiLi4uXCIsdm9pZCAwLHZvaWQgMCldO2Zvcih2YXIgJHI9W10saGk9MCxSaT16YS5jYWxsU2lnbmF0dXJlcztoaTxSaS5sZW5ndGg7aGkrKyl7dmFyIG10PVJpW2hpXTskci5wdXNoKCRlKG10LDE3NCxGcikpfWZvcih2YXIgZnQ9MCxIdD16YS5jb25zdHJ1Y3RTaWduYXR1cmVzO2Z0PEh0Lmxlbmd0aDtmdCsrKXt2YXIgbXQ9SHRbZnRdO210LmZsYWdzJjR8fCRyLnB1c2goJGUobXQsMTc1LEZyKSl9Zm9yKHZhciB2dD0wLGh0PXphLmluZGV4SW5mb3M7dnQ8aHQubGVuZ3RoO3Z0Kyspe3ZhciBtYT1odFt2dF07JHIucHVzaChNZShtYSxGcix6YS5vYmplY3RGbGFncyYxMDI0P3MoRnIpOnZvaWQgMCkpfXZhciBDYT16YS5wcm9wZXJ0aWVzO2lmKCFDYSlyZXR1cm4gJHI7Zm9yKHZhciBBbj0wLGduPTAsVm49Q2E7Z248Vm4ubGVuZ3RoO2duKyspe3ZhciB6bz1Wbltnbl07aWYoQW4rKyxGci5mbGFncyYyMDQ4KXtpZih6by5mbGFncyY0MTk0MzA0KWNvbnRpbnVlO2UuZ2V0RGVjbGFyYXRpb25Nb2RpZmllckZsYWdzRnJvbVN5bWJvbCh6bykmMjQmJkZyLnRyYWNrZXIucmVwb3J0UHJpdmF0ZUluQmFzZU9mQ2xhc3NFeHByZXNzaW9uJiZGci50cmFja2VyLnJlcG9ydFByaXZhdGVJbkJhc2VPZkNsYXNzRXhwcmVzc2lvbihlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHpvLmVzY2FwZWROYW1lKSl9aWYodChGcikmJkFuKzI8Q2EubGVuZ3RoLTEpeyRyLnB1c2goZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlKHZvaWQgMCxcIi4uLiBcIi5jb25jYXQoQ2EubGVuZ3RoLUFuLFwiIG1vcmUgLi4uXCIpLHZvaWQgMCx2b2lkIDApKSxoKENhW0NhLmxlbmd0aC0xXSxGciwkcik7YnJlYWt9aCh6byxGciwkcil9cmV0dXJuICRyLmxlbmd0aD8kcjp2b2lkIDB9fWZ1bmN0aW9uIHMoY2kpe3JldHVybiBjaS5hcHByb3hpbWF0ZUxlbmd0aCs9MyxjaS5mbGFncyYxP2UuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKTplLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCIuLi5cIiksdm9pZCAwKX1mdW5jdGlvbiB1KGNpLEZyKXt2YXIganQ7cmV0dXJuISEoZS5nZXRDaGVja0ZsYWdzKGNpKSY4MTkyKSYmKGUuY29udGFpbnMoRnIucmV2ZXJzZU1hcHBlZFN0YWNrLGNpKXx8KChqdD1Gci5yZXZlcnNlTWFwcGVkU3RhY2spPT09bnVsbHx8anQ9PT12b2lkIDA/dm9pZCAwOmp0WzBdKSYmIShlLmdldE9iamVjdEZsYWdzKGUubGFzdChGci5yZXZlcnNlTWFwcGVkU3RhY2spLnByb3BlcnR5VHlwZSkmMTYpKX1mdW5jdGlvbiBoKGNpLEZyLGp0KXt2YXIgTHQsZWEsS3Q9ISEoZS5nZXRDaGVja0ZsYWdzKGNpKSY4MTkyKSwkdD11KGNpLEZyKT9PZTptbChjaSksVWE9RnIuZW5jbG9zaW5nRGVjbGFyYXRpb247aWYoRnIuZW5jbG9zaW5nRGVjbGFyYXRpb249dm9pZCAwLEZyLnRyYWNrZXIudHJhY2tTeW1ib2wmJmUuZ2V0Q2hlY2tGbGFncyhjaSkmNDA5NiYmcGcoY2kuZXNjYXBlZE5hbWUpKWlmKGNpLmRlY2xhcmF0aW9ucyl7dmFyIFlyPWUuZmlyc3QoY2kuZGVjbGFyYXRpb25zKTtpZigkZyhZcikpaWYoZS5pc0JpbmFyeUV4cHJlc3Npb24oWXIpKXt2YXIgTmk9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihZcik7TmkmJmUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihOaSkmJmUuaXNQcm9wZXJ0eUFjY2Vzc0VudGl0eU5hbWVFeHByZXNzaW9uKE5pLmFyZ3VtZW50RXhwcmVzc2lvbikmJmxpKE5pLmFyZ3VtZW50RXhwcmVzc2lvbixVYSxGcil9ZWxzZSBsaShZci5uYW1lLmV4cHJlc3Npb24sVWEsRnIpfWVsc2UhKChMdD1Gci50cmFja2VyKT09PW51bGx8fEx0PT09dm9pZCAwKSYmTHQucmVwb3J0Tm9uU2VyaWFsaXphYmxlUHJvcGVydHkmJkZyLnRyYWNrZXIucmVwb3J0Tm9uU2VyaWFsaXphYmxlUHJvcGVydHkodG4oY2kpKTtGci5lbmNsb3NpbmdEZWNsYXJhdGlvbj1jaS52YWx1ZURlY2xhcmF0aW9ufHwoKGVhPWNpLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxlYT09PXZvaWQgMD92b2lkIDA6ZWFbMF0pfHxVYTt2YXIgSGk9bHQoY2ksRnIpO0ZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uPVVhLEZyLmFwcHJveGltYXRlTGVuZ3RoKz1lLnN5bWJvbE5hbWUoY2kpLmxlbmd0aCsxO3ZhciBfdD1jaS5mbGFncyYxNjc3NzIxNj9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpOnZvaWQgMDtpZihjaS5mbGFncyY4MjA4JiYhUGYoJHQpLmxlbmd0aCYmIVp1KGNpKSlmb3IodmFyIGd0PW90KGVjKCR0LGZ1bmN0aW9uKFVvKXtyZXR1cm4hKFVvLmZsYWdzJjMyNzY4KX0pLDApLFZ0PTAsRmE9Z3Q7VnQ8RmEubGVuZ3RoO1Z0Kyspe3ZhciBvbj1GYVtWdF0sem49JGUob24sMTY4LEZyLHtuYW1lOkhpLHF1ZXN0aW9uVG9rZW46X3R9KTtqdC5wdXNoKFBvKHpuKSl9ZWxzZXt2YXIgR2E9dm9pZCAwO3UoY2ksRnIpP0dhPXMoRnIpOihLdCYmKEZyLnJldmVyc2VNYXBwZWRTdGFja3x8KEZyLnJldmVyc2VNYXBwZWRTdGFjaz1bXSksRnIucmV2ZXJzZU1hcHBlZFN0YWNrLnB1c2goY2kpKSxHYT0kdD9LYShGciwkdCxjaSxVYSk6ZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxMzApLEt0JiZGci5yZXZlcnNlTWFwcGVkU3RhY2sucG9wKCkpO3ZhciBRbj1adShjaSk/W2UuZmFjdG9yeS5jcmVhdGVUb2tlbigxNDUpXTp2b2lkIDA7UW4mJihGci5hcHByb3hpbWF0ZUxlbmd0aCs9OSk7dmFyIHdvPWUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eVNpZ25hdHVyZShRbixIaSxfdCxHYSk7anQucHVzaChQbyh3bykpfWZ1bmN0aW9uIFBvKFVvKXt2YXIgUnM7aWYoZS5zb21lKGNpLmRlY2xhcmF0aW9ucyxmdW5jdGlvbih4dSl7cmV0dXJuIHh1LmtpbmQ9PT0zNDd9KSl7dmFyIEZzPShScz1jaS5kZWNsYXJhdGlvbnMpPT09bnVsbHx8UnM9PT12b2lkIDA/dm9pZCAwOlJzLmZpbmQoZnVuY3Rpb24oeHUpe3JldHVybiB4dS5raW5kPT09MzQ3fSkscmM9ZS5nZXRUZXh0T2ZKU0RvY0NvbW1lbnQoRnMuY29tbWVudCk7cmMmJmUuc2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKFVvLFt7a2luZDozLHRleHQ6YCpcbiAqIGArcmMucmVwbGFjZSgvXFxuL2csYFxuICogYCkrYFxuIGAscG9zOi0xLGVuZDotMSxoYXNUcmFpbGluZ05ld0xpbmU6ITB9XSl9ZWxzZSBjaS52YWx1ZURlY2xhcmF0aW9uJiZlLnNldENvbW1lbnRSYW5nZShVbyxjaS52YWx1ZURlY2xhcmF0aW9uKTtyZXR1cm4gVW99fWZ1bmN0aW9uIHooY2ksRnIsanQpe2lmKGUuc29tZShjaSkpe2lmKHQoRnIpKWlmKGp0KXtpZihjaS5sZW5ndGg+MilyZXR1cm5bbyhjaVswXSxGciksZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKFwiLi4uIFwiLmNvbmNhdChjaS5sZW5ndGgtMixcIiBtb3JlIC4uLlwiKSx2b2lkIDApLG8oY2lbY2kubGVuZ3RoLTFdLEZyKV19ZWxzZSByZXR1cm5bZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKFwiLi4uXCIsdm9pZCAwKV07Zm9yKHZhciBMdD0hKEZyLmZsYWdzJjY0KSxlYT1MdD9lLmNyZWF0ZVVuZGVyc2NvcmVFc2NhcGVkTXVsdGlNYXAoKTp2b2lkIDAsS3Q9W10sJHQ9MCxVYT0wLFlyPWNpO1VhPFlyLmxlbmd0aDtVYSsrKXt2YXIgTmk9WXJbVWFdO2lmKCR0KyssdChGcikmJiR0KzI8Y2kubGVuZ3RoLTEpe0t0LnB1c2goZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKFwiLi4uIFwiLmNvbmNhdChjaS5sZW5ndGgtJHQsXCIgbW9yZSAuLi5cIiksdm9pZCAwKSk7dmFyIEhpPW8oY2lbY2kubGVuZ3RoLTFdLEZyKTtIaSYmS3QucHVzaChIaSk7YnJlYWt9RnIuYXBwcm94aW1hdGVMZW5ndGgrPTI7dmFyIF90PW8oTmksRnIpO190JiYoS3QucHVzaChfdCksZWEmJmUuaXNJZGVudGlmaWVyVHlwZVJlZmVyZW5jZShfdCkmJmVhLmFkZChfdC50eXBlTmFtZS5lc2NhcGVkVGV4dCxbTmksS3QubGVuZ3RoLTFdKSl9aWYoZWEpe3ZhciBndD1Gci5mbGFncztGci5mbGFnc3w9NjQsZWEuZm9yRWFjaChmdW5jdGlvbihWdCl7aWYoIWUuYXJyYXlJc0hvbW9nZW5lb3VzKFZ0LGZ1bmN0aW9uKHdvLFBvKXt2YXIgVW89d29bMF0sUnM9UG9bMF07cmV0dXJuIG1lKFVvLFJzKX0pKWZvcih2YXIgRmE9MCxvbj1WdDtGYTxvbi5sZW5ndGg7RmErKyl7dmFyIHpuPW9uW0ZhXSxHYT16blswXSxRbj16blsxXTtLdFtRbl09byhHYSxGcil9fSksRnIuZmxhZ3M9Z3R9cmV0dXJuIEt0fX1mdW5jdGlvbiBtZShjaSxGcil7cmV0dXJuIGNpPT09RnJ8fCEhY2kuc3ltYm9sJiZjaS5zeW1ib2w9PT1Gci5zeW1ib2x8fCEhY2kuYWxpYXNTeW1ib2wmJmNpLmFsaWFzU3ltYm9sPT09RnIuYWxpYXNTeW1ib2x9ZnVuY3Rpb24gTWUoY2ksRnIsanQpe3ZhciBMdD1lLmdldE5hbWVGcm9tSW5kZXhJbmZvKGNpKXx8XCJ4XCIsZWE9byhjaS5rZXlUeXBlLEZyKSxLdD1lLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsTHQsdm9pZCAwLGVhLHZvaWQgMCk7cmV0dXJuIGp0fHwoanQ9byhjaS50eXBlfHxPZSxGcikpLCFjaS50eXBlJiYhKEZyLmZsYWdzJjIwOTcxNTIpJiYoRnIuZW5jb3VudGVyZWRFcnJvcj0hMCksRnIuYXBwcm94aW1hdGVMZW5ndGgrPUx0Lmxlbmd0aCs0LGUuZmFjdG9yeS5jcmVhdGVJbmRleFNpZ25hdHVyZSh2b2lkIDAsY2kuaXNSZWFkb25seT9bZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDE0NSldOnZvaWQgMCxbS3RdLGp0KX1mdW5jdGlvbiAkZShjaSxGcixqdCxMdCl7dmFyIGVhLEt0LCR0LFVhLFlyPWp0LmZsYWdzJjI1NjtZciYmKGp0LmZsYWdzJj0tMjU3KSxqdC5hcHByb3hpbWF0ZUxlbmd0aCs9Mzt2YXIgTmksSGk7anQuZmxhZ3MmMzImJmNpLnRhcmdldCYmY2kubWFwcGVyJiZjaS50YXJnZXQudHlwZVBhcmFtZXRlcnM/SGk9Y2kudGFyZ2V0LnR5cGVQYXJhbWV0ZXJzLm1hcChmdW5jdGlvbihGcyl7cmV0dXJuIG8odW4oRnMsY2kubWFwcGVyKSxqdCl9KTpOaT1jaS50eXBlUGFyYW1ldGVycyYmY2kudHlwZVBhcmFtZXRlcnMubWFwKGZ1bmN0aW9uKEZzKXtyZXR1cm4gRHIoRnMsanQpfSk7dmFyIF90PUptKGNpLCEwKVswXSxndD0oZS5zb21lKF90LGZ1bmN0aW9uKEZzKXtyZXR1cm4gRnMhPT1fdFtfdC5sZW5ndGgtMV0mJiEhKGUuZ2V0Q2hlY2tGbGFncyhGcykmMzI3NjgpfSk/Y2kucGFyYW1ldGVyczpfdCkubWFwKGZ1bmN0aW9uKEZzKXtyZXR1cm4gUXIoRnMsanQsRnI9PT0xNzEsTHQ9PW51bGw/dm9pZCAwOkx0LnByaXZhdGVTeW1ib2xWaXNpdG9yLEx0PT1udWxsP3ZvaWQgMDpMdC5idW5kbGVkSW1wb3J0cyl9KSxWdD10cihjaSxqdCk7VnQmJmd0LnVuc2hpZnQoVnQpO3ZhciBGYSxvbj1ZYyhjaSk7aWYob24pe3ZhciB6bj1vbi5raW5kPT09Mnx8b24ua2luZD09PTM/ZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDEyOCk6dm9pZCAwLEdhPW9uLmtpbmQ9PT0xfHxvbi5raW5kPT09Mz9lLnNldEVtaXRGbGFncyhlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihvbi5wYXJhbWV0ZXJOYW1lKSwxNjc3NzIxNik6ZS5mYWN0b3J5LmNyZWF0ZVRoaXNUeXBlTm9kZSgpLFFuPW9uLnR5cGUmJm8ob24udHlwZSxqdCk7RmE9ZS5mYWN0b3J5LmNyZWF0ZVR5cGVQcmVkaWNhdGVOb2RlKHpuLEdhLFFuKX1lbHNle3ZhciB3bz15byhjaSk7d28mJiEoWXImJnRhKHdvKSk/RmE9VW4oanQsd28sY2ksTHQ9PW51bGw/dm9pZCAwOkx0LnByaXZhdGVTeW1ib2xWaXNpdG9yLEx0PT1udWxsP3ZvaWQgMDpMdC5idW5kbGVkSW1wb3J0cyk6WXJ8fChGYT1lLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDEzMCkpfXZhciBQbz1MdD09bnVsbD92b2lkIDA6THQubW9kaWZpZXJzO2lmKEZyPT09MTgwJiZjaS5mbGFncyY0KXt2YXIgVW89ZS5tb2RpZmllcnNUb0ZsYWdzKFBvKTtQbz1lLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoVW98MTI4KX12YXIgUnM9RnI9PT0xNzQ/ZS5mYWN0b3J5LmNyZWF0ZUNhbGxTaWduYXR1cmUoTmksZ3QsRmEpOkZyPT09MTc1P2UuZmFjdG9yeS5jcmVhdGVDb25zdHJ1Y3RTaWduYXR1cmUoTmksZ3QsRmEpOkZyPT09MTY4P2UuZmFjdG9yeS5jcmVhdGVNZXRob2RTaWduYXR1cmUoUG8sKGVhPUx0PT1udWxsP3ZvaWQgMDpMdC5uYW1lKSE9PW51bGwmJmVhIT09dm9pZCAwP2VhOmUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwiXCIpLEx0PT1udWxsP3ZvaWQgMDpMdC5xdWVzdGlvblRva2VuLE5pLGd0LEZhKTpGcj09PTE2OT9lLmZhY3RvcnkuY3JlYXRlTWV0aG9kRGVjbGFyYXRpb24odm9pZCAwLFBvLHZvaWQgMCwoS3Q9THQ9PW51bGw/dm9pZCAwOkx0Lm5hbWUpIT09bnVsbCYmS3QhPT12b2lkIDA/S3Q6ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCJcIiksdm9pZCAwLE5pLGd0LEZhLHZvaWQgMCk6RnI9PT0xNzE/ZS5mYWN0b3J5LmNyZWF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24odm9pZCAwLFBvLGd0LHZvaWQgMCk6RnI9PT0xNzI/ZS5mYWN0b3J5LmNyZWF0ZUdldEFjY2Vzc29yRGVjbGFyYXRpb24odm9pZCAwLFBvLCgkdD1MdD09bnVsbD92b2lkIDA6THQubmFtZSkhPT1udWxsJiYkdCE9PXZvaWQgMD8kdDplLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcIlwiKSxndCxGYSx2b2lkIDApOkZyPT09MTczP2UuZmFjdG9yeS5jcmVhdGVTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHZvaWQgMCxQbywoVWE9THQ9PW51bGw/dm9pZCAwOkx0Lm5hbWUpIT09bnVsbCYmVWEhPT12b2lkIDA/VWE6ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCJcIiksZ3Qsdm9pZCAwKTpGcj09PTE3Nj9lLmZhY3RvcnkuY3JlYXRlSW5kZXhTaWduYXR1cmUodm9pZCAwLFBvLGd0LEZhKTpGcj09PTMxNz9lLmZhY3RvcnkuY3JlYXRlSlNEb2NGdW5jdGlvblR5cGUoZ3QsRmEpOkZyPT09MTc5P2UuZmFjdG9yeS5jcmVhdGVGdW5jdGlvblR5cGVOb2RlKE5pLGd0LEZhIT1udWxsP0ZhOmUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcIlwiKSkpOkZyPT09MTgwP2UuZmFjdG9yeS5jcmVhdGVDb25zdHJ1Y3RvclR5cGVOb2RlKFBvLE5pLGd0LEZhIT1udWxsP0ZhOmUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcIlwiKSkpOkZyPT09MjU2P2UuZmFjdG9yeS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKHZvaWQgMCxQbyx2b2lkIDAsTHQhPW51bGwmJkx0Lm5hbWU/ZS5jYXN0KEx0Lm5hbWUsZS5pc0lkZW50aWZpZXIpOmUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwiXCIpLE5pLGd0LEZhLHZvaWQgMCk6RnI9PT0yMTM/ZS5mYWN0b3J5LmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihQbyx2b2lkIDAsTHQhPW51bGwmJkx0Lm5hbWU/ZS5jYXN0KEx0Lm5hbWUsZS5pc0lkZW50aWZpZXIpOmUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwiXCIpLE5pLGd0LEZhLGUuZmFjdG9yeS5jcmVhdGVCbG9jayhbXSkpOkZyPT09MjE0P2UuZmFjdG9yeS5jcmVhdGVBcnJvd0Z1bmN0aW9uKFBvLE5pLGd0LEZhLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlQmxvY2soW10pKTplLkRlYnVnLmFzc2VydE5ldmVyKEZyKTtyZXR1cm4gSGkmJihScy50eXBlQXJndW1lbnRzPWUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoSGkpKSxSc31mdW5jdGlvbiB0cihjaSxGcil7aWYoY2kudGhpc1BhcmFtZXRlcilyZXR1cm4gUXIoY2kudGhpc1BhcmFtZXRlcixGcik7aWYoY2kuZGVjbGFyYXRpb24pe3ZhciBqdD1lLmdldEpTRG9jVGhpc1RhZyhjaS5kZWNsYXJhdGlvbik7aWYoanQmJmp0LnR5cGVFeHByZXNzaW9uKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJ0aGlzXCIsdm9pZCAwLG8oVmEoanQudHlwZUV4cHJlc3Npb24pLEZyKSl9fWZ1bmN0aW9uIGRyKGNpLEZyLGp0KXt2YXIgTHQ9RnIuZmxhZ3M7RnIuZmxhZ3MmPS01MTM7dmFyIGVhPWUuZmFjdG9yeS5jcmVhdGVNb2RpZmllcnNGcm9tTW9kaWZpZXJGbGFncyhXRChjaSkpLEt0PWphKGNpLEZyKSwkdD1EXyhjaSksVWE9JHQmJm8oJHQsRnIpO3JldHVybiBGci5mbGFncz1MdCxlLmZhY3RvcnkuY3JlYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKGVhLEt0LGp0LFVhKX1mdW5jdGlvbiBEcihjaSxGcixqdCl7anQ9PT12b2lkIDAmJihqdD1UYyhjaSkpO3ZhciBMdD1qdCYmbyhqdCxGcik7cmV0dXJuIGRyKGNpLEZyLEx0KX1mdW5jdGlvbiBRcihjaSxGcixqdCxMdCxlYSl7dmFyIEt0PWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoY2ksMTY0KTshS3QmJiFlLmlzVHJhbnNpZW50U3ltYm9sKGNpKSYmKEt0PWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoY2ksMzQwKSk7dmFyICR0PUp0KGNpKTtLdCYmYUEoS3QpJiYoJHQ9aV8oJHQpKTt2YXIgVWE9S2EoRnIsJHQsY2ksRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24sTHQsZWEpLFlyPSEoRnIuZmxhZ3MmODE5MikmJmp0JiZLdCYmS3QubW9kaWZpZXJzP0t0Lm1vZGlmaWVycy5tYXAoZS5mYWN0b3J5LmNsb25lTm9kZSk6dm9pZCAwLE5pPUt0JiZlLmlzUmVzdFBhcmFtZXRlcihLdCl8fGUuZ2V0Q2hlY2tGbGFncyhjaSkmMzI3NjgsSGk9Tmk/ZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDI1KTp2b2lkIDAsX3Q9S3QmJkt0Lm5hbWU/S3QubmFtZS5raW5kPT09Nzk/ZS5zZXRFbWl0RmxhZ3MoZS5mYWN0b3J5LmNsb25lTm9kZShLdC5uYW1lKSwxNjc3NzIxNik6S3QubmFtZS5raW5kPT09MTYxP2Uuc2V0RW1pdEZsYWdzKGUuZmFjdG9yeS5jbG9uZU5vZGUoS3QubmFtZS5yaWdodCksMTY3NzcyMTYpOm9uKEt0Lm5hbWUpOmUuc3ltYm9sTmFtZShjaSksZ3Q9S3QmJmtkKEt0KXx8ZS5nZXRDaGVja0ZsYWdzKGNpKSYxNjM4NCxWdD1ndD9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpOnZvaWQgMCxGYT1lLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLFlyLEhpLF90LFZ0LFVhLHZvaWQgMCk7cmV0dXJuIEZyLmFwcHJveGltYXRlTGVuZ3RoKz1lLnN5bWJvbE5hbWUoY2kpLmxlbmd0aCszLEZhO2Z1bmN0aW9uIG9uKHpuKXtyZXR1cm4gR2Eoem4pO2Z1bmN0aW9uIEdhKFFuKXtGci50cmFja2VyLnRyYWNrU3ltYm9sJiZlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoUW4pJiZSdihRbikmJmxpKFFuLmV4cHJlc3Npb24sRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24sRnIpO3ZhciB3bz1lLnZpc2l0RWFjaENoaWxkKFFuLEdhLGUubnVsbFRyYW5zZm9ybWF0aW9uQ29udGV4dCx2b2lkIDAsR2EpO3JldHVybiBlLmlzQmluZGluZ0VsZW1lbnQod28pJiYod289ZS5mYWN0b3J5LnVwZGF0ZUJpbmRpbmdFbGVtZW50KHdvLHdvLmRvdERvdERvdFRva2VuLHdvLnByb3BlcnR5TmFtZSx3by5uYW1lLHZvaWQgMCkpLGUubm9kZUlzU3ludGhlc2l6ZWQod28pfHwod289ZS5mYWN0b3J5LmNsb25lTm9kZSh3bykpLGUuc2V0RW1pdEZsYWdzKHdvLDE2Nzc3MjE3KX19fWZ1bmN0aW9uIGxpKGNpLEZyLGp0KXtpZighIWp0LnRyYWNrZXIudHJhY2tTeW1ib2wpe3ZhciBMdD1lLmdldEZpcnN0SWRlbnRpZmllcihjaSksZWE9ZXMoTHQsTHQuZXNjYXBlZFRleHQsMTE2MDEyNyx2b2lkIDAsdm9pZCAwLCEwKTtlYSYmanQudHJhY2tlci50cmFja1N5bWJvbChlYSxGciwxMTE1NTEpfX1mdW5jdGlvbiBUaShjaSxGcixqdCxMdCl7cmV0dXJuIEZyLnRyYWNrZXIudHJhY2tTeW1ib2woY2ksRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24sanQpLENpKGNpLEZyLGp0LEx0KX1mdW5jdGlvbiBDaShjaSxGcixqdCxMdCl7dmFyIGVhLEt0PWNpLmZsYWdzJjI2MjE0NDtyZXR1cm4hS3QmJihGci5lbmNsb3NpbmdEZWNsYXJhdGlvbnx8RnIuZmxhZ3MmNjQpJiYhKEZyLmZsYWdzJjEzNDIxNzcyOCk/KGVhPWUuRGVidWcuY2hlY2tEZWZpbmVkKCR0KGNpLGp0LCEwKSksZS5EZWJ1Zy5hc3NlcnQoZWEmJmVhLmxlbmd0aD4wKSk6ZWE9W2NpXSxlYTtmdW5jdGlvbiAkdChVYSxZcixOaSl7dmFyIEhpPXBsKFVhLEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uLFlyLCEhKEZyLmZsYWdzJjEyOCkpLF90O2lmKCFIaXx8RnAoSGlbMF0sRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24sSGkubGVuZ3RoPT09MT9ZcjpGbChZcikpKXt2YXIgZ3Q9TnAoSGk/SGlbMF06VWEsRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24sWXIpO2lmKGUubGVuZ3RoKGd0KSl7X3Q9Z3QubWFwKGZ1bmN0aW9uKFBvKXtyZXR1cm4gZS5zb21lKFBvLmRlY2xhcmF0aW9ucyxGYyk/TnQoUG8sRnIpOnZvaWQgMH0pO3ZhciBWdD1ndC5tYXAoZnVuY3Rpb24oUG8sVW8pe3JldHVybiBVb30pO1Z0LnNvcnQod28pO2Zvcih2YXIgRmE9VnQubWFwKGZ1bmN0aW9uKFBvKXtyZXR1cm4gZ3RbUG9dfSksb249MCx6bj1GYTtvbjx6bi5sZW5ndGg7b24rKyl7dmFyIEdhPXpuW29uXSxRbj0kdChHYSxGbChZciksITEpO2lmKFFuKXtpZihHYS5leHBvcnRzJiZHYS5leHBvcnRzLmdldChcImV4cG9ydD1cIikmJl9sKEdhLmV4cG9ydHMuZ2V0KFwiZXhwb3J0PVwiKSxVYSkpe0hpPVFuO2JyZWFrfUhpPVFuLmNvbmNhdChIaXx8W2ZsKEdhLFVhKXx8VWFdKTticmVha319fX1pZihIaSlyZXR1cm4gSGk7aWYoTml8fCEoVWEuZmxhZ3MmNjE0NCkpcmV0dXJuIU5pJiYhTHQmJiEhZS5mb3JFYWNoKFVhLmRlY2xhcmF0aW9ucyxGYyk/dm9pZCAwOltVYV07ZnVuY3Rpb24gd28oUG8sVW8pe3ZhciBScz1fdFtQb10sRnM9X3RbVW9dO2lmKFJzJiZGcyl7dmFyIHJjPWUucGF0aElzUmVsYXRpdmUoRnMpO3JldHVybiBlLnBhdGhJc1JlbGF0aXZlKFJzKT09PXJjP2UubW9kdWxlU3BlY2lmaWVycy5jb3VudFBhdGhDb21wb25lbnRzKFJzKS1lLm1vZHVsZVNwZWNpZmllcnMuY291bnRQYXRoQ29tcG9uZW50cyhGcyk6cmM/LTE6MX1yZXR1cm4gMH19fWZ1bmN0aW9uICRpKGNpLEZyKXt2YXIganQsTHQ9amcoY2kpO3JldHVybiBMdC5mbGFncyY1MjQzODQmJihqdD1lLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KGUubWFwKEFmKGNpKSxmdW5jdGlvbihlYSl7cmV0dXJuIERyKGVhLEZyKX0pKSksanR9ZnVuY3Rpb24gWmkoY2ksRnIsanQpe3ZhciBMdDtlLkRlYnVnLmFzc2VydChjaSYmMDw9RnImJkZyPGNpLmxlbmd0aCk7dmFyIGVhPWNpW0ZyXSxLdD15KGVhKTtpZighKCEoKEx0PWp0LnR5cGVQYXJhbWV0ZXJTeW1ib2xMaXN0KT09PW51bGx8fEx0PT09dm9pZCAwKSYmTHQuaGFzKEt0KSkpeyhqdC50eXBlUGFyYW1ldGVyU3ltYm9sTGlzdHx8KGp0LnR5cGVQYXJhbWV0ZXJTeW1ib2xMaXN0PW5ldyBlLlNldCkpLmFkZChLdCk7dmFyICR0O2lmKGp0LmZsYWdzJjUxMiYmRnI8Y2kubGVuZ3RoLTEpe3ZhciBVYT1lYSxZcj1jaVtGcisxXTtpZihlLmdldENoZWNrRmxhZ3MoWXIpJjEpe3ZhciBOaT1IZyhVYS5mbGFncyYyMDk3MTUyP1BzKFVhKTpVYSk7JHQ9eihlLm1hcChOaSxmdW5jdGlvbihIaSl7cmV0dXJuIGFwKEhpLFlyLm1hcHBlcil9KSxqdCl9ZWxzZSAkdD0kaShlYSxqdCl9cmV0dXJuICR0fX1mdW5jdGlvbiBxdChjaSl7cmV0dXJuIGUuaXNJbmRleGVkQWNjZXNzVHlwZU5vZGUoY2kub2JqZWN0VHlwZSk/cXQoY2kub2JqZWN0VHlwZSk6Y2l9ZnVuY3Rpb24gTnQoY2ksRnIsanQpe3ZhciBMdCxlYT1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKGNpLDMwNSk7aWYoIWVhKXt2YXIgS3Q9ZS5maXJzdERlZmluZWQoY2kuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHdvKXtyZXR1cm4gbmMod28sY2kpfSk7S3QmJihlYT1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKEt0LDMwNSkpfWlmKGVhJiZlYS5tb2R1bGVOYW1lIT09dm9pZCAwKXJldHVybiBlYS5tb2R1bGVOYW1lO2lmKCFlYSl7aWYoRnIudHJhY2tlci50cmFja1JlZmVyZW5jZWRBbWJpZW50TW9kdWxlKXt2YXIgJHQ9ZS5maWx0ZXIoY2kuZGVjbGFyYXRpb25zLGUuaXNBbWJpZW50TW9kdWxlKTtpZihlLmxlbmd0aCgkdCkpZm9yKHZhciBVYT0wLFlyPSR0O1VhPFlyLmxlbmd0aDtVYSsrKXt2YXIgTmk9WXJbVWFdO0ZyLnRyYWNrZXIudHJhY2tSZWZlcmVuY2VkQW1iaWVudE1vZHVsZShOaSxjaSl9fWlmKGEudGVzdChjaS5lc2NhcGVkTmFtZSkpcmV0dXJuIGNpLmVzY2FwZWROYW1lLnN1YnN0cmluZygxLGNpLmVzY2FwZWROYW1lLmxlbmd0aC0xKX1pZighRnIuZW5jbG9zaW5nRGVjbGFyYXRpb258fCFGci50cmFja2VyLm1vZHVsZVJlc29sdmVySG9zdClyZXR1cm4gYS50ZXN0KGNpLmVzY2FwZWROYW1lKT9jaS5lc2NhcGVkTmFtZS5zdWJzdHJpbmcoMSxjaS5lc2NhcGVkTmFtZS5sZW5ndGgtMSk6ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGUuZ2V0Tm9uQXVnbWVudGF0aW9uRGVjbGFyYXRpb24oY2kpKS5maWxlTmFtZTt2YXIgSGk9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGUuZ2V0T3JpZ2luYWxOb2RlKEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uKSksX3Q9anR8fChIaT09bnVsbD92b2lkIDA6SGkuaW1wbGllZE5vZGVGb3JtYXQpLGd0PVFuKEhpLnBhdGgsX3QpLFZ0PUFhKGNpKSxGYT1WdC5zcGVjaWZpZXJDYWNoZSYmVnQuc3BlY2lmaWVyQ2FjaGUuZ2V0KGd0KTtpZighRmEpe3ZhciBvbj0hIWUub3V0RmlsZSh5ZSksem49RnIudHJhY2tlci5tb2R1bGVSZXNvbHZlckhvc3QsR2E9b24/S2UoS2Uoe30seWUpLHtiYXNlVXJsOnpuLmdldENvbW1vblNvdXJjZURpcmVjdG9yeSgpfSk6eWU7RmE9ZS5maXJzdChlLm1vZHVsZVNwZWNpZmllcnMuZ2V0TW9kdWxlU3BlY2lmaWVycyhjaSxEaSxHYSxIaSx6bix7aW1wb3J0TW9kdWxlU3BlY2lmaWVyUHJlZmVyZW5jZTpvbj9cIm5vbi1yZWxhdGl2ZVwiOlwicHJvamVjdC1yZWxhdGl2ZVwiLGltcG9ydE1vZHVsZVNwZWNpZmllckVuZGluZzpvbj9cIm1pbmltYWxcIjpfdD09PWUuTW9kdWxlS2luZC5FU05leHQ/XCJqc1wiOnZvaWQgMH0se292ZXJyaWRlSW1wb3J0TW9kZTpqdH0pKSwoTHQ9VnQuc3BlY2lmaWVyQ2FjaGUpIT09bnVsbCYmTHQhPT12b2lkIDB8fChWdC5zcGVjaWZpZXJDYWNoZT1uZXcgZS5NYXApLFZ0LnNwZWNpZmllckNhY2hlLnNldChndCxGYSl9cmV0dXJuIEZhO2Z1bmN0aW9uIFFuKHdvLFBvKXtyZXR1cm4gUG89PT12b2lkIDA/d286XCJcIi5jb25jYXQoUG8sXCJ8XCIpLmNvbmNhdCh3byl9fWZ1bmN0aW9uIFJhKGNpKXt2YXIgRnI9ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhjaS5lc2NhcGVkTmFtZSkpO3JldHVybiBjaS5wYXJlbnQ/ZS5mYWN0b3J5LmNyZWF0ZVF1YWxpZmllZE5hbWUoUmEoY2kucGFyZW50KSxGcik6RnJ9ZnVuY3Rpb24gY2EoY2ksRnIsanQsTHQpe3ZhciBlYT1UaShjaSxGcixqdCwhKEZyLmZsYWdzJjE2Mzg0KSksS3Q9anQ9PT0xMTE1NTE7aWYoZS5zb21lKGVhWzBdLmRlY2xhcmF0aW9ucyxGYykpe3ZhciAkdD1lYS5sZW5ndGg+MT9QbyhlYSxlYS5sZW5ndGgtMSwxKTp2b2lkIDAsVWE9THR8fFppKGVhLDAsRnIpLFlyPWUuZ2V0U291cmNlRmlsZU9mTm9kZShlLmdldE9yaWdpbmFsTm9kZShGci5lbmNsb3NpbmdEZWNsYXJhdGlvbikpLE5pPWUuZ2V0U291cmNlRmlsZU9mTW9kdWxlKGVhWzBdKSxIaT12b2lkIDAsX3Q9dm9pZCAwO2lmKChlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZCh5ZSk9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNnx8ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoeWUpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dCkmJihOaT09bnVsbD92b2lkIDA6TmkuaW1wbGllZE5vZGVGb3JtYXQpPT09ZS5Nb2R1bGVLaW5kLkVTTmV4dCYmTmkuaW1wbGllZE5vZGVGb3JtYXQhPT0oWXI9PW51bGw/dm9pZCAwOllyLmltcGxpZWROb2RlRm9ybWF0KSYmKEhpPU50KGVhWzBdLEZyLGUuTW9kdWxlS2luZC5FU05leHQpLF90PWUuZmFjdG9yeS5jcmVhdGVJbXBvcnRUeXBlQXNzZXJ0aW9uQ29udGFpbmVyKGUuZmFjdG9yeS5jcmVhdGVBc3NlcnRDbGF1c2UoZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShbZS5mYWN0b3J5LmNyZWF0ZUFzc2VydEVudHJ5KGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKFwicmVzb2x1dGlvbi1tb2RlXCIpLGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKFwiaW1wb3J0XCIpKV0pKSkpLEhpfHwoSGk9TnQoZWFbMF0sRnIpKSwhKEZyLmZsYWdzJjY3MTA4ODY0KSYmZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoeWUpIT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5DbGFzc2ljJiZIaS5pbmRleE9mKFwiL25vZGVfbW9kdWxlcy9cIik+PTApe3ZhciBndD1IaTtpZihlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZCh5ZSk9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNnx8ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoeWUpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dCl7dmFyIFZ0PShZcj09bnVsbD92b2lkIDA6WXIuaW1wbGllZE5vZGVGb3JtYXQpPT09ZS5Nb2R1bGVLaW5kLkVTTmV4dD9lLk1vZHVsZUtpbmQuQ29tbW9uSlM6ZS5Nb2R1bGVLaW5kLkVTTmV4dDtIaT1OdChlYVswXSxGcixWdCksSGkuaW5kZXhPZihcIi9ub2RlX21vZHVsZXMvXCIpPj0wP0hpPWd0Ol90PWUuZmFjdG9yeS5jcmVhdGVJbXBvcnRUeXBlQXNzZXJ0aW9uQ29udGFpbmVyKGUuZmFjdG9yeS5jcmVhdGVBc3NlcnRDbGF1c2UoZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShbZS5mYWN0b3J5LmNyZWF0ZUFzc2VydEVudHJ5KGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKFwicmVzb2x1dGlvbi1tb2RlXCIpLGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKFZ0PT09ZS5Nb2R1bGVLaW5kLkVTTmV4dD9cImltcG9ydFwiOlwicmVxdWlyZVwiKSldKSkpfV90fHwoRnIuZW5jb3VudGVyZWRFcnJvcj0hMCxGci50cmFja2VyLnJlcG9ydExpa2VseVVuc2FmZUltcG9ydFJlcXVpcmVkRXJyb3ImJkZyLnRyYWNrZXIucmVwb3J0TGlrZWx5VW5zYWZlSW1wb3J0UmVxdWlyZWRFcnJvcihndCkpfXZhciBGYT1lLmZhY3RvcnkuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKEhpKSk7aWYoRnIudHJhY2tlci50cmFja0V4dGVybmFsTW9kdWxlU3ltYm9sT2ZJbXBvcnRUeXBlTm9kZSYmRnIudHJhY2tlci50cmFja0V4dGVybmFsTW9kdWxlU3ltYm9sT2ZJbXBvcnRUeXBlTm9kZShlYVswXSksRnIuYXBwcm94aW1hdGVMZW5ndGgrPUhpLmxlbmd0aCsxMCwhJHR8fGUuaXNFbnRpdHlOYW1lKCR0KSl7aWYoJHQpe3ZhciBvbj1lLmlzSWRlbnRpZmllcigkdCk/JHQ6JHQucmlnaHQ7b24udHlwZUFyZ3VtZW50cz12b2lkIDB9cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRUeXBlTm9kZShGYSxfdCwkdCxVYSxLdCl9ZWxzZXt2YXIgem49cXQoJHQpLEdhPXpuLm9iamVjdFR5cGUudHlwZU5hbWU7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJbmRleGVkQWNjZXNzVHlwZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZUltcG9ydFR5cGVOb2RlKEZhLF90LEdhLFVhLEt0KSx6bi5pbmRleFR5cGUpfX12YXIgUW49UG8oZWEsZWEubGVuZ3RoLTEsMCk7aWYoZS5pc0luZGV4ZWRBY2Nlc3NUeXBlTm9kZShRbikpcmV0dXJuIFFuO2lmKEt0KXJldHVybiBlLmZhY3RvcnkuY3JlYXRlVHlwZVF1ZXJ5Tm9kZShRbik7dmFyIG9uPWUuaXNJZGVudGlmaWVyKFFuKT9RbjpRbi5yaWdodCx3bz1vbi50eXBlQXJndW1lbnRzO3JldHVybiBvbi50eXBlQXJndW1lbnRzPXZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoUW4sd28pO2Z1bmN0aW9uIFBvKFVvLFJzLEZzKXt2YXIgcmM9UnM9PT1Vby5sZW5ndGgtMT9MdDpaaShVbyxScyxGcikseHU9VW9bUnNdLFRzPVVvW1JzLTFdLHJsO2lmKFJzPT09MClGci5mbGFnc3w9MTY3NzcyMTYscmw9b2YoeHUsRnIpLEZyLmFwcHJveGltYXRlTGVuZ3RoKz0ocmw/cmwubGVuZ3RoOjApKzEsRnIuZmxhZ3NePTE2Nzc3MjE2O2Vsc2UgaWYoVHMmJmRjKFRzKSl7dmFyIGpkPWRjKFRzKTtlLmZvckVhY2hFbnRyeShqZCxmdW5jdGlvbih6ZyxpZCl7aWYoX2woemcseHUpJiYhcGcoaWQpJiZpZCE9PVwiZXhwb3J0PVwiKXJldHVybiBybD1lLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGlkKSwhMH0pfWlmKHJsPT09dm9pZCAwKXt2YXIgbHA9ZS5maXJzdERlZmluZWQoeHUuZGVjbGFyYXRpb25zLGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24pO2lmKGxwJiZlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUobHApJiZlLmlzRW50aXR5TmFtZShscC5leHByZXNzaW9uKSl7dmFyIFRsPVBvKFVvLFJzLTEsRnMpO3JldHVybiBlLmlzRW50aXR5TmFtZShUbCk/ZS5mYWN0b3J5LmNyZWF0ZUluZGV4ZWRBY2Nlc3NUeXBlTm9kZShlLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZFR5cGUoZS5mYWN0b3J5LmNyZWF0ZVR5cGVRdWVyeU5vZGUoVGwpKSxlLmZhY3RvcnkuY3JlYXRlVHlwZVF1ZXJ5Tm9kZShscC5leHByZXNzaW9uKSk6VGx9cmw9b2YoeHUsRnIpfWlmKEZyLmFwcHJveGltYXRlTGVuZ3RoKz1ybC5sZW5ndGgrMSwhKEZyLmZsYWdzJjE2KSYmVHMmJk5mKFRzKSYmTmYoVHMpLmdldCh4dS5lc2NhcGVkTmFtZSkmJl9sKE5mKFRzKS5nZXQoeHUuZXNjYXBlZE5hbWUpLHh1KSl7dmFyIFRsPVBvKFVvLFJzLTEsRnMpO3JldHVybiBlLmlzSW5kZXhlZEFjY2Vzc1R5cGVOb2RlKFRsKT9lLmZhY3RvcnkuY3JlYXRlSW5kZXhlZEFjY2Vzc1R5cGVOb2RlKFRsLGUuZmFjdG9yeS5jcmVhdGVMaXRlcmFsVHlwZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocmwpKSk6ZS5mYWN0b3J5LmNyZWF0ZUluZGV4ZWRBY2Nlc3NUeXBlTm9kZShlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoVGwscmMpLGUuZmFjdG9yeS5jcmVhdGVMaXRlcmFsVHlwZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocmwpKSl9dmFyIGZwPWUuc2V0RW1pdEZsYWdzKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHJsLHJjKSwxNjc3NzIxNik7aWYoZnAuc3ltYm9sPXh1LFJzPkZzKXt2YXIgVGw9UG8oVW8sUnMtMSxGcyk7cmV0dXJuIGUuaXNFbnRpdHlOYW1lKFRsKT9lLmZhY3RvcnkuY3JlYXRlUXVhbGlmaWVkTmFtZShUbCxmcCk6ZS5EZWJ1Zy5mYWlsKFwiSW1wb3NzaWJsZSBjb25zdHJ1Y3QgLSBhbiBleHBvcnQgb2YgYW4gaW5kZXhlZCBhY2Nlc3MgY2Fubm90IGJlIHJlYWNoYWJsZVwiKX1yZXR1cm4gZnB9fWZ1bmN0aW9uIFNuKGNpLEZyLGp0KXt2YXIgTHQ9ZXMoRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24sY2ksNzg4OTY4LHZvaWQgMCxjaSwhMSk7cmV0dXJuIEx0PyEoTHQuZmxhZ3MmMjYyMTQ0JiZMdD09PWp0LnN5bWJvbCk6ITF9ZnVuY3Rpb24gamEoY2ksRnIpe3ZhciBqdCxMdDtpZihGci5mbGFncyY0JiZGci50eXBlUGFyYW1ldGVyTmFtZXMpe3ZhciBlYT1Gci50eXBlUGFyYW1ldGVyTmFtZXMuZ2V0KGZ1KGNpKSk7aWYoZWEpcmV0dXJuIGVhfXZhciBLdD1GbihjaS5zeW1ib2wsRnIsNzg4OTY4LCEwKTtpZighKEt0LmtpbmQmNzkpKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcIihNaXNzaW5nIHR5cGUgcGFyYW1ldGVyKVwiKTtpZihGci5mbGFncyY0KXtmb3IodmFyICR0PUt0LmVzY2FwZWRUZXh0LFVhPSgoanQ9RnIudHlwZVBhcmFtZXRlck5hbWVzQnlUZXh0TmV4dE5hbWVDb3VudCk9PT1udWxsfHxqdD09PXZvaWQgMD92b2lkIDA6anQuZ2V0KCR0KSl8fDAsWXI9JHQ7KChMdD1Gci50eXBlUGFyYW1ldGVyTmFtZXNCeVRleHQpPT09bnVsbHx8THQ9PT12b2lkIDA/dm9pZCAwOkx0LmhhcyhZcikpfHxTbihZcixGcixjaSk7KVVhKyssWXI9XCJcIi5jb25jYXQoJHQsXCJfXCIpLmNvbmNhdChVYSk7WXIhPT0kdCYmKEt0PWUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFlyLEt0LnR5cGVBcmd1bWVudHMpKSwoRnIudHlwZVBhcmFtZXRlck5hbWVzQnlUZXh0TmV4dE5hbWVDb3VudHx8KEZyLnR5cGVQYXJhbWV0ZXJOYW1lc0J5VGV4dE5leHROYW1lQ291bnQ9bmV3IGUuTWFwKSkuc2V0KCR0LFVhKSwoRnIudHlwZVBhcmFtZXRlck5hbWVzfHwoRnIudHlwZVBhcmFtZXRlck5hbWVzPW5ldyBlLk1hcCkpLnNldChmdShjaSksS3QpLChGci50eXBlUGFyYW1ldGVyTmFtZXNCeVRleHR8fChGci50eXBlUGFyYW1ldGVyTmFtZXNCeVRleHQ9bmV3IGUuU2V0KSkuYWRkKCR0KX1yZXR1cm4gS3R9ZnVuY3Rpb24gRm4oY2ksRnIsanQsTHQpe3ZhciBlYT1UaShjaSxGcixqdCk7cmV0dXJuIEx0JiZlYS5sZW5ndGghPT0xJiYhRnIuZW5jb3VudGVyZWRFcnJvciYmIShGci5mbGFncyY2NTUzNikmJihGci5lbmNvdW50ZXJlZEVycm9yPSEwKSxLdChlYSxlYS5sZW5ndGgtMSk7ZnVuY3Rpb24gS3QoJHQsVWEpe3ZhciBZcj1aaSgkdCxVYSxGciksTmk9JHRbVWFdO1VhPT09MCYmKEZyLmZsYWdzfD0xNjc3NzIxNik7dmFyIEhpPW9mKE5pLEZyKTtVYT09PTAmJihGci5mbGFnc149MTY3NzcyMTYpO3ZhciBfdD1lLnNldEVtaXRGbGFncyhlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihIaSxZciksMTY3NzcyMTYpO3JldHVybiBfdC5zeW1ib2w9TmksVWE+MD9lLmZhY3RvcnkuY3JlYXRlUXVhbGlmaWVkTmFtZShLdCgkdCxVYS0xKSxfdCk6X3R9fWZ1bmN0aW9uIHduKGNpLEZyLGp0KXt2YXIgTHQ9VGkoY2ksRnIsanQpO3JldHVybiBlYShMdCxMdC5sZW5ndGgtMSk7ZnVuY3Rpb24gZWEoS3QsJHQpe3ZhciBVYT1aaShLdCwkdCxGciksWXI9S3RbJHRdOyR0PT09MCYmKEZyLmZsYWdzfD0xNjc3NzIxNik7dmFyIE5pPW9mKFlyLEZyKTskdD09PTAmJihGci5mbGFnc149MTY3NzcyMTYpO3ZhciBIaT1OaS5jaGFyQ29kZUF0KDApO2lmKGUuaXNTaW5nbGVPckRvdWJsZVF1b3RlKEhpKSYmZS5zb21lKFlyLmRlY2xhcmF0aW9ucyxGYykpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKE50KFlyLEZyKSk7dmFyIF90PUhpPT09MzU/TmkubGVuZ3RoPjEmJmUuaXNJZGVudGlmaWVyU3RhcnQoTmkuY2hhckNvZGVBdCgxKSxBZSk6ZS5pc0lkZW50aWZpZXJTdGFydChIaSxBZSk7aWYoJHQ9PT0wfHxfdCl7dmFyIGd0PWUuc2V0RW1pdEZsYWdzKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKE5pLFVhKSwxNjc3NzIxNik7cmV0dXJuIGd0LnN5bWJvbD1ZciwkdD4wP2UuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZWEoS3QsJHQtMSksZ3QpOmd0fWVsc2V7SGk9PT05MSYmKE5pPU5pLnN1YnN0cmluZygxLE5pLmxlbmd0aC0xKSxIaT1OaS5jaGFyQ29kZUF0KDApKTt2YXIgVnQ9dm9pZCAwO3JldHVybiBlLmlzU2luZ2xlT3JEb3VibGVRdW90ZShIaSkmJiEoWXIuZmxhZ3MmOCk/VnQ9ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoZS5zdHJpcFF1b3RlcyhOaSkucmVwbGFjZSgvXFxcXC4vZyxmdW5jdGlvbihGYSl7cmV0dXJuIEZhLnN1YnN0cmluZygxKX0pLEhpPT09MzkpOlwiXCIrICtOaT09PU5pJiYoVnQ9ZS5mYWN0b3J5LmNyZWF0ZU51bWVyaWNMaXRlcmFsKCtOaSkpLFZ0fHwoVnQ9ZS5zZXRFbWl0RmxhZ3MoZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoTmksVWEpLDE2Nzc3MjE2KSxWdC5zeW1ib2w9WXIpLGUuZmFjdG9yeS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihlYShLdCwkdC0xKSxWdCl9fX1mdW5jdGlvbiBUbihjaSl7dmFyIEZyPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oY2kpO3JldHVybiEhRnImJmUuaXNTdHJpbmdMaXRlcmFsKEZyKX1mdW5jdGlvbiBFbyhjaSl7dmFyIEZyPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oY2kpO3JldHVybiEhKEZyJiZlLmlzU3RyaW5nTGl0ZXJhbChGcikmJihGci5zaW5nbGVRdW90ZXx8IWUubm9kZUlzU3ludGhlc2l6ZWQoRnIpJiZlLnN0YXJ0c1dpdGgoZS5nZXRUZXh0T2ZOb2RlKEZyLCExKSxcIidcIikpKX1mdW5jdGlvbiBsdChjaSxGcil7dmFyIGp0PSEhZS5sZW5ndGgoY2kuZGVjbGFyYXRpb25zKSYmZS5ldmVyeShjaS5kZWNsYXJhdGlvbnMsRW8pLEx0PWl0KGNpLEZyLGp0KTtpZihMdClyZXR1cm4gTHQ7dmFyIGVhPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoY2kuZXNjYXBlZE5hbWUpLEt0PSEhZS5sZW5ndGgoY2kuZGVjbGFyYXRpb25zKSYmZS5ldmVyeShjaS5kZWNsYXJhdGlvbnMsVG4pO3JldHVybiBlLmNyZWF0ZVByb3BlcnR5TmFtZU5vZGVGb3JJZGVudGlmaWVyT3JMaXRlcmFsKGVhLGUuZ2V0RW1pdFNjcmlwdFRhcmdldCh5ZSksanQsS3QpfWZ1bmN0aW9uIGl0KGNpLEZyLGp0KXt2YXIgTHQ9QWEoY2kpLm5hbWVUeXBlO2lmKEx0KXtpZihMdC5mbGFncyYzODQpe3ZhciBlYT1cIlwiK0x0LnZhbHVlO3JldHVybiFlLmlzSWRlbnRpZmllclRleHQoZWEsZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KHllKSkmJiFlLmlzTnVtZXJpY0xpdGVyYWxOYW1lKGVhKT9lLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChlYSwhIWp0KTplLmlzTnVtZXJpY0xpdGVyYWxOYW1lKGVhKSYmZS5zdGFydHNXaXRoKGVhLFwiLVwiKT9lLmZhY3RvcnkuY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoZS5mYWN0b3J5LmNyZWF0ZU51bWVyaWNMaXRlcmFsKCtlYSkpOmUuY3JlYXRlUHJvcGVydHlOYW1lTm9kZUZvcklkZW50aWZpZXJPckxpdGVyYWwoZWEsZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KHllKSl9aWYoTHQuZmxhZ3MmODE5MilyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUNvbXB1dGVkUHJvcGVydHlOYW1lKHduKEx0LnN5bWJvbCxGciwxMTE1NTEpKX19ZnVuY3Rpb24gWXQoY2kpe3ZhciBGcj1LZSh7fSxjaSk7cmV0dXJuIEZyLnR5cGVQYXJhbWV0ZXJOYW1lcyYmKEZyLnR5cGVQYXJhbWV0ZXJOYW1lcz1uZXcgZS5NYXAoRnIudHlwZVBhcmFtZXRlck5hbWVzKSksRnIudHlwZVBhcmFtZXRlck5hbWVzQnlUZXh0JiYoRnIudHlwZVBhcmFtZXRlck5hbWVzQnlUZXh0PW5ldyBlLlNldChGci50eXBlUGFyYW1ldGVyTmFtZXNCeVRleHQpKSxGci50eXBlUGFyYW1ldGVyU3ltYm9sTGlzdCYmKEZyLnR5cGVQYXJhbWV0ZXJTeW1ib2xMaXN0PW5ldyBlLlNldChGci50eXBlUGFyYW1ldGVyU3ltYm9sTGlzdCkpLEZyLnRyYWNrZXI9aShGcixGci50cmFja2VyKSxGcn1mdW5jdGlvbiBJYShjaSxGcil7cmV0dXJuIGNpLmRlY2xhcmF0aW9ucyYmZS5maW5kKGNpLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihqdCl7cmV0dXJuISFlLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZShqdCkmJighRnJ8fCEhZS5maW5kQW5jZXN0b3IoanQsZnVuY3Rpb24oTHQpe3JldHVybiBMdD09PUZyfSkpfSl9ZnVuY3Rpb24gUXQoY2ksRnIpe3JldHVybiEoZS5nZXRPYmplY3RGbGFncyhGcikmNCl8fCFlLmlzVHlwZVJlZmVyZW5jZU5vZGUoY2kpfHxlLmxlbmd0aChjaS50eXBlQXJndW1lbnRzKT49VWwoRnIudGFyZ2V0LnR5cGVQYXJhbWV0ZXJzKX1mdW5jdGlvbiBLYShjaSxGcixqdCxMdCxlYSxLdCl7aWYoIW5uKEZyKSYmTHQpe3ZhciAkdD1JYShqdCxMdCk7aWYoJHQmJiFlLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oJHQpJiYhZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oJHQpKXt2YXIgVWE9ZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUoJHQpO2lmKGNuKFVhLCR0LEZyKSYmUXQoVWEsRnIpKXt2YXIgWXI9TW4oY2ksVWEsZWEsS3QpO2lmKFlyKXJldHVybiBZcn19fXZhciBOaT1jaS5mbGFncztGci5mbGFncyY4MTkyJiZGci5zeW1ib2w9PT1qdCYmKCFjaS5lbmNsb3NpbmdEZWNsYXJhdGlvbnx8ZS5zb21lKGp0LmRlY2xhcmF0aW9ucyxmdW5jdGlvbihfdCl7cmV0dXJuIGUuZ2V0U291cmNlRmlsZU9mTm9kZShfdCk9PT1lLmdldFNvdXJjZUZpbGVPZk5vZGUoY2kuZW5jbG9zaW5nRGVjbGFyYXRpb24pfSkpJiYoY2kuZmxhZ3N8PTEwNDg1NzYpO3ZhciBIaT1vKEZyLGNpKTtyZXR1cm4gY2kuZmxhZ3M9TmksSGl9ZnVuY3Rpb24gY24oY2ksRnIsanQpe3ZhciBMdD1WYShjaSk7cmV0dXJuIEx0PT09anQ/ITA6ZS5pc1BhcmFtZXRlcihGcikmJkZyLnF1ZXN0aW9uVG9rZW4/S3MoanQsNTI0Mjg4KT09PUx0OiExfWZ1bmN0aW9uIFVuKGNpLEZyLGp0LEx0LGVhKXtpZighbm4oRnIpJiZjaS5lbmNsb3NpbmdEZWNsYXJhdGlvbil7dmFyIEt0PWp0LmRlY2xhcmF0aW9uJiZlLmdldEVmZmVjdGl2ZVJldHVyblR5cGVOb2RlKGp0LmRlY2xhcmF0aW9uKTtpZighIWUuZmluZEFuY2VzdG9yKEt0LGZ1bmN0aW9uKE5pKXtyZXR1cm4gTmk9PT1jaS5lbmNsb3NpbmdEZWNsYXJhdGlvbn0pJiZLdCl7dmFyICR0PVZhKEt0KSxVYT0kdC5mbGFncyYyNjIxNDQmJiR0LmlzVGhpc1R5cGU/dW4oJHQsanQubWFwcGVyKTokdDtpZihVYT09PUZyJiZRdChLdCxGcikpe3ZhciBZcj1NbihjaSxLdCxMdCxlYSk7aWYoWXIpcmV0dXJuIFlyfX19cmV0dXJuIG8oRnIsY2kpfWZ1bmN0aW9uIG9hKGNpLEZyLGp0KXt2YXIgTHQsZWEsS3Q9ITEsJHQ9ZS5nZXRGaXJzdElkZW50aWZpZXIoY2kpO2lmKGUuaXNJbkpTRmlsZShjaSkmJihlLmlzRXhwb3J0c0lkZW50aWZpZXIoJHQpfHxlLmlzTW9kdWxlRXhwb3J0c0FjY2Vzc0V4cHJlc3Npb24oJHQucGFyZW50KXx8ZS5pc1F1YWxpZmllZE5hbWUoJHQucGFyZW50KSYmZS5pc01vZHVsZUlkZW50aWZpZXIoJHQucGFyZW50LmxlZnQpJiZlLmlzRXhwb3J0c0lkZW50aWZpZXIoJHQucGFyZW50LnJpZ2h0KSkpcmV0dXJuIEt0PSEwLHtpbnRyb2R1Y2VzRXJyb3I6S3Qsbm9kZTpjaX07dmFyIFVhPURzKCR0LDY3MTA4ODYzLCEwLCEwKTtpZihVYSYmKGdfKFVhLEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uLDY3MTA4ODYzLCExKS5hY2Nlc3NpYmlsaXR5IT09MD9LdD0hMDooKGVhPShMdD1Gci50cmFja2VyKT09PW51bGx8fEx0PT09dm9pZCAwP3ZvaWQgMDpMdC50cmFja1N5bWJvbCk9PT1udWxsfHxlYT09PXZvaWQgMHx8ZWEuY2FsbChMdCxVYSxGci5lbmNsb3NpbmdEZWNsYXJhdGlvbiw2NzEwODg2MyksanQ9PW51bGx8fGp0KFVhKSksZS5pc0lkZW50aWZpZXIoY2kpKSl7dmFyIFlyPWdvKFVhKSxOaT1VYS5mbGFncyYyNjIxNDQmJiFHdShZci5zeW1ib2wsRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24pP2phKFlyLEZyKTplLmZhY3RvcnkuY2xvbmVOb2RlKGNpKTtyZXR1cm4gTmkuc3ltYm9sPVVhLHtpbnRyb2R1Y2VzRXJyb3I6S3Qsbm9kZTplLnNldEVtaXRGbGFncyhlLnNldE9yaWdpbmFsTm9kZShOaSxjaSksMTY3NzcyMTYpfX1yZXR1cm57aW50cm9kdWNlc0Vycm9yOkt0LG5vZGU6Y2l9fWZ1bmN0aW9uIE1uKGNpLEZyLGp0LEx0KXtnJiZnLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQmJmcudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpO3ZhciBlYT0hMSxLdD1lLmdldFNvdXJjZUZpbGVPZk5vZGUoRnIpLCR0PWUudmlzaXROb2RlKEZyLFVhKTtpZihlYSlyZXR1cm47cmV0dXJuICR0PT09RnI/ZS5zZXRUZXh0UmFuZ2UoZS5mYWN0b3J5LmNsb25lTm9kZShGciksRnIpOiR0O2Z1bmN0aW9uIFVhKFlyKXtpZihlLmlzSlNEb2NBbGxUeXBlKFlyKXx8WXIua2luZD09PTMxOSlyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxMzApO2lmKGUuaXNKU0RvY1Vua25vd25UeXBlKFlyKSlyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxNTUpO2lmKGUuaXNKU0RvY051bGxhYmxlVHlwZShZcikpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVVbmlvblR5cGVOb2RlKFtlLnZpc2l0Tm9kZShZci50eXBlLFVhKSxlLmZhY3RvcnkuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKGUuZmFjdG9yeS5jcmVhdGVOdWxsKCkpXSk7aWYoZS5pc0pTRG9jT3B0aW9uYWxUeXBlKFlyKSlyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVVuaW9uVHlwZU5vZGUoW2UudmlzaXROb2RlKFlyLnR5cGUsVWEpLGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTUzKV0pO2lmKGUuaXNKU0RvY05vbk51bGxhYmxlVHlwZShZcikpcmV0dXJuIGUudmlzaXROb2RlKFlyLnR5cGUsVWEpO2lmKGUuaXNKU0RvY1ZhcmlhZGljVHlwZShZcikpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVBcnJheVR5cGVOb2RlKGUudmlzaXROb2RlKFlyLnR5cGUsVWEpKTtpZihlLmlzSlNEb2NUeXBlTGl0ZXJhbChZcikpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUoZS5tYXAoWXIuanNEb2NQcm9wZXJ0eVRhZ3MsZnVuY3Rpb24oR2Epe3ZhciBRbj1lLmlzSWRlbnRpZmllcihHYS5uYW1lKT9HYS5uYW1lOkdhLm5hbWUucmlnaHQsd289ZGEoVmEoWXIpLFFuLmVzY2FwZWRUZXh0KSxQbz13byYmR2EudHlwZUV4cHJlc3Npb24mJlZhKEdhLnR5cGVFeHByZXNzaW9uLnR5cGUpIT09d28/byh3byxjaSk6dm9pZCAwO3JldHVybiBlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlTaWduYXR1cmUodm9pZCAwLFFuLEdhLmlzQnJhY2tldGVkfHxHYS50eXBlRXhwcmVzc2lvbiYmZS5pc0pTRG9jT3B0aW9uYWxUeXBlKEdhLnR5cGVFeHByZXNzaW9uLnR5cGUpP2UuZmFjdG9yeS5jcmVhdGVUb2tlbig1Nyk6dm9pZCAwLFBvfHxHYS50eXBlRXhwcmVzc2lvbiYmZS52aXNpdE5vZGUoR2EudHlwZUV4cHJlc3Npb24udHlwZSxVYSl8fGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKSl9KSk7aWYoZS5pc1R5cGVSZWZlcmVuY2VOb2RlKFlyKSYmZS5pc0lkZW50aWZpZXIoWXIudHlwZU5hbWUpJiZZci50eXBlTmFtZS5lc2NhcGVkVGV4dD09PVwiXCIpcmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKSxZcik7aWYoKGUuaXNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoWXIpfHxlLmlzVHlwZVJlZmVyZW5jZU5vZGUoWXIpKSYmZS5pc0pTRG9jSW5kZXhTaWduYXR1cmUoWXIpKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlVHlwZUxpdGVyYWxOb2RlKFtlLmZhY3RvcnkuY3JlYXRlSW5kZXhTaWduYXR1cmUodm9pZCAwLHZvaWQgMCxbZS5mYWN0b3J5LmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFwieFwiLHZvaWQgMCxlLnZpc2l0Tm9kZShZci50eXBlQXJndW1lbnRzWzBdLFVhKSldLGUudmlzaXROb2RlKFlyLnR5cGVBcmd1bWVudHNbMV0sVWEpKV0pO2lmKGUuaXNKU0RvY0Z1bmN0aW9uVHlwZShZcikpaWYoZS5pc0pTRG9jQ29uc3RydWN0U2lnbmF0dXJlKFlyKSl7dmFyIE5pO3JldHVybiBlLmZhY3RvcnkuY3JlYXRlQ29uc3RydWN0b3JUeXBlTm9kZShZci5tb2RpZmllcnMsZS52aXNpdE5vZGVzKFlyLnR5cGVQYXJhbWV0ZXJzLFVhKSxlLm1hcERlZmluZWQoWXIucGFyYW1ldGVycyxmdW5jdGlvbihHYSxRbil7cmV0dXJuIEdhLm5hbWUmJmUuaXNJZGVudGlmaWVyKEdhLm5hbWUpJiZHYS5uYW1lLmVzY2FwZWRUZXh0PT09XCJuZXdcIj8oTmk9R2EudHlwZSx2b2lkIDApOmUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLEZhKEdhKSxvbihHYSxRbiksR2EucXVlc3Rpb25Ub2tlbixlLnZpc2l0Tm9kZShHYS50eXBlLFVhKSx2b2lkIDApfSksZS52aXNpdE5vZGUoTml8fFlyLnR5cGUsVWEpfHxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDEzMCkpfWVsc2UgcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVGdW5jdGlvblR5cGVOb2RlKGUudmlzaXROb2RlcyhZci50eXBlUGFyYW1ldGVycyxVYSksZS5tYXAoWXIucGFyYW1ldGVycyxmdW5jdGlvbihHYSxRbil7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLEZhKEdhKSxvbihHYSxRbiksR2EucXVlc3Rpb25Ub2tlbixlLnZpc2l0Tm9kZShHYS50eXBlLFVhKSx2b2lkIDApfSksZS52aXNpdE5vZGUoWXIudHlwZSxVYSl8fGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKSk7aWYoZS5pc1R5cGVSZWZlcmVuY2VOb2RlKFlyKSYmZS5pc0luSlNEb2MoWXIpJiYoIVF0KFlyLFZhKFlyKSl8fHZ4KFlyKXx8eGU9PT1ubShZciw3ODg5NjgsITApKSlyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUobyhWYShZciksY2kpLFlyKTtpZihlLmlzTGl0ZXJhbEltcG9ydFR5cGVOb2RlKFlyKSl7dmFyIEhpPXZhKFlyKS5yZXNvbHZlZFN5bWJvbDtyZXR1cm4gZS5pc0luSlNEb2MoWXIpJiZIaSYmKCFZci5pc1R5cGVPZiYmIShIaS5mbGFncyY3ODg5NjgpfHwhKGUubGVuZ3RoKFlyLnR5cGVBcmd1bWVudHMpPj1VbChBZihIaSkpKSk/ZS5zZXRPcmlnaW5hbE5vZGUobyhWYShZciksY2kpLFlyKTplLmZhY3RvcnkudXBkYXRlSW1wb3J0VHlwZU5vZGUoWXIsZS5mYWN0b3J5LnVwZGF0ZUxpdGVyYWxUeXBlTm9kZShZci5hcmd1bWVudCx6bihZcixZci5hcmd1bWVudC5saXRlcmFsKSksWXIucXVhbGlmaWVyLGUudmlzaXROb2RlcyhZci50eXBlQXJndW1lbnRzLFVhLGUuaXNUeXBlTm9kZSksWXIuaXNUeXBlT2YpfWlmKGUuaXNFbnRpdHlOYW1lKFlyKXx8ZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKFlyKSl7dmFyIF90PW9hKFlyLGNpLGp0KSxndD1fdC5pbnRyb2R1Y2VzRXJyb3IsVnQ9X3Qubm9kZTtpZihlYT1lYXx8Z3QsVnQhPT1ZcilyZXR1cm4gVnR9cmV0dXJuIEt0JiZlLmlzVHVwbGVUeXBlTm9kZShZcikmJmUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oS3QsWXIucG9zKS5saW5lPT09ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihLdCxZci5lbmQpLmxpbmUmJmUuc2V0RW1pdEZsYWdzKFlyLDEpLGUudmlzaXRFYWNoQ2hpbGQoWXIsVWEsZS5udWxsVHJhbnNmb3JtYXRpb25Db250ZXh0KTtmdW5jdGlvbiBGYShHYSl7cmV0dXJuIEdhLmRvdERvdERvdFRva2VufHwoR2EudHlwZSYmZS5pc0pTRG9jVmFyaWFkaWNUeXBlKEdhLnR5cGUpP2UuZmFjdG9yeS5jcmVhdGVUb2tlbigyNSk6dm9pZCAwKX1mdW5jdGlvbiBvbihHYSxRbil7cmV0dXJuIEdhLm5hbWUmJmUuaXNJZGVudGlmaWVyKEdhLm5hbWUpJiZHYS5uYW1lLmVzY2FwZWRUZXh0PT09XCJ0aGlzXCI/XCJ0aGlzXCI6RmEoR2EpP1wiYXJnc1wiOlwiYXJnXCIuY29uY2F0KFFuKX1mdW5jdGlvbiB6bihHYSxRbil7aWYoTHQpe2lmKGNpLnRyYWNrZXImJmNpLnRyYWNrZXIubW9kdWxlUmVzb2x2ZXJIb3N0KXt2YXIgd289VVMoR2EpO2lmKHdvKXt2YXIgUG89ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZSghIWwudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyksVW89e2dldENhbm9uaWNhbEZpbGVOYW1lOlBvLGdldEN1cnJlbnREaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gY2kudHJhY2tlci5tb2R1bGVSZXNvbHZlckhvc3QuZ2V0Q3VycmVudERpcmVjdG9yeSgpfSxnZXRDb21tb25Tb3VyY2VEaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gY2kudHJhY2tlci5tb2R1bGVSZXNvbHZlckhvc3QuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KCl9fSxScz1lLmdldFJlc29sdmVkRXh0ZXJuYWxNb2R1bGVOYW1lKFVvLHdvKTtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoUnMpfX19ZWxzZSBpZihjaS50cmFja2VyJiZjaS50cmFja2VyLnRyYWNrRXh0ZXJuYWxNb2R1bGVTeW1ib2xPZkltcG9ydFR5cGVOb2RlKXt2YXIgRnM9UGwoUW4sUW4sdm9pZCAwKTtGcyYmY2kudHJhY2tlci50cmFja0V4dGVybmFsTW9kdWxlU3ltYm9sT2ZJbXBvcnRUeXBlTm9kZShGcyl9cmV0dXJuIFFufX19ZnVuY3Rpb24gTG4oY2ksRnIsanQpe3ZhciBMdD1DYShlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlEZWNsYXJhdGlvbiwxNjksITApLGVhPUNhKGZ1bmN0aW9uKGdpLHp0LExhLGZhLHlhKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlKHp0LExhLGZhLHlhKX0sMTY4LCExKSxLdD1Gci5lbmNsb3NpbmdEZWNsYXJhdGlvbiwkdD1bXSxVYT1uZXcgZS5TZXQsWXI9W10sTmk9RnI7RnI9S2UoS2Uoe30sTmkpLHt1c2VkU3ltYm9sTmFtZXM6bmV3IGUuU2V0KE5pLnVzZWRTeW1ib2xOYW1lcykscmVtYXBwZWRTeW1ib2xOYW1lczpuZXcgZS5NYXAsdHJhY2tlcjpLZShLZSh7fSxOaS50cmFja2VyKSx7dHJhY2tTeW1ib2w6ZnVuY3Rpb24oZ2ksenQsTGEpe3ZhciBmYT1nXyhnaSx6dCxMYSwhMSk7aWYoZmEuYWNjZXNzaWJpbGl0eT09PTApe3ZhciB5YT1DaShnaSxGcixMYSk7Z2kuZmxhZ3MmNHx8cmMoeWFbMF0pfWVsc2UgaWYoTmkudHJhY2tlciYmTmkudHJhY2tlci50cmFja1N5bWJvbClyZXR1cm4gTmkudHJhY2tlci50cmFja1N5bWJvbChnaSx6dCxMYSk7cmV0dXJuITF9fSl9KSxGci50cmFja2VyPWkoRnIsRnIudHJhY2tlciksZS5mb3JFYWNoRW50cnkoY2ksZnVuY3Rpb24oZ2ksenQpe3ZhciBMYT1lLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHp0KTtscyhnaSxMYSl9KTt2YXIgSGk9IWp0LF90PWNpLmdldChcImV4cG9ydD1cIik7cmV0dXJuIF90JiZjaS5zaXplPjEmJl90LmZsYWdzJjIwOTcxNTImJihjaT1lLmNyZWF0ZVN5bWJvbFRhYmxlKCksY2kuc2V0KFwiZXhwb3J0PVwiLF90KSksVW8oY2kpLEdhKCR0KTtmdW5jdGlvbiBndChnaSl7cmV0dXJuISFnaSYmZ2kua2luZD09PTc5fWZ1bmN0aW9uIFZ0KGdpKXtyZXR1cm4gZS5pc1ZhcmlhYmxlU3RhdGVtZW50KGdpKT9lLmZpbHRlcihlLm1hcChnaS5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24pLGd0KTplLmZpbHRlcihbZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihnaSldLGd0KX1mdW5jdGlvbiBGYShnaSl7dmFyIHp0PWUuZmluZChnaSxlLmlzRXhwb3J0QXNzaWdubWVudCksTGE9ZS5maW5kSW5kZXgoZ2ksZS5pc01vZHVsZURlY2xhcmF0aW9uKSxmYT1MYSE9PS0xP2dpW0xhXTp2b2lkIDA7aWYoZmEmJnp0JiZ6dC5pc0V4cG9ydEVxdWFscyYmZS5pc0lkZW50aWZpZXIoenQuZXhwcmVzc2lvbikmJmUuaXNJZGVudGlmaWVyKGZhLm5hbWUpJiZlLmlkVGV4dChmYS5uYW1lKT09PWUuaWRUZXh0KHp0LmV4cHJlc3Npb24pJiZmYS5ib2R5JiZlLmlzTW9kdWxlQmxvY2soZmEuYm9keSkpe3ZhciB5YT1lLmZpbHRlcihnaSxmdW5jdGlvbihzbil7cmV0dXJuISEoZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKHNuKSYxKX0pLE5uPWZhLm5hbWUsZm49ZmEuYm9keTtpZihlLmxlbmd0aCh5YSkmJihmYT1lLmZhY3RvcnkudXBkYXRlTW9kdWxlRGVjbGFyYXRpb24oZmEsZmEuZGVjb3JhdG9ycyxmYS5tb2RpZmllcnMsZmEubmFtZSxmbj1lLmZhY3RvcnkudXBkYXRlTW9kdWxlQmxvY2soZm4sZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShWZShWZShbXSxmYS5ib2R5LnN0YXRlbWVudHMsITApLFtlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlTmFtZWRFeHBvcnRzKGUubWFwKGUuZmxhdE1hcCh5YSxmdW5jdGlvbihzbil7cmV0dXJuIFZ0KHNuKX0pLGZ1bmN0aW9uKHNuKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydFNwZWNpZmllcighMSx2b2lkIDAsc24pfSkpLHZvaWQgMCldLCExKSkpKSxnaT1WZShWZShWZShbXSxnaS5zbGljZSgwLExhKSwhMCksW2ZhXSwhMSksZ2kuc2xpY2UoTGErMSksITApKSwhZS5maW5kKGdpLGZ1bmN0aW9uKHNuKXtyZXR1cm4gc24hPT1mYSYmZS5ub2RlSGFzTmFtZShzbixObil9KSl7JHQ9W107dmFyIGhuPSFlLnNvbWUoZm4uc3RhdGVtZW50cyxmdW5jdGlvbihzbil7cmV0dXJuIGUuaGFzU3ludGFjdGljTW9kaWZpZXIoc24sMSl8fGUuaXNFeHBvcnRBc3NpZ25tZW50KHNuKXx8ZS5pc0V4cG9ydERlY2xhcmF0aW9uKHNuKX0pO2UuZm9yRWFjaChmbi5zdGF0ZW1lbnRzLGZ1bmN0aW9uKHNuKXtUcyhzbixobj8xOjApfSksZ2k9VmUoVmUoW10sZS5maWx0ZXIoZ2ksZnVuY3Rpb24oc24pe3JldHVybiBzbiE9PWZhJiZzbiE9PXp0fSksITApLCR0LCEwKX19cmV0dXJuIGdpfWZ1bmN0aW9uIG9uKGdpKXt2YXIgenQ9ZS5maWx0ZXIoZ2ksZnVuY3Rpb24obG4pe3JldHVybiBlLmlzRXhwb3J0RGVjbGFyYXRpb24obG4pJiYhbG4ubW9kdWxlU3BlY2lmaWVyJiYhIWxuLmV4cG9ydENsYXVzZSYmZS5pc05hbWVkRXhwb3J0cyhsbi5leHBvcnRDbGF1c2UpfSk7aWYoZS5sZW5ndGgoenQpPjEpe3ZhciBMYT1lLmZpbHRlcihnaSxmdW5jdGlvbihsbil7cmV0dXJuIWUuaXNFeHBvcnREZWNsYXJhdGlvbihsbil8fCEhbG4ubW9kdWxlU3BlY2lmaWVyfHwhbG4uZXhwb3J0Q2xhdXNlfSk7Z2k9VmUoVmUoW10sTGEsITApLFtlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlTmFtZWRFeHBvcnRzKGUuZmxhdE1hcCh6dCxmdW5jdGlvbihsbil7cmV0dXJuIGUuY2FzdChsbi5leHBvcnRDbGF1c2UsZS5pc05hbWVkRXhwb3J0cykuZWxlbWVudHN9KSksdm9pZCAwKV0sITEpfXZhciBmYT1lLmZpbHRlcihnaSxmdW5jdGlvbihsbil7cmV0dXJuIGUuaXNFeHBvcnREZWNsYXJhdGlvbihsbikmJiEhbG4ubW9kdWxlU3BlY2lmaWVyJiYhIWxuLmV4cG9ydENsYXVzZSYmZS5pc05hbWVkRXhwb3J0cyhsbi5leHBvcnRDbGF1c2UpfSk7aWYoZS5sZW5ndGgoZmEpPjEpe3ZhciB5YT1lLmdyb3VwKGZhLGZ1bmN0aW9uKGxuKXtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWwobG4ubW9kdWxlU3BlY2lmaWVyKT9cIj5cIitsbi5tb2R1bGVTcGVjaWZpZXIudGV4dDpcIj5cIn0pO2lmKHlhLmxlbmd0aCE9PWZhLmxlbmd0aClmb3IodmFyIE5uPWZ1bmN0aW9uKGxuKXtsbi5sZW5ndGg+MSYmKGdpPVZlKFZlKFtdLGUuZmlsdGVyKGdpLGZ1bmN0aW9uKGxvKXtyZXR1cm4gbG4uaW5kZXhPZihsbyk9PT0tMX0pLCEwKSxbZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsITEsZS5mYWN0b3J5LmNyZWF0ZU5hbWVkRXhwb3J0cyhlLmZsYXRNYXAobG4sZnVuY3Rpb24obG8pe3JldHVybiBlLmNhc3QobG8uZXhwb3J0Q2xhdXNlLGUuaXNOYW1lZEV4cG9ydHMpLmVsZW1lbnRzfSkpLGxuWzBdLm1vZHVsZVNwZWNpZmllcildLCExKSl9LGZuPTAsaG49eWE7Zm48aG4ubGVuZ3RoO2ZuKyspe3ZhciBzbj1obltmbl07Tm4oc24pfX1yZXR1cm4gZ2l9ZnVuY3Rpb24gem4oZ2kpe3ZhciB6dD1lLmZpbmRJbmRleChnaSxmdW5jdGlvbih5YSl7cmV0dXJuIGUuaXNFeHBvcnREZWNsYXJhdGlvbih5YSkmJiF5YS5tb2R1bGVTcGVjaWZpZXImJiF5YS5hc3NlcnRDbGF1c2UmJiEheWEuZXhwb3J0Q2xhdXNlJiZlLmlzTmFtZWRFeHBvcnRzKHlhLmV4cG9ydENsYXVzZSl9KTtpZih6dD49MCl7dmFyIExhPWdpW3p0XSxmYT1lLm1hcERlZmluZWQoTGEuZXhwb3J0Q2xhdXNlLmVsZW1lbnRzLGZ1bmN0aW9uKHlhKXtpZigheWEucHJvcGVydHlOYW1lKXt2YXIgTm49ZS5pbmRpY2VzT2YoZ2kpLGZuPWUuZmlsdGVyKE5uLGZ1bmN0aW9uKGxvKXtyZXR1cm4gZS5ub2RlSGFzTmFtZShnaVtsb10seWEubmFtZSl9KTtpZihlLmxlbmd0aChmbikmJmUuZXZlcnkoZm4sZnVuY3Rpb24obG8pe3JldHVybiBRbihnaVtsb10pfSkpe2Zvcih2YXIgaG49MCxzbj1mbjtobjxzbi5sZW5ndGg7aG4rKyl7dmFyIGxuPXNuW2huXTtnaVtsbl09d28oZ2lbbG5dKX1yZXR1cm59fXJldHVybiB5YX0pO2UubGVuZ3RoKGZhKT9naVt6dF09ZS5mYWN0b3J5LnVwZGF0ZUV4cG9ydERlY2xhcmF0aW9uKExhLExhLmRlY29yYXRvcnMsTGEubW9kaWZpZXJzLExhLmlzVHlwZU9ubHksZS5mYWN0b3J5LnVwZGF0ZU5hbWVkRXhwb3J0cyhMYS5leHBvcnRDbGF1c2UsZmEpLExhLm1vZHVsZVNwZWNpZmllcixMYS5hc3NlcnRDbGF1c2UpOmUub3JkZXJlZFJlbW92ZUl0ZW1BdChnaSx6dCl9cmV0dXJuIGdpfWZ1bmN0aW9uIEdhKGdpKXtyZXR1cm4gZ2k9RmEoZ2kpLGdpPW9uKGdpKSxnaT16bihnaSksS3QmJihlLmlzU291cmNlRmlsZShLdCkmJmUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUoS3QpfHxlLmlzTW9kdWxlRGVjbGFyYXRpb24oS3QpKSYmKCFlLnNvbWUoZ2ksZS5pc0V4dGVybmFsTW9kdWxlSW5kaWNhdG9yKXx8IWUuaGFzU2NvcGVNYXJrZXIoZ2kpJiZlLnNvbWUoZ2ksZS5uZWVkc1Njb3BlTWFya2VyKSkmJmdpLnB1c2goZS5jcmVhdGVFbXB0eUV4cG9ydHMoZS5mYWN0b3J5KSksZ2l9ZnVuY3Rpb24gUW4oZ2kpe3JldHVybiBlLmlzRW51bURlY2xhcmF0aW9uKGdpKXx8ZS5pc1ZhcmlhYmxlU3RhdGVtZW50KGdpKXx8ZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oZ2kpfHxlLmlzQ2xhc3NEZWNsYXJhdGlvbihnaSl8fGUuaXNNb2R1bGVEZWNsYXJhdGlvbihnaSkmJiFlLmlzRXh0ZXJuYWxNb2R1bGVBdWdtZW50YXRpb24oZ2kpJiYhZS5pc0dsb2JhbFNjb3BlQXVnbWVudGF0aW9uKGdpKXx8ZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKGdpKXx8enkoZ2kpfWZ1bmN0aW9uIHdvKGdpKXt2YXIgenQ9KGUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFncyhnaSl8MSkmLTM7cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVNb2RpZmllcnMoZ2ksenQpfWZ1bmN0aW9uIFBvKGdpKXt2YXIgenQ9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKGdpKSYtMjtyZXR1cm4gZS5mYWN0b3J5LnVwZGF0ZU1vZGlmaWVycyhnaSx6dCl9ZnVuY3Rpb24gVW8oZ2ksenQsTGEpe3p0fHxZci5wdXNoKG5ldyBlLk1hcCksZ2kuZm9yRWFjaChmdW5jdGlvbihmYSl7UnMoZmEsITEsISFMYSl9KSx6dHx8KFlyW1lyLmxlbmd0aC0xXS5mb3JFYWNoKGZ1bmN0aW9uKGZhKXtScyhmYSwhMCwhIUxhKX0pLFlyLnBvcCgpKX1mdW5jdGlvbiBScyhnaSx6dCxMYSl7dmFyIGZhPXNvKGdpKTtpZighVWEuaGFzKHkoZmEpKSl7VWEuYWRkKHkoZmEpKTt2YXIgeWE9IXp0O2lmKHlhfHwhIWUubGVuZ3RoKGdpLmRlY2xhcmF0aW9ucykmJmUuc29tZShnaS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oaG4pe3JldHVybiEhZS5maW5kQW5jZXN0b3IoaG4sZnVuY3Rpb24oc24pe3JldHVybiBzbj09PUt0fSl9KSl7dmFyIE5uPUZyO0ZyPVl0KEZyKTt2YXIgZm49RnMoZ2ksenQsTGEpO3JldHVybiBGci5yZXBvcnRlZERpYWdub3N0aWMmJihOaS5yZXBvcnRlZERpYWdub3N0aWM9RnIucmVwb3J0ZWREaWFnbm9zdGljKSxGcj1Obixmbn19fWZ1bmN0aW9uIEZzKGdpLHp0LExhKXt2YXIgZmEseWEsTm4sZm4saG49ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhnaS5lc2NhcGVkTmFtZSksc249Z2kuZXNjYXBlZE5hbWU9PT1cImRlZmF1bHRcIjtpZih6dCYmIShGci5mbGFncyYxMzEwNzIpJiZlLmlzU3RyaW5nQU5vbkNvbnRleHR1YWxLZXl3b3JkKGhuKSYmIXNuKXtGci5lbmNvdW50ZXJlZEVycm9yPSEwO3JldHVybn12YXIgbG49c24mJiEhKGdpLmZsYWdzJi0xMTN8fGdpLmZsYWdzJjE2JiZlLmxlbmd0aCh1byhKdChnaSkpKSkmJiEoZ2kuZmxhZ3MmMjA5NzE1MiksbG89IWxuJiYhenQmJmUuaXNTdHJpbmdBTm9uQ29udGV4dHVhbEtleXdvcmQoaG4pJiYhc247KGxufHxsbykmJih6dD0hMCk7dmFyIF9vPSh6dD8wOjEpfChzbiYmIWxuPzUxMjowKSxfcz1naS5mbGFncyYxNTM2JiZnaS5mbGFncyY3JiZnaS5lc2NhcGVkTmFtZSE9PVwiZXhwb3J0PVwiLFZvPV9zJiZtYShKdChnaSksZ2kpO2lmKChnaS5mbGFncyY4MjA4fHxWbykmJmlkKEp0KGdpKSxnaSxscyhnaSxobiksX28pLGdpLmZsYWdzJjUyNDI4OCYmcmwoZ2ksaG4sX28pLGdpLmZsYWdzJjcmJmdpLmVzY2FwZWROYW1lIT09XCJleHBvcnQ9XCImJiEoZ2kuZmxhZ3MmNDE5NDMwNCkmJiEoZ2kuZmxhZ3MmMzIpJiYhVm8paWYoTGEpe3ZhciBZbz1odChnaSk7WW8mJihsbz0hMSxsbj0hMSl9ZWxzZXt2YXIgQ3M9SnQoZ2kpLGljPWxzKGdpLGhuKTtpZighKGdpLmZsYWdzJjE2KSYmbWEoQ3MsZ2kpKWlkKENzLGdpLGljLF9vKTtlbHNle3ZhciBfYz1naS5mbGFncyYyP3B2KGdpKT8yOjE6KChmYT1naS5wYXJlbnQpPT09bnVsbHx8ZmE9PT12b2lkIDA/dm9pZCAwOmZhLnZhbHVlRGVjbGFyYXRpb24pJiZlLmlzU291cmNlRmlsZSgoeWE9Z2kucGFyZW50KT09PW51bGx8fHlhPT09dm9pZCAwP3ZvaWQgMDp5YS52YWx1ZURlY2xhcmF0aW9uKT8yOnZvaWQgMCxpbD1sbnx8IShnaS5mbGFncyY0KT9pYzpJbyhpYyxnaSksbl89Z2kuZGVjbGFyYXRpb25zJiZlLmZpbmQoZ2kuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHBwKXtyZXR1cm4gZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocHApfSk7bl8mJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChuXy5wYXJlbnQpJiZuXy5wYXJlbnQuZGVjbGFyYXRpb25zLmxlbmd0aD09PTEmJihuXz1uXy5wYXJlbnQucGFyZW50KTt2YXIgb189KE5uPWdpLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxObj09PXZvaWQgMD92b2lkIDA6Tm4uZmluZChlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKTtpZihvXyYmZS5pc0JpbmFyeUV4cHJlc3Npb24ob18ucGFyZW50KSYmZS5pc0lkZW50aWZpZXIob18ucGFyZW50LnJpZ2h0KSYmKChmbj1Dcy5zeW1ib2wpPT09bnVsbHx8Zm49PT12b2lkIDA/dm9pZCAwOmZuLnZhbHVlRGVjbGFyYXRpb24pJiZlLmlzU291cmNlRmlsZShDcy5zeW1ib2wudmFsdWVEZWNsYXJhdGlvbikpe3ZhciBvZz1pYz09PW9fLnBhcmVudC5yaWdodC5lc2NhcGVkVGV4dD92b2lkIDA6b18ucGFyZW50LnJpZ2h0O1RzKGUuZmFjdG9yeS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCExLGUuZmFjdG9yeS5jcmVhdGVOYW1lZEV4cG9ydHMoW2UuZmFjdG9yeS5jcmVhdGVFeHBvcnRTcGVjaWZpZXIoITEsb2csaWMpXSkpLDApLEZyLnRyYWNrZXIudHJhY2tTeW1ib2woQ3Muc3ltYm9sLEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uLDExMTU1MSl9ZWxzZXt2YXIgX3A9ZS5zZXRUZXh0UmFuZ2UoZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW2UuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGlsLHZvaWQgMCxLYShGcixDcyxnaSxLdCxyYyxqdCkpXSxfYykpLG5fKTtUcyhfcCxpbCE9PWljP19vJi0yOl9vKSxpbCE9PWljJiYhenQmJihUcyhlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlTmFtZWRFeHBvcnRzKFtlLmZhY3RvcnkuY3JlYXRlRXhwb3J0U3BlY2lmaWVyKCExLGlsLGljKV0pKSwwKSxsbz0hMSxsbj0hMSl9fX1pZihnaS5mbGFncyYzODQmJnpnKGdpLGhuLF9vKSxnaS5mbGFncyYzMiYmKGdpLmZsYWdzJjQmJmdpLnZhbHVlRGVjbGFyYXRpb24mJmUuaXNCaW5hcnlFeHByZXNzaW9uKGdpLnZhbHVlRGVjbGFyYXRpb24ucGFyZW50KSYmZS5pc0NsYXNzRXhwcmVzc2lvbihnaS52YWx1ZURlY2xhcmF0aW9uLnBhcmVudC5yaWdodCk/SHQoZ2ksbHMoZ2ksaG4pLF9vKTptdChnaSxscyhnaSxobiksX28pKSwoZ2kuZmxhZ3MmMTUzNiYmKCFfc3x8VGwoZ2kpKXx8Vm8pJiZmcChnaSxobixfbyksZ2kuZmxhZ3MmNjQmJiEoZ2kuZmxhZ3MmMzIpJiZqZChnaSxobixfbyksZ2kuZmxhZ3MmMjA5NzE1MiYmSHQoZ2ksbHMoZ2ksaG4pLF9vKSxnaS5mbGFncyY0JiZnaS5lc2NhcGVkTmFtZT09PVwiZXhwb3J0PVwiJiZodChnaSksZ2kuZmxhZ3MmODM4ODYwOCYmZ2kuZGVjbGFyYXRpb25zKWZvcih2YXIgdGQ9MCxzXz1naS5kZWNsYXJhdGlvbnM7dGQ8c18ubGVuZ3RoO3RkKyspe3ZhciBzZz1zX1t0ZF0sTmM9YWMoc2csc2cubW9kdWxlU3BlY2lmaWVyKTshTmN8fFRzKGUuZmFjdG9yeS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCExLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChOdChOYyxGcikpKSwwKX1sbj9UcyhlLmZhY3RvcnkuY3JlYXRlRXhwb3J0QXNzaWdubWVudCh2b2lkIDAsdm9pZCAwLCExLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGxzKGdpLGhuKSkpLDApOmxvJiZUcyhlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlTmFtZWRFeHBvcnRzKFtlLmZhY3RvcnkuY3JlYXRlRXhwb3J0U3BlY2lmaWVyKCExLGxzKGdpLGhuKSxobildKSksMCl9ZnVuY3Rpb24gcmMoZ2kpe2lmKCFlLnNvbWUoZ2kuZGVjbGFyYXRpb25zLGUuaXNQYXJhbWV0ZXJEZWNsYXJhdGlvbikpe2UuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKFlyW1lyLmxlbmd0aC0xXSksSW8oZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhnaS5lc2NhcGVkTmFtZSksZ2kpO3ZhciB6dD0hIShnaS5mbGFncyYyMDk3MTUyKSYmIWUuc29tZShnaS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oTGEpe3JldHVybiEhZS5maW5kQW5jZXN0b3IoTGEsZS5pc0V4cG9ydERlY2xhcmF0aW9uKXx8ZS5pc05hbWVzcGFjZUV4cG9ydChMYSl8fGUuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihMYSkmJiFlLmlzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UoTGEubW9kdWxlUmVmZXJlbmNlKX0pO1lyW3p0PzA6WXIubGVuZ3RoLTFdLnNldCh5KGdpKSxnaSl9fWZ1bmN0aW9uIHh1KGdpKXtyZXR1cm4gZS5pc1NvdXJjZUZpbGUoZ2kpJiYoZS5pc0V4dGVybmFsT3JDb21tb25Kc01vZHVsZShnaSl8fGUuaXNKc29uU291cmNlRmlsZShnaSkpfHxlLmlzQW1iaWVudE1vZHVsZShnaSkmJiFlLmlzR2xvYmFsU2NvcGVBdWdtZW50YXRpb24oZ2kpfWZ1bmN0aW9uIFRzKGdpLHp0KXtpZihlLmNhbkhhdmVNb2RpZmllcnMoZ2kpKXt2YXIgTGE9MCxmYT1Gci5lbmNsb3NpbmdEZWNsYXJhdGlvbiYmKGUuaXNKU0RvY1R5cGVBbGlhcyhGci5lbmNsb3NpbmdEZWNsYXJhdGlvbik/ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uKTpGci5lbmNsb3NpbmdEZWNsYXJhdGlvbik7enQmMSYmZmEmJih4dShmYSl8fGUuaXNNb2R1bGVEZWNsYXJhdGlvbihmYSkpJiZRbihnaSkmJihMYXw9MSksSGkmJiEoTGEmMSkmJighZmF8fCEoZmEuZmxhZ3MmMTY3NzcyMTYpKSYmKGUuaXNFbnVtRGVjbGFyYXRpb24oZ2kpfHxlLmlzVmFyaWFibGVTdGF0ZW1lbnQoZ2kpfHxlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihnaSl8fGUuaXNDbGFzc0RlY2xhcmF0aW9uKGdpKXx8ZS5pc01vZHVsZURlY2xhcmF0aW9uKGdpKSkmJihMYXw9MiksenQmNTEyJiYoZS5pc0NsYXNzRGVjbGFyYXRpb24oZ2kpfHxlLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24oZ2kpfHxlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihnaSkpJiYoTGF8PTUxMiksTGEmJihnaT1lLmZhY3RvcnkudXBkYXRlTW9kaWZpZXJzKGdpLExhfGUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFncyhnaSkpKX0kdC5wdXNoKGdpKX1mdW5jdGlvbiBybChnaSx6dCxMYSl7dmFyIGZhLHlhPUphKGdpKSxObj1BYShnaSkudHlwZVBhcmFtZXRlcnMsZm49ZS5tYXAoTm4sZnVuY3Rpb24oX3Mpe3JldHVybiBEcihfcyxGcil9KSxobj0oZmE9Z2kuZGVjbGFyYXRpb25zKT09PW51bGx8fGZhPT09dm9pZCAwP3ZvaWQgMDpmYS5maW5kKGUuaXNKU0RvY1R5cGVBbGlhcyksc249ZS5nZXRUZXh0T2ZKU0RvY0NvbW1lbnQoaG4/aG4uY29tbWVudHx8aG4ucGFyZW50LmNvbW1lbnQ6dm9pZCAwKSxsbj1Gci5mbGFncztGci5mbGFnc3w9ODM4ODYwODt2YXIgbG89RnIuZW5jbG9zaW5nRGVjbGFyYXRpb247RnIuZW5jbG9zaW5nRGVjbGFyYXRpb249aG47dmFyIF9vPWhuJiZobi50eXBlRXhwcmVzc2lvbiYmZS5pc0pTRG9jVHlwZUV4cHJlc3Npb24oaG4udHlwZUV4cHJlc3Npb24pJiZNbihGcixobi50eXBlRXhwcmVzc2lvbi50eXBlLHJjLGp0KXx8byh5YSxGcik7VHMoZS5zZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHMoZS5mYWN0b3J5LmNyZWF0ZVR5cGVBbGlhc0RlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsbHMoZ2ksenQpLGZuLF9vKSxzbj9be2tpbmQ6Myx0ZXh0OmAqXG4gKiBgK3NuLnJlcGxhY2UoL1xcbi9nLGBcbiAqIGApK2BcbiBgLHBvczotMSxlbmQ6LTEsaGFzVHJhaWxpbmdOZXdMaW5lOiEwfV06W10pLExhKSxGci5mbGFncz1sbixGci5lbmNsb3NpbmdEZWNsYXJhdGlvbj1sb31mdW5jdGlvbiBqZChnaSx6dCxMYSl7dmFyIGZhPWFhKGdpKSx5YT1BZihnaSksTm49ZS5tYXAoeWEsZnVuY3Rpb24oVm8pe3JldHVybiBEcihWbyxGcil9KSxmbj1RYyhmYSksaG49ZS5sZW5ndGgoZm4pP0RvKGZuKTp2b2lkIDAsc249ZS5mbGF0TWFwKHVvKGZhKSxmdW5jdGlvbihWbyl7cmV0dXJuIEFuKFZvLGhuKX0pLGxuPWduKDAsZmEsaG4sMTc0KSxsbz1nbigxLGZhLGhuLDE3NSksX289Vm4oZmEsaG4pLF9zPWUubGVuZ3RoKGZuKT9bZS5mYWN0b3J5LmNyZWF0ZUhlcml0YWdlQ2xhdXNlKDk0LGUubWFwRGVmaW5lZChmbixmdW5jdGlvbihWbyl7cmV0dXJuIHVzKFZvLDExMTU1MSl9KSldOnZvaWQgMDtUcyhlLmZhY3RvcnkuY3JlYXRlSW50ZXJmYWNlRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxscyhnaSx6dCksTm4sX3MsVmUoVmUoVmUoVmUoW10sX28sITApLGxvLCEwKSxsbiwhMCksc24sITApKSxMYSl9ZnVuY3Rpb24gbHAoZ2kpe3JldHVybiBnaS5leHBvcnRzP2UuZmlsdGVyKGUuYXJyYXlGcm9tKGdpLmV4cG9ydHMudmFsdWVzKCkpLGhpKTpbXX1mdW5jdGlvbiBUbChnaSl7cmV0dXJuIGUuZXZlcnkobHAoZ2kpLGZ1bmN0aW9uKHp0KXtyZXR1cm4hKG9zKHp0KS5mbGFncyYxMTE1NTEpfSl9ZnVuY3Rpb24gZnAoZ2ksenQsTGEpe3ZhciBmYT1scChnaSkseWE9ZS5hcnJheVRvTXVsdGlNYXAoZmEsZnVuY3Rpb24obG8pe3JldHVybiBsby5wYXJlbnQmJmxvLnBhcmVudD09PWdpP1wicmVhbFwiOlwibWVyZ2VkXCJ9KSxObj15YS5nZXQoXCJyZWFsXCIpfHxlLmVtcHR5QXJyYXksZm49eWEuZ2V0KFwibWVyZ2VkXCIpfHxlLmVtcHR5QXJyYXk7aWYoZS5sZW5ndGgoTm4pKXt2YXIgaG49bHMoZ2ksenQpOyRyKE5uLGhuLExhLCEhKGdpLmZsYWdzJjY3MTA4ODgwKSl9aWYoZS5sZW5ndGgoZm4pKXt2YXIgc249ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uKSxobj1scyhnaSx6dCksbG49ZS5mYWN0b3J5LmNyZWF0ZU1vZHVsZUJsb2NrKFtlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlTmFtZWRFeHBvcnRzKGUubWFwRGVmaW5lZChlLmZpbHRlcihmbixmdW5jdGlvbihfbyl7cmV0dXJuIF9vLmVzY2FwZWROYW1lIT09XCJleHBvcnQ9XCJ9KSxmdW5jdGlvbihfbyl7dmFyIF9zLFZvLFlvPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoX28uZXNjYXBlZE5hbWUpLENzPWxzKF9vLFlvKSxpYz1fby5kZWNsYXJhdGlvbnMmJnJ1KF9vKTtpZihzbiYmKGljP3NuIT09ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGljKTohZS5zb21lKF9vLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihuXyl7cmV0dXJuIGUuZ2V0U291cmNlRmlsZU9mTm9kZShuXyk9PT1zbn0pKSl7KFZvPShfcz1Gci50cmFja2VyKT09PW51bGx8fF9zPT09dm9pZCAwP3ZvaWQgMDpfcy5yZXBvcnROb25sb2NhbEF1Z21lbnRhdGlvbik9PT1udWxsfHxWbz09PXZvaWQgMHx8Vm8uY2FsbChfcyxzbixnaSxfbyk7cmV0dXJufXZhciBfYz1pYyYmRWMoaWMsITApO3JjKF9jfHxfbyk7dmFyIGlsPV9jP2xzKF9jLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoX2MuZXNjYXBlZE5hbWUpKTpDcztyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydFNwZWNpZmllcighMSxZbz09PWlsP3ZvaWQgMDppbCxZbyl9KSkpXSk7VHMoZS5mYWN0b3J5LmNyZWF0ZU1vZHVsZURlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoaG4pLGxuLDE2KSwwKX19ZnVuY3Rpb24gemcoZ2ksenQsTGEpe1RzKGUuZmFjdG9yeS5jcmVhdGVFbnVtRGVjbGFyYXRpb24odm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVNb2RpZmllcnNGcm9tTW9kaWZpZXJGbGFncyhsUyhnaSk/MjA0ODowKSxscyhnaSx6dCksZS5tYXAoZS5maWx0ZXIodW8oSnQoZ2kpKSxmdW5jdGlvbihmYSl7cmV0dXJuISEoZmEuZmxhZ3MmOCl9KSxmdW5jdGlvbihmYSl7dmFyIHlhPWZhLmRlY2xhcmF0aW9ucyYmZmEuZGVjbGFyYXRpb25zWzBdJiZlLmlzRW51bU1lbWJlcihmYS5kZWNsYXJhdGlvbnNbMF0pP0JTKGZhLmRlY2xhcmF0aW9uc1swXSk6dm9pZCAwO3JldHVybiBlLmZhY3RvcnkuY3JlYXRlRW51bU1lbWJlcihlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGZhLmVzY2FwZWROYW1lKSx5YT09PXZvaWQgMD92b2lkIDA6dHlwZW9mIHlhPT1cInN0cmluZ1wiP2UuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKHlhKTplLmZhY3RvcnkuY3JlYXRlTnVtZXJpY0xpdGVyYWwoeWEpKX0pKSxMYSl9ZnVuY3Rpb24gaWQoZ2ksenQsTGEsZmEpe2Zvcih2YXIgeWE9b3QoZ2ksMCksTm49MCxmbj15YTtObjxmbi5sZW5ndGg7Tm4rKyl7dmFyIGhuPWZuW05uXSxzbj0kZShobiwyNTYsRnIse25hbWU6ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoTGEpLHByaXZhdGVTeW1ib2xWaXNpdG9yOnJjLGJ1bmRsZWRJbXBvcnRzOmp0fSk7VHMoZS5zZXRUZXh0UmFuZ2Uoc24semEoaG4pKSxmYSl9aWYoISh6dC5mbGFncyYxNTM2JiYhIXp0LmV4cG9ydHMmJiEhenQuZXhwb3J0cy5zaXplKSl7dmFyIGxuPWUuZmlsdGVyKHVvKGdpKSxoaSk7JHIobG4sTGEsZmEsITApfX1mdW5jdGlvbiB6YShnaSl7aWYoZ2kuZGVjbGFyYXRpb24mJmdpLmRlY2xhcmF0aW9uLnBhcmVudCl7aWYoZS5pc0JpbmFyeUV4cHJlc3Npb24oZ2kuZGVjbGFyYXRpb24ucGFyZW50KSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKGdpLmRlY2xhcmF0aW9uLnBhcmVudCk9PT01KXJldHVybiBnaS5kZWNsYXJhdGlvbi5wYXJlbnQ7aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oZ2kuZGVjbGFyYXRpb24ucGFyZW50KSYmZ2kuZGVjbGFyYXRpb24ucGFyZW50LnBhcmVudClyZXR1cm4gZ2kuZGVjbGFyYXRpb24ucGFyZW50LnBhcmVudH1yZXR1cm4gZ2kuZGVjbGFyYXRpb259ZnVuY3Rpb24gJHIoZ2ksenQsTGEsZmEpe2lmKGUubGVuZ3RoKGdpKSl7dmFyIHlhPWUuYXJyYXlUb011bHRpTWFwKGdpLGZ1bmN0aW9uKFlvKXtyZXR1cm4hZS5sZW5ndGgoWW8uZGVjbGFyYXRpb25zKXx8ZS5zb21lKFlvLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihDcyl7cmV0dXJuIGUuZ2V0U291cmNlRmlsZU9mTm9kZShDcyk9PT1lLmdldFNvdXJjZUZpbGVPZk5vZGUoRnIuZW5jbG9zaW5nRGVjbGFyYXRpb24pfSk/XCJsb2NhbFwiOlwicmVtb3RlXCJ9KSxObj15YS5nZXQoXCJsb2NhbFwiKXx8ZS5lbXB0eUFycmF5LGZuPWUucGFyc2VOb2RlRmFjdG9yeS5jcmVhdGVNb2R1bGVEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHp0KSxlLmZhY3RvcnkuY3JlYXRlTW9kdWxlQmxvY2soW10pLDE2KTtlLnNldFBhcmVudChmbixLdCksZm4ubG9jYWxzPWUuY3JlYXRlU3ltYm9sVGFibGUoZ2kpLGZuLnN5bWJvbD1naVswXS5wYXJlbnQ7dmFyIGhuPSR0OyR0PVtdO3ZhciBzbj1IaTtIaT0hMTt2YXIgbG49S2UoS2Uoe30sRnIpLHtlbmNsb3NpbmdEZWNsYXJhdGlvbjpmbn0pLGxvPUZyO0ZyPWxuLFVvKGUuY3JlYXRlU3ltYm9sVGFibGUoTm4pLGZhLCEwKSxGcj1sbyxIaT1zbjt2YXIgX289JHQ7JHQ9aG47dmFyIF9zPWUubWFwKF9vLGZ1bmN0aW9uKFlvKXtyZXR1cm4gZS5pc0V4cG9ydEFzc2lnbm1lbnQoWW8pJiYhWW8uaXNFeHBvcnRFcXVhbHMmJmUuaXNJZGVudGlmaWVyKFlvLmV4cHJlc3Npb24pP2UuZmFjdG9yeS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCExLGUuZmFjdG9yeS5jcmVhdGVOYW1lZEV4cG9ydHMoW2UuZmFjdG9yeS5jcmVhdGVFeHBvcnRTcGVjaWZpZXIoITEsWW8uZXhwcmVzc2lvbixlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcImRlZmF1bHRcIikpXSkpOllvfSksVm89ZS5ldmVyeShfcyxmdW5jdGlvbihZbyl7cmV0dXJuIGUuaGFzU3ludGFjdGljTW9kaWZpZXIoWW8sMSl9KT9lLm1hcChfcyxQbyk6X3M7Zm49ZS5mYWN0b3J5LnVwZGF0ZU1vZHVsZURlY2xhcmF0aW9uKGZuLGZuLmRlY29yYXRvcnMsZm4ubW9kaWZpZXJzLGZuLm5hbWUsZS5mYWN0b3J5LmNyZWF0ZU1vZHVsZUJsb2NrKFZvKSksVHMoZm4sTGEpfX1mdW5jdGlvbiBoaShnaSl7cmV0dXJuISEoZ2kuZmxhZ3MmMjg4NzY1Nil8fCEoZ2kuZmxhZ3MmNDE5NDMwNHx8Z2kuZXNjYXBlZE5hbWU9PT1cInByb3RvdHlwZVwifHxnaS52YWx1ZURlY2xhcmF0aW9uJiZlLmlzU3RhdGljKGdpLnZhbHVlRGVjbGFyYXRpb24pJiZlLmlzQ2xhc3NMaWtlKGdpLnZhbHVlRGVjbGFyYXRpb24ucGFyZW50KSl9ZnVuY3Rpb24gUmkoZ2kpe3ZhciB6dD1lLm1hcERlZmluZWQoZ2ksZnVuY3Rpb24oTGEpe3ZhciBmYSx5YT1Gci5lbmNsb3NpbmdEZWNsYXJhdGlvbjtGci5lbmNsb3NpbmdEZWNsYXJhdGlvbj1MYTt2YXIgTm49TGEuZXhwcmVzc2lvbjtpZihlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24oTm4pKXtpZihlLmlzSWRlbnRpZmllcihObikmJmUuaWRUZXh0KE5uKT09PVwiXCIpcmV0dXJuIGhuKHZvaWQgMCk7dmFyIGZuPXZvaWQgMDtpZihmYT1vYShObixGcixyYyksZm49ZmEuaW50cm9kdWNlc0Vycm9yLE5uPWZhLm5vZGUsZm4pcmV0dXJuIGhuKHZvaWQgMCl9cmV0dXJuIGhuKGUuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoTm4sZS5tYXAoTGEudHlwZUFyZ3VtZW50cyxmdW5jdGlvbihzbil7cmV0dXJuIE1uKEZyLHNuLHJjLGp0KXx8byhWYShzbiksRnIpfSkpKTtmdW5jdGlvbiBobihzbil7cmV0dXJuIEZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uPXlhLHNufX0pO2lmKHp0Lmxlbmd0aD09PWdpLmxlbmd0aClyZXR1cm4genR9ZnVuY3Rpb24gbXQoZ2ksenQsTGEpe3ZhciBmYSx5YSxObj0oZmE9Z2kuZGVjbGFyYXRpb25zKT09PW51bGx8fGZhPT09dm9pZCAwP3ZvaWQgMDpmYS5maW5kKGUuaXNDbGFzc0xpa2UpLGZuPUZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uO0ZyLmVuY2xvc2luZ0RlY2xhcmF0aW9uPU5ufHxmbjt2YXIgaG49QWYoZ2kpLHNuPWUubWFwKGhuLGZ1bmN0aW9uKE5jKXtyZXR1cm4gRHIoTmMsRnIpfSksbG49YWEoZ2kpLGxvPVFjKGxuKSxfbz1ObiYmZS5nZXRFZmZlY3RpdmVJbXBsZW1lbnRzVHlwZU5vZGVzKE5uKSxfcz1fbyYmUmkoX28pfHxlLm1hcERlZmluZWQoUWcobG4pLEJvKSxWbz1KdChnaSksWW89ISEoISgoeWE9Vm8uc3ltYm9sKT09PW51bGx8fHlhPT09dm9pZCAwKSYmeWEudmFsdWVEZWNsYXJhdGlvbikmJmUuaXNDbGFzc0xpa2UoVm8uc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pLENzPVlvP0JsKFZvKTpPZSxpYz1WZShWZShbXSxlLmxlbmd0aChsbyk/W2UuZmFjdG9yeS5jcmVhdGVIZXJpdGFnZUNsYXVzZSg5NCxlLm1hcChsbyxmdW5jdGlvbihOYyl7cmV0dXJuIHpvKE5jLENzLHp0KX0pKV06W10sITApLGUubGVuZ3RoKF9zKT9bZS5mYWN0b3J5LmNyZWF0ZUhlcml0YWdlQ2xhdXNlKDExNyxfcyldOltdLCEwKSxfYz12TShsbixsbyx1byhsbikpLGlsPWUuZmlsdGVyKF9jLGZ1bmN0aW9uKE5jKXt2YXIgcHA9TmMudmFsdWVEZWNsYXJhdGlvbjtyZXR1cm4hIXBwJiYhKGUuaXNOYW1lZERlY2xhcmF0aW9uKHBwKSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKHBwLm5hbWUpKX0pLG5fPWUuc29tZShfYyxmdW5jdGlvbihOYyl7dmFyIHBwPU5jLnZhbHVlRGVjbGFyYXRpb247cmV0dXJuISFwcCYmZS5pc05hbWVkRGVjbGFyYXRpb24ocHApJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIocHAubmFtZSl9KSxvXz1uXz9bZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlUHJpdmF0ZUlkZW50aWZpZXIoXCIjcHJpdmF0ZVwiKSx2b2lkIDAsdm9pZCAwLHZvaWQgMCldOmUuZW1wdHlBcnJheSxvZz1lLmZsYXRNYXAoaWwsZnVuY3Rpb24oTmMpe3JldHVybiBMdChOYywhMSxsb1swXSl9KSxfcD1lLmZsYXRNYXAoZS5maWx0ZXIodW8oVm8pLGZ1bmN0aW9uKE5jKXtyZXR1cm4hKE5jLmZsYWdzJjQxOTQzMDQpJiZOYy5lc2NhcGVkTmFtZSE9PVwicHJvdG90eXBlXCImJiFoaShOYyl9KSxmdW5jdGlvbihOYyl7cmV0dXJuIEx0KE5jLCEwLENzKX0pLHRkPSFZbyYmISFnaS52YWx1ZURlY2xhcmF0aW9uJiZlLmlzSW5KU0ZpbGUoZ2kudmFsdWVEZWNsYXJhdGlvbikmJiFlLnNvbWUob3QoVm8sMSkpLHNfPXRkP1tlLmZhY3RvcnkuY3JlYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbih2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzKDgpLFtdLHZvaWQgMCldOmduKDEsVm8sQ3MsMTcxKSxzZz1Wbihsbixsb1swXSk7RnIuZW5jbG9zaW5nRGVjbGFyYXRpb249Zm4sVHMoZS5zZXRUZXh0UmFuZ2UoZS5mYWN0b3J5LmNyZWF0ZUNsYXNzRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx6dCxzbixpYyxWZShWZShWZShWZShWZShbXSxzZywhMCksX3AsITApLHNfLCEwKSxvZywhMCksb18sITApKSxnaS5kZWNsYXJhdGlvbnMmJmUuZmlsdGVyKGdpLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihOYyl7cmV0dXJuIGUuaXNDbGFzc0RlY2xhcmF0aW9uKE5jKXx8ZS5pc0NsYXNzRXhwcmVzc2lvbihOYyl9KVswXSksTGEpfWZ1bmN0aW9uIGZ0KGdpKXtyZXR1cm4gZS5maXJzdERlZmluZWQoZ2ksZnVuY3Rpb24oenQpe2lmKGUuaXNJbXBvcnRTcGVjaWZpZXIoenQpfHxlLmlzRXhwb3J0U3BlY2lmaWVyKHp0KSlyZXR1cm4gZS5pZFRleHQoenQucHJvcGVydHlOYW1lfHx6dC5uYW1lKTtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbih6dCl8fGUuaXNFeHBvcnRBc3NpZ25tZW50KHp0KSl7dmFyIExhPWUuaXNFeHBvcnRBc3NpZ25tZW50KHp0KT96dC5leHByZXNzaW9uOnp0LnJpZ2h0O2lmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oTGEpKXJldHVybiBlLmlkVGV4dChMYS5uYW1lKX1pZih5Zih6dCkpe3ZhciBmYT1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKHp0KTtpZihmYSYmZS5pc0lkZW50aWZpZXIoZmEpKXJldHVybiBlLmlkVGV4dChmYSl9fSl9ZnVuY3Rpb24gSHQoZ2ksenQsTGEpe3ZhciBmYSx5YSxObixmbixobixzbj1ydShnaSk7aWYoIXNuKXJldHVybiBlLkRlYnVnLmZhaWwoKTt2YXIgbG49c28oRWMoc24sITApKTtpZighIWxuKXt2YXIgbG89ZS5pc1Nob3J0aGFuZEFtYmllbnRNb2R1bGVTeW1ib2wobG4pJiZmdChnaS5kZWNsYXJhdGlvbnMpfHxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGxuLmVzY2FwZWROYW1lKTtsbz09PVwiZXhwb3J0PVwiJiYoZS5nZXRFU01vZHVsZUludGVyb3AoeWUpfHx5ZS5hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzKSYmKGxvPVwiZGVmYXVsdFwiKTt2YXIgX289bHMobG4sbG8pO3N3aXRjaChyYyhsbiksc24ua2luZCl7Y2FzZSAyMDM6aWYoKCh5YT0oZmE9c24ucGFyZW50KT09PW51bGx8fGZhPT09dm9pZCAwP3ZvaWQgMDpmYS5wYXJlbnQpPT09bnVsbHx8eWE9PT12b2lkIDA/dm9pZCAwOnlhLmtpbmQpPT09MjU0KXt2YXIgX3M9TnQobG4ucGFyZW50fHxsbixGciksVm89c24ucHJvcGVydHlOYW1lO1RzKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRDbGF1c2UoITEsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVOYW1lZEltcG9ydHMoW2UuZmFjdG9yeS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoITEsVm8mJmUuaXNJZGVudGlmaWVyKFZvKT9lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihlLmlkVGV4dChWbykpOnZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcih6dCkpXSkpLGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKF9zKSx2b2lkIDApLDApO2JyZWFrfWUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoKChObj1zbi5wYXJlbnQpPT09bnVsbHx8Tm49PT12b2lkIDA/dm9pZCAwOk5uLnBhcmVudCl8fHNuLFwiVW5oYW5kbGVkIGJpbmRpbmcgZWxlbWVudCBncmFuZHBhcmVudCBraW5kIGluIGRlY2xhcmF0aW9uIHNlcmlhbGl6YXRpb25cIik7YnJlYWs7Y2FzZSAyOTc6KChobj0oZm49c24ucGFyZW50KT09PW51bGx8fGZuPT09dm9pZCAwP3ZvaWQgMDpmbi5wYXJlbnQpPT09bnVsbHx8aG49PT12b2lkIDA/dm9pZCAwOmhuLmtpbmQpPT09MjIxJiZ2dChlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGdpLmVzY2FwZWROYW1lKSxfbyk7YnJlYWs7Y2FzZSAyNTQ6aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihzbi5pbml0aWFsaXplcikpe3ZhciBZbz1zbi5pbml0aWFsaXplcixDcz1lLmZhY3RvcnkuY3JlYXRlVW5pcXVlTmFtZSh6dCksaWM9TnQobG4ucGFyZW50fHxsbixGcik7VHMoZS5mYWN0b3J5LmNyZWF0ZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsITEsQ3MsZS5mYWN0b3J5LmNyZWF0ZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlKGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKGljKSkpLDApLFRzKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCExLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHp0KSxlLmZhY3RvcnkuY3JlYXRlUXVhbGlmaWVkTmFtZShDcyxZby5uYW1lKSksTGEpO2JyZWFrfWNhc2UgMjY1OmlmKGxuLmVzY2FwZWROYW1lPT09XCJleHBvcnQ9XCImJmUuc29tZShsbi5kZWNsYXJhdGlvbnMsZS5pc0pzb25Tb3VyY2VGaWxlKSl7aHQoZ2kpO2JyZWFrfXZhciBfYz0hKGxuLmZsYWdzJjUxMikmJiFlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihzbik7VHMoZS5mYWN0b3J5LmNyZWF0ZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsITEsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoenQpLF9jP0ZuKGxuLEZyLDY3MTA4ODYzLCExKTplLmZhY3RvcnkuY3JlYXRlRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoTnQobG4sRnIpKSkpLF9jP0xhOjApO2JyZWFrO2Nhc2UgMjY0OlRzKGUuZmFjdG9yeS5jcmVhdGVOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbihlLmlkVGV4dChzbi5uYW1lKSksMCk7YnJlYWs7Y2FzZSAyNjc6VHMoZS5mYWN0b3J5LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUltcG9ydENsYXVzZSghMSxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcih6dCksdm9pZCAwKSxlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChOdChsbi5wYXJlbnR8fGxuLEZyKSksdm9pZCAwKSwwKTticmVhaztjYXNlIDI2ODpUcyhlLmZhY3RvcnkuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSW1wb3J0Q2xhdXNlKCExLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlTmFtZXNwYWNlSW1wb3J0KGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHp0KSkpLGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKE50KGxuLEZyKSksdm9pZCAwKSwwKTticmVhaztjYXNlIDI3NDpUcyhlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlTmFtZXNwYWNlRXhwb3J0KGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHp0KSksZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoTnQobG4sRnIpKSksMCk7YnJlYWs7Y2FzZSAyNzA6VHMoZS5mYWN0b3J5LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUltcG9ydENsYXVzZSghMSx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZU5hbWVkSW1wb3J0cyhbZS5mYWN0b3J5LmNyZWF0ZUltcG9ydFNwZWNpZmllcighMSx6dCE9PWxvP2UuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGxvKTp2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoenQpKV0pKSxlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChOdChsbi5wYXJlbnR8fGxuLEZyKSksdm9pZCAwKSwwKTticmVhaztjYXNlIDI3NTp2YXIgaWw9c24ucGFyZW50LnBhcmVudC5tb2R1bGVTcGVjaWZpZXI7dnQoZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhnaS5lc2NhcGVkTmFtZSksaWw/bG86X28saWwmJmUuaXNTdHJpbmdMaXRlcmFsTGlrZShpbCk/ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoaWwudGV4dCk6dm9pZCAwKTticmVhaztjYXNlIDI3MTpodChnaSk7YnJlYWs7Y2FzZSAyMjE6Y2FzZSAyMDY6Y2FzZSAyMDc6Z2kuZXNjYXBlZE5hbWU9PT1cImRlZmF1bHRcInx8Z2kuZXNjYXBlZE5hbWU9PT1cImV4cG9ydD1cIj9odChnaSk6dnQoenQsX28pO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoc24sXCJVbmhhbmRsZWQgYWxpYXMgZGVjbGFyYXRpb24ga2luZCBpbiBzeW1ib2wgc2VyaWFsaXplciFcIil9fX1mdW5jdGlvbiB2dChnaSx6dCxMYSl7VHMoZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsITEsZS5mYWN0b3J5LmNyZWF0ZU5hbWVkRXhwb3J0cyhbZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydFNwZWNpZmllcighMSxnaSE9PXp0P3p0OnZvaWQgMCxnaSldKSxMYSksMCl9ZnVuY3Rpb24gaHQoZ2kpe2lmKGdpLmZsYWdzJjQxOTQzMDQpcmV0dXJuITE7dmFyIHp0PWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoZ2kuZXNjYXBlZE5hbWUpLExhPXp0PT09XCJleHBvcnQ9XCIsZmE9enQ9PT1cImRlZmF1bHRcIix5YT1MYXx8ZmEsTm49Z2kuZGVjbGFyYXRpb25zJiZydShnaSksZm49Tm4mJkVjKE5uLCEwKTtpZihmbiYmZS5sZW5ndGgoZm4uZGVjbGFyYXRpb25zKSYmZS5zb21lKGZuLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihZbyl7cmV0dXJuIGUuZ2V0U291cmNlRmlsZU9mTm9kZShZbyk9PT1lLmdldFNvdXJjZUZpbGVPZk5vZGUoS3QpfSkpe3ZhciBobj1ObiYmKGUuaXNFeHBvcnRBc3NpZ25tZW50KE5uKXx8ZS5pc0JpbmFyeUV4cHJlc3Npb24oTm4pP2UuZ2V0RXhwb3J0QXNzaWdubWVudEV4cHJlc3Npb24oTm4pOmUuZ2V0UHJvcGVydHlBc3NpZ25tZW50QWxpYXNMaWtlRXhwcmVzc2lvbihObikpLHNuPWhuJiZlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24oaG4pP0lNKGhuKTp2b2lkIDAsbG49c24mJkRzKHNuLDY3MTA4ODYzLCEwLCEwLEt0KTsobG58fGZuKSYmcmMobG58fGZuKTt2YXIgbG89RnIudHJhY2tlci50cmFja1N5bWJvbDtpZihGci50cmFja2VyLnRyYWNrU3ltYm9sPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHlhKSR0LnB1c2goZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydEFzc2lnbm1lbnQodm9pZCAwLHZvaWQgMCxMYSx3bihmbixGciw2NzEwODg2MykpKTtlbHNlIGlmKHNuPT09aG4mJnNuKXZ0KHp0LGUuaWRUZXh0KHNuKSk7ZWxzZSBpZihobiYmZS5pc0NsYXNzRXhwcmVzc2lvbihobikpdnQoenQsbHMoZm4sZS5zeW1ib2xOYW1lKGZuKSkpO2Vsc2V7dmFyIF9vPUlvKHp0LGdpKTtUcyhlLmZhY3RvcnkuY3JlYXRlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihfbyksRm4oZm4sRnIsNjcxMDg4NjMsITEpKSwwKSx2dCh6dCxfbyl9cmV0dXJuIEZyLnRyYWNrZXIudHJhY2tTeW1ib2w9bG8sITB9ZWxzZXt2YXIgX289SW8oenQsZ2kpLF9zPSRjKEp0KHNvKGdpKSkpO2lmKG1hKF9zLGdpKSlpZChfcyxnaSxfbyx5YT8wOjEpO2Vsc2V7dmFyIFZvPWUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihfbyx2b2lkIDAsS2EoRnIsX3MsZ2ksS3QscmMsanQpKV0sMikpO1RzKFZvLGZuJiZmbi5mbGFncyY0JiZmbi5lc2NhcGVkTmFtZT09PVwiZXhwb3J0PVwiPzI6enQ9PT1fbz8xOjApfXJldHVybiB5YT8oJHQucHVzaChlLmZhY3RvcnkuY3JlYXRlRXhwb3J0QXNzaWdubWVudCh2b2lkIDAsdm9pZCAwLExhLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKF9vKSkpLCEwKTp6dCE9PV9vPyh2dCh6dCxfbyksITApOiExfX1mdW5jdGlvbiBtYShnaSx6dCl7dmFyIExhPWUuZ2V0U291cmNlRmlsZU9mTm9kZShGci5lbmNsb3NpbmdEZWNsYXJhdGlvbik7cmV0dXJuIGUuZ2V0T2JqZWN0RmxhZ3MoZ2kpJjQ4JiYhZS5sZW5ndGgoSG4oZ2kpKSYmIXlkKGdpKSYmISEoZS5sZW5ndGgoZS5maWx0ZXIodW8oZ2kpLGhpKSl8fGUubGVuZ3RoKG90KGdpLDApKSkmJiFlLmxlbmd0aChvdChnaSwxKSkmJiFJYSh6dCxLdCkmJiEoZ2kuc3ltYm9sJiZlLnNvbWUoZ2kuc3ltYm9sLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihmYSl7cmV0dXJuIGUuZ2V0U291cmNlRmlsZU9mTm9kZShmYSkhPT1MYX0pKSYmIWUuc29tZSh1byhnaSksZnVuY3Rpb24oZmEpe3JldHVybiBwZyhmYS5lc2NhcGVkTmFtZSl9KSYmIWUuc29tZSh1byhnaSksZnVuY3Rpb24oZmEpe3JldHVybiBlLnNvbWUoZmEuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHlhKXtyZXR1cm4gZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHlhKSE9PUxhfSl9KSYmZS5ldmVyeSh1byhnaSksZnVuY3Rpb24oZmEpe3JldHVybiBlLmlzSWRlbnRpZmllclRleHQoZS5zeW1ib2xOYW1lKGZhKSxBZSl9KX1mdW5jdGlvbiBDYShnaSx6dCxMYSl7cmV0dXJuIGZ1bmN0aW9uKHlhLE5uLGZuKXt2YXIgaG4sc24sbG4sbG8sX28sX3M9ZS5nZXREZWNsYXJhdGlvbk1vZGlmaWVyRmxhZ3NGcm9tU3ltYm9sKHlhKSxWbz0hIShfcyY4KTtpZihObiYmeWEuZmxhZ3MmMjg4NzY1NilyZXR1cm5bXTtpZih5YS5mbGFncyY0MTk0MzA0fHxmbiYmYmkoZm4seWEuZXNjYXBlZE5hbWUpJiZadShiaShmbix5YS5lc2NhcGVkTmFtZSkpPT09WnUoeWEpJiYoeWEuZmxhZ3MmMTY3NzcyMTYpPT09KGJpKGZuLHlhLmVzY2FwZWROYW1lKS5mbGFncyYxNjc3NzIxNikmJndmKEp0KHlhKSxkYShmbix5YS5lc2NhcGVkTmFtZSkpKXJldHVybltdO3ZhciBZbz1fcyYtMjU3fChObj8zMjowKSxDcz1sdCh5YSxGciksaWM9KGhuPXlhLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxobj09PXZvaWQgMD92b2lkIDA6aG4uZmluZChlLm9yKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uLGUuaXNBY2Nlc3NvcixlLmlzVmFyaWFibGVEZWNsYXJhdGlvbixlLmlzUHJvcGVydHlTaWduYXR1cmUsZS5pc0JpbmFyeUV4cHJlc3Npb24sZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbikpO2lmKHlhLmZsYWdzJjk4MzA0JiZMYSl7dmFyIF9jPVtdO2lmKHlhLmZsYWdzJjY1NTM2JiZfYy5wdXNoKGUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoWW8pLENzLFtlLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJhcmdcIix2b2lkIDAsVm8/dm9pZCAwOkthKEZyLEp0KHlhKSx5YSxLdCxyYyxqdCkpXSx2b2lkIDApLCgoc249eWEuZGVjbGFyYXRpb25zKT09PW51bGx8fHNuPT09dm9pZCAwP3ZvaWQgMDpzbi5maW5kKGUuaXNTZXRBY2Nlc3NvcikpfHxpYykpLHlhLmZsYWdzJjMyNzY4KXt2YXIgaWw9X3MmODtfYy5wdXNoKGUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoWW8pLENzLFtdLGlsP3ZvaWQgMDpLYShGcixKdCh5YSkseWEsS3QscmMsanQpLHZvaWQgMCksKChsbj15YS5kZWNsYXJhdGlvbnMpPT09bnVsbHx8bG49PT12b2lkIDA/dm9pZCAwOmxuLmZpbmQoZS5pc0dldEFjY2Vzc29yKSl8fGljKSl9cmV0dXJuIF9jfWVsc2UgaWYoeWEuZmxhZ3MmOTgzMTEpcmV0dXJuIGUuc2V0VGV4dFJhbmdlKGdpKHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoKFp1KHlhKT82NDowKXxZbyksQ3MseWEuZmxhZ3MmMTY3NzcyMTY/ZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDU3KTp2b2lkIDAsVm8/dm9pZCAwOkthKEZyLEp0KHlhKSx5YSxLdCxyYyxqdCksdm9pZCAwKSwoKGxvPXlhLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxsbz09PXZvaWQgMD92b2lkIDA6bG8uZmluZChlLm9yKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uLGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKSkpfHxpYyk7aWYoeWEuZmxhZ3MmODIwOCl7dmFyIG5fPUp0KHlhKSxvXz1vdChuXywwKTtpZihZbyY4KXJldHVybiBlLnNldFRleHRSYW5nZShnaSh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzKChadSh5YSk/NjQ6MCl8WW8pLENzLHlhLmZsYWdzJjE2Nzc3MjE2P2UuZmFjdG9yeS5jcmVhdGVUb2tlbig1Nyk6dm9pZCAwLHZvaWQgMCx2b2lkIDApLCgoX289eWEuZGVjbGFyYXRpb25zKT09PW51bGx8fF9vPT09dm9pZCAwP3ZvaWQgMDpfby5maW5kKGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbikpfHxvX1swXSYmb19bMF0uZGVjbGFyYXRpb258fHlhLmRlY2xhcmF0aW9ucyYmeWEuZGVjbGFyYXRpb25zWzBdKTtmb3IodmFyIG9nPVtdLF9wPTAsdGQ9b187X3A8dGQubGVuZ3RoO19wKyspe3ZhciBzXz10ZFtfcF0sc2c9JGUoc18senQsRnIse25hbWU6Q3MscXVlc3Rpb25Ub2tlbjp5YS5mbGFncyYxNjc3NzIxNj9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpOnZvaWQgMCxtb2RpZmllcnM6WW8/ZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzKFlvKTp2b2lkIDB9KSxOYz1zXy5kZWNsYXJhdGlvbiYmZS5pc1Byb3RvdHlwZVByb3BlcnR5QXNzaWdubWVudChzXy5kZWNsYXJhdGlvbi5wYXJlbnQpP3NfLmRlY2xhcmF0aW9uLnBhcmVudDpzXy5kZWNsYXJhdGlvbjtvZy5wdXNoKGUuc2V0VGV4dFJhbmdlKHNnLE5jKSl9cmV0dXJuIG9nfXJldHVybiBlLkRlYnVnLmZhaWwoXCJVbmhhbmRsZWQgY2xhc3MgbWVtYmVyIGtpbmQhIFwiLmNvbmNhdCh5YS5fX2RlYnVnRmxhZ3N8fHlhLmZsYWdzKSl9fWZ1bmN0aW9uIEFuKGdpLHp0KXtyZXR1cm4gZWEoZ2ksITEsenQpfWZ1bmN0aW9uIGduKGdpLHp0LExhLGZhKXt2YXIgeWE9b3QoenQsZ2kpO2lmKGdpPT09MSl7aWYoIUxhJiZlLmV2ZXJ5KHlhLGZ1bmN0aW9uKF9jKXtyZXR1cm4gZS5sZW5ndGgoX2MucGFyYW1ldGVycyk9PT0wfSkpcmV0dXJuW107aWYoTGEpe3ZhciBObj1vdChMYSwxKTtpZighZS5sZW5ndGgoTm4pJiZlLmV2ZXJ5KHlhLGZ1bmN0aW9uKF9jKXtyZXR1cm4gZS5sZW5ndGgoX2MucGFyYW1ldGVycyk9PT0wfSkpcmV0dXJuW107aWYoTm4ubGVuZ3RoPT09eWEubGVuZ3RoKXtmb3IodmFyIGZuPSExLGhuPTA7aG48Tm4ubGVuZ3RoO2huKyspaWYoIV95KHlhW2huXSxObltobl0sITEsITEsITAsYXYpKXtmbj0hMDticmVha31pZighZm4pcmV0dXJuW119fWZvcih2YXIgc249MCxsbj0wLGxvPXlhO2xuPGxvLmxlbmd0aDtsbisrKXt2YXIgX289bG9bbG5dO19vLmRlY2xhcmF0aW9uJiYoc258PWUuZ2V0U2VsZWN0ZWRFZmZlY3RpdmVNb2RpZmllckZsYWdzKF9vLmRlY2xhcmF0aW9uLDI0KSl9aWYoc24pcmV0dXJuW2Uuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3Moc24pLFtdLHZvaWQgMCkseWFbMF0uZGVjbGFyYXRpb24pXX1mb3IodmFyIF9zPVtdLFZvPTAsWW89eWE7Vm88WW8ubGVuZ3RoO1ZvKyspe3ZhciBDcz1Zb1tWb10saWM9JGUoQ3MsZmEsRnIpO19zLnB1c2goZS5zZXRUZXh0UmFuZ2UoaWMsQ3MuZGVjbGFyYXRpb24pKX1yZXR1cm4gX3N9ZnVuY3Rpb24gVm4oZ2ksenQpe2Zvcih2YXIgTGE9W10sZmE9MCx5YT1IbihnaSk7ZmE8eWEubGVuZ3RoO2ZhKyspe3ZhciBObj15YVtmYV07aWYoenQpe3ZhciBmbj1zcyh6dCxObi5rZXlUeXBlKTtpZihmbiYmd2YoTm4udHlwZSxmbi50eXBlKSljb250aW51ZX1MYS5wdXNoKE1lKE5uLEZyLHZvaWQgMCkpfXJldHVybiBMYX1mdW5jdGlvbiB6byhnaSx6dCxMYSl7dmFyIGZhPXVzKGdpLDExMTU1MSk7aWYoZmEpcmV0dXJuIGZhO3ZhciB5YT1JbyhcIlwiLmNvbmNhdChMYSxcIl9iYXNlXCIpKSxObj1lLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oeWEsdm9pZCAwLG8oenQsRnIpKV0sMikpO3JldHVybiBUcyhObiwwKSxlLmZhY3RvcnkuY3JlYXRlRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHlhKSx2b2lkIDApfWZ1bmN0aW9uIHVzKGdpLHp0KXt2YXIgTGEsZmE7aWYoZ2kudGFyZ2V0JiZDZihnaS50YXJnZXQuc3ltYm9sLEt0LHp0KT8oTGE9ZS5tYXAoeG8oZ2kpLGZ1bmN0aW9uKHlhKXtyZXR1cm4gbyh5YSxGcil9KSxmYT13bihnaS50YXJnZXQuc3ltYm9sLEZyLDc4ODk2OCkpOmdpLnN5bWJvbCYmQ2YoZ2kuc3ltYm9sLEt0LHp0KSYmKGZhPXduKGdpLnN5bWJvbCxGciw3ODg5NjgpKSxmYSlyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cyhmYSxMYSl9ZnVuY3Rpb24gQm8oZ2kpe3ZhciB6dD11cyhnaSw3ODg5NjgpO2lmKHp0KXJldHVybiB6dDtpZihnaS5zeW1ib2wpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMod24oZ2kuc3ltYm9sLEZyLDc4ODk2OCksdm9pZCAwKX1mdW5jdGlvbiBJbyhnaSx6dCl7dmFyIExhLGZhLHlhPXp0P3koenQpOnZvaWQgMDtpZih5YSYmRnIucmVtYXBwZWRTeW1ib2xOYW1lcy5oYXMoeWEpKXJldHVybiBGci5yZW1hcHBlZFN5bWJvbE5hbWVzLmdldCh5YSk7enQmJihnaT1Rbyh6dCxnaSkpO2Zvcih2YXIgTm49MCxmbj1naTshKChMYT1Gci51c2VkU3ltYm9sTmFtZXMpPT09bnVsbHx8TGE9PT12b2lkIDApJiZMYS5oYXMoZ2kpOylObisrLGdpPVwiXCIuY29uY2F0KGZuLFwiX1wiKS5jb25jYXQoTm4pO3JldHVybihmYT1Gci51c2VkU3ltYm9sTmFtZXMpPT09bnVsbHx8ZmE9PT12b2lkIDB8fGZhLmFkZChnaSkseWEmJkZyLnJlbWFwcGVkU3ltYm9sTmFtZXMuc2V0KHlhLGdpKSxnaX1mdW5jdGlvbiBRbyhnaSx6dCl7aWYoenQ9PT1cImRlZmF1bHRcInx8enQ9PT1cIl9fY2xhc3NcInx8enQ9PT1cIl9fZnVuY3Rpb25cIil7dmFyIExhPUZyLmZsYWdzO0ZyLmZsYWdzfD0xNjc3NzIxNjt2YXIgZmE9b2YoZ2ksRnIpO0ZyLmZsYWdzPUxhLHp0PWZhLmxlbmd0aD4wJiZlLmlzU2luZ2xlT3JEb3VibGVRdW90ZShmYS5jaGFyQ29kZUF0KDApKT9lLnN0cmlwUXVvdGVzKGZhKTpmYX1yZXR1cm4genQ9PT1cImRlZmF1bHRcIj96dD1cIl9kZWZhdWx0XCI6enQ9PT1cImV4cG9ydD1cIiYmKHp0PVwiX2V4cG9ydHNcIiksenQ9ZS5pc0lkZW50aWZpZXJUZXh0KHp0LEFlKSYmIWUuaXNTdHJpbmdBTm9uQ29udGV4dHVhbEtleXdvcmQoenQpP3p0OlwiX1wiK3p0LnJlcGxhY2UoL1teYS16QS1aMC05XS9nLFwiX1wiKSx6dH1mdW5jdGlvbiBscyhnaSx6dCl7dmFyIExhPXkoZ2kpO3JldHVybiBGci5yZW1hcHBlZFN5bWJvbE5hbWVzLmhhcyhMYSk/RnIucmVtYXBwZWRTeW1ib2xOYW1lcy5nZXQoTGEpOih6dD1RbyhnaSx6dCksRnIucmVtYXBwZWRTeW1ib2xOYW1lcy5zZXQoTGEsenQpLHp0KX19fWZ1bmN0aW9uIExsKHIsaSx0LG8pe3JldHVybiB0PT09dm9pZCAwJiYodD0xNjM4NCksbz9zKG8pLmdldFRleHQoKTplLnVzaW5nU2luZ2xlTGluZVN0cmluZ1dyaXRlcihzKTtmdW5jdGlvbiBzKHUpe3ZhciBoPWUuZmFjdG9yeS5jcmVhdGVUeXBlUHJlZGljYXRlTm9kZShyLmtpbmQ9PT0yfHxyLmtpbmQ9PT0zP2UuZmFjdG9yeS5jcmVhdGVUb2tlbigxMjgpOnZvaWQgMCxyLmtpbmQ9PT0xfHxyLmtpbmQ9PT0zP2UuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHIucGFyYW1ldGVyTmFtZSk6ZS5mYWN0b3J5LmNyZWF0ZVRoaXNUeXBlTm9kZSgpLHIudHlwZSYmVXIudHlwZVRvVHlwZU5vZGUoci50eXBlLGksUnAodCl8NzAyMjE4MjR8NTEyKSksej1lLmNyZWF0ZVByaW50ZXIoe3JlbW92ZUNvbW1lbnRzOiEwfSksbWU9aSYmZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGkpO3JldHVybiB6LndyaXRlTm9kZSg0LGgsbWUsdSksdX19ZnVuY3Rpb24gaGQocil7Zm9yKHZhciBpPVtdLHQ9MCxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBzPXJbb107aWYodHw9cy5mbGFncywhKHMuZmxhZ3MmOTgzMDQpKXtpZihzLmZsYWdzJjE1MzYpe3ZhciB1PXMuZmxhZ3MmNTEyP0lpOmNjKHMpO2lmKHUuZmxhZ3MmMTA0ODU3Nil7dmFyIGg9dS50eXBlcy5sZW5ndGg7aWYobytoPD1yLmxlbmd0aCYmamMocltvK2gtMV0pPT09amModS50eXBlc1toLTFdKSl7aS5wdXNoKHUpLG8rPWgtMTtjb250aW51ZX19fWkucHVzaChzKX19cmV0dXJuIHQmNjU1MzYmJmkucHVzaChXaSksdCYzMjc2OCYmaS5wdXNoKFRyKSxpfHxyfWZ1bmN0aW9uIHZfKHIpe3JldHVybiByPT09OD9cInByaXZhdGVcIjpyPT09MTY/XCJwcm90ZWN0ZWRcIjpcInB1YmxpY1wifWZ1bmN0aW9uIEJwKHIpe2lmKHIuc3ltYm9sJiZyLnN5bWJvbC5mbGFncyYyMDQ4JiZyLnN5bWJvbC5kZWNsYXJhdGlvbnMpe3ZhciBpPWUud2Fsa1VwUGFyZW50aGVzaXplZFR5cGVzKHIuc3ltYm9sLmRlY2xhcmF0aW9uc1swXS5wYXJlbnQpO2lmKGkua2luZD09PTI1OSlyZXR1cm4gRXQoaSl9fWZ1bmN0aW9uIFh1KHIpe3JldHVybiByJiZyLnBhcmVudCYmci5wYXJlbnQua2luZD09PTI2MiYmZS5pc0V4dGVybmFsTW9kdWxlQXVnbWVudGF0aW9uKHIucGFyZW50LnBhcmVudCl9ZnVuY3Rpb24gWGMocil7cmV0dXJuIHIua2luZD09PTMwNXx8ZS5pc0FtYmllbnRNb2R1bGUocil9ZnVuY3Rpb24gR2YocixpKXt2YXIgdD1BYShyKS5uYW1lVHlwZTtpZih0KXtpZih0LmZsYWdzJjM4NCl7dmFyIG89XCJcIit0LnZhbHVlO3JldHVybiFlLmlzSWRlbnRpZmllclRleHQobyxlLmdldEVtaXRTY3JpcHRUYXJnZXQoeWUpKSYmIWUuaXNOdW1lcmljTGl0ZXJhbE5hbWUobyk/J1wiJy5jb25jYXQoZS5lc2NhcGVTdHJpbmcobywzNCksJ1wiJyk6ZS5pc051bWVyaWNMaXRlcmFsTmFtZShvKSYmZS5zdGFydHNXaXRoKG8sXCItXCIpP1wiW1wiLmNvbmNhdChvLFwiXVwiKTpvfWlmKHQuZmxhZ3MmODE5MilyZXR1cm5cIltcIi5jb25jYXQob2YodC5zeW1ib2wsaSksXCJdXCIpfX1mdW5jdGlvbiBvZihyLGkpe2lmKGkmJnIuZXNjYXBlZE5hbWU9PT1cImRlZmF1bHRcIiYmIShpLmZsYWdzJjE2Mzg0KSYmKCEoaS5mbGFncyYxNjc3NzIxNil8fCFyLmRlY2xhcmF0aW9uc3x8aS5lbmNsb3NpbmdEZWNsYXJhdGlvbiYmZS5maW5kQW5jZXN0b3Ioci5kZWNsYXJhdGlvbnNbMF0sWGMpIT09ZS5maW5kQW5jZXN0b3IoaS5lbmNsb3NpbmdEZWNsYXJhdGlvbixYYykpKXJldHVyblwiZGVmYXVsdFwiO2lmKHIuZGVjbGFyYXRpb25zJiZyLmRlY2xhcmF0aW9ucy5sZW5ndGgpe3ZhciB0PWUuZmlyc3REZWZpbmVkKHIuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHope3JldHVybiBlLmdldE5hbWVPZkRlY2xhcmF0aW9uKHopP3o6dm9pZCAwfSksbz10JiZlLmdldE5hbWVPZkRlY2xhcmF0aW9uKHQpO2lmKHQmJm8pe2lmKGUuaXNDYWxsRXhwcmVzc2lvbih0KSYmZS5pc0JpbmRhYmxlT2JqZWN0RGVmaW5lUHJvcGVydHlDYWxsKHQpKXJldHVybiBlLnN5bWJvbE5hbWUocik7aWYoZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKG8pJiYhKGUuZ2V0Q2hlY2tGbGFncyhyKSY0MDk2KSl7dmFyIHM9QWEocikubmFtZVR5cGU7aWYocyYmcy5mbGFncyYzODQpe3ZhciB1PUdmKHIsaSk7aWYodSE9PXZvaWQgMClyZXR1cm4gdX19cmV0dXJuIGUuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcobyl9aWYodHx8KHQ9ci5kZWNsYXJhdGlvbnNbMF0pLHQucGFyZW50JiZ0LnBhcmVudC5raW5kPT09MjU0KXJldHVybiBlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHQucGFyZW50Lm5hbWUpO3N3aXRjaCh0LmtpbmQpe2Nhc2UgMjI2OmNhc2UgMjEzOmNhc2UgMjE0OnJldHVybiBpJiYhaS5lbmNvdW50ZXJlZEVycm9yJiYhKGkuZmxhZ3MmMTMxMDcyKSYmKGkuZW5jb3VudGVyZWRFcnJvcj0hMCksdC5raW5kPT09MjI2P1wiKEFub255bW91cyBjbGFzcylcIjpcIihBbm9ueW1vdXMgZnVuY3Rpb24pXCJ9fXZhciBoPUdmKHIsaSk7cmV0dXJuIGghPT12b2lkIDA/aDplLnN5bWJvbE5hbWUocil9ZnVuY3Rpb24gd3Uocil7aWYocil7dmFyIGk9dmEocik7cmV0dXJuIGkuaXNWaXNpYmxlPT09dm9pZCAwJiYoaS5pc1Zpc2libGU9ISF0KCkpLGkuaXNWaXNpYmxlfXJldHVybiExO2Z1bmN0aW9uIHQoKXtzd2l0Y2goci5raW5kKXtjYXNlIDMzODpjYXNlIDM0NTpjYXNlIDMzOTpyZXR1cm4hIShyLnBhcmVudCYmci5wYXJlbnQucGFyZW50JiZyLnBhcmVudC5wYXJlbnQucGFyZW50JiZlLmlzU291cmNlRmlsZShyLnBhcmVudC5wYXJlbnQucGFyZW50KSk7Y2FzZSAyMDM6cmV0dXJuIHd1KHIucGFyZW50LnBhcmVudCk7Y2FzZSAyNTQ6aWYoZS5pc0JpbmRpbmdQYXR0ZXJuKHIubmFtZSkmJiFyLm5hbWUuZWxlbWVudHMubGVuZ3RoKXJldHVybiExO2Nhc2UgMjYxOmNhc2UgMjU3OmNhc2UgMjU4OmNhc2UgMjU5OmNhc2UgMjU2OmNhc2UgMjYwOmNhc2UgMjY1OmlmKGUuaXNFeHRlcm5hbE1vZHVsZUF1Z21lbnRhdGlvbihyKSlyZXR1cm4hMDt2YXIgbz16aShyKTtyZXR1cm4hKGUuZ2V0Q29tYmluZWRNb2RpZmllckZsYWdzKHIpJjEpJiYhKHIua2luZCE9PTI2NSYmby5raW5kIT09MzA1JiZvLmZsYWdzJjE2Nzc3MjE2KT9DdShvKTp3dShvKTtjYXNlIDE2NzpjYXNlIDE2NjpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDE2OTpjYXNlIDE2ODppZihlLmhhc0VmZmVjdGl2ZU1vZGlmaWVyKHIsMjQpKXJldHVybiExO2Nhc2UgMTcxOmNhc2UgMTc1OmNhc2UgMTc0OmNhc2UgMTc2OmNhc2UgMTY0OmNhc2UgMjYyOmNhc2UgMTc5OmNhc2UgMTgwOmNhc2UgMTgyOmNhc2UgMTc4OmNhc2UgMTgzOmNhc2UgMTg0OmNhc2UgMTg3OmNhc2UgMTg4OmNhc2UgMTkxOmNhc2UgMTk3OnJldHVybiB3dShyLnBhcmVudCk7Y2FzZSAyNjc6Y2FzZSAyNjg6Y2FzZSAyNzA6cmV0dXJuITE7Y2FzZSAxNjM6Y2FzZSAzMDU6Y2FzZSAyNjQ6cmV0dXJuITA7Y2FzZSAyNzE6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19fWZ1bmN0aW9uIFZfKHIsaSl7dmFyIHQ7ci5wYXJlbnQmJnIucGFyZW50LmtpbmQ9PT0yNzE/dD1lcyhyLHIuZXNjYXBlZFRleHQsMjk5ODI3MSx2b2lkIDAsciwhMSk6ci5wYXJlbnQua2luZD09PTI3NSYmKHQ9VnUoci5wYXJlbnQsMjk5ODI3MSkpO3ZhciBvLHM7cmV0dXJuIHQmJihzPW5ldyBlLlNldCxzLmFkZCh5KHQpKSx1KHQuZGVjbGFyYXRpb25zKSksbztmdW5jdGlvbiB1KGgpe2UuZm9yRWFjaChoLGZ1bmN0aW9uKHope3ZhciBtZT1BdSh6KXx8ejtpZihpP3ZhKHopLmlzVmlzaWJsZT0hMDoobz1vfHxbXSxlLnB1c2hJZlVuaXF1ZShvLG1lKSksZS5pc0ludGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oeikpe3ZhciBNZT16Lm1vZHVsZVJlZmVyZW5jZSwkZT1lLmdldEZpcnN0SWRlbnRpZmllcihNZSksdHI9ZXMoeiwkZS5lc2NhcGVkVGV4dCw5MDExMTksdm9pZCAwLHZvaWQgMCwhMSk7dHImJnMmJmUudHJ5QWRkVG9TZXQocyx5KHRyKSkmJnUodHIuZGVjbGFyYXRpb25zKX19KX19ZnVuY3Rpb24geXUocixpKXt2YXIgdD12KHIsaSk7aWYodD49MCl7Zm9yKHZhciBvPWV1Lmxlbmd0aCxzPXQ7czxvO3MrKylXc1tzXT0hMTtyZXR1cm4hMX1yZXR1cm4gZXUucHVzaChyKSxXcy5wdXNoKCEwKSxwdS5wdXNoKGkpLCEwfWZ1bmN0aW9uIHYocixpKXtmb3IodmFyIHQ9ZXUubGVuZ3RoLTE7dD49MDt0LS0pe2lmKHNyKGV1W3RdLHB1W3RdKSlyZXR1cm4tMTtpZihldVt0XT09PXImJnB1W3RdPT09aSlyZXR1cm4gdH1yZXR1cm4tMX1mdW5jdGlvbiBzcihyLGkpe3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuISFBYShyKS50eXBlO2Nhc2UgNTpyZXR1cm4hIXZhKHIpLnJlc29sdmVkRW51bVR5cGU7Y2FzZSAyOnJldHVybiEhQWEocikuZGVjbGFyZWRUeXBlO2Nhc2UgMTpyZXR1cm4hIXIucmVzb2x2ZWRCYXNlQ29uc3RydWN0b3JUeXBlO2Nhc2UgMzpyZXR1cm4hIXIucmVzb2x2ZWRSZXR1cm5UeXBlO2Nhc2UgNDpyZXR1cm4hIXIuaW1tZWRpYXRlQmFzZUNvbnN0cmFpbnQ7Y2FzZSA2OnJldHVybiEhci5yZXNvbHZlZFR5cGVBcmd1bWVudHM7Y2FzZSA3OnJldHVybiEhci5iYXNlVHlwZXNSZXNvbHZlZDtjYXNlIDg6cmV0dXJuISFBYShyKS53cml0ZVR5cGV9cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoaSl9ZnVuY3Rpb24gZmkoKXtyZXR1cm4gZXUucG9wKCkscHUucG9wKCksV3MucG9wKCl9ZnVuY3Rpb24gemkocil7cmV0dXJuIGUuZmluZEFuY2VzdG9yKGUuZ2V0Um9vdERlY2xhcmF0aW9uKHIpLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmtpbmQpe2Nhc2UgMjU0OmNhc2UgMjU1OmNhc2UgMjcwOmNhc2UgMjY5OmNhc2UgMjY4OmNhc2UgMjY3OnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSkucGFyZW50fWZ1bmN0aW9uIFNhKHIpe3ZhciBpPWdvKFlzKHIpKTtyZXR1cm4gaS50eXBlUGFyYW1ldGVycz9ZZihpLGUubWFwKGkudHlwZVBhcmFtZXRlcnMsZnVuY3Rpb24odCl7cmV0dXJuIE9lfSkpOml9ZnVuY3Rpb24gZGEocixpKXt2YXIgdD1iaShyLGkpO3JldHVybiB0P0p0KHQpOnZvaWQgMH1mdW5jdGlvbiBIYShyLGkpe3ZhciB0O3JldHVybiBkYShyLGkpfHwoKHQ9WG8ocixpKSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnR5cGUpfHxncn1mdW5jdGlvbiB0YShyKXtyZXR1cm4gciYmKHIuZmxhZ3MmMSkhPT0wfWZ1bmN0aW9uIG5uKHIpe3JldHVybiByPT09UGV8fCEhKHIuZmxhZ3MmMSYmci5hbGlhc1N5bWJvbCl9ZnVuY3Rpb24gV28ocixpKXtpZihpIT09MClyZXR1cm4gR18ociwhMSxpKTt2YXIgdD1FdChyKTtyZXR1cm4gdCYmQWEodCkudHlwZXx8R18ociwhMSxpKX1mdW5jdGlvbiBMbyhyLGksdCl7aWYocj1lYyhyLGZ1bmN0aW9uKGxpKXtyZXR1cm4hKGxpLmZsYWdzJjk4MzA0KX0pLHIuZmxhZ3MmMTMxMDcyKXJldHVybiBCYTtpZihyLmZsYWdzJjEwNDg1NzYpcmV0dXJuIFNzKHIsZnVuY3Rpb24obGkpe3JldHVybiBMbyhsaSxpLHQpfSk7Zm9yKHZhciBvPVBhKGUubWFwKGksWl8pKSxzPVtdLHU9W10saD0wLHo9dW8ocik7aDx6Lmxlbmd0aDtoKyspe3ZhciBtZT16W2hdLE1lPW9tKG1lLDg1NzYpOyFhbyhNZSxvKSYmIShlLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2wobWUpJjI0KSYmRWgobWUpP3MucHVzaChtZSk6dS5wdXNoKE1lKX1pZihBZChyKXx8cXAobykpe2lmKHUubGVuZ3RoJiYobz1QYShWZShbb10sdSwhMCkpKSxvLmZsYWdzJjEzMTA3MilyZXR1cm4gcjt2YXIgJGU9TDMoKTtyZXR1cm4gJGU/YW0oJGUsW3Isb10pOlBlfWZvcih2YXIgdHI9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpLGRyPTAsRHI9cztkcjxEci5sZW5ndGg7ZHIrKyl7dmFyIG1lPURyW2RyXTt0ci5zZXQobWUuZXNjYXBlZE5hbWUseEQobWUsITEpKX12YXIgUXI9cnModCx0cixlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LEhuKHIpKTtyZXR1cm4gUXIub2JqZWN0RmxhZ3N8PTQxOTQzMDQsUXJ9ZnVuY3Rpb24gb2Mocil7cmV0dXJuISEoci5mbGFncyY0NjU4Mjk4ODgpJiZmcyh1YyhyKXx8Z3IsMzI3NjgpfWZ1bmN0aW9uIHV1KHIpe3ZhciBpPXJnKHIsb2MpP1NzKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZmxhZ3MmNDY1ODI5ODg4P0hkKHQpOnR9KTpyO3JldHVybiBLcyhpLDUyNDI4OCl9ZnVuY3Rpb24gaXMocixpKXt2YXIgdD1hdShyKTtyZXR1cm4gdD91cCh0LGkpOml9ZnVuY3Rpb24gYXUocil7dmFyIGk9T3Uocik7aWYoaSYmaS5mbG93Tm9kZSl7dmFyIHQ9c2Yocik7aWYodCl7dmFyIG89ZS5zZXRUZXh0UmFuZ2UoZS5wYXJzZU5vZGVGYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwodCkscikscz1lLmlzTGVmdEhhbmRTaWRlRXhwcmVzc2lvbihpKT9pOmUucGFyc2VOb2RlRmFjdG9yeS5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihpKSx1PWUuc2V0VGV4dFJhbmdlKGUucGFyc2VOb2RlRmFjdG9yeS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihzLG8pLHIpO3JldHVybiBlLnNldFBhcmVudChvLHUpLGUuc2V0UGFyZW50KHUscikscyE9PWkmJmUuc2V0UGFyZW50KHMsdSksdS5mbG93Tm9kZT1pLmZsb3dOb2RlLHV9fX1mdW5jdGlvbiBPdShyKXt2YXIgaT1yLnBhcmVudC5wYXJlbnQ7c3dpdGNoKGkua2luZCl7Y2FzZSAyMDM6Y2FzZSAyOTY6cmV0dXJuIGF1KGkpO2Nhc2UgMjA0OnJldHVybiBhdShyLnBhcmVudCk7Y2FzZSAyNTQ6cmV0dXJuIGkuaW5pdGlhbGl6ZXI7Y2FzZSAyMjE6cmV0dXJuIGkucmlnaHR9fWZ1bmN0aW9uIHNmKHIpe3ZhciBpPXIucGFyZW50O3JldHVybiByLmtpbmQ9PT0yMDMmJmkua2luZD09PTIwMT9sdShyLnByb3BlcnR5TmFtZXx8ci5uYW1lKTpyLmtpbmQ9PT0yOTZ8fHIua2luZD09PTI5Nz9sdShyLm5hbWUpOlwiXCIraS5lbGVtZW50cy5pbmRleE9mKHIpfWZ1bmN0aW9uIGx1KHIpe3ZhciBpPVpfKHIpO3JldHVybiBpLmZsYWdzJjM4ND9cIlwiK2kudmFsdWU6dm9pZCAwfWZ1bmN0aW9uIGNmKHIpe3ZhciBpPXIuZG90RG90RG90VG9rZW4/NjQ6MCx0PVdvKHIucGFyZW50LnBhcmVudCxpKTtyZXR1cm4gdCYmdWYocix0KX1mdW5jdGlvbiB1ZihyLGkpe2lmKHRhKGkpKXJldHVybiBpO3ZhciB0PXIucGFyZW50O1llJiZyLmZsYWdzJjE2Nzc3MjE2JiZlLmlzUGFyYW1ldGVyRGVjbGFyYXRpb24ocik/aT1DXyhpKTpZZSYmdC5wYXJlbnQuaW5pdGlhbGl6ZXImJiEoY3AobkModC5wYXJlbnQuaW5pdGlhbGl6ZXIpKSY2NTUzNikmJihpPUtzKGksNTI0Mjg4KSk7dmFyIG87aWYodC5raW5kPT09MjAxKWlmKHIuZG90RG90RG90VG9rZW4pe2lmKGk9YnUoaSksaS5mbGFncyYyfHwhRHkoaSkpcmV0dXJuIFhyKHIsZS5EaWFnbm9zdGljcy5SZXN0X3R5cGVzX21heV9vbmx5X2JlX2NyZWF0ZWRfZnJvbV9vYmplY3RfdHlwZXMpLFBlO2Zvcih2YXIgcz1bXSx1PTAsaD10LmVsZW1lbnRzO3U8aC5sZW5ndGg7dSsrKXt2YXIgej1oW3VdO3ouZG90RG90RG90VG9rZW58fHMucHVzaCh6LnByb3BlcnR5TmFtZXx8ei5uYW1lKX1vPUxvKGkscyxyLnN5bWJvbCl9ZWxzZXt2YXIgbWU9ci5wcm9wZXJ0eU5hbWV8fHIubmFtZSxNZT1aXyhtZSksJGU9SmMoaSxNZSwzMixtZSk7bz1pcyhyLCRlKX1lbHNle3ZhciB0cj1OXyg2NXwoci5kb3REb3REb3RUb2tlbj8wOjEyOCksaSxUcix0KSxkcj10LmVsZW1lbnRzLmluZGV4T2Yocik7aWYoci5kb3REb3REb3RUb2tlbilvPWdmKGksWW4pP1NzKGksZnVuY3Rpb24oUXIpe3JldHVybiBabShRcixkcil9KTpacyh0cik7ZWxzZSBpZihzcChpKSl7dmFyIE1lPUlmKGRyKSxEcj0zMnwocG0ocik/MTY6MCksJGU9ZXAoaSxNZSxEcixyLm5hbWUpfHxQZTtvPWlzKHIsJGUpfWVsc2Ugbz10cn1yZXR1cm4gci5pbml0aWFsaXplcj9lLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZShlLndhbGtVcEJpbmRpbmdFbGVtZW50c0FuZFBhdHRlcm5zKHIpKT9ZZSYmIShqdSh3eShyLDApKSYzMjc2OCk/dXUobyk6bzpfUyhyLFBhKFt1dShvKSx3eShyLDApXSwyKSk6b31mdW5jdGlvbiBLXyhyKXt2YXIgaT1lLmdldEpTRG9jVHlwZShyKTtpZihpKXJldHVybiBWYShpKX1mdW5jdGlvbiBKcChyKXt2YXIgaT1lLnNraXBQYXJlbnRoZXNlcyhyLCEwKTtyZXR1cm4gaS5raW5kPT09MTA0fHxpLmtpbmQ9PT03OSYmRGwoaSk9PT1taX1mdW5jdGlvbiBIZihyKXt2YXIgaT1lLnNraXBQYXJlbnRoZXNlcyhyLCEwKTtyZXR1cm4gaS5raW5kPT09MjA0JiZpLmVsZW1lbnRzLmxlbmd0aD09PTB9ZnVuY3Rpb24ga2MocixpLHQpe3JldHVybiBpPT09dm9pZCAwJiYoaT0hMSksdD09PXZvaWQgMCYmKHQ9ITApLFllJiZ0P2lfKHIsaSk6cn1mdW5jdGlvbiBHXyhyLGksdCl7aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocikmJnIucGFyZW50LnBhcmVudC5raW5kPT09MjQzKXt2YXIgbz1xbChqYih5bihyLnBhcmVudC5wYXJlbnQuZXhwcmVzc2lvbix0KSkpO3JldHVybiBvLmZsYWdzJjQ0NTY0NDg/Vngobyk6TGl9aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocikmJnIucGFyZW50LnBhcmVudC5raW5kPT09MjQ0KXt2YXIgcz1yLnBhcmVudC5wYXJlbnQ7cmV0dXJuIEJ5KHMpfHxPZX1pZihlLmlzQmluZGluZ1BhdHRlcm4oci5wYXJlbnQpKXJldHVybiBjZihyKTt2YXIgdT1lLmlzUHJvcGVydHlEZWNsYXJhdGlvbihyKXx8ZS5pc1Byb3BlcnR5U2lnbmF0dXJlKHIpLGg9aSYmKHUmJiEhci5xdWVzdGlvblRva2VufHxlLmlzUGFyYW1ldGVyKHIpJiYoISFyLnF1ZXN0aW9uVG9rZW58fENkKHIpKXx8Vm0ocikpLHo9Umwocik7aWYoeilyZXR1cm4ga2Moeix1LGgpO2lmKChufHxlLmlzSW5KU0ZpbGUocikpJiZlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihyKSYmIWUuaXNCaW5kaW5nUGF0dGVybihyLm5hbWUpJiYhKGUuZ2V0Q29tYmluZWRNb2RpZmllckZsYWdzKHIpJjEpJiYhKHIuZmxhZ3MmMTY3NzcyMTYpKXtpZighKGUuZ2V0Q29tYmluZWROb2RlRmxhZ3MocikmMikmJighci5pbml0aWFsaXplcnx8SnAoci5pbml0aWFsaXplcikpKXJldHVybiBucjtpZihyLmluaXRpYWxpemVyJiZIZihyLmluaXRpYWxpemVyKSlyZXR1cm4gU299aWYoZS5pc1BhcmFtZXRlcihyKSl7dmFyIG1lPXIucGFyZW50O2lmKG1lLmtpbmQ9PT0xNzMmJlRkKG1lKSl7dmFyIE1lPWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoRXQoci5wYXJlbnQpLDE3Mik7aWYoTWUpe3ZhciAkZT15bChNZSksdHI9cVMobWUpO3JldHVybiB0ciYmcj09PXRyPyhlLkRlYnVnLmFzc2VydCghdHIudHlwZSksSnQoJGUudGhpc1BhcmFtZXRlcikpOnlvKCRlKX19aWYoZS5pc0luSlNGaWxlKHIpKXt2YXIgZHI9S20obWUscik7aWYoZHIpcmV0dXJuIGRyfXZhciBEcj1yLnN5bWJvbC5lc2NhcGVkTmFtZT09PVwidGhpc1wiP1NDKG1lKTpUQyhyKTtpZihEcilyZXR1cm4ga2MoRHIsITEsaCl9aWYoZS5oYXNPbmx5RXhwcmVzc2lvbkluaXRpYWxpemVyKHIpJiYhIXIuaW5pdGlhbGl6ZXIpe2lmKGUuaXNJbkpTRmlsZShyKSYmIWUuaXNQYXJhbWV0ZXIocikpe3ZhciBRcj1oYShyLEV0KHIpLGUuZ2V0RGVjbGFyZWRFeHBhbmRvSW5pdGlhbGl6ZXIocikpO2lmKFFyKXJldHVybiBRcn12YXIgRHI9X1Mocix3eShyLHQpKTtyZXR1cm4ga2MoRHIsdSxoKX1pZihlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihyKSYmKG58fGUuaXNJbkpTRmlsZShyKSkpaWYoZS5oYXNTdGF0aWNNb2RpZmllcihyKSl7dmFyIFRpPWUuZmlsdGVyKHIucGFyZW50Lm1lbWJlcnMsZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbiksRHI9VGkubGVuZ3RoP01pKHIuc3ltYm9sLFRpKTplLmdldEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MocikmMj9MaChyLnN5bWJvbCk6dm9pZCAwO3JldHVybiBEciYma2MoRHIsITAsaCl9ZWxzZXt2YXIgbGk9VGYoci5wYXJlbnQpLERyPWxpP3N0KHIuc3ltYm9sLGxpKTplLmdldEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MocikmMj9MaChyLnN5bWJvbCk6dm9pZCAwO3JldHVybiBEciYma2MoRHIsITAsaCl9aWYoZS5pc0pzeEF0dHJpYnV0ZShyKSlyZXR1cm4gRHQ7aWYoZS5pc0JpbmRpbmdQYXR0ZXJuKHIubmFtZSkpcmV0dXJuIFF1KHIubmFtZSwhMSwhMCl9ZnVuY3Rpb24gTGUocil7aWYoci52YWx1ZURlY2xhcmF0aW9uJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihyLnZhbHVlRGVjbGFyYXRpb24pKXt2YXIgaT1BYShyKTtyZXR1cm4gaS5pc0NvbnN0cnVjdG9yRGVjbGFyZWRQcm9wZXJ0eT09PXZvaWQgMCYmKGkuaXNDb25zdHJ1Y3RvckRlY2xhcmVkUHJvcGVydHk9ITEsaS5pc0NvbnN0cnVjdG9yRGVjbGFyZWRQcm9wZXJ0eT0hIXJpKHIpJiZlLmV2ZXJ5KHIuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHQpe3JldHVybiBlLmlzQmluYXJ5RXhwcmVzc2lvbih0KSYmczAodCkmJih0LmxlZnQua2luZCE9PTIwN3x8ZS5pc1N0cmluZ09yTnVtZXJpY0xpdGVyYWxMaWtlKHQubGVmdC5hcmd1bWVudEV4cHJlc3Npb24pKSYmIU5hKHZvaWQgMCx0LHIsdCl9KSksaS5pc0NvbnN0cnVjdG9yRGVjbGFyZWRQcm9wZXJ0eX1yZXR1cm4hMX1mdW5jdGlvbiBOcihyKXt2YXIgaT1yLnZhbHVlRGVjbGFyYXRpb247cmV0dXJuIGkmJmUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKGkpJiYhZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUoaSkmJiFpLmluaXRpYWxpemVyJiYobnx8ZS5pc0luSlNGaWxlKGkpKX1mdW5jdGlvbiByaShyKXtpZighIXIuZGVjbGFyYXRpb25zKWZvcih2YXIgaT0wLHQ9ci5kZWNsYXJhdGlvbnM7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV0scz1lLmdldFRoaXNDb250YWluZXIobywhMSk7aWYocyYmKHMua2luZD09PTE3MXx8U2wocykpKXJldHVybiBzfX1mdW5jdGlvbiBkaShyKXt2YXIgaT1lLmdldFNvdXJjZUZpbGVPZk5vZGUoci5kZWNsYXJhdGlvbnNbMF0pLHQ9ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhyLmVzY2FwZWROYW1lKSxvPXIuZGVjbGFyYXRpb25zLmV2ZXJ5KGZ1bmN0aW9uKHUpe3JldHVybiBlLmlzSW5KU0ZpbGUodSkmJmUuaXNBY2Nlc3NFeHByZXNzaW9uKHUpJiZlLmlzTW9kdWxlRXhwb3J0c0FjY2Vzc0V4cHJlc3Npb24odS5leHByZXNzaW9uKX0pLHM9bz9lLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCJtb2R1bGVcIiksZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCJleHBvcnRzXCIpKSx0KTplLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwiZXhwb3J0c1wiKSx0KTtyZXR1cm4gbyYmZS5zZXRQYXJlbnQocy5leHByZXNzaW9uLmV4cHJlc3Npb24scy5leHByZXNzaW9uKSxlLnNldFBhcmVudChzLmV4cHJlc3Npb24scyksZS5zZXRQYXJlbnQocyxpKSxzLmZsb3dOb2RlPWkuZW5kRmxvd05vZGUsdXAocyxucixUcil9ZnVuY3Rpb24gTWkocixpKXtmb3IodmFyIHQ9ZS5zdGFydHNXaXRoKHIuZXNjYXBlZE5hbWUsXCJfXyNcIik/ZS5mYWN0b3J5LmNyZWF0ZVByaXZhdGVJZGVudGlmaWVyKHIuZXNjYXBlZE5hbWUuc3BsaXQoXCJAXCIpWzFdKTplLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHIuZXNjYXBlZE5hbWUpLG89MCxzPWk7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb10saD1lLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVUaGlzKCksdCk7ZS5zZXRQYXJlbnQoaC5leHByZXNzaW9uLGgpLGUuc2V0UGFyZW50KGgsdSksaC5mbG93Tm9kZT11LnJldHVybkZsb3dOb2RlO3ZhciB6PXJhKGgscik7aWYobiYmKHo9PT1ucnx8ej09PVNvKSYmWHIoci52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuTWVtYmVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlLHRuKHIpLE90KHopKSwhZ2YoeixkMCkpcmV0dXJuIGt2KHopfX1mdW5jdGlvbiBzdChyLGkpe3ZhciB0PWUuc3RhcnRzV2l0aChyLmVzY2FwZWROYW1lLFwiX18jXCIpP2UuZmFjdG9yeS5jcmVhdGVQcml2YXRlSWRlbnRpZmllcihyLmVzY2FwZWROYW1lLnNwbGl0KFwiQFwiKVsxXSk6ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhyLmVzY2FwZWROYW1lKSxvPWUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZVRoaXMoKSx0KTtlLnNldFBhcmVudChvLmV4cHJlc3Npb24sbyksZS5zZXRQYXJlbnQobyxpKSxvLmZsb3dOb2RlPWkucmV0dXJuRmxvd05vZGU7dmFyIHM9cmEobyxyKTtyZXR1cm4gbiYmKHM9PT1ucnx8cz09PVNvKSYmWHIoci52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuTWVtYmVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlLHRuKHIpLE90KHMpKSxnZihzLGQwKT92b2lkIDA6a3Yocyl9ZnVuY3Rpb24gcmEocixpKXt2YXIgdD0oaT09bnVsbD92b2lkIDA6aS52YWx1ZURlY2xhcmF0aW9uKSYmKCFOcihpKXx8ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKGkudmFsdWVEZWNsYXJhdGlvbikmMikmJkxoKGkpfHxUcjtyZXR1cm4gdXAocixucix0KX1mdW5jdGlvbiBUYShyLGkpe3ZhciB0PWUuZ2V0QXNzaWduZWRFeHBhbmRvSW5pdGlhbGl6ZXIoci52YWx1ZURlY2xhcmF0aW9uKTtpZih0KXt2YXIgbz1lLmdldEpTRG9jVHlwZVRhZyh0KTtpZihvJiZvLnR5cGVFeHByZXNzaW9uKXJldHVybiBWYShvLnR5cGVFeHByZXNzaW9uKTt2YXIgcz1yLnZhbHVlRGVjbGFyYXRpb24mJmhhKHIudmFsdWVEZWNsYXJhdGlvbixyLHQpO3JldHVybiBzfHxIcChPcyh0KSl9dmFyIHUsaD0hMSx6PSExO2lmKExlKHIpJiYodT1zdChyLHJpKHIpKSksIXUpe3ZhciBtZT12b2lkIDA7aWYoci5kZWNsYXJhdGlvbnMpe2Zvcih2YXIgTWU9dm9pZCAwLCRlPTAsdHI9ci5kZWNsYXJhdGlvbnM7JGU8dHIubGVuZ3RoOyRlKyspe3ZhciBkcj10clskZV0sRHI9ZS5pc0JpbmFyeUV4cHJlc3Npb24oZHIpfHxlLmlzQ2FsbEV4cHJlc3Npb24oZHIpP2RyOmUuaXNBY2Nlc3NFeHByZXNzaW9uKGRyKT9lLmlzQmluYXJ5RXhwcmVzc2lvbihkci5wYXJlbnQpP2RyLnBhcmVudDpkcjp2b2lkIDA7aWYoISFEcil7dmFyIFFyPWUuaXNBY2Nlc3NFeHByZXNzaW9uKERyKT9lLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvblByb3BlcnR5QWNjZXNzS2luZChEcik6ZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKERyKTsoUXI9PT00fHxlLmlzQmluYXJ5RXhwcmVzc2lvbihEcikmJnMwKERyLFFyKSkmJihjbyhEcik/aD0hMDp6PSEwKSxlLmlzQ2FsbEV4cHJlc3Npb24oRHIpfHwoTWU9TmEoTWUsRHIscixkcikpLE1lfHwobWV8fChtZT1bXSkpLnB1c2goZS5pc0JpbmFyeUV4cHJlc3Npb24oRHIpfHxlLmlzQ2FsbEV4cHJlc3Npb24oRHIpP0luKHIsaSxEcixRcik6dWkpfX11PU1lfWlmKCF1KXtpZighZS5sZW5ndGgobWUpKXJldHVybiBQZTt2YXIgbGk9aCYmci5kZWNsYXJhdGlvbnM/dHMobWUsci5kZWNsYXJhdGlvbnMpOnZvaWQgMDtpZih6KXt2YXIgVGk9TGgocik7VGkmJigobGl8fChsaT1bXSkpLnB1c2goVGkpLGg9ITApfXZhciBDaT1lLnNvbWUobGksZnVuY3Rpb24oWmkpe3JldHVybiEhKFppLmZsYWdzJi05ODMwNSl9KT9saTptZTt1PVBhKENpKX19dmFyICRpPSRjKGtjKHUsITEseiYmIWgpKTtyZXR1cm4gci52YWx1ZURlY2xhcmF0aW9uJiZlYygkaSxmdW5jdGlvbihaaSl7cmV0dXJuISEoWmkuZmxhZ3MmLTk4MzA1KX0pPT09dWk/KFhwKHIudmFsdWVEZWNsYXJhdGlvbixPZSksT2UpOiRpfWZ1bmN0aW9uIGhhKHIsaSx0KXt2YXIgbyxzO2lmKCEoIWUuaXNJbkpTRmlsZShyKXx8IXR8fCFlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24odCl8fHQucHJvcGVydGllcy5sZW5ndGgpKXtmb3IodmFyIHU9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpO2UuaXNCaW5hcnlFeHByZXNzaW9uKHIpfHxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHIpOyl7dmFyIGg9RXQocik7ISgobz1oPT1udWxsP3ZvaWQgMDpoLmV4cG9ydHMpPT09bnVsbHx8bz09PXZvaWQgMCkmJm8uc2l6ZSYmZ3UodSxoLmV4cG9ydHMpLHI9ZS5pc0JpbmFyeUV4cHJlc3Npb24ocik/ci5wYXJlbnQ6ci5wYXJlbnQucGFyZW50fXZhciB6PUV0KHIpOyEoKHM9ej09bnVsbD92b2lkIDA6ei5leHBvcnRzKT09PW51bGx8fHM9PT12b2lkIDApJiZzLnNpemUmJmd1KHUsei5leHBvcnRzKTt2YXIgbWU9cnMoaSx1LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KTtyZXR1cm4gbWUub2JqZWN0RmxhZ3N8PTQwOTYsbWV9fWZ1bmN0aW9uIE5hKHIsaSx0LG8pe3ZhciBzLHU9ZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUoaS5wYXJlbnQpO2lmKHUpe3ZhciBoPSRjKFZhKHUpKTtpZihyKSFubihyKSYmIW5uKGgpJiYhd2YocixoKSYmdjYodm9pZCAwLHIsbyxoKTtlbHNlIHJldHVybiBofWlmKCEoKHM9dC5wYXJlbnQpPT09bnVsbHx8cz09PXZvaWQgMCkmJnMudmFsdWVEZWNsYXJhdGlvbil7dmFyIHo9ZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUodC5wYXJlbnQudmFsdWVEZWNsYXJhdGlvbik7aWYoeil7dmFyIG1lPWJpKFZhKHopLHQuZXNjYXBlZE5hbWUpO2lmKG1lKXJldHVybiBtbChtZSl9fXJldHVybiByfWZ1bmN0aW9uIEluKHIsaSx0LG8pe2lmKGUuaXNDYWxsRXhwcmVzc2lvbih0KSl7aWYoaSlyZXR1cm4gSnQoaSk7dmFyIHM9T3ModC5hcmd1bWVudHNbMl0pLHU9ZGEocyxcInZhbHVlXCIpO2lmKHUpcmV0dXJuIHU7dmFyIGg9ZGEocyxcImdldFwiKTtpZihoKXt2YXIgej1pZyhoKTtpZih6KXJldHVybiB5byh6KX12YXIgbWU9ZGEocyxcInNldFwiKTtpZihtZSl7dmFyIE1lPWlnKG1lKTtpZihNZSlyZXR1cm4gYVMoTWUpfXJldHVybiBPZX1pZihxbyh0LmxlZnQsdC5yaWdodCkpcmV0dXJuIE9lO3ZhciAkZT1vPT09MSYmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24odC5sZWZ0KXx8ZS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKHQubGVmdCkpJiYoZS5pc01vZHVsZUV4cG9ydHNBY2Nlc3NFeHByZXNzaW9uKHQubGVmdC5leHByZXNzaW9uKXx8ZS5pc0lkZW50aWZpZXIodC5sZWZ0LmV4cHJlc3Npb24pJiZlLmlzRXhwb3J0c0lkZW50aWZpZXIodC5sZWZ0LmV4cHJlc3Npb24pKSx0cj1pP0p0KGkpOiRlP2pjKE9zKHQucmlnaHQpKTpIcChPcyh0LnJpZ2h0KSk7aWYodHIuZmxhZ3MmNTI0Mjg4JiZvPT09MiYmci5lc2NhcGVkTmFtZT09PVwiZXhwb3J0PVwiKXt2YXIgZHI9UnUodHIpLERyPWUuY3JlYXRlU3ltYm9sVGFibGUoKTtlLmNvcHlFbnRyaWVzKGRyLm1lbWJlcnMsRHIpO3ZhciBRcj1Eci5zaXplO2kmJiFpLmV4cG9ydHMmJihpLmV4cG9ydHM9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpKSwoaXx8cikuZXhwb3J0cy5mb3JFYWNoKGZ1bmN0aW9uKFRpLENpKXt2YXIgJGksWmk9RHIuZ2V0KENpKTtpZihaaSYmWmkhPT1UaSlpZihUaS5mbGFncyYxMTE1NTEmJlppLmZsYWdzJjExMTU1MSl7aWYoVGkudmFsdWVEZWNsYXJhdGlvbiYmWmkudmFsdWVEZWNsYXJhdGlvbiYmZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKFRpLnZhbHVlRGVjbGFyYXRpb24pIT09ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKFppLnZhbHVlRGVjbGFyYXRpb24pKXt2YXIgcXQ9ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhUaS5lc2NhcGVkTmFtZSksTnQ9KCgkaT1lLnRyeUNhc3QoWmkudmFsdWVEZWNsYXJhdGlvbixlLmlzTmFtZWREZWNsYXJhdGlvbikpPT09bnVsbHx8JGk9PT12b2lkIDA/dm9pZCAwOiRpLm5hbWUpfHxaaS52YWx1ZURlY2xhcmF0aW9uO2UuYWRkUmVsYXRlZEluZm8oWHIoVGkudmFsdWVEZWNsYXJhdGlvbixlLkRpYWdub3N0aWNzLkR1cGxpY2F0ZV9pZGVudGlmaWVyXzAscXQpLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoTnQsZS5EaWFnbm9zdGljcy5fMF93YXNfYWxzb19kZWNsYXJlZF9oZXJlLHF0KSksZS5hZGRSZWxhdGVkSW5mbyhYcihOdCxlLkRpYWdub3N0aWNzLkR1cGxpY2F0ZV9pZGVudGlmaWVyXzAscXQpLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoVGkudmFsdWVEZWNsYXJhdGlvbixlLkRpYWdub3N0aWNzLl8wX3dhc19hbHNvX2RlY2xhcmVkX2hlcmUscXQpKX12YXIgUmE9b28oVGkuZmxhZ3N8WmkuZmxhZ3MsQ2kpO1JhLnR5cGU9UGEoW0p0KFRpKSxKdChaaSldKSxSYS52YWx1ZURlY2xhcmF0aW9uPVppLnZhbHVlRGVjbGFyYXRpb24sUmEuZGVjbGFyYXRpb25zPWUuY29uY2F0ZW5hdGUoWmkuZGVjbGFyYXRpb25zLFRpLmRlY2xhcmF0aW9ucyksRHIuc2V0KENpLFJhKX1lbHNlIERyLnNldChDaSxCZihUaSxaaSkpO2Vsc2UgRHIuc2V0KENpLFRpKX0pO3ZhciBsaT1ycyhRciE9PURyLnNpemU/dm9pZCAwOmRyLnN5bWJvbCxEcixkci5jYWxsU2lnbmF0dXJlcyxkci5jb25zdHJ1Y3RTaWduYXR1cmVzLGRyLmluZGV4SW5mb3MpO3JldHVybiBsaS5vYmplY3RGbGFnc3w9ZS5nZXRPYmplY3RGbGFncyh0cikmNDA5NixsaS5zeW1ib2wmJmxpLnN5bWJvbC5mbGFncyYzMiYmdHI9PT1hYShsaS5zeW1ib2wpJiYobGkub2JqZWN0RmxhZ3N8PTE2Nzc3MjE2KSxsaX1yZXR1cm4gSmgodHIpPyhYcCh0LG1vKSxtbyk6dHJ9ZnVuY3Rpb24gcW8ocixpKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihyKSYmci5leHByZXNzaW9uLmtpbmQ9PT0xMDgmJmUuZm9yRWFjaENoaWxkUmVjdXJzaXZlbHkoaSxmdW5jdGlvbih0KXtyZXR1cm4genMocix0KX0pfWZ1bmN0aW9uIGNvKHIpe3ZhciBpPWUuZ2V0VGhpc0NvbnRhaW5lcihyLCExKTtyZXR1cm4gaS5raW5kPT09MTcxfHxpLmtpbmQ9PT0yNTZ8fGkua2luZD09PTIxMyYmIWUuaXNQcm90b3R5cGVQcm9wZXJ0eUFzc2lnbm1lbnQoaS5wYXJlbnQpfWZ1bmN0aW9uIHRzKHIsaSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KHIubGVuZ3RoPT09aS5sZW5ndGgpLHIuZmlsdGVyKGZ1bmN0aW9uKHQsbyl7dmFyIHM9aVtvXSx1PWUuaXNCaW5hcnlFeHByZXNzaW9uKHMpP3M6ZS5pc0JpbmFyeUV4cHJlc3Npb24ocy5wYXJlbnQpP3MucGFyZW50OnZvaWQgMDtyZXR1cm4gdSYmY28odSl9KX1mdW5jdGlvbiB2cyhyLGksdCl7aWYoci5pbml0aWFsaXplcil7dmFyIG89ZS5pc0JpbmRpbmdQYXR0ZXJuKHIubmFtZSk/UXUoci5uYW1lLCEwLCExKTpncjtyZXR1cm4ga2MoX1Mocix3eShyLDAsbykpKX1yZXR1cm4gZS5pc0JpbmRpbmdQYXR0ZXJuKHIubmFtZSk/UXUoci5uYW1lLGksdCk6KHQmJiFZdShyKSYmWHAocixPZSksaT9mcjpPZSl9ZnVuY3Rpb24gQWMocixpLHQpe3ZhciBvPWUuY3JlYXRlU3ltYm9sVGFibGUoKSxzLHU9MTMxMjAwO2UuZm9yRWFjaChyLmVsZW1lbnRzLGZ1bmN0aW9uKHope3ZhciBtZT16LnByb3BlcnR5TmFtZXx8ei5uYW1lO2lmKHouZG90RG90RG90VG9rZW4pe3M9emwoTGksT2UsITEpO3JldHVybn12YXIgTWU9Wl8obWUpO2lmKCFfZihNZSkpe3V8PTUxMjtyZXR1cm59dmFyICRlPXBmKE1lKSx0cj00fCh6LmluaXRpYWxpemVyPzE2Nzc3MjE2OjApLGRyPW9vKHRyLCRlKTtkci50eXBlPXZzKHosaSx0KSxkci5iaW5kaW5nRWxlbWVudD16LG8uc2V0KGRyLmVzY2FwZWROYW1lLGRyKX0pO3ZhciBoPXJzKHZvaWQgMCxvLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkscz9bc106ZS5lbXB0eUFycmF5KTtyZXR1cm4gaC5vYmplY3RGbGFnc3w9dSxpJiYoaC5wYXR0ZXJuPXIsaC5vYmplY3RGbGFnc3w9MTMxMDcyKSxofWZ1bmN0aW9uIElzKHIsaSx0KXt2YXIgbz1yLmVsZW1lbnRzLHM9ZS5sYXN0T3JVbmRlZmluZWQobyksdT1zJiZzLmtpbmQ9PT0yMDMmJnMuZG90RG90RG90VG9rZW4/czp2b2lkIDA7aWYoby5sZW5ndGg9PT0wfHxvLmxlbmd0aD09PTEmJnUpcmV0dXJuIEFlPj0yP0IzKE9lKTptbzt2YXIgaD1lLm1hcChvLGZ1bmN0aW9uKCRlKXtyZXR1cm4gZS5pc09taXR0ZWRFeHByZXNzaW9uKCRlKT9PZTp2cygkZSxpLHQpfSksej1lLmZpbmRMYXN0SW5kZXgobyxmdW5jdGlvbigkZSl7cmV0dXJuISgkZT09PXV8fGUuaXNPbWl0dGVkRXhwcmVzc2lvbigkZSl8fHBtKCRlKSl9LG8ubGVuZ3RoLTEpKzEsbWU9ZS5tYXAobyxmdW5jdGlvbigkZSx0cil7cmV0dXJuICRlPT09dT80OnRyPj16PzI6MX0pLE1lPVdsKGgsbWUpO3JldHVybiBpJiYoTWU9dXgoTWUpLE1lLnBhdHRlcm49cixNZS5vYmplY3RGbGFnc3w9MTMxMDcyKSxNZX1mdW5jdGlvbiBRdShyLGksdCl7cmV0dXJuIGk9PT12b2lkIDAmJihpPSExKSx0PT09dm9pZCAwJiYodD0hMSksci5raW5kPT09MjAxP0FjKHIsaSx0KTpJcyhyLGksdCl9ZnVuY3Rpb24gc2MocixpKXtyZXR1cm4gTWMoR18ociwhMCwwKSxyLGkpfWZ1bmN0aW9uIGJjKHIpe3ZhciBpPUV0KHIpLHQ9eDMoITEpO3JldHVybiB0JiZpJiZpPT09dH1mdW5jdGlvbiBNYyhyLGksdCl7cmV0dXJuIHI/KHIuZmxhZ3MmNDA5NiYmYmMoaS5wYXJlbnQpJiYocj1DRChpKSksdCYmS2goaSxyKSxyLmZsYWdzJjgxOTImJihlLmlzQmluZGluZ0VsZW1lbnQoaSl8fCFpLnR5cGUpJiZyLnN5bWJvbCE9PUV0KGkpJiYocj1LaSksJGMocikpOihyPWUuaXNQYXJhbWV0ZXIoaSkmJmkuZG90RG90RG90VG9rZW4/bW86T2UsdCYmKFl1KGkpfHxYcChpLHIpKSxyKX1mdW5jdGlvbiBZdShyKXt2YXIgaT1lLmdldFJvb3REZWNsYXJhdGlvbihyKSx0PWkua2luZD09PTE2ND9pLnBhcmVudDppO3JldHVybiBJMCh0KX1mdW5jdGlvbiBSbChyKXt2YXIgaT1lLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZShyKTtpZihpKXJldHVybiBWYShpKX1mdW5jdGlvbiBMYyhyKXt2YXIgaT1BYShyKTtpZighaS50eXBlKXt2YXIgdD1fKHIpO2kudHlwZXx8KGkudHlwZT10KX1yZXR1cm4gaS50eXBlfWZ1bmN0aW9uIF8ocil7aWYoci5mbGFncyY0MTk0MzA0KXJldHVybiBTYShyKTtpZihyPT09cXIpcmV0dXJuIE9lO2lmKHIuZmxhZ3MmMTM0MjE3NzI4JiZyLnZhbHVlRGVjbGFyYXRpb24pe3ZhciBpPUV0KGUuZ2V0U291cmNlRmlsZU9mTm9kZShyLnZhbHVlRGVjbGFyYXRpb24pKSx0PW9vKGkuZmxhZ3MsXCJleHBvcnRzXCIpO3QuZGVjbGFyYXRpb25zPWkuZGVjbGFyYXRpb25zP2kuZGVjbGFyYXRpb25zLnNsaWNlKCk6W10sdC5wYXJlbnQ9cix0LnRhcmdldD1pLGkudmFsdWVEZWNsYXJhdGlvbiYmKHQudmFsdWVEZWNsYXJhdGlvbj1pLnZhbHVlRGVjbGFyYXRpb24pLGkubWVtYmVycyYmKHQubWVtYmVycz1uZXcgZS5NYXAoaS5tZW1iZXJzKSksaS5leHBvcnRzJiYodC5leHBvcnRzPW5ldyBlLk1hcChpLmV4cG9ydHMpKTt2YXIgbz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCk7cmV0dXJuIG8uc2V0KFwiZXhwb3J0c1wiLHQpLHJzKHIsbyxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSl9ZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQoci52YWx1ZURlY2xhcmF0aW9uKTt2YXIgcz1yLnZhbHVlRGVjbGFyYXRpb247aWYoZS5pc0NhdGNoQ2xhdXNlVmFyaWFibGVEZWNsYXJhdGlvbk9yQmluZGluZ0VsZW1lbnQocykpe3ZhciB1PWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKHMpO2lmKHU9PT12b2lkIDApcmV0dXJuIGJlP2dyOk9lO3ZhciBoPUJkKHUpO3JldHVybiB0YShoKXx8aD09PWdyP2g6UGV9aWYoZS5pc1NvdXJjZUZpbGUocykmJmUuaXNKc29uU291cmNlRmlsZShzKSlyZXR1cm4gcy5zdGF0ZW1lbnRzLmxlbmd0aD8kYyhIcCh5bihzLnN0YXRlbWVudHNbMF0uZXhwcmVzc2lvbikpKTpCYTtpZihlLmlzQWNjZXNzb3IocykpcmV0dXJuIHJ0KHIpO2lmKCF5dShyLDApKXJldHVybiByLmZsYWdzJjUxMiYmIShyLmZsYWdzJjY3MTA4ODY0KT92byhyKTpsZyhyKTt2YXIgejtpZihzLmtpbmQ9PT0yNzEpej1NYyhSbChzKXx8T3Mocy5leHByZXNzaW9uKSxzKTtlbHNlIGlmKGUuaXNCaW5hcnlFeHByZXNzaW9uKHMpfHxlLmlzSW5KU0ZpbGUocykmJihlLmlzQ2FsbEV4cHJlc3Npb24ocyl8fChlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHMpfHxlLmlzQmluZGFibGVTdGF0aWNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihzKSkmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHMucGFyZW50KSkpej1UYShyKTtlbHNlIGlmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ocyl8fGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihzKXx8ZS5pc0lkZW50aWZpZXIocyl8fGUuaXNTdHJpbmdMaXRlcmFsTGlrZShzKXx8ZS5pc051bWVyaWNMaXRlcmFsKHMpfHxlLmlzQ2xhc3NEZWNsYXJhdGlvbihzKXx8ZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24ocyl8fGUuaXNNZXRob2REZWNsYXJhdGlvbihzKSYmIWUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKHMpfHxlLmlzTWV0aG9kU2lnbmF0dXJlKHMpfHxlLmlzU291cmNlRmlsZShzKSl7aWYoci5mbGFncyY5MTM2KXJldHVybiB2byhyKTt6PWUuaXNCaW5hcnlFeHByZXNzaW9uKHMucGFyZW50KT9UYShyKTpSbChzKXx8T2V9ZWxzZSBpZihlLmlzUHJvcGVydHlBc3NpZ25tZW50KHMpKXo9Umwocyl8fEtrKHMpO2Vsc2UgaWYoZS5pc0pzeEF0dHJpYnV0ZShzKSl6PVJsKHMpfHxPQyhzKTtlbHNlIGlmKGUuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQocykpej1SbChzKXx8RG0ocy5uYW1lLDApO2Vsc2UgaWYoZS5pc09iamVjdExpdGVyYWxNZXRob2Qocykpej1SbChzKXx8R2socywwKTtlbHNlIGlmKGUuaXNQYXJhbWV0ZXIocyl8fGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHMpfHxlLmlzUHJvcGVydHlTaWduYXR1cmUocyl8fGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHMpfHxlLmlzQmluZGluZ0VsZW1lbnQocyl8fGUuaXNKU0RvY1Byb3BlcnR5TGlrZVRhZyhzKSl6PXNjKHMsITApO2Vsc2UgaWYoZS5pc0VudW1EZWNsYXJhdGlvbihzKSl6PXZvKHIpO2Vsc2UgaWYoZS5pc0VudW1NZW1iZXIocykpej1IXyhyKTtlbHNlIHJldHVybiBlLkRlYnVnLmZhaWwoXCJVbmhhbmRsZWQgZGVjbGFyYXRpb24ga2luZCEgXCIrZS5EZWJ1Zy5mb3JtYXRTeW50YXhLaW5kKHMua2luZCkrXCIgZm9yIFwiK2UuRGVidWcuZm9ybWF0U3ltYm9sKHIpKTtyZXR1cm4gZmkoKT96OnIuZmxhZ3MmNTEyJiYhKHIuZmxhZ3MmNjcxMDg4NjQpP3ZvKHIpOmxnKHIpfWZ1bmN0aW9uIFcocil7aWYocilpZihyLmtpbmQ9PT0xNzIpe3ZhciBpPWUuZ2V0RWZmZWN0aXZlUmV0dXJuVHlwZU5vZGUocik7cmV0dXJuIGl9ZWxzZXt2YXIgdD1lLmdldEVmZmVjdGl2ZVNldEFjY2Vzc29yVHlwZUFubm90YXRpb25Ob2RlKHIpO3JldHVybiB0fX1mdW5jdGlvbiBUZShyKXt2YXIgaT1XKHIpO3JldHVybiBpJiZWYShpKX1mdW5jdGlvbiBjcihyKXt2YXIgaT1xUyhyKTtyZXR1cm4gaSYmaS5zeW1ib2x9ZnVuY3Rpb24gbmkocil7cmV0dXJuIFRfKHlsKHIpKX1mdW5jdGlvbiBydChyKXt2YXIgaT1BYShyKTtpZighaS50eXBlKXtpZigheXUociwwKSlyZXR1cm4gUGU7dmFyIHQ9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChyLDE3Miksbz1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKHIsMTczKSxzPXQmJmUuaXNJbkpTRmlsZSh0KSYmS18odCl8fFRlKHQpfHxUZShvKXx8dCYmdC5ib2R5JiZDMCh0KTtzfHwobyYmIUkwKG8pP0ljKG4sbyxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9pdHNfc2V0X2FjY2Vzc29yX2xhY2tzX2FfcGFyYW1ldGVyX3R5cGVfYW5ub3RhdGlvbix0bihyKSk6dCYmIUkwKHQpJiZJYyhuLHQsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2JlY2F1c2VfaXRzX2dldF9hY2Nlc3Nvcl9sYWNrc19hX3JldHVybl90eXBlX2Fubm90YXRpb24sdG4ocikpLHM9T2UpLGZpKCl8fChXKHQpP1hyKHQsZS5EaWFnbm9zdGljcy5fMF9pc19yZWZlcmVuY2VkX2RpcmVjdGx5X29yX2luZGlyZWN0bHlfaW5faXRzX293bl90eXBlX2Fubm90YXRpb24sdG4ocikpOlcobyk/WHIobyxlLkRpYWdub3N0aWNzLl8wX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9pdHNfb3duX3R5cGVfYW5ub3RhdGlvbix0bihyKSk6dCYmbiYmWHIodCxlLkRpYWdub3N0aWNzLl8wX2ltcGxpY2l0bHlfaGFzX3JldHVybl90eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2FuZF9pc19yZWZlcmVuY2VkX2RpcmVjdGx5X29yX2luZGlyZWN0bHlfaW5fb25lX29mX2l0c19yZXR1cm5fZXhwcmVzc2lvbnMsdG4ocikpLHM9T2UpLGkudHlwZT1zfXJldHVybiBpLnR5cGV9ZnVuY3Rpb24geXQocil7dmFyIGk9QWEocik7aWYoIWkud3JpdGVUeXBlKXtpZigheXUociw4KSlyZXR1cm4gUGU7dmFyIHQ9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChyLDE3Myksbz1UZSh0KTtmaSgpfHwoVyh0KSYmWHIodCxlLkRpYWdub3N0aWNzLl8wX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9pdHNfb3duX3R5cGVfYW5ub3RhdGlvbix0bihyKSksbz1PZSksaS53cml0ZVR5cGU9b3x8cnQocil9cmV0dXJuIGkud3JpdGVUeXBlfWZ1bmN0aW9uIFhhKHIpe3ZhciBpPUJsKGFhKHIpKTtyZXR1cm4gaS5mbGFncyY4NjUwNzUyP2k6aS5mbGFncyYyMDk3MTUyP2UuZmluZChpLnR5cGVzLGZ1bmN0aW9uKHQpe3JldHVybiEhKHQuZmxhZ3MmODY1MDc1Mil9KTp2b2lkIDB9ZnVuY3Rpb24gdm8ocil7dmFyIGk9QWEociksdD1pO2lmKCFpLnR5cGUpe3ZhciBvPXIudmFsdWVEZWNsYXJhdGlvbiYmVDAoci52YWx1ZURlY2xhcmF0aW9uLCExKTtpZihvKXt2YXIgcz1pUyhyLG8pO3MmJihyPWk9cyl9dC50eXBlPWkudHlwZT1WcyhyKX1yZXR1cm4gaS50eXBlfWZ1bmN0aW9uIFZzKHIpe3ZhciBpPXIudmFsdWVEZWNsYXJhdGlvbjtpZihyLmZsYWdzJjE1MzYmJmUuaXNTaG9ydGhhbmRBbWJpZW50TW9kdWxlU3ltYm9sKHIpKXJldHVybiBPZTtpZihpJiYoaS5raW5kPT09MjIxfHxlLmlzQWNjZXNzRXhwcmVzc2lvbihpKSYmaS5wYXJlbnQua2luZD09PTIyMSkpcmV0dXJuIFRhKHIpO2lmKHIuZmxhZ3MmNTEyJiZpJiZlLmlzU291cmNlRmlsZShpKSYmaS5jb21tb25Kc01vZHVsZUluZGljYXRvcil7dmFyIHQ9VXMocik7aWYodCE9PXIpe2lmKCF5dShyLDApKXJldHVybiBQZTt2YXIgbz1zbyhyLmV4cG9ydHMuZ2V0KFwiZXhwb3J0PVwiKSkscz1UYShvLG89PT10P3ZvaWQgMDp0KTtyZXR1cm4gZmkoKT9zOmxnKHIpfX12YXIgdT10dSgxNixyKTtpZihyLmZsYWdzJjMyKXt2YXIgaD1YYShyKTtyZXR1cm4gaD9EbyhbdSxoXSk6dX1lbHNlIHJldHVybiBZZSYmci5mbGFncyYxNjc3NzIxNj9pXyh1KTp1fWZ1bmN0aW9uIEhfKHIpe3ZhciBpPUFhKHIpO3JldHVybiBpLnR5cGV8fChpLnR5cGU9aHUocikpfWZ1bmN0aW9uIHlfKHIpe3ZhciBpPUFhKHIpO2lmKCFpLnR5cGUpe3ZhciB0PVBzKHIpLG89ci5kZWNsYXJhdGlvbnMmJkVjKHJ1KHIpLCEwKSxzPWUuZmlyc3REZWZpbmVkKG89PW51bGw/dm9pZCAwOm8uZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHUpe3JldHVybiBlLmlzRXhwb3J0QXNzaWdubWVudCh1KT9SbCh1KTp2b2lkIDB9KTtpLnR5cGU9KG89PW51bGw/dm9pZCAwOm8uZGVjbGFyYXRpb25zKSYmejAoby5kZWNsYXJhdGlvbnMpJiZyLmRlY2xhcmF0aW9ucy5sZW5ndGg/ZGkobyk6ejAoci5kZWNsYXJhdGlvbnMpP25yOnN8fCh0LmZsYWdzJjExMTU1MT9KdCh0KTpQZSl9cmV0dXJuIGkudHlwZX1mdW5jdGlvbiBEZChyKXt2YXIgaT1BYShyKTtyZXR1cm4gaS50eXBlfHwoaS50eXBlPXVuKEp0KGkudGFyZ2V0KSxpLm1hcHBlcikpfWZ1bmN0aW9uIGpwKHIpe3ZhciBpPUFhKHIpO3JldHVybiBpLndyaXRlVHlwZXx8KGkud3JpdGVUeXBlPXVuKFZnKGkudGFyZ2V0KSxpLm1hcHBlcikpfWZ1bmN0aW9uIGxnKHIpe3ZhciBpPXIudmFsdWVEZWNsYXJhdGlvbjtyZXR1cm4gZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUoaSk/KFhyKHIudmFsdWVEZWNsYXJhdGlvbixlLkRpYWdub3N0aWNzLl8wX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9pdHNfb3duX3R5cGVfYW5ub3RhdGlvbix0bihyKSksUGUpOihuJiYoaS5raW5kIT09MTY0fHxpLmluaXRpYWxpemVyKSYmWHIoci52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuXzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX2FfdHlwZV9hbm5vdGF0aW9uX2FuZF9pc19yZWZlcmVuY2VkX2RpcmVjdGx5X29yX2luZGlyZWN0bHlfaW5faXRzX293bl9pbml0aWFsaXplcix0bihyKSksT2UpfWZ1bmN0aW9uIE9tKHIpe3ZhciBpPUFhKHIpO3JldHVybiBpLnR5cGV8fChlLkRlYnVnLmFzc2VydElzRGVmaW5lZChpLmRlZmVycmFsUGFyZW50KSxlLkRlYnVnLmFzc2VydElzRGVmaW5lZChpLmRlZmVycmFsQ29uc3RpdHVlbnRzKSxpLnR5cGU9aS5kZWZlcnJhbFBhcmVudC5mbGFncyYxMDQ4NTc2P1BhKGkuZGVmZXJyYWxDb25zdGl0dWVudHMpOkRvKGkuZGVmZXJyYWxDb25zdGl0dWVudHMpKSxpLnR5cGV9ZnVuY3Rpb24gRm0ocil7dmFyIGk9QWEocik7cmV0dXJuIWkud3JpdGVUeXBlJiZpLmRlZmVycmFsV3JpdGVDb25zdGl0dWVudHMmJihlLkRlYnVnLmFzc2VydElzRGVmaW5lZChpLmRlZmVycmFsUGFyZW50KSxlLkRlYnVnLmFzc2VydElzRGVmaW5lZChpLmRlZmVycmFsQ29uc3RpdHVlbnRzKSxpLndyaXRlVHlwZT1pLmRlZmVycmFsUGFyZW50LmZsYWdzJjEwNDg1NzY/UGEoaS5kZWZlcnJhbFdyaXRlQ29uc3RpdHVlbnRzKTpEbyhpLmRlZmVycmFsV3JpdGVDb25zdGl0dWVudHMpKSxpLndyaXRlVHlwZX1mdW5jdGlvbiBWZyhyKXt2YXIgaT1lLmdldENoZWNrRmxhZ3Mocik7cmV0dXJuIHIuZmxhZ3MmND9pJjI/aSY2NTUzNj9GbShyKXx8T20ocik6ci53cml0ZVR5cGV8fHIudHlwZTpKdChyKTpyLmZsYWdzJjk4MzA0P2kmMT9qcChyKTp5dChyKTpKdChyKX1mdW5jdGlvbiBKdChyKXt2YXIgaT1lLmdldENoZWNrRmxhZ3Mocik7cmV0dXJuIGkmNjU1MzY/T20ocik6aSYxP0RkKHIpOmkmMjYyMTQ0P0oxKHIpOmkmODE5Mj9xdyhyKTpyLmZsYWdzJjc/TGMocik6ci5mbGFncyY5MTM2P3ZvKHIpOnIuZmxhZ3MmOD9IXyhyKTpyLmZsYWdzJjk4MzA0P3J0KHIpOnIuZmxhZ3MmMjA5NzE1Mj95XyhyKTpQZX1mdW5jdGlvbiBtbChyKXtyZXR1cm4ga2coSnQociksISEoci5mbGFncyYxNjc3NzIxNikpfWZ1bmN0aW9uIFhmKHIsaSl7cmV0dXJuIHIhPT12b2lkIDAmJmkhPT12b2lkIDAmJihlLmdldE9iamVjdEZsYWdzKHIpJjQpIT09MCYmci50YXJnZXQ9PT1pfWZ1bmN0aW9uIGJkKHIpe3JldHVybiBlLmdldE9iamVjdEZsYWdzKHIpJjQ/ci50YXJnZXQ6cn1mdW5jdGlvbiBsZihyLGkpe3JldHVybiB0KHIpO2Z1bmN0aW9uIHQobyl7aWYoZS5nZXRPYmplY3RGbGFncyhvKSY3KXt2YXIgcz1iZChvKTtyZXR1cm4gcz09PWl8fGUuc29tZShRYyhzKSx0KX1lbHNlIGlmKG8uZmxhZ3MmMjA5NzE1MilyZXR1cm4gZS5zb21lKG8udHlwZXMsdCk7cmV0dXJuITF9fWZ1bmN0aW9uIEtnKHIsaSl7Zm9yKHZhciB0PTAsbz1pO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdO3I9ZS5hcHBlbmRJZlVuaXF1ZShyLEpzKEV0KHMpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24ga2YocixpKXtmb3IoOzspe2lmKHI9ci5wYXJlbnQsciYmZS5pc0JpbmFyeUV4cHJlc3Npb24ocikpe3ZhciB0PWUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChyKTtpZih0PT09Nnx8dD09PTMpe3ZhciBvPUV0KHIubGVmdCk7byYmby5wYXJlbnQmJiFlLmZpbmRBbmNlc3RvcihvLnBhcmVudC52YWx1ZURlY2xhcmF0aW9uLGZ1bmN0aW9uKG1lKXtyZXR1cm4gcj09PW1lfSkmJihyPW8ucGFyZW50LnZhbHVlRGVjbGFyYXRpb24pfX1pZighcilyZXR1cm47c3dpdGNoKHIua2luZCl7Y2FzZSAyNTc6Y2FzZSAyMjY6Y2FzZSAyNTg6Y2FzZSAxNzQ6Y2FzZSAxNzU6Y2FzZSAxNjg6Y2FzZSAxNzk6Y2FzZSAxODA6Y2FzZSAzMTc6Y2FzZSAyNTY6Y2FzZSAxNjk6Y2FzZSAyMTM6Y2FzZSAyMTQ6Y2FzZSAyNTk6Y2FzZSAzNDQ6Y2FzZSAzNDU6Y2FzZSAzMzk6Y2FzZSAzMzg6Y2FzZSAxOTU6Y2FzZSAxODk6e3ZhciBzPWtmKHIsaSk7aWYoci5raW5kPT09MTk1KXJldHVybiBlLmFwcGVuZChzLEpzKEV0KHIudHlwZVBhcmFtZXRlcikpKTtpZihyLmtpbmQ9PT0xODkpcmV0dXJuIGUuY29uY2F0ZW5hdGUocyxlRShyKSk7dmFyIHU9S2cocyxlLmdldEVmZmVjdGl2ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnMocikpLGg9aSYmKHIua2luZD09PTI1N3x8ci5raW5kPT09MjI2fHxyLmtpbmQ9PT0yNTh8fFNsKHIpKSYmYWEoRXQocikpLnRoaXNUeXBlO3JldHVybiBoP2UuYXBwZW5kKHUsaCk6dX1jYXNlIDM0MDp2YXIgej1lLmdldFBhcmFtZXRlclN5bWJvbEZyb21KU0RvYyhyKTt6JiYocj16LnZhbHVlRGVjbGFyYXRpb24pO2JyZWFrO2Nhc2UgMzIwOnt2YXIgcz1rZihyLGkpO3JldHVybiByLnRhZ3M/S2cocyxlLmZsYXRNYXAoci50YWdzLGZ1bmN0aW9uKE1lKXtyZXR1cm4gZS5pc0pTRG9jVGVtcGxhdGVUYWcoTWUpP01lLnR5cGVQYXJhbWV0ZXJzOnZvaWQgMH0pKTpzfX19fWZ1bmN0aW9uIEdnKHIpe3ZhciBpPXIuZmxhZ3MmMzI/ci52YWx1ZURlY2xhcmF0aW9uOmUuZ2V0RGVjbGFyYXRpb25PZktpbmQociwyNTgpO3JldHVybiBlLkRlYnVnLmFzc2VydCghIWksXCJDbGFzcyB3YXMgbWlzc2luZyB2YWx1ZURlY2xhcmF0aW9uIC1PUi0gbm9uLWNsYXNzIGhhZCBubyBpbnRlcmZhY2UgZGVjbGFyYXRpb25zXCIpLGtmKGkpfWZ1bmN0aW9uIEFmKHIpe2lmKCEhci5kZWNsYXJhdGlvbnMpe2Zvcih2YXIgaSx0PTAsbz1yLmRlY2xhcmF0aW9uczt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpZihzLmtpbmQ9PT0yNTh8fHMua2luZD09PTI1N3x8cy5raW5kPT09MjI2fHxTbChzKXx8ZS5pc1R5cGVBbGlhcyhzKSl7dmFyIHU9cztpPUtnKGksZS5nZXRFZmZlY3RpdmVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25zKHUpKX19cmV0dXJuIGl9fWZ1bmN0aW9uIEhnKHIpe3JldHVybiBlLmNvbmNhdGVuYXRlKEdnKHIpLEFmKHIpKX1mdW5jdGlvbiBXZChyKXt2YXIgaT1vdChyLDEpO2lmKGkubGVuZ3RoPT09MSl7dmFyIHQ9aVswXTtpZighdC50eXBlUGFyYW1ldGVycyYmdC5wYXJhbWV0ZXJzLmxlbmd0aD09PTEmJkgodCkpe3ZhciBvPW12KHQucGFyYW1ldGVyc1swXSk7cmV0dXJuIHRhKG8pfHxLRChvKT09PU9lfX1yZXR1cm4hMX1mdW5jdGlvbiBxZChyKXtpZihvdChyLDEpLmxlbmd0aD4wKXJldHVybiEwO2lmKHIuZmxhZ3MmODY1MDc1Mil7dmFyIGk9dWMocik7cmV0dXJuISFpJiZXZChpKX1yZXR1cm4hMX1mdW5jdGlvbiBmZyhyKXt2YXIgaT1lLmdldENsYXNzTGlrZURlY2xhcmF0aW9uT2ZTeW1ib2woci5zeW1ib2wpO3JldHVybiBpJiZlLmdldEVmZmVjdGl2ZUJhc2VUeXBlTm9kZShpKX1mdW5jdGlvbiBNbShyLGksdCl7dmFyIG89ZS5sZW5ndGgoaSkscz1lLmlzSW5KU0ZpbGUodCk7cmV0dXJuIGUuZmlsdGVyKG90KHIsMSksZnVuY3Rpb24odSl7cmV0dXJuKHN8fG8+PVVsKHUudHlwZVBhcmFtZXRlcnMpKSYmbzw9ZS5sZW5ndGgodS50eXBlUGFyYW1ldGVycyl9KX1mdW5jdGlvbiBYZyhyLGksdCl7dmFyIG89TW0ocixpLHQpLHM9ZS5tYXAoaSxWYSk7cmV0dXJuIGUuc2FtZU1hcChvLGZ1bmN0aW9uKHUpe3JldHVybiBlLnNvbWUodS50eXBlUGFyYW1ldGVycyk/WG0odSxzLGUuaXNJbkpTRmlsZSh0KSk6dX0pfWZ1bmN0aW9uIEJsKHIpe2lmKCFyLnJlc29sdmVkQmFzZUNvbnN0cnVjdG9yVHlwZSl7dmFyIGk9ZS5nZXRDbGFzc0xpa2VEZWNsYXJhdGlvbk9mU3ltYm9sKHIuc3ltYm9sKSx0PWkmJmUuZ2V0RWZmZWN0aXZlQmFzZVR5cGVOb2RlKGkpLG89Zmcocik7aWYoIW8pcmV0dXJuIHIucmVzb2x2ZWRCYXNlQ29uc3RydWN0b3JUeXBlPVRyO2lmKCF5dShyLDEpKXJldHVybiBQZTt2YXIgcz15bihvLmV4cHJlc3Npb24pO2lmKHQmJm8hPT10JiYoZS5EZWJ1Zy5hc3NlcnQoIXQudHlwZUFyZ3VtZW50cykseW4odC5leHByZXNzaW9uKSkscy5mbGFncyYyNjIxNDQwJiZSdShzKSwhZmkoKSlyZXR1cm4gWHIoci5zeW1ib2wudmFsdWVEZWNsYXJhdGlvbixlLkRpYWdub3N0aWNzLl8wX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9pdHNfb3duX2Jhc2VfZXhwcmVzc2lvbix0bihyLnN5bWJvbCkpLHIucmVzb2x2ZWRCYXNlQ29uc3RydWN0b3JUeXBlPVBlO2lmKCEocy5mbGFncyYxKSYmcyE9PWN0JiYhcWQocykpe3ZhciB1PVhyKG8uZXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYV9jb25zdHJ1Y3Rvcl9mdW5jdGlvbl90eXBlLE90KHMpKTtpZihzLmZsYWdzJjI2MjE0NCl7dmFyIGg9dG0ocyksej1ncjtpZihoKXt2YXIgbWU9b3QoaCwxKTttZVswXSYmKHo9eW8obWVbMF0pKX1zLnN5bWJvbC5kZWNsYXJhdGlvbnMmJmUuYWRkUmVsYXRlZEluZm8odSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHMuc3ltYm9sLmRlY2xhcmF0aW9uc1swXSxlLkRpYWdub3N0aWNzLkRpZF95b3VfbWVhbl9mb3JfMF90b19iZV9jb25zdHJhaW5lZF90b190eXBlX25ld19hcmdzX0NvbG9uX2FueV8xLHRuKHMuc3ltYm9sKSxPdCh6KSkpfXJldHVybiByLnJlc29sdmVkQmFzZUNvbnN0cnVjdG9yVHlwZT1QZX1yLnJlc29sdmVkQmFzZUNvbnN0cnVjdG9yVHlwZT1zfXJldHVybiByLnJlc29sdmVkQmFzZUNvbnN0cnVjdG9yVHlwZX1mdW5jdGlvbiBRZyhyKXt2YXIgaT1lLmVtcHR5QXJyYXk7aWYoci5zeW1ib2wuZGVjbGFyYXRpb25zKWZvcih2YXIgdD0wLG89ci5zeW1ib2wuZGVjbGFyYXRpb25zO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdLHU9ZS5nZXRFZmZlY3RpdmVJbXBsZW1lbnRzVHlwZU5vZGVzKHMpO2lmKCEhdSlmb3IodmFyIGg9MCx6PXU7aDx6Lmxlbmd0aDtoKyspe3ZhciBtZT16W2hdLE1lPVZhKG1lKTtubihNZSl8fChpPT09ZS5lbXB0eUFycmF5P2k9W01lXTppLnB1c2goTWUpKX19cmV0dXJuIGl9ZnVuY3Rpb24gX2cocixpKXtYcihyLGUuRGlhZ25vc3RpY3MuVHlwZV8wX3JlY3Vyc2l2ZWx5X3JlZmVyZW5jZXNfaXRzZWxmX2FzX2FfYmFzZV90eXBlLE90KGksdm9pZCAwLDIpKX1mdW5jdGlvbiBRYyhyKXtpZighci5iYXNlVHlwZXNSZXNvbHZlZCl7aWYoeXUociw3KSYmKHIub2JqZWN0RmxhZ3MmOD9yLnJlc29sdmVkQmFzZVR5cGVzPVtMbShyKV06ci5zeW1ib2wuZmxhZ3MmOTY/KHIuc3ltYm9sLmZsYWdzJjMyJiZVcChyKSxyLnN5bWJvbC5mbGFncyY2NCYmSXQocikpOmUuRGVidWcuZmFpbChcInR5cGUgbXVzdCBiZSBjbGFzcyBvciBpbnRlcmZhY2VcIiksIWZpKCkmJnIuc3ltYm9sLmRlY2xhcmF0aW9ucykpZm9yKHZhciBpPTAsdD1yLnN5bWJvbC5kZWNsYXJhdGlvbnM7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV07KG8ua2luZD09PTI1N3x8by5raW5kPT09MjU4KSYmX2cobyxyKX1yLmJhc2VUeXBlc1Jlc29sdmVkPSEwfXJldHVybiByLnJlc29sdmVkQmFzZVR5cGVzfWZ1bmN0aW9uIExtKHIpe3ZhciBpPWUuc2FtZU1hcChyLnR5cGVQYXJhbWV0ZXJzLGZ1bmN0aW9uKHQsbyl7cmV0dXJuIHIuZWxlbWVudEZsYWdzW29dJjg/SmModCxudCk6dH0pO3JldHVybiBacyhQYShpfHxlLmVtcHR5QXJyYXkpLHIucmVhZG9ubHkpfWZ1bmN0aW9uIFVwKHIpe3IucmVzb2x2ZWRCYXNlVHlwZXM9ZS5yZXNvbHZpbmdFbXB0eUFycmF5O3ZhciBpPSRzKEJsKHIpKTtpZighKGkuZmxhZ3MmMjYyMTQ0MSkpcmV0dXJuIHIucmVzb2x2ZWRCYXNlVHlwZXM9ZS5lbXB0eUFycmF5O3ZhciB0PWZnKHIpLG8scz1pLnN5bWJvbD9nbyhpLnN5bWJvbCk6dm9pZCAwO2lmKGkuc3ltYm9sJiZpLnN5bWJvbC5mbGFncyYzMiYmUm0ocykpbz1seCh0LGkuc3ltYm9sKTtlbHNlIGlmKGkuZmxhZ3MmMSlvPWk7ZWxzZXt2YXIgdT1YZyhpLHQudHlwZUFyZ3VtZW50cyx0KTtpZighdS5sZW5ndGgpcmV0dXJuIFhyKHQuZXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLk5vX2Jhc2VfY29uc3RydWN0b3JfaGFzX3RoZV9zcGVjaWZpZWRfbnVtYmVyX29mX3R5cGVfYXJndW1lbnRzKSxyLnJlc29sdmVkQmFzZVR5cGVzPWUuZW1wdHlBcnJheTtvPXlvKHVbMF0pfWlmKG5uKG8pKXJldHVybiByLnJlc29sdmVkQmFzZVR5cGVzPWUuZW1wdHlBcnJheTt2YXIgaD1idShvKTtpZighZmYoaCkpe3ZhciB6PWVpKHZvaWQgMCxvKSxtZT1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKHosZS5EaWFnbm9zdGljcy5CYXNlX2NvbnN0cnVjdG9yX3JldHVybl90eXBlXzBfaXNfbm90X2FuX29iamVjdF90eXBlX29yX2ludGVyc2VjdGlvbl9vZl9vYmplY3RfdHlwZXNfd2l0aF9zdGF0aWNhbGx5X2tub3duX21lbWJlcnMsT3QoaCkpO3JldHVybiBybi5hZGQoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUZyb21NZXNzYWdlQ2hhaW4odC5leHByZXNzaW9uLG1lKSksci5yZXNvbHZlZEJhc2VUeXBlcz1lLmVtcHR5QXJyYXl9cmV0dXJuIHI9PT1ofHxsZihoLHIpPyhYcihyLnN5bWJvbC52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuVHlwZV8wX3JlY3Vyc2l2ZWx5X3JlZmVyZW5jZXNfaXRzZWxmX2FzX2FfYmFzZV90eXBlLE90KHIsdm9pZCAwLDIpKSxyLnJlc29sdmVkQmFzZVR5cGVzPWUuZW1wdHlBcnJheSk6KHIucmVzb2x2ZWRCYXNlVHlwZXM9PT1lLnJlc29sdmluZ0VtcHR5QXJyYXkmJihyLm1lbWJlcnM9dm9pZCAwKSxyLnJlc29sdmVkQmFzZVR5cGVzPVtoXSl9ZnVuY3Rpb24gUm0ocil7dmFyIGk9ci5vdXRlclR5cGVQYXJhbWV0ZXJzO2lmKGkpe3ZhciB0PWkubGVuZ3RoLTEsbz14byhyKTtyZXR1cm4gaVt0XS5zeW1ib2whPT1vW3RdLnN5bWJvbH1yZXR1cm4hMH1mdW5jdGlvbiBmZihyKXtpZihyLmZsYWdzJjI2MjE0NCl7dmFyIGk9dWMocik7aWYoaSlyZXR1cm4gZmYoaSl9cmV0dXJuISEoci5mbGFncyY2NzYzMzE1MyYmIUJjKHIpfHxyLmZsYWdzJjIwOTcxNTImJmUuZXZlcnkoci50eXBlcyxmZikpfWZ1bmN0aW9uIEl0KHIpe2lmKHIucmVzb2x2ZWRCYXNlVHlwZXM9ci5yZXNvbHZlZEJhc2VUeXBlc3x8ZS5lbXB0eUFycmF5LHIuc3ltYm9sLmRlY2xhcmF0aW9ucylmb3IodmFyIGk9MCx0PXIuc3ltYm9sLmRlY2xhcmF0aW9ucztpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXTtpZihvLmtpbmQ9PT0yNTgmJmUuZ2V0SW50ZXJmYWNlQmFzZVR5cGVOb2RlcyhvKSlmb3IodmFyIHM9MCx1PWUuZ2V0SW50ZXJmYWNlQmFzZVR5cGVOb2RlcyhvKTtzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXSx6PWJ1KFZhKGgpKTtubih6KXx8KGZmKHopP3IhPT16JiYhbGYoeixyKT9yLnJlc29sdmVkQmFzZVR5cGVzPT09ZS5lbXB0eUFycmF5P3IucmVzb2x2ZWRCYXNlVHlwZXM9W3pdOnIucmVzb2x2ZWRCYXNlVHlwZXMucHVzaCh6KTpfZyhvLHIpOlhyKGgsZS5EaWFnbm9zdGljcy5Bbl9pbnRlcmZhY2VfY2FuX29ubHlfZXh0ZW5kX2FuX29iamVjdF90eXBlX29yX2ludGVyc2VjdGlvbl9vZl9vYmplY3RfdHlwZXNfd2l0aF9zdGF0aWNhbGx5X2tub3duX21lbWJlcnMpKX19fWZ1bmN0aW9uIE1hKHIpe2lmKCFyLmRlY2xhcmF0aW9ucylyZXR1cm4hMDtmb3IodmFyIGk9MCx0PXIuZGVjbGFyYXRpb25zO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldO2lmKG8ua2luZD09PTI1OCl7aWYoby5mbGFncyYxMjgpcmV0dXJuITE7dmFyIHM9ZS5nZXRJbnRlcmZhY2VCYXNlVHlwZU5vZGVzKG8pO2lmKHMpZm9yKHZhciB1PTAsaD1zO3U8aC5sZW5ndGg7dSsrKXt2YXIgej1oW3VdO2lmKGUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbih6LmV4cHJlc3Npb24pKXt2YXIgbWU9RHMoei5leHByZXNzaW9uLDc4ODk2OCwhMCk7aWYoIW1lfHwhKG1lLmZsYWdzJjY0KXx8YWEobWUpLnRoaXNUeXBlKXJldHVybiExfX19fXJldHVybiEwfWZ1bmN0aW9uIGFhKHIpe3ZhciBpPUFhKHIpLHQ9aTtpZighaS5kZWNsYXJlZFR5cGUpe3ZhciBvPXIuZmxhZ3MmMzI/MToyLHM9aVMocixyLnZhbHVlRGVjbGFyYXRpb24mJkY3KHIudmFsdWVEZWNsYXJhdGlvbikpO3MmJihyPWk9cyk7dmFyIHU9dC5kZWNsYXJlZFR5cGU9aS5kZWNsYXJlZFR5cGU9dHUobyxyKSxoPUdnKHIpLHo9QWYocik7KGh8fHp8fG89PT0xfHwhTWEocikpJiYodS5vYmplY3RGbGFnc3w9NCx1LnR5cGVQYXJhbWV0ZXJzPWUuY29uY2F0ZW5hdGUoaCx6KSx1Lm91dGVyVHlwZVBhcmFtZXRlcnM9aCx1LmxvY2FsVHlwZVBhcmFtZXRlcnM9eix1Lmluc3RhbnRpYXRpb25zPW5ldyBlLk1hcCx1Lmluc3RhbnRpYXRpb25zLnNldChTdSh1LnR5cGVQYXJhbWV0ZXJzKSx1KSx1LnRhcmdldD11LHUucmVzb2x2ZWRUeXBlQXJndW1lbnRzPXUudHlwZVBhcmFtZXRlcnMsdS50aGlzVHlwZT1IYyhyKSx1LnRoaXNUeXBlLmlzVGhpc1R5cGU9ITAsdS50aGlzVHlwZS5jb25zdHJhaW50PXUpfXJldHVybiBpLmRlY2xhcmVkVHlwZX1mdW5jdGlvbiBKYShyKXt2YXIgaSx0PUFhKHIpO2lmKCF0LmRlY2xhcmVkVHlwZSl7aWYoIXl1KHIsMikpcmV0dXJuIFBlO3ZhciBvPWUuRGVidWcuY2hlY2tEZWZpbmVkKChpPXIuZGVjbGFyYXRpb25zKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkuZmluZChlLmlzVHlwZUFsaWFzKSxcIlR5cGUgYWxpYXMgc3ltYm9sIHdpdGggbm8gdmFsaWQgZGVjbGFyYXRpb24gZm91bmRcIikscz1lLmlzSlNEb2NUeXBlQWxpYXMobyk/by50eXBlRXhwcmVzc2lvbjpvLnR5cGUsdT1zP1ZhKHMpOlBlO2lmKGZpKCkpe3ZhciBoPUFmKHIpO2gmJih0LnR5cGVQYXJhbWV0ZXJzPWgsdC5pbnN0YW50aWF0aW9ucz1uZXcgZS5NYXAsdC5pbnN0YW50aWF0aW9ucy5zZXQoU3UoaCksdSkpfWVsc2UgdT1QZSxvLmtpbmQ9PT0zMzk/WHIoby50eXBlRXhwcmVzc2lvbi50eXBlLGUuRGlhZ25vc3RpY3MuVHlwZV9hbGlhc18wX2NpcmN1bGFybHlfcmVmZXJlbmNlc19pdHNlbGYsdG4ocikpOlhyKGUuaXNOYW1lZERlY2xhcmF0aW9uKG8pP28ubmFtZTpvfHxvLGUuRGlhZ25vc3RpY3MuVHlwZV9hbGlhc18wX2NpcmN1bGFybHlfcmVmZXJlbmNlc19pdHNlbGYsdG4ocikpO3QuZGVjbGFyZWRUeXBlPXV9cmV0dXJuIHQuZGVjbGFyZWRUeXBlfWZ1bmN0aW9uIF9uKHIpe3JldHVybiBlLmlzU3RyaW5nTGl0ZXJhbExpa2Uocik/ITA6ci5raW5kPT09MjIxP19uKHIubGVmdCkmJl9uKHIucmlnaHQpOiExfWZ1bmN0aW9uIHJvKHIpe3ZhciBpPXIuaW5pdGlhbGl6ZXI7aWYoIWkpcmV0dXJuIShyLmZsYWdzJjE2Nzc3MjE2KTtzd2l0Y2goaS5raW5kKXtjYXNlIDEwOmNhc2UgODpjYXNlIDE0OnJldHVybiEwO2Nhc2UgMjE5OnJldHVybiBpLm9wZXJhdG9yPT09NDAmJmkub3BlcmFuZC5raW5kPT09ODtjYXNlIDc5OnJldHVybiBlLm5vZGVJc01pc3NpbmcoaSl8fCEhRXQoci5wYXJlbnQpLmV4cG9ydHMuZ2V0KGkuZXNjYXBlZFRleHQpO2Nhc2UgMjIxOnJldHVybiBfbihpKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBhcyhyKXt2YXIgaT1BYShyKTtpZihpLmVudW1LaW5kIT09dm9pZCAwKXJldHVybiBpLmVudW1LaW5kO3ZhciB0PSExO2lmKHIuZGVjbGFyYXRpb25zKWZvcih2YXIgbz0wLHM9ci5kZWNsYXJhdGlvbnM7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107aWYodS5raW5kPT09MjYwKWZvcih2YXIgaD0wLHo9dS5tZW1iZXJzO2g8ei5sZW5ndGg7aCsrKXt2YXIgbWU9eltoXTtpZihtZS5pbml0aWFsaXplciYmZS5pc1N0cmluZ0xpdGVyYWxMaWtlKG1lLmluaXRpYWxpemVyKSlyZXR1cm4gaS5lbnVtS2luZD0xO3JvKG1lKXx8KHQ9ITApfX1yZXR1cm4gaS5lbnVtS2luZD10PzA6MX1mdW5jdGlvbiBjYyhyKXtyZXR1cm4gci5mbGFncyYxMDI0JiYhKHIuZmxhZ3MmMTA0ODU3Nik/Z28oWXMoci5zeW1ib2wpKTpyfWZ1bmN0aW9uIFNjKHIpe3ZhciBpPUFhKHIpO2lmKGkuZGVjbGFyZWRUeXBlKXJldHVybiBpLmRlY2xhcmVkVHlwZTtpZihhcyhyKT09PTEpe1JlKys7dmFyIHQ9W107aWYoci5kZWNsYXJhdGlvbnMpZm9yKHZhciBvPTAscz1yLmRlY2xhcmF0aW9ucztvPHMubGVuZ3RoO28rKyl7dmFyIHU9c1tvXTtpZih1LmtpbmQ9PT0yNjApZm9yKHZhciBoPTAsej11Lm1lbWJlcnM7aDx6Lmxlbmd0aDtoKyspe3ZhciBtZT16W2hdLE1lPUgwKG1lKSwkZT1TZyhOSShNZSE9PXZvaWQgMD9NZTowLFJlLEV0KG1lKSkpO0FhKEV0KG1lKSkuZGVjbGFyZWRUeXBlPSRlLHQucHVzaChqYygkZSkpfX1pZih0Lmxlbmd0aCl7dmFyIHRyPVBhKHQsMSxyLHZvaWQgMCk7cmV0dXJuIHRyLmZsYWdzJjEwNDg1NzYmJih0ci5mbGFnc3w9MTAyNCx0ci5zeW1ib2w9ciksaS5kZWNsYXJlZFR5cGU9dHJ9fXZhciBkcj1tYygzMik7cmV0dXJuIGRyLnN5bWJvbD1yLGkuZGVjbGFyZWRUeXBlPWRyfWZ1bmN0aW9uIGh1KHIpe3ZhciBpPUFhKHIpO2lmKCFpLmRlY2xhcmVkVHlwZSl7dmFyIHQ9U2MoWXMocikpO2kuZGVjbGFyZWRUeXBlfHwoaS5kZWNsYXJlZFR5cGU9dCl9cmV0dXJuIGkuZGVjbGFyZWRUeXBlfWZ1bmN0aW9uIEpzKHIpe3ZhciBpPUFhKHIpO3JldHVybiBpLmRlY2xhcmVkVHlwZXx8KGkuZGVjbGFyZWRUeXBlPUhjKHIpKX1mdW5jdGlvbiBRZihyKXt2YXIgaT1BYShyKTtyZXR1cm4gaS5kZWNsYXJlZFR5cGV8fChpLmRlY2xhcmVkVHlwZT1nbyhQcyhyKSkpfWZ1bmN0aW9uIGdvKHIpe3JldHVybiBWZChyKXx8UGV9ZnVuY3Rpb24gVmQocil7aWYoci5mbGFncyY5NilyZXR1cm4gYWEocik7aWYoci5mbGFncyY1MjQyODgpcmV0dXJuIEphKHIpO2lmKHIuZmxhZ3MmMjYyMTQ0KXJldHVybiBKcyhyKTtpZihyLmZsYWdzJjM4NClyZXR1cm4gU2Mocik7aWYoci5mbGFncyY4KXJldHVybiBodShyKTtpZihyLmZsYWdzJjIwOTcxNTIpcmV0dXJuIFFmKHIpfWZ1bmN0aW9uIFhfKHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMTMwOmNhc2UgMTU1OmNhc2UgMTUwOmNhc2UgMTQ3OmNhc2UgMTU4OmNhc2UgMTMzOmNhc2UgMTUxOmNhc2UgMTQ4OmNhc2UgMTE0OmNhc2UgMTUzOmNhc2UgMTQzOmNhc2UgMTk2OnJldHVybiEwO2Nhc2UgMTgzOnJldHVybiBYXyhyLmVsZW1lbnRUeXBlKTtjYXNlIDE3ODpyZXR1cm4hci50eXBlQXJndW1lbnRzfHxyLnR5cGVBcmd1bWVudHMuZXZlcnkoWF8pfXJldHVybiExfWZ1bmN0aW9uIFNkKHIpe3ZhciBpPWUuZ2V0RWZmZWN0aXZlQ29uc3RyYWludE9mVHlwZVBhcmFtZXRlcihyKTtyZXR1cm4haXx8WF8oaSl9ZnVuY3Rpb24gWWcocil7dmFyIGk9ZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUocik7cmV0dXJuIGk/WF8oaSk6IWUuaGFzSW5pdGlhbGl6ZXIocil9ZnVuY3Rpb24gTjEocil7dmFyIGk9ZS5nZXRFZmZlY3RpdmVSZXR1cm5UeXBlTm9kZShyKSx0PWUuZ2V0RWZmZWN0aXZlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9ucyhyKTtyZXR1cm4oci5raW5kPT09MTcxfHwhIWkmJlhfKGkpKSYmci5wYXJhbWV0ZXJzLmV2ZXJ5KFlnKSYmdC5ldmVyeShTZCl9ZnVuY3Rpb24gUDEocil7aWYoci5kZWNsYXJhdGlvbnMmJnIuZGVjbGFyYXRpb25zLmxlbmd0aD09PTEpe3ZhciBpPXIuZGVjbGFyYXRpb25zWzBdO2lmKGkpc3dpdGNoKGkua2luZCl7Y2FzZSAxNjc6Y2FzZSAxNjY6cmV0dXJuIFlnKGkpO2Nhc2UgMTY5OmNhc2UgMTY4OmNhc2UgMTcxOmNhc2UgMTcyOmNhc2UgMTczOnJldHVybiBOMShpKX19cmV0dXJuITF9ZnVuY3Rpb24gWXkocixpLHQpe2Zvcih2YXIgbz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCkscz0wLHU9cjtzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXTtvLnNldChoLmVzY2FwZWROYW1lLHQmJlAxKGgpP2g6QUQoaCxpKSl9cmV0dXJuIG99ZnVuY3Rpb24gQm0ocixpKXtmb3IodmFyIHQ9MCxvPWk7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07IXIuaGFzKHMuZXNjYXBlZE5hbWUpJiYhJHkocykmJnIuc2V0KHMuZXNjYXBlZE5hbWUscyl9fWZ1bmN0aW9uICR5KHIpe3JldHVybiEhci52YWx1ZURlY2xhcmF0aW9uJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXJDbGFzc0VsZW1lbnREZWNsYXJhdGlvbihyLnZhbHVlRGVjbGFyYXRpb24pJiZlLmlzU3RhdGljKHIudmFsdWVEZWNsYXJhdGlvbil9ZnVuY3Rpb24gTHYocil7aWYoIXIuZGVjbGFyZWRQcm9wZXJ0aWVzKXt2YXIgaT1yLnN5bWJvbCx0PU5mKGkpO3IuZGVjbGFyZWRQcm9wZXJ0aWVzPXRmKHQpLHIuZGVjbGFyZWRDYWxsU2lnbmF0dXJlcz1lLmVtcHR5QXJyYXksci5kZWNsYXJlZENvbnN0cnVjdFNpZ25hdHVyZXM9ZS5lbXB0eUFycmF5LHIuZGVjbGFyZWRJbmRleEluZm9zPWUuZW1wdHlBcnJheSxyLmRlY2xhcmVkQ2FsbFNpZ25hdHVyZXM9U18odC5nZXQoXCJfX2NhbGxcIikpLHIuZGVjbGFyZWRDb25zdHJ1Y3RTaWduYXR1cmVzPVNfKHQuZ2V0KFwiX19uZXdcIikpLHIuZGVjbGFyZWRJbmRleEluZm9zPWF4KGkpfXJldHVybiByfWZ1bmN0aW9uIF9mKHIpe3JldHVybiEhKHIuZmxhZ3MmODU3Nil9ZnVuY3Rpb24gUnYocil7aWYoIWUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShyKSYmIWUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihyKSlyZXR1cm4hMTt2YXIgaT1lLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUocik/ci5leHByZXNzaW9uOnIuYXJndW1lbnRFeHByZXNzaW9uO3JldHVybiBlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24oaSkmJl9mKGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShyKT90XyhyKTpPcyhpKSl9ZnVuY3Rpb24gcGcocil7cmV0dXJuIHIuY2hhckNvZGVBdCgwKT09PTk1JiZyLmNoYXJDb2RlQXQoMSk9PT05NSYmci5jaGFyQ29kZUF0KDIpPT09NjR9ZnVuY3Rpb24gJGcocil7dmFyIGk9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihyKTtyZXR1cm4hIWkmJlJ2KGkpfWZ1bmN0aW9uIFRkKHIpe3JldHVybiFlLmhhc0R5bmFtaWNOYW1lKHIpfHwkZyhyKX1mdW5jdGlvbiBJMShyKXtyZXR1cm4gZS5pc0R5bmFtaWNOYW1lKHIpJiYhUnYocil9ZnVuY3Rpb24gcGYocil7cmV0dXJuIHIuZmxhZ3MmODE5Mj9yLmVzY2FwZWROYW1lOnIuZmxhZ3MmMzg0P2UuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFwiXCIrci52YWx1ZSk6ZS5EZWJ1Zy5mYWlsKCl9ZnVuY3Rpb24gQnYocixpLHQpe2UuRGVidWcuYXNzZXJ0KCEhKGUuZ2V0Q2hlY2tGbGFncyhyKSY0MDk2KSxcIkV4cGVjdGVkIGEgbGF0ZS1ib3VuZCBzeW1ib2wuXCIpLHIuZmxhZ3N8PXQsQWEoaS5zeW1ib2wpLmxhdGVTeW1ib2w9cixyLmRlY2xhcmF0aW9ucz9pLnN5bWJvbC5pc1JlcGxhY2VhYmxlQnlNZXRob2R8fHIuZGVjbGFyYXRpb25zLnB1c2goaSk6ci5kZWNsYXJhdGlvbnM9W2ldLHQmMTExNTUxJiYoIXIudmFsdWVEZWNsYXJhdGlvbnx8ci52YWx1ZURlY2xhcmF0aW9uLmtpbmQhPT1pLmtpbmQpJiYoci52YWx1ZURlY2xhcmF0aW9uPWkpfWZ1bmN0aW9uIFp5KHIsaSx0LG8pe2UuRGVidWcuYXNzZXJ0KCEhby5zeW1ib2wsXCJUaGUgbWVtYmVyIGlzIGV4cGVjdGVkIHRvIGhhdmUgYSBzeW1ib2wuXCIpO3ZhciBzPXZhKG8pO2lmKCFzLnJlc29sdmVkU3ltYm9sKXtzLnJlc29sdmVkU3ltYm9sPW8uc3ltYm9sO3ZhciB1PWUuaXNCaW5hcnlFeHByZXNzaW9uKG8pP28ubGVmdDpvLm5hbWUsaD1lLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24odSk/T3ModS5hcmd1bWVudEV4cHJlc3Npb24pOnRfKHUpO2lmKF9mKGgpKXt2YXIgej1wZihoKSxtZT1vLnN5bWJvbC5mbGFncyxNZT10LmdldCh6KTtNZXx8dC5zZXQoeixNZT1vbygwLHosNDA5NikpO3ZhciAkZT1pJiZpLmdldCh6KTtpZihNZS5mbGFncyZJXyhtZSl8fCRlKXt2YXIgdHI9JGU/ZS5jb25jYXRlbmF0ZSgkZS5kZWNsYXJhdGlvbnMsTWUuZGVjbGFyYXRpb25zKTpNZS5kZWNsYXJhdGlvbnMsZHI9IShoLmZsYWdzJjgxOTIpJiZlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHopfHxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHUpO2UuZm9yRWFjaCh0cixmdW5jdGlvbihEcil7cmV0dXJuIFhyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oRHIpfHxEcixlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfd2FzX2Fsc29fZGVjbGFyZWRfaGVyZSxkcil9KSxYcih1fHxvLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX3Byb3BlcnR5XzAsZHIpLE1lPW9vKDAseiw0MDk2KX1yZXR1cm4gTWUubmFtZVR5cGU9aCxCdihNZSxvLG1lKSxNZS5wYXJlbnQ/ZS5EZWJ1Zy5hc3NlcnQoTWUucGFyZW50PT09cixcIkV4aXN0aW5nIHN5bWJvbCBwYXJlbnQgc2hvdWxkIG1hdGNoIG5ldyBvbmVcIik6TWUucGFyZW50PXIscy5yZXNvbHZlZFN5bWJvbD1NZX19cmV0dXJuIHMucmVzb2x2ZWRTeW1ib2x9ZnVuY3Rpb24gSnYocixpKXt2YXIgdD1BYShyKTtpZighdFtpXSl7dmFyIG89aT09PVwicmVzb2x2ZWRFeHBvcnRzXCIscz1vP3IuZmxhZ3MmMTUzNj9JdShyKTpyLmV4cG9ydHM6ci5tZW1iZXJzO3RbaV09c3x8d2U7Zm9yKHZhciB1PWUuY3JlYXRlU3ltYm9sVGFibGUoKSxoPTAsej1yLmRlY2xhcmF0aW9uc3x8ZS5lbXB0eUFycmF5O2g8ei5sZW5ndGg7aCsrKXt2YXIgbWU9eltoXSxNZT1lLmdldE1lbWJlcnNPZkRlY2xhcmF0aW9uKG1lKTtpZihNZSlmb3IodmFyICRlPTAsdHI9TWU7JGU8dHIubGVuZ3RoOyRlKyspe3ZhciBkcj10clskZV07bz09PWUuaGFzU3RhdGljTW9kaWZpZXIoZHIpJiYkZyhkcikmJlp5KHIscyx1LGRyKX19dmFyIERyPXIuYXNzaWdubWVudERlY2xhcmF0aW9uTWVtYmVycztpZihEcilmb3IodmFyIFFyPWUuYXJyYXlGcm9tKERyLnZhbHVlcygpKSxsaT0wLFRpPVFyO2xpPFRpLmxlbmd0aDtsaSsrKXt2YXIgZHI9VGlbbGldLENpPWUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChkciksJGk9Q2k9PT0zfHxlLmlzQmluYXJ5RXhwcmVzc2lvbihkcikmJnMwKGRyLENpKXx8Q2k9PT05fHxDaT09PTY7bz09PSEkaSYmJGcoZHIpJiZaeShyLHMsdSxkcil9dFtpXT1ocChzLHUpfHx3ZX1yZXR1cm4gdFtpXX1mdW5jdGlvbiBOZihyKXtyZXR1cm4gci5mbGFncyY2MjU2P0p2KHIsXCJyZXNvbHZlZE1lbWJlcnNcIik6ci5tZW1iZXJzfHx3ZX1mdW5jdGlvbiBkZyhyKXtpZihyLmZsYWdzJjEwNjUwMCYmci5lc2NhcGVkTmFtZT09PVwiX19jb21wdXRlZFwiKXt2YXIgaT1BYShyKTtpZighaS5sYXRlU3ltYm9sJiZlLnNvbWUoci5kZWNsYXJhdGlvbnMsJGcpKXt2YXIgdD1zbyhyLnBhcmVudCk7ZS5zb21lKHIuZGVjbGFyYXRpb25zLGUuaGFzU3RhdGljTW9kaWZpZXIpP2RjKHQpOk5mKHQpfXJldHVybiBpLmxhdGVTeW1ib2x8fChpLmxhdGVTeW1ib2w9cil9cmV0dXJuIHJ9ZnVuY3Rpb24gUmMocixpLHQpe2lmKGUuZ2V0T2JqZWN0RmxhZ3MocikmNCl7dmFyIG89ci50YXJnZXQscz14byhyKTtpZihlLmxlbmd0aChvLnR5cGVQYXJhbWV0ZXJzKT09PWUubGVuZ3RoKHMpKXt2YXIgdT1ZZihvLGUuY29uY2F0ZW5hdGUocyxbaXx8by50aGlzVHlwZV0pKTtyZXR1cm4gdD8kcyh1KTp1fX1lbHNlIGlmKHIuZmxhZ3MmMjA5NzE1Mil7dmFyIGg9ZS5zYW1lTWFwKHIudHlwZXMsZnVuY3Rpb24oeil7cmV0dXJuIFJjKHosaSx0KX0pO3JldHVybiBoIT09ci50eXBlcz9EbyhoKTpyfXJldHVybiB0PyRzKHIpOnJ9ZnVuY3Rpb24ganYocixpLHQsbyl7dmFyIHMsdSxoLHosbWU7ZS5yYW5nZUVxdWFscyh0LG8sMCx0Lmxlbmd0aCk/KHU9aS5zeW1ib2w/TmYoaS5zeW1ib2wpOmUuY3JlYXRlU3ltYm9sVGFibGUoaS5kZWNsYXJlZFByb3BlcnRpZXMpLGg9aS5kZWNsYXJlZENhbGxTaWduYXR1cmVzLHo9aS5kZWNsYXJlZENvbnN0cnVjdFNpZ25hdHVyZXMsbWU9aS5kZWNsYXJlZEluZGV4SW5mb3MpOihzPVVjKHQsbyksdT1ZeShpLmRlY2xhcmVkUHJvcGVydGllcyxzLHQubGVuZ3RoPT09MSksaD1BaChpLmRlY2xhcmVkQ2FsbFNpZ25hdHVyZXMscyksej1BaChpLmRlY2xhcmVkQ29uc3RydWN0U2lnbmF0dXJlcyxzKSxtZT1vRShpLmRlY2xhcmVkSW5kZXhJbmZvcyxzKSk7dmFyIE1lPVFjKGkpO2lmKE1lLmxlbmd0aCl7aS5zeW1ib2wmJnU9PT1OZihpLnN5bWJvbCkmJih1PWUuY3JlYXRlU3ltYm9sVGFibGUoaS5kZWNsYXJlZFByb3BlcnRpZXMpKSxPYyhyLHUsaCx6LG1lKTtmb3IodmFyICRlPWUubGFzdE9yVW5kZWZpbmVkKG8pLHRyPTAsZHI9TWU7dHI8ZHIubGVuZ3RoO3RyKyspe3ZhciBEcj1kclt0cl0sUXI9JGU/UmModW4oRHIscyksJGUpOkRyO0JtKHUsdW8oUXIpKSxoPWUuY29uY2F0ZW5hdGUoaCxvdChRciwwKSksej1lLmNvbmNhdGVuYXRlKHosb3QoUXIsMSkpO3ZhciBsaT1RciE9PU9lP0huKFFyKTpbemwoTGksT2UsITEpXTttZT1lLmNvbmNhdGVuYXRlKG1lLGUuZmlsdGVyKGxpLGZ1bmN0aW9uKFRpKXtyZXR1cm4heGEobWUsVGkua2V5VHlwZSl9KSl9fU9jKHIsdSxoLHosbWUpfWZ1bmN0aW9uIGVoKHIpe2p2KHIsTHYociksZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSl9ZnVuY3Rpb24gcmgocil7dmFyIGk9THYoci50YXJnZXQpLHQ9ZS5jb25jYXRlbmF0ZShpLnR5cGVQYXJhbWV0ZXJzLFtpLnRoaXNUeXBlXSksbz14byhyKSxzPW8ubGVuZ3RoPT09dC5sZW5ndGg/bzplLmNvbmNhdGVuYXRlKG8sW3JdKTtqdihyLGksdCxzKX1mdW5jdGlvbiBGdShyLGksdCxvLHMsdSxoLHope3ZhciBtZT1uZXcgWihEaSx6KTtyZXR1cm4gbWUuZGVjbGFyYXRpb249cixtZS50eXBlUGFyYW1ldGVycz1pLG1lLnBhcmFtZXRlcnM9byxtZS50aGlzUGFyYW1ldGVyPXQsbWUucmVzb2x2ZWRSZXR1cm5UeXBlPXMsbWUucmVzb2x2ZWRUeXBlUHJlZGljYXRlPXUsbWUubWluQXJndW1lbnRDb3VudD1oLG1lLnJlc29sdmVkTWluQXJndW1lbnRDb3VudD12b2lkIDAsbWUudGFyZ2V0PXZvaWQgMCxtZS5tYXBwZXI9dm9pZCAwLG1lLmNvbXBvc2l0ZVNpZ25hdHVyZXM9dm9pZCAwLG1lLmNvbXBvc2l0ZUtpbmQ9dm9pZCAwLG1lfWZ1bmN0aW9uIHhkKHIpe3ZhciBpPUZ1KHIuZGVjbGFyYXRpb24sci50eXBlUGFyYW1ldGVycyxyLnRoaXNQYXJhbWV0ZXIsci5wYXJhbWV0ZXJzLHZvaWQgMCx2b2lkIDAsci5taW5Bcmd1bWVudENvdW50LHIuZmxhZ3MmMzkpO3JldHVybiBpLnRhcmdldD1yLnRhcmdldCxpLm1hcHBlcj1yLm1hcHBlcixpLmNvbXBvc2l0ZVNpZ25hdHVyZXM9ci5jb21wb3NpdGVTaWduYXR1cmVzLGkuY29tcG9zaXRlS2luZD1yLmNvbXBvc2l0ZUtpbmQsaX1mdW5jdGlvbiBVdihyLGkpe3ZhciB0PXhkKHIpO3JldHVybiB0LmNvbXBvc2l0ZVNpZ25hdHVyZXM9aSx0LmNvbXBvc2l0ZUtpbmQ9MTA0ODU3Nix0LnRhcmdldD12b2lkIDAsdC5tYXBwZXI9dm9pZCAwLHR9ZnVuY3Rpb24gdzEocixpKXtpZigoci5mbGFncyYyNCk9PT1pKXJldHVybiByO3Iub3B0aW9uYWxDYWxsU2lnbmF0dXJlQ2FjaGV8fChyLm9wdGlvbmFsQ2FsbFNpZ25hdHVyZUNhY2hlPXt9KTt2YXIgdD1pPT09OD9cImlubmVyXCI6XCJvdXRlclwiO3JldHVybiByLm9wdGlvbmFsQ2FsbFNpZ25hdHVyZUNhY2hlW3RdfHwoci5vcHRpb25hbENhbGxTaWduYXR1cmVDYWNoZVt0XT1paChyLGkpKX1mdW5jdGlvbiBpaChyLGkpe2UuRGVidWcuYXNzZXJ0KGk9PT04fHxpPT09MTYsXCJBbiBvcHRpb25hbCBjYWxsIHNpZ25hdHVyZSBjYW4gZWl0aGVyIGJlIGZvciBhbiBpbm5lciBjYWxsIGNoYWluIG9yIGFuIG91dGVyIGNhbGwgY2hhaW4sIGJ1dCBub3QgYm90aC5cIik7dmFyIHQ9eGQocik7cmV0dXJuIHQuZmxhZ3N8PWksdH1mdW5jdGlvbiBKbShyLGkpe2lmKEgocikpe3ZhciB0PXIucGFyYW1ldGVycy5sZW5ndGgtMSxvPUp0KHIucGFyYW1ldGVyc1t0XSk7aWYoWW4obykpcmV0dXJuW3Mobyx0KV07aWYoIWkmJm8uZmxhZ3MmMTA0ODU3NiYmZS5ldmVyeShvLnR5cGVzLFluKSlyZXR1cm4gZS5tYXAoby50eXBlcyxmdW5jdGlvbih1KXtyZXR1cm4gcyh1LHQpfSl9cmV0dXJuW3IucGFyYW1ldGVyc107ZnVuY3Rpb24gcyh1LGgpe3ZhciB6PXhvKHUpLG1lPXUudGFyZ2V0LmxhYmVsZWRFbGVtZW50RGVjbGFyYXRpb25zLE1lPWUubWFwKHosZnVuY3Rpb24oJGUsdHIpe3ZhciBkcj0hIW1lJiZFMChtZVt0cl0pLERyPWRyfHx2bShyLGgrdHIsdSksUXI9dS50YXJnZXQuZWxlbWVudEZsYWdzW3RyXSxsaT1RciYxMj8zMjc2ODpRciYyPzE2Mzg0OjAsVGk9b28oMSxEcixsaSk7cmV0dXJuIFRpLnR5cGU9UXImND9acygkZSk6JGUsVGl9KTtyZXR1cm4gZS5jb25jYXRlbmF0ZShyLnBhcmFtZXRlcnMuc2xpY2UoMCxoKSxNZSl9fWZ1bmN0aW9uIHRoKHIpe3ZhciBpPUJsKHIpLHQ9b3QoaSwxKSxvPWUuZ2V0Q2xhc3NMaWtlRGVjbGFyYXRpb25PZlN5bWJvbChyLnN5bWJvbCkscz0hIW8mJmUuaGFzU3ludGFjdGljTW9kaWZpZXIobywxMjgpO2lmKHQubGVuZ3RoPT09MClyZXR1cm5bRnUodm9pZCAwLHIubG9jYWxUeXBlUGFyYW1ldGVycyx2b2lkIDAsZS5lbXB0eUFycmF5LHIsdm9pZCAwLDAscz80OjApXTtmb3IodmFyIHU9ZmcociksaD1lLmlzSW5KU0ZpbGUodSksej1iaCh1KSxtZT1lLmxlbmd0aCh6KSxNZT1bXSwkZT0wLHRyPXQ7JGU8dHIubGVuZ3RoOyRlKyspe3ZhciBkcj10clskZV0sRHI9VWwoZHIudHlwZVBhcmFtZXRlcnMpLFFyPWUubGVuZ3RoKGRyLnR5cGVQYXJhbWV0ZXJzKTtpZihofHxtZT49RHImJm1lPD1Rcil7dmFyIGxpPVFyP21oKGRyLHpwKHosZHIudHlwZVBhcmFtZXRlcnMsRHIsaCkpOnhkKGRyKTtsaS50eXBlUGFyYW1ldGVycz1yLmxvY2FsVHlwZVBhcmFtZXRlcnMsbGkucmVzb2x2ZWRSZXR1cm5UeXBlPXIsbGkuZmxhZ3M9cz9saS5mbGFnc3w0OmxpLmZsYWdzJi01LE1lLnB1c2gobGkpfX1yZXR1cm4gTWV9ZnVuY3Rpb24gZ2cocixpLHQsbyxzKXtmb3IodmFyIHU9MCxoPXI7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07aWYoX3koeixpLHQsbyxzLHQ/WEk6YXYpKXJldHVybiB6fX1mdW5jdGlvbiBPMShyLGksdCl7aWYoaS50eXBlUGFyYW1ldGVycyl7aWYodD4wKXJldHVybjtmb3IodmFyIG89MTtvPHIubGVuZ3RoO28rKylpZighZ2cocltvXSxpLCExLCExLCExKSlyZXR1cm47cmV0dXJuW2ldfWZvcih2YXIgcyxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciB1PW89PT10P2k6Z2cocltvXSxpLCEwLCExLCEwKTtpZighdSlyZXR1cm47cz1lLmFwcGVuZElmVW5pcXVlKHMsdSl9cmV0dXJuIHN9ZnVuY3Rpb24genYocil7Zm9yKHZhciBpLHQsbz0wO288ci5sZW5ndGg7bysrKXtpZihyW29dLmxlbmd0aD09PTApcmV0dXJuIGUuZW1wdHlBcnJheTtyW29dLmxlbmd0aD4xJiYodD10PT09dm9pZCAwP286LTEpO2Zvcih2YXIgcz0wLHU9cltvXTtzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXTtpZighaXx8IWdnKGksaCwhMSwhMSwhMCkpe3ZhciB6PU8xKHIsaCxvKTtpZih6KXt2YXIgbWU9aDtpZih6Lmxlbmd0aD4xKXt2YXIgTWU9aC50aGlzUGFyYW1ldGVyLCRlPWUuZm9yRWFjaCh6LGZ1bmN0aW9uKFppKXtyZXR1cm4gWmkudGhpc1BhcmFtZXRlcn0pO2lmKCRlKXt2YXIgdHI9RG8oZS5tYXBEZWZpbmVkKHosZnVuY3Rpb24oWmkpe3JldHVybiBaaS50aGlzUGFyYW1ldGVyJiZKdChaaS50aGlzUGFyYW1ldGVyKX0pKTtNZT1lZygkZSx0cil9bWU9VXYoaCx6KSxtZS50aGlzUGFyYW1ldGVyPU1lfShpfHwoaT1bXSkpLnB1c2gobWUpfX19fWlmKCFlLmxlbmd0aChpKSYmdCE9PS0xKXtmb3IodmFyIGRyPXJbdCE9PXZvaWQgMD90OjBdLERyPWRyLnNsaWNlKCksUXI9ZnVuY3Rpb24oWmkpe2lmKFppIT09ZHIpe3ZhciBxdD1aaVswXTtpZihlLkRlYnVnLmFzc2VydCghIXF0LFwiZ2V0VW5pb25TaWduYXR1cmVzIGJhaWxzIGVhcmx5IG9uIGVtcHR5IHNpZ25hdHVyZSBsaXN0cyBhbmQgc2hvdWxkIG5vdCBoYXZlIGVtcHR5IGxpc3RzIG9uIHNlY29uZCBwYXNzXCIpLERyPSEhcXQudHlwZVBhcmFtZXRlcnMmJmUuc29tZShEcixmdW5jdGlvbihOdCl7cmV0dXJuISFOdC50eXBlUGFyYW1ldGVycyYmIWFoKHF0LnR5cGVQYXJhbWV0ZXJzLE50LnR5cGVQYXJhbWV0ZXJzKX0pP3ZvaWQgMDplLm1hcChEcixmdW5jdGlvbihOdCl7cmV0dXJuIE0xKE50LHF0KX0pLCFEcilyZXR1cm5cImJyZWFrXCJ9fSxsaT0wLFRpPXI7bGk8VGkubGVuZ3RoO2xpKyspe3ZhciBDaT1UaVtsaV0sJGk9UXIoQ2kpO2lmKCRpPT09XCJicmVha1wiKWJyZWFrfWk9RHJ9cmV0dXJuIGl8fGUuZW1wdHlBcnJheX1mdW5jdGlvbiBhaChyLGkpe2lmKGUubGVuZ3RoKHIpIT09ZS5sZW5ndGgoaSkpcmV0dXJuITE7aWYoIXJ8fCFpKXJldHVybiEwO2Zvcih2YXIgdD1VYyhpLHIpLG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIHM9cltvXSx1PWlbb107aWYocyE9PXUmJiF3Zih0bShzKXx8Z3IsdW4odG0odSl8fGdyLHQpKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBGMShyLGksdCl7aWYoIXJ8fCFpKXJldHVybiByfHxpO3ZhciBvPURvKFtKdChyKSx1bihKdChpKSx0KV0pO3JldHVybiBlZyhyLG8pfWZ1bmN0aW9uIG5oKHIsaSx0KXtmb3IodmFyIG89V2Mocikscz1XYyhpKSx1PW8+PXM/cjppLGg9dT09PXI/aTpyLHo9dT09PXI/bzpzLG1lPVhsKHIpfHxYbChpKSxNZT1tZSYmIVhsKHUpLCRlPW5ldyBBcnJheSh6KyhNZT8xOjApKSx0cj0wO3RyPHo7dHIrKyl7dmFyIGRyPUxkKHUsdHIpO3U9PT1pJiYoZHI9dW4oZHIsdCkpO3ZhciBEcj1MZChoLHRyKXx8Z3I7aD09PWkmJihEcj11bihEcix0KSk7dmFyIFFyPURvKFtkcixEcl0pLGxpPW1lJiYhTWUmJnRyPT09ei0xLFRpPXRyPj1IbCh1KSYmdHI+PUhsKGgpLENpPXRyPj1vP3ZvaWQgMDp2bShyLHRyKSwkaT10cj49cz92b2lkIDA6dm0oaSx0ciksWmk9Q2k9PT0kaT9DaTpDaT8kaT92b2lkIDA6Q2k6JGkscXQ9b28oMXwoVGkmJiFsaT8xNjc3NzIxNjowKSxaaXx8XCJhcmdcIi5jb25jYXQodHIpKTtxdC50eXBlPWxpP1pzKFFyKTpRciwkZVt0cl09cXR9aWYoTWUpe3ZhciBOdD1vbygxLFwiYXJnc1wiKTtOdC50eXBlPVpzKCR1KGgseikpLGg9PT1pJiYoTnQudHlwZT11bihOdC50eXBlLHQpKSwkZVt6XT1OdH1yZXR1cm4gJGV9ZnVuY3Rpb24gTTEocixpKXt2YXIgdD1yLnR5cGVQYXJhbWV0ZXJzfHxpLnR5cGVQYXJhbWV0ZXJzLG87ci50eXBlUGFyYW1ldGVycyYmaS50eXBlUGFyYW1ldGVycyYmKG89VWMoaS50eXBlUGFyYW1ldGVycyxyLnR5cGVQYXJhbWV0ZXJzKSk7dmFyIHM9ci5kZWNsYXJhdGlvbix1PW5oKHIsaSxvKSxoPUYxKHIudGhpc1BhcmFtZXRlcixpLnRoaXNQYXJhbWV0ZXIsbyksej1NYXRoLm1heChyLm1pbkFyZ3VtZW50Q291bnQsaS5taW5Bcmd1bWVudENvdW50KSxtZT1GdShzLHQsaCx1LHZvaWQgMCx2b2lkIDAseiwoci5mbGFnc3xpLmZsYWdzKSYzOSk7cmV0dXJuIG1lLmNvbXBvc2l0ZUtpbmQ9MTA0ODU3NixtZS5jb21wb3NpdGVTaWduYXR1cmVzPWUuY29uY2F0ZW5hdGUoci5jb21wb3NpdGVLaW5kIT09MjA5NzE1MiYmci5jb21wb3NpdGVTaWduYXR1cmVzfHxbcl0sW2ldKSxvJiYobWUubWFwcGVyPXIuY29tcG9zaXRlS2luZCE9PTIwOTcxNTImJnIubWFwcGVyJiZyLmNvbXBvc2l0ZVNpZ25hdHVyZXM/bnAoci5tYXBwZXIsbyk6byksbWV9ZnVuY3Rpb24gb2gocil7dmFyIGk9SG4oclswXSk7aWYoaSl7Zm9yKHZhciB0PVtdLG89ZnVuY3Rpb24oeil7dmFyIG1lPXoua2V5VHlwZTtlLmV2ZXJ5KHIsZnVuY3Rpb24oTWUpe3JldHVybiEhc3MoTWUsbWUpfSkmJnQucHVzaCh6bChtZSxQYShlLm1hcChyLGZ1bmN0aW9uKE1lKXtyZXR1cm4gY3MoTWUsbWUpfSkpLGUuc29tZShyLGZ1bmN0aW9uKE1lKXtyZXR1cm4gc3MoTWUsbWUpLmlzUmVhZG9ubHl9KSkpfSxzPTAsdT1pO3M8dS5sZW5ndGg7cysrKXt2YXIgaD11W3NdO28oaCl9cmV0dXJuIHR9cmV0dXJuIGUuZW1wdHlBcnJheX1mdW5jdGlvbiBqbShyKXt2YXIgaT16dihlLm1hcChyLnR5cGVzLGZ1bmN0aW9uKHMpe3JldHVybiBzPT09YnI/W1duXTpvdChzLDApfSkpLHQ9enYoZS5tYXAoci50eXBlcyxmdW5jdGlvbihzKXtyZXR1cm4gb3QocywxKX0pKSxvPW9oKHIudHlwZXMpO09jKHIsd2UsaSx0LG8pfWZ1bmN0aW9uIFpnKHIsaSl7cmV0dXJuIHI/aT9EbyhbcixpXSk6cjppfWZ1bmN0aW9uIFd2KHIpe3ZhciBpPWUuY291bnRXaGVyZShyLGZ1bmN0aW9uKHMpe3JldHVybiBvdChzLDEpLmxlbmd0aD4wfSksdD1lLm1hcChyLFdkKTtpZihpPjAmJmk9PT1lLmNvdW50V2hlcmUodCxmdW5jdGlvbihzKXtyZXR1cm4gc30pKXt2YXIgbz10LmluZGV4T2YoITApO3Rbb109ITF9cmV0dXJuIHR9ZnVuY3Rpb24gc2gocixpLHQsbyl7Zm9yKHZhciBzPVtdLHU9MDt1PGkubGVuZ3RoO3UrKyl1PT09bz9zLnB1c2gocik6dFt1XSYmcy5wdXNoKHlvKG90KGlbdV0sMSlbMF0pKTtyZXR1cm4gRG8ocyl9ZnVuY3Rpb24gTDEocil7Zm9yKHZhciBpLHQsbyxzPXIudHlwZXMsdT1XdihzKSxoPWUuY291bnRXaGVyZSh1LGZ1bmN0aW9uKE1lKXtyZXR1cm4gTWV9KSx6PWZ1bmN0aW9uKE1lKXt2YXIgJGU9ci50eXBlc1tNZV07aWYoIXVbTWVdKXt2YXIgdHI9b3QoJGUsMSk7dHIubGVuZ3RoJiZoPjAmJih0cj1lLm1hcCh0cixmdW5jdGlvbihkcil7dmFyIERyPXhkKGRyKTtyZXR1cm4gRHIucmVzb2x2ZWRSZXR1cm5UeXBlPXNoKHlvKGRyKSxzLHUsTWUpLERyfSkpLHQ9Y2godCx0cil9aT1jaChpLG90KCRlLDApKSxvPWUucmVkdWNlTGVmdChIbigkZSksZnVuY3Rpb24oZHIsRHIpe3JldHVybiB1aChkcixEciwhMSl9LG8pfSxtZT0wO21lPHMubGVuZ3RoO21lKyspeihtZSk7T2Mocix3ZSxpfHxlLmVtcHR5QXJyYXksdHx8ZS5lbXB0eUFycmF5LG98fGUuZW1wdHlBcnJheSl9ZnVuY3Rpb24gY2gocixpKXtmb3IodmFyIHQ9ZnVuY3Rpb24oaCl7KCFyfHxlLmV2ZXJ5KHIsZnVuY3Rpb24oeil7cmV0dXJuIV95KHosaCwhMSwhMSwhMSxhdil9KSkmJihyPWUuYXBwZW5kKHIsaCkpfSxvPTAscz1pO288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dO3QodSl9cmV0dXJuIHJ9ZnVuY3Rpb24gdWgocixpLHQpe2lmKHIpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBzPXJbb107aWYocy5rZXlUeXBlPT09aS5rZXlUeXBlKXJldHVybiByW29dPXpsKHMua2V5VHlwZSx0P1BhKFtzLnR5cGUsaS50eXBlXSk6RG8oW3MudHlwZSxpLnR5cGVdKSx0P3MuaXNSZWFkb25seXx8aS5pc1JlYWRvbmx5OnMuaXNSZWFkb25seSYmaS5pc1JlYWRvbmx5KSxyfXJldHVybiBlLmFwcGVuZChyLGkpfWZ1bmN0aW9uIFIxKHIpe2lmKHIudGFyZ2V0KXtPYyhyLHdlLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KTt2YXIgaT1ZeShQZihyLnRhcmdldCksci5tYXBwZXIsITEpLHQ9QWgob3Qoci50YXJnZXQsMCksci5tYXBwZXIpLG89QWgob3Qoci50YXJnZXQsMSksci5tYXBwZXIpLHM9b0UoSG4oci50YXJnZXQpLHIubWFwcGVyKTtPYyhyLGksdCxvLHMpO3JldHVybn12YXIgdT1zbyhyLnN5bWJvbCk7aWYodS5mbGFncyYyMDQ4KXtPYyhyLHdlLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KTt2YXIgaD1OZih1KSx0PVNfKGguZ2V0KFwiX19jYWxsXCIpKSxvPVNfKGguZ2V0KFwiX19uZXdcIikpLHo9YXgodSk7T2MocixoLHQsbyx6KTtyZXR1cm59dmFyIG1lPXdlLE1lO2lmKHUuZXhwb3J0cyYmKG1lPWRjKHUpLHU9PT1wZSkpe3ZhciAkZT1uZXcgZS5NYXA7bWUuZm9yRWFjaChmdW5jdGlvbihUaSl7dmFyIENpOyEoVGkuZmxhZ3MmNDE4KSYmIShUaS5mbGFncyY1MTImJigoQ2k9VGkuZGVjbGFyYXRpb25zKT09PW51bGx8fENpPT09dm9pZCAwP3ZvaWQgMDpDaS5sZW5ndGgpJiZlLmV2ZXJ5KFRpLmRlY2xhcmF0aW9ucyxlLmlzQW1iaWVudE1vZHVsZSkpJiYkZS5zZXQoVGkuZXNjYXBlZE5hbWUsVGkpfSksbWU9JGV9dmFyIHRyO2lmKE9jKHIsbWUsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpLHUuZmxhZ3MmMzIpe3ZhciBkcj1hYSh1KSxEcj1CbChkcik7RHIuZmxhZ3MmMTEyNzIxOTI/KG1lPWUuY3JlYXRlU3ltYm9sVGFibGUoel8obWUpKSxCbShtZSx1byhEcikpKTpEcj09PU9lJiYodHI9emwoTGksT2UsITEpKX12YXIgUXI9ckQobWUpO2lmKFFyP01lPW54KFFyKToodHImJihNZT1lLmFwcGVuZChNZSx0cikpLHUuZmxhZ3MmMzg0JiYoZ28odSkuZmxhZ3MmMzJ8fGUuc29tZShyLnByb3BlcnRpZXMsZnVuY3Rpb24oVGkpe3JldHVybiEhKEp0KFRpKS5mbGFncyYyOTYpfSkpJiYoTWU9ZS5hcHBlbmQoTWUsS28pKSksT2MocixtZSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LE1lfHxlLmVtcHR5QXJyYXkpLHUuZmxhZ3MmODIwOCYmKHIuY2FsbFNpZ25hdHVyZXM9U18odSkpLHUuZmxhZ3MmMzIpe3ZhciBsaT1hYSh1KSxvPXUubWVtYmVycz9TXyh1Lm1lbWJlcnMuZ2V0KFwiX19jb25zdHJ1Y3RvclwiKSk6ZS5lbXB0eUFycmF5O3UuZmxhZ3MmMTYmJihvPWUuYWRkUmFuZ2Uoby5zbGljZSgpLGUubWFwRGVmaW5lZChyLmNhbGxTaWduYXR1cmVzLGZ1bmN0aW9uKENpKXtyZXR1cm4gU2woQ2kuZGVjbGFyYXRpb24pP0Z1KENpLmRlY2xhcmF0aW9uLENpLnR5cGVQYXJhbWV0ZXJzLENpLnRoaXNQYXJhbWV0ZXIsQ2kucGFyYW1ldGVycyxsaSx2b2lkIDAsQ2kubWluQXJndW1lbnRDb3VudCxDaS5mbGFncyYzOSk6dm9pZCAwfSkpKSxvLmxlbmd0aHx8KG89dGgobGkpKSxyLmNvbnN0cnVjdFNpZ25hdHVyZXM9b319ZnVuY3Rpb24gbGgocixpLHQpe3JldHVybiB1bihyLFVjKFtpLmluZGV4VHlwZSxpLm9iamVjdFR5cGVdLFtJZigwKSxXbChbdF0pXSkpfWZ1bmN0aW9uIEIxKHIpe2Zvcih2YXIgaT1zcyhyLnNvdXJjZSxMaSksdD1MdShyLm1hcHBlZFR5cGUpLG89ISh0JjEpLHM9dCY0PzA6MTY3NzcyMTYsdT1pP1t6bChMaSxIaChpLnR5cGUsci5tYXBwZWRUeXBlLHIuY29uc3RyYWludFR5cGUpLG8mJmkuaXNSZWFkb25seSldOmUuZW1wdHlBcnJheSxoPWUuY3JlYXRlU3ltYm9sVGFibGUoKSx6PTAsbWU9dW8oci5zb3VyY2UpO3o8bWUubGVuZ3RoO3orKyl7dmFyIE1lPW1lW3pdLCRlPTgxOTJ8KG8mJlp1KE1lKT84OjApLHRyPW9vKDR8TWUuZmxhZ3MmcyxNZS5lc2NhcGVkTmFtZSwkZSk7aWYodHIuZGVjbGFyYXRpb25zPU1lLmRlY2xhcmF0aW9ucyx0ci5uYW1lVHlwZT1BYShNZSkubmFtZVR5cGUsdHIucHJvcGVydHlUeXBlPUp0KE1lKSxyLmNvbnN0cmFpbnRUeXBlLnR5cGUuZmxhZ3MmODM4ODYwOCYmci5jb25zdHJhaW50VHlwZS50eXBlLm9iamVjdFR5cGUuZmxhZ3MmMjYyMTQ0JiZyLmNvbnN0cmFpbnRUeXBlLnR5cGUuaW5kZXhUeXBlLmZsYWdzJjI2MjE0NCl7dmFyIGRyPXIuY29uc3RyYWludFR5cGUudHlwZS5vYmplY3RUeXBlLERyPWxoKHIubWFwcGVkVHlwZSxyLmNvbnN0cmFpbnRUeXBlLnR5cGUsZHIpO3RyLm1hcHBlZFR5cGU9RHIsdHIuY29uc3RyYWludFR5cGU9cWwoZHIpfWVsc2UgdHIubWFwcGVkVHlwZT1yLm1hcHBlZFR5cGUsdHIuY29uc3RyYWludFR5cGU9ci5jb25zdHJhaW50VHlwZTtoLnNldChNZS5lc2NhcGVkTmFtZSx0cil9T2MocixoLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksdSl9ZnVuY3Rpb24gS2Qocil7aWYoci5mbGFncyY0MTk0MzA0KXt2YXIgaT0kcyhyLnR5cGUpO3JldHVybiBsbShpKT9NeChpKTpxbChpKX1pZihyLmZsYWdzJjE2Nzc3MjE2KXtpZihyLnJvb3QuaXNEaXN0cmlidXRpdmUpe3ZhciB0PXIuY2hlY2tUeXBlLG89S2QodCk7aWYobyE9PXQpcmV0dXJuIElEKHIsJGQoci5yb290LmNoZWNrVHlwZSxvLHIubWFwcGVyKSl9cmV0dXJuIHJ9cmV0dXJuIHIuZmxhZ3MmMTA0ODU3Nj9TcyhyLEtkKTpyLmZsYWdzJjIwOTcxNTI/RG8oZS5zYW1lTWFwKHIudHlwZXMsS2QpKTpyfWZ1bmN0aW9uIEdkKHIpe3JldHVybiBlLmdldENoZWNrRmxhZ3MocikmNDA5Nn1mdW5jdGlvbiBVbShyLGksdCxvKXtmb3IodmFyIHM9MCx1PXVvKHIpO3M8dS5sZW5ndGg7cysrKXt2YXIgaD11W3NdO28ob20oaCxpKSl9aWYoci5mbGFncyYxKW8oTGkpO2Vsc2UgZm9yKHZhciB6PTAsbWU9SG4ocik7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel07KCF0fHxNZS5rZXlUeXBlLmZsYWdzJjEzNDIxNzczMikmJm8oTWUua2V5VHlwZSl9fWZ1bmN0aW9uIGZoKHIpe3ZhciBpPWUuY3JlYXRlU3ltYm9sVGFibGUoKSx0O09jKHIsd2UsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpO3ZhciBvPUR1KHIpLHM9TXUociksdT1KbChyLnRhcmdldHx8ciksaD12bChyLnRhcmdldHx8ciksej0kcyhFZChyKSksbWU9THUociksTWU9R2U/MTI4Ojg1NzY7bWcocik/VW0oeixNZSxHZSwkZSk6T2QoS2QocyksJGUpLE9jKHIsaSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LHR8fGUuZW1wdHlBcnJheSk7ZnVuY3Rpb24gJGUoZHIpe3ZhciBEcj11P3VuKHUsdHYoci5tYXBwZXIsbyxkcikpOmRyO09kKERyLGZ1bmN0aW9uKFFyKXtyZXR1cm4gdHIoZHIsUXIpfSl9ZnVuY3Rpb24gdHIoZHIsRHIpe2lmKF9mKERyKSl7dmFyIFFyPXBmKERyKSxsaT1pLmdldChRcik7aWYobGkpbGkubmFtZVR5cGU9UGEoW2xpLm5hbWVUeXBlLERyXSksbGkua2V5VHlwZT1QYShbbGkua2V5VHlwZSxkcl0pO2Vsc2V7dmFyIFRpPV9mKGRyKT9iaSh6LHBmKGRyKSk6dm9pZCAwLENpPSEhKG1lJjR8fCEobWUmOCkmJlRpJiZUaS5mbGFncyYxNjc3NzIxNiksJGk9ISEobWUmMXx8IShtZSYyKSYmVGkmJlp1KFRpKSksWmk9WWUmJiFDaSYmVGkmJlRpLmZsYWdzJjE2Nzc3MjE2LHF0PVRpP0dkKFRpKTowLE50PW9vKDR8KENpPzE2Nzc3MjE2OjApLFFyLHF0fDI2MjE0NHwoJGk/ODowKXwoWmk/NTI0Mjg4OjApKTtOdC5tYXBwZWRUeXBlPXIsTnQubmFtZVR5cGU9RHIsTnQua2V5VHlwZT1kcixUaSYmKE50LnN5bnRoZXRpY09yaWdpbj1UaSxOdC5kZWNsYXJhdGlvbnM9dT92b2lkIDA6VGkuZGVjbGFyYXRpb25zKSxpLnNldChRcixOdCl9fWVsc2UgaWYodmgoRHIpfHxEci5mbGFncyYzMyl7dmFyIFJhPURyLmZsYWdzJjU/TGk6RHIuZmxhZ3MmNDA/bnQ6RHIsY2E9dW4oaCx0dihyLm1hcHBlcixvLGRyKSksU249emwoUmEsY2EsISEobWUmMSkpO3Q9dWgodCxTbiwhMCl9fX1mdW5jdGlvbiBKMShyKXtpZighci50eXBlKXt2YXIgaT1yLm1hcHBlZFR5cGU7aWYoIXl1KHIsMCkpcmV0dXJuIGkuY29udGFpbnNFcnJvcj0hMCxQZTt2YXIgdD12bChpLnRhcmdldHx8aSksbz10dihpLm1hcHBlcixEdShpKSxyLmtleVR5cGUpLHM9dW4odCxvKSx1PVllJiZyLmZsYWdzJjE2Nzc3MjE2JiYhZnMocyw0OTE1Mik/aV8ocywhMCk6ci5jaGVja0ZsYWdzJjUyNDI4OD8kRChzKTpzO2ZpKCl8fChYcihJZSxlLkRpYWdub3N0aWNzLlR5cGVfb2ZfcHJvcGVydHlfMF9jaXJjdWxhcmx5X3JlZmVyZW5jZXNfaXRzZWxmX2luX21hcHBlZF90eXBlXzEsdG4ociksT3QoaSkpLHU9UGUpLHIudHlwZT11fXJldHVybiByLnR5cGV9ZnVuY3Rpb24gRHUocil7cmV0dXJuIHIudHlwZVBhcmFtZXRlcnx8KHIudHlwZVBhcmFtZXRlcj1KcyhFdChyLmRlY2xhcmF0aW9uLnR5cGVQYXJhbWV0ZXIpKSl9ZnVuY3Rpb24gTXUocil7cmV0dXJuIHIuY29uc3RyYWludFR5cGV8fChyLmNvbnN0cmFpbnRUeXBlPVRjKER1KHIpKXx8UGUpfWZ1bmN0aW9uIEpsKHIpe3JldHVybiByLmRlY2xhcmF0aW9uLm5hbWVUeXBlP3IubmFtZVR5cGV8fChyLm5hbWVUeXBlPXVuKFZhKHIuZGVjbGFyYXRpb24ubmFtZVR5cGUpLHIubWFwcGVyKSk6dm9pZCAwfWZ1bmN0aW9uIHZsKHIpe3JldHVybiByLnRlbXBsYXRlVHlwZXx8KHIudGVtcGxhdGVUeXBlPXIuZGVjbGFyYXRpb24udHlwZT91bihrYyhWYShyLmRlY2xhcmF0aW9uLnR5cGUpLCEwLCEhKEx1KHIpJjQpKSxyLm1hcHBlcik6UGUpfWZ1bmN0aW9uIF9oKHIpe3JldHVybiBlLmdldEVmZmVjdGl2ZUNvbnN0cmFpbnRPZlR5cGVQYXJhbWV0ZXIoci5kZWNsYXJhdGlvbi50eXBlUGFyYW1ldGVyKX1mdW5jdGlvbiBtZyhyKXt2YXIgaT1faChyKTtyZXR1cm4gaS5raW5kPT09MTkzJiZpLm9wZXJhdG9yPT09MTQwfWZ1bmN0aW9uIEVkKHIpe2lmKCFyLm1vZGlmaWVyc1R5cGUpaWYobWcocikpci5tb2RpZmllcnNUeXBlPXVuKFZhKF9oKHIpLnR5cGUpLHIubWFwcGVyKTtlbHNle3ZhciBpPXlEKHIuZGVjbGFyYXRpb24pLHQ9TXUoaSksbz10JiZ0LmZsYWdzJjI2MjE0ND9UYyh0KTp0O3IubW9kaWZpZXJzVHlwZT1vJiZvLmZsYWdzJjQxOTQzMDQ/dW4oby50eXBlLHIubWFwcGVyKTpncn1yZXR1cm4gci5tb2RpZmllcnNUeXBlfWZ1bmN0aW9uIEx1KHIpe3ZhciBpPXIuZGVjbGFyYXRpb247cmV0dXJuKGkucmVhZG9ubHlUb2tlbj9pLnJlYWRvbmx5VG9rZW4ua2luZD09PTQwPzI6MTowKXwoaS5xdWVzdGlvblRva2VuP2kucXVlc3Rpb25Ub2tlbi5raW5kPT09NDA/ODo0OjApfWZ1bmN0aW9uIHBoKHIpe3ZhciBpPUx1KHIpO3JldHVybiBpJjg/LTE6aSY0PzE6MH1mdW5jdGlvbiBxdihyKXt2YXIgaT1waChyKSx0PUVkKHIpO3JldHVybiBpfHwoQmModCk/cGgodCk6MCl9ZnVuY3Rpb24gajEocil7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyhyKSYzMiYmTHUocikmNCl9ZnVuY3Rpb24gQmMocil7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyhyKSYzMikmJnFwKE11KHIpKX1mdW5jdGlvbiBSdShyKXtyZXR1cm4gci5tZW1iZXJzfHwoci5mbGFncyY1MjQyODg/ci5vYmplY3RGbGFncyY0P3JoKHIpOnIub2JqZWN0RmxhZ3MmMz9laChyKTpyLm9iamVjdEZsYWdzJjEwMjQ/QjEocik6ci5vYmplY3RGbGFncyYxNj9SMShyKTpyLm9iamVjdEZsYWdzJjMyJiZmaChyKTpyLmZsYWdzJjEwNDg1NzY/am0ocik6ci5mbGFncyYyMDk3MTUyJiZMMShyKSkscn1mdW5jdGlvbiBQZihyKXtyZXR1cm4gci5mbGFncyY1MjQyODg/UnUocikucHJvcGVydGllczplLmVtcHR5QXJyYXl9ZnVuY3Rpb24gaF8ocixpKXtpZihyLmZsYWdzJjUyNDI4OCl7dmFyIHQ9UnUociksbz10Lm1lbWJlcnMuZ2V0KGkpO2lmKG8mJmdjKG8pKXJldHVybiBvfX1mdW5jdGlvbiBlbShyKXtpZighci5yZXNvbHZlZFByb3BlcnRpZXMpe2Zvcih2YXIgaT1lLmNyZWF0ZVN5bWJvbFRhYmxlKCksdD0wLG89ci50eXBlczt0PG8ubGVuZ3RoO3QrKyl7Zm9yKHZhciBzPW9bdF0sdT0wLGg9dW8ocyk7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07aWYoIWkuaGFzKHouZXNjYXBlZE5hbWUpKXt2YXIgbWU9WnYocix6LmVzY2FwZWROYW1lKTttZSYmaS5zZXQoei5lc2NhcGVkTmFtZSxtZSl9fWlmKHIuZmxhZ3MmMTA0ODU3NiYmSG4ocykubGVuZ3RoPT09MClicmVha31yLnJlc29sdmVkUHJvcGVydGllcz10ZihpKX1yZXR1cm4gci5yZXNvbHZlZFByb3BlcnRpZXN9ZnVuY3Rpb24gdW8ocil7cmV0dXJuIHI9WGQociksci5mbGFncyYzMTQ1NzI4P2VtKHIpOlBmKHIpfWZ1bmN0aW9uIFUxKHIsaSl7cj1YZChyKSxyLmZsYWdzJjM2NzAwMTYmJlJ1KHIpLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbih0LG8pe3hmKHQsbykmJmkodCxvKX0pfWZ1bmN0aW9uIHoxKHIsaSl7dmFyIHQ9aS5wcm9wZXJ0aWVzO3JldHVybiB0LnNvbWUoZnVuY3Rpb24obyl7dmFyIHM9by5uYW1lJiZaXyhvLm5hbWUpLHU9cyYmX2Yocyk/cGYocyk6dm9pZCAwLGg9dT09PXZvaWQgMD92b2lkIDA6ZGEocix1KTtyZXR1cm4hIWgmJkNnKGgpJiYhYW8oQmQobyksaCl9KX1mdW5jdGlvbiBXMShyKXt2YXIgaT1QYShyKTtpZighKGkuZmxhZ3MmMTA0ODU3NikpcmV0dXJuIExTKGkpO2Zvcih2YXIgdD1lLmNyZWF0ZVN5bWJvbFRhYmxlKCksbz0wLHM9cjtvPHMubGVuZ3RoO28rKylmb3IodmFyIHU9c1tvXSxoPTAsej1MUyh1KTtoPHoubGVuZ3RoO2grKyl7dmFyIG1lPXpbaF0uZXNjYXBlZE5hbWU7aWYoIXQuaGFzKG1lKSl7dmFyIE1lPVl2KGksbWUpO01lJiZ0LnNldChtZSxNZSl9fXJldHVybiBlLmFycmF5RnJvbSh0LnZhbHVlcygpKX1mdW5jdGlvbiBRXyhyKXtyZXR1cm4gci5mbGFncyYyNjIxNDQ/VGMocik6ci5mbGFncyY4Mzg4NjA4P3ExKHIpOnIuZmxhZ3MmMTY3NzcyMTY/SzEocik6dWMocil9ZnVuY3Rpb24gVGMocil7cmV0dXJuIFdtKHIpP3RtKHIpOnZvaWQgMH1mdW5jdGlvbiBxMShyKXtyZXR1cm4gV20ocik/VjEocik6dm9pZCAwfWZ1bmN0aW9uIFZ2KHIpe3ZhciBpPVpmKHIsITEpO3JldHVybiBpIT09cj9pOlFfKHIpfWZ1bmN0aW9uIFYxKHIpe2lmKFF2KHIpKXJldHVybiB4aChyLm9iamVjdFR5cGUsci5pbmRleFR5cGUpO3ZhciBpPVZ2KHIuaW5kZXhUeXBlKTtpZihpJiZpIT09ci5pbmRleFR5cGUpe3ZhciB0PWVwKHIub2JqZWN0VHlwZSxpLHIuYWNjZXNzRmxhZ3MpO2lmKHQpcmV0dXJuIHR9dmFyIG89VnYoci5vYmplY3RUeXBlKTtpZihvJiZvIT09ci5vYmplY3RUeXBlKXJldHVybiBlcChvLHIuaW5kZXhUeXBlLHIuYWNjZXNzRmxhZ3MpfWZ1bmN0aW9uIHptKHIpe2lmKCFyLnJlc29sdmVkRGVmYXVsdENvbnN0cmFpbnQpe3ZhciBpPVRJKHIpLHQ9dHAocik7ci5yZXNvbHZlZERlZmF1bHRDb25zdHJhaW50PXRhKGkpP3Q6dGEodCk/aTpQYShbaSx0XSl9cmV0dXJuIHIucmVzb2x2ZWREZWZhdWx0Q29uc3RyYWludH1mdW5jdGlvbiBLdihyKXtpZihyLnJvb3QuaXNEaXN0cmlidXRpdmUmJnIucmVzdHJpY3RpdmVJbnN0YW50aWF0aW9uIT09cil7dmFyIGk9WmYoci5jaGVja1R5cGUsITEpLHQ9aT09PXIuY2hlY2tUeXBlP1FfKGkpOmk7aWYodCYmdCE9PXIuY2hlY2tUeXBlKXt2YXIgbz1JRChyLCRkKHIucm9vdC5jaGVja1R5cGUsdCxyLm1hcHBlcikpO2lmKCEoby5mbGFncyYxMzEwNzIpKXJldHVybiBvfX19ZnVuY3Rpb24gR3Yocil7cmV0dXJuIEt2KHIpfHx6bShyKX1mdW5jdGlvbiBLMShyKXtyZXR1cm4gV20ocik/R3Yocik6dm9pZCAwfWZ1bmN0aW9uIEcxKHIsaSl7Zm9yKHZhciB0LG89ITEscz0wLHU9cjtzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXTtpZihoLmZsYWdzJjQ2NTgyOTg4OCl7Zm9yKHZhciB6PVFfKGgpO3omJnouZmxhZ3MmMjEyMzM2NjQ7KXo9UV8oeik7eiYmKHQ9ZS5hcHBlbmQodCx6KSxpJiYodD1lLmFwcGVuZCh0LGgpKSl9ZWxzZSBoLmZsYWdzJjQ2OTg5MjA5MiYmKG89ITApfWlmKHQmJihpfHxvKSl7aWYobylmb3IodmFyIG1lPTAsTWU9cjttZTxNZS5sZW5ndGg7bWUrKyl7dmFyIGg9TWVbbWVdO2guZmxhZ3MmNDY5ODkyMDkyJiYodD1lLmFwcGVuZCh0LGgpKX1yZXR1cm4gRG8odCl9fWZ1bmN0aW9uIHVjKHIpe2lmKHIuZmxhZ3MmNDY0NzgxMzEyKXt2YXIgaT1IdihyKTtyZXR1cm4gaSE9PUtuJiZpIT09UG4/aTp2b2lkIDB9cmV0dXJuIHIuZmxhZ3MmNDE5NDMwND9hdDp2b2lkIDB9ZnVuY3Rpb24gSGQocil7cmV0dXJuIHVjKHIpfHxyfWZ1bmN0aW9uIFdtKHIpe3JldHVybiBIdihyKSE9PVBufWZ1bmN0aW9uIEh2KHIpe2lmKHIucmVzb2x2ZWRCYXNlQ29uc3RyYWludClyZXR1cm4gci5yZXNvbHZlZEJhc2VDb25zdHJhaW50O3ZhciBpPVtdO3JldHVybiByLnJlc29sdmVkQmFzZUNvbnN0cmFpbnQ9UmModChyKSxyKTtmdW5jdGlvbiB0KHUpe2lmKCF1LmltbWVkaWF0ZUJhc2VDb25zdHJhaW50KXtpZigheXUodSw0KSlyZXR1cm4gUG47dmFyIGg9dm9pZCAwLHo9b3YodSk7aWYoKGkubGVuZ3RoPDEwfHxpLmxlbmd0aDw1MCYmIWUuY29udGFpbnMoaSx6KSkmJihpLnB1c2goeiksaD1zKFpmKHUsITEpKSxpLnBvcCgpKSwhZmkoKSl7aWYodS5mbGFncyYyNjIxNDQpe3ZhciBtZT1veCh1KTtpZihtZSl7dmFyIE1lPVhyKG1lLGUuRGlhZ25vc3RpY3MuVHlwZV9wYXJhbWV0ZXJfMF9oYXNfYV9jaXJjdWxhcl9jb25zdHJhaW50LE90KHUpKTtJZSYmIWUuaXNOb2RlRGVzY2VuZGFudE9mKG1lLEllKSYmIWUuaXNOb2RlRGVzY2VuZGFudE9mKEllLG1lKSYmZS5hZGRSZWxhdGVkSW5mbyhNZSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKEllLGUuRGlhZ25vc3RpY3MuQ2lyY3VsYXJpdHlfb3JpZ2luYXRlc19pbl90eXBlX2F0X3RoaXNfbG9jYXRpb24pKX19aD1Qbn11LmltbWVkaWF0ZUJhc2VDb25zdHJhaW50PWh8fEtufXJldHVybiB1LmltbWVkaWF0ZUJhc2VDb25zdHJhaW50fWZ1bmN0aW9uIG8odSl7dmFyIGg9dCh1KTtyZXR1cm4gaCE9PUtuJiZoIT09UG4/aDp2b2lkIDB9ZnVuY3Rpb24gcyh1KXtpZih1LmZsYWdzJjI2MjE0NCl7dmFyIGg9dG0odSk7cmV0dXJuIHUuaXNUaGlzVHlwZXx8IWg/aDpvKGgpfWlmKHUuZmxhZ3MmMzE0NTcyOCl7Zm9yKHZhciB6PXUudHlwZXMsbWU9W10sTWU9ITEsJGU9MCx0cj16OyRlPHRyLmxlbmd0aDskZSsrKXt2YXIgZHI9dHJbJGVdLERyPW8oZHIpO0RyPyhEciE9PWRyJiYoTWU9ITApLG1lLnB1c2goRHIpKTpNZT0hMH1yZXR1cm4gTWU/dS5mbGFncyYxMDQ4NTc2JiZtZS5sZW5ndGg9PT16Lmxlbmd0aD9QYShtZSk6dS5mbGFncyYyMDk3MTUyJiZtZS5sZW5ndGg/RG8obWUpOnZvaWQgMDp1fWlmKHUuZmxhZ3MmNDE5NDMwNClyZXR1cm4gYXQ7aWYodS5mbGFncyYxMzQyMTc3Mjgpe3ZhciB6PXUudHlwZXMsUXI9ZS5tYXBEZWZpbmVkKHosbyk7cmV0dXJuIFFyLmxlbmd0aD09PXoubGVuZ3RoP0RnKHUudGV4dHMsUXIpOkxpfWlmKHUuZmxhZ3MmMjY4NDM1NDU2KXt2YXIgaD1vKHUudHlwZSk7cmV0dXJuIGg/VGgodS5zeW1ib2wsaCk6TGl9aWYodS5mbGFncyY4Mzg4NjA4KXtpZihRdih1KSlyZXR1cm4gbyh4aCh1Lm9iamVjdFR5cGUsdS5pbmRleFR5cGUpKTt2YXIgbGk9byh1Lm9iamVjdFR5cGUpLFRpPW8odS5pbmRleFR5cGUpLENpPWxpJiZUaSYmZXAobGksVGksdS5hY2Nlc3NGbGFncyk7cmV0dXJuIENpJiZvKENpKX1pZih1LmZsYWdzJjE2Nzc3MjE2KXt2YXIgaD1Hdih1KTtyZXR1cm4gaCYmbyhoKX1yZXR1cm4gdS5mbGFncyYzMzU1NDQzMj9vKHUuc3Vic3RpdHV0ZSk6dX19ZnVuY3Rpb24gSDEocil7cmV0dXJuIHIucmVzb2x2ZWRBcHBhcmVudFR5cGV8fChyLnJlc29sdmVkQXBwYXJlbnRUeXBlPVJjKHIsciwhMCkpfWZ1bmN0aW9uIFh2KHIpe2lmKHIuZGVmYXVsdClyLmRlZmF1bHQ9PT1lbyYmKHIuZGVmYXVsdD1Qbik7ZWxzZSBpZihyLnRhcmdldCl7dmFyIGk9WHYoci50YXJnZXQpO3IuZGVmYXVsdD1pP3VuKGksci5tYXBwZXIpOktufWVsc2V7ci5kZWZhdWx0PWVvO3ZhciB0PXIuc3ltYm9sJiZlLmZvckVhY2goci5zeW1ib2wuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHMpe3JldHVybiBlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKHMpJiZzLmRlZmF1bHR9KSxvPXQ/VmEodCk6S247ci5kZWZhdWx0PT09ZW8mJihyLmRlZmF1bHQ9byl9cmV0dXJuIHIuZGVmYXVsdH1mdW5jdGlvbiBEXyhyKXt2YXIgaT1YdihyKTtyZXR1cm4gaSE9PUtuJiZpIT09UG4/aTp2b2lkIDB9ZnVuY3Rpb24gWDEocil7cmV0dXJuIFh2KHIpIT09UG59ZnVuY3Rpb24gUTEocil7cmV0dXJuISEoci5zeW1ib2wmJmUuZm9yRWFjaChyLnN5bWJvbC5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oaSl7cmV0dXJuIGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oaSkmJmkuZGVmYXVsdH0pKX1mdW5jdGlvbiBZMShyKXtyZXR1cm4gci5yZXNvbHZlZEFwcGFyZW50VHlwZXx8KHIucmVzb2x2ZWRBcHBhcmVudFR5cGU9ZGgocikpfWZ1bmN0aW9uIGRoKHIpe3ZhciBpPUloKHIpO2lmKGkmJiFyLmRlY2xhcmF0aW9uLm5hbWVUeXBlKXt2YXIgdD1UYyhpKTtpZih0JiZQZCh0KSlyZXR1cm4gdW4ociwkZChpLHQsci5tYXBwZXIpKX1yZXR1cm4gcn1mdW5jdGlvbiBRdihyKXt2YXIgaTtyZXR1cm4hIShyLmZsYWdzJjgzODg2MDgmJmUuZ2V0T2JqZWN0RmxhZ3MoaT1yLm9iamVjdFR5cGUpJjMyJiYhQmMoaSkmJnFwKHIuaW5kZXhUeXBlKSYmIWkuZGVjbGFyYXRpb24ucXVlc3Rpb25Ub2tlbiYmIWkuZGVjbGFyYXRpb24ubmFtZVR5cGUpfWZ1bmN0aW9uICRzKHIpe3ZhciBpPXIuZmxhZ3MmNDY1ODI5ODg4P3VjKHIpfHxncjpyO3JldHVybiBlLmdldE9iamVjdEZsYWdzKGkpJjMyP1kxKGkpOmkuZmxhZ3MmMjA5NzE1Mj9IMShpKTppLmZsYWdzJjQwMjY1MzMxNj9DdDppLmZsYWdzJjI5Nj9zYTppLmZsYWdzJjIxMTI/UjMoKTppLmZsYWdzJjUyOD9lbjppLmZsYWdzJjEyMjg4P0N4KCk6aS5mbGFncyY2NzEwODg2ND9CYTppLmZsYWdzJjQxOTQzMDQ/YXQ6aS5mbGFncyYyJiYhWWU/QmE6aX1mdW5jdGlvbiBYZChyKXtyZXR1cm4gYnUoJHMoYnUocikpKX1mdW5jdGlvbiBZdihyLGksdCl7Zm9yKHZhciBvLHMsdSxoLHosbWU9ci5mbGFncyYxMDQ4NTc2LE1lPW1lPzA6MTY3NzcyMTYsJGU9NCx0cj1tZT8wOjgsZHI9ITEsRHI9MCxRcj1yLnR5cGVzO0RyPFFyLmxlbmd0aDtEcisrKXt2YXIgbGk9UXJbRHJdLFRpPSRzKGxpKTtpZighKG5uKFRpKXx8VGkuZmxhZ3MmMTMxMDcyKSl7dmFyIENpPWJpKFRpLGksdCksJGk9Q2k/ZS5nZXREZWNsYXJhdGlvbk1vZGlmaWVyRmxhZ3NGcm9tU3ltYm9sKENpKTowO2lmKENpKXtpZihtZT9NZXw9Q2kuZmxhZ3MmMTY3NzcyMTY6TWUmPUNpLmZsYWdzLCF1KXU9Q2k7ZWxzZSBpZihDaSE9PXUpe3ZhciBaaT0oamcoQ2kpfHxDaSk9PT0oamcodSl8fHUpO2lmKFppJiZWRCh1LENpLGZ1bmN0aW9uKEthLGNuKXtyZXR1cm4gS2E9PT1jbj8tMTowfSk9PT0tMSlkcj0hIXUucGFyZW50JiYhIWUubGVuZ3RoKEFmKHUucGFyZW50KSk7ZWxzZXtofHwoaD1uZXcgZS5NYXAsaC5zZXQoeSh1KSx1KSk7dmFyIHF0PXkoQ2kpO2guaGFzKHF0KXx8aC5zZXQocXQsQ2kpfX1tZSYmWnUoQ2kpP3RyfD04OiFtZSYmIVp1KENpKSYmKHRyJj0tOSksdHJ8PSgkaSYyND8wOjI1Nil8KCRpJjE2PzUxMjowKXwoJGkmOD8xMDI0OjApfCgkaSYzMj8yMDQ4OjApLEJiKENpKXx8KCRlPTIpfWVsc2UgaWYobWUpe3ZhciBOdD0hcGcoaSkmJlhvKFRpLGkpO050Pyh0cnw9MzJ8KE50LmlzUmVhZG9ubHk/ODowKSx6PWUuYXBwZW5kKHosWW4oVGkpP3N2KFRpKXx8VHI6TnQudHlwZSkpOlFwKFRpKSYmIShlLmdldE9iamVjdEZsYWdzKFRpKSYyMDk3MTUyKT8odHJ8PTMyLHo9ZS5hcHBlbmQoeixUcikpOnRyfD0xNn19fWlmKCEoIXV8fG1lJiYoaHx8dHImNDgpJiZ0ciYxNTM2KSl7aWYoIWgmJiEodHImMTYpJiYheilpZihkcil7dmFyIFJhPWVnKHUsdS50eXBlKTtyZXR1cm4gUmEucGFyZW50PShzPShvPXUudmFsdWVEZWNsYXJhdGlvbik9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLnN5bWJvbCk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLnBhcmVudCxSYS5jb250YWluaW5nVHlwZT1yLFJhLm1hcHBlcj11Lm1hcHBlcixSYX1lbHNlIHJldHVybiB1O2Zvcih2YXIgY2E9aD9lLmFycmF5RnJvbShoLnZhbHVlcygpKTpbdV0sU24samEsRm4sd249W10sVG4sRW8sbHQ9ITEsaXQ9MCxZdD1jYTtpdDxZdC5sZW5ndGg7aXQrKyl7dmFyIENpPVl0W2l0XTtFbz9DaS52YWx1ZURlY2xhcmF0aW9uJiZDaS52YWx1ZURlY2xhcmF0aW9uIT09RW8mJihsdD0hMCk6RW89Q2kudmFsdWVEZWNsYXJhdGlvbixTbj1lLmFkZFJhbmdlKFNuLENpLmRlY2xhcmF0aW9ucyk7dmFyIFRpPUp0KENpKTtqYXx8KGphPVRpLEZuPUFhKENpKS5uYW1lVHlwZSk7dmFyIElhPVZnKENpKTtUbnx8SWEhPT1UaT9Ubj1lLmFwcGVuZChUbnx8d24uc2xpY2UoKSxJYSk6VGkhPT1qYSYmKHRyfD02NCksKENnKFRpKXx8c20oVGkpfHxUaT09PURuKSYmKHRyfD0xMjgpLFRpLmZsYWdzJjEzMTA3MiYmVGkhPT1EbiYmKHRyfD0xMzEwNzIpLHduLnB1c2goVGkpfWUuYWRkUmFuZ2Uod24seik7dmFyIFF0PW9vKDR8TWUsaSwkZXx0cik7cmV0dXJuIFF0LmNvbnRhaW5pbmdUeXBlPXIsIWx0JiZFbyYmKFF0LnZhbHVlRGVjbGFyYXRpb249RW8sRW8uc3ltYm9sLnBhcmVudCYmKFF0LnBhcmVudD1Fby5zeW1ib2wucGFyZW50KSksUXQuZGVjbGFyYXRpb25zPVNuLFF0Lm5hbWVUeXBlPUZuLHduLmxlbmd0aD4yPyhRdC5jaGVja0ZsYWdzfD02NTUzNixRdC5kZWZlcnJhbFBhcmVudD1yLFF0LmRlZmVycmFsQ29uc3RpdHVlbnRzPXduLFF0LmRlZmVycmFsV3JpdGVDb25zdGl0dWVudHM9VG4pOihRdC50eXBlPW1lP1BhKHduKTpEbyh3biksVG4mJihRdC53cml0ZVR5cGU9bWU/UGEoVG4pOkRvKFRuKSkpLFF0fX1mdW5jdGlvbiAkdihyLGksdCl7dmFyIG8scyx1PSgobz1yLnByb3BlcnR5Q2FjaGVXaXRob3V0T2JqZWN0RnVuY3Rpb25Qcm9wZXJ0eUF1Z21lbnQpPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5nZXQoaSkpfHwhdD8ocz1yLnByb3BlcnR5Q2FjaGUpPT09bnVsbHx8cz09PXZvaWQgMD92b2lkIDA6cy5nZXQoaSk6dm9pZCAwO2lmKCF1JiYodT1ZdihyLGksdCksdSkpe3ZhciBoPXQ/ci5wcm9wZXJ0eUNhY2hlV2l0aG91dE9iamVjdEZ1bmN0aW9uUHJvcGVydHlBdWdtZW50fHwoci5wcm9wZXJ0eUNhY2hlV2l0aG91dE9iamVjdEZ1bmN0aW9uUHJvcGVydHlBdWdtZW50PWUuY3JlYXRlU3ltYm9sVGFibGUoKSk6ci5wcm9wZXJ0eUNhY2hlfHwoci5wcm9wZXJ0eUNhY2hlPWUuY3JlYXRlU3ltYm9sVGFibGUoKSk7aC5zZXQoaSx1KX1yZXR1cm4gdX1mdW5jdGlvbiBadihyLGksdCl7dmFyIG89JHYocixpLHQpO3JldHVybiBvJiYhKGUuZ2V0Q2hlY2tGbGFncyhvKSYxNik/bzp2b2lkIDB9ZnVuY3Rpb24gYnUocil7cmV0dXJuIHIuZmxhZ3MmMTA0ODU3NiYmci5vYmplY3RGbGFncyYxNjc3NzIxNj9yLnJlc29sdmVkUmVkdWNlZFR5cGV8fChyLnJlc29sdmVkUmVkdWNlZFR5cGU9JDEocikpOnIuZmxhZ3MmMjA5NzE1Mj8oci5vYmplY3RGbGFncyYxNjc3NzIxNnx8KHIub2JqZWN0RmxhZ3N8PTE2Nzc3MjE2fChlLnNvbWUoZW0ociksYyk/MzM1NTQ0MzI6MCkpLHIub2JqZWN0RmxhZ3MmMzM1NTQ0MzI/dWk6cik6cn1mdW5jdGlvbiAkMShyKXt2YXIgaT1lLnNhbWVNYXAoci50eXBlcyxidSk7aWYoaT09PXIudHlwZXMpcmV0dXJuIHI7dmFyIHQ9UGEoaSk7cmV0dXJuIHQuZmxhZ3MmMTA0ODU3NiYmKHQucmVzb2x2ZWRSZWR1Y2VkVHlwZT10KSx0fWZ1bmN0aW9uIGMocil7cmV0dXJuIHRlKHIpfHx4cihyKX1mdW5jdGlvbiB0ZShyKXtyZXR1cm4hKHIuZmxhZ3MmMTY3NzcyMTYpJiYoZS5nZXRDaGVja0ZsYWdzKHIpJjEzMTI2NCk9PT0xOTImJiEhKEp0KHIpLmZsYWdzJjEzMTA3Mil9ZnVuY3Rpb24geHIocil7cmV0dXJuIXIudmFsdWVEZWNsYXJhdGlvbiYmISEoZS5nZXRDaGVja0ZsYWdzKHIpJjEwMjQpfWZ1bmN0aW9uIGVpKHIsaSl7aWYoaS5mbGFncyYyMDk3MTUyJiZlLmdldE9iamVjdEZsYWdzKGkpJjMzNTU0NDMyKXt2YXIgdD1lLmZpbmQoZW0oaSksdGUpO2lmKHQpcmV0dXJuIGUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMocixlLkRpYWdub3N0aWNzLlRoZV9pbnRlcnNlY3Rpb25fMF93YXNfcmVkdWNlZF90b19uZXZlcl9iZWNhdXNlX3Byb3BlcnR5XzFfaGFzX2NvbmZsaWN0aW5nX3R5cGVzX2luX3NvbWVfY29uc3RpdHVlbnRzLE90KGksdm9pZCAwLDUzNjg3MDkxMiksdG4odCkpO3ZhciBvPWUuZmluZChlbShpKSx4cik7aWYobylyZXR1cm4gZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyhyLGUuRGlhZ25vc3RpY3MuVGhlX2ludGVyc2VjdGlvbl8wX3dhc19yZWR1Y2VkX3RvX25ldmVyX2JlY2F1c2VfcHJvcGVydHlfMV9leGlzdHNfaW5fbXVsdGlwbGVfY29uc3RpdHVlbnRzX2FuZF9pc19wcml2YXRlX2luX3NvbWUsT3QoaSx2b2lkIDAsNTM2ODcwOTEyKSx0bihvKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gYmkocixpLHQpe2lmKHI9WGQociksci5mbGFncyY1MjQyODgpe3ZhciBvPVJ1KHIpLHM9by5tZW1iZXJzLmdldChpKTtpZihzJiZnYyhzKSlyZXR1cm4gcztpZih0KXJldHVybjt2YXIgdT1vPT09eG4/YnI6by5jYWxsU2lnbmF0dXJlcy5sZW5ndGg/WnI6by5jb25zdHJ1Y3RTaWduYXR1cmVzLmxlbmd0aD9TaTp2b2lkIDA7aWYodSl7dmFyIGg9aF8odSxpKTtpZihoKXJldHVybiBofXJldHVybiBoXyhxZSxpKX1pZihyLmZsYWdzJjMxNDU3MjgpcmV0dXJuIFp2KHIsaSx0KX1mdW5jdGlvbiBGdChyLGkpe2lmKHIuZmxhZ3MmMzY3MDAxNil7dmFyIHQ9UnUocik7cmV0dXJuIGk9PT0wP3QuY2FsbFNpZ25hdHVyZXM6dC5jb25zdHJ1Y3RTaWduYXR1cmVzfXJldHVybiBlLmVtcHR5QXJyYXl9ZnVuY3Rpb24gb3QocixpKXtyZXR1cm4gRnQoWGQociksaSl9ZnVuY3Rpb24geGEocixpKXtyZXR1cm4gZS5maW5kKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5VHlwZT09PWl9KX1mdW5jdGlvbiBtbihyLGkpe2Zvcih2YXIgdCxvLHMsdT0wLGg9cjt1PGgubGVuZ3RoO3UrKyl7dmFyIHo9aFt1XTt6LmtleVR5cGU9PT1MaT90PXo6YW4oaSx6LmtleVR5cGUpJiYobz8oc3x8KHM9W29dKSkucHVzaCh6KTpvPXopfXJldHVybiBzP3psKGdyLERvKGUubWFwKHMsZnVuY3Rpb24obWUpe3JldHVybiBtZS50eXBlfSkpLGUucmVkdWNlTGVmdChzLGZ1bmN0aW9uKG1lLE1lKXtyZXR1cm4gbWUmJk1lLmlzUmVhZG9ubHl9LCEwKSk6b3x8KHQmJmFuKGksTGkpP3Q6dm9pZCAwKX1mdW5jdGlvbiBhbihyLGkpe3JldHVybiBhbyhyLGkpfHxpPT09TGkmJmFvKHIsbnQpfHxpPT09bnQmJihyPT09JGF8fCEhKHIuZmxhZ3MmMTI4KSYmZS5pc051bWVyaWNMaXRlcmFsTmFtZShyLnZhbHVlKSl9ZnVuY3Rpb24gVG8ocil7aWYoci5mbGFncyYzNjcwMDE2KXt2YXIgaT1SdShyKTtyZXR1cm4gaS5pbmRleEluZm9zfXJldHVybiBlLmVtcHR5QXJyYXl9ZnVuY3Rpb24gSG4ocil7cmV0dXJuIFRvKFhkKHIpKX1mdW5jdGlvbiBzcyhyLGkpe3JldHVybiB4YShIbihyKSxpKX1mdW5jdGlvbiBjcyhyLGkpe3ZhciB0O3JldHVybih0PXNzKHIsaSkpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC50eXBlfWZ1bmN0aW9uIHdzKHIsaSl7cmV0dXJuIEhuKHIpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gYW4oaSx0LmtleVR5cGUpfSl9ZnVuY3Rpb24gbnUocixpKXtyZXR1cm4gbW4oSG4ociksaSl9ZnVuY3Rpb24gWG8ocixpKXtyZXR1cm4gbnUocixwZyhpKT9LaTpCdShlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGkpKSl9ZnVuY3Rpb24gamwocil7Zm9yKHZhciBpLHQ9MCxvPWUuZ2V0RWZmZWN0aXZlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9ucyhyKTt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpPWUuYXBwZW5kSWZVbmlxdWUoaSxKcyhzLnN5bWJvbCkpfXJldHVybiBpfWZ1bmN0aW9uIFlfKHIpe3ZhciBpPVtdO3JldHVybiByLmZvckVhY2goZnVuY3Rpb24odCxvKXtPbChvKXx8aS5wdXNoKHQpfSksaX1mdW5jdGlvbiBDZChyKXtyZXR1cm4gZS5pc0luSlNGaWxlKHIpJiYoci50eXBlJiZyLnR5cGUua2luZD09PTMxNnx8ZS5nZXRKU0RvY1BhcmFtZXRlclRhZ3Mocikuc29tZShmdW5jdGlvbihpKXt2YXIgdD1pLmlzQnJhY2tldGVkLG89aS50eXBlRXhwcmVzc2lvbjtyZXR1cm4gdHx8ISFvJiZvLnR5cGUua2luZD09PTMxNn0pKX1mdW5jdGlvbiBiXyhyLGkpe2lmKCFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUocikpe3ZhciB0PXFzKGlpLCdcIicrcisnXCInLDUxMik7cmV0dXJuIHQmJmk/c28odCk6dH19ZnVuY3Rpb24ga2Qocil7aWYoZS5oYXNRdWVzdGlvblRva2VuKHIpfHxWbShyKXx8Q2QocikpcmV0dXJuITA7aWYoci5pbml0aWFsaXplcil7dmFyIGk9eWwoci5wYXJlbnQpLHQ9ci5wYXJlbnQucGFyYW1ldGVycy5pbmRleE9mKHIpO3JldHVybiBlLkRlYnVnLmFzc2VydCh0Pj0wKSx0Pj1IbChpLDMpfXZhciBvPWUuZ2V0SW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uKHIucGFyZW50KTtyZXR1cm4gbz8hci50eXBlJiYhci5kb3REb3REb3RUb2tlbiYmci5wYXJlbnQucGFyYW1ldGVycy5pbmRleE9mKHIpPj1vLmFyZ3VtZW50cy5sZW5ndGg6ITF9ZnVuY3Rpb24gcW0ocil7cmV0dXJuIGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHIpJiZyLnF1ZXN0aW9uVG9rZW59ZnVuY3Rpb24gVm0ocil7aWYoIWUuaXNKU0RvY1Byb3BlcnR5TGlrZVRhZyhyKSlyZXR1cm4hMTt2YXIgaT1yLmlzQnJhY2tldGVkLHQ9ci50eXBlRXhwcmVzc2lvbjtyZXR1cm4gaXx8ISF0JiZ0LnR5cGUua2luZD09PTMxNn1mdW5jdGlvbiB2ZyhyLGksdCxvKXtyZXR1cm57a2luZDpyLHBhcmFtZXRlck5hbWU6aSxwYXJhbWV0ZXJJbmRleDp0LHR5cGU6b319ZnVuY3Rpb24gVWwocil7dmFyIGk9MDtpZihyKWZvcih2YXIgdD0wO3Q8ci5sZW5ndGg7dCsrKVExKHJbdF0pfHwoaT10KzEpO3JldHVybiBpfWZ1bmN0aW9uIHpwKHIsaSx0LG8pe3ZhciBzPWUubGVuZ3RoKGkpO2lmKCFzKXJldHVybltdO3ZhciB1PWUubGVuZ3RoKHIpO2lmKG98fHU+PXQmJnU8PXMpe2Zvcih2YXIgaD1yP3Iuc2xpY2UoKTpbXSx6PXU7ejxzO3orKyloW3pdPVBlO2Zvcih2YXIgbWU9ZmIobyksej11O3o8czt6Kyspe3ZhciBNZT1EXyhpW3pdKTtvJiZNZSYmKHdmKE1lLGdyKXx8d2YoTWUsQmEpKSYmKE1lPU9lKSxoW3pdPU1lP3VuKE1lLFVjKGksaCkpOm1lfXJldHVybiBoLmxlbmd0aD1pLmxlbmd0aCxofXJldHVybiByJiZyLnNsaWNlKCl9ZnVuY3Rpb24geWwocil7dmFyIGk9dmEocik7aWYoIWkucmVzb2x2ZWRTaWduYXR1cmUpe3ZhciB0PVtdLG89MCxzPTAsdT12b2lkIDAsaD0hMSx6PWUuZ2V0SW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uKHIpLG1lPWUuaXNKU0RvY0NvbnN0cnVjdFNpZ25hdHVyZShyKSxNZT0heiYmZS5pc0luSlNGaWxlKHIpJiZlLmlzVmFsdWVTaWduYXR1cmVEZWNsYXJhdGlvbihyKSYmIWUuaGFzSlNEb2NQYXJhbWV0ZXJUYWdzKHIpJiYhZS5nZXRKU0RvY1R5cGUocik7TWUmJihvfD0zMik7Zm9yKHZhciAkZT1tZT8xOjA7JGU8ci5wYXJhbWV0ZXJzLmxlbmd0aDskZSsrKXt2YXIgdHI9ci5wYXJhbWV0ZXJzWyRlXSxkcj10ci5zeW1ib2wsRHI9ZS5pc0pTRG9jUGFyYW1ldGVyVGFnKHRyKT90ci50eXBlRXhwcmVzc2lvbiYmdHIudHlwZUV4cHJlc3Npb24udHlwZTp0ci50eXBlO2lmKGRyJiYhIShkci5mbGFncyY0KSYmIWUuaXNCaW5kaW5nUGF0dGVybih0ci5uYW1lKSl7dmFyIFFyPWVzKHRyLGRyLmVzY2FwZWROYW1lLDExMTU1MSx2b2lkIDAsdm9pZCAwLCExKTtkcj1Rcn0kZT09PTAmJmRyLmVzY2FwZWROYW1lPT09XCJ0aGlzXCI/KGg9ITAsdT10ci5zeW1ib2wpOnQucHVzaChkciksRHImJkRyLmtpbmQ9PT0xOTYmJihvfD0yKTt2YXIgbGk9Vm0odHIpfHx0ci5pbml0aWFsaXplcnx8dHIucXVlc3Rpb25Ub2tlbnx8ZS5pc1Jlc3RQYXJhbWV0ZXIodHIpfHx6JiZ0Lmxlbmd0aD56LmFyZ3VtZW50cy5sZW5ndGgmJiFEcnx8Q2QodHIpO2xpfHwocz10Lmxlbmd0aCl9aWYoKHIua2luZD09PTE3Mnx8ci5raW5kPT09MTczKSYmVGQocikmJighaHx8IXUpKXt2YXIgVGk9ci5raW5kPT09MTcyPzE3MzoxNzIsQ2k9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChFdChyKSxUaSk7Q2kmJih1PWNyKENpKSl9dmFyICRpPXIua2luZD09PTE3MT9hYShzbyhyLnBhcmVudC5zeW1ib2wpKTp2b2lkIDAsWmk9JGk/JGkubG9jYWxUeXBlUGFyYW1ldGVyczpqbChyKTsoZS5oYXNSZXN0UGFyYW1ldGVyKHIpfHxlLmlzSW5KU0ZpbGUocikmJmV5KHIsdCkpJiYob3w9MSksKGUuaXNDb25zdHJ1Y3RvclR5cGVOb2RlKHIpJiZlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHIsMTI4KXx8ZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24ocikmJmUuaGFzU3ludGFjdGljTW9kaWZpZXIoci5wYXJlbnQsMTI4KSkmJihvfD00KSxpLnJlc29sdmVkU2lnbmF0dXJlPUZ1KHIsWmksdSx0LHZvaWQgMCx2b2lkIDAscyxvKX1yZXR1cm4gaS5yZXNvbHZlZFNpZ25hdHVyZX1mdW5jdGlvbiBleShyLGkpe2lmKGUuaXNKU0RvY1NpZ25hdHVyZShyKXx8IUdtKHIpKXJldHVybiExO3ZhciB0PWUubGFzdE9yVW5kZWZpbmVkKHIucGFyYW1ldGVycyksbz10P2UuZ2V0SlNEb2NQYXJhbWV0ZXJUYWdzKHQpOmUuZ2V0SlNEb2NUYWdzKHIpLmZpbHRlcihlLmlzSlNEb2NQYXJhbWV0ZXJUYWcpLHM9ZS5maXJzdERlZmluZWQobyxmdW5jdGlvbihoKXtyZXR1cm4gaC50eXBlRXhwcmVzc2lvbiYmZS5pc0pTRG9jVmFyaWFkaWNUeXBlKGgudHlwZUV4cHJlc3Npb24udHlwZSk/aC50eXBlRXhwcmVzc2lvbi50eXBlOnZvaWQgMH0pLHU9b28oMyxcImFyZ3NcIiwzMjc2OCk7cmV0dXJuIHM/dS50eXBlPVpzKFZhKHMudHlwZSkpOih1LmNoZWNrRmxhZ3N8PTY1NTM2LHUuZGVmZXJyYWxQYXJlbnQ9dWksdS5kZWZlcnJhbENvbnN0aXR1ZW50cz1bbW9dLHUuZGVmZXJyYWxXcml0ZUNvbnN0aXR1ZW50cz1bbW9dKSxzJiZpLnBvcCgpLGkucHVzaCh1KSwhMH1mdW5jdGlvbiBybShyKXtpZighIShlLmlzSW5KU0ZpbGUocikmJmUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihyKSkpe3ZhciBpPWUuZ2V0SlNEb2NUeXBlVGFnKHIpO3JldHVybihpPT1udWxsP3ZvaWQgMDppLnR5cGVFeHByZXNzaW9uKSYmaWcoVmEoaS50eXBlRXhwcmVzc2lvbikpfX1mdW5jdGlvbiBLbShyLGkpe3ZhciB0PXJtKHIpO2lmKCEhdCl7dmFyIG89ci5wYXJhbWV0ZXJzLmluZGV4T2YoaSk7cmV0dXJuIGkuZG90RG90RG90VG9rZW4/eW0odCxvKTokdSh0LG8pfX1mdW5jdGlvbiByeShyKXt2YXIgaT1ybShyKTtyZXR1cm4gaSYmeW8oaSl9ZnVuY3Rpb24gR20ocil7dmFyIGk9dmEocik7cmV0dXJuIGkuY29udGFpbnNBcmd1bWVudHNSZWZlcmVuY2U9PT12b2lkIDAmJihpLmZsYWdzJjgxOTI/aS5jb250YWluc0FyZ3VtZW50c1JlZmVyZW5jZT0hMDppLmNvbnRhaW5zQXJndW1lbnRzUmVmZXJlbmNlPXQoci5ib2R5KSksaS5jb250YWluc0FyZ3VtZW50c1JlZmVyZW5jZTtmdW5jdGlvbiB0KG8pe2lmKCFvKXJldHVybiExO3N3aXRjaChvLmtpbmQpe2Nhc2UgNzk6cmV0dXJuIG8uZXNjYXBlZFRleHQ9PT1vci5lc2NhcGVkTmFtZSYmTnYobyk9PT1vcjtjYXNlIDE2NzpjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gby5uYW1lLmtpbmQ9PT0xNjImJnQoby5uYW1lKTtjYXNlIDIwNjpjYXNlIDIwNzpyZXR1cm4gdChvLmV4cHJlc3Npb24pO2Nhc2UgMjk2OnJldHVybiB0KG8uaW5pdGlhbGl6ZXIpO2RlZmF1bHQ6cmV0dXJuIWUubm9kZVN0YXJ0c05ld0xleGljYWxFbnZpcm9ubWVudChvKSYmIWUuaXNQYXJ0T2ZUeXBlTm9kZShvKSYmISFlLmZvckVhY2hDaGlsZChvLHQpfX19ZnVuY3Rpb24gU18ocil7aWYoIXJ8fCFyLmRlY2xhcmF0aW9ucylyZXR1cm4gZS5lbXB0eUFycmF5O2Zvcih2YXIgaT1bXSx0PTA7dDxyLmRlY2xhcmF0aW9ucy5sZW5ndGg7dCsrKXt2YXIgbz1yLmRlY2xhcmF0aW9uc1t0XTtpZighIWUuaXNGdW5jdGlvbkxpa2Uobykpe2lmKHQ+MCYmby5ib2R5KXt2YXIgcz1yLmRlY2xhcmF0aW9uc1t0LTFdO2lmKG8ucGFyZW50PT09cy5wYXJlbnQmJm8ua2luZD09PXMua2luZCYmby5wb3M9PT1zLmVuZCljb250aW51ZX1pLnB1c2goeWwobykpfX1yZXR1cm4gaX1mdW5jdGlvbiBIbShyKXt2YXIgaT1hYyhyLHIpO2lmKGkpe3ZhciB0PVVzKGkpO2lmKHQpcmV0dXJuIEp0KHQpfXJldHVybiBPZX1mdW5jdGlvbiBUXyhyKXtpZihyLnRoaXNQYXJhbWV0ZXIpcmV0dXJuIEp0KHIudGhpc1BhcmFtZXRlcil9ZnVuY3Rpb24gWWMocil7aWYoIXIucmVzb2x2ZWRUeXBlUHJlZGljYXRlKXtpZihyLnRhcmdldCl7dmFyIGk9WWMoci50YXJnZXQpO3IucmVzb2x2ZWRUeXBlUHJlZGljYXRlPWk/QkkoaSxyLm1hcHBlcik6Um99ZWxzZSBpZihyLmNvbXBvc2l0ZVNpZ25hdHVyZXMpci5yZXNvbHZlZFR5cGVQcmVkaWNhdGU9WDMoci5jb21wb3NpdGVTaWduYXR1cmVzLHIuY29tcG9zaXRlS2luZCl8fFJvO2Vsc2V7dmFyIHQ9ci5kZWNsYXJhdGlvbiYmZS5nZXRFZmZlY3RpdmVSZXR1cm5UeXBlTm9kZShyLmRlY2xhcmF0aW9uKSxvPXZvaWQgMDtpZighdCYmZS5pc0luSlNGaWxlKHIuZGVjbGFyYXRpb24pKXt2YXIgcz1ybShyLmRlY2xhcmF0aW9uKTtzJiZyIT09cyYmKG89WWMocykpfXIucmVzb2x2ZWRUeXBlUHJlZGljYXRlPXQmJmUuaXNUeXBlUHJlZGljYXRlTm9kZSh0KT9naCh0LHIpOm98fFJvfWUuRGVidWcuYXNzZXJ0KCEhci5yZXNvbHZlZFR5cGVQcmVkaWNhdGUpfXJldHVybiByLnJlc29sdmVkVHlwZVByZWRpY2F0ZT09PVJvP3ZvaWQgMDpyLnJlc29sdmVkVHlwZVByZWRpY2F0ZX1mdW5jdGlvbiBnaChyLGkpe3ZhciB0PXIucGFyYW1ldGVyTmFtZSxvPXIudHlwZSYmVmEoci50eXBlKTtyZXR1cm4gdC5raW5kPT09MTkyP3ZnKHIuYXNzZXJ0c01vZGlmaWVyPzI6MCx2b2lkIDAsdm9pZCAwLG8pOnZnKHIuYXNzZXJ0c01vZGlmaWVyPzM6MSx0LmVzY2FwZWRUZXh0LGUuZmluZEluZGV4KGkucGFyYW1ldGVycyxmdW5jdGlvbihzKXtyZXR1cm4gcy5lc2NhcGVkTmFtZT09PXQuZXNjYXBlZFRleHR9KSxvKX1mdW5jdGlvbiBpeShyLGksdCl7cmV0dXJuIGkhPT0yMDk3MTUyP1BhKHIsdCk6RG8ocil9ZnVuY3Rpb24geW8ocil7aWYoIXIucmVzb2x2ZWRSZXR1cm5UeXBlKXtpZigheXUociwzKSlyZXR1cm4gUGU7dmFyIGk9ci50YXJnZXQ/dW4oeW8oci50YXJnZXQpLHIubWFwcGVyKTpyLmNvbXBvc2l0ZVNpZ25hdHVyZXM/dW4oaXkoZS5tYXAoci5jb21wb3NpdGVTaWduYXR1cmVzLHlvKSxyLmNvbXBvc2l0ZUtpbmQsMiksci5tYXBwZXIpOnlnKHIuZGVjbGFyYXRpb24pfHwoZS5ub2RlSXNNaXNzaW5nKHIuZGVjbGFyYXRpb24uYm9keSk/T2U6QzAoci5kZWNsYXJhdGlvbikpO2lmKHIuZmxhZ3MmOD9pPUZFKGkpOnIuZmxhZ3MmMTYmJihpPWlfKGkpKSwhZmkoKSl7aWYoci5kZWNsYXJhdGlvbil7dmFyIHQ9ZS5nZXRFZmZlY3RpdmVSZXR1cm5UeXBlTm9kZShyLmRlY2xhcmF0aW9uKTtpZih0KVhyKHQsZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2NpcmN1bGFybHlfcmVmZXJlbmNlc19pdHNlbGYpO2Vsc2UgaWYobil7dmFyIG89ci5kZWNsYXJhdGlvbixzPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24obyk7cz9YcihzLGUuRGlhZ25vc3RpY3MuXzBfaW1wbGljaXRseV9oYXNfcmV0dXJuX3R5cGVfYW55X2JlY2F1c2VfaXRfZG9lc19ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb25fYW5kX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9vbmVfb2ZfaXRzX3JldHVybl9leHByZXNzaW9ucyxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHMpKTpYcihvLGUuRGlhZ25vc3RpY3MuRnVuY3Rpb25faW1wbGljaXRseV9oYXNfcmV0dXJuX3R5cGVfYW55X2JlY2F1c2VfaXRfZG9lc19ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb25fYW5kX2lzX3JlZmVyZW5jZWRfZGlyZWN0bHlfb3JfaW5kaXJlY3RseV9pbl9vbmVfb2ZfaXRzX3JldHVybl9leHByZXNzaW9ucyl9fWk9T2V9ci5yZXNvbHZlZFJldHVyblR5cGU9aX1yZXR1cm4gci5yZXNvbHZlZFJldHVyblR5cGV9ZnVuY3Rpb24geWcocil7aWYoci5raW5kPT09MTcxKXJldHVybiBhYShzbyhyLnBhcmVudC5zeW1ib2wpKTtpZihlLmlzSlNEb2NDb25zdHJ1Y3RTaWduYXR1cmUocikpcmV0dXJuIFZhKHIucGFyYW1ldGVyc1swXS50eXBlKTt2YXIgaT1lLmdldEVmZmVjdGl2ZVJldHVyblR5cGVOb2RlKHIpO2lmKGkpcmV0dXJuIFZhKGkpO2lmKHIua2luZD09PTE3MiYmVGQocikpe3ZhciB0PWUuaXNJbkpTRmlsZShyKSYmS18ocik7aWYodClyZXR1cm4gdDt2YXIgbz1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKEV0KHIpLDE3Mykscz1UZShvKTtpZihzKXJldHVybiBzfXJldHVybiByeShyKX1mdW5jdGlvbiBaMShyKXtyZXR1cm4hci5yZXNvbHZlZFJldHVyblR5cGUmJnYociwzKT49MH1mdW5jdGlvbiBfMyhyKXtyZXR1cm4gaXgocil8fE9lfWZ1bmN0aW9uIGl4KHIpe2lmKEgocikpe3ZhciBpPUp0KHIucGFyYW1ldGVyc1tyLnBhcmFtZXRlcnMubGVuZ3RoLTFdKSx0PVluKGkpP3N2KGkpOmk7cmV0dXJuIHQmJmNzKHQsbnQpfX1mdW5jdGlvbiBYbShyLGksdCxvKXt2YXIgcz1lRChyLHpwKGksci50eXBlUGFyYW1ldGVycyxVbChyLnR5cGVQYXJhbWV0ZXJzKSx0KSk7aWYobyl7dmFyIHU9b2soeW8ocykpO2lmKHUpe3ZhciBoPXhkKHUpO2gudHlwZVBhcmFtZXRlcnM9bzt2YXIgej14ZChzKTtyZXR1cm4gei5yZXNvbHZlZFJldHVyblR5cGU9aW0oaCksen19cmV0dXJuIHN9ZnVuY3Rpb24gZUQocixpKXt2YXIgdD1yLmluc3RhbnRpYXRpb25zfHwoci5pbnN0YW50aWF0aW9ucz1uZXcgZS5NYXApLG89U3UoaSkscz10LmdldChvKTtyZXR1cm4gc3x8dC5zZXQobyxzPW1oKHIsaSkpLHN9ZnVuY3Rpb24gbWgocixpKXtyZXR1cm4gVGcocixwMyhyLGkpLCEwKX1mdW5jdGlvbiBwMyhyLGkpe3JldHVybiBVYyhyLnR5cGVQYXJhbWV0ZXJzLGkpfWZ1bmN0aW9uIFFtKHIpe3JldHVybiByLnR5cGVQYXJhbWV0ZXJzP3IuZXJhc2VkU2lnbmF0dXJlQ2FjaGV8fChyLmVyYXNlZFNpZ25hdHVyZUNhY2hlPWQzKHIpKTpyfWZ1bmN0aW9uIGQzKHIpe3JldHVybiBUZyhyLHNFKHIudHlwZVBhcmFtZXRlcnMpLCEwKX1mdW5jdGlvbiBnMyhyKXtyZXR1cm4gci50eXBlUGFyYW1ldGVycz9yLmNhbm9uaWNhbFNpZ25hdHVyZUNhY2hlfHwoci5jYW5vbmljYWxTaWduYXR1cmVDYWNoZT1tMyhyKSk6cn1mdW5jdGlvbiBtMyhyKXtyZXR1cm4gWG0ocixlLm1hcChyLnR5cGVQYXJhbWV0ZXJzLGZ1bmN0aW9uKGkpe3JldHVybiBpLnRhcmdldCYmIVRjKGkudGFyZ2V0KT9pLnRhcmdldDppfSksZS5pc0luSlNGaWxlKHIuZGVjbGFyYXRpb24pKX1mdW5jdGlvbiB2MyhyKXt2YXIgaT1yLnR5cGVQYXJhbWV0ZXJzO2lmKGkpe2lmKHIuYmFzZVNpZ25hdHVyZUNhY2hlKXJldHVybiByLmJhc2VTaWduYXR1cmVDYWNoZTtmb3IodmFyIHQ9c0UoaSksbz1VYyhpLGUubWFwKGksZnVuY3Rpb24oaCl7cmV0dXJuIFRjKGgpfHxncn0pKSxzPWUubWFwKGksZnVuY3Rpb24oaCl7cmV0dXJuIHVuKGgsbyl8fGdyfSksdT0wO3U8aS5sZW5ndGgtMTt1Kyspcz1lXyhzLG8pO3JldHVybiBzPWVfKHMsdCksci5iYXNlU2lnbmF0dXJlQ2FjaGU9VGcocixVYyhpLHMpLCEwKX1yZXR1cm4gcn1mdW5jdGlvbiBpbShyKXt2YXIgaTtpZighci5pc29sYXRlZFNpZ25hdHVyZVR5cGUpe3ZhciB0PShpPXIuZGVjbGFyYXRpb24pPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5raW5kLG89dD09PXZvaWQgMHx8dD09PTE3MXx8dD09PTE3NXx8dD09PTE4MCxzPXR1KDE2KTtzLm1lbWJlcnM9d2Uscy5wcm9wZXJ0aWVzPWUuZW1wdHlBcnJheSxzLmNhbGxTaWduYXR1cmVzPW8/ZS5lbXB0eUFycmF5OltyXSxzLmNvbnN0cnVjdFNpZ25hdHVyZXM9bz9bcl06ZS5lbXB0eUFycmF5LHMuaW5kZXhJbmZvcz1lLmVtcHR5QXJyYXksci5pc29sYXRlZFNpZ25hdHVyZVR5cGU9c31yZXR1cm4gci5pc29sYXRlZFNpZ25hdHVyZVR5cGV9ZnVuY3Rpb24gdHgocil7cmV0dXJuIHIubWVtYmVycz9yRChyLm1lbWJlcnMpOnZvaWQgMH1mdW5jdGlvbiByRChyKXtyZXR1cm4gci5nZXQoXCJfX2luZGV4XCIpfWZ1bmN0aW9uIHpsKHIsaSx0LG8pe3JldHVybntrZXlUeXBlOnIsdHlwZTppLGlzUmVhZG9ubHk6dCxkZWNsYXJhdGlvbjpvfX1mdW5jdGlvbiBheChyKXt2YXIgaT10eChyKTtyZXR1cm4gaT9ueChpKTplLmVtcHR5QXJyYXl9ZnVuY3Rpb24gbngocil7aWYoci5kZWNsYXJhdGlvbnMpe2Zvcih2YXIgaT1bXSx0PWZ1bmN0aW9uKGgpe2lmKGgucGFyYW1ldGVycy5sZW5ndGg9PT0xKXt2YXIgej1oLnBhcmFtZXRlcnNbMF07ei50eXBlJiZPZChWYSh6LnR5cGUpLGZ1bmN0aW9uKG1lKXt2aChtZSkmJiF4YShpLG1lKSYmaS5wdXNoKHpsKG1lLGgudHlwZT9WYShoLnR5cGUpOk9lLGUuaGFzRWZmZWN0aXZlTW9kaWZpZXIoaCw2NCksaCkpfSl9fSxvPTAscz1yLmRlY2xhcmF0aW9ucztvPHMubGVuZ3RoO28rKyl7dmFyIHU9c1tvXTt0KHUpfXJldHVybiBpfXJldHVybiBlLmVtcHR5QXJyYXl9ZnVuY3Rpb24gdmgocil7cmV0dXJuISEoci5mbGFncyY0MTA4KXx8c20ocil8fCEhKHIuZmxhZ3MmMjA5NzE1MikmJiFydihyKSYmZS5zb21lKHIudHlwZXMsdmgpfWZ1bmN0aW9uIG94KHIpe3JldHVybiBlLm1hcERlZmluZWQoZS5maWx0ZXIoci5zeW1ib2wmJnIuc3ltYm9sLmRlY2xhcmF0aW9ucyxlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKSxlLmdldEVmZmVjdGl2ZUNvbnN0cmFpbnRPZlR5cGVQYXJhbWV0ZXIpWzBdfWZ1bmN0aW9uIHN4KHIsaSl7dmFyIHQsbztpZighKCh0PXIuc3ltYm9sKT09PW51bGx8fHQ9PT12b2lkIDApJiZ0LmRlY2xhcmF0aW9ucylmb3IodmFyIHM9MCx1PXIuc3ltYm9sLmRlY2xhcmF0aW9ucztzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXTtpZihoLnBhcmVudC5raW5kPT09MTkwKXt2YXIgej1lLndhbGtVcFBhcmVudGhlc2l6ZWRUeXBlc0FuZEdldFBhcmVudEFuZENoaWxkKGgucGFyZW50LnBhcmVudCksbWU9elswXSxNZT1tZT09PXZvaWQgMD9oLnBhcmVudDptZSwkZT16WzFdO2lmKCRlLmtpbmQ9PT0xNzgmJiFpKXt2YXIgdHI9JGUsZHI9bVModHIpO2lmKGRyKXt2YXIgRHI9dHIudHlwZUFyZ3VtZW50cy5pbmRleE9mKE1lKTtpZihEcjxkci5sZW5ndGgpe3ZhciBRcj1UYyhkcltEcl0pO2lmKFFyKXt2YXIgbGk9VWMoZHIsUDAodHIsZHIpKSxUaT11bihRcixsaSk7VGkhPT1yJiYobz1lLmFwcGVuZChvLFRpKSl9fX19ZWxzZSBpZigkZS5raW5kPT09MTY0JiYkZS5kb3REb3REb3RUb2tlbnx8JGUua2luZD09PTE4Nnx8JGUua2luZD09PTE5NyYmJGUuZG90RG90RG90VG9rZW4pbz1lLmFwcGVuZChvLFpzKGdyKSk7ZWxzZSBpZigkZS5raW5kPT09MTk5KW89ZS5hcHBlbmQobyxMaSk7ZWxzZSBpZigkZS5raW5kPT09MTYzJiYkZS5wYXJlbnQua2luZD09PTE5NSlvPWUuYXBwZW5kKG8sYXQpO2Vsc2UgaWYoJGUua2luZD09PTE5NSYmJGUudHlwZSYmZS5za2lwUGFyZW50aGVzZXMoJGUudHlwZSk9PT1oLnBhcmVudCYmJGUucGFyZW50LmtpbmQ9PT0xODkmJiRlLnBhcmVudC5leHRlbmRzVHlwZT09PSRlJiYkZS5wYXJlbnQuY2hlY2tUeXBlLmtpbmQ9PT0xOTUmJiRlLnBhcmVudC5jaGVja1R5cGUudHlwZSl7dmFyIENpPSRlLnBhcmVudC5jaGVja1R5cGUsJGk9VmEoQ2kudHlwZSk7bz1lLmFwcGVuZChvLHVuKCRpLFlkKEpzKEV0KENpLnR5cGVQYXJhbWV0ZXIpKSxDaS50eXBlUGFyYW1ldGVyLmNvbnN0cmFpbnQ/VmEoQ2kudHlwZVBhcmFtZXRlci5jb25zdHJhaW50KTphdCkpKX19fXJldHVybiBvJiZEbyhvKX1mdW5jdGlvbiB0bShyKXtpZighci5jb25zdHJhaW50KWlmKHIudGFyZ2V0KXt2YXIgaT1UYyhyLnRhcmdldCk7ci5jb25zdHJhaW50PWk/dW4oaSxyLm1hcHBlcik6S259ZWxzZXt2YXIgdD1veChyKTtpZighdClyLmNvbnN0cmFpbnQ9c3gocil8fEtuO2Vsc2V7dmFyIG89VmEodCk7by5mbGFncyYxJiYhbm4obykmJihvPXQucGFyZW50LnBhcmVudC5raW5kPT09MTk1P2F0OmdyKSxyLmNvbnN0cmFpbnQ9b319cmV0dXJuIHIuY29uc3RyYWludD09PUtuP3ZvaWQgMDpyLmNvbnN0cmFpbnR9ZnVuY3Rpb24gY3gocil7dmFyIGk9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChyLnN5bWJvbCwxNjMpLHQ9ZS5pc0pTRG9jVGVtcGxhdGVUYWcoaS5wYXJlbnQpP2UuZ2V0RWZmZWN0aXZlQ29udGFpbmVyRm9ySlNEb2NUZW1wbGF0ZVRhZyhpLnBhcmVudCk6aS5wYXJlbnQ7cmV0dXJuIHQmJkV0KHQpfWZ1bmN0aW9uIFN1KHIpe3ZhciBpPVwiXCI7aWYocilmb3IodmFyIHQ9ci5sZW5ndGgsbz0wO288dDspe2Zvcih2YXIgcz1yW29dLmlkLHU9MTtvK3U8dCYmcltvK3VdLmlkPT09cyt1Oyl1Kys7aS5sZW5ndGgmJihpKz1cIixcIiksaSs9cyx1PjEmJihpKz1cIjpcIit1KSxvKz11fXJldHVybiBpfWZ1bmN0aW9uIGhnKHIsaSl7cmV0dXJuIHI/XCJAXCIuY29uY2F0KHkocikpKyhpP1wiOlwiLmNvbmNhdChTdShpKSk6XCJcIik6XCJcIn1mdW5jdGlvbiBpRChyLGkpe2Zvcih2YXIgdD0wLG89MCxzPXI7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107dS5mbGFncyZpfHwodHw9ZS5nZXRPYmplY3RGbGFncyh1KSl9cmV0dXJuIHQmNDU4NzUyfWZ1bmN0aW9uIFlmKHIsaSl7dmFyIHQ9U3UoaSksbz1yLmluc3RhbnRpYXRpb25zLmdldCh0KTtyZXR1cm4gb3x8KG89dHUoNCxyLnN5bWJvbCksci5pbnN0YW50aWF0aW9ucy5zZXQodCxvKSxvLm9iamVjdEZsYWdzfD1pP2lEKGksMCk6MCxvLnRhcmdldD1yLG8ucmVzb2x2ZWRUeXBlQXJndW1lbnRzPWkpLG99ZnVuY3Rpb24gdXgocil7dmFyIGk9bWMoci5mbGFncyk7cmV0dXJuIGkuc3ltYm9sPXIuc3ltYm9sLGkub2JqZWN0RmxhZ3M9ci5vYmplY3RGbGFncyxpLnRhcmdldD1yLnRhcmdldCxpLnJlc29sdmVkVHlwZUFyZ3VtZW50cz1yLnJlc29sdmVkVHlwZUFyZ3VtZW50cyxpfWZ1bmN0aW9uIHREKHIsaSx0LG8scyl7aWYoIW8pe289UWQoaSk7dmFyIHU9Ymcobyk7cz10P2VfKHUsdCk6dX12YXIgaD10dSg0LHIuc3ltYm9sKTtyZXR1cm4gaC50YXJnZXQ9cixoLm5vZGU9aSxoLm1hcHBlcj10LGguYWxpYXNTeW1ib2w9byxoLmFsaWFzVHlwZUFyZ3VtZW50cz1zLGh9ZnVuY3Rpb24geG8ocil7dmFyIGksdDtpZighci5yZXNvbHZlZFR5cGVBcmd1bWVudHMpe2lmKCF5dShyLDYpKXJldHVybigoaT1yLnRhcmdldC5sb2NhbFR5cGVQYXJhbWV0ZXJzKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIFBlfSkpfHxlLmVtcHR5QXJyYXk7dmFyIG89ci5ub2RlLHM9bz9vLmtpbmQ9PT0xNzg/ZS5jb25jYXRlbmF0ZShyLnRhcmdldC5vdXRlclR5cGVQYXJhbWV0ZXJzLFAwKG8sci50YXJnZXQubG9jYWxUeXBlUGFyYW1ldGVycykpOm8ua2luZD09PTE4Mz9bVmEoby5lbGVtZW50VHlwZSldOmUubWFwKG8uZWxlbWVudHMsVmEpOmUuZW1wdHlBcnJheTtmaSgpP3IucmVzb2x2ZWRUeXBlQXJndW1lbnRzPXIubWFwcGVyP2VfKHMsci5tYXBwZXIpOnM6KHIucmVzb2x2ZWRUeXBlQXJndW1lbnRzPSgodD1yLnRhcmdldC5sb2NhbFR5cGVQYXJhbWV0ZXJzKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIFBlfSkpfHxlLmVtcHR5QXJyYXksWHIoci5ub2RlfHxJZSxyLnRhcmdldC5zeW1ib2w/ZS5EaWFnbm9zdGljcy5UeXBlX2FyZ3VtZW50c19mb3JfMF9jaXJjdWxhcmx5X3JlZmVyZW5jZV90aGVtc2VsdmVzOmUuRGlhZ25vc3RpY3MuVHVwbGVfdHlwZV9hcmd1bWVudHNfY2lyY3VsYXJseV9yZWZlcmVuY2VfdGhlbXNlbHZlcyxyLnRhcmdldC5zeW1ib2wmJnRuKHIudGFyZ2V0LnN5bWJvbCkpKX1yZXR1cm4gci5yZXNvbHZlZFR5cGVBcmd1bWVudHN9ZnVuY3Rpb24gJF8ocil7cmV0dXJuIGUubGVuZ3RoKHIudGFyZ2V0LnR5cGVQYXJhbWV0ZXJzKX1mdW5jdGlvbiBseChyLGkpe3ZhciB0PWdvKHNvKGkpKSxvPXQubG9jYWxUeXBlUGFyYW1ldGVycztpZihvKXt2YXIgcz1lLmxlbmd0aChyLnR5cGVBcmd1bWVudHMpLHU9VWwobyksaD1lLmlzSW5KU0ZpbGUociksej0hbiYmaDtpZigheiYmKHM8dXx8cz5vLmxlbmd0aCkpe3ZhciBtZT1oJiZlLmlzRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKHIpJiYhZS5pc0pTRG9jQXVnbWVudHNUYWcoci5wYXJlbnQpLE1lPXU9PT1vLmxlbmd0aD9tZT9lLkRpYWdub3N0aWNzLkV4cGVjdGVkXzBfdHlwZV9hcmd1bWVudHNfcHJvdmlkZV90aGVzZV93aXRoX2FuX2V4dGVuZHNfdGFnOmUuRGlhZ25vc3RpY3MuR2VuZXJpY190eXBlXzBfcmVxdWlyZXNfMV90eXBlX2FyZ3VtZW50X3M6bWU/ZS5EaWFnbm9zdGljcy5FeHBlY3RlZF8wXzFfdHlwZV9hcmd1bWVudHNfcHJvdmlkZV90aGVzZV93aXRoX2FuX2V4dGVuZHNfdGFnOmUuRGlhZ25vc3RpY3MuR2VuZXJpY190eXBlXzBfcmVxdWlyZXNfYmV0d2Vlbl8xX2FuZF8yX3R5cGVfYXJndW1lbnRzLCRlPU90KHQsdm9pZCAwLDIpO2lmKFhyKHIsTWUsJGUsdSxvLmxlbmd0aCksIWgpcmV0dXJuIFBlfWlmKHIua2luZD09PTE3OCYmd3gocixlLmxlbmd0aChyLnR5cGVBcmd1bWVudHMpIT09by5sZW5ndGgpKXJldHVybiB0RCh0LHIsdm9pZCAwKTt2YXIgdHI9ZS5jb25jYXRlbmF0ZSh0Lm91dGVyVHlwZVBhcmFtZXRlcnMsenAoYmgociksbyx1LGgpKTtyZXR1cm4gWWYodCx0cil9cmV0dXJuIFdwKHIsaSk/dDpQZX1mdW5jdGlvbiBhbShyLGksdCxvKXt2YXIgcz1nbyhyKTtpZihzPT09RGUmJnguaGFzKHIuZXNjYXBlZE5hbWUpJiZpJiZpLmxlbmd0aD09PTEpcmV0dXJuIFRoKHIsaVswXSk7dmFyIHU9QWEociksaD11LnR5cGVQYXJhbWV0ZXJzLHo9U3UoaSkraGcodCxvKSxtZT11Lmluc3RhbnRpYXRpb25zLmdldCh6KTtyZXR1cm4gbWV8fHUuaW5zdGFudGlhdGlvbnMuc2V0KHosbWU9bEUocyxVYyhoLHpwKGksaCxVbChoKSxlLmlzSW5KU0ZpbGUoci52YWx1ZURlY2xhcmF0aW9uKSkpLHQsbykpLG1lfWZ1bmN0aW9uIHkzKHIsaSl7aWYoZS5nZXRDaGVja0ZsYWdzKGkpJjEwNDg1NzYpe3ZhciB0PWJoKHIpLG89aGcoaSx0KSxzPUFyLmdldChvKTtyZXR1cm4gc3x8KHM9bXMoMSxcImVycm9yXCIpLHMuYWxpYXNTeW1ib2w9aSxzLmFsaWFzVHlwZUFyZ3VtZW50cz10LEFyLnNldChvLHMpKSxzfXZhciB1PWdvKGkpLGg9QWEoaSkudHlwZVBhcmFtZXRlcnM7aWYoaCl7dmFyIHo9ZS5sZW5ndGgoci50eXBlQXJndW1lbnRzKSxtZT1VbChoKTtpZih6PG1lfHx6PmgubGVuZ3RoKXJldHVybiBYcihyLG1lPT09aC5sZW5ndGg/ZS5EaWFnbm9zdGljcy5HZW5lcmljX3R5cGVfMF9yZXF1aXJlc18xX3R5cGVfYXJndW1lbnRfczplLkRpYWdub3N0aWNzLkdlbmVyaWNfdHlwZV8wX3JlcXVpcmVzX2JldHdlZW5fMV9hbmRfMl90eXBlX2FyZ3VtZW50cyx0bihpKSxtZSxoLmxlbmd0aCksUGU7dmFyIE1lPVFkKHIpLCRlPU1lJiYoZngoaSl8fCFmeChNZSkpP01lOnZvaWQgMDtyZXR1cm4gYW0oaSxiaChyKSwkZSxiZygkZSkpfXJldHVybiBXcChyLGkpP3U6UGV9ZnVuY3Rpb24gZngocil7dmFyIGksdD0oaT1yLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmZpbmQoZS5pc1R5cGVBbGlhcyk7cmV0dXJuISEodCYmZS5nZXRDb250YWluaW5nRnVuY3Rpb24odCkpfWZ1bmN0aW9uIGgzKHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMTc4OnJldHVybiByLnR5cGVOYW1lO2Nhc2UgMjI4OnZhciBpPXIuZXhwcmVzc2lvbjtpZihlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24oaSkpcmV0dXJuIGl9fWZ1bmN0aW9uIF94KHIpe3JldHVybiByLnBhcmVudD9cIlwiLmNvbmNhdChfeChyLnBhcmVudCksXCIuXCIpLmNvbmNhdChyLmVzY2FwZWROYW1lKTpyLmVzY2FwZWROYW1lfWZ1bmN0aW9uIHloKHIpe3ZhciBpPXIua2luZD09PTE2MT9yLnJpZ2h0OnIua2luZD09PTIwNj9yLm5hbWU6cix0PWkuZXNjYXBlZFRleHQ7aWYodCl7dmFyIG89ci5raW5kPT09MTYxP3loKHIubGVmdCk6ci5raW5kPT09MjA2P3loKHIuZXhwcmVzc2lvbik6dm9pZCAwLHM9bz9cIlwiLmNvbmNhdChfeChvKSxcIi5cIikuY29uY2F0KHQpOnQsdT1tci5nZXQocyk7cmV0dXJuIHV8fChtci5zZXQocyx1PW9vKDUyNDI4OCx0LDEwNDg1NzYpKSx1LnBhcmVudD1vLHUuZGVjbGFyZWRUeXBlPVVlKSx1fXJldHVybiB4ZX1mdW5jdGlvbiBubShyLGksdCl7dmFyIG89aDMocik7aWYoIW8pcmV0dXJuIHhlO3ZhciBzPURzKG8saSx0KTtyZXR1cm4gcyYmcyE9PXhlP3M6dD94ZTp5aChvKX1mdW5jdGlvbiBoaChyLGkpe2lmKGk9PT14ZSlyZXR1cm4gUGU7aWYoaT1DYyhpKXx8aSxpLmZsYWdzJjk2KXJldHVybiBseChyLGkpO2lmKGkuZmxhZ3MmNTI0Mjg4KXJldHVybiB5MyhyLGkpO3ZhciB0PVZkKGkpO2lmKHQpcmV0dXJuIFdwKHIsaSk/amModCk6UGU7aWYoaS5mbGFncyYxMTE1NTEmJkRoKHIpKXt2YXIgbz1EMyhyLGkpO3JldHVybiBvfHwobm0ociw3ODg5NjgpLEp0KGkpKX1yZXR1cm4gUGV9ZnVuY3Rpb24gRDMocixpKXt2YXIgdD12YShyKTtpZighdC5yZXNvbHZlZEpTRG9jVHlwZSl7dmFyIG89SnQoaSkscz1vO2lmKGkudmFsdWVEZWNsYXJhdGlvbil7dmFyIHU9ci5raW5kPT09MjAwJiZyLnF1YWxpZmllcjtvLnN5bWJvbCYmby5zeW1ib2whPT1pJiZ1JiYocz1oaChyLG8uc3ltYm9sKSl9dC5yZXNvbHZlZEpTRG9jVHlwZT1zfXJldHVybiB0LnJlc29sdmVkSlNEb2NUeXBlfWZ1bmN0aW9uIHB4KHIsaSl7aWYoaS5mbGFncyYzfHxpPT09cilyZXR1cm4gcjt2YXIgdD1cIlwiLmNvbmNhdChmdShyKSxcIj5cIikuY29uY2F0KGZ1KGkpKSxvPVplLmdldCh0KTtpZihvKXJldHVybiBvO3ZhciBzPW1jKDMzNTU0NDMyKTtyZXR1cm4gcy5iYXNlVHlwZT1yLHMuc3Vic3RpdHV0ZT1pLFplLnNldCh0LHMpLHN9ZnVuY3Rpb24gZHgocil7cmV0dXJuIHIua2luZD09PTE4NCYmci5lbGVtZW50cy5sZW5ndGg9PT0xfWZ1bmN0aW9uIGd4KHIsaSx0KXtyZXR1cm4gZHgoaSkmJmR4KHQpP2d4KHIsaS5lbGVtZW50c1swXSx0LmVsZW1lbnRzWzBdKTpycChWYShpKSk9PT1ycChyKT9WYSh0KTp2b2lkIDB9ZnVuY3Rpb24gbXgocixpKXtmb3IodmFyIHQsbz0hMDtpJiYhZS5pc1N0YXRlbWVudChpKSYmaS5raW5kIT09MzIwOyl7dmFyIHM9aS5wYXJlbnQ7aWYocy5raW5kPT09MTY0JiYobz0hbyksKG98fHIuZmxhZ3MmODY1MDc1MikmJnMua2luZD09PTE4OSYmaT09PXMudHJ1ZVR5cGUpe3ZhciB1PWd4KHIscy5jaGVja1R5cGUscy5leHRlbmRzVHlwZSk7dSYmKHQ9ZS5hcHBlbmQodCx1KSl9ZWxzZSBpZihyLmZsYWdzJjI2MjE0NCYmcy5raW5kPT09MTk1JiZpPT09cy50eXBlKXt2YXIgaD1WYShzKTtpZihEdShoKT09PXJwKHIpKXt2YXIgej1JaChoKTtpZih6KXt2YXIgdT1UYyh6KTt1JiZnZih1LFBkKSYmKHQ9ZS5hcHBlbmQodCxQYShbbnQsJGFdKSkpfX19aT1zfXJldHVybiB0P3B4KHIsRG8oZS5hcHBlbmQodCxyKSkpOnJ9ZnVuY3Rpb24gRGgocil7cmV0dXJuISEoci5mbGFncyY4Mzg4NjA4KSYmKHIua2luZD09PTE3OHx8ci5raW5kPT09MjAwKX1mdW5jdGlvbiBXcChyLGkpe3JldHVybiByLnR5cGVBcmd1bWVudHM/KFhyKHIsZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2dlbmVyaWMsaT90bihpKTpyLnR5cGVOYW1lP2UuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcoci50eXBlTmFtZSk6QyksITEpOiEwfWZ1bmN0aW9uIHZ4KHIpe2lmKGUuaXNJZGVudGlmaWVyKHIudHlwZU5hbWUpKXt2YXIgaT1yLnR5cGVBcmd1bWVudHM7c3dpdGNoKHIudHlwZU5hbWUuZXNjYXBlZFRleHQpe2Nhc2VcIlN0cmluZ1wiOnJldHVybiBXcChyKSxMaTtjYXNlXCJOdW1iZXJcIjpyZXR1cm4gV3AociksbnQ7Y2FzZVwiQm9vbGVhblwiOnJldHVybiBXcChyKSxJaTtjYXNlXCJWb2lkXCI6cmV0dXJuIFdwKHIpLEZpO2Nhc2VcIlVuZGVmaW5lZFwiOnJldHVybiBXcChyKSxUcjtjYXNlXCJOdWxsXCI6cmV0dXJuIFdwKHIpLFdpO2Nhc2VcIkZ1bmN0aW9uXCI6Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm4gV3AociksYnI7Y2FzZVwiYXJyYXlcIjpyZXR1cm4oIWl8fCFpLmxlbmd0aCkmJiFuP21vOnZvaWQgMDtjYXNlXCJwcm9taXNlXCI6cmV0dXJuKCFpfHwhaS5sZW5ndGgpJiYhbj9OeShPZSk6dm9pZCAwO2Nhc2VcIk9iamVjdFwiOmlmKGkmJmkubGVuZ3RoPT09Mil7aWYoZS5pc0pTRG9jSW5kZXhTaWduYXR1cmUocikpe3ZhciB0PVZhKGlbMF0pLG89VmEoaVsxXSkscz10PT09TGl8fHQ9PT1udD9bemwodCxvLCExKV06ZS5lbXB0eUFycmF5O3JldHVybiBycyh2b2lkIDAsd2UsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxzKX1yZXR1cm4gT2V9cmV0dXJuIFdwKHIpLG4/dm9pZCAwOk9lfX19ZnVuY3Rpb24gYjMocil7dmFyIGk9VmEoci50eXBlKTtyZXR1cm4gWWU/VWgoaSw2NTUzNik6aX1mdW5jdGlvbiB0eShyKXt2YXIgaT12YShyKTtpZighaS5yZXNvbHZlZFR5cGUpe2lmKGUuaXNDb25zdFR5cGVSZWZlcmVuY2UocikmJmUuaXNBc3NlcnRpb25FeHByZXNzaW9uKHIucGFyZW50KSlyZXR1cm4gaS5yZXNvbHZlZFN5bWJvbD14ZSxpLnJlc29sdmVkVHlwZT1PcyhyLnBhcmVudC5leHByZXNzaW9uKTt2YXIgdD12b2lkIDAsbz12b2lkIDAscz03ODg5Njg7RGgocikmJihvPXZ4KHIpLG98fCh0PW5tKHIscywhMCksdD09PXhlP3Q9bm0ocixzfDExMTU1MSk6bm0ocixzKSxvPWhoKHIsdCkpKSxvfHwodD1ubShyLHMpLG89aGgocix0KSksaS5yZXNvbHZlZFN5bWJvbD10LGkucmVzb2x2ZWRUeXBlPW99cmV0dXJuIGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIGJoKHIpe3JldHVybiBlLm1hcChyLnR5cGVBcmd1bWVudHMsVmEpfWZ1bmN0aW9uIHl4KHIpe3ZhciBpPXZhKHIpO2lmKCFpLnJlc29sdmVkVHlwZSl7dmFyIHQ9a2socik7aS5yZXNvbHZlZFR5cGU9amMoJGModCkpfXJldHVybiBpLnJlc29sdmVkVHlwZX1mdW5jdGlvbiBoeChyLGkpe2Z1bmN0aW9uIHQocyl7dmFyIHU9cy5kZWNsYXJhdGlvbnM7aWYodSlmb3IodmFyIGg9MCx6PXU7aDx6Lmxlbmd0aDtoKyspe3ZhciBtZT16W2hdO3N3aXRjaChtZS5raW5kKXtjYXNlIDI1NzpjYXNlIDI1ODpjYXNlIDI2MDpyZXR1cm4gbWV9fX1pZighcilyZXR1cm4gaT9rbjpCYTt2YXIgbz1nbyhyKTtyZXR1cm4gby5mbGFncyY1MjQyODg/ZS5sZW5ndGgoby50eXBlUGFyYW1ldGVycykhPT1pPyhYcih0KHIpLGUuRGlhZ25vc3RpY3MuR2xvYmFsX3R5cGVfMF9tdXN0X2hhdmVfMV90eXBlX3BhcmFtZXRlcl9zLGUuc3ltYm9sTmFtZShyKSxpKSxpP2tuOkJhKTpvOihYcih0KHIpLGUuRGlhZ25vc3RpY3MuR2xvYmFsX3R5cGVfMF9tdXN0X2JlX2FfY2xhc3Nfb3JfaW50ZXJmYWNlX3R5cGUsZS5zeW1ib2xOYW1lKHIpKSxpP2tuOkJhKX1mdW5jdGlvbiBEeChyLGkpe3JldHVybiBZbShyLDExMTU1MSxpP2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfZ2xvYmFsX3ZhbHVlXzA6dm9pZCAwKX1mdW5jdGlvbiBieChyLGkpe3JldHVybiBZbShyLDc4ODk2OCxpP2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfZ2xvYmFsX3R5cGVfMDp2b2lkIDApfWZ1bmN0aW9uIGFEKHIsaSx0KXt2YXIgbz1ZbShyLDc4ODk2OCx0P2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfZ2xvYmFsX3R5cGVfMDp2b2lkIDApO2lmKG8mJihnbyhvKSxlLmxlbmd0aChBYShvKS50eXBlUGFyYW1ldGVycykhPT1pKSl7dmFyIHM9by5kZWNsYXJhdGlvbnMmJmUuZmluZChvLmRlY2xhcmF0aW9ucyxlLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24pO1hyKHMsZS5EaWFnbm9zdGljcy5HbG9iYWxfdHlwZV8wX211c3RfaGF2ZV8xX3R5cGVfcGFyYW1ldGVyX3MsZS5zeW1ib2xOYW1lKG8pLGkpO3JldHVybn1yZXR1cm4gb31mdW5jdGlvbiBZbShyLGksdCl7cmV0dXJuIGVzKHZvaWQgMCxyLGksdCxyLCExLCExLCExKX1mdW5jdGlvbiBsYyhyLGksdCl7dmFyIG89Yngocix0KTtyZXR1cm4gb3x8dD9oeChvLGkpOnZvaWQgMH1mdW5jdGlvbiBTMygpe3JldHVybiBYc3x8KFhzPWxjKFwiVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3JcIiwxLCEwKXx8a24pfWZ1bmN0aW9uIFQzKCl7cmV0dXJuIHB0fHwocHQ9bGMoXCJUZW1wbGF0ZVN0cmluZ3NBcnJheVwiLDAsITApfHxCYSl9ZnVuY3Rpb24gU3goKXtyZXR1cm4gUHR8fChQdD1sYyhcIkltcG9ydE1ldGFcIiwwLCEwKXx8QmEpfWZ1bmN0aW9uIFR4KCl7aWYoIWdhKXt2YXIgcj1vbygwLFwiSW1wb3J0TWV0YUV4cHJlc3Npb25cIiksaT1TeCgpLHQ9b28oNCxcIm1ldGFcIiw4KTt0LnBhcmVudD1yLHQudHlwZT1pO3ZhciBvPWUuY3JlYXRlU3ltYm9sVGFibGUoW3RdKTtyLm1lbWJlcnM9byxnYT1ycyhyLG8sZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpfXJldHVybiBnYX1mdW5jdGlvbiB4eChyKXtyZXR1cm4gdWF8fCh1YT1sYyhcIkltcG9ydENhbGxPcHRpb25zXCIsMCxyKSl8fEJhfWZ1bmN0aW9uIEV4KHIpe3JldHVybiBQY3x8KFBjPUR4KFwiU3ltYm9sXCIscikpfWZ1bmN0aW9uIHgzKHIpe3JldHVybiBWY3x8KFZjPWJ4KFwiU3ltYm9sQ29uc3RydWN0b3JcIixyKSl9ZnVuY3Rpb24gQ3goKXtyZXR1cm4gS2N8fChLYz1sYyhcIlN5bWJvbFwiLDAsITEpKXx8QmF9ZnVuY3Rpb24gYXkocil7cmV0dXJuIHBjfHwocGM9bGMoXCJQcm9taXNlXCIsMSxyKSl8fGtufWZ1bmN0aW9uIGt4KHIpe3JldHVybiBoc3x8KGhzPWxjKFwiUHJvbWlzZUxpa2VcIiwxLHIpKXx8a259ZnVuY3Rpb24gbkQocil7cmV0dXJuIHRjfHwodGM9RHgoXCJQcm9taXNlXCIscikpfWZ1bmN0aW9uIEUzKHIpe3JldHVybiBwc3x8KHBzPWxjKFwiUHJvbWlzZUNvbnN0cnVjdG9yTGlrZVwiLDAscikpfHxCYX1mdW5jdGlvbiBDMyhyKXtyZXR1cm4geWl8fCh5aT1sYyhcIkFzeW5jSXRlcmFibGVcIiwxLHIpKXx8a259ZnVuY3Rpb24gazMocil7cmV0dXJuIHFpfHwocWk9bGMoXCJBc3luY0l0ZXJhdG9yXCIsMyxyKSl8fGtufWZ1bmN0aW9uIEEzKHIpe3JldHVybiBqZXx8KGplPWxjKFwiQXN5bmNJdGVyYWJsZUl0ZXJhdG9yXCIsMSxyKSl8fGtufWZ1bmN0aW9uIE4zKHIpe3JldHVybiBIcnx8KEhyPWxjKFwiQXN5bmNHZW5lcmF0b3JcIiwzLHIpKXx8a259ZnVuY3Rpb24gQXgocil7cmV0dXJuIFFzfHwoUXM9bGMoXCJJdGVyYWJsZVwiLDEscikpfHxrbn1mdW5jdGlvbiBQMyhyKXtyZXR1cm4ganN8fChqcz1sYyhcIkl0ZXJhdG9yXCIsMyxyKSl8fGtufWZ1bmN0aW9uIEkzKHIpe3JldHVybiBkc3x8KGRzPWxjKFwiSXRlcmFibGVJdGVyYXRvclwiLDEscikpfHxrbn1mdW5jdGlvbiB3MyhyKXtyZXR1cm4gSml8fChKaT1sYyhcIkdlbmVyYXRvclwiLDMscikpfHxrbn1mdW5jdGlvbiBPMyhyKXtyZXR1cm4gY2V8fChjZT1sYyhcIkl0ZXJhdG9yWWllbGRSZXN1bHRcIiwxLHIpKXx8a259ZnVuY3Rpb24gRjMocil7cmV0dXJuIFJyfHwoUnI9bGMoXCJJdGVyYXRvclJldHVyblJlc3VsdFwiLDEscikpfHxrbn1mdW5jdGlvbiBOeChyLGkpe2k9PT12b2lkIDAmJihpPTApO3ZhciB0PVltKHIsNzg4OTY4LHZvaWQgMCk7cmV0dXJuIHQmJmh4KHQsaSl9ZnVuY3Rpb24gTTMoKXtyZXR1cm4gWG58fChYbj1hRChcIkV4dHJhY3RcIiwyLCEwKXx8eGUpLFhuPT09eGU/dm9pZCAwOlhufWZ1bmN0aW9uIEwzKCl7cmV0dXJuIGpyfHwoanI9YUQoXCJPbWl0XCIsMiwhMCl8fHhlKSxqcj09PXhlP3ZvaWQgMDpqcn1mdW5jdGlvbiBvRChyKXtyZXR1cm4gZm98fChmbz1hRChcIkF3YWl0ZWRcIiwxLHIpfHwocj94ZTp2b2lkIDApKSxmbz09PXhlP3ZvaWQgMDpmb31mdW5jdGlvbiBSMygpe3JldHVybiB4c3x8KHhzPWxjKFwiQmlnSW50XCIsMCwhMSkpfHxCYX1mdW5jdGlvbiAkbShyLGkpe3JldHVybiByIT09a24/WWYocixpKTpCYX1mdW5jdGlvbiBQeChyKXtyZXR1cm4gJG0oUzMoKSxbcl0pfWZ1bmN0aW9uIEIzKHIpe3JldHVybiAkbShBeCghMCksW3JdKX1mdW5jdGlvbiBacyhyLGkpe3JldHVybiAkbShpP1FpOlBpLFtyXSl9ZnVuY3Rpb24gc0Qocil7c3dpdGNoKHIua2luZCl7Y2FzZSAxODU6cmV0dXJuIDI7Y2FzZSAxODY6cmV0dXJuIEl4KHIpO2Nhc2UgMTk3OnJldHVybiByLnF1ZXN0aW9uVG9rZW4/MjpyLmRvdERvdERvdFRva2VuP0l4KHIpOjE7ZGVmYXVsdDpyZXR1cm4gMX19ZnVuY3Rpb24gSXgocil7cmV0dXJuIHN5KHIudHlwZSk/NDo4fWZ1bmN0aW9uIEozKHIpe3ZhciBpPVUzKHIucGFyZW50KSx0PXN5KHIpO2lmKHQpcmV0dXJuIGk/UWk6UGk7dmFyIG89ZS5tYXAoci5lbGVtZW50cyxzRCkscz1lLnNvbWUoci5lbGVtZW50cyxmdW5jdGlvbih1KXtyZXR1cm4gdS5raW5kIT09MTk3fSk7cmV0dXJuIGNEKG8saSxzP3ZvaWQgMDpyLmVsZW1lbnRzKX1mdW5jdGlvbiB3eChyLGkpe3JldHVybiEhUWQocil8fE94KHIpJiYoci5raW5kPT09MTgzP3hfKHIuZWxlbWVudFR5cGUpOnIua2luZD09PTE4ND9lLnNvbWUoci5lbGVtZW50cyx4Xyk6aXx8ZS5zb21lKHIudHlwZUFyZ3VtZW50cyx4XykpfWZ1bmN0aW9uIE94KHIpe3ZhciBpPXIucGFyZW50O3N3aXRjaChpLmtpbmQpe2Nhc2UgMTkxOmNhc2UgMTk3OmNhc2UgMTc4OmNhc2UgMTg3OmNhc2UgMTg4OmNhc2UgMTk0OmNhc2UgMTg5OmNhc2UgMTkzOmNhc2UgMTgzOmNhc2UgMTg0OnJldHVybiBPeChpKTtjYXNlIDI1OTpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB4XyhyKXtzd2l0Y2goci5raW5kKXtjYXNlIDE3ODpyZXR1cm4gRGgocil8fCEhKG5tKHIsNzg4OTY4KS5mbGFncyY1MjQyODgpO2Nhc2UgMTgxOnJldHVybiEwO2Nhc2UgMTkzOnJldHVybiByLm9wZXJhdG9yIT09MTU0JiZ4XyhyLnR5cGUpO2Nhc2UgMTkxOmNhc2UgMTg1OmNhc2UgMTk3OmNhc2UgMzE2OmNhc2UgMzE0OmNhc2UgMzE1OmNhc2UgMzA5OnJldHVybiB4XyhyLnR5cGUpO2Nhc2UgMTg2OnJldHVybiByLnR5cGUua2luZCE9PTE4M3x8eF8oci50eXBlLmVsZW1lbnRUeXBlKTtjYXNlIDE4NzpjYXNlIDE4ODpyZXR1cm4gZS5zb21lKHIudHlwZXMseF8pO2Nhc2UgMTk0OnJldHVybiB4XyhyLm9iamVjdFR5cGUpfHx4XyhyLmluZGV4VHlwZSk7Y2FzZSAxODk6cmV0dXJuIHhfKHIuY2hlY2tUeXBlKXx8eF8oci5leHRlbmRzVHlwZSl8fHhfKHIudHJ1ZVR5cGUpfHx4XyhyLmZhbHNlVHlwZSl9cmV0dXJuITF9ZnVuY3Rpb24gajMocil7dmFyIGk9dmEocik7aWYoIWkucmVzb2x2ZWRUeXBlKXt2YXIgdD1KMyhyKTtpZih0PT09a24paS5yZXNvbHZlZFR5cGU9QmE7ZWxzZSBpZighKHIua2luZD09PTE4NCYmZS5zb21lKHIuZWxlbWVudHMsZnVuY3Rpb24ocyl7cmV0dXJuISEoc0QocykmOCl9KSkmJnd4KHIpKWkucmVzb2x2ZWRUeXBlPXIua2luZD09PTE4NCYmci5lbGVtZW50cy5sZW5ndGg9PT0wP3Q6dEQodCxyLHZvaWQgMCk7ZWxzZXt2YXIgbz1yLmtpbmQ9PT0xODM/W1ZhKHIuZWxlbWVudFR5cGUpXTplLm1hcChyLmVsZW1lbnRzLFZhKTtpLnJlc29sdmVkVHlwZT11RCh0LG8pfX1yZXR1cm4gaS5yZXNvbHZlZFR5cGV9ZnVuY3Rpb24gVTMocil7cmV0dXJuIGUuaXNUeXBlT3BlcmF0b3JOb2RlKHIpJiZyLm9wZXJhdG9yPT09MTQ1fWZ1bmN0aW9uIFdsKHIsaSx0LG8pe3Q9PT12b2lkIDAmJih0PSExKTt2YXIgcz1jRChpfHxlLm1hcChyLGZ1bmN0aW9uKHUpe3JldHVybiAxfSksdCxvKTtyZXR1cm4gcz09PWtuP0JhOnIubGVuZ3RoP3VEKHMscik6c31mdW5jdGlvbiBjRChyLGksdCl7aWYoci5sZW5ndGg9PT0xJiZyWzBdJjQpcmV0dXJuIGk/UWk6UGk7dmFyIG89ZS5tYXAocixmdW5jdGlvbih1KXtyZXR1cm4gdSYxP1wiI1wiOnUmMj9cIj9cIjp1JjQ/XCIuXCI6XCIqXCJ9KS5qb2luKCkrKGk/XCJSXCI6XCJcIikrKHQmJnQubGVuZ3RoP1wiLFwiK2UubWFwKHQsQSkuam9pbihcIixcIik6XCJcIikscz1ldC5nZXQobyk7cmV0dXJuIHN8fGV0LnNldChvLHM9ejMocixpLHQpKSxzfWZ1bmN0aW9uIHozKHIsaSx0KXt2YXIgbz1yLmxlbmd0aCxzPWUuY291bnRXaGVyZShyLGZ1bmN0aW9uKFRpKXtyZXR1cm4hIShUaSY5KX0pLHUsaD1bXSx6PTA7aWYobyl7dT1uZXcgQXJyYXkobyk7Zm9yKHZhciBtZT0wO21lPG87bWUrKyl7dmFyIE1lPXVbbWVdPUhjKCksJGU9clttZV07aWYoenw9JGUsISh6JjEyKSl7dmFyIHRyPW9vKDR8KCRlJjI/MTY3NzcyMTY6MCksXCJcIittZSxpPzg6MCk7dHIudHVwbGVMYWJlbERlY2xhcmF0aW9uPXQ9PW51bGw/dm9pZCAwOnRbbWVdLHRyLnR5cGU9TWUsaC5wdXNoKHRyKX19fXZhciBkcj1oLmxlbmd0aCxEcj1vbyg0LFwibGVuZ3RoXCIsaT84OjApO2lmKHomMTIpRHIudHlwZT1udDtlbHNle2Zvcih2YXIgUXI9W10sbWU9czttZTw9bzttZSsrKVFyLnB1c2goSWYobWUpKTtEci50eXBlPVBhKFFyKX1oLnB1c2goRHIpO3ZhciBsaT10dSgxMik7cmV0dXJuIGxpLnR5cGVQYXJhbWV0ZXJzPXUsbGkub3V0ZXJUeXBlUGFyYW1ldGVycz12b2lkIDAsbGkubG9jYWxUeXBlUGFyYW1ldGVycz11LGxpLmluc3RhbnRpYXRpb25zPW5ldyBlLk1hcCxsaS5pbnN0YW50aWF0aW9ucy5zZXQoU3UobGkudHlwZVBhcmFtZXRlcnMpLGxpKSxsaS50YXJnZXQ9bGksbGkucmVzb2x2ZWRUeXBlQXJndW1lbnRzPWxpLnR5cGVQYXJhbWV0ZXJzLGxpLnRoaXNUeXBlPUhjKCksbGkudGhpc1R5cGUuaXNUaGlzVHlwZT0hMCxsaS50aGlzVHlwZS5jb25zdHJhaW50PWxpLGxpLmRlY2xhcmVkUHJvcGVydGllcz1oLGxpLmRlY2xhcmVkQ2FsbFNpZ25hdHVyZXM9ZS5lbXB0eUFycmF5LGxpLmRlY2xhcmVkQ29uc3RydWN0U2lnbmF0dXJlcz1lLmVtcHR5QXJyYXksbGkuZGVjbGFyZWRJbmRleEluZm9zPWUuZW1wdHlBcnJheSxsaS5lbGVtZW50RmxhZ3M9cixsaS5taW5MZW5ndGg9cyxsaS5maXhlZExlbmd0aD1kcixsaS5oYXNSZXN0RWxlbWVudD0hISh6JjEyKSxsaS5jb21iaW5lZEZsYWdzPXosbGkucmVhZG9ubHk9aSxsaS5sYWJlbGVkRWxlbWVudERlY2xhcmF0aW9ucz10LGxpfWZ1bmN0aW9uIHVEKHIsaSl7cmV0dXJuIHIub2JqZWN0RmxhZ3MmOD9GeChyLGkpOllmKHIsaSl9ZnVuY3Rpb24gRngocixpKXt2YXIgdCxvLHM7aWYoIShyLmNvbWJpbmVkRmxhZ3MmMTQpKXJldHVybiBZZihyLGkpO2lmKHIuY29tYmluZWRGbGFncyY4KXt2YXIgdT1lLmZpbmRJbmRleChpLGZ1bmN0aW9uKENpLCRpKXtyZXR1cm4hIShyLmVsZW1lbnRGbGFnc1skaV0mOCYmQ2kuZmxhZ3MmMTE3OTY0OCl9KTtpZih1Pj0wKXJldHVybiBueShlLm1hcChpLGZ1bmN0aW9uKENpLCRpKXtyZXR1cm4gci5lbGVtZW50RmxhZ3NbJGldJjg/Q2k6Z3J9KSk/U3MoaVt1XSxmdW5jdGlvbihDaSl7cmV0dXJuIEZ4KHIsZS5yZXBsYWNlRWxlbWVudChpLHUsQ2kpKX0pOlBlfWZvcih2YXIgaD1bXSx6PVtdLG1lPVtdLE1lPS0xLCRlPS0xLHRyPS0xLGRyPWZ1bmN0aW9uKENpKXt2YXIgJGk9aVtDaV0sWmk9ci5lbGVtZW50RmxhZ3NbQ2ldO2lmKFppJjgpaWYoJGkuZmxhZ3MmNTg5ODI0MDB8fEJjKCRpKSlUaSgkaSw4LCh0PXIubGFiZWxlZEVsZW1lbnREZWNsYXJhdGlvbnMpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dFtDaV0pO2Vsc2UgaWYoWW4oJGkpKXt2YXIgcXQ9eG8oJGkpO2lmKHF0Lmxlbmd0aCtoLmxlbmd0aD49MWU0KXJldHVybiBYcihJZSxlLmlzUGFydE9mVHlwZU5vZGUoSWUpP2UuRGlhZ25vc3RpY3MuVHlwZV9wcm9kdWNlc19hX3R1cGxlX3R5cGVfdGhhdF9pc190b29fbGFyZ2VfdG9fcmVwcmVzZW50OmUuRGlhZ25vc3RpY3MuRXhwcmVzc2lvbl9wcm9kdWNlc19hX3R1cGxlX3R5cGVfdGhhdF9pc190b29fbGFyZ2VfdG9fcmVwcmVzZW50KSx7dmFsdWU6UGV9O2UuZm9yRWFjaChxdCxmdW5jdGlvbihOdCxSYSl7dmFyIGNhO3JldHVybiBUaShOdCwkaS50YXJnZXQuZWxlbWVudEZsYWdzW1JhXSwoY2E9JGkudGFyZ2V0LmxhYmVsZWRFbGVtZW50RGVjbGFyYXRpb25zKT09PW51bGx8fGNhPT09dm9pZCAwP3ZvaWQgMDpjYVtSYV0pfSl9ZWxzZSBUaShzcCgkaSkmJmNzKCRpLG50KXx8UGUsNCwobz1yLmxhYmVsZWRFbGVtZW50RGVjbGFyYXRpb25zKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm9bQ2ldKTtlbHNlIFRpKCRpLFppLChzPXIubGFiZWxlZEVsZW1lbnREZWNsYXJhdGlvbnMpPT09bnVsbHx8cz09PXZvaWQgMD92b2lkIDA6c1tDaV0pfSxEcj0wO0RyPGkubGVuZ3RoO0RyKyspe3ZhciBRcj1kcihEcik7aWYodHlwZW9mIFFyPT1cIm9iamVjdFwiKXJldHVybiBRci52YWx1ZX1mb3IodmFyIERyPTA7RHI8TWU7RHIrKyl6W0RyXSYyJiYoeltEcl09MSk7JGU+PTAmJiRlPHRyJiYoaFskZV09UGEoZS5zYW1lTWFwKGguc2xpY2UoJGUsdHIrMSksZnVuY3Rpb24oQ2ksJGkpe3JldHVybiB6WyRlKyRpXSY4P0pjKENpLG50KTpDaX0pKSxoLnNwbGljZSgkZSsxLHRyLSRlKSx6LnNwbGljZSgkZSsxLHRyLSRlKSxtZT09bnVsbHx8bWUuc3BsaWNlKCRlKzEsdHItJGUpKTt2YXIgbGk9Y0QoeixyLnJlYWRvbmx5LG1lKTtyZXR1cm4gbGk9PT1rbj9CYTp6Lmxlbmd0aD9ZZihsaSxoKTpsaTtmdW5jdGlvbiBUaShDaSwkaSxaaSl7JGkmMSYmKE1lPXoubGVuZ3RoKSwkaSY0JiYkZTwwJiYoJGU9ei5sZW5ndGgpLCRpJjYmJih0cj16Lmxlbmd0aCksaC5wdXNoKENpKSx6LnB1c2goJGkpLG1lJiZaaT9tZS5wdXNoKFppKTptZT12b2lkIDB9fWZ1bmN0aW9uIFptKHIsaSx0KXt0PT09dm9pZCAwJiYodD0wKTt2YXIgbz1yLnRhcmdldCxzPSRfKHIpLXQ7cmV0dXJuIGk+by5maXhlZExlbmd0aD9BdyhyKXx8V2woZS5lbXB0eUFycmF5KTpXbCh4byhyKS5zbGljZShpLHMpLG8uZWxlbWVudEZsYWdzLnNsaWNlKGkscyksITEsby5sYWJlbGVkRWxlbWVudERlY2xhcmF0aW9ucyYmby5sYWJlbGVkRWxlbWVudERlY2xhcmF0aW9ucy5zbGljZShpLHMpKX1mdW5jdGlvbiBNeChyKXtyZXR1cm4gUGEoZS5hcHBlbmQoZS5hcnJheU9mKHIudGFyZ2V0LmZpeGVkTGVuZ3RoLGZ1bmN0aW9uKGkpe3JldHVybiBCdShcIlwiK2kpfSkscWwoci50YXJnZXQucmVhZG9ubHk/UWk6UGkpKSl9ZnVuY3Rpb24gTHgocixpKXt2YXIgdD1lLmZpbmRJbmRleChyLmVsZW1lbnRGbGFncyxmdW5jdGlvbihvKXtyZXR1cm4hKG8maSl9KTtyZXR1cm4gdD49MD90OnIuZWxlbWVudEZsYWdzLmxlbmd0aH1mdW5jdGlvbiBTaChyLGkpe3JldHVybiByLmVsZW1lbnRGbGFncy5sZW5ndGgtZS5maW5kTGFzdEluZGV4KHIuZWxlbWVudEZsYWdzLGZ1bmN0aW9uKHQpe3JldHVybiEodCZpKX0pLTF9ZnVuY3Rpb24gVzMocil7cmV0dXJuIGtjKFZhKHIudHlwZSksITApfWZ1bmN0aW9uIGZ1KHIpe3JldHVybiByLmlkfWZ1bmN0aW9uICRmKHIsaSl7cmV0dXJuIGUuYmluYXJ5U2VhcmNoKHIsaSxmdSxlLmNvbXBhcmVWYWx1ZXMpPj0wfWZ1bmN0aW9uIGxEKHIsaSl7dmFyIHQ9ZS5iaW5hcnlTZWFyY2gocixpLGZ1LGUuY29tcGFyZVZhbHVlcyk7cmV0dXJuIHQ8MD8oci5zcGxpY2UofnQsMCxpKSwhMCk6ITF9ZnVuY3Rpb24gcTMocixpLHQpe3ZhciBvPXQuZmxhZ3M7aWYobyYxMDQ4NTc2KXJldHVybiBSeChyLGl8KEgzKHQpPzEwNDg1NzY6MCksdC50eXBlcyk7aWYoIShvJjEzMTA3MikpaWYoaXw9byYyMDUyNTg3NTEsbyY0NjU4Mjk4ODgmJihpfD0zMzU1NDQzMiksdD09PU1yJiYoaXw9ODM4ODYwOCksIVllJiZvJjk4MzA0KWUuZ2V0T2JqZWN0RmxhZ3ModCkmNjU1MzZ8fChpfD00MTk0MzA0KTtlbHNle3ZhciBzPXIubGVuZ3RoLHU9cyYmdC5pZD5yW3MtMV0uaWQ/fnM6ZS5iaW5hcnlTZWFyY2gocix0LGZ1LGUuY29tcGFyZVZhbHVlcyk7dTwwJiZyLnNwbGljZSh+dSwwLHQpfXJldHVybiBpfWZ1bmN0aW9uIFJ4KHIsaSx0KXtmb3IodmFyIG89MCxzPXQ7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107aT1xMyhyLGksdSl9cmV0dXJuIGl9ZnVuY3Rpb24gVjMocixpKXtpZihyLmxlbmd0aDwyKXJldHVybiByO3ZhciB0PVN1KHIpLG89U3IuZ2V0KHQpO2lmKG8pcmV0dXJuIG87Zm9yKHZhciBzPWkmJmUuc29tZShyLGZ1bmN0aW9uKFRpKXtyZXR1cm4hIShUaS5mbGFncyY1MjQyODgpJiYhQmMoVGkpJiZMRChSdShUaSkpfSksdT1yLmxlbmd0aCxoPXUsej0wO2g+MDspe2gtLTt2YXIgbWU9cltoXTtpZihzfHxtZS5mbGFncyY0Njk0OTk5MDQpZm9yKHZhciBNZT1tZS5mbGFncyY2MTYwMzg0MD9lLmZpbmQodW8obWUpLGZ1bmN0aW9uKFRpKXtyZXR1cm4gVmwoSnQoVGkpKX0pOnZvaWQgMCwkZT1NZSYmamMoSnQoTWUpKSx0cj0wLGRyPXI7dHI8ZHIubGVuZ3RoO3RyKyspe3ZhciBEcj1kclt0cl07aWYobWUhPT1Ecil7aWYoej09PTFlNSl7dmFyIFFyPXovKHUtaCkqdTtpZihRcj4xZTYpe2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLmluc3RhbnQoXCJjaGVja1R5cGVzXCIsXCJyZW1vdmVTdWJ0eXBlc19EZXB0aExpbWl0XCIse3R5cGVJZHM6ci5tYXAoZnVuY3Rpb24oVGkpe3JldHVybiBUaS5pZH0pfSksWHIoSWUsZS5EaWFnbm9zdGljcy5FeHByZXNzaW9uX3Byb2R1Y2VzX2FfdW5pb25fdHlwZV90aGF0X2lzX3Rvb19jb21wbGV4X3RvX3JlcHJlc2VudCk7cmV0dXJufX1pZih6KyssTWUmJkRyLmZsYWdzJjYxNjAzODQwKXt2YXIgbGk9ZGEoRHIsTWUuZXNjYXBlZE5hbWUpO2lmKGxpJiZWbChsaSkmJmpjKGxpKSE9PSRlKWNvbnRpbnVlfWlmKHJfKG1lLERyLGtpKSYmKCEoZS5nZXRPYmplY3RGbGFncyhiZChtZSkpJjEpfHwhKGUuZ2V0T2JqZWN0RmxhZ3MoYmQoRHIpKSYxKXx8eGcobWUsRHIpKSl7ZS5vcmRlcmVkUmVtb3ZlSXRlbUF0KHIsaCk7YnJlYWt9fX19cmV0dXJuIFNyLnNldCh0LHIpLHJ9ZnVuY3Rpb24gSzMocixpLHQpe2Zvcih2YXIgbz1yLmxlbmd0aDtvPjA7KXtvLS07dmFyIHM9cltvXSx1PXMuZmxhZ3MsaD11JjQwMjY1MzMxMiYmaSY0fHx1JjI1NiYmaSY4fHx1JjIwNDgmJmkmNjR8fHUmODE5MiYmaSY0MDk2fHx0JiZ1JjMyNzY4JiZpJjE2Mzg0fHxLcChzKSYmJGYocixzLnJlZ3VsYXJUeXBlKTtoJiZlLm9yZGVyZWRSZW1vdmVJdGVtQXQocixvKX19ZnVuY3Rpb24gRzMocil7dmFyIGk9ZS5maWx0ZXIocixzbSk7aWYoaS5sZW5ndGgpZm9yKHZhciB0PXIubGVuZ3RoLG89ZnVuY3Rpb24oKXt0LS07dmFyIHM9clt0XTtzLmZsYWdzJjEyOCYmZS5zb21lKGksZnVuY3Rpb24odSl7cmV0dXJuIFZFKHMsdSl9KSYmZS5vcmRlcmVkUmVtb3ZlSXRlbUF0KHIsdCl9O3Q+MDspbygpfWZ1bmN0aW9uIEgzKHIpe3JldHVybiEhKHIuZmxhZ3MmMTA0ODU3NiYmKHIuYWxpYXNTeW1ib2x8fHIub3JpZ2luKSl9ZnVuY3Rpb24gQngocixpKXtmb3IodmFyIHQ9MCxvPWk7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aWYocy5mbGFncyYxMDQ4NTc2KXt2YXIgdT1zLm9yaWdpbjtzLmFsaWFzU3ltYm9sfHx1JiYhKHUuZmxhZ3MmMTA0ODU3Nik/ZS5wdXNoSWZVbmlxdWUocixzKTp1JiZ1LmZsYWdzJjEwNDg1NzYmJkJ4KHIsdS50eXBlcyl9fX1mdW5jdGlvbiBmRChyLGkpe3ZhciB0PUlwKHIpO3JldHVybiB0LnR5cGVzPWksdH1mdW5jdGlvbiBQYShyLGksdCxvLHMpe2lmKGk9PT12b2lkIDAmJihpPTEpLHIubGVuZ3RoPT09MClyZXR1cm4gdWk7aWYoci5sZW5ndGg9PT0xKXJldHVybiByWzBdO3ZhciB1PVtdLGg9UngodSwwLHIpO2lmKGkhPT0wKXtpZihoJjMpcmV0dXJuIGgmMT9oJjgzODg2MDg/TXI6T2U6aCY2NTUzNnx8JGYodSxncik/Z3I6VnI7aWYoeXImJmgmMzI3Njgpe3ZhciB6PWUuYmluYXJ5U2VhcmNoKHUsWWksZnUsZS5jb21wYXJlVmFsdWVzKTt6Pj0wJiYkZih1LFRyKSYmZS5vcmRlcmVkUmVtb3ZlSXRlbUF0KHUseil9aWYoKGgmNDAyNjY0MzIwfHxoJjE2Mzg0JiZoJjMyNzY4KSYmSzModSxoLCEhKGkmMikpLGgmMTI4JiZoJjEzNDIxNzcyOCYmRzModSksaT09PTImJih1PVYzKHUsISEoaCY1MjQyODgpKSwhdSkpcmV0dXJuIFBlO2lmKHUubGVuZ3RoPT09MClyZXR1cm4gaCY2NTUzNj9oJjQxOTQzMDQ/V2k6Y3Q6aCYzMjc2OD9oJjQxOTQzMDQ/VHI6dmk6dWl9aWYoIXMmJmgmMTA0ODU3Nil7dmFyIG1lPVtdO0J4KG1lLHIpO2Zvcih2YXIgTWU9W10sJGU9ZnVuY3Rpb24oJGkpe2Uuc29tZShtZSxmdW5jdGlvbihaaSl7cmV0dXJuICRmKFppLnR5cGVzLCRpKX0pfHxNZS5wdXNoKCRpKX0sdHI9MCxkcj11O3RyPGRyLmxlbmd0aDt0cisrKXt2YXIgRHI9ZHJbdHJdOyRlKERyKX1pZighdCYmbWUubGVuZ3RoPT09MSYmTWUubGVuZ3RoPT09MClyZXR1cm4gbWVbMF07dmFyIFFyPWUucmVkdWNlTGVmdChtZSxmdW5jdGlvbigkaSxaaSl7cmV0dXJuICRpK1ppLnR5cGVzLmxlbmd0aH0sMCk7aWYoUXIrTWUubGVuZ3RoPT09dS5sZW5ndGgpe2Zvcih2YXIgbGk9MCxUaT1tZTtsaTxUaS5sZW5ndGg7bGkrKyl7dmFyIERyPVRpW2xpXTtsRChNZSxEcil9cz1mRCgxMDQ4NTc2LE1lKX19dmFyIENpPShoJjM2MzIzMzYzPzA6MzI3NjgpfChoJjIwOTcxNTI/MTY3NzcyMTY6MCk7cmV0dXJuIHBEKHUsQ2ksdCxvLHMpfWZ1bmN0aW9uIFgzKHIsaSl7Zm9yKHZhciB0LG89W10scz0wLHU9cjtzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXSx6PVljKGgpO2lmKCF6fHx6LmtpbmQ9PT0yfHx6LmtpbmQ9PT0zKXtpZihpIT09MjA5NzE1Miljb250aW51ZTtyZXR1cm59aWYodCl7aWYoIV9EKHQseikpcmV0dXJufWVsc2UgdD16O28ucHVzaCh6LnR5cGUpfWlmKCEhdCl7dmFyIG1lPWl5KG8saSk7cmV0dXJuIHZnKHQua2luZCx0LnBhcmFtZXRlck5hbWUsdC5wYXJhbWV0ZXJJbmRleCxtZSl9fWZ1bmN0aW9uIF9EKHIsaSl7cmV0dXJuIHIua2luZD09PWkua2luZCYmci5wYXJhbWV0ZXJJbmRleD09PWkucGFyYW1ldGVySW5kZXh9ZnVuY3Rpb24gcEQocixpLHQsbyxzKXtpZihyLmxlbmd0aD09PTApcmV0dXJuIHVpO2lmKHIubGVuZ3RoPT09MSlyZXR1cm4gclswXTt2YXIgdT1zP3MuZmxhZ3MmMTA0ODU3Nj9cInxcIi5jb25jYXQoU3Uocy50eXBlcykpOnMuZmxhZ3MmMjA5NzE1Mj9cIiZcIi5jb25jYXQoU3Uocy50eXBlcykpOlwiI1wiLmNvbmNhdChzLnR5cGUuaWQsXCJ8XCIpLmNvbmNhdChTdShyKSk6U3UociksaD11K2hnKHQsbyksej1HaS5nZXQoaCk7cmV0dXJuIHp8fCh6PW1jKDEwNDg1NzYpLHoub2JqZWN0RmxhZ3M9aXxpRChyLDk4MzA0KSx6LnR5cGVzPXIsei5vcmlnaW49cyx6LmFsaWFzU3ltYm9sPXQsei5hbGlhc1R5cGVBcmd1bWVudHM9byxyLmxlbmd0aD09PTImJnJbMF0uZmxhZ3MmNTEyJiZyWzFdLmZsYWdzJjUxMiYmKHouZmxhZ3N8PTE2LHouaW50cmluc2ljTmFtZT1cImJvb2xlYW5cIiksR2kuc2V0KGgseikpLHp9ZnVuY3Rpb24gUTMocil7dmFyIGk9dmEocik7aWYoIWkucmVzb2x2ZWRUeXBlKXt2YXIgdD1RZChyKTtpLnJlc29sdmVkVHlwZT1QYShlLm1hcChyLnR5cGVzLFZhKSwxLHQsYmcodCkpfXJldHVybiBpLnJlc29sdmVkVHlwZX1mdW5jdGlvbiBZMyhyLGksdCl7dmFyIG89dC5mbGFncztyZXR1cm4gbyYyMDk3MTUyP0p4KHIsaSx0LnR5cGVzKToodkUodCk/aSYxNjc3NzIxNnx8KGl8PTE2Nzc3MjE2LHIuc2V0KHQuaWQudG9TdHJpbmcoKSx0KSk6KG8mMz90PT09TXImJihpfD04Mzg4NjA4KTooWWV8fCEobyY5ODMwNCkpJiYoeXImJnQ9PT1ZaSYmKGl8PTI2MjE0NCx0PVRyKSxyLmhhcyh0LmlkLnRvU3RyaW5nKCkpfHwodC5mbGFncyYxMDk0NDAmJmkmMTA5NDQwJiYoaXw9NjcxMDg4NjQpLHIuc2V0KHQuaWQudG9TdHJpbmcoKSx0KSkpLGl8PW8mMjA1MjU4NzUxKSxpKX1mdW5jdGlvbiBKeChyLGksdCl7Zm9yKHZhciBvPTAscz10O288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dO2k9WTMocixpLGpjKHUpKX1yZXR1cm4gaX1mdW5jdGlvbiAkMyhyLGkpe2Zvcih2YXIgdD1yLmxlbmd0aDt0PjA7KXt0LS07dmFyIG89clt0XSxzPW8uZmxhZ3MmNCYmaSY0MDI2NTMzMTJ8fG8uZmxhZ3MmOCYmaSYyNTZ8fG8uZmxhZ3MmNjQmJmkmMjA0OHx8by5mbGFncyY0MDk2JiZpJjgxOTI7cyYmZS5vcmRlcmVkUmVtb3ZlSXRlbUF0KHIsdCl9fWZ1bmN0aW9uIFozKHIsaSl7Zm9yKHZhciB0PTAsbz1yO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdO2lmKCEkZihzLnR5cGVzLGkpKXt2YXIgdT1pLmZsYWdzJjEyOD9MaTppLmZsYWdzJjI1Nj9udDppLmZsYWdzJjIwNDg/TXQ6aS5mbGFncyY4MTkyP0tpOnZvaWQgMDtpZighdXx8ISRmKHMudHlwZXMsdSkpcmV0dXJuITF9fXJldHVybiEwfWZ1bmN0aW9uIGVJKHIpe2Zvcih2YXIgaT1yLmxlbmd0aCx0PWUuZmlsdGVyKHIsZnVuY3Rpb24oeil7cmV0dXJuISEoei5mbGFncyYxMjgpfSk7aT4wOyl7aS0tO3ZhciBvPXJbaV07aWYoISEoby5mbGFncyYxMzQyMTc3MjgpKWZvcih2YXIgcz0wLHU9dDtzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXTtpZihFXyhoLG8pKXtlLm9yZGVyZWRSZW1vdmVJdGVtQXQocixpKTticmVha31lbHNlIGlmKHNtKG8pKXJldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBqeChyLGkpe3JldHVybiBlLmV2ZXJ5KHIsZnVuY3Rpb24odCl7cmV0dXJuISEodC5mbGFncyYxMDQ4NTc2KSYmZS5zb21lKHQudHlwZXMsZnVuY3Rpb24obyl7cmV0dXJuISEoby5mbGFncyZpKX0pfSl9ZnVuY3Rpb24gVXgocixpKXtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoO3QrKylyW3RdPWVjKHJbdF0sZnVuY3Rpb24obyl7cmV0dXJuIShvLmZsYWdzJmkpfSl9ZnVuY3Rpb24gckkocil7dmFyIGksdD1lLmZpbmRJbmRleChyLGZ1bmN0aW9uKGRyKXtyZXR1cm4hIShlLmdldE9iamVjdEZsYWdzKGRyKSYzMjc2OCl9KTtpZih0PDApcmV0dXJuITE7Zm9yKHZhciBvPXQrMTtvPHIubGVuZ3RoOyl7dmFyIHM9cltvXTtlLmdldE9iamVjdEZsYWdzKHMpJjMyNzY4PygoaXx8KGk9W3JbdF1dKSkucHVzaChzKSxlLm9yZGVyZWRSZW1vdmVJdGVtQXQocixvKSk6bysrfWlmKCFpKXJldHVybiExO2Zvcih2YXIgdT1bXSxoPVtdLHo9MCxtZT1pO3o8bWUubGVuZ3RoO3orKylmb3IodmFyIE1lPW1lW3pdLCRlPTAsdHI9TWUudHlwZXM7JGU8dHIubGVuZ3RoOyRlKyspe3ZhciBzPXRyWyRlXTtsRCh1LHMpJiZaMyhpLHMpJiZsRChoLHMpfXJldHVybiByW3RdPXBEKGgsMzI3NjgpLCEwfWZ1bmN0aW9uIGlJKHIsaSx0KXt2YXIgbz1tYygyMDk3MTUyKTtyZXR1cm4gby5vYmplY3RGbGFncz1pRChyLDk4MzA0KSxvLnR5cGVzPXIsby5hbGlhc1N5bWJvbD1pLG8uYWxpYXNUeXBlQXJndW1lbnRzPXQsb31mdW5jdGlvbiBEbyhyLGksdCl7dmFyIG89bmV3IGUuTWFwLHM9SngobywwLHIpLHU9ZS5hcnJheUZyb20oby52YWx1ZXMoKSk7aWYocyYxMzEwNzIpcmV0dXJuIGUuY29udGFpbnModSxCdCk/QnQ6dWk7aWYoWWUmJnMmOTgzMDQmJnMmODQ0MTAzNjh8fHMmNjcxMDg4NjQmJnMmNDAyNzgzMjI4fHxzJjQwMjY1MzMxNiYmcyY2NzIzODc3Nnx8cyYyOTYmJnMmNDY5ODkxNzk2fHxzJjIxMTImJnMmNDY5ODg5OTgwfHxzJjEyMjg4JiZzJjQ2OTg3OTgwNHx8cyY0OTE1MiYmcyY0Njk4NDI5NDB8fHMmMTM0MjE3NzI4JiZzJjEyOCYmZUkodSkpcmV0dXJuIHVpO2lmKHMmMSlyZXR1cm4gcyY4Mzg4NjA4P01yOk9lO2lmKCFZZSYmcyY5ODMwNClyZXR1cm4gcyYzMjc2OD9UcjpXaTtpZigocyY0JiZzJjQwMjY1MzMxMnx8cyY4JiZzJjI1Nnx8cyY2NCYmcyYyMDQ4fHxzJjQwOTYmJnMmODE5MikmJiQzKHUscykscyYxNjc3NzIxNiYmcyY1MjQyODgmJmUub3JkZXJlZFJlbW92ZUl0ZW1BdCh1LGUuZmluZEluZGV4KHUsdkUpKSxzJjI2MjE0NCYmKHVbdS5pbmRleE9mKFRyKV09WWkpLHUubGVuZ3RoPT09MClyZXR1cm4gZ3I7aWYodS5sZW5ndGg9PT0xKXJldHVybiB1WzBdO3ZhciBoPVN1KHUpK2hnKGksdCksej1XdC5nZXQoaCk7aWYoIXope2lmKHMmMTA0ODU3NilpZihySSh1KSl6PURvKHUsaSx0KTtlbHNlIGlmKGp4KHUsMzI3NjgpKXt2YXIgbWU9eXImJmUuc29tZSh1LGZ1bmN0aW9uKHRyKXtyZXR1cm4gJGYodHIudHlwZXMsWWkpfSk/WWk6VHI7VXgodSwzMjc2OCksej1QYShbRG8odSksbWVdLDEsaSx0KX1lbHNlIGlmKGp4KHUsNjU1MzYpKVV4KHUsNjU1MzYpLHo9UGEoW0RvKHUpLFdpXSwxLGksdCk7ZWxzZXtpZighbnkodSkpcmV0dXJuIFBlO3ZhciBNZT10SSh1KSwkZT1lLnNvbWUoTWUsZnVuY3Rpb24odHIpe3JldHVybiEhKHRyLmZsYWdzJjIwOTcxNTIpfSk/ZkQoMjA5NzE1Mix1KTp2b2lkIDA7ej1QYShNZSwxLGksdCwkZSl9ZWxzZSB6PWlJKHUsaSx0KTtXdC5zZXQoaCx6KX1yZXR1cm4gen1mdW5jdGlvbiB6eChyKXtyZXR1cm4gZS5yZWR1Y2VMZWZ0KHIsZnVuY3Rpb24oaSx0KXtyZXR1cm4gdC5mbGFncyYxMDQ4NTc2P2kqdC50eXBlcy5sZW5ndGg6dC5mbGFncyYxMzEwNzI/MDppfSwxKX1mdW5jdGlvbiBueShyKXt2YXIgaT16eChyKTtyZXR1cm4gaT49MWU1PyhlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5pbnN0YW50KFwiY2hlY2tUeXBlc1wiLFwiY2hlY2tDcm9zc1Byb2R1Y3RVbmlvbl9EZXB0aExpbWl0XCIse3R5cGVJZHM6ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSxzaXplOml9KSxYcihJZSxlLkRpYWdub3N0aWNzLkV4cHJlc3Npb25fcHJvZHVjZXNfYV91bmlvbl90eXBlX3RoYXRfaXNfdG9vX2NvbXBsZXhfdG9fcmVwcmVzZW50KSwhMSk6ITB9ZnVuY3Rpb24gdEkocil7Zm9yKHZhciBpPXp4KHIpLHQ9W10sbz0wO288aTtvKyspe2Zvcih2YXIgcz1yLnNsaWNlKCksdT1vLGg9ci5sZW5ndGgtMTtoPj0wO2gtLSlpZihyW2hdLmZsYWdzJjEwNDg1NzYpe3ZhciB6PXJbaF0udHlwZXMsbWU9ei5sZW5ndGg7c1toXT16W3UlbWVdLHU9TWF0aC5mbG9vcih1L21lKX12YXIgTWU9RG8ocyk7TWUuZmxhZ3MmMTMxMDcyfHx0LnB1c2goTWUpfXJldHVybiB0fWZ1bmN0aW9uIGFJKHIpe3ZhciBpPXZhKHIpO2lmKCFpLnJlc29sdmVkVHlwZSl7dmFyIHQ9UWQocik7aS5yZXNvbHZlZFR5cGU9RG8oZS5tYXAoci50eXBlcyxWYSksdCxiZyh0KSl9cmV0dXJuIGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIFd4KHIsaSl7dmFyIHQ9bWMoNDE5NDMwNCk7cmV0dXJuIHQudHlwZT1yLHQuc3RyaW5nc09ubHk9aSx0fWZ1bmN0aW9uIG5JKHIpe3ZhciBpPUlwKDQxOTQzMDQpO3JldHVybiBpLnR5cGU9cixpfWZ1bmN0aW9uIGREKHIsaSl7cmV0dXJuIGk/ci5yZXNvbHZlZFN0cmluZ0luZGV4VHlwZXx8KHIucmVzb2x2ZWRTdHJpbmdJbmRleFR5cGU9V3gociwhMCkpOnIucmVzb2x2ZWRJbmRleFR5cGV8fChyLnJlc29sdmVkSW5kZXhUeXBlPVd4KHIsITEpKX1mdW5jdGlvbiBvSShyLGksdCl7dmFyIG89RHUocikscz1NdShyKSx1PUpsKHIudGFyZ2V0fHxyKTtpZighdSYmIXQpcmV0dXJuIHM7dmFyIGg9W107aWYobWcocikpe2lmKHFwKHMpKXJldHVybiBkRChyLGkpO3ZhciB6PSRzKEVkKHIpKTtVbSh6LDg1NzYsaSxNZSl9ZWxzZSBPZChLZChzKSxNZSk7cXAocykmJk9kKHMsTWUpO3ZhciBtZT10P2VjKFBhKGgpLGZ1bmN0aW9uKCRlKXtyZXR1cm4hKCRlLmZsYWdzJjUpfSk6UGEoaCk7aWYobWUuZmxhZ3MmMTA0ODU3NiYmcy5mbGFncyYxMDQ4NTc2JiZTdShtZS50eXBlcyk9PT1TdShzLnR5cGVzKSlyZXR1cm4gcztyZXR1cm4gbWU7ZnVuY3Rpb24gTWUoJGUpe3ZhciB0cj11P3VuKHUsdHYoci5tYXBwZXIsbywkZSkpOiRlO2gucHVzaCh0cj09PUxpP2ppOnRyKX19ZnVuY3Rpb24gc0kocil7dmFyIGk9RHUocik7cmV0dXJuIHQoSmwocil8fGkpO2Z1bmN0aW9uIHQobyl7cmV0dXJuIG8uZmxhZ3MmNjgxNTc0Mzk/ITA6by5mbGFncyYxNjc3NzIxNj9vLnJvb3QuaXNEaXN0cmlidXRpdmUmJm8uY2hlY2tUeXBlPT09aTpvLmZsYWdzJjEzNzM2MzQ1Nj9lLmV2ZXJ5KG8udHlwZXMsdCk6by5mbGFncyY4Mzg4NjA4P3Qoby5vYmplY3RUeXBlKSYmdChvLmluZGV4VHlwZSk6by5mbGFncyYzMzU1NDQzMj90KG8uc3Vic3RpdHV0ZSk6by5mbGFncyYyNjg0MzU0NTY/dChvLnR5cGUpOiExfX1mdW5jdGlvbiBaXyhyKXtyZXR1cm4gZS5pc1ByaXZhdGVJZGVudGlmaWVyKHIpP3VpOmUuaXNJZGVudGlmaWVyKHIpP0J1KGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoci5lc2NhcGVkVGV4dCkpOmpjKGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShyKT90XyhyKTp5bihyKSl9ZnVuY3Rpb24gb20ocixpLHQpe2lmKHR8fCEoZS5nZXREZWNsYXJhdGlvbk1vZGlmaWVyRmxhZ3NGcm9tU3ltYm9sKHIpJjI0KSl7dmFyIG89QWEoZGcocikpLm5hbWVUeXBlO2lmKCFvKXt2YXIgcz1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKHIudmFsdWVEZWNsYXJhdGlvbik7bz1yLmVzY2FwZWROYW1lPT09XCJkZWZhdWx0XCI/QnUoXCJkZWZhdWx0XCIpOnMmJlpfKHMpfHwoZS5pc0tub3duU3ltYm9sKHIpP3ZvaWQgMDpCdShlLnN5bWJvbE5hbWUocikpKX1pZihvJiZvLmZsYWdzJmkpcmV0dXJuIG99cmV0dXJuIHVpfWZ1bmN0aW9uIHF4KHIsaSl7cmV0dXJuISEoci5mbGFncyZpfHxyLmZsYWdzJjIwOTcxNTImJmUuc29tZShyLnR5cGVzLGZ1bmN0aW9uKHQpe3JldHVybiBxeCh0LGkpfSkpfWZ1bmN0aW9uIGNJKHIsaSx0KXt2YXIgbz10JiYoZS5nZXRPYmplY3RGbGFncyhyKSY3fHxyLmFsaWFzU3ltYm9sKT9uSShyKTp2b2lkIDAscz1lLm1hcCh1byhyKSxmdW5jdGlvbihoKXtyZXR1cm4gb20oaCxpKX0pLHU9ZS5tYXAoSG4ociksZnVuY3Rpb24oaCl7cmV0dXJuIGghPT1LbyYmcXgoaC5rZXlUeXBlLGkpP2gua2V5VHlwZT09PUxpJiZpJjg/amk6aC5rZXlUeXBlOnVpfSk7cmV0dXJuIFBhKGUuY29uY2F0ZW5hdGUocyx1KSwxLHZvaWQgMCx2b2lkIDAsbyl9ZnVuY3Rpb24gdUkocil7cmV0dXJuIGUuc29tZShyLnR5cGVzLGZ1bmN0aW9uKGkpe3ZhciB0PUtJKGkpO3JldHVybiBidSh0KSE9PXR9KX1mdW5jdGlvbiBxbChyLGksdCl7cmV0dXJuIGk9PT12b2lkIDAmJihpPUdlKSxyPWJ1KHIpLHIuZmxhZ3MmMTA0ODU3Nj91SShyKT9kRChyLGkpOkRvKGUubWFwKHIudHlwZXMsZnVuY3Rpb24obyl7cmV0dXJuIHFsKG8saSx0KX0pKTpyLmZsYWdzJjIwOTcxNTI/UGEoZS5tYXAoci50eXBlcyxmdW5jdGlvbihvKXtyZXR1cm4gcWwobyxpLHQpfSkpOnIuZmxhZ3MmNTg5ODI0MDB8fGxtKHIpfHxCYyhyKSYmIXNJKHIpP2REKHIsaSk6ZS5nZXRPYmplY3RGbGFncyhyKSYzMj9vSShyLGksdCk6cj09PU1yP01yOnIuZmxhZ3MmMj91aTpyLmZsYWdzJjEzMTA3Mz9hdDpjSShyLCh0PzEyODo0MDI2NTMzMTYpfChpPzA6MTI1ODQpLGk9PT1HZSYmIXQpfWZ1bmN0aW9uIFZ4KHIpe2lmKEdlKXJldHVybiByO3ZhciBpPU0zKCk7cmV0dXJuIGk/YW0oaSxbcixMaV0pOkxpfWZ1bmN0aW9uIGxJKHIpe3ZhciBpPVZ4KHFsKHIpKTtyZXR1cm4gaS5mbGFncyYxMzEwNzI/TGk6aX1mdW5jdGlvbiBmSShyKXt2YXIgaT12YShyKTtpZighaS5yZXNvbHZlZFR5cGUpc3dpdGNoKHIub3BlcmF0b3Ipe2Nhc2UgMTQwOmkucmVzb2x2ZWRUeXBlPXFsKFZhKHIudHlwZSkpO2JyZWFrO2Nhc2UgMTU0OmkucmVzb2x2ZWRUeXBlPXIudHlwZS5raW5kPT09MTUxP0NEKGUud2Fsa1VwUGFyZW50aGVzaXplZFR5cGVzKHIucGFyZW50KSk6UGU7YnJlYWs7Y2FzZSAxNDU6aS5yZXNvbHZlZFR5cGU9VmEoci50eXBlKTticmVhaztkZWZhdWx0OnRocm93IGUuRGVidWcuYXNzZXJ0TmV2ZXIoci5vcGVyYXRvcil9cmV0dXJuIGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIF9JKHIpe3ZhciBpPXZhKHIpO3JldHVybiBpLnJlc29sdmVkVHlwZXx8KGkucmVzb2x2ZWRUeXBlPURnKFZlKFtyLmhlYWQudGV4dF0sZS5tYXAoci50ZW1wbGF0ZVNwYW5zLGZ1bmN0aW9uKHQpe3JldHVybiB0LmxpdGVyYWwudGV4dH0pLCEwKSxlLm1hcChyLnRlbXBsYXRlU3BhbnMsZnVuY3Rpb24odCl7cmV0dXJuIFZhKHQudHlwZSl9KSkpLGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIERnKHIsaSl7dmFyIHQ9ZS5maW5kSW5kZXgoaSxmdW5jdGlvbihNZSl7cmV0dXJuISEoTWUuZmxhZ3MmMTE3OTY0OCl9KTtpZih0Pj0wKXJldHVybiBueShpKT9TcyhpW3RdLGZ1bmN0aW9uKE1lKXtyZXR1cm4gRGcocixlLnJlcGxhY2VFbGVtZW50KGksdCxNZSkpfSk6UGU7aWYoZS5jb250YWlucyhpLE1yKSlyZXR1cm4gTXI7dmFyIG89W10scz1bXSx1PXJbMF07aWYoIW1lKHIsaSkpcmV0dXJuIExpO2lmKG8ubGVuZ3RoPT09MClyZXR1cm4gQnUodSk7aWYocy5wdXNoKHUpLGUuZXZlcnkocyxmdW5jdGlvbihNZSl7cmV0dXJuIE1lPT09XCJcIn0pJiZlLmV2ZXJ5KG8sZnVuY3Rpb24oTWUpe3JldHVybiEhKE1lLmZsYWdzJjQpfSkpcmV0dXJuIExpO3ZhciBoPVwiXCIuY29uY2F0KFN1KG8pLFwifFwiKS5jb25jYXQoZS5tYXAocyxmdW5jdGlvbihNZSl7cmV0dXJuIE1lLmxlbmd0aH0pLmpvaW4oXCIsXCIpLFwifFwiKS5jb25jYXQocy5qb2luKFwiXCIpKSx6PUpyLmdldChoKTtyZXR1cm4genx8SnIuc2V0KGgsej1kSShzLG8pKSx6O2Z1bmN0aW9uIG1lKE1lLCRlKXtmb3IodmFyIHRyPWUuaXNBcnJheShNZSksZHI9MDtkcjwkZS5sZW5ndGg7ZHIrKyl7dmFyIERyPSRlW2RyXSxRcj10cj9NZVtkcisxXTpNZTtpZihEci5mbGFncyYxMDEyNDgpe2lmKHUrPXBJKERyKXx8XCJcIix1Kz1RciwhdHIpcmV0dXJuITB9ZWxzZSBpZihEci5mbGFncyYxMzQyMTc3Mjgpe2lmKHUrPURyLnRleHRzWzBdLCFtZShEci50ZXh0cyxEci50eXBlcykpcmV0dXJuITE7aWYodSs9UXIsIXRyKXJldHVybiEwfWVsc2UgaWYocXAoRHIpfHxHeChEcikpby5wdXNoKERyKSxzLnB1c2godSksdT1RcjtlbHNlIGlmKERyLmZsYWdzJjIwOTcxNTIpe3ZhciBsaT1tZShNZVtkcisxXSxEci50eXBlcyk7aWYoIWxpKXJldHVybiExfWVsc2UgaWYodHIpcmV0dXJuITF9cmV0dXJuITB9fWZ1bmN0aW9uIHBJKHIpe3JldHVybiByLmZsYWdzJjEyOD9yLnZhbHVlOnIuZmxhZ3MmMjU2P1wiXCIrci52YWx1ZTpyLmZsYWdzJjIwNDg/ZS5wc2V1ZG9CaWdJbnRUb1N0cmluZyhyLnZhbHVlKTpyLmZsYWdzJjk4ODE2P3IuaW50cmluc2ljTmFtZTp2b2lkIDB9ZnVuY3Rpb24gZEkocixpKXt2YXIgdD1tYygxMzQyMTc3MjgpO3JldHVybiB0LnRleHRzPXIsdC50eXBlcz1pLHR9ZnVuY3Rpb24gVGgocixpKXtyZXR1cm4gaS5mbGFncyYxMTc5NjQ4P1NzKGksZnVuY3Rpb24odCl7cmV0dXJuIFRoKHIsdCl9KTpxcChpKT9tSShyLGkpOmkuZmxhZ3MmMTI4P0J1KGdJKHIsaS52YWx1ZSkpOml9ZnVuY3Rpb24gZ0kocixpKXtzd2l0Y2goeC5nZXQoci5lc2NhcGVkTmFtZSkpe2Nhc2UgMDpyZXR1cm4gaS50b1VwcGVyQ2FzZSgpO2Nhc2UgMTpyZXR1cm4gaS50b0xvd2VyQ2FzZSgpO2Nhc2UgMjpyZXR1cm4gaS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStpLnNsaWNlKDEpO2Nhc2UgMzpyZXR1cm4gaS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKStpLnNsaWNlKDEpfXJldHVybiBpfWZ1bmN0aW9uIG1JKHIsaSl7dmFyIHQ9XCJcIi5jb25jYXQoeShyKSxcIixcIikuY29uY2F0KGZ1KGkpKSxvPXRpLmdldCh0KTtyZXR1cm4gb3x8dGkuc2V0KHQsbz12SShyLGkpKSxvfWZ1bmN0aW9uIHZJKHIsaSl7dmFyIHQ9bWMoMjY4NDM1NDU2KTtyZXR1cm4gdC5zeW1ib2w9cix0LnR5cGU9aSx0fWZ1bmN0aW9uIHlJKHIsaSx0LG8scyl7dmFyIHU9bWMoODM4ODYwOCk7cmV0dXJuIHUub2JqZWN0VHlwZT1yLHUuaW5kZXhUeXBlPWksdS5hY2Nlc3NGbGFncz10LHUuYWxpYXNTeW1ib2w9byx1LmFsaWFzVHlwZUFyZ3VtZW50cz1zLHV9ZnVuY3Rpb24gZXYocil7aWYobilyZXR1cm4hMTtpZihlLmdldE9iamVjdEZsYWdzKHIpJjQwOTYpcmV0dXJuITA7aWYoci5mbGFncyYxMDQ4NTc2KXJldHVybiBlLmV2ZXJ5KHIudHlwZXMsZXYpO2lmKHIuZmxhZ3MmMjA5NzE1MilyZXR1cm4gZS5zb21lKHIudHlwZXMsZXYpO2lmKHIuZmxhZ3MmNDY1ODI5ODg4KXt2YXIgaT1IdihyKTtyZXR1cm4gaSE9PXImJmV2KGkpfXJldHVybiExfWZ1bmN0aW9uIGdEKHIsaSl7cmV0dXJuIF9mKHIpP3BmKHIpOmkmJmUuaXNQcm9wZXJ0eU5hbWUoaSk/ZS5nZXRQcm9wZXJ0eU5hbWVGb3JQcm9wZXJ0eU5hbWVOb2RlKGkpOnZvaWQgMH1mdW5jdGlvbiBtRChyLGkpe2lmKGkuZmxhZ3MmODIwOCl7dmFyIHQ9ZS5maW5kQW5jZXN0b3Ioci5wYXJlbnQsZnVuY3Rpb24obyl7cmV0dXJuIWUuaXNBY2Nlc3NFeHByZXNzaW9uKG8pfSl8fHIucGFyZW50O3JldHVybiBlLmlzQ2FsbExpa2VFeHByZXNzaW9uKHQpP2UuaXNDYWxsT3JOZXdFeHByZXNzaW9uKHQpJiZlLmlzSWRlbnRpZmllcihyKSYmZUModCxyKTplLmV2ZXJ5KGkuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiFlLmlzRnVuY3Rpb25MaWtlKG8pfHwhIShlLmdldENvbWJpbmVkTm9kZUZsYWdzKG8pJjI2ODQzNTQ1Nil9KX1yZXR1cm4hMH1mdW5jdGlvbiBLeChyLGksdCxvLHMsdSl7dmFyIGgsej1zJiZzLmtpbmQ9PT0yMDc/czp2b2lkIDAsbWU9cyYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKHMpP3ZvaWQgMDpnRCh0LHMpO2lmKG1lIT09dm9pZCAwKXtpZih1JjI1NilyZXR1cm4gTWQoaSxtZSl8fE9lO3ZhciBNZT1iaShpLG1lKTtpZihNZSl7aWYodSY2NCYmcyYmTWUuZGVjbGFyYXRpb25zJiZQXyhNZSkmJm1EKHMsTWUpKXt2YXIgJGU9KGg9ej09bnVsbD92b2lkIDA6ei5hcmd1bWVudEV4cHJlc3Npb24pIT09bnVsbCYmaCE9PXZvaWQgMD9oOmUuaXNJbmRleGVkQWNjZXNzVHlwZU5vZGUocyk/cy5pbmRleFR5cGU6cztFbCgkZSxNZS5kZWNsYXJhdGlvbnMsbWUpfWlmKHope2lmKHh5KE1lLHoscmsoei5leHByZXNzaW9uLGkuc3ltYm9sKSksamsoeixNZSxlLmdldEFzc2lnbm1lbnRUYXJnZXRLaW5kKHopKSl7WHIoei5hcmd1bWVudEV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5DYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX3JlYWRfb25seV9wcm9wZXJ0eSx0bihNZSkpO3JldHVybn1pZih1JjgmJih2YShzKS5yZXNvbHZlZFN5bWJvbD1NZSksSEMoeixNZSkpcmV0dXJuIG5yfXZhciB0cj1KdChNZSk7cmV0dXJuIHomJmUuZ2V0QXNzaWdubWVudFRhcmdldEtpbmQoeikhPT0xP3VwKHosdHIpOnRyfWlmKGdmKGksWW4pJiZlLmlzTnVtZXJpY0xpdGVyYWxOYW1lKG1lKSYmK21lPj0wKXtpZihzJiZnZihpLGZ1bmN0aW9uKE50KXtyZXR1cm4hTnQudGFyZ2V0Lmhhc1Jlc3RFbGVtZW50fSkmJiEodSYxNikpe3ZhciBkcj12RChzKTtZbihpKT9YcihkcixlLkRpYWdub3N0aWNzLlR1cGxlX3R5cGVfMF9vZl9sZW5ndGhfMV9oYXNfbm9fZWxlbWVudF9hdF9pbmRleF8yLE90KGkpLCRfKGkpLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMobWUpKTpYcihkcixlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMobWUpLE90KGkpKX1yZXR1cm4gcXQoc3MoaSxudCkpLFNzKGksZnVuY3Rpb24oTnQpe3ZhciBSYT1zdihOdCl8fFRyO3JldHVybiB1JjE/UGEoW1JhLFRyXSk6UmF9KX19aWYoISh0LmZsYWdzJjk4MzA0KSYmTnModCw0MDI2NjU5MDApKXtpZihpLmZsYWdzJjEzMTA3MylyZXR1cm4gaTt2YXIgRHI9bnUoaSx0KXx8c3MoaSxMaSk7aWYoRHIpe2lmKHUmMiYmRHIua2V5VHlwZSE9PW50KXt6JiZYcih6LGUuRGlhZ25vc3RpY3MuVHlwZV8wX2Nhbm5vdF9iZV91c2VkX3RvX2luZGV4X3R5cGVfMSxPdCh0KSxPdChyKSk7cmV0dXJufWlmKHMmJkRyLmtleVR5cGU9PT1MaSYmIU5zKHQsMTIpKXt2YXIgZHI9dkQocyk7cmV0dXJuIFhyKGRyLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2Nhbm5vdF9iZV91c2VkX2FzX2FuX2luZGV4X3R5cGUsT3QodCkpLHUmMT9QYShbRHIudHlwZSxUcl0pOkRyLnR5cGV9cmV0dXJuIHF0KERyKSx1JjE/UGEoW0RyLnR5cGUsVHJdKTpEci50eXBlfWlmKHQuZmxhZ3MmMTMxMDcyKXJldHVybiB1aTtpZihldihpKSlyZXR1cm4gT2U7aWYoeiYmIXVTKGkpKXtpZihRcChpKSl7aWYobiYmdC5mbGFncyYzODQpcmV0dXJuIHJuLmFkZChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHosZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMSx0LnZhbHVlLE90KGkpKSksVHI7aWYodC5mbGFncyYxMil7dmFyIFFyPWUubWFwKGkucHJvcGVydGllcyxmdW5jdGlvbihOdCl7cmV0dXJuIEp0KE50KX0pO3JldHVybiBQYShlLmFwcGVuZChRcixUcikpfX1pZihpLnN5bWJvbD09PXBlJiZtZSE9PXZvaWQgMCYmcGUuZXhwb3J0cy5oYXMobWUpJiZwZS5leHBvcnRzLmdldChtZSkuZmxhZ3MmNDE4KVhyKHosZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMSxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKG1lKSxPdChpKSk7ZWxzZSBpZihuJiYheWUuc3VwcHJlc3NJbXBsaWNpdEFueUluZGV4RXJyb3JzJiYhKHUmMTI4KSlpZihtZSE9PXZvaWQgMCYmJEMobWUsaSkpe3ZhciBsaT1PdChpKTtYcih6LGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRGlkX3lvdV9tZWFuX3RvX2FjY2Vzc190aGVfc3RhdGljX21lbWJlcl8yX2luc3RlYWQsbWUsbGksbGkrXCJbXCIrZS5nZXRUZXh0T2ZOb2RlKHouYXJndW1lbnRFeHByZXNzaW9uKStcIl1cIil9ZWxzZSBpZihjcyhpLG50KSlYcih6LmFyZ3VtZW50RXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLkVsZW1lbnRfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGVfYmVjYXVzZV9pbmRleF9leHByZXNzaW9uX2lzX25vdF9vZl90eXBlX251bWJlcik7ZWxzZXt2YXIgVGk9dm9pZCAwO2lmKG1lIT09dm9pZCAwJiYoVGk9VmIobWUsaSkpKVRpIT09dm9pZCAwJiZYcih6LmFyZ3VtZW50RXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xX0RpZF95b3VfbWVhbl8yLG1lLE90KGkpLFRpKTtlbHNle3ZhciBDaT1pNyhpLHosdCk7aWYoQ2khPT12b2lkIDApWHIoeixlLkRpYWdub3N0aWNzLkVsZW1lbnRfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGVfYmVjYXVzZV90eXBlXzBfaGFzX25vX2luZGV4X3NpZ25hdHVyZV9EaWRfeW91X21lYW5fdG9fY2FsbF8xLE90KGkpLENpKTtlbHNle3ZhciAkaT12b2lkIDA7aWYodC5mbGFncyYxMDI0KSRpPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzEsXCJbXCIrT3QodCkrXCJdXCIsT3QoaSkpO2Vsc2UgaWYodC5mbGFncyY4MTkyKXt2YXIgWmk9Y2wodC5zeW1ib2wseik7JGk9ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMSxcIltcIitaaStcIl1cIixPdChpKSl9ZWxzZSB0LmZsYWdzJjEyOHx8dC5mbGFncyYyNTY/JGk9ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMSx0LnZhbHVlLE90KGkpKTp0LmZsYWdzJjEyJiYoJGk9ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5Ob19pbmRleF9zaWduYXR1cmVfd2l0aF9hX3BhcmFtZXRlcl9vZl90eXBlXzBfd2FzX2ZvdW5kX29uX3R5cGVfMSxPdCh0KSxPdChpKSkpOyRpPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMoJGksZS5EaWFnbm9zdGljcy5FbGVtZW50X2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlX2JlY2F1c2VfZXhwcmVzc2lvbl9vZl90eXBlXzBfY2FuX3RfYmVfdXNlZF90b19pbmRleF90eXBlXzEsT3QobyksT3QoaSkpLHJuLmFkZChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlRnJvbU1lc3NhZ2VDaGFpbih6LCRpKSl9fX1yZXR1cm59fWlmKGV2KGkpKXJldHVybiBPZTtpZihzKXt2YXIgZHI9dkQocyk7dC5mbGFncyYzODQ/WHIoZHIsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMSxcIlwiK3QudmFsdWUsT3QoaSkpOnQuZmxhZ3MmMTI/WHIoZHIsZS5EaWFnbm9zdGljcy5UeXBlXzBfaGFzX25vX21hdGNoaW5nX2luZGV4X3NpZ25hdHVyZV9mb3JfdHlwZV8xLE90KGkpLE90KHQpKTpYcihkcixlLkRpYWdub3N0aWNzLlR5cGVfMF9jYW5ub3RfYmVfdXNlZF9hc19hbl9pbmRleF90eXBlLE90KHQpKX1pZih0YSh0KSlyZXR1cm4gdDtyZXR1cm47ZnVuY3Rpb24gcXQoTnQpe050JiZOdC5pc1JlYWRvbmx5JiZ6JiYoZS5pc0Fzc2lnbm1lbnRUYXJnZXQoeil8fGUuaXNEZWxldGVUYXJnZXQoeikpJiZYcih6LGUuRGlhZ25vc3RpY3MuSW5kZXhfc2lnbmF0dXJlX2luX3R5cGVfMF9vbmx5X3Blcm1pdHNfcmVhZGluZyxPdChpKSl9fWZ1bmN0aW9uIHZEKHIpe3JldHVybiByLmtpbmQ9PT0yMDc/ci5hcmd1bWVudEV4cHJlc3Npb246ci5raW5kPT09MTk0P3IuaW5kZXhUeXBlOnIua2luZD09PTE2Mj9yLmV4cHJlc3Npb246cn1mdW5jdGlvbiBHeChyKXtyZXR1cm4hIShyLmZsYWdzJjc3KX1mdW5jdGlvbiBzbShyKXtyZXR1cm4hIShyLmZsYWdzJjEzNDIxNzcyOCkmJmUuZXZlcnkoci50eXBlcyxHeCl9ZnVuY3Rpb24gcnYocil7cmV0dXJuISFpdihyKX1mdW5jdGlvbiBBZChyKXtyZXR1cm4hIShpdihyKSY0MTk0MzA0KX1mdW5jdGlvbiBxcChyKXtyZXR1cm4hIShpdihyKSY4Mzg4NjA4KX1mdW5jdGlvbiBpdihyKXtyZXR1cm4gci5mbGFncyYzMTQ1NzI4PyhyLm9iamVjdEZsYWdzJjIwOTcxNTJ8fChyLm9iamVjdEZsYWdzfD0yMDk3MTUyfGUucmVkdWNlTGVmdChyLnR5cGVzLGZ1bmN0aW9uKGksdCl7cmV0dXJuIGl8aXYodCl9LDApKSxyLm9iamVjdEZsYWdzJjEyNTgyOTEyKTpyLmZsYWdzJjMzNTU0NDMyPyhyLm9iamVjdEZsYWdzJjIwOTcxNTJ8fChyLm9iamVjdEZsYWdzfD0yMDk3MTUyfGl2KHIuc3Vic3RpdHV0ZSl8aXYoci5iYXNlVHlwZSkpLHIub2JqZWN0RmxhZ3MmMTI1ODI5MTIpOihyLmZsYWdzJjU4OTgyNDAwfHxCYyhyKXx8bG0ocik/NDE5NDMwNDowKXwoci5mbGFncyY0NjU4Mjk4ODgmJiFzbShyKT84Mzg4NjA4OjApfWZ1bmN0aW9uIFpmKHIsaSl7cmV0dXJuIHIuZmxhZ3MmODM4ODYwOD9ESShyLGkpOnIuZmxhZ3MmMTY3NzcyMTY/YkkocixpKTpyfWZ1bmN0aW9uIEh4KHIsaSx0KXtpZihyLmZsYWdzJjMxNDU3Mjgpe3ZhciBvPWUubWFwKHIudHlwZXMsZnVuY3Rpb24ocyl7cmV0dXJuIFpmKEpjKHMsaSksdCl9KTtyZXR1cm4gci5mbGFncyYyMDk3MTUyfHx0P0RvKG8pOlBhKG8pfX1mdW5jdGlvbiBoSShyLGksdCl7aWYoaS5mbGFncyYxMDQ4NTc2KXt2YXIgbz1lLm1hcChpLnR5cGVzLGZ1bmN0aW9uKHMpe3JldHVybiBaZihKYyhyLHMpLHQpfSk7cmV0dXJuIHQ/RG8obyk6UGEobyl9fWZ1bmN0aW9uIERJKHIsaSl7dmFyIHQ9aT9cInNpbXBsaWZpZWRGb3JXcml0aW5nXCI6XCJzaW1wbGlmaWVkRm9yUmVhZGluZ1wiO2lmKHJbdF0pcmV0dXJuIHJbdF09PT1Qbj9yOnJbdF07clt0XT1Qbjt2YXIgbz1aZihyLm9iamVjdFR5cGUsaSkscz1aZihyLmluZGV4VHlwZSxpKSx1PWhJKG8scyxpKTtpZih1KXJldHVybiByW3RdPXU7aWYoIShzLmZsYWdzJjQ2NTgyOTg4OCkpe3ZhciBoPUh4KG8scyxpKTtpZihoKXJldHVybiByW3RdPWh9aWYobG0obykmJnMuZmxhZ3MmMjk2KXt2YXIgej1qaChvLHMuZmxhZ3MmOD8wOm8udGFyZ2V0LmZpeGVkTGVuZ3RoLDAsaSk7aWYoeilyZXR1cm4gclt0XT16fWlmKEJjKG8pKXt2YXIgbWU9Smwobyk7aWYoIW1lfHxhbyhtZSxEdShvKSkpcmV0dXJuIHJbdF09U3MoeGgobyxyLmluZGV4VHlwZSksZnVuY3Rpb24oTWUpe3JldHVybiBaZihNZSxpKX0pfXJldHVybiByW3RdPXJ9ZnVuY3Rpb24gYkkocixpKXt2YXIgdD1yLmNoZWNrVHlwZSxvPXIuZXh0ZW5kc1R5cGUscz1pcChyKSx1PXRwKHIpO2lmKHUuZmxhZ3MmMTMxMDcyJiZycChzKT09PXJwKHQpKXtpZih0LmZsYWdzJjF8fGFvKE5kKHQpLE5kKG8pKSlyZXR1cm4gWmYocyxpKTtpZihYeCh0LG8pKXJldHVybiB1aX1lbHNlIGlmKHMuZmxhZ3MmMTMxMDcyJiZycCh1KT09PXJwKHQpKXtpZighKHQuZmxhZ3MmMSkmJmFvKE5kKHQpLE5kKG8pKSlyZXR1cm4gdWk7aWYodC5mbGFncyYxfHxYeCh0LG8pKXJldHVybiBaZih1LGkpfXJldHVybiByfWZ1bmN0aW9uIFh4KHIsaSl7cmV0dXJuISEoUGEoW1pnKHIsaSksdWldKS5mbGFncyYxMzEwNzIpfWZ1bmN0aW9uIHhoKHIsaSl7dmFyIHQ9VWMoW0R1KHIpXSxbaV0pLG89bnAoci5tYXBwZXIsdCk7cmV0dXJuIHVuKHZsKHIpLG8pfWZ1bmN0aW9uIEpjKHIsaSx0LG8scyx1KXtyZXR1cm4gdD09PXZvaWQgMCYmKHQ9MCksZXAocixpLHQsbyxzLHUpfHwobz9QZTpncil9ZnVuY3Rpb24gUXgocixpKXtyZXR1cm4gZ2YocixmdW5jdGlvbih0KXtpZih0LmZsYWdzJjM4NCl7dmFyIG89cGYodCk7aWYoZS5pc051bWVyaWNMaXRlcmFsTmFtZShvKSl7dmFyIHM9K287cmV0dXJuIHM+PTAmJnM8aX19cmV0dXJuITF9KX1mdW5jdGlvbiBlcChyLGksdCxvLHMsdSl7aWYodD09PXZvaWQgMCYmKHQ9MCkscj09PU1yfHxpPT09TXIpcmV0dXJuIE1yO2lmKHlFKHIpJiYhKGkuZmxhZ3MmOTgzMDQpJiZOcyhpLDEyKSYmKGk9TGkpLHllLm5vVW5jaGVja2VkSW5kZXhlZEFjY2VzcyYmdCYzMiYmKHR8PTEpLHFwKGkpfHwobyYmby5raW5kIT09MTk0P2xtKHIpJiYhUXgoaSxyLnRhcmdldC5maXhlZExlbmd0aCk6QWQocikmJiEoWW4ocikmJlF4KGksci50YXJnZXQuZml4ZWRMZW5ndGgpKSkpe2lmKHIuZmxhZ3MmMylyZXR1cm4gcjt2YXIgaD10JjEsej1yLmlkK1wiLFwiK2kuaWQrXCIsXCIraCtoZyhzLHUpLG1lPVhlLmdldCh6KTtyZXR1cm4gbWV8fFhlLnNldCh6LG1lPXlJKHIsaSxoLHMsdSkpLG1lfXZhciBNZT1YZChyKTtpZihpLmZsYWdzJjEwNDg1NzYmJiEoaS5mbGFncyYxNikpe2Zvcih2YXIgJGU9W10sdHI9ITEsZHI9MCxEcj1pLnR5cGVzO2RyPERyLmxlbmd0aDtkcisrKXt2YXIgUXI9RHJbZHJdLGxpPUt4KHIsTWUsUXIsaSxvLHR8KHRyPzEyODowKSk7aWYobGkpJGUucHVzaChsaSk7ZWxzZSBpZihvKXRyPSEwO2Vsc2UgcmV0dXJufXJldHVybiB0cj92b2lkIDA6dCY0P0RvKCRlLHMsdSk6UGEoJGUsMSxzLHUpfXJldHVybiBLeChyLE1lLGksaSxvLHR8OHw2NCl9ZnVuY3Rpb24gWXgocil7dmFyIGk9dmEocik7aWYoIWkucmVzb2x2ZWRUeXBlKXt2YXIgdD1WYShyLm9iamVjdFR5cGUpLG89VmEoci5pbmRleFR5cGUpLHM9UWQociksdT1KYyh0LG8sMCxyLHMsYmcocykpO2kucmVzb2x2ZWRUeXBlPXUuZmxhZ3MmODM4ODYwOCYmdS5vYmplY3RUeXBlPT09dCYmdS5pbmRleFR5cGU9PT1vP214KHUscik6dX1yZXR1cm4gaS5yZXNvbHZlZFR5cGV9ZnVuY3Rpb24geUQocil7dmFyIGk9dmEocik7aWYoIWkucmVzb2x2ZWRUeXBlKXt2YXIgdD10dSgzMixyLnN5bWJvbCk7dC5kZWNsYXJhdGlvbj1yLHQuYWxpYXNTeW1ib2w9UWQociksdC5hbGlhc1R5cGVBcmd1bWVudHM9YmcodC5hbGlhc1N5bWJvbCksaS5yZXNvbHZlZFR5cGU9dCxNdSh0KX1yZXR1cm4gaS5yZXNvbHZlZFR5cGV9ZnVuY3Rpb24gcnAocil7cmV0dXJuIHIuZmxhZ3MmMzM1NTQ0MzI/ci5iYXNlVHlwZTpyLmZsYWdzJjgzODg2MDgmJihyLm9iamVjdFR5cGUuZmxhZ3MmMzM1NTQ0MzJ8fHIuaW5kZXhUeXBlLmZsYWdzJjMzNTU0NDMyKT9KYyhycChyLm9iamVjdFR5cGUpLHJwKHIuaW5kZXhUeXBlKSk6cn1mdW5jdGlvbiBTSShyKXt2YXIgaT1UYyhyKTtyZXR1cm4gaSYmKEFkKGkpfHxxcChpKSk/a0Qocik6cn1mdW5jdGlvbiAkeChyKXtyZXR1cm4hci5pc0Rpc3RyaWJ1dGl2ZSYmWngoci5ub2RlLmNoZWNrVHlwZSkmJlp4KHIubm9kZS5leHRlbmRzVHlwZSl9ZnVuY3Rpb24gWngocil7cmV0dXJuIGUuaXNUdXBsZVR5cGVOb2RlKHIpJiZlLmxlbmd0aChyLmVsZW1lbnRzKT09PTEmJiFlLmlzT3B0aW9uYWxUeXBlTm9kZShyLmVsZW1lbnRzWzBdKSYmIWUuaXNSZXN0VHlwZU5vZGUoci5lbGVtZW50c1swXSkmJiEoZS5pc05hbWVkVHVwbGVNZW1iZXIoci5lbGVtZW50c1swXSkmJihyLmVsZW1lbnRzWzBdLnF1ZXN0aW9uVG9rZW58fHIuZWxlbWVudHNbMF0uZG90RG90RG90VG9rZW4pKX1mdW5jdGlvbiBoRChyLGkpe3JldHVybiAkeChyKSYmWW4oaSk/eG8oaSlbMF06aX1mdW5jdGlvbiBERChyLGksdCxvKXtmb3IodmFyIHMsdSxoPTAsej1mdW5jdGlvbigpe2lmKGg9PT0xZTMpcmV0dXJuIFhyKEllLGUuRGlhZ25vc3RpY3MuVHlwZV9pbnN0YW50aWF0aW9uX2lzX2V4Y2Vzc2l2ZWx5X2RlZXBfYW5kX3Bvc3NpYmx5X2luZmluaXRlKSxzPVBlLFwiYnJlYWtcIjt2YXIgJGU9JHgociksdHI9dW4oaEQocixycChyLmNoZWNrVHlwZSkpLGkpLGRyPXJ2KHRyKSxEcj11bihoRChyLHIuZXh0ZW5kc1R5cGUpLGkpO2lmKHRyPT09TXJ8fERyPT09TXIpcmV0dXJue3ZhbHVlOk1yfTt2YXIgUXI9dm9pZCAwO2lmKHIuaW5mZXJUeXBlUGFyYW1ldGVycyl7dmFyIGxpPWUuc2FtZU1hcChyLmluZmVyVHlwZVBhcmFtZXRlcnMsU0kpLFRpPWxpIT09ci5pbmZlclR5cGVQYXJhbWV0ZXJzP1VjKHIuaW5mZXJUeXBlUGFyYW1ldGVycyxsaSk6dm9pZCAwLENpPXV2KGxpLHZvaWQgMCwwKTtpZihUaSlmb3IodmFyICRpPW5wKGksVGkpLFppPTAscXQ9bGk7Wmk8cXQubGVuZ3RoO1ppKyspe3ZhciBOdD1xdFtaaV07ci5pbmZlclR5cGVQYXJhbWV0ZXJzLmluZGV4T2YoTnQpPT09LTEmJihOdC5tYXBwZXI9JGkpfSghZHJ8fCFlLnNvbWUoci5pbmZlclR5cGVQYXJhbWV0ZXJzLGZ1bmN0aW9uKFRuKXtyZXR1cm4gVG49PT1Ecn0pKSYmZGYoQ2kuaW5mZXJlbmNlcyx0cix1bihEcixUaSksMTUzNik7dmFyIFJhPW5wKFRpLENpLm1hcHBlcik7UXI9aT9ucChSYSxpKTpSYX12YXIgY2E9UXI/dW4oaEQocixyLmV4dGVuZHNUeXBlKSxRcik6RHI7aWYoIWRyJiYhcnYoY2EpKXtpZighKGNhLmZsYWdzJjMpJiYodHIuZmxhZ3MmMSYmISRlfHwhYW8od2godHIpLHdoKGNhKSkpKXt0ci5mbGFncyYxJiYhJGUmJih1fHwodT1bXSkpLnB1c2godW4oVmEoci5ub2RlLnRydWVUeXBlKSxRcnx8aSkpO3ZhciBTbj1WYShyLm5vZGUuZmFsc2VUeXBlKTtpZihTbi5mbGFncyYxNjc3NzIxNil7dmFyIGphPVNuLnJvb3Q7aWYoamEubm9kZS5wYXJlbnQ9PT1yLm5vZGUmJighamEuaXNEaXN0cmlidXRpdmV8fGphLmNoZWNrVHlwZT09PXIuY2hlY2tUeXBlKSlyZXR1cm4gcj1qYSxcImNvbnRpbnVlXCI7aWYoTWUoU24saSkpcmV0dXJuXCJjb250aW51ZVwifXJldHVybiBzPXVuKFNuLGkpLFwiYnJlYWtcIn1pZihjYS5mbGFncyYzfHxhbyhOZCh0ciksTmQoY2EpKSl7dmFyIEZuPVZhKHIubm9kZS50cnVlVHlwZSksd249UXJ8fGk7cmV0dXJuIE1lKEZuLHduKT9cImNvbnRpbnVlXCI6KHM9dW4oRm4sd24pLFwiYnJlYWtcIil9fXJldHVybiBzPW1jKDE2Nzc3MjE2KSxzLnJvb3Q9cixzLmNoZWNrVHlwZT11bihyLmNoZWNrVHlwZSxpKSxzLmV4dGVuZHNUeXBlPXVuKHIuZXh0ZW5kc1R5cGUsaSkscy5tYXBwZXI9aSxzLmNvbWJpbmVkTWFwcGVyPVFyLHMuYWxpYXNTeW1ib2w9dHx8ci5hbGlhc1N5bWJvbCxzLmFsaWFzVHlwZUFyZ3VtZW50cz10P286ZV8oci5hbGlhc1R5cGVBcmd1bWVudHMsaSksXCJicmVha1wifTs7KXt2YXIgbWU9eigpO2lmKHR5cGVvZiBtZT09XCJvYmplY3RcIilyZXR1cm4gbWUudmFsdWU7aWYobWU9PT1cImJyZWFrXCIpYnJlYWt9cmV0dXJuIHU/UGEoZS5hcHBlbmQodSxzKSk6cztmdW5jdGlvbiBNZSgkZSx0cil7aWYoJGUuZmxhZ3MmMTY3NzcyMTYmJnRyKXt2YXIgZHI9JGUucm9vdDtpZihkci5vdXRlclR5cGVQYXJhbWV0ZXJzKXt2YXIgRHI9bnAoJGUubWFwcGVyLHRyKSxRcj1lLm1hcChkci5vdXRlclR5cGVQYXJhbWV0ZXJzLGZ1bmN0aW9uKENpKXtyZXR1cm4gYXAoQ2ksRHIpfSksbGk9VWMoZHIub3V0ZXJUeXBlUGFyYW1ldGVycyxRciksVGk9ZHIuaXNEaXN0cmlidXRpdmU/YXAoZHIuY2hlY2tUeXBlLGxpKTp2b2lkIDA7aWYoIVRpfHxUaT09PWRyLmNoZWNrVHlwZXx8IShUaS5mbGFncyYxMTc5NjQ4KSlyZXR1cm4gcj1kcixpPWxpLHQ9dm9pZCAwLG89dm9pZCAwLGRyLmFsaWFzU3ltYm9sJiZoKyssITB9fXJldHVybiExfX1mdW5jdGlvbiBpcChyKXtyZXR1cm4gci5yZXNvbHZlZFRydWVUeXBlfHwoci5yZXNvbHZlZFRydWVUeXBlPXVuKFZhKHIucm9vdC5ub2RlLnRydWVUeXBlKSxyLm1hcHBlcikpfWZ1bmN0aW9uIHRwKHIpe3JldHVybiByLnJlc29sdmVkRmFsc2VUeXBlfHwoci5yZXNvbHZlZEZhbHNlVHlwZT11bihWYShyLnJvb3Qubm9kZS5mYWxzZVR5cGUpLHIubWFwcGVyKSl9ZnVuY3Rpb24gVEkocil7cmV0dXJuIHIucmVzb2x2ZWRJbmZlcnJlZFRydWVUeXBlfHwoci5yZXNvbHZlZEluZmVycmVkVHJ1ZVR5cGU9ci5jb21iaW5lZE1hcHBlcj91bihWYShyLnJvb3Qubm9kZS50cnVlVHlwZSksci5jb21iaW5lZE1hcHBlcik6aXAocikpfWZ1bmN0aW9uIGVFKHIpe3ZhciBpO3JldHVybiByLmxvY2FscyYmci5sb2NhbHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LmZsYWdzJjI2MjE0NCYmKGk9ZS5hcHBlbmQoaSxnbyh0KSkpfSksaX1mdW5jdGlvbiB4SShyKXtyZXR1cm4gci5pc0Rpc3RyaWJ1dGl2ZSYmKFBoKHIuY2hlY2tUeXBlLHIubm9kZS50cnVlVHlwZSl8fFBoKHIuY2hlY2tUeXBlLHIubm9kZS5mYWxzZVR5cGUpKX1mdW5jdGlvbiBFSShyKXt2YXIgaT12YShyKTtpZighaS5yZXNvbHZlZFR5cGUpe3ZhciB0PVZhKHIuY2hlY2tUeXBlKSxvPVFkKHIpLHM9YmcobyksdT1rZihyLCEwKSxoPXM/dTplLmZpbHRlcih1LGZ1bmN0aW9uKG1lKXtyZXR1cm4gUGgobWUscil9KSx6PXtub2RlOnIsY2hlY2tUeXBlOnQsZXh0ZW5kc1R5cGU6VmEoci5leHRlbmRzVHlwZSksaXNEaXN0cmlidXRpdmU6ISEodC5mbGFncyYyNjIxNDQpLGluZmVyVHlwZVBhcmFtZXRlcnM6ZUUociksb3V0ZXJUeXBlUGFyYW1ldGVyczpoLGluc3RhbnRpYXRpb25zOnZvaWQgMCxhbGlhc1N5bWJvbDpvLGFsaWFzVHlwZUFyZ3VtZW50czpzfTtpLnJlc29sdmVkVHlwZT1ERCh6LHZvaWQgMCksaCYmKHouaW5zdGFudGlhdGlvbnM9bmV3IGUuTWFwLHouaW5zdGFudGlhdGlvbnMuc2V0KFN1KGgpLGkucmVzb2x2ZWRUeXBlKSl9cmV0dXJuIGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIENJKHIpe3ZhciBpPXZhKHIpO3JldHVybiBpLnJlc29sdmVkVHlwZXx8KGkucmVzb2x2ZWRUeXBlPUpzKEV0KHIudHlwZVBhcmFtZXRlcikpKSxpLnJlc29sdmVkVHlwZX1mdW5jdGlvbiByRShyKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIocik/W3JdOmUuYXBwZW5kKHJFKHIubGVmdCksci5yaWdodCl9ZnVuY3Rpb24ga0kocil7dmFyIGk9dmEocik7aWYoIWkucmVzb2x2ZWRUeXBlKXtpZihyLmlzVHlwZU9mJiZyLnR5cGVBcmd1bWVudHMpcmV0dXJuIFhyKHIsZS5EaWFnbm9zdGljcy5UeXBlX2FyZ3VtZW50c19jYW5ub3RfYmVfdXNlZF9oZXJlKSxpLnJlc29sdmVkU3ltYm9sPXhlLGkucmVzb2x2ZWRUeXBlPVBlO2lmKCFlLmlzTGl0ZXJhbEltcG9ydFR5cGVOb2RlKHIpKXJldHVybiBYcihyLmFyZ3VtZW50LGUuRGlhZ25vc3RpY3MuU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWQpLGkucmVzb2x2ZWRTeW1ib2w9eGUsaS5yZXNvbHZlZFR5cGU9UGU7dmFyIHQ9ci5pc1R5cGVPZj8xMTE1NTE6ci5mbGFncyY4Mzg4NjA4PzkwMDA5NTo3ODg5Njgsbz1hYyhyLHIuYXJndW1lbnQubGl0ZXJhbCk7aWYoIW8pcmV0dXJuIGkucmVzb2x2ZWRTeW1ib2w9eGUsaS5yZXNvbHZlZFR5cGU9UGU7dmFyIHM9VXMobywhMSk7aWYoZS5ub2RlSXNNaXNzaW5nKHIucXVhbGlmaWVyKSlpZihzLmZsYWdzJnQpaS5yZXNvbHZlZFR5cGU9aUUocixpLHMsdCk7ZWxzZXt2YXIgdHI9dD09PTExMTU1MT9lLkRpYWdub3N0aWNzLk1vZHVsZV8wX2RvZXNfbm90X3JlZmVyX3RvX2FfdmFsdWVfYnV0X2lzX3VzZWRfYXNfYV92YWx1ZV9oZXJlOmUuRGlhZ25vc3RpY3MuTW9kdWxlXzBfZG9lc19ub3RfcmVmZXJfdG9fYV90eXBlX2J1dF9pc191c2VkX2FzX2FfdHlwZV9oZXJlX0RpZF95b3VfbWVhbl90eXBlb2ZfaW1wb3J0XzA7WHIocix0cixyLmFyZ3VtZW50LmxpdGVyYWwudGV4dCksaS5yZXNvbHZlZFN5bWJvbD14ZSxpLnJlc29sdmVkVHlwZT1QZX1lbHNle2Zvcih2YXIgdT1yRShyLnF1YWxpZmllciksaD1zLHo9dm9pZCAwO3o9dS5zaGlmdCgpOyl7dmFyIG1lPXUubGVuZ3RoPzE5MjA6dCxNZT1zbyhvcyhoKSksJGU9ci5pc1R5cGVPZj9iaShKdChNZSksei5lc2NhcGVkVGV4dCk6cXMoZGMoTWUpLHouZXNjYXBlZFRleHQsbWUpO2lmKCEkZSlyZXR1cm4gWHIoeixlLkRpYWdub3N0aWNzLk5hbWVzcGFjZV8wX2hhc19ub19leHBvcnRlZF9tZW1iZXJfMSxjbChoKSxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHopKSxpLnJlc29sdmVkVHlwZT1QZTt2YSh6KS5yZXNvbHZlZFN5bWJvbD0kZSx2YSh6LnBhcmVudCkucmVzb2x2ZWRTeW1ib2w9JGUsaD0kZX1pLnJlc29sdmVkVHlwZT1pRShyLGksaCx0KX19cmV0dXJuIGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIGlFKHIsaSx0LG8pe3ZhciBzPW9zKHQpO3JldHVybiBpLnJlc29sdmVkU3ltYm9sPXMsbz09PTExMTU1MT9KdCh0KTpoaChyLHMpfWZ1bmN0aW9uIHRFKHIpe3ZhciBpPXZhKHIpO2lmKCFpLnJlc29sdmVkVHlwZSl7dmFyIHQ9UWQocik7aWYoTmYoci5zeW1ib2wpLnNpemU9PT0wJiYhdClpLnJlc29sdmVkVHlwZT1CaTtlbHNle3ZhciBvPXR1KDE2LHIuc3ltYm9sKTtvLmFsaWFzU3ltYm9sPXQsby5hbGlhc1R5cGVBcmd1bWVudHM9YmcodCksZS5pc0pTRG9jVHlwZUxpdGVyYWwocikmJnIuaXNBcnJheVR5cGUmJihvPVpzKG8pKSxpLnJlc29sdmVkVHlwZT1vfX1yZXR1cm4gaS5yZXNvbHZlZFR5cGV9ZnVuY3Rpb24gUWQocil7Zm9yKHZhciBpPXIucGFyZW50O2UuaXNQYXJlbnRoZXNpemVkVHlwZU5vZGUoaSl8fGUuaXNKU0RvY1R5cGVFeHByZXNzaW9uKGkpfHxlLmlzVHlwZU9wZXJhdG9yTm9kZShpKSYmaS5vcGVyYXRvcj09PTE0NTspaT1pLnBhcmVudDtyZXR1cm4gZS5pc1R5cGVBbGlhcyhpKT9FdChpKTp2b2lkIDB9ZnVuY3Rpb24gYmcocil7cmV0dXJuIHI/QWYocik6dm9pZCAwfWZ1bmN0aW9uIGJEKHIpe3JldHVybiEhKHIuZmxhZ3MmNTI0Mjg4KSYmIUJjKHIpfWZ1bmN0aW9uIFNEKHIpe3JldHVybiBPZihyKXx8ISEoci5mbGFncyY0NzQwNTg3NDgpfWZ1bmN0aW9uIFREKHIsaSl7aWYoIShyLmZsYWdzJjEwNDg1NzYpKXJldHVybiByO2lmKGUuZXZlcnkoci50eXBlcyxTRCkpcmV0dXJuIGUuZmluZChyLnR5cGVzLE9mKXx8QmE7dmFyIHQ9ZS5maW5kKHIudHlwZXMsZnVuY3Rpb24odSl7cmV0dXJuIVNEKHUpfSk7aWYoIXQpcmV0dXJuIHI7dmFyIG89ZS5maW5kKHIudHlwZXMsZnVuY3Rpb24odSl7cmV0dXJuIHUhPT10JiYhU0QodSl9KTtpZihvKXJldHVybiByO3JldHVybiBzKHQpO2Z1bmN0aW9uIHModSl7Zm9yKHZhciBoPWUuY3JlYXRlU3ltYm9sVGFibGUoKSx6PTAsbWU9dW8odSk7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel07aWYoIShlLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2woTWUpJjI0KSl7aWYoRWgoTWUpKXt2YXIgJGU9TWUuZmxhZ3MmNjU1MzYmJiEoTWUuZmxhZ3MmMzI3NjgpLHRyPTE2Nzc3MjIwLGRyPW9vKHRyLE1lLmVzY2FwZWROYW1lLEdkKE1lKXwoaT84OjApKTtkci50eXBlPSRlP1RyOmtjKEp0KE1lKSwhMCksZHIuZGVjbGFyYXRpb25zPU1lLmRlY2xhcmF0aW9ucyxkci5uYW1lVHlwZT1BYShNZSkubmFtZVR5cGUsZHIuc3ludGhldGljT3JpZ2luPU1lLGguc2V0KE1lLmVzY2FwZWROYW1lLGRyKX19fXZhciBEcj1ycyh1LnN5bWJvbCxoLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksSG4odSkpO3JldHVybiBEci5vYmplY3RGbGFnc3w9MTMxMjAwLERyfX1mdW5jdGlvbiBWcChyLGksdCxvLHMpe2lmKHIuZmxhZ3MmMXx8aS5mbGFncyYxKXJldHVybiBPZTtpZihyLmZsYWdzJjJ8fGkuZmxhZ3MmMilyZXR1cm4gZ3I7aWYoci5mbGFncyYxMzEwNzIpcmV0dXJuIGk7aWYoaS5mbGFncyYxMzEwNzIpcmV0dXJuIHI7aWYocj1URChyLHMpLHIuZmxhZ3MmMTA0ODU3NilyZXR1cm4gbnkoW3IsaV0pP1NzKHIsZnVuY3Rpb24oTnQpe3JldHVybiBWcChOdCxpLHQsbyxzKX0pOlBlO2lmKGk9VEQoaSxzKSxpLmZsYWdzJjEwNDg1NzYpcmV0dXJuIG55KFtyLGldKT9TcyhpLGZ1bmN0aW9uKE50KXtyZXR1cm4gVnAocixOdCx0LG8scyl9KTpQZTtpZihpLmZsYWdzJjQ3Mzk2MDQ0NClyZXR1cm4gcjtpZihBZChyKXx8QWQoaSkpe2lmKE9mKHIpKXJldHVybiBpO2lmKHIuZmxhZ3MmMjA5NzE1Mil7dmFyIHU9ci50eXBlcyxoPXVbdS5sZW5ndGgtMV07aWYoYkQoaCkmJmJEKGkpKXJldHVybiBEbyhlLmNvbmNhdGVuYXRlKHUuc2xpY2UoMCx1Lmxlbmd0aC0xKSxbVnAoaCxpLHQsbyxzKV0pKX1yZXR1cm4gRG8oW3IsaV0pfWZvcih2YXIgej1lLmNyZWF0ZVN5bWJvbFRhYmxlKCksbWU9bmV3IGUuU2V0LE1lPXI9PT1CYT9IbihpKTpvaChbcixpXSksJGU9MCx0cj11byhpKTskZTx0ci5sZW5ndGg7JGUrKyl7dmFyIGRyPXRyWyRlXTtlLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2woZHIpJjI0P21lLmFkZChkci5lc2NhcGVkTmFtZSk6RWgoZHIpJiZ6LnNldChkci5lc2NhcGVkTmFtZSx4RChkcixzKSl9Zm9yKHZhciBEcj0wLFFyPXVvKHIpO0RyPFFyLmxlbmd0aDtEcisrKXt2YXIgbGk9UXJbRHJdO2lmKCEobWUuaGFzKGxpLmVzY2FwZWROYW1lKXx8IUVoKGxpKSkpaWYoei5oYXMobGkuZXNjYXBlZE5hbWUpKXt2YXIgZHI9ei5nZXQobGkuZXNjYXBlZE5hbWUpLFRpPUp0KGRyKTtpZihkci5mbGFncyYxNjc3NzIxNil7dmFyIENpPWUuY29uY2F0ZW5hdGUobGkuZGVjbGFyYXRpb25zLGRyLmRlY2xhcmF0aW9ucyksJGk9NHxsaS5mbGFncyYxNjc3NzIxNixaaT1vbygkaSxsaS5lc2NhcGVkTmFtZSk7WmkudHlwZT1QYShbSnQobGkpLCREKFRpKV0sMiksWmkubGVmdFNwcmVhZD1saSxaaS5yaWdodFNwcmVhZD1kcixaaS5kZWNsYXJhdGlvbnM9Q2ksWmkubmFtZVR5cGU9QWEobGkpLm5hbWVUeXBlLHouc2V0KGxpLmVzY2FwZWROYW1lLFppKX19ZWxzZSB6LnNldChsaS5lc2NhcGVkTmFtZSx4RChsaSxzKSl9dmFyIHF0PXJzKHQseixlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LGUuc2FtZU1hcChNZSxmdW5jdGlvbihOdCl7cmV0dXJuIEFJKE50LHMpfSkpO3JldHVybiBxdC5vYmplY3RGbGFnc3w9MjIyODM1MnxvLHF0fWZ1bmN0aW9uIEVoKHIpe3ZhciBpO3JldHVybiFlLnNvbWUoci5kZWNsYXJhdGlvbnMsZS5pc1ByaXZhdGVJZGVudGlmaWVyQ2xhc3NFbGVtZW50RGVjbGFyYXRpb24pJiYoIShyLmZsYWdzJjEwNjQ5Nil8fCEoISgoaT1yLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxpPT09dm9pZCAwKSYmaS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlLmlzQ2xhc3NMaWtlKHQucGFyZW50KX0pKSl9ZnVuY3Rpb24geEQocixpKXt2YXIgdD1yLmZsYWdzJjY1NTM2JiYhKHIuZmxhZ3MmMzI3NjgpO2lmKCF0JiZpPT09WnUocikpcmV0dXJuIHI7dmFyIG89NHxyLmZsYWdzJjE2Nzc3MjE2LHM9b28obyxyLmVzY2FwZWROYW1lLEdkKHIpfChpPzg6MCkpO3JldHVybiBzLnR5cGU9dD9UcjpKdChyKSxzLmRlY2xhcmF0aW9ucz1yLmRlY2xhcmF0aW9ucyxzLm5hbWVUeXBlPUFhKHIpLm5hbWVUeXBlLHMuc3ludGhldGljT3JpZ2luPXIsc31mdW5jdGlvbiBBSShyLGkpe3JldHVybiByLmlzUmVhZG9ubHkhPT1pP3psKHIua2V5VHlwZSxyLnR5cGUsaSxyLmRlY2xhcmF0aW9uKTpyfWZ1bmN0aW9uIG95KHIsaSx0LG8pe3ZhciBzPW1jKHIpO3JldHVybiBzLnN5bWJvbD10LHMudmFsdWU9aSxzLnJlZ3VsYXJUeXBlPW98fHMsc31mdW5jdGlvbiBTZyhyKXtpZihyLmZsYWdzJjI5NDQpe2lmKCFyLmZyZXNoVHlwZSl7dmFyIGk9b3koci5mbGFncyxyLnZhbHVlLHIuc3ltYm9sLHIpO2kuZnJlc2hUeXBlPWksci5mcmVzaFR5cGU9aX1yZXR1cm4gci5mcmVzaFR5cGV9cmV0dXJuIHJ9ZnVuY3Rpb24gamMocil7cmV0dXJuIHIuZmxhZ3MmMjk0ND9yLnJlZ3VsYXJUeXBlOnIuZmxhZ3MmMTA0ODU3Nj9yLnJlZ3VsYXJUeXBlfHwoci5yZWd1bGFyVHlwZT1TcyhyLGpjKSk6cn1mdW5jdGlvbiBLcChyKXtyZXR1cm4hIShyLmZsYWdzJjI5NDQpJiZyLmZyZXNoVHlwZT09PXJ9ZnVuY3Rpb24gQnUocil7dmFyIGk7cmV0dXJuIFp0LmdldChyKXx8KFp0LnNldChyLGk9b3koMTI4LHIpKSxpKX1mdW5jdGlvbiBJZihyKXt2YXIgaTtyZXR1cm4gX3IuZ2V0KHIpfHwoX3Iuc2V0KHIsaT1veSgyNTYscikpLGkpfWZ1bmN0aW9uIEVEKHIpe3ZhciBpLHQ9ZS5wc2V1ZG9CaWdJbnRUb1N0cmluZyhyKTtyZXR1cm4gcGkuZ2V0KHQpfHwocGkuc2V0KHQsaT1veSgyMDQ4LHIpKSxpKX1mdW5jdGlvbiBOSShyLGksdCl7dmFyIG8scz10eXBlb2Ygcj09XCJzdHJpbmdcIj9cIkBcIjpcIiNcIix1PWkrcytyLGg9MTAyNHwodHlwZW9mIHI9PVwic3RyaW5nXCI/MTI4OjI1Nik7cmV0dXJuIGFlLmdldCh1KXx8KGFlLnNldCh1LG89b3koaCxyLHQpKSxvKX1mdW5jdGlvbiBQSShyKXtpZihyLmxpdGVyYWwua2luZD09PTEwNClyZXR1cm4gV2k7dmFyIGk9dmEocik7cmV0dXJuIGkucmVzb2x2ZWRUeXBlfHwoaS5yZXNvbHZlZFR5cGU9amMoeW4oci5saXRlcmFsKSkpLGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIElJKHIpe3ZhciBpPW1jKDgxOTIpO3JldHVybiBpLnN5bWJvbD1yLGkuZXNjYXBlZE5hbWU9XCJfX0BcIi5jb25jYXQoaS5zeW1ib2wuZXNjYXBlZE5hbWUsXCJAXCIpLmNvbmNhdCh5KGkuc3ltYm9sKSksaX1mdW5jdGlvbiBDRChyKXtpZihlLmlzVmFsaWRFU1N5bWJvbERlY2xhcmF0aW9uKHIpKXt2YXIgaT1lLmlzQ29tbW9uSnNFeHBvcnRQcm9wZXJ0eUFzc2lnbm1lbnQocik/RXQoci5sZWZ0KTpFdChyKTtpZihpKXt2YXIgdD1BYShpKTtyZXR1cm4gdC51bmlxdWVFU1N5bWJvbFR5cGV8fCh0LnVuaXF1ZUVTU3ltYm9sVHlwZT1JSShpKSl9fXJldHVybiBLaX1mdW5jdGlvbiB3SShyKXt2YXIgaT1lLmdldFRoaXNDb250YWluZXIociwhMSksdD1pJiZpLnBhcmVudDtpZih0JiYoZS5pc0NsYXNzTGlrZSh0KXx8dC5raW5kPT09MjU4KSYmIWUuaXNTdGF0aWMoaSkmJighZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oaSl8fGUuaXNOb2RlRGVzY2VuZGFudE9mKHIsaS5ib2R5KSkpcmV0dXJuIGFhKEV0KHQpKS50aGlzVHlwZTtpZih0JiZlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24odCkmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHQucGFyZW50KSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHQucGFyZW50KT09PTYpcmV0dXJuIGFhKEV0KHQucGFyZW50LmxlZnQpLnBhcmVudCkudGhpc1R5cGU7dmFyIG89ci5mbGFncyY4Mzg4NjA4P2UuZ2V0SG9zdFNpZ25hdHVyZUZyb21KU0RvYyhyKTp2b2lkIDA7cmV0dXJuIG8mJmUuaXNGdW5jdGlvbkV4cHJlc3Npb24obykmJmUuaXNCaW5hcnlFeHByZXNzaW9uKG8ucGFyZW50KSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKG8ucGFyZW50KT09PTM/YWEoRXQoby5wYXJlbnQubGVmdCkucGFyZW50KS50aGlzVHlwZTpTbChpKSYmZS5pc05vZGVEZXNjZW5kYW50T2YocixpLmJvZHkpP2FhKEV0KGkpKS50aGlzVHlwZTooWHIocixlLkRpYWdub3N0aWNzLkFfdGhpc190eXBlX2lzX2F2YWlsYWJsZV9vbmx5X2luX2Ffbm9uX3N0YXRpY19tZW1iZXJfb2ZfYV9jbGFzc19vcl9pbnRlcmZhY2UpLFBlKX1mdW5jdGlvbiBDaChyKXt2YXIgaT12YShyKTtyZXR1cm4gaS5yZXNvbHZlZFR5cGV8fChpLnJlc29sdmVkVHlwZT13SShyKSksaS5yZXNvbHZlZFR5cGV9ZnVuY3Rpb24gYUUocil7cmV0dXJuIFZhKHN5KHIudHlwZSl8fHIudHlwZSl9ZnVuY3Rpb24gc3kocil7c3dpdGNoKHIua2luZCl7Y2FzZSAxOTE6cmV0dXJuIHN5KHIudHlwZSk7Y2FzZSAxODQ6aWYoci5lbGVtZW50cy5sZW5ndGg9PT0xJiYocj1yLmVsZW1lbnRzWzBdLHIua2luZD09PTE4Nnx8ci5raW5kPT09MTk3JiZyLmRvdERvdERvdFRva2VuKSlyZXR1cm4gc3koci50eXBlKTticmVhaztjYXNlIDE4MzpyZXR1cm4gci5lbGVtZW50VHlwZX19ZnVuY3Rpb24gT0kocil7dmFyIGk9dmEocik7cmV0dXJuIGkucmVzb2x2ZWRUeXBlfHwoaS5yZXNvbHZlZFR5cGU9ci5kb3REb3REb3RUb2tlbj9hRShyKTprYyhWYShyLnR5cGUpLCEwLCEhci5xdWVzdGlvblRva2VuKSl9ZnVuY3Rpb24gVmEocil7cmV0dXJuIG14KG5FKHIpLHIpfWZ1bmN0aW9uIG5FKHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMTMwOmNhc2UgMzEyOmNhc2UgMzEzOnJldHVybiBPZTtjYXNlIDE1NTpyZXR1cm4gZ3I7Y2FzZSAxNTA6cmV0dXJuIExpO2Nhc2UgMTQ3OnJldHVybiBudDtjYXNlIDE1ODpyZXR1cm4gTXQ7Y2FzZSAxMzM6cmV0dXJuIElpO2Nhc2UgMTUxOnJldHVybiBLaTtjYXNlIDExNDpyZXR1cm4gRmk7Y2FzZSAxNTM6cmV0dXJuIFRyO2Nhc2UgMTA0OnJldHVybiBXaTtjYXNlIDE0MzpyZXR1cm4gdWk7Y2FzZSAxNDg6cmV0dXJuIHIuZmxhZ3MmMjYyMTQ0JiYhbj9PZTpPaTtjYXNlIDEzODpyZXR1cm4gRGU7Y2FzZSAxOTI6Y2FzZSAxMDg6cmV0dXJuIENoKHIpO2Nhc2UgMTk2OnJldHVybiBQSShyKTtjYXNlIDE3ODpyZXR1cm4gdHkocik7Y2FzZSAxNzc6cmV0dXJuIHIuYXNzZXJ0c01vZGlmaWVyP0ZpOklpO2Nhc2UgMjI4OnJldHVybiB0eShyKTtjYXNlIDE4MTpyZXR1cm4geXgocik7Y2FzZSAxODM6Y2FzZSAxODQ6cmV0dXJuIGozKHIpO2Nhc2UgMTg1OnJldHVybiBXMyhyKTtjYXNlIDE4NzpyZXR1cm4gUTMocik7Y2FzZSAxODg6cmV0dXJuIGFJKHIpO2Nhc2UgMzE0OnJldHVybiBiMyhyKTtjYXNlIDMxNjpyZXR1cm4ga2MoVmEoci50eXBlKSk7Y2FzZSAxOTc6cmV0dXJuIE9JKHIpO2Nhc2UgMTkxOmNhc2UgMzE1OmNhc2UgMzA5OnJldHVybiBWYShyLnR5cGUpO2Nhc2UgMTg2OnJldHVybiBhRShyKTtjYXNlIDMxODpyZXR1cm4gS00ocik7Y2FzZSAxNzk6Y2FzZSAxODA6Y2FzZSAxODI6Y2FzZSAzMjI6Y2FzZSAzMTc6Y2FzZSAzMjM6cmV0dXJuIHRFKHIpO2Nhc2UgMTkzOnJldHVybiBmSShyKTtjYXNlIDE5NDpyZXR1cm4gWXgocik7Y2FzZSAxOTU6cmV0dXJuIHlEKHIpO2Nhc2UgMTg5OnJldHVybiBFSShyKTtjYXNlIDE5MDpyZXR1cm4gQ0kocik7Y2FzZSAxOTg6cmV0dXJuIF9JKHIpO2Nhc2UgMjAwOnJldHVybiBrSShyKTtjYXNlIDc5OmNhc2UgMTYxOmNhc2UgMjA2OnZhciBpPWVsKHIpO3JldHVybiBpP2dvKGkpOlBlO2RlZmF1bHQ6cmV0dXJuIFBlfX1mdW5jdGlvbiBraChyLGksdCl7aWYociYmci5sZW5ndGgpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBzPXJbb10sdT10KHMsaSk7aWYocyE9PXUpe3ZhciBoPW89PT0wP1tdOnIuc2xpY2UoMCxvKTtmb3IoaC5wdXNoKHUpLG8rKztvPHIubGVuZ3RoO28rKyloLnB1c2godChyW29dLGkpKTtyZXR1cm4gaH19cmV0dXJuIHJ9ZnVuY3Rpb24gZV8ocixpKXtyZXR1cm4ga2gocixpLHVuKX1mdW5jdGlvbiBBaChyLGkpe3JldHVybiBraChyLGksVGcpfWZ1bmN0aW9uIG9FKHIsaSl7cmV0dXJuIGtoKHIsaSxHSSl9ZnVuY3Rpb24gVWMocixpKXtyZXR1cm4gci5sZW5ndGg9PT0xP1lkKHJbMF0saT9pWzBdOk9lKTpGSShyLGkpfWZ1bmN0aW9uIGFwKHIsaSl7c3dpdGNoKGkua2luZCl7Y2FzZSAwOnJldHVybiByPT09aS5zb3VyY2U/aS50YXJnZXQ6cjtjYXNlIDE6Zm9yKHZhciB0PWkuc291cmNlcyxvPWkudGFyZ2V0cyxzPTA7czx0Lmxlbmd0aDtzKyspaWYocj09PXRbc10pcmV0dXJuIG8/b1tzXTpPZTtyZXR1cm4gcjtjYXNlIDI6cmV0dXJuIGkuZnVuYyhyKTtjYXNlIDM6Y2FzZSA0OnZhciB1PWFwKHIsaS5tYXBwZXIxKTtyZXR1cm4gdSE9PXImJmkua2luZD09PTM/dW4odSxpLm1hcHBlcjIpOmFwKHUsaS5tYXBwZXIyKX19ZnVuY3Rpb24gWWQocixpKXtyZXR1cm57a2luZDowLHNvdXJjZTpyLHRhcmdldDppfX1mdW5jdGlvbiBGSShyLGkpe3JldHVybntraW5kOjEsc291cmNlczpyLHRhcmdldHM6aX19ZnVuY3Rpb24gR3Aocil7cmV0dXJue2tpbmQ6MixmdW5jOnJ9fWZ1bmN0aW9uIE5oKHIsaSx0KXtyZXR1cm57a2luZDpyLG1hcHBlcjE6aSxtYXBwZXIyOnR9fWZ1bmN0aW9uIHNFKHIpe3JldHVybiBVYyhyLHZvaWQgMCl9ZnVuY3Rpb24gTUkocixpKXtyZXR1cm4gR3AoZnVuY3Rpb24odCl7cmV0dXJuIGUuZmluZEluZGV4KHIuaW5mZXJlbmNlcyxmdW5jdGlvbihvKXtyZXR1cm4gby50eXBlUGFyYW1ldGVyPT09dH0pPj1pP2dyOnR9KX1mdW5jdGlvbiBucChyLGkpe3JldHVybiByP05oKDMscixpKTppfWZ1bmN0aW9uIExJKHIsaSl7cmV0dXJuIHI/TmgoNCxyLGkpOml9ZnVuY3Rpb24gJGQocixpLHQpe3JldHVybiB0P05oKDQsWWQocixpKSx0KTpZZChyLGkpfWZ1bmN0aW9uIHR2KHIsaSx0KXtyZXR1cm4gcj9OaCg0LHIsWWQoaSx0KSk6WWQoaSx0KX1mdW5jdGlvbiBSSShyKXtyZXR1cm4gci5jb25zdHJhaW50PT09Z3I/cjpyLnJlc3RyaWN0aXZlSW5zdGFudGlhdGlvbnx8KHIucmVzdHJpY3RpdmVJbnN0YW50aWF0aW9uPUhjKHIuc3ltYm9sKSxyLnJlc3RyaWN0aXZlSW5zdGFudGlhdGlvbi5jb25zdHJhaW50PWdyLHIucmVzdHJpY3RpdmVJbnN0YW50aWF0aW9uKX1mdW5jdGlvbiBrRChyKXt2YXIgaT1IYyhyLnN5bWJvbCk7cmV0dXJuIGkudGFyZ2V0PXIsaX1mdW5jdGlvbiBCSShyLGkpe3JldHVybiB2ZyhyLmtpbmQsci5wYXJhbWV0ZXJOYW1lLHIucGFyYW1ldGVySW5kZXgsdW4oci50eXBlLGkpKX1mdW5jdGlvbiBUZyhyLGksdCl7dmFyIG87aWYoci50eXBlUGFyYW1ldGVycyYmIXQpe289ZS5tYXAoci50eXBlUGFyYW1ldGVycyxrRCksaT1ucChVYyhyLnR5cGVQYXJhbWV0ZXJzLG8pLGkpO2Zvcih2YXIgcz0wLHU9bztzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXTtoLm1hcHBlcj1pfX12YXIgej1GdShyLmRlY2xhcmF0aW9uLG8sci50aGlzUGFyYW1ldGVyJiZBRChyLnRoaXNQYXJhbWV0ZXIsaSksa2goci5wYXJhbWV0ZXJzLGksQUQpLHZvaWQgMCx2b2lkIDAsci5taW5Bcmd1bWVudENvdW50LHIuZmxhZ3MmMzkpO3JldHVybiB6LnRhcmdldD1yLHoubWFwcGVyPWksen1mdW5jdGlvbiBBRChyLGkpe3ZhciB0PUFhKHIpO2lmKHQudHlwZSYmIUlkKHQudHlwZSkpcmV0dXJuIHI7ZS5nZXRDaGVja0ZsYWdzKHIpJjEmJihyPXQudGFyZ2V0LGk9bnAodC5tYXBwZXIsaSkpO3ZhciBvPW9vKHIuZmxhZ3Msci5lc2NhcGVkTmFtZSwxfGUuZ2V0Q2hlY2tGbGFncyhyKSY1MzI1Nik7cmV0dXJuIG8uZGVjbGFyYXRpb25zPXIuZGVjbGFyYXRpb25zLG8ucGFyZW50PXIucGFyZW50LG8udGFyZ2V0PXIsby5tYXBwZXI9aSxyLnZhbHVlRGVjbGFyYXRpb24mJihvLnZhbHVlRGVjbGFyYXRpb249ci52YWx1ZURlY2xhcmF0aW9uKSx0Lm5hbWVUeXBlJiYoby5uYW1lVHlwZT10Lm5hbWVUeXBlKSxvfWZ1bmN0aW9uIEpJKHIsaSx0LG8pe3ZhciBzPXIub2JqZWN0RmxhZ3MmNHx8ci5vYmplY3RGbGFncyY4Mzg4NjA4P3Iubm9kZTpyLnN5bWJvbC5kZWNsYXJhdGlvbnNbMF0sdT12YShzKSxoPXIub2JqZWN0RmxhZ3MmND91LnJlc29sdmVkVHlwZTpyLm9iamVjdEZsYWdzJjY0P3IudGFyZ2V0OnIsej11Lm91dGVyVHlwZVBhcmFtZXRlcnM7aWYoIXope3ZhciBtZT1rZihzLCEwKTtpZihTbChzKSl7dmFyIE1lPWpsKHMpO21lPWUuYWRkUmFuZ2UobWUsTWUpfXo9bWV8fGUuZW1wdHlBcnJheTt2YXIgJGU9ci5vYmplY3RGbGFncyY4Mzg4NjEyP1tzXTpyLnN5bWJvbC5kZWNsYXJhdGlvbnM7ej0oaC5vYmplY3RGbGFncyY4Mzg4NjEyfHxoLnN5bWJvbC5mbGFncyY4MTkyfHxoLnN5bWJvbC5mbGFncyYyMDQ4KSYmIWguYWxpYXNUeXBlQXJndW1lbnRzP2UuZmlsdGVyKHosZnVuY3Rpb24oJGkpe3JldHVybiBlLnNvbWUoJGUsZnVuY3Rpb24oWmkpe3JldHVybiBQaCgkaSxaaSl9KX0pOnosdS5vdXRlclR5cGVQYXJhbWV0ZXJzPXp9aWYoei5sZW5ndGgpe3ZhciB0cj1ucChyLm1hcHBlcixpKSxkcj1lLm1hcCh6LGZ1bmN0aW9uKCRpKXtyZXR1cm4gYXAoJGksdHIpfSksRHI9dHx8ci5hbGlhc1N5bWJvbCxRcj10P286ZV8oci5hbGlhc1R5cGVBcmd1bWVudHMsaSksbGk9U3UoZHIpK2hnKERyLFFyKTtoLmluc3RhbnRpYXRpb25zfHwoaC5pbnN0YW50aWF0aW9ucz1uZXcgZS5NYXAsaC5pbnN0YW50aWF0aW9ucy5zZXQoU3UoeikraGcoaC5hbGlhc1N5bWJvbCxoLmFsaWFzVHlwZUFyZ3VtZW50cyksaCkpO3ZhciBUaT1oLmluc3RhbnRpYXRpb25zLmdldChsaSk7aWYoIVRpKXt2YXIgQ2k9VWMoeixkcik7VGk9aC5vYmplY3RGbGFncyY0P3REKHIudGFyZ2V0LHIubm9kZSxDaSxEcixRcik6aC5vYmplY3RGbGFncyYzMj9jRShoLENpLERyLFFyKTpQRChoLENpLERyLFFyKSxoLmluc3RhbnRpYXRpb25zLnNldChsaSxUaSl9cmV0dXJuIFRpfXJldHVybiByfWZ1bmN0aW9uIGpJKHIpe3JldHVybiEoci5wYXJlbnQua2luZD09PTE3OCYmci5wYXJlbnQudHlwZUFyZ3VtZW50cyYmcj09PXIucGFyZW50LnR5cGVOYW1lfHxyLnBhcmVudC5raW5kPT09MjAwJiZyLnBhcmVudC50eXBlQXJndW1lbnRzJiZyPT09ci5wYXJlbnQucXVhbGlmaWVyKX1mdW5jdGlvbiBQaChyLGkpe2lmKHIuc3ltYm9sJiZyLnN5bWJvbC5kZWNsYXJhdGlvbnMmJnIuc3ltYm9sLmRlY2xhcmF0aW9ucy5sZW5ndGg9PT0xKXtmb3IodmFyIHQ9ci5zeW1ib2wuZGVjbGFyYXRpb25zWzBdLnBhcmVudCxvPWk7byE9PXQ7bz1vLnBhcmVudClpZighb3x8by5raW5kPT09MjM1fHxvLmtpbmQ9PT0xODkmJmUuZm9yRWFjaENoaWxkKG8uZXh0ZW5kc1R5cGUscykpcmV0dXJuITA7cmV0dXJuIHMoaSl9cmV0dXJuITA7ZnVuY3Rpb24gcyh1KXtzd2l0Y2godS5raW5kKXtjYXNlIDE5MjpyZXR1cm4hIXIuaXNUaGlzVHlwZTtjYXNlIDc5OnJldHVybiFyLmlzVGhpc1R5cGUmJmUuaXNQYXJ0T2ZUeXBlTm9kZSh1KSYmakkodSkmJm5FKHUpPT09cjtjYXNlIDE4MTpyZXR1cm4hMDtjYXNlIDE2OTpjYXNlIDE2ODpyZXR1cm4hdS50eXBlJiYhIXUuYm9keXx8ZS5zb21lKHUudHlwZVBhcmFtZXRlcnMscyl8fGUuc29tZSh1LnBhcmFtZXRlcnMscyl8fCEhdS50eXBlJiZzKHUudHlwZSl9cmV0dXJuISFlLmZvckVhY2hDaGlsZCh1LHMpfX1mdW5jdGlvbiBJaChyKXt2YXIgaT1NdShyKTtpZihpLmZsYWdzJjQxOTQzMDQpe3ZhciB0PXJwKGkudHlwZSk7aWYodC5mbGFncyYyNjIxNDQpcmV0dXJuIHR9fWZ1bmN0aW9uIGNFKHIsaSx0LG8pe3ZhciBzPUloKHIpO2lmKHMpe3ZhciB1PXVuKHMsaSk7aWYocyE9PXUpcmV0dXJuIHVDKGJ1KHUpLGZ1bmN0aW9uKGgpe2lmKGguZmxhZ3MmNjE2MDM4NDMmJmghPT1NciYmIW5uKGgpKXtpZighci5kZWNsYXJhdGlvbi5uYW1lVHlwZSl7dmFyIHo9dm9pZCAwO2lmKFR1KGgpfHxoLmZsYWdzJjEmJnYocyw0KTwwJiYoej1UYyhzKSkmJmdmKHosUGQpKXJldHVybiB6SShoLHIsJGQocyxoLGkpKTtpZihsbShoKSlyZXR1cm4gVUkoaCxyLHMsaSk7aWYoWW4oaCkpcmV0dXJuIFdJKGgsciwkZChzLGgsaSkpfXJldHVybiBQRChyLCRkKHMsaCxpKSl9cmV0dXJuIGh9LHQsbyl9cmV0dXJuIHVuKE11KHIpLGkpPT09TXI/TXI6UEQocixpLHQsbyl9ZnVuY3Rpb24gTkQocixpKXtyZXR1cm4gaSYxPyEwOmkmMj8hMTpyfWZ1bmN0aW9uIFVJKHIsaSx0LG8pe3ZhciBzPXIudGFyZ2V0LmVsZW1lbnRGbGFncyx1PWUubWFwKHhvKHIpLGZ1bmN0aW9uKHosbWUpe3ZhciBNZT1zW21lXSY4P3o6c1ttZV0mND9acyh6KTpXbChbel0sW3NbbWVdXSk7cmV0dXJuIGNFKGksJGQodCxNZSxvKSl9KSxoPU5EKHIudGFyZ2V0LnJlYWRvbmx5LEx1KGkpKTtyZXR1cm4gV2wodSxlLm1hcCh1LGZ1bmN0aW9uKHope3JldHVybiA4fSksaCl9ZnVuY3Rpb24gekkocixpLHQpe3ZhciBvPXVFKGksbnQsITAsdCk7cmV0dXJuIG5uKG8pP1BlOlpzKG8sTkQodW0ociksTHUoaSkpKX1mdW5jdGlvbiBXSShyLGksdCl7dmFyIG89ci50YXJnZXQuZWxlbWVudEZsYWdzLHM9ZS5tYXAoeG8ociksZnVuY3Rpb24obWUsTWUpe3JldHVybiB1RShpLEJ1KFwiXCIrTWUpLCEhKG9bTWVdJjIpLHQpfSksdT1MdShpKSxoPXUmND9lLm1hcChvLGZ1bmN0aW9uKG1lKXtyZXR1cm4gbWUmMT8yOm1lfSk6dSY4P2UubWFwKG8sZnVuY3Rpb24obWUpe3JldHVybiBtZSYyPzE6bWV9KTpvLHo9TkQoci50YXJnZXQucmVhZG9ubHksdSk7cmV0dXJuIGUuY29udGFpbnMocyxQZSk/UGU6V2wocyxoLHosci50YXJnZXQubGFiZWxlZEVsZW1lbnREZWNsYXJhdGlvbnMpfWZ1bmN0aW9uIHVFKHIsaSx0LG8pe3ZhciBzPXR2KG8sRHUociksaSksdT11bih2bChyLnRhcmdldHx8cikscyksaD1MdShyKTtyZXR1cm4gWWUmJmgmNCYmIWZzKHUsNDkxNTIpP2lfKHUsITApOlllJiZoJjgmJnQ/S3ModSw1MjQyODgpOnV9ZnVuY3Rpb24gUEQocixpLHQsbyl7dmFyIHM9dHUoci5vYmplY3RGbGFnc3w2NCxyLnN5bWJvbCk7aWYoci5vYmplY3RGbGFncyYzMil7cy5kZWNsYXJhdGlvbj1yLmRlY2xhcmF0aW9uO3ZhciB1PUR1KHIpLGg9a0QodSk7cy50eXBlUGFyYW1ldGVyPWgsaT1ucChZZCh1LGgpLGkpLGgubWFwcGVyPWl9cmV0dXJuIHIub2JqZWN0RmxhZ3MmODM4ODYwOCYmKHMubm9kZT1yLm5vZGUpLHMudGFyZ2V0PXIscy5tYXBwZXI9aSxzLmFsaWFzU3ltYm9sPXR8fHIuYWxpYXNTeW1ib2wscy5hbGlhc1R5cGVBcmd1bWVudHM9dD9vOmVfKHIuYWxpYXNUeXBlQXJndW1lbnRzLGkpLHN9ZnVuY3Rpb24gSUQocixpLHQsbyl7dmFyIHM9ci5yb290O2lmKHMub3V0ZXJUeXBlUGFyYW1ldGVycyl7dmFyIHU9ZS5tYXAocy5vdXRlclR5cGVQYXJhbWV0ZXJzLGZ1bmN0aW9uKHRyKXtyZXR1cm4gYXAodHIsaSl9KSxoPVN1KHUpK2hnKHQsbyksej1zLmluc3RhbnRpYXRpb25zLmdldChoKTtpZigheil7dmFyIG1lPVVjKHMub3V0ZXJUeXBlUGFyYW1ldGVycyx1KSxNZT1zLmNoZWNrVHlwZSwkZT1zLmlzRGlzdHJpYnV0aXZlP2FwKE1lLG1lKTp2b2lkIDA7ej0kZSYmTWUhPT0kZSYmJGUuZmxhZ3MmMTE3OTY0OD91QyhidSgkZSksZnVuY3Rpb24odHIpe3JldHVybiBERChzLCRkKE1lLHRyLG1lKSl9LHQsbyk6REQocyxtZSx0LG8pLHMuaW5zdGFudGlhdGlvbnMuc2V0KGgseil9cmV0dXJuIHp9cmV0dXJuIHJ9ZnVuY3Rpb24gdW4ocixpKXtyZXR1cm4gciYmaT9sRShyLGksdm9pZCAwLHZvaWQgMCk6cn1mdW5jdGlvbiBsRShyLGksdCxvKXtpZighSWQocikpcmV0dXJuIHI7aWYoSGU9PT0xMDB8fEVlPj01ZTYpcmV0dXJuIGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLmluc3RhbnQoXCJjaGVja1R5cGVzXCIsXCJpbnN0YW50aWF0ZVR5cGVfRGVwdGhMaW1pdFwiLHt0eXBlSWQ6ci5pZCxpbnN0YW50aWF0aW9uRGVwdGg6SGUsaW5zdGFudGlhdGlvbkNvdW50OkVlfSksWHIoSWUsZS5EaWFnbm9zdGljcy5UeXBlX2luc3RhbnRpYXRpb25faXNfZXhjZXNzaXZlbHlfZGVlcF9hbmRfcG9zc2libHlfaW5maW5pdGUpLFBlO3plKyssRWUrKyxIZSsrO3ZhciBzPXFJKHIsaSx0LG8pO3JldHVybiBIZS0tLHN9ZnVuY3Rpb24gcUkocixpLHQsbyl7dmFyIHM9ci5mbGFncztpZihzJjI2MjE0NClyZXR1cm4gYXAocixpKTtpZihzJjUyNDI4OCl7dmFyIHU9ci5vYmplY3RGbGFncztpZih1JjUyKXtpZih1JjQmJiFyLm5vZGUpe3ZhciBoPXIucmVzb2x2ZWRUeXBlQXJndW1lbnRzLHo9ZV8oaCxpKTtyZXR1cm4geiE9PWg/dUQoci50YXJnZXQseik6cn1yZXR1cm4gdSYxMDI0P1ZJKHIsaSk6SkkocixpLHQsbyl9cmV0dXJuIHJ9aWYocyYzMTQ1NzI4KXt2YXIgbWU9ci5mbGFncyYxMDQ4NTc2P3Iub3JpZ2luOnZvaWQgMCxNZT1tZSYmbWUuZmxhZ3MmMzE0NTcyOD9tZS50eXBlczpyLnR5cGVzLCRlPWVfKE1lLGkpO2lmKCRlPT09TWUmJnQ9PT1yLmFsaWFzU3ltYm9sKXJldHVybiByO3ZhciB0cj10fHxyLmFsaWFzU3ltYm9sLGRyPXQ/bzplXyhyLmFsaWFzVHlwZUFyZ3VtZW50cyxpKTtyZXR1cm4gcyYyMDk3MTUyfHxtZSYmbWUuZmxhZ3MmMjA5NzE1Mj9EbygkZSx0cixkcik6UGEoJGUsMSx0cixkcil9aWYocyY0MTk0MzA0KXJldHVybiBxbCh1bihyLnR5cGUsaSkpO2lmKHMmMTM0MjE3NzI4KXJldHVybiBEZyhyLnRleHRzLGVfKHIudHlwZXMsaSkpO2lmKHMmMjY4NDM1NDU2KXJldHVybiBUaChyLnN5bWJvbCx1bihyLnR5cGUsaSkpO2lmKHMmODM4ODYwOCl7dmFyIHRyPXR8fHIuYWxpYXNTeW1ib2wsZHI9dD9vOmVfKHIuYWxpYXNUeXBlQXJndW1lbnRzLGkpO3JldHVybiBKYyh1bihyLm9iamVjdFR5cGUsaSksdW4oci5pbmRleFR5cGUsaSksci5hY2Nlc3NGbGFncyx2b2lkIDAsdHIsZHIpfWlmKHMmMTY3NzcyMTYpcmV0dXJuIElEKHIsbnAoci5tYXBwZXIsaSksdCxvKTtpZihzJjMzNTU0NDMyKXt2YXIgRHI9dW4oci5iYXNlVHlwZSxpKTtpZihEci5mbGFncyY4NjUwNzUyKXJldHVybiBweChEcix1bihyLnN1YnN0aXR1dGUsaSkpO3ZhciBRcj11bihyLnN1YnN0aXR1dGUsaSk7cmV0dXJuIFFyLmZsYWdzJjN8fGFvKE5kKERyKSxOZChRcikpP0RyOlFyfXJldHVybiByfWZ1bmN0aW9uIFZJKHIsaSl7dmFyIHQ9dW4oci5tYXBwZWRUeXBlLGkpO2lmKCEoZS5nZXRPYmplY3RGbGFncyh0KSYzMikpcmV0dXJuIHI7dmFyIG89dW4oci5jb25zdHJhaW50VHlwZSxpKTtpZighKG8uZmxhZ3MmNDE5NDMwNCkpcmV0dXJuIHI7dmFyIHM9VUUodW4oci5zb3VyY2UsaSksdCxvKTtyZXR1cm4gc3x8cn1mdW5jdGlvbiBLSShyKXtyZXR1cm4gci5mbGFncyYyNjIxNDM/cjpyLnVuaXF1ZUxpdGVyYWxGaWxsZWRJbnN0YW50aWF0aW9ufHwoci51bmlxdWVMaXRlcmFsRmlsbGVkSW5zdGFudGlhdGlvbj11bihyLGthKSl9ZnVuY3Rpb24gd2gocil7cmV0dXJuIHIuZmxhZ3MmMjYyMTQzP3I6ci5wZXJtaXNzaXZlSW5zdGFudGlhdGlvbnx8KHIucGVybWlzc2l2ZUluc3RhbnRpYXRpb249dW4ocixhaSkpfWZ1bmN0aW9uIE5kKHIpe3JldHVybiByLmZsYWdzJjI2MjE0Mz9yOihyLnJlc3RyaWN0aXZlSW5zdGFudGlhdGlvbnx8KHIucmVzdHJpY3RpdmVJbnN0YW50aWF0aW9uPXVuKHIsUWEpLHIucmVzdHJpY3RpdmVJbnN0YW50aWF0aW9uLnJlc3RyaWN0aXZlSW5zdGFudGlhdGlvbj1yLnJlc3RyaWN0aXZlSW5zdGFudGlhdGlvbiksci5yZXN0cmljdGl2ZUluc3RhbnRpYXRpb24pfWZ1bmN0aW9uIEdJKHIsaSl7cmV0dXJuIHpsKHIua2V5VHlwZSx1bihyLnR5cGUsaSksci5pc1JlYWRvbmx5LHIuZGVjbGFyYXRpb24pfWZ1bmN0aW9uIEp1KHIpe3N3aXRjaChlLkRlYnVnLmFzc2VydChyLmtpbmQhPT0xNjl8fGUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKHIpKSxyLmtpbmQpe2Nhc2UgMjEzOmNhc2UgMjE0OmNhc2UgMTY5OmNhc2UgMjU2OnJldHVybiBmRShyKTtjYXNlIDIwNTpyZXR1cm4gZS5zb21lKHIucHJvcGVydGllcyxKdSk7Y2FzZSAyMDQ6cmV0dXJuIGUuc29tZShyLmVsZW1lbnRzLEp1KTtjYXNlIDIyMjpyZXR1cm4gSnUoci53aGVuVHJ1ZSl8fEp1KHIud2hlbkZhbHNlKTtjYXNlIDIyMTpyZXR1cm4oci5vcGVyYXRvclRva2VuLmtpbmQ9PT01Nnx8ci5vcGVyYXRvclRva2VuLmtpbmQ9PT02MCkmJihKdShyLmxlZnQpfHxKdShyLnJpZ2h0KSk7Y2FzZSAyOTY6cmV0dXJuIEp1KHIuaW5pdGlhbGl6ZXIpO2Nhc2UgMjEyOnJldHVybiBKdShyLmV4cHJlc3Npb24pO2Nhc2UgMjg2OnJldHVybiBlLnNvbWUoci5wcm9wZXJ0aWVzLEp1KXx8ZS5pc0pzeE9wZW5pbmdFbGVtZW50KHIucGFyZW50KSYmZS5zb21lKHIucGFyZW50LnBhcmVudC5jaGlsZHJlbixKdSk7Y2FzZSAyODU6e3ZhciBpPXIuaW5pdGlhbGl6ZXI7cmV0dXJuISFpJiZKdShpKX1jYXNlIDI4ODp7dmFyIHQ9ci5leHByZXNzaW9uO3JldHVybiEhdCYmSnUodCl9fXJldHVybiExfWZ1bmN0aW9uIGZFKHIpe3JldHVybighZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24ocil8fGUuaXNJbkpTRmlsZShyKSYmISFLXyhyKSkmJihlLmhhc0NvbnRleHRTZW5zaXRpdmVQYXJhbWV0ZXJzKHIpfHxISShyKSl9ZnVuY3Rpb24gSEkocil7cmV0dXJuIXIudHlwZVBhcmFtZXRlcnMmJiFlLmdldEVmZmVjdGl2ZVJldHVyblR5cGVOb2RlKHIpJiYhIXIuYm9keSYmci5ib2R5LmtpbmQhPT0yMzUmJkp1KHIuYm9keSl9ZnVuY3Rpb24gd0Qocil7cmV0dXJuKGUuaXNJbkpTRmlsZShyKSYmZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24ocil8fGUuaXNGdW5jdGlvbkV4cHJlc3Npb25PckFycm93RnVuY3Rpb24ocil8fGUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKHIpKSYmZkUocil9ZnVuY3Rpb24gX0Uocil7aWYoci5mbGFncyY1MjQyODgpe3ZhciBpPVJ1KHIpO2lmKGkuY29uc3RydWN0U2lnbmF0dXJlcy5sZW5ndGh8fGkuY2FsbFNpZ25hdHVyZXMubGVuZ3RoKXt2YXIgdD10dSgxNixyLnN5bWJvbCk7cmV0dXJuIHQubWVtYmVycz1pLm1lbWJlcnMsdC5wcm9wZXJ0aWVzPWkucHJvcGVydGllcyx0LmNhbGxTaWduYXR1cmVzPWUuZW1wdHlBcnJheSx0LmNvbnN0cnVjdFNpZ25hdHVyZXM9ZS5lbXB0eUFycmF5LHQuaW5kZXhJbmZvcz1lLmVtcHR5QXJyYXksdH19ZWxzZSBpZihyLmZsYWdzJjIwOTcxNTIpcmV0dXJuIERvKGUubWFwKHIudHlwZXMsX0UpKTtyZXR1cm4gcn1mdW5jdGlvbiB3ZihyLGkpe3JldHVybiByXyhyLGksd2EpfWZ1bmN0aW9uIGF2KHIsaSl7cmV0dXJuIHJfKHIsaSx3YSk/LTE6MH1mdW5jdGlvbiBPRChyLGkpe3JldHVybiByXyhyLGksZHQpPy0xOjB9ZnVuY3Rpb24gWEkocixpKXtyZXR1cm4gcl8ocixpLE9yKT8tMTowfWZ1bmN0aW9uIEVfKHIsaSl7cmV0dXJuIHJfKHIsaSxPcil9ZnVuY3Rpb24gYW8ocixpKXtyZXR1cm4gcl8ocixpLGR0KX1mdW5jdGlvbiB4ZyhyLGkpe3JldHVybiByLmZsYWdzJjEwNDg1NzY/ZS5ldmVyeShyLnR5cGVzLGZ1bmN0aW9uKHQpe3JldHVybiB4Zyh0LGkpfSk6aS5mbGFncyYxMDQ4NTc2P2Uuc29tZShpLnR5cGVzLGZ1bmN0aW9uKHQpe3JldHVybiB4ZyhyLHQpfSk6ci5mbGFncyY1ODk4MjQwMD94Zyh1YyhyKXx8Z3IsaSk6aT09PXFlPyEhKHIuZmxhZ3MmNjc2MzMxNTIpOmk9PT1icj8hIShyLmZsYWdzJjUyNDI4OCkmJmRiKHIpOmxmKHIsYmQoaSkpfHxUdShpKSYmIXVtKGkpJiZ4ZyhyLFFpKX1mdW5jdGlvbiBjbShyLGkpe3JldHVybiByXyhyLGksbGEpfWZ1bmN0aW9uIE9oKHIsaSl7cmV0dXJuIGNtKHIsaSl8fGNtKGkscil9ZnVuY3Rpb24gemMocixpLHQsbyxzLHUpe3JldHVybiBobChyLGksZHQsdCxvLHMsdSl9ZnVuY3Rpb24gb3AocixpLHQsbyxzLHUpe3JldHVybiBGRChyLGksZHQsdCxvLHMsdSx2b2lkIDApfWZ1bmN0aW9uIEZEKHIsaSx0LG8scyx1LGgseil7cmV0dXJuIHJfKHIsaSx0KT8hMDohb3x8IWN5KHMscixpLHQsdSxoLHopP2hsKHIsaSx0LG8sdSxoLHopOiExfWZ1bmN0aW9uIHBFKHIpe3JldHVybiEhKHIuZmxhZ3MmMTY3NzcyMTZ8fHIuZmxhZ3MmMjA5NzE1MiYmZS5zb21lKHIudHlwZXMscEUpKX1mdW5jdGlvbiBjeShyLGksdCxvLHMsdSxoKXtpZighcnx8cEUodCkpcmV0dXJuITE7aWYoIWhsKGksdCxvLHZvaWQgMCkmJlFJKHIsaSx0LG8scyx1LGgpKXJldHVybiEwO3N3aXRjaChyLmtpbmQpe2Nhc2UgMjg4OmNhc2UgMjEyOnJldHVybiBjeShyLmV4cHJlc3Npb24saSx0LG8scyx1LGgpO2Nhc2UgMjIxOnN3aXRjaChyLm9wZXJhdG9yVG9rZW4ua2luZCl7Y2FzZSA2MzpjYXNlIDI3OnJldHVybiBjeShyLnJpZ2h0LGksdCxvLHMsdSxoKX1icmVhaztjYXNlIDIwNTpyZXR1cm4gbncocixpLHQsbyx1LGgpO2Nhc2UgMjA0OnJldHVybiB0dyhyLGksdCxvLHUsaCk7Y2FzZSAyODY6cmV0dXJuIGl3KHIsaSx0LG8sdSxoKTtjYXNlIDIxNDpyZXR1cm4gWUkocixpLHQsbyx1LGgpfXJldHVybiExfWZ1bmN0aW9uIFFJKHIsaSx0LG8scyx1LGgpe2Zvcih2YXIgej1vdChpLDApLG1lPW90KGksMSksTWU9MCwkZT1bbWUsel07TWU8JGUubGVuZ3RoO01lKyspe3ZhciB0cj0kZVtNZV07aWYoZS5zb21lKHRyLGZ1bmN0aW9uKFFyKXt2YXIgbGk9eW8oUXIpO3JldHVybiEobGkuZmxhZ3MmMTMxMDczKSYmaGwobGksdCxvLHZvaWQgMCl9KSl7dmFyIGRyPWh8fHt9O3pjKGksdCxyLHMsdSxkcik7dmFyIERyPWRyLmVycm9yc1tkci5lcnJvcnMubGVuZ3RoLTFdO3JldHVybiBlLmFkZFJlbGF0ZWRJbmZvKERyLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUocix0cj09PW1lP2UuRGlhZ25vc3RpY3MuRGlkX3lvdV9tZWFuX3RvX3VzZV9uZXdfd2l0aF90aGlzX2V4cHJlc3Npb246ZS5EaWFnbm9zdGljcy5EaWRfeW91X21lYW5fdG9fY2FsbF90aGlzX2V4cHJlc3Npb24pKSwhMH19cmV0dXJuITF9ZnVuY3Rpb24gWUkocixpLHQsbyxzLHUpe2lmKGUuaXNCbG9jayhyLmJvZHkpfHxlLnNvbWUoci5wYXJhbWV0ZXJzLGUuaGFzVHlwZSkpcmV0dXJuITE7dmFyIGg9aWcoaSk7aWYoIWgpcmV0dXJuITE7dmFyIHo9b3QodCwwKTtpZighZS5sZW5ndGgoeikpcmV0dXJuITE7dmFyIG1lPXIuYm9keSxNZT15byhoKSwkZT1QYShlLm1hcCh6LHlvKSk7aWYoIWhsKE1lLCRlLG8sdm9pZCAwKSl7dmFyIHRyPW1lJiZjeShtZSxNZSwkZSxvLHZvaWQgMCxzLHUpO2lmKHRyKXJldHVybiB0cjt2YXIgZHI9dXx8e307aWYoaGwoTWUsJGUsbyxtZSx2b2lkIDAscyxkciksZHIuZXJyb3JzKXJldHVybiB0LnN5bWJvbCYmZS5sZW5ndGgodC5zeW1ib2wuZGVjbGFyYXRpb25zKSYmZS5hZGRSZWxhdGVkSW5mbyhkci5lcnJvcnNbZHIuZXJyb3JzLmxlbmd0aC0xXSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHQuc3ltYm9sLmRlY2xhcmF0aW9uc1swXSxlLkRpYWdub3N0aWNzLlRoZV9leHBlY3RlZF90eXBlX2NvbWVzX2Zyb21fdGhlX3JldHVybl90eXBlX29mX3RoaXNfc2lnbmF0dXJlKSksKGUuZ2V0RnVuY3Rpb25GbGFncyhyKSYyKT09PTAmJiFkYShNZSxcInRoZW5cIikmJmhsKE55KE1lKSwkZSxvLHZvaWQgMCkmJmUuYWRkUmVsYXRlZEluZm8oZHIuZXJyb3JzW2RyLmVycm9ycy5sZW5ndGgtMV0sZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLGUuRGlhZ25vc3RpY3MuRGlkX3lvdV9tZWFuX3RvX21hcmtfdGhpc19mdW5jdGlvbl9hc19hc3luYykpLCEwfXJldHVybiExfWZ1bmN0aW9uICRJKHIsaSx0KXt2YXIgbz1lcChpLHQpO2lmKG8pcmV0dXJuIG87aWYoaS5mbGFncyYxMDQ4NTc2KXt2YXIgcz1iRShyLGkpO2lmKHMpcmV0dXJuIGVwKHMsdCl9fWZ1bmN0aW9uIFpJKHIsaSl7ci5jb250ZXh0dWFsVHlwZT1pO3RyeXtyZXR1cm4gRG0ociwxLGkpfWZpbmFsbHl7ci5jb250ZXh0dWFsVHlwZT12b2lkIDB9fWZ1bmN0aW9uIG52KHIsaSx0LG8scyx1KXtmb3IodmFyIGg9ITEsej1yLm5leHQoKTshei5kb25lO3o9ci5uZXh0KCkpe3ZhciBtZT16LnZhbHVlLE1lPW1lLmVycm9yTm9kZSwkZT1tZS5pbm5lckV4cHJlc3Npb24sdHI9bWUubmFtZVR5cGUsZHI9bWUuZXJyb3JNZXNzYWdlLERyPSRJKGksdCx0cik7aWYoISghRHJ8fERyLmZsYWdzJjgzODg2MDgpKXt2YXIgUXI9ZXAoaSx0cik7aWYoISFRcil7dmFyIGxpPWdEKHRyLHZvaWQgMCk7aWYoIWhsKFFyLERyLG8sdm9pZCAwKSl7dmFyIFRpPSRlJiZjeSgkZSxRcixEcixvLHZvaWQgMCxzLHUpO2lmKGg9ITAsIVRpKXt2YXIgQ2k9dXx8e30sJGk9JGU/WkkoJGUsUXIpOlFyO2lmKHlyJiZqRCgkaSxEcikpe3ZhciBaaT1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKE1lLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV93aXRoX2V4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzX0NvbG9uX3RydWVfQ29uc2lkZXJfYWRkaW5nX3VuZGVmaW5lZF90b190aGVfdHlwZV9vZl90aGVfdGFyZ2V0LE90KCRpKSxPdChEcikpO3JuLmFkZChaaSksQ2kuZXJyb3JzPVtaaV19ZWxzZXt2YXIgcXQ9ISEobGkmJihiaSh0LGxpKXx8eGUpLmZsYWdzJjE2Nzc3MjE2KSxOdD0hIShsaSYmKGJpKGksbGkpfHx4ZSkuZmxhZ3MmMTY3NzcyMTYpO0RyPWtnKERyLHF0KSxRcj1rZyhRcixxdCYmTnQpO3ZhciBSYT1obCgkaSxEcixvLE1lLGRyLHMsQ2kpO1JhJiYkaSE9PVFyJiZobChRcixEcixvLE1lLGRyLHMsQ2kpfWlmKENpLmVycm9ycyl7dmFyIGNhPUNpLmVycm9yc1tDaS5lcnJvcnMubGVuZ3RoLTFdLFNuPV9mKHRyKT9wZih0cik6dm9pZCAwLGphPVNuIT09dm9pZCAwP2JpKHQsU24pOnZvaWQgMCxGbj0hMTtpZighamEpe3ZhciB3bj1udSh0LHRyKTt3biYmd24uZGVjbGFyYXRpb24mJiFlLmdldFNvdXJjZUZpbGVPZk5vZGUod24uZGVjbGFyYXRpb24pLmhhc05vRGVmYXVsdExpYiYmKEZuPSEwLGUuYWRkUmVsYXRlZEluZm8oY2EsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSh3bi5kZWNsYXJhdGlvbixlLkRpYWdub3N0aWNzLlRoZV9leHBlY3RlZF90eXBlX2NvbWVzX2Zyb21fdGhpc19pbmRleF9zaWduYXR1cmUpKSl9aWYoIUZuJiYoamEmJmUubGVuZ3RoKGphLmRlY2xhcmF0aW9ucyl8fHQuc3ltYm9sJiZlLmxlbmd0aCh0LnN5bWJvbC5kZWNsYXJhdGlvbnMpKSl7dmFyIFRuPWphJiZlLmxlbmd0aChqYS5kZWNsYXJhdGlvbnMpP2phLmRlY2xhcmF0aW9uc1swXTp0LnN5bWJvbC5kZWNsYXJhdGlvbnNbMF07ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKFRuKS5oYXNOb0RlZmF1bHRMaWJ8fGUuYWRkUmVsYXRlZEluZm8oY2EsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShUbixlLkRpYWdub3N0aWNzLlRoZV9leHBlY3RlZF90eXBlX2NvbWVzX2Zyb21fcHJvcGVydHlfMF93aGljaF9pc19kZWNsYXJlZF9oZXJlX29uX3R5cGVfMSxTbiYmISh0ci5mbGFncyY4MTkyKT9lLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFNuKTpPdCh0ciksT3QodCkpKX19fX19fX1yZXR1cm4gaH1mdW5jdGlvbiBldyhyKXt2YXIgaSx0LG87cmV0dXJuIGtyKHRoaXMsZnVuY3Rpb24ocyl7c3dpdGNoKHMubGFiZWwpe2Nhc2UgMDppZighZS5sZW5ndGgoci5wcm9wZXJ0aWVzKSlyZXR1cm5bMl07aT0wLHQ9ci5wcm9wZXJ0aWVzLHMubGFiZWw9MTtjYXNlIDE6cmV0dXJuIGk8dC5sZW5ndGg/KG89dFtpXSxlLmlzSnN4U3ByZWFkQXR0cmlidXRlKG8pfHxPYihlLmlkVGV4dChvLm5hbWUpKT9bMywzXTpbNCx7ZXJyb3JOb2RlOm8ubmFtZSxpbm5lckV4cHJlc3Npb246by5pbml0aWFsaXplcixuYW1lVHlwZTpCdShlLmlkVGV4dChvLm5hbWUpKX1dKTpbMyw0XTtjYXNlIDI6cy5zZW50KCkscy5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gaSsrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9ZnVuY3Rpb24gcncocixpKXt2YXIgdCxvLHMsdSxoO3JldHVybiBrcih0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6aWYoIWUubGVuZ3RoKHIuY2hpbGRyZW4pKXJldHVyblsyXTt0PTAsbz0wLHoubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG88ci5jaGlsZHJlbi5sZW5ndGg/KHM9ci5jaGlsZHJlbltvXSx1PUlmKG8tdCksaD1kRShzLHUsaSksaD9bNCxoXTpbMywzXSk6WzMsNV07Y2FzZSAyOnJldHVybiB6LnNlbnQoKSxbMyw0XTtjYXNlIDM6dCsrLHoubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIG8rKyxbMywxXTtjYXNlIDU6cmV0dXJuWzJdfX0pfWZ1bmN0aW9uIGRFKHIsaSx0KXtzd2l0Y2goci5raW5kKXtjYXNlIDI4ODpyZXR1cm57ZXJyb3JOb2RlOnIsaW5uZXJFeHByZXNzaW9uOnIuZXhwcmVzc2lvbixuYW1lVHlwZTppfTtjYXNlIDExOmlmKHIuY29udGFpbnNPbmx5VHJpdmlhV2hpdGVTcGFjZXMpYnJlYWs7cmV0dXJue2Vycm9yTm9kZTpyLGlubmVyRXhwcmVzc2lvbjp2b2lkIDAsbmFtZVR5cGU6aSxlcnJvck1lc3NhZ2U6dCgpfTtjYXNlIDI3ODpjYXNlIDI3OTpjYXNlIDI4MjpyZXR1cm57ZXJyb3JOb2RlOnIsaW5uZXJFeHByZXNzaW9uOnIsbmFtZVR5cGU6aX07ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihyLFwiRm91bmQgaW52YWxpZCBqc3ggY2hpbGRcIil9fWZ1bmN0aW9uIGl3KHIsaSx0LG8scyx1KXt2YXIgaD1udihldyhyKSxpLHQsbyxzLHUpLHo7aWYoZS5pc0pzeE9wZW5pbmdFbGVtZW50KHIucGFyZW50KSYmZS5pc0pzeEVsZW1lbnQoci5wYXJlbnQucGFyZW50KSl7dmFyIG1lPXIucGFyZW50LnBhcmVudCxNZT1fMChPZyhyKSksJGU9TWU9PT12b2lkIDA/XCJjaGlsZHJlblwiOmUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoTWUpLHRyPUJ1KCRlKSxkcj1KYyh0LHRyKSxEcj1lLmdldFNlbWFudGljSnN4Q2hpbGRyZW4obWUuY2hpbGRyZW4pO2lmKCFlLmxlbmd0aChEcikpcmV0dXJuIGg7dmFyIFFyPWUubGVuZ3RoKERyKT4xLGxpPWVjKGRyLEFFKSxUaT1lYyhkcixmdW5jdGlvbihjYSl7cmV0dXJuIUFFKGNhKX0pO2lmKFFyKXtpZihsaSE9PXVpKXt2YXIgQ2k9V2woZjAobWUsMCkpLCRpPXJ3KG1lLFJhKTtoPW52KCRpLENpLGxpLG8scyx1KXx8aH1lbHNlIGlmKCFyXyhKYyhpLHRyKSxkcixvKSl7aD0hMDt2YXIgWmk9WHIobWUub3BlbmluZ0VsZW1lbnQudGFnTmFtZSxlLkRpYWdub3N0aWNzLlRoaXNfSlNYX3RhZ19zXzBfcHJvcF9leHBlY3RzX2Ffc2luZ2xlX2NoaWxkX29mX3R5cGVfMV9idXRfbXVsdGlwbGVfY2hpbGRyZW5fd2VyZV9wcm92aWRlZCwkZSxPdChkcikpO3UmJnUuc2tpcExvZ2dpbmcmJih1LmVycm9yc3x8KHUuZXJyb3JzPVtdKSkucHVzaChaaSl9fWVsc2UgaWYoVGkhPT11aSl7dmFyIHF0PURyWzBdLE50PWRFKHF0LHRyLFJhKTtOdCYmKGg9bnYoZnVuY3Rpb24oKXtyZXR1cm4ga3IodGhpcyxmdW5jdGlvbihjYSl7c3dpdGNoKGNhLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsTnRdO2Nhc2UgMTpyZXR1cm4gY2Euc2VudCgpLFsyXX19KX0oKSxpLHQsbyxzLHUpfHxoKX1lbHNlIGlmKCFyXyhKYyhpLHRyKSxkcixvKSl7aD0hMDt2YXIgWmk9WHIobWUub3BlbmluZ0VsZW1lbnQudGFnTmFtZSxlLkRpYWdub3N0aWNzLlRoaXNfSlNYX3RhZ19zXzBfcHJvcF9leHBlY3RzX3R5cGVfMV93aGljaF9yZXF1aXJlc19tdWx0aXBsZV9jaGlsZHJlbl9idXRfb25seV9hX3NpbmdsZV9jaGlsZF93YXNfcHJvdmlkZWQsJGUsT3QoZHIpKTt1JiZ1LnNraXBMb2dnaW5nJiYodS5lcnJvcnN8fCh1LmVycm9ycz1bXSkpLnB1c2goWmkpfX1yZXR1cm4gaDtmdW5jdGlvbiBSYSgpe2lmKCF6KXt2YXIgY2E9ZS5nZXRUZXh0T2ZOb2RlKHIucGFyZW50LnRhZ05hbWUpLFNuPV8wKE9nKHIpKSxqYT1Tbj09PXZvaWQgMD9cImNoaWxkcmVuXCI6ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhTbiksRm49SmModCxCdShqYSkpLHduPWUuRGlhZ25vc3RpY3MuXzBfY29tcG9uZW50c19kb25fdF9hY2NlcHRfdGV4dF9hc19jaGlsZF9lbGVtZW50c19UZXh0X2luX0pTWF9oYXNfdGhlX3R5cGVfc3RyaW5nX2J1dF90aGVfZXhwZWN0ZWRfdHlwZV9vZl8xX2lzXzI7ej1LZShLZSh7fSx3bikse2tleTpcIiEhQUxSRUFEWSBGT1JNQVRURUQhIVwiLG1lc3NhZ2U6ZS5mb3JtYXRNZXNzYWdlKHZvaWQgMCx3bixjYSxqYSxPdChGbikpfSl9cmV0dXJuIHp9fWZ1bmN0aW9uIGdFKHIsaSl7dmFyIHQsbyxzLHU7cmV0dXJuIGtyKHRoaXMsZnVuY3Rpb24oaCl7c3dpdGNoKGgubGFiZWwpe2Nhc2UgMDppZih0PWUubGVuZ3RoKHIuZWxlbWVudHMpLCF0KXJldHVyblsyXTtvPTAsaC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gbzx0P0VnKGkpJiYhYmkoaSxcIlwiK28pP1szLDNdOihzPXIuZWxlbWVudHNbb10sZS5pc09taXR0ZWRFeHByZXNzaW9uKHMpP1szLDNdOih1PUlmKG8pLFs0LHtlcnJvck5vZGU6cyxpbm5lckV4cHJlc3Npb246cyxuYW1lVHlwZTp1fV0pKTpbMyw0XTtjYXNlIDI6aC5zZW50KCksaC5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gbysrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9ZnVuY3Rpb24gdHcocixpLHQsbyxzLHUpe2lmKHQuZmxhZ3MmMTMxMDY4KXJldHVybiExO2lmKEVnKGkpKXJldHVybiBudihnRShyLHQpLGksdCxvLHMsdSk7dmFyIGg9ci5jb250ZXh0dWFsVHlwZTtyLmNvbnRleHR1YWxUeXBlPXQ7dHJ5e3ZhciB6PVBDKHIsMSwhMCk7cmV0dXJuIHIuY29udGV4dHVhbFR5cGU9aCxFZyh6KT9udihnRShyLHQpLHosdCxvLHMsdSk6ITF9ZmluYWxseXtyLmNvbnRleHR1YWxUeXBlPWh9fWZ1bmN0aW9uIGF3KHIpe3ZhciBpLHQsbyxzLHU7cmV0dXJuIGtyKHRoaXMsZnVuY3Rpb24oaCl7c3dpdGNoKGgubGFiZWwpe2Nhc2UgMDppZighZS5sZW5ndGgoci5wcm9wZXJ0aWVzKSlyZXR1cm5bMl07aT0wLHQ9ci5wcm9wZXJ0aWVzLGgubGFiZWw9MTtjYXNlIDE6aWYoIShpPHQubGVuZ3RoKSlyZXR1cm5bMyw4XTtpZihvPXRbaV0sZS5pc1NwcmVhZEFzc2lnbm1lbnQobykpcmV0dXJuWzMsN107aWYocz1vbShFdChvKSw4NTc2KSwhc3x8cy5mbGFncyYxMzEwNzIpcmV0dXJuWzMsN107c3dpdGNoKHU9by5raW5kLHUpe2Nhc2UgMTczOnJldHVyblszLDJdO2Nhc2UgMTcyOnJldHVyblszLDJdO2Nhc2UgMTY5OnJldHVyblszLDJdO2Nhc2UgMjk3OnJldHVyblszLDJdO2Nhc2UgMjk2OnJldHVyblszLDRdfXJldHVyblszLDZdO2Nhc2UgMjpyZXR1cm5bNCx7ZXJyb3JOb2RlOm8ubmFtZSxpbm5lckV4cHJlc3Npb246dm9pZCAwLG5hbWVUeXBlOnN9XTtjYXNlIDM6cmV0dXJuIGguc2VudCgpLFszLDddO2Nhc2UgNDpyZXR1cm5bNCx7ZXJyb3JOb2RlOm8ubmFtZSxpbm5lckV4cHJlc3Npb246by5pbml0aWFsaXplcixuYW1lVHlwZTpzLGVycm9yTWVzc2FnZTplLmlzQ29tcHV0ZWROb25MaXRlcmFsTmFtZShvLm5hbWUpP2UuRGlhZ25vc3RpY3MuVHlwZV9vZl9jb21wdXRlZF9wcm9wZXJ0eV9zX3ZhbHVlX2lzXzBfd2hpY2hfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xOnZvaWQgMH1dO2Nhc2UgNTpyZXR1cm4gaC5zZW50KCksWzMsN107Y2FzZSA2OmUuRGVidWcuYXNzZXJ0TmV2ZXIobyksaC5sYWJlbD03O2Nhc2UgNzpyZXR1cm4gaSsrLFszLDFdO2Nhc2UgODpyZXR1cm5bMl19fSl9ZnVuY3Rpb24gbncocixpLHQsbyxzLHUpe3JldHVybiB0LmZsYWdzJjEzMTA2OD8hMTpudihhdyhyKSxpLHQsbyxzLHUpfWZ1bmN0aW9uIG1FKHIsaSx0LG8scyl7cmV0dXJuIGhsKHIsaSxsYSx0LG8scyl9ZnVuY3Rpb24gb3cocixpLHQpe3JldHVybiBNRChyLGksdD80OjAsITEsdm9pZCAwLHZvaWQgMCxPRCx2b2lkIDApIT09MH1mdW5jdGlvbiBzdyhyKXtyZXR1cm4hci50eXBlUGFyYW1ldGVycyYmKCFyLnRoaXNQYXJhbWV0ZXJ8fHRhKG12KHIudGhpc1BhcmFtZXRlcikpKSYmci5wYXJhbWV0ZXJzLmxlbmd0aD09PTEmJkgocikmJihtdihyLnBhcmFtZXRlcnNbMF0pPT09bW98fHRhKG12KHIucGFyYW1ldGVyc1swXSkpKSYmdGEoeW8ocikpfWZ1bmN0aW9uIE1EKHIsaSx0LG8scyx1LGgseil7aWYocj09PWl8fHN3KGkpKXJldHVybi0xO3ZhciBtZT1XYyhpKSxNZT0hWGwoaSkmJih0Jjg/WGwocil8fFdjKHIpPm1lOkhsKHIpPm1lKTtpZihNZSlyZXR1cm4gMDtyLnR5cGVQYXJhbWV0ZXJzJiZyLnR5cGVQYXJhbWV0ZXJzIT09aS50eXBlUGFyYW1ldGVycyYmKGk9ZzMoaSkscj1zayhyLGksdm9pZCAwLGgpKTt2YXIgJGU9V2MociksdHI9eXYociksZHI9eXYoaSk7KHRyfHxkcikmJnVuKHRyfHxkcix6KTt2YXIgRHI9aS5kZWNsYXJhdGlvbj9pLmRlY2xhcmF0aW9uLmtpbmQ6MCxRcj0hKHQmMykmJkJyJiZEciE9PTE2OSYmRHIhPT0xNjgmJkRyIT09MTcxLGxpPS0xLFRpPVRfKHIpO2lmKFRpJiZUaSE9PUZpKXt2YXIgQ2k9VF8oaSk7aWYoQ2kpe3ZhciAkaT0hUXImJmgoVGksQ2ksITEpfHxoKENpLFRpLG8pO2lmKCEkaSlyZXR1cm4gbyYmcyhlLkRpYWdub3N0aWNzLlRoZV90aGlzX3R5cGVzX29mX2VhY2hfc2lnbmF0dXJlX2FyZV9pbmNvbXBhdGlibGUpLDA7bGkmPSRpfX1mb3IodmFyIFppPXRyfHxkcj9NYXRoLm1pbigkZSxtZSk6TWF0aC5tYXgoJGUsbWUpLHF0PXRyfHxkcj9aaS0xOi0xLE50PTA7TnQ8Wmk7TnQrKyl7dmFyIFJhPU50PT09cXQ/eW0ocixOdCk6TGQocixOdCksY2E9TnQ9PT1xdD95bShpLE50KTpMZChpLE50KTtpZihSYSYmY2Epe3ZhciBTbj10JjM/dm9pZCAwOmlnKENfKFJhKSksamE9dCYzP3ZvaWQgMDppZyhDXyhjYSkpLEZuPVNuJiZqYSYmIVljKFNuKSYmIVljKGphKSYmKGp1KFJhKSY5ODMwNCk9PT0oanUoY2EpJjk4MzA0KSwkaT1Gbj9NRChqYSxTbix0Jjh8KFFyPzI6MSksbyxzLHUsaCx6KTohKHQmMykmJiFRciYmaChSYSxjYSwhMSl8fGgoY2EsUmEsbyk7aWYoJGkmJnQmOCYmTnQ+PUhsKHIpJiZOdDxIbChpKSYmaChSYSxjYSwhMSkmJigkaT0wKSwhJGkpcmV0dXJuIG8mJnMoZS5EaWFnbm9zdGljcy5UeXBlc19vZl9wYXJhbWV0ZXJzXzBfYW5kXzFfYXJlX2luY29tcGF0aWJsZSxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHZtKHIsTnQpKSxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHZtKGksTnQpKSksMDtsaSY9JGl9fWlmKCEodCY0KSl7dmFyIHduPVoxKGkpP09lOmkuZGVjbGFyYXRpb24mJlNsKGkuZGVjbGFyYXRpb24pP2FhKHNvKGkuZGVjbGFyYXRpb24uc3ltYm9sKSk6eW8oaSk7aWYod249PT1GaXx8d249PT1PZSlyZXR1cm4gbGk7dmFyIFRuPVoxKHIpP09lOnIuZGVjbGFyYXRpb24mJlNsKHIuZGVjbGFyYXRpb24pP2FhKHNvKHIuZGVjbGFyYXRpb24uc3ltYm9sKSk6eW8ociksRW89WWMoaSk7aWYoRW8pe3ZhciBsdD1ZYyhyKTtpZihsdClsaSY9Y3cobHQsRW8sbyxzLGgpO2Vsc2UgaWYoZS5pc0lkZW50aWZpZXJUeXBlUHJlZGljYXRlKEVvKSlyZXR1cm4gbyYmcyhlLkRpYWdub3N0aWNzLlNpZ25hdHVyZV8wX211c3RfYmVfYV90eXBlX3ByZWRpY2F0ZSxNbChyKSksMH1lbHNlIGxpJj10JjEmJmgod24sVG4sITEpfHxoKFRuLHduLG8pLCFsaSYmbyYmdSYmdShUbix3bil9cmV0dXJuIGxpfWZ1bmN0aW9uIGN3KHIsaSx0LG8scyl7aWYoci5raW5kIT09aS5raW5kKXJldHVybiB0JiYobyhlLkRpYWdub3N0aWNzLkFfdGhpc19iYXNlZF90eXBlX2d1YXJkX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfYV9wYXJhbWV0ZXJfYmFzZWRfdHlwZV9ndWFyZCksbyhlLkRpYWdub3N0aWNzLlR5cGVfcHJlZGljYXRlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fMSxMbChyKSxMbChpKSkpLDA7aWYoKHIua2luZD09PTF8fHIua2luZD09PTMpJiZyLnBhcmFtZXRlckluZGV4IT09aS5wYXJhbWV0ZXJJbmRleClyZXR1cm4gdCYmKG8oZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9pc19ub3RfaW5fdGhlX3NhbWVfcG9zaXRpb25fYXNfcGFyYW1ldGVyXzEsci5wYXJhbWV0ZXJOYW1lLGkucGFyYW1ldGVyTmFtZSksbyhlLkRpYWdub3N0aWNzLlR5cGVfcHJlZGljYXRlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fMSxMbChyKSxMbChpKSkpLDA7dmFyIHU9ci50eXBlPT09aS50eXBlPy0xOnIudHlwZSYmaS50eXBlP3Moci50eXBlLGkudHlwZSx0KTowO3JldHVybiB1PT09MCYmdCYmbyhlLkRpYWdub3N0aWNzLlR5cGVfcHJlZGljYXRlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fMSxMbChyKSxMbChpKSksdX1mdW5jdGlvbiB1dyhyLGkpe3ZhciB0PVFtKHIpLG89UW0oaSkscz15byh0KSx1PXlvKG8pO3JldHVybiB1PT09Rml8fHJfKHUscyxkdCl8fHJfKHMsdSxkdCk/b3codCxvLCEwKTohMX1mdW5jdGlvbiBMRChyKXtyZXR1cm4gciE9PXhuJiZyLnByb3BlcnRpZXMubGVuZ3RoPT09MCYmci5jYWxsU2lnbmF0dXJlcy5sZW5ndGg9PT0wJiZyLmNvbnN0cnVjdFNpZ25hdHVyZXMubGVuZ3RoPT09MCYmci5pbmRleEluZm9zLmxlbmd0aD09PTB9ZnVuY3Rpb24gT2Yocil7cmV0dXJuIHIuZmxhZ3MmNTI0Mjg4PyFCYyhyKSYmTEQoUnUocikpOnIuZmxhZ3MmNjcxMDg4NjQ/ITA6ci5mbGFncyYxMDQ4NTc2P2Uuc29tZShyLnR5cGVzLE9mKTpyLmZsYWdzJjIwOTcxNTI/ZS5ldmVyeShyLnR5cGVzLE9mKTohMX1mdW5jdGlvbiB2RShyKXtyZXR1cm4hIShlLmdldE9iamVjdEZsYWdzKHIpJjE2JiYoci5tZW1iZXJzJiZMRChyKXx8ci5zeW1ib2wmJnIuc3ltYm9sLmZsYWdzJjIwNDgmJk5mKHIuc3ltYm9sKS5zaXplPT09MCkpfWZ1bmN0aW9uIHlFKHIpe3JldHVybiByLmZsYWdzJjUyNDI4OCYmIUJjKHIpJiZ1byhyKS5sZW5ndGg9PT0wJiZIbihyKS5sZW5ndGg9PT0xJiYhIXNzKHIsTGkpfHxyLmZsYWdzJjMxNDU3MjgmJmUuZXZlcnkoci50eXBlcyx5RSl8fCExfWZ1bmN0aW9uIFJEKHIsaSx0KXtpZihyPT09aSlyZXR1cm4hMDt2YXIgbz15KHIpK1wiLFwiK3koaSkscz1Pbi5nZXQobyk7aWYocyE9PXZvaWQgMCYmISghKHMmNCkmJnMmMiYmdCkpcmV0dXJuISEocyYxKTtpZihyLmVzY2FwZWROYW1lIT09aS5lc2NhcGVkTmFtZXx8IShyLmZsYWdzJjI1Nil8fCEoaS5mbGFncyYyNTYpKXJldHVybiBPbi5zZXQobyw2KSwhMTtmb3IodmFyIHU9SnQoaSksaD0wLHo9dW8oSnQocikpO2g8ei5sZW5ndGg7aCsrKXt2YXIgbWU9eltoXTtpZihtZS5mbGFncyY4KXt2YXIgTWU9YmkodSxtZS5lc2NhcGVkTmFtZSk7aWYoIU1lfHwhKE1lLmZsYWdzJjgpKXJldHVybiB0Pyh0KGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pc19taXNzaW5nX2luX3R5cGVfMSxlLnN5bWJvbE5hbWUobWUpLE90KGdvKGkpLHZvaWQgMCw2NCkpLE9uLnNldChvLDYpKTpPbi5zZXQobywyKSwhMX19cmV0dXJuIE9uLnNldChvLDEpLCEwfWZ1bmN0aW9uIHV5KHIsaSx0LG8pe3ZhciBzPXIuZmxhZ3MsdT1pLmZsYWdzO3JldHVybiB1JjN8fHMmMTMxMDcyfHxyPT09TXI/ITA6dSYxMzEwNzI/ITE6ISEocyY0MDI2NTMzMTYmJnUmNHx8cyYxMjgmJnMmMTAyNCYmdSYxMjgmJiEodSYxMDI0KSYmci52YWx1ZT09PWkudmFsdWV8fHMmMjk2JiZ1Jjh8fHMmMjU2JiZzJjEwMjQmJnUmMjU2JiYhKHUmMTAyNCkmJnIudmFsdWU9PT1pLnZhbHVlfHxzJjIxMTImJnUmNjR8fHMmNTI4JiZ1JjE2fHxzJjEyMjg4JiZ1JjQwOTZ8fHMmMzImJnUmMzImJlJEKHIuc3ltYm9sLGkuc3ltYm9sLG8pfHxzJjEwMjQmJnUmMTAyNCYmKHMmMTA0ODU3NiYmdSYxMDQ4NTc2JiZSRChyLnN5bWJvbCxpLnN5bWJvbCxvKXx8cyYyOTQ0JiZ1JjI5NDQmJnIudmFsdWU9PT1pLnZhbHVlJiZSRChZcyhyLnN5bWJvbCksWXMoaS5zeW1ib2wpLG8pKXx8cyYzMjc2OCYmKCFZZSYmISh1JjMxNDU3MjgpfHx1JjQ5MTUyKXx8cyY2NTUzNiYmKCFZZSYmISh1JjMxNDU3MjgpfHx1JjY1NTM2KXx8cyY1MjQyODgmJnUmNjcxMDg4NjR8fCh0PT09ZHR8fHQ9PT1sYSkmJihzJjF8fHMmMjY0JiYhKHMmMTAyNCkmJih1JjMyfHx0PT09ZHQmJnUmMjU2JiZ1JjEwMjQpKSl9ZnVuY3Rpb24gcl8ocixpLHQpe2lmKEtwKHIpJiYocj1yLnJlZ3VsYXJUeXBlKSxLcChpKSYmKGk9aS5yZWd1bGFyVHlwZSkscj09PWkpcmV0dXJuITA7aWYodCE9PXdhKXtpZih0PT09bGEmJiEoaS5mbGFncyYxMzEwNzIpJiZ1eShpLHIsdCl8fHV5KHIsaSx0KSlyZXR1cm4hMH1lbHNlIGlmKCEoKHIuZmxhZ3N8aS5mbGFncykmNjE4NjU5ODQpKXtpZihyLmZsYWdzIT09aS5mbGFncylyZXR1cm4hMTtpZihyLmZsYWdzJjY3MzU4ODE1KXJldHVybiEwfWlmKHIuZmxhZ3MmNTI0Mjg4JiZpLmZsYWdzJjUyNDI4OCl7dmFyIG89dC5nZXQocUQocixpLDAsdCwhMSkpO2lmKG8hPT12b2lkIDApcmV0dXJuISEobyYxKX1yZXR1cm4gci5mbGFncyY0Njk0OTk5MDR8fGkuZmxhZ3MmNDY5NDk5OTA0P2hsKHIsaSx0LHZvaWQgMCk6ITF9ZnVuY3Rpb24gaEUocixpKXtyZXR1cm4gZS5nZXRPYmplY3RGbGFncyhyKSYyMDQ4JiZPYihpLmVzY2FwZWROYW1lKX1mdW5jdGlvbiBCRChyLGkpe2Zvcig7Oyl7dmFyIHQ9S3Aocik/ci5yZWd1bGFyVHlwZTplLmdldE9iamVjdEZsYWdzKHIpJjQmJnIubm9kZT9ZZihyLnRhcmdldCx4byhyKSk6ci5mbGFncyYzMTQ1NzI4P2J1KHIpOnIuZmxhZ3MmMzM1NTQ0MzI/aT9yLmJhc2VUeXBlOnIuc3Vic3RpdHV0ZTpyLmZsYWdzJjI1MTY1ODI0P1pmKHIsaSk6cjtpZih0PUdEKHQpfHx0LHQ9PT1yKWJyZWFrO3I9dH1yZXR1cm4gcn1mdW5jdGlvbiBobChyLGksdCxvLHMsdSxoKXt2YXIgeixtZSxNZSwkZSx0cixkcj0wLERyPTAsUXI9MCxsaT0wLFRpPSExLENpPTAsJGksWmkscXQ9ITE7ZS5EZWJ1Zy5hc3NlcnQodCE9PXdhfHwhbyxcIm5vIGVycm9yIHJlcG9ydGluZyBpbiBpZGVudGl0eSBjaGVja2luZ1wiKTt2YXIgTnQ9b2EocixpLDMsISFvLHMpO2lmKFppJiZpdCgpLFRpKXtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5pbnN0YW50KFwiY2hlY2tUeXBlc1wiLFwiY2hlY2tUeXBlUmVsYXRlZFRvX0RlcHRoTGltaXRcIix7c291cmNlSWQ6ci5pZCx0YXJnZXRJZDppLmlkLGRlcHRoOkRyLHRhcmdldERlcHRoOlFyfSk7dmFyIFJhPVhyKG98fEllLGUuRGlhZ25vc3RpY3MuRXhjZXNzaXZlX3N0YWNrX2RlcHRoX2NvbXBhcmluZ190eXBlc18wX2FuZF8xLE90KHIpLE90KGkpKTtoJiYoaC5lcnJvcnN8fChoLmVycm9ycz1bXSkpLnB1c2goUmEpfWVsc2UgaWYoeil7aWYodSl7dmFyIGNhPXUoKTtjYSYmKGUuY29uY2F0ZW5hdGVEaWFnbm9zdGljTWVzc2FnZUNoYWlucyhjYSx6KSx6PWNhKX12YXIgU249dm9pZCAwO2lmKHMmJm8mJiFOdCYmci5zeW1ib2wpe3ZhciBqYT1BYShyLnN5bWJvbCk7aWYoamEub3JpZ2luYXRpbmdJbXBvcnQmJiFlLmlzSW1wb3J0Q2FsbChqYS5vcmlnaW5hdGluZ0ltcG9ydCkpe3ZhciBGbj1obChKdChqYS50YXJnZXQpLGksdCx2b2lkIDApO2lmKEZuKXt2YXIgd249ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShqYS5vcmlnaW5hdGluZ0ltcG9ydCxlLkRpYWdub3N0aWNzLlR5cGVfb3JpZ2luYXRlc19hdF90aGlzX2ltcG9ydF9BX25hbWVzcGFjZV9zdHlsZV9pbXBvcnRfY2Fubm90X2JlX2NhbGxlZF9vcl9jb25zdHJ1Y3RlZF9hbmRfd2lsbF9jYXVzZV9hX2ZhaWx1cmVfYXRfcnVudGltZV9Db25zaWRlcl91c2luZ19hX2RlZmF1bHRfaW1wb3J0X29yX2ltcG9ydF9yZXF1aXJlX2hlcmVfaW5zdGVhZCk7U249ZS5hcHBlbmQoU24sd24pfX19dmFyIFJhPWUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVGcm9tTWVzc2FnZUNoYWluKG8seixTbik7bWUmJmUuYWRkUmVsYXRlZEluZm8uYXBwbHkodm9pZCAwLFZlKFtSYV0sbWUsITEpKSxoJiYoaC5lcnJvcnN8fChoLmVycm9ycz1bXSkpLnB1c2goUmEpLCghaHx8IWguc2tpcExvZ2dpbmcpJiZybi5hZGQoUmEpfXJldHVybiBvJiZoJiZoLnNraXBMb2dnaW5nJiZOdD09PTAmJmUuRGVidWcuYXNzZXJ0KCEhaC5lcnJvcnMsXCJtaXNzZWQgb3Bwb3J0dW5pdHkgdG8gaW50ZXJhY3Qgd2l0aCBlcnJvci5cIiksTnQhPT0wO2Z1bmN0aW9uIFRuKCRyKXt6PSRyLmVycm9ySW5mbywkaT0kci5sYXN0U2tpcHBlZEluZm8sWmk9JHIuaW5jb21wYXRpYmxlU3RhY2ssQ2k9JHIub3ZlcnJpZGVOZXh0RXJyb3JJbmZvLG1lPSRyLnJlbGF0ZWRJbmZvfWZ1bmN0aW9uIEVvKCl7cmV0dXJue2Vycm9ySW5mbzp6LGxhc3RTa2lwcGVkSW5mbzokaSxpbmNvbXBhdGlibGVTdGFjazpaaT09bnVsbD92b2lkIDA6Wmkuc2xpY2UoKSxvdmVycmlkZU5leHRFcnJvckluZm86Q2kscmVsYXRlZEluZm86bWU9PW51bGw/dm9pZCAwOm1lLnNsaWNlKCl9fWZ1bmN0aW9uIGx0KCRyLGhpLFJpLG10LGZ0KXtDaSsrLCRpPXZvaWQgMCwoWml8fChaaT1bXSkpLnB1c2goWyRyLGhpLFJpLG10LGZ0XSl9ZnVuY3Rpb24gaXQoKXt2YXIgJHI9Wml8fFtdO1ppPXZvaWQgMDt2YXIgaGk9JGk7aWYoJGk9dm9pZCAwLCRyLmxlbmd0aD09PTEpe1l0LmFwcGx5KHZvaWQgMCwkclswXSksaGkmJlF0LmFwcGx5KHZvaWQgMCxWZShbdm9pZCAwXSxoaSwhMSkpO3JldHVybn1mb3IodmFyIFJpPVwiXCIsbXQ9W107JHIubGVuZ3RoOyl7dmFyIGZ0PSRyLnBvcCgpLEh0PWZ0WzBdLHZ0PWZ0LnNsaWNlKDEpO3N3aXRjaChIdC5jb2RlKXtjYXNlIGUuRGlhZ25vc3RpY3MuVHlwZXNfb2ZfcHJvcGVydHlfMF9hcmVfaW5jb21wYXRpYmxlLmNvZGU6e1JpLmluZGV4T2YoXCJuZXcgXCIpPT09MCYmKFJpPVwiKFwiLmNvbmNhdChSaSxcIilcIikpO3ZhciBodD1cIlwiK3Z0WzBdO1JpLmxlbmd0aD09PTA/Umk9XCJcIi5jb25jYXQoaHQpOmUuaXNJZGVudGlmaWVyVGV4dChodCxlLmdldEVtaXRTY3JpcHRUYXJnZXQoeWUpKT9SaT1cIlwiLmNvbmNhdChSaSxcIi5cIikuY29uY2F0KGh0KTpodFswXT09PVwiW1wiJiZodFtodC5sZW5ndGgtMV09PT1cIl1cIj9SaT1cIlwiLmNvbmNhdChSaSkuY29uY2F0KGh0KTpSaT1cIlwiLmNvbmNhdChSaSxcIltcIikuY29uY2F0KGh0LFwiXVwiKTticmVha31jYXNlIGUuRGlhZ25vc3RpY3MuQ2FsbF9zaWduYXR1cmVfcmV0dXJuX3R5cGVzXzBfYW5kXzFfYXJlX2luY29tcGF0aWJsZS5jb2RlOmNhc2UgZS5EaWFnbm9zdGljcy5Db25zdHJ1Y3Rfc2lnbmF0dXJlX3JldHVybl90eXBlc18wX2FuZF8xX2FyZV9pbmNvbXBhdGlibGUuY29kZTpjYXNlIGUuRGlhZ25vc3RpY3MuQ2FsbF9zaWduYXR1cmVzX3dpdGhfbm9fYXJndW1lbnRzX2hhdmVfaW5jb21wYXRpYmxlX3JldHVybl90eXBlc18wX2FuZF8xLmNvZGU6Y2FzZSBlLkRpYWdub3N0aWNzLkNvbnN0cnVjdF9zaWduYXR1cmVzX3dpdGhfbm9fYXJndW1lbnRzX2hhdmVfaW5jb21wYXRpYmxlX3JldHVybl90eXBlc18wX2FuZF8xLmNvZGU6e2lmKFJpLmxlbmd0aD09PTApe3ZhciBtYT1IdDtIdC5jb2RlPT09ZS5EaWFnbm9zdGljcy5DYWxsX3NpZ25hdHVyZXNfd2l0aF9ub19hcmd1bWVudHNfaGF2ZV9pbmNvbXBhdGlibGVfcmV0dXJuX3R5cGVzXzBfYW5kXzEuY29kZT9tYT1lLkRpYWdub3N0aWNzLkNhbGxfc2lnbmF0dXJlX3JldHVybl90eXBlc18wX2FuZF8xX2FyZV9pbmNvbXBhdGlibGU6SHQuY29kZT09PWUuRGlhZ25vc3RpY3MuQ29uc3RydWN0X3NpZ25hdHVyZXNfd2l0aF9ub19hcmd1bWVudHNfaGF2ZV9pbmNvbXBhdGlibGVfcmV0dXJuX3R5cGVzXzBfYW5kXzEuY29kZSYmKG1hPWUuRGlhZ25vc3RpY3MuQ29uc3RydWN0X3NpZ25hdHVyZV9yZXR1cm5fdHlwZXNfMF9hbmRfMV9hcmVfaW5jb21wYXRpYmxlKSxtdC51bnNoaWZ0KFttYSx2dFswXSx2dFsxXV0pfWVsc2V7dmFyIENhPUh0LmNvZGU9PT1lLkRpYWdub3N0aWNzLkNvbnN0cnVjdF9zaWduYXR1cmVfcmV0dXJuX3R5cGVzXzBfYW5kXzFfYXJlX2luY29tcGF0aWJsZS5jb2RlfHxIdC5jb2RlPT09ZS5EaWFnbm9zdGljcy5Db25zdHJ1Y3Rfc2lnbmF0dXJlc193aXRoX25vX2FyZ3VtZW50c19oYXZlX2luY29tcGF0aWJsZV9yZXR1cm5fdHlwZXNfMF9hbmRfMS5jb2RlP1wibmV3IFwiOlwiXCIsQW49SHQuY29kZT09PWUuRGlhZ25vc3RpY3MuQ2FsbF9zaWduYXR1cmVzX3dpdGhfbm9fYXJndW1lbnRzX2hhdmVfaW5jb21wYXRpYmxlX3JldHVybl90eXBlc18wX2FuZF8xLmNvZGV8fEh0LmNvZGU9PT1lLkRpYWdub3N0aWNzLkNvbnN0cnVjdF9zaWduYXR1cmVzX3dpdGhfbm9fYXJndW1lbnRzX2hhdmVfaW5jb21wYXRpYmxlX3JldHVybl90eXBlc18wX2FuZF8xLmNvZGU/XCJcIjpcIi4uLlwiO1JpPVwiXCIuY29uY2F0KENhKS5jb25jYXQoUmksXCIoXCIpLmNvbmNhdChBbixcIilcIil9YnJlYWt9Y2FzZSBlLkRpYWdub3N0aWNzLlR5cGVfYXRfcG9zaXRpb25fMF9pbl9zb3VyY2VfaXNfbm90X2NvbXBhdGlibGVfd2l0aF90eXBlX2F0X3Bvc2l0aW9uXzFfaW5fdGFyZ2V0LmNvZGU6e210LnVuc2hpZnQoW2UuRGlhZ25vc3RpY3MuVHlwZV9hdF9wb3NpdGlvbl8wX2luX3NvdXJjZV9pc19ub3RfY29tcGF0aWJsZV93aXRoX3R5cGVfYXRfcG9zaXRpb25fMV9pbl90YXJnZXQsdnRbMF0sdnRbMV1dKTticmVha31jYXNlIGUuRGlhZ25vc3RpY3MuVHlwZV9hdF9wb3NpdGlvbnNfMF90aHJvdWdoXzFfaW5fc291cmNlX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfdHlwZV9hdF9wb3NpdGlvbl8yX2luX3RhcmdldC5jb2RlOnttdC51bnNoaWZ0KFtlLkRpYWdub3N0aWNzLlR5cGVfYXRfcG9zaXRpb25zXzBfdGhyb3VnaF8xX2luX3NvdXJjZV9pc19ub3RfY29tcGF0aWJsZV93aXRoX3R5cGVfYXRfcG9zaXRpb25fMl9pbl90YXJnZXQsdnRbMF0sdnRbMV0sdnRbMl1dKTticmVha31kZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoXCJVbmhhbmRsZWQgRGlhZ25vc3RpYzogXCIuY29uY2F0KEh0LmNvZGUpKX19Umk/WXQoUmlbUmkubGVuZ3RoLTFdPT09XCIpXCI/ZS5EaWFnbm9zdGljcy5UaGVfdHlwZXNfcmV0dXJuZWRfYnlfMF9hcmVfaW5jb21wYXRpYmxlX2JldHdlZW5fdGhlc2VfdHlwZXM6ZS5EaWFnbm9zdGljcy5UaGVfdHlwZXNfb2ZfMF9hcmVfaW5jb21wYXRpYmxlX2JldHdlZW5fdGhlc2VfdHlwZXMsUmkpOm10LnNoaWZ0KCk7Zm9yKHZhciBnbj0wLFZuPW10O2duPFZuLmxlbmd0aDtnbisrKXt2YXIgem89Vm5bZ25dLEh0PXpvWzBdLHZ0PXpvLnNsaWNlKDEpLHVzPUh0LmVsaWRlZEluQ29tcGF0YWJpbGl0eVB5cmFtaWQ7SHQuZWxpZGVkSW5Db21wYXRhYmlsaXR5UHlyYW1pZD0hMSxZdC5hcHBseSh2b2lkIDAsVmUoW0h0XSx2dCwhMSkpLEh0LmVsaWRlZEluQ29tcGF0YWJpbGl0eVB5cmFtaWQ9dXN9aGkmJlF0LmFwcGx5KHZvaWQgMCxWZShbdm9pZCAwXSxoaSwhMSkpfWZ1bmN0aW9uIFl0KCRyLGhpLFJpLG10LGZ0KXtlLkRlYnVnLmFzc2VydCghIW8pLFppJiZpdCgpLCEkci5lbGlkZWRJbkNvbXBhdGFiaWxpdHlQeXJhbWlkJiYoej1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKHosJHIsaGksUmksbXQsZnQpKX1mdW5jdGlvbiBJYSgkcil7ZS5EZWJ1Zy5hc3NlcnQoISF6KSxtZT9tZS5wdXNoKCRyKTptZT1bJHJdfWZ1bmN0aW9uIFF0KCRyLGhpLFJpKXtaaSYmaXQoKTt2YXIgbXQ9bmYoaGksUmkpLGZ0PW10WzBdLEh0PW10WzFdLHZ0PWhpLGh0PWZ0O2lmKENnKGhpKSYmIUpEKFJpKSYmKHZ0PUtsKGhpKSxlLkRlYnVnLmFzc2VydCghYW8odnQsUmkpLFwiZ2VuZXJhbGl6ZWQgc291cmNlIHNob3VsZG4ndCBiZSBhc3NpZ25hYmxlXCIpLGh0PXFfKHZ0KSksUmkuZmxhZ3MmMjYyMTQ0JiZSaSE9PVJuJiZSaSE9PURhKXt2YXIgbWE9dWMoUmkpLENhPXZvaWQgMDttYSYmKGFvKHZ0LG1hKXx8KENhPWFvKGhpLG1hKSkpP1l0KGUuRGlhZ25vc3RpY3MuXzBfaXNfYXNzaWduYWJsZV90b190aGVfY29uc3RyYWludF9vZl90eXBlXzFfYnV0XzFfY291bGRfYmVfaW5zdGFudGlhdGVkX3dpdGhfYV9kaWZmZXJlbnRfc3VidHlwZV9vZl9jb25zdHJhaW50XzIsQ2E/ZnQ6aHQsSHQsT3QobWEpKTooej12b2lkIDAsWXQoZS5EaWFnbm9zdGljcy5fMF9jb3VsZF9iZV9pbnN0YW50aWF0ZWRfd2l0aF9hbl9hcmJpdHJhcnlfdHlwZV93aGljaF9jb3VsZF9iZV91bnJlbGF0ZWRfdG9fMSxIdCxodCkpfWlmKCRyKSRyPT09ZS5EaWFnbm9zdGljcy5Bcmd1bWVudF9vZl90eXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fcGFyYW1ldGVyX29mX3R5cGVfMSYmeXImJkRFKGhpLFJpKS5sZW5ndGgmJigkcj1lLkRpYWdub3N0aWNzLkFyZ3VtZW50X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19wYXJhbWV0ZXJfb2ZfdHlwZV8xX3dpdGhfZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNfQ29sb25fdHJ1ZV9Db25zaWRlcl9hZGRpbmdfdW5kZWZpbmVkX3RvX3RoZV90eXBlc19vZl90aGVfdGFyZ2V0X3NfcHJvcGVydGllcyk7ZWxzZSBpZih0PT09bGEpJHI9ZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2NvbXBhcmFibGVfdG9fdHlwZV8xO2Vsc2UgaWYoZnQ9PT1IdCkkcj1lLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzFfVHdvX2RpZmZlcmVudF90eXBlc193aXRoX3RoaXNfbmFtZV9leGlzdF9idXRfdGhleV9hcmVfdW5yZWxhdGVkO2Vsc2UgaWYoeXImJkRFKGhpLFJpKS5sZW5ndGgpJHI9ZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xX3dpdGhfZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNfQ29sb25fdHJ1ZV9Db25zaWRlcl9hZGRpbmdfdW5kZWZpbmVkX3RvX3RoZV90eXBlc19vZl90aGVfdGFyZ2V0X3NfcHJvcGVydGllcztlbHNle2lmKGhpLmZsYWdzJjEyOCYmUmkuZmxhZ3MmMTA0ODU3Nil7dmFyIEFuPXQ3KGhpLFJpKTtpZihBbil7WXQoZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xX0RpZF95b3VfbWVhbl8yLGh0LEh0LE90KEFuKSk7cmV0dXJufX0kcj1lLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzF9WXQoJHIsaHQsSHQpfWZ1bmN0aW9uIEthKCRyLGhpKXt2YXIgUmk9S2YoJHIuc3ltYm9sKT9PdCgkciwkci5zeW1ib2wudmFsdWVEZWNsYXJhdGlvbik6T3QoJHIpLG10PUtmKGhpLnN5bWJvbCk/T3QoaGksaGkuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pOk90KGhpKTsoQ3Q9PT0kciYmTGk9PT1oaXx8c2E9PT0kciYmbnQ9PT1oaXx8ZW49PT0kciYmSWk9PT1oaXx8Q3goKT09PSRyJiZLaT09PWhpKSYmWXQoZS5EaWFnbm9zdGljcy5fMF9pc19hX3ByaW1pdGl2ZV9idXRfMV9pc19hX3dyYXBwZXJfb2JqZWN0X1ByZWZlcl91c2luZ18wX3doZW5fcG9zc2libGUsbXQsUmkpfWZ1bmN0aW9uIGNuKCRyLGhpLFJpKXtyZXR1cm4gWW4oJHIpPyRyLnRhcmdldC5yZWFkb25seSYmQmgoaGkpPyhSaSYmWXQoZS5EaWFnbm9zdGljcy5UaGVfdHlwZV8wX2lzX3JlYWRvbmx5X2FuZF9jYW5ub3RfYmVfYXNzaWduZWRfdG9fdGhlX211dGFibGVfdHlwZV8xLE90KCRyKSxPdChoaSkpLCExKTpQZChoaSk6dW0oJHIpJiZCaChoaSk/KFJpJiZZdChlLkRpYWdub3N0aWNzLlRoZV90eXBlXzBfaXNfcmVhZG9ubHlfYW5kX2Nhbm5vdF9iZV9hc3NpZ25lZF90b190aGVfbXV0YWJsZV90eXBlXzEsT3QoJHIpLE90KGhpKSksITEpOlluKGhpKT9UdSgkcik6ITB9ZnVuY3Rpb24gVW4oJHIsaGksUmkpe3JldHVybiBvYSgkcixoaSwzLFJpKX1mdW5jdGlvbiBvYSgkcixoaSxSaSxtdCxmdCxIdCl7aWYoUmk9PT12b2lkIDAmJihSaT0zKSxtdD09PXZvaWQgMCYmKG10PSExKSxIdD09PXZvaWQgMCYmKEh0PTApLCRyLmZsYWdzJjUyNDI4OCYmaGkuZmxhZ3MmMTMxMDY4KXJldHVybiB1eSgkcixoaSx0LG10P1l0OnZvaWQgMCk/LTE6KG10JiZNbigkcixoaSwkcixoaSxmdCksMCk7dmFyIHZ0PUJEKCRyLCExKSxodD1CRChoaSwhMCk7aWYodnQ9PT1odClyZXR1cm4tMTtpZih0PT09d2EpcmV0dXJuIHZ0LmZsYWdzIT09aHQuZmxhZ3M/MDp2dC5mbGFncyY2NzM1ODgxNT8tMTooTG4odnQsaHQpLF90KHZ0LGh0LCExLDAsUmkpKTtpZih2dC5mbGFncyYyNjIxNDQmJlFfKHZ0KT09PWh0KXJldHVybi0xO2lmKHZ0LmZsYWdzJjQ3MDMwMjcxNiYmaHQuZmxhZ3MmMTA0ODU3Nil7dmFyIG1hPWh0LnR5cGVzLENhPW1hLmxlbmd0aD09PTImJm1hWzBdLmZsYWdzJjk4MzA0P21hWzFdOm1hLmxlbmd0aD09PTMmJm1hWzBdLmZsYWdzJjk4MzA0JiZtYVsxXS5mbGFncyY5ODMwND9tYVsyXTp2b2lkIDA7aWYoQ2EmJiEoQ2EuZmxhZ3MmOTgzMDQpJiYoaHQ9QkQoQ2EsITApLHZ0PT09aHQpKXJldHVybi0xfWlmKHQ9PT1sYSYmIShodC5mbGFncyYxMzEwNzIpJiZ1eShodCx2dCx0KXx8dXkodnQsaHQsdCxtdD9ZdDp2b2lkIDApKXJldHVybi0xO2lmKHZ0LmZsYWdzJjQ2OTQ5OTkwNHx8aHQuZmxhZ3MmNDY5NDk5OTA0KXt2YXIgQW49IShIdCYyKSYmUXAodnQpJiZlLmdldE9iamVjdEZsYWdzKHZ0KSY4MTkyO2lmKEFuJiZGcih2dCxodCxtdCkpcmV0dXJuIG10JiZRdChmdCx2dCxoaS5hbGlhc1N5bWJvbD9oaTpodCksMDt2YXIgZ249dCE9PWxhJiYhKEh0JjIpJiZ2dC5mbGFncyYyNzUyNTA4JiZ2dCE9PXFlJiZodC5mbGFncyYyNjIxNDQwJiZTRShodCkmJih1byh2dCkubGVuZ3RoPjB8fFJTKHZ0KSksVm49ISEoZS5nZXRPYmplY3RGbGFncyh2dCkmMjA0OCk7aWYoZ24mJiFmdyh2dCxodCxWbikpe2lmKG10KXt2YXIgem89T3QoJHIuYWxpYXNTeW1ib2w/JHI6dnQpLHVzPU90KGhpLmFsaWFzU3ltYm9sP2hpOmh0KSxCbz1vdCh2dCwwKSxJbz1vdCh2dCwxKTtCby5sZW5ndGg+MCYmb2EoeW8oQm9bMF0pLGh0LDEsITEpfHxJby5sZW5ndGg+MCYmb2EoeW8oSW9bMF0pLGh0LDEsITEpP1l0KGUuRGlhZ25vc3RpY3MuVmFsdWVfb2ZfdHlwZV8wX2hhc19ub19wcm9wZXJ0aWVzX2luX2NvbW1vbl93aXRoX3R5cGVfMV9EaWRfeW91X21lYW5fdG9fY2FsbF9pdCx6byx1cyk6WXQoZS5EaWFnbm9zdGljcy5UeXBlXzBfaGFzX25vX3Byb3BlcnRpZXNfaW5fY29tbW9uX3dpdGhfdHlwZV8xLHpvLHVzKX1yZXR1cm4gMH1Mbih2dCxodCk7dmFyIFFvPXZ0LmZsYWdzJjEwNDg1NzYmJnZ0LnR5cGVzLmxlbmd0aDw0JiYhKGh0LmZsYWdzJjEwNDg1NzYpfHxodC5mbGFncyYxMDQ4NTc2JiZodC50eXBlcy5sZW5ndGg8NCYmISh2dC5mbGFncyY0Njk0OTk5MDQpLGxzPVFvP0x0KHZ0LGh0LG10LEh0KTpfdCh2dCxodCxtdCxIdCxSaSk7aWYobHMmJiFxdCYmKGh0LmZsYWdzJjIwOTcxNTImJihBbnx8Z24pfHxiRChodCkmJiFQZChodCkmJnZ0LmZsYWdzJjIwOTcxNTImJiRzKHZ0KS5mbGFncyYzNjcwMDE2JiYhZS5zb21lKHZ0LnR5cGVzLGZ1bmN0aW9uKGdpKXtyZXR1cm4hIShlLmdldE9iamVjdEZsYWdzKGdpKSYyNjIxNDQpfSkpJiYocXQ9ITAsbHMmPV90KHZ0LGh0LG10LDQsUmkpLHF0PSExKSxscylyZXR1cm4gbHN9cmV0dXJuIG10JiZNbigkcixoaSx2dCxodCxmdCksMH1mdW5jdGlvbiBNbigkcixoaSxSaSxtdCxmdCl7dmFyIEh0PSEhR0QoJHIpLHZ0PSEhR0QoaGkpO1JpPSRyLmFsaWFzU3ltYm9sfHxIdD8kcjpSaSxtdD1oaS5hbGlhc1N5bWJvbHx8dnQ/aGk6bXQ7dmFyIGh0PUNpPjA7aWYoaHQmJkNpLS0sUmkuZmxhZ3MmNTI0Mjg4JiZtdC5mbGFncyY1MjQyODgpe3ZhciBtYT16O2NuKFJpLG10LCEwKSx6IT09bWEmJihodD0hIXopfWlmKFJpLmZsYWdzJjUyNDI4OCYmbXQuZmxhZ3MmMTMxMDY4KUthKFJpLG10KTtlbHNlIGlmKFJpLnN5bWJvbCYmUmkuZmxhZ3MmNTI0Mjg4JiZxZT09PVJpKVl0KGUuRGlhZ25vc3RpY3MuVGhlX09iamVjdF90eXBlX2lzX2Fzc2lnbmFibGVfdG9fdmVyeV9mZXdfb3RoZXJfdHlwZXNfRGlkX3lvdV9tZWFuX3RvX3VzZV90aGVfYW55X3R5cGVfaW5zdGVhZCk7ZWxzZSBpZihlLmdldE9iamVjdEZsYWdzKFJpKSYyMDQ4JiZtdC5mbGFncyYyMDk3MTUyKXt2YXIgQ2E9bXQudHlwZXMsQW49WnAoVS5JbnRyaW5zaWNBdHRyaWJ1dGVzLG8pLGduPVpwKFUuSW50cmluc2ljQ2xhc3NBdHRyaWJ1dGVzLG8pO2lmKCFubihBbikmJiFubihnbikmJihlLmNvbnRhaW5zKENhLEFuKXx8ZS5jb250YWlucyhDYSxnbikpKXJldHVybn1lbHNlIHo9ZWkoeixoaSk7aWYoIWZ0JiZodCl7JGk9W1JpLG10XTtyZXR1cm59UXQoZnQsUmksbXQpfWZ1bmN0aW9uIExuKCRyLGhpKXtpZighIWUudHJhY2luZyYmJHIuZmxhZ3MmMzE0NTcyOCYmaGkuZmxhZ3MmMzE0NTcyOCl7dmFyIFJpPSRyLG10PWhpO2lmKFJpLm9iamVjdEZsYWdzJm10Lm9iamVjdEZsYWdzJjMyNzY4KXJldHVybjt2YXIgZnQ9UmkudHlwZXMubGVuZ3RoLEh0PW10LnR5cGVzLmxlbmd0aDtmdCpIdD4xZTYmJmUudHJhY2luZy5pbnN0YW50KFwiY2hlY2tUeXBlc1wiLFwidHJhY2VVbmlvbnNPckludGVyc2VjdGlvbnNUb29MYXJnZV9EZXB0aExpbWl0XCIse3NvdXJjZUlkOiRyLmlkLHNvdXJjZVNpemU6ZnQsdGFyZ2V0SWQ6aGkuaWQsdGFyZ2V0U2l6ZTpIdCxwb3M6bz09bnVsbD92b2lkIDA6by5wb3MsZW5kOm89PW51bGw/dm9pZCAwOm8uZW5kfSl9fWZ1bmN0aW9uIGNpKCRyLGhpKXt2YXIgUmk9ZnVuY3Rpb24obXQsZnQpe3ZhciBIdDtmdD0kcyhmdCk7dmFyIHZ0PWZ0LmZsYWdzJjMxNDU3Mjg/WnYoZnQsaGkpOmhfKGZ0LGhpKSxodD12dCYmSnQodnQpfHwoKEh0PVhvKGZ0LGhpKSk9PT1udWxsfHxIdD09PXZvaWQgMD92b2lkIDA6SHQudHlwZSl8fFRyO3JldHVybiBlLmFwcGVuZChtdCxodCl9O3JldHVybiBQYShlLnJlZHVjZUxlZnQoJHIsUmksdm9pZCAwKXx8ZS5lbXB0eUFycmF5KX1mdW5jdGlvbiBGcigkcixoaSxSaSl7dmFyIG10O2lmKCFTeShoaSl8fCFuJiZlLmdldE9iamVjdEZsYWdzKGhpKSY0MDk2KXJldHVybiExO3ZhciBmdD0hIShlLmdldE9iamVjdEZsYWdzKCRyKSYyMDQ4KTtpZigodD09PWR0fHx0PT09bGEpJiYoZHkocWUsaGkpfHwhZnQmJk9mKGhpKSkpcmV0dXJuITE7dmFyIEh0PWhpLHZ0O2hpLmZsYWdzJjEwNDg1NzYmJihIdD1iQSgkcixoaSxvYSl8fElMKGhpKSx2dD1IdC5mbGFncyYxMDQ4NTc2P0h0LnR5cGVzOltIdF0pO2Zvcih2YXIgaHQ9ZnVuY3Rpb24oVm4pe2lmKGp0KFZuLCRyLnN5bWJvbCkmJiFoRSgkcixWbikpe2lmKCFSYihIdCxWbi5lc2NhcGVkTmFtZSxmdCkpe2lmKFJpKXt2YXIgem89ZWMoSHQsU3kpO2lmKCFvKXJldHVybnt2YWx1ZTplLkRlYnVnLmZhaWwoKX07aWYoZS5pc0pzeEF0dHJpYnV0ZXMobyl8fGUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQobyl8fGUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQoby5wYXJlbnQpKXtWbi52YWx1ZURlY2xhcmF0aW9uJiZlLmlzSnN4QXR0cmlidXRlKFZuLnZhbHVlRGVjbGFyYXRpb24pJiZlLmdldFNvdXJjZUZpbGVPZk5vZGUobyk9PT1lLmdldFNvdXJjZUZpbGVPZk5vZGUoVm4udmFsdWVEZWNsYXJhdGlvbi5uYW1lKSYmKG89Vm4udmFsdWVEZWNsYXJhdGlvbi5uYW1lKTt2YXIgdXM9dG4oVm4pLEJvPWVrKHVzLHpvKSxJbz1Cbz90bihCbyk6dm9pZCAwO0lvP1l0KGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRGlkX3lvdV9tZWFuXzIsdXMsT3Qoem8pLElvKTpZdChlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xLHVzLE90KHpvKSl9ZWxzZXt2YXIgUW89KChtdD0kci5zeW1ib2wpPT09bnVsbHx8bXQ9PT12b2lkIDA/dm9pZCAwOm10LmRlY2xhcmF0aW9ucykmJmUuZmlyc3RPclVuZGVmaW5lZCgkci5zeW1ib2wuZGVjbGFyYXRpb25zKSxJbz12b2lkIDA7aWYoVm4udmFsdWVEZWNsYXJhdGlvbiYmZS5maW5kQW5jZXN0b3IoVm4udmFsdWVEZWNsYXJhdGlvbixmdW5jdGlvbihMYSl7cmV0dXJuIExhPT09UW99KSYmZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKFFvKT09PWUuZ2V0U291cmNlRmlsZU9mTm9kZShvKSl7dmFyIGxzPVZuLnZhbHVlRGVjbGFyYXRpb247ZS5EZWJ1Zy5hc3NlcnROb2RlKGxzLGUuaXNPYmplY3RMaXRlcmFsRWxlbWVudExpa2UpLG89bHM7dmFyIGdpPWxzLm5hbWU7ZS5pc0lkZW50aWZpZXIoZ2kpJiYoSW89VmIoZ2ksem8pKX1JbyE9PXZvaWQgMD9ZdChlLkRpYWdub3N0aWNzLk9iamVjdF9saXRlcmFsX21heV9vbmx5X3NwZWNpZnlfa25vd25fcHJvcGVydGllc19idXRfMF9kb2VzX25vdF9leGlzdF9pbl90eXBlXzFfRGlkX3lvdV9tZWFuX3RvX3dyaXRlXzIsdG4oVm4pLE90KHpvKSxJbyk6WXQoZS5EaWFnbm9zdGljcy5PYmplY3RfbGl0ZXJhbF9tYXlfb25seV9zcGVjaWZ5X2tub3duX3Byb3BlcnRpZXNfYW5kXzBfZG9lc19ub3RfZXhpc3RfaW5fdHlwZV8xLHRuKFZuKSxPdCh6bykpfX1yZXR1cm57dmFsdWU6ITB9fWlmKHZ0JiYhb2EoSnQoVm4pLGNpKHZ0LFZuLmVzY2FwZWROYW1lKSwzLFJpKSlyZXR1cm4gUmkmJmx0KGUuRGlhZ25vc3RpY3MuVHlwZXNfb2ZfcHJvcGVydHlfMF9hcmVfaW5jb21wYXRpYmxlLHRuKFZuKSkse3ZhbHVlOiEwfX19LG1hPTAsQ2E9dW8oJHIpO21hPENhLmxlbmd0aDttYSsrKXt2YXIgQW49Q2FbbWFdLGduPWh0KEFuKTtpZih0eXBlb2YgZ249PVwib2JqZWN0XCIpcmV0dXJuIGduLnZhbHVlfXJldHVybiExfWZ1bmN0aW9uIGp0KCRyLGhpKXtyZXR1cm4gJHIudmFsdWVEZWNsYXJhdGlvbiYmaGkudmFsdWVEZWNsYXJhdGlvbiYmJHIudmFsdWVEZWNsYXJhdGlvbi5wYXJlbnQ9PT1oaS52YWx1ZURlY2xhcmF0aW9ufWZ1bmN0aW9uIEx0KCRyLGhpLFJpLG10KXtpZigkci5mbGFncyYxMDQ4NTc2KXJldHVybiB0PT09bGE/VWEoJHIsaGksUmkmJiEoJHIuZmxhZ3MmMTMxMDY4KSxtdCk6TmkoJHIsaGksUmkmJiEoJHIuZmxhZ3MmMTMxMDY4KSxtdCk7aWYoaGkuZmxhZ3MmMTA0ODU3NilyZXR1cm4gS3QoZm0oJHIpLGhpLFJpJiYhKCRyLmZsYWdzJjEzMTA2OCkmJiEoaGkuZmxhZ3MmMTMxMDY4KSk7aWYoaGkuZmxhZ3MmMjA5NzE1MilyZXR1cm4gJHQoZm0oJHIpLGhpLFJpLDIpO2lmKHQ9PT1sYSYmaGkuZmxhZ3MmMTMxMDY4KXt2YXIgZnQ9ZS5zYW1lTWFwKCRyLnR5cGVzLEhkKTtpZihmdCE9PSRyLnR5cGVzJiYoJHI9RG8oZnQpLCEoJHIuZmxhZ3MmMjA5NzE1MikpKXJldHVybiBvYSgkcixoaSwxLCExKX1yZXR1cm4gVWEoJHIsaGksITEsMSl9ZnVuY3Rpb24gZWEoJHIsaGkpe2Zvcih2YXIgUmk9LTEsbXQ9JHIudHlwZXMsZnQ9MCxIdD1tdDtmdDxIdC5sZW5ndGg7ZnQrKyl7dmFyIHZ0PUh0W2Z0XSxodD1LdCh2dCxoaSwhMSk7aWYoIWh0KXJldHVybiAwO1JpJj1odH1yZXR1cm4gUml9ZnVuY3Rpb24gS3QoJHIsaGksUmkpe3ZhciBtdD1oaS50eXBlcztpZihoaS5mbGFncyYxMDQ4NTc2KXtpZigkZihtdCwkcikpcmV0dXJuLTE7dmFyIGZ0PSRFKGhpLCRyKTtpZihmdCl7dmFyIEh0PW9hKCRyLGZ0LDIsITEpO2lmKEh0KXJldHVybiBIdH19Zm9yKHZhciB2dD0wLGh0PW10O3Z0PGh0Lmxlbmd0aDt2dCsrKXt2YXIgbWE9aHRbdnRdLEh0PW9hKCRyLG1hLDIsITEpO2lmKEh0KXJldHVybiBIdH1pZihSaSl7dmFyIENhPWJFKCRyLGhpLG9hKTtDYSYmb2EoJHIsQ2EsMiwhMCl9cmV0dXJuIDB9ZnVuY3Rpb24gJHQoJHIsaGksUmksbXQpe2Zvcih2YXIgZnQ9LTEsSHQ9aGkudHlwZXMsdnQ9MCxodD1IdDt2dDxodC5sZW5ndGg7dnQrKyl7dmFyIG1hPWh0W3Z0XSxDYT1vYSgkcixtYSwyLFJpLHZvaWQgMCxtdCk7aWYoIUNhKXJldHVybiAwO2Z0Jj1DYX1yZXR1cm4gZnR9ZnVuY3Rpb24gVWEoJHIsaGksUmksbXQpe3ZhciBmdD0kci50eXBlcztpZigkci5mbGFncyYxMDQ4NTc2JiYkZihmdCxoaSkpcmV0dXJuLTE7Zm9yKHZhciBIdD1mdC5sZW5ndGgsdnQ9MDt2dDxIdDt2dCsrKXt2YXIgaHQ9b2EoZnRbdnRdLGhpLDEsUmkmJnZ0PT09SHQtMSx2b2lkIDAsbXQpO2lmKGh0KXJldHVybiBodH1yZXR1cm4gMH1mdW5jdGlvbiBZcigkcixoaSl7cmV0dXJuICRyLmZsYWdzJjEwNDg1NzYmJmhpLmZsYWdzJjEwNDg1NzYmJiEoJHIudHlwZXNbMF0uZmxhZ3MmMzI3NjgpJiZoaS50eXBlc1swXS5mbGFncyYzMjc2OD9OZyhoaSwtMzI3NjkpOmhpfWZ1bmN0aW9uIE5pKCRyLGhpLFJpLG10KXtmb3IodmFyIGZ0PS0xLEh0PSRyLnR5cGVzLHZ0PVlyKCRyLGhpKSxodD0wO2h0PEh0Lmxlbmd0aDtodCsrKXt2YXIgbWE9SHRbaHRdO2lmKHZ0LmZsYWdzJjEwNDg1NzYmJkh0Lmxlbmd0aD49dnQudHlwZXMubGVuZ3RoJiZIdC5sZW5ndGgldnQudHlwZXMubGVuZ3RoPT09MCl7dmFyIENhPW9hKG1hLHZ0LnR5cGVzW2h0JXZ0LnR5cGVzLmxlbmd0aF0sMywhMSx2b2lkIDAsbXQpO2lmKENhKXtmdCY9Q2E7Y29udGludWV9fXZhciBBbj1vYShtYSxoaSwxLFJpLHZvaWQgMCxtdCk7aWYoIUFuKXJldHVybiAwO2Z0Jj1Bbn1yZXR1cm4gZnR9ZnVuY3Rpb24gSGkoJHIsaGksUmksbXQsZnQpe2lmKCRyPT09dm9pZCAwJiYoJHI9ZS5lbXB0eUFycmF5KSxoaT09PXZvaWQgMCYmKGhpPWUuZW1wdHlBcnJheSksUmk9PT12b2lkIDAmJihSaT1lLmVtcHR5QXJyYXkpLCRyLmxlbmd0aCE9PWhpLmxlbmd0aCYmdD09PXdhKXJldHVybiAwO2Zvcih2YXIgSHQ9JHIubGVuZ3RoPD1oaS5sZW5ndGg/JHIubGVuZ3RoOmhpLmxlbmd0aCx2dD0tMSxodD0wO2h0PEh0O2h0Kyspe3ZhciBtYT1odDxSaS5sZW5ndGg/UmlbaHRdOjEsQ2E9bWEmNztpZihDYSE9PTQpe3ZhciBBbj0kcltodF0sZ249aGlbaHRdLFZuPS0xO2lmKG1hJjg/Vm49dD09PXdhP29hKEFuLGduLDMsITEpOmF2KEFuLGduKTpDYT09PTE/Vm49b2EoQW4sZ24sMyxtdCx2b2lkIDAsZnQpOkNhPT09Mj9Wbj1vYShnbixBbiwzLG10LHZvaWQgMCxmdCk6Q2E9PT0zPyhWbj1vYShnbixBbiwzLCExKSxWbnx8KFZuPW9hKEFuLGduLDMsbXQsdm9pZCAwLGZ0KSkpOihWbj1vYShBbixnbiwzLG10LHZvaWQgMCxmdCksVm4mJihWbiY9b2EoZ24sQW4sMyxtdCx2b2lkIDAsZnQpKSksIVZuKXJldHVybiAwO3Z0Jj1Wbn19cmV0dXJuIHZ0fWZ1bmN0aW9uIF90KCRyLGhpLFJpLG10LGZ0KXtpZihUaSlyZXR1cm4gMDt2YXIgSHQ9bXR8KHF0Pzg6MCksdnQ9cUQoJHIsaGksSHQsdCwhMSksaHQ9dC5nZXQodnQpO2lmKGh0IT09dm9pZCAwJiYhKFJpJiZodCYyJiYhKGh0JjQpKSl7aWYoaHIpe3ZhciBtYT1odCYyNDttYSY4JiZ1bigkcixHcChWdCkpLG1hJjE2JiZ1bigkcixHcChGYSkpfXJldHVybiBodCYxPy0xOjB9aWYoIU1lKU1lPVtdLCRlPVtdLHRyPVtdO2Vsc2V7Zm9yKHZhciBDYT12dC5zdGFydHNXaXRoKFwiKlwiKT9xRCgkcixoaSxIdCx0LCEwKTp2b2lkIDAsQW49MDtBbjxkcjtBbisrKWlmKHZ0PT09TWVbQW5dfHxDYSYmQ2E9PT1NZVtBbl0pcmV0dXJuIDM7aWYoRHI9PT0xMDB8fFFyPT09MTAwKXJldHVybiBUaT0hMCwwfXZhciBnbj1kcjtNZVtkcl09dnQsZHIrKzt2YXIgVm49bGk7ZnQmMSYmKCRlW0RyXT0kcixEcisrLCEobGkmMSkmJlJoKCRyLCRlLERyKSYmKGxpfD0xKSksZnQmMiYmKHRyW1FyXT1oaSxRcisrLCEobGkmMikmJlJoKGhpLHRyLFFyKSYmKGxpfD0yKSk7dmFyIHpvLHVzPTA7aHImJih6bz1ocixocj1mdW5jdGlvbihJbyl7cmV0dXJuIHVzfD1Jbz8xNjo4LHpvKElvKX0pO3ZhciBCbztpZihsaT09PTM/KGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLmluc3RhbnQoXCJjaGVja1R5cGVzXCIsXCJyZWN1cnNpdmVUeXBlUmVsYXRlZFRvX0RlcHRoTGltaXRcIix7c291cmNlSWQ6JHIuaWQsc291cmNlSWRTdGFjazokZS5tYXAoZnVuY3Rpb24oSW8pe3JldHVybiBJby5pZH0pLHRhcmdldElkOmhpLmlkLHRhcmdldElkU3RhY2s6dHIubWFwKGZ1bmN0aW9uKElvKXtyZXR1cm4gSW8uaWR9KSxkZXB0aDpEcix0YXJnZXREZXB0aDpRcn0pLEJvPTMpOihlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwiY2hlY2tUeXBlc1wiLFwic3RydWN0dXJlZFR5cGVSZWxhdGVkVG9cIix7c291cmNlSWQ6JHIuaWQsdGFyZ2V0SWQ6aGkuaWR9KSxCbz1ndCgkcixoaSxSaSxtdCksZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucG9wKCkpLGhyJiYoaHI9em8pLGZ0JjEmJkRyLS0sZnQmMiYmUXItLSxsaT1WbixCbyl7aWYoQm89PT0tMXx8RHI9PT0wJiZRcj09PTApe2lmKEJvPT09LTF8fEJvPT09Mylmb3IodmFyIEFuPWduO0FuPGRyO0FuKyspdC5zZXQoTWVbQW5dLDF8dXMpO2RyPWdufX1lbHNlIHQuc2V0KHZ0LChSaT80OjApfDJ8dXMpLGRyPWduO3JldHVybiBCb31mdW5jdGlvbiBndCgkcixoaSxSaSxtdCl7aWYobXQmNClyZXR1cm4gVW8oJHIsaGksUmksdm9pZCAwLDApO3ZhciBmdCxIdCx2dD0hMSxodD1FbygpLG1hPSRyLmZsYWdzLENhPWhpLmZsYWdzO2lmKHQ9PT13YSl7aWYobWEmMzE0NTcyOCl7dmFyIEFuPWVhKCRyLGhpKTtyZXR1cm4gQW4mJihBbiY9ZWEoaGksJHIpKSxBbn1pZihtYSY0MTk0MzA0KXJldHVybiBvYSgkci50eXBlLGhpLnR5cGUsMywhMSk7aWYobWEmODM4ODYwOCYmKGZ0PW9hKCRyLm9iamVjdFR5cGUsaGkub2JqZWN0VHlwZSwzLCExKSkmJihmdCY9b2EoJHIuaW5kZXhUeXBlLGhpLmluZGV4VHlwZSwzLCExKSl8fG1hJjE2Nzc3MjE2JiYkci5yb290LmlzRGlzdHJpYnV0aXZlPT09aGkucm9vdC5pc0Rpc3RyaWJ1dGl2ZSYmKGZ0PW9hKCRyLmNoZWNrVHlwZSxoaS5jaGVja1R5cGUsMywhMSkpJiYoZnQmPW9hKCRyLmV4dGVuZHNUeXBlLGhpLmV4dGVuZHNUeXBlLDMsITEpKSYmKGZ0Jj1vYShpcCgkciksaXAoaGkpLDMsITEpKSYmKGZ0Jj1vYSh0cCgkciksdHAoaGkpLDMsITEpKSlyZXR1cm4gZnQ7aWYobWEmMzM1NTQ0MzIpcmV0dXJuIG9hKCRyLnN1YnN0aXR1dGUsaGkuc3Vic3RpdHV0ZSwzLCExKTtpZighKG1hJjUyNDI4OCkpcmV0dXJuIDB9ZWxzZSBpZihtYSYzMTQ1NzI4fHxDYSYzMTQ1NzI4KXtpZihmdD1MdCgkcixoaSxSaSxtdCkpcmV0dXJuIGZ0O2lmKCRyLmZsYWdzJjIwOTcxNTJ8fCRyLmZsYWdzJjI2MjE0NCYmaGkuZmxhZ3MmMTA0ODU3Nil7dmFyIGduPUcxKCRyLmZsYWdzJjIwOTcxNTI/JHIudHlwZXM6WyRyXSwhIShoaS5mbGFncyYxMDQ4NTc2KSk7aWYoZ24mJmdmKGduLGZ1bmN0aW9uKFB2KXtyZXR1cm4gUHYhPT0kcn0pJiYoZnQ9b2EoZ24saGksMSwhMSx2b2lkIDAsbXQpKSlyZXR1cm4gVG4oaHQpLGZ0fWlmKCEobWEmNDY1ODI5ODg4fHxtYSY1MjQyODgmJkNhJjEwNDg1NzZ8fG1hJjIwOTcxNTImJkNhJjQ2NzQwMjc1MikpcmV0dXJuIDB9aWYobWEmMTczMDE1MDQmJiRyLmFsaWFzU3ltYm9sJiYkci5hbGlhc1R5cGVBcmd1bWVudHMmJiRyLmFsaWFzU3ltYm9sPT09aGkuYWxpYXNTeW1ib2wmJiEoRmgoJHIpfHxGaChoaSkpKXt2YXIgVm49VEUoJHIuYWxpYXNTeW1ib2wpO2lmKFZuPT09ZS5lbXB0eUFycmF5KXJldHVybiAxO3ZhciB6bz14QSgkci5hbGlhc1R5cGVBcmd1bWVudHMsaGkuYWxpYXNUeXBlQXJndW1lbnRzLFZuLG10KTtpZih6byE9PXZvaWQgMClyZXR1cm4gem99aWYoSUUoJHIpJiYhJHIudGFyZ2V0LnJlYWRvbmx5JiYoZnQ9b2EoeG8oJHIpWzBdLGhpLDEpKXx8SUUoaGkpJiYoaGkudGFyZ2V0LnJlYWRvbmx5fHxCaCh1Yygkcil8fCRyKSkmJihmdD1vYSgkcix4byhoaSlbMF0sMikpKXJldHVybiBmdDtpZihDYSYyNjIxNDQpe2lmKGUuZ2V0T2JqZWN0RmxhZ3MoJHIpJjMyJiYhJHIuZGVjbGFyYXRpb24ubmFtZVR5cGUmJm9hKHFsKGhpKSxNdSgkciksMykmJiEoTHUoJHIpJjQpKXt2YXIgdXM9dmwoJHIpLEJvPUpjKGhpLER1KCRyKSk7aWYoZnQ9b2EodXMsQm8sMyxSaSkpcmV0dXJuIGZ0fX1lbHNlIGlmKENhJjQxOTQzMDQpe3ZhciBJbz1oaS50eXBlO2lmKG1hJjQxOTQzMDQmJihmdD1vYShJbywkci50eXBlLDMsITEpKSlyZXR1cm4gZnQ7aWYoWW4oSW8pKXtpZihmdD1vYSgkcixNeChJbyksMixSaSkpcmV0dXJuIGZ0fWVsc2V7dmFyIGduPVZ2KElvKTtpZihnbil7aWYob2EoJHIscWwoZ24saGkuc3RyaW5nc09ubHkpLDIsUmkpPT09LTEpcmV0dXJuLTF9ZWxzZSBpZihCYyhJbykpe3ZhciBRbz1KbChJbyksbHM9TXUoSW8pLGdpPXZvaWQgMDtpZihRbyYmbWcoSW8pKXt2YXIgenQ9JHMoRWQoSW8pKSxMYT1bXTtVbSh6dCw4NTc2LCExLGZ1bmN0aW9uKENtKXtyZXR1cm4gdm9pZCBMYS5wdXNoKHVuKFFvLHR2KElvLm1hcHBlcixEdShJbyksQ20pKSl9KSxnaT1QYShWZShWZShbXSxMYSwhMCksW1FvXSwhMSkpfWVsc2UgZ2k9UW98fGxzO2lmKG9hKCRyLGdpLDIsUmkpPT09LTEpcmV0dXJuLTF9fX1lbHNlIGlmKENhJjgzODg2MDgpe2lmKG1hJjgzODg2MDgpe2lmKChmdD1vYSgkci5vYmplY3RUeXBlLGhpLm9iamVjdFR5cGUsMyxSaSkpJiYoZnQmPW9hKCRyLmluZGV4VHlwZSxoaS5pbmRleFR5cGUsMyxSaSkpLGZ0KXJldHVybiBUbihodCksZnQ7UmkmJihIdD16KX1pZih0PT09ZHR8fHQ9PT1sYSl7dmFyIGZhPWhpLm9iamVjdFR5cGUseWE9aGkuaW5kZXhUeXBlLE5uPXVjKGZhKXx8ZmEsZm49dWMoeWEpfHx5YTtpZighQWQoTm4pJiYhcXAoZm4pKXt2YXIgaG49NHwoTm4hPT1mYT8yOjApLGduPWVwKE5uLGZuLGhuKTtpZihnbil7aWYoUmkmJkh0JiZUbihodCksZnQ9b2EoJHIsZ24sMixSaSkpcmV0dXJuIGZ0O1JpJiZIdCYmeiYmKHo9R1MoW0h0XSk8PUdTKFt6XSk/SHQ6eil9fX1SaSYmKEh0PXZvaWQgMCl9ZWxzZSBpZihCYyhoaSkmJnQhPT13YSl7dmFyIHNuPSEhaGkuZGVjbGFyYXRpb24ubmFtZVR5cGUsdXM9dmwoaGkpLGxuPUx1KGhpKTtpZighKGxuJjgpKXtpZighc24mJnVzLmZsYWdzJjgzODg2MDgmJnVzLm9iamVjdFR5cGU9PT0kciYmdXMuaW5kZXhUeXBlPT09RHUoaGkpKXJldHVybi0xO2lmKCFCYygkcikpe3ZhciBnaT1zbj9KbChoaSk6TXUoaGkpLGxvPXFsKCRyLHZvaWQgMCwhMCksX289bG4mNCxfcz1fbz9aZyhnaSxsbyk6dm9pZCAwO2lmKF9vPyEoX3MuZmxhZ3MmMTMxMDcyKTpvYShnaSxsbywzKSl7dmFyIFZvPXZsKGhpKSxZbz1EdShoaSksQ3M9TmcoVm8sLTk4MzA1KTtpZighc24mJkNzLmZsYWdzJjgzODg2MDgmJkNzLmluZGV4VHlwZT09PVlvKXtpZihmdD1vYSgkcixDcy5vYmplY3RUeXBlLDIsUmkpKXJldHVybiBmdH1lbHNle3ZhciBpYz1zbj9fc3x8Z2k6X3M/RG8oW19zLFlvXSk6WW8sQm89SmMoJHIsaWMpO2lmKGZ0PW9hKEJvLFZvLDMsUmkpKXJldHVybiBmdH19SHQ9eixUbihodCl9fX1lbHNlIGlmKENhJjE2Nzc3MjE2KXtpZihSaChoaSx0cixRciwxMCkpcmV0dXJuIFRuKGh0KSwzO3ZhciBfYz1oaTtpZighX2Mucm9vdC5pbmZlclR5cGVQYXJhbWV0ZXJzJiYheEkoX2Mucm9vdCkpe3ZhciBpbD0hYW8od2goX2MuY2hlY2tUeXBlKSx3aChfYy5leHRlbmRzVHlwZSkpLG5fPSFpbCYmYW8oTmQoX2MuY2hlY2tUeXBlKSxOZChfYy5leHRlbmRzVHlwZSkpO2lmKChmdD1pbD8tMTpvYSgkcixpcChfYyksMiwhMSkpJiYoZnQmPW5fPy0xOm9hKCRyLHRwKF9jKSwyLCExKSxmdCkpcmV0dXJuIFRuKGh0KSxmdH19ZWxzZSBpZihDYSYxMzQyMTc3Mjgpe2lmKG1hJjEzNDIxNzcyOCl7aWYodD09PWxhKXJldHVybiBHdygkcixoaSk/MDotMTt1bigkcixHcChGYSkpfWlmKFZFKCRyLGhpKSlyZXR1cm4tMX1pZihtYSY4NjUwNzUyKXtpZighKG1hJjgzODg2MDgmJkNhJjgzODg2MDgpKXt2YXIgZ249UV8oJHIpO2lmKCFnbnx8bWEmMjYyMTQ0JiZnbi5mbGFncyYxKXtpZihmdD1vYShCYSxOZyhoaSwtNjcxMDg4NjUpLDMpKXJldHVybiBUbihodCksZnR9ZWxzZXtpZihmdD1vYShnbixoaSwxLCExLHZvaWQgMCxtdCkpcmV0dXJuIFRuKGh0KSxmdDtpZihmdD1vYShSYyhnbiwkciksaGksMSxSaSYmIShDYSZtYSYyNjIxNDQpLHZvaWQgMCxtdCkpcmV0dXJuIFRuKGh0KSxmdH1pZihRdigkcikpe3ZhciBvXz1RXygkci5pbmRleFR5cGUpO2lmKG9fJiYoZnQ9b2EoSmMoJHIub2JqZWN0VHlwZSxvXyksaGksMSxSaSkpKXJldHVybiBUbihodCksZnR9fX1lbHNlIGlmKG1hJjQxOTQzMDQpe2lmKGZ0PW9hKGF0LGhpLDEsUmkpKXJldHVybiBUbihodCksZnR9ZWxzZSBpZihtYSYxMzQyMTc3MjgmJiEoQ2EmNTI0Mjg4KSl7aWYoIShDYSYxMzQyMTc3MjgpKXt2YXIgZ249dWMoJHIpO2lmKGduJiZnbiE9PSRyJiYoZnQ9b2EoZ24saGksMSxSaSkpKXJldHVybiBUbihodCksZnR9fWVsc2UgaWYobWEmMjY4NDM1NDU2KWlmKENhJjI2ODQzNTQ1NiYmJHIuc3ltYm9sPT09aGkuc3ltYm9sKXtpZihmdD1vYSgkci50eXBlLGhpLnR5cGUsMyxSaSkpcmV0dXJuIFRuKGh0KSxmdH1lbHNle3ZhciBnbj11Yygkcik7aWYoZ24mJihmdD1vYShnbixoaSwxLFJpKSkpcmV0dXJuIFRuKGh0KSxmdH1lbHNlIGlmKG1hJjE2Nzc3MjE2KXtpZihSaCgkciwkZSxEciwxMCkpcmV0dXJuIFRuKGh0KSwzO2lmKENhJjE2Nzc3MjE2KXt2YXIgb2c9JHIucm9vdC5pbmZlclR5cGVQYXJhbWV0ZXJzLF9wPSRyLmV4dGVuZHNUeXBlLHRkPXZvaWQgMDtpZihvZyl7dmFyIHNfPXV2KG9nLHZvaWQgMCwwLFVuKTtkZihzXy5pbmZlcmVuY2VzLGhpLmV4dGVuZHNUeXBlLF9wLDE1MzYpLF9wPXVuKF9wLHNfLm1hcHBlciksdGQ9c18ubWFwcGVyfWlmKHdmKF9wLGhpLmV4dGVuZHNUeXBlKSYmKG9hKCRyLmNoZWNrVHlwZSxoaS5jaGVja1R5cGUsMyl8fG9hKGhpLmNoZWNrVHlwZSwkci5jaGVja1R5cGUsMykpJiYoKGZ0PW9hKHVuKGlwKCRyKSx0ZCksaXAoaGkpLDMsUmkpKSYmKGZ0Jj1vYSh0cCgkciksdHAoaGkpLDMsUmkpKSxmdCkpcmV0dXJuIFRuKGh0KSxmdH1lbHNle3ZhciBzZz1XbSgkcik/S3YoJHIpOnZvaWQgMDtpZihzZyYmKGZ0PW9hKHNnLGhpLDEsUmkpKSlyZXR1cm4gVG4oaHQpLGZ0fXZhciBOYz16bSgkcik7aWYoTmMmJihmdD1vYShOYyxoaSwxLFJpKSkpcmV0dXJuIFRuKGh0KSxmdH1lbHNle2lmKHQhPT1PciYmdCE9PWtpJiZqMShoaSkmJk9mKCRyKSlyZXR1cm4tMTtpZihCYyhoaSkpcmV0dXJuIEJjKCRyKSYmKGZ0PW9uKCRyLGhpLFJpKSk/KFRuKGh0KSxmdCk6MDt2YXIgcHA9ISEobWEmMTMxMDY4KTtpZih0IT09d2EpJHI9JHMoJHIpLG1hPSRyLmZsYWdzO2Vsc2UgaWYoQmMoJHIpKXJldHVybiAwO2lmKGUuZ2V0T2JqZWN0RmxhZ3MoJHIpJjQmJmUuZ2V0T2JqZWN0RmxhZ3MoaGkpJjQmJiRyLnRhcmdldD09PWhpLnRhcmdldCYmIVluKCRyKSYmIShGaCgkcil8fEZoKGhpKSkpe2lmKEpoKCRyKSlyZXR1cm4tMTt2YXIgVm49ekQoJHIudGFyZ2V0KTtpZihWbj09PWUuZW1wdHlBcnJheSlyZXR1cm4gMTt2YXIgem89eEEoeG8oJHIpLHhvKGhpKSxWbixtdCk7aWYoem8hPT12b2lkIDApcmV0dXJuIHpvfWVsc2V7aWYodW0oaGkpP1BkKCRyKTpUdShoaSkmJlluKCRyKSYmISRyLnRhcmdldC5yZWFkb25seSlyZXR1cm4gdCE9PXdhP29hKGNzKCRyLG50KXx8T2UsY3MoaGksbnQpfHxPZSwzLFJpKTowO2lmKCh0PT09T3J8fHQ9PT1raSkmJk9mKGhpKSYmZS5nZXRPYmplY3RGbGFncyhoaSkmODE5MiYmIU9mKCRyKSlyZXR1cm4gMH1pZihtYSYyNjIxNDQwJiZDYSY1MjQyODgpe3ZhciBZMD1SaSYmej09PWh0LmVycm9ySW5mbyYmIXBwO2lmKGZ0PVVvKCRyLGhpLFkwLHZvaWQgMCxtdCksZnQmJihmdCY9RnMoJHIsaGksMCxZMCksZnQmJihmdCY9RnMoJHIsaGksMSxZMCksZnQmJihmdCY9ZnAoJHIsaGkscHAsWTAsbXQpKSkpLHZ0JiZmdCl6PUh0fHx6fHxodC5lcnJvckluZm87ZWxzZSBpZihmdClyZXR1cm4gZnR9aWYobWEmMjYyMTQ0MCYmQ2EmMTA0ODU3Nil7dmFyIFNBPU5nKGhpLDM2MTc1ODcyKTtpZihTQS5mbGFncyYxMDQ4NTc2KXt2YXIgVEE9em4oJHIsU0EpO2lmKFRBKXJldHVybiBUQX19fXJldHVybiAwO2Z1bmN0aW9uIEdTKFB2KXtyZXR1cm4gUHY/ZS5yZWR1Y2VMZWZ0KFB2LGZ1bmN0aW9uKENtLGttKXtyZXR1cm4gQ20rMStHUyhrbS5uZXh0KX0sMCk6MH1mdW5jdGlvbiB4QShQdixDbSxrbSx3TCl7aWYoZnQ9SGkoUHYsQ20sa20sUmksd0wpKXJldHVybiBmdDtpZihlLnNvbWUoa20sZnVuY3Rpb24oSFMpe3JldHVybiEhKEhTJjI0KX0pKXtIdD12b2lkIDAsVG4oaHQpO3JldHVybn12YXIgRUE9Q20mJl93KENtLGttKTtpZih2dD0hRUEsa20hPT1lLmVtcHR5QXJyYXkmJiFFQSl7aWYodnQmJiEoUmkmJmUuc29tZShrbSxmdW5jdGlvbihIUyl7cmV0dXJuKEhTJjcpPT09MH0pKSlyZXR1cm4gMDtIdD16LFRuKGh0KX19fWZ1bmN0aW9uIFZ0KCRyKXtyZXR1cm4gaHImJigkcj09PVJufHwkcj09PURhfHwkcj09PWJvKSYmaHIoITEpLCRyfWZ1bmN0aW9uIEZhKCRyKXtyZXR1cm4gaHImJigkcj09PVJufHwkcj09PURhfHwkcj09PWJvKSYmaHIoITApLCRyfWZ1bmN0aW9uIG9uKCRyLGhpLFJpKXt2YXIgbXQ9dD09PWxhfHwodD09PXdhP0x1KCRyKT09PUx1KGhpKTpxdigkcik8PXF2KGhpKSk7aWYobXQpe3ZhciBmdCxIdD1NdShoaSksdnQ9dW4oTXUoJHIpLEdwKHF2KCRyKTwwP1Z0OkZhKSk7aWYoZnQ9b2EoSHQsdnQsMyxSaSkpe3ZhciBodD1VYyhbRHUoJHIpXSxbRHUoaGkpXSk7aWYodW4oSmwoJHIpLGh0KT09PXVuKEpsKGhpKSxodCkpcmV0dXJuIGZ0Jm9hKHVuKHZsKCRyKSxodCksdmwoaGkpLDMsUmkpfX1yZXR1cm4gMH1mdW5jdGlvbiB6bigkcixoaSl7dmFyIFJpPXVvKCRyKSxtdD1ZRShSaSxoaSk7aWYoIW10KXJldHVybiAwO2Zvcih2YXIgZnQ9MSxIdD0wLHZ0PW10O0h0PHZ0Lmxlbmd0aDtIdCsrKXt2YXIgaHQ9dnRbSHRdO2lmKGZ0Kj1EOChtbChodCkpLGZ0PjI1KXJldHVybiBlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5pbnN0YW50KFwiY2hlY2tUeXBlc1wiLFwidHlwZVJlbGF0ZWRUb0Rpc2NyaW1pbmF0ZWRUeXBlX0RlcHRoTGltaXRcIix7c291cmNlSWQ6JHIuaWQsdGFyZ2V0SWQ6aGkuaWQsbnVtQ29tYmluYXRpb25zOmZ0fSksMH1mb3IodmFyIG1hPW5ldyBBcnJheShtdC5sZW5ndGgpLENhPW5ldyBlLlNldCxBbj0wO0FuPG10Lmxlbmd0aDtBbisrKXt2YXIgaHQ9bXRbQW5dLGduPW1sKGh0KTttYVtBbl09Z24uZmxhZ3MmMTA0ODU3Nj9nbi50eXBlczpbZ25dLENhLmFkZChodC5lc2NhcGVkTmFtZSl9Zm9yKHZhciBWbj1lLmNhcnRlc2lhblByb2R1Y3QobWEpLHpvPVtdLHVzPWZ1bmN0aW9uKHlhKXt2YXIgTm49ITE7ZTpmb3IodmFyIGZuPTAsaG49aGkudHlwZXM7Zm48aG4ubGVuZ3RoO2ZuKyspe2Zvcih2YXIgc249aG5bZm5dLGxuPWZ1bmN0aW9uKF9zKXt2YXIgVm89bXRbX3NdLFlvPWJpKHNuLFZvLmVzY2FwZWROYW1lKTtpZighWW8pcmV0dXJuXCJjb250aW51ZS1vdXRlclwiO2lmKFZvPT09WW8pcmV0dXJuXCJjb250aW51ZVwiO3ZhciBDcz13bygkcixoaSxWbyxZbyxmdW5jdGlvbihpYyl7cmV0dXJuIHlhW19zXX0sITEsMCxZZXx8dD09PWxhKTtpZighQ3MpcmV0dXJuXCJjb250aW51ZS1vdXRlclwifSxsbz0wO2xvPG10Lmxlbmd0aDtsbysrKXt2YXIgX289bG4obG8pO3N3aXRjaChfbyl7Y2FzZVwiY29udGludWUtb3V0ZXJcIjpjb250aW51ZSBlfX1lLnB1c2hJZlVuaXF1ZSh6byxzbixlLmVxdWF0ZVZhbHVlcyksTm49ITB9aWYoIU5uKXJldHVybnt2YWx1ZTowfX0sQm89MCxJbz1WbjtCbzxJby5sZW5ndGg7Qm8rKyl7dmFyIFFvPUlvW0JvXSxscz11cyhRbyk7aWYodHlwZW9mIGxzPT1cIm9iamVjdFwiKXJldHVybiBscy52YWx1ZX1mb3IodmFyIGdpPS0xLHp0PTAsTGE9em87enQ8TGEubGVuZ3RoO3p0Kyspe3ZhciBmYT1MYVt6dF07aWYoZ2kmPVVvKCRyLGZhLCExLENhLDApLGdpJiYoZ2kmPUZzKCRyLGZhLDAsITEpLGdpJiYoZ2kmPUZzKCRyLGZhLDEsITEpLGdpJiYhKFluKCRyKSYmWW4oZmEpKSYmKGdpJj1mcCgkcixmYSwhMSwhMSwwKSkpKSwhZ2kpcmV0dXJuIGdpfXJldHVybiBnaX1mdW5jdGlvbiBHYSgkcixoaSl7aWYoIWhpfHwkci5sZW5ndGg9PT0wKXJldHVybiAkcjtmb3IodmFyIFJpLG10PTA7bXQ8JHIubGVuZ3RoO210KyspaGkuaGFzKCRyW210XS5lc2NhcGVkTmFtZSk/Uml8fChSaT0kci5zbGljZSgwLG10KSk6UmkmJlJpLnB1c2goJHJbbXRdKTtyZXR1cm4gUml8fCRyfWZ1bmN0aW9uIFFuKCRyLGhpLFJpLG10LGZ0KXt2YXIgSHQ9WWUmJiEhKGUuZ2V0Q2hlY2tGbGFncyhoaSkmNDgpLHZ0PWtjKG1sKGhpKSwhMSxIdCksaHQ9UmkoJHIpO3JldHVybiBvYShodCx2dCwzLG10LHZvaWQgMCxmdCl9ZnVuY3Rpb24gd28oJHIsaGksUmksbXQsZnQsSHQsdnQsaHQpe3ZhciBtYT1lLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2woUmkpLENhPWUuZ2V0RGVjbGFyYXRpb25Nb2RpZmllckZsYWdzRnJvbVN5bWJvbChtdCk7aWYobWEmOHx8Q2EmOCl7aWYoUmkudmFsdWVEZWNsYXJhdGlvbiE9PW10LnZhbHVlRGVjbGFyYXRpb24pcmV0dXJuIEh0JiYobWEmOCYmQ2EmOD9ZdChlLkRpYWdub3N0aWNzLlR5cGVzX2hhdmVfc2VwYXJhdGVfZGVjbGFyYXRpb25zX29mX2FfcHJpdmF0ZV9wcm9wZXJ0eV8wLHRuKG10KSk6WXQoZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX3ByaXZhdGVfaW5fdHlwZV8xX2J1dF9ub3RfaW5fdHlwZV8yLHRuKG10KSxPdChtYSY4PyRyOmhpKSxPdChtYSY4P2hpOiRyKSkpLDB9ZWxzZSBpZihDYSYxNil7aWYoIXZ3KFJpLG10KSlyZXR1cm4gSHQmJll0KGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pc19wcm90ZWN0ZWRfYnV0X3R5cGVfMV9pc19ub3RfYV9jbGFzc19kZXJpdmVkX2Zyb21fMix0bihtdCksT3QoWmQoUmkpfHwkciksT3QoWmQobXQpfHxoaSkpLDB9ZWxzZSBpZihtYSYxNilyZXR1cm4gSHQmJll0KGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pc19wcm90ZWN0ZWRfaW5fdHlwZV8xX2J1dF9wdWJsaWNfaW5fdHlwZV8yLHRuKG10KSxPdCgkciksT3QoaGkpKSwwO2lmKHQ9PT1raSYmWnUoUmkpJiYhWnUobXQpKXJldHVybiAwO3ZhciBBbj1RbihSaSxtdCxmdCxIdCx2dCk7cmV0dXJuIEFuPyFodCYmUmkuZmxhZ3MmMTY3NzcyMTYmJiEobXQuZmxhZ3MmMTY3NzcyMTYpPyhIdCYmWXQoZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX29wdGlvbmFsX2luX3R5cGVfMV9idXRfcmVxdWlyZWRfaW5fdHlwZV8yLHRuKG10KSxPdCgkciksT3QoaGkpKSwwKTpBbjooSHQmJmx0KGUuRGlhZ25vc3RpY3MuVHlwZXNfb2ZfcHJvcGVydHlfMF9hcmVfaW5jb21wYXRpYmxlLHRuKG10KSksMCl9ZnVuY3Rpb24gUG8oJHIsaGksUmksbXQpe3ZhciBmdD0hMTtpZihSaS52YWx1ZURlY2xhcmF0aW9uJiZlLmlzTmFtZWREZWNsYXJhdGlvbihSaS52YWx1ZURlY2xhcmF0aW9uKSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKFJpLnZhbHVlRGVjbGFyYXRpb24ubmFtZSkmJiRyLnN5bWJvbCYmJHIuc3ltYm9sLmZsYWdzJjMyKXt2YXIgSHQ9UmkudmFsdWVEZWNsYXJhdGlvbi5uYW1lLmVzY2FwZWRUZXh0LHZ0PWUuZ2V0U3ltYm9sTmFtZUZvclByaXZhdGVJZGVudGlmaWVyKCRyLnN5bWJvbCxIdCk7aWYodnQmJmJpKCRyLHZ0KSl7dmFyIGh0PWUuZmFjdG9yeS5nZXREZWNsYXJhdGlvbk5hbWUoJHIuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pLG1hPWUuZmFjdG9yeS5nZXREZWNsYXJhdGlvbk5hbWUoaGkuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pO1l0KGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbl90eXBlXzFfcmVmZXJzX3RvX2FfZGlmZmVyZW50X21lbWJlcl90aGF0X2Nhbm5vdF9iZV9hY2Nlc3NlZF9mcm9tX3dpdGhpbl90eXBlXzIsa3UoSHQpLGt1KGh0LmVzY2FwZWRUZXh0PT09XCJcIj9DOmh0KSxrdShtYS5lc2NhcGVkVGV4dD09PVwiXCI/QzptYSkpO3JldHVybn19dmFyIENhPWUuYXJyYXlGcm9tKHNiKCRyLGhpLG10LCExKSk7aWYoKCFzfHxzLmNvZGUhPT1lLkRpYWdub3N0aWNzLkNsYXNzXzBfaW5jb3JyZWN0bHlfaW1wbGVtZW50c19pbnRlcmZhY2VfMS5jb2RlJiZzLmNvZGUhPT1lLkRpYWdub3N0aWNzLkNsYXNzXzBfaW5jb3JyZWN0bHlfaW1wbGVtZW50c19jbGFzc18xX0RpZF95b3VfbWVhbl90b19leHRlbmRfMV9hbmRfaW5oZXJpdF9pdHNfbWVtYmVyc19hc19hX3N1YmNsYXNzLmNvZGUpJiYoZnQ9ITApLENhLmxlbmd0aD09PTEpe3ZhciBBbj10bihSaSk7WXQuYXBwbHkodm9pZCAwLFZlKFtlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaXNfbWlzc2luZ19pbl90eXBlXzFfYnV0X3JlcXVpcmVkX2luX3R5cGVfMixBbl0sbmYoJHIsaGkpLCExKSksZS5sZW5ndGgoUmkuZGVjbGFyYXRpb25zKSYmSWEoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShSaS5kZWNsYXJhdGlvbnNbMF0sZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9oZXJlLEFuKSksZnQmJnomJkNpKyt9ZWxzZSBjbigkcixoaSwhMSkmJihDYS5sZW5ndGg+NT9ZdChlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19taXNzaW5nX3RoZV9mb2xsb3dpbmdfcHJvcGVydGllc19mcm9tX3R5cGVfMV9Db2xvbl8yX2FuZF8zX21vcmUsT3QoJHIpLE90KGhpKSxlLm1hcChDYS5zbGljZSgwLDQpLGZ1bmN0aW9uKGduKXtyZXR1cm4gdG4oZ24pfSkuam9pbihcIiwgXCIpLENhLmxlbmd0aC00KTpZdChlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19taXNzaW5nX3RoZV9mb2xsb3dpbmdfcHJvcGVydGllc19mcm9tX3R5cGVfMV9Db2xvbl8yLE90KCRyKSxPdChoaSksZS5tYXAoQ2EsZnVuY3Rpb24oZ24pe3JldHVybiB0bihnbil9KS5qb2luKFwiLCBcIikpLGZ0JiZ6JiZDaSsrKX1mdW5jdGlvbiBVbygkcixoaSxSaSxtdCxmdCl7aWYodD09PXdhKXJldHVybiBScygkcixoaSxtdCk7dmFyIEh0PS0xO2lmKFluKGhpKSl7aWYoUGQoJHIpKXtpZighaGkudGFyZ2V0LnJlYWRvbmx5JiYodW0oJHIpfHxZbigkcikmJiRyLnRhcmdldC5yZWFkb25seSkpcmV0dXJuIDA7dmFyIHZ0PSRfKCRyKSxodD0kXyhoaSksbWE9WW4oJHIpPyRyLnRhcmdldC5jb21iaW5lZEZsYWdzJjQ6NCxDYT1oaS50YXJnZXQuY29tYmluZWRGbGFncyY0LEFuPVluKCRyKT8kci50YXJnZXQubWluTGVuZ3RoOjAsZ249aGkudGFyZ2V0Lm1pbkxlbmd0aDtpZighbWEmJnZ0PGduKXJldHVybiBSaSYmWXQoZS5EaWFnbm9zdGljcy5Tb3VyY2VfaGFzXzBfZWxlbWVudF9zX2J1dF90YXJnZXRfcmVxdWlyZXNfMSx2dCxnbiksMDtpZighQ2EmJmh0PEFuKXJldHVybiBSaSYmWXQoZS5EaWFnbm9zdGljcy5Tb3VyY2VfaGFzXzBfZWxlbWVudF9zX2J1dF90YXJnZXRfYWxsb3dzX29ubHlfMSxBbixodCksMDtpZighQ2EmJihtYXx8aHQ8dnQpKXJldHVybiBSaSYmKEFuPGduP1l0KGUuRGlhZ25vc3RpY3MuVGFyZ2V0X3JlcXVpcmVzXzBfZWxlbWVudF9zX2J1dF9zb3VyY2VfbWF5X2hhdmVfZmV3ZXIsZ24pOll0KGUuRGlhZ25vc3RpY3MuVGFyZ2V0X2FsbG93c19vbmx5XzBfZWxlbWVudF9zX2J1dF9zb3VyY2VfbWF5X2hhdmVfbW9yZSxodCkpLDA7Zm9yKHZhciBWbj14bygkciksem89eG8oaGkpLHVzPU1hdGgubWluKFluKCRyKT9MeCgkci50YXJnZXQsMTEpOjAsTHgoaGkudGFyZ2V0LDExKSksQm89TWF0aC5taW4oWW4oJHIpP1NoKCRyLnRhcmdldCwxMSk6MCxDYT9TaChoaS50YXJnZXQsMTEpOjApLElvPSEhbXQsUW89MDtRbzxodDtRbysrKXt2YXIgbHM9UW88aHQtQm8/UW86UW8rdnQtaHQsZ2k9WW4oJHIpJiYoUW88dXN8fFFvPj1odC1Cbyk/JHIudGFyZ2V0LmVsZW1lbnRGbGFnc1tsc106NCx6dD1oaS50YXJnZXQuZWxlbWVudEZsYWdzW1FvXTtpZih6dCY4JiYhKGdpJjgpKXJldHVybiBSaSYmWXQoZS5EaWFnbm9zdGljcy5Tb3VyY2VfcHJvdmlkZXNfbm9fbWF0Y2hfZm9yX3ZhcmlhZGljX2VsZW1lbnRfYXRfcG9zaXRpb25fMF9pbl90YXJnZXQsUW8pLDA7aWYoZ2kmOCYmISh6dCYxMikpcmV0dXJuIFJpJiZZdChlLkRpYWdub3N0aWNzLlZhcmlhZGljX2VsZW1lbnRfYXRfcG9zaXRpb25fMF9pbl9zb3VyY2VfZG9lc19ub3RfbWF0Y2hfZWxlbWVudF9hdF9wb3NpdGlvbl8xX2luX3RhcmdldCxscyxRbyksMDtpZih6dCYxJiYhKGdpJjEpKXJldHVybiBSaSYmWXQoZS5EaWFnbm9zdGljcy5Tb3VyY2VfcHJvdmlkZXNfbm9fbWF0Y2hfZm9yX3JlcXVpcmVkX2VsZW1lbnRfYXRfcG9zaXRpb25fMF9pbl90YXJnZXQsUW8pLDA7aWYoIShJbyYmKChnaSYxMnx8enQmMTIpJiYoSW89ITEpLElvJiYobXQ9PW51bGw/dm9pZCAwOm10LmhhcyhcIlwiK1FvKSkpKSl7dmFyIExhPVluKCRyKT9Rbzx1c3x8UW8+PWh0LUJvP2tnKFZuW2xzXSwhIShnaSZ6dCYyKSk6amgoJHIsdXMsQm8pfHx1aTpWblswXSxmYT16b1tRb10seWE9Z2kmOCYmenQmND9acyhmYSk6a2coZmEsISEoenQmMikpLE5uPW9hKExhLHlhLDMsUmksdm9pZCAwLGZ0KTtpZighTm4pcmV0dXJuIFJpJiYoaHQ+MXx8dnQ+MSkmJihRbzx1c3x8UW8+PWh0LUJvfHx2dC11cy1Cbz09PTE/bHQoZS5EaWFnbm9zdGljcy5UeXBlX2F0X3Bvc2l0aW9uXzBfaW5fc291cmNlX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfdHlwZV9hdF9wb3NpdGlvbl8xX2luX3RhcmdldCxscyxRbyk6bHQoZS5EaWFnbm9zdGljcy5UeXBlX2F0X3Bvc2l0aW9uc18wX3Rocm91Z2hfMV9pbl9zb3VyY2VfaXNfbm90X2NvbXBhdGlibGVfd2l0aF90eXBlX2F0X3Bvc2l0aW9uXzJfaW5fdGFyZ2V0LHVzLHZ0LUJvLTEsUW8pKSwwO0h0Jj1Obn19cmV0dXJuIEh0fWlmKGhpLnRhcmdldC5jb21iaW5lZEZsYWdzJjEyKXJldHVybiAwfXZhciBmbj0odD09PU9yfHx0PT09a2kpJiYhUXAoJHIpJiYhSmgoJHIpJiYhWW4oJHIpLGhuPWNiKCRyLGhpLGZuLCExKTtpZihobilyZXR1cm4gUmkmJnJjKCRyLGhpKSYmUG8oJHIsaGksaG4sZm4pLDA7aWYoUXAoaGkpKWZvcih2YXIgc249MCxsbj1HYSh1bygkciksbXQpO3NuPGxuLmxlbmd0aDtzbisrKXt2YXIgbG89bG5bc25dO2lmKCFoXyhoaSxsby5lc2NhcGVkTmFtZSkpe3ZhciBMYT1KdChsbyk7aWYoIShMYS5mbGFncyYzMjc2OCkpcmV0dXJuIFJpJiZZdChlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xLHRuKGxvKSxPdChoaSkpLDB9fWZvcih2YXIgX289dW8oaGkpLF9zPVluKCRyKSYmWW4oaGkpLFZvPTAsWW89R2EoX28sbXQpO1ZvPFlvLmxlbmd0aDtWbysrKXt2YXIgQ3M9WW9bVm9dLGljPUNzLmVzY2FwZWROYW1lO2lmKCEoQ3MuZmxhZ3MmNDE5NDMwNCkmJighX3N8fGUuaXNOdW1lcmljTGl0ZXJhbE5hbWUoaWMpfHxpYz09PVwibGVuZ3RoXCIpKXt2YXIgbG89YmkoJHIsaWMpO2lmKGxvJiZsbyE9PUNzKXt2YXIgTm49d28oJHIsaGksbG8sQ3MsbWwsUmksZnQsdD09PWxhKTtpZighTm4pcmV0dXJuIDA7SHQmPU5ufX19cmV0dXJuIEh0fWZ1bmN0aW9uIFJzKCRyLGhpLFJpKXtpZighKCRyLmZsYWdzJjUyNDI4OCYmaGkuZmxhZ3MmNTI0Mjg4KSlyZXR1cm4gMDt2YXIgbXQ9R2EoUGYoJHIpLFJpKSxmdD1HYShQZihoaSksUmkpO2lmKG10Lmxlbmd0aCE9PWZ0Lmxlbmd0aClyZXR1cm4gMDtmb3IodmFyIEh0PS0xLHZ0PTAsaHQ9bXQ7dnQ8aHQubGVuZ3RoO3Z0Kyspe3ZhciBtYT1odFt2dF0sQ2E9aF8oaGksbWEuZXNjYXBlZE5hbWUpO2lmKCFDYSlyZXR1cm4gMDt2YXIgQW49VkQobWEsQ2Esb2EpO2lmKCFBbilyZXR1cm4gMDtIdCY9QW59cmV0dXJuIEh0fWZ1bmN0aW9uIEZzKCRyLGhpLFJpLG10KXt2YXIgZnQsSHQ7aWYodD09PXdhKXJldHVybiBqZCgkcixoaSxSaSk7aWYoaGk9PT14bnx8JHI9PT14bilyZXR1cm4tMTt2YXIgdnQ9JHIuc3ltYm9sJiZTbCgkci5zeW1ib2wudmFsdWVEZWNsYXJhdGlvbiksaHQ9aGkuc3ltYm9sJiZTbChoaS5zeW1ib2wudmFsdWVEZWNsYXJhdGlvbiksbWE9b3QoJHIsdnQmJlJpPT09MT8wOlJpKSxDYT1vdChoaSxodCYmUmk9PT0xPzA6UmkpO2lmKFJpPT09MSYmbWEubGVuZ3RoJiZDYS5sZW5ndGgpe3ZhciBBbj0hIShtYVswXS5mbGFncyY0KSxnbj0hIShDYVswXS5mbGFncyY0KTtpZihBbiYmIWduKXJldHVybiBtdCYmWXQoZS5EaWFnbm9zdGljcy5DYW5ub3RfYXNzaWduX2FuX2Fic3RyYWN0X2NvbnN0cnVjdG9yX3R5cGVfdG9fYV9ub25fYWJzdHJhY3RfY29uc3RydWN0b3JfdHlwZSksMDtpZighemEobWFbMF0sQ2FbMF0sbXQpKXJldHVybiAwfXZhciBWbj0tMSx6bz1SaT09PTE/VHM6eHUsdXM9ZS5nZXRPYmplY3RGbGFncygkciksQm89ZS5nZXRPYmplY3RGbGFncyhoaSk7aWYodXMmNjQmJkJvJjY0JiYkci5zeW1ib2w9PT1oaS5zeW1ib2x8fHVzJjQmJkJvJjQmJiRyLnRhcmdldD09PWhpLnRhcmdldClmb3IodmFyIElvPTA7SW88Q2EubGVuZ3RoO0lvKyspe3ZhciBRbz1ybChtYVtJb10sQ2FbSW9dLCEwLG10LHpvKG1hW0lvXSxDYVtJb10pKTtpZighUW8pcmV0dXJuIDA7Vm4mPVFvfWVsc2UgaWYobWEubGVuZ3RoPT09MSYmQ2EubGVuZ3RoPT09MSl7dmFyIGxzPXQ9PT1sYXx8ISF5ZS5ub1N0cmljdEdlbmVyaWNDaGVja3MsZ2k9ZS5maXJzdChtYSksenQ9ZS5maXJzdChDYSk7aWYoVm49cmwoZ2ksenQsbHMsbXQsem8oZ2ksenQpKSwhVm4mJm10JiZSaT09PTEmJnVzJkJvJiYoKChmdD16dC5kZWNsYXJhdGlvbik9PT1udWxsfHxmdD09PXZvaWQgMD92b2lkIDA6ZnQua2luZCk9PT0xNzF8fCgoSHQ9Z2kuZGVjbGFyYXRpb24pPT09bnVsbHx8SHQ9PT12b2lkIDA/dm9pZCAwOkh0LmtpbmQpPT09MTcxKSl7dmFyIExhPWZ1bmN0aW9uKF9vKXtyZXR1cm4gTWwoX28sdm9pZCAwLDI2MjE0NCxSaSl9O3JldHVybiBZdChlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEsTGEoZ2kpLExhKHp0KSksWXQoZS5EaWFnbm9zdGljcy5UeXBlc19vZl9jb25zdHJ1Y3Rfc2lnbmF0dXJlc19hcmVfaW5jb21wYXRpYmxlKSxWbn19ZWxzZXtlOmZvcih2YXIgZmE9MCx5YT1DYTtmYTx5YS5sZW5ndGg7ZmErKyl7Zm9yKHZhciBObj15YVtmYV0sZm49RW8oKSxobj1tdCxzbj0wLGxuPW1hO3NuPGxuLmxlbmd0aDtzbisrKXt2YXIgbG89bG5bc25dLFFvPXJsKGxvLE5uLCEwLGhuLHpvKGxvLE5uKSk7aWYoUW8pe1ZuJj1RbyxUbihmbik7Y29udGludWUgZX1obj0hMX1yZXR1cm4gaG4mJll0KGUuRGlhZ25vc3RpY3MuVHlwZV8wX3Byb3ZpZGVzX25vX21hdGNoX2Zvcl90aGVfc2lnbmF0dXJlXzEsT3QoJHIpLE1sKE5uLHZvaWQgMCx2b2lkIDAsUmkpKSwwfX1yZXR1cm4gVm59ZnVuY3Rpb24gcmMoJHIsaGkpe3ZhciBSaT1GdCgkciwwKSxtdD1GdCgkciwxKSxmdD1QZigkcik7cmV0dXJuKFJpLmxlbmd0aHx8bXQubGVuZ3RoKSYmIWZ0Lmxlbmd0aD8hIShvdChoaSwwKS5sZW5ndGgmJlJpLmxlbmd0aHx8b3QoaGksMSkubGVuZ3RoJiZtdC5sZW5ndGgpOiEwfWZ1bmN0aW9uIHh1KCRyLGhpKXtyZXR1cm4gJHIucGFyYW1ldGVycy5sZW5ndGg9PT0wJiZoaS5wYXJhbWV0ZXJzLmxlbmd0aD09PTA/ZnVuY3Rpb24oUmksbXQpe3JldHVybiBsdChlLkRpYWdub3N0aWNzLkNhbGxfc2lnbmF0dXJlc193aXRoX25vX2FyZ3VtZW50c19oYXZlX2luY29tcGF0aWJsZV9yZXR1cm5fdHlwZXNfMF9hbmRfMSxPdChSaSksT3QobXQpKX06ZnVuY3Rpb24oUmksbXQpe3JldHVybiBsdChlLkRpYWdub3N0aWNzLkNhbGxfc2lnbmF0dXJlX3JldHVybl90eXBlc18wX2FuZF8xX2FyZV9pbmNvbXBhdGlibGUsT3QoUmkpLE90KG10KSl9fWZ1bmN0aW9uIFRzKCRyLGhpKXtyZXR1cm4gJHIucGFyYW1ldGVycy5sZW5ndGg9PT0wJiZoaS5wYXJhbWV0ZXJzLmxlbmd0aD09PTA/ZnVuY3Rpb24oUmksbXQpe3JldHVybiBsdChlLkRpYWdub3N0aWNzLkNvbnN0cnVjdF9zaWduYXR1cmVzX3dpdGhfbm9fYXJndW1lbnRzX2hhdmVfaW5jb21wYXRpYmxlX3JldHVybl90eXBlc18wX2FuZF8xLE90KFJpKSxPdChtdCkpfTpmdW5jdGlvbihSaSxtdCl7cmV0dXJuIGx0KGUuRGlhZ25vc3RpY3MuQ29uc3RydWN0X3NpZ25hdHVyZV9yZXR1cm5fdHlwZXNfMF9hbmRfMV9hcmVfaW5jb21wYXRpYmxlLE90KFJpKSxPdChtdCkpfX1mdW5jdGlvbiBybCgkcixoaSxSaSxtdCxmdCl7cmV0dXJuIE1EKFJpP1FtKCRyKTokcixSaT9RbShoaSk6aGksdD09PWtpPzg6MCxtdCxZdCxmdCxVbixHcChGYSkpfWZ1bmN0aW9uIGpkKCRyLGhpLFJpKXt2YXIgbXQ9b3QoJHIsUmkpLGZ0PW90KGhpLFJpKTtpZihtdC5sZW5ndGghPT1mdC5sZW5ndGgpcmV0dXJuIDA7Zm9yKHZhciBIdD0tMSx2dD0wO3Z0PG10Lmxlbmd0aDt2dCsrKXt2YXIgaHQ9X3kobXRbdnRdLGZ0W3Z0XSwhMSwhMSwhMSxvYSk7aWYoIWh0KXJldHVybiAwO0h0Jj1odH1yZXR1cm4gSHR9ZnVuY3Rpb24gbHAoJHIsaGksUmkpe2Zvcih2YXIgbXQ9LTEsZnQ9aGkua2V5VHlwZSxIdD0kci5mbGFncyYyMDk3MTUyP2VtKCRyKTpQZigkciksdnQ9MCxodD1IdDt2dDxodC5sZW5ndGg7dnQrKyl7dmFyIG1hPWh0W3Z0XTtpZighaEUoJHIsbWEpJiZhbihvbShtYSw4NTc2KSxmdCkpe3ZhciBDYT1tbChtYSksQW49eXJ8fENhLmZsYWdzJjMyNzY4fHxmdD09PW50fHwhKG1hLmZsYWdzJjE2Nzc3MjE2KT9DYTpLcyhDYSw1MjQyODgpLGduPW9hKEFuLGhpLnR5cGUsMyxSaSk7aWYoIWduKXJldHVybiBSaSYmWXQoZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX2luY29tcGF0aWJsZV93aXRoX2luZGV4X3NpZ25hdHVyZSx0bihtYSkpLDA7bXQmPWdufX1mb3IodmFyIFZuPTAsem89SG4oJHIpO1ZuPHpvLmxlbmd0aDtWbisrKXt2YXIgdXM9em9bVm5dO2lmKGFuKHVzLmtleVR5cGUsZnQpKXt2YXIgZ249VGwodXMsaGksUmkpO2lmKCFnbilyZXR1cm4gMDttdCY9Z259fXJldHVybiBtdH1mdW5jdGlvbiBUbCgkcixoaSxSaSl7dmFyIG10PW9hKCRyLnR5cGUsaGkudHlwZSwzLFJpKTtyZXR1cm4hbXQmJlJpJiYoJHIua2V5VHlwZT09PWhpLmtleVR5cGU/WXQoZS5EaWFnbm9zdGljcy5fMF9pbmRleF9zaWduYXR1cmVzX2FyZV9pbmNvbXBhdGlibGUsT3QoJHIua2V5VHlwZSkpOll0KGUuRGlhZ25vc3RpY3MuXzBfYW5kXzFfaW5kZXhfc2lnbmF0dXJlc19hcmVfaW5jb21wYXRpYmxlLE90KCRyLmtleVR5cGUpLE90KGhpLmtleVR5cGUpKSksbXR9ZnVuY3Rpb24gZnAoJHIsaGksUmksbXQsZnQpe2lmKHQ9PT13YSlyZXR1cm4gaWQoJHIsaGkpO2Zvcih2YXIgSHQ9SG4oaGkpLHZ0PWUuc29tZShIdCxmdW5jdGlvbihWbil7cmV0dXJuIFZuLmtleVR5cGU9PT1MaX0pLGh0PS0xLG1hPTAsQ2E9SHQ7bWE8Q2EubGVuZ3RoO21hKyspe3ZhciBBbj1DYVttYV0sZ249IVJpJiZ2dCYmQW4udHlwZS5mbGFncyYxPy0xOkJjKCRyKSYmdnQ/b2EodmwoJHIpLEFuLnR5cGUsMyxtdCk6emcoJHIsQW4sbXQsZnQpO2lmKCFnbilyZXR1cm4gMDtodCY9Z259cmV0dXJuIGh0fWZ1bmN0aW9uIHpnKCRyLGhpLFJpLG10KXt2YXIgZnQ9bnUoJHIsaGkua2V5VHlwZSk7cmV0dXJuIGZ0P1RsKGZ0LGhpLFJpKTohKG10JjEpJiZxaCgkcik/bHAoJHIsaGksUmkpOihSaSYmWXQoZS5EaWFnbm9zdGljcy5JbmRleF9zaWduYXR1cmVfZm9yX3R5cGVfMF9pc19taXNzaW5nX2luX3R5cGVfMSxPdChoaS5rZXlUeXBlKSxPdCgkcikpLDApfWZ1bmN0aW9uIGlkKCRyLGhpKXt2YXIgUmk9SG4oJHIpLG10PUhuKGhpKTtpZihSaS5sZW5ndGghPT1tdC5sZW5ndGgpcmV0dXJuIDA7Zm9yKHZhciBmdD0wLEh0PW10O2Z0PEh0Lmxlbmd0aDtmdCsrKXt2YXIgdnQ9SHRbZnRdLGh0PXNzKCRyLHZ0LmtleVR5cGUpO2lmKCEoaHQmJm9hKGh0LnR5cGUsdnQudHlwZSwzKSYmaHQuaXNSZWFkb25seT09PXZ0LmlzUmVhZG9ubHkpKXJldHVybiAwfXJldHVybi0xfWZ1bmN0aW9uIHphKCRyLGhpLFJpKXtpZighJHIuZGVjbGFyYXRpb258fCFoaS5kZWNsYXJhdGlvbilyZXR1cm4hMDt2YXIgbXQ9ZS5nZXRTZWxlY3RlZEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MoJHIuZGVjbGFyYXRpb24sMjQpLGZ0PWUuZ2V0U2VsZWN0ZWRFZmZlY3RpdmVNb2RpZmllckZsYWdzKGhpLmRlY2xhcmF0aW9uLDI0KTtyZXR1cm4gZnQ9PT04fHxmdD09PTE2JiZtdCE9PTh8fGZ0IT09MTYmJiFtdD8hMDooUmkmJll0KGUuRGlhZ25vc3RpY3MuQ2Fubm90X2Fzc2lnbl9hXzBfY29uc3RydWN0b3JfdHlwZV90b19hXzFfY29uc3RydWN0b3JfdHlwZSx2XyhtdCksdl8oZnQpKSwhMSl9fWZ1bmN0aW9uIEpEKHIpe2lmKHIuZmxhZ3MmMTYpcmV0dXJuITE7aWYoci5mbGFncyYzMTQ1NzI4KXJldHVybiEhZS5mb3JFYWNoKHIudHlwZXMsSkQpO2lmKHIuZmxhZ3MmNDY1ODI5ODg4KXt2YXIgaT1RXyhyKTtpZihpJiZpIT09cilyZXR1cm4gSkQoaSl9cmV0dXJuIFZsKHIpfHwhIShyLmZsYWdzJjEzNDIxNzcyOCl9ZnVuY3Rpb24gREUocixpKXtyZXR1cm4gWW4ocikmJlluKGkpP2UuZW1wdHlBcnJheTp1byhpKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGpEKGRhKHIsdC5lc2NhcGVkTmFtZSksSnQodCkpfSl9ZnVuY3Rpb24gakQocixpKXtyZXR1cm4hIXImJiEhaSYmZnMociwzMjc2OCkmJiEhV2goaSl9ZnVuY3Rpb24gbHcocil7cmV0dXJuIHVvKHIpLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gV2goSnQoaSkpfSl9ZnVuY3Rpb24gYkUocixpLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD1PRCksYkEocixpLHQsITApfHxrTChyLGkpfHxBTChyLGkpfHxOTChyLGkpfHxQTChyLGkpfWZ1bmN0aW9uIFVEKHIsaSx0LG8scyl7Zm9yKHZhciB1PXIudHlwZXMubWFwKGZ1bmN0aW9uKFppKXt9KSxoPTAsej1pO2g8ei5sZW5ndGg7aCsrKXt2YXIgbWU9eltoXSxNZT1tZVswXSwkZT1tZVsxXSx0cj0kdihyLCRlKTtpZighKHMmJnRyJiZlLmdldENoZWNrRmxhZ3ModHIpJjE2KSlmb3IodmFyIGRyPTAsRHI9MCxRcj1yLnR5cGVzO0RyPFFyLmxlbmd0aDtEcisrKXt2YXIgbGk9UXJbRHJdLFRpPWRhKGxpLCRlKTtUaSYmdChNZSgpLFRpKT91W2RyXT11W2RyXT09PXZvaWQgMD8hMDp1W2RyXTp1W2RyXT0hMSxkcisrfX12YXIgQ2k9dS5pbmRleE9mKCEwKTtpZihDaT09PS0xKXJldHVybiBvO2Zvcih2YXIgJGk9dS5pbmRleE9mKCEwLENpKzEpOyRpIT09LTE7KXtpZighd2Yoci50eXBlc1tDaV0sci50eXBlc1skaV0pKXJldHVybiBvOyRpPXUuaW5kZXhPZighMCwkaSsxKX1yZXR1cm4gci50eXBlc1tDaV19ZnVuY3Rpb24gU0Uocil7aWYoci5mbGFncyY1MjQyODgpe3ZhciBpPVJ1KHIpO3JldHVybiBpLmNhbGxTaWduYXR1cmVzLmxlbmd0aD09PTAmJmkuY29uc3RydWN0U2lnbmF0dXJlcy5sZW5ndGg9PT0wJiZpLmluZGV4SW5mb3MubGVuZ3RoPT09MCYmaS5wcm9wZXJ0aWVzLmxlbmd0aD4wJiZlLmV2ZXJ5KGkucHJvcGVydGllcyxmdW5jdGlvbih0KXtyZXR1cm4hISh0LmZsYWdzJjE2Nzc3MjE2KX0pfXJldHVybiByLmZsYWdzJjIwOTcxNTI/ZS5ldmVyeShyLnR5cGVzLFNFKTohMX1mdW5jdGlvbiBmdyhyLGksdCl7Zm9yKHZhciBvPTAscz11byhyKTtvPHMubGVuZ3RoO28rKyl7dmFyIHU9c1tvXTtpZihSYihpLHUuZXNjYXBlZE5hbWUsdCkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gekQocil7cmV0dXJuIHI9PT1QaXx8cj09PVFpfHxyLm9iamVjdEZsYWdzJjg/ZGU6eEUoci5zeW1ib2wsci50eXBlUGFyYW1ldGVycyl9ZnVuY3Rpb24gVEUocil7cmV0dXJuIHhFKHIsQWEocikudHlwZVBhcmFtZXRlcnMpfWZ1bmN0aW9uIHhFKHIsaSl7aT09PXZvaWQgMCYmKGk9ZS5lbXB0eUFycmF5KTt2YXIgdD1BYShyKTtpZighdC52YXJpYW5jZXMpe2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJjaGVja1R5cGVzXCIsXCJnZXRWYXJpYW5jZXNXb3JrZXJcIix7YXJpdHk6aS5sZW5ndGgsaWQ6ZnUoZ28ocikpfSksdC52YXJpYW5jZXM9ZS5lbXB0eUFycmF5O2Zvcih2YXIgbz1bXSxzPWZ1bmN0aW9uKG1lKXt2YXIgTWU9V0QobWUpLCRlPU1lJjY1NTM2P01lJjMyNzY4PzA6MTpNZSYzMjc2OD8yOnZvaWQgMDtpZigkZT09PXZvaWQgMCl7dmFyIHRyPSExLGRyPSExLERyPWhyO2hyPWZ1bmN0aW9uKFRpKXtyZXR1cm4gVGk/ZHI9ITA6dHI9ITB9O3ZhciBRcj1seShyLG1lLFJuKSxsaT1seShyLG1lLERhKTskZT0oYW8obGksUXIpPzE6MCl8KGFvKFFyLGxpKT8yOjApLCRlPT09MyYmYW8obHkocixtZSxibyksUXIpJiYoJGU9NCksaHI9RHIsKHRyfHxkcikmJih0ciYmKCRlfD04KSxkciYmKCRlfD0xNikpfW8ucHVzaCgkZSl9LHU9MCxoPWk7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07cyh6KX10LnZhcmlhbmNlcz1vLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpfXJldHVybiB0LnZhcmlhbmNlc31mdW5jdGlvbiBseShyLGksdCl7dmFyIG89WWQoaSx0KSxzPWdvKHIpO2lmKG5uKHMpKXJldHVybiBzO3ZhciB1PXIuZmxhZ3MmNTI0Mjg4P2FtKHIsZV8oQWEocikudHlwZVBhcmFtZXRlcnMsbykpOllmKHMsZV8ocy50eXBlUGFyYW1ldGVycyxvKSk7cmV0dXJuIEplLmFkZChmdSh1KSksdX1mdW5jdGlvbiBGaChyKXtyZXR1cm4gSmUuaGFzKGZ1KHIpKX1mdW5jdGlvbiBXRChyKXt2YXIgaSx0O3JldHVybihlLnNvbWUoKGk9ci5zeW1ib2wpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIGUuaGFzU3ludGFjdGljTW9kaWZpZXIobywzMjc2OCl9KT8zMjc2ODowKXwoZS5zb21lKCh0PXIuc3ltYm9sKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBlLmhhc1N5bnRhY3RpY01vZGlmaWVyKG8sNjU1MzYpfSk/NjU1MzY6MCl9ZnVuY3Rpb24gX3cocixpKXtmb3IodmFyIHQ9MDt0PGkubGVuZ3RoO3QrKylpZigoaVt0XSY3KT09PTEmJnJbdF0uZmxhZ3MmMTYzODQpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcHcocil7cmV0dXJuIHIuZmxhZ3MmMjYyMTQ0JiYhVGMocil9ZnVuY3Rpb24gZHcocil7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyhyKSY0KSYmIXIubm9kZX1mdW5jdGlvbiBNaChyKXtyZXR1cm4gZHcocikmJmUuc29tZSh4byhyKSxmdW5jdGlvbihpKXtyZXR1cm4hIShpLmZsYWdzJjI2MjE0NCl8fE1oKGkpfSl9ZnVuY3Rpb24gZ3cocixpLHQsbyl7dmFyIHM9W10sdT1cIlwiLGg9bWUociwwKSx6PW1lKGksMCk7cmV0dXJuXCJcIi5jb25jYXQodSkuY29uY2F0KGgsXCIsXCIpLmNvbmNhdCh6KS5jb25jYXQodCk7ZnVuY3Rpb24gbWUoTWUsJGUpeyRlPT09dm9pZCAwJiYoJGU9MCk7Zm9yKHZhciB0cj1cIlwiK01lLnRhcmdldC5pZCxkcj0wLERyPXhvKE1lKTtkcjxEci5sZW5ndGg7ZHIrKyl7dmFyIFFyPURyW2RyXTtpZihRci5mbGFncyYyNjIxNDQpe2lmKG98fHB3KFFyKSl7dmFyIGxpPXMuaW5kZXhPZihRcik7bGk8MCYmKGxpPXMubGVuZ3RoLHMucHVzaChRcikpLHRyKz1cIj1cIitsaTtjb250aW51ZX11PVwiKlwifWVsc2UgaWYoJGU8NCYmTWgoUXIpKXt0cis9XCI8XCIrbWUoUXIsJGUrMSkrXCI+XCI7Y29udGludWV9dHIrPVwiLVwiK1FyLmlkfXJldHVybiB0cn19ZnVuY3Rpb24gcUQocixpLHQsbyxzKXtpZihvPT09d2EmJnIuaWQ+aS5pZCl7dmFyIHU9cjtyPWksaT11fXZhciBoPXQ/XCI6XCIrdDpcIlwiO3JldHVybiBNaChyKSYmTWgoaSk/Z3cocixpLGgscyk6XCJcIi5jb25jYXQoci5pZCxcIixcIikuY29uY2F0KGkuaWQpLmNvbmNhdChoKX1mdW5jdGlvbiBmeShyLGkpe2lmKGUuZ2V0Q2hlY2tGbGFncyhyKSY2KXtmb3IodmFyIHQ9MCxvPXIuY29udGFpbmluZ1R5cGUudHlwZXM7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF0sdT1iaShzLHIuZXNjYXBlZE5hbWUpLGg9dSYmZnkodSxpKTtpZihoKXJldHVybiBofXJldHVybn1yZXR1cm4gaShyKX1mdW5jdGlvbiBaZChyKXtyZXR1cm4gci5wYXJlbnQmJnIucGFyZW50LmZsYWdzJjMyP2dvKFlzKHIpKTp2b2lkIDB9ZnVuY3Rpb24gTGgocil7dmFyIGk9WmQociksdD1pJiZRYyhpKVswXTtyZXR1cm4gdCYmZGEodCxyLmVzY2FwZWROYW1lKX1mdW5jdGlvbiBtdyhyLGkpe3JldHVybiBmeShyLGZ1bmN0aW9uKHQpe3ZhciBvPVpkKHQpO3JldHVybiBvP2xmKG8saSk6ITF9KX1mdW5jdGlvbiB2dyhyLGkpe3JldHVybiFmeShpLGZ1bmN0aW9uKHQpe3JldHVybiBlLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2wodCkmMTY/IW13KHIsWmQodCkpOiExfSl9ZnVuY3Rpb24gRUUocixpLHQpe3JldHVybiBmeShpLGZ1bmN0aW9uKG8pe3JldHVybiBlLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2wobyx0KSYxNj8hbGYocixaZChvKSk6ITF9KT92b2lkIDA6cn1mdW5jdGlvbiBSaChyLGksdCxvKXtpZihvPT09dm9pZCAwJiYobz0zKSx0Pj1vKWZvcih2YXIgcz1vdihyKSx1PTAsaD0wLHo9MDt6PHQ7eisrKXt2YXIgbWU9aVt6XTtpZihvdihtZSk9PT1zKXtpZihtZS5pZD49aCYmKHUrKyx1Pj1vKSlyZXR1cm4hMDtoPW1lLmlkfX1yZXR1cm4hMX1mdW5jdGlvbiBvdihyKXtpZihyLmZsYWdzJjUyNDI4OCYmIWxiKHIpKXtpZihlLmdldE9iamVjdEZsYWdzKHIpJiY0JiZyLm5vZGUpcmV0dXJuIHIubm9kZTtpZihyLnN5bWJvbCYmIShlLmdldE9iamVjdEZsYWdzKHIpJjE2JiZyLnN5bWJvbC5mbGFncyYzMikpcmV0dXJuIHIuc3ltYm9sO2lmKFluKHIpKXJldHVybiByLnRhcmdldH1pZihyLmZsYWdzJjI2MjE0NClyZXR1cm4gci5zeW1ib2w7aWYoci5mbGFncyY4Mzg4NjA4KXtkbyByPXIub2JqZWN0VHlwZTt3aGlsZShyLmZsYWdzJjgzODg2MDgpO3JldHVybiByfXJldHVybiByLmZsYWdzJjE2Nzc3MjE2P3Iucm9vdDpyfWZ1bmN0aW9uIHl3KHIsaSl7cmV0dXJuIFZEKHIsaSxhdikhPT0wfWZ1bmN0aW9uIFZEKHIsaSx0KXtpZihyPT09aSlyZXR1cm4tMTt2YXIgbz1lLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2wocikmMjQscz1lLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2woaSkmMjQ7aWYobyE9PXMpcmV0dXJuIDA7aWYobyl7aWYoamcocikhPT1qZyhpKSlyZXR1cm4gMH1lbHNlIGlmKChyLmZsYWdzJjE2Nzc3MjE2KSE9PShpLmZsYWdzJjE2Nzc3MjE2KSlyZXR1cm4gMDtyZXR1cm4gWnUocikhPT1adShpKT8wOnQoSnQociksSnQoaSkpfWZ1bmN0aW9uIGh3KHIsaSx0KXt2YXIgbz1XYyhyKSxzPVdjKGkpLHU9SGwociksaD1IbChpKSx6PVhsKHIpLG1lPVhsKGkpO3JldHVybiEhKG89PT1zJiZ1PT09aCYmej09PW1lfHx0JiZ1PD1oKX1mdW5jdGlvbiBfeShyLGksdCxvLHMsdSl7aWYocj09PWkpcmV0dXJuLTE7aWYoIWh3KHIsaSx0KXx8ZS5sZW5ndGgoci50eXBlUGFyYW1ldGVycykhPT1lLmxlbmd0aChpLnR5cGVQYXJhbWV0ZXJzKSlyZXR1cm4gMDtpZihpLnR5cGVQYXJhbWV0ZXJzKXtmb3IodmFyIGg9VWMoci50eXBlUGFyYW1ldGVycyxpLnR5cGVQYXJhbWV0ZXJzKSx6PTA7ejxpLnR5cGVQYXJhbWV0ZXJzLmxlbmd0aDt6Kyspe3ZhciBtZT1yLnR5cGVQYXJhbWV0ZXJzW3pdLE1lPWkudHlwZVBhcmFtZXRlcnNbel07aWYoIShtZT09PU1lfHx1KHVuKHRtKG1lKSxoKXx8Z3IsdG0oTWUpfHxncikmJnUodW4oRF8obWUpLGgpfHxncixEXyhNZSl8fGdyKSkpcmV0dXJuIDB9cj1UZyhyLGgsITApfXZhciAkZT0tMTtpZighbyl7dmFyIHRyPVRfKHIpO2lmKHRyKXt2YXIgZHI9VF8oaSk7aWYoZHIpe3ZhciBEcj11KHRyLGRyKTtpZighRHIpcmV0dXJuIDA7JGUmPURyfX19Zm9yKHZhciBRcj1XYyhpKSx6PTA7ejxRcjt6Kyspe3ZhciBtZT0kdShyLHopLE1lPSR1KGkseiksRHI9dShNZSxtZSk7aWYoIURyKXJldHVybiAwOyRlJj1Ecn1pZighcyl7dmFyIGxpPVljKHIpLFRpPVljKGkpOyRlJj1saXx8VGk/RHcobGksVGksdSk6dSh5byhyKSx5byhpKSl9cmV0dXJuICRlfWZ1bmN0aW9uIER3KHIsaSx0KXtyZXR1cm4gciYmaSYmX0QocixpKT9yLnR5cGU9PT1pLnR5cGU/LTE6ci50eXBlJiZpLnR5cGU/dChyLnR5cGUsaS50eXBlKTowOjB9ZnVuY3Rpb24gYncocil7Zm9yKHZhciBpLHQ9MCxvPXI7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF0sdT1LbChzKTtpZihpfHwoaT11KSx1PT09c3x8dSE9PWkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gQ0Uocil7cmV0dXJuIHIubGVuZ3RoPT09MT9yWzBdOmJ3KHIpP1BhKHIpOmUucmVkdWNlTGVmdChyLGZ1bmN0aW9uKGksdCl7cmV0dXJuIEVfKGksdCk/dDppfSl9ZnVuY3Rpb24gU3cocil7aWYoIVllKXJldHVybiBDRShyKTt2YXIgaT1lLmZpbHRlcihyLGZ1bmN0aW9uKHQpe3JldHVybiEodC5mbGFncyY5ODMwNCl9KTtyZXR1cm4gaS5sZW5ndGg/VWgoQ0UoaSksd0UocikmOTgzMDQpOlBhKHIsMil9ZnVuY3Rpb24gVHcocil7cmV0dXJuIGUucmVkdWNlTGVmdChyLGZ1bmN0aW9uKGksdCl7cmV0dXJuIEVfKHQsaSk/dDppfSl9ZnVuY3Rpb24gVHUocil7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyhyKSY0KSYmKHIudGFyZ2V0PT09UGl8fHIudGFyZ2V0PT09UWkpfWZ1bmN0aW9uIHVtKHIpe3JldHVybiEhKGUuZ2V0T2JqZWN0RmxhZ3MocikmNCkmJnIudGFyZ2V0PT09UWl9ZnVuY3Rpb24gUGQocil7cmV0dXJuIFR1KHIpfHxZbihyKX1mdW5jdGlvbiBCaChyKXtyZXR1cm4gVHUocikmJiF1bShyKXx8WW4ocikmJiFyLnRhcmdldC5yZWFkb25seX1mdW5jdGlvbiBLRChyKXtyZXR1cm4gVHUocik/eG8ocilbMF06dm9pZCAwfWZ1bmN0aW9uIHNwKHIpe3JldHVybiBUdShyKXx8IShyLmZsYWdzJjk4MzA0KSYmYW8ocixHbyl9ZnVuY3Rpb24gR0Qocil7aWYoISghKGUuZ2V0T2JqZWN0RmxhZ3MocikmNCl8fCEoZS5nZXRPYmplY3RGbGFncyhyLnRhcmdldCkmMykpKXtpZihlLmdldE9iamVjdEZsYWdzKHIpJjMzNTU0NDMyKXJldHVybiBlLmdldE9iamVjdEZsYWdzKHIpJjY3MTA4ODY0P3IuY2FjaGVkRXF1aXZhbGVudEJhc2VUeXBlOnZvaWQgMDtyLm9iamVjdEZsYWdzfD0zMzU1NDQzMjt2YXIgaT1yLnRhcmdldDtpZihlLmdldE9iamVjdEZsYWdzKGkpJjEpe3ZhciB0PWZnKGkpO2lmKHQmJnQuZXhwcmVzc2lvbi5raW5kIT09NzkmJnQuZXhwcmVzc2lvbi5raW5kIT09MjA2KXJldHVybn12YXIgbz1RYyhpKTtpZihvLmxlbmd0aD09PTEmJiFOZihyLnN5bWJvbCkuc2l6ZSl7dmFyIHM9ZS5sZW5ndGgoaS50eXBlUGFyYW1ldGVycyk/dW4ob1swXSxVYyhpLnR5cGVQYXJhbWV0ZXJzLHhvKHIpLnNsaWNlKDAsaS50eXBlUGFyYW1ldGVycy5sZW5ndGgpKSk6b1swXTtyZXR1cm4gZS5sZW5ndGgoeG8ocikpPmUubGVuZ3RoKGkudHlwZVBhcmFtZXRlcnMpJiYocz1SYyhzLGUubGFzdCh4byhyKSkpKSxyLm9iamVjdEZsYWdzfD02NzEwODg2NCxyLmNhY2hlZEVxdWl2YWxlbnRCYXNlVHlwZT1zfX19ZnVuY3Rpb24ga0Uocil7cmV0dXJuIFllP3I9PT1uYTpyPT09dml9ZnVuY3Rpb24gSmgocil7dmFyIGk9S0Qocik7cmV0dXJuISFpJiZrRShpKX1mdW5jdGlvbiBFZyhyKXtyZXR1cm4gWW4ocil8fCEhYmkocixcIjBcIil9ZnVuY3Rpb24gQUUocil7cmV0dXJuIHNwKHIpfHxFZyhyKX1mdW5jdGlvbiB4dyhyLGkpe3ZhciB0PWRhKHIsXCJcIitpKTtpZih0KXJldHVybiB0O2lmKGdmKHIsWW4pKXJldHVybiBTcyhyLGZ1bmN0aW9uKG8pe3JldHVybiBzdihvKXx8VHJ9KX1mdW5jdGlvbiBFdyhyKXtyZXR1cm4hKHIuZmxhZ3MmMjQwNTEyKX1mdW5jdGlvbiBWbChyKXtyZXR1cm4hIShyLmZsYWdzJjEwOTQ0MCl9ZnVuY3Rpb24gTkUocil7cmV0dXJuIHIuZmxhZ3MmMjA5NzE1Mj9lLnNvbWUoci50eXBlcyxWbCk6ISEoci5mbGFncyYxMDk0NDApfWZ1bmN0aW9uIEN3KHIpe3JldHVybiByLmZsYWdzJjIwOTcxNTImJmUuZmluZChyLnR5cGVzLFZsKXx8cn1mdW5jdGlvbiBDZyhyKXtyZXR1cm4gci5mbGFncyYxNj8hMDpyLmZsYWdzJjEwNDg1NzY/ci5mbGFncyYxMDI0PyEwOmUuZXZlcnkoci50eXBlcyxWbCk6Vmwocil9ZnVuY3Rpb24gS2wocil7cmV0dXJuIHIuZmxhZ3MmMTAyND9jYyhyKTpyLmZsYWdzJjQwMjY1MzMxMj9MaTpyLmZsYWdzJjI1Nj9udDpyLmZsYWdzJjIwNDg/TXQ6ci5mbGFncyY1MTI/SWk6ci5mbGFncyYxMDQ4NTc2P1NzKHIsS2wpOnJ9ZnVuY3Rpb24gSHAocil7cmV0dXJuIHIuZmxhZ3MmMTAyNCYmS3Aocik/Y2Mocik6ci5mbGFncyYxMjgmJktwKHIpP0xpOnIuZmxhZ3MmMjU2JiZLcChyKT9udDpyLmZsYWdzJjIwNDgmJktwKHIpP010OnIuZmxhZ3MmNTEyJiZLcChyKT9JaTpyLmZsYWdzJjEwNDg1NzY/U3MocixIcCk6cn1mdW5jdGlvbiBQRShyKXtyZXR1cm4gci5mbGFncyY4MTkyP0tpOnIuZmxhZ3MmMTA0ODU3Nj9TcyhyLFBFKTpyfWZ1bmN0aW9uIEhEKHIsaSl7cmV0dXJuIE4wKHIsaSl8fChyPVBFKEhwKHIpKSkscn1mdW5jdGlvbiBrdyhyLGksdCl7aWYociYmVmwocikpe3ZhciBvPWk/dD9UdihpKTppOnZvaWQgMDtyPUhEKHIsbyl9cmV0dXJuIHJ9ZnVuY3Rpb24gWEQocixpLHQsbyl7aWYociYmVmwocikpe3ZhciBzPWk/SmcodCxpLG8pOnZvaWQgMDtyPUhEKHIscyl9cmV0dXJuIHJ9ZnVuY3Rpb24gWW4ocil7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyhyKSY0JiZyLnRhcmdldC5vYmplY3RGbGFncyY4KX1mdW5jdGlvbiBsbShyKXtyZXR1cm4gWW4ocikmJiEhKHIudGFyZ2V0LmNvbWJpbmVkRmxhZ3MmOCl9ZnVuY3Rpb24gSUUocil7cmV0dXJuIGxtKHIpJiZyLnRhcmdldC5lbGVtZW50RmxhZ3MubGVuZ3RoPT09MX1mdW5jdGlvbiBzdihyKXtyZXR1cm4gamgocixyLnRhcmdldC5maXhlZExlbmd0aCl9ZnVuY3Rpb24gQXcocil7dmFyIGk9c3Yocik7cmV0dXJuIGkmJlpzKGkpfWZ1bmN0aW9uIGpoKHIsaSx0LG8pe3Q9PT12b2lkIDAmJih0PTApLG89PT12b2lkIDAmJihvPSExKTt2YXIgcz0kXyhyKS10O2lmKGk8cyl7Zm9yKHZhciB1PXhvKHIpLGg9W10sej1pO3o8czt6Kyspe3ZhciBtZT11W3pdO2gucHVzaChyLnRhcmdldC5lbGVtZW50RmxhZ3Nbel0mOD9KYyhtZSxudCk6bWUpfXJldHVybiBvP0RvKGgpOlBhKGgpfX1mdW5jdGlvbiBOdyhyLGkpe3JldHVybiAkXyhyKT09PSRfKGkpJiZlLmV2ZXJ5KHIudGFyZ2V0LmVsZW1lbnRGbGFncyxmdW5jdGlvbih0LG8pe3JldHVybih0JjEyKT09PShpLnRhcmdldC5lbGVtZW50RmxhZ3Nbb10mMTIpfSl9ZnVuY3Rpb24gUUQocil7dmFyIGk9ci52YWx1ZTtyZXR1cm4gaS5iYXNlMTBWYWx1ZT09PVwiMFwifWZ1bmN0aW9uIHdFKHIpe2Zvcih2YXIgaT0wLHQ9MCxvPXI7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aXw9anUocyl9cmV0dXJuIGl9ZnVuY3Rpb24ganUocil7cmV0dXJuIHIuZmxhZ3MmMTA0ODU3Nj93RShyLnR5cGVzKTpyLmZsYWdzJjEyOD9yLnZhbHVlPT09XCJcIj8xMjg6MDpyLmZsYWdzJjI1Nj9yLnZhbHVlPT09MD8yNTY6MDpyLmZsYWdzJjIwNDg/UUQocik/MjA0ODowOnIuZmxhZ3MmNTEyP3I9PT14dHx8cj09PXV0PzUxMjowOnIuZmxhZ3MmMTE3NzI0fWZ1bmN0aW9uIE9FKHIpe3JldHVybiBqdShyKSYxMTc2MzI/ZWMocixmdW5jdGlvbihpKXtyZXR1cm4hKGp1KGkpJjExNzYzMil9KTpyfWZ1bmN0aW9uIFB3KHIpe3JldHVybiBTcyhyLEl3KX1mdW5jdGlvbiBJdyhyKXtyZXR1cm4gci5mbGFncyY0P1JmOnIuZmxhZ3MmOD9hbDpyLmZsYWdzJjY0P0pvOnI9PT11dHx8cj09PXh0fHxyLmZsYWdzJjExNDY5MXx8ci5mbGFncyYxMjgmJnIudmFsdWU9PT1cIlwifHxyLmZsYWdzJjI1NiYmci52YWx1ZT09PTB8fHIuZmxhZ3MmMjA0OCYmUUQocik/cjp1aX1mdW5jdGlvbiBVaChyLGkpe3ZhciB0PWkmfnIuZmxhZ3MmOTgzMDQ7cmV0dXJuIHQ9PT0wP3I6UGEodD09PTMyNzY4P1tyLFRyXTp0PT09NjU1MzY/W3IsV2ldOltyLFRyLFdpXSl9ZnVuY3Rpb24gaV8ocixpKXtyZXR1cm4gaT09PXZvaWQgMCYmKGk9ITEpLGUuRGVidWcuYXNzZXJ0KFllKSxyLmZsYWdzJjMyNzY4P3I6UGEoW3IsaT9ZaTpUcl0pfWZ1bmN0aW9uIHd3KHIpe3ZhciBpPUtzKHIsMjA5NzE1Mik7cmV0dXJuIHlzfHwoeXM9WW0oXCJOb25OdWxsYWJsZVwiLDUyNDI4OCx2b2lkIDApfHx4ZSkseXMhPT14ZT9hbSh5cyxbaV0pOml9ZnVuY3Rpb24gQ18ocil7cmV0dXJuIFllP3d3KHIpOnJ9ZnVuY3Rpb24gRkUocil7cmV0dXJuIFllP1BhKFtyLFVpXSk6cn1mdW5jdGlvbiBZRChyKXtyZXR1cm4gWWU/WmgocixVaSk6cn1mdW5jdGlvbiB6aChyLGksdCl7cmV0dXJuIHQ/ZS5pc091dGVybW9zdE9wdGlvbmFsQ2hhaW4oaSk/aV8ocik6RkUocik6cn1mdW5jdGlvbiBjdihyLGkpe3JldHVybiBlLmlzRXhwcmVzc2lvbk9mT3B0aW9uYWxDaGFpblJvb3QoaSk/Q18ocik6ZS5pc09wdGlvbmFsQ2hhaW4oaSk/WUQocik6cn1mdW5jdGlvbiBrZyhyLGkpe3JldHVybiB5ciYmaT9aaChyLFlpKTpyfWZ1bmN0aW9uIFdoKHIpe3JldHVybiB5ciYmKHI9PT1ZaXx8ci5mbGFncyYxMDQ4NTc2JiYkZihyLnR5cGVzLFlpKSl9ZnVuY3Rpb24gJEQocil7cmV0dXJuIHlyP1poKHIsWWkpOktzKHIsNTI0Mjg4KX1mdW5jdGlvbiBPdyhyLGkpe3JldHVybihyLmZsYWdzJjUyNCkhPT0wJiYoaS5mbGFncyYyOCkhPT0wfWZ1bmN0aW9uIHFoKHIpe3JldHVybiByLmZsYWdzJjIwOTcxNTI/ZS5ldmVyeShyLnR5cGVzLHFoKTohIShyLnN5bWJvbCYmKHIuc3ltYm9sLmZsYWdzJjcwNDApIT09MCYmIShyLnN5bWJvbC5mbGFncyYzMikmJiFSUyhyKSl8fCEhKGUuZ2V0T2JqZWN0RmxhZ3MocikmMTAyNCYmcWgoci5zb3VyY2UpKX1mdW5jdGlvbiBlZyhyLGkpe3ZhciB0PW9vKHIuZmxhZ3Msci5lc2NhcGVkTmFtZSxlLmdldENoZWNrRmxhZ3MocikmOCk7dC5kZWNsYXJhdGlvbnM9ci5kZWNsYXJhdGlvbnMsdC5wYXJlbnQ9ci5wYXJlbnQsdC50eXBlPWksdC50YXJnZXQ9cixyLnZhbHVlRGVjbGFyYXRpb24mJih0LnZhbHVlRGVjbGFyYXRpb249ci52YWx1ZURlY2xhcmF0aW9uKTt2YXIgbz1BYShyKS5uYW1lVHlwZTtyZXR1cm4gbyYmKHQubmFtZVR5cGU9byksdH1mdW5jdGlvbiBGdyhyLGkpe2Zvcih2YXIgdD1lLmNyZWF0ZVN5bWJvbFRhYmxlKCksbz0wLHM9UGYocik7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb10saD1KdCh1KSx6PWkoaCk7dC5zZXQodS5lc2NhcGVkTmFtZSx6PT09aD91OmVnKHUseikpfXJldHVybiB0fWZ1bmN0aW9uIGZtKHIpe2lmKCEoUXAocikmJmUuZ2V0T2JqZWN0RmxhZ3MocikmODE5MikpcmV0dXJuIHI7dmFyIGk9ci5yZWd1bGFyVHlwZTtpZihpKXJldHVybiBpO3ZhciB0PXIsbz1GdyhyLGZtKSxzPXJzKHQuc3ltYm9sLG8sdC5jYWxsU2lnbmF0dXJlcyx0LmNvbnN0cnVjdFNpZ25hdHVyZXMsdC5pbmRleEluZm9zKTtyZXR1cm4gcy5mbGFncz10LmZsYWdzLHMub2JqZWN0RmxhZ3N8PXQub2JqZWN0RmxhZ3MmLTgxOTMsci5yZWd1bGFyVHlwZT1zLHN9ZnVuY3Rpb24gTUUocixpLHQpe3JldHVybntwYXJlbnQ6cixwcm9wZXJ0eU5hbWU6aSxzaWJsaW5nczp0LHJlc29sdmVkUHJvcGVydGllczp2b2lkIDB9fWZ1bmN0aW9uIExFKHIpe2lmKCFyLnNpYmxpbmdzKXtmb3IodmFyIGk9W10sdD0wLG89TEUoci5wYXJlbnQpO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdO2lmKFFwKHMpKXt2YXIgdT1oXyhzLHIucHJvcGVydHlOYW1lKTt1JiZPZChKdCh1KSxmdW5jdGlvbihoKXtpLnB1c2goaCl9KX19ci5zaWJsaW5ncz1pfXJldHVybiByLnNpYmxpbmdzfWZ1bmN0aW9uIE13KHIpe2lmKCFyLnJlc29sdmVkUHJvcGVydGllcyl7Zm9yKHZhciBpPW5ldyBlLk1hcCx0PTAsbz1MRShyKTt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpZihRcChzKSYmIShlLmdldE9iamVjdEZsYWdzKHMpJjIwOTcxNTIpKWZvcih2YXIgdT0wLGg9dW8ocyk7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07aS5zZXQoei5lc2NhcGVkTmFtZSx6KX19ci5yZXNvbHZlZFByb3BlcnRpZXM9ZS5hcnJheUZyb20oaS52YWx1ZXMoKSl9cmV0dXJuIHIucmVzb2x2ZWRQcm9wZXJ0aWVzfWZ1bmN0aW9uIEx3KHIsaSl7aWYoIShyLmZsYWdzJjQpKXJldHVybiByO3ZhciB0PUp0KHIpLG89aSYmTUUoaSxyLmVzY2FwZWROYW1lLHZvaWQgMCkscz1aRCh0LG8pO3JldHVybiBzPT09dD9yOmVnKHIscyl9ZnVuY3Rpb24gUncocil7dmFyIGk9V3IuZ2V0KHIuZXNjYXBlZE5hbWUpO2lmKGkpcmV0dXJuIGk7dmFyIHQ9ZWcocixZaSk7cmV0dXJuIHQuZmxhZ3N8PTE2Nzc3MjE2LFdyLnNldChyLmVzY2FwZWROYW1lLHQpLHR9ZnVuY3Rpb24gQncocixpKXtmb3IodmFyIHQ9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpLG89MCxzPVBmKHIpO288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dO3Quc2V0KHUuZXNjYXBlZE5hbWUsTHcodSxpKSl9aWYoaSlmb3IodmFyIGg9MCx6PU13KGkpO2g8ei5sZW5ndGg7aCsrKXt2YXIgdT16W2hdO3QuaGFzKHUuZXNjYXBlZE5hbWUpfHx0LnNldCh1LmVzY2FwZWROYW1lLFJ3KHUpKX12YXIgbWU9cnMoci5zeW1ib2wsdCxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LGUuc2FtZU1hcChIbihyKSxmdW5jdGlvbihNZSl7cmV0dXJuIHpsKE1lLmtleVR5cGUsJGMoTWUudHlwZSksTWUuaXNSZWFkb25seSl9KSk7cmV0dXJuIG1lLm9iamVjdEZsYWdzfD1lLmdldE9iamVjdEZsYWdzKHIpJjI2NjI0MCxtZX1mdW5jdGlvbiAkYyhyKXtyZXR1cm4gWkQocix2b2lkIDApfWZ1bmN0aW9uIFpEKHIsaSl7aWYoZS5nZXRPYmplY3RGbGFncyhyKSYxOTY2MDgpe2lmKGk9PT12b2lkIDAmJnIud2lkZW5lZClyZXR1cm4gci53aWRlbmVkO3ZhciB0PXZvaWQgMDtpZihyLmZsYWdzJjk4MzA1KXQ9T2U7ZWxzZSBpZihRcChyKSl0PUJ3KHIsaSk7ZWxzZSBpZihyLmZsYWdzJjEwNDg1NzYpe3ZhciBvPWl8fE1FKHZvaWQgMCx2b2lkIDAsci50eXBlcykscz1lLnNhbWVNYXAoci50eXBlcyxmdW5jdGlvbih1KXtyZXR1cm4gdS5mbGFncyY5ODMwND91OlpEKHUsbyl9KTt0PVBhKHMsZS5zb21lKHMsT2YpPzI6MSl9ZWxzZSByLmZsYWdzJjIwOTcxNTI/dD1EbyhlLnNhbWVNYXAoci50eXBlcywkYykpOlBkKHIpJiYodD1ZZihyLnRhcmdldCxlLnNhbWVNYXAoeG8ociksJGMpKSk7cmV0dXJuIHQmJmk9PT12b2lkIDAmJihyLndpZGVuZWQ9dCksdHx8cn1yZXR1cm4gcn1mdW5jdGlvbiBWaChyKXt2YXIgaT0hMTtpZihlLmdldE9iamVjdEZsYWdzKHIpJjY1NTM2KXtpZihyLmZsYWdzJjEwNDg1NzYpaWYoZS5zb21lKHIudHlwZXMsT2YpKWk9ITA7ZWxzZSBmb3IodmFyIHQ9MCxvPXIudHlwZXM7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07VmgocykmJihpPSEwKX1pZihQZChyKSlmb3IodmFyIHU9MCxoPXhvKHIpO3U8aC5sZW5ndGg7dSsrKXt2YXIgcz1oW3VdO1ZoKHMpJiYoaT0hMCl9aWYoUXAocikpZm9yKHZhciB6PTAsbWU9UGYocik7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel0scz1KdChNZSk7ZS5nZXRPYmplY3RGbGFncyhzKSY2NTUzNiYmKFZoKHMpfHxYcihNZS52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuT2JqZWN0X2xpdGVyYWxfc19wcm9wZXJ0eV8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZSx0bihNZSksT3QoJGMocykpKSxpPSEwKX19cmV0dXJuIGl9ZnVuY3Rpb24gWHAocixpLHQpe3ZhciBvPU90KCRjKGkpKTtpZighKGUuaXNJbkpTRmlsZShyKSYmIWUuaXNDaGVja0pzRW5hYmxlZEZvckZpbGUoZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLHllKSkpe3ZhciBzO3N3aXRjaChyLmtpbmQpe2Nhc2UgMjIxOmNhc2UgMTY3OmNhc2UgMTY2OnM9bj9lLkRpYWdub3N0aWNzLk1lbWJlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZTplLkRpYWdub3N0aWNzLk1lbWJlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZTticmVhaztjYXNlIDE2NDp2YXIgdT1yO2lmKGUuaXNJZGVudGlmaWVyKHUubmFtZSkmJihlLmlzQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uKHUucGFyZW50KXx8ZS5pc01ldGhvZFNpZ25hdHVyZSh1LnBhcmVudCl8fGUuaXNGdW5jdGlvblR5cGVOb2RlKHUucGFyZW50KSkmJnUucGFyZW50LnBhcmFtZXRlcnMuaW5kZXhPZih1KT4tMSYmKGVzKHUsdS5uYW1lLmVzY2FwZWRUZXh0LDc4ODk2OCx2b2lkIDAsdS5uYW1lLmVzY2FwZWRUZXh0LCEwKXx8dS5uYW1lLm9yaWdpbmFsS2V5d29yZEtpbmQmJmUuaXNUeXBlTm9kZUtpbmQodS5uYW1lLm9yaWdpbmFsS2V5d29yZEtpbmQpKSl7dmFyIGg9XCJhcmdcIit1LnBhcmVudC5wYXJhbWV0ZXJzLmluZGV4T2YodSksej1lLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHUubmFtZSkrKHUuZG90RG90RG90VG9rZW4/XCJbXVwiOlwiXCIpO0ljKG4scixlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl9oYXNfYV9uYW1lX2J1dF9ub190eXBlX0RpZF95b3VfbWVhbl8wX0NvbG9uXzEsaCx6KTtyZXR1cm59cz1yLmRvdERvdERvdFRva2VuP24/ZS5EaWFnbm9zdGljcy5SZXN0X3BhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlOmUuRGlhZ25vc3RpY3MuUmVzdF9wYXJhbWV0ZXJfMF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZTpuP2UuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlOmUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlO2JyZWFrO2Nhc2UgMjAzOmlmKHM9ZS5EaWFnbm9zdGljcy5CaW5kaW5nX2VsZW1lbnRfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGUsIW4pcmV0dXJuO2JyZWFrO2Nhc2UgMzE3OlhyKHIsZS5EaWFnbm9zdGljcy5GdW5jdGlvbl90eXBlX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMF9yZXR1cm5fdHlwZSxvKTtyZXR1cm47Y2FzZSAyNTY6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAyMTM6Y2FzZSAyMTQ6aWYobiYmIXIubmFtZSl7dD09PTM/WHIocixlLkRpYWdub3N0aWNzLkdlbmVyYXRvcl9pbXBsaWNpdGx5X2hhc195aWVsZF90eXBlXzBfYmVjYXVzZV9pdF9kb2VzX25vdF95aWVsZF9hbnlfdmFsdWVzX0NvbnNpZGVyX3N1cHBseWluZ19hX3JldHVybl90eXBlX2Fubm90YXRpb24sbyk6WHIocixlLkRpYWdub3N0aWNzLkZ1bmN0aW9uX2V4cHJlc3Npb25fd2hpY2hfbGFja3NfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbl9pbXBsaWNpdGx5X2hhc19hbl8wX3JldHVybl90eXBlLG8pO3JldHVybn1zPW4/dD09PTM/ZS5EaWFnbm9zdGljcy5fMF93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuXzFfeWllbGRfdHlwZTplLkRpYWdub3N0aWNzLl8wX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMV9yZXR1cm5fdHlwZTplLkRpYWdub3N0aWNzLl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfcmV0dXJuX3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2U7YnJlYWs7Y2FzZSAxOTU6biYmWHIocixlLkRpYWdub3N0aWNzLk1hcHBlZF9vYmplY3RfdHlwZV9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdGVtcGxhdGVfdHlwZSk7cmV0dXJuO2RlZmF1bHQ6cz1uP2UuRGlhZ25vc3RpY3MuVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGU6ZS5EaWFnbm9zdGljcy5WYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZX1JYyhuLHIscyxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24ocikpLG8pfX1mdW5jdGlvbiBLaChyLGksdCl7ZmUoZnVuY3Rpb24oKXtuJiZlLmdldE9iamVjdEZsYWdzKGkpJjY1NTM2JiYoIXR8fCFQYihyKSkmJihWaChpKXx8WHAocixpLHQpKX0pfWZ1bmN0aW9uIGViKHIsaSx0KXt2YXIgbz1XYyhyKSxzPVdjKGkpLHU9dnYociksaD12dihpKSx6PWg/cy0xOnMsbWU9dT96Ok1hdGgubWluKG8seiksTWU9VF8ocik7aWYoTWUpe3ZhciAkZT1UXyhpKTskZSYmdChNZSwkZSl9Zm9yKHZhciB0cj0wO3RyPG1lO3RyKyspdCgkdShyLHRyKSwkdShpLHRyKSk7aCYmdCh5bShyLG1lKSxoKX1mdW5jdGlvbiByYihyLGksdCl7dmFyIG89WWMocikscz1ZYyhpKTtvJiZzJiZfRChvLHMpJiZvLnR5cGUmJnMudHlwZT90KG8udHlwZSxzLnR5cGUpOnQoeW8ocikseW8oaSkpfWZ1bmN0aW9uIHV2KHIsaSx0LG8pe3JldHVybiBpYihyLm1hcCh0YiksaSx0LG98fE9EKX1mdW5jdGlvbiBKdyhyLGkpe3JldHVybiBpPT09dm9pZCAwJiYoaT0wKSxyJiZpYihlLm1hcChyLmluZmVyZW5jZXMsSkUpLHIuc2lnbmF0dXJlLHIuZmxhZ3N8aSxyLmNvbXBhcmVUeXBlcyl9ZnVuY3Rpb24gaWIocixpLHQsbyl7dmFyIHM9e2luZmVyZW5jZXM6cixzaWduYXR1cmU6aSxmbGFnczp0LGNvbXBhcmVUeXBlczpvLG1hcHBlcjpHcChmdW5jdGlvbih1KXtyZXR1cm4gUkUocyx1LCEwKX0pLG5vbkZpeGluZ01hcHBlcjpHcChmdW5jdGlvbih1KXtyZXR1cm4gUkUocyx1LCExKX0pfTtyZXR1cm4gc31mdW5jdGlvbiBSRShyLGksdCl7Zm9yKHZhciBvPXIuaW5mZXJlbmNlcyxzPTA7czxvLmxlbmd0aDtzKyspe3ZhciB1PW9bc107aWYoaT09PXUudHlwZVBhcmFtZXRlcilyZXR1cm4gdCYmIXUuaXNGaXhlZCYmKGp3KHIpLEdoKG8pLHUuaXNGaXhlZD0hMCksR0UocixzKX1yZXR1cm4gaX1mdW5jdGlvbiBHaChyKXtmb3IodmFyIGk9MCx0PXI7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV07by5pc0ZpeGVkfHwoby5pbmZlcnJlZFR5cGU9dm9pZCAwKX19ZnVuY3Rpb24gQkUocixpLHQpe3ZhciBvOygobz1yLmludHJhRXhwcmVzc2lvbkluZmVyZW5jZVNpdGVzKSE9PW51bGwmJm8hPT12b2lkIDA/bzpyLmludHJhRXhwcmVzc2lvbkluZmVyZW5jZVNpdGVzPVtdKS5wdXNoKHtub2RlOmksdHlwZTp0fSl9ZnVuY3Rpb24gancocil7aWYoci5pbnRyYUV4cHJlc3Npb25JbmZlcmVuY2VTaXRlcyl7Zm9yKHZhciBpPTAsdD1yLmludHJhRXhwcmVzc2lvbkluZmVyZW5jZVNpdGVzO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldLHM9by5ub2RlLHU9by50eXBlLGg9cy5raW5kPT09MTY5P2tDKHMsMik6b3UocywyKTtoJiZkZihyLmluZmVyZW5jZXMsdSxoKX1yLmludHJhRXhwcmVzc2lvbkluZmVyZW5jZVNpdGVzPXZvaWQgMH19ZnVuY3Rpb24gdGIocil7cmV0dXJue3R5cGVQYXJhbWV0ZXI6cixjYW5kaWRhdGVzOnZvaWQgMCxjb250cmFDYW5kaWRhdGVzOnZvaWQgMCxpbmZlcnJlZFR5cGU6dm9pZCAwLHByaW9yaXR5OnZvaWQgMCx0b3BMZXZlbDohMCxpc0ZpeGVkOiExLGltcGxpZWRBcml0eTp2b2lkIDB9fWZ1bmN0aW9uIEpFKHIpe3JldHVybnt0eXBlUGFyYW1ldGVyOnIudHlwZVBhcmFtZXRlcixjYW5kaWRhdGVzOnIuY2FuZGlkYXRlcyYmci5jYW5kaWRhdGVzLnNsaWNlKCksY29udHJhQ2FuZGlkYXRlczpyLmNvbnRyYUNhbmRpZGF0ZXMmJnIuY29udHJhQ2FuZGlkYXRlcy5zbGljZSgpLGluZmVycmVkVHlwZTpyLmluZmVycmVkVHlwZSxwcmlvcml0eTpyLnByaW9yaXR5LHRvcExldmVsOnIudG9wTGV2ZWwsaXNGaXhlZDpyLmlzRml4ZWQsaW1wbGllZEFyaXR5OnIuaW1wbGllZEFyaXR5fX1mdW5jdGlvbiBVdyhyKXt2YXIgaT1lLmZpbHRlcihyLmluZmVyZW5jZXMsdGcpO3JldHVybiBpLmxlbmd0aD9pYihlLm1hcChpLEpFKSxyLnNpZ25hdHVyZSxyLmZsYWdzLHIuY29tcGFyZVR5cGVzKTp2b2lkIDB9ZnVuY3Rpb24gYWIocil7cmV0dXJuIHImJnIubWFwcGVyfWZ1bmN0aW9uIElkKHIpe3ZhciBpPWUuZ2V0T2JqZWN0RmxhZ3Mocik7aWYoaSY1MjQyODgpcmV0dXJuISEoaSYxMDQ4NTc2KTt2YXIgdD0hIShyLmZsYWdzJjQ2NTgyOTg4OHx8ci5mbGFncyY1MjQyODgmJiFqRShyKSYmKGkmNCYmKHIubm9kZXx8ZS5mb3JFYWNoKHhvKHIpLElkKSl8fGkmMTYmJnIuc3ltYm9sJiZyLnN5bWJvbC5mbGFncyYxNDM4NCYmci5zeW1ib2wuZGVjbGFyYXRpb25zfHxpJjEyNTgzOTY4KXx8ci5mbGFncyYzMTQ1NzI4JiYhKHIuZmxhZ3MmMTAyNCkmJiFqRShyKSYmZS5zb21lKHIudHlwZXMsSWQpKTtyZXR1cm4gci5mbGFncyYzODk5MzkzJiYoci5vYmplY3RGbGFnc3w9NTI0Mjg4fCh0PzEwNDg1NzY6MCkpLHR9ZnVuY3Rpb24gakUocil7aWYoci5hbGlhc1N5bWJvbCYmIXIuYWxpYXNUeXBlQXJndW1lbnRzKXt2YXIgaT1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKHIuYWxpYXNTeW1ib2wsMjU5KTtyZXR1cm4hIShpJiZlLmZpbmRBbmNlc3RvcihpLnBhcmVudCxmdW5jdGlvbih0KXtyZXR1cm4gdC5raW5kPT09MzA1PyEwOnQua2luZD09PTI2MT8hMTpcInF1aXRcIn0pKX1yZXR1cm4hMX1mdW5jdGlvbiBuYihyLGkpe3JldHVybiEhKHI9PT1pfHxyLmZsYWdzJjMxNDU3MjgmJmUuc29tZShyLnR5cGVzLGZ1bmN0aW9uKHQpe3JldHVybiBuYih0LGkpfSl8fHIuZmxhZ3MmMTY3NzcyMTYmJihpcChyKT09PWl8fHRwKHIpPT09aSkpfWZ1bmN0aW9uIHp3KHIpe3ZhciBpPWUuY3JlYXRlU3ltYm9sVGFibGUoKTtPZChyLGZ1bmN0aW9uKG8pe2lmKCEhKG8uZmxhZ3MmMTI4KSl7dmFyIHM9ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoby52YWx1ZSksdT1vbyg0LHMpO3UudHlwZT1PZSxvLnN5bWJvbCYmKHUuZGVjbGFyYXRpb25zPW8uc3ltYm9sLmRlY2xhcmF0aW9ucyx1LnZhbHVlRGVjbGFyYXRpb249by5zeW1ib2wudmFsdWVEZWNsYXJhdGlvbiksaS5zZXQocyx1KX19KTt2YXIgdD1yLmZsYWdzJjQ/W3psKExpLEJhLCExKV06ZS5lbXB0eUFycmF5O3JldHVybiBycyh2b2lkIDAsaSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5LHQpfWZ1bmN0aW9uIFVFKHIsaSx0KXtpZighUWUpe3ZhciBvPXIuaWQrXCIsXCIraS5pZCtcIixcIit0LmlkO2lmKEpuLmhhcyhvKSlyZXR1cm4gSm4uZ2V0KG8pO1FlPSEwO3ZhciBzPVd3KHIsaSx0KTtyZXR1cm4gUWU9ITEsSm4uc2V0KG8scyksc319ZnVuY3Rpb24gb2Iocil7cmV0dXJuIShlLmdldE9iamVjdEZsYWdzKHIpJjI2MjE0NCl8fFFwKHIpJiZlLnNvbWUodW8ociksZnVuY3Rpb24oaSl7cmV0dXJuIG9iKEp0KGkpKX0pfHxZbihyKSYmZS5zb21lKHhvKHIpLG9iKX1mdW5jdGlvbiBXdyhyLGksdCl7aWYoISEoc3MocixMaSl8fHVvKHIpLmxlbmd0aCE9PTAmJm9iKHIpKSl7aWYoVHUocikpcmV0dXJuIFpzKEhoKHhvKHIpWzBdLGksdCksdW0ocikpO2lmKFluKHIpKXt2YXIgbz1lLm1hcCh4byhyKSxmdW5jdGlvbihoKXtyZXR1cm4gSGgoaCxpLHQpfSkscz1MdShpKSY0P2Uuc2FtZU1hcChyLnRhcmdldC5lbGVtZW50RmxhZ3MsZnVuY3Rpb24oaCl7cmV0dXJuIGgmMj8xOmh9KTpyLnRhcmdldC5lbGVtZW50RmxhZ3M7cmV0dXJuIFdsKG8scyxyLnRhcmdldC5yZWFkb25seSxyLnRhcmdldC5sYWJlbGVkRWxlbWVudERlY2xhcmF0aW9ucyl9dmFyIHU9dHUoMTA0MCx2b2lkIDApO3JldHVybiB1LnNvdXJjZT1yLHUubWFwcGVkVHlwZT1pLHUuY29uc3RyYWludFR5cGU9dCx1fX1mdW5jdGlvbiBxdyhyKXt2YXIgaT1BYShyKTtyZXR1cm4gaS50eXBlfHwoaS50eXBlPUhoKHIucHJvcGVydHlUeXBlLHIubWFwcGVkVHlwZSxyLmNvbnN0cmFpbnRUeXBlKSksaS50eXBlfWZ1bmN0aW9uIEhoKHIsaSx0KXt2YXIgbz1KYyh0LnR5cGUsRHUoaSkpLHM9dmwoaSksdT10YihvKTtyZXR1cm4gZGYoW3VdLHIscyksekUodSl8fGdyfWZ1bmN0aW9uIHNiKHIsaSx0LG8pe3ZhciBzLHUsaCx6LG1lLE1lLCRlO3JldHVybiBrcih0aGlzLGZ1bmN0aW9uKHRyKXtzd2l0Y2godHIubGFiZWwpe2Nhc2UgMDpzPXVvKGkpLHU9MCxoPXMsdHIubGFiZWw9MTtjYXNlIDE6cmV0dXJuIHU8aC5sZW5ndGg/KHo9aFt1XSwkeSh6KT9bMyw1XTp0fHwhKHouZmxhZ3MmMTY3NzcyMTZ8fGUuZ2V0Q2hlY2tGbGFncyh6KSY0OCk/KG1lPWJpKHIsei5lc2NhcGVkTmFtZSksbWU/WzMsM106WzQsel0pOlszLDVdKTpbMyw2XTtjYXNlIDI6cmV0dXJuIHRyLnNlbnQoKSxbMyw1XTtjYXNlIDM6cmV0dXJuIG8/KE1lPUp0KHopLE1lLmZsYWdzJjEwOTQ0MD8oJGU9SnQobWUpLCRlLmZsYWdzJjF8fGpjKCRlKT09PWpjKE1lKT9bMyw1XTpbNCx6XSk6WzMsNV0pOlszLDVdO2Nhc2UgNDp0ci5zZW50KCksdHIubGFiZWw9NTtjYXNlIDU6cmV0dXJuIHUrKyxbMywxXTtjYXNlIDY6cmV0dXJuWzJdfX0pfWZ1bmN0aW9uIGNiKHIsaSx0LG8pe3ZhciBzPXNiKHIsaSx0LG8pLm5leHQoKTtpZighcy5kb25lKXJldHVybiBzLnZhbHVlfWZ1bmN0aW9uIFZ3KHIsaSl7cmV0dXJuIShpLnRhcmdldC5jb21iaW5lZEZsYWdzJjgpJiZpLnRhcmdldC5taW5MZW5ndGg+ci50YXJnZXQubWluTGVuZ3RofHwhaS50YXJnZXQuaGFzUmVzdEVsZW1lbnQmJihyLnRhcmdldC5oYXNSZXN0RWxlbWVudHx8aS50YXJnZXQuZml4ZWRMZW5ndGg8ci50YXJnZXQuZml4ZWRMZW5ndGgpfWZ1bmN0aW9uIEt3KHIsaSl7cmV0dXJuIFluKHIpJiZZbihpKT9WdyhyLGkpOiEhY2IocixpLCExLCEwKSYmISFjYihpLHIsITEsITEpfWZ1bmN0aW9uIHpFKHIpe3JldHVybiByLmNhbmRpZGF0ZXM/UGEoci5jYW5kaWRhdGVzLDIpOnIuY29udHJhQ2FuZGlkYXRlcz9EbyhyLmNvbnRyYUNhbmRpZGF0ZXMpOnZvaWQgMH1mdW5jdGlvbiB1YihyKXtyZXR1cm4hIXZhKHIpLnNraXBEaXJlY3RJbmZlcmVuY2V9ZnVuY3Rpb24gV0Uocil7cmV0dXJuISEoci5zeW1ib2wmJmUuc29tZShyLnN5bWJvbC5kZWNsYXJhdGlvbnMsdWIpKX1mdW5jdGlvbiBHdyhyLGkpe3ZhciB0PXIudGV4dHNbMF0sbz1pLnRleHRzWzBdLHM9ci50ZXh0c1tyLnRleHRzLmxlbmd0aC0xXSx1PWkudGV4dHNbaS50ZXh0cy5sZW5ndGgtMV0saD1NYXRoLm1pbih0Lmxlbmd0aCxvLmxlbmd0aCksej1NYXRoLm1pbihzLmxlbmd0aCx1Lmxlbmd0aCk7cmV0dXJuIHQuc2xpY2UoMCxoKSE9PW8uc2xpY2UoMCxoKXx8cy5zbGljZShzLmxlbmd0aC16KSE9PXUuc2xpY2UodS5sZW5ndGgteil9ZnVuY3Rpb24gSHcocil7dmFyIGk9ZS5jcmVhdGVTY2FubmVyKDk5LCExKSx0PSEwO2kuc2V0T25FcnJvcihmdW5jdGlvbigpe3JldHVybiB0PSExfSksaS5zZXRUZXh0KHIrXCJuXCIpO3ZhciBvPWkuc2NhbigpO289PT00MCYmKG89aS5zY2FuKCkpO3ZhciBzPWkuZ2V0VG9rZW5GbGFncygpO3JldHVybiB0JiZvPT09OSYmaS5nZXRUZXh0UG9zKCk9PT1yLmxlbmd0aCsxJiYhKHMmNTEyKX1mdW5jdGlvbiBYdyhyLGkpe2lmKHI9PT1pfHxpLmZsYWdzJjUpcmV0dXJuITA7aWYoci5mbGFncyYxMjgpe3ZhciB0PXIudmFsdWU7cmV0dXJuISEoaS5mbGFncyY4JiZ0IT09XCJcIiYmaXNGaW5pdGUoK3QpfHxpLmZsYWdzJjY0JiZ0IT09XCJcIiYmSHcodCl8fGkuZmxhZ3MmOTg4MTYmJnQ9PT1pLmludHJpbnNpY05hbWUpfWlmKHIuZmxhZ3MmMTM0MjE3NzI4KXt2YXIgbz1yLnRleHRzO3JldHVybiBvLmxlbmd0aD09PTImJm9bMF09PT1cIlwiJiZvWzFdPT09XCJcIiYmYW8oci50eXBlc1swXSxpKX1yZXR1cm4gYW8ocixpKX1mdW5jdGlvbiBxRShyLGkpe3JldHVybiByLmZsYWdzJjEyOD9LRShbci52YWx1ZV0sZS5lbXB0eUFycmF5LGkpOnIuZmxhZ3MmMTM0MjE3NzI4P2UuYXJyYXlzRXF1YWwoci50ZXh0cyxpLnRleHRzKT9lLm1hcChyLnR5cGVzLFF3KTpLRShyLnRleHRzLHIudHlwZXMsaSk6dm9pZCAwfWZ1bmN0aW9uIFZFKHIsaSl7dmFyIHQ9cUUocixpKTtyZXR1cm4hIXQmJmUuZXZlcnkodCxmdW5jdGlvbihvLHMpe3JldHVybiBYdyhvLGkudHlwZXNbc10pfSl9ZnVuY3Rpb24gUXcocil7cmV0dXJuIHIuZmxhZ3MmNDAyNjUzMzE3P3I6RGcoW1wiXCIsXCJcIl0sW3JdKX1mdW5jdGlvbiBLRShyLGksdCl7dmFyIG89ci5sZW5ndGgtMSxzPXJbMF0sdT1yW29dLGg9dC50ZXh0cyx6PWgubGVuZ3RoLTEsbWU9aFswXSxNZT1oW3pdO2lmKG89PT0wJiZzLmxlbmd0aDxtZS5sZW5ndGgrTWUubGVuZ3RofHwhcy5zdGFydHNXaXRoKG1lKXx8IXUuZW5kc1dpdGgoTWUpKXJldHVybjtmb3IodmFyICRlPXUuc2xpY2UoMCx1Lmxlbmd0aC1NZS5sZW5ndGgpLHRyPVtdLGRyPTAsRHI9bWUubGVuZ3RoLFFyPTE7UXI8ejtRcisrKXt2YXIgbGk9aFtRcl07aWYobGkubGVuZ3RoPjApe2Zvcih2YXIgVGk9ZHIsQ2k9RHI7Q2k9JGkoVGkpLmluZGV4T2YobGksQ2kpLCEoQ2k+PTApOyl7aWYoVGkrKyxUaT09PXIubGVuZ3RoKXJldHVybjtDaT0wfVppKFRpLENpKSxEcis9bGkubGVuZ3RofWVsc2UgaWYoRHI8JGkoZHIpLmxlbmd0aClaaShkcixEcisxKTtlbHNlIGlmKGRyPG8pWmkoZHIrMSwwKTtlbHNlIHJldHVybn1yZXR1cm4gWmkobywkaShvKS5sZW5ndGgpLHRyO2Z1bmN0aW9uICRpKHF0KXtyZXR1cm4gcXQ8bz9yW3F0XTokZX1mdW5jdGlvbiBaaShxdCxOdCl7dmFyIFJhPXF0PT09ZHI/QnUoJGkocXQpLnNsaWNlKERyLE50KSk6RGcoVmUoVmUoW3JbZHJdLnNsaWNlKERyKV0sci5zbGljZShkcisxLHF0KSwhMCksWyRpKHF0KS5zbGljZSgwLE50KV0sITEpLGkuc2xpY2UoZHIscXQpKTt0ci5wdXNoKFJhKSxkcj1xdCxEcj1OdH19ZnVuY3Rpb24gZGYocixpLHQsbyxzKXtvPT09dm9pZCAwJiYobz0wKSxzPT09dm9pZCAwJiYocz0hMSk7dmFyIHU9ITEsaCx6PTIwNDgsbWU9ITAsTWUsJGUsdHIsZHI9MDtEcihpLHQpO2Z1bmN0aW9uIERyKGx0LGl0KXtpZighIUlkKGl0KSl7aWYobHQ9PT1Ncil7dmFyIFl0PWg7aD1sdCxEcihpdCxpdCksaD1ZdDtyZXR1cm59aWYobHQuYWxpYXNTeW1ib2wmJmx0LmFsaWFzVHlwZUFyZ3VtZW50cyYmbHQuYWxpYXNTeW1ib2w9PT1pdC5hbGlhc1N5bWJvbCl7Q2kobHQuYWxpYXNUeXBlQXJndW1lbnRzLGl0LmFsaWFzVHlwZUFyZ3VtZW50cyxURShsdC5hbGlhc1N5bWJvbCkpO3JldHVybn1pZihsdD09PWl0JiZsdC5mbGFncyYzMTQ1NzI4KXtmb3IodmFyIElhPTAsUXQ9bHQudHlwZXM7SWE8UXQubGVuZ3RoO0lhKyspe3ZhciBLYT1RdFtJYV07RHIoS2EsS2EpfXJldHVybn1pZihpdC5mbGFncyYxMDQ4NTc2KXt2YXIgY249VGkobHQuZmxhZ3MmMTA0ODU3Nj9sdC50eXBlczpbbHRdLGl0LnR5cGVzLFl3KSxVbj1jblswXSxvYT1jblsxXSxNbj1UaShVbixvYSwkdyksTG49TW5bMF0sY2k9TW5bMV07aWYoY2kubGVuZ3RoPT09MClyZXR1cm47aWYoaXQ9UGEoY2kpLExuLmxlbmd0aD09PTApe1FyKGx0LGl0LDEpO3JldHVybn1sdD1QYShMbil9ZWxzZSBpZihpdC5mbGFncyYyMDk3MTUyJiZlLnNvbWUoaXQudHlwZXMsZnVuY3Rpb24oRmEpe3JldHVybiEhWmkoRmEpfHxCYyhGYSkmJiEhWmkoSWgoRmEpfHx1aSl9KSl7aWYoIShsdC5mbGFncyYxMDQ4NTc2KSl7dmFyIEZyPVRpKGx0LmZsYWdzJjIwOTcxNTI/bHQudHlwZXM6W2x0XSxpdC50eXBlcyx3ZiksTG49RnJbMF0sY2k9RnJbMV07aWYoTG4ubGVuZ3RoPT09MHx8Y2kubGVuZ3RoPT09MClyZXR1cm47bHQ9RG8oTG4pLGl0PURvKGNpKX19ZWxzZSBpdC5mbGFncyY0MTk0MzA0MCYmKGl0PXJwKGl0KSk7aWYoaXQuZmxhZ3MmODY1MDc1Mil7aWYobHQ9PT1mcnx8bHQ9PT1CdHx8byYxMjgmJihsdD09PW5yfHxsdD09PVNvKXx8V0UobHQpKXJldHVybjt2YXIganQ9WmkoaXQpO2lmKGp0KXtpZihlLmdldE9iamVjdEZsYWdzKGx0KSYyNjIxNDQpcmV0dXJuO2lmKCFqdC5pc0ZpeGVkKXtpZigoanQucHJpb3JpdHk9PT12b2lkIDB8fG88anQucHJpb3JpdHkpJiYoanQuY2FuZGlkYXRlcz12b2lkIDAsanQuY29udHJhQ2FuZGlkYXRlcz12b2lkIDAsanQudG9wTGV2ZWw9ITAsanQucHJpb3JpdHk9byksbz09PWp0LnByaW9yaXR5KXt2YXIgTHQ9aHx8bHQ7cyYmIXU/ZS5jb250YWlucyhqdC5jb250cmFDYW5kaWRhdGVzLEx0KXx8KGp0LmNvbnRyYUNhbmRpZGF0ZXM9ZS5hcHBlbmQoanQuY29udHJhQ2FuZGlkYXRlcyxMdCksR2gocikpOmUuY29udGFpbnMoanQuY2FuZGlkYXRlcyxMdCl8fChqdC5jYW5kaWRhdGVzPWUuYXBwZW5kKGp0LmNhbmRpZGF0ZXMsTHQpLEdoKHIpKX0hKG8mMTI4KSYmaXQuZmxhZ3MmMjYyMTQ0JiZqdC50b3BMZXZlbCYmIW5iKHQsaXQpJiYoanQudG9wTGV2ZWw9ITEsR2gocikpfXo9TWF0aC5taW4oeixvKTtyZXR1cm59dmFyIGVhPVpmKGl0LCExKTtpZihlYSE9PWl0KURyKGx0LGVhKTtlbHNlIGlmKGl0LmZsYWdzJjgzODg2MDgpe3ZhciBLdD1aZihpdC5pbmRleFR5cGUsITEpO2lmKEt0LmZsYWdzJjQ2NTgyOTg4OCl7dmFyICR0PUh4KFpmKGl0Lm9iamVjdFR5cGUsITEpLEt0LCExKTskdCYmJHQhPT1pdCYmRHIobHQsJHQpfX19aWYoZS5nZXRPYmplY3RGbGFncyhsdCkmNCYmZS5nZXRPYmplY3RGbGFncyhpdCkmNCYmKGx0LnRhcmdldD09PWl0LnRhcmdldHx8VHUobHQpJiZUdShpdCkpJiYhKGx0Lm5vZGUmJml0Lm5vZGUpKUNpKHhvKGx0KSx4byhpdCksekQobHQudGFyZ2V0KSk7ZWxzZSBpZihsdC5mbGFncyY0MTk0MzA0JiZpdC5mbGFncyY0MTk0MzA0KXM9IXMsRHIobHQudHlwZSxpdC50eXBlKSxzPSFzO2Vsc2UgaWYoKENnKGx0KXx8bHQuZmxhZ3MmNCkmJml0LmZsYWdzJjQxOTQzMDQpe3ZhciBVYT16dyhsdCk7cz0hcyxRcihVYSxpdC50eXBlLDI1Nikscz0hc31lbHNlIGlmKGx0LmZsYWdzJjgzODg2MDgmJml0LmZsYWdzJjgzODg2MDgpRHIobHQub2JqZWN0VHlwZSxpdC5vYmplY3RUeXBlKSxEcihsdC5pbmRleFR5cGUsaXQuaW5kZXhUeXBlKTtlbHNlIGlmKGx0LmZsYWdzJjI2ODQzNTQ1NiYmaXQuZmxhZ3MmMjY4NDM1NDU2KWx0LnN5bWJvbD09PWl0LnN5bWJvbCYmRHIobHQudHlwZSxpdC50eXBlKTtlbHNlIGlmKGx0LmZsYWdzJjMzNTU0NDMyKXtEcihsdC5iYXNlVHlwZSxpdCk7dmFyIFlyPW87b3w9NCxEcihsdC5zdWJzdGl0dXRlLGl0KSxvPVlyfWVsc2UgaWYoaXQuZmxhZ3MmMTY3NzcyMTYpbGkobHQsaXQsY2EpO2Vsc2UgaWYoaXQuZmxhZ3MmMzE0NTcyOClOdChsdCxpdC50eXBlcyxpdC5mbGFncyk7ZWxzZSBpZihsdC5mbGFncyYxMDQ4NTc2KWZvcih2YXIgTmk9bHQudHlwZXMsSGk9MCxfdD1OaTtIaTxfdC5sZW5ndGg7SGkrKyl7dmFyIGd0PV90W0hpXTtEcihndCxpdCl9ZWxzZSBpZihpdC5mbGFncyYxMzQyMTc3MjgpU24obHQsaXQpO2Vsc2V7aWYobHQ9YnUobHQpLCEobyY1MTImJmx0LmZsYWdzJjQ2NzkyNzA0MCkpe3ZhciBWdD0kcyhsdCk7aWYoVnQhPT1sdCYmbWUmJiEoVnQuZmxhZ3MmMjYyMTQ0MCkpcmV0dXJuIG1lPSExLERyKFZ0LGl0KTtsdD1WdH1sdC5mbGFncyYyNjIxNDQwJiZsaShsdCxpdCxqYSl9fX1mdW5jdGlvbiBRcihsdCxpdCxZdCl7dmFyIElhPW87b3w9WXQsRHIobHQsaXQpLG89SWF9ZnVuY3Rpb24gbGkobHQsaXQsWXQpe3ZhciBJYT1sdC5pZCtcIixcIitpdC5pZCxRdD1NZSYmTWUuZ2V0KElhKTtpZihRdCE9PXZvaWQgMCl7ej1NYXRoLm1pbih6LFF0KTtyZXR1cm59KE1lfHwoTWU9bmV3IGUuTWFwKSkuc2V0KElhLC0xKTt2YXIgS2E9ejt6PTIwNDg7dmFyIGNuPWRyLFVuPW92KGx0KSxvYT1vdihpdCk7ZS5jb250YWlucygkZSxVbikmJihkcnw9MSksZS5jb250YWlucyh0cixvYSkmJihkcnw9MiksZHIhPT0zPygoJGV8fCgkZT1bXSkpLnB1c2goVW4pLCh0cnx8KHRyPVtdKSkucHVzaChvYSksWXQobHQsaXQpLHRyLnBvcCgpLCRlLnBvcCgpKTp6PS0xLGRyPWNuLE1lLnNldChJYSx6KSx6PU1hdGgubWluKHosS2EpfWZ1bmN0aW9uIFRpKGx0LGl0LFl0KXtmb3IodmFyIElhLFF0LEthPTAsY249aXQ7S2E8Y24ubGVuZ3RoO0thKyspZm9yKHZhciBVbj1jbltLYV0sb2E9MCxNbj1sdDtvYTxNbi5sZW5ndGg7b2ErKyl7dmFyIExuPU1uW29hXTtZdChMbixVbikmJihEcihMbixVbiksSWE9ZS5hcHBlbmRJZlVuaXF1ZShJYSxMbiksUXQ9ZS5hcHBlbmRJZlVuaXF1ZShRdCxVbikpfXJldHVybltJYT9lLmZpbHRlcihsdCxmdW5jdGlvbihjaSl7cmV0dXJuIWUuY29udGFpbnMoSWEsY2kpfSk6bHQsUXQ/ZS5maWx0ZXIoaXQsZnVuY3Rpb24oY2kpe3JldHVybiFlLmNvbnRhaW5zKFF0LGNpKX0pOml0XX1mdW5jdGlvbiBDaShsdCxpdCxZdCl7Zm9yKHZhciBJYT1sdC5sZW5ndGg8aXQubGVuZ3RoP2x0Lmxlbmd0aDppdC5sZW5ndGgsUXQ9MDtRdDxJYTtRdCsrKVF0PFl0Lmxlbmd0aCYmKFl0W1F0XSY3KT09PTI/JGkobHRbUXRdLGl0W1F0XSk6RHIobHRbUXRdLGl0W1F0XSl9ZnVuY3Rpb24gJGkobHQsaXQpe0JyfHxvJjEwMjQ/KHM9IXMsRHIobHQsaXQpLHM9IXMpOkRyKGx0LGl0KX1mdW5jdGlvbiBaaShsdCl7aWYobHQuZmxhZ3MmODY1MDc1Milmb3IodmFyIGl0PTAsWXQ9cjtpdDxZdC5sZW5ndGg7aXQrKyl7dmFyIElhPVl0W2l0XTtpZihsdD09PUlhLnR5cGVQYXJhbWV0ZXIpcmV0dXJuIElhfX1mdW5jdGlvbiBxdChsdCl7Zm9yKHZhciBpdCxZdD0wLElhPWx0O1l0PElhLmxlbmd0aDtZdCsrKXt2YXIgUXQ9SWFbWXRdLEthPVF0LmZsYWdzJjIwOTcxNTImJmUuZmluZChRdC50eXBlcyxmdW5jdGlvbihjbil7cmV0dXJuISFaaShjbil9KTtpZighS2F8fGl0JiZLYSE9PWl0KXJldHVybjtpdD1LYX1yZXR1cm4gaXR9ZnVuY3Rpb24gTnQobHQsaXQsWXQpe3ZhciBJYT0wO2lmKFl0JjEwNDg1NzYpe2Zvcih2YXIgUXQ9dm9pZCAwLEthPWx0LmZsYWdzJjEwNDg1NzY/bHQudHlwZXM6W2x0XSxjbj1uZXcgQXJyYXkoS2EubGVuZ3RoKSxVbj0hMSxvYT0wLE1uPWl0O29hPE1uLmxlbmd0aDtvYSsrKXt2YXIgTG49TW5bb2FdO2lmKFppKExuKSlRdD1MbixJYSsrO2Vsc2UgZm9yKHZhciBjaT0wO2NpPEthLmxlbmd0aDtjaSsrKXt2YXIgRnI9ejt6PTIwNDgsRHIoS2FbY2ldLExuKSx6PT09byYmKGNuW2NpXT0hMCksVW49VW58fHo9PT0tMSx6PU1hdGgubWluKHosRnIpfX1pZihJYT09PTApe3ZhciBqdD1xdChpdCk7anQmJlFyKGx0LGp0LDEpO3JldHVybn1pZihJYT09PTEmJiFVbil7dmFyIEx0PWUuZmxhdE1hcChLYSxmdW5jdGlvbihZcixOaSl7cmV0dXJuIGNuW05pXT92b2lkIDA6WXJ9KTtpZihMdC5sZW5ndGgpe0RyKFBhKEx0KSxRdCk7cmV0dXJufX19ZWxzZSBmb3IodmFyIGVhPTAsS3Q9aXQ7ZWE8S3QubGVuZ3RoO2VhKyspe3ZhciBMbj1LdFtlYV07WmkoTG4pP0lhKys6RHIobHQsTG4pfWlmKFl0JjIwOTcxNTI/SWE9PT0xOklhPjApZm9yKHZhciAkdD0wLFVhPWl0OyR0PFVhLmxlbmd0aDskdCsrKXt2YXIgTG49VWFbJHRdO1ppKExuKSYmUXIobHQsTG4sMSl9fWZ1bmN0aW9uIFJhKGx0LGl0LFl0KXtpZihZdC5mbGFncyYxMDQ4NTc2KXtmb3IodmFyIElhPSExLFF0PTAsS2E9WXQudHlwZXM7UXQ8S2EubGVuZ3RoO1F0Kyspe3ZhciBjbj1LYVtRdF07SWE9UmEobHQsaXQsY24pfHxJYX1yZXR1cm4gSWF9aWYoWXQuZmxhZ3MmNDE5NDMwNCl7dmFyIFVuPVppKFl0LnR5cGUpO2lmKFVuJiYhVW4uaXNGaXhlZCYmIVdFKGx0KSl7dmFyIG9hPVVFKGx0LGl0LFl0KTtvYSYmUXIob2EsVW4udHlwZVBhcmFtZXRlcixlLmdldE9iamVjdEZsYWdzKGx0KSYyNjIxNDQ/MTY6OCl9cmV0dXJuITB9aWYoWXQuZmxhZ3MmMjYyMTQ0KXtRcihxbChsdCksWXQsMzIpO3ZhciBNbj1RXyhZdCk7aWYoTW4mJlJhKGx0LGl0LE1uKSlyZXR1cm4hMDt2YXIgTG49ZS5tYXAodW8obHQpLEp0KSxjaT1lLm1hcChIbihsdCksZnVuY3Rpb24oRnIpe3JldHVybiBGciE9PUtvP0ZyLnR5cGU6dWl9KTtyZXR1cm4gRHIoUGEoZS5jb25jYXRlbmF0ZShMbixjaSkpLHZsKGl0KSksITB9cmV0dXJuITF9ZnVuY3Rpb24gY2EobHQsaXQpe2lmKGx0LmZsYWdzJjE2Nzc3MjE2KURyKGx0LmNoZWNrVHlwZSxpdC5jaGVja1R5cGUpLERyKGx0LmV4dGVuZHNUeXBlLGl0LmV4dGVuZHNUeXBlKSxEcihpcChsdCksaXAoaXQpKSxEcih0cChsdCksdHAoaXQpKTtlbHNle3ZhciBZdD1vO298PXM/NjQ6MDt2YXIgSWE9W2lwKGl0KSx0cChpdCldO050KGx0LElhLGl0LmZsYWdzKSxvPVl0fX1mdW5jdGlvbiBTbihsdCxpdCl7dmFyIFl0PXFFKGx0LGl0KSxJYT1pdC50eXBlcztpZihZdHx8ZS5ldmVyeShpdC50ZXh0cyxmdW5jdGlvbihLYSl7cmV0dXJuIEthLmxlbmd0aD09PTB9KSlmb3IodmFyIFF0PTA7UXQ8SWEubGVuZ3RoO1F0KyspRHIoWXQ/WXRbUXRdOnVpLElhW1F0XSl9ZnVuY3Rpb24gamEobHQsaXQpe2lmKGUuZ2V0T2JqZWN0RmxhZ3MobHQpJjQmJmUuZ2V0T2JqZWN0RmxhZ3MoaXQpJjQmJihsdC50YXJnZXQ9PT1pdC50YXJnZXR8fFR1KGx0KSYmVHUoaXQpKSl7Q2koeG8obHQpLHhvKGl0KSx6RChsdC50YXJnZXQpKTtyZXR1cm59aWYoQmMobHQpJiZCYyhpdCkpe0RyKE11KGx0KSxNdShpdCkpLERyKHZsKGx0KSx2bChpdCkpO3ZhciBZdD1KbChsdCksSWE9SmwoaXQpO1l0JiZJYSYmRHIoWXQsSWEpfWlmKGUuZ2V0T2JqZWN0RmxhZ3MoaXQpJjMyJiYhaXQuZGVjbGFyYXRpb24ubmFtZVR5cGUpe3ZhciBRdD1NdShpdCk7aWYoUmEobHQsaXQsUXQpKXJldHVybn1pZighS3cobHQsaXQpKXtpZihQZChsdCkpe2lmKFluKGl0KSl7dmFyIEthPSRfKGx0KSxjbj0kXyhpdCksVW49eG8oaXQpLG9hPWl0LnRhcmdldC5lbGVtZW50RmxhZ3M7aWYoWW4obHQpJiZOdyhsdCxpdCkpe2Zvcih2YXIgTW49MDtNbjxjbjtNbisrKURyKHhvKGx0KVtNbl0sVW5bTW5dKTtyZXR1cm59Zm9yKHZhciBMbj1ZbihsdCk/TWF0aC5taW4obHQudGFyZ2V0LmZpeGVkTGVuZ3RoLGl0LnRhcmdldC5maXhlZExlbmd0aCk6MCxjaT1NYXRoLm1pbihZbihsdCk/U2gobHQudGFyZ2V0LDMpOjAsaXQudGFyZ2V0Lmhhc1Jlc3RFbGVtZW50P1NoKGl0LnRhcmdldCwzKTowKSxNbj0wO01uPExuO01uKyspRHIoeG8obHQpW01uXSxVbltNbl0pO2lmKCFZbihsdCl8fEthLUxuLWNpPT09MSYmbHQudGFyZ2V0LmVsZW1lbnRGbGFnc1tMbl0mNClmb3IodmFyIEZyPXhvKGx0KVtMbl0sTW49TG47TW48Y24tY2k7TW4rKylEcihvYVtNbl0mOD9acyhGcik6RnIsVW5bTW5dKTtlbHNle3ZhciBqdD1jbi1Mbi1jaTtpZihqdD09PTImJm9hW0xuXSZvYVtMbisxXSY4JiZZbihsdCkpe3ZhciBMdD1aaShVbltMbl0pO0x0JiZMdC5pbXBsaWVkQXJpdHkhPT12b2lkIDAmJihEcihabShsdCxMbixjaStLYS1MdC5pbXBsaWVkQXJpdHkpLFVuW0xuXSksRHIoWm0obHQsTG4rTHQuaW1wbGllZEFyaXR5LGNpKSxVbltMbisxXSkpfWVsc2UgaWYoanQ9PT0xJiZvYVtMbl0mOCl7dmFyIGVhPWl0LnRhcmdldC5lbGVtZW50RmxhZ3NbY24tMV0mMixLdD1ZbihsdCk/Wm0obHQsTG4sY2kpOlpzKHhvKGx0KVswXSk7UXIoS3QsVW5bTG5dLGVhPzI6MCl9ZWxzZSBpZihqdD09PTEmJm9hW0xuXSY0KXt2YXIgRnI9WW4obHQpP2poKGx0LExuLGNpKTp4byhsdClbMF07RnImJkRyKEZyLFVuW0xuXSl9fWZvcih2YXIgTW49MDtNbjxjaTtNbisrKURyKHhvKGx0KVtLYS1Nbi0xXSxVbltjbi1Nbi0xXSk7cmV0dXJufWlmKFR1KGl0KSl7RW8obHQsaXQpO3JldHVybn19Rm4obHQsaXQpLHduKGx0LGl0LDApLHduKGx0LGl0LDEpLEVvKGx0LGl0KX19ZnVuY3Rpb24gRm4obHQsaXQpe2Zvcih2YXIgWXQ9UGYoaXQpLElhPTAsUXQ9WXQ7SWE8UXQubGVuZ3RoO0lhKyspe3ZhciBLYT1RdFtJYV0sY249YmkobHQsS2EuZXNjYXBlZE5hbWUpO2NuJiYhZS5zb21lKGNuLmRlY2xhcmF0aW9ucyx1YikmJkRyKEp0KGNuKSxKdChLYSkpfX1mdW5jdGlvbiB3bihsdCxpdCxZdCl7Zm9yKHZhciBJYT1vdChsdCxZdCksUXQ9b3QoaXQsWXQpLEthPUlhLmxlbmd0aCxjbj1RdC5sZW5ndGgsVW49S2E8Y24/S2E6Y24sb2E9ISEoZS5nZXRPYmplY3RGbGFncyhsdCkmMjYyMTQ0KSxNbj0wO01uPFVuO01uKyspVG4odjMoSWFbS2EtVW4rTW5dKSxRbShRdFtjbi1VbitNbl0pLG9hKX1mdW5jdGlvbiBUbihsdCxpdCxZdCl7aWYoIVl0KXt2YXIgSWE9dSxRdD1pdC5kZWNsYXJhdGlvbj9pdC5kZWNsYXJhdGlvbi5raW5kOjA7dT11fHxRdD09PTE2OXx8UXQ9PT0xNjh8fFF0PT09MTcxLGViKGx0LGl0LCRpKSx1PUlhfXJiKGx0LGl0LERyKX1mdW5jdGlvbiBFbyhsdCxpdCl7dmFyIFl0PWUuZ2V0T2JqZWN0RmxhZ3MobHQpJmUuZ2V0T2JqZWN0RmxhZ3MoaXQpJjMyPzg6MCxJYT1IbihpdCk7aWYocWgobHQpKWZvcih2YXIgUXQ9MCxLYT1JYTtRdDxLYS5sZW5ndGg7UXQrKyl7Zm9yKHZhciBjbj1LYVtRdF0sVW49W10sb2E9MCxNbj11byhsdCk7b2E8TW4ubGVuZ3RoO29hKyspe3ZhciBMbj1NbltvYV07aWYoYW4ob20oTG4sODU3NiksY24ua2V5VHlwZSkpe3ZhciBjaT1KdChMbik7VW4ucHVzaChMbi5mbGFncyYxNjc3NzIxNj8kRChjaSk6Y2kpfX1mb3IodmFyIEZyPTAsanQ9SG4obHQpO0ZyPGp0Lmxlbmd0aDtGcisrKXt2YXIgTHQ9anRbRnJdO2FuKEx0LmtleVR5cGUsY24ua2V5VHlwZSkmJlVuLnB1c2goTHQudHlwZSl9VW4ubGVuZ3RoJiZRcihQYShVbiksY24udHlwZSxZdCl9Zm9yKHZhciBlYT0wLEt0PUlhO2VhPEt0Lmxlbmd0aDtlYSsrKXt2YXIgY249S3RbZWFdLCR0PW51KGx0LGNuLmtleVR5cGUpOyR0JiZRcigkdC50eXBlLGNuLnR5cGUsWXQpfX19ZnVuY3Rpb24gWXcocixpKXtyZXR1cm4geXImJmk9PT1ZaT9yPT09aTp3ZihyLGkpfHwhIShpLmZsYWdzJjQmJnIuZmxhZ3MmMTI4fHxpLmZsYWdzJjgmJnIuZmxhZ3MmMjU2KX1mdW5jdGlvbiAkdyhyLGkpe3JldHVybiEhKHIuZmxhZ3MmNTI0Mjg4JiZpLmZsYWdzJjUyNDI4OCYmci5zeW1ib2wmJnIuc3ltYm9sPT09aS5zeW1ib2x8fHIuYWxpYXNTeW1ib2wmJnIuYWxpYXNUeXBlQXJndW1lbnRzJiZyLmFsaWFzU3ltYm9sPT09aS5hbGlhc1N5bWJvbCl9ZnVuY3Rpb24gWncocil7dmFyIGk9VGMocik7cmV0dXJuISFpJiZmcyhpLmZsYWdzJjE2Nzc3MjE2P3ptKGkpOmksNDA2OTc4NTU2KX1mdW5jdGlvbiBRcChyKXtyZXR1cm4hIShlLmdldE9iamVjdEZsYWdzKHIpJjEyOCl9ZnVuY3Rpb24gbGIocil7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyhyKSYxNjUxMil9ZnVuY3Rpb24gZTgocil7aWYoci5sZW5ndGg+MSl7dmFyIGk9ZS5maWx0ZXIocixsYik7aWYoaS5sZW5ndGgpe3ZhciB0PVBhKGksMik7cmV0dXJuIGUuY29uY2F0ZW5hdGUoZS5maWx0ZXIocixmdW5jdGlvbihvKXtyZXR1cm4hbGIobyl9KSxbdF0pfX1yZXR1cm4gcn1mdW5jdGlvbiByOChyKXtyZXR1cm4gci5wcmlvcml0eSY0MTY/RG8oci5jb250cmFDYW5kaWRhdGVzKTpUdyhyLmNvbnRyYUNhbmRpZGF0ZXMpfWZ1bmN0aW9uIGk4KHIsaSl7dmFyIHQ9ZTgoci5jYW5kaWRhdGVzKSxvPVp3KHIudHlwZVBhcmFtZXRlcikscz0hbyYmci50b3BMZXZlbCYmKHIuaXNGaXhlZHx8IW5iKHlvKGkpLHIudHlwZVBhcmFtZXRlcikpLHU9bz9lLnNhbWVNYXAodCxqYyk6cz9lLnNhbWVNYXAodCxIcCk6dCxoPXIucHJpb3JpdHkmNDE2P1BhKHUsMik6U3codSk7cmV0dXJuICRjKGgpfWZ1bmN0aW9uIEdFKHIsaSl7dmFyIHQ9ci5pbmZlcmVuY2VzW2ldO2lmKCF0LmluZmVycmVkVHlwZSl7dmFyIG89dm9pZCAwLHM9ci5zaWduYXR1cmU7aWYocyl7dmFyIHU9dC5jYW5kaWRhdGVzP2k4KHQscyk6dm9pZCAwO2lmKHQuY29udHJhQ2FuZGlkYXRlcylvPXUmJiEodS5mbGFncyYxMzEwNzIpJiZlLnNvbWUodC5jb250cmFDYW5kaWRhdGVzLGZ1bmN0aW9uKE1lKXtyZXR1cm4gRV8odSxNZSl9KT91OnI4KHQpO2Vsc2UgaWYodSlvPXU7ZWxzZSBpZihyLmZsYWdzJjEpbz1CdDtlbHNle3ZhciBoPURfKHQudHlwZVBhcmFtZXRlcik7aCYmKG89dW4oaCxMSShNSShyLGkpLHIubm9uRml4aW5nTWFwcGVyKSkpfX1lbHNlIG89ekUodCk7dC5pbmZlcnJlZFR5cGU9b3x8ZmIoISEoci5mbGFncyYyKSk7dmFyIHo9VGModC50eXBlUGFyYW1ldGVyKTtpZih6KXt2YXIgbWU9dW4oeixyLm5vbkZpeGluZ01hcHBlcik7KCFvfHwhci5jb21wYXJlVHlwZXMobyxSYyhtZSxvKSkpJiYodC5pbmZlcnJlZFR5cGU9bz1tZSl9fXJldHVybiB0LmluZmVycmVkVHlwZX1mdW5jdGlvbiBmYihyKXtyZXR1cm4gcj9PZTpncn1mdW5jdGlvbiBfYihyKXtmb3IodmFyIGk9W10sdD0wO3Q8ci5pbmZlcmVuY2VzLmxlbmd0aDt0KyspaS5wdXNoKEdFKHIsdCkpO3JldHVybiBpfWZ1bmN0aW9uIEhFKHIpe3N3aXRjaChyLmVzY2FwZWRUZXh0KXtjYXNlXCJkb2N1bWVudFwiOmNhc2VcImNvbnNvbGVcIjpyZXR1cm4gZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9fY2hhbmdlX3lvdXJfdGFyZ2V0X2xpYnJhcnlfVHJ5X2NoYW5naW5nX3RoZV9saWJfY29tcGlsZXJfb3B0aW9uX3RvX2luY2x1ZGVfZG9tO2Nhc2VcIiRcIjpyZXR1cm4geWUudHlwZXM/ZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9faW5zdGFsbF90eXBlX2RlZmluaXRpb25zX2Zvcl9qUXVlcnlfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoanF1ZXJ5X2FuZF90aGVuX2FkZF9qcXVlcnlfdG9fdGhlX3R5cGVzX2ZpZWxkX2luX3lvdXJfdHNjb25maWc6ZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9faW5zdGFsbF90eXBlX2RlZmluaXRpb25zX2Zvcl9qUXVlcnlfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoanF1ZXJ5O2Nhc2VcImRlc2NyaWJlXCI6Y2FzZVwic3VpdGVcIjpjYXNlXCJpdFwiOmNhc2VcInRlc3RcIjpyZXR1cm4geWUudHlwZXM/ZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzBfRG9feW91X25lZWRfdG9faW5zdGFsbF90eXBlX2RlZmluaXRpb25zX2Zvcl9hX3Rlc3RfcnVubmVyX1RyeV9ucG1faV9zYXZlX2Rldl90eXBlc19TbGFzaGplc3Rfb3JfbnBtX2lfc2F2ZV9kZXZfdHlwZXNfU2xhc2htb2NoYV9hbmRfdGhlbl9hZGRfamVzdF9vcl9tb2NoYV90b190aGVfdHlwZXNfZmllbGRfaW5feW91cl90c2NvbmZpZzplLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX25hbWVfMF9Eb195b3VfbmVlZF90b19pbnN0YWxsX3R5cGVfZGVmaW5pdGlvbnNfZm9yX2FfdGVzdF9ydW5uZXJfVHJ5X25wbV9pX3NhdmVfZGV2X3R5cGVzX1NsYXNoamVzdF9vcl9ucG1faV9zYXZlX2Rldl90eXBlc19TbGFzaG1vY2hhO2Nhc2VcInByb2Nlc3NcIjpjYXNlXCJyZXF1aXJlXCI6Y2FzZVwiQnVmZmVyXCI6Y2FzZVwibW9kdWxlXCI6cmV0dXJuIHllLnR5cGVzP2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2luc3RhbGxfdHlwZV9kZWZpbml0aW9uc19mb3Jfbm9kZV9UcnlfbnBtX2lfc2F2ZV9kZXZfdHlwZXNfU2xhc2hub2RlX2FuZF90aGVuX2FkZF9ub2RlX3RvX3RoZV90eXBlc19maWVsZF9pbl95b3VyX3RzY29uZmlnOmUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2luc3RhbGxfdHlwZV9kZWZpbml0aW9uc19mb3Jfbm9kZV9UcnlfbnBtX2lfc2F2ZV9kZXZfdHlwZXNfU2xhc2hub2RlO2Nhc2VcIk1hcFwiOmNhc2VcIlNldFwiOmNhc2VcIlByb21pc2VcIjpjYXNlXCJTeW1ib2xcIjpjYXNlXCJXZWFrTWFwXCI6Y2FzZVwiV2Vha1NldFwiOmNhc2VcIkl0ZXJhdG9yXCI6Y2FzZVwiQXN5bmNJdGVyYXRvclwiOmNhc2VcIlNoYXJlZEFycmF5QnVmZmVyXCI6Y2FzZVwiQXRvbWljc1wiOmNhc2VcIkFzeW5jSXRlcmFibGVcIjpjYXNlXCJBc3luY0l0ZXJhYmxlSXRlcmF0b3JcIjpjYXNlXCJBc3luY0dlbmVyYXRvclwiOmNhc2VcIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25cIjpjYXNlXCJCaWdJbnRcIjpjYXNlXCJSZWZsZWN0XCI6Y2FzZVwiQmlnSW50NjRBcnJheVwiOmNhc2VcIkJpZ1VpbnQ2NEFycmF5XCI6cmV0dXJuIGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RvX3lvdV9uZWVkX3RvX2NoYW5nZV95b3VyX3RhcmdldF9saWJyYXJ5X1RyeV9jaGFuZ2luZ190aGVfbGliX2NvbXBpbGVyX29wdGlvbl90b18xX29yX2xhdGVyO2Nhc2VcImF3YWl0XCI6aWYoZS5pc0NhbGxFeHByZXNzaW9uKHIucGFyZW50KSlyZXR1cm4gZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzBfRGlkX3lvdV9tZWFuX3RvX3dyaXRlX3RoaXNfaW5fYW5fYXN5bmNfZnVuY3Rpb247ZGVmYXVsdDpyZXR1cm4gci5wYXJlbnQua2luZD09PTI5Nz9lLkRpYWdub3N0aWNzLk5vX3ZhbHVlX2V4aXN0c19pbl9zY29wZV9mb3JfdGhlX3Nob3J0aGFuZF9wcm9wZXJ0eV8wX0VpdGhlcl9kZWNsYXJlX29uZV9vcl9wcm92aWRlX2FuX2luaXRpYWxpemVyOmUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wfX1mdW5jdGlvbiBEbChyKXt2YXIgaT12YShyKTtyZXR1cm4gaS5yZXNvbHZlZFN5bWJvbHx8KGkucmVzb2x2ZWRTeW1ib2w9IWUubm9kZUlzTWlzc2luZyhyKSYmZXMocixyLmVzY2FwZWRUZXh0LDExNjAxMjcsSEUociksciwhZS5pc1dyaXRlT25seUFjY2VzcyhyKSwhMSl8fHhlKSxpLnJlc29sdmVkU3ltYm9sfWZ1bmN0aW9uIF9tKHIpe3JldHVybiEhZS5maW5kQW5jZXN0b3IocixmdW5jdGlvbihpKXtyZXR1cm4gaS5raW5kPT09MTgxPyEwOmkua2luZD09PTc5fHxpLmtpbmQ9PT0xNjE/ITE6XCJxdWl0XCJ9KX1mdW5jdGlvbiBYaChyLGksdCxvKXtzd2l0Y2goci5raW5kKXtjYXNlIDc5OmlmKCFlLmlzVGhpc0luVHlwZVF1ZXJ5KHIpKXt2YXIgcz1EbChyKTtyZXR1cm4gcyE9PXhlP1wiXCIuY29uY2F0KG8/QShvKTpcIi0xXCIsXCJ8XCIpLmNvbmNhdChmdShpKSxcInxcIikuY29uY2F0KGZ1KHQpLFwifFwiKS5jb25jYXQoeShzKSk6dm9pZCAwfWNhc2UgMTA4OnJldHVyblwiMHxcIi5jb25jYXQobz9BKG8pOlwiLTFcIixcInxcIikuY29uY2F0KGZ1KGkpLFwifFwiKS5jb25jYXQoZnUodCkpO2Nhc2UgMjMwOmNhc2UgMjEyOnJldHVybiBYaChyLmV4cHJlc3Npb24saSx0LG8pO2Nhc2UgMTYxOnZhciB1PVhoKHIubGVmdCxpLHQsbyk7cmV0dXJuIHUmJnUrXCIuXCIrci5yaWdodC5lc2NhcGVkVGV4dDtjYXNlIDIwNjpjYXNlIDIwNzp2YXIgaD13ZChyKTtpZihoIT09dm9pZCAwKXt2YXIgej1YaChyLmV4cHJlc3Npb24saSx0LG8pO3JldHVybiB6JiZ6K1wiLlwiK2h9fX1mdW5jdGlvbiB6cyhyLGkpe3N3aXRjaChpLmtpbmQpe2Nhc2UgMjEyOmNhc2UgMjMwOnJldHVybiB6cyhyLGkuZXhwcmVzc2lvbik7Y2FzZSAyMjE6cmV0dXJuIGUuaXNBc3NpZ25tZW50RXhwcmVzc2lvbihpKSYmenMocixpLmxlZnQpfHxlLmlzQmluYXJ5RXhwcmVzc2lvbihpKSYmaS5vcGVyYXRvclRva2VuLmtpbmQ9PT0yNyYmenMocixpLnJpZ2h0KX1zd2l0Y2goci5raW5kKXtjYXNlIDIzMTpyZXR1cm4gaS5raW5kPT09MjMxJiZyLmtleXdvcmRUb2tlbj09PWkua2V5d29yZFRva2VuJiZyLm5hbWUuZXNjYXBlZFRleHQ9PT1pLm5hbWUuZXNjYXBlZFRleHQ7Y2FzZSA3OTpjYXNlIDgwOnJldHVybiBlLmlzVGhpc0luVHlwZVF1ZXJ5KHIpP2kua2luZD09PTEwODppLmtpbmQ9PT03OSYmRGwocik9PT1EbChpKXx8KGkua2luZD09PTI1NHx8aS5raW5kPT09MjAzKSYmY3UoRGwocikpPT09RXQoaSk7Y2FzZSAxMDg6cmV0dXJuIGkua2luZD09PTEwODtjYXNlIDEwNjpyZXR1cm4gaS5raW5kPT09MTA2O2Nhc2UgMjMwOmNhc2UgMjEyOnJldHVybiB6cyhyLmV4cHJlc3Npb24saSk7Y2FzZSAyMDY6Y2FzZSAyMDc6dmFyIHQ9d2Qociksbz1lLmlzQWNjZXNzRXhwcmVzc2lvbihpKT93ZChpKTp2b2lkIDA7cmV0dXJuIHQhPT12b2lkIDAmJm8hPT12b2lkIDAmJm89PT10JiZ6cyhyLmV4cHJlc3Npb24saS5leHByZXNzaW9uKTtjYXNlIDE2MTpyZXR1cm4gZS5pc0FjY2Vzc0V4cHJlc3Npb24oaSkmJnIucmlnaHQuZXNjYXBlZFRleHQ9PT13ZChpKSYmenMoci5sZWZ0LGkuZXhwcmVzc2lvbik7Y2FzZSAyMjE6cmV0dXJuIGUuaXNCaW5hcnlFeHByZXNzaW9uKHIpJiZyLm9wZXJhdG9yVG9rZW4ua2luZD09PTI3JiZ6cyhyLnJpZ2h0LGkpfXJldHVybiExfWZ1bmN0aW9uIHdkKHIpe2lmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ocikpcmV0dXJuIHIubmFtZS5lc2NhcGVkVGV4dDtpZihlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ocikpcmV0dXJuIHQ4KHIpO2lmKGUuaXNCaW5kaW5nRWxlbWVudChyKSl7dmFyIGk9c2Yocik7cmV0dXJuIGk/ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSk6dm9pZCAwfWlmKGUuaXNQYXJhbWV0ZXIocikpcmV0dXJuXCJcIityLnBhcmVudC5wYXJhbWV0ZXJzLmluZGV4T2Yocil9ZnVuY3Rpb24gWEUocil7cmV0dXJuIHIuZmxhZ3MmODE5Mj9yLmVzY2FwZWROYW1lOnIuZmxhZ3MmMzg0P2UuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFwiXCIrci52YWx1ZSk6dm9pZCAwfWZ1bmN0aW9uIHQ4KHIpe2lmKGUuaXNTdHJpbmdPck51bWVyaWNMaXRlcmFsTGlrZShyLmFyZ3VtZW50RXhwcmVzc2lvbikpcmV0dXJuIGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHIuYXJndW1lbnRFeHByZXNzaW9uLnRleHQpO2lmKGUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbihyLmFyZ3VtZW50RXhwcmVzc2lvbikpe3ZhciBpPURzKHIuYXJndW1lbnRFeHByZXNzaW9uLDExMTU1MSwhMCk7aWYoIWl8fCFwdihpKSlyZXR1cm47dmFyIHQ9aS52YWx1ZURlY2xhcmF0aW9uO2lmKHQ9PT12b2lkIDApcmV0dXJuO3ZhciBvPVJsKHQpO2lmKG8pe3ZhciBzPVhFKG8pO2lmKHMhPT12b2lkIDApcmV0dXJuIHN9aWYoZS5oYXNPbmx5RXhwcmVzc2lvbkluaXRpYWxpemVyKHQpKXt2YXIgdT1lLmdldEVmZmVjdGl2ZUluaXRpYWxpemVyKHQpO3JldHVybiB1JiZYRShHcyh1KSl9fX1mdW5jdGlvbiBRRShyLGkpe2Zvcig7ZS5pc0FjY2Vzc0V4cHJlc3Npb24ocik7KWlmKHI9ci5leHByZXNzaW9uLHpzKHIsaSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gQWcocixpKXtmb3IoO2UuaXNPcHRpb25hbENoYWluKHIpOylpZihyPXIuZXhwcmVzc2lvbix6cyhyLGkpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGx2KHIsaSl7aWYociYmci5mbGFncyYxMDQ4NTc2KXt2YXIgdD0kdihyLGkpO2lmKHQmJmUuZ2V0Q2hlY2tGbGFncyh0KSYyKXJldHVybiB0LmlzRGlzY3JpbWluYW50UHJvcGVydHk9PT12b2lkIDAmJih0LmlzRGlzY3JpbWluYW50UHJvcGVydHk9KHQuY2hlY2tGbGFncyYxOTIpPT09MTkyJiYhcnYoSnQodCkpKSwhIXQuaXNEaXNjcmltaW5hbnRQcm9wZXJ0eX1yZXR1cm4hMX1mdW5jdGlvbiBZRShyLGkpe2Zvcih2YXIgdCxvPTAscz1yO288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dO2lmKGx2KGksdS5lc2NhcGVkTmFtZSkpe2lmKHQpe3QucHVzaCh1KTtjb250aW51ZX10PVt1XX19cmV0dXJuIHR9ZnVuY3Rpb24gYTgocixpKXtmb3IodmFyIHQ9bmV3IGUuTWFwLG89MCxzPWZ1bmN0aW9uKE1lKXtpZihNZS5mbGFncyY2MTYwMzg0MCl7dmFyICRlPWRhKE1lLGkpO2lmKCRlKXtpZighQ2coJGUpKXJldHVybnt2YWx1ZTp2b2lkIDB9O3ZhciB0cj0hMTtPZCgkZSxmdW5jdGlvbihkcil7dmFyIERyPWZ1KGpjKGRyKSksUXI9dC5nZXQoRHIpO1FyP1FyIT09Z3ImJih0LnNldChEcixnciksdHI9ITApOnQuc2V0KERyLE1lKX0pLHRyfHxvKyt9fX0sdT0wLGg9cjt1PGgubGVuZ3RoO3UrKyl7dmFyIHo9aFt1XSxtZT1zKHopO2lmKHR5cGVvZiBtZT09XCJvYmplY3RcIilyZXR1cm4gbWUudmFsdWV9cmV0dXJuIG8+PTEwJiZvKjI+PXIubGVuZ3RoP3Q6dm9pZCAwfWZ1bmN0aW9uIFFoKHIpe3ZhciBpPXIudHlwZXM7aWYoIShpLmxlbmd0aDwxMHx8ZS5nZXRPYmplY3RGbGFncyhyKSYzMjc2OHx8ZS5jb3VudFdoZXJlKGksZnVuY3Rpb24ocyl7cmV0dXJuISEocy5mbGFncyY1OTUwNjY4OCl9KTwxMCkpe2lmKHIua2V5UHJvcGVydHlOYW1lPT09dm9pZCAwKXt2YXIgdD1lLmZvckVhY2goaSxmdW5jdGlvbihzKXtyZXR1cm4gcy5mbGFncyY1OTUwNjY4OD9lLmZvckVhY2godW8ocyksZnVuY3Rpb24odSl7cmV0dXJuIFZsKEp0KHUpKT91LmVzY2FwZWROYW1lOnZvaWQgMH0pOnZvaWQgMH0pLG89dCYmYTgoaSx0KTtyLmtleVByb3BlcnR5TmFtZT1vP3Q6XCJcIixyLmNvbnN0aXR1ZW50TWFwPW99cmV0dXJuIHIua2V5UHJvcGVydHlOYW1lLmxlbmd0aD9yLmtleVByb3BlcnR5TmFtZTp2b2lkIDB9fWZ1bmN0aW9uIFloKHIsaSl7dmFyIHQsbz0odD1yLmNvbnN0aXR1ZW50TWFwKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZ2V0KGZ1KGpjKGkpKSk7cmV0dXJuIG8hPT1ncj9vOnZvaWQgMH1mdW5jdGlvbiAkRShyLGkpe3ZhciB0PVFoKHIpLG89dCYmZGEoaSx0KTtyZXR1cm4gbyYmWWgocixvKX1mdW5jdGlvbiBuOChyLGkpe3ZhciB0PVFoKHIpLG89dCYmZS5maW5kKGkucHJvcGVydGllcyxmdW5jdGlvbih1KXtyZXR1cm4gdS5zeW1ib2wmJnUua2luZD09PTI5NiYmdS5zeW1ib2wuZXNjYXBlZE5hbWU9PT10JiZoeSh1LmluaXRpYWxpemVyKX0pLHM9byYmT3koby5pbml0aWFsaXplcik7cmV0dXJuIHMmJlloKHIscyl9ZnVuY3Rpb24gWkUocixpKXtyZXR1cm4genMocixpKXx8UUUocixpKX1mdW5jdGlvbiBlQyhyLGkpe2lmKHIuYXJndW1lbnRzKWZvcih2YXIgdD0wLG89ci5hcmd1bWVudHM7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aWYoWkUoaSxzKSlyZXR1cm4hMH1yZXR1cm4hIShyLmV4cHJlc3Npb24ua2luZD09PTIwNiYmWkUoaSxyLmV4cHJlc3Npb24uZXhwcmVzc2lvbikpfWZ1bmN0aW9uIHBiKHIpe3JldHVybighci5pZHx8ci5pZDwwKSYmKHIuaWQ9USxRKyspLHIuaWR9ZnVuY3Rpb24gbzgocixpKXtpZighKHIuZmxhZ3MmMTA0ODU3NikpcmV0dXJuIGFvKHIsaSk7Zm9yKHZhciB0PTAsbz1yLnR5cGVzO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdO2lmKGFvKHMsaSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gczgocixpKXtpZihyIT09aSl7aWYoaS5mbGFncyYxMzEwNzIpcmV0dXJuIGk7dmFyIHQ9ZWMocixmdW5jdGlvbihvKXtyZXR1cm4gbzgoaSxvKX0pO2lmKGkuZmxhZ3MmNTEyJiZLcChpKSYmKHQ9U3ModCxTZykpLGFvKGksdCkpcmV0dXJuIHR9cmV0dXJuIHJ9ZnVuY3Rpb24gZGIocil7dmFyIGk9UnUocik7cmV0dXJuISEoaS5jYWxsU2lnbmF0dXJlcy5sZW5ndGh8fGkuY29uc3RydWN0U2lnbmF0dXJlcy5sZW5ndGh8fGkubWVtYmVycy5nZXQoXCJiaW5kXCIpJiZFXyhyLGJyKSl9ZnVuY3Rpb24gY3AocixpKXtpPT09dm9pZCAwJiYoaT0hMSk7dmFyIHQ9ci5mbGFncztpZih0JjQpcmV0dXJuIFllPzE2MzE3OTUzOjE2Nzc2NzA1O2lmKHQmMTI4KXt2YXIgbz1yLnZhbHVlPT09XCJcIjtyZXR1cm4gWWU/bz8xMjEyMzY0OTo3OTI5MzQ1Om8/MTI1ODI0MDE6MTY3NzY3MDV9aWYodCY0MClyZXR1cm4gWWU/MTYzMTc2OTg6MTY3NzY0NTA7aWYodCYyNTYpe3ZhciBzPXIudmFsdWU9PT0wO3JldHVybiBZZT9zPzEyMTIzMzk0Ojc5MjkwOTA6cz8xMjU4MjE0NjoxNjc3NjQ1MH1pZih0JjY0KXJldHVybiBZZT8xNjMxNzE4ODoxNjc3NTk0MDtpZih0JjIwNDgpe3ZhciBzPVFEKHIpO3JldHVybiBZZT9zPzEyMTIyODg0Ojc5Mjg1ODA6cz8xMjU4MTYzNjoxNjc3NTk0MH1yZXR1cm4gdCYxNj9ZZT8xNjMxNjE2ODoxNjc3NDkyMDp0JjUyOD9ZZT9yPT09eHR8fHI9PT11dD8xMjEyMTg2NDo3OTI3NTYwOnI9PT14dHx8cj09PXV0PzEyNTgwNjE2OjE2Nzc0OTIwOnQmNTI0Mjg4P2k/MTY3Njg5NTk6ZS5nZXRPYmplY3RGbGFncyhyKSYxNiYmT2Yocik/WWU/MTYzMTg0NjM6MTY3NzcyMTU6ZGIocik/WWU/Nzg4MDY0MDoxNjcyOGUzOlllPzc4ODg4MDA6MTY3MzYxNjA6dCY0OTE1Mj85ODMwMTQ0OnQmNjU1MzY/OTM2MzIzMjp0JjEyMjg4P1llPzc5MjU1MjA6MTY3NzI4ODA6dCY2NzEwODg2ND9ZZT83ODg4ODAwOjE2NzM2MTYwOnQmMTMxMDcyPzA6dCY0NjU4Mjk4ODg/c20ocik/WWU/NzkyOTM0NToxNjc3NjcwNTpjcCh1YyhyKXx8Z3IsaSk6dCYxMDQ4NTc2P2UucmVkdWNlTGVmdChyLnR5cGVzLGZ1bmN0aW9uKHUsaCl7cmV0dXJuIHV8Y3AoaCxpKX0sMCk6dCYyMDk3MTUyPyhpfHwoaT1mcyhyLDEzMTA2OCkpLGM4KHIsaSkpOjE2Nzc3MjE1fWZ1bmN0aW9uIGM4KHIsaSl7Zm9yKHZhciB0PTAsbz0xNjc3NzIxNSxzPTAsdT1yLnR5cGVzO3M8dS5sZW5ndGg7cysrKXt2YXIgaD11W3NdLHo9Y3AoaCxpKTt0fD16LG8mPXp9cmV0dXJuIHQmODI1NnxvJjE2NzY4OTU5fWZ1bmN0aW9uIEtzKHIsaSl7cmV0dXJuIGVjKHIsZnVuY3Rpb24odCl7cmV0dXJuKGNwKHQpJmkpIT09MH0pfWZ1bmN0aW9uIGdiKHIsaSl7cmV0dXJuIGk/UGEoW3V1KHIpLEdzKGkpXSk6cn1mdW5jdGlvbiByQyhyLGkpe3ZhciB0LG89Wl8oaSk7aWYoIV9mKG8pKXJldHVybiBQZTt2YXIgcz1wZihvKTtyZXR1cm4gZGEocixzKXx8ZnYoKHQ9WG8ocixzKSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnR5cGUpfHxQZX1mdW5jdGlvbiBpQyhyLGkpe3JldHVybiBnZihyLEVnKSYmeHcocixpKXx8ZnYoTl8oNjUscixUcix2b2lkIDApKXx8UGV9ZnVuY3Rpb24gZnYocil7cmV0dXJuIHImJih5ZS5ub1VuY2hlY2tlZEluZGV4ZWRBY2Nlc3M/UGEoW3IsVHJdKTpyKX1mdW5jdGlvbiB0QyhyKXtyZXR1cm4gWnMoTl8oNjUscixUcix2b2lkIDApfHxQZSl9ZnVuY3Rpb24gdTgocil7dmFyIGk9ci5wYXJlbnQua2luZD09PTIwNCYmbWIoci5wYXJlbnQpfHxyLnBhcmVudC5raW5kPT09Mjk2JiZtYihyLnBhcmVudC5wYXJlbnQpO3JldHVybiBpP2diKHB5KHIpLHIucmlnaHQpOkdzKHIucmlnaHQpfWZ1bmN0aW9uIG1iKHIpe3JldHVybiByLnBhcmVudC5raW5kPT09MjIxJiZyLnBhcmVudC5sZWZ0PT09cnx8ci5wYXJlbnQua2luZD09PTI0NCYmci5wYXJlbnQuaW5pdGlhbGl6ZXI9PT1yfWZ1bmN0aW9uIGw4KHIsaSl7cmV0dXJuIGlDKHB5KHIpLHIuZWxlbWVudHMuaW5kZXhPZihpKSl9ZnVuY3Rpb24gZjgocil7cmV0dXJuIHRDKHB5KHIucGFyZW50KSl9ZnVuY3Rpb24gYUMocil7cmV0dXJuIHJDKHB5KHIucGFyZW50KSxyLm5hbWUpfWZ1bmN0aW9uIF84KHIpe3JldHVybiBnYihhQyhyKSxyLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcil9ZnVuY3Rpb24gcHkocil7dmFyIGk9ci5wYXJlbnQ7c3dpdGNoKGkua2luZCl7Y2FzZSAyNDM6cmV0dXJuIExpO2Nhc2UgMjQ0OnJldHVybiBCeShpKXx8UGU7Y2FzZSAyMjE6cmV0dXJuIHU4KGkpO2Nhc2UgMjE1OnJldHVybiBUcjtjYXNlIDIwNDpyZXR1cm4gbDgoaSxyKTtjYXNlIDIyNTpyZXR1cm4gZjgoaSk7Y2FzZSAyOTY6cmV0dXJuIGFDKGkpO2Nhc2UgMjk3OnJldHVybiBfOChpKX1yZXR1cm4gUGV9ZnVuY3Rpb24gcDgocil7dmFyIGk9ci5wYXJlbnQsdD1vQyhpLnBhcmVudCksbz1pLmtpbmQ9PT0yMDE/ckModCxyLnByb3BlcnR5TmFtZXx8ci5uYW1lKTpyLmRvdERvdERvdFRva2VuP3RDKHQpOmlDKHQsaS5lbGVtZW50cy5pbmRleE9mKHIpKTtyZXR1cm4gZ2IobyxyLmluaXRpYWxpemVyKX1mdW5jdGlvbiBuQyhyKXt2YXIgaT12YShyKTtyZXR1cm4gaS5yZXNvbHZlZFR5cGV8fEdzKHIpfWZ1bmN0aW9uIGQ4KHIpe3JldHVybiByLmluaXRpYWxpemVyP25DKHIuaW5pdGlhbGl6ZXIpOnIucGFyZW50LnBhcmVudC5raW5kPT09MjQzP0xpOnIucGFyZW50LnBhcmVudC5raW5kPT09MjQ0JiZCeShyLnBhcmVudC5wYXJlbnQpfHxQZX1mdW5jdGlvbiBvQyhyKXtyZXR1cm4gci5raW5kPT09MjU0P2Q4KHIpOnA4KHIpfWZ1bmN0aW9uIGc4KHIpe3JldHVybiByLmtpbmQ9PT0yNTQmJnIuaW5pdGlhbGl6ZXImJkhmKHIuaW5pdGlhbGl6ZXIpfHxyLmtpbmQhPT0yMDMmJnIucGFyZW50LmtpbmQ9PT0yMjEmJkhmKHIucGFyZW50LnJpZ2h0KX1mdW5jdGlvbiBZcChyKXtzd2l0Y2goci5raW5kKXtjYXNlIDIxMjpyZXR1cm4gWXAoci5leHByZXNzaW9uKTtjYXNlIDIyMTpzd2l0Y2goci5vcGVyYXRvclRva2VuLmtpbmQpe2Nhc2UgNjM6Y2FzZSA3NTpjYXNlIDc2OmNhc2UgNzc6cmV0dXJuIFlwKHIubGVmdCk7Y2FzZSAyNzpyZXR1cm4gWXAoci5yaWdodCl9fXJldHVybiByfWZ1bmN0aW9uIHNDKHIpe3ZhciBpPXIucGFyZW50O3JldHVybiBpLmtpbmQ9PT0yMTJ8fGkua2luZD09PTIyMSYmaS5vcGVyYXRvclRva2VuLmtpbmQ9PT02MyYmaS5sZWZ0PT09cnx8aS5raW5kPT09MjIxJiZpLm9wZXJhdG9yVG9rZW4ua2luZD09PTI3JiZpLnJpZ2h0PT09cj9zQyhpKTpyfWZ1bmN0aW9uIG04KHIpe3JldHVybiByLmtpbmQ9PT0yODk/amMoR3Moci5leHByZXNzaW9uKSk6dWl9ZnVuY3Rpb24gJGgocil7dmFyIGk9dmEocik7aWYoIWkuc3dpdGNoVHlwZXMpe2kuc3dpdGNoVHlwZXM9W107Zm9yKHZhciB0PTAsbz1yLmNhc2VCbG9jay5jbGF1c2VzO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdO2kuc3dpdGNoVHlwZXMucHVzaChtOChzKSl9fXJldHVybiBpLnN3aXRjaFR5cGVzfWZ1bmN0aW9uIGNDKHIsaSl7Zm9yKHZhciB0PVtdLG89MCxzPXIuY2FzZUJsb2NrLmNsYXVzZXM7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107aWYodS5raW5kPT09Mjg5KXtpZihlLmlzU3RyaW5nTGl0ZXJhbExpa2UodS5leHByZXNzaW9uKSl7dC5wdXNoKHUuZXhwcmVzc2lvbi50ZXh0KTtjb250aW51ZX1yZXR1cm4gZS5lbXB0eUFycmF5fWkmJnQucHVzaCh2b2lkIDApfXJldHVybiB0fWZ1bmN0aW9uIHY4KHIsaSl7cmV0dXJuIHIuZmxhZ3MmMTA0ODU3Nj8hZS5mb3JFYWNoKHIudHlwZXMsZnVuY3Rpb24odCl7cmV0dXJuIWUuY29udGFpbnMoaSx0KX0pOmUuY29udGFpbnMoaSxyKX1mdW5jdGlvbiBkeShyLGkpe3JldHVybiByPT09aXx8aS5mbGFncyYxMDQ4NTc2JiZ5OChyLGkpfWZ1bmN0aW9uIHk4KHIsaSl7aWYoci5mbGFncyYxMDQ4NTc2KXtmb3IodmFyIHQ9MCxvPXIudHlwZXM7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aWYoISRmKGkudHlwZXMscykpcmV0dXJuITF9cmV0dXJuITB9cmV0dXJuIHIuZmxhZ3MmMTAyNCYmY2Mocik9PT1pPyEwOiRmKGkudHlwZXMscil9ZnVuY3Rpb24gT2QocixpKXtyZXR1cm4gci5mbGFncyYxMDQ4NTc2P2UuZm9yRWFjaChyLnR5cGVzLGkpOmkocil9ZnVuY3Rpb24gcmcocixpKXtyZXR1cm4gci5mbGFncyYxMDQ4NTc2P2Uuc29tZShyLnR5cGVzLGkpOmkocil9ZnVuY3Rpb24gZ2YocixpKXtyZXR1cm4gci5mbGFncyYxMDQ4NTc2P2UuZXZlcnkoci50eXBlcyxpKTppKHIpfWZ1bmN0aW9uIGg4KHIsaSl7cmV0dXJuIHIuZmxhZ3MmMzE0NTcyOD9lLmV2ZXJ5KHIudHlwZXMsaSk6aShyKX1mdW5jdGlvbiBlYyhyLGkpe2lmKHIuZmxhZ3MmMTA0ODU3Nil7dmFyIHQ9ci50eXBlcyxvPWUuZmlsdGVyKHQsaSk7aWYobz09PXQpcmV0dXJuIHI7dmFyIHM9ci5vcmlnaW4sdT12b2lkIDA7aWYocyYmcy5mbGFncyYxMDQ4NTc2KXt2YXIgaD1zLnR5cGVzLHo9ZS5maWx0ZXIoaCxmdW5jdGlvbihtZSl7cmV0dXJuISEobWUuZmxhZ3MmMTA0ODU3Nil8fGkobWUpfSk7aWYoaC5sZW5ndGgtei5sZW5ndGg9PT10Lmxlbmd0aC1vLmxlbmd0aCl7aWYoei5sZW5ndGg9PT0xKXJldHVybiB6WzBdO3U9ZkQoMTA0ODU3Nix6KX19cmV0dXJuIHBEKG8sci5vYmplY3RGbGFncyx2b2lkIDAsdm9pZCAwLHUpfXJldHVybiByLmZsYWdzJjEzMTA3Mnx8aShyKT9yOnVpfWZ1bmN0aW9uIFpoKHIsaSl7cmV0dXJuIGVjKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1pfSl9ZnVuY3Rpb24gRDgocil7cmV0dXJuIHIuZmxhZ3MmMTA0ODU3Nj9yLnR5cGVzLmxlbmd0aDoxfWZ1bmN0aW9uIFNzKHIsaSx0KXtpZihyLmZsYWdzJjEzMTA3MilyZXR1cm4gcjtpZighKHIuZmxhZ3MmMTA0ODU3NikpcmV0dXJuIGkocik7Zm9yKHZhciBvPXIub3JpZ2luLHM9byYmby5mbGFncyYxMDQ4NTc2P28udHlwZXM6ci50eXBlcyx1LGg9ITEsej0wLG1lPXM7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel0sJGU9TWUuZmxhZ3MmMTA0ODU3Nj9TcyhNZSxpLHQpOmkoTWUpO2h8fChoPU1lIT09JGUpLCRlJiYodT91LnB1c2goJGUpOnU9WyRlXSl9cmV0dXJuIGg/dSYmUGEodSx0PzA6MSk6cn1mdW5jdGlvbiB1QyhyLGksdCxvKXtyZXR1cm4gci5mbGFncyYxMDQ4NTc2JiZ0P1BhKGUubWFwKHIudHlwZXMsaSksMSx0LG8pOlNzKHIsaSl9ZnVuY3Rpb24gTmcocixpKXtyZXR1cm4gZWMocixmdW5jdGlvbih0KXtyZXR1cm4odC5mbGFncyZpKSE9PTB9KX1mdW5jdGlvbiBsQyhyLGkpe3JldHVybiBmcyhyLDEzNDIxNzgwNCkmJmZzKGksNDAyNjU1NjE2KT9TcyhyLGZ1bmN0aW9uKHQpe3JldHVybiB0LmZsYWdzJjQ/TmcoaSw0MDI2NTMzMTYpOnNtKHQpJiYhZnMoaSw0MDI2NTMxODgpP05nKGksMTI4KTp0LmZsYWdzJjg/TmcoaSwyNjQpOnQuZmxhZ3MmNjQ/TmcoaSwyMTEyKTp0fSk6cn1mdW5jdGlvbiBQZyhyKXtyZXR1cm4gci5mbGFncz09PTB9ZnVuY3Rpb24gRmQocil7cmV0dXJuIHIuZmxhZ3M9PT0wP3IudHlwZTpyfWZ1bmN0aW9uIElnKHIsaSl7cmV0dXJuIGk/e2ZsYWdzOjAsdHlwZTpyLmZsYWdzJjEzMTA3Mj9CdDpyfTpyfWZ1bmN0aW9uIGI4KHIpe3ZhciBpPXR1KDI1Nik7cmV0dXJuIGkuZWxlbWVudFR5cGU9cixpfWZ1bmN0aW9uIHZiKHIpe3JldHVybiB6cltyLmlkXXx8KHpyW3IuaWRdPWI4KHIpKX1mdW5jdGlvbiBmQyhyLGkpe3ZhciB0PWZtKEtsKE95KGkpKSk7cmV0dXJuIGR5KHQsci5lbGVtZW50VHlwZSk/cjp2YihQYShbci5lbGVtZW50VHlwZSx0XSkpfWZ1bmN0aW9uIFM4KHIpe3JldHVybiByLmZsYWdzJjEzMTA3Mj9TbzpacyhyLmZsYWdzJjEwNDg1NzY/UGEoci50eXBlcywyKTpyKX1mdW5jdGlvbiBUOChyKXtyZXR1cm4gci5maW5hbEFycmF5VHlwZXx8KHIuZmluYWxBcnJheVR5cGU9Uzgoci5lbGVtZW50VHlwZSkpfWZ1bmN0aW9uIGUwKHIpe3JldHVybiBlLmdldE9iamVjdEZsYWdzKHIpJjI1Nj9UOChyKTpyfWZ1bmN0aW9uIHg4KHIpe3JldHVybiBlLmdldE9iamVjdEZsYWdzKHIpJjI1Nj9yLmVsZW1lbnRUeXBlOnVpfWZ1bmN0aW9uIEU4KHIpe2Zvcih2YXIgaT0hMSx0PTAsbz1yO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdO2lmKCEocy5mbGFncyYxMzEwNzIpKXtpZighKGUuZ2V0T2JqZWN0RmxhZ3MocykmMjU2KSlyZXR1cm4hMTtpPSEwfX1yZXR1cm4gaX1mdW5jdGlvbiBfQyhyKXt2YXIgaT1zQyhyKSx0PWkucGFyZW50LG89ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih0KSYmKHQubmFtZS5lc2NhcGVkVGV4dD09PVwibGVuZ3RoXCJ8fHQucGFyZW50LmtpbmQ9PT0yMDgmJmUuaXNJZGVudGlmaWVyKHQubmFtZSkmJmUuaXNQdXNoT3JVbnNoaWZ0SWRlbnRpZmllcih0Lm5hbWUpKSxzPXQua2luZD09PTIwNyYmdC5leHByZXNzaW9uPT09aSYmdC5wYXJlbnQua2luZD09PTIyMSYmdC5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kPT09NjMmJnQucGFyZW50LmxlZnQ9PT10JiYhZS5pc0Fzc2lnbm1lbnRUYXJnZXQodC5wYXJlbnQpJiZOcyhHcyh0LmFyZ3VtZW50RXhwcmVzc2lvbiksMjk2KTtyZXR1cm4gb3x8c31mdW5jdGlvbiBDOChyKXtyZXR1cm4oZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocil8fGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHIpfHxlLmlzUHJvcGVydHlTaWduYXR1cmUocil8fGUuaXNQYXJhbWV0ZXIocikpJiYhIShlLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZShyKXx8ZS5pc0luSlNGaWxlKHIpJiZlLmhhc0luaXRpYWxpemVyKHIpJiZyLmluaXRpYWxpemVyJiZlLmlzRnVuY3Rpb25FeHByZXNzaW9uT3JBcnJvd0Z1bmN0aW9uKHIuaW5pdGlhbGl6ZXIpJiZlLmdldEVmZmVjdGl2ZVJldHVyblR5cGVOb2RlKHIuaW5pdGlhbGl6ZXIpKX1mdW5jdGlvbiByMChyLGkpe2lmKHIuZmxhZ3MmODc1MilyZXR1cm4gSnQocik7aWYoci5mbGFncyY3KXtpZihlLmdldENoZWNrRmxhZ3MocikmMjYyMTQ0KXt2YXIgdD1yLnN5bnRoZXRpY09yaWdpbjtpZih0JiZyMCh0KSlyZXR1cm4gSnQocil9dmFyIG89ci52YWx1ZURlY2xhcmF0aW9uO2lmKG8pe2lmKEM4KG8pKXJldHVybiBKdChyKTtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihvKSYmby5wYXJlbnQucGFyZW50LmtpbmQ9PT0yNDQpe3ZhciBzPW8ucGFyZW50LnBhcmVudCx1PWd5KHMuZXhwcmVzc2lvbix2b2lkIDApO2lmKHUpe3ZhciBoPXMuYXdhaXRNb2RpZmllcj8xNToxMztyZXR1cm4gTl8oaCx1LFRyLHZvaWQgMCl9fWkmJmUuYWRkUmVsYXRlZEluZm8oaSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG8sZS5EaWFnbm9zdGljcy5fMF9uZWVkc19hbl9leHBsaWNpdF90eXBlX2Fubm90YXRpb24sdG4ocikpKX19fWZ1bmN0aW9uIGd5KHIsaSl7aWYoIShyLmZsYWdzJjMzNTU0NDMyKSlzd2l0Y2goci5raW5kKXtjYXNlIDc5OnZhciB0PWN1KERsKHIpKTtyZXR1cm4gcjAodC5mbGFncyYyMDk3MTUyP1BzKHQpOnQsaSk7Y2FzZSAxMDg6cmV0dXJuIHE4KHIpO2Nhc2UgMTA2OnJldHVybiBTYihyKTtjYXNlIDIwNjp7dmFyIG89Z3koci5leHByZXNzaW9uLGkpO2lmKG8pe3ZhciBzPXIubmFtZSx1PXZvaWQgMDtpZihlLmlzUHJpdmF0ZUlkZW50aWZpZXIocykpe2lmKCFvLnN5bWJvbClyZXR1cm47dT1iaShvLGUuZ2V0U3ltYm9sTmFtZUZvclByaXZhdGVJZGVudGlmaWVyKG8uc3ltYm9sLHMuZXNjYXBlZFRleHQpKX1lbHNlIHU9YmkobyxzLmVzY2FwZWRUZXh0KTtyZXR1cm4gdSYmcjAodSxpKX1yZXR1cm59Y2FzZSAyMTI6cmV0dXJuIGd5KHIuZXhwcmVzc2lvbixpKX19ZnVuY3Rpb24gaTAocil7dmFyIGk9dmEociksdD1pLmVmZmVjdHNTaWduYXR1cmU7aWYodD09PXZvaWQgMCl7dmFyIG89dm9pZCAwO3IucGFyZW50LmtpbmQ9PT0yMzg/bz1neShyLmV4cHJlc3Npb24sdm9pZCAwKTpyLmV4cHJlc3Npb24ua2luZCE9PTEwNiYmKGUuaXNPcHRpb25hbENoYWluKHIpP289YmwoY3YoeW4oci5leHByZXNzaW9uKSxyLmV4cHJlc3Npb24pLHIuZXhwcmVzc2lvbik6bz1nbShyLmV4cHJlc3Npb24pKTt2YXIgcz1vdChvJiYkcyhvKXx8Z3IsMCksdT1zLmxlbmd0aD09PTEmJiFzWzBdLnR5cGVQYXJhbWV0ZXJzP3NbMF06ZS5zb21lKHMscEMpP01nKHIpOnZvaWQgMDt0PWkuZWZmZWN0c1NpZ25hdHVyZT11JiZwQyh1KT91OldufXJldHVybiB0PT09V24/dm9pZCAwOnR9ZnVuY3Rpb24gcEMocil7cmV0dXJuISEoWWMocil8fHIuZGVjbGFyYXRpb24mJih5ZyhyLmRlY2xhcmF0aW9uKXx8Z3IpLmZsYWdzJjEzMTA3Mil9ZnVuY3Rpb24gazgocixpKXtpZihyLmtpbmQ9PT0xfHxyLmtpbmQ9PT0zKXJldHVybiBpLmFyZ3VtZW50c1tyLnBhcmFtZXRlckluZGV4XTt2YXIgdD1lLnNraXBQYXJlbnRoZXNlcyhpLmV4cHJlc3Npb24pO3JldHVybiBlLmlzQWNjZXNzRXhwcmVzc2lvbih0KT9lLnNraXBQYXJlbnRoZXNlcyh0LmV4cHJlc3Npb24pOnZvaWQgMH1mdW5jdGlvbiBBOChyKXt2YXIgaT1lLmZpbmRBbmNlc3RvcihyLGUuaXNGdW5jdGlvbk9yTW9kdWxlQmxvY2spLHQ9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLG89ZS5nZXRTcGFuT2ZUb2tlbkF0UG9zaXRpb24odCxpLnN0YXRlbWVudHMucG9zKTtybi5hZGQoZS5jcmVhdGVGaWxlRGlhZ25vc3RpYyh0LG8uc3RhcnQsby5sZW5ndGgsZS5EaWFnbm9zdGljcy5UaGVfY29udGFpbmluZ19mdW5jdGlvbl9vcl9tb2R1bGVfYm9keV9pc190b29fbGFyZ2VfZm9yX2NvbnRyb2xfZmxvd19hbmFseXNpcykpfWZ1bmN0aW9uIG15KHIpe3ZhciBpPXQwKHIsITEpO3JldHVybiBzdT1yLHRsPWksaX1mdW5jdGlvbiB2eShyKXt2YXIgaT1lLnNraXBQYXJlbnRoZXNlcyhyLCEwKTtyZXR1cm4gaS5raW5kPT09OTV8fGkua2luZD09PTIyMSYmKGkub3BlcmF0b3JUb2tlbi5raW5kPT09NTUmJih2eShpLmxlZnQpfHx2eShpLnJpZ2h0KSl8fGkub3BlcmF0b3JUb2tlbi5raW5kPT09NTYmJnZ5KGkubGVmdCkmJnZ5KGkucmlnaHQpKX1mdW5jdGlvbiB0MChyLGkpe2Zvcig7Oyl7aWYocj09PXN1KXJldHVybiB0bDt2YXIgdD1yLmZsYWdzO2lmKHQmNDA5Nil7aWYoIWkpe3ZhciBvPXBiKHIpLHM9YnRbb107cmV0dXJuIHMhPT12b2lkIDA/czpidFtvXT10MChyLCEwKX1pPSExfWlmKHQmMzY4KXI9ci5hbnRlY2VkZW50O2Vsc2UgaWYodCY1MTIpe3ZhciB1PWkwKHIubm9kZSk7aWYodSl7dmFyIGg9WWModSk7aWYoaCYmaC5raW5kPT09MyYmIWgudHlwZSl7dmFyIHo9ci5ub2RlLmFyZ3VtZW50c1toLnBhcmFtZXRlckluZGV4XTtpZih6JiZ2eSh6KSlyZXR1cm4hMX1pZih5byh1KS5mbGFncyYxMzEwNzIpcmV0dXJuITF9cj1yLmFudGVjZWRlbnR9ZWxzZXtpZih0JjQpcmV0dXJuIGUuc29tZShyLmFudGVjZWRlbnRzLGZ1bmN0aW9uKGRyKXtyZXR1cm4gdDAoZHIsITEpfSk7aWYodCY4KXt2YXIgbWU9ci5hbnRlY2VkZW50cztpZihtZT09PXZvaWQgMHx8bWUubGVuZ3RoPT09MClyZXR1cm4hMTtyPW1lWzBdfWVsc2UgaWYodCYxMjgpe2lmKHIuY2xhdXNlU3RhcnQ9PT1yLmNsYXVzZUVuZCYmTGsoci5zd2l0Y2hTdGF0ZW1lbnQpKXJldHVybiExO3I9ci5hbnRlY2VkZW50fWVsc2UgaWYodCYxMDI0KXtzdT12b2lkIDA7dmFyIE1lPXIudGFyZ2V0LCRlPU1lLmFudGVjZWRlbnRzO01lLmFudGVjZWRlbnRzPXIuYW50ZWNlZGVudHM7dmFyIHRyPXQwKHIuYW50ZWNlZGVudCwhMSk7cmV0dXJuIE1lLmFudGVjZWRlbnRzPSRlLHRyfWVsc2UgcmV0dXJuISh0JjEpfX19ZnVuY3Rpb24gYTAocixpKXtmb3IoOzspe3ZhciB0PXIuZmxhZ3M7aWYodCY0MDk2KXtpZighaSl7dmFyIG89cGIocikscz1pYVtvXTtyZXR1cm4gcyE9PXZvaWQgMD9zOmlhW29dPWEwKHIsITApfWk9ITF9aWYodCY0OTYpcj1yLmFudGVjZWRlbnQ7ZWxzZSBpZih0JjUxMil7aWYoci5ub2RlLmV4cHJlc3Npb24ua2luZD09PTEwNilyZXR1cm4hMDtyPXIuYW50ZWNlZGVudH1lbHNle2lmKHQmNClyZXR1cm4gZS5ldmVyeShyLmFudGVjZWRlbnRzLGZ1bmN0aW9uKG1lKXtyZXR1cm4gYTAobWUsITEpfSk7aWYodCY4KXI9ci5hbnRlY2VkZW50c1swXTtlbHNlIGlmKHQmMTAyNCl7dmFyIHU9ci50YXJnZXQsaD11LmFudGVjZWRlbnRzO3UuYW50ZWNlZGVudHM9ci5hbnRlY2VkZW50czt2YXIgej1hMChyLmFudGVjZWRlbnQsITEpO3JldHVybiB1LmFudGVjZWRlbnRzPWgsen1lbHNlIHJldHVybiEhKHQmMSl9fX1mdW5jdGlvbiBkQyhyKXtzd2l0Y2goci5raW5kKXtjYXNlIDc5Ont2YXIgaT1EbChyKTtyZXR1cm4gcHYoaSl8fGUuaXNQYXJhbWV0ZXJPckNhdGNoQ2xhdXNlVmFyaWFibGUoaSkmJiFuMChpKX1jYXNlIDIwNjpjYXNlIDIwNzpyZXR1cm4gZEMoci5leHByZXNzaW9uKSYmWnUodmEocikucmVzb2x2ZWRTeW1ib2x8fHhlKX1yZXR1cm4hMX1mdW5jdGlvbiB1cChyLGksdCxvLHMpe3Q9PT12b2lkIDAmJih0PWkpLHM9PT12b2lkIDAmJihzPXIuZmxvd05vZGUpO3ZhciB1LGg9ITEsej0wO2lmKEJzKXJldHVybiBQZTtpZighcylyZXR1cm4gaTt4YysrO3ZhciBtZT1NcyxNZT1GZChkcihzKSk7TXM9bWU7dmFyICRlPWUuZ2V0T2JqZWN0RmxhZ3MoTWUpJjI1NiYmX0Mocik/U286ZTAoTWUpO2lmKCRlPT09QWl8fHIucGFyZW50JiZyLnBhcmVudC5raW5kPT09MjMwJiYhKCRlLmZsYWdzJjEzMTA3MikmJktzKCRlLDIwOTcxNTIpLmZsYWdzJjEzMTA3MilyZXR1cm4gaTtyZXR1cm4gJGU9PT1Wcj9ncjokZTtmdW5jdGlvbiB0cigpe3JldHVybiBoP3U6KGg9ITAsdT1YaChyLGksdCxvKSl9ZnVuY3Rpb24gZHIoWXIpe2lmKHo9PT0yZTMpcmV0dXJuIGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLmluc3RhbnQoXCJjaGVja1R5cGVzXCIsXCJnZXRUeXBlQXRGbG93Tm9kZV9EZXB0aExpbWl0XCIse2Zsb3dJZDpZci5pZH0pLEJzPSEwLEE4KHIpLFBlO3orKztmb3IodmFyIE5pOzspe3ZhciBIaT1Zci5mbGFncztpZihIaSY0MDk2KXtmb3IodmFyIF90PW1lO190PE1zO190KyspaWYodHRbX3RdPT09WXIpcmV0dXJuIHotLSxrdFtfdF07Tmk9WXJ9dmFyIGd0PXZvaWQgMDtpZihIaSYxNil7aWYoZ3Q9UXIoWXIpLCFndCl7WXI9WXIuYW50ZWNlZGVudDtjb250aW51ZX19ZWxzZSBpZihIaSY1MTIpe2lmKGd0PVRpKFlyKSwhZ3Qpe1lyPVlyLmFudGVjZWRlbnQ7Y29udGludWV9fWVsc2UgaWYoSGkmOTYpZ3Q9JGkoWXIpO2Vsc2UgaWYoSGkmMTI4KWd0PVppKFlyKTtlbHNlIGlmKEhpJjEyKXtpZihZci5hbnRlY2VkZW50cy5sZW5ndGg9PT0xKXtZcj1Zci5hbnRlY2VkZW50c1swXTtjb250aW51ZX1ndD1IaSY0P3F0KFlyKTpOdChZcil9ZWxzZSBpZihIaSYyNTYpe2lmKGd0PUNpKFlyKSwhZ3Qpe1lyPVlyLmFudGVjZWRlbnQ7Y29udGludWV9fWVsc2UgaWYoSGkmMTAyNCl7dmFyIFZ0PVlyLnRhcmdldCxGYT1WdC5hbnRlY2VkZW50cztWdC5hbnRlY2VkZW50cz1Zci5hbnRlY2VkZW50cyxndD1kcihZci5hbnRlY2VkZW50KSxWdC5hbnRlY2VkZW50cz1GYX1lbHNlIGlmKEhpJjIpe3ZhciBvbj1Zci5ub2RlO2lmKG9uJiZvbiE9PW8mJnIua2luZCE9PTIwNiYmci5raW5kIT09MjA3JiZyLmtpbmQhPT0xMDgpe1lyPW9uLmZsb3dOb2RlO2NvbnRpbnVlfWd0PXR9ZWxzZSBndD1rdihpKTtyZXR1cm4gTmkmJih0dFtNc109Tmksa3RbTXNdPWd0LE1zKyspLHotLSxndH19ZnVuY3Rpb24gRHIoWXIpe3ZhciBOaT1Zci5ub2RlO3JldHVybiB5YihOaS5raW5kPT09MjU0fHxOaS5raW5kPT09MjAzP29DKE5pKTpweShOaSkscil9ZnVuY3Rpb24gUXIoWXIpe3ZhciBOaT1Zci5ub2RlO2lmKHpzKHIsTmkpKXtpZighbXkoWXIpKXJldHVybiBBaTtpZihlLmdldEFzc2lnbm1lbnRUYXJnZXRLaW5kKE5pKT09PTIpe3ZhciBIaT1kcihZci5hbnRlY2VkZW50KTtyZXR1cm4gSWcoS2woRmQoSGkpKSxQZyhIaSkpfWlmKGk9PT1ucnx8aT09PVNvKXtpZihnOChOaSkpcmV0dXJuIHZiKHVpKTt2YXIgX3Q9SHAoRHIoWXIpKTtyZXR1cm4gYW8oX3QsaSk/X3Q6bW99cmV0dXJuIGkuZmxhZ3MmMTA0ODU3Nj9zOChpLERyKFlyKSk6aX1pZihRRShyLE5pKSl7aWYoIW15KFlyKSlyZXR1cm4gQWk7aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oTmkpJiYoZS5pc0luSlNGaWxlKE5pKXx8ZS5pc1ZhckNvbnN0KE5pKSkpe3ZhciBndD1lLmdldERlY2xhcmVkRXhwYW5kb0luaXRpYWxpemVyKE5pKTtpZihndCYmKGd0LmtpbmQ9PT0yMTN8fGd0LmtpbmQ9PT0yMTQpKXJldHVybiBkcihZci5hbnRlY2VkZW50KX1yZXR1cm4gaX1pZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihOaSkmJk5pLnBhcmVudC5wYXJlbnQua2luZD09PTI0MyYmenMocixOaS5wYXJlbnQucGFyZW50LmV4cHJlc3Npb24pKXJldHVybiBqYihGZChkcihZci5hbnRlY2VkZW50KSkpfWZ1bmN0aW9uIGxpKFlyLE5pKXt2YXIgSGk9ZS5za2lwUGFyZW50aGVzZXMoTmksITApO2lmKEhpLmtpbmQ9PT05NSlyZXR1cm4gQWk7aWYoSGkua2luZD09PTIyMSl7aWYoSGkub3BlcmF0b3JUb2tlbi5raW5kPT09NTUpcmV0dXJuIGxpKGxpKFlyLEhpLmxlZnQpLEhpLnJpZ2h0KTtpZihIaS5vcGVyYXRvclRva2VuLmtpbmQ9PT01NilyZXR1cm4gUGEoW2xpKFlyLEhpLmxlZnQpLGxpKFlyLEhpLnJpZ2h0KV0pfXJldHVybiAkdChZcixIaSwhMCl9ZnVuY3Rpb24gVGkoWXIpe3ZhciBOaT1pMChZci5ub2RlKTtpZihOaSl7dmFyIEhpPVljKE5pKTtpZihIaSYmKEhpLmtpbmQ9PT0yfHxIaS5raW5kPT09Mykpe3ZhciBfdD1kcihZci5hbnRlY2VkZW50KSxndD1lMChGZChfdCkpLFZ0PUhpLnR5cGU/S3QoZ3QsSGksWXIubm9kZSwhMCk6SGkua2luZD09PTMmJkhpLnBhcmFtZXRlckluZGV4Pj0wJiZIaS5wYXJhbWV0ZXJJbmRleDxZci5ub2RlLmFyZ3VtZW50cy5sZW5ndGg/bGkoZ3QsWXIubm9kZS5hcmd1bWVudHNbSGkucGFyYW1ldGVySW5kZXhdKTpndDtyZXR1cm4gVnQ9PT1ndD9fdDpJZyhWdCxQZyhfdCkpfWlmKHlvKE5pKS5mbGFncyYxMzEwNzIpcmV0dXJuIEFpfX1mdW5jdGlvbiBDaShZcil7aWYoaT09PW5yfHxpPT09U28pe3ZhciBOaT1Zci5ub2RlLEhpPU5pLmtpbmQ9PT0yMDg/TmkuZXhwcmVzc2lvbi5leHByZXNzaW9uOk5pLmxlZnQuZXhwcmVzc2lvbjtpZih6cyhyLFlwKEhpKSkpe3ZhciBfdD1kcihZci5hbnRlY2VkZW50KSxndD1GZChfdCk7aWYoZS5nZXRPYmplY3RGbGFncyhndCkmMjU2KXt2YXIgVnQ9Z3Q7aWYoTmkua2luZD09PTIwOClmb3IodmFyIEZhPTAsb249TmkuYXJndW1lbnRzO0ZhPG9uLmxlbmd0aDtGYSsrKXt2YXIgem49b25bRmFdO1Z0PWZDKFZ0LHpuKX1lbHNle3ZhciBHYT1PeShOaS5sZWZ0LmFyZ3VtZW50RXhwcmVzc2lvbik7TnMoR2EsMjk2KSYmKFZ0PWZDKFZ0LE5pLnJpZ2h0KSl9cmV0dXJuIFZ0PT09Z3Q/X3Q6SWcoVnQsUGcoX3QpKX1yZXR1cm4gX3R9fX1mdW5jdGlvbiAkaShZcil7dmFyIE5pPWRyKFlyLmFudGVjZWRlbnQpLEhpPUZkKE5pKTtpZihIaS5mbGFncyYxMzEwNzIpcmV0dXJuIE5pO3ZhciBfdD0oWXIuZmxhZ3MmMzIpIT09MCxndD1lMChIaSksVnQ9JHQoZ3QsWXIubm9kZSxfdCk7cmV0dXJuIFZ0PT09Z3Q/Tmk6SWcoVnQsUGcoTmkpKX1mdW5jdGlvbiBaaShZcil7dmFyIE5pPVlyLnN3aXRjaFN0YXRlbWVudC5leHByZXNzaW9uLEhpPWRyKFlyLmFudGVjZWRlbnQpLF90PUZkKEhpKTtpZih6cyhyLE5pKSlfdD1VbihfdCxZci5zd2l0Y2hTdGF0ZW1lbnQsWXIuY2xhdXNlU3RhcnQsWXIuY2xhdXNlRW5kKTtlbHNlIGlmKE5pLmtpbmQ9PT0yMTYmJnpzKHIsTmkuZXhwcmVzc2lvbikpX3Q9TG4oX3QsWXIuc3dpdGNoU3RhdGVtZW50LFlyLmNsYXVzZVN0YXJ0LFlyLmNsYXVzZUVuZCk7ZWxzZXtZZSYmKEFnKE5pLHIpP190PWNuKF90LFlyLnN3aXRjaFN0YXRlbWVudCxZci5jbGF1c2VTdGFydCxZci5jbGF1c2VFbmQsZnVuY3Rpb24oVnQpe3JldHVybiEoVnQuZmxhZ3MmMTYzODQwKX0pOk5pLmtpbmQ9PT0yMTYmJkFnKE5pLmV4cHJlc3Npb24scikmJihfdD1jbihfdCxZci5zd2l0Y2hTdGF0ZW1lbnQsWXIuY2xhdXNlU3RhcnQsWXIuY2xhdXNlRW5kLGZ1bmN0aW9uKFZ0KXtyZXR1cm4hKFZ0LmZsYWdzJjEzMTA3Mnx8VnQuZmxhZ3MmMTI4JiZWdC52YWx1ZT09PVwidW5kZWZpbmVkXCIpfSkpKTt2YXIgZ3Q9U24oTmksX3QpO2d0JiYoX3Q9d24oX3QsZ3QsWXIuc3dpdGNoU3RhdGVtZW50LFlyLmNsYXVzZVN0YXJ0LFlyLmNsYXVzZUVuZCkpfXJldHVybiBJZyhfdCxQZyhIaSkpfWZ1bmN0aW9uIHF0KFlyKXtmb3IodmFyIE5pPVtdLEhpPSExLF90PSExLGd0LFZ0PTAsRmE9WXIuYW50ZWNlZGVudHM7VnQ8RmEubGVuZ3RoO1Z0Kyspe3ZhciBvbj1GYVtWdF07aWYoIWd0JiZvbi5mbGFncyYxMjgmJm9uLmNsYXVzZVN0YXJ0PT09b24uY2xhdXNlRW5kKXtndD1vbjtjb250aW51ZX12YXIgem49ZHIob24pLEdhPUZkKHpuKTtpZihHYT09PWkmJmk9PT10KXJldHVybiBHYTtlLnB1c2hJZlVuaXF1ZShOaSxHYSksZHkoR2EsaSl8fChIaT0hMCksUGcoem4pJiYoX3Q9ITApfWlmKGd0KXt2YXIgem49ZHIoZ3QpLEdhPUZkKHpuKTtpZighZS5jb250YWlucyhOaSxHYSkmJiFMayhndC5zd2l0Y2hTdGF0ZW1lbnQpKXtpZihHYT09PWkmJmk9PT10KXJldHVybiBHYTtOaS5wdXNoKEdhKSxkeShHYSxpKXx8KEhpPSEwKSxQZyh6bikmJihfdD0hMCl9fXJldHVybiBJZyhSYShOaSxIaT8yOjEpLF90KX1mdW5jdGlvbiBOdChZcil7dmFyIE5pPXBiKFlyKSxIaT12Y1tOaV18fCh2Y1tOaV09bmV3IGUuTWFwKSxfdD10cigpO2lmKCFfdClyZXR1cm4gaTt2YXIgZ3Q9SGkuZ2V0KF90KTtpZihndClyZXR1cm4gZ3Q7Zm9yKHZhciBWdD1rbztWdDxBbztWdCsrKWlmKEtyW1Z0XT09PVlyJiZfaVtWdF09PT1fdCYmRWlbVnRdLmxlbmd0aClyZXR1cm4gSWcoUmEoRWlbVnRdLDEpLCEwKTtmb3IodmFyIEZhPVtdLG9uPSExLHpuLEdhPTAsUW49WXIuYW50ZWNlZGVudHM7R2E8UW4ubGVuZ3RoO0dhKyspe3ZhciB3bz1RbltHYV0sUG89dm9pZCAwO2lmKCF6bilQbz16bj1kcih3byk7ZWxzZXtLcltBb109WXIsX2lbQW9dPV90LEVpW0FvXT1GYSxBbysrO3ZhciBVbz1aYztaYz12b2lkIDAsUG89ZHIod28pLFpjPVVvLEFvLS07dmFyIFJzPUhpLmdldChfdCk7aWYoUnMpcmV0dXJuIFJzfXZhciBGcz1GZChQbyk7aWYoZS5wdXNoSWZVbmlxdWUoRmEsRnMpLGR5KEZzLGkpfHwob249ITApLEZzPT09aSlicmVha312YXIgcmM9UmEoRmEsb24/MjoxKTtyZXR1cm4gUGcoem4pP0lnKHJjLCEwKTooSGkuc2V0KF90LHJjKSxyYyl9ZnVuY3Rpb24gUmEoWXIsTmkpe2lmKEU4KFlyKSlyZXR1cm4gdmIoUGEoZS5tYXAoWXIseDgpKSk7dmFyIEhpPVBhKGUuc2FtZU1hcChZcixlMCksTmkpO3JldHVybiBIaSE9PWkmJkhpLmZsYWdzJmkuZmxhZ3MmMTA0ODU3NiYmZS5hcnJheXNFcXVhbChIaS50eXBlcyxpLnR5cGVzKT9pOkhpfWZ1bmN0aW9uIGNhKFlyKXtpZihlLmlzQmluZGluZ1BhdHRlcm4ocil8fGUuaXNGdW5jdGlvbkV4cHJlc3Npb25PckFycm93RnVuY3Rpb24ocil8fGUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKHIpKXtpZihlLmlzSWRlbnRpZmllcihZcikpe3ZhciBOaT1EbChZciksSGk9TmkudmFsdWVEZWNsYXJhdGlvbjtpZihIaSYmKGUuaXNCaW5kaW5nRWxlbWVudChIaSl8fGUuaXNQYXJhbWV0ZXIoSGkpKSYmcj09PUhpLnBhcmVudCYmIUhpLmluaXRpYWxpemVyJiYhSGkuZG90RG90RG90VG9rZW4pcmV0dXJuIEhpfX1lbHNlIGlmKGUuaXNBY2Nlc3NFeHByZXNzaW9uKFlyKSl7aWYoenMocixZci5leHByZXNzaW9uKSlyZXR1cm4gWXJ9ZWxzZSBpZihlLmlzSWRlbnRpZmllcihZcikpe3ZhciBOaT1EbChZcik7aWYocHYoTmkpKXt2YXIgSGk9TmkudmFsdWVEZWNsYXJhdGlvbjtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihIaSkmJiFIaS50eXBlJiZIaS5pbml0aWFsaXplciYmZS5pc0FjY2Vzc0V4cHJlc3Npb24oSGkuaW5pdGlhbGl6ZXIpJiZ6cyhyLEhpLmluaXRpYWxpemVyLmV4cHJlc3Npb24pKXJldHVybiBIaS5pbml0aWFsaXplcjtpZihlLmlzQmluZGluZ0VsZW1lbnQoSGkpJiYhSGkuaW5pdGlhbGl6ZXIpe3ZhciBfdD1IaS5wYXJlbnQucGFyZW50O2lmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKF90KSYmIV90LnR5cGUmJl90LmluaXRpYWxpemVyJiYoZS5pc0lkZW50aWZpZXIoX3QuaW5pdGlhbGl6ZXIpfHxlLmlzQWNjZXNzRXhwcmVzc2lvbihfdC5pbml0aWFsaXplcikpJiZ6cyhyLF90LmluaXRpYWxpemVyKSlyZXR1cm4gSGl9fX19ZnVuY3Rpb24gU24oWXIsTmkpe3ZhciBIaT1pLmZsYWdzJjEwNDg1NzY/aTpOaTtpZihIaS5mbGFncyYxMDQ4NTc2KXt2YXIgX3Q9Y2EoWXIpO2lmKF90KXt2YXIgZ3Q9d2QoX3QpO2lmKGd0JiZsdihIaSxndCkpcmV0dXJuIF90fX19ZnVuY3Rpb24gamEoWXIsTmksSGkpe3ZhciBfdD13ZChOaSk7aWYoX3Q9PT12b2lkIDApcmV0dXJuIFlyO3ZhciBndD1ZZSYmZS5pc09wdGlvbmFsQ2hhaW4oTmkpJiZmcyhZciw5ODMwNCksVnQ9ZGEoZ3Q/S3MoWXIsMjA5NzE1Mik6WXIsX3QpO2lmKCFWdClyZXR1cm4gWXI7VnQ9Z3Q/aV8oVnQpOlZ0O3ZhciBGYT1IaShWdCk7cmV0dXJuIGVjKFlyLGZ1bmN0aW9uKG9uKXt2YXIgem49SGEob24sX3QpO3JldHVybiEoRmEuZmxhZ3MmMTMxMDcyKSYmY20oRmEsem4pfSl9ZnVuY3Rpb24gRm4oWXIsTmksSGksX3QsZ3Qpe2lmKChIaT09PTM2fHxIaT09PTM3KSYmWXIuZmxhZ3MmMTA0ODU3Nil7dmFyIFZ0PVFoKFlyKTtpZihWdCYmVnQ9PT13ZChOaSkpe3ZhciBGYT1ZaChZcixHcyhfdCkpO2lmKEZhKXJldHVybiBIaT09PShndD8zNjozNyk/RmE6VmwoZGEoRmEsVnQpfHxncik/WmgoWXIsRmEpOllyfX1yZXR1cm4gamEoWXIsTmksZnVuY3Rpb24ob24pe3JldHVybiBRdChvbixIaSxfdCxndCl9KX1mdW5jdGlvbiB3bihZcixOaSxIaSxfdCxndCl7aWYoX3Q8Z3QmJllyLmZsYWdzJjEwNDg1NzYmJlFoKFlyKT09PXdkKE5pKSl7dmFyIFZ0PSRoKEhpKS5zbGljZShfdCxndCksRmE9UGEoZS5tYXAoVnQsZnVuY3Rpb24ob24pe3JldHVybiBZaChZcixvbil8fGdyfSkpO2lmKEZhIT09Z3IpcmV0dXJuIEZhfXJldHVybiBqYShZcixOaSxmdW5jdGlvbihvbil7cmV0dXJuIFVuKG9uLEhpLF90LGd0KX0pfWZ1bmN0aW9uIFRuKFlyLE5pLEhpKXtpZih6cyhyLE5pKSlyZXR1cm4gWXIuZmxhZ3MmMiYmSGk/VnI6S3MoWXIsSGk/NDE5NDMwNDo4Mzg4NjA4KTtZZSYmSGkmJkFnKE5pLHIpJiYoWXI9S3MoWXIsMjA5NzE1MikpO3ZhciBfdD1TbihOaSxZcik7cmV0dXJuIF90P2phKFlyLF90LGZ1bmN0aW9uKGd0KXtyZXR1cm4gS3MoZ3QsSGk/NDE5NDMwNDo4Mzg4NjA4KX0pOllyfWZ1bmN0aW9uIEVvKFlyLE5pLEhpKXt2YXIgX3Q9YmkoWXIsTmkpO3JldHVybiBfdD9fdC5mbGFncyYxNjc3NzIxNj8hMDpIaTpYbyhZcixOaSk/ITA6IUhpfWZ1bmN0aW9uIGx0KFlyLE5pLEhpKXtyZXR1cm4gWXIuZmxhZ3MmMTA0ODU3Nnx8WXIuZmxhZ3MmNTI0Mjg4JiZpIT09WXJ8fGUuaXNUaGlzVHlwZVBhcmFtZXRlcihZcil8fFlyLmZsYWdzJjIwOTcxNTImJmUuZXZlcnkoWXIudHlwZXMsZnVuY3Rpb24oX3Qpe3JldHVybiBfdC5zeW1ib2whPT1wZX0pP2VjKFlyLGZ1bmN0aW9uKF90KXtyZXR1cm4gRW8oX3QsTmksSGkpfSk6WXJ9ZnVuY3Rpb24gaXQoWXIsTmksSGkpe3N3aXRjaChOaS5vcGVyYXRvclRva2VuLmtpbmQpe2Nhc2UgNjM6Y2FzZSA3NTpjYXNlIDc2OmNhc2UgNzc6cmV0dXJuIFRuKCR0KFlyLE5pLnJpZ2h0LEhpKSxOaS5sZWZ0LEhpKTtjYXNlIDM0OmNhc2UgMzU6Y2FzZSAzNjpjYXNlIDM3OnZhciBfdD1OaS5vcGVyYXRvclRva2VuLmtpbmQsZ3Q9WXAoTmkubGVmdCksVnQ9WXAoTmkucmlnaHQpO2lmKGd0LmtpbmQ9PT0yMTYmJmUuaXNTdHJpbmdMaXRlcmFsTGlrZShWdCkpcmV0dXJuIEthKFlyLGd0LF90LFZ0LEhpKTtpZihWdC5raW5kPT09MjE2JiZlLmlzU3RyaW5nTGl0ZXJhbExpa2UoZ3QpKXJldHVybiBLYShZcixWdCxfdCxndCxIaSk7aWYoenMocixndCkpcmV0dXJuIFF0KFlyLF90LFZ0LEhpKTtpZih6cyhyLFZ0KSlyZXR1cm4gUXQoWXIsX3QsZ3QsSGkpO1llJiYoQWcoZ3Qscik/WXI9SWEoWXIsX3QsVnQsSGkpOkFnKFZ0LHIpJiYoWXI9SWEoWXIsX3QsZ3QsSGkpKSk7dmFyIEZhPVNuKGd0LFlyKTtpZihGYSlyZXR1cm4gRm4oWXIsRmEsX3QsVnQsSGkpO3ZhciBvbj1TbihWdCxZcik7aWYob24pcmV0dXJuIEZuKFlyLG9uLF90LGd0LEhpKTtpZihjaShndCkpcmV0dXJuIEZyKFlyLF90LFZ0LEhpKTtpZihjaShWdCkpcmV0dXJuIEZyKFlyLF90LGd0LEhpKTticmVhaztjYXNlIDEwMjpyZXR1cm4ganQoWXIsTmksSGkpO2Nhc2UgMTAxOmlmKGUuaXNQcml2YXRlSWRlbnRpZmllcihOaS5sZWZ0KSlyZXR1cm4gWXQoWXIsTmksSGkpO3ZhciB6bj1ZcChOaS5yaWdodCksR2E9QmQoTmkubGVmdCk7aWYoR2EuZmxhZ3MmMTI4KXt2YXIgUW49ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoR2EudmFsdWUpO2lmKFdoKFlyKSYmZS5pc0FjY2Vzc0V4cHJlc3Npb24ocikmJnpzKHIuZXhwcmVzc2lvbix6bikmJndkKHIpPT09UW4pcmV0dXJuIEtzKFlyLEhpPzUyNDI4ODo2NTUzNik7aWYoenMocix6bikpcmV0dXJuIGx0KFlyLFFuLEhpKX1icmVhaztjYXNlIDI3OnJldHVybiAkdChZcixOaS5yaWdodCxIaSk7Y2FzZSA1NTpyZXR1cm4gSGk/JHQoJHQoWXIsTmkubGVmdCwhMCksTmkucmlnaHQsITApOlBhKFskdChZcixOaS5sZWZ0LCExKSwkdChZcixOaS5yaWdodCwhMSldKTtjYXNlIDU2OnJldHVybiBIaT9QYShbJHQoWXIsTmkubGVmdCwhMCksJHQoWXIsTmkucmlnaHQsITApXSk6JHQoJHQoWXIsTmkubGVmdCwhMSksTmkucmlnaHQsITEpfXJldHVybiBZcn1mdW5jdGlvbiBZdChZcixOaSxIaSl7dmFyIF90PVlwKE5pLnJpZ2h0KTtpZighenMocixfdCkpcmV0dXJuIFlyO2UuRGVidWcuYXNzZXJ0Tm9kZShOaS5sZWZ0LGUuaXNQcml2YXRlSWRlbnRpZmllcik7dmFyIGd0PW0wKE5pLmxlZnQpO2lmKGd0PT09dm9pZCAwKXJldHVybiBZcjt2YXIgVnQ9Z3QucGFyZW50LEZhPWUuaGFzU3RhdGljTW9kaWZpZXIoZS5EZWJ1Zy5jaGVja0RlZmluZWQoZ3QudmFsdWVEZWNsYXJhdGlvbixcInNob3VsZCBhbHdheXMgaGF2ZSBhIGRlY2xhcmF0aW9uXCIpKT9KdChWdCk6Z28oVnQpO3JldHVybiBMdChZcixGYSxIaSx4Zyl9ZnVuY3Rpb24gSWEoWXIsTmksSGksX3Qpe3ZhciBndD1OaT09PTM0fHxOaT09PTM2LFZ0PU5pPT09MzR8fE5pPT09MzU/OTgzMDQ6MzI3NjgsRmE9R3MoSGkpLG9uPWd0IT09X3QmJmdmKEZhLGZ1bmN0aW9uKHpuKXtyZXR1cm4hISh6bi5mbGFncyZWdCl9KXx8Z3Q9PT1fdCYmZ2YoRmEsZnVuY3Rpb24oem4pe3JldHVybiEoem4uZmxhZ3MmKDN8VnQpKX0pO3JldHVybiBvbj9LcyhZciwyMDk3MTUyKTpZcn1mdW5jdGlvbiBRdChZcixOaSxIaSxfdCl7aWYoWXIuZmxhZ3MmMSlyZXR1cm4gWXI7KE5pPT09MzV8fE5pPT09MzcpJiYoX3Q9IV90KTt2YXIgZ3Q9R3MoSGkpO2lmKF90JiZZci5mbGFncyYyJiYoTmk9PT0zNHx8Tmk9PT0zNSkmJmd0LmZsYWdzJjY1NTM2KXJldHVybiBQYShbV2ksVHJdKTtpZihZci5mbGFncyYyJiZfdCYmKE5pPT09MzZ8fE5pPT09MzcpKXJldHVybiBndC5mbGFncyY2NzIzOTkzMj9ndDpndC5mbGFncyY1MjQyODg/T2k6WXI7aWYoZ3QuZmxhZ3MmOTgzMDQpe2lmKCFZZSlyZXR1cm4gWXI7dmFyIFZ0PU5pPT09MzR8fE5pPT09MzUsRmE9VnQ/X3Q/MjYyMTQ0OjIwOTcxNTI6Z3QuZmxhZ3MmNjU1MzY/X3Q/MTMxMDcyOjEwNDg1NzY6X3Q/NjU1MzY6NTI0Mjg4O3JldHVybiBZci5mbGFncyYyJiZGYSYzMTQ1NzI4P1ZyOktzKFlyLEZhKX1pZihfdCl7dmFyIG9uPU5pPT09MzQ/ZnVuY3Rpb24oem4pe3JldHVybiBPaCh6bixndCl8fE93KHpuLGd0KX06ZnVuY3Rpb24oem4pe3JldHVybiBPaCh6bixndCl9O3JldHVybiBsQyhlYyhZcixvbiksZ3QpfXJldHVybiBWbChndCk/ZWMoWXIsZnVuY3Rpb24oem4pe3JldHVybiEoTkUoem4pJiZPaCh6bixndCkpfSk6WXJ9ZnVuY3Rpb24gS2EoWXIsTmksSGksX3QsZ3QpeyhIaT09PTM1fHxIaT09PTM3KSYmKGd0PSFndCk7dmFyIFZ0PVlwKE5pLmV4cHJlc3Npb24pO2lmKCF6cyhyLFZ0KSlyZXR1cm4gWWUmJkFnKFZ0LHIpJiZndD09PShfdC50ZXh0IT09XCJ1bmRlZmluZWRcIik/S3MoWXIsMjA5NzE1Mik6WXI7aWYoWXIuZmxhZ3MmMSYmX3QudGV4dD09PVwiZnVuY3Rpb25cIilyZXR1cm4gWXI7aWYoZ3QmJllyLmZsYWdzJjImJl90LnRleHQ9PT1cIm9iamVjdFwiKXJldHVybiBZcj09PVZyP09pOlBhKFtPaSxXaV0pO3ZhciBGYT1ndD9HLmdldChfdC50ZXh0KXx8MTI4Om9lLmdldChfdC50ZXh0KXx8MzI3Njgsb249b2EoWXIsX3QudGV4dCk7cmV0dXJuIEtzKGd0JiZvbj9TcyhZcixNbihvbikpOllyLEZhKX1mdW5jdGlvbiBjbihZcixOaSxIaSxfdCxndCl7dmFyIFZ0PUhpIT09X3QmJmUuZXZlcnkoJGgoTmkpLnNsaWNlKEhpLF90KSxndCk7cmV0dXJuIFZ0P0tzKFlyLDIwOTcxNTIpOllyfWZ1bmN0aW9uIFVuKFlyLE5pLEhpLF90KXt2YXIgZ3Q9JGgoTmkpO2lmKCFndC5sZW5ndGgpcmV0dXJuIFlyO3ZhciBWdD1ndC5zbGljZShIaSxfdCksRmE9SGk9PT1fdHx8ZS5jb250YWlucyhWdCx1aSk7aWYoWXIuZmxhZ3MmMiYmIUZhKXtmb3IodmFyIG9uPXZvaWQgMCx6bj0wO3puPFZ0Lmxlbmd0aDt6bis9MSl7dmFyIEdhPVZ0W3puXTtpZihHYS5mbGFncyY2NzIzOTkzMilvbiE9PXZvaWQgMCYmb24ucHVzaChHYSk7ZWxzZSBpZihHYS5mbGFncyY1MjQyODgpb249PT12b2lkIDAmJihvbj1WdC5zbGljZSgwLHpuKSksb24ucHVzaChPaSk7ZWxzZSByZXR1cm4gWXJ9cmV0dXJuIFBhKG9uPT09dm9pZCAwP1Z0Om9uKX12YXIgUW49UGEoVnQpLHdvPVFuLmZsYWdzJjEzMTA3Mj91aTpsQyhlYyhZcixmdW5jdGlvbihVbyl7cmV0dXJuIE9oKFFuLFVvKX0pLFFuKTtpZighRmEpcmV0dXJuIHdvO3ZhciBQbz1lYyhZcixmdW5jdGlvbihVbyl7cmV0dXJuIShORShVbykmJmUuY29udGFpbnMoZ3QsamMoQ3coVW8pKSkpfSk7cmV0dXJuIHdvLmZsYWdzJjEzMTA3Mj9QbzpQYShbd28sUG9dKX1mdW5jdGlvbiBvYShZcixOaSl7c3dpdGNoKE5pKXtjYXNlXCJmdW5jdGlvblwiOnJldHVybiBZci5mbGFncyYxP1lyOmJyO2Nhc2VcIm9iamVjdFwiOnJldHVybiBZci5mbGFncyYyP1BhKFtPaSxXaV0pOllyO2RlZmF1bHQ6cmV0dXJuIE1vLmdldChOaSl9fWZ1bmN0aW9uIE1uKFlyKXtyZXR1cm4gZnVuY3Rpb24oTmkpe2lmKEVfKE5pLFlyKSlyZXR1cm4gTmk7aWYoRV8oWXIsTmkpKXJldHVybiBZcjtpZihOaS5mbGFncyY0NjU4Mjk4ODgpe3ZhciBIaT11YyhOaSl8fE9lO2lmKEVfKFlyLEhpKSlyZXR1cm4gRG8oW05pLFlyXSl9cmV0dXJuIE5pfX1mdW5jdGlvbiBMbihZcixOaSxIaSxfdCl7dmFyIGd0PWNDKE5pLCEwKTtpZighZ3QubGVuZ3RoKXJldHVybiBZcjt2YXIgVnQ9ZS5maW5kSW5kZXgoZ3QsZnVuY3Rpb24oVW8pe3JldHVybiBVbz09PXZvaWQgMH0pLEZhPUhpPT09X3R8fFZ0Pj1IaSYmVnQ8X3Qsb24sem47aWYoVnQ+LTEpe3ZhciBHYT1ndC5maWx0ZXIoZnVuY3Rpb24oVW8pe3JldHVybiBVbyE9PXZvaWQgMH0pLFFuPVZ0PEhpP0hpLTE6SGksd289VnQ8X3Q/X3QtMTpfdDtvbj1HYS5zbGljZShRbix3byksem49b1MoUW4sd28sR2EsRmEpfWVsc2Ugb249Z3Quc2xpY2UoSGksX3QpLHpuPW9TKEhpLF90LGd0LEZhKTtpZihGYSlyZXR1cm4gZWMoWXIsZnVuY3Rpb24oVW8pe3JldHVybihjcChVbykmem4pPT09em59KTt2YXIgUG89S3MoUGEob24ubWFwKGZ1bmN0aW9uKFVvKXtyZXR1cm4gb2EoWXIsVW8pfHxZcn0pKSx6bik7cmV0dXJuIEtzKFNzKFlyLE1uKFBvKSksem4pfWZ1bmN0aW9uIGNpKFlyKXtyZXR1cm4oZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihZcikmJmUuaWRUZXh0KFlyLm5hbWUpPT09XCJjb25zdHJ1Y3RvclwifHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oWXIpJiZlLmlzU3RyaW5nTGl0ZXJhbExpa2UoWXIuYXJndW1lbnRFeHByZXNzaW9uKSYmWXIuYXJndW1lbnRFeHByZXNzaW9uLnRleHQ9PT1cImNvbnN0cnVjdG9yXCIpJiZ6cyhyLFlyLmV4cHJlc3Npb24pfWZ1bmN0aW9uIEZyKFlyLE5pLEhpLF90KXtpZihfdD9OaSE9PTM0JiZOaSE9PTM2Ok5pIT09MzUmJk5pIT09MzcpcmV0dXJuIFlyO3ZhciBndD1HcyhIaSk7aWYoIUpTKGd0KSYmIXFkKGd0KSlyZXR1cm4gWXI7dmFyIFZ0PWJpKGd0LFwicHJvdG90eXBlXCIpO2lmKCFWdClyZXR1cm4gWXI7dmFyIEZhPUp0KFZ0KSxvbj10YShGYSk/dm9pZCAwOkZhO2lmKCFvbnx8b249PT1xZXx8b249PT1icilyZXR1cm4gWXI7aWYodGEoWXIpKXJldHVybiBvbjtyZXR1cm4gZWMoWXIsZnVuY3Rpb24oR2Epe3JldHVybiB6bihHYSxvbil9KTtmdW5jdGlvbiB6bihHYSxRbil7cmV0dXJuIEdhLmZsYWdzJjUyNDI4OCYmZS5nZXRPYmplY3RGbGFncyhHYSkmMXx8UW4uZmxhZ3MmNTI0Mjg4JiZlLmdldE9iamVjdEZsYWdzKFFuKSYxP0dhLnN5bWJvbD09PVFuLnN5bWJvbDpFXyhHYSxRbil9fWZ1bmN0aW9uIGp0KFlyLE5pLEhpKXt2YXIgX3Q9WXAoTmkubGVmdCk7aWYoIXpzKHIsX3QpKXJldHVybiBIaSYmWWUmJkFnKF90LHIpP0tzKFlyLDIwOTcxNTIpOllyO3ZhciBndD1HcyhOaS5yaWdodCk7aWYoIXhnKGd0LGJyKSlyZXR1cm4gWXI7dmFyIFZ0LEZhPWJpKGd0LFwicHJvdG90eXBlXCIpO2lmKEZhKXt2YXIgb249SnQoRmEpO3RhKG9uKXx8KFZ0PW9uKX1pZih0YShZcikmJihWdD09PXFlfHxWdD09PWJyKSlyZXR1cm4gWXI7aWYoIVZ0KXt2YXIgem49b3QoZ3QsMSk7VnQ9em4ubGVuZ3RoP1BhKGUubWFwKHpuLGZ1bmN0aW9uKFFuKXtyZXR1cm4geW8oUW0oUW4pKX0pKTpCYX1pZighSGkmJmd0LmZsYWdzJjEwNDg1NzYpe3ZhciBHYT1lLmZpbmQoZ3QudHlwZXMsZnVuY3Rpb24oUW4pe3JldHVybiFxZChRbil9KTtpZighR2EpcmV0dXJuIFlyfXJldHVybiBMdChZcixWdCxIaSx4Zyl9ZnVuY3Rpb24gTHQoWXIsTmksSGksX3Qpe2lmKCFIaSlyZXR1cm4gZWMoWXIsZnVuY3Rpb24oVnQpe3JldHVybiFfdChWdCxOaSl9KTtpZihZci5mbGFncyYxMDQ4NTc2KXt2YXIgZ3Q9ZWMoWXIsZnVuY3Rpb24oVnQpe3JldHVybiBfdChWdCxOaSl9KTtpZighKGd0LmZsYWdzJjEzMTA3MikpcmV0dXJuIGd0fXJldHVybiBFXyhOaSxZcik/Tmk6YW8oWXIsTmkpP1lyOmFvKE5pLFlyKT9OaTpEbyhbWXIsTmldKX1mdW5jdGlvbiBlYShZcixOaSxIaSl7aWYoZUMoTmkscikpe3ZhciBfdD1IaXx8IWUuaXNDYWxsQ2hhaW4oTmkpP2kwKE5pKTp2b2lkIDAsZ3Q9X3QmJlljKF90KTtpZihndCYmKGd0LmtpbmQ9PT0wfHxndC5raW5kPT09MSkpcmV0dXJuIEt0KFlyLGd0LE5pLEhpKX1pZihXaChZcikmJmUuaXNBY2Nlc3NFeHByZXNzaW9uKHIpJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKE5pLmV4cHJlc3Npb24pKXt2YXIgVnQ9TmkuZXhwcmVzc2lvbjtpZih6cyhyLmV4cHJlc3Npb24sWXAoVnQuZXhwcmVzc2lvbikpJiZlLmlzSWRlbnRpZmllcihWdC5uYW1lKSYmVnQubmFtZS5lc2NhcGVkVGV4dD09PVwiaGFzT3duUHJvcGVydHlcIiYmTmkuYXJndW1lbnRzLmxlbmd0aD09PTEpe3ZhciBGYT1OaS5hcmd1bWVudHNbMF07aWYoZS5pc1N0cmluZ0xpdGVyYWxMaWtlKEZhKSYmd2Qocik9PT1lLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhGYS50ZXh0KSlyZXR1cm4gS3MoWXIsSGk/NTI0Mjg4OjY1NTM2KX19cmV0dXJuIFlyfWZ1bmN0aW9uIEt0KFlyLE5pLEhpLF90KXtpZihOaS50eXBlJiYhKHRhKFlyKSYmKE5pLnR5cGU9PT1xZXx8TmkudHlwZT09PWJyKSkpe3ZhciBndD1rOChOaSxIaSk7aWYoZ3Qpe2lmKHpzKHIsZ3QpKXJldHVybiBMdChZcixOaS50eXBlLF90LEVfKTtZZSYmX3QmJkFnKGd0LHIpJiYhKGNwKE5pLnR5cGUpJjY1NTM2KSYmKFlyPUtzKFlyLDIwOTcxNTIpKTt2YXIgVnQ9U24oZ3QsWXIpO2lmKFZ0KXJldHVybiBqYShZcixWdCxmdW5jdGlvbihGYSl7cmV0dXJuIEx0KEZhLE5pLnR5cGUsX3QsRV8pfSl9fXJldHVybiBZcn1mdW5jdGlvbiAkdChZcixOaSxIaSl7aWYoZS5pc0V4cHJlc3Npb25PZk9wdGlvbmFsQ2hhaW5Sb290KE5pKXx8ZS5pc0JpbmFyeUV4cHJlc3Npb24oTmkucGFyZW50KSYmTmkucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYwJiZOaS5wYXJlbnQubGVmdD09PU5pKXJldHVybiBVYShZcixOaSxIaSk7c3dpdGNoKE5pLmtpbmQpe2Nhc2UgNzk6aWYoIXpzKHIsTmkpJiZycjw1KXt2YXIgX3Q9RGwoTmkpO2lmKHB2KF90KSl7dmFyIGd0PV90LnZhbHVlRGVjbGFyYXRpb247aWYoZ3QmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGd0KSYmIWd0LnR5cGUmJmd0LmluaXRpYWxpemVyJiZkQyhyKSl7cnIrKzt2YXIgVnQ9JHQoWXIsZ3QuaW5pdGlhbGl6ZXIsSGkpO3JldHVybiByci0tLFZ0fX19Y2FzZSAxMDg6Y2FzZSAxMDY6Y2FzZSAyMDY6Y2FzZSAyMDc6cmV0dXJuIFRuKFlyLE5pLEhpKTtjYXNlIDIwODpyZXR1cm4gZWEoWXIsTmksSGkpO2Nhc2UgMjEyOmNhc2UgMjMwOnJldHVybiAkdChZcixOaS5leHByZXNzaW9uLEhpKTtjYXNlIDIyMTpyZXR1cm4gaXQoWXIsTmksSGkpO2Nhc2UgMjE5OmlmKE5pLm9wZXJhdG9yPT09NTMpcmV0dXJuICR0KFlyLE5pLm9wZXJhbmQsIUhpKTticmVha31yZXR1cm4gWXJ9ZnVuY3Rpb24gVWEoWXIsTmksSGkpe2lmKHpzKHIsTmkpKXJldHVybiBLcyhZcixIaT8yMDk3MTUyOjI2MjE0NCk7dmFyIF90PVNuKE5pLFlyKTtyZXR1cm4gX3Q/amEoWXIsX3QsZnVuY3Rpb24oZ3Qpe3JldHVybiBLcyhndCxIaT8yMDk3MTUyOjI2MjE0NCl9KTpZcn19ZnVuY3Rpb24gTjgocixpKXtpZihyPXIuZXhwb3J0U3ltYm9sfHxyLChpLmtpbmQ9PT03OXx8aS5raW5kPT09ODApJiYoZS5pc1JpZ2h0U2lkZU9mUXVhbGlmaWVkTmFtZU9yUHJvcGVydHlBY2Nlc3MoaSkmJihpPWkucGFyZW50KSxlLmlzRXhwcmVzc2lvbk5vZGUoaSkmJighZS5pc0Fzc2lnbm1lbnRUYXJnZXQoaSl8fGUuaXNXcml0ZUFjY2VzcyhpKSkpKXt2YXIgdD1HcyhpKTtpZihjdSh2YShpKS5yZXNvbHZlZFN5bWJvbCk9PT1yKXJldHVybiB0fXJldHVybiBlLmlzRGVjbGFyYXRpb25OYW1lKGkpJiZlLmlzU2V0QWNjZXNzb3IoaS5wYXJlbnQpJiZXKGkucGFyZW50KT95dChpLnBhcmVudC5zeW1ib2wpOm1sKHIpfWZ1bmN0aW9uIF92KHIpe3JldHVybiBlLmZpbmRBbmNlc3RvcihyLnBhcmVudCxmdW5jdGlvbihpKXtyZXR1cm4gZS5pc0Z1bmN0aW9uTGlrZShpKSYmIWUuZ2V0SW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uKGkpfHxpLmtpbmQ9PT0yNjJ8fGkua2luZD09PTMwNXx8aS5raW5kPT09MTY3fSl9ZnVuY3Rpb24gbjAocil7aWYoIXIudmFsdWVEZWNsYXJhdGlvbilyZXR1cm4hMTt2YXIgaT1lLmdldFJvb3REZWNsYXJhdGlvbihyLnZhbHVlRGVjbGFyYXRpb24pLnBhcmVudCx0PXZhKGkpO3JldHVybiB0LmZsYWdzJjgzODg2MDh8fCh0LmZsYWdzfD04Mzg4NjA4LFA4KGkpfHxnQyhpKSksci5pc0Fzc2lnbmVkfHwhMX1mdW5jdGlvbiBQOChyKXtyZXR1cm4hIWUuZmluZEFuY2VzdG9yKHIucGFyZW50LGZ1bmN0aW9uKGkpe3JldHVybihlLmlzRnVuY3Rpb25MaWtlKGkpfHxlLmlzQ2F0Y2hDbGF1c2UoaSkpJiYhISh2YShpKS5mbGFncyY4Mzg4NjA4KX0pfWZ1bmN0aW9uIGdDKHIpe2lmKHIua2luZD09PTc5KXtpZihlLmlzQXNzaWdubWVudFRhcmdldChyKSl7dmFyIGk9RGwocik7ZS5pc1BhcmFtZXRlck9yQ2F0Y2hDbGF1c2VWYXJpYWJsZShpKSYmKGkuaXNBc3NpZ25lZD0hMCl9fWVsc2UgZS5mb3JFYWNoQ2hpbGQocixnQyl9ZnVuY3Rpb24gcHYocil7cmV0dXJuIHIuZmxhZ3MmMyYmKHAwKHIpJjIpIT09MH1mdW5jdGlvbiBJOChyLGkpe2lmKHl1KGkuc3ltYm9sLDIpKXt2YXIgdD1ZZSYmaS5raW5kPT09MTY0JiZpLmluaXRpYWxpemVyJiZqdShyKSYzMjc2OCYmIShqdSh5bihpLmluaXRpYWxpemVyKSkmMzI3NjgpO3JldHVybiBmaSgpLHQ/S3Mociw1MjQyODgpOnJ9ZWxzZSByZXR1cm4gbGcoaS5zeW1ib2wpLHJ9ZnVuY3Rpb24gdzgocixpKXt2YXIgdD1pLnBhcmVudDtyZXR1cm4gdC5raW5kPT09MjA2fHx0LmtpbmQ9PT0xNjF8fHQua2luZD09PTIwOCYmdC5leHByZXNzaW9uPT09aXx8dC5raW5kPT09MjA3JiZ0LmV4cHJlc3Npb249PT1pJiYhKHJnKHIsRjgpJiZxcChHcyh0LmFyZ3VtZW50RXhwcmVzc2lvbikpKX1mdW5jdGlvbiBPOChyKXtyZXR1cm4hIShyLmZsYWdzJjQ2NTgyOTg4OCYmSGQocikuZmxhZ3MmMTE0Njg4MCl9ZnVuY3Rpb24gRjgocil7cmV0dXJuISEoci5mbGFncyY0NjU4Mjk4ODgmJiFmcyhIZChyKSw5ODMwNCkpfWZ1bmN0aW9uIE04KHIsaSl7dmFyIHQ9KGUuaXNJZGVudGlmaWVyKHIpfHxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHIpfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ocikpJiYhKChlLmlzSnN4T3BlbmluZ0VsZW1lbnQoci5wYXJlbnQpfHxlLmlzSnN4U2VsZkNsb3NpbmdFbGVtZW50KHIucGFyZW50KSkmJnIucGFyZW50LnRhZ05hbWU9PT1yKSYmKGkmJmkmNjQ/b3Uociw4KTpvdShyKSk7cmV0dXJuIHQmJiFydih0KX1mdW5jdGlvbiB5YihyLGksdCl7dmFyIG89ISh0JiZ0JjIpJiZyZyhyLE84KSYmKHc4KHIsaSl8fE04KGksdCkpO3JldHVybiBvP1NzKHIsZnVuY3Rpb24ocyl7cmV0dXJuIHMuZmxhZ3MmNDY1ODI5ODg4P0hkKHMpOnN9KTpyfWZ1bmN0aW9uIG1DKHIpe3JldHVybiEhZS5maW5kQW5jZXN0b3IocixmdW5jdGlvbihpKXt2YXIgdD1pLnBhcmVudDtyZXR1cm4gdD09PXZvaWQgMD9cInF1aXRcIjplLmlzRXhwb3J0QXNzaWdubWVudCh0KT90LmV4cHJlc3Npb249PT1pJiZlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24oaSk6ZS5pc0V4cG9ydFNwZWNpZmllcih0KT90Lm5hbWU9PT1pfHx0LnByb3BlcnR5TmFtZT09PWk6ITF9KX1mdW5jdGlvbiBvMChyLGkpe2lmKFpuKHIsMTExNTUxKSYmIV9tKGkpJiYhdnUocikpe3ZhciB0PVBzKHIpO3QuZmxhZ3MmMTExNTUxJiYoeWUuaXNvbGF0ZWRNb2R1bGVzfHxlLnNob3VsZFByZXNlcnZlQ29uc3RFbnVtcyh5ZSkmJm1DKGkpfHwhQXYodCk/QXMocik6dm4ocikpfX1mdW5jdGlvbiBMOChyLGkpe3ZhciB0PXIudmFsdWVEZWNsYXJhdGlvbjtpZih0KXtpZihlLmlzQmluZGluZ0VsZW1lbnQodCkmJiF0LmluaXRpYWxpemVyJiYhdC5kb3REb3REb3RUb2tlbiYmdC5wYXJlbnQuZWxlbWVudHMubGVuZ3RoPj0yKXt2YXIgbz10LnBhcmVudC5wYXJlbnQ7aWYoby5raW5kPT09MjU0JiZlLmdldENvbWJpbmVkTm9kZUZsYWdzKHQpJjJ8fG8ua2luZD09PTE2NCl7dmFyIHM9dmEobyk7aWYoIShzLmZsYWdzJjI2ODQzNTQ1Nikpe3MuZmxhZ3N8PTI2ODQzNTQ1Njt2YXIgdT1XbyhvLDApO2lmKHMuZmxhZ3MmPS0yNjg0MzU0NTcsdSYmdS5mbGFncyYxMDQ4NTc2JiYhKG8ua2luZD09PTE2NCYmbjAocikpKXt2YXIgaD10LnBhcmVudCx6PXVwKGgsdSx1LHZvaWQgMCxpLmZsb3dOb2RlKTtyZXR1cm4gei5mbGFncyYxMzEwNzI/dWk6dWYodCx6KX19fX1pZihlLmlzUGFyYW1ldGVyKHQpJiYhdC50eXBlJiYhdC5pbml0aWFsaXplciYmIXQuZG90RG90RG90VG9rZW4pe3ZhciBtZT10LnBhcmVudDtpZihtZS5wYXJhbWV0ZXJzLmxlbmd0aD49MiYmd0QobWUpKXt2YXIgTWU9ZHYobWUpO2lmKE1lJiZNZS5wYXJhbWV0ZXJzLmxlbmd0aD09PTEmJkgoTWUpKXt2YXIgJGU9WGQoSnQoTWUucGFyYW1ldGVyc1swXSkpO2lmKCRlLmZsYWdzJjEwNDg1NzYmJmdmKCRlLFluKSYmIW4wKHIpKXt2YXIgej11cChtZSwkZSwkZSx2b2lkIDAsaS5mbG93Tm9kZSksdHI9bWUucGFyYW1ldGVycy5pbmRleE9mKHQpLShlLmdldFRoaXNQYXJhbWV0ZXIobWUpPzE6MCk7cmV0dXJuIEpjKHosSWYodHIpKX19fX19cmV0dXJuIEp0KHIpfWZ1bmN0aW9uIFI4KHIsaSl7aWYoZS5pc1RoaXNJblR5cGVRdWVyeShyKSlyZXR1cm4geXkocik7dmFyIHQ9RGwocik7aWYodD09PXhlKXJldHVybiBQZTtpZih0PT09b3Ipe2lmKFFDKHIpKXJldHVybiBYcihyLGUuRGlhZ25vc3RpY3MuYXJndW1lbnRzX2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX3Byb3BlcnR5X2luaXRpYWxpemVycyksUGU7dmFyIG89ZS5nZXRDb250YWluaW5nRnVuY3Rpb24ocik7cmV0dXJuIEFlPDImJihvLmtpbmQ9PT0yMTQ/WHIocixlLkRpYWdub3N0aWNzLlRoZV9hcmd1bWVudHNfb2JqZWN0X2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX2FuX2Fycm93X2Z1bmN0aW9uX2luX0VTM19hbmRfRVM1X0NvbnNpZGVyX3VzaW5nX2Ffc3RhbmRhcmRfZnVuY3Rpb25fZXhwcmVzc2lvbik6ZS5oYXNTeW50YWN0aWNNb2RpZmllcihvLDI1NikmJlhyKHIsZS5EaWFnbm9zdGljcy5UaGVfYXJndW1lbnRzX29iamVjdF9jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hbl9hc3luY19mdW5jdGlvbl9vcl9tZXRob2RfaW5fRVMzX2FuZF9FUzVfQ29uc2lkZXJfdXNpbmdfYV9zdGFuZGFyZF9mdW5jdGlvbl9vcl9tZXRob2QpKSx2YShvKS5mbGFnc3w9ODE5MixKdCh0KX1yLnBhcmVudCYmZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihyLnBhcmVudCkmJnIucGFyZW50LmV4cHJlc3Npb249PT1yfHxvMCh0LHIpO3ZhciBzPWN1KHQpLHU9VzYocyxyKTtQXyh1KSYmbUQocix1KSYmdS5kZWNsYXJhdGlvbnMmJkVsKHIsdS5kZWNsYXJhdGlvbnMsci5lc2NhcGVkVGV4dCk7dmFyIGg9cy52YWx1ZURlY2xhcmF0aW9uO2lmKGgmJnMuZmxhZ3MmMzIpe2lmKGgua2luZD09PTI1NyYmZS5ub2RlSXNEZWNvcmF0ZWQoaCkpZm9yKHZhciBvPWUuZ2V0Q29udGFpbmluZ0NsYXNzKHIpO28hPT12b2lkIDA7KXtpZihvPT09aCYmby5uYW1lIT09cil7dmEoaCkuZmxhZ3N8PTE2Nzc3MjE2LHZhKHIpLmZsYWdzfD0zMzU1NDQzMjticmVha31vPWUuZ2V0Q29udGFpbmluZ0NsYXNzKG8pfWVsc2UgaWYoaC5raW5kPT09MjI2KWZvcih2YXIgbz1lLmdldFRoaXNDb250YWluZXIociwhMSk7by5raW5kIT09MzA1Oyl7aWYoby5wYXJlbnQ9PT1oKXsoZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24obykmJmUuaXNTdGF0aWMobyl8fGUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24obykpJiYodmEoaCkuZmxhZ3N8PTE2Nzc3MjE2LHZhKHIpLmZsYWdzfD0zMzU1NDQzMik7YnJlYWt9bz1lLmdldFRoaXNDb250YWluZXIobywhMSl9fWo4KHIsdCk7dmFyIHo9TDgocyxyKSxtZT1lLmdldEFzc2lnbm1lbnRUYXJnZXRLaW5kKHIpO2lmKG1lKXtpZighKHMuZmxhZ3MmMykmJiEoZS5pc0luSlNGaWxlKHIpJiZzLmZsYWdzJjUxMikpe3ZhciBNZT1zLmZsYWdzJjM4ND9lLkRpYWdub3N0aWNzLkNhbm5vdF9hc3NpZ25fdG9fMF9iZWNhdXNlX2l0X2lzX2FuX2VudW06cy5mbGFncyYzMj9lLkRpYWdub3N0aWNzLkNhbm5vdF9hc3NpZ25fdG9fMF9iZWNhdXNlX2l0X2lzX2FfY2xhc3M6cy5mbGFncyYxNTM2P2UuRGlhZ25vc3RpY3MuQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYV9uYW1lc3BhY2U6cy5mbGFncyYxNj9lLkRpYWdub3N0aWNzLkNhbm5vdF9hc3NpZ25fdG9fMF9iZWNhdXNlX2l0X2lzX2FfZnVuY3Rpb246cy5mbGFncyYyMDk3MTUyP2UuRGlhZ25vc3RpY3MuQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYW5faW1wb3J0OmUuRGlhZ25vc3RpY3MuQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfbm90X2FfdmFyaWFibGU7cmV0dXJuIFhyKHIsTWUsdG4odCkpLFBlfWlmKFp1KHMpKXJldHVybiBzLmZsYWdzJjM/WHIocixlLkRpYWdub3N0aWNzLkNhbm5vdF9hc3NpZ25fdG9fMF9iZWNhdXNlX2l0X2lzX2FfY29uc3RhbnQsdG4odCkpOlhyKHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX3JlYWRfb25seV9wcm9wZXJ0eSx0bih0KSksUGV9dmFyICRlPXMuZmxhZ3MmMjA5NzE1MjtpZihzLmZsYWdzJjMpe2lmKG1lPT09MSlyZXR1cm4gen1lbHNlIGlmKCRlKWg9cnUodCk7ZWxzZSByZXR1cm4gejtpZighaClyZXR1cm4gejt6PXliKHoscixpKTtmb3IodmFyIHRyPWUuZ2V0Um9vdERlY2xhcmF0aW9uKGgpLmtpbmQ9PT0xNjQsZHI9X3YoaCksRHI9X3YociksUXI9RHIhPT1kcixsaT1yLnBhcmVudCYmci5wYXJlbnQucGFyZW50JiZlLmlzU3ByZWFkQXNzaWdubWVudChyLnBhcmVudCkmJm1iKHIucGFyZW50LnBhcmVudCksVGk9dC5mbGFncyYxMzQyMTc3Mjg7RHIhPT1kciYmKERyLmtpbmQ9PT0yMTN8fERyLmtpbmQ9PT0yMTR8fGUuaXNPYmplY3RMaXRlcmFsT3JDbGFzc0V4cHJlc3Npb25NZXRob2RPckFjY2Vzc29yKERyKSkmJihwdihzKSYmeiE9PVNvfHx0ciYmIW4wKHMpKTspRHI9X3YoRHIpO3ZhciBDaT10cnx8JGV8fFFyfHxsaXx8VGl8fGUuaXNCaW5kaW5nRWxlbWVudChoKXx8eiE9PW5yJiZ6IT09U28mJighWWV8fCh6LmZsYWdzJjE2Mzg3KSE9PTB8fF9tKHIpfHxyLnBhcmVudC5raW5kPT09Mjc1KXx8ci5wYXJlbnQua2luZD09PTIzMHx8aC5raW5kPT09MjU0JiZoLmV4Y2xhbWF0aW9uVG9rZW58fGguZmxhZ3MmMTY3NzcyMTYsJGk9Q2k/dHI/STgoeixoKTp6Ono9PT1ucnx8ej09PVNvP1RyOmlfKHopLFppPXVwKHIseiwkaSxEcik7aWYoIV9DKHIpJiYoej09PW5yfHx6PT09U28pKXtpZihaaT09PW5yfHxaaT09PVNvKXJldHVybiBuJiYoWHIoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihoKSxlLkRpYWdub3N0aWNzLlZhcmlhYmxlXzBfaW1wbGljaXRseV9oYXNfdHlwZV8xX2luX3NvbWVfbG9jYXRpb25zX3doZXJlX2l0c190eXBlX2Nhbm5vdF9iZV9kZXRlcm1pbmVkLHRuKHQpLE90KFppKSksWHIocixlLkRpYWdub3N0aWNzLlZhcmlhYmxlXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlLHRuKHQpLE90KFppKSkpLGt2KFppKX1lbHNlIGlmKCFDaSYmIShqdSh6KSYzMjc2OCkmJmp1KFppKSYzMjc2OClyZXR1cm4gWHIocixlLkRpYWdub3N0aWNzLlZhcmlhYmxlXzBfaXNfdXNlZF9iZWZvcmVfYmVpbmdfYXNzaWduZWQsdG4odCkpLHo7cmV0dXJuIG1lP0tsKFppKTpaaX1mdW5jdGlvbiBCOChyLGkpe3JldHVybiEhZS5maW5kQW5jZXN0b3IocixmdW5jdGlvbih0KXtyZXR1cm4gdD09PWk/XCJxdWl0XCI6ZS5pc0Z1bmN0aW9uTGlrZSh0KXx8dC5wYXJlbnQmJmUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHQucGFyZW50KSYmIWUuaGFzU3RhdGljTW9kaWZpZXIodC5wYXJlbnQpJiZ0LnBhcmVudC5pbml0aWFsaXplcj09PXR9KX1mdW5jdGlvbiBKOChyLGkpe3JldHVybiBlLmZpbmRBbmNlc3RvcihyLGZ1bmN0aW9uKHQpe3JldHVybiB0PT09aT9cInF1aXRcIjp0PT09aS5pbml0aWFsaXplcnx8dD09PWkuY29uZGl0aW9ufHx0PT09aS5pbmNyZW1lbnRvcnx8dD09PWkuc3RhdGVtZW50fSl9ZnVuY3Rpb24gaGIocil7cmV0dXJuIGUuZmluZEFuY2VzdG9yKHIsZnVuY3Rpb24oaSl7cmV0dXJuIWl8fGUubm9kZVN0YXJ0c05ld0xleGljYWxFbnZpcm9ubWVudChpKT9cInF1aXRcIjplLmlzSXRlcmF0aW9uU3RhdGVtZW50KGksITEpfSl9ZnVuY3Rpb24gajgocixpKXtpZighKEFlPj0yfHwoaS5mbGFncyYzNCk9PT0wfHwhaS52YWx1ZURlY2xhcmF0aW9ufHxlLmlzU291cmNlRmlsZShpLnZhbHVlRGVjbGFyYXRpb24pfHxpLnZhbHVlRGVjbGFyYXRpb24ucGFyZW50LmtpbmQ9PT0yOTIpKXt2YXIgdD1lLmdldEVuY2xvc2luZ0Jsb2NrU2NvcGVDb250YWluZXIoaS52YWx1ZURlY2xhcmF0aW9uKSxvPUI4KHIsdCkscz1oYih0KTtpZihzKXtpZihvKXt2YXIgdT0hMDtpZihlLmlzRm9yU3RhdGVtZW50KHQpKXt2YXIgaD1lLmdldEFuY2VzdG9yKGkudmFsdWVEZWNsYXJhdGlvbiwyNTUpO2lmKGgmJmgucGFyZW50PT09dCl7dmFyIHo9Sjgoci5wYXJlbnQsdCk7aWYoeil7dmFyIG1lPXZhKHopO21lLmZsYWdzfD0xMzEwNzI7dmFyIE1lPW1lLmNhcHR1cmVkQmxvY2tTY29wZUJpbmRpbmdzfHwobWUuY2FwdHVyZWRCbG9ja1Njb3BlQmluZGluZ3M9W10pO2UucHVzaElmVW5pcXVlKE1lLGkpLHo9PT10LmluaXRpYWxpemVyJiYodT0hMSl9fX11JiYodmEocykuZmxhZ3N8PTY1NTM2KX1pZihlLmlzRm9yU3RhdGVtZW50KHQpKXt2YXIgaD1lLmdldEFuY2VzdG9yKGkudmFsdWVEZWNsYXJhdGlvbiwyNTUpO2gmJmgucGFyZW50PT09dCYmejgocix0KSYmKHZhKGkudmFsdWVEZWNsYXJhdGlvbikuZmxhZ3N8PTQxOTQzMDQpfXZhKGkudmFsdWVEZWNsYXJhdGlvbikuZmxhZ3N8PTUyNDI4OH1vJiYodmEoaS52YWx1ZURlY2xhcmF0aW9uKS5mbGFnc3w9MjYyMTQ0KX19ZnVuY3Rpb24gVTgocixpKXt2YXIgdD12YShyKTtyZXR1cm4hIXQmJmUuY29udGFpbnModC5jYXB0dXJlZEJsb2NrU2NvcGVCaW5kaW5ncyxFdChpKSl9ZnVuY3Rpb24gejgocixpKXtmb3IodmFyIHQ9cjt0LnBhcmVudC5raW5kPT09MjEyOyl0PXQucGFyZW50O3ZhciBvPSExO2lmKGUuaXNBc3NpZ25tZW50VGFyZ2V0KHQpKW89ITA7ZWxzZSBpZih0LnBhcmVudC5raW5kPT09MjE5fHx0LnBhcmVudC5raW5kPT09MjIwKXt2YXIgcz10LnBhcmVudDtvPXMub3BlcmF0b3I9PT00NXx8cy5vcGVyYXRvcj09PTQ2fXJldHVybiBvPyEhZS5maW5kQW5jZXN0b3IodCxmdW5jdGlvbih1KXtyZXR1cm4gdT09PWk/XCJxdWl0XCI6dT09PWkuc3RhdGVtZW50fSk6ITF9ZnVuY3Rpb24gRGIocixpKXtpZih2YShyKS5mbGFnc3w9MixpLmtpbmQ9PT0xNjd8fGkua2luZD09PTE3MSl7dmFyIHQ9aS5wYXJlbnQ7dmEodCkuZmxhZ3N8PTR9ZWxzZSB2YShpKS5mbGFnc3w9NH1mdW5jdGlvbiB2QyhyKXtyZXR1cm4gZS5pc1N1cGVyQ2FsbChyKT9yOmUuaXNGdW5jdGlvbkxpa2Uocik/dm9pZCAwOmUuZm9yRWFjaENoaWxkKHIsdkMpfWZ1bmN0aW9uIHlDKHIpe3ZhciBpPUV0KHIpLHQ9Z28oaSksbz1CbCh0KTtyZXR1cm4gbz09PWN0fWZ1bmN0aW9uIGhDKHIsaSx0KXt2YXIgbz1pLnBhcmVudCxzPWUuZ2V0Q2xhc3NFeHRlbmRzSGVyaXRhZ2VFbGVtZW50KG8pO3MmJiF5QyhvKSYmci5mbG93Tm9kZSYmIWEwKHIuZmxvd05vZGUsITEpJiZYcihyLHQpfWZ1bmN0aW9uIFc4KHIsaSl7ZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oaSkmJmUuaGFzU3RhdGljTW9kaWZpZXIoaSkmJmkuaW5pdGlhbGl6ZXImJmUudGV4dFJhbmdlQ29udGFpbnNQb3NpdGlvbkluY2x1c2l2ZShpLmluaXRpYWxpemVyLHIucG9zKSYmZS5sZW5ndGgoaS5wYXJlbnQuZGVjb3JhdG9ycykmJlhyKHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfdXNlX3RoaXNfaW5fYV9zdGF0aWNfcHJvcGVydHlfaW5pdGlhbGl6ZXJfb2ZfYV9kZWNvcmF0ZWRfY2xhc3MpfWZ1bmN0aW9uIHl5KHIpe3ZhciBpPV9tKHIpLHQ9ZS5nZXRUaGlzQ29udGFpbmVyKHIsITApLG89ITE7c3dpdGNoKHQua2luZD09PTE3MSYmaEMocix0LGUuRGlhZ25vc3RpY3Muc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3MpLHQua2luZD09PTIxNCYmKHQ9ZS5nZXRUaGlzQ29udGFpbmVyKHQsITEpLG89ITApLFc4KHIsdCksdC5raW5kKXtjYXNlIDI2MTpYcihyLGUuRGlhZ25vc3RpY3MudGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hX21vZHVsZV9vcl9uYW1lc3BhY2VfYm9keSk7YnJlYWs7Y2FzZSAyNjA6WHIocixlLkRpYWdub3N0aWNzLnRoaXNfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fY3VycmVudF9sb2NhdGlvbik7YnJlYWs7Y2FzZSAxNzE6REMocix0KSYmWHIocixlLkRpYWdub3N0aWNzLnRoaXNfY2Fubm90X2JlX3JlZmVyZW5jZWRfaW5fY29uc3RydWN0b3JfYXJndW1lbnRzKTticmVhaztjYXNlIDE2MjpYcihyLGUuRGlhZ25vc3RpY3MudGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9hX2NvbXB1dGVkX3Byb3BlcnR5X25hbWUpO2JyZWFrfSFpJiZvJiZBZTwyJiZEYihyLHQpO3ZhciBzPWJiKHIsITAsdCk7aWYobHIpe3ZhciB1PUp0KHBlKTtpZihzPT09dSYmbylYcihyLGUuRGlhZ25vc3RpY3MuVGhlX2NvbnRhaW5pbmdfYXJyb3dfZnVuY3Rpb25fY2FwdHVyZXNfdGhlX2dsb2JhbF92YWx1ZV9vZl90aGlzKTtlbHNlIGlmKCFzKXt2YXIgaD1YcihyLGUuRGlhZ25vc3RpY3MudGhpc19pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV90eXBlX2Fubm90YXRpb24pO2lmKCFlLmlzU291cmNlRmlsZSh0KSl7dmFyIHo9YmIodCk7eiYmeiE9PXUmJmUuYWRkUmVsYXRlZEluZm8oaCxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHQsZS5EaWFnbm9zdGljcy5Bbl9vdXRlcl92YWx1ZV9vZl90aGlzX2lzX3NoYWRvd2VkX2J5X3RoaXNfY29udGFpbmVyKSl9fX1yZXR1cm4gc3x8T2V9ZnVuY3Rpb24gYmIocixpLHQpe2k9PT12b2lkIDAmJihpPSEwKSx0PT09dm9pZCAwJiYodD1lLmdldFRoaXNDb250YWluZXIociwhMSkpO3ZhciBvPWUuaXNJbkpTRmlsZShyKTtpZihlLmlzRnVuY3Rpb25MaWtlKHQpJiYoIXhiKHIpfHxlLmdldFRoaXNQYXJhbWV0ZXIodCkpKXt2YXIgcz1uaSh0KXx8byYmSzgodCk7aWYoIXMpe3ZhciB1PVY4KHQpO2lmKG8mJnUpe3ZhciBoPXluKHUpLnN5bWJvbDtoJiZoLm1lbWJlcnMmJmguZmxhZ3MmMTYmJihzPWdvKGgpLnRoaXNUeXBlKX1lbHNlIFNsKHQpJiYocz1nbyhzbyh0LnN5bWJvbCkpLnRoaXNUeXBlKTtzfHwocz1TQyh0KSl9aWYocylyZXR1cm4gdXAocixzKX1pZihlLmlzQ2xhc3NMaWtlKHQucGFyZW50KSl7dmFyIHo9RXQodC5wYXJlbnQpLG1lPWUuaXNTdGF0aWModCk/SnQoeik6Z28oeikudGhpc1R5cGU7cmV0dXJuIHVwKHIsbWUpfWlmKGUuaXNTb3VyY2VGaWxlKHQpKWlmKHQuY29tbW9uSnNNb2R1bGVJbmRpY2F0b3Ipe3ZhciBNZT1FdCh0KTtyZXR1cm4gTWUmJkp0KE1lKX1lbHNle2lmKHQuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3IpcmV0dXJuIFRyO2lmKGkpcmV0dXJuIEp0KHBlKX19ZnVuY3Rpb24gcTgocil7dmFyIGk9ZS5nZXRUaGlzQ29udGFpbmVyKHIsITEpO2lmKGUuaXNGdW5jdGlvbkxpa2UoaSkpe3ZhciB0PXlsKGkpO2lmKHQudGhpc1BhcmFtZXRlcilyZXR1cm4gcjAodC50aGlzUGFyYW1ldGVyKX1pZihlLmlzQ2xhc3NMaWtlKGkucGFyZW50KSl7dmFyIG89RXQoaS5wYXJlbnQpO3JldHVybiBlLmlzU3RhdGljKGkpP0p0KG8pOmdvKG8pLnRoaXNUeXBlfX1mdW5jdGlvbiBWOChyKXtpZihyLmtpbmQ9PT0yMTMmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHIucGFyZW50KSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHIucGFyZW50KT09PTMpcmV0dXJuIHIucGFyZW50LmxlZnQuZXhwcmVzc2lvbi5leHByZXNzaW9uO2lmKHIua2luZD09PTE2OSYmci5wYXJlbnQua2luZD09PTIwNSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oci5wYXJlbnQucGFyZW50KSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHIucGFyZW50LnBhcmVudCk9PT02KXJldHVybiByLnBhcmVudC5wYXJlbnQubGVmdC5leHByZXNzaW9uO2lmKHIua2luZD09PTIxMyYmci5wYXJlbnQua2luZD09PTI5NiYmci5wYXJlbnQucGFyZW50LmtpbmQ9PT0yMDUmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHIucGFyZW50LnBhcmVudC5wYXJlbnQpJiZlLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoci5wYXJlbnQucGFyZW50LnBhcmVudCk9PT02KXJldHVybiByLnBhcmVudC5wYXJlbnQucGFyZW50LmxlZnQuZXhwcmVzc2lvbjtpZihyLmtpbmQ9PT0yMTMmJmUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQoci5wYXJlbnQpJiZlLmlzSWRlbnRpZmllcihyLnBhcmVudC5uYW1lKSYmKHIucGFyZW50Lm5hbWUuZXNjYXBlZFRleHQ9PT1cInZhbHVlXCJ8fHIucGFyZW50Lm5hbWUuZXNjYXBlZFRleHQ9PT1cImdldFwifHxyLnBhcmVudC5uYW1lLmVzY2FwZWRUZXh0PT09XCJzZXRcIikmJmUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihyLnBhcmVudC5wYXJlbnQpJiZlLmlzQ2FsbEV4cHJlc3Npb24oci5wYXJlbnQucGFyZW50LnBhcmVudCkmJnIucGFyZW50LnBhcmVudC5wYXJlbnQuYXJndW1lbnRzWzJdPT09ci5wYXJlbnQucGFyZW50JiZlLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoci5wYXJlbnQucGFyZW50LnBhcmVudCk9PT05KXJldHVybiByLnBhcmVudC5wYXJlbnQucGFyZW50LmFyZ3VtZW50c1swXS5leHByZXNzaW9uO2lmKGUuaXNNZXRob2REZWNsYXJhdGlvbihyKSYmZS5pc0lkZW50aWZpZXIoci5uYW1lKSYmKHIubmFtZS5lc2NhcGVkVGV4dD09PVwidmFsdWVcInx8ci5uYW1lLmVzY2FwZWRUZXh0PT09XCJnZXRcInx8ci5uYW1lLmVzY2FwZWRUZXh0PT09XCJzZXRcIikmJmUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihyLnBhcmVudCkmJmUuaXNDYWxsRXhwcmVzc2lvbihyLnBhcmVudC5wYXJlbnQpJiZyLnBhcmVudC5wYXJlbnQuYXJndW1lbnRzWzJdPT09ci5wYXJlbnQmJmUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChyLnBhcmVudC5wYXJlbnQpPT09OSlyZXR1cm4gci5wYXJlbnQucGFyZW50LmFyZ3VtZW50c1swXS5leHByZXNzaW9ufWZ1bmN0aW9uIEs4KHIpe3ZhciBpPWUuZ2V0SlNEb2NUeXBlKHIpO2lmKGkmJmkua2luZD09PTMxNyl7dmFyIHQ9aTtpZih0LnBhcmFtZXRlcnMubGVuZ3RoPjAmJnQucGFyYW1ldGVyc1swXS5uYW1lJiZ0LnBhcmFtZXRlcnNbMF0ubmFtZS5lc2NhcGVkVGV4dD09PVwidGhpc1wiKXJldHVybiBWYSh0LnBhcmFtZXRlcnNbMF0udHlwZSl9dmFyIG89ZS5nZXRKU0RvY1RoaXNUYWcocik7aWYobyYmby50eXBlRXhwcmVzc2lvbilyZXR1cm4gVmEoby50eXBlRXhwcmVzc2lvbil9ZnVuY3Rpb24gREMocixpKXtyZXR1cm4hIWUuZmluZEFuY2VzdG9yKHIsZnVuY3Rpb24odCl7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbih0KT9cInF1aXRcIjp0LmtpbmQ9PT0xNjQmJnQucGFyZW50PT09aX0pfWZ1bmN0aW9uIFNiKHIpe3ZhciBpPXIucGFyZW50LmtpbmQ9PT0yMDgmJnIucGFyZW50LmV4cHJlc3Npb249PT1yLHQ9ZS5nZXRTdXBlckNvbnRhaW5lcihyLCEwKSxvPXQscz0hMTtpZighaSlmb3IoO28mJm8ua2luZD09PTIxNDspbz1lLmdldFN1cGVyQ29udGFpbmVyKG8sITApLHM9QWU8Mjt2YXIgdT10cihvKSxoPTA7aWYoIXUpe3ZhciB6PWUuZmluZEFuY2VzdG9yKHIsZnVuY3Rpb24oZHIpe3JldHVybiBkcj09PW8/XCJxdWl0XCI6ZHIua2luZD09PTE2Mn0pO3JldHVybiB6JiZ6LmtpbmQ9PT0xNjI/WHIocixlLkRpYWdub3N0aWNzLnN1cGVyX2Nhbm5vdF9iZV9yZWZlcmVuY2VkX2luX2FfY29tcHV0ZWRfcHJvcGVydHlfbmFtZSk6aT9YcihyLGUuRGlhZ25vc3RpY3MuU3VwZXJfY2FsbHNfYXJlX25vdF9wZXJtaXR0ZWRfb3V0c2lkZV9jb25zdHJ1Y3RvcnNfb3JfaW5fbmVzdGVkX2Z1bmN0aW9uc19pbnNpZGVfY29uc3RydWN0b3JzKTohb3x8IW8ucGFyZW50fHwhKGUuaXNDbGFzc0xpa2Uoby5wYXJlbnQpfHxvLnBhcmVudC5raW5kPT09MjA1KT9YcihyLGUuRGlhZ25vc3RpY3Muc3VwZXJfY2FuX29ubHlfYmVfcmVmZXJlbmNlZF9pbl9tZW1iZXJzX29mX2Rlcml2ZWRfY2xhc3Nlc19vcl9vYmplY3RfbGl0ZXJhbF9leHByZXNzaW9ucyk6WHIocixlLkRpYWdub3N0aWNzLnN1cGVyX3Byb3BlcnR5X2FjY2Vzc19pc19wZXJtaXR0ZWRfb25seV9pbl9hX2NvbnN0cnVjdG9yX21lbWJlcl9mdW5jdGlvbl9vcl9tZW1iZXJfYWNjZXNzb3Jfb2ZfYV9kZXJpdmVkX2NsYXNzKSxQZX1pZighaSYmdC5raW5kPT09MTcxJiZoQyhyLG8sZS5EaWFnbm9zdGljcy5zdXBlcl9tdXN0X2JlX2NhbGxlZF9iZWZvcmVfYWNjZXNzaW5nX2FfcHJvcGVydHlfb2Zfc3VwZXJfaW5fdGhlX2NvbnN0cnVjdG9yX29mX2FfZGVyaXZlZF9jbGFzcyksZS5pc1N0YXRpYyhvKXx8aT8oaD01MTIsIWkmJkFlPj0yJiZBZTw9OCYmKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKG8pfHxlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKG8pKSYmZS5mb3JFYWNoRW5jbG9zaW5nQmxvY2tTY29wZUNvbnRhaW5lcihyLnBhcmVudCxmdW5jdGlvbihkcil7KCFlLmlzU291cmNlRmlsZShkcil8fGUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUoZHIpKSYmKHZhKGRyKS5mbGFnc3w9MTM0MjE3NzI4KX0pKTpoPTI1Nix2YShyKS5mbGFnc3w9aCxvLmtpbmQ9PT0xNjkmJmUuaGFzU3ludGFjdGljTW9kaWZpZXIobywyNTYpJiYoZS5pc1N1cGVyUHJvcGVydHkoci5wYXJlbnQpJiZlLmlzQXNzaWdubWVudFRhcmdldChyLnBhcmVudCk/dmEobykuZmxhZ3N8PTQwOTY6dmEobykuZmxhZ3N8PTIwNDgpLHMmJkRiKHIucGFyZW50LG8pLG8ucGFyZW50LmtpbmQ9PT0yMDUpcmV0dXJuIEFlPDI/KFhyKHIsZS5EaWFnbm9zdGljcy5zdXBlcl9pc19vbmx5X2FsbG93ZWRfaW5fbWVtYmVyc19vZl9vYmplY3RfbGl0ZXJhbF9leHByZXNzaW9uc193aGVuX29wdGlvbl90YXJnZXRfaXNfRVMyMDE1X29yX2hpZ2hlciksUGUpOk9lO3ZhciBtZT1vLnBhcmVudDtpZighZS5nZXRDbGFzc0V4dGVuZHNIZXJpdGFnZUVsZW1lbnQobWUpKXJldHVybiBYcihyLGUuRGlhZ25vc3RpY3Muc3VwZXJfY2FuX29ubHlfYmVfcmVmZXJlbmNlZF9pbl9hX2Rlcml2ZWRfY2xhc3MpLFBlO3ZhciBNZT1nbyhFdChtZSkpLCRlPU1lJiZRYyhNZSlbMF07aWYoISRlKXJldHVybiBQZTtpZihvLmtpbmQ9PT0xNzEmJkRDKHIsbykpcmV0dXJuIFhyKHIsZS5EaWFnbm9zdGljcy5zdXBlcl9jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMpLFBlO3JldHVybiBoPT09NTEyP0JsKE1lKTpSYygkZSxNZS50aGlzVHlwZSk7ZnVuY3Rpb24gdHIoZHIpe3JldHVybiBkcj9pP2RyLmtpbmQ9PT0xNzE6ZS5pc0NsYXNzTGlrZShkci5wYXJlbnQpfHxkci5wYXJlbnQua2luZD09PTIwNT9lLmlzU3RhdGljKGRyKT9kci5raW5kPT09MTY5fHxkci5raW5kPT09MTY4fHxkci5raW5kPT09MTcyfHxkci5raW5kPT09MTczfHxkci5raW5kPT09MTY3fHxkci5raW5kPT09MTcwOmRyLmtpbmQ9PT0xNjl8fGRyLmtpbmQ9PT0xNjh8fGRyLmtpbmQ9PT0xNzJ8fGRyLmtpbmQ9PT0xNzN8fGRyLmtpbmQ9PT0xNjd8fGRyLmtpbmQ9PT0xNjZ8fGRyLmtpbmQ9PT0xNzE6ITE6ITF9fWZ1bmN0aW9uIEc4KHIpe3JldHVybihyLmtpbmQ9PT0xNjl8fHIua2luZD09PTE3Mnx8ci5raW5kPT09MTczKSYmci5wYXJlbnQua2luZD09PTIwNT9yLnBhcmVudDpyLmtpbmQ9PT0yMTMmJnIucGFyZW50LmtpbmQ9PT0yOTY/ci5wYXJlbnQucGFyZW50OnZvaWQgMH1mdW5jdGlvbiBiQyhyKXtyZXR1cm4gZS5nZXRPYmplY3RGbGFncyhyKSY0JiZyLnRhcmdldD09PXFuP3hvKHIpWzBdOnZvaWQgMH1mdW5jdGlvbiBIOChyKXtyZXR1cm4gU3MocixmdW5jdGlvbihpKXtyZXR1cm4gaS5mbGFncyYyMDk3MTUyP2UuZm9yRWFjaChpLnR5cGVzLGJDKTpiQyhpKX0pfWZ1bmN0aW9uIFNDKHIpe2lmKHIua2luZCE9PTIxNCl7aWYod0Qocikpe3ZhciBpPWR2KHIpO2lmKGkpe3ZhciB0PWkudGhpc1BhcmFtZXRlcjtpZih0KXJldHVybiBKdCh0KX19dmFyIG89ZS5pc0luSlNGaWxlKHIpO2lmKGxyfHxvKXt2YXIgcz1HOChyKTtpZihzKXtmb3IodmFyIHU9JHAocyksaD1zLHo9dTt6Oyl7dmFyIG1lPUg4KHopO2lmKG1lKXJldHVybiB1bihtZSxhYih3ZyhzKSkpO2lmKGgucGFyZW50LmtpbmQhPT0yOTYpYnJlYWs7aD1oLnBhcmVudC5wYXJlbnQsej0kcChoKX1yZXR1cm4gJGModT9DXyh1KTpPcyhzKSl9dmFyIE1lPWUud2Fsa1VwUGFyZW50aGVzaXplZEV4cHJlc3Npb25zKHIucGFyZW50KTtpZihNZS5raW5kPT09MjIxJiZNZS5vcGVyYXRvclRva2VuLmtpbmQ9PT02Myl7dmFyICRlPU1lLmxlZnQ7aWYoZS5pc0FjY2Vzc0V4cHJlc3Npb24oJGUpKXt2YXIgdHI9JGUuZXhwcmVzc2lvbjtpZihvJiZlLmlzSWRlbnRpZmllcih0cikpe3ZhciBkcj1lLmdldFNvdXJjZUZpbGVPZk5vZGUoTWUpO2lmKGRyLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yJiZEbCh0cik9PT1kci5zeW1ib2wpcmV0dXJufXJldHVybiAkYyhPcyh0cikpfX19fX1mdW5jdGlvbiBUQyhyKXt2YXIgaT1yLnBhcmVudDtpZighIXdEKGkpKXt2YXIgdD1lLmdldEltbWVkaWF0ZWx5SW52b2tlZEZ1bmN0aW9uRXhwcmVzc2lvbihpKTtpZih0JiZ0LmFyZ3VtZW50cyl7dmFyIG89WmIodCkscz1pLnBhcmFtZXRlcnMuaW5kZXhPZihyKTtpZihyLmRvdERvdERvdFRva2VuKXJldHVybiBZYihvLHMsby5sZW5ndGgsT2Usdm9pZCAwLDApO3ZhciB1PXZhKHQpLGg9dS5yZXNvbHZlZFNpZ25hdHVyZTt1LnJlc29sdmVkU2lnbmF0dXJlPUVuO3ZhciB6PXM8by5sZW5ndGg/SHAoeW4ob1tzXSkpOnIuaW5pdGlhbGl6ZXI/dm9pZCAwOnZpO3JldHVybiB1LnJlc29sdmVkU2lnbmF0dXJlPWgsen12YXIgbWU9ZHYoaSk7aWYobWUpe3ZhciBNZT1pLnBhcmFtZXRlcnMuaW5kZXhPZihyKS0oZS5nZXRUaGlzUGFyYW1ldGVyKGkpPzE6MCk7cmV0dXJuIHIuZG90RG90RG90VG9rZW4mJmUubGFzdE9yVW5kZWZpbmVkKGkucGFyYW1ldGVycyk9PT1yP3ltKG1lLE1lKTpMZChtZSxNZSl9fX1mdW5jdGlvbiBUYihyKXt2YXIgaT1lLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZShyKTtpZihpKXJldHVybiBWYShpKTtzd2l0Y2goci5raW5kKXtjYXNlIDE2NDpyZXR1cm4gVEMocik7Y2FzZSAyMDM6cmV0dXJuIFg4KHIpO2Nhc2UgMTY3OmlmKGUuaXNTdGF0aWMocikpcmV0dXJuIFE4KHIpfX1mdW5jdGlvbiBYOChyKXt2YXIgaT1yLnBhcmVudC5wYXJlbnQsdD1yLnByb3BlcnR5TmFtZXx8ci5uYW1lLG89VGIoaSl8fGkua2luZCE9PTIwMyYmaS5pbml0aWFsaXplciYmd3koaSxyLmRvdERvdERvdFRva2VuPzY0OjApO2lmKCEoIW98fGUuaXNCaW5kaW5nUGF0dGVybih0KXx8ZS5pc0NvbXB1dGVkTm9uTGl0ZXJhbE5hbWUodCkpKXtpZihpLm5hbWUua2luZD09PTIwMil7dmFyIHM9ZS5pbmRleE9mTm9kZShyLnBhcmVudC5lbGVtZW50cyxyKTtyZXR1cm4gczwwP3ZvaWQgMDpBYihvLHMpfXZhciB1PVpfKHQpO2lmKF9mKHUpKXt2YXIgaD1wZih1KTtyZXR1cm4gZGEobyxoKX19fWZ1bmN0aW9uIFE4KHIpe3ZhciBpPWUuaXNFeHByZXNzaW9uKHIucGFyZW50KSYmb3Uoci5wYXJlbnQpO2lmKCEhaSlyZXR1cm4gTWQoaSxFdChyKS5lc2NhcGVkTmFtZSl9ZnVuY3Rpb24gWTgocixpKXt2YXIgdD1yLnBhcmVudDtpZihlLmhhc0luaXRpYWxpemVyKHQpJiZyPT09dC5pbml0aWFsaXplcil7dmFyIG89VGIodCk7aWYobylyZXR1cm4gbztpZighKGkmOCkmJmUuaXNCaW5kaW5nUGF0dGVybih0Lm5hbWUpKXJldHVybiBRdSh0Lm5hbWUsITAsITEpfX1mdW5jdGlvbiAkOChyKXt2YXIgaT1lLmdldENvbnRhaW5pbmdGdW5jdGlvbihyKTtpZihpKXt2YXIgdD1FYihpKTtpZih0KXt2YXIgbz1lLmdldEZ1bmN0aW9uRmxhZ3MoaSk7aWYobyYxKXt2YXIgcz1vJjI/MjoxLHU9SnkodCxzLHZvaWQgMCk7aWYoIXUpcmV0dXJuO3Q9dS5yZXR1cm5UeXBlfWlmKG8mMil7dmFyIGg9U3ModCxrXyk7cmV0dXJuIGgmJlBhKFtoLE9rKGgpXSl9cmV0dXJuIHR9fX1mdW5jdGlvbiBaOChyLGkpe3ZhciB0PW91KHIsaSk7aWYodCl7dmFyIG89a18odCk7cmV0dXJuIG8mJlBhKFtvLE9rKG8pXSl9fWZ1bmN0aW9uIGU1KHIpe3ZhciBpPWUuZ2V0Q29udGFpbmluZ0Z1bmN0aW9uKHIpO2lmKGkpe3ZhciB0PWUuZ2V0RnVuY3Rpb25GbGFncyhpKSxvPUViKGkpO2lmKG8pcmV0dXJuIHIuYXN0ZXJpc2tUb2tlbj9vOkpnKDAsbywodCYyKSE9PTApfX1mdW5jdGlvbiB4YihyKXtmb3IodmFyIGk9ITE7ci5wYXJlbnQmJiFlLmlzRnVuY3Rpb25MaWtlKHIucGFyZW50KTspe2lmKGUuaXNQYXJhbWV0ZXIoci5wYXJlbnQpJiYoaXx8ci5wYXJlbnQuaW5pdGlhbGl6ZXI9PT1yKSlyZXR1cm4hMDtlLmlzQmluZGluZ0VsZW1lbnQoci5wYXJlbnQpJiZyLnBhcmVudC5pbml0aWFsaXplcj09PXImJihpPSEwKSxyPXIucGFyZW50fXJldHVybiExfWZ1bmN0aW9uIHhDKHIsaSl7dmFyIHQ9ISEoZS5nZXRGdW5jdGlvbkZsYWdzKGkpJjIpLG89RWIoaSk7aWYobylyZXR1cm4gSmcocixvLHQpfHx2b2lkIDB9ZnVuY3Rpb24gRWIocil7dmFyIGk9eWcocik7aWYoaSlyZXR1cm4gaTt2YXIgdD1QYihyKTtpZih0JiYhWjEodCkpcmV0dXJuIHlvKHQpO3ZhciBvPWUuZ2V0SW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uKHIpO2lmKG8pcmV0dXJuIG91KG8pfWZ1bmN0aW9uIEVDKHIsaSl7dmFyIHQ9WmIociksbz10LmluZGV4T2YoaSk7cmV0dXJuIG89PT0tMT92b2lkIDA6Q2IocixvKX1mdW5jdGlvbiBDYihyLGkpe2lmKGUuaXNJbXBvcnRDYWxsKHIpKXJldHVybiBpPT09MD9MaTppPT09MT94eCghMSk6T2U7dmFyIHQ9dmEocikucmVzb2x2ZWRTaWduYXR1cmU9PT10bz90bzpNZyhyKTtpZihlLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50KHIpJiZpPT09MClyZXR1cm4gbDAodCxyKTt2YXIgbz10LnBhcmFtZXRlcnMubGVuZ3RoLTE7cmV0dXJuIEgodCkmJmk+PW8/SmMoSnQodC5wYXJhbWV0ZXJzW29dKSxJZihpLW8pLDI1Nik6JHUodCxpKX1mdW5jdGlvbiByNShyLGkpe2lmKHIucGFyZW50LmtpbmQ9PT0yMTApcmV0dXJuIEVDKHIucGFyZW50LGkpfWZ1bmN0aW9uIGk1KHIsaSl7dmFyIHQ9ci5wYXJlbnQsbz10LmxlZnQscz10Lm9wZXJhdG9yVG9rZW4sdT10LnJpZ2h0O3N3aXRjaChzLmtpbmQpe2Nhc2UgNjM6Y2FzZSA3NjpjYXNlIDc1OmNhc2UgNzc6cmV0dXJuIHI9PT11P2E1KHQpOnZvaWQgMDtjYXNlIDU2OmNhc2UgNjA6dmFyIGg9b3UodCxpKTtyZXR1cm4gcj09PXUmJihoJiZoLnBhdHRlcm58fCFoJiYhZS5pc0RlZmF1bHRlZEV4cGFuZG9Jbml0aWFsaXplcih0KSk/R3Mobyk6aDtjYXNlIDU1OmNhc2UgMjc6cmV0dXJuIHI9PT11P291KHQsaSk6dm9pZCAwO2RlZmF1bHQ6cmV0dXJufX1mdW5jdGlvbiB0NShyKXtpZihyLnN5bWJvbClyZXR1cm4gci5zeW1ib2w7aWYoZS5pc0lkZW50aWZpZXIocikpcmV0dXJuIERsKHIpO2lmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ocikpe3ZhciBpPUdzKHIuZXhwcmVzc2lvbik7cmV0dXJuIGUuaXNQcml2YXRlSWRlbnRpZmllcihyLm5hbWUpP3QoaSxyLm5hbWUpOmJpKGksci5uYW1lLmVzY2FwZWRUZXh0KX1yZXR1cm47ZnVuY3Rpb24gdChvLHMpe3ZhciB1PWcwKHMuZXNjYXBlZFRleHQscyk7cmV0dXJuIHUmJlViKG8sdSl9fWZ1bmN0aW9uIGE1KHIpe3ZhciBpLHQsbz1lLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQocik7c3dpdGNoKG8pe2Nhc2UgMDpjYXNlIDQ6dmFyIHM9dDUoci5sZWZ0KSx1PXMmJnMudmFsdWVEZWNsYXJhdGlvbjtpZih1JiYoZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24odSl8fGUuaXNQcm9wZXJ0eVNpZ25hdHVyZSh1KSkpe3ZhciBoPWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKHUpO3JldHVybiBoJiZ1bihWYShoKSxBYShzKS5tYXBwZXIpfHx1LmluaXRpYWxpemVyJiZHcyhyLmxlZnQpfXJldHVybiBvPT09MD9HcyhyLmxlZnQpOkNDKHIpO2Nhc2UgNTppZihzMChyLG8pKXJldHVybiBDQyhyKTtpZihyLmxlZnQuc3ltYm9sKXt2YXIgej1yLmxlZnQuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb247aWYoIXopcmV0dXJuO3ZhciBtZT1lLmNhc3Qoci5sZWZ0LGUuaXNBY2Nlc3NFeHByZXNzaW9uKSxoPWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKHopO2lmKGgpcmV0dXJuIFZhKGgpO2lmKGUuaXNJZGVudGlmaWVyKG1lLmV4cHJlc3Npb24pKXt2YXIgTWU9bWUuZXhwcmVzc2lvbiwkZT1lcyhNZSxNZS5lc2NhcGVkVGV4dCwxMTE1NTEsdm9pZCAwLE1lLmVzY2FwZWRUZXh0LCEwKTtpZigkZSl7dmFyIHRyPSRlLnZhbHVlRGVjbGFyYXRpb24mJmUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKCRlLnZhbHVlRGVjbGFyYXRpb24pO2lmKHRyKXt2YXIgZHI9ZS5nZXRFbGVtZW50T3JQcm9wZXJ0eUFjY2Vzc05hbWUobWUpO2lmKGRyIT09dm9pZCAwKXJldHVybiBNZChWYSh0ciksZHIpfXJldHVybn19cmV0dXJuIGUuaXNJbkpTRmlsZSh6KT92b2lkIDA6R3Moci5sZWZ0KX1lbHNlIHJldHVybiBHcyhyLmxlZnQpO2Nhc2UgMTpjYXNlIDY6Y2FzZSAzOnZhciBEcj0oaT1yLmxlZnQuc3ltYm9sKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkudmFsdWVEZWNsYXJhdGlvbjtjYXNlIDI6RHJ8fChEcj0odD1yLnN5bWJvbCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnZhbHVlRGVjbGFyYXRpb24pO3ZhciBRcj1EciYmZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUoRHIpO3JldHVybiBRcj9WYShRcik6dm9pZCAwO2Nhc2UgNzpjYXNlIDg6Y2FzZSA5OnJldHVybiBlLkRlYnVnLmZhaWwoXCJEb2VzIG5vdCBhcHBseVwiKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKG8pfX1mdW5jdGlvbiBzMChyLGkpe2lmKGk9PT12b2lkIDAmJihpPWUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChyKSksaT09PTQpcmV0dXJuITA7aWYoIWUuaXNJbkpTRmlsZShyKXx8aSE9PTV8fCFlLmlzSWRlbnRpZmllcihyLmxlZnQuZXhwcmVzc2lvbikpcmV0dXJuITE7dmFyIHQ9ci5sZWZ0LmV4cHJlc3Npb24uZXNjYXBlZFRleHQsbz1lcyhyLmxlZnQsdCwxMTE1NTEsdm9pZCAwLHZvaWQgMCwhMCwhMCk7cmV0dXJuIGUuaXNUaGlzSW5pdGlhbGl6ZWREZWNsYXJhdGlvbihvPT1udWxsP3ZvaWQgMDpvLnZhbHVlRGVjbGFyYXRpb24pfWZ1bmN0aW9uIENDKHIpe2lmKCFyLnN5bWJvbClyZXR1cm4gR3Moci5sZWZ0KTtpZihyLnN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKXt2YXIgaT1lLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZShyLnN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKTtpZihpKXt2YXIgdD1WYShpKTtpZih0KXJldHVybiB0fX12YXIgbz1lLmNhc3Qoci5sZWZ0LGUuaXNBY2Nlc3NFeHByZXNzaW9uKTtpZighIWUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKGUuZ2V0VGhpc0NvbnRhaW5lcihvLmV4cHJlc3Npb24sITEpKSl7dmFyIHM9eXkoby5leHByZXNzaW9uKSx1PWUuZ2V0RWxlbWVudE9yUHJvcGVydHlBY2Nlc3NOYW1lKG8pO3JldHVybiB1IT09dm9pZCAwJiZNZChzLHUpfHx2b2lkIDB9fWZ1bmN0aW9uIG41KHIpe3JldHVybiEhKGUuZ2V0Q2hlY2tGbGFncyhyKSYyNjIxNDQmJiFyLnR5cGUmJnYociwwKT49MCl9ZnVuY3Rpb24gTWQocixpLHQpe3JldHVybiBTcyhyLGZ1bmN0aW9uKG8pe3ZhciBzO2lmKEJjKG8pJiYhby5kZWNsYXJhdGlvbi5uYW1lVHlwZSl7dmFyIHU9TXUobyksaD11Yyh1KXx8dSx6PXR8fEJ1KGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoaSkpO2lmKGFvKHosaCkpcmV0dXJuIHhoKG8seil9ZWxzZSBpZihvLmZsYWdzJjM2NzAwMTYpe3ZhciBtZT1iaShvLGkpO2lmKG1lKXJldHVybiBuNShtZSk/dm9pZCAwOkp0KG1lKTtpZihZbihvKSl7dmFyIE1lPXN2KG8pO2lmKE1lJiZlLmlzTnVtZXJpY0xpdGVyYWxOYW1lKGkpJiYraT49MClyZXR1cm4gTWV9cmV0dXJuKHM9bW4oVG8obyksdHx8QnUoZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhpKSkpKT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMudHlwZX19LCEwKX1mdW5jdGlvbiBrQyhyLGkpe2lmKGUuRGVidWcuYXNzZXJ0KGUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKHIpKSwhKHIuZmxhZ3MmMzM1NTQ0MzIpKXJldHVybiBrYihyLGkpfWZ1bmN0aW9uIGtiKHIsaSl7dmFyIHQ9ci5wYXJlbnQsbz1lLmlzUHJvcGVydHlBc3NpZ25tZW50KHIpJiZUYihyKTtpZihvKXJldHVybiBvO3ZhciBzPSRwKHQsaSk7aWYocyl7aWYoVGQocikpe3ZhciB1PUV0KHIpO3JldHVybiBNZChzLHUuZXNjYXBlZE5hbWUsQWEodSkubmFtZVR5cGUpfWlmKHIubmFtZSl7dmFyIGg9Wl8oci5uYW1lKTtyZXR1cm4gU3MocyxmdW5jdGlvbih6KXt2YXIgbWU7cmV0dXJuKG1lPW1uKFRvKHopLGgpKT09PW51bGx8fG1lPT09dm9pZCAwP3ZvaWQgMDptZS50eXBlfSwhMCl9fX1mdW5jdGlvbiBBYihyLGkpe3JldHVybiByJiYoTWQocixcIlwiK2kpfHxTcyhyLGZ1bmN0aW9uKHQpe3JldHVybiB4UygxLHQsVHIsdm9pZCAwLCExKX0sITApKX1mdW5jdGlvbiBvNShyLGkpe3ZhciB0PXIucGFyZW50O3JldHVybiByPT09dC53aGVuVHJ1ZXx8cj09PXQud2hlbkZhbHNlP291KHQsaSk6dm9pZCAwfWZ1bmN0aW9uIHM1KHIsaSl7dmFyIHQ9JHAoci5vcGVuaW5nRWxlbWVudC50YWdOYW1lKSxvPV8wKE9nKHIpKTtpZighISh0JiYhdGEodCkmJm8mJm8hPT1cIlwiKSl7dmFyIHM9ZS5nZXRTZW1hbnRpY0pzeENoaWxkcmVuKHIuY2hpbGRyZW4pLHU9cy5pbmRleE9mKGkpLGg9TWQodCxvKTtyZXR1cm4gaCYmKHMubGVuZ3RoPT09MT9oOlNzKGgsZnVuY3Rpb24oeil7cmV0dXJuIHNwKHopP0pjKHosSWYodSkpOnp9LCEwKSl9fWZ1bmN0aW9uIGM1KHIpe3ZhciBpPXIucGFyZW50O3JldHVybiBlLmlzSnN4QXR0cmlidXRlTGlrZShpKT9vdShyKTplLmlzSnN4RWxlbWVudChpKT9zNShpLHIpOnZvaWQgMH1mdW5jdGlvbiBBQyhyKXtpZihlLmlzSnN4QXR0cmlidXRlKHIpKXt2YXIgaT0kcChyLnBhcmVudCk7cmV0dXJuIWl8fHRhKGkpP3ZvaWQgMDpNZChpLHIubmFtZS5lc2NhcGVkVGV4dCl9ZWxzZSByZXR1cm4gb3Uoci5wYXJlbnQpfWZ1bmN0aW9uIGh5KHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMTA6Y2FzZSA4OmNhc2UgOTpjYXNlIDE0OmNhc2UgMTEwOmNhc2UgOTU6Y2FzZSAxMDQ6Y2FzZSA3OTpjYXNlIDE1MzpyZXR1cm4hMDtjYXNlIDIwNjpjYXNlIDIxMjpyZXR1cm4gaHkoci5leHByZXNzaW9uKTtjYXNlIDI4ODpyZXR1cm4hci5leHByZXNzaW9ufHxoeShyLmV4cHJlc3Npb24pfXJldHVybiExfWZ1bmN0aW9uIHU1KHIsaSl7cmV0dXJuIG44KGkscil8fFVEKGksZS5jb25jYXRlbmF0ZShlLm1hcChlLmZpbHRlcihyLnByb3BlcnRpZXMsZnVuY3Rpb24odCl7cmV0dXJuISF0LnN5bWJvbCYmdC5raW5kPT09Mjk2JiZoeSh0LmluaXRpYWxpemVyKSYmbHYoaSx0LnN5bWJvbC5lc2NhcGVkTmFtZSl9KSxmdW5jdGlvbih0KXtyZXR1cm5bZnVuY3Rpb24oKXtyZXR1cm4gT3kodC5pbml0aWFsaXplcil9LHQuc3ltYm9sLmVzY2FwZWROYW1lXX0pLGUubWFwKGUuZmlsdGVyKHVvKGkpLGZ1bmN0aW9uKHQpe3ZhciBvO3JldHVybiEhKHQuZmxhZ3MmMTY3NzcyMTYpJiYhISghKChvPXI9PW51bGw/dm9pZCAwOnIuc3ltYm9sKT09PW51bGx8fG89PT12b2lkIDApJiZvLm1lbWJlcnMpJiYhci5zeW1ib2wubWVtYmVycy5oYXModC5lc2NhcGVkTmFtZSkmJmx2KGksdC5lc2NhcGVkTmFtZSl9KSxmdW5jdGlvbih0KXtyZXR1cm5bZnVuY3Rpb24oKXtyZXR1cm4gVHJ9LHQuZXNjYXBlZE5hbWVdfSkpLGFvLGkpfWZ1bmN0aW9uIGw1KHIsaSl7cmV0dXJuIFVEKGksZS5jb25jYXRlbmF0ZShlLm1hcChlLmZpbHRlcihyLnByb3BlcnRpZXMsZnVuY3Rpb24odCl7cmV0dXJuISF0LnN5bWJvbCYmdC5raW5kPT09Mjg1JiZsdihpLHQuc3ltYm9sLmVzY2FwZWROYW1lKSYmKCF0LmluaXRpYWxpemVyfHxoeSh0LmluaXRpYWxpemVyKSl9KSxmdW5jdGlvbih0KXtyZXR1cm5bdC5pbml0aWFsaXplcj9mdW5jdGlvbigpe3JldHVybiBPeSh0LmluaXRpYWxpemVyKX06ZnVuY3Rpb24oKXtyZXR1cm4gRHR9LHQuc3ltYm9sLmVzY2FwZWROYW1lXX0pLGUubWFwKGUuZmlsdGVyKHVvKGkpLGZ1bmN0aW9uKHQpe3ZhciBvO3JldHVybiEhKHQuZmxhZ3MmMTY3NzcyMTYpJiYhISghKChvPXI9PW51bGw/dm9pZCAwOnIuc3ltYm9sKT09PW51bGx8fG89PT12b2lkIDApJiZvLm1lbWJlcnMpJiYhci5zeW1ib2wubWVtYmVycy5oYXModC5lc2NhcGVkTmFtZSkmJmx2KGksdC5lc2NhcGVkTmFtZSl9KSxmdW5jdGlvbih0KXtyZXR1cm5bZnVuY3Rpb24oKXtyZXR1cm4gVHJ9LHQuZXNjYXBlZE5hbWVdfSkpLGFvLGkpfWZ1bmN0aW9uICRwKHIsaSl7dmFyIHQ9ZS5pc09iamVjdExpdGVyYWxNZXRob2Qocik/a0MocixpKTpvdShyLGkpLG89YzAodCxyLGkpO2lmKG8mJiEoaSYmaSYyJiZvLmZsYWdzJjg2NTA3NTIpKXt2YXIgcz1TcyhvLCRzLCEwKTtyZXR1cm4gcy5mbGFncyYxMDQ4NTc2JiZlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24ocik/dTUocixzKTpzLmZsYWdzJjEwNDg1NzYmJmUuaXNKc3hBdHRyaWJ1dGVzKHIpP2w1KHIscyk6c319ZnVuY3Rpb24gYzAocixpLHQpe2lmKHImJmZzKHIsNDY1ODI5ODg4KSl7dmFyIG89d2coaSk7aWYobyYmZS5zb21lKG8uaW5mZXJlbmNlcyx0Zykpe2lmKHQmJnQmMSlyZXR1cm4gdTAocixvLm5vbkZpeGluZ01hcHBlcik7aWYoby5yZXR1cm5NYXBwZXIpe3ZhciBzPXUwKHIsby5yZXR1cm5NYXBwZXIpO3JldHVybiBzLmZsYWdzJjEwNDg1NzYmJiRmKHMudHlwZXMsdXQpJiYkZihzLnR5cGVzLFJ0KT9lYyhzLGZ1bmN0aW9uKHUpe3JldHVybiB1IT09dXQmJnUhPT1SdH0pOnN9fX1yZXR1cm4gcn1mdW5jdGlvbiB1MChyLGkpe3JldHVybiByLmZsYWdzJjQ2NTgyOTg4OD91bihyLGkpOnIuZmxhZ3MmMTA0ODU3Nj9QYShlLm1hcChyLnR5cGVzLGZ1bmN0aW9uKHQpe3JldHVybiB1MCh0LGkpfSksMCk6ci5mbGFncyYyMDk3MTUyP0RvKGUubWFwKHIudHlwZXMsZnVuY3Rpb24odCl7cmV0dXJuIHUwKHQsaSl9KSk6cn1mdW5jdGlvbiBvdShyLGkpe2lmKHIuZmxhZ3MmMzM1NTQ0MzIpcmV0dXJuO2lmKHIuY29udGV4dHVhbFR5cGUpcmV0dXJuIHIuY29udGV4dHVhbFR5cGU7dmFyIHQ9ci5wYXJlbnQ7c3dpdGNoKHQua2luZCl7Y2FzZSAyNTQ6Y2FzZSAxNjQ6Y2FzZSAxNjc6Y2FzZSAxNjY6Y2FzZSAyMDM6cmV0dXJuIFk4KHIsaSk7Y2FzZSAyMTQ6Y2FzZSAyNDc6cmV0dXJuICQ4KHIpO2Nhc2UgMjI0OnJldHVybiBlNSh0KTtjYXNlIDIxODpyZXR1cm4gWjgodCxpKTtjYXNlIDIwODpjYXNlIDIwOTpyZXR1cm4gRUModCxyKTtjYXNlIDIxMTpjYXNlIDIyOTpyZXR1cm4gZS5pc0NvbnN0VHlwZVJlZmVyZW5jZSh0LnR5cGUpP2godCk6VmEodC50eXBlKTtjYXNlIDIyMTpyZXR1cm4gaTUocixpKTtjYXNlIDI5NjpjYXNlIDI5NzpyZXR1cm4ga2IodCxpKTtjYXNlIDI5ODpyZXR1cm4gb3UodC5wYXJlbnQsaSk7Y2FzZSAyMDQ6e3ZhciBvPXQscz0kcChvLGkpO3JldHVybiBBYihzLGUuaW5kZXhPZk5vZGUoby5lbGVtZW50cyxyKSl9Y2FzZSAyMjI6cmV0dXJuIG81KHIsaSk7Y2FzZSAyMzM6cmV0dXJuIGUuRGVidWcuYXNzZXJ0KHQucGFyZW50LmtpbmQ9PT0yMjMpLHI1KHQucGFyZW50LHIpO2Nhc2UgMjEyOnt2YXIgdT1lLmlzSW5KU0ZpbGUodCk/ZS5nZXRKU0RvY1R5cGVUYWcodCk6dm9pZCAwO3JldHVybiB1P2UuaXNKU0RvY1R5cGVUYWcodSkmJmUuaXNDb25zdFR5cGVSZWZlcmVuY2UodS50eXBlRXhwcmVzc2lvbi50eXBlKT9oKHQpOlZhKHUudHlwZUV4cHJlc3Npb24udHlwZSk6b3UodCxpKX1jYXNlIDIzMDpyZXR1cm4gb3UodCxpKTtjYXNlIDI3MTpyZXR1cm4gUmwodCk7Y2FzZSAyODg6cmV0dXJuIGM1KHQpO2Nhc2UgMjg1OmNhc2UgMjg3OnJldHVybiBBQyh0KTtjYXNlIDI4MDpjYXNlIDI3OTpyZXR1cm4gZjUodCxpKX1yZXR1cm47ZnVuY3Rpb24gaCh6KXtyZXR1cm4gb3Uoeil9fWZ1bmN0aW9uIHdnKHIpe3ZhciBpPWUuZmluZEFuY2VzdG9yKHIsZnVuY3Rpb24odCl7cmV0dXJuISF0LmluZmVyZW5jZUNvbnRleHR9KTtyZXR1cm4gaSYmaS5pbmZlcmVuY2VDb250ZXh0fWZ1bmN0aW9uIGY1KHIsaSl7cmV0dXJuIGUuaXNKc3hPcGVuaW5nRWxlbWVudChyKSYmci5wYXJlbnQuY29udGV4dHVhbFR5cGUmJmkhPT00P3IucGFyZW50LmNvbnRleHR1YWxUeXBlOkNiKHIsMCl9ZnVuY3Rpb24gbDAocixpKXtyZXR1cm4gbGsoaSkhPT0wP181KHIsaSk6ZzUocixpKX1mdW5jdGlvbiBfNShyLGkpe3ZhciB0PW5TKHIsZ3IpO3Q9TkMoaSxPZyhpKSx0KTt2YXIgbz1acChVLkludHJpbnNpY0F0dHJpYnV0ZXMsaSk7cmV0dXJuIG5uKG8pfHwodD1aZyhvLHQpKSx0fWZ1bmN0aW9uIHA1KHIsaSl7aWYoci5jb21wb3NpdGVTaWduYXR1cmVzKXtmb3IodmFyIHQ9W10sbz0wLHM9ci5jb21wb3NpdGVTaWduYXR1cmVzO288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dLGg9eW8odSk7aWYodGEoaCkpcmV0dXJuIGg7dmFyIHo9ZGEoaCxpKTtpZigheilyZXR1cm47dC5wdXNoKHopfXJldHVybiBEbyh0KX12YXIgbWU9eW8ocik7cmV0dXJuIHRhKG1lKT9tZTpkYShtZSxpKX1mdW5jdGlvbiBkNShyKXtpZihkbShyLnRhZ05hbWUpKXt2YXIgaT1CQyhyKSx0PVMwKHIsaSk7cmV0dXJuIGltKHQpfXZhciBvPU9zKHIudGFnTmFtZSk7aWYoby5mbGFncyYxMjgpe3ZhciBpPVJDKG8scik7aWYoIWkpcmV0dXJuIFBlO3ZhciB0PVMwKHIsaSk7cmV0dXJuIGltKHQpfXJldHVybiBvfWZ1bmN0aW9uIE5DKHIsaSx0KXt2YXIgbz1GNShpKTtpZihvKXt2YXIgcz1nbyhvKSx1PWQ1KHIpO2lmKG8uZmxhZ3MmNTI0Mjg4KXt2YXIgaD1BYShvKS50eXBlUGFyYW1ldGVycztpZihlLmxlbmd0aChoKT49Mil7dmFyIHo9enAoW3UsdF0saCwyLGUuaXNJbkpTRmlsZShyKSk7cmV0dXJuIGFtKG8seil9fWlmKGUubGVuZ3RoKHMudHlwZVBhcmFtZXRlcnMpPj0yKXt2YXIgej16cChbdSx0XSxzLnR5cGVQYXJhbWV0ZXJzLDIsZS5pc0luSlNGaWxlKHIpKTtyZXR1cm4gWWYocyx6KX19cmV0dXJuIHR9ZnVuY3Rpb24gZzUocixpKXt2YXIgdD1PZyhpKSxvPU01KHQpLHM9bz09PXZvaWQgMD9uUyhyLGdyKTpvPT09XCJcIj95byhyKTpwNShyLG8pO2lmKCFzKXJldHVybiEhbyYmISFlLmxlbmd0aChpLmF0dHJpYnV0ZXMucHJvcGVydGllcykmJlhyKGksZS5EaWFnbm9zdGljcy5KU1hfZWxlbWVudF9jbGFzc19kb2VzX25vdF9zdXBwb3J0X2F0dHJpYnV0ZXNfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX2FfMF9wcm9wZXJ0eSxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKG8pKSxncjtpZihzPU5DKGksdCxzKSx0YShzKSlyZXR1cm4gczt2YXIgdT1zLGg9WnAoVS5JbnRyaW5zaWNDbGFzc0F0dHJpYnV0ZXMsaSk7aWYoIW5uKGgpKXt2YXIgej1BZihoLnN5bWJvbCksbWU9eW8ocik7dT1aZyh6P1lmKGgsenAoW21lXSx6LFVsKHopLGUuaXNJbkpTRmlsZShpKSkpOmgsdSl9dmFyIE1lPVpwKFUuSW50cmluc2ljQXR0cmlidXRlcyxpKTtyZXR1cm4gbm4oTWUpfHwodT1aZyhNZSx1KSksdX1mdW5jdGlvbiBtNShyKXtyZXR1cm4gZS5nZXRTdHJpY3RPcHRpb25WYWx1ZSh5ZSxcIm5vSW1wbGljaXRBbnlcIik/ZS5yZWR1Y2VMZWZ0KHIsZnVuY3Rpb24oaSx0KXtyZXR1cm4gaT09PXR8fCFpP2k6YWgoaS50eXBlUGFyYW1ldGVycyx0LnR5cGVQYXJhbWV0ZXJzKT9oNShpLHQpOnZvaWQgMH0pOnZvaWQgMH1mdW5jdGlvbiB2NShyLGksdCl7aWYoIXJ8fCFpKXJldHVybiByfHxpO3ZhciBvPVBhKFtKdChyKSx1bihKdChpKSx0KV0pO3JldHVybiBlZyhyLG8pfWZ1bmN0aW9uIHk1KHIsaSx0KXtmb3IodmFyIG89V2Mocikscz1XYyhpKSx1PW8+PXM/cjppLGg9dT09PXI/aTpyLHo9dT09PXI/bzpzLG1lPVhsKHIpfHxYbChpKSxNZT1tZSYmIVhsKHUpLCRlPW5ldyBBcnJheSh6KyhNZT8xOjApKSx0cj0wO3RyPHo7dHIrKyl7dmFyIGRyPUxkKHUsdHIpO3U9PT1pJiYoZHI9dW4oZHIsdCkpO3ZhciBEcj1MZChoLHRyKXx8Z3I7aD09PWkmJihEcj11bihEcix0KSk7dmFyIFFyPVBhKFtkcixEcl0pLGxpPW1lJiYhTWUmJnRyPT09ei0xLFRpPXRyPj1IbCh1KSYmdHI+PUhsKGgpLENpPXRyPj1vP3ZvaWQgMDp2bShyLHRyKSwkaT10cj49cz92b2lkIDA6dm0oaSx0ciksWmk9Q2k9PT0kaT9DaTpDaT8kaT92b2lkIDA6Q2k6JGkscXQ9b28oMXwoVGkmJiFsaT8xNjc3NzIxNjowKSxaaXx8XCJhcmdcIi5jb25jYXQodHIpKTtxdC50eXBlPWxpP1pzKFFyKTpRciwkZVt0cl09cXR9aWYoTWUpe3ZhciBOdD1vbygxLFwiYXJnc1wiKTtOdC50eXBlPVpzKCR1KGgseikpLGg9PT1pJiYoTnQudHlwZT11bihOdC50eXBlLHQpKSwkZVt6XT1OdH1yZXR1cm4gJGV9ZnVuY3Rpb24gaDUocixpKXt2YXIgdD1yLnR5cGVQYXJhbWV0ZXJzfHxpLnR5cGVQYXJhbWV0ZXJzLG87ci50eXBlUGFyYW1ldGVycyYmaS50eXBlUGFyYW1ldGVycyYmKG89VWMoaS50eXBlUGFyYW1ldGVycyxyLnR5cGVQYXJhbWV0ZXJzKSk7dmFyIHM9ci5kZWNsYXJhdGlvbix1PXk1KHIsaSxvKSxoPXY1KHIudGhpc1BhcmFtZXRlcixpLnRoaXNQYXJhbWV0ZXIsbyksej1NYXRoLm1heChyLm1pbkFyZ3VtZW50Q291bnQsaS5taW5Bcmd1bWVudENvdW50KSxtZT1GdShzLHQsaCx1LHZvaWQgMCx2b2lkIDAseiwoci5mbGFnc3xpLmZsYWdzKSYzOSk7cmV0dXJuIG1lLmNvbXBvc2l0ZUtpbmQ9MjA5NzE1MixtZS5jb21wb3NpdGVTaWduYXR1cmVzPWUuY29uY2F0ZW5hdGUoci5jb21wb3NpdGVLaW5kPT09MjA5NzE1MiYmci5jb21wb3NpdGVTaWduYXR1cmVzfHxbcl0sW2ldKSxvJiYobWUubWFwcGVyPXIuY29tcG9zaXRlS2luZD09PTIwOTcxNTImJnIubWFwcGVyJiZyLmNvbXBvc2l0ZVNpZ25hdHVyZXM/bnAoci5tYXBwZXIsbyk6byksbWV9ZnVuY3Rpb24gTmIocixpKXt2YXIgdD1vdChyLDApLG89ZS5maWx0ZXIodCxmdW5jdGlvbihzKXtyZXR1cm4hRDUocyxpKX0pO3JldHVybiBvLmxlbmd0aD09PTE/b1swXTptNShvKX1mdW5jdGlvbiBENShyLGkpe2Zvcih2YXIgdD0wO3Q8aS5wYXJhbWV0ZXJzLmxlbmd0aDt0Kyspe3ZhciBvPWkucGFyYW1ldGVyc1t0XTtpZihvLmluaXRpYWxpemVyfHxvLnF1ZXN0aW9uVG9rZW58fG8uZG90RG90RG90VG9rZW58fENkKG8pKWJyZWFrfXJldHVybiBpLnBhcmFtZXRlcnMubGVuZ3RoJiZlLnBhcmFtZXRlcklzVGhpc0tleXdvcmQoaS5wYXJhbWV0ZXJzWzBdKSYmdC0tLCFYbChyKSYmV2Mocik8dH1mdW5jdGlvbiBQYihyKXtyZXR1cm4gZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbk9yQXJyb3dGdW5jdGlvbihyKXx8ZS5pc09iamVjdExpdGVyYWxNZXRob2Qocik/ZHYocik6dm9pZCAwfWZ1bmN0aW9uIGR2KHIpe2UuRGVidWcuYXNzZXJ0KHIua2luZCE9PTE2OXx8ZS5pc09iamVjdExpdGVyYWxNZXRob2QocikpO3ZhciBpPXJtKHIpO2lmKGkpcmV0dXJuIGk7dmFyIHQ9JHAociwxKTtpZighIXQpe2lmKCEodC5mbGFncyYxMDQ4NTc2KSlyZXR1cm4gTmIodCxyKTtmb3IodmFyIG8scz10LnR5cGVzLHU9MCxoPXM7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV0sbWU9TmIoeixyKTtpZihtZSlpZighbylvPVttZV07ZWxzZSBpZihfeShvWzBdLG1lLCExLCEwLCEwLGF2KSlvLnB1c2gobWUpO2Vsc2UgcmV0dXJufWlmKG8pcmV0dXJuIG8ubGVuZ3RoPT09MT9vWzBdOlV2KG9bMF0sbyl9fWZ1bmN0aW9uIGI1KHIsaSl7QWU8MiYmZmMocix5ZS5kb3dubGV2ZWxJdGVyYXRpb24/MTUzNjoxMDI0KTt2YXIgdD15bihyLmV4cHJlc3Npb24saSk7cmV0dXJuIE5fKDMzLHQsVHIsci5leHByZXNzaW9uKX1mdW5jdGlvbiBTNShyKXtyZXR1cm4gci5pc1NwcmVhZD9KYyhyLnR5cGUsbnQpOnIudHlwZX1mdW5jdGlvbiBwbShyKXtyZXR1cm4gci5raW5kPT09MjAzJiYhIXIuaW5pdGlhbGl6ZXJ8fHIua2luZD09PTIyMSYmci5vcGVyYXRvclRva2VuLmtpbmQ9PT02M31mdW5jdGlvbiBQQyhyLGksdCl7Zm9yKHZhciBvPXIuZWxlbWVudHMscz1vLmxlbmd0aCx1PVtdLGg9W10sej0kcChyKSxtZT1lLmlzQXNzaWdubWVudFRhcmdldChyKSxNZT1obShyKSwkZT0hMSx0cj0wO3RyPHM7dHIrKyl7dmFyIGRyPW9bdHJdO2lmKGRyLmtpbmQ9PT0yMjUpe0FlPDImJmZjKGRyLHllLmRvd25sZXZlbEl0ZXJhdGlvbj8xNTM2OjEwMjQpO3ZhciBEcj15bihkci5leHByZXNzaW9uLGksdCk7aWYoc3AoRHIpKXUucHVzaChEciksaC5wdXNoKDgpO2Vsc2UgaWYobWUpe3ZhciBRcj1jcyhEcixudCl8fHhTKDY1LERyLFRyLHZvaWQgMCwhMSl8fGdyO3UucHVzaChRciksaC5wdXNoKDQpfWVsc2UgdS5wdXNoKE5fKDMzLERyLFRyLGRyLmV4cHJlc3Npb24pKSxoLnB1c2goNCl9ZWxzZSBpZih5ciYmZHIua2luZD09PTIyNykkZT0hMCx1LnB1c2goWWkpLGgucHVzaCgyKTtlbHNle3ZhciBsaT1BYih6LHUubGVuZ3RoKSxUaT1EbShkcixpLGxpLHQpO2lmKHUucHVzaChrYyhUaSwhMCwkZSkpLGgucHVzaCgkZT8yOjEpLHomJnJnKHosRWcpJiZpJiZpJjImJiEoaSY0KSYmSnUoZHIpKXt2YXIgQ2k9d2cocik7ZS5EZWJ1Zy5hc3NlcnQoQ2kpLEJFKENpLGRyLFRpKX19fXJldHVybiBtZT9XbCh1LGgpOnR8fE1lfHx6JiZyZyh6LEVnKT9JQyhXbCh1LGgsTWUpKTpJQyhacyh1Lmxlbmd0aD9QYShlLnNhbWVNYXAodSxmdW5jdGlvbigkaSxaaSl7cmV0dXJuIGhbWmldJjg/ZXAoJGksbnQpfHxPZTokaX0pLDIpOlllP25hOnZpLE1lKSl9ZnVuY3Rpb24gSUMocil7aWYoIShlLmdldE9iamVjdEZsYWdzKHIpJjQpKXJldHVybiByO3ZhciBpPXIubGl0ZXJhbFR5cGU7cmV0dXJuIGl8fChpPXIubGl0ZXJhbFR5cGU9dXgociksaS5vYmplY3RGbGFnc3w9MTQ3NDU2KSxpfWZ1bmN0aW9uIFQ1KHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMTYyOnJldHVybiB4NShyKTtjYXNlIDc5OnJldHVybiBlLmlzTnVtZXJpY0xpdGVyYWxOYW1lKHIuZXNjYXBlZFRleHQpO2Nhc2UgODpjYXNlIDEwOnJldHVybiBlLmlzTnVtZXJpY0xpdGVyYWxOYW1lKHIudGV4dCk7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24geDUocil7cmV0dXJuIE5zKHRfKHIpLDI5Nil9ZnVuY3Rpb24gdF8ocil7dmFyIGk9dmEoci5leHByZXNzaW9uKTtpZighaS5yZXNvbHZlZFR5cGUpe2lmKChlLmlzVHlwZUxpdGVyYWxOb2RlKHIucGFyZW50LnBhcmVudCl8fGUuaXNDbGFzc0xpa2Uoci5wYXJlbnQucGFyZW50KXx8ZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKHIucGFyZW50LnBhcmVudCkpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihyLmV4cHJlc3Npb24pJiZyLmV4cHJlc3Npb24ub3BlcmF0b3JUb2tlbi5raW5kPT09MTAxJiZyLnBhcmVudC5raW5kIT09MTcyJiZyLnBhcmVudC5raW5kIT09MTczKXJldHVybiBpLnJlc29sdmVkVHlwZT1QZTtpZihpLnJlc29sdmVkVHlwZT15bihyLmV4cHJlc3Npb24pLGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKHIucGFyZW50KSYmIWUuaGFzU3RhdGljTW9kaWZpZXIoci5wYXJlbnQpJiZlLmlzQ2xhc3NFeHByZXNzaW9uKHIucGFyZW50LnBhcmVudCkpe3ZhciB0PWUuZ2V0RW5jbG9zaW5nQmxvY2tTY29wZUNvbnRhaW5lcihyLnBhcmVudC5wYXJlbnQpLG89aGIodCk7byYmKHZhKG8pLmZsYWdzfD02NTUzNix2YShyKS5mbGFnc3w9NTI0Mjg4LHZhKHIucGFyZW50LnBhcmVudCkuZmxhZ3N8PTUyNDI4OCl9KGkucmVzb2x2ZWRUeXBlLmZsYWdzJjk4MzA0fHwhTnMoaS5yZXNvbHZlZFR5cGUsNDAyNjY1OTAwKSYmIWFvKGkucmVzb2x2ZWRUeXBlLFZpKSkmJlhyKHIsZS5EaWFnbm9zdGljcy5BX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfbXVzdF9iZV9vZl90eXBlX3N0cmluZ19udW1iZXJfc3ltYm9sX29yX2FueSl9cmV0dXJuIGkucmVzb2x2ZWRUeXBlfWZ1bmN0aW9uIEU1KHIpe3ZhciBpLHQ9KGk9ci5kZWNsYXJhdGlvbnMpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aVswXTtyZXR1cm4gZS5pc051bWVyaWNMaXRlcmFsTmFtZShyLmVzY2FwZWROYW1lKXx8dCYmZS5pc05hbWVkRGVjbGFyYXRpb24odCkmJlQ1KHQubmFtZSl9ZnVuY3Rpb24gd0Mocil7dmFyIGksdD0oaT1yLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppWzBdO3JldHVybiBlLmlzS25vd25TeW1ib2wocil8fHQmJmUuaXNOYW1lZERlY2xhcmF0aW9uKHQpJiZlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUodC5uYW1lKSYmTnModF8odC5uYW1lKSw0MDk2KX1mdW5jdGlvbiBJYihyLGksdCxvKXtmb3IodmFyIHM9W10sdT1pO3U8dC5sZW5ndGg7dSsrKXt2YXIgaD10W3VdOyhvPT09TGkmJiF3QyhoKXx8bz09PW50JiZFNShoKXx8bz09PUtpJiZ3QyhoKSkmJnMucHVzaChKdCh0W3VdKSl9dmFyIHo9cy5sZW5ndGg/UGEocywyKTpUcjtyZXR1cm4gemwobyx6LGhtKHIpKX1mdW5jdGlvbiB3YihyKXtlLkRlYnVnLmFzc2VydCgoci5mbGFncyYyMDk3MTUyKSE9PTAsXCJTaG91bGQgb25seSBnZXQgQWxpYXMgaGVyZS5cIik7dmFyIGk9QWEocik7aWYoIWkuaW1tZWRpYXRlVGFyZ2V0KXt2YXIgdD1ydShyKTtpZighdClyZXR1cm4gZS5EZWJ1Zy5mYWlsKCk7aS5pbW1lZGlhdGVUYXJnZXQ9RWModCwhMCl9cmV0dXJuIGkuaW1tZWRpYXRlVGFyZ2V0fWZ1bmN0aW9uIEM1KHIsaSl7dmFyIHQ9ZS5pc0Fzc2lnbm1lbnRUYXJnZXQocik7ZUwocix0KTtmb3IodmFyIG89WWU/ZS5jcmVhdGVTeW1ib2xUYWJsZSgpOnZvaWQgMCxzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSx1PVtdLGg9QmEsej0kcChyKSxtZT16JiZ6LnBhdHRlcm4mJih6LnBhdHRlcm4ua2luZD09PTIwMXx8ei5wYXR0ZXJuLmtpbmQ9PT0yMDUpLE1lPWhtKHIpLCRlPU1lPzg6MCx0cj1lLmlzSW5KU0ZpbGUocikmJiFlLmlzSW5Kc29uRmlsZShyKSxkcj1lLmdldEpTRG9jRW51bVRhZyhyKSxEcj0heiYmdHImJiFkcixRcj11cixsaT0hMSxUaT0hMSxDaT0hMSwkaT0hMSxaaT0wLHF0PXIucHJvcGVydGllcztaaTxxdC5sZW5ndGg7WmkrKyl7dmFyIE50PXF0W1ppXTtOdC5uYW1lJiZlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoTnQubmFtZSkmJnRfKE50Lm5hbWUpfWZvcih2YXIgUmE9MCxjYT0wLFNuPXIucHJvcGVydGllcztjYTxTbi5sZW5ndGg7Y2ErKyl7dmFyIGphPVNuW2NhXSxGbj1FdChqYSksd249amEubmFtZSYmamEubmFtZS5raW5kPT09MTYyP3RfKGphLm5hbWUpOnZvaWQgMDtpZihqYS5raW5kPT09Mjk2fHxqYS5raW5kPT09Mjk3fHxlLmlzT2JqZWN0TGl0ZXJhbE1ldGhvZChqYSkpe3ZhciBUbj1qYS5raW5kPT09Mjk2P0trKGphLGkpOmphLmtpbmQ9PT0yOTc/RG0oIXQmJmphLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcj9qYS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXI6amEubmFtZSxpKTpHayhqYSxpKTtpZih0cil7dmFyIEVvPUtfKGphKTtFbz8oemMoVG4sRW8samEpLFRuPUVvKTpkciYmZHIudHlwZUV4cHJlc3Npb24mJnpjKFRuLFZhKGRyLnR5cGVFeHByZXNzaW9uKSxqYSl9UXJ8PWUuZ2V0T2JqZWN0RmxhZ3MoVG4pJjQ1ODc1Mjt2YXIgbHQ9d24mJl9mKHduKT93bjp2b2lkIDAsaXQ9bHQ/b28oNHxGbi5mbGFncyxwZihsdCksJGV8NDA5Nik6b28oNHxGbi5mbGFncyxGbi5lc2NhcGVkTmFtZSwkZSk7aWYobHQmJihpdC5uYW1lVHlwZT1sdCksdCl7dmFyIFl0PWphLmtpbmQ9PT0yOTYmJnBtKGphLmluaXRpYWxpemVyKXx8amEua2luZD09PTI5NyYmamEub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyO1l0JiYoaXQuZmxhZ3N8PTE2Nzc3MjE2KX1lbHNlIGlmKG1lJiYhKGUuZ2V0T2JqZWN0RmxhZ3MoeikmNTEyKSl7dmFyIElhPWJpKHosRm4uZXNjYXBlZE5hbWUpO0lhP2l0LmZsYWdzfD1JYS5mbGFncyYxNjc3NzIxNjoheWUuc3VwcHJlc3NFeGNlc3NQcm9wZXJ0eUVycm9ycyYmIXNzKHosTGkpJiZYcihqYS5uYW1lLGUuRGlhZ25vc3RpY3MuT2JqZWN0X2xpdGVyYWxfbWF5X29ubHlfc3BlY2lmeV9rbm93bl9wcm9wZXJ0aWVzX2FuZF8wX2RvZXNfbm90X2V4aXN0X2luX3R5cGVfMSx0bihGbiksT3QoeikpfWlmKGl0LmRlY2xhcmF0aW9ucz1Gbi5kZWNsYXJhdGlvbnMsaXQucGFyZW50PUZuLnBhcmVudCxGbi52YWx1ZURlY2xhcmF0aW9uJiYoaXQudmFsdWVEZWNsYXJhdGlvbj1Gbi52YWx1ZURlY2xhcmF0aW9uKSxpdC50eXBlPVRuLGl0LnRhcmdldD1GbixGbj1pdCxvPT1udWxsfHxvLnNldChpdC5lc2NhcGVkTmFtZSxpdCkseiYmaSYmaSYyJiYhKGkmNCkmJihqYS5raW5kPT09Mjk2fHxqYS5raW5kPT09MTY5KSYmSnUoamEpKXt2YXIgUXQ9d2cocik7ZS5EZWJ1Zy5hc3NlcnQoUXQpO3ZhciBLYT1qYS5raW5kPT09Mjk2P2phLmluaXRpYWxpemVyOmphO0JFKFF0LEthLFRuKX19ZWxzZSBpZihqYS5raW5kPT09Mjk4KXtBZTwyJiZmYyhqYSwyKSx1Lmxlbmd0aD4wJiYoaD1WcChoLE1uKCksci5zeW1ib2wsUXIsTWUpLHU9W10scz1lLmNyZWF0ZVN5bWJvbFRhYmxlKCksVGk9ITEsQ2k9ITEsJGk9ITEpO3ZhciBUbj1idSh5bihqYS5leHByZXNzaW9uKSk7aWYoRHkoVG4pKXt2YXIgY249VEQoVG4sTWUpO2lmKG8mJkZDKGNuLG8samEpLFJhPXUubGVuZ3RoLG5uKGgpKWNvbnRpbnVlO2g9VnAoaCxjbixyLnN5bWJvbCxRcixNZSl9ZWxzZSBYcihqYSxlLkRpYWdub3N0aWNzLlNwcmVhZF90eXBlc19tYXlfb25seV9iZV9jcmVhdGVkX2Zyb21fb2JqZWN0X3R5cGVzKSxoPVBlO2NvbnRpbnVlfWVsc2UgZS5EZWJ1Zy5hc3NlcnQoamEua2luZD09PTE3Mnx8amEua2luZD09PTE3MykseG0oamEpO3duJiYhKHduLmZsYWdzJjg1NzYpP2FvKHduLFZpKSYmKGFvKHduLG50KT9DaT0hMDphbyh3bixLaSk/JGk9ITA6VGk9ITAsdCYmKGxpPSEwKSk6cy5zZXQoRm4uZXNjYXBlZE5hbWUsRm4pLHUucHVzaChGbil9aWYobWUmJnIucGFyZW50LmtpbmQhPT0yOTgpZm9yKHZhciBVbj0wLG9hPXVvKHopO1VuPG9hLmxlbmd0aDtVbisrKXt2YXIgaXQ9b2FbVW5dOyFzLmdldChpdC5lc2NhcGVkTmFtZSkmJiFiaShoLGl0LmVzY2FwZWROYW1lKSYmKGl0LmZsYWdzJjE2Nzc3MjE2fHxYcihpdC52YWx1ZURlY2xhcmF0aW9ufHxpdC5iaW5kaW5nRWxlbWVudCxlLkRpYWdub3N0aWNzLkluaXRpYWxpemVyX3Byb3ZpZGVzX25vX3ZhbHVlX2Zvcl90aGlzX2JpbmRpbmdfZWxlbWVudF9hbmRfdGhlX2JpbmRpbmdfZWxlbWVudF9oYXNfbm9fZGVmYXVsdF92YWx1ZSkscy5zZXQoaXQuZXNjYXBlZE5hbWUsaXQpLHUucHVzaChpdCkpfWlmKG5uKGgpKXJldHVybiBQZTtpZihoIT09QmEpcmV0dXJuIHUubGVuZ3RoPjAmJihoPVZwKGgsTW4oKSxyLnN5bWJvbCxRcixNZSksdT1bXSxzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSxUaT0hMSxDaT0hMSksU3MoaCxmdW5jdGlvbihMbil7cmV0dXJuIExuPT09QmE/TW4oKTpMbn0pO3JldHVybiBNbigpO2Z1bmN0aW9uIE1uKCl7dmFyIExuPVtdO1RpJiZMbi5wdXNoKEliKHIsUmEsdSxMaSkpLENpJiZMbi5wdXNoKEliKHIsUmEsdSxudCkpLCRpJiZMbi5wdXNoKEliKHIsUmEsdSxLaSkpO3ZhciBjaT1ycyhyLnN5bWJvbCxzLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksTG4pO3JldHVybiBjaS5vYmplY3RGbGFnc3w9UXJ8MTI4fDEzMTA3MixEciYmKGNpLm9iamVjdEZsYWdzfD00MDk2KSxsaSYmKGNpLm9iamVjdEZsYWdzfD01MTIpLHQmJihjaS5wYXR0ZXJuPXIpLGNpfX1mdW5jdGlvbiBEeShyKXt2YXIgaT1PRShTcyhyLEhkKSk7cmV0dXJuISEoaS5mbGFncyYxMjY2MTU1NTN8fGkuZmxhZ3MmMzE0NTcyOCYmZS5ldmVyeShpLnR5cGVzLER5KSl9ZnVuY3Rpb24gazUocil7TGIocil9ZnVuY3Rpb24gQTUocixpKXtyZXR1cm4geG0ociksYnkocil8fE9lfWZ1bmN0aW9uIE41KHIpe0xiKHIub3BlbmluZ0VsZW1lbnQpLGRtKHIuY2xvc2luZ0VsZW1lbnQudGFnTmFtZSk/RmIoci5jbG9zaW5nRWxlbWVudCk6eW4oci5jbG9zaW5nRWxlbWVudC50YWdOYW1lKSxmMChyKX1mdW5jdGlvbiBQNShyLGkpe3JldHVybiB4bShyKSxieShyKXx8T2V9ZnVuY3Rpb24gSTUocil7TGIoci5vcGVuaW5nRnJhZ21lbnQpO3ZhciBpPWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKTtyZXR1cm4gZS5nZXRKU1hUcmFuc2Zvcm1FbmFibGVkKHllKSYmKHllLmpzeEZhY3Rvcnl8fGkucHJhZ21hcy5oYXMoXCJqc3hcIikpJiYheWUuanN4RnJhZ21lbnRGYWN0b3J5JiYhaS5wcmFnbWFzLmhhcyhcImpzeGZyYWdcIikmJlhyKHIseWUuanN4RmFjdG9yeT9lLkRpYWdub3N0aWNzLlRoZV9qc3hGcmFnbWVudEZhY3RvcnlfY29tcGlsZXJfb3B0aW9uX211c3RfYmVfcHJvdmlkZWRfdG9fdXNlX0pTWF9mcmFnbWVudHNfd2l0aF90aGVfanN4RmFjdG9yeV9jb21waWxlcl9vcHRpb246ZS5EaWFnbm9zdGljcy5Bbl9qc3hGcmFnX3ByYWdtYV9pc19yZXF1aXJlZF93aGVuX3VzaW5nX2FuX2pzeF9wcmFnbWFfd2l0aF9KU1hfZnJhZ21lbnRzKSxmMChyKSxieShyKXx8T2V9ZnVuY3Rpb24gT2Iocil7cmV0dXJuIGUuc3RyaW5nQ29udGFpbnMocixcIi1cIil9ZnVuY3Rpb24gZG0ocil7cmV0dXJuIHIua2luZD09PTc5JiZlLmlzSW50cmluc2ljSnN4TmFtZShyLmVzY2FwZWRUZXh0KX1mdW5jdGlvbiBPQyhyLGkpe3JldHVybiByLmluaXRpYWxpemVyP0RtKHIuaW5pdGlhbGl6ZXIsaSk6RHR9ZnVuY3Rpb24gdzUocixpKXtmb3IodmFyIHQ9ci5hdHRyaWJ1dGVzLG89WWU/ZS5jcmVhdGVTeW1ib2xUYWJsZSgpOnZvaWQgMCxzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSx1PXBuLGg9ITEseixtZT0hMSxNZT0yMDQ4LCRlPV8wKE9nKHIpKSx0cj0wLGRyPXQucHJvcGVydGllczt0cjxkci5sZW5ndGg7dHIrKyl7dmFyIERyPWRyW3RyXSxRcj1Eci5zeW1ib2w7aWYoZS5pc0pzeEF0dHJpYnV0ZShEcikpe3ZhciBsaT1PQyhEcixpKTtNZXw9ZS5nZXRPYmplY3RGbGFncyhsaSkmNDU4NzUyO3ZhciBUaT1vbyg0fFFyLmZsYWdzLFFyLmVzY2FwZWROYW1lKTtUaS5kZWNsYXJhdGlvbnM9UXIuZGVjbGFyYXRpb25zLFRpLnBhcmVudD1Rci5wYXJlbnQsUXIudmFsdWVEZWNsYXJhdGlvbiYmKFRpLnZhbHVlRGVjbGFyYXRpb249UXIudmFsdWVEZWNsYXJhdGlvbiksVGkudHlwZT1saSxUaS50YXJnZXQ9UXIscy5zZXQoVGkuZXNjYXBlZE5hbWUsVGkpLG89PW51bGx8fG8uc2V0KFRpLmVzY2FwZWROYW1lLFRpKSxEci5uYW1lLmVzY2FwZWRUZXh0PT09JGUmJihtZT0hMCl9ZWxzZXtlLkRlYnVnLmFzc2VydChEci5raW5kPT09Mjg3KSxzLnNpemU+MCYmKHU9VnAodSxjYSgpLHQuc3ltYm9sLE1lLCExKSxzPWUuY3JlYXRlU3ltYm9sVGFibGUoKSk7dmFyIGxpPWJ1KE9zKERyLmV4cHJlc3Npb24saSkpO3RhKGxpKSYmKGg9ITApLER5KGxpKT8odT1WcCh1LGxpLHQuc3ltYm9sLE1lLCExKSxvJiZGQyhsaSxvLERyKSk6KFhyKERyLmV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5TcHJlYWRfdHlwZXNfbWF5X29ubHlfYmVfY3JlYXRlZF9mcm9tX29iamVjdF90eXBlcyksej16P0RvKFt6LGxpXSk6bGkpfX1ofHxzLnNpemU+MCYmKHU9VnAodSxjYSgpLHQuc3ltYm9sLE1lLCExKSk7dmFyIENpPXIucGFyZW50LmtpbmQ9PT0yNzg/ci5wYXJlbnQ6dm9pZCAwO2lmKENpJiZDaS5vcGVuaW5nRWxlbWVudD09PXImJkNpLmNoaWxkcmVuLmxlbmd0aD4wKXt2YXIgJGk9ZjAoQ2ksaSk7aWYoIWgmJiRlJiYkZSE9PVwiXCIpe21lJiZYcih0LGUuRGlhZ25vc3RpY3MuXzBfYXJlX3NwZWNpZmllZF90d2ljZV9UaGVfYXR0cmlidXRlX25hbWVkXzBfd2lsbF9iZV9vdmVyd3JpdHRlbixlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKCRlKSk7dmFyIFppPSRwKHIuYXR0cmlidXRlcykscXQ9WmkmJk1kKFppLCRlKSxOdD1vbyg0LCRlKTtOdC50eXBlPSRpLmxlbmd0aD09PTE/JGlbMF06cXQmJnJnKHF0LEVnKT9XbCgkaSk6WnMoUGEoJGkpKSxOdC52YWx1ZURlY2xhcmF0aW9uPWUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eVNpZ25hdHVyZSh2b2lkIDAsZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcygkZSksdm9pZCAwLHZvaWQgMCksZS5zZXRQYXJlbnQoTnQudmFsdWVEZWNsYXJhdGlvbix0KSxOdC52YWx1ZURlY2xhcmF0aW9uLnN5bWJvbD1OdDt2YXIgUmE9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpO1JhLnNldCgkZSxOdCksdT1WcCh1LHJzKHQuc3ltYm9sLFJhLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KSx0LnN5bWJvbCxNZSwhMSl9fWlmKGgpcmV0dXJuIE9lO2lmKHomJnUhPT1wbilyZXR1cm4gRG8oW3osdV0pO3JldHVybiB6fHwodT09PXBuP2NhKCk6dSk7ZnVuY3Rpb24gY2EoKXtNZXw9dXI7dmFyIFNuPXJzKHQuc3ltYm9sLHMsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpO3JldHVybiBTbi5vYmplY3RGbGFnc3w9TWV8MTI4fDEzMTA3MixTbn19ZnVuY3Rpb24gZjAocixpKXtmb3IodmFyIHQ9W10sbz0wLHM9ci5jaGlsZHJlbjtvPHMubGVuZ3RoO28rKyl7dmFyIHU9c1tvXTtpZih1LmtpbmQ9PT0xMSl1LmNvbnRhaW5zT25seVRyaXZpYVdoaXRlU3BhY2VzfHx0LnB1c2goTGkpO2Vsc2V7aWYodS5raW5kPT09Mjg4JiYhdS5leHByZXNzaW9uKWNvbnRpbnVlO3QucHVzaChEbSh1LGkpKX19cmV0dXJuIHR9ZnVuY3Rpb24gRkMocixpLHQpe2Zvcih2YXIgbz0wLHM9dW8ocik7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107aWYoISh1LmZsYWdzJjE2Nzc3MjE2KSl7dmFyIGg9aS5nZXQodS5lc2NhcGVkTmFtZSk7aWYoaCl7dmFyIHo9WHIoaC52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuXzBfaXNfc3BlY2lmaWVkX21vcmVfdGhhbl9vbmNlX3NvX3RoaXNfdXNhZ2Vfd2lsbF9iZV9vdmVyd3JpdHRlbixlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGguZXNjYXBlZE5hbWUpKTtlLmFkZFJlbGF0ZWRJbmZvKHosZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSh0LGUuRGlhZ25vc3RpY3MuVGhpc19zcHJlYWRfYWx3YXlzX292ZXJ3cml0ZXNfdGhpc19wcm9wZXJ0eSkpfX19fWZ1bmN0aW9uIE81KHIsaSl7cmV0dXJuIHc1KHIucGFyZW50LGkpfWZ1bmN0aW9uIFpwKHIsaSl7dmFyIHQ9T2coaSksbz10JiZkYyh0KSxzPW8mJnFzKG8sciw3ODg5NjgpO3JldHVybiBzP2dvKHMpOlBlfWZ1bmN0aW9uIEZiKHIpe3ZhciBpPXZhKHIpO2lmKCFpLnJlc29sdmVkU3ltYm9sKXt2YXIgdD1acChVLkludHJpbnNpY0VsZW1lbnRzLHIpO2lmKG5uKHQpKXJldHVybiBuJiZYcihyLGUuRGlhZ25vc3RpY3MuSlNYX2VsZW1lbnRfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9ub19pbnRlcmZhY2VfSlNYXzBfZXhpc3RzLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoVS5JbnRyaW5zaWNFbGVtZW50cykpLGkucmVzb2x2ZWRTeW1ib2w9eGU7aWYoIWUuaXNJZGVudGlmaWVyKHIudGFnTmFtZSkpcmV0dXJuIGUuRGVidWcuZmFpbCgpO3ZhciBvPWJpKHQsci50YWdOYW1lLmVzY2FwZWRUZXh0KTtpZihvKXJldHVybiBpLmpzeEZsYWdzfD0xLGkucmVzb2x2ZWRTeW1ib2w9bzt2YXIgcz1jcyh0LExpKTtyZXR1cm4gcz8oaS5qc3hGbGFnc3w9MixpLnJlc29sdmVkU3ltYm9sPXQuc3ltYm9sKTooWHIocixlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xLGUuaWRUZXh0KHIudGFnTmFtZSksXCJKU1guXCIrVS5JbnRyaW5zaWNFbGVtZW50cyksaS5yZXNvbHZlZFN5bWJvbD14ZSl9cmV0dXJuIGkucmVzb2x2ZWRTeW1ib2x9ZnVuY3Rpb24gTWIocil7dmFyIGk9ciYmZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLHQ9aSYmdmEoaSk7aWYoISh0JiZ0LmpzeEltcGxpY2l0SW1wb3J0Q29udGFpbmVyPT09ITEpKXtpZih0JiZ0LmpzeEltcGxpY2l0SW1wb3J0Q29udGFpbmVyKXJldHVybiB0LmpzeEltcGxpY2l0SW1wb3J0Q29udGFpbmVyO3ZhciBvPWUuZ2V0SlNYUnVudGltZUltcG9ydChlLmdldEpTWEltcGxpY2l0SW1wb3J0QmFzZSh5ZSxpKSx5ZSk7aWYoISFvKXt2YXIgcz1lLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZCh5ZSk9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLkNsYXNzaWMsdT1zP2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbW9kdWxlXzBfRGlkX3lvdV9tZWFuX3RvX3NldF90aGVfbW9kdWxlUmVzb2x1dGlvbl9vcHRpb25fdG9fbm9kZV9vcl90b19hZGRfYWxpYXNlc190b190aGVfcGF0aHNfb3B0aW9uOmUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbW9kdWxlXzBfb3JfaXRzX2NvcnJlc3BvbmRpbmdfdHlwZV9kZWNsYXJhdGlvbnMsaD1JbChyLG8sdSxyKSx6PWgmJmghPT14ZT9zbyhvcyhoKSk6dm9pZCAwO3JldHVybiB0JiYodC5qc3hJbXBsaWNpdEltcG9ydENvbnRhaW5lcj16fHwhMSksen19fWZ1bmN0aW9uIE9nKHIpe3ZhciBpPXImJnZhKHIpO2lmKGkmJmkuanN4TmFtZXNwYWNlKXJldHVybiBpLmpzeE5hbWVzcGFjZTtpZighaXx8aS5qc3hOYW1lc3BhY2UhPT0hMSl7dmFyIHQ9TWIocik7aWYoIXR8fHQ9PT14ZSl7dmFyIG89cG8ocik7dD1lcyhyLG8sMTkyMCx2b2lkIDAsbywhMSl9aWYodCl7dmFyIHM9b3MocXMoZGMob3ModCkpLFUuSlNYLDE5MjApKTtpZihzJiZzIT09eGUpcmV0dXJuIGkmJihpLmpzeE5hbWVzcGFjZT1zKSxzfWkmJihpLmpzeE5hbWVzcGFjZT0hMSl9dmFyIHU9b3MoWW0oVS5KU1gsMTkyMCx2b2lkIDApKTtpZih1IT09eGUpcmV0dXJuIHV9ZnVuY3Rpb24gTUMocixpKXt2YXIgdD1pJiZxcyhpLmV4cG9ydHMsciw3ODg5NjgpLG89dCYmZ28odCkscz1vJiZ1byhvKTtpZihzKXtpZihzLmxlbmd0aD09PTApcmV0dXJuXCJcIjtpZihzLmxlbmd0aD09PTEpcmV0dXJuIHNbMF0uZXNjYXBlZE5hbWU7cy5sZW5ndGg+MSYmdC5kZWNsYXJhdGlvbnMmJlhyKHQuZGVjbGFyYXRpb25zWzBdLGUuRGlhZ25vc3RpY3MuVGhlX2dsb2JhbF90eXBlX0pTWF8wX21heV9ub3RfaGF2ZV9tb3JlX3RoYW5fb25lX3Byb3BlcnR5LGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMocikpfX1mdW5jdGlvbiBGNShyKXtyZXR1cm4gciYmcXMoci5leHBvcnRzLFUuTGlicmFyeU1hbmFnZWRBdHRyaWJ1dGVzLDc4ODk2OCl9ZnVuY3Rpb24gTTUocil7cmV0dXJuIE1DKFUuRWxlbWVudEF0dHJpYnV0ZXNQcm9wZXJ0eU5hbWVDb250YWluZXIscil9ZnVuY3Rpb24gXzAocil7cmV0dXJuIE1DKFUuRWxlbWVudENoaWxkcmVuQXR0cmlidXRlTmFtZUNvbnRhaW5lcixyKX1mdW5jdGlvbiBMQyhyLGkpe2lmKHIuZmxhZ3MmNClyZXR1cm5bRW5dO2lmKHIuZmxhZ3MmMTI4KXt2YXIgdD1SQyhyLGkpO2lmKHQpe3ZhciBvPVMwKGksdCk7cmV0dXJuW29dfWVsc2UgcmV0dXJuIFhyKGksZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMSxyLnZhbHVlLFwiSlNYLlwiK1UuSW50cmluc2ljRWxlbWVudHMpLGUuZW1wdHlBcnJheX12YXIgcz0kcyhyKSx1PW90KHMsMSk7cmV0dXJuIHUubGVuZ3RoPT09MCYmKHU9b3QocywwKSksdS5sZW5ndGg9PT0wJiZzLmZsYWdzJjEwNDg1NzYmJih1PXp2KGUubWFwKHMudHlwZXMsZnVuY3Rpb24oaCl7cmV0dXJuIExDKGgsaSl9KSkpLHV9ZnVuY3Rpb24gUkMocixpKXt2YXIgdD1acChVLkludHJpbnNpY0VsZW1lbnRzLGkpO2lmKCFubih0KSl7dmFyIG89ci52YWx1ZSxzPWJpKHQsZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMobykpO2lmKHMpcmV0dXJuIEp0KHMpO3ZhciB1PWNzKHQsTGkpO3JldHVybiB1fHx2b2lkIDB9cmV0dXJuIE9lfWZ1bmN0aW9uIEw1KHIsaSx0KXtpZihyPT09MSl7dmFyIG89akModCk7byYmaGwoaSxvLGR0LHQudGFnTmFtZSxlLkRpYWdub3N0aWNzLkl0c19yZXR1cm5fdHlwZV8wX2lzX25vdF9hX3ZhbGlkX0pTWF9lbGVtZW50LGgpfWVsc2UgaWYocj09PTApe3ZhciBzPUpDKHQpO3MmJmhsKGkscyxkdCx0LnRhZ05hbWUsZS5EaWFnbm9zdGljcy5JdHNfaW5zdGFuY2VfdHlwZV8wX2lzX25vdF9hX3ZhbGlkX0pTWF9lbGVtZW50LGgpfWVsc2V7dmFyIG89akModCkscz1KQyh0KTtpZighb3x8IXMpcmV0dXJuO3ZhciB1PVBhKFtvLHNdKTtobChpLHUsZHQsdC50YWdOYW1lLGUuRGlhZ25vc3RpY3MuSXRzX2VsZW1lbnRfdHlwZV8wX2lzX25vdF9hX3ZhbGlkX0pTWF9lbGVtZW50LGgpfWZ1bmN0aW9uIGgoKXt2YXIgej1lLmdldFRleHRPZk5vZGUodC50YWdOYW1lKTtyZXR1cm4gZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5fMF9jYW5ub3RfYmVfdXNlZF9hc19hX0pTWF9jb21wb25lbnQseil9fWZ1bmN0aW9uIEJDKHIpe2UuRGVidWcuYXNzZXJ0KGRtKHIudGFnTmFtZSkpO3ZhciBpPXZhKHIpO2lmKCFpLnJlc29sdmVkSnN4RWxlbWVudEF0dHJpYnV0ZXNUeXBlKXt2YXIgdD1GYihyKTtyZXR1cm4gaS5qc3hGbGFncyYxP2kucmVzb2x2ZWRKc3hFbGVtZW50QXR0cmlidXRlc1R5cGU9SnQodCl8fFBlOmkuanN4RmxhZ3MmMj9pLnJlc29sdmVkSnN4RWxlbWVudEF0dHJpYnV0ZXNUeXBlPWNzKFpwKFUuSW50cmluc2ljRWxlbWVudHMsciksTGkpfHxQZTppLnJlc29sdmVkSnN4RWxlbWVudEF0dHJpYnV0ZXNUeXBlPVBlfXJldHVybiBpLnJlc29sdmVkSnN4RWxlbWVudEF0dHJpYnV0ZXNUeXBlfWZ1bmN0aW9uIEpDKHIpe3ZhciBpPVpwKFUuRWxlbWVudENsYXNzLHIpO2lmKCFubihpKSlyZXR1cm4gaX1mdW5jdGlvbiBieShyKXtyZXR1cm4gWnAoVS5FbGVtZW50LHIpfWZ1bmN0aW9uIGpDKHIpe3ZhciBpPWJ5KHIpO2lmKGkpcmV0dXJuIFBhKFtpLFdpXSl9ZnVuY3Rpb24gUjUocil7dmFyIGk9WnAoVS5JbnRyaW5zaWNFbGVtZW50cyxyKTtyZXR1cm4gaT91byhpKTplLmVtcHR5QXJyYXl9ZnVuY3Rpb24gQjUocil7KHllLmpzeHx8MCk9PT0wJiZYcihyLGUuRGlhZ25vc3RpY3MuQ2Fubm90X3VzZV9KU1hfdW5sZXNzX3RoZV9qc3hfZmxhZ19pc19wcm92aWRlZCksYnkocik9PT12b2lkIDAmJm4mJlhyKHIsZS5EaWFnbm9zdGljcy5KU1hfZWxlbWVudF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX3RoZV9nbG9iYWxfdHlwZV9KU1hfRWxlbWVudF9kb2VzX25vdF9leGlzdCl9ZnVuY3Rpb24gTGIocil7dmFyIGk9ZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChyKTtpZihpJiZyTChyKSxCNShyKSwhTWIocikpe3ZhciB0PXJuJiZ5ZS5qc3g9PT0yP2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wOnZvaWQgMCxvPXBvKHIpLHM9aT9yLnRhZ05hbWU6cix1PXZvaWQgMDtpZihlLmlzSnN4T3BlbmluZ0ZyYWdtZW50KHIpJiZvPT09XCJudWxsXCJ8fCh1PWVzKHMsbywxMTE1NTEsdCxvLCEwKSksdSYmKHUuaXNSZWZlcmVuY2VkPTY3MTA4ODYzLHUuZmxhZ3MmMjA5NzE1MiYmIXZ1KHUpJiZBcyh1KSksZS5pc0pzeE9wZW5pbmdGcmFnbWVudChyKSl7dmFyIGg9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLHo9R24oaCk7eiYmZXMocyx6LDExMTU1MSx0LHosITApfX1pZihpKXt2YXIgbWU9cixNZT1NZyhtZSk7eDAoTWUsciksTDUobGsobWUpLHlvKE1lKSxtZSl9fWZ1bmN0aW9uIFJiKHIsaSx0KXtpZihyLmZsYWdzJjUyNDI4OCl7aWYoaF8ocixpKXx8WG8ocixpKXx8cGcoaSkmJnNzKHIsTGkpfHx0JiZPYihpKSlyZXR1cm4hMH1lbHNlIGlmKHIuZmxhZ3MmMzE0NTcyOCYmU3kocikpZm9yKHZhciBvPTAscz1yLnR5cGVzO288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dO2lmKFJiKHUsaSx0KSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBTeShyKXtyZXR1cm4hIShyLmZsYWdzJjUyNDI4OCYmIShlLmdldE9iamVjdEZsYWdzKHIpJjUxMil8fHIuZmxhZ3MmNjcxMDg4NjR8fHIuZmxhZ3MmMTA0ODU3NiYmZS5zb21lKHIudHlwZXMsU3kpfHxyLmZsYWdzJjIwOTcxNTImJmUuZXZlcnkoci50eXBlcyxTeSkpfWZ1bmN0aW9uIEo1KHIsaSl7aWYodEwociksci5leHByZXNzaW9uKXt2YXIgdD15bihyLmV4cHJlc3Npb24saSk7cmV0dXJuIHIuZG90RG90RG90VG9rZW4mJnQhPT1PZSYmIVR1KHQpJiZYcihyLGUuRGlhZ25vc3RpY3MuSlNYX3NwcmVhZF9jaGlsZF9tdXN0X2JlX2FuX2FycmF5X3R5cGUpLHR9ZWxzZSByZXR1cm4gUGV9ZnVuY3Rpb24gcDAocil7cmV0dXJuIHIudmFsdWVEZWNsYXJhdGlvbj9lLmdldENvbWJpbmVkTm9kZUZsYWdzKHIudmFsdWVEZWNsYXJhdGlvbik6MH1mdW5jdGlvbiBCYihyKXtpZihyLmZsYWdzJjgxOTJ8fGUuZ2V0Q2hlY2tGbGFncyhyKSY0KXJldHVybiEwO2lmKGUuaXNJbkpTRmlsZShyLnZhbHVlRGVjbGFyYXRpb24pKXt2YXIgaT1yLnZhbHVlRGVjbGFyYXRpb24ucGFyZW50O3JldHVybiBpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihpKSYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKGkpPT09M319ZnVuY3Rpb24gSmIocixpLHQsbyxzLHUpe3U9PT12b2lkIDAmJih1PSEwKTt2YXIgaD11P3Iua2luZD09PTE2MT9yLnJpZ2h0OnIua2luZD09PTIwMD9yOnIua2luZD09PTIwMyYmci5wcm9wZXJ0eU5hbWU/ci5wcm9wZXJ0eU5hbWU6ci5uYW1lOnZvaWQgMDtyZXR1cm4gVUMocixpLHQsbyxzLGgpfWZ1bmN0aW9uIFVDKHIsaSx0LG8scyx1KXt2YXIgaD1lLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2wocyx0KTtpZihpKXtpZihBZTwyJiZ6QyhzKSlyZXR1cm4gdSYmWHIodSxlLkRpYWdub3N0aWNzLk9ubHlfcHVibGljX2FuZF9wcm90ZWN0ZWRfbWV0aG9kc19vZl90aGVfYmFzZV9jbGFzc19hcmVfYWNjZXNzaWJsZV92aWFfdGhlX3N1cGVyX2tleXdvcmQpLCExO2lmKGgmMTI4KXJldHVybiB1JiZYcih1LGUuRGlhZ25vc3RpY3MuQWJzdHJhY3RfbWV0aG9kXzBfaW5fY2xhc3NfMV9jYW5ub3RfYmVfYWNjZXNzZWRfdmlhX3N1cGVyX2V4cHJlc3Npb24sdG4ocyksT3QoWmQocykpKSwhMX1pZihoJjEyOCYmekMocykmJihlLmlzVGhpc1Byb3BlcnR5KHIpfHxlLmlzVGhpc0luaXRpYWxpemVkT2JqZWN0QmluZGluZ0V4cHJlc3Npb24ocil8fGUuaXNPYmplY3RCaW5kaW5nUGF0dGVybihyLnBhcmVudCkmJmUuaXNUaGlzSW5pdGlhbGl6ZWREZWNsYXJhdGlvbihyLnBhcmVudC5wYXJlbnQpKSl7dmFyIHo9ZS5nZXRDbGFzc0xpa2VEZWNsYXJhdGlvbk9mU3ltYm9sKFlzKHMpKTtpZih6JiZpOShyKSlyZXR1cm4gdSYmWHIodSxlLkRpYWdub3N0aWNzLkFic3RyYWN0X3Byb3BlcnR5XzBfaW5fY2xhc3NfMV9jYW5ub3RfYmVfYWNjZXNzZWRfaW5fdGhlX2NvbnN0cnVjdG9yLHRuKHMpLGUuZ2V0VGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbCh6Lm5hbWUpKSwhMX1pZighKGgmMjQpKXJldHVybiEwO2lmKGgmOCl7dmFyIHo9ZS5nZXRDbGFzc0xpa2VEZWNsYXJhdGlvbk9mU3ltYm9sKFlzKHMpKTtyZXR1cm4gTVMocix6KT8hMDoodSYmWHIodSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaXNfcHJpdmF0ZV9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl9jbGFzc18xLHRuKHMpLE90KFpkKHMpKSksITEpfWlmKGkpcmV0dXJuITA7dmFyIG1lPVk2KHIsZnVuY3Rpb24oTWUpe3ZhciAkZT1nbyhFdChNZSkpO3JldHVybiBFRSgkZSxzLHQpfSk7cmV0dXJuIW1lJiYobWU9ajUociksbWU9bWUmJkVFKG1lLHMsdCksaCYzMnx8IW1lKT8odSYmWHIodSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaXNfcHJvdGVjdGVkX2FuZF9vbmx5X2FjY2Vzc2libGVfd2l0aGluX2NsYXNzXzFfYW5kX2l0c19zdWJjbGFzc2VzLHRuKHMpLE90KFpkKHMpfHxvKSksITEpOmgmMzI/ITA6KG8uZmxhZ3MmMjYyMTQ0JiYobz1vLmlzVGhpc1R5cGU/VGMobyk6dWMobykpLCFvfHwhbGYobyxtZSk/KHUmJlhyKHUsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX3Byb3RlY3RlZF9hbmRfb25seV9hY2Nlc3NpYmxlX3Rocm91Z2hfYW5faW5zdGFuY2Vfb2ZfY2xhc3NfMV9UaGlzX2lzX2FuX2luc3RhbmNlX29mX2NsYXNzXzIsdG4ocyksT3QobWUpLE90KG8pKSwhMSk6ITApfWZ1bmN0aW9uIGo1KHIpe3ZhciBpPVU1KHIpLHQ9KGk9PW51bGw/dm9pZCAwOmkudHlwZSkmJlZhKGkudHlwZSk7aWYodCYmdC5mbGFncyYyNjIxNDQmJih0PVRjKHQpKSx0JiZlLmdldE9iamVjdEZsYWdzKHQpJjcpcmV0dXJuIGJkKHQpfWZ1bmN0aW9uIFU1KHIpe3ZhciBpPWUuZ2V0VGhpc0NvbnRhaW5lcihyLCExKTtyZXR1cm4gaSYmZS5pc0Z1bmN0aW9uTGlrZShpKT9lLmdldFRoaXNQYXJhbWV0ZXIoaSk6dm9pZCAwfWZ1bmN0aW9uIHpDKHIpe3JldHVybiEhZnkocixmdW5jdGlvbihpKXtyZXR1cm4hKGkuZmxhZ3MmODE5Mil9KX1mdW5jdGlvbiBnbShyKXtyZXR1cm4gYmwoeW4ocikscil9ZnVuY3Rpb24gZDAocil7cmV0dXJuISEoKFllP2p1KHIpOnIuZmxhZ3MpJjk4MzA0KX1mdW5jdGlvbiBqYihyKXtyZXR1cm4gZDAocik/Q18ocik6cn1mdW5jdGlvbiB6NShyLGkpe1hyKHIsaSYzMjc2OD9pJjY1NTM2P2UuRGlhZ25vc3RpY3MuT2JqZWN0X2lzX3Bvc3NpYmx5X251bGxfb3JfdW5kZWZpbmVkOmUuRGlhZ25vc3RpY3MuT2JqZWN0X2lzX3Bvc3NpYmx5X3VuZGVmaW5lZDplLkRpYWdub3N0aWNzLk9iamVjdF9pc19wb3NzaWJseV9udWxsKX1mdW5jdGlvbiBXNShyLGkpe1hyKHIsaSYzMjc2OD9pJjY1NTM2P2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ludm9rZV9hbl9vYmplY3Rfd2hpY2hfaXNfcG9zc2libHlfbnVsbF9vcl91bmRlZmluZWQ6ZS5EaWFnbm9zdGljcy5DYW5ub3RfaW52b2tlX2FuX29iamVjdF93aGljaF9pc19wb3NzaWJseV91bmRlZmluZWQ6ZS5EaWFnbm9zdGljcy5DYW5ub3RfaW52b2tlX2FuX29iamVjdF93aGljaF9pc19wb3NzaWJseV9udWxsKX1mdW5jdGlvbiBXQyhyLGksdCl7aWYoWWUmJnIuZmxhZ3MmMilyZXR1cm4gWHIoaSxlLkRpYWdub3N0aWNzLk9iamVjdF9pc19vZl90eXBlX3Vua25vd24pLFBlO3ZhciBvPShZZT9qdShyKTpyLmZsYWdzKSY5ODMwNDtpZihvKXt0KGksbyk7dmFyIHM9Q18ocik7cmV0dXJuIHMuZmxhZ3MmMjI5Mzc2P1BlOnN9cmV0dXJuIHJ9ZnVuY3Rpb24gYmwocixpKXtyZXR1cm4gV0MocixpLHo1KX1mdW5jdGlvbiBxQyhyLGkpe3ZhciB0PWJsKHIsaSk7cmV0dXJuIHQuZmxhZ3MmMTYzODQmJlhyKGksZS5EaWFnbm9zdGljcy5PYmplY3RfaXNfcG9zc2libHlfdW5kZWZpbmVkKSx0fWZ1bmN0aW9uIFZDKHIsaSl7cmV0dXJuIHIuZmxhZ3MmMzI/cTUocixpKTp6YihyLHIuZXhwcmVzc2lvbixnbShyLmV4cHJlc3Npb24pLHIubmFtZSxpKX1mdW5jdGlvbiBxNShyLGkpe3ZhciB0PXluKHIuZXhwcmVzc2lvbiksbz1jdih0LHIuZXhwcmVzc2lvbik7cmV0dXJuIHpoKHpiKHIsci5leHByZXNzaW9uLGJsKG8sci5leHByZXNzaW9uKSxyLm5hbWUsaSkscixvIT09dCl9ZnVuY3Rpb24gS0MocixpKXt2YXIgdD1lLmlzUGFydE9mVHlwZVF1ZXJ5KHIpJiZlLmlzVGhpc0lkZW50aWZpZXIoci5sZWZ0KT9ibCh5eShyLmxlZnQpLHIubGVmdCk6Z20oci5sZWZ0KTtyZXR1cm4gemIocixyLmxlZnQsdCxyLnJpZ2h0LGkpfWZ1bmN0aW9uIEdDKHIpe2Zvcig7ci5wYXJlbnQua2luZD09PTIxMjspcj1yLnBhcmVudDtyZXR1cm4gZS5pc0NhbGxPck5ld0V4cHJlc3Npb24oci5wYXJlbnQpJiZyLnBhcmVudC5leHByZXNzaW9uPT09cn1mdW5jdGlvbiBnMChyLGkpe2Zvcih2YXIgdD1lLmdldENvbnRhaW5pbmdDbGFzcyhpKTt0O3Q9ZS5nZXRDb250YWluaW5nQ2xhc3ModCkpe3ZhciBvPXQuc3ltYm9sLHM9ZS5nZXRTeW1ib2xOYW1lRm9yUHJpdmF0ZUlkZW50aWZpZXIobyxyKSx1PW8ubWVtYmVycyYmby5tZW1iZXJzLmdldChzKXx8by5leHBvcnRzJiZvLmV4cG9ydHMuZ2V0KHMpO2lmKHUpcmV0dXJuIHV9fWZ1bmN0aW9uIFY1KHIpe2lmKCFlLmdldENvbnRhaW5pbmdDbGFzcyhyKSlyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX25vdF9hbGxvd2VkX291dHNpZGVfY2xhc3NfYm9kaWVzKTtpZighZS5pc0ZvckluU3RhdGVtZW50KHIucGFyZW50KSl7aWYoIWUuaXNFeHByZXNzaW9uTm9kZShyKSlyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX29ubHlfYWxsb3dlZF9pbl9jbGFzc19ib2RpZXNfYW5kX21heV9vbmx5X2JlX3VzZWRfYXNfcGFydF9vZl9hX2NsYXNzX21lbWJlcl9kZWNsYXJhdGlvbl9wcm9wZXJ0eV9hY2Nlc3Nfb3Jfb25fdGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2luX2V4cHJlc3Npb24pO3ZhciBpPWUuaXNCaW5hcnlFeHByZXNzaW9uKHIucGFyZW50KSYmci5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kPT09MTAxO2lmKCFtMChyKSYmIWkpcmV0dXJuIFR0KHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzAsZS5pZFRleHQocikpfXJldHVybiExfWZ1bmN0aW9uIEs1KHIpe1Y1KHIpO3ZhciBpPW0wKHIpO3JldHVybiBpJiZ4eShpLHZvaWQgMCwhMSksT2V9ZnVuY3Rpb24gbTAocil7aWYoISFlLmlzRXhwcmVzc2lvbk5vZGUocikpe3ZhciBpPXZhKHIpO3JldHVybiBpLnJlc29sdmVkU3ltYm9sPT09dm9pZCAwJiYoaS5yZXNvbHZlZFN5bWJvbD1nMChyLmVzY2FwZWRUZXh0LHIpKSxpLnJlc29sdmVkU3ltYm9sfX1mdW5jdGlvbiBVYihyLGkpe3JldHVybiBiaShyLGkuZXNjYXBlZE5hbWUpfWZ1bmN0aW9uIEc1KHIsaSx0KXt2YXIgbyxzPXVvKHIpO3MmJmUuZm9yRWFjaChzLGZ1bmN0aW9uKHRyKXt2YXIgZHI9dHIudmFsdWVEZWNsYXJhdGlvbjtpZihkciYmZS5pc05hbWVkRGVjbGFyYXRpb24oZHIpJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIoZHIubmFtZSkmJmRyLm5hbWUuZXNjYXBlZFRleHQ9PT1pLmVzY2FwZWRUZXh0KXJldHVybiBvPXRyLCEwfSk7dmFyIHU9a3UoaSk7aWYobyl7dmFyIGg9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoby52YWx1ZURlY2xhcmF0aW9uKSx6PWUuRGVidWcuY2hlY2tEZWZpbmVkKGUuZ2V0Q29udGFpbmluZ0NsYXNzKGgpKTtpZih0IT1udWxsJiZ0LnZhbHVlRGVjbGFyYXRpb24pe3ZhciBtZT10LnZhbHVlRGVjbGFyYXRpb24sTWU9ZS5nZXRDb250YWluaW5nQ2xhc3MobWUpO2lmKGUuRGVidWcuYXNzZXJ0KCEhTWUpLGUuZmluZEFuY2VzdG9yKE1lLGZ1bmN0aW9uKHRyKXtyZXR1cm4gej09PXRyfSkpe3ZhciAkZT1YcihpLGUuRGlhZ25vc3RpY3MuVGhlX3Byb3BlcnR5XzBfY2Fubm90X2JlX2FjY2Vzc2VkX29uX3R5cGVfMV93aXRoaW5fdGhpc19jbGFzc19iZWNhdXNlX2l0X2lzX3NoYWRvd2VkX2J5X2Fub3RoZXJfcHJpdmF0ZV9pZGVudGlmaWVyX3dpdGhfdGhlX3NhbWVfc3BlbGxpbmcsdSxPdChyKSk7cmV0dXJuIGUuYWRkUmVsYXRlZEluZm8oJGUsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShtZSxlLkRpYWdub3N0aWNzLlRoZV9zaGFkb3dpbmdfZGVjbGFyYXRpb25fb2ZfMF9pc19kZWZpbmVkX2hlcmUsdSksZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShoLGUuRGlhZ25vc3RpY3MuVGhlX2RlY2xhcmF0aW9uX29mXzBfdGhhdF95b3VfcHJvYmFibHlfaW50ZW5kZWRfdG9fdXNlX2lzX2RlZmluZWRfaGVyZSx1KSksITB9fXJldHVybiBYcihpLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pc19ub3RfYWNjZXNzaWJsZV9vdXRzaWRlX2NsYXNzXzFfYmVjYXVzZV9pdF9oYXNfYV9wcml2YXRlX2lkZW50aWZpZXIsdSxrdSh6Lm5hbWV8fEMpKSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBIQyhyLGkpe3JldHVybihMZShpKXx8ZS5pc1RoaXNQcm9wZXJ0eShyKSYmTnIoaSkpJiZlLmdldFRoaXNDb250YWluZXIociwhMCk9PT1yaShpKX1mdW5jdGlvbiB6YihyLGksdCxvLHMpe3ZhciB1PXZhKGkpLnJlc29sdmVkU3ltYm9sLGg9ZS5nZXRBc3NpZ25tZW50VGFyZ2V0S2luZChyKSx6PSRzKGghPT0wfHxHQyhyKT8kYyh0KTp0KSxtZT10YSh6KXx8ej09PUJ0LE1lO2lmKGUuaXNQcml2YXRlSWRlbnRpZmllcihvKSl7QWU8OTkmJihoIT09MCYmZmMociwxMDQ4NTc2KSxoIT09MSYmZmMociw1MjQyODgpKTt2YXIgJGU9ZzAoby5lc2NhcGVkVGV4dCxvKTtpZihoJiYkZSYmJGUudmFsdWVEZWNsYXJhdGlvbiYmZS5pc01ldGhvZERlY2xhcmF0aW9uKCRlLnZhbHVlRGVjbGFyYXRpb24pJiZUdChvLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2Fzc2lnbl90b19wcml2YXRlX21ldGhvZF8wX1ByaXZhdGVfbWV0aG9kc19hcmVfbm90X3dyaXRhYmxlLGUuaWRUZXh0KG8pKSxtZSl7aWYoJGUpcmV0dXJuIG5uKHopP1BlOno7aWYoIWUuZ2V0Q29udGFpbmluZ0NsYXNzKG8pKXJldHVybiBUdChvLGUuRGlhZ25vc3RpY3MuUHJpdmF0ZV9pZGVudGlmaWVyc19hcmVfbm90X2FsbG93ZWRfb3V0c2lkZV9jbGFzc19ib2RpZXMpLE9lfWlmKE1lPSRlP1ViKHQsJGUpOnZvaWQgMCwhTWUmJkc1KHQsbywkZSkpcmV0dXJuIFBlO3ZhciB0cj1NZSYmTWUuZmxhZ3MmNjU1MzYmJiEoTWUuZmxhZ3MmMzI3NjgpO3RyJiZoIT09MSYmWHIocixlLkRpYWdub3N0aWNzLlByaXZhdGVfYWNjZXNzb3Jfd2FzX2RlZmluZWRfd2l0aG91dF9hX2dldHRlcil9ZWxzZXtpZihtZSlyZXR1cm4gZS5pc0lkZW50aWZpZXIoaSkmJnUmJm8wKHUsciksbm4oeik/UGU6ejtNZT1iaSh6LG8uZXNjYXBlZFRleHQpfWUuaXNJZGVudGlmaWVyKGkpJiZ1JiYoeWUuaXNvbGF0ZWRNb2R1bGVzfHwhKE1lJiYoQXYoTWUpfHxNZS5mbGFncyY4JiZyLnBhcmVudC5raW5kPT09Mjk5KSl8fGUuc2hvdWxkUHJlc2VydmVDb25zdEVudW1zKHllKSYmbUMocikpJiZvMCh1LHIpO3ZhciBkcjtpZihNZSl7UF8oTWUpJiZtRChyLE1lKSYmTWUuZGVjbGFyYXRpb25zJiZFbChvLE1lLmRlY2xhcmF0aW9ucyxvLmVzY2FwZWRUZXh0KSxINShNZSxyLG8pLHh5KE1lLHIscmsoaSx1KSksdmEocikucmVzb2x2ZWRTeW1ib2w9TWU7dmFyIGxpPWUuaXNXcml0ZUFjY2VzcyhyKTtpZihKYihyLGkua2luZD09PTEwNixsaSx6LE1lKSxqayhyLE1lLGgpKXJldHVybiBYcihvLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYV9yZWFkX29ubHlfcHJvcGVydHksZS5pZFRleHQobykpLFBlO2RyPUhDKHIsTWUpP25yOmxpP1ZnKE1lKTpKdChNZSl9ZWxzZXt2YXIgRHI9IWUuaXNQcml2YXRlSWRlbnRpZmllcihvKSYmKGg9PT0wfHwhQWQodCl8fGUuaXNUaGlzVHlwZVBhcmFtZXRlcih0KSk/WG8oeixvLmVzY2FwZWRUZXh0KTp2b2lkIDA7aWYoIShEciYmRHIudHlwZSkpe3ZhciBRcj1XYihyLHQuc3ltYm9sLCEwKTtyZXR1cm4hUXImJmV2KHQpP09lOnQuc3ltYm9sPT09cGU/KHBlLmV4cG9ydHMuaGFzKG8uZXNjYXBlZFRleHQpJiZwZS5leHBvcnRzLmdldChvLmVzY2FwZWRUZXh0KS5mbGFncyY0MTg/WHIobyxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoby5lc2NhcGVkVGV4dCksT3QodCkpOm4mJlhyKG8sZS5EaWFnbm9zdGljcy5FbGVtZW50X2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlX2JlY2F1c2VfdHlwZV8wX2hhc19ub19pbmRleF9zaWduYXR1cmUsT3QodCkpLE9lKTooby5lc2NhcGVkVGV4dCYmIWJwKHIpJiZZQyhvLGUuaXNUaGlzVHlwZVBhcmFtZXRlcih0KT96OnQsUXIpLFBlKX1Eci5pc1JlYWRvbmx5JiYoZS5pc0Fzc2lnbm1lbnRUYXJnZXQocil8fGUuaXNEZWxldGVUYXJnZXQocikpJiZYcihyLGUuRGlhZ25vc3RpY3MuSW5kZXhfc2lnbmF0dXJlX2luX3R5cGVfMF9vbmx5X3Blcm1pdHNfcmVhZGluZyxPdCh6KSksZHI9eWUubm9VbmNoZWNrZWRJbmRleGVkQWNjZXNzJiYhZS5pc0Fzc2lnbm1lbnRUYXJnZXQocik/UGEoW0RyLnR5cGUsVHJdKTpEci50eXBlLHllLm5vUHJvcGVydHlBY2Nlc3NGcm9tSW5kZXhTaWduYXR1cmUmJmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ocikmJlhyKG8sZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2NvbWVzX2Zyb21fYW5faW5kZXhfc2lnbmF0dXJlX3NvX2l0X211c3RfYmVfYWNjZXNzZWRfd2l0aF8wLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoby5lc2NhcGVkVGV4dCkpLERyLmRlY2xhcmF0aW9uJiZlLmdldENvbWJpbmVkTm9kZUZsYWdzKERyLmRlY2xhcmF0aW9uKSYyNjg0MzU0NTYmJkVsKG8sW0RyLmRlY2xhcmF0aW9uXSxvLmVzY2FwZWRUZXh0KX1yZXR1cm4gWEMocixNZSxkcixvLHMpfWZ1bmN0aW9uIFdiKHIsaSx0KXt2YXIgbz1lLmdldFNvdXJjZUZpbGVPZk5vZGUocik7aWYobyYmeWUuY2hlY2tKcz09PXZvaWQgMCYmby5jaGVja0pzRGlyZWN0aXZlPT09dm9pZCAwJiYoby5zY3JpcHRLaW5kPT09MXx8by5zY3JpcHRLaW5kPT09Mikpe3ZhciBzPWUuZm9yRWFjaChpPT1udWxsP3ZvaWQgMDppLmRlY2xhcmF0aW9ucyxlLmdldFNvdXJjZUZpbGVPZk5vZGUpO3JldHVybiEobyE9PXMmJiEhcyYmQ3UocykpJiYhKHQmJmkmJmkuZmxhZ3MmMzIpJiYhKCEhciYmdCYmZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihyKSYmci5leHByZXNzaW9uLmtpbmQ9PT0xMDgpfXJldHVybiExfWZ1bmN0aW9uIFhDKHIsaSx0LG8scyl7dmFyIHU9ZS5nZXRBc3NpZ25tZW50VGFyZ2V0S2luZChyKTtpZih1PT09MSlyZXR1cm4ga2codCwhIShpJiZpLmZsYWdzJjE2Nzc3MjE2KSk7aWYoaSYmIShpLmZsYWdzJjk4MzExKSYmIShpLmZsYWdzJjgxOTImJnQuZmxhZ3MmMTA0ODU3NikmJiF6MChpLmRlY2xhcmF0aW9ucykpcmV0dXJuIHQ7aWYodD09PW5yKXJldHVybiByYShyLGkpO3Q9eWIodCxyLHMpO3ZhciBoPSExO2lmKFllJiZOZSYmZS5pc0FjY2Vzc0V4cHJlc3Npb24ocikmJnIuZXhwcmVzc2lvbi5raW5kPT09MTA4KXt2YXIgej1pJiZpLnZhbHVlRGVjbGFyYXRpb247aWYoeiYmSjYoeikmJiFlLmlzU3RhdGljKHopKXt2YXIgbWU9X3Yocik7bWUua2luZD09PTE3MSYmbWUucGFyZW50PT09ei5wYXJlbnQmJiEoei5mbGFncyYxNjc3NzIxNikmJihoPSEwKX19ZWxzZSBZZSYmaSYmaS52YWx1ZURlY2xhcmF0aW9uJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGkudmFsdWVEZWNsYXJhdGlvbikmJmUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uUHJvcGVydHlBY2Nlc3NLaW5kKGkudmFsdWVEZWNsYXJhdGlvbikmJl92KHIpPT09X3YoaS52YWx1ZURlY2xhcmF0aW9uKSYmKGg9ITApO3ZhciBNZT11cChyLHQsaD9pXyh0KTp0KTtyZXR1cm4gaCYmIShqdSh0KSYzMjc2OCkmJmp1KE1lKSYzMjc2OD8oWHIobyxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaXNfdXNlZF9iZWZvcmVfYmVpbmdfYXNzaWduZWQsdG4oaSkpLHQpOnU/S2woTWUpOk1lfWZ1bmN0aW9uIEg1KHIsaSx0KXt2YXIgbz1yLnZhbHVlRGVjbGFyYXRpb247aWYoISghb3x8ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGkpLmlzRGVjbGFyYXRpb25GaWxlKSl7dmFyIHMsdT1lLmlkVGV4dCh0KTtRQyhpKSYmIXFtKG8pJiYhKGUuaXNBY2Nlc3NFeHByZXNzaW9uKGkpJiZlLmlzQWNjZXNzRXhwcmVzc2lvbihpLmV4cHJlc3Npb24pKSYmIW5zKG8sdCkmJiEoZS5pc01ldGhvZERlY2xhcmF0aW9uKG8pJiZlLmdldENvbWJpbmVkTW9kaWZpZXJGbGFncyhvKSYzMikmJih5ZS51c2VEZWZpbmVGb3JDbGFzc0ZpZWxkc3x8IVg1KHIpKT9zPVhyKHQsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX3VzZWRfYmVmb3JlX2l0c19pbml0aWFsaXphdGlvbix1KTpvLmtpbmQ9PT0yNTcmJmkucGFyZW50LmtpbmQhPT0xNzgmJiEoby5mbGFncyYxNjc3NzIxNikmJiFucyhvLHQpJiYocz1Ycih0LGUuRGlhZ25vc3RpY3MuQ2xhc3NfMF91c2VkX2JlZm9yZV9pdHNfZGVjbGFyYXRpb24sdSkpLHMmJmUuYWRkUmVsYXRlZEluZm8ocyxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG8sZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9oZXJlLHUpKX19ZnVuY3Rpb24gUUMocil7cmV0dXJuISFlLmZpbmRBbmNlc3RvcihyLGZ1bmN0aW9uKGkpe3N3aXRjaChpLmtpbmQpe2Nhc2UgMTY3OnJldHVybiEwO2Nhc2UgMjk2OmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMjk4OmNhc2UgMTYyOmNhc2UgMjMzOmNhc2UgMjg4OmNhc2UgMjg1OmNhc2UgMjg2OmNhc2UgMjg3OmNhc2UgMjgwOmNhc2UgMjI4OmNhc2UgMjkxOnJldHVybiExO2Nhc2UgMjE0OmNhc2UgMjM4OnJldHVybiBlLmlzQmxvY2soaS5wYXJlbnQpJiZlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKGkucGFyZW50LnBhcmVudCk/ITA6XCJxdWl0XCI7ZGVmYXVsdDpyZXR1cm4gZS5pc0V4cHJlc3Npb25Ob2RlKGkpPyExOlwicXVpdFwifX0pfWZ1bmN0aW9uIFg1KHIpe2lmKCEoci5wYXJlbnQuZmxhZ3MmMzIpKXJldHVybiExO2Zvcih2YXIgaT1KdChyLnBhcmVudCk7Oyl7aWYoaT1pLnN5bWJvbCYmUTUoaSksIWkpcmV0dXJuITE7dmFyIHQ9YmkoaSxyLmVzY2FwZWROYW1lKTtpZih0JiZ0LnZhbHVlRGVjbGFyYXRpb24pcmV0dXJuITB9fWZ1bmN0aW9uIFE1KHIpe3ZhciBpPVFjKHIpO2lmKGkubGVuZ3RoIT09MClyZXR1cm4gRG8oaSl9ZnVuY3Rpb24gWUMocixpLHQpe3ZhciBvLHM7aWYoIWUuaXNQcml2YXRlSWRlbnRpZmllcihyKSYmaS5mbGFncyYxMDQ4NTc2JiYhKGkuZmxhZ3MmMTMxMDY4KSlmb3IodmFyIHU9MCxoPWkudHlwZXM7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07aWYoIWJpKHosci5lc2NhcGVkVGV4dCkmJiFYbyh6LHIuZXNjYXBlZFRleHQpKXtvPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMobyxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xLGUuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcociksT3QoeikpO2JyZWFrfX1pZigkQyhyLmVzY2FwZWRUZXh0LGkpKXt2YXIgbWU9ZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhyKSxNZT1PdChpKTtvPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMobyxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xX0RpZF95b3VfbWVhbl90b19hY2Nlc3NfdGhlX3N0YXRpY19tZW1iZXJfMl9pbnN0ZWFkLG1lLE1lLE1lK1wiLlwiK21lKX1lbHNle3ZhciAkZT1UdihpKTtpZigkZSYmYmkoJGUsci5lc2NhcGVkVGV4dCkpbz1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKG8sZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMSxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHIpLE90KGkpKSxzPWUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUocixlLkRpYWdub3N0aWNzLkRpZF95b3VfZm9yZ2V0X3RvX3VzZV9hd2FpdCk7ZWxzZXt2YXIgdHI9ZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhyKSxkcj1PdChpKSxEcj1aNSh0cixpKTtpZihEciE9PXZvaWQgMClvPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMobyxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xX0RvX3lvdV9uZWVkX3RvX2NoYW5nZV95b3VyX3RhcmdldF9saWJyYXJ5X1RyeV9jaGFuZ2luZ190aGVfbGliX2NvbXBpbGVyX29wdGlvbl90b18yX29yX2xhdGVyLHRyLGRyLERyKTtlbHNle3ZhciBRcj1xYihyLGkpO2lmKFFyIT09dm9pZCAwKXt2YXIgbGk9ZS5zeW1ib2xOYW1lKFFyKSxUaT10P2UuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9tYXlfbm90X2V4aXN0X29uX3R5cGVfMV9EaWRfeW91X21lYW5fMjplLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfZG9lc19ub3RfZXhpc3Rfb25fdHlwZV8xX0RpZF95b3VfbWVhbl8yO289ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyhvLFRpLHRyLGRyLGxpKSxzPVFyLnZhbHVlRGVjbGFyYXRpb24mJmUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoUXIudmFsdWVEZWNsYXJhdGlvbixlLkRpYWdub3N0aWNzLl8wX2lzX2RlY2xhcmVkX2hlcmUsbGkpfWVsc2V7dmFyIENpPVk1KGkpP2UuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfVHJ5X2NoYW5naW5nX3RoZV9saWJfY29tcGlsZXJfb3B0aW9uX3RvX2luY2x1ZGVfZG9tOmUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzE7bz1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKGVpKG8saSksQ2ksdHIsZHIpfX19fXZhciAkaT1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlRnJvbU1lc3NhZ2VDaGFpbihyLG8pO3MmJmUuYWRkUmVsYXRlZEluZm8oJGkscyksTHMoIXR8fG8uY29kZSE9PWUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9tYXlfbm90X2V4aXN0X29uX3R5cGVfMV9EaWRfeW91X21lYW5fMi5jb2RlLCRpKX1mdW5jdGlvbiBZNShyKXtyZXR1cm4geWUubGliJiYheWUubGliLmluY2x1ZGVzKFwiZG9tXCIpJiZoOChyLGZ1bmN0aW9uKGkpe3JldHVybiBpLnN5bWJvbCYmL14oRXZlbnRUYXJnZXR8Tm9kZXwoKEhUTUxbYS16QS1aXSopP0VsZW1lbnQpKSQvLnRlc3QoZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhpLnN5bWJvbC5lc2NhcGVkTmFtZSkpfSkmJk9mKHIpfWZ1bmN0aW9uICRDKHIsaSl7dmFyIHQ9aS5zeW1ib2wmJmJpKEp0KGkuc3ltYm9sKSxyKTtyZXR1cm4gdCE9PXZvaWQgMCYmISF0LnZhbHVlRGVjbGFyYXRpb24mJmUuaXNTdGF0aWModC52YWx1ZURlY2xhcmF0aW9uKX1mdW5jdGlvbiAkNShyKXtmb3IodmFyIGk9a3UociksdD1lLmdldFNjcmlwdFRhcmdldEZlYXR1cmVzKCksbz1lLmdldE93bktleXModCkscz0wLHU9bztzPHUubGVuZ3RoO3MrKyl7dmFyIGg9dVtzXSx6PWUuZ2V0T3duS2V5cyh0W2hdKTtpZih6IT09dm9pZCAwJiZlLmNvbnRhaW5zKHosaSkpcmV0dXJuIGh9fWZ1bmN0aW9uIFo1KHIsaSl7dmFyIHQ9JHMoaSkuc3ltYm9sO2lmKCEhdClmb3IodmFyIG89ZS5nZXRTY3JpcHRUYXJnZXRGZWF0dXJlcygpLHM9ZS5nZXRPd25LZXlzKG8pLHU9MCxoPXM7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV0sbWU9b1t6XSxNZT1tZVtlLnN5bWJvbE5hbWUodCldO2lmKE1lIT09dm9pZCAwJiZlLmNvbnRhaW5zKE1lLHIpKXJldHVybiB6fX1mdW5jdGlvbiBaQyhyLGkpe3JldHVybiBUeShyLHVvKGkpLDEwNjUwMCl9ZnVuY3Rpb24gcWIocixpKXt2YXIgdD11byhpKTtpZih0eXBlb2YgciE9XCJzdHJpbmdcIil7dmFyIG89ci5wYXJlbnQ7ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihvKSYmKHQ9ZS5maWx0ZXIodCxmdW5jdGlvbihzKXtyZXR1cm4gaWsobyxpLHMpfSkpLHI9ZS5pZFRleHQocil9cmV0dXJuIFR5KHIsdCwxMTE1NTEpfWZ1bmN0aW9uIGVrKHIsaSl7dmFyIHQ9ZS5pc1N0cmluZyhyKT9yOmUuaWRUZXh0KHIpLG89dW8oaSkscz10PT09XCJmb3JcIj9lLmZpbmQobyxmdW5jdGlvbih1KXtyZXR1cm4gZS5zeW1ib2xOYW1lKHUpPT09XCJodG1sRm9yXCJ9KTp0PT09XCJjbGFzc1wiP2UuZmluZChvLGZ1bmN0aW9uKHUpe3JldHVybiBlLnN5bWJvbE5hbWUodSk9PT1cImNsYXNzTmFtZVwifSk6dm9pZCAwO3JldHVybiBzIT1udWxsP3M6VHkodCxvLDExMTU1MSl9ZnVuY3Rpb24gVmIocixpKXt2YXIgdD1xYihyLGkpO3JldHVybiB0JiZlLnN5bWJvbE5hbWUodCl9ZnVuY3Rpb24gS2IocixpLHQpe2UuRGVidWcuYXNzZXJ0KGkhPT12b2lkIDAsXCJvdXRlcm5hbWUgc2hvdWxkIGFsd2F5cyBiZSBkZWZpbmVkXCIpO3ZhciBvPXVfKHIsaSx0LHZvaWQgMCxpLCExLCExLCEwLGZ1bmN0aW9uKHMsdSxoKXtlLkRlYnVnLmFzc2VydEVxdWFsKGksdSxcIm5hbWUgc2hvdWxkIGVxdWFsIG91dGVyTmFtZVwiKTt2YXIgej1xcyhzLHUsaCk7aWYoeilyZXR1cm4gejt2YXIgbWU7aWYocz09PWlpKXt2YXIgTWU9ZS5tYXBEZWZpbmVkKFtcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJib29sZWFuXCIsXCJvYmplY3RcIixcImJpZ2ludFwiLFwic3ltYm9sXCJdLGZ1bmN0aW9uKCRlKXtyZXR1cm4gcy5oYXMoJGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrJGUuc2xpY2UoMSkpP29vKDUyNDI4OCwkZSk6dm9pZCAwfSk7bWU9TWUuY29uY2F0KGUuYXJyYXlGcm9tKHMudmFsdWVzKCkpKX1lbHNlIG1lPWUuYXJyYXlGcm9tKHMudmFsdWVzKCkpO3JldHVybiBUeShlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHUpLG1lLGgpfSk7cmV0dXJuIG99ZnVuY3Rpb24gZTcocixpLHQpe3ZhciBvPUtiKHIsaSx0KTtyZXR1cm4gbyYmZS5zeW1ib2xOYW1lKG8pfWZ1bmN0aW9uIHYwKHIsaSl7cmV0dXJuIGkuZXhwb3J0cyYmVHkoZS5pZFRleHQociksSl8oaSksMjYyMzQ3NSl9ZnVuY3Rpb24gcjcocixpKXt2YXIgdD12MChyLGkpO3JldHVybiB0JiZlLnN5bWJvbE5hbWUodCl9ZnVuY3Rpb24gaTcocixpLHQpe2Z1bmN0aW9uIG8oaCl7dmFyIHo9aF8ocixoKTtpZih6KXt2YXIgbWU9aWcoSnQoeikpO3JldHVybiEhbWUmJkhsKG1lKT49MSYmYW8odCwkdShtZSwwKSl9cmV0dXJuITF9dmFyIHM9ZS5pc0Fzc2lnbm1lbnRUYXJnZXQoaSk/XCJzZXRcIjpcImdldFwiO2lmKCEhbyhzKSl7dmFyIHU9ZS50cnlHZXRQcm9wZXJ0eUFjY2Vzc09ySWRlbnRpZmllclRvU3RyaW5nKGkuZXhwcmVzc2lvbik7cmV0dXJuIHU9PT12b2lkIDA/dT1zOnUrPVwiLlwiK3MsdX19ZnVuY3Rpb24gdDcocixpKXt2YXIgdD1pLnR5cGVzLmZpbHRlcihmdW5jdGlvbihvKXtyZXR1cm4hIShvLmZsYWdzJjEyOCl9KTtyZXR1cm4gZS5nZXRTcGVsbGluZ1N1Z2dlc3Rpb24oci52YWx1ZSx0LGZ1bmN0aW9uKG8pe3JldHVybiBvLnZhbHVlfSl9ZnVuY3Rpb24gVHkocixpLHQpe3JldHVybiBlLmdldFNwZWxsaW5nU3VnZ2VzdGlvbihyLGksbyk7ZnVuY3Rpb24gbyhzKXt2YXIgdT1lLnN5bWJvbE5hbWUocyk7aWYoIWUuc3RhcnRzV2l0aCh1LCdcIicpKXtpZihzLmZsYWdzJnQpcmV0dXJuIHU7aWYocy5mbGFncyYyMDk3MTUyKXt2YXIgaD1kXyhzKTtpZihoJiZoLmZsYWdzJnQpcmV0dXJuIHV9fX19ZnVuY3Rpb24geHkocixpLHQpe3ZhciBvPXImJnIuZmxhZ3MmMTA2NTAwJiZyLnZhbHVlRGVjbGFyYXRpb247aWYoISFvKXt2YXIgcz1lLmhhc0VmZmVjdGl2ZU1vZGlmaWVyKG8sOCksdT1yLnZhbHVlRGVjbGFyYXRpb24mJmUuaXNOYW1lZERlY2xhcmF0aW9uKHIudmFsdWVEZWNsYXJhdGlvbikmJmUuaXNQcml2YXRlSWRlbnRpZmllcihyLnZhbHVlRGVjbGFyYXRpb24ubmFtZSk7aWYoISghcyYmIXUpJiYhKGkmJmUuaXNXcml0ZU9ubHlBY2Nlc3MoaSkmJiEoci5mbGFncyY2NTUzNikpKXtpZih0KXt2YXIgaD1lLmZpbmRBbmNlc3RvcihpLGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbik7aWYoaCYmaC5zeW1ib2w9PT1yKXJldHVybn0oZS5nZXRDaGVja0ZsYWdzKHIpJjE/QWEocikudGFyZ2V0OnIpLmlzUmVmZXJlbmNlZD02NzEwODg2M319fWZ1bmN0aW9uIHJrKHIsaSl7cmV0dXJuIHIua2luZD09PTEwOHx8ISFpJiZlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24ocikmJmk9PT1EbChlLmdldEZpcnN0SWRlbnRpZmllcihyKSl9ZnVuY3Rpb24gYTcocixpKXtzd2l0Y2goci5raW5kKXtjYXNlIDIwNjpyZXR1cm4gR2IocixyLmV4cHJlc3Npb24ua2luZD09PTEwNixpLCRjKHluKHIuZXhwcmVzc2lvbikpKTtjYXNlIDE2MTpyZXR1cm4gR2IociwhMSxpLCRjKHluKHIubGVmdCkpKTtjYXNlIDIwMDpyZXR1cm4gR2IociwhMSxpLFZhKHIpKX19ZnVuY3Rpb24gaWsocixpLHQpe3JldHVybiBIYihyLHIua2luZD09PTIwNiYmci5leHByZXNzaW9uLmtpbmQ9PT0xMDYsITEsaSx0KX1mdW5jdGlvbiBHYihyLGksdCxvKXtpZih0YShvKSlyZXR1cm4hMDt2YXIgcz1iaShvLHQpO3JldHVybiEhcyYmSGIocixpLCExLG8scyl9ZnVuY3Rpb24gSGIocixpLHQsbyxzKXtpZih0YShvKSlyZXR1cm4hMDtpZihzLnZhbHVlRGVjbGFyYXRpb24mJmUuaXNQcml2YXRlSWRlbnRpZmllckNsYXNzRWxlbWVudERlY2xhcmF0aW9uKHMudmFsdWVEZWNsYXJhdGlvbikpe3ZhciB1PWUuZ2V0Q29udGFpbmluZ0NsYXNzKHMudmFsdWVEZWNsYXJhdGlvbik7cmV0dXJuIWUuaXNPcHRpb25hbENoYWluKHIpJiYhIWUuZmluZEFuY2VzdG9yKHIsZnVuY3Rpb24oaCl7cmV0dXJuIGg9PT11fSl9cmV0dXJuIFVDKHIsaSx0LG8scyl9ZnVuY3Rpb24gbjcocil7dmFyIGk9ci5pbml0aWFsaXplcjtpZihpLmtpbmQ9PT0yNTUpe3ZhciB0PWkuZGVjbGFyYXRpb25zWzBdO2lmKHQmJiFlLmlzQmluZGluZ1BhdHRlcm4odC5uYW1lKSlyZXR1cm4gRXQodCl9ZWxzZSBpZihpLmtpbmQ9PT03OSlyZXR1cm4gRGwoaSl9ZnVuY3Rpb24gbzcocil7cmV0dXJuIEhuKHIpLmxlbmd0aD09PTEmJiEhc3MocixudCl9ZnVuY3Rpb24gczcocil7dmFyIGk9ZS5za2lwUGFyZW50aGVzZXMocik7aWYoaS5raW5kPT09Nzkpe3ZhciB0PURsKGkpO2lmKHQuZmxhZ3MmMylmb3IodmFyIG89cixzPXIucGFyZW50O3M7KXtpZihzLmtpbmQ9PT0yNDMmJm89PT1zLnN0YXRlbWVudCYmbjcocyk9PT10JiZvNyhHcyhzLmV4cHJlc3Npb24pKSlyZXR1cm4hMDtvPXMscz1zLnBhcmVudH19cmV0dXJuITF9ZnVuY3Rpb24gYzcocixpKXtyZXR1cm4gci5mbGFncyYzMj91NyhyLGkpOnRrKHIsZ20oci5leHByZXNzaW9uKSxpKX1mdW5jdGlvbiB1NyhyLGkpe3ZhciB0PXluKHIuZXhwcmVzc2lvbiksbz1jdih0LHIuZXhwcmVzc2lvbik7cmV0dXJuIHpoKHRrKHIsYmwobyxyLmV4cHJlc3Npb24pLGkpLHIsbyE9PXQpfWZ1bmN0aW9uIHRrKHIsaSx0KXt2YXIgbz1lLmdldEFzc2lnbm1lbnRUYXJnZXRLaW5kKHIpIT09MHx8R0Mocik/JGMoaSk6aSxzPXIuYXJndW1lbnRFeHByZXNzaW9uLHU9eW4ocyk7aWYobm4obyl8fG89PT1CdClyZXR1cm4gbztpZih1UyhvKSYmIWUuaXNTdHJpbmdMaXRlcmFsTGlrZShzKSlyZXR1cm4gWHIocyxlLkRpYWdub3N0aWNzLkFfY29uc3RfZW51bV9tZW1iZXJfY2FuX29ubHlfYmVfYWNjZXNzZWRfdXNpbmdfYV9zdHJpbmdfbGl0ZXJhbCksUGU7dmFyIGg9czcocyk/bnQ6dSx6PWUuaXNBc3NpZ25tZW50VGFyZ2V0KHIpPzR8KEFkKG8pJiYhZS5pc1RoaXNUeXBlUGFyYW1ldGVyKG8pPzI6MCk6MzIsbWU9ZXAobyxoLHoscil8fFBlO3JldHVybiBvNihYQyhyLHZhKHIpLnJlc29sdmVkU3ltYm9sLG1lLHMsdCkscil9ZnVuY3Rpb24gYWsocil7cmV0dXJuIGUuaXNDYWxsT3JOZXdFeHByZXNzaW9uKHIpfHxlLmlzVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKHIpfHxlLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50KHIpfWZ1bmN0aW9uIEZnKHIpe3JldHVybiBhayhyKSYmZS5mb3JFYWNoKHIudHlwZUFyZ3VtZW50cyxpbyksci5raW5kPT09MjEwP3luKHIudGVtcGxhdGUpOmUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQocik/eW4oci5hdHRyaWJ1dGVzKTpyLmtpbmQhPT0xNjUmJmUuZm9yRWFjaChyLmFyZ3VtZW50cyxmdW5jdGlvbihpKXt5bihpKX0pLEVufWZ1bmN0aW9uIEdsKHIpe3JldHVybiBGZyhyKSxXbn1mdW5jdGlvbiBsNyhyLGksdCl7dmFyIG8scyx1PTAsaCx6PS0xLG1lO2UuRGVidWcuYXNzZXJ0KCFpLmxlbmd0aCk7Zm9yKHZhciBNZT0wLCRlPXI7TWU8JGUubGVuZ3RoO01lKyspe3ZhciB0cj0kZVtNZV0sZHI9dHIuZGVjbGFyYXRpb24mJkV0KHRyLmRlY2xhcmF0aW9uKSxEcj10ci5kZWNsYXJhdGlvbiYmdHIuZGVjbGFyYXRpb24ucGFyZW50OyFzfHxkcj09PXM/byYmRHI9PT1vP2g9aCsxOihvPURyLGg9dSk6KGg9dT1pLmxlbmd0aCxvPURyKSxzPWRyLEkodHIpPyh6KyssbWU9eix1KyspOm1lPWgsaS5zcGxpY2UobWUsMCx0P3cxKHRyLHQpOnRyKX19ZnVuY3Rpb24geTAocil7cmV0dXJuISFyJiYoci5raW5kPT09MjI1fHxyLmtpbmQ9PT0yMzImJnIuaXNTcHJlYWQpfWZ1bmN0aW9uIGgwKHIpe3JldHVybiBlLmZpbmRJbmRleChyLHkwKX1mdW5jdGlvbiBuayhyKXtyZXR1cm4hIShyLmZsYWdzJjE2Mzg0KX1mdW5jdGlvbiBmNyhyKXtyZXR1cm4hIShyLmZsYWdzJjQ5MTU1KX1mdW5jdGlvbiBEMChyLGksdCxvKXtvPT09dm9pZCAwJiYobz0hMSk7dmFyIHMsdT0hMSxoPVdjKHQpLHo9SGwodCk7aWYoci5raW5kPT09MjEwKWlmKHM9aS5sZW5ndGgsci50ZW1wbGF0ZS5raW5kPT09MjIzKXt2YXIgbWU9ZS5sYXN0KHIudGVtcGxhdGUudGVtcGxhdGVTcGFucyk7dT1lLm5vZGVJc01pc3NpbmcobWUubGl0ZXJhbCl8fCEhbWUubGl0ZXJhbC5pc1VudGVybWluYXRlZH1lbHNle3ZhciBNZT1yLnRlbXBsYXRlO2UuRGVidWcuYXNzZXJ0KE1lLmtpbmQ9PT0xNCksdT0hIU1lLmlzVW50ZXJtaW5hdGVkfWVsc2UgaWYoci5raW5kPT09MTY1KXM9X2socix0KTtlbHNlIGlmKGUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQocikpe2lmKHU9ci5hdHRyaWJ1dGVzLmVuZD09PXIuZW5kLHUpcmV0dXJuITA7cz16PT09MD9pLmxlbmd0aDoxLGg9aS5sZW5ndGg9PT0wP2g6MSx6PU1hdGgubWluKHosMSl9ZWxzZSBpZihyLmFyZ3VtZW50cyl7cz1vP2kubGVuZ3RoKzE6aS5sZW5ndGgsdT1yLmFyZ3VtZW50cy5lbmQ9PT1yLmVuZDt2YXIgJGU9aDAoaSk7aWYoJGU+PTApcmV0dXJuICRlPj1IbCh0KSYmKFhsKHQpfHwkZTxXYyh0KSl9ZWxzZSByZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoci5raW5kPT09MjA5KSxIbCh0KT09PTA7aWYoIVhsKHQpJiZzPmgpcmV0dXJuITE7aWYodXx8cz49eilyZXR1cm4hMDtmb3IodmFyIHRyPXM7dHI8ejt0cisrKXt2YXIgZHI9JHUodCx0cik7aWYoZWMoZHIsZS5pc0luSlNGaWxlKHIpJiYhWWU/Zjc6bmspLmZsYWdzJjEzMTA3MilyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBYYihyLGkpe3ZhciB0PWUubGVuZ3RoKHIudHlwZVBhcmFtZXRlcnMpLG89VWwoci50eXBlUGFyYW1ldGVycyk7cmV0dXJuIWUuc29tZShpKXx8aS5sZW5ndGg+PW8mJmkubGVuZ3RoPD10fWZ1bmN0aW9uIGlnKHIpe3JldHVybiBndihyLDAsITEpfWZ1bmN0aW9uIG9rKHIpe3JldHVybiBndihyLDAsITEpfHxndihyLDEsITEpfWZ1bmN0aW9uIGd2KHIsaSx0KXtpZihyLmZsYWdzJjUyNDI4OCl7dmFyIG89UnUocik7aWYodHx8by5wcm9wZXJ0aWVzLmxlbmd0aD09PTAmJm8uaW5kZXhJbmZvcy5sZW5ndGg9PT0wKXtpZihpPT09MCYmby5jYWxsU2lnbmF0dXJlcy5sZW5ndGg9PT0xJiZvLmNvbnN0cnVjdFNpZ25hdHVyZXMubGVuZ3RoPT09MClyZXR1cm4gby5jYWxsU2lnbmF0dXJlc1swXTtpZihpPT09MSYmby5jb25zdHJ1Y3RTaWduYXR1cmVzLmxlbmd0aD09PTEmJm8uY2FsbFNpZ25hdHVyZXMubGVuZ3RoPT09MClyZXR1cm4gby5jb25zdHJ1Y3RTaWduYXR1cmVzWzBdfX19ZnVuY3Rpb24gc2socixpLHQsbyl7dmFyIHM9dXYoci50eXBlUGFyYW1ldGVycyxyLDAsbyksdT12dihpKSxoPXQmJih1JiZ1LmZsYWdzJjI2MjE0ND90Lm5vbkZpeGluZ01hcHBlcjp0Lm1hcHBlciksej1oP1RnKGksaCk6aTtyZXR1cm4gZWIoeixyLGZ1bmN0aW9uKG1lLE1lKXtkZihzLmluZmVyZW5jZXMsbWUsTWUpfSksdHx8cmIoaSxyLGZ1bmN0aW9uKG1lLE1lKXtkZihzLmluZmVyZW5jZXMsbWUsTWUsMTI4KX0pLFhtKHIsX2IocyksZS5pc0luSlNGaWxlKGkuZGVjbGFyYXRpb24pKX1mdW5jdGlvbiBfNyhyLGksdCxvKXt2YXIgcz1sMChpLHIpLHU9Umcoci5hdHRyaWJ1dGVzLHMsbyx0KTtyZXR1cm4gZGYoby5pbmZlcmVuY2VzLHUscyksX2Iobyl9ZnVuY3Rpb24gY2socil7aWYoIXIpcmV0dXJuIEZpO3ZhciBpPXluKHIpO3JldHVybiBlLmlzT3B0aW9uYWxDaGFpblJvb3Qoci5wYXJlbnQpP0NfKGkpOmUuaXNPcHRpb25hbENoYWluKHIucGFyZW50KT9ZRChpKTppfWZ1bmN0aW9uIFFiKHIsaSx0LG8scyl7aWYoZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChyKSlyZXR1cm4gXzcocixpLG8scyk7aWYoci5raW5kIT09MTY1KXt2YXIgdT1vdShyLGUuZXZlcnkoaS50eXBlUGFyYW1ldGVycyxmdW5jdGlvbihTbil7cmV0dXJuISFEXyhTbil9KT84OjApO2lmKHUpe3ZhciBoPXlvKGkpO2lmKElkKGgpKXt2YXIgej13ZyhyKSxtZT1hYihKdyh6LDEpKSxNZT11bih1LG1lKSwkZT1pZyhNZSksdHI9JGUmJiRlLnR5cGVQYXJhbWV0ZXJzP2ltKGVEKCRlLCRlLnR5cGVQYXJhbWV0ZXJzKSk6TWU7ZGYocy5pbmZlcmVuY2VzLHRyLGgsMTI4KTt2YXIgZHI9dXYoaS50eXBlUGFyYW1ldGVycyxpLHMuZmxhZ3MpLERyPXVuKHUseiYmei5yZXR1cm5NYXBwZXIpO2RmKGRyLmluZmVyZW5jZXMsRHIsaCkscy5yZXR1cm5NYXBwZXI9ZS5zb21lKGRyLmluZmVyZW5jZXMsdGcpP2FiKFV3KGRyKSk6dm9pZCAwfX19dmFyIFFyPXl2KGkpLGxpPVFyP01hdGgubWluKFdjKGkpLTEsdC5sZW5ndGgpOnQubGVuZ3RoO2lmKFFyJiZRci5mbGFncyYyNjIxNDQpe3ZhciBUaT1lLmZpbmQocy5pbmZlcmVuY2VzLGZ1bmN0aW9uKFNuKXtyZXR1cm4gU24udHlwZVBhcmFtZXRlcj09PVFyfSk7VGkmJihUaS5pbXBsaWVkQXJpdHk9ZS5maW5kSW5kZXgodCx5MCxsaSk8MD90Lmxlbmd0aC1saTp2b2lkIDApfXZhciBDaT1UXyhpKTtpZihDaSYmSWQoQ2kpKXt2YXIgJGk9Zmsocik7ZGYocy5pbmZlcmVuY2VzLGNrKCRpKSxDaSl9Zm9yKHZhciBaaT0wO1ppPGxpO1ppKyspe3ZhciBxdD10W1ppXTtpZihxdC5raW5kIT09MjI3JiYhKG8mMzImJnViKHF0KSkpe3ZhciBOdD0kdShpLFppKTtpZihJZChOdCkpe3ZhciBSYT1SZyhxdCxOdCxzLG8pO2RmKHMuaW5mZXJlbmNlcyxSYSxOdCl9fX1pZihRciYmSWQoUXIpKXt2YXIgY2E9WWIodCxsaSx0Lmxlbmd0aCxRcixzLG8pO2RmKHMuaW5mZXJlbmNlcyxjYSxRcil9cmV0dXJuIF9iKHMpfWZ1bmN0aW9uIHVrKHIpe3JldHVybiByLmZsYWdzJjEwNDg1NzY/U3Mocix1ayk6ci5mbGFncyYxfHxCaCh1YyhyKXx8cik/cjpZbihyKT9XbCh4byhyKSxyLnRhcmdldC5lbGVtZW50RmxhZ3MsITEsci50YXJnZXQubGFiZWxlZEVsZW1lbnREZWNsYXJhdGlvbnMpOldsKFtyXSxbOF0pfWZ1bmN0aW9uIFliKHIsaSx0LG8scyx1KXtpZihpPj10LTEpe3ZhciBoPXJbdC0xXTtpZih5MChoKSlyZXR1cm4gdWsoaC5raW5kPT09MjMyP2gudHlwZTpSZyhoLmV4cHJlc3Npb24sbyxzLHUpKX1mb3IodmFyIHo9W10sbWU9W10sTWU9W10sJGU9aTskZTx0OyRlKyspe3ZhciBoPXJbJGVdO2lmKHkwKGgpKXt2YXIgdHI9aC5raW5kPT09MjMyP2gudHlwZTp5bihoLmV4cHJlc3Npb24pO3NwKHRyKT8oei5wdXNoKHRyKSxtZS5wdXNoKDgpKTooei5wdXNoKE5fKDMzLHRyLFRyLGgua2luZD09PTIyNT9oLmV4cHJlc3Npb246aCkpLG1lLnB1c2goNCkpfWVsc2V7dmFyIGRyPUpjKG8sSWYoJGUtaSksMjU2KSxEcj1SZyhoLGRyLHMsdSksUXI9ZnMoZHIsNDA2OTc4NTU2KTt6LnB1c2goUXI/amMoRHIpOkhwKERyKSksbWUucHVzaCgxKX1oLmtpbmQ9PT0yMzImJmgudHVwbGVOYW1lU291cmNlJiZNZS5wdXNoKGgudHVwbGVOYW1lU291cmNlKX1yZXR1cm4gV2woeixtZSwhMSxlLmxlbmd0aChNZSk9PT1lLmxlbmd0aCh6KT9NZTp2b2lkIDApfWZ1bmN0aW9uICRiKHIsaSx0LG8pe2Zvcih2YXIgcz1lLmlzSW5KU0ZpbGUoci5kZWNsYXJhdGlvbiksdT1yLnR5cGVQYXJhbWV0ZXJzLGg9enAoZS5tYXAoaSxWYSksdSxVbCh1KSxzKSx6LG1lPTA7bWU8aS5sZW5ndGg7bWUrKyl7ZS5EZWJ1Zy5hc3NlcnQodVttZV0hPT12b2lkIDAsXCJTaG91bGQgbm90IGNhbGwgY2hlY2tUeXBlQXJndW1lbnRzIHdpdGggdG9vIG1hbnkgdHlwZSBhcmd1bWVudHNcIik7dmFyIE1lPVRjKHVbbWVdKTtpZihNZSl7dmFyICRlPXQmJm8/ZnVuY3Rpb24oKXtyZXR1cm4gZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5UeXBlXzBfZG9lc19ub3Rfc2F0aXNmeV90aGVfY29uc3RyYWludF8xKX06dm9pZCAwLHRyPW98fGUuRGlhZ25vc3RpY3MuVHlwZV8wX2RvZXNfbm90X3NhdGlzZnlfdGhlX2NvbnN0cmFpbnRfMTt6fHwoej1VYyh1LGgpKTt2YXIgZHI9aFttZV07aWYoIXpjKGRyLFJjKHVuKE1lLHopLGRyKSx0P2lbbWVdOnZvaWQgMCx0ciwkZSkpcmV0dXJufX1yZXR1cm4gaH1mdW5jdGlvbiBsayhyKXtpZihkbShyLnRhZ05hbWUpKXJldHVybiAyO3ZhciBpPSRzKHluKHIudGFnTmFtZSkpO3JldHVybiBlLmxlbmd0aChvdChpLDEpKT8wOmUubGVuZ3RoKG90KGksMCkpPzE6Mn1mdW5jdGlvbiBwNyhyLGksdCxvLHMsdSxoKXt2YXIgej1sMChpLHIpLG1lPVJnKHIuYXR0cmlidXRlcyx6LHZvaWQgMCxvKTtyZXR1cm4gTWUoKSYmRkQobWUseix0LHM/ci50YWdOYW1lOnZvaWQgMCxyLmF0dHJpYnV0ZXMsdm9pZCAwLHUsaCk7ZnVuY3Rpb24gTWUoKXt2YXIgJGU7aWYoTWIocikpcmV0dXJuITA7dmFyIHRyPWUuaXNKc3hPcGVuaW5nRWxlbWVudChyKXx8ZS5pc0pzeFNlbGZDbG9zaW5nRWxlbWVudChyKSYmIWRtKHIudGFnTmFtZSk/eW4oci50YWdOYW1lKTp2b2lkIDA7aWYoIXRyKXJldHVybiEwO3ZhciBkcj1vdCh0ciwwKTtpZighZS5sZW5ndGgoZHIpKXJldHVybiEwO3ZhciBEcj1vQShyKTtpZighRHIpcmV0dXJuITA7dmFyIFFyPURzKERyLDExMTU1MSwhMCwhMSxyKTtpZighUXIpcmV0dXJuITA7dmFyIGxpPUp0KFFyKSxUaT1vdChsaSwwKTtpZighZS5sZW5ndGgoVGkpKXJldHVybiEwO2Zvcih2YXIgQ2k9ITEsJGk9MCxaaT0wLHF0PVRpO1ppPHF0Lmxlbmd0aDtaaSsrKXt2YXIgTnQ9cXRbWmldLFJhPSR1KE50LDApLGNhPW90KFJhLDApO2lmKCEhZS5sZW5ndGgoY2EpKWZvcih2YXIgU249MCxqYT1jYTtTbjxqYS5sZW5ndGg7U24rKyl7dmFyIEZuPWphW1NuXTtpZihDaT0hMCxYbChGbikpcmV0dXJuITA7dmFyIHduPVdjKEZuKTt3bj4kaSYmKCRpPXduKX19aWYoIUNpKXJldHVybiEwO2Zvcih2YXIgVG49MS8wLEVvPTAsbHQ9ZHI7RW88bHQubGVuZ3RoO0VvKyspe3ZhciBpdD1sdFtFb10sWXQ9SGwoaXQpO1l0PFRuJiYoVG49WXQpfWlmKFRuPD0kaSlyZXR1cm4hMDtpZihzKXt2YXIgSWE9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLnRhZ05hbWUsZS5EaWFnbm9zdGljcy5UYWdfMF9leHBlY3RzX2F0X2xlYXN0XzFfYXJndW1lbnRzX2J1dF90aGVfSlNYX2ZhY3RvcnlfMl9wcm92aWRlc19hdF9tb3N0XzMsZS5lbnRpdHlOYW1lVG9TdHJpbmcoci50YWdOYW1lKSxUbixlLmVudGl0eU5hbWVUb1N0cmluZyhEciksJGkpLFF0PSgkZT1lbChyLnRhZ05hbWUpKT09PW51bGx8fCRlPT09dm9pZCAwP3ZvaWQgMDokZS52YWx1ZURlY2xhcmF0aW9uO1F0JiZlLmFkZFJlbGF0ZWRJbmZvKElhLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoUXQsZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9oZXJlLGUuZW50aXR5TmFtZVRvU3RyaW5nKHIudGFnTmFtZSkpKSxoJiZoLnNraXBMb2dnaW5nJiYoaC5lcnJvcnN8fChoLmVycm9ycz1bXSkpLnB1c2goSWEpLGguc2tpcExvZ2dpbmd8fHJuLmFkZChJYSl9cmV0dXJuITF9fWZ1bmN0aW9uIEV5KHIsaSx0LG8scyx1LGgpe3ZhciB6PXtlcnJvcnM6dm9pZCAwLHNraXBMb2dnaW5nOiEwfTtpZihlLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50KHIpKXJldHVybiBwNyhyLHQsbyxzLHUsaCx6KT92b2lkIDA6KGUuRGVidWcuYXNzZXJ0KCF1fHwhIXouZXJyb3JzLFwianN4IHNob3VsZCBoYXZlIGVycm9ycyB3aGVuIHJlcG9ydGluZyBlcnJvcnNcIiksei5lcnJvcnN8fGUuZW1wdHlBcnJheSk7dmFyIG1lPVRfKHQpO2lmKG1lJiZtZSE9PUZpJiZyLmtpbmQhPT0yMDkpe3ZhciBNZT1mayhyKSwkZT1jayhNZSksdHI9dT9NZXx8cjp2b2lkIDAsZHI9ZS5EaWFnbm9zdGljcy5UaGVfdGhpc19jb250ZXh0X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19tZXRob2Rfc190aGlzX29mX3R5cGVfMTtpZighaGwoJGUsbWUsbyx0cixkcixoLHopKXJldHVybiBlLkRlYnVnLmFzc2VydCghdXx8ISF6LmVycm9ycyxcInRoaXMgcGFyYW1ldGVyIHNob3VsZCBoYXZlIGVycm9ycyB3aGVuIHJlcG9ydGluZyBlcnJvcnNcIiksei5lcnJvcnN8fGUuZW1wdHlBcnJheX1mb3IodmFyIERyPWUuRGlhZ25vc3RpY3MuQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzEsUXI9eXYodCksbGk9UXI/TWF0aC5taW4oV2ModCktMSxpLmxlbmd0aCk6aS5sZW5ndGgsVGk9MDtUaTxsaTtUaSsrKXt2YXIgQ2k9aVtUaV07aWYoQ2kua2luZCE9PTIyNyl7dmFyICRpPSR1KHQsVGkpLFppPVJnKENpLCRpLHZvaWQgMCxzKSxxdD1zJjQ/Zm0oWmkpOlppO2lmKCFGRChxdCwkaSxvLHU/Q2k6dm9pZCAwLENpLERyLGgseikpcmV0dXJuIGUuRGVidWcuYXNzZXJ0KCF1fHwhIXouZXJyb3JzLFwicGFyYW1ldGVyIHNob3VsZCBoYXZlIGVycm9ycyB3aGVuIHJlcG9ydGluZyBlcnJvcnNcIiksY2EoQ2kscXQsJGkpLHouZXJyb3JzfHxlLmVtcHR5QXJyYXl9fWlmKFFyKXt2YXIgTnQ9WWIoaSxsaSxpLmxlbmd0aCxRcix2b2lkIDAscyksUmE9aS5sZW5ndGgtbGksdHI9dT9SYT09PTA/cjpSYT09PTE/aVtsaV06ZS5zZXRUZXh0UmFuZ2VQb3NFbmQoZWQocixOdCksaVtsaV0ucG9zLGlbaS5sZW5ndGgtMV0uZW5kKTp2b2lkIDA7aWYoIWhsKE50LFFyLG8sdHIsRHIsdm9pZCAwLHopKXJldHVybiBlLkRlYnVnLmFzc2VydCghdXx8ISF6LmVycm9ycyxcInJlc3QgcGFyYW1ldGVyIHNob3VsZCBoYXZlIGVycm9ycyB3aGVuIHJlcG9ydGluZyBlcnJvcnNcIiksY2EodHIsTnQsUXIpLHouZXJyb3JzfHxlLmVtcHR5QXJyYXl9cmV0dXJuO2Z1bmN0aW9uIGNhKFNuLGphLEZuKXtpZihTbiYmdSYmei5lcnJvcnMmJnouZXJyb3JzLmxlbmd0aCl7aWYoU3YoRm4pKXJldHVybjt2YXIgd249U3YoamEpO3duJiZyXyh3bixGbixvKSYmZS5hZGRSZWxhdGVkSW5mbyh6LmVycm9yc1swXSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKFNuLGUuRGlhZ25vc3RpY3MuRGlkX3lvdV9mb3JnZXRfdG9fdXNlX2F3YWl0KSl9fX1mdW5jdGlvbiBmayhyKXt2YXIgaT1yLmtpbmQ9PT0yMDg/ci5leHByZXNzaW9uOnIua2luZD09PTIxMD9yLnRhZzp2b2lkIDA7aWYoaSl7dmFyIHQ9ZS5za2lwT3V0ZXJFeHByZXNzaW9ucyhpKTtpZihlLmlzQWNjZXNzRXhwcmVzc2lvbih0KSlyZXR1cm4gdC5leHByZXNzaW9ufX1mdW5jdGlvbiBlZChyLGksdCxvKXt2YXIgcz1lLnBhcnNlTm9kZUZhY3RvcnkuY3JlYXRlU3ludGhldGljRXhwcmVzc2lvbihpLHQsbyk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKHMsciksZS5zZXRQYXJlbnQocyxyKSxzfWZ1bmN0aW9uIFpiKHIpe2lmKHIua2luZD09PTIxMCl7dmFyIGk9ci50ZW1wbGF0ZSx0PVtlZChpLFQzKCkpXTtyZXR1cm4gaS5raW5kPT09MjIzJiZlLmZvckVhY2goaS50ZW1wbGF0ZVNwYW5zLGZ1bmN0aW9uKG1lKXt0LnB1c2gobWUuZXhwcmVzc2lvbil9KSx0fWlmKHIua2luZD09PTE2NSlyZXR1cm4gZDcocik7aWYoZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChyKSlyZXR1cm4gci5hdHRyaWJ1dGVzLnByb3BlcnRpZXMubGVuZ3RoPjB8fGUuaXNKc3hPcGVuaW5nRWxlbWVudChyKSYmci5wYXJlbnQuY2hpbGRyZW4ubGVuZ3RoPjA/W3IuYXR0cmlidXRlc106ZS5lbXB0eUFycmF5O3ZhciBvPXIuYXJndW1lbnRzfHxlLmVtcHR5QXJyYXkscz1oMChvKTtpZihzPj0wKXtmb3IodmFyIHU9by5zbGljZSgwLHMpLGg9ZnVuY3Rpb24obWUpe3ZhciBNZT1vW21lXSwkZT1NZS5raW5kPT09MjI1JiYoQW8/eW4oTWUuZXhwcmVzc2lvbik6T3MoTWUuZXhwcmVzc2lvbikpOyRlJiZZbigkZSk/ZS5mb3JFYWNoKHhvKCRlKSxmdW5jdGlvbih0cixkcil7dmFyIERyLFFyPSRlLnRhcmdldC5lbGVtZW50RmxhZ3NbZHJdLGxpPWVkKE1lLFFyJjQ/WnModHIpOnRyLCEhKFFyJjEyKSwoRHI9JGUudGFyZ2V0LmxhYmVsZWRFbGVtZW50RGVjbGFyYXRpb25zKT09PW51bGx8fERyPT09dm9pZCAwP3ZvaWQgMDpEcltkcl0pO3UucHVzaChsaSl9KTp1LnB1c2goTWUpfSx6PXM7ejxvLmxlbmd0aDt6KyspaCh6KTtyZXR1cm4gdX1yZXR1cm4gb31mdW5jdGlvbiBkNyhyKXt2YXIgaT1yLnBhcmVudCx0PXIuZXhwcmVzc2lvbjtzd2l0Y2goaS5raW5kKXtjYXNlIDI1NzpjYXNlIDIyNjpyZXR1cm5bZWQodCxKdChFdChpKSkpXTtjYXNlIDE2NDp2YXIgbz1pLnBhcmVudDtyZXR1cm5bZWQodCxpLnBhcmVudC5raW5kPT09MTcxP0p0KEV0KG8pKTpQZSksZWQodCxPZSksZWQodCxudCldO2Nhc2UgMTY3OmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOnZhciBzPWkua2luZCE9PTE2NyYmQWUhPT0wO3JldHVybltlZCh0LGw5KGkpKSxlZCh0LGY5KGkpKSxlZCh0LHM/UHgoQmQoaSkpOk9lKV19cmV0dXJuIGUuRGVidWcuZmFpbCgpfWZ1bmN0aW9uIF9rKHIsaSl7c3dpdGNoKHIucGFyZW50LmtpbmQpe2Nhc2UgMjU3OmNhc2UgMjI2OnJldHVybiAxO2Nhc2UgMTY3OnJldHVybiAyO2Nhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOnJldHVybiBBZT09PTB8fGkucGFyYW1ldGVycy5sZW5ndGg8PTI/MjozO2Nhc2UgMTY0OnJldHVybiAzO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbCgpfX1mdW5jdGlvbiBwayhyLGkpe3ZhciB0LG8scz1lLmdldFNvdXJjZUZpbGVPZk5vZGUocik7aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihyLmV4cHJlc3Npb24pKXt2YXIgdT1lLmdldEVycm9yU3BhbkZvck5vZGUocyxyLmV4cHJlc3Npb24ubmFtZSk7dD11LnN0YXJ0LG89aT91Lmxlbmd0aDpyLmVuZC10fWVsc2V7dmFyIGg9ZS5nZXRFcnJvclNwYW5Gb3JOb2RlKHMsci5leHByZXNzaW9uKTt0PWguc3RhcnQsbz1pP2gubGVuZ3RoOnIuZW5kLXR9cmV0dXJue3N0YXJ0OnQsbGVuZ3RoOm8sc291cmNlRmlsZTpzfX1mdW5jdGlvbiBDeShyLGksdCxvLHMsdSl7aWYoZS5pc0NhbGxFeHByZXNzaW9uKHIpKXt2YXIgaD1wayhyKSx6PWguc291cmNlRmlsZSxtZT1oLnN0YXJ0LE1lPWgubGVuZ3RoO3JldHVybiBlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKHosbWUsTWUsaSx0LG8scyx1KX1lbHNlIHJldHVybiBlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIsaSx0LG8scyx1KX1mdW5jdGlvbiBnNyhyKXtpZighZS5pc0NhbGxFeHByZXNzaW9uKHIpfHwhZS5pc0lkZW50aWZpZXIoci5leHByZXNzaW9uKSlyZXR1cm4hMTt2YXIgaT1lcyhyLmV4cHJlc3Npb24sci5leHByZXNzaW9uLmVzY2FwZWRUZXh0LDExMTU1MSx2b2lkIDAsdm9pZCAwLCExKSx0PWk9PW51bGw/dm9pZCAwOmkudmFsdWVEZWNsYXJhdGlvbjtpZighdHx8IWUuaXNQYXJhbWV0ZXIodCl8fCFlLmlzRnVuY3Rpb25FeHByZXNzaW9uT3JBcnJvd0Z1bmN0aW9uKHQucGFyZW50KXx8IWUuaXNOZXdFeHByZXNzaW9uKHQucGFyZW50LnBhcmVudCl8fCFlLmlzSWRlbnRpZmllcih0LnBhcmVudC5wYXJlbnQuZXhwcmVzc2lvbikpcmV0dXJuITE7dmFyIG89bkQoITEpO2lmKCFvKXJldHVybiExO3ZhciBzPWVsKHQucGFyZW50LnBhcmVudC5leHByZXNzaW9uLCEwKTtyZXR1cm4gcz09PW99ZnVuY3Rpb24gZGsocixpLHQpe3ZhciBvLHM9aDAodCk7aWYocz4tMSlyZXR1cm4gZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSh0W3NdLGUuRGlhZ25vc3RpY3MuQV9zcHJlYWRfYXJndW1lbnRfbXVzdF9laXRoZXJfaGF2ZV9hX3R1cGxlX3R5cGVfb3JfYmVfcGFzc2VkX3RvX2FfcmVzdF9wYXJhbWV0ZXIpO2Zvcih2YXIgdT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbWU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLE1lLCRlPTAsdHI9aTskZTx0ci5sZW5ndGg7JGUrKyl7dmFyIGRyPXRyWyRlXSxEcj1IbChkciksUXI9V2MoZHIpO0RyPHUmJih1PURyLE1lPWRyKSxoPU1hdGgubWF4KGgsUXIpLERyPHQubGVuZ3RoJiZEcj56JiYoej1EciksdC5sZW5ndGg8UXImJlFyPG1lJiYobWU9UXIpfXZhciBsaT1lLnNvbWUoaSxYbCksVGk9bGk/dTp1PGg/dStcIi1cIitoOnUsQ2k9IWxpJiZUaT09PTEmJnQubGVuZ3RoPT09MCYmZzcocik7aWYoQ2kmJmUuaXNJbkpTRmlsZShyKSlyZXR1cm4gQ3kocixlLkRpYWdub3N0aWNzLkV4cGVjdGVkXzFfYXJndW1lbnRfYnV0X2dvdF8wX25ld19Qcm9taXNlX25lZWRzX2FfSlNEb2NfaGludF90b19wcm9kdWNlX2FfcmVzb2x2ZV90aGF0X2Nhbl9iZV9jYWxsZWRfd2l0aG91dF9hcmd1bWVudHMpO3ZhciAkaT1saT9lLkRpYWdub3N0aWNzLkV4cGVjdGVkX2F0X2xlYXN0XzBfYXJndW1lbnRzX2J1dF9nb3RfMTpDaT9lLkRpYWdub3N0aWNzLkV4cGVjdGVkXzBfYXJndW1lbnRzX2J1dF9nb3RfMV9EaWRfeW91X2ZvcmdldF90b19pbmNsdWRlX3ZvaWRfaW5feW91cl90eXBlX2FyZ3VtZW50X3RvX1Byb21pc2U6ZS5EaWFnbm9zdGljcy5FeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzE7aWYodTx0Lmxlbmd0aCYmdC5sZW5ndGg8aClyZXR1cm4gQ3kocixlLkRpYWdub3N0aWNzLk5vX292ZXJsb2FkX2V4cGVjdHNfMF9hcmd1bWVudHNfYnV0X292ZXJsb2Fkc19kb19leGlzdF90aGF0X2V4cGVjdF9laXRoZXJfMV9vcl8yX2FyZ3VtZW50cyx0Lmxlbmd0aCx6LG1lKTtpZih0Lmxlbmd0aDx1KXt2YXIgWmk9Q3kociwkaSxUaSx0Lmxlbmd0aCkscXQ9KG89TWU9PW51bGw/dm9pZCAwOk1lLmRlY2xhcmF0aW9uKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8ucGFyYW1ldGVyc1tNZS50aGlzUGFyYW1ldGVyP3QubGVuZ3RoKzE6dC5sZW5ndGhdO2lmKHF0KXt2YXIgTnQ9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShxdCxlLmlzQmluZGluZ1BhdHRlcm4ocXQubmFtZSk/ZS5EaWFnbm9zdGljcy5Bbl9hcmd1bWVudF9tYXRjaGluZ190aGlzX2JpbmRpbmdfcGF0dGVybl93YXNfbm90X3Byb3ZpZGVkOmUuaXNSZXN0UGFyYW1ldGVyKHF0KT9lLkRpYWdub3N0aWNzLkFyZ3VtZW50c19mb3JfdGhlX3Jlc3RfcGFyYW1ldGVyXzBfd2VyZV9ub3RfcHJvdmlkZWQ6ZS5EaWFnbm9zdGljcy5Bbl9hcmd1bWVudF9mb3JfMF93YXNfbm90X3Byb3ZpZGVkLHF0Lm5hbWU/ZS5pc0JpbmRpbmdQYXR0ZXJuKHF0Lm5hbWUpP3ZvaWQgMDplLmlkVGV4dChlLmdldEZpcnN0SWRlbnRpZmllcihxdC5uYW1lKSk6dC5sZW5ndGgpO3JldHVybiBlLmFkZFJlbGF0ZWRJbmZvKFppLE50KX1yZXR1cm4gWml9ZWxzZXt2YXIgUmE9ZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheSh0LnNsaWNlKGgpKSxjYT1lLmZpcnN0KFJhKS5wb3MsU249ZS5sYXN0KFJhKS5lbmQ7cmV0dXJuIFNuPT09Y2EmJlNuKyssZS5zZXRUZXh0UmFuZ2VQb3NFbmQoUmEsY2EsU24pLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVBcnJheShlLmdldFNvdXJjZUZpbGVPZk5vZGUociksUmEsJGksVGksdC5sZW5ndGgpfX1mdW5jdGlvbiBtNyhyLGksdCl7dmFyIG89dC5sZW5ndGg7aWYoaS5sZW5ndGg9PT0xKXt2YXIgcz1pWzBdLHU9VWwocy50eXBlUGFyYW1ldGVycyksaD1lLmxlbmd0aChzLnR5cGVQYXJhbWV0ZXJzKTtyZXR1cm4gZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUFycmF5KGUuZ2V0U291cmNlRmlsZU9mTm9kZShyKSx0LGUuRGlhZ25vc3RpY3MuRXhwZWN0ZWRfMF90eXBlX2FyZ3VtZW50c19idXRfZ290XzEsdTxoP3UrXCItXCIraDp1LG8pfWZvcih2YXIgej0tMS8wLG1lPTEvMCxNZT0wLCRlPWk7TWU8JGUubGVuZ3RoO01lKyspe3ZhciBzPSRlW01lXSx0cj1VbChzLnR5cGVQYXJhbWV0ZXJzKSxoPWUubGVuZ3RoKHMudHlwZVBhcmFtZXRlcnMpO3RyPm8/bWU9TWF0aC5taW4obWUsdHIpOmg8byYmKHo9TWF0aC5tYXgoeixoKSl9cmV0dXJuIHohPT0tMS8wJiZtZSE9PTEvMD9lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlQXJyYXkoZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLHQsZS5EaWFnbm9zdGljcy5Ob19vdmVybG9hZF9leHBlY3RzXzBfdHlwZV9hcmd1bWVudHNfYnV0X292ZXJsb2Fkc19kb19leGlzdF90aGF0X2V4cGVjdF9laXRoZXJfMV9vcl8yX3R5cGVfYXJndW1lbnRzLG8seixtZSk6ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUFycmF5KGUuZ2V0U291cmNlRmlsZU9mTm9kZShyKSx0LGUuRGlhZ25vc3RpY3MuRXhwZWN0ZWRfMF90eXBlX2FyZ3VtZW50c19idXRfZ290XzEsej09PS0xLzA/bWU6eixvKX1mdW5jdGlvbiBtbShyLGksdCxvLHMsdSl7dmFyIGg9ci5raW5kPT09MjEwLHo9ci5raW5kPT09MTY1LG1lPWUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQociksTWU9IXQsJGU7enx8KCRlPXIudHlwZUFyZ3VtZW50cywoaHx8bWV8fHIuZXhwcmVzc2lvbi5raW5kIT09MTA2KSYmZS5mb3JFYWNoKCRlLGlvKSk7dmFyIHRyPXR8fFtdO2lmKGw3KGksdHIscyksIXRyLmxlbmd0aClyZXR1cm4gTWUmJnJuLmFkZChDeShyLGUuRGlhZ25vc3RpY3MuQ2FsbF90YXJnZXRfZG9lc19ub3RfY29udGFpbl9hbnlfc2lnbmF0dXJlcykpLEdsKHIpO3ZhciBkcj1aYihyKSxEcj10ci5sZW5ndGg9PT0xJiYhdHJbMF0udHlwZVBhcmFtZXRlcnMsUXI9IXomJiFEciYmZS5zb21lKGRyLEp1KT80OjA7UXJ8PW8mMzI7dmFyIGxpLFRpLENpLCRpLFppPSEhKG8mMTYpJiZyLmtpbmQ9PT0yMDgmJnIuYXJndW1lbnRzLmhhc1RyYWlsaW5nQ29tbWE7aWYodHIubGVuZ3RoPjEmJigkaT1lYSh0cixPcixEcixaaSkpLCRpfHwoJGk9ZWEodHIsZHQsRHIsWmkpKSwkaSlyZXR1cm4gJGk7aWYoTWUpaWYobGkpaWYobGkubGVuZ3RoPT09MXx8bGkubGVuZ3RoPjMpe3ZhciBxdD1saVtsaS5sZW5ndGgtMV0sTnQ7bGkubGVuZ3RoPjMmJihOdD1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKE50LGUuRGlhZ25vc3RpY3MuVGhlX2xhc3Rfb3ZlcmxvYWRfZ2F2ZV90aGVfZm9sbG93aW5nX2Vycm9yKSxOdD1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKE50LGUuRGlhZ25vc3RpY3MuTm9fb3ZlcmxvYWRfbWF0Y2hlc190aGlzX2NhbGwpKTt2YXIgUmE9RXkocixkcixxdCxkdCwwLCEwLGZ1bmN0aW9uKCl7cmV0dXJuIE50fSk7aWYoUmEpZm9yKHZhciBjYT0wLFNuPVJhO2NhPFNuLmxlbmd0aDtjYSsrKXt2YXIgamE9U25bY2FdO3F0LmRlY2xhcmF0aW9uJiZsaS5sZW5ndGg+MyYmZS5hZGRSZWxhdGVkSW5mbyhqYSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHF0LmRlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuVGhlX2xhc3Rfb3ZlcmxvYWRfaXNfZGVjbGFyZWRfaGVyZSkpLEx0KHF0LGphKSxybi5hZGQoamEpfWVsc2UgZS5EZWJ1Zy5mYWlsKFwiTm8gZXJyb3IgZm9yIGxhc3Qgb3ZlcmxvYWQgc2lnbmF0dXJlXCIpfWVsc2V7Zm9yKHZhciBGbj1bXSx3bj0wLFRuPU51bWJlci5NQVhfVkFMVUUsRW89MCxsdD0wLGl0PWZ1bmN0aW9uKEt0KXt2YXIgJHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5PdmVybG9hZF8wX29mXzFfMl9nYXZlX3RoZV9mb2xsb3dpbmdfZXJyb3IsbHQrMSx0ci5sZW5ndGgsTWwoS3QpKX0sVWE9RXkocixkcixLdCxkdCwwLCEwLCR0KTtVYT8oVWEubGVuZ3RoPD1UbiYmKFRuPVVhLmxlbmd0aCxFbz1sdCksd249TWF0aC5tYXgod24sVWEubGVuZ3RoKSxGbi5wdXNoKFVhKSk6ZS5EZWJ1Zy5mYWlsKFwiTm8gZXJyb3IgZm9yIDMgb3IgZmV3ZXIgb3ZlcmxvYWQgc2lnbmF0dXJlc1wiKSxsdCsrfSxZdD0wLElhPWxpO1l0PElhLmxlbmd0aDtZdCsrKXt2YXIgUXQ9SWFbWXRdO2l0KFF0KX12YXIgS2E9d24+MT9GbltFb106ZS5mbGF0dGVuKEZuKTtlLkRlYnVnLmFzc2VydChLYS5sZW5ndGg+MCxcIk5vIGVycm9ycyByZXBvcnRlZCBmb3IgMyBvciBmZXdlciBvdmVybG9hZCBzaWduYXR1cmVzXCIpO3ZhciBjbj1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKGUubWFwKEthLGUuY3JlYXRlRGlhZ25vc3RpY01lc3NhZ2VDaGFpbkZyb21EaWFnbm9zdGljKSxlLkRpYWdub3N0aWNzLk5vX292ZXJsb2FkX21hdGNoZXNfdGhpc19jYWxsKSxVbj1WZShbXSxlLmZsYXRNYXAoS2EsZnVuY3Rpb24oS3Qpe3JldHVybiBLdC5yZWxhdGVkSW5mb3JtYXRpb259KSwhMCksb2E9dm9pZCAwO2lmKGUuZXZlcnkoS2EsZnVuY3Rpb24oS3Qpe3JldHVybiBLdC5zdGFydD09PUthWzBdLnN0YXJ0JiZLdC5sZW5ndGg9PT1LYVswXS5sZW5ndGgmJkt0LmZpbGU9PT1LYVswXS5maWxlfSkpe3ZhciBNbj1LYVswXSxMbj1Nbi5maWxlLGNpPU1uLnN0YXJ0LEZyPU1uLmxlbmd0aDtvYT17ZmlsZTpMbixzdGFydDpjaSxsZW5ndGg6RnIsY29kZTpjbi5jb2RlLGNhdGVnb3J5OmNuLmNhdGVnb3J5LG1lc3NhZ2VUZXh0OmNuLHJlbGF0ZWRJbmZvcm1hdGlvbjpVbn19ZWxzZSBvYT1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlRnJvbU1lc3NhZ2VDaGFpbihyLGNuLFVuKTtMdChsaVswXSxvYSkscm4uYWRkKG9hKX1lbHNlIGlmKFRpKXJuLmFkZChkayhyLFtUaV0sZHIpKTtlbHNlIGlmKENpKSRiKENpLHIudHlwZUFyZ3VtZW50cywhMCx1KTtlbHNle3ZhciBqdD1lLmZpbHRlcihpLGZ1bmN0aW9uKEt0KXtyZXR1cm4gWGIoS3QsJGUpfSk7anQubGVuZ3RoPT09MD9ybi5hZGQobTcocixpLCRlKSk6ej91JiZybi5hZGQoQ3kocix1KSk6cm4uYWRkKGRrKHIsanQsZHIpKX1yZXR1cm4gdjcocix0cixkciwhIXQsbyk7ZnVuY3Rpb24gTHQoS3QsJHQpe3ZhciBVYSxZcixOaT1saSxIaT1UaSxfdD1DaSxndD0oKFlyPShVYT1LdC5kZWNsYXJhdGlvbik9PT1udWxsfHxVYT09PXZvaWQgMD92b2lkIDA6VWEuc3ltYm9sKT09PW51bGx8fFlyPT09dm9pZCAwP3ZvaWQgMDpZci5kZWNsYXJhdGlvbnMpfHxlLmVtcHR5QXJyYXksVnQ9Z3QubGVuZ3RoPjEsRmE9VnQ/ZS5maW5kKGd0LGZ1bmN0aW9uKEdhKXtyZXR1cm4gZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKEdhKSYmZS5ub2RlSXNQcmVzZW50KEdhLmJvZHkpfSk6dm9pZCAwO2lmKEZhKXt2YXIgb249eWwoRmEpLHpuPSFvbi50eXBlUGFyYW1ldGVycztlYShbb25dLGR0LHpuKSYmZS5hZGRSZWxhdGVkSW5mbygkdCxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKEZhLGUuRGlhZ25vc3RpY3MuVGhlX2NhbGxfd291bGRfaGF2ZV9zdWNjZWVkZWRfYWdhaW5zdF90aGlzX2ltcGxlbWVudGF0aW9uX2J1dF9pbXBsZW1lbnRhdGlvbl9zaWduYXR1cmVzX29mX292ZXJsb2Fkc19hcmVfbm90X2V4dGVybmFsbHlfdmlzaWJsZSkpfWxpPU5pLFRpPUhpLENpPV90fWZ1bmN0aW9uIGVhKEt0LCR0LFVhLFlyKXtpZihZcj09PXZvaWQgMCYmKFlyPSExKSxsaT12b2lkIDAsVGk9dm9pZCAwLENpPXZvaWQgMCxVYSl7dmFyIE5pPUt0WzBdO2lmKGUuc29tZSgkZSl8fCFEMChyLGRyLE5pLFlyKSlyZXR1cm47aWYoRXkocixkcixOaSwkdCwwLCExLHZvaWQgMCkpe2xpPVtOaV07cmV0dXJufXJldHVybiBOaX1mb3IodmFyIEhpPTA7SGk8S3QubGVuZ3RoO0hpKyspe3ZhciBOaT1LdFtIaV07aWYoISghWGIoTmksJGUpfHwhRDAocixkcixOaSxZcikpKXt2YXIgX3Q9dm9pZCAwLGd0PXZvaWQgMDtpZihOaS50eXBlUGFyYW1ldGVycyl7dmFyIFZ0PXZvaWQgMDtpZihlLnNvbWUoJGUpKXtpZihWdD0kYihOaSwkZSwhMSksIVZ0KXtDaT1OaTtjb250aW51ZX19ZWxzZSBndD11dihOaS50eXBlUGFyYW1ldGVycyxOaSxlLmlzSW5KU0ZpbGUocik/MjowKSxWdD1RYihyLE5pLGRyLFFyfDgsZ3QpLFFyfD1ndC5mbGFncyY0Pzg6MDtpZihfdD1YbShOaSxWdCxlLmlzSW5KU0ZpbGUoTmkuZGVjbGFyYXRpb24pLGd0JiZndC5pbmZlcnJlZFR5cGVQYXJhbWV0ZXJzKSx5dihOaSkmJiFEMChyLGRyLF90LFlyKSl7VGk9X3Q7Y29udGludWV9fWVsc2UgX3Q9Tmk7aWYoRXkocixkcixfdCwkdCxRciwhMSx2b2lkIDApKXsobGl8fChsaT1bXSkpLnB1c2goX3QpO2NvbnRpbnVlfWlmKFFyKXtpZihRcj1vJjMyLGd0KXt2YXIgVnQ9UWIocixOaSxkcixRcixndCk7aWYoX3Q9WG0oTmksVnQsZS5pc0luSlNGaWxlKE5pLmRlY2xhcmF0aW9uKSxndCYmZ3QuaW5mZXJyZWRUeXBlUGFyYW1ldGVycykseXYoTmkpJiYhRDAocixkcixfdCxZcikpe1RpPV90O2NvbnRpbnVlfX1pZihFeShyLGRyLF90LCR0LFFyLCExLHZvaWQgMCkpeyhsaXx8KGxpPVtdKSkucHVzaChfdCk7Y29udGludWV9fXJldHVybiBLdFtIaV09X3QsX3R9fX19ZnVuY3Rpb24gdjcocixpLHQsbyxzKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoaS5sZW5ndGg+MCkseG0ociksb3x8aS5sZW5ndGg9PT0xfHxpLnNvbWUoZnVuY3Rpb24odSl7cmV0dXJuISF1LnR5cGVQYXJhbWV0ZXJzfSk/RDcocixpLHQscyk6eTcoaSl9ZnVuY3Rpb24geTcocil7dmFyIGk9ZS5tYXBEZWZpbmVkKHIsZnVuY3Rpb24oZHIpe3JldHVybiBkci50aGlzUGFyYW1ldGVyfSksdDtpLmxlbmd0aCYmKHQ9Z2soaSxpLm1hcChtdikpKTtmb3IodmFyIG89ZS5taW5BbmRNYXgocixoNykscz1vLm1pbix1PW8ubWF4LGg9W10sej1mdW5jdGlvbihkcil7dmFyIERyPWUubWFwRGVmaW5lZChyLGZ1bmN0aW9uKFFyKXtyZXR1cm4gSChRcik/ZHI8UXIucGFyYW1ldGVycy5sZW5ndGgtMT9Rci5wYXJhbWV0ZXJzW2RyXTplLmxhc3QoUXIucGFyYW1ldGVycyk6ZHI8UXIucGFyYW1ldGVycy5sZW5ndGg/UXIucGFyYW1ldGVyc1tkcl06dm9pZCAwfSk7ZS5EZWJ1Zy5hc3NlcnQoRHIubGVuZ3RoIT09MCksaC5wdXNoKGdrKERyLGUubWFwRGVmaW5lZChyLGZ1bmN0aW9uKFFyKXtyZXR1cm4gTGQoUXIsZHIpfSkpKX0sbWU9MDttZTx1O21lKyspeihtZSk7dmFyIE1lPWUubWFwRGVmaW5lZChyLGZ1bmN0aW9uKGRyKXtyZXR1cm4gSChkcik/ZS5sYXN0KGRyLnBhcmFtZXRlcnMpOnZvaWQgMH0pLCRlPTA7aWYoTWUubGVuZ3RoIT09MCl7dmFyIHRyPVpzKFBhKGUubWFwRGVmaW5lZChyLGl4KSwyKSk7aC5wdXNoKG1rKE1lLHRyKSksJGV8PTF9cmV0dXJuIHIuc29tZShJKSYmKCRlfD0yKSxGdShyWzBdLmRlY2xhcmF0aW9uLHZvaWQgMCx0LGgsRG8oci5tYXAoeW8pKSx2b2lkIDAscywkZSl9ZnVuY3Rpb24gaDcocil7dmFyIGk9ci5wYXJhbWV0ZXJzLmxlbmd0aDtyZXR1cm4gSChyKT9pLTE6aX1mdW5jdGlvbiBnayhyLGkpe3JldHVybiBtayhyLFBhKGksMikpfWZ1bmN0aW9uIG1rKHIsaSl7cmV0dXJuIGVnKGUuZmlyc3QociksaSl9ZnVuY3Rpb24gRDcocixpLHQsbyl7dmFyIHM9VDcoaSxzaT09PXZvaWQgMD90Lmxlbmd0aDpzaSksdT1pW3NdLGg9dS50eXBlUGFyYW1ldGVycztpZighaClyZXR1cm4gdTt2YXIgej1hayhyKT9yLnR5cGVBcmd1bWVudHM6dm9pZCAwLG1lPXo/bWgodSxiNyh6LGgsZS5pc0luSlNGaWxlKHIpKSk6UzcocixoLHUsdCxvKTtyZXR1cm4gaVtzXT1tZSxtZX1mdW5jdGlvbiBiNyhyLGksdCl7Zm9yKHZhciBvPXIubWFwKEJkKTtvLmxlbmd0aD5pLmxlbmd0aDspby5wb3AoKTtmb3IoO28ubGVuZ3RoPGkubGVuZ3RoOylvLnB1c2goRF8oaVtvLmxlbmd0aF0pfHxUYyhpW28ubGVuZ3RoXSl8fGZiKHQpKTtyZXR1cm4gb31mdW5jdGlvbiBTNyhyLGksdCxvLHMpe3ZhciB1PXV2KGksdCxlLmlzSW5KU0ZpbGUocik/MjowKSxoPVFiKHIsdCxvLHN8NHw4LHUpO3JldHVybiBtaCh0LGgpfWZ1bmN0aW9uIFQ3KHIsaSl7Zm9yKHZhciB0PS0xLG89LTEscz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgdT1yW3NdLGg9V2ModSk7aWYoWGwodSl8fGg+PWkpcmV0dXJuIHM7aD5vJiYobz1oLHQ9cyl9cmV0dXJuIHR9ZnVuY3Rpb24geDcocixpLHQpe2lmKHIuZXhwcmVzc2lvbi5raW5kPT09MTA2KXt2YXIgbz1TYihyLmV4cHJlc3Npb24pO2lmKHRhKG8pKXtmb3IodmFyIHM9MCx1PXIuYXJndW1lbnRzO3M8dS5sZW5ndGg7cysrKXt2YXIgaD11W3NdO3luKGgpfXJldHVybiBFbn1pZighbm4obykpe3ZhciB6PWUuZ2V0RWZmZWN0aXZlQmFzZVR5cGVOb2RlKGUuZ2V0Q29udGFpbmluZ0NsYXNzKHIpKTtpZih6KXt2YXIgbWU9WGcobyx6LnR5cGVBcmd1bWVudHMseik7cmV0dXJuIG1tKHIsbWUsaSx0LDApfX1yZXR1cm4gRmcocil9dmFyIE1lLCRlPXluKHIuZXhwcmVzc2lvbik7aWYoZS5pc0NhbGxDaGFpbihyKSl7dmFyIHRyPWN2KCRlLHIuZXhwcmVzc2lvbik7TWU9dHI9PT0kZT8wOmUuaXNPdXRlcm1vc3RPcHRpb25hbENoYWluKHIpPzE2OjgsJGU9dHJ9ZWxzZSBNZT0wO2lmKCRlPVdDKCRlLHIuZXhwcmVzc2lvbixXNSksJGU9PT1CdClyZXR1cm4gQ287dmFyIGRyPSRzKCRlKTtpZihubihkcikpcmV0dXJuIEdsKHIpO3ZhciBEcj1vdChkciwwKSxRcj1vdChkciwxKS5sZW5ndGg7aWYoYjAoJGUsZHIsRHIubGVuZ3RoLFFyKSlyZXR1cm4hbm4oJGUpJiZyLnR5cGVBcmd1bWVudHMmJlhyKHIsZS5EaWFnbm9zdGljcy5VbnR5cGVkX2Z1bmN0aW9uX2NhbGxzX21heV9ub3RfYWNjZXB0X3R5cGVfYXJndW1lbnRzKSxGZyhyKTtpZighRHIubGVuZ3RoKXtpZihRcilYcihyLGUuRGlhZ25vc3RpY3MuVmFsdWVfb2ZfdHlwZV8wX2lzX25vdF9jYWxsYWJsZV9EaWRfeW91X21lYW5fdG9faW5jbHVkZV9uZXcsT3QoJGUpKTtlbHNle3ZhciBsaT12b2lkIDA7aWYoci5hcmd1bWVudHMubGVuZ3RoPT09MSl7dmFyIFRpPWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKS50ZXh0O2UuaXNMaW5lQnJlYWsoVGkuY2hhckNvZGVBdChlLnNraXBUcml2aWEoVGksci5leHByZXNzaW9uLmVuZCwhMCktMSkpJiYobGk9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLmV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5BcmVfeW91X21pc3NpbmdfYV9zZW1pY29sb24pKX1yUyhyLmV4cHJlc3Npb24sZHIsMCxsaSl9cmV0dXJuIEdsKHIpfXJldHVybiB0JjgmJiFyLnR5cGVBcmd1bWVudHMmJkRyLnNvbWUoRTcpPyhYayhyLHQpLHRvKTpEci5zb21lKGZ1bmN0aW9uKENpKXtyZXR1cm4gZS5pc0luSlNGaWxlKENpLmRlY2xhcmF0aW9uKSYmISFlLmdldEpTRG9jQ2xhc3NUYWcoQ2kuZGVjbGFyYXRpb24pfSk/KFhyKHIsZS5EaWFnbm9zdGljcy5WYWx1ZV9vZl90eXBlXzBfaXNfbm90X2NhbGxhYmxlX0RpZF95b3VfbWVhbl90b19pbmNsdWRlX25ldyxPdCgkZSkpLEdsKHIpKTptbShyLERyLGksdCxNZSl9ZnVuY3Rpb24gRTcocil7cmV0dXJuISEoci50eXBlUGFyYW1ldGVycyYmSlMoeW8ocikpKX1mdW5jdGlvbiBiMChyLGksdCxvKXtyZXR1cm4gdGEocil8fHRhKGkpJiYhIShyLmZsYWdzJjI2MjE0NCl8fCF0JiYhbyYmIShpLmZsYWdzJjEwNDg1NzYpJiYhKGJ1KGkpLmZsYWdzJjEzMTA3MikmJmFvKHIsYnIpfWZ1bmN0aW9uIEM3KHIsaSx0KXtpZihyLmFyZ3VtZW50cyYmQWU8MSl7dmFyIG89aDAoci5hcmd1bWVudHMpO28+PTAmJlhyKHIuYXJndW1lbnRzW29dLGUuRGlhZ25vc3RpY3MuU3ByZWFkX29wZXJhdG9yX2luX25ld19leHByZXNzaW9uc19pc19vbmx5X2F2YWlsYWJsZV93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0XzVfYW5kX2hpZ2hlcil9dmFyIHM9Z20oci5leHByZXNzaW9uKTtpZihzPT09QnQpcmV0dXJuIENvO2lmKHM9JHMocyksbm4ocykpcmV0dXJuIEdsKHIpO2lmKHRhKHMpKXJldHVybiByLnR5cGVBcmd1bWVudHMmJlhyKHIsZS5EaWFnbm9zdGljcy5VbnR5cGVkX2Z1bmN0aW9uX2NhbGxzX21heV9ub3RfYWNjZXB0X3R5cGVfYXJndW1lbnRzKSxGZyhyKTt2YXIgdT1vdChzLDEpO2lmKHUubGVuZ3RoKXtpZighazcocix1WzBdKSlyZXR1cm4gR2wocik7aWYodmsodSxmdW5jdGlvbihNZSl7cmV0dXJuISEoTWUuZmxhZ3MmNCl9KSlyZXR1cm4gWHIocixlLkRpYWdub3N0aWNzLkNhbm5vdF9jcmVhdGVfYW5faW5zdGFuY2Vfb2ZfYW5fYWJzdHJhY3RfY2xhc3MpLEdsKHIpO3ZhciBoPXMuc3ltYm9sJiZlLmdldENsYXNzTGlrZURlY2xhcmF0aW9uT2ZTeW1ib2wocy5zeW1ib2wpO3JldHVybiBoJiZlLmhhc1N5bnRhY3RpY01vZGlmaWVyKGgsMTI4KT8oWHIocixlLkRpYWdub3N0aWNzLkNhbm5vdF9jcmVhdGVfYW5faW5zdGFuY2Vfb2ZfYW5fYWJzdHJhY3RfY2xhc3MpLEdsKHIpKTptbShyLHUsaSx0LDApfXZhciB6PW90KHMsMCk7aWYoei5sZW5ndGgpe3ZhciBtZT1tbShyLHosaSx0LDApO3JldHVybiBufHwobWUuZGVjbGFyYXRpb24mJiFTbChtZS5kZWNsYXJhdGlvbikmJnlvKG1lKSE9PUZpJiZYcihyLGUuRGlhZ25vc3RpY3MuT25seV9hX3ZvaWRfZnVuY3Rpb25fY2FuX2JlX2NhbGxlZF93aXRoX3RoZV9uZXdfa2V5d29yZCksVF8obWUpPT09RmkmJlhyKHIsZS5EaWFnbm9zdGljcy5BX2Z1bmN0aW9uX3RoYXRfaXNfY2FsbGVkX3dpdGhfdGhlX25ld19rZXl3b3JkX2Nhbm5vdF9oYXZlX2FfdGhpc190eXBlX3RoYXRfaXNfdm9pZCkpLG1lfXJldHVybiByUyhyLmV4cHJlc3Npb24scywxKSxHbChyKX1mdW5jdGlvbiB2ayhyLGkpe3JldHVybiBlLmlzQXJyYXkocik/ZS5zb21lKHIsZnVuY3Rpb24odCl7cmV0dXJuIHZrKHQsaSl9KTpyLmNvbXBvc2l0ZUtpbmQ9PT0xMDQ4NTc2P2Uuc29tZShyLmNvbXBvc2l0ZVNpZ25hdHVyZXMsaSk6aShyKX1mdW5jdGlvbiBlUyhyLGkpe3ZhciB0PVFjKGkpO2lmKCFlLmxlbmd0aCh0KSlyZXR1cm4hMTt2YXIgbz10WzBdO2lmKG8uZmxhZ3MmMjA5NzE1Mil7Zm9yKHZhciBzPW8udHlwZXMsdT1XdihzKSxoPTAsej0wLG1lPW8udHlwZXM7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel07aWYoIXVbaF0mJmUuZ2V0T2JqZWN0RmxhZ3MoTWUpJjMmJihNZS5zeW1ib2w9PT1yfHxlUyhyLE1lKSkpcmV0dXJuITA7aCsrfXJldHVybiExfXJldHVybiBvLnN5bWJvbD09PXI/ITA6ZVMocixvKX1mdW5jdGlvbiBrNyhyLGkpe2lmKCFpfHwhaS5kZWNsYXJhdGlvbilyZXR1cm4hMDt2YXIgdD1pLmRlY2xhcmF0aW9uLG89ZS5nZXRTZWxlY3RlZEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3ModCwyNCk7aWYoIW98fHQua2luZCE9PTE3MSlyZXR1cm4hMDt2YXIgcz1lLmdldENsYXNzTGlrZURlY2xhcmF0aW9uT2ZTeW1ib2wodC5wYXJlbnQuc3ltYm9sKSx1PWdvKHQucGFyZW50LnN5bWJvbCk7aWYoIU1TKHIscykpe3ZhciBoPWUuZ2V0Q29udGFpbmluZ0NsYXNzKHIpO2lmKGgmJm8mMTYpe3ZhciB6PUJkKGgpO2lmKGVTKHQucGFyZW50LnN5bWJvbCx6KSlyZXR1cm4hMH1yZXR1cm4gbyY4JiZYcihyLGUuRGlhZ25vc3RpY3MuQ29uc3RydWN0b3Jfb2ZfY2xhc3NfMF9pc19wcml2YXRlX2FuZF9vbmx5X2FjY2Vzc2libGVfd2l0aGluX3RoZV9jbGFzc19kZWNsYXJhdGlvbixPdCh1KSksbyYxNiYmWHIocixlLkRpYWdub3N0aWNzLkNvbnN0cnVjdG9yX29mX2NsYXNzXzBfaXNfcHJvdGVjdGVkX2FuZF9vbmx5X2FjY2Vzc2libGVfd2l0aGluX3RoZV9jbGFzc19kZWNsYXJhdGlvbixPdCh1KSksITF9cmV0dXJuITB9ZnVuY3Rpb24geWsocixpLHQpe3ZhciBvLHM9dD09PTAsdT1hZyhpKSxoPXUmJm90KHUsdCkubGVuZ3RoPjA7aWYoaS5mbGFncyYxMDQ4NTc2KXtmb3IodmFyIHo9aS50eXBlcyxtZT0hMSxNZT0wLCRlPXo7TWU8JGUubGVuZ3RoO01lKyspe3ZhciB0cj0kZVtNZV0sZHI9b3QodHIsdCk7aWYoZHIubGVuZ3RoIT09MCl7aWYobWU9ITAsbylicmVha31lbHNlIGlmKG98fChvPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMobyxzP2UuRGlhZ25vc3RpY3MuVHlwZV8wX2hhc19ub19jYWxsX3NpZ25hdHVyZXM6ZS5EaWFnbm9zdGljcy5UeXBlXzBfaGFzX25vX2NvbnN0cnVjdF9zaWduYXR1cmVzLE90KHRyKSksbz1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKG8scz9lLkRpYWdub3N0aWNzLk5vdF9hbGxfY29uc3RpdHVlbnRzX29mX3R5cGVfMF9hcmVfY2FsbGFibGU6ZS5EaWFnbm9zdGljcy5Ob3RfYWxsX2NvbnN0aXR1ZW50c19vZl90eXBlXzBfYXJlX2NvbnN0cnVjdGFibGUsT3QoaSkpKSxtZSlicmVha31tZXx8KG89ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAscz9lLkRpYWdub3N0aWNzLk5vX2NvbnN0aXR1ZW50X29mX3R5cGVfMF9pc19jYWxsYWJsZTplLkRpYWdub3N0aWNzLk5vX2NvbnN0aXR1ZW50X29mX3R5cGVfMF9pc19jb25zdHJ1Y3RhYmxlLE90KGkpKSksb3x8KG89ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyhvLHM/ZS5EaWFnbm9zdGljcy5FYWNoX21lbWJlcl9vZl90aGVfdW5pb25fdHlwZV8wX2hhc19zaWduYXR1cmVzX2J1dF9ub25lX29mX3Rob3NlX3NpZ25hdHVyZXNfYXJlX2NvbXBhdGlibGVfd2l0aF9lYWNoX290aGVyOmUuRGlhZ25vc3RpY3MuRWFjaF9tZW1iZXJfb2ZfdGhlX3VuaW9uX3R5cGVfMF9oYXNfY29uc3RydWN0X3NpZ25hdHVyZXNfYnV0X25vbmVfb2ZfdGhvc2Vfc2lnbmF0dXJlc19hcmVfY29tcGF0aWJsZV93aXRoX2VhY2hfb3RoZXIsT3QoaSkpKX1lbHNlIG89ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyhvLHM/ZS5EaWFnbm9zdGljcy5UeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlczplLkRpYWdub3N0aWNzLlR5cGVfMF9oYXNfbm9fY29uc3RydWN0X3NpZ25hdHVyZXMsT3QoaSkpO3ZhciBEcj1zP2UuRGlhZ25vc3RpY3MuVGhpc19leHByZXNzaW9uX2lzX25vdF9jYWxsYWJsZTplLkRpYWdub3N0aWNzLlRoaXNfZXhwcmVzc2lvbl9pc19ub3RfY29uc3RydWN0YWJsZTtpZihlLmlzQ2FsbEV4cHJlc3Npb24oci5wYXJlbnQpJiZyLnBhcmVudC5hcmd1bWVudHMubGVuZ3RoPT09MCl7dmFyIFFyPXZhKHIpLnJlc29sdmVkU3ltYm9sO1FyJiZRci5mbGFncyYzMjc2OCYmKERyPWUuRGlhZ25vc3RpY3MuVGhpc19leHByZXNzaW9uX2lzX25vdF9jYWxsYWJsZV9iZWNhdXNlX2l0X2lzX2FfZ2V0X2FjY2Vzc29yX0RpZF95b3VfbWVhbl90b191c2VfaXRfd2l0aG91dCl9cmV0dXJue21lc3NhZ2VDaGFpbjplLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKG8sRHIpLHJlbGF0ZWRNZXNzYWdlOmg/ZS5EaWFnbm9zdGljcy5EaWRfeW91X2ZvcmdldF90b191c2VfYXdhaXQ6dm9pZCAwfX1mdW5jdGlvbiByUyhyLGksdCxvKXt2YXIgcz15ayhyLGksdCksdT1zLm1lc3NhZ2VDaGFpbixoPXMucmVsYXRlZE1lc3NhZ2Usej1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlRnJvbU1lc3NhZ2VDaGFpbihyLHUpO2lmKGgmJmUuYWRkUmVsYXRlZEluZm8oeixlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIsaCkpLGUuaXNDYWxsRXhwcmVzc2lvbihyLnBhcmVudCkpe3ZhciBtZT1wayhyLnBhcmVudCwhMCksTWU9bWUuc3RhcnQsJGU9bWUubGVuZ3RoO3ouc3RhcnQ9TWUsei5sZW5ndGg9JGV9cm4uYWRkKHopLGhrKGksdCxvP2UuYWRkUmVsYXRlZEluZm8oeixvKTp6KX1mdW5jdGlvbiBoayhyLGksdCl7aWYoISFyLnN5bWJvbCl7dmFyIG89QWEoci5zeW1ib2wpLm9yaWdpbmF0aW5nSW1wb3J0O2lmKG8mJiFlLmlzSW1wb3J0Q2FsbChvKSl7dmFyIHM9b3QoSnQoQWEoci5zeW1ib2wpLnRhcmdldCksaSk7aWYoIXN8fCFzLmxlbmd0aClyZXR1cm47ZS5hZGRSZWxhdGVkSW5mbyh0LGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUobyxlLkRpYWdub3N0aWNzLlR5cGVfb3JpZ2luYXRlc19hdF90aGlzX2ltcG9ydF9BX25hbWVzcGFjZV9zdHlsZV9pbXBvcnRfY2Fubm90X2JlX2NhbGxlZF9vcl9jb25zdHJ1Y3RlZF9hbmRfd2lsbF9jYXVzZV9hX2ZhaWx1cmVfYXRfcnVudGltZV9Db25zaWRlcl91c2luZ19hX2RlZmF1bHRfaW1wb3J0X29yX2ltcG9ydF9yZXF1aXJlX2hlcmVfaW5zdGVhZCkpfX19ZnVuY3Rpb24gQTcocixpLHQpe3ZhciBvPXluKHIudGFnKSxzPSRzKG8pO2lmKG5uKHMpKXJldHVybiBHbChyKTt2YXIgdT1vdChzLDApLGg9b3QocywxKS5sZW5ndGg7aWYoYjAobyxzLHUubGVuZ3RoLGgpKXJldHVybiBGZyhyKTtpZighdS5sZW5ndGgpe2lmKGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKHIucGFyZW50KSl7dmFyIHo9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLnRhZyxlLkRpYWdub3N0aWNzLkl0X2lzX2xpa2VseV90aGF0X3lvdV9hcmVfbWlzc2luZ19hX2NvbW1hX3RvX3NlcGFyYXRlX3RoZXNlX3R3b190ZW1wbGF0ZV9leHByZXNzaW9uc19UaGV5X2Zvcm1fYV90YWdnZWRfdGVtcGxhdGVfZXhwcmVzc2lvbl93aGljaF9jYW5ub3RfYmVfaW52b2tlZCk7cmV0dXJuIHJuLmFkZCh6KSxHbChyKX1yZXR1cm4gclMoci50YWcscywwKSxHbChyKX1yZXR1cm4gbW0ocix1LGksdCwwKX1mdW5jdGlvbiBONyhyKXtzd2l0Y2goci5wYXJlbnQua2luZCl7Y2FzZSAyNTc6Y2FzZSAyMjY6cmV0dXJuIGUuRGlhZ25vc3RpY3MuVW5hYmxlX3RvX3Jlc29sdmVfc2lnbmF0dXJlX29mX2NsYXNzX2RlY29yYXRvcl93aGVuX2NhbGxlZF9hc19hbl9leHByZXNzaW9uO2Nhc2UgMTY0OnJldHVybiBlLkRpYWdub3N0aWNzLlVuYWJsZV90b19yZXNvbHZlX3NpZ25hdHVyZV9vZl9wYXJhbWV0ZXJfZGVjb3JhdG9yX3doZW5fY2FsbGVkX2FzX2FuX2V4cHJlc3Npb247Y2FzZSAxNjc6cmV0dXJuIGUuRGlhZ25vc3RpY3MuVW5hYmxlX3RvX3Jlc29sdmVfc2lnbmF0dXJlX29mX3Byb3BlcnR5X2RlY29yYXRvcl93aGVuX2NhbGxlZF9hc19hbl9leHByZXNzaW9uO2Nhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOnJldHVybiBlLkRpYWdub3N0aWNzLlVuYWJsZV90b19yZXNvbHZlX3NpZ25hdHVyZV9vZl9tZXRob2RfZGVjb3JhdG9yX3doZW5fY2FsbGVkX2FzX2FuX2V4cHJlc3Npb247ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKCl9fWZ1bmN0aW9uIFA3KHIsaSx0KXt2YXIgbz15bihyLmV4cHJlc3Npb24pLHM9JHMobyk7aWYobm4ocykpcmV0dXJuIEdsKHIpO3ZhciB1PW90KHMsMCksaD1vdChzLDEpLmxlbmd0aDtpZihiMChvLHMsdS5sZW5ndGgsaCkpcmV0dXJuIEZnKHIpO2lmKHc3KHIsdSkpe3ZhciB6PWUuZ2V0VGV4dE9mTm9kZShyLmV4cHJlc3Npb24sITEpO3JldHVybiBYcihyLGUuRGlhZ25vc3RpY3MuXzBfYWNjZXB0c190b29fZmV3X2FyZ3VtZW50c190b19iZV91c2VkX2FzX2FfZGVjb3JhdG9yX2hlcmVfRGlkX3lvdV9tZWFuX3RvX2NhbGxfaXRfZmlyc3RfYW5kX3dyaXRlXzAseiksR2wocil9dmFyIG1lPU43KHIpO2lmKCF1Lmxlbmd0aCl7dmFyIE1lPXlrKHIuZXhwcmVzc2lvbixzLDApLCRlPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMoTWUubWVzc2FnZUNoYWluLG1lKSx0cj1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlRnJvbU1lc3NhZ2VDaGFpbihyLmV4cHJlc3Npb24sJGUpO3JldHVybiBNZS5yZWxhdGVkTWVzc2FnZSYmZS5hZGRSZWxhdGVkSW5mbyh0cixlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIuZXhwcmVzc2lvbixNZS5yZWxhdGVkTWVzc2FnZSkpLHJuLmFkZCh0ciksaGsocywwLHRyKSxHbChyKX1yZXR1cm4gbW0ocix1LGksdCwwLG1lKX1mdW5jdGlvbiBTMChyLGkpe3ZhciB0PU9nKHIpLG89dCYmZGModCkscz1vJiZxcyhvLFUuRWxlbWVudCw3ODg5NjgpLHU9cyYmVXIuc3ltYm9sVG9FbnRpdHlOYW1lKHMsNzg4OTY4LHIpLGg9ZS5mYWN0b3J5LmNyZWF0ZUZ1bmN0aW9uVHlwZU5vZGUodm9pZCAwLFtlLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJwcm9wc1wiLHZvaWQgMCxVci50eXBlVG9UeXBlTm9kZShpLHIpKV0sdT9lLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUodSx2b2lkIDApOmUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKSksej1vbygxLFwicHJvcHNcIik7cmV0dXJuIHoudHlwZT1pLEZ1KGgsdm9pZCAwLHZvaWQgMCxbel0scz9nbyhzKTpQZSx2b2lkIDAsMSwwKX1mdW5jdGlvbiBJNyhyLGksdCl7aWYoZG0oci50YWdOYW1lKSl7dmFyIG89QkMocikscz1TMChyLG8pO3JldHVybiBvcChSZyhyLmF0dHJpYnV0ZXMsbDAocyxyKSx2b2lkIDAsMCksbyxyLnRhZ05hbWUsci5hdHRyaWJ1dGVzKSxlLmxlbmd0aChyLnR5cGVBcmd1bWVudHMpJiYoZS5mb3JFYWNoKHIudHlwZUFyZ3VtZW50cyxpbykscm4uYWRkKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVBcnJheShlLmdldFNvdXJjZUZpbGVPZk5vZGUociksci50eXBlQXJndW1lbnRzLGUuRGlhZ25vc3RpY3MuRXhwZWN0ZWRfMF90eXBlX2FyZ3VtZW50c19idXRfZ290XzEsMCxlLmxlbmd0aChyLnR5cGVBcmd1bWVudHMpKSkpLHN9dmFyIHU9eW4oci50YWdOYW1lKSxoPSRzKHUpO2lmKG5uKGgpKXJldHVybiBHbChyKTt2YXIgej1MQyh1LHIpO3JldHVybiBiMCh1LGgsei5sZW5ndGgsMCk/Rmcocik6ei5sZW5ndGg9PT0wPyhYcihyLnRhZ05hbWUsZS5EaWFnbm9zdGljcy5KU1hfZWxlbWVudF90eXBlXzBfZG9lc19ub3RfaGF2ZV9hbnlfY29uc3RydWN0X29yX2NhbGxfc2lnbmF0dXJlcyxlLmdldFRleHRPZk5vZGUoci50YWdOYW1lKSksR2wocikpOm1tKHIseixpLHQsMCl9ZnVuY3Rpb24gdzcocixpKXtyZXR1cm4gaS5sZW5ndGgmJmUuZXZlcnkoaSxmdW5jdGlvbih0KXtyZXR1cm4gdC5taW5Bcmd1bWVudENvdW50PT09MCYmIUgodCkmJnQucGFyYW1ldGVycy5sZW5ndGg8X2socix0KX0pfWZ1bmN0aW9uIE83KHIsaSx0KXtzd2l0Y2goci5raW5kKXtjYXNlIDIwODpyZXR1cm4geDcocixpLHQpO2Nhc2UgMjA5OnJldHVybiBDNyhyLGksdCk7Y2FzZSAyMTA6cmV0dXJuIEE3KHIsaSx0KTtjYXNlIDE2NTpyZXR1cm4gUDcocixpLHQpO2Nhc2UgMjgwOmNhc2UgMjc5OnJldHVybiBJNyhyLGksdCl9dGhyb3cgZS5EZWJ1Zy5hc3NlcnROZXZlcihyLFwiQnJhbmNoIGluICdyZXNvbHZlU2lnbmF0dXJlJyBzaG91bGQgYmUgdW5yZWFjaGFibGUuXCIpfWZ1bmN0aW9uIE1nKHIsaSx0KXt2YXIgbz12YShyKSxzPW8ucmVzb2x2ZWRTaWduYXR1cmU7aWYocyYmcyE9PXRvJiYhaSlyZXR1cm4gcztvLnJlc29sdmVkU2lnbmF0dXJlPXRvO3ZhciB1PU83KHIsaSx0fHwwKTtyZXR1cm4gdSE9PXRvJiYoby5yZXNvbHZlZFNpZ25hdHVyZT1rbz09PUFvP3U6cyksdX1mdW5jdGlvbiBTbChyKXt2YXIgaTtpZighcnx8IWUuaXNJbkpTRmlsZShyKSlyZXR1cm4hMTt2YXIgdD1lLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihyKXx8ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihyKT9yOmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHIpJiZyLmluaXRpYWxpemVyJiZlLmlzRnVuY3Rpb25FeHByZXNzaW9uKHIuaW5pdGlhbGl6ZXIpP3IuaW5pdGlhbGl6ZXI6dm9pZCAwO2lmKHQpe2lmKGUuZ2V0SlNEb2NDbGFzc1RhZyhyKSlyZXR1cm4hMDt2YXIgbz1FdCh0KTtyZXR1cm4hISghKChpPW89PW51bGw/dm9pZCAwOm8ubWVtYmVycyk9PT1udWxsfHxpPT09dm9pZCAwKSYmaS5zaXplKX1yZXR1cm4hMX1mdW5jdGlvbiBpUyhyLGkpe3ZhciB0LG87aWYoaSl7dmFyIHM9QWEoaSk7aWYoIXMuaW5mZXJyZWRDbGFzc1N5bWJvbHx8IXMuaW5mZXJyZWRDbGFzc1N5bWJvbC5oYXMoeShyKSkpe3ZhciB1PWUuaXNUcmFuc2llbnRTeW1ib2wocik/cjpZbChyKTtyZXR1cm4gdS5leHBvcnRzPXUuZXhwb3J0c3x8ZS5jcmVhdGVTeW1ib2xUYWJsZSgpLHUubWVtYmVycz11Lm1lbWJlcnN8fGUuY3JlYXRlU3ltYm9sVGFibGUoKSx1LmZsYWdzfD1pLmZsYWdzJjMyLCEoKHQ9aS5leHBvcnRzKT09PW51bGx8fHQ9PT12b2lkIDApJiZ0LnNpemUmJmd1KHUuZXhwb3J0cyxpLmV4cG9ydHMpLCEoKG89aS5tZW1iZXJzKT09PW51bGx8fG89PT12b2lkIDApJiZvLnNpemUmJmd1KHUubWVtYmVycyxpLm1lbWJlcnMpLChzLmluZmVycmVkQ2xhc3NTeW1ib2x8fChzLmluZmVycmVkQ2xhc3NTeW1ib2w9bmV3IGUuTWFwKSkuc2V0KHkodSksdSksdX1yZXR1cm4gcy5pbmZlcnJlZENsYXNzU3ltYm9sLmdldCh5KHIpKX19ZnVuY3Rpb24gRjcocil7dmFyIGksdD1yJiZUMChyLCEwKSxvPShpPXQ9PW51bGw/dm9pZCAwOnQuZXhwb3J0cyk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmdldChcInByb3RvdHlwZVwiKSxzPShvPT1udWxsP3ZvaWQgMDpvLnZhbHVlRGVjbGFyYXRpb24pJiZNNyhvLnZhbHVlRGVjbGFyYXRpb24pO3JldHVybiBzP0V0KHMpOnZvaWQgMH1mdW5jdGlvbiBUMChyLGkpe2lmKCEhci5wYXJlbnQpe3ZhciB0LG87aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oci5wYXJlbnQpJiZyLnBhcmVudC5pbml0aWFsaXplcj09PXIpe2lmKCFlLmlzSW5KU0ZpbGUocikmJiEoZS5pc1ZhckNvbnN0KHIucGFyZW50KSYmZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKHIpKSlyZXR1cm47dD1yLnBhcmVudC5uYW1lLG89ci5wYXJlbnR9ZWxzZSBpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihyLnBhcmVudCkpe3ZhciBzPXIucGFyZW50LHU9ci5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kO2lmKHU9PT02MyYmKGl8fHMucmlnaHQ9PT1yKSl0PXMubGVmdCxvPXQ7ZWxzZSBpZigodT09PTU2fHx1PT09NjApJiYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocy5wYXJlbnQpJiZzLnBhcmVudC5pbml0aWFsaXplcj09PXM/KHQ9cy5wYXJlbnQubmFtZSxvPXMucGFyZW50KTplLmlzQmluYXJ5RXhwcmVzc2lvbihzLnBhcmVudCkmJnMucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzJiYoaXx8cy5wYXJlbnQucmlnaHQ9PT1zKSYmKHQ9cy5wYXJlbnQubGVmdCxvPXQpLCF0fHwhZS5pc0JpbmRhYmxlU3RhdGljTmFtZUV4cHJlc3Npb24odCl8fCFlLmlzU2FtZUVudGl0eU5hbWUodCxzLmxlZnQpKSlyZXR1cm59ZWxzZSBpJiZlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihyKSYmKHQ9ci5uYW1lLG89cik7aWYoISghb3x8IXR8fCFpJiYhZS5nZXRFeHBhbmRvSW5pdGlhbGl6ZXIocixlLmlzUHJvdG90eXBlQWNjZXNzKHQpKSkpcmV0dXJuIEV0KG8pfX1mdW5jdGlvbiBNNyhyKXtpZighci5wYXJlbnQpcmV0dXJuITE7Zm9yKHZhciBpPXIucGFyZW50O2kmJmkua2luZD09PTIwNjspaT1pLnBhcmVudDtpZihpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihpKSYmZS5pc1Byb3RvdHlwZUFjY2VzcyhpLmxlZnQpJiZpLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzKXt2YXIgdD1lLmdldEluaXRpYWxpemVyT2ZCaW5hcnlFeHByZXNzaW9uKGkpO3JldHVybiBlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24odCkmJnR9fWZ1bmN0aW9uIEw3KHIsaSl7dmFyIHQ7V3kocixyLnR5cGVBcmd1bWVudHMpO3ZhciBvPU1nKHIsdm9pZCAwLGkpO2lmKG89PT10bylyZXR1cm4gd3Q7aWYoeDAobyxyKSxyLmV4cHJlc3Npb24ua2luZD09PTEwNilyZXR1cm4gRmk7aWYoci5raW5kPT09MjA5KXt2YXIgcz1vLmRlY2xhcmF0aW9uO2lmKHMmJnMua2luZCE9PTE3MSYmcy5raW5kIT09MTc1JiZzLmtpbmQhPT0xODAmJiFlLmlzSlNEb2NDb25zdHJ1Y3RTaWduYXR1cmUocykmJiFTbChzKSlyZXR1cm4gbiYmWHIocixlLkRpYWdub3N0aWNzLm5ld19leHByZXNzaW9uX3dob3NlX3RhcmdldF9sYWNrc19hX2NvbnN0cnVjdF9zaWduYXR1cmVfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGUpLE9lfWlmKGUuaXNJbkpTRmlsZShyKSYmeGsocikpcmV0dXJuIEhtKHIuYXJndW1lbnRzWzBdKTt2YXIgdT15byhvKTtpZih1LmZsYWdzJjEyMjg4JiZEayhyKSlyZXR1cm4gQ0QoZS53YWxrVXBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbnMoci5wYXJlbnQpKTtpZihyLmtpbmQ9PT0yMDgmJiFyLnF1ZXN0aW9uRG90VG9rZW4mJnIucGFyZW50LmtpbmQ9PT0yMzgmJnUuZmxhZ3MmMTYzODQmJlljKG8pKXtpZighZS5pc0RvdHRlZE5hbWUoci5leHByZXNzaW9uKSlYcihyLmV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5Bc3NlcnRpb25zX3JlcXVpcmVfdGhlX2NhbGxfdGFyZ2V0X3RvX2JlX2FuX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWUpO2Vsc2UgaWYoIWkwKHIpKXt2YXIgaD1YcihyLmV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5Bc3NlcnRpb25zX3JlcXVpcmVfZXZlcnlfbmFtZV9pbl90aGVfY2FsbF90YXJnZXRfdG9fYmVfZGVjbGFyZWRfd2l0aF9hbl9leHBsaWNpdF90eXBlX2Fubm90YXRpb24pO2d5KHIuZXhwcmVzc2lvbixoKX19aWYoZS5pc0luSlNGaWxlKHIpKXt2YXIgej1UMChyLCExKTtpZighKCh0PXo9PW51bGw/dm9pZCAwOnouZXhwb3J0cyk9PT1udWxsfHx0PT09dm9pZCAwKSYmdC5zaXplKXt2YXIgbWU9cnMoeix6LmV4cG9ydHMsZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpO3JldHVybiBtZS5vYmplY3RGbGFnc3w9NDA5NixEbyhbdSxtZV0pfX1yZXR1cm4gdX1mdW5jdGlvbiB4MChyLGkpe2lmKHIuZGVjbGFyYXRpb24mJnIuZGVjbGFyYXRpb24uZmxhZ3MmMjY4NDM1NDU2KXt2YXIgdD1reShpKSxvPWUudHJ5R2V0UHJvcGVydHlBY2Nlc3NPcklkZW50aWZpZXJUb1N0cmluZyhlLmdldEludm9rZWRFeHByZXNzaW9uKGkpKTt2cCh0LHIuZGVjbGFyYXRpb24sbyxNbChyKSl9fWZ1bmN0aW9uIGt5KHIpe3N3aXRjaChyPWUuc2tpcFBhcmVudGhlc2VzKHIpLHIua2luZCl7Y2FzZSAyMDg6Y2FzZSAxNjU6Y2FzZSAyMDk6cmV0dXJuIGt5KHIuZXhwcmVzc2lvbik7Y2FzZSAyMTA6cmV0dXJuIGt5KHIudGFnKTtjYXNlIDI4MDpjYXNlIDI3OTpyZXR1cm4ga3koci50YWdOYW1lKTtjYXNlIDIwNzpyZXR1cm4gci5hcmd1bWVudEV4cHJlc3Npb247Y2FzZSAyMDY6cmV0dXJuIHIubmFtZTtjYXNlIDE3ODp2YXIgaT1yO3JldHVybiBlLmlzUXVhbGlmaWVkTmFtZShpLnR5cGVOYW1lKT9pLnR5cGVOYW1lLnJpZ2h0Omk7ZGVmYXVsdDpyZXR1cm4gcn19ZnVuY3Rpb24gRGsocil7aWYoIWUuaXNDYWxsRXhwcmVzc2lvbihyKSlyZXR1cm4hMTt2YXIgaT1yLmV4cHJlc3Npb247aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihpKSYmaS5uYW1lLmVzY2FwZWRUZXh0PT09XCJmb3JcIiYmKGk9aS5leHByZXNzaW9uKSwhZS5pc0lkZW50aWZpZXIoaSl8fGkuZXNjYXBlZFRleHQhPT1cIlN5bWJvbFwiKXJldHVybiExO3ZhciB0PUV4KCExKTtyZXR1cm4gdD90PT09ZXMoaSxcIlN5bWJvbFwiLDExMTU1MSx2b2lkIDAsdm9pZCAwLCExKTohMX1mdW5jdGlvbiBSNyhyKXtpZihDTChyKSxyLmFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiBQeShyLE9lKTtmb3IodmFyIGk9ci5hcmd1bWVudHNbMF0sdD1PcyhpKSxvPXIuYXJndW1lbnRzLmxlbmd0aD4xP09zKHIuYXJndW1lbnRzWzFdKTp2b2lkIDAscz0yO3M8ci5hcmd1bWVudHMubGVuZ3RoOysrcylPcyhyLmFyZ3VtZW50c1tzXSk7aWYoKHQuZmxhZ3MmMzI3Njh8fHQuZmxhZ3MmNjU1MzZ8fCFhbyh0LExpKSkmJlhyKGksZS5EaWFnbm9zdGljcy5EeW5hbWljX2ltcG9ydF9zX3NwZWNpZmllcl9tdXN0X2JlX29mX3R5cGVfc3RyaW5nX2J1dF9oZXJlX2hhc190eXBlXzAsT3QodCkpLG8pe3ZhciB1PXh4KCEwKTt1IT09QmEmJnpjKG8sVWgodSwzMjc2OCksci5hcmd1bWVudHNbMV0pfXZhciBoPWFjKHIsaSk7aWYoaCl7dmFyIHo9V2YoaCxpLCEwLCExKTtpZih6KXJldHVybiBQeShyLFNrKEp0KHopLHosaCxpKXx8VGsoSnQoeikseixoLGkpKX1yZXR1cm4gUHkocixPZSl9ZnVuY3Rpb24gYmsocixpLHQpe3ZhciBvPWUuY3JlYXRlU3ltYm9sVGFibGUoKSxzPW9vKDIwOTcxNTIsXCJkZWZhdWx0XCIpO3JldHVybiBzLnBhcmVudD1pLHMubmFtZVR5cGU9QnUoXCJkZWZhdWx0XCIpLHMuYWxpYXNUYXJnZXQ9b3Mociksby5zZXQoXCJkZWZhdWx0XCIscykscnModCxvLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KX1mdW5jdGlvbiBTayhyLGksdCxvKXt2YXIgcz1VZihvKTtpZihzJiZyJiYhbm4ocikpe3ZhciB1PXI7aWYoIXUuZGVmYXVsdE9ubHlUeXBlKXt2YXIgaD1iayhpLHQpO3UuZGVmYXVsdE9ubHlUeXBlPWh9cmV0dXJuIHUuZGVmYXVsdE9ubHlUeXBlfX1mdW5jdGlvbiBUayhyLGksdCxvKXt2YXIgcztpZihDciYmciYmIW5uKHIpKXt2YXIgdT1yO2lmKCF1LnN5bnRoZXRpY1R5cGUpe3ZhciBoPShzPXQuZGVjbGFyYXRpb25zKT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMuZmluZChlLmlzU291cmNlRmlsZSksej1MXyhoLHQsITEsbyk7aWYoeil7dmFyIG1lPW9vKDIwNDgsXCJfX3R5cGVcIiksTWU9YmsoaSx0LG1lKTttZS50eXBlPU1lLHUuc3ludGhldGljVHlwZT1EeShyKT9WcChyLE1lLG1lLDAsITEpOk1lfWVsc2UgdS5zeW50aGV0aWNUeXBlPXJ9cmV0dXJuIHUuc3ludGhldGljVHlwZX1yZXR1cm4gcn1mdW5jdGlvbiB4ayhyKXtpZighZS5pc1JlcXVpcmVDYWxsKHIsITApKXJldHVybiExO2lmKCFlLmlzSWRlbnRpZmllcihyLmV4cHJlc3Npb24pKXJldHVybiBlLkRlYnVnLmZhaWwoKTt2YXIgaT1lcyhyLmV4cHJlc3Npb24sci5leHByZXNzaW9uLmVzY2FwZWRUZXh0LDExMTU1MSx2b2lkIDAsdm9pZCAwLCEwKTtpZihpPT09cXIpcmV0dXJuITA7aWYoaS5mbGFncyYyMDk3MTUyKXJldHVybiExO3ZhciB0PWkuZmxhZ3MmMTY/MjU2OmkuZmxhZ3MmMz8yNTQ6MDtpZih0IT09MCl7dmFyIG89ZS5nZXREZWNsYXJhdGlvbk9mS2luZChpLHQpO3JldHVybiEhbyYmISEoby5mbGFncyYxNjc3NzIxNil9cmV0dXJuITF9ZnVuY3Rpb24gQjcocil7WTkocil8fFd5KHIsci50eXBlQXJndW1lbnRzKSxBZTwyJiZmYyhyLDI2MjE0NCk7dmFyIGk9TWcocik7cmV0dXJuIHgwKGkscikseW8oaSl9ZnVuY3Rpb24gSjcocil7aWYoci5raW5kPT09MjExKXt2YXIgaT1lLmdldFNvdXJjZUZpbGVPZk5vZGUocik7aSYmZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihpLmZpbGVOYW1lLFtcIi5jdHNcIixcIi5tdHNcIl0pJiZUdChyLGUuRGlhZ25vc3RpY3MuVGhpc19zeW50YXhfaXNfcmVzZXJ2ZWRfaW5fZmlsZXNfd2l0aF90aGVfbXRzX29yX2N0c19leHRlbnNpb25fVXNlX2FuX2FzX2V4cHJlc3Npb25faW5zdGVhZCl9cmV0dXJuIENrKHIsci50eXBlLHIuZXhwcmVzc2lvbil9ZnVuY3Rpb24gRWsocil7c3dpdGNoKHIua2luZCl7Y2FzZSAxMDpjYXNlIDE0OmNhc2UgODpjYXNlIDk6Y2FzZSAxMTA6Y2FzZSA5NTpjYXNlIDIwNDpjYXNlIDIwNTpjYXNlIDIyMzpyZXR1cm4hMDtjYXNlIDIxMjpyZXR1cm4gRWsoci5leHByZXNzaW9uKTtjYXNlIDIxOTp2YXIgaT1yLm9wZXJhdG9yLHQ9ci5vcGVyYW5kO3JldHVybiBpPT09NDAmJih0LmtpbmQ9PT04fHx0LmtpbmQ9PT05KXx8aT09PTM5JiZ0LmtpbmQ9PT04O2Nhc2UgMjA2OmNhc2UgMjA3OnZhciBvPXIuZXhwcmVzc2lvbixzPUJkKG8pLnN5bWJvbDtyZXR1cm4gcyYmcy5mbGFncyYyMDk3MTUyJiYocz1QcyhzKSksISEocyYmcy5mbGFncyYzODQmJmFzKHMpPT09MSl9cmV0dXJuITF9ZnVuY3Rpb24gQ2socixpLHQsbyl7dmFyIHM9eW4odCxvKTtpZihlLmlzQ29uc3RUeXBlUmVmZXJlbmNlKGkpKXJldHVybiBFayh0KXx8WHIodCxlLkRpYWdub3N0aWNzLkFfY29uc3RfYXNzZXJ0aW9uc19jYW5fb25seV9iZV9hcHBsaWVkX3RvX3JlZmVyZW5jZXNfdG9fZW51bV9tZW1iZXJzX29yX3N0cmluZ19udW1iZXJfYm9vbGVhbl9hcnJheV9vcl9vYmplY3RfbGl0ZXJhbHMpLGpjKHMpO2lvKGkpLHM9Zm0oS2wocykpO3ZhciB1PVZhKGkpO3JldHVybiBubih1KXx8ZmUoZnVuY3Rpb24oKXt2YXIgaD0kYyhzKTtjbSh1LGgpfHxtRShzLHUscixlLkRpYWdub3N0aWNzLkNvbnZlcnNpb25fb2ZfdHlwZV8wX3RvX3R5cGVfMV9tYXlfYmVfYV9taXN0YWtlX2JlY2F1c2VfbmVpdGhlcl90eXBlX3N1ZmZpY2llbnRseV9vdmVybGFwc193aXRoX3RoZV9vdGhlcl9JZl90aGlzX3dhc19pbnRlbnRpb25hbF9jb252ZXJ0X3RoZV9leHByZXNzaW9uX3RvX3Vua25vd25fZmlyc3QpfSksdX1mdW5jdGlvbiBqNyhyKXt2YXIgaT15bihyLmV4cHJlc3Npb24pLHQ9Y3YoaSxyLmV4cHJlc3Npb24pO3JldHVybiB6aChDXyh0KSxyLHQhPT1pKX1mdW5jdGlvbiBVNyhyKXtyZXR1cm4gci5mbGFncyYzMj9qNyhyKTpDXyh5bihyLmV4cHJlc3Npb24pKX1mdW5jdGlvbiBrayhyKXtsQShyKTt2YXIgaT1yLmtpbmQ9PT0yMjg/eW4oci5leHByZXNzaW9uKTplLmlzVGhpc0lkZW50aWZpZXIoci5leHByTmFtZSk/eXkoci5leHByTmFtZSk6eW4oci5leHByTmFtZSksdD1yLnR5cGVBcmd1bWVudHM7aWYoaT09PUJ0fHxubihpKXx8IWUuc29tZSh0KSlyZXR1cm4gaTt2YXIgbz0hMSxzLHU9eihpKSxoPW8/czppO3JldHVybiBoJiZybi5hZGQoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUFycmF5KGUuZ2V0U291cmNlRmlsZU9mTm9kZShyKSx0LGUuRGlhZ25vc3RpY3MuVHlwZV8wX2hhc19ub19zaWduYXR1cmVzX2Zvcl93aGljaF90aGVfdHlwZV9hcmd1bWVudF9saXN0X2lzX2FwcGxpY2FibGUsT3QoaCkpKSx1O2Z1bmN0aW9uIHooTWUpe3ZhciAkZT0hMSx0cj0hMSxkcj1EcihNZSk7cmV0dXJuIG98fChvPXRyKSwkZSYmIXRyJiYocyE9bnVsbHx8KHM9TWUpKSxkcjtmdW5jdGlvbiBEcihRcil7aWYoUXIuZmxhZ3MmNTI0Mjg4KXt2YXIgbGk9UnUoUXIpLFRpPW1lKGxpLmNhbGxTaWduYXR1cmVzKSxDaT1tZShsaS5jb25zdHJ1Y3RTaWduYXR1cmVzKTtpZigkZXx8KCRlPWxpLmNhbGxTaWduYXR1cmVzLmxlbmd0aCE9PTB8fGxpLmNvbnN0cnVjdFNpZ25hdHVyZXMubGVuZ3RoIT09MCksdHJ8fCh0cj1UaS5sZW5ndGghPT0wfHxDaS5sZW5ndGghPT0wKSxUaSE9PWxpLmNhbGxTaWduYXR1cmVzfHxDaSE9PWxpLmNvbnN0cnVjdFNpZ25hdHVyZXMpe3ZhciAkaT1ycyh2b2lkIDAsbGkubWVtYmVycyxUaSxDaSxsaS5pbmRleEluZm9zKTtyZXR1cm4gJGkub2JqZWN0RmxhZ3N8PTgzODg2MDgsJGkubm9kZT1yLCRpfX1lbHNlIGlmKFFyLmZsYWdzJjU4OTgyNDAwKXt2YXIgWmk9dWMoUXIpO2lmKFppKXt2YXIgcXQ9RHIoWmkpO2lmKHF0IT09WmkpcmV0dXJuIHF0fX1lbHNle2lmKFFyLmZsYWdzJjEwNDg1NzYpcmV0dXJuIFNzKFFyLHopO2lmKFFyLmZsYWdzJjIwOTcxNTIpcmV0dXJuIERvKGUuc2FtZU1hcChRci50eXBlcyxEcikpfXJldHVybiBRcn19ZnVuY3Rpb24gbWUoTWUpe3ZhciAkZT1lLmZpbHRlcihNZSxmdW5jdGlvbih0cil7cmV0dXJuISF0ci50eXBlUGFyYW1ldGVycyYmWGIodHIsdCl9KTtyZXR1cm4gZS5zYW1lTWFwKCRlLGZ1bmN0aW9uKHRyKXt2YXIgZHI9JGIodHIsdCwhMCk7cmV0dXJuIGRyP1htKHRyLGRyLGUuaXNJbkpTRmlsZSh0ci5kZWNsYXJhdGlvbikpOnRyfSl9fWZ1bmN0aW9uIHo3KHIpe3JldHVybiBwTChyKSxyLmtleXdvcmRUb2tlbj09PTEwMz90UyhyKTpyLmtleXdvcmRUb2tlbj09PTEwMD9XNyhyKTplLkRlYnVnLmFzc2VydE5ldmVyKHIua2V5d29yZFRva2VuKX1mdW5jdGlvbiBBayhyKXtzd2l0Y2goci5rZXl3b3JkVG9rZW4pe2Nhc2UgMTAwOnJldHVybiBUeCgpO2Nhc2UgMTAzOnZhciBpPXRTKHIpO3JldHVybiBubihpKT9QZTpINyhpKTtkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoci5rZXl3b3JkVG9rZW4pfX1mdW5jdGlvbiB0UyhyKXt2YXIgaT1lLmdldE5ld1RhcmdldENvbnRhaW5lcihyKTtpZihpKWlmKGkua2luZD09PTE3MSl7dmFyIHQ9RXQoaS5wYXJlbnQpO3JldHVybiBKdCh0KX1lbHNle3ZhciB0PUV0KGkpO3JldHVybiBKdCh0KX1lbHNlIHJldHVybiBYcihyLGUuRGlhZ25vc3RpY3MuTWV0YV9wcm9wZXJ0eV8wX2lzX29ubHlfYWxsb3dlZF9pbl90aGVfYm9keV9vZl9hX2Z1bmN0aW9uX2RlY2xhcmF0aW9uX2Z1bmN0aW9uX2V4cHJlc3Npb25fb3JfY29uc3RydWN0b3IsXCJuZXcudGFyZ2V0XCIpLFBlfWZ1bmN0aW9uIFc3KHIpe2VyPT09ZS5Nb2R1bGVLaW5kLk5vZGUxNnx8ZXI9PT1lLk1vZHVsZUtpbmQuTm9kZU5leHQ/ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLmltcGxpZWROb2RlRm9ybWF0IT09ZS5Nb2R1bGVLaW5kLkVTTmV4dCYmWHIocixlLkRpYWdub3N0aWNzLlRoZV9pbXBvcnRfbWV0YV9tZXRhX3Byb3BlcnR5X2lzX25vdF9hbGxvd2VkX2luX2ZpbGVzX3doaWNoX3dpbGxfYnVpbGRfaW50b19Db21tb25KU19vdXRwdXQpOmVyPGUuTW9kdWxlS2luZC5FUzIwMjAmJmVyIT09ZS5Nb2R1bGVLaW5kLlN5c3RlbSYmWHIocixlLkRpYWdub3N0aWNzLlRoZV9pbXBvcnRfbWV0YV9tZXRhX3Byb3BlcnR5X2lzX29ubHlfYWxsb3dlZF93aGVuX3RoZV9tb2R1bGVfb3B0aW9uX2lzX2VzMjAyMF9lczIwMjJfZXNuZXh0X3N5c3RlbV9ub2RlMTZfb3Jfbm9kZW5leHQpO3ZhciBpPWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoISEoaS5mbGFncyY0MTk0MzA0KSxcIkNvbnRhaW5pbmcgZmlsZSBpcyBtaXNzaW5nIGltcG9ydCBtZXRhIG5vZGUgZmxhZy5cIiksci5uYW1lLmVzY2FwZWRUZXh0PT09XCJtZXRhXCI/U3goKTpQZX1mdW5jdGlvbiBtdihyKXt2YXIgaT1KdChyKTtpZihZZSl7dmFyIHQ9ci52YWx1ZURlY2xhcmF0aW9uO2lmKHQmJmUuaGFzSW5pdGlhbGl6ZXIodCkpcmV0dXJuIGlfKGkpfXJldHVybiBpfWZ1bmN0aW9uIEUwKHIpe3JldHVybiBlLkRlYnVnLmFzc2VydChlLmlzSWRlbnRpZmllcihyLm5hbWUpKSxyLm5hbWUuZXNjYXBlZFRleHR9ZnVuY3Rpb24gdm0ocixpLHQpe3ZhciBvPXIucGFyYW1ldGVycy5sZW5ndGgtKEgocik/MTowKTtpZihpPG8pcmV0dXJuIHIucGFyYW1ldGVyc1tpXS5lc2NhcGVkTmFtZTt2YXIgcz1yLnBhcmFtZXRlcnNbb118fHhlLHU9dHx8SnQocyk7aWYoWW4odSkpe3ZhciBoPXUudGFyZ2V0LmxhYmVsZWRFbGVtZW50RGVjbGFyYXRpb25zLHo9aS1vO3JldHVybiBoJiZFMChoW3pdKXx8cy5lc2NhcGVkTmFtZStcIl9cIit6fXJldHVybiBzLmVzY2FwZWROYW1lfWZ1bmN0aW9uIHE3KHIsaSl7dmFyIHQ7aWYoKCh0PXIuZGVjbGFyYXRpb24pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5raW5kKSE9PTMxNyl7dmFyIG89ci5wYXJhbWV0ZXJzLmxlbmd0aC0oSChyKT8xOjApO2lmKGk8byl7dmFyIHM9ci5wYXJhbWV0ZXJzW2ldO3JldHVybiBOayhzKT9bcy5lc2NhcGVkTmFtZSwhMV06dm9pZCAwfXZhciB1PXIucGFyYW1ldGVyc1tvXXx8eGU7aWYoISFOayh1KSl7dmFyIGg9SnQodSk7aWYoWW4oaCkpe3ZhciB6PWgudGFyZ2V0LmxhYmVsZWRFbGVtZW50RGVjbGFyYXRpb25zLG1lPWktbyxNZT16PT1udWxsP3ZvaWQgMDp6W21lXSwkZT0hIShNZSE9bnVsbCYmTWUuZG90RG90RG90VG9rZW4pO3JldHVybiBNZT9bRTAoTWUpLCRlXTp2b2lkIDB9aWYoaT09PW8pcmV0dXJuW3UuZXNjYXBlZE5hbWUsITBdfX19ZnVuY3Rpb24gTmsocil7cmV0dXJuIHIudmFsdWVEZWNsYXJhdGlvbiYmZS5pc1BhcmFtZXRlcihyLnZhbHVlRGVjbGFyYXRpb24pJiZlLmlzSWRlbnRpZmllcihyLnZhbHVlRGVjbGFyYXRpb24ubmFtZSl9ZnVuY3Rpb24gUGsocil7cmV0dXJuIHIua2luZD09PTE5N3x8ZS5pc1BhcmFtZXRlcihyKSYmci5uYW1lJiZlLmlzSWRlbnRpZmllcihyLm5hbWUpfWZ1bmN0aW9uIFY3KHIsaSl7dmFyIHQ9ci5wYXJhbWV0ZXJzLmxlbmd0aC0oSChyKT8xOjApO2lmKGk8dCl7dmFyIG89ci5wYXJhbWV0ZXJzW2ldLnZhbHVlRGVjbGFyYXRpb247cmV0dXJuIG8mJlBrKG8pP286dm9pZCAwfXZhciBzPXIucGFyYW1ldGVyc1t0XXx8eGUsdT1KdChzKTtpZihZbih1KSl7dmFyIGg9dS50YXJnZXQubGFiZWxlZEVsZW1lbnREZWNsYXJhdGlvbnMsej1pLXQ7cmV0dXJuIGgmJmhbel19cmV0dXJuIHMudmFsdWVEZWNsYXJhdGlvbiYmUGsocy52YWx1ZURlY2xhcmF0aW9uKT9zLnZhbHVlRGVjbGFyYXRpb246dm9pZCAwfWZ1bmN0aW9uICR1KHIsaSl7cmV0dXJuIExkKHIsaSl8fE9lfWZ1bmN0aW9uIExkKHIsaSl7dmFyIHQ9ci5wYXJhbWV0ZXJzLmxlbmd0aC0oSChyKT8xOjApO2lmKGk8dClyZXR1cm4gbXYoci5wYXJhbWV0ZXJzW2ldKTtpZihIKHIpKXt2YXIgbz1KdChyLnBhcmFtZXRlcnNbdF0pLHM9aS10O2lmKCFZbihvKXx8by50YXJnZXQuaGFzUmVzdEVsZW1lbnR8fHM8by50YXJnZXQuZml4ZWRMZW5ndGgpcmV0dXJuIEpjKG8sSWYocykpfX1mdW5jdGlvbiB5bShyLGkpe3ZhciB0PVdjKHIpLG89SGwocikscz12dihyKTtpZihzJiZpPj10LTEpcmV0dXJuIGk9PT10LTE/czpacyhKYyhzLG50KSk7Zm9yKHZhciB1PVtdLGg9W10sej1bXSxtZT1pO21lPHQ7bWUrKyl7IXN8fG1lPHQtMT8odS5wdXNoKCR1KHIsbWUpKSxoLnB1c2gobWU8bz8xOjIpKToodS5wdXNoKHMpLGgucHVzaCg4KSk7dmFyIE1lPVY3KHIsbWUpO01lJiZ6LnB1c2goTWUpfXJldHVybiBXbCh1LGgsITEsZS5sZW5ndGgoeik9PT1lLmxlbmd0aCh1KT96OnZvaWQgMCl9ZnVuY3Rpb24gV2Mocil7dmFyIGk9ci5wYXJhbWV0ZXJzLmxlbmd0aDtpZihIKHIpKXt2YXIgdD1KdChyLnBhcmFtZXRlcnNbaS0xXSk7aWYoWW4odCkpcmV0dXJuIGkrdC50YXJnZXQuZml4ZWRMZW5ndGgtKHQudGFyZ2V0Lmhhc1Jlc3RFbGVtZW50PzA6MSl9cmV0dXJuIGl9ZnVuY3Rpb24gSGwocixpKXt2YXIgdD1pJjEsbz1pJjI7aWYob3x8ci5yZXNvbHZlZE1pbkFyZ3VtZW50Q291bnQ9PT12b2lkIDApe3ZhciBzPXZvaWQgMDtpZihIKHIpKXt2YXIgdT1KdChyLnBhcmFtZXRlcnNbci5wYXJhbWV0ZXJzLmxlbmd0aC0xXSk7aWYoWW4odSkpe3ZhciBoPWUuZmluZEluZGV4KHUudGFyZ2V0LmVsZW1lbnRGbGFncyxmdW5jdGlvbigkZSl7cmV0dXJuISgkZSYxKX0pLHo9aDwwP3UudGFyZ2V0LmZpeGVkTGVuZ3RoOmg7ej4wJiYocz1yLnBhcmFtZXRlcnMubGVuZ3RoLTEreil9fWlmKHM9PT12b2lkIDApe2lmKCF0JiZyLmZsYWdzJjMyKXJldHVybiAwO3M9ci5taW5Bcmd1bWVudENvdW50fWlmKG8pcmV0dXJuIHM7Zm9yKHZhciBtZT1zLTE7bWU+PTA7bWUtLSl7dmFyIE1lPSR1KHIsbWUpO2lmKGVjKE1lLG5rKS5mbGFncyYxMzEwNzIpYnJlYWs7cz1tZX1yLnJlc29sdmVkTWluQXJndW1lbnRDb3VudD1zfXJldHVybiByLnJlc29sdmVkTWluQXJndW1lbnRDb3VudH1mdW5jdGlvbiBYbChyKXtpZihIKHIpKXt2YXIgaT1KdChyLnBhcmFtZXRlcnNbci5wYXJhbWV0ZXJzLmxlbmd0aC0xXSk7cmV0dXJuIVluKGkpfHxpLnRhcmdldC5oYXNSZXN0RWxlbWVudH1yZXR1cm4hMX1mdW5jdGlvbiB2dihyKXtpZihIKHIpKXt2YXIgaT1KdChyLnBhcmFtZXRlcnNbci5wYXJhbWV0ZXJzLmxlbmd0aC0xXSk7aWYoIVluKGkpKXJldHVybiBpO2lmKGkudGFyZ2V0Lmhhc1Jlc3RFbGVtZW50KXJldHVybiBabShpLGkudGFyZ2V0LmZpeGVkTGVuZ3RoKX19ZnVuY3Rpb24geXYocil7dmFyIGk9dnYocik7cmV0dXJuIGkmJiFUdShpKSYmIXRhKGkpJiYoYnUoaSkuZmxhZ3MmMTMxMDcyKT09PTA/aTp2b2lkIDB9ZnVuY3Rpb24gYVMocil7cmV0dXJuIG5TKHIsdWkpfWZ1bmN0aW9uIG5TKHIsaSl7cmV0dXJuIHIucGFyYW1ldGVycy5sZW5ndGg+MD8kdShyLDApOml9ZnVuY3Rpb24gSzcocixpLHQpe2Zvcih2YXIgbz1yLnBhcmFtZXRlcnMubGVuZ3RoLShIKHIpPzE6MCkscz0wO3M8bztzKyspe3ZhciB1PXIucGFyYW1ldGVyc1tzXS52YWx1ZURlY2xhcmF0aW9uO2lmKHUudHlwZSl7dmFyIGg9ZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUodSk7aCYmZGYodC5pbmZlcmVuY2VzLFZhKGgpLCR1KGkscykpfX12YXIgej12dihpKTtpZih6JiZ6LmZsYWdzJjI2MjE0NCl7dmFyIG1lPVRnKGksdC5ub25GaXhpbmdNYXBwZXIpO0lrKHIsbWUpO3ZhciBNZT1XYyhpKS0xO2RmKHQuaW5mZXJlbmNlcyx5bShyLE1lKSx6KX19ZnVuY3Rpb24gSWsocixpKXtpZihpLnR5cGVQYXJhbWV0ZXJzKWlmKCFyLnR5cGVQYXJhbWV0ZXJzKXIudHlwZVBhcmFtZXRlcnM9aS50eXBlUGFyYW1ldGVycztlbHNlIHJldHVybjtpZihpLnRoaXNQYXJhbWV0ZXIpe3ZhciB0PXIudGhpc1BhcmFtZXRlcjsoIXR8fHQudmFsdWVEZWNsYXJhdGlvbiYmIXQudmFsdWVEZWNsYXJhdGlvbi50eXBlKSYmKHR8fChyLnRoaXNQYXJhbWV0ZXI9ZWcoaS50aGlzUGFyYW1ldGVyLHZvaWQgMCkpLEF5KHIudGhpc1BhcmFtZXRlcixKdChpLnRoaXNQYXJhbWV0ZXIpKSl9Zm9yKHZhciBvPXIucGFyYW1ldGVycy5sZW5ndGgtKEgocik/MTowKSxzPTA7czxvO3MrKyl7dmFyIHQ9ci5wYXJhbWV0ZXJzW3NdO2lmKCFlLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZSh0LnZhbHVlRGVjbGFyYXRpb24pKXt2YXIgdT1MZChpLHMpO0F5KHQsdSl9fWlmKEgocikpe3ZhciB0PWUubGFzdChyLnBhcmFtZXRlcnMpO2lmKHQudmFsdWVEZWNsYXJhdGlvbj8hZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUodC52YWx1ZURlY2xhcmF0aW9uKTohIShlLmdldENoZWNrRmxhZ3ModCkmNjU1MzYpKXt2YXIgdT15bShpLG8pO0F5KHQsdSl9fX1mdW5jdGlvbiBHNyhyKXtyLnRoaXNQYXJhbWV0ZXImJkF5KHIudGhpc1BhcmFtZXRlcik7Zm9yKHZhciBpPTAsdD1yLnBhcmFtZXRlcnM7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV07QXkobyl9fWZ1bmN0aW9uIEF5KHIsaSl7dmFyIHQ9QWEocik7aWYodC50eXBlKWkmJmUuRGVidWcuYXNzZXJ0RXF1YWwodC50eXBlLGksXCJQYXJhbWV0ZXIgc3ltYm9sIGFscmVhZHkgaGFzIGEgY2FjaGVkIHR5cGUgd2hpY2ggZGlmZmVycyBmcm9tIG5ld2x5IGFzc2lnbmVkIHR5cGVcIik7ZWxzZXt2YXIgbz1yLnZhbHVlRGVjbGFyYXRpb247dC50eXBlPWl8fChvP3NjKG8sITApOkp0KHIpKSxvJiZvLm5hbWUua2luZCE9PTc5JiYodC50eXBlPT09Z3ImJih0LnR5cGU9UXUoby5uYW1lKSksd2soby5uYW1lLHQudHlwZSkpfX1mdW5jdGlvbiB3ayhyLGkpe2Zvcih2YXIgdD0wLG89ci5lbGVtZW50czt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpZighZS5pc09taXR0ZWRFeHByZXNzaW9uKHMpKXt2YXIgdT11ZihzLGkpO3MubmFtZS5raW5kPT09Nzk/QWEoRXQocykpLnR5cGU9dTp3ayhzLm5hbWUsdSl9fX1mdW5jdGlvbiBOeShyKXt2YXIgaT1heSghMCk7cmV0dXJuIGkhPT1rbj8ocj1rXyhFdihyKSl8fGdyLFlmKGksW3JdKSk6Z3J9ZnVuY3Rpb24gT2socil7dmFyIGk9a3goITApO3JldHVybiBpIT09a24/KHI9a18oRXYocikpfHxncixZZihpLFtyXSkpOmdyfWZ1bmN0aW9uIFB5KHIsaSl7dmFyIHQ9TnkoaSk7cmV0dXJuIHQ9PT1ncj8oWHIocixlLmlzSW1wb3J0Q2FsbChyKT9lLkRpYWdub3N0aWNzLkFfZHluYW1pY19pbXBvcnRfY2FsbF9yZXR1cm5zX2FfUHJvbWlzZV9NYWtlX3N1cmVfeW91X2hhdmVfYV9kZWNsYXJhdGlvbl9mb3JfUHJvbWlzZV9vcl9pbmNsdWRlX0VTMjAxNV9pbl95b3VyX2xpYl9vcHRpb246ZS5EaWFnbm9zdGljcy5Bbl9hc3luY19mdW5jdGlvbl9vcl9tZXRob2RfbXVzdF9yZXR1cm5fYV9Qcm9taXNlX01ha2Vfc3VyZV95b3VfaGF2ZV9hX2RlY2xhcmF0aW9uX2Zvcl9Qcm9taXNlX29yX2luY2x1ZGVfRVMyMDE1X2luX3lvdXJfbGliX29wdGlvbiksUGUpOihuRCghMCl8fFhyKHIsZS5pc0ltcG9ydENhbGwocik/ZS5EaWFnbm9zdGljcy5BX2R5bmFtaWNfaW1wb3J0X2NhbGxfaW5fRVM1X1NsYXNoRVMzX3JlcXVpcmVzX3RoZV9Qcm9taXNlX2NvbnN0cnVjdG9yX01ha2Vfc3VyZV95b3VfaGF2ZV9hX2RlY2xhcmF0aW9uX2Zvcl90aGVfUHJvbWlzZV9jb25zdHJ1Y3Rvcl9vcl9pbmNsdWRlX0VTMjAxNV9pbl95b3VyX2xpYl9vcHRpb246ZS5EaWFnbm9zdGljcy5Bbl9hc3luY19mdW5jdGlvbl9vcl9tZXRob2RfaW5fRVM1X1NsYXNoRVMzX3JlcXVpcmVzX3RoZV9Qcm9taXNlX2NvbnN0cnVjdG9yX01ha2Vfc3VyZV95b3VfaGF2ZV9hX2RlY2xhcmF0aW9uX2Zvcl90aGVfUHJvbWlzZV9jb25zdHJ1Y3Rvcl9vcl9pbmNsdWRlX0VTMjAxNV9pbl95b3VyX2xpYl9vcHRpb24pLHQpfWZ1bmN0aW9uIEg3KHIpe3ZhciBpPW9vKDAsXCJOZXdUYXJnZXRFeHByZXNzaW9uXCIpLHQ9b28oNCxcInRhcmdldFwiLDgpO3QucGFyZW50PWksdC50eXBlPXI7dmFyIG89ZS5jcmVhdGVTeW1ib2xUYWJsZShbdF0pO3JldHVybiBpLm1lbWJlcnM9byxycyhpLG8sZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXkpfWZ1bmN0aW9uIEMwKHIsaSl7aWYoIXIuYm9keSlyZXR1cm4gUGU7dmFyIHQ9ZS5nZXRGdW5jdGlvbkZsYWdzKHIpLG89KHQmMikhPT0wLHM9KHQmMSkhPT0wLHUsaCx6LG1lPUZpO2lmKHIuYm9keS5raW5kIT09MjM1KXU9T3Moci5ib2R5LGkmJmkmLTkpLG8mJih1PUV2KHh2KHUsITEscixlLkRpYWdub3N0aWNzLlRoZV9yZXR1cm5fdHlwZV9vZl9hbl9hc3luY19mdW5jdGlvbl9tdXN0X2VpdGhlcl9iZV9hX3ZhbGlkX3Byb21pc2Vfb3JfbXVzdF9ub3RfY29udGFpbl9hX2NhbGxhYmxlX3RoZW5fbWVtYmVyKSkpO2Vsc2UgaWYocyl7dmFyIE1lPUJrKHIsaSk7TWU/TWUubGVuZ3RoPjAmJih1PVBhKE1lLDIpKTptZT11aTt2YXIgJGU9WDcocixpKSx0cj0kZS55aWVsZFR5cGVzLGRyPSRlLm5leHRUeXBlcztoPWUuc29tZSh0cik/UGEodHIsMik6dm9pZCAwLHo9ZS5zb21lKGRyKT9Ebyhkcik6dm9pZCAwfWVsc2V7dmFyIERyPUJrKHIsaSk7aWYoIURyKXJldHVybiB0JjI/UHkocix1aSk6dWk7aWYoRHIubGVuZ3RoPT09MClyZXR1cm4gdCYyP1B5KHIsRmkpOkZpO3U9UGEoRHIsMil9aWYodXx8aHx8eil7aWYoaCYmS2gocixoLDMpLHUmJktoKHIsdSwxKSx6JiZLaChyLHosMiksdSYmVmwodSl8fGgmJlZsKGgpfHx6JiZWbCh6KSl7dmFyIFFyPVBiKHIpLGxpPVFyP1FyPT09eWwocik/cz92b2lkIDA6dTpjMCh5byhRcikscik6dm9pZCAwO3M/KGg9WEQoaCxsaSwwLG8pLHU9WEQodSxsaSwxLG8pLHo9WEQoeixsaSwyLG8pKTp1PWt3KHUsbGksbyl9aCYmKGg9JGMoaCkpLHUmJih1PSRjKHUpKSx6JiYoej0kYyh6KSl9cmV0dXJuIHM/RmsoaHx8dWksdXx8bWUsenx8eEMoMixyKXx8Z3Isbyk6bz9OeSh1fHxtZSk6dXx8bWV9ZnVuY3Rpb24gRmsocixpLHQsbyl7dmFyIHM9bz9TdDpwYSx1PXMuZ2V0R2xvYmFsR2VuZXJhdG9yVHlwZSghMSk7aWYocj1zLnJlc29sdmVJdGVyYXRpb25UeXBlKHIsdm9pZCAwKXx8Z3IsaT1zLnJlc29sdmVJdGVyYXRpb25UeXBlKGksdm9pZCAwKXx8Z3IsdD1zLnJlc29sdmVJdGVyYXRpb25UeXBlKHQsdm9pZCAwKXx8Z3IsdT09PWtuKXt2YXIgaD1zLmdldEdsb2JhbEl0ZXJhYmxlSXRlcmF0b3JUeXBlKCExKSx6PWghPT1rbj94NihoLHMpOnZvaWQgMCxtZT16P3oucmV0dXJuVHlwZTpPZSxNZT16P3oubmV4dFR5cGU6VHI7cmV0dXJuIGFvKGksbWUpJiZhbyhNZSx0KT9oIT09a24/JG0oaCxbcl0pOihzLmdldEdsb2JhbEl0ZXJhYmxlSXRlcmF0b3JUeXBlKCEwKSxCYSk6KHMuZ2V0R2xvYmFsR2VuZXJhdG9yVHlwZSghMCksQmEpfXJldHVybiAkbSh1LFtyLGksdF0pfWZ1bmN0aW9uIFg3KHIsaSl7dmFyIHQ9W10sbz1bXSxzPShlLmdldEZ1bmN0aW9uRmxhZ3MocikmMikhPT0wO3JldHVybiBlLmZvckVhY2hZaWVsZEV4cHJlc3Npb24oci5ib2R5LGZ1bmN0aW9uKHUpe3ZhciBoPXUuZXhwcmVzc2lvbj95bih1LmV4cHJlc3Npb24saSk6dmk7ZS5wdXNoSWZVbmlxdWUodCxNayh1LGgsT2UscykpO3ZhciB6O2lmKHUuYXN0ZXJpc2tUb2tlbil7dmFyIG1lPUp5KGgscz8xOToxNyx1LmV4cHJlc3Npb24pO3o9bWUmJm1lLm5leHRUeXBlfWVsc2Ugej1vdSh1KTt6JiZlLnB1c2hJZlVuaXF1ZShvLHopfSkse3lpZWxkVHlwZXM6dCxuZXh0VHlwZXM6b319ZnVuY3Rpb24gTWsocixpLHQsbyl7dmFyIHM9ci5leHByZXNzaW9ufHxyLHU9ci5hc3Rlcmlza1Rva2VuP05fKG8/MTk6MTcsaSx0LHMpOmk7cmV0dXJuIG8/YWcodSxzLHIuYXN0ZXJpc2tUb2tlbj9lLkRpYWdub3N0aWNzLlR5cGVfb2ZfaXRlcmF0ZWRfZWxlbWVudHNfb2ZfYV95aWVsZF9Bc3Rlcmlza19vcGVyYW5kX211c3RfZWl0aGVyX2JlX2FfdmFsaWRfcHJvbWlzZV9vcl9tdXN0X25vdF9jb250YWluX2FfY2FsbGFibGVfdGhlbl9tZW1iZXI6ZS5EaWFnbm9zdGljcy5UeXBlX29mX3lpZWxkX29wZXJhbmRfaW5fYW5fYXN5bmNfZ2VuZXJhdG9yX211c3RfZWl0aGVyX2JlX2FfdmFsaWRfcHJvbWlzZV9vcl9tdXN0X25vdF9jb250YWluX2FfY2FsbGFibGVfdGhlbl9tZW1iZXIpOnV9ZnVuY3Rpb24gb1MocixpLHQsbyl7dmFyIHM9MDtpZihvKXtmb3IodmFyIHU9aTt1PHQubGVuZ3RoO3UrKylzfD1vZS5nZXQodFt1XSl8fDMyNzY4O2Zvcih2YXIgdT1yO3U8aTt1KyspcyY9fihvZS5nZXQodFt1XSl8fDApO2Zvcih2YXIgdT0wO3U8cjt1Kyspc3w9b2UuZ2V0KHRbdV0pfHwzMjc2OH1lbHNle2Zvcih2YXIgdT1yO3U8aTt1Kyspc3w9Ry5nZXQodFt1XSl8fDEyODtmb3IodmFyIHU9MDt1PHI7dSsrKXMmPX4oRy5nZXQodFt1XSl8fDApfXJldHVybiBzfWZ1bmN0aW9uIExrKHIpe3ZhciBpPXZhKHIpO3JldHVybiBpLmlzRXhoYXVzdGl2ZSE9PXZvaWQgMD9pLmlzRXhoYXVzdGl2ZTppLmlzRXhoYXVzdGl2ZT1RNyhyKX1mdW5jdGlvbiBRNyhyKXtpZihyLmV4cHJlc3Npb24ua2luZD09PTIxNil7dmFyIGk9R3Moci5leHByZXNzaW9uLmV4cHJlc3Npb24pLHQ9Y0MociwhMSksbz1vUygwLDAsdCwhMCkscz11YyhpKXx8aTtyZXR1cm4gcy5mbGFncyYzPyg1NTY4MDAmbyk9PT01NTY4MDA6ISEoZWMocyxmdW5jdGlvbih6KXtyZXR1cm4oY3Aoeikmbyk9PT1vfSkuZmxhZ3MmMTMxMDcyKX12YXIgdT1HcyhyLmV4cHJlc3Npb24pO2lmKCFDZyh1KSlyZXR1cm4hMTt2YXIgaD0kaChyKTtyZXR1cm4haC5sZW5ndGh8fGUuc29tZShoLEV3KT8hMTp2OChTcyh1LGpjKSxoKX1mdW5jdGlvbiBSayhyKXtyZXR1cm4gci5lbmRGbG93Tm9kZSYmbXkoci5lbmRGbG93Tm9kZSl9ZnVuY3Rpb24gQmsocixpKXt2YXIgdD1lLmdldEZ1bmN0aW9uRmxhZ3Mociksbz1bXSxzPVJrKHIpLHU9ITE7aWYoZS5mb3JFYWNoUmV0dXJuU3RhdGVtZW50KHIuYm9keSxmdW5jdGlvbihoKXt2YXIgej1oLmV4cHJlc3Npb247aWYoeil7dmFyIG1lPU9zKHosaSYmaSYtOSk7dCYyJiYobWU9RXYoeHYobWUsITEscixlLkRpYWdub3N0aWNzLlRoZV9yZXR1cm5fdHlwZV9vZl9hbl9hc3luY19mdW5jdGlvbl9tdXN0X2VpdGhlcl9iZV9hX3ZhbGlkX3Byb21pc2Vfb3JfbXVzdF9ub3RfY29udGFpbl9hX2NhbGxhYmxlX3RoZW5fbWVtYmVyKSkpLG1lLmZsYWdzJjEzMTA3MiYmKHU9ITApLGUucHVzaElmVW5pcXVlKG8sbWUpfWVsc2Ugcz0hMH0pLCEoby5sZW5ndGg9PT0wJiYhcyYmKHV8fFk3KHIpKSkpcmV0dXJuIFllJiZvLmxlbmd0aCYmcyYmIShTbChyKSYmby5zb21lKGZ1bmN0aW9uKGgpe3JldHVybiBoLnN5bWJvbD09PXIuc3ltYm9sfSkpJiZlLnB1c2hJZlVuaXF1ZShvLFRyKSxvfWZ1bmN0aW9uIFk3KHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMjEzOmNhc2UgMjE0OnJldHVybiEwO2Nhc2UgMTY5OnJldHVybiByLnBhcmVudC5raW5kPT09MjA1O2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHNTKHIsaSl7ZmUodCk7cmV0dXJuO2Z1bmN0aW9uIHQoKXt2YXIgbz1lLmdldEZ1bmN0aW9uRmxhZ3Mocikscz1pJiZCMChpLG8pO2lmKCEocyYmZnMocywxNjM4NSkpJiYhKHIua2luZD09PTE2OHx8ZS5ub2RlSXNNaXNzaW5nKHIuYm9keSl8fHIuYm9keS5raW5kIT09MjM1fHwhUmsocikpKXt2YXIgdT1yLmZsYWdzJjUxMixoPWUuZ2V0RWZmZWN0aXZlUmV0dXJuVHlwZU5vZGUocil8fHI7aWYocyYmcy5mbGFncyYxMzEwNzIpWHIoaCxlLkRpYWdub3N0aWNzLkFfZnVuY3Rpb25fcmV0dXJuaW5nX25ldmVyX2Nhbm5vdF9oYXZlX2FfcmVhY2hhYmxlX2VuZF9wb2ludCk7ZWxzZSBpZihzJiYhdSlYcihoLGUuRGlhZ25vc3RpY3MuQV9mdW5jdGlvbl93aG9zZV9kZWNsYXJlZF90eXBlX2lzX25laXRoZXJfdm9pZF9ub3JfYW55X211c3RfcmV0dXJuX2FfdmFsdWUpO2Vsc2UgaWYocyYmWWUmJiFhbyhUcixzKSlYcihoLGUuRGlhZ25vc3RpY3MuRnVuY3Rpb25fbGFja3NfZW5kaW5nX3JldHVybl9zdGF0ZW1lbnRfYW5kX3JldHVybl90eXBlX2RvZXNfbm90X2luY2x1ZGVfdW5kZWZpbmVkKTtlbHNlIGlmKHllLm5vSW1wbGljaXRSZXR1cm5zKXtpZighcyl7aWYoIXUpcmV0dXJuO3ZhciB6PXlvKHlsKHIpKTtpZihJNihyLHopKXJldHVybn1YcihoLGUuRGlhZ25vc3RpY3MuTm90X2FsbF9jb2RlX3BhdGhzX3JldHVybl9hX3ZhbHVlKX19fX1mdW5jdGlvbiBKayhyLGkpe2lmKGUuRGVidWcuYXNzZXJ0KHIua2luZCE9PTE2OXx8ZS5pc09iamVjdExpdGVyYWxNZXRob2QocikpLHhtKHIpLGUuaXNGdW5jdGlvbkV4cHJlc3Npb24ocikmJlNtKHIsci5uYW1lKSxpJiZpJjQmJkp1KHIpKXtpZighZS5nZXRFZmZlY3RpdmVSZXR1cm5UeXBlTm9kZShyKSYmIWUuaGFzQ29udGV4dFNlbnNpdGl2ZVBhcmFtZXRlcnMocikpe3ZhciB0PWR2KHIpO2lmKHQmJklkKHlvKHQpKSl7dmFyIG89dmEocik7aWYoby5jb250ZXh0RnJlZVR5cGUpcmV0dXJuIG8uY29udGV4dEZyZWVUeXBlO3ZhciBzPUMwKHIsaSksdT1GdSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxlLmVtcHR5QXJyYXkscyx2b2lkIDAsMCwwKSxoPXJzKHIuc3ltYm9sLHdlLFt1XSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KTtyZXR1cm4gaC5vYmplY3RGbGFnc3w9MjYyMTQ0LG8uY29udGV4dEZyZWVUeXBlPWh9fXJldHVybiB4bn12YXIgej1YMChyKTtyZXR1cm4heiYmci5raW5kPT09MjEzJiZXUyhyKSwkNyhyLGkpLEp0KEV0KHIpKX1mdW5jdGlvbiAkNyhyLGkpe3ZhciB0PXZhKHIpO2lmKCEodC5mbGFncyYxMDI0KSl7dmFyIG89ZHYocik7aWYoISh0LmZsYWdzJjEwMjQpKXt0LmZsYWdzfD0xMDI0O3ZhciBzPWUuZmlyc3RPclVuZGVmaW5lZChvdChKdChFdChyKSksMCkpO2lmKCFzKXJldHVybjtpZihKdShyKSlpZihvKXt2YXIgdT13ZyhyKTtpJiZpJjImJks3KHMsbyx1KTt2YXIgaD11P1RnKG8sdS5tYXBwZXIpOm87SWsocyxoKX1lbHNlIEc3KHMpO2lmKG8mJiF5ZyhyKSYmIXMucmVzb2x2ZWRSZXR1cm5UeXBlKXt2YXIgej1DMChyLGkpO3MucmVzb2x2ZWRSZXR1cm5UeXBlfHwocy5yZXNvbHZlZFJldHVyblR5cGU9eil9RHYocil9fX1mdW5jdGlvbiBaNyhyKXtlLkRlYnVnLmFzc2VydChyLmtpbmQhPT0xNjl8fGUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKHIpKTt2YXIgaT1lLmdldEZ1bmN0aW9uRmxhZ3MociksdD15ZyhyKTtpZihzUyhyLHQpLHIuYm9keSlpZihlLmdldEVmZmVjdGl2ZVJldHVyblR5cGVOb2RlKHIpfHx5byh5bChyKSksci5ib2R5LmtpbmQ9PT0yMzUpaW8oci5ib2R5KTtlbHNle3ZhciBvPXluKHIuYm9keSkscz10JiZCMCh0LGkpO2lmKHMpaWYoKGkmMyk9PT0yKXt2YXIgdT14dihvLCExLHIuYm9keSxlLkRpYWdub3N0aWNzLlRoZV9yZXR1cm5fdHlwZV9vZl9hbl9hc3luY19mdW5jdGlvbl9tdXN0X2VpdGhlcl9iZV9hX3ZhbGlkX3Byb21pc2Vfb3JfbXVzdF9ub3RfY29udGFpbl9hX2NhbGxhYmxlX3RoZW5fbWVtYmVyKTtvcCh1LHMsci5ib2R5LHIuYm9keSl9ZWxzZSBvcChvLHMsci5ib2R5LHIuYm9keSl9fWZ1bmN0aW9uIGswKHIsaSx0LG8pe2lmKG89PT12b2lkIDAmJihvPSExKSwhYW8oaSxBdCkpe3ZhciBzPW8mJlN2KGkpO3JldHVybiB6dShyLCEhcyYmYW8ocyxBdCksdCksITF9cmV0dXJuITB9ZnVuY3Rpb24gZU8ocil7aWYoIWUuaXNDYWxsRXhwcmVzc2lvbihyKXx8IWUuaXNCaW5kYWJsZU9iamVjdERlZmluZVByb3BlcnR5Q2FsbChyKSlyZXR1cm4hMTt2YXIgaT1PcyhyLmFyZ3VtZW50c1syXSksdD1kYShpLFwidmFsdWVcIik7aWYodCl7dmFyIG89YmkoaSxcIndyaXRhYmxlXCIpLHM9byYmSnQobyk7aWYoIXN8fHM9PT14dHx8cz09PXV0KXJldHVybiEwO2lmKG8mJm8udmFsdWVEZWNsYXJhdGlvbiYmZS5pc1Byb3BlcnR5QXNzaWdubWVudChvLnZhbHVlRGVjbGFyYXRpb24pKXt2YXIgdT1vLnZhbHVlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIsaD15bih1KTtpZihoPT09eHR8fGg9PT11dClyZXR1cm4hMH1yZXR1cm4hMX12YXIgej1iaShpLFwic2V0XCIpO3JldHVybiF6fWZ1bmN0aW9uIFp1KHIpe3JldHVybiEhKGUuZ2V0Q2hlY2tGbGFncyhyKSY4fHxyLmZsYWdzJjQmJmUuZ2V0RGVjbGFyYXRpb25Nb2RpZmllckZsYWdzRnJvbVN5bWJvbChyKSY2NHx8ci5mbGFncyYzJiZwMChyKSYyfHxyLmZsYWdzJjk4MzA0JiYhKHIuZmxhZ3MmNjU1MzYpfHxyLmZsYWdzJjh8fGUuc29tZShyLmRlY2xhcmF0aW9ucyxlTykpfWZ1bmN0aW9uIGprKHIsaSx0KXt2YXIgbyxzO2lmKHQ9PT0wKXJldHVybiExO2lmKFp1KGkpKXtpZihpLmZsYWdzJjQmJmUuaXNBY2Nlc3NFeHByZXNzaW9uKHIpJiZyLmV4cHJlc3Npb24ua2luZD09PTEwOCl7dmFyIHU9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24ocik7aWYoISh1JiYodS5raW5kPT09MTcxfHxTbCh1KSkpKXJldHVybiEwO2lmKGkudmFsdWVEZWNsYXJhdGlvbil7dmFyIGg9ZS5pc0JpbmFyeUV4cHJlc3Npb24oaS52YWx1ZURlY2xhcmF0aW9uKSx6PXUucGFyZW50PT09aS52YWx1ZURlY2xhcmF0aW9uLnBhcmVudCxtZT11PT09aS52YWx1ZURlY2xhcmF0aW9uLnBhcmVudCxNZT1oJiYoKG89aS5wYXJlbnQpPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by52YWx1ZURlY2xhcmF0aW9uKT09PXUucGFyZW50LCRlPWgmJigocz1pLnBhcmVudCk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLnZhbHVlRGVjbGFyYXRpb24pPT09dSx0cj16fHxtZXx8TWV8fCRlO3JldHVybiF0cn19cmV0dXJuITB9aWYoZS5pc0FjY2Vzc0V4cHJlc3Npb24ocikpe3ZhciBkcj1lLnNraXBQYXJlbnRoZXNlcyhyLmV4cHJlc3Npb24pO2lmKGRyLmtpbmQ9PT03OSl7dmFyIERyPXZhKGRyKS5yZXNvbHZlZFN5bWJvbDtpZihEci5mbGFncyYyMDk3MTUyKXt2YXIgUXI9cnUoRHIpO3JldHVybiEhUXImJlFyLmtpbmQ9PT0yNjh9fX1yZXR1cm4hMX1mdW5jdGlvbiBodihyLGksdCl7dmFyIG89ZS5za2lwT3V0ZXJFeHByZXNzaW9ucyhyLDcpO3JldHVybiBvLmtpbmQhPT03OSYmIWUuaXNBY2Nlc3NFeHByZXNzaW9uKG8pPyhYcihyLGkpLCExKTpvLmZsYWdzJjMyPyhYcihyLHQpLCExKTohMH1mdW5jdGlvbiByTyhyKXt5bihyLmV4cHJlc3Npb24pO3ZhciBpPWUuc2tpcFBhcmVudGhlc2VzKHIuZXhwcmVzc2lvbik7aWYoIWUuaXNBY2Nlc3NFeHByZXNzaW9uKGkpKXJldHVybiBYcihpLGUuRGlhZ25vc3RpY3MuVGhlX29wZXJhbmRfb2ZfYV9kZWxldGVfb3BlcmF0b3JfbXVzdF9iZV9hX3Byb3BlcnR5X3JlZmVyZW5jZSksSWk7ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihpKSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKGkubmFtZSkmJlhyKGksZS5EaWFnbm9zdGljcy5UaGVfb3BlcmFuZF9vZl9hX2RlbGV0ZV9vcGVyYXRvcl9jYW5ub3RfYmVfYV9wcml2YXRlX2lkZW50aWZpZXIpO3ZhciB0PXZhKGkpLG89Y3UodC5yZXNvbHZlZFN5bWJvbCk7cmV0dXJuIG8mJihadShvKSYmWHIoaSxlLkRpYWdub3N0aWNzLlRoZV9vcGVyYW5kX29mX2FfZGVsZXRlX29wZXJhdG9yX2Nhbm5vdF9iZV9hX3JlYWRfb25seV9wcm9wZXJ0eSksaU8oaSxvKSksSWl9ZnVuY3Rpb24gaU8ocixpKXt2YXIgdD1KdChpKTtZZSYmISh0LmZsYWdzJjEzMTA3NSkmJiEoeXI/aS5mbGFncyYxNjc3NzIxNjpqdSh0KSYzMjc2OCkmJlhyKHIsZS5EaWFnbm9zdGljcy5UaGVfb3BlcmFuZF9vZl9hX2RlbGV0ZV9vcGVyYXRvcl9tdXN0X2JlX29wdGlvbmFsKX1mdW5jdGlvbiB0TyhyKXtyZXR1cm4geW4oci5leHByZXNzaW9uKSxob31mdW5jdGlvbiBhTyhyKXtyZXR1cm4geW4oci5leHByZXNzaW9uKSx2aX1mdW5jdGlvbiBuTyhyKXt2YXIgaT1lLmdldENvbnRhaW5pbmdGdW5jdGlvbk9yQ2xhc3NTdGF0aWNCbG9jayhyKTtpZihpJiZlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKGkpKVhyKHIsZS5EaWFnbm9zdGljcy5Bd2FpdF9leHByZXNzaW9uX2Nhbm5vdF9iZV91c2VkX2luc2lkZV9hX2NsYXNzX3N0YXRpY19ibG9jayk7ZWxzZSBpZighKHIuZmxhZ3MmMzI3NjgpKWlmKGUuaXNJblRvcExldmVsQ29udGV4dChyKSl7dmFyIHQ9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpO2lmKCFKZCh0KSl7dmFyIG89dm9pZCAwO2lmKCFlLmlzRWZmZWN0aXZlRXh0ZXJuYWxNb2R1bGUodCx5ZSkpe28hPW51bGx8fChvPWUuZ2V0U3Bhbk9mVG9rZW5BdFBvc2l0aW9uKHQsci5wb3MpKTt2YXIgcz1lLmNyZWF0ZUZpbGVEaWFnbm9zdGljKHQsby5zdGFydCxvLmxlbmd0aCxlLkRpYWdub3N0aWNzLmF3YWl0X2V4cHJlc3Npb25zX2FyZV9vbmx5X2FsbG93ZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX2ZpbGVfd2hlbl90aGF0X2ZpbGVfaXNfYV9tb2R1bGVfYnV0X3RoaXNfZmlsZV9oYXNfbm9faW1wb3J0c19vcl9leHBvcnRzX0NvbnNpZGVyX2FkZGluZ19hbl9lbXB0eV9leHBvcnRfdG9fbWFrZV90aGlzX2ZpbGVfYV9tb2R1bGUpO3JuLmFkZChzKX1zd2l0Y2goZXIpe2Nhc2UgZS5Nb2R1bGVLaW5kLk5vZGUxNjpjYXNlIGUuTW9kdWxlS2luZC5Ob2RlTmV4dDppZih0LmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTKXtvIT1udWxsfHwobz1lLmdldFNwYW5PZlRva2VuQXRQb3NpdGlvbih0LHIucG9zKSkscm4uYWRkKGUuY3JlYXRlRmlsZURpYWdub3N0aWModCxvLnN0YXJ0LG8ubGVuZ3RoLGUuRGlhZ25vc3RpY3MuVGhlX2N1cnJlbnRfZmlsZV9pc19hX0NvbW1vbkpTX21vZHVsZV9hbmRfY2Fubm90X3VzZV9hd2FpdF9hdF90aGVfdG9wX2xldmVsKSk7YnJlYWt9Y2FzZSBlLk1vZHVsZUtpbmQuRVMyMDIyOmNhc2UgZS5Nb2R1bGVLaW5kLkVTTmV4dDpjYXNlIGUuTW9kdWxlS2luZC5TeXN0ZW06aWYoQWU+PTQpYnJlYWs7ZGVmYXVsdDpvIT1udWxsfHwobz1lLmdldFNwYW5PZlRva2VuQXRQb3NpdGlvbih0LHIucG9zKSkscm4uYWRkKGUuY3JlYXRlRmlsZURpYWdub3N0aWModCxvLnN0YXJ0LG8ubGVuZ3RoLGUuRGlhZ25vc3RpY3MuVG9wX2xldmVsX2F3YWl0X2V4cHJlc3Npb25zX2FyZV9vbmx5X2FsbG93ZWRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19zZXRfdG9fZXMyMDIyX2VzbmV4dF9zeXN0ZW1fbm9kZTE2X29yX25vZGVuZXh0X2FuZF90aGVfdGFyZ2V0X29wdGlvbl9pc19zZXRfdG9fZXMyMDE3X29yX2hpZ2hlcikpO2JyZWFrfX19ZWxzZXt2YXIgdD1lLmdldFNvdXJjZUZpbGVPZk5vZGUocik7aWYoIUpkKHQpKXt2YXIgbz1lLmdldFNwYW5PZlRva2VuQXRQb3NpdGlvbih0LHIucG9zKSxzPWUuY3JlYXRlRmlsZURpYWdub3N0aWModCxvLnN0YXJ0LG8ubGVuZ3RoLGUuRGlhZ25vc3RpY3MuYXdhaXRfZXhwcmVzc2lvbnNfYXJlX29ubHlfYWxsb3dlZF93aXRoaW5fYXN5bmNfZnVuY3Rpb25zX2FuZF9hdF90aGVfdG9wX2xldmVsc19vZl9tb2R1bGVzKTtpZihpJiZpLmtpbmQhPT0xNzEmJihlLmdldEZ1bmN0aW9uRmxhZ3MoaSkmMik9PT0wKXt2YXIgdT1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKGksZS5EaWFnbm9zdGljcy5EaWRfeW91X21lYW5fdG9fbWFya190aGlzX2Z1bmN0aW9uX2FzX2FzeW5jKTtlLmFkZFJlbGF0ZWRJbmZvKHMsdSl9cm4uYWRkKHMpfX14YihyKSYmWHIocixlLkRpYWdub3N0aWNzLmF3YWl0X2V4cHJlc3Npb25zX2Nhbm5vdF9iZV91c2VkX2luX2FfcGFyYW1ldGVyX2luaXRpYWxpemVyKX1mdW5jdGlvbiBvTyhyKXtmZShmdW5jdGlvbigpe3JldHVybiBuTyhyKX0pO3ZhciBpPXluKHIuZXhwcmVzc2lvbiksdD14dihpLCEwLHIsZS5EaWFnbm9zdGljcy5UeXBlX29mX2F3YWl0X29wZXJhbmRfbXVzdF9laXRoZXJfYmVfYV92YWxpZF9wcm9taXNlX29yX211c3Rfbm90X2NvbnRhaW5fYV9jYWxsYWJsZV90aGVuX21lbWJlcik7cmV0dXJuIHQ9PT1pJiYhbm4odCkmJiEoaS5mbGFncyYzKSYmTHMoITEsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLGUuRGlhZ25vc3RpY3MuYXdhaXRfaGFzX25vX2VmZmVjdF9vbl90aGVfdHlwZV9vZl90aGlzX2V4cHJlc3Npb24pKSx0fWZ1bmN0aW9uIHNPKHIpe3ZhciBpPXluKHIub3BlcmFuZCk7aWYoaT09PUJ0KXJldHVybiBCdDtzd2l0Y2goci5vcGVyYW5kLmtpbmQpe2Nhc2UgODpzd2l0Y2goci5vcGVyYXRvcil7Y2FzZSA0MDpyZXR1cm4gU2coSWYoLXIub3BlcmFuZC50ZXh0KSk7Y2FzZSAzOTpyZXR1cm4gU2coSWYoK3Iub3BlcmFuZC50ZXh0KSl9YnJlYWs7Y2FzZSA5OmlmKHIub3BlcmF0b3I9PT00MClyZXR1cm4gU2coRUQoe25lZ2F0aXZlOiEwLGJhc2UxMFZhbHVlOmUucGFyc2VQc2V1ZG9CaWdJbnQoci5vcGVyYW5kLnRleHQpfSkpfXN3aXRjaChyLm9wZXJhdG9yKXtjYXNlIDM5OmNhc2UgNDA6Y2FzZSA1NDpyZXR1cm4gYmwoaSxyLm9wZXJhbmQpLEEwKGksMTIyODgpJiZYcihyLm9wZXJhbmQsZS5EaWFnbm9zdGljcy5UaGVfMF9vcGVyYXRvcl9jYW5ub3RfYmVfYXBwbGllZF90b190eXBlX3N5bWJvbCxlLnRva2VuVG9TdHJpbmcoci5vcGVyYXRvcikpLHIub3BlcmF0b3I9PT0zOT8oZnMoaSwyMTEyKSYmWHIoci5vcGVyYW5kLGUuRGlhZ25vc3RpY3MuT3BlcmF0b3JfMF9jYW5ub3RfYmVfYXBwbGllZF90b190eXBlXzEsZS50b2tlblRvU3RyaW5nKHIub3BlcmF0b3IpLE90KEtsKGkpKSksbnQpOmNTKGkpO2Nhc2UgNTM6Qmcoci5vcGVyYW5kKTt2YXIgdD1jcChpKSYxMjU4MjkxMjtyZXR1cm4gdD09PTQxOTQzMDQ/eHQ6dD09PTgzODg2MDg/RHQ6SWk7Y2FzZSA0NTpjYXNlIDQ2OnZhciBvPWswKHIub3BlcmFuZCxibChpLHIub3BlcmFuZCksZS5EaWFnbm9zdGljcy5Bbl9hcml0aG1ldGljX29wZXJhbmRfbXVzdF9iZV9vZl90eXBlX2FueV9udW1iZXJfYmlnaW50X29yX2FuX2VudW1fdHlwZSk7cmV0dXJuIG8mJmh2KHIub3BlcmFuZCxlLkRpYWdub3N0aWNzLlRoZV9vcGVyYW5kX29mX2FuX2luY3JlbWVudF9vcl9kZWNyZW1lbnRfb3BlcmF0b3JfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzLGUuRGlhZ25vc3RpY3MuVGhlX29wZXJhbmRfb2ZfYW5faW5jcmVtZW50X29yX2RlY3JlbWVudF9vcGVyYXRvcl9tYXlfbm90X2JlX2FuX29wdGlvbmFsX3Byb3BlcnR5X2FjY2VzcyksY1MoaSl9cmV0dXJuIFBlfWZ1bmN0aW9uIGNPKHIpe3ZhciBpPXluKHIub3BlcmFuZCk7aWYoaT09PUJ0KXJldHVybiBCdDt2YXIgdD1rMChyLm9wZXJhbmQsYmwoaSxyLm9wZXJhbmQpLGUuRGlhZ25vc3RpY3MuQW5fYXJpdGhtZXRpY19vcGVyYW5kX211c3RfYmVfb2ZfdHlwZV9hbnlfbnVtYmVyX2JpZ2ludF9vcl9hbl9lbnVtX3R5cGUpO3JldHVybiB0JiZodihyLm9wZXJhbmQsZS5EaWFnbm9zdGljcy5UaGVfb3BlcmFuZF9vZl9hbl9pbmNyZW1lbnRfb3JfZGVjcmVtZW50X29wZXJhdG9yX211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyxlLkRpYWdub3N0aWNzLlRoZV9vcGVyYW5kX29mX2FuX2luY3JlbWVudF9vcl9kZWNyZW1lbnRfb3BlcmF0b3JfbWF5X25vdF9iZV9hbl9vcHRpb25hbF9wcm9wZXJ0eV9hY2Nlc3MpLGNTKGkpfWZ1bmN0aW9uIGNTKHIpe3JldHVybiBmcyhyLDIxMTIpP05zKHIsMyl8fGZzKHIsMjk2KT9BdDpNdDpudH1mdW5jdGlvbiBBMChyLGkpe2lmKGZzKHIsaSkpcmV0dXJuITA7dmFyIHQ9SGQocik7cmV0dXJuISF0JiZmcyh0LGkpfWZ1bmN0aW9uIGZzKHIsaSl7aWYoci5mbGFncyZpKXJldHVybiEwO2lmKHIuZmxhZ3MmMzE0NTcyOClmb3IodmFyIHQ9ci50eXBlcyxvPTAscz10O288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dO2lmKGZzKHUsaSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gTnMocixpLHQpe3JldHVybiByLmZsYWdzJmk/ITA6dCYmci5mbGFncyYxMTQ2OTE/ITE6ISEoaSYyOTYpJiZhbyhyLG50KXx8ISEoaSYyMTEyKSYmYW8ocixNdCl8fCEhKGkmNDAyNjUzMzE2KSYmYW8ocixMaSl8fCEhKGkmNTI4KSYmYW8ocixJaSl8fCEhKGkmMTYzODQpJiZhbyhyLEZpKXx8ISEoaSYxMzEwNzIpJiZhbyhyLHVpKXx8ISEoaSY2NTUzNikmJmFvKHIsV2kpfHwhIShpJjMyNzY4KSYmYW8ocixUcil8fCEhKGkmNDA5NikmJmFvKHIsS2kpfHwhIShpJjY3MTA4ODY0KSYmYW8ocixPaSl9ZnVuY3Rpb24gTGcocixpLHQpe3JldHVybiByLmZsYWdzJjEwNDg1NzY/ZS5ldmVyeShyLnR5cGVzLGZ1bmN0aW9uKG8pe3JldHVybiBMZyhvLGksdCl9KTpOcyhyLGksdCl9ZnVuY3Rpb24gdVMocil7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyhyKSYxNikmJiEhci5zeW1ib2wmJmxTKHIuc3ltYm9sKX1mdW5jdGlvbiBsUyhyKXtyZXR1cm4oci5mbGFncyYxMjgpIT09MH1mdW5jdGlvbiB1TyhyLGksdCxvKXtyZXR1cm4gdD09PUJ0fHxvPT09QnQ/QnQ6KCF0YSh0KSYmTGcodCwxMzEwNjgpJiZYcihyLGUuRGlhZ25vc3RpY3MuVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2luc3RhbmNlb2ZfZXhwcmVzc2lvbl9tdXN0X2JlX29mX3R5cGVfYW55X2FuX29iamVjdF90eXBlX29yX2FfdHlwZV9wYXJhbWV0ZXIpLHRhKG8pfHxSUyhvKXx8RV8obyxicil8fFhyKGksZS5EaWFnbm9zdGljcy5UaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FuX2luc3RhbmNlb2ZfZXhwcmVzc2lvbl9tdXN0X2JlX29mX3R5cGVfYW55X29yX29mX2FfdHlwZV9hc3NpZ25hYmxlX3RvX3RoZV9GdW5jdGlvbl9pbnRlcmZhY2VfdHlwZSksSWkpfWZ1bmN0aW9uIGxPKHIsaSx0LG8pe2lmKHQ9PT1CdHx8bz09PUJ0KXJldHVybiBCdDtpZihlLmlzUHJpdmF0ZUlkZW50aWZpZXIocikpe2lmKEFlPDk5JiZmYyhyLDIwOTcxNTIpLCF2YShyKS5yZXNvbHZlZFN5bWJvbCYmZS5nZXRDb250YWluaW5nQ2xhc3Mocikpe3ZhciBzPVdiKHIsby5zeW1ib2wsITApO1lDKHIsbyxzKX19ZWxzZSB0PWJsKHQsciksTGcodCw0MDI2NjU5MDApfHxOcyh0LDQwNzEwOTYzMil8fFhyKHIsZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5faW5fZXhwcmVzc2lvbl9tdXN0X2JlX2FfcHJpdmF0ZV9pZGVudGlmaWVyX29yX29mX3R5cGVfYW55X3N0cmluZ19udW1iZXJfb3Jfc3ltYm9sKTtvPWJsKG8saSk7dmFyIHU9UV8obyk7cmV0dXJuKCFMZyhvLDEyNjA5MTI2NCl8fHUmJihOcyhvLDMxNDU3MjgpJiYhTGcodSwxMjYwOTEyNjQpfHwhZnModSwxMjY2MTU1NTIpKSkmJlhyKGksZS5EaWFnbm9zdGljcy5UaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FuX2luX2V4cHJlc3Npb25fbXVzdF9ub3RfYmVfYV9wcmltaXRpdmUpLElpfWZ1bmN0aW9uIGZPKHIsaSx0KXt2YXIgbz1yLnByb3BlcnRpZXM7aWYoWWUmJm8ubGVuZ3RoPT09MClyZXR1cm4gYmwoaSxyKTtmb3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKylVayhyLGkscyxvLHQpO3JldHVybiBpfWZ1bmN0aW9uIFVrKHIsaSx0LG8scyl7cz09PXZvaWQgMCYmKHM9ITEpO3ZhciB1PXIucHJvcGVydGllcyxoPXVbdF07aWYoaC5raW5kPT09Mjk2fHxoLmtpbmQ9PT0yOTcpe3ZhciB6PWgubmFtZSxtZT1aXyh6KTtpZihfZihtZSkpe3ZhciBNZT1wZihtZSksJGU9YmkoaSxNZSk7JGUmJih4eSgkZSxoLHMpLEpiKGgsITEsITAsaSwkZSkpfXZhciB0cj1KYyhpLG1lLDMyLHopLGRyPWlzKGgsdHIpO3JldHVybiBSZChoLmtpbmQ9PT0yOTc/aDpoLmluaXRpYWxpemVyLGRyKX1lbHNlIGlmKGgua2luZD09PTI5OClpZih0PHUubGVuZ3RoLTEpWHIoaCxlLkRpYWdub3N0aWNzLkFfcmVzdF9lbGVtZW50X211c3RfYmVfbGFzdF9pbl9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybik7ZWxzZXtBZTw5OSYmZmMoaCw0KTt2YXIgRHI9W107aWYobylmb3IodmFyIFFyPTAsbGk9bztRcjxsaS5sZW5ndGg7UXIrKyl7dmFyIFRpPWxpW1FyXTtlLmlzU3ByZWFkQXNzaWdubWVudChUaSl8fERyLnB1c2goVGkubmFtZSl9dmFyIGRyPUxvKGksRHIsaS5zeW1ib2wpO3JldHVybiBuZyhvLGUuRGlhZ25vc3RpY3MuQV9yZXN0X3BhcmFtZXRlcl9vcl9iaW5kaW5nX3BhdHRlcm5fbWF5X25vdF9oYXZlX2FfdHJhaWxpbmdfY29tbWEpLFJkKGguZXhwcmVzc2lvbixkcil9ZWxzZSBYcihoLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfYXNzaWdubWVudF9leHBlY3RlZCl9ZnVuY3Rpb24gX08ocixpLHQpe3ZhciBvPXIuZWxlbWVudHM7QWU8MiYmeWUuZG93bmxldmVsSXRlcmF0aW9uJiZmYyhyLDUxMik7Zm9yKHZhciBzPU5fKDE5MyxpLFRyLHIpfHxQZSx1PXllLm5vVW5jaGVja2VkSW5kZXhlZEFjY2Vzcz92b2lkIDA6cyxoPTA7aDxvLmxlbmd0aDtoKyspe3ZhciB6PXM7ci5lbGVtZW50c1toXS5raW5kPT09MjI1JiYoej11PXUhPW51bGw/dTpOXyg2NSxpLFRyLHIpfHxQZSksemsocixpLGgseix0KX1yZXR1cm4gaX1mdW5jdGlvbiB6ayhyLGksdCxvLHMpe3ZhciB1PXIuZWxlbWVudHMsaD11W3RdO2lmKGgua2luZCE9PTIyNyl7aWYoaC5raW5kIT09MjI1KXt2YXIgej1JZih0KTtpZihzcChpKSl7dmFyIG1lPTMyfChwbShoKT8xNjowKSxNZT1lcChpLHosbWUsZWQoaCx6KSl8fFBlLCRlPXBtKGgpP0tzKE1lLDUyNDI4OCk6TWUsdHI9aXMoaCwkZSk7cmV0dXJuIFJkKGgsdHIscyl9cmV0dXJuIFJkKGgsbyxzKX1pZih0PHUubGVuZ3RoLTEpWHIoaCxlLkRpYWdub3N0aWNzLkFfcmVzdF9lbGVtZW50X211c3RfYmVfbGFzdF9pbl9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybik7ZWxzZXt2YXIgZHI9aC5leHByZXNzaW9uO2lmKGRyLmtpbmQ9PT0yMjEmJmRyLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzKVhyKGRyLm9wZXJhdG9yVG9rZW4sZS5EaWFnbm9zdGljcy5BX3Jlc3RfZWxlbWVudF9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcik7ZWxzZXtuZyhyLmVsZW1lbnRzLGUuRGlhZ25vc3RpY3MuQV9yZXN0X3BhcmFtZXRlcl9vcl9iaW5kaW5nX3BhdHRlcm5fbWF5X25vdF9oYXZlX2FfdHJhaWxpbmdfY29tbWEpO3ZhciB0cj1nZihpLFluKT9TcyhpLGZ1bmN0aW9uKFFyKXtyZXR1cm4gWm0oUXIsdCl9KTpacyhvKTtyZXR1cm4gUmQoZHIsdHIscyl9fX19ZnVuY3Rpb24gUmQocixpLHQsbyl7dmFyIHM7aWYoci5raW5kPT09Mjk3KXt2YXIgdT1yO3Uub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyJiYoWWUmJiEoanUoeW4odS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXIpKSYzMjc2OCkmJihpPUtzKGksNTI0Mjg4KSksbU8odS5uYW1lLHUuZXF1YWxzVG9rZW4sdS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXIsdCkpLHM9ci5uYW1lfWVsc2Ugcz1yO3JldHVybiBzLmtpbmQ9PT0yMjEmJnMub3BlcmF0b3JUb2tlbi5raW5kPT09NjMmJihJcihzLHQpLHM9cy5sZWZ0KSxzLmtpbmQ9PT0yMDU/Zk8ocyxpLG8pOnMua2luZD09PTIwND9fTyhzLGksdCk6cE8ocyxpLHQpfWZ1bmN0aW9uIHBPKHIsaSx0KXt2YXIgbz15bihyLHQpLHM9ci5wYXJlbnQua2luZD09PTI5OD9lLkRpYWdub3N0aWNzLlRoZV90YXJnZXRfb2ZfYW5fb2JqZWN0X3Jlc3RfYXNzaWdubWVudF9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3M6ZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXNzaWdubWVudF9leHByZXNzaW9uX211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2Vzcyx1PXIucGFyZW50LmtpbmQ9PT0yOTg/ZS5EaWFnbm9zdGljcy5UaGVfdGFyZ2V0X29mX2FuX29iamVjdF9yZXN0X2Fzc2lnbm1lbnRfbWF5X25vdF9iZV9hbl9vcHRpb25hbF9wcm9wZXJ0eV9hY2Nlc3M6ZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXNzaWdubWVudF9leHByZXNzaW9uX21heV9ub3RfYmVfYW5fb3B0aW9uYWxfcHJvcGVydHlfYWNjZXNzO3JldHVybiBodihyLHMsdSkmJm9wKGksbyxyLHIpLGUuaXNQcml2YXRlSWRlbnRpZmllclByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihyKSYmZmMoci5wYXJlbnQsMTA0ODU3NiksaX1mdW5jdGlvbiBJeShyKXtzd2l0Y2gocj1lLnNraXBQYXJlbnRoZXNlcyhyKSxyLmtpbmQpe2Nhc2UgNzk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMjEwOmNhc2UgMjIzOmNhc2UgMTQ6Y2FzZSA4OmNhc2UgOTpjYXNlIDExMDpjYXNlIDk1OmNhc2UgMTA0OmNhc2UgMTUzOmNhc2UgMjEzOmNhc2UgMjI2OmNhc2UgMjE0OmNhc2UgMjA0OmNhc2UgMjA1OmNhc2UgMjE2OmNhc2UgMjMwOmNhc2UgMjc5OmNhc2UgMjc4OnJldHVybiEwO2Nhc2UgMjIyOnJldHVybiBJeShyLndoZW5UcnVlKSYmSXkoci53aGVuRmFsc2UpO2Nhc2UgMjIxOnJldHVybiBlLmlzQXNzaWdubWVudE9wZXJhdG9yKHIub3BlcmF0b3JUb2tlbi5raW5kKT8hMTpJeShyLmxlZnQpJiZJeShyLnJpZ2h0KTtjYXNlIDIxOTpjYXNlIDIyMDpzd2l0Y2goci5vcGVyYXRvcil7Y2FzZSA1MzpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA1NDpyZXR1cm4hMH1yZXR1cm4hMTtjYXNlIDIxNzpjYXNlIDIxMTpjYXNlIDIyOTpkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBmUyhyLGkpe3JldHVybihpLmZsYWdzJjk4MzA0KSE9PTB8fGNtKHIsaSl9ZnVuY3Rpb24gZE8oKXt2YXIgcj1lLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb25UcmFtcG9saW5lKGksdCxvLHMsdSxoKTtyZXR1cm4gZnVuY3Rpb24oZHIsRHIpe3ZhciBRcj1yKGRyLERyKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQoUXIpLFFyfTtmdW5jdGlvbiBpKGRyLERyLFFyKXtpZihEcj8oRHIuc3RhY2tJbmRleCsrLERyLnNraXA9ITEsTWUoRHIsdm9pZCAwKSx0cihEcix2b2lkIDApKTpEcj17Y2hlY2tNb2RlOlFyLHNraXA6ITEsc3RhY2tJbmRleDowLHR5cGVTdGFjazpbdm9pZCAwLHZvaWQgMF19LGUuaXNJbkpTRmlsZShkcikmJmUuZ2V0QXNzaWduZWRFeHBhbmRvSW5pdGlhbGl6ZXIoZHIpKXJldHVybiBEci5za2lwPSEwLHRyKERyLHluKGRyLnJpZ2h0LFFyKSksRHI7Z08oZHIpO3ZhciBsaT1kci5vcGVyYXRvclRva2VuLmtpbmQ7cmV0dXJuIGxpPT09NjMmJihkci5sZWZ0LmtpbmQ9PT0yMDV8fGRyLmxlZnQua2luZD09PTIwNCkmJihEci5za2lwPSEwLHRyKERyLFJkKGRyLmxlZnQseW4oZHIucmlnaHQsUXIpLFFyLGRyLnJpZ2h0LmtpbmQ9PT0xMDgpKSksRHJ9ZnVuY3Rpb24gdChkcixEcixRcil7aWYoIURyLnNraXApcmV0dXJuIHooRHIsZHIpfWZ1bmN0aW9uIG8oZHIsRHIsUXIpe2lmKCFEci5za2lwKXt2YXIgbGk9JGUoRHIpO2UuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKGxpKSxNZShEcixsaSksdHIoRHIsdm9pZCAwKTt2YXIgVGk9ZHIua2luZDtpZihUaT09PTU1fHxUaT09PTU2fHxUaT09PTYwKXtpZihUaT09PTU1KXt2YXIgQ2k9ZS53YWxrVXBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbnMoUXIucGFyZW50KTtUUyhRci5sZWZ0LGUuaXNJZlN0YXRlbWVudChDaSk/Q2kudGhlblN0YXRlbWVudDp2b2lkIDApfWg2KGxpLFFyLmxlZnQpfX19ZnVuY3Rpb24gcyhkcixEcixRcil7aWYoIURyLnNraXApcmV0dXJuIHooRHIsZHIpfWZ1bmN0aW9uIHUoZHIsRHIpe3ZhciBRcjtpZihEci5za2lwKVFyPSRlKERyKTtlbHNle3ZhciBsaT1tZShEcik7ZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQobGkpO3ZhciBUaT0kZShEcik7ZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQoVGkpLFFyPVdrKGRyLmxlZnQsZHIub3BlcmF0b3JUb2tlbixkci5yaWdodCxsaSxUaSxkcil9cmV0dXJuIERyLnNraXA9ITEsTWUoRHIsdm9pZCAwKSx0cihEcix2b2lkIDApLERyLnN0YWNrSW5kZXgtLSxRcn1mdW5jdGlvbiBoKGRyLERyLFFyKXtyZXR1cm4gdHIoZHIsRHIpLGRyfWZ1bmN0aW9uIHooZHIsRHIpe2lmKGUuaXNCaW5hcnlFeHByZXNzaW9uKERyKSlyZXR1cm4gRHI7dHIoZHIseW4oRHIsZHIuY2hlY2tNb2RlKSl9ZnVuY3Rpb24gbWUoZHIpe3JldHVybiBkci50eXBlU3RhY2tbZHIuc3RhY2tJbmRleF19ZnVuY3Rpb24gTWUoZHIsRHIpe2RyLnR5cGVTdGFja1tkci5zdGFja0luZGV4XT1Ecn1mdW5jdGlvbiAkZShkcil7cmV0dXJuIGRyLnR5cGVTdGFja1tkci5zdGFja0luZGV4KzFdfWZ1bmN0aW9uIHRyKGRyLERyKXtkci50eXBlU3RhY2tbZHIuc3RhY2tJbmRleCsxXT1Ecn19ZnVuY3Rpb24gZ08ocil7dmFyIGk9ci5sZWZ0LHQ9ci5vcGVyYXRvclRva2VuLG89ci5yaWdodDt0LmtpbmQ9PT02MCYmKGUuaXNCaW5hcnlFeHByZXNzaW9uKGkpJiYoaS5vcGVyYXRvclRva2VuLmtpbmQ9PT01Nnx8aS5vcGVyYXRvclRva2VuLmtpbmQ9PT01NSkmJlR0KGksZS5EaWFnbm9zdGljcy5fMF9hbmRfMV9vcGVyYXRpb25zX2Nhbm5vdF9iZV9taXhlZF93aXRob3V0X3BhcmVudGhlc2VzLGUudG9rZW5Ub1N0cmluZyhpLm9wZXJhdG9yVG9rZW4ua2luZCksZS50b2tlblRvU3RyaW5nKHQua2luZCkpLGUuaXNCaW5hcnlFeHByZXNzaW9uKG8pJiYoby5vcGVyYXRvclRva2VuLmtpbmQ9PT01Nnx8by5vcGVyYXRvclRva2VuLmtpbmQ9PT01NSkmJlR0KG8sZS5EaWFnbm9zdGljcy5fMF9hbmRfMV9vcGVyYXRpb25zX2Nhbm5vdF9iZV9taXhlZF93aXRob3V0X3BhcmVudGhlc2VzLGUudG9rZW5Ub1N0cmluZyhvLm9wZXJhdG9yVG9rZW4ua2luZCksZS50b2tlblRvU3RyaW5nKHQua2luZCkpKX1mdW5jdGlvbiBtTyhyLGksdCxvLHMpe3ZhciB1PWkua2luZDtpZih1PT09NjMmJihyLmtpbmQ9PT0yMDV8fHIua2luZD09PTIwNCkpcmV0dXJuIFJkKHIseW4odCxvKSxvLHQua2luZD09PTEwOCk7dmFyIGg7dT09PTU1fHx1PT09NTZ8fHU9PT02MD9oPUJnKHIsbyk6aD15bihyLG8pO3ZhciB6PXluKHQsbyk7cmV0dXJuIFdrKHIsaSx0LGgseixzKX1mdW5jdGlvbiBXayhyLGksdCxvLHMsdSl7dmFyIGg9aS5raW5kO3N3aXRjaChoKXtjYXNlIDQxOmNhc2UgNDI6Y2FzZSA2NjpjYXNlIDY3OmNhc2UgNDM6Y2FzZSA2ODpjYXNlIDQ0OmNhc2UgNjk6Y2FzZSA0MDpjYXNlIDY1OmNhc2UgNDc6Y2FzZSA3MDpjYXNlIDQ4OmNhc2UgNzE6Y2FzZSA0OTpjYXNlIDcyOmNhc2UgNTE6Y2FzZSA3NDpjYXNlIDUyOmNhc2UgNzg6Y2FzZSA1MDpjYXNlIDczOmlmKG89PT1CdHx8cz09PUJ0KXJldHVybiBCdDtvPWJsKG8scikscz1ibChzLHQpO3ZhciB6PXZvaWQgMDtpZihvLmZsYWdzJjUyOCYmcy5mbGFncyY1MjgmJih6PWphKGkua2luZCkpIT09dm9pZCAwKXJldHVybiBYcih1fHxpLGUuRGlhZ25vc3RpY3MuVGhlXzBfb3BlcmF0b3JfaXNfbm90X2FsbG93ZWRfZm9yX2Jvb2xlYW5fdHlwZXNfQ29uc2lkZXJfdXNpbmdfMV9pbnN0ZWFkLGUudG9rZW5Ub1N0cmluZyhpLmtpbmQpLGUudG9rZW5Ub1N0cmluZyh6KSksbnQ7dmFyIG1lPWswKHIsbyxlLkRpYWdub3N0aWNzLlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9hcml0aG1ldGljX29wZXJhdGlvbl9tdXN0X2JlX29mX3R5cGVfYW55X251bWJlcl9iaWdpbnRfb3JfYW5fZW51bV90eXBlLCEwKSxNZT1rMCh0LHMsZS5EaWFnbm9zdGljcy5UaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FuX2FyaXRobWV0aWNfb3BlcmF0aW9uX211c3RfYmVfb2ZfdHlwZV9hbnlfbnVtYmVyX2JpZ2ludF9vcl9hbl9lbnVtX3R5cGUsITApLCRlO2lmKE5zKG8sMykmJk5zKHMsMyl8fCEoZnMobywyMTEyKXx8ZnMocywyMTEyKSkpJGU9bnQ7ZWxzZSBpZihOdChvLHMpKXtzd2l0Y2goaCl7Y2FzZSA0OTpjYXNlIDcyOkVvKCk7YnJlYWs7Y2FzZSA0MjpjYXNlIDY3OkFlPDMmJlhyKHUsZS5EaWFnbm9zdGljcy5FeHBvbmVudGlhdGlvbl9jYW5ub3RfYmVfcGVyZm9ybWVkX29uX2JpZ2ludF92YWx1ZXNfdW5sZXNzX3RoZV90YXJnZXRfb3B0aW9uX2lzX3NldF90b19lczIwMTZfb3JfbGF0ZXIpfSRlPU10fWVsc2UgRW8oTnQpLCRlPVBlO3JldHVybiBtZSYmTWUmJkZuKCRlKSwkZTtjYXNlIDM5OmNhc2UgNjQ6aWYobz09PUJ0fHxzPT09QnQpcmV0dXJuIEJ0OyFOcyhvLDQwMjY1MzMxNikmJiFOcyhzLDQwMjY1MzMxNikmJihvPWJsKG8scikscz1ibChzLHQpKTt2YXIgdHI9dm9pZCAwO2lmKE5zKG8sMjk2LCEwKSYmTnMocywyOTYsITApP3RyPW50Ok5zKG8sMjExMiwhMCkmJk5zKHMsMjExMiwhMCk/dHI9TXQ6TnMobyw0MDI2NTMzMTYsITApfHxOcyhzLDQwMjY1MzMxNiwhMCk/dHI9TGk6KHRhKG8pfHx0YShzKSkmJih0cj1ubihvKXx8bm4ocyk/UGU6T2UpLHRyJiYhU24oaCkpcmV0dXJuIHRyO2lmKCF0cil7dmFyIGRyPTQwMjY1NTcyNztyZXR1cm4gRW8oZnVuY3Rpb24oaXQsWXQpe3JldHVybiBOcyhpdCxkcikmJk5zKFl0LGRyKX0pLE9lfXJldHVybiBoPT09NjQmJkZuKHRyKSx0cjtjYXNlIDI5OmNhc2UgMzE6Y2FzZSAzMjpjYXNlIDMzOnJldHVybiBTbihoKSYmKG89S2woYmwobyxyKSkscz1LbChibChzLHQpKSxUbihmdW5jdGlvbihpdCxZdCl7cmV0dXJuIGNtKGl0LFl0KXx8Y20oWXQsaXQpfHxhbyhpdCxBdCkmJmFvKFl0LEF0KX0pKSxJaTtjYXNlIDM0OmNhc2UgMzU6Y2FzZSAzNjpjYXNlIDM3OnJldHVybiBUbihmdW5jdGlvbihpdCxZdCl7cmV0dXJuIGZTKGl0LFl0KXx8ZlMoWXQsaXQpfSksSWk7Y2FzZSAxMDI6cmV0dXJuIHVPKHIsdCxvLHMpO2Nhc2UgMTAxOnJldHVybiBsTyhyLHQsbyxzKTtjYXNlIDU1OmNhc2UgNzY6e3ZhciBEcj1jcChvKSY0MTk0MzA0P1BhKFtQdyhZZT9vOktsKHMpKSxzXSk6bztyZXR1cm4gaD09PTc2JiZGbihzKSxEcn1jYXNlIDU2OmNhc2UgNzU6e3ZhciBRcj1jcChvKSY4Mzg4NjA4P1BhKFtPRShvKSxzXSwyKTpvO3JldHVybiBoPT09NzUmJkZuKHMpLFFyfWNhc2UgNjA6Y2FzZSA3Nzp7dmFyIGxpPWNwKG8pJjI2MjE0ND9QYShbQ18obyksc10sMik6bztyZXR1cm4gaD09PTc3JiZGbihzKSxsaX1jYXNlIDYzOnZhciBUaT1lLmlzQmluYXJ5RXhwcmVzc2lvbihyLnBhcmVudCk/ZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHIucGFyZW50KTowO3JldHVybiBSYShUaSxzKSx3bihUaSk/KCghKHMuZmxhZ3MmNTI0Mjg4KXx8VGkhPT0yJiZUaSE9PTYmJiFPZihzKSYmIWRiKHMpJiYhKGUuZ2V0T2JqZWN0RmxhZ3MocykmMSkpJiZGbihzKSxvKTooRm4ocyksZm0ocykpO2Nhc2UgMjc6aWYoIXllLmFsbG93VW5yZWFjaGFibGVDb2RlJiZJeShyKSYmIWNhKHQpKXt2YXIgQ2k9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLCRpPUNpLnRleHQsWmk9ZS5za2lwVHJpdmlhKCRpLHIucG9zKSxxdD1DaS5wYXJzZURpYWdub3N0aWNzLnNvbWUoZnVuY3Rpb24oaXQpe3JldHVybiBpdC5jb2RlIT09ZS5EaWFnbm9zdGljcy5KU1hfZXhwcmVzc2lvbnNfbXVzdF9oYXZlX29uZV9wYXJlbnRfZWxlbWVudC5jb2RlPyExOmUudGV4dFNwYW5Db250YWluc1Bvc2l0aW9uKGl0LFppKX0pO3F0fHxYcihyLGUuRGlhZ25vc3RpY3MuTGVmdF9zaWRlX29mX2NvbW1hX29wZXJhdG9yX2lzX3VudXNlZF9hbmRfaGFzX25vX3NpZGVfZWZmZWN0cyl9cmV0dXJuIHM7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKCl9ZnVuY3Rpb24gTnQoaXQsWXQpe3JldHVybiBOcyhpdCwyMTEyKSYmTnMoWXQsMjExMil9ZnVuY3Rpb24gUmEoaXQsWXQpe2lmKGl0PT09Milmb3IodmFyIElhPTAsUXQ9UGYoWXQpO0lhPFF0Lmxlbmd0aDtJYSsrKXt2YXIgS2E9UXRbSWFdLGNuPUp0KEthKTtpZihjbi5zeW1ib2wmJmNuLnN5bWJvbC5mbGFncyYzMil7dmFyIFVuPUthLmVzY2FwZWROYW1lLG9hPWVzKEthLnZhbHVlRGVjbGFyYXRpb24sVW4sNzg4OTY4LHZvaWQgMCxVbiwhMSk7KG9hPT1udWxsP3ZvaWQgMDpvYS5kZWNsYXJhdGlvbnMpJiZvYS5kZWNsYXJhdGlvbnMuc29tZShlLmlzSlNEb2NUeXBlZGVmVGFnKSYmKENsKG9hLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMCxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFVuKSxLYSksQ2woS2EsZS5EaWFnbm9zdGljcy5EdXBsaWNhdGVfaWRlbnRpZmllcl8wLGUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoVW4pLG9hKSl9fX1mdW5jdGlvbiBjYShpdCl7cmV0dXJuIGl0LmtpbmQ9PT03OSYmaXQuZXNjYXBlZFRleHQ9PT1cImV2YWxcIn1mdW5jdGlvbiBTbihpdCl7dmFyIFl0PUEwKG8sMTIyODgpP3I6QTAocywxMjI4OCk/dDp2b2lkIDA7cmV0dXJuIFl0PyhYcihZdCxlLkRpYWdub3N0aWNzLlRoZV8wX29wZXJhdG9yX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX3R5cGVfc3ltYm9sLGUudG9rZW5Ub1N0cmluZyhpdCkpLCExKTohMH1mdW5jdGlvbiBqYShpdCl7c3dpdGNoKGl0KXtjYXNlIDUxOmNhc2UgNzQ6cmV0dXJuIDU2O2Nhc2UgNTI6Y2FzZSA3ODpyZXR1cm4gMzc7Y2FzZSA1MDpjYXNlIDczOnJldHVybiA1NTtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gRm4oaXQpe2UuaXNBc3NpZ25tZW50T3BlcmF0b3IoaCkmJmZlKFl0KTtmdW5jdGlvbiBZdCgpe2lmKGh2KHIsZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYW5fYXNzaWdubWVudF9leHByZXNzaW9uX211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyxlLkRpYWdub3N0aWNzLlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9hc3NpZ25tZW50X2V4cHJlc3Npb25fbWF5X25vdF9iZV9hbl9vcHRpb25hbF9wcm9wZXJ0eV9hY2Nlc3MpJiYoIWUuaXNJZGVudGlmaWVyKHIpfHxlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHIuZXNjYXBlZFRleHQpIT09XCJleHBvcnRzXCIpKXt2YXIgSWE9dm9pZCAwO2lmKHlyJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHIpJiZmcyhpdCwzMjc2OCkpe3ZhciBRdD1kYShHcyhyLmV4cHJlc3Npb24pLHIubmFtZS5lc2NhcGVkVGV4dCk7akQoaXQsUXQpJiYoSWE9ZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xX3dpdGhfZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNfQ29sb25fdHJ1ZV9Db25zaWRlcl9hZGRpbmdfdW5kZWZpbmVkX3RvX3RoZV90eXBlX29mX3RoZV90YXJnZXQpfW9wKGl0LG8scix0LElhKX19fWZ1bmN0aW9uIHduKGl0KXt2YXIgWXQ7c3dpdGNoKGl0KXtjYXNlIDI6cmV0dXJuITA7Y2FzZSAxOmNhc2UgNTpjYXNlIDY6Y2FzZSAzOmNhc2UgNDp2YXIgSWE9RXQociksUXQ9ZS5nZXRBc3NpZ25lZEV4cGFuZG9Jbml0aWFsaXplcih0KTtyZXR1cm4hIVF0JiZlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oUXQpJiYhISghKChZdD1JYT09bnVsbD92b2lkIDA6SWEuZXhwb3J0cyk9PT1udWxsfHxZdD09PXZvaWQgMCkmJll0LnNpemUpO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIFRuKGl0KXtyZXR1cm4gaXQobyxzKT8hMTooRW8oaXQpLCEwKX1mdW5jdGlvbiBFbyhpdCl7dmFyIFl0LElhPSExLFF0PXV8fGk7aWYoaXQpe3ZhciBLYT1rXyhvKSxjbj1rXyhzKTtJYT0hKEthPT09byYmY249PT1zKSYmISEoS2EmJmNuKSYmaXQoS2EsY24pfXZhciBVbj1vLG9hPXM7IUlhJiZpdCYmKFl0PXZPKG8scyxpdCksVW49WXRbMF0sb2E9WXRbMV0pO3ZhciBNbj1uZihVbixvYSksTG49TW5bMF0sY2k9TW5bMV07bHQoUXQsSWEsTG4sY2kpfHx6dShRdCxJYSxlLkRpYWdub3N0aWNzLk9wZXJhdG9yXzBfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZXNfMV9hbmRfMixlLnRva2VuVG9TdHJpbmcoaS5raW5kKSxMbixjaSl9ZnVuY3Rpb24gbHQoaXQsWXQsSWEsUXQpe3ZhciBLYTtzd2l0Y2goaS5raW5kKXtjYXNlIDM2OmNhc2UgMzQ6S2E9XCJmYWxzZVwiO2JyZWFrO2Nhc2UgMzc6Y2FzZSAzNTpLYT1cInRydWVcIn1pZihLYSlyZXR1cm4genUoaXQsWXQsZS5EaWFnbm9zdGljcy5UaGlzX2NvbmRpdGlvbl93aWxsX2Fsd2F5c19yZXR1cm5fMF9zaW5jZV90aGVfdHlwZXNfMV9hbmRfMl9oYXZlX25vX292ZXJsYXAsS2EsSWEsUXQpfX1mdW5jdGlvbiB2TyhyLGksdCl7dmFyIG89cixzPWksdT1LbChyKSxoPUtsKGkpO3JldHVybiB0KHUsaCl8fChvPXUscz1oKSxbbyxzXX1mdW5jdGlvbiB5TyhyKXtmZShEcik7dmFyIGk9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24ocik7aWYoIWkpcmV0dXJuIE9lO3ZhciB0PWUuZ2V0RnVuY3Rpb25GbGFncyhpKTtpZighKHQmMSkpcmV0dXJuIE9lO3ZhciBvPSh0JjIpIT09MDtyLmFzdGVyaXNrVG9rZW4mJihvJiZBZTw5OSYmZmMociwyNjYyNCksIW8mJkFlPDImJnllLmRvd25sZXZlbEl0ZXJhdGlvbiYmZmMociwyNTYpKTt2YXIgcz15ZyhpKSx1PXMmJlA2KHMsbyksaD11JiZ1LnlpZWxkVHlwZXx8T2Usej11JiZ1Lm5leHRUeXBlfHxPZSxtZT1vP2FnKHopfHxPZTp6LE1lPXIuZXhwcmVzc2lvbj95bihyLmV4cHJlc3Npb24pOnZpLCRlPU1rKHIsTWUsbWUsbyk7aWYocyYmJGUmJm9wKCRlLGgsci5leHByZXNzaW9ufHxyLHIuZXhwcmVzc2lvbiksci5hc3Rlcmlza1Rva2VuKXt2YXIgdHI9bz8xOToxNztyZXR1cm4gYjYodHIsMSxNZSxyLmV4cHJlc3Npb24pfHxPZX1lbHNlIGlmKHMpcmV0dXJuIEpnKDIscyxvKXx8T2U7dmFyIGRyPXhDKDIsaSk7cmV0dXJuIGRyfHwoZHI9T2UsZmUoZnVuY3Rpb24oKXtpZihuJiYhZS5leHByZXNzaW9uUmVzdWx0SXNVbnVzZWQocikpe3ZhciBRcj1vdShyKTsoIVFyfHx0YShRcikpJiZYcihyLGUuRGlhZ25vc3RpY3MueWllbGRfZXhwcmVzc2lvbl9pbXBsaWNpdGx5X3Jlc3VsdHNfaW5fYW5fYW55X3R5cGVfYmVjYXVzZV9pdHNfY29udGFpbmluZ19nZW5lcmF0b3JfbGFja3NfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uKX19KSksZHI7ZnVuY3Rpb24gRHIoKXtyLmZsYWdzJjgxOTJ8fEhzKHIsZS5EaWFnbm9zdGljcy5BX3lpZWxkX2V4cHJlc3Npb25faXNfb25seV9hbGxvd2VkX2luX2FfZ2VuZXJhdG9yX2JvZHkpLHhiKHIpJiZYcihyLGUuRGlhZ25vc3RpY3MueWllbGRfZXhwcmVzc2lvbnNfY2Fubm90X2JlX3VzZWRfaW5fYV9wYXJhbWV0ZXJfaW5pdGlhbGl6ZXIpfX1mdW5jdGlvbiBoTyhyLGkpe0JnKHIuY29uZGl0aW9uKSxUUyhyLmNvbmRpdGlvbixyLndoZW5UcnVlKTt2YXIgdD15bihyLndoZW5UcnVlLGkpLG89eW4oci53aGVuRmFsc2UsaSk7cmV0dXJuIFBhKFt0LG9dLDIpfWZ1bmN0aW9uIHFrKHIpe3ZhciBpPXIucGFyZW50O3JldHVybiBlLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24oaSkmJnFrKGkpfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oaSkmJmkuYXJndW1lbnRFeHByZXNzaW9uPT09cn1mdW5jdGlvbiBETyhyKXtmb3IodmFyIGk9W3IuaGVhZC50ZXh0XSx0PVtdLG89MCxzPXIudGVtcGxhdGVTcGFucztvPHMubGVuZ3RoO28rKyl7dmFyIHU9c1tvXSxoPXluKHUuZXhwcmVzc2lvbik7QTAoaCwxMjI4OCkmJlhyKHUuZXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLkltcGxpY2l0X2NvbnZlcnNpb25fb2ZfYV9zeW1ib2xfdG9fYV9zdHJpbmdfd2lsbF9mYWlsX2F0X3J1bnRpbWVfQ29uc2lkZXJfd3JhcHBpbmdfdGhpc19leHByZXNzaW9uX2luX1N0cmluZyksaS5wdXNoKHUubGl0ZXJhbC50ZXh0KSx0LnB1c2goYW8oaCxiYSk/aDpMaSl9cmV0dXJuIGhtKHIpfHxxayhyKXx8cmcob3Uocil8fGdyLGJPKT9EZyhpLHQpOkxpfWZ1bmN0aW9uIGJPKHIpe3JldHVybiEhKHIuZmxhZ3MmMTM0MjE3ODU2fHxyLmZsYWdzJjU4OTgyNDAwJiZmcyh1YyhyKXx8Z3IsNDAyNjUzMzE2KSl9ZnVuY3Rpb24gU08ocil7cmV0dXJuIHIua2luZD09PTI4NiYmIWUuaXNKc3hTZWxmQ2xvc2luZ0VsZW1lbnQoci5wYXJlbnQpP3IucGFyZW50LnBhcmVudDpyfWZ1bmN0aW9uIFJnKHIsaSx0LG8pe3ZhciBzPVNPKHIpLHU9cy5jb250ZXh0dWFsVHlwZSxoPXMuaW5mZXJlbmNlQ29udGV4dDt0cnl7cy5jb250ZXh0dWFsVHlwZT1pLHMuaW5mZXJlbmNlQ29udGV4dD10O3ZhciB6PXluKHIsb3wxfCh0PzI6MCkpO3QmJnQuaW50cmFFeHByZXNzaW9uSW5mZXJlbmNlU2l0ZXMmJih0LmludHJhRXhwcmVzc2lvbkluZmVyZW5jZVNpdGVzPXZvaWQgMCk7dmFyIG1lPWZzKHosMjk0NCkmJk4wKHosYzAoaSxyKSk/amMoeik6ejtyZXR1cm4gbWV9ZmluYWxseXtzLmNvbnRleHR1YWxUeXBlPXUscy5pbmZlcmVuY2VDb250ZXh0PWh9fWZ1bmN0aW9uIE9zKHIsaSl7aWYoaSYmaSE9PTApcmV0dXJuIHluKHIsaSk7dmFyIHQ9dmEocik7aWYoIXQucmVzb2x2ZWRUeXBlKXt2YXIgbz1rbyxzPVpjO2tvPUFvLFpjPXZvaWQgMCx0LnJlc29sdmVkVHlwZT15bihyLGkpLFpjPXMsa289b31yZXR1cm4gdC5yZXNvbHZlZFR5cGV9ZnVuY3Rpb24gVmsocil7cmV0dXJuIHI9ZS5za2lwUGFyZW50aGVzZXMociwhMCksci5raW5kPT09MjExfHxyLmtpbmQ9PT0yMjl8fGUuaXNKU0RvY1R5cGVBc3NlcnRpb24ocil9ZnVuY3Rpb24gd3kocixpLHQpe3ZhciBvPWUuZ2V0RWZmZWN0aXZlSW5pdGlhbGl6ZXIocikscz1ZayhvKXx8KHQ/Umcobyx0LHZvaWQgMCxpfHwwKTpPcyhvLGkpKTtyZXR1cm4gZS5pc1BhcmFtZXRlcihyKSYmci5uYW1lLmtpbmQ9PT0yMDImJlluKHMpJiYhcy50YXJnZXQuaGFzUmVzdEVsZW1lbnQmJiRfKHMpPHIubmFtZS5lbGVtZW50cy5sZW5ndGg/VE8ocyxyLm5hbWUpOnN9ZnVuY3Rpb24gVE8ocixpKXtmb3IodmFyIHQ9aS5lbGVtZW50cyxvPXhvKHIpLnNsaWNlKCkscz1yLnRhcmdldC5lbGVtZW50RmxhZ3Muc2xpY2UoKSx1PSRfKHIpO3U8dC5sZW5ndGg7dSsrKXt2YXIgaD10W3VdOyh1PHQubGVuZ3RoLTF8fCEoaC5raW5kPT09MjAzJiZoLmRvdERvdERvdFRva2VuKSkmJihvLnB1c2goIWUuaXNPbWl0dGVkRXhwcmVzc2lvbihoKSYmcG0oaCk/dnMoaCwhMSwhMSk6T2UpLHMucHVzaCgyKSwhZS5pc09taXR0ZWRFeHByZXNzaW9uKGgpJiYhcG0oaCkmJlhwKGgsT2UpKX1yZXR1cm4gV2wobyxzLHIudGFyZ2V0LnJlYWRvbmx5KX1mdW5jdGlvbiBfUyhyLGkpe3ZhciB0PWUuZ2V0Q29tYmluZWROb2RlRmxhZ3MocikmMnx8ZS5pc0RlY2xhcmF0aW9uUmVhZG9ubHkocik/aTpIcChpKTtpZihlLmlzSW5KU0ZpbGUocikpe2lmKGtFKHQpKXJldHVybiBYcChyLE9lKSxPZTtpZihKaCh0KSlyZXR1cm4gWHAocixtbyksbW99cmV0dXJuIHR9ZnVuY3Rpb24gTjAocixpKXtpZihpKXtpZihpLmZsYWdzJjMxNDU3Mjgpe3ZhciB0PWkudHlwZXM7cmV0dXJuIGUuc29tZSh0LGZ1bmN0aW9uKHMpe3JldHVybiBOMChyLHMpfSl9aWYoaS5mbGFncyY1ODk4MjQwMCl7dmFyIG89dWMoaSl8fGdyO3JldHVybiBmcyhvLDQpJiZmcyhyLDEyOCl8fGZzKG8sOCkmJmZzKHIsMjU2KXx8ZnMobyw2NCkmJmZzKHIsMjA0OCl8fGZzKG8sNDA5NikmJmZzKHIsODE5Mil8fE4wKHIsbyl9cmV0dXJuISEoaS5mbGFncyY0MDY4NDc2MTYmJmZzKHIsMTI4KXx8aS5mbGFncyYyNTYmJmZzKHIsMjU2KXx8aS5mbGFncyYyMDQ4JiZmcyhyLDIwNDgpfHxpLmZsYWdzJjUxMiYmZnMociw1MTIpfHxpLmZsYWdzJjgxOTImJmZzKHIsODE5MikpfXJldHVybiExfWZ1bmN0aW9uIGhtKHIpe3ZhciBpPXIucGFyZW50O3JldHVybiBlLmlzQXNzZXJ0aW9uRXhwcmVzc2lvbihpKSYmZS5pc0NvbnN0VHlwZVJlZmVyZW5jZShpLnR5cGUpfHxlLmlzSlNEb2NUeXBlQXNzZXJ0aW9uKGkpJiZlLmlzQ29uc3RUeXBlUmVmZXJlbmNlKGUuZ2V0SlNEb2NUeXBlQXNzZXJ0aW9uVHlwZShpKSl8fChlLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24oaSl8fGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKGkpfHxlLmlzU3ByZWFkRWxlbWVudChpKSkmJmhtKGkpfHwoZS5pc1Byb3BlcnR5QXNzaWdubWVudChpKXx8ZS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChpKXx8ZS5pc1RlbXBsYXRlU3BhbihpKSkmJmhtKGkucGFyZW50KX1mdW5jdGlvbiBEbShyLGksdCxvKXt2YXIgcz15bihyLGksbyk7cmV0dXJuIGhtKHIpfHxlLmlzQ29tbW9uSnNFeHBvcnRlZEV4cHJlc3Npb24ocik/amMocyk6Vmsocik/czpIRChzLGMwKGFyZ3VtZW50cy5sZW5ndGg9PT0yP291KHIpOnQscikpfWZ1bmN0aW9uIEtrKHIsaSl7cmV0dXJuIHIubmFtZS5raW5kPT09MTYyJiZ0XyhyLm5hbWUpLERtKHIuaW5pdGlhbGl6ZXIsaSl9ZnVuY3Rpb24gR2socixpKXtkQShyKSxyLm5hbWUua2luZD09PTE2MiYmdF8oci5uYW1lKTt2YXIgdD1KayhyLGkpO3JldHVybiBIayhyLHQsaSl9ZnVuY3Rpb24gSGsocixpLHQpe2lmKHQmJnQmMTApe3ZhciBvPWd2KGksMCwhMCkscz1ndihpLDEsITApLHU9b3x8cztpZih1JiZ1LnR5cGVQYXJhbWV0ZXJzKXt2YXIgaD0kcChyLDIpO2lmKGgpe3ZhciB6PWd2KENfKGgpLG8/MDoxLCExKTtpZih6JiYhei50eXBlUGFyYW1ldGVycyl7aWYodCY4KXJldHVybiBYayhyLHQpLHhuO3ZhciBtZT13ZyhyKSxNZT1tZS5zaWduYXR1cmUmJnlvKG1lLnNpZ25hdHVyZSksJGU9TWUmJm9rKE1lKTtpZigkZSYmISRlLnR5cGVQYXJhbWV0ZXJzJiYhZS5ldmVyeShtZS5pbmZlcmVuY2VzLHRnKSl7dmFyIHRyPUNPKG1lLHUudHlwZVBhcmFtZXRlcnMpLGRyPWVEKHUsdHIpLERyPWUubWFwKG1lLmluZmVyZW5jZXMsZnVuY3Rpb24oUXIpe3JldHVybiB0YihRci50eXBlUGFyYW1ldGVyKX0pO2lmKGViKGRyLHosZnVuY3Rpb24oUXIsbGkpe2RmKERyLFFyLGxpLDAsITApfSksZS5zb21lKERyLHRnKSYmKHJiKGRyLHosZnVuY3Rpb24oUXIsbGkpe2RmKERyLFFyLGxpKX0pLCF4TyhtZS5pbmZlcmVuY2VzLERyKSkpcmV0dXJuIEVPKG1lLmluZmVyZW5jZXMsRHIpLG1lLmluZmVycmVkVHlwZVBhcmFtZXRlcnM9ZS5jb25jYXRlbmF0ZShtZS5pbmZlcnJlZFR5cGVQYXJhbWV0ZXJzLHRyKSxpbShkcil9cmV0dXJuIGltKHNrKHUseixtZSkpfX19fXJldHVybiBpfWZ1bmN0aW9uIFhrKHIsaSl7aWYoaSYyKXt2YXIgdD13ZyhyKTt0LmZsYWdzfD00fX1mdW5jdGlvbiB0ZyhyKXtyZXR1cm4hIShyLmNhbmRpZGF0ZXN8fHIuY29udHJhQ2FuZGlkYXRlcyl9ZnVuY3Rpb24geE8ocixpKXtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoO3QrKylpZih0ZyhyW3RdKSYmdGcoaVt0XSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gRU8ocixpKXtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoO3QrKykhdGcoclt0XSkmJnRnKGlbdF0pJiYoclt0XT1pW3RdKX1mdW5jdGlvbiBDTyhyLGkpe2Zvcih2YXIgdD1bXSxvLHMsdT0wLGg9aTt1PGgubGVuZ3RoO3UrKyl7dmFyIHo9aFt1XSxtZT16LnN5bWJvbC5lc2NhcGVkTmFtZTtpZihwUyhyLmluZmVycmVkVHlwZVBhcmFtZXRlcnMsbWUpfHxwUyh0LG1lKSl7dmFyIE1lPWtPKGUuY29uY2F0ZW5hdGUoci5pbmZlcnJlZFR5cGVQYXJhbWV0ZXJzLHQpLG1lKSwkZT1vbygyNjIxNDQsTWUpLHRyPUhjKCRlKTt0ci50YXJnZXQ9eixvPWUuYXBwZW5kKG8seikscz1lLmFwcGVuZChzLHRyKSx0LnB1c2godHIpfWVsc2UgdC5wdXNoKHopfWlmKHMpZm9yKHZhciBkcj1VYyhvLHMpLERyPTAsUXI9cztEcjxRci5sZW5ndGg7RHIrKyl7dmFyIHo9UXJbRHJdO3oubWFwcGVyPWRyfXJldHVybiB0fWZ1bmN0aW9uIHBTKHIsaSl7cmV0dXJuIGUuc29tZShyLGZ1bmN0aW9uKHQpe3JldHVybiB0LnN5bWJvbC5lc2NhcGVkTmFtZT09PWl9KX1mdW5jdGlvbiBrTyhyLGkpe2Zvcih2YXIgdD1pLmxlbmd0aDt0PjEmJmkuY2hhckNvZGVBdCh0LTEpPj00OCYmaS5jaGFyQ29kZUF0KHQtMSk8PTU3Oyl0LS07Zm9yKHZhciBvPWkuc2xpY2UoMCx0KSxzPTE7O3MrKyl7dmFyIHU9bytzO2lmKCFwUyhyLHUpKXJldHVybiB1fX1mdW5jdGlvbiBRayhyKXt2YXIgaT1pZyhyKTtpZihpJiYhaS50eXBlUGFyYW1ldGVycylyZXR1cm4geW8oaSl9ZnVuY3Rpb24gQU8ocil7dmFyIGk9eW4oci5leHByZXNzaW9uKSx0PWN2KGksci5leHByZXNzaW9uKSxvPVFrKGkpO3JldHVybiBvJiZ6aChvLHIsdCE9PWkpfWZ1bmN0aW9uIEdzKHIpe3ZhciBpPVlrKHIpO2lmKGkpcmV0dXJuIGk7aWYoci5mbGFncyYxMzQyMTc3MjgmJlpjKXt2YXIgdD1aY1tBKHIpXTtpZih0KXJldHVybiB0fXZhciBvPXhjLHM9eW4ocik7aWYoeGMhPT1vKXt2YXIgdT1aY3x8KFpjPVtdKTt1W0EocildPXMsZS5zZXROb2RlRmxhZ3MocixyLmZsYWdzfDEzNDIxNzcyOCl9cmV0dXJuIHN9ZnVuY3Rpb24gWWsocil7dmFyIGk9ZS5za2lwUGFyZW50aGVzZXMociwhMCk7aWYoZS5pc0pTRG9jVHlwZUFzc2VydGlvbihpKSl7dmFyIHQ9ZS5nZXRKU0RvY1R5cGVBc3NlcnRpb25UeXBlKGkpO2lmKCFlLmlzQ29uc3RUeXBlUmVmZXJlbmNlKHQpKXJldHVybiBWYSh0KX1pZihpPWUuc2tpcFBhcmVudGhlc2VzKHIpLGUuaXNDYWxsRXhwcmVzc2lvbihpKSYmaS5leHByZXNzaW9uLmtpbmQhPT0xMDYmJiFlLmlzUmVxdWlyZUNhbGwoaSwhMCkmJiFEayhpKSl7dmFyIHQ9ZS5pc0NhbGxDaGFpbihpKT9BTyhpKTpRayhnbShpLmV4cHJlc3Npb24pKTtpZih0KXJldHVybiB0fWVsc2V7aWYoZS5pc0Fzc2VydGlvbkV4cHJlc3Npb24oaSkmJiFlLmlzQ29uc3RUeXBlUmVmZXJlbmNlKGkudHlwZSkpcmV0dXJuIFZhKGkudHlwZSk7aWYoci5raW5kPT09OHx8ci5raW5kPT09MTB8fHIua2luZD09PTExMHx8ci5raW5kPT09OTUpcmV0dXJuIHluKHIpfX1mdW5jdGlvbiBPeShyKXt2YXIgaT12YShyKTtpZihpLmNvbnRleHRGcmVlVHlwZSlyZXR1cm4gaS5jb250ZXh0RnJlZVR5cGU7dmFyIHQ9ci5jb250ZXh0dWFsVHlwZTtyLmNvbnRleHR1YWxUeXBlPU9lO3RyeXt2YXIgbz1pLmNvbnRleHRGcmVlVHlwZT15bihyLDQpO3JldHVybiBvfWZpbmFsbHl7ci5jb250ZXh0dWFsVHlwZT10fX1mdW5jdGlvbiB5bihyLGksdCl7ZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucHVzaChcImNoZWNrXCIsXCJjaGVja0V4cHJlc3Npb25cIix7a2luZDpyLmtpbmQscG9zOnIucG9zLGVuZDpyLmVuZCxwYXRoOnIudHJhY2luZ1BhdGh9KTt2YXIgbz1JZTtJZT1yLEVlPTA7dmFyIHM9SU8ocixpLHQpLHU9SGsocixzLGkpO3JldHVybiB1Uyh1KSYmTk8ocix1KSxJZT1vLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpLHV9ZnVuY3Rpb24gTk8ocixpKXt2YXIgdD1yLnBhcmVudC5raW5kPT09MjA2JiZyLnBhcmVudC5leHByZXNzaW9uPT09cnx8ci5wYXJlbnQua2luZD09PTIwNyYmci5wYXJlbnQuZXhwcmVzc2lvbj09PXJ8fChyLmtpbmQ9PT03OXx8ci5raW5kPT09MTYxKSYmVzAocil8fHIucGFyZW50LmtpbmQ9PT0xODEmJnIucGFyZW50LmV4cHJOYW1lPT09cnx8ci5wYXJlbnQua2luZD09PTI3NTtpZih0fHxYcihyLGUuRGlhZ25vc3RpY3MuY29uc3RfZW51bXNfY2FuX29ubHlfYmVfdXNlZF9pbl9wcm9wZXJ0eV9vcl9pbmRleF9hY2Nlc3NfZXhwcmVzc2lvbnNfb3JfdGhlX3JpZ2h0X2hhbmRfc2lkZV9vZl9hbl9pbXBvcnRfZGVjbGFyYXRpb25fb3JfZXhwb3J0X2Fzc2lnbm1lbnRfb3JfdHlwZV9xdWVyeSkseWUuaXNvbGF0ZWRNb2R1bGVzKXtlLkRlYnVnLmFzc2VydCghIShpLnN5bWJvbC5mbGFncyYxMjgpKTt2YXIgbz1pLnN5bWJvbC52YWx1ZURlY2xhcmF0aW9uO28uZmxhZ3MmMTY3NzcyMTYmJlhyKHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfYWNjZXNzX2FtYmllbnRfY29uc3RfZW51bXNfd2hlbl90aGVfaXNvbGF0ZWRNb2R1bGVzX2ZsYWdfaXNfcHJvdmlkZWQpfX1mdW5jdGlvbiBQTyhyLGkpe2lmKGUuaGFzSlNEb2NOb2RlcyhyKSYmZS5pc0pTRG9jVHlwZUFzc2VydGlvbihyKSl7dmFyIHQ9ZS5nZXRKU0RvY1R5cGVBc3NlcnRpb25UeXBlKHIpO3JldHVybiBDayh0LHQsci5leHByZXNzaW9uLGkpfXJldHVybiB5bihyLmV4cHJlc3Npb24saSl9ZnVuY3Rpb24gSU8ocixpLHQpe3ZhciBvPXIua2luZDtpZihnKXN3aXRjaChvKXtjYXNlIDIyNjpjYXNlIDIxMzpjYXNlIDIxNDpnLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKX1zd2l0Y2gobyl7Y2FzZSA3OTpyZXR1cm4gUjgocixpKTtjYXNlIDgwOnJldHVybiBLNShyKTtjYXNlIDEwODpyZXR1cm4geXkocik7Y2FzZSAxMDY6cmV0dXJuIFNiKHIpO2Nhc2UgMTA0OnJldHVybiBjdDtjYXNlIDE0OmNhc2UgMTA6cmV0dXJuIFNnKEJ1KHIudGV4dCkpO2Nhc2UgODpyZXR1cm4gS1MociksU2coSWYoK3IudGV4dCkpO2Nhc2UgOTpyZXR1cm4gU0wociksU2coRUQoe25lZ2F0aXZlOiExLGJhc2UxMFZhbHVlOmUucGFyc2VQc2V1ZG9CaWdJbnQoci50ZXh0KX0pKTtjYXNlIDExMDpyZXR1cm4gRHQ7Y2FzZSA5NTpyZXR1cm4geHQ7Y2FzZSAyMjM6cmV0dXJuIERPKHIpO2Nhc2UgMTM6cmV0dXJuIFdhO2Nhc2UgMjA0OnJldHVybiBQQyhyLGksdCk7Y2FzZSAyMDU6cmV0dXJuIEM1KHIsaSk7Y2FzZSAyMDY6cmV0dXJuIFZDKHIsaSk7Y2FzZSAxNjE6cmV0dXJuIEtDKHIsaSk7Y2FzZSAyMDc6cmV0dXJuIGM3KHIsaSk7Y2FzZSAyMDg6aWYoci5leHByZXNzaW9uLmtpbmQ9PT0xMDApcmV0dXJuIFI3KHIpO2Nhc2UgMjA5OnJldHVybiBMNyhyLGkpO2Nhc2UgMjEwOnJldHVybiBCNyhyKTtjYXNlIDIxMjpyZXR1cm4gUE8ocixpKTtjYXNlIDIyNjpyZXR1cm4gdU0ocik7Y2FzZSAyMTM6Y2FzZSAyMTQ6cmV0dXJuIEprKHIsaSk7Y2FzZSAyMTY6cmV0dXJuIHRPKHIpO2Nhc2UgMjExOmNhc2UgMjI5OnJldHVybiBKNyhyKTtjYXNlIDIzMDpyZXR1cm4gVTcocik7Y2FzZSAyMjg6cmV0dXJuIGtrKHIpO2Nhc2UgMjMxOnJldHVybiB6NyhyKTtjYXNlIDIxNTpyZXR1cm4gck8ocik7Y2FzZSAyMTc6cmV0dXJuIGFPKHIpO2Nhc2UgMjE4OnJldHVybiBvTyhyKTtjYXNlIDIxOTpyZXR1cm4gc08ocik7Y2FzZSAyMjA6cmV0dXJuIGNPKHIpO2Nhc2UgMjIxOnJldHVybiBJcihyLGkpO2Nhc2UgMjIyOnJldHVybiBoTyhyLGkpO2Nhc2UgMjI1OnJldHVybiBiNShyLGkpO2Nhc2UgMjI3OnJldHVybiB2aTtjYXNlIDIyNDpyZXR1cm4geU8ocik7Y2FzZSAyMzI6cmV0dXJuIFM1KHIpO2Nhc2UgMjg4OnJldHVybiBKNShyLGkpO2Nhc2UgMjc4OnJldHVybiBQNShyLGkpO2Nhc2UgMjc5OnJldHVybiBBNShyLGkpO2Nhc2UgMjgyOnJldHVybiBJNShyKTtjYXNlIDI4NjpyZXR1cm4gTzUocixpKTtjYXNlIDI4MDplLkRlYnVnLmZhaWwoXCJTaG91bGRuJ3QgZXZlciBkaXJlY3RseSBjaGVjayBhIEpzeE9wZW5pbmdFbGVtZW50XCIpfXJldHVybiBQZX1mdW5jdGlvbiAkayhyKXtzQShyKSxyLmV4cHJlc3Npb24mJkhzKHIuZXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLlR5cGVfZXhwZWN0ZWQpLGlvKHIuY29uc3RyYWludCksaW8oci5kZWZhdWx0KTt2YXIgaT1KcyhFdChyKSk7dWMoaSksWDEoaSl8fFhyKHIuZGVmYXVsdCxlLkRpYWdub3N0aWNzLlR5cGVfcGFyYW1ldGVyXzBfaGFzX2FfY2lyY3VsYXJfZGVmYXVsdCxPdChpKSk7dmFyIHQ9VGMoaSksbz1EXyhpKTt0JiZvJiZ6YyhvLFJjKHVuKHQsWWQoaSxvKSksbyksci5kZWZhdWx0LGUuRGlhZ25vc3RpY3MuVHlwZV8wX2RvZXNfbm90X3NhdGlzZnlfdGhlX2NvbnN0cmFpbnRfMSkseG0ociksZmUoZnVuY3Rpb24oKXtyZXR1cm4gVG0oci5uYW1lLGUuRGlhZ25vc3RpY3MuVHlwZV9wYXJhbWV0ZXJfbmFtZV9jYW5ub3RfYmVfMCl9KX1mdW5jdGlvbiB3TyhyKXtpZihlLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24oci5wYXJlbnQpfHxlLmlzQ2xhc3NMaWtlKHIucGFyZW50KXx8ZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKHIucGFyZW50KSl7dmFyIGk9SnMoRXQocikpLHQ9V0QoaSk7aWYodCl7dmFyIG89RXQoci5wYXJlbnQpO2lmKGUuaXNUeXBlQWxpYXNEZWNsYXJhdGlvbihyLnBhcmVudCkmJiEoZS5nZXRPYmplY3RGbGFncyhnbyhvKSkmNDgpKVhyKHIsZS5EaWFnbm9zdGljcy5WYXJpYW5jZV9hbm5vdGF0aW9uc19hcmVfb25seV9zdXBwb3J0ZWRfaW5fdHlwZV9hbGlhc2VzX2Zvcl9vYmplY3RfZnVuY3Rpb25fY29uc3RydWN0b3JfYW5kX21hcHBlZF90eXBlcyk7ZWxzZSBpZih0PT09MzI3Njh8fHQ9PT02NTUzNil7dmFyIHM9bHkobyxpLHQ9PT02NTUzNj9EYTpSbiksdT1seShvLGksdD09PTY1NTM2P1JuOkRhKSxoPWk7X2U9aSx6YyhzLHUscixlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzFfYXNfaW1wbGllZF9ieV92YXJpYW5jZV9hbm5vdGF0aW9uKSxfZT1ofX19fWZ1bmN0aW9uIFprKHIpe0ZmKHIpLEwwKHIpO3ZhciBpPWUuZ2V0Q29udGFpbmluZ0Z1bmN0aW9uKHIpO2UuaGFzU3ludGFjdGljTW9kaWZpZXIociwxNjQ3NikmJihpLmtpbmQ9PT0xNzEmJmUubm9kZUlzUHJlc2VudChpLmJvZHkpfHxYcihyLGUuRGlhZ25vc3RpY3MuQV9wYXJhbWV0ZXJfcHJvcGVydHlfaXNfb25seV9hbGxvd2VkX2luX2FfY29uc3RydWN0b3JfaW1wbGVtZW50YXRpb24pLGkua2luZD09PTE3MSYmZS5pc0lkZW50aWZpZXIoci5uYW1lKSYmci5uYW1lLmVzY2FwZWRUZXh0PT09XCJjb25zdHJ1Y3RvclwiJiZYcihyLm5hbWUsZS5EaWFnbm9zdGljcy5jb25zdHJ1Y3Rvcl9jYW5ub3RfYmVfdXNlZF9hc19hX3BhcmFtZXRlcl9wcm9wZXJ0eV9uYW1lKSksci5xdWVzdGlvblRva2VuJiZlLmlzQmluZGluZ1BhdHRlcm4oci5uYW1lKSYmaS5ib2R5JiZYcihyLGUuRGlhZ25vc3RpY3MuQV9iaW5kaW5nX3BhdHRlcm5fcGFyYW1ldGVyX2Nhbm5vdF9iZV9vcHRpb25hbF9pbl9hbl9pbXBsZW1lbnRhdGlvbl9zaWduYXR1cmUpLHIubmFtZSYmZS5pc0lkZW50aWZpZXIoci5uYW1lKSYmKHIubmFtZS5lc2NhcGVkVGV4dD09PVwidGhpc1wifHxyLm5hbWUuZXNjYXBlZFRleHQ9PT1cIm5ld1wiKSYmKGkucGFyYW1ldGVycy5pbmRleE9mKHIpIT09MCYmWHIocixlLkRpYWdub3N0aWNzLkFfMF9wYXJhbWV0ZXJfbXVzdF9iZV90aGVfZmlyc3RfcGFyYW1ldGVyLHIubmFtZS5lc2NhcGVkVGV4dCksKGkua2luZD09PTE3MXx8aS5raW5kPT09MTc1fHxpLmtpbmQ9PT0xODApJiZYcihyLGUuRGlhZ25vc3RpY3MuQV9jb25zdHJ1Y3Rvcl9jYW5ub3RfaGF2ZV9hX3RoaXNfcGFyYW1ldGVyKSxpLmtpbmQ9PT0yMTQmJlhyKHIsZS5EaWFnbm9zdGljcy5Bbl9hcnJvd19mdW5jdGlvbl9jYW5ub3RfaGF2ZV9hX3RoaXNfcGFyYW1ldGVyKSwoaS5raW5kPT09MTcyfHxpLmtpbmQ9PT0xNzMpJiZYcihyLGUuRGlhZ25vc3RpY3MuZ2V0X2FuZF9zZXRfYWNjZXNzb3JzX2Nhbm5vdF9kZWNsYXJlX3RoaXNfcGFyYW1ldGVycykpLHIuZG90RG90RG90VG9rZW4mJiFlLmlzQmluZGluZ1BhdHRlcm4oci5uYW1lKSYmIWFvKGJ1KEp0KHIuc3ltYm9sKSksR28pJiZYcihyLGUuRGlhZ25vc3RpY3MuQV9yZXN0X3BhcmFtZXRlcl9tdXN0X2JlX29mX2FuX2FycmF5X3R5cGUpfWZ1bmN0aW9uIE9PKHIpe3ZhciBpPUZPKHIpO2lmKCFpKXtYcihyLGUuRGlhZ25vc3RpY3MuQV90eXBlX3ByZWRpY2F0ZV9pc19vbmx5X2FsbG93ZWRfaW5fcmV0dXJuX3R5cGVfcG9zaXRpb25fZm9yX2Z1bmN0aW9uc19hbmRfbWV0aG9kcyk7cmV0dXJufXZhciB0PXlsKGkpLG89WWModCk7aWYoISFvKXtpbyhyLnR5cGUpO3ZhciBzPXIucGFyYW1ldGVyTmFtZTtpZihvLmtpbmQ9PT0wfHxvLmtpbmQ9PT0yKUNoKHMpO2Vsc2UgaWYoby5wYXJhbWV0ZXJJbmRleD49MCl7aWYoSCh0KSYmby5wYXJhbWV0ZXJJbmRleD09PXQucGFyYW1ldGVycy5sZW5ndGgtMSlYcihzLGUuRGlhZ25vc3RpY3MuQV90eXBlX3ByZWRpY2F0ZV9jYW5ub3RfcmVmZXJlbmNlX2FfcmVzdF9wYXJhbWV0ZXIpO2Vsc2UgaWYoby50eXBlKXt2YXIgdT1mdW5jdGlvbigpe3JldHVybiBlLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKHZvaWQgMCxlLkRpYWdub3N0aWNzLkFfdHlwZV9wcmVkaWNhdGVfc190eXBlX211c3RfYmVfYXNzaWduYWJsZV90b19pdHNfcGFyYW1ldGVyX3NfdHlwZSl9O3pjKG8udHlwZSxKdCh0LnBhcmFtZXRlcnNbby5wYXJhbWV0ZXJJbmRleF0pLHIudHlwZSx2b2lkIDAsdSl9fWVsc2UgaWYocyl7Zm9yKHZhciBoPSExLHo9MCxtZT1pLnBhcmFtZXRlcnM7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel0ubmFtZTtpZihlLmlzQmluZGluZ1BhdHRlcm4oTWUpJiZlNihNZSxzLG8ucGFyYW1ldGVyTmFtZSkpe2g9ITA7YnJlYWt9fWh8fFhyKHIucGFyYW1ldGVyTmFtZSxlLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX3BhcmFtZXRlcl8wLG8ucGFyYW1ldGVyTmFtZSl9fX1mdW5jdGlvbiBGTyhyKXtzd2l0Y2goci5wYXJlbnQua2luZCl7Y2FzZSAyMTQ6Y2FzZSAxNzQ6Y2FzZSAyNTY6Y2FzZSAyMTM6Y2FzZSAxNzk6Y2FzZSAxNjk6Y2FzZSAxNjg6dmFyIGk9ci5wYXJlbnQ7aWYocj09PWkudHlwZSlyZXR1cm4gaX19ZnVuY3Rpb24gZTYocixpLHQpe2Zvcih2YXIgbz0wLHM9ci5lbGVtZW50cztvPHMubGVuZ3RoO28rKyl7dmFyIHU9c1tvXTtpZighZS5pc09taXR0ZWRFeHByZXNzaW9uKHUpKXt2YXIgaD11Lm5hbWU7aWYoaC5raW5kPT09NzkmJmguZXNjYXBlZFRleHQ9PT10KXJldHVybiBYcihpLGUuRGlhZ25vc3RpY3MuQV90eXBlX3ByZWRpY2F0ZV9jYW5ub3RfcmVmZXJlbmNlX2VsZW1lbnRfMF9pbl9hX2JpbmRpbmdfcGF0dGVybix0KSwhMDtpZigoaC5raW5kPT09MjAyfHxoLmtpbmQ9PT0yMDEpJiZlNihoLGksdCkpcmV0dXJuITB9fX1mdW5jdGlvbiBEdihyKXtyLmtpbmQ9PT0xNzY/WDkocik6KHIua2luZD09PTE3OXx8ci5raW5kPT09MjU2fHxyLmtpbmQ9PT0xODB8fHIua2luZD09PTE3NHx8ci5raW5kPT09MTcxfHxyLmtpbmQ9PT0xNzUpJiZYMChyKTt2YXIgaT1lLmdldEZ1bmN0aW9uRmxhZ3Mocik7aSY0fHwoKGkmMyk9PT0zJiZBZTw5OSYmZmMociw2MTQ0KSwoaSYzKT09PTImJkFlPDQmJmZjKHIsNjQpLChpJjMpIT09MCYmQWU8MiYmZmMociwxMjgpKSxqeShlLmdldEVmZmVjdGl2ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnMocikpLHNNKHIpLGUuZm9yRWFjaChyLnBhcmFtZXRlcnMsWmspLHIudHlwZSYmaW8oci50eXBlKSxmZSh0KTtmdW5jdGlvbiB0KCl7RUYocik7dmFyIG89ZS5nZXRFZmZlY3RpdmVSZXR1cm5UeXBlTm9kZShyKTtpZihuJiYhbylzd2l0Y2goci5raW5kKXtjYXNlIDE3NTpYcihyLGUuRGlhZ25vc3RpY3MuQ29uc3RydWN0X3NpZ25hdHVyZV93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuX2FueV9yZXR1cm5fdHlwZSk7YnJlYWs7Y2FzZSAxNzQ6WHIocixlLkRpYWdub3N0aWNzLkNhbGxfc2lnbmF0dXJlX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fYW55X3JldHVybl90eXBlKTticmVha31pZihvKXt2YXIgcz1lLmdldEZ1bmN0aW9uRmxhZ3Mocik7aWYoKHMmNSk9PT0xKXt2YXIgdT1WYShvKTtpZih1PT09RmkpWHIobyxlLkRpYWdub3N0aWNzLkFfZ2VuZXJhdG9yX2Nhbm5vdF9oYXZlX2Ffdm9pZF90eXBlX2Fubm90YXRpb24pO2Vsc2V7dmFyIGg9SmcoMCx1LChzJjIpIT09MCl8fE9lLHo9SmcoMSx1LChzJjIpIT09MCl8fGgsbWU9SmcoMix1LChzJjIpIT09MCl8fGdyLE1lPUZrKGgseixtZSwhIShzJjIpKTt6YyhNZSx1LG8pfX1lbHNlKHMmMyk9PT0yJiZjRihyLG8pfXIua2luZCE9PTE3NiYmci5raW5kIT09MzE3JiZBXyhyKX19ZnVuY3Rpb24gTU8ocil7Zm9yKHZhciBpPW5ldyBlLk1hcCx0PW5ldyBlLk1hcCxvPW5ldyBlLk1hcCxzPTAsdT1yLm1lbWJlcnM7czx1Lmxlbmd0aDtzKyspe3ZhciBoPXVbc107aWYoaC5raW5kPT09MTcxKWZvcih2YXIgej0wLG1lPWgucGFyYW1ldGVyczt6PG1lLmxlbmd0aDt6Kyspe3ZhciBNZT1tZVt6XTtlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihNZSxoKSYmIWUuaXNCaW5kaW5nUGF0dGVybihNZS5uYW1lKSYmVGkoaSxNZS5uYW1lLE1lLm5hbWUuZXNjYXBlZFRleHQsMyl9ZWxzZXt2YXIgJGU9ZS5pc1N0YXRpYyhoKSx0cj1oLm5hbWU7aWYoIXRyKWNvbnRpbnVlO3ZhciBkcj1lLmlzUHJpdmF0ZUlkZW50aWZpZXIodHIpLERyPWRyJiYkZT8xNjowLFFyPWRyP286JGU/dDppLGxpPXRyJiZlLmdldFByb3BlcnR5TmFtZUZvclByb3BlcnR5TmFtZU5vZGUodHIpO2lmKGxpKXN3aXRjaChoLmtpbmQpe2Nhc2UgMTcyOlRpKFFyLHRyLGxpLDF8RHIpO2JyZWFrO2Nhc2UgMTczOlRpKFFyLHRyLGxpLDJ8RHIpO2JyZWFrO2Nhc2UgMTY3OlRpKFFyLHRyLGxpLDN8RHIpO2JyZWFrO2Nhc2UgMTY5OlRpKFFyLHRyLGxpLDh8RHIpO2JyZWFrfX19ZnVuY3Rpb24gVGkoQ2ksJGksWmkscXQpe3ZhciBOdD1DaS5nZXQoWmkpO2lmKE50KWlmKChOdCYxNikhPT0ocXQmMTYpKVhyKCRpLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMF9TdGF0aWNfYW5kX2luc3RhbmNlX2VsZW1lbnRzX2Nhbm5vdF9zaGFyZV90aGVfc2FtZV9wcml2YXRlX25hbWUsZS5nZXRUZXh0T2ZOb2RlKCRpKSk7ZWxzZXt2YXIgUmE9ISEoTnQmOCksY2E9ISEocXQmOCk7UmF8fGNhP1JhIT09Y2EmJlhyKCRpLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMCxlLmdldFRleHRPZk5vZGUoJGkpKTpOdCZxdCYtMTc/WHIoJGksZS5EaWFnbm9zdGljcy5EdXBsaWNhdGVfaWRlbnRpZmllcl8wLGUuZ2V0VGV4dE9mTm9kZSgkaSkpOkNpLnNldChaaSxOdHxxdCl9ZWxzZSBDaS5zZXQoWmkscXQpfX1mdW5jdGlvbiBMTyhyKXtmb3IodmFyIGk9MCx0PXIubWVtYmVycztpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXSxzPW8ubmFtZSx1PWUuaXNTdGF0aWMobyk7aWYodSYmcyl7dmFyIGg9ZS5nZXRQcm9wZXJ0eU5hbWVGb3JQcm9wZXJ0eU5hbWVOb2RlKHMpO3N3aXRjaChoKXtjYXNlXCJuYW1lXCI6Y2FzZVwibGVuZ3RoXCI6Y2FzZVwiY2FsbGVyXCI6Y2FzZVwiYXJndW1lbnRzXCI6Y2FzZVwicHJvdG90eXBlXCI6dmFyIHo9ZS5EaWFnbm9zdGljcy5TdGF0aWNfcHJvcGVydHlfMF9jb25mbGljdHNfd2l0aF9idWlsdF9pbl9wcm9wZXJ0eV9GdW5jdGlvbl8wX29mX2NvbnN0cnVjdG9yX2Z1bmN0aW9uXzEsbWU9b2YoRXQocikpO1hyKHMseixoLG1lKTticmVha319fX1mdW5jdGlvbiByNihyKXtmb3IodmFyIGk9bmV3IGUuTWFwLHQ9MCxvPXIubWVtYmVyczt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpZihzLmtpbmQ9PT0xNjYpe3ZhciB1PXZvaWQgMCxoPXMubmFtZTtzd2l0Y2goaC5raW5kKXtjYXNlIDEwOmNhc2UgODp1PWgudGV4dDticmVhaztjYXNlIDc5OnU9ZS5pZFRleHQoaCk7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1pLmdldCh1KT8oWHIoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihzLnN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKSxlLkRpYWdub3N0aWNzLkR1cGxpY2F0ZV9pZGVudGlmaWVyXzAsdSksWHIocy5uYW1lLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMCx1KSk6aS5zZXQodSwhMCl9fX1mdW5jdGlvbiBkUyhyKXtpZihyLmtpbmQ9PT0yNTgpe3ZhciBpPUV0KHIpO2lmKGkuZGVjbGFyYXRpb25zJiZpLmRlY2xhcmF0aW9ucy5sZW5ndGg+MCYmaS5kZWNsYXJhdGlvbnNbMF0hPT1yKXJldHVybn12YXIgdD10eChFdChyKSk7aWYodCE9bnVsbCYmdC5kZWNsYXJhdGlvbnMpe2Zvcih2YXIgbz1uZXcgZS5NYXAscz1mdW5jdGlvbihtZSl7bWUucGFyYW1ldGVycy5sZW5ndGg9PT0xJiZtZS5wYXJhbWV0ZXJzWzBdLnR5cGUmJk9kKFZhKG1lLnBhcmFtZXRlcnNbMF0udHlwZSksZnVuY3Rpb24oTWUpe3ZhciAkZT1vLmdldChmdShNZSkpOyRlPyRlLmRlY2xhcmF0aW9ucy5wdXNoKG1lKTpvLnNldChmdShNZSkse3R5cGU6TWUsZGVjbGFyYXRpb25zOlttZV19KX0pfSx1PTAsaD10LmRlY2xhcmF0aW9uczt1PGgubGVuZ3RoO3UrKyl7dmFyIHo9aFt1XTtzKHopfW8uZm9yRWFjaChmdW5jdGlvbihtZSl7aWYobWUuZGVjbGFyYXRpb25zLmxlbmd0aD4xKWZvcih2YXIgTWU9MCwkZT1tZS5kZWNsYXJhdGlvbnM7TWU8JGUubGVuZ3RoO01lKyspe3ZhciB0cj0kZVtNZV07WHIodHIsZS5EaWFnbm9zdGljcy5EdXBsaWNhdGVfaW5kZXhfc2lnbmF0dXJlX2Zvcl90eXBlXzAsT3QobWUudHlwZSkpfX0pfX1mdW5jdGlvbiBpNihyKXshRmYocikmJiF2TChyKSYmUTAoci5uYW1lKSxMMChyKSxnUyhyKSxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHIsMTI4KSYmci5raW5kPT09MTY3JiZyLmluaXRpYWxpemVyJiZYcihyLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcl9iZWNhdXNlX2l0X2lzX21hcmtlZF9hYnN0cmFjdCxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHIubmFtZSkpfWZ1bmN0aW9uIFJPKHIpe3JldHVybiBlLmlzUHJpdmF0ZUlkZW50aWZpZXIoci5uYW1lKSYmWHIocixlLkRpYWdub3N0aWNzLlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX25vdF9hbGxvd2VkX291dHNpZGVfY2xhc3NfYm9kaWVzKSxpNihyKX1mdW5jdGlvbiBCTyhyKXtkQShyKXx8UTAoci5uYW1lKSxmNihyKSxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHIsMTI4KSYmci5raW5kPT09MTY5JiZyLmJvZHkmJlhyKHIsZS5EaWFnbm9zdGljcy5NZXRob2RfMF9jYW5ub3RfaGF2ZV9hbl9pbXBsZW1lbnRhdGlvbl9iZWNhdXNlX2l0X2lzX21hcmtlZF9hYnN0cmFjdCxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHIubmFtZSkpLGUuaXNQcml2YXRlSWRlbnRpZmllcihyLm5hbWUpJiYhZS5nZXRDb250YWluaW5nQ2xhc3MocikmJlhyKHIsZS5EaWFnbm9zdGljcy5Qcml2YXRlX2lkZW50aWZpZXJzX2FyZV9ub3RfYWxsb3dlZF9vdXRzaWRlX2NsYXNzX2JvZGllcyksZ1Mocil9ZnVuY3Rpb24gZ1Mocil7aWYoZS5pc1ByaXZhdGVJZGVudGlmaWVyKHIubmFtZSkmJkFlPDk5KXtmb3IodmFyIGk9ZS5nZXRFbmNsb3NpbmdCbG9ja1Njb3BlQ29udGFpbmVyKHIpO2k7aT1lLmdldEVuY2xvc2luZ0Jsb2NrU2NvcGVDb250YWluZXIoaSkpdmEoaSkuZmxhZ3N8PTY3MTA4ODY0O2lmKGUuaXNDbGFzc0V4cHJlc3Npb24oci5wYXJlbnQpKXt2YXIgdD1oYihyLnBhcmVudCk7dCYmKHZhKHIubmFtZSkuZmxhZ3N8PTUyNDI4OCx2YSh0KS5mbGFnc3w9NjU1MzYpfX19ZnVuY3Rpb24gSk8ocil7RmYociksZS5mb3JFYWNoQ2hpbGQocixpbyl9ZnVuY3Rpb24gak8ocil7RHYociksZ0wocil8fG1MKHIpLGlvKHIuYm9keSk7dmFyIGk9RXQociksdD1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKGksci5raW5kKTtpZihyPT09dCYmTzAoaSksZS5ub2RlSXNNaXNzaW5nKHIuYm9keSkpcmV0dXJuO2ZlKHMpO3JldHVybjtmdW5jdGlvbiBvKHUpe3JldHVybiBlLmlzUHJpdmF0ZUlkZW50aWZpZXJDbGFzc0VsZW1lbnREZWNsYXJhdGlvbih1KT8hMDp1LmtpbmQ9PT0xNjcmJiFlLmlzU3RhdGljKHUpJiYhIXUuaW5pdGlhbGl6ZXJ9ZnVuY3Rpb24gcygpe3ZhciB1PXIucGFyZW50O2lmKGUuZ2V0Q2xhc3NFeHRlbmRzSGVyaXRhZ2VFbGVtZW50KHUpKXtEYihyLnBhcmVudCx1KTt2YXIgaD15Qyh1KSx6PXZDKHIuYm9keSk7aWYoeil7aCYmWHIoeixlLkRpYWdub3N0aWNzLkFfY29uc3RydWN0b3JfY2Fubm90X2NvbnRhaW5fYV9zdXBlcl9jYWxsX3doZW5faXRzX2NsYXNzX2V4dGVuZHNfbnVsbCk7dmFyIG1lPShlLmdldEVtaXRTY3JpcHRUYXJnZXQoeWUpIT09OTl8fCFpcikmJihlLnNvbWUoci5wYXJlbnQubWVtYmVycyxvKXx8ZS5zb21lKHIucGFyYW1ldGVycyxmdW5jdGlvbihEcil7cmV0dXJuIGUuaGFzU3ludGFjdGljTW9kaWZpZXIoRHIsMTY0NzYpfSkpO2lmKG1lKWlmKCFVTyh6LHIuYm9keSkpWHIoeixlLkRpYWdub3N0aWNzLkFfc3VwZXJfY2FsbF9tdXN0X2JlX2Ffcm9vdF9sZXZlbF9zdGF0ZW1lbnRfd2l0aGluX2FfY29uc3RydWN0b3Jfb2ZfYV9kZXJpdmVkX2NsYXNzX3RoYXRfY29udGFpbnNfaW5pdGlhbGl6ZWRfcHJvcGVydGllc19wYXJhbWV0ZXJfcHJvcGVydGllc19vcl9wcml2YXRlX2lkZW50aWZpZXJzKTtlbHNle2Zvcih2YXIgTWU9dm9pZCAwLCRlPTAsdHI9ci5ib2R5LnN0YXRlbWVudHM7JGU8dHIubGVuZ3RoOyRlKyspe3ZhciBkcj10clskZV07aWYoZS5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoZHIpJiZlLmlzU3VwZXJDYWxsKGUuc2tpcE91dGVyRXhwcmVzc2lvbnMoZHIuZXhwcmVzc2lvbikpKXtNZT1kcjticmVha31pZih0NihkcikpYnJlYWt9TWU9PT12b2lkIDAmJlhyKHIsZS5EaWFnbm9zdGljcy5BX3N1cGVyX2NhbGxfbXVzdF9iZV90aGVfZmlyc3Rfc3RhdGVtZW50X2luX3RoZV9jb25zdHJ1Y3Rvcl90b19yZWZlcl90b19zdXBlcl9vcl90aGlzX3doZW5fYV9kZXJpdmVkX2NsYXNzX2NvbnRhaW5zX2luaXRpYWxpemVkX3Byb3BlcnRpZXNfcGFyYW1ldGVyX3Byb3BlcnRpZXNfb3JfcHJpdmF0ZV9pZGVudGlmaWVycyl9fWVsc2UgaHx8WHIocixlLkRpYWdub3N0aWNzLkNvbnN0cnVjdG9yc19mb3JfZGVyaXZlZF9jbGFzc2VzX211c3RfY29udGFpbl9hX3N1cGVyX2NhbGwpfX19ZnVuY3Rpb24gVU8ocixpKXt2YXIgdD1lLndhbGtVcFBhcmVudGhlc2l6ZWRFeHByZXNzaW9ucyhyLnBhcmVudCk7cmV0dXJuIGUuaXNFeHByZXNzaW9uU3RhdGVtZW50KHQpJiZ0LnBhcmVudD09PWl9ZnVuY3Rpb24gdDYocil7cmV0dXJuIHIua2luZD09PTEwNnx8ci5raW5kPT09MTA4PyEwOmUuaXNUaGlzQ29udGFpbmVyT3JGdW5jdGlvbkJsb2NrKHIpPyExOiEhZS5mb3JFYWNoQ2hpbGQocix0Nil9ZnVuY3Rpb24gYTYocil7ZmUoaSksaW8oci5ib2R5KSxnUyhyKTtmdW5jdGlvbiBpKCl7aWYoIVgwKHIpJiYhYUwocikmJlEwKHIubmFtZSksRnkociksRHYociksci5raW5kPT09MTcyJiYhKHIuZmxhZ3MmMTY3NzcyMTYpJiZlLm5vZGVJc1ByZXNlbnQoci5ib2R5KSYmci5mbGFncyYyNTYmJihyLmZsYWdzJjUxMnx8WHIoci5uYW1lLGUuRGlhZ25vc3RpY3MuQV9nZXRfYWNjZXNzb3JfbXVzdF9yZXR1cm5fYV92YWx1ZSkpLHIubmFtZS5raW5kPT09MTYyJiZ0XyhyLm5hbWUpLFRkKHIpKXt2YXIgdD1FdChyKSxvPWUuZ2V0RGVjbGFyYXRpb25PZktpbmQodCwxNzIpLHM9ZS5nZXREZWNsYXJhdGlvbk9mS2luZCh0LDE3Myk7aWYobyYmcyYmIShVZyhvKSYxKSl7dmEobykuZmxhZ3N8PTE7dmFyIHU9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKG8pLGg9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKHMpOyh1JjEyOCkhPT0oaCYxMjgpJiYoWHIoby5uYW1lLGUuRGlhZ25vc3RpY3MuQWNjZXNzb3JzX211c3RfYm90aF9iZV9hYnN0cmFjdF9vcl9ub25fYWJzdHJhY3QpLFhyKHMubmFtZSxlLkRpYWdub3N0aWNzLkFjY2Vzc29yc19tdXN0X2JvdGhfYmVfYWJzdHJhY3Rfb3Jfbm9uX2Fic3RyYWN0KSksKHUmMTYmJiEoaCYyNCl8fHUmOCYmIShoJjgpKSYmKFhyKG8ubmFtZSxlLkRpYWdub3N0aWNzLkFfZ2V0X2FjY2Vzc29yX211c3RfYmVfYXRfbGVhc3RfYXNfYWNjZXNzaWJsZV9hc190aGVfc2V0dGVyKSxYcihzLm5hbWUsZS5EaWFnbm9zdGljcy5BX2dldF9hY2Nlc3Nvcl9tdXN0X2JlX2F0X2xlYXN0X2FzX2FjY2Vzc2libGVfYXNfdGhlX3NldHRlcikpO3ZhciB6PVRlKG8pLG1lPVRlKHMpO3omJm1lJiZ6Yyh6LG1lLG8sZS5EaWFnbm9zdGljcy5UaGVfcmV0dXJuX3R5cGVfb2ZfYV9nZXRfYWNjZXNzb3JfbXVzdF9iZV9hc3NpZ25hYmxlX3RvX2l0c19zZXRfYWNjZXNzb3JfdHlwZSl9fXZhciBNZT1ydChFdChyKSk7ci5raW5kPT09MTcyJiZzUyhyLE1lKX19ZnVuY3Rpb24gek8ocil7Rnkocil9ZnVuY3Rpb24gUDAocixpKXtyZXR1cm4genAoZS5tYXAoci50eXBlQXJndW1lbnRzLFZhKSxpLFVsKGkpLGUuaXNJbkpTRmlsZShyKSl9ZnVuY3Rpb24gbjYocixpKXtmb3IodmFyIHQsbyxzPSEwLHU9MDt1PGkubGVuZ3RoO3UrKyl7dmFyIGg9VGMoaVt1XSk7aCYmKHR8fCh0PVAwKHIsaSksbz1VYyhpLHQpKSxzPXMmJnpjKHRbdV0sdW4oaCxvKSxyLnR5cGVBcmd1bWVudHNbdV0sZS5EaWFnbm9zdGljcy5UeXBlXzBfZG9lc19ub3Rfc2F0aXNmeV90aGVfY29uc3RyYWludF8xKSl9cmV0dXJuIHN9ZnVuY3Rpb24gbVMocil7dmFyIGk9dHkocik7aWYoIW5uKGkpKXt2YXIgdD12YShyKS5yZXNvbHZlZFN5bWJvbDtpZih0KXJldHVybiB0LmZsYWdzJjUyNDI4OCYmQWEodCkudHlwZVBhcmFtZXRlcnN8fChlLmdldE9iamVjdEZsYWdzKGkpJjQ/aS50YXJnZXQubG9jYWxUeXBlUGFyYW1ldGVyczp2b2lkIDApfX1mdW5jdGlvbiB2UyhyKXtXeShyLHIudHlwZUFyZ3VtZW50cyksci5raW5kPT09MTc4JiZyLnR5cGVOYW1lLmpzZG9jRG90UG9zIT09dm9pZCAwJiYhZS5pc0luSlNGaWxlKHIpJiYhZS5pc0luSlNEb2MocikmJnJkKHIsci50eXBlTmFtZS5qc2RvY0RvdFBvcywxLGUuRGlhZ25vc3RpY3MuSlNEb2NfdHlwZXNfY2FuX29ubHlfYmVfdXNlZF9pbnNpZGVfZG9jdW1lbnRhdGlvbl9jb21tZW50cyksZS5mb3JFYWNoKHIudHlwZUFyZ3VtZW50cyxpbyk7dmFyIGk9dHkocik7aWYoIW5uKGkpKXtyLnR5cGVBcmd1bWVudHMmJmZlKGZ1bmN0aW9uKCl7dmFyIG89bVMocik7byYmbjYocixvKX0pO3ZhciB0PXZhKHIpLnJlc29sdmVkU3ltYm9sO3QmJihlLnNvbWUodC5kZWNsYXJhdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIHp5KG8pJiYhIShvLmZsYWdzJjI2ODQzNTQ1Nil9KSYmRWwoa3kociksdC5kZWNsYXJhdGlvbnMsdC5lc2NhcGVkTmFtZSksaS5mbGFncyYzMiYmdC5mbGFncyY4JiZYcihyLGUuRGlhZ25vc3RpY3MuRW51bV90eXBlXzBfaGFzX21lbWJlcnNfd2l0aF9pbml0aWFsaXplcnNfdGhhdF9hcmVfbm90X2xpdGVyYWxzLE90KGkpKSl9fWZ1bmN0aW9uIFdPKHIpe3ZhciBpPWUudHJ5Q2FzdChyLnBhcmVudCxlLmlzVHlwZVJlZmVyZW5jZVR5cGUpO2lmKCEhaSl7dmFyIHQ9bVMoaSk7aWYoISF0KXt2YXIgbz1UYyh0W2kudHlwZUFyZ3VtZW50cy5pbmRleE9mKHIpXSk7cmV0dXJuIG8mJnVuKG8sVWModCxQMChpLHQpKSl9fX1mdW5jdGlvbiBxTyhyKXt5eChyKX1mdW5jdGlvbiBWTyhyKXtlLmZvckVhY2goci5tZW1iZXJzLGlvKSxmZShpKTtmdW5jdGlvbiBpKCl7dmFyIHQ9dEUocik7SjAodCx0LnN5bWJvbCksZFMocikscjYocil9fWZ1bmN0aW9uIEtPKHIpe2lvKHIuZWxlbWVudFR5cGUpfWZ1bmN0aW9uIEdPKHIpe2Zvcih2YXIgaT1yLmVsZW1lbnRzLHQ9ITEsbz0hMSxzPWUuc29tZShpLGUuaXNOYW1lZFR1cGxlTWVtYmVyKSx1PTAsaD1pO3U8aC5sZW5ndGg7dSsrKXt2YXIgej1oW3VdO2lmKHoua2luZCE9PTE5NyYmcyl7VHQoeixlLkRpYWdub3N0aWNzLlR1cGxlX21lbWJlcnNfbXVzdF9hbGxfaGF2ZV9uYW1lc19vcl9hbGxfbm90X2hhdmVfbmFtZXMpO2JyZWFrfXZhciBtZT1zRCh6KTtpZihtZSY4KXt2YXIgTWU9VmEoei50eXBlKTtpZighc3AoTWUpKXtYcih6LGUuRGlhZ25vc3RpY3MuQV9yZXN0X2VsZW1lbnRfdHlwZV9tdXN0X2JlX2FuX2FycmF5X3R5cGUpO2JyZWFrfShUdShNZSl8fFluKE1lKSYmTWUudGFyZ2V0LmNvbWJpbmVkRmxhZ3MmNCkmJihvPSEwKX1lbHNlIGlmKG1lJjQpe2lmKG8pe1R0KHosZS5EaWFnbm9zdGljcy5BX3Jlc3RfZWxlbWVudF9jYW5ub3RfZm9sbG93X2Fub3RoZXJfcmVzdF9lbGVtZW50KTticmVha31vPSEwfWVsc2UgaWYobWUmMil7aWYobyl7VHQoeixlLkRpYWdub3N0aWNzLkFuX29wdGlvbmFsX2VsZW1lbnRfY2Fubm90X2ZvbGxvd19hX3Jlc3RfZWxlbWVudCk7YnJlYWt9dD0hMH1lbHNlIGlmKHQpe1R0KHosZS5EaWFnbm9zdGljcy5BX3JlcXVpcmVkX2VsZW1lbnRfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9lbGVtZW50KTticmVha319ZS5mb3JFYWNoKHIuZWxlbWVudHMsaW8pLFZhKHIpfWZ1bmN0aW9uIEhPKHIpe2UuZm9yRWFjaChyLnR5cGVzLGlvKSxWYShyKX1mdW5jdGlvbiBvNihyLGkpe2lmKCEoci5mbGFncyY4Mzg4NjA4KSlyZXR1cm4gcjt2YXIgdD1yLm9iamVjdFR5cGUsbz1yLmluZGV4VHlwZTtpZihhbyhvLHFsKHQsITEpKSlyZXR1cm4gaS5raW5kPT09MjA3JiZlLmlzQXNzaWdubWVudFRhcmdldChpKSYmZS5nZXRPYmplY3RGbGFncyh0KSYzMiYmTHUodCkmMSYmWHIoaSxlLkRpYWdub3N0aWNzLkluZGV4X3NpZ25hdHVyZV9pbl90eXBlXzBfb25seV9wZXJtaXRzX3JlYWRpbmcsT3QodCkpLHI7dmFyIHM9JHModCk7aWYoc3MocyxudCkmJk5zKG8sMjk2KSlyZXR1cm4gcjtpZihBZCh0KSl7dmFyIHU9Z0QobyxpKTtpZih1KXt2YXIgaD1PZChzLGZ1bmN0aW9uKHope3JldHVybiBiaSh6LHUpfSk7aWYoaCYmZS5nZXREZWNsYXJhdGlvbk1vZGlmaWVyRmxhZ3NGcm9tU3ltYm9sKGgpJjI0KXJldHVybiBYcihpLGUuRGlhZ25vc3RpY3MuUHJpdmF0ZV9vcl9wcm90ZWN0ZWRfbWVtYmVyXzBfY2Fubm90X2JlX2FjY2Vzc2VkX29uX2FfdHlwZV9wYXJhbWV0ZXIsZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyh1KSksUGV9fXJldHVybiBYcihpLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2Nhbm5vdF9iZV91c2VkX3RvX2luZGV4X3R5cGVfMSxPdChvKSxPdCh0KSksUGV9ZnVuY3Rpb24gWE8ocil7aW8oci5vYmplY3RUeXBlKSxpbyhyLmluZGV4VHlwZSksbzYoWXgocikscil9ZnVuY3Rpb24gUU8ocil7WU8ociksaW8oci50eXBlUGFyYW1ldGVyKSxpbyhyLm5hbWVUeXBlKSxpbyhyLnR5cGUpLHIudHlwZXx8WHAocixPZSk7dmFyIGk9eUQociksdD1KbChpKTtpZih0KXpjKHQsYXQsci5uYW1lVHlwZSk7ZWxzZXt2YXIgbz1NdShpKTt6YyhvLGF0LGUuZ2V0RWZmZWN0aXZlQ29uc3RyYWludE9mVHlwZVBhcmFtZXRlcihyLnR5cGVQYXJhbWV0ZXIpKX19ZnVuY3Rpb24gWU8ocil7dmFyIGk7aWYoISgoaT1yLm1lbWJlcnMpPT09bnVsbHx8aT09PXZvaWQgMCkmJmkubGVuZ3RoKXJldHVybiBUdChyLm1lbWJlcnNbMF0sZS5EaWFnbm9zdGljcy5BX21hcHBlZF90eXBlX21heV9ub3RfZGVjbGFyZV9wcm9wZXJ0aWVzX29yX21ldGhvZHMpfWZ1bmN0aW9uICRPKHIpe0NoKHIpfWZ1bmN0aW9uIFpPKHIpe29MKHIpLGlvKHIudHlwZSl9ZnVuY3Rpb24gZUYocil7ZS5mb3JFYWNoQ2hpbGQocixpbyl9ZnVuY3Rpb24gckYocil7ZS5maW5kQW5jZXN0b3IocixmdW5jdGlvbihNZSl7cmV0dXJuIE1lLnBhcmVudCYmTWUucGFyZW50LmtpbmQ9PT0xODkmJk1lLnBhcmVudC5leHRlbmRzVHlwZT09PU1lfSl8fFR0KHIsZS5EaWFnbm9zdGljcy5pbmZlcl9kZWNsYXJhdGlvbnNfYXJlX29ubHlfcGVybWl0dGVkX2luX3RoZV9leHRlbmRzX2NsYXVzZV9vZl9hX2NvbmRpdGlvbmFsX3R5cGUpLGlvKHIudHlwZVBhcmFtZXRlcik7dmFyIGk9RXQoci50eXBlUGFyYW1ldGVyKTtpZihpLmRlY2xhcmF0aW9ucyYmaS5kZWNsYXJhdGlvbnMubGVuZ3RoPjEpe3ZhciB0PUFhKGkpO2lmKCF0LnR5cGVQYXJhbWV0ZXJzQ2hlY2tlZCl7dC50eXBlUGFyYW1ldGVyc0NoZWNrZWQ9ITA7dmFyIG89SnMoaSkscz1lLmdldERlY2xhcmF0aW9uc09mS2luZChpLDE2Myk7aWYoIUY2KHMsW29dLGZ1bmN0aW9uKE1lKXtyZXR1cm5bTWVdfSkpZm9yKHZhciB1PXRuKGkpLGg9MCx6PXM7aDx6Lmxlbmd0aDtoKyspe3ZhciBtZT16W2hdO1hyKG1lLm5hbWUsZS5EaWFnbm9zdGljcy5BbGxfZGVjbGFyYXRpb25zX29mXzBfbXVzdF9oYXZlX2lkZW50aWNhbF9jb25zdHJhaW50cyx1KX19fUFfKHIpfWZ1bmN0aW9uIGlGKHIpe2Zvcih2YXIgaT0wLHQ9ci50ZW1wbGF0ZVNwYW5zO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldO2lvKG8udHlwZSk7dmFyIHM9VmEoby50eXBlKTt6YyhzLGJhLG8udHlwZSl9VmEocil9ZnVuY3Rpb24gdEYocil7aWYoaW8oci5hcmd1bWVudCksci5hc3NlcnRpb25zKXt2YXIgaT1lLmdldFJlc29sdXRpb25Nb2RlT3ZlcnJpZGVGb3JDbGF1c2Uoci5hc3NlcnRpb25zLmFzc2VydENsYXVzZSxUdCk7aSYmZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoeWUpIT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTYmJmUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKHllKSE9PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZU5leHQmJlR0KHIuYXNzZXJ0aW9ucy5hc3NlcnRDbGF1c2UsZS5EaWFnbm9zdGljcy5SZXNvbHV0aW9uX21vZGVzX2FyZV9vbmx5X3N1cHBvcnRlZF93aGVuX21vZHVsZVJlc29sdXRpb25faXNfbm9kZTE2X29yX25vZGVuZXh0KX1WYShyKX1mdW5jdGlvbiBhRihyKXtyLmRvdERvdERvdFRva2VuJiZyLnF1ZXN0aW9uVG9rZW4mJlR0KHIsZS5EaWFnbm9zdGljcy5BX3R1cGxlX21lbWJlcl9jYW5ub3RfYmVfYm90aF9vcHRpb25hbF9hbmRfcmVzdCksci50eXBlLmtpbmQ9PT0xODUmJlR0KHIudHlwZSxlLkRpYWdub3N0aWNzLkFfbGFiZWxlZF90dXBsZV9lbGVtZW50X2lzX2RlY2xhcmVkX2FzX29wdGlvbmFsX3dpdGhfYV9xdWVzdGlvbl9tYXJrX2FmdGVyX3RoZV9uYW1lX2FuZF9iZWZvcmVfdGhlX2NvbG9uX3JhdGhlcl90aGFuX2FmdGVyX3RoZV90eXBlKSxyLnR5cGUua2luZD09PTE4NiYmVHQoci50eXBlLGUuRGlhZ25vc3RpY3MuQV9sYWJlbGVkX3R1cGxlX2VsZW1lbnRfaXNfZGVjbGFyZWRfYXNfcmVzdF93aXRoX2FfYmVmb3JlX3RoZV9uYW1lX3JhdGhlcl90aGFuX2JlZm9yZV90aGVfdHlwZSksaW8oci50eXBlKSxWYShyKX1mdW5jdGlvbiBJMChyKXtyZXR1cm4oZS5oYXNFZmZlY3RpdmVNb2RpZmllcihyLDgpfHxlLmlzUHJpdmF0ZUlkZW50aWZpZXJDbGFzc0VsZW1lbnREZWNsYXJhdGlvbihyKSkmJiEhKHIuZmxhZ3MmMTY3NzcyMTYpfWZ1bmN0aW9uIHcwKHIsaSl7dmFyIHQ9ZS5nZXRDb21iaW5lZE1vZGlmaWVyRmxhZ3Mocik7cmV0dXJuIHIucGFyZW50LmtpbmQhPT0yNTgmJnIucGFyZW50LmtpbmQhPT0yNTcmJnIucGFyZW50LmtpbmQhPT0yMjYmJnIuZmxhZ3MmMTY3NzcyMTYmJighKHQmMikmJiEoZS5pc01vZHVsZUJsb2NrKHIucGFyZW50KSYmZS5pc01vZHVsZURlY2xhcmF0aW9uKHIucGFyZW50LnBhcmVudCkmJmUuaXNHbG9iYWxTY29wZUF1Z21lbnRhdGlvbihyLnBhcmVudC5wYXJlbnQpKSYmKHR8PTEpLHR8PTIpLHQmaX1mdW5jdGlvbiBPMChyKXtmZShmdW5jdGlvbigpe3JldHVybiBuRihyKX0pfWZ1bmN0aW9uIG5GKHIpe2Z1bmN0aW9uIGkoUXQsS2Epe3ZhciBjbj1LYSE9PXZvaWQgMCYmS2EucGFyZW50PT09UXRbMF0ucGFyZW50O3JldHVybiBjbj9LYTpRdFswXX1mdW5jdGlvbiB0KFF0LEthLGNuLFVuLG9hKXt2YXIgTW49VW5eb2E7aWYoTW4hPT0wKXt2YXIgTG49dzAoaShRdCxLYSksY24pO2UuZm9yRWFjaChRdCxmdW5jdGlvbihjaSl7dmFyIEZyPXcwKGNpLGNuKV5MbjtGciYxP1hyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oY2kpLGUuRGlhZ25vc3RpY3MuT3ZlcmxvYWRfc2lnbmF0dXJlc19tdXN0X2FsbF9iZV9leHBvcnRlZF9vcl9ub25fZXhwb3J0ZWQpOkZyJjI/WHIoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihjaSksZS5EaWFnbm9zdGljcy5PdmVybG9hZF9zaWduYXR1cmVzX211c3RfYWxsX2JlX2FtYmllbnRfb3Jfbm9uX2FtYmllbnQpOkZyJjI0P1hyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oY2kpfHxjaSxlLkRpYWdub3N0aWNzLk92ZXJsb2FkX3NpZ25hdHVyZXNfbXVzdF9hbGxfYmVfcHVibGljX3ByaXZhdGVfb3JfcHJvdGVjdGVkKTpGciYxMjgmJlhyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oY2kpLGUuRGlhZ25vc3RpY3MuT3ZlcmxvYWRfc2lnbmF0dXJlc19tdXN0X2FsbF9iZV9hYnN0cmFjdF9vcl9ub25fYWJzdHJhY3QpfSl9fWZ1bmN0aW9uIG8oUXQsS2EsY24sVW4pe2lmKGNuIT09VW4pe3ZhciBvYT1lLmhhc1F1ZXN0aW9uVG9rZW4oaShRdCxLYSkpO2UuZm9yRWFjaChRdCxmdW5jdGlvbihNbil7dmFyIExuPWUuaGFzUXVlc3Rpb25Ub2tlbihNbikhPT1vYTtMbiYmWHIoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihNbiksZS5EaWFnbm9zdGljcy5PdmVybG9hZF9zaWduYXR1cmVzX211c3RfYWxsX2JlX29wdGlvbmFsX29yX3JlcXVpcmVkKX0pfX12YXIgcz0xNTUsdT0wLGg9cyx6PSExLG1lPSEwLE1lPSExLCRlLHRyLGRyLERyPXIuZGVjbGFyYXRpb25zLFFyPShyLmZsYWdzJjE2Mzg0KSE9PTA7ZnVuY3Rpb24gbGkoUXQpe2lmKCEoUXQubmFtZSYmZS5ub2RlSXNNaXNzaW5nKFF0Lm5hbWUpKSl7dmFyIEthPSExLGNuPWUuZm9yRWFjaENoaWxkKFF0LnBhcmVudCxmdW5jdGlvbihGcil7aWYoS2EpcmV0dXJuIEZyO0thPUZyPT09UXR9KTtpZihjbiYmY24ucG9zPT09UXQuZW5kJiZjbi5raW5kPT09UXQua2luZCl7dmFyIFVuPWNuLm5hbWV8fGNuLG9hPWNuLm5hbWU7aWYoUXQubmFtZSYmb2EmJihlLmlzUHJpdmF0ZUlkZW50aWZpZXIoUXQubmFtZSkmJmUuaXNQcml2YXRlSWRlbnRpZmllcihvYSkmJlF0Lm5hbWUuZXNjYXBlZFRleHQ9PT1vYS5lc2NhcGVkVGV4dHx8ZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKFF0Lm5hbWUpJiZlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUob2EpfHxlLmlzUHJvcGVydHlOYW1lTGl0ZXJhbChRdC5uYW1lKSYmZS5pc1Byb3BlcnR5TmFtZUxpdGVyYWwob2EpJiZlLmdldEVzY2FwZWRUZXh0T2ZJZGVudGlmaWVyT3JMaXRlcmFsKFF0Lm5hbWUpPT09ZS5nZXRFc2NhcGVkVGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChvYSkpKXt2YXIgTW49KFF0LmtpbmQ9PT0xNjl8fFF0LmtpbmQ9PT0xNjgpJiZlLmlzU3RhdGljKFF0KSE9PWUuaXNTdGF0aWMoY24pO2lmKE1uKXt2YXIgTG49ZS5pc1N0YXRpYyhRdCk/ZS5EaWFnbm9zdGljcy5GdW5jdGlvbl9vdmVybG9hZF9tdXN0X2JlX3N0YXRpYzplLkRpYWdub3N0aWNzLkZ1bmN0aW9uX292ZXJsb2FkX211c3Rfbm90X2JlX3N0YXRpYztYcihVbixMbil9cmV0dXJufWlmKGUubm9kZUlzUHJlc2VudChjbi5ib2R5KSl7WHIoVW4sZS5EaWFnbm9zdGljcy5GdW5jdGlvbl9pbXBsZW1lbnRhdGlvbl9uYW1lX211c3RfYmVfMCxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKFF0Lm5hbWUpKTtyZXR1cm59fXZhciBjaT1RdC5uYW1lfHxRdDtRcj9YcihjaSxlLkRpYWdub3N0aWNzLkNvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uX2lzX21pc3NpbmcpOmUuaGFzU3ludGFjdGljTW9kaWZpZXIoUXQsMTI4KT9YcihjaSxlLkRpYWdub3N0aWNzLkFsbF9kZWNsYXJhdGlvbnNfb2ZfYW5fYWJzdHJhY3RfbWV0aG9kX211c3RfYmVfY29uc2VjdXRpdmUpOlhyKGNpLGUuRGlhZ25vc3RpY3MuRnVuY3Rpb25faW1wbGVtZW50YXRpb25faXNfbWlzc2luZ19vcl9ub3RfaW1tZWRpYXRlbHlfZm9sbG93aW5nX3RoZV9kZWNsYXJhdGlvbil9fXZhciBUaT0hMSxDaT0hMSwkaT0hMSxaaT1bXTtpZihEcilmb3IodmFyIHF0PTAsTnQ9RHI7cXQ8TnQubGVuZ3RoO3F0Kyspe3ZhciBSYT1OdFtxdF0sY2E9UmEsU249Y2EuZmxhZ3MmMTY3NzcyMTYsamE9Y2EucGFyZW50JiYoY2EucGFyZW50LmtpbmQ9PT0yNTh8fGNhLnBhcmVudC5raW5kPT09MTgyKXx8U247aWYoamEmJihkcj12b2lkIDApLChjYS5raW5kPT09MjU3fHxjYS5raW5kPT09MjI2KSYmIVNuJiYoJGk9ITApLGNhLmtpbmQ9PT0yNTZ8fGNhLmtpbmQ9PT0xNjl8fGNhLmtpbmQ9PT0xNjh8fGNhLmtpbmQ9PT0xNzEpe1ppLnB1c2goY2EpO3ZhciBGbj13MChjYSxzKTt1fD1GbixoJj1Gbix6PXp8fGUuaGFzUXVlc3Rpb25Ub2tlbihjYSksbWU9bWUmJmUuaGFzUXVlc3Rpb25Ub2tlbihjYSk7dmFyIHduPWUubm9kZUlzUHJlc2VudChjYS5ib2R5KTt3biYmJGU/UXI/Q2k9ITA6VGk9ITA6KGRyPT1udWxsP3ZvaWQgMDpkci5wYXJlbnQpPT09Y2EucGFyZW50JiZkci5lbmQhPT1jYS5wb3MmJmxpKGRyKSx3bj8kZXx8KCRlPWNhKTpNZT0hMCxkcj1jYSxqYXx8KHRyPWNhKX19aWYoQ2kmJmUuZm9yRWFjaChaaSxmdW5jdGlvbihRdCl7WHIoUXQsZS5EaWFnbm9zdGljcy5NdWx0aXBsZV9jb25zdHJ1Y3Rvcl9pbXBsZW1lbnRhdGlvbnNfYXJlX25vdF9hbGxvd2VkKX0pLFRpJiZlLmZvckVhY2goWmksZnVuY3Rpb24oUXQpe1hyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oUXQpfHxRdCxlLkRpYWdub3N0aWNzLkR1cGxpY2F0ZV9mdW5jdGlvbl9pbXBsZW1lbnRhdGlvbil9KSwkaSYmIVFyJiZyLmZsYWdzJjE2JiZEcil7dmFyIFRuPWUuZmlsdGVyKERyLGZ1bmN0aW9uKFF0KXtyZXR1cm4gUXQua2luZD09PTI1N30pLm1hcChmdW5jdGlvbihRdCl7cmV0dXJuIGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoUXQsZS5EaWFnbm9zdGljcy5Db25zaWRlcl9hZGRpbmdfYV9kZWNsYXJlX21vZGlmaWVyX3RvX3RoaXNfY2xhc3MpfSk7ZS5mb3JFYWNoKERyLGZ1bmN0aW9uKFF0KXt2YXIgS2E9UXQua2luZD09PTI1Nz9lLkRpYWdub3N0aWNzLkNsYXNzX2RlY2xhcmF0aW9uX2Nhbm5vdF9pbXBsZW1lbnRfb3ZlcmxvYWRfbGlzdF9mb3JfMDpRdC5raW5kPT09MjU2P2UuRGlhZ25vc3RpY3MuRnVuY3Rpb25fd2l0aF9ib2RpZXNfY2FuX29ubHlfbWVyZ2Vfd2l0aF9jbGFzc2VzX3RoYXRfYXJlX2FtYmllbnQ6dm9pZCAwO0thJiZlLmFkZFJlbGF0ZWRJbmZvLmFwcGx5KHZvaWQgMCxWZShbWHIoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihRdCl8fFF0LEthLGUuc3ltYm9sTmFtZShyKSldLFRuLCExKSl9KX1pZih0ciYmIXRyLmJvZHkmJiFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHRyLDEyOCkmJiF0ci5xdWVzdGlvblRva2VuJiZsaSh0ciksTWUmJihEciYmKHQoRHIsJGUscyx1LGgpLG8oRHIsJGUseixtZSkpLCRlKSlmb3IodmFyIEVvPVNfKHIpLGx0PXlsKCRlKSxpdD0wLFl0PUVvO2l0PFl0Lmxlbmd0aDtpdCsrKXt2YXIgSWE9WXRbaXRdO2lmKCF1dyhsdCxJYSkpe2UuYWRkUmVsYXRlZEluZm8oWHIoSWEuZGVjbGFyYXRpb24sZS5EaWFnbm9zdGljcy5UaGlzX292ZXJsb2FkX3NpZ25hdHVyZV9pc19ub3RfY29tcGF0aWJsZV93aXRoX2l0c19pbXBsZW1lbnRhdGlvbl9zaWduYXR1cmUpLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoJGUsZS5EaWFnbm9zdGljcy5UaGVfaW1wbGVtZW50YXRpb25fc2lnbmF0dXJlX2lzX2RlY2xhcmVkX2hlcmUpKTticmVha319fWZ1bmN0aW9uIGJ2KHIpe2ZlKGZ1bmN0aW9uKCl7cmV0dXJuIG9GKHIpfSl9ZnVuY3Rpb24gb0Yocil7dmFyIGk9ci5sb2NhbFN5bWJvbDtpZighaSYmKGk9RXQociksIWkuZXhwb3J0U3ltYm9sKXx8ZS5nZXREZWNsYXJhdGlvbk9mS2luZChpLHIua2luZCkhPT1yKXJldHVybjtmb3IodmFyIHQ9MCxvPTAscz0wLHU9MCxoPWkuZGVjbGFyYXRpb25zO3U8aC5sZW5ndGg7dSsrKXt2YXIgej1oW3VdLG1lPVRpKHopLE1lPXcwKHosNTEzKTtNZSYxP01lJjUxMj9zfD1tZTp0fD1tZTpvfD1tZX12YXIgJGU9dHxvLHRyPXQmbyxkcj1zJiRlO2lmKHRyfHxkcilmb3IodmFyIERyPTAsUXI9aS5kZWNsYXJhdGlvbnM7RHI8UXIubGVuZ3RoO0RyKyspe3ZhciB6PVFyW0RyXSxtZT1UaSh6KSxsaT1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKHopO21lJmRyP1hyKGxpLGUuRGlhZ25vc3RpY3MuTWVyZ2VkX2RlY2xhcmF0aW9uXzBfY2Fubm90X2luY2x1ZGVfYV9kZWZhdWx0X2V4cG9ydF9kZWNsYXJhdGlvbl9Db25zaWRlcl9hZGRpbmdfYV9zZXBhcmF0ZV9leHBvcnRfZGVmYXVsdF8wX2RlY2xhcmF0aW9uX2luc3RlYWQsZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhsaSkpOm1lJnRyJiZYcihsaSxlLkRpYWdub3N0aWNzLkluZGl2aWR1YWxfZGVjbGFyYXRpb25zX2luX21lcmdlZF9kZWNsYXJhdGlvbl8wX211c3RfYmVfYWxsX2V4cG9ydGVkX29yX2FsbF9sb2NhbCxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKGxpKSl9ZnVuY3Rpb24gVGkoQ2kpe3ZhciAkaT1DaTtzd2l0Y2goJGkua2luZCl7Y2FzZSAyNTg6Y2FzZSAyNTk6Y2FzZSAzNDU6Y2FzZSAzMzg6Y2FzZSAzMzk6cmV0dXJuIDI7Y2FzZSAyNjE6cmV0dXJuIGUuaXNBbWJpZW50TW9kdWxlKCRpKXx8ZS5nZXRNb2R1bGVJbnN0YW5jZVN0YXRlKCRpKSE9PTA/NTo0O2Nhc2UgMjU3OmNhc2UgMjYwOmNhc2UgMjk5OnJldHVybiAzO2Nhc2UgMzA1OnJldHVybiA3O2Nhc2UgMjcxOmNhc2UgMjIxOnZhciBaaT0kaSxxdD1lLmlzRXhwb3J0QXNzaWdubWVudChaaSk/WmkuZXhwcmVzc2lvbjpaaS5yaWdodDtpZighZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKHF0KSlyZXR1cm4gMTskaT1xdDtjYXNlIDI2NTpjYXNlIDI2ODpjYXNlIDI2Nzp2YXIgTnQ9MCxSYT1QcyhFdCgkaSkpO3JldHVybiBlLmZvckVhY2goUmEuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGNhKXtOdHw9VGkoY2EpfSksTnQ7Y2FzZSAyNTQ6Y2FzZSAyMDM6Y2FzZSAyNTY6Y2FzZSAyNzA6Y2FzZSA3OTpyZXR1cm4gMTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWxCYWRTeW50YXhLaW5kKCRpKX19fWZ1bmN0aW9uIFN2KHIsaSx0LG8pe3ZhciBzPVR2KHIsaSk7cmV0dXJuIHMmJmFnKHMsaSx0LG8pfWZ1bmN0aW9uIFR2KHIsaSl7aWYoIXRhKHIpKXt2YXIgdD1yO2lmKHQucHJvbWlzZWRUeXBlT2ZQcm9taXNlKXJldHVybiB0LnByb21pc2VkVHlwZU9mUHJvbWlzZTtpZihYZihyLGF5KCExKSkpcmV0dXJuIHQucHJvbWlzZWRUeXBlT2ZQcm9taXNlPXhvKHIpWzBdO2lmKCFMZyhyLDI2MjE0MCkpe3ZhciBvPWRhKHIsXCJ0aGVuXCIpO2lmKCF0YShvKSl7dmFyIHM9bz9vdChvLDApOmUuZW1wdHlBcnJheTtpZihzLmxlbmd0aD09PTApe2kmJlhyKGksZS5EaWFnbm9zdGljcy5BX3Byb21pc2VfbXVzdF9oYXZlX2FfdGhlbl9tZXRob2QpO3JldHVybn12YXIgdT1LcyhQYShlLm1hcChzLGFTKSksMjA5NzE1Mik7aWYoIXRhKHUpKXt2YXIgaD1vdCh1LDApO2lmKGgubGVuZ3RoPT09MCl7aSYmWHIoaSxlLkRpYWdub3N0aWNzLlRoZV9maXJzdF9wYXJhbWV0ZXJfb2ZfdGhlX3RoZW5fbWV0aG9kX29mX2FfcHJvbWlzZV9tdXN0X2JlX2FfY2FsbGJhY2spO3JldHVybn1yZXR1cm4gdC5wcm9taXNlZFR5cGVPZlByb21pc2U9UGEoZS5tYXAoaCxhUyksMil9fX19fWZ1bmN0aW9uIHh2KHIsaSx0LG8scyl7dmFyIHU9aT9hZyhyLHQsbyxzKTprXyhyLHQsbyxzKTtyZXR1cm4gdXx8UGV9ZnVuY3Rpb24gczYocil7aWYoTGcociwyNjIxNDApKXJldHVybiExO3ZhciBpPWRhKHIsXCJ0aGVuXCIpO3JldHVybiEhaSYmb3QoS3MoaSwyMDk3MTUyKSwwKS5sZW5ndGg+MH1mdW5jdGlvbiB5UyhyKXt2YXIgaTtpZihyLmZsYWdzJjE2Nzc3MjE2KXt2YXIgdD1vRCghMSk7cmV0dXJuISF0JiZyLmFsaWFzU3ltYm9sPT09dCYmKChpPXIuYWxpYXNUeXBlQXJndW1lbnRzKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkubGVuZ3RoKT09PTF9cmV0dXJuITF9ZnVuY3Rpb24gRXYocil7cmV0dXJuIHIuZmxhZ3MmMTA0ODU3Nj9TcyhyLEV2KTp5UyhyKT9yLmFsaWFzVHlwZUFyZ3VtZW50c1swXTpyfWZ1bmN0aW9uIHNGKHIpe2lmKHRhKHIpfHx5UyhyKSlyZXR1cm4gcjtpZihBZChyKSl7dmFyIGk9dWMocik7aWYoIWl8fGkuZmxhZ3MmM3x8T2YoaSl8fHM2KGkpKXt2YXIgdD1vRCghMCk7aWYodClyZXR1cm4gYW0odCxbRXYocildKX19cmV0dXJuIGUuRGVidWcuYXNzZXJ0KFR2KHIpPT09dm9pZCAwLFwidHlwZSBwcm92aWRlZCBzaG91bGQgbm90IGJlIGEgbm9uLWdlbmVyaWMgJ3Byb21pc2UnLWxpa2UuXCIpLHJ9ZnVuY3Rpb24gYWcocixpLHQsbyl7dmFyIHM9a18ocixpLHQsbyk7cmV0dXJuIHMmJnNGKHMpfWZ1bmN0aW9uIGtfKHIsaSx0LG8pe2lmKHRhKHIpfHx5UyhyKSlyZXR1cm4gcjt2YXIgcz1yO2lmKHMuYXdhaXRlZFR5cGVPZlR5cGUpcmV0dXJuIHMuYXdhaXRlZFR5cGVPZlR5cGU7aWYoci5mbGFncyYxMDQ4NTc2KXt2YXIgdT1pP2Z1bmN0aW9uKG1lKXtyZXR1cm4ga18obWUsaSx0LG8pfTprXztyZXR1cm4gcy5hd2FpdGVkVHlwZU9mVHlwZT1TcyhyLHUpfXZhciBoPVR2KHIpO2lmKGgpe2lmKHIuaWQ9PT1oLmlkfHxxYS5sYXN0SW5kZXhPZihoLmlkKT49MCl7aSYmWHIoaSxlLkRpYWdub3N0aWNzLlR5cGVfaXNfcmVmZXJlbmNlZF9kaXJlY3RseV9vcl9pbmRpcmVjdGx5X2luX3RoZV9mdWxmaWxsbWVudF9jYWxsYmFja19vZl9pdHNfb3duX3RoZW5fbWV0aG9kKTtyZXR1cm59cWEucHVzaChyLmlkKTt2YXIgej1rXyhoLGksdCxvKTtyZXR1cm4gcWEucG9wKCksej9zLmF3YWl0ZWRUeXBlT2ZUeXBlPXo6dm9pZCAwfWlmKHM2KHIpKXtpJiYoZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQodCksWHIoaSx0LG8pKTtyZXR1cm59cmV0dXJuIHMuYXdhaXRlZFR5cGVPZlR5cGU9cn1mdW5jdGlvbiBjRihyLGkpe3ZhciB0PVZhKGkpO2lmKEFlPj0yKXtpZihubih0KSlyZXR1cm47dmFyIG89YXkoITApO2lmKG8hPT1rbiYmIVhmKHQsbykpe1hyKGksZS5EaWFnbm9zdGljcy5UaGVfcmV0dXJuX3R5cGVfb2ZfYW5fYXN5bmNfZnVuY3Rpb25fb3JfbWV0aG9kX211c3RfYmVfdGhlX2dsb2JhbF9Qcm9taXNlX1RfdHlwZV9EaWRfeW91X21lYW5fdG9fd3JpdGVfUHJvbWlzZV8wLE90KGtfKHQpfHxGaSkpO3JldHVybn19ZWxzZXtpZihsRihpKSxubih0KSlyZXR1cm47dmFyIHM9ZS5nZXRFbnRpdHlOYW1lRnJvbVR5cGVOb2RlKGkpO2lmKHM9PT12b2lkIDApe1hyKGksZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2FfdmFsaWRfYXN5bmNfZnVuY3Rpb25fcmV0dXJuX3R5cGVfaW5fRVM1X1NsYXNoRVMzX2JlY2F1c2VfaXRfZG9lc19ub3RfcmVmZXJfdG9fYV9Qcm9taXNlX2NvbXBhdGlibGVfY29uc3RydWN0b3JfdmFsdWUsT3QodCkpO3JldHVybn12YXIgdT1EcyhzLDExMTU1MSwhMCksaD11P0p0KHUpOlBlO2lmKG5uKGgpKXtzLmtpbmQ9PT03OSYmcy5lc2NhcGVkVGV4dD09PVwiUHJvbWlzZVwiJiZiZCh0KT09PWF5KCExKT9YcihpLGUuRGlhZ25vc3RpY3MuQW5fYXN5bmNfZnVuY3Rpb25fb3JfbWV0aG9kX2luX0VTNV9TbGFzaEVTM19yZXF1aXJlc190aGVfUHJvbWlzZV9jb25zdHJ1Y3Rvcl9NYWtlX3N1cmVfeW91X2hhdmVfYV9kZWNsYXJhdGlvbl9mb3JfdGhlX1Byb21pc2VfY29uc3RydWN0b3Jfb3JfaW5jbHVkZV9FUzIwMTVfaW5feW91cl9saWJfb3B0aW9uKTpYcihpLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hX3ZhbGlkX2FzeW5jX2Z1bmN0aW9uX3JldHVybl90eXBlX2luX0VTNV9TbGFzaEVTM19iZWNhdXNlX2l0X2RvZXNfbm90X3JlZmVyX3RvX2FfUHJvbWlzZV9jb21wYXRpYmxlX2NvbnN0cnVjdG9yX3ZhbHVlLGUuZW50aXR5TmFtZVRvU3RyaW5nKHMpKTtyZXR1cm59dmFyIHo9RTMoITApO2lmKHo9PT1CYSl7WHIoaSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYV92YWxpZF9hc3luY19mdW5jdGlvbl9yZXR1cm5fdHlwZV9pbl9FUzVfU2xhc2hFUzNfYmVjYXVzZV9pdF9kb2VzX25vdF9yZWZlcl90b19hX1Byb21pc2VfY29tcGF0aWJsZV9jb25zdHJ1Y3Rvcl92YWx1ZSxlLmVudGl0eU5hbWVUb1N0cmluZyhzKSk7cmV0dXJufWlmKCF6YyhoLHosaSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYV92YWxpZF9hc3luY19mdW5jdGlvbl9yZXR1cm5fdHlwZV9pbl9FUzVfU2xhc2hFUzNfYmVjYXVzZV9pdF9kb2VzX25vdF9yZWZlcl90b19hX1Byb21pc2VfY29tcGF0aWJsZV9jb25zdHJ1Y3Rvcl92YWx1ZSkpcmV0dXJuO3ZhciBtZT1zJiZlLmdldEZpcnN0SWRlbnRpZmllcihzKSxNZT1xcyhyLmxvY2FscyxtZS5lc2NhcGVkVGV4dCwxMTE1NTEpO2lmKE1lKXtYcihNZS52YWx1ZURlY2xhcmF0aW9uLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMF9Db21waWxlcl91c2VzX2RlY2xhcmF0aW9uXzFfdG9fc3VwcG9ydF9hc3luY19mdW5jdGlvbnMsZS5pZFRleHQobWUpLGUuZW50aXR5TmFtZVRvU3RyaW5nKHMpKTtyZXR1cm59fXh2KHQsITEscixlLkRpYWdub3N0aWNzLlRoZV9yZXR1cm5fdHlwZV9vZl9hbl9hc3luY19mdW5jdGlvbl9tdXN0X2VpdGhlcl9iZV9hX3ZhbGlkX3Byb21pc2Vfb3JfbXVzdF9ub3RfY29udGFpbl9hX2NhbGxhYmxlX3RoZW5fbWVtYmVyKX1mdW5jdGlvbiB1RihyKXt2YXIgaT1NZyhyKTt4MChpLHIpO3ZhciB0PXlvKGkpO2lmKCEodC5mbGFncyYxKSl7dmFyIG8scztzd2l0Y2goci5wYXJlbnQua2luZCl7Y2FzZSAyNTc6bz1lLkRpYWdub3N0aWNzLkRlY29yYXRvcl9mdW5jdGlvbl9yZXR1cm5fdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMTt2YXIgdT1FdChyLnBhcmVudCksaD1KdCh1KTtzPVBhKFtoLEZpXSk7YnJlYWs7Y2FzZSAxNjc6Y2FzZSAxNjQ6bz1lLkRpYWdub3N0aWNzLkRlY29yYXRvcl9mdW5jdGlvbl9yZXR1cm5fdHlwZV9pc18wX2J1dF9pc19leHBlY3RlZF90b19iZV92b2lkX29yX2FueSxzPUZpO2JyZWFrO2Nhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOm89ZS5EaWFnbm9zdGljcy5EZWNvcmF0b3JfZnVuY3Rpb25fcmV0dXJuX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzE7dmFyIHo9QmQoci5wYXJlbnQpLG1lPVB4KHopO3M9UGEoW21lLEZpXSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKCl9emModCxzLHIsbyl9fWZ1bmN0aW9uIGxGKHIpe2M2KHImJmUuZ2V0RW50aXR5TmFtZUZyb21UeXBlTm9kZShyKSwhMSl9ZnVuY3Rpb24gYzYocixpKXtpZighIXIpe3ZhciB0PWUuZ2V0Rmlyc3RJZGVudGlmaWVyKHIpLG89KHIua2luZD09PTc5Pzc4ODk2ODoxOTIwKXwyMDk3MTUyLHM9ZXModCx0LmVzY2FwZWRUZXh0LG8sdm9pZCAwLHZvaWQgMCwhMCk7aWYocyYmcy5mbGFncyYyMDk3MTUyKXtpZihnYyhzKSYmIUF2KFBzKHMpKSYmIXZ1KHMpKUFzKHMpO2Vsc2UgaWYoaSYmeWUuaXNvbGF0ZWRNb2R1bGVzJiZlLmdldEVtaXRNb2R1bGVLaW5kKHllKT49ZS5Nb2R1bGVLaW5kLkVTMjAxNSYmIWdjKHMpJiYhZS5zb21lKHMuZGVjbGFyYXRpb25zLGUuaXNUeXBlT25seUltcG9ydE9yRXhwb3J0RGVjbGFyYXRpb24pKXt2YXIgdT1YcihyLGUuRGlhZ25vc3RpY3MuQV90eXBlX3JlZmVyZW5jZWRfaW5fYV9kZWNvcmF0ZWRfc2lnbmF0dXJlX211c3RfYmVfaW1wb3J0ZWRfd2l0aF9pbXBvcnRfdHlwZV9vcl9hX25hbWVzcGFjZV9pbXBvcnRfd2hlbl9pc29sYXRlZE1vZHVsZXNfYW5kX2VtaXREZWNvcmF0b3JNZXRhZGF0YV9hcmVfZW5hYmxlZCksaD1lLmZpbmQocy5kZWNsYXJhdGlvbnN8fGUuZW1wdHlBcnJheSx5Zik7aCYmZS5hZGRSZWxhdGVkSW5mbyh1LGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoaCxlLkRpYWdub3N0aWNzLl8wX3dhc19pbXBvcnRlZF9oZXJlLGUuaWRUZXh0KHQpKSl9fX19ZnVuY3Rpb24gYm0ocil7dmFyIGk9aFMocik7aSYmZS5pc0VudGl0eU5hbWUoaSkmJmM2KGksITApfWZ1bmN0aW9uIGhTKHIpe2lmKHIpc3dpdGNoKHIua2luZCl7Y2FzZSAxODg6Y2FzZSAxODc6cmV0dXJuIHU2KHIudHlwZXMpO2Nhc2UgMTg5OnJldHVybiB1Nihbci50cnVlVHlwZSxyLmZhbHNlVHlwZV0pO2Nhc2UgMTkxOmNhc2UgMTk3OnJldHVybiBoUyhyLnR5cGUpO2Nhc2UgMTc4OnJldHVybiByLnR5cGVOYW1lfX1mdW5jdGlvbiB1NihyKXtmb3IodmFyIGksdD0wLG89cjt0PG8ubGVuZ3RoO3QrKyl7Zm9yKHZhciBzPW9bdF07cy5raW5kPT09MTkxfHxzLmtpbmQ9PT0xOTc7KXM9cy50eXBlO2lmKHMua2luZCE9PTE0MyYmISghWWUmJihzLmtpbmQ9PT0xOTYmJnMubGl0ZXJhbC5raW5kPT09MTA0fHxzLmtpbmQ9PT0xNTMpKSl7dmFyIHU9aFMocyk7aWYoIXUpcmV0dXJuO2lmKGkpe2lmKCFlLmlzSWRlbnRpZmllcihpKXx8IWUuaXNJZGVudGlmaWVyKHUpfHxpLmVzY2FwZWRUZXh0IT09dS5lc2NhcGVkVGV4dClyZXR1cm59ZWxzZSBpPXV9fXJldHVybiBpfWZ1bmN0aW9uIEYwKHIpe3ZhciBpPWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKHIpO3JldHVybiBlLmlzUmVzdFBhcmFtZXRlcihyKT9lLmdldFJlc3RQYXJhbWV0ZXJFbGVtZW50VHlwZShpKTppfWZ1bmN0aW9uIEZ5KHIpe2lmKCEhci5kZWNvcmF0b3JzJiYhIWUubm9kZUNhbkJlRGVjb3JhdGVkKHIsci5wYXJlbnQsci5wYXJlbnQucGFyZW50KSl7eWUuZXhwZXJpbWVudGFsRGVjb3JhdG9yc3x8WHIocixlLkRpYWdub3N0aWNzLkV4cGVyaW1lbnRhbF9zdXBwb3J0X2Zvcl9kZWNvcmF0b3JzX2lzX2FfZmVhdHVyZV90aGF0X2lzX3N1YmplY3RfdG9fY2hhbmdlX2luX2FfZnV0dXJlX3JlbGVhc2VfU2V0X3RoZV9leHBlcmltZW50YWxEZWNvcmF0b3JzX29wdGlvbl9pbl95b3VyX3RzY29uZmlnX29yX2pzY29uZmlnX3RvX3JlbW92ZV90aGlzX3dhcm5pbmcpO3ZhciBpPXIuZGVjb3JhdG9yc1swXTtpZihmYyhpLDgpLHIua2luZD09PTE2NCYmZmMoaSwzMikseWUuZW1pdERlY29yYXRvck1ldGFkYXRhKXN3aXRjaChmYyhpLDE2KSxyLmtpbmQpe2Nhc2UgMjU3OnZhciB0PWUuZ2V0Rmlyc3RDb25zdHJ1Y3RvcldpdGhCb2R5KHIpO2lmKHQpZm9yKHZhciBvPTAscz10LnBhcmFtZXRlcnM7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107Ym0oRjAodSkpfWJyZWFrO2Nhc2UgMTcyOmNhc2UgMTczOnZhciBoPXIua2luZD09PTE3Mj8xNzM6MTcyLHo9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChFdChyKSxoKTtibShXKHIpfHx6JiZXKHopKTticmVhaztjYXNlIDE2OTpmb3IodmFyIG1lPTAsTWU9ci5wYXJhbWV0ZXJzO21lPE1lLmxlbmd0aDttZSsrKXt2YXIgdT1NZVttZV07Ym0oRjAodSkpfWJtKGUuZ2V0RWZmZWN0aXZlUmV0dXJuVHlwZU5vZGUocikpO2JyZWFrO2Nhc2UgMTY3OmJtKGUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKHIpKTticmVhaztjYXNlIDE2NDpibShGMChyKSk7Zm9yKHZhciAkZT1yLnBhcmVudCx0cj0wLGRyPSRlLnBhcmFtZXRlcnM7dHI8ZHIubGVuZ3RoO3RyKyspe3ZhciB1PWRyW3RyXTtibShGMCh1KSl9YnJlYWt9ZS5mb3JFYWNoKHIuZGVjb3JhdG9ycyx1Ril9fWZ1bmN0aW9uIGZGKHIpe2ZlKGkpO2Z1bmN0aW9uIGkoKXtmNihyKSxXUyhyKSxTbShyLHIubmFtZSl9fWZ1bmN0aW9uIF9GKHIpe3IudHlwZUV4cHJlc3Npb258fFhyKHIubmFtZSxlLkRpYWdub3N0aWNzLkpTRG9jX3R5cGVkZWZfdGFnX3Nob3VsZF9laXRoZXJfaGF2ZV9hX3R5cGVfYW5ub3RhdGlvbl9vcl9iZV9mb2xsb3dlZF9ieV9wcm9wZXJ0eV9vcl9tZW1iZXJfdGFncyksci5uYW1lJiZUbShyLm5hbWUsZS5EaWFnbm9zdGljcy5UeXBlX2FsaWFzX25hbWVfY2Fubm90X2JlXzApLGlvKHIudHlwZUV4cHJlc3Npb24pLGp5KGUuZ2V0RWZmZWN0aXZlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9ucyhyKSl9ZnVuY3Rpb24gcEYocil7aW8oci5jb25zdHJhaW50KTtmb3IodmFyIGk9MCx0PXIudHlwZVBhcmFtZXRlcnM7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV07aW8obyl9fWZ1bmN0aW9uIGRGKHIpe2lvKHIudHlwZUV4cHJlc3Npb24pfWZ1bmN0aW9uIGdGKHIpe2lvKHIudHlwZUV4cHJlc3Npb24pfWZ1bmN0aW9uIG1GKHIpe2lvKHIudHlwZUV4cHJlc3Npb24pfWZ1bmN0aW9uIHZGKHIpe2ZlKGkpLER2KHIpO2Z1bmN0aW9uIGkoKXshci50eXBlJiYhZS5pc0pTRG9jQ29uc3RydWN0U2lnbmF0dXJlKHIpJiZYcChyLE9lKX19ZnVuY3Rpb24geUYocil7dmFyIGk9ZS5nZXRFZmZlY3RpdmVKU0RvY0hvc3Qocik7KCFpfHwhZS5pc0NsYXNzRGVjbGFyYXRpb24oaSkmJiFlLmlzQ2xhc3NFeHByZXNzaW9uKGkpKSYmWHIoaSxlLkRpYWdub3N0aWNzLkpTRG9jXzBfaXNfbm90X2F0dGFjaGVkX3RvX2FfY2xhc3MsZS5pZFRleHQoci50YWdOYW1lKSl9ZnVuY3Rpb24gaEYocil7dmFyIGk9ZS5nZXRFZmZlY3RpdmVKU0RvY0hvc3Qocik7aWYoIWl8fCFlLmlzQ2xhc3NEZWNsYXJhdGlvbihpKSYmIWUuaXNDbGFzc0V4cHJlc3Npb24oaSkpe1hyKGksZS5EaWFnbm9zdGljcy5KU0RvY18wX2lzX25vdF9hdHRhY2hlZF90b19hX2NsYXNzLGUuaWRUZXh0KHIudGFnTmFtZSkpO3JldHVybn12YXIgdD1lLmdldEpTRG9jVGFncyhpKS5maWx0ZXIoZS5pc0pTRG9jQXVnbWVudHNUYWcpO2UuRGVidWcuYXNzZXJ0KHQubGVuZ3RoPjApLHQubGVuZ3RoPjEmJlhyKHRbMV0sZS5EaWFnbm9zdGljcy5DbGFzc19kZWNsYXJhdGlvbnNfY2Fubm90X2hhdmVfbW9yZV90aGFuX29uZV9hdWdtZW50c19vcl9leHRlbmRzX3RhZyk7dmFyIG89bDYoci5jbGFzcy5leHByZXNzaW9uKSxzPWUuZ2V0Q2xhc3NFeHRlbmRzSGVyaXRhZ2VFbGVtZW50KGkpO2lmKHMpe3ZhciB1PWw2KHMuZXhwcmVzc2lvbik7dSYmby5lc2NhcGVkVGV4dCE9PXUuZXNjYXBlZFRleHQmJlhyKG8sZS5EaWFnbm9zdGljcy5KU0RvY18wXzFfZG9lc19ub3RfbWF0Y2hfdGhlX2V4dGVuZHNfMl9jbGF1c2UsZS5pZFRleHQoci50YWdOYW1lKSxlLmlkVGV4dChvKSxlLmlkVGV4dCh1KSl9fWZ1bmN0aW9uIERGKHIpe3ZhciBpPWUuZ2V0SlNEb2NIb3N0KHIpO2kmJmUuaXNQcml2YXRlSWRlbnRpZmllckNsYXNzRWxlbWVudERlY2xhcmF0aW9uKGkpJiZYcihyLGUuRGlhZ25vc3RpY3MuQW5fYWNjZXNzaWJpbGl0eV9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF93aXRoX2FfcHJpdmF0ZV9pZGVudGlmaWVyKX1mdW5jdGlvbiBsNihyKXtzd2l0Y2goci5raW5kKXtjYXNlIDc5OnJldHVybiByO2Nhc2UgMjA2OnJldHVybiByLm5hbWU7ZGVmYXVsdDpyZXR1cm59fWZ1bmN0aW9uIGY2KHIpe3ZhciBpO0Z5KHIpLER2KHIpO3ZhciB0PWUuZ2V0RnVuY3Rpb25GbGFncyhyKTtpZihyLm5hbWUmJnIubmFtZS5raW5kPT09MTYyJiZ0XyhyLm5hbWUpLFRkKHIpKXt2YXIgbz1FdChyKSxzPXIubG9jYWxTeW1ib2x8fG8sdT0oaT1zLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmZpbmQoZnVuY3Rpb24oTWUpe3JldHVybiBNZS5raW5kPT09ci5raW5kJiYhKE1lLmZsYWdzJjI2MjE0NCl9KTtyPT09dSYmTzAocyksby5wYXJlbnQmJk8wKG8pfXZhciBoPXIua2luZD09PTE2OD92b2lkIDA6ci5ib2R5O2lmKGlvKGgpLHNTKHIseWcocikpLGZlKG1lKSxlLmlzSW5KU0ZpbGUocikpe3ZhciB6PWUuZ2V0SlNEb2NUeXBlVGFnKHIpO3omJnoudHlwZUV4cHJlc3Npb24mJiFOYihWYSh6LnR5cGVFeHByZXNzaW9uKSxyKSYmWHIoei50eXBlRXhwcmVzc2lvbi50eXBlLGUuRGlhZ25vc3RpY3MuVGhlX3R5cGVfb2ZfYV9mdW5jdGlvbl9kZWNsYXJhdGlvbl9tdXN0X21hdGNoX3RoZV9mdW5jdGlvbl9zX3NpZ25hdHVyZSl9ZnVuY3Rpb24gbWUoKXtlLmdldEVmZmVjdGl2ZVJldHVyblR5cGVOb2RlKHIpfHwoZS5ub2RlSXNNaXNzaW5nKGgpJiYhSTAocikmJlhwKHIsT2UpLHQmMSYmZS5ub2RlSXNQcmVzZW50KGgpJiZ5byh5bChyKSkpfX1mdW5jdGlvbiBBXyhyKXtmZShpKTtmdW5jdGlvbiBpKCl7dmFyIHQ9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLG89Rm8uZ2V0KHQucGF0aCk7b3x8KG89W10sRm8uc2V0KHQucGF0aCxvKSksby5wdXNoKHIpfX1mdW5jdGlvbiBfNihyLGkpe2Zvcih2YXIgdD0wLG89cjt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtzd2l0Y2gocy5raW5kKXtjYXNlIDI1NzpjYXNlIDIyNjpiRihzLGkpLERTKHMsaSk7YnJlYWs7Y2FzZSAzMDU6Y2FzZSAyNjE6Y2FzZSAyMzU6Y2FzZSAyNjM6Y2FzZSAyNDI6Y2FzZSAyNDM6Y2FzZSAyNDQ6ZzYocyxpKTticmVhaztjYXNlIDE3MTpjYXNlIDIxMzpjYXNlIDI1NjpjYXNlIDIxNDpjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpzLmJvZHkmJmc2KHMsaSksRFMocyxpKTticmVhaztjYXNlIDE2ODpjYXNlIDE3NDpjYXNlIDE3NTpjYXNlIDE3OTpjYXNlIDE4MDpjYXNlIDI1OTpjYXNlIDI1ODpEUyhzLGkpO2JyZWFrO2Nhc2UgMTkwOlNGKHMsaSk7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKHMsXCJOb2RlIHNob3VsZCBub3QgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgZm9yIHVudXNlZCBpZGVudGlmaWVycyBjaGVja1wiKX19fWZ1bmN0aW9uIHA2KHIsaSx0KXt2YXIgbz1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKHIpfHxyLHM9enkocik/ZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9idXRfbmV2ZXJfdXNlZDplLkRpYWdub3N0aWNzLl8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZDt0KHIsMCxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG8scyxpKSl9ZnVuY3Rpb24gTXkocil7cmV0dXJuIGUuaXNJZGVudGlmaWVyKHIpJiZlLmlkVGV4dChyKS5jaGFyQ29kZUF0KDApPT09OTV9ZnVuY3Rpb24gYkYocixpKXtmb3IodmFyIHQ9MCxvPXIubWVtYmVyczt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtzd2l0Y2gocy5raW5kKXtjYXNlIDE2OTpjYXNlIDE2NzpjYXNlIDE3MjpjYXNlIDE3MzppZihzLmtpbmQ9PT0xNzMmJnMuc3ltYm9sLmZsYWdzJjMyNzY4KWJyZWFrO3ZhciB1PUV0KHMpOyF1LmlzUmVmZXJlbmNlZCYmKGUuaGFzRWZmZWN0aXZlTW9kaWZpZXIocyw4KXx8ZS5pc05hbWVkRGVjbGFyYXRpb24ocykmJmUuaXNQcml2YXRlSWRlbnRpZmllcihzLm5hbWUpKSYmIShzLmZsYWdzJjE2Nzc3MjE2KSYmaShzLDAsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShzLm5hbWUsZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWQsdG4odSkpKTticmVhaztjYXNlIDE3MTpmb3IodmFyIGg9MCx6PXMucGFyYW1ldGVycztoPHoubGVuZ3RoO2grKyl7dmFyIG1lPXpbaF07IW1lLnN5bWJvbC5pc1JlZmVyZW5jZWQmJmUuaGFzU3ludGFjdGljTW9kaWZpZXIobWUsOCkmJmkobWUsMCxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG1lLm5hbWUsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZCxlLnN5bWJvbE5hbWUobWUuc3ltYm9sKSkpfWJyZWFrO2Nhc2UgMTc2OmNhc2UgMjM0OmNhc2UgMTcwOmJyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsKFwiVW5leHBlY3RlZCBjbGFzcyBtZW1iZXJcIil9fX1mdW5jdGlvbiBTRihyLGkpe3ZhciB0PXIudHlwZVBhcmFtZXRlcjtiUyh0KSYmaShyLDEsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLGUuRGlhZ25vc3RpY3MuXzBfaXNfZGVjbGFyZWRfYnV0X2l0c192YWx1ZV9pc19uZXZlcl9yZWFkLGUuaWRUZXh0KHQubmFtZSkpKX1mdW5jdGlvbiBEUyhyLGkpe3ZhciB0PUV0KHIpLmRlY2xhcmF0aW9ucztpZighKCF0fHxlLmxhc3QodCkhPT1yKSlmb3IodmFyIG89ZS5nZXRFZmZlY3RpdmVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25zKHIpLHM9bmV3IGUuU2V0LHU9MCxoPW87dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07aWYoISFiUyh6KSl7dmFyIG1lPWUuaWRUZXh0KHoubmFtZSksTWU9ei5wYXJlbnQ7aWYoTWUua2luZCE9PTE5MCYmTWUudHlwZVBhcmFtZXRlcnMuZXZlcnkoYlMpKXtpZihlLnRyeUFkZFRvU2V0KHMsTWUpKXt2YXIgJGU9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKE1lKSx0cj1lLmlzSlNEb2NUZW1wbGF0ZVRhZyhNZSk/ZS5yYW5nZU9mTm9kZShNZSk6ZS5yYW5nZU9mVHlwZVBhcmFtZXRlcnMoJGUsTWUudHlwZVBhcmFtZXRlcnMpLGRyPU1lLnR5cGVQYXJhbWV0ZXJzLmxlbmd0aD09PTEsRHI9ZHI/ZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWQ6ZS5EaWFnbm9zdGljcy5BbGxfdHlwZV9wYXJhbWV0ZXJzX2FyZV91bnVzZWQsUXI9ZHI/bWU6dm9pZCAwO2koeiwxLGUuY3JlYXRlRmlsZURpYWdub3N0aWMoJGUsdHIucG9zLHRyLmVuZC10ci5wb3MsRHIsUXIpKX19ZWxzZSBpKHosMSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHosZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWQsbWUpKX19fWZ1bmN0aW9uIGJTKHIpe3JldHVybiEoc28oci5zeW1ib2wpLmlzUmVmZXJlbmNlZCYyNjIxNDQpJiYhTXkoci5uYW1lKX1mdW5jdGlvbiBMeShyLGksdCxvKXt2YXIgcz1TdHJpbmcobyhpKSksdT1yLmdldChzKTt1P3VbMV0ucHVzaCh0KTpyLnNldChzLFtpLFt0XV0pfWZ1bmN0aW9uIGQ2KHIpe3JldHVybiBlLnRyeUNhc3QoZS5nZXRSb290RGVjbGFyYXRpb24ociksZS5pc1BhcmFtZXRlcil9ZnVuY3Rpb24gVEYocil7cmV0dXJuIGUuaXNCaW5kaW5nRWxlbWVudChyKT9lLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4oci5wYXJlbnQpPyEhKHIucHJvcGVydHlOYW1lJiZNeShyLm5hbWUpKTpNeShyLm5hbWUpOmUuaXNBbWJpZW50TW9kdWxlKHIpfHwoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocikmJmUuaXNGb3JJbk9yT2ZTdGF0ZW1lbnQoci5wYXJlbnQucGFyZW50KXx8bTYocikpJiZNeShyLm5hbWUpfWZ1bmN0aW9uIGc2KHIsaSl7dmFyIHQ9bmV3IGUuTWFwLG89bmV3IGUuTWFwLHM9bmV3IGUuTWFwO3IubG9jYWxzLmZvckVhY2goZnVuY3Rpb24odSl7aWYoISh1LmZsYWdzJjI2MjE0ND8hKHUuZmxhZ3MmMyYmISh1LmlzUmVmZXJlbmNlZCYzKSk6dS5pc1JlZmVyZW5jZWR8fHUuZXhwb3J0U3ltYm9sKSYmdS5kZWNsYXJhdGlvbnMpZm9yKHZhciBoPTAsej11LmRlY2xhcmF0aW9ucztoPHoubGVuZ3RoO2grKyl7dmFyIG1lPXpbaF07aWYoIVRGKG1lKSlpZihtNihtZSkpTHkodCx4RihtZSksbWUsQSk7ZWxzZSBpZihlLmlzQmluZGluZ0VsZW1lbnQobWUpJiZlLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4obWUucGFyZW50KSl7dmFyIE1lPWUubGFzdChtZS5wYXJlbnQuZWxlbWVudHMpOyhtZT09PU1lfHwhZS5sYXN0KG1lLnBhcmVudC5lbGVtZW50cykuZG90RG90RG90VG9rZW4pJiZMeShvLG1lLnBhcmVudCxtZSxBKX1lbHNlIGlmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG1lKSlMeShzLG1lLnBhcmVudCxtZSxBKTtlbHNle3ZhciAkZT11LnZhbHVlRGVjbGFyYXRpb24mJmQ2KHUudmFsdWVEZWNsYXJhdGlvbiksdHI9dS52YWx1ZURlY2xhcmF0aW9uJiZlLmdldE5hbWVPZkRlY2xhcmF0aW9uKHUudmFsdWVEZWNsYXJhdGlvbik7JGUmJnRyPyFlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbigkZSwkZS5wYXJlbnQpJiYhZS5wYXJhbWV0ZXJJc1RoaXNLZXl3b3JkKCRlKSYmIU15KHRyKSYmKGUuaXNCaW5kaW5nRWxlbWVudChtZSkmJmUuaXNBcnJheUJpbmRpbmdQYXR0ZXJuKG1lLnBhcmVudCk/THkobyxtZS5wYXJlbnQsbWUsQSk6aSgkZSwxLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUodHIsZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWQsZS5zeW1ib2xOYW1lKHUpKSkpOnA2KG1lLGUuc3ltYm9sTmFtZSh1KSxpKX19fSksdC5mb3JFYWNoKGZ1bmN0aW9uKHUpe3ZhciBoPXVbMF0sej11WzFdLG1lPWgucGFyZW50LE1lPShoLm5hbWU/MTowKSsoaC5uYW1lZEJpbmRpbmdzP2gubmFtZWRCaW5kaW5ncy5raW5kPT09MjY4PzE6aC5uYW1lZEJpbmRpbmdzLmVsZW1lbnRzLmxlbmd0aDowKTtpZihNZT09PXoubGVuZ3RoKWkobWUsMCx6Lmxlbmd0aD09PTE/ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShtZSxlLkRpYWdub3N0aWNzLl8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZCxlLmlkVGV4dChlLmZpcnN0KHopLm5hbWUpKTplLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG1lLGUuRGlhZ25vc3RpY3MuQWxsX2ltcG9ydHNfaW5faW1wb3J0X2RlY2xhcmF0aW9uX2FyZV91bnVzZWQpKTtlbHNlIGZvcih2YXIgJGU9MCx0cj16OyRlPHRyLmxlbmd0aDskZSsrKXt2YXIgZHI9dHJbJGVdO3A2KGRyLGUuaWRUZXh0KGRyLm5hbWUpLGkpfX0pLG8uZm9yRWFjaChmdW5jdGlvbih1KXt2YXIgaD11WzBdLHo9dVsxXSxtZT1kNihoLnBhcmVudCk/MTowO2lmKGguZWxlbWVudHMubGVuZ3RoPT09ei5sZW5ndGgpei5sZW5ndGg9PT0xJiZoLnBhcmVudC5raW5kPT09MjU0JiZoLnBhcmVudC5wYXJlbnQua2luZD09PTI1NT9MeShzLGgucGFyZW50LnBhcmVudCxoLnBhcmVudCxBKTppKGgsbWUsei5sZW5ndGg9PT0xP2UuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoaCxlLkRpYWdub3N0aWNzLl8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZCxSeShlLmZpcnN0KHopLm5hbWUpKTplLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKGgsZS5EaWFnbm9zdGljcy5BbGxfZGVzdHJ1Y3R1cmVkX2VsZW1lbnRzX2FyZV91bnVzZWQpKTtlbHNlIGZvcih2YXIgTWU9MCwkZT16O01lPCRlLmxlbmd0aDtNZSsrKXt2YXIgdHI9JGVbTWVdO2kodHIsbWUsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSh0cixlLkRpYWdub3N0aWNzLl8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZCxSeSh0ci5uYW1lKSkpfX0pLHMuZm9yRWFjaChmdW5jdGlvbih1KXt2YXIgaD11WzBdLHo9dVsxXTtpZihoLmRlY2xhcmF0aW9ucy5sZW5ndGg9PT16Lmxlbmd0aClpKGgsMCx6Lmxlbmd0aD09PTE/ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShlLmZpcnN0KHopLm5hbWUsZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWQsUnkoZS5maXJzdCh6KS5uYW1lKSk6ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShoLnBhcmVudC5raW5kPT09MjM3P2gucGFyZW50OmgsZS5EaWFnbm9zdGljcy5BbGxfdmFyaWFibGVzX2FyZV91bnVzZWQpKTtlbHNlIGZvcih2YXIgbWU9MCxNZT16O21lPE1lLmxlbmd0aDttZSsrKXt2YXIgJGU9TWVbbWVdO2koJGUsMCxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKCRlLGUuRGlhZ25vc3RpY3MuXzBfaXNfZGVjbGFyZWRfYnV0X2l0c192YWx1ZV9pc19uZXZlcl9yZWFkLFJ5KCRlLm5hbWUpKSl9fSl9ZnVuY3Rpb24gUnkocil7c3dpdGNoKHIua2luZCl7Y2FzZSA3OTpyZXR1cm4gZS5pZFRleHQocik7Y2FzZSAyMDI6Y2FzZSAyMDE6cmV0dXJuIFJ5KGUuY2FzdChlLmZpcnN0KHIuZWxlbWVudHMpLGUuaXNCaW5kaW5nRWxlbWVudCkubmFtZSk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihyKX19ZnVuY3Rpb24gbTYocil7cmV0dXJuIHIua2luZD09PTI2N3x8ci5raW5kPT09MjcwfHxyLmtpbmQ9PT0yNjh9ZnVuY3Rpb24geEYocil7cmV0dXJuIHIua2luZD09PTI2Nz9yOnIua2luZD09PTI2OD9yLnBhcmVudDpyLnBhcmVudC5wYXJlbnR9ZnVuY3Rpb24gTTAocil7aWYoci5raW5kPT09MjM1JiZNZihyKSxlLmlzRnVuY3Rpb25Pck1vZHVsZUJsb2NrKHIpKXt2YXIgaT1CcztlLmZvckVhY2goci5zdGF0ZW1lbnRzLGlvKSxCcz1pfWVsc2UgZS5mb3JFYWNoKHIuc3RhdGVtZW50cyxpbyk7ci5sb2NhbHMmJkFfKHIpfWZ1bmN0aW9uIEVGKHIpe0FlPj0yfHwhZS5oYXNSZXN0UGFyYW1ldGVyKHIpfHxyLmZsYWdzJjE2Nzc3MjE2fHxlLm5vZGVJc01pc3Npbmcoci5ib2R5KXx8ZS5mb3JFYWNoKHIucGFyYW1ldGVycyxmdW5jdGlvbihpKXtpLm5hbWUmJiFlLmlzQmluZGluZ1BhdHRlcm4oaS5uYW1lKSYmaS5uYW1lLmVzY2FwZWRUZXh0PT09b3IuZXNjYXBlZE5hbWUmJkVzKFwibm9FbWl0XCIsaSxlLkRpYWdub3N0aWNzLkR1cGxpY2F0ZV9pZGVudGlmaWVyX2FyZ3VtZW50c19Db21waWxlcl91c2VzX2FyZ3VtZW50c190b19pbml0aWFsaXplX3Jlc3RfcGFyYW1ldGVycyl9KX1mdW5jdGlvbiBDdihyLGksdCl7aWYoKGk9PW51bGw/dm9pZCAwOmkuZXNjYXBlZFRleHQpIT09dHx8ci5raW5kPT09MTY3fHxyLmtpbmQ9PT0xNjZ8fHIua2luZD09PTE2OXx8ci5raW5kPT09MTY4fHxyLmtpbmQ9PT0xNzJ8fHIua2luZD09PTE3M3x8ci5raW5kPT09Mjk2fHxyLmZsYWdzJjE2Nzc3MjE2fHwoZS5pc0ltcG9ydENsYXVzZShyKXx8ZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKHIpfHxlLmlzSW1wb3J0U3BlY2lmaWVyKHIpKSYmZS5pc1R5cGVPbmx5SW1wb3J0T3JFeHBvcnREZWNsYXJhdGlvbihyKSlyZXR1cm4hMTt2YXIgbz1lLmdldFJvb3REZWNsYXJhdGlvbihyKTtyZXR1cm4hKGUuaXNQYXJhbWV0ZXIobykmJmUubm9kZUlzTWlzc2luZyhvLnBhcmVudC5ib2R5KSl9ZnVuY3Rpb24gQ0Yocil7ZS5maW5kQW5jZXN0b3IocixmdW5jdGlvbihpKXtpZihVZyhpKSY0KXt2YXIgdD1yLmtpbmQhPT03OTtyZXR1cm4gdD9YcihlLmdldE5hbWVPZkRlY2xhcmF0aW9uKHIpLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfdGhpc19Db21waWxlcl91c2VzX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX3RoaXNfdG9fY2FwdHVyZV90aGlzX3JlZmVyZW5jZSk6WHIocixlLkRpYWdub3N0aWNzLkV4cHJlc3Npb25fcmVzb2x2ZXNfdG9fdmFyaWFibGVfZGVjbGFyYXRpb25fdGhpc190aGF0X2NvbXBpbGVyX3VzZXNfdG9fY2FwdHVyZV90aGlzX3JlZmVyZW5jZSksITB9cmV0dXJuITF9KX1mdW5jdGlvbiBrRihyKXtlLmZpbmRBbmNlc3RvcihyLGZ1bmN0aW9uKGkpe2lmKFVnKGkpJjgpe3ZhciB0PXIua2luZCE9PTc5O3JldHVybiB0P1hyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24ociksZS5EaWFnbm9zdGljcy5EdXBsaWNhdGVfaWRlbnRpZmllcl9uZXdUYXJnZXRfQ29tcGlsZXJfdXNlc192YXJpYWJsZV9kZWNsYXJhdGlvbl9uZXdUYXJnZXRfdG9fY2FwdHVyZV9uZXdfdGFyZ2V0X21ldGFfcHJvcGVydHlfcmVmZXJlbmNlKTpYcihyLGUuRGlhZ25vc3RpY3MuRXhwcmVzc2lvbl9yZXNvbHZlc190b192YXJpYWJsZV9kZWNsYXJhdGlvbl9uZXdUYXJnZXRfdGhhdF9jb21waWxlcl91c2VzX3RvX2NhcHR1cmVfbmV3X3RhcmdldF9tZXRhX3Byb3BlcnR5X3JlZmVyZW5jZSksITB9cmV0dXJuITF9KX1mdW5jdGlvbiBBRihyLGkpe2lmKCEoZXI+PWUuTW9kdWxlS2luZC5FUzIwMTUmJiEoZXI+PWUuTW9kdWxlS2luZC5Ob2RlMTYmJmUuZ2V0U291cmNlRmlsZU9mTm9kZShyKS5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5Db21tb25KUykpJiYhKCFpfHwhQ3YocixpLFwicmVxdWlyZVwiKSYmIUN2KHIsaSxcImV4cG9ydHNcIikpJiYhKGUuaXNNb2R1bGVEZWNsYXJhdGlvbihyKSYmZS5nZXRNb2R1bGVJbnN0YW5jZVN0YXRlKHIpIT09MSkpe3ZhciB0PXppKHIpO3Qua2luZD09PTMwNSYmZS5pc0V4dGVybmFsT3JDb21tb25Kc01vZHVsZSh0KSYmRXMoXCJub0VtaXRcIixpLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMF9Db21waWxlcl9yZXNlcnZlc19uYW1lXzFfaW5fdG9wX2xldmVsX3Njb3BlX29mX2FfbW9kdWxlLGUuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcoaSksZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhpKSl9fWZ1bmN0aW9uIE5GKHIsaSl7aWYoISghaXx8QWU+PTR8fCFDdihyLGksXCJQcm9taXNlXCIpKSYmIShlLmlzTW9kdWxlRGVjbGFyYXRpb24ocikmJmUuZ2V0TW9kdWxlSW5zdGFuY2VTdGF0ZShyKSE9PTEpKXt2YXIgdD16aShyKTt0LmtpbmQ9PT0zMDUmJmUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUodCkmJnQuZmxhZ3MmMjA0OCYmRXMoXCJub0VtaXRcIixpLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMF9Db21waWxlcl9yZXNlcnZlc19uYW1lXzFfaW5fdG9wX2xldmVsX3Njb3BlX29mX2FfbW9kdWxlX2NvbnRhaW5pbmdfYXN5bmNfZnVuY3Rpb25zLGUuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcoaSksZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhpKSl9fWZ1bmN0aW9uIFBGKHIsaSl7QWU8PTgmJihDdihyLGksXCJXZWFrTWFwXCIpfHxDdihyLGksXCJXZWFrU2V0XCIpKSYmYm4ucHVzaChyKX1mdW5jdGlvbiBJRihyKXt2YXIgaT1lLmdldEVuY2xvc2luZ0Jsb2NrU2NvcGVDb250YWluZXIocik7VWcoaSkmNjcxMDg4NjQmJihlLkRlYnVnLmFzc2VydChlLmlzTmFtZWREZWNsYXJhdGlvbihyKSYmZS5pc0lkZW50aWZpZXIoci5uYW1lKSYmdHlwZW9mIHIubmFtZS5lc2NhcGVkVGV4dD09XCJzdHJpbmdcIixcIlRoZSB0YXJnZXQgb2YgYSBXZWFrTWFwL1dlYWtTZXQgY29sbGlzaW9uIGNoZWNrIHNob3VsZCBiZSBhbiBpZGVudGlmaWVyXCIpLEVzKFwibm9FbWl0XCIscixlLkRpYWdub3N0aWNzLkNvbXBpbGVyX3Jlc2VydmVzX25hbWVfMF93aGVuX2VtaXR0aW5nX3ByaXZhdGVfaWRlbnRpZmllcl9kb3dubGV2ZWwsci5uYW1lLmVzY2FwZWRUZXh0KSl9ZnVuY3Rpb24gd0YocixpKXtpJiZBZT49MiYmQWU8PTgmJkN2KHIsaSxcIlJlZmxlY3RcIikmJl9hLnB1c2gocil9ZnVuY3Rpb24gT0Yocil7dmFyIGk9ITE7aWYoZS5pc0NsYXNzRXhwcmVzc2lvbihyKSlmb3IodmFyIHQ9MCxvPXIubWVtYmVyczt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpZihVZyhzKSYxMzQyMTc3Mjgpe2k9ITA7YnJlYWt9fWVsc2UgaWYoZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihyKSlVZyhyKSYxMzQyMTc3MjgmJihpPSEwKTtlbHNle3ZhciB1PWUuZ2V0RW5jbG9zaW5nQmxvY2tTY29wZUNvbnRhaW5lcihyKTt1JiZVZyh1KSYxMzQyMTc3MjgmJihpPSEwKX1pJiYoZS5EZWJ1Zy5hc3NlcnQoZS5pc05hbWVkRGVjbGFyYXRpb24ocikmJmUuaXNJZGVudGlmaWVyKHIubmFtZSksXCJUaGUgdGFyZ2V0IG9mIGEgUmVmbGVjdCBjb2xsaXNpb24gY2hlY2sgc2hvdWxkIGJlIGFuIGlkZW50aWZpZXJcIiksRXMoXCJub0VtaXRcIixyLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMF9Db21waWxlcl9yZXNlcnZlc19uYW1lXzFfd2hlbl9lbWl0dGluZ19zdXBlcl9yZWZlcmVuY2VzX2luX3N0YXRpY19pbml0aWFsaXplcnMsZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhyLm5hbWUpLFwiUmVmbGVjdFwiKSl9ZnVuY3Rpb24gU20ocixpKXshaXx8KEFGKHIsaSksTkYocixpKSxQRihyLGkpLHdGKHIsaSksZS5pc0NsYXNzTGlrZShyKT8oVG0oaSxlLkRpYWdub3N0aWNzLkNsYXNzX25hbWVfY2Fubm90X2JlXzApLHIuZmxhZ3MmMTY3NzcyMTZ8fG9NKGkpKTplLmlzRW51bURlY2xhcmF0aW9uKHIpJiZUbShpLGUuRGlhZ25vc3RpY3MuRW51bV9uYW1lX2Nhbm5vdF9iZV8wKSl9ZnVuY3Rpb24gRkYocil7aWYoISgoZS5nZXRDb21iaW5lZE5vZGVGbGFncyhyKSYzKSE9PTB8fGUuaXNQYXJhbWV0ZXJEZWNsYXJhdGlvbihyKSkmJiEoci5raW5kPT09MjU0JiYhci5pbml0aWFsaXplcikpe3ZhciBpPUV0KHIpO2lmKGkuZmxhZ3MmMSl7aWYoIWUuaXNJZGVudGlmaWVyKHIubmFtZSkpcmV0dXJuIGUuRGVidWcuZmFpbCgpO3ZhciB0PWVzKHIsci5uYW1lLmVzY2FwZWRUZXh0LDMsdm9pZCAwLHZvaWQgMCwhMSk7aWYodCYmdCE9PWkmJnQuZmxhZ3MmMiYmcDAodCkmMyl7dmFyIG89ZS5nZXRBbmNlc3Rvcih0LnZhbHVlRGVjbGFyYXRpb24sMjU1KSxzPW8ucGFyZW50LmtpbmQ9PT0yMzcmJm8ucGFyZW50LnBhcmVudD9vLnBhcmVudC5wYXJlbnQ6dm9pZCAwLHU9cyYmKHMua2luZD09PTIzNSYmZS5pc0Z1bmN0aW9uTGlrZShzLnBhcmVudCl8fHMua2luZD09PTI2Mnx8cy5raW5kPT09MjYxfHxzLmtpbmQ9PT0zMDUpO2lmKCF1KXt2YXIgaD10bih0KTtYcihyLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2luaXRpYWxpemVfb3V0ZXJfc2NvcGVkX3ZhcmlhYmxlXzBfaW5fdGhlX3NhbWVfc2NvcGVfYXNfYmxvY2tfc2NvcGVkX2RlY2xhcmF0aW9uXzEsaCxoKX19fX19ZnVuY3Rpb24ga3Yocil7cmV0dXJuIHI9PT1ucj9PZTpyPT09U28/bW86cn1mdW5jdGlvbiBMMChyKXt2YXIgaTtpZihGeShyKSxlLmlzQmluZGluZ0VsZW1lbnQocil8fGlvKHIudHlwZSksISFyLm5hbWUpe2lmKHIubmFtZS5raW5kPT09MTYyJiYodF8oci5uYW1lKSxyLmluaXRpYWxpemVyJiZPcyhyLmluaXRpYWxpemVyKSksZS5pc0JpbmRpbmdFbGVtZW50KHIpKXtlLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4oci5wYXJlbnQpJiZyLmRvdERvdERvdFRva2VuJiZBZTw1JiZmYyhyLDQpLHIucHJvcGVydHlOYW1lJiZyLnByb3BlcnR5TmFtZS5raW5kPT09MTYyJiZ0XyhyLnByb3BlcnR5TmFtZSk7dmFyIHQ9ci5wYXJlbnQucGFyZW50LG89ci5kb3REb3REb3RUb2tlbj82NDowLHM9V28odCxvKSx1PXIucHJvcGVydHlOYW1lfHxyLm5hbWU7aWYocyYmIWUuaXNCaW5kaW5nUGF0dGVybih1KSl7dmFyIGg9Wl8odSk7aWYoX2YoaCkpe3ZhciB6PXBmKGgpLG1lPWJpKHMseik7bWUmJih4eShtZSx2b2lkIDAsITEpLEpiKHIsISF0LmluaXRpYWxpemVyJiZ0LmluaXRpYWxpemVyLmtpbmQ9PT0xMDYsITEscyxtZSkpfX19aWYoZS5pc0JpbmRpbmdQYXR0ZXJuKHIubmFtZSkmJihyLm5hbWUua2luZD09PTIwMiYmQWU8MiYmeWUuZG93bmxldmVsSXRlcmF0aW9uJiZmYyhyLDUxMiksZS5mb3JFYWNoKHIubmFtZS5lbGVtZW50cyxpbykpLHIuaW5pdGlhbGl6ZXImJmUuaXNQYXJhbWV0ZXJEZWNsYXJhdGlvbihyKSYmZS5ub2RlSXNNaXNzaW5nKGUuZ2V0Q29udGFpbmluZ0Z1bmN0aW9uKHIpLmJvZHkpKXtYcihyLGUuRGlhZ25vc3RpY3MuQV9wYXJhbWV0ZXJfaW5pdGlhbGl6ZXJfaXNfb25seV9hbGxvd2VkX2luX2FfZnVuY3Rpb25fb3JfY29uc3RydWN0b3JfaW1wbGVtZW50YXRpb24pO3JldHVybn1pZihlLmlzQmluZGluZ1BhdHRlcm4oci5uYW1lKSl7dmFyIE1lPXIuaW5pdGlhbGl6ZXImJnIucGFyZW50LnBhcmVudC5raW5kIT09MjQzLCRlPXIubmFtZS5lbGVtZW50cy5sZW5ndGg9PT0wO2lmKE1lfHwkZSl7dmFyIHRyPXNjKHIpO2lmKE1lKXt2YXIgZHI9T3Moci5pbml0aWFsaXplcik7WWUmJiRlP3FDKGRyLHIpOm9wKGRyLHNjKHIpLHIsci5pbml0aWFsaXplcil9JGUmJihlLmlzQXJyYXlCaW5kaW5nUGF0dGVybihyLm5hbWUpP05fKDY1LHRyLFRyLHIpOlllJiZxQyh0cixyKSl9cmV0dXJufXZhciBEcj1FdChyKTtpZihEci5mbGFncyYyMDk3MTUyJiZlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkluaXRpYWxpemVkVG9CYXJlT3JBY2Nlc3NlZFJlcXVpcmUocikpe2owKHIpO3JldHVybn12YXIgUXI9a3YoSnQoRHIpKTtpZihyPT09RHIudmFsdWVEZWNsYXJhdGlvbil7dmFyIGxpPWUuZ2V0RWZmZWN0aXZlSW5pdGlhbGl6ZXIocik7aWYobGkpe3ZhciBUaT1lLmlzSW5KU0ZpbGUocikmJmUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihsaSkmJihsaS5wcm9wZXJ0aWVzLmxlbmd0aD09PTB8fGUuaXNQcm90b3R5cGVBY2Nlc3Moci5uYW1lKSkmJiEhKCEoKGk9RHIuZXhwb3J0cyk9PT1udWxsfHxpPT09dm9pZCAwKSYmaS5zaXplKTshVGkmJnIucGFyZW50LnBhcmVudC5raW5kIT09MjQzJiZvcChPcyhsaSksUXIscixsaSx2b2lkIDApfURyLmRlY2xhcmF0aW9ucyYmRHIuZGVjbGFyYXRpb25zLmxlbmd0aD4xJiZlLnNvbWUoRHIuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKCRpKXtyZXR1cm4gJGkhPT1yJiZlLmlzVmFyaWFibGVMaWtlKCRpKSYmIXk2KCRpLHIpfSkmJlhyKHIubmFtZSxlLkRpYWdub3N0aWNzLkFsbF9kZWNsYXJhdGlvbnNfb2ZfMF9tdXN0X2hhdmVfaWRlbnRpY2FsX21vZGlmaWVycyxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHIubmFtZSkpfWVsc2V7dmFyIENpPWt2KHNjKHIpKTshbm4oUXIpJiYhbm4oQ2kpJiYhd2YoUXIsQ2kpJiYhKERyLmZsYWdzJjY3MTA4ODY0KSYmdjYoRHIudmFsdWVEZWNsYXJhdGlvbixRcixyLENpKSxyLmluaXRpYWxpemVyJiZvcChPcyhyLmluaXRpYWxpemVyKSxDaSxyLHIuaW5pdGlhbGl6ZXIsdm9pZCAwKSxEci52YWx1ZURlY2xhcmF0aW9uJiYheTYocixEci52YWx1ZURlY2xhcmF0aW9uKSYmWHIoci5uYW1lLGUuRGlhZ25vc3RpY3MuQWxsX2RlY2xhcmF0aW9uc19vZl8wX211c3RfaGF2ZV9pZGVudGljYWxfbW9kaWZpZXJzLGUuZGVjbGFyYXRpb25OYW1lVG9TdHJpbmcoci5uYW1lKSl9ci5raW5kIT09MTY3JiZyLmtpbmQhPT0xNjYmJihidihyKSwoci5raW5kPT09MjU0fHxyLmtpbmQ9PT0yMDMpJiZGRihyKSxTbShyLHIubmFtZSkpfX1mdW5jdGlvbiB2NihyLGksdCxvKXt2YXIgcz1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKHQpLHU9dC5raW5kPT09MTY3fHx0LmtpbmQ9PT0xNjY/ZS5EaWFnbm9zdGljcy5TdWJzZXF1ZW50X3Byb3BlcnR5X2RlY2xhcmF0aW9uc19tdXN0X2hhdmVfdGhlX3NhbWVfdHlwZV9Qcm9wZXJ0eV8wX211c3RfYmVfb2ZfdHlwZV8xX2J1dF9oZXJlX2hhc190eXBlXzI6ZS5EaWFnbm9zdGljcy5TdWJzZXF1ZW50X3ZhcmlhYmxlX2RlY2xhcmF0aW9uc19tdXN0X2hhdmVfdGhlX3NhbWVfdHlwZV9WYXJpYWJsZV8wX211c3RfYmVfb2ZfdHlwZV8xX2J1dF9oZXJlX2hhc190eXBlXzIsaD1lLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHMpLHo9WHIocyx1LGgsT3QoaSksT3QobykpO3ImJmUuYWRkUmVsYXRlZEluZm8oeixlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIsZS5EaWFnbm9zdGljcy5fMF93YXNfYWxzb19kZWNsYXJlZF9oZXJlLGgpKX1mdW5jdGlvbiB5NihyLGkpe2lmKHIua2luZD09PTE2NCYmaS5raW5kPT09MjU0fHxyLmtpbmQ9PT0yNTQmJmkua2luZD09PTE2NClyZXR1cm4hMDtpZihlLmhhc1F1ZXN0aW9uVG9rZW4ocikhPT1lLmhhc1F1ZXN0aW9uVG9rZW4oaSkpcmV0dXJuITE7dmFyIHQ9NTA0O3JldHVybiBlLmdldFNlbGVjdGVkRWZmZWN0aXZlTW9kaWZpZXJGbGFncyhyLHQpPT09ZS5nZXRTZWxlY3RlZEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MoaSx0KX1mdW5jdGlvbiBTUyhyKXtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwiY2hlY2tcIixcImNoZWNrVmFyaWFibGVEZWNsYXJhdGlvblwiLHtraW5kOnIua2luZCxwb3M6ci5wb3MsZW5kOnIuZW5kLHBhdGg6ci50cmFjaW5nUGF0aH0pLGZMKHIpLEwwKHIpLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpfWZ1bmN0aW9uIE1GKHIpe3JldHVybiBjTChyKSxMMChyKX1mdW5jdGlvbiBMRihyKXshRmYocikmJiFWUyhyLmRlY2xhcmF0aW9uTGlzdCkmJl9MKHIpLGUuZm9yRWFjaChyLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnMsaW8pfWZ1bmN0aW9uIFJGKHIpe01mKHIpLHluKHIuZXhwcmVzc2lvbil9ZnVuY3Rpb24gQkYocil7TWYociksQmcoci5leHByZXNzaW9uKSxUUyhyLmV4cHJlc3Npb24sci50aGVuU3RhdGVtZW50KSxpbyhyLnRoZW5TdGF0ZW1lbnQpLHIudGhlblN0YXRlbWVudC5raW5kPT09MjM2JiZYcihyLnRoZW5TdGF0ZW1lbnQsZS5EaWFnbm9zdGljcy5UaGVfYm9keV9vZl9hbl9pZl9zdGF0ZW1lbnRfY2Fubm90X2JlX3RoZV9lbXB0eV9zdGF0ZW1lbnQpLGlvKHIuZWxzZVN0YXRlbWVudCl9ZnVuY3Rpb24gVFMocixpKXtpZighWWUpcmV0dXJuO2Zvcih0KHIsaSk7ZS5pc0JpbmFyeUV4cHJlc3Npb24ocikmJnIub3BlcmF0b3JUb2tlbi5raW5kPT09NTY7KXI9ci5sZWZ0LHQocixpKTtmdW5jdGlvbiB0KG8scyl7dmFyIHU9ZS5pc0JpbmFyeUV4cHJlc3Npb24obykmJihvLm9wZXJhdG9yVG9rZW4ua2luZD09PTU2fHxvLm9wZXJhdG9yVG9rZW4ua2luZD09PTU1KT9vLnJpZ2h0Om87aWYoIWUuaXNNb2R1bGVFeHBvcnRzQWNjZXNzRXhwcmVzc2lvbih1KSl7dmFyIGg9QmcodSksej1lLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHUpJiZWayh1LmV4cHJlc3Npb24pO2lmKCEoanUoaCl8fHopKXt2YXIgbWU9b3QoaCwwKSxNZT0hIVN2KGgpO2lmKCEobWUubGVuZ3RoPT09MCYmIU1lKSl7dmFyICRlPWUuaXNJZGVudGlmaWVyKHUpP3U6ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih1KT91Lm5hbWU6ZS5pc0JpbmFyeUV4cHJlc3Npb24odSkmJmUuaXNJZGVudGlmaWVyKHUucmlnaHQpP3UucmlnaHQ6dm9pZCAwLHRyPSRlJiZlbCgkZSk7aWYoISghdHImJiFNZSkpe3ZhciBkcj10ciYmZS5pc0JpbmFyeUV4cHJlc3Npb24oby5wYXJlbnQpJiZqRihvLnBhcmVudCx0cil8fHRyJiZzJiZKRihvLHMsJGUsdHIpO2RyfHwoTWU/enUodSwhMCxlLkRpYWdub3N0aWNzLlRoaXNfY29uZGl0aW9uX3dpbGxfYWx3YXlzX3JldHVybl90cnVlX3NpbmNlX3RoaXNfMF9pc19hbHdheXNfZGVmaW5lZCxxXyhoKSk6WHIodSxlLkRpYWdub3N0aWNzLlRoaXNfY29uZGl0aW9uX3dpbGxfYWx3YXlzX3JldHVybl90cnVlX3NpbmNlX3RoaXNfZnVuY3Rpb25faXNfYWx3YXlzX2RlZmluZWRfRGlkX3lvdV9tZWFuX3RvX2NhbGxfaXRfaW5zdGVhZCkpfX19fX19ZnVuY3Rpb24gSkYocixpLHQsbyl7cmV0dXJuISFlLmZvckVhY2hDaGlsZChpLGZ1bmN0aW9uIHModSl7aWYoZS5pc0lkZW50aWZpZXIodSkpe3ZhciBoPWVsKHUpO2lmKGgmJmg9PT1vKXtpZihlLmlzSWRlbnRpZmllcihyKXx8ZS5pc0lkZW50aWZpZXIodCkmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHQucGFyZW50KSlyZXR1cm4hMDtmb3IodmFyIHo9dC5wYXJlbnQsbWU9dS5wYXJlbnQ7eiYmbWU7KXtpZihlLmlzSWRlbnRpZmllcih6KSYmZS5pc0lkZW50aWZpZXIobWUpfHx6LmtpbmQ9PT0xMDgmJm1lLmtpbmQ9PT0xMDgpcmV0dXJuIGVsKHopPT09ZWwobWUpO2lmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oeikmJmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obWUpKXtpZihlbCh6Lm5hbWUpIT09ZWwobWUubmFtZSkpcmV0dXJuITE7bWU9bWUuZXhwcmVzc2lvbix6PXouZXhwcmVzc2lvbn1lbHNlIGlmKGUuaXNDYWxsRXhwcmVzc2lvbih6KSYmZS5pc0NhbGxFeHByZXNzaW9uKG1lKSltZT1tZS5leHByZXNzaW9uLHo9ei5leHByZXNzaW9uO2Vsc2UgcmV0dXJuITF9fX1yZXR1cm4gZS5mb3JFYWNoQ2hpbGQodSxzKX0pfWZ1bmN0aW9uIGpGKHIsaSl7Zm9yKDtlLmlzQmluYXJ5RXhwcmVzc2lvbihyKSYmci5vcGVyYXRvclRva2VuLmtpbmQ9PT01NTspe3ZhciB0PWUuZm9yRWFjaENoaWxkKHIucmlnaHQsZnVuY3Rpb24gbyhzKXtpZihlLmlzSWRlbnRpZmllcihzKSl7dmFyIHU9ZWwocyk7aWYodSYmdT09PWkpcmV0dXJuITB9cmV0dXJuIGUuZm9yRWFjaENoaWxkKHMsbyl9KTtpZih0KXJldHVybiEwO3I9ci5wYXJlbnR9cmV0dXJuITF9ZnVuY3Rpb24gVUYocil7TWYociksaW8oci5zdGF0ZW1lbnQpLEJnKHIuZXhwcmVzc2lvbil9ZnVuY3Rpb24gekYocil7TWYociksQmcoci5leHByZXNzaW9uKSxpbyhyLnN0YXRlbWVudCl9ZnVuY3Rpb24gaDYocixpKXtyZXR1cm4gci5mbGFncyYxNjM4NCYmWHIoaSxlLkRpYWdub3N0aWNzLkFuX2V4cHJlc3Npb25fb2ZfdHlwZV92b2lkX2Nhbm5vdF9iZV90ZXN0ZWRfZm9yX3RydXRoaW5lc3MpLHJ9ZnVuY3Rpb24gQmcocixpKXtyZXR1cm4gaDYoeW4ocixpKSxyKX1mdW5jdGlvbiBXRihyKXtNZihyKXx8ci5pbml0aWFsaXplciYmci5pbml0aWFsaXplci5raW5kPT09MjU1JiZWUyhyLmluaXRpYWxpemVyKSxyLmluaXRpYWxpemVyJiYoci5pbml0aWFsaXplci5raW5kPT09MjU1P2UuZm9yRWFjaChyLmluaXRpYWxpemVyLmRlY2xhcmF0aW9ucyxTUyk6eW4oci5pbml0aWFsaXplcikpLHIuY29uZGl0aW9uJiZCZyhyLmNvbmRpdGlvbiksci5pbmNyZW1lbnRvciYmeW4oci5pbmNyZW1lbnRvciksaW8oci5zdGF0ZW1lbnQpLHIubG9jYWxzJiZBXyhyKX1mdW5jdGlvbiBxRihyKXtwQShyKTt2YXIgaT1lLmdldENvbnRhaW5pbmdGdW5jdGlvbk9yQ2xhc3NTdGF0aWNCbG9jayhyKTtpZihyLmF3YWl0TW9kaWZpZXIpaWYoaSYmZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihpKSlUdChyLmF3YWl0TW9kaWZpZXIsZS5EaWFnbm9zdGljcy5Gb3JfYXdhaXRfbG9vcHNfY2Fubm90X2JlX3VzZWRfaW5zaWRlX2FfY2xhc3Nfc3RhdGljX2Jsb2NrKTtlbHNle3ZhciB0PWUuZ2V0RnVuY3Rpb25GbGFncyhpKTsodCY2KT09PTImJkFlPDk5JiZmYyhyLDE2Mzg0KX1lbHNlIHllLmRvd25sZXZlbEl0ZXJhdGlvbiYmQWU8MiYmZmMociwyNTYpO2lmKHIuaW5pdGlhbGl6ZXIua2luZD09PTI1NSlENihyKTtlbHNle3ZhciBvPXIuaW5pdGlhbGl6ZXIscz1CeShyKTtpZihvLmtpbmQ9PT0yMDR8fG8ua2luZD09PTIwNSlSZChvLHN8fFBlKTtlbHNle3ZhciB1PXluKG8pO2h2KG8sZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyxlLkRpYWdub3N0aWNzLlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hX2Zvcl9vZl9zdGF0ZW1lbnRfbWF5X25vdF9iZV9hbl9vcHRpb25hbF9wcm9wZXJ0eV9hY2Nlc3MpLHMmJm9wKHMsdSxvLHIuZXhwcmVzc2lvbil9fWlvKHIuc3RhdGVtZW50KSxyLmxvY2FscyYmQV8ocil9ZnVuY3Rpb24gVkYocil7cEEocik7dmFyIGk9amIoeW4oci5leHByZXNzaW9uKSk7aWYoci5pbml0aWFsaXplci5raW5kPT09MjU1KXt2YXIgdD1yLmluaXRpYWxpemVyLmRlY2xhcmF0aW9uc1swXTt0JiZlLmlzQmluZGluZ1BhdHRlcm4odC5uYW1lKSYmWHIodC5uYW1lLGUuRGlhZ25vc3RpY3MuVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9jYW5ub3RfYmVfYV9kZXN0cnVjdHVyaW5nX3BhdHRlcm4pLEQ2KHIpfWVsc2V7dmFyIG89ci5pbml0aWFsaXplcixzPXluKG8pO28ua2luZD09PTIwNHx8by5raW5kPT09MjA1P1hyKG8sZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3JfaW5fc3RhdGVtZW50X2Nhbm5vdF9iZV9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybik6YW8obEkoaSkscyk/aHYobyxlLkRpYWdub3N0aWNzLlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hX2Zvcl9pbl9zdGF0ZW1lbnRfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzLGUuRGlhZ25vc3RpY3MuVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tYXlfbm90X2JlX2FuX29wdGlvbmFsX3Byb3BlcnR5X2FjY2Vzcyk6WHIobyxlLkRpYWdub3N0aWNzLlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hX2Zvcl9pbl9zdGF0ZW1lbnRfbXVzdF9iZV9vZl90eXBlX3N0cmluZ19vcl9hbnkpfShpPT09dWl8fCFOcyhpLDEyNjA5MTI2NCkpJiZYcihyLmV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5UaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9tdXN0X2JlX29mX3R5cGVfYW55X2FuX29iamVjdF90eXBlX29yX2FfdHlwZV9wYXJhbWV0ZXJfYnV0X2hlcmVfaGFzX3R5cGVfMCxPdChpKSksaW8oci5zdGF0ZW1lbnQpLHIubG9jYWxzJiZBXyhyKX1mdW5jdGlvbiBENihyKXt2YXIgaT1yLmluaXRpYWxpemVyO2lmKGkuZGVjbGFyYXRpb25zLmxlbmd0aD49MSl7dmFyIHQ9aS5kZWNsYXJhdGlvbnNbMF07U1ModCl9fWZ1bmN0aW9uIEJ5KHIpe3ZhciBpPXIuYXdhaXRNb2RpZmllcj8xNToxMztyZXR1cm4gTl8oaSxnbShyLmV4cHJlc3Npb24pLFRyLHIuZXhwcmVzc2lvbil9ZnVuY3Rpb24gTl8ocixpLHQsbyl7cmV0dXJuIHRhKGkpP2k6eFMocixpLHQsbywhMCl8fE9lfWZ1bmN0aW9uIHhTKHIsaSx0LG8scyl7dmFyIHU9KHImMikhPT0wO2lmKGk9PT11aSl7QVMobyxpLHUpO3JldHVybn12YXIgaD1BZT49Mix6PSFoJiZ5ZS5kb3dubGV2ZWxJdGVyYXRpb24sbWU9eWUubm9VbmNoZWNrZWRJbmRleGVkQWNjZXNzJiYhIShyJjEyOCk7aWYoaHx8enx8dSl7dmFyIE1lPUp5KGkscixoP286dm9pZCAwKTtpZihzJiZNZSl7dmFyICRlPXImOD9lLkRpYWdub3N0aWNzLkNhbm5vdF9pdGVyYXRlX3ZhbHVlX2JlY2F1c2VfdGhlX25leHRfbWV0aG9kX29mX2l0c19pdGVyYXRvcl9leHBlY3RzX3R5cGVfMV9idXRfZm9yX29mX3dpbGxfYWx3YXlzX3NlbmRfMDpyJjMyP2UuRGlhZ25vc3RpY3MuQ2Fubm90X2l0ZXJhdGVfdmFsdWVfYmVjYXVzZV90aGVfbmV4dF9tZXRob2Rfb2ZfaXRzX2l0ZXJhdG9yX2V4cGVjdHNfdHlwZV8xX2J1dF9hcnJheV9zcHJlYWRfd2lsbF9hbHdheXNfc2VuZF8wOnImNjQ/ZS5EaWFnbm9zdGljcy5DYW5ub3RfaXRlcmF0ZV92YWx1ZV9iZWNhdXNlX3RoZV9uZXh0X21ldGhvZF9vZl9pdHNfaXRlcmF0b3JfZXhwZWN0c190eXBlXzFfYnV0X2FycmF5X2Rlc3RydWN0dXJpbmdfd2lsbF9hbHdheXNfc2VuZF8wOnImMTY/ZS5EaWFnbm9zdGljcy5DYW5ub3RfZGVsZWdhdGVfaXRlcmF0aW9uX3RvX3ZhbHVlX2JlY2F1c2VfdGhlX25leHRfbWV0aG9kX29mX2l0c19pdGVyYXRvcl9leHBlY3RzX3R5cGVfMV9idXRfdGhlX2NvbnRhaW5pbmdfZ2VuZXJhdG9yX3dpbGxfYWx3YXlzX3NlbmRfMDp2b2lkIDA7JGUmJnpjKHQsTWUubmV4dFR5cGUsbywkZSl9aWYoTWV8fGgpcmV0dXJuIG1lP2Z2KE1lJiZNZS55aWVsZFR5cGUpOk1lJiZNZS55aWVsZFR5cGV9dmFyIHRyPWksZHI9ITEsRHI9ITE7aWYociY0KXtpZih0ci5mbGFncyYxMDQ4NTc2KXt2YXIgUXI9aS50eXBlcyxsaT1lLmZpbHRlcihRcixmdW5jdGlvbihSYSl7cmV0dXJuIShSYS5mbGFncyY0MDI2NTMzMTYpfSk7bGkhPT1RciYmKHRyPVBhKGxpLDIpKX1lbHNlIHRyLmZsYWdzJjQwMjY1MzMxNiYmKHRyPXVpKTtpZihEcj10ciE9PWksRHImJihBZTwxJiZvJiYoWHIobyxlLkRpYWdub3N0aWNzLlVzaW5nX2Ffc3RyaW5nX2luX2FfZm9yX29mX3N0YXRlbWVudF9pc19vbmx5X3N1cHBvcnRlZF9pbl9FQ01BU2NyaXB0XzVfYW5kX2hpZ2hlciksZHI9ITApLHRyLmZsYWdzJjEzMTA3MikpcmV0dXJuIG1lP2Z2KExpKTpMaX1pZighc3AodHIpKXtpZihvJiYhZHIpe3ZhciBUaT0hIShyJjQpJiYhRHIsQ2k9TnQoVGkseiksJGk9Q2lbMF0sWmk9Q2lbMV07enUobyxaaSYmISFTdih0ciksJGksT3QodHIpKX1yZXR1cm4gRHI/bWU/ZnYoTGkpOkxpOnZvaWQgMH12YXIgcXQ9Y3ModHIsbnQpO2lmKERyJiZxdClyZXR1cm4gcXQuZmxhZ3MmNDAyNjUzMzE2JiYheWUubm9VbmNoZWNrZWRJbmRleGVkQWNjZXNzP0xpOlBhKG1lP1txdCxMaSxUcl06W3F0LExpXSwyKTtyZXR1cm4gciYxMjg/ZnYocXQpOnF0O2Z1bmN0aW9uIE50KFJhLGNhKXt2YXIgU247aWYoY2EpcmV0dXJuIFJhP1tlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYW5fYXJyYXlfdHlwZV9vcl9hX3N0cmluZ190eXBlX29yX2RvZXNfbm90X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9pdGVyYXRvciwhMF06W2UuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlX29yX2RvZXNfbm90X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9pdGVyYXRvciwhMF07dmFyIGphPWI2KHIsMCxpLHZvaWQgMCk7cmV0dXJuIGphP1tlLkRpYWdub3N0aWNzLlR5cGVfMF9jYW5fb25seV9iZV9pdGVyYXRlZF90aHJvdWdoX3doZW5fdXNpbmdfdGhlX2Rvd25sZXZlbEl0ZXJhdGlvbl9mbGFnX29yX3dpdGhfYV90YXJnZXRfb2ZfZXMyMDE1X29yX2hpZ2hlciwhMV06S0YoKFNuPWkuc3ltYm9sKT09PW51bGx8fFNuPT09dm9pZCAwP3ZvaWQgMDpTbi5lc2NhcGVkTmFtZSk/W2UuRGlhZ25vc3RpY3MuVHlwZV8wX2Nhbl9vbmx5X2JlX2l0ZXJhdGVkX3Rocm91Z2hfd2hlbl91c2luZ190aGVfZG93bmxldmVsSXRlcmF0aW9uX2ZsYWdfb3Jfd2l0aF9hX3RhcmdldF9vZl9lczIwMTVfb3JfaGlnaGVyLCEwXTpSYT9bZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2FuX2FycmF5X3R5cGVfb3JfYV9zdHJpbmdfdHlwZSwhMF06W2UuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlLCEwXX19ZnVuY3Rpb24gS0Yocil7c3dpdGNoKHIpe2Nhc2VcIkZsb2F0MzJBcnJheVwiOmNhc2VcIkZsb2F0NjRBcnJheVwiOmNhc2VcIkludDE2QXJyYXlcIjpjYXNlXCJJbnQzMkFycmF5XCI6Y2FzZVwiSW50OEFycmF5XCI6Y2FzZVwiTm9kZUxpc3RcIjpjYXNlXCJVaW50MTZBcnJheVwiOmNhc2VcIlVpbnQzMkFycmF5XCI6Y2FzZVwiVWludDhBcnJheVwiOmNhc2VcIlVpbnQ4Q2xhbXBlZEFycmF5XCI6cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gYjYocixpLHQsbyl7aWYoIXRhKHQpKXt2YXIgcz1KeSh0LHIsbyk7cmV0dXJuIHMmJnNbaihpKV19fWZ1bmN0aW9uIGFfKHIsaSx0KXtpZihyPT09dm9pZCAwJiYocj11aSksaT09PXZvaWQgMCYmKGk9dWkpLHQ9PT12b2lkIDAmJih0PWdyKSxyLmZsYWdzJjY3MzU5MzI3JiZpLmZsYWdzJjE4MDIyNyYmdC5mbGFncyYxODAyMjcpe3ZhciBvPVN1KFtyLGksdF0pLHM9T28uZ2V0KG8pO3JldHVybiBzfHwocz17eWllbGRUeXBlOnIscmV0dXJuVHlwZTppLG5leHRUeXBlOnR9LE9vLnNldChvLHMpKSxzfXJldHVybnt5aWVsZFR5cGU6cixyZXR1cm5UeXBlOmksbmV4dFR5cGU6dH19ZnVuY3Rpb24gUzYocil7Zm9yKHZhciBpLHQsbyxzPTAsdT1yO3M8dS5sZW5ndGg7cysrKXt2YXIgaD11W3NdO2lmKCEoaD09PXZvaWQgMHx8aD09PW5vKSl7aWYoaD09PSRvKXJldHVybiAkbztpPWUuYXBwZW5kKGksaC55aWVsZFR5cGUpLHQ9ZS5hcHBlbmQodCxoLnJldHVyblR5cGUpLG89ZS5hcHBlbmQobyxoLm5leHRUeXBlKX19cmV0dXJuIGl8fHR8fG8/YV8oaSYmUGEoaSksdCYmUGEodCksbyYmRG8obykpOm5vfWZ1bmN0aW9uIFIwKHIsaSl7cmV0dXJuIHJbaV19ZnVuY3Rpb24gbWYocixpLHQpe3JldHVybiByW2ldPXR9ZnVuY3Rpb24gSnkocixpLHQpe2lmKHRhKHIpKXJldHVybiAkbztpZighKHIuZmxhZ3MmMTA0ODU3Nikpe3ZhciBvPVQ2KHIsaSx0KTtpZihvPT09bm8pe3QmJkFTKHQsciwhIShpJjIpKTtyZXR1cm59cmV0dXJuIG99dmFyIHM9aSYyP1wiaXRlcmF0aW9uVHlwZXNPZkFzeW5jSXRlcmFibGVcIjpcIml0ZXJhdGlvblR5cGVzT2ZJdGVyYWJsZVwiLHU9UjAocixzKTtpZih1KXJldHVybiB1PT09bm8/dm9pZCAwOnU7Zm9yKHZhciBoLHo9MCxtZT1yLnR5cGVzO3o8bWUubGVuZ3RoO3orKyl7dmFyIE1lPW1lW3pdLCRlPVQ2KE1lLGksdCk7aWYoJGU9PT1ubyl7dCYmQVModCxyLCEhKGkmMikpLG1mKHIscyxubyk7cmV0dXJufWVsc2UgaD1lLmFwcGVuZChoLCRlKX12YXIgdHI9aD9TNihoKTpubztyZXR1cm4gbWYocixzLHRyKSx0cj09PW5vP3ZvaWQgMDp0cn1mdW5jdGlvbiBFUyhyLGkpe2lmKHI9PT1ubylyZXR1cm4gbm87aWYocj09PSRvKXJldHVybiAkbzt2YXIgdD1yLnlpZWxkVHlwZSxvPXIucmV0dXJuVHlwZSxzPXIubmV4dFR5cGU7cmV0dXJuIGkmJm9EKCEwKSxhXyhhZyh0LGkpfHxPZSxhZyhvLGkpfHxPZSxzKX1mdW5jdGlvbiBUNihyLGksdCl7aWYodGEocikpcmV0dXJuICRvO2lmKGkmMil7dmFyIG89Q1MocixTdCl8fEU2KHIsU3QpO2lmKG8pcmV0dXJuIGkmOD9FUyhvLHQpOm99aWYoaSYxKXt2YXIgbz1DUyhyLHBhKXx8RTYocixwYSk7aWYobylpZihpJjIpe2lmKG8hPT1ubylyZXR1cm4gbWYocixcIml0ZXJhdGlvblR5cGVzT2ZBc3luY0l0ZXJhYmxlXCIsRVMobyx0KSl9ZWxzZSByZXR1cm4gb31pZihpJjIpe3ZhciBvPWtTKHIsU3QsdCk7aWYobyE9PW5vKXJldHVybiBvfWlmKGkmMSl7dmFyIG89a1MocixwYSx0KTtpZihvIT09bm8pcmV0dXJuIGkmMj9tZihyLFwiaXRlcmF0aW9uVHlwZXNPZkFzeW5jSXRlcmFibGVcIixvP0VTKG8sdCk6bm8pOm99cmV0dXJuIG5vfWZ1bmN0aW9uIENTKHIsaSl7cmV0dXJuIFIwKHIsaS5pdGVyYWJsZUNhY2hlS2V5KX1mdW5jdGlvbiB4NihyLGkpe3ZhciB0PUNTKHIsaSl8fGtTKHIsaSx2b2lkIDApO3JldHVybiB0PT09bm8/eGk6dH1mdW5jdGlvbiBFNihyLGkpe3ZhciB0O2lmKFhmKHIsdD1pLmdldEdsb2JhbEl0ZXJhYmxlVHlwZSghMSkpfHxYZihyLHQ9aS5nZXRHbG9iYWxJdGVyYWJsZUl0ZXJhdG9yVHlwZSghMSkpKXt2YXIgbz14byhyKVswXSxzPXg2KHQsaSksdT1zLnJldHVyblR5cGUsaD1zLm5leHRUeXBlO3JldHVybiBtZihyLGkuaXRlcmFibGVDYWNoZUtleSxhXyhpLnJlc29sdmVJdGVyYXRpb25UeXBlKG8sdm9pZCAwKXx8byxpLnJlc29sdmVJdGVyYXRpb25UeXBlKHUsdm9pZCAwKXx8dSxoKSl9aWYoWGYocixpLmdldEdsb2JhbEdlbmVyYXRvclR5cGUoITEpKSl7dmFyIHo9eG8ociksbz16WzBdLHU9elsxXSxoPXpbMl07cmV0dXJuIG1mKHIsaS5pdGVyYWJsZUNhY2hlS2V5LGFfKGkucmVzb2x2ZUl0ZXJhdGlvblR5cGUobyx2b2lkIDApfHxvLGkucmVzb2x2ZUl0ZXJhdGlvblR5cGUodSx2b2lkIDApfHx1LGgpKX19ZnVuY3Rpb24gR0Yocil7dmFyIGk9RXgoITEpLHQ9aSYmZGEoSnQoaSksZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMocikpO3JldHVybiB0JiZfZih0KT9wZih0KTpcIl9fQFwiLmNvbmNhdChyKX1mdW5jdGlvbiBrUyhyLGksdCl7dmFyIG8scz1iaShyLEdGKGkuaXRlcmF0b3JTeW1ib2xOYW1lKSksdT1zJiYhKHMuZmxhZ3MmMTY3NzcyMTYpP0p0KHMpOnZvaWQgMDtpZih0YSh1KSlyZXR1cm4gbWYocixpLml0ZXJhYmxlQ2FjaGVLZXksJG8pO3ZhciBoPXU/b3QodSwwKTp2b2lkIDA7aWYoIWUuc29tZShoKSlyZXR1cm4gbWYocixpLml0ZXJhYmxlQ2FjaGVLZXksbm8pO3ZhciB6PURvKGUubWFwKGgseW8pKSxtZT0obz1DNih6LGksdCkpIT09bnVsbCYmbyE9PXZvaWQgMD9vOm5vO3JldHVybiBtZihyLGkuaXRlcmFibGVDYWNoZUtleSxtZSl9ZnVuY3Rpb24gQVMocixpLHQpe3ZhciBvPXQ/ZS5EaWFnbm9zdGljcy5UeXBlXzBfbXVzdF9oYXZlX2FfU3ltYm9sX2FzeW5jSXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9hc3luY19pdGVyYXRvcjplLkRpYWdub3N0aWNzLlR5cGVfMF9tdXN0X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9pdGVyYXRvcjt6dShyLCEhU3YoaSksbyxPdChpKSl9ZnVuY3Rpb24gQzYocixpLHQpe2lmKHRhKHIpKXJldHVybiAkbzt2YXIgbz1rNihyLGkpfHxIRihyLGkpfHxONihyLGksdCk7cmV0dXJuIG89PT1ubz92b2lkIDA6b31mdW5jdGlvbiBrNihyLGkpe3JldHVybiBSMChyLGkuaXRlcmF0b3JDYWNoZUtleSl9ZnVuY3Rpb24gSEYocixpKXt2YXIgdD1pLmdldEdsb2JhbEl0ZXJhYmxlSXRlcmF0b3JUeXBlKCExKTtpZihYZihyLHQpKXt2YXIgbz14byhyKVswXSxzPWs2KHQsaSl8fE42KHQsaSx2b2lkIDApLHU9cz09PW5vP3hpOnMsaD11LnJldHVyblR5cGUsej11Lm5leHRUeXBlO3JldHVybiBtZihyLGkuaXRlcmF0b3JDYWNoZUtleSxhXyhvLGgseikpfWlmKFhmKHIsaS5nZXRHbG9iYWxJdGVyYXRvclR5cGUoITEpKXx8WGYocixpLmdldEdsb2JhbEdlbmVyYXRvclR5cGUoITEpKSl7dmFyIG1lPXhvKHIpLG89bWVbMF0saD1tZVsxXSx6PW1lWzJdO3JldHVybiBtZihyLGkuaXRlcmF0b3JDYWNoZUtleSxhXyhvLGgseikpfX1mdW5jdGlvbiBBNihyLGkpe3ZhciB0PWRhKHIsXCJkb25lXCIpfHx4dDtyZXR1cm4gYW8oaT09PTA/eHQ6RHQsdCl9ZnVuY3Rpb24gWEYocil7cmV0dXJuIEE2KHIsMCl9ZnVuY3Rpb24gUUYocil7cmV0dXJuIEE2KHIsMSl9ZnVuY3Rpb24gWUYocil7aWYodGEocikpcmV0dXJuICRvO3ZhciBpPVIwKHIsXCJpdGVyYXRpb25UeXBlc09mSXRlcmF0b3JSZXN1bHRcIik7aWYoaSlyZXR1cm4gaTtpZihYZihyLE8zKCExKSkpe3ZhciB0PXhvKHIpWzBdO3JldHVybiBtZihyLFwiaXRlcmF0aW9uVHlwZXNPZkl0ZXJhdG9yUmVzdWx0XCIsYV8odCx2b2lkIDAsdm9pZCAwKSl9aWYoWGYocixGMyghMSkpKXt2YXIgbz14byhyKVswXTtyZXR1cm4gbWYocixcIml0ZXJhdGlvblR5cGVzT2ZJdGVyYXRvclJlc3VsdFwiLGFfKHZvaWQgMCxvLHZvaWQgMCkpfXZhciBzPWVjKHIsWEYpLHU9cyE9PXVpP2RhKHMsXCJ2YWx1ZVwiKTp2b2lkIDAsaD1lYyhyLFFGKSx6PWghPT11aT9kYShoLFwidmFsdWVcIik6dm9pZCAwO3JldHVybiF1JiYhej9tZihyLFwiaXRlcmF0aW9uVHlwZXNPZkl0ZXJhdG9yUmVzdWx0XCIsbm8pOm1mKHIsXCJpdGVyYXRpb25UeXBlc09mSXRlcmF0b3JSZXN1bHRcIixhXyh1LHp8fEZpLHZvaWQgMCkpfWZ1bmN0aW9uIE5TKHIsaSx0LG8pe3ZhciBzLHUsaCx6LG1lPWJpKHIsdCk7aWYoISghbWUmJnQhPT1cIm5leHRcIikpe3ZhciBNZT1tZSYmISh0PT09XCJuZXh0XCImJm1lLmZsYWdzJjE2Nzc3MjE2KT90PT09XCJuZXh0XCI/SnQobWUpOktzKEp0KG1lKSwyMDk3MTUyKTp2b2lkIDA7aWYodGEoTWUpKXJldHVybiB0PT09XCJuZXh0XCI/JG86UHI7dmFyICRlPU1lP290KE1lLDApOmUuZW1wdHlBcnJheTtpZigkZS5sZW5ndGg9PT0wKXtpZihvKXt2YXIgdHI9dD09PVwibmV4dFwiP2kubXVzdEhhdmVBTmV4dE1ldGhvZERpYWdub3N0aWM6aS5tdXN0QmVBTWV0aG9kRGlhZ25vc3RpYztYcihvLHRyLHQpfXJldHVybiB0PT09XCJuZXh0XCI/JG86dm9pZCAwfWlmKChNZT09bnVsbD92b2lkIDA6TWUuc3ltYm9sKSYmJGUubGVuZ3RoPT09MSl7dmFyIGRyPWkuZ2V0R2xvYmFsR2VuZXJhdG9yVHlwZSghMSksRHI9aS5nZXRHbG9iYWxJdGVyYXRvclR5cGUoITEpLFFyPSgodT0ocz1kci5zeW1ib2wpPT09bnVsbHx8cz09PXZvaWQgMD92b2lkIDA6cy5tZW1iZXJzKT09PW51bGx8fHU9PT12b2lkIDA/dm9pZCAwOnUuZ2V0KHQpKT09PU1lLnN5bWJvbCxsaT0hUXImJigoej0oaD1Eci5zeW1ib2wpPT09bnVsbHx8aD09PXZvaWQgMD92b2lkIDA6aC5tZW1iZXJzKT09PW51bGx8fHo9PT12b2lkIDA/dm9pZCAwOnouZ2V0KHQpKT09PU1lLnN5bWJvbDtpZihRcnx8bGkpe3ZhciBUaT1Rcj9kcjpEcixDaT1NZS5tYXBwZXI7cmV0dXJuIGFfKGFwKFRpLnR5cGVQYXJhbWV0ZXJzWzBdLENpKSxhcChUaS50eXBlUGFyYW1ldGVyc1sxXSxDaSksdD09PVwibmV4dFwiP2FwKFRpLnR5cGVQYXJhbWV0ZXJzWzJdLENpKTp2b2lkIDApfX1mb3IodmFyICRpLFppLHF0PTAsTnQ9JGU7cXQ8TnQubGVuZ3RoO3F0Kyspe3ZhciBSYT1OdFtxdF07dCE9PVwidGhyb3dcIiYmZS5zb21lKFJhLnBhcmFtZXRlcnMpJiYoJGk9ZS5hcHBlbmQoJGksJHUoUmEsMCkpKSxaaT1lLmFwcGVuZChaaSx5byhSYSkpfXZhciBjYSxTbjtpZih0IT09XCJ0aHJvd1wiKXt2YXIgamE9JGk/UGEoJGkpOmdyO2lmKHQ9PT1cIm5leHRcIilTbj1qYTtlbHNlIGlmKHQ9PT1cInJldHVyblwiKXt2YXIgRm49aS5yZXNvbHZlSXRlcmF0aW9uVHlwZShqYSxvKXx8T2U7Y2E9ZS5hcHBlbmQoY2EsRm4pfX12YXIgd24sVG49Wmk/RG8oWmkpOnVpLEVvPWkucmVzb2x2ZUl0ZXJhdGlvblR5cGUoVG4sbyl8fE9lLGx0PVlGKEVvKTtyZXR1cm4gbHQ9PT1ubz8obyYmWHIobyxpLm11c3RIYXZlQVZhbHVlRGlhZ25vc3RpYyx0KSx3bj1PZSxjYT1lLmFwcGVuZChjYSxPZSkpOih3bj1sdC55aWVsZFR5cGUsY2E9ZS5hcHBlbmQoY2EsbHQucmV0dXJuVHlwZSkpLGFfKHduLFBhKGNhKSxTbil9fWZ1bmN0aW9uIE42KHIsaSx0KXt2YXIgbz1TNihbTlMocixpLFwibmV4dFwiLHQpLE5TKHIsaSxcInJldHVyblwiLHQpLE5TKHIsaSxcInRocm93XCIsdCldKTtyZXR1cm4gbWYocixpLml0ZXJhdG9yQ2FjaGVLZXksbyl9ZnVuY3Rpb24gSmcocixpLHQpe2lmKCF0YShpKSl7dmFyIG89UDYoaSx0KTtyZXR1cm4gbyYmb1tqKHIpXX19ZnVuY3Rpb24gUDYocixpKXtpZih0YShyKSlyZXR1cm4gJG87dmFyIHQ9aT8yOjEsbz1pP1N0OnBhO3JldHVybiBKeShyLHQsdm9pZCAwKXx8QzYocixvLHZvaWQgMCl9ZnVuY3Rpb24gJEYocil7TWYocil8fHNMKHIpfWZ1bmN0aW9uIEIwKHIsaSl7dmFyIHQ9ISEoaSYxKSxvPSEhKGkmMik7cmV0dXJuIHQ/SmcoMSxyLG8pfHxQZTpvP2tfKHIpfHxQZTpyfWZ1bmN0aW9uIEk2KHIsaSl7dmFyIHQ9QjAoaSxlLmdldEZ1bmN0aW9uRmxhZ3MocikpO3JldHVybiEhdCYmZnModCwxNjM4Nyl9ZnVuY3Rpb24gWkYocil7dmFyIGk7aWYoIU1mKHIpKXt2YXIgdD1lLmdldENvbnRhaW5pbmdGdW5jdGlvbk9yQ2xhc3NTdGF0aWNCbG9jayhyKTtpZih0JiZlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKHQpKXtIcyhyLGUuRGlhZ25vc3RpY3MuQV9yZXR1cm5fc3RhdGVtZW50X2Nhbm5vdF9iZV91c2VkX2luc2lkZV9hX2NsYXNzX3N0YXRpY19ibG9jayk7cmV0dXJufWlmKCF0KXtIcyhyLGUuRGlhZ25vc3RpY3MuQV9yZXR1cm5fc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FfZnVuY3Rpb25fYm9keSk7cmV0dXJufXZhciBvPXlsKHQpLHM9eW8obyksdT1lLmdldEZ1bmN0aW9uRmxhZ3ModCk7aWYoWWV8fHIuZXhwcmVzc2lvbnx8cy5mbGFncyYxMzEwNzIpe3ZhciBoPXIuZXhwcmVzc2lvbj9PcyhyLmV4cHJlc3Npb24pOlRyO2lmKHQua2luZD09PTE3MylyLmV4cHJlc3Npb24mJlhyKHIsZS5EaWFnbm9zdGljcy5TZXR0ZXJzX2Nhbm5vdF9yZXR1cm5fYV92YWx1ZSk7ZWxzZSBpZih0LmtpbmQ9PT0xNzEpci5leHByZXNzaW9uJiYhb3AoaCxzLHIsci5leHByZXNzaW9uKSYmWHIocixlLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9tdXN0X2JlX2Fzc2lnbmFibGVfdG9fdGhlX2luc3RhbmNlX3R5cGVfb2ZfdGhlX2NsYXNzKTtlbHNlIGlmKHlnKHQpKXt2YXIgej0oaT1CMChzLHUpKSE9PW51bGwmJmkhPT12b2lkIDA/aTpzLG1lPXUmMj94dihoLCExLHIsZS5EaWFnbm9zdGljcy5UaGVfcmV0dXJuX3R5cGVfb2ZfYW5fYXN5bmNfZnVuY3Rpb25fbXVzdF9laXRoZXJfYmVfYV92YWxpZF9wcm9taXNlX29yX211c3Rfbm90X2NvbnRhaW5fYV9jYWxsYWJsZV90aGVuX21lbWJlcik6aDt6JiZvcChtZSx6LHIsci5leHByZXNzaW9uKX19ZWxzZSB0LmtpbmQhPT0xNzEmJnllLm5vSW1wbGljaXRSZXR1cm5zJiYhSTYodCxzKSYmWHIocixlLkRpYWdub3N0aWNzLk5vdF9hbGxfY29kZV9wYXRoc19yZXR1cm5fYV92YWx1ZSl9fWZ1bmN0aW9uIGVNKHIpe01mKHIpfHxyLmZsYWdzJjMyNzY4JiZIcyhyLGUuRGlhZ25vc3RpY3Mud2l0aF9zdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbl9hc3luY19mdW5jdGlvbl9ibG9jaykseW4oci5leHByZXNzaW9uKTt2YXIgaT1lLmdldFNvdXJjZUZpbGVPZk5vZGUocik7aWYoIUpkKGkpKXt2YXIgdD1lLmdldFNwYW5PZlRva2VuQXRQb3NpdGlvbihpLHIucG9zKS5zdGFydCxvPXIuc3RhdGVtZW50LnBvcztyZChpLHQsby10LGUuRGlhZ25vc3RpY3MuVGhlX3dpdGhfc3RhdGVtZW50X2lzX25vdF9zdXBwb3J0ZWRfQWxsX3N5bWJvbHNfaW5fYV93aXRoX2Jsb2NrX3dpbGxfaGF2ZV90eXBlX2FueSl9fWZ1bmN0aW9uIHJNKHIpe01mKHIpO3ZhciBpLHQ9ITEsbz15bihyLmV4cHJlc3Npb24pLHM9Q2cobyk7ZS5mb3JFYWNoKHIuY2FzZUJsb2NrLmNsYXVzZXMsZnVuY3Rpb24odSl7dS5raW5kPT09MjkwJiYhdCYmKGk9PT12b2lkIDA/aT11OihUdCh1LGUuRGlhZ25vc3RpY3MuQV9kZWZhdWx0X2NsYXVzZV9jYW5ub3RfYXBwZWFyX21vcmVfdGhhbl9vbmNlX2luX2Ffc3dpdGNoX3N0YXRlbWVudCksdD0hMCkpLHUua2luZD09PTI4OSYmZmUoaCh1KSksZS5mb3JFYWNoKHUuc3RhdGVtZW50cyxpbykseWUubm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2gmJnUuZmFsbHRocm91Z2hGbG93Tm9kZSYmbXkodS5mYWxsdGhyb3VnaEZsb3dOb2RlKSYmWHIodSxlLkRpYWdub3N0aWNzLkZhbGx0aHJvdWdoX2Nhc2VfaW5fc3dpdGNoKTtmdW5jdGlvbiBoKHope3JldHVybiBmdW5jdGlvbigpe3ZhciBtZT15bih6LmV4cHJlc3Npb24pLE1lPUNnKG1lKSwkZT1vOyghTWV8fCFzKSYmKG1lPU1lP0tsKG1lKTptZSwkZT1LbChvKSksZlMoJGUsbWUpfHxtRShtZSwkZSx6LmV4cHJlc3Npb24sdm9pZCAwKX19fSksci5jYXNlQmxvY2subG9jYWxzJiZBXyhyLmNhc2VCbG9jayl9ZnVuY3Rpb24gaU0ocil7TWYocil8fGUuZmluZEFuY2VzdG9yKHIucGFyZW50LGZ1bmN0aW9uKGkpe3JldHVybiBlLmlzRnVuY3Rpb25MaWtlKGkpP1wicXVpdFwiOmkua2luZD09PTI1MCYmaS5sYWJlbC5lc2NhcGVkVGV4dD09PXIubGFiZWwuZXNjYXBlZFRleHQ/KFR0KHIubGFiZWwsZS5EaWFnbm9zdGljcy5EdXBsaWNhdGVfbGFiZWxfMCxlLmdldFRleHRPZk5vZGUoci5sYWJlbCkpLCEwKTohMX0pLGlvKHIuc3RhdGVtZW50KX1mdW5jdGlvbiB0TShyKXtNZihyKXx8ZS5pc0lkZW50aWZpZXIoci5leHByZXNzaW9uKSYmIXIuZXhwcmVzc2lvbi5lc2NhcGVkVGV4dCYmVEwocixlLkRpYWdub3N0aWNzLkxpbmVfYnJlYWtfbm90X3Blcm1pdHRlZF9oZXJlKSxyLmV4cHJlc3Npb24mJnluKHIuZXhwcmVzc2lvbil9ZnVuY3Rpb24gYU0ocil7TWYociksTTAoci50cnlCbG9jayk7dmFyIGk9ci5jYXRjaENsYXVzZTtpZihpKXtpZihpLnZhcmlhYmxlRGVjbGFyYXRpb24pe3ZhciB0PWkudmFyaWFibGVEZWNsYXJhdGlvbixvPWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKGUuZ2V0Um9vdERlY2xhcmF0aW9uKHQpKTtpZihvKXt2YXIgcz1HXyh0LCExLDApO3MmJiEocy5mbGFncyYzKSYmSHMobyxlLkRpYWdub3N0aWNzLkNhdGNoX2NsYXVzZV92YXJpYWJsZV90eXBlX2Fubm90YXRpb25fbXVzdF9iZV9hbnlfb3JfdW5rbm93bl9pZl9zcGVjaWZpZWQpfWVsc2UgaWYodC5pbml0aWFsaXplcilIcyh0LmluaXRpYWxpemVyLGUuRGlhZ25vc3RpY3MuQ2F0Y2hfY2xhdXNlX3ZhcmlhYmxlX2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyKTtlbHNle3ZhciB1PWkuYmxvY2subG9jYWxzO3UmJmUuZm9yRWFjaEtleShpLmxvY2FscyxmdW5jdGlvbihoKXt2YXIgej11LmdldChoKTsoej09bnVsbD92b2lkIDA6ei52YWx1ZURlY2xhcmF0aW9uKSYmKHouZmxhZ3MmMikhPT0wJiZUdCh6LnZhbHVlRGVjbGFyYXRpb24sZS5EaWFnbm9zdGljcy5DYW5ub3RfcmVkZWNsYXJlX2lkZW50aWZpZXJfMF9pbl9jYXRjaF9jbGF1c2UsaCl9KX19TTAoaS5ibG9jayl9ci5maW5hbGx5QmxvY2smJk0wKHIuZmluYWxseUJsb2NrKX1mdW5jdGlvbiBKMChyLGksdCl7dmFyIG89SG4ocik7aWYoby5sZW5ndGghPT0wKXtmb3IodmFyIHM9MCx1PVBmKHIpO3M8dS5sZW5ndGg7cysrKXt2YXIgaD11W3NdO3QmJmguZmxhZ3MmNDE5NDMwNHx8dzYocixoLG9tKGgsODU3NiwhMCksbWwoaCkpfXZhciB6PWkudmFsdWVEZWNsYXJhdGlvbjtpZih6JiZlLmlzQ2xhc3NMaWtlKHopKWZvcih2YXIgbWU9MCxNZT16Lm1lbWJlcnM7bWU8TWUubGVuZ3RoO21lKyspe3ZhciAkZT1NZVttZV07aWYoIWUuaXNTdGF0aWMoJGUpJiYhVGQoJGUpKXt2YXIgdHI9RXQoJGUpO3c2KHIsdHIsR3MoJGUubmFtZS5leHByZXNzaW9uKSxtbCh0cikpfX1pZihvLmxlbmd0aD4xKWZvcih2YXIgZHI9MCxEcj1vO2RyPERyLmxlbmd0aDtkcisrKXt2YXIgUXI9RHJbZHJdO25NKHIsUXIpfX19ZnVuY3Rpb24gdzYocixpLHQsbyl7dmFyIHM9aS52YWx1ZURlY2xhcmF0aW9uLHU9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihzKTtpZighKHUmJmUuaXNQcml2YXRlSWRlbnRpZmllcih1KSkpZm9yKHZhciBoPXdzKHIsdCksej1lLmdldE9iamVjdEZsYWdzKHIpJjI/ZS5nZXREZWNsYXJhdGlvbk9mS2luZChyLnN5bWJvbCwyNTgpOnZvaWQgMCxtZT1zJiZzLmtpbmQ9PT0yMjF8fHUmJnUua2luZD09PTE2Mnx8WXMoaSk9PT1yLnN5bWJvbD9zOnZvaWQgMCxNZT1mdW5jdGlvbihEcil7dmFyIFFyPURyLmRlY2xhcmF0aW9uJiZZcyhFdChEci5kZWNsYXJhdGlvbikpPT09ci5zeW1ib2w/RHIuZGVjbGFyYXRpb246dm9pZCAwLGxpPW1lfHxRcnx8KHomJiFlLnNvbWUoUWMociksZnVuY3Rpb24oVGkpe3JldHVybiEhaF8oVGksaS5lc2NhcGVkTmFtZSkmJiEhY3MoVGksRHIua2V5VHlwZSl9KT96OnZvaWQgMCk7bGkmJiFhbyhvLERyLnR5cGUpJiZYcihsaSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfb2ZfdHlwZV8xX2lzX25vdF9hc3NpZ25hYmxlX3RvXzJfaW5kZXhfdHlwZV8zLHRuKGkpLE90KG8pLE90KERyLmtleVR5cGUpLE90KERyLnR5cGUpKX0sJGU9MCx0cj1oOyRlPHRyLmxlbmd0aDskZSsrKXt2YXIgZHI9dHJbJGVdO01lKGRyKX19ZnVuY3Rpb24gbk0ocixpKXtmb3IodmFyIHQ9aS5kZWNsYXJhdGlvbixvPXdzKHIsaS5rZXlUeXBlKSxzPWUuZ2V0T2JqZWN0RmxhZ3MocikmMj9lLmdldERlY2xhcmF0aW9uT2ZLaW5kKHIuc3ltYm9sLDI1OCk6dm9pZCAwLHU9dCYmWXMoRXQodCkpPT09ci5zeW1ib2w/dDp2b2lkIDAsaD1mdW5jdGlvbigkZSl7aWYoJGU9PT1pKXJldHVyblwiY29udGludWVcIjt2YXIgdHI9JGUuZGVjbGFyYXRpb24mJllzKEV0KCRlLmRlY2xhcmF0aW9uKSk9PT1yLnN5bWJvbD8kZS5kZWNsYXJhdGlvbjp2b2lkIDAsZHI9dXx8dHJ8fChzJiYhZS5zb21lKFFjKHIpLGZ1bmN0aW9uKERyKXtyZXR1cm4hIXNzKERyLGkua2V5VHlwZSkmJiEhY3MoRHIsJGUua2V5VHlwZSl9KT9zOnZvaWQgMCk7ZHImJiFhbyhpLnR5cGUsJGUudHlwZSkmJlhyKGRyLGUuRGlhZ25vc3RpY3MuXzBfaW5kZXhfdHlwZV8xX2lzX25vdF9hc3NpZ25hYmxlX3RvXzJfaW5kZXhfdHlwZV8zLE90KGkua2V5VHlwZSksT3QoaS50eXBlKSxPdCgkZS5rZXlUeXBlKSxPdCgkZS50eXBlKSl9LHo9MCxtZT1vO3o8bWUubGVuZ3RoO3orKyl7dmFyIE1lPW1lW3pdO2goTWUpfX1mdW5jdGlvbiBUbShyLGkpe3N3aXRjaChyLmVzY2FwZWRUZXh0KXtjYXNlXCJhbnlcIjpjYXNlXCJ1bmtub3duXCI6Y2FzZVwibmV2ZXJcIjpjYXNlXCJudW1iZXJcIjpjYXNlXCJiaWdpbnRcIjpjYXNlXCJib29sZWFuXCI6Y2FzZVwic3RyaW5nXCI6Y2FzZVwic3ltYm9sXCI6Y2FzZVwidm9pZFwiOmNhc2VcIm9iamVjdFwiOlhyKHIsaSxyLmVzY2FwZWRUZXh0KX19ZnVuY3Rpb24gb00ocil7QWU+PTEmJnIuZXNjYXBlZFRleHQ9PT1cIk9iamVjdFwiJiYoZXI8ZS5Nb2R1bGVLaW5kLkVTMjAxNXx8ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTKSYmWHIocixlLkRpYWdub3N0aWNzLkNsYXNzX25hbWVfY2Fubm90X2JlX09iamVjdF93aGVuX3RhcmdldGluZ19FUzVfd2l0aF9tb2R1bGVfMCxlLk1vZHVsZUtpbmRbZXJdKX1mdW5jdGlvbiBzTShyKXt2YXIgaT1lLmZpbHRlcihlLmdldEpTRG9jVGFncyhyKSxlLmlzSlNEb2NQYXJhbWV0ZXJUYWcpO2lmKCEhZS5sZW5ndGgoaSkpe3ZhciB0PWUuaXNJbkpTRmlsZShyKSxvPW5ldyBlLlNldCxzPW5ldyBlLlNldDtlLmZvckVhY2goci5wYXJhbWV0ZXJzLGZ1bmN0aW9uKHosbWUpe3ZhciBNZT16Lm5hbWU7ZS5pc0lkZW50aWZpZXIoTWUpJiZvLmFkZChNZS5lc2NhcGVkVGV4dCksZS5pc0JpbmRpbmdQYXR0ZXJuKE1lKSYmcy5hZGQobWUpfSk7dmFyIHU9R20ocik7aWYodSl7dmFyIGg9ZS5sYXN0T3JVbmRlZmluZWQoaSk7dCYmaCYmZS5pc0lkZW50aWZpZXIoaC5uYW1lKSYmaC50eXBlRXhwcmVzc2lvbiYmaC50eXBlRXhwcmVzc2lvbi50eXBlJiYhby5oYXMoaC5uYW1lLmVzY2FwZWRUZXh0KSYmIVR1KFZhKGgudHlwZUV4cHJlc3Npb24udHlwZSkpJiZYcihoLm5hbWUsZS5EaWFnbm9zdGljcy5KU0RvY19wYXJhbV90YWdfaGFzX25hbWVfMF9idXRfdGhlcmVfaXNfbm9fcGFyYW1ldGVyX3dpdGhfdGhhdF9uYW1lX0l0X3dvdWxkX21hdGNoX2FyZ3VtZW50c19pZl9pdF9oYWRfYW5fYXJyYXlfdHlwZSxlLmlkVGV4dChoLm5hbWUpKX1lbHNlIGUuZm9yRWFjaChpLGZ1bmN0aW9uKHosbWUpe3ZhciBNZT16Lm5hbWU7cy5oYXMobWUpfHxlLmlzSWRlbnRpZmllcihNZSkmJm8uaGFzKE1lLmVzY2FwZWRUZXh0KXx8KGUuaXNRdWFsaWZpZWROYW1lKE1lKT90JiZYcihNZSxlLkRpYWdub3N0aWNzLlF1YWxpZmllZF9uYW1lXzBfaXNfbm90X2FsbG93ZWRfd2l0aG91dF9hX2xlYWRpbmdfcGFyYW1fb2JqZWN0XzEsZS5lbnRpdHlOYW1lVG9TdHJpbmcoTWUpLGUuZW50aXR5TmFtZVRvU3RyaW5nKE1lLmxlZnQpKTpJYyh0LE1lLGUuRGlhZ25vc3RpY3MuSlNEb2NfcGFyYW1fdGFnX2hhc19uYW1lXzBfYnV0X3RoZXJlX2lzX25vX3BhcmFtZXRlcl93aXRoX3RoYXRfbmFtZSxlLmlkVGV4dChNZSkpKX0pfX1mdW5jdGlvbiBqeShyKXt2YXIgaT0hMTtpZihyKWZvcih2YXIgdD0wO3Q8ci5sZW5ndGg7dCsrKXt2YXIgbz1yW3RdOyRrKG8pLGZlKHMobyx0KSl9ZnVuY3Rpb24gcyh1LGgpe3JldHVybiBmdW5jdGlvbigpe3UuZGVmYXVsdD8oaT0hMCxjTSh1LmRlZmF1bHQscixoKSk6aSYmWHIodSxlLkRpYWdub3N0aWNzLlJlcXVpcmVkX3R5cGVfcGFyYW1ldGVyc19tYXlfbm90X2ZvbGxvd19vcHRpb25hbF90eXBlX3BhcmFtZXRlcnMpO2Zvcih2YXIgej0wO3o8aDt6Kyspclt6XS5zeW1ib2w9PT11LnN5bWJvbCYmWHIodS5uYW1lLGUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMCxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHUubmFtZSkpfX19ZnVuY3Rpb24gY00ocixpLHQpe28ocik7ZnVuY3Rpb24gbyhzKXtpZihzLmtpbmQ9PT0xNzgpe3ZhciB1PXR5KHMpO2lmKHUuZmxhZ3MmMjYyMTQ0KWZvcih2YXIgaD10O2g8aS5sZW5ndGg7aCsrKXUuc3ltYm9sPT09RXQoaVtoXSkmJlhyKHMsZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcl9kZWZhdWx0c19jYW5fb25seV9yZWZlcmVuY2VfcHJldmlvdXNseV9kZWNsYXJlZF90eXBlX3BhcmFtZXRlcnMpfWUuZm9yRWFjaENoaWxkKHMsbyl9fWZ1bmN0aW9uIE82KHIpe2lmKCEoci5kZWNsYXJhdGlvbnMmJnIuZGVjbGFyYXRpb25zLmxlbmd0aD09PTEpKXt2YXIgaT1BYShyKTtpZighaS50eXBlUGFyYW1ldGVyc0NoZWNrZWQpe2kudHlwZVBhcmFtZXRlcnNDaGVja2VkPSEwO3ZhciB0PWdNKHIpO2lmKCF0fHx0Lmxlbmd0aDw9MSlyZXR1cm47dmFyIG89Z28ocik7aWYoIUY2KHQsby5sb2NhbFR5cGVQYXJhbWV0ZXJzLGUuZ2V0RWZmZWN0aXZlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9ucykpZm9yKHZhciBzPXRuKHIpLHU9MCxoPXQ7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07WHIoei5uYW1lLGUuRGlhZ25vc3RpY3MuQWxsX2RlY2xhcmF0aW9uc19vZl8wX211c3RfaGF2ZV9pZGVudGljYWxfdHlwZV9wYXJhbWV0ZXJzLHMpfX19fWZ1bmN0aW9uIEY2KHIsaSx0KXtmb3IodmFyIG89ZS5sZW5ndGgoaSkscz1VbChpKSx1PTAsaD1yO3U8aC5sZW5ndGg7dSsrKXt2YXIgej1oW3VdLG1lPXQoeiksTWU9bWUubGVuZ3RoO2lmKE1lPHN8fE1lPm8pcmV0dXJuITE7Zm9yKHZhciAkZT0wOyRlPE1lOyRlKyspe3ZhciB0cj1tZVskZV0sZHI9aVskZV07aWYodHIubmFtZS5lc2NhcGVkVGV4dCE9PWRyLnN5bWJvbC5lc2NhcGVkTmFtZSlyZXR1cm4hMTt2YXIgRHI9ZS5nZXRFZmZlY3RpdmVDb25zdHJhaW50T2ZUeXBlUGFyYW1ldGVyKHRyKSxRcj1EciYmVmEoRHIpLGxpPVRjKGRyKTtpZihRciYmbGkmJiF3ZihRcixsaSkpcmV0dXJuITE7dmFyIFRpPXRyLmRlZmF1bHQmJlZhKHRyLmRlZmF1bHQpLENpPURfKGRyKTtpZihUaSYmQ2kmJiF3ZihUaSxDaSkpcmV0dXJuITF9fXJldHVybiEwfWZ1bmN0aW9uIHVNKHIpe3JldHVybiBNNihyKSx4bShyKSxKdChFdChyKSl9ZnVuY3Rpb24gbE0ocil7ZS5mb3JFYWNoKHIubWVtYmVycyxpbyksQV8ocil9ZnVuY3Rpb24gZk0ocil7ZS5zb21lKHIuZGVjb3JhdG9ycykmJmUuc29tZShyLm1lbWJlcnMsZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzU3RhdGljTW9kaWZpZXIoaSkmJmUuaXNQcml2YXRlSWRlbnRpZmllckNsYXNzRWxlbWVudERlY2xhcmF0aW9uKGkpfSkmJlR0KHIuZGVjb3JhdG9yc1swXSxlLkRpYWdub3N0aWNzLkNsYXNzX2RlY29yYXRvcnNfY2FuX3RfYmVfdXNlZF93aXRoX3N0YXRpY19wcml2YXRlX2lkZW50aWZpZXJfQ29uc2lkZXJfcmVtb3ZpbmdfdGhlX2V4cGVyaW1lbnRhbF9kZWNvcmF0b3IpLCFyLm5hbWUmJiFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHIsNTEyKSYmSHMocixlLkRpYWdub3N0aWNzLkFfY2xhc3NfZGVjbGFyYXRpb25fd2l0aG91dF90aGVfZGVmYXVsdF9tb2RpZmllcl9tdXN0X2hhdmVfYV9uYW1lKSxNNihyKSxlLmZvckVhY2goci5tZW1iZXJzLGlvKSxBXyhyKX1mdW5jdGlvbiBNNihyKXtLOShyKSxGeShyKSxTbShyLHIubmFtZSksankoZS5nZXRFZmZlY3RpdmVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25zKHIpKSxidihyKTt2YXIgaT1FdChyKSx0PWdvKGkpLG89UmModCkscz1KdChpKTtPNihpKSxPMChpKSxNTyhyKTt2YXIgdT0hIShyLmZsYWdzJjE2Nzc3MjE2KTt1fHxMTyhyKTt2YXIgaD1lLmdldEVmZmVjdGl2ZUJhc2VUeXBlTm9kZShyKTtpZihoKXtlLmZvckVhY2goaC50eXBlQXJndW1lbnRzLGlvKSxBZTwyJiZmYyhoLnBhcmVudCwxKTt2YXIgej1lLmdldENsYXNzRXh0ZW5kc0hlcml0YWdlRWxlbWVudChyKTt6JiZ6IT09aCYmeW4oei5leHByZXNzaW9uKTt2YXIgbWU9UWModCk7bWUubGVuZ3RoJiZmZShmdW5jdGlvbigpe3ZhciBRcj1tZVswXSxsaT1CbCh0KSxUaT0kcyhsaSk7aWYocE0oVGksaCksaW8oaC5leHByZXNzaW9uKSxlLnNvbWUoaC50eXBlQXJndW1lbnRzKSl7ZS5mb3JFYWNoKGgudHlwZUFyZ3VtZW50cyxpbyk7Zm9yKHZhciBDaT0wLCRpPU1tKFRpLGgudHlwZUFyZ3VtZW50cyxoKTtDaTwkaS5sZW5ndGg7Q2krKyl7dmFyIFppPSRpW0NpXTtpZighbjYoaCxaaS50eXBlUGFyYW1ldGVycykpYnJlYWt9fXZhciBxdD1SYyhRcix0LnRoaXNUeXBlKTtpZih6YyhvLHF0LHZvaWQgMCk/emMocyxfRShUaSksci5uYW1lfHxyLGUuRGlhZ25vc3RpY3MuQ2xhc3Nfc3RhdGljX3NpZGVfMF9pbmNvcnJlY3RseV9leHRlbmRzX2Jhc2VfY2xhc3Nfc3RhdGljX3NpZGVfMSk6QjYocixvLHF0LGUuRGlhZ25vc3RpY3MuQ2xhc3NfMF9pbmNvcnJlY3RseV9leHRlbmRzX2Jhc2VfY2xhc3NfMSksbGkuZmxhZ3MmODY1MDc1MilpZighV2QocykpWHIoci5uYW1lfHxyLGUuRGlhZ25vc3RpY3MuQV9taXhpbl9jbGFzc19tdXN0X2hhdmVfYV9jb25zdHJ1Y3Rvcl93aXRoX2Ffc2luZ2xlX3Jlc3RfcGFyYW1ldGVyX29mX3R5cGVfYW55KTtlbHNle3ZhciBOdD1vdChsaSwxKTtOdC5zb21lKGZ1bmN0aW9uKGNhKXtyZXR1cm4gY2EuZmxhZ3MmNH0pJiYhZS5oYXNTeW50YWN0aWNNb2RpZmllcihyLDEyOCkmJlhyKHIubmFtZXx8cixlLkRpYWdub3N0aWNzLkFfbWl4aW5fY2xhc3NfdGhhdF9leHRlbmRzX2Zyb21fYV90eXBlX3ZhcmlhYmxlX2NvbnRhaW5pbmdfYW5fYWJzdHJhY3RfY29uc3RydWN0X3NpZ25hdHVyZV9tdXN0X2Fsc29fYmVfZGVjbGFyZWRfYWJzdHJhY3QpfWlmKCEoVGkuc3ltYm9sJiZUaS5zeW1ib2wuZmxhZ3MmMzIpJiYhKGxpLmZsYWdzJjg2NTA3NTIpKXt2YXIgUmE9WGcoVGksaC50eXBlQXJndW1lbnRzLGgpO2UuZm9yRWFjaChSYSxmdW5jdGlvbihjYSl7cmV0dXJuIVNsKGNhLmRlY2xhcmF0aW9uKSYmIXdmKHlvKGNhKSxRcil9KSYmWHIoaC5leHByZXNzaW9uLGUuRGlhZ25vc3RpY3MuQmFzZV9jb25zdHJ1Y3RvcnNfbXVzdF9hbGxfaGF2ZV90aGVfc2FtZV9yZXR1cm5fdHlwZSl9bU0odCxRcil9KX1fTShyLHQsbyxzKTt2YXIgTWU9ZS5nZXRFZmZlY3RpdmVJbXBsZW1lbnRzVHlwZU5vZGVzKHIpO2lmKE1lKWZvcih2YXIgJGU9MCx0cj1NZTskZTx0ci5sZW5ndGg7JGUrKyl7dmFyIGRyPXRyWyRlXTsoIWUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbihkci5leHByZXNzaW9uKXx8ZS5pc09wdGlvbmFsQ2hhaW4oZHIuZXhwcmVzc2lvbikpJiZYcihkci5leHByZXNzaW9uLGUuRGlhZ25vc3RpY3MuQV9jbGFzc19jYW5fb25seV9pbXBsZW1lbnRfYW5faWRlbnRpZmllcl9TbGFzaHF1YWxpZmllZF9uYW1lX3dpdGhfb3B0aW9uYWxfdHlwZV9hcmd1bWVudHMpLHZTKGRyKSxmZShEcihkcikpfWZlKGZ1bmN0aW9uKCl7SjAodCxpKSxKMChzLGksITApLGRTKHIpLGhNKHIpfSk7ZnVuY3Rpb24gRHIoUXIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBsaT1idShWYShRcikpO2lmKCFubihsaSkpaWYoZmYobGkpKXt2YXIgVGk9bGkuc3ltYm9sJiZsaS5zeW1ib2wuZmxhZ3MmMzI/ZS5EaWFnbm9zdGljcy5DbGFzc18wX2luY29ycmVjdGx5X2ltcGxlbWVudHNfY2xhc3NfMV9EaWRfeW91X21lYW5fdG9fZXh0ZW5kXzFfYW5kX2luaGVyaXRfaXRzX21lbWJlcnNfYXNfYV9zdWJjbGFzczplLkRpYWdub3N0aWNzLkNsYXNzXzBfaW5jb3JyZWN0bHlfaW1wbGVtZW50c19pbnRlcmZhY2VfMSxDaT1SYyhsaSx0LnRoaXNUeXBlKTt6YyhvLENpLHZvaWQgMCl8fEI2KHIsbyxDaSxUaSl9ZWxzZSBYcihRcixlLkRpYWdub3N0aWNzLkFfY2xhc3NfY2FuX29ubHlfaW1wbGVtZW50X2FuX29iamVjdF90eXBlX29yX2ludGVyc2VjdGlvbl9vZl9vYmplY3RfdHlwZXNfd2l0aF9zdGF0aWNhbGx5X2tub3duX21lbWJlcnMpfX19ZnVuY3Rpb24gX00ocixpLHQsbyl7Zm9yKHZhciBzPWUuZ2V0RWZmZWN0aXZlQmFzZVR5cGVOb2RlKHIpLHU9cyYmUWMoaSksaD11IT1udWxsJiZ1Lmxlbmd0aD9SYyhlLmZpcnN0KHUpLGkudGhpc1R5cGUpOnZvaWQgMCx6PUJsKGkpLG1lPWZ1bmN0aW9uKGRyKXtpZihlLmhhc0FtYmllbnRNb2RpZmllcihkcikpcmV0dXJuXCJjb250aW51ZVwiO2UuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKGRyKSYmZS5mb3JFYWNoKGRyLnBhcmFtZXRlcnMsZnVuY3Rpb24oRHIpe2UuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKERyLGRyKSYmTDYocixvLHosaCxpLHQsRHIsITApfSksTDYocixvLHosaCxpLHQsZHIsITEpfSxNZT0wLCRlPXIubWVtYmVycztNZTwkZS5sZW5ndGg7TWUrKyl7dmFyIHRyPSRlW01lXTttZSh0cil9fWZ1bmN0aW9uIEw2KHIsaSx0LG8scyx1LGgseixtZSl7bWU9PT12b2lkIDAmJihtZT0hMCk7dmFyIE1lPWgubmFtZSYmZWwoaC5uYW1lKXx8ZWwoaCk7cmV0dXJuIE1lP1I2KHIsaSx0LG8scyx1LGUuaGFzT3ZlcnJpZGVNb2RpZmllcihoKSxlLmhhc0Fic3RyYWN0TW9kaWZpZXIoaCksZS5pc1N0YXRpYyhoKSx6LGUuc3ltYm9sTmFtZShNZSksbWU/aDp2b2lkIDApOjB9ZnVuY3Rpb24gUjYocixpLHQsbyxzLHUsaCx6LG1lLE1lLCRlLHRyKXt2YXIgZHI9ZS5pc0luSlNGaWxlKHIpLERyPSEhKHIuZmxhZ3MmMTY3NzcyMTYpO2lmKG8mJihofHx5ZS5ub0ltcGxpY2l0T3ZlcnJpZGUpKXt2YXIgUXI9ZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoJGUpLGxpPW1lP2k6dSxUaT1tZT90Om8sQ2k9YmkobGksUXIpLCRpPWJpKFRpLFFyKSxaaT1PdChvKTtpZihDaSYmISRpJiZoKXtpZih0cil7dmFyIHF0PVpDKCRlLFRpKTtxdD9Ycih0cixkcj9lLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wX0RpZF95b3VfbWVhbl8xOmUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdF9pc19ub3RfZGVjbGFyZWRfaW5fdGhlX2Jhc2VfY2xhc3NfMF9EaWRfeW91X21lYW5fMSxaaSx0bihxdCkpOlhyKHRyLGRyP2UuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzA6ZS5EaWFnbm9zdGljcy5UaGlzX21lbWJlcl9jYW5ub3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wLFppKX1yZXR1cm4gMn1lbHNlIGlmKENpJiYoJGk9PW51bGw/dm9pZCAwOiRpLmRlY2xhcmF0aW9ucykmJnllLm5vSW1wbGljaXRPdmVycmlkZSYmIURyKXt2YXIgTnQ9ZS5zb21lKCRpLmRlY2xhcmF0aW9ucyxlLmhhc0Fic3RyYWN0TW9kaWZpZXIpO2lmKGgpcmV0dXJuIDA7aWYoTnQpe2lmKHomJk50KXJldHVybiB0ciYmWHIodHIsZS5EaWFnbm9zdGljcy5UaGlzX21lbWJlcl9tdXN0X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdF9vdmVycmlkZXNfYW5fYWJzdHJhY3RfbWV0aG9kX3RoYXRfaXNfZGVjbGFyZWRfaW5fdGhlX2Jhc2VfY2xhc3NfMCxaaSksMX1lbHNle2lmKHRyKXt2YXIgUmE9TWU/ZHI/ZS5EaWFnbm9zdGljcy5UaGlzX3BhcmFtZXRlcl9wcm9wZXJ0eV9tdXN0X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzA6ZS5EaWFnbm9zdGljcy5UaGlzX3BhcmFtZXRlcl9wcm9wZXJ0eV9tdXN0X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdF9vdmVycmlkZXNfYV9tZW1iZXJfaW5fYmFzZV9jbGFzc18wOmRyP2UuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0X292ZXJyaWRlc19hX21lbWJlcl9pbl90aGVfYmFzZV9jbGFzc18wOmUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzA7WHIodHIsUmEsWmkpfXJldHVybiAxfX19ZWxzZSBpZihoKXtpZih0cil7dmFyIGNhPU90KHMpO1hyKHRyLGRyP2UuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfY2xhc3NfMF9kb2VzX25vdF9leHRlbmRfYW5vdGhlcl9jbGFzczplLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfY2xhc3NfMF9kb2VzX25vdF9leHRlbmRfYW5vdGhlcl9jbGFzcyxjYSl9cmV0dXJuIDJ9cmV0dXJuIDB9ZnVuY3Rpb24gQjYocixpLHQsbyl7Zm9yKHZhciBzPSExLHU9ZnVuY3Rpb24oTWUpe2lmKGUuaXNTdGF0aWMoTWUpKXJldHVyblwiY29udGludWVcIjt2YXIgJGU9TWUubmFtZSYmZWwoTWUubmFtZSl8fGVsKE1lKTtpZigkZSl7dmFyIHRyPWJpKGksJGUuZXNjYXBlZE5hbWUpLGRyPWJpKHQsJGUuZXNjYXBlZE5hbWUpO2lmKHRyJiZkcil7dmFyIERyPWZ1bmN0aW9uKCl7cmV0dXJuIGUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbl90eXBlXzFfaXNfbm90X2Fzc2lnbmFibGVfdG9fdGhlX3NhbWVfcHJvcGVydHlfaW5fYmFzZV90eXBlXzIsdG4oJGUpLE90KGkpLE90KHQpKX07emMoSnQodHIpLEp0KGRyKSxNZS5uYW1lfHxNZSx2b2lkIDAsRHIpfHwocz0hMCl9fX0saD0wLHo9ci5tZW1iZXJzO2g8ei5sZW5ndGg7aCsrKXt2YXIgbWU9eltoXTt1KG1lKX1zfHx6YyhpLHQsci5uYW1lfHxyLG8pfWZ1bmN0aW9uIHBNKHIsaSl7dmFyIHQ9b3QociwxKTtpZih0Lmxlbmd0aCl7dmFyIG89dFswXS5kZWNsYXJhdGlvbjtpZihvJiZlLmhhc0VmZmVjdGl2ZU1vZGlmaWVyKG8sOCkpe3ZhciBzPWUuZ2V0Q2xhc3NMaWtlRGVjbGFyYXRpb25PZlN5bWJvbChyLnN5bWJvbCk7TVMoaSxzKXx8WHIoaSxlLkRpYWdub3N0aWNzLkNhbm5vdF9leHRlbmRfYV9jbGFzc18wX0NsYXNzX2NvbnN0cnVjdG9yX2lzX21hcmtlZF9hc19wcml2YXRlLGNsKHIuc3ltYm9sKSl9fX1mdW5jdGlvbiBkTShyLGkpe2lmKCFpLm5hbWUpcmV0dXJuIDA7dmFyIHQ9RXQociksbz1nbyh0KSxzPVJjKG8pLHU9SnQodCksaD1lLmdldEVmZmVjdGl2ZUJhc2VUeXBlTm9kZShyKSx6PWgmJlFjKG8pLG1lPXohPW51bGwmJnoubGVuZ3RoP1JjKGUuZmlyc3Qoeiksby50aGlzVHlwZSk6dm9pZCAwLE1lPUJsKG8pLCRlPWkucGFyZW50P2UuaGFzT3ZlcnJpZGVNb2RpZmllcihpKTplLmhhc1N5bnRhY3RpY01vZGlmaWVyKGksMTYzODQpLHRyPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoZS5nZXRUZXh0T2ZQcm9wZXJ0eU5hbWUoaS5uYW1lKSk7cmV0dXJuIFI2KHIsdSxNZSxtZSxvLHMsJGUsZS5oYXNBYnN0cmFjdE1vZGlmaWVyKGkpLGUuaXNTdGF0aWMoaSksITEsdHIpfWZ1bmN0aW9uIGpnKHIpe3JldHVybiBlLmdldENoZWNrRmxhZ3MocikmMT9yLnRhcmdldDpyfWZ1bmN0aW9uIGdNKHIpe3JldHVybiBlLmZpbHRlcihyLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihpKXtyZXR1cm4gaS5raW5kPT09MjU3fHxpLmtpbmQ9PT0yNTh9KX1mdW5jdGlvbiBtTShyLGkpe3ZhciB0LG8scz11byhpKTtlOmZvcih2YXIgdT0wLGg9czt1PGgubGVuZ3RoO3UrKyl7dmFyIHo9aFt1XSxtZT1qZyh6KTtpZighKG1lLmZsYWdzJjQxOTQzMDQpKXt2YXIgTWU9aF8ocixtZS5lc2NhcGVkTmFtZSk7aWYoISFNZSl7dmFyICRlPWpnKE1lKSx0cj1lLmdldERlY2xhcmF0aW9uTW9kaWZpZXJGbGFnc0Zyb21TeW1ib2wobWUpO2lmKGUuRGVidWcuYXNzZXJ0KCEhJGUsXCJkZXJpdmVkIHNob3VsZCBwb2ludCB0byBzb21ldGhpbmcsIGV2ZW4gaWYgaXQgaXMgdGhlIGJhc2UgY2xhc3MnIGRlY2xhcmF0aW9uLlwiKSwkZT09PW1lKXt2YXIgZHI9ZS5nZXRDbGFzc0xpa2VEZWNsYXJhdGlvbk9mU3ltYm9sKHIuc3ltYm9sKTtpZih0ciYxMjgmJighZHJ8fCFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKGRyLDEyOCkpKXtmb3IodmFyIERyPTAsUXI9UWMocik7RHI8UXIubGVuZ3RoO0RyKyspe3ZhciBsaT1RcltEcl07aWYobGkhPT1pKXt2YXIgVGk9aF8obGksbWUuZXNjYXBlZE5hbWUpLENpPVRpJiZqZyhUaSk7aWYoQ2kmJkNpIT09bWUpY29udGludWUgZX19ZHIua2luZD09PTIyNj9YcihkcixlLkRpYWdub3N0aWNzLk5vbl9hYnN0cmFjdF9jbGFzc19leHByZXNzaW9uX2RvZXNfbm90X2ltcGxlbWVudF9pbmhlcml0ZWRfYWJzdHJhY3RfbWVtYmVyXzBfZnJvbV9jbGFzc18xLHRuKHopLE90KGkpKTpYcihkcixlLkRpYWdub3N0aWNzLk5vbl9hYnN0cmFjdF9jbGFzc18wX2RvZXNfbm90X2ltcGxlbWVudF9pbmhlcml0ZWRfYWJzdHJhY3RfbWVtYmVyXzFfZnJvbV9jbGFzc18yLE90KHIpLHRuKHopLE90KGkpKX19ZWxzZXt2YXIgJGk9ZS5nZXREZWNsYXJhdGlvbk1vZGlmaWVyRmxhZ3NGcm9tU3ltYm9sKCRlKTtpZih0ciY4fHwkaSY4KWNvbnRpbnVlO3ZhciBaaT12b2lkIDAscXQ9bWUuZmxhZ3MmOTgzMDgsTnQ9JGUuZmxhZ3MmOTgzMDg7aWYocXQmJk50KXtpZih0ciYxMjgmJiEobWUudmFsdWVEZWNsYXJhdGlvbiYmZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24obWUudmFsdWVEZWNsYXJhdGlvbikmJm1lLnZhbHVlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIpfHxtZS52YWx1ZURlY2xhcmF0aW9uJiZtZS52YWx1ZURlY2xhcmF0aW9uLnBhcmVudC5raW5kPT09MjU4fHwkZS52YWx1ZURlY2xhcmF0aW9uJiZlLmlzQmluYXJ5RXhwcmVzc2lvbigkZS52YWx1ZURlY2xhcmF0aW9uKSljb250aW51ZTt2YXIgUmE9cXQhPT00JiZOdD09PTQsY2E9cXQ9PT00JiZOdCE9PTQ7aWYoUmF8fGNhKXt2YXIgU249UmE/ZS5EaWFnbm9zdGljcy5fMF9pc19kZWZpbmVkX2FzX2FuX2FjY2Vzc29yX2luX2NsYXNzXzFfYnV0X2lzX292ZXJyaWRkZW5faGVyZV9pbl8yX2FzX2FuX2luc3RhbmNlX3Byb3BlcnR5OmUuRGlhZ25vc3RpY3MuXzBfaXNfZGVmaW5lZF9hc19hX3Byb3BlcnR5X2luX2NsYXNzXzFfYnV0X2lzX292ZXJyaWRkZW5faGVyZV9pbl8yX2FzX2FuX2FjY2Vzc29yO1hyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oJGUudmFsdWVEZWNsYXJhdGlvbil8fCRlLnZhbHVlRGVjbGFyYXRpb24sU24sdG4obWUpLE90KGkpLE90KHIpKX1lbHNlIGlmKGlyKXt2YXIgamE9KHQ9JGUuZGVjbGFyYXRpb25zKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZmluZChmdW5jdGlvbihFbyl7cmV0dXJuIEVvLmtpbmQ9PT0xNjcmJiFFby5pbml0aWFsaXplcn0pO2lmKGphJiYhKCRlLmZsYWdzJjMzNTU0NDMyKSYmISh0ciYxMjgpJiYhKCRpJjEyOCkmJiEoISgobz0kZS5kZWNsYXJhdGlvbnMpPT09bnVsbHx8bz09PXZvaWQgMCkmJm8uc29tZShmdW5jdGlvbihFbyl7cmV0dXJuISEoRW8uZmxhZ3MmMTY3NzcyMTYpfSkpKXt2YXIgRm49VGYoZS5nZXRDbGFzc0xpa2VEZWNsYXJhdGlvbk9mU3ltYm9sKHIuc3ltYm9sKSksd249amEubmFtZTtpZihqYS5leGNsYW1hdGlvblRva2VufHwhRm58fCFlLmlzSWRlbnRpZmllcih3bil8fCFZZXx8IWo2KHduLHIsRm4pKXt2YXIgVG49ZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX3dpbGxfb3ZlcndyaXRlX3RoZV9iYXNlX3Byb3BlcnR5X2luXzFfSWZfdGhpc19pc19pbnRlbnRpb25hbF9hZGRfYW5faW5pdGlhbGl6ZXJfT3RoZXJ3aXNlX2FkZF9hX2RlY2xhcmVfbW9kaWZpZXJfb3JfcmVtb3ZlX3RoZV9yZWR1bmRhbnRfZGVjbGFyYXRpb247WHIoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbigkZS52YWx1ZURlY2xhcmF0aW9uKXx8JGUudmFsdWVEZWNsYXJhdGlvbixUbix0bihtZSksT3QoaSkpfX19Y29udGludWV9ZWxzZSBpZihCYihtZSkpe2lmKEJiKCRlKXx8JGUuZmxhZ3MmNCljb250aW51ZTtlLkRlYnVnLmFzc2VydCghISgkZS5mbGFncyY5ODMwNCkpLFppPWUuRGlhZ25vc3RpY3MuQ2xhc3NfMF9kZWZpbmVzX2luc3RhbmNlX21lbWJlcl9mdW5jdGlvbl8xX2J1dF9leHRlbmRlZF9jbGFzc18yX2RlZmluZXNfaXRfYXNfaW5zdGFuY2VfbWVtYmVyX2FjY2Vzc29yfWVsc2UgbWUuZmxhZ3MmOTgzMDQ/Wmk9ZS5EaWFnbm9zdGljcy5DbGFzc18wX2RlZmluZXNfaW5zdGFuY2VfbWVtYmVyX2FjY2Vzc29yXzFfYnV0X2V4dGVuZGVkX2NsYXNzXzJfZGVmaW5lc19pdF9hc19pbnN0YW5jZV9tZW1iZXJfZnVuY3Rpb246Wmk9ZS5EaWFnbm9zdGljcy5DbGFzc18wX2RlZmluZXNfaW5zdGFuY2VfbWVtYmVyX3Byb3BlcnR5XzFfYnV0X2V4dGVuZGVkX2NsYXNzXzJfZGVmaW5lc19pdF9hc19pbnN0YW5jZV9tZW1iZXJfZnVuY3Rpb247WHIoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbigkZS52YWx1ZURlY2xhcmF0aW9uKXx8JGUudmFsdWVEZWNsYXJhdGlvbixaaSxPdChpKSx0bihtZSksT3QocikpfX19fX1mdW5jdGlvbiB2TShyLGksdCl7aWYoIWUubGVuZ3RoKGkpKXJldHVybiB0O3ZhciBvPW5ldyBlLk1hcDtlLmZvckVhY2godCxmdW5jdGlvbihkcil7by5zZXQoZHIuZXNjYXBlZE5hbWUsZHIpfSk7Zm9yKHZhciBzPTAsdT1pO3M8dS5sZW5ndGg7cysrKWZvcih2YXIgaD11W3NdLHo9dW8oUmMoaCxyLnRoaXNUeXBlKSksbWU9MCxNZT16O21lPE1lLmxlbmd0aDttZSsrKXt2YXIgJGU9TWVbbWVdLHRyPW8uZ2V0KCRlLmVzY2FwZWROYW1lKTt0ciYmJGUucGFyZW50PT09dHIucGFyZW50JiZvLmRlbGV0ZSgkZS5lc2NhcGVkTmFtZSl9cmV0dXJuIGUuYXJyYXlGcm9tKG8udmFsdWVzKCkpfWZ1bmN0aW9uIHlNKHIsaSl7dmFyIHQ9UWMocik7aWYodC5sZW5ndGg8MilyZXR1cm4hMDt2YXIgbz1uZXcgZS5NYXA7ZS5mb3JFYWNoKEx2KHIpLmRlY2xhcmVkUHJvcGVydGllcyxmdW5jdGlvbihDaSl7by5zZXQoQ2kuZXNjYXBlZE5hbWUse3Byb3A6Q2ksY29udGFpbmluZ1R5cGU6cn0pfSk7Zm9yKHZhciBzPSEwLHU9MCxoPXQ7dTxoLmxlbmd0aDt1KyspZm9yKHZhciB6PWhbdV0sbWU9dW8oUmMoeixyLnRoaXNUeXBlKSksTWU9MCwkZT1tZTtNZTwkZS5sZW5ndGg7TWUrKyl7dmFyIHRyPSRlW01lXSxkcj1vLmdldCh0ci5lc2NhcGVkTmFtZSk7aWYoIWRyKW8uc2V0KHRyLmVzY2FwZWROYW1lLHtwcm9wOnRyLGNvbnRhaW5pbmdUeXBlOnp9KTtlbHNle3ZhciBEcj1kci5jb250YWluaW5nVHlwZSE9PXI7aWYoRHImJiF5dyhkci5wcm9wLHRyKSl7cz0hMTt2YXIgUXI9T3QoZHIuY29udGFpbmluZ1R5cGUpLGxpPU90KHopLFRpPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLGUuRGlhZ25vc3RpY3MuTmFtZWRfcHJvcGVydHlfMF9vZl90eXBlc18xX2FuZF8yX2FyZV9ub3RfaWRlbnRpY2FsLHRuKHRyKSxRcixsaSk7VGk9ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyhUaSxlLkRpYWdub3N0aWNzLkludGVyZmFjZV8wX2Nhbm5vdF9zaW11bHRhbmVvdXNseV9leHRlbmRfdHlwZXNfMV9hbmRfMixPdChyKSxRcixsaSkscm4uYWRkKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVGcm9tTWVzc2FnZUNoYWluKGksVGkpKX19fXJldHVybiBzfWZ1bmN0aW9uIGhNKHIpe2lmKCEoIVllfHwhTmV8fHIuZmxhZ3MmMTY3NzcyMTYpKWZvcih2YXIgaT1UZihyKSx0PTAsbz1yLm1lbWJlcnM7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aWYoIShlLmdldEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MocykmMikmJiFlLmlzU3RhdGljKHMpJiZKNihzKSl7dmFyIHU9cy5uYW1lO2lmKGUuaXNJZGVudGlmaWVyKHUpfHxlLmlzUHJpdmF0ZUlkZW50aWZpZXIodSl8fGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZSh1KSl7dmFyIGg9SnQoRXQocykpO2guZmxhZ3MmM3x8anUoaCkmMzI3Njh8fCghaXx8IWo2KHUsaCxpKSkmJlhyKHMubmFtZSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaGFzX25vX2luaXRpYWxpemVyX2FuZF9pc19ub3RfZGVmaW5pdGVseV9hc3NpZ25lZF9pbl90aGVfY29uc3RydWN0b3IsZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyh1KSl9fX19ZnVuY3Rpb24gSjYocil7cmV0dXJuIHIua2luZD09PTE2NyYmIWUuaGFzQWJzdHJhY3RNb2RpZmllcihyKSYmIXIuZXhjbGFtYXRpb25Ub2tlbiYmIXIuaW5pdGlhbGl6ZXJ9ZnVuY3Rpb24gRE0ocixpLHQsbyxzKXtmb3IodmFyIHU9MCxoPXQ7dTxoLmxlbmd0aDt1Kyspe3ZhciB6PWhbdV07aWYoei5wb3M+PW8mJnoucG9zPD1zKXt2YXIgbWU9ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLmZhY3RvcnkuY3JlYXRlVGhpcygpLHIpO2Uuc2V0UGFyZW50KG1lLmV4cHJlc3Npb24sbWUpLGUuc2V0UGFyZW50KG1lLHopLG1lLmZsb3dOb2RlPXoucmV0dXJuRmxvd05vZGU7dmFyIE1lPXVwKG1lLGksaV8oaSkpO2lmKCEoanUoTWUpJjMyNzY4KSlyZXR1cm4hMH19cmV0dXJuITF9ZnVuY3Rpb24gajYocixpLHQpe3ZhciBvPWUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShyKT9lLmZhY3RvcnkuY3JlYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZVRoaXMoKSxyLmV4cHJlc3Npb24pOmUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZVRoaXMoKSxyKTtlLnNldFBhcmVudChvLmV4cHJlc3Npb24sbyksZS5zZXRQYXJlbnQobyx0KSxvLmZsb3dOb2RlPXQucmV0dXJuRmxvd05vZGU7dmFyIHM9dXAobyxpLGlfKGkpKTtyZXR1cm4hKGp1KHMpJjMyNzY4KX1mdW5jdGlvbiBiTShyKXtGZihyKXx8Wjkociksankoci50eXBlUGFyYW1ldGVycyksZmUoZnVuY3Rpb24oKXtUbShyLm5hbWUsZS5EaWFnbm9zdGljcy5JbnRlcmZhY2VfbmFtZV9jYW5ub3RfYmVfMCksYnYocik7dmFyIGk9RXQocik7TzYoaSk7dmFyIHQ9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChpLDI1OCk7aWYocj09PXQpe3ZhciBvPWdvKGkpLHM9UmMobyk7aWYoeU0obyxyLm5hbWUpKXtmb3IodmFyIHU9MCxoPVFjKG8pO3U8aC5sZW5ndGg7dSsrKXt2YXIgej1oW3VdO3pjKHMsUmMoeixvLnRoaXNUeXBlKSxyLm5hbWUsZS5EaWFnbm9zdGljcy5JbnRlcmZhY2VfMF9pbmNvcnJlY3RseV9leHRlbmRzX2ludGVyZmFjZV8xKX1KMChvLGkpfX1yNihyKX0pLGUuZm9yRWFjaChlLmdldEludGVyZmFjZUJhc2VUeXBlTm9kZXMociksZnVuY3Rpb24oaSl7KCFlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24oaS5leHByZXNzaW9uKXx8ZS5pc09wdGlvbmFsQ2hhaW4oaS5leHByZXNzaW9uKSkmJlhyKGkuZXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLkFuX2ludGVyZmFjZV9jYW5fb25seV9leHRlbmRfYW5faWRlbnRpZmllcl9TbGFzaHF1YWxpZmllZF9uYW1lX3dpdGhfb3B0aW9uYWxfdHlwZV9hcmd1bWVudHMpLHZTKGkpfSksZS5mb3JFYWNoKHIubWVtYmVycyxpbyksZmUoZnVuY3Rpb24oKXtkUyhyKSxBXyhyKX0pfWZ1bmN0aW9uIFNNKHIpe0ZmKHIpLFRtKHIubmFtZSxlLkRpYWdub3N0aWNzLlR5cGVfYWxpYXNfbmFtZV9jYW5ub3RfYmVfMCksYnYociksankoci50eXBlUGFyYW1ldGVycyksci50eXBlLmtpbmQ9PT0xMzg/KCF4LmhhcyhyLm5hbWUuZXNjYXBlZFRleHQpfHxlLmxlbmd0aChyLnR5cGVQYXJhbWV0ZXJzKSE9PTEpJiZYcihyLnR5cGUsZS5EaWFnbm9zdGljcy5UaGVfaW50cmluc2ljX2tleXdvcmRfY2FuX29ubHlfYmVfdXNlZF90b19kZWNsYXJlX2NvbXBpbGVyX3Byb3ZpZGVkX2ludHJpbnNpY190eXBlcyk6KGlvKHIudHlwZSksQV8ocikpfWZ1bmN0aW9uIFU2KHIpe3ZhciBpPXZhKHIpO2lmKCEoaS5mbGFncyYxNjM4NCkpe2kuZmxhZ3N8PTE2Mzg0O2Zvcih2YXIgdD0wLG89MCxzPXIubWVtYmVycztvPHMubGVuZ3RoO28rKyl7dmFyIHU9c1tvXSxoPVRNKHUsdCk7dmEodSkuZW51bU1lbWJlclZhbHVlPWgsdD10eXBlb2YgaD09XCJudW1iZXJcIj9oKzE6dm9pZCAwfX19ZnVuY3Rpb24gVE0ocixpKXtpZihlLmlzQ29tcHV0ZWROb25MaXRlcmFsTmFtZShyLm5hbWUpKVhyKHIubmFtZSxlLkRpYWdub3N0aWNzLkNvbXB1dGVkX3Byb3BlcnR5X25hbWVzX2FyZV9ub3RfYWxsb3dlZF9pbl9lbnVtcyk7ZWxzZXt2YXIgdD1lLmdldFRleHRPZlByb3BlcnR5TmFtZShyLm5hbWUpO2UuaXNOdW1lcmljTGl0ZXJhbE5hbWUodCkmJiFlLmlzSW5maW5pdHlPck5hTlN0cmluZyh0KSYmWHIoci5uYW1lLGUuRGlhZ25vc3RpY3MuQW5fZW51bV9tZW1iZXJfY2Fubm90X2hhdmVfYV9udW1lcmljX25hbWUpfWlmKHIuaW5pdGlhbGl6ZXIpcmV0dXJuIHhNKHIpO2lmKCEoci5wYXJlbnQuZmxhZ3MmMTY3NzcyMTYmJiFlLmlzRW51bUNvbnN0KHIucGFyZW50KSYmYXMoRXQoci5wYXJlbnQpKT09PTApKXtpZihpIT09dm9pZCAwKXJldHVybiBpO1hyKHIubmFtZSxlLkRpYWdub3N0aWNzLkVudW1fbWVtYmVyX211c3RfaGF2ZV9pbml0aWFsaXplcil9fWZ1bmN0aW9uIHhNKHIpe3ZhciBpPWFzKEV0KHIucGFyZW50KSksdD1lLmlzRW51bUNvbnN0KHIucGFyZW50KSxvPXIuaW5pdGlhbGl6ZXIscz1pPT09MSYmIXJvKHIpP3ZvaWQgMDpoKG8pO2lmKHMhPT12b2lkIDApdCYmdHlwZW9mIHM9PVwibnVtYmVyXCImJiFpc0Zpbml0ZShzKSYmWHIobyxpc05hTihzKT9lLkRpYWdub3N0aWNzLmNvbnN0X2VudW1fbWVtYmVyX2luaXRpYWxpemVyX3dhc19ldmFsdWF0ZWRfdG9fZGlzYWxsb3dlZF92YWx1ZV9OYU46ZS5EaWFnbm9zdGljcy5jb25zdF9lbnVtX21lbWJlcl9pbml0aWFsaXplcl93YXNfZXZhbHVhdGVkX3RvX2Ffbm9uX2Zpbml0ZV92YWx1ZSk7ZWxzZXtpZihpPT09MSlyZXR1cm4gWHIobyxlLkRpYWdub3N0aWNzLkNvbXB1dGVkX3ZhbHVlc19hcmVfbm90X3Blcm1pdHRlZF9pbl9hbl9lbnVtX3dpdGhfc3RyaW5nX3ZhbHVlZF9tZW1iZXJzKSwwO2lmKHQpWHIobyxlLkRpYWdub3N0aWNzLmNvbnN0X2VudW1fbWVtYmVyX2luaXRpYWxpemVyc19jYW5fb25seV9jb250YWluX2xpdGVyYWxfdmFsdWVzX2FuZF9vdGhlcl9jb21wdXRlZF9lbnVtX3ZhbHVlcyk7ZWxzZSBpZihyLnBhcmVudC5mbGFncyYxNjc3NzIxNilYcihvLGUuRGlhZ25vc3RpY3MuSW5fYW1iaWVudF9lbnVtX2RlY2xhcmF0aW9uc19tZW1iZXJfaW5pdGlhbGl6ZXJfbXVzdF9iZV9jb25zdGFudF9leHByZXNzaW9uKTtlbHNle3ZhciB1PXluKG8pO05zKHUsMjk2KT96Yyh1LGdvKEV0KHIucGFyZW50KSksbyx2b2lkIDApOlhyKG8sZS5EaWFnbm9zdGljcy5Pbmx5X251bWVyaWNfZW51bXNfY2FuX2hhdmVfY29tcHV0ZWRfbWVtYmVyc19idXRfdGhpc19leHByZXNzaW9uX2hhc190eXBlXzBfSWZfeW91X2RvX25vdF9uZWVkX2V4aGF1c3RpdmVuZXNzX2NoZWNrc19jb25zaWRlcl91c2luZ19hbl9vYmplY3RfbGl0ZXJhbF9pbnN0ZWFkLE90KHUpKX19cmV0dXJuIHM7ZnVuY3Rpb24gaChtZSl7c3dpdGNoKG1lLmtpbmQpe2Nhc2UgMjE5OnZhciBNZT1oKG1lLm9wZXJhbmQpO2lmKHR5cGVvZiBNZT09XCJudW1iZXJcIilzd2l0Y2gobWUub3BlcmF0b3Ipe2Nhc2UgMzk6cmV0dXJuIE1lO2Nhc2UgNDA6cmV0dXJuLU1lO2Nhc2UgNTQ6cmV0dXJufk1lfWJyZWFrO2Nhc2UgMjIxOnZhciAkZT1oKG1lLmxlZnQpLHRyPWgobWUucmlnaHQpO2lmKHR5cGVvZiAkZT09XCJudW1iZXJcIiYmdHlwZW9mIHRyPT1cIm51bWJlclwiKXN3aXRjaChtZS5vcGVyYXRvclRva2VuLmtpbmQpe2Nhc2UgNTE6cmV0dXJuICRlfHRyO2Nhc2UgNTA6cmV0dXJuICRlJnRyO2Nhc2UgNDg6cmV0dXJuICRlPj50cjtjYXNlIDQ5OnJldHVybiAkZT4+PnRyO2Nhc2UgNDc6cmV0dXJuICRlPDx0cjtjYXNlIDUyOnJldHVybiAkZV50cjtjYXNlIDQxOnJldHVybiAkZSp0cjtjYXNlIDQzOnJldHVybiAkZS90cjtjYXNlIDM5OnJldHVybiAkZSt0cjtjYXNlIDQwOnJldHVybiAkZS10cjtjYXNlIDQ0OnJldHVybiAkZSV0cjtjYXNlIDQyOnJldHVybiBNYXRoLnBvdygkZSx0cil9ZWxzZSBpZih0eXBlb2YgJGU9PVwic3RyaW5nXCImJnR5cGVvZiB0cj09XCJzdHJpbmdcIiYmbWUub3BlcmF0b3JUb2tlbi5raW5kPT09MzkpcmV0dXJuICRlK3RyO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxNDpyZXR1cm4gbWUudGV4dDtjYXNlIDg6cmV0dXJuIEtTKG1lKSwrbWUudGV4dDtjYXNlIDIxMjpyZXR1cm4gaChtZS5leHByZXNzaW9uKTtjYXNlIDc5OnZhciBkcj1tZTtyZXR1cm4gZS5pc0luZmluaXR5T3JOYU5TdHJpbmcoZHIuZXNjYXBlZFRleHQpPytkci5lc2NhcGVkVGV4dDplLm5vZGVJc01pc3NpbmcobWUpPzA6eihtZSxFdChyLnBhcmVudCksZHIuZXNjYXBlZFRleHQpO2Nhc2UgMjA3OmNhc2UgMjA2OmlmKFBTKG1lKSl7dmFyIERyPUdzKG1lLmV4cHJlc3Npb24pO2lmKERyLnN5bWJvbCYmRHIuc3ltYm9sLmZsYWdzJjM4NCl7dmFyIFFyPXZvaWQgMDtyZXR1cm4gbWUua2luZD09PTIwNj9Rcj1tZS5uYW1lLmVzY2FwZWRUZXh0OlFyPWUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGUuY2FzdChtZS5hcmd1bWVudEV4cHJlc3Npb24sZS5pc0xpdGVyYWxFeHByZXNzaW9uKS50ZXh0KSx6KG1lLERyLnN5bWJvbCxRcil9fWJyZWFrfX1mdW5jdGlvbiB6KG1lLE1lLCRlKXt2YXIgdHI9TWUuZXhwb3J0cy5nZXQoJGUpO2lmKHRyKXt2YXIgZHI9dHIudmFsdWVEZWNsYXJhdGlvbjtpZihkciE9PXIpcmV0dXJuIGRyJiZucyhkcixyKSYmZS5pc0VudW1EZWNsYXJhdGlvbihkci5wYXJlbnQpP0gwKGRyKTooWHIobWUsZS5EaWFnbm9zdGljcy5BX21lbWJlcl9pbml0aWFsaXplcl9pbl9hX2VudW1fZGVjbGFyYXRpb25fY2Fubm90X3JlZmVyZW5jZV9tZW1iZXJzX2RlY2xhcmVkX2FmdGVyX2l0X2luY2x1ZGluZ19tZW1iZXJzX2RlZmluZWRfaW5fb3RoZXJfZW51bXMpLDApO1hyKG1lLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pc191c2VkX2JlZm9yZV9iZWluZ19hc3NpZ25lZCx0bih0cikpfX19ZnVuY3Rpb24gUFMocil7dmFyIGk9R3Mocik7cmV0dXJuIGk9PT1QZT8hMTpyLmtpbmQ9PT03OXx8ci5raW5kPT09MjA2JiZQUyhyLmV4cHJlc3Npb24pfHxyLmtpbmQ9PT0yMDcmJlBTKHIuZXhwcmVzc2lvbikmJmUuaXNTdHJpbmdMaXRlcmFsTGlrZShyLmFyZ3VtZW50RXhwcmVzc2lvbil9ZnVuY3Rpb24gRU0ocil7ZmUoZnVuY3Rpb24oKXtyZXR1cm4gQ00ocil9KX1mdW5jdGlvbiBDTShyKXtGZihyKSxTbShyLHIubmFtZSksYnYociksci5tZW1iZXJzLmZvckVhY2goa00pLFU2KHIpO3ZhciBpPUV0KHIpLHQ9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChpLHIua2luZCk7aWYocj09PXQpe2lmKGkuZGVjbGFyYXRpb25zJiZpLmRlY2xhcmF0aW9ucy5sZW5ndGg+MSl7dmFyIG89ZS5pc0VudW1Db25zdChyKTtlLmZvckVhY2goaS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24odSl7ZS5pc0VudW1EZWNsYXJhdGlvbih1KSYmZS5pc0VudW1Db25zdCh1KSE9PW8mJlhyKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24odSksZS5EaWFnbm9zdGljcy5FbnVtX2RlY2xhcmF0aW9uc19tdXN0X2FsbF9iZV9jb25zdF9vcl9ub25fY29uc3QpfSl9dmFyIHM9ITE7ZS5mb3JFYWNoKGkuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHUpe2lmKHUua2luZCE9PTI2MClyZXR1cm4hMTt2YXIgaD11O2lmKCFoLm1lbWJlcnMubGVuZ3RoKXJldHVybiExO3ZhciB6PWgubWVtYmVyc1swXTt6LmluaXRpYWxpemVyfHwocz9Ycih6Lm5hbWUsZS5EaWFnbm9zdGljcy5Jbl9hbl9lbnVtX3dpdGhfbXVsdGlwbGVfZGVjbGFyYXRpb25zX29ubHlfb25lX2RlY2xhcmF0aW9uX2Nhbl9vbWl0X2FuX2luaXRpYWxpemVyX2Zvcl9pdHNfZmlyc3RfZW51bV9lbGVtZW50KTpzPSEwKX0pfX1mdW5jdGlvbiBrTShyKXtlLmlzUHJpdmF0ZUlkZW50aWZpZXIoci5uYW1lKSYmWHIocixlLkRpYWdub3N0aWNzLkFuX2VudW1fbWVtYmVyX2Nhbm5vdF9iZV9uYW1lZF93aXRoX2FfcHJpdmF0ZV9pZGVudGlmaWVyKX1mdW5jdGlvbiBBTShyKXt2YXIgaT1yLmRlY2xhcmF0aW9ucztpZihpKWZvcih2YXIgdD0wLG89aTt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpZigocy5raW5kPT09MjU3fHxzLmtpbmQ9PT0yNTYmJmUubm9kZUlzUHJlc2VudChzLmJvZHkpKSYmIShzLmZsYWdzJjE2Nzc3MjE2KSlyZXR1cm4gc319ZnVuY3Rpb24gTk0ocixpKXt2YXIgdD1lLmdldEVuY2xvc2luZ0Jsb2NrU2NvcGVDb250YWluZXIociksbz1lLmdldEVuY2xvc2luZ0Jsb2NrU2NvcGVDb250YWluZXIoaSk7cmV0dXJuIEN1KHQpP0N1KG8pOkN1KG8pPyExOnQ9PT1vfWZ1bmN0aW9uIFBNKHIpe3IuYm9keSYmKGlvKHIuYm9keSksZS5pc0dsb2JhbFNjb3BlQXVnbWVudGF0aW9uKHIpfHxBXyhyKSksZmUoaSk7ZnVuY3Rpb24gaSgpe3ZhciB0PWUuaXNHbG9iYWxTY29wZUF1Z21lbnRhdGlvbihyKSxvPXIuZmxhZ3MmMTY3NzcyMTY7dCYmIW8mJlhyKHIubmFtZSxlLkRpYWdub3N0aWNzLkF1Z21lbnRhdGlvbnNfZm9yX3RoZV9nbG9iYWxfc2NvcGVfc2hvdWxkX2hhdmVfZGVjbGFyZV9tb2RpZmllcl91bmxlc3NfdGhleV9hcHBlYXJfaW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHQpO3ZhciBzPWUuaXNBbWJpZW50TW9kdWxlKHIpLHU9cz9lLkRpYWdub3N0aWNzLkFuX2FtYmllbnRfbW9kdWxlX2RlY2xhcmF0aW9uX2lzX29ubHlfYWxsb3dlZF9hdF90aGVfdG9wX2xldmVsX2luX2FfZmlsZTplLkRpYWdub3N0aWNzLkFfbmFtZXNwYWNlX2RlY2xhcmF0aW9uX2lzX29ubHlfYWxsb3dlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbmFtZXNwYWNlX29yX21vZHVsZTtpZighVXkocix1KSl7RmYocil8fCFvJiZyLm5hbWUua2luZD09PTEwJiZUdChyLm5hbWUsZS5EaWFnbm9zdGljcy5Pbmx5X2FtYmllbnRfbW9kdWxlc19jYW5fdXNlX3F1b3RlZF9uYW1lcyksZS5pc0lkZW50aWZpZXIoci5uYW1lKSYmU20ocixyLm5hbWUpLGJ2KHIpO3ZhciBoPUV0KHIpO2lmKGguZmxhZ3MmNTEyJiYhbyYmaC5kZWNsYXJhdGlvbnMmJmguZGVjbGFyYXRpb25zLmxlbmd0aD4xJiZWKHIsZS5zaG91bGRQcmVzZXJ2ZUNvbnN0RW51bXMoeWUpKSl7dmFyIHo9QU0oaCk7eiYmKGUuZ2V0U291cmNlRmlsZU9mTm9kZShyKSE9PWUuZ2V0U291cmNlRmlsZU9mTm9kZSh6KT9YcihyLm5hbWUsZS5EaWFnbm9zdGljcy5BX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfaW5fYV9kaWZmZXJlbnRfZmlsZV9mcm9tX2FfY2xhc3Nfb3JfZnVuY3Rpb25fd2l0aF93aGljaF9pdF9pc19tZXJnZWQpOnIucG9zPHoucG9zJiZYcihyLm5hbWUsZS5EaWFnbm9zdGljcy5BX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfbG9jYXRlZF9wcmlvcl90b19hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkKSk7dmFyIG1lPWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoaCwyNTcpO21lJiZOTShyLG1lKSYmKHZhKHIpLmZsYWdzfD0zMjc2OCl9aWYocylpZihlLmlzRXh0ZXJuYWxNb2R1bGVBdWdtZW50YXRpb24ocikpe3ZhciBNZT10fHxFdChyKS5mbGFncyYzMzU1NDQzMjtpZihNZSYmci5ib2R5KWZvcih2YXIgJGU9MCx0cj1yLmJvZHkuc3RhdGVtZW50czskZTx0ci5sZW5ndGg7JGUrKyl7dmFyIGRyPXRyWyRlXTtJUyhkcix0KX19ZWxzZSBDdShyLnBhcmVudCk/dD9YcihyLm5hbWUsZS5EaWFnbm9zdGljcy5BdWdtZW50YXRpb25zX2Zvcl90aGVfZ2xvYmFsX3Njb3BlX2Nhbl9vbmx5X2JlX2RpcmVjdGx5X25lc3RlZF9pbl9leHRlcm5hbF9tb2R1bGVzX29yX2FtYmllbnRfbW9kdWxlX2RlY2xhcmF0aW9ucyk6ZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKGUuZ2V0VGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChyLm5hbWUpKSYmWHIoci5uYW1lLGUuRGlhZ25vc3RpY3MuQW1iaWVudF9tb2R1bGVfZGVjbGFyYXRpb25fY2Fubm90X3NwZWNpZnlfcmVsYXRpdmVfbW9kdWxlX25hbWUpOnQ/WHIoci5uYW1lLGUuRGlhZ25vc3RpY3MuQXVnbWVudGF0aW9uc19mb3JfdGhlX2dsb2JhbF9zY29wZV9jYW5fb25seV9iZV9kaXJlY3RseV9uZXN0ZWRfaW5fZXh0ZXJuYWxfbW9kdWxlc19vcl9hbWJpZW50X21vZHVsZV9kZWNsYXJhdGlvbnMpOlhyKHIubmFtZSxlLkRpYWdub3N0aWNzLkFtYmllbnRfbW9kdWxlc19jYW5ub3RfYmVfbmVzdGVkX2luX290aGVyX21vZHVsZXNfb3JfbmFtZXNwYWNlcyl9fX1mdW5jdGlvbiBJUyhyLGkpe3ZhciB0O3N3aXRjaChyLmtpbmQpe2Nhc2UgMjM3OmZvcih2YXIgbz0wLHM9ci5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zO288cy5sZW5ndGg7bysrKXt2YXIgdT1zW29dO0lTKHUsaSl9YnJlYWs7Y2FzZSAyNzE6Y2FzZSAyNzI6SHMocixlLkRpYWdub3N0aWNzLkV4cG9ydHNfYW5kX2V4cG9ydF9hc3NpZ25tZW50c19hcmVfbm90X3Blcm1pdHRlZF9pbl9tb2R1bGVfYXVnbWVudGF0aW9ucyk7YnJlYWs7Y2FzZSAyNjU6Y2FzZSAyNjY6SHMocixlLkRpYWdub3N0aWNzLkltcG9ydHNfYXJlX25vdF9wZXJtaXR0ZWRfaW5fbW9kdWxlX2F1Z21lbnRhdGlvbnNfQ29uc2lkZXJfbW92aW5nX3RoZW1fdG9fdGhlX2VuY2xvc2luZ19leHRlcm5hbF9tb2R1bGUpO2JyZWFrO2Nhc2UgMjAzOmNhc2UgMjU0OnZhciBoPXIubmFtZTtpZihlLmlzQmluZGluZ1BhdHRlcm4oaCkpe2Zvcih2YXIgej0wLG1lPWguZWxlbWVudHM7ejxtZS5sZW5ndGg7eisrKXt2YXIgTWU9bWVbel07SVMoTWUsaSl9YnJlYWt9Y2FzZSAyNTc6Y2FzZSAyNjA6Y2FzZSAyNTY6Y2FzZSAyNTg6Y2FzZSAyNjE6Y2FzZSAyNTk6aWYoaSlyZXR1cm47dmFyICRlPUV0KHIpO2lmKCRlKXt2YXIgdHI9ISgkZS5mbGFncyYzMzU1NDQzMik7dHJ8fCh0cj0hISghKCh0PSRlLnBhcmVudCk9PT1udWxsfHx0PT09dm9pZCAwKSYmdC5kZWNsYXJhdGlvbnMpJiZlLmlzRXh0ZXJuYWxNb2R1bGVBdWdtZW50YXRpb24oJGUucGFyZW50LmRlY2xhcmF0aW9uc1swXSkpfWJyZWFrfX1mdW5jdGlvbiBJTShyKXtzd2l0Y2goci5raW5kKXtjYXNlIDc5OnJldHVybiByO2Nhc2UgMTYxOmRvIHI9ci5sZWZ0O3doaWxlKHIua2luZCE9PTc5KTtyZXR1cm4gcjtjYXNlIDIwNjpkb3tpZihlLmlzTW9kdWxlRXhwb3J0c0FjY2Vzc0V4cHJlc3Npb24oci5leHByZXNzaW9uKSYmIWUuaXNQcml2YXRlSWRlbnRpZmllcihyLm5hbWUpKXJldHVybiByLm5hbWU7cj1yLmV4cHJlc3Npb259d2hpbGUoci5raW5kIT09NzkpO3JldHVybiByfX1mdW5jdGlvbiB3UyhyKXt2YXIgaT1lLmdldEV4dGVybmFsTW9kdWxlTmFtZShyKTtpZighaXx8ZS5ub2RlSXNNaXNzaW5nKGkpKXJldHVybiExO2lmKCFlLmlzU3RyaW5nTGl0ZXJhbChpKSlyZXR1cm4gWHIoaSxlLkRpYWdub3N0aWNzLlN0cmluZ19saXRlcmFsX2V4cGVjdGVkKSwhMTt2YXIgdD1yLnBhcmVudC5raW5kPT09MjYyJiZlLmlzQW1iaWVudE1vZHVsZShyLnBhcmVudC5wYXJlbnQpO2lmKHIucGFyZW50LmtpbmQhPT0zMDUmJiF0KXJldHVybiBYcihpLHIua2luZD09PTI3Mj9lLkRpYWdub3N0aWNzLkV4cG9ydF9kZWNsYXJhdGlvbnNfYXJlX25vdF9wZXJtaXR0ZWRfaW5fYV9uYW1lc3BhY2U6ZS5EaWFnbm9zdGljcy5JbXBvcnRfZGVjbGFyYXRpb25zX2luX2FfbmFtZXNwYWNlX2Nhbm5vdF9yZWZlcmVuY2VfYV9tb2R1bGUpLCExO2lmKHQmJmUuaXNFeHRlcm5hbE1vZHVsZU5hbWVSZWxhdGl2ZShpLnRleHQpJiYhWHUocikpcmV0dXJuIFhyKHIsZS5EaWFnbm9zdGljcy5JbXBvcnRfb3JfZXhwb3J0X2RlY2xhcmF0aW9uX2luX2FuX2FtYmllbnRfbW9kdWxlX2RlY2xhcmF0aW9uX2Nhbm5vdF9yZWZlcmVuY2VfbW9kdWxlX3Rocm91Z2hfcmVsYXRpdmVfbW9kdWxlX25hbWUpLCExO2lmKCFlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24ocikmJnIuYXNzZXJ0Q2xhdXNlKXtmb3IodmFyIG89ITEscz0wLHU9ci5hc3NlcnRDbGF1c2UuZWxlbWVudHM7czx1Lmxlbmd0aDtzKyspe3ZhciBoPXVbc107ZS5pc1N0cmluZ0xpdGVyYWwoaC52YWx1ZSl8fChvPSEwLFhyKGgudmFsdWUsZS5EaWFnbm9zdGljcy5JbXBvcnRfYXNzZXJ0aW9uX3ZhbHVlc19tdXN0X2JlX3N0cmluZ19saXRlcmFsX2V4cHJlc3Npb25zKSl9cmV0dXJuIW99cmV0dXJuITB9ZnVuY3Rpb24gajAocil7dmFyIGk9RXQociksdD1QcyhpKTtpZih0IT09eGUpe2k9c28oaS5leHBvcnRTeW1ib2x8fGkpO3ZhciBvPShpLmZsYWdzJjExNjAxMjc/MTExNTUxOjApfChpLmZsYWdzJjc4ODk2OD83ODg5Njg6MCl8KGkuZmxhZ3MmMTkyMD8xOTIwOjApO2lmKHQuZmxhZ3Mmbyl7dmFyIHM9ci5raW5kPT09Mjc1P2UuRGlhZ25vc3RpY3MuRXhwb3J0X2RlY2xhcmF0aW9uX2NvbmZsaWN0c193aXRoX2V4cG9ydGVkX2RlY2xhcmF0aW9uX29mXzA6ZS5EaWFnbm9zdGljcy5JbXBvcnRfZGVjbGFyYXRpb25fY29uZmxpY3RzX3dpdGhfbG9jYWxfZGVjbGFyYXRpb25fb2ZfMDtYcihyLHMsdG4oaSkpfWlmKHllLmlzb2xhdGVkTW9kdWxlcyYmIWUuaXNUeXBlT25seUltcG9ydE9yRXhwb3J0RGVjbGFyYXRpb24ocikmJiEoci5mbGFncyYxNjc3NzIxNikpe3ZhciB1PXZ1KGkpLGg9ISh0LmZsYWdzJjExMTU1MSk7aWYoaHx8dSlzd2l0Y2goci5raW5kKXtjYXNlIDI2NzpjYXNlIDI3MDpjYXNlIDI2NTp7aWYoeWUucHJlc2VydmVWYWx1ZUltcG9ydHMpe2UuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKHIubmFtZSxcIkFuIEltcG9ydENsYXVzZSB3aXRoIGEgc3ltYm9sIHNob3VsZCBoYXZlIGEgbmFtZVwiKTt2YXIgcz1oP2UuRGlhZ25vc3RpY3MuXzBfaXNfYV90eXBlX2FuZF9tdXN0X2JlX2ltcG9ydGVkX3VzaW5nX2FfdHlwZV9vbmx5X2ltcG9ydF93aGVuX3ByZXNlcnZlVmFsdWVJbXBvcnRzX2FuZF9pc29sYXRlZE1vZHVsZXNfYXJlX2JvdGhfZW5hYmxlZDplLkRpYWdub3N0aWNzLl8wX3Jlc29sdmVzX3RvX2FfdHlwZV9vbmx5X2RlY2xhcmF0aW9uX2FuZF9tdXN0X2JlX2ltcG9ydGVkX3VzaW5nX2FfdHlwZV9vbmx5X2ltcG9ydF93aGVuX3ByZXNlcnZlVmFsdWVJbXBvcnRzX2FuZF9pc29sYXRlZE1vZHVsZXNfYXJlX2JvdGhfZW5hYmxlZCx6PWUuaWRUZXh0KHIua2luZD09PTI3MCYmci5wcm9wZXJ0eU5hbWV8fHIubmFtZSk7SmYoWHIocixzLHopLGg/dm9pZCAwOnUseil9aCYmci5raW5kPT09MjY1JiZlLmhhc0VmZmVjdGl2ZU1vZGlmaWVyKHIsMSkmJlhyKHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfdXNlX2V4cG9ydF9pbXBvcnRfb25fYV90eXBlX29yX3R5cGVfb25seV9uYW1lc3BhY2Vfd2hlbl90aGVfaXNvbGF0ZWRNb2R1bGVzX2ZsYWdfaXNfcHJvdmlkZWQpO2JyZWFrfWNhc2UgMjc1OmlmKGUuZ2V0U291cmNlRmlsZU9mTm9kZSh1KSE9PWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKSl7dmFyIHM9aD9lLkRpYWdub3N0aWNzLlJlX2V4cG9ydGluZ19hX3R5cGVfd2hlbl90aGVfaXNvbGF0ZWRNb2R1bGVzX2ZsYWdfaXNfcHJvdmlkZWRfcmVxdWlyZXNfdXNpbmdfZXhwb3J0X3R5cGU6ZS5EaWFnbm9zdGljcy5fMF9yZXNvbHZlc190b19hX3R5cGVfb25seV9kZWNsYXJhdGlvbl9hbmRfbXVzdF9iZV9yZV9leHBvcnRlZF91c2luZ19hX3R5cGVfb25seV9yZV9leHBvcnRfd2hlbl9pc29sYXRlZE1vZHVsZXNfaXNfZW5hYmxlZCx6PWUuaWRUZXh0KHIucHJvcGVydHlOYW1lfHxyLm5hbWUpO0pmKFhyKHIscyx6KSxoP3ZvaWQgMDp1LHopO3JldHVybn19fWlmKGUuaXNJbXBvcnRTcGVjaWZpZXIocikpe3ZhciBtZT1XNihpLHIpO3o2KG1lKSYmbWUuZGVjbGFyYXRpb25zJiZFbChyLG1lLmRlY2xhcmF0aW9ucyxtZS5lc2NhcGVkTmFtZSl9fX1mdW5jdGlvbiB6NihyKXtyZXR1cm4hIXIuZGVjbGFyYXRpb25zJiZlLmV2ZXJ5KHIuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGkpe3JldHVybiEhKGUuZ2V0Q29tYmluZWROb2RlRmxhZ3MoaSkmMjY4NDM1NDU2KX0pfWZ1bmN0aW9uIFc2KHIsaSl7aWYoIShyLmZsYWdzJjIwOTcxNTIpKXJldHVybiByO3ZhciB0PVBzKHIpO2lmKHQ9PT14ZSlyZXR1cm4gdDtmb3IoO3IuZmxhZ3MmMjA5NzE1Mjspe3ZhciBvPXdiKHIpO2lmKG8pe2lmKG89PT10KWJyZWFrO2lmKG8uZGVjbGFyYXRpb25zJiZlLmxlbmd0aChvLmRlY2xhcmF0aW9ucykpaWYoejYobykpe0VsKGksby5kZWNsYXJhdGlvbnMsby5lc2NhcGVkTmFtZSk7YnJlYWt9ZWxzZXtpZihyPT09dClicmVhaztyPW99fWVsc2UgYnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24gVTAocil7U20ocixyLm5hbWUpLGowKHIpLHIua2luZD09PTI3MCYmZS5pZFRleHQoci5wcm9wZXJ0eU5hbWV8fHIubmFtZSk9PT1cImRlZmF1bHRcIiYmZS5nZXRFU01vZHVsZUludGVyb3AoeWUpJiZlciE9PWUuTW9kdWxlS2luZC5TeXN0ZW0mJihlcjxlLk1vZHVsZUtpbmQuRVMyMDE1fHxlLmdldFNvdXJjZUZpbGVPZk5vZGUocikuaW1wbGllZE5vZGVGb3JtYXQ9PT1lLk1vZHVsZUtpbmQuQ29tbW9uSlMpJiZmYyhyLDEzMTA3Mil9ZnVuY3Rpb24gcTYocil7dmFyIGk7aWYoci5hc3NlcnRDbGF1c2Upe3ZhciB0PWUuaXNFeGNsdXNpdmVseVR5cGVPbmx5SW1wb3J0T3JFeHBvcnQociksbz1lLmdldFJlc29sdXRpb25Nb2RlT3ZlcnJpZGVGb3JDbGF1c2Uoci5hc3NlcnRDbGF1c2UsdD9UdDp2b2lkIDApO2lmKHQmJm8pcmV0dXJuIGUuaXNOaWdodGx5KCl8fFR0KHIuYXNzZXJ0Q2xhdXNlLGUuRGlhZ25vc3RpY3MuUmVzb2x1dGlvbl9tb2RlX2Fzc2VydGlvbnNfYXJlX3Vuc3RhYmxlX1VzZV9uaWdodGx5X1R5cGVTY3JpcHRfdG9fc2lsZW5jZV90aGlzX2Vycm9yX1RyeV91cGRhdGluZ193aXRoX25wbV9pbnN0YWxsX0RfdHlwZXNjcmlwdF9uZXh0KSxlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZCh5ZSkhPT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNiYmZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoeWUpIT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dD9UdChyLmFzc2VydENsYXVzZSxlLkRpYWdub3N0aWNzLlJlc29sdXRpb25fbW9kZXNfYXJlX29ubHlfc3VwcG9ydGVkX3doZW5fbW9kdWxlUmVzb2x1dGlvbl9pc19ub2RlMTZfb3Jfbm9kZW5leHQpOnZvaWQgMDt2YXIgcz1lcj09PWUuTW9kdWxlS2luZC5Ob2RlTmV4dCYmci5tb2R1bGVTcGVjaWZpZXImJmhmKHIubW9kdWxlU3BlY2lmaWVyKTtpZihzIT09ZS5Nb2R1bGVLaW5kLkVTTmV4dCYmZXIhPT1lLk1vZHVsZUtpbmQuRVNOZXh0KXJldHVybiBUdChyLmFzc2VydENsYXVzZSxlcj09PWUuTW9kdWxlS2luZC5Ob2RlTmV4dD9lLkRpYWdub3N0aWNzLkltcG9ydF9hc3NlcnRpb25zX2FyZV9ub3RfYWxsb3dlZF9vbl9zdGF0ZW1lbnRzX3RoYXRfdHJhbnNwaWxlX3RvX2NvbW1vbmpzX3JlcXVpcmVfY2FsbHM6ZS5EaWFnbm9zdGljcy5JbXBvcnRfYXNzZXJ0aW9uc19hcmVfb25seV9zdXBwb3J0ZWRfd2hlbl90aGVfbW9kdWxlX29wdGlvbl9pc19zZXRfdG9fZXNuZXh0X29yX25vZGVuZXh0KTtpZihlLmlzSW1wb3J0RGVjbGFyYXRpb24ocik/KGk9ci5pbXBvcnRDbGF1c2UpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5pc1R5cGVPbmx5OnIuaXNUeXBlT25seSlyZXR1cm4gVHQoci5hc3NlcnRDbGF1c2UsZS5EaWFnbm9zdGljcy5JbXBvcnRfYXNzZXJ0aW9uc19jYW5ub3RfYmVfdXNlZF93aXRoX3R5cGVfb25seV9pbXBvcnRzX29yX2V4cG9ydHMpO2lmKG8pcmV0dXJuIFR0KHIuYXNzZXJ0Q2xhdXNlLGUuRGlhZ25vc3RpY3MucmVzb2x1dGlvbl9tb2RlX2Nhbl9vbmx5X2JlX3NldF9mb3JfdHlwZV9vbmx5X2ltcG9ydHMpfX1mdW5jdGlvbiB3TShyKXtpZighVXkocixlLmlzSW5KU0ZpbGUocik/ZS5EaWFnbm9zdGljcy5Bbl9pbXBvcnRfZGVjbGFyYXRpb25fY2FuX29ubHlfYmVfdXNlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbW9kdWxlOmUuRGlhZ25vc3RpY3MuQW5faW1wb3J0X2RlY2xhcmF0aW9uX2Nhbl9vbmx5X2JlX3VzZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX25hbWVzcGFjZV9vcl9tb2R1bGUpKXtpZighRmYocikmJmUuaGFzRWZmZWN0aXZlTW9kaWZpZXJzKHIpJiZIcyhyLGUuRGlhZ25vc3RpY3MuQW5faW1wb3J0X2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX21vZGlmaWVycyksd1Mocikpe3ZhciBpPXIuaW1wb3J0Q2xhdXNlO2lmKGkmJiFFTChpKSYmKGkubmFtZSYmVTAoaSksaS5uYW1lZEJpbmRpbmdzKSlpZihpLm5hbWVkQmluZGluZ3Mua2luZD09PTI2OClVMChpLm5hbWVkQmluZGluZ3MpLGVyIT09ZS5Nb2R1bGVLaW5kLlN5c3RlbSYmKGVyPGUuTW9kdWxlS2luZC5FUzIwMTV8fGUuZ2V0U291cmNlRmlsZU9mTm9kZShyKS5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5Db21tb25KUykmJmUuZ2V0RVNNb2R1bGVJbnRlcm9wKHllKSYmZmMociw2NTUzNik7ZWxzZXt2YXIgdD1hYyhyLHIubW9kdWxlU3BlY2lmaWVyKTt0JiZlLmZvckVhY2goaS5uYW1lZEJpbmRpbmdzLmVsZW1lbnRzLFUwKX19cTYocil9fWZ1bmN0aW9uIE9NKHIpe2lmKCFVeShyLGUuaXNJbkpTRmlsZShyKT9lLkRpYWdub3N0aWNzLkFuX2ltcG9ydF9kZWNsYXJhdGlvbl9jYW5fb25seV9iZV91c2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGU6ZS5EaWFnbm9zdGljcy5Bbl9pbXBvcnRfZGVjbGFyYXRpb25fY2FuX29ubHlfYmVfdXNlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbmFtZXNwYWNlX29yX21vZHVsZSkmJihGZihyKSxlLmlzSW50ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihyKXx8d1MocikpKWlmKFUwKHIpLGUuaGFzU3ludGFjdGljTW9kaWZpZXIociwxKSYmR3Qociksci5tb2R1bGVSZWZlcmVuY2Uua2luZCE9PTI3Nyl7dmFyIGk9UHMoRXQocikpO2lmKGkhPT14ZSl7aWYoaS5mbGFncyYxMTE1NTEpe3ZhciB0PWUuZ2V0Rmlyc3RJZGVudGlmaWVyKHIubW9kdWxlUmVmZXJlbmNlKTtEcyh0LDExMjU3NSkuZmxhZ3MmMTkyMHx8WHIodCxlLkRpYWdub3N0aWNzLk1vZHVsZV8wX2lzX2hpZGRlbl9ieV9hX2xvY2FsX2RlY2xhcmF0aW9uX3dpdGhfdGhlX3NhbWVfbmFtZSxlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKHQpKX1pLmZsYWdzJjc4ODk2OCYmVG0oci5uYW1lLGUuRGlhZ25vc3RpY3MuSW1wb3J0X25hbWVfY2Fubm90X2JlXzApfXIuaXNUeXBlT25seSYmVHQocixlLkRpYWdub3N0aWNzLkFuX2ltcG9ydF9hbGlhc19jYW5ub3RfdXNlX2ltcG9ydF90eXBlKX1lbHNlIGVyPj1lLk1vZHVsZUtpbmQuRVMyMDE1JiZlLmdldFNvdXJjZUZpbGVPZk5vZGUocikuaW1wbGllZE5vZGVGb3JtYXQ9PT12b2lkIDAmJiFyLmlzVHlwZU9ubHkmJiEoci5mbGFncyYxNjc3NzIxNikmJlR0KHIsZS5EaWFnbm9zdGljcy5JbXBvcnRfYXNzaWdubWVudF9jYW5ub3RfYmVfdXNlZF93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0X21vZHVsZXNfQ29uc2lkZXJfdXNpbmdfaW1wb3J0X0FzdGVyaXNrX2FzX25zX2Zyb21fbW9kX2ltcG9ydF9hX2Zyb21fbW9kX2ltcG9ydF9kX2Zyb21fbW9kX29yX2Fub3RoZXJfbW9kdWxlX2Zvcm1hdF9pbnN0ZWFkKX1mdW5jdGlvbiBGTShyKXtpZighVXkocixlLmlzSW5KU0ZpbGUocik/ZS5EaWFnbm9zdGljcy5Bbl9leHBvcnRfZGVjbGFyYXRpb25fY2FuX29ubHlfYmVfdXNlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfbW9kdWxlOmUuRGlhZ25vc3RpY3MuQW5fZXhwb3J0X2RlY2xhcmF0aW9uX2Nhbl9vbmx5X2JlX3VzZWRfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX25hbWVzcGFjZV9vcl9tb2R1bGUpKXtpZighRmYocikmJmUuaGFzU3ludGFjdGljTW9kaWZpZXJzKHIpJiZIcyhyLGUuRGlhZ25vc3RpY3MuQW5fZXhwb3J0X2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX21vZGlmaWVycyksci5tb2R1bGVTcGVjaWZpZXImJnIuZXhwb3J0Q2xhdXNlJiZlLmlzTmFtZWRFeHBvcnRzKHIuZXhwb3J0Q2xhdXNlKSYmZS5sZW5ndGgoci5leHBvcnRDbGF1c2UuZWxlbWVudHMpJiZBZT09PTAmJmZjKHIsNDE5NDMwNCksTU0ociksIXIubW9kdWxlU3BlY2lmaWVyfHx3UyhyKSlpZihyLmV4cG9ydENsYXVzZSYmIWUuaXNOYW1lc3BhY2VFeHBvcnQoci5leHBvcnRDbGF1c2UpKXtlLmZvckVhY2goci5leHBvcnRDbGF1c2UuZWxlbWVudHMsVU0pO3ZhciBpPXIucGFyZW50LmtpbmQ9PT0yNjImJmUuaXNBbWJpZW50TW9kdWxlKHIucGFyZW50LnBhcmVudCksdD0haSYmci5wYXJlbnQua2luZD09PTI2MiYmIXIubW9kdWxlU3BlY2lmaWVyJiZyLmZsYWdzJjE2Nzc3MjE2O3IucGFyZW50LmtpbmQhPT0zMDUmJiFpJiYhdCYmWHIocixlLkRpYWdub3N0aWNzLkV4cG9ydF9kZWNsYXJhdGlvbnNfYXJlX25vdF9wZXJtaXR0ZWRfaW5fYV9uYW1lc3BhY2UpfWVsc2V7dmFyIG89YWMocixyLm1vZHVsZVNwZWNpZmllcik7byYmbGwobyk/WHIoci5tb2R1bGVTcGVjaWZpZXIsZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF91c2VzX2V4cG9ydF9hbmRfY2Fubm90X2JlX3VzZWRfd2l0aF9leHBvcnRfQXN0ZXJpc2ssdG4obykpOnIuZXhwb3J0Q2xhdXNlJiZqMChyLmV4cG9ydENsYXVzZSksZXIhPT1lLk1vZHVsZUtpbmQuU3lzdGVtJiYoZXI8ZS5Nb2R1bGVLaW5kLkVTMjAxNXx8ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTKSYmKHIuZXhwb3J0Q2xhdXNlP2UuZ2V0RVNNb2R1bGVJbnRlcm9wKHllKSYmZmMociw2NTUzNik6ZmMociwzMjc2OCkpfXE2KHIpfX1mdW5jdGlvbiBNTShyKXt2YXIgaTtyZXR1cm4gci5pc1R5cGVPbmx5PygoaT1yLmV4cG9ydENsYXVzZSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmtpbmQpPT09MjczP0RBKHIuZXhwb3J0Q2xhdXNlKTpUdChyLGUuRGlhZ25vc3RpY3MuT25seV9uYW1lZF9leHBvcnRzX21heV91c2VfZXhwb3J0X3R5cGUpOiExfWZ1bmN0aW9uIFV5KHIsaSl7dmFyIHQ9ci5wYXJlbnQua2luZD09PTMwNXx8ci5wYXJlbnQua2luZD09PTI2Mnx8ci5wYXJlbnQua2luZD09PTI2MTtyZXR1cm4gdHx8SHMocixpKSwhdH1mdW5jdGlvbiBMTShyKXtyZXR1cm4gZS5mb3JFYWNoSW1wb3J0Q2xhdXNlRGVjbGFyYXRpb24ocixmdW5jdGlvbihpKXtyZXR1cm4hIUV0KGkpLmlzUmVmZXJlbmNlZH0pfWZ1bmN0aW9uIFJNKHIpe3JldHVybiBlLmZvckVhY2hJbXBvcnRDbGF1c2VEZWNsYXJhdGlvbihyLGZ1bmN0aW9uKGkpe3JldHVybiEhQWEoRXQoaSkpLmNvbnN0RW51bVJlZmVyZW5jZWR9KX1mdW5jdGlvbiBCTShyKXtyZXR1cm4gZS5pc0ltcG9ydERlY2xhcmF0aW9uKHIpJiZyLmltcG9ydENsYXVzZSYmIXIuaW1wb3J0Q2xhdXNlLmlzVHlwZU9ubHkmJkxNKHIuaW1wb3J0Q2xhdXNlKSYmIUcwKHIuaW1wb3J0Q2xhdXNlLCEwKSYmIVJNKHIuaW1wb3J0Q2xhdXNlKX1mdW5jdGlvbiBKTShyKXtyZXR1cm4gZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKHIpJiZlLmlzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2Uoci5tb2R1bGVSZWZlcmVuY2UpJiYhci5pc1R5cGVPbmx5JiZFdChyKS5pc1JlZmVyZW5jZWQmJiFHMChyLCExKSYmIUFhKEV0KHIpKS5jb25zdEVudW1SZWZlcmVuY2VkfWZ1bmN0aW9uIGpNKHIpe2Zvcih2YXIgaT0wLHQ9ci5zdGF0ZW1lbnRzO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldOyhCTShvKXx8Sk0obykpJiZYcihvLGUuRGlhZ25vc3RpY3MuVGhpc19pbXBvcnRfaXNfbmV2ZXJfdXNlZF9hc19hX3ZhbHVlX2FuZF9tdXN0X3VzZV9pbXBvcnRfdHlwZV9iZWNhdXNlX2ltcG9ydHNOb3RVc2VkQXNWYWx1ZXNfaXNfc2V0X3RvX2Vycm9yKX19ZnVuY3Rpb24gVU0ocil7aWYoajAociksZS5nZXRFbWl0RGVjbGFyYXRpb25zKHllKSYmVl8oci5wcm9wZXJ0eU5hbWV8fHIubmFtZSwhMCksci5wYXJlbnQucGFyZW50Lm1vZHVsZVNwZWNpZmllcillLmdldEVTTW9kdWxlSW50ZXJvcCh5ZSkmJmVyIT09ZS5Nb2R1bGVLaW5kLlN5c3RlbSYmKGVyPGUuTW9kdWxlS2luZC5FUzIwMTV8fGUuZ2V0U291cmNlRmlsZU9mTm9kZShyKS5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5Db21tb25KUykmJmUuaWRUZXh0KHIucHJvcGVydHlOYW1lfHxyLm5hbWUpPT09XCJkZWZhdWx0XCImJmZjKHIsMTMxMDcyKTtlbHNle3ZhciBpPXIucHJvcGVydHlOYW1lfHxyLm5hbWUsdD1lcyhpLGkuZXNjYXBlZFRleHQsMjk5ODI3MSx2b2lkIDAsdm9pZCAwLCEwKTtpZih0JiYodD09PW1pfHx0PT09cGV8fHQuZGVjbGFyYXRpb25zJiZDdSh6aSh0LmRlY2xhcmF0aW9uc1swXSkpKSlYcihpLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2V4cG9ydF8wX09ubHlfbG9jYWxfZGVjbGFyYXRpb25zX2Nhbl9iZV9leHBvcnRlZF9mcm9tX2FfbW9kdWxlLGUuaWRUZXh0KGkpKTtlbHNle0d0KHIpO3ZhciBvPXQmJih0LmZsYWdzJjIwOTcxNTI/UHModCk6dCk7KCFvfHxvPT09eGV8fG8uZmxhZ3MmMTExNTUxKSYmT3Moci5wcm9wZXJ0eU5hbWV8fHIubmFtZSl9fX1mdW5jdGlvbiB6TShyKXt2YXIgaT1yLmlzRXhwb3J0RXF1YWxzP2UuRGlhZ25vc3RpY3MuQW5fZXhwb3J0X2Fzc2lnbm1lbnRfbXVzdF9iZV9hdF90aGVfdG9wX2xldmVsX29mX2FfZmlsZV9vcl9tb2R1bGVfZGVjbGFyYXRpb246ZS5EaWFnbm9zdGljcy5BX2RlZmF1bHRfZXhwb3J0X211c3RfYmVfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX2ZpbGVfb3JfbW9kdWxlX2RlY2xhcmF0aW9uO2lmKCFVeShyLGkpKXt2YXIgdD1yLnBhcmVudC5raW5kPT09MzA1P3IucGFyZW50OnIucGFyZW50LnBhcmVudDtpZih0LmtpbmQ9PT0yNjEmJiFlLmlzQW1iaWVudE1vZHVsZSh0KSl7ci5pc0V4cG9ydEVxdWFscz9YcihyLGUuRGlhZ25vc3RpY3MuQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfaW5fYV9uYW1lc3BhY2UpOlhyKHIsZS5EaWFnbm9zdGljcy5BX2RlZmF1bHRfZXhwb3J0X2Nhbl9vbmx5X2JlX3VzZWRfaW5fYW5fRUNNQVNjcmlwdF9zdHlsZV9tb2R1bGUpO3JldHVybn0hRmYocikmJmUuaGFzRWZmZWN0aXZlTW9kaWZpZXJzKHIpJiZIcyhyLGUuRGlhZ25vc3RpY3MuQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2hhdmVfbW9kaWZpZXJzKTt2YXIgbz1lLmdldEVmZmVjdGl2ZVR5cGVBbm5vdGF0aW9uTm9kZShyKTtpZihvJiZ6YyhPcyhyLmV4cHJlc3Npb24pLFZhKG8pLHIuZXhwcmVzc2lvbiksci5leHByZXNzaW9uLmtpbmQ9PT03OSl7dmFyIHM9ci5leHByZXNzaW9uLHU9RHMocyw2NzEwODg2MywhMCwhMCxyKTtpZih1KXtvMCh1LHMpO3ZhciBoPXUuZmxhZ3MmMjA5NzE1Mj9Qcyh1KTp1OyhoPT09eGV8fGguZmxhZ3MmMTExNTUxKSYmT3Moci5leHByZXNzaW9uKX1lbHNlIE9zKHIuZXhwcmVzc2lvbik7ZS5nZXRFbWl0RGVjbGFyYXRpb25zKHllKSYmVl8oci5leHByZXNzaW9uLCEwKX1lbHNlIE9zKHIuZXhwcmVzc2lvbik7VjYodCksci5mbGFncyYxNjc3NzIxNiYmIWUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbihyLmV4cHJlc3Npb24pJiZUdChyLmV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5UaGVfZXhwcmVzc2lvbl9vZl9hbl9leHBvcnRfYXNzaWdubWVudF9tdXN0X2JlX2FuX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWVfaW5fYW5fYW1iaWVudF9jb250ZXh0KSxyLmlzRXhwb3J0RXF1YWxzJiYhKHIuZmxhZ3MmMTY3NzcyMTYpJiYoZXI+PWUuTW9kdWxlS2luZC5FUzIwMTUmJmUuZ2V0U291cmNlRmlsZU9mTm9kZShyKS5pbXBsaWVkTm9kZUZvcm1hdCE9PWUuTW9kdWxlS2luZC5Db21tb25KUz9UdChyLGUuRGlhZ25vc3RpY3MuRXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfd2hlbl90YXJnZXRpbmdfRUNNQVNjcmlwdF9tb2R1bGVzX0NvbnNpZGVyX3VzaW5nX2V4cG9ydF9kZWZhdWx0X29yX2Fub3RoZXJfbW9kdWxlX2Zvcm1hdF9pbnN0ZWFkKTplcj09PWUuTW9kdWxlS2luZC5TeXN0ZW0mJlR0KHIsZS5EaWFnbm9zdGljcy5FeHBvcnRfYXNzaWdubWVudF9pc19ub3Rfc3VwcG9ydGVkX3doZW5fbW9kdWxlX2ZsYWdfaXNfc3lzdGVtKSl9fWZ1bmN0aW9uIFdNKHIpe3JldHVybiBlLmZvckVhY2hFbnRyeShyLmV4cG9ydHMsZnVuY3Rpb24oaSx0KXtyZXR1cm4gdCE9PVwiZXhwb3J0PVwifSl9ZnVuY3Rpb24gVjYocil7dmFyIGk9RXQociksdD1BYShpKTtpZighdC5leHBvcnRzQ2hlY2tlZCl7dmFyIG89aS5leHBvcnRzLmdldChcImV4cG9ydD1cIik7aWYobyYmV00oaSkpe3ZhciBzPXJ1KG8pfHxvLnZhbHVlRGVjbGFyYXRpb247cyYmIVh1KHMpJiYhZS5pc0luSlNGaWxlKHMpJiZYcihzLGUuRGlhZ25vc3RpY3MuQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2JlX3VzZWRfaW5fYV9tb2R1bGVfd2l0aF9vdGhlcl9leHBvcnRlZF9lbGVtZW50cyl9dmFyIHU9UHUoaSk7dSYmdS5mb3JFYWNoKGZ1bmN0aW9uKGgseil7dmFyIG1lPWguZGVjbGFyYXRpb25zLE1lPWguZmxhZ3M7aWYoeiE9PVwiX19leHBvcnRcIiYmIShNZSYxOTIwKSl7dmFyICRlPWUuY291bnRXaGVyZShtZSxlLmFuZChPLGUubm90KGUuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbikpKTtpZighKE1lJjUyNDI4OCYmJGU8PTIpJiYkZT4xJiYhejAobWUpKWZvcih2YXIgdHI9MCxkcj1tZTt0cjxkci5sZW5ndGg7dHIrKyl7dmFyIERyPWRyW3RyXTtrKERyKSYmcm4uYWRkKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoRHIsZS5EaWFnbm9zdGljcy5DYW5ub3RfcmVkZWNsYXJlX2V4cG9ydGVkX3ZhcmlhYmxlXzAsZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyh6KSkpfX19KSx0LmV4cG9ydHNDaGVja2VkPSEwfX1mdW5jdGlvbiB6MChyKXtyZXR1cm4gciYmci5sZW5ndGg+MSYmci5ldmVyeShmdW5jdGlvbihpKXtyZXR1cm4gZS5pc0luSlNGaWxlKGkpJiZlLmlzQWNjZXNzRXhwcmVzc2lvbihpKSYmKGUuaXNFeHBvcnRzSWRlbnRpZmllcihpLmV4cHJlc3Npb24pfHxlLmlzTW9kdWxlRXhwb3J0c0FjY2Vzc0V4cHJlc3Npb24oaS5leHByZXNzaW9uKSl9KX1mdW5jdGlvbiBpbyhyKXtpZihyKXt2YXIgaT1JZTtJZT1yLEVlPTAscU0ociksSWU9aX19ZnVuY3Rpb24gcU0ocil7ZS5pc0luSlNGaWxlKHIpJiZlLmZvckVhY2goci5qc0RvYyxmdW5jdGlvbih0KXt2YXIgbz10LnRhZ3M7cmV0dXJuIGUuZm9yRWFjaChvLGlvKX0pO3ZhciBpPXIua2luZDtpZihnKXN3aXRjaChpKXtjYXNlIDI2MTpjYXNlIDI1NzpjYXNlIDI1ODpjYXNlIDI1NjpnLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKX1zd2l0Y2goaT49MjM3JiZpPD0yNTMmJnIuZmxvd05vZGUmJiFteShyLmZsb3dOb2RlKSYmSWMoeWUuYWxsb3dVbnJlYWNoYWJsZUNvZGU9PT0hMSxyLGUuRGlhZ25vc3RpY3MuVW5yZWFjaGFibGVfY29kZV9kZXRlY3RlZCksaSl7Y2FzZSAxNjM6cmV0dXJuICRrKHIpO2Nhc2UgMTY0OnJldHVybiBaayhyKTtjYXNlIDE2NzpyZXR1cm4gaTYocik7Y2FzZSAxNjY6cmV0dXJuIFJPKHIpO2Nhc2UgMTgwOmNhc2UgMTc5OmNhc2UgMTc0OmNhc2UgMTc1OmNhc2UgMTc2OnJldHVybiBEdihyKTtjYXNlIDE2OTpjYXNlIDE2ODpyZXR1cm4gQk8ocik7Y2FzZSAxNzA6cmV0dXJuIEpPKHIpO2Nhc2UgMTcxOnJldHVybiBqTyhyKTtjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gYTYocik7Y2FzZSAxNzg6cmV0dXJuIHZTKHIpO2Nhc2UgMTc3OnJldHVybiBPTyhyKTtjYXNlIDE4MTpyZXR1cm4gcU8ocik7Y2FzZSAxODI6cmV0dXJuIFZPKHIpO2Nhc2UgMTgzOnJldHVybiBLTyhyKTtjYXNlIDE4NDpyZXR1cm4gR08ocik7Y2FzZSAxODc6Y2FzZSAxODg6cmV0dXJuIEhPKHIpO2Nhc2UgMTkxOmNhc2UgMTg1OmNhc2UgMTg2OnJldHVybiBpbyhyLnR5cGUpO2Nhc2UgMTkyOnJldHVybiAkTyhyKTtjYXNlIDE5MzpyZXR1cm4gWk8ocik7Y2FzZSAxODk6cmV0dXJuIGVGKHIpO2Nhc2UgMTkwOnJldHVybiByRihyKTtjYXNlIDE5ODpyZXR1cm4gaUYocik7Y2FzZSAyMDA6cmV0dXJuIHRGKHIpO2Nhc2UgMTk3OnJldHVybiBhRihyKTtjYXNlIDMyODpyZXR1cm4gaEYocik7Y2FzZSAzMjk6cmV0dXJuIHlGKHIpO2Nhc2UgMzQ1OmNhc2UgMzM4OmNhc2UgMzM5OnJldHVybiBfRihyKTtjYXNlIDM0NDpyZXR1cm4gcEYocik7Y2FzZSAzNDM6cmV0dXJuIGRGKHIpO2Nhc2UgMzQwOnJldHVybiBnRihyKTtjYXNlIDM0NzpyZXR1cm4gbUYocik7Y2FzZSAzMTc6dkYocik7Y2FzZSAzMTU6Y2FzZSAzMTQ6Y2FzZSAzMTI6Y2FzZSAzMTM6Y2FzZSAzMjI6SzYociksZS5mb3JFYWNoQ2hpbGQocixpbyk7cmV0dXJuO2Nhc2UgMzE4OlZNKHIpO3JldHVybjtjYXNlIDMwOTpyZXR1cm4gaW8oci50eXBlKTtjYXNlIDMzMzpjYXNlIDMzNTpjYXNlIDMzNDpyZXR1cm4gREYocik7Y2FzZSAxOTQ6cmV0dXJuIFhPKHIpO2Nhc2UgMTk1OnJldHVybiBRTyhyKTtjYXNlIDI1NjpyZXR1cm4gZkYocik7Y2FzZSAyMzU6Y2FzZSAyNjI6cmV0dXJuIE0wKHIpO2Nhc2UgMjM3OnJldHVybiBMRihyKTtjYXNlIDIzODpyZXR1cm4gUkYocik7Y2FzZSAyMzk6cmV0dXJuIEJGKHIpO2Nhc2UgMjQwOnJldHVybiBVRihyKTtjYXNlIDI0MTpyZXR1cm4gekYocik7Y2FzZSAyNDI6cmV0dXJuIFdGKHIpO2Nhc2UgMjQzOnJldHVybiBWRihyKTtjYXNlIDI0NDpyZXR1cm4gcUYocik7Y2FzZSAyNDU6Y2FzZSAyNDY6cmV0dXJuICRGKHIpO2Nhc2UgMjQ3OnJldHVybiBaRihyKTtjYXNlIDI0ODpyZXR1cm4gZU0ocik7Y2FzZSAyNDk6cmV0dXJuIHJNKHIpO2Nhc2UgMjUwOnJldHVybiBpTShyKTtjYXNlIDI1MTpyZXR1cm4gdE0ocik7Y2FzZSAyNTI6cmV0dXJuIGFNKHIpO2Nhc2UgMjU0OnJldHVybiBTUyhyKTtjYXNlIDIwMzpyZXR1cm4gTUYocik7Y2FzZSAyNTc6cmV0dXJuIGZNKHIpO2Nhc2UgMjU4OnJldHVybiBiTShyKTtjYXNlIDI1OTpyZXR1cm4gU00ocik7Y2FzZSAyNjA6cmV0dXJuIEVNKHIpO2Nhc2UgMjYxOnJldHVybiBQTShyKTtjYXNlIDI2NjpyZXR1cm4gd00ocik7Y2FzZSAyNjU6cmV0dXJuIE9NKHIpO2Nhc2UgMjcyOnJldHVybiBGTShyKTtjYXNlIDI3MTpyZXR1cm4gek0ocik7Y2FzZSAyMzY6Y2FzZSAyNTM6TWYocik7cmV0dXJuO2Nhc2UgMjc2OnJldHVybiB6TyhyKX19ZnVuY3Rpb24gSzYocil7ZS5pc0luSlNGaWxlKHIpfHxUdChyLGUuRGlhZ25vc3RpY3MuSlNEb2NfdHlwZXNfY2FuX29ubHlfYmVfdXNlZF9pbnNpZGVfZG9jdW1lbnRhdGlvbl9jb21tZW50cyl9ZnVuY3Rpb24gVk0ocil7SzYociksaW8oci50eXBlKTt2YXIgaT1yLnBhcmVudDtpZihlLmlzUGFyYW1ldGVyKGkpJiZlLmlzSlNEb2NGdW5jdGlvblR5cGUoaS5wYXJlbnQpKXtlLmxhc3QoaS5wYXJlbnQucGFyYW1ldGVycykhPT1pJiZYcihyLGUuRGlhZ25vc3RpY3MuQV9yZXN0X3BhcmFtZXRlcl9tdXN0X2JlX2xhc3RfaW5fYV9wYXJhbWV0ZXJfbGlzdCk7cmV0dXJufWUuaXNKU0RvY1R5cGVFeHByZXNzaW9uKGkpfHxYcihyLGUuRGlhZ25vc3RpY3MuSlNEb2NfbWF5X29ubHlfYXBwZWFyX2luX3RoZV9sYXN0X3BhcmFtZXRlcl9vZl9hX3NpZ25hdHVyZSk7dmFyIHQ9ci5wYXJlbnQucGFyZW50O2lmKCFlLmlzSlNEb2NQYXJhbWV0ZXJUYWcodCkpe1hyKHIsZS5EaWFnbm9zdGljcy5KU0RvY19tYXlfb25seV9hcHBlYXJfaW5fdGhlX2xhc3RfcGFyYW1ldGVyX29mX2Ffc2lnbmF0dXJlKTtyZXR1cm59dmFyIG89ZS5nZXRQYXJhbWV0ZXJTeW1ib2xGcm9tSlNEb2ModCk7aWYoISFvKXt2YXIgcz1lLmdldEhvc3RTaWduYXR1cmVGcm9tSlNEb2ModCk7KCFzfHxlLmxhc3Qocy5wYXJhbWV0ZXJzKS5zeW1ib2whPT1vKSYmWHIocixlLkRpYWdub3N0aWNzLkFfcmVzdF9wYXJhbWV0ZXJfbXVzdF9iZV9sYXN0X2luX2FfcGFyYW1ldGVyX2xpc3QpfX1mdW5jdGlvbiBLTShyKXt2YXIgaT1WYShyLnR5cGUpLHQ9ci5wYXJlbnQsbz1yLnBhcmVudC5wYXJlbnQ7aWYoZS5pc0pTRG9jVHlwZUV4cHJlc3Npb24oci5wYXJlbnQpJiZlLmlzSlNEb2NQYXJhbWV0ZXJUYWcobykpe3ZhciBzPWUuZ2V0SG9zdFNpZ25hdHVyZUZyb21KU0RvYyhvKSx1PWUuaXNKU0RvY0NhbGxiYWNrVGFnKG8ucGFyZW50LnBhcmVudCk7aWYoc3x8dSl7dmFyIGg9dT9lLmxhc3RPclVuZGVmaW5lZChvLnBhcmVudC5wYXJlbnQudHlwZUV4cHJlc3Npb24ucGFyYW1ldGVycyk6ZS5sYXN0T3JVbmRlZmluZWQocy5wYXJhbWV0ZXJzKSx6PWUuZ2V0UGFyYW1ldGVyU3ltYm9sRnJvbUpTRG9jKG8pO2lmKCFofHx6JiZoLnN5bWJvbD09PXomJmUuaXNSZXN0UGFyYW1ldGVyKGgpKXJldHVybiBacyhpKX19cmV0dXJuIGUuaXNQYXJhbWV0ZXIodCkmJmUuaXNKU0RvY0Z1bmN0aW9uVHlwZSh0LnBhcmVudCk/WnMoaSk6a2MoaSl9ZnVuY3Rpb24geG0ocil7dmFyIGk9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLHQ9dmEoaSk7dC5mbGFncyYxfHwodC5kZWZlcnJlZE5vZGVzfHwodC5kZWZlcnJlZE5vZGVzPW5ldyBlLlNldCksdC5kZWZlcnJlZE5vZGVzLmFkZChyKSl9ZnVuY3Rpb24gR00ocil7dmFyIGk9dmEocik7aS5kZWZlcnJlZE5vZGVzJiZpLmRlZmVycmVkTm9kZXMuZm9yRWFjaChITSl9ZnVuY3Rpb24gSE0ocil7ZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucHVzaChcImNoZWNrXCIsXCJjaGVja0RlZmVycmVkTm9kZVwiLHtraW5kOnIua2luZCxwb3M6ci5wb3MsZW5kOnIuZW5kLHBhdGg6ci50cmFjaW5nUGF0aH0pO3ZhciBpPUllO3N3aXRjaChJZT1yLEVlPTAsci5raW5kKXtjYXNlIDIwODpjYXNlIDIwOTpjYXNlIDIxMDpjYXNlIDE2NTpjYXNlIDI4MDpGZyhyKTticmVhaztjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDE2OTpjYXNlIDE2ODpaNyhyKTticmVhaztjYXNlIDE3MjpjYXNlIDE3MzphNihyKTticmVhaztjYXNlIDIyNjpsTShyKTticmVhaztjYXNlIDE2Mzp3TyhyKTticmVhaztjYXNlIDI3OTprNShyKTticmVhaztjYXNlIDI3ODpONShyKTticmVha31JZT1pLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpfWZ1bmN0aW9uIFhNKHIpe2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJjaGVja1wiLFwiY2hlY2tTb3VyY2VGaWxlXCIse3BhdGg6ci5wYXRofSwhMCksZS5wZXJmb3JtYW5jZS5tYXJrKFwiYmVmb3JlQ2hlY2tcIiksUU0ociksZS5wZXJmb3JtYW5jZS5tYXJrKFwiYWZ0ZXJDaGVja1wiKSxlLnBlcmZvcm1hbmNlLm1lYXN1cmUoXCJDaGVja1wiLFwiYmVmb3JlQ2hlY2tcIixcImFmdGVyQ2hlY2tcIiksZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucG9wKCl9ZnVuY3Rpb24gRzYocixpKXtpZihpKXJldHVybiExO3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuISF5ZS5ub1VudXNlZExvY2FscztjYXNlIDE6cmV0dXJuISF5ZS5ub1VudXNlZFBhcmFtZXRlcnM7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihyKX19ZnVuY3Rpb24gSDYocil7cmV0dXJuIEZvLmdldChyLnBhdGgpfHxlLmVtcHR5QXJyYXl9ZnVuY3Rpb24gUU0ocil7dmFyIGk9dmEocik7aWYoIShpLmZsYWdzJjEpKXtpZihlLnNraXBUeXBlQ2hlY2tpbmcocix5ZSxsKSlyZXR1cm47REwociksZS5jbGVhcihYdCksZS5jbGVhcihaYSksZS5jbGVhcihibiksZS5jbGVhcihfYSksZS5mb3JFYWNoKHIuc3RhdGVtZW50cyxpbyksaW8oci5lbmRPZkZpbGVUb2tlbiksR00ociksZS5pc0V4dGVybmFsT3JDb21tb25Kc01vZHVsZShyKSYmQV8ociksZmUoZnVuY3Rpb24oKXshci5pc0RlY2xhcmF0aW9uRmlsZSYmKHllLm5vVW51c2VkTG9jYWxzfHx5ZS5ub1VudXNlZFBhcmFtZXRlcnMpJiZfNihINihyKSxmdW5jdGlvbih0LG8scyl7IWUuY29udGFpbnNQYXJzZUVycm9yKHQpJiZHNihvLCEhKHQuZmxhZ3MmMTY3NzcyMTYpKSYmcm4uYWRkKHMpfSl9KSx5ZS5pbXBvcnRzTm90VXNlZEFzVmFsdWVzPT09MiYmIXIuaXNEZWNsYXJhdGlvbkZpbGUmJmUuaXNFeHRlcm5hbE1vZHVsZShyKSYmak0ociksZS5pc0V4dGVybmFsT3JDb21tb25Kc01vZHVsZShyKSYmVjYociksWHQubGVuZ3RoJiYoZS5mb3JFYWNoKFh0LENGKSxlLmNsZWFyKFh0KSksWmEubGVuZ3RoJiYoZS5mb3JFYWNoKFphLGtGKSxlLmNsZWFyKFphKSksYm4ubGVuZ3RoJiYoZS5mb3JFYWNoKGJuLElGKSxlLmNsZWFyKGJuKSksX2EubGVuZ3RoJiYoZS5mb3JFYWNoKF9hLE9GKSxlLmNsZWFyKF9hKSksaS5mbGFnc3w9MX19ZnVuY3Rpb24gWDYocixpKXt0cnl7cmV0dXJuIGc9aSxZTShyKX1maW5hbGx5e2c9dm9pZCAwfX1mdW5jdGlvbiBPUygpe2Zvcih2YXIgcj0wLGk9RDtyPGkubGVuZ3RoO3IrKyl7dmFyIHQ9aVtyXTt0KCl9RD1bXX1mdW5jdGlvbiBGUyhyKXtPUygpO3ZhciBpPWZlO2ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LFhNKHIpLGZlPWl9ZnVuY3Rpb24gWU0ocil7aWYocil7T1MoKTt2YXIgaT1ybi5nZXRHbG9iYWxEaWFnbm9zdGljcygpLHQ9aS5sZW5ndGg7RlMocik7dmFyIG89cm4uZ2V0RGlhZ25vc3RpY3Moci5maWxlTmFtZSkscz1ybi5nZXRHbG9iYWxEaWFnbm9zdGljcygpO2lmKHMhPT1pKXt2YXIgdT1lLnJlbGF0aXZlQ29tcGxlbWVudChpLHMsZS5jb21wYXJlRGlhZ25vc3RpY3MpO3JldHVybiBlLmNvbmNhdGVuYXRlKHUsbyl9ZWxzZSBpZih0PT09MCYmcy5sZW5ndGg+MClyZXR1cm4gZS5jb25jYXRlbmF0ZShzLG8pO3JldHVybiBvfXJldHVybiBlLmZvckVhY2gobC5nZXRTb3VyY2VGaWxlcygpLEZTKSxybi5nZXREaWFnbm9zdGljcygpfWZ1bmN0aW9uICRNKCl7cmV0dXJuIE9TKCkscm4uZ2V0R2xvYmFsRGlhZ25vc3RpY3MoKX1mdW5jdGlvbiBaTShyLGkpe2lmKHIuZmxhZ3MmMzM1NTQ0MzIpcmV0dXJuW107dmFyIHQ9ZS5jcmVhdGVTeW1ib2xUYWJsZSgpLG89ITE7cmV0dXJuIHMoKSx0LmRlbGV0ZShcInRoaXNcIiksWV8odCk7ZnVuY3Rpb24gcygpe2Zvcig7cjspe3N3aXRjaChyLmxvY2FscyYmIUN1KHIpJiZoKHIubG9jYWxzLGkpLHIua2luZCl7Y2FzZSAzMDU6aWYoIWUuaXNFeHRlcm5hbE1vZHVsZShyKSlicmVhaztjYXNlIDI2MTp6KEV0KHIpLmV4cG9ydHMsaSYyNjIzNDc1KTticmVhaztjYXNlIDI2MDpoKEV0KHIpLmV4cG9ydHMsaSY4KTticmVhaztjYXNlIDIyNjp2YXIgbWU9ci5uYW1lO21lJiZ1KHIuc3ltYm9sLGkpO2Nhc2UgMjU3OmNhc2UgMjU4Om98fGgoTmYoRXQocikpLGkmNzg4OTY4KTticmVhaztjYXNlIDIxMzp2YXIgTWU9ci5uYW1lO01lJiZ1KHIuc3ltYm9sLGkpO2JyZWFrfWUuaW50cm9kdWNlc0FyZ3VtZW50c0V4b3RpY09iamVjdChyKSYmdShvcixpKSxvPWUuaXNTdGF0aWMocikscj1yLnBhcmVudH1oKGlpLGkpfWZ1bmN0aW9uIHUobWUsTWUpe2lmKGUuZ2V0Q29tYmluZWRMb2NhbEFuZEV4cG9ydFN5bWJvbEZsYWdzKG1lKSZNZSl7dmFyICRlPW1lLmVzY2FwZWROYW1lO3QuaGFzKCRlKXx8dC5zZXQoJGUsbWUpfX1mdW5jdGlvbiBoKG1lLE1lKXtNZSYmbWUuZm9yRWFjaChmdW5jdGlvbigkZSl7dSgkZSxNZSl9KX1mdW5jdGlvbiB6KG1lLE1lKXtNZSYmbWUuZm9yRWFjaChmdW5jdGlvbigkZSl7IWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoJGUsMjc1KSYmIWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoJGUsMjc0KSYmdSgkZSxNZSl9KX19ZnVuY3Rpb24gZTkocil7cmV0dXJuIHIua2luZD09PTc5JiZ6eShyLnBhcmVudCkmJmUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oci5wYXJlbnQpPT09cn1mdW5jdGlvbiB6eShyKXtzd2l0Y2goci5raW5kKXtjYXNlIDE2MzpjYXNlIDI1NzpjYXNlIDI1ODpjYXNlIDI1OTpjYXNlIDI2MDpjYXNlIDM0NTpjYXNlIDMzODpjYXNlIDMzOTpyZXR1cm4hMDtjYXNlIDI2NzpyZXR1cm4gci5pc1R5cGVPbmx5O2Nhc2UgMjcwOmNhc2UgMjc1OnJldHVybiByLnBhcmVudC5wYXJlbnQuaXNUeXBlT25seTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBRNihyKXtmb3IoO3IucGFyZW50LmtpbmQ9PT0xNjE7KXI9ci5wYXJlbnQ7cmV0dXJuIHIucGFyZW50LmtpbmQ9PT0xNzh9ZnVuY3Rpb24gcjkocil7Zm9yKDtyLnBhcmVudC5raW5kPT09MjA2OylyPXIucGFyZW50O3JldHVybiByLnBhcmVudC5raW5kPT09MjI4fWZ1bmN0aW9uIFk2KHIsaSl7Zm9yKHZhciB0O3I9ZS5nZXRDb250YWluaW5nQ2xhc3MociksISghcnx8KHQ9aShyKSkpOyk7cmV0dXJuIHR9ZnVuY3Rpb24gaTkocil7cmV0dXJuISFlLmZpbmRBbmNlc3RvcihyLGZ1bmN0aW9uKGkpe3JldHVybiBlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihpKSYmZS5ub2RlSXNQcmVzZW50KGkuYm9keSl8fGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKGkpPyEwOmUuaXNDbGFzc0xpa2UoaSl8fGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihpKT9cInF1aXRcIjohMX0pfWZ1bmN0aW9uIE1TKHIsaSl7cmV0dXJuISFZNihyLGZ1bmN0aW9uKHQpe3JldHVybiB0PT09aX0pfWZ1bmN0aW9uIHQ5KHIpe2Zvcig7ci5wYXJlbnQua2luZD09PTE2MTspcj1yLnBhcmVudDtpZihyLnBhcmVudC5raW5kPT09MjY1KXJldHVybiByLnBhcmVudC5tb2R1bGVSZWZlcmVuY2U9PT1yP3IucGFyZW50OnZvaWQgMDtpZihyLnBhcmVudC5raW5kPT09MjcxKXJldHVybiByLnBhcmVudC5leHByZXNzaW9uPT09cj9yLnBhcmVudDp2b2lkIDB9ZnVuY3Rpb24gVzAocil7cmV0dXJuIHQ5KHIpIT09dm9pZCAwfWZ1bmN0aW9uIGE5KHIpe3ZhciBpPWUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChyLnBhcmVudC5wYXJlbnQpO3N3aXRjaChpKXtjYXNlIDE6Y2FzZSAzOnJldHVybiBFdChyLnBhcmVudCk7Y2FzZSA0OmNhc2UgMjpjYXNlIDU6cmV0dXJuIEV0KHIucGFyZW50LnBhcmVudCl9fWZ1bmN0aW9uIG45KHIpe2Zvcih2YXIgaT1yLnBhcmVudDtlLmlzUXVhbGlmaWVkTmFtZShpKTspcj1pLGk9aS5wYXJlbnQ7aWYoaSYmaS5raW5kPT09MjAwJiZpLnF1YWxpZmllcj09PXIpcmV0dXJuIGl9ZnVuY3Rpb24gJDYocil7aWYoZS5pc0RlY2xhcmF0aW9uTmFtZShyKSlyZXR1cm4gRXQoci5wYXJlbnQpO2lmKGUuaXNJbkpTRmlsZShyKSYmci5wYXJlbnQua2luZD09PTIwNiYmci5wYXJlbnQ9PT1yLnBhcmVudC5wYXJlbnQubGVmdCYmIWUuaXNQcml2YXRlSWRlbnRpZmllcihyKSYmIWUuaXNKU0RvY01lbWJlck5hbWUocikpe3ZhciBpPWE5KHIpO2lmKGkpcmV0dXJuIGl9aWYoci5wYXJlbnQua2luZD09PTI3MSYmZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKHIpKXt2YXIgdD1EcyhyLDI5OTgyNzEsITApO2lmKHQmJnQhPT14ZSlyZXR1cm4gdH1lbHNlIGlmKGUuaXNFbnRpdHlOYW1lKHIpJiZXMChyKSl7dmFyIG89ZS5nZXRBbmNlc3RvcihyLDI2NSk7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KG8hPT12b2lkIDApLE5sKHIsITApfWlmKGUuaXNFbnRpdHlOYW1lKHIpKXt2YXIgcz1uOShyKTtpZihzKXtWYShzKTt2YXIgdT12YShyKS5yZXNvbHZlZFN5bWJvbDtyZXR1cm4gdT09PXhlP3ZvaWQgMDp1fX1mb3IoO2UuaXNSaWdodFNpZGVPZlF1YWxpZmllZE5hbWVPclByb3BlcnR5QWNjZXNzT3JKU0RvY01lbWJlck5hbWUocik7KXI9ci5wYXJlbnQ7aWYocjkocikpe3ZhciBoPTA7ci5wYXJlbnQua2luZD09PTIyOD8oaD03ODg5NjgsZS5pc0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50c0luQ2xhc3NFeHRlbmRzQ2xhdXNlKHIucGFyZW50KSYmKGh8PTExMTU1MSkpOmg9MTkyMCxofD0yMDk3MTUyO3ZhciB6PWUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbihyKT9EcyhyLGgpOnZvaWQgMDtpZih6KXJldHVybiB6fWlmKHIucGFyZW50LmtpbmQ9PT0zNDApcmV0dXJuIGUuZ2V0UGFyYW1ldGVyU3ltYm9sRnJvbUpTRG9jKHIucGFyZW50KTtpZihyLnBhcmVudC5raW5kPT09MTYzJiZyLnBhcmVudC5wYXJlbnQua2luZD09PTM0NCl7ZS5EZWJ1Zy5hc3NlcnQoIWUuaXNJbkpTRmlsZShyKSk7dmFyIG1lPWUuZ2V0VHlwZVBhcmFtZXRlckZyb21Kc0RvYyhyLnBhcmVudCk7cmV0dXJuIG1lJiZtZS5zeW1ib2x9aWYoZS5pc0V4cHJlc3Npb25Ob2RlKHIpKXtpZihlLm5vZGVJc01pc3NpbmcocikpcmV0dXJuO3ZhciBNZT1lLmZpbmRBbmNlc3RvcihyLGUub3IoZS5pc0pTRG9jTGlua0xpa2UsZS5pc0pTRG9jTmFtZVJlZmVyZW5jZSxlLmlzSlNEb2NNZW1iZXJOYW1lKSksaD1NZT85MDExMTk6MTExNTUxO2lmKHIua2luZD09PTc5KXtpZihlLmlzSlNYVGFnTmFtZShyKSYmZG0ocikpe3ZhciAkZT1GYihyLnBhcmVudCk7cmV0dXJuICRlPT09eGU/dm9pZCAwOiRlfXZhciB0cj1EcyhyLGgsITEsITAsZS5nZXRIb3N0U2lnbmF0dXJlRnJvbUpTRG9jKHIpKTtpZighdHImJk1lKXt2YXIgZHI9ZS5maW5kQW5jZXN0b3IocixlLm9yKGUuaXNDbGFzc0xpa2UsZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKSk7aWYoZHIpcmV0dXJuIHEwKHIsRXQoZHIpKX1yZXR1cm4gdHJ9ZWxzZXtpZihlLmlzUHJpdmF0ZUlkZW50aWZpZXIocikpcmV0dXJuIG0wKHIpO2lmKHIua2luZD09PTIwNnx8ci5raW5kPT09MTYxKXt2YXIgRHI9dmEocik7cmV0dXJuIERyLnJlc29sdmVkU3ltYm9sP0RyLnJlc29sdmVkU3ltYm9sOihyLmtpbmQ9PT0yMDY/VkMociwwKTpLQyhyLDApLCFEci5yZXNvbHZlZFN5bWJvbCYmTWUmJmUuaXNRdWFsaWZpZWROYW1lKHIpP3EwKHIpOkRyLnJlc29sdmVkU3ltYm9sKX1lbHNlIGlmKGUuaXNKU0RvY01lbWJlck5hbWUocikpcmV0dXJuIHEwKHIpfX1lbHNlIGlmKFE2KHIpKXt2YXIgaD1yLnBhcmVudC5raW5kPT09MTc4Pzc4ODk2ODoxOTIwLCRlPURzKHIsaCwhMSwhMCk7cmV0dXJuICRlJiYkZSE9PXhlPyRlOnloKHIpfWlmKHIucGFyZW50LmtpbmQ9PT0xNzcpcmV0dXJuIERzKHIsMSl9ZnVuY3Rpb24gcTAocixpKXtpZihlLmlzRW50aXR5TmFtZShyKSl7dmFyIHQ9OTAxMTE5LG89RHMocix0LCExLCEwLGUuZ2V0SG9zdFNpZ25hdHVyZUZyb21KU0RvYyhyKSk7aWYoIW8mJmUuaXNJZGVudGlmaWVyKHIpJiZpJiYobz1zbyhxcyhkYyhpKSxyLmVzY2FwZWRUZXh0LHQpKSksbylyZXR1cm4gb312YXIgcz1lLmlzSWRlbnRpZmllcihyKT9pOnEwKHIubGVmdCksdT1lLmlzSWRlbnRpZmllcihyKT9yLmVzY2FwZWRUZXh0OnIucmlnaHQuZXNjYXBlZFRleHQ7aWYocyl7dmFyIGg9cy5mbGFncyYxMTE1NTEmJmJpKEp0KHMpLFwicHJvdG90eXBlXCIpLHo9aD9KdChoKTpnbyhzKTtyZXR1cm4gYmkoeix1KX19ZnVuY3Rpb24gZWwocixpKXtpZihyLmtpbmQ9PT0zMDUpcmV0dXJuIGUuaXNFeHRlcm5hbE1vZHVsZShyKT9zbyhyLnN5bWJvbCk6dm9pZCAwO3ZhciB0PXIucGFyZW50LG89dC5wYXJlbnQ7aWYoIShyLmZsYWdzJjMzNTU0NDMyKSl7aWYoWShyKSl7dmFyIHM9RXQodCk7cmV0dXJuIGUuaXNJbXBvcnRPckV4cG9ydFNwZWNpZmllcihyLnBhcmVudCkmJnIucGFyZW50LnByb3BlcnR5TmFtZT09PXI/d2Iocyk6c31lbHNlIGlmKGUuaXNMaXRlcmFsQ29tcHV0ZWRQcm9wZXJ0eURlY2xhcmF0aW9uTmFtZShyKSlyZXR1cm4gRXQodC5wYXJlbnQpO2lmKHIua2luZD09PTc5KXtpZihXMChyKSlyZXR1cm4gJDYocik7aWYodC5raW5kPT09MjAzJiZvLmtpbmQ9PT0yMDEmJnI9PT10LnByb3BlcnR5TmFtZSl7dmFyIHU9QmQobyksaD1iaSh1LHIuZXNjYXBlZFRleHQpO2lmKGgpcmV0dXJuIGh9ZWxzZSBpZihlLmlzTWV0YVByb3BlcnR5KHQpJiZ0Lm5hbWU9PT1yKXJldHVybiB0LmtleXdvcmRUb2tlbj09PTEwMyYmZS5pZFRleHQocik9PT1cInRhcmdldFwiP3RTKHQpLnN5bWJvbDp0LmtleXdvcmRUb2tlbj09PTEwMCYmZS5pZFRleHQocik9PT1cIm1ldGFcIj9UeCgpLm1lbWJlcnMuZ2V0KFwibWV0YVwiKTp2b2lkIDB9c3dpdGNoKHIua2luZCl7Y2FzZSA3OTpjYXNlIDgwOmNhc2UgMjA2OmNhc2UgMTYxOmlmKCFlLmlzVGhpc0luVHlwZVF1ZXJ5KHIpKXJldHVybiAkNihyKTtjYXNlIDEwODp2YXIgej1lLmdldFRoaXNDb250YWluZXIociwhMSk7aWYoZS5pc0Z1bmN0aW9uTGlrZSh6KSl7dmFyIG1lPXlsKHopO2lmKG1lLnRoaXNQYXJhbWV0ZXIpcmV0dXJuIG1lLnRoaXNQYXJhbWV0ZXJ9aWYoZS5pc0luRXhwcmVzc2lvbkNvbnRleHQocikpcmV0dXJuIHluKHIpLnN5bWJvbDtjYXNlIDE5MjpyZXR1cm4gQ2gocikuc3ltYm9sO2Nhc2UgMTA2OnJldHVybiB5bihyKS5zeW1ib2w7Y2FzZSAxMzQ6dmFyIE1lPXIucGFyZW50O3JldHVybiBNZSYmTWUua2luZD09PTE3MT9NZS5wYXJlbnQuc3ltYm9sOnZvaWQgMDtjYXNlIDEwOmNhc2UgMTQ6aWYoZS5pc0V4dGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oci5wYXJlbnQucGFyZW50KSYmZS5nZXRFeHRlcm5hbE1vZHVsZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uRXhwcmVzc2lvbihyLnBhcmVudC5wYXJlbnQpPT09cnx8KHIucGFyZW50LmtpbmQ9PT0yNjZ8fHIucGFyZW50LmtpbmQ9PT0yNzIpJiZyLnBhcmVudC5tb2R1bGVTcGVjaWZpZXI9PT1yfHxlLmlzSW5KU0ZpbGUocikmJmUuaXNSZXF1aXJlQ2FsbChyLnBhcmVudCwhMSl8fGUuaXNJbXBvcnRDYWxsKHIucGFyZW50KXx8ZS5pc0xpdGVyYWxUeXBlTm9kZShyLnBhcmVudCkmJmUuaXNMaXRlcmFsSW1wb3J0VHlwZU5vZGUoci5wYXJlbnQucGFyZW50KSYmci5wYXJlbnQucGFyZW50LmFyZ3VtZW50PT09ci5wYXJlbnQpcmV0dXJuIGFjKHIscixpKTtpZihlLmlzQ2FsbEV4cHJlc3Npb24odCkmJmUuaXNCaW5kYWJsZU9iamVjdERlZmluZVByb3BlcnR5Q2FsbCh0KSYmdC5hcmd1bWVudHNbMV09PT1yKXJldHVybiBFdCh0KTtjYXNlIDg6dmFyICRlPWUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbih0KT90LmFyZ3VtZW50RXhwcmVzc2lvbj09PXI/R3ModC5leHByZXNzaW9uKTp2b2lkIDA6ZS5pc0xpdGVyYWxUeXBlTm9kZSh0KSYmZS5pc0luZGV4ZWRBY2Nlc3NUeXBlTm9kZShvKT9WYShvLm9iamVjdFR5cGUpOnZvaWQgMDtyZXR1cm4gJGUmJmJpKCRlLGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHIudGV4dCkpO2Nhc2UgODg6Y2FzZSA5ODpjYXNlIDM4OmNhc2UgODQ6cmV0dXJuIEV0KHIucGFyZW50KTtjYXNlIDIwMDpyZXR1cm4gZS5pc0xpdGVyYWxJbXBvcnRUeXBlTm9kZShyKT9lbChyLmFyZ3VtZW50LmxpdGVyYWwsaSk6dm9pZCAwO2Nhc2UgOTM6cmV0dXJuIGUuaXNFeHBvcnRBc3NpZ25tZW50KHIucGFyZW50KT9lLkRlYnVnLmNoZWNrRGVmaW5lZChyLnBhcmVudC5zeW1ib2wpOnZvaWQgMDtjYXNlIDEwMDpjYXNlIDEwMzpyZXR1cm4gZS5pc01ldGFQcm9wZXJ0eShyLnBhcmVudCk/QWsoci5wYXJlbnQpLnN5bWJvbDp2b2lkIDA7Y2FzZSAyMzE6cmV0dXJuIHluKHIpLnN5bWJvbDtkZWZhdWx0OnJldHVybn19fWZ1bmN0aW9uIG85KHIpe2lmKGUuaXNJZGVudGlmaWVyKHIpJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHIucGFyZW50KSYmci5wYXJlbnQubmFtZT09PXIpe3ZhciBpPVpfKHIpLHQ9R3Moci5wYXJlbnQuZXhwcmVzc2lvbiksbz10LmZsYWdzJjEwNDg1NzY/dC50eXBlczpbdF07cmV0dXJuIGUuZmxhdE1hcChvLGZ1bmN0aW9uKHMpe3JldHVybiBlLmZpbHRlcihIbihzKSxmdW5jdGlvbih1KXtyZXR1cm4gYW4oaSx1LmtleVR5cGUpfSl9KX19ZnVuY3Rpb24gczkocil7aWYociYmci5raW5kPT09Mjk3KXJldHVybiBEcyhyLm5hbWUsMjIwODcwMyl9ZnVuY3Rpb24gYzkocil7cmV0dXJuIGUuaXNFeHBvcnRTcGVjaWZpZXIocik/ci5wYXJlbnQucGFyZW50Lm1vZHVsZVNwZWNpZmllcj9rbChyLnBhcmVudC5wYXJlbnQscik6RHMoci5wcm9wZXJ0eU5hbWV8fHIubmFtZSwyOTk4MjcxKTpEcyhyLDI5OTgyNzEpfWZ1bmN0aW9uIEJkKHIpe2lmKGUuaXNTb3VyY2VGaWxlKHIpJiYhZS5pc0V4dGVybmFsTW9kdWxlKHIpfHxyLmZsYWdzJjMzNTU0NDMyKXJldHVybiBQZTt2YXIgaT1lLnRyeUdldENsYXNzSW1wbGVtZW50aW5nT3JFeHRlbmRpbmdFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMociksdD1pJiZhYShFdChpLmNsYXNzKSk7aWYoZS5pc1BhcnRPZlR5cGVOb2RlKHIpKXt2YXIgbz1WYShyKTtyZXR1cm4gdD9SYyhvLHQudGhpc1R5cGUpOm99aWYoZS5pc0V4cHJlc3Npb25Ob2RlKHIpKXJldHVybiBaNihyKTtpZih0JiYhaS5pc0ltcGxlbWVudHMpe3ZhciBzPWUuZmlyc3RPclVuZGVmaW5lZChRYyh0KSk7cmV0dXJuIHM/UmMocyx0LnRoaXNUeXBlKTpQZX1pZih6eShyKSl7dmFyIHU9RXQocik7cmV0dXJuIGdvKHUpfWlmKGU5KHIpKXt2YXIgdT1lbChyKTtyZXR1cm4gdT9nbyh1KTpQZX1pZihlLmlzRGVjbGFyYXRpb24ocikpe3ZhciB1PUV0KHIpO3JldHVybiB1P0p0KHUpOlBlfWlmKFkocikpe3ZhciB1PWVsKHIpO3JldHVybiB1P0p0KHUpOlBlfWlmKGUuaXNCaW5kaW5nUGF0dGVybihyKSlyZXR1cm4gR18oci5wYXJlbnQsITAsMCl8fFBlO2lmKFcwKHIpKXt2YXIgdT1lbChyKTtpZih1KXt2YXIgaD1nbyh1KTtyZXR1cm4gbm4oaCk/SnQodSk6aH19cmV0dXJuIGUuaXNNZXRhUHJvcGVydHkoci5wYXJlbnQpJiZyLnBhcmVudC5rZXl3b3JkVG9rZW49PT1yLmtpbmQ/QWsoci5wYXJlbnQpOlBlfWZ1bmN0aW9uIFYwKHIpe2lmKGUuRGVidWcuYXNzZXJ0KHIua2luZD09PTIwNXx8ci5raW5kPT09MjA0KSxyLnBhcmVudC5raW5kPT09MjQ0KXt2YXIgaT1CeShyLnBhcmVudCk7cmV0dXJuIFJkKHIsaXx8UGUpfWlmKHIucGFyZW50LmtpbmQ9PT0yMjEpe3ZhciBpPUdzKHIucGFyZW50LnJpZ2h0KTtyZXR1cm4gUmQocixpfHxQZSl9aWYoci5wYXJlbnQua2luZD09PTI5Nil7dmFyIHQ9ZS5jYXN0KHIucGFyZW50LnBhcmVudCxlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24pLG89VjAodCl8fFBlLHM9ZS5pbmRleE9mTm9kZSh0LnByb3BlcnRpZXMsci5wYXJlbnQpO3JldHVybiBVayh0LG8scyl9dmFyIHU9ZS5jYXN0KHIucGFyZW50LGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKSxoPVYwKHUpfHxQZSx6PU5fKDY1LGgsVHIsci5wYXJlbnQpfHxQZTtyZXR1cm4gemsodSxoLHUuZWxlbWVudHMuaW5kZXhPZihyKSx6KX1mdW5jdGlvbiB1OShyKXt2YXIgaT1WMChlLmNhc3Qoci5wYXJlbnQucGFyZW50LGUuaXNBc3NpZ25tZW50UGF0dGVybikpO3JldHVybiBpJiZiaShpLHIuZXNjYXBlZFRleHQpfWZ1bmN0aW9uIFo2KHIpe3JldHVybiBlLmlzUmlnaHRTaWRlT2ZRdWFsaWZpZWROYW1lT3JQcm9wZXJ0eUFjY2VzcyhyKSYmKHI9ci5wYXJlbnQpLGpjKEdzKHIpKX1mdW5jdGlvbiBsOShyKXt2YXIgaT1FdChyLnBhcmVudCk7cmV0dXJuIGUuaXNTdGF0aWMocik/SnQoaSk6Z28oaSl9ZnVuY3Rpb24gZjkocil7dmFyIGk9ci5uYW1lO3N3aXRjaChpLmtpbmQpe2Nhc2UgNzk6cmV0dXJuIEJ1KGUuaWRUZXh0KGkpKTtjYXNlIDg6Y2FzZSAxMDpyZXR1cm4gQnUoaS50ZXh0KTtjYXNlIDE2Mjp2YXIgdD10XyhpKTtyZXR1cm4gTnModCwxMjI4OCk/dDpMaTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoXCJVbnN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lLlwiKX19ZnVuY3Rpb24gTFMocil7cj0kcyhyKTt2YXIgaT1lLmNyZWF0ZVN5bWJvbFRhYmxlKHVvKHIpKSx0PW90KHIsMCkubGVuZ3RoP1pyOm90KHIsMSkubGVuZ3RoP1NpOnZvaWQgMDtyZXR1cm4gdCYmZS5mb3JFYWNoKHVvKHQpLGZ1bmN0aW9uKG8pe2kuaGFzKG8uZXNjYXBlZE5hbWUpfHxpLnNldChvLmVzY2FwZWROYW1lLG8pfSksdGYoaSl9ZnVuY3Rpb24gUlMocil7cmV0dXJuIGUudHlwZUhhc0NhbGxPckNvbnN0cnVjdFNpZ25hdHVyZXMocixEaSl9ZnVuY3Rpb24gZUEocil7dmFyIGk9Xzkocik7cmV0dXJuIGk/ZS5mbGF0TWFwKGksZUEpOltyXX1mdW5jdGlvbiBfOShyKXtpZihlLmdldENoZWNrRmxhZ3MocikmNilyZXR1cm4gZS5tYXBEZWZpbmVkKEFhKHIpLmNvbnRhaW5pbmdUeXBlLnR5cGVzLGZ1bmN0aW9uKHUpe3JldHVybiBiaSh1LHIuZXNjYXBlZE5hbWUpfSk7aWYoci5mbGFncyYzMzU1NDQzMil7dmFyIGk9cix0PWkubGVmdFNwcmVhZCxvPWkucmlnaHRTcHJlYWQscz1pLnN5bnRoZXRpY09yaWdpbjtyZXR1cm4gdD9bdCxvXTpzP1tzXTplLnNpbmdsZUVsZW1lbnRBcnJheShwOShyKSl9fWZ1bmN0aW9uIHA5KHIpe2Zvcih2YXIgaSx0PXI7dD1BYSh0KS50YXJnZXQ7KWk9dDtyZXR1cm4gaX1mdW5jdGlvbiBkOShyKXtpZihlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihyKSlyZXR1cm4hMTt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzSWRlbnRpZmllcik7aWYoIWkpcmV0dXJuITE7dmFyIHQ9aS5wYXJlbnQ7aWYoIXQpcmV0dXJuITE7dmFyIG89KGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24odCl8fGUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQodCkpJiZ0Lm5hbWU9PT1pO3JldHVybiFvJiZOdihpKT09PW9yfWZ1bmN0aW9uIGc5KHIpe3ZhciBpPWFjKHIucGFyZW50LHIpO2lmKCFpfHxlLmlzU2hvcnRoYW5kQW1iaWVudE1vZHVsZVN5bWJvbChpKSlyZXR1cm4hMDt2YXIgdD1sbChpKTtpPVVzKGkpO3ZhciBvPUFhKGkpO3JldHVybiBvLmV4cG9ydHNTb21lVmFsdWU9PT12b2lkIDAmJihvLmV4cG9ydHNTb21lVmFsdWU9dD8hIShpLmZsYWdzJjExMTU1MSk6ZS5mb3JFYWNoRW50cnkoUHUoaSkscykpLG8uZXhwb3J0c1NvbWVWYWx1ZTtmdW5jdGlvbiBzKHUpe3JldHVybiB1PW9zKHUpLHUmJiEhKHUuZmxhZ3MmMTExNTUxKX19ZnVuY3Rpb24gbTkocil7cmV0dXJuIGUuaXNNb2R1bGVPckVudW1EZWNsYXJhdGlvbihyLnBhcmVudCkmJnI9PT1yLnBhcmVudC5uYW1lfWZ1bmN0aW9uIHY5KHIsaSl7dmFyIHQsbz1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzSWRlbnRpZmllcik7aWYobyl7dmFyIHM9TnYobyxtOShvKSk7aWYocyl7aWYocy5mbGFncyYxMDQ4NTc2KXt2YXIgdT1zbyhzLmV4cG9ydFN5bWJvbCk7aWYoIWkmJnUuZmxhZ3MmOTQ0JiYhKHUuZmxhZ3MmMykpcmV0dXJuO3M9dX12YXIgaD1ZcyhzKTtpZihoKXtpZihoLmZsYWdzJjUxMiYmKCh0PWgudmFsdWVEZWNsYXJhdGlvbik9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LmtpbmQpPT09MzA1KXt2YXIgej1oLnZhbHVlRGVjbGFyYXRpb24sbWU9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKG8pLE1lPXohPT1tZTtyZXR1cm4gTWU/dm9pZCAwOnp9cmV0dXJuIGUuZmluZEFuY2VzdG9yKG8ucGFyZW50LGZ1bmN0aW9uKCRlKXtyZXR1cm4gZS5pc01vZHVsZU9yRW51bURlY2xhcmF0aW9uKCRlKSYmRXQoJGUpPT09aH0pfX19fWZ1bmN0aW9uIHk5KHIpe2lmKHIuZ2VuZXJhdGVkSW1wb3J0UmVmZXJlbmNlKXJldHVybiByLmdlbmVyYXRlZEltcG9ydFJlZmVyZW5jZTt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzSWRlbnRpZmllcik7aWYoaSl7dmFyIHQ9TnYoaSk7aWYoWm4odCwxMTE1NTEpJiYhdnUodCkpcmV0dXJuIHJ1KHQpfX1mdW5jdGlvbiBoOShyKXtyZXR1cm4gci52YWx1ZURlY2xhcmF0aW9uJiZlLmlzQmluZGluZ0VsZW1lbnQoci52YWx1ZURlY2xhcmF0aW9uKSYmZS53YWxrVXBCaW5kaW5nRWxlbWVudHNBbmRQYXR0ZXJucyhyLnZhbHVlRGVjbGFyYXRpb24pLnBhcmVudC5raW5kPT09MjkyfWZ1bmN0aW9uIHJBKHIpe2lmKHIuZmxhZ3MmNDE4JiZyLnZhbHVlRGVjbGFyYXRpb24mJiFlLmlzU291cmNlRmlsZShyLnZhbHVlRGVjbGFyYXRpb24pKXt2YXIgaT1BYShyKTtpZihpLmlzRGVjbGFyYXRpb25XaXRoQ29sbGlkaW5nTmFtZT09PXZvaWQgMCl7dmFyIHQ9ZS5nZXRFbmNsb3NpbmdCbG9ja1Njb3BlQ29udGFpbmVyKHIudmFsdWVEZWNsYXJhdGlvbik7aWYoZS5pc1N0YXRlbWVudFdpdGhMb2NhbHModCl8fGg5KHIpKXt2YXIgbz12YShyLnZhbHVlRGVjbGFyYXRpb24pO2lmKGVzKHQucGFyZW50LHIuZXNjYXBlZE5hbWUsMTExNTUxLHZvaWQgMCx2b2lkIDAsITEpKWkuaXNEZWNsYXJhdGlvbldpdGhDb2xsaWRpbmdOYW1lPSEwO2Vsc2UgaWYoby5mbGFncyYyNjIxNDQpe3ZhciBzPW8uZmxhZ3MmNTI0Mjg4LHU9ZS5pc0l0ZXJhdGlvblN0YXRlbWVudCh0LCExKSxoPXQua2luZD09PTIzNSYmZS5pc0l0ZXJhdGlvblN0YXRlbWVudCh0LnBhcmVudCwhMSk7aS5pc0RlY2xhcmF0aW9uV2l0aENvbGxpZGluZ05hbWU9IWUuaXNCbG9ja1Njb3BlZENvbnRhaW5lclRvcExldmVsKHQpJiYoIXN8fCF1JiYhaCl9ZWxzZSBpLmlzRGVjbGFyYXRpb25XaXRoQ29sbGlkaW5nTmFtZT0hMX19cmV0dXJuIGkuaXNEZWNsYXJhdGlvbldpdGhDb2xsaWRpbmdOYW1lfXJldHVybiExfWZ1bmN0aW9uIEQ5KHIpe2lmKCFlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihyKSl7dmFyIGk9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc0lkZW50aWZpZXIpO2lmKGkpe3ZhciB0PU52KGkpO2lmKHQmJnJBKHQpKXJldHVybiB0LnZhbHVlRGVjbGFyYXRpb259fX1mdW5jdGlvbiBiOShyKXt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzRGVjbGFyYXRpb24pO2lmKGkpe3ZhciB0PUV0KGkpO2lmKHQpcmV0dXJuIHJBKHQpfXJldHVybiExfWZ1bmN0aW9uIGlBKHIpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMjY1OnJldHVybiBLMChFdChyKSk7Y2FzZSAyNjc6Y2FzZSAyNjg6Y2FzZSAyNzA6Y2FzZSAyNzU6dmFyIGk9RXQocik7cmV0dXJuISFpJiZLMChpKSYmIXZ1KGkpO2Nhc2UgMjcyOnZhciB0PXIuZXhwb3J0Q2xhdXNlO3JldHVybiEhdCYmKGUuaXNOYW1lc3BhY2VFeHBvcnQodCl8fGUuc29tZSh0LmVsZW1lbnRzLGlBKSk7Y2FzZSAyNzE6cmV0dXJuIHIuZXhwcmVzc2lvbiYmci5leHByZXNzaW9uLmtpbmQ9PT03OT9LMChFdChyKSk6ITB9cmV0dXJuITF9ZnVuY3Rpb24gUzkocil7dmFyIGk9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKTtpZihpPT09dm9pZCAwfHxpLnBhcmVudC5raW5kIT09MzA1fHwhZS5pc0ludGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oaSkpcmV0dXJuITE7dmFyIHQ9SzAoRXQoaSkpO3JldHVybiB0JiZpLm1vZHVsZVJlZmVyZW5jZSYmIWUubm9kZUlzTWlzc2luZyhpLm1vZHVsZVJlZmVyZW5jZSl9ZnVuY3Rpb24gSzAocil7aWYoIXIpcmV0dXJuITE7dmFyIGk9Y3UoUHMocikpO3JldHVybiBpPT09eGU/ITA6ISEoaS5mbGFncyYxMTE1NTEpJiYoZS5zaG91bGRQcmVzZXJ2ZUNvbnN0RW51bXMoeWUpfHwhQXYoaSkpfWZ1bmN0aW9uIEF2KHIpe3JldHVybiBsUyhyKXx8ISFyLmNvbnN0RW51bU9ubHlNb2R1bGV9ZnVuY3Rpb24gRzAocixpKXtpZih5ZihyKSl7dmFyIHQ9RXQociksbz10JiZBYSh0KTtpZihvIT1udWxsJiZvLnJlZmVyZW5jZWQpcmV0dXJuITA7dmFyIHM9QWEodCkuYWxpYXNUYXJnZXQ7aWYocyYmZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKHIpJjEmJnMuZmxhZ3MmMTExNTUxJiYoZS5zaG91bGRQcmVzZXJ2ZUNvbnN0RW51bXMoeWUpfHwhQXYocykpKXJldHVybiEwfXJldHVybiBpPyEhZS5mb3JFYWNoQ2hpbGQocixmdW5jdGlvbih1KXtyZXR1cm4gRzAodSxpKX0pOiExfWZ1bmN0aW9uIHRBKHIpe2lmKGUubm9kZUlzUHJlc2VudChyLmJvZHkpKXtpZihlLmlzR2V0QWNjZXNzb3Iocil8fGUuaXNTZXRBY2Nlc3NvcihyKSlyZXR1cm4hMTt2YXIgaT1FdChyKSx0PVNfKGkpO3JldHVybiB0Lmxlbmd0aD4xfHx0Lmxlbmd0aD09PTEmJnRbMF0uZGVjbGFyYXRpb24hPT1yfXJldHVybiExfWZ1bmN0aW9uIGFBKHIpe3JldHVybiEhWWUmJiFrZChyKSYmIWUuaXNKU0RvY1BhcmFtZXRlclRhZyhyKSYmISFyLmluaXRpYWxpemVyJiYhZS5oYXNTeW50YWN0aWNNb2RpZmllcihyLDE2NDc2KX1mdW5jdGlvbiBUOShyKXtyZXR1cm4gWWUmJmtkKHIpJiYhci5pbml0aWFsaXplciYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihyLDE2NDc2KX1mdW5jdGlvbiB4OShyKXt2YXIgaT1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbik7aWYoIWkpcmV0dXJuITE7dmFyIHQ9RXQoaSk7cmV0dXJuIXR8fCEodC5mbGFncyYxNik/ITE6ISFlLmZvckVhY2hFbnRyeShkYyh0KSxmdW5jdGlvbihvKXtyZXR1cm4gby5mbGFncyYxMTE1NTEmJm8udmFsdWVEZWNsYXJhdGlvbiYmZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihvLnZhbHVlRGVjbGFyYXRpb24pfSl9ZnVuY3Rpb24gRTkocil7dmFyIGk9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24pO2lmKCFpKXJldHVybiBlLmVtcHR5QXJyYXk7dmFyIHQ9RXQoaSk7cmV0dXJuIHQmJnVvKEp0KHQpKXx8ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIFVnKHIpe3ZhciBpLHQ9ci5pZHx8MDtyZXR1cm4gdDwwfHx0Pj1kdS5sZW5ndGg/MDooKGk9ZHVbdF0pPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5mbGFncyl8fDB9ZnVuY3Rpb24gSDAocil7cmV0dXJuIFU2KHIucGFyZW50KSx2YShyKS5lbnVtTWVtYmVyVmFsdWV9ZnVuY3Rpb24gbkEocil7c3dpdGNoKHIua2luZCl7Y2FzZSAyOTk6Y2FzZSAyMDY6Y2FzZSAyMDc6cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gQlMocil7aWYoci5raW5kPT09Mjk5KXJldHVybiBIMChyKTt2YXIgaT12YShyKS5yZXNvbHZlZFN5bWJvbDtpZihpJiZpLmZsYWdzJjgpe3ZhciB0PWkudmFsdWVEZWNsYXJhdGlvbjtpZihlLmlzRW51bUNvbnN0KHQucGFyZW50KSlyZXR1cm4gSDAodCl9fWZ1bmN0aW9uIEpTKHIpe3JldHVybiEhKHIuZmxhZ3MmNTI0Mjg4KSYmb3QociwwKS5sZW5ndGg+MH1mdW5jdGlvbiBDOShyLGkpe3ZhciB0LG8scz1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzRW50aXR5TmFtZSk7aWYoIXN8fGkmJihpPWUuZ2V0UGFyc2VUcmVlTm9kZShpKSwhaSkpcmV0dXJuIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlVua25vd247dmFyIHU9ITE7aWYoZS5pc1F1YWxpZmllZE5hbWUocykpe3ZhciBoPURzKGUuZ2V0Rmlyc3RJZGVudGlmaWVyKHMpLDExMTU1MSwhMCwhMCxpKTt1PSEhKCEoKHQ9aD09bnVsbD92b2lkIDA6aC5kZWNsYXJhdGlvbnMpPT09bnVsbHx8dD09PXZvaWQgMCkmJnQuZXZlcnkoZS5pc1R5cGVPbmx5SW1wb3J0T3JFeHBvcnREZWNsYXJhdGlvbikpfXZhciB6PURzKHMsMTExNTUxLCEwLCEwLGkpLG1lPXomJnouZmxhZ3MmMjA5NzE1Mj9Qcyh6KTp6O3V8fCh1PSEhKCEoKG89ej09bnVsbD92b2lkIDA6ei5kZWNsYXJhdGlvbnMpPT09bnVsbHx8bz09PXZvaWQgMCkmJm8uZXZlcnkoZS5pc1R5cGVPbmx5SW1wb3J0T3JFeHBvcnREZWNsYXJhdGlvbikpKTt2YXIgTWU9RHMocyw3ODg5NjgsITAsITEsaSk7aWYobWUmJm1lPT09TWUpe3ZhciAkZT1uRCghMSk7aWYoJGUmJm1lPT09JGUpcmV0dXJuIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlByb21pc2U7dmFyIHRyPUp0KG1lKTtpZih0ciYmcWQodHIpKXJldHVybiB1P2UuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlR5cGVXaXRoQ2FsbFNpZ25hdHVyZTplLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5UeXBlV2l0aENvbnN0cnVjdFNpZ25hdHVyZUFuZFZhbHVlfWlmKCFNZSlyZXR1cm4gdT9lLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5PYmplY3RUeXBlOmUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlVua25vd247dmFyIGRyPWdvKE1lKTtyZXR1cm4gbm4oZHIpP3U/ZS5UeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQuT2JqZWN0VHlwZTplLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5Vbmtub3duOmRyLmZsYWdzJjM/ZS5UeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQuT2JqZWN0VHlwZTpOcyhkciwyNDU3NjApP2UuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlZvaWROdWxsYWJsZU9yTmV2ZXJUeXBlOk5zKGRyLDUyOCk/ZS5UeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQuQm9vbGVhblR5cGU6TnMoZHIsMjk2KT9lLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5OdW1iZXJMaWtlVHlwZTpOcyhkciwyMTEyKT9lLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5CaWdJbnRMaWtlVHlwZTpOcyhkciw0MDI2NTMzMTYpP2UuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlN0cmluZ0xpa2VUeXBlOlluKGRyKT9lLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5BcnJheUxpa2VUeXBlOk5zKGRyLDEyMjg4KT9lLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5FU1N5bWJvbFR5cGU6SlMoZHIpP2UuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlR5cGVXaXRoQ2FsbFNpZ25hdHVyZTpUdShkcik/ZS5UeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQuQXJyYXlMaWtlVHlwZTplLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5PYmplY3RUeXBlfWZ1bmN0aW9uIGs5KHIsaSx0LG8scyl7dmFyIHU9ZS5nZXRQYXJzZVRyZWVOb2RlKHIsZS5pc1ZhcmlhYmxlTGlrZU9yQWNjZXNzb3IpO2lmKCF1KXJldHVybiBlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMTMwKTt2YXIgaD1FdCh1KSx6PWgmJiEoaC5mbGFncyYxMzMxMjApP0hwKEp0KGgpKTpQZTtyZXR1cm4gei5mbGFncyY4MTkyJiZ6LnN5bWJvbD09PWgmJih0fD0xMDQ4NTc2KSxzJiYoej1pXyh6KSksVXIudHlwZVRvVHlwZU5vZGUoeixpLHR8MTAyNCxvKX1mdW5jdGlvbiBBOShyLGksdCxvKXt2YXIgcz1lLmdldFBhcnNlVHJlZU5vZGUocixlLmlzRnVuY3Rpb25MaWtlKTtpZighcylyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDEzMCk7dmFyIHU9eWwocyk7cmV0dXJuIFVyLnR5cGVUb1R5cGVOb2RlKHlvKHUpLGksdHwxMDI0LG8pfWZ1bmN0aW9uIE45KHIsaSx0LG8pe3ZhciBzPWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNFeHByZXNzaW9uKTtpZighcylyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDEzMCk7dmFyIHU9JGMoWjYocykpO3JldHVybiBVci50eXBlVG9UeXBlTm9kZSh1LGksdHwxMDI0LG8pfWZ1bmN0aW9uIFA5KHIpe3JldHVybiBpaS5oYXMoZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMocikpfWZ1bmN0aW9uIE52KHIsaSl7dmFyIHQ9dmEocikucmVzb2x2ZWRTeW1ib2w7aWYodClyZXR1cm4gdDt2YXIgbz1yO2lmKGkpe3ZhciBzPXIucGFyZW50O2UuaXNEZWNsYXJhdGlvbihzKSYmcj09PXMubmFtZSYmKG89emkocykpfXJldHVybiBlcyhvLHIuZXNjYXBlZFRleHQsMzI1NzI3OSx2b2lkIDAsdm9pZCAwLCEwKX1mdW5jdGlvbiBJOShyKXtpZighZS5pc0dlbmVyYXRlZElkZW50aWZpZXIocikpe3ZhciBpPWUuZ2V0UGFyc2VUcmVlTm9kZShyLGUuaXNJZGVudGlmaWVyKTtpZihpKXt2YXIgdD1OdihpKTtpZih0KXJldHVybiBjdSh0KS52YWx1ZURlY2xhcmF0aW9ufX19ZnVuY3Rpb24gdzkocil7cmV0dXJuIGUuaXNEZWNsYXJhdGlvblJlYWRvbmx5KHIpfHxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihyKSYmZS5pc1ZhckNvbnN0KHIpP0twKEp0KEV0KHIpKSk6ITF9ZnVuY3Rpb24gTzkocixpLHQpe3ZhciBvPXIuZmxhZ3MmMTAyND9Vci5zeW1ib2xUb0V4cHJlc3Npb24oci5zeW1ib2wsMTExNTUxLGksdm9pZCAwLHQpOnI9PT1EdD9lLmZhY3RvcnkuY3JlYXRlVHJ1ZSgpOnI9PT14dCYmZS5mYWN0b3J5LmNyZWF0ZUZhbHNlKCk7aWYobylyZXR1cm4gbzt2YXIgcz1yLnZhbHVlO3JldHVybiB0eXBlb2Ygcz09XCJvYmplY3RcIj9lLmZhY3RvcnkuY3JlYXRlQmlnSW50TGl0ZXJhbChzKTp0eXBlb2Ygcz09XCJudW1iZXJcIj9lLmZhY3RvcnkuY3JlYXRlTnVtZXJpY0xpdGVyYWwocyk6ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocyl9ZnVuY3Rpb24gRjkocixpKXt2YXIgdD1KdChFdChyKSk7cmV0dXJuIE85KHQscixpKX1mdW5jdGlvbiBvQShyKXtyZXR1cm4gcj8ocG8ociksZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLmxvY2FsSnN4RmFjdG9yeXx8U2UpOlNlfWZ1bmN0aW9uIGpTKHIpe2lmKHIpe3ZhciBpPWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKTtpZihpKXtpZihpLmxvY2FsSnN4RnJhZ21lbnRGYWN0b3J5KXJldHVybiBpLmxvY2FsSnN4RnJhZ21lbnRGYWN0b3J5O3ZhciB0PWkucHJhZ21hcy5nZXQoXCJqc3hmcmFnXCIpLG89ZS5pc0FycmF5KHQpP3RbMF06dDtpZihvKXJldHVybiBpLmxvY2FsSnN4RnJhZ21lbnRGYWN0b3J5PWUucGFyc2VJc29sYXRlZEVudGl0eU5hbWUoby5hcmd1bWVudHMuZmFjdG9yeSxBZSksaS5sb2NhbEpzeEZyYWdtZW50RmFjdG9yeX19aWYoeWUuanN4RnJhZ21lbnRGYWN0b3J5KXJldHVybiBlLnBhcnNlSXNvbGF0ZWRFbnRpdHlOYW1lKHllLmpzeEZyYWdtZW50RmFjdG9yeSxBZSl9ZnVuY3Rpb24gTTkoKXt2YXIgcj1sLmdldFJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMoKSxpO3JldHVybiByJiYoaT1uZXcgZS5NYXAsci5mb3JFYWNoKGZ1bmN0aW9uKG1lLE1lLCRlKXtpZighKCFtZXx8IW1lLnJlc29sdmVkRmlsZU5hbWUpKXt2YXIgdHI9bC5nZXRTb3VyY2VGaWxlKG1lLnJlc29sdmVkRmlsZU5hbWUpO3RyJiZ6KHRyLE1lLCRlKX19KSkse2dldFJlZmVyZW5jZWRFeHBvcnRDb250YWluZXI6djksZ2V0UmVmZXJlbmNlZEltcG9ydERlY2xhcmF0aW9uOnk5LGdldFJlZmVyZW5jZWREZWNsYXJhdGlvbldpdGhDb2xsaWRpbmdOYW1lOkQ5LGlzRGVjbGFyYXRpb25XaXRoQ29sbGlkaW5nTmFtZTpiOSxpc1ZhbHVlQWxpYXNEZWNsYXJhdGlvbjpmdW5jdGlvbihtZSl7dmFyIE1lPWUuZ2V0UGFyc2VUcmVlTm9kZShtZSk7cmV0dXJuIE1lP2lBKE1lKTohMH0saGFzR2xvYmFsTmFtZTpQOSxpc1JlZmVyZW5jZWRBbGlhc0RlY2xhcmF0aW9uOmZ1bmN0aW9uKG1lLE1lKXt2YXIgJGU9ZS5nZXRQYXJzZVRyZWVOb2RlKG1lKTtyZXR1cm4gJGU/RzAoJGUsTWUpOiEwfSxnZXROb2RlQ2hlY2tGbGFnczpmdW5jdGlvbihtZSl7dmFyIE1lPWUuZ2V0UGFyc2VUcmVlTm9kZShtZSk7cmV0dXJuIE1lP1VnKE1lKTowfSxpc1RvcExldmVsVmFsdWVJbXBvcnRFcXVhbHNXaXRoRW50aXR5TmFtZTpTOSxpc0RlY2xhcmF0aW9uVmlzaWJsZTp3dSxpc0ltcGxlbWVudGF0aW9uT2ZPdmVybG9hZDp0QSxpc1JlcXVpcmVkSW5pdGlhbGl6ZWRQYXJhbWV0ZXI6YUEsaXNPcHRpb25hbFVuaW5pdGlhbGl6ZWRQYXJhbWV0ZXJQcm9wZXJ0eTpUOSxpc0V4cGFuZG9GdW5jdGlvbkRlY2xhcmF0aW9uOng5LGdldFByb3BlcnRpZXNPZkNvbnRhaW5lckZ1bmN0aW9uOkU5LGNyZWF0ZVR5cGVPZkRlY2xhcmF0aW9uOms5LGNyZWF0ZVJldHVyblR5cGVPZlNpZ25hdHVyZURlY2xhcmF0aW9uOkE5LGNyZWF0ZVR5cGVPZkV4cHJlc3Npb246TjksY3JlYXRlTGl0ZXJhbENvbnN0VmFsdWU6RjksaXNTeW1ib2xBY2Nlc3NpYmxlOmdfLGlzRW50aXR5TmFtZVZpc2libGU6YWYsZ2V0Q29uc3RhbnRWYWx1ZTpmdW5jdGlvbihtZSl7dmFyIE1lPWUuZ2V0UGFyc2VUcmVlTm9kZShtZSxuQSk7cmV0dXJuIE1lP0JTKE1lKTp2b2lkIDB9LGNvbGxlY3RMaW5rZWRBbGlhc2VzOlZfLGdldFJlZmVyZW5jZWRWYWx1ZURlY2xhcmF0aW9uOkk5LGdldFR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZDpDOSxpc09wdGlvbmFsUGFyYW1ldGVyOmtkLG1vZHVsZUV4cG9ydHNTb21lVmFsdWU6ZzksaXNBcmd1bWVudHNMb2NhbEJpbmRpbmc6ZDksZ2V0RXh0ZXJuYWxNb2R1bGVGaWxlRnJvbURlY2xhcmF0aW9uOmZ1bmN0aW9uKG1lKXt2YXIgTWU9ZS5nZXRQYXJzZVRyZWVOb2RlKG1lLGUuaGFzUG9zc2libGVFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSk7cmV0dXJuIE1lJiZVUyhNZSl9LGdldFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzRm9yRW50aXR5TmFtZTpzLGdldFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzRm9yU3ltYm9sOnUsaXNMaXRlcmFsQ29uc3REZWNsYXJhdGlvbjp3OSxpc0xhdGVCb3VuZDpmdW5jdGlvbihtZSl7dmFyIE1lPWUuZ2V0UGFyc2VUcmVlTm9kZShtZSxlLmlzRGVjbGFyYXRpb24pLCRlPU1lJiZFdChNZSk7cmV0dXJuISEoJGUmJmUuZ2V0Q2hlY2tGbGFncygkZSkmNDA5Nil9LGdldEpzeEZhY3RvcnlFbnRpdHk6b0EsZ2V0SnN4RnJhZ21lbnRGYWN0b3J5RW50aXR5OmpTLGdldEFsbEFjY2Vzc29yRGVjbGFyYXRpb25zOmZ1bmN0aW9uKG1lKXttZT1lLmdldFBhcnNlVHJlZU5vZGUobWUsZS5pc0dldE9yU2V0QWNjZXNzb3JEZWNsYXJhdGlvbik7dmFyIE1lPW1lLmtpbmQ9PT0xNzM/MTcyOjE3MywkZT1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKEV0KG1lKSxNZSksdHI9JGUmJiRlLnBvczxtZS5wb3M/JGU6bWUsZHI9JGUmJiRlLnBvczxtZS5wb3M/bWU6JGUsRHI9bWUua2luZD09PTE3Mz9tZTokZSxRcj1tZS5raW5kPT09MTcyP21lOiRlO3JldHVybntmaXJzdEFjY2Vzc29yOnRyLHNlY29uZEFjY2Vzc29yOmRyLHNldEFjY2Vzc29yOkRyLGdldEFjY2Vzc29yOlFyfX0sZ2V0U3ltYm9sT2ZFeHRlcm5hbE1vZHVsZVNwZWNpZmllcjpmdW5jdGlvbihtZSl7cmV0dXJuIFBsKG1lLG1lLHZvaWQgMCl9LGlzQmluZGluZ0NhcHR1cmVkQnlOb2RlOmZ1bmN0aW9uKG1lLE1lKXt2YXIgJGU9ZS5nZXRQYXJzZVRyZWVOb2RlKG1lKSx0cj1lLmdldFBhcnNlVHJlZU5vZGUoTWUpO3JldHVybiEhJGUmJiEhdHImJihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbih0cil8fGUuaXNCaW5kaW5nRWxlbWVudCh0cikpJiZVOCgkZSx0cil9LGdldERlY2xhcmF0aW9uU3RhdGVtZW50c0ZvclNvdXJjZUZpbGU6ZnVuY3Rpb24obWUsTWUsJGUsdHIpe3ZhciBkcj1lLmdldFBhcnNlVHJlZU5vZGUobWUpO2UuRGVidWcuYXNzZXJ0KGRyJiZkci5raW5kPT09MzA1LFwiTm9uLXNvdXJjZWZpbGUgbm9kZSBwYXNzZWQgaW50byBnZXREZWNsYXJhdGlvbnNGb3JTb3VyY2VGaWxlXCIpO3ZhciBEcj1FdChtZSk7cmV0dXJuIERyP0RyLmV4cG9ydHM/VXIuc3ltYm9sVGFibGVUb0RlY2xhcmF0aW9uU3RhdGVtZW50cyhEci5leHBvcnRzLG1lLE1lLCRlLHRyKTpbXTptZS5sb2NhbHM/VXIuc3ltYm9sVGFibGVUb0RlY2xhcmF0aW9uU3RhdGVtZW50cyhtZS5sb2NhbHMsbWUsTWUsJGUsdHIpOltdfSxpc0ltcG9ydFJlcXVpcmVkQnlBdWdtZW50YXRpb246dH07ZnVuY3Rpb24gdChtZSl7dmFyIE1lPWUuZ2V0U291cmNlRmlsZU9mTm9kZShtZSk7aWYoIU1lLnN5bWJvbClyZXR1cm4hMTt2YXIgJGU9VVMobWUpO2lmKCEkZXx8JGU9PT1NZSlyZXR1cm4hMTtmb3IodmFyIHRyPVB1KE1lLnN5bWJvbCksZHI9MCxEcj1lLmFycmF5RnJvbSh0ci52YWx1ZXMoKSk7ZHI8RHIubGVuZ3RoO2RyKyspe3ZhciBRcj1Ecltkcl07aWYoUXIubWVyZ2VJZCl7dmFyIGxpPXNvKFFyKTtpZihsaS5kZWNsYXJhdGlvbnMpZm9yKHZhciBUaT0wLENpPWxpLmRlY2xhcmF0aW9ucztUaTxDaS5sZW5ndGg7VGkrKyl7dmFyICRpPUNpW1RpXSxaaT1lLmdldFNvdXJjZUZpbGVPZk5vZGUoJGkpO2lmKFppPT09JGUpcmV0dXJuITB9fX1yZXR1cm4hMX1mdW5jdGlvbiBvKG1lKXtyZXR1cm4gbWUucGFyZW50JiZtZS5wYXJlbnQua2luZD09PTIyOCYmbWUucGFyZW50LnBhcmVudCYmbWUucGFyZW50LnBhcmVudC5raW5kPT09MjkxfWZ1bmN0aW9uIHMobWUpe2lmKCEhaSl7dmFyIE1lPTc5MDUwNDsobWUua2luZD09PTc5JiZfbShtZSl8fG1lLmtpbmQ9PT0yMDYmJiFvKG1lKSkmJihNZT0xMTYwMTI3KTt2YXIgJGU9RHMobWUsTWUsITApO3JldHVybiAkZSYmJGUhPT14ZT91KCRlLE1lKTp2b2lkIDB9fWZ1bmN0aW9uIHUobWUsTWUpe2lmKCEoIWl8fCFoKG1lKSkpe2Zvcih2YXIgJGUsdHI9MCxkcj1tZS5kZWNsYXJhdGlvbnM7dHI8ZHIubGVuZ3RoO3RyKyspe3ZhciBEcj1kclt0cl07aWYoRHIuc3ltYm9sJiZEci5zeW1ib2wuZmxhZ3MmTWUpe3ZhciBRcj1lLmdldFNvdXJjZUZpbGVPZk5vZGUoRHIpLGxpPWkuZ2V0KFFyLnBhdGgpO2lmKGxpKSgkZXx8KCRlPVtdKSkucHVzaChsaSk7ZWxzZSByZXR1cm59fXJldHVybiAkZX19ZnVuY3Rpb24gaChtZSl7aWYoIW1lLmRlY2xhcmF0aW9ucylyZXR1cm4hMTtmb3IodmFyIE1lPW1lOzspe3ZhciAkZT1ZcyhNZSk7aWYoJGUpTWU9JGU7ZWxzZSBicmVha31pZihNZS52YWx1ZURlY2xhcmF0aW9uJiZNZS52YWx1ZURlY2xhcmF0aW9uLmtpbmQ9PT0zMDUmJk1lLmZsYWdzJjUxMilyZXR1cm4hMTtmb3IodmFyIHRyPTAsZHI9bWUuZGVjbGFyYXRpb25zO3RyPGRyLmxlbmd0aDt0cisrKXt2YXIgRHI9ZHJbdHJdLFFyPWUuZ2V0U291cmNlRmlsZU9mTm9kZShEcik7aWYoaS5oYXMoUXIucGF0aCkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24geihtZSxNZSwkZSl7aWYoIWkuaGFzKG1lLnBhdGgpKXtpLnNldChtZS5wYXRoLFtNZSwkZV0pO2Zvcih2YXIgdHI9MCxkcj1tZS5yZWZlcmVuY2VkRmlsZXM7dHI8ZHIubGVuZ3RoO3RyKyspe3ZhciBEcj1kclt0cl0sUXI9RHIuZmlsZU5hbWUsbGk9RHIucmVzb2x1dGlvbk1vZGUsVGk9ZS5yZXNvbHZlVHJpcGxlc2xhc2hSZWZlcmVuY2UoUXIsbWUuZmlsZU5hbWUpLENpPWwuZ2V0U291cmNlRmlsZShUaSk7Q2kmJnooQ2ksTWUsbGl8fG1lLmltcGxpZWROb2RlRm9ybWF0KX19fX1mdW5jdGlvbiBVUyhyKXt2YXIgaT1yLmtpbmQ9PT0yNjE/ZS50cnlDYXN0KHIubmFtZSxlLmlzU3RyaW5nTGl0ZXJhbCk6ZS5nZXRFeHRlcm5hbE1vZHVsZU5hbWUociksdD1QbChpLGksdm9pZCAwKTtpZighIXQpcmV0dXJuIGUuZ2V0RGVjbGFyYXRpb25PZktpbmQodCwzMDUpfWZ1bmN0aW9uIEw5KCl7Zm9yKHZhciByPTAsaT1sLmdldFNvdXJjZUZpbGVzKCk7cjxpLmxlbmd0aDtyKyspe3ZhciB0PWlbcl07ZS5iaW5kU291cmNlRmlsZSh0LHllKX1kbj1uZXcgZS5NYXA7Zm9yKHZhciBvLHM9MCx1PWwuZ2V0U291cmNlRmlsZXMoKTtzPHUubGVuZ3RoO3MrKyl7dmFyIHQ9dVtzXTtpZighdC5yZWRpcmVjdEluZm8pe2lmKCFlLmlzRXh0ZXJuYWxPckNvbW1vbkpzTW9kdWxlKHQpKXt2YXIgaD10LmxvY2Fscy5nZXQoXCJnbG9iYWxUaGlzXCIpO2lmKGghPW51bGwmJmguZGVjbGFyYXRpb25zKWZvcih2YXIgej0wLG1lPWguZGVjbGFyYXRpb25zO3o8bWUubGVuZ3RoO3orKyl7dmFyIE1lPW1lW3pdO3JuLmFkZChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKE1lLGUuRGlhZ25vc3RpY3MuRGVjbGFyYXRpb25fbmFtZV9jb25mbGljdHNfd2l0aF9idWlsdF9pbl9nbG9iYWxfaWRlbnRpZmllcl8wLFwiZ2xvYmFsVGhpc1wiKSl9Z3UoaWksdC5sb2NhbHMpfWlmKHQuanNHbG9iYWxBdWdtZW50YXRpb25zJiZndShpaSx0LmpzR2xvYmFsQXVnbWVudGF0aW9ucyksdC5wYXR0ZXJuQW1iaWVudE1vZHVsZXMmJnQucGF0dGVybkFtYmllbnRNb2R1bGVzLmxlbmd0aCYmKFM9ZS5jb25jYXRlbmF0ZShTLHQucGF0dGVybkFtYmllbnRNb2R1bGVzKSksdC5tb2R1bGVBdWdtZW50YXRpb25zLmxlbmd0aCYmKG98fChvPVtdKSkucHVzaCh0Lm1vZHVsZUF1Z21lbnRhdGlvbnMpLHQuc3ltYm9sJiZ0LnN5bWJvbC5nbG9iYWxFeHBvcnRzKXt2YXIgJGU9dC5zeW1ib2wuZ2xvYmFsRXhwb3J0czskZS5mb3JFYWNoKGZ1bmN0aW9uKFJhLGNhKXtpaS5oYXMoY2EpfHxpaS5zZXQoY2EsUmEpfSl9fX1pZihvKWZvcih2YXIgdHI9MCxkcj1vO3RyPGRyLmxlbmd0aDt0cisrKWZvcih2YXIgRHI9ZHJbdHJdLFFyPTAsbGk9RHI7UXI8bGkubGVuZ3RoO1FyKyspe3ZhciBUaT1saVtRcl07IWUuaXNHbG9iYWxTY29wZUF1Z21lbnRhdGlvbihUaS5wYXJlbnQpfHxEcChUaSl9aWYoc2QoaWksTm8sZS5EaWFnbm9zdGljcy5EZWNsYXJhdGlvbl9uYW1lX2NvbmZsaWN0c193aXRoX2J1aWx0X2luX2dsb2JhbF9pZGVudGlmaWVyXzApLEFhKG1pKS50eXBlPXZpLEFhKG9yKS50eXBlPWxjKFwiSUFyZ3VtZW50c1wiLDAsITApLEFhKHhlKS50eXBlPVBlLEFhKHBlKS50eXBlPXR1KDE2LHBlKSxQaT1sYyhcIkFycmF5XCIsMSwhMCkscWU9bGMoXCJPYmplY3RcIiwwLCEwKSxicj1sYyhcIkZ1bmN0aW9uXCIsMCwhMCksWnI9RXImJmxjKFwiQ2FsbGFibGVGdW5jdGlvblwiLDAsITApfHxicixTaT1FciYmbGMoXCJOZXdhYmxlRnVuY3Rpb25cIiwwLCEwKXx8YnIsQ3Q9bGMoXCJTdHJpbmdcIiwwLCEwKSxzYT1sYyhcIk51bWJlclwiLDAsITApLGVuPWxjKFwiQm9vbGVhblwiLDAsITApLFdhPWxjKFwiUmVnRXhwXCIsMCwhMCksbW89WnMoT2UpLFNvPVpzKG5yKSxTbz09PUJhJiYoU289cnModm9pZCAwLHdlLGUuZW1wdHlBcnJheSxlLmVtcHR5QXJyYXksZS5lbXB0eUFycmF5KSksUWk9TngoXCJSZWFkb25seUFycmF5XCIsMSl8fFBpLEdvPVFpPyRtKFFpLFtPZV0pOm1vLHFuPU54KFwiVGhpc1R5cGVcIiwxKSxvKWZvcih2YXIgQ2k9MCwkaT1vO0NpPCRpLmxlbmd0aDtDaSsrKWZvcih2YXIgRHI9JGlbQ2ldLFppPTAscXQ9RHI7Wmk8cXQubGVuZ3RoO1ppKyspe3ZhciBUaT1xdFtaaV07ZS5pc0dsb2JhbFNjb3BlQXVnbWVudGF0aW9uKFRpLnBhcmVudCl8fERwKFRpKX1kbi5mb3JFYWNoKGZ1bmN0aW9uKE50KXt2YXIgUmE9TnQuZmlyc3RGaWxlLGNhPU50LnNlY29uZEZpbGUsU249TnQuY29uZmxpY3RpbmdTeW1ib2xzO2lmKFNuLnNpemU8OClTbi5mb3JFYWNoKGZ1bmN0aW9uKEZuLHduKXtmb3IodmFyIFRuPUZuLmlzQmxvY2tTY29wZWQsRW89Rm4uZmlyc3RGaWxlTG9jYXRpb25zLGx0PUZuLnNlY29uZEZpbGVMb2NhdGlvbnMsaXQ9VG4/ZS5EaWFnbm9zdGljcy5DYW5ub3RfcmVkZWNsYXJlX2Jsb2NrX3Njb3BlZF92YXJpYWJsZV8wOmUuRGlhZ25vc3RpY3MuRHVwbGljYXRlX2lkZW50aWZpZXJfMCxZdD0wLElhPUVvO1l0PElhLmxlbmd0aDtZdCsrKXt2YXIgUXQ9SWFbWXRdO2NfKFF0LGl0LHduLGx0KX1mb3IodmFyIEthPTAsY249bHQ7S2E8Y24ubGVuZ3RoO0thKyspe3ZhciBRdD1jbltLYV07Y18oUXQsaXQsd24sRW8pfX0pO2Vsc2V7dmFyIGphPWUuYXJyYXlGcm9tKFNuLmtleXMoKSkuam9pbihcIiwgXCIpO3JuLmFkZChlLmFkZFJlbGF0ZWRJbmZvKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoUmEsZS5EaWFnbm9zdGljcy5EZWZpbml0aW9uc19vZl90aGVfZm9sbG93aW5nX2lkZW50aWZpZXJzX2NvbmZsaWN0X3dpdGhfdGhvc2VfaW5fYW5vdGhlcl9maWxlX0NvbG9uXzAsamEpLGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoY2EsZS5EaWFnbm9zdGljcy5Db25mbGljdHNfYXJlX2luX3RoaXNfZmlsZSkpKSxybi5hZGQoZS5hZGRSZWxhdGVkSW5mbyhlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKGNhLGUuRGlhZ25vc3RpY3MuRGVmaW5pdGlvbnNfb2ZfdGhlX2ZvbGxvd2luZ19pZGVudGlmaWVyc19jb25mbGljdF93aXRoX3Rob3NlX2luX2Fub3RoZXJfZmlsZV9Db2xvbl8wLGphKSxlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKFJhLGUuRGlhZ25vc3RpY3MuQ29uZmxpY3RzX2FyZV9pbl90aGlzX2ZpbGUpKSl9fSksZG49dm9pZCAwfWZ1bmN0aW9uIGZjKHIsaSl7aWYoKG5lJmkpIT09aSYmeWUuaW1wb3J0SGVscGVycyl7dmFyIHQ9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpO2lmKGUuaXNFZmZlY3RpdmVFeHRlcm5hbE1vZHVsZSh0LHllKSYmIShyLmZsYWdzJjE2Nzc3MjE2KSl7dmFyIG89QjkodCxyKTtpZihvIT09eGUpe2Zvcih2YXIgcz1pJn5uZSx1PTE7dTw9NDE5NDMwNDt1PDw9MSlpZihzJnUpe3ZhciBoPVI5KHUpLHo9cXMoby5leHBvcnRzLGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKGgpLDExMTU1MSk7ej91JjUyNDI4OD9lLnNvbWUoU18oeiksZnVuY3Rpb24obWUpe3JldHVybiBXYyhtZSk+M30pfHxYcihyLGUuRGlhZ25vc3RpY3MuVGhpc19zeW50YXhfcmVxdWlyZXNfYW5faW1wb3J0ZWRfaGVscGVyX25hbWVkXzFfd2l0aF8yX3BhcmFtZXRlcnNfd2hpY2hfaXNfbm90X2NvbXBhdGlibGVfd2l0aF90aGVfb25lX2luXzBfQ29uc2lkZXJfdXBncmFkaW5nX3lvdXJfdmVyc2lvbl9vZl8wLGUuZXh0ZXJuYWxIZWxwZXJzTW9kdWxlTmFtZVRleHQsaCw0KTp1JjEwNDg1NzY/ZS5zb21lKFNfKHopLGZ1bmN0aW9uKG1lKXtyZXR1cm4gV2MobWUpPjR9KXx8WHIocixlLkRpYWdub3N0aWNzLlRoaXNfc3ludGF4X3JlcXVpcmVzX2FuX2ltcG9ydGVkX2hlbHBlcl9uYW1lZF8xX3dpdGhfMl9wYXJhbWV0ZXJzX3doaWNoX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfdGhlX29uZV9pbl8wX0NvbnNpZGVyX3VwZ3JhZGluZ195b3VyX3ZlcnNpb25fb2ZfMCxlLmV4dGVybmFsSGVscGVyc01vZHVsZU5hbWVUZXh0LGgsNSk6dSYxMDI0JiYoZS5zb21lKFNfKHopLGZ1bmN0aW9uKG1lKXtyZXR1cm4gV2MobWUpPjJ9KXx8WHIocixlLkRpYWdub3N0aWNzLlRoaXNfc3ludGF4X3JlcXVpcmVzX2FuX2ltcG9ydGVkX2hlbHBlcl9uYW1lZF8xX3dpdGhfMl9wYXJhbWV0ZXJzX3doaWNoX2lzX25vdF9jb21wYXRpYmxlX3dpdGhfdGhlX29uZV9pbl8wX0NvbnNpZGVyX3VwZ3JhZGluZ195b3VyX3ZlcnNpb25fb2ZfMCxlLmV4dGVybmFsSGVscGVyc01vZHVsZU5hbWVUZXh0LGgsMykpOlhyKHIsZS5EaWFnbm9zdGljcy5UaGlzX3N5bnRheF9yZXF1aXJlc19hbl9pbXBvcnRlZF9oZWxwZXJfbmFtZWRfMV93aGljaF9kb2VzX25vdF9leGlzdF9pbl8wX0NvbnNpZGVyX3VwZ3JhZGluZ195b3VyX3ZlcnNpb25fb2ZfMCxlLmV4dGVybmFsSGVscGVyc01vZHVsZU5hbWVUZXh0LGgpfX1uZXw9aX19fWZ1bmN0aW9uIFI5KHIpe3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuXCJfX2V4dGVuZHNcIjtjYXNlIDI6cmV0dXJuXCJfX2Fzc2lnblwiO2Nhc2UgNDpyZXR1cm5cIl9fcmVzdFwiO2Nhc2UgODpyZXR1cm5cIl9fZGVjb3JhdGVcIjtjYXNlIDE2OnJldHVyblwiX19tZXRhZGF0YVwiO2Nhc2UgMzI6cmV0dXJuXCJfX3BhcmFtXCI7Y2FzZSA2NDpyZXR1cm5cIl9fYXdhaXRlclwiO2Nhc2UgMTI4OnJldHVyblwiX19nZW5lcmF0b3JcIjtjYXNlIDI1NjpyZXR1cm5cIl9fdmFsdWVzXCI7Y2FzZSA1MTI6cmV0dXJuXCJfX3JlYWRcIjtjYXNlIDEwMjQ6cmV0dXJuXCJfX3NwcmVhZEFycmF5XCI7Y2FzZSAyMDQ4OnJldHVyblwiX19hd2FpdFwiO2Nhc2UgNDA5NjpyZXR1cm5cIl9fYXN5bmNHZW5lcmF0b3JcIjtjYXNlIDgxOTI6cmV0dXJuXCJfX2FzeW5jRGVsZWdhdG9yXCI7Y2FzZSAxNjM4NDpyZXR1cm5cIl9fYXN5bmNWYWx1ZXNcIjtjYXNlIDMyNzY4OnJldHVyblwiX19leHBvcnRTdGFyXCI7Y2FzZSA2NTUzNjpyZXR1cm5cIl9faW1wb3J0U3RhclwiO2Nhc2UgMTMxMDcyOnJldHVyblwiX19pbXBvcnREZWZhdWx0XCI7Y2FzZSAyNjIxNDQ6cmV0dXJuXCJfX21ha2VUZW1wbGF0ZU9iamVjdFwiO2Nhc2UgNTI0Mjg4OnJldHVyblwiX19jbGFzc1ByaXZhdGVGaWVsZEdldFwiO2Nhc2UgMTA0ODU3NjpyZXR1cm5cIl9fY2xhc3NQcml2YXRlRmllbGRTZXRcIjtjYXNlIDIwOTcxNTI6cmV0dXJuXCJfX2NsYXNzUHJpdmF0ZUZpZWxkSW5cIjtjYXNlIDQxOTQzMDQ6cmV0dXJuXCJfX2NyZWF0ZUJpbmRpbmdcIjtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoXCJVbnJlY29nbml6ZWQgaGVscGVyXCIpfX1mdW5jdGlvbiBCOShyLGkpe3JldHVybiB1ZXx8KHVlPUlsKHIsZS5leHRlcm5hbEhlbHBlcnNNb2R1bGVOYW1lVGV4dCxlLkRpYWdub3N0aWNzLlRoaXNfc3ludGF4X3JlcXVpcmVzX2FuX2ltcG9ydGVkX2hlbHBlcl9idXRfbW9kdWxlXzBfY2Fubm90X2JlX2ZvdW5kLGkpfHx4ZSksdWV9ZnVuY3Rpb24gRmYocil7cmV0dXJuIEo5KHIpfHxzQShyKX1mdW5jdGlvbiBKOShyKXtpZighci5kZWNvcmF0b3JzKXJldHVybiExO2lmKGUubm9kZUNhbkJlRGVjb3JhdGVkKHIsci5wYXJlbnQsci5wYXJlbnQucGFyZW50KSl7aWYoci5raW5kPT09MTcyfHxyLmtpbmQ9PT0xNzMpe3ZhciBpPWUuZ2V0QWxsQWNjZXNzb3JEZWNsYXJhdGlvbnMoci5wYXJlbnQubWVtYmVycyxyKTtpZihpLmZpcnN0QWNjZXNzb3IuZGVjb3JhdG9ycyYmcj09PWkuc2Vjb25kQWNjZXNzb3IpcmV0dXJuIEhzKHIsZS5EaWFnbm9zdGljcy5EZWNvcmF0b3JzX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX211bHRpcGxlX2dldF9TbGFzaHNldF9hY2Nlc3NvcnNfb2ZfdGhlX3NhbWVfbmFtZSl9fWVsc2UgcmV0dXJuIHIua2luZD09PTE2OSYmIWUubm9kZUlzUHJlc2VudChyLmJvZHkpP0hzKHIsZS5EaWFnbm9zdGljcy5BX2RlY29yYXRvcl9jYW5fb25seV9kZWNvcmF0ZV9hX21ldGhvZF9pbXBsZW1lbnRhdGlvbl9ub3RfYW5fb3ZlcmxvYWQpOkhzKHIsZS5EaWFnbm9zdGljcy5EZWNvcmF0b3JzX2FyZV9ub3RfdmFsaWRfaGVyZSk7cmV0dXJuITF9ZnVuY3Rpb24gc0Eocil7dmFyIGk9ajkocik7aWYoaSE9PXZvaWQgMClyZXR1cm4gaTtmb3IodmFyIHQsbyxzLHUsaD0wLHo9MCxtZT1yLm1vZGlmaWVyczt6PG1lLmxlbmd0aDt6Kyspe3ZhciBNZT1tZVt6XTtpZihNZS5raW5kIT09MTQ1KXtpZihyLmtpbmQ9PT0xNjZ8fHIua2luZD09PTE2OClyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfdHlwZV9tZW1iZXIsZS50b2tlblRvU3RyaW5nKE1lLmtpbmQpKTtpZihyLmtpbmQ9PT0xNzYmJihNZS5raW5kIT09MTI0fHwhZS5pc0NsYXNzTGlrZShyLnBhcmVudCkpKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYW5faW5kZXhfc2lnbmF0dXJlLGUudG9rZW5Ub1N0cmluZyhNZS5raW5kKSl9aWYoTWUua2luZCE9PTEwMSYmTWUua2luZCE9PTE0NCYmci5raW5kPT09MTYzKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYV90eXBlX3BhcmFtZXRlcixlLnRva2VuVG9TdHJpbmcoTWUua2luZCkpO3N3aXRjaChNZS5raW5kKXtjYXNlIDg1OmlmKHIua2luZCE9PTI2MClyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLkFfY2xhc3NfbWVtYmVyX2Nhbm5vdF9oYXZlX3RoZV8wX2tleXdvcmQsZS50b2tlblRvU3RyaW5nKDg1KSk7YnJlYWs7Y2FzZSAxNTk6aWYoaCYxNjM4NClyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9hbHJlYWR5X3NlZW4sXCJvdmVycmlkZVwiKTtpZihoJjIpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF8xX21vZGlmaWVyLFwib3ZlcnJpZGVcIixcImRlY2xhcmVcIik7aWYoaCY2NClyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9tdXN0X3ByZWNlZGVfMV9tb2RpZmllcixcIm92ZXJyaWRlXCIsXCJyZWFkb25seVwiKTtpZihoJjI1NilyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9tdXN0X3ByZWNlZGVfMV9tb2RpZmllcixcIm92ZXJyaWRlXCIsXCJhc3luY1wiKTtofD0xNjM4NCx1PU1lO2JyZWFrO2Nhc2UgMTIzOmNhc2UgMTIyOmNhc2UgMTIxOnZhciAkZT12XyhlLm1vZGlmaWVyVG9GbGFnKE1lLmtpbmQpKTtpZihoJjI4KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLkFjY2Vzc2liaWxpdHlfbW9kaWZpZXJfYWxyZWFkeV9zZWVuKTtpZihoJjE2Mzg0KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX211c3RfcHJlY2VkZV8xX21vZGlmaWVyLCRlLFwib3ZlcnJpZGVcIik7aWYoaCYzMilyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9tdXN0X3ByZWNlZGVfMV9tb2RpZmllciwkZSxcInN0YXRpY1wiKTtpZihoJjY0KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX211c3RfcHJlY2VkZV8xX21vZGlmaWVyLCRlLFwicmVhZG9ubHlcIik7aWYoaCYyNTYpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfbXVzdF9wcmVjZWRlXzFfbW9kaWZpZXIsJGUsXCJhc3luY1wiKTtpZihyLnBhcmVudC5raW5kPT09MjYyfHxyLnBhcmVudC5raW5kPT09MzA1KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYV9tb2R1bGVfb3JfbmFtZXNwYWNlX2VsZW1lbnQsJGUpO2lmKGgmMTI4KXJldHVybiBNZS5raW5kPT09MTIxP1R0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF8xX21vZGlmaWVyLCRlLFwiYWJzdHJhY3RcIik6VHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9tdXN0X3ByZWNlZGVfMV9tb2RpZmllciwkZSxcImFic3RyYWN0XCIpO2lmKGUuaXNQcml2YXRlSWRlbnRpZmllckNsYXNzRWxlbWVudERlY2xhcmF0aW9uKHIpKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLkFuX2FjY2Vzc2liaWxpdHlfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF9hX3ByaXZhdGVfaWRlbnRpZmllcik7aHw9ZS5tb2RpZmllclRvRmxhZyhNZS5raW5kKTticmVhaztjYXNlIDEyNDppZihoJjMyKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2FscmVhZHlfc2VlbixcInN0YXRpY1wiKTtpZihoJjY0KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX211c3RfcHJlY2VkZV8xX21vZGlmaWVyLFwic3RhdGljXCIsXCJyZWFkb25seVwiKTtpZihoJjI1NilyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9tdXN0X3ByZWNlZGVfMV9tb2RpZmllcixcInN0YXRpY1wiLFwiYXN5bmNcIik7aWYoci5wYXJlbnQua2luZD09PTI2Mnx8ci5wYXJlbnQua2luZD09PTMwNSlyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfbW9kdWxlX29yX25hbWVzcGFjZV9lbGVtZW50LFwic3RhdGljXCIpO2lmKHIua2luZD09PTE2NClyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfcGFyYW1ldGVyLFwic3RhdGljXCIpO2lmKGgmMTI4KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX3dpdGhfMV9tb2RpZmllcixcInN0YXRpY1wiLFwiYWJzdHJhY3RcIik7aWYoaCYxNjM4NClyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9tdXN0X3ByZWNlZGVfMV9tb2RpZmllcixcInN0YXRpY1wiLFwib3ZlcnJpZGVcIik7aHw9MzIsdD1NZTticmVhaztjYXNlIDE0NTppZihoJjY0KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2FscmVhZHlfc2VlbixcInJlYWRvbmx5XCIpO2lmKHIua2luZCE9PTE2NyYmci5raW5kIT09MTY2JiZyLmtpbmQhPT0xNzYmJnIua2luZCE9PTE2NClyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5yZWFkb25seV9tb2RpZmllcl9jYW5fb25seV9hcHBlYXJfb25fYV9wcm9wZXJ0eV9kZWNsYXJhdGlvbl9vcl9pbmRleF9zaWduYXR1cmUpO2h8PTY0O2JyZWFrO2Nhc2UgOTM6aWYoaCYxKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2FscmVhZHlfc2VlbixcImV4cG9ydFwiKTtpZihoJjIpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfbXVzdF9wcmVjZWRlXzFfbW9kaWZpZXIsXCJleHBvcnRcIixcImRlY2xhcmVcIik7aWYoaCYxMjgpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfbXVzdF9wcmVjZWRlXzFfbW9kaWZpZXIsXCJleHBvcnRcIixcImFic3RyYWN0XCIpO2lmKGgmMjU2KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX211c3RfcHJlY2VkZV8xX21vZGlmaWVyLFwiZXhwb3J0XCIsXCJhc3luY1wiKTtpZihlLmlzQ2xhc3NMaWtlKHIucGFyZW50KSlyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2NsYXNzX2VsZW1lbnRzX29mX3RoaXNfa2luZCxcImV4cG9ydFwiKTtpZihyLmtpbmQ9PT0xNjQpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX3BhcmFtZXRlcixcImV4cG9ydFwiKTtofD0xO2JyZWFrO2Nhc2UgODg6dmFyIHRyPXIucGFyZW50LmtpbmQ9PT0zMDU/ci5wYXJlbnQ6ci5wYXJlbnQucGFyZW50O2lmKHRyLmtpbmQ9PT0yNjEmJiFlLmlzQW1iaWVudE1vZHVsZSh0cikpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuQV9kZWZhdWx0X2V4cG9ydF9jYW5fb25seV9iZV91c2VkX2luX2FuX0VDTUFTY3JpcHRfc3R5bGVfbW9kdWxlKTtpZighKGgmMSkpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfbXVzdF9wcmVjZWRlXzFfbW9kaWZpZXIsXCJleHBvcnRcIixcImRlZmF1bHRcIik7aHw9NTEyO2JyZWFrO2Nhc2UgMTM1OmlmKGgmMilyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9hbHJlYWR5X3NlZW4sXCJkZWNsYXJlXCIpO2lmKGgmMjU2KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX2luX2FuX2FtYmllbnRfY29udGV4dCxcImFzeW5jXCIpO2lmKGgmMTYzODQpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYW1iaWVudF9jb250ZXh0LFwib3ZlcnJpZGVcIik7aWYoZS5pc0NsYXNzTGlrZShyLnBhcmVudCkmJiFlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihyKSlyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2NsYXNzX2VsZW1lbnRzX29mX3RoaXNfa2luZCxcImRlY2xhcmVcIik7aWYoci5raW5kPT09MTY0KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYV9wYXJhbWV0ZXIsXCJkZWNsYXJlXCIpO2lmKHIucGFyZW50LmZsYWdzJjE2Nzc3MjE2JiZyLnBhcmVudC5raW5kPT09MjYyKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLkFfZGVjbGFyZV9tb2RpZmllcl9jYW5ub3RfYmVfdXNlZF9pbl9hbl9hbHJlYWR5X2FtYmllbnRfY29udGV4dCk7aWYoZS5pc1ByaXZhdGVJZGVudGlmaWVyQ2xhc3NFbGVtZW50RGVjbGFyYXRpb24ocikpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF9hX3ByaXZhdGVfaWRlbnRpZmllcixcImRlY2xhcmVcIik7aHw9MixvPU1lO2JyZWFrO2Nhc2UgMTI2OmlmKGgmMTI4KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2FscmVhZHlfc2VlbixcImFic3RyYWN0XCIpO2lmKHIua2luZCE9PTI1NyYmci5raW5kIT09MTgwKXtpZihyLmtpbmQhPT0xNjkmJnIua2luZCE9PTE2NyYmci5raW5kIT09MTcyJiZyLmtpbmQhPT0xNzMpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuYWJzdHJhY3RfbW9kaWZpZXJfY2FuX29ubHlfYXBwZWFyX29uX2FfY2xhc3NfbWV0aG9kX29yX3Byb3BlcnR5X2RlY2xhcmF0aW9uKTtpZighKHIucGFyZW50LmtpbmQ9PT0yNTcmJmUuaGFzU3ludGFjdGljTW9kaWZpZXIoci5wYXJlbnQsMTI4KSkpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuQWJzdHJhY3RfbWV0aG9kc19jYW5fb25seV9hcHBlYXJfd2l0aGluX2FuX2Fic3RyYWN0X2NsYXNzKTtpZihoJjMyKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX3dpdGhfMV9tb2RpZmllcixcInN0YXRpY1wiLFwiYWJzdHJhY3RcIik7aWYoaCY4KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX3dpdGhfMV9tb2RpZmllcixcInByaXZhdGVcIixcImFic3RyYWN0XCIpO2lmKGgmMjU2JiZzKXJldHVybiBUdChzLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF8xX21vZGlmaWVyLFwiYXN5bmNcIixcImFic3RyYWN0XCIpO2lmKGgmMTYzODQpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfbXVzdF9wcmVjZWRlXzFfbW9kaWZpZXIsXCJhYnN0cmFjdFwiLFwib3ZlcnJpZGVcIil9aWYoZS5pc05hbWVkRGVjbGFyYXRpb24ocikmJnIubmFtZS5raW5kPT09ODApcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF9hX3ByaXZhdGVfaWRlbnRpZmllcixcImFic3RyYWN0XCIpO2h8PTEyODticmVhaztjYXNlIDEzMTppZihoJjI1NilyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9hbHJlYWR5X3NlZW4sXCJhc3luY1wiKTtpZihoJjJ8fHIucGFyZW50LmZsYWdzJjE2Nzc3MjE2KXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX2luX2FuX2FtYmllbnRfY29udGV4dCxcImFzeW5jXCIpO2lmKHIua2luZD09PTE2NClyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfcGFyYW1ldGVyLFwiYXN5bmNcIik7aWYoaCYxMjgpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF8xX21vZGlmaWVyLFwiYXN5bmNcIixcImFic3RyYWN0XCIpO2h8PTI1NixzPU1lO2JyZWFrO2Nhc2UgMTAxOmNhc2UgMTQ0OnZhciBkcj1NZS5raW5kPT09MTAxPzMyNzY4OjY1NTM2LERyPU1lLmtpbmQ9PT0xMDE/XCJpblwiOlwib3V0XCI7aWYoci5raW5kIT09MTYzfHwhKGUuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihyLnBhcmVudCl8fGUuaXNDbGFzc0xpa2Uoci5wYXJlbnQpfHxlLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24oci5wYXJlbnQpKSlyZXR1cm4gVHQoTWUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5fb25seV9hcHBlYXJfb25fYV90eXBlX3BhcmFtZXRlcl9vZl9hX2NsYXNzX2ludGVyZmFjZV9vcl90eXBlX2FsaWFzLERyKTtpZihoJmRyKXJldHVybiBUdChNZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2FscmVhZHlfc2VlbixEcik7aWYoZHImMzI3NjgmJmgmNjU1MzYpcmV0dXJuIFR0KE1lLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfbXVzdF9wcmVjZWRlXzFfbW9kaWZpZXIsXCJpblwiLFwib3V0XCIpO2h8PWRyO2JyZWFrfX1yZXR1cm4gci5raW5kPT09MTcxP2gmMzI/VHQodCxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbixcInN0YXRpY1wiKTpoJjE2Mzg0P1R0KHUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb24sXCJvdmVycmlkZVwiKTpoJjI1Nj9UdChzLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uLFwiYXN5bmNcIik6ITE6KHIua2luZD09PTI2Nnx8ci5raW5kPT09MjY1KSYmaCYyP1R0KG8sZS5EaWFnbm9zdGljcy5BXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfd2l0aF9hbl9pbXBvcnRfZGVjbGFyYXRpb24sXCJkZWNsYXJlXCIpOnIua2luZD09PTE2NCYmaCYxNjQ3NiYmZS5pc0JpbmRpbmdQYXR0ZXJuKHIubmFtZSk/VHQocixlLkRpYWdub3N0aWNzLkFfcGFyYW1ldGVyX3Byb3BlcnR5X21heV9ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9iaW5kaW5nX3BhdHRlcm4pOnIua2luZD09PTE2NCYmaCYxNjQ3NiYmci5kb3REb3REb3RUb2tlbj9UdChyLGUuRGlhZ25vc3RpY3MuQV9wYXJhbWV0ZXJfcHJvcGVydHlfY2Fubm90X2JlX2RlY2xhcmVkX3VzaW5nX2FfcmVzdF9wYXJhbWV0ZXIpOmgmMjU2P3o5KHIscyk6ITF9ZnVuY3Rpb24gajkocil7cmV0dXJuIHIubW9kaWZpZXJzP1U5KHIpP0hzKHIsZS5EaWFnbm9zdGljcy5Nb2RpZmllcnNfY2Fubm90X2FwcGVhcl9oZXJlKTp2b2lkIDA6ITF9ZnVuY3Rpb24gVTkocil7c3dpdGNoKHIua2luZCl7Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxNzE6Y2FzZSAxNjc6Y2FzZSAxNjY6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzY6Y2FzZSAyNjE6Y2FzZSAyNjY6Y2FzZSAyNjU6Y2FzZSAyNzI6Y2FzZSAyNzE6Y2FzZSAyMTM6Y2FzZSAyMTQ6Y2FzZSAxNjQ6Y2FzZSAxNjM6cmV0dXJuITE7ZGVmYXVsdDppZihyLnBhcmVudC5raW5kPT09MjYyfHxyLnBhcmVudC5raW5kPT09MzA1KXJldHVybiExO3N3aXRjaChyLmtpbmQpe2Nhc2UgMjU2OnJldHVybiB6UyhyLDEzMSk7Y2FzZSAyNTc6Y2FzZSAxODA6cmV0dXJuIHpTKHIsMTI2KTtjYXNlIDI1ODpjYXNlIDIzNzpjYXNlIDI1OTpjYXNlIDE3MDpyZXR1cm4hMDtjYXNlIDI2MDpyZXR1cm4gelMociw4NSk7ZGVmYXVsdDplLkRlYnVnLmZhaWwoKX19fWZ1bmN0aW9uIHpTKHIsaSl7cmV0dXJuIHIubW9kaWZpZXJzLmxlbmd0aD4xfHxyLm1vZGlmaWVyc1swXS5raW5kIT09aX1mdW5jdGlvbiB6OShyLGkpe3N3aXRjaChyLmtpbmQpe2Nhc2UgMTY5OmNhc2UgMjU2OmNhc2UgMjEzOmNhc2UgMjE0OnJldHVybiExfXJldHVybiBUdChpLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZSxcImFzeW5jXCIpfWZ1bmN0aW9uIG5nKHIsaSl7cmV0dXJuIGk9PT12b2lkIDAmJihpPWUuRGlhZ25vc3RpY3MuVHJhaWxpbmdfY29tbWFfbm90X2FsbG93ZWQpLHImJnIuaGFzVHJhaWxpbmdDb21tYT9yZChyWzBdLHIuZW5kLTEsMSxpKTohMX1mdW5jdGlvbiBjQShyLGkpe2lmKHImJnIubGVuZ3RoPT09MCl7dmFyIHQ9ci5wb3MtMSxvPWUuc2tpcFRyaXZpYShpLnRleHQsci5lbmQpKzE7cmV0dXJuIHJkKGksdCxvLXQsZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcl9saXN0X2Nhbm5vdF9iZV9lbXB0eSl9cmV0dXJuITF9ZnVuY3Rpb24gVzkocil7Zm9yKHZhciBpPSExLHQ9ci5sZW5ndGgsbz0wO288dDtvKyspe3ZhciBzPXJbb107aWYocy5kb3REb3REb3RUb2tlbil7aWYobyE9PXQtMSlyZXR1cm4gVHQocy5kb3REb3REb3RUb2tlbixlLkRpYWdub3N0aWNzLkFfcmVzdF9wYXJhbWV0ZXJfbXVzdF9iZV9sYXN0X2luX2FfcGFyYW1ldGVyX2xpc3QpO2lmKHMuZmxhZ3MmMTY3NzcyMTZ8fG5nKHIsZS5EaWFnbm9zdGljcy5BX3Jlc3RfcGFyYW1ldGVyX29yX2JpbmRpbmdfcGF0dGVybl9tYXlfbm90X2hhdmVfYV90cmFpbGluZ19jb21tYSkscy5xdWVzdGlvblRva2VuKXJldHVybiBUdChzLnF1ZXN0aW9uVG9rZW4sZS5EaWFnbm9zdGljcy5BX3Jlc3RfcGFyYW1ldGVyX2Nhbm5vdF9iZV9vcHRpb25hbCk7aWYocy5pbml0aWFsaXplcilyZXR1cm4gVHQocy5uYW1lLGUuRGlhZ25vc3RpY3MuQV9yZXN0X3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcil9ZWxzZSBpZihrZChzKSl7aWYoaT0hMCxzLnF1ZXN0aW9uVG9rZW4mJnMuaW5pdGlhbGl6ZXIpcmV0dXJuIFR0KHMubmFtZSxlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl9jYW5ub3RfaGF2ZV9xdWVzdGlvbl9tYXJrX2FuZF9pbml0aWFsaXplcil9ZWxzZSBpZihpJiYhcy5pbml0aWFsaXplcilyZXR1cm4gVHQocy5uYW1lLGUuRGlhZ25vc3RpY3MuQV9yZXF1aXJlZF9wYXJhbWV0ZXJfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9wYXJhbWV0ZXIpfX1mdW5jdGlvbiBxOShyKXtyZXR1cm4gZS5maWx0ZXIocixmdW5jdGlvbihpKXtyZXR1cm4hIWkuaW5pdGlhbGl6ZXJ8fGUuaXNCaW5kaW5nUGF0dGVybihpLm5hbWUpfHxlLmlzUmVzdFBhcmFtZXRlcihpKX0pfWZ1bmN0aW9uIFY5KHIpe2lmKEFlPj0zKXt2YXIgaT1yLmJvZHkmJmUuaXNCbG9jayhyLmJvZHkpJiZlLmZpbmRVc2VTdHJpY3RQcm9sb2d1ZShyLmJvZHkuc3RhdGVtZW50cyk7aWYoaSl7dmFyIHQ9cTkoci5wYXJhbWV0ZXJzKTtpZihlLmxlbmd0aCh0KSl7ZS5mb3JFYWNoKHQsZnVuY3Rpb24ocyl7ZS5hZGRSZWxhdGVkSW5mbyhYcihzLGUuRGlhZ25vc3RpY3MuVGhpc19wYXJhbWV0ZXJfaXNfbm90X2FsbG93ZWRfd2l0aF91c2Vfc3RyaWN0X2RpcmVjdGl2ZSksZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShpLGUuRGlhZ25vc3RpY3MudXNlX3N0cmljdF9kaXJlY3RpdmVfdXNlZF9oZXJlKSl9KTt2YXIgbz10Lm1hcChmdW5jdGlvbihzLHUpe3JldHVybiB1PT09MD9lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHMsZS5EaWFnbm9zdGljcy5Ob25fc2ltcGxlX3BhcmFtZXRlcl9kZWNsYXJlZF9oZXJlKTplLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHMsZS5EaWFnbm9zdGljcy5hbmRfaGVyZSl9KTtyZXR1cm4gZS5hZGRSZWxhdGVkSW5mby5hcHBseSh2b2lkIDAsVmUoW1hyKGksZS5EaWFnbm9zdGljcy51c2Vfc3RyaWN0X2RpcmVjdGl2ZV9jYW5ub3RfYmVfdXNlZF93aXRoX25vbl9zaW1wbGVfcGFyYW1ldGVyX2xpc3QpXSxvLCExKSksITB9fX1yZXR1cm4hMX1mdW5jdGlvbiBYMChyKXt2YXIgaT1lLmdldFNvdXJjZUZpbGVPZk5vZGUocik7cmV0dXJuIEZmKHIpfHxjQShyLnR5cGVQYXJhbWV0ZXJzLGkpfHxXOShyLnBhcmFtZXRlcnMpfHxHOShyLGkpfHxlLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24ocikmJlY5KHIpfWZ1bmN0aW9uIEs5KHIpe3ZhciBpPWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKTtyZXR1cm4gJDkocil8fGNBKHIudHlwZVBhcmFtZXRlcnMsaSl9ZnVuY3Rpb24gRzkocixpKXtpZighZS5pc0Fycm93RnVuY3Rpb24ocikpcmV0dXJuITE7ci50eXBlUGFyYW1ldGVycyYmIShlLmxlbmd0aChyLnR5cGVQYXJhbWV0ZXJzKT4xfHxyLnR5cGVQYXJhbWV0ZXJzLmhhc1RyYWlsaW5nQ29tbWF8fHIudHlwZVBhcmFtZXRlcnNbMF0uY29uc3RyYWludCkmJmkmJmUuZmlsZUV4dGVuc2lvbklzT25lT2YoaS5maWxlTmFtZSxbXCIubXRzXCIsXCIuY3RzXCJdKSYmVHQoci50eXBlUGFyYW1ldGVyc1swXSxlLkRpYWdub3N0aWNzLlRoaXNfc3ludGF4X2lzX3Jlc2VydmVkX2luX2ZpbGVzX3dpdGhfdGhlX210c19vcl9jdHNfZXh0ZW5zaW9uX0FkZF9hX3RyYWlsaW5nX2NvbW1hX29yX2V4cGxpY2l0X2NvbnN0cmFpbnQpO3ZhciB0PXIuZXF1YWxzR3JlYXRlclRoYW5Ub2tlbixvPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oaSx0LnBvcykubGluZSxzPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oaSx0LmVuZCkubGluZTtyZXR1cm4gbyE9PXMmJlR0KHQsZS5EaWFnbm9zdGljcy5MaW5lX3Rlcm1pbmF0b3Jfbm90X3Blcm1pdHRlZF9iZWZvcmVfYXJyb3cpfWZ1bmN0aW9uIEg5KHIpe3ZhciBpPXIucGFyYW1ldGVyc1swXTtpZihyLnBhcmFtZXRlcnMubGVuZ3RoIT09MSlyZXR1cm4gVHQoaT9pLm5hbWU6cixlLkRpYWdub3N0aWNzLkFuX2luZGV4X3NpZ25hdHVyZV9tdXN0X2hhdmVfZXhhY3RseV9vbmVfcGFyYW1ldGVyKTtpZihuZyhyLnBhcmFtZXRlcnMsZS5EaWFnbm9zdGljcy5Bbl9pbmRleF9zaWduYXR1cmVfY2Fubm90X2hhdmVfYV90cmFpbGluZ19jb21tYSksaS5kb3REb3REb3RUb2tlbilyZXR1cm4gVHQoaS5kb3REb3REb3RUb2tlbixlLkRpYWdub3N0aWNzLkFuX2luZGV4X3NpZ25hdHVyZV9jYW5ub3RfaGF2ZV9hX3Jlc3RfcGFyYW1ldGVyKTtpZihlLmhhc0VmZmVjdGl2ZU1vZGlmaWVycyhpKSlyZXR1cm4gVHQoaS5uYW1lLGUuRGlhZ25vc3RpY3MuQW5faW5kZXhfc2lnbmF0dXJlX3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9hY2Nlc3NpYmlsaXR5X21vZGlmaWVyKTtpZihpLnF1ZXN0aW9uVG9rZW4pcmV0dXJuIFR0KGkucXVlc3Rpb25Ub2tlbixlLkRpYWdub3N0aWNzLkFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYV9xdWVzdGlvbl9tYXJrKTtpZihpLmluaXRpYWxpemVyKXJldHVybiBUdChpLm5hbWUsZS5EaWFnbm9zdGljcy5Bbl9pbmRleF9zaWduYXR1cmVfcGFyYW1ldGVyX2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyKTtpZighaS50eXBlKXJldHVybiBUdChpLm5hbWUsZS5EaWFnbm9zdGljcy5Bbl9pbmRleF9zaWduYXR1cmVfcGFyYW1ldGVyX211c3RfaGF2ZV9hX3R5cGVfYW5ub3RhdGlvbik7dmFyIHQ9VmEoaS50eXBlKTtyZXR1cm4gcmcodCxmdW5jdGlvbihvKXtyZXR1cm4hIShvLmZsYWdzJjg1NzYpfSl8fHJ2KHQpP1R0KGkubmFtZSxlLkRpYWdub3N0aWNzLkFuX2luZGV4X3NpZ25hdHVyZV9wYXJhbWV0ZXJfdHlwZV9jYW5ub3RfYmVfYV9saXRlcmFsX3R5cGVfb3JfZ2VuZXJpY190eXBlX0NvbnNpZGVyX3VzaW5nX2FfbWFwcGVkX29iamVjdF90eXBlX2luc3RlYWQpOmdmKHQsdmgpP3IudHlwZT8hMTpUdChyLGUuRGlhZ25vc3RpY3MuQW5faW5kZXhfc2lnbmF0dXJlX211c3RfaGF2ZV9hX3R5cGVfYW5ub3RhdGlvbik6VHQoaS5uYW1lLGUuRGlhZ25vc3RpY3MuQW5faW5kZXhfc2lnbmF0dXJlX3BhcmFtZXRlcl90eXBlX211c3RfYmVfc3RyaW5nX251bWJlcl9zeW1ib2xfb3JfYV90ZW1wbGF0ZV9saXRlcmFsX3R5cGUpfWZ1bmN0aW9uIFg5KHIpe3JldHVybiBGZihyKXx8SDkocil9ZnVuY3Rpb24gUTkocixpKXtpZihpJiZpLmxlbmd0aD09PTApe3ZhciB0PWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKSxvPWkucG9zLTEscz1lLnNraXBUcml2aWEodC50ZXh0LGkuZW5kKSsxO3JldHVybiByZCh0LG8scy1vLGUuRGlhZ25vc3RpY3MuVHlwZV9hcmd1bWVudF9saXN0X2Nhbm5vdF9iZV9lbXB0eSl9cmV0dXJuITF9ZnVuY3Rpb24gV3kocixpKXtyZXR1cm4gbmcoaSl8fFE5KHIsaSl9ZnVuY3Rpb24gWTkocil7cmV0dXJuIHIucXVlc3Rpb25Eb3RUb2tlbnx8ci5mbGFncyYzMj9UdChyLnRlbXBsYXRlLGUuRGlhZ25vc3RpY3MuVGFnZ2VkX3RlbXBsYXRlX2V4cHJlc3Npb25zX2FyZV9ub3RfcGVybWl0dGVkX2luX2FuX29wdGlvbmFsX2NoYWluKTohMX1mdW5jdGlvbiB1QShyKXt2YXIgaT1yLnR5cGVzO2lmKG5nKGkpKXJldHVybiEwO2lmKGkmJmkubGVuZ3RoPT09MCl7dmFyIHQ9ZS50b2tlblRvU3RyaW5nKHIudG9rZW4pO3JldHVybiByZChyLGkucG9zLDAsZS5EaWFnbm9zdGljcy5fMF9saXN0X2Nhbm5vdF9iZV9lbXB0eSx0KX1yZXR1cm4gZS5zb21lKGksbEEpfWZ1bmN0aW9uIGxBKHIpe3JldHVybiBlLmlzRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKHIpJiZlLmlzSW1wb3J0S2V5d29yZChyLmV4cHJlc3Npb24pJiZyLnR5cGVBcmd1bWVudHM/VHQocixlLkRpYWdub3N0aWNzLlRoaXNfdXNlX29mX2ltcG9ydF9pc19pbnZhbGlkX2ltcG9ydF9jYWxsc19jYW5fYmVfd3JpdHRlbl9idXRfdGhleV9tdXN0X2hhdmVfcGFyZW50aGVzZXNfYW5kX2Nhbm5vdF9oYXZlX3R5cGVfYXJndW1lbnRzKTpXeShyLHIudHlwZUFyZ3VtZW50cyl9ZnVuY3Rpb24gJDkocil7dmFyIGk9ITEsdD0hMTtpZighRmYocikmJnIuaGVyaXRhZ2VDbGF1c2VzKWZvcih2YXIgbz0wLHM9ci5oZXJpdGFnZUNsYXVzZXM7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107aWYodS50b2tlbj09PTk0KXtpZihpKXJldHVybiBIcyh1LGUuRGlhZ25vc3RpY3MuZXh0ZW5kc19jbGF1c2VfYWxyZWFkeV9zZWVuKTtpZih0KXJldHVybiBIcyh1LGUuRGlhZ25vc3RpY3MuZXh0ZW5kc19jbGF1c2VfbXVzdF9wcmVjZWRlX2ltcGxlbWVudHNfY2xhdXNlKTtpZih1LnR5cGVzLmxlbmd0aD4xKXJldHVybiBIcyh1LnR5cGVzWzFdLGUuRGlhZ25vc3RpY3MuQ2xhc3Nlc19jYW5fb25seV9leHRlbmRfYV9zaW5nbGVfY2xhc3MpO2k9ITB9ZWxzZXtpZihlLkRlYnVnLmFzc2VydCh1LnRva2VuPT09MTE3KSx0KXJldHVybiBIcyh1LGUuRGlhZ25vc3RpY3MuaW1wbGVtZW50c19jbGF1c2VfYWxyZWFkeV9zZWVuKTt0PSEwfXVBKHUpfX1mdW5jdGlvbiBaOShyKXt2YXIgaT0hMTtpZihyLmhlcml0YWdlQ2xhdXNlcylmb3IodmFyIHQ9MCxvPXIuaGVyaXRhZ2VDbGF1c2VzO3Q8by5sZW5ndGg7dCsrKXt2YXIgcz1vW3RdO2lmKHMudG9rZW49PT05NCl7aWYoaSlyZXR1cm4gSHMocyxlLkRpYWdub3N0aWNzLmV4dGVuZHNfY2xhdXNlX2FscmVhZHlfc2Vlbik7aT0hMH1lbHNlIHJldHVybiBlLkRlYnVnLmFzc2VydChzLnRva2VuPT09MTE3KSxIcyhzLGUuRGlhZ25vc3RpY3MuSW50ZXJmYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX2ltcGxlbWVudHNfY2xhdXNlKTt1QShzKX1yZXR1cm4hMX1mdW5jdGlvbiBRMChyKXtpZihyLmtpbmQhPT0xNjIpcmV0dXJuITE7dmFyIGk9cjtyZXR1cm4gaS5leHByZXNzaW9uLmtpbmQ9PT0yMjEmJmkuZXhwcmVzc2lvbi5vcGVyYXRvclRva2VuLmtpbmQ9PT0yNz9UdChpLmV4cHJlc3Npb24sZS5EaWFnbm9zdGljcy5BX2NvbW1hX2V4cHJlc3Npb25faXNfbm90X2FsbG93ZWRfaW5fYV9jb21wdXRlZF9wcm9wZXJ0eV9uYW1lKTohMX1mdW5jdGlvbiBXUyhyKXtpZihyLmFzdGVyaXNrVG9rZW4pe2lmKGUuRGVidWcuYXNzZXJ0KHIua2luZD09PTI1Nnx8ci5raW5kPT09MjEzfHxyLmtpbmQ9PT0xNjkpLHIuZmxhZ3MmMTY3NzcyMTYpcmV0dXJuIFR0KHIuYXN0ZXJpc2tUb2tlbixlLkRpYWdub3N0aWNzLkdlbmVyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2luX2FuX2FtYmllbnRfY29udGV4dCk7aWYoIXIuYm9keSlyZXR1cm4gVHQoci5hc3Rlcmlza1Rva2VuLGUuRGlhZ25vc3RpY3MuQW5fb3ZlcmxvYWRfc2lnbmF0dXJlX2Nhbm5vdF9iZV9kZWNsYXJlZF9hc19hX2dlbmVyYXRvcil9fWZ1bmN0aW9uIGZBKHIsaSl7cmV0dXJuISFyJiZUdChyLGkpfWZ1bmN0aW9uIF9BKHIsaSl7cmV0dXJuISFyJiZUdChyLGkpfWZ1bmN0aW9uIGVMKHIsaSl7Zm9yKHZhciB0PW5ldyBlLk1hcCxvPTAscz1yLnByb3BlcnRpZXM7bzxzLmxlbmd0aDtvKyspe3ZhciB1PXNbb107aWYodS5raW5kPT09Mjk4KXtpZihpKXt2YXIgaD1lLnNraXBQYXJlbnRoZXNlcyh1LmV4cHJlc3Npb24pO2lmKGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKGgpfHxlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oaCkpcmV0dXJuIFR0KHUuZXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLkFfcmVzdF9lbGVtZW50X2Nhbm5vdF9jb250YWluX2FfYmluZGluZ19wYXR0ZXJuKX1jb250aW51ZX12YXIgej11Lm5hbWU7aWYoei5raW5kPT09MTYyJiZRMCh6KSx1LmtpbmQ9PT0yOTcmJiFpJiZ1Lm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplciYmVHQodS5lcXVhbHNUb2tlbixlLkRpYWdub3N0aWNzLkRpZF95b3VfbWVhbl90b191c2VfYV9Db2xvbl9Bbl9jYW5fb25seV9mb2xsb3dfYV9wcm9wZXJ0eV9uYW1lX3doZW5fdGhlX2NvbnRhaW5pbmdfb2JqZWN0X2xpdGVyYWxfaXNfcGFydF9vZl9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybiksei5raW5kPT09ODAmJlR0KHosZS5EaWFnbm9zdGljcy5Qcml2YXRlX2lkZW50aWZpZXJzX2FyZV9ub3RfYWxsb3dlZF9vdXRzaWRlX2NsYXNzX2JvZGllcyksdS5tb2RpZmllcnMpZm9yKHZhciBtZT0wLE1lPXUubW9kaWZpZXJzO21lPE1lLmxlbmd0aDttZSsrKXt2YXIgJGU9TWVbbWVdOygkZS5raW5kIT09MTMxfHx1LmtpbmQhPT0xNjkpJiZUdCgkZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX2hlcmUsZS5nZXRUZXh0T2ZOb2RlKCRlKSl9dmFyIHRyPXZvaWQgMDtzd2l0Y2godS5raW5kKXtjYXNlIDI5NzpfQSh1LmV4Y2xhbWF0aW9uVG9rZW4sZS5EaWFnbm9zdGljcy5BX2RlZmluaXRlX2Fzc2lnbm1lbnRfYXNzZXJ0aW9uX2lzX25vdF9wZXJtaXR0ZWRfaW5fdGhpc19jb250ZXh0KTtjYXNlIDI5NjpmQSh1LnF1ZXN0aW9uVG9rZW4sZS5EaWFnbm9zdGljcy5Bbl9vYmplY3RfbWVtYmVyX2Nhbm5vdF9iZV9kZWNsYXJlZF9vcHRpb25hbCksei5raW5kPT09OCYmS1MoeiksdHI9NDticmVhaztjYXNlIDE2OTp0cj04O2JyZWFrO2Nhc2UgMTcyOnRyPTE7YnJlYWs7Y2FzZSAxNzM6dHI9MjticmVhaztkZWZhdWx0OnRocm93IGUuRGVidWcuYXNzZXJ0TmV2ZXIodSxcIlVuZXhwZWN0ZWQgc3ludGF4IGtpbmQ6XCIrdS5raW5kKX1pZighaSl7dmFyIGRyPWUuZ2V0UHJvcGVydHlOYW1lRm9yUHJvcGVydHlOYW1lTm9kZSh6KTtpZihkcj09PXZvaWQgMCljb250aW51ZTt2YXIgRHI9dC5nZXQoZHIpO2lmKCFEcil0LnNldChkcix0cik7ZWxzZSBpZih0ciY4JiZEciY4KVR0KHosZS5EaWFnbm9zdGljcy5EdXBsaWNhdGVfaWRlbnRpZmllcl8wLGUuZ2V0VGV4dE9mTm9kZSh6KSk7ZWxzZSBpZih0ciY0JiZEciY0KVR0KHosZS5EaWFnbm9zdGljcy5Bbl9vYmplY3RfbGl0ZXJhbF9jYW5ub3RfaGF2ZV9tdWx0aXBsZV9wcm9wZXJ0aWVzX3dpdGhfdGhlX3NhbWVfbmFtZSxlLmdldFRleHRPZk5vZGUoeikpO2Vsc2UgaWYodHImMyYmRHImMylpZihEciE9PTMmJnRyIT09RHIpdC5zZXQoZHIsdHJ8RHIpO2Vsc2UgcmV0dXJuIFR0KHosZS5EaWFnbm9zdGljcy5Bbl9vYmplY3RfbGl0ZXJhbF9jYW5ub3RfaGF2ZV9tdWx0aXBsZV9nZXRfU2xhc2hzZXRfYWNjZXNzb3JzX3dpdGhfdGhlX3NhbWVfbmFtZSk7ZWxzZSByZXR1cm4gVHQoeixlLkRpYWdub3N0aWNzLkFuX29iamVjdF9saXRlcmFsX2Nhbm5vdF9oYXZlX3Byb3BlcnR5X2FuZF9hY2Nlc3Nvcl93aXRoX3RoZV9zYW1lX25hbWUpfX19ZnVuY3Rpb24gckwocil7aUwoci50YWdOYW1lKSxXeShyLHIudHlwZUFyZ3VtZW50cyk7Zm9yKHZhciBpPW5ldyBlLk1hcCx0PTAsbz1yLmF0dHJpYnV0ZXMucHJvcGVydGllczt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtpZihzLmtpbmQhPT0yODcpe3ZhciB1PXMubmFtZSxoPXMuaW5pdGlhbGl6ZXI7aWYoIWkuZ2V0KHUuZXNjYXBlZFRleHQpKWkuc2V0KHUuZXNjYXBlZFRleHQsITApO2Vsc2UgcmV0dXJuIFR0KHUsZS5EaWFnbm9zdGljcy5KU1hfZWxlbWVudHNfY2Fubm90X2hhdmVfbXVsdGlwbGVfYXR0cmlidXRlc193aXRoX3RoZV9zYW1lX25hbWUpO2lmKGgmJmgua2luZD09PTI4OCYmIWguZXhwcmVzc2lvbilyZXR1cm4gVHQoaCxlLkRpYWdub3N0aWNzLkpTWF9hdHRyaWJ1dGVzX211c3Rfb25seV9iZV9hc3NpZ25lZF9hX25vbl9lbXB0eV9leHByZXNzaW9uKX19fWZ1bmN0aW9uIGlMKHIpe2lmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ocikpe3ZhciBpPXI7ZG97dmFyIHQ9cyhpLm5hbWUpO2lmKHQpcmV0dXJuIHQ7aT1pLmV4cHJlc3Npb259d2hpbGUoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihpKSk7dmFyIG89cyhpKTtpZihvKXJldHVybiBvfWZ1bmN0aW9uIHModSl7aWYoZS5pc0lkZW50aWZpZXIodSkmJmUuaWRUZXh0KHUpLmluZGV4T2YoXCI6XCIpIT09LTEpcmV0dXJuIFR0KHUsZS5EaWFnbm9zdGljcy5KU1hfcHJvcGVydHlfYWNjZXNzX2V4cHJlc3Npb25zX2Nhbm5vdF9pbmNsdWRlX0pTWF9uYW1lc3BhY2VfbmFtZXMpfX1mdW5jdGlvbiB0TChyKXtpZihyLmV4cHJlc3Npb24mJmUuaXNDb21tYVNlcXVlbmNlKHIuZXhwcmVzc2lvbikpcmV0dXJuIFR0KHIuZXhwcmVzc2lvbixlLkRpYWdub3N0aWNzLkpTWF9leHByZXNzaW9uc19tYXlfbm90X3VzZV90aGVfY29tbWFfb3BlcmF0b3JfRGlkX3lvdV9tZWFuX3RvX3dyaXRlX2FuX2FycmF5KX1mdW5jdGlvbiBwQShyKXtpZihNZihyKSlyZXR1cm4hMDtpZihyLmtpbmQ9PT0yNDQmJnIuYXdhaXRNb2RpZmllciYmIShyLmZsYWdzJjMyNzY4KSl7dmFyIGk9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpO2lmKGUuaXNJblRvcExldmVsQ29udGV4dChyKSl7aWYoIUpkKGkpKXN3aXRjaChlLmlzRWZmZWN0aXZlRXh0ZXJuYWxNb2R1bGUoaSx5ZSl8fHJuLmFkZChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIuYXdhaXRNb2RpZmllcixlLkRpYWdub3N0aWNzLmZvcl9hd2FpdF9sb29wc19hcmVfb25seV9hbGxvd2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9maWxlX3doZW5fdGhhdF9maWxlX2lzX2FfbW9kdWxlX2J1dF90aGlzX2ZpbGVfaGFzX25vX2ltcG9ydHNfb3JfZXhwb3J0c19Db25zaWRlcl9hZGRpbmdfYW5fZW1wdHlfZXhwb3J0X3RvX21ha2VfdGhpc19maWxlX2FfbW9kdWxlKSksZXIpe2Nhc2UgZS5Nb2R1bGVLaW5kLk5vZGUxNjpjYXNlIGUuTW9kdWxlS2luZC5Ob2RlTmV4dDppZihpLmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTKXtybi5hZGQoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLmF3YWl0TW9kaWZpZXIsZS5EaWFnbm9zdGljcy5UaGVfY3VycmVudF9maWxlX2lzX2FfQ29tbW9uSlNfbW9kdWxlX2FuZF9jYW5ub3RfdXNlX2F3YWl0X2F0X3RoZV90b3BfbGV2ZWwpKTticmVha31jYXNlIGUuTW9kdWxlS2luZC5FUzIwMjI6Y2FzZSBlLk1vZHVsZUtpbmQuRVNOZXh0OmNhc2UgZS5Nb2R1bGVLaW5kLlN5c3RlbTppZihBZT49NClicmVhaztkZWZhdWx0OnJuLmFkZChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIuYXdhaXRNb2RpZmllcixlLkRpYWdub3N0aWNzLlRvcF9sZXZlbF9mb3JfYXdhaXRfbG9vcHNfYXJlX29ubHlfYWxsb3dlZF93aGVuX3RoZV9tb2R1bGVfb3B0aW9uX2lzX3NldF90b19lczIwMjJfZXNuZXh0X3N5c3RlbV9ub2RlMTZfb3Jfbm9kZW5leHRfYW5kX3RoZV90YXJnZXRfb3B0aW9uX2lzX3NldF90b19lczIwMTdfb3JfaGlnaGVyKSk7YnJlYWt9fWVsc2UgaWYoIUpkKGkpKXt2YXIgdD1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIuYXdhaXRNb2RpZmllcixlLkRpYWdub3N0aWNzLmZvcl9hd2FpdF9sb29wc19hcmVfb25seV9hbGxvd2VkX3dpdGhpbl9hc3luY19mdW5jdGlvbnNfYW5kX2F0X3RoZV90b3BfbGV2ZWxzX29mX21vZHVsZXMpLG89ZS5nZXRDb250YWluaW5nRnVuY3Rpb24ocik7aWYobyYmby5raW5kIT09MTcxKXtlLkRlYnVnLmFzc2VydCgoZS5nZXRGdW5jdGlvbkZsYWdzKG8pJjIpPT09MCxcIkVuY2xvc2luZyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYmUgYW4gYXN5bmMgZnVuY3Rpb24uXCIpO3ZhciBzPWUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUobyxlLkRpYWdub3N0aWNzLkRpZF95b3VfbWVhbl90b19tYXJrX3RoaXNfZnVuY3Rpb25fYXNfYXN5bmMpO2UuYWRkUmVsYXRlZEluZm8odCxzKX1yZXR1cm4gcm4uYWRkKHQpLCEwfXJldHVybiExfWlmKGUuaXNGb3JPZlN0YXRlbWVudChyKSYmIShyLmZsYWdzJjMyNzY4KSYmZS5pc0lkZW50aWZpZXIoci5pbml0aWFsaXplcikmJnIuaW5pdGlhbGl6ZXIuZXNjYXBlZFRleHQ9PT1cImFzeW5jXCIpcmV0dXJuIFR0KHIuaW5pdGlhbGl6ZXIsZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X21heV9ub3RfYmVfYXN5bmMpLCExO2lmKHIuaW5pdGlhbGl6ZXIua2luZD09PTI1NSl7dmFyIHU9ci5pbml0aWFsaXplcjtpZighVlModSkpe3ZhciBoPXUuZGVjbGFyYXRpb25zO2lmKCFoLmxlbmd0aClyZXR1cm4hMTtpZihoLmxlbmd0aD4xKXt2YXIgdD1yLmtpbmQ9PT0yNDM/ZS5EaWFnbm9zdGljcy5Pbmx5X2Ffc2luZ2xlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX2lzX2FsbG93ZWRfaW5fYV9mb3JfaW5fc3RhdGVtZW50OmUuRGlhZ25vc3RpY3MuT25seV9hX3NpbmdsZV92YXJpYWJsZV9kZWNsYXJhdGlvbl9pc19hbGxvd2VkX2luX2FfZm9yX29mX3N0YXRlbWVudDtyZXR1cm4gSHModS5kZWNsYXJhdGlvbnNbMV0sdCl9dmFyIHo9aFswXTtpZih6LmluaXRpYWxpemVyKXt2YXIgdD1yLmtpbmQ9PT0yNDM/ZS5EaWFnbm9zdGljcy5UaGVfdmFyaWFibGVfZGVjbGFyYXRpb25fb2ZfYV9mb3JfaW5fc3RhdGVtZW50X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyOmUuRGlhZ25vc3RpY3MuVGhlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uX29mX2FfZm9yX29mX3N0YXRlbWVudF9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcjtyZXR1cm4gVHQoei5uYW1lLHQpfWlmKHoudHlwZSl7dmFyIHQ9ci5raW5kPT09MjQzP2UuRGlhZ25vc3RpY3MuVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX2luX3N0YXRlbWVudF9jYW5ub3RfdXNlX2FfdHlwZV9hbm5vdGF0aW9uOmUuRGlhZ25vc3RpY3MuVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FfZm9yX29mX3N0YXRlbWVudF9jYW5ub3RfdXNlX2FfdHlwZV9hbm5vdGF0aW9uO3JldHVybiBUdCh6LHQpfX19cmV0dXJuITF9ZnVuY3Rpb24gYUwocil7aWYoIShyLmZsYWdzJjE2Nzc3MjE2KSYmci5wYXJlbnQua2luZCE9PTE4MiYmci5wYXJlbnQua2luZCE9PTI1OCl7aWYoQWU8MSlyZXR1cm4gVHQoci5uYW1lLGUuRGlhZ25vc3RpY3MuQWNjZXNzb3JzX2FyZV9vbmx5X2F2YWlsYWJsZV93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0XzVfYW5kX2hpZ2hlcik7aWYoQWU8MiYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKHIubmFtZSkpcmV0dXJuIFR0KHIubmFtZSxlLkRpYWdub3N0aWNzLlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX29ubHlfYXZhaWxhYmxlX3doZW5fdGFyZ2V0aW5nX0VDTUFTY3JpcHRfMjAxNV9hbmRfaGlnaGVyKTtpZihyLmJvZHk9PT12b2lkIDAmJiFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHIsMTI4KSlyZXR1cm4gcmQocixyLmVuZC0xLDEsZS5EaWFnbm9zdGljcy5fMF9leHBlY3RlZCxcIntcIil9aWYoci5ib2R5KXtpZihlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHIsMTI4KSlyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLkFuX2Fic3RyYWN0X2FjY2Vzc29yX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uKTtpZihyLnBhcmVudC5raW5kPT09MTgyfHxyLnBhcmVudC5raW5kPT09MjU4KXJldHVybiBUdChyLmJvZHksZS5EaWFnbm9zdGljcy5Bbl9pbXBsZW1lbnRhdGlvbl9jYW5ub3RfYmVfZGVjbGFyZWRfaW5fYW1iaWVudF9jb250ZXh0cyl9aWYoci50eXBlUGFyYW1ldGVycylyZXR1cm4gVHQoci5uYW1lLGUuRGlhZ25vc3RpY3MuQW5fYWNjZXNzb3JfY2Fubm90X2hhdmVfdHlwZV9wYXJhbWV0ZXJzKTtpZighbkwocikpcmV0dXJuIFR0KHIubmFtZSxyLmtpbmQ9PT0xNzI/ZS5EaWFnbm9zdGljcy5BX2dldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9wYXJhbWV0ZXJzOmUuRGlhZ25vc3RpY3MuQV9zZXRfYWNjZXNzb3JfbXVzdF9oYXZlX2V4YWN0bHlfb25lX3BhcmFtZXRlcik7aWYoci5raW5kPT09MTczKXtpZihyLnR5cGUpcmV0dXJuIFR0KHIubmFtZSxlLkRpYWdub3N0aWNzLkFfc2V0X2FjY2Vzc29yX2Nhbm5vdF9oYXZlX2FfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbik7dmFyIGk9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5nZXRTZXRBY2Nlc3NvclZhbHVlUGFyYW1ldGVyKHIpLFwiUmV0dXJuIHZhbHVlIGRvZXMgbm90IG1hdGNoIHBhcmFtZXRlciBjb3VudCBhc3NlcnRpb24uXCIpO2lmKGkuZG90RG90RG90VG9rZW4pcmV0dXJuIFR0KGkuZG90RG90RG90VG9rZW4sZS5EaWFnbm9zdGljcy5BX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9yZXN0X3BhcmFtZXRlcik7aWYoaS5xdWVzdGlvblRva2VuKXJldHVybiBUdChpLnF1ZXN0aW9uVG9rZW4sZS5EaWFnbm9zdGljcy5BX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hbl9vcHRpb25hbF9wYXJhbWV0ZXIpO2lmKGkuaW5pdGlhbGl6ZXIpcmV0dXJuIFR0KHIubmFtZSxlLkRpYWdub3N0aWNzLkFfc2V0X2FjY2Vzc29yX3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcil9cmV0dXJuITF9ZnVuY3Rpb24gbkwocil7cmV0dXJuIHFTKHIpfHxyLnBhcmFtZXRlcnMubGVuZ3RoPT09KHIua2luZD09PTE3Mj8wOjEpfWZ1bmN0aW9uIHFTKHIpe2lmKHIucGFyYW1ldGVycy5sZW5ndGg9PT0oci5raW5kPT09MTcyPzE6MikpcmV0dXJuIGUuZ2V0VGhpc1BhcmFtZXRlcihyKX1mdW5jdGlvbiBvTChyKXtpZihyLm9wZXJhdG9yPT09MTU0KXtpZihyLnR5cGUua2luZCE9PTE1MSlyZXR1cm4gVHQoci50eXBlLGUuRGlhZ25vc3RpY3MuXzBfZXhwZWN0ZWQsZS50b2tlblRvU3RyaW5nKDE1MSkpO3ZhciBpPWUud2Fsa1VwUGFyZW50aGVzaXplZFR5cGVzKHIucGFyZW50KTtpZihlLmlzSW5KU0ZpbGUoaSkmJmUuaXNKU0RvY1R5cGVFeHByZXNzaW9uKGkpKXt2YXIgdD1lLmdldEpTRG9jSG9zdChpKTt0JiYoaT1lLmdldFNpbmdsZVZhcmlhYmxlT2ZWYXJpYWJsZVN0YXRlbWVudCh0KXx8dCl9c3dpdGNoKGkua2luZCl7Y2FzZSAyNTQ6dmFyIG89aTtpZihvLm5hbWUua2luZCE9PTc5KXJldHVybiBUdChyLGUuRGlhZ25vc3RpY3MudW5pcXVlX3N5bWJvbF90eXBlc19tYXlfbm90X2JlX3VzZWRfb25fYV92YXJpYWJsZV9kZWNsYXJhdGlvbl93aXRoX2FfYmluZGluZ19uYW1lKTtpZighZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25JblZhcmlhYmxlU3RhdGVtZW50KG8pKXJldHVybiBUdChyLGUuRGlhZ25vc3RpY3MudW5pcXVlX3N5bWJvbF90eXBlc19hcmVfb25seV9hbGxvd2VkX29uX3ZhcmlhYmxlc19pbl9hX3ZhcmlhYmxlX3N0YXRlbWVudCk7aWYoIShvLnBhcmVudC5mbGFncyYyKSlyZXR1cm4gVHQoaS5uYW1lLGUuRGlhZ25vc3RpY3MuQV92YXJpYWJsZV93aG9zZV90eXBlX2lzX2FfdW5pcXVlX3N5bWJvbF90eXBlX211c3RfYmVfY29uc3QpO2JyZWFrO2Nhc2UgMTY3OmlmKCFlLmlzU3RhdGljKGkpfHwhZS5oYXNFZmZlY3RpdmVSZWFkb25seU1vZGlmaWVyKGkpKXJldHVybiBUdChpLm5hbWUsZS5EaWFnbm9zdGljcy5BX3Byb3BlcnR5X29mX2FfY2xhc3Nfd2hvc2VfdHlwZV9pc19hX3VuaXF1ZV9zeW1ib2xfdHlwZV9tdXN0X2JlX2JvdGhfc3RhdGljX2FuZF9yZWFkb25seSk7YnJlYWs7Y2FzZSAxNjY6aWYoIWUuaGFzU3ludGFjdGljTW9kaWZpZXIoaSw2NCkpcmV0dXJuIFR0KGkubmFtZSxlLkRpYWdub3N0aWNzLkFfcHJvcGVydHlfb2ZfYW5faW50ZXJmYWNlX29yX3R5cGVfbGl0ZXJhbF93aG9zZV90eXBlX2lzX2FfdW5pcXVlX3N5bWJvbF90eXBlX211c3RfYmVfcmVhZG9ubHkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIFR0KHIsZS5EaWFnbm9zdGljcy51bmlxdWVfc3ltYm9sX3R5cGVzX2FyZV9ub3RfYWxsb3dlZF9oZXJlKX19ZWxzZSBpZihyLm9wZXJhdG9yPT09MTQ1JiZyLnR5cGUua2luZCE9PTE4MyYmci50eXBlLmtpbmQhPT0xODQpcmV0dXJuIEhzKHIsZS5EaWFnbm9zdGljcy5yZWFkb25seV90eXBlX21vZGlmaWVyX2lzX29ubHlfcGVybWl0dGVkX29uX2FycmF5X2FuZF90dXBsZV9saXRlcmFsX3R5cGVzLGUudG9rZW5Ub1N0cmluZygxNTEpKX1mdW5jdGlvbiBFbShyLGkpe2lmKEkxKHIpKXJldHVybiBUdChyLGkpfWZ1bmN0aW9uIGRBKHIpe2lmKFgwKHIpKXJldHVybiEwO2lmKHIua2luZD09PTE2OSl7aWYoci5wYXJlbnQua2luZD09PTIwNSl7aWYoci5tb2RpZmllcnMmJiEoci5tb2RpZmllcnMubGVuZ3RoPT09MSYmZS5maXJzdChyLm1vZGlmaWVycykua2luZD09PTEzMSkpcmV0dXJuIEhzKHIsZS5EaWFnbm9zdGljcy5Nb2RpZmllcnNfY2Fubm90X2FwcGVhcl9oZXJlKTtpZihmQShyLnF1ZXN0aW9uVG9rZW4sZS5EaWFnbm9zdGljcy5Bbl9vYmplY3RfbWVtYmVyX2Nhbm5vdF9iZV9kZWNsYXJlZF9vcHRpb25hbCkpcmV0dXJuITA7aWYoX0Eoci5leGNsYW1hdGlvblRva2VuLGUuRGlhZ25vc3RpY3MuQV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl9pc19ub3RfcGVybWl0dGVkX2luX3RoaXNfY29udGV4dCkpcmV0dXJuITA7aWYoci5ib2R5PT09dm9pZCAwKXJldHVybiByZChyLHIuZW5kLTEsMSxlLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLFwie1wiKX1pZihXUyhyKSlyZXR1cm4hMH1pZihlLmlzQ2xhc3NMaWtlKHIucGFyZW50KSl7aWYoQWU8MiYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKHIubmFtZSkpcmV0dXJuIFR0KHIubmFtZSxlLkRpYWdub3N0aWNzLlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX29ubHlfYXZhaWxhYmxlX3doZW5fdGFyZ2V0aW5nX0VDTUFTY3JpcHRfMjAxNV9hbmRfaGlnaGVyKTtpZihyLmZsYWdzJjE2Nzc3MjE2KXJldHVybiBFbShyLm5hbWUsZS5EaWFnbm9zdGljcy5BX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYW5fYW1iaWVudF9jb250ZXh0X211c3RfcmVmZXJfdG9fYW5fZXhwcmVzc2lvbl93aG9zZV90eXBlX2lzX2FfbGl0ZXJhbF90eXBlX29yX2FfdW5pcXVlX3N5bWJvbF90eXBlKTtpZihyLmtpbmQ9PT0xNjkmJiFyLmJvZHkpcmV0dXJuIEVtKHIubmFtZSxlLkRpYWdub3N0aWNzLkFfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV9pbl9hX21ldGhvZF9vdmVybG9hZF9tdXN0X3JlZmVyX3RvX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9pc19hX2xpdGVyYWxfdHlwZV9vcl9hX3VuaXF1ZV9zeW1ib2xfdHlwZSl9ZWxzZXtpZihyLnBhcmVudC5raW5kPT09MjU4KXJldHVybiBFbShyLm5hbWUsZS5EaWFnbm9zdGljcy5BX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYW5faW50ZXJmYWNlX211c3RfcmVmZXJfdG9fYW5fZXhwcmVzc2lvbl93aG9zZV90eXBlX2lzX2FfbGl0ZXJhbF90eXBlX29yX2FfdW5pcXVlX3N5bWJvbF90eXBlKTtpZihyLnBhcmVudC5raW5kPT09MTgyKXJldHVybiBFbShyLm5hbWUsZS5EaWFnbm9zdGljcy5BX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYV90eXBlX2xpdGVyYWxfbXVzdF9yZWZlcl90b19hbl9leHByZXNzaW9uX3dob3NlX3R5cGVfaXNfYV9saXRlcmFsX3R5cGVfb3JfYV91bmlxdWVfc3ltYm9sX3R5cGUpfX1mdW5jdGlvbiBzTChyKXtmb3IodmFyIGk9cjtpOyl7aWYoZS5pc0Z1bmN0aW9uTGlrZU9yQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKGkpKXJldHVybiBUdChyLGUuRGlhZ25vc3RpY3MuSnVtcF90YXJnZXRfY2Fubm90X2Nyb3NzX2Z1bmN0aW9uX2JvdW5kYXJ5KTtzd2l0Y2goaS5raW5kKXtjYXNlIDI1MDppZihyLmxhYmVsJiZpLmxhYmVsLmVzY2FwZWRUZXh0PT09ci5sYWJlbC5lc2NhcGVkVGV4dCl7dmFyIHQ9ci5raW5kPT09MjQ1JiYhZS5pc0l0ZXJhdGlvblN0YXRlbWVudChpLnN0YXRlbWVudCwhMCk7cmV0dXJuIHQ/VHQocixlLkRpYWdub3N0aWNzLkFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2p1bXBfdG9fYV9sYWJlbF9vZl9hbl9lbmNsb3NpbmdfaXRlcmF0aW9uX3N0YXRlbWVudCk6ITF9YnJlYWs7Y2FzZSAyNDk6aWYoci5raW5kPT09MjQ2JiYhci5sYWJlbClyZXR1cm4hMTticmVhaztkZWZhdWx0OmlmKGUuaXNJdGVyYXRpb25TdGF0ZW1lbnQoaSwhMSkmJiFyLmxhYmVsKXJldHVybiExO2JyZWFrfWk9aS5wYXJlbnR9aWYoci5sYWJlbCl7dmFyIG89ci5raW5kPT09MjQ2P2UuRGlhZ25vc3RpY3MuQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfanVtcF90b19hX2xhYmVsX29mX2FuX2VuY2xvc2luZ19zdGF0ZW1lbnQ6ZS5EaWFnbm9zdGljcy5BX2NvbnRpbnVlX3N0YXRlbWVudF9jYW5fb25seV9qdW1wX3RvX2FfbGFiZWxfb2ZfYW5fZW5jbG9zaW5nX2l0ZXJhdGlvbl9zdGF0ZW1lbnQ7cmV0dXJuIFR0KHIsbyl9ZWxzZXt2YXIgbz1yLmtpbmQ9PT0yNDY/ZS5EaWFnbm9zdGljcy5BX2JyZWFrX3N0YXRlbWVudF9jYW5fb25seV9iZV91c2VkX3dpdGhpbl9hbl9lbmNsb3NpbmdfaXRlcmF0aW9uX29yX3N3aXRjaF9zdGF0ZW1lbnQ6ZS5EaWFnbm9zdGljcy5BX2NvbnRpbnVlX3N0YXRlbWVudF9jYW5fb25seV9iZV91c2VkX3dpdGhpbl9hbl9lbmNsb3NpbmdfaXRlcmF0aW9uX3N0YXRlbWVudDtyZXR1cm4gVHQocixvKX19ZnVuY3Rpb24gY0wocil7aWYoci5kb3REb3REb3RUb2tlbil7dmFyIGk9ci5wYXJlbnQuZWxlbWVudHM7aWYociE9PWUubGFzdChpKSlyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLkFfcmVzdF9lbGVtZW50X211c3RfYmVfbGFzdF9pbl9hX2Rlc3RydWN0dXJpbmdfcGF0dGVybik7aWYobmcoaSxlLkRpYWdub3N0aWNzLkFfcmVzdF9wYXJhbWV0ZXJfb3JfYmluZGluZ19wYXR0ZXJuX21heV9ub3RfaGF2ZV9hX3RyYWlsaW5nX2NvbW1hKSxyLnByb3BlcnR5TmFtZSlyZXR1cm4gVHQoci5uYW1lLGUuRGlhZ25vc3RpY3MuQV9yZXN0X2VsZW1lbnRfY2Fubm90X2hhdmVfYV9wcm9wZXJ0eV9uYW1lKX1pZihyLmRvdERvdERvdFRva2VuJiZyLmluaXRpYWxpemVyKXJldHVybiByZChyLHIuaW5pdGlhbGl6ZXIucG9zLTEsMSxlLkRpYWdub3N0aWNzLkFfcmVzdF9lbGVtZW50X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyKX1mdW5jdGlvbiBnQShyKXtyZXR1cm4gZS5pc1N0cmluZ09yTnVtZXJpY0xpdGVyYWxMaWtlKHIpfHxyLmtpbmQ9PT0yMTkmJnIub3BlcmF0b3I9PT00MCYmci5vcGVyYW5kLmtpbmQ9PT04fWZ1bmN0aW9uIHVMKHIpe3JldHVybiByLmtpbmQ9PT05fHxyLmtpbmQ9PT0yMTkmJnIub3BlcmF0b3I9PT00MCYmci5vcGVyYW5kLmtpbmQ9PT05fWZ1bmN0aW9uIGxMKHIpe2lmKChlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHIpfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ocikmJmdBKHIuYXJndW1lbnRFeHByZXNzaW9uKSkmJmUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbihyLmV4cHJlc3Npb24pKXJldHVybiEhKE9zKHIpLmZsYWdzJjEwMjQpfWZ1bmN0aW9uIG1BKHIpe3ZhciBpPXIuaW5pdGlhbGl6ZXI7aWYoaSl7dmFyIHQ9IShnQShpKXx8bEwoaSl8fGkua2luZD09PTExMHx8aS5raW5kPT09OTV8fHVMKGkpKSxvPWUuaXNEZWNsYXJhdGlvblJlYWRvbmx5KHIpfHxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihyKSYmZS5pc1ZhckNvbnN0KHIpO2lmKG8mJiFyLnR5cGUpe2lmKHQpcmV0dXJuIFR0KGksZS5EaWFnbm9zdGljcy5BX2NvbnN0X2luaXRpYWxpemVyX2luX2FuX2FtYmllbnRfY29udGV4dF9tdXN0X2JlX2Ffc3RyaW5nX29yX251bWVyaWNfbGl0ZXJhbF9vcl9saXRlcmFsX2VudW1fcmVmZXJlbmNlKX1lbHNlIHJldHVybiBUdChpLGUuRGlhZ25vc3RpY3MuSW5pdGlhbGl6ZXJzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzKTtpZighb3x8dClyZXR1cm4gVHQoaSxlLkRpYWdub3N0aWNzLkluaXRpYWxpemVyc19hcmVfbm90X2FsbG93ZWRfaW5fYW1iaWVudF9jb250ZXh0cyl9fWZ1bmN0aW9uIGZMKHIpe2lmKHIucGFyZW50LnBhcmVudC5raW5kIT09MjQzJiZyLnBhcmVudC5wYXJlbnQua2luZCE9PTI0NCl7aWYoci5mbGFncyYxNjc3NzIxNiltQShyKTtlbHNlIGlmKCFyLmluaXRpYWxpemVyKXtpZihlLmlzQmluZGluZ1BhdHRlcm4oci5uYW1lKSYmIWUuaXNCaW5kaW5nUGF0dGVybihyLnBhcmVudCkpcmV0dXJuIFR0KHIsZS5EaWFnbm9zdGljcy5BX2Rlc3RydWN0dXJpbmdfZGVjbGFyYXRpb25fbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyKTtpZihlLmlzVmFyQ29uc3QocikpcmV0dXJuIFR0KHIsZS5EaWFnbm9zdGljcy5jb25zdF9kZWNsYXJhdGlvbnNfbXVzdF9iZV9pbml0aWFsaXplZCl9fWlmKHIuZXhjbGFtYXRpb25Ub2tlbiYmKHIucGFyZW50LnBhcmVudC5raW5kIT09MjM3fHwhci50eXBlfHxyLmluaXRpYWxpemVyfHxyLmZsYWdzJjE2Nzc3MjE2KSl7dmFyIGk9ci5pbml0aWFsaXplcj9lLkRpYWdub3N0aWNzLkRlY2xhcmF0aW9uc193aXRoX2luaXRpYWxpemVyc19jYW5ub3RfYWxzb19oYXZlX2RlZmluaXRlX2Fzc2lnbm1lbnRfYXNzZXJ0aW9uczpyLnR5cGU/ZS5EaWFnbm9zdGljcy5BX2RlZmluaXRlX2Fzc2lnbm1lbnRfYXNzZXJ0aW9uX2lzX25vdF9wZXJtaXR0ZWRfaW5fdGhpc19jb250ZXh0OmUuRGlhZ25vc3RpY3MuRGVjbGFyYXRpb25zX3dpdGhfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25zX211c3RfYWxzb19oYXZlX3R5cGVfYW5ub3RhdGlvbnM7cmV0dXJuIFR0KHIuZXhjbGFtYXRpb25Ub2tlbixpKX0oZXI8ZS5Nb2R1bGVLaW5kLkVTMjAxNXx8ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpLmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTKSYmZXIhPT1lLk1vZHVsZUtpbmQuU3lzdGVtJiYhKHIucGFyZW50LnBhcmVudC5mbGFncyYxNjc3NzIxNikmJmUuaGFzU3ludGFjdGljTW9kaWZpZXIoci5wYXJlbnQucGFyZW50LDEpJiZ2QShyLm5hbWUpO3ZhciB0PWUuaXNMZXQocil8fGUuaXNWYXJDb25zdChyKTtyZXR1cm4gdCYmeUEoci5uYW1lKX1mdW5jdGlvbiB2QShyKXtpZihyLmtpbmQ9PT03OSl7aWYoZS5pZFRleHQocik9PT1cIl9fZXNNb2R1bGVcIilyZXR1cm4gZEwoXCJub0VtaXRcIixyLGUuRGlhZ25vc3RpY3MuSWRlbnRpZmllcl9leHBlY3RlZF9lc01vZHVsZV9pc19yZXNlcnZlZF9hc19hbl9leHBvcnRlZF9tYXJrZXJfd2hlbl90cmFuc2Zvcm1pbmdfRUNNQVNjcmlwdF9tb2R1bGVzKX1lbHNlIGZvcih2YXIgaT1yLmVsZW1lbnRzLHQ9MCxvPWk7dDxvLmxlbmd0aDt0Kyspe3ZhciBzPW9bdF07aWYoIWUuaXNPbWl0dGVkRXhwcmVzc2lvbihzKSlyZXR1cm4gdkEocy5uYW1lKX1yZXR1cm4hMX1mdW5jdGlvbiB5QShyKXtpZihyLmtpbmQ9PT03OSl7aWYoci5vcmlnaW5hbEtleXdvcmRLaW5kPT09MTE5KXJldHVybiBUdChyLGUuRGlhZ25vc3RpY3MubGV0X2lzX25vdF9hbGxvd2VkX3RvX2JlX3VzZWRfYXNfYV9uYW1lX2luX2xldF9vcl9jb25zdF9kZWNsYXJhdGlvbnMpfWVsc2UgZm9yKHZhciBpPXIuZWxlbWVudHMsdD0wLG89aTt0PG8ubGVuZ3RoO3QrKyl7dmFyIHM9b1t0XTtlLmlzT21pdHRlZEV4cHJlc3Npb24ocyl8fHlBKHMubmFtZSl9cmV0dXJuITF9ZnVuY3Rpb24gVlMocil7dmFyIGk9ci5kZWNsYXJhdGlvbnM7cmV0dXJuIG5nKHIuZGVjbGFyYXRpb25zKT8hMDpyLmRlY2xhcmF0aW9ucy5sZW5ndGg/ITE6cmQocixpLnBvcyxpLmVuZC1pLnBvcyxlLkRpYWdub3N0aWNzLlZhcmlhYmxlX2RlY2xhcmF0aW9uX2xpc3RfY2Fubm90X2JlX2VtcHR5KX1mdW5jdGlvbiBoQShyKXtzd2l0Y2goci5raW5kKXtjYXNlIDIzOTpjYXNlIDI0MDpjYXNlIDI0MTpjYXNlIDI0ODpjYXNlIDI0MjpjYXNlIDI0MzpjYXNlIDI0NDpyZXR1cm4hMTtjYXNlIDI1MDpyZXR1cm4gaEEoci5wYXJlbnQpfXJldHVybiEwfWZ1bmN0aW9uIF9MKHIpe2lmKCFoQShyLnBhcmVudCkpe2lmKGUuaXNMZXQoci5kZWNsYXJhdGlvbkxpc3QpKXJldHVybiBUdChyLGUuRGlhZ25vc3RpY3MubGV0X2RlY2xhcmF0aW9uc19jYW5fb25seV9iZV9kZWNsYXJlZF9pbnNpZGVfYV9ibG9jayk7aWYoZS5pc1ZhckNvbnN0KHIuZGVjbGFyYXRpb25MaXN0KSlyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLmNvbnN0X2RlY2xhcmF0aW9uc19jYW5fb25seV9iZV9kZWNsYXJlZF9pbnNpZGVfYV9ibG9jayl9fWZ1bmN0aW9uIHBMKHIpe3ZhciBpPXIubmFtZS5lc2NhcGVkVGV4dDtzd2l0Y2goci5rZXl3b3JkVG9rZW4pe2Nhc2UgMTAzOmlmKGkhPT1cInRhcmdldFwiKXJldHVybiBUdChyLm5hbWUsZS5EaWFnbm9zdGljcy5fMF9pc19ub3RfYV92YWxpZF9tZXRhX3Byb3BlcnR5X2Zvcl9rZXl3b3JkXzFfRGlkX3lvdV9tZWFuXzIsci5uYW1lLmVzY2FwZWRUZXh0LGUudG9rZW5Ub1N0cmluZyhyLmtleXdvcmRUb2tlbiksXCJ0YXJnZXRcIik7YnJlYWs7Y2FzZSAxMDA6aWYoaSE9PVwibWV0YVwiKXJldHVybiBUdChyLm5hbWUsZS5EaWFnbm9zdGljcy5fMF9pc19ub3RfYV92YWxpZF9tZXRhX3Byb3BlcnR5X2Zvcl9rZXl3b3JkXzFfRGlkX3lvdV9tZWFuXzIsci5uYW1lLmVzY2FwZWRUZXh0LGUudG9rZW5Ub1N0cmluZyhyLmtleXdvcmRUb2tlbiksXCJtZXRhXCIpO2JyZWFrfX1mdW5jdGlvbiBKZChyKXtyZXR1cm4gci5wYXJzZURpYWdub3N0aWNzLmxlbmd0aD4wfWZ1bmN0aW9uIEhzKHIsaSx0LG8scyl7dmFyIHU9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpO2lmKCFKZCh1KSl7dmFyIGg9ZS5nZXRTcGFuT2ZUb2tlbkF0UG9zaXRpb24odSxyLnBvcyk7cmV0dXJuIHJuLmFkZChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKHUsaC5zdGFydCxoLmxlbmd0aCxpLHQsbyxzKSksITB9cmV0dXJuITF9ZnVuY3Rpb24gcmQocixpLHQsbyxzLHUsaCl7dmFyIHo9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHIpO3JldHVybiBKZCh6KT8hMToocm4uYWRkKGUuY3JlYXRlRmlsZURpYWdub3N0aWMoeixpLHQsbyxzLHUsaCkpLCEwKX1mdW5jdGlvbiBkTChyLGksdCxvLHMsdSl7dmFyIGg9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGkpO3JldHVybiBKZChoKT8hMTooRXMocixpLHQsbyxzLHUpLCEwKX1mdW5jdGlvbiBUdChyLGksdCxvLHMpe3ZhciB1PWUuZ2V0U291cmNlRmlsZU9mTm9kZShyKTtyZXR1cm4gSmQodSk/ITE6KHJuLmFkZChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHIsaSx0LG8scykpLCEwKX1mdW5jdGlvbiBnTChyKXt2YXIgaT1lLmlzSW5KU0ZpbGUocik/ZS5nZXRKU0RvY1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnMocik6dm9pZCAwLHQ9ci50eXBlUGFyYW1ldGVyc3x8aSYmZS5maXJzdE9yVW5kZWZpbmVkKGkpO2lmKHQpe3ZhciBvPXQucG9zPT09dC5lbmQ/dC5wb3M6ZS5za2lwVHJpdmlhKGUuZ2V0U291cmNlRmlsZU9mTm9kZShyKS50ZXh0LHQucG9zKTtyZXR1cm4gcmQocixvLHQuZW5kLW8sZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcnNfY2Fubm90X2FwcGVhcl9vbl9hX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKX19ZnVuY3Rpb24gbUwocil7dmFyIGk9ZS5nZXRFZmZlY3RpdmVSZXR1cm5UeXBlTm9kZShyKTtpZihpKXJldHVybiBUdChpLGUuRGlhZ25vc3RpY3MuVHlwZV9hbm5vdGF0aW9uX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbil9ZnVuY3Rpb24gdkwocil7aWYoZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKHIubmFtZSkmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHIubmFtZS5leHByZXNzaW9uKSYmci5uYW1lLmV4cHJlc3Npb24ub3BlcmF0b3JUb2tlbi5raW5kPT09MTAxKXJldHVybiBUdChyLnBhcmVudC5tZW1iZXJzWzBdLGUuRGlhZ25vc3RpY3MuQV9tYXBwZWRfdHlwZV9tYXlfbm90X2RlY2xhcmVfcHJvcGVydGllc19vcl9tZXRob2RzKTtpZihlLmlzQ2xhc3NMaWtlKHIucGFyZW50KSl7aWYoZS5pc1N0cmluZ0xpdGVyYWwoci5uYW1lKSYmci5uYW1lLnRleHQ9PT1cImNvbnN0cnVjdG9yXCIpcmV0dXJuIFR0KHIubmFtZSxlLkRpYWdub3N0aWNzLkNsYXNzZXNfbWF5X25vdF9oYXZlX2FfZmllbGRfbmFtZWRfY29uc3RydWN0b3IpO2lmKEVtKHIubmFtZSxlLkRpYWdub3N0aWNzLkFfY29tcHV0ZWRfcHJvcGVydHlfbmFtZV9pbl9hX2NsYXNzX3Byb3BlcnR5X2RlY2xhcmF0aW9uX211c3RfaGF2ZV9hX3NpbXBsZV9saXRlcmFsX3R5cGVfb3JfYV91bmlxdWVfc3ltYm9sX3R5cGUpKXJldHVybiEwO2lmKEFlPDImJmUuaXNQcml2YXRlSWRlbnRpZmllcihyLm5hbWUpKXJldHVybiBUdChyLm5hbWUsZS5EaWFnbm9zdGljcy5Qcml2YXRlX2lkZW50aWZpZXJzX2FyZV9vbmx5X2F2YWlsYWJsZV93aGVuX3RhcmdldGluZ19FQ01BU2NyaXB0XzIwMTVfYW5kX2hpZ2hlcil9ZWxzZSBpZihyLnBhcmVudC5raW5kPT09MjU4KXtpZihFbShyLm5hbWUsZS5EaWFnbm9zdGljcy5BX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYW5faW50ZXJmYWNlX211c3RfcmVmZXJfdG9fYW5fZXhwcmVzc2lvbl93aG9zZV90eXBlX2lzX2FfbGl0ZXJhbF90eXBlX29yX2FfdW5pcXVlX3N5bWJvbF90eXBlKSlyZXR1cm4hMDtpZihyLmluaXRpYWxpemVyKXJldHVybiBUdChyLmluaXRpYWxpemVyLGUuRGlhZ25vc3RpY3MuQW5faW50ZXJmYWNlX3Byb3BlcnR5X2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyKX1lbHNlIGlmKGUuaXNUeXBlTGl0ZXJhbE5vZGUoci5wYXJlbnQpKXtpZihFbShyLm5hbWUsZS5EaWFnbm9zdGljcy5BX2NvbXB1dGVkX3Byb3BlcnR5X25hbWVfaW5fYV90eXBlX2xpdGVyYWxfbXVzdF9yZWZlcl90b19hbl9leHByZXNzaW9uX3dob3NlX3R5cGVfaXNfYV9saXRlcmFsX3R5cGVfb3JfYV91bmlxdWVfc3ltYm9sX3R5cGUpKXJldHVybiEwO2lmKHIuaW5pdGlhbGl6ZXIpcmV0dXJuIFR0KHIuaW5pdGlhbGl6ZXIsZS5EaWFnbm9zdGljcy5BX3R5cGVfbGl0ZXJhbF9wcm9wZXJ0eV9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplcil9aWYoci5mbGFncyYxNjc3NzIxNiYmbUEociksZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24ocikmJnIuZXhjbGFtYXRpb25Ub2tlbiYmKCFlLmlzQ2xhc3NMaWtlKHIucGFyZW50KXx8IXIudHlwZXx8ci5pbml0aWFsaXplcnx8ci5mbGFncyYxNjc3NzIxNnx8ZS5pc1N0YXRpYyhyKXx8ZS5oYXNBYnN0cmFjdE1vZGlmaWVyKHIpKSl7dmFyIGk9ci5pbml0aWFsaXplcj9lLkRpYWdub3N0aWNzLkRlY2xhcmF0aW9uc193aXRoX2luaXRpYWxpemVyc19jYW5ub3RfYWxzb19oYXZlX2RlZmluaXRlX2Fzc2lnbm1lbnRfYXNzZXJ0aW9uczpyLnR5cGU/ZS5EaWFnbm9zdGljcy5BX2RlZmluaXRlX2Fzc2lnbm1lbnRfYXNzZXJ0aW9uX2lzX25vdF9wZXJtaXR0ZWRfaW5fdGhpc19jb250ZXh0OmUuRGlhZ25vc3RpY3MuRGVjbGFyYXRpb25zX3dpdGhfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25zX211c3RfYWxzb19oYXZlX3R5cGVfYW5ub3RhdGlvbnM7cmV0dXJuIFR0KHIuZXhjbGFtYXRpb25Ub2tlbixpKX19ZnVuY3Rpb24geUwocil7cmV0dXJuIHIua2luZD09PTI1OHx8ci5raW5kPT09MjU5fHxyLmtpbmQ9PT0yNjZ8fHIua2luZD09PTI2NXx8ci5raW5kPT09MjcyfHxyLmtpbmQ9PT0yNzF8fHIua2luZD09PTI2NHx8ZS5oYXNTeW50YWN0aWNNb2RpZmllcihyLDUxNSk/ITE6SHMocixlLkRpYWdub3N0aWNzLlRvcF9sZXZlbF9kZWNsYXJhdGlvbnNfaW5fZF90c19maWxlc19tdXN0X3N0YXJ0X3dpdGhfZWl0aGVyX2FfZGVjbGFyZV9vcl9leHBvcnRfbW9kaWZpZXIpfWZ1bmN0aW9uIGhMKHIpe2Zvcih2YXIgaT0wLHQ9ci5zdGF0ZW1lbnRzO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldO2lmKChlLmlzRGVjbGFyYXRpb24obyl8fG8ua2luZD09PTIzNykmJnlMKG8pKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIERMKHIpe3JldHVybiEhKHIuZmxhZ3MmMTY3NzcyMTYpJiZoTChyKX1mdW5jdGlvbiBNZihyKXtpZihyLmZsYWdzJjE2Nzc3MjE2KXt2YXIgaT12YShyKTtpZighaS5oYXNSZXBvcnRlZFN0YXRlbWVudEluQW1iaWVudENvbnRleHQmJihlLmlzRnVuY3Rpb25MaWtlKHIucGFyZW50KXx8ZS5pc0FjY2Vzc29yKHIucGFyZW50KSkpcmV0dXJuIHZhKHIpLmhhc1JlcG9ydGVkU3RhdGVtZW50SW5BbWJpZW50Q29udGV4dD1IcyhyLGUuRGlhZ25vc3RpY3MuQW5faW1wbGVtZW50YXRpb25fY2Fubm90X2JlX2RlY2xhcmVkX2luX2FtYmllbnRfY29udGV4dHMpO2lmKHIucGFyZW50LmtpbmQ9PT0yMzV8fHIucGFyZW50LmtpbmQ9PT0yNjJ8fHIucGFyZW50LmtpbmQ9PT0zMDUpe3ZhciB0PXZhKHIucGFyZW50KTtpZighdC5oYXNSZXBvcnRlZFN0YXRlbWVudEluQW1iaWVudENvbnRleHQpcmV0dXJuIHQuaGFzUmVwb3J0ZWRTdGF0ZW1lbnRJbkFtYmllbnRDb250ZXh0PUhzKHIsZS5EaWFnbm9zdGljcy5TdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzKX19cmV0dXJuITF9ZnVuY3Rpb24gS1Mocil7aWYoci5udW1lcmljTGl0ZXJhbEZsYWdzJjMyKXt2YXIgaT12b2lkIDA7aWYoQWU+PTE/aT1lLkRpYWdub3N0aWNzLk9jdGFsX2xpdGVyYWxzX2FyZV9ub3RfYXZhaWxhYmxlX3doZW5fdGFyZ2V0aW5nX0VDTUFTY3JpcHRfNV9hbmRfaGlnaGVyX1VzZV90aGVfc3ludGF4XzA6ZS5pc0NoaWxkT2ZOb2RlV2l0aEtpbmQociwxOTYpP2k9ZS5EaWFnbm9zdGljcy5PY3RhbF9saXRlcmFsX3R5cGVzX211c3RfdXNlX0VTMjAxNV9zeW50YXhfVXNlX3RoZV9zeW50YXhfMDplLmlzQ2hpbGRPZk5vZGVXaXRoS2luZChyLDI5OSkmJihpPWUuRGlhZ25vc3RpY3MuT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX2VudW1zX21lbWJlcnNfaW5pdGlhbGl6ZXJfVXNlX3RoZV9zeW50YXhfMCksaSl7dmFyIHQ9ZS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihyLnBhcmVudCkmJnIucGFyZW50Lm9wZXJhdG9yPT09NDAsbz0odD9cIi1cIjpcIlwiKStcIjBvXCIrci50ZXh0O3JldHVybiBUdCh0P3IucGFyZW50OnIsaSxvKX19cmV0dXJuIGJMKHIpLCExfWZ1bmN0aW9uIGJMKHIpe3ZhciBpPWUuZ2V0VGV4dE9mTm9kZShyKS5pbmRleE9mKFwiLlwiKSE9PS0xLHQ9ci5udW1lcmljTGl0ZXJhbEZsYWdzJjE2O2lmKCEoaXx8dCkpe3ZhciBvPStyLnRleHQ7bzw9TWF0aC5wb3coMiw1MyktMXx8THMoITEsZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShyLGUuRGlhZ25vc3RpY3MuTnVtZXJpY19saXRlcmFsc193aXRoX2Fic29sdXRlX3ZhbHVlc19lcXVhbF90b18yXzUzX29yX2dyZWF0ZXJfYXJlX3Rvb19sYXJnZV90b19iZV9yZXByZXNlbnRlZF9hY2N1cmF0ZWx5X2FzX2ludGVnZXJzKSl9fWZ1bmN0aW9uIFNMKHIpe3ZhciBpPWUuaXNMaXRlcmFsVHlwZU5vZGUoci5wYXJlbnQpfHxlLmlzUHJlZml4VW5hcnlFeHByZXNzaW9uKHIucGFyZW50KSYmZS5pc0xpdGVyYWxUeXBlTm9kZShyLnBhcmVudC5wYXJlbnQpO3JldHVybiEhKCFpJiZBZTw3JiZUdChyLGUuRGlhZ25vc3RpY3MuQmlnSW50X2xpdGVyYWxzX2FyZV9ub3RfYXZhaWxhYmxlX3doZW5fdGFyZ2V0aW5nX2xvd2VyX3RoYW5fRVMyMDIwKSl9ZnVuY3Rpb24gVEwocixpLHQsbyxzKXt2YXIgdT1lLmdldFNvdXJjZUZpbGVPZk5vZGUocik7aWYoIUpkKHUpKXt2YXIgaD1lLmdldFNwYW5PZlRva2VuQXRQb3NpdGlvbih1LHIucG9zKTtyZXR1cm4gcm4uYWRkKGUuY3JlYXRlRmlsZURpYWdub3N0aWModSxlLnRleHRTcGFuRW5kKGgpLDAsaSx0LG8scykpLCEwfXJldHVybiExfWZ1bmN0aW9uIHhMKCl7cmV0dXJuIEdyfHwoR3I9W10saWkuZm9yRWFjaChmdW5jdGlvbihyLGkpe2EudGVzdChpKSYmR3IucHVzaChyKX0pKSxHcn1mdW5jdGlvbiBFTChyKXt2YXIgaTtyZXR1cm4gci5pc1R5cGVPbmx5JiZyLm5hbWUmJnIubmFtZWRCaW5kaW5ncz9UdChyLGUuRGlhZ25vc3RpY3MuQV90eXBlX29ubHlfaW1wb3J0X2Nhbl9zcGVjaWZ5X2FfZGVmYXVsdF9pbXBvcnRfb3JfbmFtZWRfYmluZGluZ3NfYnV0X25vdF9ib3RoKTpyLmlzVHlwZU9ubHkmJigoaT1yLm5hbWVkQmluZGluZ3MpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5raW5kKT09PTI2OT9EQShyLm5hbWVkQmluZGluZ3MpOiExfWZ1bmN0aW9uIERBKHIpe3JldHVybiEhZS5mb3JFYWNoKHIuZWxlbWVudHMsZnVuY3Rpb24oaSl7aWYoaS5pc1R5cGVPbmx5KXJldHVybiBIcyhpLGkua2luZD09PTI3MD9lLkRpYWdub3N0aWNzLlRoZV90eXBlX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX29uX2FfbmFtZWRfaW1wb3J0X3doZW5faW1wb3J0X3R5cGVfaXNfdXNlZF9vbl9pdHNfaW1wb3J0X3N0YXRlbWVudDplLkRpYWdub3N0aWNzLlRoZV90eXBlX21vZGlmaWVyX2Nhbm5vdF9iZV91c2VkX29uX2FfbmFtZWRfZXhwb3J0X3doZW5fZXhwb3J0X3R5cGVfaXNfdXNlZF9vbl9pdHNfZXhwb3J0X3N0YXRlbWVudCl9KX1mdW5jdGlvbiBDTChyKXtpZihlcj09PWUuTW9kdWxlS2luZC5FUzIwMTUpcmV0dXJuIFR0KHIsZS5EaWFnbm9zdGljcy5EeW5hbWljX2ltcG9ydHNfYXJlX29ubHlfc3VwcG9ydGVkX3doZW5fdGhlX21vZHVsZV9mbGFnX2lzX3NldF90b19lczIwMjBfZXMyMDIyX2VzbmV4dF9jb21tb25qc19hbWRfc3lzdGVtX3VtZF9ub2RlMTZfb3Jfbm9kZW5leHQpO2lmKHIudHlwZUFyZ3VtZW50cylyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLlRoaXNfdXNlX29mX2ltcG9ydF9pc19pbnZhbGlkX2ltcG9ydF9jYWxsc19jYW5fYmVfd3JpdHRlbl9idXRfdGhleV9tdXN0X2hhdmVfcGFyZW50aGVzZXNfYW5kX2Nhbm5vdF9oYXZlX3R5cGVfYXJndW1lbnRzKTt2YXIgaT1yLmFyZ3VtZW50cztpZihlciE9PWUuTW9kdWxlS2luZC5FU05leHQmJmVyIT09ZS5Nb2R1bGVLaW5kLk5vZGVOZXh0JiYobmcoaSksaS5sZW5ndGg+MSkpe3ZhciB0PWlbMV07cmV0dXJuIFR0KHQsZS5EaWFnbm9zdGljcy5EeW5hbWljX2ltcG9ydHNfb25seV9zdXBwb3J0X2Ffc2Vjb25kX2FyZ3VtZW50X3doZW5fdGhlX21vZHVsZV9vcHRpb25faXNfc2V0X3RvX2VzbmV4dF9ub2RlMTZfb3Jfbm9kZW5leHQpfWlmKGkubGVuZ3RoPT09MHx8aS5sZW5ndGg+MilyZXR1cm4gVHQocixlLkRpYWdub3N0aWNzLkR5bmFtaWNfaW1wb3J0c19jYW5fb25seV9hY2NlcHRfYV9tb2R1bGVfc3BlY2lmaWVyX2FuZF9hbl9vcHRpb25hbF9hc3NlcnRpb25fYXNfYXJndW1lbnRzKTt2YXIgbz1lLmZpbmQoaSxlLmlzU3ByZWFkRWxlbWVudCk7cmV0dXJuIG8/VHQobyxlLkRpYWdub3N0aWNzLkFyZ3VtZW50X29mX2R5bmFtaWNfaW1wb3J0X2Nhbm5vdF9iZV9zcHJlYWRfZWxlbWVudCk6ITF9ZnVuY3Rpb24ga0wocixpKXt2YXIgdD1lLmdldE9iamVjdEZsYWdzKHIpO2lmKHQmMjAmJmkuZmxhZ3MmMTA0ODU3NilyZXR1cm4gZS5maW5kKGkudHlwZXMsZnVuY3Rpb24obyl7aWYoby5mbGFncyY1MjQyODgpe3ZhciBzPXQmZS5nZXRPYmplY3RGbGFncyhvKTtpZihzJjQpcmV0dXJuIHIudGFyZ2V0PT09by50YXJnZXQ7aWYocyYxNilyZXR1cm4hIXIuYWxpYXNTeW1ib2wmJnIuYWxpYXNTeW1ib2w9PT1vLmFsaWFzU3ltYm9sfXJldHVybiExfSl9ZnVuY3Rpb24gQUwocixpKXtpZihlLmdldE9iamVjdEZsYWdzKHIpJjEyOCYmcmcoaSxzcCkpcmV0dXJuIGUuZmluZChpLnR5cGVzLGZ1bmN0aW9uKHQpe3JldHVybiFzcCh0KX0pfWZ1bmN0aW9uIE5MKHIsaSl7dmFyIHQ9MCxvPW90KHIsdCkubGVuZ3RoPjB8fCh0PTEsb3Qocix0KS5sZW5ndGg+MCk7aWYobylyZXR1cm4gZS5maW5kKGkudHlwZXMsZnVuY3Rpb24ocyl7cmV0dXJuIG90KHMsdCkubGVuZ3RoPjB9KX1mdW5jdGlvbiBQTChyLGkpe3ZhciB0O2lmKCEoci5mbGFncyY0MDY5Nzg1NTYpKWZvcih2YXIgbz0wLHM9MCx1PWkudHlwZXM7czx1Lmxlbmd0aDtzKyspe3ZhciBoPXVbc107aWYoIShoLmZsYWdzJjQwNjk3ODU1Nikpe3ZhciB6PURvKFtxbChyKSxxbChoKV0pO2lmKHouZmxhZ3MmNDE5NDMwNClyZXR1cm4gaDtpZihWbCh6KXx8ei5mbGFncyYxMDQ4NTc2KXt2YXIgbWU9ei5mbGFncyYxMDQ4NTc2P2UuY291bnRXaGVyZSh6LnR5cGVzLFZsKToxO21lPj1vJiYodD1oLG89bWUpfX19cmV0dXJuIHR9ZnVuY3Rpb24gSUwocil7aWYoZnMociw2NzEwODg2NCkpe3ZhciBpPWVjKHIsZnVuY3Rpb24odCl7cmV0dXJuISh0LmZsYWdzJjEzMTA2OCl9KTtpZighKGkuZmxhZ3MmMTMxMDcyKSlyZXR1cm4gaX1yZXR1cm4gcn1mdW5jdGlvbiBiQShyLGksdCxvKXtpZihpLmZsYWdzJjEwNDg1NzYmJnIuZmxhZ3MmMjYyMTQ0MCl7dmFyIHM9JEUoaSxyKTtpZihzKXJldHVybiBzO3ZhciB1PXVvKHIpO2lmKHUpe3ZhciBoPVlFKHUsaSk7aWYoaClyZXR1cm4gVUQoaSxlLm1hcChoLGZ1bmN0aW9uKHope3JldHVybltmdW5jdGlvbigpe3JldHVybiBKdCh6KX0sei5lc2NhcGVkTmFtZV19KSx0LHZvaWQgMCxvKX19fX1lLmNyZWF0ZVR5cGVDaGVja2VyPUw7ZnVuY3Rpb24gUChsKXtyZXR1cm4hZS5pc0FjY2Vzc29yKGwpfWZ1bmN0aW9uIGsobCl7cmV0dXJuIGwua2luZCE9PTI1NiYmbC5raW5kIT09MTY5fHwhIWwuYm9keX1mdW5jdGlvbiBZKGwpe3N3aXRjaChsLnBhcmVudC5raW5kKXtjYXNlIDI3MDpjYXNlIDI3NTpyZXR1cm4gZS5pc0lkZW50aWZpZXIobCk7ZGVmYXVsdDpyZXR1cm4gZS5pc0RlY2xhcmF0aW9uTmFtZShsKX19dmFyIFU7KGZ1bmN0aW9uKGwpe2wuSlNYPVwiSlNYXCIsbC5JbnRyaW5zaWNFbGVtZW50cz1cIkludHJpbnNpY0VsZW1lbnRzXCIsbC5FbGVtZW50Q2xhc3M9XCJFbGVtZW50Q2xhc3NcIixsLkVsZW1lbnRBdHRyaWJ1dGVzUHJvcGVydHlOYW1lQ29udGFpbmVyPVwiRWxlbWVudEF0dHJpYnV0ZXNQcm9wZXJ0eVwiLGwuRWxlbWVudENoaWxkcmVuQXR0cmlidXRlTmFtZUNvbnRhaW5lcj1cIkVsZW1lbnRDaGlsZHJlbkF0dHJpYnV0ZVwiLGwuRWxlbWVudD1cIkVsZW1lbnRcIixsLkludHJpbnNpY0F0dHJpYnV0ZXM9XCJJbnRyaW5zaWNBdHRyaWJ1dGVzXCIsbC5JbnRyaW5zaWNDbGFzc0F0dHJpYnV0ZXM9XCJJbnRyaW5zaWNDbGFzc0F0dHJpYnV0ZXNcIixsLkxpYnJhcnlNYW5hZ2VkQXR0cmlidXRlcz1cIkxpYnJhcnlNYW5hZ2VkQXR0cmlidXRlc1wifSkoVXx8KFU9e30pKTtmdW5jdGlvbiBqKGwpe3N3aXRjaChsKXtjYXNlIDA6cmV0dXJuXCJ5aWVsZFR5cGVcIjtjYXNlIDE6cmV0dXJuXCJyZXR1cm5UeXBlXCI7Y2FzZSAyOnJldHVyblwibmV4dFR5cGVcIn19ZnVuY3Rpb24gSChsKXtyZXR1cm4hIShsLmZsYWdzJjEpfWUuc2lnbmF0dXJlSGFzUmVzdFBhcmFtZXRlcj1IO2Z1bmN0aW9uIEkobCl7cmV0dXJuISEobC5mbGFncyYyKX1lLnNpZ25hdHVyZUhhc0xpdGVyYWxUeXBlcz1JfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShmLFQsSyxiKXtpZihmPT09dm9pZCAwfHxUPT09dm9pZCAwKXJldHVybiBmO3ZhciBzZT1UKGYpO2lmKHNlPT09ZilyZXR1cm4gZjt2YXIgSjtpZihzZSE9PXZvaWQgMClyZXR1cm4gZS5pc0FycmF5KHNlKT9KPShifHxvZSkoc2UpOko9c2UsZS5EZWJ1Zy5hc3NlcnROb2RlKEosSyksSn1lLnZpc2l0Tm9kZT1hO2Z1bmN0aW9uIEMoZixULEssYixzZSl7aWYoZj09PXZvaWQgMHx8VD09PXZvaWQgMClyZXR1cm4gZjt2YXIgSixpZT1mLmxlbmd0aDsoYj09PXZvaWQgMHx8YjwwKSYmKGI9MCksKHNlPT09dm9pZCAwfHxzZT5pZS1iKSYmKHNlPWllLWIpO3ZhciBSLHE9LTEsTz0tMTsoYj4wfHxzZTxpZSkmJihKPVtdLFI9Zi5oYXNUcmFpbGluZ0NvbW1hJiZiK3NlPT09aWUpO2Zvcih2YXIgdmU9MDt2ZTxzZTt2ZSsrKXt2YXIgZWU9Zlt2ZStiXSxoZT1lZSE9PXZvaWQgMD9UKGVlKTp2b2lkIDA7aWYoKEohPT12b2lkIDB8fGhlPT09dm9pZCAwfHxoZSE9PWVlKSYmKEo9PT12b2lkIDAmJihKPWYuc2xpY2UoMCx2ZSksUj1mLmhhc1RyYWlsaW5nQ29tbWEscT1mLnBvcyxPPWYuZW5kKSxoZSkpaWYoZS5pc0FycmF5KGhlKSlmb3IodmFyIEY9MCx4PWhlO0Y8eC5sZW5ndGg7RisrKXt2YXIgWD14W0ZdO2UuRGVidWcuYXNzZXJ0Tm9kZShYLEspLEoucHVzaChYKX1lbHNlIGUuRGVidWcuYXNzZXJ0Tm9kZShoZSxLKSxKLnB1c2goaGUpfWlmKEope3ZhciAkPWUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoSixSKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2VQb3NFbmQoJCxxLE8pLCR9cmV0dXJuIGZ9ZS52aXNpdE5vZGVzPUM7ZnVuY3Rpb24gdyhmLFQsSyxiLHNlLEope3JldHVybiBKPT09dm9pZCAwJiYoSj1DKSxLLnN0YXJ0TGV4aWNhbEVudmlyb25tZW50KCksZj1KKGYsVCxlLmlzU3RhdGVtZW50LGIpLHNlJiYoZj1LLmZhY3RvcnkuZW5zdXJlVXNlU3RyaWN0KGYpKSxlLmZhY3RvcnkubWVyZ2VMZXhpY2FsRW52aXJvbm1lbnQoZixLLmVuZExleGljYWxFbnZpcm9ubWVudCgpKX1lLnZpc2l0TGV4aWNhbEVudmlyb25tZW50PXc7ZnVuY3Rpb24gQihmLFQsSyxiKXtiPT09dm9pZCAwJiYoYj1DKTt2YXIgc2U7cmV0dXJuIEsuc3RhcnRMZXhpY2FsRW52aXJvbm1lbnQoKSxmJiYoSy5zZXRMZXhpY2FsRW52aXJvbm1lbnRGbGFncygxLCEwKSxzZT1iKGYsVCxlLmlzUGFyYW1ldGVyRGVjbGFyYXRpb24pLEsuZ2V0TGV4aWNhbEVudmlyb25tZW50RmxhZ3MoKSYyJiZlLmdldEVtaXRTY3JpcHRUYXJnZXQoSy5nZXRDb21waWxlck9wdGlvbnMoKSk+PTImJihzZT1FKHNlLEspKSxLLnNldExleGljYWxFbnZpcm9ubWVudEZsYWdzKDEsITEpKSxLLnN1c3BlbmRMZXhpY2FsRW52aXJvbm1lbnQoKSxzZX1lLnZpc2l0UGFyYW1ldGVyTGlzdD1CO2Z1bmN0aW9uIEUoZixUKXtmb3IodmFyIEssYj0wO2I8Zi5sZW5ndGg7YisrKXt2YXIgc2U9ZltiXSxKPVEoc2UsVCk7KEt8fEohPT1zZSkmJihLfHwoSz1mLnNsaWNlKDAsYikpLEtbYl09Sil9cmV0dXJuIEs/ZS5zZXRUZXh0UmFuZ2UoVC5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShLLGYuaGFzVHJhaWxpbmdDb21tYSksZik6Zn1mdW5jdGlvbiBRKGYsVCl7cmV0dXJuIGYuZG90RG90RG90VG9rZW4/ZjplLmlzQmluZGluZ1BhdHRlcm4oZi5uYW1lKT9sZShmLFQpOmYuaW5pdGlhbGl6ZXI/TihmLGYubmFtZSxmLmluaXRpYWxpemVyLFQpOmZ9ZnVuY3Rpb24gbGUoZixUKXt2YXIgSz1ULmZhY3Rvcnk7cmV0dXJuIFQuYWRkSW5pdGlhbGl6YXRpb25TdGF0ZW1lbnQoSy5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsSy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbSy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGYubmFtZSx2b2lkIDAsZi50eXBlLGYuaW5pdGlhbGl6ZXI/Sy5jcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oSy5jcmVhdGVTdHJpY3RFcXVhbGl0eShLLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKGYpLEsuY3JlYXRlVm9pZFplcm8oKSksdm9pZCAwLGYuaW5pdGlhbGl6ZXIsdm9pZCAwLEsuZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoZikpOksuZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoZikpXSkpKSxLLnVwZGF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKGYsZi5kZWNvcmF0b3JzLGYubW9kaWZpZXJzLGYuZG90RG90RG90VG9rZW4sSy5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShmKSxmLnF1ZXN0aW9uVG9rZW4sZi50eXBlLHZvaWQgMCl9ZnVuY3Rpb24gTihmLFQsSyxiKXt2YXIgc2U9Yi5mYWN0b3J5O3JldHVybiBiLmFkZEluaXRpYWxpemF0aW9uU3RhdGVtZW50KHNlLmNyZWF0ZUlmU3RhdGVtZW50KHNlLmNyZWF0ZVR5cGVDaGVjayhzZS5jbG9uZU5vZGUoVCksXCJ1bmRlZmluZWRcIiksZS5zZXRFbWl0RmxhZ3MoZS5zZXRUZXh0UmFuZ2Uoc2UuY3JlYXRlQmxvY2soW3NlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZS5zZXRFbWl0RmxhZ3MoZS5zZXRUZXh0UmFuZ2Uoc2UuY3JlYXRlQXNzaWdubWVudChlLnNldEVtaXRGbGFncyhzZS5jbG9uZU5vZGUoVCksNDgpLGUuc2V0RW1pdEZsYWdzKEssNDh8ZS5nZXRFbWl0RmxhZ3MoSyl8MTUzNikpLGYpLDE1MzYpKV0pLGYpLDE5NTMpKSksc2UudXBkYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24oZixmLmRlY29yYXRvcnMsZi5tb2RpZmllcnMsZi5kb3REb3REb3RUb2tlbixmLm5hbWUsZi5xdWVzdGlvblRva2VuLGYudHlwZSx2b2lkIDApfWZ1bmN0aW9uIHAoZixULEssYil7Yj09PXZvaWQgMCYmKGI9YSksSy5yZXN1bWVMZXhpY2FsRW52aXJvbm1lbnQoKTt2YXIgc2U9YihmLFQsZS5pc0NvbmNpc2VCb2R5KSxKPUsuZW5kTGV4aWNhbEVudmlyb25tZW50KCk7aWYoZS5zb21lKEopKXtpZighc2UpcmV0dXJuIEsuZmFjdG9yeS5jcmVhdGVCbG9jayhKKTt2YXIgaWU9Sy5mYWN0b3J5LmNvbnZlcnRlcnMuY29udmVydFRvRnVuY3Rpb25CbG9jayhzZSksUj1lLmZhY3RvcnkubWVyZ2VMZXhpY2FsRW52aXJvbm1lbnQoaWUuc3RhdGVtZW50cyxKKTtyZXR1cm4gSy5mYWN0b3J5LnVwZGF0ZUJsb2NrKGllLFIpfXJldHVybiBzZX1lLnZpc2l0RnVuY3Rpb25Cb2R5PXA7ZnVuY3Rpb24gbShmLFQsSyl7Sy5zdGFydEJsb2NrU2NvcGUoKTt2YXIgYj1hKGYsVCxlLmlzU3RhdGVtZW50LEsuZmFjdG9yeS5saWZ0VG9CbG9jayksc2U9Sy5lbmRCbG9ja1Njb3BlKCk7cmV0dXJuIGUuc29tZShzZSk/ZS5pc0Jsb2NrKGIpPyhzZS5wdXNoLmFwcGx5KHNlLGIuc3RhdGVtZW50cyksSy5mYWN0b3J5LnVwZGF0ZUJsb2NrKGIsc2UpKTooc2UucHVzaChiKSxLLmZhY3RvcnkuY3JlYXRlQmxvY2soc2UpKTpifWUudmlzaXRJdGVyYXRpb25Cb2R5PW07ZnVuY3Rpb24gRyhmLFQsSyxiLHNlLEope2lmKGI9PT12b2lkIDAmJihiPUMpLEo9PT12b2lkIDAmJihKPWEpLGYhPT12b2lkIDApe3ZhciBpZT1mLmtpbmQ7aWYoaWU+MCYmaWU8PTE2MHx8aWU9PT0xOTIpcmV0dXJuIGY7dmFyIFI9Sy5mYWN0b3J5O3N3aXRjaChpZSl7Y2FzZSA3OTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSWRlbnRpZmllcihmLGIoZi50eXBlQXJndW1lbnRzLFQsZS5pc1R5cGVOb2RlT3JUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pKTtjYXNlIDE2MTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlUXVhbGlmaWVkTmFtZShmLEooZi5sZWZ0LFQsZS5pc0VudGl0eU5hbWUpLEooZi5yaWdodCxULGUuaXNJZGVudGlmaWVyKSk7Y2FzZSAxNjI6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUNvbXB1dGVkUHJvcGVydHlOYW1lKGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMTYzOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oZixiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxKKGYubmFtZSxULGUuaXNJZGVudGlmaWVyKSxKKGYuY29uc3RyYWludCxULGUuaXNUeXBlTm9kZSksSihmLmRlZmF1bHQsVCxlLmlzVHlwZU5vZGUpKTtjYXNlIDE2NDpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24oZixiKGYuZGVjb3JhdG9ycyxULGUuaXNEZWNvcmF0b3IpLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5kb3REb3REb3RUb2tlbixzZSxlLmlzRG90RG90RG90VG9rZW4pLEooZi5uYW1lLFQsZS5pc0JpbmRpbmdOYW1lKSxKKGYucXVlc3Rpb25Ub2tlbixzZSxlLmlzUXVlc3Rpb25Ub2tlbiksSihmLnR5cGUsVCxlLmlzVHlwZU5vZGUpLEooZi5pbml0aWFsaXplcixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAxNjU6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZURlY29yYXRvcihmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDE2NjpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlUHJvcGVydHlTaWduYXR1cmUoZixiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxKKGYubmFtZSxULGUuaXNQcm9wZXJ0eU5hbWUpLEooZi5xdWVzdGlvblRva2VuLHNlLGUuaXNUb2tlbiksSihmLnR5cGUsVCxlLmlzVHlwZU5vZGUpKTtjYXNlIDE2NzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlUHJvcGVydHlEZWNsYXJhdGlvbihmLGIoZi5kZWNvcmF0b3JzLFQsZS5pc0RlY29yYXRvciksYihmLm1vZGlmaWVycyxULGUuaXNNb2RpZmllciksSihmLm5hbWUsVCxlLmlzUHJvcGVydHlOYW1lKSxKKGYucXVlc3Rpb25Ub2tlbnx8Zi5leGNsYW1hdGlvblRva2VuLHNlLGUuaXNRdWVzdGlvbk9yRXhjbGFtYXRpb25Ub2tlbiksSihmLnR5cGUsVCxlLmlzVHlwZU5vZGUpLEooZi5pbml0aWFsaXplcixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAxNjg6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZU1ldGhvZFNpZ25hdHVyZShmLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5uYW1lLFQsZS5pc1Byb3BlcnR5TmFtZSksSihmLnF1ZXN0aW9uVG9rZW4sc2UsZS5pc1F1ZXN0aW9uVG9rZW4pLGIoZi50eXBlUGFyYW1ldGVycyxULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLGIoZi5wYXJhbWV0ZXJzLFQsZS5pc1BhcmFtZXRlckRlY2xhcmF0aW9uKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMTY5OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVNZXRob2REZWNsYXJhdGlvbihmLGIoZi5kZWNvcmF0b3JzLFQsZS5pc0RlY29yYXRvciksYihmLm1vZGlmaWVycyxULGUuaXNNb2RpZmllciksSihmLmFzdGVyaXNrVG9rZW4sc2UsZS5pc0FzdGVyaXNrVG9rZW4pLEooZi5uYW1lLFQsZS5pc1Byb3BlcnR5TmFtZSksSihmLnF1ZXN0aW9uVG9rZW4sc2UsZS5pc1F1ZXN0aW9uVG9rZW4pLGIoZi50eXBlUGFyYW1ldGVycyxULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLEIoZi5wYXJhbWV0ZXJzLFQsSyxiKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSkscChmLmJvZHksVCxLLEopKTtjYXNlIDE3MTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbihmLGIoZi5kZWNvcmF0b3JzLFQsZS5pc0RlY29yYXRvciksYihmLm1vZGlmaWVycyxULGUuaXNNb2RpZmllciksQihmLnBhcmFtZXRlcnMsVCxLLGIpLHAoZi5ib2R5LFQsSyxKKSk7Y2FzZSAxNzI6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUdldEFjY2Vzc29yRGVjbGFyYXRpb24oZixiKGYuZGVjb3JhdG9ycyxULGUuaXNEZWNvcmF0b3IpLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5uYW1lLFQsZS5pc1Byb3BlcnR5TmFtZSksQihmLnBhcmFtZXRlcnMsVCxLLGIpLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSxwKGYuYm9keSxULEssSikpO2Nhc2UgMTczOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKGYsYihmLmRlY29yYXRvcnMsVCxlLmlzRGVjb3JhdG9yKSxiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxKKGYubmFtZSxULGUuaXNQcm9wZXJ0eU5hbWUpLEIoZi5wYXJhbWV0ZXJzLFQsSyxiKSxwKGYuYm9keSxULEssSikpO2Nhc2UgMTcwOnJldHVybiBlLkRlYnVnLnR5cGUoZiksSy5zdGFydExleGljYWxFbnZpcm9ubWVudCgpLEsuc3VzcGVuZExleGljYWxFbnZpcm9ubWVudCgpLFIudXBkYXRlQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKGYsYihmLmRlY29yYXRvcnMsVCxlLmlzRGVjb3JhdG9yKSxiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxwKGYuYm9keSxULEssSikpO2Nhc2UgMTc0OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVDYWxsU2lnbmF0dXJlKGYsYihmLnR5cGVQYXJhbWV0ZXJzLFQsZS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbiksYihmLnBhcmFtZXRlcnMsVCxlLmlzUGFyYW1ldGVyRGVjbGFyYXRpb24pLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxNzU6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUNvbnN0cnVjdFNpZ25hdHVyZShmLGIoZi50eXBlUGFyYW1ldGVycyxULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLGIoZi5wYXJhbWV0ZXJzLFQsZS5pc1BhcmFtZXRlckRlY2xhcmF0aW9uKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMTc2OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVJbmRleFNpZ25hdHVyZShmLGIoZi5kZWNvcmF0b3JzLFQsZS5pc0RlY29yYXRvciksYihmLm1vZGlmaWVycyxULGUuaXNNb2RpZmllciksYihmLnBhcmFtZXRlcnMsVCxlLmlzUGFyYW1ldGVyRGVjbGFyYXRpb24pLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxNzc6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVR5cGVQcmVkaWNhdGVOb2RlKGYsSihmLmFzc2VydHNNb2RpZmllcixULGUuaXNBc3NlcnRzS2V5d29yZCksSihmLnBhcmFtZXRlck5hbWUsVCxlLmlzSWRlbnRpZmllck9yVGhpc1R5cGVOb2RlKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMTc4OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVUeXBlUmVmZXJlbmNlTm9kZShmLEooZi50eXBlTmFtZSxULGUuaXNFbnRpdHlOYW1lKSxiKGYudHlwZUFyZ3VtZW50cyxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMTc5OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVGdW5jdGlvblR5cGVOb2RlKGYsYihmLnR5cGVQYXJhbWV0ZXJzLFQsZS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbiksYihmLnBhcmFtZXRlcnMsVCxlLmlzUGFyYW1ldGVyRGVjbGFyYXRpb24pLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxODA6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUNvbnN0cnVjdG9yVHlwZU5vZGUoZixiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxiKGYudHlwZVBhcmFtZXRlcnMsVCxlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKSxiKGYucGFyYW1ldGVycyxULGUuaXNQYXJhbWV0ZXJEZWNsYXJhdGlvbiksSihmLnR5cGUsVCxlLmlzVHlwZU5vZGUpKTtjYXNlIDE4MTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlVHlwZVF1ZXJ5Tm9kZShmLEooZi5leHByTmFtZSxULGUuaXNFbnRpdHlOYW1lKSxiKGYudHlwZUFyZ3VtZW50cyxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMTgyOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVUeXBlTGl0ZXJhbE5vZGUoZixiKGYubWVtYmVycyxULGUuaXNUeXBlRWxlbWVudCkpO2Nhc2UgMTgzOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVBcnJheVR5cGVOb2RlKGYsSihmLmVsZW1lbnRUeXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxODQ6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVR1cGxlVHlwZU5vZGUoZixiKGYuZWxlbWVudHMsVCxlLmlzVHlwZU5vZGUpKTtjYXNlIDE4NTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlT3B0aW9uYWxUeXBlTm9kZShmLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxODY6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVJlc3RUeXBlTm9kZShmLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxODc6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVVuaW9uVHlwZU5vZGUoZixiKGYudHlwZXMsVCxlLmlzVHlwZU5vZGUpKTtjYXNlIDE4ODpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSW50ZXJzZWN0aW9uVHlwZU5vZGUoZixiKGYudHlwZXMsVCxlLmlzVHlwZU5vZGUpKTtjYXNlIDE4OTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQ29uZGl0aW9uYWxUeXBlTm9kZShmLEooZi5jaGVja1R5cGUsVCxlLmlzVHlwZU5vZGUpLEooZi5leHRlbmRzVHlwZSxULGUuaXNUeXBlTm9kZSksSihmLnRydWVUeXBlLFQsZS5pc1R5cGVOb2RlKSxKKGYuZmFsc2VUeXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxOTA6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUluZmVyVHlwZU5vZGUoZixKKGYudHlwZVBhcmFtZXRlcixULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pKTtjYXNlIDIwMDpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSW1wb3J0VHlwZU5vZGUoZixKKGYuYXJndW1lbnQsVCxlLmlzVHlwZU5vZGUpLEooZi5hc3NlcnRpb25zLFQsZS5pc05vZGUpLEooZi5xdWFsaWZpZXIsVCxlLmlzRW50aXR5TmFtZSksQyhmLnR5cGVBcmd1bWVudHMsVCxlLmlzVHlwZU5vZGUpLGYuaXNUeXBlT2YpO2Nhc2UgMjk1OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVJbXBvcnRUeXBlQXNzZXJ0aW9uQ29udGFpbmVyKGYsSihmLmFzc2VydENsYXVzZSxULGUuaXNOb2RlKSxmLm11bHRpTGluZSk7Y2FzZSAxOTc6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZU5hbWVkVHVwbGVNZW1iZXIoZixhKGYuZG90RG90RG90VG9rZW4sVCxlLmlzRG90RG90RG90VG9rZW4pLGEoZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpLGEoZi5xdWVzdGlvblRva2VuLFQsZS5pc1F1ZXN0aW9uVG9rZW4pLGEoZi50eXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxOTE6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVBhcmVudGhlc2l6ZWRUeXBlKGYsSihmLnR5cGUsVCxlLmlzVHlwZU5vZGUpKTtjYXNlIDE5MzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlVHlwZU9wZXJhdG9yTm9kZShmLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxOTQ6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUluZGV4ZWRBY2Nlc3NUeXBlTm9kZShmLEooZi5vYmplY3RUeXBlLFQsZS5pc1R5cGVOb2RlKSxKKGYuaW5kZXhUeXBlLFQsZS5pc1R5cGVOb2RlKSk7Y2FzZSAxOTU6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZU1hcHBlZFR5cGVOb2RlKGYsSihmLnJlYWRvbmx5VG9rZW4sc2UsZS5pc1JlYWRvbmx5S2V5d29yZE9yUGx1c09yTWludXNUb2tlbiksSihmLnR5cGVQYXJhbWV0ZXIsVCxlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKSxKKGYubmFtZVR5cGUsVCxlLmlzVHlwZU5vZGUpLEooZi5xdWVzdGlvblRva2VuLHNlLGUuaXNRdWVzdGlvbk9yUGx1c09yTWludXNUb2tlbiksSihmLnR5cGUsVCxlLmlzVHlwZU5vZGUpLGIoZi5tZW1iZXJzLFQsZS5pc1R5cGVFbGVtZW50KSk7Y2FzZSAxOTY6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUxpdGVyYWxUeXBlTm9kZShmLEooZi5saXRlcmFsLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDE5ODpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlVGVtcGxhdGVMaXRlcmFsVHlwZShmLEooZi5oZWFkLFQsZS5pc1RlbXBsYXRlSGVhZCksYihmLnRlbXBsYXRlU3BhbnMsVCxlLmlzVGVtcGxhdGVMaXRlcmFsVHlwZVNwYW4pKTtjYXNlIDE5OTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlVGVtcGxhdGVMaXRlcmFsVHlwZVNwYW4oZixKKGYudHlwZSxULGUuaXNUeXBlTm9kZSksSihmLmxpdGVyYWwsVCxlLmlzVGVtcGxhdGVNaWRkbGVPclRlbXBsYXRlVGFpbCkpO2Nhc2UgMjAxOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVPYmplY3RCaW5kaW5nUGF0dGVybihmLGIoZi5lbGVtZW50cyxULGUuaXNCaW5kaW5nRWxlbWVudCkpO2Nhc2UgMjAyOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVBcnJheUJpbmRpbmdQYXR0ZXJuKGYsYihmLmVsZW1lbnRzLFQsZS5pc0FycmF5QmluZGluZ0VsZW1lbnQpKTtjYXNlIDIwMzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQmluZGluZ0VsZW1lbnQoZixKKGYuZG90RG90RG90VG9rZW4sc2UsZS5pc0RvdERvdERvdFRva2VuKSxKKGYucHJvcGVydHlOYW1lLFQsZS5pc1Byb3BlcnR5TmFtZSksSihmLm5hbWUsVCxlLmlzQmluZGluZ05hbWUpLEooZi5pbml0aWFsaXplcixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyMDQ6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oZixiKGYuZWxlbWVudHMsVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjA1OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihmLGIoZi5wcm9wZXJ0aWVzLFQsZS5pc09iamVjdExpdGVyYWxFbGVtZW50TGlrZSkpO2Nhc2UgMjA2OnJldHVybiBmLmZsYWdzJjMyPyhlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVQcm9wZXJ0eUFjY2Vzc0NoYWluKGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbiksSihmLnF1ZXN0aW9uRG90VG9rZW4sc2UsZS5pc1F1ZXN0aW9uRG90VG9rZW4pLEooZi5uYW1lLFQsZS5pc01lbWJlck5hbWUpKSk6KGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pLEooZi5uYW1lLFQsZS5pc01lbWJlck5hbWUpKSk7Y2FzZSAyMDc6cmV0dXJuIGYuZmxhZ3MmMzI/KGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUVsZW1lbnRBY2Nlc3NDaGFpbihmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pLEooZi5xdWVzdGlvbkRvdFRva2VuLHNlLGUuaXNRdWVzdGlvbkRvdFRva2VuKSxKKGYuYXJndW1lbnRFeHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKSk6KGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbiksSihmLmFyZ3VtZW50RXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSkpO2Nhc2UgMjA4OnJldHVybiBmLmZsYWdzJjMyPyhlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVDYWxsQ2hhaW4oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxKKGYucXVlc3Rpb25Eb3RUb2tlbixzZSxlLmlzUXVlc3Rpb25Eb3RUb2tlbiksYihmLnR5cGVBcmd1bWVudHMsVCxlLmlzVHlwZU5vZGUpLGIoZi5hcmd1bWVudHMsVCxlLmlzRXhwcmVzc2lvbikpKTooZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQ2FsbEV4cHJlc3Npb24oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxiKGYudHlwZUFyZ3VtZW50cyxULGUuaXNUeXBlTm9kZSksYihmLmFyZ3VtZW50cyxULGUuaXNFeHByZXNzaW9uKSkpO2Nhc2UgMjA5OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVOZXdFeHByZXNzaW9uKGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbiksYihmLnR5cGVBcmd1bWVudHMsVCxlLmlzVHlwZU5vZGUpLGIoZi5hcmd1bWVudHMsVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjEwOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oZixKKGYudGFnLFQsZS5pc0V4cHJlc3Npb24pLEMoZi50eXBlQXJndW1lbnRzLFQsZS5pc1R5cGVOb2RlKSxKKGYudGVtcGxhdGUsVCxlLmlzVGVtcGxhdGVMaXRlcmFsKSk7Y2FzZSAyMTE6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVR5cGVBc3NlcnRpb24oZixKKGYudHlwZSxULGUuaXNUeXBlTm9kZSksSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjEyOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDIxMzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlRnVuY3Rpb25FeHByZXNzaW9uKGYsYihmLm1vZGlmaWVycyxULGUuaXNNb2RpZmllciksSihmLmFzdGVyaXNrVG9rZW4sc2UsZS5pc0FzdGVyaXNrVG9rZW4pLEooZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpLGIoZi50eXBlUGFyYW1ldGVycyxULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLEIoZi5wYXJhbWV0ZXJzLFQsSyxiKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSkscChmLmJvZHksVCxLLEopKTtjYXNlIDIxNDpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQXJyb3dGdW5jdGlvbihmLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLGIoZi50eXBlUGFyYW1ldGVycyxULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLEIoZi5wYXJhbWV0ZXJzLFQsSyxiKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSksSihmLmVxdWFsc0dyZWF0ZXJUaGFuVG9rZW4sc2UsZS5pc0VxdWFsc0dyZWF0ZXJUaGFuVG9rZW4pLHAoZi5ib2R5LFQsSyxKKSk7Y2FzZSAyMTU6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZURlbGV0ZUV4cHJlc3Npb24oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyMTY6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVR5cGVPZkV4cHJlc3Npb24oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyMTc6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVZvaWRFeHByZXNzaW9uKGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjE4OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVBd2FpdEV4cHJlc3Npb24oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyMTk6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVByZWZpeFVuYXJ5RXhwcmVzc2lvbihmLEooZi5vcGVyYW5kLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDIyMDpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbihmLEooZi5vcGVyYW5kLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDIyMTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQmluYXJ5RXhwcmVzc2lvbihmLEooZi5sZWZ0LFQsZS5pc0V4cHJlc3Npb24pLEooZi5vcGVyYXRvclRva2VuLHNlLGUuaXNCaW5hcnlPcGVyYXRvclRva2VuKSxKKGYucmlnaHQsVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjIyOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oZixKKGYuY29uZGl0aW9uLFQsZS5pc0V4cHJlc3Npb24pLEooZi5xdWVzdGlvblRva2VuLHNlLGUuaXNRdWVzdGlvblRva2VuKSxKKGYud2hlblRydWUsVCxlLmlzRXhwcmVzc2lvbiksSihmLmNvbG9uVG9rZW4sc2UsZS5pc0NvbG9uVG9rZW4pLEooZi53aGVuRmFsc2UsVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjIzOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVUZW1wbGF0ZUV4cHJlc3Npb24oZixKKGYuaGVhZCxULGUuaXNUZW1wbGF0ZUhlYWQpLGIoZi50ZW1wbGF0ZVNwYW5zLFQsZS5pc1RlbXBsYXRlU3BhbikpO2Nhc2UgMjI0OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVZaWVsZEV4cHJlc3Npb24oZixKKGYuYXN0ZXJpc2tUb2tlbixzZSxlLmlzQXN0ZXJpc2tUb2tlbiksSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjI1OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVTcHJlYWRFbGVtZW50KGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjI2OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVDbGFzc0V4cHJlc3Npb24oZixiKGYuZGVjb3JhdG9ycyxULGUuaXNEZWNvcmF0b3IpLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpLGIoZi50eXBlUGFyYW1ldGVycyxULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLGIoZi5oZXJpdGFnZUNsYXVzZXMsVCxlLmlzSGVyaXRhZ2VDbGF1c2UpLGIoZi5tZW1iZXJzLFQsZS5pc0NsYXNzRWxlbWVudCkpO2Nhc2UgMjI4OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxiKGYudHlwZUFyZ3VtZW50cyxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMjI5OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVBc0V4cHJlc3Npb24oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMjMwOnJldHVybiBmLmZsYWdzJjMyPyhlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVOb25OdWxsQ2hhaW4oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSkpOihlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVOb25OdWxsRXhwcmVzc2lvbihmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKSk7Y2FzZSAyMzE6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZU1ldGFQcm9wZXJ0eShmLEooZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpKTtjYXNlIDIzMzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlVGVtcGxhdGVTcGFuKGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbiksSihmLmxpdGVyYWwsVCxlLmlzVGVtcGxhdGVNaWRkbGVPclRlbXBsYXRlVGFpbCkpO2Nhc2UgMjM1OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVCbG9jayhmLGIoZi5zdGF0ZW1lbnRzLFQsZS5pc1N0YXRlbWVudCkpO2Nhc2UgMjM3OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVWYXJpYWJsZVN0YXRlbWVudChmLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5kZWNsYXJhdGlvbkxpc3QsVCxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpKTtjYXNlIDIzODpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlRXhwcmVzc2lvblN0YXRlbWVudChmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDIzOTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSWZTdGF0ZW1lbnQoZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxKKGYudGhlblN0YXRlbWVudCxULGUuaXNTdGF0ZW1lbnQsUi5saWZ0VG9CbG9jayksSihmLmVsc2VTdGF0ZW1lbnQsVCxlLmlzU3RhdGVtZW50LFIubGlmdFRvQmxvY2spKTtjYXNlIDI0MDpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlRG9TdGF0ZW1lbnQoZixtKGYuc3RhdGVtZW50LFQsSyksSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjQxOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVXaGlsZVN0YXRlbWVudChmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pLG0oZi5zdGF0ZW1lbnQsVCxLKSk7Y2FzZSAyNDI6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUZvclN0YXRlbWVudChmLEooZi5pbml0aWFsaXplcixULGUuaXNGb3JJbml0aWFsaXplciksSihmLmNvbmRpdGlvbixULGUuaXNFeHByZXNzaW9uKSxKKGYuaW5jcmVtZW50b3IsVCxlLmlzRXhwcmVzc2lvbiksbShmLnN0YXRlbWVudCxULEspKTtjYXNlIDI0MzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlRm9ySW5TdGF0ZW1lbnQoZixKKGYuaW5pdGlhbGl6ZXIsVCxlLmlzRm9ySW5pdGlhbGl6ZXIpLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pLG0oZi5zdGF0ZW1lbnQsVCxLKSk7Y2FzZSAyNDQ6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUZvck9mU3RhdGVtZW50KGYsSihmLmF3YWl0TW9kaWZpZXIsc2UsZS5pc0F3YWl0S2V5d29yZCksSihmLmluaXRpYWxpemVyLFQsZS5pc0ZvckluaXRpYWxpemVyKSxKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxtKGYuc3RhdGVtZW50LFQsSykpO2Nhc2UgMjQ1OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVDb250aW51ZVN0YXRlbWVudChmLEooZi5sYWJlbCxULGUuaXNJZGVudGlmaWVyKSk7Y2FzZSAyNDY6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUJyZWFrU3RhdGVtZW50KGYsSihmLmxhYmVsLFQsZS5pc0lkZW50aWZpZXIpKTtjYXNlIDI0NzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlUmV0dXJuU3RhdGVtZW50KGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjQ4OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVXaXRoU3RhdGVtZW50KGYsSihmLmV4cHJlc3Npb24sVCxlLmlzRXhwcmVzc2lvbiksSihmLnN0YXRlbWVudCxULGUuaXNTdGF0ZW1lbnQsUi5saWZ0VG9CbG9jaykpO2Nhc2UgMjQ5OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVTd2l0Y2hTdGF0ZW1lbnQoZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxKKGYuY2FzZUJsb2NrLFQsZS5pc0Nhc2VCbG9jaykpO2Nhc2UgMjUwOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVMYWJlbGVkU3RhdGVtZW50KGYsSihmLmxhYmVsLFQsZS5pc0lkZW50aWZpZXIpLEooZi5zdGF0ZW1lbnQsVCxlLmlzU3RhdGVtZW50LFIubGlmdFRvQmxvY2spKTtjYXNlIDI1MTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlVGhyb3dTdGF0ZW1lbnQoZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyNTI6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVRyeVN0YXRlbWVudChmLEooZi50cnlCbG9jayxULGUuaXNCbG9jayksSihmLmNhdGNoQ2xhdXNlLFQsZS5pc0NhdGNoQ2xhdXNlKSxKKGYuZmluYWxseUJsb2NrLFQsZS5pc0Jsb2NrKSk7Y2FzZSAyNTQ6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZixKKGYubmFtZSxULGUuaXNCaW5kaW5nTmFtZSksSihmLmV4Y2xhbWF0aW9uVG9rZW4sc2UsZS5pc0V4Y2xhbWF0aW9uVG9rZW4pLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSxKKGYuaW5pdGlhbGl6ZXIsVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjU1OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChmLGIoZi5kZWNsYXJhdGlvbnMsVCxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbikpO2Nhc2UgMjU2OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGYsYihmLmRlY29yYXRvcnMsVCxlLmlzRGVjb3JhdG9yKSxiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxKKGYuYXN0ZXJpc2tUb2tlbixzZSxlLmlzQXN0ZXJpc2tUb2tlbiksSihmLm5hbWUsVCxlLmlzSWRlbnRpZmllciksYihmLnR5cGVQYXJhbWV0ZXJzLFQsZS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbiksQihmLnBhcmFtZXRlcnMsVCxLLGIpLEooZi50eXBlLFQsZS5pc1R5cGVOb2RlKSxwKGYuYm9keSxULEssSikpO2Nhc2UgMjU3OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVDbGFzc0RlY2xhcmF0aW9uKGYsYihmLmRlY29yYXRvcnMsVCxlLmlzRGVjb3JhdG9yKSxiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxKKGYubmFtZSxULGUuaXNJZGVudGlmaWVyKSxiKGYudHlwZVBhcmFtZXRlcnMsVCxlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKSxiKGYuaGVyaXRhZ2VDbGF1c2VzLFQsZS5pc0hlcml0YWdlQ2xhdXNlKSxiKGYubWVtYmVycyxULGUuaXNDbGFzc0VsZW1lbnQpKTtjYXNlIDI1ODpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSW50ZXJmYWNlRGVjbGFyYXRpb24oZixiKGYuZGVjb3JhdG9ycyxULGUuaXNEZWNvcmF0b3IpLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpLGIoZi50eXBlUGFyYW1ldGVycyxULGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pLGIoZi5oZXJpdGFnZUNsYXVzZXMsVCxlLmlzSGVyaXRhZ2VDbGF1c2UpLGIoZi5tZW1iZXJzLFQsZS5pc1R5cGVFbGVtZW50KSk7Y2FzZSAyNTk6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZVR5cGVBbGlhc0RlY2xhcmF0aW9uKGYsYihmLmRlY29yYXRvcnMsVCxlLmlzRGVjb3JhdG9yKSxiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxKKGYubmFtZSxULGUuaXNJZGVudGlmaWVyKSxiKGYudHlwZVBhcmFtZXRlcnMsVCxlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKSxKKGYudHlwZSxULGUuaXNUeXBlTm9kZSkpO2Nhc2UgMjYwOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVFbnVtRGVjbGFyYXRpb24oZixiKGYuZGVjb3JhdG9ycyxULGUuaXNEZWNvcmF0b3IpLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpLGIoZi5tZW1iZXJzLFQsZS5pc0VudW1NZW1iZXIpKTtjYXNlIDI2MTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlTW9kdWxlRGVjbGFyYXRpb24oZixiKGYuZGVjb3JhdG9ycyxULGUuaXNEZWNvcmF0b3IpLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLEooZi5uYW1lLFQsZS5pc01vZHVsZU5hbWUpLEooZi5ib2R5LFQsZS5pc01vZHVsZUJvZHkpKTtjYXNlIDI2MjpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlTW9kdWxlQmxvY2soZixiKGYuc3RhdGVtZW50cyxULGUuaXNTdGF0ZW1lbnQpKTtjYXNlIDI2MzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQ2FzZUJsb2NrKGYsYihmLmNsYXVzZXMsVCxlLmlzQ2FzZU9yRGVmYXVsdENsYXVzZSkpO2Nhc2UgMjY0OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbihmLEooZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpKTtjYXNlIDI2NTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oZixiKGYuZGVjb3JhdG9ycyxULGUuaXNEZWNvcmF0b3IpLGIoZi5tb2RpZmllcnMsVCxlLmlzTW9kaWZpZXIpLGYuaXNUeXBlT25seSxKKGYubmFtZSxULGUuaXNJZGVudGlmaWVyKSxKKGYubW9kdWxlUmVmZXJlbmNlLFQsZS5pc01vZHVsZVJlZmVyZW5jZSkpO2Nhc2UgMjY2OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVJbXBvcnREZWNsYXJhdGlvbihmLGIoZi5kZWNvcmF0b3JzLFQsZS5pc0RlY29yYXRvciksYihmLm1vZGlmaWVycyxULGUuaXNNb2RpZmllciksSihmLmltcG9ydENsYXVzZSxULGUuaXNJbXBvcnRDbGF1c2UpLEooZi5tb2R1bGVTcGVjaWZpZXIsVCxlLmlzRXhwcmVzc2lvbiksSihmLmFzc2VydENsYXVzZSxULGUuaXNBc3NlcnRDbGF1c2UpKTtjYXNlIDI5MzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQXNzZXJ0Q2xhdXNlKGYsYihmLmVsZW1lbnRzLFQsZS5pc0Fzc2VydEVudHJ5KSxmLm11bHRpTGluZSk7Y2FzZSAyOTQ6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUFzc2VydEVudHJ5KGYsSihmLm5hbWUsVCxlLmlzQXNzZXJ0aW9uS2V5KSxKKGYudmFsdWUsVCxlLmlzRXhwcmVzc2lvbk5vZGUpKTtjYXNlIDI2NzpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSW1wb3J0Q2xhdXNlKGYsZi5pc1R5cGVPbmx5LEooZi5uYW1lLFQsZS5pc0lkZW50aWZpZXIpLEooZi5uYW1lZEJpbmRpbmdzLFQsZS5pc05hbWVkSW1wb3J0QmluZGluZ3MpKTtjYXNlIDI2ODpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlTmFtZXNwYWNlSW1wb3J0KGYsSihmLm5hbWUsVCxlLmlzSWRlbnRpZmllcikpO2Nhc2UgMjc0OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVOYW1lc3BhY2VFeHBvcnQoZixKKGYubmFtZSxULGUuaXNJZGVudGlmaWVyKSk7Y2FzZSAyNjk6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZU5hbWVkSW1wb3J0cyhmLGIoZi5lbGVtZW50cyxULGUuaXNJbXBvcnRTcGVjaWZpZXIpKTtjYXNlIDI3MDpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSW1wb3J0U3BlY2lmaWVyKGYsZi5pc1R5cGVPbmx5LEooZi5wcm9wZXJ0eU5hbWUsVCxlLmlzSWRlbnRpZmllciksSihmLm5hbWUsVCxlLmlzSWRlbnRpZmllcikpO2Nhc2UgMjcxOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVFeHBvcnRBc3NpZ25tZW50KGYsYihmLmRlY29yYXRvcnMsVCxlLmlzRGVjb3JhdG9yKSxiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyNzI6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUV4cG9ydERlY2xhcmF0aW9uKGYsYihmLmRlY29yYXRvcnMsVCxlLmlzRGVjb3JhdG9yKSxiKGYubW9kaWZpZXJzLFQsZS5pc01vZGlmaWVyKSxmLmlzVHlwZU9ubHksSihmLmV4cG9ydENsYXVzZSxULGUuaXNOYW1lZEV4cG9ydEJpbmRpbmdzKSxKKGYubW9kdWxlU3BlY2lmaWVyLFQsZS5pc0V4cHJlc3Npb24pLEooZi5hc3NlcnRDbGF1c2UsVCxlLmlzQXNzZXJ0Q2xhdXNlKSk7Y2FzZSAyNzM6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZU5hbWVkRXhwb3J0cyhmLGIoZi5lbGVtZW50cyxULGUuaXNFeHBvcnRTcGVjaWZpZXIpKTtjYXNlIDI3NTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlRXhwb3J0U3BlY2lmaWVyKGYsZi5pc1R5cGVPbmx5LEooZi5wcm9wZXJ0eU5hbWUsVCxlLmlzSWRlbnRpZmllciksSihmLm5hbWUsVCxlLmlzSWRlbnRpZmllcikpO2Nhc2UgMjc3OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZShmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDI3ODpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSnN4RWxlbWVudChmLEooZi5vcGVuaW5nRWxlbWVudCxULGUuaXNKc3hPcGVuaW5nRWxlbWVudCksYihmLmNoaWxkcmVuLFQsZS5pc0pzeENoaWxkKSxKKGYuY2xvc2luZ0VsZW1lbnQsVCxlLmlzSnN4Q2xvc2luZ0VsZW1lbnQpKTtjYXNlIDI3OTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSnN4U2VsZkNsb3NpbmdFbGVtZW50KGYsSihmLnRhZ05hbWUsVCxlLmlzSnN4VGFnTmFtZUV4cHJlc3Npb24pLGIoZi50eXBlQXJndW1lbnRzLFQsZS5pc1R5cGVOb2RlKSxKKGYuYXR0cmlidXRlcyxULGUuaXNKc3hBdHRyaWJ1dGVzKSk7Y2FzZSAyODA6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUpzeE9wZW5pbmdFbGVtZW50KGYsSihmLnRhZ05hbWUsVCxlLmlzSnN4VGFnTmFtZUV4cHJlc3Npb24pLGIoZi50eXBlQXJndW1lbnRzLFQsZS5pc1R5cGVOb2RlKSxKKGYuYXR0cmlidXRlcyxULGUuaXNKc3hBdHRyaWJ1dGVzKSk7Y2FzZSAyODE6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUpzeENsb3NpbmdFbGVtZW50KGYsSihmLnRhZ05hbWUsVCxlLmlzSnN4VGFnTmFtZUV4cHJlc3Npb24pKTtjYXNlIDI4MjpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlSnN4RnJhZ21lbnQoZixKKGYub3BlbmluZ0ZyYWdtZW50LFQsZS5pc0pzeE9wZW5pbmdGcmFnbWVudCksYihmLmNoaWxkcmVuLFQsZS5pc0pzeENoaWxkKSxKKGYuY2xvc2luZ0ZyYWdtZW50LFQsZS5pc0pzeENsb3NpbmdGcmFnbWVudCkpO2Nhc2UgMjg1OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVKc3hBdHRyaWJ1dGUoZixKKGYubmFtZSxULGUuaXNJZGVudGlmaWVyKSxKKGYuaW5pdGlhbGl6ZXIsVCxlLmlzU3RyaW5nTGl0ZXJhbE9ySnN4RXhwcmVzc2lvbikpO2Nhc2UgMjg2OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVKc3hBdHRyaWJ1dGVzKGYsYihmLnByb3BlcnRpZXMsVCxlLmlzSnN4QXR0cmlidXRlTGlrZSkpO2Nhc2UgMjg3OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVKc3hTcHJlYWRBdHRyaWJ1dGUoZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyODg6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUpzeEV4cHJlc3Npb24oZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSk7Y2FzZSAyODk6cmV0dXJuIGUuRGVidWcudHlwZShmKSxSLnVwZGF0ZUNhc2VDbGF1c2UoZixKKGYuZXhwcmVzc2lvbixULGUuaXNFeHByZXNzaW9uKSxiKGYuc3RhdGVtZW50cyxULGUuaXNTdGF0ZW1lbnQpKTtjYXNlIDI5MDpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlRGVmYXVsdENsYXVzZShmLGIoZi5zdGF0ZW1lbnRzLFQsZS5pc1N0YXRlbWVudCkpO2Nhc2UgMjkxOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVIZXJpdGFnZUNsYXVzZShmLGIoZi50eXBlcyxULGUuaXNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMpKTtjYXNlIDI5MjpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQ2F0Y2hDbGF1c2UoZixKKGYudmFyaWFibGVEZWNsYXJhdGlvbixULGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKSxKKGYuYmxvY2ssVCxlLmlzQmxvY2spKTtjYXNlIDI5NjpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlUHJvcGVydHlBc3NpZ25tZW50KGYsSihmLm5hbWUsVCxlLmlzUHJvcGVydHlOYW1lKSxKKGYuaW5pdGlhbGl6ZXIsVCxlLmlzRXhwcmVzc2lvbikpO2Nhc2UgMjk3OnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoZixKKGYubmFtZSxULGUuaXNJZGVudGlmaWVyKSxKKGYub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDI5ODpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlU3ByZWFkQXNzaWdubWVudChmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDI5OTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlRW51bU1lbWJlcihmLEooZi5uYW1lLFQsZS5pc1Byb3BlcnR5TmFtZSksSihmLmluaXRpYWxpemVyLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDMwNTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlU291cmNlRmlsZShmLHcoZi5zdGF0ZW1lbnRzLFQsSykpO2Nhc2UgMzUwOnJldHVybiBlLkRlYnVnLnR5cGUoZiksUi51cGRhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbihmLEooZi5leHByZXNzaW9uLFQsZS5pc0V4cHJlc3Npb24pKTtjYXNlIDM1MTpyZXR1cm4gZS5EZWJ1Zy50eXBlKGYpLFIudXBkYXRlQ29tbWFMaXN0RXhwcmVzc2lvbihmLGIoZi5lbGVtZW50cyxULGUuaXNFeHByZXNzaW9uKSk7ZGVmYXVsdDpyZXR1cm4gZn19fWUudmlzaXRFYWNoQ2hpbGQ9RztmdW5jdGlvbiBvZShmKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoZi5sZW5ndGg8PTEsXCJUb28gbWFueSBub2RlcyB3cml0dGVuIHRvIG91dHB1dC5cIiksZS5zaW5nbGVPclVuZGVmaW5lZChmKX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKHEsTyx2ZSxlZSxoZSl7dmFyIEY9aGUuZXh0ZW5kZWREaWFnbm9zdGljcz9lLnBlcmZvcm1hbmNlLmNyZWF0ZVRpbWVyKFwiU291cmNlIE1hcFwiLFwiYmVmb3JlU291cmNlbWFwXCIsXCJhZnRlclNvdXJjZW1hcFwiKTplLnBlcmZvcm1hbmNlLm51bGxUaW1lcix4PUYuZW50ZXIsWD1GLmV4aXQsJD1bXSxBPVtdLHk9bmV3IGUuTWFwLFYsTD1bXSxQLGs9W10sWT1cIlwiLFU9MCxqPTAsSD0wLEk9MCxsPTAsZD0wLEQ9ITEsZmU9MCxnPTAsbmU9MCx1ZT0wLFdlPTAsRmU9MCxaPSExLEJlPSExLGdlPSExO3JldHVybntnZXRTb3VyY2VzOmZ1bmN0aW9uKCl7cmV0dXJuICR9LGFkZFNvdXJjZTpSZSxzZXRTb3VyY2VDb250ZW50OnplLGFkZE5hbWU6RWUsYWRkTWFwcGluZzpJZSxhcHBlbmRTb3VyY2VNYXA6X2UsdG9KU09OOmVyLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGVyKCkpfX07ZnVuY3Rpb24gUmUoQ3Ipe3goKTt2YXIgWWU9ZS5nZXRSZWxhdGl2ZVBhdGhUb0RpcmVjdG9yeU9yVXJsKGVlLENyLHEuZ2V0Q3VycmVudERpcmVjdG9yeSgpLHEuZ2V0Q2Fub25pY2FsRmlsZU5hbWUsITApLEJyPXkuZ2V0KFllKTtyZXR1cm4gQnI9PT12b2lkIDAmJihCcj1BLmxlbmd0aCxBLnB1c2goWWUpLCQucHVzaChDcikseS5zZXQoWWUsQnIpKSxYKCksQnJ9ZnVuY3Rpb24gemUoQ3IsWWUpe2lmKHgoKSxZZSE9PW51bGwpe2ZvcihWfHwoVj1bXSk7Vi5sZW5ndGg8Q3I7KVYucHVzaChudWxsKTtWW0NyXT1ZZX1YKCl9ZnVuY3Rpb24gRWUoQ3Ipe3goKSxQfHwoUD1uZXcgZS5NYXApO3ZhciBZZT1QLmdldChDcik7cmV0dXJuIFllPT09dm9pZCAwJiYoWWU9TC5sZW5ndGgsTC5wdXNoKENyKSxQLnNldChDcixZZSkpLFgoKSxZZX1mdW5jdGlvbiBIZShDcixZZSl7cmV0dXJuIVp8fGZlIT09Q3J8fGchPT1ZZX1mdW5jdGlvbiBycihDcixZZSxCcil7cmV0dXJuIENyIT09dm9pZCAwJiZZZSE9PXZvaWQgMCYmQnIhPT12b2lkIDAmJm5lPT09Q3ImJih1ZT5ZZXx8dWU9PT1ZZSYmV2U+QnIpfWZ1bmN0aW9uIEllKENyLFllLEJyLEVyLE5lLG4pe2UuRGVidWcuYXNzZXJ0KENyPj1mZSxcImdlbmVyYXRlZExpbmUgY2Fubm90IGJhY2t0cmFja1wiKSxlLkRlYnVnLmFzc2VydChZZT49MCxcImdlbmVyYXRlZENoYXJhY3RlciBjYW5ub3QgYmUgbmVnYXRpdmVcIiksZS5EZWJ1Zy5hc3NlcnQoQnI9PT12b2lkIDB8fEJyPj0wLFwic291cmNlSW5kZXggY2Fubm90IGJlIG5lZ2F0aXZlXCIpLGUuRGVidWcuYXNzZXJ0KEVyPT09dm9pZCAwfHxFcj49MCxcInNvdXJjZUxpbmUgY2Fubm90IGJlIG5lZ2F0aXZlXCIpLGUuRGVidWcuYXNzZXJ0KE5lPT09dm9pZCAwfHxOZT49MCxcInNvdXJjZUNoYXJhY3RlciBjYW5ub3QgYmUgbmVnYXRpdmVcIikseCgpLChIZShDcixZZSl8fHJyKEJyLEVyLE5lKSkmJih5ZSgpLGZlPUNyLGc9WWUsQmU9ITEsZ2U9ITEsWj0hMCksQnIhPT12b2lkIDAmJkVyIT09dm9pZCAwJiZOZSE9PXZvaWQgMCYmKG5lPUJyLHVlPUVyLFdlPU5lLEJlPSEwLG4hPT12b2lkIDAmJihGZT1uLGdlPSEwKSksWCgpfWZ1bmN0aW9uIF9lKENyLFllLEJyLEVyLE5lLG4pe2UuRGVidWcuYXNzZXJ0KENyPj1mZSxcImdlbmVyYXRlZExpbmUgY2Fubm90IGJhY2t0cmFja1wiKSxlLkRlYnVnLmFzc2VydChZZT49MCxcImdlbmVyYXRlZENoYXJhY3RlciBjYW5ub3QgYmUgbmVnYXRpdmVcIikseCgpO2Zvcih2YXIgbHI9W10sYmUsR2U9cChCci5tYXBwaW5ncyksdXI9R2UubmV4dCgpOyF1ci5kb25lO3VyPUdlLm5leHQoKSl7dmFyIHlyPXVyLnZhbHVlO2lmKG4mJih5ci5nZW5lcmF0ZWRMaW5lPm4ubGluZXx8eXIuZ2VuZXJhdGVkTGluZT09PW4ubGluZSYmeXIuZ2VuZXJhdGVkQ2hhcmFjdGVyPm4uY2hhcmFjdGVyKSlicmVhaztpZighKE5lJiYoeXIuZ2VuZXJhdGVkTGluZTxOZS5saW5lfHxOZS5saW5lPT09eXIuZ2VuZXJhdGVkTGluZSYmeXIuZ2VuZXJhdGVkQ2hhcmFjdGVyPE5lLmNoYXJhY3RlcikpKXt2YXIgSXI9dm9pZCAwLHdyPXZvaWQgMCxVcj12b2lkIDAsaWk9dm9pZCAwO2lmKHlyLnNvdXJjZUluZGV4IT09dm9pZCAwKXtpZihJcj1sclt5ci5zb3VyY2VJbmRleF0sSXI9PT12b2lkIDApe3ZhciBtaT1Cci5zb3VyY2VzW3lyLnNvdXJjZUluZGV4XSxwZT1Cci5zb3VyY2VSb290P2UuY29tYmluZVBhdGhzKEJyLnNvdXJjZVJvb3QsbWkpOm1pLG9yPWUuY29tYmluZVBhdGhzKGUuZ2V0RGlyZWN0b3J5UGF0aChFcikscGUpO2xyW3lyLnNvdXJjZUluZGV4XT1Jcj1SZShvciksQnIuc291cmNlc0NvbnRlbnQmJnR5cGVvZiBCci5zb3VyY2VzQ29udGVudFt5ci5zb3VyY2VJbmRleF09PVwic3RyaW5nXCImJnplKElyLEJyLnNvdXJjZXNDb250ZW50W3lyLnNvdXJjZUluZGV4XSl9d3I9eXIuc291cmNlTGluZSxVcj15ci5zb3VyY2VDaGFyYWN0ZXIsQnIubmFtZXMmJnlyLm5hbWVJbmRleCE9PXZvaWQgMCYmKGJlfHwoYmU9W10pLGlpPWJlW3lyLm5hbWVJbmRleF0saWk9PT12b2lkIDAmJihiZVt5ci5uYW1lSW5kZXhdPWlpPUVlKEJyLm5hbWVzW3lyLm5hbWVJbmRleF0pKSl9dmFyIHFyPXlyLmdlbmVyYXRlZExpbmUtKE5lP05lLmxpbmU6MCksc2k9cXIrQ3IsRGk9TmUmJk5lLmxpbmU9PT15ci5nZW5lcmF0ZWRMaW5lP3lyLmdlbmVyYXRlZENoYXJhY3Rlci1OZS5jaGFyYWN0ZXI6eXIuZ2VuZXJhdGVkQ2hhcmFjdGVyLHdpPXFyPT09MD9EaStZZTpEaTtJZShzaSx3aSxJcix3cixVcixpaSl9fVgoKX1mdW5jdGlvbiB3ZSgpe3JldHVybiFEfHxVIT09ZmV8fGohPT1nfHxIIT09bmV8fEkhPT11ZXx8bCE9PVdlfHxkIT09RmV9ZnVuY3Rpb24gZGUoQ3Ipe2sucHVzaChDciksay5sZW5ndGg+PTEwMjQmJkFlKCl9ZnVuY3Rpb24geWUoKXtpZighKCFafHwhd2UoKSkpe2lmKHgoKSxVPGZlKXtkbyBkZSg1OSksVSsrO3doaWxlKFU8ZmUpO2o9MH1lbHNlIGUuRGVidWcuYXNzZXJ0RXF1YWwoVSxmZSxcImdlbmVyYXRlZExpbmUgY2Fubm90IGJhY2t0cmFja1wiKSxEJiZkZSg0NCk7aXIoZy1qKSxqPWcsQmUmJihpcihuZS1IKSxIPW5lLGlyKHVlLUkpLEk9dWUsaXIoV2UtbCksbD1XZSxnZSYmKGlyKEZlLWQpLGQ9RmUpKSxEPSEwLFgoKX19ZnVuY3Rpb24gQWUoKXtrLmxlbmd0aD4wJiYoWSs9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSh2b2lkIDAsayksay5sZW5ndGg9MCl9ZnVuY3Rpb24gZXIoKXtyZXR1cm4geWUoKSxBZSgpLHt2ZXJzaW9uOjMsZmlsZTpPLHNvdXJjZVJvb3Q6dmUsc291cmNlczpBLG5hbWVzOkwsbWFwcGluZ3M6WSxzb3VyY2VzQ29udGVudDpWfX1mdW5jdGlvbiBpcihDcil7Q3I8MD9Dcj0oLUNyPDwxKSsxOkNyPUNyPDwxO2Rve3ZhciBZZT1DciYzMTtDcj1Dcj4+NSxDcj4wJiYoWWU9WWV8MzIpLGRlKG9lKFllKSl9d2hpbGUoQ3I+MCl9fWUuY3JlYXRlU291cmNlTWFwR2VuZXJhdG9yPWE7dmFyIEM9L15cXC9cXC9bQCNdIHNvdXJjZVtNXWFwcGluZ1VSTD0oLispXFxyP1xcbj8kLyx3PS9eXFxzKihcXC9cXC9bQCNdIC4qKT8kLztmdW5jdGlvbiBCKHEsTyl7cmV0dXJue2dldExpbmVDb3VudDpmdW5jdGlvbigpe3JldHVybiBPLmxlbmd0aH0sZ2V0TGluZVRleHQ6ZnVuY3Rpb24odmUpe3JldHVybiBxLnN1YnN0cmluZyhPW3ZlXSxPW3ZlKzFdKX19fWUuZ2V0TGluZUluZm89QjtmdW5jdGlvbiBFKHEpe2Zvcih2YXIgTz1xLmdldExpbmVDb3VudCgpLTE7Tz49MDtPLS0pe3ZhciB2ZT1xLmdldExpbmVUZXh0KE8pLGVlPUMuZXhlYyh2ZSk7aWYoZWUpcmV0dXJuIGUudHJpbVN0cmluZ0VuZChlZVsxXSk7aWYoIXZlLm1hdGNoKHcpKWJyZWFrfX1lLnRyeUdldFNvdXJjZU1hcHBpbmdVUkw9RTtmdW5jdGlvbiBRKHEpe3JldHVybiB0eXBlb2YgcT09XCJzdHJpbmdcInx8cT09PW51bGx9ZnVuY3Rpb24gbGUocSl7cmV0dXJuIHEhPT1udWxsJiZ0eXBlb2YgcT09XCJvYmplY3RcIiYmcS52ZXJzaW9uPT09MyYmdHlwZW9mIHEuZmlsZT09XCJzdHJpbmdcIiYmdHlwZW9mIHEubWFwcGluZ3M9PVwic3RyaW5nXCImJmUuaXNBcnJheShxLnNvdXJjZXMpJiZlLmV2ZXJ5KHEuc291cmNlcyxlLmlzU3RyaW5nKSYmKHEuc291cmNlUm9vdD09PXZvaWQgMHx8cS5zb3VyY2VSb290PT09bnVsbHx8dHlwZW9mIHEuc291cmNlUm9vdD09XCJzdHJpbmdcIikmJihxLnNvdXJjZXNDb250ZW50PT09dm9pZCAwfHxxLnNvdXJjZXNDb250ZW50PT09bnVsbHx8ZS5pc0FycmF5KHEuc291cmNlc0NvbnRlbnQpJiZlLmV2ZXJ5KHEuc291cmNlc0NvbnRlbnQsUSkpJiYocS5uYW1lcz09PXZvaWQgMHx8cS5uYW1lcz09PW51bGx8fGUuaXNBcnJheShxLm5hbWVzKSYmZS5ldmVyeShxLm5hbWVzLGUuaXNTdHJpbmcpKX1lLmlzUmF3U291cmNlTWFwPWxlO2Z1bmN0aW9uIE4ocSl7dHJ5e3ZhciBPPUpTT04ucGFyc2UocSk7aWYobGUoTykpcmV0dXJuIE99Y2F0Y2h7fX1lLnRyeVBhcnNlUmF3U291cmNlTWFwPU47ZnVuY3Rpb24gcChxKXt2YXIgTz0hMSx2ZT0wLGVlPTAsaGU9MCxGPTAseD0wLFg9MCwkPTAsQTtyZXR1cm57Z2V0IHBvcygpe3JldHVybiB2ZX0sZ2V0IGVycm9yKCl7cmV0dXJuIEF9LGdldCBzdGF0ZSgpe3JldHVybiB5KCEwLCEwKX0sbmV4dDpmdW5jdGlvbigpe2Zvcig7IU8mJnZlPHEubGVuZ3RoOyl7dmFyIGo9cS5jaGFyQ29kZUF0KHZlKTtpZihqPT09NTkpe2VlKyssaGU9MCx2ZSsrO2NvbnRpbnVlfWlmKGo9PT00NCl7dmUrKztjb250aW51ZX12YXIgSD0hMSxJPSExO2lmKGhlKz1VKCksaygpKXJldHVybiBWKCk7aWYoaGU8MClyZXR1cm4gUChcIkludmFsaWQgZ2VuZXJhdGVkQ2hhcmFjdGVyIGZvdW5kXCIpO2lmKCFZKCkpe2lmKEg9ITAsRis9VSgpLGsoKSlyZXR1cm4gVigpO2lmKEY8MClyZXR1cm4gUChcIkludmFsaWQgc291cmNlSW5kZXggZm91bmRcIik7aWYoWSgpKXJldHVybiBQKFwiVW5zdXBwb3J0ZWQgRm9ybWF0OiBObyBlbnRyaWVzIGFmdGVyIHNvdXJjZUluZGV4XCIpO2lmKHgrPVUoKSxrKCkpcmV0dXJuIFYoKTtpZih4PDApcmV0dXJuIFAoXCJJbnZhbGlkIHNvdXJjZUxpbmUgZm91bmRcIik7aWYoWSgpKXJldHVybiBQKFwiVW5zdXBwb3J0ZWQgRm9ybWF0OiBObyBlbnRyaWVzIGFmdGVyIHNvdXJjZUxpbmVcIik7aWYoWCs9VSgpLGsoKSlyZXR1cm4gVigpO2lmKFg8MClyZXR1cm4gUChcIkludmFsaWQgc291cmNlQ2hhcmFjdGVyIGZvdW5kXCIpO2lmKCFZKCkpe2lmKEk9ITAsJCs9VSgpLGsoKSlyZXR1cm4gVigpO2lmKCQ8MClyZXR1cm4gUChcIkludmFsaWQgbmFtZUluZGV4IGZvdW5kXCIpO2lmKCFZKCkpcmV0dXJuIFAoXCJVbnN1cHBvcnRlZCBFcnJvciBGb3JtYXQ6IEVudHJpZXMgYWZ0ZXIgbmFtZUluZGV4XCIpfX1yZXR1cm57dmFsdWU6eShILEkpLGRvbmU6T319cmV0dXJuIFYoKX19O2Z1bmN0aW9uIHkoaixIKXtyZXR1cm57Z2VuZXJhdGVkTGluZTplZSxnZW5lcmF0ZWRDaGFyYWN0ZXI6aGUsc291cmNlSW5kZXg6aj9GOnZvaWQgMCxzb3VyY2VMaW5lOmo/eDp2b2lkIDAsc291cmNlQ2hhcmFjdGVyOmo/WDp2b2lkIDAsbmFtZUluZGV4Okg/JDp2b2lkIDB9fWZ1bmN0aW9uIFYoKXtyZXR1cm4gTz0hMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZ1bmN0aW9uIEwoail7QT09PXZvaWQgMCYmKEE9ail9ZnVuY3Rpb24gUChqKXtyZXR1cm4gTChqKSxWKCl9ZnVuY3Rpb24gaygpe3JldHVybiBBIT09dm9pZCAwfWZ1bmN0aW9uIFkoKXtyZXR1cm4gdmU9PT1xLmxlbmd0aHx8cS5jaGFyQ29kZUF0KHZlKT09PTQ0fHxxLmNoYXJDb2RlQXQodmUpPT09NTl9ZnVuY3Rpb24gVSgpe2Zvcih2YXIgaj0hMCxIPTAsST0wO2o7dmUrKyl7aWYodmU+PXEubGVuZ3RoKXJldHVybiBMKFwiRXJyb3IgaW4gZGVjb2RpbmcgYmFzZTY0VkxRRm9ybWF0RGVjb2RlLCBwYXN0IHRoZSBtYXBwaW5nIHN0cmluZ1wiKSwtMTt2YXIgbD1mKHEuY2hhckNvZGVBdCh2ZSkpO2lmKGw9PT0tMSlyZXR1cm4gTChcIkludmFsaWQgY2hhcmFjdGVyIGluIFZMUVwiKSwtMTtqPShsJjMyKSE9PTAsST1JfChsJjMxKTw8SCxIKz01fXJldHVybihJJjEpPT09MD9JPUk+PjE6KEk9ST4+MSxJPS1JKSxJfX1lLmRlY29kZU1hcHBpbmdzPXA7ZnVuY3Rpb24gbShxLE8pe3JldHVybiBxPT09T3x8cS5nZW5lcmF0ZWRMaW5lPT09Ty5nZW5lcmF0ZWRMaW5lJiZxLmdlbmVyYXRlZENoYXJhY3Rlcj09PU8uZ2VuZXJhdGVkQ2hhcmFjdGVyJiZxLnNvdXJjZUluZGV4PT09Ty5zb3VyY2VJbmRleCYmcS5zb3VyY2VMaW5lPT09Ty5zb3VyY2VMaW5lJiZxLnNvdXJjZUNoYXJhY3Rlcj09PU8uc291cmNlQ2hhcmFjdGVyJiZxLm5hbWVJbmRleD09PU8ubmFtZUluZGV4fWUuc2FtZU1hcHBpbmc9bTtmdW5jdGlvbiBHKHEpe3JldHVybiBxLnNvdXJjZUluZGV4IT09dm9pZCAwJiZxLnNvdXJjZUxpbmUhPT12b2lkIDAmJnEuc291cmNlQ2hhcmFjdGVyIT09dm9pZCAwfWUuaXNTb3VyY2VNYXBwaW5nPUc7ZnVuY3Rpb24gb2UocSl7cmV0dXJuIHE+PTAmJnE8MjY/NjUrcTpxPj0yNiYmcTw1Mj85NytxLTI2OnE+PTUyJiZxPDYyPzQ4K3EtNTI6cT09PTYyPzQzOnE9PT02Mz80NzplLkRlYnVnLmZhaWwoXCJcIi5jb25jYXQocSxcIjogbm90IGEgYmFzZTY0IHZhbHVlXCIpKX1mdW5jdGlvbiBmKHEpe3JldHVybiBxPj02NSYmcTw9OTA/cS02NTpxPj05NyYmcTw9MTIyP3EtOTcrMjY6cT49NDgmJnE8PTU3P3EtNDgrNTI6cT09PTQzPzYyOnE9PT00Nz82MzotMX1mdW5jdGlvbiBUKHEpe3JldHVybiBxLnNvdXJjZUluZGV4IT09dm9pZCAwJiZxLnNvdXJjZVBvc2l0aW9uIT09dm9pZCAwfWZ1bmN0aW9uIEsocSxPKXtyZXR1cm4gcS5nZW5lcmF0ZWRQb3NpdGlvbj09PU8uZ2VuZXJhdGVkUG9zaXRpb24mJnEuc291cmNlSW5kZXg9PT1PLnNvdXJjZUluZGV4JiZxLnNvdXJjZVBvc2l0aW9uPT09Ty5zb3VyY2VQb3NpdGlvbn1mdW5jdGlvbiBiKHEsTyl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KHEuc291cmNlSW5kZXg9PT1PLnNvdXJjZUluZGV4KSxlLmNvbXBhcmVWYWx1ZXMocS5zb3VyY2VQb3NpdGlvbixPLnNvdXJjZVBvc2l0aW9uKX1mdW5jdGlvbiBzZShxLE8pe3JldHVybiBlLmNvbXBhcmVWYWx1ZXMocS5nZW5lcmF0ZWRQb3NpdGlvbixPLmdlbmVyYXRlZFBvc2l0aW9uKX1mdW5jdGlvbiBKKHEpe3JldHVybiBxLnNvdXJjZVBvc2l0aW9ufWZ1bmN0aW9uIGllKHEpe3JldHVybiBxLmdlbmVyYXRlZFBvc2l0aW9ufWZ1bmN0aW9uIFIocSxPLHZlKXt2YXIgZWU9ZS5nZXREaXJlY3RvcnlQYXRoKHZlKSxoZT1PLnNvdXJjZVJvb3Q/ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKE8uc291cmNlUm9vdCxlZSk6ZWUsRj1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoTy5maWxlLGVlKSx4PXEuZ2V0U291cmNlRmlsZUxpa2UoRiksWD1PLnNvdXJjZXMubWFwKGZ1bmN0aW9uKEgpe3JldHVybiBlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoSCxoZSl9KSwkPW5ldyBlLk1hcChYLm1hcChmdW5jdGlvbihILEkpe3JldHVybltxLmdldENhbm9uaWNhbEZpbGVOYW1lKEgpLEldfSkpLEEseSxWO3JldHVybntnZXRTb3VyY2VQb3NpdGlvbjpqLGdldEdlbmVyYXRlZFBvc2l0aW9uOlV9O2Z1bmN0aW9uIEwoSCl7dmFyIEk9eCE9PXZvaWQgMD9lLmdldFBvc2l0aW9uT2ZMaW5lQW5kQ2hhcmFjdGVyKHgsSC5nZW5lcmF0ZWRMaW5lLEguZ2VuZXJhdGVkQ2hhcmFjdGVyLCEwKTotMSxsLGQ7aWYoRyhIKSl7dmFyIEQ9cS5nZXRTb3VyY2VGaWxlTGlrZShYW0guc291cmNlSW5kZXhdKTtsPU8uc291cmNlc1tILnNvdXJjZUluZGV4XSxkPUQhPT12b2lkIDA/ZS5nZXRQb3NpdGlvbk9mTGluZUFuZENoYXJhY3RlcihELEguc291cmNlTGluZSxILnNvdXJjZUNoYXJhY3RlciwhMCk6LTF9cmV0dXJue2dlbmVyYXRlZFBvc2l0aW9uOkksc291cmNlOmwsc291cmNlSW5kZXg6SC5zb3VyY2VJbmRleCxzb3VyY2VQb3NpdGlvbjpkLG5hbWVJbmRleDpILm5hbWVJbmRleH19ZnVuY3Rpb24gUCgpe2lmKEE9PT12b2lkIDApe3ZhciBIPXAoTy5tYXBwaW5ncyksST1lLmFycmF5RnJvbShILEwpO0guZXJyb3IhPT12b2lkIDA/KHEubG9nJiZxLmxvZyhcIkVuY291bnRlcmVkIGVycm9yIHdoaWxlIGRlY29kaW5nIHNvdXJjZW1hcDogXCIuY29uY2F0KEguZXJyb3IpKSxBPWUuZW1wdHlBcnJheSk6QT1JfXJldHVybiBBfWZ1bmN0aW9uIGsoSCl7aWYoVj09PXZvaWQgMCl7Zm9yKHZhciBJPVtdLGw9MCxkPVAoKTtsPGQubGVuZ3RoO2wrKyl7dmFyIEQ9ZFtsXTtpZighIVQoRCkpe3ZhciBmZT1JW0Quc291cmNlSW5kZXhdO2ZlfHwoSVtELnNvdXJjZUluZGV4XT1mZT1bXSksZmUucHVzaChEKX19Vj1JLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gZS5zb3J0QW5kRGVkdXBsaWNhdGUoZyxiLEspfSl9cmV0dXJuIFZbSF19ZnVuY3Rpb24gWSgpe2lmKHk9PT12b2lkIDApe2Zvcih2YXIgSD1bXSxJPTAsbD1QKCk7STxsLmxlbmd0aDtJKyspe3ZhciBkPWxbSV07SC5wdXNoKGQpfXk9ZS5zb3J0QW5kRGVkdXBsaWNhdGUoSCxzZSxLKX1yZXR1cm4geX1mdW5jdGlvbiBVKEgpe3ZhciBJPSQuZ2V0KHEuZ2V0Q2Fub25pY2FsRmlsZU5hbWUoSC5maWxlTmFtZSkpO2lmKEk9PT12b2lkIDApcmV0dXJuIEg7dmFyIGw9ayhJKTtpZighZS5zb21lKGwpKXJldHVybiBIO3ZhciBkPWUuYmluYXJ5U2VhcmNoS2V5KGwsSC5wb3MsSixlLmNvbXBhcmVWYWx1ZXMpO2Q8MCYmKGQ9fmQpO3ZhciBEPWxbZF07cmV0dXJuIEQ9PT12b2lkIDB8fEQuc291cmNlSW5kZXghPT1JP0g6e2ZpbGVOYW1lOkYscG9zOkQuZ2VuZXJhdGVkUG9zaXRpb259fWZ1bmN0aW9uIGooSCl7dmFyIEk9WSgpO2lmKCFlLnNvbWUoSSkpcmV0dXJuIEg7dmFyIGw9ZS5iaW5hcnlTZWFyY2hLZXkoSSxILnBvcyxpZSxlLmNvbXBhcmVWYWx1ZXMpO2w8MCYmKGw9fmwpO3ZhciBkPUlbbF07cmV0dXJuIGQ9PT12b2lkIDB8fCFUKGQpP0g6e2ZpbGVOYW1lOlhbZC5zb3VyY2VJbmRleF0scG9zOmQuc291cmNlUG9zaXRpb259fX1lLmNyZWF0ZURvY3VtZW50UG9zaXRpb25NYXBwZXI9UixlLmlkZW50aXR5U291cmNlTWFwQ29uc3VtZXI9e2dldFNvdXJjZVBvc2l0aW9uOmUuaWRlbnRpdHksZ2V0R2VuZXJhdGVkUG9zaXRpb246ZS5pZGVudGl0eX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKGVlKXtyZXR1cm4gZWU9ZS5nZXRPcmlnaW5hbE5vZGUoZWUpLGVlP2UuZ2V0Tm9kZUlkKGVlKTowfWUuZ2V0T3JpZ2luYWxOb2RlSWQ9YTtmdW5jdGlvbiBDKGVlKXtyZXR1cm4hZWV8fCFlLmlzTmFtZWRJbXBvcnRzKGVlKT8hMTplLnNvbWUoZWUuZWxlbWVudHMsdyl9ZnVuY3Rpb24gdyhlZSl7cmV0dXJuIGVlLnByb3BlcnR5TmFtZSE9PXZvaWQgMCYmZWUucHJvcGVydHlOYW1lLmVzY2FwZWRUZXh0PT09XCJkZWZhdWx0XCJ9ZnVuY3Rpb24gQihlZSxoZSl7cmV0dXJuIEY7ZnVuY3Rpb24gRihYKXtyZXR1cm4gWC5raW5kPT09MzA1P2hlKFgpOngoWCl9ZnVuY3Rpb24geChYKXtyZXR1cm4gZWUuZmFjdG9yeS5jcmVhdGVCdW5kbGUoZS5tYXAoWC5zb3VyY2VGaWxlcyxoZSksWC5wcmVwZW5kcyl9fWUuY2hhaW5CdW5kbGU9QjtmdW5jdGlvbiBFKGVlKXtyZXR1cm4hIWUuZ2V0TmFtZXNwYWNlRGVjbGFyYXRpb25Ob2RlKGVlKX1lLmdldEV4cG9ydE5lZWRzSW1wb3J0U3RhckhlbHBlcj1FO2Z1bmN0aW9uIFEoZWUpe2lmKGUuZ2V0TmFtZXNwYWNlRGVjbGFyYXRpb25Ob2RlKGVlKSlyZXR1cm4hMDt2YXIgaGU9ZWUuaW1wb3J0Q2xhdXNlJiZlZS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncztpZighaGV8fCFlLmlzTmFtZWRJbXBvcnRzKGhlKSlyZXR1cm4hMTtmb3IodmFyIEY9MCx4PTAsWD1oZS5lbGVtZW50czt4PFgubGVuZ3RoO3grKyl7dmFyICQ9WFt4XTt3KCQpJiZGKyt9cmV0dXJuIEY+MCYmRiE9PWhlLmVsZW1lbnRzLmxlbmd0aHx8ISEoaGUuZWxlbWVudHMubGVuZ3RoLUYpJiZlLmlzRGVmYXVsdEltcG9ydChlZSl9ZS5nZXRJbXBvcnROZWVkc0ltcG9ydFN0YXJIZWxwZXI9UTtmdW5jdGlvbiBsZShlZSl7cmV0dXJuIVEoZWUpJiYoZS5pc0RlZmF1bHRJbXBvcnQoZWUpfHwhIWVlLmltcG9ydENsYXVzZSYmZS5pc05hbWVkSW1wb3J0cyhlZS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncykmJkMoZWUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpKX1lLmdldEltcG9ydE5lZWRzSW1wb3J0RGVmYXVsdEhlbHBlcj1sZTtmdW5jdGlvbiBOKGVlLGhlLEYseCl7Zm9yKHZhciBYPVtdLCQ9ZS5jcmVhdGVNdWx0aU1hcCgpLEE9W10seT1uZXcgZS5NYXAsVixMPSExLFAsaz0hMSxZPSExLFU9ITEsaj0wLEg9aGUuc3RhdGVtZW50cztqPEgubGVuZ3RoO2orKyl7dmFyIEk9SFtqXTtzd2l0Y2goSS5raW5kKXtjYXNlIDI2NjpYLnB1c2goSSksIVkmJlEoSSkmJihZPSEwKSwhVSYmbGUoSSkmJihVPSEwKTticmVhaztjYXNlIDI2NTpJLm1vZHVsZVJlZmVyZW5jZS5raW5kPT09Mjc3JiZYLnB1c2goSSk7YnJlYWs7Y2FzZSAyNzI6aWYoSS5tb2R1bGVTcGVjaWZpZXIpaWYoIUkuZXhwb3J0Q2xhdXNlKVgucHVzaChJKSxrPSEwO2Vsc2UgaWYoWC5wdXNoKEkpLGUuaXNOYW1lZEV4cG9ydHMoSS5leHBvcnRDbGF1c2UpKW5lKEkpO2Vsc2V7dmFyIGw9SS5leHBvcnRDbGF1c2UubmFtZTt5LmdldChlLmlkVGV4dChsKSl8fChtKEEsYShJKSxsKSx5LnNldChlLmlkVGV4dChsKSwhMCksVj1lLmFwcGVuZChWLGwpKSxZPSEwfWVsc2UgbmUoSSk7YnJlYWs7Y2FzZSAyNzE6SS5pc0V4cG9ydEVxdWFscyYmIVAmJihQPUkpO2JyZWFrO2Nhc2UgMjM3OmlmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIoSSwxKSlmb3IodmFyIGQ9MCxEPUkuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucztkPEQubGVuZ3RoO2QrKyl7dmFyIGZlPURbZF07Vj1wKGZlLHksVil9YnJlYWs7Y2FzZSAyNTY6aWYoZS5oYXNTeW50YWN0aWNNb2RpZmllcihJLDEpKWlmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIoSSw1MTIpKUx8fChtKEEsYShJKSxlZS5mYWN0b3J5LmdldERlY2xhcmF0aW9uTmFtZShJKSksTD0hMCk7ZWxzZXt2YXIgbD1JLm5hbWU7eS5nZXQoZS5pZFRleHQobCkpfHwobShBLGEoSSksbCkseS5zZXQoZS5pZFRleHQobCksITApLFY9ZS5hcHBlbmQoVixsKSl9YnJlYWs7Y2FzZSAyNTc6aWYoZS5oYXNTeW50YWN0aWNNb2RpZmllcihJLDEpKWlmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIoSSw1MTIpKUx8fChtKEEsYShJKSxlZS5mYWN0b3J5LmdldERlY2xhcmF0aW9uTmFtZShJKSksTD0hMCk7ZWxzZXt2YXIgbD1JLm5hbWU7bCYmIXkuZ2V0KGUuaWRUZXh0KGwpKSYmKG0oQSxhKEkpLGwpLHkuc2V0KGUuaWRUZXh0KGwpLCEwKSxWPWUuYXBwZW5kKFYsbCkpfWJyZWFrfX12YXIgZz1lLmNyZWF0ZUV4dGVybmFsSGVscGVyc0ltcG9ydERlY2xhcmF0aW9uSWZOZWVkZWQoZWUuZmFjdG9yeSxlZS5nZXRFbWl0SGVscGVyRmFjdG9yeSgpLGhlLHgsayxZLFUpO3JldHVybiBnJiZYLnVuc2hpZnQoZykse2V4dGVybmFsSW1wb3J0czpYLGV4cG9ydFNwZWNpZmllcnM6JCxleHBvcnRFcXVhbHM6UCxoYXNFeHBvcnRTdGFyc1RvRXhwb3J0VmFsdWVzOmssZXhwb3J0ZWRCaW5kaW5nczpBLGV4cG9ydGVkTmFtZXM6VixleHRlcm5hbEhlbHBlcnNJbXBvcnREZWNsYXJhdGlvbjpnfTtmdW5jdGlvbiBuZSh1ZSl7Zm9yKHZhciBXZT0wLEZlPWUuY2FzdCh1ZS5leHBvcnRDbGF1c2UsZS5pc05hbWVkRXhwb3J0cykuZWxlbWVudHM7V2U8RmUubGVuZ3RoO1dlKyspe3ZhciBaPUZlW1dlXTtpZigheS5nZXQoZS5pZFRleHQoWi5uYW1lKSkpe3ZhciBCZT1aLnByb3BlcnR5TmFtZXx8Wi5uYW1lO3VlLm1vZHVsZVNwZWNpZmllcnx8JC5hZGQoZS5pZFRleHQoQmUpLFopO3ZhciBnZT1GLmdldFJlZmVyZW5jZWRJbXBvcnREZWNsYXJhdGlvbihCZSl8fEYuZ2V0UmVmZXJlbmNlZFZhbHVlRGVjbGFyYXRpb24oQmUpO2dlJiZtKEEsYShnZSksWi5uYW1lKSx5LnNldChlLmlkVGV4dChaLm5hbWUpLCEwKSxWPWUuYXBwZW5kKFYsWi5uYW1lKX19fX1lLmNvbGxlY3RFeHRlcm5hbE1vZHVsZUluZm89TjtmdW5jdGlvbiBwKGVlLGhlLEYpe2lmKGUuaXNCaW5kaW5nUGF0dGVybihlZS5uYW1lKSlmb3IodmFyIHg9MCxYPWVlLm5hbWUuZWxlbWVudHM7eDxYLmxlbmd0aDt4Kyspe3ZhciAkPVhbeF07ZS5pc09taXR0ZWRFeHByZXNzaW9uKCQpfHwoRj1wKCQsaGUsRikpfWVsc2UgaWYoIWUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKGVlLm5hbWUpKXt2YXIgQT1lLmlkVGV4dChlZS5uYW1lKTtoZS5nZXQoQSl8fChoZS5zZXQoQSwhMCksRj1lLmFwcGVuZChGLGVlLm5hbWUpKX1yZXR1cm4gRn1mdW5jdGlvbiBtKGVlLGhlLEYpe3ZhciB4PWVlW2hlXTtyZXR1cm4geD94LnB1c2goRik6ZWVbaGVdPXg9W0ZdLHh9ZnVuY3Rpb24gRyhlZSl7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsTGlrZShlZSl8fGVlLmtpbmQ9PT04fHxlLmlzS2V5d29yZChlZS5raW5kKXx8ZS5pc0lkZW50aWZpZXIoZWUpfWUuaXNTaW1wbGVDb3BpYWJsZUV4cHJlc3Npb249RztmdW5jdGlvbiBvZShlZSl7cmV0dXJuIWUuaXNJZGVudGlmaWVyKGVlKSYmRyhlZSl9ZS5pc1NpbXBsZUlubGluZWFibGVFeHByZXNzaW9uPW9lO2Z1bmN0aW9uIGYoZWUpe3JldHVybiBlZT49NjQmJmVlPD03OH1lLmlzQ29tcG91bmRBc3NpZ25tZW50PWY7ZnVuY3Rpb24gVChlZSl7c3dpdGNoKGVlKXtjYXNlIDY0OnJldHVybiAzOTtjYXNlIDY1OnJldHVybiA0MDtjYXNlIDY2OnJldHVybiA0MTtjYXNlIDY3OnJldHVybiA0MjtjYXNlIDY4OnJldHVybiA0MztjYXNlIDY5OnJldHVybiA0NDtjYXNlIDcwOnJldHVybiA0NztjYXNlIDcxOnJldHVybiA0ODtjYXNlIDcyOnJldHVybiA0OTtjYXNlIDczOnJldHVybiA1MDtjYXNlIDc0OnJldHVybiA1MTtjYXNlIDc4OnJldHVybiA1MjtjYXNlIDc1OnJldHVybiA1NjtjYXNlIDc2OnJldHVybiA1NTtjYXNlIDc3OnJldHVybiA2MH19ZS5nZXROb25Bc3NpZ25tZW50T3BlcmF0b3JGb3JDb21wb3VuZEFzc2lnbm1lbnQ9VDtmdW5jdGlvbiBLKGVlKXtpZighIWUuaXNFeHByZXNzaW9uU3RhdGVtZW50KGVlKSl7dmFyIGhlPWUuc2tpcFBhcmVudGhlc2VzKGVlLmV4cHJlc3Npb24pO3JldHVybiBlLmlzU3VwZXJDYWxsKGhlKT9oZTp2b2lkIDB9fWUuZ2V0U3VwZXJDYWxsRnJvbVN0YXRlbWVudD1LO2Z1bmN0aW9uIGIoZWUsaGUpe2Zvcih2YXIgRj1oZTtGPGVlLmxlbmd0aDtGKz0xKXt2YXIgeD1lZVtGXTtpZihLKHgpKXJldHVybiBGfXJldHVybi0xfWUuZmluZFN1cGVyU3RhdGVtZW50SW5kZXg9YjtmdW5jdGlvbiBzZShlZSxoZSxGKXtyZXR1cm4gZS5maWx0ZXIoZWUubWVtYmVycyxmdW5jdGlvbih4KXtyZXR1cm4gUih4LGhlLEYpfSl9ZS5nZXRQcm9wZXJ0aWVzPXNlO2Z1bmN0aW9uIEooZWUpe3JldHVybiBxKGVlKXx8ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihlZSl9ZnVuY3Rpb24gaWUoZWUpe3JldHVybiBlLmZpbHRlcihlZS5tZW1iZXJzLEopfWUuZ2V0U3RhdGljUHJvcGVydGllc0FuZENsYXNzU3RhdGljQmxvY2s9aWU7ZnVuY3Rpb24gUihlZSxoZSxGKXtyZXR1cm4gZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oZWUpJiYoISFlZS5pbml0aWFsaXplcnx8IWhlKSYmZS5oYXNTdGF0aWNNb2RpZmllcihlZSk9PT1GfWZ1bmN0aW9uIHEoZWUpe3JldHVybiBlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihlZSkmJmUuaGFzU3RhdGljTW9kaWZpZXIoZWUpfWZ1bmN0aW9uIE8oZWUpe3JldHVybiBlZS5raW5kPT09MTY3JiZlZS5pbml0aWFsaXplciE9PXZvaWQgMH1lLmlzSW5pdGlhbGl6ZWRQcm9wZXJ0eT1PO2Z1bmN0aW9uIHZlKGVlKXtyZXR1cm4hZS5pc1N0YXRpYyhlZSkmJmUuaXNNZXRob2RPckFjY2Vzc29yKGVlKSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKGVlLm5hbWUpfWUuaXNOb25TdGF0aWNNZXRob2RPckFjY2Vzc29yV2l0aFByaXZhdGVOYW1lPXZlfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKHEpe3FbcS5BbGw9MF09XCJBbGxcIixxW3EuT2JqZWN0UmVzdD0xXT1cIk9iamVjdFJlc3RcIn0pKGE9ZS5GbGF0dGVuTGV2ZWx8fChlLkZsYXR0ZW5MZXZlbD17fSkpO2Z1bmN0aW9uIEMocSxPLHZlLGVlLGhlLEYpe3ZhciB4PXEsWDtpZihlLmlzRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQocSkpZm9yKFg9cS5yaWdodDtlLmlzRW1wdHlBcnJheUxpdGVyYWwocS5sZWZ0KXx8ZS5pc0VtcHR5T2JqZWN0TGl0ZXJhbChxLmxlZnQpOylpZihlLmlzRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoWCkpeD1xPVgsWD1xLnJpZ2h0O2Vsc2UgcmV0dXJuIGUudmlzaXROb2RlKFgsTyxlLmlzRXhwcmVzc2lvbik7dmFyICQsQT17Y29udGV4dDp2ZSxsZXZlbDplZSxkb3dubGV2ZWxJdGVyYXRpb246ISF2ZS5nZXRDb21waWxlck9wdGlvbnMoKS5kb3dubGV2ZWxJdGVyYXRpb24saG9pc3RUZW1wVmFyaWFibGVzOiEwLGVtaXRFeHByZXNzaW9uOnksZW1pdEJpbmRpbmdPckFzc2lnbm1lbnQ6VixjcmVhdGVBcnJheUJpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuOmZ1bmN0aW9uKEwpe3JldHVybiBiKHZlLmZhY3RvcnksTCl9LGNyZWF0ZU9iamVjdEJpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuOmZ1bmN0aW9uKEwpe3JldHVybiBKKHZlLmZhY3RvcnksTCl9LGNyZWF0ZUFycmF5QmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQ6Uix2aXNpdG9yOk99O2lmKFgmJihYPWUudmlzaXROb2RlKFgsTyxlLmlzRXhwcmVzc2lvbiksZS5pc0lkZW50aWZpZXIoWCkmJncocSxYLmVzY2FwZWRUZXh0KXx8RShxKT9YPVQoQSxYLCExLHgpOmhlP1g9VChBLFgsITAseCk6ZS5ub2RlSXNTeW50aGVzaXplZChxKSYmKHg9WCkpLE4oQSxxLFgseCxlLmlzRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQocSkpLFgmJmhlKXtpZighZS5zb21lKCQpKXJldHVybiBYOyQucHVzaChYKX1yZXR1cm4gdmUuZmFjdG9yeS5pbmxpbmVFeHByZXNzaW9ucygkKXx8dmUuZmFjdG9yeS5jcmVhdGVPbWl0dGVkRXhwcmVzc2lvbigpO2Z1bmN0aW9uIHkoTCl7JD1lLmFwcGVuZCgkLEwpfWZ1bmN0aW9uIFYoTCxQLGssWSl7ZS5EZWJ1Zy5hc3NlcnROb2RlKEwsRj9lLmlzSWRlbnRpZmllcjplLmlzRXhwcmVzc2lvbik7dmFyIFU9Rj9GKEwsUCxrKTplLnNldFRleHRSYW5nZSh2ZS5mYWN0b3J5LmNyZWF0ZUFzc2lnbm1lbnQoZS52aXNpdE5vZGUoTCxPLGUuaXNFeHByZXNzaW9uKSxQKSxrKTtVLm9yaWdpbmFsPVkseShVKX19ZS5mbGF0dGVuRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQ9QztmdW5jdGlvbiB3KHEsTyl7dmFyIHZlPWUuZ2V0VGFyZ2V0T2ZCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChxKTtyZXR1cm4gZS5pc0JpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuKHZlKT9CKHZlLE8pOmUuaXNJZGVudGlmaWVyKHZlKT92ZS5lc2NhcGVkVGV4dD09PU86ITF9ZnVuY3Rpb24gQihxLE8pe2Zvcih2YXIgdmU9ZS5nZXRFbGVtZW50c09mQmluZGluZ09yQXNzaWdubWVudFBhdHRlcm4ocSksZWU9MCxoZT12ZTtlZTxoZS5sZW5ndGg7ZWUrKyl7dmFyIEY9aGVbZWVdO2lmKHcoRixPKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBFKHEpe3ZhciBPPWUudHJ5R2V0UHJvcGVydHlOYW1lT2ZCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChxKTtpZihPJiZlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoTykmJiFlLmlzTGl0ZXJhbEV4cHJlc3Npb24oTy5leHByZXNzaW9uKSlyZXR1cm4hMDt2YXIgdmU9ZS5nZXRUYXJnZXRPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50KHEpO3JldHVybiEhdmUmJmUuaXNCaW5kaW5nT3JBc3NpZ25tZW50UGF0dGVybih2ZSkmJlEodmUpfWZ1bmN0aW9uIFEocSl7cmV0dXJuISFlLmZvckVhY2goZS5nZXRFbGVtZW50c09mQmluZGluZ09yQXNzaWdubWVudFBhdHRlcm4ocSksRSl9ZnVuY3Rpb24gbGUocSxPLHZlLGVlLGhlLEYseCl7Rj09PXZvaWQgMCYmKEY9ITEpO3ZhciBYLCQ9W10sQT1bXSx5PXtjb250ZXh0OnZlLGxldmVsOmVlLGRvd25sZXZlbEl0ZXJhdGlvbjohIXZlLmdldENvbXBpbGVyT3B0aW9ucygpLmRvd25sZXZlbEl0ZXJhdGlvbixob2lzdFRlbXBWYXJpYWJsZXM6RixlbWl0RXhwcmVzc2lvbjpmZSxlbWl0QmluZGluZ09yQXNzaWdubWVudDpnLGNyZWF0ZUFycmF5QmluZGluZ09yQXNzaWdubWVudFBhdHRlcm46ZnVuY3Rpb24obmUpe3JldHVybiBLKHZlLmZhY3RvcnksbmUpfSxjcmVhdGVPYmplY3RCaW5kaW5nT3JBc3NpZ25tZW50UGF0dGVybjpmdW5jdGlvbihuZSl7cmV0dXJuIHNlKHZlLmZhY3RvcnksbmUpfSxjcmVhdGVBcnJheUJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50OmZ1bmN0aW9uKG5lKXtyZXR1cm4gaWUodmUuZmFjdG9yeSxuZSl9LHZpc2l0b3I6T307aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocSkpe3ZhciBWPWUuZ2V0SW5pdGlhbGl6ZXJPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50KHEpO1YmJihlLmlzSWRlbnRpZmllcihWKSYmdyhxLFYuZXNjYXBlZFRleHQpfHxFKHEpKSYmKFY9VCh5LGUudmlzaXROb2RlKFYseS52aXNpdG9yKSwhMSxWKSxxPXZlLmZhY3RvcnkudXBkYXRlVmFyaWFibGVEZWNsYXJhdGlvbihxLHEubmFtZSx2b2lkIDAsdm9pZCAwLFYpKX1pZihOKHkscSxoZSxxLHgpLFgpe3ZhciBMPXZlLmZhY3RvcnkuY3JlYXRlVGVtcFZhcmlhYmxlKHZvaWQgMCk7aWYoRil7dmFyIFA9dmUuZmFjdG9yeS5pbmxpbmVFeHByZXNzaW9ucyhYKTtYPXZvaWQgMCxnKEwsUCx2b2lkIDAsdm9pZCAwKX1lbHNle3ZlLmhvaXN0VmFyaWFibGVEZWNsYXJhdGlvbihMKTt2YXIgaz1lLmxhc3QoJCk7ay5wZW5kaW5nRXhwcmVzc2lvbnM9ZS5hcHBlbmQoay5wZW5kaW5nRXhwcmVzc2lvbnMsdmUuZmFjdG9yeS5jcmVhdGVBc3NpZ25tZW50KEwsay52YWx1ZSkpLGUuYWRkUmFuZ2Uoay5wZW5kaW5nRXhwcmVzc2lvbnMsWCksay52YWx1ZT1MfX1mb3IodmFyIFk9MCxVPSQ7WTxVLmxlbmd0aDtZKyspe3ZhciBqPVVbWV0sSD1qLnBlbmRpbmdFeHByZXNzaW9ucyxJPWoubmFtZSxQPWoudmFsdWUsbD1qLmxvY2F0aW9uLGQ9ai5vcmlnaW5hbCxEPXZlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihJLHZvaWQgMCx2b2lkIDAsSD92ZS5mYWN0b3J5LmlubGluZUV4cHJlc3Npb25zKGUuYXBwZW5kKEgsUCkpOlApO0Qub3JpZ2luYWw9ZCxlLnNldFRleHRSYW5nZShELGwpLEEucHVzaChEKX1yZXR1cm4gQTtmdW5jdGlvbiBmZShuZSl7WD1lLmFwcGVuZChYLG5lKX1mdW5jdGlvbiBnKG5lLHVlLFdlLEZlKXtlLkRlYnVnLmFzc2VydE5vZGUobmUsZS5pc0JpbmRpbmdOYW1lKSxYJiYodWU9dmUuZmFjdG9yeS5pbmxpbmVFeHByZXNzaW9ucyhlLmFwcGVuZChYLHVlKSksWD12b2lkIDApLCQucHVzaCh7cGVuZGluZ0V4cHJlc3Npb25zOlgsbmFtZTpuZSx2YWx1ZTp1ZSxsb2NhdGlvbjpXZSxvcmlnaW5hbDpGZX0pfX1lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQmluZGluZz1sZTtmdW5jdGlvbiBOKHEsTyx2ZSxlZSxoZSl7dmFyIEY9ZS5nZXRUYXJnZXRPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50KE8pO2lmKCFoZSl7dmFyIHg9ZS52aXNpdE5vZGUoZS5nZXRJbml0aWFsaXplck9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoTykscS52aXNpdG9yLGUuaXNFeHByZXNzaW9uKTt4P3ZlPyh2ZT1vZShxLHZlLHgsZWUpLCFlLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24oeCkmJmUuaXNCaW5kaW5nT3JBc3NpZ25tZW50UGF0dGVybihGKSYmKHZlPVQocSx2ZSwhMCxlZSkpKTp2ZT14OnZlfHwodmU9cS5jb250ZXh0LmZhY3RvcnkuY3JlYXRlVm9pZFplcm8oKSl9ZS5pc09iamVjdEJpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuKEYpP3AocSxPLEYsdmUsZWUpOmUuaXNBcnJheUJpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuKEYpP20ocSxPLEYsdmUsZWUpOnEuZW1pdEJpbmRpbmdPckFzc2lnbm1lbnQoRix2ZSxlZSxPKX1mdW5jdGlvbiBwKHEsTyx2ZSxlZSxoZSl7dmFyIEY9ZS5nZXRFbGVtZW50c09mQmluZGluZ09yQXNzaWdubWVudFBhdHRlcm4odmUpLHg9Ri5sZW5ndGg7aWYoeCE9PTEpe3ZhciBYPSFlLmlzRGVjbGFyYXRpb25CaW5kaW5nRWxlbWVudChPKXx8eCE9PTA7ZWU9VChxLGVlLFgsaGUpfWZvcih2YXIgJCxBLHk9MDt5PHg7eSsrKXt2YXIgVj1GW3ldO2lmKGUuZ2V0UmVzdEluZGljYXRvck9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoVikpe2lmKHk9PT14LTEpeyQmJihxLmVtaXRCaW5kaW5nT3JBc3NpZ25tZW50KHEuY3JlYXRlT2JqZWN0QmluZGluZ09yQXNzaWdubWVudFBhdHRlcm4oJCksZWUsaGUsdmUpLCQ9dm9pZCAwKTt2YXIgUD1xLmNvbnRleHQuZ2V0RW1pdEhlbHBlckZhY3RvcnkoKS5jcmVhdGVSZXN0SGVscGVyKGVlLEYsQSx2ZSk7TihxLFYsUCxWKX19ZWxzZXt2YXIgTD1lLmdldFByb3BlcnR5TmFtZU9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoVik7aWYocS5sZXZlbD49MSYmIShWLnRyYW5zZm9ybUZsYWdzJjQ5MTUyKSYmIShlLmdldFRhcmdldE9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoVikudHJhbnNmb3JtRmxhZ3MmNDkxNTIpJiYhZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKEwpKSQ9ZS5hcHBlbmQoJCxlLnZpc2l0Tm9kZShWLHEudmlzaXRvcikpO2Vsc2V7JCYmKHEuZW1pdEJpbmRpbmdPckFzc2lnbm1lbnQocS5jcmVhdGVPYmplY3RCaW5kaW5nT3JBc3NpZ25tZW50UGF0dGVybigkKSxlZSxoZSx2ZSksJD12b2lkIDApO3ZhciBQPWYocSxlZSxMKTtlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoTCkmJihBPWUuYXBwZW5kKEEsUC5hcmd1bWVudEV4cHJlc3Npb24pKSxOKHEsVixQLFYpfX19JCYmcS5lbWl0QmluZGluZ09yQXNzaWdubWVudChxLmNyZWF0ZU9iamVjdEJpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuKCQpLGVlLGhlLHZlKX1mdW5jdGlvbiBtKHEsTyx2ZSxlZSxoZSl7dmFyIEY9ZS5nZXRFbGVtZW50c09mQmluZGluZ09yQXNzaWdubWVudFBhdHRlcm4odmUpLHg9Ri5sZW5ndGg7aWYocS5sZXZlbDwxJiZxLmRvd25sZXZlbEl0ZXJhdGlvbillZT1UKHEsZS5zZXRUZXh0UmFuZ2UocS5jb250ZXh0LmdldEVtaXRIZWxwZXJGYWN0b3J5KCkuY3JlYXRlUmVhZEhlbHBlcihlZSx4PjAmJmUuZ2V0UmVzdEluZGljYXRvck9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoRlt4LTFdKT92b2lkIDA6eCksaGUpLCExLGhlKTtlbHNlIGlmKHghPT0xJiYocS5sZXZlbDwxfHx4PT09MCl8fGUuZXZlcnkoRixlLmlzT21pdHRlZEV4cHJlc3Npb24pKXt2YXIgWD0hZS5pc0RlY2xhcmF0aW9uQmluZGluZ0VsZW1lbnQoTyl8fHghPT0wO2VlPVQocSxlZSxYLGhlKX1mb3IodmFyICQsQSx5PTA7eTx4O3krKyl7dmFyIFY9Rlt5XTtpZihxLmxldmVsPj0xKWlmKFYudHJhbnNmb3JtRmxhZ3MmMzI3Njh8fHEuaGFzVHJhbnNmb3JtZWRQcmlvckVsZW1lbnQmJiFHKFYpKXtxLmhhc1RyYW5zZm9ybWVkUHJpb3JFbGVtZW50PSEwO3ZhciBMPXEuY29udGV4dC5mYWN0b3J5LmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApO3EuaG9pc3RUZW1wVmFyaWFibGVzJiZxLmNvbnRleHQuaG9pc3RWYXJpYWJsZURlY2xhcmF0aW9uKEwpLEE9ZS5hcHBlbmQoQSxbTCxWXSksJD1lLmFwcGVuZCgkLHEuY3JlYXRlQXJyYXlCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChMKSl9ZWxzZSAkPWUuYXBwZW5kKCQsVik7ZWxzZXtpZihlLmlzT21pdHRlZEV4cHJlc3Npb24oVikpY29udGludWU7aWYoZS5nZXRSZXN0SW5kaWNhdG9yT2ZCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChWKSl7aWYoeT09PXgtMSl7dmFyIFA9cS5jb250ZXh0LmZhY3RvcnkuY3JlYXRlQXJyYXlTbGljZUNhbGwoZWUseSk7TihxLFYsUCxWKX19ZWxzZXt2YXIgUD1xLmNvbnRleHQuZmFjdG9yeS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihlZSx5KTtOKHEsVixQLFYpfX19aWYoJCYmcS5lbWl0QmluZGluZ09yQXNzaWdubWVudChxLmNyZWF0ZUFycmF5QmluZGluZ09yQXNzaWdubWVudFBhdHRlcm4oJCksZWUsaGUsdmUpLEEpZm9yKHZhciBrPTAsWT1BO2s8WS5sZW5ndGg7aysrKXt2YXIgVT1ZW2tdLGo9VVswXSxWPVVbMV07TihxLFYsaixWKX19ZnVuY3Rpb24gRyhxKXt2YXIgTz1lLmdldFRhcmdldE9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQocSk7aWYoIU98fGUuaXNPbWl0dGVkRXhwcmVzc2lvbihPKSlyZXR1cm4hMDt2YXIgdmU9ZS50cnlHZXRQcm9wZXJ0eU5hbWVPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50KHEpO2lmKHZlJiYhZS5pc1Byb3BlcnR5TmFtZUxpdGVyYWwodmUpKXJldHVybiExO3ZhciBlZT1lLmdldEluaXRpYWxpemVyT2ZCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChxKTtyZXR1cm4gZWUmJiFlLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24oZWUpPyExOmUuaXNCaW5kaW5nT3JBc3NpZ25tZW50UGF0dGVybihPKT9lLmV2ZXJ5KGUuZ2V0RWxlbWVudHNPZkJpbmRpbmdPckFzc2lnbm1lbnRQYXR0ZXJuKE8pLEcpOmUuaXNJZGVudGlmaWVyKE8pfWZ1bmN0aW9uIG9lKHEsTyx2ZSxlZSl7cmV0dXJuIE89VChxLE8sITAsZWUpLHEuY29udGV4dC5mYWN0b3J5LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihxLmNvbnRleHQuZmFjdG9yeS5jcmVhdGVUeXBlQ2hlY2soTyxcInVuZGVmaW5lZFwiKSx2b2lkIDAsdmUsdm9pZCAwLE8pfWZ1bmN0aW9uIGYocSxPLHZlKXtpZihlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUodmUpKXt2YXIgZWU9VChxLGUudmlzaXROb2RlKHZlLmV4cHJlc3Npb24scS52aXNpdG9yKSwhMSx2ZSk7cmV0dXJuIHEuY29udGV4dC5mYWN0b3J5LmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKE8sZWUpfWVsc2UgaWYoZS5pc1N0cmluZ09yTnVtZXJpY0xpdGVyYWxMaWtlKHZlKSl7dmFyIGVlPWUuZmFjdG9yeS5jbG9uZU5vZGUodmUpO3JldHVybiBxLmNvbnRleHQuZmFjdG9yeS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihPLGVlKX1lbHNle3ZhciBoZT1xLmNvbnRleHQuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGUuaWRUZXh0KHZlKSk7cmV0dXJuIHEuY29udGV4dC5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihPLGhlKX19ZnVuY3Rpb24gVChxLE8sdmUsZWUpe2lmKGUuaXNJZGVudGlmaWVyKE8pJiZ2ZSlyZXR1cm4gTzt2YXIgaGU9cS5jb250ZXh0LmZhY3RvcnkuY3JlYXRlVGVtcFZhcmlhYmxlKHZvaWQgMCk7cmV0dXJuIHEuaG9pc3RUZW1wVmFyaWFibGVzPyhxLmNvbnRleHQuaG9pc3RWYXJpYWJsZURlY2xhcmF0aW9uKGhlKSxxLmVtaXRFeHByZXNzaW9uKGUuc2V0VGV4dFJhbmdlKHEuY29udGV4dC5mYWN0b3J5LmNyZWF0ZUFzc2lnbm1lbnQoaGUsTyksZWUpKSk6cS5lbWl0QmluZGluZ09yQXNzaWdubWVudChoZSxPLGVlLHZvaWQgMCksaGV9ZnVuY3Rpb24gSyhxLE8pe3JldHVybiBlLkRlYnVnLmFzc2VydEVhY2hOb2RlKE8sZS5pc0FycmF5QmluZGluZ0VsZW1lbnQpLHEuY3JlYXRlQXJyYXlCaW5kaW5nUGF0dGVybihPKX1mdW5jdGlvbiBiKHEsTyl7cmV0dXJuIHEuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihlLm1hcChPLHEuY29udmVydGVycy5jb252ZXJ0VG9BcnJheUFzc2lnbm1lbnRFbGVtZW50KSl9ZnVuY3Rpb24gc2UocSxPKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnRFYWNoTm9kZShPLGUuaXNCaW5kaW5nRWxlbWVudCkscS5jcmVhdGVPYmplY3RCaW5kaW5nUGF0dGVybihPKX1mdW5jdGlvbiBKKHEsTyl7cmV0dXJuIHEuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oZS5tYXAoTyxxLmNvbnZlcnRlcnMuY29udmVydFRvT2JqZWN0QXNzaWdubWVudEVsZW1lbnQpKX1mdW5jdGlvbiBpZShxLE8pe3JldHVybiBxLmNyZWF0ZUJpbmRpbmdFbGVtZW50KHZvaWQgMCx2b2lkIDAsTyl9ZnVuY3Rpb24gUihxKXtyZXR1cm4gcX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oRSl7RVtFLkxpZnRSZXN0cmljdGlvbj0wXT1cIkxpZnRSZXN0cmljdGlvblwiLEVbRS5BbGw9MV09XCJBbGxcIn0pKGE9ZS5Qcm9jZXNzTGV2ZWx8fChlLlByb2Nlc3NMZXZlbD17fSkpO2Z1bmN0aW9uIEMoRSxRLGxlLE4scCxtKXt2YXIgRz1lLnZpc2l0Tm9kZShRLnRhZyxsZSxlLmlzRXhwcmVzc2lvbiksb2U9W3ZvaWQgMF0sZj1bXSxUPVtdLEs9US50ZW1wbGF0ZTtpZihtPT09YS5MaWZ0UmVzdHJpY3Rpb24mJiFlLmhhc0ludmFsaWRFc2NhcGUoSykpcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUSxsZSxFKTtpZihlLmlzTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWwoSykpZi5wdXNoKHcoSykpLFQucHVzaChCKEssTikpO2Vsc2V7Zi5wdXNoKHcoSy5oZWFkKSksVC5wdXNoKEIoSy5oZWFkLE4pKTtmb3IodmFyIGI9MCxzZT1LLnRlbXBsYXRlU3BhbnM7YjxzZS5sZW5ndGg7YisrKXt2YXIgSj1zZVtiXTtmLnB1c2godyhKLmxpdGVyYWwpKSxULnB1c2goQihKLmxpdGVyYWwsTikpLG9lLnB1c2goZS52aXNpdE5vZGUoSi5leHByZXNzaW9uLGxlLGUuaXNFeHByZXNzaW9uKSl9fXZhciBpZT1FLmdldEVtaXRIZWxwZXJGYWN0b3J5KCkuY3JlYXRlVGVtcGxhdGVPYmplY3RIZWxwZXIoZS5mYWN0b3J5LmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oZiksZS5mYWN0b3J5LmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oVCkpO2lmKGUuaXNFeHRlcm5hbE1vZHVsZShOKSl7dmFyIFI9ZS5mYWN0b3J5LmNyZWF0ZVVuaXF1ZU5hbWUoXCJ0ZW1wbGF0ZU9iamVjdFwiKTtwKFIpLG9lWzBdPWUuZmFjdG9yeS5jcmVhdGVMb2dpY2FsT3IoUixlLmZhY3RvcnkuY3JlYXRlQXNzaWdubWVudChSLGllKSl9ZWxzZSBvZVswXT1pZTtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKEcsdm9pZCAwLG9lKX1lLnByb2Nlc3NUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb249QztmdW5jdGlvbiB3KEUpe3JldHVybiBFLnRlbXBsYXRlRmxhZ3M/ZS5mYWN0b3J5LmNyZWF0ZVZvaWRaZXJvKCk6ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoRS50ZXh0KX1mdW5jdGlvbiBCKEUsUSl7dmFyIGxlPUUucmF3VGV4dDtpZihsZT09PXZvaWQgMCl7ZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQoUSxcIlRlbXBsYXRlIGxpdGVyYWwgbm9kZSBpcyBtaXNzaW5nICdyYXdUZXh0JyBhbmQgZG9lcyBub3QgaGF2ZSBhIHNvdXJjZSBmaWxlLiBQb3NzaWJseSBiYWQgdHJhbnNmb3JtLlwiKSxsZT1lLmdldFNvdXJjZVRleHRPZk5vZGVGcm9tU291cmNlRmlsZShRLEUpO3ZhciBOPUUua2luZD09PTE0fHxFLmtpbmQ9PT0xNztsZT1sZS5zdWJzdHJpbmcoMSxsZS5sZW5ndGgtKE4/MToyKSl9cmV0dXJuIGxlPWxlLnJlcGxhY2UoL1xcclxcbj8vZyxgXG5gKSxlLnNldFRleHRSYW5nZShlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChsZSksRSl9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE9ITEsQzsoZnVuY3Rpb24oRSl7RVtFLkNsYXNzQWxpYXNlcz0xXT1cIkNsYXNzQWxpYXNlc1wiLEVbRS5OYW1lc3BhY2VFeHBvcnRzPTJdPVwiTmFtZXNwYWNlRXhwb3J0c1wiLEVbRS5Ob25RdWFsaWZpZWRFbnVtTWVtYmVycz04XT1cIk5vblF1YWxpZmllZEVudW1NZW1iZXJzXCJ9KShDfHwoQz17fSkpO3ZhciB3OyhmdW5jdGlvbihFKXtFW0UuTm9uZT0wXT1cIk5vbmVcIixFW0UuSGFzU3RhdGljSW5pdGlhbGl6ZWRQcm9wZXJ0aWVzPTFdPVwiSGFzU3RhdGljSW5pdGlhbGl6ZWRQcm9wZXJ0aWVzXCIsRVtFLkhhc0NvbnN0cnVjdG9yRGVjb3JhdG9ycz0yXT1cIkhhc0NvbnN0cnVjdG9yRGVjb3JhdG9yc1wiLEVbRS5IYXNNZW1iZXJEZWNvcmF0b3JzPTRdPVwiSGFzTWVtYmVyRGVjb3JhdG9yc1wiLEVbRS5Jc0V4cG9ydE9mTmFtZXNwYWNlPThdPVwiSXNFeHBvcnRPZk5hbWVzcGFjZVwiLEVbRS5Jc05hbWVkRXh0ZXJuYWxFeHBvcnQ9MTZdPVwiSXNOYW1lZEV4dGVybmFsRXhwb3J0XCIsRVtFLklzRGVmYXVsdEV4dGVybmFsRXhwb3J0PTMyXT1cIklzRGVmYXVsdEV4dGVybmFsRXhwb3J0XCIsRVtFLklzRGVyaXZlZENsYXNzPTY0XT1cIklzRGVyaXZlZENsYXNzXCIsRVtFLlVzZUltbWVkaWF0ZWx5SW52b2tlZEZ1bmN0aW9uRXhwcmVzc2lvbj0xMjhdPVwiVXNlSW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uXCIsRVtFLkhhc0FueURlY29yYXRvcnM9Nl09XCJIYXNBbnlEZWNvcmF0b3JzXCIsRVtFLk5lZWRzTmFtZT01XT1cIk5lZWRzTmFtZVwiLEVbRS5NYXlOZWVkSW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uPTddPVwiTWF5TmVlZEltbWVkaWF0ZWx5SW52b2tlZEZ1bmN0aW9uRXhwcmVzc2lvblwiLEVbRS5Jc0V4cG9ydGVkPTU2XT1cIklzRXhwb3J0ZWRcIn0pKHd8fCh3PXt9KSk7ZnVuY3Rpb24gQihFKXt2YXIgUT1FLmZhY3RvcnksbGU9RS5nZXRFbWl0SGVscGVyRmFjdG9yeSxOPUUuc3RhcnRMZXhpY2FsRW52aXJvbm1lbnQscD1FLnJlc3VtZUxleGljYWxFbnZpcm9ubWVudCxtPUUuZW5kTGV4aWNhbEVudmlyb25tZW50LEc9RS5ob2lzdFZhcmlhYmxlRGVjbGFyYXRpb24sb2U9RS5nZXRFbWl0UmVzb2x2ZXIoKSxmPUUuZ2V0Q29tcGlsZXJPcHRpb25zKCksVD1lLmdldFN0cmljdE9wdGlvblZhbHVlKGYsXCJzdHJpY3ROdWxsQ2hlY2tzXCIpLEs9ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KGYpLGI9ZS5nZXRFbWl0TW9kdWxlS2luZChmKSxzZT1FLm9uRW1pdE5vZGUsSj1FLm9uU3Vic3RpdHV0ZU5vZGU7RS5vbkVtaXROb2RlPUNvLEUub25TdWJzdGl0dXRlTm9kZT1LbyxFLmVuYWJsZVN1YnN0aXR1dGlvbigyMDYpLEUuZW5hYmxlU3Vic3RpdHV0aW9uKDIwNyk7dmFyIGllLFIscSxPLHZlLGVlLGhlLEYseCxYO3JldHVybiAkO2Z1bmN0aW9uICQoUyl7cmV0dXJuIFMua2luZD09PTMwNj9BKFMpOnkoUyl9ZnVuY3Rpb24gQShTKXtyZXR1cm4gUS5jcmVhdGVCdW5kbGUoUy5zb3VyY2VGaWxlcy5tYXAoeSksZS5tYXBEZWZpbmVkKFMucHJlcGVuZHMsZnVuY3Rpb24oQ2Upe3JldHVybiBDZS5raW5kPT09MzA4P2UuY3JlYXRlVW5wYXJzZWRTb3VyY2VGaWxlKENlLFwianNcIik6Q2V9KSl9ZnVuY3Rpb24geShTKXtpZihTLmlzRGVjbGFyYXRpb25GaWxlKXJldHVybiBTO2llPVM7dmFyIENlPVYoUyxnKTtyZXR1cm4gZS5hZGRFbWl0SGVscGVycyhDZSxFLnJlYWRFbWl0SGVscGVycygpKSxpZT12b2lkIDAsQ2V9ZnVuY3Rpb24gVihTLENlKXt2YXIgcWU9Tyxicj12ZSxacj1lZSxTaT1oZTtMKFMpO3ZhciBQaT1DZShTKTtyZXR1cm4gTyE9PXFlJiYoZWU9WnIpLE89cWUsdmU9YnIsaGU9U2ksUGl9ZnVuY3Rpb24gTChTKXtzd2l0Y2goUy5raW5kKXtjYXNlIDMwNTpjYXNlIDI2MzpjYXNlIDI2MjpjYXNlIDIzNTpPPVMsdmU9dm9pZCAwLGVlPXZvaWQgMDticmVhaztjYXNlIDI1NzpjYXNlIDI1NjppZihlLmhhc1N5bnRhY3RpY01vZGlmaWVyKFMsMikpYnJlYWs7Uy5uYW1lP3V0KFMpOmUuRGVidWcuYXNzZXJ0KFMua2luZD09PTI1N3x8ZS5oYXNTeW50YWN0aWNNb2RpZmllcihTLDUxMikpLGUuaXNDbGFzc0RlY2xhcmF0aW9uKFMpJiYodmU9Uyk7YnJlYWt9fWZ1bmN0aW9uIFAoUyl7cmV0dXJuIFYoUyxrKX1mdW5jdGlvbiBrKFMpe3JldHVybiBTLnRyYW5zZm9ybUZsYWdzJjE/ZmUoUyk6U31mdW5jdGlvbiBZKFMpe3JldHVybiBWKFMsVSl9ZnVuY3Rpb24gVShTKXtzd2l0Y2goUy5raW5kKXtjYXNlIDI2NjpjYXNlIDI2NTpjYXNlIDI3MTpjYXNlIDI3MjpyZXR1cm4gaihTKTtkZWZhdWx0OnJldHVybiBrKFMpfX1mdW5jdGlvbiBqKFMpe3ZhciBDZT1lLmdldFBhcnNlVHJlZU5vZGUoUyk7aWYoQ2UhPT1TKXJldHVybiBTLnRyYW5zZm9ybUZsYWdzJjE/ZS52aXNpdEVhY2hDaGlsZChTLFAsRSk6Uztzd2l0Y2goUy5raW5kKXtjYXNlIDI2NjpyZXR1cm4gQnQoUyk7Y2FzZSAyNjU6cmV0dXJuIFFhKFMpO2Nhc2UgMjcxOnJldHVybiBPaShTKTtjYXNlIDI3MjpyZXR1cm4gamkoUyk7ZGVmYXVsdDplLkRlYnVnLmZhaWwoXCJVbmhhbmRsZWQgZWxsaWRlZCBzdGF0ZW1lbnRcIil9fWZ1bmN0aW9uIEgoUyl7cmV0dXJuIFYoUyxJKX1mdW5jdGlvbiBJKFMpe2lmKCEoUy5raW5kPT09MjcyfHxTLmtpbmQ9PT0yNjZ8fFMua2luZD09PTI2N3x8Uy5raW5kPT09MjY1JiZTLm1vZHVsZVJlZmVyZW5jZS5raW5kPT09Mjc3KSlyZXR1cm4gUy50cmFuc2Zvcm1GbGFncyYxfHxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKFMsMSk/ZmUoUyk6U31mdW5jdGlvbiBsKFMpe3JldHVybiBWKFMsZCl9ZnVuY3Rpb24gZChTKXtzd2l0Y2goUy5raW5kKXtjYXNlIDE3MTpyZXR1cm4gdGkoUyk7Y2FzZSAxNjc6cmV0dXJuIEpyKFMpO2Nhc2UgMTc2OmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMTY5OmNhc2UgMTcwOnJldHVybiBrKFMpO2Nhc2UgMjM0OnJldHVybiBTO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoUyl9fWZ1bmN0aW9uIEQoUyl7aWYoIShlLm1vZGlmaWVyVG9GbGFnKFMua2luZCkmMTE2OTU4KSYmIShSJiZTLmtpbmQ9PT05MykpcmV0dXJuIFN9ZnVuY3Rpb24gZmUoUyl7aWYoZS5pc1N0YXRlbWVudChTKSYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihTLDIpKXJldHVybiBRLmNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQoUyk7c3dpdGNoKFMua2luZCl7Y2FzZSA5MzpjYXNlIDg4OnJldHVybiBSP3ZvaWQgMDpTO2Nhc2UgMTIzOmNhc2UgMTIxOmNhc2UgMTIyOmNhc2UgMTI2OmNhc2UgMTU5OmNhc2UgODU6Y2FzZSAxMzU6Y2FzZSAxNDU6Y2FzZSAxMDE6Y2FzZSAxNDQ6Y2FzZSAxODM6Y2FzZSAxODQ6Y2FzZSAxODU6Y2FzZSAxODY6Y2FzZSAxODI6Y2FzZSAxNzc6Y2FzZSAxNjM6Y2FzZSAxMzA6Y2FzZSAxNTU6Y2FzZSAxMzM6Y2FzZSAxNTA6Y2FzZSAxNDc6Y2FzZSAxNDM6Y2FzZSAxMTQ6Y2FzZSAxNTE6Y2FzZSAxODA6Y2FzZSAxNzk6Y2FzZSAxODE6Y2FzZSAxNzg6Y2FzZSAxODc6Y2FzZSAxODg6Y2FzZSAxODk6Y2FzZSAxOTE6Y2FzZSAxOTI6Y2FzZSAxOTM6Y2FzZSAxOTQ6Y2FzZSAxOTU6Y2FzZSAxOTY6Y2FzZSAxNzY6Y2FzZSAxNjU6cmV0dXJuO2Nhc2UgMjU5OnJldHVybiBRLmNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQoUyk7Y2FzZSAxNjc6cmV0dXJuIEpyKFMpO2Nhc2UgMjY0OnJldHVybjtjYXNlIDE3MTpyZXR1cm4gdGkoUyk7Y2FzZSAyNTg6cmV0dXJuIFEuY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudChTKTtjYXNlIDI1NzpyZXR1cm4gRmUoUyk7Y2FzZSAyMjY6cmV0dXJuIGdlKFMpO2Nhc2UgMjkxOnJldHVybiBwaShTKTtjYXNlIDIyODpyZXR1cm4gYWUoUyk7Y2FzZSAxNjk6cmV0dXJuIHpyKFMpO2Nhc2UgMTcyOnJldHVybiBKZShTKTtjYXNlIDE3MzpyZXR1cm4geGUoUyk7Y2FzZSAyNTY6cmV0dXJuIHZyKFMpO2Nhc2UgMjEzOnJldHVybiBtcihTKTtjYXNlIDIxNDpyZXR1cm4gQXIoUyk7Y2FzZSAxNjQ6cmV0dXJuIE9lKFMpO2Nhc2UgMjEyOnJldHVybiBVZShTKTtjYXNlIDIxMTpjYXNlIDIyOTpyZXR1cm4gZnIoUyk7Y2FzZSAyMDg6cmV0dXJuIGdyKFMpO2Nhc2UgMjA5OnJldHVybiBWcihTKTtjYXNlIDIxMDpyZXR1cm4gVHIoUyk7Y2FzZSAyMzA6cmV0dXJuIERlKFMpO2Nhc2UgMjYwOnJldHVybiBXaShTKTtjYXNlIDIzNzpyZXR1cm4gbnIoUyk7Y2FzZSAyNTQ6cmV0dXJuIFBlKFMpO2Nhc2UgMjYxOnJldHVybiBLaShTKTtjYXNlIDI2NTpyZXR1cm4gUWEoUyk7Y2FzZSAyNzk6cmV0dXJuIHZpKFMpO2Nhc2UgMjgwOnJldHVybiBVaShTKTtkZWZhdWx0OnJldHVybiBlLnZpc2l0RWFjaENoaWxkKFMsUCxFKX19ZnVuY3Rpb24gZyhTKXt2YXIgQ2U9ZS5nZXRTdHJpY3RPcHRpb25WYWx1ZShmLFwiYWx3YXlzU3RyaWN0XCIpJiYhKGUuaXNFeHRlcm5hbE1vZHVsZShTKSYmYj49ZS5Nb2R1bGVLaW5kLkVTMjAxNSkmJiFlLmlzSnNvblNvdXJjZUZpbGUoUyk7cmV0dXJuIFEudXBkYXRlU291cmNlRmlsZShTLGUudmlzaXRMZXhpY2FsRW52aXJvbm1lbnQoUy5zdGF0ZW1lbnRzLFksRSwwLENlKSl9ZnVuY3Rpb24gbmUoUyxDZSl7dmFyIHFlPTA7ZS5zb21lKENlKSYmKHFlfD0xKTt2YXIgYnI9ZS5nZXRFZmZlY3RpdmVCYXNlVHlwZU5vZGUoUyk7cmV0dXJuIGJyJiZlLnNraXBPdXRlckV4cHJlc3Npb25zKGJyLmV4cHJlc3Npb24pLmtpbmQhPT0xMDQmJihxZXw9NjQpLGUuY2xhc3NPckNvbnN0cnVjdG9yUGFyYW1ldGVySXNEZWNvcmF0ZWQoUykmJihxZXw9MiksZS5jaGlsZElzRGVjb3JhdGVkKFMpJiYocWV8PTQpLGFpKFMpP3FlfD04OkJhKFMpP3FlfD0zMjprYShTKSYmKHFlfD0xNiksSzw9MSYmcWUmNyYmKHFlfD0xMjgpLHFlfWZ1bmN0aW9uIHVlKFMpe3JldHVybiEhKFMudHJhbnNmb3JtRmxhZ3MmNDA5Nil9ZnVuY3Rpb24gV2UoUyl7cmV0dXJuIGUuc29tZShTLmRlY29yYXRvcnMpfHxlLnNvbWUoUy50eXBlUGFyYW1ldGVycyl8fGUuc29tZShTLmhlcml0YWdlQ2xhdXNlcyx1ZSl8fGUuc29tZShTLm1lbWJlcnMsdWUpfWZ1bmN0aW9uIEZlKFMpe2lmKCFXZShTKSYmIShSJiZlLmhhc1N5bnRhY3RpY01vZGlmaWVyKFMsMSkpKXJldHVybiBlLnZpc2l0RWFjaENoaWxkKFMsUCxFKTt2YXIgQ2U9ZS5nZXRQcm9wZXJ0aWVzKFMsITAsITApLHFlPW5lKFMsQ2UpO3FlJjEyOCYmRS5zdGFydExleGljYWxFbnZpcm9ubWVudCgpO3ZhciBicj1TLm5hbWV8fChxZSY1P1EuZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoUyk6dm9pZCAwKSxacj1xZSYyP0JlKFMsYnIpOlooUyxicixxZSksU2k9W1pyXTtpZihpcihTaSxTLCExKSxpcihTaSxTLCEwKSxCcihTaSxTKSxxZSYxMjgpe3ZhciBQaT1lLmNyZWF0ZVRva2VuUmFuZ2UoZS5za2lwVHJpdmlhKGllLnRleHQsUy5tZW1iZXJzLmVuZCksMTkpLFFpPVEuZ2V0SW50ZXJuYWxOYW1lKFMpLEN0PVEuY3JlYXRlUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb24oUWkpO2Uuc2V0VGV4dFJhbmdlRW5kKEN0LFBpLmVuZCksZS5zZXRFbWl0RmxhZ3MoQ3QsMTUzNik7dmFyIHNhPVEuY3JlYXRlUmV0dXJuU3RhdGVtZW50KEN0KTtlLnNldFRleHRSYW5nZVBvcyhzYSxQaS5wb3MpLGUuc2V0RW1pdEZsYWdzKHNhLDE5MjApLFNpLnB1c2goc2EpLGUuaW5zZXJ0U3RhdGVtZW50c0FmdGVyU3RhbmRhcmRQcm9sb2d1ZShTaSxFLmVuZExleGljYWxFbnZpcm9ubWVudCgpKTt2YXIgZW49US5jcmVhdGVJbW1lZGlhdGVseUludm9rZWRBcnJvd0Z1bmN0aW9uKFNpKTtlLnNldEVtaXRGbGFncyhlbiwzMzU1NDQzMik7dmFyIFdhPVEuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLFEuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW1EuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihRLmdldExvY2FsTmFtZShTLCExLCExKSx2b2lkIDAsdm9pZCAwLGVuKV0pKTtlLnNldE9yaWdpbmFsTm9kZShXYSxTKSxlLnNldENvbW1lbnRSYW5nZShXYSxTKSxlLnNldFNvdXJjZU1hcFJhbmdlKFdhLGUubW92ZVJhbmdlUGFzdERlY29yYXRvcnMoUykpLGUuc3RhcnRPbk5ld0xpbmUoV2EpLFNpPVtXYV19cmV0dXJuIHFlJjg/Q24oU2ksUyk6KHFlJjEyOHx8cWUmMikmJihxZSYzMj9TaS5wdXNoKFEuY3JlYXRlRXhwb3J0RGVmYXVsdChRLmdldExvY2FsTmFtZShTLCExLCEwKSkpOnFlJjE2JiZTaS5wdXNoKFEuY3JlYXRlRXh0ZXJuYWxNb2R1bGVFeHBvcnQoUS5nZXRMb2NhbE5hbWUoUywhMSwhMCkpKSksU2kubGVuZ3RoPjEmJihTaS5wdXNoKFEuY3JlYXRlRW5kT2ZEZWNsYXJhdGlvbk1hcmtlcihTKSksZS5zZXRFbWl0RmxhZ3MoWnIsZS5nZXRFbWl0RmxhZ3MoWnIpfDQxOTQzMDQpKSxlLnNpbmdsZU9yTWFueShTaSl9ZnVuY3Rpb24gWihTLENlLHFlKXt2YXIgYnI9cWUmMTI4P3ZvaWQgMDplLnZpc2l0Tm9kZXMoUy5tb2RpZmllcnMsRCxlLmlzTW9kaWZpZXIpLFpyPVEuY3JlYXRlQ2xhc3NEZWNsYXJhdGlvbih2b2lkIDAsYnIsQ2Usdm9pZCAwLGUudmlzaXROb2RlcyhTLmhlcml0YWdlQ2xhdXNlcyxQLGUuaXNIZXJpdGFnZUNsYXVzZSksUmUoUykpLFNpPWUuZ2V0RW1pdEZsYWdzKFMpO3JldHVybiBxZSYxJiYoU2l8PTMyKSxlLnNldFRleHRSYW5nZShacixTKSxlLnNldE9yaWdpbmFsTm9kZShacixTKSxlLnNldEVtaXRGbGFncyhacixTaSksWnJ9ZnVuY3Rpb24gQmUoUyxDZSl7dmFyIHFlPWUubW92ZVJhbmdlUGFzdERlY29yYXRvcnMoUyksYnI9ZW8oUyksWnI9Szw9Mj9RLmdldEludGVybmFsTmFtZShTLCExLCEwKTpRLmdldExvY2FsTmFtZShTLCExLCEwKSxTaT1lLnZpc2l0Tm9kZXMoUy5oZXJpdGFnZUNsYXVzZXMsUCxlLmlzSGVyaXRhZ2VDbGF1c2UpLFBpPVJlKFMpLFFpPVEuY3JlYXRlQ2xhc3NFeHByZXNzaW9uKHZvaWQgMCx2b2lkIDAsQ2Usdm9pZCAwLFNpLFBpKTtlLnNldE9yaWdpbmFsTm9kZShRaSxTKSxlLnNldFRleHRSYW5nZShRaSxxZSk7dmFyIEN0PVEuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLFEuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW1EuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihacix2b2lkIDAsdm9pZCAwLGJyP1EuY3JlYXRlQXNzaWdubWVudChicixRaSk6UWkpXSwxKSk7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKEN0LFMpLGUuc2V0VGV4dFJhbmdlKEN0LHFlKSxlLnNldENvbW1lbnRSYW5nZShDdCxTKSxDdH1mdW5jdGlvbiBnZShTKXtpZighV2UoUykpcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUyxQLEUpO3ZhciBDZT1RLmNyZWF0ZUNsYXNzRXhwcmVzc2lvbih2b2lkIDAsdm9pZCAwLFMubmFtZSx2b2lkIDAsZS52aXNpdE5vZGVzKFMuaGVyaXRhZ2VDbGF1c2VzLFAsZS5pc0hlcml0YWdlQ2xhdXNlKSxSZShTKSk7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKENlLFMpLGUuc2V0VGV4dFJhbmdlKENlLFMpLENlfWZ1bmN0aW9uIFJlKFMpe3ZhciBDZT1bXSxxZT1lLmdldEZpcnN0Q29uc3RydWN0b3JXaXRoQm9keShTKSxicj1xZSYmZS5maWx0ZXIocWUucGFyYW1ldGVycyxmdW5jdGlvbihRaSl7cmV0dXJuIGUuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKFFpLHFlKX0pO2lmKGJyKWZvcih2YXIgWnI9MCxTaT1icjtacjxTaS5sZW5ndGg7WnIrKyl7dmFyIFBpPVNpW1pyXTtlLmlzSWRlbnRpZmllcihQaS5uYW1lKSYmQ2UucHVzaChlLnNldE9yaWdpbmFsTm9kZShRLmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxQaS5uYW1lLHZvaWQgMCx2b2lkIDAsdm9pZCAwKSxQaSkpfXJldHVybiBlLmFkZFJhbmdlKENlLGUudmlzaXROb2RlcyhTLm1lbWJlcnMsbCxlLmlzQ2xhc3NFbGVtZW50KSksZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVOb2RlQXJyYXkoQ2UpLFMubWVtYmVycyl9ZnVuY3Rpb24gemUoUyxDZSl7cmV0dXJuIGUuZmlsdGVyKFMubWVtYmVycyxDZT9mdW5jdGlvbihxZSl7cmV0dXJuIEVlKHFlLFMpfTpmdW5jdGlvbihxZSl7cmV0dXJuIEhlKHFlLFMpfSl9ZnVuY3Rpb24gRWUoUyxDZSl7cmV0dXJuIHJyKFMsITAsQ2UpfWZ1bmN0aW9uIEhlKFMsQ2Upe3JldHVybiBycihTLCExLENlKX1mdW5jdGlvbiBycihTLENlLHFlKXtyZXR1cm4gZS5ub2RlT3JDaGlsZElzRGVjb3JhdGVkKFMscWUpJiZDZT09PWUuaXNTdGF0aWMoUyl9ZnVuY3Rpb24gSWUoUyl7dmFyIENlO2lmKFMpZm9yKHZhciBxZT1TLnBhcmFtZXRlcnMsYnI9cWUubGVuZ3RoPjAmJmUucGFyYW1ldGVySXNUaGlzS2V5d29yZChxZVswXSksWnI9YnI/MTowLFNpPWJyP3FlLmxlbmd0aC0xOnFlLmxlbmd0aCxQaT0wO1BpPFNpO1BpKyspe3ZhciBRaT1xZVtQaStacl07KENlfHxRaS5kZWNvcmF0b3JzKSYmKENlfHwoQ2U9bmV3IEFycmF5KFNpKSksQ2VbUGldPVFpLmRlY29yYXRvcnMpfXJldHVybiBDZX1mdW5jdGlvbiBfZShTKXt2YXIgQ2U9Uy5kZWNvcmF0b3JzLHFlPUllKGUuZ2V0Rmlyc3RDb25zdHJ1Y3RvcldpdGhCb2R5KFMpKTtpZighKCFDZSYmIXFlKSlyZXR1cm57ZGVjb3JhdG9yczpDZSxwYXJhbWV0ZXJzOnFlfX1mdW5jdGlvbiB3ZShTLENlKXtzd2l0Y2goQ2Uua2luZCl7Y2FzZSAxNzI6Y2FzZSAxNzM6cmV0dXJuIGRlKFMsQ2UpO2Nhc2UgMTY5OnJldHVybiB5ZShDZSk7Y2FzZSAxNjc6cmV0dXJuIEFlKENlKTtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gZGUoUyxDZSl7aWYoISFDZS5ib2R5KXt2YXIgcWU9ZS5nZXRBbGxBY2Nlc3NvckRlY2xhcmF0aW9ucyhTLm1lbWJlcnMsQ2UpLGJyPXFlLmZpcnN0QWNjZXNzb3IsWnI9cWUuc2Vjb25kQWNjZXNzb3IsU2k9cWUuc2V0QWNjZXNzb3IsUGk9YnIuZGVjb3JhdG9ycz9icjpaciYmWnIuZGVjb3JhdG9ycz9acjp2b2lkIDA7aWYoISghUGl8fENlIT09UGkpKXt2YXIgUWk9UGkuZGVjb3JhdG9ycyxDdD1JZShTaSk7aWYoISghUWkmJiFDdCkpcmV0dXJue2RlY29yYXRvcnM6UWkscGFyYW1ldGVyczpDdH19fX1mdW5jdGlvbiB5ZShTKXtpZighIVMuYm9keSl7dmFyIENlPVMuZGVjb3JhdG9ycyxxZT1JZShTKTtpZighKCFDZSYmIXFlKSlyZXR1cm57ZGVjb3JhdG9yczpDZSxwYXJhbWV0ZXJzOnFlfX19ZnVuY3Rpb24gQWUoUyl7dmFyIENlPVMuZGVjb3JhdG9ycztpZighIUNlKXJldHVybntkZWNvcmF0b3JzOkNlfX1mdW5jdGlvbiBlcihTLENlLHFlKXtpZighIXFlKXt2YXIgYnI9W107cmV0dXJuIGUuYWRkUmFuZ2UoYnIsZS5tYXAocWUuZGVjb3JhdG9ycyxOZSkpLGUuYWRkUmFuZ2UoYnIsZS5mbGF0TWFwKHFlLnBhcmFtZXRlcnMsbikpLGxyKFMsQ2UsYnIpLGJyfX1mdW5jdGlvbiBpcihTLENlLHFlKXtlLmFkZFJhbmdlKFMsZS5tYXAoQ3IoQ2UscWUpLHBuKSl9ZnVuY3Rpb24gQ3IoUyxDZSl7Zm9yKHZhciBxZT16ZShTLENlKSxicixacj0wLFNpPXFlO1pyPFNpLmxlbmd0aDtacisrKXt2YXIgUGk9U2lbWnJdLFFpPVllKFMsUGkpO1FpJiYoYnI/YnIucHVzaChRaSk6YnI9W1FpXSl9cmV0dXJuIGJyfWZ1bmN0aW9uIFllKFMsQ2Upe3ZhciBxZT13ZShTLENlKSxicj1lcihDZSxTLHFlKTtpZighIWJyKXt2YXIgWnI9RGEoUyxDZSksU2k9WnQoQ2UsIWUuaGFzU3ludGFjdGljTW9kaWZpZXIoQ2UsMikpLFBpPUs+MD9DZS5raW5kPT09MTY3P1EuY3JlYXRlVm9pZFplcm8oKTpRLmNyZWF0ZU51bGwoKTp2b2lkIDAsUWk9bGUoKS5jcmVhdGVEZWNvcmF0ZUhlbHBlcihicixacixTaSxQaSk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKFFpLGUubW92ZVJhbmdlUGFzdERlY29yYXRvcnMoQ2UpKSxlLnNldEVtaXRGbGFncyhRaSwxNTM2KSxRaX19ZnVuY3Rpb24gQnIoUyxDZSl7dmFyIHFlPUVyKENlKTtxZSYmUy5wdXNoKGUuc2V0T3JpZ2luYWxOb2RlKFEuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChxZSksQ2UpKX1mdW5jdGlvbiBFcihTKXt2YXIgQ2U9X2UoUykscWU9ZXIoUyxTLENlKTtpZighIXFlKXt2YXIgYnI9eCYmeFtlLmdldE9yaWdpbmFsTm9kZUlkKFMpXSxacj1LPD0yP1EuZ2V0SW50ZXJuYWxOYW1lKFMsITEsITApOlEuZ2V0TG9jYWxOYW1lKFMsITEsITApLFNpPWxlKCkuY3JlYXRlRGVjb3JhdGVIZWxwZXIocWUsWnIpLFBpPVEuY3JlYXRlQXNzaWdubWVudChacixicj9RLmNyZWF0ZUFzc2lnbm1lbnQoYnIsU2kpOlNpKTtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoUGksMTUzNiksZS5zZXRTb3VyY2VNYXBSYW5nZShQaSxlLm1vdmVSYW5nZVBhc3REZWNvcmF0b3JzKFMpKSxQaX19ZnVuY3Rpb24gTmUoUyl7cmV0dXJuIGUudmlzaXROb2RlKFMuZXhwcmVzc2lvbixQLGUuaXNFeHByZXNzaW9uKX1mdW5jdGlvbiBuKFMsQ2Upe3ZhciBxZTtpZihTKXtxZT1bXTtmb3IodmFyIGJyPTAsWnI9Uzticjxaci5sZW5ndGg7YnIrKyl7dmFyIFNpPVpyW2JyXSxQaT1sZSgpLmNyZWF0ZVBhcmFtSGVscGVyKE5lKFNpKSxDZSk7ZS5zZXRUZXh0UmFuZ2UoUGksU2kuZXhwcmVzc2lvbiksZS5zZXRFbWl0RmxhZ3MoUGksMTUzNikscWUucHVzaChQaSl9fXJldHVybiBxZX1mdW5jdGlvbiBscihTLENlLHFlKXthP0dlKFMsQ2UscWUpOmJlKFMsQ2UscWUpfWZ1bmN0aW9uIGJlKFMsQ2UscWUpe2YuZW1pdERlY29yYXRvck1ldGFkYXRhJiYodXIoUykmJnFlLnB1c2gobGUoKS5jcmVhdGVNZXRhZGF0YUhlbHBlcihcImRlc2lnbjp0eXBlXCIsVXIoUykpKSxJcihTKSYmcWUucHVzaChsZSgpLmNyZWF0ZU1ldGFkYXRhSGVscGVyKFwiZGVzaWduOnBhcmFtdHlwZXNcIixpaShTLENlKSkpLHlyKFMpJiZxZS5wdXNoKGxlKCkuY3JlYXRlTWV0YWRhdGFIZWxwZXIoXCJkZXNpZ246cmV0dXJudHlwZVwiLHBlKFMpKSkpfWZ1bmN0aW9uIEdlKFMsQ2UscWUpe2lmKGYuZW1pdERlY29yYXRvck1ldGFkYXRhKXt2YXIgYnI9dm9pZCAwO3VyKFMpJiYoYnJ8fChicj1bXSkpLnB1c2goUS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJ0eXBlXCIsUS5jcmVhdGVBcnJvd0Z1bmN0aW9uKHZvaWQgMCx2b2lkIDAsW10sdm9pZCAwLFEuY3JlYXRlVG9rZW4oMzgpLFVyKFMpKSkpLElyKFMpJiYoYnJ8fChicj1bXSkpLnB1c2goUS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJwYXJhbVR5cGVzXCIsUS5jcmVhdGVBcnJvd0Z1bmN0aW9uKHZvaWQgMCx2b2lkIDAsW10sdm9pZCAwLFEuY3JlYXRlVG9rZW4oMzgpLGlpKFMsQ2UpKSkpLHlyKFMpJiYoYnJ8fChicj1bXSkpLnB1c2goUS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJyZXR1cm5UeXBlXCIsUS5jcmVhdGVBcnJvd0Z1bmN0aW9uKHZvaWQgMCx2b2lkIDAsW10sdm9pZCAwLFEuY3JlYXRlVG9rZW4oMzgpLHBlKFMpKSkpLGJyJiZxZS5wdXNoKGxlKCkuY3JlYXRlTWV0YWRhdGFIZWxwZXIoXCJkZXNpZ246dHlwZWluZm9cIixRLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKGJyLCEwKSkpfX1mdW5jdGlvbiB1cihTKXt2YXIgQ2U9Uy5raW5kO3JldHVybiBDZT09PTE2OXx8Q2U9PT0xNzJ8fENlPT09MTczfHxDZT09PTE2N31mdW5jdGlvbiB5cihTKXtyZXR1cm4gUy5raW5kPT09MTY5fWZ1bmN0aW9uIElyKFMpe3N3aXRjaChTLmtpbmQpe2Nhc2UgMjU3OmNhc2UgMjI2OnJldHVybiBlLmdldEZpcnN0Q29uc3RydWN0b3JXaXRoQm9keShTKSE9PXZvaWQgMDtjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB3cihTKXt2YXIgQ2U9b2UuZ2V0QWxsQWNjZXNzb3JEZWNsYXJhdGlvbnMoUyk7cmV0dXJuIENlLnNldEFjY2Vzc29yJiZlLmdldFNldEFjY2Vzc29yVHlwZUFubm90YXRpb25Ob2RlKENlLnNldEFjY2Vzc29yKXx8Q2UuZ2V0QWNjZXNzb3ImJmUuZ2V0RWZmZWN0aXZlUmV0dXJuVHlwZU5vZGUoQ2UuZ2V0QWNjZXNzb3IpfWZ1bmN0aW9uIFVyKFMpe3N3aXRjaChTLmtpbmQpe2Nhc2UgMTY3OmNhc2UgMTY0OnJldHVybiBvcihTLnR5cGUpO2Nhc2UgMTczOmNhc2UgMTcyOnJldHVybiBvcih3cihTKSk7Y2FzZSAyNTc6Y2FzZSAyMjY6Y2FzZSAxNjk6cmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIkZ1bmN0aW9uXCIpO2RlZmF1bHQ6cmV0dXJuIFEuY3JlYXRlVm9pZFplcm8oKX19ZnVuY3Rpb24gaWkoUyxDZSl7dmFyIHFlPWUuaXNDbGFzc0xpa2UoUyk/ZS5nZXRGaXJzdENvbnN0cnVjdG9yV2l0aEJvZHkoUyk6ZS5pc0Z1bmN0aW9uTGlrZShTKSYmZS5ub2RlSXNQcmVzZW50KFMuYm9keSk/Uzp2b2lkIDAsYnI9W107aWYocWUpZm9yKHZhciBacj1taShxZSxDZSksU2k9WnIubGVuZ3RoLFBpPTA7UGk8U2k7UGkrKyl7dmFyIFFpPVpyW1BpXTtQaT09PTAmJmUuaXNJZGVudGlmaWVyKFFpLm5hbWUpJiZRaS5uYW1lLmVzY2FwZWRUZXh0PT09XCJ0aGlzXCJ8fChRaS5kb3REb3REb3RUb2tlbj9ici5wdXNoKG9yKGUuZ2V0UmVzdFBhcmFtZXRlckVsZW1lbnRUeXBlKFFpLnR5cGUpKSk6YnIucHVzaChVcihRaSkpKX1yZXR1cm4gUS5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKGJyKX1mdW5jdGlvbiBtaShTLENlKXtpZihDZSYmUy5raW5kPT09MTcyKXt2YXIgcWU9ZS5nZXRBbGxBY2Nlc3NvckRlY2xhcmF0aW9ucyhDZS5tZW1iZXJzLFMpLnNldEFjY2Vzc29yO2lmKHFlKXJldHVybiBxZS5wYXJhbWV0ZXJzfXJldHVybiBTLnBhcmFtZXRlcnN9ZnVuY3Rpb24gcGUoUyl7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2UoUykmJlMudHlwZT9vcihTLnR5cGUpOmUuaXNBc3luY0Z1bmN0aW9uKFMpP1EuY3JlYXRlSWRlbnRpZmllcihcIlByb21pc2VcIik6US5jcmVhdGVWb2lkWmVybygpfWZ1bmN0aW9uIG9yKFMpe2lmKFM9PT12b2lkIDApcmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIk9iamVjdFwiKTtzd2l0Y2goUy5raW5kKXtjYXNlIDExNDpjYXNlIDE1MzpjYXNlIDE0MzpyZXR1cm4gUS5jcmVhdGVWb2lkWmVybygpO2Nhc2UgMTkxOnJldHVybiBvcihTLnR5cGUpO2Nhc2UgMTc5OmNhc2UgMTgwOnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJGdW5jdGlvblwiKTtjYXNlIDE4MzpjYXNlIDE4NDpyZXR1cm4gUS5jcmVhdGVJZGVudGlmaWVyKFwiQXJyYXlcIik7Y2FzZSAxNzc6Y2FzZSAxMzM6cmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIkJvb2xlYW5cIik7Y2FzZSAxOTg6Y2FzZSAxNTA6cmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIlN0cmluZ1wiKTtjYXNlIDE0ODpyZXR1cm4gUS5jcmVhdGVJZGVudGlmaWVyKFwiT2JqZWN0XCIpO2Nhc2UgMTk2OnN3aXRjaChTLmxpdGVyYWwua2luZCl7Y2FzZSAxMDpjYXNlIDE0OnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJTdHJpbmdcIik7Y2FzZSAyMTk6Y2FzZSA4OnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJOdW1iZXJcIik7Y2FzZSA5OnJldHVybiBXdCgpO2Nhc2UgMTEwOmNhc2UgOTU6cmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIkJvb2xlYW5cIik7Y2FzZSAxMDQ6cmV0dXJuIFEuY3JlYXRlVm9pZFplcm8oKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWxCYWRTeW50YXhLaW5kKFMubGl0ZXJhbCl9Y2FzZSAxNDc6cmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIk51bWJlclwiKTtjYXNlIDE1ODpyZXR1cm4gV3QoKTtjYXNlIDE1MTpyZXR1cm4gSzwyP0dpKCk6US5jcmVhdGVJZGVudGlmaWVyKFwiU3ltYm9sXCIpO2Nhc2UgMTc4OnJldHVybiBzaShTKTtjYXNlIDE4ODpjYXNlIDE4NzpyZXR1cm4gcXIoUy50eXBlcyk7Y2FzZSAxODk6cmV0dXJuIHFyKFtTLnRydWVUeXBlLFMuZmFsc2VUeXBlXSk7Y2FzZSAxOTM6aWYoUy5vcGVyYXRvcj09PTE0NSlyZXR1cm4gb3IoUy50eXBlKTticmVhaztjYXNlIDE4MTpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE4MjpjYXNlIDEzMDpjYXNlIDE1NTpjYXNlIDE5MjpjYXNlIDIwMDpicmVhaztjYXNlIDMxMjpjYXNlIDMxMzpjYXNlIDMxNzpjYXNlIDMxODpjYXNlIDMxOTpicmVhaztjYXNlIDMxNDpjYXNlIDMxNTpjYXNlIDMxNjpyZXR1cm4gb3IoUy50eXBlKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWxCYWRTeW50YXhLaW5kKFMpfXJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJPYmplY3RcIil9ZnVuY3Rpb24gcXIoUyl7Zm9yKHZhciBDZSxxZT0wLGJyPVM7cWU8YnIubGVuZ3RoO3FlKyspe2Zvcih2YXIgWnI9YnJbcWVdO1pyLmtpbmQ9PT0xOTE7KVpyPVpyLnR5cGU7aWYoWnIua2luZCE9PTE0MyYmISghVCYmKFpyLmtpbmQ9PT0xOTYmJlpyLmxpdGVyYWwua2luZD09PTEwNHx8WnIua2luZD09PTE1MykpKXt2YXIgU2k9b3IoWnIpO2lmKGUuaXNJZGVudGlmaWVyKFNpKSYmU2kuZXNjYXBlZFRleHQ9PT1cIk9iamVjdFwiKXJldHVybiBTaTtpZihDZSl7aWYoIWUuaXNJZGVudGlmaWVyKENlKXx8IWUuaXNJZGVudGlmaWVyKFNpKXx8Q2UuZXNjYXBlZFRleHQhPT1TaS5lc2NhcGVkVGV4dClyZXR1cm4gUS5jcmVhdGVJZGVudGlmaWVyKFwiT2JqZWN0XCIpfWVsc2UgQ2U9U2l9fXJldHVybiBDZXx8US5jcmVhdGVWb2lkWmVybygpfWZ1bmN0aW9uIHNpKFMpe3ZhciBDZT1vZS5nZXRUeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQoUy50eXBlTmFtZSx2ZXx8Tyk7c3dpdGNoKENlKXtjYXNlIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlVua25vd246aWYoZS5maW5kQW5jZXN0b3IoUyxmdW5jdGlvbihacil7cmV0dXJuIFpyLnBhcmVudCYmZS5pc0NvbmRpdGlvbmFsVHlwZU5vZGUoWnIucGFyZW50KSYmKFpyLnBhcmVudC50cnVlVHlwZT09PVpyfHxaci5wYXJlbnQuZmFsc2VUeXBlPT09WnIpfSkpcmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIk9iamVjdFwiKTt2YXIgcWU9d2koUy50eXBlTmFtZSksYnI9US5jcmVhdGVUZW1wVmFyaWFibGUoRyk7cmV0dXJuIFEuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFEuY3JlYXRlVHlwZUNoZWNrKFEuY3JlYXRlQXNzaWdubWVudChicixxZSksXCJmdW5jdGlvblwiKSx2b2lkIDAsYnIsdm9pZCAwLFEuY3JlYXRlSWRlbnRpZmllcihcIk9iamVjdFwiKSk7Y2FzZSBlLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5UeXBlV2l0aENvbnN0cnVjdFNpZ25hdHVyZUFuZFZhbHVlOnJldHVybiBYaShTLnR5cGVOYW1lKTtjYXNlIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlZvaWROdWxsYWJsZU9yTmV2ZXJUeXBlOnJldHVybiBRLmNyZWF0ZVZvaWRaZXJvKCk7Y2FzZSBlLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5CaWdJbnRMaWtlVHlwZTpyZXR1cm4gV3QoKTtjYXNlIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLkJvb2xlYW5UeXBlOnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJCb29sZWFuXCIpO2Nhc2UgZS5UeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQuTnVtYmVyTGlrZVR5cGU6cmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIk51bWJlclwiKTtjYXNlIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlN0cmluZ0xpa2VUeXBlOnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJTdHJpbmdcIik7Y2FzZSBlLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5BcnJheUxpa2VUeXBlOnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJBcnJheVwiKTtjYXNlIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLkVTU3ltYm9sVHlwZTpyZXR1cm4gSzwyP0dpKCk6US5jcmVhdGVJZGVudGlmaWVyKFwiU3ltYm9sXCIpO2Nhc2UgZS5UeXBlUmVmZXJlbmNlU2VyaWFsaXphdGlvbktpbmQuVHlwZVdpdGhDYWxsU2lnbmF0dXJlOnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJGdW5jdGlvblwiKTtjYXNlIGUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlByb21pc2U6cmV0dXJuIFEuY3JlYXRlSWRlbnRpZmllcihcIlByb21pc2VcIik7Y2FzZSBlLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5PYmplY3RUeXBlOnJldHVybiBRLmNyZWF0ZUlkZW50aWZpZXIoXCJPYmplY3RcIik7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihDZSl9fWZ1bmN0aW9uIERpKFMsQ2Upe3JldHVybiBRLmNyZWF0ZUxvZ2ljYWxBbmQoUS5jcmVhdGVTdHJpY3RJbmVxdWFsaXR5KFEuY3JlYXRlVHlwZU9mRXhwcmVzc2lvbihTKSxRLmNyZWF0ZVN0cmluZ0xpdGVyYWwoXCJ1bmRlZmluZWRcIikpLENlKX1mdW5jdGlvbiB3aShTKXtpZihTLmtpbmQ9PT03OSl7dmFyIENlPVhpKFMpO3JldHVybiBEaShDZSxDZSl9aWYoUy5sZWZ0LmtpbmQ9PT03OSlyZXR1cm4gRGkoWGkoUy5sZWZ0KSxYaShTKSk7dmFyIHFlPXdpKFMubGVmdCksYnI9US5jcmVhdGVUZW1wVmFyaWFibGUoRyk7cmV0dXJuIFEuY3JlYXRlTG9naWNhbEFuZChRLmNyZWF0ZUxvZ2ljYWxBbmQocWUubGVmdCxRLmNyZWF0ZVN0cmljdEluZXF1YWxpdHkoUS5jcmVhdGVBc3NpZ25tZW50KGJyLHFlLnJpZ2h0KSxRLmNyZWF0ZVZvaWRaZXJvKCkpKSxRLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihicixTLnJpZ2h0KSl9ZnVuY3Rpb24gWGkoUyl7c3dpdGNoKFMua2luZCl7Y2FzZSA3OTp2YXIgQ2U9ZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UoZS5wYXJzZU5vZGVGYWN0b3J5LmNsb25lTm9kZShTKSxTKSxTLnBhcmVudCk7cmV0dXJuIENlLm9yaWdpbmFsPXZvaWQgMCxlLnNldFBhcmVudChDZSxlLmdldFBhcnNlVHJlZU5vZGUoTykpLENlO2Nhc2UgMTYxOnJldHVybiBldChTKX19ZnVuY3Rpb24gZXQoUyl7cmV0dXJuIFEuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFhpKFMubGVmdCksUy5yaWdodCl9ZnVuY3Rpb24gR2koKXtyZXR1cm4gUS5jcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oUS5jcmVhdGVUeXBlQ2hlY2soUS5jcmVhdGVJZGVudGlmaWVyKFwiU3ltYm9sXCIpLFwiZnVuY3Rpb25cIiksdm9pZCAwLFEuY3JlYXRlSWRlbnRpZmllcihcIlN5bWJvbFwiKSx2b2lkIDAsUS5jcmVhdGVJZGVudGlmaWVyKFwiT2JqZWN0XCIpKX1mdW5jdGlvbiBXdCgpe3JldHVybiBLPDk5P1EuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFEuY3JlYXRlVHlwZUNoZWNrKFEuY3JlYXRlSWRlbnRpZmllcihcIkJpZ0ludFwiKSxcImZ1bmN0aW9uXCIpLHZvaWQgMCxRLmNyZWF0ZUlkZW50aWZpZXIoXCJCaWdJbnRcIiksdm9pZCAwLFEuY3JlYXRlSWRlbnRpZmllcihcIk9iamVjdFwiKSk6US5jcmVhdGVJZGVudGlmaWVyKFwiQmlnSW50XCIpfWZ1bmN0aW9uIFp0KFMsQ2Upe3ZhciBxZT1TLm5hbWU7cmV0dXJuIGUuaXNQcml2YXRlSWRlbnRpZmllcihxZSk/US5jcmVhdGVJZGVudGlmaWVyKFwiXCIpOmUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShxZSk/Q2UmJiFlLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24ocWUuZXhwcmVzc2lvbik/US5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShxZSk6cWUuZXhwcmVzc2lvbjplLmlzSWRlbnRpZmllcihxZSk/US5jcmVhdGVTdHJpbmdMaXRlcmFsKGUuaWRUZXh0KHFlKSk6US5jbG9uZU5vZGUocWUpfWZ1bmN0aW9uIF9yKFMpe3ZhciBDZT1TLm5hbWU7aWYoZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKENlKSYmKCFlLmhhc1N0YXRpY01vZGlmaWVyKFMpJiZoZXx8ZS5zb21lKFMuZGVjb3JhdG9ycykpKXt2YXIgcWU9ZS52aXNpdE5vZGUoQ2UuZXhwcmVzc2lvbixQLGUuaXNFeHByZXNzaW9uKSxicj1lLnNraXBQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbnMocWUpO2lmKCFlLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24oYnIpKXt2YXIgWnI9US5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShDZSk7cmV0dXJuIEcoWnIpLFEudXBkYXRlQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoQ2UsUS5jcmVhdGVBc3NpZ25tZW50KFpyLHFlKSl9fXJldHVybiBlLnZpc2l0Tm9kZShDZSxQLGUuaXNQcm9wZXJ0eU5hbWUpfWZ1bmN0aW9uIHBpKFMpe2lmKFMudG9rZW4hPT0xMTcpcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUyxQLEUpfWZ1bmN0aW9uIGFlKFMpe3JldHVybiBRLnVwZGF0ZUV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cyhTLGUudmlzaXROb2RlKFMuZXhwcmVzc2lvbixQLGUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKSx2b2lkIDApfWZ1bmN0aW9uIFhlKFMpe3JldHVybiFlLm5vZGVJc01pc3NpbmcoUy5ib2R5KX1mdW5jdGlvbiBKcihTKXtpZighKFMuZmxhZ3MmMTY3NzcyMTZ8fGUuaGFzU3ludGFjdGljTW9kaWZpZXIoUywxMjgpKSl7dmFyIENlPVEudXBkYXRlUHJvcGVydHlEZWNsYXJhdGlvbihTLHZvaWQgMCxlLnZpc2l0Tm9kZXMoUy5tb2RpZmllcnMsUCxlLmlzTW9kaWZpZXIpLF9yKFMpLHZvaWQgMCx2b2lkIDAsZS52aXNpdE5vZGUoUy5pbml0aWFsaXplcixQKSk7cmV0dXJuIENlIT09UyYmKGUuc2V0Q29tbWVudFJhbmdlKENlLFMpLGUuc2V0U291cmNlTWFwUmFuZ2UoQ2UsZS5tb3ZlUmFuZ2VQYXN0RGVjb3JhdG9ycyhTKSkpLENlfX1mdW5jdGlvbiB0aShTKXtpZighIVhlKFMpKXJldHVybiBRLnVwZGF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oUyx2b2lkIDAsdm9pZCAwLGUudmlzaXRQYXJhbWV0ZXJMaXN0KFMucGFyYW1ldGVycyxQLEUpLFplKFMuYm9keSxTKSl9ZnVuY3Rpb24gWmUoUyxDZSl7dmFyIHFlPUNlJiZlLmZpbHRlcihDZS5wYXJhbWV0ZXJzLGZ1bmN0aW9uKEN0KXtyZXR1cm4gZS5pc1BhcmFtZXRlclByb3BlcnR5RGVjbGFyYXRpb24oQ3QsQ2UpfSk7aWYoIWUuc29tZShxZSkpcmV0dXJuIGUudmlzaXRGdW5jdGlvbkJvZHkoUyxQLEUpO3ZhciBicj1bXTtwKCk7dmFyIFpyPVEuY29weVByb2xvZ3VlKFMuc3RhdGVtZW50cyxiciwhMSxQKSxTaT1lLmZpbmRTdXBlclN0YXRlbWVudEluZGV4KFMuc3RhdGVtZW50cyxacik7U2k+PTAmJmUuYWRkUmFuZ2UoYnIsZS52aXNpdE5vZGVzKFMuc3RhdGVtZW50cyxQLGUuaXNTdGF0ZW1lbnQsWnIsU2krMS1acikpO3ZhciBQaT1lLm1hcERlZmluZWQocWUsU3IpO1NpPj0wP2UuYWRkUmFuZ2UoYnIsUGkpOmJyPVZlKFZlKFZlKFtdLGJyLnNsaWNlKDAsWnIpLCEwKSxQaSwhMCksYnIuc2xpY2UoWnIpLCEwKSxlLmFkZFJhbmdlKGJyLGUudmlzaXROb2RlcyhTLnN0YXRlbWVudHMsUCxlLmlzU3RhdGVtZW50LFNpKzErWnIpKSxicj1RLm1lcmdlTGV4aWNhbEVudmlyb25tZW50KGJyLG0oKSk7dmFyIFFpPVEuY3JlYXRlQmxvY2soZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVOb2RlQXJyYXkoYnIpLFMuc3RhdGVtZW50cyksITApO3JldHVybiBlLnNldFRleHRSYW5nZShRaSxTKSxlLnNldE9yaWdpbmFsTm9kZShRaSxTKSxRaX1mdW5jdGlvbiBTcihTKXt2YXIgQ2U9Uy5uYW1lO2lmKCEhZS5pc0lkZW50aWZpZXIoQ2UpKXt2YXIgcWU9ZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UoUS5jbG9uZU5vZGUoQ2UpLENlKSxDZS5wYXJlbnQpO2Uuc2V0RW1pdEZsYWdzKHFlLDE1ODQpO3ZhciBicj1lLnNldFBhcmVudChlLnNldFRleHRSYW5nZShRLmNsb25lTm9kZShDZSksQ2UpLENlLnBhcmVudCk7cmV0dXJuIGUuc2V0RW1pdEZsYWdzKGJyLDE1MzYpLGUuc3RhcnRPbk5ld0xpbmUoZS5yZW1vdmVBbGxDb21tZW50cyhlLnNldFRleHRSYW5nZShlLnNldE9yaWdpbmFsTm9kZShRLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoUS5jcmVhdGVBc3NpZ25tZW50KGUuc2V0VGV4dFJhbmdlKFEuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFEuY3JlYXRlVGhpcygpLHFlKSxTLm5hbWUpLGJyKSksUyksZS5tb3ZlUmFuZ2VQb3MoUywtMSkpKSl9fWZ1bmN0aW9uIHpyKFMpe2lmKCEhWGUoUykpe3ZhciBDZT1RLnVwZGF0ZU1ldGhvZERlY2xhcmF0aW9uKFMsdm9pZCAwLGUudmlzaXROb2RlcyhTLm1vZGlmaWVycyxELGUuaXNNb2RpZmllciksUy5hc3Rlcmlza1Rva2VuLF9yKFMpLHZvaWQgMCx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QoUy5wYXJhbWV0ZXJzLFAsRSksdm9pZCAwLGUudmlzaXRGdW5jdGlvbkJvZHkoUy5ib2R5LFAsRSkpO3JldHVybiBDZSE9PVMmJihlLnNldENvbW1lbnRSYW5nZShDZSxTKSxlLnNldFNvdXJjZU1hcFJhbmdlKENlLGUubW92ZVJhbmdlUGFzdERlY29yYXRvcnMoUykpKSxDZX19ZnVuY3Rpb24gV3IoUyl7cmV0dXJuIShlLm5vZGVJc01pc3NpbmcoUy5ib2R5KSYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihTLDEyOCkpfWZ1bmN0aW9uIEplKFMpe2lmKCEhV3IoUykpe3ZhciBDZT1RLnVwZGF0ZUdldEFjY2Vzc29yRGVjbGFyYXRpb24oUyx2b2lkIDAsZS52aXNpdE5vZGVzKFMubW9kaWZpZXJzLEQsZS5pc01vZGlmaWVyKSxfcihTKSxlLnZpc2l0UGFyYW1ldGVyTGlzdChTLnBhcmFtZXRlcnMsUCxFKSx2b2lkIDAsZS52aXNpdEZ1bmN0aW9uQm9keShTLmJvZHksUCxFKXx8US5jcmVhdGVCbG9jayhbXSkpO3JldHVybiBDZSE9PVMmJihlLnNldENvbW1lbnRSYW5nZShDZSxTKSxlLnNldFNvdXJjZU1hcFJhbmdlKENlLGUubW92ZVJhbmdlUGFzdERlY29yYXRvcnMoUykpKSxDZX19ZnVuY3Rpb24geGUoUyl7aWYoISFXcihTKSl7dmFyIENlPVEudXBkYXRlU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihTLHZvaWQgMCxlLnZpc2l0Tm9kZXMoUy5tb2RpZmllcnMsRCxlLmlzTW9kaWZpZXIpLF9yKFMpLGUudmlzaXRQYXJhbWV0ZXJMaXN0KFMucGFyYW1ldGVycyxQLEUpLGUudmlzaXRGdW5jdGlvbkJvZHkoUy5ib2R5LFAsRSl8fFEuY3JlYXRlQmxvY2soW10pKTtyZXR1cm4gQ2UhPT1TJiYoZS5zZXRDb21tZW50UmFuZ2UoQ2UsUyksZS5zZXRTb3VyY2VNYXBSYW5nZShDZSxlLm1vdmVSYW5nZVBhc3REZWNvcmF0b3JzKFMpKSksQ2V9fWZ1bmN0aW9uIHZyKFMpe2lmKCFYZShTKSlyZXR1cm4gUS5jcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50KFMpO3ZhciBDZT1RLnVwZGF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oUyx2b2lkIDAsZS52aXNpdE5vZGVzKFMubW9kaWZpZXJzLEQsZS5pc01vZGlmaWVyKSxTLmFzdGVyaXNrVG9rZW4sUy5uYW1lLHZvaWQgMCxlLnZpc2l0UGFyYW1ldGVyTGlzdChTLnBhcmFtZXRlcnMsUCxFKSx2b2lkIDAsZS52aXNpdEZ1bmN0aW9uQm9keShTLmJvZHksUCxFKXx8US5jcmVhdGVCbG9jayhbXSkpO2lmKGFpKFMpKXt2YXIgcWU9W0NlXTtyZXR1cm4gQ24ocWUsUykscWV9cmV0dXJuIENlfWZ1bmN0aW9uIG1yKFMpe2lmKCFYZShTKSlyZXR1cm4gUS5jcmVhdGVPbWl0dGVkRXhwcmVzc2lvbigpO3ZhciBDZT1RLnVwZGF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihTLGUudmlzaXROb2RlcyhTLm1vZGlmaWVycyxELGUuaXNNb2RpZmllciksUy5hc3Rlcmlza1Rva2VuLFMubmFtZSx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QoUy5wYXJhbWV0ZXJzLFAsRSksdm9pZCAwLGUudmlzaXRGdW5jdGlvbkJvZHkoUy5ib2R5LFAsRSl8fFEuY3JlYXRlQmxvY2soW10pKTtyZXR1cm4gQ2V9ZnVuY3Rpb24gQXIoUyl7dmFyIENlPVEudXBkYXRlQXJyb3dGdW5jdGlvbihTLGUudmlzaXROb2RlcyhTLm1vZGlmaWVycyxELGUuaXNNb2RpZmllciksdm9pZCAwLGUudmlzaXRQYXJhbWV0ZXJMaXN0KFMucGFyYW1ldGVycyxQLEUpLHZvaWQgMCxTLmVxdWFsc0dyZWF0ZXJUaGFuVG9rZW4sZS52aXNpdEZ1bmN0aW9uQm9keShTLmJvZHksUCxFKSk7cmV0dXJuIENlfWZ1bmN0aW9uIE9lKFMpe2lmKCFlLnBhcmFtZXRlcklzVGhpc0tleXdvcmQoUykpe3ZhciBDZT1RLnVwZGF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKFMsdm9pZCAwLHZvaWQgMCxTLmRvdERvdERvdFRva2VuLGUudmlzaXROb2RlKFMubmFtZSxQLGUuaXNCaW5kaW5nTmFtZSksdm9pZCAwLHZvaWQgMCxlLnZpc2l0Tm9kZShTLmluaXRpYWxpemVyLFAsZS5pc0V4cHJlc3Npb24pKTtyZXR1cm4gQ2UhPT1TJiYoZS5zZXRDb21tZW50UmFuZ2UoQ2UsUyksZS5zZXRUZXh0UmFuZ2UoQ2UsZS5tb3ZlUmFuZ2VQYXN0TW9kaWZpZXJzKFMpKSxlLnNldFNvdXJjZU1hcFJhbmdlKENlLGUubW92ZVJhbmdlUGFzdE1vZGlmaWVycyhTKSksZS5zZXRFbWl0RmxhZ3MoQ2UubmFtZSwzMikpLENlfX1mdW5jdGlvbiBucihTKXtpZihhaShTKSl7dmFyIENlPWUuZ2V0SW5pdGlhbGl6ZWRWYXJpYWJsZXMoUy5kZWNsYXJhdGlvbkxpc3QpO3JldHVybiBDZS5sZW5ndGg9PT0wP3ZvaWQgMDplLnNldFRleHRSYW5nZShRLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoUS5pbmxpbmVFeHByZXNzaW9ucyhlLm1hcChDZSxNcikpKSxTKX1lbHNlIHJldHVybiBlLnZpc2l0RWFjaENoaWxkKFMsUCxFKX1mdW5jdGlvbiBNcihTKXt2YXIgQ2U9Uy5uYW1lO3JldHVybiBlLmlzQmluZGluZ1BhdHRlcm4oQ2UpP2UuZmxhdHRlbkRlc3RydWN0dXJpbmdBc3NpZ25tZW50KFMsUCxFLDAsITEsa24pOmUuc2V0VGV4dFJhbmdlKFEuY3JlYXRlQXNzaWdubWVudCh4bihDZSksZS52aXNpdE5vZGUoUy5pbml0aWFsaXplcixQLGUuaXNFeHByZXNzaW9uKSksUyl9ZnVuY3Rpb24gUGUoUyl7dmFyIENlPVEudXBkYXRlVmFyaWFibGVEZWNsYXJhdGlvbihTLGUudmlzaXROb2RlKFMubmFtZSxQLGUuaXNCaW5kaW5nTmFtZSksdm9pZCAwLHZvaWQgMCxlLnZpc2l0Tm9kZShTLmluaXRpYWxpemVyLFAsZS5pc0V4cHJlc3Npb24pKTtyZXR1cm4gUy50eXBlJiZlLnNldFR5cGVOb2RlKENlLm5hbWUsUy50eXBlKSxDZX1mdW5jdGlvbiBVZShTKXt2YXIgQ2U9ZS5za2lwT3V0ZXJFeHByZXNzaW9ucyhTLmV4cHJlc3Npb24sLTcpO2lmKGUuaXNBc3NlcnRpb25FeHByZXNzaW9uKENlKSl7dmFyIHFlPWUudmlzaXROb2RlKFMuZXhwcmVzc2lvbixQLGUuaXNFeHByZXNzaW9uKTtyZXR1cm4gUS5jcmVhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbihxZSxTKX1yZXR1cm4gZS52aXNpdEVhY2hDaGlsZChTLFAsRSl9ZnVuY3Rpb24gZnIoUyl7dmFyIENlPWUudmlzaXROb2RlKFMuZXhwcmVzc2lvbixQLGUuaXNFeHByZXNzaW9uKTtyZXR1cm4gUS5jcmVhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbihDZSxTKX1mdW5jdGlvbiBEZShTKXt2YXIgQ2U9ZS52aXNpdE5vZGUoUy5leHByZXNzaW9uLFAsZS5pc0xlZnRIYW5kU2lkZUV4cHJlc3Npb24pO3JldHVybiBRLmNyZWF0ZVBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9uKENlLFMpfWZ1bmN0aW9uIGdyKFMpe3JldHVybiBRLnVwZGF0ZUNhbGxFeHByZXNzaW9uKFMsZS52aXNpdE5vZGUoUy5leHByZXNzaW9uLFAsZS5pc0V4cHJlc3Npb24pLHZvaWQgMCxlLnZpc2l0Tm9kZXMoUy5hcmd1bWVudHMsUCxlLmlzRXhwcmVzc2lvbikpfWZ1bmN0aW9uIFZyKFMpe3JldHVybiBRLnVwZGF0ZU5ld0V4cHJlc3Npb24oUyxlLnZpc2l0Tm9kZShTLmV4cHJlc3Npb24sUCxlLmlzRXhwcmVzc2lvbiksdm9pZCAwLGUudmlzaXROb2RlcyhTLmFyZ3VtZW50cyxQLGUuaXNFeHByZXNzaW9uKSl9ZnVuY3Rpb24gVHIoUyl7cmV0dXJuIFEudXBkYXRlVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKFMsZS52aXNpdE5vZGUoUy50YWcsUCxlLmlzRXhwcmVzc2lvbiksdm9pZCAwLGUudmlzaXROb2RlKFMudGVtcGxhdGUsUCxlLmlzRXhwcmVzc2lvbikpfWZ1bmN0aW9uIHZpKFMpe3JldHVybiBRLnVwZGF0ZUpzeFNlbGZDbG9zaW5nRWxlbWVudChTLGUudmlzaXROb2RlKFMudGFnTmFtZSxQLGUuaXNKc3hUYWdOYW1lRXhwcmVzc2lvbiksdm9pZCAwLGUudmlzaXROb2RlKFMuYXR0cmlidXRlcyxQLGUuaXNKc3hBdHRyaWJ1dGVzKSl9ZnVuY3Rpb24gVWkoUyl7cmV0dXJuIFEudXBkYXRlSnN4T3BlbmluZ0VsZW1lbnQoUyxlLnZpc2l0Tm9kZShTLnRhZ05hbWUsUCxlLmlzSnN4VGFnTmFtZUV4cHJlc3Npb24pLHZvaWQgMCxlLnZpc2l0Tm9kZShTLmF0dHJpYnV0ZXMsUCxlLmlzSnN4QXR0cmlidXRlcykpfWZ1bmN0aW9uIFlpKFMpe3JldHVybiFlLmlzRW51bUNvbnN0KFMpfHxlLnNob3VsZFByZXNlcnZlQ29uc3RFbnVtcyhmKX1mdW5jdGlvbiBXaShTKXtpZighWWkoUykpcmV0dXJuIFEuY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudChTKTt2YXIgQ2U9W10scWU9Mixicj1JaShDZSxTKTticiYmKGIhPT1lLk1vZHVsZUtpbmQuU3lzdGVtfHxPIT09aWUpJiYocWV8PTUxMik7dmFyIFpyPUtuKFMpLFNpPVBuKFMpLFBpPWUuaGFzU3ludGFjdGljTW9kaWZpZXIoUywxKT9RLmdldEV4dGVybmFsTW9kdWxlT3JOYW1lc3BhY2VFeHBvcnROYW1lKHEsUywhMSwhMCk6US5nZXRMb2NhbE5hbWUoUywhMSwhMCksUWk9US5jcmVhdGVMb2dpY2FsT3IoUGksUS5jcmVhdGVBc3NpZ25tZW50KFBpLFEuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oKSkpO2lmKHh0KFMpKXt2YXIgQ3Q9US5nZXRMb2NhbE5hbWUoUywhMSwhMCk7UWk9US5jcmVhdGVBc3NpZ25tZW50KEN0LFFpKX12YXIgc2E9US5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFEuY3JlYXRlQ2FsbEV4cHJlc3Npb24oUS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFtRLmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFpyKV0sdm9pZCAwLGN0KFMsU2kpKSx2b2lkIDAsW1FpXSkpO3JldHVybiBlLnNldE9yaWdpbmFsTm9kZShzYSxTKSxiciYmKGUuc2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKHNhLHZvaWQgMCksZS5zZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzKHNhLHZvaWQgMCkpLGUuc2V0VGV4dFJhbmdlKHNhLFMpLGUuYWRkRW1pdEZsYWdzKHNhLHFlKSxDZS5wdXNoKHNhKSxDZS5wdXNoKFEuY3JlYXRlRW5kT2ZEZWNsYXJhdGlvbk1hcmtlcihTKSksQ2V9ZnVuY3Rpb24gY3QoUyxDZSl7dmFyIHFlPXE7cT1DZTt2YXIgYnI9W107TigpO3ZhciBacj1lLm1hcChTLm1lbWJlcnMsTGkpO3JldHVybiBlLmluc2VydFN0YXRlbWVudHNBZnRlclN0YW5kYXJkUHJvbG9ndWUoYnIsbSgpKSxlLmFkZFJhbmdlKGJyLFpyKSxxPXFlLFEuY3JlYXRlQmxvY2soZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVOb2RlQXJyYXkoYnIpLFMubWVtYmVycyksITApfWZ1bmN0aW9uIExpKFMpe3ZhciBDZT1adChTLCExKSxxZT1udChTKSxicj1RLmNyZWF0ZUFzc2lnbm1lbnQoUS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihxLENlKSxxZSksWnI9cWUua2luZD09PTEwP2JyOlEuY3JlYXRlQXNzaWdubWVudChRLmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKHEsYnIpLENlKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGUuc2V0VGV4dFJhbmdlKFpyLFMpKSxTKX1mdW5jdGlvbiBudChTKXt2YXIgQ2U9b2UuZ2V0Q29uc3RhbnRWYWx1ZShTKTtyZXR1cm4gQ2UhPT12b2lkIDA/dHlwZW9mIENlPT1cInN0cmluZ1wiP1EuY3JlYXRlU3RyaW5nTGl0ZXJhbChDZSk6US5jcmVhdGVOdW1lcmljTGl0ZXJhbChDZSk6KGJvKCksUy5pbml0aWFsaXplcj9lLnZpc2l0Tm9kZShTLmluaXRpYWxpemVyLFAsZS5pc0V4cHJlc3Npb24pOlEuY3JlYXRlVm9pZFplcm8oKSl9ZnVuY3Rpb24gTXQoUyl7dmFyIENlPWUuZ2V0UGFyc2VUcmVlTm9kZShTLGUuaXNNb2R1bGVEZWNsYXJhdGlvbik7cmV0dXJuIENlP2UuaXNJbnN0YW50aWF0ZWRNb2R1bGUoQ2UsZS5zaG91bGRQcmVzZXJ2ZUNvbnN0RW51bXMoZikpOiEwfWZ1bmN0aW9uIHh0KFMpe3JldHVybiBhaShTKXx8RG4oUykmJmIhPT1lLk1vZHVsZUtpbmQuRVMyMDE1JiZiIT09ZS5Nb2R1bGVLaW5kLkVTMjAyMCYmYiE9PWUuTW9kdWxlS2luZC5FUzIwMjImJmIhPT1lLk1vZHVsZUtpbmQuRVNOZXh0JiZiIT09ZS5Nb2R1bGVLaW5kLlN5c3RlbX1mdW5jdGlvbiB1dChTKXtlZXx8KGVlPW5ldyBlLk1hcCk7dmFyIENlPVJ0KFMpO2VlLmhhcyhDZSl8fGVlLnNldChDZSxTKX1mdW5jdGlvbiBEdChTKXtpZihlZSl7dmFyIENlPVJ0KFMpO3JldHVybiBlZS5nZXQoQ2UpPT09U31yZXR1cm4hMH1mdW5jdGlvbiBSdChTKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROb2RlKFMubmFtZSxlLmlzSWRlbnRpZmllciksUy5uYW1lLmVzY2FwZWRUZXh0fWZ1bmN0aW9uIElpKFMsQ2Upe3ZhciBxZT1RLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KGUudmlzaXROb2RlcyhDZS5tb2RpZmllcnMsRCxlLmlzTW9kaWZpZXIpLFEuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW1EuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihRLmdldExvY2FsTmFtZShDZSwhMSwhMCkpXSxPLmtpbmQ9PT0zMDU/MDoxKSk7aWYoZS5zZXRPcmlnaW5hbE5vZGUocWUsQ2UpLHV0KENlKSxEdChDZSkpcmV0dXJuIENlLmtpbmQ9PT0yNjA/ZS5zZXRTb3VyY2VNYXBSYW5nZShxZS5kZWNsYXJhdGlvbkxpc3QsQ2UpOmUuc2V0U291cmNlTWFwUmFuZ2UocWUsQ2UpLGUuc2V0Q29tbWVudFJhbmdlKHFlLENlKSxlLmFkZEVtaXRGbGFncyhxZSw0MTk1MzI4KSxTLnB1c2gocWUpLCEwO3ZhciBicj1RLmNyZWF0ZU1lcmdlRGVjbGFyYXRpb25NYXJrZXIocWUpO3JldHVybiBlLnNldEVtaXRGbGFncyhiciw0MTk1ODQwKSxTLnB1c2goYnIpLCExfWZ1bmN0aW9uIEtpKFMpe2lmKCFNdChTKSlyZXR1cm4gUS5jcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50KFMpO2UuRGVidWcuYXNzZXJ0Tm9kZShTLm5hbWUsZS5pc0lkZW50aWZpZXIsXCJBIFR5cGVTY3JpcHQgbmFtZXNwYWNlIHNob3VsZCBoYXZlIGFuIElkZW50aWZpZXIgbmFtZS5cIiksRW4oKTt2YXIgQ2U9W10scWU9Mixicj1JaShDZSxTKTticiYmKGIhPT1lLk1vZHVsZUtpbmQuU3lzdGVtfHxPIT09aWUpJiYocWV8PTUxMik7dmFyIFpyPUtuKFMpLFNpPVBuKFMpLFBpPWUuaGFzU3ludGFjdGljTW9kaWZpZXIoUywxKT9RLmdldEV4dGVybmFsTW9kdWxlT3JOYW1lc3BhY2VFeHBvcnROYW1lKHEsUywhMSwhMCk6US5nZXRMb2NhbE5hbWUoUywhMSwhMCksUWk9US5jcmVhdGVMb2dpY2FsT3IoUGksUS5jcmVhdGVBc3NpZ25tZW50KFBpLFEuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oKSkpO2lmKHh0KFMpKXt2YXIgQ3Q9US5nZXRMb2NhbE5hbWUoUywhMSwhMCk7UWk9US5jcmVhdGVBc3NpZ25tZW50KEN0LFFpKX12YXIgc2E9US5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFEuY3JlYXRlQ2FsbEV4cHJlc3Npb24oUS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFtRLmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFpyKV0sdm9pZCAwLEZpKFMsU2kpKSx2b2lkIDAsW1FpXSkpO3JldHVybiBlLnNldE9yaWdpbmFsTm9kZShzYSxTKSxiciYmKGUuc2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKHNhLHZvaWQgMCksZS5zZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzKHNhLHZvaWQgMCkpLGUuc2V0VGV4dFJhbmdlKHNhLFMpLGUuYWRkRW1pdEZsYWdzKHNhLHFlKSxDZS5wdXNoKHNhKSxDZS5wdXNoKFEuY3JlYXRlRW5kT2ZEZWNsYXJhdGlvbk1hcmtlcihTKSksQ2V9ZnVuY3Rpb24gRmkoUyxDZSl7dmFyIHFlPXEsYnI9Uixacj1lZTtxPUNlLFI9UyxlZT12b2lkIDA7dmFyIFNpPVtdO04oKTt2YXIgUGksUWk7aWYoUy5ib2R5KWlmKFMuYm9keS5raW5kPT09MjYyKVYoUy5ib2R5LGZ1bmN0aW9uKFdhKXtyZXR1cm4gZS5hZGRSYW5nZShTaSxlLnZpc2l0Tm9kZXMoV2Euc3RhdGVtZW50cyxILGUuaXNTdGF0ZW1lbnQpKX0pLFBpPVMuYm9keS5zdGF0ZW1lbnRzLFFpPVMuYm9keTtlbHNle3ZhciBDdD1LaShTLmJvZHkpO0N0JiYoZS5pc0FycmF5KEN0KT9lLmFkZFJhbmdlKFNpLEN0KTpTaS5wdXNoKEN0KSk7dmFyIHNhPXVpKFMpLmJvZHk7UGk9ZS5tb3ZlUmFuZ2VQb3Moc2Euc3RhdGVtZW50cywtMSl9ZS5pbnNlcnRTdGF0ZW1lbnRzQWZ0ZXJTdGFuZGFyZFByb2xvZ3VlKFNpLG0oKSkscT1xZSxSPWJyLGVlPVpyO3ZhciBlbj1RLmNyZWF0ZUJsb2NrKGUuc2V0VGV4dFJhbmdlKFEuY3JlYXRlTm9kZUFycmF5KFNpKSxQaSksITApO3JldHVybiBlLnNldFRleHRSYW5nZShlbixRaSksKCFTLmJvZHl8fFMuYm9keS5raW5kIT09MjYyKSYmZS5zZXRFbWl0RmxhZ3MoZW4sZS5nZXRFbWl0RmxhZ3MoZW4pfDE1MzYpLGVufWZ1bmN0aW9uIHVpKFMpe2lmKFMuYm9keS5raW5kPT09MjYxKXt2YXIgQ2U9dWkoUy5ib2R5KTtyZXR1cm4gQ2V8fFMuYm9keX19ZnVuY3Rpb24gQnQoUyl7aWYoIVMuaW1wb3J0Q2xhdXNlKXJldHVybiBTO2lmKCFTLmltcG9ydENsYXVzZS5pc1R5cGVPbmx5KXt2YXIgQ2U9ZS52aXNpdE5vZGUoUy5pbXBvcnRDbGF1c2Usd3QsZS5pc0ltcG9ydENsYXVzZSk7cmV0dXJuIENlfHxmLmltcG9ydHNOb3RVc2VkQXNWYWx1ZXM9PT0xfHxmLmltcG9ydHNOb3RVc2VkQXNWYWx1ZXM9PT0yP1EudXBkYXRlSW1wb3J0RGVjbGFyYXRpb24oUyx2b2lkIDAsdm9pZCAwLENlLFMubW9kdWxlU3BlY2lmaWVyLFMuYXNzZXJ0Q2xhdXNlKTp2b2lkIDB9fWZ1bmN0aW9uIHd0KFMpe2UuRGVidWcuYXNzZXJ0KCFTLmlzVHlwZU9ubHkpO3ZhciBDZT1HcihTKT9TLm5hbWU6dm9pZCAwLHFlPWUudmlzaXROb2RlKFMubmFtZWRCaW5kaW5ncyxuYSxlLmlzTmFtZWRJbXBvcnRCaW5kaW5ncyk7cmV0dXJuIENlfHxxZT9RLnVwZGF0ZUltcG9ydENsYXVzZShTLCExLENlLHFlKTp2b2lkIDB9ZnVuY3Rpb24gbmEoUyl7aWYoUy5raW5kPT09MjY4KXJldHVybiBHcihTKT9TOnZvaWQgMDt2YXIgQ2U9Zi5wcmVzZXJ2ZVZhbHVlSW1wb3J0cyYmKGYuaW1wb3J0c05vdFVzZWRBc1ZhbHVlcz09PTF8fGYuaW1wb3J0c05vdFVzZWRBc1ZhbHVlcz09PTIpLHFlPWUudmlzaXROb2RlcyhTLmVsZW1lbnRzLEFpLGUuaXNJbXBvcnRTcGVjaWZpZXIpO3JldHVybiBDZXx8ZS5zb21lKHFlKT9RLnVwZGF0ZU5hbWVkSW1wb3J0cyhTLHFlKTp2b2lkIDB9ZnVuY3Rpb24gQWkoUyl7cmV0dXJuIVMuaXNUeXBlT25seSYmR3IoUyk/Uzp2b2lkIDB9ZnVuY3Rpb24gT2koUyl7cmV0dXJuIG9lLmlzVmFsdWVBbGlhc0RlY2xhcmF0aW9uKFMpP2UudmlzaXRFYWNoQ2hpbGQoUyxQLEUpOnZvaWQgMH1mdW5jdGlvbiBqaShTKXtpZighUy5pc1R5cGVPbmx5KXtpZighUy5leHBvcnRDbGF1c2V8fGUuaXNOYW1lc3BhY2VFeHBvcnQoUy5leHBvcnRDbGF1c2UpKXJldHVybiBTO3ZhciBDZT0hIVMubW9kdWxlU3BlY2lmaWVyJiYoZi5pbXBvcnRzTm90VXNlZEFzVmFsdWVzPT09MXx8Zi5pbXBvcnRzTm90VXNlZEFzVmFsdWVzPT09MikscWU9ZS52aXNpdE5vZGUoUy5leHBvcnRDbGF1c2UsZnVuY3Rpb24oYnIpe3JldHVybiBBdChicixDZSl9LGUuaXNOYW1lZEV4cG9ydEJpbmRpbmdzKTtyZXR1cm4gcWU/US51cGRhdGVFeHBvcnREZWNsYXJhdGlvbihTLHZvaWQgMCx2b2lkIDAsUy5pc1R5cGVPbmx5LHFlLFMubW9kdWxlU3BlY2lmaWVyLFMuYXNzZXJ0Q2xhdXNlKTp2b2lkIDB9fWZ1bmN0aW9uIFZpKFMsQ2Upe3ZhciBxZT1lLnZpc2l0Tm9kZXMoUy5lbGVtZW50cyxiYSxlLmlzRXhwb3J0U3BlY2lmaWVyKTtyZXR1cm4gQ2V8fGUuc29tZShxZSk/US51cGRhdGVOYW1lZEV4cG9ydHMoUyxxZSk6dm9pZCAwfWZ1bmN0aW9uIGF0KFMpe3JldHVybiBRLnVwZGF0ZU5hbWVzcGFjZUV4cG9ydChTLGUudmlzaXROb2RlKFMubmFtZSxQLGUuaXNJZGVudGlmaWVyKSl9ZnVuY3Rpb24gQXQoUyxDZSl7cmV0dXJuIGUuaXNOYW1lc3BhY2VFeHBvcnQoUyk/YXQoUyk6VmkoUyxDZSl9ZnVuY3Rpb24gYmEoUyl7cmV0dXJuIVMuaXNUeXBlT25seSYmb2UuaXNWYWx1ZUFsaWFzRGVjbGFyYXRpb24oUyk/Uzp2b2lkIDB9ZnVuY3Rpb24gJGEoUyl7cmV0dXJuIEdyKFMpfHwhZS5pc0V4dGVybmFsTW9kdWxlKGllKSYmb2UuaXNUb3BMZXZlbFZhbHVlSW1wb3J0RXF1YWxzV2l0aEVudGl0eU5hbWUoUyl9ZnVuY3Rpb24gUWEoUyl7aWYoIVMuaXNUeXBlT25seSl7aWYoZS5pc0V4dGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oUykpe3ZhciBDZT1HcihTKTtyZXR1cm4hQ2UmJmYuaW1wb3J0c05vdFVzZWRBc1ZhbHVlcz09PTE/ZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxTLm1vZHVsZVJlZmVyZW5jZS5leHByZXNzaW9uLHZvaWQgMCksUyksUyk6Q2U/ZS52aXNpdEVhY2hDaGlsZChTLFAsRSk6dm9pZCAwfWlmKCEhJGEoUykpe3ZhciBxZT1lLmNyZWF0ZUV4cHJlc3Npb25Gcm9tRW50aXR5TmFtZShRLFMubW9kdWxlUmVmZXJlbmNlKTtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MocWUsMzU4NCksa2EoUyl8fCFhaShTKT9lLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShRLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KGUudmlzaXROb2RlcyhTLm1vZGlmaWVycyxELGUuaXNNb2RpZmllciksUS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbZS5zZXRPcmlnaW5hbE5vZGUoUS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKFMubmFtZSx2b2lkIDAsdm9pZCAwLHFlKSxTKV0pKSxTKSxTKTplLnNldE9yaWdpbmFsTm9kZShCaShTLm5hbWUscWUsUyksUyl9fX1mdW5jdGlvbiBhaShTKXtyZXR1cm4gUiE9PXZvaWQgMCYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihTLDEpfWZ1bmN0aW9uIERuKFMpe3JldHVybiBSPT09dm9pZCAwJiZlLmhhc1N5bnRhY3RpY01vZGlmaWVyKFMsMSl9ZnVuY3Rpb24ga2EoUyl7cmV0dXJuIERuKFMpJiYhZS5oYXNTeW50YWN0aWNNb2RpZmllcihTLDUxMil9ZnVuY3Rpb24gQmEoUyl7cmV0dXJuIERuKFMpJiZlLmhhc1N5bnRhY3RpY01vZGlmaWVyKFMsNTEyKX1mdW5jdGlvbiBwbihTKXtyZXR1cm4gUS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFMpfWZ1bmN0aW9uIENuKFMsQ2Upe3ZhciBxZT1RLmNyZWF0ZUFzc2lnbm1lbnQoUS5nZXRFeHRlcm5hbE1vZHVsZU9yTmFtZXNwYWNlRXhwb3J0TmFtZShxLENlLCExLCEwKSxRLmdldExvY2FsTmFtZShDZSkpO2Uuc2V0U291cmNlTWFwUmFuZ2UocWUsZS5jcmVhdGVSYW5nZShDZS5uYW1lP0NlLm5hbWUucG9zOkNlLnBvcyxDZS5lbmQpKTt2YXIgYnI9US5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHFlKTtlLnNldFNvdXJjZU1hcFJhbmdlKGJyLGUuY3JlYXRlUmFuZ2UoLTEsQ2UuZW5kKSksUy5wdXNoKGJyKX1mdW5jdGlvbiBCaShTLENlLHFlKXtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFEuY3JlYXRlQXNzaWdubWVudChRLmdldE5hbWVzcGFjZU1lbWJlck5hbWUocSxTLCExLCEwKSxDZSkpLHFlKX1mdW5jdGlvbiBrbihTLENlLHFlKXtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVBc3NpZ25tZW50KHhuKFMpLENlKSxxZSl9ZnVuY3Rpb24geG4oUyl7cmV0dXJuIFEuZ2V0TmFtZXNwYWNlTWVtYmVyTmFtZShxLFMsITEsITApfWZ1bmN0aW9uIEtuKFMpe3ZhciBDZT1RLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKFMpO3JldHVybiBlLnNldFNvdXJjZU1hcFJhbmdlKENlLFMubmFtZSksQ2V9ZnVuY3Rpb24gUG4oUyl7cmV0dXJuIFEuZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoUyl9ZnVuY3Rpb24gZW8oUyl7aWYob2UuZ2V0Tm9kZUNoZWNrRmxhZ3MoUykmMTY3NzcyMTYpe1JvKCk7dmFyIENlPVEuY3JlYXRlVW5pcXVlTmFtZShTLm5hbWUmJiFlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihTLm5hbWUpP2UuaWRUZXh0KFMubmFtZSk6XCJkZWZhdWx0XCIpO3JldHVybiB4W2UuZ2V0T3JpZ2luYWxOb2RlSWQoUyldPUNlLEcoQ2UpLENlfX1mdW5jdGlvbiBSbihTKXtyZXR1cm4gUS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUS5nZXREZWNsYXJhdGlvbk5hbWUoUyksXCJwcm90b3R5cGVcIil9ZnVuY3Rpb24gRGEoUyxDZSl7cmV0dXJuIGUuaXNTdGF0aWMoQ2UpP1EuZ2V0RGVjbGFyYXRpb25OYW1lKFMpOlJuKFMpfWZ1bmN0aW9uIGJvKCl7KEYmOCk9PT0wJiYoRnw9OCxFLmVuYWJsZVN1YnN0aXR1dGlvbig3OSkpfWZ1bmN0aW9uIFJvKCl7KEYmMSk9PT0wJiYoRnw9MSxFLmVuYWJsZVN1YnN0aXR1dGlvbig3OSkseD1bXSl9ZnVuY3Rpb24gRW4oKXsoRiYyKT09PTAmJihGfD0yLEUuZW5hYmxlU3Vic3RpdHV0aW9uKDc5KSxFLmVuYWJsZVN1YnN0aXR1dGlvbigyOTcpLEUuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigyNjEpKX1mdW5jdGlvbiBXbihTKXtyZXR1cm4gZS5nZXRPcmlnaW5hbE5vZGUoUykua2luZD09PTI2MX1mdW5jdGlvbiB0byhTKXtyZXR1cm4gZS5nZXRPcmlnaW5hbE5vZGUoUykua2luZD09PTI2MH1mdW5jdGlvbiBDbyhTLENlLHFlKXt2YXIgYnI9WCxacj1pZTtlLmlzU291cmNlRmlsZShDZSkmJihpZT1DZSksRiYyJiZXbihDZSkmJihYfD0yKSxGJjgmJnRvKENlKSYmKFh8PTgpLHNlKFMsQ2UscWUpLFg9YnIsaWU9WnJ9ZnVuY3Rpb24gS28oUyxDZSl7cmV0dXJuIENlPUooUyxDZSksUz09PTE/bm8oQ2UpOmUuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoQ2UpP09vKENlKTpDZX1mdW5jdGlvbiBPbyhTKXtpZihGJjIpe3ZhciBDZT1TLm5hbWUscWU9eGkoQ2UpO2lmKHFlKXtpZihTLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcil7dmFyIGJyPVEuY3JlYXRlQXNzaWdubWVudChxZSxTLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcik7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKFEuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KENlLGJyKSxTKX1yZXR1cm4gZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoQ2UscWUpLFMpfX1yZXR1cm4gU31mdW5jdGlvbiBubyhTKXtzd2l0Y2goUy5raW5kKXtjYXNlIDc5OnJldHVybiAkbyhTKTtjYXNlIDIwNjpyZXR1cm4gU3QoUyk7Y2FzZSAyMDc6cmV0dXJuIHBhKFMpfXJldHVybiBTfWZ1bmN0aW9uICRvKFMpe3JldHVybiBQcihTKXx8eGkoUyl8fFN9ZnVuY3Rpb24gUHIoUyl7aWYoRiYxJiZvZS5nZXROb2RlQ2hlY2tGbGFncyhTKSYzMzU1NDQzMil7dmFyIENlPW9lLmdldFJlZmVyZW5jZWRWYWx1ZURlY2xhcmF0aW9uKFMpO2lmKENlKXt2YXIgcWU9eFtDZS5pZF07aWYocWUpe3ZhciBicj1RLmNsb25lTm9kZShxZSk7cmV0dXJuIGUuc2V0U291cmNlTWFwUmFuZ2UoYnIsUyksZS5zZXRDb21tZW50UmFuZ2UoYnIsUyksYnJ9fX19ZnVuY3Rpb24geGkoUyl7aWYoRiZYJiYhZS5pc0dlbmVyYXRlZElkZW50aWZpZXIoUykmJiFlLmlzTG9jYWxOYW1lKFMpKXt2YXIgQ2U9b2UuZ2V0UmVmZXJlbmNlZEV4cG9ydENvbnRhaW5lcihTLCExKTtpZihDZSYmQ2Uua2luZCE9PTMwNSl7dmFyIHFlPVgmMiYmQ2Uua2luZD09PTI2MXx8WCY4JiZDZS5raW5kPT09MjYwO2lmKHFlKXJldHVybiBlLnNldFRleHRSYW5nZShRLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihRLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKENlKSxTKSxTKX19fWZ1bmN0aW9uIFN0KFMpe3JldHVybiBKbihTKX1mdW5jdGlvbiBwYShTKXtyZXR1cm4gSm4oUyl9ZnVuY3Rpb24gZG4oUyl7cmV0dXJuIFMucmVwbGFjZSgvXFwqXFwvL2csXCIqXy9cIil9ZnVuY3Rpb24gSm4oUyl7dmFyIENlPVFlKFMpO2lmKENlIT09dm9pZCAwKXtlLnNldENvbnN0YW50VmFsdWUoUyxDZSk7dmFyIHFlPXR5cGVvZiBDZT09XCJzdHJpbmdcIj9RLmNyZWF0ZVN0cmluZ0xpdGVyYWwoQ2UpOlEuY3JlYXRlTnVtZXJpY0xpdGVyYWwoQ2UpO2lmKCFmLnJlbW92ZUNvbW1lbnRzKXt2YXIgYnI9ZS5nZXRPcmlnaW5hbE5vZGUoUyxlLmlzQWNjZXNzRXhwcmVzc2lvbik7ZS5hZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQocWUsMyxcIiBcIi5jb25jYXQoZG4oZS5nZXRUZXh0T2ZOb2RlKGJyKSksXCIgXCIpKX1yZXR1cm4gcWV9cmV0dXJuIFN9ZnVuY3Rpb24gUWUoUyl7aWYoIWYuaXNvbGF0ZWRNb2R1bGVzKXJldHVybiBlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFMpfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oUyk/b2UuZ2V0Q29uc3RhbnRWYWx1ZShTKTp2b2lkIDB9ZnVuY3Rpb24gR3IoUyl7cmV0dXJuIGYucHJlc2VydmVWYWx1ZUltcG9ydHM/b2UuaXNWYWx1ZUFsaWFzRGVjbGFyYXRpb24oUyk6b2UuaXNSZWZlcmVuY2VkQWxpYXNEZWNsYXJhdGlvbihTKX19ZS50cmFuc2Zvcm1UeXBlU2NyaXB0PUJ9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24ocCl7cFtwLkNsYXNzQWxpYXNlcz0xXT1cIkNsYXNzQWxpYXNlc1wiLHBbcC5DbGFzc1N0YXRpY1RoaXNPclN1cGVyUmVmZXJlbmNlPTJdPVwiQ2xhc3NTdGF0aWNUaGlzT3JTdXBlclJlZmVyZW5jZVwifSkoYXx8KGE9e30pKTt2YXIgQzsoZnVuY3Rpb24ocCl7cC5GaWVsZD1cImZcIixwLk1ldGhvZD1cIm1cIixwLkFjY2Vzc29yPVwiYVwifSkoQz1lLlByaXZhdGVJZGVudGlmaWVyS2luZHx8KGUuUHJpdmF0ZUlkZW50aWZpZXJLaW5kPXt9KSk7dmFyIHc7KGZ1bmN0aW9uKHApe3BbcC5Ob25lPTBdPVwiTm9uZVwiLHBbcC5DbGFzc1dhc0RlY29yYXRlZD0xXT1cIkNsYXNzV2FzRGVjb3JhdGVkXCIscFtwLk5lZWRzQ2xhc3NDb25zdHJ1Y3RvclJlZmVyZW5jZT0yXT1cIk5lZWRzQ2xhc3NDb25zdHJ1Y3RvclJlZmVyZW5jZVwiLHBbcC5OZWVkc0NsYXNzU3VwZXJSZWZlcmVuY2U9NF09XCJOZWVkc0NsYXNzU3VwZXJSZWZlcmVuY2VcIixwW3AuTmVlZHNTdWJzdGl0dXRpb25Gb3JUaGlzSW5DbGFzc1N0YXRpY0ZpZWxkPThdPVwiTmVlZHNTdWJzdGl0dXRpb25Gb3JUaGlzSW5DbGFzc1N0YXRpY0ZpZWxkXCJ9KSh3fHwodz17fSkpO2Z1bmN0aW9uIEIocCl7dmFyIG09cC5mYWN0b3J5LEc9cC5ob2lzdFZhcmlhYmxlRGVjbGFyYXRpb24sb2U9cC5lbmRMZXhpY2FsRW52aXJvbm1lbnQsZj1wLnN0YXJ0TGV4aWNhbEVudmlyb25tZW50LFQ9cC5yZXN1bWVMZXhpY2FsRW52aXJvbm1lbnQsSz1wLmFkZEJsb2NrU2NvcGVkVmFyaWFibGUsYj1wLmdldEVtaXRSZXNvbHZlcigpLHNlPXAuZ2V0Q29tcGlsZXJPcHRpb25zKCksSj1lLmdldEVtaXRTY3JpcHRUYXJnZXQoc2UpLGllPWUuZ2V0VXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMoc2UpLFI9Sjw5LHE9Sjw5LE89cSYmSj49Mix2ZT1wLm9uU3Vic3RpdHV0ZU5vZGU7cC5vblN1YnN0aXR1dGVOb2RlPXFyO3ZhciBlZT1wLm9uRW1pdE5vZGU7cC5vbkVtaXROb2RlPW9yO3ZhciBoZSxGLHgsWCwkPVtdLEE9bmV3IGUuTWFwLHksVixMO3JldHVybiBlLmNoYWluQnVuZGxlKHAsUCk7ZnVuY3Rpb24gUChKZSl7dmFyIHhlPXAuZ2V0Q29tcGlsZXJPcHRpb25zKCk7aWYoSmUuaXNEZWNsYXJhdGlvbkZpbGV8fGllJiZlLmdldEVtaXRTY3JpcHRUYXJnZXQoeGUpPj05KXJldHVybiBKZTt2YXIgdnI9ZS52aXNpdEVhY2hDaGlsZChKZSxVLHApO3JldHVybiBlLmFkZEVtaXRIZWxwZXJzKHZyLHAucmVhZEVtaXRIZWxwZXJzKCkpLHZyfWZ1bmN0aW9uIGsoSmUseGUpe2lmKEplLnRyYW5zZm9ybUZsYWdzJjgzODg2MDgpc3dpdGNoKEplLmtpbmQpe2Nhc2UgMjI2OmNhc2UgMjU3OnJldHVybiBkZShKZSk7Y2FzZSAxNjc6cmV0dXJuIHVlKEplKTtjYXNlIDIzNzpyZXR1cm4gRChKZSk7Y2FzZSA4MDpyZXR1cm4gSShKZSk7Y2FzZSAxNzA6cmV0dXJuIEJyKEplKX1pZihKZS50cmFuc2Zvcm1GbGFncyY4Mzg4NjA4fHxKZS50cmFuc2Zvcm1GbGFncyYzMzU1NDQzMiYmTyYmTCYmeSlzd2l0Y2goSmUua2luZCl7Y2FzZSAyMTk6Y2FzZSAyMjA6cmV0dXJuIGdlKEplLHhlKTtjYXNlIDIyMTpyZXR1cm4gX2UoSmUseGUpO2Nhc2UgMjA4OnJldHVybiBIZShKZSk7Y2FzZSAyMTA6cmV0dXJuIHJyKEplKTtjYXNlIDIwNjpyZXR1cm4gWihKZSk7Y2FzZSAyMDc6cmV0dXJuIEJlKEplKTtjYXNlIDIzODpyZXR1cm4gemUoSmUpO2Nhc2UgMjQyOnJldHVybiBSZShKZSk7Y2FzZSAyNTY6Y2FzZSAyMTM6Y2FzZSAxNzE6Y2FzZSAxNjk6Y2FzZSAxNzI6Y2FzZSAxNzM6e3ZhciB2cj1MO0w9dm9pZCAwO3ZhciBtcj1lLnZpc2l0RWFjaENoaWxkKEplLFUscCk7cmV0dXJuIEw9dnIsbXJ9fXJldHVybiBlLnZpc2l0RWFjaENoaWxkKEplLFUscCl9ZnVuY3Rpb24gWShKZSl7cmV0dXJuIGsoSmUsITApfWZ1bmN0aW9uIFUoSmUpe3JldHVybiBrKEplLCExKX1mdW5jdGlvbiBqKEplKXtzd2l0Y2goSmUua2luZCl7Y2FzZSAyOTE6cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoSmUsaixwKTtjYXNlIDIyODpyZXR1cm4gaXIoSmUpfXJldHVybiBVKEplKX1mdW5jdGlvbiBIKEplKXtzd2l0Y2goSmUua2luZCl7Y2FzZSAyMDU6Y2FzZSAyMDQ6cmV0dXJuIFdyKEplKTtkZWZhdWx0OnJldHVybiBVKEplKX19ZnVuY3Rpb24gSShKZSl7cmV0dXJuIVJ8fGUuaXNTdGF0ZW1lbnQoSmUucGFyZW50KT9KZTplLnNldE9yaWdpbmFsTm9kZShtLmNyZWF0ZUlkZW50aWZpZXIoXCJcIiksSmUpfWZ1bmN0aW9uIGwoSmUpe2lmKCFSKXJldHVybiBKZTt2YXIgeGU9SmUubGVmdDtlLkRlYnVnLmFzc2VydE5vZGUoeGUsZS5pc1ByaXZhdGVJZGVudGlmaWVyKSxlLkRlYnVnLmFzc2VydChKZS5vcGVyYXRvclRva2VuLmtpbmQ9PT0xMDEpO3ZhciB2cj10aSh4ZSk7aWYodnIpe3ZhciBtcj1lLnZpc2l0Tm9kZShKZS5yaWdodCxVLGUuaXNFeHByZXNzaW9uKTtyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUocC5nZXRFbWl0SGVscGVyRmFjdG9yeSgpLmNyZWF0ZUNsYXNzUHJpdmF0ZUZpZWxkSW5IZWxwZXIodnIuYnJhbmRDaGVja0lkZW50aWZpZXIsbXIpLEplKX1yZXR1cm4gZS52aXNpdEVhY2hDaGlsZChKZSxVLHApfWZ1bmN0aW9uIGQoSmUpe3N3aXRjaChKZS5raW5kKXtjYXNlIDE3MTpyZXR1cm47Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxNjk6cmV0dXJuIGcoSmUpO2Nhc2UgMTY3OnJldHVybiB1ZShKZSk7Y2FzZSAxNjI6cmV0dXJuIGZlKEplKTtjYXNlIDIzNDpyZXR1cm4gSmU7ZGVmYXVsdDpyZXR1cm4gVShKZSl9fWZ1bmN0aW9uIEQoSmUpe3ZhciB4ZT1YO1g9W107dmFyIHZyPWUudmlzaXRFYWNoQ2hpbGQoSmUsVSxwKSxtcj1lLnNvbWUoWCk/VmUoW3ZyXSxYLCEwKTp2cjtyZXR1cm4gWD14ZSxtcn1mdW5jdGlvbiBmZShKZSl7dmFyIHhlPWUudmlzaXRFYWNoQ2hpbGQoSmUsVSxwKTtpZihlLnNvbWUoeCkpe3ZhciB2cj14O3ZyLnB1c2goeGUuZXhwcmVzc2lvbikseD1bXSx4ZT1tLnVwZGF0ZUNvbXB1dGVkUHJvcGVydHlOYW1lKHhlLG0uaW5saW5lRXhwcmVzc2lvbnModnIpKX1yZXR1cm4geGV9ZnVuY3Rpb24gZyhKZSl7aWYoZS5EZWJ1Zy5hc3NlcnQoIWUuc29tZShKZS5kZWNvcmF0b3JzKSksIVJ8fCFlLmlzUHJpdmF0ZUlkZW50aWZpZXIoSmUubmFtZSkpcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoSmUsZCxwKTt2YXIgeGU9dGkoSmUubmFtZSk7aWYoZS5EZWJ1Zy5hc3NlcnQoeGUsXCJVbmRlY2xhcmVkIHByaXZhdGUgbmFtZSBmb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCIpLCF4ZS5pc1ZhbGlkKXJldHVybiBKZTt2YXIgdnI9bmUoSmUpO3ZyJiZwaSgpLnB1c2gobS5jcmVhdGVBc3NpZ25tZW50KHZyLG0uY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGUuZmlsdGVyKEplLm1vZGlmaWVycyxmdW5jdGlvbihtcil7cmV0dXJuIWUuaXNTdGF0aWNNb2RpZmllcihtcil9KSxKZS5hc3Rlcmlza1Rva2VuLHZyLHZvaWQgMCxlLnZpc2l0UGFyYW1ldGVyTGlzdChKZS5wYXJhbWV0ZXJzLGQscCksdm9pZCAwLGUudmlzaXRGdW5jdGlvbkJvZHkoSmUuYm9keSxkLHApKSkpfWZ1bmN0aW9uIG5lKEplKXtlLkRlYnVnLmFzc2VydChlLmlzUHJpdmF0ZUlkZW50aWZpZXIoSmUubmFtZSkpO3ZhciB4ZT10aShKZS5uYW1lKTtpZihlLkRlYnVnLmFzc2VydCh4ZSxcIlVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbi5cIikseGUua2luZD09PVwibVwiKXJldHVybiB4ZS5tZXRob2ROYW1lO2lmKHhlLmtpbmQ9PT1cImFcIil7aWYoZS5pc0dldEFjY2Vzc29yKEplKSlyZXR1cm4geGUuZ2V0dGVyTmFtZTtpZihlLmlzU2V0QWNjZXNzb3IoSmUpKXJldHVybiB4ZS5zZXR0ZXJOYW1lfX1mdW5jdGlvbiB1ZShKZSl7aWYoZS5EZWJ1Zy5hc3NlcnQoIWUuc29tZShKZS5kZWNvcmF0b3JzKSksZS5pc1ByaXZhdGVJZGVudGlmaWVyKEplLm5hbWUpKXtpZighUilyZXR1cm4gZS5pc1N0YXRpYyhKZSk/ZS52aXNpdEVhY2hDaGlsZChKZSxVLHApOm0udXBkYXRlUHJvcGVydHlEZWNsYXJhdGlvbihKZSx2b2lkIDAsZS52aXNpdE5vZGVzKEplLm1vZGlmaWVycyxVLGUuaXNNb2RpZmllciksSmUubmFtZSx2b2lkIDAsdm9pZCAwLHZvaWQgMCk7dmFyIHhlPXRpKEplLm5hbWUpO2lmKGUuRGVidWcuYXNzZXJ0KHhlLFwiVW5kZWNsYXJlZCBwcml2YXRlIG5hbWUgZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uLlwiKSwheGUuaXNWYWxpZClyZXR1cm4gSmV9dmFyIHZyPWV0KEplLm5hbWUsISFKZS5pbml0aWFsaXplcnx8aWUpO2lmKHZyJiYhZS5pc1NpbXBsZUlubGluZWFibGVFeHByZXNzaW9uKHZyKSYmcGkoKS5wdXNoKHZyKSxlLmlzU3RhdGljKEplKSYmIVImJiFpZSl7dmFyIG1yPXVyKEplLG0uY3JlYXRlVGhpcygpKTtpZihtcil7dmFyIEFyPW0uY3JlYXRlQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsbS5jcmVhdGVCbG9jayhbbXJdKSk7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKEFyLEplKSxlLnNldENvbW1lbnRSYW5nZShBcixKZSksZS5zZXRDb21tZW50UmFuZ2UobXIse3BvczotMSxlbmQ6LTF9KSxlLnNldFN5bnRoZXRpY0xlYWRpbmdDb21tZW50cyhtcix2b2lkIDApLGUuc2V0U3ludGhldGljVHJhaWxpbmdDb21tZW50cyhtcix2b2lkIDApLEFyfX19ZnVuY3Rpb24gV2UoSmUseGUpe3JldHVybiBGZShKZSxlLnZpc2l0Tm9kZSh4ZSxVLGUuaXNFeHByZXNzaW9uKSl9ZnVuY3Rpb24gRmUoSmUseGUpe3N3aXRjaChlLnNldENvbW1lbnRSYW5nZSh4ZSxlLm1vdmVSYW5nZVBvcyh4ZSwtMSkpLEplLmtpbmQpe2Nhc2VcImFcIjpyZXR1cm4gcC5nZXRFbWl0SGVscGVyRmFjdG9yeSgpLmNyZWF0ZUNsYXNzUHJpdmF0ZUZpZWxkR2V0SGVscGVyKHhlLEplLmJyYW5kQ2hlY2tJZGVudGlmaWVyLEplLmtpbmQsSmUuZ2V0dGVyTmFtZSk7Y2FzZVwibVwiOnJldHVybiBwLmdldEVtaXRIZWxwZXJGYWN0b3J5KCkuY3JlYXRlQ2xhc3NQcml2YXRlRmllbGRHZXRIZWxwZXIoeGUsSmUuYnJhbmRDaGVja0lkZW50aWZpZXIsSmUua2luZCxKZS5tZXRob2ROYW1lKTtjYXNlXCJmXCI6cmV0dXJuIHAuZ2V0RW1pdEhlbHBlckZhY3RvcnkoKS5jcmVhdGVDbGFzc1ByaXZhdGVGaWVsZEdldEhlbHBlcih4ZSxKZS5icmFuZENoZWNrSWRlbnRpZmllcixKZS5raW5kLEplLnZhcmlhYmxlTmFtZSk7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKEplLFwiVW5rbm93biBwcml2YXRlIGVsZW1lbnQgdHlwZVwiKX19ZnVuY3Rpb24gWihKZSl7aWYoUiYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKEplLm5hbWUpKXt2YXIgeGU9dGkoSmUubmFtZSk7aWYoeGUpcmV0dXJuIGUuc2V0VGV4dFJhbmdlKGUuc2V0T3JpZ2luYWxOb2RlKFdlKHhlLEplLmV4cHJlc3Npb24pLEplKSxKZSl9aWYoTyYmZS5pc1N1cGVyUHJvcGVydHkoSmUpJiZlLmlzSWRlbnRpZmllcihKZS5uYW1lKSYmTCYmeSl7dmFyIHZyPXkuY2xhc3NDb25zdHJ1Y3Rvcixtcj15LnN1cGVyQ2xhc3NSZWZlcmVuY2UsQXI9eS5mYWN0cztpZihBciYxKXJldHVybiBwZShKZSk7aWYodnImJm1yKXt2YXIgT2U9bS5jcmVhdGVSZWZsZWN0R2V0Q2FsbChtcixtLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShKZS5uYW1lKSx2cik7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKE9lLEplLmV4cHJlc3Npb24pLGUuc2V0VGV4dFJhbmdlKE9lLEplLmV4cHJlc3Npb24pLE9lfX1yZXR1cm4gZS52aXNpdEVhY2hDaGlsZChKZSxVLHApfWZ1bmN0aW9uIEJlKEplKXtpZihPJiZlLmlzU3VwZXJQcm9wZXJ0eShKZSkmJkwmJnkpe3ZhciB4ZT15LmNsYXNzQ29uc3RydWN0b3IsdnI9eS5zdXBlckNsYXNzUmVmZXJlbmNlLG1yPXkuZmFjdHM7aWYobXImMSlyZXR1cm4gcGUoSmUpO2lmKHhlJiZ2cil7dmFyIEFyPW0uY3JlYXRlUmVmbGVjdEdldENhbGwodnIsZS52aXNpdE5vZGUoSmUuYXJndW1lbnRFeHByZXNzaW9uLFUsZS5pc0V4cHJlc3Npb24pLHhlKTtyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoQXIsSmUuZXhwcmVzc2lvbiksZS5zZXRUZXh0UmFuZ2UoQXIsSmUuZXhwcmVzc2lvbiksQXJ9fXJldHVybiBlLnZpc2l0RWFjaENoaWxkKEplLFUscCl9ZnVuY3Rpb24gZ2UoSmUseGUpe2lmKEplLm9wZXJhdG9yPT09NDV8fEplLm9wZXJhdG9yPT09NDYpe2lmKFImJmUuaXNQcml2YXRlSWRlbnRpZmllclByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihKZS5vcGVyYW5kKSl7dmFyIHZyPXZvaWQgMDtpZih2cj10aShKZS5vcGVyYW5kLm5hbWUpKXt2YXIgbXI9ZS52aXNpdE5vZGUoSmUub3BlcmFuZC5leHByZXNzaW9uLFUsZS5pc0V4cHJlc3Npb24pLEFyPUVlKG1yKSxPZT1Bci5yZWFkRXhwcmVzc2lvbixucj1Bci5pbml0aWFsaXplRXhwcmVzc2lvbixNcj1XZSh2cixPZSksUGU9ZS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihKZSl8fHhlP3ZvaWQgMDptLmNyZWF0ZVRlbXBWYXJpYWJsZShHKTtyZXR1cm4gTXI9ZS5leHBhbmRQcmVPclBvc3RmaXhJbmNyZW1lbnRPckRlY3JlbWVudEV4cHJlc3Npb24obSxKZSxNcixHLFBlKSxNcj13ZSh2cixucnx8T2UsTXIsNjMpLGUuc2V0T3JpZ2luYWxOb2RlKE1yLEplKSxlLnNldFRleHRSYW5nZShNcixKZSksUGUmJihNcj1tLmNyZWF0ZUNvbW1hKE1yLFBlKSxlLnNldFRleHRSYW5nZShNcixKZSkpLE1yfX1lbHNlIGlmKE8mJmUuaXNTdXBlclByb3BlcnR5KEplLm9wZXJhbmQpJiZMJiZ5KXt2YXIgVWU9eS5jbGFzc0NvbnN0cnVjdG9yLGZyPXkuc3VwZXJDbGFzc1JlZmVyZW5jZSxEZT15LmZhY3RzO2lmKERlJjEpe3ZhciBncj1wZShKZS5vcGVyYW5kKTtyZXR1cm4gZS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihKZSk/bS51cGRhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24oSmUsZ3IpOm0udXBkYXRlUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbihKZSxncil9aWYoVWUmJmZyKXt2YXIgVnI9dm9pZCAwLFRyPXZvaWQgMDtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEplLm9wZXJhbmQpP2UuaXNJZGVudGlmaWVyKEplLm9wZXJhbmQubmFtZSkmJihUcj1Wcj1tLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShKZS5vcGVyYW5kLm5hbWUpKTplLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24oSmUub3BlcmFuZC5hcmd1bWVudEV4cHJlc3Npb24pP1RyPVZyPUplLm9wZXJhbmQuYXJndW1lbnRFeHByZXNzaW9uOihUcj1tLmNyZWF0ZVRlbXBWYXJpYWJsZShHKSxWcj1tLmNyZWF0ZUFzc2lnbm1lbnQoVHIsZS52aXNpdE5vZGUoSmUub3BlcmFuZC5hcmd1bWVudEV4cHJlc3Npb24sVSxlLmlzRXhwcmVzc2lvbikpKSxWciYmVHIpe3ZhciBNcj1tLmNyZWF0ZVJlZmxlY3RHZXRDYWxsKGZyLFRyLFVlKTtlLnNldFRleHRSYW5nZShNcixKZS5vcGVyYW5kKTt2YXIgUGU9eGU/dm9pZCAwOm0uY3JlYXRlVGVtcFZhcmlhYmxlKEcpO3JldHVybiBNcj1lLmV4cGFuZFByZU9yUG9zdGZpeEluY3JlbWVudE9yRGVjcmVtZW50RXhwcmVzc2lvbihtLEplLE1yLEcsUGUpLE1yPW0uY3JlYXRlUmVmbGVjdFNldENhbGwoZnIsVnIsTXIsVWUpLGUuc2V0T3JpZ2luYWxOb2RlKE1yLEplKSxlLnNldFRleHRSYW5nZShNcixKZSksUGUmJihNcj1tLmNyZWF0ZUNvbW1hKE1yLFBlKSxlLnNldFRleHRSYW5nZShNcixKZSkpLE1yfX19fXJldHVybiBlLnZpc2l0RWFjaENoaWxkKEplLFUscCl9ZnVuY3Rpb24gUmUoSmUpe3JldHVybiBtLnVwZGF0ZUZvclN0YXRlbWVudChKZSxlLnZpc2l0Tm9kZShKZS5pbml0aWFsaXplcixZLGUuaXNGb3JJbml0aWFsaXplciksZS52aXNpdE5vZGUoSmUuY29uZGl0aW9uLFUsZS5pc0V4cHJlc3Npb24pLGUudmlzaXROb2RlKEplLmluY3JlbWVudG9yLFksZS5pc0V4cHJlc3Npb24pLGUudmlzaXRJdGVyYXRpb25Cb2R5KEplLnN0YXRlbWVudCxVLHApKX1mdW5jdGlvbiB6ZShKZSl7cmV0dXJuIG0udXBkYXRlRXhwcmVzc2lvblN0YXRlbWVudChKZSxlLnZpc2l0Tm9kZShKZS5leHByZXNzaW9uLFksZS5pc0V4cHJlc3Npb24pKX1mdW5jdGlvbiBFZShKZSl7dmFyIHhlPWUubm9kZUlzU3ludGhlc2l6ZWQoSmUpP0plOm0uY2xvbmVOb2RlKEplKTtpZihlLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24oSmUpKXJldHVybntyZWFkRXhwcmVzc2lvbjp4ZSxpbml0aWFsaXplRXhwcmVzc2lvbjp2b2lkIDB9O3ZhciB2cj1tLmNyZWF0ZVRlbXBWYXJpYWJsZShHKSxtcj1tLmNyZWF0ZUFzc2lnbm1lbnQodnIseGUpO3JldHVybntyZWFkRXhwcmVzc2lvbjp2cixpbml0aWFsaXplRXhwcmVzc2lvbjptcn19ZnVuY3Rpb24gSGUoSmUpe2lmKFImJmUuaXNQcml2YXRlSWRlbnRpZmllclByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihKZS5leHByZXNzaW9uKSl7dmFyIHhlPW0uY3JlYXRlQ2FsbEJpbmRpbmcoSmUuZXhwcmVzc2lvbixHLEopLHZyPXhlLnRoaXNBcmcsbXI9eGUudGFyZ2V0O3JldHVybiBlLmlzQ2FsbENoYWluKEplKT9tLnVwZGF0ZUNhbGxDaGFpbihKZSxtLmNyZWF0ZVByb3BlcnR5QWNjZXNzQ2hhaW4oZS52aXNpdE5vZGUobXIsVSksSmUucXVlc3Rpb25Eb3RUb2tlbixcImNhbGxcIiksdm9pZCAwLHZvaWQgMCxWZShbZS52aXNpdE5vZGUodnIsVSxlLmlzRXhwcmVzc2lvbildLGUudmlzaXROb2RlcyhKZS5hcmd1bWVudHMsVSxlLmlzRXhwcmVzc2lvbiksITApKTptLnVwZGF0ZUNhbGxFeHByZXNzaW9uKEplLG0uY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGUudmlzaXROb2RlKG1yLFUpLFwiY2FsbFwiKSx2b2lkIDAsVmUoW2UudmlzaXROb2RlKHZyLFUsZS5pc0V4cHJlc3Npb24pXSxlLnZpc2l0Tm9kZXMoSmUuYXJndW1lbnRzLFUsZS5pc0V4cHJlc3Npb24pLCEwKSl9aWYoTyYmZS5pc1N1cGVyUHJvcGVydHkoSmUuZXhwcmVzc2lvbikmJkwmJih5PT1udWxsP3ZvaWQgMDp5LmNsYXNzQ29uc3RydWN0b3IpKXt2YXIgQXI9bS5jcmVhdGVGdW5jdGlvbkNhbGxDYWxsKGUudmlzaXROb2RlKEplLmV4cHJlc3Npb24sVSxlLmlzRXhwcmVzc2lvbikseS5jbGFzc0NvbnN0cnVjdG9yLGUudmlzaXROb2RlcyhKZS5hcmd1bWVudHMsVSxlLmlzRXhwcmVzc2lvbikpO3JldHVybiBlLnNldE9yaWdpbmFsTm9kZShBcixKZSksZS5zZXRUZXh0UmFuZ2UoQXIsSmUpLEFyfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKEplLFUscCl9ZnVuY3Rpb24gcnIoSmUpe2lmKFImJmUuaXNQcml2YXRlSWRlbnRpZmllclByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihKZS50YWcpKXt2YXIgeGU9bS5jcmVhdGVDYWxsQmluZGluZyhKZS50YWcsRyxKKSx2cj14ZS50aGlzQXJnLG1yPXhlLnRhcmdldDtyZXR1cm4gbS51cGRhdGVUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oSmUsbS5jcmVhdGVDYWxsRXhwcmVzc2lvbihtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLnZpc2l0Tm9kZShtcixVKSxcImJpbmRcIiksdm9pZCAwLFtlLnZpc2l0Tm9kZSh2cixVLGUuaXNFeHByZXNzaW9uKV0pLHZvaWQgMCxlLnZpc2l0Tm9kZShKZS50ZW1wbGF0ZSxVLGUuaXNUZW1wbGF0ZUxpdGVyYWwpKX1pZihPJiZlLmlzU3VwZXJQcm9wZXJ0eShKZS50YWcpJiZMJiYoeT09bnVsbD92b2lkIDA6eS5jbGFzc0NvbnN0cnVjdG9yKSl7dmFyIEFyPW0uY3JlYXRlRnVuY3Rpb25CaW5kQ2FsbChlLnZpc2l0Tm9kZShKZS50YWcsVSxlLmlzRXhwcmVzc2lvbikseS5jbGFzc0NvbnN0cnVjdG9yLFtdKTtyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoQXIsSmUpLGUuc2V0VGV4dFJhbmdlKEFyLEplKSxtLnVwZGF0ZVRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbihKZSxBcix2b2lkIDAsZS52aXNpdE5vZGUoSmUudGVtcGxhdGUsVSxlLmlzVGVtcGxhdGVMaXRlcmFsKSl9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoSmUsVSxwKX1mdW5jdGlvbiBJZShKZSl7aWYoUil7eSYmQS5zZXQoZS5nZXRPcmlnaW5hbE5vZGVJZChKZSkseSksZigpO3ZhciB4ZT1MO0w9SmU7dmFyIHZyPWUudmlzaXROb2RlcyhKZS5ib2R5LnN0YXRlbWVudHMsVSxlLmlzU3RhdGVtZW50KTt2cj1tLm1lcmdlTGV4aWNhbEVudmlyb25tZW50KHZyLG9lKCkpLEw9eGU7dmFyIG1yPW0uY3JlYXRlSW1tZWRpYXRlbHlJbnZva2VkQXJyb3dGdW5jdGlvbih2cik7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKG1yLEplKSxlLnNldFRleHRSYW5nZShtcixKZSksZS5hZGRFbWl0RmxhZ3MobXIsMiksbXJ9fWZ1bmN0aW9uIF9lKEplLHhlKXtpZihlLmlzRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoSmUpKXt2YXIgdnI9eDt4PXZvaWQgMCxKZT1tLnVwZGF0ZUJpbmFyeUV4cHJlc3Npb24oSmUsZS52aXNpdE5vZGUoSmUubGVmdCxIKSxKZS5vcGVyYXRvclRva2VuLGUudmlzaXROb2RlKEplLnJpZ2h0LFUpKTt2YXIgbXI9ZS5zb21lKHgpP20uaW5saW5lRXhwcmVzc2lvbnMoZS5jb21wYWN0KFZlKFZlKFtdLHgsITApLFtKZV0sITEpKSk6SmU7cmV0dXJuIHg9dnIsbXJ9aWYoZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKEplKSl7aWYoUiYmZS5pc1ByaXZhdGVJZGVudGlmaWVyUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEplLmxlZnQpKXt2YXIgQXI9dGkoSmUubGVmdC5uYW1lKTtpZihBcilyZXR1cm4gZS5zZXRUZXh0UmFuZ2UoZS5zZXRPcmlnaW5hbE5vZGUod2UoQXIsSmUubGVmdC5leHByZXNzaW9uLEplLnJpZ2h0LEplLm9wZXJhdG9yVG9rZW4ua2luZCksSmUpLEplKX1lbHNlIGlmKE8mJmUuaXNTdXBlclByb3BlcnR5KEplLmxlZnQpJiZMJiZ5KXt2YXIgT2U9eS5jbGFzc0NvbnN0cnVjdG9yLG5yPXkuc3VwZXJDbGFzc1JlZmVyZW5jZSxNcj15LmZhY3RzO2lmKE1yJjEpcmV0dXJuIG0udXBkYXRlQmluYXJ5RXhwcmVzc2lvbihKZSxwZShKZS5sZWZ0KSxKZS5vcGVyYXRvclRva2VuLGUudmlzaXROb2RlKEplLnJpZ2h0LFUsZS5pc0V4cHJlc3Npb24pKTtpZihPZSYmbnIpe3ZhciBQZT1lLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oSmUubGVmdCk/ZS52aXNpdE5vZGUoSmUubGVmdC5hcmd1bWVudEV4cHJlc3Npb24sVSxlLmlzRXhwcmVzc2lvbik6ZS5pc0lkZW50aWZpZXIoSmUubGVmdC5uYW1lKT9tLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShKZS5sZWZ0Lm5hbWUpOnZvaWQgMDtpZihQZSl7dmFyIFVlPWUudmlzaXROb2RlKEplLnJpZ2h0LFUsZS5pc0V4cHJlc3Npb24pO2lmKGUuaXNDb21wb3VuZEFzc2lnbm1lbnQoSmUub3BlcmF0b3JUb2tlbi5raW5kKSl7dmFyIGZyPVBlO2UuaXNTaW1wbGVJbmxpbmVhYmxlRXhwcmVzc2lvbihQZSl8fChmcj1tLmNyZWF0ZVRlbXBWYXJpYWJsZShHKSxQZT1tLmNyZWF0ZUFzc2lnbm1lbnQoZnIsUGUpKTt2YXIgRGU9bS5jcmVhdGVSZWZsZWN0R2V0Q2FsbChucixmcixPZSk7ZS5zZXRPcmlnaW5hbE5vZGUoRGUsSmUubGVmdCksZS5zZXRUZXh0UmFuZ2UoRGUsSmUubGVmdCksVWU9bS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uKERlLGUuZ2V0Tm9uQXNzaWdubWVudE9wZXJhdG9yRm9yQ29tcG91bmRBc3NpZ25tZW50KEplLm9wZXJhdG9yVG9rZW4ua2luZCksVWUpLGUuc2V0VGV4dFJhbmdlKFVlLEplKX12YXIgZ3I9eGU/dm9pZCAwOm0uY3JlYXRlVGVtcFZhcmlhYmxlKEcpO3JldHVybiBnciYmKFVlPW0uY3JlYXRlQXNzaWdubWVudChncixVZSksZS5zZXRUZXh0UmFuZ2UoZ3IsSmUpKSxVZT1tLmNyZWF0ZVJlZmxlY3RTZXRDYWxsKG5yLFBlLFVlLE9lKSxlLnNldE9yaWdpbmFsTm9kZShVZSxKZSksZS5zZXRUZXh0UmFuZ2UoVWUsSmUpLGdyJiYoVWU9bS5jcmVhdGVDb21tYShVZSxnciksZS5zZXRUZXh0UmFuZ2UoVWUsSmUpKSxVZX19fX1yZXR1cm4gSmUub3BlcmF0b3JUb2tlbi5raW5kPT09MTAxJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIoSmUubGVmdCk/bChKZSk6ZS52aXNpdEVhY2hDaGlsZChKZSxVLHApfWZ1bmN0aW9uIHdlKEplLHhlLHZyLG1yKXtpZih4ZT1lLnZpc2l0Tm9kZSh4ZSxVLGUuaXNFeHByZXNzaW9uKSx2cj1lLnZpc2l0Tm9kZSh2cixVLGUuaXNFeHByZXNzaW9uKSxlLmlzQ29tcG91bmRBc3NpZ25tZW50KG1yKSl7dmFyIEFyPUVlKHhlKSxPZT1Bci5yZWFkRXhwcmVzc2lvbixucj1Bci5pbml0aWFsaXplRXhwcmVzc2lvbjt4ZT1ucnx8T2UsdnI9bS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uKEZlKEplLE9lKSxlLmdldE5vbkFzc2lnbm1lbnRPcGVyYXRvckZvckNvbXBvdW5kQXNzaWdubWVudChtciksdnIpfXN3aXRjaChlLnNldENvbW1lbnRSYW5nZSh4ZSxlLm1vdmVSYW5nZVBvcyh4ZSwtMSkpLEplLmtpbmQpe2Nhc2VcImFcIjpyZXR1cm4gcC5nZXRFbWl0SGVscGVyRmFjdG9yeSgpLmNyZWF0ZUNsYXNzUHJpdmF0ZUZpZWxkU2V0SGVscGVyKHhlLEplLmJyYW5kQ2hlY2tJZGVudGlmaWVyLHZyLEplLmtpbmQsSmUuc2V0dGVyTmFtZSk7Y2FzZVwibVwiOnJldHVybiBwLmdldEVtaXRIZWxwZXJGYWN0b3J5KCkuY3JlYXRlQ2xhc3NQcml2YXRlRmllbGRTZXRIZWxwZXIoeGUsSmUuYnJhbmRDaGVja0lkZW50aWZpZXIsdnIsSmUua2luZCx2b2lkIDApO2Nhc2VcImZcIjpyZXR1cm4gcC5nZXRFbWl0SGVscGVyRmFjdG9yeSgpLmNyZWF0ZUNsYXNzUHJpdmF0ZUZpZWxkU2V0SGVscGVyKHhlLEplLmJyYW5kQ2hlY2tJZGVudGlmaWVyLHZyLEplLmtpbmQsSmUudmFyaWFibGVOYW1lKTtkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoSmUsXCJVbmtub3duIHByaXZhdGUgZWxlbWVudCB0eXBlXCIpfX1mdW5jdGlvbiBkZShKZSl7aWYoIWUuZm9yRWFjaChKZS5tZW1iZXJzLHllKSlyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChKZSxVLHApO3ZhciB4ZT14O2lmKHg9dm9pZCAwLEdpKCksUil7dmFyIHZyPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oSmUpO3ZyJiZlLmlzSWRlbnRpZmllcih2cikmJihfcigpLmNsYXNzTmFtZT1lLmlkVGV4dCh2cikpO3ZhciBtcj1BZShKZSk7ZS5zb21lKG1yKSYmKF9yKCkud2Vha1NldE5hbWU9WGUoXCJpbnN0YW5jZXNcIixtclswXS5uYW1lKSl9dmFyIEFyPWUuaXNDbGFzc0RlY2xhcmF0aW9uKEplKT9DcihKZSk6WWUoSmUpO3JldHVybiBXdCgpLHg9eGUsQXJ9ZnVuY3Rpb24geWUoSmUpe3JldHVybiBlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihKZSl8fGUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oSmUpfHxSJiZKZS5uYW1lJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIoSmUubmFtZSl9ZnVuY3Rpb24gQWUoSmUpe3JldHVybiBlLmZpbHRlcihKZS5tZW1iZXJzLGUuaXNOb25TdGF0aWNNZXRob2RPckFjY2Vzc29yV2l0aFByaXZhdGVOYW1lKX1mdW5jdGlvbiBlcihKZSl7dmFyIHhlPTAsdnI9ZS5nZXRPcmlnaW5hbE5vZGUoSmUpO2UuaXNDbGFzc0RlY2xhcmF0aW9uKHZyKSYmZS5jbGFzc09yQ29uc3RydWN0b3JQYXJhbWV0ZXJJc0RlY29yYXRlZCh2cikmJih4ZXw9MSk7Zm9yKHZhciBtcj0wLEFyPUplLm1lbWJlcnM7bXI8QXIubGVuZ3RoO21yKyspe3ZhciBPZT1Bclttcl07IWUuaXNTdGF0aWMoT2UpfHwoT2UubmFtZSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKE9lLm5hbWUpJiZSJiYoeGV8PTIpLChlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihPZSl8fGUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oT2UpKSYmKHEmJk9lLnRyYW5zZm9ybUZsYWdzJjgxOTImJih4ZXw9OCx4ZSYxfHwoeGV8PTIpKSxPJiZPZS50cmFuc2Zvcm1GbGFncyYzMzU1NDQzMiYmKHhlJjF8fCh4ZXw9NikpKSl9cmV0dXJuIHhlfWZ1bmN0aW9uIGlyKEplKXt2YXIgeGU9KHk9PW51bGw/dm9pZCAwOnkuZmFjdHMpfHwwO2lmKHhlJjQpe3ZhciB2cj1tLmNyZWF0ZVRlbXBWYXJpYWJsZShHLCEwKTtyZXR1cm4gWnQoKS5zdXBlckNsYXNzUmVmZXJlbmNlPXZyLG0udXBkYXRlRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKEplLG0uY3JlYXRlQXNzaWdubWVudCh2cixlLnZpc2l0Tm9kZShKZS5leHByZXNzaW9uLFUsZS5pc0V4cHJlc3Npb24pKSx2b2lkIDApfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKEplLFUscCl9ZnVuY3Rpb24gQ3IoSmUpe3ZhciB4ZT1lcihKZSk7eGUmJihadCgpLmZhY3RzPXhlKSx4ZSY4JiZpaSgpO3ZhciB2cjtpZih4ZSYyKXt2YXIgbXI9bS5jcmVhdGVUZW1wVmFyaWFibGUoRywhMCk7WnQoKS5jbGFzc0NvbnN0cnVjdG9yPW0uY2xvbmVOb2RlKG1yKSx2cj1tLmNyZWF0ZUFzc2lnbm1lbnQobXIsbS5nZXRJbnRlcm5hbE5hbWUoSmUpKX12YXIgQXI9ZS5nZXRFZmZlY3RpdmVCYXNlVHlwZU5vZGUoSmUpLE9lPSEhKEFyJiZlLnNraXBPdXRlckV4cHJlc3Npb25zKEFyLmV4cHJlc3Npb24pLmtpbmQhPT0xMDQpLG5yPVttLnVwZGF0ZUNsYXNzRGVjbGFyYXRpb24oSmUsdm9pZCAwLEplLm1vZGlmaWVycyxKZS5uYW1lLHZvaWQgMCxlLnZpc2l0Tm9kZXMoSmUuaGVyaXRhZ2VDbGF1c2VzLGosZS5pc0hlcml0YWdlQ2xhdXNlKSxFcihKZSxPZSkpXTt2ciYmcGkoKS51bnNoaWZ0KHZyKSxlLnNvbWUoeCkmJm5yLnB1c2gobS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uaW5saW5lRXhwcmVzc2lvbnMoeCkpKTt2YXIgTXI9ZS5nZXRTdGF0aWNQcm9wZXJ0aWVzQW5kQ2xhc3NTdGF0aWNCbG9jayhKZSk7cmV0dXJuIGUuc29tZShNcikmJkdlKG5yLE1yLG0uZ2V0SW50ZXJuYWxOYW1lKEplKSksbnJ9ZnVuY3Rpb24gWWUoSmUpe3ZhciB4ZT1lcihKZSk7eGUmJihadCgpLmZhY3RzPXhlKSx4ZSY4JiZpaSgpO3ZhciB2cj0hISh4ZSYxKSxtcj1lLmdldFN0YXRpY1Byb3BlcnRpZXNBbmRDbGFzc1N0YXRpY0Jsb2NrKEplKSxBcj1lLmdldEVmZmVjdGl2ZUJhc2VUeXBlTm9kZShKZSksT2U9ISEoQXImJmUuc2tpcE91dGVyRXhwcmVzc2lvbnMoQXIuZXhwcmVzc2lvbikua2luZCE9PTEwNCksbnI9Yi5nZXROb2RlQ2hlY2tGbGFncyhKZSkmMTY3NzcyMTYsTXI7ZnVuY3Rpb24gUGUoKXt2YXIgVnI9Yi5nZXROb2RlQ2hlY2tGbGFncyhKZSksVHI9VnImMTY3NzcyMTYsdmk9VnImNTI0Mjg4O3JldHVybiBtLmNyZWF0ZVRlbXBWYXJpYWJsZSh2aT9LOkcsISFUcil9eGUmMiYmKE1yPVBlKCksWnQoKS5jbGFzc0NvbnN0cnVjdG9yPW0uY2xvbmVOb2RlKE1yKSk7dmFyIFVlPW0udXBkYXRlQ2xhc3NFeHByZXNzaW9uKEplLGUudmlzaXROb2RlcyhKZS5kZWNvcmF0b3JzLFUsZS5pc0RlY29yYXRvciksSmUubW9kaWZpZXJzLEplLm5hbWUsdm9pZCAwLGUudmlzaXROb2RlcyhKZS5oZXJpdGFnZUNsYXVzZXMsaixlLmlzSGVyaXRhZ2VDbGF1c2UpLEVyKEplLE9lKSksZnI9UiYmZS5zb21lKG1yLGZ1bmN0aW9uKFZyKXtyZXR1cm4gZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihWcil8fCEhVnIuaW5pdGlhbGl6ZXJ8fGUuaXNQcml2YXRlSWRlbnRpZmllcihWci5uYW1lKX0pO2lmKGZyfHxlLnNvbWUoeCkpe2lmKHZyKXJldHVybiBlLkRlYnVnLmFzc2VydElzRGVmaW5lZChYLFwiRGVjb3JhdGVkIGNsYXNzZXMgdHJhbnNmb3JtZWQgYnkgVHlwZVNjcmlwdCBhcmUgZXhwZWN0ZWQgdG8gYmUgd2l0aGluIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXCIpLFgmJngmJmUuc29tZSh4KSYmWC5wdXNoKG0uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChtLmlubGluZUV4cHJlc3Npb25zKHgpKSksWCYmZS5zb21lKG1yKSYmR2UoWCxtcixtLmdldEludGVybmFsTmFtZShKZSkpLE1yP20uaW5saW5lRXhwcmVzc2lvbnMoW20uY3JlYXRlQXNzaWdubWVudChNcixVZSksTXJdKTpVZTt2YXIgRGU9W107aWYoTXJ8fChNcj1QZSgpKSxucil7VXIoKTt2YXIgZ3I9bS5jbG9uZU5vZGUoTXIpO2dyLmF1dG9HZW5lcmF0ZUZsYWdzJj0tOSxGW2UuZ2V0T3JpZ2luYWxOb2RlSWQoSmUpXT1ncn1yZXR1cm4gZS5zZXRFbWl0RmxhZ3MoVWUsNjU1MzZ8ZS5nZXRFbWl0RmxhZ3MoVWUpKSxEZS5wdXNoKGUuc3RhcnRPbk5ld0xpbmUobS5jcmVhdGVBc3NpZ25tZW50KE1yLFVlKSkpLGUuYWRkUmFuZ2UoRGUsZS5tYXAoeCxlLnN0YXJ0T25OZXdMaW5lKSksZS5hZGRSYW5nZShEZSx5cihtcixNcikpLERlLnB1c2goZS5zdGFydE9uTmV3TGluZShNcikpLG0uaW5saW5lRXhwcmVzc2lvbnMoRGUpfXJldHVybiBVZX1mdW5jdGlvbiBCcihKZSl7aWYoIVIpcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoSmUsZCxwKX1mdW5jdGlvbiBFcihKZSx4ZSl7dmFyIHZyPVtdO2lmKFIpe2Zvcih2YXIgbXI9MCxBcj1KZS5tZW1iZXJzO21yPEFyLmxlbmd0aDttcisrKXt2YXIgT2U9QXJbbXJdO2UuaXNQcml2YXRlSWRlbnRpZmllckNsYXNzRWxlbWVudERlY2xhcmF0aW9uKE9lKSYmYWUoT2UpfWUuc29tZShBZShKZSkpJiZOZSgpfXZhciBucj1scihKZSx4ZSksTXI9ZS52aXNpdE5vZGVzKEplLm1lbWJlcnMsZCxlLmlzQ2xhc3NFbGVtZW50KTtyZXR1cm4gbnImJnZyLnB1c2gobnIpLCFSJiZlLnNvbWUoeCkmJih2ci5wdXNoKG0uY3JlYXRlQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsbS5jcmVhdGVCbG9jayhbbS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uaW5saW5lRXhwcmVzc2lvbnMoeCkpXSkpKSx4PXZvaWQgMCksZS5hZGRSYW5nZSh2cixNciksZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVOb2RlQXJyYXkodnIpLEplLm1lbWJlcnMpfWZ1bmN0aW9uIE5lKCl7dmFyIEplPV9yKCkud2Vha1NldE5hbWU7ZS5EZWJ1Zy5hc3NlcnQoSmUsXCJ3ZWFrU2V0TmFtZSBzaG91bGQgYmUgc2V0IGluIHByaXZhdGUgaWRlbnRpZmllciBlbnZpcm9ubWVudFwiKSxwaSgpLnB1c2gobS5jcmVhdGVBc3NpZ25tZW50KEplLG0uY3JlYXRlTmV3RXhwcmVzc2lvbihtLmNyZWF0ZUlkZW50aWZpZXIoXCJXZWFrU2V0XCIpLHZvaWQgMCxbXSkpKX1mdW5jdGlvbiBuKEplKXtyZXR1cm4gZS5pc1N0YXRpYyhKZSl8fGUuaGFzU3ludGFjdGljTW9kaWZpZXIoZS5nZXRPcmlnaW5hbE5vZGUoSmUpLDEyOCk/ITE6aWU/Sjw5OmUuaXNJbml0aWFsaXplZFByb3BlcnR5KEplKXx8UiYmZS5pc1ByaXZhdGVJZGVudGlmaWVyQ2xhc3NFbGVtZW50RGVjbGFyYXRpb24oSmUpfWZ1bmN0aW9uIGxyKEplLHhlKXt2YXIgdnI9ZS52aXNpdE5vZGUoZS5nZXRGaXJzdENvbnN0cnVjdG9yV2l0aEJvZHkoSmUpLFUsZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24pLG1yPUplLm1lbWJlcnMuZmlsdGVyKG4pO2lmKCFlLnNvbWUobXIpKXJldHVybiB2cjt2YXIgQXI9ZS52aXNpdFBhcmFtZXRlckxpc3QodnI/dnIucGFyYW1ldGVyczp2b2lkIDAsVSxwKSxPZT1iZShKZSx2cix4ZSk7aWYoISFPZSlyZXR1cm4gZS5zdGFydE9uTmV3TGluZShlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShtLmNyZWF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxBciE9bnVsbD9BcjpbXSxPZSksdnJ8fEplKSx2cikpfWZ1bmN0aW9uIGJlKEplLHhlLHZyKXt2YXIgbXIsQXI9ZS5nZXRQcm9wZXJ0aWVzKEplLCExLCExKTtpZXx8KEFyPWUuZmlsdGVyKEFyLGZ1bmN0aW9uKExpKXtyZXR1cm4hIUxpLmluaXRpYWxpemVyfHxlLmlzUHJpdmF0ZUlkZW50aWZpZXIoTGkubmFtZSl9KSk7dmFyIE9lPUFlKEplKSxucj1lLnNvbWUoQXIpfHxlLnNvbWUoT2UpO2lmKCF4ZSYmIW5yKXJldHVybiBlLnZpc2l0RnVuY3Rpb25Cb2R5KHZvaWQgMCxVLHApO1QoKTt2YXIgTXI9IXhlJiZ2cixQZT0wLFVlPTAsZnI9LTEsRGU9W107ISgobXI9eGU9PW51bGw/dm9pZCAwOnhlLmJvZHkpPT09bnVsbHx8bXI9PT12b2lkIDApJiZtci5zdGF0ZW1lbnRzJiYoVWU9bS5jb3B5UHJvbG9ndWUoeGUuYm9keS5zdGF0ZW1lbnRzLERlLCExLFUpLGZyPWUuZmluZFN1cGVyU3RhdGVtZW50SW5kZXgoeGUuYm9keS5zdGF0ZW1lbnRzLFVlKSxmcj49MD8oUGU9ZnIrMSxEZT1WZShWZShWZShbXSxEZS5zbGljZSgwLFVlKSwhMCksZS52aXNpdE5vZGVzKHhlLmJvZHkuc3RhdGVtZW50cyxVLGUuaXNTdGF0ZW1lbnQsVWUsUGUtVWUpLCEwKSxEZS5zbGljZShVZSksITApKTpVZT49MCYmKFBlPVVlKSksTXImJkRlLnB1c2gobS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uY3JlYXRlQ2FsbEV4cHJlc3Npb24obS5jcmVhdGVTdXBlcigpLHZvaWQgMCxbbS5jcmVhdGVTcHJlYWRFbGVtZW50KG0uY3JlYXRlSWRlbnRpZmllcihcImFyZ3VtZW50c1wiKSldKSkpO3ZhciBncj0wO2lmKHhlIT1udWxsJiZ4ZS5ib2R5KWlmKGllKURlPURlLmZpbHRlcihmdW5jdGlvbihMaSl7cmV0dXJuIWUuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKGUuZ2V0T3JpZ2luYWxOb2RlKExpKSx4ZSl9KTtlbHNle2Zvcih2YXIgVnI9MCxUcj14ZS5ib2R5LnN0YXRlbWVudHM7VnI8VHIubGVuZ3RoO1ZyKyspe3ZhciB2aT1UcltWcl07ZS5pc1BhcmFtZXRlclByb3BlcnR5RGVjbGFyYXRpb24oZS5nZXRPcmlnaW5hbE5vZGUodmkpLHhlKSYmZ3IrK31pZihncj4wKXt2YXIgVWk9ZS52aXNpdE5vZGVzKHhlLmJvZHkuc3RhdGVtZW50cyxVLGUuaXNTdGF0ZW1lbnQsUGUsZ3IpO2lmKGZyPj0wKWUuYWRkUmFuZ2UoRGUsVWkpO2Vsc2V7dmFyIFlpPVVlO01yJiZZaSsrLERlPVZlKFZlKFZlKFtdLERlLnNsaWNlKDAsWWkpLCEwKSxVaSwhMCksRGUuc2xpY2UoWWkpLCEwKX1QZSs9Z3J9fXZhciBXaT1tLmNyZWF0ZVRoaXMoKTtyZXR1cm4gbWkoRGUsT2UsV2kpLEdlKERlLEFyLFdpKSx4ZSYmZS5hZGRSYW5nZShEZSxlLnZpc2l0Tm9kZXMoeGUuYm9keS5zdGF0ZW1lbnRzLGN0LGUuaXNTdGF0ZW1lbnQsUGUpKSxEZT1tLm1lcmdlTGV4aWNhbEVudmlyb25tZW50KERlLG9lKCkpLGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlQmxvY2soZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVOb2RlQXJyYXkoRGUpLHhlP3hlLmJvZHkuc3RhdGVtZW50czpKZS5tZW1iZXJzKSwhMCkseGU/eGUuYm9keTp2b2lkIDApO2Z1bmN0aW9uIGN0KExpKXtpZighKGllJiZlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihlLmdldE9yaWdpbmFsTm9kZShMaSkseGUpKSlyZXR1cm4gVShMaSl9fWZ1bmN0aW9uIEdlKEplLHhlLHZyKXtmb3IodmFyIG1yPTAsQXI9eGU7bXI8QXIubGVuZ3RoO21yKyspe3ZhciBPZT1Bclttcl07aWYoIShlLmlzU3RhdGljKE9lKSYmIVImJiFpZSkpe3ZhciBucj11cihPZSx2cik7IW5yfHxKZS5wdXNoKG5yKX19fWZ1bmN0aW9uIHVyKEplLHhlKXt2YXIgdnI9ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihKZSk/SWUoSmUpOklyKEplLHhlKTtpZighIXZyKXt2YXIgbXI9bS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHZyKTtyZXR1cm4gZS5zZXRTb3VyY2VNYXBSYW5nZShtcixlLm1vdmVSYW5nZVBhc3RNb2RpZmllcnMoSmUpKSxlLnNldENvbW1lbnRSYW5nZShtcixKZSksZS5zZXRPcmlnaW5hbE5vZGUobXIsSmUpLGUuc2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKHZyLHZvaWQgMCksZS5zZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzKHZyLHZvaWQgMCksbXJ9fWZ1bmN0aW9uIHlyKEplLHhlKXtmb3IodmFyIHZyPVtdLG1yPTAsQXI9SmU7bXI8QXIubGVuZ3RoO21yKyspe3ZhciBPZT1Bclttcl0sbnI9ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihPZSk/SWUoT2UpOklyKE9lLHhlKTshbnJ8fChlLnN0YXJ0T25OZXdMaW5lKG5yKSxlLnNldFNvdXJjZU1hcFJhbmdlKG5yLGUubW92ZVJhbmdlUGFzdE1vZGlmaWVycyhPZSkpLGUuc2V0Q29tbWVudFJhbmdlKG5yLE9lKSxlLnNldE9yaWdpbmFsTm9kZShucixPZSksdnIucHVzaChucikpfXJldHVybiB2cn1mdW5jdGlvbiBJcihKZSx4ZSl7dmFyIHZyPUwsbXI9d3IoSmUseGUpO3JldHVybiBtciYmZS5oYXNTdGF0aWNNb2RpZmllcihKZSkmJih5PT1udWxsP3ZvaWQgMDp5LmZhY3RzKSYmKGUuc2V0T3JpZ2luYWxOb2RlKG1yLEplKSxlLmFkZEVtaXRGbGFncyhtciwyKSxBLnNldChlLmdldE9yaWdpbmFsTm9kZUlkKG1yKSx5KSksTD12cixtcn1mdW5jdGlvbiB3cihKZSx4ZSl7dmFyIHZyLG1yPSFpZSxBcj1lLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoSmUubmFtZSkmJiFlLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24oSmUubmFtZS5leHByZXNzaW9uKT9tLnVwZGF0ZUNvbXB1dGVkUHJvcGVydHlOYW1lKEplLm5hbWUsbS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShKZS5uYW1lKSk6SmUubmFtZTtpZihlLmhhc1N0YXRpY01vZGlmaWVyKEplKSYmKEw9SmUpLFImJmUuaXNQcml2YXRlSWRlbnRpZmllcihBcikpe3ZhciBPZT10aShBcik7aWYoT2UpcmV0dXJuIE9lLmtpbmQ9PT1cImZcIj9PZS5pc1N0YXRpYz9FKE9lLnZhcmlhYmxlTmFtZSxlLnZpc2l0Tm9kZShKZS5pbml0aWFsaXplcixVLGUuaXNFeHByZXNzaW9uKSk6USh4ZSxlLnZpc2l0Tm9kZShKZS5pbml0aWFsaXplcixVLGUuaXNFeHByZXNzaW9uKSxPZS5icmFuZENoZWNrSWRlbnRpZmllcik6dm9pZCAwO2UuRGVidWcuZmFpbChcIlVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbi5cIil9aWYoISgoZS5pc1ByaXZhdGVJZGVudGlmaWVyKEFyKXx8ZS5oYXNTdGF0aWNNb2RpZmllcihKZSkpJiYhSmUuaW5pdGlhbGl6ZXIpKXt2YXIgbnI9ZS5nZXRPcmlnaW5hbE5vZGUoSmUpO2lmKCFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKG5yLDEyOCkpe3ZhciBNcj1KZS5pbml0aWFsaXplcnx8bXI/KHZyPWUudmlzaXROb2RlKEplLmluaXRpYWxpemVyLFUsZS5pc0V4cHJlc3Npb24pKSE9PW51bGwmJnZyIT09dm9pZCAwP3ZyOm0uY3JlYXRlVm9pZFplcm8oKTplLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihucixuci5wYXJlbnQpJiZlLmlzSWRlbnRpZmllcihBcik/QXI6bS5jcmVhdGVWb2lkWmVybygpO2lmKG1yfHxlLmlzUHJpdmF0ZUlkZW50aWZpZXIoQXIpKXt2YXIgUGU9ZS5jcmVhdGVNZW1iZXJBY2Nlc3NGb3JQcm9wZXJ0eU5hbWUobSx4ZSxBcixBcik7cmV0dXJuIG0uY3JlYXRlQXNzaWdubWVudChQZSxNcil9ZWxzZXt2YXIgVWU9ZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKEFyKT9Bci5leHByZXNzaW9uOmUuaXNJZGVudGlmaWVyKEFyKT9tLmNyZWF0ZVN0cmluZ0xpdGVyYWwoZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhBci5lc2NhcGVkVGV4dCkpOkFyLGZyPW0uY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKHt2YWx1ZTpNcixjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMH0pO3JldHVybiBtLmNyZWF0ZU9iamVjdERlZmluZVByb3BlcnR5Q2FsbCh4ZSxVZSxmcil9fX19ZnVuY3Rpb24gVXIoKXsoaGUmMSk9PT0wJiYoaGV8PTEscC5lbmFibGVTdWJzdGl0dXRpb24oNzkpLEY9W10pfWZ1bmN0aW9uIGlpKCl7KGhlJjIpPT09MCYmKGhlfD0yLHAuZW5hYmxlU3Vic3RpdHV0aW9uKDEwOCkscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDI1NikscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDIxMykscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE3MSkscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE3MikscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE3MykscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE2OSkscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE2NykscC5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE2MikpfWZ1bmN0aW9uIG1pKEplLHhlLHZyKXtpZighKCFSfHwhZS5zb21lKHhlKSkpe3ZhciBtcj1fcigpLndlYWtTZXROYW1lO2UuRGVidWcuYXNzZXJ0KG1yLFwid2Vha1NldE5hbWUgc2hvdWxkIGJlIHNldCBpbiBwcml2YXRlIGlkZW50aWZpZXIgZW52aXJvbm1lbnRcIiksSmUucHVzaChtLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQobGUodnIsbXIpKSl9fWZ1bmN0aW9uIHBlKEplKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihKZSk/bS51cGRhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oSmUsbS5jcmVhdGVWb2lkWmVybygpLEplLm5hbWUpOm0udXBkYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oSmUsbS5jcmVhdGVWb2lkWmVybygpLGUudmlzaXROb2RlKEplLmFyZ3VtZW50RXhwcmVzc2lvbixVLGUuaXNFeHByZXNzaW9uKSl9ZnVuY3Rpb24gb3IoSmUseGUsdnIpe3ZhciBtcj1lLmdldE9yaWdpbmFsTm9kZSh4ZSk7aWYobXIuaWQpe3ZhciBBcj1BLmdldChtci5pZCk7aWYoQXIpe3ZhciBPZT15LG5yPVY7eT1BcixWPUFyLGVlKEplLHhlLHZyKSx5PU9lLFY9bnI7cmV0dXJufX1zd2l0Y2goeGUua2luZCl7Y2FzZSAyMTM6aWYoZS5pc0Fycm93RnVuY3Rpb24obXIpfHxlLmdldEVtaXRGbGFncyh4ZSkmMjYyMTQ0KWJyZWFrO2Nhc2UgMjU2OmNhc2UgMTcxOnt2YXIgT2U9eSxucj1WO3k9dm9pZCAwLFY9dm9pZCAwLGVlKEplLHhlLHZyKSx5PU9lLFY9bnI7cmV0dXJufWNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMTY5OmNhc2UgMTY3Ont2YXIgT2U9eSxucj1WO1Y9eSx5PXZvaWQgMCxlZShKZSx4ZSx2cikseT1PZSxWPW5yO3JldHVybn1jYXNlIDE2Mjp7dmFyIE9lPXksbnI9Vjt5PVYsVj12b2lkIDAsZWUoSmUseGUsdnIpLHk9T2UsVj1ucjtyZXR1cm59fWVlKEplLHhlLHZyKX1mdW5jdGlvbiBxcihKZSx4ZSl7cmV0dXJuIHhlPXZlKEplLHhlKSxKZT09PTE/c2koeGUpOnhlfWZ1bmN0aW9uIHNpKEplKXtzd2l0Y2goSmUua2luZCl7Y2FzZSA3OTpyZXR1cm4gd2koSmUpO2Nhc2UgMTA4OnJldHVybiBEaShKZSl9cmV0dXJuIEplfWZ1bmN0aW9uIERpKEplKXtpZihoZSYyJiZ5KXt2YXIgeGU9eS5mYWN0cyx2cj15LmNsYXNzQ29uc3RydWN0b3I7aWYoeGUmMSlyZXR1cm4gbS5jcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihtLmNyZWF0ZVZvaWRaZXJvKCkpO2lmKHZyKXJldHVybiBlLnNldFRleHRSYW5nZShlLnNldE9yaWdpbmFsTm9kZShtLmNsb25lTm9kZSh2ciksSmUpLEplKX1yZXR1cm4gSmV9ZnVuY3Rpb24gd2koSmUpe3JldHVybiBYaShKZSl8fEplfWZ1bmN0aW9uIFhpKEplKXtpZihoZSYxJiZiLmdldE5vZGVDaGVja0ZsYWdzKEplKSYzMzU1NDQzMil7dmFyIHhlPWIuZ2V0UmVmZXJlbmNlZFZhbHVlRGVjbGFyYXRpb24oSmUpO2lmKHhlKXt2YXIgdnI9Rlt4ZS5pZF07aWYodnIpe3ZhciBtcj1tLmNsb25lTm9kZSh2cik7cmV0dXJuIGUuc2V0U291cmNlTWFwUmFuZ2UobXIsSmUpLGUuc2V0Q29tbWVudFJhbmdlKG1yLEplKSxtcn19fX1mdW5jdGlvbiBldChKZSx4ZSl7aWYoZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKEplKSl7dmFyIHZyPWUudmlzaXROb2RlKEplLmV4cHJlc3Npb24sVSxlLmlzRXhwcmVzc2lvbiksbXI9ZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zKHZyKSxBcj1lLmlzU2ltcGxlSW5saW5lYWJsZUV4cHJlc3Npb24obXIpLE9lPWUuaXNBc3NpZ25tZW50RXhwcmVzc2lvbihtcikmJmUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKG1yLmxlZnQpO2lmKCFPZSYmIUFyJiZ4ZSl7dmFyIG5yPW0uZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoSmUpO3JldHVybiBiLmdldE5vZGVDaGVja0ZsYWdzKEplKSY1MjQyODg/Syhucik6RyhuciksbS5jcmVhdGVBc3NpZ25tZW50KG5yLHZyKX1yZXR1cm4gQXJ8fGUuaXNJZGVudGlmaWVyKG1yKT92b2lkIDA6dnJ9fWZ1bmN0aW9uIEdpKCl7JC5wdXNoKHkpLHk9dm9pZCAwfWZ1bmN0aW9uIFd0KCl7eT0kLnBvcCgpfWZ1bmN0aW9uIFp0KCl7cmV0dXJuIHl8fCh5PXtmYWN0czowLGNsYXNzQ29uc3RydWN0b3I6dm9pZCAwLHN1cGVyQ2xhc3NSZWZlcmVuY2U6dm9pZCAwLHByaXZhdGVJZGVudGlmaWVyRW52aXJvbm1lbnQ6dm9pZCAwfSl9ZnVuY3Rpb24gX3IoKXt2YXIgSmU9WnQoKTtyZXR1cm4gSmUucHJpdmF0ZUlkZW50aWZpZXJFbnZpcm9ubWVudHx8KEplLnByaXZhdGVJZGVudGlmaWVyRW52aXJvbm1lbnQ9e2NsYXNzTmFtZTpcIlwiLGlkZW50aWZpZXJzOm5ldyBlLk1hcH0pLEplLnByaXZhdGVJZGVudGlmaWVyRW52aXJvbm1lbnR9ZnVuY3Rpb24gcGkoKXtyZXR1cm4geHx8KHg9W10pfWZ1bmN0aW9uIGFlKEplKXt2YXIgeGUsdnI9ZS5nZXRUZXh0T2ZQcm9wZXJ0eU5hbWUoSmUubmFtZSksbXI9WnQoKSxBcj1tci5jbGFzc0NvbnN0cnVjdG9yLE9lPV9yKCksbnI9T2Uud2Vha1NldE5hbWUsTXI9W10sUGU9SmUubmFtZS5lc2NhcGVkVGV4dCxVZT1PZS5pZGVudGlmaWVycy5nZXQoUGUpLGZyPSFOKEplLm5hbWUpJiZVZT09PXZvaWQgMDtpZihlLmhhc1N0YXRpY01vZGlmaWVyKEplKSlpZihlLkRlYnVnLmFzc2VydChBcixcIndlYWtTZXROYW1lIHNob3VsZCBiZSBzZXQgaW4gcHJpdmF0ZSBpZGVudGlmaWVyIGVudmlyb25tZW50XCIpLGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKEplKSl7dmFyIERlPUpyKHZyLEplKTtPZS5pZGVudGlmaWVycy5zZXQoUGUse2tpbmQ6XCJmXCIsdmFyaWFibGVOYW1lOkRlLGJyYW5kQ2hlY2tJZGVudGlmaWVyOkFyLGlzU3RhdGljOiEwLGlzVmFsaWQ6ZnJ9KX1lbHNlIGlmKGUuaXNNZXRob2REZWNsYXJhdGlvbihKZSkpe3ZhciBncj1Kcih2cixKZSk7T2UuaWRlbnRpZmllcnMuc2V0KFBlLHtraW5kOlwibVwiLG1ldGhvZE5hbWU6Z3IsYnJhbmRDaGVja0lkZW50aWZpZXI6QXIsaXNTdGF0aWM6ITAsaXNWYWxpZDpmcn0pfWVsc2UgaWYoZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oSmUpKXt2YXIgVnI9SnIodnIrXCJfZ2V0XCIsSmUpOyhVZT09bnVsbD92b2lkIDA6VWUua2luZCk9PT1cImFcIiYmVWUuaXNTdGF0aWMmJiFVZS5nZXR0ZXJOYW1lP1VlLmdldHRlck5hbWU9VnI6T2UuaWRlbnRpZmllcnMuc2V0KFBlLHtraW5kOlwiYVwiLGdldHRlck5hbWU6VnIsc2V0dGVyTmFtZTp2b2lkIDAsYnJhbmRDaGVja0lkZW50aWZpZXI6QXIsaXNTdGF0aWM6ITAsaXNWYWxpZDpmcn0pfWVsc2UgaWYoZS5pc1NldEFjY2Vzc29yRGVjbGFyYXRpb24oSmUpKXt2YXIgVHI9SnIodnIrXCJfc2V0XCIsSmUpOyhVZT09bnVsbD92b2lkIDA6VWUua2luZCk9PT1cImFcIiYmVWUuaXNTdGF0aWMmJiFVZS5zZXR0ZXJOYW1lP1VlLnNldHRlck5hbWU9VHI6T2UuaWRlbnRpZmllcnMuc2V0KFBlLHtraW5kOlwiYVwiLGdldHRlck5hbWU6dm9pZCAwLHNldHRlck5hbWU6VHIsYnJhbmRDaGVja0lkZW50aWZpZXI6QXIsaXNTdGF0aWM6ITAsaXNWYWxpZDpmcn0pfWVsc2UgZS5EZWJ1Zy5hc3NlcnROZXZlcihKZSxcIlVua25vd24gY2xhc3MgZWxlbWVudCB0eXBlLlwiKTtlbHNlIGlmKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKEplKSl7dmFyIHZpPUpyKHZyLEplKTtPZS5pZGVudGlmaWVycy5zZXQoUGUse2tpbmQ6XCJmXCIsYnJhbmRDaGVja0lkZW50aWZpZXI6dmksaXNTdGF0aWM6ITEsdmFyaWFibGVOYW1lOnZvaWQgMCxpc1ZhbGlkOmZyfSksTXIucHVzaChtLmNyZWF0ZUFzc2lnbm1lbnQodmksbS5jcmVhdGVOZXdFeHByZXNzaW9uKG0uY3JlYXRlSWRlbnRpZmllcihcIldlYWtNYXBcIiksdm9pZCAwLFtdKSkpfWVsc2UgaWYoZS5pc01ldGhvZERlY2xhcmF0aW9uKEplKSllLkRlYnVnLmFzc2VydChucixcIndlYWtTZXROYW1lIHNob3VsZCBiZSBzZXQgaW4gcHJpdmF0ZSBpZGVudGlmaWVyIGVudmlyb25tZW50XCIpLE9lLmlkZW50aWZpZXJzLnNldChQZSx7a2luZDpcIm1cIixtZXRob2ROYW1lOkpyKHZyLEplKSxicmFuZENoZWNrSWRlbnRpZmllcjpucixpc1N0YXRpYzohMSxpc1ZhbGlkOmZyfSk7ZWxzZSBpZihlLmlzQWNjZXNzb3IoSmUpKWlmKGUuRGVidWcuYXNzZXJ0KG5yLFwid2Vha1NldE5hbWUgc2hvdWxkIGJlIHNldCBpbiBwcml2YXRlIGlkZW50aWZpZXIgZW52aXJvbm1lbnRcIiksZS5pc0dldEFjY2Vzc29yKEplKSl7dmFyIFZyPUpyKHZyK1wiX2dldFwiLEplKTsoVWU9PW51bGw/dm9pZCAwOlVlLmtpbmQpPT09XCJhXCImJiFVZS5pc1N0YXRpYyYmIVVlLmdldHRlck5hbWU/VWUuZ2V0dGVyTmFtZT1WcjpPZS5pZGVudGlmaWVycy5zZXQoUGUse2tpbmQ6XCJhXCIsZ2V0dGVyTmFtZTpWcixzZXR0ZXJOYW1lOnZvaWQgMCxicmFuZENoZWNrSWRlbnRpZmllcjpucixpc1N0YXRpYzohMSxpc1ZhbGlkOmZyfSl9ZWxzZXt2YXIgVHI9SnIodnIrXCJfc2V0XCIsSmUpOyhVZT09bnVsbD92b2lkIDA6VWUua2luZCk9PT1cImFcIiYmIVVlLmlzU3RhdGljJiYhVWUuc2V0dGVyTmFtZT9VZS5zZXR0ZXJOYW1lPVRyOk9lLmlkZW50aWZpZXJzLnNldChQZSx7a2luZDpcImFcIixnZXR0ZXJOYW1lOnZvaWQgMCxzZXR0ZXJOYW1lOlRyLGJyYW5kQ2hlY2tJZGVudGlmaWVyOm5yLGlzU3RhdGljOiExLGlzVmFsaWQ6ZnJ9KX1lbHNlIGUuRGVidWcuYXNzZXJ0TmV2ZXIoSmUsXCJVbmtub3duIGNsYXNzIGVsZW1lbnQgdHlwZS5cIik7KHhlPXBpKCkpLnB1c2guYXBwbHkoeGUsTXIpfWZ1bmN0aW9uIFhlKEplLHhlKXt2YXIgdnI9X3IoKS5jbGFzc05hbWUsbXI9dnI/XCJfXCIuY29uY2F0KHZyKTpcIlwiLEFyPW0uY3JlYXRlVW5pcXVlTmFtZShcIlwiLmNvbmNhdChtcixcIl9cIikuY29uY2F0KEplKSwxNik7cmV0dXJuIGIuZ2V0Tm9kZUNoZWNrRmxhZ3MoeGUpJjUyNDI4OD9LKEFyKTpHKEFyKSxBcn1mdW5jdGlvbiBKcihKZSx4ZSl7cmV0dXJuIFhlKEplLnN1YnN0cmluZygxKSx4ZS5uYW1lKX1mdW5jdGlvbiB0aShKZSl7dmFyIHhlO2lmKHkhPW51bGwmJnkucHJpdmF0ZUlkZW50aWZpZXJFbnZpcm9ubWVudCl7dmFyIHZyPXkucHJpdmF0ZUlkZW50aWZpZXJFbnZpcm9ubWVudC5pZGVudGlmaWVycy5nZXQoSmUuZXNjYXBlZFRleHQpO2lmKHZyKXJldHVybiB2cn1mb3IodmFyIG1yPSQubGVuZ3RoLTE7bXI+PTA7LS1tcil7dmFyIEFyPSRbbXJdO2lmKCEhQXIpe3ZhciB2cj0oeGU9QXIucHJpdmF0ZUlkZW50aWZpZXJFbnZpcm9ubWVudCk9PT1udWxsfHx4ZT09PXZvaWQgMD92b2lkIDA6eGUuaWRlbnRpZmllcnMuZ2V0KEplLmVzY2FwZWRUZXh0KTtpZih2cilyZXR1cm4gdnJ9fX1mdW5jdGlvbiBaZShKZSl7dmFyIHhlPW0uZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoSmUpLHZyPXRpKEplLm5hbWUpO2lmKCF2cilyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChKZSxVLHApO3ZhciBtcj1KZS5leHByZXNzaW9uO3JldHVybihlLmlzVGhpc1Byb3BlcnR5KEplKXx8ZS5pc1N1cGVyUHJvcGVydHkoSmUpfHwhZS5pc1NpbXBsZUNvcGlhYmxlRXhwcmVzc2lvbihKZS5leHByZXNzaW9uKSkmJihtcj1tLmNyZWF0ZVRlbXBWYXJpYWJsZShHLCEwKSxwaSgpLnB1c2gobS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uKG1yLDYzLGUudmlzaXROb2RlKEplLmV4cHJlc3Npb24sVSxlLmlzRXhwcmVzc2lvbikpKSksbS5jcmVhdGVBc3NpZ25tZW50VGFyZ2V0V3JhcHBlcih4ZSx3ZSh2cixtcix4ZSw2MykpfWZ1bmN0aW9uIFNyKEplKXt2YXIgeGU9ZS5nZXRUYXJnZXRPZkJpbmRpbmdPckFzc2lnbm1lbnRFbGVtZW50KEplKTtpZih4ZSl7dmFyIHZyPXZvaWQgMDtpZihlLmlzUHJpdmF0ZUlkZW50aWZpZXJQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oeGUpKXZyPVplKHhlKTtlbHNlIGlmKE8mJmUuaXNTdXBlclByb3BlcnR5KHhlKSYmTCYmeSl7dmFyIG1yPXkuY2xhc3NDb25zdHJ1Y3RvcixBcj15LnN1cGVyQ2xhc3NSZWZlcmVuY2UsT2U9eS5mYWN0cztpZihPZSYxKXZyPXBlKHhlKTtlbHNlIGlmKG1yJiZBcil7dmFyIG5yPWUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbih4ZSk/ZS52aXNpdE5vZGUoeGUuYXJndW1lbnRFeHByZXNzaW9uLFUsZS5pc0V4cHJlc3Npb24pOmUuaXNJZGVudGlmaWVyKHhlLm5hbWUpP20uY3JlYXRlU3RyaW5nTGl0ZXJhbEZyb21Ob2RlKHhlLm5hbWUpOnZvaWQgMDtpZihucil7dmFyIE1yPW0uY3JlYXRlVGVtcFZhcmlhYmxlKHZvaWQgMCk7dnI9bS5jcmVhdGVBc3NpZ25tZW50VGFyZ2V0V3JhcHBlcihNcixtLmNyZWF0ZVJlZmxlY3RTZXRDYWxsKEFyLG5yLE1yLG1yKSl9fX1pZih2cilyZXR1cm4gZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKEplKT9tLnVwZGF0ZUJpbmFyeUV4cHJlc3Npb24oSmUsdnIsSmUub3BlcmF0b3JUb2tlbixlLnZpc2l0Tm9kZShKZS5yaWdodCxVLGUuaXNFeHByZXNzaW9uKSk6ZS5pc1NwcmVhZEVsZW1lbnQoSmUpP20udXBkYXRlU3ByZWFkRWxlbWVudChKZSx2cik6dnJ9cmV0dXJuIGUudmlzaXROb2RlKEplLEgpfWZ1bmN0aW9uIHpyKEplKXtpZihlLmlzT2JqZWN0QmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoSmUpJiYhZS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChKZSkpe3ZhciB4ZT1lLmdldFRhcmdldE9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoSmUpLHZyPXZvaWQgMDtpZih4ZSl7aWYoZS5pc1ByaXZhdGVJZGVudGlmaWVyUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHhlKSl2cj1aZSh4ZSk7ZWxzZSBpZihPJiZlLmlzU3VwZXJQcm9wZXJ0eSh4ZSkmJkwmJnkpe3ZhciBtcj15LmNsYXNzQ29uc3RydWN0b3IsQXI9eS5zdXBlckNsYXNzUmVmZXJlbmNlLE9lPXkuZmFjdHM7aWYoT2UmMSl2cj1wZSh4ZSk7ZWxzZSBpZihtciYmQXIpe3ZhciBucj1lLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oeGUpP2UudmlzaXROb2RlKHhlLmFyZ3VtZW50RXhwcmVzc2lvbixVLGUuaXNFeHByZXNzaW9uKTplLmlzSWRlbnRpZmllcih4ZS5uYW1lKT9tLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZSh4ZS5uYW1lKTp2b2lkIDA7aWYobnIpe3ZhciBNcj1tLmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApO3ZyPW0uY3JlYXRlQXNzaWdubWVudFRhcmdldFdyYXBwZXIoTXIsbS5jcmVhdGVSZWZsZWN0U2V0Q2FsbChBcixucixNcixtcikpfX19fWlmKGUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQoSmUpKXt2YXIgUGU9ZS5nZXRJbml0aWFsaXplck9mQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoSmUpO3JldHVybiBtLnVwZGF0ZVByb3BlcnR5QXNzaWdubWVudChKZSxlLnZpc2l0Tm9kZShKZS5uYW1lLFUsZS5pc1Byb3BlcnR5TmFtZSksdnI/UGU/bS5jcmVhdGVBc3NpZ25tZW50KHZyLGUudmlzaXROb2RlKFBlLFUpKTp2cjplLnZpc2l0Tm9kZShKZS5pbml0aWFsaXplcixILGUuaXNFeHByZXNzaW9uKSl9aWYoZS5pc1NwcmVhZEFzc2lnbm1lbnQoSmUpKXJldHVybiBtLnVwZGF0ZVNwcmVhZEFzc2lnbm1lbnQoSmUsdnJ8fGUudmlzaXROb2RlKEplLmV4cHJlc3Npb24sSCxlLmlzRXhwcmVzc2lvbikpO2UuRGVidWcuYXNzZXJ0KHZyPT09dm9pZCAwLFwiU2hvdWxkIG5vdCBoYXZlIGdlbmVyYXRlZCBhIHdyYXBwZWQgdGFyZ2V0XCIpfXJldHVybiBlLnZpc2l0Tm9kZShKZSxVKX1mdW5jdGlvbiBXcihKZSl7cmV0dXJuIGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKEplKT9tLnVwZGF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oSmUsZS52aXNpdE5vZGVzKEplLmVsZW1lbnRzLFNyLGUuaXNFeHByZXNzaW9uKSk6bS51cGRhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihKZSxlLnZpc2l0Tm9kZXMoSmUucHJvcGVydGllcyx6cixlLmlzT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlKSl9fWUudHJhbnNmb3JtQ2xhc3NGaWVsZHM9QjtmdW5jdGlvbiBFKHAsbSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVBc3NpZ25tZW50KHAsZS5mYWN0b3J5LmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKFtlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwidmFsdWVcIixtfHxlLmZhY3RvcnkuY3JlYXRlVm9pZFplcm8oKSldKSl9ZnVuY3Rpb24gUShwLG0sRyl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVDYWxsRXhwcmVzc2lvbihlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEcsXCJzZXRcIiksdm9pZCAwLFtwLG18fGUuZmFjdG9yeS5jcmVhdGVWb2lkWmVybygpXSl9ZnVuY3Rpb24gbGUocCxtKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obSxcImFkZFwiKSx2b2lkIDAsW3BdKX1mdW5jdGlvbiBOKHApe3JldHVybiBwLmVzY2FwZWRUZXh0PT09XCIjY29uc3RydWN0b3JcIn19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oRSl7RVtFLkFzeW5jTWV0aG9kc1dpdGhTdXBlcj0xXT1cIkFzeW5jTWV0aG9kc1dpdGhTdXBlclwifSkoYXx8KGE9e30pKTt2YXIgQzsoZnVuY3Rpb24oRSl7RVtFLk5vblRvcExldmVsPTFdPVwiTm9uVG9wTGV2ZWxcIixFW0UuSGFzTGV4aWNhbFRoaXM9Ml09XCJIYXNMZXhpY2FsVGhpc1wifSkoQ3x8KEM9e30pKTtmdW5jdGlvbiB3KEUpe3ZhciBRPUUuZmFjdG9yeSxsZT1FLmdldEVtaXRIZWxwZXJGYWN0b3J5LE49RS5yZXN1bWVMZXhpY2FsRW52aXJvbm1lbnQscD1FLmVuZExleGljYWxFbnZpcm9ubWVudCxtPUUuaG9pc3RWYXJpYWJsZURlY2xhcmF0aW9uLEc9RS5nZXRFbWl0UmVzb2x2ZXIoKSxvZT1FLmdldENvbXBpbGVyT3B0aW9ucygpLGY9ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KG9lKSxULEs9MCxiLHNlLEosaWU9W10sUj0wLHE9RS5vbkVtaXROb2RlLE89RS5vblN1YnN0aXR1dGVOb2RlO3JldHVybiBFLm9uRW1pdE5vZGU9UmUsRS5vblN1YnN0aXR1dGVOb2RlPXplLGUuY2hhaW5CdW5kbGUoRSx2ZSk7ZnVuY3Rpb24gdmUoZGUpe2lmKGRlLmlzRGVjbGFyYXRpb25GaWxlKXJldHVybiBkZTtlZSgxLCExKSxlZSgyLCFlLmlzRWZmZWN0aXZlU3RyaWN0TW9kZVNvdXJjZUZpbGUoZGUsb2UpKTt2YXIgeWU9ZS52aXNpdEVhY2hDaGlsZChkZSxBLEUpO3JldHVybiBlLmFkZEVtaXRIZWxwZXJzKHllLEUucmVhZEVtaXRIZWxwZXJzKCkpLHllfWZ1bmN0aW9uIGVlKGRlLHllKXtSPXllP1J8ZGU6UiZ+ZGV9ZnVuY3Rpb24gaGUoZGUpe3JldHVybihSJmRlKSE9PTB9ZnVuY3Rpb24gRigpe3JldHVybiFoZSgxKX1mdW5jdGlvbiB4KCl7cmV0dXJuIGhlKDIpfWZ1bmN0aW9uIFgoZGUseWUsQWUpe3ZhciBlcj1kZSZ+UjtpZihlcil7ZWUoZXIsITApO3ZhciBpcj15ZShBZSk7cmV0dXJuIGVlKGVyLCExKSxpcn1yZXR1cm4geWUoQWUpfWZ1bmN0aW9uICQoZGUpe3JldHVybiBlLnZpc2l0RWFjaENoaWxkKGRlLEEsRSl9ZnVuY3Rpb24gQShkZSl7aWYoKGRlLnRyYW5zZm9ybUZsYWdzJjI1Nik9PT0wKXJldHVybiBkZTtzd2l0Y2goZGUua2luZCl7Y2FzZSAxMzE6cmV0dXJuO2Nhc2UgMjE4OnJldHVybiBVKGRlKTtjYXNlIDE2OTpyZXR1cm4gWCgzLGosZGUpO2Nhc2UgMjU2OnJldHVybiBYKDMsSCxkZSk7Y2FzZSAyMTM6cmV0dXJuIFgoMyxJLGRlKTtjYXNlIDIxNDpyZXR1cm4gWCgxLGwsZGUpO2Nhc2UgMjA2OnJldHVybiBzZSYmZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihkZSkmJmRlLmV4cHJlc3Npb24ua2luZD09PTEwNiYmc2UuYWRkKGRlLm5hbWUuZXNjYXBlZFRleHQpLGUudmlzaXRFYWNoQ2hpbGQoZGUsQSxFKTtjYXNlIDIwNzpyZXR1cm4gc2UmJmRlLmV4cHJlc3Npb24ua2luZD09PTEwNiYmKEo9ITApLGUudmlzaXRFYWNoQ2hpbGQoZGUsQSxFKTtjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDE3MTpjYXNlIDI1NzpjYXNlIDIyNjpyZXR1cm4gWCgzLCQsZGUpO2RlZmF1bHQ6cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoZGUsQSxFKX19ZnVuY3Rpb24geShkZSl7aWYoZS5pc05vZGVXaXRoUG9zc2libGVIb2lzdGVkRGVjbGFyYXRpb24oZGUpKXN3aXRjaChkZS5raW5kKXtjYXNlIDIzNzpyZXR1cm4gTChkZSk7Y2FzZSAyNDI6cmV0dXJuIFkoZGUpO2Nhc2UgMjQzOnJldHVybiBQKGRlKTtjYXNlIDI0NDpyZXR1cm4gayhkZSk7Y2FzZSAyOTI6cmV0dXJuIFYoZGUpO2Nhc2UgMjM1OmNhc2UgMjQ5OmNhc2UgMjYzOmNhc2UgMjg5OmNhc2UgMjkwOmNhc2UgMjUyOmNhc2UgMjQwOmNhc2UgMjQxOmNhc2UgMjM5OmNhc2UgMjQ4OmNhc2UgMjUwOnJldHVybiBlLnZpc2l0RWFjaENoaWxkKGRlLHksRSk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihkZSxcIlVuaGFuZGxlZCBub2RlLlwiKX1yZXR1cm4gQShkZSl9ZnVuY3Rpb24gVihkZSl7dmFyIHllPW5ldyBlLlNldDtkKGRlLnZhcmlhYmxlRGVjbGFyYXRpb24seWUpO3ZhciBBZTtpZih5ZS5mb3JFYWNoKGZ1bmN0aW9uKENyLFllKXtiLmhhcyhZZSkmJihBZXx8KEFlPW5ldyBlLlNldChiKSksQWUuZGVsZXRlKFllKSl9KSxBZSl7dmFyIGVyPWI7Yj1BZTt2YXIgaXI9ZS52aXNpdEVhY2hDaGlsZChkZSx5LEUpO3JldHVybiBiPWVyLGlyfWVsc2UgcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoZGUseSxFKX1mdW5jdGlvbiBMKGRlKXtpZihEKGRlLmRlY2xhcmF0aW9uTGlzdCkpe3ZhciB5ZT1mZShkZS5kZWNsYXJhdGlvbkxpc3QsITEpO3JldHVybiB5ZT9RLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoeWUpOnZvaWQgMH1yZXR1cm4gZS52aXNpdEVhY2hDaGlsZChkZSxBLEUpfWZ1bmN0aW9uIFAoZGUpe3JldHVybiBRLnVwZGF0ZUZvckluU3RhdGVtZW50KGRlLEQoZGUuaW5pdGlhbGl6ZXIpP2ZlKGRlLmluaXRpYWxpemVyLCEwKTplLnZpc2l0Tm9kZShkZS5pbml0aWFsaXplcixBLGUuaXNGb3JJbml0aWFsaXplciksZS52aXNpdE5vZGUoZGUuZXhwcmVzc2lvbixBLGUuaXNFeHByZXNzaW9uKSxlLnZpc2l0SXRlcmF0aW9uQm9keShkZS5zdGF0ZW1lbnQseSxFKSl9ZnVuY3Rpb24gayhkZSl7cmV0dXJuIFEudXBkYXRlRm9yT2ZTdGF0ZW1lbnQoZGUsZS52aXNpdE5vZGUoZGUuYXdhaXRNb2RpZmllcixBLGUuaXNUb2tlbiksRChkZS5pbml0aWFsaXplcik/ZmUoZGUuaW5pdGlhbGl6ZXIsITApOmUudmlzaXROb2RlKGRlLmluaXRpYWxpemVyLEEsZS5pc0ZvckluaXRpYWxpemVyKSxlLnZpc2l0Tm9kZShkZS5leHByZXNzaW9uLEEsZS5pc0V4cHJlc3Npb24pLGUudmlzaXRJdGVyYXRpb25Cb2R5KGRlLnN0YXRlbWVudCx5LEUpKX1mdW5jdGlvbiBZKGRlKXt2YXIgeWU9ZGUuaW5pdGlhbGl6ZXI7cmV0dXJuIFEudXBkYXRlRm9yU3RhdGVtZW50KGRlLEQoeWUpP2ZlKHllLCExKTplLnZpc2l0Tm9kZShkZS5pbml0aWFsaXplcixBLGUuaXNGb3JJbml0aWFsaXplciksZS52aXNpdE5vZGUoZGUuY29uZGl0aW9uLEEsZS5pc0V4cHJlc3Npb24pLGUudmlzaXROb2RlKGRlLmluY3JlbWVudG9yLEEsZS5pc0V4cHJlc3Npb24pLGUudmlzaXRJdGVyYXRpb25Cb2R5KGRlLnN0YXRlbWVudCx5LEUpKX1mdW5jdGlvbiBVKGRlKXtyZXR1cm4gRigpP2UudmlzaXRFYWNoQ2hpbGQoZGUsQSxFKTplLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShRLmNyZWF0ZVlpZWxkRXhwcmVzc2lvbih2b2lkIDAsZS52aXNpdE5vZGUoZGUuZXhwcmVzc2lvbixBLGUuaXNFeHByZXNzaW9uKSksZGUpLGRlKX1mdW5jdGlvbiBqKGRlKXtyZXR1cm4gUS51cGRhdGVNZXRob2REZWNsYXJhdGlvbihkZSx2b2lkIDAsZS52aXNpdE5vZGVzKGRlLm1vZGlmaWVycyxBLGUuaXNNb2RpZmllciksZGUuYXN0ZXJpc2tUb2tlbixkZS5uYW1lLHZvaWQgMCx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QoZGUucGFyYW1ldGVycyxBLEUpLHZvaWQgMCxlLmdldEZ1bmN0aW9uRmxhZ3MoZGUpJjI/RmUoZGUpOmUudmlzaXRGdW5jdGlvbkJvZHkoZGUuYm9keSxBLEUpKX1mdW5jdGlvbiBIKGRlKXtyZXR1cm4gUS51cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGRlLHZvaWQgMCxlLnZpc2l0Tm9kZXMoZGUubW9kaWZpZXJzLEEsZS5pc01vZGlmaWVyKSxkZS5hc3Rlcmlza1Rva2VuLGRlLm5hbWUsdm9pZCAwLGUudmlzaXRQYXJhbWV0ZXJMaXN0KGRlLnBhcmFtZXRlcnMsQSxFKSx2b2lkIDAsZS5nZXRGdW5jdGlvbkZsYWdzKGRlKSYyP0ZlKGRlKTplLnZpc2l0RnVuY3Rpb25Cb2R5KGRlLmJvZHksQSxFKSl9ZnVuY3Rpb24gSShkZSl7cmV0dXJuIFEudXBkYXRlRnVuY3Rpb25FeHByZXNzaW9uKGRlLGUudmlzaXROb2RlcyhkZS5tb2RpZmllcnMsQSxlLmlzTW9kaWZpZXIpLGRlLmFzdGVyaXNrVG9rZW4sZGUubmFtZSx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QoZGUucGFyYW1ldGVycyxBLEUpLHZvaWQgMCxlLmdldEZ1bmN0aW9uRmxhZ3MoZGUpJjI/RmUoZGUpOmUudmlzaXRGdW5jdGlvbkJvZHkoZGUuYm9keSxBLEUpKX1mdW5jdGlvbiBsKGRlKXtyZXR1cm4gUS51cGRhdGVBcnJvd0Z1bmN0aW9uKGRlLGUudmlzaXROb2RlcyhkZS5tb2RpZmllcnMsQSxlLmlzTW9kaWZpZXIpLHZvaWQgMCxlLnZpc2l0UGFyYW1ldGVyTGlzdChkZS5wYXJhbWV0ZXJzLEEsRSksdm9pZCAwLGRlLmVxdWFsc0dyZWF0ZXJUaGFuVG9rZW4sZS5nZXRGdW5jdGlvbkZsYWdzKGRlKSYyP0ZlKGRlKTplLnZpc2l0RnVuY3Rpb25Cb2R5KGRlLmJvZHksQSxFKSl9ZnVuY3Rpb24gZChkZSx5ZSl7dmFyIEFlPWRlLm5hbWU7aWYoZS5pc0lkZW50aWZpZXIoQWUpKXllLmFkZChBZS5lc2NhcGVkVGV4dCk7ZWxzZSBmb3IodmFyIGVyPTAsaXI9QWUuZWxlbWVudHM7ZXI8aXIubGVuZ3RoO2VyKyspe3ZhciBDcj1pcltlcl07ZS5pc09taXR0ZWRFeHByZXNzaW9uKENyKXx8ZChDcix5ZSl9fWZ1bmN0aW9uIEQoZGUpe3JldHVybiEhZGUmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChkZSkmJiEoZGUuZmxhZ3MmMykmJmRlLmRlY2xhcmF0aW9ucy5zb21lKFdlKX1mdW5jdGlvbiBmZShkZSx5ZSl7ZyhkZSk7dmFyIEFlPWUuZ2V0SW5pdGlhbGl6ZWRWYXJpYWJsZXMoZGUpO3JldHVybiBBZS5sZW5ndGg9PT0wP3llP2UudmlzaXROb2RlKFEuY29udmVydGVycy5jb252ZXJ0VG9Bc3NpZ25tZW50RWxlbWVudFRhcmdldChkZS5kZWNsYXJhdGlvbnNbMF0ubmFtZSksQSxlLmlzRXhwcmVzc2lvbik6dm9pZCAwOlEuaW5saW5lRXhwcmVzc2lvbnMoZS5tYXAoQWUsdWUpKX1mdW5jdGlvbiBnKGRlKXtlLmZvckVhY2goZGUuZGVjbGFyYXRpb25zLG5lKX1mdW5jdGlvbiBuZShkZSl7dmFyIHllPWRlLm5hbWU7aWYoZS5pc0lkZW50aWZpZXIoeWUpKW0oeWUpO2Vsc2UgZm9yKHZhciBBZT0wLGVyPXllLmVsZW1lbnRzO0FlPGVyLmxlbmd0aDtBZSsrKXt2YXIgaXI9ZXJbQWVdO2UuaXNPbWl0dGVkRXhwcmVzc2lvbihpcil8fG5lKGlyKX19ZnVuY3Rpb24gdWUoZGUpe3ZhciB5ZT1lLnNldFNvdXJjZU1hcFJhbmdlKFEuY3JlYXRlQXNzaWdubWVudChRLmNvbnZlcnRlcnMuY29udmVydFRvQXNzaWdubWVudEVsZW1lbnRUYXJnZXQoZGUubmFtZSksZGUuaW5pdGlhbGl6ZXIpLGRlKTtyZXR1cm4gZS52aXNpdE5vZGUoeWUsQSxlLmlzRXhwcmVzc2lvbil9ZnVuY3Rpb24gV2UoZGUpe3ZhciB5ZT1kZS5uYW1lO2lmKGUuaXNJZGVudGlmaWVyKHllKSlyZXR1cm4gYi5oYXMoeWUuZXNjYXBlZFRleHQpO2Zvcih2YXIgQWU9MCxlcj15ZS5lbGVtZW50cztBZTxlci5sZW5ndGg7QWUrKyl7dmFyIGlyPWVyW0FlXTtpZighZS5pc09taXR0ZWRFeHByZXNzaW9uKGlyKSYmV2UoaXIpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEZlKGRlKXtOKCk7dmFyIHllPWUuZ2V0T3JpZ2luYWxOb2RlKGRlLGUuaXNGdW5jdGlvbkxpa2UpLEFlPXllLnR5cGUsZXI9ZjwyP0JlKEFlKTp2b2lkIDAsaXI9ZGUua2luZD09PTIxNCxDcj0oRy5nZXROb2RlQ2hlY2tGbGFncyhkZSkmODE5MikhPT0wLFllPWI7Yj1uZXcgZS5TZXQ7Zm9yKHZhciBCcj0wLEVyPWRlLnBhcmFtZXRlcnM7QnI8RXIubGVuZ3RoO0JyKyspe3ZhciBOZT1FcltCcl07ZChOZSxiKX12YXIgbj1zZSxscj1KO2lyfHwoc2U9bmV3IGUuU2V0LEo9ITEpO3ZhciBiZTtpZihpcil7dmFyIFVyPWxlKCkuY3JlYXRlQXdhaXRlckhlbHBlcih4KCksQ3IsZXIsWihkZS5ib2R5KSksaWk9cCgpO2lmKGUuc29tZShpaSkpe3ZhciB3cj1RLmNvbnZlcnRlcnMuY29udmVydFRvRnVuY3Rpb25CbG9jayhVcik7YmU9US51cGRhdGVCbG9jayh3cixlLnNldFRleHRSYW5nZShRLmNyZWF0ZU5vZGVBcnJheShlLmNvbmNhdGVuYXRlKGlpLHdyLnN0YXRlbWVudHMpKSx3ci5zdGF0ZW1lbnRzKSl9ZWxzZSBiZT1Vcn1lbHNle3ZhciBHZT1bXSx1cj1RLmNvcHlQcm9sb2d1ZShkZS5ib2R5LnN0YXRlbWVudHMsR2UsITEsQSk7R2UucHVzaChRLmNyZWF0ZVJldHVyblN0YXRlbWVudChsZSgpLmNyZWF0ZUF3YWl0ZXJIZWxwZXIoeCgpLENyLGVyLFooZGUuYm9keSx1cikpKSksZS5pbnNlcnRTdGF0ZW1lbnRzQWZ0ZXJTdGFuZGFyZFByb2xvZ3VlKEdlLHAoKSk7dmFyIHlyPWY+PTImJkcuZ2V0Tm9kZUNoZWNrRmxhZ3MoZGUpJjYxNDQ7aWYoeXImJihnZSgpLHNlLnNpemUpKXt2YXIgSXI9QihRLEcsZGUsc2UpO2llW2UuZ2V0Tm9kZUlkKElyKV09ITAsZS5pbnNlcnRTdGF0ZW1lbnRzQWZ0ZXJTdGFuZGFyZFByb2xvZ3VlKEdlLFtJcl0pfXZhciB3cj1RLmNyZWF0ZUJsb2NrKEdlLCEwKTtlLnNldFRleHRSYW5nZSh3cixkZS5ib2R5KSx5ciYmSiYmKEcuZ2V0Tm9kZUNoZWNrRmxhZ3MoZGUpJjQwOTY/ZS5hZGRFbWl0SGVscGVyKHdyLGUuYWR2YW5jZWRBc3luY1N1cGVySGVscGVyKTpHLmdldE5vZGVDaGVja0ZsYWdzKGRlKSYyMDQ4JiZlLmFkZEVtaXRIZWxwZXIod3IsZS5hc3luY1N1cGVySGVscGVyKSksYmU9d3J9cmV0dXJuIGI9WWUsaXJ8fChzZT1uLEo9bHIpLGJlfWZ1bmN0aW9uIFooZGUseWUpe3JldHVybiBlLmlzQmxvY2soZGUpP1EudXBkYXRlQmxvY2soZGUsZS52aXNpdE5vZGVzKGRlLnN0YXRlbWVudHMseSxlLmlzU3RhdGVtZW50LHllKSk6US5jb252ZXJ0ZXJzLmNvbnZlcnRUb0Z1bmN0aW9uQmxvY2soZS52aXNpdE5vZGUoZGUseSxlLmlzQ29uY2lzZUJvZHkpKX1mdW5jdGlvbiBCZShkZSl7dmFyIHllPWRlJiZlLmdldEVudGl0eU5hbWVGcm9tVHlwZU5vZGUoZGUpO2lmKHllJiZlLmlzRW50aXR5TmFtZSh5ZSkpe3ZhciBBZT1HLmdldFR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZCh5ZSk7aWYoQWU9PT1lLlR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZC5UeXBlV2l0aENvbnN0cnVjdFNpZ25hdHVyZUFuZFZhbHVlfHxBZT09PWUuVHlwZVJlZmVyZW5jZVNlcmlhbGl6YXRpb25LaW5kLlVua25vd24pcmV0dXJuIHllfX1mdW5jdGlvbiBnZSgpeyhUJjEpPT09MCYmKFR8PTEsRS5lbmFibGVTdWJzdGl0dXRpb24oMjA4KSxFLmVuYWJsZVN1YnN0aXR1dGlvbigyMDYpLEUuZW5hYmxlU3Vic3RpdHV0aW9uKDIwNyksRS5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDI1NyksRS5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE2OSksRS5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE3MiksRS5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE3MyksRS5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDE3MSksRS5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDIzNykpfWZ1bmN0aW9uIFJlKGRlLHllLEFlKXtpZihUJjEmJl9lKHllKSl7dmFyIGVyPUcuZ2V0Tm9kZUNoZWNrRmxhZ3MoeWUpJjYxNDQ7aWYoZXIhPT1LKXt2YXIgaXI9SztLPWVyLHEoZGUseWUsQWUpLEs9aXI7cmV0dXJufX1lbHNlIGlmKFQmJmllW2UuZ2V0Tm9kZUlkKHllKV0pe3ZhciBpcj1LO0s9MCxxKGRlLHllLEFlKSxLPWlyO3JldHVybn1xKGRlLHllLEFlKX1mdW5jdGlvbiB6ZShkZSx5ZSl7cmV0dXJuIHllPU8oZGUseWUpLGRlPT09MSYmSz9FZSh5ZSk6eWV9ZnVuY3Rpb24gRWUoZGUpe3N3aXRjaChkZS5raW5kKXtjYXNlIDIwNjpyZXR1cm4gSGUoZGUpO2Nhc2UgMjA3OnJldHVybiBycihkZSk7Y2FzZSAyMDg6cmV0dXJuIEllKGRlKX1yZXR1cm4gZGV9ZnVuY3Rpb24gSGUoZGUpe3JldHVybiBkZS5leHByZXNzaW9uLmtpbmQ9PT0xMDY/ZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUS5jcmVhdGVVbmlxdWVOYW1lKFwiX3N1cGVyXCIsNDgpLGRlLm5hbWUpLGRlKTpkZX1mdW5jdGlvbiBycihkZSl7cmV0dXJuIGRlLmV4cHJlc3Npb24ua2luZD09PTEwNj93ZShkZS5hcmd1bWVudEV4cHJlc3Npb24sZGUpOmRlfWZ1bmN0aW9uIEllKGRlKXt2YXIgeWU9ZGUuZXhwcmVzc2lvbjtpZihlLmlzU3VwZXJQcm9wZXJ0eSh5ZSkpe3ZhciBBZT1lLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHllKT9IZSh5ZSk6cnIoeWUpO3JldHVybiBRLmNyZWF0ZUNhbGxFeHByZXNzaW9uKFEuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEFlLFwiY2FsbFwiKSx2b2lkIDAsVmUoW1EuY3JlYXRlVGhpcygpXSxkZS5hcmd1bWVudHMsITApKX1yZXR1cm4gZGV9ZnVuY3Rpb24gX2UoZGUpe3ZhciB5ZT1kZS5raW5kO3JldHVybiB5ZT09PTI1N3x8eWU9PT0xNzF8fHllPT09MTY5fHx5ZT09PTE3Mnx8eWU9PT0xNzN9ZnVuY3Rpb24gd2UoZGUseWUpe3JldHVybiBLJjQwOTY/ZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUS5jcmVhdGVDYWxsRXhwcmVzc2lvbihRLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfc3VwZXJJbmRleFwiLDQ4KSx2b2lkIDAsW2RlXSksXCJ2YWx1ZVwiKSx5ZSk6ZS5zZXRUZXh0UmFuZ2UoUS5jcmVhdGVDYWxsRXhwcmVzc2lvbihRLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfc3VwZXJJbmRleFwiLDQ4KSx2b2lkIDAsW2RlXSkseWUpfX1lLnRyYW5zZm9ybUVTMjAxNz13O2Z1bmN0aW9uIEIoRSxRLGxlLE4pe3ZhciBwPShRLmdldE5vZGVDaGVja0ZsYWdzKGxlKSY0MDk2KSE9PTAsbT1bXTtyZXR1cm4gTi5mb3JFYWNoKGZ1bmN0aW9uKEcsb2Upe3ZhciBmPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMob2UpLFQ9W107VC5wdXNoKEUuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwiZ2V0XCIsRS5jcmVhdGVBcnJvd0Z1bmN0aW9uKHZvaWQgMCx2b2lkIDAsW10sdm9pZCAwLHZvaWQgMCxlLnNldEVtaXRGbGFncyhFLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLnNldEVtaXRGbGFncyhFLmNyZWF0ZVN1cGVyKCksNCksZiksNCkpKSkscCYmVC5wdXNoKEUuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwic2V0XCIsRS5jcmVhdGVBcnJvd0Z1bmN0aW9uKHZvaWQgMCx2b2lkIDAsW0UuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJ2XCIsdm9pZCAwLHZvaWQgMCx2b2lkIDApXSx2b2lkIDAsdm9pZCAwLEUuY3JlYXRlQXNzaWdubWVudChlLnNldEVtaXRGbGFncyhFLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLnNldEVtaXRGbGFncyhFLmNyZWF0ZVN1cGVyKCksNCksZiksNCksRS5jcmVhdGVJZGVudGlmaWVyKFwidlwiKSkpKSksbS5wdXNoKEUuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KGYsRS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihUKSkpfSksRS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKEUuY3JlYXRlVW5pcXVlTmFtZShcIl9zdXBlclwiLDQ4KSx2b2lkIDAsdm9pZCAwLEUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwiT2JqZWN0XCIpLFwiY3JlYXRlXCIpLHZvaWQgMCxbRS5jcmVhdGVOdWxsKCksRS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihtLCEwKV0pKV0sMikpfWUuY3JlYXRlU3VwZXJBY2Nlc3NWYXJpYWJsZVN0YXRlbWVudD1CfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEIpe0JbQi5Bc3luY01ldGhvZHNXaXRoU3VwZXI9MV09XCJBc3luY01ldGhvZHNXaXRoU3VwZXJcIn0pKGF8fChhPXt9KSk7dmFyIEM7KGZ1bmN0aW9uKEIpe0JbQi5Ob25lPTBdPVwiTm9uZVwiLEJbQi5IYXNMZXhpY2FsVGhpcz0xXT1cIkhhc0xleGljYWxUaGlzXCIsQltCLkl0ZXJhdGlvbkNvbnRhaW5lcj0yXT1cIkl0ZXJhdGlvbkNvbnRhaW5lclwiLEJbQi5BbmNlc3RvckZhY3RzTWFzaz0zXT1cIkFuY2VzdG9yRmFjdHNNYXNrXCIsQltCLlNvdXJjZUZpbGVJbmNsdWRlcz0xXT1cIlNvdXJjZUZpbGVJbmNsdWRlc1wiLEJbQi5Tb3VyY2VGaWxlRXhjbHVkZXM9Ml09XCJTb3VyY2VGaWxlRXhjbHVkZXNcIixCW0IuU3RyaWN0TW9kZVNvdXJjZUZpbGVJbmNsdWRlcz0wXT1cIlN0cmljdE1vZGVTb3VyY2VGaWxlSW5jbHVkZXNcIixCW0IuQ2xhc3NPckZ1bmN0aW9uSW5jbHVkZXM9MV09XCJDbGFzc09yRnVuY3Rpb25JbmNsdWRlc1wiLEJbQi5DbGFzc09yRnVuY3Rpb25FeGNsdWRlcz0yXT1cIkNsYXNzT3JGdW5jdGlvbkV4Y2x1ZGVzXCIsQltCLkFycm93RnVuY3Rpb25JbmNsdWRlcz0wXT1cIkFycm93RnVuY3Rpb25JbmNsdWRlc1wiLEJbQi5BcnJvd0Z1bmN0aW9uRXhjbHVkZXM9Ml09XCJBcnJvd0Z1bmN0aW9uRXhjbHVkZXNcIixCW0IuSXRlcmF0aW9uU3RhdGVtZW50SW5jbHVkZXM9Ml09XCJJdGVyYXRpb25TdGF0ZW1lbnRJbmNsdWRlc1wiLEJbQi5JdGVyYXRpb25TdGF0ZW1lbnRFeGNsdWRlcz0wXT1cIkl0ZXJhdGlvblN0YXRlbWVudEV4Y2x1ZGVzXCJ9KShDfHwoQz17fSkpO2Z1bmN0aW9uIHcoQil7dmFyIEU9Qi5mYWN0b3J5LFE9Qi5nZXRFbWl0SGVscGVyRmFjdG9yeSxsZT1CLnJlc3VtZUxleGljYWxFbnZpcm9ubWVudCxOPUIuZW5kTGV4aWNhbEVudmlyb25tZW50LHA9Qi5ob2lzdFZhcmlhYmxlRGVjbGFyYXRpb24sbT1CLmdldEVtaXRSZXNvbHZlcigpLEc9Qi5nZXRDb21waWxlck9wdGlvbnMoKSxvZT1lLmdldEVtaXRTY3JpcHRUYXJnZXQoRyksZj1CLm9uRW1pdE5vZGU7Qi5vbkVtaXROb2RlPUdlO3ZhciBUPUIub25TdWJzdGl0dXRlTm9kZTtCLm9uU3Vic3RpdHV0ZU5vZGU9dXI7dmFyIEs9ITEsYixzZSxKLGllPTAsUj0wLHEsTyx2ZSxlZSxoZT1bXTtyZXR1cm4gZS5jaGFpbkJ1bmRsZShCLEEpO2Z1bmN0aW9uIEYocGUsb3Ipe3JldHVybiBSIT09KFImfnBlfG9yKX1mdW5jdGlvbiB4KHBlLG9yKXt2YXIgcXI9UjtyZXR1cm4gUj0oUiZ+cGV8b3IpJjMscXJ9ZnVuY3Rpb24gWChwZSl7Uj1wZX1mdW5jdGlvbiAkKHBlKXtPPWUuYXBwZW5kKE8sRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKHBlKSl9ZnVuY3Rpb24gQShwZSl7aWYocGUuaXNEZWNsYXJhdGlvbkZpbGUpcmV0dXJuIHBlO3E9cGU7dmFyIG9yPWcocGUpO3JldHVybiBlLmFkZEVtaXRIZWxwZXJzKG9yLEIucmVhZEVtaXRIZWxwZXJzKCkpLHE9dm9pZCAwLE89dm9pZCAwLG9yfWZ1bmN0aW9uIHkocGUpe3JldHVybiBZKHBlLCExKX1mdW5jdGlvbiBWKHBlKXtyZXR1cm4gWShwZSwhMCl9ZnVuY3Rpb24gTChwZSl7aWYocGUua2luZCE9PTEzMSlyZXR1cm4gcGV9ZnVuY3Rpb24gUChwZSxvcixxcixzaSl7aWYoRihxcixzaSkpe3ZhciBEaT14KHFyLHNpKSx3aT1wZShvcik7cmV0dXJuIFgoRGkpLHdpfXJldHVybiBwZShvcil9ZnVuY3Rpb24gayhwZSl7cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQocGUseSxCKX1mdW5jdGlvbiBZKHBlLG9yKXtpZigocGUudHJhbnNmb3JtRmxhZ3MmMTI4KT09PTApcmV0dXJuIHBlO3N3aXRjaChwZS5raW5kKXtjYXNlIDIxODpyZXR1cm4gVShwZSk7Y2FzZSAyMjQ6cmV0dXJuIGoocGUpO2Nhc2UgMjQ3OnJldHVybiBIKHBlKTtjYXNlIDI1MDpyZXR1cm4gSShwZSk7Y2FzZSAyMDU6cmV0dXJuIGQocGUpO2Nhc2UgMjIxOnJldHVybiB1ZShwZSxvcik7Y2FzZSAzNTE6cmV0dXJuIFdlKHBlLG9yKTtjYXNlIDI5MjpyZXR1cm4gRmUocGUpO2Nhc2UgMjM3OnJldHVybiBaKHBlKTtjYXNlIDI1NDpyZXR1cm4gQmUocGUpO2Nhc2UgMjQwOmNhc2UgMjQxOmNhc2UgMjQzOnJldHVybiBQKGsscGUsMCwyKTtjYXNlIDI0NDpyZXR1cm4gRWUocGUsdm9pZCAwKTtjYXNlIDI0MjpyZXR1cm4gUChSZSxwZSwwLDIpO2Nhc2UgMjE3OnJldHVybiB6ZShwZSk7Y2FzZSAxNzE6cmV0dXJuIFAoQWUscGUsMiwxKTtjYXNlIDE2OTpyZXR1cm4gUChDcixwZSwyLDEpO2Nhc2UgMTcyOnJldHVybiBQKGVyLHBlLDIsMSk7Y2FzZSAxNzM6cmV0dXJuIFAoaXIscGUsMiwxKTtjYXNlIDI1NjpyZXR1cm4gUChZZSxwZSwyLDEpO2Nhc2UgMjEzOnJldHVybiBQKEVyLHBlLDIsMSk7Y2FzZSAyMTQ6cmV0dXJuIFAoQnIscGUsMiwwKTtjYXNlIDE2NDpyZXR1cm4gZGUocGUpO2Nhc2UgMjM4OnJldHVybiBEKHBlKTtjYXNlIDIxMjpyZXR1cm4gZmUocGUsb3IpO2Nhc2UgMjEwOnJldHVybiBuZShwZSk7Y2FzZSAyMDY6cmV0dXJuIHZlJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHBlKSYmcGUuZXhwcmVzc2lvbi5raW5kPT09MTA2JiZ2ZS5hZGQocGUubmFtZS5lc2NhcGVkVGV4dCksZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpO2Nhc2UgMjA3OnJldHVybiB2ZSYmcGUuZXhwcmVzc2lvbi5raW5kPT09MTA2JiYoZWU9ITApLGUudmlzaXRFYWNoQ2hpbGQocGUseSxCKTtjYXNlIDI1NzpjYXNlIDIyNjpyZXR1cm4gUChrLHBlLDIsMSk7ZGVmYXVsdDpyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpfX1mdW5jdGlvbiBVKHBlKXtyZXR1cm4gc2UmMiYmc2UmMT9lLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShFLmNyZWF0ZVlpZWxkRXhwcmVzc2lvbih2b2lkIDAsUSgpLmNyZWF0ZUF3YWl0SGVscGVyKGUudmlzaXROb2RlKHBlLmV4cHJlc3Npb24seSxlLmlzRXhwcmVzc2lvbikpKSxwZSkscGUpOmUudmlzaXRFYWNoQ2hpbGQocGUseSxCKX1mdW5jdGlvbiBqKHBlKXtpZihzZSYyJiZzZSYxKXtpZihwZS5hc3Rlcmlza1Rva2VuKXt2YXIgb3I9ZS52aXNpdE5vZGUoZS5EZWJ1Zy5jaGVja0RlZmluZWQocGUuZXhwcmVzc2lvbikseSxlLmlzRXhwcmVzc2lvbik7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlWWllbGRFeHByZXNzaW9uKHZvaWQgMCxRKCkuY3JlYXRlQXdhaXRIZWxwZXIoRS51cGRhdGVZaWVsZEV4cHJlc3Npb24ocGUscGUuYXN0ZXJpc2tUb2tlbixlLnNldFRleHRSYW5nZShRKCkuY3JlYXRlQXN5bmNEZWxlZ2F0b3JIZWxwZXIoZS5zZXRUZXh0UmFuZ2UoUSgpLmNyZWF0ZUFzeW5jVmFsdWVzSGVscGVyKG9yKSxvcikpLG9yKSkpKSxwZSkscGUpfXJldHVybiBlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShFLmNyZWF0ZVlpZWxkRXhwcmVzc2lvbih2b2lkIDAsSWUocGUuZXhwcmVzc2lvbj9lLnZpc2l0Tm9kZShwZS5leHByZXNzaW9uLHksZS5pc0V4cHJlc3Npb24pOkUuY3JlYXRlVm9pZFplcm8oKSkpLHBlKSxwZSl9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQocGUseSxCKX1mdW5jdGlvbiBIKHBlKXtyZXR1cm4gc2UmMiYmc2UmMT9FLnVwZGF0ZVJldHVyblN0YXRlbWVudChwZSxJZShwZS5leHByZXNzaW9uP2UudmlzaXROb2RlKHBlLmV4cHJlc3Npb24seSxlLmlzRXhwcmVzc2lvbik6RS5jcmVhdGVWb2lkWmVybygpKSk6ZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpfWZ1bmN0aW9uIEkocGUpe2lmKHNlJjIpe3ZhciBvcj1lLnVud3JhcElubmVybW9zdFN0YXRlbWVudE9mTGFiZWwocGUpO3JldHVybiBvci5raW5kPT09MjQ0JiZvci5hd2FpdE1vZGlmaWVyP0VlKG9yLHBlKTpFLnJlc3RvcmVFbmNsb3NpbmdMYWJlbChlLnZpc2l0Tm9kZShvcix5LGUuaXNTdGF0ZW1lbnQsRS5saWZ0VG9CbG9jaykscGUpfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKHBlLHksQil9ZnVuY3Rpb24gbChwZSl7Zm9yKHZhciBvcixxcj1bXSxzaT0wLERpPXBlO3NpPERpLmxlbmd0aDtzaSsrKXt2YXIgd2k9RGlbc2ldO2lmKHdpLmtpbmQ9PT0yOTgpe29yJiYocXIucHVzaChFLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKG9yKSksb3I9dm9pZCAwKTt2YXIgWGk9d2kuZXhwcmVzc2lvbjtxci5wdXNoKGUudmlzaXROb2RlKFhpLHksZS5pc0V4cHJlc3Npb24pKX1lbHNlIG9yPWUuYXBwZW5kKG9yLHdpLmtpbmQ9PT0yOTY/RS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQod2kubmFtZSxlLnZpc2l0Tm9kZSh3aS5pbml0aWFsaXplcix5LGUuaXNFeHByZXNzaW9uKSk6ZS52aXNpdE5vZGUod2kseSxlLmlzT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlKSl9cmV0dXJuIG9yJiZxci5wdXNoKEUuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24ob3IpKSxxcn1mdW5jdGlvbiBkKHBlKXtpZihwZS50cmFuc2Zvcm1GbGFncyYzMjc2OCl7dmFyIG9yPWwocGUucHJvcGVydGllcyk7b3IubGVuZ3RoJiZvclswXS5raW5kIT09MjA1JiZvci51bnNoaWZ0KEUuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oKSk7dmFyIHFyPW9yWzBdO2lmKG9yLmxlbmd0aD4xKXtmb3IodmFyIHNpPTE7c2k8b3IubGVuZ3RoO3NpKyspcXI9USgpLmNyZWF0ZUFzc2lnbkhlbHBlcihbcXIsb3Jbc2ldXSk7cmV0dXJuIHFyfWVsc2UgcmV0dXJuIFEoKS5jcmVhdGVBc3NpZ25IZWxwZXIob3IpfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKHBlLHksQil9ZnVuY3Rpb24gRChwZSl7cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQocGUsVixCKX1mdW5jdGlvbiBmZShwZSxvcil7cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQocGUsb3I/Vjp5LEIpfWZ1bmN0aW9uIGcocGUpe3ZhciBvcj14KDIsZS5pc0VmZmVjdGl2ZVN0cmljdE1vZGVTb3VyY2VGaWxlKHBlLEcpPzA6MSk7Sz0hMTt2YXIgcXI9ZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpLHNpPWUuY29uY2F0ZW5hdGUocXIuc3RhdGVtZW50cyxPJiZbRS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChPKSldKSxEaT1FLnVwZGF0ZVNvdXJjZUZpbGUocXIsZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVOb2RlQXJyYXkoc2kpLHBlLnN0YXRlbWVudHMpKTtyZXR1cm4gWChvciksRGl9ZnVuY3Rpb24gbmUocGUpe3JldHVybiBlLnByb2Nlc3NUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oQixwZSx5LHEsJCxlLlByb2Nlc3NMZXZlbC5MaWZ0UmVzdHJpY3Rpb24pfWZ1bmN0aW9uIHVlKHBlLG9yKXtyZXR1cm4gZS5pc0Rlc3RydWN0dXJpbmdBc3NpZ25tZW50KHBlKSYmcGUubGVmdC50cmFuc2Zvcm1GbGFncyYzMjc2OD9lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQXNzaWdubWVudChwZSx5LEIsMSwhb3IpOnBlLm9wZXJhdG9yVG9rZW4ua2luZD09PTI3P0UudXBkYXRlQmluYXJ5RXhwcmVzc2lvbihwZSxlLnZpc2l0Tm9kZShwZS5sZWZ0LFYsZS5pc0V4cHJlc3Npb24pLHBlLm9wZXJhdG9yVG9rZW4sZS52aXNpdE5vZGUocGUucmlnaHQsb3I/Vjp5LGUuaXNFeHByZXNzaW9uKSk6ZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpfWZ1bmN0aW9uIFdlKHBlLG9yKXtpZihvcilyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChwZSxWLEIpO2Zvcih2YXIgcXIsc2k9MDtzaTxwZS5lbGVtZW50cy5sZW5ndGg7c2krKyl7dmFyIERpPXBlLmVsZW1lbnRzW3NpXSx3aT1lLnZpc2l0Tm9kZShEaSxzaTxwZS5lbGVtZW50cy5sZW5ndGgtMT9WOnksZS5pc0V4cHJlc3Npb24pOyhxcnx8d2khPT1EaSkmJihxcnx8KHFyPXBlLmVsZW1lbnRzLnNsaWNlKDAsc2kpKSxxci5wdXNoKHdpKSl9dmFyIFhpPXFyP2Uuc2V0VGV4dFJhbmdlKEUuY3JlYXRlTm9kZUFycmF5KHFyKSxwZS5lbGVtZW50cyk6cGUuZWxlbWVudHM7cmV0dXJuIEUudXBkYXRlQ29tbWFMaXN0RXhwcmVzc2lvbihwZSxYaSl9ZnVuY3Rpb24gRmUocGUpe2lmKHBlLnZhcmlhYmxlRGVjbGFyYXRpb24mJmUuaXNCaW5kaW5nUGF0dGVybihwZS52YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUpJiZwZS52YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUudHJhbnNmb3JtRmxhZ3MmMzI3Njgpe3ZhciBvcj1FLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHBlLnZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSkscXI9RS51cGRhdGVWYXJpYWJsZURlY2xhcmF0aW9uKHBlLnZhcmlhYmxlRGVjbGFyYXRpb24scGUudmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lLHZvaWQgMCx2b2lkIDAsb3IpLHNpPWUuZmxhdHRlbkRlc3RydWN0dXJpbmdCaW5kaW5nKHFyLHksQiwxKSxEaT1lLnZpc2l0Tm9kZShwZS5ibG9jayx5LGUuaXNCbG9jayk7cmV0dXJuIGUuc29tZShzaSkmJihEaT1FLnVwZGF0ZUJsb2NrKERpLFZlKFtFLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxzaSldLERpLnN0YXRlbWVudHMsITApKSksRS51cGRhdGVDYXRjaENsYXVzZShwZSxFLnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb24ocGUudmFyaWFibGVEZWNsYXJhdGlvbixvcix2b2lkIDAsdm9pZCAwLHZvaWQgMCksRGkpfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKHBlLHksQil9ZnVuY3Rpb24gWihwZSl7aWYoZS5oYXNTeW50YWN0aWNNb2RpZmllcihwZSwxKSl7dmFyIG9yPUs7Sz0hMDt2YXIgcXI9ZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpO3JldHVybiBLPW9yLHFyfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKHBlLHksQil9ZnVuY3Rpb24gQmUocGUpe2lmKEspe3ZhciBvcj1LO0s9ITE7dmFyIHFyPWdlKHBlLCEwKTtyZXR1cm4gSz1vcixxcn1yZXR1cm4gZ2UocGUsITEpfWZ1bmN0aW9uIGdlKHBlLG9yKXtyZXR1cm4gZS5pc0JpbmRpbmdQYXR0ZXJuKHBlLm5hbWUpJiZwZS5uYW1lLnRyYW5zZm9ybUZsYWdzJjMyNzY4P2UuZmxhdHRlbkRlc3RydWN0dXJpbmdCaW5kaW5nKHBlLHksQiwxLHZvaWQgMCxvcik6ZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpfWZ1bmN0aW9uIFJlKHBlKXtyZXR1cm4gRS51cGRhdGVGb3JTdGF0ZW1lbnQocGUsZS52aXNpdE5vZGUocGUuaW5pdGlhbGl6ZXIsVixlLmlzRm9ySW5pdGlhbGl6ZXIpLGUudmlzaXROb2RlKHBlLmNvbmRpdGlvbix5LGUuaXNFeHByZXNzaW9uKSxlLnZpc2l0Tm9kZShwZS5pbmNyZW1lbnRvcixWLGUuaXNFeHByZXNzaW9uKSxlLnZpc2l0SXRlcmF0aW9uQm9keShwZS5zdGF0ZW1lbnQseSxCKSl9ZnVuY3Rpb24gemUocGUpe3JldHVybiBlLnZpc2l0RWFjaENoaWxkKHBlLFYsQil9ZnVuY3Rpb24gRWUocGUsb3Ipe3ZhciBxcj14KDAsMik7cGUuaW5pdGlhbGl6ZXIudHJhbnNmb3JtRmxhZ3MmMzI3NjgmJihwZT1IZShwZSkpO3ZhciBzaT1wZS5hd2FpdE1vZGlmaWVyP19lKHBlLG9yLHFyKTpFLnJlc3RvcmVFbmNsb3NpbmdMYWJlbChlLnZpc2l0RWFjaENoaWxkKHBlLHksQiksb3IpO3JldHVybiBYKHFyKSxzaX1mdW5jdGlvbiBIZShwZSl7dmFyIG9yPWUuc2tpcFBhcmVudGhlc2VzKHBlLmluaXRpYWxpemVyKTtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qob3IpfHxlLmlzQXNzaWdubWVudFBhdHRlcm4ob3IpKXt2YXIgcXI9dm9pZCAwLHNpPXZvaWQgMCxEaT1FLmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApLHdpPVtlLmNyZWF0ZUZvck9mQmluZGluZ1N0YXRlbWVudChFLG9yLERpKV07cmV0dXJuIGUuaXNCbG9jayhwZS5zdGF0ZW1lbnQpPyhlLmFkZFJhbmdlKHdpLHBlLnN0YXRlbWVudC5zdGF0ZW1lbnRzKSxxcj1wZS5zdGF0ZW1lbnQsc2k9cGUuc3RhdGVtZW50LnN0YXRlbWVudHMpOnBlLnN0YXRlbWVudCYmKGUuYXBwZW5kKHdpLHBlLnN0YXRlbWVudCkscXI9cGUuc3RhdGVtZW50LHNpPXBlLnN0YXRlbWVudCksRS51cGRhdGVGb3JPZlN0YXRlbWVudChwZSxwZS5hd2FpdE1vZGlmaWVyLGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW2Uuc2V0VGV4dFJhbmdlKEUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihEaSkscGUuaW5pdGlhbGl6ZXIpXSwxKSxwZS5pbml0aWFsaXplcikscGUuZXhwcmVzc2lvbixlLnNldFRleHRSYW5nZShFLmNyZWF0ZUJsb2NrKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlTm9kZUFycmF5KHdpKSxzaSksITApLHFyKSl9cmV0dXJuIHBlfWZ1bmN0aW9uIHJyKHBlLG9yKXt2YXIgcXI9ZS5jcmVhdGVGb3JPZkJpbmRpbmdTdGF0ZW1lbnQoRSxwZS5pbml0aWFsaXplcixvciksc2ksRGksd2k9W2UudmlzaXROb2RlKHFyLHksZS5pc1N0YXRlbWVudCldLFhpPWUudmlzaXRJdGVyYXRpb25Cb2R5KHBlLnN0YXRlbWVudCx5LEIpO3JldHVybiBlLmlzQmxvY2soWGkpPyhlLmFkZFJhbmdlKHdpLFhpLnN0YXRlbWVudHMpLHNpPVhpLERpPVhpLnN0YXRlbWVudHMpOndpLnB1c2goWGkpLGUuc2V0RW1pdEZsYWdzKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlQmxvY2soZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVOb2RlQXJyYXkod2kpLERpKSwhMCksc2kpLDQzMil9ZnVuY3Rpb24gSWUocGUpe3JldHVybiBzZSYxP0UuY3JlYXRlWWllbGRFeHByZXNzaW9uKHZvaWQgMCxRKCkuY3JlYXRlQXdhaXRIZWxwZXIocGUpKTpFLmNyZWF0ZUF3YWl0RXhwcmVzc2lvbihwZSl9ZnVuY3Rpb24gX2UocGUsb3IscXIpe3ZhciBzaT1lLnZpc2l0Tm9kZShwZS5leHByZXNzaW9uLHksZS5pc0V4cHJlc3Npb24pLERpPWUuaXNJZGVudGlmaWVyKHNpKT9FLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHNpKTpFLmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApLHdpPWUuaXNJZGVudGlmaWVyKHNpKT9FLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKERpKTpFLmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApLFhpPUUuY3JlYXRlVW5pcXVlTmFtZShcImVcIiksZXQ9RS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShYaSksR2k9RS5jcmVhdGVUZW1wVmFyaWFibGUodm9pZCAwKSxXdD1lLnNldFRleHRSYW5nZShRKCkuY3JlYXRlQXN5bmNWYWx1ZXNIZWxwZXIoc2kpLHBlLmV4cHJlc3Npb24pLFp0PUUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRGksXCJuZXh0XCIpLHZvaWQgMCxbXSksX3I9RS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24od2ksXCJkb25lXCIpLHBpPUUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHdpLFwidmFsdWVcIiksYWU9RS5jcmVhdGVGdW5jdGlvbkNhbGxDYWxsKEdpLERpLFtdKTtwKFhpKSxwKEdpKTt2YXIgWGU9cXImMj9FLmlubGluZUV4cHJlc3Npb25zKFtFLmNyZWF0ZUFzc2lnbm1lbnQoWGksRS5jcmVhdGVWb2lkWmVybygpKSxXdF0pOld0LEpyPWUuc2V0RW1pdEZsYWdzKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlRm9yU3RhdGVtZW50KGUuc2V0RW1pdEZsYWdzKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW2Uuc2V0VGV4dFJhbmdlKEUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihEaSx2b2lkIDAsdm9pZCAwLFhlKSxwZS5leHByZXNzaW9uKSxFLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24od2kpXSkscGUuZXhwcmVzc2lvbiksMjA5NzE1MiksRS5jcmVhdGVDb21tYShFLmNyZWF0ZUFzc2lnbm1lbnQod2ksSWUoWnQpKSxFLmNyZWF0ZUxvZ2ljYWxOb3QoX3IpKSx2b2lkIDAscnIocGUscGkpKSxwZSksMjU2KTtyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoSnIscGUpLEUuY3JlYXRlVHJ5U3RhdGVtZW50KEUuY3JlYXRlQmxvY2soW0UucmVzdG9yZUVuY2xvc2luZ0xhYmVsKEpyLG9yKV0pLEUuY3JlYXRlQ2F0Y2hDbGF1c2UoRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGV0KSxlLnNldEVtaXRGbGFncyhFLmNyZWF0ZUJsb2NrKFtFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoRS5jcmVhdGVBc3NpZ25tZW50KFhpLEUuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oW0UuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwiZXJyb3JcIixldCldKSkpXSksMSkpLEUuY3JlYXRlQmxvY2soW0UuY3JlYXRlVHJ5U3RhdGVtZW50KEUuY3JlYXRlQmxvY2soW2Uuc2V0RW1pdEZsYWdzKEUuY3JlYXRlSWZTdGF0ZW1lbnQoRS5jcmVhdGVMb2dpY2FsQW5kKEUuY3JlYXRlTG9naWNhbEFuZCh3aSxFLmNyZWF0ZUxvZ2ljYWxOb3QoX3IpKSxFLmNyZWF0ZUFzc2lnbm1lbnQoR2ksRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRGksXCJyZXR1cm5cIikpKSxFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoSWUoYWUpKSksMSldKSx2b2lkIDAsZS5zZXRFbWl0RmxhZ3MoRS5jcmVhdGVCbG9jayhbZS5zZXRFbWl0RmxhZ3MoRS5jcmVhdGVJZlN0YXRlbWVudChYaSxFLmNyZWF0ZVRocm93U3RhdGVtZW50KEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFhpLFwiZXJyb3JcIikpKSwxKV0pLDEpKV0pKX1mdW5jdGlvbiB3ZShwZSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0Tm9kZShwZSxlLmlzUGFyYW1ldGVyKSxkZShwZSl9ZnVuY3Rpb24gZGUocGUpe3JldHVybiBKIT1udWxsJiZKLmhhcyhwZSk/RS51cGRhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihwZSx2b2lkIDAsdm9pZCAwLHBlLmRvdERvdERvdFRva2VuLGUuaXNCaW5kaW5nUGF0dGVybihwZS5uYW1lKT9FLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHBlKTpwZS5uYW1lLHZvaWQgMCx2b2lkIDAsdm9pZCAwKTpwZS50cmFuc2Zvcm1GbGFncyYzMjc2OD9FLnVwZGF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHBlLHZvaWQgMCx2b2lkIDAscGUuZG90RG90RG90VG9rZW4sRS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShwZSksdm9pZCAwLHZvaWQgMCxlLnZpc2l0Tm9kZShwZS5pbml0aWFsaXplcix5LGUuaXNFeHByZXNzaW9uKSk6ZS52aXNpdEVhY2hDaGlsZChwZSx5LEIpfWZ1bmN0aW9uIHllKHBlKXtmb3IodmFyIG9yLHFyPTAsc2k9cGUucGFyYW1ldGVycztxcjxzaS5sZW5ndGg7cXIrKyl7dmFyIERpPXNpW3FyXTtvcj9vci5hZGQoRGkpOkRpLnRyYW5zZm9ybUZsYWdzJjMyNzY4JiYob3I9bmV3IGUuU2V0KX1yZXR1cm4gb3J9ZnVuY3Rpb24gQWUocGUpe3ZhciBvcj1zZSxxcj1KO3NlPWUuZ2V0RnVuY3Rpb25GbGFncyhwZSksSj15ZShwZSk7dmFyIHNpPUUudXBkYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbihwZSx2b2lkIDAscGUubW9kaWZpZXJzLGUudmlzaXRQYXJhbWV0ZXJMaXN0KHBlLnBhcmFtZXRlcnMsd2UsQiksbihwZSkpO3JldHVybiBzZT1vcixKPXFyLHNpfWZ1bmN0aW9uIGVyKHBlKXt2YXIgb3I9c2UscXI9SjtzZT1lLmdldEZ1bmN0aW9uRmxhZ3MocGUpLEo9eWUocGUpO3ZhciBzaT1FLnVwZGF0ZUdldEFjY2Vzc29yRGVjbGFyYXRpb24ocGUsdm9pZCAwLHBlLm1vZGlmaWVycyxlLnZpc2l0Tm9kZShwZS5uYW1lLHksZS5pc1Byb3BlcnR5TmFtZSksZS52aXNpdFBhcmFtZXRlckxpc3QocGUucGFyYW1ldGVycyx3ZSxCKSx2b2lkIDAsbihwZSkpO3JldHVybiBzZT1vcixKPXFyLHNpfWZ1bmN0aW9uIGlyKHBlKXt2YXIgb3I9c2UscXI9SjtzZT1lLmdldEZ1bmN0aW9uRmxhZ3MocGUpLEo9eWUocGUpO3ZhciBzaT1FLnVwZGF0ZVNldEFjY2Vzc29yRGVjbGFyYXRpb24ocGUsdm9pZCAwLHBlLm1vZGlmaWVycyxlLnZpc2l0Tm9kZShwZS5uYW1lLHksZS5pc1Byb3BlcnR5TmFtZSksZS52aXNpdFBhcmFtZXRlckxpc3QocGUucGFyYW1ldGVycyx3ZSxCKSxuKHBlKSk7cmV0dXJuIHNlPW9yLEo9cXIsc2l9ZnVuY3Rpb24gQ3IocGUpe3ZhciBvcj1zZSxxcj1KO3NlPWUuZ2V0RnVuY3Rpb25GbGFncyhwZSksSj15ZShwZSk7dmFyIHNpPUUudXBkYXRlTWV0aG9kRGVjbGFyYXRpb24ocGUsdm9pZCAwLHNlJjE/ZS52aXNpdE5vZGVzKHBlLm1vZGlmaWVycyxMLGUuaXNNb2RpZmllcik6cGUubW9kaWZpZXJzLHNlJjI/dm9pZCAwOnBlLmFzdGVyaXNrVG9rZW4sZS52aXNpdE5vZGUocGUubmFtZSx5LGUuaXNQcm9wZXJ0eU5hbWUpLGUudmlzaXROb2RlKHZvaWQgMCx5LGUuaXNUb2tlbiksdm9pZCAwLGUudmlzaXRQYXJhbWV0ZXJMaXN0KHBlLnBhcmFtZXRlcnMsd2UsQiksdm9pZCAwLHNlJjImJnNlJjE/TmUocGUpOm4ocGUpKTtyZXR1cm4gc2U9b3IsSj1xcixzaX1mdW5jdGlvbiBZZShwZSl7dmFyIG9yPXNlLHFyPUo7c2U9ZS5nZXRGdW5jdGlvbkZsYWdzKHBlKSxKPXllKHBlKTt2YXIgc2k9RS51cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKHBlLHZvaWQgMCxzZSYxP2UudmlzaXROb2RlcyhwZS5tb2RpZmllcnMsTCxlLmlzTW9kaWZpZXIpOnBlLm1vZGlmaWVycyxzZSYyP3ZvaWQgMDpwZS5hc3Rlcmlza1Rva2VuLHBlLm5hbWUsdm9pZCAwLGUudmlzaXRQYXJhbWV0ZXJMaXN0KHBlLnBhcmFtZXRlcnMsd2UsQiksdm9pZCAwLHNlJjImJnNlJjE/TmUocGUpOm4ocGUpKTtyZXR1cm4gc2U9b3IsSj1xcixzaX1mdW5jdGlvbiBCcihwZSl7dmFyIG9yPXNlLHFyPUo7c2U9ZS5nZXRGdW5jdGlvbkZsYWdzKHBlKSxKPXllKHBlKTt2YXIgc2k9RS51cGRhdGVBcnJvd0Z1bmN0aW9uKHBlLHBlLm1vZGlmaWVycyx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QocGUucGFyYW1ldGVycyx3ZSxCKSx2b2lkIDAscGUuZXF1YWxzR3JlYXRlclRoYW5Ub2tlbixuKHBlKSk7cmV0dXJuIHNlPW9yLEo9cXIsc2l9ZnVuY3Rpb24gRXIocGUpe3ZhciBvcj1zZSxxcj1KO3NlPWUuZ2V0RnVuY3Rpb25GbGFncyhwZSksSj15ZShwZSk7dmFyIHNpPUUudXBkYXRlRnVuY3Rpb25FeHByZXNzaW9uKHBlLHNlJjE/ZS52aXNpdE5vZGVzKHBlLm1vZGlmaWVycyxMLGUuaXNNb2RpZmllcik6cGUubW9kaWZpZXJzLHNlJjI/dm9pZCAwOnBlLmFzdGVyaXNrVG9rZW4scGUubmFtZSx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QocGUucGFyYW1ldGVycyx3ZSxCKSx2b2lkIDAsc2UmMiYmc2UmMT9OZShwZSk6bihwZSkpO3JldHVybiBzZT1vcixKPXFyLHNpfWZ1bmN0aW9uIE5lKHBlKXtsZSgpO3ZhciBvcj1bXSxxcj1FLmNvcHlQcm9sb2d1ZShwZS5ib2R5LnN0YXRlbWVudHMsb3IsITEseSk7bHIob3IscGUpO3ZhciBzaT12ZSxEaT1lZTt2ZT1uZXcgZS5TZXQsZWU9ITE7dmFyIHdpPUUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KFEoKS5jcmVhdGVBc3luY0dlbmVyYXRvckhlbHBlcihFLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih2b2lkIDAsRS5jcmVhdGVUb2tlbig0MSkscGUubmFtZSYmRS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShwZS5uYW1lKSx2b2lkIDAsW10sdm9pZCAwLEUudXBkYXRlQmxvY2socGUuYm9keSxlLnZpc2l0TGV4aWNhbEVudmlyb25tZW50KHBlLmJvZHkuc3RhdGVtZW50cyx5LEIscXIpKSksISEoUiYxKSkpLFhpPW9lPj0yJiZtLmdldE5vZGVDaGVja0ZsYWdzKHBlKSY2MTQ0O2lmKFhpKXtiZSgpO3ZhciBldD1lLmNyZWF0ZVN1cGVyQWNjZXNzVmFyaWFibGVTdGF0ZW1lbnQoRSxtLHBlLHZlKTtoZVtlLmdldE5vZGVJZChldCldPSEwLGUuaW5zZXJ0U3RhdGVtZW50c0FmdGVyU3RhbmRhcmRQcm9sb2d1ZShvcixbZXRdKX1vci5wdXNoKHdpKSxlLmluc2VydFN0YXRlbWVudHNBZnRlclN0YW5kYXJkUHJvbG9ndWUob3IsTigpKTt2YXIgR2k9RS51cGRhdGVCbG9jayhwZS5ib2R5LG9yKTtyZXR1cm4gWGkmJmVlJiYobS5nZXROb2RlQ2hlY2tGbGFncyhwZSkmNDA5Nj9lLmFkZEVtaXRIZWxwZXIoR2ksZS5hZHZhbmNlZEFzeW5jU3VwZXJIZWxwZXIpOm0uZ2V0Tm9kZUNoZWNrRmxhZ3MocGUpJjIwNDgmJmUuYWRkRW1pdEhlbHBlcihHaSxlLmFzeW5jU3VwZXJIZWxwZXIpKSx2ZT1zaSxlZT1EaSxHaX1mdW5jdGlvbiBuKHBlKXt2YXIgb3I7bGUoKTt2YXIgcXI9MCxzaT1bXSxEaT0ob3I9ZS52aXNpdE5vZGUocGUuYm9keSx5LGUuaXNDb25jaXNlQm9keSkpIT09bnVsbCYmb3IhPT12b2lkIDA/b3I6RS5jcmVhdGVCbG9jayhbXSk7ZS5pc0Jsb2NrKERpKSYmKHFyPUUuY29weVByb2xvZ3VlKERpLnN0YXRlbWVudHMsc2ksITEseSkpLGUuYWRkUmFuZ2Uoc2ksbHIodm9pZCAwLHBlKSk7dmFyIHdpPU4oKTtpZihxcj4wfHxlLnNvbWUoc2kpfHxlLnNvbWUod2kpKXt2YXIgWGk9RS5jb252ZXJ0ZXJzLmNvbnZlcnRUb0Z1bmN0aW9uQmxvY2soRGksITApO3JldHVybiBlLmluc2VydFN0YXRlbWVudHNBZnRlclN0YW5kYXJkUHJvbG9ndWUoc2ksd2kpLGUuYWRkUmFuZ2Uoc2ksWGkuc3RhdGVtZW50cy5zbGljZShxcikpLEUudXBkYXRlQmxvY2soWGksZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVOb2RlQXJyYXkoc2kpLFhpLnN0YXRlbWVudHMpKX1yZXR1cm4gRGl9ZnVuY3Rpb24gbHIocGUsb3Ipe2Zvcih2YXIgcXI9ITEsc2k9MCxEaT1vci5wYXJhbWV0ZXJzO3NpPERpLmxlbmd0aDtzaSsrKXt2YXIgd2k9RGlbc2ldO2lmKHFyKXtpZihlLmlzQmluZGluZ1BhdHRlcm4od2kubmFtZSkpe2lmKHdpLm5hbWUuZWxlbWVudHMubGVuZ3RoPjApe3ZhciBYaT1lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQmluZGluZyh3aSx5LEIsMCxFLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHdpKSk7aWYoZS5zb21lKFhpKSl7dmFyIGV0PUUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoWGkpLEdpPUUuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLGV0KTtlLnNldEVtaXRGbGFncyhHaSwxMDQ4NTc2KSxwZT1lLmFwcGVuZChwZSxHaSl9fWVsc2UgaWYod2kuaW5pdGlhbGl6ZXIpe3ZhciBXdD1FLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHdpKSxadD1lLnZpc2l0Tm9kZSh3aS5pbml0aWFsaXplcix5LGUuaXNFeHByZXNzaW9uKSxfcj1FLmNyZWF0ZUFzc2lnbm1lbnQoV3QsWnQpLEdpPUUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChfcik7ZS5zZXRFbWl0RmxhZ3MoR2ksMTA0ODU3NikscGU9ZS5hcHBlbmQocGUsR2kpfX1lbHNlIGlmKHdpLmluaXRpYWxpemVyKXt2YXIgV3Q9RS5jbG9uZU5vZGUod2kubmFtZSk7ZS5zZXRUZXh0UmFuZ2UoV3Qsd2kubmFtZSksZS5zZXRFbWl0RmxhZ3MoV3QsNDgpO3ZhciBadD1lLnZpc2l0Tm9kZSh3aS5pbml0aWFsaXplcix5LGUuaXNFeHByZXNzaW9uKTtlLmFkZEVtaXRGbGFncyhadCwxNTg0KTt2YXIgX3I9RS5jcmVhdGVBc3NpZ25tZW50KFd0LFp0KTtlLnNldFRleHRSYW5nZShfcix3aSksZS5zZXRFbWl0RmxhZ3MoX3IsMTUzNik7dmFyIHBpPUUuY3JlYXRlQmxvY2soW0UuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChfcildKTtlLnNldFRleHRSYW5nZShwaSx3aSksZS5zZXRFbWl0RmxhZ3MocGksMTk1Myk7dmFyIGFlPUUuY3JlYXRlVHlwZUNoZWNrKEUuY2xvbmVOb2RlKHdpLm5hbWUpLFwidW5kZWZpbmVkXCIpLEdpPUUuY3JlYXRlSWZTdGF0ZW1lbnQoYWUscGkpO2Uuc3RhcnRPbk5ld0xpbmUoR2kpLGUuc2V0VGV4dFJhbmdlKEdpLHdpKSxlLnNldEVtaXRGbGFncyhHaSwxMDUwNTI4KSxwZT1lLmFwcGVuZChwZSxHaSl9fWVsc2UgaWYod2kudHJhbnNmb3JtRmxhZ3MmMzI3Njgpe3FyPSEwO3ZhciBYaT1lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQmluZGluZyh3aSx5LEIsMSxFLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHdpKSwhMSwhMCk7aWYoZS5zb21lKFhpKSl7dmFyIGV0PUUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoWGkpLEdpPUUuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLGV0KTtlLnNldEVtaXRGbGFncyhHaSwxMDQ4NTc2KSxwZT1lLmFwcGVuZChwZSxHaSl9fX1yZXR1cm4gcGV9ZnVuY3Rpb24gYmUoKXsoYiYxKT09PTAmJihifD0xLEIuZW5hYmxlU3Vic3RpdHV0aW9uKDIwOCksQi5lbmFibGVTdWJzdGl0dXRpb24oMjA2KSxCLmVuYWJsZVN1YnN0aXR1dGlvbigyMDcpLEIuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigyNTcpLEIuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigxNjkpLEIuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigxNzIpLEIuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigxNzMpLEIuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigxNzEpLEIuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigyMzcpKX1mdW5jdGlvbiBHZShwZSxvcixxcil7aWYoYiYxJiZpaShvcikpe3ZhciBzaT1tLmdldE5vZGVDaGVja0ZsYWdzKG9yKSY2MTQ0O2lmKHNpIT09aWUpe3ZhciBEaT1pZTtpZT1zaSxmKHBlLG9yLHFyKSxpZT1EaTtyZXR1cm59fWVsc2UgaWYoYiYmaGVbZS5nZXROb2RlSWQob3IpXSl7dmFyIERpPWllO2llPTAsZihwZSxvcixxciksaWU9RGk7cmV0dXJufWYocGUsb3IscXIpfWZ1bmN0aW9uIHVyKHBlLG9yKXtyZXR1cm4gb3I9VChwZSxvcikscGU9PT0xJiZpZT95cihvcik6b3J9ZnVuY3Rpb24geXIocGUpe3N3aXRjaChwZS5raW5kKXtjYXNlIDIwNjpyZXR1cm4gSXIocGUpO2Nhc2UgMjA3OnJldHVybiB3cihwZSk7Y2FzZSAyMDg6cmV0dXJuIFVyKHBlKX1yZXR1cm4gcGV9ZnVuY3Rpb24gSXIocGUpe3JldHVybiBwZS5leHByZXNzaW9uLmtpbmQ9PT0xMDY/ZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVVbmlxdWVOYW1lKFwiX3N1cGVyXCIsNDgpLHBlLm5hbWUpLHBlKTpwZX1mdW5jdGlvbiB3cihwZSl7cmV0dXJuIHBlLmV4cHJlc3Npb24ua2luZD09PTEwNj9taShwZS5hcmd1bWVudEV4cHJlc3Npb24scGUpOnBlfWZ1bmN0aW9uIFVyKHBlKXt2YXIgb3I9cGUuZXhwcmVzc2lvbjtpZihlLmlzU3VwZXJQcm9wZXJ0eShvcikpe3ZhciBxcj1lLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG9yKT9Jcihvcik6d3Iob3IpO3JldHVybiBFLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHFyLFwiY2FsbFwiKSx2b2lkIDAsVmUoW0UuY3JlYXRlVGhpcygpXSxwZS5hcmd1bWVudHMsITApKX1yZXR1cm4gcGV9ZnVuY3Rpb24gaWkocGUpe3ZhciBvcj1wZS5raW5kO3JldHVybiBvcj09PTI1N3x8b3I9PT0xNzF8fG9yPT09MTY5fHxvcj09PTE3Mnx8b3I9PT0xNzN9ZnVuY3Rpb24gbWkocGUsb3Ipe3JldHVybiBpZSY0MDk2P2Uuc2V0VGV4dFJhbmdlKEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwiX3N1cGVySW5kZXhcIiksdm9pZCAwLFtwZV0pLFwidmFsdWVcIiksb3IpOmUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwiX3N1cGVySW5kZXhcIiksdm9pZCAwLFtwZV0pLG9yKX19ZS50cmFuc2Zvcm1FUzIwMTg9d30pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoQyl7dmFyIHc9Qy5mYWN0b3J5O3JldHVybiBlLmNoYWluQnVuZGxlKEMsQik7ZnVuY3Rpb24gQihsZSl7cmV0dXJuIGxlLmlzRGVjbGFyYXRpb25GaWxlP2xlOmUudmlzaXRFYWNoQ2hpbGQobGUsRSxDKX1mdW5jdGlvbiBFKGxlKXtpZigobGUudHJhbnNmb3JtRmxhZ3MmNjQpPT09MClyZXR1cm4gbGU7c3dpdGNoKGxlLmtpbmQpe2Nhc2UgMjkyOnJldHVybiBRKGxlKTtkZWZhdWx0OnJldHVybiBlLnZpc2l0RWFjaENoaWxkKGxlLEUsQyl9fWZ1bmN0aW9uIFEobGUpe3JldHVybiBsZS52YXJpYWJsZURlY2xhcmF0aW9uP2UudmlzaXRFYWNoQ2hpbGQobGUsRSxDKTp3LnVwZGF0ZUNhdGNoQ2xhdXNlKGxlLHcuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbih3LmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApKSxlLnZpc2l0Tm9kZShsZS5ibG9jayxFLGUuaXNCbG9jaykpfX1lLnRyYW5zZm9ybUVTMjAxOT1hfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShDKXt2YXIgdz1DLmZhY3RvcnksQj1DLmhvaXN0VmFyaWFibGVEZWNsYXJhdGlvbjtyZXR1cm4gZS5jaGFpbkJ1bmRsZShDLEUpO2Z1bmN0aW9uIEUoYil7cmV0dXJuIGIuaXNEZWNsYXJhdGlvbkZpbGU/YjplLnZpc2l0RWFjaENoaWxkKGIsUSxDKX1mdW5jdGlvbiBRKGIpe2lmKChiLnRyYW5zZm9ybUZsYWdzJjMyKT09PTApcmV0dXJuIGI7c3dpdGNoKGIua2luZCl7Y2FzZSAyMDg6e3ZhciBzZT1tKGIsITEpO3JldHVybiBlLkRlYnVnLmFzc2VydE5vdE5vZGUoc2UsZS5pc1N5bnRoZXRpY1JlZmVyZW5jZSksc2V9Y2FzZSAyMDY6Y2FzZSAyMDc6aWYoZS5pc09wdGlvbmFsQ2hhaW4oYikpe3ZhciBzZT1vZShiLCExLCExKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROb3ROb2RlKHNlLGUuaXNTeW50aGV0aWNSZWZlcmVuY2UpLHNlfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKGIsUSxDKTtjYXNlIDIyMTpyZXR1cm4gYi5vcGVyYXRvclRva2VuLmtpbmQ9PT02MD9UKGIpOmUudmlzaXRFYWNoQ2hpbGQoYixRLEMpO2Nhc2UgMjE1OnJldHVybiBLKGIpO2RlZmF1bHQ6cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoYixRLEMpfX1mdW5jdGlvbiBsZShiKXtlLkRlYnVnLmFzc2VydE5vdE5vZGUoYixlLmlzTm9uTnVsbENoYWluKTtmb3IodmFyIHNlPVtiXTshYi5xdWVzdGlvbkRvdFRva2VuJiYhZS5pc1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbihiKTspYj1lLmNhc3QoZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zKGIuZXhwcmVzc2lvbiksZS5pc09wdGlvbmFsQ2hhaW4pLGUuRGVidWcuYXNzZXJ0Tm90Tm9kZShiLGUuaXNOb25OdWxsQ2hhaW4pLHNlLnVuc2hpZnQoYik7cmV0dXJue2V4cHJlc3Npb246Yi5leHByZXNzaW9uLGNoYWluOnNlfX1mdW5jdGlvbiBOKGIsc2UsSil7dmFyIGllPUcoYi5leHByZXNzaW9uLHNlLEopO3JldHVybiBlLmlzU3ludGhldGljUmVmZXJlbmNlKGllKT93LmNyZWF0ZVN5bnRoZXRpY1JlZmVyZW5jZUV4cHJlc3Npb24ody51cGRhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihiLGllLmV4cHJlc3Npb24pLGllLnRoaXNBcmcpOncudXBkYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oYixpZSl9ZnVuY3Rpb24gcChiLHNlLEope2lmKGUuaXNPcHRpb25hbENoYWluKGIpKXJldHVybiBvZShiLHNlLEopO3ZhciBpZT1lLnZpc2l0Tm9kZShiLmV4cHJlc3Npb24sUSxlLmlzRXhwcmVzc2lvbik7ZS5EZWJ1Zy5hc3NlcnROb3ROb2RlKGllLGUuaXNTeW50aGV0aWNSZWZlcmVuY2UpO3ZhciBSO3JldHVybiBzZSYmKGUuaXNTaW1wbGVDb3BpYWJsZUV4cHJlc3Npb24oaWUpP1I9aWU6KFI9dy5jcmVhdGVUZW1wVmFyaWFibGUoQiksaWU9dy5jcmVhdGVBc3NpZ25tZW50KFIsaWUpKSksaWU9Yi5raW5kPT09MjA2P3cudXBkYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGIsaWUsZS52aXNpdE5vZGUoYi5uYW1lLFEsZS5pc0lkZW50aWZpZXIpKTp3LnVwZGF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGIsaWUsZS52aXNpdE5vZGUoYi5hcmd1bWVudEV4cHJlc3Npb24sUSxlLmlzRXhwcmVzc2lvbikpLFI/dy5jcmVhdGVTeW50aGV0aWNSZWZlcmVuY2VFeHByZXNzaW9uKGllLFIpOmllfWZ1bmN0aW9uIG0oYixzZSl7aWYoZS5pc09wdGlvbmFsQ2hhaW4oYikpcmV0dXJuIG9lKGIsc2UsITEpO2lmKGUuaXNQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihiLmV4cHJlc3Npb24pJiZlLmlzT3B0aW9uYWxDaGFpbihlLnNraXBQYXJlbnRoZXNlcyhiLmV4cHJlc3Npb24pKSl7dmFyIEo9TihiLmV4cHJlc3Npb24sITAsITEpLGllPWUudmlzaXROb2RlcyhiLmFyZ3VtZW50cyxRLGUuaXNFeHByZXNzaW9uKTtyZXR1cm4gZS5pc1N5bnRoZXRpY1JlZmVyZW5jZShKKT9lLnNldFRleHRSYW5nZSh3LmNyZWF0ZUZ1bmN0aW9uQ2FsbENhbGwoSi5leHByZXNzaW9uLEoudGhpc0FyZyxpZSksYik6dy51cGRhdGVDYWxsRXhwcmVzc2lvbihiLEosdm9pZCAwLGllKX1yZXR1cm4gZS52aXNpdEVhY2hDaGlsZChiLFEsQyl9ZnVuY3Rpb24gRyhiLHNlLEope3N3aXRjaChiLmtpbmQpe2Nhc2UgMjEyOnJldHVybiBOKGIsc2UsSik7Y2FzZSAyMDY6Y2FzZSAyMDc6cmV0dXJuIHAoYixzZSxKKTtjYXNlIDIwODpyZXR1cm4gbShiLHNlKTtkZWZhdWx0OnJldHVybiBlLnZpc2l0Tm9kZShiLFEsZS5pc0V4cHJlc3Npb24pfX1mdW5jdGlvbiBvZShiLHNlLEope3ZhciBpZT1sZShiKSxSPWllLmV4cHJlc3Npb24scT1pZS5jaGFpbixPPUcoZS5za2lwUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb25zKFIpLGUuaXNDYWxsQ2hhaW4ocVswXSksITEpLHZlPWUuaXNTeW50aGV0aWNSZWZlcmVuY2UoTyk/Ty50aGlzQXJnOnZvaWQgMCxlZT1lLmlzU3ludGhldGljUmVmZXJlbmNlKE8pP08uZXhwcmVzc2lvbjpPLGhlPXcucmVzdG9yZU91dGVyRXhwcmVzc2lvbnMoUixlZSw4KTtlLmlzU2ltcGxlQ29waWFibGVFeHByZXNzaW9uKGVlKXx8KGVlPXcuY3JlYXRlVGVtcFZhcmlhYmxlKEIpLGhlPXcuY3JlYXRlQXNzaWdubWVudChlZSxoZSkpO2Zvcih2YXIgRj1lZSx4LFg9MDtYPHEubGVuZ3RoO1grKyl7dmFyICQ9cVtYXTtzd2l0Y2goJC5raW5kKXtjYXNlIDIwNjpjYXNlIDIwNzpYPT09cS5sZW5ndGgtMSYmc2UmJihlLmlzU2ltcGxlQ29waWFibGVFeHByZXNzaW9uKEYpP3g9RjooeD13LmNyZWF0ZVRlbXBWYXJpYWJsZShCKSxGPXcuY3JlYXRlQXNzaWdubWVudCh4LEYpKSksRj0kLmtpbmQ9PT0yMDY/dy5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRixlLnZpc2l0Tm9kZSgkLm5hbWUsUSxlLmlzSWRlbnRpZmllcikpOncuY3JlYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oRixlLnZpc2l0Tm9kZSgkLmFyZ3VtZW50RXhwcmVzc2lvbixRLGUuaXNFeHByZXNzaW9uKSk7YnJlYWs7Y2FzZSAyMDg6WD09PTAmJnZlPyhlLmlzR2VuZXJhdGVkSWRlbnRpZmllcih2ZSl8fCh2ZT13LmNsb25lTm9kZSh2ZSksZS5hZGRFbWl0RmxhZ3ModmUsMTUzNikpLEY9dy5jcmVhdGVGdW5jdGlvbkNhbGxDYWxsKEYsdmUua2luZD09PTEwNj93LmNyZWF0ZVRoaXMoKTp2ZSxlLnZpc2l0Tm9kZXMoJC5hcmd1bWVudHMsUSxlLmlzRXhwcmVzc2lvbikpKTpGPXcuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRix2b2lkIDAsZS52aXNpdE5vZGVzKCQuYXJndW1lbnRzLFEsZS5pc0V4cHJlc3Npb24pKTticmVha31lLnNldE9yaWdpbmFsTm9kZShGLCQpfXZhciBBPUo/dy5jcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oZihoZSxlZSwhMCksdm9pZCAwLHcuY3JlYXRlVHJ1ZSgpLHZvaWQgMCx3LmNyZWF0ZURlbGV0ZUV4cHJlc3Npb24oRikpOncuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGYoaGUsZWUsITApLHZvaWQgMCx3LmNyZWF0ZVZvaWRaZXJvKCksdm9pZCAwLEYpO3JldHVybiBlLnNldFRleHRSYW5nZShBLGIpLHg/dy5jcmVhdGVTeW50aGV0aWNSZWZlcmVuY2VFeHByZXNzaW9uKEEseCk6QX1mdW5jdGlvbiBmKGIsc2UsSil7cmV0dXJuIHcuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbih3LmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oYix3LmNyZWF0ZVRva2VuKEo/MzY6MzcpLHcuY3JlYXRlTnVsbCgpKSx3LmNyZWF0ZVRva2VuKEo/NTY6NTUpLHcuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihzZSx3LmNyZWF0ZVRva2VuKEo/MzY6MzcpLHcuY3JlYXRlVm9pZFplcm8oKSkpfWZ1bmN0aW9uIFQoYil7dmFyIHNlPWUudmlzaXROb2RlKGIubGVmdCxRLGUuaXNFeHByZXNzaW9uKSxKPXNlO3JldHVybiBlLmlzU2ltcGxlQ29waWFibGVFeHByZXNzaW9uKHNlKXx8KEo9dy5jcmVhdGVUZW1wVmFyaWFibGUoQiksc2U9dy5jcmVhdGVBc3NpZ25tZW50KEosc2UpKSxlLnNldFRleHRSYW5nZSh3LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihmKHNlLEopLHZvaWQgMCxKLHZvaWQgMCxlLnZpc2l0Tm9kZShiLnJpZ2h0LFEsZS5pc0V4cHJlc3Npb24pKSxiKX1mdW5jdGlvbiBLKGIpe3JldHVybiBlLmlzT3B0aW9uYWxDaGFpbihlLnNraXBQYXJlbnRoZXNlcyhiLmV4cHJlc3Npb24pKT9lLnNldE9yaWdpbmFsTm9kZShHKGIuZXhwcmVzc2lvbiwhMSwhMCksYik6dy51cGRhdGVEZWxldGVFeHByZXNzaW9uKGIsZS52aXNpdE5vZGUoYi5leHByZXNzaW9uLFEsZS5pc0V4cHJlc3Npb24pKX19ZS50cmFuc2Zvcm1FUzIwMjA9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoQyl7dmFyIHc9Qy5ob2lzdFZhcmlhYmxlRGVjbGFyYXRpb24sQj1DLmZhY3Rvcnk7cmV0dXJuIGUuY2hhaW5CdW5kbGUoQyxFKTtmdW5jdGlvbiBFKE4pe3JldHVybiBOLmlzRGVjbGFyYXRpb25GaWxlP046ZS52aXNpdEVhY2hDaGlsZChOLFEsQyl9ZnVuY3Rpb24gUShOKXtpZigoTi50cmFuc2Zvcm1GbGFncyYxNik9PT0wKXJldHVybiBOO3N3aXRjaChOLmtpbmQpe2Nhc2UgMjIxOnZhciBwPU47aWYoZS5pc0xvZ2ljYWxPckNvYWxlc2NpbmdBc3NpZ25tZW50RXhwcmVzc2lvbihwKSlyZXR1cm4gbGUocCk7ZGVmYXVsdDpyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChOLFEsQyl9fWZ1bmN0aW9uIGxlKE4pe3ZhciBwPU4ub3BlcmF0b3JUb2tlbixtPWUuZ2V0Tm9uQXNzaWdubWVudE9wZXJhdG9yRm9yQ29tcG91bmRBc3NpZ25tZW50KHAua2luZCksRz1lLnNraXBQYXJlbnRoZXNlcyhlLnZpc2l0Tm9kZShOLmxlZnQsUSxlLmlzTGVmdEhhbmRTaWRlRXhwcmVzc2lvbikpLG9lPUcsZj1lLnNraXBQYXJlbnRoZXNlcyhlLnZpc2l0Tm9kZShOLnJpZ2h0LFEsZS5pc0V4cHJlc3Npb24pKTtpZihlLmlzQWNjZXNzRXhwcmVzc2lvbihHKSl7dmFyIFQ9ZS5pc1NpbXBsZUNvcGlhYmxlRXhwcmVzc2lvbihHLmV4cHJlc3Npb24pLEs9VD9HLmV4cHJlc3Npb246Qi5jcmVhdGVUZW1wVmFyaWFibGUodyksYj1UP0cuZXhwcmVzc2lvbjpCLmNyZWF0ZUFzc2lnbm1lbnQoSyxHLmV4cHJlc3Npb24pO2lmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRykpb2U9Qi5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oSyxHLm5hbWUpLEc9Qi5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oYixHLm5hbWUpO2Vsc2V7dmFyIHNlPWUuaXNTaW1wbGVDb3BpYWJsZUV4cHJlc3Npb24oRy5hcmd1bWVudEV4cHJlc3Npb24pLEo9c2U/Ry5hcmd1bWVudEV4cHJlc3Npb246Qi5jcmVhdGVUZW1wVmFyaWFibGUodyk7b2U9Qi5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihLLEopLEc9Qi5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihiLHNlP0cuYXJndW1lbnRFeHByZXNzaW9uOkIuY3JlYXRlQXNzaWdubWVudChKLEcuYXJndW1lbnRFeHByZXNzaW9uKSl9fXJldHVybiBCLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oRyxtLEIuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oQi5jcmVhdGVBc3NpZ25tZW50KG9lLGYpKSl9fWUudHJhbnNmb3JtRVMyMDIxPWF9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEMpe3JldHVybiBlLmNoYWluQnVuZGxlKEMsdyk7ZnVuY3Rpb24gdyhFKXtyZXR1cm4gRS5pc0RlY2xhcmF0aW9uRmlsZT9FOmUudmlzaXRFYWNoQ2hpbGQoRSxCLEMpfWZ1bmN0aW9uIEIoRSl7aWYoKEUudHJhbnNmb3JtRmxhZ3MmNCk9PT0wKXJldHVybiBFO3N3aXRjaChFLmtpbmQpe2RlZmF1bHQ6cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoRSxCLEMpfX19ZS50cmFuc2Zvcm1FU05leHQ9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEodyl7dmFyIEI9dy5mYWN0b3J5LEU9dy5nZXRFbWl0SGVscGVyRmFjdG9yeSxRPXcuZ2V0Q29tcGlsZXJPcHRpb25zKCksbGUsTjtyZXR1cm4gZS5jaGFpbkJ1bmRsZSh3LFQpO2Z1bmN0aW9uIHAoKXtpZihOLmZpbGVuYW1lRGVjbGFyYXRpb24pcmV0dXJuIE4uZmlsZW5hbWVEZWNsYXJhdGlvbi5uYW1lO3ZhciBnPUIuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihCLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfanN4RmlsZU5hbWVcIiw0OCksdm9pZCAwLHZvaWQgMCxCLmNyZWF0ZVN0cmluZ0xpdGVyYWwobGUuZmlsZU5hbWUpKTtyZXR1cm4gTi5maWxlbmFtZURlY2xhcmF0aW9uPWcsTi5maWxlbmFtZURlY2xhcmF0aW9uLm5hbWV9ZnVuY3Rpb24gbShnKXtyZXR1cm4gUS5qc3g9PT01P1wianN4REVWXCI6Zz9cImpzeHNcIjpcImpzeFwifWZ1bmN0aW9uIEcoZyl7dmFyIG5lPW0oZyk7cmV0dXJuIGYobmUpfWZ1bmN0aW9uIG9lKCl7cmV0dXJuIGYoXCJGcmFnbWVudFwiKX1mdW5jdGlvbiBmKGcpe3ZhciBuZSx1ZSxXZT1nPT09XCJjcmVhdGVFbGVtZW50XCI/Ti5pbXBvcnRTcGVjaWZpZXI6ZS5nZXRKU1hSdW50aW1lSW1wb3J0KE4uaW1wb3J0U3BlY2lmaWVyLFEpLEZlPSh1ZT0obmU9Ti51dGlsaXplZEltcGxpY2l0UnVudGltZUltcG9ydHMpPT09bnVsbHx8bmU9PT12b2lkIDA/dm9pZCAwOm5lLmdldChXZSkpPT09bnVsbHx8dWU9PT12b2lkIDA/dm9pZCAwOnVlLmdldChnKTtpZihGZSlyZXR1cm4gRmUubmFtZTtOLnV0aWxpemVkSW1wbGljaXRSdW50aW1lSW1wb3J0c3x8KE4udXRpbGl6ZWRJbXBsaWNpdFJ1bnRpbWVJbXBvcnRzPW5ldyBlLk1hcCk7dmFyIFo9Ti51dGlsaXplZEltcGxpY2l0UnVudGltZUltcG9ydHMuZ2V0KFdlKTtafHwoWj1uZXcgZS5NYXAsTi51dGlsaXplZEltcGxpY2l0UnVudGltZUltcG9ydHMuc2V0KFdlLFopKTt2YXIgQmU9Qi5jcmVhdGVVbmlxdWVOYW1lKFwiX1wiLmNvbmNhdChnKSwxMTIpLGdlPUIuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKCExLEIuY3JlYXRlSWRlbnRpZmllcihnKSxCZSk7cmV0dXJuIEJlLmdlbmVyYXRlZEltcG9ydFJlZmVyZW5jZT1nZSxaLnNldChnLGdlKSxCZX1mdW5jdGlvbiBUKGcpe2lmKGcuaXNEZWNsYXJhdGlvbkZpbGUpcmV0dXJuIGc7bGU9ZyxOPXt9LE4uaW1wb3J0U3BlY2lmaWVyPWUuZ2V0SlNYSW1wbGljaXRJbXBvcnRCYXNlKFEsZyk7dmFyIG5lPWUudmlzaXRFYWNoQ2hpbGQoZyxLLHcpO2UuYWRkRW1pdEhlbHBlcnMobmUsdy5yZWFkRW1pdEhlbHBlcnMoKSk7dmFyIHVlPW5lLnN0YXRlbWVudHM7aWYoTi5maWxlbmFtZURlY2xhcmF0aW9uJiYodWU9ZS5pbnNlcnRTdGF0ZW1lbnRBZnRlckN1c3RvbVByb2xvZ3VlKHVlLnNsaWNlKCksQi5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsQi5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbTi5maWxlbmFtZURlY2xhcmF0aW9uXSwyKSkpKSxOLnV0aWxpemVkSW1wbGljaXRSdW50aW1lSW1wb3J0cylmb3IodmFyIFdlPTAsRmU9ZS5hcnJheUZyb20oTi51dGlsaXplZEltcGxpY2l0UnVudGltZUltcG9ydHMuZW50cmllcygpKTtXZTxGZS5sZW5ndGg7V2UrKyl7dmFyIFo9RmVbV2VdLEJlPVpbMF0sZ2U9WlsxXTtpZihlLmlzRXh0ZXJuYWxNb2R1bGUoZykpe3ZhciBSZT1CLmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsQi5jcmVhdGVJbXBvcnRDbGF1c2UoITEsdm9pZCAwLEIuY3JlYXRlTmFtZWRJbXBvcnRzKGUuYXJyYXlGcm9tKGdlLnZhbHVlcygpKSkpLEIuY3JlYXRlU3RyaW5nTGl0ZXJhbChCZSksdm9pZCAwKTtlLnNldFBhcmVudFJlY3Vyc2l2ZShSZSwhMSksdWU9ZS5pbnNlcnRTdGF0ZW1lbnRBZnRlckN1c3RvbVByb2xvZ3VlKHVlLnNsaWNlKCksUmUpfWVsc2UgaWYoZS5pc0V4dGVybmFsT3JDb21tb25Kc01vZHVsZShnKSl7dmFyIHplPUIuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLEIuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW0IuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihCLmNyZWF0ZU9iamVjdEJpbmRpbmdQYXR0ZXJuKGUubWFwKGUuYXJyYXlGcm9tKGdlLnZhbHVlcygpKSxmdW5jdGlvbihFZSl7cmV0dXJuIEIuY3JlYXRlQmluZGluZ0VsZW1lbnQodm9pZCAwLEVlLnByb3BlcnR5TmFtZSxFZS5uYW1lKX0pKSx2b2lkIDAsdm9pZCAwLEIuY3JlYXRlQ2FsbEV4cHJlc3Npb24oQi5jcmVhdGVJZGVudGlmaWVyKFwicmVxdWlyZVwiKSx2b2lkIDAsW0IuY3JlYXRlU3RyaW5nTGl0ZXJhbChCZSldKSldLDIpKTtlLnNldFBhcmVudFJlY3Vyc2l2ZSh6ZSwhMSksdWU9ZS5pbnNlcnRTdGF0ZW1lbnRBZnRlckN1c3RvbVByb2xvZ3VlKHVlLnNsaWNlKCksemUpfX1yZXR1cm4gdWUhPT1uZS5zdGF0ZW1lbnRzJiYobmU9Qi51cGRhdGVTb3VyY2VGaWxlKG5lLHVlKSksTj12b2lkIDAsbmV9ZnVuY3Rpb24gSyhnKXtyZXR1cm4gZy50cmFuc2Zvcm1GbGFncyYyP2IoZyk6Z31mdW5jdGlvbiBiKGcpe3N3aXRjaChnLmtpbmQpe2Nhc2UgMjc4OnJldHVybiBSKGcsITEpO2Nhc2UgMjc5OnJldHVybiBxKGcsITEpO2Nhc2UgMjgyOnJldHVybiBPKGcsITEpO2Nhc2UgMjg4OnJldHVybiBmZShnKTtkZWZhdWx0OnJldHVybiBlLnZpc2l0RWFjaENoaWxkKGcsSyx3KX19ZnVuY3Rpb24gc2UoZyl7c3dpdGNoKGcua2luZCl7Y2FzZSAxMTpyZXR1cm4gVShnKTtjYXNlIDI4ODpyZXR1cm4gZmUoZyk7Y2FzZSAyNzg6cmV0dXJuIFIoZywhMCk7Y2FzZSAyNzk6cmV0dXJuIHEoZywhMCk7Y2FzZSAyODI6cmV0dXJuIE8oZywhMCk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChnKX19ZnVuY3Rpb24gSihnKXtmb3IodmFyIG5lPSExLHVlPTAsV2U9Zy5hdHRyaWJ1dGVzLnByb3BlcnRpZXM7dWU8V2UubGVuZ3RoO3VlKyspe3ZhciBGZT1XZVt1ZV07aWYoZS5pc0pzeFNwcmVhZEF0dHJpYnV0ZShGZSkpbmU9ITA7ZWxzZSBpZihuZSYmZS5pc0pzeEF0dHJpYnV0ZShGZSkmJkZlLm5hbWUuZXNjYXBlZFRleHQ9PT1cImtleVwiKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGllKGcpe3JldHVybiBOLmltcG9ydFNwZWNpZmllcj09PXZvaWQgMHx8SihnKX1mdW5jdGlvbiBSKGcsbmUpe3ZhciB1ZT1pZShnLm9wZW5pbmdFbGVtZW50KT94OmhlO3JldHVybiB1ZShnLm9wZW5pbmdFbGVtZW50LGcuY2hpbGRyZW4sbmUsZyl9ZnVuY3Rpb24gcShnLG5lKXt2YXIgdWU9aWUoZyk/eDpoZTtyZXR1cm4gdWUoZyx2b2lkIDAsbmUsZyl9ZnVuY3Rpb24gTyhnLG5lKXt2YXIgdWU9Ti5pbXBvcnRTcGVjaWZpZXI9PT12b2lkIDA/JDpYO3JldHVybiB1ZShnLm9wZW5pbmdGcmFnbWVudCxnLmNoaWxkcmVuLG5lLGcpfWZ1bmN0aW9uIHZlKGcpe3ZhciBuZT1lZShnKTtyZXR1cm4gbmUmJkIuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oW25lXSl9ZnVuY3Rpb24gZWUoZyl7dmFyIG5lPWUuZ2V0U2VtYW50aWNKc3hDaGlsZHJlbihnKTtpZihlLmxlbmd0aChuZSk9PT0xJiYhbmVbMF0uZG90RG90RG90VG9rZW4pe3ZhciB1ZT1zZShuZVswXSk7cmV0dXJuIHVlJiZCLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChcImNoaWxkcmVuXCIsdWUpfXZhciBXZT1lLm1hcERlZmluZWQoZyxzZSk7cmV0dXJuIGUubGVuZ3RoKFdlKT9CLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChcImNoaWxkcmVuXCIsQi5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKFdlKSk6dm9pZCAwfWZ1bmN0aW9uIGhlKGcsbmUsdWUsV2Upe3ZhciBGZT1kKGcpLFo9bmUmJm5lLmxlbmd0aD9lZShuZSk6dm9pZCAwLEJlPWUuZmluZChnLmF0dHJpYnV0ZXMucHJvcGVydGllcyxmdW5jdGlvbih6ZSl7cmV0dXJuISF6ZS5uYW1lJiZlLmlzSWRlbnRpZmllcih6ZS5uYW1lKSYmemUubmFtZS5lc2NhcGVkVGV4dD09PVwia2V5XCJ9KSxnZT1CZT9lLmZpbHRlcihnLmF0dHJpYnV0ZXMucHJvcGVydGllcyxmdW5jdGlvbih6ZSl7cmV0dXJuIHplIT09QmV9KTpnLmF0dHJpYnV0ZXMucHJvcGVydGllcyxSZT1lLmxlbmd0aChnZSk/eShnZSxaKTpCLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKFo/W1pdOmUuZW1wdHlBcnJheSk7cmV0dXJuIEYoRmUsUmUsQmUsbmV8fGUuZW1wdHlBcnJheSx1ZSxXZSl9ZnVuY3Rpb24gRihnLG5lLHVlLFdlLEZlLFope3ZhciBCZSxnZT1lLmdldFNlbWFudGljSnN4Q2hpbGRyZW4oV2UpLFJlPWUubGVuZ3RoKGdlKT4xfHwhISghKChCZT1nZVswXSk9PT1udWxsfHxCZT09PXZvaWQgMCkmJkJlLmRvdERvdERvdFRva2VuKSx6ZT1bZyxuZV07aWYodWUmJnplLnB1c2goWSh1ZS5pbml0aWFsaXplcikpLFEuanN4PT09NSl7dmFyIEVlPWUuZ2V0T3JpZ2luYWxOb2RlKGxlKTtpZihFZSYmZS5pc1NvdXJjZUZpbGUoRWUpKXt1ZT09PXZvaWQgMCYmemUucHVzaChCLmNyZWF0ZVZvaWRaZXJvKCkpLHplLnB1c2goUmU/Qi5jcmVhdGVUcnVlKCk6Qi5jcmVhdGVGYWxzZSgpKTt2YXIgSGU9ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihFZSxaLnBvcyk7emUucHVzaChCLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKFtCLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChcImZpbGVOYW1lXCIscCgpKSxCLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChcImxpbmVOdW1iZXJcIixCLmNyZWF0ZU51bWVyaWNMaXRlcmFsKEhlLmxpbmUrMSkpLEIuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwiY29sdW1uTnVtYmVyXCIsQi5jcmVhdGVOdW1lcmljTGl0ZXJhbChIZS5jaGFyYWN0ZXIrMSkpXSkpLHplLnB1c2goQi5jcmVhdGVUaGlzKCkpfX12YXIgcnI9ZS5zZXRUZXh0UmFuZ2UoQi5jcmVhdGVDYWxsRXhwcmVzc2lvbihHKFJlKSx2b2lkIDAsemUpLFopO3JldHVybiBGZSYmZS5zdGFydE9uTmV3TGluZShycikscnJ9ZnVuY3Rpb24geChnLG5lLHVlLFdlKXt2YXIgRmU9ZChnKSxaPWcuYXR0cmlidXRlcy5wcm9wZXJ0aWVzLEJlPWUubGVuZ3RoKFopP3koWik6Qi5jcmVhdGVOdWxsKCksZ2U9Ti5pbXBvcnRTcGVjaWZpZXI9PT12b2lkIDA/ZS5jcmVhdGVKc3hGYWN0b3J5RXhwcmVzc2lvbihCLHcuZ2V0RW1pdFJlc29sdmVyKCkuZ2V0SnN4RmFjdG9yeUVudGl0eShsZSksUS5yZWFjdE5hbWVzcGFjZSxnKTpmKFwiY3JlYXRlRWxlbWVudFwiKSxSZT1lLmNyZWF0ZUV4cHJlc3Npb25Gb3JKc3hFbGVtZW50KEIsZ2UsRmUsQmUsZS5tYXBEZWZpbmVkKG5lLHNlKSxXZSk7cmV0dXJuIHVlJiZlLnN0YXJ0T25OZXdMaW5lKFJlKSxSZX1mdW5jdGlvbiBYKGcsbmUsdWUsV2Upe3ZhciBGZTtpZihuZSYmbmUubGVuZ3RoKXt2YXIgWj12ZShuZSk7WiYmKEZlPVopfXJldHVybiBGKG9lKCksRmV8fEIuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oW10pLHZvaWQgMCxuZSx1ZSxXZSl9ZnVuY3Rpb24gJChnLG5lLHVlLFdlKXt2YXIgRmU9ZS5jcmVhdGVFeHByZXNzaW9uRm9ySnN4RnJhZ21lbnQoQix3LmdldEVtaXRSZXNvbHZlcigpLmdldEpzeEZhY3RvcnlFbnRpdHkobGUpLHcuZ2V0RW1pdFJlc29sdmVyKCkuZ2V0SnN4RnJhZ21lbnRGYWN0b3J5RW50aXR5KGxlKSxRLnJlYWN0TmFtZXNwYWNlLGUubWFwRGVmaW5lZChuZSxzZSksZyxXZSk7cmV0dXJuIHVlJiZlLnN0YXJ0T25OZXdMaW5lKEZlKSxGZX1mdW5jdGlvbiBBKGcpe3JldHVybiBCLmNyZWF0ZVNwcmVhZEFzc2lnbm1lbnQoZS52aXNpdE5vZGUoZy5leHByZXNzaW9uLEssZS5pc0V4cHJlc3Npb24pKX1mdW5jdGlvbiB5KGcsbmUpe3ZhciB1ZT1lLmdldEVtaXRTY3JpcHRUYXJnZXQoUSk7cmV0dXJuIHVlJiZ1ZT49NT9CLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKFYoZyxuZSkpOkwoZyxuZSl9ZnVuY3Rpb24gVihnLG5lKXt2YXIgdWU9ZS5mbGF0dGVuKGUuc3Bhbk1hcChnLGUuaXNKc3hTcHJlYWRBdHRyaWJ1dGUsZnVuY3Rpb24oV2UsRmUpe3JldHVybiBlLm1hcChXZSxmdW5jdGlvbihaKXtyZXR1cm4gRmU/QShaKTprKFopfSl9KSk7cmV0dXJuIG5lJiZ1ZS5wdXNoKG5lKSx1ZX1mdW5jdGlvbiBMKGcsbmUpe3ZhciB1ZT1lLmZsYXR0ZW4oZS5zcGFuTWFwKGcsZS5pc0pzeFNwcmVhZEF0dHJpYnV0ZSxmdW5jdGlvbihXZSxGZSl7cmV0dXJuIEZlP2UubWFwKFdlLFApOkIuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oZS5tYXAoV2UsaykpfSkpO3JldHVybiBlLmlzSnN4U3ByZWFkQXR0cmlidXRlKGdbMF0pJiZ1ZS51bnNoaWZ0KEIuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oKSksbmUmJnVlLnB1c2goQi5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihbbmVdKSksZS5zaW5nbGVPclVuZGVmaW5lZCh1ZSl8fEUoKS5jcmVhdGVBc3NpZ25IZWxwZXIodWUpfWZ1bmN0aW9uIFAoZyl7cmV0dXJuIGUudmlzaXROb2RlKGcuZXhwcmVzc2lvbixLLGUuaXNFeHByZXNzaW9uKX1mdW5jdGlvbiBrKGcpe3ZhciBuZT1EKGcpLHVlPVkoZy5pbml0aWFsaXplcik7cmV0dXJuIEIuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KG5lLHVlKX1mdW5jdGlvbiBZKGcpe2lmKGc9PT12b2lkIDApcmV0dXJuIEIuY3JlYXRlVHJ1ZSgpO2lmKGcua2luZD09PTEwKXt2YXIgbmU9Zy5zaW5nbGVRdW90ZSE9PXZvaWQgMD9nLnNpbmdsZVF1b3RlOiFlLmlzU3RyaW5nRG91YmxlUXVvdGVkKGcsbGUpLHVlPUIuY3JlYXRlU3RyaW5nTGl0ZXJhbChsKGcudGV4dCl8fGcudGV4dCxuZSk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKHVlLGcpfWVsc2UgcmV0dXJuIGcua2luZD09PTI4OD9nLmV4cHJlc3Npb249PT12b2lkIDA/Qi5jcmVhdGVUcnVlKCk6ZS52aXNpdE5vZGUoZy5leHByZXNzaW9uLEssZS5pc0V4cHJlc3Npb24pOmUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoZyl9ZnVuY3Rpb24gVShnKXt2YXIgbmU9aihnLnRleHQpO3JldHVybiBuZT09PXZvaWQgMD92b2lkIDA6Qi5jcmVhdGVTdHJpbmdMaXRlcmFsKG5lKX1mdW5jdGlvbiBqKGcpe2Zvcih2YXIgbmUsdWU9MCxXZT0tMSxGZT0wO0ZlPGcubGVuZ3RoO0ZlKyspe3ZhciBaPWcuY2hhckNvZGVBdChGZSk7ZS5pc0xpbmVCcmVhayhaKT8odWUhPT0tMSYmV2UhPT0tMSYmKG5lPUgobmUsZy5zdWJzdHIodWUsV2UtdWUrMSkpKSx1ZT0tMSk6ZS5pc1doaXRlU3BhY2VTaW5nbGVMaW5lKFopfHwoV2U9RmUsdWU9PT0tMSYmKHVlPUZlKSl9cmV0dXJuIHVlIT09LTE/SChuZSxnLnN1YnN0cih1ZSkpOm5lfWZ1bmN0aW9uIEgoZyxuZSl7dmFyIHVlPUkobmUpO3JldHVybiBnPT09dm9pZCAwP3VlOmcrXCIgXCIrdWV9ZnVuY3Rpb24gSShnKXtyZXR1cm4gZy5yZXBsYWNlKC8mKCgjKChcXGQrKXx4KFtcXGRhLWZBLUZdKykpKXwoXFx3KykpOy9nLGZ1bmN0aW9uKG5lLHVlLFdlLEZlLFosQmUsZ2Upe2lmKFopcmV0dXJuIGUudXRmMTZFbmNvZGVBc1N0cmluZyhwYXJzZUludChaLDEwKSk7aWYoQmUpcmV0dXJuIGUudXRmMTZFbmNvZGVBc1N0cmluZyhwYXJzZUludChCZSwxNikpO3ZhciBSZT1DLmdldChnZSk7cmV0dXJuIFJlP2UudXRmMTZFbmNvZGVBc1N0cmluZyhSZSk6bmV9KX1mdW5jdGlvbiBsKGcpe3ZhciBuZT1JKGcpO3JldHVybiBuZT09PWc/dm9pZCAwOm5lfWZ1bmN0aW9uIGQoZyl7aWYoZy5raW5kPT09Mjc4KXJldHVybiBkKGcub3BlbmluZ0VsZW1lbnQpO3ZhciBuZT1nLnRhZ05hbWU7cmV0dXJuIGUuaXNJZGVudGlmaWVyKG5lKSYmZS5pc0ludHJpbnNpY0pzeE5hbWUobmUuZXNjYXBlZFRleHQpP0IuY3JlYXRlU3RyaW5nTGl0ZXJhbChlLmlkVGV4dChuZSkpOmUuY3JlYXRlRXhwcmVzc2lvbkZyb21FbnRpdHlOYW1lKEIsbmUpfWZ1bmN0aW9uIEQoZyl7dmFyIG5lPWcubmFtZSx1ZT1lLmlkVGV4dChuZSk7cmV0dXJuL15bQS1aYS16X11cXHcqJC8udGVzdCh1ZSk/bmU6Qi5jcmVhdGVTdHJpbmdMaXRlcmFsKHVlKX1mdW5jdGlvbiBmZShnKXt2YXIgbmU9ZS52aXNpdE5vZGUoZy5leHByZXNzaW9uLEssZS5pc0V4cHJlc3Npb24pO3JldHVybiBnLmRvdERvdERvdFRva2VuP0IuY3JlYXRlU3ByZWFkRWxlbWVudChuZSk6bmV9fWUudHJhbnNmb3JtSnN4PWE7dmFyIEM9bmV3IGUuTWFwKGUuZ2V0RW50cmllcyh7cXVvdDozNCxhbXA6MzgsYXBvczozOSxsdDo2MCxndDo2MixuYnNwOjE2MCxpZXhjbDoxNjEsY2VudDoxNjIscG91bmQ6MTYzLGN1cnJlbjoxNjQseWVuOjE2NSxicnZiYXI6MTY2LHNlY3Q6MTY3LHVtbDoxNjgsY29weToxNjksb3JkZjoxNzAsbGFxdW86MTcxLG5vdDoxNzIsc2h5OjE3MyxyZWc6MTc0LG1hY3I6MTc1LGRlZzoxNzYscGx1c21uOjE3NyxzdXAyOjE3OCxzdXAzOjE3OSxhY3V0ZToxODAsbWljcm86MTgxLHBhcmE6MTgyLG1pZGRvdDoxODMsY2VkaWw6MTg0LHN1cDE6MTg1LG9yZG06MTg2LHJhcXVvOjE4NyxmcmFjMTQ6MTg4LGZyYWMxMjoxODksZnJhYzM0OjE5MCxpcXVlc3Q6MTkxLEFncmF2ZToxOTIsQWFjdXRlOjE5MyxBY2lyYzoxOTQsQXRpbGRlOjE5NSxBdW1sOjE5NixBcmluZzoxOTcsQUVsaWc6MTk4LENjZWRpbDoxOTksRWdyYXZlOjIwMCxFYWN1dGU6MjAxLEVjaXJjOjIwMixFdW1sOjIwMyxJZ3JhdmU6MjA0LElhY3V0ZToyMDUsSWNpcmM6MjA2LEl1bWw6MjA3LEVUSDoyMDgsTnRpbGRlOjIwOSxPZ3JhdmU6MjEwLE9hY3V0ZToyMTEsT2NpcmM6MjEyLE90aWxkZToyMTMsT3VtbDoyMTQsdGltZXM6MjE1LE9zbGFzaDoyMTYsVWdyYXZlOjIxNyxVYWN1dGU6MjE4LFVjaXJjOjIxOSxVdW1sOjIyMCxZYWN1dGU6MjIxLFRIT1JOOjIyMixzemxpZzoyMjMsYWdyYXZlOjIyNCxhYWN1dGU6MjI1LGFjaXJjOjIyNixhdGlsZGU6MjI3LGF1bWw6MjI4LGFyaW5nOjIyOSxhZWxpZzoyMzAsY2NlZGlsOjIzMSxlZ3JhdmU6MjMyLGVhY3V0ZToyMzMsZWNpcmM6MjM0LGV1bWw6MjM1LGlncmF2ZToyMzYsaWFjdXRlOjIzNyxpY2lyYzoyMzgsaXVtbDoyMzksZXRoOjI0MCxudGlsZGU6MjQxLG9ncmF2ZToyNDIsb2FjdXRlOjI0MyxvY2lyYzoyNDQsb3RpbGRlOjI0NSxvdW1sOjI0NixkaXZpZGU6MjQ3LG9zbGFzaDoyNDgsdWdyYXZlOjI0OSx1YWN1dGU6MjUwLHVjaXJjOjI1MSx1dW1sOjI1Mix5YWN1dGU6MjUzLHRob3JuOjI1NCx5dW1sOjI1NSxPRWxpZzozMzgsb2VsaWc6MzM5LFNjYXJvbjozNTIsc2Nhcm9uOjM1MyxZdW1sOjM3Nixmbm9mOjQwMixjaXJjOjcxMCx0aWxkZTo3MzIsQWxwaGE6OTEzLEJldGE6OTE0LEdhbW1hOjkxNSxEZWx0YTo5MTYsRXBzaWxvbjo5MTcsWmV0YTo5MTgsRXRhOjkxOSxUaGV0YTo5MjAsSW90YTo5MjEsS2FwcGE6OTIyLExhbWJkYTo5MjMsTXU6OTI0LE51OjkyNSxYaTo5MjYsT21pY3Jvbjo5MjcsUGk6OTI4LFJobzo5MjksU2lnbWE6OTMxLFRhdTo5MzIsVXBzaWxvbjo5MzMsUGhpOjkzNCxDaGk6OTM1LFBzaTo5MzYsT21lZ2E6OTM3LGFscGhhOjk0NSxiZXRhOjk0NixnYW1tYTo5NDcsZGVsdGE6OTQ4LGVwc2lsb246OTQ5LHpldGE6OTUwLGV0YTo5NTEsdGhldGE6OTUyLGlvdGE6OTUzLGthcHBhOjk1NCxsYW1iZGE6OTU1LG11Ojk1NixudTo5NTcseGk6OTU4LG9taWNyb246OTU5LHBpOjk2MCxyaG86OTYxLHNpZ21hZjo5NjIsc2lnbWE6OTYzLHRhdTo5NjQsdXBzaWxvbjo5NjUscGhpOjk2NixjaGk6OTY3LHBzaTo5Njgsb21lZ2E6OTY5LHRoZXRhc3ltOjk3Nyx1cHNpaDo5NzgscGl2Ojk4MixlbnNwOjgxOTQsZW1zcDo4MTk1LHRoaW5zcDo4MjAxLHp3bmo6ODIwNCx6d2o6ODIwNSxscm06ODIwNixybG06ODIwNyxuZGFzaDo4MjExLG1kYXNoOjgyMTIsbHNxdW86ODIxNixyc3F1bzo4MjE3LHNicXVvOjgyMTgsbGRxdW86ODIyMCxyZHF1bzo4MjIxLGJkcXVvOjgyMjIsZGFnZ2VyOjgyMjQsRGFnZ2VyOjgyMjUsYnVsbDo4MjI2LGhlbGxpcDo4MjMwLHBlcm1pbDo4MjQwLHByaW1lOjgyNDIsUHJpbWU6ODI0Myxsc2FxdW86ODI0OSxyc2FxdW86ODI1MCxvbGluZTo4MjU0LGZyYXNsOjgyNjAsZXVybzo4MzY0LGltYWdlOjg0NjUsd2VpZXJwOjg0NzIscmVhbDo4NDc2LHRyYWRlOjg0ODIsYWxlZnN5bTo4NTAxLGxhcnI6ODU5Mix1YXJyOjg1OTMscmFycjo4NTk0LGRhcnI6ODU5NSxoYXJyOjg1OTYsY3JhcnI6ODYyOSxsQXJyOjg2NTYsdUFycjo4NjU3LHJBcnI6ODY1OCxkQXJyOjg2NTksaEFycjo4NjYwLGZvcmFsbDo4NzA0LHBhcnQ6ODcwNixleGlzdDo4NzA3LGVtcHR5Ojg3MDksbmFibGE6ODcxMSxpc2luOjg3MTIsbm90aW46ODcxMyxuaTo4NzE1LHByb2Q6ODcxOSxzdW06ODcyMSxtaW51czo4NzIyLGxvd2FzdDo4NzI3LHJhZGljOjg3MzAscHJvcDo4NzMzLGluZmluOjg3MzQsYW5nOjg3MzYsYW5kOjg3NDMsb3I6ODc0NCxjYXA6ODc0NSxjdXA6ODc0NixpbnQ6ODc0Nyx0aGVyZTQ6ODc1NixzaW06ODc2NCxjb25nOjg3NzMsYXN5bXA6ODc3NixuZTo4ODAwLGVxdWl2Ojg4MDEsbGU6ODgwNCxnZTo4ODA1LHN1Yjo4ODM0LHN1cDo4ODM1LG5zdWI6ODgzNixzdWJlOjg4Mzgsc3VwZTo4ODM5LG9wbHVzOjg4NTMsb3RpbWVzOjg4NTUscGVycDo4ODY5LHNkb3Q6ODkwMSxsY2VpbDo4OTY4LHJjZWlsOjg5NjksbGZsb29yOjg5NzAscmZsb29yOjg5NzEsbGFuZzo5MDAxLHJhbmc6OTAwMixsb3o6OTY3NCxzcGFkZXM6OTgyNCxjbHViczo5ODI3LGhlYXJ0czo5ODI5LGRpYW1zOjk4MzB9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEMpe3ZhciB3PUMuZmFjdG9yeSxCPUMuaG9pc3RWYXJpYWJsZURlY2xhcmF0aW9uO3JldHVybiBlLmNoYWluQnVuZGxlKEMsRSk7ZnVuY3Rpb24gRShtKXtyZXR1cm4gbS5pc0RlY2xhcmF0aW9uRmlsZT9tOmUudmlzaXRFYWNoQ2hpbGQobSxRLEMpfWZ1bmN0aW9uIFEobSl7aWYoKG0udHJhbnNmb3JtRmxhZ3MmNTEyKT09PTApcmV0dXJuIG07c3dpdGNoKG0ua2luZCl7Y2FzZSAyMjE6cmV0dXJuIGxlKG0pO2RlZmF1bHQ6cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQobSxRLEMpfX1mdW5jdGlvbiBsZShtKXtzd2l0Y2gobS5vcGVyYXRvclRva2VuLmtpbmQpe2Nhc2UgNjc6cmV0dXJuIE4obSk7Y2FzZSA0MjpyZXR1cm4gcChtKTtkZWZhdWx0OnJldHVybiBlLnZpc2l0RWFjaENoaWxkKG0sUSxDKX19ZnVuY3Rpb24gTihtKXt2YXIgRyxvZSxmPWUudmlzaXROb2RlKG0ubGVmdCxRLGUuaXNFeHByZXNzaW9uKSxUPWUudmlzaXROb2RlKG0ucmlnaHQsUSxlLmlzRXhwcmVzc2lvbik7aWYoZS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGYpKXt2YXIgSz13LmNyZWF0ZVRlbXBWYXJpYWJsZShCKSxiPXcuY3JlYXRlVGVtcFZhcmlhYmxlKEIpO0c9ZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihlLnNldFRleHRSYW5nZSh3LmNyZWF0ZUFzc2lnbm1lbnQoSyxmLmV4cHJlc3Npb24pLGYuZXhwcmVzc2lvbiksZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVBc3NpZ25tZW50KGIsZi5hcmd1bWVudEV4cHJlc3Npb24pLGYuYXJndW1lbnRFeHByZXNzaW9uKSksZiksb2U9ZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihLLGIpLGYpfWVsc2UgaWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihmKSl7dmFyIEs9dy5jcmVhdGVUZW1wVmFyaWFibGUoQik7Rz1lLnNldFRleHRSYW5nZSh3LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLnNldFRleHRSYW5nZSh3LmNyZWF0ZUFzc2lnbm1lbnQoSyxmLmV4cHJlc3Npb24pLGYuZXhwcmVzc2lvbiksZi5uYW1lKSxmKSxvZT1lLnNldFRleHRSYW5nZSh3LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihLLGYubmFtZSksZil9ZWxzZSBHPWYsb2U9ZjtyZXR1cm4gZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVBc3NpZ25tZW50KEcsZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVHbG9iYWxNZXRob2RDYWxsKFwiTWF0aFwiLFwicG93XCIsW29lLFRdKSxtKSksbSl9ZnVuY3Rpb24gcChtKXt2YXIgRz1lLnZpc2l0Tm9kZShtLmxlZnQsUSxlLmlzRXhwcmVzc2lvbiksb2U9ZS52aXNpdE5vZGUobS5yaWdodCxRLGUuaXNFeHByZXNzaW9uKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVHbG9iYWxNZXRob2RDYWxsKFwiTWF0aFwiLFwicG93XCIsW0csb2VdKSxtKX19ZS50cmFuc2Zvcm1FUzIwMTY9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihwKXtwW3AuQ2FwdHVyZWRUaGlzPTFdPVwiQ2FwdHVyZWRUaGlzXCIscFtwLkJsb2NrU2NvcGVkQmluZGluZ3M9Ml09XCJCbG9ja1Njb3BlZEJpbmRpbmdzXCJ9KShhfHwoYT17fSkpO3ZhciBDOyhmdW5jdGlvbihwKXtwW3AuQm9keT0xXT1cIkJvZHlcIixwW3AuSW5pdGlhbGl6ZXI9Ml09XCJJbml0aWFsaXplclwifSkoQ3x8KEM9e30pKTt2YXIgdzsoZnVuY3Rpb24ocCl7cFtwLlRvT3JpZ2luYWw9MF09XCJUb09yaWdpbmFsXCIscFtwLlRvT3V0UGFyYW1ldGVyPTFdPVwiVG9PdXRQYXJhbWV0ZXJcIn0pKHd8fCh3PXt9KSk7dmFyIEI7KGZ1bmN0aW9uKHApe3BbcC5CcmVhaz0yXT1cIkJyZWFrXCIscFtwLkNvbnRpbnVlPTRdPVwiQ29udGludWVcIixwW3AuUmV0dXJuPThdPVwiUmV0dXJuXCJ9KShCfHwoQj17fSkpO3ZhciBFOyhmdW5jdGlvbihwKXtwW3AuTm9uZT0wXT1cIk5vbmVcIixwW3AuRnVuY3Rpb249MV09XCJGdW5jdGlvblwiLHBbcC5BcnJvd0Z1bmN0aW9uPTJdPVwiQXJyb3dGdW5jdGlvblwiLHBbcC5Bc3luY0Z1bmN0aW9uQm9keT00XT1cIkFzeW5jRnVuY3Rpb25Cb2R5XCIscFtwLk5vblN0YXRpY0NsYXNzRWxlbWVudD04XT1cIk5vblN0YXRpY0NsYXNzRWxlbWVudFwiLHBbcC5DYXB0dXJlc1RoaXM9MTZdPVwiQ2FwdHVyZXNUaGlzXCIscFtwLkV4cG9ydGVkVmFyaWFibGVTdGF0ZW1lbnQ9MzJdPVwiRXhwb3J0ZWRWYXJpYWJsZVN0YXRlbWVudFwiLHBbcC5Ub3BMZXZlbD02NF09XCJUb3BMZXZlbFwiLHBbcC5CbG9jaz0xMjhdPVwiQmxvY2tcIixwW3AuSXRlcmF0aW9uU3RhdGVtZW50PTI1Nl09XCJJdGVyYXRpb25TdGF0ZW1lbnRcIixwW3AuSXRlcmF0aW9uU3RhdGVtZW50QmxvY2s9NTEyXT1cIkl0ZXJhdGlvblN0YXRlbWVudEJsb2NrXCIscFtwLkl0ZXJhdGlvbkNvbnRhaW5lcj0xMDI0XT1cIkl0ZXJhdGlvbkNvbnRhaW5lclwiLHBbcC5Gb3JTdGF0ZW1lbnQ9MjA0OF09XCJGb3JTdGF0ZW1lbnRcIixwW3AuRm9ySW5PckZvck9mU3RhdGVtZW50PTQwOTZdPVwiRm9ySW5PckZvck9mU3RhdGVtZW50XCIscFtwLkNvbnN0cnVjdG9yV2l0aENhcHR1cmVkU3VwZXI9ODE5Ml09XCJDb25zdHJ1Y3RvcldpdGhDYXB0dXJlZFN1cGVyXCIscFtwLlN0YXRpY0luaXRpYWxpemVyPTE2Mzg0XT1cIlN0YXRpY0luaXRpYWxpemVyXCIscFtwLkFuY2VzdG9yRmFjdHNNYXNrPTMyNzY3XT1cIkFuY2VzdG9yRmFjdHNNYXNrXCIscFtwLkJsb2NrU2NvcGVJbmNsdWRlcz0wXT1cIkJsb2NrU2NvcGVJbmNsdWRlc1wiLHBbcC5CbG9ja1Njb3BlRXhjbHVkZXM9NzEwNF09XCJCbG9ja1Njb3BlRXhjbHVkZXNcIixwW3AuU291cmNlRmlsZUluY2x1ZGVzPTY0XT1cIlNvdXJjZUZpbGVJbmNsdWRlc1wiLHBbcC5Tb3VyY2VGaWxlRXhjbHVkZXM9ODA2NF09XCJTb3VyY2VGaWxlRXhjbHVkZXNcIixwW3AuRnVuY3Rpb25JbmNsdWRlcz02NV09XCJGdW5jdGlvbkluY2x1ZGVzXCIscFtwLkZ1bmN0aW9uRXhjbHVkZXM9MzI2NzBdPVwiRnVuY3Rpb25FeGNsdWRlc1wiLHBbcC5Bc3luY0Z1bmN0aW9uQm9keUluY2x1ZGVzPTY5XT1cIkFzeW5jRnVuY3Rpb25Cb2R5SW5jbHVkZXNcIixwW3AuQXN5bmNGdW5jdGlvbkJvZHlFeGNsdWRlcz0zMjY2Ml09XCJBc3luY0Z1bmN0aW9uQm9keUV4Y2x1ZGVzXCIscFtwLkFycm93RnVuY3Rpb25JbmNsdWRlcz02Nl09XCJBcnJvd0Z1bmN0aW9uSW5jbHVkZXNcIixwW3AuQXJyb3dGdW5jdGlvbkV4Y2x1ZGVzPTE1MjMyXT1cIkFycm93RnVuY3Rpb25FeGNsdWRlc1wiLHBbcC5Db25zdHJ1Y3RvckluY2x1ZGVzPTczXT1cIkNvbnN0cnVjdG9ySW5jbHVkZXNcIixwW3AuQ29uc3RydWN0b3JFeGNsdWRlcz0zMjY2Ml09XCJDb25zdHJ1Y3RvckV4Y2x1ZGVzXCIscFtwLkRvT3JXaGlsZVN0YXRlbWVudEluY2x1ZGVzPTEyODBdPVwiRG9PcldoaWxlU3RhdGVtZW50SW5jbHVkZXNcIixwW3AuRG9PcldoaWxlU3RhdGVtZW50RXhjbHVkZXM9MF09XCJEb09yV2hpbGVTdGF0ZW1lbnRFeGNsdWRlc1wiLHBbcC5Gb3JTdGF0ZW1lbnRJbmNsdWRlcz0zMzI4XT1cIkZvclN0YXRlbWVudEluY2x1ZGVzXCIscFtwLkZvclN0YXRlbWVudEV4Y2x1ZGVzPTUwNTZdPVwiRm9yU3RhdGVtZW50RXhjbHVkZXNcIixwW3AuRm9ySW5PckZvck9mU3RhdGVtZW50SW5jbHVkZXM9NTM3Nl09XCJGb3JJbk9yRm9yT2ZTdGF0ZW1lbnRJbmNsdWRlc1wiLHBbcC5Gb3JJbk9yRm9yT2ZTdGF0ZW1lbnRFeGNsdWRlcz0zMDA4XT1cIkZvckluT3JGb3JPZlN0YXRlbWVudEV4Y2x1ZGVzXCIscFtwLkJsb2NrSW5jbHVkZXM9MTI4XT1cIkJsb2NrSW5jbHVkZXNcIixwW3AuQmxvY2tFeGNsdWRlcz02OTc2XT1cIkJsb2NrRXhjbHVkZXNcIixwW3AuSXRlcmF0aW9uU3RhdGVtZW50QmxvY2tJbmNsdWRlcz01MTJdPVwiSXRlcmF0aW9uU3RhdGVtZW50QmxvY2tJbmNsdWRlc1wiLHBbcC5JdGVyYXRpb25TdGF0ZW1lbnRCbG9ja0V4Y2x1ZGVzPTcxMDRdPVwiSXRlcmF0aW9uU3RhdGVtZW50QmxvY2tFeGNsdWRlc1wiLHBbcC5TdGF0aWNJbml0aWFsaXplckluY2x1ZGVzPTE2NDQ5XT1cIlN0YXRpY0luaXRpYWxpemVySW5jbHVkZXNcIixwW3AuU3RhdGljSW5pdGlhbGl6ZXJFeGNsdWRlcz0zMjY3MF09XCJTdGF0aWNJbml0aWFsaXplckV4Y2x1ZGVzXCIscFtwLk5ld1RhcmdldD0zMjc2OF09XCJOZXdUYXJnZXRcIixwW3AuQ2FwdHVyZWRMZXhpY2FsVGhpcz02NTUzNl09XCJDYXB0dXJlZExleGljYWxUaGlzXCIscFtwLlN1YnRyZWVGYWN0c01hc2s9LTMyNzY4XT1cIlN1YnRyZWVGYWN0c01hc2tcIixwW3AuQXJyb3dGdW5jdGlvblN1YnRyZWVFeGNsdWRlcz0wXT1cIkFycm93RnVuY3Rpb25TdWJ0cmVlRXhjbHVkZXNcIixwW3AuRnVuY3Rpb25TdWJ0cmVlRXhjbHVkZXM9OTgzMDRdPVwiRnVuY3Rpb25TdWJ0cmVlRXhjbHVkZXNcIn0pKEV8fChFPXt9KSk7dmFyIFE7KGZ1bmN0aW9uKHApe3BbcC5Ob25lPTBdPVwiTm9uZVwiLHBbcC5VbnBhY2tlZFNwcmVhZD0xXT1cIlVucGFja2VkU3ByZWFkXCIscFtwLlBhY2tlZFNwcmVhZD0yXT1cIlBhY2tlZFNwcmVhZFwifSkoUXx8KFE9e30pKTtmdW5jdGlvbiBsZShwLG0pe3JldHVybntraW5kOnAsZXhwcmVzc2lvbjptfX1mdW5jdGlvbiBOKHApe3ZhciBtPXAuZmFjdG9yeSxHPXAuZ2V0RW1pdEhlbHBlckZhY3Rvcnksb2U9cC5zdGFydExleGljYWxFbnZpcm9ubWVudCxmPXAucmVzdW1lTGV4aWNhbEVudmlyb25tZW50LFQ9cC5lbmRMZXhpY2FsRW52aXJvbm1lbnQsSz1wLmhvaXN0VmFyaWFibGVEZWNsYXJhdGlvbixiPXAuZ2V0Q29tcGlsZXJPcHRpb25zKCksc2U9cC5nZXRFbWl0UmVzb2x2ZXIoKSxKPXAub25TdWJzdGl0dXRlTm9kZSxpZT1wLm9uRW1pdE5vZGU7cC5vbkVtaXROb2RlPXRvLHAub25TdWJzdGl0dXRlTm9kZT1Pbzt2YXIgUixxLE8sdmU7ZnVuY3Rpb24gZWUoUWUpe3ZlPWUuYXBwZW5kKHZlLG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihRZSkpfXZhciBoZSxGO3JldHVybiBlLmNoYWluQnVuZGxlKHAseCk7ZnVuY3Rpb24geChRZSl7aWYoUWUuaXNEZWNsYXJhdGlvbkZpbGUpcmV0dXJuIFFlO1I9UWUscT1RZS50ZXh0O3ZhciBHcj1qKFFlKTtyZXR1cm4gZS5hZGRFbWl0SGVscGVycyhHcixwLnJlYWRFbWl0SGVscGVycygpKSxSPXZvaWQgMCxxPXZvaWQgMCx2ZT12b2lkIDAsTz0wLEdyfWZ1bmN0aW9uIFgoUWUsR3Ipe3ZhciBTPU87cmV0dXJuIE89KE8mflFlfEdyKSYzMjc2NyxTfWZ1bmN0aW9uICQoUWUsR3IsUyl7Tz0oTyZ+R3J8UykmLTMyNzY4fFFlfWZ1bmN0aW9uIEEoUWUpe3JldHVybihPJjgxOTIpIT09MCYmUWUua2luZD09PTI0NyYmIVFlLmV4cHJlc3Npb259ZnVuY3Rpb24geShRZSl7cmV0dXJuIFFlLnRyYW5zZm9ybUZsYWdzJjIwOTcxNTImJihlLmlzUmV0dXJuU3RhdGVtZW50KFFlKXx8ZS5pc0lmU3RhdGVtZW50KFFlKXx8ZS5pc1dpdGhTdGF0ZW1lbnQoUWUpfHxlLmlzU3dpdGNoU3RhdGVtZW50KFFlKXx8ZS5pc0Nhc2VCbG9jayhRZSl8fGUuaXNDYXNlQ2xhdXNlKFFlKXx8ZS5pc0RlZmF1bHRDbGF1c2UoUWUpfHxlLmlzVHJ5U3RhdGVtZW50KFFlKXx8ZS5pc0NhdGNoQ2xhdXNlKFFlKXx8ZS5pc0xhYmVsZWRTdGF0ZW1lbnQoUWUpfHxlLmlzSXRlcmF0aW9uU3RhdGVtZW50KFFlLCExKXx8ZS5pc0Jsb2NrKFFlKSl9ZnVuY3Rpb24gVihRZSl7cmV0dXJuKFFlLnRyYW5zZm9ybUZsYWdzJjEwMjQpIT09MHx8aGUhPT12b2lkIDB8fE8mODE5MiYmeShRZSl8fGUuaXNJdGVyYXRpb25TdGF0ZW1lbnQoUWUsITEpJiZVZShRZSl8fChlLmdldEVtaXRGbGFncyhRZSkmMzM1NTQ0MzIpIT09MH1mdW5jdGlvbiBMKFFlKXtyZXR1cm4gVihRZSk/VShRZSwhMSk6UWV9ZnVuY3Rpb24gUChRZSl7cmV0dXJuIFYoUWUpP1UoUWUsITApOlFlfWZ1bmN0aW9uIGsoUWUpe2lmKFYoUWUpKXt2YXIgR3I9ZS5nZXRPcmlnaW5hbE5vZGUoUWUpO2lmKGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKEdyKSYmZS5oYXNTdGF0aWNNb2RpZmllcihHcikpe3ZhciBTPVgoMzI2NzAsMTY0NDkpLENlPVUoUWUsITEpO3JldHVybiAkKFMsOTgzMDQsMCksQ2V9cmV0dXJuIFUoUWUsITEpfXJldHVybiBRZX1mdW5jdGlvbiBZKFFlKXtyZXR1cm4gUWUua2luZD09PTEwNj9FbighMCk6TChRZSl9ZnVuY3Rpb24gVShRZSxHcil7c3dpdGNoKFFlLmtpbmQpe2Nhc2UgMTI0OnJldHVybjtjYXNlIDI1NzpyZXR1cm4gdWUoUWUpO2Nhc2UgMjI2OnJldHVybiBXZShRZSk7Y2FzZSAxNjQ6cmV0dXJuIHdlKFFlKTtjYXNlIDI1NjpyZXR1cm4gd3IoUWUpO2Nhc2UgMjE0OnJldHVybiB5cihRZSk7Y2FzZSAyMTM6cmV0dXJuIElyKFFlKTtjYXNlIDI1NDpyZXR1cm4gWnQoUWUpO2Nhc2UgNzk6cmV0dXJuIGcoUWUpO2Nhc2UgMjU1OnJldHVybiBYaShRZSk7Y2FzZSAyNDk6cmV0dXJuIEgoUWUpO2Nhc2UgMjYzOnJldHVybiBJKFFlKTtjYXNlIDIzNTpyZXR1cm4gbWkoUWUsITEpO2Nhc2UgMjQ2OmNhc2UgMjQ1OnJldHVybiBuZShRZSk7Y2FzZSAyNTA6cmV0dXJuIGFlKFFlKTtjYXNlIDI0MDpjYXNlIDI0MTpyZXR1cm4gdGkoUWUsdm9pZCAwKTtjYXNlIDI0MjpyZXR1cm4gWmUoUWUsdm9pZCAwKTtjYXNlIDI0MzpyZXR1cm4genIoUWUsdm9pZCAwKTtjYXNlIDI0NDpyZXR1cm4gV3IoUWUsdm9pZCAwKTtjYXNlIDIzODpyZXR1cm4gcGUoUWUpO2Nhc2UgMjA1OnJldHVybiBBcihRZSk7Y2FzZSAyOTI6cmV0dXJuIE9pKFFlKTtjYXNlIDI5NzpyZXR1cm4gQXQoUWUpO2Nhc2UgMTYyOnJldHVybiBiYShRZSk7Y2FzZSAyMDQ6cmV0dXJuIFFhKFFlKTtjYXNlIDIwODpyZXR1cm4gYWkoUWUpO2Nhc2UgMjA5OnJldHVybiBwbihRZSk7Y2FzZSAyMTI6cmV0dXJuIG9yKFFlLEdyKTtjYXNlIDIyMTpyZXR1cm4gcXIoUWUsR3IpO2Nhc2UgMzUxOnJldHVybiBzaShRZSxHcik7Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMTY6Y2FzZSAxNzpyZXR1cm4gZW8oUWUpO2Nhc2UgMTA6cmV0dXJuIFJuKFFlKTtjYXNlIDg6cmV0dXJuIERhKFFlKTtjYXNlIDIxMDpyZXR1cm4gYm8oUWUpO2Nhc2UgMjIzOnJldHVybiBSbyhRZSk7Y2FzZSAyMjQ6cmV0dXJuICRhKFFlKTtjYXNlIDIyNTpyZXR1cm4gUG4oUWUpO2Nhc2UgMTA2OnJldHVybiBFbighMSk7Y2FzZSAxMDg6cmV0dXJuIEQoUWUpO2Nhc2UgMjMxOnJldHVybiBXbihRZSk7Y2FzZSAxNjk6cmV0dXJuIFZpKFFlKTtjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gYXQoUWUpO2Nhc2UgMjM3OnJldHVybiB3aShRZSk7Y2FzZSAyNDc6cmV0dXJuIGQoUWUpO2Nhc2UgMjE3OnJldHVybiBmZShRZSk7ZGVmYXVsdDpyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChRZSxMLHApfX1mdW5jdGlvbiBqKFFlKXt2YXIgR3I9WCg4MDY0LDY0KSxTPVtdLENlPVtdO29lKCk7dmFyIHFlPW0uY29weVByb2xvZ3VlKFFlLnN0YXRlbWVudHMsUywhMSxMKTtyZXR1cm4gZS5hZGRSYW5nZShDZSxlLnZpc2l0Tm9kZXMoUWUuc3RhdGVtZW50cyxMLGUuaXNTdGF0ZW1lbnQscWUpKSx2ZSYmQ2UucHVzaChtLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KHZlKSkpLG0ubWVyZ2VMZXhpY2FsRW52aXJvbm1lbnQoUyxUKCkpLFllKFMsUWUpLCQoR3IsMCwwKSxtLnVwZGF0ZVNvdXJjZUZpbGUoUWUsZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVOb2RlQXJyYXkoZS5jb25jYXRlbmF0ZShTLENlKSksUWUuc3RhdGVtZW50cykpfWZ1bmN0aW9uIEgoUWUpe2lmKGhlIT09dm9pZCAwKXt2YXIgR3I9aGUuYWxsb3dlZE5vbkxhYmVsZWRKdW1wcztoZS5hbGxvd2VkTm9uTGFiZWxlZEp1bXBzfD0yO3ZhciBTPWUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKTtyZXR1cm4gaGUuYWxsb3dlZE5vbkxhYmVsZWRKdW1wcz1HcixTfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKFFlLEwscCl9ZnVuY3Rpb24gSShRZSl7dmFyIEdyPVgoNzEwNCwwKSxTPWUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKTtyZXR1cm4gJChHciwwLDApLFN9ZnVuY3Rpb24gbChRZSl7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKG0uY3JlYXRlUmV0dXJuU3RhdGVtZW50KG0uY3JlYXRlVW5pcXVlTmFtZShcIl90aGlzXCIsNDgpKSxRZSl9ZnVuY3Rpb24gZChRZSl7cmV0dXJuIGhlPyhoZS5ub25Mb2NhbEp1bXBzfD04LEEoUWUpJiYoUWU9bChRZSkpLG0uY3JlYXRlUmV0dXJuU3RhdGVtZW50KG0uY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oW20uY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KG0uY3JlYXRlSWRlbnRpZmllcihcInZhbHVlXCIpLFFlLmV4cHJlc3Npb24/ZS52aXNpdE5vZGUoUWUuZXhwcmVzc2lvbixMLGUuaXNFeHByZXNzaW9uKTptLmNyZWF0ZVZvaWRaZXJvKCkpXSkpKTpBKFFlKT9sKFFlKTplLnZpc2l0RWFjaENoaWxkKFFlLEwscCl9ZnVuY3Rpb24gRChRZSl7cmV0dXJuIE8mMiYmIShPJjE2Mzg0KSYmKE98PTY1NTM2KSxoZT9PJjI/KGhlLmNvbnRhaW5zTGV4aWNhbFRoaXM9ITAsUWUpOmhlLnRoaXNOYW1lfHwoaGUudGhpc05hbWU9bS5jcmVhdGVVbmlxdWVOYW1lKFwidGhpc1wiKSk6UWV9ZnVuY3Rpb24gZmUoUWUpe3JldHVybiBlLnZpc2l0RWFjaENoaWxkKFFlLFAscCl9ZnVuY3Rpb24gZyhRZSl7cmV0dXJuIGhlJiZzZS5pc0FyZ3VtZW50c0xvY2FsQmluZGluZyhRZSk/aGUuYXJndW1lbnRzTmFtZXx8KGhlLmFyZ3VtZW50c05hbWU9bS5jcmVhdGVVbmlxdWVOYW1lKFwiYXJndW1lbnRzXCIpKTpRZX1mdW5jdGlvbiBuZShRZSl7aWYoaGUpe3ZhciBHcj1RZS5raW5kPT09MjQ2PzI6NCxTPVFlLmxhYmVsJiZoZS5sYWJlbHMmJmhlLmxhYmVscy5nZXQoZS5pZFRleHQoUWUubGFiZWwpKXx8IVFlLmxhYmVsJiZoZS5hbGxvd2VkTm9uTGFiZWxlZEp1bXBzJkdyO2lmKCFTKXt2YXIgQ2U9dm9pZCAwLHFlPVFlLmxhYmVsO3FlP1FlLmtpbmQ9PT0yNDY/KENlPVwiYnJlYWstXCIuY29uY2F0KHFlLmVzY2FwZWRUZXh0KSxLaShoZSwhMCxlLmlkVGV4dChxZSksQ2UpKTooQ2U9XCJjb250aW51ZS1cIi5jb25jYXQocWUuZXNjYXBlZFRleHQpLEtpKGhlLCExLGUuaWRUZXh0KHFlKSxDZSkpOlFlLmtpbmQ9PT0yNDY/KGhlLm5vbkxvY2FsSnVtcHN8PTIsQ2U9XCJicmVha1wiKTooaGUubm9uTG9jYWxKdW1wc3w9NCxDZT1cImNvbnRpbnVlXCIpO3ZhciBicj1tLmNyZWF0ZVN0cmluZ0xpdGVyYWwoQ2UpO2lmKGhlLmxvb3BPdXRQYXJhbWV0ZXJzLmxlbmd0aCl7Zm9yKHZhciBacj1oZS5sb29wT3V0UGFyYW1ldGVycyxTaT12b2lkIDAsUGk9MDtQaTxaci5sZW5ndGg7UGkrKyl7dmFyIFFpPXV0KFpyW1BpXSwxKTtQaT09PTA/U2k9UWk6U2k9bS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uKFNpLDI3LFFpKX1icj1tLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oU2ksMjcsYnIpfXJldHVybiBtLmNyZWF0ZVJldHVyblN0YXRlbWVudChicil9fXJldHVybiBlLnZpc2l0RWFjaENoaWxkKFFlLEwscCl9ZnVuY3Rpb24gdWUoUWUpe3ZhciBHcj1tLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24obS5nZXRMb2NhbE5hbWUoUWUsITApLHZvaWQgMCx2b2lkIDAsRmUoUWUpKTtlLnNldE9yaWdpbmFsTm9kZShHcixRZSk7dmFyIFM9W10sQ2U9bS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsbS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbR3JdKSk7aWYoZS5zZXRPcmlnaW5hbE5vZGUoQ2UsUWUpLGUuc2V0VGV4dFJhbmdlKENlLFFlKSxlLnN0YXJ0T25OZXdMaW5lKENlKSxTLnB1c2goQ2UpLGUuaGFzU3ludGFjdGljTW9kaWZpZXIoUWUsMSkpe3ZhciBxZT1lLmhhc1N5bnRhY3RpY01vZGlmaWVyKFFlLDUxMik/bS5jcmVhdGVFeHBvcnREZWZhdWx0KG0uZ2V0TG9jYWxOYW1lKFFlKSk6bS5jcmVhdGVFeHRlcm5hbE1vZHVsZUV4cG9ydChtLmdldExvY2FsTmFtZShRZSkpO2Uuc2V0T3JpZ2luYWxOb2RlKHFlLENlKSxTLnB1c2gocWUpfXZhciBicj1lLmdldEVtaXRGbGFncyhRZSk7cmV0dXJuKGJyJjQxOTQzMDQpPT09MCYmKFMucHVzaChtLmNyZWF0ZUVuZE9mRGVjbGFyYXRpb25NYXJrZXIoUWUpKSxlLnNldEVtaXRGbGFncyhDZSxicnw0MTk0MzA0KSksZS5zaW5nbGVPck1hbnkoUyl9ZnVuY3Rpb24gV2UoUWUpe3JldHVybiBGZShRZSl9ZnVuY3Rpb24gRmUoUWUpe1FlLm5hbWUmJkNvKCk7dmFyIEdyPWUuZ2V0Q2xhc3NFeHRlbmRzSGVyaXRhZ2VFbGVtZW50KFFlKSxTPW0uY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCxHcj9bbS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxtLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfc3VwZXJcIiw0OCkpXTpbXSx2b2lkIDAsWihRZSxHcikpO2Uuc2V0RW1pdEZsYWdzKFMsZS5nZXRFbWl0RmxhZ3MoUWUpJjY1NTM2fDUyNDI4OCk7dmFyIENlPW0uY3JlYXRlUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb24oUyk7ZS5zZXRUZXh0UmFuZ2VFbmQoQ2UsUWUuZW5kKSxlLnNldEVtaXRGbGFncyhDZSwxNTM2KTt2YXIgcWU9bS5jcmVhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbihDZSk7ZS5zZXRUZXh0UmFuZ2VFbmQocWUsZS5za2lwVHJpdmlhKHEsUWUucG9zKSksZS5zZXRFbWl0RmxhZ3MocWUsMTUzNik7dmFyIGJyPW0uY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24obS5jcmVhdGVDYWxsRXhwcmVzc2lvbihxZSx2b2lkIDAsR3I/W2UudmlzaXROb2RlKEdyLmV4cHJlc3Npb24sTCxlLmlzRXhwcmVzc2lvbildOltdKSk7cmV0dXJuIGUuYWRkU3ludGhldGljTGVhZGluZ0NvbW1lbnQoYnIsMyxcIiogQGNsYXNzIFwiKSxicn1mdW5jdGlvbiBaKFFlLEdyKXt2YXIgUz1bXSxDZT1tLmdldEludGVybmFsTmFtZShRZSkscWU9ZS5pc0lkZW50aWZpZXJBTm9uQ29udGV4dHVhbEtleXdvcmQoQ2UpP20uZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoQ2UpOkNlO29lKCksQmUoUyxRZSxHciksZ2UoUyxRZSxxZSxHciksbihTLFFlKTt2YXIgYnI9ZS5jcmVhdGVUb2tlblJhbmdlKGUuc2tpcFRyaXZpYShxLFFlLm1lbWJlcnMuZW5kKSwxOSksWnI9bS5jcmVhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbihxZSk7ZS5zZXRUZXh0UmFuZ2VFbmQoWnIsYnIuZW5kKSxlLnNldEVtaXRGbGFncyhaciwxNTM2KTt2YXIgU2k9bS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoWnIpO2Uuc2V0VGV4dFJhbmdlUG9zKFNpLGJyLnBvcyksZS5zZXRFbWl0RmxhZ3MoU2ksMTkyMCksUy5wdXNoKFNpKSxlLmluc2VydFN0YXRlbWVudHNBZnRlclN0YW5kYXJkUHJvbG9ndWUoUyxUKCkpO3ZhciBQaT1tLmNyZWF0ZUJsb2NrKGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlTm9kZUFycmF5KFMpLFFlLm1lbWJlcnMpLCEwKTtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoUGksMTUzNiksUGl9ZnVuY3Rpb24gQmUoUWUsR3IsUyl7UyYmUWUucHVzaChlLnNldFRleHRSYW5nZShtLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoRygpLmNyZWF0ZUV4dGVuZHNIZWxwZXIobS5nZXRJbnRlcm5hbE5hbWUoR3IpKSksUykpfWZ1bmN0aW9uIGdlKFFlLEdyLFMsQ2Upe3ZhciBxZT1oZTtoZT12b2lkIDA7dmFyIGJyPVgoMzI2NjIsNzMpLFpyPWUuZ2V0Rmlyc3RDb25zdHJ1Y3RvcldpdGhCb2R5KEdyKSxTaT1KbihacixDZSE9PXZvaWQgMCksUGk9bS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFMsdm9pZCAwLFJlKFpyLFNpKSx2b2lkIDAsRWUoWnIsR3IsQ2UsU2kpKTtlLnNldFRleHRSYW5nZShQaSxacnx8R3IpLENlJiZlLnNldEVtaXRGbGFncyhQaSw4KSxRZS5wdXNoKFBpKSwkKGJyLDk4MzA0LDApLGhlPXFlfWZ1bmN0aW9uIFJlKFFlLEdyKXtyZXR1cm4gZS52aXNpdFBhcmFtZXRlckxpc3QoUWUmJiFHcj9RZS5wYXJhbWV0ZXJzOnZvaWQgMCxMLHApfHxbXX1mdW5jdGlvbiB6ZShRZSxHcil7dmFyIFM9W107ZigpLG0ubWVyZ2VMZXhpY2FsRW52aXJvbm1lbnQoUyxUKCkpLEdyJiZTLnB1c2gobS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoX2UoKSkpO3ZhciBDZT1tLmNyZWF0ZU5vZGVBcnJheShTKTtlLnNldFRleHRSYW5nZShDZSxRZS5tZW1iZXJzKTt2YXIgcWU9bS5jcmVhdGVCbG9jayhDZSwhMCk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKHFlLFFlKSxlLnNldEVtaXRGbGFncyhxZSwxNTM2KSxxZX1mdW5jdGlvbiBFZShRZSxHcixTLENlKXt2YXIgcWU9ISFTJiZlLnNraXBPdXRlckV4cHJlc3Npb25zKFMuZXhwcmVzc2lvbikua2luZCE9PTEwNDtpZighUWUpcmV0dXJuIHplKEdyLHFlKTt2YXIgYnI9W10sWnI9W107ZigpO3ZhciBTaT1lLnRha2VXaGlsZShRZS5ib2R5LnN0YXRlbWVudHMsZS5pc1Byb2xvZ3VlRGlyZWN0aXZlKSxQaT1IZShRZS5ib2R5LnN0YXRlbWVudHMsU2kpLFFpPVBpLnN1cGVyQ2FsbCxDdD1QaS5zdXBlclN0YXRlbWVudEluZGV4LHNhPUN0PT09LTE/U2kubGVuZ3RoOkN0KzEsZW49c2E7Q2V8fChlbj1tLmNvcHlTdGFuZGFyZFByb2xvZ3VlKFFlLmJvZHkuc3RhdGVtZW50cyxicixlbiwhMSkpLENlfHwoZW49bS5jb3B5Q3VzdG9tUHJvbG9ndWUoUWUuYm9keS5zdGF0ZW1lbnRzLFpyLGVuLEwsdm9pZCAwKSk7dmFyIFdhO2lmKENlP1dhPV9lKCk6UWkmJihXYT1rYShRaSkpLFdhJiYoT3w9ODE5MikseWUoYnIsUWUpLENyKGJyLFFlLENlKSxlLmFkZFJhbmdlKFpyLGUudmlzaXROb2RlcyhRZS5ib2R5LnN0YXRlbWVudHMsTCxlLmlzU3RhdGVtZW50LGVuKSksbS5tZXJnZUxleGljYWxFbnZpcm9ubWVudChicixUKCkpLE5lKGJyLFFlLCExKSxxZXx8V2EpaWYoV2EmJnNhPT09UWUuYm9keS5zdGF0ZW1lbnRzLmxlbmd0aCYmIShRZS5ib2R5LnRyYW5zZm9ybUZsYWdzJjgxOTIpKXt2YXIgcW49ZS5jYXN0KGUuY2FzdChXYSxlLmlzQmluYXJ5RXhwcmVzc2lvbikubGVmdCxlLmlzQ2FsbEV4cHJlc3Npb24pLG1vPW0uY3JlYXRlUmV0dXJuU3RhdGVtZW50KFdhKTtlLnNldENvbW1lbnRSYW5nZShtbyxlLmdldENvbW1lbnRSYW5nZShxbikpLGUuc2V0RW1pdEZsYWdzKHFuLDE1MzYpLFpyLnB1c2gobW8pfWVsc2UgQ3Q8PVNpLmxlbmd0aD9FcihacixRZSxXYXx8SWUoKSk6KEVyKGJyLFFlLEllKCkpLFdhJiZCcihacixXYSkpLHJyKFFlLmJvZHkpfHxaci5wdXNoKG0uY3JlYXRlUmV0dXJuU3RhdGVtZW50KG0uY3JlYXRlVW5pcXVlTmFtZShcIl90aGlzXCIsNDgpKSk7ZWxzZSBZZShicixRZSk7dmFyIFNvPW0uY3JlYXRlQmxvY2soZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVOb2RlQXJyYXkoVmUoVmUoVmUoVmUoW10sU2ksITApLGJyLCEwKSxDdDw9U2kubGVuZ3RoP2UuZW1wdHlBcnJheTplLnZpc2l0Tm9kZXMoUWUuYm9keS5zdGF0ZW1lbnRzLEwsZS5pc1N0YXRlbWVudCxTaS5sZW5ndGgsQ3QtU2kubGVuZ3RoKSwhMCksWnIsITApKSxRZS5ib2R5LnN0YXRlbWVudHMpLCEwKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UoU28sUWUuYm9keSksU299ZnVuY3Rpb24gSGUoUWUsR3Ipe2Zvcih2YXIgUz1Hci5sZW5ndGg7UzxRZS5sZW5ndGg7Uys9MSl7dmFyIENlPWUuZ2V0U3VwZXJDYWxsRnJvbVN0YXRlbWVudChRZVtTXSk7aWYoQ2UpcmV0dXJue3N1cGVyQ2FsbDpDZSxzdXBlclN0YXRlbWVudEluZGV4OlN9fXJldHVybntzdXBlclN0YXRlbWVudEluZGV4Oi0xfX1mdW5jdGlvbiBycihRZSl7aWYoUWUua2luZD09PTI0NylyZXR1cm4hMDtpZihRZS5raW5kPT09MjM5KXt2YXIgR3I9UWU7aWYoR3IuZWxzZVN0YXRlbWVudClyZXR1cm4gcnIoR3IudGhlblN0YXRlbWVudCkmJnJyKEdyLmVsc2VTdGF0ZW1lbnQpfWVsc2UgaWYoUWUua2luZD09PTIzNSl7dmFyIFM9ZS5sYXN0T3JVbmRlZmluZWQoUWUuc3RhdGVtZW50cyk7aWYoUyYmcnIoUykpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gSWUoKXtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MobS5jcmVhdGVUaGlzKCksNCl9ZnVuY3Rpb24gX2UoKXtyZXR1cm4gbS5jcmVhdGVMb2dpY2FsT3IobS5jcmVhdGVMb2dpY2FsQW5kKG0uY3JlYXRlU3RyaWN0SW5lcXVhbGl0eShtLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfc3VwZXJcIiw0OCksbS5jcmVhdGVOdWxsKCkpLG0uY3JlYXRlRnVuY3Rpb25BcHBseUNhbGwobS5jcmVhdGVVbmlxdWVOYW1lKFwiX3N1cGVyXCIsNDgpLEllKCksbS5jcmVhdGVJZGVudGlmaWVyKFwiYXJndW1lbnRzXCIpKSksSWUoKSl9ZnVuY3Rpb24gd2UoUWUpe2lmKCFRZS5kb3REb3REb3RUb2tlbilyZXR1cm4gZS5pc0JpbmRpbmdQYXR0ZXJuKFFlLm5hbWUpP2Uuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsbS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShRZSksdm9pZCAwLHZvaWQgMCx2b2lkIDApLFFlKSxRZSk6UWUuaW5pdGlhbGl6ZXI/ZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxRZS5uYW1lLHZvaWQgMCx2b2lkIDAsdm9pZCAwKSxRZSksUWUpOlFlfWZ1bmN0aW9uIGRlKFFlKXtyZXR1cm4gUWUuaW5pdGlhbGl6ZXIhPT12b2lkIDB8fGUuaXNCaW5kaW5nUGF0dGVybihRZS5uYW1lKX1mdW5jdGlvbiB5ZShRZSxHcil7aWYoIWUuc29tZShHci5wYXJhbWV0ZXJzLGRlKSlyZXR1cm4hMTtmb3IodmFyIFM9ITEsQ2U9MCxxZT1Hci5wYXJhbWV0ZXJzO0NlPHFlLmxlbmd0aDtDZSsrKXt2YXIgYnI9cWVbQ2VdLFpyPWJyLm5hbWUsU2k9YnIuaW5pdGlhbGl6ZXIsUGk9YnIuZG90RG90RG90VG9rZW47UGl8fChlLmlzQmluZGluZ1BhdHRlcm4oWnIpP1M9QWUoUWUsYnIsWnIsU2kpfHxTOlNpJiYoZXIoUWUsYnIsWnIsU2kpLFM9ITApKX1yZXR1cm4gU31mdW5jdGlvbiBBZShRZSxHcixTLENlKXtyZXR1cm4gUy5lbGVtZW50cy5sZW5ndGg+MD8oZS5pbnNlcnRTdGF0ZW1lbnRBZnRlckN1c3RvbVByb2xvZ3VlKFFlLGUuc2V0RW1pdEZsYWdzKG0uY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoZS5mbGF0dGVuRGVzdHJ1Y3R1cmluZ0JpbmRpbmcoR3IsTCxwLDAsbS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShHcikpKSksMTA0ODU3NikpLCEwKTpDZT8oZS5pbnNlcnRTdGF0ZW1lbnRBZnRlckN1c3RvbVByb2xvZ3VlKFFlLGUuc2V0RW1pdEZsYWdzKG0uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChtLmNyZWF0ZUFzc2lnbm1lbnQobS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShHciksZS52aXNpdE5vZGUoQ2UsTCxlLmlzRXhwcmVzc2lvbikpKSwxMDQ4NTc2KSksITApOiExfWZ1bmN0aW9uIGVyKFFlLEdyLFMsQ2Upe0NlPWUudmlzaXROb2RlKENlLEwsZS5pc0V4cHJlc3Npb24pO3ZhciBxZT1tLmNyZWF0ZUlmU3RhdGVtZW50KG0uY3JlYXRlVHlwZUNoZWNrKG0uY2xvbmVOb2RlKFMpLFwidW5kZWZpbmVkXCIpLGUuc2V0RW1pdEZsYWdzKGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlQmxvY2soW20uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChlLnNldEVtaXRGbGFncyhlLnNldFRleHRSYW5nZShtLmNyZWF0ZUFzc2lnbm1lbnQoZS5zZXRFbWl0RmxhZ3MoZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UobS5jbG9uZU5vZGUoUyksUyksUy5wYXJlbnQpLDQ4KSxlLnNldEVtaXRGbGFncyhDZSw0OHxlLmdldEVtaXRGbGFncyhDZSl8MTUzNikpLEdyKSwxNTM2KSldKSxHciksMTk1MykpO2Uuc3RhcnRPbk5ld0xpbmUocWUpLGUuc2V0VGV4dFJhbmdlKHFlLEdyKSxlLnNldEVtaXRGbGFncyhxZSwxMDUwNTI4KSxlLmluc2VydFN0YXRlbWVudEFmdGVyQ3VzdG9tUHJvbG9ndWUoUWUscWUpfWZ1bmN0aW9uIGlyKFFlLEdyKXtyZXR1cm4hIShRZSYmUWUuZG90RG90RG90VG9rZW4mJiFHcil9ZnVuY3Rpb24gQ3IoUWUsR3IsUyl7dmFyIENlPVtdLHFlPWUubGFzdE9yVW5kZWZpbmVkKEdyLnBhcmFtZXRlcnMpO2lmKCFpcihxZSxTKSlyZXR1cm4hMTt2YXIgYnI9cWUubmFtZS5raW5kPT09Nzk/ZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UobS5jbG9uZU5vZGUocWUubmFtZSkscWUubmFtZSkscWUubmFtZS5wYXJlbnQpOm0uY3JlYXRlVGVtcFZhcmlhYmxlKHZvaWQgMCk7ZS5zZXRFbWl0RmxhZ3MoYnIsNDgpO3ZhciBacj1xZS5uYW1lLmtpbmQ9PT03OT9tLmNsb25lTm9kZShxZS5uYW1lKTpicixTaT1Hci5wYXJhbWV0ZXJzLmxlbmd0aC0xLFBpPW0uY3JlYXRlTG9vcFZhcmlhYmxlKCk7Q2UucHVzaChlLnNldEVtaXRGbGFncyhlLnNldFRleHRSYW5nZShtLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFttLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oYnIsdm9pZCAwLHZvaWQgMCxtLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oW10pKV0pKSxxZSksMTA0ODU3NikpO3ZhciBRaT1tLmNyZWF0ZUZvclN0YXRlbWVudChlLnNldFRleHRSYW5nZShtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFttLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oUGksdm9pZCAwLHZvaWQgMCxtLmNyZWF0ZU51bWVyaWNMaXRlcmFsKFNpKSldKSxxZSksZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVMZXNzVGhhbihQaSxtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihtLmNyZWF0ZUlkZW50aWZpZXIoXCJhcmd1bWVudHNcIiksXCJsZW5ndGhcIikpLHFlKSxlLnNldFRleHRSYW5nZShtLmNyZWF0ZVBvc3RmaXhJbmNyZW1lbnQoUGkpLHFlKSxtLmNyZWF0ZUJsb2NrKFtlLnN0YXJ0T25OZXdMaW5lKGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChtLmNyZWF0ZUFzc2lnbm1lbnQobS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihacixTaT09PTA/UGk6bS5jcmVhdGVTdWJ0cmFjdChQaSxtLmNyZWF0ZU51bWVyaWNMaXRlcmFsKFNpKSkpLG0uY3JlYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24obS5jcmVhdGVJZGVudGlmaWVyKFwiYXJndW1lbnRzXCIpLFBpKSkpLHFlKSldKSk7cmV0dXJuIGUuc2V0RW1pdEZsYWdzKFFpLDEwNDg1NzYpLGUuc3RhcnRPbk5ld0xpbmUoUWkpLENlLnB1c2goUWkpLHFlLm5hbWUua2luZCE9PTc5JiZDZS5wdXNoKGUuc2V0RW1pdEZsYWdzKGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoZS5mbGF0dGVuRGVzdHJ1Y3R1cmluZ0JpbmRpbmcocWUsTCxwLDAsWnIpKSkscWUpLDEwNDg1NzYpKSxlLmluc2VydFN0YXRlbWVudHNBZnRlckN1c3RvbVByb2xvZ3VlKFFlLENlKSwhMH1mdW5jdGlvbiBZZShRZSxHcil7cmV0dXJuIE8mNjU1MzYmJkdyLmtpbmQhPT0yMTQ/KEVyKFFlLEdyLG0uY3JlYXRlVGhpcygpKSwhMCk6ITF9ZnVuY3Rpb24gQnIoUWUsR3Ipe0tvKCk7dmFyIFM9bS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihtLmNyZWF0ZVRoaXMoKSw2MyxHcikpO2UuaW5zZXJ0U3RhdGVtZW50QWZ0ZXJDdXN0b21Qcm9sb2d1ZShRZSxTKSxlLnNldENvbW1lbnRSYW5nZShTLGUuZ2V0T3JpZ2luYWxOb2RlKEdyKS5wYXJlbnQpfWZ1bmN0aW9uIEVyKFFlLEdyLFMpe0tvKCk7dmFyIENlPW0uY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW20uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihtLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfdGhpc1wiLDQ4KSx2b2lkIDAsdm9pZCAwLFMpXSkpO2Uuc2V0RW1pdEZsYWdzKENlLDEwNTAxMTIpLGUuc2V0U291cmNlTWFwUmFuZ2UoQ2UsR3IpLGUuaW5zZXJ0U3RhdGVtZW50QWZ0ZXJDdXN0b21Qcm9sb2d1ZShRZSxDZSl9ZnVuY3Rpb24gTmUoUWUsR3IsUyl7aWYoTyYzMjc2OCl7dmFyIENlPXZvaWQgMDtzd2l0Y2goR3Iua2luZCl7Y2FzZSAyMTQ6cmV0dXJuIFFlO2Nhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOkNlPW0uY3JlYXRlVm9pZFplcm8oKTticmVhaztjYXNlIDE3MTpDZT1tLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLnNldEVtaXRGbGFncyhtLmNyZWF0ZVRoaXMoKSw0KSxcImNvbnN0cnVjdG9yXCIpO2JyZWFrO2Nhc2UgMjU2OmNhc2UgMjEzOkNlPW0uY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKG0uY3JlYXRlTG9naWNhbEFuZChlLnNldEVtaXRGbGFncyhtLmNyZWF0ZVRoaXMoKSw0KSxtLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oZS5zZXRFbWl0RmxhZ3MobS5jcmVhdGVUaGlzKCksNCksMTAyLG0uZ2V0TG9jYWxOYW1lKEdyKSkpLHZvaWQgMCxtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLnNldEVtaXRGbGFncyhtLmNyZWF0ZVRoaXMoKSw0KSxcImNvbnN0cnVjdG9yXCIpLHZvaWQgMCxtLmNyZWF0ZVZvaWRaZXJvKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoR3IpfXZhciBxZT1tLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFttLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24obS5jcmVhdGVVbmlxdWVOYW1lKFwiX25ld1RhcmdldFwiLDQ4KSx2b2lkIDAsdm9pZCAwLENlKV0pKTtlLnNldEVtaXRGbGFncyhxZSwxMDUwMTEyKSxTJiYoUWU9UWUuc2xpY2UoKSksZS5pbnNlcnRTdGF0ZW1lbnRBZnRlckN1c3RvbVByb2xvZ3VlKFFlLHFlKX1yZXR1cm4gUWV9ZnVuY3Rpb24gbihRZSxHcil7Zm9yKHZhciBTPTAsQ2U9R3IubWVtYmVycztTPENlLmxlbmd0aDtTKyspe3ZhciBxZT1DZVtTXTtzd2l0Y2gocWUua2luZCl7Y2FzZSAyMzQ6UWUucHVzaChscihxZSkpO2JyZWFrO2Nhc2UgMTY5OlFlLnB1c2goYmUoZG4oR3IscWUpLHFlLEdyKSk7YnJlYWs7Y2FzZSAxNzI6Y2FzZSAxNzM6dmFyIGJyPWUuZ2V0QWxsQWNjZXNzb3JEZWNsYXJhdGlvbnMoR3IubWVtYmVycyxxZSk7cWU9PT1ici5maXJzdEFjY2Vzc29yJiZRZS5wdXNoKEdlKGRuKEdyLHFlKSxicixHcikpO2JyZWFrO2Nhc2UgMTcxOmNhc2UgMTcwOmJyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChxZSxSJiZSLmZpbGVOYW1lKTticmVha319fWZ1bmN0aW9uIGxyKFFlKXtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVFbXB0eVN0YXRlbWVudCgpLFFlKX1mdW5jdGlvbiBiZShRZSxHcixTKXt2YXIgQ2U9ZS5nZXRDb21tZW50UmFuZ2UoR3IpLHFlPWUuZ2V0U291cmNlTWFwUmFuZ2UoR3IpLGJyPVVyKEdyLEdyLHZvaWQgMCxTKSxacj1lLnZpc2l0Tm9kZShHci5uYW1lLEwsZS5pc1Byb3BlcnR5TmFtZSksU2k7aWYoIWUuaXNQcml2YXRlSWRlbnRpZmllcihacikmJmUuZ2V0VXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMocC5nZXRDb21waWxlck9wdGlvbnMoKSkpe3ZhciBQaT1lLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoWnIpP1pyLmV4cHJlc3Npb246ZS5pc0lkZW50aWZpZXIoWnIpP20uY3JlYXRlU3RyaW5nTGl0ZXJhbChlLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFpyLmVzY2FwZWRUZXh0KSk6WnI7U2k9bS5jcmVhdGVPYmplY3REZWZpbmVQcm9wZXJ0eUNhbGwoUWUsUGksbS5jcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3Ioe3ZhbHVlOmJyLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSkpfWVsc2V7dmFyIFFpPWUuY3JlYXRlTWVtYmVyQWNjZXNzRm9yUHJvcGVydHlOYW1lKG0sUWUsWnIsR3IubmFtZSk7U2k9bS5jcmVhdGVBc3NpZ25tZW50KFFpLGJyKX1lLnNldEVtaXRGbGFncyhiciwxNTM2KSxlLnNldFNvdXJjZU1hcFJhbmdlKGJyLHFlKTt2YXIgQ3Q9ZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFNpKSxHcik7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKEN0LEdyKSxlLnNldENvbW1lbnRSYW5nZShDdCxDZSksZS5zZXRFbWl0RmxhZ3MoQ3QsNDgpLEN0fWZ1bmN0aW9uIEdlKFFlLEdyLFMpe3ZhciBDZT1tLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQodXIoUWUsR3IsUywhMSkpO3JldHVybiBlLnNldEVtaXRGbGFncyhDZSwxNTM2KSxlLnNldFNvdXJjZU1hcFJhbmdlKENlLGUuZ2V0U291cmNlTWFwUmFuZ2UoR3IuZmlyc3RBY2Nlc3NvcikpLENlfWZ1bmN0aW9uIHVyKFFlLEdyLFMsQ2Upe3ZhciBxZT1Hci5maXJzdEFjY2Vzc29yLGJyPUdyLmdldEFjY2Vzc29yLFpyPUdyLnNldEFjY2Vzc29yLFNpPWUuc2V0UGFyZW50KGUuc2V0VGV4dFJhbmdlKG0uY2xvbmVOb2RlKFFlKSxRZSksUWUucGFyZW50KTtlLnNldEVtaXRGbGFncyhTaSwxNTY4KSxlLnNldFNvdXJjZU1hcFJhbmdlKFNpLHFlLm5hbWUpO3ZhciBQaT1lLnZpc2l0Tm9kZShxZS5uYW1lLEwsZS5pc1Byb3BlcnR5TmFtZSk7aWYoZS5pc1ByaXZhdGVJZGVudGlmaWVyKFBpKSlyZXR1cm4gZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChQaSxcIkVuY291bnRlcmVkIHVuaGFuZGxlZCBwcml2YXRlIGlkZW50aWZpZXIgd2hpbGUgdHJhbnNmb3JtaW5nIEVTMjAxNS5cIik7dmFyIFFpPWUuY3JlYXRlRXhwcmVzc2lvbkZvclByb3BlcnR5TmFtZShtLFBpKTtlLnNldEVtaXRGbGFncyhRaSwxNTUyKSxlLnNldFNvdXJjZU1hcFJhbmdlKFFpLHFlLm5hbWUpO3ZhciBDdD1bXTtpZihicil7dmFyIHNhPVVyKGJyLHZvaWQgMCx2b2lkIDAsUyk7ZS5zZXRTb3VyY2VNYXBSYW5nZShzYSxlLmdldFNvdXJjZU1hcFJhbmdlKGJyKSksZS5zZXRFbWl0RmxhZ3Moc2EsNTEyKTt2YXIgZW49bS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJnZXRcIixzYSk7ZS5zZXRDb21tZW50UmFuZ2UoZW4sZS5nZXRDb21tZW50UmFuZ2UoYnIpKSxDdC5wdXNoKGVuKX1pZihacil7dmFyIFdhPVVyKFpyLHZvaWQgMCx2b2lkIDAsUyk7ZS5zZXRTb3VyY2VNYXBSYW5nZShXYSxlLmdldFNvdXJjZU1hcFJhbmdlKFpyKSksZS5zZXRFbWl0RmxhZ3MoV2EsNTEyKTt2YXIgcW49bS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJzZXRcIixXYSk7ZS5zZXRDb21tZW50UmFuZ2UocW4sZS5nZXRDb21tZW50UmFuZ2UoWnIpKSxDdC5wdXNoKHFuKX1DdC5wdXNoKG0uY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwiZW51bWVyYWJsZVwiLGJyfHxacj9tLmNyZWF0ZUZhbHNlKCk6bS5jcmVhdGVUcnVlKCkpLG0uY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwiY29uZmlndXJhYmxlXCIsbS5jcmVhdGVUcnVlKCkpKTt2YXIgbW89bS5jcmVhdGVDYWxsRXhwcmVzc2lvbihtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihtLmNyZWF0ZUlkZW50aWZpZXIoXCJPYmplY3RcIiksXCJkZWZpbmVQcm9wZXJ0eVwiKSx2b2lkIDAsW1NpLFFpLG0uY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oQ3QsITApXSk7cmV0dXJuIENlJiZlLnN0YXJ0T25OZXdMaW5lKG1vKSxtb31mdW5jdGlvbiB5cihRZSl7UWUudHJhbnNmb3JtRmxhZ3MmODE5MiYmIShPJjE2Mzg0KSYmKE98PTY1NTM2KTt2YXIgR3I9aGU7aGU9dm9pZCAwO3ZhciBTPVgoMTUyMzIsNjYpLENlPW0uY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCxlLnZpc2l0UGFyYW1ldGVyTGlzdChRZS5wYXJhbWV0ZXJzLEwscCksdm9pZCAwLGlpKFFlKSk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKENlLFFlKSxlLnNldE9yaWdpbmFsTm9kZShDZSxRZSksZS5zZXRFbWl0RmxhZ3MoQ2UsOCksJChTLDAsMCksaGU9R3IsQ2V9ZnVuY3Rpb24gSXIoUWUpe3ZhciBHcj1lLmdldEVtaXRGbGFncyhRZSkmMjYyMTQ0P1goMzI2NjIsNjkpOlgoMzI2NzAsNjUpLFM9aGU7aGU9dm9pZCAwO3ZhciBDZT1lLnZpc2l0UGFyYW1ldGVyTGlzdChRZS5wYXJhbWV0ZXJzLEwscCkscWU9aWkoUWUpLGJyPU8mMzI3Njg/bS5nZXRMb2NhbE5hbWUoUWUpOlFlLm5hbWU7cmV0dXJuICQoR3IsOTgzMDQsMCksaGU9UyxtLnVwZGF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihRZSx2b2lkIDAsUWUuYXN0ZXJpc2tUb2tlbixicix2b2lkIDAsQ2Usdm9pZCAwLHFlKX1mdW5jdGlvbiB3cihRZSl7dmFyIEdyPWhlO2hlPXZvaWQgMDt2YXIgUz1YKDMyNjcwLDY1KSxDZT1lLnZpc2l0UGFyYW1ldGVyTGlzdChRZS5wYXJhbWV0ZXJzLEwscCkscWU9aWkoUWUpLGJyPU8mMzI3Njg/bS5nZXRMb2NhbE5hbWUoUWUpOlFlLm5hbWU7cmV0dXJuICQoUyw5ODMwNCwwKSxoZT1HcixtLnVwZGF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oUWUsdm9pZCAwLGUudmlzaXROb2RlcyhRZS5tb2RpZmllcnMsTCxlLmlzTW9kaWZpZXIpLFFlLmFzdGVyaXNrVG9rZW4sYnIsdm9pZCAwLENlLHZvaWQgMCxxZSl9ZnVuY3Rpb24gVXIoUWUsR3IsUyxDZSl7dmFyIHFlPWhlO2hlPXZvaWQgMDt2YXIgYnI9Q2UmJmUuaXNDbGFzc0xpa2UoQ2UpJiYhZS5pc1N0YXRpYyhRZSk/WCgzMjY3MCw3Myk6WCgzMjY3MCw2NSksWnI9ZS52aXNpdFBhcmFtZXRlckxpc3QoUWUucGFyYW1ldGVycyxMLHApLFNpPWlpKFFlKTtyZXR1cm4gTyYzMjc2OCYmIVMmJihRZS5raW5kPT09MjU2fHxRZS5raW5kPT09MjEzKSYmKFM9bS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShRZSkpLCQoYnIsOTgzMDQsMCksaGU9cWUsZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLFFlLmFzdGVyaXNrVG9rZW4sUyx2b2lkIDAsWnIsdm9pZCAwLFNpKSxHciksUWUpfWZ1bmN0aW9uIGlpKFFlKXt2YXIgR3I9ITEsUz0hMSxDZSxxZSxicj1bXSxacj1bXSxTaT1RZS5ib2R5LFBpO2lmKGYoKSxlLmlzQmxvY2soU2kpJiYoUGk9bS5jb3B5U3RhbmRhcmRQcm9sb2d1ZShTaS5zdGF0ZW1lbnRzLGJyLDAsITEpLFBpPW0uY29weUN1c3RvbVByb2xvZ3VlKFNpLnN0YXRlbWVudHMsWnIsUGksTCxlLmlzSG9pc3RlZEZ1bmN0aW9uKSxQaT1tLmNvcHlDdXN0b21Qcm9sb2d1ZShTaS5zdGF0ZW1lbnRzLFpyLFBpLEwsZS5pc0hvaXN0ZWRWYXJpYWJsZVN0YXRlbWVudCkpLEdyPXllKFpyLFFlKXx8R3IsR3I9Q3IoWnIsUWUsITEpfHxHcixlLmlzQmxvY2soU2kpKVBpPW0uY29weUN1c3RvbVByb2xvZ3VlKFNpLnN0YXRlbWVudHMsWnIsUGksTCksQ2U9U2kuc3RhdGVtZW50cyxlLmFkZFJhbmdlKFpyLGUudmlzaXROb2RlcyhTaS5zdGF0ZW1lbnRzLEwsZS5pc1N0YXRlbWVudCxQaSkpLCFHciYmU2kubXVsdGlMaW5lJiYoR3I9ITApO2Vsc2V7ZS5EZWJ1Zy5hc3NlcnQoUWUua2luZD09PTIxNCksQ2U9ZS5tb3ZlUmFuZ2VFbmQoU2ksLTEpO3ZhciBRaT1RZS5lcXVhbHNHcmVhdGVyVGhhblRva2VuOyFlLm5vZGVJc1N5bnRoZXNpemVkKFFpKSYmIWUubm9kZUlzU3ludGhlc2l6ZWQoU2kpJiYoZS5yYW5nZUVuZElzT25TYW1lTGluZUFzUmFuZ2VTdGFydChRaSxTaSxSKT9TPSEwOkdyPSEwKTt2YXIgQ3Q9ZS52aXNpdE5vZGUoU2ksTCxlLmlzRXhwcmVzc2lvbiksc2E9bS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoQ3QpO2Uuc2V0VGV4dFJhbmdlKHNhLFNpKSxlLm1vdmVTeW50aGV0aWNDb21tZW50cyhzYSxTaSksZS5zZXRFbWl0RmxhZ3Moc2EsMTQ0MCksWnIucHVzaChzYSkscWU9U2l9aWYobS5tZXJnZUxleGljYWxFbnZpcm9ubWVudChicixUKCkpLE5lKGJyLFFlLCExKSxZZShicixRZSksZS5zb21lKGJyKSYmKEdyPSEwKSxaci51bnNoaWZ0LmFwcGx5KFpyLGJyKSxlLmlzQmxvY2soU2kpJiZlLmFycmF5SXNFcXVhbFRvKFpyLFNpLnN0YXRlbWVudHMpKXJldHVybiBTaTt2YXIgZW49bS5jcmVhdGVCbG9jayhlLnNldFRleHRSYW5nZShtLmNyZWF0ZU5vZGVBcnJheShaciksQ2UpLEdyKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UoZW4sUWUuYm9keSksIUdyJiZTJiZlLnNldEVtaXRGbGFncyhlbiwxKSxxZSYmZS5zZXRUb2tlblNvdXJjZU1hcFJhbmdlKGVuLDE5LHFlKSxlLnNldE9yaWdpbmFsTm9kZShlbixRZS5ib2R5KSxlbn1mdW5jdGlvbiBtaShRZSxHcil7aWYoR3IpcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKTt2YXIgUz1PJjI1Nj9YKDcxMDQsNTEyKTpYKDY5NzYsMTI4KSxDZT1lLnZpc2l0RWFjaENoaWxkKFFlLEwscCk7cmV0dXJuICQoUywwLDApLENlfWZ1bmN0aW9uIHBlKFFlKXtyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChRZSxQLHApfWZ1bmN0aW9uIG9yKFFlLEdyKXtyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChRZSxHcj9QOkwscCl9ZnVuY3Rpb24gcXIoUWUsR3Ipe3JldHVybiBlLmlzRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoUWUpP2UuZmxhdHRlbkRlc3RydWN0dXJpbmdBc3NpZ25tZW50KFFlLEwscCwwLCFHcik6UWUub3BlcmF0b3JUb2tlbi5raW5kPT09Mjc/bS51cGRhdGVCaW5hcnlFeHByZXNzaW9uKFFlLGUudmlzaXROb2RlKFFlLmxlZnQsUCxlLmlzRXhwcmVzc2lvbiksUWUub3BlcmF0b3JUb2tlbixlLnZpc2l0Tm9kZShRZS5yaWdodCxHcj9QOkwsZS5pc0V4cHJlc3Npb24pKTplLnZpc2l0RWFjaENoaWxkKFFlLEwscCl9ZnVuY3Rpb24gc2koUWUsR3Ipe2lmKEdyKXJldHVybiBlLnZpc2l0RWFjaENoaWxkKFFlLFAscCk7Zm9yKHZhciBTLENlPTA7Q2U8UWUuZWxlbWVudHMubGVuZ3RoO0NlKyspe3ZhciBxZT1RZS5lbGVtZW50c1tDZV0sYnI9ZS52aXNpdE5vZGUocWUsQ2U8UWUuZWxlbWVudHMubGVuZ3RoLTE/UDpMLGUuaXNFeHByZXNzaW9uKTsoU3x8YnIhPT1xZSkmJihTfHwoUz1RZS5lbGVtZW50cy5zbGljZSgwLENlKSksUy5wdXNoKGJyKSl9dmFyIFpyPVM/ZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVOb2RlQXJyYXkoUyksUWUuZWxlbWVudHMpOlFlLmVsZW1lbnRzO3JldHVybiBtLnVwZGF0ZUNvbW1hTGlzdEV4cHJlc3Npb24oUWUsWnIpfWZ1bmN0aW9uIERpKFFlKXtyZXR1cm4gUWUuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucy5sZW5ndGg9PT0xJiYhIVFlLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnNbMF0uaW5pdGlhbGl6ZXImJiEhKGUuZ2V0RW1pdEZsYWdzKFFlLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnNbMF0uaW5pdGlhbGl6ZXIpJjMzNTU0NDMyKX1mdW5jdGlvbiB3aShRZSl7dmFyIEdyPVgoMCxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKFFlLDEpPzMyOjApLFM7aWYoaGUmJihRZS5kZWNsYXJhdGlvbkxpc3QuZmxhZ3MmMyk9PT0wJiYhRGkoUWUpKXtmb3IodmFyIENlPXZvaWQgMCxxZT0wLGJyPVFlLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnM7cWU8YnIubGVuZ3RoO3FlKyspe3ZhciBacj1icltxZV07aWYoRGUoaGUsWnIpLFpyLmluaXRpYWxpemVyKXt2YXIgU2k9dm9pZCAwO2UuaXNCaW5kaW5nUGF0dGVybihaci5uYW1lKT9TaT1lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQXNzaWdubWVudChacixMLHAsMCk6KFNpPW0uY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihaci5uYW1lLDYzLGUudmlzaXROb2RlKFpyLmluaXRpYWxpemVyLEwsZS5pc0V4cHJlc3Npb24pKSxlLnNldFRleHRSYW5nZShTaSxacikpLENlPWUuYXBwZW5kKENlLFNpKX19Q2U/Uz1lLnNldFRleHRSYW5nZShtLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQobS5pbmxpbmVFeHByZXNzaW9ucyhDZSkpLFFlKTpTPXZvaWQgMH1lbHNlIFM9ZS52aXNpdEVhY2hDaGlsZChRZSxMLHApO3JldHVybiAkKEdyLDAsMCksU31mdW5jdGlvbiBYaShRZSl7aWYoUWUuZmxhZ3MmM3x8UWUudHJhbnNmb3JtRmxhZ3MmMjYyMTQ0KXtRZS5mbGFncyYzJiZDbygpO3ZhciBHcj1lLmZsYXRNYXAoUWUuZGVjbGFyYXRpb25zLFFlLmZsYWdzJjE/V3Q6WnQpLFM9bS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChHcik7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKFMsUWUpLGUuc2V0VGV4dFJhbmdlKFMsUWUpLGUuc2V0Q29tbWVudFJhbmdlKFMsUWUpLFFlLnRyYW5zZm9ybUZsYWdzJjI2MjE0NCYmKGUuaXNCaW5kaW5nUGF0dGVybihRZS5kZWNsYXJhdGlvbnNbMF0ubmFtZSl8fGUuaXNCaW5kaW5nUGF0dGVybihlLmxhc3QoUWUuZGVjbGFyYXRpb25zKS5uYW1lKSkmJmUuc2V0U291cmNlTWFwUmFuZ2UoUyxldChHcikpLFN9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKX1mdW5jdGlvbiBldChRZSl7Zm9yKHZhciBHcj0tMSxTPS0xLENlPTAscWU9UWU7Q2U8cWUubGVuZ3RoO0NlKyspe3ZhciBicj1xZVtDZV07R3I9R3I9PT0tMT9ici5wb3M6YnIucG9zPT09LTE/R3I6TWF0aC5taW4oR3IsYnIucG9zKSxTPU1hdGgubWF4KFMsYnIuZW5kKX1yZXR1cm4gZS5jcmVhdGVSYW5nZShHcixTKX1mdW5jdGlvbiBHaShRZSl7dmFyIEdyPXNlLmdldE5vZGVDaGVja0ZsYWdzKFFlKSxTPUdyJjI2MjE0NCxDZT1HciY1MjQyODgscWU9KE8mNjQpIT09MHx8UyYmQ2UmJihPJjUxMikhPT0wLGJyPSFxZSYmKE8mNDA5Nik9PT0wJiYoIXNlLmlzRGVjbGFyYXRpb25XaXRoQ29sbGlkaW5nTmFtZShRZSl8fENlJiYhUyYmKE8mNjE0NCk9PT0wKTtyZXR1cm4gYnJ9ZnVuY3Rpb24gV3QoUWUpe3ZhciBHcj1RZS5uYW1lO3JldHVybiBlLmlzQmluZGluZ1BhdHRlcm4oR3IpP1p0KFFlKTohUWUuaW5pdGlhbGl6ZXImJkdpKFFlKT9tLnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oUWUsUWUubmFtZSx2b2lkIDAsdm9pZCAwLG0uY3JlYXRlVm9pZFplcm8oKSk6ZS52aXNpdEVhY2hDaGlsZChRZSxMLHApfWZ1bmN0aW9uIFp0KFFlKXt2YXIgR3I9WCgzMiwwKSxTO3JldHVybiBlLmlzQmluZGluZ1BhdHRlcm4oUWUubmFtZSk/Uz1lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQmluZGluZyhRZSxMLHAsMCx2b2lkIDAsKEdyJjMyKSE9PTApOlM9ZS52aXNpdEVhY2hDaGlsZChRZSxMLHApLCQoR3IsMCwwKSxTfWZ1bmN0aW9uIF9yKFFlKXtoZS5sYWJlbHMuc2V0KGUuaWRUZXh0KFFlLmxhYmVsKSwhMCl9ZnVuY3Rpb24gcGkoUWUpe2hlLmxhYmVscy5zZXQoZS5pZFRleHQoUWUubGFiZWwpLCExKX1mdW5jdGlvbiBhZShRZSl7aGUmJiFoZS5sYWJlbHMmJihoZS5sYWJlbHM9bmV3IGUuTWFwKTt2YXIgR3I9ZS51bndyYXBJbm5lcm1vc3RTdGF0ZW1lbnRPZkxhYmVsKFFlLGhlJiZfcik7cmV0dXJuIGUuaXNJdGVyYXRpb25TdGF0ZW1lbnQoR3IsITEpP1hlKEdyLFFlKTptLnJlc3RvcmVFbmNsb3NpbmdMYWJlbChlLnZpc2l0Tm9kZShHcixMLGUuaXNTdGF0ZW1lbnQsbS5saWZ0VG9CbG9jayksUWUsaGUmJnBpKX1mdW5jdGlvbiBYZShRZSxHcil7c3dpdGNoKFFlLmtpbmQpe2Nhc2UgMjQwOmNhc2UgMjQxOnJldHVybiB0aShRZSxHcik7Y2FzZSAyNDI6cmV0dXJuIFplKFFlLEdyKTtjYXNlIDI0MzpyZXR1cm4genIoUWUsR3IpO2Nhc2UgMjQ0OnJldHVybiBXcihRZSxHcil9fWZ1bmN0aW9uIEpyKFFlLEdyLFMsQ2UscWUpe3ZhciBicj1YKFFlLEdyKSxacj1ncihTLENlLGJyLHFlKTtyZXR1cm4gJChiciwwLDApLFpyfWZ1bmN0aW9uIHRpKFFlLEdyKXtyZXR1cm4gSnIoMCwxMjgwLFFlLEdyKX1mdW5jdGlvbiBaZShRZSxHcil7cmV0dXJuIEpyKDUwNTYsMzMyOCxRZSxHcil9ZnVuY3Rpb24gU3IoUWUpe3JldHVybiBtLnVwZGF0ZUZvclN0YXRlbWVudChRZSxlLnZpc2l0Tm9kZShRZS5pbml0aWFsaXplcixQLGUuaXNGb3JJbml0aWFsaXplciksZS52aXNpdE5vZGUoUWUuY29uZGl0aW9uLEwsZS5pc0V4cHJlc3Npb24pLGUudmlzaXROb2RlKFFlLmluY3JlbWVudG9yLFAsZS5pc0V4cHJlc3Npb24pLGUudmlzaXROb2RlKFFlLnN0YXRlbWVudCxMLGUuaXNTdGF0ZW1lbnQsbS5saWZ0VG9CbG9jaykpfWZ1bmN0aW9uIHpyKFFlLEdyKXtyZXR1cm4gSnIoMzAwOCw1Mzc2LFFlLEdyKX1mdW5jdGlvbiBXcihRZSxHcil7cmV0dXJuIEpyKDMwMDgsNTM3NixRZSxHcixiLmRvd25sZXZlbEl0ZXJhdGlvbj9tcjp2cil9ZnVuY3Rpb24gSmUoUWUsR3IsUyl7dmFyIENlPVtdLHFlPVFlLmluaXRpYWxpemVyO2lmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChxZSkpe1FlLmluaXRpYWxpemVyLmZsYWdzJjMmJkNvKCk7dmFyIGJyPWUuZmlyc3RPclVuZGVmaW5lZChxZS5kZWNsYXJhdGlvbnMpO2lmKGJyJiZlLmlzQmluZGluZ1BhdHRlcm4oYnIubmFtZSkpe3ZhciBacj1lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQmluZGluZyhicixMLHAsMCxHciksU2k9ZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChaciksUWUuaW5pdGlhbGl6ZXIpO2Uuc2V0T3JpZ2luYWxOb2RlKFNpLFFlLmluaXRpYWxpemVyKSxlLnNldFNvdXJjZU1hcFJhbmdlKFNpLGUuY3JlYXRlUmFuZ2UoWnJbMF0ucG9zLGUubGFzdChacikuZW5kKSksQ2UucHVzaChtLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxTaSkpfWVsc2UgQ2UucHVzaChlLnNldFRleHRSYW5nZShtLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFttLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oYnI/YnIubmFtZTptLmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApLHZvaWQgMCx2b2lkIDAsR3IpXSksZS5tb3ZlUmFuZ2VQb3MocWUsLTEpKSxxZSkpLGUubW92ZVJhbmdlRW5kKHFlLC0xKSkpfWVsc2V7dmFyIFBpPW0uY3JlYXRlQXNzaWdubWVudChxZSxHcik7ZS5pc0Rlc3RydWN0dXJpbmdBc3NpZ25tZW50KFBpKT9DZS5wdXNoKG0uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChxcihQaSwhMCkpKTooZS5zZXRUZXh0UmFuZ2VFbmQoUGkscWUuZW5kKSxDZS5wdXNoKGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChlLnZpc2l0Tm9kZShQaSxMLGUuaXNFeHByZXNzaW9uKSksZS5tb3ZlUmFuZ2VFbmQocWUsLTEpKSkpfWlmKFMpcmV0dXJuIHhlKGUuYWRkUmFuZ2UoQ2UsUykpO3ZhciBRaT1lLnZpc2l0Tm9kZShRZS5zdGF0ZW1lbnQsTCxlLmlzU3RhdGVtZW50LG0ubGlmdFRvQmxvY2spO3JldHVybiBlLmlzQmxvY2soUWkpP20udXBkYXRlQmxvY2soUWksZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVOb2RlQXJyYXkoZS5jb25jYXRlbmF0ZShDZSxRaS5zdGF0ZW1lbnRzKSksUWkuc3RhdGVtZW50cykpOihDZS5wdXNoKFFpKSx4ZShDZSkpfWZ1bmN0aW9uIHhlKFFlKXtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MobS5jcmVhdGVCbG9jayhtLmNyZWF0ZU5vZGVBcnJheShRZSksITApLDQzMil9ZnVuY3Rpb24gdnIoUWUsR3IsUyl7dmFyIENlPWUudmlzaXROb2RlKFFlLmV4cHJlc3Npb24sTCxlLmlzRXhwcmVzc2lvbikscWU9bS5jcmVhdGVMb29wVmFyaWFibGUoKSxicj1lLmlzSWRlbnRpZmllcihDZSk/bS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShDZSk6bS5jcmVhdGVUZW1wVmFyaWFibGUodm9pZCAwKTtlLnNldEVtaXRGbGFncyhDZSw0OHxlLmdldEVtaXRGbGFncyhDZSkpO3ZhciBacj1lLnNldFRleHRSYW5nZShtLmNyZWF0ZUZvclN0YXRlbWVudChlLnNldEVtaXRGbGFncyhlLnNldFRleHRSYW5nZShtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLnNldFRleHRSYW5nZShtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24ocWUsdm9pZCAwLHZvaWQgMCxtLmNyZWF0ZU51bWVyaWNMaXRlcmFsKDApKSxlLm1vdmVSYW5nZVBvcyhRZS5leHByZXNzaW9uLC0xKSksZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGJyLHZvaWQgMCx2b2lkIDAsQ2UpLFFlLmV4cHJlc3Npb24pXSksUWUuZXhwcmVzc2lvbiksMjA5NzE1MiksZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVMZXNzVGhhbihxZSxtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihicixcImxlbmd0aFwiKSksUWUuZXhwcmVzc2lvbiksZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVQb3N0Zml4SW5jcmVtZW50KHFlKSxRZS5leHByZXNzaW9uKSxKZShRZSxtLmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGJyLHFlKSxTKSksUWUpO3JldHVybiBlLnNldEVtaXRGbGFncyhaciwyNTYpLGUuc2V0VGV4dFJhbmdlKFpyLFFlKSxtLnJlc3RvcmVFbmNsb3NpbmdMYWJlbChacixHcixoZSYmcGkpfWZ1bmN0aW9uIG1yKFFlLEdyLFMsQ2Upe3ZhciBxZT1lLnZpc2l0Tm9kZShRZS5leHByZXNzaW9uLEwsZS5pc0V4cHJlc3Npb24pLGJyPWUuaXNJZGVudGlmaWVyKHFlKT9tLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHFlKTptLmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApLFpyPWUuaXNJZGVudGlmaWVyKHFlKT9tLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKGJyKTptLmNyZWF0ZVRlbXBWYXJpYWJsZSh2b2lkIDApLFNpPW0uY3JlYXRlVW5pcXVlTmFtZShcImVcIiksUGk9bS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShTaSksUWk9bS5jcmVhdGVUZW1wVmFyaWFibGUodm9pZCAwKSxDdD1lLnNldFRleHRSYW5nZShHKCkuY3JlYXRlVmFsdWVzSGVscGVyKHFlKSxRZS5leHByZXNzaW9uKSxzYT1tLmNyZWF0ZUNhbGxFeHByZXNzaW9uKG0uY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGJyLFwibmV4dFwiKSx2b2lkIDAsW10pO0soU2kpLEsoUWkpO3ZhciBlbj1DZSYxMDI0P20uaW5saW5lRXhwcmVzc2lvbnMoW20uY3JlYXRlQXNzaWdubWVudChTaSxtLmNyZWF0ZVZvaWRaZXJvKCkpLEN0XSk6Q3QsV2E9ZS5zZXRFbWl0RmxhZ3MoZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVGb3JTdGF0ZW1lbnQoZS5zZXRFbWl0RmxhZ3MoZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGJyLHZvaWQgMCx2b2lkIDAsZW4pLFFlLmV4cHJlc3Npb24pLG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihacix2b2lkIDAsdm9pZCAwLHNhKV0pLFFlLmV4cHJlc3Npb24pLDIwOTcxNTIpLG0uY3JlYXRlTG9naWNhbE5vdChtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihacixcImRvbmVcIikpLG0uY3JlYXRlQXNzaWdubWVudChacixzYSksSmUoUWUsbS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oWnIsXCJ2YWx1ZVwiKSxTKSksUWUpLDI1Nik7cmV0dXJuIG0uY3JlYXRlVHJ5U3RhdGVtZW50KG0uY3JlYXRlQmxvY2soW20ucmVzdG9yZUVuY2xvc2luZ0xhYmVsKFdhLEdyLGhlJiZwaSldKSxtLmNyZWF0ZUNhdGNoQ2xhdXNlKG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihQaSksZS5zZXRFbWl0RmxhZ3MobS5jcmVhdGVCbG9jayhbbS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uY3JlYXRlQXNzaWdubWVudChTaSxtLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKFttLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChcImVycm9yXCIsUGkpXSkpKV0pLDEpKSxtLmNyZWF0ZUJsb2NrKFttLmNyZWF0ZVRyeVN0YXRlbWVudChtLmNyZWF0ZUJsb2NrKFtlLnNldEVtaXRGbGFncyhtLmNyZWF0ZUlmU3RhdGVtZW50KG0uY3JlYXRlTG9naWNhbEFuZChtLmNyZWF0ZUxvZ2ljYWxBbmQoWnIsbS5jcmVhdGVMb2dpY2FsTm90KG0uY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFpyLFwiZG9uZVwiKSkpLG0uY3JlYXRlQXNzaWdubWVudChRaSxtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihicixcInJldHVyblwiKSkpLG0uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChtLmNyZWF0ZUZ1bmN0aW9uQ2FsbENhbGwoUWksYnIsW10pKSksMSldKSx2b2lkIDAsZS5zZXRFbWl0RmxhZ3MobS5jcmVhdGVCbG9jayhbZS5zZXRFbWl0RmxhZ3MobS5jcmVhdGVJZlN0YXRlbWVudChTaSxtLmNyZWF0ZVRocm93U3RhdGVtZW50KG0uY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFNpLFwiZXJyb3JcIikpKSwxKV0pLDEpKV0pKX1mdW5jdGlvbiBBcihRZSl7Zm9yKHZhciBHcj1RZS5wcm9wZXJ0aWVzLFM9LTEsQ2U9ITEscWU9MDtxZTxHci5sZW5ndGg7cWUrKyl7dmFyIGJyPUdyW3FlXTtpZihici50cmFuc2Zvcm1GbGFncyY1MjQyODgmJk8mNHx8KENlPWUuRGVidWcuY2hlY2tEZWZpbmVkKGJyLm5hbWUpLmtpbmQ9PT0xNjIpKXtTPXFlO2JyZWFrfX1pZihTPDApcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKTt2YXIgWnI9bS5jcmVhdGVUZW1wVmFyaWFibGUoSyksU2k9W10sUGk9bS5jcmVhdGVBc3NpZ25tZW50KFpyLGUuc2V0RW1pdEZsYWdzKG0uY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oZS52aXNpdE5vZGVzKEdyLEwsZS5pc09iamVjdExpdGVyYWxFbGVtZW50TGlrZSwwLFMpLFFlLm11bHRpTGluZSksQ2U/NjU1MzY6MCkpO3JldHVybiBRZS5tdWx0aUxpbmUmJmUuc3RhcnRPbk5ld0xpbmUoUGkpLFNpLnB1c2goUGkpLEJ0KFNpLFFlLFpyLFMpLFNpLnB1c2goUWUubXVsdGlMaW5lP2Uuc3RhcnRPbk5ld0xpbmUoZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UobS5jbG9uZU5vZGUoWnIpLFpyKSxaci5wYXJlbnQpKTpaciksbS5pbmxpbmVFeHByZXNzaW9ucyhTaSl9ZnVuY3Rpb24gT2UoUWUpe3JldHVybihzZS5nZXROb2RlQ2hlY2tGbGFncyhRZSkmMTMxMDcyKSE9PTB9ZnVuY3Rpb24gbnIoUWUpe3JldHVybiBlLmlzRm9yU3RhdGVtZW50KFFlKSYmISFRZS5pbml0aWFsaXplciYmT2UoUWUuaW5pdGlhbGl6ZXIpfWZ1bmN0aW9uIE1yKFFlKXtyZXR1cm4gZS5pc0ZvclN0YXRlbWVudChRZSkmJiEhUWUuY29uZGl0aW9uJiZPZShRZS5jb25kaXRpb24pfWZ1bmN0aW9uIFBlKFFlKXtyZXR1cm4gZS5pc0ZvclN0YXRlbWVudChRZSkmJiEhUWUuaW5jcmVtZW50b3ImJk9lKFFlLmluY3JlbWVudG9yKX1mdW5jdGlvbiBVZShRZSl7cmV0dXJuIGZyKFFlKXx8bnIoUWUpfWZ1bmN0aW9uIGZyKFFlKXtyZXR1cm4oc2UuZ2V0Tm9kZUNoZWNrRmxhZ3MoUWUpJjY1NTM2KSE9PTB9ZnVuY3Rpb24gRGUoUWUsR3Ipe1FlLmhvaXN0ZWRMb2NhbFZhcmlhYmxlc3x8KFFlLmhvaXN0ZWRMb2NhbFZhcmlhYmxlcz1bXSksUyhHci5uYW1lKTtmdW5jdGlvbiBTKENlKXtpZihDZS5raW5kPT09NzkpUWUuaG9pc3RlZExvY2FsVmFyaWFibGVzLnB1c2goQ2UpO2Vsc2UgZm9yKHZhciBxZT0wLGJyPUNlLmVsZW1lbnRzO3FlPGJyLmxlbmd0aDtxZSsrKXt2YXIgWnI9YnJbcWVdO2UuaXNPbWl0dGVkRXhwcmVzc2lvbihacil8fFMoWnIubmFtZSl9fX1mdW5jdGlvbiBncihRZSxHcixTLENlKXtpZighVWUoUWUpKXt2YXIgcWU9dm9pZCAwO2hlJiYocWU9aGUuYWxsb3dlZE5vbkxhYmVsZWRKdW1wcyxoZS5hbGxvd2VkTm9uTGFiZWxlZEp1bXBzPTYpO3ZhciBicj1DZT9DZShRZSxHcix2b2lkIDAsUyk6bS5yZXN0b3JlRW5jbG9zaW5nTGFiZWwoZS5pc0ZvclN0YXRlbWVudChRZSk/U3IoUWUpOmUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKSxHcixoZSYmcGkpO3JldHVybiBoZSYmKGhlLmFsbG93ZWROb25MYWJlbGVkSnVtcHM9cWUpLGJyfXZhciBacj1jdChRZSksU2k9W10sUGk9aGU7aGU9WnI7dmFyIFFpPW5yKFFlKT9NdChRZSxacik6dm9pZCAwLEN0PWZyKFFlKT94dChRZSxacixQaSk6dm9pZCAwO2hlPVBpLFFpJiZTaS5wdXNoKFFpLmZ1bmN0aW9uRGVjbGFyYXRpb24pLEN0JiZTaS5wdXNoKEN0LmZ1bmN0aW9uRGVjbGFyYXRpb24pLExpKFNpLFpyLFBpKSxRaSYmU2kucHVzaChSdChRaS5mdW5jdGlvbk5hbWUsUWkuY29udGFpbnNZaWVsZCkpO3ZhciBzYTtpZihDdClpZihDZSlzYT1DZShRZSxHcixDdC5wYXJ0LFMpO2Vsc2V7dmFyIGVuPVZyKFFlLFFpLG0uY3JlYXRlQmxvY2soQ3QucGFydCwhMCkpO3NhPW0ucmVzdG9yZUVuY2xvc2luZ0xhYmVsKGVuLEdyLGhlJiZwaSl9ZWxzZXt2YXIgV2E9VnIoUWUsUWksZS52aXNpdE5vZGUoUWUuc3RhdGVtZW50LEwsZS5pc1N0YXRlbWVudCxtLmxpZnRUb0Jsb2NrKSk7c2E9bS5yZXN0b3JlRW5jbG9zaW5nTGFiZWwoV2EsR3IsaGUmJnBpKX1yZXR1cm4gU2kucHVzaChzYSksU2l9ZnVuY3Rpb24gVnIoUWUsR3IsUyl7c3dpdGNoKFFlLmtpbmQpe2Nhc2UgMjQyOnJldHVybiBUcihRZSxHcixTKTtjYXNlIDI0MzpyZXR1cm4gVWkoUWUsUyk7Y2FzZSAyNDQ6cmV0dXJuIHZpKFFlLFMpO2Nhc2UgMjQwOnJldHVybiBZaShRZSxTKTtjYXNlIDI0MTpyZXR1cm4gV2koUWUsUyk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChRZSxcIkl0ZXJhdGlvblN0YXRlbWVudCBleHBlY3RlZFwiKX19ZnVuY3Rpb24gVHIoUWUsR3IsUyl7dmFyIENlPVFlLmNvbmRpdGlvbiYmT2UoUWUuY29uZGl0aW9uKSxxZT1DZXx8UWUuaW5jcmVtZW50b3ImJk9lKFFlLmluY3JlbWVudG9yKTtyZXR1cm4gbS51cGRhdGVGb3JTdGF0ZW1lbnQoUWUsZS52aXNpdE5vZGUoR3I/R3IucGFydDpRZS5pbml0aWFsaXplcixQLGUuaXNGb3JJbml0aWFsaXplciksZS52aXNpdE5vZGUoQ2U/dm9pZCAwOlFlLmNvbmRpdGlvbixMLGUuaXNFeHByZXNzaW9uKSxlLnZpc2l0Tm9kZShxZT92b2lkIDA6UWUuaW5jcmVtZW50b3IsUCxlLmlzRXhwcmVzc2lvbiksUyl9ZnVuY3Rpb24gdmkoUWUsR3Ipe3JldHVybiBtLnVwZGF0ZUZvck9mU3RhdGVtZW50KFFlLHZvaWQgMCxlLnZpc2l0Tm9kZShRZS5pbml0aWFsaXplcixMLGUuaXNGb3JJbml0aWFsaXplciksZS52aXNpdE5vZGUoUWUuZXhwcmVzc2lvbixMLGUuaXNFeHByZXNzaW9uKSxHcil9ZnVuY3Rpb24gVWkoUWUsR3Ipe3JldHVybiBtLnVwZGF0ZUZvckluU3RhdGVtZW50KFFlLGUudmlzaXROb2RlKFFlLmluaXRpYWxpemVyLEwsZS5pc0ZvckluaXRpYWxpemVyKSxlLnZpc2l0Tm9kZShRZS5leHByZXNzaW9uLEwsZS5pc0V4cHJlc3Npb24pLEdyKX1mdW5jdGlvbiBZaShRZSxHcil7cmV0dXJuIG0udXBkYXRlRG9TdGF0ZW1lbnQoUWUsR3IsZS52aXNpdE5vZGUoUWUuZXhwcmVzc2lvbixMLGUuaXNFeHByZXNzaW9uKSl9ZnVuY3Rpb24gV2koUWUsR3Ipe3JldHVybiBtLnVwZGF0ZVdoaWxlU3RhdGVtZW50KFFlLGUudmlzaXROb2RlKFFlLmV4cHJlc3Npb24sTCxlLmlzRXhwcmVzc2lvbiksR3IpfWZ1bmN0aW9uIGN0KFFlKXt2YXIgR3I7c3dpdGNoKFFlLmtpbmQpe2Nhc2UgMjQyOmNhc2UgMjQzOmNhc2UgMjQ0OnZhciBTPVFlLmluaXRpYWxpemVyO1MmJlMua2luZD09PTI1NSYmKEdyPVMpO2JyZWFrfXZhciBDZT1bXSxxZT1bXTtpZihHciYmZS5nZXRDb21iaW5lZE5vZGVGbGFncyhHcikmMylmb3IodmFyIGJyPW5yKFFlKXx8TXIoUWUpfHxQZShRZSksWnI9MCxTaT1Hci5kZWNsYXJhdGlvbnM7WnI8U2kubGVuZ3RoO1pyKyspe3ZhciBQaT1TaVtacl07dWkoUWUsUGksQ2UscWUsYnIpfXZhciBRaT17bG9vcFBhcmFtZXRlcnM6Q2UsbG9vcE91dFBhcmFtZXRlcnM6cWV9O3JldHVybiBoZSYmKGhlLmFyZ3VtZW50c05hbWUmJihRaS5hcmd1bWVudHNOYW1lPWhlLmFyZ3VtZW50c05hbWUpLGhlLnRoaXNOYW1lJiYoUWkudGhpc05hbWU9aGUudGhpc05hbWUpLGhlLmhvaXN0ZWRMb2NhbFZhcmlhYmxlcyYmKFFpLmhvaXN0ZWRMb2NhbFZhcmlhYmxlcz1oZS5ob2lzdGVkTG9jYWxWYXJpYWJsZXMpKSxRaX1mdW5jdGlvbiBMaShRZSxHcixTKXt2YXIgQ2U7aWYoR3IuYXJndW1lbnRzTmFtZSYmKFM/Uy5hcmd1bWVudHNOYW1lPUdyLmFyZ3VtZW50c05hbWU6KENlfHwoQ2U9W10pKS5wdXNoKG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihHci5hcmd1bWVudHNOYW1lLHZvaWQgMCx2b2lkIDAsbS5jcmVhdGVJZGVudGlmaWVyKFwiYXJndW1lbnRzXCIpKSkpLEdyLnRoaXNOYW1lJiYoUz9TLnRoaXNOYW1lPUdyLnRoaXNOYW1lOihDZXx8KENlPVtdKSkucHVzaChtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oR3IudGhpc05hbWUsdm9pZCAwLHZvaWQgMCxtLmNyZWF0ZUlkZW50aWZpZXIoXCJ0aGlzXCIpKSkpLEdyLmhvaXN0ZWRMb2NhbFZhcmlhYmxlcylpZihTKVMuaG9pc3RlZExvY2FsVmFyaWFibGVzPUdyLmhvaXN0ZWRMb2NhbFZhcmlhYmxlcztlbHNle0NlfHwoQ2U9W10pO2Zvcih2YXIgcWU9MCxicj1Hci5ob2lzdGVkTG9jYWxWYXJpYWJsZXM7cWU8YnIubGVuZ3RoO3FlKyspe3ZhciBacj1icltxZV07Q2UucHVzaChtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oWnIpKX19aWYoR3IubG9vcE91dFBhcmFtZXRlcnMubGVuZ3RoKXtDZXx8KENlPVtdKTtmb3IodmFyIFNpPTAsUGk9R3IubG9vcE91dFBhcmFtZXRlcnM7U2k8UGkubGVuZ3RoO1NpKyspe3ZhciBRaT1QaVtTaV07Q2UucHVzaChtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oUWkub3V0UGFyYW1OYW1lKSl9fUdyLmNvbmRpdGlvblZhcmlhYmxlJiYoQ2V8fChDZT1bXSksQ2UucHVzaChtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oR3IuY29uZGl0aW9uVmFyaWFibGUsdm9pZCAwLHZvaWQgMCxtLmNyZWF0ZUZhbHNlKCkpKSksQ2UmJlFlLnB1c2gobS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsbS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChDZSkpKX1mdW5jdGlvbiBudChRZSl7cmV0dXJuIG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihRZS5vcmlnaW5hbE5hbWUsdm9pZCAwLHZvaWQgMCxRZS5vdXRQYXJhbU5hbWUpfWZ1bmN0aW9uIE10KFFlLEdyKXt2YXIgUz1tLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfbG9vcF9pbml0XCIpLENlPShRZS5pbml0aWFsaXplci50cmFuc2Zvcm1GbGFncyY1MjQyODgpIT09MCxxZT0wO0dyLmNvbnRhaW5zTGV4aWNhbFRoaXMmJihxZXw9OCksQ2UmJk8mNCYmKHFlfD0yNjIxNDQpO3ZhciBicj1bXTtici5wdXNoKG0uY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLFFlLmluaXRpYWxpemVyKSksRHQoR3IubG9vcE91dFBhcmFtZXRlcnMsMiwxLGJyKTt2YXIgWnI9bS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5zZXRFbWl0RmxhZ3MobS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbbS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKFMsdm9pZCAwLHZvaWQgMCxlLnNldEVtaXRGbGFncyhtLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih2b2lkIDAsQ2U/bS5jcmVhdGVUb2tlbig0MSk6dm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCxlLnZpc2l0Tm9kZShtLmNyZWF0ZUJsb2NrKGJyLCEwKSxMLGUuaXNCbG9jaykpLHFlKSldKSwyMDk3MTUyKSksU2k9bS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChlLm1hcChHci5sb29wT3V0UGFyYW1ldGVycyxudCkpO3JldHVybntmdW5jdGlvbk5hbWU6Uyxjb250YWluc1lpZWxkOkNlLGZ1bmN0aW9uRGVjbGFyYXRpb246WnIscGFydDpTaX19ZnVuY3Rpb24geHQoUWUsR3IsUyl7dmFyIENlPW0uY3JlYXRlVW5pcXVlTmFtZShcIl9sb29wXCIpO29lKCk7dmFyIHFlPWUudmlzaXROb2RlKFFlLnN0YXRlbWVudCxMLGUuaXNTdGF0ZW1lbnQsbS5saWZ0VG9CbG9jayksYnI9VCgpLFpyPVtdOyhNcihRZSl8fFBlKFFlKSkmJihHci5jb25kaXRpb25WYXJpYWJsZT1tLmNyZWF0ZVVuaXF1ZU5hbWUoXCJpbmNcIiksUWUuaW5jcmVtZW50b3I/WnIucHVzaChtLmNyZWF0ZUlmU3RhdGVtZW50KEdyLmNvbmRpdGlvblZhcmlhYmxlLG0uY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChlLnZpc2l0Tm9kZShRZS5pbmNyZW1lbnRvcixMLGUuaXNFeHByZXNzaW9uKSksbS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uY3JlYXRlQXNzaWdubWVudChHci5jb25kaXRpb25WYXJpYWJsZSxtLmNyZWF0ZVRydWUoKSkpKSk6WnIucHVzaChtLmNyZWF0ZUlmU3RhdGVtZW50KG0uY3JlYXRlTG9naWNhbE5vdChHci5jb25kaXRpb25WYXJpYWJsZSksbS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uY3JlYXRlQXNzaWdubWVudChHci5jb25kaXRpb25WYXJpYWJsZSxtLmNyZWF0ZVRydWUoKSkpKSksTXIoUWUpJiZaci5wdXNoKG0uY3JlYXRlSWZTdGF0ZW1lbnQobS5jcmVhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24oNTMsZS52aXNpdE5vZGUoUWUuY29uZGl0aW9uLEwsZS5pc0V4cHJlc3Npb24pKSxlLnZpc2l0Tm9kZShtLmNyZWF0ZUJyZWFrU3RhdGVtZW50KCksTCxlLmlzU3RhdGVtZW50KSkpKSxlLmlzQmxvY2socWUpP2UuYWRkUmFuZ2UoWnIscWUuc3RhdGVtZW50cyk6WnIucHVzaChxZSksRHQoR3IubG9vcE91dFBhcmFtZXRlcnMsMSwxLFpyKSxlLmluc2VydFN0YXRlbWVudHNBZnRlclN0YW5kYXJkUHJvbG9ndWUoWnIsYnIpO3ZhciBTaT1tLmNyZWF0ZUJsb2NrKFpyLCEwKTtlLmlzQmxvY2socWUpJiZlLnNldE9yaWdpbmFsTm9kZShTaSxxZSk7dmFyIFBpPShRZS5zdGF0ZW1lbnQudHJhbnNmb3JtRmxhZ3MmNTI0Mjg4KSE9PTAsUWk9NTI0Mjg4O0dyLmNvbnRhaW5zTGV4aWNhbFRoaXMmJihRaXw9OCksUGkmJihPJjQpIT09MCYmKFFpfD0yNjIxNDQpO3ZhciBDdD1tLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxlLnNldEVtaXRGbGFncyhtLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFttLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oQ2Usdm9pZCAwLHZvaWQgMCxlLnNldEVtaXRGbGFncyhtLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih2b2lkIDAsUGk/bS5jcmVhdGVUb2tlbig0MSk6dm9pZCAwLHZvaWQgMCx2b2lkIDAsR3IubG9vcFBhcmFtZXRlcnMsdm9pZCAwLFNpKSxRaSkpXSksMjA5NzE1MikpLHNhPUlpKENlLEdyLFMsUGkpO3JldHVybntmdW5jdGlvbk5hbWU6Q2UsY29udGFpbnNZaWVsZDpQaSxmdW5jdGlvbkRlY2xhcmF0aW9uOkN0LHBhcnQ6c2F9fWZ1bmN0aW9uIHV0KFFlLEdyKXt2YXIgUz1Hcj09PTA/UWUub3V0UGFyYW1OYW1lOlFlLm9yaWdpbmFsTmFtZSxDZT1Hcj09PTA/UWUub3JpZ2luYWxOYW1lOlFlLm91dFBhcmFtTmFtZTtyZXR1cm4gbS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uKENlLDYzLFMpfWZ1bmN0aW9uIER0KFFlLEdyLFMsQ2Upe2Zvcih2YXIgcWU9MCxicj1RZTtxZTxici5sZW5ndGg7cWUrKyl7dmFyIFpyPWJyW3FlXTtaci5mbGFncyZHciYmQ2UucHVzaChtLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQodXQoWnIsUykpKX19ZnVuY3Rpb24gUnQoUWUsR3Ipe3ZhciBTPW0uY3JlYXRlQ2FsbEV4cHJlc3Npb24oUWUsdm9pZCAwLFtdKSxDZT1Hcj9tLmNyZWF0ZVlpZWxkRXhwcmVzc2lvbihtLmNyZWF0ZVRva2VuKDQxKSxlLnNldEVtaXRGbGFncyhTLDgzODg2MDgpKTpTO3JldHVybiBtLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoQ2UpfWZ1bmN0aW9uIElpKFFlLEdyLFMsQ2Upe3ZhciBxZT1bXSxicj0hKEdyLm5vbkxvY2FsSnVtcHMmLTUpJiYhR3IubGFiZWxlZE5vbkxvY2FsQnJlYWtzJiYhR3IubGFiZWxlZE5vbkxvY2FsQ29udGludWVzLFpyPW0uY3JlYXRlQ2FsbEV4cHJlc3Npb24oUWUsdm9pZCAwLGUubWFwKEdyLmxvb3BQYXJhbWV0ZXJzLGZ1bmN0aW9uKGVuKXtyZXR1cm4gZW4ubmFtZX0pKSxTaT1DZT9tLmNyZWF0ZVlpZWxkRXhwcmVzc2lvbihtLmNyZWF0ZVRva2VuKDQxKSxlLnNldEVtaXRGbGFncyhaciw4Mzg4NjA4KSk6WnI7aWYoYnIpcWUucHVzaChtLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoU2kpKSxEdChHci5sb29wT3V0UGFyYW1ldGVycywxLDAscWUpO2Vsc2V7dmFyIFBpPW0uY3JlYXRlVW5pcXVlTmFtZShcInN0YXRlXCIpLFFpPW0uY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLG0uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW20uY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihQaSx2b2lkIDAsdm9pZCAwLFNpKV0pKTtpZihxZS5wdXNoKFFpKSxEdChHci5sb29wT3V0UGFyYW1ldGVycywxLDAscWUpLEdyLm5vbkxvY2FsSnVtcHMmOCl7dmFyIEN0PXZvaWQgMDtTPyhTLm5vbkxvY2FsSnVtcHN8PTgsQ3Q9bS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoUGkpKTpDdD1tLmNyZWF0ZVJldHVyblN0YXRlbWVudChtLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihQaSxcInZhbHVlXCIpKSxxZS5wdXNoKG0uY3JlYXRlSWZTdGF0ZW1lbnQobS5jcmVhdGVUeXBlQ2hlY2soUGksXCJvYmplY3RcIiksQ3QpKX1pZihHci5ub25Mb2NhbEp1bXBzJjImJnFlLnB1c2gobS5jcmVhdGVJZlN0YXRlbWVudChtLmNyZWF0ZVN0cmljdEVxdWFsaXR5KFBpLG0uY3JlYXRlU3RyaW5nTGl0ZXJhbChcImJyZWFrXCIpKSxtLmNyZWF0ZUJyZWFrU3RhdGVtZW50KCkpKSxHci5sYWJlbGVkTm9uTG9jYWxCcmVha3N8fEdyLmxhYmVsZWROb25Mb2NhbENvbnRpbnVlcyl7dmFyIHNhPVtdO0ZpKEdyLmxhYmVsZWROb25Mb2NhbEJyZWFrcywhMCxQaSxTLHNhKSxGaShHci5sYWJlbGVkTm9uTG9jYWxDb250aW51ZXMsITEsUGksUyxzYSkscWUucHVzaChtLmNyZWF0ZVN3aXRjaFN0YXRlbWVudChQaSxtLmNyZWF0ZUNhc2VCbG9jayhzYSkpKX19cmV0dXJuIHFlfWZ1bmN0aW9uIEtpKFFlLEdyLFMsQ2Upe0dyPyhRZS5sYWJlbGVkTm9uTG9jYWxCcmVha3N8fChRZS5sYWJlbGVkTm9uTG9jYWxCcmVha3M9bmV3IGUuTWFwKSxRZS5sYWJlbGVkTm9uTG9jYWxCcmVha3Muc2V0KFMsQ2UpKTooUWUubGFiZWxlZE5vbkxvY2FsQ29udGludWVzfHwoUWUubGFiZWxlZE5vbkxvY2FsQ29udGludWVzPW5ldyBlLk1hcCksUWUubGFiZWxlZE5vbkxvY2FsQ29udGludWVzLnNldChTLENlKSl9ZnVuY3Rpb24gRmkoUWUsR3IsUyxDZSxxZSl7IVFlfHxRZS5mb3JFYWNoKGZ1bmN0aW9uKGJyLFpyKXt2YXIgU2k9W107aWYoIUNlfHxDZS5sYWJlbHMmJkNlLmxhYmVscy5nZXQoWnIpKXt2YXIgUGk9bS5jcmVhdGVJZGVudGlmaWVyKFpyKTtTaS5wdXNoKEdyP20uY3JlYXRlQnJlYWtTdGF0ZW1lbnQoUGkpOm0uY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoUGkpKX1lbHNlIEtpKENlLEdyLFpyLGJyKSxTaS5wdXNoKG0uY3JlYXRlUmV0dXJuU3RhdGVtZW50KFMpKTtxZS5wdXNoKG0uY3JlYXRlQ2FzZUNsYXVzZShtLmNyZWF0ZVN0cmluZ0xpdGVyYWwoYnIpLFNpKSl9KX1mdW5jdGlvbiB1aShRZSxHcixTLENlLHFlKXt2YXIgYnI9R3IubmFtZTtpZihlLmlzQmluZGluZ1BhdHRlcm4oYnIpKWZvcih2YXIgWnI9MCxTaT1ici5lbGVtZW50cztacjxTaS5sZW5ndGg7WnIrKyl7dmFyIFBpPVNpW1pyXTtlLmlzT21pdHRlZEV4cHJlc3Npb24oUGkpfHx1aShRZSxQaSxTLENlLHFlKX1lbHNle1MucHVzaChtLmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGJyKSk7dmFyIFFpPXNlLmdldE5vZGVDaGVja0ZsYWdzKEdyKTtpZihRaSY0MTk0MzA0fHxxZSl7dmFyIEN0PW0uY3JlYXRlVW5pcXVlTmFtZShcIm91dF9cIitlLmlkVGV4dChicikpLHNhPTA7UWkmNDE5NDMwNCYmKHNhfD0xKSxlLmlzRm9yU3RhdGVtZW50KFFlKSYmKFFlLmluaXRpYWxpemVyJiZzZS5pc0JpbmRpbmdDYXB0dXJlZEJ5Tm9kZShRZS5pbml0aWFsaXplcixHcikmJihzYXw9MiksKFFlLmNvbmRpdGlvbiYmc2UuaXNCaW5kaW5nQ2FwdHVyZWRCeU5vZGUoUWUuY29uZGl0aW9uLEdyKXx8UWUuaW5jcmVtZW50b3ImJnNlLmlzQmluZGluZ0NhcHR1cmVkQnlOb2RlKFFlLmluY3JlbWVudG9yLEdyKSkmJihzYXw9MSkpLENlLnB1c2goe2ZsYWdzOnNhLG9yaWdpbmFsTmFtZTpicixvdXRQYXJhbU5hbWU6Q3R9KX19fWZ1bmN0aW9uIEJ0KFFlLEdyLFMsQ2Upe2Zvcih2YXIgcWU9R3IucHJvcGVydGllcyxicj1xZS5sZW5ndGgsWnI9Q2U7WnI8YnI7WnIrKyl7dmFyIFNpPXFlW1pyXTtzd2l0Y2goU2kua2luZCl7Y2FzZSAxNzI6Y2FzZSAxNzM6dmFyIFBpPWUuZ2V0QWxsQWNjZXNzb3JEZWNsYXJhdGlvbnMoR3IucHJvcGVydGllcyxTaSk7U2k9PT1QaS5maXJzdEFjY2Vzc29yJiZRZS5wdXNoKHVyKFMsUGksR3IsISFHci5tdWx0aUxpbmUpKTticmVhaztjYXNlIDE2OTpRZS5wdXNoKEFpKFNpLFMsR3IsR3IubXVsdGlMaW5lKSk7YnJlYWs7Y2FzZSAyOTY6UWUucHVzaCh3dChTaSxTLEdyLm11bHRpTGluZSkpO2JyZWFrO2Nhc2UgMjk3OlFlLnB1c2gobmEoU2ksUyxHci5tdWx0aUxpbmUpKTticmVhaztkZWZhdWx0OmUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoR3IpO2JyZWFrfX19ZnVuY3Rpb24gd3QoUWUsR3IsUyl7dmFyIENlPW0uY3JlYXRlQXNzaWdubWVudChlLmNyZWF0ZU1lbWJlckFjY2Vzc0ZvclByb3BlcnR5TmFtZShtLEdyLGUudmlzaXROb2RlKFFlLm5hbWUsTCxlLmlzUHJvcGVydHlOYW1lKSksZS52aXNpdE5vZGUoUWUuaW5pdGlhbGl6ZXIsTCxlLmlzRXhwcmVzc2lvbikpO3JldHVybiBlLnNldFRleHRSYW5nZShDZSxRZSksUyYmZS5zdGFydE9uTmV3TGluZShDZSksQ2V9ZnVuY3Rpb24gbmEoUWUsR3IsUyl7dmFyIENlPW0uY3JlYXRlQXNzaWdubWVudChlLmNyZWF0ZU1lbWJlckFjY2Vzc0ZvclByb3BlcnR5TmFtZShtLEdyLGUudmlzaXROb2RlKFFlLm5hbWUsTCxlLmlzUHJvcGVydHlOYW1lKSksbS5jbG9uZU5vZGUoUWUubmFtZSkpO3JldHVybiBlLnNldFRleHRSYW5nZShDZSxRZSksUyYmZS5zdGFydE9uTmV3TGluZShDZSksQ2V9ZnVuY3Rpb24gQWkoUWUsR3IsUyxDZSl7dmFyIHFlPW0uY3JlYXRlQXNzaWdubWVudChlLmNyZWF0ZU1lbWJlckFjY2Vzc0ZvclByb3BlcnR5TmFtZShtLEdyLGUudmlzaXROb2RlKFFlLm5hbWUsTCxlLmlzUHJvcGVydHlOYW1lKSksVXIoUWUsUWUsdm9pZCAwLFMpKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UocWUsUWUpLENlJiZlLnN0YXJ0T25OZXdMaW5lKHFlKSxxZX1mdW5jdGlvbiBPaShRZSl7dmFyIEdyPVgoNzEwNCwwKSxTO2lmKGUuRGVidWcuYXNzZXJ0KCEhUWUudmFyaWFibGVEZWNsYXJhdGlvbixcIkNhdGNoIGNsYXVzZSB2YXJpYWJsZSBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgd2hlbiBkb3dubGV2ZWxpbmcgRVMyMDE1LlwiKSxlLmlzQmluZGluZ1BhdHRlcm4oUWUudmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKSl7dmFyIENlPW0uY3JlYXRlVGVtcFZhcmlhYmxlKHZvaWQgMCkscWU9bS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKENlKTtlLnNldFRleHRSYW5nZShxZSxRZS52YXJpYWJsZURlY2xhcmF0aW9uKTt2YXIgYnI9ZS5mbGF0dGVuRGVzdHJ1Y3R1cmluZ0JpbmRpbmcoUWUudmFyaWFibGVEZWNsYXJhdGlvbixMLHAsMCxDZSksWnI9bS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChicik7ZS5zZXRUZXh0UmFuZ2UoWnIsUWUudmFyaWFibGVEZWNsYXJhdGlvbik7dmFyIFNpPW0uY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLFpyKTtTPW0udXBkYXRlQ2F0Y2hDbGF1c2UoUWUscWUsamkoUWUuYmxvY2ssU2kpKX1lbHNlIFM9ZS52aXNpdEVhY2hDaGlsZChRZSxMLHApO3JldHVybiAkKEdyLDAsMCksU31mdW5jdGlvbiBqaShRZSxHcil7dmFyIFM9ZS52aXNpdE5vZGVzKFFlLnN0YXRlbWVudHMsTCxlLmlzU3RhdGVtZW50KTtyZXR1cm4gbS51cGRhdGVCbG9jayhRZSxWZShbR3JdLFMsITApKX1mdW5jdGlvbiBWaShRZSl7ZS5EZWJ1Zy5hc3NlcnQoIWUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShRZS5uYW1lKSk7dmFyIEdyPVVyKFFlLGUubW92ZVJhbmdlUG9zKFFlLC0xKSx2b2lkIDAsdm9pZCAwKTtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoR3IsNTEyfGUuZ2V0RW1pdEZsYWdzKEdyKSksZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoUWUubmFtZSxHciksUWUpfWZ1bmN0aW9uIGF0KFFlKXtlLkRlYnVnLmFzc2VydCghZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKFFlLm5hbWUpKTt2YXIgR3I9aGU7aGU9dm9pZCAwO3ZhciBTPVgoMzI2NzAsNjUpLENlLHFlPWUudmlzaXRQYXJhbWV0ZXJMaXN0KFFlLnBhcmFtZXRlcnMsTCxwKSxicj1paShRZSk7cmV0dXJuIFFlLmtpbmQ9PT0xNzI/Q2U9bS51cGRhdGVHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKFFlLFFlLmRlY29yYXRvcnMsUWUubW9kaWZpZXJzLFFlLm5hbWUscWUsUWUudHlwZSxicik6Q2U9bS51cGRhdGVTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKFFlLFFlLmRlY29yYXRvcnMsUWUubW9kaWZpZXJzLFFlLm5hbWUscWUsYnIpLCQoUyw5ODMwNCwwKSxoZT1HcixDZX1mdW5jdGlvbiBBdChRZSl7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFFlLm5hbWUsZyhtLmNsb25lTm9kZShRZS5uYW1lKSkpLFFlKX1mdW5jdGlvbiBiYShRZSl7cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKX1mdW5jdGlvbiAkYShRZSl7cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKX1mdW5jdGlvbiBRYShRZSl7cmV0dXJuIGUuc29tZShRZS5lbGVtZW50cyxlLmlzU3ByZWFkRWxlbWVudCk/Q24oUWUuZWxlbWVudHMsITEsISFRZS5tdWx0aUxpbmUsISFRZS5lbGVtZW50cy5oYXNUcmFpbGluZ0NvbW1hKTplLnZpc2l0RWFjaENoaWxkKFFlLEwscCl9ZnVuY3Rpb24gYWkoUWUpe2lmKGUuZ2V0RW1pdEZsYWdzKFFlKSYzMzU1NDQzMilyZXR1cm4gRG4oUWUpO3ZhciBHcj1lLnNraXBPdXRlckV4cHJlc3Npb25zKFFlLmV4cHJlc3Npb24pO3JldHVybiBHci5raW5kPT09MTA2fHxlLmlzU3VwZXJQcm9wZXJ0eShHcil8fGUuc29tZShRZS5hcmd1bWVudHMsZS5pc1NwcmVhZEVsZW1lbnQpP0JhKFFlLCEwKTptLnVwZGF0ZUNhbGxFeHByZXNzaW9uKFFlLGUudmlzaXROb2RlKFFlLmV4cHJlc3Npb24sWSxlLmlzRXhwcmVzc2lvbiksdm9pZCAwLGUudmlzaXROb2RlcyhRZS5hcmd1bWVudHMsTCxlLmlzRXhwcmVzc2lvbikpfWZ1bmN0aW9uIERuKFFlKXt2YXIgR3I9ZS5jYXN0KGUuY2FzdChlLnNraXBPdXRlckV4cHJlc3Npb25zKFFlLmV4cHJlc3Npb24pLGUuaXNBcnJvd0Z1bmN0aW9uKS5ib2R5LGUuaXNCbG9jayksUz1mdW5jdGlvbih5cyl7cmV0dXJuIGUuaXNWYXJpYWJsZVN0YXRlbWVudCh5cykmJiEhZS5maXJzdCh5cy5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zKS5pbml0aWFsaXplcn0sQ2U9aGU7aGU9dm9pZCAwO3ZhciBxZT1lLnZpc2l0Tm9kZXMoR3Iuc3RhdGVtZW50cyxrLGUuaXNTdGF0ZW1lbnQpO2hlPUNlO3ZhciBicj1lLmZpbHRlcihxZSxTKSxacj1lLmZpbHRlcihxZSxmdW5jdGlvbih5cyl7cmV0dXJuIVMoeXMpfSksU2k9ZS5jYXN0KGUuZmlyc3QoYnIpLGUuaXNWYXJpYWJsZVN0YXRlbWVudCksUGk9U2kuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9uc1swXSxRaT1lLnNraXBPdXRlckV4cHJlc3Npb25zKFBpLmluaXRpYWxpemVyKSxDdD1lLnRyeUNhc3QoUWksZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKTshQ3QmJmUuaXNCaW5hcnlFeHByZXNzaW9uKFFpKSYmUWkub3BlcmF0b3JUb2tlbi5raW5kPT09MjcmJihDdD1lLnRyeUNhc3QoUWkubGVmdCxlLmlzQXNzaWdubWVudEV4cHJlc3Npb24pKTt2YXIgc2E9ZS5jYXN0KEN0P2Uuc2tpcE91dGVyRXhwcmVzc2lvbnMoQ3QucmlnaHQpOlFpLGUuaXNDYWxsRXhwcmVzc2lvbiksZW49ZS5jYXN0KGUuc2tpcE91dGVyRXhwcmVzc2lvbnMoc2EuZXhwcmVzc2lvbiksZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbiksV2E9ZW4uYm9keS5zdGF0ZW1lbnRzLHFuPTAsbW89LTEsU289W107aWYoQ3Qpe3ZhciBHbz1lLnRyeUNhc3QoV2FbcW5dLGUuaXNFeHByZXNzaW9uU3RhdGVtZW50KTtHbyYmKFNvLnB1c2goR28pLHFuKyspLFNvLnB1c2goV2FbcW5dKSxxbisrLFNvLnB1c2gobS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG0uY3JlYXRlQXNzaWdubWVudChDdC5sZWZ0LGUuY2FzdChQaS5uYW1lLGUuaXNJZGVudGlmaWVyKSkpKX1mb3IoOyFlLmlzUmV0dXJuU3RhdGVtZW50KGUuZWxlbWVudEF0KFdhLG1vKSk7KW1vLS07cmV0dXJuIGUuYWRkUmFuZ2UoU28sV2EscW4sbW8pLG1vPC0xJiZlLmFkZFJhbmdlKFNvLFdhLG1vKzEpLGUuYWRkUmFuZ2UoU28sWnIpLGUuYWRkUmFuZ2UoU28sYnIsMSksbS5yZXN0b3JlT3V0ZXJFeHByZXNzaW9ucyhRZS5leHByZXNzaW9uLG0ucmVzdG9yZU91dGVyRXhwcmVzc2lvbnMoUGkuaW5pdGlhbGl6ZXIsbS5yZXN0b3JlT3V0ZXJFeHByZXNzaW9ucyhDdCYmQ3QucmlnaHQsbS51cGRhdGVDYWxsRXhwcmVzc2lvbihzYSxtLnJlc3RvcmVPdXRlckV4cHJlc3Npb25zKHNhLmV4cHJlc3Npb24sbS51cGRhdGVGdW5jdGlvbkV4cHJlc3Npb24oZW4sdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGVuLnBhcmFtZXRlcnMsdm9pZCAwLG0udXBkYXRlQmxvY2soZW4uYm9keSxTbykpKSx2b2lkIDAsc2EuYXJndW1lbnRzKSkpKX1mdW5jdGlvbiBrYShRZSl7cmV0dXJuIEJhKFFlLCExKX1mdW5jdGlvbiBCYShRZSxHcil7aWYoUWUudHJhbnNmb3JtRmxhZ3MmMTYzODR8fFFlLmV4cHJlc3Npb24ua2luZD09PTEwNnx8ZS5pc1N1cGVyUHJvcGVydHkoZS5za2lwT3V0ZXJFeHByZXNzaW9ucyhRZS5leHByZXNzaW9uKSkpe3ZhciBTPW0uY3JlYXRlQ2FsbEJpbmRpbmcoUWUuZXhwcmVzc2lvbixLKSxDZT1TLnRhcmdldCxxZT1TLnRoaXNBcmc7UWUuZXhwcmVzc2lvbi5raW5kPT09MTA2JiZlLnNldEVtaXRGbGFncyhxZSw0KTt2YXIgYnI9dm9pZCAwO2lmKFFlLnRyYW5zZm9ybUZsYWdzJjE2Mzg0P2JyPW0uY3JlYXRlRnVuY3Rpb25BcHBseUNhbGwoZS52aXNpdE5vZGUoQ2UsWSxlLmlzRXhwcmVzc2lvbiksUWUuZXhwcmVzc2lvbi5raW5kPT09MTA2P3FlOmUudmlzaXROb2RlKHFlLEwsZS5pc0V4cHJlc3Npb24pLENuKFFlLmFyZ3VtZW50cywhMCwhMSwhMSkpOmJyPWUuc2V0VGV4dFJhbmdlKG0uY3JlYXRlRnVuY3Rpb25DYWxsQ2FsbChlLnZpc2l0Tm9kZShDZSxZLGUuaXNFeHByZXNzaW9uKSxRZS5leHByZXNzaW9uLmtpbmQ9PT0xMDY/cWU6ZS52aXNpdE5vZGUocWUsTCxlLmlzRXhwcmVzc2lvbiksZS52aXNpdE5vZGVzKFFlLmFyZ3VtZW50cyxMLGUuaXNFeHByZXNzaW9uKSksUWUpLFFlLmV4cHJlc3Npb24ua2luZD09PTEwNil7dmFyIFpyPW0uY3JlYXRlTG9naWNhbE9yKGJyLEllKCkpO2JyPUdyP20uY3JlYXRlQXNzaWdubWVudChtLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfdGhpc1wiLDQ4KSxacik6WnJ9cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKGJyLFFlKX1yZXR1cm4gZS52aXNpdEVhY2hDaGlsZChRZSxMLHApfWZ1bmN0aW9uIHBuKFFlKXtpZihlLnNvbWUoUWUuYXJndW1lbnRzLGUuaXNTcHJlYWRFbGVtZW50KSl7dmFyIEdyPW0uY3JlYXRlQ2FsbEJpbmRpbmcobS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUWUuZXhwcmVzc2lvbixcImJpbmRcIiksSyksUz1Hci50YXJnZXQsQ2U9R3IudGhpc0FyZztyZXR1cm4gbS5jcmVhdGVOZXdFeHByZXNzaW9uKG0uY3JlYXRlRnVuY3Rpb25BcHBseUNhbGwoZS52aXNpdE5vZGUoUyxMLGUuaXNFeHByZXNzaW9uKSxDZSxDbihtLmNyZWF0ZU5vZGVBcnJheShWZShbbS5jcmVhdGVWb2lkWmVybygpXSxRZS5hcmd1bWVudHMsITApKSwhMCwhMSwhMSkpLHZvaWQgMCxbXSl9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUWUsTCxwKX1mdW5jdGlvbiBDbihRZSxHcixTLENlKXt2YXIgcWU9UWUubGVuZ3RoLGJyPWUuZmxhdHRlbihlLnNwYW5NYXAoUWUsQmksZnVuY3Rpb24oZW4sV2EscW4sbW8pe3JldHVybiBXYShlbixTLENlJiZtbz09PXFlKX0pKTtpZihici5sZW5ndGg9PT0xKXt2YXIgWnI9YnJbMF07aWYoR3ImJiFiLmRvd25sZXZlbEl0ZXJhdGlvbnx8ZS5pc1BhY2tlZEFycmF5TGl0ZXJhbChaci5leHByZXNzaW9uKXx8ZS5pc0NhbGxUb0hlbHBlcihaci5leHByZXNzaW9uLFwiX19fc3ByZWFkQXJyYXlcIikpcmV0dXJuIFpyLmV4cHJlc3Npb259Zm9yKHZhciBTaT1HKCksUGk9YnJbMF0ua2luZCE9PTAsUWk9UGk/bS5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKCk6YnJbMF0uZXhwcmVzc2lvbixDdD1QaT8wOjE7Q3Q8YnIubGVuZ3RoO0N0Kyspe3ZhciBzYT1icltDdF07UWk9U2kuY3JlYXRlU3ByZWFkQXJyYXlIZWxwZXIoUWksc2EuZXhwcmVzc2lvbixzYS5raW5kPT09MSYmIUdyKX1yZXR1cm4gUWl9ZnVuY3Rpb24gQmkoUWUpe3JldHVybiBlLmlzU3ByZWFkRWxlbWVudChRZSk/a246S259ZnVuY3Rpb24ga24oUWUpe3JldHVybiBlLm1hcChRZSx4bil9ZnVuY3Rpb24geG4oUWUpe3ZhciBHcj1lLnZpc2l0Tm9kZShRZS5leHByZXNzaW9uLEwsZS5pc0V4cHJlc3Npb24pLFM9ZS5pc0NhbGxUb0hlbHBlcihHcixcIl9fX3JlYWRcIiksQ2U9U3x8ZS5pc1BhY2tlZEFycmF5TGl0ZXJhbChHcik/MjoxO3JldHVybiBiLmRvd25sZXZlbEl0ZXJhdGlvbiYmQ2U9PT0xJiYhZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oR3IpJiYhUyYmKEdyPUcoKS5jcmVhdGVSZWFkSGVscGVyKEdyLHZvaWQgMCksQ2U9MiksbGUoQ2UsR3IpfWZ1bmN0aW9uIEtuKFFlLEdyLFMpe3ZhciBDZT1tLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oZS52aXNpdE5vZGVzKG0uY3JlYXRlTm9kZUFycmF5KFFlLFMpLEwsZS5pc0V4cHJlc3Npb24pLEdyKTtyZXR1cm4gbGUoMCxDZSl9ZnVuY3Rpb24gUG4oUWUpe3JldHVybiBlLnZpc2l0Tm9kZShRZS5leHByZXNzaW9uLEwsZS5pc0V4cHJlc3Npb24pfWZ1bmN0aW9uIGVvKFFlKXtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVTdHJpbmdMaXRlcmFsKFFlLnRleHQpLFFlKX1mdW5jdGlvbiBSbihRZSl7cmV0dXJuIFFlLmhhc0V4dGVuZGVkVW5pY29kZUVzY2FwZT9lLnNldFRleHRSYW5nZShtLmNyZWF0ZVN0cmluZ0xpdGVyYWwoUWUudGV4dCksUWUpOlFlfWZ1bmN0aW9uIERhKFFlKXtyZXR1cm4gUWUubnVtZXJpY0xpdGVyYWxGbGFncyYzODQ/ZS5zZXRUZXh0UmFuZ2UobS5jcmVhdGVOdW1lcmljTGl0ZXJhbChRZS50ZXh0KSxRZSk6UWV9ZnVuY3Rpb24gYm8oUWUpe3JldHVybiBlLnByb2Nlc3NUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24ocCxRZSxMLFIsZWUsZS5Qcm9jZXNzTGV2ZWwuQWxsKX1mdW5jdGlvbiBSbyhRZSl7Zm9yKHZhciBHcj1tLmNyZWF0ZVN0cmluZ0xpdGVyYWwoUWUuaGVhZC50ZXh0KSxTPTAsQ2U9UWUudGVtcGxhdGVTcGFucztTPENlLmxlbmd0aDtTKyspe3ZhciBxZT1DZVtTXSxicj1bZS52aXNpdE5vZGUocWUuZXhwcmVzc2lvbixMLGUuaXNFeHByZXNzaW9uKV07cWUubGl0ZXJhbC50ZXh0Lmxlbmd0aD4wJiZici5wdXNoKG0uY3JlYXRlU3RyaW5nTGl0ZXJhbChxZS5saXRlcmFsLnRleHQpKSxHcj1tLmNyZWF0ZUNhbGxFeHByZXNzaW9uKG0uY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEdyLFwiY29uY2F0XCIpLHZvaWQgMCxicil9cmV0dXJuIGUuc2V0VGV4dFJhbmdlKEdyLFFlKX1mdW5jdGlvbiBFbihRZSl7cmV0dXJuIE8mOCYmIVFlP20uY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG0uY3JlYXRlVW5pcXVlTmFtZShcIl9zdXBlclwiLDQ4KSxcInByb3RvdHlwZVwiKTptLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfc3VwZXJcIiw0OCl9ZnVuY3Rpb24gV24oUWUpe3JldHVybiBRZS5rZXl3b3JkVG9rZW49PT0xMDMmJlFlLm5hbWUuZXNjYXBlZFRleHQ9PT1cInRhcmdldFwiPyhPfD0zMjc2OCxtLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfbmV3VGFyZ2V0XCIsNDgpKTpRZX1mdW5jdGlvbiB0byhRZSxHcixTKXtpZihGJjEmJmUuaXNGdW5jdGlvbkxpa2UoR3IpKXt2YXIgQ2U9WCgzMjY3MCxlLmdldEVtaXRGbGFncyhHcikmOD84MTo2NSk7aWUoUWUsR3IsUyksJChDZSwwLDApO3JldHVybn1pZShRZSxHcixTKX1mdW5jdGlvbiBDbygpeyhGJjIpPT09MCYmKEZ8PTIscC5lbmFibGVTdWJzdGl0dXRpb24oNzkpKX1mdW5jdGlvbiBLbygpeyhGJjEpPT09MCYmKEZ8PTEscC5lbmFibGVTdWJzdGl0dXRpb24oMTA4KSxwLmVuYWJsZUVtaXROb3RpZmljYXRpb24oMTcxKSxwLmVuYWJsZUVtaXROb3RpZmljYXRpb24oMTY5KSxwLmVuYWJsZUVtaXROb3RpZmljYXRpb24oMTcyKSxwLmVuYWJsZUVtaXROb3RpZmljYXRpb24oMTczKSxwLmVuYWJsZUVtaXROb3RpZmljYXRpb24oMjE0KSxwLmVuYWJsZUVtaXROb3RpZmljYXRpb24oMjEzKSxwLmVuYWJsZUVtaXROb3RpZmljYXRpb24oMjU2KSl9ZnVuY3Rpb24gT28oUWUsR3Ipe3JldHVybiBHcj1KKFFlLEdyKSxRZT09PTE/UHIoR3IpOmUuaXNJZGVudGlmaWVyKEdyKT9ubyhHcik6R3J9ZnVuY3Rpb24gbm8oUWUpe2lmKEYmMiYmIWUuaXNJbnRlcm5hbE5hbWUoUWUpKXt2YXIgR3I9ZS5nZXRQYXJzZVRyZWVOb2RlKFFlLGUuaXNJZGVudGlmaWVyKTtpZihHciYmJG8oR3IpKXJldHVybiBlLnNldFRleHRSYW5nZShtLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKEdyKSxRZSl9cmV0dXJuIFFlfWZ1bmN0aW9uICRvKFFlKXtzd2l0Y2goUWUucGFyZW50LmtpbmQpe2Nhc2UgMjAzOmNhc2UgMjU3OmNhc2UgMjYwOmNhc2UgMjU0OnJldHVybiBRZS5wYXJlbnQubmFtZT09PVFlJiZzZS5pc0RlY2xhcmF0aW9uV2l0aENvbGxpZGluZ05hbWUoUWUucGFyZW50KX1yZXR1cm4hMX1mdW5jdGlvbiBQcihRZSl7c3dpdGNoKFFlLmtpbmQpe2Nhc2UgNzk6cmV0dXJuIHhpKFFlKTtjYXNlIDEwODpyZXR1cm4gcGEoUWUpfXJldHVybiBRZX1mdW5jdGlvbiB4aShRZSl7aWYoRiYyJiYhZS5pc0ludGVybmFsTmFtZShRZSkpe3ZhciBHcj1zZS5nZXRSZWZlcmVuY2VkRGVjbGFyYXRpb25XaXRoQ29sbGlkaW5nTmFtZShRZSk7aWYoR3ImJiEoZS5pc0NsYXNzTGlrZShHcikmJlN0KEdyLFFlKSkpcmV0dXJuIGUuc2V0VGV4dFJhbmdlKG0uZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihHcikpLFFlKX1yZXR1cm4gUWV9ZnVuY3Rpb24gU3QoUWUsR3Ipe3ZhciBTPWUuZ2V0UGFyc2VUcmVlTm9kZShHcik7aWYoIVN8fFM9PT1RZXx8Uy5lbmQ8PVFlLnBvc3x8Uy5wb3M+PVFlLmVuZClyZXR1cm4hMTtmb3IodmFyIENlPWUuZ2V0RW5jbG9zaW5nQmxvY2tTY29wZUNvbnRhaW5lcihRZSk7Uzspe2lmKFM9PT1DZXx8Uz09PVFlKXJldHVybiExO2lmKGUuaXNDbGFzc0VsZW1lbnQoUykmJlMucGFyZW50PT09UWUpcmV0dXJuITA7Uz1TLnBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBwYShRZSl7cmV0dXJuIEYmMSYmTyYxNj9lLnNldFRleHRSYW5nZShtLmNyZWF0ZVVuaXF1ZU5hbWUoXCJfdGhpc1wiLDQ4KSxRZSk6UWV9ZnVuY3Rpb24gZG4oUWUsR3Ipe3JldHVybiBlLmlzU3RhdGljKEdyKT9tLmdldEludGVybmFsTmFtZShRZSk6bS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obS5nZXRJbnRlcm5hbE5hbWUoUWUpLFwicHJvdG90eXBlXCIpfWZ1bmN0aW9uIEpuKFFlLEdyKXtpZighUWV8fCFHcnx8ZS5zb21lKFFlLnBhcmFtZXRlcnMpKXJldHVybiExO3ZhciBTPWUuZmlyc3RPclVuZGVmaW5lZChRZS5ib2R5LnN0YXRlbWVudHMpO2lmKCFTfHwhZS5ub2RlSXNTeW50aGVzaXplZChTKXx8Uy5raW5kIT09MjM4KXJldHVybiExO3ZhciBDZT1TLmV4cHJlc3Npb247aWYoIWUubm9kZUlzU3ludGhlc2l6ZWQoQ2UpfHxDZS5raW5kIT09MjA4KXJldHVybiExO3ZhciBxZT1DZS5leHByZXNzaW9uO2lmKCFlLm5vZGVJc1N5bnRoZXNpemVkKHFlKXx8cWUua2luZCE9PTEwNilyZXR1cm4hMTt2YXIgYnI9ZS5zaW5nbGVPclVuZGVmaW5lZChDZS5hcmd1bWVudHMpO2lmKCFicnx8IWUubm9kZUlzU3ludGhlc2l6ZWQoYnIpfHxici5raW5kIT09MjI1KXJldHVybiExO3ZhciBacj1ici5leHByZXNzaW9uO3JldHVybiBlLmlzSWRlbnRpZmllcihacikmJlpyLmVzY2FwZWRUZXh0PT09XCJhcmd1bWVudHNcIn19ZS50cmFuc2Zvcm1FUzIwMTU9Tn0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoQyl7dmFyIHc9Qy5mYWN0b3J5LEI9Qy5nZXRDb21waWxlck9wdGlvbnMoKSxFLFE7KEIuanN4PT09MXx8Qi5qc3g9PT0zKSYmKEU9Qy5vbkVtaXROb2RlLEMub25FbWl0Tm9kZT1wLEMuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigyODApLEMuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigyODEpLEMuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigyNzkpLFE9W10pO3ZhciBsZT1DLm9uU3Vic3RpdHV0ZU5vZGU7cmV0dXJuIEMub25TdWJzdGl0dXRlTm9kZT1tLEMuZW5hYmxlU3Vic3RpdHV0aW9uKDIwNiksQy5lbmFibGVTdWJzdGl0dXRpb24oMjk2KSxlLmNoYWluQnVuZGxlKEMsTik7ZnVuY3Rpb24gTihUKXtyZXR1cm4gVH1mdW5jdGlvbiBwKFQsSyxiKXtzd2l0Y2goSy5raW5kKXtjYXNlIDI4MDpjYXNlIDI4MTpjYXNlIDI3OTp2YXIgc2U9Sy50YWdOYW1lO1FbZS5nZXRPcmlnaW5hbE5vZGVJZChzZSldPSEwO2JyZWFrfUUoVCxLLGIpfWZ1bmN0aW9uIG0oVCxLKXtyZXR1cm4gSy5pZCYmUSYmUVtLLmlkXT9sZShULEspOihLPWxlKFQsSyksZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihLKT9HKEspOmUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQoSyk/b2UoSyk6Syl9ZnVuY3Rpb24gRyhUKXtpZihlLmlzUHJpdmF0ZUlkZW50aWZpZXIoVC5uYW1lKSlyZXR1cm4gVDt2YXIgSz1mKFQubmFtZSk7cmV0dXJuIEs/ZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihULmV4cHJlc3Npb24sSyksVCk6VH1mdW5jdGlvbiBvZShUKXt2YXIgSz1lLmlzSWRlbnRpZmllcihULm5hbWUpJiZmKFQubmFtZSk7cmV0dXJuIEs/dy51cGRhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoVCxLLFQuaW5pdGlhbGl6ZXIpOlR9ZnVuY3Rpb24gZihUKXt2YXIgSz1ULm9yaWdpbmFsS2V5d29yZEtpbmR8fChlLm5vZGVJc1N5bnRoZXNpemVkKFQpP2Uuc3RyaW5nVG9Ub2tlbihlLmlkVGV4dChUKSk6dm9pZCAwKTtpZihLIT09dm9pZCAwJiZLPj04MSYmSzw9MTE2KXJldHVybiBlLnNldFRleHRSYW5nZSh3LmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShUKSxUKX19ZS50cmFuc2Zvcm1FUzU9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihOKXtOW04uTm9wPTBdPVwiTm9wXCIsTltOLlN0YXRlbWVudD0xXT1cIlN0YXRlbWVudFwiLE5bTi5Bc3NpZ249Ml09XCJBc3NpZ25cIixOW04uQnJlYWs9M109XCJCcmVha1wiLE5bTi5CcmVha1doZW5UcnVlPTRdPVwiQnJlYWtXaGVuVHJ1ZVwiLE5bTi5CcmVha1doZW5GYWxzZT01XT1cIkJyZWFrV2hlbkZhbHNlXCIsTltOLllpZWxkPTZdPVwiWWllbGRcIixOW04uWWllbGRTdGFyPTddPVwiWWllbGRTdGFyXCIsTltOLlJldHVybj04XT1cIlJldHVyblwiLE5bTi5UaHJvdz05XT1cIlRocm93XCIsTltOLkVuZGZpbmFsbHk9MTBdPVwiRW5kZmluYWxseVwifSkoYXx8KGE9e30pKTt2YXIgQzsoZnVuY3Rpb24oTil7TltOLk9wZW49MF09XCJPcGVuXCIsTltOLkNsb3NlPTFdPVwiQ2xvc2VcIn0pKEN8fChDPXt9KSk7dmFyIHc7KGZ1bmN0aW9uKE4pe05bTi5FeGNlcHRpb249MF09XCJFeGNlcHRpb25cIixOW04uV2l0aD0xXT1cIldpdGhcIixOW04uU3dpdGNoPTJdPVwiU3dpdGNoXCIsTltOLkxvb3A9M109XCJMb29wXCIsTltOLkxhYmVsZWQ9NF09XCJMYWJlbGVkXCJ9KSh3fHwodz17fSkpO3ZhciBCOyhmdW5jdGlvbihOKXtOW04uVHJ5PTBdPVwiVHJ5XCIsTltOLkNhdGNoPTFdPVwiQ2F0Y2hcIixOW04uRmluYWxseT0yXT1cIkZpbmFsbHlcIixOW04uRG9uZT0zXT1cIkRvbmVcIn0pKEJ8fChCPXt9KSk7dmFyIEU7KGZ1bmN0aW9uKE4pe05bTi5OZXh0PTBdPVwiTmV4dFwiLE5bTi5UaHJvdz0xXT1cIlRocm93XCIsTltOLlJldHVybj0yXT1cIlJldHVyblwiLE5bTi5CcmVhaz0zXT1cIkJyZWFrXCIsTltOLllpZWxkPTRdPVwiWWllbGRcIixOW04uWWllbGRTdGFyPTVdPVwiWWllbGRTdGFyXCIsTltOLkNhdGNoPTZdPVwiQ2F0Y2hcIixOW04uRW5kZmluYWxseT03XT1cIkVuZGZpbmFsbHlcIn0pKEV8fChFPXt9KSk7ZnVuY3Rpb24gUShOKXtzd2l0Y2goTil7Y2FzZSAyOnJldHVyblwicmV0dXJuXCI7Y2FzZSAzOnJldHVyblwiYnJlYWtcIjtjYXNlIDQ6cmV0dXJuXCJ5aWVsZFwiO2Nhc2UgNTpyZXR1cm5cInlpZWxkKlwiO2Nhc2UgNzpyZXR1cm5cImVuZGZpbmFsbHlcIjtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gbGUoTil7dmFyIHA9Ti5mYWN0b3J5LG09Ti5nZXRFbWl0SGVscGVyRmFjdG9yeSxHPU4ucmVzdW1lTGV4aWNhbEVudmlyb25tZW50LG9lPU4uZW5kTGV4aWNhbEVudmlyb25tZW50LGY9Ti5ob2lzdEZ1bmN0aW9uRGVjbGFyYXRpb24sVD1OLmhvaXN0VmFyaWFibGVEZWNsYXJhdGlvbixLPU4uZ2V0Q29tcGlsZXJPcHRpb25zKCksYj1lLmdldEVtaXRTY3JpcHRUYXJnZXQoSyksc2U9Ti5nZXRFbWl0UmVzb2x2ZXIoKSxKPU4ub25TdWJzdGl0dXRlTm9kZTtOLm9uU3Vic3RpdHV0ZU5vZGU9enI7dmFyIGllLFIscSxPLHZlLGVlLGhlLEYseCxYLCQ9MSxBLHksVixMLFA9MCxrPTAsWSxVLGosSCxJLGwsZCxEO3JldHVybiBlLmNoYWluQnVuZGxlKE4sZmUpO2Z1bmN0aW9uIGZlKFByKXtpZihQci5pc0RlY2xhcmF0aW9uRmlsZXx8KFByLnRyYW5zZm9ybUZsYWdzJjIwNDgpPT09MClyZXR1cm4gUHI7dmFyIHhpPWUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKTtyZXR1cm4gZS5hZGRFbWl0SGVscGVycyh4aSxOLnJlYWRFbWl0SGVscGVycygpKSx4aX1mdW5jdGlvbiBnKFByKXt2YXIgeGk9UHIudHJhbnNmb3JtRmxhZ3M7cmV0dXJuIE8/bmUoUHIpOnE/dWUoUHIpOmUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihQcikmJlByLmFzdGVyaXNrVG9rZW4/RmUoUHIpOnhpJjIwNDg/ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pOlByfWZ1bmN0aW9uIG5lKFByKXtzd2l0Y2goUHIua2luZCl7Y2FzZSAyNDA6cmV0dXJuIFVyKFByKTtjYXNlIDI0MTpyZXR1cm4gbWkoUHIpO2Nhc2UgMjQ5OnJldHVybiBwaShQcik7Y2FzZSAyNTA6cmV0dXJuIFhlKFByKTtkZWZhdWx0OnJldHVybiB1ZShQcil9fWZ1bmN0aW9uIHVlKFByKXtzd2l0Y2goUHIua2luZCl7Y2FzZSAyNTY6cmV0dXJuIFooUHIpO2Nhc2UgMjEzOnJldHVybiBCZShQcik7Y2FzZSAxNzI6Y2FzZSAxNzM6cmV0dXJuIGdlKFByKTtjYXNlIDIzNzpyZXR1cm4gemUoUHIpO2Nhc2UgMjQyOnJldHVybiBvcihQcik7Y2FzZSAyNDM6cmV0dXJuIHNpKFByKTtjYXNlIDI0NjpyZXR1cm4gZXQoUHIpO2Nhc2UgMjQ1OnJldHVybiB3aShQcik7Y2FzZSAyNDc6cmV0dXJuIFd0KFByKTtkZWZhdWx0OnJldHVybiBQci50cmFuc2Zvcm1GbGFncyY1MjQyODg/V2UoUHIpOlByLnRyYW5zZm9ybUZsYWdzJjIwOTkyMDA/ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pOlByfX1mdW5jdGlvbiBXZShQcil7c3dpdGNoKFByLmtpbmQpe2Nhc2UgMjIxOnJldHVybiBFZShQcik7Y2FzZSAzNTE6cmV0dXJuIF9lKFByKTtjYXNlIDIyMjpyZXR1cm4gZGUoUHIpO2Nhc2UgMjI0OnJldHVybiB5ZShQcik7Y2FzZSAyMDQ6cmV0dXJuIEFlKFByKTtjYXNlIDIwNTpyZXR1cm4gaXIoUHIpO2Nhc2UgMjA3OnJldHVybiBDcihQcik7Y2FzZSAyMDg6cmV0dXJuIFllKFByKTtjYXNlIDIwOTpyZXR1cm4gQnIoUHIpO2RlZmF1bHQ6cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKX19ZnVuY3Rpb24gRmUoUHIpe3N3aXRjaChQci5raW5kKXtjYXNlIDI1NjpyZXR1cm4gWihQcik7Y2FzZSAyMTM6cmV0dXJuIEJlKFByKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWxCYWRTeW50YXhLaW5kKFByKX19ZnVuY3Rpb24gWihQcil7aWYoUHIuYXN0ZXJpc2tUb2tlbilQcj1lLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShwLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24odm9pZCAwLFByLm1vZGlmaWVycyx2b2lkIDAsUHIubmFtZSx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QoUHIucGFyYW1ldGVycyxnLE4pLHZvaWQgMCxSZShQci5ib2R5KSksUHIpLFByKTtlbHNle3ZhciB4aT1xLFN0PU87cT0hMSxPPSExLFByPWUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKSxxPXhpLE89U3R9aWYocSl7ZihQcik7cmV0dXJufWVsc2UgcmV0dXJuIFByfWZ1bmN0aW9uIEJlKFByKXtpZihQci5hc3Rlcmlza1Rva2VuKVByPWUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHZvaWQgMCx2b2lkIDAsUHIubmFtZSx2b2lkIDAsZS52aXNpdFBhcmFtZXRlckxpc3QoUHIucGFyYW1ldGVycyxnLE4pLHZvaWQgMCxSZShQci5ib2R5KSksUHIpLFByKTtlbHNle3ZhciB4aT1xLFN0PU87cT0hMSxPPSExLFByPWUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKSxxPXhpLE89U3R9cmV0dXJuIFByfWZ1bmN0aW9uIGdlKFByKXt2YXIgeGk9cSxTdD1PO3JldHVybiBxPSExLE89ITEsUHI9ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pLHE9eGksTz1TdCxQcn1mdW5jdGlvbiBSZShQcil7dmFyIHhpPVtdLFN0PXEscGE9Tyxkbj12ZSxKbj1lZSxRZT1oZSxHcj1GLFM9eCxDZT1YLHFlPSQsYnI9QSxacj15LFNpPVYsUGk9TDtxPSEwLE89ITEsdmU9dm9pZCAwLGVlPXZvaWQgMCxoZT12b2lkIDAsRj12b2lkIDAseD12b2lkIDAsWD12b2lkIDAsJD0xLEE9dm9pZCAwLHk9dm9pZCAwLFY9dm9pZCAwLEw9cC5jcmVhdGVUZW1wVmFyaWFibGUodm9pZCAwKSxHKCk7dmFyIFFpPXAuY29weVByb2xvZ3VlKFByLnN0YXRlbWVudHMseGksITEsZyk7RXIoUHIuc3RhdGVtZW50cyxRaSk7dmFyIEN0PXBuKCk7cmV0dXJuIGUuaW5zZXJ0U3RhdGVtZW50c0FmdGVyU3RhbmRhcmRQcm9sb2d1ZSh4aSxvZSgpKSx4aS5wdXNoKHAuY3JlYXRlUmV0dXJuU3RhdGVtZW50KEN0KSkscT1TdCxPPXBhLHZlPWRuLGVlPUpuLGhlPVFlLEY9R3IseD1TLFg9Q2UsJD1xZSxBPWJyLHk9WnIsVj1TaSxMPVBpLGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlQmxvY2soeGksUHIubXVsdGlMaW5lKSxQcil9ZnVuY3Rpb24gemUoUHIpe2lmKFByLnRyYW5zZm9ybUZsYWdzJjUyNDI4OCl7dXIoUHIuZGVjbGFyYXRpb25MaXN0KTtyZXR1cm59ZWxzZXtpZihlLmdldEVtaXRGbGFncyhQcikmMTA0ODU3NilyZXR1cm4gUHI7Zm9yKHZhciB4aT0wLFN0PVByLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnM7eGk8U3QubGVuZ3RoO3hpKyspe3ZhciBwYT1TdFt4aV07VChwYS5uYW1lKX12YXIgZG49ZS5nZXRJbml0aWFsaXplZFZhcmlhYmxlcyhQci5kZWNsYXJhdGlvbkxpc3QpO3JldHVybiBkbi5sZW5ndGg9PT0wP3ZvaWQgMDplLnNldFNvdXJjZU1hcFJhbmdlKHAuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChwLmlubGluZUV4cHJlc3Npb25zKGUubWFwKGRuLHlyKSkpLFByKX19ZnVuY3Rpb24gRWUoUHIpe3ZhciB4aT1lLmdldEV4cHJlc3Npb25Bc3NvY2lhdGl2aXR5KFByKTtzd2l0Y2goeGkpe2Nhc2UgMDpyZXR1cm4gcnIoUHIpO2Nhc2UgMTpyZXR1cm4gSGUoUHIpO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoeGkpfX1mdW5jdGlvbiBIZShQcil7dmFyIHhpPVByLmxlZnQsU3Q9UHIucmlnaHQ7aWYoWmUoU3QpKXt2YXIgcGE9dm9pZCAwO3N3aXRjaCh4aS5raW5kKXtjYXNlIDIwNjpwYT1wLnVwZGF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih4aSx4ZShlLnZpc2l0Tm9kZSh4aS5leHByZXNzaW9uLGcsZS5pc0xlZnRIYW5kU2lkZUV4cHJlc3Npb24pKSx4aS5uYW1lKTticmVhaztjYXNlIDIwNzpwYT1wLnVwZGF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKHhpLHhlKGUudmlzaXROb2RlKHhpLmV4cHJlc3Npb24sZyxlLmlzTGVmdEhhbmRTaWRlRXhwcmVzc2lvbikpLHhlKGUudmlzaXROb2RlKHhpLmFyZ3VtZW50RXhwcmVzc2lvbixnLGUuaXNFeHByZXNzaW9uKSkpO2JyZWFrO2RlZmF1bHQ6cGE9ZS52aXNpdE5vZGUoeGksZyxlLmlzRXhwcmVzc2lvbik7YnJlYWt9dmFyIGRuPVByLm9wZXJhdG9yVG9rZW4ua2luZDtyZXR1cm4gZS5pc0NvbXBvdW5kQXNzaWdubWVudChkbik/ZS5zZXRUZXh0UmFuZ2UocC5jcmVhdGVBc3NpZ25tZW50KHBhLGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbih4ZShwYSksZS5nZXROb25Bc3NpZ25tZW50T3BlcmF0b3JGb3JDb21wb3VuZEFzc2lnbm1lbnQoZG4pLGUudmlzaXROb2RlKFN0LGcsZS5pc0V4cHJlc3Npb24pKSxQcikpLFByKTpwLnVwZGF0ZUJpbmFyeUV4cHJlc3Npb24oUHIscGEsUHIub3BlcmF0b3JUb2tlbixlLnZpc2l0Tm9kZShTdCxnLGUuaXNFeHByZXNzaW9uKSl9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKX1mdW5jdGlvbiBycihQcil7cmV0dXJuIFplKFByLnJpZ2h0KT9lLmlzTG9naWNhbE9wZXJhdG9yKFByLm9wZXJhdG9yVG9rZW4ua2luZCk/d2UoUHIpOlByLm9wZXJhdG9yVG9rZW4ua2luZD09PTI3P0llKFByKTpwLnVwZGF0ZUJpbmFyeUV4cHJlc3Npb24oUHIseGUoZS52aXNpdE5vZGUoUHIubGVmdCxnLGUuaXNFeHByZXNzaW9uKSksUHIub3BlcmF0b3JUb2tlbixlLnZpc2l0Tm9kZShQci5yaWdodCxnLGUuaXNFeHByZXNzaW9uKSk6ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pfWZ1bmN0aW9uIEllKFByKXt2YXIgeGk9W107cmV0dXJuIFN0KFByLmxlZnQpLFN0KFByLnJpZ2h0KSxwLmlubGluZUV4cHJlc3Npb25zKHhpKTtmdW5jdGlvbiBTdChwYSl7ZS5pc0JpbmFyeUV4cHJlc3Npb24ocGEpJiZwYS5vcGVyYXRvclRva2VuLmtpbmQ9PT0yNz8oU3QocGEubGVmdCksU3QocGEucmlnaHQpKTooWmUocGEpJiZ4aS5sZW5ndGg+MCYmKEJhKDEsW3AuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChwLmlubGluZUV4cHJlc3Npb25zKHhpKSldKSx4aT1bXSkseGkucHVzaChlLnZpc2l0Tm9kZShwYSxnLGUuaXNFeHByZXNzaW9uKSkpfX1mdW5jdGlvbiBfZShQcil7Zm9yKHZhciB4aT1bXSxTdD0wLHBhPVByLmVsZW1lbnRzO1N0PHBhLmxlbmd0aDtTdCsrKXt2YXIgZG49cGFbU3RdO2UuaXNCaW5hcnlFeHByZXNzaW9uKGRuKSYmZG4ub3BlcmF0b3JUb2tlbi5raW5kPT09Mjc/eGkucHVzaChJZShkbikpOihaZShkbikmJnhpLmxlbmd0aD4wJiYoQmEoMSxbcC5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHAuaW5saW5lRXhwcmVzc2lvbnMoeGkpKV0pLHhpPVtdKSx4aS5wdXNoKGUudmlzaXROb2RlKGRuLGcsZS5pc0V4cHJlc3Npb24pKSl9cmV0dXJuIHAuaW5saW5lRXhwcmVzc2lvbnMoeGkpfWZ1bmN0aW9uIHdlKFByKXt2YXIgeGk9bXIoKSxTdD12cigpO3JldHVybiBWaShTdCxlLnZpc2l0Tm9kZShQci5sZWZ0LGcsZS5pc0V4cHJlc3Npb24pLFByLmxlZnQpLFByLm9wZXJhdG9yVG9rZW4ua2luZD09PTU1P2JhKHhpLFN0LFByLmxlZnQpOkF0KHhpLFN0LFByLmxlZnQpLFZpKFN0LGUudmlzaXROb2RlKFByLnJpZ2h0LGcsZS5pc0V4cHJlc3Npb24pLFByLnJpZ2h0KSxBcih4aSksU3R9ZnVuY3Rpb24gZGUoUHIpe2lmKFplKFByLndoZW5UcnVlKXx8WmUoUHIud2hlbkZhbHNlKSl7dmFyIHhpPW1yKCksU3Q9bXIoKSxwYT12cigpO3JldHVybiBiYSh4aSxlLnZpc2l0Tm9kZShQci5jb25kaXRpb24sZyxlLmlzRXhwcmVzc2lvbiksUHIuY29uZGl0aW9uKSxWaShwYSxlLnZpc2l0Tm9kZShQci53aGVuVHJ1ZSxnLGUuaXNFeHByZXNzaW9uKSxQci53aGVuVHJ1ZSksYXQoU3QpLEFyKHhpKSxWaShwYSxlLnZpc2l0Tm9kZShQci53aGVuRmFsc2UsZyxlLmlzRXhwcmVzc2lvbiksUHIud2hlbkZhbHNlKSxBcihTdCkscGF9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKX1mdW5jdGlvbiB5ZShQcil7dmFyIHhpPW1yKCksU3Q9ZS52aXNpdE5vZGUoUHIuZXhwcmVzc2lvbixnLGUuaXNFeHByZXNzaW9uKTtpZihQci5hc3Rlcmlza1Rva2VuKXt2YXIgcGE9KGUuZ2V0RW1pdEZsYWdzKFByLmV4cHJlc3Npb24pJjgzODg2MDgpPT09MD9lLnNldFRleHRSYW5nZShtKCkuY3JlYXRlVmFsdWVzSGVscGVyKFN0KSxQcik6U3Q7JGEocGEsUHIpfWVsc2UgUWEoU3QsUHIpO3JldHVybiBBcih4aSksQWkoUHIpfWZ1bmN0aW9uIEFlKFByKXtyZXR1cm4gZXIoUHIuZWxlbWVudHMsdm9pZCAwLHZvaWQgMCxQci5tdWx0aUxpbmUpfWZ1bmN0aW9uIGVyKFByLHhpLFN0LHBhKXt2YXIgZG49U3IoUHIpLEpuO2lmKGRuPjApe0puPXZyKCk7dmFyIFFlPWUudmlzaXROb2RlcyhQcixnLGUuaXNFeHByZXNzaW9uLDAsZG4pO1ZpKEpuLHAuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbih4aT9WZShbeGldLFFlLCEwKTpRZSkpLHhpPXZvaWQgMH12YXIgR3I9ZS5yZWR1Y2VMZWZ0KFByLFMsW10sZG4pO3JldHVybiBKbj9wLmNyZWF0ZUFycmF5Q29uY2F0Q2FsbChKbixbcC5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKEdyLHBhKV0pOmUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbih4aT9WZShbeGldLEdyLCEwKTpHcixwYSksU3QpO2Z1bmN0aW9uIFMoQ2UscWUpe2lmKFplKHFlKSYmQ2UubGVuZ3RoPjApe3ZhciBicj1KbiE9PXZvaWQgMDtKbnx8KEpuPXZyKCkpLFZpKEpuLGJyP3AuY3JlYXRlQXJyYXlDb25jYXRDYWxsKEpuLFtwLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oQ2UscGEpXSk6cC5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKHhpP1ZlKFt4aV0sQ2UsITApOkNlLHBhKSkseGk9dm9pZCAwLENlPVtdfXJldHVybiBDZS5wdXNoKGUudmlzaXROb2RlKHFlLGcsZS5pc0V4cHJlc3Npb24pKSxDZX19ZnVuY3Rpb24gaXIoUHIpe3ZhciB4aT1Qci5wcm9wZXJ0aWVzLFN0PVByLm11bHRpTGluZSxwYT1Tcih4aSksZG49dnIoKTtWaShkbixwLmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKGUudmlzaXROb2Rlcyh4aSxnLGUuaXNPYmplY3RMaXRlcmFsRWxlbWVudExpa2UsMCxwYSksU3QpKTt2YXIgSm49ZS5yZWR1Y2VMZWZ0KHhpLFFlLFtdLHBhKTtyZXR1cm4gSm4ucHVzaChTdD9lLnN0YXJ0T25OZXdMaW5lKGUuc2V0UGFyZW50KGUuc2V0VGV4dFJhbmdlKHAuY2xvbmVOb2RlKGRuKSxkbiksZG4ucGFyZW50KSk6ZG4pLHAuaW5saW5lRXhwcmVzc2lvbnMoSm4pO2Z1bmN0aW9uIFFlKEdyLFMpe1plKFMpJiZHci5sZW5ndGg+MCYmKGppKHAuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChwLmlubGluZUV4cHJlc3Npb25zKEdyKSkpLEdyPVtdKTt2YXIgQ2U9ZS5jcmVhdGVFeHByZXNzaW9uRm9yT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlKHAsUHIsUyxkbikscWU9ZS52aXNpdE5vZGUoQ2UsZyxlLmlzRXhwcmVzc2lvbik7cmV0dXJuIHFlJiYoU3QmJmUuc3RhcnRPbk5ld0xpbmUocWUpLEdyLnB1c2gocWUpKSxHcn19ZnVuY3Rpb24gQ3IoUHIpe3JldHVybiBaZShQci5hcmd1bWVudEV4cHJlc3Npb24pP3AudXBkYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oUHIseGUoZS52aXNpdE5vZGUoUHIuZXhwcmVzc2lvbixnLGUuaXNMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKSksZS52aXNpdE5vZGUoUHIuYXJndW1lbnRFeHByZXNzaW9uLGcsZS5pc0V4cHJlc3Npb24pKTplLnZpc2l0RWFjaENoaWxkKFByLGcsTil9ZnVuY3Rpb24gWWUoUHIpe2lmKCFlLmlzSW1wb3J0Q2FsbChQcikmJmUuZm9yRWFjaChQci5hcmd1bWVudHMsWmUpKXt2YXIgeGk9cC5jcmVhdGVDYWxsQmluZGluZyhQci5leHByZXNzaW9uLFQsYiwhMCksU3Q9eGkudGFyZ2V0LHBhPXhpLnRoaXNBcmc7cmV0dXJuIGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlRnVuY3Rpb25BcHBseUNhbGwoeGUoZS52aXNpdE5vZGUoU3QsZyxlLmlzTGVmdEhhbmRTaWRlRXhwcmVzc2lvbikpLHBhLGVyKFByLmFyZ3VtZW50cykpLFByKSxQcil9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKX1mdW5jdGlvbiBCcihQcil7aWYoZS5mb3JFYWNoKFByLmFyZ3VtZW50cyxaZSkpe3ZhciB4aT1wLmNyZWF0ZUNhbGxCaW5kaW5nKHAuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFByLmV4cHJlc3Npb24sXCJiaW5kXCIpLFQpLFN0PXhpLnRhcmdldCxwYT14aS50aGlzQXJnO3JldHVybiBlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShwLmNyZWF0ZU5ld0V4cHJlc3Npb24ocC5jcmVhdGVGdW5jdGlvbkFwcGx5Q2FsbCh4ZShlLnZpc2l0Tm9kZShTdCxnLGUuaXNFeHByZXNzaW9uKSkscGEsZXIoUHIuYXJndW1lbnRzLHAuY3JlYXRlVm9pZFplcm8oKSkpLHZvaWQgMCxbXSksUHIpLFByKX1yZXR1cm4gZS52aXNpdEVhY2hDaGlsZChQcixnLE4pfWZ1bmN0aW9uIEVyKFByLHhpKXt4aT09PXZvaWQgMCYmKHhpPTApO2Zvcih2YXIgU3Q9UHIubGVuZ3RoLHBhPXhpO3BhPFN0O3BhKyspbihQcltwYV0pfWZ1bmN0aW9uIE5lKFByKXtlLmlzQmxvY2soUHIpP0VyKFByLnN0YXRlbWVudHMpOm4oUHIpfWZ1bmN0aW9uIG4oUHIpe3ZhciB4aT1PO098fChPPVplKFByKSksbHIoUHIpLE89eGl9ZnVuY3Rpb24gbHIoUHIpe3N3aXRjaChQci5raW5kKXtjYXNlIDIzNTpyZXR1cm4gYmUoUHIpO2Nhc2UgMjM4OnJldHVybiBHZShQcik7Y2FzZSAyMzk6cmV0dXJuIElyKFByKTtjYXNlIDI0MDpyZXR1cm4gd3IoUHIpO2Nhc2UgMjQxOnJldHVybiBpaShQcik7Y2FzZSAyNDI6cmV0dXJuIHBlKFByKTtjYXNlIDI0MzpyZXR1cm4gcXIoUHIpO2Nhc2UgMjQ1OnJldHVybiBEaShQcik7Y2FzZSAyNDY6cmV0dXJuIFhpKFByKTtjYXNlIDI0NzpyZXR1cm4gR2koUHIpO2Nhc2UgMjQ4OnJldHVybiBadChQcik7Y2FzZSAyNDk6cmV0dXJuIF9yKFByKTtjYXNlIDI1MDpyZXR1cm4gYWUoUHIpO2Nhc2UgMjUxOnJldHVybiBKcihQcik7Y2FzZSAyNTI6cmV0dXJuIHRpKFByKTtkZWZhdWx0OnJldHVybiBqaShlLnZpc2l0Tm9kZShQcixnLGUuaXNTdGF0ZW1lbnQpKX19ZnVuY3Rpb24gYmUoUHIpe1plKFByKT9FcihQci5zdGF0ZW1lbnRzKTpqaShlLnZpc2l0Tm9kZShQcixnLGUuaXNTdGF0ZW1lbnQpKX1mdW5jdGlvbiBHZShQcil7amkoZS52aXNpdE5vZGUoUHIsZyxlLmlzU3RhdGVtZW50KSl9ZnVuY3Rpb24gdXIoUHIpe2Zvcih2YXIgeGk9MCxTdD1Qci5kZWNsYXJhdGlvbnM7eGk8U3QubGVuZ3RoO3hpKyspe3ZhciBwYT1TdFt4aV0sZG49cC5jbG9uZU5vZGUocGEubmFtZSk7ZS5zZXRDb21tZW50UmFuZ2UoZG4scGEubmFtZSksVChkbil9Zm9yKHZhciBKbj1lLmdldEluaXRpYWxpemVkVmFyaWFibGVzKFByKSxRZT1Kbi5sZW5ndGgsR3I9MCxTPVtdO0dyPFFlOyl7Zm9yKHZhciBDZT1HcjtDZTxRZTtDZSsrKXt2YXIgcGE9Sm5bQ2VdO2lmKFplKHBhLmluaXRpYWxpemVyKSYmUy5sZW5ndGg+MClicmVhaztTLnB1c2goeXIocGEpKX1TLmxlbmd0aCYmKGppKHAuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChwLmlubGluZUV4cHJlc3Npb25zKFMpKSksR3IrPVMubGVuZ3RoLFM9W10pfX1mdW5jdGlvbiB5cihQcil7cmV0dXJuIGUuc2V0U291cmNlTWFwUmFuZ2UocC5jcmVhdGVBc3NpZ25tZW50KGUuc2V0U291cmNlTWFwUmFuZ2UocC5jbG9uZU5vZGUoUHIubmFtZSksUHIubmFtZSksZS52aXNpdE5vZGUoUHIuaW5pdGlhbGl6ZXIsZyxlLmlzRXhwcmVzc2lvbikpLFByKX1mdW5jdGlvbiBJcihQcil7aWYoWmUoUHIpKWlmKFplKFByLnRoZW5TdGF0ZW1lbnQpfHxaZShQci5lbHNlU3RhdGVtZW50KSl7dmFyIHhpPW1yKCksU3Q9UHIuZWxzZVN0YXRlbWVudD9tcigpOnZvaWQgMDtiYShQci5lbHNlU3RhdGVtZW50P1N0OnhpLGUudmlzaXROb2RlKFByLmV4cHJlc3Npb24sZyxlLmlzRXhwcmVzc2lvbiksUHIuZXhwcmVzc2lvbiksTmUoUHIudGhlblN0YXRlbWVudCksUHIuZWxzZVN0YXRlbWVudCYmKGF0KHhpKSxBcihTdCksTmUoUHIuZWxzZVN0YXRlbWVudCkpLEFyKHhpKX1lbHNlIGppKGUudmlzaXROb2RlKFByLGcsZS5pc1N0YXRlbWVudCkpO2Vsc2UgamkoZS52aXNpdE5vZGUoUHIsZyxlLmlzU3RhdGVtZW50KSl9ZnVuY3Rpb24gd3IoUHIpe2lmKFplKFByKSl7dmFyIHhpPW1yKCksU3Q9bXIoKTtVaSh4aSksQXIoU3QpLE5lKFByLnN0YXRlbWVudCksQXIoeGkpLEF0KFN0LGUudmlzaXROb2RlKFByLmV4cHJlc3Npb24sZyxlLmlzRXhwcmVzc2lvbikpLFlpKCl9ZWxzZSBqaShlLnZpc2l0Tm9kZShQcixnLGUuaXNTdGF0ZW1lbnQpKX1mdW5jdGlvbiBVcihQcil7cmV0dXJuIE8/KHZpKCksUHI9ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pLFlpKCksUHIpOmUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKX1mdW5jdGlvbiBpaShQcil7aWYoWmUoUHIpKXt2YXIgeGk9bXIoKSxTdD1VaSh4aSk7QXIoeGkpLGJhKFN0LGUudmlzaXROb2RlKFByLmV4cHJlc3Npb24sZyxlLmlzRXhwcmVzc2lvbikpLE5lKFByLnN0YXRlbWVudCksYXQoeGkpLFlpKCl9ZWxzZSBqaShlLnZpc2l0Tm9kZShQcixnLGUuaXNTdGF0ZW1lbnQpKX1mdW5jdGlvbiBtaShQcil7cmV0dXJuIE8/KHZpKCksUHI9ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pLFlpKCksUHIpOmUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKX1mdW5jdGlvbiBwZShQcil7aWYoWmUoUHIpKXt2YXIgeGk9bXIoKSxTdD1tcigpLHBhPVVpKFN0KTtpZihQci5pbml0aWFsaXplcil7dmFyIGRuPVByLmluaXRpYWxpemVyO2UuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChkbik/dXIoZG4pOmppKGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChlLnZpc2l0Tm9kZShkbixnLGUuaXNFeHByZXNzaW9uKSksZG4pKX1Bcih4aSksUHIuY29uZGl0aW9uJiZiYShwYSxlLnZpc2l0Tm9kZShQci5jb25kaXRpb24sZyxlLmlzRXhwcmVzc2lvbikpLE5lKFByLnN0YXRlbWVudCksQXIoU3QpLFByLmluY3JlbWVudG9yJiZqaShlLnNldFRleHRSYW5nZShwLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZS52aXNpdE5vZGUoUHIuaW5jcmVtZW50b3IsZyxlLmlzRXhwcmVzc2lvbikpLFByLmluY3JlbWVudG9yKSksYXQoeGkpLFlpKCl9ZWxzZSBqaShlLnZpc2l0Tm9kZShQcixnLGUuaXNTdGF0ZW1lbnQpKX1mdW5jdGlvbiBvcihQcil7TyYmdmkoKTt2YXIgeGk9UHIuaW5pdGlhbGl6ZXI7aWYoeGkmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCh4aSkpe2Zvcih2YXIgU3Q9MCxwYT14aS5kZWNsYXJhdGlvbnM7U3Q8cGEubGVuZ3RoO1N0Kyspe3ZhciBkbj1wYVtTdF07VChkbi5uYW1lKX12YXIgSm49ZS5nZXRJbml0aWFsaXplZFZhcmlhYmxlcyh4aSk7UHI9cC51cGRhdGVGb3JTdGF0ZW1lbnQoUHIsSm4ubGVuZ3RoPjA/cC5pbmxpbmVFeHByZXNzaW9ucyhlLm1hcChKbix5cikpOnZvaWQgMCxlLnZpc2l0Tm9kZShQci5jb25kaXRpb24sZyxlLmlzRXhwcmVzc2lvbiksZS52aXNpdE5vZGUoUHIuaW5jcmVtZW50b3IsZyxlLmlzRXhwcmVzc2lvbiksZS52aXNpdEl0ZXJhdGlvbkJvZHkoUHIuc3RhdGVtZW50LGcsTikpfWVsc2UgUHI9ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pO3JldHVybiBPJiZZaSgpLFByfWZ1bmN0aW9uIHFyKFByKXtpZihaZShQcikpe3ZhciB4aT12cigpLFN0PXZyKCkscGE9cC5jcmVhdGVMb29wVmFyaWFibGUoKSxkbj1Qci5pbml0aWFsaXplcjtUKHBhKSxWaSh4aSxwLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oKSksamkocC5jcmVhdGVGb3JJblN0YXRlbWVudChTdCxlLnZpc2l0Tm9kZShQci5leHByZXNzaW9uLGcsZS5pc0V4cHJlc3Npb24pLHAuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChwLmNyZWF0ZUNhbGxFeHByZXNzaW9uKHAuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHhpLFwicHVzaFwiKSx2b2lkIDAsW1N0XSkpKSksVmkocGEscC5jcmVhdGVOdW1lcmljTGl0ZXJhbCgwKSk7dmFyIEpuPW1yKCksUWU9bXIoKSxHcj1VaShRZSk7QXIoSm4pLGJhKEdyLHAuY3JlYXRlTGVzc1RoYW4ocGEscC5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oeGksXCJsZW5ndGhcIikpKTt2YXIgUz12b2lkIDA7aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGRuKSl7Zm9yKHZhciBDZT0wLHFlPWRuLmRlY2xhcmF0aW9ucztDZTxxZS5sZW5ndGg7Q2UrKyl7dmFyIGJyPXFlW0NlXTtUKGJyLm5hbWUpfVM9cC5jbG9uZU5vZGUoZG4uZGVjbGFyYXRpb25zWzBdLm5hbWUpfWVsc2UgUz1lLnZpc2l0Tm9kZShkbixnLGUuaXNFeHByZXNzaW9uKSxlLkRlYnVnLmFzc2VydChlLmlzTGVmdEhhbmRTaWRlRXhwcmVzc2lvbihTKSk7VmkoUyxwLmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKHhpLHBhKSksTmUoUHIuc3RhdGVtZW50KSxBcihRZSksamkocC5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHAuY3JlYXRlUG9zdGZpeEluY3JlbWVudChwYSkpKSxhdChKbiksWWkoKX1lbHNlIGppKGUudmlzaXROb2RlKFByLGcsZS5pc1N0YXRlbWVudCkpfWZ1bmN0aW9uIHNpKFByKXtPJiZ2aSgpO3ZhciB4aT1Qci5pbml0aWFsaXplcjtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoeGkpKXtmb3IodmFyIFN0PTAscGE9eGkuZGVjbGFyYXRpb25zO1N0PHBhLmxlbmd0aDtTdCsrKXt2YXIgZG49cGFbU3RdO1QoZG4ubmFtZSl9UHI9cC51cGRhdGVGb3JJblN0YXRlbWVudChQcix4aS5kZWNsYXJhdGlvbnNbMF0ubmFtZSxlLnZpc2l0Tm9kZShQci5leHByZXNzaW9uLGcsZS5pc0V4cHJlc3Npb24pLGUudmlzaXROb2RlKFByLnN0YXRlbWVudCxnLGUuaXNTdGF0ZW1lbnQscC5saWZ0VG9CbG9jaykpfWVsc2UgUHI9ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pO3JldHVybiBPJiZZaSgpLFByfWZ1bmN0aW9uIERpKFByKXt2YXIgeGk9RmkoUHIubGFiZWw/ZS5pZFRleHQoUHIubGFiZWwpOnZvaWQgMCk7eGk+MD9hdCh4aSxQcik6amkoUHIpfWZ1bmN0aW9uIHdpKFByKXtpZihPKXt2YXIgeGk9RmkoUHIubGFiZWwmJmUuaWRUZXh0KFByLmxhYmVsKSk7aWYoeGk+MClyZXR1cm4gd3QoeGksUHIpfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKFByLGcsTil9ZnVuY3Rpb24gWGkoUHIpe3ZhciB4aT1LaShQci5sYWJlbD9lLmlkVGV4dChQci5sYWJlbCk6dm9pZCAwKTt4aT4wP2F0KHhpLFByKTpqaShQcil9ZnVuY3Rpb24gZXQoUHIpe2lmKE8pe3ZhciB4aT1LaShQci5sYWJlbCYmZS5pZFRleHQoUHIubGFiZWwpKTtpZih4aT4wKXJldHVybiB3dCh4aSxQcil9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKX1mdW5jdGlvbiBHaShQcil7YWkoZS52aXNpdE5vZGUoUHIuZXhwcmVzc2lvbixnLGUuaXNFeHByZXNzaW9uKSxQcil9ZnVuY3Rpb24gV3QoUHIpe3JldHVybiBuYShlLnZpc2l0Tm9kZShQci5leHByZXNzaW9uLGcsZS5pc0V4cHJlc3Npb24pLFByKX1mdW5jdGlvbiBadChQcil7WmUoUHIpPyhVZSh4ZShlLnZpc2l0Tm9kZShQci5leHByZXNzaW9uLGcsZS5pc0V4cHJlc3Npb24pKSksTmUoUHIuc3RhdGVtZW50KSxmcigpKTpqaShlLnZpc2l0Tm9kZShQcixnLGUuaXNTdGF0ZW1lbnQpKX1mdW5jdGlvbiBfcihQcil7aWYoWmUoUHIuY2FzZUJsb2NrKSl7Zm9yKHZhciB4aT1Qci5jYXNlQmxvY2ssU3Q9eGkuY2xhdXNlcy5sZW5ndGgscGE9Y3QoKSxkbj14ZShlLnZpc2l0Tm9kZShQci5leHByZXNzaW9uLGcsZS5pc0V4cHJlc3Npb24pKSxKbj1bXSxRZT0tMSxHcj0wO0dyPFN0O0dyKyspe3ZhciBTPXhpLmNsYXVzZXNbR3JdO0puLnB1c2gobXIoKSksUy5raW5kPT09MjkwJiZRZT09PS0xJiYoUWU9R3IpfWZvcih2YXIgQ2U9MCxxZT1bXTtDZTxTdDspe2Zvcih2YXIgYnI9MCxHcj1DZTtHcjxTdDtHcisrKXt2YXIgUz14aS5jbGF1c2VzW0dyXTtpZihTLmtpbmQ9PT0yODkpe2lmKFplKFMuZXhwcmVzc2lvbikmJnFlLmxlbmd0aD4wKWJyZWFrO3FlLnB1c2gocC5jcmVhdGVDYXNlQ2xhdXNlKGUudmlzaXROb2RlKFMuZXhwcmVzc2lvbixnLGUuaXNFeHByZXNzaW9uKSxbd3QoSm5bR3JdLFMuZXhwcmVzc2lvbildKSl9ZWxzZSBicisrfXFlLmxlbmd0aCYmKGppKHAuY3JlYXRlU3dpdGNoU3RhdGVtZW50KGRuLHAuY3JlYXRlQ2FzZUJsb2NrKHFlKSkpLENlKz1xZS5sZW5ndGgscWU9W10pLGJyPjAmJihDZSs9YnIsYnI9MCl9UWU+PTA/YXQoSm5bUWVdKTphdChwYSk7Zm9yKHZhciBHcj0wO0dyPFN0O0dyKyspQXIoSm5bR3JdKSxFcih4aS5jbGF1c2VzW0dyXS5zdGF0ZW1lbnRzKTtMaSgpfWVsc2UgamkoZS52aXNpdE5vZGUoUHIsZyxlLmlzU3RhdGVtZW50KSl9ZnVuY3Rpb24gcGkoUHIpe3JldHVybiBPJiZXaSgpLFByPWUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKSxPJiZMaSgpLFByfWZ1bmN0aW9uIGFlKFByKXtaZShQcik/KE10KGUuaWRUZXh0KFByLmxhYmVsKSksTmUoUHIuc3RhdGVtZW50KSx4dCgpKTpqaShlLnZpc2l0Tm9kZShQcixnLGUuaXNTdGF0ZW1lbnQpKX1mdW5jdGlvbiBYZShQcil7cmV0dXJuIE8mJm50KGUuaWRUZXh0KFByLmxhYmVsKSksUHI9ZS52aXNpdEVhY2hDaGlsZChQcixnLE4pLE8mJnh0KCksUHJ9ZnVuY3Rpb24gSnIoUHIpe3ZhciB4aTtEbihlLnZpc2l0Tm9kZSgoeGk9UHIuZXhwcmVzc2lvbikhPT1udWxsJiZ4aSE9PXZvaWQgMD94aTpwLmNyZWF0ZVZvaWRaZXJvKCksZyxlLmlzRXhwcmVzc2lvbiksUHIpfWZ1bmN0aW9uIHRpKFByKXtaZShQcik/KERlKCksTmUoUHIudHJ5QmxvY2spLFByLmNhdGNoQ2xhdXNlJiYoZ3IoUHIuY2F0Y2hDbGF1c2UudmFyaWFibGVEZWNsYXJhdGlvbiksTmUoUHIuY2F0Y2hDbGF1c2UuYmxvY2spKSxQci5maW5hbGx5QmxvY2smJihWcigpLE5lKFByLmZpbmFsbHlCbG9jaykpLFRyKCkpOmppKGUudmlzaXRFYWNoQ2hpbGQoUHIsZyxOKSl9ZnVuY3Rpb24gWmUoUHIpe3JldHVybiEhUHImJihQci50cmFuc2Zvcm1GbGFncyY1MjQyODgpIT09MH1mdW5jdGlvbiBTcihQcil7Zm9yKHZhciB4aT1Qci5sZW5ndGgsU3Q9MDtTdDx4aTtTdCsrKWlmKFplKFByW1N0XSkpcmV0dXJuIFN0O3JldHVybi0xfWZ1bmN0aW9uIHpyKFByLHhpKXtyZXR1cm4geGk9SihQcix4aSksUHI9PT0xP1dyKHhpKTp4aX1mdW5jdGlvbiBXcihQcil7cmV0dXJuIGUuaXNJZGVudGlmaWVyKFByKT9KZShQcik6UHJ9ZnVuY3Rpb24gSmUoUHIpe2lmKCFlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihQcikmJmllJiZpZS5oYXMoZS5pZFRleHQoUHIpKSl7dmFyIHhpPWUuZ2V0T3JpZ2luYWxOb2RlKFByKTtpZihlLmlzSWRlbnRpZmllcih4aSkmJnhpLnBhcmVudCl7dmFyIFN0PXNlLmdldFJlZmVyZW5jZWRWYWx1ZURlY2xhcmF0aW9uKHhpKTtpZihTdCl7dmFyIHBhPVJbZS5nZXRPcmlnaW5hbE5vZGVJZChTdCldO2lmKHBhKXt2YXIgZG49ZS5zZXRQYXJlbnQoZS5zZXRUZXh0UmFuZ2UocC5jbG9uZU5vZGUocGEpLHBhKSxwYS5wYXJlbnQpO3JldHVybiBlLnNldFNvdXJjZU1hcFJhbmdlKGRuLFByKSxlLnNldENvbW1lbnRSYW5nZShkbixQciksZG59fX19cmV0dXJuIFByfWZ1bmN0aW9uIHhlKFByKXtpZihlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihQcil8fGUuZ2V0RW1pdEZsYWdzKFByKSY0MDk2KXJldHVybiBQcjt2YXIgeGk9cC5jcmVhdGVUZW1wVmFyaWFibGUoVCk7cmV0dXJuIFZpKHhpLFByLFByKSx4aX1mdW5jdGlvbiB2cihQcil7dmFyIHhpPVByP3AuY3JlYXRlVW5pcXVlTmFtZShQcik6cC5jcmVhdGVUZW1wVmFyaWFibGUodm9pZCAwKTtyZXR1cm4gVCh4aSkseGl9ZnVuY3Rpb24gbXIoKXt4fHwoeD1bXSk7dmFyIFByPSQ7cmV0dXJuICQrKyx4W1ByXT0tMSxQcn1mdW5jdGlvbiBBcihQcil7ZS5EZWJ1Zy5hc3NlcnQoeCE9PXZvaWQgMCxcIk5vIGxhYmVscyB3ZXJlIGRlZmluZWQuXCIpLHhbUHJdPUE/QS5sZW5ndGg6MH1mdW5jdGlvbiBPZShQcil7dmV8fCh2ZT1bXSxoZT1bXSxlZT1bXSxGPVtdKTt2YXIgeGk9aGUubGVuZ3RoO3JldHVybiBoZVt4aV09MCxlZVt4aV09QT9BLmxlbmd0aDowLHZlW3hpXT1QcixGLnB1c2goUHIpLHhpfWZ1bmN0aW9uIG5yKCl7dmFyIFByPU1yKCk7aWYoUHI9PT12b2lkIDApcmV0dXJuIGUuRGVidWcuZmFpbChcImJlZ2luQmxvY2sgd2FzIG5ldmVyIGNhbGxlZC5cIik7dmFyIHhpPWhlLmxlbmd0aDtyZXR1cm4gaGVbeGldPTEsZWVbeGldPUE/QS5sZW5ndGg6MCx2ZVt4aV09UHIsRi5wb3AoKSxQcn1mdW5jdGlvbiBNcigpe3JldHVybiBlLmxhc3RPclVuZGVmaW5lZChGKX1mdW5jdGlvbiBQZSgpe3ZhciBQcj1NcigpO3JldHVybiBQciYmUHIua2luZH1mdW5jdGlvbiBVZShQcil7dmFyIHhpPW1yKCksU3Q9bXIoKTtBcih4aSksT2Uoe2tpbmQ6MSxleHByZXNzaW9uOlByLHN0YXJ0TGFiZWw6eGksZW5kTGFiZWw6U3R9KX1mdW5jdGlvbiBmcigpe2UuRGVidWcuYXNzZXJ0KFBlKCk9PT0xKTt2YXIgUHI9bnIoKTtBcihQci5lbmRMYWJlbCl9ZnVuY3Rpb24gRGUoKXt2YXIgUHI9bXIoKSx4aT1tcigpO3JldHVybiBBcihQciksT2Uoe2tpbmQ6MCxzdGF0ZTowLHN0YXJ0TGFiZWw6UHIsZW5kTGFiZWw6eGl9KSxPaSgpLHhpfWZ1bmN0aW9uIGdyKFByKXtlLkRlYnVnLmFzc2VydChQZSgpPT09MCk7dmFyIHhpO2lmKGUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKFByLm5hbWUpKXhpPVByLm5hbWUsVChQci5uYW1lKTtlbHNle3ZhciBTdD1lLmlkVGV4dChQci5uYW1lKTt4aT12cihTdCksaWV8fChpZT1uZXcgZS5NYXAsUj1bXSxOLmVuYWJsZVN1YnN0aXR1dGlvbig3OSkpLGllLnNldChTdCwhMCksUltlLmdldE9yaWdpbmFsTm9kZUlkKFByKV09eGl9dmFyIHBhPU1yKCk7ZS5EZWJ1Zy5hc3NlcnQocGEuc3RhdGU8MSk7dmFyIGRuPXBhLmVuZExhYmVsO2F0KGRuKTt2YXIgSm49bXIoKTtBcihKbikscGEuc3RhdGU9MSxwYS5jYXRjaFZhcmlhYmxlPXhpLHBhLmNhdGNoTGFiZWw9Sm4sVmkoeGkscC5jcmVhdGVDYWxsRXhwcmVzc2lvbihwLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihMLFwic2VudFwiKSx2b2lkIDAsW10pKSxPaSgpfWZ1bmN0aW9uIFZyKCl7ZS5EZWJ1Zy5hc3NlcnQoUGUoKT09PTApO3ZhciBQcj1NcigpO2UuRGVidWcuYXNzZXJ0KFByLnN0YXRlPDIpO3ZhciB4aT1Qci5lbmRMYWJlbDthdCh4aSk7dmFyIFN0PW1yKCk7QXIoU3QpLFByLnN0YXRlPTIsUHIuZmluYWxseUxhYmVsPVN0fWZ1bmN0aW9uIFRyKCl7ZS5EZWJ1Zy5hc3NlcnQoUGUoKT09PTApO3ZhciBQcj1ucigpLHhpPVByLnN0YXRlO3hpPDI/YXQoUHIuZW5kTGFiZWwpOmthKCksQXIoUHIuZW5kTGFiZWwpLE9pKCksUHIuc3RhdGU9M31mdW5jdGlvbiB2aSgpe09lKHtraW5kOjMsaXNTY3JpcHQ6ITAsYnJlYWtMYWJlbDotMSxjb250aW51ZUxhYmVsOi0xfSl9ZnVuY3Rpb24gVWkoUHIpe3ZhciB4aT1tcigpO3JldHVybiBPZSh7a2luZDozLGlzU2NyaXB0OiExLGJyZWFrTGFiZWw6eGksY29udGludWVMYWJlbDpQcn0pLHhpfWZ1bmN0aW9uIFlpKCl7ZS5EZWJ1Zy5hc3NlcnQoUGUoKT09PTMpO3ZhciBQcj1ucigpLHhpPVByLmJyZWFrTGFiZWw7UHIuaXNTY3JpcHR8fEFyKHhpKX1mdW5jdGlvbiBXaSgpe09lKHtraW5kOjIsaXNTY3JpcHQ6ITAsYnJlYWtMYWJlbDotMX0pfWZ1bmN0aW9uIGN0KCl7dmFyIFByPW1yKCk7cmV0dXJuIE9lKHtraW5kOjIsaXNTY3JpcHQ6ITEsYnJlYWtMYWJlbDpQcn0pLFByfWZ1bmN0aW9uIExpKCl7ZS5EZWJ1Zy5hc3NlcnQoUGUoKT09PTIpO3ZhciBQcj1ucigpLHhpPVByLmJyZWFrTGFiZWw7UHIuaXNTY3JpcHR8fEFyKHhpKX1mdW5jdGlvbiBudChQcil7T2Uoe2tpbmQ6NCxpc1NjcmlwdDohMCxsYWJlbFRleHQ6UHIsYnJlYWtMYWJlbDotMX0pfWZ1bmN0aW9uIE10KFByKXt2YXIgeGk9bXIoKTtPZSh7a2luZDo0LGlzU2NyaXB0OiExLGxhYmVsVGV4dDpQcixicmVha0xhYmVsOnhpfSl9ZnVuY3Rpb24geHQoKXtlLkRlYnVnLmFzc2VydChQZSgpPT09NCk7dmFyIFByPW5yKCk7UHIuaXNTY3JpcHR8fEFyKFByLmJyZWFrTGFiZWwpfWZ1bmN0aW9uIHV0KFByKXtyZXR1cm4gUHIua2luZD09PTJ8fFByLmtpbmQ9PT0zfWZ1bmN0aW9uIER0KFByKXtyZXR1cm4gUHIua2luZD09PTR9ZnVuY3Rpb24gUnQoUHIpe3JldHVybiBQci5raW5kPT09M31mdW5jdGlvbiBJaShQcix4aSl7Zm9yKHZhciBTdD14aTtTdD49MDtTdC0tKXt2YXIgcGE9RltTdF07aWYoRHQocGEpKXtpZihwYS5sYWJlbFRleHQ9PT1QcilyZXR1cm4hMH1lbHNlIGJyZWFrfXJldHVybiExfWZ1bmN0aW9uIEtpKFByKXtpZihGKWlmKFByKWZvcih2YXIgeGk9Ri5sZW5ndGgtMTt4aT49MDt4aS0tKXt2YXIgU3Q9Rlt4aV07aWYoRHQoU3QpJiZTdC5sYWJlbFRleHQ9PT1QcilyZXR1cm4gU3QuYnJlYWtMYWJlbDtpZih1dChTdCkmJklpKFByLHhpLTEpKXJldHVybiBTdC5icmVha0xhYmVsfWVsc2UgZm9yKHZhciB4aT1GLmxlbmd0aC0xO3hpPj0wO3hpLS0pe3ZhciBTdD1GW3hpXTtpZih1dChTdCkpcmV0dXJuIFN0LmJyZWFrTGFiZWx9cmV0dXJuIDB9ZnVuY3Rpb24gRmkoUHIpe2lmKEYpaWYoUHIpZm9yKHZhciB4aT1GLmxlbmd0aC0xO3hpPj0wO3hpLS0pe3ZhciBTdD1GW3hpXTtpZihSdChTdCkmJklpKFByLHhpLTEpKXJldHVybiBTdC5jb250aW51ZUxhYmVsfWVsc2UgZm9yKHZhciB4aT1GLmxlbmd0aC0xO3hpPj0wO3hpLS0pe3ZhciBTdD1GW3hpXTtpZihSdChTdCkpcmV0dXJuIFN0LmNvbnRpbnVlTGFiZWx9cmV0dXJuIDB9ZnVuY3Rpb24gdWkoUHIpe2lmKFByIT09dm9pZCAwJiZQcj4wKXtYPT09dm9pZCAwJiYoWD1bXSk7dmFyIHhpPXAuY3JlYXRlTnVtZXJpY0xpdGVyYWwoLTEpO3JldHVybiBYW1ByXT09PXZvaWQgMD9YW1ByXT1beGldOlhbUHJdLnB1c2goeGkpLHhpfXJldHVybiBwLmNyZWF0ZU9taXR0ZWRFeHByZXNzaW9uKCl9ZnVuY3Rpb24gQnQoUHIpe3ZhciB4aT1wLmNyZWF0ZU51bWVyaWNMaXRlcmFsKFByKTtyZXR1cm4gZS5hZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQoeGksMyxRKFByKSkseGl9ZnVuY3Rpb24gd3QoUHIseGkpe3JldHVybiBlLkRlYnVnLmFzc2VydExlc3NUaGFuKDAsUHIsXCJJbnZhbGlkIGxhYmVsXCIpLGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlUmV0dXJuU3RhdGVtZW50KHAuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihbQnQoMyksdWkoUHIpXSkpLHhpKX1mdW5jdGlvbiBuYShQcix4aSl7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlUmV0dXJuU3RhdGVtZW50KHAuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihQcj9bQnQoMiksUHJdOltCdCgyKV0pKSx4aSl9ZnVuY3Rpb24gQWkoUHIpe3JldHVybiBlLnNldFRleHRSYW5nZShwLmNyZWF0ZUNhbGxFeHByZXNzaW9uKHAuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEwsXCJzZW50XCIpLHZvaWQgMCxbXSksUHIpfWZ1bmN0aW9uIE9pKCl7QmEoMCl9ZnVuY3Rpb24gamkoUHIpe1ByP0JhKDEsW1ByXSk6T2koKX1mdW5jdGlvbiBWaShQcix4aSxTdCl7QmEoMixbUHIseGldLFN0KX1mdW5jdGlvbiBhdChQcix4aSl7QmEoMyxbUHJdLHhpKX1mdW5jdGlvbiBBdChQcix4aSxTdCl7QmEoNCxbUHIseGldLFN0KX1mdW5jdGlvbiBiYShQcix4aSxTdCl7QmEoNSxbUHIseGldLFN0KX1mdW5jdGlvbiAkYShQcix4aSl7QmEoNyxbUHJdLHhpKX1mdW5jdGlvbiBRYShQcix4aSl7QmEoNixbUHJdLHhpKX1mdW5jdGlvbiBhaShQcix4aSl7QmEoOCxbUHJdLHhpKX1mdW5jdGlvbiBEbihQcix4aSl7QmEoOSxbUHJdLHhpKX1mdW5jdGlvbiBrYSgpe0JhKDEwKX1mdW5jdGlvbiBCYShQcix4aSxTdCl7QT09PXZvaWQgMCYmKEE9W10seT1bXSxWPVtdKSx4PT09dm9pZCAwJiZBcihtcigpKTt2YXIgcGE9QS5sZW5ndGg7QVtwYV09UHIseVtwYV09eGksVltwYV09U3R9ZnVuY3Rpb24gcG4oKXtQPTAsaz0wLFk9dm9pZCAwLFU9ITEsaj0hMSxIPXZvaWQgMCxJPXZvaWQgMCxsPXZvaWQgMCxkPXZvaWQgMCxEPXZvaWQgMDt2YXIgUHI9Q24oKTtyZXR1cm4gbSgpLmNyZWF0ZUdlbmVyYXRvckhlbHBlcihlLnNldEVtaXRGbGFncyhwLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsW3AuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsTCldLHZvaWQgMCxwLmNyZWF0ZUJsb2NrKFByLFByLmxlbmd0aD4wKSksNTI0Mjg4KSl9ZnVuY3Rpb24gQ24oKXtpZihBKXtmb3IodmFyIFByPTA7UHI8QS5sZW5ndGg7UHIrKylEYShQcik7a24oQS5sZW5ndGgpfWVsc2Uga24oMCk7aWYoSCl7dmFyIHhpPXAuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEwsXCJsYWJlbFwiKSxTdD1wLmNyZWF0ZVN3aXRjaFN0YXRlbWVudCh4aSxwLmNyZWF0ZUNhc2VCbG9jayhIKSk7cmV0dXJuW2Uuc3RhcnRPbk5ld0xpbmUoU3QpXX1yZXR1cm4gSXx8W119ZnVuY3Rpb24gQmkoKXshSXx8KEtuKCFVKSxVPSExLGo9ITEsaysrKX1mdW5jdGlvbiBrbihQcil7eG4oUHIpJiYoUG4oUHIpLEQ9dm9pZCAwLFduKHZvaWQgMCx2b2lkIDApKSxJJiZIJiZLbighMSksZW8oKX1mdW5jdGlvbiB4bihQcil7aWYoIWopcmV0dXJuITA7aWYoIXh8fCFYKXJldHVybiExO2Zvcih2YXIgeGk9MDt4aTx4Lmxlbmd0aDt4aSsrKWlmKHhbeGldPT09UHImJlhbeGldKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEtuKFByKXtpZihIfHwoSD1bXSksSSl7aWYoRClmb3IodmFyIHhpPUQubGVuZ3RoLTE7eGk+PTA7eGktLSl7dmFyIFN0PURbeGldO0k9W3AuY3JlYXRlV2l0aFN0YXRlbWVudChTdC5leHByZXNzaW9uLHAuY3JlYXRlQmxvY2soSSkpXX1pZihkKXt2YXIgcGE9ZC5zdGFydExhYmVsLGRuPWQuY2F0Y2hMYWJlbCxKbj1kLmZpbmFsbHlMYWJlbCxRZT1kLmVuZExhYmVsO0kudW5zaGlmdChwLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQocC5jcmVhdGVDYWxsRXhwcmVzc2lvbihwLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihwLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihMLFwidHJ5c1wiKSxcInB1c2hcIiksdm9pZCAwLFtwLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oW3VpKHBhKSx1aShkbiksdWkoSm4pLHVpKFFlKV0pXSkpKSxkPXZvaWQgMH1QciYmSS5wdXNoKHAuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChwLmNyZWF0ZUFzc2lnbm1lbnQocC5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oTCxcImxhYmVsXCIpLHAuY3JlYXRlTnVtZXJpY0xpdGVyYWwoaysxKSkpKX1ILnB1c2gocC5jcmVhdGVDYXNlQ2xhdXNlKHAuY3JlYXRlTnVtZXJpY0xpdGVyYWwoayksSXx8W10pKSxJPXZvaWQgMH1mdW5jdGlvbiBQbihQcil7aWYoISF4KWZvcih2YXIgeGk9MDt4aTx4Lmxlbmd0aDt4aSsrKXhbeGldPT09UHImJihCaSgpLFk9PT12b2lkIDAmJihZPVtdKSxZW2tdPT09dm9pZCAwP1lba109W3hpXTpZW2tdLnB1c2goeGkpKX1mdW5jdGlvbiBlbygpe2lmKFghPT12b2lkIDAmJlkhPT12b2lkIDApZm9yKHZhciBQcj0wO1ByPFkubGVuZ3RoO1ByKyspe3ZhciB4aT1ZW1ByXTtpZih4aSE9PXZvaWQgMClmb3IodmFyIFN0PTAscGE9eGk7U3Q8cGEubGVuZ3RoO1N0Kyspe3ZhciBkbj1wYVtTdF0sSm49WFtkbl07aWYoSm4hPT12b2lkIDApZm9yKHZhciBRZT0wLEdyPUpuO1FlPEdyLmxlbmd0aDtRZSsrKXt2YXIgUz1HcltRZV07Uy50ZXh0PVN0cmluZyhQcil9fX19ZnVuY3Rpb24gUm4oUHIpe2lmKHZlKWZvcig7UDxoZS5sZW5ndGgmJmVlW1BdPD1QcjtQKyspe3ZhciB4aT12ZVtQXSxTdD1oZVtQXTtzd2l0Y2goeGkua2luZCl7Y2FzZSAwOlN0PT09MD8obHx8KGw9W10pLEl8fChJPVtdKSxsLnB1c2goZCksZD14aSk6U3Q9PT0xJiYoZD1sLnBvcCgpKTticmVhaztjYXNlIDE6U3Q9PT0wPyhEfHwoRD1bXSksRC5wdXNoKHhpKSk6U3Q9PT0xJiZELnBvcCgpO2JyZWFrfX19ZnVuY3Rpb24gRGEoUHIpe2lmKFBuKFByKSxSbihQciksIVUpe1U9ITEsaj0hMTt2YXIgeGk9QVtQcl07aWYoeGkhPT0wKXtpZih4aT09PTEwKXJldHVybiAkbygpO3ZhciBTdD15W1ByXTtpZih4aT09PTEpcmV0dXJuIGJvKFN0WzBdKTt2YXIgcGE9VltQcl07c3dpdGNoKHhpKXtjYXNlIDI6cmV0dXJuIFJvKFN0WzBdLFN0WzFdLHBhKTtjYXNlIDM6cmV0dXJuIHRvKFN0WzBdLHBhKTtjYXNlIDQ6cmV0dXJuIENvKFN0WzBdLFN0WzFdLHBhKTtjYXNlIDU6cmV0dXJuIEtvKFN0WzBdLFN0WzFdLHBhKTtjYXNlIDY6cmV0dXJuIE9vKFN0WzBdLHBhKTtjYXNlIDc6cmV0dXJuIG5vKFN0WzBdLHBhKTtjYXNlIDg6cmV0dXJuIFduKFN0WzBdLHBhKTtjYXNlIDk6cmV0dXJuIEVuKFN0WzBdLHBhKX19fX1mdW5jdGlvbiBibyhQcil7UHImJihJP0kucHVzaChQcik6ST1bUHJdKX1mdW5jdGlvbiBSbyhQcix4aSxTdCl7Ym8oZS5zZXRUZXh0UmFuZ2UocC5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHAuY3JlYXRlQXNzaWdubWVudChQcix4aSkpLFN0KSl9ZnVuY3Rpb24gRW4oUHIseGkpe1U9ITAsaj0hMCxibyhlLnNldFRleHRSYW5nZShwLmNyZWF0ZVRocm93U3RhdGVtZW50KFByKSx4aSkpfWZ1bmN0aW9uIFduKFByLHhpKXtVPSEwLGo9ITAsYm8oZS5zZXRFbWl0RmxhZ3MoZS5zZXRUZXh0UmFuZ2UocC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQocC5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKFByP1tCdCgyKSxQcl06W0J0KDIpXSkpLHhpKSwzODQpKX1mdW5jdGlvbiB0byhQcix4aSl7VT0hMCxibyhlLnNldEVtaXRGbGFncyhlLnNldFRleHRSYW5nZShwLmNyZWF0ZVJldHVyblN0YXRlbWVudChwLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oW0J0KDMpLHVpKFByKV0pKSx4aSksMzg0KSl9ZnVuY3Rpb24gQ28oUHIseGksU3Qpe2JvKGUuc2V0RW1pdEZsYWdzKHAuY3JlYXRlSWZTdGF0ZW1lbnQoeGksZS5zZXRFbWl0RmxhZ3MoZS5zZXRUZXh0UmFuZ2UocC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQocC5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKFtCdCgzKSx1aShQcildKSksU3QpLDM4NCkpLDEpKX1mdW5jdGlvbiBLbyhQcix4aSxTdCl7Ym8oZS5zZXRFbWl0RmxhZ3MocC5jcmVhdGVJZlN0YXRlbWVudChwLmNyZWF0ZUxvZ2ljYWxOb3QoeGkpLGUuc2V0RW1pdEZsYWdzKGUuc2V0VGV4dFJhbmdlKHAuY3JlYXRlUmV0dXJuU3RhdGVtZW50KHAuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihbQnQoMyksdWkoUHIpXSkpLFN0KSwzODQpKSwxKSl9ZnVuY3Rpb24gT28oUHIseGkpe1U9ITAsYm8oZS5zZXRFbWl0RmxhZ3MoZS5zZXRUZXh0UmFuZ2UocC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQocC5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKFByP1tCdCg0KSxQcl06W0J0KDQpXSkpLHhpKSwzODQpKX1mdW5jdGlvbiBubyhQcix4aSl7VT0hMCxibyhlLnNldEVtaXRGbGFncyhlLnNldFRleHRSYW5nZShwLmNyZWF0ZVJldHVyblN0YXRlbWVudChwLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oW0J0KDUpLFByXSkpLHhpKSwzODQpKX1mdW5jdGlvbiAkbygpe1U9ITAsYm8ocC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQocC5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKFtCdCg3KV0pKSl9fWUudHJhbnNmb3JtR2VuZXJhdG9ycz1sZX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEodyl7ZnVuY3Rpb24gQihwZSl7c3dpdGNoKHBlKXtjYXNlIGUuTW9kdWxlS2luZC5BTUQ6cmV0dXJuIEY7Y2FzZSBlLk1vZHVsZUtpbmQuVU1EOnJldHVybiB4O2RlZmF1bHQ6cmV0dXJuIGhlfX12YXIgRT13LmZhY3RvcnksUT13LmdldEVtaXRIZWxwZXJGYWN0b3J5LGxlPXcuc3RhcnRMZXhpY2FsRW52aXJvbm1lbnQsTj13LmVuZExleGljYWxFbnZpcm9ubWVudCxwPXcuaG9pc3RWYXJpYWJsZURlY2xhcmF0aW9uLG09dy5nZXRDb21waWxlck9wdGlvbnMoKSxHPXcuZ2V0RW1pdFJlc29sdmVyKCksb2U9dy5nZXRFbWl0SG9zdCgpLGY9ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KG0pLFQ9ZS5nZXRFbWl0TW9kdWxlS2luZChtKSxLPXcub25TdWJzdGl0dXRlTm9kZSxiPXcub25FbWl0Tm9kZTt3Lm9uU3Vic3RpdHV0ZU5vZGU9R2Usdy5vbkVtaXROb2RlPWJlLHcuZW5hYmxlU3Vic3RpdHV0aW9uKDIwOCksdy5lbmFibGVTdWJzdGl0dXRpb24oMjEwKSx3LmVuYWJsZVN1YnN0aXR1dGlvbig3OSksdy5lbmFibGVTdWJzdGl0dXRpb24oMjIxKSx3LmVuYWJsZVN1YnN0aXR1dGlvbigyOTcpLHcuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigzMDUpO3ZhciBzZT1bXSxKPVtdLGllLFIscT1bXSxPO3JldHVybiBlLmNoYWluQnVuZGxlKHcsdmUpO2Z1bmN0aW9uIHZlKHBlKXtpZihwZS5pc0RlY2xhcmF0aW9uRmlsZXx8IShlLmlzRWZmZWN0aXZlRXh0ZXJuYWxNb2R1bGUocGUsbSl8fHBlLnRyYW5zZm9ybUZsYWdzJjQxOTQzMDR8fGUuaXNKc29uU291cmNlRmlsZShwZSkmJmUuaGFzSnNvbk1vZHVsZUVtaXRFbmFibGVkKG0pJiZlLm91dEZpbGUobSkpKXJldHVybiBwZTtpZT1wZSxSPWUuY29sbGVjdEV4dGVybmFsTW9kdWxlSW5mbyh3LHBlLEcsbSksc2VbZS5nZXRPcmlnaW5hbE5vZGVJZChwZSldPVI7dmFyIG9yPUIoVCkscXI9b3IocGUpO3JldHVybiBpZT12b2lkIDAsUj12b2lkIDAsTz0hMSxxcn1mdW5jdGlvbiBlZSgpe3JldHVybiEhKCFSLmV4cG9ydEVxdWFscyYmZS5pc0V4dGVybmFsTW9kdWxlKGllKSl9ZnVuY3Rpb24gaGUocGUpe2xlKCk7dmFyIG9yPVtdLHFyPWUuZ2V0U3RyaWN0T3B0aW9uVmFsdWUobSxcImFsd2F5c1N0cmljdFwiKXx8IW0ubm9JbXBsaWNpdFVzZVN0cmljdCYmZS5pc0V4dGVybmFsTW9kdWxlKGllKSxzaT1FLmNvcHlQcm9sb2d1ZShwZS5zdGF0ZW1lbnRzLG9yLHFyJiYhZS5pc0pzb25Tb3VyY2VGaWxlKHBlKSxWKTtpZihlZSgpJiZlLmFwcGVuZChvcixFcigpKSxlLmxlbmd0aChSLmV4cG9ydGVkTmFtZXMpKWZvcih2YXIgRGk9NTAsd2k9MDt3aTxSLmV4cG9ydGVkTmFtZXMubGVuZ3RoO3dpKz1EaSllLmFwcGVuZChvcixFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZS5yZWR1Y2VMZWZ0KFIuZXhwb3J0ZWROYW1lcy5zbGljZSh3aSx3aStEaSksZnVuY3Rpb24oZXQsR2kpe3JldHVybiBFLmNyZWF0ZUFzc2lnbm1lbnQoRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwiZXhwb3J0c1wiKSxFLmNyZWF0ZUlkZW50aWZpZXIoZS5pZFRleHQoR2kpKSksZXQpfSxFLmNyZWF0ZVZvaWRaZXJvKCkpKSk7ZS5hcHBlbmQob3IsZS52aXNpdE5vZGUoUi5leHRlcm5hbEhlbHBlcnNJbXBvcnREZWNsYXJhdGlvbixWLGUuaXNTdGF0ZW1lbnQpKSxlLmFkZFJhbmdlKG9yLGUudmlzaXROb2RlcyhwZS5zdGF0ZW1lbnRzLFYsZS5pc1N0YXRlbWVudCxzaSkpLHkob3IsITEpLGUuaW5zZXJ0U3RhdGVtZW50c0FmdGVyU3RhbmRhcmRQcm9sb2d1ZShvcixOKCkpO3ZhciBYaT1FLnVwZGF0ZVNvdXJjZUZpbGUocGUsZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVOb2RlQXJyYXkob3IpLHBlLnN0YXRlbWVudHMpKTtyZXR1cm4gZS5hZGRFbWl0SGVscGVycyhYaSx3LnJlYWRFbWl0SGVscGVycygpKSxYaX1mdW5jdGlvbiBGKHBlKXt2YXIgb3I9RS5jcmVhdGVJZGVudGlmaWVyKFwiZGVmaW5lXCIpLHFyPWUudHJ5R2V0TW9kdWxlTmFtZUZyb21GaWxlKEUscGUsb2UsbSksc2k9ZS5pc0pzb25Tb3VyY2VGaWxlKHBlKSYmcGUsRGk9WChwZSwhMCksd2k9RGkuYWxpYXNlZE1vZHVsZU5hbWVzLFhpPURpLnVuYWxpYXNlZE1vZHVsZU5hbWVzLGV0PURpLmltcG9ydEFsaWFzTmFtZXMsR2k9RS51cGRhdGVTb3VyY2VGaWxlKHBlLGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlTm9kZUFycmF5KFtFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoRS5jcmVhdGVDYWxsRXhwcmVzc2lvbihvcix2b2lkIDAsVmUoVmUoW10scXI/W3FyXTpbXSwhMCksW0UuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihzaT9lLmVtcHR5QXJyYXk6VmUoVmUoW0UuY3JlYXRlU3RyaW5nTGl0ZXJhbChcInJlcXVpcmVcIiksRS5jcmVhdGVTdHJpbmdMaXRlcmFsKFwiZXhwb3J0c1wiKV0sd2ksITApLFhpLCEwKSksc2k/c2kuc3RhdGVtZW50cy5sZW5ndGg/c2kuc3RhdGVtZW50c1swXS5leHByZXNzaW9uOkUuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oKTpFLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsVmUoW0UuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJyZXF1aXJlXCIpLEUuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJleHBvcnRzXCIpXSxldCwhMCksdm9pZCAwLEEocGUpKV0sITEpKSldKSxwZS5zdGF0ZW1lbnRzKSk7cmV0dXJuIGUuYWRkRW1pdEhlbHBlcnMoR2ksdy5yZWFkRW1pdEhlbHBlcnMoKSksR2l9ZnVuY3Rpb24geChwZSl7dmFyIG9yPVgocGUsITEpLHFyPW9yLmFsaWFzZWRNb2R1bGVOYW1lcyxzaT1vci51bmFsaWFzZWRNb2R1bGVOYW1lcyxEaT1vci5pbXBvcnRBbGlhc05hbWVzLHdpPWUudHJ5R2V0TW9kdWxlTmFtZUZyb21GaWxlKEUscGUsb2UsbSksWGk9RS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFtFLmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFwiZmFjdG9yeVwiKV0sdm9pZCAwLGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlQmxvY2soW0UuY3JlYXRlSWZTdGF0ZW1lbnQoRS5jcmVhdGVMb2dpY2FsQW5kKEUuY3JlYXRlVHlwZUNoZWNrKEUuY3JlYXRlSWRlbnRpZmllcihcIm1vZHVsZVwiKSxcIm9iamVjdFwiKSxFLmNyZWF0ZVR5cGVDaGVjayhFLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihFLmNyZWF0ZUlkZW50aWZpZXIoXCJtb2R1bGVcIiksXCJleHBvcnRzXCIpLFwib2JqZWN0XCIpKSxFLmNyZWF0ZUJsb2NrKFtFLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxbRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKFwidlwiLHZvaWQgMCx2b2lkIDAsRS5jcmVhdGVDYWxsRXhwcmVzc2lvbihFLmNyZWF0ZUlkZW50aWZpZXIoXCJmYWN0b3J5XCIpLHZvaWQgMCxbRS5jcmVhdGVJZGVudGlmaWVyKFwicmVxdWlyZVwiKSxFLmNyZWF0ZUlkZW50aWZpZXIoXCJleHBvcnRzXCIpXSkpXSksZS5zZXRFbWl0RmxhZ3MoRS5jcmVhdGVJZlN0YXRlbWVudChFLmNyZWF0ZVN0cmljdEluZXF1YWxpdHkoRS5jcmVhdGVJZGVudGlmaWVyKFwidlwiKSxFLmNyZWF0ZUlkZW50aWZpZXIoXCJ1bmRlZmluZWRcIikpLEUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChFLmNyZWF0ZUFzc2lnbm1lbnQoRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwibW9kdWxlXCIpLFwiZXhwb3J0c1wiKSxFLmNyZWF0ZUlkZW50aWZpZXIoXCJ2XCIpKSkpLDEpXSksRS5jcmVhdGVJZlN0YXRlbWVudChFLmNyZWF0ZUxvZ2ljYWxBbmQoRS5jcmVhdGVUeXBlQ2hlY2soRS5jcmVhdGVJZGVudGlmaWVyKFwiZGVmaW5lXCIpLFwiZnVuY3Rpb25cIiksRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwiZGVmaW5lXCIpLFwiYW1kXCIpKSxFLmNyZWF0ZUJsb2NrKFtFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoRS5jcmVhdGVDYWxsRXhwcmVzc2lvbihFLmNyZWF0ZUlkZW50aWZpZXIoXCJkZWZpbmVcIiksdm9pZCAwLFZlKFZlKFtdLHdpP1t3aV06W10sITApLFtFLmNyZWF0ZUFycmF5TGl0ZXJhbEV4cHJlc3Npb24oVmUoVmUoW0UuY3JlYXRlU3RyaW5nTGl0ZXJhbChcInJlcXVpcmVcIiksRS5jcmVhdGVTdHJpbmdMaXRlcmFsKFwiZXhwb3J0c1wiKV0scXIsITApLHNpLCEwKSksRS5jcmVhdGVJZGVudGlmaWVyKFwiZmFjdG9yeVwiKV0sITEpKSldKSkpXSwhMCksdm9pZCAwKSksZXQ9RS51cGRhdGVTb3VyY2VGaWxlKHBlLGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlTm9kZUFycmF5KFtFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoRS5jcmVhdGVDYWxsRXhwcmVzc2lvbihYaSx2b2lkIDAsW0UuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCxWZShbRS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxcInJlcXVpcmVcIiksRS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxcImV4cG9ydHNcIildLERpLCEwKSx2b2lkIDAsQShwZSkpXSkpXSkscGUuc3RhdGVtZW50cykpO3JldHVybiBlLmFkZEVtaXRIZWxwZXJzKGV0LHcucmVhZEVtaXRIZWxwZXJzKCkpLGV0fWZ1bmN0aW9uIFgocGUsb3Ipe2Zvcih2YXIgcXI9W10sc2k9W10sRGk9W10sd2k9MCxYaT1wZS5hbWREZXBlbmRlbmNpZXM7d2k8WGkubGVuZ3RoO3dpKyspe3ZhciBldD1YaVt3aV07ZXQubmFtZT8ocXIucHVzaChFLmNyZWF0ZVN0cmluZ0xpdGVyYWwoZXQucGF0aCkpLERpLnB1c2goRS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxldC5uYW1lKSkpOnNpLnB1c2goRS5jcmVhdGVTdHJpbmdMaXRlcmFsKGV0LnBhdGgpKX1mb3IodmFyIEdpPTAsV3Q9Ui5leHRlcm5hbEltcG9ydHM7R2k8V3QubGVuZ3RoO0dpKyspe3ZhciBadD1XdFtHaV0sX3I9ZS5nZXRFeHRlcm5hbE1vZHVsZU5hbWVMaXRlcmFsKEUsWnQsaWUsb2UsRyxtKSxwaT1lLmdldExvY2FsTmFtZUZvckV4dGVybmFsSW1wb3J0KEUsWnQsaWUpO19yJiYob3ImJnBpPyhlLnNldEVtaXRGbGFncyhwaSw0KSxxci5wdXNoKF9yKSxEaS5wdXNoKEUuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAscGkpKSk6c2kucHVzaChfcikpfXJldHVybnthbGlhc2VkTW9kdWxlTmFtZXM6cXIsdW5hbGlhc2VkTW9kdWxlTmFtZXM6c2ksaW1wb3J0QWxpYXNOYW1lczpEaX19ZnVuY3Rpb24gJChwZSl7aWYoIShlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24ocGUpfHxlLmlzRXhwb3J0RGVjbGFyYXRpb24ocGUpfHwhZS5nZXRFeHRlcm5hbE1vZHVsZU5hbWVMaXRlcmFsKEUscGUsaWUsb2UsRyxtKSkpe3ZhciBvcj1lLmdldExvY2FsTmFtZUZvckV4dGVybmFsSW1wb3J0KEUscGUsaWUpLHFyPVdlKHBlLG9yKTtpZihxciE9PW9yKXJldHVybiBFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoRS5jcmVhdGVBc3NpZ25tZW50KG9yLHFyKSl9fWZ1bmN0aW9uIEEocGUpe2xlKCk7dmFyIG9yPVtdLHFyPUUuY29weVByb2xvZ3VlKHBlLnN0YXRlbWVudHMsb3IsIW0ubm9JbXBsaWNpdFVzZVN0cmljdCxWKTtlZSgpJiZlLmFwcGVuZChvcixFcigpKSxlLmxlbmd0aChSLmV4cG9ydGVkTmFtZXMpJiZlLmFwcGVuZChvcixFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZS5yZWR1Y2VMZWZ0KFIuZXhwb3J0ZWROYW1lcyxmdW5jdGlvbihEaSx3aSl7cmV0dXJuIEUuY3JlYXRlQXNzaWdubWVudChFLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihFLmNyZWF0ZUlkZW50aWZpZXIoXCJleHBvcnRzXCIpLEUuY3JlYXRlSWRlbnRpZmllcihlLmlkVGV4dCh3aSkpKSxEaSl9LEUuY3JlYXRlVm9pZFplcm8oKSkpKSxlLmFwcGVuZChvcixlLnZpc2l0Tm9kZShSLmV4dGVybmFsSGVscGVyc0ltcG9ydERlY2xhcmF0aW9uLFYsZS5pc1N0YXRlbWVudCkpLFQ9PT1lLk1vZHVsZUtpbmQuQU1EJiZlLmFkZFJhbmdlKG9yLGUubWFwRGVmaW5lZChSLmV4dGVybmFsSW1wb3J0cywkKSksZS5hZGRSYW5nZShvcixlLnZpc2l0Tm9kZXMocGUuc3RhdGVtZW50cyxWLGUuaXNTdGF0ZW1lbnQscXIpKSx5KG9yLCEwKSxlLmluc2VydFN0YXRlbWVudHNBZnRlclN0YW5kYXJkUHJvbG9ndWUob3IsTigpKTt2YXIgc2k9RS5jcmVhdGVCbG9jayhvciwhMCk7cmV0dXJuIE8mJmUuYWRkRW1pdEhlbHBlcihzaSxDKSxzaX1mdW5jdGlvbiB5KHBlLG9yKXtpZihSLmV4cG9ydEVxdWFscyl7dmFyIHFyPWUudmlzaXROb2RlKFIuZXhwb3J0RXF1YWxzLmV4cHJlc3Npb24sUCk7aWYocXIpaWYob3Ipe3ZhciBzaT1FLmNyZWF0ZVJldHVyblN0YXRlbWVudChxcik7ZS5zZXRUZXh0UmFuZ2Uoc2ksUi5leHBvcnRFcXVhbHMpLGUuc2V0RW1pdEZsYWdzKHNpLDE5MjApLHBlLnB1c2goc2kpfWVsc2V7dmFyIHNpPUUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChFLmNyZWF0ZUFzc2lnbm1lbnQoRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwibW9kdWxlXCIpLFwiZXhwb3J0c1wiKSxxcikpO2Uuc2V0VGV4dFJhbmdlKHNpLFIuZXhwb3J0RXF1YWxzKSxlLnNldEVtaXRGbGFncyhzaSwxNTM2KSxwZS5wdXNoKHNpKX19fWZ1bmN0aW9uIFYocGUpe3N3aXRjaChwZS5raW5kKXtjYXNlIDI2NjpyZXR1cm4gRmUocGUpO2Nhc2UgMjY1OnJldHVybiBCZShwZSk7Y2FzZSAyNzI6cmV0dXJuIGdlKHBlKTtjYXNlIDI3MTpyZXR1cm4gUmUocGUpO2Nhc2UgMjM3OnJldHVybiBIZShwZSk7Y2FzZSAyNTY6cmV0dXJuIHplKHBlKTtjYXNlIDI1NzpyZXR1cm4gRWUocGUpO2Nhc2UgMzUyOnJldHVybiBfZShwZSk7Y2FzZSAzNTM6cmV0dXJuIGRlKHBlKTtkZWZhdWx0OnJldHVybiBQKHBlKX19ZnVuY3Rpb24gTChwZSxvcil7aWYoIShwZS50cmFuc2Zvcm1GbGFncyY3MTMwNzI2NCkpcmV0dXJuIHBlO3N3aXRjaChwZS5raW5kKXtjYXNlIDI0MjpyZXR1cm4gaihwZSk7Y2FzZSAyMzg6cmV0dXJuIEgocGUpO2Nhc2UgMjEyOnJldHVybiBJKHBlLG9yKTtjYXNlIDM1MDpyZXR1cm4gbChwZSxvcik7Y2FzZSAyMDg6aWYoZS5pc0ltcG9ydENhbGwocGUpJiZpZS5pbXBsaWVkTm9kZUZvcm1hdD09PXZvaWQgMClyZXR1cm4gRChwZSk7YnJlYWs7Y2FzZSAyMjE6aWYoZS5pc0Rlc3RydWN0dXJpbmdBc3NpZ25tZW50KHBlKSlyZXR1cm4gVShwZSxvcik7YnJlYWs7Y2FzZSAyMTk6Y2FzZSAyMjA6cmV0dXJuIGQocGUsb3IpfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKHBlLFAsdyl9ZnVuY3Rpb24gUChwZSl7cmV0dXJuIEwocGUsITEpfWZ1bmN0aW9uIGsocGUpe3JldHVybiBMKHBlLCEwKX1mdW5jdGlvbiBZKHBlKXtpZihlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24ocGUpKWZvcih2YXIgb3I9MCxxcj1wZS5wcm9wZXJ0aWVzO29yPHFyLmxlbmd0aDtvcisrKXt2YXIgc2k9cXJbb3JdO3N3aXRjaChzaS5raW5kKXtjYXNlIDI5NjppZihZKHNpLmluaXRpYWxpemVyKSlyZXR1cm4hMDticmVhaztjYXNlIDI5NzppZihZKHNpLm5hbWUpKXJldHVybiEwO2JyZWFrO2Nhc2UgMjk4OmlmKFkoc2kuZXhwcmVzc2lvbikpcmV0dXJuITA7YnJlYWs7Y2FzZSAxNjk6Y2FzZSAxNzI6Y2FzZSAxNzM6cmV0dXJuITE7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKHNpLFwiVW5oYW5kbGVkIG9iamVjdCBtZW1iZXIga2luZFwiKX19ZWxzZSBpZihlLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihwZSkpZm9yKHZhciBEaT0wLHdpPXBlLmVsZW1lbnRzO0RpPHdpLmxlbmd0aDtEaSsrKXt2YXIgc2k9d2lbRGldO2lmKGUuaXNTcHJlYWRFbGVtZW50KHNpKSl7aWYoWShzaS5leHByZXNzaW9uKSlyZXR1cm4hMH1lbHNlIGlmKFkoc2kpKXJldHVybiEwfWVsc2UgaWYoZS5pc0lkZW50aWZpZXIocGUpKXJldHVybiBlLmxlbmd0aChtaShwZSkpPihlLmlzRXhwb3J0TmFtZShwZSk/MTowKTtyZXR1cm4hMX1mdW5jdGlvbiBVKHBlLG9yKXtyZXR1cm4gWShwZS5sZWZ0KT9lLmZsYXR0ZW5EZXN0cnVjdHVyaW5nQXNzaWdubWVudChwZSxQLHcsMCwhb3IscnIpOmUudmlzaXRFYWNoQ2hpbGQocGUsUCx3KX1mdW5jdGlvbiBqKHBlKXtyZXR1cm4gRS51cGRhdGVGb3JTdGF0ZW1lbnQocGUsZS52aXNpdE5vZGUocGUuaW5pdGlhbGl6ZXIsayxlLmlzRm9ySW5pdGlhbGl6ZXIpLGUudmlzaXROb2RlKHBlLmNvbmRpdGlvbixQLGUuaXNFeHByZXNzaW9uKSxlLnZpc2l0Tm9kZShwZS5pbmNyZW1lbnRvcixrLGUuaXNFeHByZXNzaW9uKSxlLnZpc2l0SXRlcmF0aW9uQm9keShwZS5zdGF0ZW1lbnQsUCx3KSl9ZnVuY3Rpb24gSChwZSl7cmV0dXJuIEUudXBkYXRlRXhwcmVzc2lvblN0YXRlbWVudChwZSxlLnZpc2l0Tm9kZShwZS5leHByZXNzaW9uLGssZS5pc0V4cHJlc3Npb24pKX1mdW5jdGlvbiBJKHBlLG9yKXtyZXR1cm4gRS51cGRhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihwZSxlLnZpc2l0Tm9kZShwZS5leHByZXNzaW9uLG9yP2s6UCxlLmlzRXhwcmVzc2lvbikpfWZ1bmN0aW9uIGwocGUsb3Ipe3JldHVybiBFLnVwZGF0ZVBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9uKHBlLGUudmlzaXROb2RlKHBlLmV4cHJlc3Npb24sb3I/azpQLGUuaXNFeHByZXNzaW9uKSl9ZnVuY3Rpb24gZChwZSxvcil7aWYoKHBlLm9wZXJhdG9yPT09NDV8fHBlLm9wZXJhdG9yPT09NDYpJiZlLmlzSWRlbnRpZmllcihwZS5vcGVyYW5kKSYmIWUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKHBlLm9wZXJhbmQpJiYhZS5pc0xvY2FsTmFtZShwZS5vcGVyYW5kKSYmIWUuaXNEZWNsYXJhdGlvbk5hbWVPZkVudW1Pck5hbWVzcGFjZShwZS5vcGVyYW5kKSl7dmFyIHFyPW1pKHBlLm9wZXJhbmQpO2lmKHFyKXt2YXIgc2k9dm9pZCAwLERpPWUudmlzaXROb2RlKHBlLm9wZXJhbmQsUCxlLmlzRXhwcmVzc2lvbik7ZS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihwZSk/RGk9RS51cGRhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24ocGUsRGkpOihEaT1FLnVwZGF0ZVBvc3RmaXhVbmFyeUV4cHJlc3Npb24ocGUsRGkpLG9yfHwoc2k9RS5jcmVhdGVUZW1wVmFyaWFibGUocCksRGk9RS5jcmVhdGVBc3NpZ25tZW50KHNpLERpKSxlLnNldFRleHRSYW5nZShEaSxwZSkpLERpPUUuY3JlYXRlQ29tbWEoRGksRS5jbG9uZU5vZGUocGUub3BlcmFuZCkpLGUuc2V0VGV4dFJhbmdlKERpLHBlKSk7Zm9yKHZhciB3aT0wLFhpPXFyO3dpPFhpLmxlbmd0aDt3aSsrKXt2YXIgZXQ9WGlbd2ldO3FbZS5nZXROb2RlSWQoRGkpXT0hMCxEaT1uKGV0LERpKSxlLnNldFRleHRSYW5nZShEaSxwZSl9cmV0dXJuIHNpJiYocVtlLmdldE5vZGVJZChEaSldPSEwLERpPUUuY3JlYXRlQ29tbWEoRGksc2kpLGUuc2V0VGV4dFJhbmdlKERpLHBlKSksRGl9fXJldHVybiBlLnZpc2l0RWFjaENoaWxkKHBlLFAsdyl9ZnVuY3Rpb24gRChwZSl7dmFyIG9yPWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lTGl0ZXJhbChFLHBlLGllLG9lLEcsbSkscXI9ZS52aXNpdE5vZGUoZS5maXJzdE9yVW5kZWZpbmVkKHBlLmFyZ3VtZW50cyksUCksc2k9b3ImJighcXJ8fCFlLmlzU3RyaW5nTGl0ZXJhbChxcil8fHFyLnRleHQhPT1vci50ZXh0KT9vcjpxcixEaT0hIShwZS50cmFuc2Zvcm1GbGFncyY4MTkyKTtzd2l0Y2gobS5tb2R1bGUpe2Nhc2UgZS5Nb2R1bGVLaW5kLkFNRDpyZXR1cm4gZyhzaSxEaSk7Y2FzZSBlLk1vZHVsZUtpbmQuVU1EOnJldHVybiBmZShzaSE9bnVsbD9zaTpFLmNyZWF0ZVZvaWRaZXJvKCksRGkpO2Nhc2UgZS5Nb2R1bGVLaW5kLkNvbW1vbkpTOmRlZmF1bHQ6cmV0dXJuIG5lKHNpLERpKX19ZnVuY3Rpb24gZmUocGUsb3Ipe2lmKE89ITAsZS5pc1NpbXBsZUNvcGlhYmxlRXhwcmVzc2lvbihwZSkpe3ZhciBxcj1lLmlzR2VuZXJhdGVkSWRlbnRpZmllcihwZSk/cGU6ZS5pc1N0cmluZ0xpdGVyYWwocGUpP0UuY3JlYXRlU3RyaW5nTGl0ZXJhbEZyb21Ob2RlKHBlKTplLnNldEVtaXRGbGFncyhlLnNldFRleHRSYW5nZShFLmNsb25lTm9kZShwZSkscGUpLDE1MzYpO3JldHVybiBFLmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihFLmNyZWF0ZUlkZW50aWZpZXIoXCJfX3N5bmNSZXF1aXJlXCIpLHZvaWQgMCxuZShwZSxvciksdm9pZCAwLGcocXIsb3IpKX1lbHNle3ZhciBzaT1FLmNyZWF0ZVRlbXBWYXJpYWJsZShwKTtyZXR1cm4gRS5jcmVhdGVDb21tYShFLmNyZWF0ZUFzc2lnbm1lbnQoc2kscGUpLEUuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKEUuY3JlYXRlSWRlbnRpZmllcihcIl9fc3luY1JlcXVpcmVcIiksdm9pZCAwLG5lKHNpLG9yKSx2b2lkIDAsZyhzaSxvcikpKX19ZnVuY3Rpb24gZyhwZSxvcil7dmFyIHFyPUUuY3JlYXRlVW5pcXVlTmFtZShcInJlc29sdmVcIiksc2k9RS5jcmVhdGVVbmlxdWVOYW1lKFwicmVqZWN0XCIpLERpPVtFLmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHFyKSxFLmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHNpKV0sd2k9RS5jcmVhdGVCbG9jayhbRS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KEUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwicmVxdWlyZVwiKSx2b2lkIDAsW0UuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihbcGV8fEUuY3JlYXRlT21pdHRlZEV4cHJlc3Npb24oKV0pLHFyLHNpXSkpXSksWGk7Zj49Mj9YaT1FLmNyZWF0ZUFycm93RnVuY3Rpb24odm9pZCAwLHZvaWQgMCxEaSx2b2lkIDAsdm9pZCAwLHdpKTooWGk9RS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLERpLHZvaWQgMCx3aSksb3ImJmUuc2V0RW1pdEZsYWdzKFhpLDgpKTt2YXIgZXQ9RS5jcmVhdGVOZXdFeHByZXNzaW9uKEUuY3JlYXRlSWRlbnRpZmllcihcIlByb21pc2VcIiksdm9pZCAwLFtYaV0pO3JldHVybiBlLmdldEVTTW9kdWxlSW50ZXJvcChtKT9FLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGV0LEUuY3JlYXRlSWRlbnRpZmllcihcInRoZW5cIikpLHZvaWQgMCxbUSgpLmNyZWF0ZUltcG9ydFN0YXJDYWxsYmFja0hlbHBlcigpXSk6ZXR9ZnVuY3Rpb24gbmUocGUsb3Ipe3ZhciBxcj1FLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEUuY3JlYXRlSWRlbnRpZmllcihcIlByb21pc2VcIiksXCJyZXNvbHZlXCIpLHZvaWQgMCxbXSksc2k9RS5jcmVhdGVDYWxsRXhwcmVzc2lvbihFLmNyZWF0ZUlkZW50aWZpZXIoXCJyZXF1aXJlXCIpLHZvaWQgMCxwZT9bcGVdOltdKTtlLmdldEVTTW9kdWxlSW50ZXJvcChtKSYmKHNpPVEoKS5jcmVhdGVJbXBvcnRTdGFySGVscGVyKHNpKSk7dmFyIERpO3JldHVybiBmPj0yP0RpPUUuY3JlYXRlQXJyb3dGdW5jdGlvbih2b2lkIDAsdm9pZCAwLFtdLHZvaWQgMCx2b2lkIDAsc2kpOihEaT1FLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsW10sdm9pZCAwLEUuY3JlYXRlQmxvY2soW0UuY3JlYXRlUmV0dXJuU3RhdGVtZW50KHNpKV0pKSxvciYmZS5zZXRFbWl0RmxhZ3MoRGksOCkpLEUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ocXIsXCJ0aGVuXCIpLHZvaWQgMCxbRGldKX1mdW5jdGlvbiB1ZShwZSxvcil7cmV0dXJuIWUuZ2V0RVNNb2R1bGVJbnRlcm9wKG0pfHxlLmdldEVtaXRGbGFncyhwZSkmNjcxMDg4NjQ/b3I6ZS5nZXRFeHBvcnROZWVkc0ltcG9ydFN0YXJIZWxwZXIocGUpP1EoKS5jcmVhdGVJbXBvcnRTdGFySGVscGVyKG9yKTpvcn1mdW5jdGlvbiBXZShwZSxvcil7cmV0dXJuIWUuZ2V0RVNNb2R1bGVJbnRlcm9wKG0pfHxlLmdldEVtaXRGbGFncyhwZSkmNjcxMDg4NjQ/b3I6ZS5nZXRJbXBvcnROZWVkc0ltcG9ydFN0YXJIZWxwZXIocGUpP1EoKS5jcmVhdGVJbXBvcnRTdGFySGVscGVyKG9yKTplLmdldEltcG9ydE5lZWRzSW1wb3J0RGVmYXVsdEhlbHBlcihwZSk/USgpLmNyZWF0ZUltcG9ydERlZmF1bHRIZWxwZXIob3IpOm9yfWZ1bmN0aW9uIEZlKHBlKXt2YXIgb3IscXI9ZS5nZXROYW1lc3BhY2VEZWNsYXJhdGlvbk5vZGUocGUpO2lmKFQhPT1lLk1vZHVsZUtpbmQuQU1EKWlmKHBlLmltcG9ydENsYXVzZSl7dmFyIHNpPVtdO3FyJiYhZS5pc0RlZmF1bHRJbXBvcnQocGUpP3NpLnB1c2goRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKEUuY2xvbmVOb2RlKHFyLm5hbWUpLHZvaWQgMCx2b2lkIDAsV2UocGUsWihwZSkpKSk6KHNpLnB1c2goRS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKEUuZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUocGUpLHZvaWQgMCx2b2lkIDAsV2UocGUsWihwZSkpKSkscXImJmUuaXNEZWZhdWx0SW1wb3J0KHBlKSYmc2kucHVzaChFLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oRS5jbG9uZU5vZGUocXIubmFtZSksdm9pZCAwLHZvaWQgMCxFLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHBlKSkpKSxvcj1lLmFwcGVuZChvcixlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShFLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxFLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KHNpLGY+PTI/MjowKSkscGUpLHBlKSl9ZWxzZSByZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFoocGUpKSxwZSkscGUpO2Vsc2UgcXImJmUuaXNEZWZhdWx0SW1wb3J0KHBlKSYmKG9yPWUuYXBwZW5kKG9yLEUuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLEUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW2Uuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihFLmNsb25lTm9kZShxci5uYW1lKSx2b2lkIDAsdm9pZCAwLEUuZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUocGUpKSxwZSkscGUpXSxmPj0yPzI6MCkpKSk7aWYod2UocGUpKXt2YXIgRGk9ZS5nZXRPcmlnaW5hbE5vZGVJZChwZSk7SltEaV09eWUoSltEaV0scGUpfWVsc2Ugb3I9eWUob3IscGUpO3JldHVybiBlLnNpbmdsZU9yTWFueShvcil9ZnVuY3Rpb24gWihwZSl7dmFyIG9yPWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lTGl0ZXJhbChFLHBlLGllLG9lLEcsbSkscXI9W107cmV0dXJuIG9yJiZxci5wdXNoKG9yKSxFLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEUuY3JlYXRlSWRlbnRpZmllcihcInJlcXVpcmVcIiksdm9pZCAwLHFyKX1mdW5jdGlvbiBCZShwZSl7ZS5EZWJ1Zy5hc3NlcnQoZS5pc0V4dGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24ocGUpLFwiaW1wb3J0PSBmb3IgaW50ZXJuYWwgbW9kdWxlIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gYW4gZWFybGllciB0cmFuc2Zvcm1lci5cIik7dmFyIG9yO2lmKFQhPT1lLk1vZHVsZUtpbmQuQU1EP2UuaGFzU3ludGFjdGljTW9kaWZpZXIocGUsMSk/b3I9ZS5hcHBlbmQob3IsZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG4ocGUubmFtZSxaKHBlKSkpLHBlKSxwZSkpOm9yPWUuYXBwZW5kKG9yLGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLEUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW0UuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihFLmNsb25lTm9kZShwZS5uYW1lKSx2b2lkIDAsdm9pZCAwLFoocGUpKV0sZj49Mj8yOjApKSxwZSkscGUpKTplLmhhc1N5bnRhY3RpY01vZGlmaWVyKHBlLDEpJiYob3I9ZS5hcHBlbmQob3IsZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG4oRS5nZXRFeHBvcnROYW1lKHBlKSxFLmdldExvY2FsTmFtZShwZSkpKSxwZSkscGUpKSksd2UocGUpKXt2YXIgcXI9ZS5nZXRPcmlnaW5hbE5vZGVJZChwZSk7Sltxcl09QWUoSltxcl0scGUpfWVsc2Ugb3I9QWUob3IscGUpO3JldHVybiBlLnNpbmdsZU9yTWFueShvcil9ZnVuY3Rpb24gZ2UocGUpe2lmKCEhcGUubW9kdWxlU3BlY2lmaWVyKXt2YXIgb3I9RS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShwZSk7aWYocGUuZXhwb3J0Q2xhdXNlJiZlLmlzTmFtZWRFeHBvcnRzKHBlLmV4cG9ydENsYXVzZSkpe3ZhciBxcj1bXTtUIT09ZS5Nb2R1bGVLaW5kLkFNRCYmcXIucHVzaChlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShFLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxFLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtFLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24ob3Isdm9pZCAwLHZvaWQgMCxaKHBlKSldKSkscGUpLHBlKSk7Zm9yKHZhciBzaT0wLERpPXBlLmV4cG9ydENsYXVzZS5lbGVtZW50cztzaTxEaS5sZW5ndGg7c2krKyl7dmFyIHdpPURpW3NpXTtpZihmPT09MClxci5wdXNoKGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChRKCkuY3JlYXRlQ3JlYXRlQmluZGluZ0hlbHBlcihvcixFLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZSh3aS5wcm9wZXJ0eU5hbWV8fHdpLm5hbWUpLHdpLnByb3BlcnR5TmFtZT9FLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZSh3aS5uYW1lKTp2b2lkIDApKSx3aSksd2kpKTtlbHNle3ZhciBYaT0hIWUuZ2V0RVNNb2R1bGVJbnRlcm9wKG0pJiYhKGUuZ2V0RW1pdEZsYWdzKHBlKSY2NzEwODg2NCkmJmUuaWRUZXh0KHdpLnByb3BlcnR5TmFtZXx8d2kubmFtZSk9PT1cImRlZmF1bHRcIixldD1FLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihYaT9RKCkuY3JlYXRlSW1wb3J0RGVmYXVsdEhlbHBlcihvcik6b3Isd2kucHJvcGVydHlOYW1lfHx3aS5uYW1lKTtxci5wdXNoKGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChuKEUuZ2V0RXhwb3J0TmFtZSh3aSksZXQsdm9pZCAwLCEwKSksd2kpLHdpKSl9fXJldHVybiBlLnNpbmdsZU9yTWFueShxcil9ZWxzZSBpZihwZS5leHBvcnRDbGF1c2Upe3ZhciBxcj1bXTtyZXR1cm4gcXIucHVzaChlLnNldE9yaWdpbmFsTm9kZShlLnNldFRleHRSYW5nZShFLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQobihFLmNsb25lTm9kZShwZS5leHBvcnRDbGF1c2UubmFtZSksdWUocGUsVCE9PWUuTW9kdWxlS2luZC5BTUQ/WihwZSk6ZS5pc0V4cG9ydE5hbWVzcGFjZUFzRGVmYXVsdERlY2xhcmF0aW9uKHBlKT9vcjpFLmNyZWF0ZUlkZW50aWZpZXIoZS5pZFRleHQocGUuZXhwb3J0Q2xhdXNlLm5hbWUpKSkpKSxwZSkscGUpKSxlLnNpbmdsZU9yTWFueShxcil9ZWxzZSByZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFEoKS5jcmVhdGVFeHBvcnRTdGFySGVscGVyKFQhPT1lLk1vZHVsZUtpbmQuQU1EP1oocGUpOm9yKSkscGUpLHBlKX19ZnVuY3Rpb24gUmUocGUpe2lmKCFwZS5pc0V4cG9ydEVxdWFscyl7dmFyIG9yLHFyPXBlLm9yaWdpbmFsO2lmKHFyJiZ3ZShxcikpe3ZhciBzaT1lLmdldE9yaWdpbmFsTm9kZUlkKHBlKTtKW3NpXT1CcihKW3NpXSxFLmNyZWF0ZUlkZW50aWZpZXIoXCJkZWZhdWx0XCIpLGUudmlzaXROb2RlKHBlLmV4cHJlc3Npb24sUCkscGUsITApfWVsc2Ugb3I9QnIob3IsRS5jcmVhdGVJZGVudGlmaWVyKFwiZGVmYXVsdFwiKSxlLnZpc2l0Tm9kZShwZS5leHByZXNzaW9uLFApLHBlLCEwKTtyZXR1cm4gZS5zaW5nbGVPck1hbnkob3IpfX1mdW5jdGlvbiB6ZShwZSl7dmFyIG9yO2lmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIocGUsMSk/b3I9ZS5hcHBlbmQob3IsZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKHZvaWQgMCxlLnZpc2l0Tm9kZXMocGUubW9kaWZpZXJzLGxyLGUuaXNNb2RpZmllcikscGUuYXN0ZXJpc2tUb2tlbixFLmdldERlY2xhcmF0aW9uTmFtZShwZSwhMCwhMCksdm9pZCAwLGUudmlzaXROb2RlcyhwZS5wYXJhbWV0ZXJzLFApLHZvaWQgMCxlLnZpc2l0RWFjaENoaWxkKHBlLmJvZHksUCx3KSkscGUpLHBlKSk6b3I9ZS5hcHBlbmQob3IsZS52aXNpdEVhY2hDaGlsZChwZSxQLHcpKSx3ZShwZSkpe3ZhciBxcj1lLmdldE9yaWdpbmFsTm9kZUlkKHBlKTtKW3FyXT1DcihKW3FyXSxwZSl9ZWxzZSBvcj1DcihvcixwZSk7cmV0dXJuIGUuc2luZ2xlT3JNYW55KG9yKX1mdW5jdGlvbiBFZShwZSl7dmFyIG9yO2lmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIocGUsMSk/b3I9ZS5hcHBlbmQob3IsZS5zZXRPcmlnaW5hbE5vZGUoZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVDbGFzc0RlY2xhcmF0aW9uKHZvaWQgMCxlLnZpc2l0Tm9kZXMocGUubW9kaWZpZXJzLGxyLGUuaXNNb2RpZmllciksRS5nZXREZWNsYXJhdGlvbk5hbWUocGUsITAsITApLHZvaWQgMCxlLnZpc2l0Tm9kZXMocGUuaGVyaXRhZ2VDbGF1c2VzLFApLGUudmlzaXROb2RlcyhwZS5tZW1iZXJzLFApKSxwZSkscGUpKTpvcj1lLmFwcGVuZChvcixlLnZpc2l0RWFjaENoaWxkKHBlLFAsdykpLHdlKHBlKSl7dmFyIHFyPWUuZ2V0T3JpZ2luYWxOb2RlSWQocGUpO0pbcXJdPUNyKEpbcXJdLHBlKX1lbHNlIG9yPUNyKG9yLHBlKTtyZXR1cm4gZS5zaW5nbGVPck1hbnkob3IpfWZ1bmN0aW9uIEhlKHBlKXt2YXIgb3IscXIsc2k7aWYoZS5oYXNTeW50YWN0aWNNb2RpZmllcihwZSwxKSl7Zm9yKHZhciBEaT12b2lkIDAsd2k9ITEsWGk9MCxldD1wZS5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zO1hpPGV0Lmxlbmd0aDtYaSsrKXt2YXIgR2k9ZXRbWGldO2lmKGUuaXNJZGVudGlmaWVyKEdpLm5hbWUpJiZlLmlzTG9jYWxOYW1lKEdpLm5hbWUpKURpfHwoRGk9ZS52aXNpdE5vZGVzKHBlLm1vZGlmaWVycyxscixlLmlzTW9kaWZpZXIpKSxxcj1lLmFwcGVuZChxcixHaSk7ZWxzZSBpZihHaS5pbml0aWFsaXplcilpZighZS5pc0JpbmRpbmdQYXR0ZXJuKEdpLm5hbWUpJiYoZS5pc0Fycm93RnVuY3Rpb24oR2kuaW5pdGlhbGl6ZXIpfHxlLmlzRnVuY3Rpb25FeHByZXNzaW9uKEdpLmluaXRpYWxpemVyKXx8ZS5pc0NsYXNzRXhwcmVzc2lvbihHaS5pbml0aWFsaXplcikpKXt2YXIgV3Q9RS5jcmVhdGVBc3NpZ25tZW50KGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEUuY3JlYXRlSWRlbnRpZmllcihcImV4cG9ydHNcIiksR2kubmFtZSksR2kubmFtZSksRS5jcmVhdGVJZGVudGlmaWVyKGUuZ2V0VGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChHaS5uYW1lKSkpLFp0PUUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihHaS5uYW1lLEdpLmV4Y2xhbWF0aW9uVG9rZW4sR2kudHlwZSxlLnZpc2l0Tm9kZShHaS5pbml0aWFsaXplcixQKSk7cXI9ZS5hcHBlbmQocXIsWnQpLHNpPWUuYXBwZW5kKHNpLFd0KSx3aT0hMH1lbHNlIHNpPWUuYXBwZW5kKHNpLEllKEdpKSl9aWYocXImJihvcj1lLmFwcGVuZChvcixFLnVwZGF0ZVZhcmlhYmxlU3RhdGVtZW50KHBlLERpLEUudXBkYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QocGUuZGVjbGFyYXRpb25MaXN0LHFyKSkpKSxzaSl7dmFyIF9yPWUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChFLmlubGluZUV4cHJlc3Npb25zKHNpKSkscGUpLHBlKTt3aSYmZS5yZW1vdmVBbGxDb21tZW50cyhfciksb3I9ZS5hcHBlbmQob3IsX3IpfX1lbHNlIG9yPWUuYXBwZW5kKG9yLGUudmlzaXRFYWNoQ2hpbGQocGUsUCx3KSk7aWYod2UocGUpKXt2YXIgcGk9ZS5nZXRPcmlnaW5hbE5vZGVJZChwZSk7SltwaV09ZXIoSltwaV0scGUpfWVsc2Ugb3I9ZXIob3IscGUpO3JldHVybiBlLnNpbmdsZU9yTWFueShvcil9ZnVuY3Rpb24gcnIocGUsb3IscXIpe3ZhciBzaT1taShwZSk7aWYoc2kpe2Zvcih2YXIgRGk9ZS5pc0V4cG9ydE5hbWUocGUpP29yOkUuY3JlYXRlQXNzaWdubWVudChwZSxvciksd2k9MCxYaT1zaTt3aTxYaS5sZW5ndGg7d2krKyl7dmFyIGV0PVhpW3dpXTtlLnNldEVtaXRGbGFncyhEaSw0KSxEaT1uKGV0LERpLHFyKX1yZXR1cm4gRGl9cmV0dXJuIEUuY3JlYXRlQXNzaWdubWVudChwZSxvcil9ZnVuY3Rpb24gSWUocGUpe3JldHVybiBlLmlzQmluZGluZ1BhdHRlcm4ocGUubmFtZSk/ZS5mbGF0dGVuRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoZS52aXNpdE5vZGUocGUsUCksdm9pZCAwLHcsMCwhMSxycik6RS5jcmVhdGVBc3NpZ25tZW50KGUuc2V0VGV4dFJhbmdlKEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEUuY3JlYXRlSWRlbnRpZmllcihcImV4cG9ydHNcIikscGUubmFtZSkscGUubmFtZSkscGUuaW5pdGlhbGl6ZXI/ZS52aXNpdE5vZGUocGUuaW5pdGlhbGl6ZXIsUCk6RS5jcmVhdGVWb2lkWmVybygpKX1mdW5jdGlvbiBfZShwZSl7aWYod2UocGUpJiZwZS5vcmlnaW5hbC5raW5kPT09MjM3KXt2YXIgb3I9ZS5nZXRPcmlnaW5hbE5vZGVJZChwZSk7Sltvcl09ZXIoSltvcl0scGUub3JpZ2luYWwpfXJldHVybiBwZX1mdW5jdGlvbiB3ZShwZSl7cmV0dXJuKGUuZ2V0RW1pdEZsYWdzKHBlKSY0MTk0MzA0KSE9PTB9ZnVuY3Rpb24gZGUocGUpe3ZhciBvcj1lLmdldE9yaWdpbmFsTm9kZUlkKHBlKSxxcj1KW29yXTtyZXR1cm4gcXI/KGRlbGV0ZSBKW29yXSxlLmFwcGVuZChxcixwZSkpOnBlfWZ1bmN0aW9uIHllKHBlLG9yKXtpZihSLmV4cG9ydEVxdWFscylyZXR1cm4gcGU7dmFyIHFyPW9yLmltcG9ydENsYXVzZTtpZighcXIpcmV0dXJuIHBlO3FyLm5hbWUmJihwZT1ZZShwZSxxcikpO3ZhciBzaT1xci5uYW1lZEJpbmRpbmdzO2lmKHNpKXN3aXRjaChzaS5raW5kKXtjYXNlIDI2ODpwZT1ZZShwZSxzaSk7YnJlYWs7Y2FzZSAyNjk6Zm9yKHZhciBEaT0wLHdpPXNpLmVsZW1lbnRzO0RpPHdpLmxlbmd0aDtEaSsrKXt2YXIgWGk9d2lbRGldO3BlPVllKHBlLFhpLCEwKX1icmVha31yZXR1cm4gcGV9ZnVuY3Rpb24gQWUocGUsb3Ipe3JldHVybiBSLmV4cG9ydEVxdWFscz9wZTpZZShwZSxvcil9ZnVuY3Rpb24gZXIocGUsb3Ipe2lmKFIuZXhwb3J0RXF1YWxzKXJldHVybiBwZTtmb3IodmFyIHFyPTAsc2k9b3IuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucztxcjxzaS5sZW5ndGg7cXIrKyl7dmFyIERpPXNpW3FyXTtwZT1pcihwZSxEaSl9cmV0dXJuIHBlfWZ1bmN0aW9uIGlyKHBlLG9yKXtpZihSLmV4cG9ydEVxdWFscylyZXR1cm4gcGU7aWYoZS5pc0JpbmRpbmdQYXR0ZXJuKG9yLm5hbWUpKWZvcih2YXIgcXI9MCxzaT1vci5uYW1lLmVsZW1lbnRzO3FyPHNpLmxlbmd0aDtxcisrKXt2YXIgRGk9c2lbcXJdO2UuaXNPbWl0dGVkRXhwcmVzc2lvbihEaSl8fChwZT1pcihwZSxEaSkpfWVsc2UgZS5pc0dlbmVyYXRlZElkZW50aWZpZXIob3IubmFtZSl8fChwZT1ZZShwZSxvcikpO3JldHVybiBwZX1mdW5jdGlvbiBDcihwZSxvcil7aWYoUi5leHBvcnRFcXVhbHMpcmV0dXJuIHBlO2lmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIob3IsMSkpe3ZhciBxcj1lLmhhc1N5bnRhY3RpY01vZGlmaWVyKG9yLDUxMik/RS5jcmVhdGVJZGVudGlmaWVyKFwiZGVmYXVsdFwiKTpFLmdldERlY2xhcmF0aW9uTmFtZShvcik7cGU9QnIocGUscXIsRS5nZXRMb2NhbE5hbWUob3IpLG9yKX1yZXR1cm4gb3IubmFtZSYmKHBlPVllKHBlLG9yKSkscGV9ZnVuY3Rpb24gWWUocGUsb3IscXIpe3ZhciBzaT1FLmdldERlY2xhcmF0aW9uTmFtZShvciksRGk9Ui5leHBvcnRTcGVjaWZpZXJzLmdldChlLmlkVGV4dChzaSkpO2lmKERpKWZvcih2YXIgd2k9MCxYaT1EaTt3aTxYaS5sZW5ndGg7d2krKyl7dmFyIGV0PVhpW3dpXTtwZT1CcihwZSxldC5uYW1lLHNpLGV0Lm5hbWUsdm9pZCAwLHFyKX1yZXR1cm4gcGV9ZnVuY3Rpb24gQnIocGUsb3IscXIsc2ksRGksd2kpe3JldHVybiBwZT1lLmFwcGVuZChwZSxOZShvcixxcixzaSxEaSx3aSkpLHBlfWZ1bmN0aW9uIEVyKCl7dmFyIHBlO3JldHVybiBmPT09MD9wZT1FLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQobihFLmNyZWF0ZUlkZW50aWZpZXIoXCJfX2VzTW9kdWxlXCIpLEUuY3JlYXRlVHJ1ZSgpKSk6cGU9RS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KEUuY3JlYXRlQ2FsbEV4cHJlc3Npb24oRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwiT2JqZWN0XCIpLFwiZGVmaW5lUHJvcGVydHlcIiksdm9pZCAwLFtFLmNyZWF0ZUlkZW50aWZpZXIoXCJleHBvcnRzXCIpLEUuY3JlYXRlU3RyaW5nTGl0ZXJhbChcIl9fZXNNb2R1bGVcIiksRS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihbRS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJ2YWx1ZVwiLEUuY3JlYXRlVHJ1ZSgpKV0pXSkpLGUuc2V0RW1pdEZsYWdzKHBlLDEwNDg1NzYpLHBlfWZ1bmN0aW9uIE5lKHBlLG9yLHFyLHNpLERpKXt2YXIgd2k9ZS5zZXRUZXh0UmFuZ2UoRS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG4ocGUsb3Isdm9pZCAwLERpKSkscXIpO3JldHVybiBlLnN0YXJ0T25OZXdMaW5lKHdpKSxzaXx8ZS5zZXRFbWl0RmxhZ3Mod2ksMTUzNiksd2l9ZnVuY3Rpb24gbihwZSxvcixxcixzaSl7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKHNpJiZmIT09MD9FLmNyZWF0ZUNhbGxFeHByZXNzaW9uKEUuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEUuY3JlYXRlSWRlbnRpZmllcihcIk9iamVjdFwiKSxcImRlZmluZVByb3BlcnR5XCIpLHZvaWQgMCxbRS5jcmVhdGVJZGVudGlmaWVyKFwiZXhwb3J0c1wiKSxFLmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShwZSksRS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihbRS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJlbnVtZXJhYmxlXCIsRS5jcmVhdGVUcnVlKCkpLEUuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwiZ2V0XCIsRS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFtdLHZvaWQgMCxFLmNyZWF0ZUJsb2NrKFtFLmNyZWF0ZVJldHVyblN0YXRlbWVudChvcildKSkpXSldKTpFLmNyZWF0ZUFzc2lnbm1lbnQoRS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRS5jcmVhdGVJZGVudGlmaWVyKFwiZXhwb3J0c1wiKSxFLmNsb25lTm9kZShwZSkpLG9yKSxxcil9ZnVuY3Rpb24gbHIocGUpe3N3aXRjaChwZS5raW5kKXtjYXNlIDkzOmNhc2UgODg6cmV0dXJufXJldHVybiBwZX1mdW5jdGlvbiBiZShwZSxvcixxcil7b3Iua2luZD09PTMwNT8oaWU9b3IsUj1zZVtlLmdldE9yaWdpbmFsTm9kZUlkKGllKV0sYihwZSxvcixxciksaWU9dm9pZCAwLFI9dm9pZCAwKTpiKHBlLG9yLHFyKX1mdW5jdGlvbiBHZShwZSxvcil7cmV0dXJuIG9yPUsocGUsb3IpLG9yLmlkJiZxW29yLmlkXT9vcjpwZT09PTE/eXIob3IpOmUuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQob3IpP3VyKG9yKTpvcn1mdW5jdGlvbiB1cihwZSl7dmFyIG9yPXBlLm5hbWUscXI9VXIob3IpO2lmKHFyIT09b3Ipe2lmKHBlLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcil7dmFyIHNpPUUuY3JlYXRlQXNzaWdubWVudChxcixwZS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXIpO3JldHVybiBlLnNldFRleHRSYW5nZShFLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChvcixzaSkscGUpfXJldHVybiBlLnNldFRleHRSYW5nZShFLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChvcixxcikscGUpfXJldHVybiBwZX1mdW5jdGlvbiB5cihwZSl7c3dpdGNoKHBlLmtpbmQpe2Nhc2UgNzk6cmV0dXJuIFVyKHBlKTtjYXNlIDIwODpyZXR1cm4gSXIocGUpO2Nhc2UgMjEwOnJldHVybiB3cihwZSk7Y2FzZSAyMjE6cmV0dXJuIGlpKHBlKX1yZXR1cm4gcGV9ZnVuY3Rpb24gSXIocGUpe2lmKGUuaXNJZGVudGlmaWVyKHBlLmV4cHJlc3Npb24pKXt2YXIgb3I9VXIocGUuZXhwcmVzc2lvbik7aWYocVtlLmdldE5vZGVJZChvcildPSEwLCFlLmlzSWRlbnRpZmllcihvcikmJiEoZS5nZXRFbWl0RmxhZ3MocGUuZXhwcmVzc2lvbikmNDA5NikpcmV0dXJuIGUuYWRkRW1pdEZsYWdzKEUudXBkYXRlQ2FsbEV4cHJlc3Npb24ocGUsb3Isdm9pZCAwLHBlLmFyZ3VtZW50cyksNTM2ODcwOTEyKX1yZXR1cm4gcGV9ZnVuY3Rpb24gd3IocGUpe2lmKGUuaXNJZGVudGlmaWVyKHBlLnRhZykpe3ZhciBvcj1VcihwZS50YWcpO2lmKHFbZS5nZXROb2RlSWQob3IpXT0hMCwhZS5pc0lkZW50aWZpZXIob3IpJiYhKGUuZ2V0RW1pdEZsYWdzKHBlLnRhZykmNDA5NikpcmV0dXJuIGUuYWRkRW1pdEZsYWdzKEUudXBkYXRlVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKHBlLG9yLHZvaWQgMCxwZS50ZW1wbGF0ZSksNTM2ODcwOTEyKX1yZXR1cm4gcGV9ZnVuY3Rpb24gVXIocGUpe3ZhciBvcixxcjtpZihlLmdldEVtaXRGbGFncyhwZSkmNDA5Nil7dmFyIHNpPWUuZ2V0RXh0ZXJuYWxIZWxwZXJzTW9kdWxlTmFtZShpZSk7cmV0dXJuIHNpP0UuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHNpLHBlKTpwZX1lbHNlIGlmKCEoZS5pc0dlbmVyYXRlZElkZW50aWZpZXIocGUpJiYhKHBlLmF1dG9HZW5lcmF0ZUZsYWdzJjY0KSkmJiFlLmlzTG9jYWxOYW1lKHBlKSl7dmFyIERpPUcuZ2V0UmVmZXJlbmNlZEV4cG9ydENvbnRhaW5lcihwZSxlLmlzRXhwb3J0TmFtZShwZSkpO2lmKERpJiZEaS5raW5kPT09MzA1KXJldHVybiBlLnNldFRleHRSYW5nZShFLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihFLmNyZWF0ZUlkZW50aWZpZXIoXCJleHBvcnRzXCIpLEUuY2xvbmVOb2RlKHBlKSkscGUpO3ZhciB3aT1HLmdldFJlZmVyZW5jZWRJbXBvcnREZWNsYXJhdGlvbihwZSk7aWYod2kpe2lmKGUuaXNJbXBvcnRDbGF1c2Uod2kpKXJldHVybiBlLnNldFRleHRSYW5nZShFLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihFLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHdpLnBhcmVudCksRS5jcmVhdGVJZGVudGlmaWVyKFwiZGVmYXVsdFwiKSkscGUpO2lmKGUuaXNJbXBvcnRTcGVjaWZpZXIod2kpKXt2YXIgWGk9d2kucHJvcGVydHlOYW1lfHx3aS5uYW1lO3JldHVybiBlLnNldFRleHRSYW5nZShFLmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihFLmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKCgocXI9KG9yPXdpLnBhcmVudCk9PT1udWxsfHxvcj09PXZvaWQgMD92b2lkIDA6b3IucGFyZW50KT09PW51bGx8fHFyPT09dm9pZCAwP3ZvaWQgMDpxci5wYXJlbnQpfHx3aSksRS5jbG9uZU5vZGUoWGkpKSxwZSl9fX1yZXR1cm4gcGV9ZnVuY3Rpb24gaWkocGUpe2lmKGUuaXNBc3NpZ25tZW50T3BlcmF0b3IocGUub3BlcmF0b3JUb2tlbi5raW5kKSYmZS5pc0lkZW50aWZpZXIocGUubGVmdCkmJiFlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihwZS5sZWZ0KSYmIWUuaXNMb2NhbE5hbWUocGUubGVmdCkmJiFlLmlzRGVjbGFyYXRpb25OYW1lT2ZFbnVtT3JOYW1lc3BhY2UocGUubGVmdCkpe3ZhciBvcj1taShwZS5sZWZ0KTtpZihvcil7Zm9yKHZhciBxcj1wZSxzaT0wLERpPW9yO3NpPERpLmxlbmd0aDtzaSsrKXt2YXIgd2k9RGlbc2ldO3FbZS5nZXROb2RlSWQocXIpXT0hMCxxcj1uKHdpLHFyLHBlKX1yZXR1cm4gcXJ9fXJldHVybiBwZX1mdW5jdGlvbiBtaShwZSl7aWYoIWUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKHBlKSl7dmFyIG9yPUcuZ2V0UmVmZXJlbmNlZEltcG9ydERlY2xhcmF0aW9uKHBlKXx8Ry5nZXRSZWZlcmVuY2VkVmFsdWVEZWNsYXJhdGlvbihwZSk7aWYob3IpcmV0dXJuIFImJlIuZXhwb3J0ZWRCaW5kaW5nc1tlLmdldE9yaWdpbmFsTm9kZUlkKG9yKV19fX1lLnRyYW5zZm9ybU1vZHVsZT1hO3ZhciBDPXtuYW1lOlwidHlwZXNjcmlwdDpkeW5hbWljaW1wb3J0LXN5bmMtcmVxdWlyZVwiLHNjb3BlZDohMCx0ZXh0OmBcbiAgICAgICAgICAgIHZhciBfX3N5bmNSZXF1aXJlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwib2JqZWN0XCI7YH19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEMpe3ZhciB3PUMuZmFjdG9yeSxCPUMuc3RhcnRMZXhpY2FsRW52aXJvbm1lbnQsRT1DLmVuZExleGljYWxFbnZpcm9ubWVudCxRPUMuaG9pc3RWYXJpYWJsZURlY2xhcmF0aW9uLGxlPUMuZ2V0Q29tcGlsZXJPcHRpb25zKCksTj1DLmdldEVtaXRSZXNvbHZlcigpLHA9Qy5nZXRFbWl0SG9zdCgpLG09Qy5vblN1YnN0aXR1dGVOb2RlLEc9Qy5vbkVtaXROb2RlO0Mub25TdWJzdGl0dXRlTm9kZT1zaSxDLm9uRW1pdE5vZGU9cXIsQy5lbmFibGVTdWJzdGl0dXRpb24oNzkpLEMuZW5hYmxlU3Vic3RpdHV0aW9uKDI5NyksQy5lbmFibGVTdWJzdGl0dXRpb24oMjIxKSxDLmVuYWJsZVN1YnN0aXR1dGlvbigyMzEpLEMuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigzMDUpO3ZhciBvZT1bXSxmPVtdLFQ9W10sSz1bXSxiPVtdLHNlLEosaWUsUixxLE8sdmU7cmV0dXJuIGUuY2hhaW5CdW5kbGUoQyxlZSk7ZnVuY3Rpb24gZWUoYWUpe2lmKGFlLmlzRGVjbGFyYXRpb25GaWxlfHwhKGUuaXNFZmZlY3RpdmVFeHRlcm5hbE1vZHVsZShhZSxsZSl8fGFlLnRyYW5zZm9ybUZsYWdzJjQxOTQzMDQpKXJldHVybiBhZTt2YXIgWGU9ZS5nZXRPcmlnaW5hbE5vZGVJZChhZSk7c2U9YWUsTz1hZSxKPW9lW1hlXT1lLmNvbGxlY3RFeHRlcm5hbE1vZHVsZUluZm8oQyxhZSxOLGxlKSxpZT13LmNyZWF0ZVVuaXF1ZU5hbWUoXCJleHBvcnRzXCIpLFRbWGVdPWllLFI9YltYZV09dy5jcmVhdGVVbmlxdWVOYW1lKFwiY29udGV4dFwiKTt2YXIgSnI9aGUoSi5leHRlcm5hbEltcG9ydHMpLHRpPUYoYWUsSnIpLFplPXcuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCxbdy5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxpZSksdy5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxSKV0sdm9pZCAwLHRpKSxTcj1lLnRyeUdldE1vZHVsZU5hbWVGcm9tRmlsZSh3LGFlLHAsbGUpLHpyPXcuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihlLm1hcChKcixmdW5jdGlvbihKZSl7cmV0dXJuIEplLm5hbWV9KSksV3I9ZS5zZXRFbWl0RmxhZ3Mody51cGRhdGVTb3VyY2VGaWxlKGFlLGUuc2V0VGV4dFJhbmdlKHcuY3JlYXRlTm9kZUFycmF5KFt3LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQody5jcmVhdGVDYWxsRXhwcmVzc2lvbih3LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih3LmNyZWF0ZUlkZW50aWZpZXIoXCJTeXN0ZW1cIiksXCJyZWdpc3RlclwiKSx2b2lkIDAsU3I/W1NyLHpyLFplXTpbenIsWmVdKSldKSxhZS5zdGF0ZW1lbnRzKSksMTAyNCk7cmV0dXJuIGUub3V0RmlsZShsZSl8fGUubW92ZUVtaXRIZWxwZXJzKFdyLHRpLGZ1bmN0aW9uKEplKXtyZXR1cm4hSmUuc2NvcGVkfSksdmUmJihLW1hlXT12ZSx2ZT12b2lkIDApLHNlPXZvaWQgMCxKPXZvaWQgMCxpZT12b2lkIDAsUj12b2lkIDAscT12b2lkIDAsTz12b2lkIDAsV3J9ZnVuY3Rpb24gaGUoYWUpe2Zvcih2YXIgWGU9bmV3IGUuTWFwLEpyPVtdLHRpPTAsWmU9YWU7dGk8WmUubGVuZ3RoO3RpKyspe3ZhciBTcj1aZVt0aV0senI9ZS5nZXRFeHRlcm5hbE1vZHVsZU5hbWVMaXRlcmFsKHcsU3Isc2UscCxOLGxlKTtpZih6cil7dmFyIFdyPXpyLnRleHQsSmU9WGUuZ2V0KFdyKTtKZSE9PXZvaWQgMD9KcltKZV0uZXh0ZXJuYWxJbXBvcnRzLnB1c2goU3IpOihYZS5zZXQoV3IsSnIubGVuZ3RoKSxKci5wdXNoKHtuYW1lOnpyLGV4dGVybmFsSW1wb3J0czpbU3JdfSkpfX1yZXR1cm4gSnJ9ZnVuY3Rpb24gRihhZSxYZSl7dmFyIEpyPVtdO0IoKTt2YXIgdGk9ZS5nZXRTdHJpY3RPcHRpb25WYWx1ZShsZSxcImFsd2F5c1N0cmljdFwiKXx8IWxlLm5vSW1wbGljaXRVc2VTdHJpY3QmJmUuaXNFeHRlcm5hbE1vZHVsZShzZSksWmU9dy5jb3B5UHJvbG9ndWUoYWUuc3RhdGVtZW50cyxKcix0aSxBKTtKci5wdXNoKHcuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLHcuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW3cuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcIl9fbW9kdWxlTmFtZVwiLHZvaWQgMCx2b2lkIDAsdy5jcmVhdGVMb2dpY2FsQW5kKFIsdy5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUixcImlkXCIpKSldKSkpLGUudmlzaXROb2RlKEouZXh0ZXJuYWxIZWxwZXJzSW1wb3J0RGVjbGFyYXRpb24sQSxlLmlzU3RhdGVtZW50KTt2YXIgU3I9ZS52aXNpdE5vZGVzKGFlLnN0YXRlbWVudHMsQSxlLmlzU3RhdGVtZW50LFplKTtlLmFkZFJhbmdlKEpyLHEpLGUuaW5zZXJ0U3RhdGVtZW50c0FmdGVyU3RhbmRhcmRQcm9sb2d1ZShKcixFKCkpO3ZhciB6cj14KEpyKSxXcj1hZS50cmFuc2Zvcm1GbGFncyYxMDQ4NTc2P3cuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoMjU2KTp2b2lkIDAsSmU9dy5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihbdy5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXCJzZXR0ZXJzXCIsJCh6cixYZSkpLHcuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFwiZXhlY3V0ZVwiLHcuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKFdyLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFtdLHZvaWQgMCx3LmNyZWF0ZUJsb2NrKFNyLCEwKSkpXSwhMCk7cmV0dXJuIEpyLnB1c2gody5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoSmUpKSx3LmNyZWF0ZUJsb2NrKEpyLCEwKX1mdW5jdGlvbiB4KGFlKXtpZighIUouaGFzRXhwb3J0U3RhcnNUb0V4cG9ydFZhbHVlcyl7aWYoIUouZXhwb3J0ZWROYW1lcyYmSi5leHBvcnRTcGVjaWZpZXJzLnNpemU9PT0wKXtmb3IodmFyIFhlPSExLEpyPTAsdGk9Si5leHRlcm5hbEltcG9ydHM7SnI8dGkubGVuZ3RoO0pyKyspe3ZhciBaZT10aVtKcl07aWYoWmUua2luZD09PTI3MiYmWmUuZXhwb3J0Q2xhdXNlKXtYZT0hMDticmVha319aWYoIVhlKXt2YXIgU3I9WCh2b2lkIDApO3JldHVybiBhZS5wdXNoKFNyKSxTci5uYW1lfX12YXIgenI9W107aWYoSi5leHBvcnRlZE5hbWVzKWZvcih2YXIgV3I9MCxKZT1KLmV4cG9ydGVkTmFtZXM7V3I8SmUubGVuZ3RoO1dyKyspe3ZhciB4ZT1KZVtXcl07eGUuZXNjYXBlZFRleHQhPT1cImRlZmF1bHRcIiYmenIucHVzaCh3LmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCh3LmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZSh4ZSksdy5jcmVhdGVUcnVlKCkpKX12YXIgdnI9dy5jcmVhdGVVbmlxdWVOYW1lKFwiZXhwb3J0ZWROYW1lc1wiKTthZS5wdXNoKHcuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLHcuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW3cuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbih2cix2b2lkIDAsdm9pZCAwLHcuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oenIsITApKV0pKSk7dmFyIG1yPVgodnIpO3JldHVybiBhZS5wdXNoKG1yKSxtci5uYW1lfX1mdW5jdGlvbiBYKGFlKXt2YXIgWGU9dy5jcmVhdGVVbmlxdWVOYW1lKFwiZXhwb3J0U3RhclwiKSxKcj13LmNyZWF0ZUlkZW50aWZpZXIoXCJtXCIpLHRpPXcuY3JlYXRlSWRlbnRpZmllcihcIm5cIiksWmU9dy5jcmVhdGVJZGVudGlmaWVyKFwiZXhwb3J0c1wiKSxTcj13LmNyZWF0ZVN0cmljdEluZXF1YWxpdHkodGksdy5jcmVhdGVTdHJpbmdMaXRlcmFsKFwiZGVmYXVsdFwiKSk7cmV0dXJuIGFlJiYoU3I9dy5jcmVhdGVMb2dpY2FsQW5kKFNyLHcuY3JlYXRlTG9naWNhbE5vdCh3LmNyZWF0ZUNhbGxFeHByZXNzaW9uKHcuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGFlLFwiaGFzT3duUHJvcGVydHlcIiksdm9pZCAwLFt0aV0pKSkpLHcuY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxYZSx2b2lkIDAsW3cuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsSnIpXSx2b2lkIDAsdy5jcmVhdGVCbG9jayhbdy5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsdy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbdy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKFplLHZvaWQgMCx2b2lkIDAsdy5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihbXSkpXSkpLHcuY3JlYXRlRm9ySW5TdGF0ZW1lbnQody5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbdy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKHRpKV0pLEpyLHcuY3JlYXRlQmxvY2soW2Uuc2V0RW1pdEZsYWdzKHcuY3JlYXRlSWZTdGF0ZW1lbnQoU3Isdy5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHcuY3JlYXRlQXNzaWdubWVudCh3LmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKFplLHRpKSx3LmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKEpyLHRpKSkpKSwxKV0pKSx3LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQody5jcmVhdGVDYWxsRXhwcmVzc2lvbihpZSx2b2lkIDAsW1plXSkpXSwhMCkpfWZ1bmN0aW9uICQoYWUsWGUpe2Zvcih2YXIgSnI9W10sdGk9MCxaZT1YZTt0aTxaZS5sZW5ndGg7dGkrKyl7Zm9yKHZhciBTcj1aZVt0aV0senI9ZS5mb3JFYWNoKFNyLmV4dGVybmFsSW1wb3J0cyxmdW5jdGlvbihVZSl7cmV0dXJuIGUuZ2V0TG9jYWxOYW1lRm9yRXh0ZXJuYWxJbXBvcnQodyxVZSxzZSl9KSxXcj16cj93LmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHpyKTp3LmNyZWF0ZVVuaXF1ZU5hbWUoXCJcIiksSmU9W10seGU9MCx2cj1Tci5leHRlcm5hbEltcG9ydHM7eGU8dnIubGVuZ3RoO3hlKyspe3ZhciBtcj12clt4ZV0sQXI9ZS5nZXRMb2NhbE5hbWVGb3JFeHRlcm5hbEltcG9ydCh3LG1yLHNlKTtzd2l0Y2gobXIua2luZCl7Y2FzZSAyNjY6aWYoIW1yLmltcG9ydENsYXVzZSlicmVhaztjYXNlIDI2NTplLkRlYnVnLmFzc2VydChBciE9PXZvaWQgMCksSmUucHVzaCh3LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQody5jcmVhdGVBc3NpZ25tZW50KEFyLFdyKSkpO2JyZWFrO2Nhc2UgMjcyOmlmKGUuRGVidWcuYXNzZXJ0KEFyIT09dm9pZCAwKSxtci5leHBvcnRDbGF1c2UpaWYoZS5pc05hbWVkRXhwb3J0cyhtci5leHBvcnRDbGF1c2UpKXtmb3IodmFyIE9lPVtdLG5yPTAsTXI9bXIuZXhwb3J0Q2xhdXNlLmVsZW1lbnRzO25yPE1yLmxlbmd0aDtucisrKXt2YXIgUGU9TXJbbnJdO09lLnB1c2gody5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQody5jcmVhdGVTdHJpbmdMaXRlcmFsKGUuaWRUZXh0KFBlLm5hbWUpKSx3LmNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKFdyLHcuY3JlYXRlU3RyaW5nTGl0ZXJhbChlLmlkVGV4dChQZS5wcm9wZXJ0eU5hbWV8fFBlLm5hbWUpKSkpKX1KZS5wdXNoKHcuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudCh3LmNyZWF0ZUNhbGxFeHByZXNzaW9uKGllLHZvaWQgMCxbdy5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihPZSwhMCldKSkpfWVsc2UgSmUucHVzaCh3LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQody5jcmVhdGVDYWxsRXhwcmVzc2lvbihpZSx2b2lkIDAsW3cuY3JlYXRlU3RyaW5nTGl0ZXJhbChlLmlkVGV4dChtci5leHBvcnRDbGF1c2UubmFtZSkpLFdyXSkpKTtlbHNlIEplLnB1c2gody5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHcuY3JlYXRlQ2FsbEV4cHJlc3Npb24oYWUsdm9pZCAwLFtXcl0pKSk7YnJlYWt9fUpyLnB1c2gody5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFt3LmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLFdyKV0sdm9pZCAwLHcuY3JlYXRlQmxvY2soSmUsITApKSl9cmV0dXJuIHcuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihKciwhMCl9ZnVuY3Rpb24gQShhZSl7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgMjY2OnJldHVybiB5KGFlKTtjYXNlIDI2NTpyZXR1cm4gTChhZSk7Y2FzZSAyNzI6cmV0dXJuIFYoYWUpO2Nhc2UgMjcxOnJldHVybiBQKGFlKTtkZWZhdWx0OnJldHVybiBIZShhZSl9fWZ1bmN0aW9uIHkoYWUpe3ZhciBYZTtpZihhZS5pbXBvcnRDbGF1c2UmJlEoZS5nZXRMb2NhbE5hbWVGb3JFeHRlcm5hbEltcG9ydCh3LGFlLHNlKSksZyhhZSkpe3ZhciBKcj1lLmdldE9yaWdpbmFsTm9kZUlkKGFlKTtmW0pyXT11ZShmW0pyXSxhZSl9ZWxzZSBYZT11ZShYZSxhZSk7cmV0dXJuIGUuc2luZ2xlT3JNYW55KFhlKX1mdW5jdGlvbiBWKGFlKXtlLkRlYnVnLmFzc2VydElzRGVmaW5lZChhZSl9ZnVuY3Rpb24gTChhZSl7ZS5EZWJ1Zy5hc3NlcnQoZS5pc0V4dGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oYWUpLFwiaW1wb3J0PSBmb3IgaW50ZXJuYWwgbW9kdWxlIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gYW4gZWFybGllciB0cmFuc2Zvcm1lci5cIik7dmFyIFhlO2lmKFEoZS5nZXRMb2NhbE5hbWVGb3JFeHRlcm5hbEltcG9ydCh3LGFlLHNlKSksZyhhZSkpe3ZhciBKcj1lLmdldE9yaWdpbmFsTm9kZUlkKGFlKTtmW0pyXT1XZShmW0pyXSxhZSl9ZWxzZSBYZT1XZShYZSxhZSk7cmV0dXJuIGUuc2luZ2xlT3JNYW55KFhlKX1mdW5jdGlvbiBQKGFlKXtpZighYWUuaXNFeHBvcnRFcXVhbHMpe3ZhciBYZT1lLnZpc2l0Tm9kZShhZS5leHByZXNzaW9uLEdlLGUuaXNFeHByZXNzaW9uKSxKcj1hZS5vcmlnaW5hbDtpZihKciYmZyhKcikpe3ZhciB0aT1lLmdldE9yaWdpbmFsTm9kZUlkKGFlKTtmW3RpXT1SZShmW3RpXSx3LmNyZWF0ZUlkZW50aWZpZXIoXCJkZWZhdWx0XCIpLFhlLCEwKX1lbHNlIHJldHVybiB6ZSh3LmNyZWF0ZUlkZW50aWZpZXIoXCJkZWZhdWx0XCIpLFhlLCEwKX19ZnVuY3Rpb24gayhhZSl7aWYoZS5oYXNTeW50YWN0aWNNb2RpZmllcihhZSwxKT9xPWUuYXBwZW5kKHEsdy51cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGFlLGFlLmRlY29yYXRvcnMsZS52aXNpdE5vZGVzKGFlLm1vZGlmaWVycyxvcixlLmlzTW9kaWZpZXIpLGFlLmFzdGVyaXNrVG9rZW4sdy5nZXREZWNsYXJhdGlvbk5hbWUoYWUsITAsITApLHZvaWQgMCxlLnZpc2l0Tm9kZXMoYWUucGFyYW1ldGVycyxHZSxlLmlzUGFyYW1ldGVyRGVjbGFyYXRpb24pLHZvaWQgMCxlLnZpc2l0Tm9kZShhZS5ib2R5LEdlLGUuaXNCbG9jaykpKTpxPWUuYXBwZW5kKHEsZS52aXNpdEVhY2hDaGlsZChhZSxHZSxDKSksZyhhZSkpe3ZhciBYZT1lLmdldE9yaWdpbmFsTm9kZUlkKGFlKTtmW1hlXT1CZShmW1hlXSxhZSl9ZWxzZSBxPUJlKHEsYWUpfWZ1bmN0aW9uIFkoYWUpe3ZhciBYZSxKcj13LmdldExvY2FsTmFtZShhZSk7aWYoUShKciksWGU9ZS5hcHBlbmQoWGUsZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHcuY3JlYXRlQXNzaWdubWVudChKcixlLnNldFRleHRSYW5nZSh3LmNyZWF0ZUNsYXNzRXhwcmVzc2lvbihlLnZpc2l0Tm9kZXMoYWUuZGVjb3JhdG9ycyxHZSxlLmlzRGVjb3JhdG9yKSx2b2lkIDAsYWUubmFtZSx2b2lkIDAsZS52aXNpdE5vZGVzKGFlLmhlcml0YWdlQ2xhdXNlcyxHZSxlLmlzSGVyaXRhZ2VDbGF1c2UpLGUudmlzaXROb2RlcyhhZS5tZW1iZXJzLEdlLGUuaXNDbGFzc0VsZW1lbnQpKSxhZSkpKSxhZSkpLGcoYWUpKXt2YXIgdGk9ZS5nZXRPcmlnaW5hbE5vZGVJZChhZSk7Zlt0aV09QmUoZlt0aV0sYWUpfWVsc2UgWGU9QmUoWGUsYWUpO3JldHVybiBlLnNpbmdsZU9yTWFueShYZSl9ZnVuY3Rpb24gVShhZSl7aWYoIUgoYWUuZGVjbGFyYXRpb25MaXN0KSlyZXR1cm4gZS52aXNpdE5vZGUoYWUsR2UsZS5pc1N0YXRlbWVudCk7Zm9yKHZhciBYZSxKcj1lLmhhc1N5bnRhY3RpY01vZGlmaWVyKGFlLDEpLHRpPWcoYWUpLFplPTAsU3I9YWUuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucztaZTxTci5sZW5ndGg7WmUrKyl7dmFyIHpyPVNyW1plXTt6ci5pbml0aWFsaXplcj9YZT1lLmFwcGVuZChYZSxJKHpyLEpyJiYhdGkpKTpqKHpyKX12YXIgV3I7aWYoWGUmJihXcj1lLmFwcGVuZChXcixlLnNldFRleHRSYW5nZSh3LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQody5pbmxpbmVFeHByZXNzaW9ucyhYZSkpLGFlKSkpLHRpKXt2YXIgSmU9ZS5nZXRPcmlnaW5hbE5vZGVJZChhZSk7ZltKZV09RmUoZltKZV0sYWUsSnIpfWVsc2UgV3I9RmUoV3IsYWUsITEpO3JldHVybiBlLnNpbmdsZU9yTWFueShXcil9ZnVuY3Rpb24gaihhZSl7aWYoZS5pc0JpbmRpbmdQYXR0ZXJuKGFlLm5hbWUpKWZvcih2YXIgWGU9MCxKcj1hZS5uYW1lLmVsZW1lbnRzO1hlPEpyLmxlbmd0aDtYZSsrKXt2YXIgdGk9SnJbWGVdO2UuaXNPbWl0dGVkRXhwcmVzc2lvbih0aSl8fGoodGkpfWVsc2UgUSh3LmNsb25lTm9kZShhZS5uYW1lKSl9ZnVuY3Rpb24gSChhZSl7cmV0dXJuKGUuZ2V0RW1pdEZsYWdzKGFlKSYyMDk3MTUyKT09PTAmJihPLmtpbmQ9PT0zMDV8fChlLmdldE9yaWdpbmFsTm9kZShhZSkuZmxhZ3MmMyk9PT0wKX1mdW5jdGlvbiBJKGFlLFhlKXt2YXIgSnI9WGU/bDpkO3JldHVybiBlLmlzQmluZGluZ1BhdHRlcm4oYWUubmFtZSk/ZS5mbGF0dGVuRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoYWUsR2UsQywwLCExLEpyKTphZS5pbml0aWFsaXplcj9KcihhZS5uYW1lLGUudmlzaXROb2RlKGFlLmluaXRpYWxpemVyLEdlLGUuaXNFeHByZXNzaW9uKSk6YWUubmFtZX1mdW5jdGlvbiBsKGFlLFhlLEpyKXtyZXR1cm4gRChhZSxYZSxKciwhMCl9ZnVuY3Rpb24gZChhZSxYZSxKcil7cmV0dXJuIEQoYWUsWGUsSnIsITEpfWZ1bmN0aW9uIEQoYWUsWGUsSnIsdGkpe3JldHVybiBRKHcuY2xvbmVOb2RlKGFlKSksdGk/RWUoYWUsX3IoZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVBc3NpZ25tZW50KGFlLFhlKSxKcikpKTpfcihlLnNldFRleHRSYW5nZSh3LmNyZWF0ZUFzc2lnbm1lbnQoYWUsWGUpLEpyKSl9ZnVuY3Rpb24gZmUoYWUpe2lmKGcoYWUpJiZhZS5vcmlnaW5hbC5raW5kPT09MjM3KXt2YXIgWGU9ZS5nZXRPcmlnaW5hbE5vZGVJZChhZSksSnI9ZS5oYXNTeW50YWN0aWNNb2RpZmllcihhZS5vcmlnaW5hbCwxKTtmW1hlXT1GZShmW1hlXSxhZS5vcmlnaW5hbCxKcil9cmV0dXJuIGFlfWZ1bmN0aW9uIGcoYWUpe3JldHVybihlLmdldEVtaXRGbGFncyhhZSkmNDE5NDMwNCkhPT0wfWZ1bmN0aW9uIG5lKGFlKXt2YXIgWGU9ZS5nZXRPcmlnaW5hbE5vZGVJZChhZSksSnI9ZltYZV07aWYoSnIpcmV0dXJuIGRlbGV0ZSBmW1hlXSxlLmFwcGVuZChKcixhZSk7dmFyIHRpPWUuZ2V0T3JpZ2luYWxOb2RlKGFlKTtyZXR1cm4gZS5pc01vZHVsZU9yRW51bURlY2xhcmF0aW9uKHRpKT9lLmFwcGVuZChnZShKcix0aSksYWUpOmFlfWZ1bmN0aW9uIHVlKGFlLFhlKXtpZihKLmV4cG9ydEVxdWFscylyZXR1cm4gYWU7dmFyIEpyPVhlLmltcG9ydENsYXVzZTtpZighSnIpcmV0dXJuIGFlO0pyLm5hbWUmJihhZT1nZShhZSxKcikpO3ZhciB0aT1Kci5uYW1lZEJpbmRpbmdzO2lmKHRpKXN3aXRjaCh0aS5raW5kKXtjYXNlIDI2ODphZT1nZShhZSx0aSk7YnJlYWs7Y2FzZSAyNjk6Zm9yKHZhciBaZT0wLFNyPXRpLmVsZW1lbnRzO1plPFNyLmxlbmd0aDtaZSsrKXt2YXIgenI9U3JbWmVdO2FlPWdlKGFlLHpyKX1icmVha31yZXR1cm4gYWV9ZnVuY3Rpb24gV2UoYWUsWGUpe3JldHVybiBKLmV4cG9ydEVxdWFscz9hZTpnZShhZSxYZSl9ZnVuY3Rpb24gRmUoYWUsWGUsSnIpe2lmKEouZXhwb3J0RXF1YWxzKXJldHVybiBhZTtmb3IodmFyIHRpPTAsWmU9WGUuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9uczt0aTxaZS5sZW5ndGg7dGkrKyl7dmFyIFNyPVplW3RpXTsoU3IuaW5pdGlhbGl6ZXJ8fEpyKSYmKGFlPVooYWUsU3IsSnIpKX1yZXR1cm4gYWV9ZnVuY3Rpb24gWihhZSxYZSxKcil7aWYoSi5leHBvcnRFcXVhbHMpcmV0dXJuIGFlO2lmKGUuaXNCaW5kaW5nUGF0dGVybihYZS5uYW1lKSlmb3IodmFyIHRpPTAsWmU9WGUubmFtZS5lbGVtZW50czt0aTxaZS5sZW5ndGg7dGkrKyl7dmFyIFNyPVplW3RpXTtlLmlzT21pdHRlZEV4cHJlc3Npb24oU3IpfHwoYWU9WihhZSxTcixKcikpfWVsc2UgaWYoIWUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKFhlLm5hbWUpKXt2YXIgenI9dm9pZCAwO0pyJiYoYWU9UmUoYWUsWGUubmFtZSx3LmdldExvY2FsTmFtZShYZSkpLHpyPWUuaWRUZXh0KFhlLm5hbWUpKSxhZT1nZShhZSxYZSx6cil9cmV0dXJuIGFlfWZ1bmN0aW9uIEJlKGFlLFhlKXtpZihKLmV4cG9ydEVxdWFscylyZXR1cm4gYWU7dmFyIEpyO2lmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIoWGUsMSkpe3ZhciB0aT1lLmhhc1N5bnRhY3RpY01vZGlmaWVyKFhlLDUxMik/dy5jcmVhdGVTdHJpbmdMaXRlcmFsKFwiZGVmYXVsdFwiKTpYZS5uYW1lO2FlPVJlKGFlLHRpLHcuZ2V0TG9jYWxOYW1lKFhlKSksSnI9ZS5nZXRUZXh0T2ZJZGVudGlmaWVyT3JMaXRlcmFsKHRpKX1yZXR1cm4gWGUubmFtZSYmKGFlPWdlKGFlLFhlLEpyKSksYWV9ZnVuY3Rpb24gZ2UoYWUsWGUsSnIpe2lmKEouZXhwb3J0RXF1YWxzKXJldHVybiBhZTt2YXIgdGk9dy5nZXREZWNsYXJhdGlvbk5hbWUoWGUpLFplPUouZXhwb3J0U3BlY2lmaWVycy5nZXQoZS5pZFRleHQodGkpKTtpZihaZSlmb3IodmFyIFNyPTAsenI9WmU7U3I8enIubGVuZ3RoO1NyKyspe3ZhciBXcj16cltTcl07V3IubmFtZS5lc2NhcGVkVGV4dCE9PUpyJiYoYWU9UmUoYWUsV3IubmFtZSx0aSkpfXJldHVybiBhZX1mdW5jdGlvbiBSZShhZSxYZSxKcix0aSl7cmV0dXJuIGFlPWUuYXBwZW5kKGFlLHplKFhlLEpyLHRpKSksYWV9ZnVuY3Rpb24gemUoYWUsWGUsSnIpe3ZhciB0aT13LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoRWUoYWUsWGUpKTtyZXR1cm4gZS5zdGFydE9uTmV3TGluZSh0aSksSnJ8fGUuc2V0RW1pdEZsYWdzKHRpLDE1MzYpLHRpfWZ1bmN0aW9uIEVlKGFlLFhlKXt2YXIgSnI9ZS5pc0lkZW50aWZpZXIoYWUpP3cuY3JlYXRlU3RyaW5nTGl0ZXJhbEZyb21Ob2RlKGFlKTphZTtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoWGUsZS5nZXRFbWl0RmxhZ3MoWGUpfDE1MzYpLGUuc2V0Q29tbWVudFJhbmdlKHcuY3JlYXRlQ2FsbEV4cHJlc3Npb24oaWUsdm9pZCAwLFtKcixYZV0pLFhlKX1mdW5jdGlvbiBIZShhZSl7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgMjM3OnJldHVybiBVKGFlKTtjYXNlIDI1NjpyZXR1cm4gayhhZSk7Y2FzZSAyNTc6cmV0dXJuIFkoYWUpO2Nhc2UgMjQyOnJldHVybiBycihhZSwhMCk7Y2FzZSAyNDM6cmV0dXJuIEllKGFlKTtjYXNlIDI0NDpyZXR1cm4gX2UoYWUpO2Nhc2UgMjQwOnJldHVybiB5ZShhZSk7Y2FzZSAyNDE6cmV0dXJuIEFlKGFlKTtjYXNlIDI1MDpyZXR1cm4gZXIoYWUpO2Nhc2UgMjQ4OnJldHVybiBpcihhZSk7Y2FzZSAyNDk6cmV0dXJuIENyKGFlKTtjYXNlIDI2MzpyZXR1cm4gWWUoYWUpO2Nhc2UgMjg5OnJldHVybiBCcihhZSk7Y2FzZSAyOTA6cmV0dXJuIEVyKGFlKTtjYXNlIDI1MjpyZXR1cm4gTmUoYWUpO2Nhc2UgMjkyOnJldHVybiBuKGFlKTtjYXNlIDIzNTpyZXR1cm4gbHIoYWUpO2Nhc2UgMzUyOnJldHVybiBmZShhZSk7Y2FzZSAzNTM6cmV0dXJuIG5lKGFlKTtkZWZhdWx0OnJldHVybiBHZShhZSl9fWZ1bmN0aW9uIHJyKGFlLFhlKXt2YXIgSnI9TztyZXR1cm4gTz1hZSxhZT13LnVwZGF0ZUZvclN0YXRlbWVudChhZSxlLnZpc2l0Tm9kZShhZS5pbml0aWFsaXplcixYZT9kZTp1cixlLmlzRm9ySW5pdGlhbGl6ZXIpLGUudmlzaXROb2RlKGFlLmNvbmRpdGlvbixHZSxlLmlzRXhwcmVzc2lvbiksZS52aXNpdE5vZGUoYWUuaW5jcmVtZW50b3IsdXIsZS5pc0V4cHJlc3Npb24pLGUudmlzaXRJdGVyYXRpb25Cb2R5KGFlLnN0YXRlbWVudCxYZT9IZTpHZSxDKSksTz1KcixhZX1mdW5jdGlvbiBJZShhZSl7dmFyIFhlPU87cmV0dXJuIE89YWUsYWU9dy51cGRhdGVGb3JJblN0YXRlbWVudChhZSxkZShhZS5pbml0aWFsaXplciksZS52aXNpdE5vZGUoYWUuZXhwcmVzc2lvbixHZSxlLmlzRXhwcmVzc2lvbiksZS52aXNpdEl0ZXJhdGlvbkJvZHkoYWUuc3RhdGVtZW50LEhlLEMpKSxPPVhlLGFlfWZ1bmN0aW9uIF9lKGFlKXt2YXIgWGU9TztyZXR1cm4gTz1hZSxhZT13LnVwZGF0ZUZvck9mU3RhdGVtZW50KGFlLGFlLmF3YWl0TW9kaWZpZXIsZGUoYWUuaW5pdGlhbGl6ZXIpLGUudmlzaXROb2RlKGFlLmV4cHJlc3Npb24sR2UsZS5pc0V4cHJlc3Npb24pLGUudmlzaXRJdGVyYXRpb25Cb2R5KGFlLnN0YXRlbWVudCxIZSxDKSksTz1YZSxhZX1mdW5jdGlvbiB3ZShhZSl7cmV0dXJuIGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChhZSkmJkgoYWUpfWZ1bmN0aW9uIGRlKGFlKXtpZih3ZShhZSkpe2Zvcih2YXIgWGU9dm9pZCAwLEpyPTAsdGk9YWUuZGVjbGFyYXRpb25zO0pyPHRpLmxlbmd0aDtKcisrKXt2YXIgWmU9dGlbSnJdO1hlPWUuYXBwZW5kKFhlLEkoWmUsITEpKSxaZS5pbml0aWFsaXplcnx8aihaZSl9cmV0dXJuIFhlP3cuaW5saW5lRXhwcmVzc2lvbnMoWGUpOncuY3JlYXRlT21pdHRlZEV4cHJlc3Npb24oKX1lbHNlIHJldHVybiBlLnZpc2l0Tm9kZShhZSx1cixlLmlzRXhwcmVzc2lvbil9ZnVuY3Rpb24geWUoYWUpe3JldHVybiB3LnVwZGF0ZURvU3RhdGVtZW50KGFlLGUudmlzaXRJdGVyYXRpb25Cb2R5KGFlLnN0YXRlbWVudCxIZSxDKSxlLnZpc2l0Tm9kZShhZS5leHByZXNzaW9uLEdlLGUuaXNFeHByZXNzaW9uKSl9ZnVuY3Rpb24gQWUoYWUpe3JldHVybiB3LnVwZGF0ZVdoaWxlU3RhdGVtZW50KGFlLGUudmlzaXROb2RlKGFlLmV4cHJlc3Npb24sR2UsZS5pc0V4cHJlc3Npb24pLGUudmlzaXRJdGVyYXRpb25Cb2R5KGFlLnN0YXRlbWVudCxIZSxDKSl9ZnVuY3Rpb24gZXIoYWUpe3JldHVybiB3LnVwZGF0ZUxhYmVsZWRTdGF0ZW1lbnQoYWUsYWUubGFiZWwsZS52aXNpdE5vZGUoYWUuc3RhdGVtZW50LEhlLGUuaXNTdGF0ZW1lbnQsdy5saWZ0VG9CbG9jaykpfWZ1bmN0aW9uIGlyKGFlKXtyZXR1cm4gdy51cGRhdGVXaXRoU3RhdGVtZW50KGFlLGUudmlzaXROb2RlKGFlLmV4cHJlc3Npb24sR2UsZS5pc0V4cHJlc3Npb24pLGUudmlzaXROb2RlKGFlLnN0YXRlbWVudCxIZSxlLmlzU3RhdGVtZW50LHcubGlmdFRvQmxvY2spKX1mdW5jdGlvbiBDcihhZSl7cmV0dXJuIHcudXBkYXRlU3dpdGNoU3RhdGVtZW50KGFlLGUudmlzaXROb2RlKGFlLmV4cHJlc3Npb24sR2UsZS5pc0V4cHJlc3Npb24pLGUudmlzaXROb2RlKGFlLmNhc2VCbG9jayxIZSxlLmlzQ2FzZUJsb2NrKSl9ZnVuY3Rpb24gWWUoYWUpe3ZhciBYZT1PO3JldHVybiBPPWFlLGFlPXcudXBkYXRlQ2FzZUJsb2NrKGFlLGUudmlzaXROb2RlcyhhZS5jbGF1c2VzLEhlLGUuaXNDYXNlT3JEZWZhdWx0Q2xhdXNlKSksTz1YZSxhZX1mdW5jdGlvbiBCcihhZSl7cmV0dXJuIHcudXBkYXRlQ2FzZUNsYXVzZShhZSxlLnZpc2l0Tm9kZShhZS5leHByZXNzaW9uLEdlLGUuaXNFeHByZXNzaW9uKSxlLnZpc2l0Tm9kZXMoYWUuc3RhdGVtZW50cyxIZSxlLmlzU3RhdGVtZW50KSl9ZnVuY3Rpb24gRXIoYWUpe3JldHVybiBlLnZpc2l0RWFjaENoaWxkKGFlLEhlLEMpfWZ1bmN0aW9uIE5lKGFlKXtyZXR1cm4gZS52aXNpdEVhY2hDaGlsZChhZSxIZSxDKX1mdW5jdGlvbiBuKGFlKXt2YXIgWGU9TztyZXR1cm4gTz1hZSxhZT13LnVwZGF0ZUNhdGNoQ2xhdXNlKGFlLGFlLnZhcmlhYmxlRGVjbGFyYXRpb24sZS52aXNpdE5vZGUoYWUuYmxvY2ssSGUsZS5pc0Jsb2NrKSksTz1YZSxhZX1mdW5jdGlvbiBscihhZSl7dmFyIFhlPU87cmV0dXJuIE89YWUsYWU9ZS52aXNpdEVhY2hDaGlsZChhZSxIZSxDKSxPPVhlLGFlfWZ1bmN0aW9uIGJlKGFlLFhlKXtpZighKGFlLnRyYW5zZm9ybUZsYWdzJjcxMzA3MjY0KSlyZXR1cm4gYWU7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgMjQyOnJldHVybiBycihhZSwhMSk7Y2FzZSAyMzg6cmV0dXJuIHlyKGFlKTtjYXNlIDIxMjpyZXR1cm4gSXIoYWUsWGUpO2Nhc2UgMzUwOnJldHVybiB3cihhZSxYZSk7Y2FzZSAyMjE6aWYoZS5pc0Rlc3RydWN0dXJpbmdBc3NpZ25tZW50KGFlKSlyZXR1cm4gaWkoYWUsWGUpO2JyZWFrO2Nhc2UgMjA4OmlmKGUuaXNJbXBvcnRDYWxsKGFlKSlyZXR1cm4gVXIoYWUpO2JyZWFrO2Nhc2UgMjE5OmNhc2UgMjIwOnJldHVybiBwZShhZSxYZSl9cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoYWUsR2UsQyl9ZnVuY3Rpb24gR2UoYWUpe3JldHVybiBiZShhZSwhMSl9ZnVuY3Rpb24gdXIoYWUpe3JldHVybiBiZShhZSwhMCl9ZnVuY3Rpb24geXIoYWUpe3JldHVybiB3LnVwZGF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoYWUsZS52aXNpdE5vZGUoYWUuZXhwcmVzc2lvbix1cixlLmlzRXhwcmVzc2lvbikpfWZ1bmN0aW9uIElyKGFlLFhlKXtyZXR1cm4gdy51cGRhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihhZSxlLnZpc2l0Tm9kZShhZS5leHByZXNzaW9uLFhlP3VyOkdlLGUuaXNFeHByZXNzaW9uKSl9ZnVuY3Rpb24gd3IoYWUsWGUpe3JldHVybiB3LnVwZGF0ZVBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9uKGFlLGUudmlzaXROb2RlKGFlLmV4cHJlc3Npb24sWGU/dXI6R2UsZS5pc0V4cHJlc3Npb24pKX1mdW5jdGlvbiBVcihhZSl7dmFyIFhlPWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lTGl0ZXJhbCh3LGFlLHNlLHAsTixsZSksSnI9ZS52aXNpdE5vZGUoZS5maXJzdE9yVW5kZWZpbmVkKGFlLmFyZ3VtZW50cyksR2UpLHRpPVhlJiYoIUpyfHwhZS5pc1N0cmluZ0xpdGVyYWwoSnIpfHxKci50ZXh0IT09WGUudGV4dCk/WGU6SnI7cmV0dXJuIHcuY3JlYXRlQ2FsbEV4cHJlc3Npb24ody5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUix3LmNyZWF0ZUlkZW50aWZpZXIoXCJpbXBvcnRcIikpLHZvaWQgMCx0aT9bdGldOltdKX1mdW5jdGlvbiBpaShhZSxYZSl7cmV0dXJuIG1pKGFlLmxlZnQpP2UuZmxhdHRlbkRlc3RydWN0dXJpbmdBc3NpZ25tZW50KGFlLEdlLEMsMCwhWGUpOmUudmlzaXRFYWNoQ2hpbGQoYWUsR2UsQyl9ZnVuY3Rpb24gbWkoYWUpe2lmKGUuaXNBc3NpZ25tZW50RXhwcmVzc2lvbihhZSwhMCkpcmV0dXJuIG1pKGFlLmxlZnQpO2lmKGUuaXNTcHJlYWRFbGVtZW50KGFlKSlyZXR1cm4gbWkoYWUuZXhwcmVzc2lvbik7aWYoZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGFlKSlyZXR1cm4gZS5zb21lKGFlLnByb3BlcnRpZXMsbWkpO2lmKGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKGFlKSlyZXR1cm4gZS5zb21lKGFlLmVsZW1lbnRzLG1pKTtpZihlLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KGFlKSlyZXR1cm4gbWkoYWUubmFtZSk7aWYoZS5pc1Byb3BlcnR5QXNzaWdubWVudChhZSkpcmV0dXJuIG1pKGFlLmluaXRpYWxpemVyKTtpZihlLmlzSWRlbnRpZmllcihhZSkpe3ZhciBYZT1OLmdldFJlZmVyZW5jZWRFeHBvcnRDb250YWluZXIoYWUpO3JldHVybiBYZSE9PXZvaWQgMCYmWGUua2luZD09PTMwNX1lbHNlIHJldHVybiExfWZ1bmN0aW9uIHBlKGFlLFhlKXtpZigoYWUub3BlcmF0b3I9PT00NXx8YWUub3BlcmF0b3I9PT00NikmJmUuaXNJZGVudGlmaWVyKGFlLm9wZXJhbmQpJiYhZS5pc0dlbmVyYXRlZElkZW50aWZpZXIoYWUub3BlcmFuZCkmJiFlLmlzTG9jYWxOYW1lKGFlLm9wZXJhbmQpJiYhZS5pc0RlY2xhcmF0aW9uTmFtZU9mRW51bU9yTmFtZXNwYWNlKGFlLm9wZXJhbmQpKXt2YXIgSnI9WnQoYWUub3BlcmFuZCk7aWYoSnIpe3ZhciB0aT12b2lkIDAsWmU9ZS52aXNpdE5vZGUoYWUub3BlcmFuZCxHZSxlLmlzRXhwcmVzc2lvbik7ZS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihhZSk/WmU9dy51cGRhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24oYWUsWmUpOihaZT13LnVwZGF0ZVBvc3RmaXhVbmFyeUV4cHJlc3Npb24oYWUsWmUpLFhlfHwodGk9dy5jcmVhdGVUZW1wVmFyaWFibGUoUSksWmU9dy5jcmVhdGVBc3NpZ25tZW50KHRpLFplKSxlLnNldFRleHRSYW5nZShaZSxhZSkpLFplPXcuY3JlYXRlQ29tbWEoWmUsdy5jbG9uZU5vZGUoYWUub3BlcmFuZCkpLGUuc2V0VGV4dFJhbmdlKFplLGFlKSk7Zm9yKHZhciBTcj0wLHpyPUpyO1NyPHpyLmxlbmd0aDtTcisrKXt2YXIgV3I9enJbU3JdO1plPUVlKFdyLF9yKFplKSl9cmV0dXJuIHRpJiYoWmU9dy5jcmVhdGVDb21tYShaZSx0aSksZS5zZXRUZXh0UmFuZ2UoWmUsYWUpKSxaZX19cmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoYWUsR2UsQyl9ZnVuY3Rpb24gb3IoYWUpe3N3aXRjaChhZS5raW5kKXtjYXNlIDkzOmNhc2UgODg6cmV0dXJufXJldHVybiBhZX1mdW5jdGlvbiBxcihhZSxYZSxKcil7aWYoWGUua2luZD09PTMwNSl7dmFyIHRpPWUuZ2V0T3JpZ2luYWxOb2RlSWQoWGUpO3NlPVhlLEo9b2VbdGldLGllPVRbdGldLHZlPUtbdGldLFI9Ylt0aV0sdmUmJmRlbGV0ZSBLW3RpXSxHKGFlLFhlLEpyKSxzZT12b2lkIDAsSj12b2lkIDAsaWU9dm9pZCAwLFI9dm9pZCAwLHZlPXZvaWQgMH1lbHNlIEcoYWUsWGUsSnIpfWZ1bmN0aW9uIHNpKGFlLFhlKXtyZXR1cm4gWGU9bShhZSxYZSkscGkoWGUpP1hlOmFlPT09MT9YaShYZSk6YWU9PT00P0RpKFhlKTpYZX1mdW5jdGlvbiBEaShhZSl7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgMjk3OnJldHVybiB3aShhZSl9cmV0dXJuIGFlfWZ1bmN0aW9uIHdpKGFlKXt2YXIgWGUsSnIsdGk9YWUubmFtZTtpZighZS5pc0dlbmVyYXRlZElkZW50aWZpZXIodGkpJiYhZS5pc0xvY2FsTmFtZSh0aSkpe3ZhciBaZT1OLmdldFJlZmVyZW5jZWRJbXBvcnREZWNsYXJhdGlvbih0aSk7aWYoWmUpe2lmKGUuaXNJbXBvcnRDbGF1c2UoWmUpKXJldHVybiBlLnNldFRleHRSYW5nZSh3LmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCh3LmNsb25lTm9kZSh0aSksdy5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ody5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZShaZS5wYXJlbnQpLHcuY3JlYXRlSWRlbnRpZmllcihcImRlZmF1bHRcIikpKSxhZSk7aWYoZS5pc0ltcG9ydFNwZWNpZmllcihaZSkpcmV0dXJuIGUuc2V0VGV4dFJhbmdlKHcuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KHcuY2xvbmVOb2RlKHRpKSx3LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih3LmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKCgoSnI9KFhlPVplLnBhcmVudCk9PT1udWxsfHxYZT09PXZvaWQgMD92b2lkIDA6WGUucGFyZW50KT09PW51bGx8fEpyPT09dm9pZCAwP3ZvaWQgMDpKci5wYXJlbnQpfHxaZSksdy5jbG9uZU5vZGUoWmUucHJvcGVydHlOYW1lfHxaZS5uYW1lKSkpLGFlKX19cmV0dXJuIGFlfWZ1bmN0aW9uIFhpKGFlKXtzd2l0Y2goYWUua2luZCl7Y2FzZSA3OTpyZXR1cm4gZXQoYWUpO2Nhc2UgMjIxOnJldHVybiBHaShhZSk7Y2FzZSAyMzE6cmV0dXJuIFd0KGFlKX1yZXR1cm4gYWV9ZnVuY3Rpb24gZXQoYWUpe3ZhciBYZSxKcjtpZihlLmdldEVtaXRGbGFncyhhZSkmNDA5Nil7dmFyIHRpPWUuZ2V0RXh0ZXJuYWxIZWxwZXJzTW9kdWxlTmFtZShzZSk7cmV0dXJuIHRpP3cuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHRpLGFlKTphZX1pZighZS5pc0dlbmVyYXRlZElkZW50aWZpZXIoYWUpJiYhZS5pc0xvY2FsTmFtZShhZSkpe3ZhciBaZT1OLmdldFJlZmVyZW5jZWRJbXBvcnREZWNsYXJhdGlvbihhZSk7aWYoWmUpe2lmKGUuaXNJbXBvcnRDbGF1c2UoWmUpKXJldHVybiBlLnNldFRleHRSYW5nZSh3LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih3LmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKFplLnBhcmVudCksdy5jcmVhdGVJZGVudGlmaWVyKFwiZGVmYXVsdFwiKSksYWUpO2lmKGUuaXNJbXBvcnRTcGVjaWZpZXIoWmUpKXJldHVybiBlLnNldFRleHRSYW5nZSh3LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih3LmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKCgoSnI9KFhlPVplLnBhcmVudCk9PT1udWxsfHxYZT09PXZvaWQgMD92b2lkIDA6WGUucGFyZW50KT09PW51bGx8fEpyPT09dm9pZCAwP3ZvaWQgMDpKci5wYXJlbnQpfHxaZSksdy5jbG9uZU5vZGUoWmUucHJvcGVydHlOYW1lfHxaZS5uYW1lKSksYWUpfX1yZXR1cm4gYWV9ZnVuY3Rpb24gR2koYWUpe2lmKGUuaXNBc3NpZ25tZW50T3BlcmF0b3IoYWUub3BlcmF0b3JUb2tlbi5raW5kKSYmZS5pc0lkZW50aWZpZXIoYWUubGVmdCkmJiFlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihhZS5sZWZ0KSYmIWUuaXNMb2NhbE5hbWUoYWUubGVmdCkmJiFlLmlzRGVjbGFyYXRpb25OYW1lT2ZFbnVtT3JOYW1lc3BhY2UoYWUubGVmdCkpe3ZhciBYZT1adChhZS5sZWZ0KTtpZihYZSl7Zm9yKHZhciBKcj1hZSx0aT0wLFplPVhlO3RpPFplLmxlbmd0aDt0aSsrKXt2YXIgU3I9WmVbdGldO0pyPUVlKFNyLF9yKEpyKSl9cmV0dXJuIEpyfX1yZXR1cm4gYWV9ZnVuY3Rpb24gV3QoYWUpe3JldHVybiBlLmlzSW1wb3J0TWV0YShhZSk/dy5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUix3LmNyZWF0ZUlkZW50aWZpZXIoXCJtZXRhXCIpKTphZX1mdW5jdGlvbiBadChhZSl7dmFyIFhlO2lmKCFlLmlzR2VuZXJhdGVkSWRlbnRpZmllcihhZSkpe3ZhciBKcj1OLmdldFJlZmVyZW5jZWRJbXBvcnREZWNsYXJhdGlvbihhZSl8fE4uZ2V0UmVmZXJlbmNlZFZhbHVlRGVjbGFyYXRpb24oYWUpO2lmKEpyKXt2YXIgdGk9Ti5nZXRSZWZlcmVuY2VkRXhwb3J0Q29udGFpbmVyKGFlLCExKTt0aSYmdGkua2luZD09PTMwNSYmKFhlPWUuYXBwZW5kKFhlLHcuZ2V0RGVjbGFyYXRpb25OYW1lKEpyKSkpLFhlPWUuYWRkUmFuZ2UoWGUsSiYmSi5leHBvcnRlZEJpbmRpbmdzW2UuZ2V0T3JpZ2luYWxOb2RlSWQoSnIpXSl9fXJldHVybiBYZX1mdW5jdGlvbiBfcihhZSl7cmV0dXJuIHZlPT09dm9pZCAwJiYodmU9W10pLHZlW2UuZ2V0Tm9kZUlkKGFlKV09ITAsYWV9ZnVuY3Rpb24gcGkoYWUpe3JldHVybiB2ZSYmYWUuaWQmJnZlW2FlLmlkXX19ZS50cmFuc2Zvcm1TeXN0ZW1Nb2R1bGU9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoQyl7dmFyIHc9Qy5mYWN0b3J5LEI9Qy5nZXRFbWl0SGVscGVyRmFjdG9yeSxFPUMuZ2V0RW1pdEhvc3QoKSxRPUMuZ2V0RW1pdFJlc29sdmVyKCksbGU9Qy5nZXRDb21waWxlck9wdGlvbnMoKSxOPWUuZ2V0RW1pdFNjcmlwdFRhcmdldChsZSkscD1DLm9uRW1pdE5vZGUsbT1DLm9uU3Vic3RpdHV0ZU5vZGU7Qy5vbkVtaXROb2RlPU8sQy5vblN1YnN0aXR1dGVOb2RlPXZlLEMuZW5hYmxlRW1pdE5vdGlmaWNhdGlvbigzMDUpLEMuZW5hYmxlU3Vic3RpdHV0aW9uKDc5KTt2YXIgRyxvZSxmO3JldHVybiBlLmNoYWluQnVuZGxlKEMsVCk7ZnVuY3Rpb24gVChoZSl7aWYoaGUuaXNEZWNsYXJhdGlvbkZpbGUpcmV0dXJuIGhlO2lmKGUuaXNFeHRlcm5hbE1vZHVsZShoZSl8fGxlLmlzb2xhdGVkTW9kdWxlcyl7b2U9aGUsZj12b2lkIDA7dmFyIEY9SyhoZSk7cmV0dXJuIG9lPXZvaWQgMCxmJiYoRj13LnVwZGF0ZVNvdXJjZUZpbGUoRixlLnNldFRleHRSYW5nZSh3LmNyZWF0ZU5vZGVBcnJheShlLmluc2VydFN0YXRlbWVudHNBZnRlckN1c3RvbVByb2xvZ3VlKEYuc3RhdGVtZW50cy5zbGljZSgpLGYpKSxGLnN0YXRlbWVudHMpKSksIWUuaXNFeHRlcm5hbE1vZHVsZShoZSl8fGUuc29tZShGLnN0YXRlbWVudHMsZS5pc0V4dGVybmFsTW9kdWxlSW5kaWNhdG9yKT9GOncudXBkYXRlU291cmNlRmlsZShGLGUuc2V0VGV4dFJhbmdlKHcuY3JlYXRlTm9kZUFycmF5KFZlKFZlKFtdLEYuc3RhdGVtZW50cywhMCksW2UuY3JlYXRlRW1wdHlFeHBvcnRzKHcpXSwhMSkpLEYuc3RhdGVtZW50cykpfXJldHVybiBoZX1mdW5jdGlvbiBLKGhlKXt2YXIgRj1lLmNyZWF0ZUV4dGVybmFsSGVscGVyc0ltcG9ydERlY2xhcmF0aW9uSWZOZWVkZWQodyxCKCksaGUsbGUpO2lmKEYpe3ZhciB4PVtdLFg9dy5jb3B5UHJvbG9ndWUoaGUuc3RhdGVtZW50cyx4KTtyZXR1cm4gZS5hcHBlbmQoeCxGKSxlLmFkZFJhbmdlKHgsZS52aXNpdE5vZGVzKGhlLnN0YXRlbWVudHMsYixlLmlzU3RhdGVtZW50LFgpKSx3LnVwZGF0ZVNvdXJjZUZpbGUoaGUsZS5zZXRUZXh0UmFuZ2Uody5jcmVhdGVOb2RlQXJyYXkoeCksaGUuc3RhdGVtZW50cykpfWVsc2UgcmV0dXJuIGUudmlzaXRFYWNoQ2hpbGQoaGUsYixDKX1mdW5jdGlvbiBiKGhlKXtzd2l0Y2goaGUua2luZCl7Y2FzZSAyNjU6cmV0dXJuIGUuZ2V0RW1pdFNjcmlwdFRhcmdldChsZSk+PWUuTW9kdWxlS2luZC5FUzIwMjA/SihoZSk6dm9pZCAwO2Nhc2UgMjcxOnJldHVybiBSKGhlKTtjYXNlIDI3Mjp2YXIgRj1oZTtyZXR1cm4gcShGKX1yZXR1cm4gaGV9ZnVuY3Rpb24gc2UoaGUpe3ZhciBGPWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lTGl0ZXJhbCh3LGhlLGUuRGVidWcuY2hlY2tEZWZpbmVkKG9lKSxFLFEsbGUpLHg9W107aWYoRiYmeC5wdXNoKEYpLCFmKXt2YXIgWD13LmNyZWF0ZVVuaXF1ZU5hbWUoXCJfY3JlYXRlUmVxdWlyZVwiLDQ4KSwkPXcuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx3LmNyZWF0ZUltcG9ydENsYXVzZSghMSx2b2lkIDAsdy5jcmVhdGVOYW1lZEltcG9ydHMoW3cuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKCExLHcuY3JlYXRlSWRlbnRpZmllcihcImNyZWF0ZVJlcXVpcmVcIiksWCldKSksdy5jcmVhdGVTdHJpbmdMaXRlcmFsKFwibW9kdWxlXCIpKSxBPXcuY3JlYXRlVW5pcXVlTmFtZShcIl9fcmVxdWlyZVwiLDQ4KSx5PXcuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLHcuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW3cuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihBLHZvaWQgMCx2b2lkIDAsdy5jcmVhdGVDYWxsRXhwcmVzc2lvbih3LmNsb25lTm9kZShYKSx2b2lkIDAsW3cuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHcuY3JlYXRlTWV0YVByb3BlcnR5KDEwMCx3LmNyZWF0ZUlkZW50aWZpZXIoXCJtZXRhXCIpKSx3LmNyZWF0ZUlkZW50aWZpZXIoXCJ1cmxcIikpXSkpXSxOPj0yPzI6MCkpO2Y9WyQseV19dmFyIFY9ZlsxXS5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zWzBdLm5hbWU7cmV0dXJuIGUuRGVidWcuYXNzZXJ0Tm9kZShWLGUuaXNJZGVudGlmaWVyKSx3LmNyZWF0ZUNhbGxFeHByZXNzaW9uKHcuY2xvbmVOb2RlKFYpLHZvaWQgMCx4KX1mdW5jdGlvbiBKKGhlKXtlLkRlYnVnLmFzc2VydChlLmlzRXh0ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihoZSksXCJpbXBvcnQ9IGZvciBpbnRlcm5hbCBtb2R1bGUgcmVmZXJlbmNlcyBzaG91bGQgYmUgaGFuZGxlZCBpbiBhbiBlYXJsaWVyIHRyYW5zZm9ybWVyLlwiKTt2YXIgRjtyZXR1cm4gRj1lLmFwcGVuZChGLGUuc2V0T3JpZ2luYWxOb2RlKGUuc2V0VGV4dFJhbmdlKHcuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLHcuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW3cuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbih3LmNsb25lTm9kZShoZS5uYW1lKSx2b2lkIDAsdm9pZCAwLHNlKGhlKSldLE4+PTI/MjowKSksaGUpLGhlKSksRj1pZShGLGhlKSxlLnNpbmdsZU9yTWFueShGKX1mdW5jdGlvbiBpZShoZSxGKXtyZXR1cm4gZS5oYXNTeW50YWN0aWNNb2RpZmllcihGLDEpJiYoaGU9ZS5hcHBlbmQoaGUsdy5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLEYuaXNUeXBlT25seSx3LmNyZWF0ZU5hbWVkRXhwb3J0cyhbdy5jcmVhdGVFeHBvcnRTcGVjaWZpZXIoITEsdm9pZCAwLGUuaWRUZXh0KEYubmFtZSkpXSkpKSksaGV9ZnVuY3Rpb24gUihoZSl7cmV0dXJuIGhlLmlzRXhwb3J0RXF1YWxzP3ZvaWQgMDpoZX1mdW5jdGlvbiBxKGhlKXtpZihsZS5tb2R1bGUhPT12b2lkIDAmJmxlLm1vZHVsZT5lLk1vZHVsZUtpbmQuRVMyMDE1fHwhaGUuZXhwb3J0Q2xhdXNlfHwhZS5pc05hbWVzcGFjZUV4cG9ydChoZS5leHBvcnRDbGF1c2UpfHwhaGUubW9kdWxlU3BlY2lmaWVyKXJldHVybiBoZTt2YXIgRj1oZS5leHBvcnRDbGF1c2UubmFtZSx4PXcuZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoRiksWD13LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdy5jcmVhdGVJbXBvcnRDbGF1c2UoITEsdm9pZCAwLHcuY3JlYXRlTmFtZXNwYWNlSW1wb3J0KHgpKSxoZS5tb2R1bGVTcGVjaWZpZXIsaGUuYXNzZXJ0Q2xhdXNlKTtlLnNldE9yaWdpbmFsTm9kZShYLGhlLmV4cG9ydENsYXVzZSk7dmFyICQ9ZS5pc0V4cG9ydE5hbWVzcGFjZUFzRGVmYXVsdERlY2xhcmF0aW9uKGhlKT93LmNyZWF0ZUV4cG9ydERlZmF1bHQoeCk6dy5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCExLHcuY3JlYXRlTmFtZWRFeHBvcnRzKFt3LmNyZWF0ZUV4cG9ydFNwZWNpZmllcighMSx4LEYpXSkpO3JldHVybiBlLnNldE9yaWdpbmFsTm9kZSgkLGhlKSxbWCwkXX1mdW5jdGlvbiBPKGhlLEYseCl7ZS5pc1NvdXJjZUZpbGUoRik/KChlLmlzRXh0ZXJuYWxNb2R1bGUoRil8fGxlLmlzb2xhdGVkTW9kdWxlcykmJmxlLmltcG9ydEhlbHBlcnMmJihHPW5ldyBlLk1hcCkscChoZSxGLHgpLEc9dm9pZCAwKTpwKGhlLEYseCl9ZnVuY3Rpb24gdmUoaGUsRil7cmV0dXJuIEY9bShoZSxGKSxHJiZlLmlzSWRlbnRpZmllcihGKSYmZS5nZXRFbWl0RmxhZ3MoRikmNDA5Nj9lZShGKTpGfWZ1bmN0aW9uIGVlKGhlKXt2YXIgRj1lLmlkVGV4dChoZSkseD1HLmdldChGKTtyZXR1cm4geHx8Ry5zZXQoRix4PXcuY3JlYXRlVW5pcXVlTmFtZShGLDQ4KSkseH19ZS50cmFuc2Zvcm1FQ01BU2NyaXB0TW9kdWxlPWF9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEMpe3ZhciB3PUMub25TdWJzdGl0dXRlTm9kZSxCPUMub25FbWl0Tm9kZSxFPWUudHJhbnNmb3JtRUNNQVNjcmlwdE1vZHVsZShDKSxRPUMub25TdWJzdGl0dXRlTm9kZSxsZT1DLm9uRW1pdE5vZGU7Qy5vblN1YnN0aXR1dGVOb2RlPXcsQy5vbkVtaXROb2RlPUI7dmFyIE49ZS50cmFuc2Zvcm1Nb2R1bGUoQykscD1DLm9uU3Vic3RpdHV0ZU5vZGUsbT1DLm9uRW1pdE5vZGU7Qy5vblN1YnN0aXR1dGVOb2RlPW9lLEMub25FbWl0Tm9kZT1mLEMuZW5hYmxlU3Vic3RpdHV0aW9uKDMwNSksQy5lbmFibGVFbWl0Tm90aWZpY2F0aW9uKDMwNSk7dmFyIEc7cmV0dXJuIGI7ZnVuY3Rpb24gb2UoSixpZSl7cmV0dXJuIGUuaXNTb3VyY2VGaWxlKGllKT8oRz1pZSx3KEosaWUpKTpHP0cuaW1wbGllZE5vZGVGb3JtYXQ9PT1lLk1vZHVsZUtpbmQuRVNOZXh0P1EoSixpZSk6cChKLGllKTp3KEosaWUpfWZ1bmN0aW9uIGYoSixpZSxSKXtyZXR1cm4gZS5pc1NvdXJjZUZpbGUoaWUpJiYoRz1pZSksRz9HLmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkVTTmV4dD9sZShKLGllLFIpOm0oSixpZSxSKTpCKEosaWUsUil9ZnVuY3Rpb24gVChKKXtyZXR1cm4gSi5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5FU05leHQ/RTpOfWZ1bmN0aW9uIEsoSil7aWYoSi5pc0RlY2xhcmF0aW9uRmlsZSlyZXR1cm4gSjtHPUo7dmFyIGllPVQoSikoSik7cmV0dXJuIEc9dm9pZCAwLGUuRGVidWcuYXNzZXJ0KGUuaXNTb3VyY2VGaWxlKGllKSksaWV9ZnVuY3Rpb24gYihKKXtyZXR1cm4gSi5raW5kPT09MzA1P0soSik6c2UoSil9ZnVuY3Rpb24gc2UoSil7cmV0dXJuIEMuZmFjdG9yeS5jcmVhdGVCdW5kbGUoZS5tYXAoSi5zb3VyY2VGaWxlcyxLKSxKLnByZXBlbmRzKX19ZS50cmFuc2Zvcm1Ob2RlTW9kdWxlPWF9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEIpe3JldHVybiBlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihCKXx8ZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oQil8fGUuaXNQcm9wZXJ0eVNpZ25hdHVyZShCKXx8ZS5pc0JpbmRpbmdFbGVtZW50KEIpfHxlLmlzU2V0QWNjZXNzb3IoQil8fGUuaXNHZXRBY2Nlc3NvcihCKXx8ZS5pc0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uKEIpfHxlLmlzQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uKEIpfHxlLmlzTWV0aG9kRGVjbGFyYXRpb24oQil8fGUuaXNNZXRob2RTaWduYXR1cmUoQil8fGUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKEIpfHxlLmlzUGFyYW1ldGVyKEIpfHxlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKEIpfHxlLmlzRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKEIpfHxlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oQil8fGUuaXNUeXBlQWxpYXNEZWNsYXJhdGlvbihCKXx8ZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oQil8fGUuaXNJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKEIpfHxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEIpfHxlLmlzSlNEb2NUeXBlQWxpYXMoQil9ZS5jYW5Qcm9kdWNlRGlhZ25vc3RpY3M9YTtmdW5jdGlvbiBDKEIpe2lmKGUuaXNTZXRBY2Nlc3NvcihCKXx8ZS5pc0dldEFjY2Vzc29yKEIpKXJldHVybiBFO3JldHVybiBlLmlzTWV0aG9kU2lnbmF0dXJlKEIpfHxlLmlzTWV0aG9kRGVjbGFyYXRpb24oQik/bGU6dyhCKTtmdW5jdGlvbiBFKHApe3ZhciBtPVEocCk7cmV0dXJuIG0hPT12b2lkIDA/e2RpYWdub3N0aWNNZXNzYWdlOm0sZXJyb3JOb2RlOkIsdHlwZU5hbWU6Qi5uYW1lfTp2b2lkIDB9ZnVuY3Rpb24gUShwKXtyZXR1cm4gZS5pc1N0YXRpYyhCKT9wLmVycm9yTW9kdWxlTmFtZT9wLmFjY2Vzc2liaWxpdHk9PT0yP2UuRGlhZ25vc3RpY3MuUHVibGljX3N0YXRpY19wcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfY2Fubm90X2JlX25hbWVkOmUuRGlhZ25vc3RpY3MuUHVibGljX3N0YXRpY19wcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUHVibGljX3N0YXRpY19wcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTpCLnBhcmVudC5raW5kPT09MjU3P3AuZXJyb3JNb2R1bGVOYW1lP3AuYWNjZXNzaWJpbGl0eT09PTI/ZS5EaWFnbm9zdGljcy5QdWJsaWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlB1YmxpY19wcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUHVibGljX3Byb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOnAuZXJyb3JNb2R1bGVOYW1lP2UuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzF9ZnVuY3Rpb24gbGUocCl7dmFyIG09TihwKTtyZXR1cm4gbSE9PXZvaWQgMD97ZGlhZ25vc3RpY01lc3NhZ2U6bSxlcnJvck5vZGU6Qix0eXBlTmFtZTpCLm5hbWV9OnZvaWQgMH1mdW5jdGlvbiBOKHApe3JldHVybiBlLmlzU3RhdGljKEIpP3AuZXJyb3JNb2R1bGVOYW1lP3AuYWNjZXNzaWJpbGl0eT09PTI/ZS5EaWFnbm9zdGljcy5QdWJsaWNfc3RhdGljX21ldGhvZF8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfY2Fubm90X2JlX25hbWVkOmUuRGlhZ25vc3RpY3MuUHVibGljX3N0YXRpY19tZXRob2RfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjplLkRpYWdub3N0aWNzLlB1YmxpY19zdGF0aWNfbWV0aG9kXzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOkIucGFyZW50LmtpbmQ9PT0yNTc/cC5lcnJvck1vZHVsZU5hbWU/cC5hY2Nlc3NpYmlsaXR5PT09Mj9lLkRpYWdub3N0aWNzLlB1YmxpY19tZXRob2RfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlB1YmxpY19tZXRob2RfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjplLkRpYWdub3N0aWNzLlB1YmxpY19tZXRob2RfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6cC5lcnJvck1vZHVsZU5hbWU/ZS5EaWFnbm9zdGljcy5NZXRob2RfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5NZXRob2RfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xfX1lLmNyZWF0ZUdldFN5bWJvbEFjY2Vzc2liaWxpdHlEaWFnbm9zdGljRm9yTm9kZU5hbWU9QztmdW5jdGlvbiB3KEIpe2lmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKEIpfHxlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihCKXx8ZS5pc1Byb3BlcnR5U2lnbmF0dXJlKEIpfHxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEIpfHxlLmlzQmluZGluZ0VsZW1lbnQoQil8fGUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKEIpKXJldHVybiBRO3JldHVybiBlLmlzU2V0QWNjZXNzb3IoQil8fGUuaXNHZXRBY2Nlc3NvcihCKT9sZTplLmlzQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb24oQil8fGUuaXNDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb24oQil8fGUuaXNNZXRob2REZWNsYXJhdGlvbihCKXx8ZS5pc01ldGhvZFNpZ25hdHVyZShCKXx8ZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oQil8fGUuaXNJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKEIpP046ZS5pc1BhcmFtZXRlcihCKT9lLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihCLEIucGFyZW50KSYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihCLnBhcmVudCw4KT9ROnA6ZS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihCKT9HOmUuaXNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoQik/b2U6ZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKEIpP2Y6ZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKEIpfHxlLmlzSlNEb2NUeXBlQWxpYXMoQik/VDplLkRlYnVnLmFzc2VydE5ldmVyKEIsXCJBdHRlbXB0ZWQgdG8gc2V0IGEgZGVjbGFyYXRpb24gZGlhZ25vc3RpYyBjb250ZXh0IGZvciB1bmhhbmRsZWQgbm9kZSBraW5kOiBcIi5jb25jYXQoZS5TeW50YXhLaW5kW0Iua2luZF0pKTtmdW5jdGlvbiBFKEspe2lmKEIua2luZD09PTI1NHx8Qi5raW5kPT09MjAzKXJldHVybiBLLmVycm9yTW9kdWxlTmFtZT9LLmFjY2Vzc2liaWxpdHk9PT0yP2UuRGlhZ25vc3RpY3MuRXhwb3J0ZWRfdmFyaWFibGVfMF9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLkV4cG9ydGVkX3ZhcmlhYmxlXzBfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5FeHBvcnRlZF92YXJpYWJsZV8wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTtpZihCLmtpbmQ9PT0xNjd8fEIua2luZD09PTIwNnx8Qi5raW5kPT09MTY2fHxCLmtpbmQ9PT0xNjQmJmUuaGFzU3ludGFjdGljTW9kaWZpZXIoQi5wYXJlbnQsOCkpcmV0dXJuIGUuaXNTdGF0aWMoQik/Sy5lcnJvck1vZHVsZU5hbWU/Sy5hY2Nlc3NpYmlsaXR5PT09Mj9lLkRpYWdub3N0aWNzLlB1YmxpY19zdGF0aWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlB1YmxpY19zdGF0aWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjplLkRpYWdub3N0aWNzLlB1YmxpY19zdGF0aWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6Qi5wYXJlbnQua2luZD09PTI1N3x8Qi5raW5kPT09MTY0P0suZXJyb3JNb2R1bGVOYW1lP0suYWNjZXNzaWJpbGl0eT09PTI/ZS5EaWFnbm9zdGljcy5QdWJsaWNfcHJvcGVydHlfMF9vZl9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlB1YmxpY19wcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUHVibGljX3Byb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOksuZXJyb3JNb2R1bGVOYW1lP2UuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9vZl9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX29mX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzF9ZnVuY3Rpb24gUShLKXt2YXIgYj1FKEspO3JldHVybiBiIT09dm9pZCAwP3tkaWFnbm9zdGljTWVzc2FnZTpiLGVycm9yTm9kZTpCLHR5cGVOYW1lOkIubmFtZX06dm9pZCAwfWZ1bmN0aW9uIGxlKEspe3ZhciBiO3JldHVybiBCLmtpbmQ9PT0xNzM/ZS5pc1N0YXRpYyhCKT9iPUsuZXJyb3JNb2R1bGVOYW1lP2UuRGlhZ25vc3RpY3MuUGFyYW1ldGVyX3R5cGVfb2ZfcHVibGljX3N0YXRpY19zZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyX3R5cGVfb2ZfcHVibGljX3N0YXRpY19zZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTpiPUsuZXJyb3JNb2R1bGVOYW1lP2UuRGlhZ25vc3RpY3MuUGFyYW1ldGVyX3R5cGVfb2ZfcHVibGljX3NldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfdHlwZV9vZl9wdWJsaWNfc2V0dGVyXzBfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6ZS5pc1N0YXRpYyhCKT9iPUsuZXJyb3JNb2R1bGVOYW1lP0suYWNjZXNzaWJpbGl0eT09PTI/ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX2dldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX2dldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX2dldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOmI9Sy5lcnJvck1vZHVsZU5hbWU/Sy5hY2Nlc3NpYmlsaXR5PT09Mj9lLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX3B1YmxpY19nZXR0ZXJfMF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfY2Fubm90X2JlX25hbWVkOmUuRGlhZ25vc3RpY3MuUmV0dXJuX3R5cGVfb2ZfcHVibGljX2dldHRlcl8wX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9wdWJsaWNfZ2V0dGVyXzBfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzEse2RpYWdub3N0aWNNZXNzYWdlOmIsZXJyb3JOb2RlOkIubmFtZSx0eXBlTmFtZTpCLm5hbWV9fWZ1bmN0aW9uIE4oSyl7dmFyIGI7c3dpdGNoKEIua2luZCl7Y2FzZSAxNzU6Yj1LLmVycm9yTW9kdWxlTmFtZT9lLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMTplLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzA7YnJlYWs7Y2FzZSAxNzQ6Yj1LLmVycm9yTW9kdWxlTmFtZT9lLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX2NhbGxfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzBfZnJvbV9wcml2YXRlX21vZHVsZV8xOmUuRGlhZ25vc3RpY3MuUmV0dXJuX3R5cGVfb2ZfY2FsbF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wO2JyZWFrO2Nhc2UgMTc2OmI9Sy5lcnJvck1vZHVsZU5hbWU/ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX3ByaXZhdGVfbW9kdWxlXzE6ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wO2JyZWFrO2Nhc2UgMTY5OmNhc2UgMTY4OmUuaXNTdGF0aWMoQik/Yj1LLmVycm9yTW9kdWxlTmFtZT9LLmFjY2Vzc2liaWxpdHk9PT0yP2UuRGlhZ25vc3RpY3MuUmV0dXJuX3R5cGVfb2ZfcHVibGljX3N0YXRpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzFfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX3ByaXZhdGVfbW9kdWxlXzE6ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9wdWJsaWNfc3RhdGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMDpCLnBhcmVudC5raW5kPT09MjU3P2I9Sy5lcnJvck1vZHVsZU5hbWU/Sy5hY2Nlc3NpYmlsaXR5PT09Mj9lLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzFfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMTplLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzA6Yj1LLmVycm9yTW9kdWxlTmFtZT9lLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX21ldGhvZF9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMTplLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX21ldGhvZF9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzA7YnJlYWs7Y2FzZSAyNTY6Yj1LLmVycm9yTW9kdWxlTmFtZT9LLmFjY2Vzc2liaWxpdHk9PT0yP2UuRGlhZ25vc3RpY3MuUmV0dXJuX3R5cGVfb2ZfZXhwb3J0ZWRfZnVuY3Rpb25faGFzX29yX2lzX3VzaW5nX25hbWVfMF9mcm9tX2V4dGVybmFsX21vZHVsZV8xX2J1dF9jYW5ub3RfYmVfbmFtZWQ6ZS5EaWFnbm9zdGljcy5SZXR1cm5fdHlwZV9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8wX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMTplLkRpYWdub3N0aWNzLlJldHVybl90eXBlX29mX2V4cG9ydGVkX2Z1bmN0aW9uX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMDticmVhaztkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoXCJUaGlzIGlzIHVua25vd24ga2luZCBmb3Igc2lnbmF0dXJlOiBcIitCLmtpbmQpfXJldHVybntkaWFnbm9zdGljTWVzc2FnZTpiLGVycm9yTm9kZTpCLm5hbWV8fEJ9fWZ1bmN0aW9uIHAoSyl7dmFyIGI9bShLKTtyZXR1cm4gYiE9PXZvaWQgMD97ZGlhZ25vc3RpY01lc3NhZ2U6YixlcnJvck5vZGU6Qix0eXBlTmFtZTpCLm5hbWV9OnZvaWQgMH1mdW5jdGlvbiBtKEspe3N3aXRjaChCLnBhcmVudC5raW5kKXtjYXNlIDE3MTpyZXR1cm4gSy5lcnJvck1vZHVsZU5hbWU/Sy5hY2Nlc3NpYmlsaXR5PT09Mj9lLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX29mX2NvbnN0cnVjdG9yX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9vZl9jb25zdHJ1Y3Rvcl9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfY29uc3RydWN0b3JfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE7Y2FzZSAxNzU6Y2FzZSAxODA6cmV0dXJuIEsuZXJyb3JNb2R1bGVOYW1lP2UuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfY29uc3RydWN0b3Jfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfY29uc3RydWN0b3Jfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTtjYXNlIDE3NDpyZXR1cm4gSy5lcnJvck1vZHVsZU5hbWU/ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9vZl9jYWxsX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjplLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX29mX2NhbGxfc2lnbmF0dXJlX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTtjYXNlIDE3NjpyZXR1cm4gSy5lcnJvck1vZHVsZU5hbWU/ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9vZl9pbmRleF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xO2Nhc2UgMTY5OmNhc2UgMTY4OnJldHVybiBlLmlzU3RhdGljKEIucGFyZW50KT9LLmVycm9yTW9kdWxlTmFtZT9LLmFjY2Vzc2liaWxpdHk9PT0yP2UuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfcHVibGljX3N0YXRpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX3ByaXZhdGVfbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9vZl9wdWJsaWNfc3RhdGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTpCLnBhcmVudC5wYXJlbnQua2luZD09PTI1Nz9LLmVycm9yTW9kdWxlTmFtZT9LLmFjY2Vzc2liaWxpdHk9PT0yP2UuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfcHVibGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9leHRlcm5hbF9tb2R1bGVfMl9idXRfY2Fubm90X2JlX25hbWVkOmUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfcHVibGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfcHVibGljX21ldGhvZF9mcm9tX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTpLLmVycm9yTW9kdWxlTmFtZT9lLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX29mX21ldGhvZF9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjplLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX29mX21ldGhvZF9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE7Y2FzZSAyNTY6Y2FzZSAxNzk6cmV0dXJuIEsuZXJyb3JNb2R1bGVOYW1lP0suYWNjZXNzaWJpbGl0eT09PTI/ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fZXh0ZXJuYWxfbW9kdWxlXzJfYnV0X2Nhbm5vdF9iZV9uYW1lZDplLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2Z1bmN0aW9uX2hhc19vcl9pc191c2luZ19uYW1lXzFfZnJvbV9wcml2YXRlX21vZHVsZV8yOmUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfZnVuY3Rpb25faGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xO2Nhc2UgMTczOmNhc2UgMTcyOnJldHVybiBLLmVycm9yTW9kdWxlTmFtZT9LLmFjY2Vzc2liaWxpdHk9PT0yP2UuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfb2ZfYWNjZXNzb3JfaGFzX29yX2lzX3VzaW5nX25hbWVfMV9mcm9tX2V4dGVybmFsX21vZHVsZV8yX2J1dF9jYW5ub3RfYmVfbmFtZWQ6ZS5EaWFnbm9zdGljcy5QYXJhbWV0ZXJfMF9vZl9hY2Nlc3Nvcl9oYXNfb3JfaXNfdXNpbmdfbmFtZV8xX2Zyb21fcHJpdmF0ZV9tb2R1bGVfMjplLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX29mX2FjY2Vzc29yX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWwoXCJVbmtub3duIHBhcmVudCBmb3IgcGFyYW1ldGVyOiBcIi5jb25jYXQoZS5TeW50YXhLaW5kW0IucGFyZW50LmtpbmRdKSl9fWZ1bmN0aW9uIEcoKXt2YXIgSztzd2l0Y2goQi5wYXJlbnQua2luZCl7Y2FzZSAyNTc6Sz1lLkRpYWdub3N0aWNzLlR5cGVfcGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xO2JyZWFrO2Nhc2UgMjU4Oks9ZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcl8wX29mX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE7YnJlYWs7Y2FzZSAxOTU6Sz1lLkRpYWdub3N0aWNzLlR5cGVfcGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfbWFwcGVkX29iamVjdF90eXBlX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xO2JyZWFrO2Nhc2UgMTgwOmNhc2UgMTc1Oks9ZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcl8wX29mX2NvbnN0cnVjdG9yX3NpZ25hdHVyZV9mcm9tX2V4cG9ydGVkX2ludGVyZmFjZV9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE7YnJlYWs7Y2FzZSAxNzQ6Sz1lLkRpYWdub3N0aWNzLlR5cGVfcGFyYW1ldGVyXzBfb2ZfY2FsbF9zaWduYXR1cmVfZnJvbV9leHBvcnRlZF9pbnRlcmZhY2VfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xO2JyZWFrO2Nhc2UgMTY5OmNhc2UgMTY4OmUuaXNTdGF0aWMoQi5wYXJlbnQpP0s9ZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcl8wX29mX3B1YmxpY19zdGF0aWNfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfY2xhc3NfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xOkIucGFyZW50LnBhcmVudC5raW5kPT09MjU3P0s9ZS5EaWFnbm9zdGljcy5UeXBlX3BhcmFtZXRlcl8wX29mX3B1YmxpY19tZXRob2RfZnJvbV9leHBvcnRlZF9jbGFzc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6Sz1lLkRpYWdub3N0aWNzLlR5cGVfcGFyYW1ldGVyXzBfb2ZfbWV0aG9kX2Zyb21fZXhwb3J0ZWRfaW50ZXJmYWNlX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTticmVhaztjYXNlIDE3OTpjYXNlIDI1NjpLPWUuRGlhZ25vc3RpY3MuVHlwZV9wYXJhbWV0ZXJfMF9vZl9leHBvcnRlZF9mdW5jdGlvbl9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE7YnJlYWs7Y2FzZSAyNTk6Sz1lLkRpYWdub3N0aWNzLlR5cGVfcGFyYW1ldGVyXzBfb2ZfZXhwb3J0ZWRfdHlwZV9hbGlhc19oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiVGhpcyBpcyB1bmtub3duIHBhcmVudCBmb3IgdHlwZSBwYXJhbWV0ZXI6IFwiK0IucGFyZW50LmtpbmQpfXJldHVybntkaWFnbm9zdGljTWVzc2FnZTpLLGVycm9yTm9kZTpCLHR5cGVOYW1lOkIubmFtZX19ZnVuY3Rpb24gb2UoKXt2YXIgSztyZXR1cm4gZS5pc0NsYXNzRGVjbGFyYXRpb24oQi5wYXJlbnQucGFyZW50KT9LPWUuaXNIZXJpdGFnZUNsYXVzZShCLnBhcmVudCkmJkIucGFyZW50LnRva2VuPT09MTE3P2UuRGlhZ25vc3RpY3MuSW1wbGVtZW50c19jbGF1c2Vfb2ZfZXhwb3J0ZWRfY2xhc3NfMF9oYXNfb3JfaXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzE6Qi5wYXJlbnQucGFyZW50Lm5hbWU/ZS5EaWFnbm9zdGljcy5leHRlbmRzX2NsYXVzZV9vZl9leHBvcnRlZF9jbGFzc18wX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMTplLkRpYWdub3N0aWNzLmV4dGVuZHNfY2xhdXNlX29mX2V4cG9ydGVkX2NsYXNzX2hhc19vcl9pc191c2luZ19wcml2YXRlX25hbWVfMDpLPWUuRGlhZ25vc3RpY3MuZXh0ZW5kc19jbGF1c2Vfb2ZfZXhwb3J0ZWRfaW50ZXJmYWNlXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xLHtkaWFnbm9zdGljTWVzc2FnZTpLLGVycm9yTm9kZTpCLHR5cGVOYW1lOmUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oQi5wYXJlbnQucGFyZW50KX19ZnVuY3Rpb24gZigpe3JldHVybntkaWFnbm9zdGljTWVzc2FnZTplLkRpYWdub3N0aWNzLkltcG9ydF9kZWNsYXJhdGlvbl8wX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xLGVycm9yTm9kZTpCLHR5cGVOYW1lOkIubmFtZX19ZnVuY3Rpb24gVChLKXtyZXR1cm57ZGlhZ25vc3RpY01lc3NhZ2U6Sy5lcnJvck1vZHVsZU5hbWU/ZS5EaWFnbm9zdGljcy5FeHBvcnRlZF90eXBlX2FsaWFzXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xX2Zyb21fbW9kdWxlXzI6ZS5EaWFnbm9zdGljcy5FeHBvcnRlZF90eXBlX2FsaWFzXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xLGVycm9yTm9kZTplLmlzSlNEb2NUeXBlQWxpYXMoQik/ZS5EZWJ1Zy5jaGVja0RlZmluZWQoQi50eXBlRXhwcmVzc2lvbik6Qi50eXBlLHR5cGVOYW1lOmUuaXNKU0RvY1R5cGVBbGlhcyhCKT9lLmdldE5hbWVPZkRlY2xhcmF0aW9uKEIpOkIubmFtZX19fWUuY3JlYXRlR2V0U3ltYm9sQWNjZXNzaWJpbGl0eURpYWdub3N0aWNGb3JOb2RlPXd9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKGYsVCxLKXt2YXIgYj1mLmdldENvbXBpbGVyT3B0aW9ucygpLHNlPWUudHJhbnNmb3JtTm9kZXMoVCxmLGUuZmFjdG9yeSxiLEs/W0tdOmUuZmlsdGVyKGYuZ2V0U291cmNlRmlsZXMoKSxlLmlzU291cmNlRmlsZU5vdEpzb24pLFtFXSwhMSk7cmV0dXJuIHNlLmRpYWdub3N0aWNzfWUuZ2V0RGVjbGFyYXRpb25EaWFnbm9zdGljcz1hO2Z1bmN0aW9uIEMoZixUKXt2YXIgSz1ULnRleHQuc3Vic3RyaW5nKGYucG9zLGYuZW5kKTtyZXR1cm4gZS5zdHJpbmdDb250YWlucyhLLFwiQGludGVybmFsXCIpfWZ1bmN0aW9uIHcoZixUKXt2YXIgSz1lLmdldFBhcnNlVHJlZU5vZGUoZik7aWYoSyYmSy5raW5kPT09MTY0KXt2YXIgYj1LLnBhcmVudC5wYXJhbWV0ZXJzLmluZGV4T2YoSyksc2U9Yj4wP0sucGFyZW50LnBhcmFtZXRlcnNbYi0xXTp2b2lkIDAsSj1ULnRleHQsaWU9c2U/ZS5jb25jYXRlbmF0ZShlLmdldFRyYWlsaW5nQ29tbWVudFJhbmdlcyhKLGUuc2tpcFRyaXZpYShKLHNlLmVuZCsxLCExLCEwKSksZS5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyhKLGYucG9zKSk6ZS5nZXRUcmFpbGluZ0NvbW1lbnRSYW5nZXMoSixlLnNraXBUcml2aWEoSixmLnBvcywhMSwhMCkpO3JldHVybiBpZSYmaWUubGVuZ3RoJiZDKGUubGFzdChpZSksVCl9dmFyIFI9SyYmZS5nZXRMZWFkaW5nQ29tbWVudFJhbmdlc09mTm9kZShLLFQpO3JldHVybiEhZS5mb3JFYWNoKFIsZnVuY3Rpb24ocSl7cmV0dXJuIEMocSxUKX0pfWUuaXNJbnRlcm5hbERlY2xhcmF0aW9uPXc7dmFyIEI9NTMxNDY5O2Z1bmN0aW9uIEUoZil7dmFyIFQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiRGlhZ25vc3RpYyBlbWl0dGVkIHdpdGhvdXQgY29udGV4dFwiKX0sSz1ULGI9ITAsc2U9ITEsSj0hMSxpZT0hMSxSPSExLHEsTyx2ZSxlZSxoZSxGLHg9Zi5mYWN0b3J5LFg9Zi5nZXRFbWl0SG9zdCgpLCQ9e3RyYWNrU3ltYm9sOmZlLHJlcG9ydEluYWNjZXNzaWJsZVRoaXNFcnJvcjpGZSxyZXBvcnRJbmFjY2Vzc2libGVVbmlxdWVTeW1ib2xFcnJvcjp1ZSxyZXBvcnRDeWNsaWNTdHJ1Y3R1cmVFcnJvcjpXZSxyZXBvcnRQcml2YXRlSW5CYXNlT2ZDbGFzc0V4cHJlc3Npb246ZyxyZXBvcnRMaWtlbHlVbnNhZmVJbXBvcnRSZXF1aXJlZEVycm9yOloscmVwb3J0VHJ1bmNhdGlvbkVycm9yOkJlLG1vZHVsZVJlc29sdmVySG9zdDpYLHRyYWNrUmVmZXJlbmNlZEFtYmllbnRNb2R1bGU6bCx0cmFja0V4dGVybmFsTW9kdWxlU3ltYm9sT2ZJbXBvcnRUeXBlTm9kZTpELHJlcG9ydE5vbmxvY2FsQXVnbWVudGF0aW9uOmdlLHJlcG9ydE5vblNlcmlhbGl6YWJsZVByb3BlcnR5OlJlfSxBLHksVixMLFAsayxZPWYuZ2V0RW1pdFJlc29sdmVyKCksVT1mLmdldENvbXBpbGVyT3B0aW9ucygpLGo9VS5ub1Jlc29sdmUsSD1VLnN0cmlwSW50ZXJuYWw7cmV0dXJuIEVlO2Z1bmN0aW9uIEkoX3Ipe2lmKCEhX3Ipe089T3x8bmV3IGUuU2V0O2Zvcih2YXIgcGk9MCxhZT1fcjtwaTxhZS5sZW5ndGg7cGkrKyl7dmFyIFhlPWFlW3BpXTtPLmFkZChYZSl9fX1mdW5jdGlvbiBsKF9yLHBpKXt2YXIgYWU9WS5nZXRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlc0ZvclN5bWJvbChwaSw2NzEwODg2Myk7aWYoZS5sZW5ndGgoYWUpKXJldHVybiBJKGFlKTt2YXIgWGU9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKF9yKTtMLnNldChlLmdldE9yaWdpbmFsTm9kZUlkKFhlKSxYZSl9ZnVuY3Rpb24gZChfcil7aWYoX3IuYWNjZXNzaWJpbGl0eT09PTApe2lmKF9yJiZfci5hbGlhc2VzVG9NYWtlVmlzaWJsZSlpZighdmUpdmU9X3IuYWxpYXNlc1RvTWFrZVZpc2libGU7ZWxzZSBmb3IodmFyIHBpPTAsYWU9X3IuYWxpYXNlc1RvTWFrZVZpc2libGU7cGk8YWUubGVuZ3RoO3BpKyspe3ZhciBYZT1hZVtwaV07ZS5wdXNoSWZVbmlxdWUodmUsWGUpfX1lbHNle3ZhciBKcj1LKF9yKTtpZihKcilyZXR1cm4gSnIudHlwZU5hbWU/Zi5hZGREaWFnbm9zdGljKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoX3IuZXJyb3JOb2RlfHxKci5lcnJvck5vZGUsSnIuZGlhZ25vc3RpY01lc3NhZ2UsZS5nZXRUZXh0T2ZOb2RlKEpyLnR5cGVOYW1lKSxfci5lcnJvclN5bWJvbE5hbWUsX3IuZXJyb3JNb2R1bGVOYW1lKSk6Zi5hZGREaWFnbm9zdGljKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoX3IuZXJyb3JOb2RlfHxKci5lcnJvck5vZGUsSnIuZGlhZ25vc3RpY01lc3NhZ2UsX3IuZXJyb3JTeW1ib2xOYW1lLF9yLmVycm9yTW9kdWxlTmFtZSkpLCEwfXJldHVybiExfWZ1bmN0aW9uIEQoX3Ipe3NlfHwoRnx8KEY9W10pKS5wdXNoKF9yKX1mdW5jdGlvbiBmZShfcixwaSxhZSl7aWYoX3IuZmxhZ3MmMjYyMTQ0KXJldHVybiExO3ZhciBYZT1kKFkuaXNTeW1ib2xBY2Nlc3NpYmxlKF9yLHBpLGFlLCEwKSk7cmV0dXJuIEkoWS5nZXRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlc0ZvclN5bWJvbChfcixhZSkpLFhlfWZ1bmN0aW9uIGcoX3IpeyhBfHx5KSYmZi5hZGREaWFnbm9zdGljKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoQXx8eSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfb2ZfZXhwb3J0ZWRfY2xhc3NfZXhwcmVzc2lvbl9tYXlfbm90X2JlX3ByaXZhdGVfb3JfcHJvdGVjdGVkLF9yKSl9ZnVuY3Rpb24gbmUoKXtyZXR1cm4gQT9lLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKEEpOnkmJmUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oeSk/ZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhlLmdldE5hbWVPZkRlY2xhcmF0aW9uKHkpKTp5JiZlLmlzRXhwb3J0QXNzaWdubWVudCh5KT95LmlzRXhwb3J0RXF1YWxzP1wiZXhwb3J0PVwiOlwiZGVmYXVsdFwiOlwiKE1pc3NpbmcpXCJ9ZnVuY3Rpb24gdWUoKXsoQXx8eSkmJmYuYWRkRGlhZ25vc3RpYyhlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKEF8fHksZS5EaWFnbm9zdGljcy5UaGVfaW5mZXJyZWRfdHlwZV9vZl8wX3JlZmVyZW5jZXNfYW5faW5hY2Nlc3NpYmxlXzFfdHlwZV9BX3R5cGVfYW5ub3RhdGlvbl9pc19uZWNlc3NhcnksbmUoKSxcInVuaXF1ZSBzeW1ib2xcIikpfWZ1bmN0aW9uIFdlKCl7KEF8fHkpJiZmLmFkZERpYWdub3N0aWMoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShBfHx5LGUuRGlhZ25vc3RpY3MuVGhlX2luZmVycmVkX3R5cGVfb2ZfMF9yZWZlcmVuY2VzX2FfdHlwZV93aXRoX2FfY3ljbGljX3N0cnVjdHVyZV93aGljaF9jYW5ub3RfYmVfdHJpdmlhbGx5X3NlcmlhbGl6ZWRfQV90eXBlX2Fubm90YXRpb25faXNfbmVjZXNzYXJ5LG5lKCkpKX1mdW5jdGlvbiBGZSgpeyhBfHx5KSYmZi5hZGREaWFnbm9zdGljKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoQXx8eSxlLkRpYWdub3N0aWNzLlRoZV9pbmZlcnJlZF90eXBlX29mXzBfcmVmZXJlbmNlc19hbl9pbmFjY2Vzc2libGVfMV90eXBlX0FfdHlwZV9hbm5vdGF0aW9uX2lzX25lY2Vzc2FyeSxuZSgpLFwidGhpc1wiKSl9ZnVuY3Rpb24gWihfcil7KEF8fHkpJiZmLmFkZERpYWdub3N0aWMoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShBfHx5LGUuRGlhZ25vc3RpY3MuVGhlX2luZmVycmVkX3R5cGVfb2ZfMF9jYW5ub3RfYmVfbmFtZWRfd2l0aG91dF9hX3JlZmVyZW5jZV90b18xX1RoaXNfaXNfbGlrZWx5X25vdF9wb3J0YWJsZV9BX3R5cGVfYW5ub3RhdGlvbl9pc19uZWNlc3NhcnksbmUoKSxfcikpfWZ1bmN0aW9uIEJlKCl7KEF8fHkpJiZmLmFkZERpYWdub3N0aWMoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShBfHx5LGUuRGlhZ25vc3RpY3MuVGhlX2luZmVycmVkX3R5cGVfb2ZfdGhpc19ub2RlX2V4Y2VlZHNfdGhlX21heGltdW1fbGVuZ3RoX3RoZV9jb21waWxlcl93aWxsX3NlcmlhbGl6ZV9Bbl9leHBsaWNpdF90eXBlX2Fubm90YXRpb25faXNfbmVlZGVkKSl9ZnVuY3Rpb24gZ2UoX3IscGksYWUpe3ZhciBYZSxKcj0oWGU9cGkuZGVjbGFyYXRpb25zKT09PW51bGx8fFhlPT09dm9pZCAwP3ZvaWQgMDpYZS5maW5kKGZ1bmN0aW9uKFdyKXtyZXR1cm4gZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKFdyKT09PV9yfSksdGk9ZS5maWx0ZXIoYWUuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKFdyKXtyZXR1cm4gZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKFdyKSE9PV9yfSk7aWYodGkpZm9yKHZhciBaZT0wLFNyPXRpO1plPFNyLmxlbmd0aDtaZSsrKXt2YXIgenI9U3JbWmVdO2YuYWRkRGlhZ25vc3RpYyhlLmFkZFJlbGF0ZWRJbmZvKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoenIsZS5EaWFnbm9zdGljcy5EZWNsYXJhdGlvbl9hdWdtZW50c19kZWNsYXJhdGlvbl9pbl9hbm90aGVyX2ZpbGVfVGhpc19jYW5ub3RfYmVfc2VyaWFsaXplZCksZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShKcixlLkRpYWdub3N0aWNzLlRoaXNfaXNfdGhlX2RlY2xhcmF0aW9uX2JlaW5nX2F1Z21lbnRlZF9Db25zaWRlcl9tb3ZpbmdfdGhlX2F1Z21lbnRpbmdfZGVjbGFyYXRpb25faW50b190aGVfc2FtZV9maWxlKSkpfX1mdW5jdGlvbiBSZShfcil7KEF8fHkpJiZmLmFkZERpYWdub3N0aWMoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShBfHx5LGUuRGlhZ25vc3RpY3MuVGhlX3R5cGVfb2ZfdGhpc19ub2RlX2Nhbm5vdF9iZV9zZXJpYWxpemVkX2JlY2F1c2VfaXRzX3Byb3BlcnR5XzBfY2Fubm90X2JlX3NlcmlhbGl6ZWQsX3IpKX1mdW5jdGlvbiB6ZShfcixwaSl7dmFyIGFlPUs7Sz1mdW5jdGlvbihKcil7cmV0dXJuIEpyLmVycm9yTm9kZSYmZS5jYW5Qcm9kdWNlRGlhZ25vc3RpY3MoSnIuZXJyb3JOb2RlKT9lLmNyZWF0ZUdldFN5bWJvbEFjY2Vzc2liaWxpdHlEaWFnbm9zdGljRm9yTm9kZShKci5lcnJvck5vZGUpKEpyKTp7ZGlhZ25vc3RpY01lc3NhZ2U6SnIuZXJyb3JNb2R1bGVOYW1lP2UuRGlhZ25vc3RpY3MuRGVjbGFyYXRpb25fZW1pdF9mb3JfdGhpc19maWxlX3JlcXVpcmVzX3VzaW5nX3ByaXZhdGVfbmFtZV8wX2Zyb21fbW9kdWxlXzFfQW5fZXhwbGljaXRfdHlwZV9hbm5vdGF0aW9uX21heV91bmJsb2NrX2RlY2xhcmF0aW9uX2VtaXQ6ZS5EaWFnbm9zdGljcy5EZWNsYXJhdGlvbl9lbWl0X2Zvcl90aGlzX2ZpbGVfcmVxdWlyZXNfdXNpbmdfcHJpdmF0ZV9uYW1lXzBfQW5fZXhwbGljaXRfdHlwZV9hbm5vdGF0aW9uX21heV91bmJsb2NrX2RlY2xhcmF0aW9uX2VtaXQsZXJyb3JOb2RlOkpyLmVycm9yTm9kZXx8X3J9fTt2YXIgWGU9WS5nZXREZWNsYXJhdGlvblN0YXRlbWVudHNGb3JTb3VyY2VGaWxlKF9yLEIsJCxwaSk7cmV0dXJuIEs9YWUsWGV9ZnVuY3Rpb24gRWUoX3Ipe2lmKF9yLmtpbmQ9PT0zMDUmJl9yLmlzRGVjbGFyYXRpb25GaWxlKXJldHVybiBfcjtpZihfci5raW5kPT09MzA2KXtzZT0hMCxMPW5ldyBlLk1hcCxQPW5ldyBlLk1hcDt2YXIgcGk9ITEsYWU9eC5jcmVhdGVCdW5kbGUoZS5tYXAoX3Iuc291cmNlRmlsZXMsZnVuY3Rpb24oT2Upe2lmKCFPZS5pc0RlY2xhcmF0aW9uRmlsZSl7aWYocGk9cGl8fE9lLmhhc05vRGVmYXVsdExpYixWPU9lLHE9T2UsdmU9dm9pZCAwLGhlPSExLGVlPW5ldyBlLk1hcCxLPVQsaWU9ITEsUj0hMSxIZShPZSxMKSxycihPZSxQKSxlLmlzRXh0ZXJuYWxPckNvbW1vbkpzTW9kdWxlKE9lKXx8ZS5pc0pzb25Tb3VyY2VGaWxlKE9lKSl7Sj0hMSxiPSExO3ZhciBucj1lLmlzU291cmNlRmlsZUpTKE9lKT94LmNyZWF0ZU5vZGVBcnJheSh6ZShPZSwhMCkpOmUudmlzaXROb2RlcyhPZS5zdGF0ZW1lbnRzLFVyKSxNcj14LnVwZGF0ZVNvdXJjZUZpbGUoT2UsW3guY3JlYXRlTW9kdWxlRGVjbGFyYXRpb24oW10sW3guY3JlYXRlTW9kaWZpZXIoMTM1KV0seC5jcmVhdGVTdHJpbmdMaXRlcmFsKGUuZ2V0UmVzb2x2ZWRFeHRlcm5hbE1vZHVsZU5hbWUoZi5nZXRFbWl0SG9zdCgpLE9lKSkseC5jcmVhdGVNb2R1bGVCbG9jayhlLnNldFRleHRSYW5nZSh4LmNyZWF0ZU5vZGVBcnJheSh5cihucikpLE9lLnN0YXRlbWVudHMpKSldLCEwLFtdLFtdLCExLFtdKTtyZXR1cm4gTXJ9Yj0hMDt2YXIgUGU9ZS5pc1NvdXJjZUZpbGVKUyhPZSk/eC5jcmVhdGVOb2RlQXJyYXkoemUoT2UpKTplLnZpc2l0Tm9kZXMoT2Uuc3RhdGVtZW50cyxVcik7cmV0dXJuIHgudXBkYXRlU291cmNlRmlsZShPZSx5cihQZSksITAsW10sW10sITEsW10pfX0pLGUubWFwRGVmaW5lZChfci5wcmVwZW5kcyxmdW5jdGlvbihPZSl7aWYoT2Uua2luZD09PTMwOCl7dmFyIG5yPWUuY3JlYXRlVW5wYXJzZWRTb3VyY2VGaWxlKE9lLFwiZHRzXCIsSCk7cmV0dXJuIHBpPXBpfHwhIW5yLmhhc05vRGVmYXVsdExpYixIZShucixMKSxJKGUubWFwKG5yLnR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzLGZ1bmN0aW9uKE1yKXtyZXR1cm5bTXIuZmlsZU5hbWUsTXIucmVzb2x1dGlvbk1vZGVdfSkpLHJyKG5yLFApLG5yfXJldHVybiBPZX0pKTthZS5zeW50aGV0aWNGaWxlUmVmZXJlbmNlcz1bXSxhZS5zeW50aGV0aWNUeXBlUmVmZXJlbmNlcz12cigpLGFlLnN5bnRoZXRpY0xpYlJlZmVyZW5jZXM9eGUoKSxhZS5oYXNOb0RlZmF1bHRMaWI9cGk7dmFyIFhlPWUuZ2V0RGlyZWN0b3J5UGF0aChlLm5vcm1hbGl6ZVNsYXNoZXMoZS5nZXRPdXRwdXRQYXRoc0ZvcihfcixYLCEwKS5kZWNsYXJhdGlvbkZpbGVQYXRoKSksSnI9QXIoYWUuc3ludGhldGljRmlsZVJlZmVyZW5jZXMsWGUpO3JldHVybiBMLmZvckVhY2goSnIpLGFlfWI9ITAsaWU9ITEsUj0hMSxxPV9yLFY9X3IsSz1ULHNlPSExLEo9ITEsaGU9ITEsdmU9dm9pZCAwLGVlPW5ldyBlLk1hcCxPPXZvaWQgMCxMPUhlKFYsbmV3IGUuTWFwKSxQPXJyKFYsbmV3IGUuTWFwKTt2YXIgdGk9W10sWmU9ZS5nZXREaXJlY3RvcnlQYXRoKGUubm9ybWFsaXplU2xhc2hlcyhlLmdldE91dHB1dFBhdGhzRm9yKF9yLFgsITApLmRlY2xhcmF0aW9uRmlsZVBhdGgpKSxTcj1Bcih0aSxaZSksenI7aWYoZS5pc1NvdXJjZUZpbGVKUyhWKSl6cj14LmNyZWF0ZU5vZGVBcnJheSh6ZShfcikpLEwuZm9yRWFjaChTciksaz1lLmZpbHRlcih6cixlLmlzQW55SW1wb3J0U3ludGF4KTtlbHNle3ZhciBXcj1lLnZpc2l0Tm9kZXMoX3Iuc3RhdGVtZW50cyxVcik7enI9ZS5zZXRUZXh0UmFuZ2UoeC5jcmVhdGVOb2RlQXJyYXkoeXIoV3IpKSxfci5zdGF0ZW1lbnRzKSxMLmZvckVhY2goU3IpLGs9ZS5maWx0ZXIoenIsZS5pc0FueUltcG9ydFN5bnRheCksZS5pc0V4dGVybmFsTW9kdWxlKF9yKSYmKCFKfHxpZSYmIVIpJiYoenI9ZS5zZXRUZXh0UmFuZ2UoeC5jcmVhdGVOb2RlQXJyYXkoVmUoVmUoW10senIsITApLFtlLmNyZWF0ZUVtcHR5RXhwb3J0cyh4KV0sITEpKSx6cikpfXZhciBKZT14LnVwZGF0ZVNvdXJjZUZpbGUoX3IsenIsITAsdGksdnIoKSxfci5oYXNOb0RlZmF1bHRMaWIseGUoKSk7cmV0dXJuIEplLmV4cG9ydGVkTW9kdWxlc0Zyb21EZWNsYXJhdGlvbkVtaXQ9RixKZTtmdW5jdGlvbiB4ZSgpe3JldHVybiBlLm1hcChlLmFycmF5RnJvbShQLmtleXMoKSksZnVuY3Rpb24oT2Upe3JldHVybntmaWxlTmFtZTpPZSxwb3M6LTEsZW5kOi0xfX0pfWZ1bmN0aW9uIHZyKCl7cmV0dXJuIE8/ZS5tYXBEZWZpbmVkKGUuYXJyYXlGcm9tKE8ua2V5cygpKSxtcik6W119ZnVuY3Rpb24gbXIoT2Upe3ZhciBucj1PZVswXSxNcj1PZVsxXTtpZihrKWZvcih2YXIgUGU9MCxVZT1rO1BlPFVlLmxlbmd0aDtQZSsrKXt2YXIgZnI9VWVbUGVdO2lmKGUuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihmcikmJmUuaXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZShmci5tb2R1bGVSZWZlcmVuY2UpKXt2YXIgRGU9ZnIubW9kdWxlUmVmZXJlbmNlLmV4cHJlc3Npb247aWYoZS5pc1N0cmluZ0xpdGVyYWxMaWtlKERlKSYmRGUudGV4dD09PW5yKXJldHVybn1lbHNlIGlmKGUuaXNJbXBvcnREZWNsYXJhdGlvbihmcikmJmUuaXNTdHJpbmdMaXRlcmFsKGZyLm1vZHVsZVNwZWNpZmllcikmJmZyLm1vZHVsZVNwZWNpZmllci50ZXh0PT09bnIpcmV0dXJufXJldHVybiBLZSh7ZmlsZU5hbWU6bnIscG9zOi0xLGVuZDotMX0sTXI/e3Jlc29sdXRpb25Nb2RlOk1yfTp2b2lkIDApfWZ1bmN0aW9uIEFyKE9lLG5yKXtyZXR1cm4gZnVuY3Rpb24oTXIpe3ZhciBQZTtpZihNci5pc0RlY2xhcmF0aW9uRmlsZSlQZT1Nci5maWxlTmFtZTtlbHNle2lmKHNlJiZlLmNvbnRhaW5zKF9yLnNvdXJjZUZpbGVzLE1yKSlyZXR1cm47dmFyIFVlPWUuZ2V0T3V0cHV0UGF0aHNGb3IoTXIsWCwhMCk7UGU9VWUuZGVjbGFyYXRpb25GaWxlUGF0aHx8VWUuanNGaWxlUGF0aHx8TXIuZmlsZU5hbWV9aWYoUGUpe3ZhciBmcj1lLm1vZHVsZVNwZWNpZmllcnMuZ2V0TW9kdWxlU3BlY2lmaWVyKFUsVixlLnRvUGF0aChucixYLmdldEN1cnJlbnREaXJlY3RvcnkoKSxYLmdldENhbm9uaWNhbEZpbGVOYW1lKSxlLnRvUGF0aChQZSxYLmdldEN1cnJlbnREaXJlY3RvcnkoKSxYLmdldENhbm9uaWNhbEZpbGVOYW1lKSxYKTtpZighZS5wYXRoSXNSZWxhdGl2ZShmcikpe0koW1tmcix2b2lkIDBdXSk7cmV0dXJufXZhciBEZT1lLmdldFJlbGF0aXZlUGF0aFRvRGlyZWN0b3J5T3JVcmwobnIsUGUsWC5nZXRDdXJyZW50RGlyZWN0b3J5KCksWC5nZXRDYW5vbmljYWxGaWxlTmFtZSwhMSk7aWYoZS5zdGFydHNXaXRoKERlLFwiLi9cIikmJmUuaGFzRXh0ZW5zaW9uKERlKSYmKERlPURlLnN1YnN0cmluZygyKSksZS5zdGFydHNXaXRoKERlLFwibm9kZV9tb2R1bGVzL1wiKXx8ZS5wYXRoQ29udGFpbnNOb2RlTW9kdWxlcyhEZSkpcmV0dXJuO09lLnB1c2goe3BvczotMSxlbmQ6LTEsZmlsZU5hbWU6RGV9KX19fX1mdW5jdGlvbiBIZShfcixwaSl7cmV0dXJuIGp8fCFlLmlzVW5wYXJzZWRTb3VyY2UoX3IpJiZlLmlzU291cmNlRmlsZUpTKF9yKXx8ZS5mb3JFYWNoKF9yLnJlZmVyZW5jZWRGaWxlcyxmdW5jdGlvbihhZSl7dmFyIFhlPVguZ2V0U291cmNlRmlsZUZyb21SZWZlcmVuY2UoX3IsYWUpO1hlJiZwaS5zZXQoZS5nZXRPcmlnaW5hbE5vZGVJZChYZSksWGUpfSkscGl9ZnVuY3Rpb24gcnIoX3IscGkpe3JldHVybiBlLmZvckVhY2goX3IubGliUmVmZXJlbmNlRGlyZWN0aXZlcyxmdW5jdGlvbihhZSl7dmFyIFhlPVguZ2V0TGliRmlsZUZyb21SZWZlcmVuY2UoYWUpO1hlJiZwaS5zZXQoZS50b0ZpbGVOYW1lTG93ZXJDYXNlKGFlLmZpbGVOYW1lKSwhMCl9KSxwaX1mdW5jdGlvbiBJZShfcil7aWYoX3Iua2luZD09PTc5KXJldHVybiBfcjtyZXR1cm4gX3Iua2luZD09PTIwMj94LnVwZGF0ZUFycmF5QmluZGluZ1BhdHRlcm4oX3IsZS52aXNpdE5vZGVzKF9yLmVsZW1lbnRzLHBpKSk6eC51cGRhdGVPYmplY3RCaW5kaW5nUGF0dGVybihfcixlLnZpc2l0Tm9kZXMoX3IuZWxlbWVudHMscGkpKTtmdW5jdGlvbiBwaShhZSl7cmV0dXJuIGFlLmtpbmQ9PT0yMjc/YWU6eC51cGRhdGVCaW5kaW5nRWxlbWVudChhZSxhZS5kb3REb3REb3RUb2tlbixhZS5wcm9wZXJ0eU5hbWUsSWUoYWUubmFtZSksd2UoYWUpP2FlLmluaXRpYWxpemVyOnZvaWQgMCl9fWZ1bmN0aW9uIF9lKF9yLHBpLGFlKXt2YXIgWGU7aGV8fChYZT1LLEs9ZS5jcmVhdGVHZXRTeW1ib2xBY2Nlc3NpYmlsaXR5RGlhZ25vc3RpY0Zvck5vZGUoX3IpKTt2YXIgSnI9eC51cGRhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihfcix2b2lkIDAsbGUoX3IscGkpLF9yLmRvdERvdERvdFRva2VuLEllKF9yLm5hbWUpLFkuaXNPcHRpb25hbFBhcmFtZXRlcihfcik/X3IucXVlc3Rpb25Ub2tlbnx8eC5jcmVhdGVUb2tlbig1Nyk6dm9pZCAwLHllKF9yLGFlfHxfci50eXBlLCEwKSxkZShfcikpO3JldHVybiBoZXx8KEs9WGUpLEpyfWZ1bmN0aW9uIHdlKF9yKXtyZXR1cm4gbShfcikmJlkuaXNMaXRlcmFsQ29uc3REZWNsYXJhdGlvbihlLmdldFBhcnNlVHJlZU5vZGUoX3IpKX1mdW5jdGlvbiBkZShfcil7aWYod2UoX3IpKXJldHVybiBZLmNyZWF0ZUxpdGVyYWxDb25zdFZhbHVlKGUuZ2V0UGFyc2VUcmVlTm9kZShfciksJCl9ZnVuY3Rpb24geWUoX3IscGksYWUpe2lmKCFhZSYmZS5oYXNFZmZlY3RpdmVNb2RpZmllcihfciw4KXx8d2UoX3IpKXJldHVybjt2YXIgWGU9X3Iua2luZD09PTE2NCYmKFkuaXNSZXF1aXJlZEluaXRpYWxpemVkUGFyYW1ldGVyKF9yKXx8WS5pc09wdGlvbmFsVW5pbml0aWFsaXplZFBhcmFtZXRlclByb3BlcnR5KF9yKSk7aWYocGkmJiFYZSlyZXR1cm4gZS52aXNpdE5vZGUocGksSXIpO2lmKCFlLmdldFBhcnNlVHJlZU5vZGUoX3IpKXJldHVybiBwaT9lLnZpc2l0Tm9kZShwaSxJcik6eC5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKTtpZihfci5raW5kPT09MTczKXJldHVybiB4LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxMzApO0E9X3IubmFtZTt2YXIgSnI7aWYoaGV8fChKcj1LLEs9ZS5jcmVhdGVHZXRTeW1ib2xBY2Nlc3NpYmlsaXR5RGlhZ25vc3RpY0Zvck5vZGUoX3IpKSxfci5raW5kPT09MjU0fHxfci5raW5kPT09MjAzKXJldHVybiB0aShZLmNyZWF0ZVR5cGVPZkRlY2xhcmF0aW9uKF9yLHEsQiwkKSk7aWYoX3Iua2luZD09PTE2NHx8X3Iua2luZD09PTE2N3x8X3Iua2luZD09PTE2NilyZXR1cm4gX3IuaW5pdGlhbGl6ZXI/dGkoWS5jcmVhdGVUeXBlT2ZEZWNsYXJhdGlvbihfcixxLEIsJCxYZSl8fFkuY3JlYXRlVHlwZU9mRXhwcmVzc2lvbihfci5pbml0aWFsaXplcixxLEIsJCkpOnRpKFkuY3JlYXRlVHlwZU9mRGVjbGFyYXRpb24oX3IscSxCLCQsWGUpKTtyZXR1cm4gdGkoWS5jcmVhdGVSZXR1cm5UeXBlT2ZTaWduYXR1cmVEZWNsYXJhdGlvbihfcixxLEIsJCkpO2Z1bmN0aW9uIHRpKFplKXtyZXR1cm4gQT12b2lkIDAsaGV8fChLPUpyKSxaZXx8eC5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTMwKX19ZnVuY3Rpb24gQWUoX3Ipe3N3aXRjaChfcj1lLmdldFBhcnNlVHJlZU5vZGUoX3IpLF9yLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjYxOmNhc2UgMjU4OmNhc2UgMjU3OmNhc2UgMjU5OmNhc2UgMjYwOnJldHVybiFZLmlzRGVjbGFyYXRpb25WaXNpYmxlKF9yKTtjYXNlIDI1NDpyZXR1cm4haXIoX3IpO2Nhc2UgMjY1OmNhc2UgMjY2OmNhc2UgMjcyOmNhc2UgMjcxOnJldHVybiExO2Nhc2UgMTcwOnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGVyKF9yKXt2YXIgcGk7aWYoX3IuYm9keSlyZXR1cm4hMDt2YXIgYWU9KHBpPV9yLnN5bWJvbC5kZWNsYXJhdGlvbnMpPT09bnVsbHx8cGk9PT12b2lkIDA/dm9pZCAwOnBpLmZpbHRlcihmdW5jdGlvbihYZSl7cmV0dXJuIGUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKFhlKSYmIVhlLmJvZHl9KTtyZXR1cm4hYWV8fGFlLmluZGV4T2YoX3IpPT09YWUubGVuZ3RoLTF9ZnVuY3Rpb24gaXIoX3Ipe3JldHVybiBlLmlzT21pdHRlZEV4cHJlc3Npb24oX3IpPyExOmUuaXNCaW5kaW5nUGF0dGVybihfci5uYW1lKT9lLnNvbWUoX3IubmFtZS5lbGVtZW50cyxpcik6WS5pc0RlY2xhcmF0aW9uVmlzaWJsZShfcil9ZnVuY3Rpb24gQ3IoX3IscGksYWUpe2lmKCFlLmhhc0VmZmVjdGl2ZU1vZGlmaWVyKF9yLDgpKXt2YXIgWGU9ZS5tYXAocGksZnVuY3Rpb24oSnIpe3JldHVybiBfZShKcixhZSl9KTtpZighIVhlKXJldHVybiB4LmNyZWF0ZU5vZGVBcnJheShYZSxwaS5oYXNUcmFpbGluZ0NvbW1hKX19ZnVuY3Rpb24gWWUoX3IscGkpe3ZhciBhZTtpZighcGkpe3ZhciBYZT1lLmdldFRoaXNQYXJhbWV0ZXIoX3IpO1hlJiYoYWU9W19lKFhlKV0pfWlmKGUuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKF9yKSl7dmFyIEpyPXZvaWQgMDtpZighcGkpe3ZhciB0aT1lLmdldFNldEFjY2Vzc29yVmFsdWVQYXJhbWV0ZXIoX3IpO2lmKHRpKXt2YXIgWmU9V3QoX3IsWS5nZXRBbGxBY2Nlc3NvckRlY2xhcmF0aW9ucyhfcikpO0pyPV9lKHRpLHZvaWQgMCxaZSl9fUpyfHwoSnI9eC5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxcInZhbHVlXCIpKSxhZT1lLmFwcGVuZChhZSxKcil9cmV0dXJuIHguY3JlYXRlTm9kZUFycmF5KGFlfHxlLmVtcHR5QXJyYXkpfWZ1bmN0aW9uIEJyKF9yLHBpKXtyZXR1cm4gZS5oYXNFZmZlY3RpdmVNb2RpZmllcihfciw4KT92b2lkIDA6ZS52aXNpdE5vZGVzKHBpLElyKX1mdW5jdGlvbiBFcihfcil7cmV0dXJuIGUuaXNTb3VyY2VGaWxlKF9yKXx8ZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKF9yKXx8ZS5pc01vZHVsZURlY2xhcmF0aW9uKF9yKXx8ZS5pc0NsYXNzRGVjbGFyYXRpb24oX3IpfHxlLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24oX3IpfHxlLmlzRnVuY3Rpb25MaWtlKF9yKXx8ZS5pc0luZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oX3IpfHxlLmlzTWFwcGVkVHlwZU5vZGUoX3IpfWZ1bmN0aW9uIE5lKF9yLHBpKXt2YXIgYWU9WS5pc0VudGl0eU5hbWVWaXNpYmxlKF9yLHBpKTtkKGFlKSxJKFkuZ2V0VHlwZVJlZmVyZW5jZURpcmVjdGl2ZXNGb3JFbnRpdHlOYW1lKF9yKSl9ZnVuY3Rpb24gbihfcixwaSl7cmV0dXJuIGUuaGFzSlNEb2NOb2RlcyhfcikmJmUuaGFzSlNEb2NOb2RlcyhwaSkmJihfci5qc0RvYz1waS5qc0RvYyksZS5zZXRDb21tZW50UmFuZ2UoX3IsZS5nZXRDb21tZW50UmFuZ2UocGkpKX1mdW5jdGlvbiBscihfcixwaSl7aWYoISFwaSl7aWYoSj1KfHxfci5raW5kIT09MjYxJiZfci5raW5kIT09MjAwLGUuaXNTdHJpbmdMaXRlcmFsTGlrZShwaSkpaWYoc2Upe3ZhciBhZT1lLmdldEV4dGVybmFsTW9kdWxlTmFtZUZyb21EZWNsYXJhdGlvbihmLmdldEVtaXRIb3N0KCksWSxfcik7aWYoYWUpcmV0dXJuIHguY3JlYXRlU3RyaW5nTGl0ZXJhbChhZSl9ZWxzZXt2YXIgWGU9WS5nZXRTeW1ib2xPZkV4dGVybmFsTW9kdWxlU3BlY2lmaWVyKHBpKTtYZSYmKEZ8fChGPVtdKSkucHVzaChYZSl9cmV0dXJuIHBpfX1mdW5jdGlvbiBiZShfcil7aWYoISFZLmlzRGVjbGFyYXRpb25WaXNpYmxlKF9yKSlpZihfci5tb2R1bGVSZWZlcmVuY2Uua2luZD09PTI3Nyl7dmFyIHBpPWUuZ2V0RXh0ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbkV4cHJlc3Npb24oX3IpO3JldHVybiB4LnVwZGF0ZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKF9yLHZvaWQgMCxfci5tb2RpZmllcnMsX3IuaXNUeXBlT25seSxfci5uYW1lLHgudXBkYXRlRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UoX3IubW9kdWxlUmVmZXJlbmNlLGxyKF9yLHBpKSkpfWVsc2V7dmFyIGFlPUs7cmV0dXJuIEs9ZS5jcmVhdGVHZXRTeW1ib2xBY2Nlc3NpYmlsaXR5RGlhZ25vc3RpY0Zvck5vZGUoX3IpLE5lKF9yLm1vZHVsZVJlZmVyZW5jZSxxKSxLPWFlLF9yfX1mdW5jdGlvbiBHZShfcil7aWYoIV9yLmltcG9ydENsYXVzZSlyZXR1cm4geC51cGRhdGVJbXBvcnREZWNsYXJhdGlvbihfcix2b2lkIDAsX3IubW9kaWZpZXJzLF9yLmltcG9ydENsYXVzZSxscihfcixfci5tb2R1bGVTcGVjaWZpZXIpLHVyKF9yLmFzc2VydENsYXVzZSkpO3ZhciBwaT1fci5pbXBvcnRDbGF1c2UmJl9yLmltcG9ydENsYXVzZS5uYW1lJiZZLmlzRGVjbGFyYXRpb25WaXNpYmxlKF9yLmltcG9ydENsYXVzZSk/X3IuaW1wb3J0Q2xhdXNlLm5hbWU6dm9pZCAwO2lmKCFfci5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncylyZXR1cm4gcGkmJngudXBkYXRlSW1wb3J0RGVjbGFyYXRpb24oX3Isdm9pZCAwLF9yLm1vZGlmaWVycyx4LnVwZGF0ZUltcG9ydENsYXVzZShfci5pbXBvcnRDbGF1c2UsX3IuaW1wb3J0Q2xhdXNlLmlzVHlwZU9ubHkscGksdm9pZCAwKSxscihfcixfci5tb2R1bGVTcGVjaWZpZXIpLHVyKF9yLmFzc2VydENsYXVzZSkpO2lmKF9yLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzLmtpbmQ9PT0yNjgpe3ZhciBhZT1ZLmlzRGVjbGFyYXRpb25WaXNpYmxlKF9yLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKT9fci5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5nczp2b2lkIDA7cmV0dXJuIHBpfHxhZT94LnVwZGF0ZUltcG9ydERlY2xhcmF0aW9uKF9yLHZvaWQgMCxfci5tb2RpZmllcnMseC51cGRhdGVJbXBvcnRDbGF1c2UoX3IuaW1wb3J0Q2xhdXNlLF9yLmltcG9ydENsYXVzZS5pc1R5cGVPbmx5LHBpLGFlKSxscihfcixfci5tb2R1bGVTcGVjaWZpZXIpLHVyKF9yLmFzc2VydENsYXVzZSkpOnZvaWQgMH12YXIgWGU9ZS5tYXBEZWZpbmVkKF9yLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzLmVsZW1lbnRzLGZ1bmN0aW9uKEpyKXtyZXR1cm4gWS5pc0RlY2xhcmF0aW9uVmlzaWJsZShKcik/SnI6dm9pZCAwfSk7aWYoWGUmJlhlLmxlbmd0aHx8cGkpcmV0dXJuIHgudXBkYXRlSW1wb3J0RGVjbGFyYXRpb24oX3Isdm9pZCAwLF9yLm1vZGlmaWVycyx4LnVwZGF0ZUltcG9ydENsYXVzZShfci5pbXBvcnRDbGF1c2UsX3IuaW1wb3J0Q2xhdXNlLmlzVHlwZU9ubHkscGksWGUmJlhlLmxlbmd0aD94LnVwZGF0ZU5hbWVkSW1wb3J0cyhfci5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncyxYZSk6dm9pZCAwKSxscihfcixfci5tb2R1bGVTcGVjaWZpZXIpLHVyKF9yLmFzc2VydENsYXVzZSkpO2lmKFkuaXNJbXBvcnRSZXF1aXJlZEJ5QXVnbWVudGF0aW9uKF9yKSlyZXR1cm4geC51cGRhdGVJbXBvcnREZWNsYXJhdGlvbihfcix2b2lkIDAsX3IubW9kaWZpZXJzLHZvaWQgMCxscihfcixfci5tb2R1bGVTcGVjaWZpZXIpLHVyKF9yLmFzc2VydENsYXVzZSkpfWZ1bmN0aW9uIHVyKF9yKXt2YXIgcGk9ZS5nZXRSZXNvbHV0aW9uTW9kZU92ZXJyaWRlRm9yQ2xhdXNlKF9yKTtpZihwaSE9PXZvaWQgMClyZXR1cm4gZS5pc05pZ2h0bHkoKXx8Zi5hZGREaWFnbm9zdGljKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoX3IsZS5EaWFnbm9zdGljcy5SZXNvbHV0aW9uX21vZGVfYXNzZXJ0aW9uc19hcmVfdW5zdGFibGVfVXNlX25pZ2h0bHlfVHlwZVNjcmlwdF90b19zaWxlbmNlX3RoaXNfZXJyb3JfVHJ5X3VwZGF0aW5nX3dpdGhfbnBtX2luc3RhbGxfRF90eXBlc2NyaXB0X25leHQpKSxfcn1mdW5jdGlvbiB5cihfcil7Zm9yKDtlLmxlbmd0aCh2ZSk7KXt2YXIgcGk9dmUuc2hpZnQoKTtpZighZS5pc0xhdGVWaXNpYmlsaXR5UGFpbnRlZFN0YXRlbWVudChwaSkpcmV0dXJuIGUuRGVidWcuZmFpbChcIkxhdGUgcmVwbGFjZWQgc3RhdGVtZW50IHdhcyBmb3VuZCB3aGljaCBpcyBub3QgaGFuZGxlZCBieSB0aGUgZGVjbGFyYXRpb24gdHJhbnNmb3JtZXIhOiBcIi5jb25jYXQoZS5TeW50YXhLaW5kP2UuU3ludGF4S2luZFtwaS5raW5kXTpwaS5raW5kKSk7dmFyIGFlPWI7Yj1waS5wYXJlbnQmJmUuaXNTb3VyY2VGaWxlKHBpLnBhcmVudCkmJiEoZS5pc0V4dGVybmFsTW9kdWxlKHBpLnBhcmVudCkmJnNlKTt2YXIgWGU9bWkocGkpO2I9YWUsZWUuc2V0KGUuZ2V0T3JpZ2luYWxOb2RlSWQocGkpLFhlKX1yZXR1cm4gZS52aXNpdE5vZGVzKF9yLEpyKTtmdW5jdGlvbiBKcih0aSl7aWYoZS5pc0xhdGVWaXNpYmlsaXR5UGFpbnRlZFN0YXRlbWVudCh0aSkpe3ZhciBaZT1lLmdldE9yaWdpbmFsTm9kZUlkKHRpKTtpZihlZS5oYXMoWmUpKXt2YXIgU3I9ZWUuZ2V0KFplKTtyZXR1cm4gZWUuZGVsZXRlKFplKSxTciYmKChlLmlzQXJyYXkoU3IpP2Uuc29tZShTcixlLm5lZWRzU2NvcGVNYXJrZXIpOmUubmVlZHNTY29wZU1hcmtlcihTcikpJiYoaWU9ITApLGUuaXNTb3VyY2VGaWxlKHRpLnBhcmVudCkmJihlLmlzQXJyYXkoU3IpP2Uuc29tZShTcixlLmlzRXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3IpOmUuaXNFeHRlcm5hbE1vZHVsZUluZGljYXRvcihTcikpJiYoSj0hMCkpLFNyfX1yZXR1cm4gdGl9fWZ1bmN0aW9uIElyKF9yKXtpZihEaShfcil8fGUuaXNEZWNsYXJhdGlvbihfcikmJihBZShfcil8fGUuaGFzRHluYW1pY05hbWUoX3IpJiYhWS5pc0xhdGVCb3VuZChlLmdldFBhcnNlVHJlZU5vZGUoX3IpKSl8fGUuaXNGdW5jdGlvbkxpa2UoX3IpJiZZLmlzSW1wbGVtZW50YXRpb25PZk92ZXJsb2FkKF9yKXx8ZS5pc1NlbWljb2xvbkNsYXNzRWxlbWVudChfcikpcmV0dXJuO3ZhciBwaTtFcihfcikmJihwaT1xLHE9X3IpO3ZhciBhZT1LLFhlPWUuY2FuUHJvZHVjZURpYWdub3N0aWNzKF9yKSxKcj1oZSx0aT0oX3Iua2luZD09PTE4Mnx8X3Iua2luZD09PTE5NSkmJl9yLnBhcmVudC5raW5kIT09MjU5O2lmKChlLmlzTWV0aG9kRGVjbGFyYXRpb24oX3IpfHxlLmlzTWV0aG9kU2lnbmF0dXJlKF9yKSkmJmUuaGFzRWZmZWN0aXZlTW9kaWZpZXIoX3IsOCkpcmV0dXJuIF9yLnN5bWJvbCYmX3Iuc3ltYm9sLmRlY2xhcmF0aW9ucyYmX3Iuc3ltYm9sLmRlY2xhcmF0aW9uc1swXSE9PV9yP3ZvaWQgMDpPZSh4LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLGV0KF9yKSxfci5uYW1lLHZvaWQgMCx2b2lkIDAsdm9pZCAwKSk7aWYoWGUmJiFoZSYmKEs9ZS5jcmVhdGVHZXRTeW1ib2xBY2Nlc3NpYmlsaXR5RGlhZ25vc3RpY0Zvck5vZGUoX3IpKSxlLmlzVHlwZVF1ZXJ5Tm9kZShfcikmJk5lKF9yLmV4cHJOYW1lLHEpLHRpJiYoaGU9ITApLG9lKF9yKSlzd2l0Y2goX3Iua2luZCl7Y2FzZSAyMjg6eyhlLmlzRW50aXR5TmFtZShfci5leHByZXNzaW9uKXx8ZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKF9yLmV4cHJlc3Npb24pKSYmTmUoX3IuZXhwcmVzc2lvbixxKTt2YXIgWmU9ZS52aXNpdEVhY2hDaGlsZChfcixJcixmKTtyZXR1cm4gT2UoeC51cGRhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoWmUsWmUuZXhwcmVzc2lvbixaZS50eXBlQXJndW1lbnRzKSl9Y2FzZSAxNzg6e05lKF9yLnR5cGVOYW1lLHEpO3ZhciBaZT1lLnZpc2l0RWFjaENoaWxkKF9yLElyLGYpO3JldHVybiBPZSh4LnVwZGF0ZVR5cGVSZWZlcmVuY2VOb2RlKFplLFplLnR5cGVOYW1lLFplLnR5cGVBcmd1bWVudHMpKX1jYXNlIDE3NTpyZXR1cm4gT2UoeC51cGRhdGVDb25zdHJ1Y3RTaWduYXR1cmUoX3IsQnIoX3IsX3IudHlwZVBhcmFtZXRlcnMpLENyKF9yLF9yLnBhcmFtZXRlcnMpLHllKF9yLF9yLnR5cGUpKSk7Y2FzZSAxNzE6e3ZhciBTcj14LmNyZWF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24odm9pZCAwLGV0KF9yKSxDcihfcixfci5wYXJhbWV0ZXJzLDApLHZvaWQgMCk7cmV0dXJuIE9lKFNyKX1jYXNlIDE2OTp7aWYoZS5pc1ByaXZhdGVJZGVudGlmaWVyKF9yLm5hbWUpKXJldHVybiBPZSh2b2lkIDApO3ZhciB6cj14LmNyZWF0ZU1ldGhvZERlY2xhcmF0aW9uKHZvaWQgMCxldChfciksdm9pZCAwLF9yLm5hbWUsX3IucXVlc3Rpb25Ub2tlbixCcihfcixfci50eXBlUGFyYW1ldGVycyksQ3IoX3IsX3IucGFyYW1ldGVycykseWUoX3IsX3IudHlwZSksdm9pZCAwKTtyZXR1cm4gT2UoenIpfWNhc2UgMTcyOntpZihlLmlzUHJpdmF0ZUlkZW50aWZpZXIoX3IubmFtZSkpcmV0dXJuIE9lKHZvaWQgMCk7dmFyIFdyPVd0KF9yLFkuZ2V0QWxsQWNjZXNzb3JEZWNsYXJhdGlvbnMoX3IpKTtyZXR1cm4gT2UoeC51cGRhdGVHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKF9yLHZvaWQgMCxldChfciksX3IubmFtZSxZZShfcixlLmhhc0VmZmVjdGl2ZU1vZGlmaWVyKF9yLDgpKSx5ZShfcixXciksdm9pZCAwKSl9Y2FzZSAxNzM6cmV0dXJuIGUuaXNQcml2YXRlSWRlbnRpZmllcihfci5uYW1lKT9PZSh2b2lkIDApOk9lKHgudXBkYXRlU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihfcix2b2lkIDAsZXQoX3IpLF9yLm5hbWUsWWUoX3IsZS5oYXNFZmZlY3RpdmVNb2RpZmllcihfciw4KSksdm9pZCAwKSk7Y2FzZSAxNjc6cmV0dXJuIGUuaXNQcml2YXRlSWRlbnRpZmllcihfci5uYW1lKT9PZSh2b2lkIDApOk9lKHgudXBkYXRlUHJvcGVydHlEZWNsYXJhdGlvbihfcix2b2lkIDAsZXQoX3IpLF9yLm5hbWUsX3IucXVlc3Rpb25Ub2tlbix5ZShfcixfci50eXBlKSxkZShfcikpKTtjYXNlIDE2NjpyZXR1cm4gZS5pc1ByaXZhdGVJZGVudGlmaWVyKF9yLm5hbWUpP09lKHZvaWQgMCk6T2UoeC51cGRhdGVQcm9wZXJ0eVNpZ25hdHVyZShfcixldChfciksX3IubmFtZSxfci5xdWVzdGlvblRva2VuLHllKF9yLF9yLnR5cGUpKSk7Y2FzZSAxNjg6cmV0dXJuIGUuaXNQcml2YXRlSWRlbnRpZmllcihfci5uYW1lKT9PZSh2b2lkIDApOk9lKHgudXBkYXRlTWV0aG9kU2lnbmF0dXJlKF9yLGV0KF9yKSxfci5uYW1lLF9yLnF1ZXN0aW9uVG9rZW4sQnIoX3IsX3IudHlwZVBhcmFtZXRlcnMpLENyKF9yLF9yLnBhcmFtZXRlcnMpLHllKF9yLF9yLnR5cGUpKSk7Y2FzZSAxNzQ6cmV0dXJuIE9lKHgudXBkYXRlQ2FsbFNpZ25hdHVyZShfcixCcihfcixfci50eXBlUGFyYW1ldGVycyksQ3IoX3IsX3IucGFyYW1ldGVycykseWUoX3IsX3IudHlwZSkpKTtjYXNlIDE3NjpyZXR1cm4gT2UoeC51cGRhdGVJbmRleFNpZ25hdHVyZShfcix2b2lkIDAsZXQoX3IpLENyKF9yLF9yLnBhcmFtZXRlcnMpLGUudmlzaXROb2RlKF9yLnR5cGUsSXIpfHx4LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxMzApKSk7Y2FzZSAyNTQ6cmV0dXJuIGUuaXNCaW5kaW5nUGF0dGVybihfci5uYW1lKT9vcihfci5uYW1lKToodGk9ITAsaGU9ITAsT2UoeC51cGRhdGVWYXJpYWJsZURlY2xhcmF0aW9uKF9yLF9yLm5hbWUsdm9pZCAwLHllKF9yLF9yLnR5cGUpLGRlKF9yKSkpKTtjYXNlIDE2MzpyZXR1cm4gd3IoX3IpJiYoX3IuZGVmYXVsdHx8X3IuY29uc3RyYWludCk/T2UoeC51cGRhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oX3IsX3IubW9kaWZpZXJzLF9yLm5hbWUsdm9pZCAwLHZvaWQgMCkpOk9lKGUudmlzaXRFYWNoQ2hpbGQoX3IsSXIsZikpO2Nhc2UgMTg5Ont2YXIgSmU9ZS52aXNpdE5vZGUoX3IuY2hlY2tUeXBlLElyKSx4ZT1lLnZpc2l0Tm9kZShfci5leHRlbmRzVHlwZSxJciksdnI9cTtxPV9yLnRydWVUeXBlO3ZhciBtcj1lLnZpc2l0Tm9kZShfci50cnVlVHlwZSxJcik7cT12cjt2YXIgQXI9ZS52aXNpdE5vZGUoX3IuZmFsc2VUeXBlLElyKTtyZXR1cm4gT2UoeC51cGRhdGVDb25kaXRpb25hbFR5cGVOb2RlKF9yLEplLHhlLG1yLEFyKSl9Y2FzZSAxNzk6cmV0dXJuIE9lKHgudXBkYXRlRnVuY3Rpb25UeXBlTm9kZShfcixlLnZpc2l0Tm9kZXMoX3IudHlwZVBhcmFtZXRlcnMsSXIpLENyKF9yLF9yLnBhcmFtZXRlcnMpLGUudmlzaXROb2RlKF9yLnR5cGUsSXIpKSk7Y2FzZSAxODA6cmV0dXJuIE9lKHgudXBkYXRlQ29uc3RydWN0b3JUeXBlTm9kZShfcixldChfciksZS52aXNpdE5vZGVzKF9yLnR5cGVQYXJhbWV0ZXJzLElyKSxDcihfcixfci5wYXJhbWV0ZXJzKSxlLnZpc2l0Tm9kZShfci50eXBlLElyKSkpO2Nhc2UgMjAwOnJldHVybiBlLmlzTGl0ZXJhbEltcG9ydFR5cGVOb2RlKF9yKT9PZSh4LnVwZGF0ZUltcG9ydFR5cGVOb2RlKF9yLHgudXBkYXRlTGl0ZXJhbFR5cGVOb2RlKF9yLmFyZ3VtZW50LGxyKF9yLF9yLmFyZ3VtZW50LmxpdGVyYWwpKSxfci5hc3NlcnRpb25zLF9yLnF1YWxpZmllcixlLnZpc2l0Tm9kZXMoX3IudHlwZUFyZ3VtZW50cyxJcixlLmlzVHlwZU5vZGUpLF9yLmlzVHlwZU9mKSk6T2UoX3IpO2RlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnROZXZlcihfcixcIkF0dGVtcHRlZCB0byBwcm9jZXNzIHVuaGFuZGxlZCBub2RlIGtpbmQ6IFwiLmNvbmNhdChlLlN5bnRheEtpbmRbX3Iua2luZF0pKX1yZXR1cm4gZS5pc1R1cGxlVHlwZU5vZGUoX3IpJiZlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFYsX3IucG9zKS5saW5lPT09ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihWLF9yLmVuZCkubGluZSYmZS5zZXRFbWl0RmxhZ3MoX3IsMSksT2UoZS52aXNpdEVhY2hDaGlsZChfcixJcixmKSk7ZnVuY3Rpb24gT2UobnIpe3JldHVybiBuciYmWGUmJmUuaGFzRHluYW1pY05hbWUoX3IpJiZzaShfciksRXIoX3IpJiYocT1waSksWGUmJiFoZSYmKEs9YWUpLHRpJiYoaGU9SnIpLG5yPT09X3I/bnI6bnImJmUuc2V0T3JpZ2luYWxOb2RlKG4obnIsX3IpLF9yKX19ZnVuY3Rpb24gd3IoX3Ipe3JldHVybiBfci5wYXJlbnQua2luZD09PTE2OSYmZS5oYXNFZmZlY3RpdmVNb2RpZmllcihfci5wYXJlbnQsOCl9ZnVuY3Rpb24gVXIoX3Ipe2lmKCEhRyhfcikmJiFEaShfcikpe3N3aXRjaChfci5raW5kKXtjYXNlIDI3MjpyZXR1cm4gZS5pc1NvdXJjZUZpbGUoX3IucGFyZW50KSYmKEo9ITApLFI9ITAseC51cGRhdGVFeHBvcnREZWNsYXJhdGlvbihfcix2b2lkIDAsX3IubW9kaWZpZXJzLF9yLmlzVHlwZU9ubHksX3IuZXhwb3J0Q2xhdXNlLGxyKF9yLF9yLm1vZHVsZVNwZWNpZmllciksZS5nZXRSZXNvbHV0aW9uTW9kZU92ZXJyaWRlRm9yQ2xhdXNlKF9yLmFzc2VydENsYXVzZSk/X3IuYXNzZXJ0Q2xhdXNlOnZvaWQgMCk7Y2FzZSAyNzE6e2lmKGUuaXNTb3VyY2VGaWxlKF9yLnBhcmVudCkmJihKPSEwKSxSPSEwLF9yLmV4cHJlc3Npb24ua2luZD09PTc5KXJldHVybiBfcjt2YXIgcGk9eC5jcmVhdGVVbmlxdWVOYW1lKFwiX2RlZmF1bHRcIiwxNik7Sz1mdW5jdGlvbigpe3JldHVybntkaWFnbm9zdGljTWVzc2FnZTplLkRpYWdub3N0aWNzLkRlZmF1bHRfZXhwb3J0X29mX3RoZV9tb2R1bGVfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8wLGVycm9yTm9kZTpfcn19LHk9X3I7dmFyIGFlPXguY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihwaSx2b2lkIDAsWS5jcmVhdGVUeXBlT2ZFeHByZXNzaW9uKF9yLmV4cHJlc3Npb24sX3IsQiwkKSx2b2lkIDApO3k9dm9pZCAwO3ZhciBYZT14LmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KGI/W3guY3JlYXRlTW9kaWZpZXIoMTM1KV06W10seC5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbYWVdLDIpKTtyZXR1cm4gbihYZSxfciksZS5yZW1vdmVBbGxDb21tZW50cyhfciksW1hlLHgudXBkYXRlRXhwb3J0QXNzaWdubWVudChfcixfci5kZWNvcmF0b3JzLF9yLm1vZGlmaWVycyxwaSldfX12YXIgSnI9bWkoX3IpO3JldHVybiBlZS5zZXQoZS5nZXRPcmlnaW5hbE5vZGVJZChfciksSnIpLF9yfX1mdW5jdGlvbiBpaShfcil7aWYoZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKF9yKXx8ZS5oYXNFZmZlY3RpdmVNb2RpZmllcihfciw1MTIpfHwhZS5jYW5IYXZlTW9kaWZpZXJzKF9yKSlyZXR1cm4gX3I7dmFyIHBpPXguY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKF9yKSYxMjU5NTApO3JldHVybiB4LnVwZGF0ZU1vZGlmaWVycyhfcixwaSl9ZnVuY3Rpb24gbWkoX3Ipe2lmKHZlKWZvcig7ZS5vcmRlcmVkUmVtb3ZlSXRlbSh2ZSxfcik7KTtpZihEaShfcikpcmV0dXJuO3N3aXRjaChfci5raW5kKXtjYXNlIDI2NTpyZXR1cm4gYmUoX3IpO2Nhc2UgMjY2OnJldHVybiBHZShfcil9aWYoZS5pc0RlY2xhcmF0aW9uKF9yKSYmQWUoX3IpfHxlLmlzRnVuY3Rpb25MaWtlKF9yKSYmWS5pc0ltcGxlbWVudGF0aW9uT2ZPdmVybG9hZChfcikpcmV0dXJuO3ZhciBwaTtFcihfcikmJihwaT1xLHE9X3IpO3ZhciBhZT1lLmNhblByb2R1Y2VEaWFnbm9zdGljcyhfciksWGU9SzthZSYmKEs9ZS5jcmVhdGVHZXRTeW1ib2xBY2Nlc3NpYmlsaXR5RGlhZ25vc3RpY0Zvck5vZGUoX3IpKTt2YXIgSnI9Yjtzd2l0Y2goX3Iua2luZCl7Y2FzZSAyNTk6cmV0dXJuIElpKHgudXBkYXRlVHlwZUFsaWFzRGVjbGFyYXRpb24oX3Isdm9pZCAwLGV0KF9yKSxfci5uYW1lLGUudmlzaXROb2Rlcyhfci50eXBlUGFyYW1ldGVycyxJcixlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKSxlLnZpc2l0Tm9kZShfci50eXBlLElyLGUuaXNUeXBlTm9kZSkpKTtjYXNlIDI1ODpyZXR1cm4gSWkoeC51cGRhdGVJbnRlcmZhY2VEZWNsYXJhdGlvbihfcix2b2lkIDAsZXQoX3IpLF9yLm5hbWUsQnIoX3IsX3IudHlwZVBhcmFtZXRlcnMpLFp0KF9yLmhlcml0YWdlQ2xhdXNlcyksZS52aXNpdE5vZGVzKF9yLm1lbWJlcnMsSXIpKSk7Y2FzZSAyNTY6e3ZhciB0aT1JaSh4LnVwZGF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oX3Isdm9pZCAwLGV0KF9yKSx2b2lkIDAsX3IubmFtZSxCcihfcixfci50eXBlUGFyYW1ldGVycyksQ3IoX3IsX3IucGFyYW1ldGVycykseWUoX3IsX3IudHlwZSksdm9pZCAwKSk7aWYodGkmJlkuaXNFeHBhbmRvRnVuY3Rpb25EZWNsYXJhdGlvbihfcikmJmVyKF9yKSl7dmFyIFplPVkuZ2V0UHJvcGVydGllc09mQ29udGFpbmVyRnVuY3Rpb24oX3IpLFNyPWUucGFyc2VOb2RlRmFjdG9yeS5jcmVhdGVNb2R1bGVEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHRpLm5hbWV8fHguY3JlYXRlSWRlbnRpZmllcihcIl9kZWZhdWx0XCIpLHguY3JlYXRlTW9kdWxlQmxvY2soW10pLDE2KTtlLnNldFBhcmVudChTcixxKSxTci5sb2NhbHM9ZS5jcmVhdGVTeW1ib2xUYWJsZShaZSksU3Iuc3ltYm9sPVplWzBdLnBhcmVudDt2YXIgenI9W10sV3I9ZS5tYXBEZWZpbmVkKFplLGZ1bmN0aW9uKEtpKXtpZighKCFLaS52YWx1ZURlY2xhcmF0aW9ufHwhZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihLaS52YWx1ZURlY2xhcmF0aW9uKSkpe0s9ZS5jcmVhdGVHZXRTeW1ib2xBY2Nlc3NpYmlsaXR5RGlhZ25vc3RpY0Zvck5vZGUoS2kudmFsdWVEZWNsYXJhdGlvbik7dmFyIEZpPVkuY3JlYXRlVHlwZU9mRGVjbGFyYXRpb24oS2kudmFsdWVEZWNsYXJhdGlvbixTcixCLCQpO0s9WGU7dmFyIHVpPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoS2kuZXNjYXBlZE5hbWUpLEJ0PWUuaXNTdHJpbmdBTm9uQ29udGV4dHVhbEtleXdvcmQodWkpLHd0PUJ0P3guZ2V0R2VuZXJhdGVkTmFtZUZvck5vZGUoS2kudmFsdWVEZWNsYXJhdGlvbik6eC5jcmVhdGVJZGVudGlmaWVyKHVpKTtCdCYmenIucHVzaChbd3QsdWldKTt2YXIgbmE9eC5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKHd0LHZvaWQgMCxGaSx2b2lkIDApO3JldHVybiB4LmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KEJ0P3ZvaWQgMDpbeC5jcmVhdGVUb2tlbig5MyldLHguY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW25hXSkpfX0pO3pyLmxlbmd0aD9Xci5wdXNoKHguY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSx4LmNyZWF0ZU5hbWVkRXhwb3J0cyhlLm1hcCh6cixmdW5jdGlvbihLaSl7dmFyIEZpPUtpWzBdLHVpPUtpWzFdO3JldHVybiB4LmNyZWF0ZUV4cG9ydFNwZWNpZmllcighMSxGaSx1aSl9KSkpKTpXcj1lLm1hcERlZmluZWQoV3IsZnVuY3Rpb24oS2kpe3JldHVybiB4LnVwZGF0ZU1vZGlmaWVycyhLaSwwKX0pO3ZhciBKZT14LmNyZWF0ZU1vZHVsZURlY2xhcmF0aW9uKHZvaWQgMCxldChfciksX3IubmFtZSx4LmNyZWF0ZU1vZHVsZUJsb2NrKFdyKSwxNik7aWYoIWUuaGFzRWZmZWN0aXZlTW9kaWZpZXIodGksNTEyKSlyZXR1cm5bdGksSmVdO3ZhciB4ZT14LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzKGUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFncyh0aSkmLTUxNHwyKSx2cj14LnVwZGF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24odGksdm9pZCAwLHhlLHZvaWQgMCx0aS5uYW1lLHRpLnR5cGVQYXJhbWV0ZXJzLHRpLnBhcmFtZXRlcnMsdGkudHlwZSx2b2lkIDApLG1yPXgudXBkYXRlTW9kdWxlRGVjbGFyYXRpb24oSmUsdm9pZCAwLHhlLEplLm5hbWUsSmUuYm9keSksQXI9eC5jcmVhdGVFeHBvcnRBc3NpZ25tZW50KHZvaWQgMCx2b2lkIDAsITEsSmUubmFtZSk7cmV0dXJuIGUuaXNTb3VyY2VGaWxlKF9yLnBhcmVudCkmJihKPSEwKSxSPSEwLFt2cixtcixBcl19ZWxzZSByZXR1cm4gdGl9Y2FzZSAyNjE6e2I9ITE7dmFyIE9lPV9yLmJvZHk7aWYoT2UmJk9lLmtpbmQ9PT0yNjIpe3ZhciBucj1pZSxNcj1SO1I9ITEsaWU9ITE7dmFyIFBlPWUudmlzaXROb2RlcyhPZS5zdGF0ZW1lbnRzLFVyKSxVZT15cihQZSk7X3IuZmxhZ3MmMTY3NzcyMTYmJihpZT0hMSksIWUuaXNHbG9iYWxTY29wZUF1Z21lbnRhdGlvbihfcikmJiFYaShVZSkmJiFSJiYoaWU/VWU9eC5jcmVhdGVOb2RlQXJyYXkoVmUoVmUoW10sVWUsITApLFtlLmNyZWF0ZUVtcHR5RXhwb3J0cyh4KV0sITEpKTpVZT1lLnZpc2l0Tm9kZXMoVWUsaWkpKTt2YXIgZnI9eC51cGRhdGVNb2R1bGVCbG9jayhPZSxVZSk7Yj1KcixpZT1ucixSPU1yO3ZhciBEZT1ldChfcik7cmV0dXJuIElpKHgudXBkYXRlTW9kdWxlRGVjbGFyYXRpb24oX3Isdm9pZCAwLERlLGUuaXNFeHRlcm5hbE1vZHVsZUF1Z21lbnRhdGlvbihfcik/bHIoX3IsX3IubmFtZSk6X3IubmFtZSxmcikpfWVsc2V7Yj1Kcjt2YXIgRGU9ZXQoX3IpO2I9ITEsZS52aXNpdE5vZGUoT2UsVXIpO3ZhciBncj1lLmdldE9yaWdpbmFsTm9kZUlkKE9lKSxmcj1lZS5nZXQoZ3IpO3JldHVybiBlZS5kZWxldGUoZ3IpLElpKHgudXBkYXRlTW9kdWxlRGVjbGFyYXRpb24oX3Isdm9pZCAwLERlLF9yLm5hbWUsZnIpKX19Y2FzZSAyNTc6e0E9X3IubmFtZSx5PV9yO3ZhciB4ZT14LmNyZWF0ZU5vZGVBcnJheShldChfcikpLFZyPUJyKF9yLF9yLnR5cGVQYXJhbWV0ZXJzKSxUcj1lLmdldEZpcnN0Q29uc3RydWN0b3JXaXRoQm9keShfciksdmk9dm9pZCAwO2lmKFRyKXt2YXIgVWk9Szt2aT1lLmNvbXBhY3QoZS5mbGF0TWFwKFRyLnBhcmFtZXRlcnMsZnVuY3Rpb24oRmkpe2lmKCFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKEZpLDE2NDc2KXx8RGkoRmkpKXJldHVybjtpZihLPWUuY3JlYXRlR2V0U3ltYm9sQWNjZXNzaWJpbGl0eURpYWdub3N0aWNGb3JOb2RlKEZpKSxGaS5uYW1lLmtpbmQ9PT03OSlyZXR1cm4gbih4LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLGV0KEZpKSxGaS5uYW1lLEZpLnF1ZXN0aW9uVG9rZW4seWUoRmksRmkudHlwZSksZGUoRmkpKSxGaSk7cmV0dXJuIHVpKEZpLm5hbWUpO2Z1bmN0aW9uIHVpKEJ0KXtmb3IodmFyIHd0LG5hPTAsQWk9QnQuZWxlbWVudHM7bmE8QWkubGVuZ3RoO25hKyspe3ZhciBPaT1BaVtuYV07ZS5pc09taXR0ZWRFeHByZXNzaW9uKE9pKXx8KGUuaXNCaW5kaW5nUGF0dGVybihPaS5uYW1lKSYmKHd0PWUuY29uY2F0ZW5hdGUod3QsdWkoT2kubmFtZSkpKSx3dD13dHx8W10sd3QucHVzaCh4LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLGV0KEZpKSxPaS5uYW1lLHZvaWQgMCx5ZShPaSx2b2lkIDApLHZvaWQgMCkpKX1yZXR1cm4gd3R9fSkpLEs9VWl9dmFyIFlpPWUuc29tZShfci5tZW1iZXJzLGZ1bmN0aW9uKEZpKXtyZXR1cm4hIUZpLm5hbWUmJmUuaXNQcml2YXRlSWRlbnRpZmllcihGaS5uYW1lKX0pLFdpPVlpP1t4LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx4LmNyZWF0ZVByaXZhdGVJZGVudGlmaWVyKFwiI3ByaXZhdGVcIiksdm9pZCAwLHZvaWQgMCx2b2lkIDApXTp2b2lkIDAsY3Q9ZS5jb25jYXRlbmF0ZShlLmNvbmNhdGVuYXRlKFdpLHZpKSxlLnZpc2l0Tm9kZXMoX3IubWVtYmVycyxJcikpLExpPXguY3JlYXRlTm9kZUFycmF5KGN0KSxudD1lLmdldEVmZmVjdGl2ZUJhc2VUeXBlTm9kZShfcik7aWYobnQmJiFlLmlzRW50aXR5TmFtZUV4cHJlc3Npb24obnQuZXhwcmVzc2lvbikmJm50LmV4cHJlc3Npb24ua2luZCE9PTEwNCl7dmFyIE10PV9yLm5hbWU/ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyhfci5uYW1lLmVzY2FwZWRUZXh0KTpcImRlZmF1bHRcIix4dD14LmNyZWF0ZVVuaXF1ZU5hbWUoXCJcIi5jb25jYXQoTXQsXCJfYmFzZVwiKSwxNik7Sz1mdW5jdGlvbigpe3JldHVybntkaWFnbm9zdGljTWVzc2FnZTplLkRpYWdub3N0aWNzLmV4dGVuZHNfY2xhdXNlX29mX2V4cG9ydGVkX2NsYXNzXzBfaGFzX29yX2lzX3VzaW5nX3ByaXZhdGVfbmFtZV8xLGVycm9yTm9kZTpudCx0eXBlTmFtZTpfci5uYW1lfX07dmFyIHV0PXguY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbih4dCx2b2lkIDAsWS5jcmVhdGVUeXBlT2ZFeHByZXNzaW9uKG50LmV4cHJlc3Npb24sX3IsQiwkKSx2b2lkIDApLER0PXguY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQoYj9beC5jcmVhdGVNb2RpZmllcigxMzUpXTpbXSx4LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFt1dF0sMikpLFJ0PXguY3JlYXRlTm9kZUFycmF5KGUubWFwKF9yLmhlcml0YWdlQ2xhdXNlcyxmdW5jdGlvbihGaSl7aWYoRmkudG9rZW49PT05NCl7dmFyIHVpPUs7Sz1lLmNyZWF0ZUdldFN5bWJvbEFjY2Vzc2liaWxpdHlEaWFnbm9zdGljRm9yTm9kZShGaS50eXBlc1swXSk7dmFyIEJ0PXgudXBkYXRlSGVyaXRhZ2VDbGF1c2UoRmksZS5tYXAoRmkudHlwZXMsZnVuY3Rpb24od3Qpe3JldHVybiB4LnVwZGF0ZUV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cyh3dCx4dCxlLnZpc2l0Tm9kZXMod3QudHlwZUFyZ3VtZW50cyxJcikpfSkpO3JldHVybiBLPXVpLEJ0fXJldHVybiB4LnVwZGF0ZUhlcml0YWdlQ2xhdXNlKEZpLGUudmlzaXROb2Rlcyh4LmNyZWF0ZU5vZGVBcnJheShlLmZpbHRlcihGaS50eXBlcyxmdW5jdGlvbih3dCl7cmV0dXJuIGUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbih3dC5leHByZXNzaW9uKXx8d3QuZXhwcmVzc2lvbi5raW5kPT09MTA0fSkpLElyKSl9KSk7cmV0dXJuW0R0LElpKHgudXBkYXRlQ2xhc3NEZWNsYXJhdGlvbihfcix2b2lkIDAseGUsX3IubmFtZSxWcixSdCxMaSkpXX1lbHNle3ZhciBSdD1adChfci5oZXJpdGFnZUNsYXVzZXMpO3JldHVybiBJaSh4LnVwZGF0ZUNsYXNzRGVjbGFyYXRpb24oX3Isdm9pZCAwLHhlLF9yLm5hbWUsVnIsUnQsTGkpKX19Y2FzZSAyMzc6cmV0dXJuIElpKHBlKF9yKSk7Y2FzZSAyNjA6cmV0dXJuIElpKHgudXBkYXRlRW51bURlY2xhcmF0aW9uKF9yLHZvaWQgMCx4LmNyZWF0ZU5vZGVBcnJheShldChfcikpLF9yLm5hbWUseC5jcmVhdGVOb2RlQXJyYXkoZS5tYXBEZWZpbmVkKF9yLm1lbWJlcnMsZnVuY3Rpb24oS2kpe2lmKCFEaShLaSkpe3ZhciBGaT1ZLmdldENvbnN0YW50VmFsdWUoS2kpO3JldHVybiBuKHgudXBkYXRlRW51bU1lbWJlcihLaSxLaS5uYW1lLEZpIT09dm9pZCAwP3R5cGVvZiBGaT09XCJzdHJpbmdcIj94LmNyZWF0ZVN0cmluZ0xpdGVyYWwoRmkpOnguY3JlYXRlTnVtZXJpY0xpdGVyYWwoRmkpOnZvaWQgMCksS2kpfX0pKSkpfXJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKF9yLFwiVW5oYW5kbGVkIHRvcC1sZXZlbCBub2RlIGluIGRlY2xhcmF0aW9uIGVtaXQ6IFwiLmNvbmNhdChlLlN5bnRheEtpbmRbX3Iua2luZF0pKTtmdW5jdGlvbiBJaShLaSl7cmV0dXJuIEVyKF9yKSYmKHE9cGkpLGFlJiYoSz1YZSksX3Iua2luZD09PTI2MSYmKGI9SnIpLEtpPT09X3I/S2k6KHk9dm9pZCAwLEE9dm9pZCAwLEtpJiZlLnNldE9yaWdpbmFsTm9kZShuKEtpLF9yKSxfcikpfX1mdW5jdGlvbiBwZShfcil7aWYoISFlLmZvckVhY2goX3IuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucyxpcikpe3ZhciBwaT1lLnZpc2l0Tm9kZXMoX3IuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucyxJcik7aWYoISFlLmxlbmd0aChwaSkpcmV0dXJuIHgudXBkYXRlVmFyaWFibGVTdGF0ZW1lbnQoX3IseC5jcmVhdGVOb2RlQXJyYXkoZXQoX3IpKSx4LnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KF9yLmRlY2xhcmF0aW9uTGlzdCxwaSkpfX1mdW5jdGlvbiBvcihfcil7cmV0dXJuIGUuZmxhdHRlbihlLm1hcERlZmluZWQoX3IuZWxlbWVudHMsZnVuY3Rpb24ocGkpe3JldHVybiBxcihwaSl9KSl9ZnVuY3Rpb24gcXIoX3Ipe2lmKF9yLmtpbmQhPT0yMjcmJl9yLm5hbWUpcmV0dXJuIGlyKF9yKT9lLmlzQmluZGluZ1BhdHRlcm4oX3IubmFtZSk/b3IoX3IubmFtZSk6eC5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKF9yLm5hbWUsdm9pZCAwLHllKF9yLHZvaWQgMCksdm9pZCAwKTp2b2lkIDB9ZnVuY3Rpb24gc2koX3Ipe3ZhciBwaTtoZXx8KHBpPUssSz1lLmNyZWF0ZUdldFN5bWJvbEFjY2Vzc2liaWxpdHlEaWFnbm9zdGljRm9yTm9kZU5hbWUoX3IpKSxBPV9yLm5hbWUsZS5EZWJ1Zy5hc3NlcnQoWS5pc0xhdGVCb3VuZChlLmdldFBhcnNlVHJlZU5vZGUoX3IpKSk7dmFyIGFlPV9yLFhlPWFlLm5hbWUuZXhwcmVzc2lvbjtOZShYZSxxKSxoZXx8KEs9cGkpLEE9dm9pZCAwfWZ1bmN0aW9uIERpKF9yKXtyZXR1cm4hIUgmJiEhX3ImJncoX3IsVil9ZnVuY3Rpb24gd2koX3Ipe3JldHVybiBlLmlzRXhwb3J0QXNzaWdubWVudChfcil8fGUuaXNFeHBvcnREZWNsYXJhdGlvbihfcil9ZnVuY3Rpb24gWGkoX3Ipe3JldHVybiBlLnNvbWUoX3Isd2kpfWZ1bmN0aW9uIGV0KF9yKXt2YXIgcGk9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKF9yKSxhZT1HaShfcik7cmV0dXJuIHBpPT09YWU/X3IubW9kaWZpZXJzOnguY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoYWUpfWZ1bmN0aW9uIEdpKF9yKXt2YXIgcGk9MTA5MzA3LGFlPWImJiFRKF9yKT8yOjAsWGU9X3IucGFyZW50LmtpbmQ9PT0zMDU7cmV0dXJuKCFYZXx8c2UmJlhlJiZlLmlzRXh0ZXJuYWxNb2R1bGUoX3IucGFyZW50KSkmJihwaV49MixhZT0wKSxOKF9yLHBpLGFlKX1mdW5jdGlvbiBXdChfcixwaSl7dmFyIGFlPXAoX3IpO3JldHVybiFhZSYmX3IhPT1waS5maXJzdEFjY2Vzc29yJiYoYWU9cChwaS5maXJzdEFjY2Vzc29yKSxLPWUuY3JlYXRlR2V0U3ltYm9sQWNjZXNzaWJpbGl0eURpYWdub3N0aWNGb3JOb2RlKHBpLmZpcnN0QWNjZXNzb3IpKSwhYWUmJnBpLnNlY29uZEFjY2Vzc29yJiZfciE9PXBpLnNlY29uZEFjY2Vzc29yJiYoYWU9cChwaS5zZWNvbmRBY2Nlc3NvciksSz1lLmNyZWF0ZUdldFN5bWJvbEFjY2Vzc2liaWxpdHlEaWFnbm9zdGljRm9yTm9kZShwaS5zZWNvbmRBY2Nlc3NvcikpLGFlfWZ1bmN0aW9uIFp0KF9yKXtyZXR1cm4geC5jcmVhdGVOb2RlQXJyYXkoZS5maWx0ZXIoZS5tYXAoX3IsZnVuY3Rpb24ocGkpe3JldHVybiB4LnVwZGF0ZUhlcml0YWdlQ2xhdXNlKHBpLGUudmlzaXROb2Rlcyh4LmNyZWF0ZU5vZGVBcnJheShlLmZpbHRlcihwaS50eXBlcyxmdW5jdGlvbihhZSl7cmV0dXJuIGUuaXNFbnRpdHlOYW1lRXhwcmVzc2lvbihhZS5leHByZXNzaW9uKXx8cGkudG9rZW49PT05NCYmYWUuZXhwcmVzc2lvbi5raW5kPT09MTA0fSkpLElyKSl9KSxmdW5jdGlvbihwaSl7cmV0dXJuIHBpLnR5cGVzJiYhIXBpLnR5cGVzLmxlbmd0aH0pKX19ZS50cmFuc2Zvcm1EZWNsYXJhdGlvbnM9RTtmdW5jdGlvbiBRKGYpe3JldHVybiBmLmtpbmQ9PT0yNTh9ZnVuY3Rpb24gbGUoZixULEspe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoTihmLFQsSykpfWZ1bmN0aW9uIE4oZixULEspe1Q9PT12b2lkIDAmJihUPTEyNTk0NyksSz09PXZvaWQgMCYmKEs9MCk7dmFyIGI9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKGYpJlR8SztyZXR1cm4gYiY1MTImJiEoYiYxKSYmKGJePTEpLGImNTEyJiZiJjImJihiXj0yKSxifWZ1bmN0aW9uIHAoZil7aWYoZilyZXR1cm4gZi5raW5kPT09MTcyP2YudHlwZTpmLnBhcmFtZXRlcnMubGVuZ3RoPjA/Zi5wYXJhbWV0ZXJzWzBdLnR5cGU6dm9pZCAwfWZ1bmN0aW9uIG0oZil7c3dpdGNoKGYua2luZCl7Y2FzZSAxNjc6Y2FzZSAxNjY6cmV0dXJuIWUuaGFzRWZmZWN0aXZlTW9kaWZpZXIoZiw4KTtjYXNlIDE2NDpjYXNlIDI1NDpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBHKGYpe3N3aXRjaChmLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjYxOmNhc2UgMjY1OmNhc2UgMjU4OmNhc2UgMjU3OmNhc2UgMjU5OmNhc2UgMjYwOmNhc2UgMjM3OmNhc2UgMjY2OmNhc2UgMjcyOmNhc2UgMjcxOnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIG9lKGYpe3N3aXRjaChmLmtpbmQpe2Nhc2UgMTc1OmNhc2UgMTcxOmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMTY3OmNhc2UgMTY2OmNhc2UgMTY4OmNhc2UgMTc0OmNhc2UgMTc2OmNhc2UgMjU0OmNhc2UgMTYzOmNhc2UgMjI4OmNhc2UgMTc4OmNhc2UgMTg5OmNhc2UgMTc5OmNhc2UgMTgwOmNhc2UgMjAwOnJldHVybiEwfXJldHVybiExfX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoVCl7c3dpdGNoKFQpe2Nhc2UgZS5Nb2R1bGVLaW5kLkVTTmV4dDpjYXNlIGUuTW9kdWxlS2luZC5FUzIwMjI6Y2FzZSBlLk1vZHVsZUtpbmQuRVMyMDIwOmNhc2UgZS5Nb2R1bGVLaW5kLkVTMjAxNTpyZXR1cm4gZS50cmFuc2Zvcm1FQ01BU2NyaXB0TW9kdWxlO2Nhc2UgZS5Nb2R1bGVLaW5kLlN5c3RlbTpyZXR1cm4gZS50cmFuc2Zvcm1TeXN0ZW1Nb2R1bGU7Y2FzZSBlLk1vZHVsZUtpbmQuTm9kZTE2OmNhc2UgZS5Nb2R1bGVLaW5kLk5vZGVOZXh0OnJldHVybiBlLnRyYW5zZm9ybU5vZGVNb2R1bGU7ZGVmYXVsdDpyZXR1cm4gZS50cmFuc2Zvcm1Nb2R1bGV9fXZhciBDOyhmdW5jdGlvbihUKXtUW1QuVW5pbml0aWFsaXplZD0wXT1cIlVuaW5pdGlhbGl6ZWRcIixUW1QuSW5pdGlhbGl6ZWQ9MV09XCJJbml0aWFsaXplZFwiLFRbVC5Db21wbGV0ZWQ9Ml09XCJDb21wbGV0ZWRcIixUW1QuRGlzcG9zZWQ9M109XCJEaXNwb3NlZFwifSkoQ3x8KEM9e30pKTt2YXIgdzsoZnVuY3Rpb24oVCl7VFtULlN1YnN0aXR1dGlvbj0xXT1cIlN1YnN0aXR1dGlvblwiLFRbVC5FbWl0Tm90aWZpY2F0aW9ucz0yXT1cIkVtaXROb3RpZmljYXRpb25zXCJ9KSh3fHwodz17fSkpLGUubm9UcmFuc2Zvcm1lcnM9e3NjcmlwdFRyYW5zZm9ybWVyczplLmVtcHR5QXJyYXksZGVjbGFyYXRpb25UcmFuc2Zvcm1lcnM6ZS5lbXB0eUFycmF5fTtmdW5jdGlvbiBCKFQsSyxiKXtyZXR1cm57c2NyaXB0VHJhbnNmb3JtZXJzOkUoVCxLLGIpLGRlY2xhcmF0aW9uVHJhbnNmb3JtZXJzOlEoSyl9fWUuZ2V0VHJhbnNmb3JtZXJzPUI7ZnVuY3Rpb24gRShULEssYil7aWYoYilyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciBzZT1lLmdldEVtaXRTY3JpcHRUYXJnZXQoVCksSj1lLmdldEVtaXRNb2R1bGVLaW5kKFQpLGllPVtdO3JldHVybiBlLmFkZFJhbmdlKGllLEsmJmUubWFwKEsuYmVmb3JlLHApKSxpZS5wdXNoKGUudHJhbnNmb3JtVHlwZVNjcmlwdCksaWUucHVzaChlLnRyYW5zZm9ybUNsYXNzRmllbGRzKSxlLmdldEpTWFRyYW5zZm9ybUVuYWJsZWQoVCkmJmllLnB1c2goZS50cmFuc2Zvcm1Kc3gpLHNlPDk5JiZpZS5wdXNoKGUudHJhbnNmb3JtRVNOZXh0KSxzZTw4JiZpZS5wdXNoKGUudHJhbnNmb3JtRVMyMDIxKSxzZTw3JiZpZS5wdXNoKGUudHJhbnNmb3JtRVMyMDIwKSxzZTw2JiZpZS5wdXNoKGUudHJhbnNmb3JtRVMyMDE5KSxzZTw1JiZpZS5wdXNoKGUudHJhbnNmb3JtRVMyMDE4KSxzZTw0JiZpZS5wdXNoKGUudHJhbnNmb3JtRVMyMDE3KSxzZTwzJiZpZS5wdXNoKGUudHJhbnNmb3JtRVMyMDE2KSxzZTwyJiYoaWUucHVzaChlLnRyYW5zZm9ybUVTMjAxNSksaWUucHVzaChlLnRyYW5zZm9ybUdlbmVyYXRvcnMpKSxpZS5wdXNoKGEoSikpLHNlPDEmJmllLnB1c2goZS50cmFuc2Zvcm1FUzUpLGUuYWRkUmFuZ2UoaWUsSyYmZS5tYXAoSy5hZnRlcixwKSksaWV9ZnVuY3Rpb24gUShUKXt2YXIgSz1bXTtyZXR1cm4gSy5wdXNoKGUudHJhbnNmb3JtRGVjbGFyYXRpb25zKSxlLmFkZFJhbmdlKEssVCYmZS5tYXAoVC5hZnRlckRlY2xhcmF0aW9ucyxtKSksS31mdW5jdGlvbiBsZShUKXtyZXR1cm4gZnVuY3Rpb24oSyl7cmV0dXJuIGUuaXNCdW5kbGUoSyk/VC50cmFuc2Zvcm1CdW5kbGUoSyk6VC50cmFuc2Zvcm1Tb3VyY2VGaWxlKEspfX1mdW5jdGlvbiBOKFQsSyl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBzZT1UKGIpO3JldHVybiB0eXBlb2Ygc2U9PVwiZnVuY3Rpb25cIj9LKGIsc2UpOmxlKHNlKX19ZnVuY3Rpb24gcChUKXtyZXR1cm4gTihULGUuY2hhaW5CdW5kbGUpfWZ1bmN0aW9uIG0oVCl7cmV0dXJuIE4oVCxmdW5jdGlvbihLLGIpe3JldHVybiBifSl9ZnVuY3Rpb24gRyhULEspe3JldHVybiBLfWUubm9FbWl0U3Vic3RpdHV0aW9uPUc7ZnVuY3Rpb24gb2UoVCxLLGIpe2IoVCxLKX1lLm5vRW1pdE5vdGlmaWNhdGlvbj1vZTtmdW5jdGlvbiBmKFQsSyxiLHNlLEosaWUsUil7Zm9yKHZhciBxPW5ldyBBcnJheSgzNTUpLE8sdmUsZWUsaGU9MCxGPVtdLHg9W10sWD1bXSwkPVtdLEE9MCx5PSExLFY9W10sTD0wLFAsayxZPUcsVT1vZSxqPTAsSD1bXSxJPXtmYWN0b3J5OmIsZ2V0Q29tcGlsZXJPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHNlfSxnZXRFbWl0UmVzb2x2ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gVH0sZ2V0RW1pdEhvc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gS30sZ2V0RW1pdEhlbHBlckZhY3Rvcnk6ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIGUuY3JlYXRlRW1pdEhlbHBlckZhY3RvcnkoSSl9KSxzdGFydExleGljYWxFbnZpcm9ubWVudDpfZSxzdXNwZW5kTGV4aWNhbEVudmlyb25tZW50OndlLHJlc3VtZUxleGljYWxFbnZpcm9ubWVudDpkZSxlbmRMZXhpY2FsRW52aXJvbm1lbnQ6eWUsc2V0TGV4aWNhbEVudmlyb25tZW50RmxhZ3M6QWUsZ2V0TGV4aWNhbEVudmlyb25tZW50RmxhZ3M6ZXIsaG9pc3RWYXJpYWJsZURlY2xhcmF0aW9uOkhlLGhvaXN0RnVuY3Rpb25EZWNsYXJhdGlvbjpycixhZGRJbml0aWFsaXphdGlvblN0YXRlbWVudDpJZSxzdGFydEJsb2NrU2NvcGU6aXIsZW5kQmxvY2tTY29wZTpDcixhZGRCbG9ja1Njb3BlZFZhcmlhYmxlOlllLHJlcXVlc3RFbWl0SGVscGVyOkJyLHJlYWRFbWl0SGVscGVyczpFcixlbmFibGVTdWJzdGl0dXRpb246WixlbmFibGVFbWl0Tm90aWZpY2F0aW9uOlJlLGlzU3Vic3RpdHV0aW9uRW5hYmxlZDpCZSxpc0VtaXROb3RpZmljYXRpb25FbmFibGVkOnplLGdldCBvblN1YnN0aXR1dGVOb2RlKCl7cmV0dXJuIFl9LHNldCBvblN1YnN0aXR1dGVOb2RlKG4pe2UuRGVidWcuYXNzZXJ0KGo8MSxcIkNhbm5vdCBtb2RpZnkgdHJhbnNmb3JtYXRpb24gaG9va3MgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gaGFzIGNvbXBsZXRlZC5cIiksZS5EZWJ1Zy5hc3NlcnQobiE9PXZvaWQgMCxcIlZhbHVlIG11c3Qgbm90IGJlICd1bmRlZmluZWQnXCIpLFk9bn0sZ2V0IG9uRW1pdE5vZGUoKXtyZXR1cm4gVX0sc2V0IG9uRW1pdE5vZGUobil7ZS5EZWJ1Zy5hc3NlcnQoajwxLFwiQ2Fubm90IG1vZGlmeSB0cmFuc2Zvcm1hdGlvbiBob29rcyBhZnRlciBpbml0aWFsaXphdGlvbiBoYXMgY29tcGxldGVkLlwiKSxlLkRlYnVnLmFzc2VydChuIT09dm9pZCAwLFwiVmFsdWUgbXVzdCBub3QgYmUgJ3VuZGVmaW5lZCdcIiksVT1ufSxhZGREaWFnbm9zdGljOmZ1bmN0aW9uKG4pe0gucHVzaChuKX19LGw9MCxkPUo7bDxkLmxlbmd0aDtsKyspe3ZhciBEPWRbbF07ZS5kaXNwb3NlRW1pdE5vZGVzKGUuZ2V0U291cmNlRmlsZU9mTm9kZShlLmdldFBhcnNlVHJlZU5vZGUoRCkpKX1lLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVUcmFuc2Zvcm1cIik7dmFyIGZlPWllLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbihJKX0pLGc9ZnVuY3Rpb24obil7Zm9yKHZhciBscj0wLGJlPWZlO2xyPGJlLmxlbmd0aDtscisrKXt2YXIgR2U9YmVbbHJdO249R2Uobil9cmV0dXJuIG59O2o9MTtmb3IodmFyIG5lPVtdLHVlPTAsV2U9Sjt1ZTxXZS5sZW5ndGg7dWUrKyl7dmFyIEQ9V2VbdWVdO2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJlbWl0XCIsXCJ0cmFuc2Zvcm1Ob2Rlc1wiLEQua2luZD09PTMwNT97cGF0aDpELnBhdGh9OntraW5kOkQua2luZCxwb3M6RC5wb3MsZW5kOkQuZW5kfSksbmUucHVzaCgoUj9nOkZlKShEKSksZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucG9wKCl9cmV0dXJuIGo9MixlLnBlcmZvcm1hbmNlLm1hcmsoXCJhZnRlclRyYW5zZm9ybVwiKSxlLnBlcmZvcm1hbmNlLm1lYXN1cmUoXCJ0cmFuc2Zvcm1UaW1lXCIsXCJiZWZvcmVUcmFuc2Zvcm1cIixcImFmdGVyVHJhbnNmb3JtXCIpLHt0cmFuc2Zvcm1lZDpuZSxzdWJzdGl0dXRlTm9kZTpnZSxlbWl0Tm9kZVdpdGhOb3RpZmljYXRpb246RWUsaXNFbWl0Tm90aWZpY2F0aW9uRW5hYmxlZDp6ZSxkaXNwb3NlOk5lLGRpYWdub3N0aWNzOkh9O2Z1bmN0aW9uIEZlKG4pe3JldHVybiBuJiYoIWUuaXNTb3VyY2VGaWxlKG4pfHwhbi5pc0RlY2xhcmF0aW9uRmlsZSk/ZyhuKTpufWZ1bmN0aW9uIFoobil7ZS5EZWJ1Zy5hc3NlcnQoajwyLFwiQ2Fubm90IG1vZGlmeSB0aGUgdHJhbnNmb3JtYXRpb24gY29udGV4dCBhZnRlciB0cmFuc2Zvcm1hdGlvbiBoYXMgY29tcGxldGVkLlwiKSxxW25dfD0xfWZ1bmN0aW9uIEJlKG4pe3JldHVybihxW24ua2luZF0mMSkhPT0wJiYoZS5nZXRFbWl0RmxhZ3MobikmNCk9PT0wfWZ1bmN0aW9uIGdlKG4sbHIpe3JldHVybiBlLkRlYnVnLmFzc2VydChqPDMsXCJDYW5ub3Qgc3Vic3RpdHV0ZSBhIG5vZGUgYWZ0ZXIgdGhlIHJlc3VsdCBpcyBkaXNwb3NlZC5cIiksbHImJkJlKGxyKSYmWShuLGxyKXx8bHJ9ZnVuY3Rpb24gUmUobil7ZS5EZWJ1Zy5hc3NlcnQoajwyLFwiQ2Fubm90IG1vZGlmeSB0aGUgdHJhbnNmb3JtYXRpb24gY29udGV4dCBhZnRlciB0cmFuc2Zvcm1hdGlvbiBoYXMgY29tcGxldGVkLlwiKSxxW25dfD0yfWZ1bmN0aW9uIHplKG4pe3JldHVybihxW24ua2luZF0mMikhPT0wfHwoZS5nZXRFbWl0RmxhZ3MobikmMikhPT0wfWZ1bmN0aW9uIEVlKG4sbHIsYmUpe2UuRGVidWcuYXNzZXJ0KGo8MyxcIkNhbm5vdCBpbnZva2UgVHJhbnNmb3JtYXRpb25SZXN1bHQgY2FsbGJhY2tzIGFmdGVyIHRoZSByZXN1bHQgaXMgZGlzcG9zZWQuXCIpLGxyJiYoemUobHIpP1UobixscixiZSk6YmUobixscikpfWZ1bmN0aW9uIEhlKG4pe2UuRGVidWcuYXNzZXJ0KGo+MCxcIkNhbm5vdCBtb2RpZnkgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLlwiKSxlLkRlYnVnLmFzc2VydChqPDIsXCJDYW5ub3QgbW9kaWZ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IGFmdGVyIHRyYW5zZm9ybWF0aW9uIGhhcyBjb21wbGV0ZWQuXCIpO3ZhciBscj1lLnNldEVtaXRGbGFncyhiLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24obiksNjQpO08/Ty5wdXNoKGxyKTpPPVtscl0saGUmMSYmKGhlfD0yKX1mdW5jdGlvbiBycihuKXtlLkRlYnVnLmFzc2VydChqPjAsXCJDYW5ub3QgbW9kaWZ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IGR1cmluZyBpbml0aWFsaXphdGlvbi5cIiksZS5EZWJ1Zy5hc3NlcnQoajwyLFwiQ2Fubm90IG1vZGlmeSB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBhZnRlciB0cmFuc2Zvcm1hdGlvbiBoYXMgY29tcGxldGVkLlwiKSxlLnNldEVtaXRGbGFncyhuLDEwNDg1NzYpLHZlP3ZlLnB1c2gobik6dmU9W25dfWZ1bmN0aW9uIEllKG4pe2UuRGVidWcuYXNzZXJ0KGo+MCxcIkNhbm5vdCBtb2RpZnkgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLlwiKSxlLkRlYnVnLmFzc2VydChqPDIsXCJDYW5ub3QgbW9kaWZ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IGFmdGVyIHRyYW5zZm9ybWF0aW9uIGhhcyBjb21wbGV0ZWQuXCIpLGUuc2V0RW1pdEZsYWdzKG4sMTA0ODU3NiksZWU/ZWUucHVzaChuKTplZT1bbl19ZnVuY3Rpb24gX2UoKXtlLkRlYnVnLmFzc2VydChqPjAsXCJDYW5ub3QgbW9kaWZ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IGR1cmluZyBpbml0aWFsaXphdGlvbi5cIiksZS5EZWJ1Zy5hc3NlcnQoajwyLFwiQ2Fubm90IG1vZGlmeSB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBhZnRlciB0cmFuc2Zvcm1hdGlvbiBoYXMgY29tcGxldGVkLlwiKSxlLkRlYnVnLmFzc2VydCgheSxcIkxleGljYWwgZW52aXJvbm1lbnQgaXMgc3VzcGVuZGVkLlwiKSxGW0FdPU8seFtBXT12ZSxYW0FdPWVlLCRbQV09aGUsQSsrLE89dm9pZCAwLHZlPXZvaWQgMCxlZT12b2lkIDAsaGU9MH1mdW5jdGlvbiB3ZSgpe2UuRGVidWcuYXNzZXJ0KGo+MCxcIkNhbm5vdCBtb2RpZnkgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLlwiKSxlLkRlYnVnLmFzc2VydChqPDIsXCJDYW5ub3QgbW9kaWZ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IGFmdGVyIHRyYW5zZm9ybWF0aW9uIGhhcyBjb21wbGV0ZWQuXCIpLGUuRGVidWcuYXNzZXJ0KCF5LFwiTGV4aWNhbCBlbnZpcm9ubWVudCBpcyBhbHJlYWR5IHN1c3BlbmRlZC5cIikseT0hMH1mdW5jdGlvbiBkZSgpe2UuRGVidWcuYXNzZXJ0KGo+MCxcIkNhbm5vdCBtb2RpZnkgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLlwiKSxlLkRlYnVnLmFzc2VydChqPDIsXCJDYW5ub3QgbW9kaWZ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IGFmdGVyIHRyYW5zZm9ybWF0aW9uIGhhcyBjb21wbGV0ZWQuXCIpLGUuRGVidWcuYXNzZXJ0KHksXCJMZXhpY2FsIGVudmlyb25tZW50IGlzIG5vdCBzdXNwZW5kZWQuXCIpLHk9ITF9ZnVuY3Rpb24geWUoKXtlLkRlYnVnLmFzc2VydChqPjAsXCJDYW5ub3QgbW9kaWZ5IHRoZSBsZXhpY2FsIGVudmlyb25tZW50IGR1cmluZyBpbml0aWFsaXphdGlvbi5cIiksZS5EZWJ1Zy5hc3NlcnQoajwyLFwiQ2Fubm90IG1vZGlmeSB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBhZnRlciB0cmFuc2Zvcm1hdGlvbiBoYXMgY29tcGxldGVkLlwiKSxlLkRlYnVnLmFzc2VydCgheSxcIkxleGljYWwgZW52aXJvbm1lbnQgaXMgc3VzcGVuZGVkLlwiKTt2YXIgbjtpZihPfHx2ZXx8ZWUpe2lmKHZlJiYobj1WZShbXSx2ZSwhMCkpLE8pe3ZhciBscj1iLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxiLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KE8pKTtlLnNldEVtaXRGbGFncyhsciwxMDQ4NTc2KSxuP24ucHVzaChscik6bj1bbHJdfWVlJiYobj9uPVZlKFZlKFtdLG4sITApLGVlLCEwKTpuPVZlKFtdLGVlLCEwKSl9cmV0dXJuIEEtLSxPPUZbQV0sdmU9eFtBXSxlZT1YW0FdLGhlPSRbQV0sQT09PTAmJihGPVtdLHg9W10sWD1bXSwkPVtdKSxufWZ1bmN0aW9uIEFlKG4sbHIpe2hlPWxyP2hlfG46aGUmfm59ZnVuY3Rpb24gZXIoKXtyZXR1cm4gaGV9ZnVuY3Rpb24gaXIoKXtlLkRlYnVnLmFzc2VydChqPjAsXCJDYW5ub3Qgc3RhcnQgYSBibG9jayBzY29wZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24uXCIpLGUuRGVidWcuYXNzZXJ0KGo8MixcIkNhbm5vdCBzdGFydCBhIGJsb2NrIHNjb3BlIGFmdGVyIHRyYW5zZm9ybWF0aW9uIGhhcyBjb21wbGV0ZWQuXCIpLFZbTF09UCxMKyssUD12b2lkIDB9ZnVuY3Rpb24gQ3IoKXtlLkRlYnVnLmFzc2VydChqPjAsXCJDYW5ub3QgZW5kIGEgYmxvY2sgc2NvcGUgZHVyaW5nIGluaXRpYWxpemF0aW9uLlwiKSxlLkRlYnVnLmFzc2VydChqPDIsXCJDYW5ub3QgZW5kIGEgYmxvY2sgc2NvcGUgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gaGFzIGNvbXBsZXRlZC5cIik7dmFyIG49ZS5zb21lKFApP1tiLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxiLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFAubWFwKGZ1bmN0aW9uKGxyKXtyZXR1cm4gYi5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGxyKX0pLDEpKV06dm9pZCAwO3JldHVybiBMLS0sUD1WW0xdLEw9PT0wJiYoVj1bXSksbn1mdW5jdGlvbiBZZShuKXtlLkRlYnVnLmFzc2VydChMPjAsXCJDYW5ub3QgYWRkIGEgYmxvY2sgc2NvcGVkIHZhcmlhYmxlIG91dHNpZGUgb2YgYW4gaXRlcmF0aW9uIGJvZHkuXCIpLChQfHwoUD1bXSkpLnB1c2gobil9ZnVuY3Rpb24gQnIobil7aWYoZS5EZWJ1Zy5hc3NlcnQoaj4wLFwiQ2Fubm90IG1vZGlmeSB0aGUgdHJhbnNmb3JtYXRpb24gY29udGV4dCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uXCIpLGUuRGVidWcuYXNzZXJ0KGo8MixcIkNhbm5vdCBtb2RpZnkgdGhlIHRyYW5zZm9ybWF0aW9uIGNvbnRleHQgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gaGFzIGNvbXBsZXRlZC5cIiksZS5EZWJ1Zy5hc3NlcnQoIW4uc2NvcGVkLFwiQ2Fubm90IHJlcXVlc3QgYSBzY29wZWQgZW1pdCBoZWxwZXIuXCIpLG4uZGVwZW5kZW5jaWVzKWZvcih2YXIgbHI9MCxiZT1uLmRlcGVuZGVuY2llcztscjxiZS5sZW5ndGg7bHIrKyl7dmFyIEdlPWJlW2xyXTtCcihHZSl9az1lLmFwcGVuZChrLG4pfWZ1bmN0aW9uIEVyKCl7ZS5EZWJ1Zy5hc3NlcnQoaj4wLFwiQ2Fubm90IG1vZGlmeSB0aGUgdHJhbnNmb3JtYXRpb24gY29udGV4dCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uXCIpLGUuRGVidWcuYXNzZXJ0KGo8MixcIkNhbm5vdCBtb2RpZnkgdGhlIHRyYW5zZm9ybWF0aW9uIGNvbnRleHQgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gaGFzIGNvbXBsZXRlZC5cIik7dmFyIG49aztyZXR1cm4gaz12b2lkIDAsbn1mdW5jdGlvbiBOZSgpe2lmKGo8Myl7Zm9yKHZhciBuPTAsbHI9SjtuPGxyLmxlbmd0aDtuKyspe3ZhciBiZT1scltuXTtlLmRpc3Bvc2VFbWl0Tm9kZXMoZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGUuZ2V0UGFyc2VUcmVlTm9kZShiZSkpKX1PPXZvaWQgMCxGPXZvaWQgMCx2ZT12b2lkIDAseD12b2lkIDAsWT12b2lkIDAsVT12b2lkIDAsaz12b2lkIDAsaj0zfX19ZS50cmFuc2Zvcm1Ob2Rlcz1mLGUubnVsbFRyYW5zZm9ybWF0aW9uQ29udGV4dD17ZmFjdG9yeTplLmZhY3RvcnksZ2V0Q29tcGlsZXJPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJue319LGdldEVtaXRSZXNvbHZlcjplLm5vdEltcGxlbWVudGVkLGdldEVtaXRIb3N0OmUubm90SW1wbGVtZW50ZWQsZ2V0RW1pdEhlbHBlckZhY3Rvcnk6ZS5ub3RJbXBsZW1lbnRlZCxzdGFydExleGljYWxFbnZpcm9ubWVudDplLm5vb3AscmVzdW1lTGV4aWNhbEVudmlyb25tZW50OmUubm9vcCxzdXNwZW5kTGV4aWNhbEVudmlyb25tZW50OmUubm9vcCxlbmRMZXhpY2FsRW52aXJvbm1lbnQ6ZS5yZXR1cm5VbmRlZmluZWQsc2V0TGV4aWNhbEVudmlyb25tZW50RmxhZ3M6ZS5ub29wLGdldExleGljYWxFbnZpcm9ubWVudEZsYWdzOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhvaXN0VmFyaWFibGVEZWNsYXJhdGlvbjplLm5vb3AsaG9pc3RGdW5jdGlvbkRlY2xhcmF0aW9uOmUubm9vcCxhZGRJbml0aWFsaXphdGlvblN0YXRlbWVudDplLm5vb3Asc3RhcnRCbG9ja1Njb3BlOmUubm9vcCxlbmRCbG9ja1Njb3BlOmUucmV0dXJuVW5kZWZpbmVkLGFkZEJsb2NrU2NvcGVkVmFyaWFibGU6ZS5ub29wLHJlcXVlc3RFbWl0SGVscGVyOmUubm9vcCxyZWFkRW1pdEhlbHBlcnM6ZS5ub3RJbXBsZW1lbnRlZCxlbmFibGVTdWJzdGl0dXRpb246ZS5ub29wLGVuYWJsZUVtaXROb3RpZmljYXRpb246ZS5ub29wLGlzU3Vic3RpdHV0aW9uRW5hYmxlZDplLm5vdEltcGxlbWVudGVkLGlzRW1pdE5vdGlmaWNhdGlvbkVuYWJsZWQ6ZS5ub3RJbXBsZW1lbnRlZCxvblN1YnN0aXR1dGVOb2RlOkcsb25FbWl0Tm9kZTpvZSxhZGREaWFnbm9zdGljOmUubm9vcH19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYT14KCk7ZnVuY3Rpb24gQyhrKXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXMoayxcIi50c2J1aWxkaW5mb1wiKX1lLmlzQnVpbGRJbmZvRmlsZT1DO2Z1bmN0aW9uIHcoayxZLFUsaixILEkpe2o9PT12b2lkIDAmJihqPSExKTt2YXIgbD1lLmlzQXJyYXkoVSk/VTplLmdldFNvdXJjZUZpbGVzVG9FbWl0KGssVSxqKSxkPWsuZ2V0Q29tcGlsZXJPcHRpb25zKCk7aWYoZS5vdXRGaWxlKGQpKXt2YXIgRD1rLmdldFByZXBlbmROb2RlcygpO2lmKGwubGVuZ3RofHxELmxlbmd0aCl7dmFyIGZlPWUuZmFjdG9yeS5jcmVhdGVCdW5kbGUobCxEKSxnPVkoUShmZSxrLGopLGZlKTtpZihnKXJldHVybiBnfX1lbHNle2lmKCFIKWZvcih2YXIgbmU9MCx1ZT1sO25lPHVlLmxlbmd0aDtuZSsrKXt2YXIgV2U9dWVbbmVdLGc9WShRKFdlLGssaiksV2UpO2lmKGcpcmV0dXJuIGd9aWYoSSl7dmFyIEZlPUIoZCk7aWYoRmUpcmV0dXJuIFkoe2J1aWxkSW5mb1BhdGg6RmV9LHZvaWQgMCl9fX1lLmZvckVhY2hFbWl0dGVkRmlsZT13O2Z1bmN0aW9uIEIoayl7dmFyIFk9ay5jb25maWdGaWxlUGF0aDtpZighIWUuaXNJbmNyZW1lbnRhbENvbXBpbGF0aW9uKGspKXtpZihrLnRzQnVpbGRJbmZvRmlsZSlyZXR1cm4gay50c0J1aWxkSW5mb0ZpbGU7dmFyIFU9ZS5vdXRGaWxlKGspLGo7aWYoVSlqPWUucmVtb3ZlRmlsZUV4dGVuc2lvbihVKTtlbHNle2lmKCFZKXJldHVybjt2YXIgSD1lLnJlbW92ZUZpbGVFeHRlbnNpb24oWSk7aj1rLm91dERpcj9rLnJvb3REaXI/ZS5yZXNvbHZlUGF0aChrLm91dERpcixlLmdldFJlbGF0aXZlUGF0aEZyb21EaXJlY3Rvcnkoay5yb290RGlyLEgsITApKTplLmNvbWJpbmVQYXRocyhrLm91dERpcixlLmdldEJhc2VGaWxlTmFtZShIKSk6SH1yZXR1cm4gaitcIi50c2J1aWxkaW5mb1wifX1lLmdldFRzQnVpbGRJbmZvRW1pdE91dHB1dEZpbGVQYXRoPUI7ZnVuY3Rpb24gRShrLFkpe3ZhciBVPWUub3V0RmlsZShrKSxqPWsuZW1pdERlY2xhcmF0aW9uT25seT92b2lkIDA6VSxIPWomJmxlKGosayksST1ZfHxlLmdldEVtaXREZWNsYXJhdGlvbnMoayk/ZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKFUpK1wiLmQudHNcIjp2b2lkIDAsbD1JJiZlLmdldEFyZURlY2xhcmF0aW9uTWFwc0VuYWJsZWQoayk/SStcIi5tYXBcIjp2b2lkIDAsZD1CKGspO3JldHVybntqc0ZpbGVQYXRoOmosc291cmNlTWFwRmlsZVBhdGg6SCxkZWNsYXJhdGlvbkZpbGVQYXRoOkksZGVjbGFyYXRpb25NYXBQYXRoOmwsYnVpbGRJbmZvUGF0aDpkfX1lLmdldE91dHB1dFBhdGhzRm9yQnVuZGxlPUU7ZnVuY3Rpb24gUShrLFksVSl7dmFyIGo9WS5nZXRDb21waWxlck9wdGlvbnMoKTtpZihrLmtpbmQ9PT0zMDYpcmV0dXJuIEUoaixVKTt2YXIgSD1lLmdldE93bkVtaXRPdXRwdXRGaWxlUGF0aChrLmZpbGVOYW1lLFksTihrLmZpbGVOYW1lLGopKSxJPWUuaXNKc29uU291cmNlRmlsZShrKSxsPUkmJmUuY29tcGFyZVBhdGhzKGsuZmlsZU5hbWUsSCxZLmdldEN1cnJlbnREaXJlY3RvcnkoKSwhWS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCkpPT09MCxkPWouZW1pdERlY2xhcmF0aW9uT25seXx8bD92b2lkIDA6SCxEPSFkfHxlLmlzSnNvblNvdXJjZUZpbGUoayk/dm9pZCAwOmxlKGQsaiksZmU9VXx8ZS5nZXRFbWl0RGVjbGFyYXRpb25zKGopJiYhST9lLmdldERlY2xhcmF0aW9uRW1pdE91dHB1dEZpbGVQYXRoKGsuZmlsZU5hbWUsWSk6dm9pZCAwLGc9ZmUmJmUuZ2V0QXJlRGVjbGFyYXRpb25NYXBzRW5hYmxlZChqKT9mZStcIi5tYXBcIjp2b2lkIDA7cmV0dXJue2pzRmlsZVBhdGg6ZCxzb3VyY2VNYXBGaWxlUGF0aDpELGRlY2xhcmF0aW9uRmlsZVBhdGg6ZmUsZGVjbGFyYXRpb25NYXBQYXRoOmcsYnVpbGRJbmZvUGF0aDp2b2lkIDB9fWUuZ2V0T3V0cHV0UGF0aHNGb3I9UTtmdW5jdGlvbiBsZShrLFkpe3JldHVybiBZLnNvdXJjZU1hcCYmIVkuaW5saW5lU291cmNlTWFwP2srXCIubWFwXCI6dm9pZCAwfWZ1bmN0aW9uIE4oayxZKXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXMoayxcIi5qc29uXCIpP1wiLmpzb25cIjpZLmpzeD09PTEmJmUuZmlsZUV4dGVuc2lvbklzT25lT2YoayxbXCIuanN4XCIsXCIudHN4XCJdKT9cIi5qc3hcIjplLmZpbGVFeHRlbnNpb25Jc09uZU9mKGssW1wiLm10c1wiLFwiLm1qc1wiXSk/XCIubWpzXCI6ZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihrLFtcIi5jdHNcIixcIi5janNcIl0pP1wiLmNqc1wiOlwiLmpzXCJ9ZS5nZXRPdXRwdXRFeHRlbnNpb249TjtmdW5jdGlvbiBwKGssWSxVLGosSCl7cmV0dXJuIGo/ZS5yZXNvbHZlUGF0aChqLGUuZ2V0UmVsYXRpdmVQYXRoRnJvbURpcmVjdG9yeShIP0goKTpiKFksVSksayxVKSk6a31mdW5jdGlvbiBtKGssWSxVLGope3JldHVybiBlLmNoYW5nZUV4dGVuc2lvbihwKGssWSxVLFkub3B0aW9ucy5kZWNsYXJhdGlvbkRpcnx8WS5vcHRpb25zLm91dERpcixqKSxlLmdldERlY2xhcmF0aW9uRW1pdEV4dGVuc2lvbkZvclBhdGgoaykpfWUuZ2V0T3V0cHV0RGVjbGFyYXRpb25GaWxlTmFtZT1tO2Z1bmN0aW9uIEcoayxZLFUsail7aWYoIVkub3B0aW9ucy5lbWl0RGVjbGFyYXRpb25Pbmx5KXt2YXIgSD1lLmZpbGVFeHRlbnNpb25JcyhrLFwiLmpzb25cIiksST1lLmNoYW5nZUV4dGVuc2lvbihwKGssWSxVLFkub3B0aW9ucy5vdXREaXIsaiksTihrLFkub3B0aW9ucykpO3JldHVybiFIfHxlLmNvbXBhcmVQYXRocyhrLEksZS5EZWJ1Zy5jaGVja0RlZmluZWQoWS5vcHRpb25zLmNvbmZpZ0ZpbGVQYXRoKSxVKSE9PTA/STp2b2lkIDB9fWZ1bmN0aW9uIG9lKCl7dmFyIGs7cmV0dXJue2FkZE91dHB1dDpZLGdldE91dHB1dHM6VX07ZnVuY3Rpb24gWShqKXtqJiYoa3x8KGs9W10pKS5wdXNoKGopfWZ1bmN0aW9uIFUoKXtyZXR1cm4ga3x8ZS5lbXB0eUFycmF5fX1mdW5jdGlvbiBmKGssWSl7dmFyIFU9RShrLm9wdGlvbnMsITEpLGo9VS5qc0ZpbGVQYXRoLEg9VS5zb3VyY2VNYXBGaWxlUGF0aCxJPVUuZGVjbGFyYXRpb25GaWxlUGF0aCxsPVUuZGVjbGFyYXRpb25NYXBQYXRoLGQ9VS5idWlsZEluZm9QYXRoO1koaiksWShIKSxZKEkpLFkobCksWShkKX1mdW5jdGlvbiBUKGssWSxVLGosSCl7aWYoIWUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKFkpKXt2YXIgST1HKFksayxVLEgpO2lmKGooSSksIWUuZmlsZUV4dGVuc2lvbklzKFksXCIuanNvblwiKSYmKEkmJmsub3B0aW9ucy5zb3VyY2VNYXAmJmooXCJcIi5jb25jYXQoSSxcIi5tYXBcIikpLGUuZ2V0RW1pdERlY2xhcmF0aW9ucyhrLm9wdGlvbnMpKSl7dmFyIGw9bShZLGssVSxIKTtqKGwpLGsub3B0aW9ucy5kZWNsYXJhdGlvbk1hcCYmaihcIlwiLmNvbmNhdChsLFwiLm1hcFwiKSl9fX1mdW5jdGlvbiBLKGssWSxVLGosSCl7dmFyIEk7cmV0dXJuIGsucm9vdERpcj8oST1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoay5yb290RGlyLFUpLEg9PW51bGx8fEgoay5yb290RGlyKSk6ay5jb21wb3NpdGUmJmsuY29uZmlnRmlsZVBhdGg/KEk9ZS5nZXREaXJlY3RvcnlQYXRoKGUubm9ybWFsaXplU2xhc2hlcyhrLmNvbmZpZ0ZpbGVQYXRoKSksSD09bnVsbHx8SChJKSk6ST1lLmNvbXB1dGVDb21tb25Tb3VyY2VEaXJlY3RvcnlPZkZpbGVuYW1lcyhZKCksVSxqKSxJJiZJW0kubGVuZ3RoLTFdIT09ZS5kaXJlY3RvcnlTZXBhcmF0b3ImJihJKz1lLmRpcmVjdG9yeVNlcGFyYXRvciksSX1lLmdldENvbW1vblNvdXJjZURpcmVjdG9yeT1LO2Z1bmN0aW9uIGIoayxZKXt2YXIgVT1rLm9wdGlvbnMsaj1rLmZpbGVOYW1lcztyZXR1cm4gSyhVLGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmlsdGVyKGosZnVuY3Rpb24oSCl7cmV0dXJuIShVLm5vRW1pdEZvckpzRmlsZXMmJmUuZmlsZUV4dGVuc2lvbklzT25lT2YoSCxlLnN1cHBvcnRlZEpTRXh0ZW5zaW9uc0ZsYXQpKSYmIWUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKEgpfSl9LGUuZ2V0RGlyZWN0b3J5UGF0aChlLm5vcm1hbGl6ZVNsYXNoZXMoZS5EZWJ1Zy5jaGVja0RlZmluZWQoVS5jb25maWdGaWxlUGF0aCkpKSxlLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKCFZKSl9ZS5nZXRDb21tb25Tb3VyY2VEaXJlY3RvcnlPZkNvbmZpZz1iO2Z1bmN0aW9uIHNlKGssWSl7dmFyIFU9b2UoKSxqPVUuYWRkT3V0cHV0LEg9VS5nZXRPdXRwdXRzO2lmKGUub3V0RmlsZShrLm9wdGlvbnMpKWYoayxqKTtlbHNle2Zvcih2YXIgST1lLm1lbW9pemUoZnVuY3Rpb24oKXtyZXR1cm4gYihrLFkpfSksbD0wLGQ9ay5maWxlTmFtZXM7bDxkLmxlbmd0aDtsKyspe3ZhciBEPWRbbF07VChrLEQsWSxqLEkpfWooQihrLm9wdGlvbnMpKX1yZXR1cm4gSCgpfWUuZ2V0QWxsUHJvamVjdE91dHB1dHM9c2U7ZnVuY3Rpb24gSihrLFksVSl7WT1lLm5vcm1hbGl6ZVBhdGgoWSksZS5EZWJ1Zy5hc3NlcnQoZS5jb250YWlucyhrLmZpbGVOYW1lcyxZKSxcIkV4cGVjdGVkIGZpbGVOYW1lIHRvIGJlIHByZXNlbnQgaW4gY29tbWFuZCBsaW5lXCIpO3ZhciBqPW9lKCksSD1qLmFkZE91dHB1dCxJPWouZ2V0T3V0cHV0cztyZXR1cm4gZS5vdXRGaWxlKGsub3B0aW9ucyk/ZihrLEgpOlQoayxZLFUsSCksSSgpfWUuZ2V0T3V0cHV0RmlsZU5hbWVzPUo7ZnVuY3Rpb24gaWUoayxZKXtpZihlLm91dEZpbGUoay5vcHRpb25zKSl7dmFyIFU9RShrLm9wdGlvbnMsITEpLmpzRmlsZVBhdGg7cmV0dXJuIGUuRGVidWcuY2hlY2tEZWZpbmVkKFUsXCJwcm9qZWN0IFwiLmNvbmNhdChrLm9wdGlvbnMuY29uZmlnRmlsZVBhdGgsXCIgZXhwZWN0ZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgb3V0cHV0XCIpKX1mb3IodmFyIGo9ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIGIoayxZKX0pLEg9MCxJPWsuZmlsZU5hbWVzO0g8SS5sZW5ndGg7SCsrKXt2YXIgbD1JW0hdO2lmKCFlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShsKSl7dmFyIFU9RyhsLGssWSxqKTtpZihVKXJldHVybiBVO2lmKCFlLmZpbGVFeHRlbnNpb25JcyhsLFwiLmpzb25cIikmJmUuZ2V0RW1pdERlY2xhcmF0aW9ucyhrLm9wdGlvbnMpKXJldHVybiBtKGwsayxZLGopfX12YXIgZD1CKGsub3B0aW9ucyk7cmV0dXJuIGR8fGUuRGVidWcuZmFpbChcInByb2plY3QgXCIuY29uY2F0KGsub3B0aW9ucy5jb25maWdGaWxlUGF0aCxcIiBleHBlY3RlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBvdXRwdXRcIikpfWUuZ2V0Rmlyc3RQcm9qZWN0T3V0cHV0PWllO2Z1bmN0aW9uIFIoayxZLFUsaixILEksbCl7dmFyIGQ9ai5zY3JpcHRUcmFuc2Zvcm1lcnMsRD1qLmRlY2xhcmF0aW9uVHJhbnNmb3JtZXJzLGZlPVkuZ2V0Q29tcGlsZXJPcHRpb25zKCksZz1mZS5zb3VyY2VNYXB8fGZlLmlubGluZVNvdXJjZU1hcHx8ZS5nZXRBcmVEZWNsYXJhdGlvbk1hcHNFbmFibGVkKGZlKT9bXTp2b2lkIDAsbmU9ZmUubGlzdEVtaXR0ZWRGaWxlcz9bXTp2b2lkIDAsdWU9ZS5jcmVhdGVEaWFnbm9zdGljQ29sbGVjdGlvbigpLFdlPWUuZ2V0TmV3TGluZUNoYXJhY3RlcihmZSxmdW5jdGlvbigpe3JldHVybiBZLmdldE5ld0xpbmUoKX0pLEZlPWUuY3JlYXRlVGV4dFdyaXRlcihXZSksWj1lLnBlcmZvcm1hbmNlLmNyZWF0ZVRpbWVyKFwicHJpbnRUaW1lXCIsXCJiZWZvcmVQcmludFwiLFwiYWZ0ZXJQcmludFwiKSxCZT1aLmVudGVyLGdlPVouZXhpdCxSZSx6ZT0hMSxFZTtyZXR1cm4gQmUoKSx3KFksSGUsZS5nZXRTb3VyY2VGaWxlc1RvRW1pdChZLFUsbCksbCxJLCFVKSxnZSgpLHtlbWl0U2tpcHBlZDp6ZSxkaWFnbm9zdGljczp1ZS5nZXREaWFnbm9zdGljcygpLGVtaXR0ZWRGaWxlczpuZSxzb3VyY2VNYXBzOmcsZXhwb3J0ZWRNb2R1bGVzRnJvbURlY2xhcmF0aW9uRW1pdDpFZX07ZnVuY3Rpb24gSGUoQ3IsWWUpe3ZhciBCcj1Dci5qc0ZpbGVQYXRoLEVyPUNyLnNvdXJjZU1hcEZpbGVQYXRoLE5lPUNyLmRlY2xhcmF0aW9uRmlsZVBhdGgsbj1Dci5kZWNsYXJhdGlvbk1hcFBhdGgsbHI9Q3IuYnVpbGRJbmZvUGF0aCxiZTtsciYmWWUmJmUuaXNCdW5kbGUoWWUpJiYoYmU9ZS5nZXREaXJlY3RvcnlQYXRoKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChscixZLmdldEN1cnJlbnREaXJlY3RvcnkoKSkpLFJlPXtjb21tb25Tb3VyY2VEaXJlY3Rvcnk6R2UoWS5nZXRDb21tb25Tb3VyY2VEaXJlY3RvcnkoKSksc291cmNlRmlsZXM6WWUuc291cmNlRmlsZXMubWFwKGZ1bmN0aW9uKHVyKXtyZXR1cm4gR2UoZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKHVyLmZpbGVOYW1lLFkuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSl9KX0pLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJlbWl0XCIsXCJlbWl0SnNGaWxlT3JCdW5kbGVcIix7anNGaWxlUGF0aDpCcn0pLEllKFllLEJyLEVyLEdlKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwiZW1pdFwiLFwiZW1pdERlY2xhcmF0aW9uRmlsZU9yQnVuZGxlXCIse2RlY2xhcmF0aW9uRmlsZVBhdGg6TmV9KSxfZShZZSxOZSxuLEdlKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwiZW1pdFwiLFwiZW1pdEJ1aWxkSW5mb1wiLHtidWlsZEluZm9QYXRoOmxyfSkscnIoUmUsbHIpLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpLCF6ZSYmbmUmJihIfHwoQnImJm5lLnB1c2goQnIpLEVyJiZuZS5wdXNoKEVyKSxsciYmbmUucHVzaChscikpLE5lJiZuZS5wdXNoKE5lKSxuJiZuZS5wdXNoKG4pKTtmdW5jdGlvbiBHZSh1cil7cmV0dXJuIGUuZW5zdXJlUGF0aElzTm9uTW9kdWxlTmFtZShlLmdldFJlbGF0aXZlUGF0aEZyb21EaXJlY3RvcnkoYmUsdXIsWS5nZXRDYW5vbmljYWxGaWxlTmFtZSkpfX1mdW5jdGlvbiBycihDcixZZSl7aWYoISghWWV8fFV8fHplKSl7dmFyIEJyPVkuZ2V0UHJvZ3JhbUJ1aWxkSW5mbygpO2lmKFkuaXNFbWl0QmxvY2tlZChZZSkpe3plPSEwO3JldHVybn12YXIgRXI9ZS52ZXJzaW9uO2Uud3JpdGVGaWxlKFksdWUsWWUscSh7YnVuZGxlOkNyLHByb2dyYW06QnIsdmVyc2lvbjpFcn0pLCExKX19ZnVuY3Rpb24gSWUoQ3IsWWUsQnIsRXIpe2lmKCEoIUNyfHxIfHwhWWUpKXtpZihZZSYmWS5pc0VtaXRCbG9ja2VkKFllKXx8ZmUubm9FbWl0KXt6ZT0hMDtyZXR1cm59dmFyIE5lPWUudHJhbnNmb3JtTm9kZXMoayxZLGUuZmFjdG9yeSxmZSxbQ3JdLGQsITEpLG49e3JlbW92ZUNvbW1lbnRzOmZlLnJlbW92ZUNvbW1lbnRzLG5ld0xpbmU6ZmUubmV3TGluZSxub0VtaXRIZWxwZXJzOmZlLm5vRW1pdEhlbHBlcnMsbW9kdWxlOmZlLm1vZHVsZSx0YXJnZXQ6ZmUudGFyZ2V0LHNvdXJjZU1hcDpmZS5zb3VyY2VNYXAsaW5saW5lU291cmNlTWFwOmZlLmlubGluZVNvdXJjZU1hcCxpbmxpbmVTb3VyY2VzOmZlLmlubGluZVNvdXJjZXMsZXh0ZW5kZWREaWFnbm9zdGljczpmZS5leHRlbmRlZERpYWdub3N0aWNzLHdyaXRlQnVuZGxlRmlsZUluZm86ISFSZSxyZWxhdGl2ZVRvQnVpbGRJbmZvOkVyfSxscj1GKG4se2hhc0dsb2JhbE5hbWU6ay5oYXNHbG9iYWxOYW1lLG9uRW1pdE5vZGU6TmUuZW1pdE5vZGVXaXRoTm90aWZpY2F0aW9uLGlzRW1pdE5vdGlmaWNhdGlvbkVuYWJsZWQ6TmUuaXNFbWl0Tm90aWZpY2F0aW9uRW5hYmxlZCxzdWJzdGl0dXRlTm9kZTpOZS5zdWJzdGl0dXRlTm9kZX0pO2UuRGVidWcuYXNzZXJ0KE5lLnRyYW5zZm9ybWVkLmxlbmd0aD09PTEsXCJTaG91bGQgb25seSBzZWUgb25lIG91dHB1dCBmcm9tIHRoZSB0cmFuc2Zvcm1cIiksZGUoWWUsQnIsTmUudHJhbnNmb3JtZWRbMF0sbHIsZmUpLE5lLmRpc3Bvc2UoKSxSZSYmKFJlLmpzPWxyLmJ1bmRsZUZpbGVJbmZvKX19ZnVuY3Rpb24gX2UoQ3IsWWUsQnIsRXIpe2lmKCEhQ3Ipe2lmKCFZZSl7KEh8fGZlLmVtaXREZWNsYXJhdGlvbk9ubHkpJiYoemU9ITApO3JldHVybn12YXIgTmU9ZS5pc1NvdXJjZUZpbGUoQ3IpP1tDcl06Q3Iuc291cmNlRmlsZXMsbj1sP05lOmUuZmlsdGVyKE5lLGUuaXNTb3VyY2VGaWxlTm90SnNvbiksbHI9ZS5vdXRGaWxlKGZlKT9bZS5mYWN0b3J5LmNyZWF0ZUJ1bmRsZShuLGUuaXNTb3VyY2VGaWxlKENyKT92b2lkIDA6Q3IucHJlcGVuZHMpXTpuO0gmJiFlLmdldEVtaXREZWNsYXJhdGlvbnMoZmUpJiZuLmZvckVhY2god2UpO3ZhciBiZT1lLnRyYW5zZm9ybU5vZGVzKGssWSxlLmZhY3RvcnksZmUsbHIsRCwhMSk7aWYoZS5sZW5ndGgoYmUuZGlhZ25vc3RpY3MpKWZvcih2YXIgR2U9MCx1cj1iZS5kaWFnbm9zdGljcztHZTx1ci5sZW5ndGg7R2UrKyl7dmFyIHlyPXVyW0dlXTt1ZS5hZGQoeXIpfXZhciBJcj17cmVtb3ZlQ29tbWVudHM6ZmUucmVtb3ZlQ29tbWVudHMsbmV3TGluZTpmZS5uZXdMaW5lLG5vRW1pdEhlbHBlcnM6ITAsbW9kdWxlOmZlLm1vZHVsZSx0YXJnZXQ6ZmUudGFyZ2V0LHNvdXJjZU1hcDpmZS5zb3VyY2VNYXAsaW5saW5lU291cmNlTWFwOmZlLmlubGluZVNvdXJjZU1hcCxleHRlbmRlZERpYWdub3N0aWNzOmZlLmV4dGVuZGVkRGlhZ25vc3RpY3Msb25seVByaW50SnNEb2NTdHlsZTohMCx3cml0ZUJ1bmRsZUZpbGVJbmZvOiEhUmUscmVjb3JkSW50ZXJuYWxTZWN0aW9uOiEhUmUscmVsYXRpdmVUb0J1aWxkSW5mbzpFcn0sd3I9RihJcix7aGFzR2xvYmFsTmFtZTprLmhhc0dsb2JhbE5hbWUsb25FbWl0Tm9kZTpiZS5lbWl0Tm9kZVdpdGhOb3RpZmljYXRpb24saXNFbWl0Tm90aWZpY2F0aW9uRW5hYmxlZDpiZS5pc0VtaXROb3RpZmljYXRpb25FbmFibGVkLHN1YnN0aXR1dGVOb2RlOmJlLnN1YnN0aXR1dGVOb2RlfSksVXI9ISFiZS5kaWFnbm9zdGljcyYmISFiZS5kaWFnbm9zdGljcy5sZW5ndGh8fCEhWS5pc0VtaXRCbG9ja2VkKFllKXx8ISFmZS5ub0VtaXQ7aWYoemU9emV8fFVyLCghVXJ8fGwpJiYoZS5EZWJ1Zy5hc3NlcnQoYmUudHJhbnNmb3JtZWQubGVuZ3RoPT09MSxcIlNob3VsZCBvbmx5IHNlZSBvbmUgb3V0cHV0IGZyb20gdGhlIGRlY2wgdHJhbnNmb3JtXCIpLGRlKFllLEJyLGJlLnRyYW5zZm9ybWVkWzBdLHdyLHtzb3VyY2VNYXA6IWwmJmZlLmRlY2xhcmF0aW9uTWFwLHNvdXJjZVJvb3Q6ZmUuc291cmNlUm9vdCxtYXBSb290OmZlLm1hcFJvb3QsZXh0ZW5kZWREaWFnbm9zdGljczpmZS5leHRlbmRlZERpYWdub3N0aWNzfSksbCYmYmUudHJhbnNmb3JtZWRbMF0ua2luZD09PTMwNSkpe3ZhciBpaT1iZS50cmFuc2Zvcm1lZFswXTtFZT1paS5leHBvcnRlZE1vZHVsZXNGcm9tRGVjbGFyYXRpb25FbWl0fWJlLmRpc3Bvc2UoKSxSZSYmKFJlLmR0cz13ci5idW5kbGVGaWxlSW5mbyl9fWZ1bmN0aW9uIHdlKENyKXtpZihlLmlzRXhwb3J0QXNzaWdubWVudChDcikpe0NyLmV4cHJlc3Npb24ua2luZD09PTc5JiZrLmNvbGxlY3RMaW5rZWRBbGlhc2VzKENyLmV4cHJlc3Npb24sITApO3JldHVybn1lbHNlIGlmKGUuaXNFeHBvcnRTcGVjaWZpZXIoQ3IpKXtrLmNvbGxlY3RMaW5rZWRBbGlhc2VzKENyLnByb3BlcnR5TmFtZXx8Q3IubmFtZSwhMCk7cmV0dXJufWUuZm9yRWFjaENoaWxkKENyLHdlKX1mdW5jdGlvbiBkZShDcixZZSxCcixFcixOZSl7dmFyIG49QnIua2luZD09PTMwNj9Ccjp2b2lkIDAsbHI9QnIua2luZD09PTMwNT9Ccjp2b2lkIDAsYmU9bj9uLnNvdXJjZUZpbGVzOltscl0sR2U7eWUoTmUsQnIpJiYoR2U9ZS5jcmVhdGVTb3VyY2VNYXBHZW5lcmF0b3IoWSxlLmdldEJhc2VGaWxlTmFtZShlLm5vcm1hbGl6ZVNsYXNoZXMoQ3IpKSxBZShOZSksZXIoTmUsQ3IsbHIpLE5lKSksbj9Fci53cml0ZUJ1bmRsZShuLEZlLEdlKTpFci53cml0ZUZpbGUobHIsRmUsR2UpO3ZhciB1cjtpZihHZSl7ZyYmZy5wdXNoKHtpbnB1dFNvdXJjZUZpbGVOYW1lczpHZS5nZXRTb3VyY2VzKCksc291cmNlTWFwOkdlLnRvSlNPTigpfSk7dmFyIHlyPWlyKE5lLEdlLENyLFllLGxyKTtpZih5ciYmKEZlLmlzQXRTdGFydE9mTGluZSgpfHxGZS5yYXdXcml0ZShXZSksdXI9RmUuZ2V0VGV4dFBvcygpLEZlLndyaXRlQ29tbWVudChcIi8vIyBcIi5jb25jYXQoXCJzb3VyY2VNYXBwaW5nVVJMXCIsXCI9XCIpLmNvbmNhdCh5cikpKSxZZSl7dmFyIElyPUdlLnRvU3RyaW5nKCk7ZS53cml0ZUZpbGUoWSx1ZSxZZSxJciwhMSxiZSl9fWVsc2UgRmUud3JpdGVMaW5lKCk7ZS53cml0ZUZpbGUoWSx1ZSxDcixGZS5nZXRUZXh0KCksISFmZS5lbWl0Qk9NLGJlLHtzb3VyY2VNYXBVcmxQb3M6dXJ9KSxGZS5jbGVhcigpfWZ1bmN0aW9uIHllKENyLFllKXtyZXR1cm4oQ3Iuc291cmNlTWFwfHxDci5pbmxpbmVTb3VyY2VNYXApJiYoWWUua2luZCE9PTMwNXx8IWUuZmlsZUV4dGVuc2lvbklzKFllLmZpbGVOYW1lLFwiLmpzb25cIikpfWZ1bmN0aW9uIEFlKENyKXt2YXIgWWU9ZS5ub3JtYWxpemVTbGFzaGVzKENyLnNvdXJjZVJvb3R8fFwiXCIpO3JldHVybiBZZSYmZS5lbnN1cmVUcmFpbGluZ0RpcmVjdG9yeVNlcGFyYXRvcihZZSl9ZnVuY3Rpb24gZXIoQ3IsWWUsQnIpe2lmKENyLnNvdXJjZVJvb3QpcmV0dXJuIFkuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KCk7aWYoQ3IubWFwUm9vdCl7dmFyIEVyPWUubm9ybWFsaXplU2xhc2hlcyhDci5tYXBSb290KTtyZXR1cm4gQnImJihFcj1lLmdldERpcmVjdG9yeVBhdGgoZS5nZXRTb3VyY2VGaWxlUGF0aEluTmV3RGlyKEJyLmZpbGVOYW1lLFksRXIpKSksZS5nZXRSb290TGVuZ3RoKEVyKT09PTAmJihFcj1lLmNvbWJpbmVQYXRocyhZLmdldENvbW1vblNvdXJjZURpcmVjdG9yeSgpLEVyKSksRXJ9cmV0dXJuIGUuZ2V0RGlyZWN0b3J5UGF0aChlLm5vcm1hbGl6ZVBhdGgoWWUpKX1mdW5jdGlvbiBpcihDcixZZSxCcixFcixOZSl7aWYoQ3IuaW5saW5lU291cmNlTWFwKXt2YXIgbj1ZZS50b1N0cmluZygpLGxyPWUuYmFzZTY0ZW5jb2RlKGUuc3lzLG4pO3JldHVyblwiZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQobHIpfXZhciBiZT1lLmdldEJhc2VGaWxlTmFtZShlLm5vcm1hbGl6ZVNsYXNoZXMoZS5EZWJ1Zy5jaGVja0RlZmluZWQoRXIpKSk7aWYoQ3IubWFwUm9vdCl7dmFyIEdlPWUubm9ybWFsaXplU2xhc2hlcyhDci5tYXBSb290KTtyZXR1cm4gTmUmJihHZT1lLmdldERpcmVjdG9yeVBhdGgoZS5nZXRTb3VyY2VGaWxlUGF0aEluTmV3RGlyKE5lLmZpbGVOYW1lLFksR2UpKSksZS5nZXRSb290TGVuZ3RoKEdlKT09PTA/KEdlPWUuY29tYmluZVBhdGhzKFkuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KCksR2UpLGVuY29kZVVSSShlLmdldFJlbGF0aXZlUGF0aFRvRGlyZWN0b3J5T3JVcmwoZS5nZXREaXJlY3RvcnlQYXRoKGUubm9ybWFsaXplUGF0aChCcikpLGUuY29tYmluZVBhdGhzKEdlLGJlKSxZLmdldEN1cnJlbnREaXJlY3RvcnkoKSxZLmdldENhbm9uaWNhbEZpbGVOYW1lLCEwKSkpOmVuY29kZVVSSShlLmNvbWJpbmVQYXRocyhHZSxiZSkpfXJldHVybiBlbmNvZGVVUkkoYmUpfX1lLmVtaXRGaWxlcz1SO2Z1bmN0aW9uIHEoayl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGspfWUuZ2V0QnVpbGRJbmZvVGV4dD1xO2Z1bmN0aW9uIE8oayl7cmV0dXJuIEpTT04ucGFyc2Uoayl9ZS5nZXRCdWlsZEluZm89TyxlLm5vdEltcGxlbWVudGVkUmVzb2x2ZXI9e2hhc0dsb2JhbE5hbWU6ZS5ub3RJbXBsZW1lbnRlZCxnZXRSZWZlcmVuY2VkRXhwb3J0Q29udGFpbmVyOmUubm90SW1wbGVtZW50ZWQsZ2V0UmVmZXJlbmNlZEltcG9ydERlY2xhcmF0aW9uOmUubm90SW1wbGVtZW50ZWQsZ2V0UmVmZXJlbmNlZERlY2xhcmF0aW9uV2l0aENvbGxpZGluZ05hbWU6ZS5ub3RJbXBsZW1lbnRlZCxpc0RlY2xhcmF0aW9uV2l0aENvbGxpZGluZ05hbWU6ZS5ub3RJbXBsZW1lbnRlZCxpc1ZhbHVlQWxpYXNEZWNsYXJhdGlvbjplLm5vdEltcGxlbWVudGVkLGlzUmVmZXJlbmNlZEFsaWFzRGVjbGFyYXRpb246ZS5ub3RJbXBsZW1lbnRlZCxpc1RvcExldmVsVmFsdWVJbXBvcnRFcXVhbHNXaXRoRW50aXR5TmFtZTplLm5vdEltcGxlbWVudGVkLGdldE5vZGVDaGVja0ZsYWdzOmUubm90SW1wbGVtZW50ZWQsaXNEZWNsYXJhdGlvblZpc2libGU6ZS5ub3RJbXBsZW1lbnRlZCxpc0xhdGVCb3VuZDpmdW5jdGlvbihrKXtyZXR1cm4hMX0sY29sbGVjdExpbmtlZEFsaWFzZXM6ZS5ub3RJbXBsZW1lbnRlZCxpc0ltcGxlbWVudGF0aW9uT2ZPdmVybG9hZDplLm5vdEltcGxlbWVudGVkLGlzUmVxdWlyZWRJbml0aWFsaXplZFBhcmFtZXRlcjplLm5vdEltcGxlbWVudGVkLGlzT3B0aW9uYWxVbmluaXRpYWxpemVkUGFyYW1ldGVyUHJvcGVydHk6ZS5ub3RJbXBsZW1lbnRlZCxpc0V4cGFuZG9GdW5jdGlvbkRlY2xhcmF0aW9uOmUubm90SW1wbGVtZW50ZWQsZ2V0UHJvcGVydGllc09mQ29udGFpbmVyRnVuY3Rpb246ZS5ub3RJbXBsZW1lbnRlZCxjcmVhdGVUeXBlT2ZEZWNsYXJhdGlvbjplLm5vdEltcGxlbWVudGVkLGNyZWF0ZVJldHVyblR5cGVPZlNpZ25hdHVyZURlY2xhcmF0aW9uOmUubm90SW1wbGVtZW50ZWQsY3JlYXRlVHlwZU9mRXhwcmVzc2lvbjplLm5vdEltcGxlbWVudGVkLGNyZWF0ZUxpdGVyYWxDb25zdFZhbHVlOmUubm90SW1wbGVtZW50ZWQsaXNTeW1ib2xBY2Nlc3NpYmxlOmUubm90SW1wbGVtZW50ZWQsaXNFbnRpdHlOYW1lVmlzaWJsZTplLm5vdEltcGxlbWVudGVkLGdldENvbnN0YW50VmFsdWU6ZS5ub3RJbXBsZW1lbnRlZCxnZXRSZWZlcmVuY2VkVmFsdWVEZWNsYXJhdGlvbjplLm5vdEltcGxlbWVudGVkLGdldFR5cGVSZWZlcmVuY2VTZXJpYWxpemF0aW9uS2luZDplLm5vdEltcGxlbWVudGVkLGlzT3B0aW9uYWxQYXJhbWV0ZXI6ZS5ub3RJbXBsZW1lbnRlZCxtb2R1bGVFeHBvcnRzU29tZVZhbHVlOmUubm90SW1wbGVtZW50ZWQsaXNBcmd1bWVudHNMb2NhbEJpbmRpbmc6ZS5ub3RJbXBsZW1lbnRlZCxnZXRFeHRlcm5hbE1vZHVsZUZpbGVGcm9tRGVjbGFyYXRpb246ZS5ub3RJbXBsZW1lbnRlZCxnZXRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlc0ZvckVudGl0eU5hbWU6ZS5ub3RJbXBsZW1lbnRlZCxnZXRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlc0ZvclN5bWJvbDplLm5vdEltcGxlbWVudGVkLGlzTGl0ZXJhbENvbnN0RGVjbGFyYXRpb246ZS5ub3RJbXBsZW1lbnRlZCxnZXRKc3hGYWN0b3J5RW50aXR5OmUubm90SW1wbGVtZW50ZWQsZ2V0SnN4RnJhZ21lbnRGYWN0b3J5RW50aXR5OmUubm90SW1wbGVtZW50ZWQsZ2V0QWxsQWNjZXNzb3JEZWNsYXJhdGlvbnM6ZS5ub3RJbXBsZW1lbnRlZCxnZXRTeW1ib2xPZkV4dGVybmFsTW9kdWxlU3BlY2lmaWVyOmUubm90SW1wbGVtZW50ZWQsaXNCaW5kaW5nQ2FwdHVyZWRCeU5vZGU6ZS5ub3RJbXBsZW1lbnRlZCxnZXREZWNsYXJhdGlvblN0YXRlbWVudHNGb3JTb3VyY2VGaWxlOmUubm90SW1wbGVtZW50ZWQsaXNJbXBvcnRSZXF1aXJlZEJ5QXVnbWVudGF0aW9uOmUubm90SW1wbGVtZW50ZWR9O2Z1bmN0aW9uIHZlKGssWSxVKXt2YXIgaixIPWUuRGVidWcuY2hlY2tEZWZpbmVkKGsuanMpLEk9KChqPUguc291cmNlcyk9PT1udWxsfHxqPT09dm9pZCAwP3ZvaWQgMDpqLnByb2xvZ3VlcykmJmUuYXJyYXlUb01hcChILnNvdXJjZXMucHJvbG9ndWVzLGZ1bmN0aW9uKGwpe3JldHVybiBsLmZpbGV9KTtyZXR1cm4gay5zb3VyY2VGaWxlcy5tYXAoZnVuY3Rpb24obCxkKXt2YXIgRCxmZSxnPUk9PW51bGw/dm9pZCAwOkkuZ2V0KGQpLG5lPWc9PW51bGw/dm9pZCAwOmcuZGlyZWN0aXZlcy5tYXAoZnVuY3Rpb24oRmUpe3ZhciBaPWUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKEZlLmV4cHJlc3Npb24udGV4dCksRmUuZXhwcmVzc2lvbiksQmU9ZS5zZXRUZXh0UmFuZ2UoZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoWiksRmUpO3JldHVybiBlLnNldFBhcmVudChaLEJlKSxCZX0pLHVlPWUuZmFjdG9yeS5jcmVhdGVUb2tlbigxKSxXZT1lLmZhY3RvcnkuY3JlYXRlU291cmNlRmlsZShuZSE9bnVsbD9uZTpbXSx1ZSwwKTtyZXR1cm4gV2UuZmlsZU5hbWU9ZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRGlyZWN0b3J5KFUuZ2V0Q3VycmVudERpcmVjdG9yeSgpLGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChsLFkpLCFVLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSksV2UudGV4dD0oRD1nPT1udWxsP3ZvaWQgMDpnLnRleHQpIT09bnVsbCYmRCE9PXZvaWQgMD9EOlwiXCIsZS5zZXRUZXh0UmFuZ2VQb3NXaWR0aChXZSwwLChmZT1nPT1udWxsP3ZvaWQgMDpnLnRleHQubGVuZ3RoKSE9PW51bGwmJmZlIT09dm9pZCAwP2ZlOjApLGUuc2V0RWFjaFBhcmVudChXZS5zdGF0ZW1lbnRzLFdlKSxlLnNldFRleHRSYW5nZVBvc1dpZHRoKHVlLFdlLmVuZCwwKSxlLnNldFBhcmVudCh1ZSxXZSksV2V9KX1mdW5jdGlvbiBlZShrLFksVSxqKXt2YXIgSD1FKGsub3B0aW9ucywhMSksST1ILmJ1aWxkSW5mb1BhdGgsbD1ILmpzRmlsZVBhdGgsZD1ILnNvdXJjZU1hcEZpbGVQYXRoLEQ9SC5kZWNsYXJhdGlvbkZpbGVQYXRoLGZlPUguZGVjbGFyYXRpb25NYXBQYXRoLGc9WS5yZWFkRmlsZShlLkRlYnVnLmNoZWNrRGVmaW5lZChJKSk7aWYoIWcpcmV0dXJuIEk7dmFyIG5lPVkucmVhZEZpbGUoZS5EZWJ1Zy5jaGVja0RlZmluZWQobCkpO2lmKCFuZSlyZXR1cm4gbDt2YXIgdWU9ZCYmWS5yZWFkRmlsZShkKTtpZihkJiYhdWV8fGsub3B0aW9ucy5pbmxpbmVTb3VyY2VNYXApcmV0dXJuIGR8fFwiaW5saW5lIHNvdXJjZW1hcCBkZWNvZGluZ1wiO3ZhciBXZT1EJiZZLnJlYWRGaWxlKEQpO2lmKEQmJiFXZSlyZXR1cm4gRDt2YXIgRmU9ZmUmJlkucmVhZEZpbGUoZmUpO2lmKGZlJiYhRmV8fGsub3B0aW9ucy5pbmxpbmVTb3VyY2VNYXApcmV0dXJuIGZlfHxcImlubGluZSBzb3VyY2VtYXAgZGVjb2RpbmdcIjt2YXIgWj1PKGcpO2lmKCFaLmJ1bmRsZXx8IVouYnVuZGxlLmpzfHxXZSYmIVouYnVuZGxlLmR0cylyZXR1cm4gSTt2YXIgQmU9ZS5nZXREaXJlY3RvcnlQYXRoKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChJLFkuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSksZ2U9ZS5jcmVhdGVJbnB1dEZpbGVzKG5lLFdlLGQsdWUsZmUsRmUsbCxELEksWiwhMCksUmU9W10semU9ZS5jcmVhdGVQcmVwZW5kTm9kZXMoay5wcm9qZWN0UmVmZXJlbmNlcyxVLGZ1bmN0aW9uKHJyKXtyZXR1cm4gWS5yZWFkRmlsZShycil9KSxFZT12ZShaLmJ1bmRsZSxCZSxZKSxIZT17Z2V0UHJlcGVuZE5vZGVzOmUubWVtb2l6ZShmdW5jdGlvbigpe3JldHVybiBWZShWZShbXSx6ZSwhMCksW2dlXSwhMSl9KSxnZXRDYW5vbmljYWxGaWxlTmFtZTpZLmdldENhbm9uaWNhbEZpbGVOYW1lLGdldENvbW1vblNvdXJjZURpcmVjdG9yeTpmdW5jdGlvbigpe3JldHVybiBlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoWi5idW5kbGUuY29tbW9uU291cmNlRGlyZWN0b3J5LEJlKX0sZ2V0Q29tcGlsZXJPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIGsub3B0aW9uc30sZ2V0Q3VycmVudERpcmVjdG9yeTpmdW5jdGlvbigpe3JldHVybiBZLmdldEN1cnJlbnREaXJlY3RvcnkoKX0sZ2V0TmV3TGluZTpmdW5jdGlvbigpe3JldHVybiBZLmdldE5ld0xpbmUoKX0sZ2V0U291cmNlRmlsZTplLnJldHVyblVuZGVmaW5lZCxnZXRTb3VyY2VGaWxlQnlQYXRoOmUucmV0dXJuVW5kZWZpbmVkLGdldFNvdXJjZUZpbGVzOmZ1bmN0aW9uKCl7cmV0dXJuIEVlfSxnZXRMaWJGaWxlRnJvbVJlZmVyZW5jZTplLm5vdEltcGxlbWVudGVkLGlzU291cmNlRmlsZUZyb21FeHRlcm5hbExpYnJhcnk6ZS5yZXR1cm5GYWxzZSxnZXRSZXNvbHZlZFByb2plY3RSZWZlcmVuY2VUb1JlZGlyZWN0OmUucmV0dXJuVW5kZWZpbmVkLGdldFByb2plY3RSZWZlcmVuY2VSZWRpcmVjdDplLnJldHVyblVuZGVmaW5lZCxpc1NvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0OmUucmV0dXJuRmFsc2Usd3JpdGVGaWxlOmZ1bmN0aW9uKHJyLEllLF9lKXtzd2l0Y2gocnIpe2Nhc2UgbDppZihuZT09PUllKXJldHVybjticmVhaztjYXNlIGQ6aWYodWU9PT1JZSlyZXR1cm47YnJlYWs7Y2FzZSBJOnZhciB3ZT1PKEllKTt3ZS5wcm9ncmFtPVoucHJvZ3JhbTt2YXIgZGU9Wi5idW5kbGUseWU9ZGUuanMsQWU9ZGUuZHRzLGVyPWRlLnNvdXJjZUZpbGVzO3dlLmJ1bmRsZS5qcy5zb3VyY2VzPXllLnNvdXJjZXMsQWUmJih3ZS5idW5kbGUuZHRzLnNvdXJjZXM9QWUuc291cmNlcyksd2UuYnVuZGxlLnNvdXJjZUZpbGVzPWVyLFJlLnB1c2goe25hbWU6cnIsdGV4dDpxKHdlKSx3cml0ZUJ5dGVPcmRlck1hcms6X2V9KTtyZXR1cm47Y2FzZSBEOmlmKFdlPT09SWUpcmV0dXJuO2JyZWFrO2Nhc2UgZmU6aWYoRmU9PT1JZSlyZXR1cm47YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmZhaWwoXCJVbmV4cGVjdGVkIHBhdGg6IFwiLmNvbmNhdChycikpfVJlLnB1c2goe25hbWU6cnIsdGV4dDpJZSx3cml0ZUJ5dGVPcmRlck1hcms6X2V9KX0saXNFbWl0QmxvY2tlZDplLnJldHVybkZhbHNlLHJlYWRGaWxlOmZ1bmN0aW9uKHJyKXtyZXR1cm4gWS5yZWFkRmlsZShycil9LGZpbGVFeGlzdHM6ZnVuY3Rpb24ocnIpe3JldHVybiBZLmZpbGVFeGlzdHMocnIpfSx1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIFkudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpfSxnZXRQcm9ncmFtQnVpbGRJbmZvOmUucmV0dXJuVW5kZWZpbmVkLGdldFNvdXJjZUZpbGVGcm9tUmVmZXJlbmNlOmUucmV0dXJuVW5kZWZpbmVkLHJlZGlyZWN0VGFyZ2V0c01hcDplLmNyZWF0ZU11bHRpTWFwKCksZ2V0RmlsZUluY2x1ZGVSZWFzb25zOmUubm90SW1wbGVtZW50ZWR9O3JldHVybiBSKGUubm90SW1wbGVtZW50ZWRSZXNvbHZlcixIZSx2b2lkIDAsZS5nZXRUcmFuc2Zvcm1lcnMoay5vcHRpb25zLGopKSxSZX1lLmVtaXRVc2luZ0J1aWxkSW5mbz1lZTt2YXIgaGU7KGZ1bmN0aW9uKGspe2tbay5Ob3RpZmljYXRpb249MF09XCJOb3RpZmljYXRpb25cIixrW2suU3Vic3RpdHV0aW9uPTFdPVwiU3Vic3RpdHV0aW9uXCIsa1trLkNvbW1lbnRzPTJdPVwiQ29tbWVudHNcIixrW2suU291cmNlTWFwcz0zXT1cIlNvdXJjZU1hcHNcIixrW2suRW1pdD00XT1cIkVtaXRcIn0pKGhlfHwoaGU9e30pKTtmdW5jdGlvbiBGKGssWSl7az09PXZvaWQgMCYmKGs9e30pLFk9PT12b2lkIDAmJihZPXt9KTt2YXIgVT1ZLmhhc0dsb2JhbE5hbWUsaj1ZLm9uRW1pdE5vZGUsSD1qPT09dm9pZCAwP2Uubm9FbWl0Tm90aWZpY2F0aW9uOmosST1ZLmlzRW1pdE5vdGlmaWNhdGlvbkVuYWJsZWQsbD1ZLnN1YnN0aXR1dGVOb2RlLGQ9bD09PXZvaWQgMD9lLm5vRW1pdFN1YnN0aXR1dGlvbjpsLEQ9WS5vbkJlZm9yZUVtaXROb2RlLGZlPVkub25BZnRlckVtaXROb2RlLGc9WS5vbkJlZm9yZUVtaXROb2RlQXJyYXksbmU9WS5vbkFmdGVyRW1pdE5vZGVBcnJheSx1ZT1ZLm9uQmVmb3JlRW1pdFRva2VuLFdlPVkub25BZnRlckVtaXRUb2tlbixGZT0hIWsuZXh0ZW5kZWREaWFnbm9zdGljcyxaPWUuZ2V0TmV3TGluZUNoYXJhY3RlcihrKSxCZT1lLmdldEVtaXRNb2R1bGVLaW5kKGspLGdlPW5ldyBlLk1hcCxSZSx6ZSxFZSxIZSxycixJZSxfZSx3ZSxkZT1rLnByZXNlcnZlU291cmNlTmV3bGluZXMseWUsQWUsZXIsaXI9Ql8sQ3IsWWU9ay53cml0ZUJ1bmRsZUZpbGVJbmZvP3tzZWN0aW9uczpbXX06dm9pZCAwLEJyPVllP2UuRGVidWcuY2hlY2tEZWZpbmVkKGsucmVsYXRpdmVUb0J1aWxkSW5mbyk6dm9pZCAwLEVyPWsucmVjb3JkSW50ZXJuYWxTZWN0aW9uLE5lPTAsbj1cInRleHRcIixscj0hMCxiZSxHZSx1cj0tMSx5cixJcj0tMSx3cj0tMSxVcj0tMSxpaT0tMSxtaSxwZSxvcj0hMSxxcj0hIWsucmVtb3ZlQ29tbWVudHMsc2ksRGksd2k9ZS5wZXJmb3JtYW5jZS5jcmVhdGVUaW1lcklmKEZlLFwiY29tbWVudFRpbWVcIixcImJlZm9yZUNvbW1lbnRcIixcImFmdGVyQ29tbWVudFwiKSxYaT13aS5lbnRlcixldD13aS5leGl0LEdpPWUuZmFjdG9yeS5wYXJlbnRoZXNpemVyLFd0PXtzZWxlY3Q6ZnVuY3Rpb24odil7cmV0dXJuIHY9PT0wP0dpLnBhcmVudGhlc2l6ZUxlYWRpbmdUeXBlQXJndW1lbnQ6dm9pZCAwfX0sWnQ9cHQoKTtyZXR1cm4gZnIoKSx7cHJpbnROb2RlOl9yLHByaW50TGlzdDpwaSxwcmludEZpbGU6WGUscHJpbnRCdW5kbGU6YWUsd3JpdGVOb2RlOnRpLHdyaXRlTGlzdDpaZSx3cml0ZUZpbGU6QXIsd3JpdGVCdW5kbGU6dnIsYnVuZGxlRmlsZUluZm86WWV9O2Z1bmN0aW9uIF9yKHYsc3IsZmkpe3N3aXRjaCh2KXtjYXNlIDA6ZS5EZWJ1Zy5hc3NlcnQoZS5pc1NvdXJjZUZpbGUoc3IpLFwiRXhwZWN0ZWQgYSBTb3VyY2VGaWxlIG5vZGUuXCIpO2JyZWFrO2Nhc2UgMjplLkRlYnVnLmFzc2VydChlLmlzSWRlbnRpZmllcihzciksXCJFeHBlY3RlZCBhbiBJZGVudGlmaWVyIG5vZGUuXCIpO2JyZWFrO2Nhc2UgMTplLkRlYnVnLmFzc2VydChlLmlzRXhwcmVzc2lvbihzciksXCJFeHBlY3RlZCBhbiBFeHByZXNzaW9uIG5vZGUuXCIpO2JyZWFrfXN3aXRjaChzci5raW5kKXtjYXNlIDMwNTpyZXR1cm4gWGUoc3IpO2Nhc2UgMzA2OnJldHVybiBhZShzcik7Y2FzZSAzMDc6cmV0dXJuIEpyKHNyKX1yZXR1cm4gdGkodixzcixmaSxPZSgpKSxucigpfWZ1bmN0aW9uIHBpKHYsc3IsZmkpe3JldHVybiBaZSh2LHNyLGZpLE9lKCkpLG5yKCl9ZnVuY3Rpb24gYWUodil7cmV0dXJuIHZyKHYsT2UoKSx2b2lkIDApLG5yKCl9ZnVuY3Rpb24gWGUodil7cmV0dXJuIEFyKHYsT2UoKSx2b2lkIDApLG5yKCl9ZnVuY3Rpb24gSnIodil7cmV0dXJuIG1yKHYsT2UoKSksbnIoKX1mdW5jdGlvbiB0aSh2LHNyLGZpLHppKXt2YXIgU2E9QWU7VWUoemksdm9pZCAwKSxNcih2LHNyLGZpKSxmcigpLEFlPVNhfWZ1bmN0aW9uIFplKHYsc3IsZmksemkpe3ZhciBTYT1BZTtVZSh6aSx2b2lkIDApLGZpJiZQZShmaSksWm4odm9pZCAwLHNyLHYpLGZyKCksQWU9U2F9ZnVuY3Rpb24gU3IoKXtyZXR1cm4gQWUuZ2V0VGV4dFBvc1dpdGhXcml0ZUxpbmU/QWUuZ2V0VGV4dFBvc1dpdGhXcml0ZUxpbmUoKTpBZS5nZXRUZXh0UG9zKCl9ZnVuY3Rpb24genIodixzcixmaSl7dmFyIHppPWUubGFzdE9yVW5kZWZpbmVkKFllLnNlY3Rpb25zKTt6aSYmemkua2luZD09PWZpP3ppLmVuZD1zcjpZZS5zZWN0aW9ucy5wdXNoKHtwb3M6dixlbmQ6c3Isa2luZDpmaX0pfWZ1bmN0aW9uIFdyKHYpe2lmKEVyJiZZZSYmUmUmJihlLmlzRGVjbGFyYXRpb24odil8fGUuaXNWYXJpYWJsZVN0YXRlbWVudCh2KSkmJmUuaXNJbnRlcm5hbERlY2xhcmF0aW9uKHYsUmUpJiZuIT09XCJpbnRlcm5hbFwiKXt2YXIgc3I9bjtyZXR1cm4geGUoQWUuZ2V0VGV4dFBvcygpKSxOZT1TcigpLG49XCJpbnRlcm5hbFwiLHNyfX1mdW5jdGlvbiBKZSh2KXt2JiYoeGUoQWUuZ2V0VGV4dFBvcygpKSxOZT1TcigpLG49dil9ZnVuY3Rpb24geGUodil7cmV0dXJuIE5lPHY/KHpyKE5lLHYsbiksITApOiExfWZ1bmN0aW9uIHZyKHYsc3IsZmkpe3ZhciB6aTtDcj0hMTt2YXIgU2E9QWU7VWUoc3IsZmkpLGZfKHYpLExfKHYpLEZpKHYpLENwKHYpO2Zvcih2YXIgZGE9MCxIYT12LnByZXBlbmRzO2RhPEhhLmxlbmd0aDtkYSsrKXt2YXIgdGE9SGFbZGFdO2JzKCk7dmFyIG5uPUFlLmdldFRleHRQb3MoKSxXbz1ZZSYmWWUuc2VjdGlvbnM7aWYoV28mJihZZS5zZWN0aW9ucz1bXSksTXIoNCx0YSx2b2lkIDApLFllKXt2YXIgTG89WWUuc2VjdGlvbnM7WWUuc2VjdGlvbnM9V28sdGEub2xkRmlsZU9mQ3VycmVudEVtaXQ/KHppPVllLnNlY3Rpb25zKS5wdXNoLmFwcGx5KHppLExvKTooTG8uZm9yRWFjaChmdW5jdGlvbihsdSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGUuaXNCdW5kbGVGaWxlVGV4dExpa2UobHUpKX0pLFllLnNlY3Rpb25zLnB1c2goe3BvczpubixlbmQ6QWUuZ2V0VGV4dFBvcygpLGtpbmQ6XCJwcmVwZW5kXCIsZGF0YTpCcih0YS5maWxlTmFtZSksdGV4dHM6TG99KSl9fU5lPVNyKCk7Zm9yKHZhciBvYz0wLHV1PXYuc291cmNlRmlsZXM7b2M8dXUubGVuZ3RoO29jKyspe3ZhciBpcz11dVtvY107TXIoMCxpcyxpcyl9aWYoWWUmJnYuc291cmNlRmlsZXMubGVuZ3RoKXt2YXIgYXU9QWUuZ2V0VGV4dFBvcygpO2lmKHhlKGF1KSl7dmFyIE91PWxfKHYpO091JiYoWWUuc291cmNlc3x8KFllLnNvdXJjZXM9e30pLFllLnNvdXJjZXMucHJvbG9ndWVzPU91KTt2YXIgc2Y9S2kodik7c2YmJihZZS5zb3VyY2VzfHwoWWUuc291cmNlcz17fSksWWUuc291cmNlcy5oZWxwZXJzPXNmKX19ZnIoKSxBZT1TYX1mdW5jdGlvbiBtcih2LHNyKXt2YXIgZmk9QWU7VWUoc3Isdm9pZCAwKSxNcig0LHYsdm9pZCAwKSxmcigpLEFlPWZpfWZ1bmN0aW9uIEFyKHYsc3IsZmkpe0NyPSEwO3ZhciB6aT1BZTtVZShzcixmaSksZl8odiksTF8odiksTXIoMCx2LHYpLGZyKCksQWU9eml9ZnVuY3Rpb24gT2UoKXtyZXR1cm4gZXJ8fChlcj1lLmNyZWF0ZVRleHRXcml0ZXIoWikpfWZ1bmN0aW9uIG5yKCl7dmFyIHY9ZXIuZ2V0VGV4dCgpO3JldHVybiBlci5jbGVhcigpLHZ9ZnVuY3Rpb24gTXIodixzcixmaSl7ZmkmJlBlKGZpKSxXaSh2LHNyLHZvaWQgMCl9ZnVuY3Rpb24gUGUodil7UmU9dixtaT12b2lkIDAscGU9dm9pZCAwLHYmJnd1KHYpfWZ1bmN0aW9uIFVlKHYsc3Ipe3YmJmsub21pdFRyYWlsaW5nU2VtaWNvbG9uJiYodj1lLmdldFRyYWlsaW5nU2VtaWNvbG9uRGVmZXJyaW5nV3JpdGVyKHYpKSxBZT12LGJlPXNyLGxyPSFBZXx8IWJlfWZ1bmN0aW9uIGZyKCl7emU9W10sRWU9W10sSGU9bmV3IGUuU2V0LHJyPVtdLEllPTAsX2U9W10sUmU9dm9pZCAwLG1pPXZvaWQgMCxwZT12b2lkIDAsVWUodm9pZCAwLHZvaWQgMCl9ZnVuY3Rpb24gRGUoKXtyZXR1cm4gbWl8fChtaT1lLmdldExpbmVTdGFydHMoZS5EZWJ1Zy5jaGVja0RlZmluZWQoUmUpKSl9ZnVuY3Rpb24gZ3Iodixzcil7aWYodiE9PXZvaWQgMCl7dmFyIGZpPVdyKHYpO1dpKDQsdixzciksSmUoZmkpfX1mdW5jdGlvbiBWcih2KXt2IT09dm9pZCAwJiZXaSgyLHYsdm9pZCAwKX1mdW5jdGlvbiBUcih2LHNyKXt2IT09dm9pZCAwJiZXaSgxLHYsc3IpfWZ1bmN0aW9uIHZpKHYpe1dpKGUuaXNTdHJpbmdMaXRlcmFsKHYpPzY6NCx2KX1mdW5jdGlvbiBVaSh2KXtkZSYmZS5nZXRFbWl0RmxhZ3ModikmMTM0MjE3NzI4JiYoZGU9ITEpfWZ1bmN0aW9uIFlpKHYpe2RlPXZ9ZnVuY3Rpb24gV2kodixzcixmaSl7RGk9Zmk7dmFyIHppPW50KDAsdixzcik7emkodixzciksRGk9dm9pZCAwfWZ1bmN0aW9uIGN0KHYpe3JldHVybiFxciYmIWUuaXNTb3VyY2VGaWxlKHYpfWZ1bmN0aW9uIExpKHYpe3JldHVybiFsciYmIWUuaXNTb3VyY2VGaWxlKHYpJiYhZS5pc0luSnNvbkZpbGUodikmJiFlLmlzVW5wYXJzZWRTb3VyY2UodikmJiFlLmlzVW5wYXJzZWRQcmVwZW5kKHYpfWZ1bmN0aW9uIG50KHYsc3IsZmkpe3N3aXRjaCh2KXtjYXNlIDA6aWYoSCE9PWUubm9FbWl0Tm90aWZpY2F0aW9uJiYoIUl8fEkoZmkpKSlyZXR1cm4geHQ7Y2FzZSAxOmlmKGQhPT1lLm5vRW1pdFN1YnN0aXR1dGlvbiYmKHNpPWQoc3IsZmkpfHxmaSkhPT1maSlyZXR1cm4gRGkmJihzaT1EaShzaSkpLElpO2Nhc2UgMjppZihjdChmaSkpcmV0dXJuIHhmO2Nhc2UgMzppZihMaShmaSkpcmV0dXJuIGhkO2Nhc2UgNDpyZXR1cm4gdXQ7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcih2KX19ZnVuY3Rpb24gTXQodixzcixmaSl7cmV0dXJuIG50KHYrMSxzcixmaSl9ZnVuY3Rpb24geHQodixzcil7dmFyIGZpPU10KDAsdixzcik7SCh2LHNyLGZpKX1mdW5jdGlvbiB1dCh2LHNyKXtpZihEPT1udWxsfHxEKHNyKSxkZSl7dmFyIGZpPWRlO1VpKHNyKSxEdCh2LHNyKSxZaShmaSl9ZWxzZSBEdCh2LHNyKTtmZT09bnVsbHx8ZmUoc3IpLERpPXZvaWQgMH1mdW5jdGlvbiBEdCh2LHNyLGZpKXtpZihmaT09PXZvaWQgMCYmKGZpPSEwKSxmaSl7dmFyIHppPWUuZ2V0U25pcHBldEVsZW1lbnQoc3IpO2lmKHppKXJldHVybiBWaSh2LHNyLHppKX1pZih2PT09MClyZXR1cm4geWYoZS5jYXN0KHNyLGUuaXNTb3VyY2VGaWxlKSk7aWYodj09PTIpcmV0dXJuIGJhKGUuY2FzdChzcixlLmlzSWRlbnRpZmllcikpO2lmKHY9PT02KXJldHVybiB3dChlLmNhc3Qoc3IsZS5pc1N0cmluZ0xpdGVyYWwpLCEwKTtpZih2PT09MylyZXR1cm4gUnQoZS5jYXN0KHNyLGUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24pKTtpZih2PT09NSlyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROb2RlKHNyLGUuaXNFbXB0eVN0YXRlbWVudCksc3UoITApO2lmKHY9PT00KXtzd2l0Y2goc3Iua2luZCl7Y2FzZSAxNTpjYXNlIDE2OmNhc2UgMTc6cmV0dXJuIHd0KHNyLCExKTtjYXNlIDc5OnJldHVybiBiYShzcik7Y2FzZSA4MDpyZXR1cm4gJGEoc3IpO2Nhc2UgMTYxOnJldHVybiBRYShzcik7Y2FzZSAxNjI6cmV0dXJuIERuKHNyKTtjYXNlIDE2MzpyZXR1cm4ga2Eoc3IpO2Nhc2UgMTY0OnJldHVybiBCYShzcik7Y2FzZSAxNjU6cmV0dXJuIHBuKHNyKTtjYXNlIDE2NjpyZXR1cm4gQ24oc3IpO2Nhc2UgMTY3OnJldHVybiBCaShzcik7Y2FzZSAxNjg6cmV0dXJuIGtuKHNyKTtjYXNlIDE2OTpyZXR1cm4geG4oc3IpO2Nhc2UgMTcwOnJldHVybiBLbihzcik7Y2FzZSAxNzE6cmV0dXJuIFBuKHNyKTtjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gZW8oc3IpO2Nhc2UgMTc0OnJldHVybiBSbihzcik7Y2FzZSAxNzU6cmV0dXJuIERhKHNyKTtjYXNlIDE3NjpyZXR1cm4gYm8oc3IpO2Nhc2UgMTc3OnJldHVybiBXbihzcik7Y2FzZSAxNzg6cmV0dXJuIHRvKHNyKTtjYXNlIDE3OTpyZXR1cm4gQ28oc3IpO2Nhc2UgMTgwOnJldHVybiBQcihzcik7Y2FzZSAxODE6cmV0dXJuIHhpKHNyKTtjYXNlIDE4MjpyZXR1cm4gU3Qoc3IpO2Nhc2UgMTgzOnJldHVybiBwYShzcik7Y2FzZSAxODQ6cmV0dXJuIEpuKHNyKTtjYXNlIDE4NTpyZXR1cm4gR3Ioc3IpO2Nhc2UgMTg3OnJldHVybiBTKHNyKTtjYXNlIDE4ODpyZXR1cm4gQ2Uoc3IpO2Nhc2UgMTg5OnJldHVybiBxZShzcik7Y2FzZSAxOTA6cmV0dXJuIGJyKHNyKTtjYXNlIDE5MTpyZXR1cm4gWnIoc3IpO2Nhc2UgMjI4OnJldHVybiBmbyhzcik7Y2FzZSAxOTI6cmV0dXJuIFNpKCk7Y2FzZSAxOTM6cmV0dXJuIFBpKHNyKTtjYXNlIDE5NDpyZXR1cm4gUWkoc3IpO2Nhc2UgMTk1OnJldHVybiBDdChzcik7Y2FzZSAxOTY6cmV0dXJuIHNhKHNyKTtjYXNlIDE5NzpyZXR1cm4gUWUoc3IpO2Nhc2UgMTk4OnJldHVybiBlbihzcik7Y2FzZSAxOTk6cmV0dXJuIFJvKHNyKTtjYXNlIDIwMDpyZXR1cm4gV2Eoc3IpO2Nhc2UgMjAxOnJldHVybiBxbihzcik7Y2FzZSAyMDI6cmV0dXJuIG1vKHNyKTtjYXNlIDIwMzpyZXR1cm4gU28oc3IpO2Nhc2UgMjMzOnJldHVybiBBbyhzcik7Y2FzZSAyMzQ6cmV0dXJuIEVuKCk7Y2FzZSAyMzU6cmV0dXJuIE1zKHNyKTtjYXNlIDIzNzpyZXR1cm4geGMoc3IpO2Nhc2UgMjM2OnJldHVybiBzdSghMSk7Y2FzZSAyMzg6cmV0dXJuIHRsKHNyKTtjYXNlIDIzOTpyZXR1cm4gWmMoc3IpO2Nhc2UgMjQwOnJldHVybiBhbChzcik7Y2FzZSAyNDE6cmV0dXJuIEpvKHNyKTtjYXNlIDI0MjpyZXR1cm4gZXUoc3IpO2Nhc2UgMjQzOnJldHVybiBXcyhzcik7Y2FzZSAyNDQ6cmV0dXJuIHB1KHNyKTtjYXNlIDI0NTpyZXR1cm4gUWwoc3IpO2Nhc2UgMjQ2OnJldHVybiB4bChzcik7Y2FzZSAyNDc6cmV0dXJuIEVpKHNyKTtjYXNlIDI0ODpyZXR1cm4gdHQoc3IpO2Nhc2UgMjQ5OnJldHVybiBrdChzcik7Y2FzZSAyNTA6cmV0dXJuIGJ0KHNyKTtjYXNlIDI1MTpyZXR1cm4gaWEoc3IpO2Nhc2UgMjUyOnJldHVybiBYdChzcik7Y2FzZSAyNTM6cmV0dXJuIFphKHNyKTtjYXNlIDI1NDpyZXR1cm4gYm4oc3IpO2Nhc2UgMjU1OnJldHVybiBfYShzcik7Y2FzZSAyNTY6cmV0dXJuIHFhKHNyKTtjYXNlIDI1NzpyZXR1cm4gT3Ioc3IpO2Nhc2UgMjU4OnJldHVybiBkdChzcik7Y2FzZSAyNTk6cmV0dXJuIGxhKHNyKTtjYXNlIDI2MDpyZXR1cm4gd2Eoc3IpO2Nhc2UgMjYxOnJldHVybiBPbihzcik7Y2FzZSAyNjI6cmV0dXJuIE5vKHNyKTtjYXNlIDI2MzpyZXR1cm4gam8oc3IpO2Nhc2UgMjY0OnJldHVybiB2Zihzcik7Y2FzZSAyNjU6cmV0dXJuIHBvKHNyKTtjYXNlIDI2NjpyZXR1cm4gJG4oc3IpO2Nhc2UgMjY3OnJldHVybiBIbyhzcik7Y2FzZSAyNjg6cmV0dXJuIFpvKHNyKTtjYXNlIDI3NDpyZXR1cm4gUF8oc3IpO2Nhc2UgMjY5OnJldHVybiBFcyhzcik7Y2FzZSAyNzA6cmV0dXJuIHljKHNyKTtjYXNlIDI3MTpyZXR1cm4gWHIoc3IpO2Nhc2UgMjcyOnJldHVybiBMcyhzcik7Y2FzZSAyNzM6cmV0dXJuIEVsKHNyKTtjYXNlIDI3NTpyZXR1cm4gdnAoc3IpO2Nhc2UgMjkzOnJldHVybiBJYyhzcik7Y2FzZSAyOTQ6cmV0dXJuIHp1KHNyKTtjYXNlIDI3NjpyZXR1cm47Y2FzZSAyNzc6cmV0dXJuIHlwKHNyKTtjYXNlIDExOnJldHVybiBocChzcik7Y2FzZSAyODA6Y2FzZSAyODM6cmV0dXJuIGNfKHNyKTtjYXNlIDI4MTpjYXNlIDI4NDpyZXR1cm4gZ3Uoc3IpO2Nhc2UgMjg1OnJldHVybiBzZChzcik7Y2FzZSAyODY6cmV0dXJuIERwKHNyKTtjYXNlIDI4NzpyZXR1cm4gQWEoc3IpO2Nhc2UgMjg4OnJldHVybiBjZChzcik7Y2FzZSAyODk6cmV0dXJuIG5sKHNyKTtjYXNlIDI5MDpyZXR1cm4gaGMoc3IpO2Nhc2UgMjkxOnJldHVybiB1Xyhzcik7Y2FzZSAyOTI6cmV0dXJuIEpmKHNyKTtjYXNlIDI5NjpyZXR1cm4gd18oc3IpO2Nhc2UgMjk3OnJldHVybiB1ZChzcik7Y2FzZSAyOTg6cmV0dXJuIGt1KHNyKTtjYXNlIDI5OTpyZXR1cm4gbGQoc3IpO2Nhc2UgMzAwOnJldHVybiBBaShzcik7Y2FzZSAzMDc6Y2FzZSAzMDE6cmV0dXJuIG5hKHNyKTtjYXNlIDMwMjpjYXNlIDMwMzpyZXR1cm4gT2koc3IpO2Nhc2UgMzA0OnJldHVybiBqaShzcik7Y2FzZSAzMDU6cmV0dXJuIHlmKHNyKTtjYXNlIDMwNjpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiQnVuZGxlcyBzaG91bGQgYmUgcHJpbnRlZCB1c2luZyBwcmludEJ1bmRsZVwiKTtjYXNlIDMwODpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiSW5wdXRGaWxlcyBzaG91bGQgbm90IGJlIHByaW50ZWRcIik7Y2FzZSAzMDk6cmV0dXJuIHJ1KHNyKTtjYXNlIDMxMDpyZXR1cm4gVHAoc3IpO2Nhc2UgMzEyOnJldHVybiBHdChcIipcIik7Y2FzZSAzMTM6cmV0dXJuIEd0KFwiP1wiKTtjYXNlIDMxNDpyZXR1cm4gT28oc3IpO2Nhc2UgMzE1OnJldHVybiBubyhzcik7Y2FzZSAzMTY6cmV0dXJuICRvKHNyKTtjYXNlIDMxNzpyZXR1cm4gS28oc3IpO2Nhc2UgMTg2OmNhc2UgMzE4OnJldHVybiBkbihzcik7Y2FzZSAzMTk6cmV0dXJuO2Nhc2UgMzIwOnJldHVybiBmZChzcik7Y2FzZSAzMjI6cmV0dXJuIHhwKHNyKTtjYXNlIDMyMzpyZXR1cm4gTV8oc3IpO2Nhc2UgMzI3OmNhc2UgMzMyOmNhc2UgMzM3OnJldHVybiBwZChzcik7Y2FzZSAzMjg6Y2FzZSAzMjk6cmV0dXJuIF9kKHNyKTtjYXNlIDMzMDpjYXNlIDMzMTpyZXR1cm47Y2FzZSAzMzM6Y2FzZSAzMzQ6Y2FzZSAzMzU6Y2FzZSAzMzY6cmV0dXJuO2Nhc2UgMzM4OnJldHVybiBGXyhzcik7Y2FzZSAzNDA6Y2FzZSAzNDc6cmV0dXJuIEVwKHNyKTtjYXNlIDMzOTpjYXNlIDM0MTpjYXNlIDM0MjpjYXNlIDM0MzpyZXR1cm4gYnAoc3IpO2Nhc2UgMzQ0OnJldHVybiBqZihzcik7Y2FzZSAzNDU6cmV0dXJuIE9fKHNyKTtjYXNlIDM0NjpyZXR1cm4gU3Aoc3IpO2Nhc2UgMzQ5OmNhc2UgMzUzOmNhc2UgMzUyOnJldHVybn1pZihlLmlzRXhwcmVzc2lvbihzcikmJih2PTEsZCE9PWUubm9FbWl0U3Vic3RpdHV0aW9uKSl7dmFyIFNhPWQodixzcil8fHNyO1NhIT09c3ImJihzcj1TYSxEaSYmKHNyPURpKHNyKSkpfX1pZih2PT09MSlzd2l0Y2goc3Iua2luZCl7Y2FzZSA4OmNhc2UgOTpyZXR1cm4gQnQoc3IpO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDE0OnJldHVybiB3dChzciwhMSk7Y2FzZSA3OTpyZXR1cm4gYmEoc3IpO2Nhc2UgODA6cmV0dXJuICRhKHNyKTtjYXNlIDIwNDpyZXR1cm4gR28oc3IpO2Nhc2UgMjA1OnJldHVybiB5cyhzcik7Y2FzZSAyMDY6cmV0dXJuIFBjKHNyKTtjYXNlIDIwNzpyZXR1cm4gS2Moc3IpO2Nhc2UgMjA4OnJldHVybiBYcyhzcik7Y2FzZSAyMDk6cmV0dXJuIHBjKHNyKTtjYXNlIDIxMDpyZXR1cm4gaHMoc3IpO2Nhc2UgMjExOnJldHVybiB0Yyhzcik7Y2FzZSAyMTI6cmV0dXJuIHBzKHNyKTtjYXNlIDIxMzpyZXR1cm4gUXMoc3IpO2Nhc2UgMjE0OnJldHVybiBqcyhzcik7Y2FzZSAyMTU6cmV0dXJuIEppKHNyKTtjYXNlIDIxNjpyZXR1cm4gY2Uoc3IpO2Nhc2UgMjE3OnJldHVybiBScihzcik7Y2FzZSAyMTg6cmV0dXJuIHlpKHNyKTtjYXNlIDIxOTpyZXR1cm4gcWkoc3IpO2Nhc2UgMjIwOnJldHVybiBIcihzcik7Y2FzZSAyMjE6cmV0dXJuIFp0KHNyKTtjYXNlIDIyMjpyZXR1cm4gUHQoc3IpO2Nhc2UgMjIzOnJldHVybiBnYShzcik7Y2FzZSAyMjQ6cmV0dXJuIHVhKHNyKTtjYXNlIDIyNTpyZXR1cm4gWG4oc3IpO2Nhc2UgMjI2OnJldHVybiBqcihzcik7Y2FzZSAyMjc6cmV0dXJuO2Nhc2UgMjI5OnJldHVybiB4cyhzcik7Y2FzZSAyMzA6cmV0dXJuIEZvKHNyKTtjYXNlIDIyODpyZXR1cm4gZm8oc3IpO2Nhc2UgMjMxOnJldHVybiBrbyhzcik7Y2FzZSAyMzI6cmV0dXJuIGUuRGVidWcuZmFpbChcIlN5bnRoZXRpY0V4cHJlc3Npb24gc2hvdWxkIG5ldmVyIGJlIHByaW50ZWQuXCIpO2Nhc2UgMjc4OnJldHVybiBZbChzcik7Y2FzZSAyNzk6cmV0dXJuIEJmKHNyKTtjYXNlIDI4MjpyZXR1cm4gQ2woc3IpO2Nhc2UgMzQ4OnJldHVybiBlLkRlYnVnLmZhaWwoXCJTeW50YXhMaXN0IHNob3VsZCBub3QgYmUgcHJpbnRlZFwiKTtjYXNlIDM0OTpyZXR1cm47Y2FzZSAzNTA6cmV0dXJuIGdkKHNyKTtjYXNlIDM1MTpyZXR1cm4gaGYoc3IpO2Nhc2UgMzUyOmNhc2UgMzUzOnJldHVybjtjYXNlIDM1NDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiU3ludGhldGljUmVmZXJlbmNlRXhwcmVzc2lvbiBzaG91bGQgbm90IGJlIHByaW50ZWRcIil9aWYoZS5pc0tleXdvcmQoc3Iua2luZCkpcmV0dXJuIFBsKHNyLHZuKTtpZihlLmlzVG9rZW5LaW5kKHNyLmtpbmQpKXJldHVybiBQbChzcixHdCk7ZS5EZWJ1Zy5mYWlsKFwiVW5oYW5kbGVkIFN5bnRheEtpbmQ6IFwiLmNvbmNhdChlLkRlYnVnLmZvcm1hdFN5bnRheEtpbmQoc3Iua2luZCksXCIuXCIpKX1mdW5jdGlvbiBSdCh2KXtncih2Lm5hbWUpLFV0KCksdm4oXCJpblwiKSxVdCgpLGdyKHYuY29uc3RyYWludCl9ZnVuY3Rpb24gSWkodixzcil7dmFyIGZpPU10KDEsdixzcik7ZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQoc2kpLHNyPXNpLHNpPXZvaWQgMCxmaSh2LHNyKX1mdW5jdGlvbiBLaSh2KXt2YXIgc3I7aWYoIShCZT09PWUuTW9kdWxlS2luZC5Ob25lfHxrLm5vRW1pdEhlbHBlcnMpKXtmb3IodmFyIGZpPW5ldyBlLk1hcCx6aT0wLFNhPXYuc291cmNlRmlsZXM7emk8U2EubGVuZ3RoO3ppKyspe3ZhciBkYT1TYVt6aV0sSGE9ZS5nZXRFeHRlcm5hbEhlbHBlcnNNb2R1bGVOYW1lKGRhKSE9PXZvaWQgMCx0YT11aShkYSk7aWYoISF0YSlmb3IodmFyIG5uPTAsV289dGE7bm48V28ubGVuZ3RoO25uKyspe3ZhciBMbz1Xb1tubl07IUxvLnNjb3BlZCYmIUhhJiYhZmkuZ2V0KExvLm5hbWUpJiYoZmkuc2V0KExvLm5hbWUsITApLChzcnx8KHNyPVtdKSkucHVzaChMby5uYW1lKSl9fXJldHVybiBzcn19ZnVuY3Rpb24gRmkodil7dmFyIHNyPSExLGZpPXYua2luZD09PTMwNj92OnZvaWQgMDtpZighKGZpJiZCZT09PWUuTW9kdWxlS2luZC5Ob25lKSl7Zm9yKHZhciB6aT1maT9maS5wcmVwZW5kcy5sZW5ndGg6MCxTYT1maT9maS5zb3VyY2VGaWxlcy5sZW5ndGgremk6MSxkYT0wO2RhPFNhO2RhKyspe3ZhciBIYT1maT9kYTx6aT9maS5wcmVwZW5kc1tkYV06Zmkuc291cmNlRmlsZXNbZGEtemldOnYsdGE9ZS5pc1NvdXJjZUZpbGUoSGEpP0hhOmUuaXNVbnBhcnNlZFNvdXJjZShIYSk/dm9pZCAwOlJlLG5uPWsubm9FbWl0SGVscGVyc3x8ISF0YSYmZS5oYXNSZWNvcmRlZEV4dGVybmFsSGVscGVycyh0YSksV289KGUuaXNTb3VyY2VGaWxlKEhhKXx8ZS5pc1VucGFyc2VkU291cmNlKEhhKSkmJiFDcixMbz1lLmlzVW5wYXJzZWRTb3VyY2UoSGEpP0hhLmhlbHBlcnM6dWkoSGEpO2lmKExvKWZvcih2YXIgb2M9MCx1dT1MbztvYzx1dS5sZW5ndGg7b2MrKyl7dmFyIGlzPXV1W29jXTtpZihpcy5zY29wZWQpe2lmKGZpKWNvbnRpbnVlfWVsc2V7aWYobm4pY29udGludWU7aWYoV28pe2lmKGdlLmdldChpcy5uYW1lKSljb250aW51ZTtnZS5zZXQoaXMubmFtZSwhMCl9fXZhciBhdT1TcigpO3R5cGVvZiBpcy50ZXh0PT1cInN0cmluZ1wiP3VsKGlzLnRleHQpOnVsKGlzLnRleHQoVGYpKSxZZSYmWWUuc2VjdGlvbnMucHVzaCh7cG9zOmF1LGVuZDpBZS5nZXRUZXh0UG9zKCksa2luZDpcImVtaXRIZWxwZXJzXCIsZGF0YTppcy5uYW1lfSksc3I9ITB9fXJldHVybiBzcn19ZnVuY3Rpb24gdWkodil7dmFyIHNyPWUuZ2V0RW1pdEhlbHBlcnModik7cmV0dXJuIHNyJiZlLnN0YWJsZVNvcnQoc3IsZS5jb21wYXJlRW1pdEhlbHBlcnMpfWZ1bmN0aW9uIEJ0KHYpe3d0KHYsITEpfWZ1bmN0aW9uIHd0KHYsc3Ipe3ZhciBmaT1QdSh2LGsubmV2ZXJBc2NpaUVzY2FwZSxzcik7KGsuc291cmNlTWFwfHxrLmlubGluZVNvdXJjZU1hcCkmJih2LmtpbmQ9PT0xMHx8ZS5pc1RlbXBsYXRlTGl0ZXJhbEtpbmQodi5raW5kKSk/ZF8oZmkpOkdjKGZpKX1mdW5jdGlvbiBuYSh2KXtmb3IodmFyIHNyPTAsZmk9di50ZXh0cztzcjxmaS5sZW5ndGg7c3IrKyl7dmFyIHppPWZpW3NyXTticygpLGdyKHppKX19ZnVuY3Rpb24gQWkodil7QWUucmF3V3JpdGUodi5wYXJlbnQudGV4dC5zdWJzdHJpbmcodi5wb3Msdi5lbmQpKX1mdW5jdGlvbiBPaSh2KXt2YXIgc3I9U3IoKTtBaSh2KSxZZSYmenIoc3IsQWUuZ2V0VGV4dFBvcygpLHYua2luZD09PTMwMj9cInRleHRcIjpcImludGVybmFsXCIpfWZ1bmN0aW9uIGppKHYpe3ZhciBzcj1TcigpO2lmKEFpKHYpLFllKXt2YXIgZmk9ZS5jbG9uZSh2LnNlY3Rpb24pO2ZpLnBvcz1zcixmaS5lbmQ9QWUuZ2V0VGV4dFBvcygpLFllLnNlY3Rpb25zLnB1c2goZmkpfX1mdW5jdGlvbiBWaSh2LHNyLGZpKXtzd2l0Y2goZmkua2luZCl7Y2FzZSAxOmF0KHYsc3IsZmkpO2JyZWFrO2Nhc2UgMDpBdCh2LHNyLGZpKTticmVha319ZnVuY3Rpb24gYXQodixzcixmaSl7YmYoXCIke1wiLmNvbmNhdChmaS5vcmRlcixcIjpcIikpLER0KHYsc3IsITEpLGJmKFwifVwiKX1mdW5jdGlvbiBBdCh2LHNyLGZpKXtlLkRlYnVnLmFzc2VydChzci5raW5kPT09MjM2LFwiQSB0YWIgc3RvcCBjYW5ub3QgYmUgYXR0YWNoZWQgdG8gYSBub2RlIG9mIGtpbmQgXCIuY29uY2F0KGUuRGVidWcuZm9ybWF0U3ludGF4S2luZChzci5raW5kKSxcIi5cIikpLGUuRGVidWcuYXNzZXJ0KHYhPT01LFwiQSB0YWIgc3RvcCBjYW5ub3QgYmUgYXR0YWNoZWQgdG8gYW4gZW1iZWRkZWQgc3RhdGVtZW50LlwiKSxiZihcIiRcIi5jb25jYXQoZmkub3JkZXIpKX1mdW5jdGlvbiBiYSh2KXt2YXIgc3I9di5zeW1ib2w/dnU6aXI7c3IoZGModiwhMSksdi5zeW1ib2wpLFpuKHYsdi50eXBlQXJndW1lbnRzLDUzNzc2KX1mdW5jdGlvbiAkYSh2KXt2YXIgc3I9di5zeW1ib2w/dnU6aXI7c3IoZGModiwhMSksdi5zeW1ib2wpfWZ1bmN0aW9uIFFhKHYpe2FpKHYubGVmdCksR3QoXCIuXCIpLGdyKHYucmlnaHQpfWZ1bmN0aW9uIGFpKHYpe3Yua2luZD09PTc5P1RyKHYpOmdyKHYpfWZ1bmN0aW9uIERuKHYpe0d0KFwiW1wiKSxUcih2LmV4cHJlc3Npb24sR2kucGFyZW50aGVzaXplRXhwcmVzc2lvbk9mQ29tcHV0ZWRQcm9wZXJ0eU5hbWUpLEd0KFwiXVwiKX1mdW5jdGlvbiBrYSh2KXtrcyh2LHYubW9kaWZpZXJzKSxncih2Lm5hbWUpLHYuY29uc3RyYWludCYmKFV0KCksdm4oXCJleHRlbmRzXCIpLFV0KCksZ3Iodi5jb25zdHJhaW50KSksdi5kZWZhdWx0JiYoVXQoKSxObChcIj1cIiksVXQoKSxncih2LmRlZmF1bHQpKX1mdW5jdGlvbiBCYSh2KXt3Yyh2LHYuZGVjb3JhdG9ycyksa3Modix2Lm1vZGlmaWVycyksZ3Iodi5kb3REb3REb3RUb2tlbiksbWQodi5uYW1lLGNsKSxncih2LnF1ZXN0aW9uVG9rZW4pLHYucGFyZW50JiZ2LnBhcmVudC5raW5kPT09MzE3JiYhdi5uYW1lP2dyKHYudHlwZSk6V3Uodi50eXBlKSxabCh2LmluaXRpYWxpemVyLHYudHlwZT92LnR5cGUuZW5kOnYucXVlc3Rpb25Ub2tlbj92LnF1ZXN0aW9uVG9rZW4uZW5kOnYubmFtZT92Lm5hbWUuZW5kOnYubW9kaWZpZXJzP3YubW9kaWZpZXJzLmVuZDp2LmRlY29yYXRvcnM/di5kZWNvcmF0b3JzLmVuZDp2LnBvcyx2LEdpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEpfWZ1bmN0aW9uIHBuKHYpe0d0KFwiQFwiKSxUcih2LmV4cHJlc3Npb24sR2kucGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2Vzcyl9ZnVuY3Rpb24gQ24odil7d2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLG1kKHYubmFtZSxEcyksZ3Iodi5xdWVzdGlvblRva2VuKSxXdSh2LnR5cGUpLEFzKCl9ZnVuY3Rpb24gQmkodil7d2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLGdyKHYubmFtZSksZ3Iodi5xdWVzdGlvblRva2VuKSxncih2LmV4Y2xhbWF0aW9uVG9rZW4pLFd1KHYudHlwZSksWmwodi5pbml0aWFsaXplcix2LnR5cGU/di50eXBlLmVuZDp2LnF1ZXN0aW9uVG9rZW4/di5xdWVzdGlvblRva2VuLmVuZDp2Lm5hbWUuZW5kLHYpLEFzKCl9ZnVuY3Rpb24ga24odil7d2wodiksd2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLGdyKHYubmFtZSksZ3Iodi5xdWVzdGlvblRva2VuKSxWdSh2LHYudHlwZVBhcmFtZXRlcnMpLGVmKHYsdi5wYXJhbWV0ZXJzKSxXdSh2LnR5cGUpLEFzKCksSXUodil9ZnVuY3Rpb24geG4odil7d2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLGdyKHYuYXN0ZXJpc2tUb2tlbiksZ3Iodi5uYW1lKSxncih2LnF1ZXN0aW9uVG9rZW4pLGpuKHYsTW8pfWZ1bmN0aW9uIEtuKHYpe3djKHYsdi5kZWNvcmF0b3JzKSxrcyh2LHYubW9kaWZpZXJzKSx2bihcInN0YXRpY1wiKSxncyh2LmJvZHkpfWZ1bmN0aW9uIFBuKHYpe2tzKHYsdi5tb2RpZmllcnMpLHZuKFwiY29uc3RydWN0b3JcIiksam4odixNbyl9ZnVuY3Rpb24gZW8odil7d2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLHZuKHYua2luZD09PTE3Mj9cImdldFwiOlwic2V0XCIpLFV0KCksZ3Iodi5uYW1lKSxqbih2LE1vKX1mdW5jdGlvbiBSbih2KXt3bCh2KSx3Yyh2LHYuZGVjb3JhdG9ycyksa3Modix2Lm1vZGlmaWVycyksVnUodix2LnR5cGVQYXJhbWV0ZXJzKSxlZih2LHYucGFyYW1ldGVycyksV3Uodi50eXBlKSxBcygpLEl1KHYpfWZ1bmN0aW9uIERhKHYpe3dsKHYpLHdjKHYsdi5kZWNvcmF0b3JzKSxrcyh2LHYubW9kaWZpZXJzKSx2bihcIm5ld1wiKSxVdCgpLFZ1KHYsdi50eXBlUGFyYW1ldGVycyksZWYodix2LnBhcmFtZXRlcnMpLFd1KHYudHlwZSksQXMoKSxJdSh2KX1mdW5jdGlvbiBibyh2KXt3Yyh2LHYuZGVjb3JhdG9ycyksa3Modix2Lm1vZGlmaWVycyksRGYodix2LnBhcmFtZXRlcnMpLFd1KHYudHlwZSksQXMoKX1mdW5jdGlvbiBSbyh2KXtncih2LnR5cGUpLGdyKHYubGl0ZXJhbCl9ZnVuY3Rpb24gRW4oKXtBcygpfWZ1bmN0aW9uIFduKHYpe3YuYXNzZXJ0c01vZGlmaWVyJiYoZ3Iodi5hc3NlcnRzTW9kaWZpZXIpLFV0KCkpLGdyKHYucGFyYW1ldGVyTmFtZSksdi50eXBlJiYoVXQoKSx2bihcImlzXCIpLFV0KCksZ3Iodi50eXBlKSl9ZnVuY3Rpb24gdG8odil7Z3Iodi50eXBlTmFtZSkscXUodix2LnR5cGVBcmd1bWVudHMpfWZ1bmN0aW9uIENvKHYpe3dsKHYpLFZ1KHYsdi50eXBlUGFyYW1ldGVycykscF8odix2LnBhcmFtZXRlcnMpLFV0KCksR3QoXCI9PlwiKSxVdCgpLGdyKHYudHlwZSksSXUodil9ZnVuY3Rpb24gS28odil7dm4oXCJmdW5jdGlvblwiKSxlZih2LHYucGFyYW1ldGVycyksR3QoXCI6XCIpLGdyKHYudHlwZSl9ZnVuY3Rpb24gT28odil7R3QoXCI/XCIpLGdyKHYudHlwZSl9ZnVuY3Rpb24gbm8odil7R3QoXCIhXCIpLGdyKHYudHlwZSl9ZnVuY3Rpb24gJG8odil7Z3Iodi50eXBlKSxHdChcIj1cIil9ZnVuY3Rpb24gUHIodil7d2wodiksa3Modix2Lm1vZGlmaWVycyksdm4oXCJuZXdcIiksVXQoKSxWdSh2LHYudHlwZVBhcmFtZXRlcnMpLGVmKHYsdi5wYXJhbWV0ZXJzKSxVdCgpLEd0KFwiPT5cIiksVXQoKSxncih2LnR5cGUpLEl1KHYpfWZ1bmN0aW9uIHhpKHYpe3ZuKFwidHlwZW9mXCIpLFV0KCksZ3Iodi5leHByTmFtZSkscXUodix2LnR5cGVBcmd1bWVudHMpfWZ1bmN0aW9uIFN0KHYpe0d0KFwie1wiKTt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3ModikmMT83Njg6MzI4OTc7Wm4odix2Lm1lbWJlcnMsc3J8NTI0Mjg4KSxHdChcIn1cIil9ZnVuY3Rpb24gcGEodil7Z3Iodi5lbGVtZW50VHlwZSxHaS5wYXJlbnRoZXNpemVOb25BcnJheVR5cGVPZlBvc3RmaXhUeXBlKSxHdChcIltcIiksR3QoXCJdXCIpfWZ1bmN0aW9uIGRuKHYpe0d0KFwiLi4uXCIpLGdyKHYudHlwZSl9ZnVuY3Rpb24gSm4odil7WWEoMjIsdi5wb3MsR3Qsdik7dmFyIHNyPWUuZ2V0RW1pdEZsYWdzKHYpJjE/NTI4OjY1Nztabih2LHYuZWxlbWVudHMsc3J8NTI0Mjg4LEdpLnBhcmVudGhlc2l6ZUVsZW1lbnRUeXBlT2ZUdXBsZVR5cGUpLFlhKDIzLHYuZWxlbWVudHMuZW5kLEd0LHYpfWZ1bmN0aW9uIFFlKHYpe2dyKHYuZG90RG90RG90VG9rZW4pLGdyKHYubmFtZSksZ3Iodi5xdWVzdGlvblRva2VuKSxZYSg1OCx2Lm5hbWUuZW5kLEd0LHYpLFV0KCksZ3Iodi50eXBlKX1mdW5jdGlvbiBHcih2KXtncih2LnR5cGUsR2kucGFyZW50aGVzaXplVHlwZU9mT3B0aW9uYWxUeXBlKSxHdChcIj9cIil9ZnVuY3Rpb24gUyh2KXtabih2LHYudHlwZXMsNTE2LEdpLnBhcmVudGhlc2l6ZUNvbnN0aXR1ZW50VHlwZU9mVW5pb25UeXBlKX1mdW5jdGlvbiBDZSh2KXtabih2LHYudHlwZXMsNTIwLEdpLnBhcmVudGhlc2l6ZUNvbnN0aXR1ZW50VHlwZU9mSW50ZXJzZWN0aW9uVHlwZSl9ZnVuY3Rpb24gcWUodil7Z3Iodi5jaGVja1R5cGUsR2kucGFyZW50aGVzaXplQ2hlY2tUeXBlT2ZDb25kaXRpb25hbFR5cGUpLFV0KCksdm4oXCJleHRlbmRzXCIpLFV0KCksZ3Iodi5leHRlbmRzVHlwZSxHaS5wYXJlbnRoZXNpemVFeHRlbmRzVHlwZU9mQ29uZGl0aW9uYWxUeXBlKSxVdCgpLEd0KFwiP1wiKSxVdCgpLGdyKHYudHJ1ZVR5cGUpLFV0KCksR3QoXCI6XCIpLFV0KCksZ3Iodi5mYWxzZVR5cGUpfWZ1bmN0aW9uIGJyKHYpe3ZuKFwiaW5mZXJcIiksVXQoKSxncih2LnR5cGVQYXJhbWV0ZXIpfWZ1bmN0aW9uIFpyKHYpe0d0KFwiKFwiKSxncih2LnR5cGUpLEd0KFwiKVwiKX1mdW5jdGlvbiBTaSgpe3ZuKFwidGhpc1wiKX1mdW5jdGlvbiBQaSh2KXtJbCh2Lm9wZXJhdG9yLHZuKSxVdCgpO3ZhciBzcj12Lm9wZXJhdG9yPT09MTQ1P0dpLnBhcmVudGhlc2l6ZU9wZXJhbmRPZlJlYWRvbmx5VHlwZU9wZXJhdG9yOkdpLnBhcmVudGhlc2l6ZU9wZXJhbmRPZlR5cGVPcGVyYXRvcjtncih2LnR5cGUsc3IpfWZ1bmN0aW9uIFFpKHYpe2dyKHYub2JqZWN0VHlwZSxHaS5wYXJlbnRoZXNpemVOb25BcnJheVR5cGVPZlBvc3RmaXhUeXBlKSxHdChcIltcIiksZ3Iodi5pbmRleFR5cGUpLEd0KFwiXVwiKX1mdW5jdGlvbiBDdCh2KXt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3Modik7R3QoXCJ7XCIpLHNyJjE/VXQoKTooYnMoKSxEYygpKSx2LnJlYWRvbmx5VG9rZW4mJihncih2LnJlYWRvbmx5VG9rZW4pLHYucmVhZG9ubHlUb2tlbi5raW5kIT09MTQ1JiZ2bihcInJlYWRvbmx5XCIpLFV0KCkpLEd0KFwiW1wiKSxXaSgzLHYudHlwZVBhcmFtZXRlciksdi5uYW1lVHlwZSYmKFV0KCksdm4oXCJhc1wiKSxVdCgpLGdyKHYubmFtZVR5cGUpKSxHdChcIl1cIiksdi5xdWVzdGlvblRva2VuJiYoZ3Iodi5xdWVzdGlvblRva2VuKSx2LnF1ZXN0aW9uVG9rZW4ua2luZCE9PTU3JiZHdChcIj9cIikpLEd0KFwiOlwiKSxVdCgpLGdyKHYudHlwZSksQXMoKSxzciYxP1V0KCk6KGJzKCksQ2MoKSksWm4odix2Lm1lbWJlcnMsMiksR3QoXCJ9XCIpfWZ1bmN0aW9uIHNhKHYpe1RyKHYubGl0ZXJhbCl9ZnVuY3Rpb24gZW4odil7Z3Iodi5oZWFkKSxabih2LHYudGVtcGxhdGVTcGFucywyNjIxNDQpfWZ1bmN0aW9uIFdhKHYpe2lmKHYuaXNUeXBlT2YmJih2bihcInR5cGVvZlwiKSxVdCgpKSx2bihcImltcG9ydFwiKSxHdChcIihcIiksZ3Iodi5hcmd1bWVudCksdi5hc3NlcnRpb25zKXtHdChcIixcIiksVXQoKSxHdChcIntcIiksVXQoKSx2bihcImFzc2VydFwiKSxHdChcIjpcIiksVXQoKTt2YXIgc3I9di5hc3NlcnRpb25zLmFzc2VydENsYXVzZS5lbGVtZW50cztabih2LmFzc2VydGlvbnMuYXNzZXJ0Q2xhdXNlLHNyLDUyNjIyNiksVXQoKSxHdChcIn1cIil9R3QoXCIpXCIpLHYucXVhbGlmaWVyJiYoR3QoXCIuXCIpLGdyKHYucXVhbGlmaWVyKSkscXUodix2LnR5cGVBcmd1bWVudHMpfWZ1bmN0aW9uIHFuKHYpe0d0KFwie1wiKSxabih2LHYuZWxlbWVudHMsNTI1MTM2KSxHdChcIn1cIil9ZnVuY3Rpb24gbW8odil7R3QoXCJbXCIpLFpuKHYsdi5lbGVtZW50cyw1MjQ4ODApLEd0KFwiXVwiKX1mdW5jdGlvbiBTbyh2KXtncih2LmRvdERvdERvdFRva2VuKSx2LnByb3BlcnR5TmFtZSYmKGdyKHYucHJvcGVydHlOYW1lKSxHdChcIjpcIiksVXQoKSksZ3Iodi5uYW1lKSxabCh2LmluaXRpYWxpemVyLHYubmFtZS5lbmQsdixHaS5wYXJlbnRoZXNpemVFeHByZXNzaW9uRm9yRGlzYWxsb3dlZENvbW1hKX1mdW5jdGlvbiBHbyh2KXt2YXIgc3I9di5lbGVtZW50cyxmaT12Lm11bHRpTGluZT82NTUzNjowO29zKHYsc3IsODkxNHxmaSxHaS5wYXJlbnRoZXNpemVFeHByZXNzaW9uRm9yRGlzYWxsb3dlZENvbW1hKX1mdW5jdGlvbiB5cyh2KXtlLmZvckVhY2godi5wcm9wZXJ0aWVzLFlzKTt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3ModikmNjU1MzY7c3ImJkRjKCk7dmFyIGZpPXYubXVsdGlMaW5lPzY1NTM2OjAsemk9UmUmJlJlLmxhbmd1YWdlVmVyc2lvbj49MSYmIWUuaXNKc29uU291cmNlRmlsZShSZSk/NjQ6MDtabih2LHYucHJvcGVydGllcyw1MjYyMjZ8eml8ZmkpLHNyJiZDYygpfWZ1bmN0aW9uIFBjKHYpe1RyKHYuZXhwcmVzc2lvbixHaS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKTt2YXIgc3I9di5xdWVzdGlvbkRvdFRva2VufHxlLnNldFRleHRSYW5nZVBvc0VuZChlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjQpLHYuZXhwcmVzc2lvbi5lbmQsdi5uYW1lLnBvcyksZmk9aXUodix2LmV4cHJlc3Npb24sc3IpLHppPWl1KHYsc3Isdi5uYW1lKTtOdShmaSwhMSk7dmFyIFNhPXNyLmtpbmQhPT0yOCYmVmModi5leHByZXNzaW9uKSYmIUFlLmhhc1RyYWlsaW5nQ29tbWVudCgpJiYhQWUuaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCk7U2EmJkd0KFwiLlwiKSx2LnF1ZXN0aW9uRG90VG9rZW4/Z3Ioc3IpOllhKHNyLmtpbmQsdi5leHByZXNzaW9uLmVuZCxHdCx2KSxOdSh6aSwhMSksZ3Iodi5uYW1lKSxVcyhmaSx6aSl9ZnVuY3Rpb24gVmModil7aWYodj1lLnNraXBQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbnModiksZS5pc051bWVyaWNMaXRlcmFsKHYpKXt2YXIgc3I9UHUodiwhMCwhMSk7cmV0dXJuIXYubnVtZXJpY0xpdGVyYWxGbGFncyYmIWUuc3RyaW5nQ29udGFpbnMoc3IsZS50b2tlblRvU3RyaW5nKDI0KSl9ZWxzZSBpZihlLmlzQWNjZXNzRXhwcmVzc2lvbih2KSl7dmFyIGZpPWUuZ2V0Q29uc3RhbnRWYWx1ZSh2KTtyZXR1cm4gdHlwZW9mIGZpPT1cIm51bWJlclwiJiZpc0Zpbml0ZShmaSkmJk1hdGguZmxvb3IoZmkpPT09Zml9fWZ1bmN0aW9uIEtjKHYpe1RyKHYuZXhwcmVzc2lvbixHaS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKSxncih2LnF1ZXN0aW9uRG90VG9rZW4pLFlhKDIyLHYuZXhwcmVzc2lvbi5lbmQsR3QsdiksVHIodi5hcmd1bWVudEV4cHJlc3Npb24pLFlhKDIzLHYuYXJndW1lbnRFeHByZXNzaW9uLmVuZCxHdCx2KX1mdW5jdGlvbiBYcyh2KXt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3ModikmNTM2ODcwOTEyO3NyJiYoR3QoXCIoXCIpLGRfKFwiMFwiKSxHdChcIixcIiksVXQoKSksVHIodi5leHByZXNzaW9uLEdpLnBhcmVudGhlc2l6ZUxlZnRTaWRlT2ZBY2Nlc3MpLHNyJiZHdChcIilcIiksZ3Iodi5xdWVzdGlvbkRvdFRva2VuKSxxdSh2LHYudHlwZUFyZ3VtZW50cyksb3Modix2LmFyZ3VtZW50cywyNTc2LEdpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEpfWZ1bmN0aW9uIHBjKHYpe1lhKDEwMyx2LnBvcyx2bix2KSxVdCgpLFRyKHYuZXhwcmVzc2lvbixHaS5wYXJlbnRoZXNpemVFeHByZXNzaW9uT2ZOZXcpLHF1KHYsdi50eXBlQXJndW1lbnRzKSxvcyh2LHYuYXJndW1lbnRzLDE4OTYwLEdpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEpfWZ1bmN0aW9uIGhzKHYpe3ZhciBzcj1lLmdldEVtaXRGbGFncyh2KSY1MzY4NzA5MTI7c3ImJihHdChcIihcIiksZF8oXCIwXCIpLEd0KFwiLFwiKSxVdCgpKSxUcih2LnRhZyxHaS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKSxzciYmR3QoXCIpXCIpLHF1KHYsdi50eXBlQXJndW1lbnRzKSxVdCgpLFRyKHYudGVtcGxhdGUpfWZ1bmN0aW9uIHRjKHYpe0d0KFwiPFwiKSxncih2LnR5cGUpLEd0KFwiPlwiKSxUcih2LmV4cHJlc3Npb24sR2kucGFyZW50aGVzaXplT3BlcmFuZE9mUHJlZml4VW5hcnkpfWZ1bmN0aW9uIHBzKHYpe3ZhciBzcj1ZYSgyMCx2LnBvcyxHdCx2KSxmaT1KXyh2LmV4cHJlc3Npb24sdik7VHIodi5leHByZXNzaW9uLHZvaWQgMCksal8odi5leHByZXNzaW9uLHYpLFVzKGZpKSxZYSgyMSx2LmV4cHJlc3Npb24/di5leHByZXNzaW9uLmVuZDpzcixHdCx2KX1mdW5jdGlvbiBRcyh2KXtLdSh2Lm5hbWUpLHJuKHYpfWZ1bmN0aW9uIGpzKHYpe3djKHYsdi5kZWNvcmF0b3JzKSxrcyh2LHYubW9kaWZpZXJzKSxqbih2LGRzKX1mdW5jdGlvbiBkcyh2KXtWdSh2LHYudHlwZVBhcmFtZXRlcnMpLHBfKHYsdi5wYXJhbWV0ZXJzKSxXdSh2LnR5cGUpLFV0KCksZ3Iodi5lcXVhbHNHcmVhdGVyVGhhblRva2VuKX1mdW5jdGlvbiBKaSh2KXtZYSg4OSx2LnBvcyx2bix2KSxVdCgpLFRyKHYuZXhwcmVzc2lvbixHaS5wYXJlbnRoZXNpemVPcGVyYW5kT2ZQcmVmaXhVbmFyeSl9ZnVuY3Rpb24gY2Uodil7WWEoMTEyLHYucG9zLHZuLHYpLFV0KCksVHIodi5leHByZXNzaW9uLEdpLnBhcmVudGhlc2l6ZU9wZXJhbmRPZlByZWZpeFVuYXJ5KX1mdW5jdGlvbiBScih2KXtZYSgxMTQsdi5wb3Msdm4sdiksVXQoKSxUcih2LmV4cHJlc3Npb24sR2kucGFyZW50aGVzaXplT3BlcmFuZE9mUHJlZml4VW5hcnkpfWZ1bmN0aW9uIHlpKHYpe1lhKDEzMix2LnBvcyx2bix2KSxVdCgpLFRyKHYuZXhwcmVzc2lvbixHaS5wYXJlbnRoZXNpemVPcGVyYW5kT2ZQcmVmaXhVbmFyeSl9ZnVuY3Rpb24gcWkodil7SWwodi5vcGVyYXRvcixObCksamUodikmJlV0KCksVHIodi5vcGVyYW5kLEdpLnBhcmVudGhlc2l6ZU9wZXJhbmRPZlByZWZpeFVuYXJ5KX1mdW5jdGlvbiBqZSh2KXt2YXIgc3I9di5vcGVyYW5kO3JldHVybiBzci5raW5kPT09MjE5JiYodi5vcGVyYXRvcj09PTM5JiYoc3Iub3BlcmF0b3I9PT0zOXx8c3Iub3BlcmF0b3I9PT00NSl8fHYub3BlcmF0b3I9PT00MCYmKHNyLm9wZXJhdG9yPT09NDB8fHNyLm9wZXJhdG9yPT09NDYpKX1mdW5jdGlvbiBIcih2KXtUcih2Lm9wZXJhbmQsR2kucGFyZW50aGVzaXplT3BlcmFuZE9mUG9zdGZpeFVuYXJ5KSxJbCh2Lm9wZXJhdG9yLE5sKX1mdW5jdGlvbiBwdCgpe3JldHVybiBlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb25UcmFtcG9saW5lKHYsc3IsZmksemksU2Esdm9pZCAwKTtmdW5jdGlvbiB2KEhhLHRhKXtpZih0YSl7dGEuc3RhY2tJbmRleCsrLHRhLnByZXNlcnZlU291cmNlTmV3bGluZXNTdGFja1t0YS5zdGFja0luZGV4XT1kZSx0YS5jb250YWluZXJQb3NTdGFja1t0YS5zdGFja0luZGV4XT13cix0YS5jb250YWluZXJFbmRTdGFja1t0YS5zdGFja0luZGV4XT1Vcix0YS5kZWNsYXJhdGlvbkxpc3RDb250YWluZXJFbmRTdGFja1t0YS5zdGFja0luZGV4XT1paTt2YXIgbm49dGEuc2hvdWxkRW1pdENvbW1lbnRzU3RhY2tbdGEuc3RhY2tJbmRleF09Y3QoSGEpLFdvPXRhLnNob3VsZEVtaXRTb3VyY2VNYXBzU3RhY2tbdGEuc3RhY2tJbmRleF09TGkoSGEpO0Q9PW51bGx8fEQoSGEpLG5uJiZ6XyhIYSksV28mJnZfKEhhKSxVaShIYSl9ZWxzZSB0YT17c3RhY2tJbmRleDowLHByZXNlcnZlU291cmNlTmV3bGluZXNTdGFjazpbdm9pZCAwXSxjb250YWluZXJQb3NTdGFjazpbLTFdLGNvbnRhaW5lckVuZFN0YWNrOlstMV0sZGVjbGFyYXRpb25MaXN0Q29udGFpbmVyRW5kU3RhY2s6Wy0xXSxzaG91bGRFbWl0Q29tbWVudHNTdGFjazpbITFdLHNob3VsZEVtaXRTb3VyY2VNYXBzU3RhY2s6WyExXX07cmV0dXJuIHRhfWZ1bmN0aW9uIHNyKEhhLHRhLG5uKXtyZXR1cm4gZGEoSGEsbm4sXCJsZWZ0XCIpfWZ1bmN0aW9uIGZpKEhhLHRhLG5uKXt2YXIgV289SGEua2luZCE9PTI3LExvPWl1KG5uLG5uLmxlZnQsSGEpLG9jPWl1KG5uLEhhLG5uLnJpZ2h0KTtOdShMbyxXbyksVmYoSGEucG9zKSxQbChIYSxIYS5raW5kPT09MTAxP3ZuOk5sKSxhZihIYS5lbmQsITApLE51KG9jLCEwKX1mdW5jdGlvbiB6aShIYSx0YSxubil7cmV0dXJuIGRhKEhhLG5uLFwicmlnaHRcIil9ZnVuY3Rpb24gU2EoSGEsdGEpe3ZhciBubj1pdShIYSxIYS5sZWZ0LEhhLm9wZXJhdG9yVG9rZW4pLFdvPWl1KEhhLEhhLm9wZXJhdG9yVG9rZW4sSGEucmlnaHQpO2lmKFVzKG5uLFdvKSx0YS5zdGFja0luZGV4PjApe3ZhciBMbz10YS5wcmVzZXJ2ZVNvdXJjZU5ld2xpbmVzU3RhY2tbdGEuc3RhY2tJbmRleF0sb2M9dGEuY29udGFpbmVyUG9zU3RhY2tbdGEuc3RhY2tJbmRleF0sdXU9dGEuY29udGFpbmVyRW5kU3RhY2tbdGEuc3RhY2tJbmRleF0saXM9dGEuZGVjbGFyYXRpb25MaXN0Q29udGFpbmVyRW5kU3RhY2tbdGEuc3RhY2tJbmRleF0sYXU9dGEuc2hvdWxkRW1pdENvbW1lbnRzU3RhY2tbdGEuc3RhY2tJbmRleF0sT3U9dGEuc2hvdWxkRW1pdFNvdXJjZU1hcHNTdGFja1t0YS5zdGFja0luZGV4XTtZaShMbyksT3UmJkJwKEhhKSxhdSYmT2MoSGEsb2MsdXUsaXMpLGZlPT1udWxsfHxmZShIYSksdGEuc3RhY2tJbmRleC0tfX1mdW5jdGlvbiBkYShIYSx0YSxubil7dmFyIFdvPW5uPT09XCJsZWZ0XCI/R2kuZ2V0UGFyZW50aGVzaXplTGVmdFNpZGVPZkJpbmFyeUZvck9wZXJhdG9yKHRhLm9wZXJhdG9yVG9rZW4ua2luZCk6R2kuZ2V0UGFyZW50aGVzaXplUmlnaHRTaWRlT2ZCaW5hcnlGb3JPcGVyYXRvcih0YS5vcGVyYXRvclRva2VuLmtpbmQpLExvPW50KDAsMSxIYSk7aWYoTG89PT1JaSYmKGUuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKHNpKSxIYT1XbyhlLmNhc3Qoc2ksZS5pc0V4cHJlc3Npb24pKSxMbz1NdCgxLDEsSGEpLHNpPXZvaWQgMCksKExvPT09eGZ8fExvPT09aGR8fExvPT09dXQpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihIYSkpcmV0dXJuIEhhO0RpPVdvLExvKDEsSGEpfX1mdW5jdGlvbiBQdCh2KXt2YXIgc3I9aXUodix2LmNvbmRpdGlvbix2LnF1ZXN0aW9uVG9rZW4pLGZpPWl1KHYsdi5xdWVzdGlvblRva2VuLHYud2hlblRydWUpLHppPWl1KHYsdi53aGVuVHJ1ZSx2LmNvbG9uVG9rZW4pLFNhPWl1KHYsdi5jb2xvblRva2VuLHYud2hlbkZhbHNlKTtUcih2LmNvbmRpdGlvbixHaS5wYXJlbnRoZXNpemVDb25kaXRpb25PZkNvbmRpdGlvbmFsRXhwcmVzc2lvbiksTnUoc3IsITApLGdyKHYucXVlc3Rpb25Ub2tlbiksTnUoZmksITApLFRyKHYud2hlblRydWUsR2kucGFyZW50aGVzaXplQnJhbmNoT2ZDb25kaXRpb25hbEV4cHJlc3Npb24pLFVzKHNyLGZpKSxOdSh6aSwhMCksZ3Iodi5jb2xvblRva2VuKSxOdShTYSwhMCksVHIodi53aGVuRmFsc2UsR2kucGFyZW50aGVzaXplQnJhbmNoT2ZDb25kaXRpb25hbEV4cHJlc3Npb24pLFVzKHppLFNhKX1mdW5jdGlvbiBnYSh2KXtncih2LmhlYWQpLFpuKHYsdi50ZW1wbGF0ZVNwYW5zLDI2MjE0NCl9ZnVuY3Rpb24gdWEodil7WWEoMTI1LHYucG9zLHZuLHYpLGdyKHYuYXN0ZXJpc2tUb2tlbiksX18odi5leHByZXNzaW9uJiZLcih2LmV4cHJlc3Npb24pLF9pKX1mdW5jdGlvbiBYbih2KXtZYSgyNSx2LnBvcyxHdCx2KSxUcih2LmV4cHJlc3Npb24sR2kucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYSl9ZnVuY3Rpb24ganIodil7S3Uodi5uYW1lKSxraSh2KX1mdW5jdGlvbiBmbyh2KXtUcih2LmV4cHJlc3Npb24sR2kucGFyZW50aGVzaXplTGVmdFNpZGVPZkFjY2VzcykscXUodix2LnR5cGVBcmd1bWVudHMpfWZ1bmN0aW9uIHhzKHYpe1RyKHYuZXhwcmVzc2lvbix2b2lkIDApLHYudHlwZSYmKFV0KCksdm4oXCJhc1wiKSxVdCgpLGdyKHYudHlwZSkpfWZ1bmN0aW9uIEZvKHYpe1RyKHYuZXhwcmVzc2lvbixHaS5wYXJlbnRoZXNpemVMZWZ0U2lkZU9mQWNjZXNzKSxObChcIiFcIil9ZnVuY3Rpb24ga28odil7YWModi5rZXl3b3JkVG9rZW4sdi5wb3MsR3QpLEd0KFwiLlwiKSxncih2Lm5hbWUpfWZ1bmN0aW9uIEFvKHYpe1RyKHYuZXhwcmVzc2lvbiksZ3Iodi5saXRlcmFsKX1mdW5jdGlvbiBNcyh2KXtCcyh2LCF2Lm11bHRpTGluZSYmdmQodikpfWZ1bmN0aW9uIEJzKHYsc3Ipe1lhKDE4LHYucG9zLEd0LHYpO3ZhciBmaT1zcnx8ZS5nZXRFbWl0RmxhZ3ModikmMT83Njg6MTI5O1puKHYsdi5zdGF0ZW1lbnRzLGZpKSxZYSgxOSx2LnN0YXRlbWVudHMuZW5kLEd0LHYsISEoZmkmMSkpfWZ1bmN0aW9uIHhjKHYpe2tzKHYsdi5tb2RpZmllcnMpLGdyKHYuZGVjbGFyYXRpb25MaXN0KSxBcygpfWZ1bmN0aW9uIHN1KHYpe3Y/R3QoXCI7XCIpOkFzKCl9ZnVuY3Rpb24gdGwodil7VHIodi5leHByZXNzaW9uLEdpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25PZkV4cHJlc3Npb25TdGF0ZW1lbnQpLCghUmV8fCFlLmlzSnNvblNvdXJjZUZpbGUoUmUpfHxlLm5vZGVJc1N5bnRoZXNpemVkKHYuZXhwcmVzc2lvbikpJiZBcygpfWZ1bmN0aW9uIFpjKHYpe3ZhciBzcj1ZYSg5OSx2LnBvcyx2bix2KTtVdCgpLFlhKDIwLHNyLEd0LHYpLFRyKHYuZXhwcmVzc2lvbiksWWEoMjEsdi5leHByZXNzaW9uLmVuZCxHdCx2KSxBbCh2LHYudGhlblN0YXRlbWVudCksdi5lbHNlU3RhdGVtZW50JiYoemYodix2LnRoZW5TdGF0ZW1lbnQsdi5lbHNlU3RhdGVtZW50KSxZYSg5MSx2LnRoZW5TdGF0ZW1lbnQuZW5kLHZuLHYpLHYuZWxzZVN0YXRlbWVudC5raW5kPT09MjM5PyhVdCgpLGdyKHYuZWxzZVN0YXRlbWVudCkpOkFsKHYsdi5lbHNlU3RhdGVtZW50KSl9ZnVuY3Rpb24gUmYodixzcil7dmFyIGZpPVlhKDExNSxzcix2bix2KTtVdCgpLFlhKDIwLGZpLEd0LHYpLFRyKHYuZXhwcmVzc2lvbiksWWEoMjEsdi5leHByZXNzaW9uLmVuZCxHdCx2KX1mdW5jdGlvbiBhbCh2KXtZYSg5MCx2LnBvcyx2bix2KSxBbCh2LHYuc3RhdGVtZW50KSxlLmlzQmxvY2sodi5zdGF0ZW1lbnQpJiYhZGU/VXQoKTp6Zih2LHYuc3RhdGVtZW50LHYuZXhwcmVzc2lvbiksUmYodix2LnN0YXRlbWVudC5lbmQpLEFzKCl9ZnVuY3Rpb24gSm8odil7UmYodix2LnBvcyksQWwodix2LnN0YXRlbWVudCl9ZnVuY3Rpb24gZXUodil7dmFyIHNyPVlhKDk3LHYucG9zLHZuLHYpO1V0KCk7dmFyIGZpPVlhKDIwLHNyLEd0LHYpO1V1KHYuaW5pdGlhbGl6ZXIpLGZpPVlhKDI2LHYuaW5pdGlhbGl6ZXI/di5pbml0aWFsaXplci5lbmQ6ZmksR3QsdiksX18odi5jb25kaXRpb24pLGZpPVlhKDI2LHYuY29uZGl0aW9uP3YuY29uZGl0aW9uLmVuZDpmaSxHdCx2KSxfXyh2LmluY3JlbWVudG9yKSxZYSgyMSx2LmluY3JlbWVudG9yP3YuaW5jcmVtZW50b3IuZW5kOmZpLEd0LHYpLEFsKHYsdi5zdGF0ZW1lbnQpfWZ1bmN0aW9uIFdzKHYpe3ZhciBzcj1ZYSg5Nyx2LnBvcyx2bix2KTtVdCgpLFlhKDIwLHNyLEd0LHYpLFV1KHYuaW5pdGlhbGl6ZXIpLFV0KCksWWEoMTAxLHYuaW5pdGlhbGl6ZXIuZW5kLHZuLHYpLFV0KCksVHIodi5leHByZXNzaW9uKSxZYSgyMSx2LmV4cHJlc3Npb24uZW5kLEd0LHYpLEFsKHYsdi5zdGF0ZW1lbnQpfWZ1bmN0aW9uIHB1KHYpe3ZhciBzcj1ZYSg5Nyx2LnBvcyx2bix2KTtVdCgpLHpkKHYuYXdhaXRNb2RpZmllciksWWEoMjAsc3IsR3QsdiksVXUodi5pbml0aWFsaXplciksVXQoKSxZYSgxNjAsdi5pbml0aWFsaXplci5lbmQsdm4sdiksVXQoKSxUcih2LmV4cHJlc3Npb24pLFlhKDIxLHYuZXhwcmVzc2lvbi5lbmQsR3QsdiksQWwodix2LnN0YXRlbWVudCl9ZnVuY3Rpb24gVXUodil7diE9PXZvaWQgMCYmKHYua2luZD09PTI1NT9ncih2KTpUcih2KSl9ZnVuY3Rpb24gUWwodil7WWEoODYsdi5wb3Msdm4sdiksa2wodi5sYWJlbCksQXMoKX1mdW5jdGlvbiB4bCh2KXtZYSg4MSx2LnBvcyx2bix2KSxrbCh2LmxhYmVsKSxBcygpfWZ1bmN0aW9uIFlhKHYsc3IsZmksemksU2Epe3ZhciBkYT1lLmdldFBhcnNlVHJlZU5vZGUoemkpLEhhPWRhJiZkYS5raW5kPT09emkua2luZCx0YT1zcjtpZihIYSYmUmUmJihzcj1lLnNraXBUcml2aWEoUmUudGV4dCxzcikpLEhhJiZ6aS5wb3MhPT10YSl7dmFyIG5uPVNhJiZSZSYmIWUucG9zaXRpb25zQXJlT25TYW1lTGluZSh0YSxzcixSZSk7bm4mJkRjKCksVmYodGEpLG5uJiZDYygpfWlmKHNyPUlsKHYsZmksc3IpLEhhJiZ6aS5lbmQhPT1zcil7dmFyIFdvPXppLmtpbmQ9PT0yODg7YWYoc3IsIVdvLFdvKX1yZXR1cm4gc3J9ZnVuY3Rpb24gZHUodil7cmV0dXJuIHYua2luZD09PTJ8fCEhdi5oYXNUcmFpbGluZ05ld0xpbmV9ZnVuY3Rpb24gdmModil7cmV0dXJuIFJlP2Uuc29tZShlLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKFJlLnRleHQsdi5wb3MpLGR1KXx8ZS5zb21lKGUuZ2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKHYpLGR1KT8hMDplLmlzUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb24odik/di5wb3MhPT12LmV4cHJlc3Npb24ucG9zJiZlLnNvbWUoZS5nZXRUcmFpbGluZ0NvbW1lbnRSYW5nZXMoUmUudGV4dCx2LmV4cHJlc3Npb24ucG9zKSxkdSk/ITA6dmModi5leHByZXNzaW9uKTohMTohMX1mdW5jdGlvbiBLcih2KXtpZighcXImJmUuaXNQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbih2KSYmdmModikpe3ZhciBzcj1lLmdldFBhcnNlVHJlZU5vZGUodik7aWYoc3ImJmUuaXNQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihzcikpe3ZhciBmaT1lLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24odi5leHByZXNzaW9uKTtyZXR1cm4gZS5zZXRPcmlnaW5hbE5vZGUoZmksdiksZS5zZXRUZXh0UmFuZ2UoZmksc3IpLGZpfXJldHVybiBlLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24odil9cmV0dXJuIHZ9ZnVuY3Rpb24gX2kodil7cmV0dXJuIEtyKEdpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEodikpfWZ1bmN0aW9uIEVpKHYpe1lhKDEwNSx2LnBvcyx2bix2KSxfXyh2LmV4cHJlc3Npb24mJktyKHYuZXhwcmVzc2lvbiksS3IpLEFzKCl9ZnVuY3Rpb24gdHQodil7dmFyIHNyPVlhKDExNix2LnBvcyx2bix2KTtVdCgpLFlhKDIwLHNyLEd0LHYpLFRyKHYuZXhwcmVzc2lvbiksWWEoMjEsdi5leHByZXNzaW9uLmVuZCxHdCx2KSxBbCh2LHYuc3RhdGVtZW50KX1mdW5jdGlvbiBrdCh2KXt2YXIgc3I9WWEoMTA3LHYucG9zLHZuLHYpO1V0KCksWWEoMjAsc3IsR3QsdiksVHIodi5leHByZXNzaW9uKSxZYSgyMSx2LmV4cHJlc3Npb24uZW5kLEd0LHYpLFV0KCksZ3Iodi5jYXNlQmxvY2spfWZ1bmN0aW9uIGJ0KHYpe2dyKHYubGFiZWwpLFlhKDU4LHYubGFiZWwuZW5kLEd0LHYpLFV0KCksZ3Iodi5zdGF0ZW1lbnQpfWZ1bmN0aW9uIGlhKHYpe1lhKDEwOSx2LnBvcyx2bix2KSxfXyhLcih2LmV4cHJlc3Npb24pLEtyKSxBcygpfWZ1bmN0aW9uIFh0KHYpe1lhKDExMSx2LnBvcyx2bix2KSxVdCgpLGdyKHYudHJ5QmxvY2spLHYuY2F0Y2hDbGF1c2UmJih6Zih2LHYudHJ5QmxvY2ssdi5jYXRjaENsYXVzZSksZ3Iodi5jYXRjaENsYXVzZSkpLHYuZmluYWxseUJsb2NrJiYoemYodix2LmNhdGNoQ2xhdXNlfHx2LnRyeUJsb2NrLHYuZmluYWxseUJsb2NrKSxZYSg5Niwodi5jYXRjaENsYXVzZXx8di50cnlCbG9jaykuZW5kLHZuLHYpLFV0KCksZ3Iodi5maW5hbGx5QmxvY2spKX1mdW5jdGlvbiBaYSh2KXthYyg4Nyx2LnBvcyx2biksQXMoKX1mdW5jdGlvbiBibih2KXt2YXIgc3IsZmksemksU2EsZGE7Z3Iodi5uYW1lKSxncih2LmV4Y2xhbWF0aW9uVG9rZW4pLFd1KHYudHlwZSksWmwodi5pbml0aWFsaXplciwoZGE9KGZpPShzcj12LnR5cGUpPT09bnVsbHx8c3I9PT12b2lkIDA/dm9pZCAwOnNyLmVuZCkhPT1udWxsJiZmaSE9PXZvaWQgMD9maTooU2E9KHppPXYubmFtZS5lbWl0Tm9kZSk9PT1udWxsfHx6aT09PXZvaWQgMD92b2lkIDA6emkudHlwZU5vZGUpPT09bnVsbHx8U2E9PT12b2lkIDA/dm9pZCAwOlNhLmVuZCkhPT1udWxsJiZkYSE9PXZvaWQgMD9kYTp2Lm5hbWUuZW5kLHYsR2kucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYSl9ZnVuY3Rpb24gX2Eodil7dm4oZS5pc0xldCh2KT9cImxldFwiOmUuaXNWYXJDb25zdCh2KT9cImNvbnN0XCI6XCJ2YXJcIiksVXQoKSxabih2LHYuZGVjbGFyYXRpb25zLDUyOCl9ZnVuY3Rpb24gcWEodil7cm4odil9ZnVuY3Rpb24gcm4odil7d2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLHZuKFwiZnVuY3Rpb25cIiksZ3Iodi5hc3Rlcmlza1Rva2VuKSxVdCgpLFZyKHYubmFtZSksam4odixNbyl9ZnVuY3Rpb24gam4odixzcil7dmFyIGZpPXYuYm9keTtpZihmaSlpZihlLmlzQmxvY2soZmkpKXt2YXIgemk9ZS5nZXRFbWl0RmxhZ3ModikmNjU1MzY7emkmJkRjKCksd2wodiksZS5mb3JFYWNoKHYucGFyYW1ldGVycyxFdCksRXQodi5ib2R5KSxzcih2KSxncyhmaSksSXUodiksemkmJkNjKCl9ZWxzZSBzcih2KSxVdCgpLFRyKGZpLEdpLnBhcmVudGhlc2l6ZUNvbmNpc2VCb2R5T2ZBcnJvd0Z1bmN0aW9uKTtlbHNlIHNyKHYpLEFzKCl9ZnVuY3Rpb24gTW8odil7VnUodix2LnR5cGVQYXJhbWV0ZXJzKSxlZih2LHYucGFyYW1ldGVycyksV3Uodi50eXBlKX1mdW5jdGlvbiBobyh2KXtpZihlLmdldEVtaXRGbGFncyh2KSYxKXJldHVybiEwO2lmKHYubXVsdGlMaW5lfHwhZS5ub2RlSXNTeW50aGVzaXplZCh2KSYmUmUmJiFlLnJhbmdlSXNPblNpbmdsZUxpbmUodixSZSl8fEFwKHYsdi5zdGF0ZW1lbnRzLDIpfHxTZih2LHYuc3RhdGVtZW50cywyKSlyZXR1cm4hMTtmb3IodmFyIHNyLGZpPTAsemk9di5zdGF0ZW1lbnRzO2ZpPHppLmxlbmd0aDtmaSsrKXt2YXIgU2E9emlbZmldO2lmKFdmKHNyLFNhLDIpPjApcmV0dXJuITE7c3I9U2F9cmV0dXJuITB9ZnVuY3Rpb24gZ3Modil7RD09bnVsbHx8RCh2KSxVdCgpLEd0KFwie1wiKSxEYygpO3ZhciBzcj1obyh2KT9TZTpocjtNcCh2LHYuc3RhdGVtZW50cyxzciksQ2MoKSxhYygxOSx2LnN0YXRlbWVudHMuZW5kLEd0LHYpLGZlPT1udWxsfHxmZSh2KX1mdW5jdGlvbiBTZSh2KXtocih2LCEwKX1mdW5jdGlvbiBocih2LHNyKXt2YXIgZmk9JGwodi5zdGF0ZW1lbnRzKSx6aT1BZS5nZXRUZXh0UG9zKCk7RmkodiksZmk9PT0wJiZ6aT09PUFlLmdldFRleHRQb3MoKSYmc3I/KENjKCksWm4odix2LnN0YXRlbWVudHMsNzY4KSxEYygpKTpabih2LHYuc3RhdGVtZW50cywxLHZvaWQgMCxmaSl9ZnVuY3Rpb24gT3Iodil7a2kodil9ZnVuY3Rpb24ga2kodil7ZS5mb3JFYWNoKHYubWVtYmVycyxZcyksd2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLHZuKFwiY2xhc3NcIiksdi5uYW1lJiYoVXQoKSxWcih2Lm5hbWUpKTt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3ModikmNjU1MzY7c3ImJkRjKCksVnUodix2LnR5cGVQYXJhbWV0ZXJzKSxabih2LHYuaGVyaXRhZ2VDbGF1c2VzLDApLFV0KCksR3QoXCJ7XCIpLFpuKHYsdi5tZW1iZXJzLDEyOSksR3QoXCJ9XCIpLHNyJiZDYygpfWZ1bmN0aW9uIGR0KHYpe3djKHYsdi5kZWNvcmF0b3JzKSxrcyh2LHYubW9kaWZpZXJzKSx2bihcImludGVyZmFjZVwiKSxVdCgpLGdyKHYubmFtZSksVnUodix2LnR5cGVQYXJhbWV0ZXJzKSxabih2LHYuaGVyaXRhZ2VDbGF1c2VzLDUxMiksVXQoKSxHdChcIntcIiksWm4odix2Lm1lbWJlcnMsMTI5KSxHdChcIn1cIil9ZnVuY3Rpb24gbGEodil7d2Modix2LmRlY29yYXRvcnMpLGtzKHYsdi5tb2RpZmllcnMpLHZuKFwidHlwZVwiKSxVdCgpLGdyKHYubmFtZSksVnUodix2LnR5cGVQYXJhbWV0ZXJzKSxVdCgpLEd0KFwiPVwiKSxVdCgpLGdyKHYudHlwZSksQXMoKX1mdW5jdGlvbiB3YSh2KXtrcyh2LHYubW9kaWZpZXJzKSx2bihcImVudW1cIiksVXQoKSxncih2Lm5hbWUpLFV0KCksR3QoXCJ7XCIpLFpuKHYsdi5tZW1iZXJzLDE0NSksR3QoXCJ9XCIpfWZ1bmN0aW9uIE9uKHYpe2tzKHYsdi5tb2RpZmllcnMpLH52LmZsYWdzJjEwMjQmJih2bih2LmZsYWdzJjE2P1wibmFtZXNwYWNlXCI6XCJtb2R1bGVcIiksVXQoKSksZ3Iodi5uYW1lKTt2YXIgc3I9di5ib2R5O2lmKCFzcilyZXR1cm4gQXMoKTtmb3IoO3NyJiZlLmlzTW9kdWxlRGVjbGFyYXRpb24oc3IpOylHdChcIi5cIiksZ3Ioc3IubmFtZSksc3I9c3IuYm9keTtVdCgpLGdyKHNyKX1mdW5jdGlvbiBObyh2KXt3bCh2KSxlLmZvckVhY2godi5zdGF0ZW1lbnRzLEV0KSxCcyh2LHZkKHYpKSxJdSh2KX1mdW5jdGlvbiBqbyh2KXtZYSgxOCx2LnBvcyxHdCx2KSxabih2LHYuY2xhdXNlcywxMjkpLFlhKDE5LHYuY2xhdXNlcy5lbmQsR3QsdiwhMCl9ZnVuY3Rpb24gcG8odil7a3Modix2Lm1vZGlmaWVycyksWWEoMTAwLHYubW9kaWZpZXJzP3YubW9kaWZpZXJzLmVuZDp2LnBvcyx2bix2KSxVdCgpLHYuaXNUeXBlT25seSYmKFlhKDE1Mix2LnBvcyx2bix2KSxVdCgpKSxncih2Lm5hbWUpLFV0KCksWWEoNjMsdi5uYW1lLmVuZCxHdCx2KSxVdCgpLEduKHYubW9kdWxlUmVmZXJlbmNlKSxBcygpfWZ1bmN0aW9uIEduKHYpe3Yua2luZD09PTc5P1RyKHYpOmdyKHYpfWZ1bmN0aW9uICRuKHYpe2tzKHYsdi5tb2RpZmllcnMpLFlhKDEwMCx2Lm1vZGlmaWVycz92Lm1vZGlmaWVycy5lbmQ6di5wb3Msdm4sdiksVXQoKSx2LmltcG9ydENsYXVzZSYmKGdyKHYuaW1wb3J0Q2xhdXNlKSxVdCgpLFlhKDE1Nix2LmltcG9ydENsYXVzZS5lbmQsdm4sdiksVXQoKSksVHIodi5tb2R1bGVTcGVjaWZpZXIpLHYuYXNzZXJ0Q2xhdXNlJiZrbCh2LmFzc2VydENsYXVzZSksQXMoKX1mdW5jdGlvbiBIbyh2KXt2LmlzVHlwZU9ubHkmJihZYSgxNTIsdi5wb3Msdm4sdiksVXQoKSksZ3Iodi5uYW1lKSx2Lm5hbWUmJnYubmFtZWRCaW5kaW5ncyYmKFlhKDI3LHYubmFtZS5lbmQsR3QsdiksVXQoKSksZ3Iodi5uYW1lZEJpbmRpbmdzKX1mdW5jdGlvbiBabyh2KXt2YXIgc3I9WWEoNDEsdi5wb3MsR3Qsdik7VXQoKSxZYSgxMjcsc3Isdm4sdiksVXQoKSxncih2Lm5hbWUpfWZ1bmN0aW9uIEVzKHYpe29vKHYpfWZ1bmN0aW9uIHljKHYpe0lfKHYpfWZ1bmN0aW9uIFhyKHYpe3ZhciBzcj1ZYSg5Myx2LnBvcyx2bix2KTtVdCgpLHYuaXNFeHBvcnRFcXVhbHM/WWEoNjMsc3IsTmwsdik6WWEoODgsc3Isdm4sdiksVXQoKSxUcih2LmV4cHJlc3Npb24sdi5pc0V4cG9ydEVxdWFscz9HaS5nZXRQYXJlbnRoZXNpemVSaWdodFNpZGVPZkJpbmFyeUZvck9wZXJhdG9yKDYzKTpHaS5wYXJlbnRoZXNpemVFeHByZXNzaW9uT2ZFeHBvcnREZWZhdWx0KSxBcygpfWZ1bmN0aW9uIExzKHYpe3ZhciBzcj1ZYSg5Myx2LnBvcyx2bix2KTtpZihVdCgpLHYuaXNUeXBlT25seSYmKHNyPVlhKDE1Mixzcix2bix2KSxVdCgpKSx2LmV4cG9ydENsYXVzZT9ncih2LmV4cG9ydENsYXVzZSk6c3I9WWEoNDEsc3IsR3Qsdiksdi5tb2R1bGVTcGVjaWZpZXIpe1V0KCk7dmFyIGZpPXYuZXhwb3J0Q2xhdXNlP3YuZXhwb3J0Q2xhdXNlLmVuZDpzcjtZYSgxNTYsZmksdm4sdiksVXQoKSxUcih2Lm1vZHVsZVNwZWNpZmllcil9di5hc3NlcnRDbGF1c2UmJmtsKHYuYXNzZXJ0Q2xhdXNlKSxBcygpfWZ1bmN0aW9uIEljKHYpe1lhKDEyOSx2LnBvcyx2bix2KSxVdCgpO3ZhciBzcj12LmVsZW1lbnRzO1puKHYsc3IsNTI2MjI2KX1mdW5jdGlvbiB6dSh2KXtncih2Lm5hbWUpLEd0KFwiOlwiKSxVdCgpO3ZhciBzcj12LnZhbHVlO2lmKChlLmdldEVtaXRGbGFncyhzcikmNTEyKT09PTApe3ZhciBmaT1lLmdldENvbW1lbnRSYW5nZShzcik7YWYoZmkucG9zKX1ncihzcil9ZnVuY3Rpb24gdmYodil7dmFyIHNyPVlhKDkzLHYucG9zLHZuLHYpO1V0KCksc3I9WWEoMTI3LHNyLHZuLHYpLFV0KCksc3I9WWEoMTQyLHNyLHZuLHYpLFV0KCksZ3Iodi5uYW1lKSxBcygpfWZ1bmN0aW9uIFBfKHYpe3ZhciBzcj1ZYSg0MSx2LnBvcyxHdCx2KTtVdCgpLFlhKDEyNyxzcix2bix2KSxVdCgpLGdyKHYubmFtZSl9ZnVuY3Rpb24gRWwodil7b28odil9ZnVuY3Rpb24gdnAodil7SV8odil9ZnVuY3Rpb24gb28odil7R3QoXCJ7XCIpLFpuKHYsdi5lbGVtZW50cyw1MjUxMzYpLEd0KFwifVwiKX1mdW5jdGlvbiBJXyh2KXt2LmlzVHlwZU9ubHkmJih2bihcInR5cGVcIiksVXQoKSksdi5wcm9wZXJ0eU5hbWUmJihncih2LnByb3BlcnR5TmFtZSksVXQoKSxZYSgxMjcsdi5wcm9wZXJ0eU5hbWUuZW5kLHZuLHYpLFV0KCkpLGdyKHYubmFtZSl9ZnVuY3Rpb24geXAodil7dm4oXCJyZXF1aXJlXCIpLEd0KFwiKFwiKSxUcih2LmV4cHJlc3Npb24pLEd0KFwiKVwiKX1mdW5jdGlvbiBZbCh2KXtncih2Lm9wZW5pbmdFbGVtZW50KSxabih2LHYuY2hpbGRyZW4sMjYyMTQ0KSxncih2LmNsb3NpbmdFbGVtZW50KX1mdW5jdGlvbiBCZih2KXtHdChcIjxcIiksbnModi50YWdOYW1lKSxxdSh2LHYudHlwZUFyZ3VtZW50cyksVXQoKSxncih2LmF0dHJpYnV0ZXMpLEd0KFwiLz5cIil9ZnVuY3Rpb24gQ2wodil7Z3Iodi5vcGVuaW5nRnJhZ21lbnQpLFpuKHYsdi5jaGlsZHJlbiwyNjIxNDQpLGdyKHYuY2xvc2luZ0ZyYWdtZW50KX1mdW5jdGlvbiBjXyh2KXtpZihHdChcIjxcIiksZS5pc0pzeE9wZW5pbmdFbGVtZW50KHYpKXt2YXIgc3I9Sl8odi50YWdOYW1lLHYpO25zKHYudGFnTmFtZSkscXUodix2LnR5cGVBcmd1bWVudHMpLHYuYXR0cmlidXRlcy5wcm9wZXJ0aWVzJiZ2LmF0dHJpYnV0ZXMucHJvcGVydGllcy5sZW5ndGg+MCYmVXQoKSxncih2LmF0dHJpYnV0ZXMpLGpfKHYuYXR0cmlidXRlcyx2KSxVcyhzcil9R3QoXCI+XCIpfWZ1bmN0aW9uIGhwKHYpe0FlLndyaXRlTGl0ZXJhbCh2LnRleHQpfWZ1bmN0aW9uIGd1KHYpe0d0KFwiPC9cIiksZS5pc0pzeENsb3NpbmdFbGVtZW50KHYpJiZucyh2LnRhZ05hbWUpLEd0KFwiPlwiKX1mdW5jdGlvbiBEcCh2KXtabih2LHYucHJvcGVydGllcywyNjI2NTYpfWZ1bmN0aW9uIHNkKHYpe2dyKHYubmFtZSksUl8oXCI9XCIsR3Qsdi5pbml0aWFsaXplcix2aSl9ZnVuY3Rpb24gQWEodil7R3QoXCJ7Li4uXCIpLFRyKHYuZXhwcmVzc2lvbiksR3QoXCJ9XCIpfWZ1bmN0aW9uIHZhKHYpe3ZhciBzcj0hMTtyZXR1cm4gZS5mb3JFYWNoVHJhaWxpbmdDb21tZW50UmFuZ2UoKFJlPT1udWxsP3ZvaWQgMDpSZS50ZXh0KXx8XCJcIix2KzEsZnVuY3Rpb24oKXtyZXR1cm4gc3I9ITB9KSxzcn1mdW5jdGlvbiBDdSh2KXt2YXIgc3I9ITE7cmV0dXJuIGUuZm9yRWFjaExlYWRpbmdDb21tZW50UmFuZ2UoKFJlPT1udWxsP3ZvaWQgMDpSZS50ZXh0KXx8XCJcIix2KzEsZnVuY3Rpb24oKXtyZXR1cm4gc3I9ITB9KSxzcn1mdW5jdGlvbiBxcyh2KXtyZXR1cm4gdmEodil8fEN1KHYpfWZ1bmN0aW9uIGNkKHYpe3ZhciBzcjtpZih2LmV4cHJlc3Npb258fCFxciYmIWUubm9kZUlzU3ludGhlc2l6ZWQodikmJnFzKHYucG9zKSl7dmFyIGZpPVJlJiYhZS5ub2RlSXNTeW50aGVzaXplZCh2KSYmZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihSZSx2LnBvcykubGluZSE9PWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oUmUsdi5lbmQpLmxpbmU7ZmkmJkFlLmluY3JlYXNlSW5kZW50KCk7dmFyIHppPVlhKDE4LHYucG9zLEd0LHYpO2dyKHYuZG90RG90RG90VG9rZW4pLFRyKHYuZXhwcmVzc2lvbiksWWEoMTksKChzcj12LmV4cHJlc3Npb24pPT09bnVsbHx8c3I9PT12b2lkIDA/dm9pZCAwOnNyLmVuZCl8fHppLEd0LHYpLGZpJiZBZS5kZWNyZWFzZUluZGVudCgpfX1mdW5jdGlvbiBucyh2KXt2LmtpbmQ9PT03OT9Ucih2KTpncih2KX1mdW5jdGlvbiBubCh2KXtZYSg4Mix2LnBvcyx2bix2KSxVdCgpLFRyKHYuZXhwcmVzc2lvbixHaS5wYXJlbnRoZXNpemVFeHByZXNzaW9uRm9yRGlzYWxsb3dlZENvbW1hKSxlcyh2LHYuc3RhdGVtZW50cyx2LmV4cHJlc3Npb24uZW5kKX1mdW5jdGlvbiBoYyh2KXt2YXIgc3I9WWEoODgsdi5wb3Msdm4sdik7ZXModix2LnN0YXRlbWVudHMsc3IpfWZ1bmN0aW9uIGVzKHYsc3IsZmkpe3ZhciB6aT1zci5sZW5ndGg9PT0xJiYoIVJlfHxlLm5vZGVJc1N5bnRoZXNpemVkKHYpfHxlLm5vZGVJc1N5bnRoZXNpemVkKHNyWzBdKXx8ZS5yYW5nZVN0YXJ0UG9zaXRpb25zQXJlT25TYW1lTGluZSh2LHNyWzBdLFJlKSksU2E9MTYzOTY5O3ppPyhhYyg1OCxmaSxHdCx2KSxVdCgpLFNhJj0tMTMwKTpZYSg1OCxmaSxHdCx2KSxabih2LHNyLFNhKX1mdW5jdGlvbiB1Xyh2KXtVdCgpLElsKHYudG9rZW4sdm4pLFV0KCksWm4odix2LnR5cGVzLDUyOCl9ZnVuY3Rpb24gSmYodil7dmFyIHNyPVlhKDgzLHYucG9zLHZuLHYpO1V0KCksdi52YXJpYWJsZURlY2xhcmF0aW9uJiYoWWEoMjAsc3IsR3QsdiksZ3Iodi52YXJpYWJsZURlY2xhcmF0aW9uKSxZYSgyMSx2LnZhcmlhYmxlRGVjbGFyYXRpb24uZW5kLEd0LHYpLFV0KCkpLGdyKHYuYmxvY2spfWZ1bmN0aW9uIHdfKHYpe2dyKHYubmFtZSksR3QoXCI6XCIpLFV0KCk7dmFyIHNyPXYuaW5pdGlhbGl6ZXI7aWYoKGUuZ2V0RW1pdEZsYWdzKHNyKSY1MTIpPT09MCl7dmFyIGZpPWUuZ2V0Q29tbWVudFJhbmdlKHNyKTthZihmaS5wb3MpfVRyKHNyLEdpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEpfWZ1bmN0aW9uIHVkKHYpe2dyKHYubmFtZSksdi5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXImJihVdCgpLEd0KFwiPVwiKSxVdCgpLFRyKHYub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyLEdpLnBhcmVudGhlc2l6ZUV4cHJlc3Npb25Gb3JEaXNhbGxvd2VkQ29tbWEpKX1mdW5jdGlvbiBrdSh2KXt2LmV4cHJlc3Npb24mJihZYSgyNSx2LnBvcyxHdCx2KSxUcih2LmV4cHJlc3Npb24sR2kucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYSkpfWZ1bmN0aW9uIGxkKHYpe2dyKHYubmFtZSksWmwodi5pbml0aWFsaXplcix2Lm5hbWUuZW5kLHYsR2kucGFyZW50aGVzaXplRXhwcmVzc2lvbkZvckRpc2FsbG93ZWRDb21tYSl9ZnVuY3Rpb24gZmQodil7aWYoaXIoXCIvKipcIiksdi5jb21tZW50KXt2YXIgc3I9ZS5nZXRUZXh0T2ZKU0RvY0NvbW1lbnQodi5jb21tZW50KTtpZihzcilmb3IodmFyIGZpPXNyLnNwbGl0KC9cXHJcXG4/fFxcbi9nKSx6aT0wLFNhPWZpO3ppPFNhLmxlbmd0aDt6aSsrKXt2YXIgZGE9U2FbemldO2JzKCksVXQoKSxHdChcIipcIiksVXQoKSxpcihkYSl9fXYudGFncyYmKHYudGFncy5sZW5ndGg9PT0xJiZ2LnRhZ3NbMF0ua2luZD09PTM0MyYmIXYuY29tbWVudD8oVXQoKSxncih2LnRhZ3NbMF0pKTpabih2LHYudGFncywzMykpLFV0KCksaXIoXCIqL1wiKX1mdW5jdGlvbiBicCh2KXtvbCh2LnRhZ05hbWUpLHJ1KHYudHlwZUV4cHJlc3Npb24pLEF1KHYuY29tbWVudCl9ZnVuY3Rpb24gU3Aodil7b2wodi50YWdOYW1lKSxncih2Lm5hbWUpLEF1KHYuY29tbWVudCl9ZnVuY3Rpb24gVHAodil7VXQoKSxHdChcIntcIiksZ3Iodi5uYW1lKSxHdChcIn1cIil9ZnVuY3Rpb24gX2Qodil7b2wodi50YWdOYW1lKSxVdCgpLEd0KFwie1wiKSxncih2LmNsYXNzKSxHdChcIn1cIiksQXUodi5jb21tZW50KX1mdW5jdGlvbiBqZih2KXtvbCh2LnRhZ05hbWUpLHJ1KHYuY29uc3RyYWludCksVXQoKSxabih2LHYudHlwZVBhcmFtZXRlcnMsNTI4KSxBdSh2LmNvbW1lbnQpfWZ1bmN0aW9uIE9fKHYpe29sKHYudGFnTmFtZSksdi50eXBlRXhwcmVzc2lvbiYmKHYudHlwZUV4cHJlc3Npb24ua2luZD09PTMwOT9ydSh2LnR5cGVFeHByZXNzaW9uKTooVXQoKSxHdChcIntcIiksaXIoXCJPYmplY3RcIiksdi50eXBlRXhwcmVzc2lvbi5pc0FycmF5VHlwZSYmKEd0KFwiW1wiKSxHdChcIl1cIikpLEd0KFwifVwiKSkpLHYuZnVsbE5hbWUmJihVdCgpLGdyKHYuZnVsbE5hbWUpKSxBdSh2LmNvbW1lbnQpLHYudHlwZUV4cHJlc3Npb24mJnYudHlwZUV4cHJlc3Npb24ua2luZD09PTMyMiYmeHAodi50eXBlRXhwcmVzc2lvbil9ZnVuY3Rpb24gRl8odil7b2wodi50YWdOYW1lKSx2Lm5hbWUmJihVdCgpLGdyKHYubmFtZSkpLEF1KHYuY29tbWVudCksTV8odi50eXBlRXhwcmVzc2lvbil9ZnVuY3Rpb24gcGQodil7b2wodi50YWdOYW1lKSxBdSh2LmNvbW1lbnQpfWZ1bmN0aW9uIHhwKHYpe1puKHYsZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheSh2LmpzRG9jUHJvcGVydHlUYWdzKSwzMyl9ZnVuY3Rpb24gTV8odil7di50eXBlUGFyYW1ldGVycyYmWm4odixlLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KHYudHlwZVBhcmFtZXRlcnMpLDMzKSx2LnBhcmFtZXRlcnMmJlpuKHYsZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheSh2LnBhcmFtZXRlcnMpLDMzKSx2LnR5cGUmJihicygpLFV0KCksR3QoXCIqXCIpLFV0KCksZ3Iodi50eXBlKSl9ZnVuY3Rpb24gRXAodil7b2wodi50YWdOYW1lKSxydSh2LnR5cGVFeHByZXNzaW9uKSxVdCgpLHYuaXNCcmFja2V0ZWQmJkd0KFwiW1wiKSxncih2Lm5hbWUpLHYuaXNCcmFja2V0ZWQmJkd0KFwiXVwiKSxBdSh2LmNvbW1lbnQpfWZ1bmN0aW9uIG9sKHYpe0d0KFwiQFwiKSxncih2KX1mdW5jdGlvbiBBdSh2KXt2YXIgc3I9ZS5nZXRUZXh0T2ZKU0RvY0NvbW1lbnQodik7c3ImJihVdCgpLGlyKHNyKSl9ZnVuY3Rpb24gcnUodil7diYmKFV0KCksR3QoXCJ7XCIpLGdyKHYudHlwZSksR3QoXCJ9XCIpKX1mdW5jdGlvbiB5Zih2KXticygpO3ZhciBzcj12LnN0YXRlbWVudHMsZmk9c3IubGVuZ3RoPT09MHx8IWUuaXNQcm9sb2d1ZURpcmVjdGl2ZShzclswXSl8fGUubm9kZUlzU3ludGhlc2l6ZWQoc3JbMF0pO2lmKGZpKXtNcCh2LHNyLG11KTtyZXR1cm59bXUodil9ZnVuY3Rpb24gQ3Aodil7a3AoISF2Lmhhc05vRGVmYXVsdExpYix2LnN5bnRoZXRpY0ZpbGVSZWZlcmVuY2VzfHxbXSx2LnN5bnRoZXRpY1R5cGVSZWZlcmVuY2VzfHxbXSx2LnN5bnRoZXRpY0xpYlJlZmVyZW5jZXN8fFtdKTtmb3IodmFyIHNyPTAsZmk9di5wcmVwZW5kcztzcjxmaS5sZW5ndGg7c3IrKyl7dmFyIHppPWZpW3NyXTtpZihlLmlzVW5wYXJzZWRTb3VyY2UoemkpJiZ6aS5zeW50aGV0aWNSZWZlcmVuY2VzKWZvcih2YXIgU2E9MCxkYT16aS5zeW50aGV0aWNSZWZlcmVuY2VzO1NhPGRhLmxlbmd0aDtTYSsrKXt2YXIgSGE9ZGFbU2FdO2dyKEhhKSxicygpfX19ZnVuY3Rpb24gZGQodil7di5pc0RlY2xhcmF0aW9uRmlsZSYma3Aodi5oYXNOb0RlZmF1bHRMaWIsdi5yZWZlcmVuY2VkRmlsZXMsdi50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcyx2LmxpYlJlZmVyZW5jZURpcmVjdGl2ZXMpfWZ1bmN0aW9uIGtwKHYsc3IsZmksemkpe2lmKHYpe3ZhciBTYT1BZS5nZXRUZXh0UG9zKCk7cmYoJy8vLyA8cmVmZXJlbmNlIG5vLWRlZmF1bHQtbGliPVwidHJ1ZVwiLz4nKSxZZSYmWWUuc2VjdGlvbnMucHVzaCh7cG9zOlNhLGVuZDpBZS5nZXRUZXh0UG9zKCksa2luZDpcIm5vLWRlZmF1bHQtbGliXCJ9KSxicygpfWlmKFJlJiZSZS5tb2R1bGVOYW1lJiYocmYoJy8vLyA8YW1kLW1vZHVsZSBuYW1lPVwiJy5jb25jYXQoUmUubW9kdWxlTmFtZSwnXCIgLz4nKSksYnMoKSksUmUmJlJlLmFtZERlcGVuZGVuY2llcylmb3IodmFyIGRhPTAsSGE9UmUuYW1kRGVwZW5kZW5jaWVzO2RhPEhhLmxlbmd0aDtkYSsrKXt2YXIgdGE9SGFbZGFdO3RhLm5hbWU/cmYoJy8vLyA8YW1kLWRlcGVuZGVuY3kgbmFtZT1cIicuY29uY2F0KHRhLm5hbWUsJ1wiIHBhdGg9XCInKS5jb25jYXQodGEucGF0aCwnXCIgLz4nKSk6cmYoJy8vLyA8YW1kLWRlcGVuZGVuY3kgcGF0aD1cIicuY29uY2F0KHRhLnBhdGgsJ1wiIC8+JykpLGJzKCl9Zm9yKHZhciBubj0wLFdvPXNyO25uPFdvLmxlbmd0aDtubisrKXt2YXIgTG89V29bbm5dLFNhPUFlLmdldFRleHRQb3MoKTtyZignLy8vIDxyZWZlcmVuY2UgcGF0aD1cIicuY29uY2F0KExvLmZpbGVOYW1lLCdcIiAvPicpKSxZZSYmWWUuc2VjdGlvbnMucHVzaCh7cG9zOlNhLGVuZDpBZS5nZXRUZXh0UG9zKCksa2luZDpcInJlZmVyZW5jZVwiLGRhdGE6TG8uZmlsZU5hbWV9KSxicygpfWZvcih2YXIgb2M9MCx1dT1maTtvYzx1dS5sZW5ndGg7b2MrKyl7dmFyIExvPXV1W29jXSxTYT1BZS5nZXRUZXh0UG9zKCksaXM9TG8ucmVzb2x1dGlvbk1vZGUmJkxvLnJlc29sdXRpb25Nb2RlIT09KFJlPT1udWxsP3ZvaWQgMDpSZS5pbXBsaWVkTm9kZUZvcm1hdCk/J3Jlc29sdXRpb24tbW9kZT1cIicuY29uY2F0KExvLnJlc29sdXRpb25Nb2RlPT09ZS5Nb2R1bGVLaW5kLkVTTmV4dD9cImltcG9ydFwiOlwicmVxdWlyZVwiLCdcIicpOlwiXCI7cmYoJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiJy5jb25jYXQoTG8uZmlsZU5hbWUsJ1wiICcpLmNvbmNhdChpcyxcIi8+XCIpKSxZZSYmWWUuc2VjdGlvbnMucHVzaCh7cG9zOlNhLGVuZDpBZS5nZXRUZXh0UG9zKCksa2luZDpMby5yZXNvbHV0aW9uTW9kZT9Mby5yZXNvbHV0aW9uTW9kZT09PWUuTW9kdWxlS2luZC5FU05leHQ/XCJ0eXBlLWltcG9ydFwiOlwidHlwZS1yZXF1aXJlXCI6XCJ0eXBlXCIsZGF0YTpMby5maWxlTmFtZX0pLGJzKCl9Zm9yKHZhciBhdT0wLE91PXppO2F1PE91Lmxlbmd0aDthdSsrKXt2YXIgTG89T3VbYXVdLFNhPUFlLmdldFRleHRQb3MoKTtyZignLy8vIDxyZWZlcmVuY2UgbGliPVwiJy5jb25jYXQoTG8uZmlsZU5hbWUsJ1wiIC8+JykpLFllJiZZZS5zZWN0aW9ucy5wdXNoKHtwb3M6U2EsZW5kOkFlLmdldFRleHRQb3MoKSxraW5kOlwibGliXCIsZGF0YTpMby5maWxlTmFtZX0pLGJzKCl9fWZ1bmN0aW9uIG11KHYpe3ZhciBzcj12LnN0YXRlbWVudHM7d2wodiksZS5mb3JFYWNoKHYuc3RhdGVtZW50cyxFdCksRmkodik7dmFyIGZpPWUuZmluZEluZGV4KHNyLGZ1bmN0aW9uKHppKXtyZXR1cm4hZS5pc1Byb2xvZ3VlRGlyZWN0aXZlKHppKX0pO2RkKHYpLFpuKHYsc3IsMSx2b2lkIDAsZmk9PT0tMT9zci5sZW5ndGg6ZmkpLEl1KHYpfWZ1bmN0aW9uIGdkKHYpe3ZhciBzcj1lLmdldEVtaXRGbGFncyh2KTshKHNyJjUxMikmJnYucG9zIT09di5leHByZXNzaW9uLnBvcyYmYWYodi5leHByZXNzaW9uLnBvcyksVHIodi5leHByZXNzaW9uKSwhKHNyJjEwMjQpJiZ2LmVuZCE9PXYuZXhwcmVzc2lvbi5lbmQmJlZmKHYuZXhwcmVzc2lvbi5lbmQpfWZ1bmN0aW9uIGhmKHYpe29zKHYsdi5lbGVtZW50cyw1Mjgsdm9pZCAwKX1mdW5jdGlvbiAkbCh2LHNyLGZpLHppKXtmb3IodmFyIFNhPSEhc3IsZGE9MDtkYTx2Lmxlbmd0aDtkYSsrKXt2YXIgSGE9dltkYV07aWYoZS5pc1Byb2xvZ3VlRGlyZWN0aXZlKEhhKSl7dmFyIHRhPWZpPyFmaS5oYXMoSGEuZXhwcmVzc2lvbi50ZXh0KTohMDtpZih0YSl7U2EmJihTYT0hMSxQZShzcikpLGJzKCk7dmFyIG5uPUFlLmdldFRleHRQb3MoKTtncihIYSksemkmJlllJiZZZS5zZWN0aW9ucy5wdXNoKHtwb3M6bm4sZW5kOkFlLmdldFRleHRQb3MoKSxraW5kOlwicHJvbG9ndWVcIixkYXRhOkhhLmV4cHJlc3Npb24udGV4dH0pLGZpJiZmaS5hZGQoSGEuZXhwcmVzc2lvbi50ZXh0KX19ZWxzZSByZXR1cm4gZGF9cmV0dXJuIHYubGVuZ3RofWZ1bmN0aW9uIFVmKHYsc3Ipe2Zvcih2YXIgZmk9MCx6aT12O2ZpPHppLmxlbmd0aDtmaSsrKXt2YXIgU2E9emlbZmldO2lmKCFzci5oYXMoU2EuZGF0YSkpe2JzKCk7dmFyIGRhPUFlLmdldFRleHRQb3MoKTtncihTYSksWWUmJlllLnNlY3Rpb25zLnB1c2goe3BvczpkYSxlbmQ6QWUuZ2V0VGV4dFBvcygpLGtpbmQ6XCJwcm9sb2d1ZVwiLGRhdGE6U2EuZGF0YX0pLHNyJiZzci5hZGQoU2EuZGF0YSl9fX1mdW5jdGlvbiBMXyh2KXtpZihlLmlzU291cmNlRmlsZSh2KSkkbCh2LnN0YXRlbWVudHMsdik7ZWxzZXtmb3IodmFyIHNyPW5ldyBlLlNldCxmaT0wLHppPXYucHJlcGVuZHM7Zmk8emkubGVuZ3RoO2ZpKyspe3ZhciBTYT16aVtmaV07VWYoU2EucHJvbG9ndWVzLHNyKX1mb3IodmFyIGRhPTAsSGE9di5zb3VyY2VGaWxlcztkYTxIYS5sZW5ndGg7ZGErKyl7dmFyIHRhPUhhW2RhXTskbCh0YS5zdGF0ZW1lbnRzLHRhLHNyLCEwKX1QZSh2b2lkIDApfX1mdW5jdGlvbiBsXyh2KXtmb3IodmFyIHNyPW5ldyBlLlNldCxmaSx6aT0wO3ppPHYuc291cmNlRmlsZXMubGVuZ3RoO3ppKyspe2Zvcih2YXIgU2E9di5zb3VyY2VGaWxlc1t6aV0sZGE9dm9pZCAwLEhhPTAsdGE9MCxubj1TYS5zdGF0ZW1lbnRzO3RhPG5uLmxlbmd0aDt0YSsrKXt2YXIgV289bm5bdGFdO2lmKCFlLmlzUHJvbG9ndWVEaXJlY3RpdmUoV28pKWJyZWFrO3NyLmhhcyhXby5leHByZXNzaW9uLnRleHQpfHwoc3IuYWRkKFdvLmV4cHJlc3Npb24udGV4dCksKGRhfHwoZGE9W10pKS5wdXNoKHtwb3M6V28ucG9zLGVuZDpXby5lbmQsZXhwcmVzc2lvbjp7cG9zOldvLmV4cHJlc3Npb24ucG9zLGVuZDpXby5leHByZXNzaW9uLmVuZCx0ZXh0OldvLmV4cHJlc3Npb24udGV4dH19KSxIYT1IYTxXby5lbmQ/V28uZW5kOkhhKX1kYSYmKGZpfHwoZmk9W10pKS5wdXNoKHtmaWxlOnppLHRleHQ6U2EudGV4dC5zdWJzdHJpbmcoMCxIYSksZGlyZWN0aXZlczpkYX0pfXJldHVybiBmaX1mdW5jdGlvbiBmXyh2KXtpZihlLmlzU291cmNlRmlsZSh2KXx8ZS5pc1VucGFyc2VkU291cmNlKHYpKXt2YXIgc3I9ZS5nZXRTaGViYW5nKHYudGV4dCk7aWYoc3IpcmV0dXJuIHJmKHNyKSxicygpLCEwfWVsc2V7Zm9yKHZhciBmaT0wLHppPXYucHJlcGVuZHM7Zmk8emkubGVuZ3RoO2ZpKyspe3ZhciBTYT16aVtmaV07aWYoZS5EZWJ1Zy5hc3NlcnROb2RlKFNhLGUuaXNVbnBhcnNlZFNvdXJjZSksZl8oU2EpKXJldHVybiEwfWZvcih2YXIgZGE9MCxIYT12LnNvdXJjZUZpbGVzO2RhPEhhLmxlbmd0aDtkYSsrKXt2YXIgdGE9SGFbZGFdO2lmKGZfKHRhKSlyZXR1cm4hMH19fWZ1bmN0aW9uIG1kKHYsc3Ipe2lmKCEhdil7dmFyIGZpPWlyO2lyPXNyLGdyKHYpLGlyPWZpfX1mdW5jdGlvbiBrcyh2LHNyKXtzciYmc3IubGVuZ3RoJiYoWm4odixzciwyNjI2NTYpLFV0KCkpfWZ1bmN0aW9uIFd1KHYpe3YmJihHdChcIjpcIiksVXQoKSxncih2KSl9ZnVuY3Rpb24gWmwodixzcixmaSx6aSl7diYmKFV0KCksWWEoNjMsc3IsTmwsZmkpLFV0KCksVHIodix6aSkpfWZ1bmN0aW9uIFJfKHYsc3IsZmksemkpe2ZpJiYoc3IodiksemkoZmkpKX1mdW5jdGlvbiBrbCh2KXt2JiYoVXQoKSxncih2KSl9ZnVuY3Rpb24gX18odixzcil7diYmKFV0KCksVHIodixzcikpfWZ1bmN0aW9uIHpkKHYpe3YmJihncih2KSxVdCgpKX1mdW5jdGlvbiBBbCh2LHNyKXtlLmlzQmxvY2soc3IpfHxlLmdldEVtaXRGbGFncyh2KSYxPyhVdCgpLGdyKHNyKSk6KGJzKCksRGMoKSxlLmlzRW1wdHlTdGF0ZW1lbnQoc3IpP1dpKDUsc3IpOmdyKHNyKSxDYygpKX1mdW5jdGlvbiB3Yyh2LHNyKXtabih2LHNyLDIxNDYzMDUpfWZ1bmN0aW9uIHF1KHYsc3Ipe1puKHYsc3IsNTM3NzYsV3QpfWZ1bmN0aW9uIFZ1KHYsc3Ipe2lmKGUuaXNGdW5jdGlvbkxpa2UodikmJnYudHlwZUFyZ3VtZW50cylyZXR1cm4gcXUodix2LnR5cGVBcmd1bWVudHMpO1puKHYsc3IsNTM3NzYpfWZ1bmN0aW9uIGVmKHYsc3Ipe1puKHYsc3IsMjU3Nil9ZnVuY3Rpb24gc2wodixzcil7dmFyIGZpPWUuc2luZ2xlT3JVbmRlZmluZWQoc3IpO3JldHVybiBmaSYmZmkucG9zPT09di5wb3MmJmUuaXNBcnJvd0Z1bmN0aW9uKHYpJiYhdi50eXBlJiYhZS5zb21lKHYuZGVjb3JhdG9ycykmJiFlLnNvbWUodi5tb2RpZmllcnMpJiYhZS5zb21lKHYudHlwZVBhcmFtZXRlcnMpJiYhZS5zb21lKGZpLmRlY29yYXRvcnMpJiYhZS5zb21lKGZpLm1vZGlmaWVycykmJiFmaS5kb3REb3REb3RUb2tlbiYmIWZpLnF1ZXN0aW9uVG9rZW4mJiFmaS50eXBlJiYhZmkuaW5pdGlhbGl6ZXImJmUuaXNJZGVudGlmaWVyKGZpLm5hbWUpfWZ1bmN0aW9uIHBfKHYsc3Ipe3NsKHYsc3IpP1puKHYsc3IsNTI4KTplZih2LHNyKX1mdW5jdGlvbiBEZih2LHNyKXtabih2LHNyLDg4NDgpfWZ1bmN0aW9uIEVjKHYpe3N3aXRjaCh2JjYwKXtjYXNlIDA6YnJlYWs7Y2FzZSAxNjpHdChcIixcIik7YnJlYWs7Y2FzZSA0OlV0KCksR3QoXCJ8XCIpO2JyZWFrO2Nhc2UgMzI6VXQoKSxHdChcIipcIiksVXQoKTticmVhaztjYXNlIDg6VXQoKSxHdChcIiZcIik7YnJlYWt9fWZ1bmN0aW9uIFpuKHYsc3IsZmksemksU2EsZGEpe1BzKGdyLHYsc3IsZmksemksU2EsZGEpfWZ1bmN0aW9uIG9zKHYsc3IsZmksemksU2EsZGEpe1BzKFRyLHYsc3IsZmksemksU2EsZGEpfWZ1bmN0aW9uIFBzKHYsc3IsZmksemksU2EsZGEsSGEpe2RhPT09dm9pZCAwJiYoZGE9MCksSGE9PT12b2lkIDAmJihIYT1maT9maS5sZW5ndGgtZGE6MCk7dmFyIHRhPWZpPT09dm9pZCAwO2lmKCEodGEmJnppJjE2Mzg0KSl7dmFyIG5uPWZpPT09dm9pZCAwfHxkYT49ZmkubGVuZ3RofHxIYT09PTA7aWYobm4mJnppJjMyNzY4KXtnJiZnKGZpKSxuZSYmbmUoZmkpO3JldHVybn1pZih6aSYxNTM2MCYmKEd0KFgoemkpKSxubiYmZmkmJmFmKGZpLnBvcywhMCkpLGcmJmcoZmkpLG5uKXppJjEmJiEoZGUmJighc3J8fFJlJiZlLnJhbmdlSXNPblNpbmdsZUxpbmUoc3IsUmUpKSk/YnMoKTp6aSYyNTYmJiEoemkmNTI0Mjg4KSYmVXQoKTtlbHNle2UuRGVidWcudHlwZShmaSk7dmFyIFdvPSh6aSYyNjIxNDQpPT09MCxMbz1XbyxvYz1BcChzcixmaSx6aSk7b2M/KGJzKG9jKSxMbz0hMSk6emkmMjU2JiZVdCgpLHppJjEyOCYmRGMoKTtmb3IodmFyIHV1PVAodixTYSksaXM9dm9pZCAwLGF1PXZvaWQgMCxPdT0hMSxzZj0wO3NmPEhhO3NmKyspe3ZhciBsdT1maVtkYStzZl07aWYoemkmMzIpYnMoKSxFYyh6aSk7ZWxzZSBpZihpcyl7emkmNjAmJmlzLmVuZCE9PShzcj9zci5lbmQ6LTEpJiZWZihpcy5lbmQpLEVjKHppKSxKZShhdSk7dmFyIGNmPVdmKGlzLGx1LHppKTtjZj4wPygoemkmMTMxKT09PTAmJihEYygpLE91PSEwKSxicyhjZiksTG89ITEpOmlzJiZ6aSY1MTImJlV0KCl9aWYoYXU9V3IobHUpLExvKXt2YXIgdWY9ZS5nZXRDb21tZW50UmFuZ2UobHUpO2FmKHVmLnBvcyl9ZWxzZSBMbz1Xbzt5ZT1sdS5wb3MsdXUobHUsdixTYSxzZiksT3UmJihDYygpLE91PSExKSxpcz1sdX12YXIgS189aXM/ZS5nZXRFbWl0RmxhZ3MoaXMpOjAsSnA9cXJ8fCEhKEtfJjEwMjQpLEhmPShmaT09bnVsbD92b2lkIDA6ZmkuaGFzVHJhaWxpbmdDb21tYSkmJnppJjY0JiZ6aSYxNjtIZiYmKGlzJiYhSnA/WWEoMjcsaXMuZW5kLEd0LGlzKTpHdChcIixcIikpLGlzJiYoc3I/c3IuZW5kOi0xKSE9PWlzLmVuZCYmemkmNjAmJiFKcCYmVmYoSGYmJihmaT09bnVsbD92b2lkIDA6ZmkuZW5kKT9maS5lbmQ6aXMuZW5kKSx6aSYxMjgmJkNjKCksSmUoYXUpO3ZhciBrYz1TZihzcixmaSx6aSk7a2M/YnMoa2MpOnppJjIwOTc0MDgmJlV0KCl9bmUmJm5lKGZpKSx6aSYxNTM2MCYmKG5uJiZmaSYmVmYoZmkuZW5kKSxHdCgkKHppKSkpfX1mdW5jdGlvbiBkXyh2KXtBZS53cml0ZUxpdGVyYWwodil9ZnVuY3Rpb24gR2Modil7QWUud3JpdGVTdHJpbmdMaXRlcmFsKHYpfWZ1bmN0aW9uIEJfKHYpe0FlLndyaXRlKHYpfWZ1bmN0aW9uIHZ1KHYsc3Ipe0FlLndyaXRlU3ltYm9sKHYsc3IpfWZ1bmN0aW9uIEd0KHYpe0FlLndyaXRlUHVuY3R1YXRpb24odil9ZnVuY3Rpb24gQXMoKXtBZS53cml0ZVRyYWlsaW5nU2VtaWNvbG9uKFwiO1wiKX1mdW5jdGlvbiB2bih2KXtBZS53cml0ZUtleXdvcmQodil9ZnVuY3Rpb24gTmwodil7QWUud3JpdGVPcGVyYXRvcih2KX1mdW5jdGlvbiBjbCh2KXtBZS53cml0ZVBhcmFtZXRlcih2KX1mdW5jdGlvbiByZih2KXtBZS53cml0ZUNvbW1lbnQodil9ZnVuY3Rpb24gVXQoKXtBZS53cml0ZVNwYWNlKFwiIFwiKX1mdW5jdGlvbiBEcyh2KXtBZS53cml0ZVByb3BlcnR5KHYpfWZ1bmN0aW9uIGJmKHYpe0FlLm5vbkVzY2FwaW5nV3JpdGU/QWUubm9uRXNjYXBpbmdXcml0ZSh2KTpBZS53cml0ZSh2KX1mdW5jdGlvbiBicyh2KXt2PT09dm9pZCAwJiYodj0xKTtmb3IodmFyIHNyPTA7c3I8djtzcisrKUFlLndyaXRlTGluZShzcj4wKX1mdW5jdGlvbiBEYygpe0FlLmluY3JlYXNlSW5kZW50KCl9ZnVuY3Rpb24gQ2MoKXtBZS5kZWNyZWFzZUluZGVudCgpfWZ1bmN0aW9uIGFjKHYsc3IsZmksemkpe3JldHVybiBscj9JbCh2LGZpLHNyKTpvZih6aSx2LGZpLHNyLElsKX1mdW5jdGlvbiBQbCh2LHNyKXt1ZSYmdWUodiksc3IoZS50b2tlblRvU3RyaW5nKHYua2luZCkpLFdlJiZXZSh2KX1mdW5jdGlvbiBJbCh2LHNyLGZpKXt2YXIgemk9ZS50b2tlblRvU3RyaW5nKHYpO3JldHVybiBzcih6aSksZmk8MD9maTpmaSt6aS5sZW5ndGh9ZnVuY3Rpb24gemYodixzcixmaSl7aWYoZS5nZXRFbWl0RmxhZ3ModikmMSlVdCgpO2Vsc2UgaWYoZGUpe3ZhciB6aT1pdSh2LHNyLGZpKTt6aT9icyh6aSk6VXQoKX1lbHNlIGJzKCl9ZnVuY3Rpb24gdWwodil7Zm9yKHZhciBzcj12LnNwbGl0KC9cXHJcXG4/fFxcbi9nKSxmaT1lLmd1ZXNzSW5kZW50YXRpb24oc3IpLHppPTAsU2E9c3I7emk8U2EubGVuZ3RoO3ppKyspe3ZhciBkYT1TYVt6aV0sSGE9Zmk/ZGEuc2xpY2UoZmkpOmRhO0hhLmxlbmd0aCYmKGJzKCksaXIoSGEpKX19ZnVuY3Rpb24gTnUodixzcil7dj8oRGMoKSxicyh2KSk6c3ImJlV0KCl9ZnVuY3Rpb24gVXModixzcil7diYmQ2MoKSxzciYmQ2MoKX1mdW5jdGlvbiBBcCh2LHNyLGZpKXtpZihmaSYyfHxkZSl7aWYoZmkmNjU1MzYpcmV0dXJuIDE7dmFyIHppPXNyWzBdO2lmKHppPT09dm9pZCAwKXJldHVybiF2fHxSZSYmZS5yYW5nZUlzT25TaW5nbGVMaW5lKHYsUmUpPzA6MTtpZih6aS5wb3M9PT15ZXx8emkua2luZD09PTExKXJldHVybiAwO2lmKFJlJiZ2JiYhZS5wb3NpdGlvbklzU3ludGhlc2l6ZWQodi5wb3MpJiYhZS5ub2RlSXNTeW50aGVzaXplZCh6aSkmJighemkucGFyZW50fHxlLmdldE9yaWdpbmFsTm9kZSh6aS5wYXJlbnQpPT09ZS5nZXRPcmlnaW5hbE5vZGUodikpKXJldHVybiBkZT9sbChmdW5jdGlvbihTYSl7cmV0dXJuIGUuZ2V0TGluZXNCZXR3ZWVuUG9zaXRpb25BbmRQcmVjZWRpbmdOb25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHppLnBvcyx2LnBvcyxSZSxTYSl9KTplLnJhbmdlU3RhcnRQb3NpdGlvbnNBcmVPblNhbWVMaW5lKHYsemksUmUpPzA6MTtpZihVXyh6aSxmaSkpcmV0dXJuIDF9cmV0dXJuIGZpJjE/MTowfWZ1bmN0aW9uIFdmKHYsc3IsZmkpe2lmKGZpJjJ8fGRlKXtpZih2PT09dm9pZCAwfHxzcj09PXZvaWQgMHx8c3Iua2luZD09PTExKXJldHVybiAwO2lmKFJlJiYhZS5ub2RlSXNTeW50aGVzaXplZCh2KSYmIWUubm9kZUlzU3ludGhlc2l6ZWQoc3IpKXJldHVybiBkZSYmTHAodixzcik/bGwoZnVuY3Rpb24oemkpe3JldHVybiBlLmdldExpbmVzQmV0d2VlblJhbmdlRW5kQW5kUmFuZ2VTdGFydCh2LHNyLFJlLHppKX0pOiFkZSYmR3Uodixzcik/ZS5yYW5nZUVuZElzT25TYW1lTGluZUFzUmFuZ2VTdGFydCh2LHNyLFJlKT8wOjE6ZmkmNjU1MzY/MTowO2lmKFVfKHYsZmkpfHxVXyhzcixmaSkpcmV0dXJuIDF9ZWxzZSBpZihlLmdldFN0YXJ0c09uTmV3TGluZShzcikpcmV0dXJuIDE7cmV0dXJuIGZpJjE/MTowfWZ1bmN0aW9uIFNmKHYsc3IsZmkpe2lmKGZpJjJ8fGRlKXtpZihmaSY2NTUzNilyZXR1cm4gMTt2YXIgemk9ZS5sYXN0T3JVbmRlZmluZWQoc3IpO2lmKHppPT09dm9pZCAwKXJldHVybiF2fHxSZSYmZS5yYW5nZUlzT25TaW5nbGVMaW5lKHYsUmUpPzA6MTtpZihSZSYmdiYmIWUucG9zaXRpb25Jc1N5bnRoZXNpemVkKHYucG9zKSYmIWUubm9kZUlzU3ludGhlc2l6ZWQoemkpJiYoIXppLnBhcmVudHx8emkucGFyZW50PT09dikpe2lmKGRlKXt2YXIgU2E9ZS5pc05vZGVBcnJheShzcikmJiFlLnBvc2l0aW9uSXNTeW50aGVzaXplZChzci5lbmQpP3NyLmVuZDp6aS5lbmQ7cmV0dXJuIGxsKGZ1bmN0aW9uKGRhKXtyZXR1cm4gZS5nZXRMaW5lc0JldHdlZW5Qb3NpdGlvbkFuZE5leHROb25XaGl0ZXNwYWNlQ2hhcmFjdGVyKFNhLHYuZW5kLFJlLGRhKX0pfXJldHVybiBlLnJhbmdlRW5kUG9zaXRpb25zQXJlT25TYW1lTGluZSh2LHppLFJlKT8wOjF9aWYoVV8oemksZmkpKXJldHVybiAxfXJldHVybiBmaSYxJiYhKGZpJjEzMTA3Mik/MTowfWZ1bmN0aW9uIGxsKHYpe2UuRGVidWcuYXNzZXJ0KCEhZGUpO3ZhciBzcj12KCEwKTtyZXR1cm4gc3I9PT0wP3YoITEpOnNyfWZ1bmN0aW9uIEpfKHYsc3Ipe3ZhciBmaT1kZSYmQXAoc3IsW3ZdLDApO3JldHVybiBmaSYmTnUoZmksITEpLCEhZml9ZnVuY3Rpb24gal8odixzcil7dmFyIGZpPWRlJiZTZihzcixbdl0sMCk7ZmkmJmJzKGZpKX1mdW5jdGlvbiBVXyh2LHNyKXtpZihlLm5vZGVJc1N5bnRoZXNpemVkKHYpKXt2YXIgZmk9ZS5nZXRTdGFydHNPbk5ld0xpbmUodik7cmV0dXJuIGZpPT09dm9pZCAwPyhzciY2NTUzNikhPT0wOmZpfXJldHVybihzciY2NTUzNikhPT0wfWZ1bmN0aW9uIGl1KHYsc3IsZmkpe3JldHVybiBlLmdldEVtaXRGbGFncyh2KSYxMzEwNzI/MDoodj1xZih2KSxzcj1xZihzciksZmk9cWYoZmkpLGUuZ2V0U3RhcnRzT25OZXdMaW5lKGZpKT8xOlJlJiYhZS5ub2RlSXNTeW50aGVzaXplZCh2KSYmIWUubm9kZUlzU3ludGhlc2l6ZWQoc3IpJiYhZS5ub2RlSXNTeW50aGVzaXplZChmaSk/ZGU/bGwoZnVuY3Rpb24oemkpe3JldHVybiBlLmdldExpbmVzQmV0d2VlblJhbmdlRW5kQW5kUmFuZ2VTdGFydChzcixmaSxSZSx6aSl9KTplLnJhbmdlRW5kSXNPblNhbWVMaW5lQXNSYW5nZVN0YXJ0KHNyLGZpLFJlKT8wOjE6MCl9ZnVuY3Rpb24gdmQodil7cmV0dXJuIHYuc3RhdGVtZW50cy5sZW5ndGg9PT0wJiYoIVJlfHxlLnJhbmdlRW5kSXNPblNhbWVMaW5lQXNSYW5nZVN0YXJ0KHYsdixSZSkpfWZ1bmN0aW9uIHFmKHYpe2Zvcig7di5raW5kPT09MjEyJiZlLm5vZGVJc1N5bnRoZXNpemVkKHYpOyl2PXYuZXhwcmVzc2lvbjtyZXR1cm4gdn1mdW5jdGlvbiBkYyh2LHNyKXtpZihlLmlzR2VuZXJhdGVkSWRlbnRpZmllcih2KSlyZXR1cm4gTnAodik7aWYoZS5pc1N0cmluZ0xpdGVyYWwodikmJnYudGV4dFNvdXJjZU5vZGUpcmV0dXJuIGRjKHYudGV4dFNvdXJjZU5vZGUsc3IpO3ZhciBmaT1SZSx6aT0hIWZpJiYhIXYucGFyZW50JiYhZS5ub2RlSXNTeW50aGVzaXplZCh2KTtpZihlLmlzTWVtYmVyTmFtZSh2KSl7aWYoIXppfHxlLmdldFNvdXJjZUZpbGVPZk5vZGUodikhPT1lLmdldE9yaWdpbmFsTm9kZShmaSkpcmV0dXJuIGUuaWRUZXh0KHYpfWVsc2UgaWYoZS5EZWJ1Zy5hc3NlcnROb2RlKHYsZS5pc0xpdGVyYWxFeHByZXNzaW9uKSwhemkpcmV0dXJuIHYudGV4dDtyZXR1cm4gZS5nZXRTb3VyY2VUZXh0T2ZOb2RlRnJvbVNvdXJjZUZpbGUoZmksdixzcil9ZnVuY3Rpb24gUHUodixzcixmaSl7aWYodi5raW5kPT09MTAmJnYudGV4dFNvdXJjZU5vZGUpe3ZhciB6aT12LnRleHRTb3VyY2VOb2RlO2lmKGUuaXNJZGVudGlmaWVyKHppKXx8ZS5pc051bWVyaWNMaXRlcmFsKHppKSl7dmFyIFNhPWUuaXNOdW1lcmljTGl0ZXJhbCh6aSk/emkudGV4dDpkYyh6aSk7cmV0dXJuIGZpPydcIicuY29uY2F0KGUuZXNjYXBlSnN4QXR0cmlidXRlU3RyaW5nKFNhKSwnXCInKTpzcnx8ZS5nZXRFbWl0RmxhZ3ModikmMTY3NzcyMTY/J1wiJy5jb25jYXQoZS5lc2NhcGVTdHJpbmcoU2EpLCdcIicpOidcIicuY29uY2F0KGUuZXNjYXBlTm9uQXNjaWlTdHJpbmcoU2EpLCdcIicpfWVsc2UgcmV0dXJuIFB1KHppLHNyLGZpKX12YXIgZGE9KHNyPzE6MCl8KGZpPzI6MCl8KGsudGVybWluYXRlVW50ZXJtaW5hdGVkTGl0ZXJhbHM/NDowKXwoay50YXJnZXQmJmsudGFyZ2V0PT09OTk/ODowKTtyZXR1cm4gZS5nZXRMaXRlcmFsVGV4dCh2LFJlLGRhKX1mdW5jdGlvbiB3bCh2KXt2JiZlLmdldEVtaXRGbGFncyh2KSY1MjQyODh8fChyci5wdXNoKEllKSxJZT0wLF9lLnB1c2god2UpKX1mdW5jdGlvbiBJdSh2KXt2JiZlLmdldEVtaXRGbGFncyh2KSY1MjQyODh8fChJZT1yci5wb3AoKSx3ZT1fZS5wb3AoKSl9ZnVuY3Rpb24gc28odil7KCF3ZXx8d2U9PT1lLmxhc3RPclVuZGVmaW5lZChfZSkpJiYod2U9bmV3IGUuU2V0KSx3ZS5hZGQodil9ZnVuY3Rpb24gRXQodil7aWYoISF2KXN3aXRjaCh2LmtpbmQpe2Nhc2UgMjM1OmUuZm9yRWFjaCh2LnN0YXRlbWVudHMsRXQpO2JyZWFrO2Nhc2UgMjUwOmNhc2UgMjQ4OmNhc2UgMjQwOmNhc2UgMjQxOkV0KHYuc3RhdGVtZW50KTticmVhaztjYXNlIDIzOTpFdCh2LnRoZW5TdGF0ZW1lbnQpLEV0KHYuZWxzZVN0YXRlbWVudCk7YnJlYWs7Y2FzZSAyNDI6Y2FzZSAyNDQ6Y2FzZSAyNDM6RXQodi5pbml0aWFsaXplciksRXQodi5zdGF0ZW1lbnQpO2JyZWFrO2Nhc2UgMjQ5OkV0KHYuY2FzZUJsb2NrKTticmVhaztjYXNlIDI2MzplLmZvckVhY2godi5jbGF1c2VzLEV0KTticmVhaztjYXNlIDI4OTpjYXNlIDI5MDplLmZvckVhY2godi5zdGF0ZW1lbnRzLEV0KTticmVhaztjYXNlIDI1MjpFdCh2LnRyeUJsb2NrKSxFdCh2LmNhdGNoQ2xhdXNlKSxFdCh2LmZpbmFsbHlCbG9jayk7YnJlYWs7Y2FzZSAyOTI6RXQodi52YXJpYWJsZURlY2xhcmF0aW9uKSxFdCh2LmJsb2NrKTticmVhaztjYXNlIDIzNzpFdCh2LmRlY2xhcmF0aW9uTGlzdCk7YnJlYWs7Y2FzZSAyNTU6ZS5mb3JFYWNoKHYuZGVjbGFyYXRpb25zLEV0KTticmVhaztjYXNlIDI1NDpjYXNlIDE2NDpjYXNlIDIwMzpjYXNlIDI1NzpLdSh2Lm5hbWUpO2JyZWFrO2Nhc2UgMjU2Okt1KHYubmFtZSksZS5nZXRFbWl0RmxhZ3ModikmNTI0Mjg4JiYoZS5mb3JFYWNoKHYucGFyYW1ldGVycyxFdCksRXQodi5ib2R5KSk7YnJlYWs7Y2FzZSAyMDE6Y2FzZSAyMDI6ZS5mb3JFYWNoKHYuZWxlbWVudHMsRXQpO2JyZWFrO2Nhc2UgMjY2OkV0KHYuaW1wb3J0Q2xhdXNlKTticmVhaztjYXNlIDI2NzpLdSh2Lm5hbWUpLEV0KHYubmFtZWRCaW5kaW5ncyk7YnJlYWs7Y2FzZSAyNjg6S3Uodi5uYW1lKTticmVhaztjYXNlIDI3NDpLdSh2Lm5hbWUpO2JyZWFrO2Nhc2UgMjY5OmUuZm9yRWFjaCh2LmVsZW1lbnRzLEV0KTticmVhaztjYXNlIDI3MDpLdSh2LnByb3BlcnR5TmFtZXx8di5uYW1lKTticmVha319ZnVuY3Rpb24gWXModil7aWYoISF2KXN3aXRjaCh2LmtpbmQpe2Nhc2UgMjk2OmNhc2UgMjk3OmNhc2UgMTY3OmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOkt1KHYubmFtZSk7YnJlYWt9fWZ1bmN0aW9uIEt1KHYpe3YmJihlLmlzR2VuZXJhdGVkSWRlbnRpZmllcih2KT9OcCh2KTplLmlzQmluZGluZ1BhdHRlcm4odikmJkV0KHYpKX1mdW5jdGlvbiBOcCh2KXtpZigodi5hdXRvR2VuZXJhdGVGbGFncyY3KT09PTQpcmV0dXJuIFBwKHRmKHYpLHYuYXV0b0dlbmVyYXRlRmxhZ3MpO3ZhciBzcj12LmF1dG9HZW5lcmF0ZUlkO3JldHVybiBFZVtzcl18fChFZVtzcl09T2wodikpfWZ1bmN0aW9uIFBwKHYsc3Ipe3ZhciBmaT1lLmdldE5vZGVJZCh2KTtyZXR1cm4gemVbZmldfHwoemVbZmldPUhjKHYsc3IpKX1mdW5jdGlvbiBuYyh2KXtyZXR1cm4gZmwodikmJiFIZS5oYXModikmJiEod2UmJndlLmhhcyh2KSl9ZnVuY3Rpb24gZmwodil7cmV0dXJuIFJlP2UuaXNGaWxlTGV2ZWxVbmlxdWVOYW1lKFJlLHYsVSk6ITB9ZnVuY3Rpb24gX2wodixzcil7Zm9yKHZhciBmaT1zcjtlLmlzTm9kZURlc2NlbmRhbnRPZihmaSxzcik7Zmk9ZmkubmV4dENvbnRhaW5lcilpZihmaS5sb2NhbHMpe3ZhciB6aT1maS5sb2NhbHMuZ2V0KGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKHYpKTtpZih6aSYmemkuZmxhZ3MmMzI1NzI3OSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBjdSh2LHNyKXtpZih2JiYhKEllJnYpKXt2YXIgZmk9dj09PTI2ODQzNTQ1Nj9cIl9pXCI6XCJfblwiO2lmKG5jKGZpKSlyZXR1cm4gSWV8PXYsc3ImJnNvKGZpKSxmaX1mb3IoOzspe3ZhciB6aT1JZSYyNjg0MzU0NTU7aWYoSWUrKyx6aSE9PTgmJnppIT09MTMpe3ZhciBmaT16aTwyNj9cIl9cIitTdHJpbmcuZnJvbUNoYXJDb2RlKDk3K3ppKTpcIl9cIisoemktMjYpO2lmKG5jKGZpKSlyZXR1cm4gc3ImJnNvKGZpKSxmaX19fWZ1bmN0aW9uIGdjKHYsc3IsZmksemkpe2lmKHNyPT09dm9pZCAwJiYoc3I9bmMpLGZpJiZzcih2KSlyZXR1cm4gemk/c28odik6SGUuYWRkKHYpLHY7di5jaGFyQ29kZUF0KHYubGVuZ3RoLTEpIT09OTUmJih2Kz1cIl9cIik7Zm9yKHZhciBTYT0xOzspe3ZhciBkYT12K1NhO2lmKHNyKGRhKSlyZXR1cm4gemk/c28oZGEpOkhlLmFkZChkYSksZGE7U2ErK319ZnVuY3Rpb24gVGYodil7cmV0dXJuIGdjKHYsZmwsITApfWZ1bmN0aW9uIG1jKHYpe3ZhciBzcj1kYyh2Lm5hbWUpO3JldHVybiBfbChzcix2KT9zcjpnYyhzcil9ZnVuY3Rpb24gSXAodil7dmFyIHNyPWUuZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lKHYpLGZpPWUuaXNTdHJpbmdMaXRlcmFsKHNyKT9lLm1ha2VJZGVudGlmaWVyRnJvbU1vZHVsZU5hbWUoc3IudGV4dCk6XCJtb2R1bGVcIjtyZXR1cm4gZ2MoZmkpfWZ1bmN0aW9uIG1zKCl7cmV0dXJuIGdjKFwiZGVmYXVsdFwiKX1mdW5jdGlvbiB0dSgpe3JldHVybiBnYyhcImNsYXNzXCIpfWZ1bmN0aW9uIHdwKHYpe3JldHVybiBlLmlzSWRlbnRpZmllcih2Lm5hbWUpP1BwKHYubmFtZSk6Y3UoMCl9ZnVuY3Rpb24gSGModixzcil7c3dpdGNoKHYua2luZCl7Y2FzZSA3OTpyZXR1cm4gZ2MoZGModiksbmMsISEoc3ImMTYpLCEhKHNyJjgpKTtjYXNlIDI2MTpjYXNlIDI2MDpyZXR1cm4gbWModik7Y2FzZSAyNjY6Y2FzZSAyNzI6cmV0dXJuIElwKHYpO2Nhc2UgMjU2OmNhc2UgMjU3OmNhc2UgMjcxOnJldHVybiBtcygpO2Nhc2UgMjI2OnJldHVybiB0dSgpO2Nhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOnJldHVybiB3cCh2KTtjYXNlIDE2MjpyZXR1cm4gY3UoMCwhMCk7ZGVmYXVsdDpyZXR1cm4gY3UoMCl9fWZ1bmN0aW9uIE9sKHYpe3N3aXRjaCh2LmF1dG9HZW5lcmF0ZUZsYWdzJjcpe2Nhc2UgMTpyZXR1cm4gY3UoMCwhISh2LmF1dG9HZW5lcmF0ZUZsYWdzJjgpKTtjYXNlIDI6cmV0dXJuIGN1KDI2ODQzNTQ1NiwhISh2LmF1dG9HZW5lcmF0ZUZsYWdzJjgpKTtjYXNlIDM6cmV0dXJuIGdjKGUuaWRUZXh0KHYpLHYuYXV0b0dlbmVyYXRlRmxhZ3MmMzI/Zmw6bmMsISEodi5hdXRvR2VuZXJhdGVGbGFncyYxNiksISEodi5hdXRvR2VuZXJhdGVGbGFncyY4KSl9cmV0dXJuIGUuRGVidWcuZmFpbChcIlVuc3VwcG9ydGVkIEdlbmVyYXRlZElkZW50aWZpZXJLaW5kLlwiKX1mdW5jdGlvbiB0Zih2KXtmb3IodmFyIHNyPXYuYXV0b0dlbmVyYXRlSWQsZmk9dix6aT1maS5vcmlnaW5hbDt6aSYmKGZpPXppLCEoZS5pc0lkZW50aWZpZXIoZmkpJiYhIShmaS5hdXRvR2VuZXJhdGVGbGFncyY0KSYmZmkuYXV0b0dlbmVyYXRlSWQhPT1zcikpOyl6aT1maS5vcmlnaW5hbDtyZXR1cm4gZml9ZnVuY3Rpb24geGYodixzcil7dmFyIGZpPU10KDIsdixzciksemk9d3IsU2E9VXIsZGE9aWk7el8oc3IpLGZpKHYsc3IpLE9jKHNyLHppLFNhLGRhKX1mdW5jdGlvbiB6Xyh2KXt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3ModiksZmk9ZS5nZXRDb21tZW50UmFuZ2Uodik7cnModixzcixmaS5wb3MsZmkuZW5kKSxzciYyMDQ4JiYocXI9ITApfWZ1bmN0aW9uIE9jKHYsc3IsZmksemkpe3ZhciBTYT1lLmdldEVtaXRGbGFncyh2KSxkYT1lLmdldENvbW1lbnRSYW5nZSh2KTtTYSYyMDQ4JiYocXI9ITEpLE9wKHYsU2EsZGEucG9zLGRhLmVuZCxzcixmaSx6aSk7dmFyIEhhPWUuZ2V0VHlwZU5vZGUodik7SGEmJk9wKHYsU2EsSGEucG9zLEhhLmVuZCxzcixmaSx6aSl9ZnVuY3Rpb24gcnModixzcixmaSx6aSl7WGkoKSxvcj0hMTt2YXIgU2E9Zmk8MHx8KHNyJjUxMikhPT0wfHx2LmtpbmQ9PT0xMSxkYT16aTwwfHwoc3ImMTAyNCkhPT0wfHx2LmtpbmQ9PT0xMTsoZmk+MHx8emk+MCkmJmZpIT09emkmJihTYXx8Q2YoZmksdi5raW5kIT09MzQ5KSwoIVNhfHxmaT49MCYmKHNyJjUxMikhPT0wKSYmKHdyPWZpKSwoIWRhfHx6aT49MCYmKHNyJjEwMjQpIT09MCkmJihVcj16aSx2LmtpbmQ9PT0yNTUmJihpaT16aSkpKSxlLmZvckVhY2goZS5nZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHModiksRWYpLGV0KCl9ZnVuY3Rpb24gT3AodixzcixmaSx6aSxTYSxkYSxIYSl7WGkoKTt2YXIgdGE9emk8MHx8KHNyJjEwMjQpIT09MHx8di5raW5kPT09MTE7ZS5mb3JFYWNoKGUuZ2V0U3ludGhldGljVHJhaWxpbmdDb21tZW50cyh2KSxGbCksKGZpPjB8fHppPjApJiZmaSE9PXppJiYod3I9U2EsVXI9ZGEsaWk9SGEsIXRhJiZ2LmtpbmQhPT0zNDkmJkZjKHppKSksZXQoKX1mdW5jdGlvbiBFZih2KXsodi5oYXNMZWFkaW5nTmV3bGluZXx8di5raW5kPT09MikmJkFlLndyaXRlTGluZSgpLHBsKHYpLHYuaGFzVHJhaWxpbmdOZXdMaW5lfHx2LmtpbmQ9PT0yP0FlLndyaXRlTGluZSgpOkFlLndyaXRlU3BhY2UoXCIgXCIpfWZ1bmN0aW9uIEZsKHYpe0FlLmlzQXRTdGFydE9mTGluZSgpfHxBZS53cml0ZVNwYWNlKFwiIFwiKSxwbCh2KSx2Lmhhc1RyYWlsaW5nTmV3TGluZSYmQWUud3JpdGVMaW5lKCl9ZnVuY3Rpb24gcGwodil7dmFyIHNyPUZwKHYpLGZpPXYua2luZD09PTM/ZS5jb21wdXRlTGluZVN0YXJ0cyhzcik6dm9pZCAwO2Uud3JpdGVDb21tZW50UmFuZ2Uoc3IsZmksQWUsMCxzci5sZW5ndGgsWil9ZnVuY3Rpb24gRnAodil7cmV0dXJuIHYua2luZD09PTM/XCIvKlwiLmNvbmNhdCh2LnRleHQsXCIqL1wiKTpcIi8vXCIuY29uY2F0KHYudGV4dCl9ZnVuY3Rpb24gTXAodixzcixmaSl7WGkoKTt2YXIgemk9c3IucG9zLFNhPXNyLmVuZCxkYT1lLmdldEVtaXRGbGFncyh2KSxIYT16aTwwfHwoZGEmNTEyKSE9PTAsdGE9cXJ8fFNhPDB8fChkYSYxMDI0KSE9PTA7SGF8fFJwKHNyKSxldCgpLGRhJjIwNDgmJiFxcj8ocXI9ITAsZmkodikscXI9ITEpOmZpKHYpLFhpKCksdGF8fChDZihzci5lbmQsITApLG9yJiYhQWUuaXNBdFN0YXJ0T2ZMaW5lKCkmJkFlLndyaXRlTGluZSgpKSxldCgpfWZ1bmN0aW9uIEd1KHYsc3Ipe3JldHVybiB2PWUuZ2V0T3JpZ2luYWxOb2RlKHYpLHYucGFyZW50JiZ2LnBhcmVudD09PWUuZ2V0T3JpZ2luYWxOb2RlKHNyKS5wYXJlbnR9ZnVuY3Rpb24gTHAodixzcil7aWYoc3IucG9zPHYuZW5kKXJldHVybiExO3Y9ZS5nZXRPcmlnaW5hbE5vZGUodiksc3I9ZS5nZXRPcmlnaW5hbE5vZGUoc3IpO3ZhciBmaT12LnBhcmVudDtpZighZml8fGZpIT09c3IucGFyZW50KXJldHVybiExO3ZhciB6aT1lLmdldENvbnRhaW5pbmdOb2RlQXJyYXkodiksU2E9emk9PW51bGw/dm9pZCAwOnppLmluZGV4T2Yodik7cmV0dXJuIFNhIT09dm9pZCAwJiZTYT4tMSYmemkuaW5kZXhPZihzcik9PT1TYSsxfWZ1bmN0aW9uIENmKHYsc3Ipe29yPSExLHNyP3Y9PT0wJiYoUmU9PW51bGw/dm9pZCAwOlJlLmlzRGVjbGFyYXRpb25GaWxlKT9PdCh2LGdfKTpPdCh2LGdsKTp2PT09MCYmT3QodixXXyl9ZnVuY3Rpb24gV18odixzcixmaSx6aSxTYSl7bV8odixzcikmJmdsKHYsc3IsZmksemksU2EpfWZ1bmN0aW9uIGdfKHYsc3IsZmksemksU2Epe21fKHYsc3IpfHxnbCh2LHNyLGZpLHppLFNhKX1mdW5jdGlvbiBkbCh2LHNyKXtyZXR1cm4gay5vbmx5UHJpbnRKc0RvY1N0eWxlP2UuaXNKU0RvY0xpa2VUZXh0KHYsc3IpfHxlLmlzUGlubmVkQ29tbWVudCh2LHNyKTohMH1mdW5jdGlvbiBnbCh2LHNyLGZpLHppLFNhKXshUmV8fCFkbChSZS50ZXh0LHYpfHwob3J8fChlLmVtaXROZXdMaW5lQmVmb3JlTGVhZGluZ0NvbW1lbnRPZlBvc2l0aW9uKERlKCksQWUsU2Esdiksb3I9ITApLFhjKHYpLGUud3JpdGVDb21tZW50UmFuZ2UoUmUudGV4dCxEZSgpLEFlLHYsc3IsWiksWGMoc3IpLHppP0FlLndyaXRlTGluZSgpOmZpPT09MyYmQWUud3JpdGVTcGFjZShcIiBcIikpfWZ1bmN0aW9uIFZmKHYpe3FyfHx2PT09LTF8fENmKHYsITApfWZ1bmN0aW9uIEZjKHYpe25mKHYsSHUpfWZ1bmN0aW9uIEh1KHYsc3IsZmksemkpeyFSZXx8IWRsKFJlLnRleHQsdil8fChBZS5pc0F0U3RhcnRPZkxpbmUoKXx8QWUud3JpdGVTcGFjZShcIiBcIiksWGModiksZS53cml0ZUNvbW1lbnRSYW5nZShSZS50ZXh0LERlKCksQWUsdixzcixaKSxYYyhzciksemkmJkFlLndyaXRlTGluZSgpKX1mdW5jdGlvbiBhZih2LHNyLGZpKXtxcnx8KFhpKCksbmYodixzcj9IdTpmaT90bjpNbCksZXQoKSl9ZnVuY3Rpb24gdG4odixzcixmaSl7IVJlfHwoWGModiksZS53cml0ZUNvbW1lbnRSYW5nZShSZS50ZXh0LERlKCksQWUsdixzcixaKSxYYyhzciksZmk9PT0yJiZBZS53cml0ZUxpbmUoKSl9ZnVuY3Rpb24gTWwodixzcixmaSx6aSl7IVJlfHwoWGModiksZS53cml0ZUNvbW1lbnRSYW5nZShSZS50ZXh0LERlKCksQWUsdixzcixaKSxYYyhzciksemk/QWUud3JpdGVMaW5lKCk6QWUud3JpdGVTcGFjZShcIiBcIikpfWZ1bmN0aW9uIE90KHYsc3Ipe1JlJiYod3I9PT0tMXx8diE9PXdyKSYmKHFfKHYpP0tmKHNyKTplLmZvckVhY2hMZWFkaW5nQ29tbWVudFJhbmdlKFJlLnRleHQsdixzcix2KSl9ZnVuY3Rpb24gbmYodixzcil7UmUmJihVcj09PS0xfHx2IT09VXImJnYhPT1paSkmJmUuZm9yRWFjaFRyYWlsaW5nQ29tbWVudFJhbmdlKFJlLnRleHQsdixzcil9ZnVuY3Rpb24gcV8odil7cmV0dXJuIHBlIT09dm9pZCAwJiZlLmxhc3QocGUpLm5vZGVQb3M9PT12fWZ1bmN0aW9uIEtmKHYpe2lmKCEhUmUpe3ZhciBzcj1lLmxhc3QocGUpLmRldGFjaGVkQ29tbWVudEVuZFBvcztwZS5sZW5ndGgtMT9wZS5wb3AoKTpwZT12b2lkIDAsZS5mb3JFYWNoTGVhZGluZ0NvbW1lbnRSYW5nZShSZS50ZXh0LHNyLHYsc3IpfX1mdW5jdGlvbiBScCh2KXt2YXIgc3I9UmUmJmUuZW1pdERldGFjaGVkQ29tbWVudHMoUmUudGV4dCxEZSgpLEFlLHlkLHYsWixxcik7c3ImJihwZT9wZS5wdXNoKHNyKTpwZT1bc3JdKX1mdW5jdGlvbiB5ZCh2LHNyLGZpLHppLFNhLGRhKXshUmV8fCFkbChSZS50ZXh0LHppKXx8KFhjKHppKSxlLndyaXRlQ29tbWVudFJhbmdlKHYsc3IsZmksemksU2EsZGEpLFhjKFNhKSl9ZnVuY3Rpb24gbV8odixzcil7cmV0dXJuISFSZSYmZS5pc1JlY29nbml6ZWRUcmlwbGVTbGFzaENvbW1lbnQoUmUudGV4dCx2LHNyKX1mdW5jdGlvbiBMbCh2KXtyZXR1cm4gdi5wYXJzZWRTb3VyY2VNYXA9PT12b2lkIDAmJnYuc291cmNlTWFwVGV4dCE9PXZvaWQgMCYmKHYucGFyc2VkU291cmNlTWFwPWUudHJ5UGFyc2VSYXdTb3VyY2VNYXAodi5zb3VyY2VNYXBUZXh0KXx8ITEpLHYucGFyc2VkU291cmNlTWFwfHx2b2lkIDB9ZnVuY3Rpb24gaGQodixzcil7dmFyIGZpPU10KDMsdixzcik7dl8oc3IpLGZpKHYsc3IpLEJwKHNyKX1mdW5jdGlvbiB2Xyh2KXt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3ModiksZmk9ZS5nZXRTb3VyY2VNYXBSYW5nZSh2KTtpZihlLmlzVW5wYXJzZWROb2RlKHYpKXtlLkRlYnVnLmFzc2VydElzRGVmaW5lZCh2LnBhcmVudCxcIlVucGFyc2VkTm9kZXMgbXVzdCBoYXZlIHBhcmVudCBwb2ludGVyc1wiKTt2YXIgemk9TGwodi5wYXJlbnQpO3ppJiZiZSYmYmUuYXBwZW5kU291cmNlTWFwKEFlLmdldExpbmUoKSxBZS5nZXRDb2x1bW4oKSx6aSx2LnBhcmVudC5zb3VyY2VNYXBQYXRoLHYucGFyZW50LmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHYucG9zKSx2LnBhcmVudC5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbih2LmVuZCkpfWVsc2V7dmFyIFNhPWZpLnNvdXJjZXx8R2U7di5raW5kIT09MzQ5JiYoc3ImMTYpPT09MCYmZmkucG9zPj0wJiZHZihmaS5zb3VyY2V8fEdlLFh1KFNhLGZpLnBvcykpLHNyJjY0JiYobHI9ITApfX1mdW5jdGlvbiBCcCh2KXt2YXIgc3I9ZS5nZXRFbWl0RmxhZ3ModiksZmk9ZS5nZXRTb3VyY2VNYXBSYW5nZSh2KTtlLmlzVW5wYXJzZWROb2RlKHYpfHwoc3ImNjQmJihscj0hMSksdi5raW5kIT09MzQ5JiYoc3ImMzIpPT09MCYmZmkuZW5kPj0wJiZHZihmaS5zb3VyY2V8fEdlLGZpLmVuZCkpfWZ1bmN0aW9uIFh1KHYsc3Ipe3JldHVybiB2LnNraXBUcml2aWE/di5za2lwVHJpdmlhKHNyKTplLnNraXBUcml2aWEodi50ZXh0LHNyKX1mdW5jdGlvbiBYYyh2KXtpZighKGxyfHxlLnBvc2l0aW9uSXNTeW50aGVzaXplZCh2KXx8eXUoR2UpKSl7dmFyIHNyPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oR2UsdiksZmk9c3IubGluZSx6aT1zci5jaGFyYWN0ZXI7YmUuYWRkTWFwcGluZyhBZS5nZXRMaW5lKCksQWUuZ2V0Q29sdW1uKCksdXIsZmksemksdm9pZCAwKX19ZnVuY3Rpb24gR2Yodixzcil7aWYodiE9PUdlKXt2YXIgZmk9R2Usemk9dXI7d3UodiksWGMoc3IpLFZfKGZpLHppKX1lbHNlIFhjKHNyKX1mdW5jdGlvbiBvZih2LHNyLGZpLHppLFNhKXtpZihscnx8diYmZS5pc0luSnNvbkZpbGUodikpcmV0dXJuIFNhKHNyLGZpLHppKTt2YXIgZGE9diYmdi5lbWl0Tm9kZSxIYT1kYSYmZGEuZmxhZ3N8fDAsdGE9ZGEmJmRhLnRva2VuU291cmNlTWFwUmFuZ2VzJiZkYS50b2tlblNvdXJjZU1hcFJhbmdlc1tzcl0sbm49dGEmJnRhLnNvdXJjZXx8R2U7cmV0dXJuIHppPVh1KG5uLHRhP3RhLnBvczp6aSksKEhhJjEyOCk9PT0wJiZ6aT49MCYmR2Yobm4semkpLHppPVNhKHNyLGZpLHppKSx0YSYmKHppPXRhLmVuZCksKEhhJjI1Nik9PT0wJiZ6aT49MCYmR2Yobm4semkpLHppfWZ1bmN0aW9uIHd1KHYpe2lmKCFscil7aWYoR2U9dix2PT09eXIpe3VyPUlyO3JldHVybn15dSh2KXx8KHVyPWJlLmFkZFNvdXJjZSh2LmZpbGVOYW1lKSxrLmlubGluZVNvdXJjZXMmJmJlLnNldFNvdXJjZUNvbnRlbnQodXIsdi50ZXh0KSx5cj12LElyPXVyKX19ZnVuY3Rpb24gVl8odixzcil7R2U9dix1cj1zcn1mdW5jdGlvbiB5dSh2KXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXModi5maWxlTmFtZSxcIi5qc29uXCIpfX1lLmNyZWF0ZVByaW50ZXI9RjtmdW5jdGlvbiB4KCl7dmFyIGs9W107cmV0dXJuIGtbMTAyNF09W1wie1wiLFwifVwiXSxrWzIwNDhdPVtcIihcIixcIilcIl0sa1s0MDk2XT1bXCI8XCIsXCI+XCJdLGtbODE5Ml09W1wiW1wiLFwiXVwiXSxrfWZ1bmN0aW9uIFgoayl7cmV0dXJuIGFbayYxNTM2MF1bMF19ZnVuY3Rpb24gJChrKXtyZXR1cm4gYVtrJjE1MzYwXVsxXX12YXIgQTsoZnVuY3Rpb24oayl7a1trLkF1dG89MF09XCJBdXRvXCIsa1trLkNvdW50TWFzaz0yNjg0MzU0NTVdPVwiQ291bnRNYXNrXCIsa1trLl9pPTI2ODQzNTQ1Nl09XCJfaVwifSkoQXx8KEE9e30pKTtmdW5jdGlvbiB5KGssWSxVLGope1koayl9ZnVuY3Rpb24gVihrLFksVSxqKXtZKGssVS5zZWxlY3QoaikpfWZ1bmN0aW9uIEwoayxZLFUsail7WShrLFUpfWZ1bmN0aW9uIFAoayxZKXtyZXR1cm4gay5sZW5ndGg9PT0xP3k6dHlwZW9mIFk9PVwib2JqZWN0XCI/VjpMfX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoYixzZSxKKXtpZighYi5nZXREaXJlY3Rvcmllc3x8IWIucmVhZERpcmVjdG9yeSlyZXR1cm47dmFyIGllPW5ldyBlLk1hcCxSPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoSik7cmV0dXJue3VzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6SixmaWxlRXhpc3RzOnkscmVhZEZpbGU6ZnVuY3Rpb24obCxkKXtyZXR1cm4gYi5yZWFkRmlsZShsLGQpfSxkaXJlY3RvcnlFeGlzdHM6Yi5kaXJlY3RvcnlFeGlzdHMmJlYsZ2V0RGlyZWN0b3JpZXM6UCxyZWFkRGlyZWN0b3J5OmssY3JlYXRlRGlyZWN0b3J5OmIuY3JlYXRlRGlyZWN0b3J5JiZMLHdyaXRlRmlsZTpiLndyaXRlRmlsZSYmQSxhZGRPckRlbGV0ZUZpbGVPckRpcmVjdG9yeTpVLGFkZE9yRGVsZXRlRmlsZTpqLGNsZWFyQ2FjaGU6SSxyZWFscGF0aDpiLnJlYWxwYXRoJiZZfTtmdW5jdGlvbiBxKGwpe3JldHVybiBlLnRvUGF0aChsLHNlLFIpfWZ1bmN0aW9uIE8obCl7cmV0dXJuIGllLmdldChlLmVuc3VyZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKGwpKX1mdW5jdGlvbiB2ZShsKXtyZXR1cm4gTyhlLmdldERpcmVjdG9yeVBhdGgobCkpfWZ1bmN0aW9uIGVlKGwpe3JldHVybiBlLmdldEJhc2VGaWxlTmFtZShlLm5vcm1hbGl6ZVBhdGgobCkpfWZ1bmN0aW9uIGhlKGwsZCl7dmFyIEQ7aWYoIWIucmVhbHBhdGh8fGUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IocShiLnJlYWxwYXRoKGwpKSk9PT1kKXt2YXIgZmU9e2ZpbGVzOmUubWFwKGIucmVhZERpcmVjdG9yeShsLHZvaWQgMCx2b2lkIDAsW1wiKi4qXCJdKSxlZSl8fFtdLGRpcmVjdG9yaWVzOmIuZ2V0RGlyZWN0b3JpZXMobCl8fFtdfTtyZXR1cm4gaWUuc2V0KGUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoZCksZmUpLGZlfWlmKCEoKEQ9Yi5kaXJlY3RvcnlFeGlzdHMpPT09bnVsbHx8RD09PXZvaWQgMCkmJkQuY2FsbChiLGwpKXJldHVybiBpZS5zZXQoZCwhMSksITF9ZnVuY3Rpb24gRihsLGQpe2Q9ZS5lbnN1cmVUcmFpbGluZ0RpcmVjdG9yeVNlcGFyYXRvcihkKTt2YXIgRD1PKGQpO2lmKEQpcmV0dXJuIEQ7dHJ5e3JldHVybiBoZShsLGQpfWNhdGNoe2UuRGVidWcuYXNzZXJ0KCFpZS5oYXMoZS5lbnN1cmVUcmFpbGluZ0RpcmVjdG9yeVNlcGFyYXRvcihkKSkpO3JldHVybn19ZnVuY3Rpb24geChsLGQpe3JldHVybiBSKGwpPT09UihkKX1mdW5jdGlvbiBYKGwsZCl7cmV0dXJuIGUuc29tZShsLGZ1bmN0aW9uKEQpe3JldHVybiB4KEQsZCl9KX1mdW5jdGlvbiAkKGwsZCxEKXtpZihYKGwsZCkpe2lmKCFEKXJldHVybiBlLmZpbHRlck11dGF0ZShsLGZ1bmN0aW9uKGZlKXtyZXR1cm4heChmZSxkKX0pfWVsc2UgaWYoRClyZXR1cm4gbC5wdXNoKGQpfWZ1bmN0aW9uIEEobCxkLEQpe3ZhciBmZT1xKGwpLGc9dmUoZmUpO3JldHVybiBnJiZIKGcsZWUobCksITApLGIud3JpdGVGaWxlKGwsZCxEKX1mdW5jdGlvbiB5KGwpe3ZhciBkPXEobCksRD12ZShkKTtyZXR1cm4gRCYmWChELmZpbGVzLGVlKGwpKXx8Yi5maWxlRXhpc3RzKGwpfWZ1bmN0aW9uIFYobCl7dmFyIGQ9cShsKTtyZXR1cm4gaWUuaGFzKGUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoZCkpfHxiLmRpcmVjdG9yeUV4aXN0cyhsKX1mdW5jdGlvbiBMKGwpe3ZhciBkPXEobCksRD12ZShkKSxmZT1lZShsKTtEJiYkKEQuZGlyZWN0b3JpZXMsZmUsITApLGIuY3JlYXRlRGlyZWN0b3J5KGwpfWZ1bmN0aW9uIFAobCl7dmFyIGQ9cShsKSxEPUYobCxkKTtyZXR1cm4gRD9ELmRpcmVjdG9yaWVzLnNsaWNlKCk6Yi5nZXREaXJlY3RvcmllcyhsKX1mdW5jdGlvbiBrKGwsZCxELGZlLGcpe3ZhciBuZT1xKGwpLHVlPUYobCxuZSksV2U7aWYodWUhPT12b2lkIDApcmV0dXJuIGUubWF0Y2hGaWxlcyhsLGQsRCxmZSxKLHNlLGcsRmUsWSk7cmV0dXJuIGIucmVhZERpcmVjdG9yeShsLGQsRCxmZSxnKTtmdW5jdGlvbiBGZShCZSl7dmFyIGdlPXEoQmUpO2lmKGdlPT09bmUpcmV0dXJuIHVlfHxaKEJlLGdlKTt2YXIgUmU9RihCZSxnZSk7cmV0dXJuIFJlIT09dm9pZCAwP1JlfHxaKEJlLGdlKTplLmVtcHR5RmlsZVN5c3RlbUVudHJpZXN9ZnVuY3Rpb24gWihCZSxnZSl7aWYoV2UmJmdlPT09bmUpcmV0dXJuIFdlO3ZhciBSZT17ZmlsZXM6ZS5tYXAoYi5yZWFkRGlyZWN0b3J5KEJlLHZvaWQgMCx2b2lkIDAsW1wiKi4qXCJdKSxlZSl8fGUuZW1wdHlBcnJheSxkaXJlY3RvcmllczpiLmdldERpcmVjdG9yaWVzKEJlKXx8ZS5lbXB0eUFycmF5fTtyZXR1cm4gZ2U9PT1uZSYmKFdlPVJlKSxSZX19ZnVuY3Rpb24gWShsKXtyZXR1cm4gYi5yZWFscGF0aD9iLnJlYWxwYXRoKGwpOmx9ZnVuY3Rpb24gVShsLGQpe3ZhciBEPU8oZCk7aWYoRCE9PXZvaWQgMCl7SSgpO3JldHVybn12YXIgZmU9dmUoZCk7aWYoISFmZSl7aWYoIWIuZGlyZWN0b3J5RXhpc3RzKXtJKCk7cmV0dXJufXZhciBnPWVlKGwpLG5lPXtmaWxlRXhpc3RzOmIuZmlsZUV4aXN0cyhkKSxkaXJlY3RvcnlFeGlzdHM6Yi5kaXJlY3RvcnlFeGlzdHMoZCl9O3JldHVybiBuZS5kaXJlY3RvcnlFeGlzdHN8fFgoZmUuZGlyZWN0b3JpZXMsZyk/SSgpOkgoZmUsZyxuZS5maWxlRXhpc3RzKSxuZX19ZnVuY3Rpb24gaihsLGQsRCl7aWYoRCE9PWUuRmlsZVdhdGNoZXJFdmVudEtpbmQuQ2hhbmdlZCl7dmFyIGZlPXZlKGQpO2ZlJiZIKGZlLGVlKGwpLEQ9PT1lLkZpbGVXYXRjaGVyRXZlbnRLaW5kLkNyZWF0ZWQpfX1mdW5jdGlvbiBIKGwsZCxEKXskKGwuZmlsZXMsZCxEKX1mdW5jdGlvbiBJKCl7aWUuY2xlYXIoKX19ZS5jcmVhdGVDYWNoZWREaXJlY3RvcnlTdHJ1Y3R1cmVIb3N0PWE7dmFyIEM7KGZ1bmN0aW9uKGIpe2JbYi5Ob25lPTBdPVwiTm9uZVwiLGJbYi5QYXJ0aWFsPTFdPVwiUGFydGlhbFwiLGJbYi5GdWxsPTJdPVwiRnVsbFwifSkoQz1lLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWx8fChlLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWw9e30pKTtmdW5jdGlvbiB3KGIsc2UsSixpZSxSKXt2YXIgcSxPPWUuYXJyYXlUb01hcCgoKHE9c2U9PW51bGw/dm9pZCAwOnNlLmNvbmZpZ0ZpbGUpPT09bnVsbHx8cT09PXZvaWQgMD92b2lkIDA6cS5leHRlbmRlZFNvdXJjZUZpbGVzKXx8ZS5lbXB0eUFycmF5LFIpO0ouZm9yRWFjaChmdW5jdGlvbih2ZSxlZSl7Ty5oYXMoZWUpfHwodmUucHJvamVjdHMuZGVsZXRlKGIpLHZlLmNsb3NlKCkpfSksTy5mb3JFYWNoKGZ1bmN0aW9uKHZlLGVlKXt2YXIgaGU9Si5nZXQoZWUpO2hlP2hlLnByb2plY3RzLmFkZChiKTpKLnNldChlZSx7cHJvamVjdHM6bmV3IGUuU2V0KFtiXSksd2F0Y2hlcjppZSh2ZSxlZSksY2xvc2U6ZnVuY3Rpb24oKXt2YXIgRj1KLmdldChlZSk7IUZ8fEYucHJvamVjdHMuc2l6ZSE9PTB8fChGLndhdGNoZXIuY2xvc2UoKSxKLmRlbGV0ZShlZSkpfX0pfSl9ZS51cGRhdGVTaGFyZWRFeHRlbmRlZENvbmZpZ0ZpbGVXYXRjaGVyPXc7ZnVuY3Rpb24gQihiLHNlKXtzZS5mb3JFYWNoKGZ1bmN0aW9uKEope0oucHJvamVjdHMuZGVsZXRlKGIpJiZKLmNsb3NlKCl9KX1lLmNsZWFyU2hhcmVkRXh0ZW5kZWRDb25maWdGaWxlV2F0Y2hlcj1CO2Z1bmN0aW9uIEUoYixzZSxKKXshYi5kZWxldGUoc2UpfHxiLmZvckVhY2goZnVuY3Rpb24oaWUsUil7dmFyIHEsTz1pZS5leHRlbmRlZFJlc3VsdDshKChxPU8uZXh0ZW5kZWRTb3VyY2VGaWxlcyk9PT1udWxsfHxxPT09dm9pZCAwKSYmcS5zb21lKGZ1bmN0aW9uKHZlKXtyZXR1cm4gSih2ZSk9PT1zZX0pJiZFKGIsUixKKX0pfWUuY2xlYW5FeHRlbmRlZENvbmZpZ0NhY2hlPUU7ZnVuY3Rpb24gUShiLHNlLEope3ZhciBpZT1uZXcgZS5NYXAoYik7ZS5tdXRhdGVNYXAoc2UsaWUse2NyZWF0ZU5ld1ZhbHVlOkosb25EZWxldGVWYWx1ZTplLmNsb3NlRmlsZVdhdGNoZXJ9KX1lLnVwZGF0ZVBhY2thZ2VKc29uV2F0Y2g9UTtmdW5jdGlvbiBsZShiLHNlLEope3ZhciBpZT1iLmdldE1pc3NpbmdGaWxlUGF0aHMoKSxSPWUuYXJyYXlUb01hcChpZSxlLmlkZW50aXR5LGUucmV0dXJuVHJ1ZSk7ZS5tdXRhdGVNYXAoc2UsUix7Y3JlYXRlTmV3VmFsdWU6SixvbkRlbGV0ZVZhbHVlOmUuY2xvc2VGaWxlV2F0Y2hlcn0pfWUudXBkYXRlTWlzc2luZ0ZpbGVQYXRoc1dhdGNoPWxlO2Z1bmN0aW9uIE4oYixzZSxKKXtlLm11dGF0ZU1hcChiLHNlLHtjcmVhdGVOZXdWYWx1ZTppZSxvbkRlbGV0ZVZhbHVlOkssb25FeGlzdGluZ1ZhbHVlOlJ9KTtmdW5jdGlvbiBpZShxLE8pe3JldHVybnt3YXRjaGVyOkoocSxPKSxmbGFnczpPfX1mdW5jdGlvbiBSKHEsTyx2ZSl7cS5mbGFncyE9PU8mJihxLndhdGNoZXIuY2xvc2UoKSxiLnNldCh2ZSxpZSh2ZSxPKSkpfX1lLnVwZGF0ZVdhdGNoaW5nV2lsZGNhcmREaXJlY3Rvcmllcz1OO2Z1bmN0aW9uIHAoYil7dmFyIHNlPWIud2F0Y2hlZERpclBhdGgsSj1iLmZpbGVPckRpcmVjdG9yeSxpZT1iLmZpbGVPckRpcmVjdG9yeVBhdGgsUj1iLmNvbmZpZ0ZpbGVOYW1lLHE9Yi5vcHRpb25zLE89Yi5wcm9ncmFtLHZlPWIuZXh0cmFGaWxlRXh0ZW5zaW9ucyxlZT1iLmN1cnJlbnREaXJlY3RvcnksaGU9Yi51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzLEY9Yi53cml0ZUxvZyx4PWIudG9QYXRoLFg9ZS5yZW1vdmVJZ25vcmVkUGF0aChpZSk7aWYoIVgpcmV0dXJuIEYoXCJQcm9qZWN0OiBcIi5jb25jYXQoUixcIiBEZXRlY3RlZCBpZ25vcmVkIHBhdGg6IFwiKS5jb25jYXQoSikpLCEwO2lmKGllPVgsaWU9PT1zZSlyZXR1cm4hMTtpZihlLmhhc0V4dGVuc2lvbihpZSkmJiFlLmlzU3VwcG9ydGVkU291cmNlRmlsZU5hbWUoSixxLHZlKSlyZXR1cm4gRihcIlByb2plY3Q6IFwiLmNvbmNhdChSLFwiIERldGVjdGVkIGZpbGUgYWRkL3JlbW92ZSBvZiBub24gc3VwcG9ydGVkIGV4dGVuc2lvbjogXCIpLmNvbmNhdChKKSksITA7aWYoZS5pc0V4Y2x1ZGVkRmlsZShKLHEuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MsZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGUuZ2V0RGlyZWN0b3J5UGF0aChSKSxlZSksaGUsZWUpKXJldHVybiBGKFwiUHJvamVjdDogXCIuY29uY2F0KFIsXCIgRGV0ZWN0ZWQgZXhjbHVkZWQgZmlsZTogXCIpLmNvbmNhdChKKSksITA7aWYoIU98fGUub3V0RmlsZShxKXx8cS5vdXREaXIpcmV0dXJuITE7aWYoZS5pc0RlY2xhcmF0aW9uRmlsZU5hbWUoaWUpKXtpZihxLmRlY2xhcmF0aW9uRGlyKXJldHVybiExfWVsc2UgaWYoIWUuZmlsZUV4dGVuc2lvbklzT25lT2YoaWUsZS5zdXBwb3J0ZWRKU0V4dGVuc2lvbnNGbGF0KSlyZXR1cm4hMTt2YXIgJD1lLnJlbW92ZUZpbGVFeHRlbnNpb24oaWUpLEE9ZS5pc0FycmF5KE8pP3ZvaWQgMDptKE8pP08uZ2V0UHJvZ3JhbU9yVW5kZWZpbmVkKCk6Tyx5PSFBJiYhZS5pc0FycmF5KE8pP086dm9pZCAwO2lmKFYoJCtcIi50c1wiKXx8VigkK1wiLnRzeFwiKSlyZXR1cm4gRihcIlByb2plY3Q6IFwiLmNvbmNhdChSLFwiIERldGVjdGVkIG91dHB1dCBmaWxlOiBcIikuY29uY2F0KEopKSwhMDtyZXR1cm4hMTtmdW5jdGlvbiBWKEwpe3JldHVybiBBPyEhQS5nZXRTb3VyY2VGaWxlQnlQYXRoKEwpOnk/eS5nZXRTdGF0ZSgpLmZpbGVJbmZvcy5oYXMoTCk6ISFlLmZpbmQoTyxmdW5jdGlvbihQKXtyZXR1cm4geChQKT09PUx9KX19ZS5pc0lnbm9yZWRGaWxlRnJvbVdpbGRDYXJkV2F0Y2hpbmc9cDtmdW5jdGlvbiBtKGIpe3JldHVybiEhYi5nZXRTdGF0ZX1mdW5jdGlvbiBHKGIsc2Upe3JldHVybiBiP2IuaXNFbWl0dGVkRmlsZShzZSk6ITF9ZS5pc0VtaXR0ZWRGaWxlT2ZQcm9ncmFtPUc7dmFyIG9lOyhmdW5jdGlvbihiKXtiW2IuTm9uZT0wXT1cIk5vbmVcIixiW2IuVHJpZ2dlck9ubHk9MV09XCJUcmlnZ2VyT25seVwiLGJbYi5WZXJib3NlPTJdPVwiVmVyYm9zZVwifSkob2U9ZS5XYXRjaExvZ0xldmVsfHwoZS5XYXRjaExvZ0xldmVsPXt9KSk7ZnVuY3Rpb24gZihiLHNlLEosaWUpe2Uuc2V0U3lzTG9nKHNlPT09b2UuVmVyYm9zZT9KOmUubm9vcCk7dmFyIFI9e3dhdGNoRmlsZTpmdW5jdGlvbih5LFYsTCxQKXtyZXR1cm4gYi53YXRjaEZpbGUoeSxWLEwsUCl9LHdhdGNoRGlyZWN0b3J5OmZ1bmN0aW9uKHksVixMLFApe3JldHVybiBiLndhdGNoRGlyZWN0b3J5KHksViwoTCYxKSE9PTAsUCl9fSxxPXNlIT09b2UuTm9uZT97d2F0Y2hGaWxlOiQoXCJ3YXRjaEZpbGVcIiksd2F0Y2hEaXJlY3Rvcnk6JChcIndhdGNoRGlyZWN0b3J5XCIpfTp2b2lkIDAsTz1zZT09PW9lLlZlcmJvc2U/e3dhdGNoRmlsZTp4LHdhdGNoRGlyZWN0b3J5Olh9OnF8fFIsdmU9c2U9PT1vZS5WZXJib3NlP0Y6ZS5yZXR1cm5Ob29wRmlsZVdhdGNoZXI7cmV0dXJue3dhdGNoRmlsZTplZShcIndhdGNoRmlsZVwiKSx3YXRjaERpcmVjdG9yeTplZShcIndhdGNoRGlyZWN0b3J5XCIpfTtmdW5jdGlvbiBlZSh5KXtyZXR1cm4gZnVuY3Rpb24oVixMLFAsayxZLFUpe3ZhciBqO3JldHVybiBlLm1hdGNoZXNFeGNsdWRlKFYseT09PVwid2F0Y2hGaWxlXCI/az09bnVsbD92b2lkIDA6ay5leGNsdWRlRmlsZXM6az09bnVsbD92b2lkIDA6ay5leGNsdWRlRGlyZWN0b3JpZXMsaGUoKSwoKGo9Yi5nZXRDdXJyZW50RGlyZWN0b3J5KT09PW51bGx8fGo9PT12b2lkIDA/dm9pZCAwOmouY2FsbChiKSl8fFwiXCIpP3ZlKFYsUCxrLFksVSk6T1t5XS5jYWxsKHZvaWQgMCxWLEwsUCxrLFksVSl9fWZ1bmN0aW9uIGhlKCl7cmV0dXJuIHR5cGVvZiBiLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM9PVwiYm9vbGVhblwiP2IudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczpiLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKX1mdW5jdGlvbiBGKHksVixMLFAsayl7cmV0dXJuIEooXCJFeGNsdWRlV2F0Y2hlcjo6IEFkZGVkOjogXCIuY29uY2F0KEEoeSxWLEwsUCxrLGllKSkpLHtjbG9zZTpmdW5jdGlvbigpe3JldHVybiBKKFwiRXhjbHVkZVdhdGNoZXI6OiBDbG9zZTo6IFwiLmNvbmNhdChBKHksVixMLFAsayxpZSkpKX19fWZ1bmN0aW9uIHgoeSxWLEwsUCxrLFkpe0ooXCJGaWxlV2F0Y2hlcjo6IEFkZGVkOjogXCIuY29uY2F0KEEoeSxMLFAsayxZLGllKSkpO3ZhciBVPXEud2F0Y2hGaWxlKHksVixMLFAsayxZKTtyZXR1cm57Y2xvc2U6ZnVuY3Rpb24oKXtKKFwiRmlsZVdhdGNoZXI6OiBDbG9zZTo6IFwiLmNvbmNhdChBKHksTCxQLGssWSxpZSkpKSxVLmNsb3NlKCl9fX1mdW5jdGlvbiBYKHksVixMLFAsayxZKXt2YXIgVT1cIkRpcmVjdG9yeVdhdGNoZXI6OiBBZGRlZDo6IFwiLmNvbmNhdChBKHksTCxQLGssWSxpZSkpO0ooVSk7dmFyIGo9ZS50aW1lc3RhbXAoKSxIPXEud2F0Y2hEaXJlY3RvcnkoeSxWLEwsUCxrLFkpLEk9ZS50aW1lc3RhbXAoKS1qO3JldHVybiBKKFwiRWxhcHNlZDo6IFwiLmNvbmNhdChJLFwibXMgXCIpLmNvbmNhdChVKSkse2Nsb3NlOmZ1bmN0aW9uKCl7dmFyIGw9XCJEaXJlY3RvcnlXYXRjaGVyOjogQ2xvc2U6OiBcIi5jb25jYXQoQSh5LEwsUCxrLFksaWUpKTtKKGwpO3ZhciBkPWUudGltZXN0YW1wKCk7SC5jbG9zZSgpO3ZhciBEPWUudGltZXN0YW1wKCktZDtKKFwiRWxhcHNlZDo6IFwiLmNvbmNhdChELFwibXMgXCIpLmNvbmNhdChsKSl9fX1mdW5jdGlvbiAkKHkpe3JldHVybiBmdW5jdGlvbihWLEwsUCxrLFksVSl7cmV0dXJuIFJbeV0uY2FsbCh2b2lkIDAsVixmdW5jdGlvbigpe2Zvcih2YXIgaj1bXSxIPTA7SDxhcmd1bWVudHMubGVuZ3RoO0grKylqW0hdPWFyZ3VtZW50c1tIXTt2YXIgST1cIlwiLmNvbmNhdCh5PT09XCJ3YXRjaEZpbGVcIj9cIkZpbGVXYXRjaGVyXCI6XCJEaXJlY3RvcnlXYXRjaGVyXCIsXCI6OiBUcmlnZ2VyZWQgd2l0aCBcIikuY29uY2F0KGpbMF0sXCIgXCIpLmNvbmNhdChqWzFdIT09dm9pZCAwP2pbMV06XCJcIixcIjo6IFwiKS5jb25jYXQoQShWLFAsayxZLFUsaWUpKTtKKEkpO3ZhciBsPWUudGltZXN0YW1wKCk7TC5jYWxsLmFwcGx5KEwsVmUoW3ZvaWQgMF0saiwhMSkpO3ZhciBkPWUudGltZXN0YW1wKCktbDtKKFwiRWxhcHNlZDo6IFwiLmNvbmNhdChkLFwibXMgXCIpLmNvbmNhdChJKSl9LFAsayxZLFUpfX1mdW5jdGlvbiBBKHksVixMLFAsayxZKXtyZXR1cm5cIldhdGNoSW5mbzogXCIuY29uY2F0KHksXCIgXCIpLmNvbmNhdChWLFwiIFwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkoTCksXCIgXCIpLmNvbmNhdChZP1koUCxrKTprPT09dm9pZCAwP1A6XCJcIi5jb25jYXQoUCxcIiBcIikuY29uY2F0KGspKX19ZS5nZXRXYXRjaEZhY3Rvcnk9ZjtmdW5jdGlvbiBUKGIpe3ZhciBzZT1iPT1udWxsP3ZvaWQgMDpiLmZhbGxiYWNrUG9sbGluZztyZXR1cm57d2F0Y2hGaWxlOnNlIT09dm9pZCAwP3NlOmUuV2F0Y2hGaWxlS2luZC5Qcmlvcml0eVBvbGxpbmdJbnRlcnZhbH19ZS5nZXRGYWxsYmFja09wdGlvbnM9VDtmdW5jdGlvbiBLKGIpe2Iud2F0Y2hlci5jbG9zZSgpfWUuY2xvc2VGaWxlV2F0Y2hlck9mPUt9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKFosQmUsZ2Upe3JldHVybiBnZT09PXZvaWQgMCYmKGdlPVwidHNjb25maWcuanNvblwiKSxlLmZvckVhY2hBbmNlc3RvckRpcmVjdG9yeShaLGZ1bmN0aW9uKFJlKXt2YXIgemU9ZS5jb21iaW5lUGF0aHMoUmUsZ2UpO3JldHVybiBCZSh6ZSk/emU6dm9pZCAwfSl9ZS5maW5kQ29uZmlnRmlsZT1hO2Z1bmN0aW9uIEMoWixCZSl7dmFyIGdlPWUuZ2V0RGlyZWN0b3J5UGF0aChCZSksUmU9ZS5pc1Jvb3RlZERpc2tQYXRoKFopP1o6ZS5jb21iaW5lUGF0aHMoZ2UsWik7cmV0dXJuIGUubm9ybWFsaXplUGF0aChSZSl9ZS5yZXNvbHZlVHJpcGxlc2xhc2hSZWZlcmVuY2U9QztmdW5jdGlvbiB3KFosQmUsZ2Upe3ZhciBSZSx6ZT1lLmZvckVhY2goWixmdW5jdGlvbihFZSl7dmFyIEhlPWUuZ2V0Tm9ybWFsaXplZFBhdGhDb21wb25lbnRzKEVlLEJlKTtpZihIZS5wb3AoKSwhUmUpe1JlPUhlO3JldHVybn1mb3IodmFyIHJyPU1hdGgubWluKFJlLmxlbmd0aCxIZS5sZW5ndGgpLEllPTA7SWU8cnI7SWUrKylpZihnZShSZVtJZV0pIT09Z2UoSGVbSWVdKSl7aWYoSWU9PT0wKXJldHVybiEwO1JlLmxlbmd0aD1JZTticmVha31IZS5sZW5ndGg8UmUubGVuZ3RoJiYoUmUubGVuZ3RoPUhlLmxlbmd0aCl9KTtyZXR1cm4gemU/XCJcIjpSZT9lLmdldFBhdGhGcm9tUGF0aENvbXBvbmVudHMoUmUpOkJlfWUuY29tcHV0ZUNvbW1vblNvdXJjZURpcmVjdG9yeU9mRmlsZW5hbWVzPXc7ZnVuY3Rpb24gQihaLEJlKXtyZXR1cm4gRShaLEJlKX1lLmNyZWF0ZUNvbXBpbGVySG9zdD1CO2Z1bmN0aW9uIEUoWixCZSxnZSl7Z2U9PT12b2lkIDAmJihnZT1lLnN5cyk7dmFyIFJlPW5ldyBlLk1hcCx6ZT1lLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKGdlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMpLEVlPWUubWF5YmVCaW5kKGdlLGdlLmNyZWF0ZUhhc2gpfHxlLmdlbmVyYXRlRGpiMkhhc2g7ZnVuY3Rpb24gSGUoaXIsQ3IsWWUpe3ZhciBCcjt0cnl7ZS5wZXJmb3JtYW5jZS5tYXJrKFwiYmVmb3JlSU9SZWFkXCIpLEJyPWVyLnJlYWRGaWxlKGlyKSxlLnBlcmZvcm1hbmNlLm1hcmsoXCJhZnRlcklPUmVhZFwiKSxlLnBlcmZvcm1hbmNlLm1lYXN1cmUoXCJJL08gUmVhZFwiLFwiYmVmb3JlSU9SZWFkXCIsXCJhZnRlcklPUmVhZFwiKX1jYXRjaChFcil7WWUmJlllKEVyLm1lc3NhZ2UpLEJyPVwiXCJ9cmV0dXJuIEJyIT09dm9pZCAwP2UuY3JlYXRlU291cmNlRmlsZShpcixCcixDcixCZSk6dm9pZCAwfWZ1bmN0aW9uIHJyKGlyKXtyZXR1cm4gUmUuaGFzKGlyKT8hMDooZXIuZGlyZWN0b3J5RXhpc3RzfHxnZS5kaXJlY3RvcnlFeGlzdHMpKGlyKT8oUmUuc2V0KGlyLCEwKSwhMCk6ITF9ZnVuY3Rpb24gSWUoaXIsQ3IsWWUsQnIpe3RyeXtlLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVJT1dyaXRlXCIpLGUud3JpdGVGaWxlRW5zdXJpbmdEaXJlY3RvcmllcyhpcixDcixZZSxmdW5jdGlvbihFcixOZSxuKXtyZXR1cm4gd2UoRXIsTmUsbil9LGZ1bmN0aW9uKEVyKXtyZXR1cm4oZXIuY3JlYXRlRGlyZWN0b3J5fHxnZS5jcmVhdGVEaXJlY3RvcnkpKEVyKX0sZnVuY3Rpb24oRXIpe3JldHVybiBycihFcil9KSxlLnBlcmZvcm1hbmNlLm1hcmsoXCJhZnRlcklPV3JpdGVcIiksZS5wZXJmb3JtYW5jZS5tZWFzdXJlKFwiSS9PIFdyaXRlXCIsXCJiZWZvcmVJT1dyaXRlXCIsXCJhZnRlcklPV3JpdGVcIil9Y2F0Y2goRXIpe0JyJiZCcihFci5tZXNzYWdlKX19dmFyIF9lO2Z1bmN0aW9uIHdlKGlyLENyLFllKXtpZighZS5pc1dhdGNoU2V0KFopfHwhZ2UuZ2V0TW9kaWZpZWRUaW1lKXtnZS53cml0ZUZpbGUoaXIsQ3IsWWUpO3JldHVybn1fZXx8KF9lPW5ldyBlLk1hcCk7dmFyIEJyPUVlKENyKSxFcj1nZS5nZXRNb2RpZmllZFRpbWUoaXIpO2lmKEVyKXt2YXIgTmU9X2UuZ2V0KGlyKTtpZihOZSYmTmUuYnl0ZU9yZGVyTWFyaz09PVllJiZOZS5oYXNoPT09QnImJk5lLm10aW1lLmdldFRpbWUoKT09PUVyLmdldFRpbWUoKSlyZXR1cm59Z2Uud3JpdGVGaWxlKGlyLENyLFllKTt2YXIgbj1nZS5nZXRNb2RpZmllZFRpbWUoaXIpfHxlLm1pc3NpbmdGaWxlTW9kaWZpZWRUaW1lO19lLnNldChpcix7aGFzaDpCcixieXRlT3JkZXJNYXJrOlllLG10aW1lOm59KX1mdW5jdGlvbiBkZSgpe3JldHVybiBlLmdldERpcmVjdG9yeVBhdGgoZS5ub3JtYWxpemVQYXRoKGdlLmdldEV4ZWN1dGluZ0ZpbGVQYXRoKCkpKX12YXIgeWU9ZS5nZXROZXdMaW5lQ2hhcmFjdGVyKFosZnVuY3Rpb24oKXtyZXR1cm4gZ2UubmV3TGluZX0pLEFlPWdlLnJlYWxwYXRoJiZmdW5jdGlvbihpcil7cmV0dXJuIGdlLnJlYWxwYXRoKGlyKX0sZXI9e2dldFNvdXJjZUZpbGU6SGUsZ2V0RGVmYXVsdExpYkxvY2F0aW9uOmRlLGdldERlZmF1bHRMaWJGaWxlTmFtZTpmdW5jdGlvbihpcil7cmV0dXJuIGUuY29tYmluZVBhdGhzKGRlKCksZS5nZXREZWZhdWx0TGliRmlsZU5hbWUoaXIpKX0sd3JpdGVGaWxlOkllLGdldEN1cnJlbnREaXJlY3Rvcnk6ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIGdlLmdldEN1cnJlbnREaXJlY3RvcnkoKX0pLHVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZ2UudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lc30sZ2V0Q2Fub25pY2FsRmlsZU5hbWU6emUsZ2V0TmV3TGluZTpmdW5jdGlvbigpe3JldHVybiB5ZX0sZmlsZUV4aXN0czpmdW5jdGlvbihpcil7cmV0dXJuIGdlLmZpbGVFeGlzdHMoaXIpfSxyZWFkRmlsZTpmdW5jdGlvbihpcil7cmV0dXJuIGdlLnJlYWRGaWxlKGlyKX0sdHJhY2U6ZnVuY3Rpb24oaXIpe3JldHVybiBnZS53cml0ZShpcit5ZSl9LGRpcmVjdG9yeUV4aXN0czpmdW5jdGlvbihpcil7cmV0dXJuIGdlLmRpcmVjdG9yeUV4aXN0cyhpcil9LGdldEVudmlyb25tZW50VmFyaWFibGU6ZnVuY3Rpb24oaXIpe3JldHVybiBnZS5nZXRFbnZpcm9ubWVudFZhcmlhYmxlP2dlLmdldEVudmlyb25tZW50VmFyaWFibGUoaXIpOlwiXCJ9LGdldERpcmVjdG9yaWVzOmZ1bmN0aW9uKGlyKXtyZXR1cm4gZ2UuZ2V0RGlyZWN0b3JpZXMoaXIpfSxyZWFscGF0aDpBZSxyZWFkRGlyZWN0b3J5OmZ1bmN0aW9uKGlyLENyLFllLEJyLEVyKXtyZXR1cm4gZ2UucmVhZERpcmVjdG9yeShpcixDcixZZSxCcixFcil9LGNyZWF0ZURpcmVjdG9yeTpmdW5jdGlvbihpcil7cmV0dXJuIGdlLmNyZWF0ZURpcmVjdG9yeShpcil9LGNyZWF0ZUhhc2g6ZS5tYXliZUJpbmQoZ2UsZ2UuY3JlYXRlSGFzaCl9O3JldHVybiBlcn1lLmNyZWF0ZUNvbXBpbGVySG9zdFdvcmtlcj1FO2Z1bmN0aW9uIFEoWixCZSxnZSl7dmFyIFJlPVoucmVhZEZpbGUsemU9Wi5maWxlRXhpc3RzLEVlPVouZGlyZWN0b3J5RXhpc3RzLEhlPVouY3JlYXRlRGlyZWN0b3J5LHJyPVoud3JpdGVGaWxlLEllPW5ldyBlLk1hcCxfZT1uZXcgZS5NYXAsd2U9bmV3IGUuTWFwLGRlPW5ldyBlLk1hcCx5ZT1mdW5jdGlvbihpcil7dmFyIENyPUJlKGlyKSxZZT1JZS5nZXQoQ3IpO3JldHVybiBZZSE9PXZvaWQgMD9ZZSE9PSExP1llOnZvaWQgMDpBZShDcixpcil9LEFlPWZ1bmN0aW9uKGlyLENyKXt2YXIgWWU9UmUuY2FsbChaLENyKTtyZXR1cm4gSWUuc2V0KGlyLFllIT09dm9pZCAwP1llOiExKSxZZX07Wi5yZWFkRmlsZT1mdW5jdGlvbihpcil7dmFyIENyPUJlKGlyKSxZZT1JZS5nZXQoQ3IpO3JldHVybiBZZSE9PXZvaWQgMD9ZZSE9PSExP1llOnZvaWQgMDohZS5maWxlRXh0ZW5zaW9uSXMoaXIsXCIuanNvblwiKSYmIWUuaXNCdWlsZEluZm9GaWxlKGlyKT9SZS5jYWxsKFosaXIpOkFlKENyLGlyKX07dmFyIGVyPWdlP2Z1bmN0aW9uKGlyLENyLFllLEJyKXt2YXIgRXI9QmUoaXIpLE5lPWRlLmdldChFcik7aWYoTmUpcmV0dXJuIE5lO3ZhciBuPWdlKGlyLENyLFllLEJyKTtyZXR1cm4gbiYmKGUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKGlyKXx8ZS5maWxlRXh0ZW5zaW9uSXMoaXIsXCIuanNvblwiKSkmJmRlLnNldChFcixuKSxufTp2b2lkIDA7cmV0dXJuIFouZmlsZUV4aXN0cz1mdW5jdGlvbihpcil7dmFyIENyPUJlKGlyKSxZZT1fZS5nZXQoQ3IpO2lmKFllIT09dm9pZCAwKXJldHVybiBZZTt2YXIgQnI9emUuY2FsbChaLGlyKTtyZXR1cm4gX2Uuc2V0KENyLCEhQnIpLEJyfSxyciYmKFoud3JpdGVGaWxlPWZ1bmN0aW9uKGlyLENyKXtmb3IodmFyIFllPVtdLEJyPTI7QnI8YXJndW1lbnRzLmxlbmd0aDtCcisrKVllW0JyLTJdPWFyZ3VtZW50c1tCcl07dmFyIEVyPUJlKGlyKTtfZS5kZWxldGUoRXIpO3ZhciBOZT1JZS5nZXQoRXIpO2lmKE5lIT09dm9pZCAwJiZOZSE9PUNyKUllLmRlbGV0ZShFciksZGUuZGVsZXRlKEVyKTtlbHNlIGlmKGVyKXt2YXIgbj1kZS5nZXQoRXIpO24mJm4udGV4dCE9PUNyJiZkZS5kZWxldGUoRXIpfXJyLmNhbGwuYXBwbHkocnIsVmUoW1osaXIsQ3JdLFllLCExKSl9KSxFZSYmSGUmJihaLmRpcmVjdG9yeUV4aXN0cz1mdW5jdGlvbihpcil7dmFyIENyPUJlKGlyKSxZZT13ZS5nZXQoQ3IpO2lmKFllIT09dm9pZCAwKXJldHVybiBZZTt2YXIgQnI9RWUuY2FsbChaLGlyKTtyZXR1cm4gd2Uuc2V0KENyLCEhQnIpLEJyfSxaLmNyZWF0ZURpcmVjdG9yeT1mdW5jdGlvbihpcil7dmFyIENyPUJlKGlyKTt3ZS5kZWxldGUoQ3IpLEhlLmNhbGwoWixpcil9KSx7b3JpZ2luYWxSZWFkRmlsZTpSZSxvcmlnaW5hbEZpbGVFeGlzdHM6emUsb3JpZ2luYWxEaXJlY3RvcnlFeGlzdHM6RWUsb3JpZ2luYWxDcmVhdGVEaXJlY3Rvcnk6SGUsb3JpZ2luYWxXcml0ZUZpbGU6cnIsZ2V0U291cmNlRmlsZVdpdGhDYWNoZTplcixyZWFkRmlsZVdpdGhDYWNoZTp5ZX19ZS5jaGFuZ2VDb21waWxlckhvc3RMaWtlVG9Vc2VDYWNoZT1RO2Z1bmN0aW9uIGxlKFosQmUsZ2Upe3ZhciBSZTtyZXR1cm4gUmU9ZS5hZGRSYW5nZShSZSxaLmdldENvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3MoKSksUmU9ZS5hZGRSYW5nZShSZSxaLmdldE9wdGlvbnNEaWFnbm9zdGljcyhnZSkpLFJlPWUuYWRkUmFuZ2UoUmUsWi5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyhCZSxnZSkpLFJlPWUuYWRkUmFuZ2UoUmUsWi5nZXRHbG9iYWxEaWFnbm9zdGljcyhnZSkpLFJlPWUuYWRkUmFuZ2UoUmUsWi5nZXRTZW1hbnRpY0RpYWdub3N0aWNzKEJlLGdlKSksZS5nZXRFbWl0RGVjbGFyYXRpb25zKFouZ2V0Q29tcGlsZXJPcHRpb25zKCkpJiYoUmU9ZS5hZGRSYW5nZShSZSxaLmdldERlY2xhcmF0aW9uRGlhZ25vc3RpY3MoQmUsZ2UpKSksZS5zb3J0QW5kRGVkdXBsaWNhdGVEaWFnbm9zdGljcyhSZXx8ZS5lbXB0eUFycmF5KX1lLmdldFByZUVtaXREaWFnbm9zdGljcz1sZTtmdW5jdGlvbiBOKFosQmUpe2Zvcih2YXIgZ2U9XCJcIixSZT0wLHplPVo7UmU8emUubGVuZ3RoO1JlKyspe3ZhciBFZT16ZVtSZV07Z2UrPXAoRWUsQmUpfXJldHVybiBnZX1lLmZvcm1hdERpYWdub3N0aWNzPU47ZnVuY3Rpb24gcChaLEJlKXt2YXIgZ2U9XCJcIi5jb25jYXQoZS5kaWFnbm9zdGljQ2F0ZWdvcnlOYW1lKFopLFwiIFRTXCIpLmNvbmNhdChaLmNvZGUsXCI6IFwiKS5jb25jYXQoTyhaLm1lc3NhZ2VUZXh0LEJlLmdldE5ld0xpbmUoKSkpLmNvbmNhdChCZS5nZXROZXdMaW5lKCkpO2lmKFouZmlsZSl7dmFyIFJlPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oWi5maWxlLFouc3RhcnQpLHplPVJlLmxpbmUsRWU9UmUuY2hhcmFjdGVyLEhlPVouZmlsZS5maWxlTmFtZSxycj1lLmNvbnZlcnRUb1JlbGF0aXZlUGF0aChIZSxCZS5nZXRDdXJyZW50RGlyZWN0b3J5KCksZnVuY3Rpb24oSWUpe3JldHVybiBCZS5nZXRDYW5vbmljYWxGaWxlTmFtZShJZSl9KTtyZXR1cm5cIlwiLmNvbmNhdChycixcIihcIikuY29uY2F0KHplKzEsXCIsXCIpLmNvbmNhdChFZSsxLFwiKTogXCIpK2dlfXJldHVybiBnZX1lLmZvcm1hdERpYWdub3N0aWM9cDt2YXIgbTsoZnVuY3Rpb24oWil7Wi5HcmV5PVwiXFx4MUJbOTBtXCIsWi5SZWQ9XCJcXHgxQls5MW1cIixaLlllbGxvdz1cIlxceDFCWzkzbVwiLFouQmx1ZT1cIlxceDFCWzk0bVwiLFouQ3lhbj1cIlxceDFCWzk2bVwifSkobT1lLkZvcmVncm91bmRDb2xvckVzY2FwZVNlcXVlbmNlc3x8KGUuRm9yZWdyb3VuZENvbG9yRXNjYXBlU2VxdWVuY2VzPXt9KSk7dmFyIEc9XCJcXHgxQls3bVwiLG9lPVwiIFwiLGY9XCJcXHgxQlswbVwiLFQ9XCIuLi5cIixLPVwiICBcIixiPVwiICAgIFwiO2Z1bmN0aW9uIHNlKFope3N3aXRjaChaKXtjYXNlIGUuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yOnJldHVybiBtLlJlZDtjYXNlIGUuRGlhZ25vc3RpY0NhdGVnb3J5Lldhcm5pbmc6cmV0dXJuIG0uWWVsbG93O2Nhc2UgZS5EaWFnbm9zdGljQ2F0ZWdvcnkuU3VnZ2VzdGlvbjpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiU2hvdWxkIG5ldmVyIGdldCBhbiBJbmZvIGRpYWdub3N0aWMgb24gdGhlIGNvbW1hbmQgbGluZS5cIik7Y2FzZSBlLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlOnJldHVybiBtLkJsdWV9fWZ1bmN0aW9uIEooWixCZSl7cmV0dXJuIEJlK1orZn1lLmZvcm1hdENvbG9yQW5kUmVzZXQ9SjtmdW5jdGlvbiBpZShaLEJlLGdlLFJlLHplLEVlKXt2YXIgSGU9ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihaLEJlKSxycj1IZS5saW5lLEllPUhlLmNoYXJhY3RlcixfZT1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFosQmUrZ2UpLHdlPV9lLmxpbmUsZGU9X2UuY2hhcmFjdGVyLHllPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oWixaLnRleHQubGVuZ3RoKS5saW5lLEFlPXdlLXJyPj00LGVyPSh3ZSsxK1wiXCIpLmxlbmd0aDtBZSYmKGVyPU1hdGgubWF4KFQubGVuZ3RoLGVyKSk7Zm9yKHZhciBpcj1cIlwiLENyPXJyO0NyPD13ZTtDcisrKXtpcis9RWUuZ2V0TmV3TGluZSgpLEFlJiZycisxPENyJiZDcjx3ZS0xJiYoaXIrPVJlK0ooZS5wYWRMZWZ0KFQsZXIpLEcpK29lK0VlLmdldE5ld0xpbmUoKSxDcj13ZS0xKTt2YXIgWWU9ZS5nZXRQb3NpdGlvbk9mTGluZUFuZENoYXJhY3RlcihaLENyLDApLEJyPUNyPHllP2UuZ2V0UG9zaXRpb25PZkxpbmVBbmRDaGFyYWN0ZXIoWixDcisxLDApOloudGV4dC5sZW5ndGgsRXI9Wi50ZXh0LnNsaWNlKFllLEJyKTtpZihFcj1lLnRyaW1TdHJpbmdFbmQoRXIpLEVyPUVyLnJlcGxhY2UoL1xcdC9nLFwiIFwiKSxpcis9UmUrSihlLnBhZExlZnQoQ3IrMStcIlwiLGVyKSxHKStvZSxpcis9RXIrRWUuZ2V0TmV3TGluZSgpLGlyKz1SZStKKGUucGFkTGVmdChcIlwiLGVyKSxHKStvZSxpcis9emUsQ3I9PT1ycil7dmFyIE5lPUNyPT09d2U/ZGU6dm9pZCAwO2lyKz1Fci5zbGljZSgwLEllKS5yZXBsYWNlKC9cXFMvZyxcIiBcIiksaXIrPUVyLnNsaWNlKEllLE5lKS5yZXBsYWNlKC8uL2csXCJ+XCIpfWVsc2UgQ3I9PT13ZT9pcis9RXIuc2xpY2UoMCxkZSkucmVwbGFjZSgvLi9nLFwiflwiKTppcis9RXIucmVwbGFjZSgvLi9nLFwiflwiKTtpcis9Zn1yZXR1cm4gaXJ9ZnVuY3Rpb24gUihaLEJlLGdlLFJlKXtSZT09PXZvaWQgMCYmKFJlPUopO3ZhciB6ZT1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFosQmUpLEVlPXplLmxpbmUsSGU9emUuY2hhcmFjdGVyLHJyPWdlP2UuY29udmVydFRvUmVsYXRpdmVQYXRoKFouZmlsZU5hbWUsZ2UuZ2V0Q3VycmVudERpcmVjdG9yeSgpLGZ1bmN0aW9uKF9lKXtyZXR1cm4gZ2UuZ2V0Q2Fub25pY2FsRmlsZU5hbWUoX2UpfSk6Wi5maWxlTmFtZSxJZT1cIlwiO3JldHVybiBJZSs9UmUocnIsbS5DeWFuKSxJZSs9XCI6XCIsSWUrPVJlKFwiXCIuY29uY2F0KEVlKzEpLG0uWWVsbG93KSxJZSs9XCI6XCIsSWUrPVJlKFwiXCIuY29uY2F0KEhlKzEpLG0uWWVsbG93KSxJZX1lLmZvcm1hdExvY2F0aW9uPVI7ZnVuY3Rpb24gcShaLEJlKXtmb3IodmFyIGdlPVwiXCIsUmU9MCx6ZT1aO1JlPHplLmxlbmd0aDtSZSsrKXt2YXIgRWU9emVbUmVdO2lmKEVlLmZpbGUpe3ZhciBIZT1FZS5maWxlLHJyPUVlLnN0YXJ0O2dlKz1SKEhlLHJyLEJlKSxnZSs9XCIgLSBcIn1pZihnZSs9SihlLmRpYWdub3N0aWNDYXRlZ29yeU5hbWUoRWUpLHNlKEVlLmNhdGVnb3J5KSksZ2UrPUooXCIgVFNcIi5jb25jYXQoRWUuY29kZSxcIjogXCIpLG0uR3JleSksZ2UrPU8oRWUubWVzc2FnZVRleHQsQmUuZ2V0TmV3TGluZSgpKSxFZS5maWxlJiYoZ2UrPUJlLmdldE5ld0xpbmUoKSxnZSs9aWUoRWUuZmlsZSxFZS5zdGFydCxFZS5sZW5ndGgsXCJcIixzZShFZS5jYXRlZ29yeSksQmUpKSxFZS5yZWxhdGVkSW5mb3JtYXRpb24pe2dlKz1CZS5nZXROZXdMaW5lKCk7Zm9yKHZhciBJZT0wLF9lPUVlLnJlbGF0ZWRJbmZvcm1hdGlvbjtJZTxfZS5sZW5ndGg7SWUrKyl7dmFyIHdlPV9lW0llXSxIZT13ZS5maWxlLHJyPXdlLnN0YXJ0LGRlPXdlLmxlbmd0aCx5ZT13ZS5tZXNzYWdlVGV4dDtIZSYmKGdlKz1CZS5nZXROZXdMaW5lKCksZ2UrPUsrUihIZSxycixCZSksZ2UrPWllKEhlLHJyLGRlLGIsbS5DeWFuLEJlKSksZ2UrPUJlLmdldE5ld0xpbmUoKSxnZSs9YitPKHllLEJlLmdldE5ld0xpbmUoKSl9fWdlKz1CZS5nZXROZXdMaW5lKCl9cmV0dXJuIGdlfWUuZm9ybWF0RGlhZ25vc3RpY3NXaXRoQ29sb3JBbmRDb250ZXh0PXE7ZnVuY3Rpb24gTyhaLEJlLGdlKXtpZihnZT09PXZvaWQgMCYmKGdlPTApLGUuaXNTdHJpbmcoWikpcmV0dXJuIFo7aWYoWj09PXZvaWQgMClyZXR1cm5cIlwiO3ZhciBSZT1cIlwiO2lmKGdlKXtSZSs9QmU7Zm9yKHZhciB6ZT0wO3plPGdlO3plKyspUmUrPVwiICBcIn1pZihSZSs9Wi5tZXNzYWdlVGV4dCxnZSsrLFoubmV4dClmb3IodmFyIEVlPTAsSGU9Wi5uZXh0O0VlPEhlLmxlbmd0aDtFZSsrKXt2YXIgcnI9SGVbRWVdO1JlKz1PKHJyLEJlLGdlKX1yZXR1cm4gUmV9ZS5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0PU87ZnVuY3Rpb24gdmUoWixCZSxnZSxSZSx6ZSl7aWYoWi5sZW5ndGg9PT0wKXJldHVybltdO2Zvcih2YXIgRWU9W10sSGU9bmV3IGUuTWFwLHJyPTAsSWU9WjtycjxJZS5sZW5ndGg7cnIrKyl7dmFyIF9lPUllW3JyXSx3ZT12b2lkIDAsZGU9ZWUoX2UsUmUpLHllPWUuaXNTdHJpbmcoX2UpP19lOl9lLmZpbGVOYW1lLnRvTG93ZXJDYXNlKCksQWU9ZGUhPT12b2lkIDA/XCJcIi5jb25jYXQoZGUsXCJ8XCIpLmNvbmNhdCh5ZSk6eWU7SGUuaGFzKEFlKT93ZT1IZS5nZXQoQWUpOkhlLnNldChBZSx3ZT16ZSh5ZSxCZSxnZSxkZSkpLEVlLnB1c2god2UpfXJldHVybiBFZX1lLmxvYWRXaXRoVHlwZURpcmVjdGl2ZUNhY2hlPXZlO2Z1bmN0aW9uIGVlKFosQmUpe3JldHVybihlLmlzU3RyaW5nKFopP0JlOloucmVzb2x1dGlvbk1vZGUpfHxCZX1lLmdldE1vZGVGb3JGaWxlUmVmZXJlbmNlPWVlO2Z1bmN0aW9uIGhlKFosQmUpe2lmKFouaW1wbGllZE5vZGVGb3JtYXQhPT12b2lkIDApcmV0dXJuIHgoWixGZShaLEJlKSl9ZS5nZXRNb2RlRm9yUmVzb2x1dGlvbkF0SW5kZXg9aGU7ZnVuY3Rpb24gRihaKXt2YXIgQmU7cmV0dXJuIGUuaXNFeHBvcnREZWNsYXJhdGlvbihaKT9aLmlzVHlwZU9ubHk6ISEoISgoQmU9Wi5pbXBvcnRDbGF1c2UpPT09bnVsbHx8QmU9PT12b2lkIDApJiZCZS5pc1R5cGVPbmx5KX1lLmlzRXhjbHVzaXZlbHlUeXBlT25seUltcG9ydE9yRXhwb3J0PUY7ZnVuY3Rpb24geChaLEJlKXt2YXIgZ2UsUmU7aWYoWi5pbXBsaWVkTm9kZUZvcm1hdCE9PXZvaWQgMCl7aWYoZS5pc0ltcG9ydERlY2xhcmF0aW9uKEJlLnBhcmVudCl8fGUuaXNFeHBvcnREZWNsYXJhdGlvbihCZS5wYXJlbnQpKXt2YXIgemU9RihCZS5wYXJlbnQpO2lmKHplKXt2YXIgRWU9WChCZS5wYXJlbnQuYXNzZXJ0Q2xhdXNlKTtpZihFZSlyZXR1cm4gRWV9fWlmKEJlLnBhcmVudC5wYXJlbnQmJmUuaXNJbXBvcnRUeXBlTm9kZShCZS5wYXJlbnQucGFyZW50KSl7dmFyIEVlPVgoKGdlPUJlLnBhcmVudC5wYXJlbnQuYXNzZXJ0aW9ucyk9PT1udWxsfHxnZT09PXZvaWQgMD92b2lkIDA6Z2UuYXNzZXJ0Q2xhdXNlKTtpZihFZSlyZXR1cm4gRWV9aWYoWi5pbXBsaWVkTm9kZUZvcm1hdCE9PWUuTW9kdWxlS2luZC5FU05leHQpcmV0dXJuIGUuaXNJbXBvcnRDYWxsKGUud2Fsa1VwUGFyZW50aGVzaXplZEV4cHJlc3Npb25zKEJlLnBhcmVudCkpP2UuTW9kdWxlS2luZC5FU05leHQ6ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTO3ZhciBIZT0oUmU9ZS53YWxrVXBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbnMoQmUucGFyZW50KSk9PT1udWxsfHxSZT09PXZvaWQgMD92b2lkIDA6UmUucGFyZW50O3JldHVybiBIZSYmZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKEhlKT9lLk1vZHVsZUtpbmQuQ29tbW9uSlM6ZS5Nb2R1bGVLaW5kLkVTTmV4dH19ZS5nZXRNb2RlRm9yVXNhZ2VMb2NhdGlvbj14O2Z1bmN0aW9uIFgoWixCZSl7aWYoISFaKXtpZihlLmxlbmd0aChaLmVsZW1lbnRzKSE9PTEpe0JlPT1udWxsfHxCZShaLGUuRGlhZ25vc3RpY3MuVHlwZV9pbXBvcnRfYXNzZXJ0aW9uc19zaG91bGRfaGF2ZV9leGFjdGx5X29uZV9rZXlfcmVzb2x1dGlvbl9tb2RlX3dpdGhfdmFsdWVfaW1wb3J0X29yX3JlcXVpcmUpO3JldHVybn12YXIgZ2U9Wi5lbGVtZW50c1swXTtpZighIWUuaXNTdHJpbmdMaXRlcmFsTGlrZShnZS5uYW1lKSl7aWYoZ2UubmFtZS50ZXh0IT09XCJyZXNvbHV0aW9uLW1vZGVcIil7QmU9PW51bGx8fEJlKGdlLm5hbWUsZS5EaWFnbm9zdGljcy5yZXNvbHV0aW9uX21vZGVfaXNfdGhlX29ubHlfdmFsaWRfa2V5X2Zvcl90eXBlX2ltcG9ydF9hc3NlcnRpb25zKTtyZXR1cm59aWYoISFlLmlzU3RyaW5nTGl0ZXJhbExpa2UoZ2UudmFsdWUpKXtpZihnZS52YWx1ZS50ZXh0IT09XCJpbXBvcnRcIiYmZ2UudmFsdWUudGV4dCE9PVwicmVxdWlyZVwiKXtCZT09bnVsbHx8QmUoZ2UudmFsdWUsZS5EaWFnbm9zdGljcy5yZXNvbHV0aW9uX21vZGVfc2hvdWxkX2JlX2VpdGhlcl9yZXF1aXJlX29yX2ltcG9ydCk7cmV0dXJufXJldHVybiBnZS52YWx1ZS50ZXh0PT09XCJpbXBvcnRcIj9lLk1vZHVsZUtpbmQuRVNOZXh0OmUuTW9kdWxlS2luZC5Db21tb25KU319fX1lLmdldFJlc29sdXRpb25Nb2RlT3ZlcnJpZGVGb3JDbGF1c2U9WDtmdW5jdGlvbiAkKFosQmUsZ2UsUmUsemUpe2lmKFoubGVuZ3RoPT09MClyZXR1cm5bXTtmb3IodmFyIEVlPVtdLEhlPW5ldyBlLk1hcCxycj0wLEllPTAsX2U9WjtJZTxfZS5sZW5ndGg7SWUrKyl7dmFyIHdlPV9lW0llXSxkZT12b2lkIDAseWU9aGUoQmUscnIpO3JyKys7dmFyIEFlPXllIT09dm9pZCAwP1wiXCIuY29uY2F0KHllLFwifFwiKS5jb25jYXQod2UpOndlO0hlLmhhcyhBZSk/ZGU9SGUuZ2V0KEFlKTpIZS5zZXQoQWUsZGU9emUod2UseWUsZ2UsUmUpKSxFZS5wdXNoKGRlKX1yZXR1cm4gRWV9ZS5sb2FkV2l0aE1vZGVBd2FyZUNhY2hlPSQ7ZnVuY3Rpb24gQShaLEJlKXtyZXR1cm4geSh2b2lkIDAsWixmdW5jdGlvbihnZSxSZSl7cmV0dXJuIGdlJiZCZShnZSxSZSl9KX1lLmZvckVhY2hSZXNvbHZlZFByb2plY3RSZWZlcmVuY2U9QTtmdW5jdGlvbiB5KFosQmUsZ2UsUmUpe3ZhciB6ZTtyZXR1cm4gRWUoWixCZSx2b2lkIDApO2Z1bmN0aW9uIEVlKEhlLHJyLEllKXtpZihSZSl7dmFyIF9lPVJlKEhlLEllKTtpZihfZSlyZXR1cm4gX2V9cmV0dXJuIGUuZm9yRWFjaChycixmdW5jdGlvbih3ZSxkZSl7aWYoISh3ZSYmKHplPT1udWxsP3ZvaWQgMDp6ZS5oYXMod2Uuc291cmNlRmlsZS5wYXRoKSkpKXt2YXIgeWU9Z2Uod2UsSWUsZGUpO3JldHVybiB5ZXx8IXdlP3llOigoemV8fCh6ZT1uZXcgZS5TZXQpKS5hZGQod2Uuc291cmNlRmlsZS5wYXRoKSxFZSh3ZS5jb21tYW5kTGluZS5wcm9qZWN0UmVmZXJlbmNlcyx3ZS5yZWZlcmVuY2VzLHdlKSl9fSl9fWUuaW5mZXJyZWRUeXBlc0NvbnRhaW5pbmdGaWxlPVwiX19pbmZlcnJlZCB0eXBlIG5hbWVzX18udHNcIjtmdW5jdGlvbiBWKFope3N3aXRjaChaPT1udWxsP3ZvaWQgMDpaLmtpbmQpe2Nhc2UgZS5GaWxlSW5jbHVkZUtpbmQuSW1wb3J0OmNhc2UgZS5GaWxlSW5jbHVkZUtpbmQuUmVmZXJlbmNlRmlsZTpjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLlR5cGVSZWZlcmVuY2VEaXJlY3RpdmU6Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5MaWJSZWZlcmVuY2VEaXJlY3RpdmU6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc1JlZmVyZW5jZWRGaWxlPVY7ZnVuY3Rpb24gTChaKXtyZXR1cm4gWi5wb3MhPT12b2lkIDB9ZS5pc1JlZmVyZW5jZUZpbGVMb2NhdGlvbj1MO2Z1bmN0aW9uIFAoWixCZSl7dmFyIGdlLFJlLHplLEVlLEhlLHJyLEllLF9lPWUuRGVidWcuY2hlY2tEZWZpbmVkKFooQmUuZmlsZSkpLHdlPUJlLmtpbmQsZGU9QmUuaW5kZXgseWUsQWUsZXIsaXI7c3dpdGNoKHdlKXtjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLkltcG9ydDp2YXIgQ3I9RmUoX2UsZGUpO2lmKGVyPShIZT0oRWU9X2UucmVzb2x2ZWRNb2R1bGVzKT09PW51bGx8fEVlPT09dm9pZCAwP3ZvaWQgMDpFZS5nZXQoQ3IudGV4dCxoZShfZSxkZSkpKT09PW51bGx8fEhlPT09dm9pZCAwP3ZvaWQgMDpIZS5wYWNrYWdlSWQsQ3IucG9zPT09LTEpcmV0dXJue2ZpbGU6X2UscGFja2FnZUlkOmVyLHRleHQ6Q3IudGV4dH07eWU9ZS5za2lwVHJpdmlhKF9lLnRleHQsQ3IucG9zKSxBZT1Dci5lbmQ7YnJlYWs7Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5SZWZlcmVuY2VGaWxlOmdlPV9lLnJlZmVyZW5jZWRGaWxlc1tkZV0seWU9Z2UucG9zLEFlPWdlLmVuZDticmVhaztjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLlR5cGVSZWZlcmVuY2VEaXJlY3RpdmU6UmU9X2UudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXNbZGVdLHllPVJlLnBvcyxBZT1SZS5lbmQsaXI9UmUucmVzb2x1dGlvbk1vZGUsZXI9KEllPShycj1fZS5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVOYW1lcyk9PT1udWxsfHxycj09PXZvaWQgMD92b2lkIDA6cnIuZ2V0KGUudG9GaWxlTmFtZUxvd2VyQ2FzZShfZS50eXBlUmVmZXJlbmNlRGlyZWN0aXZlc1tkZV0uZmlsZU5hbWUpLGlyfHxfZS5pbXBsaWVkTm9kZUZvcm1hdCkpPT09bnVsbHx8SWU9PT12b2lkIDA/dm9pZCAwOkllLnBhY2thZ2VJZDticmVhaztjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLkxpYlJlZmVyZW5jZURpcmVjdGl2ZTp6ZT1fZS5saWJSZWZlcmVuY2VEaXJlY3RpdmVzW2RlXSx5ZT16ZS5wb3MsQWU9emUuZW5kO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIod2UpfXJldHVybntmaWxlOl9lLHBvczp5ZSxlbmQ6QWUscGFja2FnZUlkOmVyfX1lLmdldFJlZmVyZW5jZWRGaWxlTG9jYXRpb249UDtmdW5jdGlvbiBrKFosQmUsZ2UsUmUsemUsRWUsSGUscnIsSWUpe2lmKCFafHwoSGU9PW51bGw/dm9pZCAwOkhlKCkpfHwhZS5hcnJheUlzRXF1YWxUbyhaLmdldFJvb3RGaWxlTmFtZXMoKSxCZSkpcmV0dXJuITE7dmFyIF9lO2lmKCFlLmFycmF5SXNFcXVhbFRvKFouZ2V0UHJvamVjdFJlZmVyZW5jZXMoKSxJZSxBZSl8fFouZ2V0U291cmNlRmlsZXMoKS5zb21lKGRlKXx8Wi5nZXRNaXNzaW5nRmlsZVBhdGhzKCkuc29tZSh6ZSkpcmV0dXJuITE7dmFyIHdlPVouZ2V0Q29tcGlsZXJPcHRpb25zKCk7aWYoIWUuY29tcGFyZURhdGFPYmplY3RzKHdlLGdlKSlyZXR1cm4hMTtpZih3ZS5jb25maWdGaWxlJiZnZS5jb25maWdGaWxlKXJldHVybiB3ZS5jb25maWdGaWxlLnRleHQ9PT1nZS5jb25maWdGaWxlLnRleHQ7cmV0dXJuITA7ZnVuY3Rpb24gZGUoaXIpe3JldHVybiF5ZShpcil8fEVlKGlyLnBhdGgpfWZ1bmN0aW9uIHllKGlyKXtyZXR1cm4gaXIudmVyc2lvbj09PVJlKGlyLnJlc29sdmVkUGF0aCxpci5maWxlTmFtZSl9ZnVuY3Rpb24gQWUoaXIsQ3IsWWUpe3JldHVybiBlLnByb2plY3RSZWZlcmVuY2VJc0VxdWFsVG8oaXIsQ3IpJiZlcihaLmdldFJlc29sdmVkUHJvamVjdFJlZmVyZW5jZXMoKVtZZV0saXIpfWZ1bmN0aW9uIGVyKGlyLENyKXtpZihpcil7aWYoZS5jb250YWlucyhfZSxpcikpcmV0dXJuITA7dmFyIFllPW5lKENyKSxCcj1ycihZZSk7cmV0dXJuIUJyfHxpci5jb21tYW5kTGluZS5vcHRpb25zLmNvbmZpZ0ZpbGUhPT1Cci5vcHRpb25zLmNvbmZpZ0ZpbGV8fCFlLmFycmF5SXNFcXVhbFRvKGlyLmNvbW1hbmRMaW5lLmZpbGVOYW1lcyxCci5maWxlTmFtZXMpPyExOigoX2V8fChfZT1bXSkpLnB1c2goaXIpLCFlLmZvckVhY2goaXIucmVmZXJlbmNlcyxmdW5jdGlvbihOZSxuKXtyZXR1cm4hZXIoTmUsaXIuY29tbWFuZExpbmUucHJvamVjdFJlZmVyZW5jZXNbbl0pfSkpfXZhciBFcj1uZShDcik7cmV0dXJuIXJyKEVyKX19ZS5pc1Byb2dyYW1VcHRvRGF0ZT1rO2Z1bmN0aW9uIFkoWil7cmV0dXJuIFoub3B0aW9ucy5jb25maWdGaWxlP1ZlKFZlKFtdLFoub3B0aW9ucy5jb25maWdGaWxlLnBhcnNlRGlhZ25vc3RpY3MsITApLFouZXJyb3JzLCEwKTpaLmVycm9yc31lLmdldENvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3M9WTtmdW5jdGlvbiBVKFosQmUsZ2UsUmUpe3N3aXRjaChlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZChSZSkpe2Nhc2UgZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTY6Y2FzZSBlLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVOZXh0OnJldHVybiBlLmZpbGVFeHRlbnNpb25Jc09uZU9mKFosW1wiLmQubXRzXCIsXCIubXRzXCIsXCIubWpzXCJdKT9lLk1vZHVsZUtpbmQuRVNOZXh0OmUuZmlsZUV4dGVuc2lvbklzT25lT2YoWixbXCIuZC5jdHNcIixcIi5jdHNcIixcIi5janNcIl0pP2UuTW9kdWxlS2luZC5Db21tb25KUzplLmZpbGVFeHRlbnNpb25Jc09uZU9mKFosW1wiLmQudHNcIixcIi50c1wiLFwiLnRzeFwiLFwiLmpzXCIsXCIuanN4XCJdKT96ZSgpOnZvaWQgMDtkZWZhdWx0OnJldHVybn1mdW5jdGlvbiB6ZSgpe3ZhciBFZT1lLmdldFBhY2thZ2VTY29wZUZvclBhdGgoWixCZSxnZSxSZSk7cmV0dXJuKEVlPT1udWxsP3ZvaWQgMDpFZS5wYWNrYWdlSnNvbkNvbnRlbnQudHlwZSk9PT1cIm1vZHVsZVwiP2UuTW9kdWxlS2luZC5FU05leHQ6ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTfX1lLmdldEltcGxpZWROb2RlRm9ybWF0Rm9yRmlsZT1VLGUucGxhaW5KU0Vycm9ycz1uZXcgZS5TZXQoW2UuRGlhZ25vc3RpY3MuQ2Fubm90X3JlZGVjbGFyZV9ibG9ja19zY29wZWRfdmFyaWFibGVfMC5jb2RlLGUuRGlhZ25vc3RpY3MuQV9tb2R1bGVfY2Fubm90X2hhdmVfbXVsdGlwbGVfZGVmYXVsdF9leHBvcnRzLmNvZGUsZS5EaWFnbm9zdGljcy5Bbm90aGVyX2V4cG9ydF9kZWZhdWx0X2lzX2hlcmUuY29kZSxlLkRpYWdub3N0aWNzLlRoZV9maXJzdF9leHBvcnRfZGVmYXVsdF9pc19oZXJlLmNvZGUsZS5EaWFnbm9zdGljcy5JZGVudGlmaWVyX2V4cGVjdGVkXzBfaXNfYV9yZXNlcnZlZF93b3JkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGUuY29kZSxlLkRpYWdub3N0aWNzLklkZW50aWZpZXJfZXhwZWN0ZWRfMF9pc19hX3Jlc2VydmVkX3dvcmRfaW5fc3RyaWN0X21vZGVfTW9kdWxlc19hcmVfYXV0b21hdGljYWxseV9pbl9zdHJpY3RfbW9kZS5jb2RlLGUuRGlhZ25vc3RpY3MuSWRlbnRpZmllcl9leHBlY3RlZF8wX2lzX2FfcmVzZXJ2ZWRfd29yZF90aGF0X2Nhbm5vdF9iZV91c2VkX2hlcmUuY29kZSxlLkRpYWdub3N0aWNzLmNvbnN0cnVjdG9yX2lzX2FfcmVzZXJ2ZWRfd29yZC5jb2RlLGUuRGlhZ25vc3RpY3MuZGVsZXRlX2Nhbm5vdF9iZV9jYWxsZWRfb25fYW5faWRlbnRpZmllcl9pbl9zdHJpY3RfbW9kZS5jb2RlLGUuRGlhZ25vc3RpY3MuQ29kZV9jb250YWluZWRfaW5fYV9jbGFzc19pc19ldmFsdWF0ZWRfaW5fSmF2YVNjcmlwdF9zX3N0cmljdF9tb2RlX3doaWNoX2RvZXNfbm90X2FsbG93X3RoaXNfdXNlX29mXzBfRm9yX21vcmVfaW5mb3JtYXRpb25fc2VlX2h0dHBzX0NvbG9uX1NsYXNoX1NsYXNoZGV2ZWxvcGVyX21vemlsbGFfb3JnX1NsYXNoZW5fVVNfU2xhc2hkb2NzX1NsYXNoV2ViX1NsYXNoSmF2YVNjcmlwdF9TbGFzaFJlZmVyZW5jZV9TbGFzaFN0cmljdF9tb2RlLmNvZGUsZS5EaWFnbm9zdGljcy5JbnZhbGlkX3VzZV9vZl8wX01vZHVsZXNfYXJlX2F1dG9tYXRpY2FsbHlfaW5fc3RyaWN0X21vZGUuY29kZSxlLkRpYWdub3N0aWNzLkludmFsaWRfdXNlX29mXzBfaW5fc3RyaWN0X21vZGUuY29kZSxlLkRpYWdub3N0aWNzLkFfbGFiZWxfaXNfbm90X2FsbG93ZWRfaGVyZS5jb2RlLGUuRGlhZ25vc3RpY3MuT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlLmNvZGUsZS5EaWFnbm9zdGljcy53aXRoX3N0YXRlbWVudHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlLmNvZGUsZS5EaWFnbm9zdGljcy5BX2JyZWFrX3N0YXRlbWVudF9jYW5fb25seV9iZV91c2VkX3dpdGhpbl9hbl9lbmNsb3NpbmdfaXRlcmF0aW9uX29yX3N3aXRjaF9zdGF0ZW1lbnQuY29kZSxlLkRpYWdub3N0aWNzLkFfYnJlYWtfc3RhdGVtZW50X2Nhbl9vbmx5X2p1bXBfdG9fYV9sYWJlbF9vZl9hbl9lbmNsb3Npbmdfc3RhdGVtZW50LmNvZGUsZS5EaWFnbm9zdGljcy5BX2NsYXNzX2RlY2xhcmF0aW9uX3dpdGhvdXRfdGhlX2RlZmF1bHRfbW9kaWZpZXJfbXVzdF9oYXZlX2FfbmFtZS5jb2RlLGUuRGlhZ25vc3RpY3MuQV9jbGFzc19tZW1iZXJfY2Fubm90X2hhdmVfdGhlXzBfa2V5d29yZC5jb2RlLGUuRGlhZ25vc3RpY3MuQV9jb21tYV9leHByZXNzaW9uX2lzX25vdF9hbGxvd2VkX2luX2FfY29tcHV0ZWRfcHJvcGVydHlfbmFtZS5jb2RlLGUuRGlhZ25vc3RpY3MuQV9jb250aW51ZV9zdGF0ZW1lbnRfY2FuX29ubHlfYmVfdXNlZF93aXRoaW5fYW5fZW5jbG9zaW5nX2l0ZXJhdGlvbl9zdGF0ZW1lbnQuY29kZSxlLkRpYWdub3N0aWNzLkFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2p1bXBfdG9fYV9sYWJlbF9vZl9hbl9lbmNsb3NpbmdfaXRlcmF0aW9uX3N0YXRlbWVudC5jb2RlLGUuRGlhZ25vc3RpY3MuQV9jb250aW51ZV9zdGF0ZW1lbnRfY2FuX29ubHlfanVtcF90b19hX2xhYmVsX29mX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50LmNvZGUsZS5EaWFnbm9zdGljcy5BX2RlZmF1bHRfY2xhdXNlX2Nhbm5vdF9hcHBlYXJfbW9yZV90aGFuX29uY2VfaW5fYV9zd2l0Y2hfc3RhdGVtZW50LmNvZGUsZS5EaWFnbm9zdGljcy5BX2RlZmF1bHRfZXhwb3J0X211c3RfYmVfYXRfdGhlX3RvcF9sZXZlbF9vZl9hX2ZpbGVfb3JfbW9kdWxlX2RlY2xhcmF0aW9uLmNvZGUsZS5EaWFnbm9zdGljcy5BX2RlZmluaXRlX2Fzc2lnbm1lbnRfYXNzZXJ0aW9uX2lzX25vdF9wZXJtaXR0ZWRfaW5fdGhpc19jb250ZXh0LmNvZGUsZS5EaWFnbm9zdGljcy5BX2Rlc3RydWN0dXJpbmdfZGVjbGFyYXRpb25fbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyLmNvZGUsZS5EaWFnbm9zdGljcy5BX2dldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9wYXJhbWV0ZXJzLmNvZGUsZS5EaWFnbm9zdGljcy5BX3Jlc3RfZWxlbWVudF9jYW5ub3RfY29udGFpbl9hX2JpbmRpbmdfcGF0dGVybi5jb2RlLGUuRGlhZ25vc3RpY3MuQV9yZXN0X2VsZW1lbnRfY2Fubm90X2hhdmVfYV9wcm9wZXJ0eV9uYW1lLmNvZGUsZS5EaWFnbm9zdGljcy5BX3Jlc3RfZWxlbWVudF9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplci5jb2RlLGUuRGlhZ25vc3RpY3MuQV9yZXN0X2VsZW1lbnRfbXVzdF9iZV9sYXN0X2luX2FfZGVzdHJ1Y3R1cmluZ19wYXR0ZXJuLmNvZGUsZS5EaWFnbm9zdGljcy5BX3Jlc3RfcGFyYW1ldGVyX2Nhbm5vdF9oYXZlX2FuX2luaXRpYWxpemVyLmNvZGUsZS5EaWFnbm9zdGljcy5BX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfbGFzdF9pbl9hX3BhcmFtZXRlcl9saXN0LmNvZGUsZS5EaWFnbm9zdGljcy5BX3Jlc3RfcGFyYW1ldGVyX29yX2JpbmRpbmdfcGF0dGVybl9tYXlfbm90X2hhdmVfYV90cmFpbGluZ19jb21tYS5jb2RlLGUuRGlhZ25vc3RpY3MuQV9yZXR1cm5fc3RhdGVtZW50X2Nhbm5vdF9iZV91c2VkX2luc2lkZV9hX2NsYXNzX3N0YXRpY19ibG9jay5jb2RlLGUuRGlhZ25vc3RpY3MuQV9zZXRfYWNjZXNzb3JfY2Fubm90X2hhdmVfcmVzdF9wYXJhbWV0ZXIuY29kZSxlLkRpYWdub3N0aWNzLkFfc2V0X2FjY2Vzc29yX211c3RfaGF2ZV9leGFjdGx5X29uZV9wYXJhbWV0ZXIuY29kZSxlLkRpYWdub3N0aWNzLkFuX2V4cG9ydF9kZWNsYXJhdGlvbl9jYW5fb25seV9iZV91c2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGUuY29kZSxlLkRpYWdub3N0aWNzLkFuX2V4cG9ydF9kZWNsYXJhdGlvbl9jYW5ub3RfaGF2ZV9tb2RpZmllcnMuY29kZSxlLkRpYWdub3N0aWNzLkFuX2ltcG9ydF9kZWNsYXJhdGlvbl9jYW5fb25seV9iZV91c2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9tb2R1bGUuY29kZSxlLkRpYWdub3N0aWNzLkFuX2ltcG9ydF9kZWNsYXJhdGlvbl9jYW5ub3RfaGF2ZV9tb2RpZmllcnMuY29kZSxlLkRpYWdub3N0aWNzLkFuX29iamVjdF9tZW1iZXJfY2Fubm90X2JlX2RlY2xhcmVkX29wdGlvbmFsLmNvZGUsZS5EaWFnbm9zdGljcy5Bcmd1bWVudF9vZl9keW5hbWljX2ltcG9ydF9jYW5ub3RfYmVfc3ByZWFkX2VsZW1lbnQuY29kZSxlLkRpYWdub3N0aWNzLkNhbm5vdF9hc3NpZ25fdG9fcHJpdmF0ZV9tZXRob2RfMF9Qcml2YXRlX21ldGhvZHNfYXJlX25vdF93cml0YWJsZS5jb2RlLGUuRGlhZ25vc3RpY3MuQ2Fubm90X3JlZGVjbGFyZV9pZGVudGlmaWVyXzBfaW5fY2F0Y2hfY2xhdXNlLmNvZGUsZS5EaWFnbm9zdGljcy5DYXRjaF9jbGF1c2VfdmFyaWFibGVfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIuY29kZSxlLkRpYWdub3N0aWNzLkNsYXNzX2RlY29yYXRvcnNfY2FuX3RfYmVfdXNlZF93aXRoX3N0YXRpY19wcml2YXRlX2lkZW50aWZpZXJfQ29uc2lkZXJfcmVtb3ZpbmdfdGhlX2V4cGVyaW1lbnRhbF9kZWNvcmF0b3IuY29kZSxlLkRpYWdub3N0aWNzLkNsYXNzZXNfY2FuX29ubHlfZXh0ZW5kX2Ffc2luZ2xlX2NsYXNzLmNvZGUsZS5EaWFnbm9zdGljcy5DbGFzc2VzX21heV9ub3RfaGF2ZV9hX2ZpZWxkX25hbWVkX2NvbnN0cnVjdG9yLmNvZGUsZS5EaWFnbm9zdGljcy5EaWRfeW91X21lYW5fdG9fdXNlX2FfQ29sb25fQW5fY2FuX29ubHlfZm9sbG93X2FfcHJvcGVydHlfbmFtZV93aGVuX3RoZV9jb250YWluaW5nX29iamVjdF9saXRlcmFsX2lzX3BhcnRfb2ZfYV9kZXN0cnVjdHVyaW5nX3BhdHRlcm4uY29kZSxlLkRpYWdub3N0aWNzLkR1cGxpY2F0ZV9sYWJlbF8wLmNvZGUsZS5EaWFnbm9zdGljcy5EeW5hbWljX2ltcG9ydHNfY2FuX29ubHlfYWNjZXB0X2FfbW9kdWxlX3NwZWNpZmllcl9hbmRfYW5fb3B0aW9uYWxfYXNzZXJ0aW9uX2FzX2FyZ3VtZW50cy5jb2RlLGUuRGlhZ25vc3RpY3MuRm9yX2F3YWl0X2xvb3BzX2Nhbm5vdF9iZV91c2VkX2luc2lkZV9hX2NsYXNzX3N0YXRpY19ibG9jay5jb2RlLGUuRGlhZ25vc3RpY3MuSlNYX2F0dHJpYnV0ZXNfbXVzdF9vbmx5X2JlX2Fzc2lnbmVkX2Ffbm9uX2VtcHR5X2V4cHJlc3Npb24uY29kZSxlLkRpYWdub3N0aWNzLkpTWF9lbGVtZW50c19jYW5ub3RfaGF2ZV9tdWx0aXBsZV9hdHRyaWJ1dGVzX3dpdGhfdGhlX3NhbWVfbmFtZS5jb2RlLGUuRGlhZ25vc3RpY3MuSlNYX2V4cHJlc3Npb25zX21heV9ub3RfdXNlX3RoZV9jb21tYV9vcGVyYXRvcl9EaWRfeW91X21lYW5fdG9fd3JpdGVfYW5fYXJyYXkuY29kZSxlLkRpYWdub3N0aWNzLkpTWF9wcm9wZXJ0eV9hY2Nlc3NfZXhwcmVzc2lvbnNfY2Fubm90X2luY2x1ZGVfSlNYX25hbWVzcGFjZV9uYW1lcy5jb2RlLGUuRGlhZ25vc3RpY3MuSnVtcF90YXJnZXRfY2Fubm90X2Nyb3NzX2Z1bmN0aW9uX2JvdW5kYXJ5LmNvZGUsZS5EaWFnbm9zdGljcy5MaW5lX3Rlcm1pbmF0b3Jfbm90X3Blcm1pdHRlZF9iZWZvcmVfYXJyb3cuY29kZSxlLkRpYWdub3N0aWNzLk1vZGlmaWVyc19jYW5ub3RfYXBwZWFyX2hlcmUuY29kZSxlLkRpYWdub3N0aWNzLk9ubHlfYV9zaW5nbGVfdmFyaWFibGVfZGVjbGFyYXRpb25faXNfYWxsb3dlZF9pbl9hX2Zvcl9pbl9zdGF0ZW1lbnQuY29kZSxlLkRpYWdub3N0aWNzLk9ubHlfYV9zaW5nbGVfdmFyaWFibGVfZGVjbGFyYXRpb25faXNfYWxsb3dlZF9pbl9hX2Zvcl9vZl9zdGF0ZW1lbnQuY29kZSxlLkRpYWdub3N0aWNzLlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX25vdF9hbGxvd2VkX291dHNpZGVfY2xhc3NfYm9kaWVzLmNvZGUsZS5EaWFnbm9zdGljcy5Qcml2YXRlX2lkZW50aWZpZXJzX2FyZV9vbmx5X2FsbG93ZWRfaW5fY2xhc3NfYm9kaWVzX2FuZF9tYXlfb25seV9iZV91c2VkX2FzX3BhcnRfb2ZfYV9jbGFzc19tZW1iZXJfZGVjbGFyYXRpb25fcHJvcGVydHlfYWNjZXNzX29yX29uX3RoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9pbl9leHByZXNzaW9uLmNvZGUsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX25vdF9hY2Nlc3NpYmxlX291dHNpZGVfY2xhc3NfMV9iZWNhdXNlX2l0X2hhc19hX3ByaXZhdGVfaWRlbnRpZmllci5jb2RlLGUuRGlhZ25vc3RpY3MuVGFnZ2VkX3RlbXBsYXRlX2V4cHJlc3Npb25zX2FyZV9ub3RfcGVybWl0dGVkX2luX2FuX29wdGlvbmFsX2NoYWluLmNvZGUsZS5EaWFnbm9zdGljcy5UaGVfbGVmdF9oYW5kX3NpZGVfb2ZfYV9mb3Jfb2Zfc3RhdGVtZW50X21heV9ub3RfYmVfYXN5bmMuY29kZSxlLkRpYWdub3N0aWNzLlRoZV92YXJpYWJsZV9kZWNsYXJhdGlvbl9vZl9hX2Zvcl9pbl9zdGF0ZW1lbnRfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIuY29kZSxlLkRpYWdub3N0aWNzLlRoZV92YXJpYWJsZV9kZWNsYXJhdGlvbl9vZl9hX2Zvcl9vZl9zdGF0ZW1lbnRfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIuY29kZSxlLkRpYWdub3N0aWNzLlRyYWlsaW5nX2NvbW1hX25vdF9hbGxvd2VkLmNvZGUsZS5EaWFnbm9zdGljcy5WYXJpYWJsZV9kZWNsYXJhdGlvbl9saXN0X2Nhbm5vdF9iZV9lbXB0eS5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfYW5kXzFfb3BlcmF0aW9uc19jYW5ub3RfYmVfbWl4ZWRfd2l0aG91dF9wYXJlbnRoZXNlcy5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfZXhwZWN0ZWQuY29kZSxlLkRpYWdub3N0aWNzLl8wX2lzX25vdF9hX3ZhbGlkX21ldGFfcHJvcGVydHlfZm9yX2tleXdvcmRfMV9EaWRfeW91X21lYW5fMi5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfbGlzdF9jYW5ub3RfYmVfZW1wdHkuY29kZSxlLkRpYWdub3N0aWNzLl8wX21vZGlmaWVyX2FscmVhZHlfc2Vlbi5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2FwcGVhcl9vbl9hX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uLmNvZGUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfbW9kdWxlX29yX25hbWVzcGFjZV9lbGVtZW50LmNvZGUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2FfcGFyYW1ldGVyLmNvZGUsZS5EaWFnbm9zdGljcy5fMF9tb2RpZmllcl9jYW5ub3RfYXBwZWFyX29uX2NsYXNzX2VsZW1lbnRzX29mX3RoaXNfa2luZC5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZS5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfbW9kaWZpZXJfbXVzdF9wcmVjZWRlXzFfbW9kaWZpZXIuY29kZSxlLkRpYWdub3N0aWNzLmNvbnN0X2RlY2xhcmF0aW9uc19jYW5fb25seV9iZV9kZWNsYXJlZF9pbnNpZGVfYV9ibG9jay5jb2RlLGUuRGlhZ25vc3RpY3MuY29uc3RfZGVjbGFyYXRpb25zX211c3RfYmVfaW5pdGlhbGl6ZWQuY29kZSxlLkRpYWdub3N0aWNzLmV4dGVuZHNfY2xhdXNlX2FscmVhZHlfc2Vlbi5jb2RlLGUuRGlhZ25vc3RpY3MubGV0X2RlY2xhcmF0aW9uc19jYW5fb25seV9iZV9kZWNsYXJlZF9pbnNpZGVfYV9ibG9jay5jb2RlLGUuRGlhZ25vc3RpY3MubGV0X2lzX25vdF9hbGxvd2VkX3RvX2JlX3VzZWRfYXNfYV9uYW1lX2luX2xldF9vcl9jb25zdF9kZWNsYXJhdGlvbnMuY29kZV0pO2Z1bmN0aW9uIGooWixCZSl7cmV0dXJuIFo/ZS5vcHRpb25zSGF2ZUNoYW5nZXMoWi5nZXRDb21waWxlck9wdGlvbnMoKSxCZSxlLnNvdXJjZUZpbGVBZmZlY3RpbmdDb21waWxlck9wdGlvbnMpOiExfWZ1bmN0aW9uIEgoWixCZSxnZSxSZSx6ZSl7cmV0dXJue3Jvb3ROYW1lczpaLG9wdGlvbnM6QmUsaG9zdDpnZSxvbGRQcm9ncmFtOlJlLGNvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3M6emV9fWZ1bmN0aW9uIEkoWixCZSxnZSxSZSx6ZSl7dmFyIEVlLEhlLHJyLEllLF9lPWUuaXNBcnJheShaKT9IKFosQmUsZ2UsUmUsemUpOlosd2U9X2Uucm9vdE5hbWVzLGRlPV9lLm9wdGlvbnMseWU9X2UuY29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyxBZT1fZS5wcm9qZWN0UmVmZXJlbmNlcyxlcj1fZS5vbGRQcm9ncmFtLGlyLENyLFllLEJyLEVyLE5lLG4sbHI9bmV3IGUuTWFwLGJlPWUuY3JlYXRlTXVsdGlNYXAoKSxHZT17fSx1cj17fSx5cj1lLmNyZWF0ZU1vZGVBd2FyZUNhY2hlKCksSXIsd3I9dHlwZW9mIGRlLm1heE5vZGVNb2R1bGVKc0RlcHRoPT1cIm51bWJlclwiP2RlLm1heE5vZGVNb2R1bGVKc0RlcHRoOjAsVXI9MCxpaT1uZXcgZS5NYXAsbWk9bmV3IGUuTWFwO2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJwcm9ncmFtXCIsXCJjcmVhdGVQcm9ncmFtXCIse2NvbmZpZ0ZpbGVQYXRoOmRlLmNvbmZpZ0ZpbGVQYXRoLHJvb3REaXI6ZGUucm9vdERpcn0sITApLGUucGVyZm9ybWFuY2UubWFyayhcImJlZm9yZVByb2dyYW1cIik7dmFyIHBlPV9lLmhvc3R8fEIoZGUpLG9yPWZlKHBlKSxxcj1kZS5ub0xpYixzaT1lLm1lbW9pemUoZnVuY3Rpb24oKXtyZXR1cm4gcGUuZ2V0RGVmYXVsdExpYkZpbGVOYW1lKGRlKX0pLERpPXBlLmdldERlZmF1bHRMaWJMb2NhdGlvbj9wZS5nZXREZWZhdWx0TGliTG9jYXRpb24oKTplLmdldERpcmVjdG9yeVBhdGgoc2koKSksd2k9ZS5jcmVhdGVEaWFnbm9zdGljQ29sbGVjdGlvbigpLFhpPXBlLmdldEN1cnJlbnREaXJlY3RvcnkoKSxldD1lLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoZGUpLEdpPWUuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uc1dpdGhKc29uSWZSZXNvbHZlSnNvbk1vZHVsZShkZSxldCksV3Q9bmV3IGUuTWFwLFp0LF9yLHBpLGFlLFhlPXBlLmhhc0ludmFsaWRhdGVkUmVzb2x1dGlvbnx8ZS5yZXR1cm5GYWxzZTtpZihwZS5yZXNvbHZlTW9kdWxlTmFtZXMpYWU9ZnVuY3Rpb24oS3IsX2ksRWksdHQsa3Qpe3JldHVybiBwZS5yZXNvbHZlTW9kdWxlTmFtZXMoZS5EZWJ1Zy5jaGVja0VhY2hEZWZpbmVkKEtyKSxFaSx0dCxrdCxkZSxfaSkubWFwKGZ1bmN0aW9uKGJ0KXtpZighYnR8fGJ0LmV4dGVuc2lvbiE9PXZvaWQgMClyZXR1cm4gYnQ7dmFyIGlhPWUuY2xvbmUoYnQpO3JldHVybiBpYS5leHRlbnNpb249ZS5leHRlbnNpb25Gcm9tUGF0aChidC5yZXNvbHZlZEZpbGVOYW1lKSxpYX0pfSxfcj0oRWU9cGUuZ2V0TW9kdWxlUmVzb2x1dGlvbkNhY2hlKT09PW51bGx8fEVlPT09dm9pZCAwP3ZvaWQgMDpFZS5jYWxsKHBlKTtlbHNle19yPWUuY3JlYXRlTW9kdWxlUmVzb2x1dGlvbkNhY2hlKFhpLHVhLGRlKTt2YXIgSnI9ZnVuY3Rpb24oS3IsX2ksRWksdHQpe3JldHVybiBlLnJlc29sdmVNb2R1bGVOYW1lKEtyLEVpLGRlLHBlLF9yLHR0LF9pKS5yZXNvbHZlZE1vZHVsZX07YWU9ZnVuY3Rpb24oS3IsX2ksRWksdHQsa3Qpe3JldHVybiAkKGUuRGVidWcuY2hlY2tFYWNoRGVmaW5lZChLciksX2ksRWksa3QsSnIpfX12YXIgdGk7aWYocGUucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzKXRpPWZ1bmN0aW9uKEtyLF9pLEVpLHR0KXtyZXR1cm4gcGUucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzKGUuRGVidWcuY2hlY2tFYWNoRGVmaW5lZChLciksX2ksRWksZGUsdHQpfTtlbHNle3BpPWUuY3JlYXRlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZVJlc29sdXRpb25DYWNoZShYaSx1YSx2b2lkIDAsX3I9PW51bGw/dm9pZCAwOl9yLmdldFBhY2thZ2VKc29uSW5mb0NhY2hlKCkpO3ZhciBaZT1mdW5jdGlvbihLcixfaSxFaSx0dCl7cmV0dXJuIGUucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmUoS3IsX2ksZGUscGUsRWkscGksdHQpLnJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZX07dGk9ZnVuY3Rpb24oS3IsX2ksRWksdHQpe3JldHVybiB2ZShlLkRlYnVnLmNoZWNrRWFjaERlZmluZWQoS3IpLF9pLEVpLHR0LFplKX19dmFyIFNyPW5ldyBlLk1hcCx6cj1uZXcgZS5NYXAsV3I9ZS5jcmVhdGVNdWx0aU1hcCgpLEplPSExLHhlPW5ldyBlLk1hcCx2cixtcj1wZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCk/bmV3IGUuTWFwOnZvaWQgMCxBcixPZSxucixNcixQZT0hISghKChIZT1wZS51c2VTb3VyY2VPZlByb2plY3RSZWZlcmVuY2VSZWRpcmVjdCk9PT1udWxsfHxIZT09PXZvaWQgMCkmJkhlLmNhbGwocGUpKSYmIWRlLmRpc2FibGVTb3VyY2VPZlByb2plY3RSZWZlcmVuY2VSZWRpcmVjdCxVZT1sKHtjb21waWxlckhvc3Q6cGUsZ2V0U3ltbGlua0NhY2hlOnZjLHVzZVNvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0OlBlLHRvUGF0aDpWaSxnZXRSZXNvbHZlZFByb2plY3RSZWZlcmVuY2VzOkJhLGdldFNvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0OmNlLGZvckVhY2hSZXNvbHZlZFByb2plY3RSZWZlcmVuY2U6Sml9KSxmcj1VZS5vblByb2dyYW1DcmVhdGVDb21wbGV0ZSxEZT1VZS5maWxlRXhpc3RzLGdyPVVlLmRpcmVjdG9yeUV4aXN0cyxWcj1wZS5yZWFkRmlsZS5iaW5kKHBlKTtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwicHJvZ3JhbVwiLFwic2hvdWxkUHJvZ3JhbUNyZWF0ZU5ld1NvdXJjZUZpbGVzXCIse2hhc09sZFByb2dyYW06ISFlcn0pO3ZhciBUcj1qKGVyLGRlKTtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKTt2YXIgdmk7aWYoZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucHVzaChcInByb2dyYW1cIixcInRyeVJldXNlU3RydWN0dXJlRnJvbU9sZFByb2dyYW1cIix7fSksdmk9UWEoKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSx2aSE9PTIpe2lyPVtdLENyPVtdLEFlJiYoQXJ8fChBcj1BZS5tYXAoZm8pKSx3ZS5sZW5ndGgmJihBcj09bnVsbHx8QXIuZm9yRWFjaChmdW5jdGlvbihLcixfaSl7aWYoISFLcil7dmFyIEVpPWUub3V0RmlsZShLci5jb21tYW5kTGluZS5vcHRpb25zKTtpZihQZSl7aWYoRWl8fGUuZ2V0RW1pdE1vZHVsZUtpbmQoS3IuY29tbWFuZExpbmUub3B0aW9ucyk9PT1lLk1vZHVsZUtpbmQuTm9uZSlmb3IodmFyIHR0PTAsa3Q9S3IuY29tbWFuZExpbmUuZmlsZU5hbWVzO3R0PGt0Lmxlbmd0aDt0dCsrKXt2YXIgYnQ9a3RbdHRdO3lzKGJ0LHtraW5kOmUuRmlsZUluY2x1ZGVLaW5kLlNvdXJjZUZyb21Qcm9qZWN0UmVmZXJlbmNlLGluZGV4Ol9pfSl9fWVsc2UgaWYoRWkpeXMoZS5jaGFuZ2VFeHRlbnNpb24oRWksXCIuZC50c1wiKSx7a2luZDplLkZpbGVJbmNsdWRlS2luZC5PdXRwdXRGcm9tUHJvamVjdFJlZmVyZW5jZSxpbmRleDpfaX0pO2Vsc2UgaWYoZS5nZXRFbWl0TW9kdWxlS2luZChLci5jb21tYW5kTGluZS5vcHRpb25zKT09PWUuTW9kdWxlS2luZC5Ob25lKWZvcih2YXIgaWE9ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5T2ZDb25maWcoS3IuY29tbWFuZExpbmUsIXBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSl9KSxYdD0wLFphPUtyLmNvbW1hbmRMaW5lLmZpbGVOYW1lcztYdDxaYS5sZW5ndGg7WHQrKyl7dmFyIGJ0PVphW1h0XTshZS5pc0RlY2xhcmF0aW9uRmlsZU5hbWUoYnQpJiYhZS5maWxlRXh0ZW5zaW9uSXMoYnQsXCIuanNvblwiKSYmeXMoZS5nZXRPdXRwdXREZWNsYXJhdGlvbkZpbGVOYW1lKGJ0LEtyLmNvbW1hbmRMaW5lLCFwZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCksaWEpLHtraW5kOmUuRmlsZUluY2x1ZGVLaW5kLk91dHB1dEZyb21Qcm9qZWN0UmVmZXJlbmNlLGluZGV4Ol9pfSl9fX0pKSksZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucHVzaChcInByb2dyYW1cIixcInByb2Nlc3NSb290RmlsZXNcIix7Y291bnQ6d2UubGVuZ3RofSksZS5mb3JFYWNoKHdlLGZ1bmN0aW9uKEtyLF9pKXtyZXR1cm4gUWkoS3IsITEsITEse2tpbmQ6ZS5GaWxlSW5jbHVkZUtpbmQuUm9vdEZpbGUsaW5kZXg6X2l9KX0pLGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpO3ZhciBVaT13ZS5sZW5ndGg/ZS5nZXRBdXRvbWF0aWNUeXBlRGlyZWN0aXZlTmFtZXMoZGUscGUpOmUuZW1wdHlBcnJheTtpZihVaS5sZW5ndGgpe2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJwcm9ncmFtXCIsXCJwcm9jZXNzVHlwZVJlZmVyZW5jZXNcIix7Y291bnQ6VWkubGVuZ3RofSk7Zm9yKHZhciBZaT1kZS5jb25maWdGaWxlUGF0aD9lLmdldERpcmVjdG9yeVBhdGgoZGUuY29uZmlnRmlsZVBhdGgpOnBlLmdldEN1cnJlbnREaXJlY3RvcnkoKSxXaT1lLmNvbWJpbmVQYXRocyhZaSxlLmluZmVycmVkVHlwZXNDb250YWluaW5nRmlsZSksY3Q9QnQoVWksV2kpLExpPTA7TGk8VWkubGVuZ3RoO0xpKyspSHIoVWlbTGldLHZvaWQgMCxjdFtMaV0se2tpbmQ6ZS5GaWxlSW5jbHVkZUtpbmQuQXV0b21hdGljVHlwZURpcmVjdGl2ZUZpbGUsdHlwZVJlZmVyZW5jZTpVaVtMaV0scGFja2FnZUlkOihycj1jdFtMaV0pPT09bnVsbHx8cnI9PT12b2lkIDA/dm9pZCAwOnJyLnBhY2thZ2VJZH0pO2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnBvcCgpfWlmKHdlLmxlbmd0aCYmIXFyKXt2YXIgbnQ9c2koKTshZGUubGliJiZudD9RaShudCwhMCwhMSx7a2luZDplLkZpbGVJbmNsdWRlS2luZC5MaWJGaWxlfSk6ZS5mb3JFYWNoKGRlLmxpYixmdW5jdGlvbihLcixfaSl7UWkoUHQoS3IpLCEwLCExLHtraW5kOmUuRmlsZUluY2x1ZGVLaW5kLkxpYkZpbGUsaW5kZXg6X2l9KX0pfXZyPWUuYXJyYXlGcm9tKGUubWFwRGVmaW5lZEl0ZXJhdG9yKHhlLmVudHJpZXMoKSxmdW5jdGlvbihLcil7dmFyIF9pPUtyWzBdLEVpPUtyWzFdO3JldHVybiBFaT09PXZvaWQgMD9faTp2b2lkIDB9KSksWWU9ZS5zdGFibGVTb3J0KGlyLEFpKS5jb25jYXQoQ3IpLGlyPXZvaWQgMCxDcj12b2lkIDB9aWYoZS5EZWJ1Zy5hc3NlcnQoISF2ciksZXImJnBlLm9uUmVsZWFzZU9sZFNvdXJjZUZpbGUpe2Zvcih2YXIgTXQ9ZXIuZ2V0U291cmNlRmlsZXMoKSx4dD0wLHV0PU10O3h0PHV0Lmxlbmd0aDt4dCsrKXt2YXIgRHQ9dXRbeHRdLFJ0PURhKER0LnJlc29sdmVkUGF0aCk7KFRyfHwhUnR8fER0LnJlc29sdmVkUGF0aD09PUR0LnBhdGgmJlJ0LnJlc29sdmVkUGF0aCE9PUR0LnBhdGgpJiZwZS5vblJlbGVhc2VPbGRTb3VyY2VGaWxlKER0LGVyLmdldENvbXBpbGVyT3B0aW9ucygpLCEhRGEoRHQucGF0aCkpfXBlLmdldFBhcnNlZENvbW1hbmRMaW5lfHxlci5mb3JFYWNoUmVzb2x2ZWRQcm9qZWN0UmVmZXJlbmNlKGZ1bmN0aW9uKEtyKXt5aShLci5zb3VyY2VGaWxlLnBhdGgpfHxwZS5vblJlbGVhc2VPbGRTb3VyY2VGaWxlKEtyLnNvdXJjZUZpbGUsZXIuZ2V0Q29tcGlsZXJPcHRpb25zKCksITEpfSl9ZXImJnBlLm9uUmVsZWFzZVBhcnNlZENvbW1hbmRMaW5lJiZ5KGVyLmdldFByb2plY3RSZWZlcmVuY2VzKCksZXIuZ2V0UmVzb2x2ZWRQcm9qZWN0UmVmZXJlbmNlcygpLGZ1bmN0aW9uKEtyLF9pLEVpKXt2YXIgdHQ9KF9pPT1udWxsP3ZvaWQgMDpfaS5jb21tYW5kTGluZS5wcm9qZWN0UmVmZXJlbmNlc1tFaV0pfHxlci5nZXRQcm9qZWN0UmVmZXJlbmNlcygpW0VpXSxrdD1uZSh0dCk7T2UhPW51bGwmJk9lLmhhcyhWaShrdCkpfHxwZS5vblJlbGVhc2VQYXJzZWRDb21tYW5kTGluZShrdCxLcixlci5nZXRDb21waWxlck9wdGlvbnMoKSl9KSxwaT12b2lkIDAsZXI9dm9pZCAwO3ZhciBJaT17Z2V0Um9vdEZpbGVOYW1lczpmdW5jdGlvbigpe3JldHVybiB3ZX0sZ2V0U291cmNlRmlsZTpSbixnZXRTb3VyY2VGaWxlQnlQYXRoOkRhLGdldFNvdXJjZUZpbGVzOmZ1bmN0aW9uKCl7cmV0dXJuIFllfSxnZXRNaXNzaW5nRmlsZVBhdGhzOmZ1bmN0aW9uKCl7cmV0dXJuIHZyfSxnZXRNb2R1bGVSZXNvbHV0aW9uQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gX3J9LGdldEZpbGVzQnlOYW1lTWFwOmZ1bmN0aW9uKCl7cmV0dXJuIHhlfSxnZXRDb21waWxlck9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gZGV9LGdldFN5bnRhY3RpY0RpYWdub3N0aWNzOlJvLGdldE9wdGlvbnNEaWFnbm9zdGljczpicixnZXRHbG9iYWxEaWFnbm9zdGljczpTaSxnZXRTZW1hbnRpY0RpYWdub3N0aWNzOkVuLGdldENhY2hlZFNlbWFudGljRGlhZ25vc3RpY3M6V24sZ2V0U3VnZ2VzdGlvbkRpYWdub3N0aWNzOmRuLGdldERlY2xhcmF0aW9uRGlhZ25vc3RpY3M6S28sZ2V0QmluZEFuZENoZWNrRGlhZ25vc3RpY3M6dG8sZ2V0UHJvZ3JhbURpYWdub3N0aWNzOkNvLGdldFR5cGVDaGVja2VyOnhuLGdldENsYXNzaWZpYWJsZU5hbWVzOkF0LGdldENvbW1vblNvdXJjZURpcmVjdG9yeTphdCxlbWl0OktuLGdldEN1cnJlbnREaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gWGl9LGdldE5vZGVDb3VudDpmdW5jdGlvbigpe3JldHVybiB4bigpLmdldE5vZGVDb3VudCgpfSxnZXRJZGVudGlmaWVyQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4geG4oKS5nZXRJZGVudGlmaWVyQ291bnQoKX0sZ2V0U3ltYm9sQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4geG4oKS5nZXRTeW1ib2xDb3VudCgpfSxnZXRUeXBlQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4geG4oKS5nZXRUeXBlQ291bnQoKX0sZ2V0SW5zdGFudGlhdGlvbkNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHhuKCkuZ2V0SW5zdGFudGlhdGlvbkNvdW50KCl9LGdldFJlbGF0aW9uQ2FjaGVTaXplczpmdW5jdGlvbigpe3JldHVybiB4bigpLmdldFJlbGF0aW9uQ2FjaGVTaXplcygpfSxnZXRGaWxlUHJvY2Vzc2luZ0RpYWdub3N0aWNzOmZ1bmN0aW9uKCl7cmV0dXJuIElyfSxnZXRSZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzOmZ1bmN0aW9uKCl7cmV0dXJuIHlyfSxpc1NvdXJjZUZpbGVGcm9tRXh0ZXJuYWxMaWJyYXJ5OkJpLGlzU291cmNlRmlsZURlZmF1bHRMaWJyYXJ5OmtuLGdldFNvdXJjZUZpbGVGcm9tUmVmZXJlbmNlOm1vLGdldExpYkZpbGVGcm9tUmVmZXJlbmNlOnFuLHNvdXJjZUZpbGVUb1BhY2thZ2VOYW1lOnpyLHJlZGlyZWN0VGFyZ2V0c01hcDpXcix1c2VzVXJpU3R5bGVOb2RlQ29yZU1vZHVsZXM6SmUsaXNFbWl0dGVkRmlsZTpZYSxnZXRDb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzOlBpLGdldFJlc29sdmVkTW9kdWxlV2l0aEZhaWxlZExvb2t1cExvY2F0aW9uc0Zyb21DYWNoZTpqaSxnZXRQcm9qZWN0UmVmZXJlbmNlczpwbixnZXRSZXNvbHZlZFByb2plY3RSZWZlcmVuY2VzOkJhLGdldFByb2plY3RSZWZlcmVuY2VSZWRpcmVjdDpwcyxnZXRSZXNvbHZlZFByb2plY3RSZWZlcmVuY2VUb1JlZGlyZWN0OmRzLGdldFJlc29sdmVkUHJvamVjdFJlZmVyZW5jZUJ5UGF0aDp5aSxmb3JFYWNoUmVzb2x2ZWRQcm9qZWN0UmVmZXJlbmNlOkppLGlzU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q6UnIsZW1pdEJ1aWxkSW5mbzprYSxmaWxlRXhpc3RzOkRlLHJlYWRGaWxlOlZyLGRpcmVjdG9yeUV4aXN0czpncixnZXRTeW1saW5rQ2FjaGU6dmMscmVhbHBhdGg6KEllPXBlLnJlYWxwYXRoKT09PW51bGx8fEllPT09dm9pZCAwP3ZvaWQgMDpJZS5iaW5kKHBlKSx1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKX0sZ2V0RmlsZUluY2x1ZGVSZWFzb25zOmZ1bmN0aW9uKCl7cmV0dXJuIGJlfSxzdHJ1Y3R1cmVJc1JldXNlZDp2aSx3cml0ZUZpbGU6RG59O3JldHVybiBmcigpLElyPT1udWxsfHxJci5mb3JFYWNoKGZ1bmN0aW9uKEtyKXtzd2l0Y2goS3Iua2luZCl7Y2FzZSAxOnJldHVybiB3aS5hZGQoRm8oS3IuZmlsZSYmRGEoS3IuZmlsZSksS3IuZmlsZVByb2Nlc3NpbmdSZWFzb24sS3IuZGlhZ25vc3RpYyxLci5hcmdzfHxlLmVtcHR5QXJyYXkpKTtjYXNlIDA6dmFyIF9pPVAoRGEsS3IucmVhc29uKSxFaT1faS5maWxlLHR0PV9pLnBvcyxrdD1faS5lbmQ7cmV0dXJuIHdpLmFkZChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljLmFwcGx5KHZvaWQgMCxWZShbRWksZS5EZWJ1Zy5jaGVja0RlZmluZWQodHQpLGUuRGVidWcuY2hlY2tEZWZpbmVkKGt0KS10dCxLci5kaWFnbm9zdGljXSxLci5hcmdzfHxlLmVtcHR5QXJyYXksITEpKSk7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKEtyKX19KSx4cygpLGUucGVyZm9ybWFuY2UubWFyayhcImFmdGVyUHJvZ3JhbVwiKSxlLnBlcmZvcm1hbmNlLm1lYXN1cmUoXCJQcm9ncmFtXCIsXCJiZWZvcmVQcm9ncmFtXCIsXCJhZnRlclByb2dyYW1cIiksZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucG9wKCksSWk7ZnVuY3Rpb24gS2koS3Ipe2lmKCEhS3IpZm9yKHZhciBfaT0wLEVpPUtyO19pPEVpLmxlbmd0aDtfaSsrKXt2YXIgdHQ9RWlbX2ldO3dpLmFkZCh0dCl9fWZ1bmN0aW9uIEZpKEtyLF9pKXt2YXIgRWk7aWYoISFfcilmb3IodmFyIHR0PWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChfaS5vcmlnaW5hbEZpbGVOYW1lLFhpKSxrdD1lLmlzU3RyaW5nKF9pKT92b2lkIDA6X2kuaW1wbGllZE5vZGVGb3JtYXQsYnQ9ZS5nZXREaXJlY3RvcnlQYXRoKHR0KSxpYT13dChfaSksWHQ9MCxaYT0wLGJuPUtyO1phPGJuLmxlbmd0aDtaYSsrKXt2YXIgX2E9Ym5bWmFdLHFhPXR5cGVvZiBfYT09XCJzdHJpbmdcIj9oZShfaSxYdCk6ZWUoX2Esa3QpLHJuPXR5cGVvZiBfYT09XCJzdHJpbmdcIj9fYTpfYS5maWxlTmFtZTtpZihYdCsrLCFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUocm4pKXt2YXIgam49KEVpPV9yLmdldE9yQ3JlYXRlQ2FjaGVGb3JNb2R1bGVOYW1lKHJuLHFhLGlhKS5nZXQoYnQpKT09PW51bGx8fEVpPT09dm9pZCAwP3ZvaWQgMDpFaS5yZXNvbHV0aW9uRGlhZ25vc3RpY3M7S2koam4pfX19ZnVuY3Rpb24gdWkoS3IsX2ksRWkpe2lmKCFLci5sZW5ndGgpcmV0dXJuIGUuZW1wdHlBcnJheTt2YXIgdHQ9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKF9pLm9yaWdpbmFsRmlsZU5hbWUsWGkpLGt0PXd0KF9pKTtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwicHJvZ3JhbVwiLFwicmVzb2x2ZU1vZHVsZU5hbWVzV29ya2VyXCIse2NvbnRhaW5pbmdGaWxlTmFtZTp0dH0pLGUucGVyZm9ybWFuY2UubWFyayhcImJlZm9yZVJlc29sdmVNb2R1bGVcIik7dmFyIGJ0PWFlKEtyLF9pLHR0LEVpLGt0KTtyZXR1cm4gZS5wZXJmb3JtYW5jZS5tYXJrKFwiYWZ0ZXJSZXNvbHZlTW9kdWxlXCIpLGUucGVyZm9ybWFuY2UubWVhc3VyZShcIlJlc29sdmVNb2R1bGVcIixcImJlZm9yZVJlc29sdmVNb2R1bGVcIixcImFmdGVyUmVzb2x2ZU1vZHVsZVwiKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSxGaShLcixfaSksYnR9ZnVuY3Rpb24gQnQoS3IsX2kpe2lmKCFLci5sZW5ndGgpcmV0dXJuW107dmFyIEVpPWUuaXNTdHJpbmcoX2kpP19pOmUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChfaS5vcmlnaW5hbEZpbGVOYW1lLFhpKSx0dD1lLmlzU3RyaW5nKF9pKT92b2lkIDA6d3QoX2kpLGt0PWUuaXNTdHJpbmcoX2kpP3ZvaWQgMDpfaS5pbXBsaWVkTm9kZUZvcm1hdDtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwicHJvZ3JhbVwiLFwicmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVOYW1lc1dvcmtlclwiLHtjb250YWluaW5nRmlsZU5hbWU6RWl9KSxlLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVSZXNvbHZlVHlwZVJlZmVyZW5jZVwiKTt2YXIgYnQ9dGkoS3IsRWksdHQsa3QpO3JldHVybiBlLnBlcmZvcm1hbmNlLm1hcmsoXCJhZnRlclJlc29sdmVUeXBlUmVmZXJlbmNlXCIpLGUucGVyZm9ybWFuY2UubWVhc3VyZShcIlJlc29sdmVUeXBlUmVmZXJlbmNlXCIsXCJiZWZvcmVSZXNvbHZlVHlwZVJlZmVyZW5jZVwiLFwiYWZ0ZXJSZXNvbHZlVHlwZVJlZmVyZW5jZVwiKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSxidH1mdW5jdGlvbiB3dChLcil7dmFyIF9pPWRzKEtyLm9yaWdpbmFsRmlsZU5hbWUpO2lmKF9pfHwhZS5pc0RlY2xhcmF0aW9uRmlsZU5hbWUoS3Iub3JpZ2luYWxGaWxlTmFtZSkpcmV0dXJuIF9pO3ZhciBFaT1uYShLci5wYXRoKTtpZihFaSlyZXR1cm4gRWk7aWYoISghcGUucmVhbHBhdGh8fCFkZS5wcmVzZXJ2ZVN5bWxpbmtzfHwhZS5zdHJpbmdDb250YWlucyhLci5vcmlnaW5hbEZpbGVOYW1lLGUubm9kZU1vZHVsZXNQYXRoUGFydCkpKXt2YXIgdHQ9VmkocGUucmVhbHBhdGgoS3Iub3JpZ2luYWxGaWxlTmFtZSkpO3JldHVybiB0dD09PUtyLnBhdGg/dm9pZCAwOm5hKHR0KX19ZnVuY3Rpb24gbmEoS3Ipe3ZhciBfaT1jZShLcik7aWYoZS5pc1N0cmluZyhfaSkpcmV0dXJuIGRzKF9pKTtpZighIV9pKXJldHVybiBKaShmdW5jdGlvbihFaSl7dmFyIHR0PWUub3V0RmlsZShFaS5jb21tYW5kTGluZS5vcHRpb25zKTtpZighIXR0KXJldHVybiBWaSh0dCk9PT1Lcj9FaTp2b2lkIDB9KX1mdW5jdGlvbiBBaShLcixfaSl7cmV0dXJuIGUuY29tcGFyZVZhbHVlcyhPaShLciksT2koX2kpKX1mdW5jdGlvbiBPaShLcil7aWYoZS5jb250YWluc1BhdGgoRGksS3IuZmlsZU5hbWUsITEpKXt2YXIgX2k9ZS5nZXRCYXNlRmlsZU5hbWUoS3IuZmlsZU5hbWUpO2lmKF9pPT09XCJsaWIuZC50c1wifHxfaT09PVwibGliLmVzNi5kLnRzXCIpcmV0dXJuIDA7dmFyIEVpPWUucmVtb3ZlU3VmZml4KGUucmVtb3ZlUHJlZml4KF9pLFwibGliLlwiKSxcIi5kLnRzXCIpLHR0PWUubGlicy5pbmRleE9mKEVpKTtpZih0dCE9PS0xKXJldHVybiB0dCsxfXJldHVybiBlLmxpYnMubGVuZ3RoKzJ9ZnVuY3Rpb24gamkoS3IsX2ksRWkpe3JldHVybiBfciYmZS5yZXNvbHZlTW9kdWxlTmFtZUZyb21DYWNoZShLcixfaSxfcixFaSl9ZnVuY3Rpb24gVmkoS3Ipe3JldHVybiBlLnRvUGF0aChLcixYaSx1YSl9ZnVuY3Rpb24gYXQoKXtpZihFcj09PXZvaWQgMCl7dmFyIEtyPWUuZmlsdGVyKFllLGZ1bmN0aW9uKF9pKXtyZXR1cm4gZS5zb3VyY2VGaWxlTWF5QmVFbWl0dGVkKF9pLElpKX0pO0VyPWUuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KGRlLGZ1bmN0aW9uKCl7cmV0dXJuIGUubWFwRGVmaW5lZChLcixmdW5jdGlvbihfaSl7cmV0dXJuIF9pLmlzRGVjbGFyYXRpb25GaWxlP3ZvaWQgMDpfaS5maWxlTmFtZX0pfSxYaSx1YSxmdW5jdGlvbihfaSl7cmV0dXJuIGpyKEtyLF9pKX0pfXJldHVybiBFcn1mdW5jdGlvbiBBdCgpe3ZhciBLcjtpZighbil7eG4oKSxuPW5ldyBlLlNldDtmb3IodmFyIF9pPTAsRWk9WWU7X2k8RWkubGVuZ3RoO19pKyspe3ZhciB0dD1FaVtfaV07KEtyPXR0LmNsYXNzaWZpYWJsZU5hbWVzKT09PW51bGx8fEtyPT09dm9pZCAwfHxLci5mb3JFYWNoKGZ1bmN0aW9uKGt0KXtyZXR1cm4gbi5hZGQoa3QpfSl9fXJldHVybiBufWZ1bmN0aW9uIGJhKEtyLF9pKXtpZih2aT09PTAmJiFfaS5hbWJpZW50TW9kdWxlTmFtZXMubGVuZ3RoKXJldHVybiB1aShLcixfaSx2b2lkIDApO3ZhciBFaT1lciYmZXIuZ2V0U291cmNlRmlsZShfaS5maWxlTmFtZSk7aWYoRWkhPT1faSYmX2kucmVzb2x2ZWRNb2R1bGVzKXtmb3IodmFyIHR0PVtdLGt0PTAsYnQ9MCxpYT1LcjtidDxpYS5sZW5ndGg7YnQrKyl7dmFyIFh0PWlhW2J0XSxaYT1faS5yZXNvbHZlZE1vZHVsZXMuZ2V0KFh0LGhlKF9pLGt0KSk7a3QrKyx0dC5wdXNoKFphKX1yZXR1cm4gdHR9Zm9yKHZhciBibixfYSxxYSxybj17fSxrdD0wO2t0PEtyLmxlbmd0aDtrdCsrKXt2YXIgWHQ9S3Jba3RdO2lmKF9pPT09RWkmJiFYZShFaS5wYXRoKSl7dmFyIGpuPWUuZ2V0UmVzb2x2ZWRNb2R1bGUoRWksWHQsaGUoRWksa3QpKTtpZihqbil7ZS5pc1RyYWNlRW5hYmxlZChkZSxwZSkmJmUudHJhY2UocGUsam4ucGFja2FnZUlkP2UuRGlhZ25vc3RpY3MuUmV1c2luZ19yZXNvbHV0aW9uX29mX21vZHVsZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzJfd2l0aF9QYWNrYWdlX0lEXzM6ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX29mX29sZF9wcm9ncmFtX2l0X3dhc19zdWNjZXNzZnVsbHlfcmVzb2x2ZWRfdG9fMixYdCxlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoX2kub3JpZ2luYWxGaWxlTmFtZSxYaSksam4ucmVzb2x2ZWRGaWxlTmFtZSxqbi5wYWNrYWdlSWQmJmUucGFja2FnZUlkVG9TdHJpbmcoam4ucGFja2FnZUlkKSksKF9hfHwoX2E9bmV3IEFycmF5KEtyLmxlbmd0aCkpKVtrdF09am4sKHFhfHwocWE9W10pKS5wdXNoKFh0KTtjb250aW51ZX19dmFyIE1vPSExO2UuY29udGFpbnMoX2kuYW1iaWVudE1vZHVsZU5hbWVzLFh0KT8oTW89ITAsZS5pc1RyYWNlRW5hYmxlZChkZSxwZSkmJmUudHJhY2UocGUsZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF93YXNfcmVzb2x2ZWRfYXNfbG9jYWxseV9kZWNsYXJlZF9hbWJpZW50X21vZHVsZV9pbl9maWxlXzEsWHQsZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKF9pLm9yaWdpbmFsRmlsZU5hbWUsWGkpKSk6TW89U2UoWHQsa3QpLE1vPyhfYXx8KF9hPW5ldyBBcnJheShLci5sZW5ndGgpKSlba3RdPXJuOihibnx8KGJuPVtdKSkucHVzaChYdCl9dmFyIGhvPWJuJiZibi5sZW5ndGg/dWkoYm4sX2kscWEpOmUuZW1wdHlBcnJheTtpZighX2EpcmV0dXJuIGUuRGVidWcuYXNzZXJ0KGhvLmxlbmd0aD09PUtyLmxlbmd0aCksaG87Zm9yKHZhciBncz0wLGt0PTA7a3Q8X2EubGVuZ3RoO2t0KyspX2Fba3RdP19hW2t0XT09PXJuJiYoX2Fba3RdPXZvaWQgMCk6KF9hW2t0XT1ob1tnc10sZ3MrKyk7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGdzPT09aG8ubGVuZ3RoKSxfYTtmdW5jdGlvbiBTZShocixPcil7aWYoT3I+PWUubGVuZ3RoKEVpPT1udWxsP3ZvaWQgMDpFaS5pbXBvcnRzKStlLmxlbmd0aChFaT09bnVsbD92b2lkIDA6RWkubW9kdWxlQXVnbWVudGF0aW9ucykpcmV0dXJuITE7dmFyIGtpPWUuZ2V0UmVzb2x2ZWRNb2R1bGUoRWksaHIsRWkmJmhlKEVpLE9yKSksZHQ9a2kmJmVyLmdldFNvdXJjZUZpbGUoa2kucmVzb2x2ZWRGaWxlTmFtZSk7aWYoa2kmJmR0KXJldHVybiExO3ZhciBsYT1sci5nZXQoaHIpO3JldHVybiBsYT8oZS5pc1RyYWNlRW5hYmxlZChkZSxwZSkmJmUudHJhY2UocGUsZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF93YXNfcmVzb2x2ZWRfYXNfYW1iaWVudF9tb2R1bGVfZGVjbGFyZWRfaW5fMV9zaW5jZV90aGlzX2ZpbGVfd2FzX25vdF9tb2RpZmllZCxocixsYSksITApOiExfX1mdW5jdGlvbiAkYSgpe3JldHVybiF5KGVyLmdldFByb2plY3RSZWZlcmVuY2VzKCksZXIuZ2V0UmVzb2x2ZWRQcm9qZWN0UmVmZXJlbmNlcygpLGZ1bmN0aW9uKEtyLF9pLEVpKXt2YXIgdHQ9KF9pP19pLmNvbW1hbmRMaW5lLnByb2plY3RSZWZlcmVuY2VzOkFlKVtFaV0sa3Q9Zm8odHQpO3JldHVybiBLcj8ha3R8fGt0LnNvdXJjZUZpbGUhPT1Lci5zb3VyY2VGaWxlfHwhZS5hcnJheUlzRXF1YWxUbyhLci5jb21tYW5kTGluZS5maWxlTmFtZXMsa3QuY29tbWFuZExpbmUuZmlsZU5hbWVzKTprdCE9PXZvaWQgMH0sZnVuY3Rpb24oS3IsX2kpe3ZhciBFaT1faT95aShfaS5zb3VyY2VGaWxlLnBhdGgpLmNvbW1hbmRMaW5lLnByb2plY3RSZWZlcmVuY2VzOkFlO3JldHVybiFlLmFycmF5SXNFcXVhbFRvKEtyLEVpLGUucHJvamVjdFJlZmVyZW5jZUlzRXF1YWxUbyl9KX1mdW5jdGlvbiBRYSgpe3ZhciBLcjtpZighZXIpcmV0dXJuIDA7dmFyIF9pPWVyLmdldENvbXBpbGVyT3B0aW9ucygpO2lmKGUuY2hhbmdlc0FmZmVjdE1vZHVsZVJlc29sdXRpb24oX2ksZGUpKXJldHVybiAwO3ZhciBFaT1lci5nZXRSb290RmlsZU5hbWVzKCk7aWYoIWUuYXJyYXlJc0VxdWFsVG8oRWksd2UpfHwhJGEoKSlyZXR1cm4gMDtBZSYmKEFyPUFlLm1hcChmbykpO3ZhciB0dD1bXSxrdD1bXTtpZih2aT0yLGVyLmdldE1pc3NpbmdGaWxlUGF0aHMoKS5zb21lKGZ1bmN0aW9uKExzKXtyZXR1cm4gcGUuZmlsZUV4aXN0cyhMcyl9KSlyZXR1cm4gMDt2YXIgYnQ9ZXIuZ2V0U291cmNlRmlsZXMoKSxpYTsoZnVuY3Rpb24oTHMpe0xzW0xzLkV4aXN0cz0wXT1cIkV4aXN0c1wiLExzW0xzLk1vZGlmaWVkPTFdPVwiTW9kaWZpZWRcIn0pKGlhfHwoaWE9e30pKTtmb3IodmFyIFh0PW5ldyBlLk1hcCxaYT0wLGJuPWJ0O1phPGJuLmxlbmd0aDtaYSsrKXt2YXIgX2E9Ym5bWmFdLHFhPXBlLmdldFNvdXJjZUZpbGVCeVBhdGg/cGUuZ2V0U291cmNlRmlsZUJ5UGF0aChfYS5maWxlTmFtZSxfYS5yZXNvbHZlZFBhdGgsWHMoX2EuZmlsZU5hbWUsX3IscGUsZGUpLHZvaWQgMCxUcik6cGUuZ2V0U291cmNlRmlsZShfYS5maWxlTmFtZSxYcyhfYS5maWxlTmFtZSxfcixwZSxkZSksdm9pZCAwLFRyKTtpZighcWEpcmV0dXJuIDA7ZS5EZWJ1Zy5hc3NlcnQoIXFhLnJlZGlyZWN0SW5mbyxcIkhvc3Qgc2hvdWxkIG5vdCByZXR1cm4gYSByZWRpcmVjdCBzb3VyY2UgZmlsZSBmcm9tIGBnZXRTb3VyY2VGaWxlYFwiKTt2YXIgcm49dm9pZCAwO2lmKF9hLnJlZGlyZWN0SW5mbyl7aWYocWEhPT1fYS5yZWRpcmVjdEluZm8udW5yZWRpcmVjdGVkKXJldHVybiAwO3JuPSExLHFhPV9hfWVsc2UgaWYoZXIucmVkaXJlY3RUYXJnZXRzTWFwLmhhcyhfYS5wYXRoKSl7aWYocWEhPT1fYSlyZXR1cm4gMDtybj0hMX1lbHNlIHJuPXFhIT09X2E7cWEucGF0aD1fYS5wYXRoLHFhLm9yaWdpbmFsRmlsZU5hbWU9X2Eub3JpZ2luYWxGaWxlTmFtZSxxYS5yZXNvbHZlZFBhdGg9X2EucmVzb2x2ZWRQYXRoLHFhLmZpbGVOYW1lPV9hLmZpbGVOYW1lO3ZhciBqbj1lci5zb3VyY2VGaWxlVG9QYWNrYWdlTmFtZS5nZXQoX2EucGF0aCk7aWYoam4hPT12b2lkIDApe3ZhciBNbz1YdC5nZXQoam4pLGhvPXJuPzE6MDtpZihNbyE9PXZvaWQgMCYmaG89PT0xfHxNbz09PTEpcmV0dXJuIDA7WHQuc2V0KGpuLGhvKX1ybj8oZS5hcnJheUlzRXF1YWxUbyhfYS5saWJSZWZlcmVuY2VEaXJlY3RpdmVzLHFhLmxpYlJlZmVyZW5jZURpcmVjdGl2ZXMsQ3QpfHwodmk9MSksX2EuaGFzTm9EZWZhdWx0TGliIT09cWEuaGFzTm9EZWZhdWx0TGliJiYodmk9MSksZS5hcnJheUlzRXF1YWxUbyhfYS5yZWZlcmVuY2VkRmlsZXMscWEucmVmZXJlbmNlZEZpbGVzLEN0KXx8KHZpPTEpLFdhKHFhKSxlLmFycmF5SXNFcXVhbFRvKF9hLmltcG9ydHMscWEuaW1wb3J0cyxzYSl8fCh2aT0xKSxlLmFycmF5SXNFcXVhbFRvKF9hLm1vZHVsZUF1Z21lbnRhdGlvbnMscWEubW9kdWxlQXVnbWVudGF0aW9ucyxzYSl8fCh2aT0xKSwoX2EuZmxhZ3MmNjI5MTQ1NikhPT0ocWEuZmxhZ3MmNjI5MTQ1NikmJih2aT0xKSxlLmFycmF5SXNFcXVhbFRvKF9hLnR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzLHFhLnR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzLEN0KXx8KHZpPTEpLGt0LnB1c2goe29sZEZpbGU6X2EsbmV3RmlsZTpxYX0pKTpYZShfYS5wYXRoKSYmKHZpPTEsa3QucHVzaCh7b2xkRmlsZTpfYSxuZXdGaWxlOnFhfSkpLHR0LnB1c2gocWEpfWlmKHZpIT09MilyZXR1cm4gdmk7Zm9yKHZhciBncz1rdC5tYXAoZnVuY3Rpb24oTHMpe3JldHVybiBMcy5vbGRGaWxlfSksU2U9MCxocj1idDtTZTxoci5sZW5ndGg7U2UrKyl7dmFyIE9yPWhyW1NlXTtpZighZS5jb250YWlucyhncyxPcikpZm9yKHZhciBraT0wLGR0PU9yLmFtYmllbnRNb2R1bGVOYW1lcztraTxkdC5sZW5ndGg7a2krKyl7dmFyIGxhPWR0W2tpXTtsci5zZXQobGEsT3IuZmlsZU5hbWUpfX1mb3IodmFyIHdhPTAsT249a3Q7d2E8T24ubGVuZ3RoO3dhKyspe3ZhciBObz1Pblt3YV0sX2E9Tm8ub2xkRmlsZSxxYT1Oby5uZXdGaWxlLGpvPVdlKHFhKSxwbz1iYShqbyxxYSksR249ZS5oYXNDaGFuZ2VzSW5SZXNvbHV0aW9ucyhqbyxwbyxfYS5yZXNvbHZlZE1vZHVsZXMsX2EsZS5tb2R1bGVSZXNvbHV0aW9uSXNFcXVhbFRvKTtHbj8odmk9MSxxYS5yZXNvbHZlZE1vZHVsZXM9ZS56aXBUb01vZGVBd2FyZUNhY2hlKHFhLGpvLHBvKSk6cWEucmVzb2x2ZWRNb2R1bGVzPV9hLnJlc29sdmVkTW9kdWxlczt2YXIgJG49cWEudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMsSG89QnQoJG4scWEpLFpvPWUuaGFzQ2hhbmdlc0luUmVzb2x1dGlvbnMoJG4sSG8sX2EucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlTmFtZXMsX2EsZS50eXBlRGlyZWN0aXZlSXNFcXVhbFRvKTtabz8odmk9MSxxYS5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVOYW1lcz1lLnppcFRvTW9kZUF3YXJlQ2FjaGUocWEsJG4sSG8pKTpxYS5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVOYW1lcz1fYS5yZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVOYW1lc31pZih2aSE9PTIpcmV0dXJuIHZpO2lmKGUuY2hhbmdlc0FmZmVjdGluZ1Byb2dyYW1TdHJ1Y3R1cmUoX2ksZGUpfHwoKEtyPXBlLmhhc0NoYW5nZWRBdXRvbWF0aWNUeXBlRGlyZWN0aXZlTmFtZXMpPT09bnVsbHx8S3I9PT12b2lkIDA/dm9pZCAwOktyLmNhbGwocGUpKSlyZXR1cm4gMTt2cj1lci5nZXRNaXNzaW5nRmlsZVBhdGhzKCksZS5EZWJ1Zy5hc3NlcnQodHQubGVuZ3RoPT09ZXIuZ2V0U291cmNlRmlsZXMoKS5sZW5ndGgpO2Zvcih2YXIgRXM9MCx5Yz10dDtFczx5Yy5sZW5ndGg7RXMrKyl7dmFyIHFhPXljW0VzXTt4ZS5zZXQocWEucGF0aCxxYSl9dmFyIFhyPWVyLmdldEZpbGVzQnlOYW1lTWFwKCk7cmV0dXJuIFhyLmZvckVhY2goZnVuY3Rpb24oTHMsSWMpe2lmKCFMcyl7eGUuc2V0KEljLExzKTtyZXR1cm59aWYoTHMucGF0aD09PUljKXtlci5pc1NvdXJjZUZpbGVGcm9tRXh0ZXJuYWxMaWJyYXJ5KExzKSYmbWkuc2V0KExzLnBhdGgsITApO3JldHVybn14ZS5zZXQoSWMseGUuZ2V0KExzLnBhdGgpKX0pLFllPXR0LGJlPWVyLmdldEZpbGVJbmNsdWRlUmVhc29ucygpLElyPWVyLmdldEZpbGVQcm9jZXNzaW5nRGlhZ25vc3RpY3MoKSx5cj1lci5nZXRSZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzKCksenI9ZXIuc291cmNlRmlsZVRvUGFja2FnZU5hbWUsV3I9ZXIucmVkaXJlY3RUYXJnZXRzTWFwLEplPWVyLnVzZXNVcmlTdHlsZU5vZGVDb3JlTW9kdWxlcywyfWZ1bmN0aW9uIGFpKEtyKXtyZXR1cm57Z2V0UHJlcGVuZE5vZGVzOkNuLGdldENhbm9uaWNhbEZpbGVOYW1lOnVhLGdldENvbW1vblNvdXJjZURpcmVjdG9yeTpJaS5nZXRDb21tb25Tb3VyY2VEaXJlY3RvcnksZ2V0Q29tcGlsZXJPcHRpb25zOklpLmdldENvbXBpbGVyT3B0aW9ucyxnZXRDdXJyZW50RGlyZWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIFhpfSxnZXROZXdMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHBlLmdldE5ld0xpbmUoKX0sZ2V0U291cmNlRmlsZTpJaS5nZXRTb3VyY2VGaWxlLGdldFNvdXJjZUZpbGVCeVBhdGg6SWkuZ2V0U291cmNlRmlsZUJ5UGF0aCxnZXRTb3VyY2VGaWxlczpJaS5nZXRTb3VyY2VGaWxlcyxnZXRMaWJGaWxlRnJvbVJlZmVyZW5jZTpJaS5nZXRMaWJGaWxlRnJvbVJlZmVyZW5jZSxpc1NvdXJjZUZpbGVGcm9tRXh0ZXJuYWxMaWJyYXJ5OkJpLGdldFJlc29sdmVkUHJvamVjdFJlZmVyZW5jZVRvUmVkaXJlY3Q6ZHMsZ2V0UHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0OnBzLGlzU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q6UnIsZ2V0U3ltbGlua0NhY2hlOnZjLHdyaXRlRmlsZTpLcnx8RG4saXNFbWl0QmxvY2tlZDpQbixyZWFkRmlsZTpmdW5jdGlvbihfaSl7cmV0dXJuIHBlLnJlYWRGaWxlKF9pKX0sZmlsZUV4aXN0czpmdW5jdGlvbihfaSl7dmFyIEVpPVZpKF9pKTtyZXR1cm4gRGEoRWkpPyEwOmUuY29udGFpbnModnIsRWkpPyExOnBlLmZpbGVFeGlzdHMoX2kpfSx1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKX0sZ2V0UHJvZ3JhbUJ1aWxkSW5mbzpmdW5jdGlvbigpe3JldHVybiBJaS5nZXRQcm9ncmFtQnVpbGRJbmZvJiZJaS5nZXRQcm9ncmFtQnVpbGRJbmZvKCl9LGdldFNvdXJjZUZpbGVGcm9tUmVmZXJlbmNlOmZ1bmN0aW9uKF9pLEVpKXtyZXR1cm4gSWkuZ2V0U291cmNlRmlsZUZyb21SZWZlcmVuY2UoX2ksRWkpfSxyZWRpcmVjdFRhcmdldHNNYXA6V3IsZ2V0RmlsZUluY2x1ZGVSZWFzb25zOklpLmdldEZpbGVJbmNsdWRlUmVhc29uc319ZnVuY3Rpb24gRG4oS3IsX2ksRWksdHQsa3QsYnQpe3BlLndyaXRlRmlsZShLcixfaSxFaSx0dCxrdCxidCl9ZnVuY3Rpb24ga2EoS3Ipe2UuRGVidWcuYXNzZXJ0KCFlLm91dEZpbGUoZGUpKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwiZW1pdFwiLFwiZW1pdEJ1aWxkSW5mb1wiLHt9LCEwKSxlLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVFbWl0XCIpO3ZhciBfaT1lLmVtaXRGaWxlcyhlLm5vdEltcGxlbWVudGVkUmVzb2x2ZXIsYWkoS3IpLHZvaWQgMCxlLm5vVHJhbnNmb3JtZXJzLCExLCEwKTtyZXR1cm4gZS5wZXJmb3JtYW5jZS5tYXJrKFwiYWZ0ZXJFbWl0XCIpLGUucGVyZm9ybWFuY2UubWVhc3VyZShcIkVtaXRcIixcImJlZm9yZUVtaXRcIixcImFmdGVyRW1pdFwiKSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSxfaX1mdW5jdGlvbiBCYSgpe3JldHVybiBBcn1mdW5jdGlvbiBwbigpe3JldHVybiBBZX1mdW5jdGlvbiBDbigpe3JldHVybiBnKEFlLGZ1bmN0aW9uKEtyLF9pKXt2YXIgRWk7cmV0dXJuKEVpPUFyW19pXSk9PT1udWxsfHxFaT09PXZvaWQgMD92b2lkIDA6RWkuY29tbWFuZExpbmV9LGZ1bmN0aW9uKEtyKXt2YXIgX2k9VmkoS3IpLEVpPURhKF9pKTtyZXR1cm4gRWk/RWkudGV4dDp4ZS5oYXMoX2kpP3ZvaWQgMDpwZS5yZWFkRmlsZShfaSl9KX1mdW5jdGlvbiBCaShLcil7cmV0dXJuISFtaS5nZXQoS3IucGF0aCl9ZnVuY3Rpb24ga24oS3Ipe2lmKCFLci5pc0RlY2xhcmF0aW9uRmlsZSlyZXR1cm4hMTtpZihLci5oYXNOb0RlZmF1bHRMaWIpcmV0dXJuITA7aWYoIWRlLm5vTGliKXJldHVybiExO3ZhciBfaT1wZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCk/ZS5lcXVhdGVTdHJpbmdzQ2FzZVNlbnNpdGl2ZTplLmVxdWF0ZVN0cmluZ3NDYXNlSW5zZW5zaXRpdmU7cmV0dXJuIGRlLmxpYj9lLnNvbWUoZGUubGliLGZ1bmN0aW9uKEVpKXtyZXR1cm4gX2koS3IuZmlsZU5hbWUsUHQoRWkpKX0pOl9pKEtyLmZpbGVOYW1lLHNpKCkpfWZ1bmN0aW9uIHhuKCl7cmV0dXJuIE5lfHwoTmU9ZS5jcmVhdGVUeXBlQ2hlY2tlcihJaSkpfWZ1bmN0aW9uIEtuKEtyLF9pLEVpLHR0LGt0LGJ0KXtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwiZW1pdFwiLFwiZW1pdFwiLHtwYXRoOktyPT1udWxsP3ZvaWQgMDpLci5wYXRofSwhMCk7dmFyIGlhPW5vKGZ1bmN0aW9uKCl7cmV0dXJuIGVvKElpLEtyLF9pLEVpLHR0LGt0LGJ0KX0pO3JldHVybiBlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKSxpYX1mdW5jdGlvbiBQbihLcil7cmV0dXJuIFd0LmhhcyhWaShLcikpfWZ1bmN0aW9uIGVvKEtyLF9pLEVpLHR0LGt0LGJ0LGlhKXtpZighaWEpe3ZhciBYdD1kKEtyLF9pLEVpLHR0KTtpZihYdClyZXR1cm4gWHR9dmFyIFphPXhuKCkuZ2V0RW1pdFJlc29sdmVyKGUub3V0RmlsZShkZSk/dm9pZCAwOl9pLHR0KTtlLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVFbWl0XCIpO3ZhciBibj1lLmVtaXRGaWxlcyhaYSxhaShFaSksX2ksZS5nZXRUcmFuc2Zvcm1lcnMoZGUsYnQsa3QpLGt0LCExLGlhKTtyZXR1cm4gZS5wZXJmb3JtYW5jZS5tYXJrKFwiYWZ0ZXJFbWl0XCIpLGUucGVyZm9ybWFuY2UubWVhc3VyZShcIkVtaXRcIixcImJlZm9yZUVtaXRcIixcImFmdGVyRW1pdFwiKSxibn1mdW5jdGlvbiBSbihLcil7cmV0dXJuIERhKFZpKEtyKSl9ZnVuY3Rpb24gRGEoS3Ipe3JldHVybiB4ZS5nZXQoS3IpfHx2b2lkIDB9ZnVuY3Rpb24gYm8oS3IsX2ksRWkpe3JldHVybiBLcj9faShLcixFaSk6ZS5zb3J0QW5kRGVkdXBsaWNhdGVEaWFnbm9zdGljcyhlLmZsYXRNYXAoSWkuZ2V0U291cmNlRmlsZXMoKSxmdW5jdGlvbih0dCl7cmV0dXJuIEVpJiZFaS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCksX2kodHQsRWkpfSkpfWZ1bmN0aW9uIFJvKEtyLF9pKXtyZXR1cm4gYm8oS3IsT28sX2kpfWZ1bmN0aW9uIEVuKEtyLF9pKXtyZXR1cm4gYm8oS3IsJG8sX2kpfWZ1bmN0aW9uIFduKEtyKXt2YXIgX2k7cmV0dXJuIEtyPyhfaT1HZS5wZXJGaWxlKT09PW51bGx8fF9pPT09dm9pZCAwP3ZvaWQgMDpfaS5nZXQoS3IucGF0aCk6R2UuYWxsRGlhZ25vc3RpY3N9ZnVuY3Rpb24gdG8oS3IsX2kpe3JldHVybiBQcihLcixfaSl9ZnVuY3Rpb24gQ28oS3Ipe3ZhciBfaTtpZihlLnNraXBUeXBlQ2hlY2tpbmcoS3IsZGUsSWkpKXJldHVybiBlLmVtcHR5QXJyYXk7dmFyIEVpPXdpLmdldERpYWdub3N0aWNzKEtyLmZpbGVOYW1lKTtyZXR1cm4hKChfaT1Lci5jb21tZW50RGlyZWN0aXZlcyk9PT1udWxsfHxfaT09PXZvaWQgMCkmJl9pLmxlbmd0aD9wYShLcixLci5jb21tZW50RGlyZWN0aXZlcyxFaSkuZGlhZ25vc3RpY3M6RWl9ZnVuY3Rpb24gS28oS3IsX2kpe3ZhciBFaT1JaS5nZXRDb21waWxlck9wdGlvbnMoKTtyZXR1cm4hS3J8fGUub3V0RmlsZShFaSk/R3IoS3IsX2kpOmJvKEtyLHFlLF9pKX1mdW5jdGlvbiBPbyhLcil7cmV0dXJuIGUuaXNTb3VyY2VGaWxlSlMoS3IpPyhLci5hZGRpdGlvbmFsU3ludGFjdGljRGlhZ25vc3RpY3N8fChLci5hZGRpdGlvbmFsU3ludGFjdGljRGlhZ25vc3RpY3M9UWUoS3IpKSxlLmNvbmNhdGVuYXRlKEtyLmFkZGl0aW9uYWxTeW50YWN0aWNEaWFnbm9zdGljcyxLci5wYXJzZURpYWdub3N0aWNzKSk6S3IucGFyc2VEaWFnbm9zdGljc31mdW5jdGlvbiBubyhLcil7dHJ5e3JldHVybiBLcigpfWNhdGNoKF9pKXt0aHJvdyBfaSBpbnN0YW5jZW9mIGUuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24mJihOZT12b2lkIDApLF9pfX1mdW5jdGlvbiAkbyhLcixfaSl7cmV0dXJuIGUuY29uY2F0ZW5hdGUoRChQcihLcixfaSksZGUpLENvKEtyKSl9ZnVuY3Rpb24gUHIoS3IsX2kpe3JldHVybiBDZShLcixfaSxHZSx4aSl9ZnVuY3Rpb24geGkoS3IsX2kpe3JldHVybiBubyhmdW5jdGlvbigpe2lmKGUuc2tpcFR5cGVDaGVja2luZyhLcixkZSxJaSkpcmV0dXJuIGUuZW1wdHlBcnJheTt2YXIgRWk9eG4oKTtlLkRlYnVnLmFzc2VydCghIUtyLmJpbmREaWFnbm9zdGljcyk7dmFyIHR0PUtyLnNjcmlwdEtpbmQ9PT0xfHxLci5zY3JpcHRLaW5kPT09MixrdD10dCYmZS5pc0NoZWNrSnNFbmFibGVkRm9yRmlsZShLcixkZSksYnQ9ZS5pc1BsYWluSnNGaWxlKEtyLGRlLmNoZWNrSnMpLGlhPSEhS3IuY2hlY2tKc0RpcmVjdGl2ZSYmS3IuY2hlY2tKc0RpcmVjdGl2ZS5lbmFibGVkPT09ITEsWHQ9IWlhJiYoS3Iuc2NyaXB0S2luZD09PTN8fEtyLnNjcmlwdEtpbmQ9PT00fHxLci5zY3JpcHRLaW5kPT09NXx8YnR8fGt0fHxLci5zY3JpcHRLaW5kPT09NyksWmE9WHQ/S3IuYmluZERpYWdub3N0aWNzOmUuZW1wdHlBcnJheSxibj1YdD9FaS5nZXREaWFnbm9zdGljcyhLcixfaSk6ZS5lbXB0eUFycmF5O3JldHVybiBidCYmKFphPWUuZmlsdGVyKFphLGZ1bmN0aW9uKF9hKXtyZXR1cm4gZS5wbGFpbkpTRXJyb3JzLmhhcyhfYS5jb2RlKX0pLGJuPWUuZmlsdGVyKGJuLGZ1bmN0aW9uKF9hKXtyZXR1cm4gZS5wbGFpbkpTRXJyb3JzLmhhcyhfYS5jb2RlKX0pKSxTdChLcixYdCYmIWJ0LFphLGJuLGt0P0tyLmpzRG9jRGlhZ25vc3RpY3M6dm9pZCAwKX0pfWZ1bmN0aW9uIFN0KEtyLF9pKXtmb3IodmFyIEVpLHR0PVtdLGt0PTI7a3Q8YXJndW1lbnRzLmxlbmd0aDtrdCsrKXR0W2t0LTJdPWFyZ3VtZW50c1trdF07dmFyIGJ0PWUuZmxhdHRlbih0dCk7aWYoIV9pfHwhKCEoKEVpPUtyLmNvbW1lbnREaXJlY3RpdmVzKT09PW51bGx8fEVpPT09dm9pZCAwKSYmRWkubGVuZ3RoKSlyZXR1cm4gYnQ7Zm9yKHZhciBpYT1wYShLcixLci5jb21tZW50RGlyZWN0aXZlcyxidCksWHQ9aWEuZGlhZ25vc3RpY3MsWmE9aWEuZGlyZWN0aXZlcyxibj0wLF9hPVphLmdldFVudXNlZEV4cGVjdGF0aW9ucygpO2JuPF9hLmxlbmd0aDtibisrKXt2YXIgcWE9X2FbYm5dO1h0LnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yUmFuZ2UoS3IscWEucmFuZ2UsZS5EaWFnbm9zdGljcy5VbnVzZWRfdHNfZXhwZWN0X2Vycm9yX2RpcmVjdGl2ZSkpfXJldHVybiBYdH1mdW5jdGlvbiBwYShLcixfaSxFaSl7dmFyIHR0PWUuY3JlYXRlQ29tbWVudERpcmVjdGl2ZXNNYXAoS3IsX2kpLGt0PUVpLmZpbHRlcihmdW5jdGlvbihidCl7cmV0dXJuIEpuKGJ0LHR0KT09PS0xfSk7cmV0dXJue2RpYWdub3N0aWNzOmt0LGRpcmVjdGl2ZXM6dHR9fWZ1bmN0aW9uIGRuKEtyLF9pKXtyZXR1cm4gbm8oZnVuY3Rpb24oKXtyZXR1cm4geG4oKS5nZXRTdWdnZXN0aW9uRGlhZ25vc3RpY3MoS3IsX2kpfSl9ZnVuY3Rpb24gSm4oS3IsX2kpe3ZhciBFaT1Lci5maWxlLHR0PUtyLnN0YXJ0O2lmKCFFaSlyZXR1cm4tMTtmb3IodmFyIGt0PWUuZ2V0TGluZVN0YXJ0cyhFaSksYnQ9ZS5jb21wdXRlTGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oa3QsdHQpLmxpbmUtMTtidD49MDspe2lmKF9pLm1hcmtVc2VkKGJ0KSlyZXR1cm4gYnQ7dmFyIGlhPUVpLnRleHQuc2xpY2Uoa3RbYnRdLGt0W2J0KzFdKS50cmltKCk7aWYoaWEhPT1cIlwiJiYhL14oXFxzKilcXC9cXC8oLiopJC8udGVzdChpYSkpcmV0dXJuLTE7YnQtLX1yZXR1cm4tMX1mdW5jdGlvbiBRZShLcil7cmV0dXJuIG5vKGZ1bmN0aW9uKCl7dmFyIF9pPVtdO3JldHVybiBFaShLcixLciksZS5mb3JFYWNoQ2hpbGRSZWN1cnNpdmVseShLcixFaSx0dCksX2k7ZnVuY3Rpb24gRWkoWHQsWmEpe3N3aXRjaChaYS5raW5kKXtjYXNlIDE2NDpjYXNlIDE2NzpjYXNlIDE2OTppZihaYS5xdWVzdGlvblRva2VuPT09WHQpcmV0dXJuIF9pLnB1c2goaWEoWHQsZS5EaWFnbm9zdGljcy5UaGVfMF9tb2RpZmllcl9jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXMsXCI/XCIpKSxcInNraXBcIjtjYXNlIDE2ODpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDIxMzpjYXNlIDI1NjpjYXNlIDIxNDpjYXNlIDI1NDppZihaYS50eXBlPT09WHQpcmV0dXJuIF9pLnB1c2goaWEoWHQsZS5EaWFnbm9zdGljcy5UeXBlX2Fubm90YXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcykpLFwic2tpcFwifXN3aXRjaChYdC5raW5kKXtjYXNlIDI2NzppZihYdC5pc1R5cGVPbmx5KXJldHVybiBfaS5wdXNoKGlhKFphLGUuRGlhZ25vc3RpY3MuXzBfZGVjbGFyYXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcyxcImltcG9ydCB0eXBlXCIpKSxcInNraXBcIjticmVhaztjYXNlIDI3MjppZihYdC5pc1R5cGVPbmx5KXJldHVybiBfaS5wdXNoKGlhKFh0LGUuRGlhZ25vc3RpY3MuXzBfZGVjbGFyYXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcyxcImV4cG9ydCB0eXBlXCIpKSxcInNraXBcIjticmVhaztjYXNlIDI3MDpjYXNlIDI3NTppZihYdC5pc1R5cGVPbmx5KXJldHVybiBfaS5wdXNoKGlhKFh0LGUuRGlhZ25vc3RpY3MuXzBfZGVjbGFyYXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcyxlLmlzSW1wb3J0U3BlY2lmaWVyKFh0KT9cImltcG9ydC4uLnR5cGVcIjpcImV4cG9ydC4uLnR5cGVcIikpLFwic2tpcFwiO2JyZWFrO2Nhc2UgMjY1OnJldHVybiBfaS5wdXNoKGlhKFh0LGUuRGlhZ25vc3RpY3MuaW1wb3J0X2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcykpLFwic2tpcFwiO2Nhc2UgMjcxOmlmKFh0LmlzRXhwb3J0RXF1YWxzKXJldHVybiBfaS5wdXNoKGlhKFh0LGUuRGlhZ25vc3RpY3MuZXhwb3J0X2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcykpLFwic2tpcFwiO2JyZWFrO2Nhc2UgMjkxOnZhciBibj1YdDtpZihibi50b2tlbj09PTExNylyZXR1cm4gX2kucHVzaChpYShYdCxlLkRpYWdub3N0aWNzLmltcGxlbWVudHNfY2xhdXNlc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXMpKSxcInNraXBcIjticmVhaztjYXNlIDI1ODp2YXIgX2E9ZS50b2tlblRvU3RyaW5nKDExOCk7cmV0dXJuIGUuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKF9hKSxfaS5wdXNoKGlhKFh0LGUuRGlhZ25vc3RpY3MuXzBfZGVjbGFyYXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcyxfYSkpLFwic2tpcFwiO2Nhc2UgMjYxOnZhciBxYT1YdC5mbGFncyYxNj9lLnRva2VuVG9TdHJpbmcoMTQyKTplLnRva2VuVG9TdHJpbmcoMTQxKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQocWEpLF9pLnB1c2goaWEoWHQsZS5EaWFnbm9zdGljcy5fMF9kZWNsYXJhdGlvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzLHFhKSksXCJza2lwXCI7Y2FzZSAyNTk6cmV0dXJuIF9pLnB1c2goaWEoWHQsZS5EaWFnbm9zdGljcy5UeXBlX2FsaWFzZXNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzKSksXCJza2lwXCI7Y2FzZSAyNjA6dmFyIHJuPWUuRGVidWcuY2hlY2tEZWZpbmVkKGUudG9rZW5Ub1N0cmluZyg5MikpO3JldHVybiBfaS5wdXNoKGlhKFh0LGUuRGlhZ25vc3RpY3MuXzBfZGVjbGFyYXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcyxybikpLFwic2tpcFwiO2Nhc2UgMjMwOnJldHVybiBfaS5wdXNoKGlhKFh0LGUuRGlhZ25vc3RpY3MuTm9uX251bGxfYXNzZXJ0aW9uc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXMpKSxcInNraXBcIjtjYXNlIDIyOTpyZXR1cm4gX2kucHVzaChpYShYdC50eXBlLGUuRGlhZ25vc3RpY3MuVHlwZV9hc3NlcnRpb25fZXhwcmVzc2lvbnNfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzKSksXCJza2lwXCI7Y2FzZSAyMTE6ZS5EZWJ1Zy5mYWlsKCl9fWZ1bmN0aW9uIHR0KFh0LFphKXtzd2l0Y2goWmEuZGVjb3JhdG9ycz09PVh0JiYhZGUuZXhwZXJpbWVudGFsRGVjb3JhdG9ycyYmX2kucHVzaChpYShaYSxlLkRpYWdub3N0aWNzLkV4cGVyaW1lbnRhbF9zdXBwb3J0X2Zvcl9kZWNvcmF0b3JzX2lzX2FfZmVhdHVyZV90aGF0X2lzX3N1YmplY3RfdG9fY2hhbmdlX2luX2FfZnV0dXJlX3JlbGVhc2VfU2V0X3RoZV9leHBlcmltZW50YWxEZWNvcmF0b3JzX29wdGlvbl9pbl95b3VyX3RzY29uZmlnX29yX2pzY29uZmlnX3RvX3JlbW92ZV90aGlzX3dhcm5pbmcpKSxaYS5raW5kKXtjYXNlIDI1NzpjYXNlIDIyNjpjYXNlIDE2OTpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDIxMzpjYXNlIDI1NjpjYXNlIDIxNDppZihYdD09PVphLnR5cGVQYXJhbWV0ZXJzKXJldHVybiBfaS5wdXNoKGJ0KFh0LGUuRGlhZ25vc3RpY3MuVHlwZV9wYXJhbWV0ZXJfZGVjbGFyYXRpb25zX2Nhbl9vbmx5X2JlX3VzZWRfaW5fVHlwZVNjcmlwdF9maWxlcykpLFwic2tpcFwiO2Nhc2UgMjM3OmlmKFh0PT09WmEubW9kaWZpZXJzKXJldHVybiBrdChaYS5tb2RpZmllcnMsWmEua2luZD09PTIzNyksXCJza2lwXCI7YnJlYWs7Y2FzZSAxNjc6aWYoWHQ9PT1aYS5tb2RpZmllcnMpe2Zvcih2YXIgYm49MCxfYT1YdDtibjxfYS5sZW5ndGg7Ym4rKyl7dmFyIHFhPV9hW2JuXTtxYS5raW5kIT09MTI0JiZfaS5wdXNoKGlhKHFhLGUuRGlhZ25vc3RpY3MuVGhlXzBfbW9kaWZpZXJfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzLGUudG9rZW5Ub1N0cmluZyhxYS5raW5kKSkpfXJldHVyblwic2tpcFwifWJyZWFrO2Nhc2UgMTY0OmlmKFh0PT09WmEubW9kaWZpZXJzKXJldHVybiBfaS5wdXNoKGJ0KFh0LGUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyX21vZGlmaWVyc19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXMpKSxcInNraXBcIjticmVhaztjYXNlIDIwODpjYXNlIDIwOTpjYXNlIDIyODpjYXNlIDI3OTpjYXNlIDI4MDpjYXNlIDIxMDppZihYdD09PVphLnR5cGVBcmd1bWVudHMpcmV0dXJuIF9pLnB1c2goYnQoWHQsZS5EaWFnbm9zdGljcy5UeXBlX2FyZ3VtZW50c19jYW5fb25seV9iZV91c2VkX2luX1R5cGVTY3JpcHRfZmlsZXMpKSxcInNraXBcIjticmVha319ZnVuY3Rpb24ga3QoWHQsWmEpe2Zvcih2YXIgYm49MCxfYT1YdDtibjxfYS5sZW5ndGg7Ym4rKyl7dmFyIHFhPV9hW2JuXTtzd2l0Y2gocWEua2luZCl7Y2FzZSA4NTppZihaYSljb250aW51ZTtjYXNlIDEyMzpjYXNlIDEyMTpjYXNlIDEyMjpjYXNlIDE0NTpjYXNlIDEzNTpjYXNlIDEyNjpjYXNlIDE1OTpjYXNlIDEwMTpjYXNlIDE0NDpfaS5wdXNoKGlhKHFhLGUuRGlhZ25vc3RpY3MuVGhlXzBfbW9kaWZpZXJfY2FuX29ubHlfYmVfdXNlZF9pbl9UeXBlU2NyaXB0X2ZpbGVzLGUudG9rZW5Ub1N0cmluZyhxYS5raW5kKSkpO2JyZWFrO2Nhc2UgMTI0OmNhc2UgOTM6Y2FzZSA4ODp9fX1mdW5jdGlvbiBidChYdCxaYSxibixfYSxxYSl7dmFyIHJuPVh0LnBvcztyZXR1cm4gZS5jcmVhdGVGaWxlRGlhZ25vc3RpYyhLcixybixYdC5lbmQtcm4sWmEsYm4sX2EscWEpfWZ1bmN0aW9uIGlhKFh0LFphLGJuLF9hLHFhKXtyZXR1cm4gZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUluU291cmNlRmlsZShLcixYdCxaYSxibixfYSxxYSl9fSl9ZnVuY3Rpb24gR3IoS3IsX2kpe3JldHVybiBDZShLcixfaSx1cixTKX1mdW5jdGlvbiBTKEtyLF9pKXtyZXR1cm4gbm8oZnVuY3Rpb24oKXt2YXIgRWk9eG4oKS5nZXRFbWl0UmVzb2x2ZXIoS3IsX2kpO3JldHVybiBlLmdldERlY2xhcmF0aW9uRGlhZ25vc3RpY3MoYWkoZS5ub29wKSxFaSxLcil8fGUuZW1wdHlBcnJheX0pfWZ1bmN0aW9uIENlKEtyLF9pLEVpLHR0KXt2YXIga3QsYnQ9S3I/KGt0PUVpLnBlckZpbGUpPT09bnVsbHx8a3Q9PT12b2lkIDA/dm9pZCAwOmt0LmdldChLci5wYXRoKTpFaS5hbGxEaWFnbm9zdGljcztpZihidClyZXR1cm4gYnQ7dmFyIGlhPXR0KEtyLF9pKTtyZXR1cm4gS3I/KEVpLnBlckZpbGV8fChFaS5wZXJGaWxlPW5ldyBlLk1hcCkpLnNldChLci5wYXRoLGlhKTpFaS5hbGxEaWFnbm9zdGljcz1pYSxpYX1mdW5jdGlvbiBxZShLcixfaSl7cmV0dXJuIEtyLmlzRGVjbGFyYXRpb25GaWxlP1tdOkdyKEtyLF9pKX1mdW5jdGlvbiBicigpe3JldHVybiBlLnNvcnRBbmREZWR1cGxpY2F0ZURpYWdub3N0aWNzKGUuY29uY2F0ZW5hdGUod2kuZ2V0R2xvYmFsRGlhZ25vc3RpY3MoKSxacigpKSl9ZnVuY3Rpb24gWnIoKXtpZighZGUuY29uZmlnRmlsZSlyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciBLcj13aS5nZXREaWFnbm9zdGljcyhkZS5jb25maWdGaWxlLmZpbGVOYW1lKTtyZXR1cm4gSmkoZnVuY3Rpb24oX2kpe0tyPWUuY29uY2F0ZW5hdGUoS3Isd2kuZ2V0RGlhZ25vc3RpY3MoX2kuc291cmNlRmlsZS5maWxlTmFtZSkpfSksS3J9ZnVuY3Rpb24gU2koKXtyZXR1cm4gd2UubGVuZ3RoP2Uuc29ydEFuZERlZHVwbGljYXRlRGlhZ25vc3RpY3MoeG4oKS5nZXRHbG9iYWxEaWFnbm9zdGljcygpLnNsaWNlKCkpOmUuZW1wdHlBcnJheX1mdW5jdGlvbiBQaSgpe3JldHVybiB5ZXx8ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIFFpKEtyLF9pLEVpLHR0KXtHbyhlLm5vcm1hbGl6ZVBhdGgoS3IpLF9pLEVpLHZvaWQgMCx0dCl9ZnVuY3Rpb24gQ3QoS3IsX2kpe3JldHVybiBLci5maWxlTmFtZT09PV9pLmZpbGVOYW1lfWZ1bmN0aW9uIHNhKEtyLF9pKXtyZXR1cm4gS3Iua2luZD09PTc5P19pLmtpbmQ9PT03OSYmS3IuZXNjYXBlZFRleHQ9PT1faS5lc2NhcGVkVGV4dDpfaS5raW5kPT09MTAmJktyLnRleHQ9PT1faS50ZXh0fWZ1bmN0aW9uIGVuKEtyLF9pKXt2YXIgRWk9ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoS3IpLHR0PWUuZmFjdG9yeS5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxFaSx2b2lkIDApO3JldHVybiBlLmFkZEVtaXRGbGFncyh0dCw2NzEwODg2NCksZS5zZXRQYXJlbnQoRWksdHQpLGUuc2V0UGFyZW50KHR0LF9pKSxFaS5mbGFncyY9LTksdHQuZmxhZ3MmPS05LEVpfWZ1bmN0aW9uIFdhKEtyKXtpZihLci5pbXBvcnRzKXJldHVybjt2YXIgX2k9ZS5pc1NvdXJjZUZpbGVKUyhLciksRWk9ZS5pc0V4dGVybmFsTW9kdWxlKEtyKSx0dCxrdCxidDtpZigoZGUuaXNvbGF0ZWRNb2R1bGVzfHxFaSkmJiFLci5pc0RlY2xhcmF0aW9uRmlsZSl7ZGUuaW1wb3J0SGVscGVycyYmKHR0PVtlbihlLmV4dGVybmFsSGVscGVyc01vZHVsZU5hbWVUZXh0LEtyKV0pO3ZhciBpYT1lLmdldEpTWFJ1bnRpbWVJbXBvcnQoZS5nZXRKU1hJbXBsaWNpdEltcG9ydEJhc2UoZGUsS3IpLGRlKTtpYSYmKHR0fHwodHQ9W10pKS5wdXNoKGVuKGlhLEtyKSl9Zm9yKHZhciBYdD0wLFphPUtyLnN0YXRlbWVudHM7WHQ8WmEubGVuZ3RoO1h0Kyspe3ZhciBibj1aYVtYdF07X2EoYm4sITEpfShLci5mbGFncyYyMDk3MTUyfHxfaSkmJnFhKEtyKSxLci5pbXBvcnRzPXR0fHxlLmVtcHR5QXJyYXksS3IubW9kdWxlQXVnbWVudGF0aW9ucz1rdHx8ZS5lbXB0eUFycmF5LEtyLmFtYmllbnRNb2R1bGVOYW1lcz1idHx8ZS5lbXB0eUFycmF5O3JldHVybjtmdW5jdGlvbiBfYShqbixNbyl7aWYoZS5pc0FueUltcG9ydE9yUmVFeHBvcnQoam4pKXt2YXIgaG89ZS5nZXRFeHRlcm5hbE1vZHVsZU5hbWUoam4pO2hvJiZlLmlzU3RyaW5nTGl0ZXJhbChobykmJmhvLnRleHQmJighTW98fCFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUoaG8udGV4dCkpJiYoZS5zZXRQYXJlbnRSZWN1cnNpdmUoam4sITEpLHR0PWUuYXBwZW5kKHR0LGhvKSwhSmUmJlVyPT09MCYmIUtyLmlzRGVjbGFyYXRpb25GaWxlJiYoSmU9ZS5zdGFydHNXaXRoKGhvLnRleHQsXCJub2RlOlwiKSkpfWVsc2UgaWYoZS5pc01vZHVsZURlY2xhcmF0aW9uKGpuKSYmZS5pc0FtYmllbnRNb2R1bGUoam4pJiYoTW98fGUuaGFzU3ludGFjdGljTW9kaWZpZXIoam4sMil8fEtyLmlzRGVjbGFyYXRpb25GaWxlKSl7am4ubmFtZS5wYXJlbnQ9am47dmFyIGdzPWUuZ2V0VGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChqbi5uYW1lKTtpZihFaXx8TW8mJiFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUoZ3MpKShrdHx8KGt0PVtdKSkucHVzaChqbi5uYW1lKTtlbHNlIGlmKCFNbyl7S3IuaXNEZWNsYXJhdGlvbkZpbGUmJihidHx8KGJ0PVtdKSkucHVzaChncyk7dmFyIFNlPWpuLmJvZHk7aWYoU2UpZm9yKHZhciBocj0wLE9yPVNlLnN0YXRlbWVudHM7aHI8T3IubGVuZ3RoO2hyKyspe3ZhciBraT1Pcltocl07X2Eoa2ksITApfX19fWZ1bmN0aW9uIHFhKGpuKXtmb3IodmFyIE1vPS9pbXBvcnR8cmVxdWlyZS9nO01vLmV4ZWMoam4udGV4dCkhPT1udWxsOyl7dmFyIGhvPXJuKGpuLE1vLmxhc3RJbmRleCk7X2kmJmUuaXNSZXF1aXJlQ2FsbChobywhMCl8fGUuaXNJbXBvcnRDYWxsKGhvKSYmaG8uYXJndW1lbnRzLmxlbmd0aD49MSYmZS5pc1N0cmluZ0xpdGVyYWxMaWtlKGhvLmFyZ3VtZW50c1swXSk/KGUuc2V0UGFyZW50UmVjdXJzaXZlKGhvLCExKSx0dD1lLmFwcGVuZCh0dCxoby5hcmd1bWVudHNbMF0pKTplLmlzTGl0ZXJhbEltcG9ydFR5cGVOb2RlKGhvKSYmKGUuc2V0UGFyZW50UmVjdXJzaXZlKGhvLCExKSx0dD1lLmFwcGVuZCh0dCxoby5hcmd1bWVudC5saXRlcmFsKSl9fWZ1bmN0aW9uIHJuKGpuLE1vKXtmb3IodmFyIGhvPWpuLGdzPWZ1bmN0aW9uKGhyKXtpZihoci5wb3M8PU1vJiYoTW88aHIuZW5kfHxNbz09PWhyLmVuZCYmaHIua2luZD09PTEpKXJldHVybiBocn07Oyl7dmFyIFNlPV9pJiZlLmhhc0pTRG9jTm9kZXMoaG8pJiZlLmZvckVhY2goaG8uanNEb2MsZ3MpfHxlLmZvckVhY2hDaGlsZChobyxncyk7aWYoIVNlKXJldHVybiBobztobz1TZX19fWZ1bmN0aW9uIHFuKEtyKXt2YXIgX2k9ZS50b0ZpbGVOYW1lTG93ZXJDYXNlKEtyLmZpbGVOYW1lKSxFaT1lLmxpYk1hcC5nZXQoX2kpO2lmKEVpKXJldHVybiBSbihQdChFaSkpfWZ1bmN0aW9uIG1vKEtyLF9pKXtyZXR1cm4gU28oQyhfaS5maWxlTmFtZSxLci5maWxlTmFtZSksUm4pfWZ1bmN0aW9uIFNvKEtyLF9pLEVpLHR0KXtpZihlLmhhc0V4dGVuc2lvbihLcikpe3ZhciBrdD1wZS5nZXRDYW5vbmljYWxGaWxlTmFtZShLcik7aWYoIWRlLmFsbG93Tm9uVHNFeHRlbnNpb25zJiYhZS5mb3JFYWNoKGUuZmxhdHRlbihHaSksZnVuY3Rpb24oYm4pe3JldHVybiBlLmZpbGVFeHRlbnNpb25JcyhrdCxibil9KSl7RWkmJihlLmhhc0pTRmlsZUV4dGVuc2lvbihrdCk/RWkoZS5EaWFnbm9zdGljcy5GaWxlXzBfaXNfYV9KYXZhU2NyaXB0X2ZpbGVfRGlkX3lvdV9tZWFuX3RvX2VuYWJsZV90aGVfYWxsb3dKc19vcHRpb24sS3IpOkVpKGUuRGlhZ25vc3RpY3MuRmlsZV8wX2hhc19hbl91bnN1cHBvcnRlZF9leHRlbnNpb25fVGhlX29ubHlfc3VwcG9ydGVkX2V4dGVuc2lvbnNfYXJlXzEsS3IsXCInXCIrZS5mbGF0dGVuKGV0KS5qb2luKFwiJywgJ1wiKStcIidcIikpO3JldHVybn12YXIgYnQ9X2koS3IpO2lmKEVpKWlmKGJ0KVYodHQpJiZrdD09PXBlLmdldENhbm9uaWNhbEZpbGVOYW1lKERhKHR0LmZpbGUpLmZpbGVOYW1lKSYmRWkoZS5EaWFnbm9zdGljcy5BX2ZpbGVfY2Fubm90X2hhdmVfYV9yZWZlcmVuY2VfdG9faXRzZWxmKTtlbHNle3ZhciBpYT1wcyhLcik7aWE/RWkoZS5EaWFnbm9zdGljcy5PdXRwdXRfZmlsZV8wX2hhc19ub3RfYmVlbl9idWlsdF9mcm9tX3NvdXJjZV9maWxlXzEsaWEsS3IpOkVpKGUuRGlhZ25vc3RpY3MuRmlsZV8wX25vdF9mb3VuZCxLcil9cmV0dXJuIGJ0fWVsc2V7dmFyIFh0PWRlLmFsbG93Tm9uVHNFeHRlbnNpb25zJiZfaShLcik7aWYoWHQpcmV0dXJuIFh0O2lmKEVpJiZkZS5hbGxvd05vblRzRXh0ZW5zaW9ucyl7RWkoZS5EaWFnbm9zdGljcy5GaWxlXzBfbm90X2ZvdW5kLEtyKTtyZXR1cm59dmFyIFphPWUuZm9yRWFjaChldFswXSxmdW5jdGlvbihibil7cmV0dXJuIF9pKEtyK2JuKX0pO3JldHVybiBFaSYmIVphJiZFaShlLkRpYWdub3N0aWNzLkNvdWxkX25vdF9yZXNvbHZlX3RoZV9wYXRoXzBfd2l0aF90aGVfZXh0ZW5zaW9uc19Db2xvbl8xLEtyLFwiJ1wiK2UuZmxhdHRlbihldCkuam9pbihcIicsICdcIikrXCInXCIpLFphfX1mdW5jdGlvbiBHbyhLcixfaSxFaSx0dCxrdCl7U28oS3IsZnVuY3Rpb24oYnQpe3JldHVybiBLYyhidCxfaSxFaSxrdCx0dCl9LGZ1bmN0aW9uKGJ0KXtmb3IodmFyIGlhPVtdLFh0PTE7WHQ8YXJndW1lbnRzLmxlbmd0aDtYdCsrKWlhW1h0LTFdPWFyZ3VtZW50c1tYdF07cmV0dXJuIGtvKHZvaWQgMCxrdCxidCxpYSl9LGt0KX1mdW5jdGlvbiB5cyhLcixfaSl7cmV0dXJuIEdvKEtyLCExLCExLHZvaWQgMCxfaSl9ZnVuY3Rpb24gUGMoS3IsX2ksRWkpe3ZhciB0dD0hVihFaSkmJmUuc29tZShiZS5nZXQoX2kucGF0aCksVik7dHQ/a28oX2ksRWksZS5EaWFnbm9zdGljcy5BbHJlYWR5X2luY2x1ZGVkX2ZpbGVfbmFtZV8wX2RpZmZlcnNfZnJvbV9maWxlX25hbWVfMV9vbmx5X2luX2Nhc2luZyxbX2kuZmlsZU5hbWUsS3JdKTprbyhfaSxFaSxlLkRpYWdub3N0aWNzLkZpbGVfbmFtZV8wX2RpZmZlcnNfZnJvbV9hbHJlYWR5X2luY2x1ZGVkX2ZpbGVfbmFtZV8xX29ubHlfaW5fY2FzaW5nLFtLcixfaS5maWxlTmFtZV0pfWZ1bmN0aW9uIFZjKEtyLF9pLEVpLHR0LGt0LGJ0KXt2YXIgaWE9T2JqZWN0LmNyZWF0ZShLcik7cmV0dXJuIGlhLmZpbGVOYW1lPUVpLGlhLnBhdGg9dHQsaWEucmVzb2x2ZWRQYXRoPWt0LGlhLm9yaWdpbmFsRmlsZU5hbWU9YnQsaWEucmVkaXJlY3RJbmZvPXtyZWRpcmVjdFRhcmdldDpLcix1bnJlZGlyZWN0ZWQ6X2l9LG1pLnNldCh0dCxVcj4wKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpYSx7aWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlZGlyZWN0SW5mby5yZWRpcmVjdFRhcmdldC5pZH0sc2V0OmZ1bmN0aW9uKFh0KXt0aGlzLnJlZGlyZWN0SW5mby5yZWRpcmVjdFRhcmdldC5pZD1YdH19LHN5bWJvbDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVkaXJlY3RJbmZvLnJlZGlyZWN0VGFyZ2V0LnN5bWJvbH0sc2V0OmZ1bmN0aW9uKFh0KXt0aGlzLnJlZGlyZWN0SW5mby5yZWRpcmVjdFRhcmdldC5zeW1ib2w9WHR9fX0pLGlhfWZ1bmN0aW9uIEtjKEtyLF9pLEVpLHR0LGt0KXtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwicHJvZ3JhbVwiLFwiZmluZFNvdXJjZUZpbGVcIix7ZmlsZU5hbWU6S3IsaXNEZWZhdWx0TGliOl9pfHx2b2lkIDAsZmlsZUluY2x1ZGVLaW5kOmUuRmlsZUluY2x1ZGVLaW5kW3R0LmtpbmRdfSk7dmFyIGJ0PXBjKEtyLF9pLEVpLHR0LGt0KTtyZXR1cm4gZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcucG9wKCksYnR9ZnVuY3Rpb24gWHMoS3IsX2ksRWksdHQpe3ZhciBrdD1VKFZpKEtyKSxfaT09bnVsbD92b2lkIDA6X2kuZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGUoKSxFaSx0dCk7cmV0dXJue2xhbmd1YWdlVmVyc2lvbjplLmdldEVtaXRTY3JpcHRUYXJnZXQodHQpLGltcGxpZWROb2RlRm9ybWF0Omt0LHNldEV4dGVybmFsTW9kdWxlSW5kaWNhdG9yOmUuZ2V0U2V0RXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3IodHQpfX1mdW5jdGlvbiBwYyhLcixfaSxFaSx0dCxrdCl7dmFyIGJ0PVZpKEtyKTtpZihQZSl7dmFyIGlhPWNlKGJ0KTtpZighaWEmJnBlLnJlYWxwYXRoJiZkZS5wcmVzZXJ2ZVN5bWxpbmtzJiZlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShLcikmJmUuc3RyaW5nQ29udGFpbnMoS3IsZS5ub2RlTW9kdWxlc1BhdGhQYXJ0KSl7dmFyIFh0PVZpKHBlLnJlYWxwYXRoKEtyKSk7WHQhPT1idCYmKGlhPWNlKFh0KSl9aWYoaWEpe3ZhciBaYT1lLmlzU3RyaW5nKGlhKT9LYyhpYSxfaSxFaSx0dCxrdCk6dm9pZCAwO3JldHVybiBaYSYmdGMoWmEsYnQsdm9pZCAwKSxaYX19dmFyIGJuPUtyO2lmKHhlLmhhcyhidCkpe3ZhciBfYT14ZS5nZXQoYnQpO2lmKGhzKF9hfHx2b2lkIDAsdHQpLF9hJiZkZS5mb3JjZUNvbnNpc3RlbnRDYXNpbmdJbkZpbGVOYW1lcyl7dmFyIHFhPV9hLmZpbGVOYW1lLHJuPVZpKHFhKSE9PVZpKEtyKTtybiYmKEtyPXBzKEtyKXx8S3IpO3ZhciBqbj1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGhXaXRob3V0Um9vdChxYSxYaSksTW89ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoV2l0aG91dFJvb3QoS3IsWGkpO2puIT09TW8mJlBjKEtyLF9hLHR0KX1yZXR1cm4gX2EmJm1pLmdldChfYS5wYXRoKSYmVXI9PT0wPyhtaS5zZXQoX2EucGF0aCwhMSksZGUubm9SZXNvbHZlfHwocWkoX2EsX2kpLGplKF9hKSksZGUubm9MaWJ8fGdhKF9hKSxpaS5zZXQoX2EucGF0aCwhMSksWG4oX2EpKTpfYSYmaWkuZ2V0KF9hLnBhdGgpJiZVcjx3ciYmKGlpLnNldChfYS5wYXRoLCExKSxYbihfYSkpLF9hfHx2b2lkIDB9dmFyIGhvO2lmKFYodHQpJiYhUGUpe3ZhciBncz1RcyhLcik7aWYoZ3Mpe2lmKGUub3V0RmlsZShncy5jb21tYW5kTGluZS5vcHRpb25zKSlyZXR1cm47dmFyIFNlPWpzKGdzLEtyKTtLcj1TZSxobz1WaShTZSl9fXZhciBocj1wZS5nZXRTb3VyY2VGaWxlKEtyLFhzKEtyLF9yLHBlLGRlKSxmdW5jdGlvbihPbil7cmV0dXJuIGtvKHZvaWQgMCx0dCxlLkRpYWdub3N0aWNzLkNhbm5vdF9yZWFkX2ZpbGVfMF9Db2xvbl8xLFtLcixPbl0pfSxUcik7aWYoa3Qpe3ZhciBPcj1lLnBhY2thZ2VJZFRvU3RyaW5nKGt0KSxraT1Tci5nZXQoT3IpO2lmKGtpKXt2YXIgZHQ9VmMoa2ksaHIsS3IsYnQsVmkoS3IpLGJuKTtyZXR1cm4gV3IuYWRkKGtpLnBhdGgsS3IpLHRjKGR0LGJ0LGhvKSxocyhkdCx0dCksenIuc2V0KGJ0LGUucGFja2FnZUlkVG9QYWNrYWdlTmFtZShrdCkpLENyLnB1c2goZHQpLGR0fWVsc2UgaHImJihTci5zZXQoT3IsaHIpLHpyLnNldChidCxlLnBhY2thZ2VJZFRvUGFja2FnZU5hbWUoa3QpKSl9aWYodGMoaHIsYnQsaG8pLGhyKXtpZihtaS5zZXQoYnQsVXI+MCksaHIuZmlsZU5hbWU9S3IsaHIucGF0aD1idCxoci5yZXNvbHZlZFBhdGg9VmkoS3IpLGhyLm9yaWdpbmFsRmlsZU5hbWU9Ym4saHMoaHIsdHQpLHBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSl7dmFyIGxhPWUudG9GaWxlTmFtZUxvd2VyQ2FzZShidCksd2E9bXIuZ2V0KGxhKTt3YT9QYyhLcix3YSx0dCk6bXIuc2V0KGxhLGhyKX1xcj1xcnx8aHIuaGFzTm9EZWZhdWx0TGliJiYhRWksZGUubm9SZXNvbHZlfHwocWkoaHIsX2kpLGplKGhyKSksZGUubm9MaWJ8fGdhKGhyKSxYbihociksX2k/aXIucHVzaChocik6Q3IucHVzaChocil9cmV0dXJuIGhyfWZ1bmN0aW9uIGhzKEtyLF9pKXtLciYmYmUuYWRkKEtyLnBhdGgsX2kpfWZ1bmN0aW9uIHRjKEtyLF9pLEVpKXtFaT8oeGUuc2V0KEVpLEtyKSx4ZS5zZXQoX2ksS3J8fCExKSk6eGUuc2V0KF9pLEtyKX1mdW5jdGlvbiBwcyhLcil7dmFyIF9pPVFzKEtyKTtyZXR1cm4gX2kmJmpzKF9pLEtyKX1mdW5jdGlvbiBRcyhLcil7aWYoISghQXJ8fCFBci5sZW5ndGh8fGUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKEtyKXx8ZS5maWxlRXh0ZW5zaW9uSXMoS3IsXCIuanNvblwiKSkpcmV0dXJuIGRzKEtyKX1mdW5jdGlvbiBqcyhLcixfaSl7dmFyIEVpPWUub3V0RmlsZShLci5jb21tYW5kTGluZS5vcHRpb25zKTtyZXR1cm4gRWk/ZS5jaGFuZ2VFeHRlbnNpb24oRWksXCIuZC50c1wiKTplLmdldE91dHB1dERlY2xhcmF0aW9uRmlsZU5hbWUoX2ksS3IuY29tbWFuZExpbmUsIXBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSl9ZnVuY3Rpb24gZHMoS3Ipe25yPT09dm9pZCAwJiYobnI9bmV3IGUuTWFwLEppKGZ1bmN0aW9uKEVpKXtWaShkZS5jb25maWdGaWxlUGF0aCkhPT1FaS5zb3VyY2VGaWxlLnBhdGgmJkVpLmNvbW1hbmRMaW5lLmZpbGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHR0KXtyZXR1cm4gbnIuc2V0KFZpKHR0KSxFaS5zb3VyY2VGaWxlLnBhdGgpfSl9KSk7dmFyIF9pPW5yLmdldChWaShLcikpO3JldHVybiBfaSYmeWkoX2kpfWZ1bmN0aW9uIEppKEtyKXtyZXR1cm4gZS5mb3JFYWNoUmVzb2x2ZWRQcm9qZWN0UmVmZXJlbmNlKEFyLEtyKX1mdW5jdGlvbiBjZShLcil7aWYoISFlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShLcikpcmV0dXJuIE1yPT09dm9pZCAwJiYoTXI9bmV3IGUuTWFwLEppKGZ1bmN0aW9uKF9pKXt2YXIgRWk9ZS5vdXRGaWxlKF9pLmNvbW1hbmRMaW5lLm9wdGlvbnMpO2lmKEVpKXt2YXIgdHQ9ZS5jaGFuZ2VFeHRlbnNpb24oRWksXCIuZC50c1wiKTtNci5zZXQoVmkodHQpLCEwKX1lbHNle3ZhciBrdD1lLm1lbW9pemUoZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRDb21tb25Tb3VyY2VEaXJlY3RvcnlPZkNvbmZpZyhfaS5jb21tYW5kTGluZSwhcGUudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpKX0pO2UuZm9yRWFjaChfaS5jb21tYW5kTGluZS5maWxlTmFtZXMsZnVuY3Rpb24oYnQpe2lmKCFlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShidCkmJiFlLmZpbGVFeHRlbnNpb25JcyhidCxcIi5qc29uXCIpKXt2YXIgaWE9ZS5nZXRPdXRwdXREZWNsYXJhdGlvbkZpbGVOYW1lKGJ0LF9pLmNvbW1hbmRMaW5lLCFwZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCksa3QpO01yLnNldChWaShpYSksYnQpfX0pfX0pKSxNci5nZXQoS3IpfWZ1bmN0aW9uIFJyKEtyKXtyZXR1cm4gUGUmJiEhZHMoS3IpfWZ1bmN0aW9uIHlpKEtyKXtpZighIU9lKXJldHVybiBPZS5nZXQoS3IpfHx2b2lkIDB9ZnVuY3Rpb24gcWkoS3IsX2kpe2UuZm9yRWFjaChLci5yZWZlcmVuY2VkRmlsZXMsZnVuY3Rpb24oRWksdHQpe0dvKEMoRWkuZmlsZU5hbWUsS3IuZmlsZU5hbWUpLF9pLCExLHZvaWQgMCx7a2luZDplLkZpbGVJbmNsdWRlS2luZC5SZWZlcmVuY2VGaWxlLGZpbGU6S3IucGF0aCxpbmRleDp0dH0pfSl9ZnVuY3Rpb24gamUoS3Ipe3ZhciBfaT1Lci50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcztpZighIV9pKWZvcih2YXIgRWk9QnQoX2ksS3IpLHR0PTA7dHQ8X2kubGVuZ3RoO3R0Kyspe3ZhciBrdD1Lci50eXBlUmVmZXJlbmNlRGlyZWN0aXZlc1t0dF0sYnQ9RWlbdHRdLGlhPWUudG9GaWxlTmFtZUxvd2VyQ2FzZShrdC5maWxlTmFtZSk7ZS5zZXRSZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmUoS3IsaWEsYnQpO3ZhciBYdD1rdC5yZXNvbHV0aW9uTW9kZXx8S3IuaW1wbGllZE5vZGVGb3JtYXQ7WHQmJmUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKGRlKSE9PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZTE2JiZlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZChkZSkhPT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVOZXh0JiZ3aS5hZGQoZS5jcmVhdGVEaWFnbm9zdGljRm9yUmFuZ2UoS3Isa3QsZS5EaWFnbm9zdGljcy5SZXNvbHV0aW9uX21vZGVzX2FyZV9vbmx5X3N1cHBvcnRlZF93aGVuX21vZHVsZVJlc29sdXRpb25faXNfbm9kZTE2X29yX25vZGVuZXh0KSksSHIoaWEsWHQsYnQse2tpbmQ6ZS5GaWxlSW5jbHVkZUtpbmQuVHlwZVJlZmVyZW5jZURpcmVjdGl2ZSxmaWxlOktyLnBhdGgsaW5kZXg6dHR9KX19ZnVuY3Rpb24gSHIoS3IsX2ksRWksdHQpe2UudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLnB1c2goXCJwcm9ncmFtXCIsXCJwcm9jZXNzVHlwZVJlZmVyZW5jZURpcmVjdGl2ZVwiLHtkaXJlY3RpdmU6S3IsaGFzUmVzb2x2ZWQ6ISFiYSxyZWZLaW5kOnR0LmtpbmQscmVmUGF0aDpWKHR0KT90dC5maWxlOnZvaWQgMH0pLHB0KEtyLF9pLEVpLHR0KSxlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKX1mdW5jdGlvbiBwdChLcixfaSxFaSx0dCl7dmFyIGt0PXlyLmdldChLcixfaSk7aWYoIShrdCYma3QucHJpbWFyeSkpe3ZhciBidD0hMDtpZihFaSl7aWYoRWkuaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQmJlVyKyssRWkucHJpbWFyeSlHbyhFaS5yZXNvbHZlZEZpbGVOYW1lLCExLCExLEVpLnBhY2thZ2VJZCx0dCk7ZWxzZSBpZihrdCl7aWYoRWkucmVzb2x2ZWRGaWxlTmFtZSE9PWt0LnJlc29sdmVkRmlsZU5hbWUpe3ZhciBpYT1wZS5yZWFkRmlsZShFaS5yZXNvbHZlZEZpbGVOYW1lKSxYdD1SbihrdC5yZXNvbHZlZEZpbGVOYW1lKTtpYSE9PVh0LnRleHQmJmtvKFh0LHR0LGUuRGlhZ25vc3RpY3MuQ29uZmxpY3RpbmdfZGVmaW5pdGlvbnNfZm9yXzBfZm91bmRfYXRfMV9hbmRfMl9Db25zaWRlcl9pbnN0YWxsaW5nX2Ffc3BlY2lmaWNfdmVyc2lvbl9vZl90aGlzX2xpYnJhcnlfdG9fcmVzb2x2ZV90aGVfY29uZmxpY3QsW0tyLEVpLnJlc29sdmVkRmlsZU5hbWUsa3QucmVzb2x2ZWRGaWxlTmFtZV0pfWJ0PSExfWVsc2UgR28oRWkucmVzb2x2ZWRGaWxlTmFtZSwhMSwhMSxFaS5wYWNrYWdlSWQsdHQpO0VpLmlzRXh0ZXJuYWxMaWJyYXJ5SW1wb3J0JiZVci0tfWVsc2Uga28odm9pZCAwLHR0LGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfdHlwZV9kZWZpbml0aW9uX2ZpbGVfZm9yXzAsW0tyXSk7YnQmJnlyLnNldChLcixfaSxFaSl9fWZ1bmN0aW9uIFB0KEtyKXtmb3IodmFyIF9pPUtyLnNwbGl0KFwiLlwiKSxFaT1faVsxXSx0dD0yO19pW3R0XSYmX2lbdHRdIT09XCJkXCI7KUVpKz0odHQ9PT0yP1wiL1wiOlwiLVwiKStfaVt0dF0sdHQrKzt2YXIga3Q9ZS5jb21iaW5lUGF0aHMoWGksXCJfX2xpYl9ub2RlX21vZHVsZXNfbG9va3VwX1wiLmNvbmNhdChLcixcIl9fLnRzXCIpKSxidD1lLnJlc29sdmVNb2R1bGVOYW1lKFwiQHR5cGVzY3JpcHQvbGliLVwiK0VpLGt0LHttb2R1bGVSZXNvbHV0aW9uOmUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzfSxwZSxfcik7cmV0dXJuIGJ0IT1udWxsJiZidC5yZXNvbHZlZE1vZHVsZT9idC5yZXNvbHZlZE1vZHVsZS5yZXNvbHZlZEZpbGVOYW1lOmUuY29tYmluZVBhdGhzKERpLEtyKX1mdW5jdGlvbiBnYShLcil7ZS5mb3JFYWNoKEtyLmxpYlJlZmVyZW5jZURpcmVjdGl2ZXMsZnVuY3Rpb24oX2ksRWkpe3ZhciB0dD1lLnRvRmlsZU5hbWVMb3dlckNhc2UoX2kuZmlsZU5hbWUpLGt0PWUubGliTWFwLmdldCh0dCk7aWYoa3QpUWkoUHQoa3QpLCEwLCEwLHtraW5kOmUuRmlsZUluY2x1ZGVLaW5kLkxpYlJlZmVyZW5jZURpcmVjdGl2ZSxmaWxlOktyLnBhdGgsaW5kZXg6RWl9KTtlbHNle3ZhciBidD1lLnJlbW92ZVN1ZmZpeChlLnJlbW92ZVByZWZpeCh0dCxcImxpYi5cIiksXCIuZC50c1wiKSxpYT1lLmdldFNwZWxsaW5nU3VnZ2VzdGlvbihidCxlLmxpYnMsZS5pZGVudGl0eSksWHQ9aWE/ZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9saWJfZGVmaW5pdGlvbl9mb3JfMF9EaWRfeW91X21lYW5fMTplLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX2xpYl9kZWZpbml0aW9uX2Zvcl8wOyhJcnx8KElyPVtdKSkucHVzaCh7a2luZDowLHJlYXNvbjp7a2luZDplLkZpbGVJbmNsdWRlS2luZC5MaWJSZWZlcmVuY2VEaXJlY3RpdmUsZmlsZTpLci5wYXRoLGluZGV4OkVpfSxkaWFnbm9zdGljOlh0LGFyZ3M6W3R0LGlhXX0pfX0pfWZ1bmN0aW9uIHVhKEtyKXtyZXR1cm4gcGUuZ2V0Q2Fub25pY2FsRmlsZU5hbWUoS3IpfWZ1bmN0aW9uIFhuKEtyKXt2YXIgX2k7aWYoV2EoS3IpLEtyLmltcG9ydHMubGVuZ3RofHxLci5tb2R1bGVBdWdtZW50YXRpb25zLmxlbmd0aCl7dmFyIEVpPVdlKEtyKSx0dD1iYShFaSxLcik7ZS5EZWJ1Zy5hc3NlcnQodHQubGVuZ3RoPT09RWkubGVuZ3RoKTtmb3IodmFyIGt0PShQZT8oX2k9d3QoS3IpKT09PW51bGx8fF9pPT09dm9pZCAwP3ZvaWQgMDpfaS5jb21tYW5kTGluZS5vcHRpb25zOnZvaWQgMCl8fGRlLGJ0PTA7YnQ8RWkubGVuZ3RoO2J0Kyspe3ZhciBpYT10dFtidF07aWYoZS5zZXRSZXNvbHZlZE1vZHVsZShLcixFaVtidF0saWEsaGUoS3IsYnQpKSwhIWlhKXt2YXIgWHQ9aWEuaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQsWmE9IWUucmVzb2x1dGlvbkV4dGVuc2lvbklzVFNPckpzb24oaWEuZXh0ZW5zaW9uKSxibj1YdCYmWmEsX2E9aWEucmVzb2x2ZWRGaWxlTmFtZTtYdCYmVXIrKzt2YXIgcWE9Ym4mJlVyPndyLHJuPV9hJiYhdWUoa3QsaWEpJiYha3Qubm9SZXNvbHZlJiZidDxLci5pbXBvcnRzLmxlbmd0aCYmIXFhJiYhKFphJiYhZS5nZXRBbGxvd0pTQ29tcGlsZXJPcHRpb24oa3QpKSYmKGUuaXNJbkpTRmlsZShLci5pbXBvcnRzW2J0XSl8fCEoS3IuaW1wb3J0c1tidF0uZmxhZ3MmODM4ODYwOCkpO3FhP2lpLnNldChLci5wYXRoLCEwKTpybiYmS2MoX2EsITEsITEse2tpbmQ6ZS5GaWxlSW5jbHVkZUtpbmQuSW1wb3J0LGZpbGU6S3IucGF0aCxpbmRleDpidH0saWEucGFja2FnZUlkKSxYdCYmVXItLX19fWVsc2UgS3IucmVzb2x2ZWRNb2R1bGVzPXZvaWQgMH1mdW5jdGlvbiBqcihLcixfaSl7Zm9yKHZhciBFaT0hMCx0dD1wZS5nZXRDYW5vbmljYWxGaWxlTmFtZShlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoX2ksWGkpKSxrdD0wLGJ0PUtyO2t0PGJ0Lmxlbmd0aDtrdCsrKXt2YXIgaWE9YnRba3RdO2lmKCFpYS5pc0RlY2xhcmF0aW9uRmlsZSl7dmFyIFh0PXBlLmdldENhbm9uaWNhbEZpbGVOYW1lKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChpYS5maWxlTmFtZSxYaSkpO1h0LmluZGV4T2YodHQpIT09MCYmKEFvKGlhLGUuRGlhZ25vc3RpY3MuRmlsZV8wX2lzX25vdF91bmRlcl9yb290RGlyXzFfcm9vdERpcl9pc19leHBlY3RlZF90b19jb250YWluX2FsbF9zb3VyY2VfZmlsZXMsW2lhLmZpbGVOYW1lLF9pXSksRWk9ITEpfX1yZXR1cm4gRWl9ZnVuY3Rpb24gZm8oS3Ipe09lfHwoT2U9bmV3IGUuTWFwKTt2YXIgX2k9bmUoS3IpLEVpPVZpKF9pKSx0dD1PZS5nZXQoRWkpO2lmKHR0IT09dm9pZCAwKXJldHVybiB0dHx8dm9pZCAwO3ZhciBrdCxidDtpZihwZS5nZXRQYXJzZWRDb21tYW5kTGluZSl7aWYoa3Q9cGUuZ2V0UGFyc2VkQ29tbWFuZExpbmUoX2kpLCFrdCl7dGModm9pZCAwLEVpLHZvaWQgMCksT2Uuc2V0KEVpLCExKTtyZXR1cm59YnQ9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoa3Qub3B0aW9ucy5jb25maWdGaWxlKSxlLkRlYnVnLmFzc2VydCghYnQucGF0aHx8YnQucGF0aD09PUVpKSx0YyhidCxFaSx2b2lkIDApfWVsc2V7dmFyIGlhPWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChlLmdldERpcmVjdG9yeVBhdGgoX2kpLHBlLmdldEN1cnJlbnREaXJlY3RvcnkoKSk7aWYoYnQ9cGUuZ2V0U291cmNlRmlsZShfaSwxMDApLHRjKGJ0LEVpLHZvaWQgMCksYnQ9PT12b2lkIDApe09lLnNldChFaSwhMSk7cmV0dXJufWt0PWUucGFyc2VKc29uU291cmNlRmlsZUNvbmZpZ0ZpbGVDb250ZW50KGJ0LG9yLGlhLHZvaWQgMCxfaSl9YnQuZmlsZU5hbWU9X2ksYnQucGF0aD1FaSxidC5yZXNvbHZlZFBhdGg9RWksYnQub3JpZ2luYWxGaWxlTmFtZT1faTt2YXIgWHQ9e2NvbW1hbmRMaW5lOmt0LHNvdXJjZUZpbGU6YnR9O3JldHVybiBPZS5zZXQoRWksWHQpLGt0LnByb2plY3RSZWZlcmVuY2VzJiYoWHQucmVmZXJlbmNlcz1rdC5wcm9qZWN0UmVmZXJlbmNlcy5tYXAoZm8pKSxYdH1mdW5jdGlvbiB4cygpe2RlLnN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb24mJiFlLmdldFN0cmljdE9wdGlvblZhbHVlKGRlLFwic3RyaWN0TnVsbENoZWNrc1wiKSYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhvdXRfc3BlY2lmeWluZ19vcHRpb25fMSxcInN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb25cIixcInN0cmljdE51bGxDaGVja3NcIiksZGUuZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXMmJiFlLmdldFN0cmljdE9wdGlvblZhbHVlKGRlLFwic3RyaWN0TnVsbENoZWNrc1wiKSYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhvdXRfc3BlY2lmeWluZ19vcHRpb25fMSxcImV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzXCIsXCJzdHJpY3ROdWxsQ2hlY2tzXCIpLGRlLmlzb2xhdGVkTW9kdWxlcyYmKGRlLm91dCYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhfb3B0aW9uXzEsXCJvdXRcIixcImlzb2xhdGVkTW9kdWxlc1wiKSxkZS5vdXRGaWxlJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aF9vcHRpb25fMSxcIm91dEZpbGVcIixcImlzb2xhdGVkTW9kdWxlc1wiKSksZGUuaW5saW5lU291cmNlTWFwJiYoZGUuc291cmNlTWFwJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aF9vcHRpb25fMSxcInNvdXJjZU1hcFwiLFwiaW5saW5lU291cmNlTWFwXCIpLGRlLm1hcFJvb3QmJkpvKGUuRGlhZ25vc3RpY3MuT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aXRoX29wdGlvbl8xLFwibWFwUm9vdFwiLFwiaW5saW5lU291cmNlTWFwXCIpKSxkZS5jb21wb3NpdGUmJihkZS5kZWNsYXJhdGlvbj09PSExJiZKbyhlLkRpYWdub3N0aWNzLkNvbXBvc2l0ZV9wcm9qZWN0c19tYXlfbm90X2Rpc2FibGVfZGVjbGFyYXRpb25fZW1pdCxcImRlY2xhcmF0aW9uXCIpLGRlLmluY3JlbWVudGFsPT09ITEmJkpvKGUuRGlhZ25vc3RpY3MuQ29tcG9zaXRlX3Byb2plY3RzX21heV9ub3RfZGlzYWJsZV9pbmNyZW1lbnRhbF9jb21waWxhdGlvbixcImRlY2xhcmF0aW9uXCIpKTt2YXIgS3I9ZS5vdXRGaWxlKGRlKTtpZihkZS50c0J1aWxkSW5mb0ZpbGU/ZS5pc0luY3JlbWVudGFsQ29tcGlsYXRpb24oZGUpfHxKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9zcGVjaWZ5aW5nX29wdGlvbl8xX29yX29wdGlvbl8yLFwidHNCdWlsZEluZm9GaWxlXCIsXCJpbmNyZW1lbnRhbFwiLFwiY29tcG9zaXRlXCIpOmRlLmluY3JlbWVudGFsJiYhS3ImJiFkZS5jb25maWdGaWxlUGF0aCYmd2kuYWRkKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGUuRGlhZ25vc3RpY3MuT3B0aW9uX2luY3JlbWVudGFsX2Nhbl9vbmx5X2JlX3NwZWNpZmllZF91c2luZ190c2NvbmZpZ19lbWl0dGluZ190b19zaW5nbGVfZmlsZV9vcl93aGVuX29wdGlvbl90c0J1aWxkSW5mb0ZpbGVfaXNfc3BlY2lmaWVkKSksQnMoKSxkZS5jb21wb3NpdGUpZm9yKHZhciBfaT1uZXcgZS5TZXQod2UubWFwKFZpKSksRWk9MCx0dD1ZZTtFaTx0dC5sZW5ndGg7RWkrKyl7dmFyIGt0PXR0W0VpXTtlLnNvdXJjZUZpbGVNYXlCZUVtaXR0ZWQoa3QsSWkpJiYhX2kuaGFzKGt0LnBhdGgpJiZBbyhrdCxlLkRpYWdub3N0aWNzLkZpbGVfMF9pc19ub3RfbGlzdGVkX3dpdGhpbl90aGVfZmlsZV9saXN0X29mX3Byb2plY3RfMV9Qcm9qZWN0c19tdXN0X2xpc3RfYWxsX2ZpbGVzX29yX3VzZV9hbl9pbmNsdWRlX3BhdHRlcm4sW2t0LmZpbGVOYW1lLGRlLmNvbmZpZ0ZpbGVQYXRofHxcIlwiXSl9aWYoZGUucGF0aHMpe2Zvcih2YXIgYnQgaW4gZGUucGF0aHMpaWYoISFlLmhhc1Byb3BlcnR5KGRlLnBhdGhzLGJ0KSlpZihlLmhhc1plcm9Pck9uZUFzdGVyaXNrQ2hhcmFjdGVyKGJ0KXx8c3UoITAsYnQsZS5EaWFnbm9zdGljcy5QYXR0ZXJuXzBfY2FuX2hhdmVfYXRfbW9zdF9vbmVfQXN0ZXJpc2tfY2hhcmFjdGVyLGJ0KSxlLmlzQXJyYXkoZGUucGF0aHNbYnRdKSl7dmFyIGlhPWRlLnBhdGhzW2J0XS5sZW5ndGg7aWE9PT0wJiZzdSghMSxidCxlLkRpYWdub3N0aWNzLlN1YnN0aXR1dGlvbnNfZm9yX3BhdHRlcm5fMF9zaG91bGRuX3RfYmVfYW5fZW1wdHlfYXJyYXksYnQpO2Zvcih2YXIgWHQ9MDtYdDxpYTtYdCsrKXt2YXIgWmE9ZGUucGF0aHNbYnRdW1h0XSxibj10eXBlb2YgWmE7Ym49PT1cInN0cmluZ1wiPyhlLmhhc1plcm9Pck9uZUFzdGVyaXNrQ2hhcmFjdGVyKFphKXx8eGMoYnQsWHQsZS5EaWFnbm9zdGljcy5TdWJzdGl0dXRpb25fMF9pbl9wYXR0ZXJuXzFfY2FuX2hhdmVfYXRfbW9zdF9vbmVfQXN0ZXJpc2tfY2hhcmFjdGVyLFphLGJ0KSwhZGUuYmFzZVVybCYmIWUucGF0aElzUmVsYXRpdmUoWmEpJiYhZS5wYXRoSXNBYnNvbHV0ZShaYSkmJnhjKGJ0LFh0LGUuRGlhZ25vc3RpY3MuTm9uX3JlbGF0aXZlX3BhdGhzX2FyZV9ub3RfYWxsb3dlZF93aGVuX2Jhc2VVcmxfaXNfbm90X3NldF9EaWRfeW91X2ZvcmdldF9hX2xlYWRpbmdfU2xhc2gpKTp4YyhidCxYdCxlLkRpYWdub3N0aWNzLlN1YnN0aXR1dGlvbl8wX2Zvcl9wYXR0ZXJuXzFfaGFzX2luY29ycmVjdF90eXBlX2V4cGVjdGVkX3N0cmluZ19nb3RfMixaYSxidCxibil9fWVsc2Ugc3UoITEsYnQsZS5EaWFnbm9zdGljcy5TdWJzdGl0dXRpb25zX2Zvcl9wYXR0ZXJuXzBfc2hvdWxkX2JlX2FuX2FycmF5LGJ0KX0hZGUuc291cmNlTWFwJiYhZGUuaW5saW5lU291cmNlTWFwJiYoZGUuaW5saW5lU291cmNlcyYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5fb25seV9iZV91c2VkX3doZW5fZWl0aGVyX29wdGlvbl9pbmxpbmVTb3VyY2VNYXBfb3Jfb3B0aW9uX3NvdXJjZU1hcF9pc19wcm92aWRlZCxcImlubGluZVNvdXJjZXNcIiksZGUuc291cmNlUm9vdCYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5fb25seV9iZV91c2VkX3doZW5fZWl0aGVyX29wdGlvbl9pbmxpbmVTb3VyY2VNYXBfb3Jfb3B0aW9uX3NvdXJjZU1hcF9pc19wcm92aWRlZCxcInNvdXJjZVJvb3RcIikpLGRlLm91dCYmZGUub3V0RmlsZSYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhfb3B0aW9uXzEsXCJvdXRcIixcIm91dEZpbGVcIiksZGUubWFwUm9vdCYmIShkZS5zb3VyY2VNYXB8fGRlLmRlY2xhcmF0aW9uTWFwKSYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhvdXRfc3BlY2lmeWluZ19vcHRpb25fMV9vcl9vcHRpb25fMixcIm1hcFJvb3RcIixcInNvdXJjZU1hcFwiLFwiZGVjbGFyYXRpb25NYXBcIiksZGUuZGVjbGFyYXRpb25EaXImJihlLmdldEVtaXREZWNsYXJhdGlvbnMoZGUpfHxKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9zcGVjaWZ5aW5nX29wdGlvbl8xX29yX29wdGlvbl8yLFwiZGVjbGFyYXRpb25EaXJcIixcImRlY2xhcmF0aW9uXCIsXCJjb21wb3NpdGVcIiksS3ImJkpvKGUuRGlhZ25vc3RpY3MuT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aXRoX29wdGlvbl8xLFwiZGVjbGFyYXRpb25EaXJcIixkZS5vdXQ/XCJvdXRcIjpcIm91dEZpbGVcIikpLGRlLmRlY2xhcmF0aW9uTWFwJiYhZS5nZXRFbWl0RGVjbGFyYXRpb25zKGRlKSYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhvdXRfc3BlY2lmeWluZ19vcHRpb25fMV9vcl9vcHRpb25fMixcImRlY2xhcmF0aW9uTWFwXCIsXCJkZWNsYXJhdGlvblwiLFwiY29tcG9zaXRlXCIpLGRlLmxpYiYmZGUubm9MaWImJkpvKGUuRGlhZ25vc3RpY3MuT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aXRoX29wdGlvbl8xLFwibGliXCIsXCJub0xpYlwiKSxkZS5ub0ltcGxpY2l0VXNlU3RyaWN0JiZlLmdldFN0cmljdE9wdGlvblZhbHVlKGRlLFwiYWx3YXlzU3RyaWN0XCIpJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aF9vcHRpb25fMSxcIm5vSW1wbGljaXRVc2VTdHJpY3RcIixcImFsd2F5c1N0cmljdFwiKTt2YXIgX2E9ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KGRlKSxxYT1lLmZpbmQoWWUsZnVuY3Rpb24oaHIpe3JldHVybiBlLmlzRXh0ZXJuYWxNb2R1bGUoaHIpJiYhaHIuaXNEZWNsYXJhdGlvbkZpbGV9KTtpZihkZS5pc29sYXRlZE1vZHVsZXMpe2RlLm1vZHVsZT09PWUuTW9kdWxlS2luZC5Ob25lJiZfYTwyJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl9pc29sYXRlZE1vZHVsZXNfY2FuX29ubHlfYmVfdXNlZF93aGVuX2VpdGhlcl9vcHRpb25fbW9kdWxlX2lzX3Byb3ZpZGVkX29yX29wdGlvbl90YXJnZXRfaXNfRVMyMDE1X29yX2hpZ2hlcixcImlzb2xhdGVkTW9kdWxlc1wiLFwidGFyZ2V0XCIpLGRlLnByZXNlcnZlQ29uc3RFbnVtcz09PSExJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl9wcmVzZXJ2ZUNvbnN0RW51bXNfY2Fubm90X2JlX2Rpc2FibGVkX3doZW5faXNvbGF0ZWRNb2R1bGVzX2lzX2VuYWJsZWQsXCJwcmVzZXJ2ZUNvbnN0RW51bXNcIixcImlzb2xhdGVkTW9kdWxlc1wiKTt2YXIgcm49ZS5maW5kKFllLGZ1bmN0aW9uKGhyKXtyZXR1cm4hZS5pc0V4dGVybmFsTW9kdWxlKGhyKSYmIWUuaXNTb3VyY2VGaWxlSlMoaHIpJiYhaHIuaXNEZWNsYXJhdGlvbkZpbGUmJmhyLnNjcmlwdEtpbmQhPT02fSk7aWYocm4pe3ZhciBqbj1lLmdldEVycm9yU3BhbkZvck5vZGUocm4scm4pO3dpLmFkZChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKHJuLGpuLnN0YXJ0LGpuLmxlbmd0aCxlLkRpYWdub3N0aWNzLl8wX2Nhbm5vdF9iZV9jb21waWxlZF91bmRlcl9pc29sYXRlZE1vZHVsZXNfYmVjYXVzZV9pdF9pc19jb25zaWRlcmVkX2FfZ2xvYmFsX3NjcmlwdF9maWxlX0FkZF9hbl9pbXBvcnRfZXhwb3J0X29yX2FuX2VtcHR5X2V4cG9ydF9zdGF0ZW1lbnRfdG9fbWFrZV9pdF9hX21vZHVsZSxlLmdldEJhc2VGaWxlTmFtZShybi5maWxlTmFtZSkpKX19ZWxzZSBpZihxYSYmX2E8MiYmZGUubW9kdWxlPT09ZS5Nb2R1bGVLaW5kLk5vbmUpe3ZhciBqbj1lLmdldEVycm9yU3BhbkZvck5vZGUocWEsdHlwZW9mIHFhLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yPT1cImJvb2xlYW5cIj9xYTpxYS5leHRlcm5hbE1vZHVsZUluZGljYXRvcik7d2kuYWRkKGUuY3JlYXRlRmlsZURpYWdub3N0aWMocWEsam4uc3RhcnQsam4ubGVuZ3RoLGUuRGlhZ25vc3RpY3MuQ2Fubm90X3VzZV9pbXBvcnRzX2V4cG9ydHNfb3JfbW9kdWxlX2F1Z21lbnRhdGlvbnNfd2hlbl9tb2R1bGVfaXNfbm9uZSkpfWlmKEtyJiYhZGUuZW1pdERlY2xhcmF0aW9uT25seSl7aWYoZGUubW9kdWxlJiYhKGRlLm1vZHVsZT09PWUuTW9kdWxlS2luZC5BTUR8fGRlLm1vZHVsZT09PWUuTW9kdWxlS2luZC5TeXN0ZW0pKUpvKGUuRGlhZ25vc3RpY3MuT25seV9hbWRfYW5kX3N5c3RlbV9tb2R1bGVzX2FyZV9zdXBwb3J0ZWRfYWxvbmdzaWRlXzAsZGUub3V0P1wib3V0XCI6XCJvdXRGaWxlXCIsXCJtb2R1bGVcIik7ZWxzZSBpZihkZS5tb2R1bGU9PT12b2lkIDAmJnFhKXt2YXIgam49ZS5nZXRFcnJvclNwYW5Gb3JOb2RlKHFhLHR5cGVvZiBxYS5leHRlcm5hbE1vZHVsZUluZGljYXRvcj09XCJib29sZWFuXCI/cWE6cWEuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3IpO3dpLmFkZChlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKHFhLGpuLnN0YXJ0LGpuLmxlbmd0aCxlLkRpYWdub3N0aWNzLkNhbm5vdF9jb21waWxlX21vZHVsZXNfdXNpbmdfb3B0aW9uXzBfdW5sZXNzX3RoZV9tb2R1bGVfZmxhZ19pc19hbWRfb3Jfc3lzdGVtLGRlLm91dD9cIm91dFwiOlwib3V0RmlsZVwiKSl9fWlmKGRlLnJlc29sdmVKc29uTW9kdWxlJiYoZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoZGUpIT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlSnMmJmUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKGRlKSE9PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZTE2JiZlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZChkZSkhPT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVOZXh0P0pvKGUuRGlhZ25vc3RpY3MuT3B0aW9uX3Jlc29sdmVKc29uTW9kdWxlX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9ub2RlX21vZHVsZV9yZXNvbHV0aW9uX3N0cmF0ZWd5LFwicmVzb2x2ZUpzb25Nb2R1bGVcIik6ZS5oYXNKc29uTW9kdWxlRW1pdEVuYWJsZWQoZGUpfHxKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl9yZXNvbHZlSnNvbk1vZHVsZV9jYW5fb25seV9iZV9zcGVjaWZpZWRfd2hlbl9tb2R1bGVfY29kZV9nZW5lcmF0aW9uX2lzX2NvbW1vbmpzX2FtZF9lczIwMTVfb3JfZXNOZXh0LFwicmVzb2x2ZUpzb25Nb2R1bGVcIixcIm1vZHVsZVwiKSksZGUub3V0RGlyfHxkZS5yb290RGlyfHxkZS5zb3VyY2VSb290fHxkZS5tYXBSb290KXt2YXIgTW89YXQoKTtkZS5vdXREaXImJk1vPT09XCJcIiYmWWUuc29tZShmdW5jdGlvbihocil7cmV0dXJuIGUuZ2V0Um9vdExlbmd0aChoci5maWxlTmFtZSk+MX0pJiZKbyhlLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX3RoZV9jb21tb25fc3ViZGlyZWN0b3J5X3BhdGhfZm9yX3RoZV9pbnB1dF9maWxlcyxcIm91dERpclwiKX1pZihkZS51c2VEZWZpbmVGb3JDbGFzc0ZpZWxkcyYmX2E9PT0wJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2hlbl9vcHRpb25fdGFyZ2V0X2lzX0VTMyxcInVzZURlZmluZUZvckNsYXNzRmllbGRzXCIpLGRlLmNoZWNrSnMmJiFlLmdldEFsbG93SlNDb21waWxlck9wdGlvbihkZSkmJndpLmFkZChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9zcGVjaWZ5aW5nX29wdGlvbl8xLFwiY2hlY2tKc1wiLFwiYWxsb3dKc1wiKSksZGUuZW1pdERlY2xhcmF0aW9uT25seSYmKGUuZ2V0RW1pdERlY2xhcmF0aW9ucyhkZSl8fEpvKGUuRGlhZ25vc3RpY3MuT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aXRob3V0X3NwZWNpZnlpbmdfb3B0aW9uXzFfb3Jfb3B0aW9uXzIsXCJlbWl0RGVjbGFyYXRpb25Pbmx5XCIsXCJkZWNsYXJhdGlvblwiLFwiY29tcG9zaXRlXCIpLGRlLm5vRW1pdCYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3dpdGhfb3B0aW9uXzEsXCJlbWl0RGVjbGFyYXRpb25Pbmx5XCIsXCJub0VtaXRcIikpLGRlLmVtaXREZWNvcmF0b3JNZXRhZGF0YSYmIWRlLmV4cGVyaW1lbnRhbERlY29yYXRvcnMmJkpvKGUuRGlhZ25vc3RpY3MuT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aXRob3V0X3NwZWNpZnlpbmdfb3B0aW9uXzEsXCJlbWl0RGVjb3JhdG9yTWV0YWRhdGFcIixcImV4cGVyaW1lbnRhbERlY29yYXRvcnNcIiksZGUuanN4RmFjdG9yeT8oZGUucmVhY3ROYW1lc3BhY2UmJkpvKGUuRGlhZ25vc3RpY3MuT3B0aW9uXzBfY2Fubm90X2JlX3NwZWNpZmllZF93aXRoX29wdGlvbl8xLFwicmVhY3ROYW1lc3BhY2VcIixcImpzeEZhY3RvcnlcIiksKGRlLmpzeD09PTR8fGRlLmpzeD09PTUpJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2hlbl9vcHRpb25fanN4X2lzXzEsXCJqc3hGYWN0b3J5XCIsZS5pbnZlcnNlSnN4T3B0aW9uTWFwLmdldChcIlwiK2RlLmpzeCkpLGUucGFyc2VJc29sYXRlZEVudGl0eU5hbWUoZGUuanN4RmFjdG9yeSxfYSl8fGV1KFwianN4RmFjdG9yeVwiLGUuRGlhZ25vc3RpY3MuSW52YWxpZF92YWx1ZV9mb3JfanN4RmFjdG9yeV8wX2lzX25vdF9hX3ZhbGlkX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWUsZGUuanN4RmFjdG9yeSkpOmRlLnJlYWN0TmFtZXNwYWNlJiYhZS5pc0lkZW50aWZpZXJUZXh0KGRlLnJlYWN0TmFtZXNwYWNlLF9hKSYmZXUoXCJyZWFjdE5hbWVzcGFjZVwiLGUuRGlhZ25vc3RpY3MuSW52YWxpZF92YWx1ZV9mb3JfcmVhY3ROYW1lc3BhY2VfMF9pc19ub3RfYV92YWxpZF9pZGVudGlmaWVyLGRlLnJlYWN0TmFtZXNwYWNlKSxkZS5qc3hGcmFnbWVudEZhY3RvcnkmJihkZS5qc3hGYWN0b3J5fHxKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2l0aG91dF9zcGVjaWZ5aW5nX29wdGlvbl8xLFwianN4RnJhZ21lbnRGYWN0b3J5XCIsXCJqc3hGYWN0b3J5XCIpLChkZS5qc3g9PT00fHxkZS5qc3g9PT01KSYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3doZW5fb3B0aW9uX2pzeF9pc18xLFwianN4RnJhZ21lbnRGYWN0b3J5XCIsZS5pbnZlcnNlSnN4T3B0aW9uTWFwLmdldChcIlwiK2RlLmpzeCkpLGUucGFyc2VJc29sYXRlZEVudGl0eU5hbWUoZGUuanN4RnJhZ21lbnRGYWN0b3J5LF9hKXx8ZXUoXCJqc3hGcmFnbWVudEZhY3RvcnlcIixlLkRpYWdub3N0aWNzLkludmFsaWRfdmFsdWVfZm9yX2pzeEZyYWdtZW50RmFjdG9yeV8wX2lzX25vdF9hX3ZhbGlkX2lkZW50aWZpZXJfb3JfcXVhbGlmaWVkX25hbWUsZGUuanN4RnJhZ21lbnRGYWN0b3J5KSksZGUucmVhY3ROYW1lc3BhY2UmJihkZS5qc3g9PT00fHxkZS5qc3g9PT01KSYmSm8oZS5EaWFnbm9zdGljcy5PcHRpb25fMF9jYW5ub3RfYmVfc3BlY2lmaWVkX3doZW5fb3B0aW9uX2pzeF9pc18xLFwicmVhY3ROYW1lc3BhY2VcIixlLmludmVyc2VKc3hPcHRpb25NYXAuZ2V0KFwiXCIrZGUuanN4KSksZGUuanN4SW1wb3J0U291cmNlJiZkZS5qc3g9PT0yJiZKbyhlLkRpYWdub3N0aWNzLk9wdGlvbl8wX2Nhbm5vdF9iZV9zcGVjaWZpZWRfd2hlbl9vcHRpb25fanN4X2lzXzEsXCJqc3hJbXBvcnRTb3VyY2VcIixlLmludmVyc2VKc3hPcHRpb25NYXAuZ2V0KFwiXCIrZGUuanN4KSksZGUucHJlc2VydmVWYWx1ZUltcG9ydHMmJmUuZ2V0RW1pdE1vZHVsZUtpbmQoZGUpPGUuTW9kdWxlS2luZC5FUzIwMTUmJmV1KFwiaW1wb3J0c05vdFVzZWRBc1ZhbHVlc1wiLGUuRGlhZ25vc3RpY3MuT3B0aW9uX3ByZXNlcnZlVmFsdWVJbXBvcnRzX2Nhbl9vbmx5X2JlX3VzZWRfd2hlbl9tb2R1bGVfaXNfc2V0X3RvX2VzMjAxNV9vcl9sYXRlciksIWRlLm5vRW1pdCYmIWRlLnN1cHByZXNzT3V0cHV0UGF0aENoZWNrKXt2YXIgaG89YWkoKSxncz1uZXcgZS5TZXQ7ZS5mb3JFYWNoRW1pdHRlZEZpbGUoaG8sZnVuY3Rpb24oaHIpe2RlLmVtaXREZWNsYXJhdGlvbk9ubHl8fFNlKGhyLmpzRmlsZVBhdGgsZ3MpLFNlKGhyLmRlY2xhcmF0aW9uRmlsZVBhdGgsZ3MpfSl9ZnVuY3Rpb24gU2UoaHIsT3Ipe2lmKGhyKXt2YXIga2k9VmkoaHIpO2lmKHhlLmhhcyhraSkpe3ZhciBkdD12b2lkIDA7ZGUuY29uZmlnRmlsZVBhdGh8fChkdD1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKHZvaWQgMCxlLkRpYWdub3N0aWNzLkFkZGluZ19hX3RzY29uZmlnX2pzb25fZmlsZV93aWxsX2hlbHBfb3JnYW5pemVfcHJvamVjdHNfdGhhdF9jb250YWluX2JvdGhfVHlwZVNjcmlwdF9hbmRfSmF2YVNjcmlwdF9maWxlc19MZWFybl9tb3JlX2F0X2h0dHBzX0NvbG9uX1NsYXNoX1NsYXNoYWthX21zX1NsYXNodHNjb25maWcpKSxkdD1lLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKGR0LGUuRGlhZ25vc3RpY3MuQ2Fubm90X3dyaXRlX2ZpbGVfMF9iZWNhdXNlX2l0X3dvdWxkX292ZXJ3cml0ZV9pbnB1dF9maWxlLGhyKSx4bChocixlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpY0Zyb21NZXNzYWdlQ2hhaW4oZHQpKX12YXIgbGE9cGUudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpP2tpOmUudG9GaWxlTmFtZUxvd2VyQ2FzZShraSk7T3IuaGFzKGxhKT94bChocixlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhlLkRpYWdub3N0aWNzLkNhbm5vdF93cml0ZV9maWxlXzBfYmVjYXVzZV9pdF93b3VsZF9iZV9vdmVyd3JpdHRlbl9ieV9tdWx0aXBsZV9pbnB1dF9maWxlcyxocikpOk9yLmFkZChsYSl9fX1mdW5jdGlvbiBGbyhLcixfaSxFaSx0dCl7dmFyIGt0LGJ0LGlhLFh0PVYoX2kpP19pOnZvaWQgMDtLciYmKChrdD1iZS5nZXQoS3IucGF0aCkpPT09bnVsbHx8a3Q9PT12b2lkIDB8fGt0LmZvckVhY2gocm4pKSxfaSYmcm4oX2kpLFh0JiYoYnQ9PW51bGw/dm9pZCAwOmJ0Lmxlbmd0aCk9PT0xJiYoYnQ9dm9pZCAwKTt2YXIgWmE9WHQmJlAoRGEsWHQpLGJuPWJ0JiZlLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKGJ0LGUuRGlhZ25vc3RpY3MuVGhlX2ZpbGVfaXNfaW5fdGhlX3Byb2dyYW1fYmVjYXVzZV9Db2xvbiksX2E9S3ImJmUuZXhwbGFpbklmRmlsZUlzUmVkaXJlY3QoS3IpLHFhPWUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXMuYXBwbHkodm9pZCAwLFZlKFtfYT9ibj9WZShbYm5dLF9hLCEwKTpfYTpibixFaV0sdHR8fGUuZW1wdHlBcnJheSwhMSkpO3JldHVybiBaYSYmTChaYSk/ZS5jcmVhdGVGaWxlRGlhZ25vc3RpY0Zyb21NZXNzYWdlQ2hhaW4oWmEuZmlsZSxaYS5wb3MsWmEuZW5kLVphLnBvcyxxYSxpYSk6ZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWNGcm9tTWVzc2FnZUNoYWluKHFhLGlhKTtmdW5jdGlvbiBybihqbil7KGJ0fHwoYnQ9W10pKS5wdXNoKGUuZmlsZUluY2x1ZGVSZWFzb25Ub0RpYWdub3N0aWNzKElpLGpuKSksIVh0JiZWKGpuKT9YdD1qbjpYdCE9PWpuJiYoaWE9ZS5hcHBlbmQoaWEsTXMoam4pKSksam49PT1faSYmKF9pPXZvaWQgMCl9fWZ1bmN0aW9uIGtvKEtyLF9pLEVpLHR0KXsoSXJ8fChJcj1bXSkpLnB1c2goe2tpbmQ6MSxmaWxlOktyJiZLci5wYXRoLGZpbGVQcm9jZXNzaW5nUmVhc29uOl9pLGRpYWdub3N0aWM6RWksYXJnczp0dH0pfWZ1bmN0aW9uIEFvKEtyLF9pLEVpKXt3aS5hZGQoRm8oS3Isdm9pZCAwLF9pLEVpKSl9ZnVuY3Rpb24gTXMoS3Ipe2lmKFYoS3IpKXt2YXIgX2k9UChEYSxLciksRWk7c3dpdGNoKEtyLmtpbmQpe2Nhc2UgZS5GaWxlSW5jbHVkZUtpbmQuSW1wb3J0OkVpPWUuRGlhZ25vc3RpY3MuRmlsZV9pc19pbmNsdWRlZF92aWFfaW1wb3J0X2hlcmU7YnJlYWs7Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5SZWZlcmVuY2VGaWxlOkVpPWUuRGlhZ25vc3RpY3MuRmlsZV9pc19pbmNsdWRlZF92aWFfcmVmZXJlbmNlX2hlcmU7YnJlYWs7Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5UeXBlUmVmZXJlbmNlRGlyZWN0aXZlOkVpPWUuRGlhZ25vc3RpY3MuRmlsZV9pc19pbmNsdWRlZF92aWFfdHlwZV9saWJyYXJ5X3JlZmVyZW5jZV9oZXJlO2JyZWFrO2Nhc2UgZS5GaWxlSW5jbHVkZUtpbmQuTGliUmVmZXJlbmNlRGlyZWN0aXZlOkVpPWUuRGlhZ25vc3RpY3MuRmlsZV9pc19pbmNsdWRlZF92aWFfbGlicmFyeV9yZWZlcmVuY2VfaGVyZTticmVhaztkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoS3IpfXJldHVybiBMKF9pKT9lLmNyZWF0ZUZpbGVEaWFnbm9zdGljKF9pLmZpbGUsX2kucG9zLF9pLmVuZC1faS5wb3MsRWkpOnZvaWQgMH1pZighIWRlLmNvbmZpZ0ZpbGUpe3ZhciB0dCxrdDtzd2l0Y2goS3Iua2luZCl7Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5Sb290RmlsZTppZighZGUuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MpcmV0dXJuO3ZhciBidD1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgod2VbS3IuaW5kZXhdLFhpKSxpYT1lLmdldE1hdGNoZWRGaWxlU3BlYyhJaSxidCk7aWYoaWEpe3R0PWUuZ2V0VHNDb25maWdQcm9wQXJyYXlFbGVtZW50VmFsdWUoZGUuY29uZmlnRmlsZSxcImZpbGVzXCIsaWEpLGt0PWUuRGlhZ25vc3RpY3MuRmlsZV9pc19tYXRjaGVkX2J5X2ZpbGVzX2xpc3Rfc3BlY2lmaWVkX2hlcmU7YnJlYWt9dmFyIFh0PWUuZ2V0TWF0Y2hlZEluY2x1ZGVTcGVjKElpLGJ0KTtpZighWHQpcmV0dXJuO3R0PWUuZ2V0VHNDb25maWdQcm9wQXJyYXlFbGVtZW50VmFsdWUoZGUuY29uZmlnRmlsZSxcImluY2x1ZGVcIixYdCksa3Q9ZS5EaWFnbm9zdGljcy5GaWxlX2lzX21hdGNoZWRfYnlfaW5jbHVkZV9wYXR0ZXJuX3NwZWNpZmllZF9oZXJlO2JyZWFrO2Nhc2UgZS5GaWxlSW5jbHVkZUtpbmQuU291cmNlRnJvbVByb2plY3RSZWZlcmVuY2U6Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5PdXRwdXRGcm9tUHJvamVjdFJlZmVyZW5jZTp2YXIgWmE9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoQXI9PW51bGw/dm9pZCAwOkFyW0tyLmluZGV4XSksYm49eShBZSxBcixmdW5jdGlvbihNbyxobyxncyl7cmV0dXJuIE1vPT09WmE/e3NvdXJjZUZpbGU6KGhvPT1udWxsP3ZvaWQgMDpoby5zb3VyY2VGaWxlKXx8ZGUuY29uZmlnRmlsZSxpbmRleDpnc306dm9pZCAwfSk7aWYoIWJuKXJldHVybjt2YXIgX2E9Ym4uc291cmNlRmlsZSxxYT1ibi5pbmRleCxybj1lLmZpcnN0RGVmaW5lZChlLmdldFRzQ29uZmlnUHJvcEFycmF5KF9hLFwicmVmZXJlbmNlc1wiKSxmdW5jdGlvbihNbyl7cmV0dXJuIGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKE1vLmluaXRpYWxpemVyKT9Nby5pbml0aWFsaXplcjp2b2lkIDB9KTtyZXR1cm4gcm4mJnJuLmVsZW1lbnRzLmxlbmd0aD5xYT9lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKF9hLHJuLmVsZW1lbnRzW3FhXSxLci5raW5kPT09ZS5GaWxlSW5jbHVkZUtpbmQuT3V0cHV0RnJvbVByb2plY3RSZWZlcmVuY2U/ZS5EaWFnbm9zdGljcy5GaWxlX2lzX291dHB1dF9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF9zcGVjaWZpZWRfaGVyZTplLkRpYWdub3N0aWNzLkZpbGVfaXNfc291cmNlX2Zyb21fcmVmZXJlbmNlZF9wcm9qZWN0X3NwZWNpZmllZF9oZXJlKTp2b2lkIDA7Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5BdXRvbWF0aWNUeXBlRGlyZWN0aXZlRmlsZTppZighZGUudHlwZXMpcmV0dXJuO3R0PWFsKFwidHlwZXNcIixLci50eXBlUmVmZXJlbmNlKSxrdD1lLkRpYWdub3N0aWNzLkZpbGVfaXNfZW50cnlfcG9pbnRfb2ZfdHlwZV9saWJyYXJ5X3NwZWNpZmllZF9oZXJlO2JyZWFrO2Nhc2UgZS5GaWxlSW5jbHVkZUtpbmQuTGliRmlsZTppZihLci5pbmRleCE9PXZvaWQgMCl7dHQ9YWwoXCJsaWJcIixkZS5saWJbS3IuaW5kZXhdKSxrdD1lLkRpYWdub3N0aWNzLkZpbGVfaXNfbGlicmFyeV9zcGVjaWZpZWRfaGVyZTticmVha312YXIgam49ZS5mb3JFYWNoRW50cnkoZS50YXJnZXRPcHRpb25EZWNsYXJhdGlvbi50eXBlLGZ1bmN0aW9uKE1vLGhvKXtyZXR1cm4gTW89PT1lLmdldEVtaXRTY3JpcHRUYXJnZXQoZGUpP2hvOnZvaWQgMH0pO3R0PWpuP1JmKFwidGFyZ2V0XCIsam4pOnZvaWQgMCxrdD1lLkRpYWdub3N0aWNzLkZpbGVfaXNfZGVmYXVsdF9saWJyYXJ5X2Zvcl90YXJnZXRfc3BlY2lmaWVkX2hlcmU7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKEtyKX1yZXR1cm4gdHQmJmUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGUoZGUuY29uZmlnRmlsZSx0dCxrdCl9fWZ1bmN0aW9uIEJzKCl7dmFyIEtyPWRlLnN1cHByZXNzT3V0cHV0UGF0aENoZWNrP3ZvaWQgMDplLmdldFRzQnVpbGRJbmZvRW1pdE91dHB1dEZpbGVQYXRoKGRlKTt5KEFlLEFyLGZ1bmN0aW9uKF9pLEVpLHR0KXt2YXIga3Q9KEVpP0VpLmNvbW1hbmRMaW5lLnByb2plY3RSZWZlcmVuY2VzOkFlKVt0dF0sYnQ9RWkmJkVpLnNvdXJjZUZpbGU7aWYoIV9pKXtXcyhidCx0dCxlLkRpYWdub3N0aWNzLkZpbGVfMF9ub3RfZm91bmQsa3QucGF0aCk7cmV0dXJufXZhciBpYT1faS5jb21tYW5kTGluZS5vcHRpb25zO2lmKCFpYS5jb21wb3NpdGV8fGlhLm5vRW1pdCl7dmFyIFh0PUVpP0VpLmNvbW1hbmRMaW5lLmZpbGVOYW1lczp3ZTtYdC5sZW5ndGgmJihpYS5jb21wb3NpdGV8fFdzKGJ0LHR0LGUuRGlhZ25vc3RpY3MuUmVmZXJlbmNlZF9wcm9qZWN0XzBfbXVzdF9oYXZlX3NldHRpbmdfY29tcG9zaXRlX0NvbG9uX3RydWUsa3QucGF0aCksaWEubm9FbWl0JiZXcyhidCx0dCxlLkRpYWdub3N0aWNzLlJlZmVyZW5jZWRfcHJvamVjdF8wX21heV9ub3RfZGlzYWJsZV9lbWl0LGt0LnBhdGgpKX1pZihrdC5wcmVwZW5kKXt2YXIgWmE9ZS5vdXRGaWxlKGlhKTtaYT9wZS5maWxlRXhpc3RzKFphKXx8V3MoYnQsdHQsZS5EaWFnbm9zdGljcy5PdXRwdXRfZmlsZV8wX2Zyb21fcHJvamVjdF8xX2RvZXNfbm90X2V4aXN0LFphLGt0LnBhdGgpOldzKGJ0LHR0LGUuRGlhZ25vc3RpY3MuQ2Fubm90X3ByZXBlbmRfcHJvamVjdF8wX2JlY2F1c2VfaXRfZG9lc19ub3RfaGF2ZV9vdXRGaWxlX3NldCxrdC5wYXRoKX0hRWkmJktyJiZLcj09PWUuZ2V0VHNCdWlsZEluZm9FbWl0T3V0cHV0RmlsZVBhdGgoaWEpJiYoV3MoYnQsdHQsZS5EaWFnbm9zdGljcy5DYW5ub3Rfd3JpdGVfZmlsZV8wX2JlY2F1c2VfaXRfd2lsbF9vdmVyd3JpdGVfdHNidWlsZGluZm9fZmlsZV9nZW5lcmF0ZWRfYnlfcmVmZXJlbmNlZF9wcm9qZWN0XzEsS3Isa3QucGF0aCksV3Quc2V0KFZpKEtyKSwhMCkpfSl9ZnVuY3Rpb24geGMoS3IsX2ksRWksdHQsa3QsYnQpe2Zvcih2YXIgaWE9ITAsWHQ9WmMoKSxaYT0wLGJuPVh0O1phPGJuLmxlbmd0aDtaYSsrKXt2YXIgX2E9Ym5bWmFdO2lmKGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihfYS5pbml0aWFsaXplcikpZm9yKHZhciBxYT0wLHJuPWUuZ2V0UHJvcGVydHlBc3NpZ25tZW50KF9hLmluaXRpYWxpemVyLEtyKTtxYTxybi5sZW5ndGg7cWErKyl7dmFyIGpuPXJuW3FhXSxNbz1qbi5pbml0aWFsaXplcjtlLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihNbykmJk1vLmVsZW1lbnRzLmxlbmd0aD5faSYmKHdpLmFkZChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlSW5Tb3VyY2VGaWxlKGRlLmNvbmZpZ0ZpbGUsTW8uZWxlbWVudHNbX2ldLEVpLHR0LGt0LGJ0KSksaWE9ITEpfX1pYSYmd2kuYWRkKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKEVpLHR0LGt0LGJ0KSl9ZnVuY3Rpb24gc3UoS3IsX2ksRWksdHQpe2Zvcih2YXIga3Q9ITAsYnQ9WmMoKSxpYT0wLFh0PWJ0O2lhPFh0Lmxlbmd0aDtpYSsrKXt2YXIgWmE9WHRbaWFdO2UuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihaYS5pbml0aWFsaXplcikmJlFsKFphLmluaXRpYWxpemVyLEtyLF9pLHZvaWQgMCxFaSx0dCkmJihrdD0hMSl9a3QmJndpLmFkZChlLmNyZWF0ZUNvbXBpbGVyRGlhZ25vc3RpYyhFaSx0dCkpfWZ1bmN0aW9uIHRsKEtyKXt2YXIgX2k9VXUoKTtyZXR1cm4gX2kmJmUuZ2V0UHJvcGVydHlBc3NpZ25tZW50KF9pLEtyKX1mdW5jdGlvbiBaYygpe3JldHVybiB0bChcInBhdGhzXCIpfHxlLmVtcHR5QXJyYXl9ZnVuY3Rpb24gUmYoS3IsX2kpe3ZhciBFaT10bChLcik7cmV0dXJuIEVpJiZlLmZpcnN0RGVmaW5lZChFaSxmdW5jdGlvbih0dCl7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsKHR0LmluaXRpYWxpemVyKSYmdHQuaW5pdGlhbGl6ZXIudGV4dD09PV9pP3R0LmluaXRpYWxpemVyOnZvaWQgMH0pfWZ1bmN0aW9uIGFsKEtyLF9pKXt2YXIgRWk9VXUoKTtyZXR1cm4gRWkmJmUuZ2V0UHJvcGVydHlBcnJheUVsZW1lbnRWYWx1ZShFaSxLcixfaSl9ZnVuY3Rpb24gSm8oS3IsX2ksRWksdHQpe3B1KCEwLF9pLEVpLEtyLF9pLEVpLHR0KX1mdW5jdGlvbiBldShLcixfaSxFaSx0dCl7cHUoITEsS3Isdm9pZCAwLF9pLEVpLHR0KX1mdW5jdGlvbiBXcyhLcixfaSxFaSx0dCxrdCl7dmFyIGJ0PWUuZmlyc3REZWZpbmVkKGUuZ2V0VHNDb25maWdQcm9wQXJyYXkoS3J8fGRlLmNvbmZpZ0ZpbGUsXCJyZWZlcmVuY2VzXCIpLGZ1bmN0aW9uKGlhKXtyZXR1cm4gZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oaWEuaW5pdGlhbGl6ZXIpP2lhLmluaXRpYWxpemVyOnZvaWQgMH0pO2J0JiZidC5lbGVtZW50cy5sZW5ndGg+X2k/d2kuYWRkKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGVJblNvdXJjZUZpbGUoS3J8fGRlLmNvbmZpZ0ZpbGUsYnQuZWxlbWVudHNbX2ldLEVpLHR0LGt0KSk6d2kuYWRkKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKEVpLHR0LGt0KSl9ZnVuY3Rpb24gcHUoS3IsX2ksRWksdHQsa3QsYnQsaWEpe3ZhciBYdD1VdSgpLFphPSFYdHx8IVFsKFh0LEtyLF9pLEVpLHR0LGt0LGJ0LGlhKTtaYSYmd2kuYWRkKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKHR0LGt0LGJ0LGlhKSl9ZnVuY3Rpb24gVXUoKXtpZihadD09PXZvaWQgMCl7WnQ9ITE7dmFyIEtyPWUuZ2V0VHNDb25maWdPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihkZS5jb25maWdGaWxlKTtpZihLcilmb3IodmFyIF9pPTAsRWk9ZS5nZXRQcm9wZXJ0eUFzc2lnbm1lbnQoS3IsXCJjb21waWxlck9wdGlvbnNcIik7X2k8RWkubGVuZ3RoO19pKyspe3ZhciB0dD1FaVtfaV07aWYoZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKHR0LmluaXRpYWxpemVyKSl7WnQ9dHQuaW5pdGlhbGl6ZXI7YnJlYWt9fX1yZXR1cm4gWnR8fHZvaWQgMH1mdW5jdGlvbiBRbChLcixfaSxFaSx0dCxrdCxidCxpYSxYdCl7Zm9yKHZhciBaYT1lLmdldFByb3BlcnR5QXNzaWdubWVudChLcixFaSx0dCksYm49MCxfYT1aYTtibjxfYS5sZW5ndGg7Ym4rKyl7dmFyIHFhPV9hW2JuXTt3aS5hZGQoZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZUluU291cmNlRmlsZShkZS5jb25maWdGaWxlLF9pP3FhLm5hbWU6cWEuaW5pdGlhbGl6ZXIsa3QsYnQsaWEsWHQpKX1yZXR1cm4hIVphLmxlbmd0aH1mdW5jdGlvbiB4bChLcixfaSl7V3Quc2V0KFZpKEtyKSwhMCksd2kuYWRkKF9pKX1mdW5jdGlvbiBZYShLcil7aWYoZGUubm9FbWl0KXJldHVybiExO3ZhciBfaT1WaShLcik7aWYoRGEoX2kpKXJldHVybiExO3ZhciBFaT1lLm91dEZpbGUoZGUpO2lmKEVpKXJldHVybiBkdShfaSxFaSl8fGR1KF9pLGUucmVtb3ZlRmlsZUV4dGVuc2lvbihFaSkrXCIuZC50c1wiKTtpZihkZS5kZWNsYXJhdGlvbkRpciYmZS5jb250YWluc1BhdGgoZGUuZGVjbGFyYXRpb25EaXIsX2ksWGksIXBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSkpcmV0dXJuITA7aWYoZGUub3V0RGlyKXJldHVybiBlLmNvbnRhaW5zUGF0aChkZS5vdXREaXIsX2ksWGksIXBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSk7aWYoZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihfaSxlLnN1cHBvcnRlZEpTRXh0ZW5zaW9uc0ZsYXQpfHxlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShfaSkpe3ZhciB0dD1lLnJlbW92ZUZpbGVFeHRlbnNpb24oX2kpO3JldHVybiEhRGEodHQrXCIudHNcIil8fCEhRGEodHQrXCIudHN4XCIpfXJldHVybiExfWZ1bmN0aW9uIGR1KEtyLF9pKXtyZXR1cm4gZS5jb21wYXJlUGF0aHMoS3IsX2ksWGksIXBlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSk9PT0wfWZ1bmN0aW9uIHZjKCl7cmV0dXJuIHBlLmdldFN5bWxpbmtDYWNoZT9wZS5nZXRTeW1saW5rQ2FjaGUoKTooQnJ8fChCcj1lLmNyZWF0ZVN5bWxpbmtDYWNoZShYaSx1YSkpLFllJiZ5ciYmIUJyLmhhc1Byb2Nlc3NlZFJlc29sdXRpb25zKCkmJkJyLnNldFN5bWxpbmtzRnJvbVJlc29sdXRpb25zKFllLHlyKSxCcil9fWUuY3JlYXRlUHJvZ3JhbT1JO2Z1bmN0aW9uIGwoWil7dmFyIEJlLGdlPVouY29tcGlsZXJIb3N0LmZpbGVFeGlzdHMsUmU9Wi5jb21waWxlckhvc3QuZGlyZWN0b3J5RXhpc3RzLHplPVouY29tcGlsZXJIb3N0LmdldERpcmVjdG9yaWVzLEVlPVouY29tcGlsZXJIb3N0LnJlYWxwYXRoO2lmKCFaLnVzZVNvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0KXJldHVybntvblByb2dyYW1DcmVhdGVDb21wbGV0ZTplLm5vb3AsZmlsZUV4aXN0czpJZX07Wi5jb21waWxlckhvc3QuZmlsZUV4aXN0cz1JZTt2YXIgSGU7cmV0dXJuIFJlJiYoSGU9Wi5jb21waWxlckhvc3QuZGlyZWN0b3J5RXhpc3RzPWZ1bmN0aW9uKEFlKXtyZXR1cm4gUmUuY2FsbChaLmNvbXBpbGVySG9zdCxBZSk/KGRlKEFlKSwhMCk6Wi5nZXRSZXNvbHZlZFByb2plY3RSZWZlcmVuY2VzKCk/KEJlfHwoQmU9bmV3IGUuU2V0LFouZm9yRWFjaFJlc29sdmVkUHJvamVjdFJlZmVyZW5jZShmdW5jdGlvbihlcil7dmFyIGlyPWUub3V0RmlsZShlci5jb21tYW5kTGluZS5vcHRpb25zKTtpZihpcilCZS5hZGQoZS5nZXREaXJlY3RvcnlQYXRoKFoudG9QYXRoKGlyKSkpO2Vsc2V7dmFyIENyPWVyLmNvbW1hbmRMaW5lLm9wdGlvbnMuZGVjbGFyYXRpb25EaXJ8fGVyLmNvbW1hbmRMaW5lLm9wdGlvbnMub3V0RGlyO0NyJiZCZS5hZGQoWi50b1BhdGgoQ3IpKX19KSkseWUoQWUsITEpKTohMX0pLHplJiYoWi5jb21waWxlckhvc3QuZ2V0RGlyZWN0b3JpZXM9ZnVuY3Rpb24oQWUpe3JldHVybiFaLmdldFJlc29sdmVkUHJvamVjdFJlZmVyZW5jZXMoKXx8UmUmJlJlLmNhbGwoWi5jb21waWxlckhvc3QsQWUpP3plLmNhbGwoWi5jb21waWxlckhvc3QsQWUpOltdfSksRWUmJihaLmNvbXBpbGVySG9zdC5yZWFscGF0aD1mdW5jdGlvbihBZSl7dmFyIGVyO3JldHVybigoZXI9Wi5nZXRTeW1saW5rQ2FjaGUoKS5nZXRTeW1saW5rZWRGaWxlcygpKT09PW51bGx8fGVyPT09dm9pZCAwP3ZvaWQgMDplci5nZXQoWi50b1BhdGgoQWUpKSl8fEVlLmNhbGwoWi5jb21waWxlckhvc3QsQWUpfSkse29uUHJvZ3JhbUNyZWF0ZUNvbXBsZXRlOnJyLGZpbGVFeGlzdHM6SWUsZGlyZWN0b3J5RXhpc3RzOkhlfTtmdW5jdGlvbiBycigpe1ouY29tcGlsZXJIb3N0LmZpbGVFeGlzdHM9Z2UsWi5jb21waWxlckhvc3QuZGlyZWN0b3J5RXhpc3RzPVJlLFouY29tcGlsZXJIb3N0LmdldERpcmVjdG9yaWVzPXplfWZ1bmN0aW9uIEllKEFlKXtyZXR1cm4gZ2UuY2FsbChaLmNvbXBpbGVySG9zdCxBZSk/ITA6IVouZ2V0UmVzb2x2ZWRQcm9qZWN0UmVmZXJlbmNlcygpfHwhZS5pc0RlY2xhcmF0aW9uRmlsZU5hbWUoQWUpPyExOnllKEFlLCEwKX1mdW5jdGlvbiBfZShBZSl7dmFyIGVyPVouZ2V0U291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QoWi50b1BhdGgoQWUpKTtyZXR1cm4gZXIhPT12b2lkIDA/ZS5pc1N0cmluZyhlcik/Z2UuY2FsbChaLmNvbXBpbGVySG9zdCxlcik6ITA6dm9pZCAwfWZ1bmN0aW9uIHdlKEFlKXt2YXIgZXI9Wi50b1BhdGgoQWUpLGlyPVwiXCIuY29uY2F0KGVyKS5jb25jYXQoZS5kaXJlY3RvcnlTZXBhcmF0b3IpO3JldHVybiBlLmZvckVhY2hLZXkoQmUsZnVuY3Rpb24oQ3Ipe3JldHVybiBlcj09PUNyfHxlLnN0YXJ0c1dpdGgoQ3IsaXIpfHxlLnN0YXJ0c1dpdGgoZXIsXCJcIi5jb25jYXQoQ3IsXCIvXCIpKX0pfWZ1bmN0aW9uIGRlKEFlKXt2YXIgZXI7aWYoISghWi5nZXRSZXNvbHZlZFByb2plY3RSZWZlcmVuY2VzKCl8fGUuY29udGFpbnNJZ25vcmVkUGF0aChBZSkpJiYhKCFFZXx8IWUuc3RyaW5nQ29udGFpbnMoQWUsZS5ub2RlTW9kdWxlc1BhdGhQYXJ0KSkpe3ZhciBpcj1aLmdldFN5bWxpbmtDYWNoZSgpLENyPWUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoWi50b1BhdGgoQWUpKTtpZighKCEoKGVyPWlyLmdldFN5bWxpbmtlZERpcmVjdG9yaWVzKCkpPT09bnVsbHx8ZXI9PT12b2lkIDApJiZlci5oYXMoQ3IpKSl7dmFyIFllPWUubm9ybWFsaXplUGF0aChFZS5jYWxsKFouY29tcGlsZXJIb3N0LEFlKSksQnI7aWYoWWU9PT1BZXx8KEJyPWUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoWi50b1BhdGgoWWUpKSk9PT1Dcil7aXIuc2V0U3ltbGlua2VkRGlyZWN0b3J5KENyLCExKTtyZXR1cm59aXIuc2V0U3ltbGlua2VkRGlyZWN0b3J5KEFlLHtyZWFsOmUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoWWUpLHJlYWxQYXRoOkJyfSl9fX1mdW5jdGlvbiB5ZShBZSxlcil7dmFyIGlyLENyPWVyP2Z1bmN0aW9uKG4pe3JldHVybiBfZShuKX06ZnVuY3Rpb24obil7cmV0dXJuIHdlKG4pfSxZZT1DcihBZSk7aWYoWWUhPT12b2lkIDApcmV0dXJuIFllO3ZhciBCcj1aLmdldFN5bWxpbmtDYWNoZSgpLEVyPUJyLmdldFN5bWxpbmtlZERpcmVjdG9yaWVzKCk7aWYoIUVyKXJldHVybiExO3ZhciBOZT1aLnRvUGF0aChBZSk7cmV0dXJuIGUuc3RyaW5nQ29udGFpbnMoTmUsZS5ub2RlTW9kdWxlc1BhdGhQYXJ0KT9lciYmKChpcj1Cci5nZXRTeW1saW5rZWRGaWxlcygpKT09PW51bGx8fGlyPT09dm9pZCAwP3ZvaWQgMDppci5oYXMoTmUpKT8hMDplLmZpcnN0RGVmaW5lZEl0ZXJhdG9yKEVyLmVudHJpZXMoKSxmdW5jdGlvbihuKXt2YXIgbHI9blswXSxiZT1uWzFdO2lmKCEoIWJlfHwhZS5zdGFydHNXaXRoKE5lLGxyKSkpe3ZhciBHZT1DcihOZS5yZXBsYWNlKGxyLGJlLnJlYWxQYXRoKSk7aWYoZXImJkdlKXt2YXIgdXI9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKEFlLFouY29tcGlsZXJIb3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKSk7QnIuc2V0U3ltbGlua2VkRmlsZShOZSxcIlwiLmNvbmNhdChiZS5yZWFsKS5jb25jYXQodXIucmVwbGFjZShuZXcgUmVnRXhwKGxyLFwiaVwiKSxcIlwiKSkpfXJldHVybiBHZX19KXx8ITE6ITF9fWUuZW1pdFNraXBwZWRXaXRoTm9EaWFnbm9zdGljcz17ZGlhZ25vc3RpY3M6ZS5lbXB0eUFycmF5LHNvdXJjZU1hcHM6dm9pZCAwLGVtaXR0ZWRGaWxlczp2b2lkIDAsZW1pdFNraXBwZWQ6ITB9O2Z1bmN0aW9uIGQoWixCZSxnZSxSZSl7dmFyIHplPVouZ2V0Q29tcGlsZXJPcHRpb25zKCk7aWYoemUubm9FbWl0KXJldHVybiBaLmdldFNlbWFudGljRGlhZ25vc3RpY3MoQmUsUmUpLEJlfHxlLm91dEZpbGUoemUpP2UuZW1pdFNraXBwZWRXaXRoTm9EaWFnbm9zdGljczpaLmVtaXRCdWlsZEluZm8oZ2UsUmUpO2lmKCEhemUubm9FbWl0T25FcnJvcil7dmFyIEVlPVZlKFZlKFZlKFZlKFtdLFouZ2V0T3B0aW9uc0RpYWdub3N0aWNzKFJlKSwhMCksWi5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyhCZSxSZSksITApLFouZ2V0R2xvYmFsRGlhZ25vc3RpY3MoUmUpLCEwKSxaLmdldFNlbWFudGljRGlhZ25vc3RpY3MoQmUsUmUpLCEwKTtpZihFZS5sZW5ndGg9PT0wJiZlLmdldEVtaXREZWNsYXJhdGlvbnMoWi5nZXRDb21waWxlck9wdGlvbnMoKSkmJihFZT1aLmdldERlY2xhcmF0aW9uRGlhZ25vc3RpY3Modm9pZCAwLFJlKSksISFFZS5sZW5ndGgpe3ZhciBIZTtpZighQmUmJiFlLm91dEZpbGUoemUpKXt2YXIgcnI9Wi5lbWl0QnVpbGRJbmZvKGdlLFJlKTtyci5kaWFnbm9zdGljcyYmKEVlPVZlKFZlKFtdLEVlLCEwKSxyci5kaWFnbm9zdGljcywhMCkpLEhlPXJyLmVtaXR0ZWRGaWxlc31yZXR1cm57ZGlhZ25vc3RpY3M6RWUsc291cmNlTWFwczp2b2lkIDAsZW1pdHRlZEZpbGVzOkhlLGVtaXRTa2lwcGVkOiEwfX19fWUuaGFuZGxlTm9FbWl0T3B0aW9ucz1kO2Z1bmN0aW9uIEQoWixCZSl7cmV0dXJuIGUuZmlsdGVyKFosZnVuY3Rpb24oZ2Upe3JldHVybiFnZS5za2lwcGVkT258fCFCZVtnZS5za2lwcGVkT25dfSl9ZS5maWx0ZXJTZW1hbnRpY0RpYWdub3N0aWNzPUQ7ZnVuY3Rpb24gZmUoWixCZSl7cmV0dXJuIEJlPT09dm9pZCAwJiYoQmU9Wikse2ZpbGVFeGlzdHM6ZnVuY3Rpb24oZ2Upe3JldHVybiBCZS5maWxlRXhpc3RzKGdlKX0scmVhZERpcmVjdG9yeTpmdW5jdGlvbihnZSxSZSx6ZSxFZSxIZSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKEJlLnJlYWREaXJlY3RvcnksXCInQ29tcGlsZXJIb3N0LnJlYWREaXJlY3RvcnknIG11c3QgYmUgaW1wbGVtZW50ZWQgdG8gY29ycmVjdGx5IHByb2Nlc3MgJ3Byb2plY3RSZWZlcmVuY2VzJ1wiKSxCZS5yZWFkRGlyZWN0b3J5KGdlLFJlLHplLEVlLEhlKX0scmVhZEZpbGU6ZnVuY3Rpb24oZ2Upe3JldHVybiBCZS5yZWFkRmlsZShnZSl9LHVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6Wi51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCksZ2V0Q3VycmVudERpcmVjdG9yeTpmdW5jdGlvbigpe3JldHVybiBaLmdldEN1cnJlbnREaXJlY3RvcnkoKX0sb25VblJlY292ZXJhYmxlQ29uZmlnRmlsZURpYWdub3N0aWM6Wi5vblVuUmVjb3ZlcmFibGVDb25maWdGaWxlRGlhZ25vc3RpY3x8ZS5yZXR1cm5VbmRlZmluZWQsdHJhY2U6Wi50cmFjZT9mdW5jdGlvbihnZSl7cmV0dXJuIFoudHJhY2UoZ2UpfTp2b2lkIDB9fWUucGFyc2VDb25maWdIb3N0RnJvbUNvbXBpbGVySG9zdExpa2U9ZmU7ZnVuY3Rpb24gZyhaLEJlLGdlKXtpZighWilyZXR1cm4gZS5lbXB0eUFycmF5O2Zvcih2YXIgUmUsemU9MDt6ZTxaLmxlbmd0aDt6ZSsrKXt2YXIgRWU9Wlt6ZV0sSGU9QmUoRWUsemUpO2lmKEVlLnByZXBlbmQmJkhlJiZIZS5vcHRpb25zKXt2YXIgcnI9ZS5vdXRGaWxlKEhlLm9wdGlvbnMpO2lmKCFyciljb250aW51ZTt2YXIgSWU9ZS5nZXRPdXRwdXRQYXRoc0ZvckJ1bmRsZShIZS5vcHRpb25zLCEwKSxfZT1JZS5qc0ZpbGVQYXRoLHdlPUllLnNvdXJjZU1hcEZpbGVQYXRoLGRlPUllLmRlY2xhcmF0aW9uRmlsZVBhdGgseWU9SWUuZGVjbGFyYXRpb25NYXBQYXRoLEFlPUllLmJ1aWxkSW5mb1BhdGgsZXI9ZS5jcmVhdGVJbnB1dEZpbGVzKGdlLF9lLHdlLGRlLHllLEFlKTsoUmV8fChSZT1bXSkpLnB1c2goZXIpfX1yZXR1cm4gUmV8fGUuZW1wdHlBcnJheX1lLmNyZWF0ZVByZXBlbmROb2Rlcz1nO2Z1bmN0aW9uIG5lKFosQmUpe3ZhciBnZT1CZXx8WjtyZXR1cm4gZS5yZXNvbHZlQ29uZmlnRmlsZVByb2plY3ROYW1lKGdlLnBhdGgpfWUucmVzb2x2ZVByb2plY3RSZWZlcmVuY2VQYXRoPW5lO2Z1bmN0aW9uIHVlKFosQmUpe3ZhciBnZT1CZS5leHRlbnNpb247c3dpdGNoKGdlKXtjYXNlXCIudHNcIjpjYXNlXCIuZC50c1wiOnJldHVybjtjYXNlXCIudHN4XCI6cmV0dXJuIFJlKCk7Y2FzZVwiLmpzeFwiOnJldHVybiBSZSgpfHx6ZSgpO2Nhc2VcIi5qc1wiOnJldHVybiB6ZSgpO2Nhc2VcIi5qc29uXCI6cmV0dXJuIEVlKCl9ZnVuY3Rpb24gUmUoKXtyZXR1cm4gWi5qc3g/dm9pZCAwOmUuRGlhZ25vc3RpY3MuTW9kdWxlXzBfd2FzX3Jlc29sdmVkX3RvXzFfYnV0X2pzeF9pc19ub3Rfc2V0fWZ1bmN0aW9uIHplKCl7cmV0dXJuIGUuZ2V0QWxsb3dKU0NvbXBpbGVyT3B0aW9uKFopfHwhZS5nZXRTdHJpY3RPcHRpb25WYWx1ZShaLFwibm9JbXBsaWNpdEFueVwiKT92b2lkIDA6ZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9hX2RlY2xhcmF0aW9uX2ZpbGVfZm9yX21vZHVsZV8wXzFfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGV9ZnVuY3Rpb24gRWUoKXtyZXR1cm4gWi5yZXNvbHZlSnNvbk1vZHVsZT92b2lkIDA6ZS5EaWFnbm9zdGljcy5Nb2R1bGVfMF93YXNfcmVzb2x2ZWRfdG9fMV9idXRfcmVzb2x2ZUpzb25Nb2R1bGVfaXNfbm90X3VzZWR9fWUuZ2V0UmVzb2x1dGlvbkRpYWdub3N0aWM9dWU7ZnVuY3Rpb24gV2UoWil7Zm9yKHZhciBCZT1aLmltcG9ydHMsZ2U9Wi5tb2R1bGVBdWdtZW50YXRpb25zLFJlPUJlLm1hcChmdW5jdGlvbihycil7cmV0dXJuIHJyLnRleHR9KSx6ZT0wLEVlPWdlO3plPEVlLmxlbmd0aDt6ZSsrKXt2YXIgSGU9RWVbemVdO0hlLmtpbmQ9PT0xMCYmUmUucHVzaChIZS50ZXh0KX1yZXR1cm4gUmV9ZnVuY3Rpb24gRmUoWixCZSl7dmFyIGdlPVouaW1wb3J0cyxSZT1aLm1vZHVsZUF1Z21lbnRhdGlvbnM7aWYoQmU8Z2UubGVuZ3RoKXJldHVybiBnZVtCZV07Zm9yKHZhciB6ZT1nZS5sZW5ndGgsRWU9MCxIZT1SZTtFZTxIZS5sZW5ndGg7RWUrKyl7dmFyIHJyPUhlW0VlXTtpZihyci5raW5kPT09MTApe2lmKEJlPT09emUpcmV0dXJuIHJyO3plKyt9fWUuRGVidWcuZmFpbChcInNob3VsZCBuZXZlciBhc2sgZm9yIG1vZHVsZSBuYW1lIGF0IGluZGV4IGhpZ2hlciB0aGFuIHBvc3NpYmxlIG1vZHVsZSBuYW1lXCIpfWUuZ2V0TW9kdWxlTmFtZVN0cmluZ0xpdGVyYWxBdD1GZX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEodyxCLEUsUSxsZSxOKXt2YXIgcD1bXSxtPXcuZW1pdChCLFQsUSxFLGxlLE4pLEc9bS5lbWl0U2tpcHBlZCxvZT1tLmRpYWdub3N0aWNzLGY9bS5leHBvcnRlZE1vZHVsZXNGcm9tRGVjbGFyYXRpb25FbWl0O3JldHVybntvdXRwdXRGaWxlczpwLGVtaXRTa2lwcGVkOkcsZGlhZ25vc3RpY3M6b2UsZXhwb3J0ZWRNb2R1bGVzRnJvbURlY2xhcmF0aW9uRW1pdDpmfTtmdW5jdGlvbiBUKEssYixzZSl7cC5wdXNoKHtuYW1lOkssd3JpdGVCeXRlT3JkZXJNYXJrOnNlLHRleHQ6Yn0pfX1lLmdldEZpbGVFbWl0T3V0cHV0PWE7dmFyIEM7KGZ1bmN0aW9uKHcpe2Z1bmN0aW9uIEIoKXtmdW5jdGlvbiBBKHksVixMKXt2YXIgUD17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gQShuZXcgZS5NYXAoeSksbmV3IGUuTWFwKFYpLEwmJm5ldyBlLlNldChMKSl9LGZvckVhY2g6ZnVuY3Rpb24oayl7cmV0dXJuIHkuZm9yRWFjaChrKX0sZ2V0S2V5czpmdW5jdGlvbihrKXtyZXR1cm4gVi5nZXQoayl9LGdldFZhbHVlczpmdW5jdGlvbihrKXtyZXR1cm4geS5nZXQoayl9LGhhc0tleTpmdW5jdGlvbihrKXtyZXR1cm4geS5oYXMoayl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4geS5rZXlzKCl9LGRlbGV0ZWRLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIEx9LGRlbGV0ZUtleTpmdW5jdGlvbihrKXsoTHx8KEw9bmV3IGUuU2V0KSkuYWRkKGspO3ZhciBZPXkuZ2V0KGspO3JldHVybiBZPyhZLmZvckVhY2goZnVuY3Rpb24oVSl7cmV0dXJuIFEoVixVLGspfSkseS5kZWxldGUoayksITApOiExfSxzZXQ6ZnVuY3Rpb24oayxZKXtMPT1udWxsfHxMLmRlbGV0ZShrKTt2YXIgVT15LmdldChrKTtyZXR1cm4geS5zZXQoayxZKSxVPT1udWxsfHxVLmZvckVhY2goZnVuY3Rpb24oail7WS5oYXMoail8fFEoVixqLGspfSksWS5mb3JFYWNoKGZ1bmN0aW9uKGope1UhPW51bGwmJlUuaGFzKGopfHxFKFYsaixrKX0pLFB9LGNsZWFyOmZ1bmN0aW9uKCl7eS5jbGVhcigpLFYuY2xlYXIoKSxMPT1udWxsfHxMLmNsZWFyKCl9fTtyZXR1cm4gUH1yZXR1cm4gQShuZXcgZS5NYXAsbmV3IGUuTWFwLHZvaWQgMCl9dy5jcmVhdGVNYW55VG9NYW55UGF0aE1hcD1CO2Z1bmN0aW9uIEUoQSx5LFYpe3ZhciBMPUEuZ2V0KHkpO0x8fChMPW5ldyBlLlNldCxBLnNldCh5LEwpKSxMLmFkZChWKX1mdW5jdGlvbiBRKEEseSxWKXt2YXIgTD1BLmdldCh5KTtyZXR1cm4gTCE9bnVsbCYmTC5kZWxldGUoVik/KEwuc2l6ZXx8QS5kZWxldGUoeSksITApOiExfWZ1bmN0aW9uIGxlKEEpe3JldHVybiBlLm1hcERlZmluZWQoQS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oeSl7dmFyIFY7cmV0dXJuKFY9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHkpKT09PW51bGx8fFY9PT12b2lkIDA/dm9pZCAwOlYucmVzb2x2ZWRQYXRofSl9ZnVuY3Rpb24gTihBLHkpe3ZhciBWPUEuZ2V0U3ltYm9sQXRMb2NhdGlvbih5KTtyZXR1cm4gViYmbGUoVil9ZnVuY3Rpb24gcChBLHksVixMKXtyZXR1cm4gZS50b1BhdGgoQS5nZXRQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QoeSl8fHksVixMKX1mdW5jdGlvbiBtKEEseSxWKXt2YXIgTDtpZih5LmltcG9ydHMmJnkuaW1wb3J0cy5sZW5ndGg+MClmb3IodmFyIFA9QS5nZXRUeXBlQ2hlY2tlcigpLGs9MCxZPXkuaW1wb3J0cztrPFkubGVuZ3RoO2srKyl7dmFyIFU9WVtrXSxqPU4oUCxVKTtqPT1udWxsfHxqLmZvckVhY2goZ2UpfXZhciBIPWUuZ2V0RGlyZWN0b3J5UGF0aCh5LnJlc29sdmVkUGF0aCk7aWYoeS5yZWZlcmVuY2VkRmlsZXMmJnkucmVmZXJlbmNlZEZpbGVzLmxlbmd0aD4wKWZvcih2YXIgST0wLGw9eS5yZWZlcmVuY2VkRmlsZXM7STxsLmxlbmd0aDtJKyspe3ZhciBkPWxbSV0sRD1wKEEsZC5maWxlTmFtZSxILFYpO2dlKEQpfWlmKHkucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlTmFtZXMmJnkucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlTmFtZXMuZm9yRWFjaChmdW5jdGlvbihSZSl7aWYoISFSZSl7dmFyIHplPVJlLnJlc29sdmVkRmlsZU5hbWUsRWU9cChBLHplLEgsVik7Z2UoRWUpfX0pLHkubW9kdWxlQXVnbWVudGF0aW9ucy5sZW5ndGgpZm9yKHZhciBQPUEuZ2V0VHlwZUNoZWNrZXIoKSxmZT0wLGc9eS5tb2R1bGVBdWdtZW50YXRpb25zO2ZlPGcubGVuZ3RoO2ZlKyspe3ZhciBuZT1nW2ZlXTtpZighIWUuaXNTdHJpbmdMaXRlcmFsKG5lKSl7dmFyIHVlPVAuZ2V0U3ltYm9sQXRMb2NhdGlvbihuZSk7IXVlfHxCZSh1ZSl9fWZvcih2YXIgV2U9MCxGZT1BLmdldFR5cGVDaGVja2VyKCkuZ2V0QW1iaWVudE1vZHVsZXMoKTtXZTxGZS5sZW5ndGg7V2UrKyl7dmFyIFo9RmVbV2VdO1ouZGVjbGFyYXRpb25zJiZaLmRlY2xhcmF0aW9ucy5sZW5ndGg+MSYmQmUoWil9cmV0dXJuIEw7ZnVuY3Rpb24gQmUoUmUpe2lmKCEhUmUuZGVjbGFyYXRpb25zKWZvcih2YXIgemU9MCxFZT1SZS5kZWNsYXJhdGlvbnM7emU8RWUubGVuZ3RoO3plKyspe3ZhciBIZT1FZVt6ZV0scnI9ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKEhlKTtyciYmcnIhPT15JiZnZShyci5yZXNvbHZlZFBhdGgpfX1mdW5jdGlvbiBnZShSZSl7KEx8fChMPW5ldyBlLlNldCkpLmFkZChSZSl9fWZ1bmN0aW9uIEcoQSx5KXtyZXR1cm4geSYmIXkucmVmZXJlbmNlZE1hcD09IUF9dy5jYW5SZXVzZU9sZFN0YXRlPUc7ZnVuY3Rpb24gb2UoQSx5LFYsTCl7dmFyIFA9bmV3IGUuTWFwLGs9QS5nZXRDb21waWxlck9wdGlvbnMoKS5tb2R1bGUhPT1lLk1vZHVsZUtpbmQuTm9uZT9CKCk6dm9pZCAwLFk9az9CKCk6dm9pZCAwLFU9bmV3IGUuU2V0LGo9RyhrLFYpO0EuZ2V0VHlwZUNoZWNrZXIoKTtmb3IodmFyIEg9MCxJPUEuZ2V0U291cmNlRmlsZXMoKTtIPEkubGVuZ3RoO0grKyl7dmFyIGw9SVtIXSxkPWUuRGVidWcuY2hlY2tEZWZpbmVkKGwudmVyc2lvbixcIlByb2dyYW0gaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIEJ1aWxkZXIgc2hvdWxkIGhhdmUgc291cmNlIGZpbGVzIHdpdGggdmVyc2lvbnMgc2V0XCIpLEQ9aj9WLmZpbGVJbmZvcy5nZXQobC5yZXNvbHZlZFBhdGgpOnZvaWQgMDtpZihrKXt2YXIgZmU9bShBLGwseSk7aWYoZmUmJmsuc2V0KGwucmVzb2x2ZWRQYXRoLGZlKSxqKXt2YXIgZz1WLmV4cG9ydGVkTW9kdWxlc01hcC5nZXRWYWx1ZXMobC5yZXNvbHZlZFBhdGgpO2cmJlkuc2V0KGwucmVzb2x2ZWRQYXRoLGcpfX1QLnNldChsLnJlc29sdmVkUGF0aCx7dmVyc2lvbjpkLHNpZ25hdHVyZTpEJiZELnNpZ25hdHVyZSxhZmZlY3RzR2xvYmFsU2NvcGU6RihsKXx8dm9pZCAwLGltcGxpZWRGb3JtYXQ6bC5pbXBsaWVkTm9kZUZvcm1hdH0pfXJldHVybntmaWxlSW5mb3M6UCxyZWZlcmVuY2VkTWFwOmssZXhwb3J0ZWRNb2R1bGVzTWFwOlksaGFzQ2FsbGVkVXBkYXRlU2hhcGVTaWduYXR1cmU6VSx1c2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlOiFMJiYhan19dy5jcmVhdGU9b2U7ZnVuY3Rpb24gZihBKXtBLmFsbEZpbGVzRXhjbHVkaW5nRGVmYXVsdExpYnJhcnlGaWxlPXZvaWQgMCxBLmFsbEZpbGVOYW1lcz12b2lkIDB9dy5yZWxlYXNlQ2FjaGU9ZjtmdW5jdGlvbiBUKEEpe3ZhciB5LFY7cmV0dXJue2ZpbGVJbmZvczpuZXcgZS5NYXAoQS5maWxlSW5mb3MpLHJlZmVyZW5jZWRNYXA6KHk9QS5yZWZlcmVuY2VkTWFwKT09PW51bGx8fHk9PT12b2lkIDA/dm9pZCAwOnkuY2xvbmUoKSxleHBvcnRlZE1vZHVsZXNNYXA6KFY9QS5leHBvcnRlZE1vZHVsZXNNYXApPT09bnVsbHx8Vj09PXZvaWQgMD92b2lkIDA6Vi5jbG9uZSgpLGhhc0NhbGxlZFVwZGF0ZVNoYXBlU2lnbmF0dXJlOm5ldyBlLlNldChBLmhhc0NhbGxlZFVwZGF0ZVNoYXBlU2lnbmF0dXJlKSx1c2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlOkEudXNlRmlsZVZlcnNpb25Bc1NpZ25hdHVyZX19dy5jbG9uZT1UO2Z1bmN0aW9uIEsoQSx5LFYsTCxQLGssWSl7dmFyIFU9a3x8bmV3IGUuTWFwLGo9eS5nZXRTb3VyY2VGaWxlQnlQYXRoKFYpO2lmKCFqKXJldHVybiBlLmVtcHR5QXJyYXk7aWYoIUooQSx5LGosVSxMLFAsWSkpcmV0dXJuW2pdO3ZhciBIPShBLnJlZmVyZW5jZWRNYXA/JDpYKShBLHksaixVLEwsUCxZKTtyZXR1cm4ga3x8YihBLFUpLEh9dy5nZXRGaWxlc0FmZmVjdGVkQnk9SztmdW5jdGlvbiBiKEEseSl7eS5mb3JFYWNoKGZ1bmN0aW9uKFYsTCl7cmV0dXJuIHNlKEEsVixMKX0pfXcudXBkYXRlU2lnbmF0dXJlc0Zyb21DYWNoZT1iO2Z1bmN0aW9uIHNlKEEseSxWKXtBLmZpbGVJbmZvcy5nZXQoVikuc2lnbmF0dXJlPXksQS5oYXNDYWxsZWRVcGRhdGVTaGFwZVNpZ25hdHVyZS5hZGQoVil9dy51cGRhdGVTaWduYXR1cmVPZkZpbGU9c2U7ZnVuY3Rpb24gSihBLHksVixMLFAsayxZLFUpe2lmKFU9PT12b2lkIDAmJihVPUEudXNlRmlsZVZlcnNpb25Bc1NpZ25hdHVyZSksZS5EZWJ1Zy5hc3NlcnQoISFWKSxlLkRlYnVnLmFzc2VydCghWXx8ISFBLmV4cG9ydGVkTW9kdWxlc01hcCxcIkNvbXB1dGUgdmlzaWJsZSB0byBvdXRzaWRlIG1hcCBvbmx5IGlmIHZpc2libGVUb091dHNpZGVSZWZlcmVuY2VkTWFwIHByZXNlbnQgaW4gdGhlIHN0YXRlXCIpLEEuaGFzQ2FsbGVkVXBkYXRlU2hhcGVTaWduYXR1cmUuaGFzKFYucmVzb2x2ZWRQYXRoKXx8TC5oYXMoVi5yZXNvbHZlZFBhdGgpKXJldHVybiExO3ZhciBqPUEuZmlsZUluZm9zLmdldChWLnJlc29sdmVkUGF0aCk7aWYoIWopcmV0dXJuIGUuRGVidWcuZmFpbCgpO3ZhciBIPWouc2lnbmF0dXJlLEk7aWYoIVYuaXNEZWNsYXJhdGlvbkZpbGUmJiFVKXt2YXIgbD1hKHksViwhMCxQLHZvaWQgMCwhMCksZD1lLmZpcnN0T3JVbmRlZmluZWQobC5vdXRwdXRGaWxlcyk7ZCYmKGUuRGVidWcuYXNzZXJ0KGUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKGQubmFtZSksXCJGaWxlIGV4dGVuc2lvbiBmb3Igc2lnbmF0dXJlIGV4cGVjdGVkIHRvIGJlIGR0c1wiLGZ1bmN0aW9uKCl7cmV0dXJuXCJGb3VuZDogXCIuY29uY2F0KGUuZ2V0QW55RXh0ZW5zaW9uRnJvbVBhdGgoZC5uYW1lKSxcIiBmb3IgXCIpLmNvbmNhdChkLm5hbWUsXCI6OiBBbGwgb3V0cHV0IGZpbGVzOiBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KGwub3V0cHV0RmlsZXMubWFwKGZ1bmN0aW9uKGZlKXtyZXR1cm4gZmUubmFtZX0pKSl9KSxJPShrfHxlLmdlbmVyYXRlRGpiMkhhc2gpKGQudGV4dCksWSYmSSE9PUgmJmllKFYsbC5leHBvcnRlZE1vZHVsZXNGcm9tRGVjbGFyYXRpb25FbWl0LFkpKX1pZihJPT09dm9pZCAwJiYoST1WLnZlcnNpb24sWSYmSSE9PUgpKXt2YXIgRD1BLnJlZmVyZW5jZWRNYXA/QS5yZWZlcmVuY2VkTWFwLmdldFZhbHVlcyhWLnJlc29sdmVkUGF0aCk6dm9pZCAwO0Q/WS5zZXQoVi5yZXNvbHZlZFBhdGgsRCk6WS5kZWxldGVLZXkoVi5yZXNvbHZlZFBhdGgpfXJldHVybiBMLnNldChWLnJlc29sdmVkUGF0aCxJKSxJIT09SH13LnVwZGF0ZVNoYXBlU2lnbmF0dXJlPUo7ZnVuY3Rpb24gaWUoQSx5LFYpe2lmKCF5KXtWLmRlbGV0ZUtleShBLnJlc29sdmVkUGF0aCk7cmV0dXJufXZhciBMO3kuZm9yRWFjaChmdW5jdGlvbihrKXtyZXR1cm4gUChsZShrKSl9KSxMP1Yuc2V0KEEucmVzb2x2ZWRQYXRoLEwpOlYuZGVsZXRlS2V5KEEucmVzb2x2ZWRQYXRoKTtmdW5jdGlvbiBQKGspe2shPW51bGwmJmsubGVuZ3RoJiYoTHx8KEw9bmV3IGUuU2V0KSxrLmZvckVhY2goZnVuY3Rpb24oWSl7cmV0dXJuIEwuYWRkKFkpfSkpfX13LnVwZGF0ZUV4cG9ydGVkTW9kdWxlcz1pZTtmdW5jdGlvbiBSKEEseSl7dmFyIFY7eSYmKGUuRGVidWcuYXNzZXJ0KCEhQS5leHBvcnRlZE1vZHVsZXNNYXApLChWPXkuZGVsZXRlZEtleXMoKSk9PT1udWxsfHxWPT09dm9pZCAwfHxWLmZvckVhY2goZnVuY3Rpb24oTCl7cmV0dXJuIEEuZXhwb3J0ZWRNb2R1bGVzTWFwLmRlbGV0ZUtleShMKX0pLHkuZm9yRWFjaChmdW5jdGlvbihMLFApe3JldHVybiBBLmV4cG9ydGVkTW9kdWxlc01hcC5zZXQoUCxMKX0pKX13LnVwZGF0ZUV4cG9ydGVkRmlsZXNNYXBGcm9tQ2FjaGU9UjtmdW5jdGlvbiBxKEEseSxWKXt2YXIgTD15LmdldENvbXBpbGVyT3B0aW9ucygpO2lmKGUub3V0RmlsZShMKXx8IUEucmVmZXJlbmNlZE1hcHx8RihWKSlyZXR1cm4gTyhBLHkpO2Zvcih2YXIgUD1uZXcgZS5TZXQsaz1bVi5yZXNvbHZlZFBhdGhdO2subGVuZ3RoOyl7dmFyIFk9ay5wb3AoKTtpZighUC5oYXMoWSkpe1AuYWRkKFkpO3ZhciBVPUEucmVmZXJlbmNlZE1hcC5nZXRWYWx1ZXMoWSk7aWYoVSlmb3IodmFyIGo9VS5rZXlzKCksSD1qLm5leHQoKTshSC5kb25lO0g9ai5uZXh0KCkpay5wdXNoKEgudmFsdWUpfX1yZXR1cm4gZS5hcnJheUZyb20oZS5tYXBEZWZpbmVkSXRlcmF0b3IoUC5rZXlzKCksZnVuY3Rpb24oSSl7dmFyIGwsZDtyZXR1cm4oZD0obD15LmdldFNvdXJjZUZpbGVCeVBhdGgoSSkpPT09bnVsbHx8bD09PXZvaWQgMD92b2lkIDA6bC5maWxlTmFtZSkhPT1udWxsJiZkIT09dm9pZCAwP2Q6SX0pKX13LmdldEFsbERlcGVuZGVuY2llcz1xO2Z1bmN0aW9uIE8oQSx5KXtpZighQS5hbGxGaWxlTmFtZXMpe3ZhciBWPXkuZ2V0U291cmNlRmlsZXMoKTtBLmFsbEZpbGVOYW1lcz1WPT09ZS5lbXB0eUFycmF5P2UuZW1wdHlBcnJheTpWLm1hcChmdW5jdGlvbihMKXtyZXR1cm4gTC5maWxlTmFtZX0pfXJldHVybiBBLmFsbEZpbGVOYW1lc31mdW5jdGlvbiB2ZShBLHkpe3ZhciBWPUEucmVmZXJlbmNlZE1hcC5nZXRLZXlzKHkpO3JldHVybiBWP2UuYXJyYXlGcm9tKFYua2V5cygpKTpbXX13LmdldFJlZmVyZW5jZWRCeVBhdGhzPXZlO2Z1bmN0aW9uIGVlKEEpe2Zvcih2YXIgeT0wLFY9QS5zdGF0ZW1lbnRzO3k8Vi5sZW5ndGg7eSsrKXt2YXIgTD1WW3ldO2lmKCFlLmlzTW9kdWxlV2l0aFN0cmluZ0xpdGVyYWxOYW1lKEwpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGhlKEEpe3JldHVybiBlLnNvbWUoQS5tb2R1bGVBdWdtZW50YXRpb25zLGZ1bmN0aW9uKHkpe3JldHVybiBlLmlzR2xvYmFsU2NvcGVBdWdtZW50YXRpb24oeS5wYXJlbnQpfSl9ZnVuY3Rpb24gRihBKXtyZXR1cm4gaGUoQSl8fCFlLmlzRXh0ZXJuYWxPckNvbW1vbkpzTW9kdWxlKEEpJiYhZS5pc0pzb25Tb3VyY2VGaWxlKEEpJiYhZWUoQSl9ZnVuY3Rpb24geChBLHksVil7aWYoQS5hbGxGaWxlc0V4Y2x1ZGluZ0RlZmF1bHRMaWJyYXJ5RmlsZSlyZXR1cm4gQS5hbGxGaWxlc0V4Y2x1ZGluZ0RlZmF1bHRMaWJyYXJ5RmlsZTt2YXIgTDtWJiZVKFYpO2Zvcih2YXIgUD0wLGs9eS5nZXRTb3VyY2VGaWxlcygpO1A8ay5sZW5ndGg7UCsrKXt2YXIgWT1rW1BdO1khPT1WJiZVKFkpfXJldHVybiBBLmFsbEZpbGVzRXhjbHVkaW5nRGVmYXVsdExpYnJhcnlGaWxlPUx8fGUuZW1wdHlBcnJheSxBLmFsbEZpbGVzRXhjbHVkaW5nRGVmYXVsdExpYnJhcnlGaWxlO2Z1bmN0aW9uIFUoail7eS5pc1NvdXJjZUZpbGVEZWZhdWx0TGlicmFyeShqKXx8KEx8fChMPVtdKSkucHVzaChqKX19dy5nZXRBbGxGaWxlc0V4Y2x1ZGluZ0RlZmF1bHRMaWJyYXJ5RmlsZT14O2Z1bmN0aW9uIFgoQSx5LFYpe3ZhciBMPXkuZ2V0Q29tcGlsZXJPcHRpb25zKCk7cmV0dXJuIEwmJmUub3V0RmlsZShMKT9bVl06eChBLHksVil9ZnVuY3Rpb24gJChBLHksVixMLFAsayxZKXtpZihGKFYpKXJldHVybiB4KEEseSxWKTt2YXIgVT15LmdldENvbXBpbGVyT3B0aW9ucygpO2lmKFUmJihVLmlzb2xhdGVkTW9kdWxlc3x8ZS5vdXRGaWxlKFUpKSlyZXR1cm5bVl07dmFyIGo9bmV3IGUuTWFwO2ouc2V0KFYucmVzb2x2ZWRQYXRoLFYpO2Zvcih2YXIgSD12ZShBLFYucmVzb2x2ZWRQYXRoKTtILmxlbmd0aD4wOyl7dmFyIEk9SC5wb3AoKTtpZighai5oYXMoSSkpe3ZhciBsPXkuZ2V0U291cmNlRmlsZUJ5UGF0aChJKTtqLnNldChJLGwpLGwmJkooQSx5LGwsTCxQLGssWSkmJkgucHVzaC5hcHBseShILHZlKEEsbC5yZXNvbHZlZFBhdGgpKX19cmV0dXJuIGUuYXJyYXlGcm9tKGUubWFwRGVmaW5lZEl0ZXJhdG9yKGoudmFsdWVzKCksZnVuY3Rpb24oZCl7cmV0dXJuIGR9KSl9fSkoQz1lLkJ1aWxkZXJTdGF0ZXx8KGUuQnVpbGRlclN0YXRlPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oail7altqLkR0c09ubHk9MF09XCJEdHNPbmx5XCIsaltqLkZ1bGw9MV09XCJGdWxsXCJ9KShhPWUuQnVpbGRlckZpbGVFbWl0fHwoZS5CdWlsZGVyRmlsZUVtaXQ9e30pKTtmdW5jdGlvbiBDKGosSCl7cmV0dXJuIGo9PT1IfHxqIT09dm9pZCAwJiZIIT09dm9pZCAwJiZqLnNpemU9PT1ILnNpemUmJiFlLmZvckVhY2hLZXkoaixmdW5jdGlvbihJKXtyZXR1cm4hSC5oYXMoSSl9KX1mdW5jdGlvbiB3KGosSCxJLGwpe3ZhciBkPWUuQnVpbGRlclN0YXRlLmNyZWF0ZShqLEgsSSxsKTtkLnByb2dyYW09ajt2YXIgRD1qLmdldENvbXBpbGVyT3B0aW9ucygpO2QuY29tcGlsZXJPcHRpb25zPUQsZS5vdXRGaWxlKEQpfHwoZC5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZT1uZXcgZS5NYXApLGQuY2hhbmdlZEZpbGVzU2V0PW5ldyBlLlNldDt2YXIgZmU9ZS5CdWlsZGVyU3RhdGUuY2FuUmV1c2VPbGRTdGF0ZShkLnJlZmVyZW5jZWRNYXAsSSksZz1mZT9JLmNvbXBpbGVyT3B0aW9uczp2b2lkIDAsbmU9ZmUmJkkuc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUmJiEhZC5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZSYmIWUuY29tcGlsZXJPcHRpb25zQWZmZWN0U2VtYW50aWNEaWFnbm9zdGljcyhELGcpO2lmKGZlKXtpZighSS5jdXJyZW50Q2hhbmdlZEZpbGVQYXRoKXt2YXIgdWU9SS5jdXJyZW50QWZmZWN0ZWRGaWxlc1NpZ25hdHVyZXM7ZS5EZWJ1Zy5hc3NlcnQoIUkuYWZmZWN0ZWRGaWxlcyYmKCF1ZXx8IXVlLnNpemUpLFwiQ2Fubm90IHJldXNlIGlmIG9ubHkgZmV3IGFmZmVjdGVkIGZpbGVzIG9mIGN1cnJlbnRDaGFuZ2VkRmlsZSB3ZXJlIGl0ZXJhdGVkXCIpfXZhciBXZT1JLmNoYW5nZWRGaWxlc1NldDtuZSYmZS5EZWJ1Zy5hc3NlcnQoIVdlfHwhZS5mb3JFYWNoS2V5KFdlLGZ1bmN0aW9uKFJlKXtyZXR1cm4gSS5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZS5oYXMoUmUpfSksXCJTZW1hbnRpYyBkaWFnbm9zdGljcyBzaG91bGRudCBiZSBhdmFpbGFibGUgZm9yIGNoYW5nZWQgZmlsZXNcIiksV2U9PW51bGx8fFdlLmZvckVhY2goZnVuY3Rpb24oUmUpe3JldHVybiBkLmNoYW5nZWRGaWxlc1NldC5hZGQoUmUpfSksIWUub3V0RmlsZShEKSYmSS5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXQmJihkLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdD1JLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdC5zbGljZSgpLGQuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0S2luZD1JLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQmJm5ldyBlLk1hcChJLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQpLGQuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0SW5kZXg9SS5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXRJbmRleCxkLnNlZW5BZmZlY3RlZEZpbGVzPW5ldyBlLlNldCl9dmFyIEZlPWQucmVmZXJlbmNlZE1hcCxaPWZlP0kucmVmZXJlbmNlZE1hcDp2b2lkIDAsQmU9bmUmJiFELnNraXBMaWJDaGVjaz09IWcuc2tpcExpYkNoZWNrLGdlPUJlJiYhRC5za2lwRGVmYXVsdExpYkNoZWNrPT0hZy5za2lwRGVmYXVsdExpYkNoZWNrO3JldHVybiBkLmZpbGVJbmZvcy5mb3JFYWNoKGZ1bmN0aW9uKFJlLHplKXt2YXIgRWUsSGU7aWYoIWZlfHwhKEVlPUkuZmlsZUluZm9zLmdldCh6ZSkpfHxFZS52ZXJzaW9uIT09UmUudmVyc2lvbnx8IUMoSGU9RmUmJkZlLmdldFZhbHVlcyh6ZSksWiYmWi5nZXRWYWx1ZXMoemUpKXx8SGUmJmUuZm9yRWFjaEtleShIZSxmdW5jdGlvbihfZSl7cmV0dXJuIWQuZmlsZUluZm9zLmhhcyhfZSkmJkkuZmlsZUluZm9zLmhhcyhfZSl9KSlkLmNoYW5nZWRGaWxlc1NldC5hZGQoemUpO2Vsc2UgaWYobmUpe3ZhciBycj1qLmdldFNvdXJjZUZpbGVCeVBhdGgoemUpO2lmKHJyLmlzRGVjbGFyYXRpb25GaWxlJiYhQmV8fHJyLmhhc05vRGVmYXVsdExpYiYmIWdlKXJldHVybjt2YXIgSWU9SS5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZS5nZXQoemUpO0llJiYoZC5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZS5zZXQoemUsSS5oYXNSZXVzYWJsZURpYWdub3N0aWM/QihJZSxqLEgpOkllKSxkLnNlbWFudGljRGlhZ25vc3RpY3NGcm9tT2xkU3RhdGV8fChkLnNlbWFudGljRGlhZ25vc3RpY3NGcm9tT2xkU3RhdGU9bmV3IGUuU2V0KSxkLnNlbWFudGljRGlhZ25vc3RpY3NGcm9tT2xkU3RhdGUuYWRkKHplKSl9fSksZmUmJmUuZm9yRWFjaEVudHJ5KEkuZmlsZUluZm9zLGZ1bmN0aW9uKFJlLHplKXtyZXR1cm4gUmUuYWZmZWN0c0dsb2JhbFNjb3BlJiYhZC5maWxlSW5mb3MuaGFzKHplKX0pP2UuQnVpbGRlclN0YXRlLmdldEFsbEZpbGVzRXhjbHVkaW5nRGVmYXVsdExpYnJhcnlGaWxlKGQsaix2b2lkIDApLmZvckVhY2goZnVuY3Rpb24oUmUpe3JldHVybiBkLmNoYW5nZWRGaWxlc1NldC5hZGQoUmUucmVzb2x2ZWRQYXRoKX0pOmcmJiFlLm91dEZpbGUoRCkmJmUuY29tcGlsZXJPcHRpb25zQWZmZWN0RW1pdChELGcpJiYoai5nZXRTb3VyY2VGaWxlcygpLmZvckVhY2goZnVuY3Rpb24oUmUpe3JldHVybiBQKGQsUmUucmVzb2x2ZWRQYXRoLDEpfSksZS5EZWJ1Zy5hc3NlcnQoIWQuc2VlbkFmZmVjdGVkRmlsZXN8fCFkLnNlZW5BZmZlY3RlZEZpbGVzLnNpemUpLGQuc2VlbkFmZmVjdGVkRmlsZXM9ZC5zZWVuQWZmZWN0ZWRGaWxlc3x8bmV3IGUuU2V0KSxmZSYmZS5mb3JFYWNoRW50cnkoSS5maWxlSW5mb3MsZnVuY3Rpb24oUmUsemUpe2QuZmlsZUluZm9zLmhhcyh6ZSkmJmQuZmlsZUluZm9zLmdldCh6ZSkuaW1wbGllZEZvcm1hdCE9PVJlLmltcGxpZWRGb3JtYXQmJmQuY2hhbmdlZEZpbGVzU2V0LmFkZCh6ZSl9KSxkLmJ1aWxkSW5mb0VtaXRQZW5kaW5nPSEhZC5jaGFuZ2VkRmlsZXNTZXQuc2l6ZSxkfWZ1bmN0aW9uIEIoaixILEkpe2lmKCFqLmxlbmd0aClyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciBsPWUuZ2V0RGlyZWN0b3J5UGF0aChlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoZS5nZXRUc0J1aWxkSW5mb0VtaXRPdXRwdXRGaWxlUGF0aChILmdldENvbXBpbGVyT3B0aW9ucygpKSxILmdldEN1cnJlbnREaXJlY3RvcnkoKSkpO3JldHVybiBqLm1hcChmdW5jdGlvbihEKXt2YXIgZmU9RShELEgsZCk7ZmUucmVwb3J0c1VubmVjZXNzYXJ5PUQucmVwb3J0c1VubmVjZXNzYXJ5LGZlLnJlcG9ydHNEZXByZWNhdGVkPUQucmVwb3J0RGVwcmVjYXRlZCxmZS5zb3VyY2U9RC5zb3VyY2UsZmUuc2tpcHBlZE9uPUQuc2tpcHBlZE9uO3ZhciBnPUQucmVsYXRlZEluZm9ybWF0aW9uO3JldHVybiBmZS5yZWxhdGVkSW5mb3JtYXRpb249Zz9nLmxlbmd0aD9nLm1hcChmdW5jdGlvbihuZSl7cmV0dXJuIEUobmUsSCxkKX0pOltdOnZvaWQgMCxmZX0pO2Z1bmN0aW9uIGQoRCl7cmV0dXJuIGUudG9QYXRoKEQsbCxJKX19ZnVuY3Rpb24gRShqLEgsSSl7dmFyIGw9ai5maWxlO3JldHVybiBLZShLZSh7fSxqKSx7ZmlsZTpsP0guZ2V0U291cmNlRmlsZUJ5UGF0aChJKGwpKTp2b2lkIDB9KX1mdW5jdGlvbiBRKGope2UuQnVpbGRlclN0YXRlLnJlbGVhc2VDYWNoZShqKSxqLnByb2dyYW09dm9pZCAwfWZ1bmN0aW9uIGxlKGope3ZhciBILEk9ZS5CdWlsZGVyU3RhdGUuY2xvbmUoaik7cmV0dXJuIEkuc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGU9ai5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZSYmbmV3IGUuTWFwKGouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUpLEkuY2hhbmdlZEZpbGVzU2V0PW5ldyBlLlNldChqLmNoYW5nZWRGaWxlc1NldCksSS5hZmZlY3RlZEZpbGVzPWouYWZmZWN0ZWRGaWxlcyxJLmFmZmVjdGVkRmlsZXNJbmRleD1qLmFmZmVjdGVkRmlsZXNJbmRleCxJLmN1cnJlbnRDaGFuZ2VkRmlsZVBhdGg9ai5jdXJyZW50Q2hhbmdlZEZpbGVQYXRoLEkuY3VycmVudEFmZmVjdGVkRmlsZXNTaWduYXR1cmVzPWouY3VycmVudEFmZmVjdGVkRmlsZXNTaWduYXR1cmVzJiZuZXcgZS5NYXAoai5jdXJyZW50QWZmZWN0ZWRGaWxlc1NpZ25hdHVyZXMpLEkuY3VycmVudEFmZmVjdGVkRmlsZXNFeHBvcnRlZE1vZHVsZXNNYXA9KEg9ai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcCk9PT1udWxsfHxIPT09dm9pZCAwP3ZvaWQgMDpILmNsb25lKCksSS5zZWVuQWZmZWN0ZWRGaWxlcz1qLnNlZW5BZmZlY3RlZEZpbGVzJiZuZXcgZS5TZXQoai5zZWVuQWZmZWN0ZWRGaWxlcyksSS5jbGVhbmVkRGlhZ25vc3RpY3NPZkxpYkZpbGVzPWouY2xlYW5lZERpYWdub3N0aWNzT2ZMaWJGaWxlcyxJLnNlbWFudGljRGlhZ25vc3RpY3NGcm9tT2xkU3RhdGU9ai5zZW1hbnRpY0RpYWdub3N0aWNzRnJvbU9sZFN0YXRlJiZuZXcgZS5TZXQoai5zZW1hbnRpY0RpYWdub3N0aWNzRnJvbU9sZFN0YXRlKSxJLnByb2dyYW09ai5wcm9ncmFtLEkuY29tcGlsZXJPcHRpb25zPWouY29tcGlsZXJPcHRpb25zLEkuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0PWouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0JiZqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdC5zbGljZSgpLEkuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0S2luZD1qLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQmJm5ldyBlLk1hcChqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQpLEkuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0SW5kZXg9ai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXRJbmRleCxJLnNlZW5FbWl0dGVkRmlsZXM9ai5zZWVuRW1pdHRlZEZpbGVzJiZuZXcgZS5NYXAoai5zZWVuRW1pdHRlZEZpbGVzKSxJLnByb2dyYW1FbWl0Q29tcGxldGU9ai5wcm9ncmFtRW1pdENvbXBsZXRlLEl9ZnVuY3Rpb24gTihqLEgpe2UuRGVidWcuYXNzZXJ0KCFIfHwhai5hZmZlY3RlZEZpbGVzfHxqLmFmZmVjdGVkRmlsZXNbai5hZmZlY3RlZEZpbGVzSW5kZXgtMV0hPT1IfHwhai5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZS5oYXMoSC5yZXNvbHZlZFBhdGgpKX1mdW5jdGlvbiBwKGosSCxJLGwpe2Zvcih2YXIgZDs7KXt2YXIgRD1qLmFmZmVjdGVkRmlsZXM7aWYoRCl7Zm9yKHZhciBmZT1qLnNlZW5BZmZlY3RlZEZpbGVzLGc9ai5hZmZlY3RlZEZpbGVzSW5kZXg7ZzxELmxlbmd0aDspe3ZhciBuZT1EW2ddO2lmKCFmZS5oYXMobmUucmVzb2x2ZWRQYXRoKSlyZXR1cm4gai5hZmZlY3RlZEZpbGVzSW5kZXg9ZyxmKGosbmUsSCxJLGwpLG5lO2crK31qLmNoYW5nZWRGaWxlc1NldC5kZWxldGUoai5jdXJyZW50Q2hhbmdlZEZpbGVQYXRoKSxqLmN1cnJlbnRDaGFuZ2VkRmlsZVBhdGg9dm9pZCAwLGUuQnVpbGRlclN0YXRlLnVwZGF0ZVNpZ25hdHVyZXNGcm9tQ2FjaGUoaixqLmN1cnJlbnRBZmZlY3RlZEZpbGVzU2lnbmF0dXJlcyksai5jdXJyZW50QWZmZWN0ZWRGaWxlc1NpZ25hdHVyZXMuY2xlYXIoKSxlLkJ1aWxkZXJTdGF0ZS51cGRhdGVFeHBvcnRlZEZpbGVzTWFwRnJvbUNhY2hlKGosai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcCksKGQ9ai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcCk9PT1udWxsfHxkPT09dm9pZCAwfHxkLmNsZWFyKCksai5hZmZlY3RlZEZpbGVzPXZvaWQgMH12YXIgdWU9ai5jaGFuZ2VkRmlsZXNTZXQua2V5cygpLm5leHQoKTtpZih1ZS5kb25lKXJldHVybjt2YXIgV2U9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoai5wcm9ncmFtKSxGZT1XZS5nZXRDb21waWxlck9wdGlvbnMoKTtpZihlLm91dEZpbGUoRmUpKXJldHVybiBlLkRlYnVnLmFzc2VydCghai5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZSksV2U7ai5jdXJyZW50QWZmZWN0ZWRGaWxlc1NpZ25hdHVyZXN8fChqLmN1cnJlbnRBZmZlY3RlZEZpbGVzU2lnbmF0dXJlcz1uZXcgZS5NYXApLGouZXhwb3J0ZWRNb2R1bGVzTWFwJiYoai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcHx8KGouY3VycmVudEFmZmVjdGVkRmlsZXNFeHBvcnRlZE1vZHVsZXNNYXA9ZS5CdWlsZGVyU3RhdGUuY3JlYXRlTWFueVRvTWFueVBhdGhNYXAoKSkpLGouYWZmZWN0ZWRGaWxlcz1lLkJ1aWxkZXJTdGF0ZS5nZXRGaWxlc0FmZmVjdGVkQnkoaixXZSx1ZS52YWx1ZSxILEksai5jdXJyZW50QWZmZWN0ZWRGaWxlc1NpZ25hdHVyZXMsai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcCksai5jdXJyZW50Q2hhbmdlZEZpbGVQYXRoPXVlLnZhbHVlLGouYWZmZWN0ZWRGaWxlc0luZGV4PTAsai5zZWVuQWZmZWN0ZWRGaWxlc3x8KGouc2VlbkFmZmVjdGVkRmlsZXM9bmV3IGUuU2V0KX19ZnVuY3Rpb24gbShqKXtqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdD12b2lkIDAsai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXRLaW5kPXZvaWQgMCxqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEluZGV4PXZvaWQgMH1mdW5jdGlvbiBHKGope3ZhciBIPWouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0O2lmKEgpe2Zvcih2YXIgST1qLnNlZW5FbWl0dGVkRmlsZXN8fChqLnNlZW5FbWl0dGVkRmlsZXM9bmV3IGUuTWFwKSxsPWouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0SW5kZXg7bDxILmxlbmd0aDtsKyspe3ZhciBkPWUuRGVidWcuY2hlY2tEZWZpbmVkKGoucHJvZ3JhbSkuZ2V0U291cmNlRmlsZUJ5UGF0aChIW2xdKTtpZihkKXt2YXIgRD1JLmdldChkLnJlc29sdmVkUGF0aCksZmU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5EZWJ1Zy5jaGVja0RlZmluZWQoai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXRLaW5kKS5nZXQoZC5yZXNvbHZlZFBhdGgpKTtpZihEPT09dm9pZCAwfHxEPGZlKXJldHVybiBqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEluZGV4PWwse2FmZmVjdGVkRmlsZTpkLGVtaXRLaW5kOmZlfX19bShqKX19ZnVuY3Rpb24gb2Uoail7aWYoIWouY2xlYW5lZERpYWdub3N0aWNzT2ZMaWJGaWxlcyl7ai5jbGVhbmVkRGlhZ25vc3RpY3NPZkxpYkZpbGVzPSEwO3ZhciBIPWUuRGVidWcuY2hlY2tEZWZpbmVkKGoucHJvZ3JhbSksST1ILmdldENvbXBpbGVyT3B0aW9ucygpO2UuZm9yRWFjaChILmdldFNvdXJjZUZpbGVzKCksZnVuY3Rpb24obCl7cmV0dXJuIEguaXNTb3VyY2VGaWxlRGVmYXVsdExpYnJhcnkobCkmJiFlLnNraXBUeXBlQ2hlY2tpbmcobCxJLEgpJiZLKGosbC5yZXNvbHZlZFBhdGgpfSl9fWZ1bmN0aW9uIGYoaixILEksbCxkKXt2YXIgRDtpZihLKGosSC5yZXNvbHZlZFBhdGgpLGouYWxsRmlsZXNFeGNsdWRpbmdEZWZhdWx0TGlicmFyeUZpbGU9PT1qLmFmZmVjdGVkRmlsZXMpe29lKGopLGUuQnVpbGRlclN0YXRlLnVwZGF0ZVNoYXBlU2lnbmF0dXJlKGosZS5EZWJ1Zy5jaGVja0RlZmluZWQoai5wcm9ncmFtKSxILGUuRGVidWcuY2hlY2tEZWZpbmVkKGouY3VycmVudEFmZmVjdGVkRmlsZXNTaWduYXR1cmVzKSxJLGwsai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcCk7cmV0dXJufWUuRGVidWcuYXNzZXJ0KGouaGFzQ2FsbGVkVXBkYXRlU2hhcGVTaWduYXR1cmUuaGFzKEgucmVzb2x2ZWRQYXRoKXx8KChEPWouY3VycmVudEFmZmVjdGVkRmlsZXNTaWduYXR1cmVzKT09PW51bGx8fEQ9PT12b2lkIDA/dm9pZCAwOkQuaGFzKEgucmVzb2x2ZWRQYXRoKSksXCJTaWduYXR1cmUgbm90IHVwZGF0ZWQgZm9yIGFmZmVjdGVkIGZpbGU6IFwiLmNvbmNhdChILmZpbGVOYW1lKSksIWouY29tcGlsZXJPcHRpb25zLmFzc3VtZUNoYW5nZXNPbmx5QWZmZWN0RGlyZWN0RGVwZW5kZW5jaWVzJiZpZShqLEgsSSxsLGQpfWZ1bmN0aW9uIFQoaixILEksbCxkKXtpZihLKGosSCksIWouY2hhbmdlZEZpbGVzU2V0LmhhcyhIKSl7dmFyIEQ9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoai5wcm9ncmFtKSxmZT1ELmdldFNvdXJjZUZpbGVCeVBhdGgoSCk7ZmUmJihlLkJ1aWxkZXJTdGF0ZS51cGRhdGVTaGFwZVNpZ25hdHVyZShqLEQsZmUsZS5EZWJ1Zy5jaGVja0RlZmluZWQoai5jdXJyZW50QWZmZWN0ZWRGaWxlc1NpZ25hdHVyZXMpLEksbCxqLmN1cnJlbnRBZmZlY3RlZEZpbGVzRXhwb3J0ZWRNb2R1bGVzTWFwLCFkLmRpc2FibGVVc2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlKSxlLmdldEVtaXREZWNsYXJhdGlvbnMoai5jb21waWxlck9wdGlvbnMpJiZQKGosSCwwKSl9fWZ1bmN0aW9uIEsoaixIKXtyZXR1cm4gai5zZW1hbnRpY0RpYWdub3N0aWNzRnJvbU9sZFN0YXRlPyhqLnNlbWFudGljRGlhZ25vc3RpY3NGcm9tT2xkU3RhdGUuZGVsZXRlKEgpLGouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUuZGVsZXRlKEgpLCFqLnNlbWFudGljRGlhZ25vc3RpY3NGcm9tT2xkU3RhdGUuc2l6ZSk6ITB9ZnVuY3Rpb24gYihqLEgpe3ZhciBJPWUuRGVidWcuY2hlY2tEZWZpbmVkKGouY3VycmVudEFmZmVjdGVkRmlsZXNTaWduYXR1cmVzKS5nZXQoSCksbD1lLkRlYnVnLmNoZWNrRGVmaW5lZChqLmZpbGVJbmZvcy5nZXQoSCkpLnNpZ25hdHVyZTtyZXR1cm4gSSE9PWx9ZnVuY3Rpb24gc2UoaixILEkpe3ZhciBsPWouY3VycmVudEFmZmVjdGVkRmlsZXNFeHBvcnRlZE1vZHVsZXNNYXAuZ2V0S2V5cyhIKSxkPWwmJmUuZm9yRWFjaEtleShsLEkpO3JldHVybiBkfHwobD1qLmV4cG9ydGVkTW9kdWxlc01hcC5nZXRLZXlzKEgpLGwmJmUuZm9yRWFjaEtleShsLGZ1bmN0aW9uKEQpe3ZhciBmZTtyZXR1cm4hai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcC5oYXNLZXkoRCkmJiEoISgoZmU9ai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcC5kZWxldGVkS2V5cygpKT09PW51bGx8fGZlPT09dm9pZCAwKSYmZmUuaGFzKEQpKT9JKEQpOnZvaWQgMH0pKX1mdW5jdGlvbiBKKGosSCxJLGwsZCl7dmFyIEQ7cmV0dXJuISgoRD1qLmZpbGVJbmZvcy5nZXQoSCkpPT09bnVsbHx8RD09PXZvaWQgMCkmJkQuYWZmZWN0c0dsb2JhbFNjb3BlPyhlLkJ1aWxkZXJTdGF0ZS5nZXRBbGxGaWxlc0V4Y2x1ZGluZ0RlZmF1bHRMaWJyYXJ5RmlsZShqLGoucHJvZ3JhbSx2b2lkIDApLmZvckVhY2goZnVuY3Rpb24oZmUpe3JldHVybiBUKGosZmUucmVzb2x2ZWRQYXRoLEksbCxkKX0pLG9lKGopLCEwKTohMX1mdW5jdGlvbiBpZShqLEgsSSxsLGQpe2lmKCEoIWouZXhwb3J0ZWRNb2R1bGVzTWFwfHwhai5jaGFuZ2VkRmlsZXNTZXQuaGFzKEgucmVzb2x2ZWRQYXRoKSkmJiEhYihqLEgucmVzb2x2ZWRQYXRoKSl7aWYoai5jb21waWxlck9wdGlvbnMuaXNvbGF0ZWRNb2R1bGVzKXt2YXIgRD1uZXcgZS5NYXA7RC5zZXQoSC5yZXNvbHZlZFBhdGgsITApO2Zvcih2YXIgZmU9ZS5CdWlsZGVyU3RhdGUuZ2V0UmVmZXJlbmNlZEJ5UGF0aHMoaixILnJlc29sdmVkUGF0aCk7ZmUubGVuZ3RoPjA7KXt2YXIgZz1mZS5wb3AoKTtpZighRC5oYXMoZykpe2lmKEQuc2V0KGcsITApLEooaixnLEksbCxkKSlyZXR1cm47aWYoVChqLGcsSSxsLGQpLGIoaixnKSl7dmFyIG5lPWUuRGVidWcuY2hlY2tEZWZpbmVkKGoucHJvZ3JhbSkuZ2V0U291cmNlRmlsZUJ5UGF0aChnKTtmZS5wdXNoLmFwcGx5KGZlLGUuQnVpbGRlclN0YXRlLmdldFJlZmVyZW5jZWRCeVBhdGhzKGosbmUucmVzb2x2ZWRQYXRoKSl9fX19ZS5EZWJ1Zy5hc3NlcnQoISFqLmN1cnJlbnRBZmZlY3RlZEZpbGVzRXhwb3J0ZWRNb2R1bGVzTWFwKTt2YXIgdWU9bmV3IGUuU2V0O3NlKGosSC5yZXNvbHZlZFBhdGgsZnVuY3Rpb24oV2Upe2lmKEooaixXZSxJLGwsZCkpcmV0dXJuITA7dmFyIEZlPWoucmVmZXJlbmNlZE1hcC5nZXRLZXlzKFdlKTtyZXR1cm4gRmUmJmUuZm9yRWFjaEtleShGZSxmdW5jdGlvbihaKXtyZXR1cm4gUihqLFosdWUsSSxsLGQpfSl9KX19ZnVuY3Rpb24gUihqLEgsSSxsLGQsRCl7dmFyIGZlO2lmKCEhZS50cnlBZGRUb1NldChJLEgpKXtpZihKKGosSCxsLGQsRCkpcmV0dXJuITA7VChqLEgsbCxkLEQpLGUuRGVidWcuYXNzZXJ0KCEhai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcCksc2UoaixILGZ1bmN0aW9uKGcpe3JldHVybiBSKGosZyxJLGwsZCxEKX0pLChmZT1qLnJlZmVyZW5jZWRNYXAuZ2V0S2V5cyhIKSk9PT1udWxsfHxmZT09PXZvaWQgMHx8ZmUuZm9yRWFjaChmdW5jdGlvbihnKXtyZXR1cm4hSS5oYXMoZykmJlQoaixnLGwsZCxEKX0pfX1mdW5jdGlvbiBxKGosSCxJLGwsZCl7ZD9qLmJ1aWxkSW5mb0VtaXRQZW5kaW5nPSExOkg9PT1qLnByb2dyYW0/KGouY2hhbmdlZEZpbGVzU2V0LmNsZWFyKCksai5wcm9ncmFtRW1pdENvbXBsZXRlPSEwKTooai5zZWVuQWZmZWN0ZWRGaWxlcy5hZGQoSC5yZXNvbHZlZFBhdGgpLEkhPT12b2lkIDAmJihqLnNlZW5FbWl0dGVkRmlsZXN8fChqLnNlZW5FbWl0dGVkRmlsZXM9bmV3IGUuTWFwKSkuc2V0KEgucmVzb2x2ZWRQYXRoLEkpLGw/KGouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0SW5kZXgrKyxqLmJ1aWxkSW5mb0VtaXRQZW5kaW5nPSEwKTpqLmFmZmVjdGVkRmlsZXNJbmRleCsrKX1mdW5jdGlvbiBPKGosSCxJKXtyZXR1cm4gcShqLEkpLHtyZXN1bHQ6SCxhZmZlY3RlZDpJfX1mdW5jdGlvbiB2ZShqLEgsSSxsLGQsRCl7cmV0dXJuIHEoaixJLGwsZCxEKSx7cmVzdWx0OkgsYWZmZWN0ZWQ6SX19ZnVuY3Rpb24gZWUoaixILEkpe3JldHVybiBlLmNvbmNhdGVuYXRlKGhlKGosSCxJKSxlLkRlYnVnLmNoZWNrRGVmaW5lZChqLnByb2dyYW0pLmdldFByb2dyYW1EaWFnbm9zdGljcyhIKSl9ZnVuY3Rpb24gaGUoaixILEkpe3ZhciBsPUgucmVzb2x2ZWRQYXRoO2lmKGouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUpe3ZhciBkPWouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUuZ2V0KGwpO2lmKGQpcmV0dXJuIGUuZmlsdGVyU2VtYW50aWNEaWFnbm9zdGljcyhkLGouY29tcGlsZXJPcHRpb25zKX12YXIgRD1lLkRlYnVnLmNoZWNrRGVmaW5lZChqLnByb2dyYW0pLmdldEJpbmRBbmRDaGVja0RpYWdub3N0aWNzKEgsSSk7cmV0dXJuIGouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUmJmouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUuc2V0KGwsRCksZS5maWx0ZXJTZW1hbnRpY0RpYWdub3N0aWNzKEQsai5jb21waWxlck9wdGlvbnMpfWZ1bmN0aW9uIEYoaixIKXtpZihlLm91dEZpbGUoai5jb21waWxlck9wdGlvbnMpKXJldHVybjt2YXIgST1lLkRlYnVnLmNoZWNrRGVmaW5lZChqLnByb2dyYW0pLmdldEN1cnJlbnREaXJlY3RvcnkoKSxsPWUuZ2V0RGlyZWN0b3J5UGF0aChlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoZS5nZXRUc0J1aWxkSW5mb0VtaXRPdXRwdXRGaWxlUGF0aChqLmNvbXBpbGVyT3B0aW9ucyksSSkpLGQ9W10sRD1uZXcgZS5NYXAsZmUsZyxuZT1lLmFycmF5RnJvbShqLmZpbGVJbmZvcy5lbnRyaWVzKCksZnVuY3Rpb24oQWUpe3ZhciBlcj1BZVswXSxpcj1BZVsxXSxDcj1kZShlcik7ZS5EZWJ1Zy5hc3NlcnQoZFtDci0xXT09PXdlKGVyKSk7dmFyIFllPWouY3VycmVudEFmZmVjdGVkRmlsZXNTaWduYXR1cmVzJiZqLmN1cnJlbnRBZmZlY3RlZEZpbGVzU2lnbmF0dXJlcy5nZXQoZXIpLEJyPVllIT1udWxsP1llOmlyLnNpZ25hdHVyZTtyZXR1cm4gaXIudmVyc2lvbj09PUJyP2lyLmFmZmVjdHNHbG9iYWxTY29wZXx8aXIuaW1wbGllZEZvcm1hdD97dmVyc2lvbjppci52ZXJzaW9uLHNpZ25hdHVyZTp2b2lkIDAsYWZmZWN0c0dsb2JhbFNjb3BlOmlyLmFmZmVjdHNHbG9iYWxTY29wZSxpbXBsaWVkRm9ybWF0OmlyLmltcGxpZWRGb3JtYXR9OmlyLnZlcnNpb246QnIhPT12b2lkIDA/WWU9PT12b2lkIDA/aXI6e3ZlcnNpb246aXIudmVyc2lvbixzaWduYXR1cmU6WWUsYWZmZWN0c0dsb2JhbFNjb3BlOmlyLmFmZmVjdHNHbG9iYWxTY29wZSxpbXBsaWVkRm9ybWF0OmlyLmltcGxpZWRGb3JtYXR9Ont2ZXJzaW9uOmlyLnZlcnNpb24sc2lnbmF0dXJlOiExLGFmZmVjdHNHbG9iYWxTY29wZTppci5hZmZlY3RzR2xvYmFsU2NvcGUsaW1wbGllZEZvcm1hdDppci5pbXBsaWVkRm9ybWF0fX0pLHVlO2oucmVmZXJlbmNlZE1hcCYmKHVlPWUuYXJyYXlGcm9tKGoucmVmZXJlbmNlZE1hcC5rZXlzKCkpLnNvcnQoZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpLm1hcChmdW5jdGlvbihBZSl7cmV0dXJuW2RlKEFlKSx5ZShqLnJlZmVyZW5jZWRNYXAuZ2V0VmFsdWVzKEFlKSldfSkpO3ZhciBXZTtqLmV4cG9ydGVkTW9kdWxlc01hcCYmKFdlPWUubWFwRGVmaW5lZChlLmFycmF5RnJvbShqLmV4cG9ydGVkTW9kdWxlc01hcC5rZXlzKCkpLnNvcnQoZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpLGZ1bmN0aW9uKEFlKXt2YXIgZXI7aWYoai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcCl7aWYoISgoZXI9ai5jdXJyZW50QWZmZWN0ZWRGaWxlc0V4cG9ydGVkTW9kdWxlc01hcC5kZWxldGVkS2V5cygpKT09PW51bGx8fGVyPT09dm9pZCAwKSYmZXIuaGFzKEFlKSlyZXR1cm47dmFyIGlyPWouY3VycmVudEFmZmVjdGVkRmlsZXNFeHBvcnRlZE1vZHVsZXNNYXAuZ2V0VmFsdWVzKEFlKTtpZihpcilyZXR1cm5bZGUoQWUpLHllKGlyKV19cmV0dXJuW2RlKEFlKSx5ZShqLmV4cG9ydGVkTW9kdWxlc01hcC5nZXRWYWx1ZXMoQWUpKV19KSk7dmFyIEZlO2lmKGouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUpZm9yKHZhciBaPTAsQmU9ZS5hcnJheUZyb20oai5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZS5rZXlzKCkpLnNvcnQoZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpO1o8QmUubGVuZ3RoO1orKyl7dmFyIGdlPUJlW1pdLFJlPWouc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUuZ2V0KGdlKTsoRmV8fChGZT1bXSkpLnB1c2goUmUubGVuZ3RoP1tkZShnZSksai5oYXNSZXVzYWJsZURpYWdub3N0aWM/UmU6JChSZSx3ZSldOmRlKGdlKSl9dmFyIHplO2lmKGouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0KWZvcih2YXIgRWU9bmV3IGUuU2V0LEhlPTAscnI9ai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXQuc2xpY2Uoai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXRJbmRleCkuc29ydChlLmNvbXBhcmVTdHJpbmdzQ2FzZVNlbnNpdGl2ZSk7SGU8cnIubGVuZ3RoO0hlKyspe3ZhciBJZT1ycltIZV07ZS50cnlBZGRUb1NldChFZSxJZSkmJih6ZXx8KHplPVtdKSkucHVzaChbZGUoSWUpLGouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0S2luZC5nZXQoSWUpXSl9cmV0dXJue2ZpbGVOYW1lczpkLGZpbGVJbmZvczpuZSxvcHRpb25zOngoai5jb21waWxlck9wdGlvbnMsX2UpLGZpbGVJZHNMaXN0OmZlLHJlZmVyZW5jZWRNYXA6dWUsZXhwb3J0ZWRNb2R1bGVzTWFwOldlLHNlbWFudGljRGlhZ25vc3RpY3NQZXJGaWxlOkZlLGFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdDp6ZX07ZnVuY3Rpb24gX2UoQWUpe3JldHVybiB3ZShlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoQWUsSSkpfWZ1bmN0aW9uIHdlKEFlKXtyZXR1cm4gZS5lbnN1cmVQYXRoSXNOb25Nb2R1bGVOYW1lKGUuZ2V0UmVsYXRpdmVQYXRoRnJvbURpcmVjdG9yeShsLEFlLEgpKX1mdW5jdGlvbiBkZShBZSl7dmFyIGVyPUQuZ2V0KEFlKTtyZXR1cm4gZXI9PT12b2lkIDAmJihkLnB1c2god2UoQWUpKSxELnNldChBZSxlcj1kLmxlbmd0aCkpLGVyfWZ1bmN0aW9uIHllKEFlKXt2YXIgZXI9ZS5hcnJheUZyb20oQWUua2V5cygpLGRlKS5zb3J0KGUuY29tcGFyZVZhbHVlcyksaXI9ZXIuam9pbigpLENyPWc9PW51bGw/dm9pZCAwOmcuZ2V0KGlyKTtyZXR1cm4gQ3I9PT12b2lkIDAmJigoZmV8fChmZT1bXSkpLnB1c2goZXIpLChnfHwoZz1uZXcgZS5NYXApKS5zZXQoaXIsQ3I9ZmUubGVuZ3RoKSksQ3J9fWZ1bmN0aW9uIHgoaixIKXtmb3IodmFyIEksbD1lLmdldE9wdGlvbnNOYW1lTWFwKCkub3B0aW9uc05hbWVNYXAsZD0wLEQ9ZS5nZXRPd25LZXlzKGopLnNvcnQoZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpO2Q8RC5sZW5ndGg7ZCsrKXt2YXIgZmU9RFtkXSxnPWZlLnRvTG93ZXJDYXNlKCksbmU9bC5nZXQoZyk7KChuZT09bnVsbD92b2lkIDA6bmUuYWZmZWN0c0VtaXQpfHwobmU9PW51bGw/dm9pZCAwOm5lLmFmZmVjdHNTZW1hbnRpY0RpYWdub3N0aWNzKXx8Zz09PVwic3RyaWN0XCJ8fGc9PT1cInNraXBsaWJjaGVja1wifHxnPT09XCJza2lwZGVmYXVsdGxpYmNoZWNrXCIpJiYoKEl8fChJPXt9KSlbZmVdPVgobmUsaltmZV0sSCkpfXJldHVybiBJfWZ1bmN0aW9uIFgoaixILEkpe2lmKGope2lmKGoudHlwZT09PVwibGlzdFwiKXt2YXIgbD1IO2lmKGouZWxlbWVudC5pc0ZpbGVQYXRoJiZsLmxlbmd0aClyZXR1cm4gbC5tYXAoSSl9ZWxzZSBpZihqLmlzRmlsZVBhdGgpcmV0dXJuIEkoSCl9cmV0dXJuIEh9ZnVuY3Rpb24gJChqLEgpe3JldHVybiBlLkRlYnVnLmFzc2VydCghIWoubGVuZ3RoKSxqLm1hcChmdW5jdGlvbihJKXt2YXIgbD1BKEksSCk7bC5yZXBvcnRzVW5uZWNlc3Nhcnk9SS5yZXBvcnRzVW5uZWNlc3NhcnksbC5yZXBvcnREZXByZWNhdGVkPUkucmVwb3J0c0RlcHJlY2F0ZWQsbC5zb3VyY2U9SS5zb3VyY2UsbC5za2lwcGVkT249SS5za2lwcGVkT247dmFyIGQ9SS5yZWxhdGVkSW5mb3JtYXRpb247cmV0dXJuIGwucmVsYXRlZEluZm9ybWF0aW9uPWQ/ZC5sZW5ndGg/ZC5tYXAoZnVuY3Rpb24oRCl7cmV0dXJuIEEoRCxIKX0pOltdOnZvaWQgMCxsfSl9ZnVuY3Rpb24gQShqLEgpe3ZhciBJPWouZmlsZTtyZXR1cm4gS2UoS2Uoe30saikse2ZpbGU6ST9IKEkucmVzb2x2ZWRQYXRoKTp2b2lkIDB9KX12YXIgeTsoZnVuY3Rpb24oail7altqLlNlbWFudGljRGlhZ25vc3RpY3NCdWlsZGVyUHJvZ3JhbT0wXT1cIlNlbWFudGljRGlhZ25vc3RpY3NCdWlsZGVyUHJvZ3JhbVwiLGpbai5FbWl0QW5kU2VtYW50aWNEaWFnbm9zdGljc0J1aWxkZXJQcm9ncmFtPTFdPVwiRW1pdEFuZFNlbWFudGljRGlhZ25vc3RpY3NCdWlsZGVyUHJvZ3JhbVwifSkoeT1lLkJ1aWxkZXJQcm9ncmFtS2luZHx8KGUuQnVpbGRlclByb2dyYW1LaW5kPXt9KSk7ZnVuY3Rpb24gVihqLEgsSSxsLGQsRCl7dmFyIGZlLGcsbmU7cmV0dXJuIGo9PT12b2lkIDA/KGUuRGVidWcuYXNzZXJ0KEg9PT12b2lkIDApLGZlPUksbmU9bCxlLkRlYnVnLmFzc2VydCghIW5lKSxnPW5lLmdldFByb2dyYW0oKSk6ZS5pc0FycmF5KGopPyhuZT1sLGc9ZS5jcmVhdGVQcm9ncmFtKHtyb290TmFtZXM6aixvcHRpb25zOkgsaG9zdDpJLG9sZFByb2dyYW06bmUmJm5lLmdldFByb2dyYW1PclVuZGVmaW5lZCgpLGNvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3M6ZCxwcm9qZWN0UmVmZXJlbmNlczpEfSksZmU9SSk6KGc9aixmZT1ILG5lPUksZD1sKSx7aG9zdDpmZSxuZXdQcm9ncmFtOmcsb2xkUHJvZ3JhbTpuZSxjb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzOmR8fGUuZW1wdHlBcnJheX19ZS5nZXRCdWlsZGVyQ3JlYXRpb25QYXJhbWV0ZXJzPVY7ZnVuY3Rpb24gTChqLEgpe3ZhciBJPUgubmV3UHJvZ3JhbSxsPUguaG9zdCxkPUgub2xkUHJvZ3JhbSxEPUguY29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyxmZT1kJiZkLmdldFN0YXRlKCk7aWYoZmUmJkk9PT1mZS5wcm9ncmFtJiZEPT09SS5nZXRDb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzKCkpcmV0dXJuIEk9dm9pZCAwLGZlPXZvaWQgMCxkO3ZhciBnPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUobC51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCkpLG5lPWUubWF5YmVCaW5kKGwsbC5jcmVhdGVIYXNoKSx1ZT13KEksZyxmZSxsLmRpc2FibGVVc2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlKSxXZTtJLmdldFByb2dyYW1CdWlsZEluZm89ZnVuY3Rpb24oKXtyZXR1cm4gRih1ZSxnKX0sST12b2lkIDAsZD12b2lkIDAsZmU9dm9pZCAwO3ZhciBGZT1mdW5jdGlvbigpe3JldHVybiB1ZX0sWj1VKEZlLEQpO3JldHVybiBaLmdldFN0YXRlPUZlLFouYmFja3VwU3RhdGU9ZnVuY3Rpb24oKXtlLkRlYnVnLmFzc2VydChXZT09PXZvaWQgMCksV2U9bGUodWUpfSxaLnJlc3RvcmVTdGF0ZT1mdW5jdGlvbigpe3VlPWUuRGVidWcuY2hlY2tEZWZpbmVkKFdlKSxXZT12b2lkIDB9LFouZ2V0QWxsRGVwZW5kZW5jaWVzPWZ1bmN0aW9uKHJyKXtyZXR1cm4gZS5CdWlsZGVyU3RhdGUuZ2V0QWxsRGVwZW5kZW5jaWVzKHVlLGUuRGVidWcuY2hlY2tEZWZpbmVkKHVlLnByb2dyYW0pLHJyKX0sWi5nZXRTZW1hbnRpY0RpYWdub3N0aWNzPUhlLFouZW1pdD16ZSxaLnJlbGVhc2VQcm9ncmFtPWZ1bmN0aW9uKCl7USh1ZSksV2U9dm9pZCAwfSxqPT09eS5TZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW0/Wi5nZXRTZW1hbnRpY0RpYWdub3N0aWNzT2ZOZXh0QWZmZWN0ZWRGaWxlPUVlOmo9PT15LkVtaXRBbmRTZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW0/KFouZ2V0U2VtYW50aWNEaWFnbm9zdGljc09mTmV4dEFmZmVjdGVkRmlsZT1FZSxaLmVtaXROZXh0QWZmZWN0ZWRGaWxlPWdlLFouZW1pdEJ1aWxkSW5mbz1CZSk6ZS5ub3RJbXBsZW1lbnRlZCgpLFo7ZnVuY3Rpb24gQmUocnIsSWUpe2lmKHVlLmJ1aWxkSW5mb0VtaXRQZW5kaW5nKXt2YXIgX2U9ZS5EZWJ1Zy5jaGVja0RlZmluZWQodWUucHJvZ3JhbSkuZW1pdEJ1aWxkSW5mbyhycnx8ZS5tYXliZUJpbmQobCxsLndyaXRlRmlsZSksSWUpO3JldHVybiB1ZS5idWlsZEluZm9FbWl0UGVuZGluZz0hMSxfZX1yZXR1cm4gZS5lbWl0U2tpcHBlZFdpdGhOb0RpYWdub3N0aWNzfWZ1bmN0aW9uIGdlKHJyLEllLF9lLHdlKXt2YXIgZGU9cCh1ZSxJZSxuZSxsKSx5ZT0xLEFlPSExO2lmKCFkZSlpZihlLm91dEZpbGUodWUuY29tcGlsZXJPcHRpb25zKSl7dmFyIENyPWUuRGVidWcuY2hlY2tEZWZpbmVkKHVlLnByb2dyYW0pO2lmKHVlLnByb2dyYW1FbWl0Q29tcGxldGUpcmV0dXJuO2RlPUNyfWVsc2V7dmFyIGVyPUcodWUpO2lmKCFlcil7aWYoIXVlLmJ1aWxkSW5mb0VtaXRQZW5kaW5nKXJldHVybjt2YXIgaXI9ZS5EZWJ1Zy5jaGVja0RlZmluZWQodWUucHJvZ3JhbSk7cmV0dXJuIHZlKHVlLGlyLmVtaXRCdWlsZEluZm8ocnJ8fGUubWF5YmVCaW5kKGwsbC53cml0ZUZpbGUpLEllKSxpciwxLCExLCEwKX1kZT1lci5hZmZlY3RlZEZpbGUseWU9ZXIuZW1pdEtpbmQsQWU9ITB9cmV0dXJuIHZlKHVlLGUuRGVidWcuY2hlY2tEZWZpbmVkKHVlLnByb2dyYW0pLmVtaXQoZGU9PT11ZS5wcm9ncmFtP3ZvaWQgMDpkZSxkZSE9PXVlLnByb2dyYW0mJmUuZ2V0RW1pdERlY2xhcmF0aW9ucyh1ZS5jb21waWxlck9wdGlvbnMpJiYhd2U/UmUocnIpOnJyfHxlLm1heWJlQmluZChsLGwud3JpdGVGaWxlKSxJZSxfZXx8eWU9PT0wLHdlKSxkZSx5ZSxBZSl9ZnVuY3Rpb24gUmUocnIpe3JldHVybiBmdW5jdGlvbihJZSxfZSx3ZSxkZSx5ZSxBZSl7dmFyIGVyO2lmKGUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKEllKSl7ZS5EZWJ1Zy5hc3NlcnQoKHllPT1udWxsP3ZvaWQgMDp5ZS5sZW5ndGgpPT09MSk7dmFyIGlyPXllWzBdLENyPXVlLmZpbGVJbmZvcy5nZXQoaXIucmVzb2x2ZWRQYXRoKSxZZT0oKGVyPXVlLmN1cnJlbnRBZmZlY3RlZEZpbGVzU2lnbmF0dXJlcyk9PT1udWxsfHxlcj09PXZvaWQgMD92b2lkIDA6ZXIuZ2V0KGlyLnJlc29sdmVkUGF0aCkpfHxDci5zaWduYXR1cmU7aWYoWWU9PT1pci52ZXJzaW9uKXt2YXIgQnI9KG5lfHxlLmdlbmVyYXRlRGpiMkhhc2gpKChBZT09bnVsbD92b2lkIDA6QWUuc291cmNlTWFwVXJsUG9zKSE9PXZvaWQgMD9fZS5zdWJzdHJpbmcoMCxBZS5zb3VyY2VNYXBVcmxQb3MpOl9lKTtCciE9PWlyLnZlcnNpb24mJihsLnN0b3JlRmlsZXNDaGFuZ2luZ1NpZ25hdHVyZUR1cmluZ0VtaXQmJih1ZS5maWxlc0NoYW5naW5nU2lnbmF0dXJlfHwodWUuZmlsZXNDaGFuZ2luZ1NpZ25hdHVyZT1uZXcgZS5TZXQpKS5hZGQoaXIucmVzb2x2ZWRQYXRoKSx1ZS5leHBvcnRlZE1vZHVsZXNNYXAmJmUuQnVpbGRlclN0YXRlLnVwZGF0ZUV4cG9ydGVkTW9kdWxlcyhpcixpci5leHBvcnRlZE1vZHVsZXNGcm9tRGVjbGFyYXRpb25FbWl0LHVlLmN1cnJlbnRBZmZlY3RlZEZpbGVzRXhwb3J0ZWRNb2R1bGVzTWFwfHwodWUuY3VycmVudEFmZmVjdGVkRmlsZXNFeHBvcnRlZE1vZHVsZXNNYXA9ZS5CdWlsZGVyU3RhdGUuY3JlYXRlTWFueVRvTWFueVBhdGhNYXAoKSkpLHVlLmFmZmVjdGVkRmlsZXMmJnVlLmFmZmVjdGVkRmlsZXNJbmRleDx1ZS5hZmZlY3RlZEZpbGVzLmxlbmd0aD91ZS5jdXJyZW50QWZmZWN0ZWRGaWxlc1NpZ25hdHVyZXMuc2V0KGlyLnJlc29sdmVkUGF0aCxCcik6KENyLnNpZ25hdHVyZT1Ccix1ZS5leHBvcnRlZE1vZHVsZXNNYXAmJmUuQnVpbGRlclN0YXRlLnVwZGF0ZUV4cG9ydGVkRmlsZXNNYXBGcm9tQ2FjaGUodWUsdWUuY3VycmVudEFmZmVjdGVkRmlsZXNFeHBvcnRlZE1vZHVsZXNNYXApKSl9fXJyP3JyKEllLF9lLHdlLGRlLHllLEFlKTpsLndyaXRlRmlsZT9sLndyaXRlRmlsZShJZSxfZSx3ZSxkZSx5ZSxBZSk6dWUucHJvZ3JhbS53cml0ZUZpbGUoSWUsX2Usd2UsZGUseWUsQWUpfX1mdW5jdGlvbiB6ZShycixJZSxfZSx3ZSxkZSl7dmFyIHllO2o9PT15LkVtaXRBbmRTZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW0mJk4odWUscnIpO3ZhciBBZT1lLmhhbmRsZU5vRW1pdE9wdGlvbnMoWixycixJZSxfZSk7aWYoQWUpcmV0dXJuIEFlO2lmKCFycilpZihqPT09eS5FbWl0QW5kU2VtYW50aWNEaWFnbm9zdGljc0J1aWxkZXJQcm9ncmFtKXtmb3IodmFyIGVyPVtdLGlyPSExLENyPXZvaWQgMCxZZT1bXSxCcj12b2lkIDA7QnI9Z2UoSWUsX2Usd2UsZGUpOylpcj1pcnx8QnIucmVzdWx0LmVtaXRTa2lwcGVkLENyPWUuYWRkUmFuZ2UoQ3IsQnIucmVzdWx0LmRpYWdub3N0aWNzKSxZZT1lLmFkZFJhbmdlKFllLEJyLnJlc3VsdC5lbWl0dGVkRmlsZXMpLGVyPWUuYWRkUmFuZ2UoZXIsQnIucmVzdWx0LnNvdXJjZU1hcHMpO3JldHVybntlbWl0U2tpcHBlZDppcixkaWFnbm9zdGljczpDcnx8ZS5lbXB0eUFycmF5LGVtaXR0ZWRGaWxlczpZZSxzb3VyY2VNYXBzOmVyfX1lbHNlISgoeWU9dWUuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0S2luZCk9PT1udWxsfHx5ZT09PXZvaWQgMCkmJnllLnNpemUmJihlLkRlYnVnLmFzc2VydChqPT09eS5TZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW0pLCghd2V8fGUuZXZlcnkodWUuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0LGZ1bmN0aW9uKEVyLE5lKXtyZXR1cm4gTmU8dWUuYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0SW5kZXh8fHVlLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQuZ2V0KEVyKT09PTB9KSkmJm0odWUpKTtyZXR1cm4gZS5EZWJ1Zy5jaGVja0RlZmluZWQodWUucHJvZ3JhbSkuZW1pdChyciwhZS5vdXRGaWxlKHVlLmNvbXBpbGVyT3B0aW9ucykmJmUuZ2V0RW1pdERlY2xhcmF0aW9ucyh1ZS5jb21waWxlck9wdGlvbnMpJiYhZGU/UmUoSWUpOkllfHxlLm1heWJlQmluZChsLGwud3JpdGVGaWxlKSxfZSx3ZSxkZSl9ZnVuY3Rpb24gRWUocnIsSWUpe2Zvcig7Oyl7dmFyIF9lPXAodWUscnIsbmUsbCk7aWYoX2Upe2lmKF9lPT09dWUucHJvZ3JhbSlyZXR1cm4gTyh1ZSx1ZS5wcm9ncmFtLmdldFNlbWFudGljRGlhZ25vc3RpY3Modm9pZCAwLHJyKSxfZSl9ZWxzZSByZXR1cm47aWYoKGo9PT15LkVtaXRBbmRTZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW18fHVlLmNvbXBpbGVyT3B0aW9ucy5ub0VtaXR8fHVlLmNvbXBpbGVyT3B0aW9ucy5ub0VtaXRPbkVycm9yKSYmUCh1ZSxfZS5yZXNvbHZlZFBhdGgsMSksSWUmJkllKF9lKSl7cSh1ZSxfZSk7Y29udGludWV9cmV0dXJuIE8odWUsZWUodWUsX2UscnIpLF9lKX19ZnVuY3Rpb24gSGUocnIsSWUpe04odWUscnIpO3ZhciBfZT1lLkRlYnVnLmNoZWNrRGVmaW5lZCh1ZS5wcm9ncmFtKS5nZXRDb21waWxlck9wdGlvbnMoKTtpZihlLm91dEZpbGUoX2UpKXJldHVybiBlLkRlYnVnLmFzc2VydCghdWUuc2VtYW50aWNEaWFnbm9zdGljc1BlckZpbGUpLGUuRGVidWcuY2hlY2tEZWZpbmVkKHVlLnByb2dyYW0pLmdldFNlbWFudGljRGlhZ25vc3RpY3MocnIsSWUpO2lmKHJyKXJldHVybiBlZSh1ZSxycixJZSk7Zm9yKDtFZShJZSk7KTtmb3IodmFyIHdlLGRlPTAseWU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQodWUucHJvZ3JhbSkuZ2V0U291cmNlRmlsZXMoKTtkZTx5ZS5sZW5ndGg7ZGUrKyl7dmFyIEFlPXllW2RlXTt3ZT1lLmFkZFJhbmdlKHdlLGVlKHVlLEFlLEllKSl9cmV0dXJuIHdlfHxlLmVtcHR5QXJyYXl9fWUuY3JlYXRlQnVpbGRlclByb2dyYW09TDtmdW5jdGlvbiBQKGosSCxJKXtqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdHx8KGouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0PVtdKSxqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmR8fChqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQ9bmV3IGUuTWFwKTt2YXIgbD1qLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQuZ2V0KEgpO2ouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0LnB1c2goSCksai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXRLaW5kLnNldChILGx8fEkpLGouYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0SW5kZXg9PT12b2lkIDAmJihqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEluZGV4PTApfWZ1bmN0aW9uIGsoail7cmV0dXJuIGUuaXNTdHJpbmcoaik/e3ZlcnNpb246aixzaWduYXR1cmU6aixhZmZlY3RzR2xvYmFsU2NvcGU6dm9pZCAwLGltcGxpZWRGb3JtYXQ6dm9pZCAwfTplLmlzU3RyaW5nKGouc2lnbmF0dXJlKT9qOnt2ZXJzaW9uOmoudmVyc2lvbixzaWduYXR1cmU6ai5zaWduYXR1cmU9PT0hMT92b2lkIDA6ai52ZXJzaW9uLGFmZmVjdHNHbG9iYWxTY29wZTpqLmFmZmVjdHNHbG9iYWxTY29wZSxpbXBsaWVkRm9ybWF0OmouaW1wbGllZEZvcm1hdH19ZS50b0J1aWxkZXJTdGF0ZUZpbGVJbmZvPWs7ZnVuY3Rpb24gWShqLEgsSSl7dmFyIGwsZD1lLmdldERpcmVjdG9yeVBhdGgoZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKEgsSS5nZXRDdXJyZW50RGlyZWN0b3J5KCkpKSxEPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoSS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCkpLGZlPWouZmlsZU5hbWVzLm1hcChXZSksZz0obD1qLmZpbGVJZHNMaXN0KT09PW51bGx8fGw9PT12b2lkIDA/dm9pZCAwOmwubWFwKGZ1bmN0aW9uKFJlKXtyZXR1cm4gbmV3IGUuU2V0KFJlLm1hcChaKSl9KSxuZT1uZXcgZS5NYXA7ai5maWxlSW5mb3MuZm9yRWFjaChmdW5jdGlvbihSZSx6ZSl7cmV0dXJuIG5lLnNldChaKHplKzEpLGsoUmUpKX0pO3ZhciB1ZT17ZmlsZUluZm9zOm5lLGNvbXBpbGVyT3B0aW9uczpqLm9wdGlvbnM/ZS5jb252ZXJ0VG9PcHRpb25zV2l0aEFic29sdXRlUGF0aHMoai5vcHRpb25zLEZlKTp7fSxyZWZlcmVuY2VkTWFwOmdlKGoucmVmZXJlbmNlZE1hcCksZXhwb3J0ZWRNb2R1bGVzTWFwOmdlKGouZXhwb3J0ZWRNb2R1bGVzTWFwKSxzZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZTpqLnNlbWFudGljRGlhZ25vc3RpY3NQZXJGaWxlJiZlLmFycmF5VG9NYXAoai5zZW1hbnRpY0RpYWdub3N0aWNzUGVyRmlsZSxmdW5jdGlvbihSZSl7cmV0dXJuIFooZS5pc051bWJlcihSZSk/UmU6UmVbMF0pfSxmdW5jdGlvbihSZSl7cmV0dXJuIGUuaXNOdW1iZXIoUmUpP2UuZW1wdHlBcnJheTpSZVsxXX0pLGhhc1JldXNhYmxlRGlhZ25vc3RpYzohMCxhZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXQ6ZS5tYXAoai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXQsZnVuY3Rpb24oUmUpe3JldHVybiBaKFJlWzBdKX0pLGFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdEtpbmQ6ai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXQmJmUuYXJyYXlUb01hcChqLmFmZmVjdGVkRmlsZXNQZW5kaW5nRW1pdCxmdW5jdGlvbihSZSl7cmV0dXJuIFooUmVbMF0pfSxmdW5jdGlvbihSZSl7cmV0dXJuIFJlWzFdfSksYWZmZWN0ZWRGaWxlc1BlbmRpbmdFbWl0SW5kZXg6ai5hZmZlY3RlZEZpbGVzUGVuZGluZ0VtaXQmJjB9O3JldHVybntnZXRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB1ZX0sYmFja3VwU3RhdGU6ZS5ub29wLHJlc3RvcmVTdGF0ZTplLm5vb3AsZ2V0UHJvZ3JhbTplLm5vdEltcGxlbWVudGVkLGdldFByb2dyYW1PclVuZGVmaW5lZDplLnJldHVyblVuZGVmaW5lZCxyZWxlYXNlUHJvZ3JhbTplLm5vb3AsZ2V0Q29tcGlsZXJPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHVlLmNvbXBpbGVyT3B0aW9uc30sZ2V0U291cmNlRmlsZTplLm5vdEltcGxlbWVudGVkLGdldFNvdXJjZUZpbGVzOmUubm90SW1wbGVtZW50ZWQsZ2V0T3B0aW9uc0RpYWdub3N0aWNzOmUubm90SW1wbGVtZW50ZWQsZ2V0R2xvYmFsRGlhZ25vc3RpY3M6ZS5ub3RJbXBsZW1lbnRlZCxnZXRDb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzOmUubm90SW1wbGVtZW50ZWQsZ2V0U3ludGFjdGljRGlhZ25vc3RpY3M6ZS5ub3RJbXBsZW1lbnRlZCxnZXREZWNsYXJhdGlvbkRpYWdub3N0aWNzOmUubm90SW1wbGVtZW50ZWQsZ2V0U2VtYW50aWNEaWFnbm9zdGljczplLm5vdEltcGxlbWVudGVkLGVtaXQ6ZS5ub3RJbXBsZW1lbnRlZCxnZXRBbGxEZXBlbmRlbmNpZXM6ZS5ub3RJbXBsZW1lbnRlZCxnZXRDdXJyZW50RGlyZWN0b3J5OmUubm90SW1wbGVtZW50ZWQsZW1pdE5leHRBZmZlY3RlZEZpbGU6ZS5ub3RJbXBsZW1lbnRlZCxnZXRTZW1hbnRpY0RpYWdub3N0aWNzT2ZOZXh0QWZmZWN0ZWRGaWxlOmUubm90SW1wbGVtZW50ZWQsZW1pdEJ1aWxkSW5mbzplLm5vdEltcGxlbWVudGVkLGNsb3NlOmUubm9vcH07ZnVuY3Rpb24gV2UoUmUpe3JldHVybiBlLnRvUGF0aChSZSxkLEQpfWZ1bmN0aW9uIEZlKFJlKXtyZXR1cm4gZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKFJlLGQpfWZ1bmN0aW9uIFooUmUpe3JldHVybiBmZVtSZS0xXX1mdW5jdGlvbiBCZShSZSl7cmV0dXJuIGdbUmUtMV19ZnVuY3Rpb24gZ2UoUmUpe2lmKCEhUmUpe3ZhciB6ZT1lLkJ1aWxkZXJTdGF0ZS5jcmVhdGVNYW55VG9NYW55UGF0aE1hcCgpO3JldHVybiBSZS5mb3JFYWNoKGZ1bmN0aW9uKEVlKXt2YXIgSGU9RWVbMF0scnI9RWVbMV07cmV0dXJuIHplLnNldChaKEhlKSxCZShycikpfSksemV9fX1lLmNyZWF0ZUJ1aWxkUHJvZ3JhbVVzaW5nUHJvZ3JhbUJ1aWxkSW5mbz1ZO2Z1bmN0aW9uIFUoaixIKXtyZXR1cm57Z2V0U3RhdGU6ZS5ub3RJbXBsZW1lbnRlZCxiYWNrdXBTdGF0ZTplLm5vb3AscmVzdG9yZVN0YXRlOmUubm9vcCxnZXRQcm9ncmFtOkksZ2V0UHJvZ3JhbU9yVW5kZWZpbmVkOmZ1bmN0aW9uKCl7cmV0dXJuIGooKS5wcm9ncmFtfSxyZWxlYXNlUHJvZ3JhbTpmdW5jdGlvbigpe3JldHVybiBqKCkucHJvZ3JhbT12b2lkIDB9LGdldENvbXBpbGVyT3B0aW9uczpmdW5jdGlvbigpe3JldHVybiBqKCkuY29tcGlsZXJPcHRpb25zfSxnZXRTb3VyY2VGaWxlOmZ1bmN0aW9uKGwpe3JldHVybiBJKCkuZ2V0U291cmNlRmlsZShsKX0sZ2V0U291cmNlRmlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gSSgpLmdldFNvdXJjZUZpbGVzKCl9LGdldE9wdGlvbnNEaWFnbm9zdGljczpmdW5jdGlvbihsKXtyZXR1cm4gSSgpLmdldE9wdGlvbnNEaWFnbm9zdGljcyhsKX0sZ2V0R2xvYmFsRGlhZ25vc3RpY3M6ZnVuY3Rpb24obCl7cmV0dXJuIEkoKS5nZXRHbG9iYWxEaWFnbm9zdGljcyhsKX0sZ2V0Q29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljczpmdW5jdGlvbigpe3JldHVybiBIfSxnZXRTeW50YWN0aWNEaWFnbm9zdGljczpmdW5jdGlvbihsLGQpe3JldHVybiBJKCkuZ2V0U3ludGFjdGljRGlhZ25vc3RpY3MobCxkKX0sZ2V0RGVjbGFyYXRpb25EaWFnbm9zdGljczpmdW5jdGlvbihsLGQpe3JldHVybiBJKCkuZ2V0RGVjbGFyYXRpb25EaWFnbm9zdGljcyhsLGQpfSxnZXRTZW1hbnRpY0RpYWdub3N0aWNzOmZ1bmN0aW9uKGwsZCl7cmV0dXJuIEkoKS5nZXRTZW1hbnRpY0RpYWdub3N0aWNzKGwsZCl9LGVtaXQ6ZnVuY3Rpb24obCxkLEQsZmUsZyl7cmV0dXJuIEkoKS5lbWl0KGwsZCxELGZlLGcpfSxlbWl0QnVpbGRJbmZvOmZ1bmN0aW9uKGwsZCl7cmV0dXJuIEkoKS5lbWl0QnVpbGRJbmZvKGwsZCl9LGdldEFsbERlcGVuZGVuY2llczplLm5vdEltcGxlbWVudGVkLGdldEN1cnJlbnREaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gSSgpLmdldEN1cnJlbnREaXJlY3RvcnkoKX0sY2xvc2U6ZS5ub29wfTtmdW5jdGlvbiBJKCl7cmV0dXJuIGUuRGVidWcuY2hlY2tEZWZpbmVkKGooKS5wcm9ncmFtKX19ZS5jcmVhdGVSZWRpcmVjdGVkQnVpbGRlclByb2dyYW09VX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoQixFLFEsbGUsTixwKXtyZXR1cm4gZS5jcmVhdGVCdWlsZGVyUHJvZ3JhbShlLkJ1aWxkZXJQcm9ncmFtS2luZC5TZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW0sZS5nZXRCdWlsZGVyQ3JlYXRpb25QYXJhbWV0ZXJzKEIsRSxRLGxlLE4scCkpfWUuY3JlYXRlU2VtYW50aWNEaWFnbm9zdGljc0J1aWxkZXJQcm9ncmFtPWE7ZnVuY3Rpb24gQyhCLEUsUSxsZSxOLHApe3JldHVybiBlLmNyZWF0ZUJ1aWxkZXJQcm9ncmFtKGUuQnVpbGRlclByb2dyYW1LaW5kLkVtaXRBbmRTZW1hbnRpY0RpYWdub3N0aWNzQnVpbGRlclByb2dyYW0sZS5nZXRCdWlsZGVyQ3JlYXRpb25QYXJhbWV0ZXJzKEIsRSxRLGxlLE4scCkpfWUuY3JlYXRlRW1pdEFuZFNlbWFudGljRGlhZ25vc3RpY3NCdWlsZGVyUHJvZ3JhbT1DO2Z1bmN0aW9uIHcoQixFLFEsbGUsTixwKXt2YXIgbT1lLmdldEJ1aWxkZXJDcmVhdGlvblBhcmFtZXRlcnMoQixFLFEsbGUsTixwKSxHPW0ubmV3UHJvZ3JhbSxvZT1tLmNvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3M7cmV0dXJuIGUuY3JlYXRlUmVkaXJlY3RlZEJ1aWxkZXJQcm9ncmFtKGZ1bmN0aW9uKCl7cmV0dXJue3Byb2dyYW06Ryxjb21waWxlck9wdGlvbnM6Ry5nZXRDb21waWxlck9wdGlvbnMoKX19LG9lKX1lLmNyZWF0ZUFic3RyYWN0QnVpbGRlcj13fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShFKXtyZXR1cm4gZS5lbmRzV2l0aChFLFwiL25vZGVfbW9kdWxlcy8uc3RhZ2luZ1wiKT9lLnJlbW92ZVN1ZmZpeChFLFwiLy5zdGFnaW5nXCIpOmUuc29tZShlLmlnbm9yZWRQYXRocyxmdW5jdGlvbihRKXtyZXR1cm4gZS5zdHJpbmdDb250YWlucyhFLFEpfSk/dm9pZCAwOkV9ZS5yZW1vdmVJZ25vcmVkUGF0aD1hO2Z1bmN0aW9uIEMoRSl7dmFyIFE9ZS5nZXRSb290TGVuZ3RoKEUpO2lmKEUubGVuZ3RoPT09USlyZXR1cm4hMTt2YXIgbGU9RS5pbmRleE9mKGUuZGlyZWN0b3J5U2VwYXJhdG9yLFEpO2lmKGxlPT09LTEpcmV0dXJuITE7dmFyIE49RS5zdWJzdHJpbmcoUSxsZSsxKSxwPVE+MXx8RS5jaGFyQ29kZUF0KDApIT09NDc7aWYocCYmRS5zZWFyY2goL1thLXpBLVpdOi8pIT09MCYmTi5zZWFyY2goL1thLXpBLXpdXFwkXFwvLyk9PT0wKXtpZihsZT1FLmluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IsbGUrMSksbGU9PT0tMSlyZXR1cm4hMTtOPUUuc3Vic3RyaW5nKFErTi5sZW5ndGgsbGUrMSl9aWYocCYmTi5zZWFyY2goL3VzZXJzXFwvL2kpIT09MClyZXR1cm4hMDtmb3IodmFyIG09bGUrMSxHPTI7Rz4wO0ctLSlpZihtPUUuaW5kZXhPZihlLmRpcmVjdG9yeVNlcGFyYXRvcixtKSsxLG09PT0wKXJldHVybiExO3JldHVybiEwfWUuY2FuV2F0Y2hEaXJlY3Rvcnk9QztmdW5jdGlvbiB3KEUsUSxsZSl7dmFyIE4scCxtLEc9ZS5jcmVhdGVNdWx0aU1hcCgpLG9lPVtdLGY9ZS5jcmVhdGVNdWx0aU1hcCgpLFQ9ITEsSyxiLHNlLEo9ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIEUuZ2V0Q3VycmVudERpcmVjdG9yeSgpfSksaWU9RS5nZXRDYWNoZWREaXJlY3RvcnlTdHJ1Y3R1cmVIb3N0KCksUj1uZXcgZS5NYXAscT1lLmNyZWF0ZUNhY2hlV2l0aFJlZGlyZWN0cygpLE89ZS5jcmVhdGVDYWNoZVdpdGhSZWRpcmVjdHMoKSx2ZT1lLmNyZWF0ZU1vZHVsZVJlc29sdXRpb25DYWNoZShKKCksRS5nZXRDYW5vbmljYWxGaWxlTmFtZSx2b2lkIDAscSxPKSxlZT1uZXcgZS5NYXAsaGU9ZS5jcmVhdGVDYWNoZVdpdGhSZWRpcmVjdHMoKSxGPWUuY3JlYXRlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZVJlc29sdXRpb25DYWNoZShKKCksRS5nZXRDYW5vbmljYWxGaWxlTmFtZSx2b2lkIDAsdmUuZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGUoKSxoZSkseD1bXCIudHNcIixcIi50c3hcIixcIi5qc1wiLFwiLmpzeFwiLFwiLmpzb25cIl0sWD1uZXcgZS5NYXAsJD1uZXcgZS5NYXAsQT1RJiZlLnJlbW92ZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChRLEooKSkpLHk9QSYmRS50b1BhdGgoQSksVj15IT09dm9pZCAwP3kuc3BsaXQoZS5kaXJlY3RvcnlTZXBhcmF0b3IpLmxlbmd0aDowLEw9bmV3IGUuTWFwO3JldHVybntnZXRNb2R1bGVSZXNvbHV0aW9uQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gdmV9LHN0YXJ0UmVjb3JkaW5nRmlsZXNXaXRoQ2hhbmdlZFJlc29sdXRpb25zOmosZmluaXNoUmVjb3JkaW5nRmlsZXNXaXRoQ2hhbmdlZFJlc29sdXRpb25zOkgsc3RhcnRDYWNoaW5nUGVyRGlyZWN0b3J5UmVzb2x1dGlvbjpkLGZpbmlzaENhY2hpbmdQZXJEaXJlY3RvcnlSZXNvbHV0aW9uOkQscmVzb2x2ZU1vZHVsZU5hbWVzOldlLGdldFJlc29sdmVkTW9kdWxlV2l0aEZhaWxlZExvb2t1cExvY2F0aW9uc0Zyb21DYWNoZTpGZSxyZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXM6dWUscmVtb3ZlUmVzb2x1dGlvbnNGcm9tUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0czp5ZSxyZW1vdmVSZXNvbHV0aW9uc09mRmlsZTpBZSxoYXNDaGFuZ2VkQXV0b21hdGljVHlwZURpcmVjdGl2ZU5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LGludmFsaWRhdGVSZXNvbHV0aW9uT2ZGaWxlOmlyLGludmFsaWRhdGVSZXNvbHV0aW9uc09mRmFpbGVkTG9va3VwTG9jYXRpb25zOkJyLHNldEZpbGVzV2l0aEludmFsaWRhdGVkTm9uUmVsYXRpdmVVbnJlc29sdmVkSW1wb3J0czpDcixjcmVhdGVIYXNJbnZhbGlkYXRlZFJlc29sdXRpb246bCxpc0ZpbGVXaXRoSW52YWxpZGF0ZWROb25SZWxhdGl2ZVVucmVzb2x2ZWRJbXBvcnRzOkksdXBkYXRlVHlwZVJvb3RzV2F0Y2g6YmUsY2xvc2VUeXBlUm9vdHNXYXRjaDpOZSxjbGVhcjpVfTtmdW5jdGlvbiBQKHVyKXtyZXR1cm4gdXIucmVzb2x2ZWRNb2R1bGV9ZnVuY3Rpb24gayh1cil7cmV0dXJuIHVyLnJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZX1mdW5jdGlvbiBZKHVyLHlyKXtyZXR1cm4gdXI9PT12b2lkIDB8fHlyLmxlbmd0aDw9dXIubGVuZ3RoPyExOmUuc3RhcnRzV2l0aCh5cix1cikmJnlyW3VyLmxlbmd0aF09PT1lLmRpcmVjdG9yeVNlcGFyYXRvcn1mdW5jdGlvbiBVKCl7ZS5jbGVhck1hcCgkLGUuY2xvc2VGaWxlV2F0Y2hlck9mKSxYLmNsZWFyKCksRy5jbGVhcigpLE5lKCksUi5jbGVhcigpLGVlLmNsZWFyKCksZi5jbGVhcigpLG9lLmxlbmd0aD0wLEs9dm9pZCAwLGI9dm9pZCAwLHNlPXZvaWQgMCxkKCksVD0hMX1mdW5jdGlvbiBqKCl7Tj1bXX1mdW5jdGlvbiBIKCl7dmFyIHVyPU47cmV0dXJuIE49dm9pZCAwLHVyfWZ1bmN0aW9uIEkodXIpe2lmKCFtKXJldHVybiExO3ZhciB5cj1tLmdldCh1cik7cmV0dXJuISF5ciYmISF5ci5sZW5ndGh9ZnVuY3Rpb24gbCh1cil7aWYoQnIoKSx1cilyZXR1cm4gcD12b2lkIDAsZS5yZXR1cm5UcnVlO3ZhciB5cj1wO3JldHVybiBwPXZvaWQgMCxmdW5jdGlvbihJcil7cmV0dXJuISF5ciYmeXIuaGFzKElyKXx8SShJcil9fWZ1bmN0aW9uIGQoKXt2ZS5jbGVhcigpLEYuY2xlYXIoKSxHLmZvckVhY2goSGUpLEcuY2xlYXIoKX1mdW5jdGlvbiBEKCl7bT12b2lkIDAsZCgpLCQuZm9yRWFjaChmdW5jdGlvbih1cix5cil7dXIucmVmQ291bnQ9PT0wJiYoJC5kZWxldGUoeXIpLHVyLndhdGNoZXIuY2xvc2UoKSl9KSxUPSExfWZ1bmN0aW9uIGZlKHVyLHlyLElyLHdyLFVyLGlpLG1pKXt2YXIgcGUsb3I9ZS5yZXNvbHZlTW9kdWxlTmFtZSh1cix5cixJcix3cix2ZSxVcixtaSk7aWYoIUUuZ2V0R2xvYmFsQ2FjaGUpcmV0dXJuIG9yO3ZhciBxcj1FLmdldEdsb2JhbENhY2hlKCk7aWYocXIhPT12b2lkIDAmJiFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUodXIpJiYhKG9yLnJlc29sdmVkTW9kdWxlJiZlLmV4dGVuc2lvbklzVFMob3IucmVzb2x2ZWRNb2R1bGUuZXh0ZW5zaW9uKSkpe3ZhciBzaT1lLmxvYWRNb2R1bGVGcm9tR2xvYmFsQ2FjaGUoZS5EZWJ1Zy5jaGVja0RlZmluZWQoRS5nbG9iYWxDYWNoZVJlc29sdXRpb25Nb2R1bGVOYW1lKSh1ciksRS5wcm9qZWN0TmFtZSxJcix3cixxcix2ZSksRGk9c2kucmVzb2x2ZWRNb2R1bGUsd2k9c2kuZmFpbGVkTG9va3VwTG9jYXRpb25zO2lmKERpKXJldHVybiBvci5yZXNvbHZlZE1vZHVsZT1EaSwocGU9b3IuZmFpbGVkTG9va3VwTG9jYXRpb25zKS5wdXNoLmFwcGx5KHBlLHdpKSxvcn1yZXR1cm4gb3J9ZnVuY3Rpb24gZyh1cix5cixJcix3cixVcixpaSxtaSl7cmV0dXJuIGUucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmUodXIseXIsSXIsd3IsVXIsRixtaSl9ZnVuY3Rpb24gbmUodXIpe3ZhciB5cixJcix3cixVcj11ci5uYW1lcyxpaT11ci5jb250YWluaW5nRmlsZSxtaT11ci5yZWRpcmVjdGVkUmVmZXJlbmNlLHBlPXVyLmNhY2hlLG9yPXVyLnBlckRpcmVjdG9yeUNhY2hlV2l0aFJlZGlyZWN0cyxxcj11ci5sb2FkZXIsc2k9dXIuZ2V0UmVzb2x1dGlvbldpdGhSZXNvbHZlZEZpbGVOYW1lLERpPXVyLnNob3VsZFJldHJ5UmVzb2x1dGlvbix3aT11ci5yZXVzZWROYW1lcyxYaT11ci5sb2dDaGFuZ2VzLGV0PXVyLmNvbnRhaW5pbmdTb3VyY2VGaWxlLEdpPXVyLmNvbnRhaW5pbmdTb3VyY2VGaWxlTW9kZSxXdD1FLnRvUGF0aChpaSksWnQ9cGUuZ2V0KFd0KXx8cGUuc2V0KFd0LGUuY3JlYXRlTW9kZUF3YXJlQ2FjaGUoKSkuZ2V0KFd0KSxfcj1lLmdldERpcmVjdG9yeVBhdGgoV3QpLHBpPW9yLmdldE9yQ3JlYXRlTWFwT2ZDYWNoZVJlZGlyZWN0cyhtaSksYWU9cGkuZ2V0KF9yKTthZXx8KGFlPWUuY3JlYXRlTW9kZUF3YXJlQ2FjaGUoKSxwaS5zZXQoX3IsYWUpKTtmb3IodmFyIFhlPVtdLEpyPUUuZ2V0Q29tcGlsYXRpb25TZXR0aW5ncygpLHRpPVhpJiZJKFd0KSxaZT1FLmdldEN1cnJlbnRQcm9ncmFtKCksU3I9WmUmJlplLmdldFJlc29sdmVkUHJvamVjdFJlZmVyZW5jZVRvUmVkaXJlY3QoaWkpLHpyPVNyPyFtaXx8bWkuc291cmNlRmlsZS5wYXRoIT09U3Iuc291cmNlRmlsZS5wYXRoOiEhbWksV3I9ZS5jcmVhdGVNb2RlQXdhcmVDYWNoZSgpLEplPTAseGU9MCx2cj1Vcjt4ZTx2ci5sZW5ndGg7eGUrKyl7dmFyIG1yPXZyW3hlXSxBcj1lLmlzU3RyaW5nKG1yKT9tcjptci5maWxlTmFtZS50b0xvd2VyQ2FzZSgpLE9lPWUuaXNTdHJpbmcobXIpP2V0P2UuZ2V0TW9kZUZvclJlc29sdXRpb25BdEluZGV4KGV0LEplKTp2b2lkIDA6ZS5nZXRNb2RlRm9yRmlsZVJlZmVyZW5jZShtcixHaSk7SmUrKzt2YXIgbnI9WnQuZ2V0KEFyLE9lKTtpZighV3IuaGFzKEFyLE9lKSYmenJ8fCFucnx8bnIuaXNJbnZhbGlkYXRlZHx8dGkmJiFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUoQXIpJiZEaShucikpe3ZhciBNcj1ucixQZT1hZS5nZXQoQXIsT2UpO2lmKFBlKXtucj1QZTt2YXIgVWU9KCh5cj1FLmdldENvbXBpbGVySG9zdCk9PT1udWxsfHx5cj09PXZvaWQgMD92b2lkIDA6eXIuY2FsbChFKSl8fEU7aWYoZS5pc1RyYWNlRW5hYmxlZChKcixVZSkpe3ZhciBmcj1zaShucik7ZS50cmFjZShVZSxxcj09PWZlP2ZyIT1udWxsJiZmci5yZXNvbHZlZEZpbGVOYW1lP2ZyLnBhY2thZ2V0SWQ/ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzNfd2l0aF9QYWNrYWdlX0lEXzQ6ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzM6ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfbm90X3Jlc29sdmVkOmZyIT1udWxsJiZmci5yZXNvbHZlZEZpbGVOYW1lP2ZyLnBhY2thZ2V0SWQ/ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzNfd2l0aF9QYWNrYWdlX0lEXzQ6ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzM6ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfZnJvbV8xX2ZvdW5kX2luX2NhY2hlX2Zyb21fbG9jYXRpb25fMl9pdF93YXNfbm90X3Jlc29sdmVkLEFyLGlpLGUuZ2V0RGlyZWN0b3J5UGF0aChpaSksZnI9PW51bGw/dm9pZCAwOmZyLnJlc29sdmVkRmlsZU5hbWUsKGZyPT1udWxsP3ZvaWQgMDpmci5wYWNrYWdldElkKSYmZS5wYWNrYWdlSWRUb1N0cmluZyhmci5wYWNrYWdldElkKSl9fWVsc2UgbnI9cXIoQXIsaWksSnIsKChJcj1FLmdldENvbXBpbGVySG9zdCk9PT1udWxsfHxJcj09PXZvaWQgMD92b2lkIDA6SXIuY2FsbChFKSl8fEUsbWksZXQsT2UpLGFlLnNldChBcixPZSxuciksRS5vbkRpc2NvdmVyZWRTeW1saW5rJiZCKG5yKSYmRS5vbkRpc2NvdmVyZWRTeW1saW5rKCk7WnQuc2V0KEFyLE9lLG5yKSx6ZShBcixucixXdCxzaSksTXImJkllKE1yLFd0LHNpKSxYaSYmTiYmIURlKE1yLG5yKSYmKE4ucHVzaChXdCksWGk9ITEpfWVsc2V7dmFyIFVlPSgod3I9RS5nZXRDb21waWxlckhvc3QpPT09bnVsbHx8d3I9PT12b2lkIDA/dm9pZCAwOndyLmNhbGwoRSkpfHxFO2lmKGUuaXNUcmFjZUVuYWJsZWQoSnIsVWUpJiYhV3IuaGFzKEFyLE9lKSl7dmFyIGZyPXNpKG5yKTtlLnRyYWNlKFVlLHFyPT09ZmU/ZnIhPW51bGwmJmZyLnJlc29sdmVkRmlsZU5hbWU/ZnIucGFja2FnZXRJZD9lLkRpYWdub3N0aWNzLlJldXNpbmdfcmVzb2x1dGlvbl9vZl9tb2R1bGVfMF9mcm9tXzFfb2Zfb2xkX3Byb2dyYW1faXRfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18yX3dpdGhfUGFja2FnZV9JRF8zOmUuRGlhZ25vc3RpY3MuUmV1c2luZ19yZXNvbHV0aW9uX29mX21vZHVsZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzI6ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfbW9kdWxlXzBfZnJvbV8xX29mX29sZF9wcm9ncmFtX2l0X3dhc19ub3RfcmVzb2x2ZWQ6ZnIhPW51bGwmJmZyLnJlc29sdmVkRmlsZU5hbWU/ZnIucGFja2FnZXRJZD9lLkRpYWdub3N0aWNzLlJldXNpbmdfcmVzb2x1dGlvbl9vZl90eXBlX3JlZmVyZW5jZV9kaXJlY3RpdmVfMF9mcm9tXzFfb2Zfb2xkX3Byb2dyYW1faXRfd2FzX3N1Y2Nlc3NmdWxseV9yZXNvbHZlZF90b18yX3dpdGhfUGFja2FnZV9JRF8zOmUuRGlhZ25vc3RpY3MuUmV1c2luZ19yZXNvbHV0aW9uX29mX3R5cGVfcmVmZXJlbmNlX2RpcmVjdGl2ZV8wX2Zyb21fMV9vZl9vbGRfcHJvZ3JhbV9pdF93YXNfc3VjY2Vzc2Z1bGx5X3Jlc29sdmVkX3RvXzI6ZS5EaWFnbm9zdGljcy5SZXVzaW5nX3Jlc29sdXRpb25fb2ZfdHlwZV9yZWZlcmVuY2VfZGlyZWN0aXZlXzBfZnJvbV8xX29mX29sZF9wcm9ncmFtX2l0X3dhc19ub3RfcmVzb2x2ZWQsQXIsaWksZnI9PW51bGw/dm9pZCAwOmZyLnJlc29sdmVkRmlsZU5hbWUsKGZyPT1udWxsP3ZvaWQgMDpmci5wYWNrYWdldElkKSYmZS5wYWNrYWdlSWRUb1N0cmluZyhmci5wYWNrYWdldElkKSl9fWUuRGVidWcuYXNzZXJ0KG5yIT09dm9pZCAwJiYhbnIuaXNJbnZhbGlkYXRlZCksV3Iuc2V0KEFyLE9lLCEwKSxYZS5wdXNoKHNpKG5yKSl9cmV0dXJuIFp0LmZvckVhY2goZnVuY3Rpb24oZ3IsVnIsVHIpeyFXci5oYXMoVnIsVHIpJiYhZS5jb250YWlucyh3aSxWcikmJihJZShncixXdCxzaSksWnQuZGVsZXRlKFZyLFRyKSl9KSxYZTtmdW5jdGlvbiBEZShncixWcil7aWYoZ3I9PT1WcilyZXR1cm4hMDtpZighZ3J8fCFWcilyZXR1cm4hMTt2YXIgVHI9c2koZ3IpLHZpPXNpKFZyKTtyZXR1cm4gVHI9PT12aT8hMDohVHJ8fCF2aT8hMTpUci5yZXNvbHZlZEZpbGVOYW1lPT09dmkucmVzb2x2ZWRGaWxlTmFtZX19ZnVuY3Rpb24gdWUodXIseXIsSXIsd3Ipe3JldHVybiBuZSh7bmFtZXM6dXIsY29udGFpbmluZ0ZpbGU6eXIscmVkaXJlY3RlZFJlZmVyZW5jZTpJcixjYWNoZTplZSxwZXJEaXJlY3RvcnlDYWNoZVdpdGhSZWRpcmVjdHM6aGUsbG9hZGVyOmcsZ2V0UmVzb2x1dGlvbldpdGhSZXNvbHZlZEZpbGVOYW1lOmssc2hvdWxkUmV0cnlSZXNvbHV0aW9uOmZ1bmN0aW9uKFVyKXtyZXR1cm4gVXIucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlPT09dm9pZCAwfSxjb250YWluaW5nU291cmNlRmlsZU1vZGU6d3J9KX1mdW5jdGlvbiBXZSh1cix5cixJcix3cixVcil7cmV0dXJuIG5lKHtuYW1lczp1cixjb250YWluaW5nRmlsZTp5cixyZWRpcmVjdGVkUmVmZXJlbmNlOndyLGNhY2hlOlIscGVyRGlyZWN0b3J5Q2FjaGVXaXRoUmVkaXJlY3RzOnEsbG9hZGVyOmZlLGdldFJlc29sdXRpb25XaXRoUmVzb2x2ZWRGaWxlTmFtZTpQLHNob3VsZFJldHJ5UmVzb2x1dGlvbjpmdW5jdGlvbihpaSl7cmV0dXJuIWlpLnJlc29sdmVkTW9kdWxlfHwhZS5yZXNvbHV0aW9uRXh0ZW5zaW9uSXNUU09ySnNvbihpaS5yZXNvbHZlZE1vZHVsZS5leHRlbnNpb24pfSxyZXVzZWROYW1lczpJcixsb2dDaGFuZ2VzOmxlLGNvbnRhaW5pbmdTb3VyY2VGaWxlOlVyfSl9ZnVuY3Rpb24gRmUodXIseXIsSXIpe3ZhciB3cj1SLmdldChFLnRvUGF0aCh5cikpO2lmKCEhd3IpcmV0dXJuIHdyLmdldCh1cixJcil9ZnVuY3Rpb24gWih1cil7cmV0dXJuIGUuZW5kc1dpdGgodXIsXCIvbm9kZV9tb2R1bGVzL0B0eXBlc1wiKX1mdW5jdGlvbiBCZSh1cix5cil7aWYoWSh5LHlyKSl7dXI9ZS5pc1Jvb3RlZERpc2tQYXRoKHVyKT9lLm5vcm1hbGl6ZVBhdGgodXIpOmUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aCh1cixKKCkpO3ZhciBJcj15ci5zcGxpdChlLmRpcmVjdG9yeVNlcGFyYXRvciksd3I9dXIuc3BsaXQoZS5kaXJlY3RvcnlTZXBhcmF0b3IpO3JldHVybiBlLkRlYnVnLmFzc2VydCh3ci5sZW5ndGg9PT1Jci5sZW5ndGgsXCJGYWlsZWRMb29rdXA6IFwiLmNvbmNhdCh1cixcIiBmYWlsZWRMb29rdXBMb2NhdGlvblBhdGg6IFwiKS5jb25jYXQoeXIpKSxJci5sZW5ndGg+VisxP3tkaXI6d3Iuc2xpY2UoMCxWKzEpLmpvaW4oZS5kaXJlY3RvcnlTZXBhcmF0b3IpLGRpclBhdGg6SXIuc2xpY2UoMCxWKzEpLmpvaW4oZS5kaXJlY3RvcnlTZXBhcmF0b3IpfTp7ZGlyOkEsZGlyUGF0aDp5LG5vblJlY3Vyc2l2ZTohMX19cmV0dXJuIGdlKGUuZ2V0RGlyZWN0b3J5UGF0aChlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgodXIsSigpKSksZS5nZXREaXJlY3RvcnlQYXRoKHlyKSl9ZnVuY3Rpb24gZ2UodXIseXIpe2Zvcig7ZS5wYXRoQ29udGFpbnNOb2RlTW9kdWxlcyh5cik7KXVyPWUuZ2V0RGlyZWN0b3J5UGF0aCh1cikseXI9ZS5nZXREaXJlY3RvcnlQYXRoKHlyKTtpZihlLmlzTm9kZU1vZHVsZXNEaXJlY3RvcnkoeXIpKXJldHVybiBDKGUuZ2V0RGlyZWN0b3J5UGF0aCh5cikpP3tkaXI6dXIsZGlyUGF0aDp5cn06dm9pZCAwO3ZhciBJcj0hMCx3cixVcjtpZih5IT09dm9pZCAwKWZvcig7IVkoeXIseSk7KXt2YXIgaWk9ZS5nZXREaXJlY3RvcnlQYXRoKHlyKTtpZihpaT09PXlyKWJyZWFrO0lyPSExLHdyPXlyLFVyPXVyLHlyPWlpLHVyPWUuZ2V0RGlyZWN0b3J5UGF0aCh1cil9cmV0dXJuIEMoeXIpP3tkaXI6VXJ8fHVyLGRpclBhdGg6d3J8fHlyLG5vblJlY3Vyc2l2ZTpJcn06dm9pZCAwfWZ1bmN0aW9uIFJlKHVyKXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXNPbmVPZih1cix4KX1mdW5jdGlvbiB6ZSh1cix5cixJcix3cil7aWYoeXIucmVmQ291bnQpeXIucmVmQ291bnQrKyxlLkRlYnVnLmFzc2VydElzRGVmaW5lZCh5ci5maWxlcyk7ZWxzZXt5ci5yZWZDb3VudD0xLGUuRGVidWcuYXNzZXJ0KGUubGVuZ3RoKHlyLmZpbGVzKT09PTApLGUuaXNFeHRlcm5hbE1vZHVsZU5hbWVSZWxhdGl2ZSh1cik/RWUoeXIpOkcuYWRkKHVyLHlyKTt2YXIgVXI9d3IoeXIpO1VyJiZVci5yZXNvbHZlZEZpbGVOYW1lJiZmLmFkZChFLnRvUGF0aChVci5yZXNvbHZlZEZpbGVOYW1lKSx5cil9KHlyLmZpbGVzfHwoeXIuZmlsZXM9W10pKS5wdXNoKElyKX1mdW5jdGlvbiBFZSh1cil7ZS5EZWJ1Zy5hc3NlcnQoISF1ci5yZWZDb3VudCk7dmFyIHlyPXVyLmZhaWxlZExvb2t1cExvY2F0aW9ucztpZighIXlyLmxlbmd0aCl7b2UucHVzaCh1cik7Zm9yKHZhciBJcj0hMSx3cj0wLFVyPXlyO3dyPFVyLmxlbmd0aDt3cisrKXt2YXIgaWk9VXJbd3JdLG1pPUUudG9QYXRoKGlpKSxwZT1CZShpaSxtaSk7aWYocGUpe3ZhciBvcj1wZS5kaXIscXI9cGUuZGlyUGF0aCxzaT1wZS5ub25SZWN1cnNpdmU7aWYoIVJlKG1pKSl7dmFyIERpPVguZ2V0KG1pKXx8MDtYLnNldChtaSxEaSsxKX1xcj09PXk/KGUuRGVidWcuYXNzZXJ0KCFzaSksSXI9ITApOnJyKG9yLHFyLHNpKX19SXImJnJyKEEseSwhMCl9fWZ1bmN0aW9uIEhlKHVyLHlyKXt2YXIgSXI9RS5nZXRDdXJyZW50UHJvZ3JhbSgpOyghSXJ8fCFJci5nZXRUeXBlQ2hlY2tlcigpLnRyeUZpbmRBbWJpZW50TW9kdWxlV2l0aG91dEF1Z21lbnRhdGlvbnMoeXIpKSYmdXIuZm9yRWFjaChFZSl9ZnVuY3Rpb24gcnIodXIseXIsSXIpe3ZhciB3cj0kLmdldCh5cik7d3I/KGUuRGVidWcuYXNzZXJ0KCEhSXI9PSEhd3Iubm9uUmVjdXJzaXZlKSx3ci5yZWZDb3VudCsrKTokLnNldCh5cix7d2F0Y2hlcjp3ZSh1cix5cixJcikscmVmQ291bnQ6MSxub25SZWN1cnNpdmU6SXJ9KX1mdW5jdGlvbiBJZSh1cix5cixJcil7aWYoZS51bm9yZGVyZWRSZW1vdmVJdGVtKGUuRGVidWcuY2hlY2tEZWZpbmVkKHVyLmZpbGVzKSx5ciksdXIucmVmQ291bnQtLSwhdXIucmVmQ291bnQpe3ZhciB3cj1Jcih1cik7aWYod3ImJndyLnJlc29sdmVkRmlsZU5hbWUmJmYucmVtb3ZlKEUudG9QYXRoKHdyLnJlc29sdmVkRmlsZU5hbWUpLHVyKSwhIWUudW5vcmRlcmVkUmVtb3ZlSXRlbShvZSx1cikpe2Zvcih2YXIgVXI9dXIuZmFpbGVkTG9va3VwTG9jYXRpb25zLGlpPSExLG1pPTAscGU9VXI7bWk8cGUubGVuZ3RoO21pKyspe3ZhciBvcj1wZVttaV0scXI9RS50b1BhdGgob3IpLHNpPUJlKG9yLHFyKTtpZihzaSl7dmFyIERpPXNpLmRpclBhdGgsd2k9WC5nZXQocXIpO3dpJiYod2k9PT0xP1guZGVsZXRlKHFyKTooZS5EZWJ1Zy5hc3NlcnQod2k+MSksWC5zZXQocXIsd2ktMSkpKSxEaT09PXk/aWk9ITA6X2UoRGkpfX1paSYmX2UoeSl9fX1mdW5jdGlvbiBfZSh1cil7dmFyIHlyPSQuZ2V0KHVyKTt5ci5yZWZDb3VudC0tfWZ1bmN0aW9uIHdlKHVyLHlyLElyKXtyZXR1cm4gRS53YXRjaERpcmVjdG9yeU9mRmFpbGVkTG9va3VwTG9jYXRpb24odXIsZnVuY3Rpb24od3Ipe3ZhciBVcj1FLnRvUGF0aCh3cik7aWUmJmllLmFkZE9yRGVsZXRlRmlsZU9yRGlyZWN0b3J5KHdyLFVyKSxZZShVcix5cj09PVVyKX0sSXI/MDoxKX1mdW5jdGlvbiBkZSh1cix5cixJcil7dmFyIHdyPXVyLmdldCh5cik7d3ImJih3ci5mb3JFYWNoKGZ1bmN0aW9uKFVyKXtyZXR1cm4gSWUoVXIseXIsSXIpfSksdXIuZGVsZXRlKHlyKSl9ZnVuY3Rpb24geWUodXIpe2lmKCEhZS5maWxlRXh0ZW5zaW9uSXModXIsXCIuanNvblwiKSl7dmFyIHlyPUUuZ2V0Q3VycmVudFByb2dyYW0oKTtpZighIXlyKXt2YXIgSXI9eXIuZ2V0UmVzb2x2ZWRQcm9qZWN0UmVmZXJlbmNlQnlQYXRoKHVyKTshSXJ8fElyLmNvbW1hbmRMaW5lLmZpbGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHdyKXtyZXR1cm4gQWUoRS50b1BhdGgod3IpKX0pfX19ZnVuY3Rpb24gQWUodXIpe2RlKFIsdXIsUCksZGUoZWUsdXIsayl9ZnVuY3Rpb24gZXIodXIseXIpe2lmKCF1cilyZXR1cm4hMTtmb3IodmFyIElyPSExLHdyPTAsVXI9dXI7d3I8VXIubGVuZ3RoO3dyKyspe3ZhciBpaT1Vclt3cl07aWYoIShpaS5pc0ludmFsaWRhdGVkfHwheXIoaWkpKSl7aWkuaXNJbnZhbGlkYXRlZD1Jcj0hMDtmb3IodmFyIG1pPTAscGU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoaWkuZmlsZXMpO21pPHBlLmxlbmd0aDttaSsrKXt2YXIgb3I9cGVbbWldOyhwfHwocD1uZXcgZS5TZXQpKS5hZGQob3IpLFQ9VHx8ZS5lbmRzV2l0aChvcixlLmluZmVycmVkVHlwZXNDb250YWluaW5nRmlsZSl9fX1yZXR1cm4gSXJ9ZnVuY3Rpb24gaXIodXIpe0FlKHVyKTt2YXIgeXI9VDtlcihmLmdldCh1ciksZS5yZXR1cm5UcnVlKSYmVCYmIXlyJiZFLm9uQ2hhbmdlZEF1dG9tYXRpY1R5cGVEaXJlY3RpdmVOYW1lcygpfWZ1bmN0aW9uIENyKHVyKXtlLkRlYnVnLmFzc2VydChtPT09dXJ8fG09PT12b2lkIDApLG09dXJ9ZnVuY3Rpb24gWWUodXIseXIpe2lmKHlyKShzZXx8KHNlPVtdKSkucHVzaCh1cik7ZWxzZXt2YXIgSXI9YSh1cik7aWYoIUlyfHwodXI9SXIsRS5maWxlSXNPcGVuKHVyKSkpcmV0dXJuITE7dmFyIHdyPWUuZ2V0RGlyZWN0b3J5UGF0aCh1cik7aWYoWih1cil8fGUuaXNOb2RlTW9kdWxlc0RpcmVjdG9yeSh1cil8fFood3IpfHxlLmlzTm9kZU1vZHVsZXNEaXJlY3Rvcnkod3IpKShLfHwoSz1bXSkpLnB1c2godXIpLChifHwoYj1uZXcgZS5TZXQpKS5hZGQodXIpO2Vsc2V7aWYoIVJlKHVyKSYmIVguaGFzKHVyKXx8ZS5pc0VtaXR0ZWRGaWxlT2ZQcm9ncmFtKEUuZ2V0Q3VycmVudFByb2dyYW0oKSx1cikpcmV0dXJuITE7KEt8fChLPVtdKSkucHVzaCh1cik7dmFyIFVyPWUucGFyc2VOb2RlTW9kdWxlRnJvbVBhdGgodXIpO1VyJiYoYnx8KGI9bmV3IGUuU2V0KSkuYWRkKFVyKX19RS5zY2hlZHVsZUludmFsaWRhdGVSZXNvbHV0aW9uc09mRmFpbGVkTG9va3VwTG9jYXRpb25zKCl9ZnVuY3Rpb24gQnIoKXtpZighSyYmIWImJiFzZSlyZXR1cm4hMTt2YXIgdXI9ZXIob2UsRXIpO3JldHVybiBLPXZvaWQgMCxiPXZvaWQgMCxzZT12b2lkIDAsdXJ9ZnVuY3Rpb24gRXIodXIpe3JldHVybiB1ci5mYWlsZWRMb29rdXBMb2NhdGlvbnMuc29tZShmdW5jdGlvbih5cil7dmFyIElyPUUudG9QYXRoKHlyKTtyZXR1cm4gZS5jb250YWlucyhLLElyKXx8ZS5maXJzdERlZmluZWRJdGVyYXRvcigoYj09bnVsbD92b2lkIDA6Yi5rZXlzKCkpfHxlLmVtcHR5SXRlcmF0b3IsZnVuY3Rpb24od3Ipe3JldHVybiBlLnN0YXJ0c1dpdGgoSXIsd3IpPyEwOnZvaWQgMH0pfHwoc2U9PW51bGw/dm9pZCAwOnNlLnNvbWUoZnVuY3Rpb24od3Ipe3JldHVybiBZKHdyLElyKX0pKX0pfWZ1bmN0aW9uIE5lKCl7ZS5jbGVhck1hcChMLGUuY2xvc2VGaWxlV2F0Y2hlcil9ZnVuY3Rpb24gbih1cix5cil7aWYoWSh5LHlyKSlyZXR1cm4geTt2YXIgSXI9Z2UodXIseXIpO3JldHVybiBJciYmJC5oYXMoSXIuZGlyUGF0aCk/SXIuZGlyUGF0aDp2b2lkIDB9ZnVuY3Rpb24gbHIodXIseXIpe3JldHVybiBFLndhdGNoVHlwZVJvb3RzRGlyZWN0b3J5KHlyLGZ1bmN0aW9uKElyKXt2YXIgd3I9RS50b1BhdGgoSXIpO2llJiZpZS5hZGRPckRlbGV0ZUZpbGVPckRpcmVjdG9yeShJcix3ciksVD0hMCxFLm9uQ2hhbmdlZEF1dG9tYXRpY1R5cGVEaXJlY3RpdmVOYW1lcygpO3ZhciBVcj1uKHlyLHVyKTtVciYmWWUod3IsVXI9PT13cil9LDEpfWZ1bmN0aW9uIGJlKCl7dmFyIHVyPUUuZ2V0Q29tcGlsYXRpb25TZXR0aW5ncygpO2lmKHVyLnR5cGVzKXtOZSgpO3JldHVybn12YXIgeXI9ZS5nZXRFZmZlY3RpdmVUeXBlUm9vdHModXIse2RpcmVjdG9yeUV4aXN0czpHZSxnZXRDdXJyZW50RGlyZWN0b3J5Okp9KTt5cj9lLm11dGF0ZU1hcChMLGUuYXJyYXlUb01hcCh5cixmdW5jdGlvbihJcil7cmV0dXJuIEUudG9QYXRoKElyKX0pLHtjcmVhdGVOZXdWYWx1ZTpscixvbkRlbGV0ZVZhbHVlOmUuY2xvc2VGaWxlV2F0Y2hlcn0pOk5lKCl9ZnVuY3Rpb24gR2UodXIpe3ZhciB5cj1lLmdldERpcmVjdG9yeVBhdGgoZS5nZXREaXJlY3RvcnlQYXRoKHVyKSksSXI9RS50b1BhdGgoeXIpO3JldHVybiBJcj09PXl8fEMoSXIpfX1lLmNyZWF0ZVJlc29sdXRpb25DYWNoZT13O2Z1bmN0aW9uIEIoRSl7dmFyIFEsbGU7cmV0dXJuISEoKChRPUUucmVzb2x2ZWRNb2R1bGUpPT09bnVsbHx8UT09PXZvaWQgMD92b2lkIDA6US5vcmlnaW5hbFBhdGgpfHwoKGxlPUUucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlKT09PW51bGx8fGxlPT09dm9pZCAwP3ZvaWQgMDpsZS5vcmlnaW5hbFBhdGgpKX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc7KGZ1bmN0aW9uKEkpe0lbSS5SZWxhdGl2ZT0wXT1cIlJlbGF0aXZlXCIsSVtJLk5vblJlbGF0aXZlPTFdPVwiTm9uUmVsYXRpdmVcIixJW0kuU2hvcnRlc3Q9Ml09XCJTaG9ydGVzdFwiLElbSS5FeHRlcm5hbE5vblJlbGF0aXZlPTNdPVwiRXh0ZXJuYWxOb25SZWxhdGl2ZVwifSkod3x8KHc9e30pKTt2YXIgQjsoZnVuY3Rpb24oSSl7SVtJLk1pbmltYWw9MF09XCJNaW5pbWFsXCIsSVtJLkluZGV4PTFdPVwiSW5kZXhcIixJW0kuSnNFeHRlbnNpb249Ml09XCJKc0V4dGVuc2lvblwifSkoQnx8KEI9e30pKTtmdW5jdGlvbiBFKEksbCxkLEQpe3ZhciBmZT1sLmltcG9ydE1vZHVsZVNwZWNpZmllclByZWZlcmVuY2UsZz1sLmltcG9ydE1vZHVsZVNwZWNpZmllckVuZGluZztyZXR1cm57cmVsYXRpdmVQcmVmZXJlbmNlOmZlPT09XCJyZWxhdGl2ZVwiPzA6ZmU9PT1cIm5vbi1yZWxhdGl2ZVwiPzE6ZmU9PT1cInByb2plY3QtcmVsYXRpdmVcIj8zOjIsZW5kaW5nOm5lKCl9O2Z1bmN0aW9uIG5lKCl7c3dpdGNoKGcpe2Nhc2VcIm1pbmltYWxcIjpyZXR1cm4gMDtjYXNlXCJpbmRleFwiOnJldHVybiAxO2Nhc2VcImpzXCI6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gcShEKXx8bGUoZCxELnBhdGgsSSk/MjplLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZChkKSE9PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzPzE6MH19fWZ1bmN0aW9uIFEoSSxsLGQsRCl7cmV0dXJue3JlbGF0aXZlUHJlZmVyZW5jZTplLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUobCk/MDoxLGVuZGluZzplLmhhc0pTRmlsZUV4dGVuc2lvbihsKXx8bGUoSSxkLEQpPzI6ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoSSkhPT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKc3x8ZS5lbmRzV2l0aChsLFwiaW5kZXhcIik/MTowfX1mdW5jdGlvbiBsZShJLGwsZCl7dmFyIEQ7cmV0dXJuIGUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKEkpIT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTYmJmUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKEkpIT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dD8hMTplLmdldEltcGxpZWROb2RlRm9ybWF0Rm9yRmlsZShsLChEPWQuZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGUpPT09bnVsbHx8RD09PXZvaWQgMD92b2lkIDA6RC5jYWxsKGQpLE4oZCksSSkhPT1lLk1vZHVsZUtpbmQuQ29tbW9uSlN9ZnVuY3Rpb24gTihJKXt2YXIgbDtyZXR1cm57ZmlsZUV4aXN0czpJLmZpbGVFeGlzdHMscmVhZEZpbGU6ZS5EZWJ1Zy5jaGVja0RlZmluZWQoSS5yZWFkRmlsZSksZGlyZWN0b3J5RXhpc3RzOkkuZGlyZWN0b3J5RXhpc3RzLGdldEN1cnJlbnREaXJlY3Rvcnk6SS5nZXRDdXJyZW50RGlyZWN0b3J5LHJlYWxwYXRoOkkucmVhbHBhdGgsdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczoobD1JLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMpPT09bnVsbHx8bD09PXZvaWQgMD92b2lkIDA6bC5jYWxsKEkpfX1mdW5jdGlvbiBwKEksbCxkLEQsZmUsZyxuZSl7bmU9PT12b2lkIDAmJihuZT17fSk7dmFyIHVlPW9lKEksbCxkLEQsZmUsUShJLGcsZCxmZSkse30sbmUpO2lmKHVlIT09ZylyZXR1cm4gdWV9Qy51cGRhdGVNb2R1bGVTcGVjaWZpZXI9cDtmdW5jdGlvbiBtKEksbCxkLEQsZmUsZyl7cmV0dXJuIGc9PT12b2lkIDAmJihnPXt9KSxvZShJLGwsZCxELGZlLEUoZmUse30sSSxsKSx7fSxnKX1DLmdldE1vZHVsZVNwZWNpZmllcj1tO2Z1bmN0aW9uIEcoSSxsLGQsRCxmZSxnKXtnPT09dm9pZCAwJiYoZz17fSk7dmFyIG5lPUoobC5wYXRoLEQpLHVlPWhlKGwucGF0aCxkLEQsZmUsZyk7cmV0dXJuIGUuZmlyc3REZWZpbmVkKHVlLGZ1bmN0aW9uKFdlKXtyZXR1cm4gVihXZSxuZSxsLEQsSSxmZSwhMCxnLm92ZXJyaWRlSW1wb3J0TW9kZSl9KX1DLmdldE5vZGVNb2R1bGVzUGFja2FnZU5hbWU9RztmdW5jdGlvbiBvZShJLGwsZCxELGZlLGcsbmUsdWUpe3VlPT09dm9pZCAwJiYodWU9e30pO3ZhciBXZT1KKGQsZmUpLEZlPWhlKGQsRCxmZSxuZSx1ZSk7cmV0dXJuIGUuZmlyc3REZWZpbmVkKEZlLGZ1bmN0aW9uKFope3JldHVybiBWKFosV2UsbCxmZSxJLG5lLHZvaWQgMCx1ZS5vdmVycmlkZUltcG9ydE1vZGUpfSl8fGllKEQsV2UsSSxmZSxnKX1mdW5jdGlvbiBmKEksbCxkLEQsZmUpe3JldHVybiBmZT09PXZvaWQgMCYmKGZlPXt9KSxUKEksbCxkLEQsZmUpWzBdfUMudHJ5R2V0TW9kdWxlU3BlY2lmaWVyc0Zyb21DYWNoZT1mO2Z1bmN0aW9uIFQoSSxsLGQsRCxmZSl7dmFyIGc7ZmU9PT12b2lkIDAmJihmZT17fSk7dmFyIG5lPWUuZ2V0U291cmNlRmlsZU9mTW9kdWxlKEkpO2lmKCFuZSlyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciB1ZT0oZz1kLmdldE1vZHVsZVNwZWNpZmllckNhY2hlKT09PW51bGx8fGc9PT12b2lkIDA/dm9pZCAwOmcuY2FsbChkKSxXZT11ZT09bnVsbD92b2lkIDA6dWUuZ2V0KGwucGF0aCxuZS5wYXRoLEQsZmUpO3JldHVybltXZT09bnVsbD92b2lkIDA6V2UubW9kdWxlU3BlY2lmaWVycyxuZSxXZT09bnVsbD92b2lkIDA6V2UubW9kdWxlUGF0aHMsdWVdfWZ1bmN0aW9uIEsoSSxsLGQsRCxmZSxnLG5lKXtyZXR1cm4gbmU9PT12b2lkIDAmJihuZT17fSksYihJLGwsZCxELGZlLGcsbmUpLm1vZHVsZVNwZWNpZmllcnN9Qy5nZXRNb2R1bGVTcGVjaWZpZXJzPUs7ZnVuY3Rpb24gYihJLGwsZCxELGZlLGcsbmUpe25lPT09dm9pZCAwJiYobmU9e30pO3ZhciB1ZT0hMSxXZT14KEksbCk7aWYoV2UpcmV0dXJue21vZHVsZVNwZWNpZmllcnM6W1dlXSxjb21wdXRlZFdpdGhvdXRDYWNoZTp1ZX07dmFyIEZlPVQoSSxELGZlLGcsbmUpLFo9RmVbMF0sQmU9RmVbMV0sZ2U9RmVbMl0sUmU9RmVbM107aWYoWilyZXR1cm57bW9kdWxlU3BlY2lmaWVyczpaLGNvbXB1dGVkV2l0aG91dENhY2hlOnVlfTtpZighQmUpcmV0dXJue21vZHVsZVNwZWNpZmllcnM6ZS5lbXB0eUFycmF5LGNvbXB1dGVkV2l0aG91dENhY2hlOnVlfTt1ZT0hMCxnZXx8KGdlPUYoRC5wYXRoLEJlLm9yaWdpbmFsRmlsZU5hbWUsZmUpKTt2YXIgemU9c2UoZ2UsZCxELGZlLGcsbmUpO3JldHVybiBSZT09bnVsbHx8UmUuc2V0KEQucGF0aCxCZS5wYXRoLGcsbmUsZ2UsemUpLHttb2R1bGVTcGVjaWZpZXJzOnplLGNvbXB1dGVkV2l0aG91dENhY2hlOnVlfX1DLmdldE1vZHVsZVNwZWNpZmllcnNXaXRoQ2FjaGVJbmZvPWI7ZnVuY3Rpb24gc2UoSSxsLGQsRCxmZSxnKXtnPT09dm9pZCAwJiYoZz17fSk7dmFyIG5lPUooZC5wYXRoLEQpLHVlPUUoRCxmZSxsLGQpLFdlPWUuZm9yRWFjaChJLGZ1bmN0aW9uKF9lKXtyZXR1cm4gZS5mb3JFYWNoKEQuZ2V0RmlsZUluY2x1ZGVSZWFzb25zKCkuZ2V0KGUudG9QYXRoKF9lLnBhdGgsRC5nZXRDdXJyZW50RGlyZWN0b3J5KCksbmUuZ2V0Q2Fub25pY2FsRmlsZU5hbWUpKSxmdW5jdGlvbih3ZSl7aWYoISh3ZS5raW5kIT09ZS5GaWxlSW5jbHVkZUtpbmQuSW1wb3J0fHx3ZS5maWxlIT09ZC5wYXRoKSYmIShkLmltcGxpZWROb2RlRm9ybWF0JiZkLmltcGxpZWROb2RlRm9ybWF0IT09ZS5nZXRNb2RlRm9yUmVzb2x1dGlvbkF0SW5kZXgoZCx3ZS5pbmRleCkpKXt2YXIgZGU9ZS5nZXRNb2R1bGVOYW1lU3RyaW5nTGl0ZXJhbEF0KGQsd2UuaW5kZXgpLnRleHQ7cmV0dXJuIHVlLnJlbGF0aXZlUHJlZmVyZW5jZSE9PTF8fCFlLnBhdGhJc1JlbGF0aXZlKGRlKT9kZTp2b2lkIDB9fSl9KTtpZihXZSl7dmFyIEZlPVtXZV07cmV0dXJuIEZlfWZvcih2YXIgWj1lLnNvbWUoSSxmdW5jdGlvbihfZSl7cmV0dXJuIF9lLmlzSW5Ob2RlTW9kdWxlc30pLEJlLGdlLFJlLHplPTAsRWU9STt6ZTxFZS5sZW5ndGg7emUrKyl7dmFyIEhlPUVlW3plXSxycj1WKEhlLG5lLGQsRCxsLGZlLHZvaWQgMCxnLm92ZXJyaWRlSW1wb3J0TW9kZSk7aWYoQmU9ZS5hcHBlbmQoQmUscnIpLHJyJiZIZS5pc1JlZGlyZWN0KXJldHVybiBCZTtpZighcnImJiFIZS5pc1JlZGlyZWN0KXt2YXIgSWU9aWUoSGUucGF0aCxuZSxsLEQsdWUpO2UucGF0aElzQmFyZVNwZWNpZmllcihJZSk/Z2U9ZS5hcHBlbmQoZ2UsSWUpOighWnx8SGUuaXNJbk5vZGVNb2R1bGVzKSYmKFJlPWUuYXBwZW5kKFJlLEllKSl9fXJldHVybiBnZSE9bnVsbCYmZ2UubGVuZ3RoP2dlOkJlIT1udWxsJiZCZS5sZW5ndGg/QmU6ZS5EZWJ1Zy5jaGVja0RlZmluZWQoUmUpfWZ1bmN0aW9uIEooSSxsKXt2YXIgZD1lLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKGwudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcz9sLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKTohMCksRD1lLmdldERpcmVjdG9yeVBhdGgoSSk7cmV0dXJue2dldENhbm9uaWNhbEZpbGVOYW1lOmQsaW1wb3J0aW5nU291cmNlRmlsZU5hbWU6SSxzb3VyY2VEaXJlY3Rvcnk6RH19ZnVuY3Rpb24gaWUoSSxsLGQsRCxmZSl7dmFyIGc9ZmUuZW5kaW5nLG5lPWZlLnJlbGF0aXZlUHJlZmVyZW5jZSx1ZT1kLmJhc2VVcmwsV2U9ZC5wYXRocyxGZT1kLnJvb3REaXJzLFo9bC5zb3VyY2VEaXJlY3RvcnksQmU9bC5nZXRDYW5vbmljYWxGaWxlTmFtZSxnZT1GZSYmeShGZSxJLFosQmUsZyxkKXx8ayhlLmVuc3VyZVBhdGhJc05vbk1vZHVsZU5hbWUoZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRGlyZWN0b3J5KFosSSxCZSkpLGcsZCk7aWYoIXVlJiYhV2V8fG5lPT09MClyZXR1cm4gZ2U7dmFyIFJlPWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChlLmdldFBhdGhzQmFzZVBhdGgoZCxEKXx8dWUsRC5nZXRDdXJyZW50RGlyZWN0b3J5KCkpLHplPWooSSxSZSxCZSk7aWYoIXplKXJldHVybiBnZTt2YXIgRWU9ayh6ZSxnLGQpLEhlPVdlJiZYKGUucmVtb3ZlRmlsZUV4dGVuc2lvbih6ZSksRWUsV2UpLHJyPUhlPT09dm9pZCAwJiZ1ZSE9PXZvaWQgMD9FZTpIZTtpZighcnIpcmV0dXJuIGdlO2lmKG5lPT09MSlyZXR1cm4gcnI7aWYobmU9PT0zKXt2YXIgSWU9ZC5jb25maWdGaWxlUGF0aD9lLnRvUGF0aChlLmdldERpcmVjdG9yeVBhdGgoZC5jb25maWdGaWxlUGF0aCksRC5nZXRDdXJyZW50RGlyZWN0b3J5KCksbC5nZXRDYW5vbmljYWxGaWxlTmFtZSk6bC5nZXRDYW5vbmljYWxGaWxlTmFtZShELmdldEN1cnJlbnREaXJlY3RvcnkoKSksX2U9ZS50b1BhdGgoSSxJZSxCZSksd2U9ZS5zdGFydHNXaXRoKFosSWUpLGRlPWUuc3RhcnRzV2l0aChfZSxJZSk7aWYod2UmJiFkZXx8IXdlJiZkZSlyZXR1cm4gcnI7dmFyIHllPXZlKEQsZS5nZXREaXJlY3RvcnlQYXRoKF9lKSksQWU9dmUoRCxaKTtyZXR1cm4gQWUhPT15ZT9ycjpnZX1yZXR1cm4gbmUhPT0yJiZlLkRlYnVnLmFzc2VydE5ldmVyKG5lKSxIKHJyKXx8UihnZSk8Uihycik/Z2U6cnJ9ZnVuY3Rpb24gUihJKXtmb3IodmFyIGw9MCxkPWUuc3RhcnRzV2l0aChJLFwiLi9cIik/MjowO2Q8SS5sZW5ndGg7ZCsrKUkuY2hhckNvZGVBdChkKT09PTQ3JiZsKys7cmV0dXJuIGx9Qy5jb3VudFBhdGhDb21wb25lbnRzPVI7ZnVuY3Rpb24gcShJKXt2YXIgbD1JLmltcG9ydHM7cmV0dXJuIGUuZmlyc3REZWZpbmVkKGwsZnVuY3Rpb24oZCl7dmFyIEQ9ZC50ZXh0O3JldHVybiBlLnBhdGhJc1JlbGF0aXZlKEQpP2UuaGFzSlNGaWxlRXh0ZW5zaW9uKEQpOnZvaWQgMH0pfHwhMX1mdW5jdGlvbiBPKEksbCl7cmV0dXJuIGUuY29tcGFyZUJvb2xlYW5zKGwuaXNSZWRpcmVjdCxJLmlzUmVkaXJlY3QpfHxlLmNvbXBhcmVOdW1iZXJPZkRpcmVjdG9yeVNlcGFyYXRvcnMoSS5wYXRoLGwucGF0aCl9ZnVuY3Rpb24gdmUoSSxsKXtyZXR1cm4gSS5nZXROZWFyZXN0QW5jZXN0b3JEaXJlY3RvcnlXaXRoUGFja2FnZUpzb24/SS5nZXROZWFyZXN0QW5jZXN0b3JEaXJlY3RvcnlXaXRoUGFja2FnZUpzb24obCk6ISFlLmZvckVhY2hBbmNlc3RvckRpcmVjdG9yeShsLGZ1bmN0aW9uKGQpe3JldHVybiBJLmZpbGVFeGlzdHMoZS5jb21iaW5lUGF0aHMoZCxcInBhY2thZ2UuanNvblwiKSk/ITA6dm9pZCAwfSl9ZnVuY3Rpb24gZWUoSSxsLGQsRCxmZSl7dmFyIGcsbmU9ZS5ob3N0R2V0Q2Fub25pY2FsRmlsZU5hbWUoZCksdWU9ZC5nZXRDdXJyZW50RGlyZWN0b3J5KCksV2U9ZC5pc1NvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0KGwpP2QuZ2V0UHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0KGwpOnZvaWQgMCxGZT1lLnRvUGF0aChsLHVlLG5lKSxaPWQucmVkaXJlY3RUYXJnZXRzTWFwLmdldChGZSl8fGUuZW1wdHlBcnJheSxCZT1WZShWZShWZShbXSxXZT9bV2VdOmUuZW1wdHlBcnJheSwhMCksW2xdLCExKSxaLCEwKSxnZT1CZS5tYXAoZnVuY3Rpb24oSWUpe3JldHVybiBlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoSWUsdWUpfSksUmU9IWUuZXZlcnkoZ2UsZS5jb250YWluc0lnbm9yZWRQYXRoKTtpZighRCl7dmFyIHplPWUuZm9yRWFjaChnZSxmdW5jdGlvbihJZSl7cmV0dXJuIShSZSYmZS5jb250YWluc0lnbm9yZWRQYXRoKEllKSkmJmZlKEllLFdlPT09SWUpfSk7aWYoemUpcmV0dXJuIHplfXZhciBFZT0oZz1kLmdldFN5bWxpbmtDYWNoZSk9PT1udWxsfHxnPT09dm9pZCAwP3ZvaWQgMDpnLmNhbGwoZCkuZ2V0U3ltbGlua2VkRGlyZWN0b3JpZXNCeVJlYWxwYXRoKCksSGU9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGwsdWUpLHJyPUVlJiZlLmZvckVhY2hBbmNlc3RvckRpcmVjdG9yeShlLmdldERpcmVjdG9yeVBhdGgoSGUpLGZ1bmN0aW9uKEllKXt2YXIgX2U9RWUuZ2V0KGUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoZS50b1BhdGgoSWUsdWUsbmUpKSk7aWYoISFfZSlyZXR1cm4gZS5zdGFydHNXaXRoRGlyZWN0b3J5KEksSWUsbmUpPyExOmUuZm9yRWFjaChnZSxmdW5jdGlvbih3ZSl7aWYoISFlLnN0YXJ0c1dpdGhEaXJlY3Rvcnkod2UsSWUsbmUpKWZvcih2YXIgZGU9ZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRGlyZWN0b3J5KEllLHdlLG5lKSx5ZT0wLEFlPV9lO3llPEFlLmxlbmd0aDt5ZSsrKXt2YXIgZXI9QWVbeWVdLGlyPWUucmVzb2x2ZVBhdGgoZXIsZGUpLENyPWZlKGlyLHdlPT09V2UpO2lmKFJlPSEwLENyKXJldHVybiBDcn19KX0pO3JldHVybiBycnx8KEQ/ZS5mb3JFYWNoKGdlLGZ1bmN0aW9uKEllKXtyZXR1cm4gUmUmJmUuY29udGFpbnNJZ25vcmVkUGF0aChJZSk/dm9pZCAwOmZlKEllLEllPT09V2UpfSk6dm9pZCAwKX1DLmZvckVhY2hGaWxlTmFtZU9mTW9kdWxlPWVlO2Z1bmN0aW9uIGhlKEksbCxkLEQsZmUpe3ZhciBnO2ZlPT09dm9pZCAwJiYoZmU9e30pO3ZhciBuZT1lLnRvUGF0aChsLGQuZ2V0Q3VycmVudERpcmVjdG9yeSgpLGUuaG9zdEdldENhbm9uaWNhbEZpbGVOYW1lKGQpKSx1ZT0oZz1kLmdldE1vZHVsZVNwZWNpZmllckNhY2hlKT09PW51bGx8fGc9PT12b2lkIDA/dm9pZCAwOmcuY2FsbChkKTtpZih1ZSl7dmFyIFdlPXVlLmdldChJLG5lLEQsZmUpO2lmKFdlIT1udWxsJiZXZS5tb2R1bGVQYXRocylyZXR1cm4gV2UubW9kdWxlUGF0aHN9dmFyIEZlPUYoSSxsLGQpO3JldHVybiB1ZSYmdWUuc2V0TW9kdWxlUGF0aHMoSSxuZSxELGZlLEZlKSxGZX1mdW5jdGlvbiBGKEksbCxkKXt2YXIgRD1lLmhvc3RHZXRDYW5vbmljYWxGaWxlTmFtZShkKSxmZT1uZXcgZS5NYXAsZz0hMTtlZShJLGwsZCwhMCxmdW5jdGlvbihnZSxSZSl7dmFyIHplPWUucGF0aENvbnRhaW5zTm9kZU1vZHVsZXMoZ2UpO2ZlLnNldChnZSx7cGF0aDpEKGdlKSxpc1JlZGlyZWN0OlJlLGlzSW5Ob2RlTW9kdWxlczp6ZX0pLGc9Z3x8emV9KTtmb3IodmFyIG5lPVtdLHVlPWZ1bmN0aW9uKGdlKXt2YXIgUmU9ZS5lbnN1cmVUcmFpbGluZ0RpcmVjdG9yeVNlcGFyYXRvcihnZSksemU7ZmUuZm9yRWFjaChmdW5jdGlvbihIZSxycil7dmFyIEllPUhlLnBhdGgsX2U9SGUuaXNSZWRpcmVjdCx3ZT1IZS5pc0luTm9kZU1vZHVsZXM7ZS5zdGFydHNXaXRoKEllLFJlKSYmKCh6ZXx8KHplPVtdKSkucHVzaCh7cGF0aDpycixpc1JlZGlyZWN0Ol9lLGlzSW5Ob2RlTW9kdWxlczp3ZX0pLGZlLmRlbGV0ZShycikpfSksemUmJih6ZS5sZW5ndGg+MSYmemUuc29ydChPKSxuZS5wdXNoLmFwcGx5KG5lLHplKSk7dmFyIEVlPWUuZ2V0RGlyZWN0b3J5UGF0aChnZSk7aWYoRWU9PT1nZSlyZXR1cm4gV2U9Z2UsXCJicmVha1wiO2dlPUVlLFdlPWdlfSxXZSxGZT1lLmdldERpcmVjdG9yeVBhdGgoSSk7ZmUuc2l6ZSE9PTA7KXt2YXIgWj11ZShGZSk7aWYoRmU9V2UsWj09PVwiYnJlYWtcIilicmVha31pZihmZS5zaXplKXt2YXIgQmU9ZS5hcnJheUZyb20oZmUudmFsdWVzKCkpO0JlLmxlbmd0aD4xJiZCZS5zb3J0KE8pLG5lLnB1c2guYXBwbHkobmUsQmUpfXJldHVybiBuZX1mdW5jdGlvbiB4KEksbCl7dmFyIGQsRD0oZD1JLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxkPT09dm9pZCAwP3ZvaWQgMDpkLmZpbmQoZnVuY3Rpb24obmUpe3JldHVybiBlLmlzTm9uR2xvYmFsQW1iaWVudE1vZHVsZShuZSkmJighZS5pc0V4dGVybmFsTW9kdWxlQXVnbWVudGF0aW9uKG5lKXx8IWUuaXNFeHRlcm5hbE1vZHVsZU5hbWVSZWxhdGl2ZShlLmdldFRleHRPZklkZW50aWZpZXJPckxpdGVyYWwobmUubmFtZSkpKX0pO2lmKEQpcmV0dXJuIEQubmFtZS50ZXh0O3ZhciBmZT1lLm1hcERlZmluZWQoSS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24obmUpe3ZhciB1ZSxXZSxGZSxaO2lmKCFlLmlzTW9kdWxlRGVjbGFyYXRpb24obmUpKXJldHVybjt2YXIgQmU9RWUobmUpO2lmKCEoKCh1ZT1CZT09bnVsbD92b2lkIDA6QmUucGFyZW50KT09PW51bGx8fHVlPT09dm9pZCAwP3ZvaWQgMDp1ZS5wYXJlbnQpJiZlLmlzTW9kdWxlQmxvY2soQmUucGFyZW50KSYmZS5pc0FtYmllbnRNb2R1bGUoQmUucGFyZW50LnBhcmVudCkmJmUuaXNTb3VyY2VGaWxlKEJlLnBhcmVudC5wYXJlbnQucGFyZW50KSkpcmV0dXJuO3ZhciBnZT0oWj0oRmU9KFdlPUJlLnBhcmVudC5wYXJlbnQuc3ltYm9sLmV4cG9ydHMpPT09bnVsbHx8V2U9PT12b2lkIDA/dm9pZCAwOldlLmdldChcImV4cG9ydD1cIikpPT09bnVsbHx8RmU9PT12b2lkIDA/dm9pZCAwOkZlLnZhbHVlRGVjbGFyYXRpb24pPT09bnVsbHx8Wj09PXZvaWQgMD92b2lkIDA6Wi5leHByZXNzaW9uO2lmKCFnZSlyZXR1cm47dmFyIFJlPWwuZ2V0U3ltYm9sQXRMb2NhdGlvbihnZSk7aWYoIVJlKXJldHVybjt2YXIgemU9KFJlPT1udWxsP3ZvaWQgMDpSZS5mbGFncykmMjA5NzE1Mj9sLmdldEFsaWFzZWRTeW1ib2woUmUpOlJlO2lmKHplPT09bmUuc3ltYm9sKXJldHVybiBCZS5wYXJlbnQucGFyZW50O2Z1bmN0aW9uIEVlKEhlKXtmb3IoO0hlLmZsYWdzJjQ7KUhlPUhlLnBhcmVudDtyZXR1cm4gSGV9fSksZz1mZVswXTtpZihnKXJldHVybiBnLm5hbWUudGV4dH1mdW5jdGlvbiBYKEksbCxkKXtmb3IodmFyIEQgaW4gZClmb3IodmFyIGZlPTAsZz1kW0RdO2ZlPGcubGVuZ3RoO2ZlKyspe3ZhciBuZT1nW2ZlXSx1ZT1lLnJlbW92ZUZpbGVFeHRlbnNpb24oZS5ub3JtYWxpemVQYXRoKG5lKSksV2U9dWUuaW5kZXhPZihcIipcIik7aWYoV2UhPT0tMSl7dmFyIEZlPXVlLnN1YnN0cigwLFdlKSxaPXVlLnN1YnN0cihXZSsxKTtpZihsLmxlbmd0aD49RmUubGVuZ3RoK1oubGVuZ3RoJiZlLnN0YXJ0c1dpdGgobCxGZSkmJmUuZW5kc1dpdGgobCxaKXx8IVomJmw9PT1lLnJlbW92ZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKEZlKSl7dmFyIEJlPWwuc3Vic3RyKEZlLmxlbmd0aCxsLmxlbmd0aC1aLmxlbmd0aC1GZS5sZW5ndGgpO3JldHVybiBELnJlcGxhY2UoXCIqXCIsQmUpfX1lbHNlIGlmKHVlPT09bHx8dWU9PT1JKXJldHVybiBEfX12YXIgJDsoZnVuY3Rpb24oSSl7SVtJLkV4YWN0PTBdPVwiRXhhY3RcIixJW0kuRGlyZWN0b3J5PTFdPVwiRGlyZWN0b3J5XCIsSVtJLlBhdHRlcm49Ml09XCJQYXR0ZXJuXCJ9KSgkfHwoJD17fSkpO2Z1bmN0aW9uIEEoSSxsLGQsRCxmZSxnLG5lKXtpZihuZT09PXZvaWQgMCYmKG5lPTApLHR5cGVvZiBmZT09XCJzdHJpbmdcIil7dmFyIHVlPWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChlLmNvbWJpbmVQYXRocyhkLGZlKSx2b2lkIDApLFdlPWUuaGFzVFNGaWxlRXh0ZW5zaW9uKGwpP2UucmVtb3ZlRmlsZUV4dGVuc2lvbihsKStVKGwsSSk6dm9pZCAwO3N3aXRjaChuZSl7Y2FzZSAwOmlmKGUuY29tcGFyZVBhdGhzKGwsdWUpPT09MHx8V2UmJmUuY29tcGFyZVBhdGhzKFdlLHVlKT09PTApcmV0dXJue21vZHVsZUZpbGVUb1RyeTpEfTticmVhaztjYXNlIDE6aWYoZS5jb250YWluc1BhdGgodWUsbCkpe3ZhciBGZT1lLmdldFJlbGF0aXZlUGF0aEZyb21EaXJlY3RvcnkodWUsbCwhMSk7cmV0dXJue21vZHVsZUZpbGVUb1RyeTplLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoZS5jb21iaW5lUGF0aHMoZS5jb21iaW5lUGF0aHMoRCxmZSksRmUpLHZvaWQgMCl9fWJyZWFrO2Nhc2UgMjp2YXIgWj11ZS5pbmRleE9mKFwiKlwiKSxCZT11ZS5zbGljZSgwLFopLGdlPXVlLnNsaWNlKForMSk7aWYoZS5zdGFydHNXaXRoKGwsQmUpJiZlLmVuZHNXaXRoKGwsZ2UpKXt2YXIgUmU9bC5zbGljZShCZS5sZW5ndGgsbC5sZW5ndGgtZ2UubGVuZ3RoKTtyZXR1cm57bW9kdWxlRmlsZVRvVHJ5OkQucmVwbGFjZShcIipcIixSZSl9fWlmKFdlJiZlLnN0YXJ0c1dpdGgoV2UsQmUpJiZlLmVuZHNXaXRoKFdlLGdlKSl7dmFyIFJlPVdlLnNsaWNlKEJlLmxlbmd0aCxXZS5sZW5ndGgtZ2UubGVuZ3RoKTtyZXR1cm57bW9kdWxlRmlsZVRvVHJ5OkQucmVwbGFjZShcIipcIixSZSl9fWJyZWFrfX1lbHNle2lmKEFycmF5LmlzQXJyYXkoZmUpKXJldHVybiBlLmZvckVhY2goZmUsZnVuY3Rpb24oX2Upe3JldHVybiBBKEksbCxkLEQsX2UsZyl9KTtpZih0eXBlb2YgZmU9PVwib2JqZWN0XCImJmZlIT09bnVsbCl7aWYoZS5hbGxLZXlzU3RhcnRXaXRoRG90KGZlKSlyZXR1cm4gZS5mb3JFYWNoKGUuZ2V0T3duS2V5cyhmZSksZnVuY3Rpb24oX2Upe3ZhciB3ZT1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoZS5jb21iaW5lUGF0aHMoRCxfZSksdm9pZCAwKSxkZT1lLmVuZHNXaXRoKF9lLFwiL1wiKT8xOmUuc3RyaW5nQ29udGFpbnMoX2UsXCIqXCIpPzI6MDtyZXR1cm4gQShJLGwsZCx3ZSxmZVtfZV0sZyxkZSl9KTtmb3IodmFyIHplPTAsRWU9ZS5nZXRPd25LZXlzKGZlKTt6ZTxFZS5sZW5ndGg7emUrKyl7dmFyIEhlPUVlW3plXTtpZihIZT09PVwiZGVmYXVsdFwifHxnLmluZGV4T2YoSGUpPj0wfHxlLmlzQXBwbGljYWJsZVZlcnNpb25lZFR5cGVzS2V5KGcsSGUpKXt2YXIgcnI9ZmVbSGVdLEllPUEoSSxsLGQsRCxycixnKTtpZihJZSlyZXR1cm4gSWV9fX19fWZ1bmN0aW9uIHkoSSxsLGQsRCxmZSxnKXt2YXIgbmU9UChsLEksRCk7aWYobmUhPT12b2lkIDApe3ZhciB1ZT1QKGQsSSxEKSxXZT11ZSE9PXZvaWQgMD9lLmVuc3VyZVBhdGhJc05vbk1vZHVsZU5hbWUoZS5nZXRSZWxhdGl2ZVBhdGhGcm9tRGlyZWN0b3J5KHVlLG5lLEQpKTpuZTtyZXR1cm4gZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoZyk9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKcz9rKFdlLGZlLGcpOmUucmVtb3ZlRmlsZUV4dGVuc2lvbihXZSl9fWZ1bmN0aW9uIFYoSSxsLGQsRCxmZSxnLG5lLHVlKXt2YXIgV2U9SS5wYXRoLEZlPUkuaXNSZWRpcmVjdCxaPWwuZ2V0Q2Fub25pY2FsRmlsZU5hbWUsQmU9bC5zb3VyY2VEaXJlY3Rvcnk7aWYoIUQuZmlsZUV4aXN0c3x8IUQucmVhZEZpbGUpcmV0dXJuO3ZhciBnZT1lLmdldE5vZGVNb2R1bGVQYXRoUGFydHMoV2UpO2lmKCFnZSlyZXR1cm47dmFyIFJlPVdlLHplPSExO2lmKCFuZSlmb3IodmFyIEVlPUUoRCxnLGZlLGQpLEhlPWdlLnBhY2thZ2VSb290SW5kZXgscnI9dm9pZCAwOzspe3ZhciBJZT1ZZShIZSksX2U9SWUubW9kdWxlRmlsZVRvVHJ5LHdlPUllLnBhY2thZ2VSb290UGF0aCxkZT1JZS5ibG9ja2VkQnlFeHBvcnRzLHllPUllLnZlcmJhdGltRnJvbUV4cG9ydHM7aWYoZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoZmUpIT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5DbGFzc2ljKXtpZihkZSlyZXR1cm47aWYoeWUpcmV0dXJuIF9lfWlmKHdlKXtSZT13ZSx6ZT0hMDticmVha31pZihycnx8KHJyPV9lKSxIZT1XZS5pbmRleE9mKGUuZGlyZWN0b3J5U2VwYXJhdG9yLEhlKzEpLEhlPT09LTEpe1JlPWsocnIsRWUuZW5kaW5nLGZlLEQpO2JyZWFrfX1pZihGZSYmIXplKXJldHVybjt2YXIgQWU9RC5nZXRHbG9iYWxUeXBpbmdzQ2FjaGVMb2NhdGlvbiYmRC5nZXRHbG9iYWxUeXBpbmdzQ2FjaGVMb2NhdGlvbigpLGVyPVooUmUuc3Vic3RyaW5nKDAsZ2UudG9wTGV2ZWxOb2RlTW9kdWxlc0luZGV4KSk7aWYoIShlLnN0YXJ0c1dpdGgoQmUsZXIpfHxBZSYmZS5zdGFydHNXaXRoKFooQWUpLGVyKSkpcmV0dXJuO3ZhciBpcj1SZS5zdWJzdHJpbmcoZ2UudG9wTGV2ZWxQYWNrYWdlTmFtZUluZGV4KzEpLENyPWUuZ2V0UGFja2FnZU5hbWVGcm9tVHlwZXNQYWNrYWdlTmFtZShpcik7cmV0dXJuIGUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKGZlKT09PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuQ2xhc3NpYyYmQ3I9PT1pcj92b2lkIDA6Q3I7ZnVuY3Rpb24gWWUoQnIpe3ZhciBFcixOZSxuPVdlLnN1YnN0cmluZygwLEJyKSxscj1lLmNvbWJpbmVQYXRocyhuLFwicGFja2FnZS5qc29uXCIpLGJlPVdlLEdlPShOZT0oRXI9RC5nZXRQYWNrYWdlSnNvbkluZm9DYWNoZSk9PT1udWxsfHxFcj09PXZvaWQgMD92b2lkIDA6RXIuY2FsbChEKSk9PT1udWxsfHxOZT09PXZvaWQgMD92b2lkIDA6TmUuZ2V0UGFja2FnZUpzb25JbmZvKGxyKTtpZih0eXBlb2YgR2U9PVwib2JqZWN0XCJ8fEdlPT09dm9pZCAwJiZELmZpbGVFeGlzdHMobHIpKXt2YXIgdXI9KEdlPT1udWxsP3ZvaWQgMDpHZS5wYWNrYWdlSnNvbkNvbnRlbnQpfHxKU09OLnBhcnNlKEQucmVhZEZpbGUobHIpKTtpZihlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZChmZSk9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNnx8ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoZmUpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dCl7dmFyIHlyPVtcIm5vZGVcIix1ZXx8ZC5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5FU05leHQ/XCJpbXBvcnRcIjpcInJlcXVpcmVcIixcInR5cGVzXCJdLElyPXVyLmV4cG9ydHMmJnR5cGVvZiB1ci5uYW1lPT1cInN0cmluZ1wiP0EoZmUsV2UsbixlLmdldFBhY2thZ2VOYW1lRnJvbVR5cGVzUGFja2FnZU5hbWUodXIubmFtZSksdXIuZXhwb3J0cyx5cik6dm9pZCAwO2lmKElyKXt2YXIgd3I9ZS5oYXNUU0ZpbGVFeHRlbnNpb24oSXIubW9kdWxlRmlsZVRvVHJ5KT97bW9kdWxlRmlsZVRvVHJ5OmUucmVtb3ZlRmlsZUV4dGVuc2lvbihJci5tb2R1bGVGaWxlVG9UcnkpK1UoSXIubW9kdWxlRmlsZVRvVHJ5LGZlKX06SXI7cmV0dXJuIEtlKEtlKHt9LHdyKSx7dmVyYmF0aW1Gcm9tRXhwb3J0czohMH0pfWlmKHVyLmV4cG9ydHMpcmV0dXJue21vZHVsZUZpbGVUb1RyeTpXZSxibG9ja2VkQnlFeHBvcnRzOiEwfX12YXIgVXI9dXIudHlwZXNWZXJzaW9ucz9lLmdldFBhY2thZ2VKc29uVHlwZXNWZXJzaW9uc1BhdGhzKHVyLnR5cGVzVmVyc2lvbnMpOnZvaWQgMDtpZihVcil7dmFyIGlpPVdlLnNsaWNlKG4ubGVuZ3RoKzEpLG1pPVgoZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKGlpKSxrKGlpLDAsZmUpLFVyLnBhdGhzKTttaSE9PXZvaWQgMCYmKGJlPWUuY29tYmluZVBhdGhzKG4sbWkpKX12YXIgcGU9dXIudHlwaW5nc3x8dXIudHlwZXN8fHVyLm1haW58fFwiaW5kZXguanNcIjtpZihlLmlzU3RyaW5nKHBlKSl7dmFyIG9yPWUudG9QYXRoKHBlLG4sWik7aWYoZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKG9yKT09PWUucmVtb3ZlRmlsZUV4dGVuc2lvbihaKGJlKSkpcmV0dXJue3BhY2thZ2VSb290UGF0aDpuLG1vZHVsZUZpbGVUb1RyeTpiZX19fWVsc2V7dmFyIHFyPVooYmUuc3Vic3RyaW5nKGdlLnBhY2thZ2VSb290SW5kZXgrMSkpO2lmKHFyPT09XCJpbmRleC5kLnRzXCJ8fHFyPT09XCJpbmRleC5qc1wifHxxcj09PVwiaW5kZXgudHNcInx8cXI9PT1cImluZGV4LnRzeFwiKXJldHVybnttb2R1bGVGaWxlVG9Ucnk6YmUscGFja2FnZVJvb3RQYXRoOm59fXJldHVybnttb2R1bGVGaWxlVG9Ucnk6YmV9fX1mdW5jdGlvbiBMKEksbCl7aWYoISFJLmZpbGVFeGlzdHMpZm9yKHZhciBkPWUuZmxhdHRlbihlLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoe2FsbG93SnM6ITB9LFt7ZXh0ZW5zaW9uOlwibm9kZVwiLGlzTWl4ZWRDb250ZW50OiExfSx7ZXh0ZW5zaW9uOlwianNvblwiLGlzTWl4ZWRDb250ZW50OiExLHNjcmlwdEtpbmQ6Nn1dKSksRD0wLGZlPWQ7RDxmZS5sZW5ndGg7RCsrKXt2YXIgZz1mZVtEXSxuZT1sK2c7aWYoSS5maWxlRXhpc3RzKG5lKSlyZXR1cm4gbmV9fWZ1bmN0aW9uIFAoSSxsLGQpe3JldHVybiBlLmZpcnN0RGVmaW5lZChsLGZ1bmN0aW9uKEQpe3ZhciBmZT1qKEksRCxkKTtyZXR1cm4gZmUhPT12b2lkIDAmJkgoZmUpP3ZvaWQgMDpmZX0pfWZ1bmN0aW9uIGsoSSxsLGQsRCl7aWYoZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihJLFtcIi5qc29uXCIsXCIubWpzXCIsXCIuY2pzXCJdKSlyZXR1cm4gSTt2YXIgZmU9ZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKEkpO2lmKEk9PT1mZSlyZXR1cm4gSTtpZihlLmZpbGVFeHRlbnNpb25Jc09uZU9mKEksW1wiLmQubXRzXCIsXCIubXRzXCIsXCIuZC5jdHNcIixcIi5jdHNcIl0pKXJldHVybiBmZStZKEksZCk7c3dpdGNoKGwpe2Nhc2UgMDp2YXIgZz1lLnJlbW92ZVN1ZmZpeChmZSxcIi9pbmRleFwiKTtyZXR1cm4gRCYmZyE9PWZlJiZMKEQsZyk/ZmU6ZztjYXNlIDE6cmV0dXJuIGZlO2Nhc2UgMjpyZXR1cm4gZmUrWShJLGQpO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIobCl9fWZ1bmN0aW9uIFkoSSxsKXt2YXIgZDtyZXR1cm4oZD1VKEksbCkpIT09bnVsbCYmZCE9PXZvaWQgMD9kOmUuRGVidWcuZmFpbChcIkV4dGVuc2lvbiBcIi5jb25jYXQoZS5leHRlbnNpb25Gcm9tUGF0aChJKSxcIiBpcyB1bnN1cHBvcnRlZDo6IEZpbGVOYW1lOjogXCIpLmNvbmNhdChJKSl9ZnVuY3Rpb24gVShJLGwpe3ZhciBkPWUudHJ5R2V0RXh0ZW5zaW9uRnJvbVBhdGgoSSk7c3dpdGNoKGQpe2Nhc2VcIi50c1wiOmNhc2VcIi5kLnRzXCI6cmV0dXJuXCIuanNcIjtjYXNlXCIudHN4XCI6cmV0dXJuIGwuanN4PT09MT9cIi5qc3hcIjpcIi5qc1wiO2Nhc2VcIi5qc1wiOmNhc2VcIi5qc3hcIjpjYXNlXCIuanNvblwiOnJldHVybiBkO2Nhc2VcIi5kLm10c1wiOmNhc2VcIi5tdHNcIjpjYXNlXCIubWpzXCI6cmV0dXJuXCIubWpzXCI7Y2FzZVwiLmQuY3RzXCI6Y2FzZVwiLmN0c1wiOmNhc2VcIi5janNcIjpyZXR1cm5cIi5janNcIjtkZWZhdWx0OnJldHVybn19Qy50cnlHZXRKU0V4dGVuc2lvbkZvckZpbGU9VTtmdW5jdGlvbiBqKEksbCxkKXt2YXIgRD1lLmdldFJlbGF0aXZlUGF0aFRvRGlyZWN0b3J5T3JVcmwobCxJLGwsZCwhMSk7cmV0dXJuIGUuaXNSb290ZWREaXNrUGF0aChEKT92b2lkIDA6RH1mdW5jdGlvbiBIKEkpe3JldHVybiBlLnN0YXJ0c1dpdGgoSSxcIi4uXCIpfX0pKGE9ZS5tb2R1bGVTcGVjaWZpZXJzfHwoZS5tb2R1bGVTcGVjaWZpZXJzPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYT1lLnN5cz97Z2V0Q3VycmVudERpcmVjdG9yeTpmdW5jdGlvbigpe3JldHVybiBlLnN5cy5nZXRDdXJyZW50RGlyZWN0b3J5KCl9LGdldE5ld0xpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zeXMubmV3TGluZX0sZ2V0Q2Fub25pY2FsRmlsZU5hbWU6ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShlLnN5cy51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKX06dm9pZCAwO2Z1bmN0aW9uIEMoUCxrKXt2YXIgWT1QPT09ZS5zeXMmJmE/YTp7Z2V0Q3VycmVudERpcmVjdG9yeTpmdW5jdGlvbigpe3JldHVybiBQLmdldEN1cnJlbnREaXJlY3RvcnkoKX0sZ2V0TmV3TGluZTpmdW5jdGlvbigpe3JldHVybiBQLm5ld0xpbmV9LGdldENhbm9uaWNhbEZpbGVOYW1lOmUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoUC51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKX07aWYoIWspcmV0dXJuIGZ1bmN0aW9uKGope3JldHVybiBQLndyaXRlKGUuZm9ybWF0RGlhZ25vc3RpYyhqLFkpKX07dmFyIFU9bmV3IEFycmF5KDEpO3JldHVybiBmdW5jdGlvbihqKXtVWzBdPWosUC53cml0ZShlLmZvcm1hdERpYWdub3N0aWNzV2l0aENvbG9yQW5kQ29udGV4dChVLFkpK1kuZ2V0TmV3TGluZSgpKSxVWzBdPXZvaWQgMH19ZS5jcmVhdGVEaWFnbm9zdGljUmVwb3J0ZXI9QztmdW5jdGlvbiB3KFAsayxZKXtyZXR1cm4gUC5jbGVhclNjcmVlbiYmIVkucHJlc2VydmVXYXRjaE91dHB1dCYmIVkuZXh0ZW5kZWREaWFnbm9zdGljcyYmIVkuZGlhZ25vc3RpY3MmJmUuY29udGFpbnMoZS5zY3JlZW5TdGFydGluZ01lc3NhZ2VDb2RlcyxrLmNvZGUpPyhQLmNsZWFyU2NyZWVuKCksITApOiExfWUuc2NyZWVuU3RhcnRpbmdNZXNzYWdlQ29kZXM9W2UuRGlhZ25vc3RpY3MuU3RhcnRpbmdfY29tcGlsYXRpb25faW5fd2F0Y2hfbW9kZS5jb2RlLGUuRGlhZ25vc3RpY3MuRmlsZV9jaGFuZ2VfZGV0ZWN0ZWRfU3RhcnRpbmdfaW5jcmVtZW50YWxfY29tcGlsYXRpb24uY29kZV07ZnVuY3Rpb24gQihQLGspe3JldHVybiBlLmNvbnRhaW5zKGUuc2NyZWVuU3RhcnRpbmdNZXNzYWdlQ29kZXMsUC5jb2RlKT9rK2s6a31mdW5jdGlvbiBFKFApe3JldHVybiBQLm5vdz9QLm5vdygpLnRvTG9jYWxlVGltZVN0cmluZyhcImVuLVVTXCIse3RpbWVab25lOlwiVVRDXCJ9KTpuZXcgRGF0ZSgpLnRvTG9jYWxlVGltZVN0cmluZygpfWUuZ2V0TG9jYWxlVGltZVN0cmluZz1FO2Z1bmN0aW9uIFEoUCxrKXtyZXR1cm4gaz9mdW5jdGlvbihZLFUsail7dyhQLFksaik7dmFyIEg9XCJbXCIuY29uY2F0KGUuZm9ybWF0Q29sb3JBbmRSZXNldChFKFApLGUuRm9yZWdyb3VuZENvbG9yRXNjYXBlU2VxdWVuY2VzLkdyZXkpLFwiXSBcIik7SCs9XCJcIi5jb25jYXQoZS5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KFkubWVzc2FnZVRleHQsUC5uZXdMaW5lKSkuY29uY2F0KFUrVSksUC53cml0ZShIKX06ZnVuY3Rpb24oWSxVLGope3ZhciBIPVwiXCI7dyhQLFksail8fChIKz1VKSxIKz1cIlwiLmNvbmNhdChFKFApLFwiIC0gXCIpLEgrPVwiXCIuY29uY2F0KGUuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChZLm1lc3NhZ2VUZXh0LFAubmV3TGluZSkpLmNvbmNhdChCKFksVSkpLFAud3JpdGUoSCl9fWUuY3JlYXRlV2F0Y2hTdGF0dXNSZXBvcnRlcj1RO2Z1bmN0aW9uIGxlKFAsayxZLFUsaixIKXt2YXIgST1qO0kub25VblJlY292ZXJhYmxlQ29uZmlnRmlsZURpYWdub3N0aWM9ZnVuY3Rpb24oZCl7cmV0dXJuIEEoaixILGQpfTt2YXIgbD1lLmdldFBhcnNlZENvbW1hbmRMaW5lT2ZDb25maWdGaWxlKFAsayxJLFksVSk7cmV0dXJuIEkub25VblJlY292ZXJhYmxlQ29uZmlnRmlsZURpYWdub3N0aWM9dm9pZCAwLGx9ZS5wYXJzZUNvbmZpZ0ZpbGVXaXRoU3lzdGVtPWxlO2Z1bmN0aW9uIE4oUCl7cmV0dXJuIGUuY291bnRXaGVyZShQLGZ1bmN0aW9uKGspe3JldHVybiBrLmNhdGVnb3J5PT09ZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3J9KX1lLmdldEVycm9yQ291bnRGb3JTdW1tYXJ5PU47ZnVuY3Rpb24gcChQKXt2YXIgaz1lLmZpbHRlcihQLGZ1bmN0aW9uKFkpe3JldHVybiBZLmNhdGVnb3J5PT09ZS5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3J9KS5tYXAoZnVuY3Rpb24oWSl7aWYoWS5maWxlIT09dm9pZCAwKXJldHVyblwiXCIuY29uY2F0KFkuZmlsZS5maWxlTmFtZSl9KTtyZXR1cm4gay5tYXAoZnVuY3Rpb24oWSl7dmFyIFU9ZS5maW5kKFAsZnVuY3Rpb24oSCl7cmV0dXJuIEguZmlsZSE9PXZvaWQgMCYmSC5maWxlLmZpbGVOYW1lPT09WX0pO2lmKFUhPT12b2lkIDApe3ZhciBqPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oVS5maWxlLFUuc3RhcnQpLmxpbmU7cmV0dXJue2ZpbGVOYW1lOlksbGluZTpqKzF9fX0pfWUuZ2V0RmlsZXNJbkVycm9yRm9yU3VtbWFyeT1wO2Z1bmN0aW9uIG0oUCl7cmV0dXJuIFA9PT0xP2UuRGlhZ25vc3RpY3MuRm91bmRfMV9lcnJvcl9XYXRjaGluZ19mb3JfZmlsZV9jaGFuZ2VzOmUuRGlhZ25vc3RpY3MuRm91bmRfMF9lcnJvcnNfV2F0Y2hpbmdfZm9yX2ZpbGVfY2hhbmdlc31lLmdldFdhdGNoRXJyb3JTdW1tYXJ5RGlhZ25vc3RpY01lc3NhZ2U9bTtmdW5jdGlvbiBHKFAsayl7dmFyIFk9ZS5mb3JtYXRDb2xvckFuZFJlc2V0KFwiOlwiK1AubGluZSxlLkZvcmVncm91bmRDb2xvckVzY2FwZVNlcXVlbmNlcy5HcmV5KTtyZXR1cm4gZS5wYXRoSXNBYnNvbHV0ZShQLmZpbGVOYW1lKSYmZS5wYXRoSXNBYnNvbHV0ZShrKT9lLmdldFJlbGF0aXZlUGF0aEZyb21EaXJlY3RvcnkoayxQLmZpbGVOYW1lLCExKStZOlAuZmlsZU5hbWUrWX1mdW5jdGlvbiBvZShQLGssWSxVKXtpZihQPT09MClyZXR1cm5cIlwiO3ZhciBqPWsuZmlsdGVyKGZ1bmN0aW9uKEQpe3JldHVybiBEIT09dm9pZCAwfSksSD1qLm1hcChmdW5jdGlvbihEKXtyZXR1cm5cIlwiLmNvbmNhdChELmZpbGVOYW1lLFwiOlwiKS5jb25jYXQoRC5saW5lKX0pLmZpbHRlcihmdW5jdGlvbihELGZlLGcpe3JldHVybiBnLmluZGV4T2YoRCk9PT1mZX0pLEk9alswXSYmRyhqWzBdLFUuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSxsPVA9PT0xP2UuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGtbMF0hPT12b2lkIDA/ZS5EaWFnbm9zdGljcy5Gb3VuZF8xX2Vycm9yX2luXzE6ZS5EaWFnbm9zdGljcy5Gb3VuZF8xX2Vycm9yLFAsSSk6ZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMoSC5sZW5ndGg9PT0wP2UuRGlhZ25vc3RpY3MuRm91bmRfMF9lcnJvcnM6SC5sZW5ndGg9PT0xP2UuRGlhZ25vc3RpY3MuRm91bmRfMF9lcnJvcnNfaW5fdGhlX3NhbWVfZmlsZV9zdGFydGluZ19hdF9Db2xvbl8xOmUuRGlhZ25vc3RpY3MuRm91bmRfMF9lcnJvcnNfaW5fMV9maWxlcyxQLEgubGVuZ3RoPT09MT9JOkgubGVuZ3RoKSxkPUgubGVuZ3RoPjE/ZihqLFUpOlwiXCI7cmV0dXJuXCJcIi5jb25jYXQoWSkuY29uY2F0KGUuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChsLm1lc3NhZ2VUZXh0LFkpKS5jb25jYXQoWSkuY29uY2F0KFkpLmNvbmNhdChkKX1lLmdldEVycm9yU3VtbWFyeVRleHQ9b2U7ZnVuY3Rpb24gZihQLGspe3ZhciBZPVAuZmlsdGVyKGZ1bmN0aW9uKGcsbmUsdWUpe3JldHVybiBuZT09PXVlLmZpbmRJbmRleChmdW5jdGlvbihXZSl7cmV0dXJuKFdlPT1udWxsP3ZvaWQgMDpXZS5maWxlTmFtZSk9PT0oZz09bnVsbD92b2lkIDA6Zy5maWxlTmFtZSl9KX0pO2lmKFkubGVuZ3RoPT09MClyZXR1cm5cIlwiO3ZhciBVPWZ1bmN0aW9uKGcpe3JldHVybiBNYXRoLmxvZyhnKSpNYXRoLkxPRzEwRSsxfSxqPVkubWFwKGZ1bmN0aW9uKGcpe3JldHVybltnLGUuY291bnRXaGVyZShQLGZ1bmN0aW9uKG5lKXtyZXR1cm4gbmUuZmlsZU5hbWU9PT1nLmZpbGVOYW1lfSldfSksSD1qLnJlZHVjZShmdW5jdGlvbihnLG5lKXtyZXR1cm4gTWF0aC5tYXgoZyxuZVsxXXx8MCl9LDApLEk9ZS5EaWFnbm9zdGljcy5FcnJvcnNfRmlsZXMubWVzc2FnZSxsPUkuc3BsaXQoXCIgXCIpWzBdLmxlbmd0aCxkPU1hdGgubWF4KGwsVShIKSksRD1NYXRoLm1heChVKEgpLWwsMCksZmU9XCJcIjtyZXR1cm4gZmUrPVwiIFwiLnJlcGVhdChEKStJK2BcbmAsai5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBuZT1nWzBdLHVlPWdbMV0sV2U9TWF0aC5sb2codWUpKk1hdGguTE9HMTBFKzF8MCxGZT1XZTxkP1wiIFwiLnJlcGVhdChkLVdlKTpcIlwiLFo9RyhuZSxrLmdldEN1cnJlbnREaXJlY3RvcnkoKSk7ZmUrPVwiXCIuY29uY2F0KEZlKS5jb25jYXQodWUsXCIgIFwiKS5jb25jYXQoWixgXG5gKX0pLGZlfWZ1bmN0aW9uIFQoUCl7cmV0dXJuISFQLmdldFN0YXRlfWUuaXNCdWlsZGVyUHJvZ3JhbT1UO2Z1bmN0aW9uIEsoUCxrKXt2YXIgWT1QLmdldENvbXBpbGVyT3B0aW9ucygpO1kuZXhwbGFpbkZpbGVzP2IoVChQKT9QLmdldFByb2dyYW0oKTpQLGspOihZLmxpc3RGaWxlc3x8WS5saXN0RmlsZXNPbmx5KSYmZS5mb3JFYWNoKFAuZ2V0U291cmNlRmlsZXMoKSxmdW5jdGlvbihVKXtrKFUuZmlsZU5hbWUpfSl9ZS5saXN0RmlsZXM9SztmdW5jdGlvbiBiKFAsayl7Zm9yKHZhciBZLFUsaj1QLmdldEZpbGVJbmNsdWRlUmVhc29ucygpLEg9ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShQLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSksST1mdW5jdGlvbihmZSl7cmV0dXJuIGUuY29udmVydFRvUmVsYXRpdmVQYXRoKGZlLFAuZ2V0Q3VycmVudERpcmVjdG9yeSgpLEgpfSxsPTAsZD1QLmdldFNvdXJjZUZpbGVzKCk7bDxkLmxlbmd0aDtsKyspe3ZhciBEPWRbbF07ayhcIlwiLmNvbmNhdChxKEQsSSkpKSwoWT1qLmdldChELnBhdGgpKT09PW51bGx8fFk9PT12b2lkIDB8fFkuZm9yRWFjaChmdW5jdGlvbihmZSl7cmV0dXJuIGsoXCIgIFwiLmNvbmNhdChSKFAsZmUsSSkubWVzc2FnZVRleHQpKX0pLChVPXNlKEQsSSkpPT09bnVsbHx8VT09PXZvaWQgMHx8VS5mb3JFYWNoKGZ1bmN0aW9uKGZlKXtyZXR1cm4gayhcIiAgXCIuY29uY2F0KGZlLm1lc3NhZ2VUZXh0KSl9KX19ZS5leHBsYWluRmlsZXM9YjtmdW5jdGlvbiBzZShQLGspe3ZhciBZO3JldHVybiBQLnBhdGghPT1QLnJlc29sdmVkUGF0aCYmKFl8fChZPVtdKSkucHVzaChlLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKHZvaWQgMCxlLkRpYWdub3N0aWNzLkZpbGVfaXNfb3V0cHV0X29mX3Byb2plY3RfcmVmZXJlbmNlX3NvdXJjZV8wLHEoUC5vcmlnaW5hbEZpbGVOYW1lLGspKSksUC5yZWRpcmVjdEluZm8mJihZfHwoWT1bXSkpLnB1c2goZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5GaWxlX3JlZGlyZWN0c190b19maWxlXzAscShQLnJlZGlyZWN0SW5mby5yZWRpcmVjdFRhcmdldCxrKSkpLFl9ZS5leHBsYWluSWZGaWxlSXNSZWRpcmVjdD1zZTtmdW5jdGlvbiBKKFAsayl7dmFyIFksVT1QLmdldENvbXBpbGVyT3B0aW9ucygpLmNvbmZpZ0ZpbGU7aWYoISEoISgoWT1VPT1udWxsP3ZvaWQgMDpVLmNvbmZpZ0ZpbGVTcGVjcyk9PT1udWxsfHxZPT09dm9pZCAwKSYmWS52YWxpZGF0ZWRGaWxlc1NwZWMpKXt2YXIgaj1lLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKFAudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpKSxIPWooayksST1lLmdldERpcmVjdG9yeVBhdGgoZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKFUuZmlsZU5hbWUsUC5nZXRDdXJyZW50RGlyZWN0b3J5KCkpKTtyZXR1cm4gZS5maW5kKFUuY29uZmlnRmlsZVNwZWNzLnZhbGlkYXRlZEZpbGVzU3BlYyxmdW5jdGlvbihsKXtyZXR1cm4gaihlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgobCxJKSk9PT1IfSl9fWUuZ2V0TWF0Y2hlZEZpbGVTcGVjPUo7ZnVuY3Rpb24gaWUoUCxrKXt2YXIgWSxVLGo9UC5nZXRDb21waWxlck9wdGlvbnMoKS5jb25maWdGaWxlO2lmKCEhKCEoKFk9aj09bnVsbD92b2lkIDA6ai5jb25maWdGaWxlU3BlY3MpPT09bnVsbHx8WT09PXZvaWQgMCkmJlkudmFsaWRhdGVkSW5jbHVkZVNwZWNzKSl7dmFyIEg9ZS5maWxlRXh0ZW5zaW9uSXMoayxcIi5qc29uXCIpLEk9ZS5nZXREaXJlY3RvcnlQYXRoKGUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChqLmZpbGVOYW1lLFAuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSksbD1QLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKTtyZXR1cm4gZS5maW5kKChVPWo9PW51bGw/dm9pZCAwOmouY29uZmlnRmlsZVNwZWNzKT09PW51bGx8fFU9PT12b2lkIDA/dm9pZCAwOlUudmFsaWRhdGVkSW5jbHVkZVNwZWNzLGZ1bmN0aW9uKGQpe2lmKEgmJiFlLmVuZHNXaXRoKGQsXCIuanNvblwiKSlyZXR1cm4hMTt2YXIgRD1lLmdldFBhdHRlcm5Gcm9tU3BlYyhkLEksXCJmaWxlc1wiKTtyZXR1cm4hIUQmJmUuZ2V0UmVnZXhGcm9tUGF0dGVybihcIihcIi5jb25jYXQoRCxcIikkXCIpLGwpLnRlc3Qoayl9KX19ZS5nZXRNYXRjaGVkSW5jbHVkZVNwZWM9aWU7ZnVuY3Rpb24gUihQLGssWSl7dmFyIFUsaixIPVAuZ2V0Q29tcGlsZXJPcHRpb25zKCk7aWYoZS5pc1JlZmVyZW5jZWRGaWxlKGspKXt2YXIgST1lLmdldFJlZmVyZW5jZWRGaWxlTG9jYXRpb24oZnVuY3Rpb24oRmUpe3JldHVybiBQLmdldFNvdXJjZUZpbGVCeVBhdGgoRmUpfSxrKSxsPWUuaXNSZWZlcmVuY2VGaWxlTG9jYXRpb24oSSk/SS5maWxlLnRleHQuc3Vic3RyaW5nKEkucG9zLEkuZW5kKTonXCInLmNvbmNhdChJLnRleHQsJ1wiJyksZD12b2lkIDA7c3dpdGNoKGUuRGVidWcuYXNzZXJ0KGUuaXNSZWZlcmVuY2VGaWxlTG9jYXRpb24oSSl8fGsua2luZD09PWUuRmlsZUluY2x1ZGVLaW5kLkltcG9ydCxcIk9ubHkgc3ludGhldGljIHJlZmVyZW5jZXMgYXJlIGltcG9ydHNcIiksay5raW5kKXtjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLkltcG9ydDplLmlzUmVmZXJlbmNlRmlsZUxvY2F0aW9uKEkpP2Q9SS5wYWNrYWdlSWQ/ZS5EaWFnbm9zdGljcy5JbXBvcnRlZF92aWFfMF9mcm9tX2ZpbGVfMV93aXRoX3BhY2thZ2VJZF8yOmUuRGlhZ25vc3RpY3MuSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzE6SS50ZXh0PT09ZS5leHRlcm5hbEhlbHBlcnNNb2R1bGVOYW1lVGV4dD9kPUkucGFja2FnZUlkP2UuRGlhZ25vc3RpY3MuSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfd2l0aF9wYWNrYWdlSWRfMl90b19pbXBvcnRfaW1wb3J0SGVscGVyc19hc19zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zOmUuRGlhZ25vc3RpY3MuSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfdG9faW1wb3J0X2ltcG9ydEhlbHBlcnNfYXNfc3BlY2lmaWVkX2luX2NvbXBpbGVyT3B0aW9uczpkPUkucGFja2FnZUlkP2UuRGlhZ25vc3RpY3MuSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfd2l0aF9wYWNrYWdlSWRfMl90b19pbXBvcnRfanN4X2FuZF9qc3hzX2ZhY3RvcnlfZnVuY3Rpb25zOmUuRGlhZ25vc3RpY3MuSW1wb3J0ZWRfdmlhXzBfZnJvbV9maWxlXzFfdG9faW1wb3J0X2pzeF9hbmRfanN4c19mYWN0b3J5X2Z1bmN0aW9uczticmVhaztjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLlJlZmVyZW5jZUZpbGU6ZS5EZWJ1Zy5hc3NlcnQoIUkucGFja2FnZUlkKSxkPWUuRGlhZ25vc3RpY3MuUmVmZXJlbmNlZF92aWFfMF9mcm9tX2ZpbGVfMTticmVhaztjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLlR5cGVSZWZlcmVuY2VEaXJlY3RpdmU6ZD1JLnBhY2thZ2VJZD9lLkRpYWdub3N0aWNzLlR5cGVfbGlicmFyeV9yZWZlcmVuY2VkX3ZpYV8wX2Zyb21fZmlsZV8xX3dpdGhfcGFja2FnZUlkXzI6ZS5EaWFnbm9zdGljcy5UeXBlX2xpYnJhcnlfcmVmZXJlbmNlZF92aWFfMF9mcm9tX2ZpbGVfMTticmVhaztjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLkxpYlJlZmVyZW5jZURpcmVjdGl2ZTplLkRlYnVnLmFzc2VydCghSS5wYWNrYWdlSWQpLGQ9ZS5EaWFnbm9zdGljcy5MaWJyYXJ5X3JlZmVyZW5jZWRfdmlhXzBfZnJvbV9maWxlXzE7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKGspfXJldHVybiBlLmNoYWluRGlhZ25vc3RpY01lc3NhZ2VzKHZvaWQgMCxkLGwscShJLmZpbGUsWSksSS5wYWNrYWdlSWQmJmUucGFja2FnZUlkVG9TdHJpbmcoSS5wYWNrYWdlSWQpKX1zd2l0Y2goay5raW5kKXtjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLlJvb3RGaWxlOmlmKCEoISgoVT1ILmNvbmZpZ0ZpbGUpPT09bnVsbHx8VT09PXZvaWQgMCkmJlUuY29uZmlnRmlsZVNwZWNzKSlyZXR1cm4gZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5Sb290X2ZpbGVfc3BlY2lmaWVkX2Zvcl9jb21waWxhdGlvbik7dmFyIEQ9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKFAuZ2V0Um9vdEZpbGVOYW1lcygpW2suaW5kZXhdLFAuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSxmZT1KKFAsRCk7aWYoZmUpcmV0dXJuIGUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLGUuRGlhZ25vc3RpY3MuUGFydF9vZl9maWxlc19saXN0X2luX3RzY29uZmlnX2pzb24pO3ZhciBnPWllKFAsRCk7cmV0dXJuIGc/ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5NYXRjaGVkX2J5X2luY2x1ZGVfcGF0dGVybl8wX2luXzEsZyxxKEguY29uZmlnRmlsZSxZKSk6ZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5EaWFnbm9zdGljcy5Sb290X2ZpbGVfc3BlY2lmaWVkX2Zvcl9jb21waWxhdGlvbik7Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5Tb3VyY2VGcm9tUHJvamVjdFJlZmVyZW5jZTpjYXNlIGUuRmlsZUluY2x1ZGVLaW5kLk91dHB1dEZyb21Qcm9qZWN0UmVmZXJlbmNlOnZhciBuZT1rLmtpbmQ9PT1lLkZpbGVJbmNsdWRlS2luZC5PdXRwdXRGcm9tUHJvamVjdFJlZmVyZW5jZSx1ZT1lLkRlYnVnLmNoZWNrRGVmaW5lZCgoaj1QLmdldFJlc29sdmVkUHJvamVjdFJlZmVyZW5jZXMoKSk9PT1udWxsfHxqPT09dm9pZCAwP3ZvaWQgMDpqW2suaW5kZXhdKTtyZXR1cm4gZS5jaGFpbkRpYWdub3N0aWNNZXNzYWdlcyh2b2lkIDAsZS5vdXRGaWxlKEgpP25lP2UuRGlhZ25vc3RpY3MuT3V0cHV0X2Zyb21fcmVmZXJlbmNlZF9wcm9qZWN0XzBfaW5jbHVkZWRfYmVjYXVzZV8xX3NwZWNpZmllZDplLkRpYWdub3N0aWNzLlNvdXJjZV9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF8wX2luY2x1ZGVkX2JlY2F1c2VfMV9zcGVjaWZpZWQ6bmU/ZS5EaWFnbm9zdGljcy5PdXRwdXRfZnJvbV9yZWZlcmVuY2VkX3Byb2plY3RfMF9pbmNsdWRlZF9iZWNhdXNlX21vZHVsZV9pc19zcGVjaWZpZWRfYXNfbm9uZTplLkRpYWdub3N0aWNzLlNvdXJjZV9mcm9tX3JlZmVyZW5jZWRfcHJvamVjdF8wX2luY2x1ZGVkX2JlY2F1c2VfbW9kdWxlX2lzX3NwZWNpZmllZF9hc19ub25lLHEodWUuc291cmNlRmlsZS5maWxlTmFtZSxZKSxILm91dEZpbGU/XCItLW91dEZpbGVcIjpcIi0tb3V0XCIpO2Nhc2UgZS5GaWxlSW5jbHVkZUtpbmQuQXV0b21hdGljVHlwZURpcmVjdGl2ZUZpbGU6cmV0dXJuIGUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLEgudHlwZXM/ay5wYWNrYWdlSWQ/ZS5EaWFnbm9zdGljcy5FbnRyeV9wb2ludF9vZl90eXBlX2xpYnJhcnlfMF9zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zX3dpdGhfcGFja2FnZUlkXzE6ZS5EaWFnbm9zdGljcy5FbnRyeV9wb2ludF9vZl90eXBlX2xpYnJhcnlfMF9zcGVjaWZpZWRfaW5fY29tcGlsZXJPcHRpb25zOmsucGFja2FnZUlkP2UuRGlhZ25vc3RpY3MuRW50cnlfcG9pbnRfZm9yX2ltcGxpY2l0X3R5cGVfbGlicmFyeV8wX3dpdGhfcGFja2FnZUlkXzE6ZS5EaWFnbm9zdGljcy5FbnRyeV9wb2ludF9mb3JfaW1wbGljaXRfdHlwZV9saWJyYXJ5XzAsay50eXBlUmVmZXJlbmNlLGsucGFja2FnZUlkJiZlLnBhY2thZ2VJZFRvU3RyaW5nKGsucGFja2FnZUlkKSk7Y2FzZSBlLkZpbGVJbmNsdWRlS2luZC5MaWJGaWxlOmlmKGsuaW5kZXghPT12b2lkIDApcmV0dXJuIGUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLGUuRGlhZ25vc3RpY3MuTGlicmFyeV8wX3NwZWNpZmllZF9pbl9jb21waWxlck9wdGlvbnMsSC5saWJbay5pbmRleF0pO3ZhciBXZT1lLmZvckVhY2hFbnRyeShlLnRhcmdldE9wdGlvbkRlY2xhcmF0aW9uLnR5cGUsZnVuY3Rpb24oRmUsWil7cmV0dXJuIEZlPT09ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KEgpP1o6dm9pZCAwfSk7cmV0dXJuIGUuY2hhaW5EaWFnbm9zdGljTWVzc2FnZXModm9pZCAwLFdlP2UuRGlhZ25vc3RpY3MuRGVmYXVsdF9saWJyYXJ5X2Zvcl90YXJnZXRfMDplLkRpYWdub3N0aWNzLkRlZmF1bHRfbGlicmFyeSxXZSk7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKGspfX1lLmZpbGVJbmNsdWRlUmVhc29uVG9EaWFnbm9zdGljcz1SO2Z1bmN0aW9uIHEoUCxrKXt2YXIgWT1lLmlzU3RyaW5nKFApP1A6UC5maWxlTmFtZTtyZXR1cm4gaz9rKFkpOll9ZnVuY3Rpb24gTyhQLGssWSxVLGosSCxJLGwpe3ZhciBkPSEhUC5nZXRDb21waWxlck9wdGlvbnMoKS5saXN0RmlsZXNPbmx5LEQ9UC5nZXRDb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzKCkuc2xpY2UoKSxmZT1ELmxlbmd0aDtlLmFkZFJhbmdlKEQsUC5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyh2b2lkIDAsSCkpLEQubGVuZ3RoPT09ZmUmJihlLmFkZFJhbmdlKEQsUC5nZXRPcHRpb25zRGlhZ25vc3RpY3MoSCkpLGR8fChlLmFkZFJhbmdlKEQsUC5nZXRHbG9iYWxEaWFnbm9zdGljcyhIKSksRC5sZW5ndGg9PT1mZSYmZS5hZGRSYW5nZShELFAuZ2V0U2VtYW50aWNEaWFnbm9zdGljcyh2b2lkIDAsSCkpKSk7dmFyIGc9ZD97ZW1pdFNraXBwZWQ6ITAsZGlhZ25vc3RpY3M6ZS5lbXB0eUFycmF5fTpQLmVtaXQodm9pZCAwLGosSCxJLGwpLG5lPWcuZW1pdHRlZEZpbGVzLHVlPWcuZGlhZ25vc3RpY3M7ZS5hZGRSYW5nZShELHVlKTt2YXIgV2U9ZS5zb3J0QW5kRGVkdXBsaWNhdGVEaWFnbm9zdGljcyhEKTtpZihXZS5mb3JFYWNoKGspLFkpe3ZhciBGZT1QLmdldEN1cnJlbnREaXJlY3RvcnkoKTtlLmZvckVhY2gobmUsZnVuY3Rpb24oWil7dmFyIEJlPWUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChaLEZlKTtZKFwiVFNGSUxFOiBcIi5jb25jYXQoQmUpKX0pLEsoUCxZKX1yZXR1cm4gVSYmVShOKFdlKSxwKFdlKSkse2VtaXRSZXN1bHQ6ZyxkaWFnbm9zdGljczpXZX19ZS5lbWl0RmlsZXNBbmRSZXBvcnRFcnJvcnM9TztmdW5jdGlvbiB2ZShQLGssWSxVLGosSCxJLGwpe3ZhciBkPU8oUCxrLFksVSxqLEgsSSxsKSxEPWQuZW1pdFJlc3VsdCxmZT1kLmRpYWdub3N0aWNzO3JldHVybiBELmVtaXRTa2lwcGVkJiZmZS5sZW5ndGg+MD9lLkV4aXRTdGF0dXMuRGlhZ25vc3RpY3NQcmVzZW50X091dHB1dHNTa2lwcGVkOmZlLmxlbmd0aD4wP2UuRXhpdFN0YXR1cy5EaWFnbm9zdGljc1ByZXNlbnRfT3V0cHV0c0dlbmVyYXRlZDplLkV4aXRTdGF0dXMuU3VjY2Vzc31lLmVtaXRGaWxlc0FuZFJlcG9ydEVycm9yc0FuZEdldEV4aXRTdGF0dXM9dmUsZS5ub29wRmlsZVdhdGNoZXI9e2Nsb3NlOmUubm9vcH0sZS5yZXR1cm5Ob29wRmlsZVdhdGNoZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZS5ub29wRmlsZVdhdGNoZXJ9O2Z1bmN0aW9uIGVlKFAsayl7UD09PXZvaWQgMCYmKFA9ZS5zeXMpO3ZhciBZPWt8fFEoUCk7cmV0dXJue29uV2F0Y2hTdGF0dXNDaGFuZ2U6WSx3YXRjaEZpbGU6ZS5tYXliZUJpbmQoUCxQLndhdGNoRmlsZSl8fGUucmV0dXJuTm9vcEZpbGVXYXRjaGVyLHdhdGNoRGlyZWN0b3J5OmUubWF5YmVCaW5kKFAsUC53YXRjaERpcmVjdG9yeSl8fGUucmV0dXJuTm9vcEZpbGVXYXRjaGVyLHNldFRpbWVvdXQ6ZS5tYXliZUJpbmQoUCxQLnNldFRpbWVvdXQpfHxlLm5vb3AsY2xlYXJUaW1lb3V0OmUubWF5YmVCaW5kKFAsUC5jbGVhclRpbWVvdXQpfHxlLm5vb3B9fWUuY3JlYXRlV2F0Y2hIb3N0PWVlLGUuV2F0Y2hUeXBlPXtDb25maWdGaWxlOlwiQ29uZmlnIGZpbGVcIixFeHRlbmRlZENvbmZpZ0ZpbGU6XCJFeHRlbmRlZCBjb25maWcgZmlsZVwiLFNvdXJjZUZpbGU6XCJTb3VyY2UgZmlsZVwiLE1pc3NpbmdGaWxlOlwiTWlzc2luZyBmaWxlXCIsV2lsZGNhcmREaXJlY3Rvcnk6XCJXaWxkIGNhcmQgZGlyZWN0b3J5XCIsRmFpbGVkTG9va3VwTG9jYXRpb25zOlwiRmFpbGVkIExvb2t1cCBMb2NhdGlvbnNcIixUeXBlUm9vdHM6XCJUeXBlIHJvb3RzXCIsQ29uZmlnRmlsZU9mUmVmZXJlbmNlZFByb2plY3Q6XCJDb25maWcgZmlsZSBvZiByZWZlcmVuZWQgcHJvamVjdFwiLEV4dGVuZGVkQ29uZmlnT2ZSZWZlcmVuY2VkUHJvamVjdDpcIkV4dGVuZGVkIGNvbmZpZyBmaWxlIG9mIHJlZmVyZW5jZWQgcHJvamVjdFwiLFdpbGRjYXJkRGlyZWN0b3J5T2ZSZWZlcmVuY2VkUHJvamVjdDpcIldpbGQgY2FyZCBkaXJlY3Rvcnkgb2YgcmVmZXJlbmNlZCBwcm9qZWN0XCIsUGFja2FnZUpzb246XCJwYWNrYWdlLmpzb24gZmlsZVwifTtmdW5jdGlvbiBoZShQLGspe3ZhciBZPVAudHJhY2U/ay5leHRlbmRlZERpYWdub3N0aWNzP2UuV2F0Y2hMb2dMZXZlbC5WZXJib3NlOmsuZGlhZ25vc3RpY3M/ZS5XYXRjaExvZ0xldmVsLlRyaWdnZXJPbmx5OmUuV2F0Y2hMb2dMZXZlbC5Ob25lOmUuV2F0Y2hMb2dMZXZlbC5Ob25lLFU9WSE9PWUuV2F0Y2hMb2dMZXZlbC5Ob25lP2Z1bmN0aW9uKEgpe3JldHVybiBQLnRyYWNlKEgpfTplLm5vb3Asaj1lLmdldFdhdGNoRmFjdG9yeShQLFksVSk7cmV0dXJuIGoud3JpdGVMb2c9VSxqfWUuY3JlYXRlV2F0Y2hGYWN0b3J5PWhlO2Z1bmN0aW9uIEYoUCxrLFkpe1k9PT12b2lkIDAmJihZPVApO3ZhciBVPVAudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpLGo9ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIFAuZ2V0TmV3TGluZSgpfSk7cmV0dXJue2dldFNvdXJjZUZpbGU6ZnVuY3Rpb24oSSxsLGQpe3ZhciBEO3RyeXtlLnBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVJT1JlYWRcIiksRD1QLnJlYWRGaWxlKEksaygpLmNoYXJzZXQpLGUucGVyZm9ybWFuY2UubWFyayhcImFmdGVySU9SZWFkXCIpLGUucGVyZm9ybWFuY2UubWVhc3VyZShcIkkvTyBSZWFkXCIsXCJiZWZvcmVJT1JlYWRcIixcImFmdGVySU9SZWFkXCIpfWNhdGNoKGZlKXtkJiZkKGZlLm1lc3NhZ2UpLEQ9XCJcIn1yZXR1cm4gRCE9PXZvaWQgMD9lLmNyZWF0ZVNvdXJjZUZpbGUoSSxELGwpOnZvaWQgMH0sZ2V0RGVmYXVsdExpYkxvY2F0aW9uOmUubWF5YmVCaW5kKFAsUC5nZXREZWZhdWx0TGliTG9jYXRpb24pLGdldERlZmF1bHRMaWJGaWxlTmFtZTpmdW5jdGlvbihJKXtyZXR1cm4gUC5nZXREZWZhdWx0TGliRmlsZU5hbWUoSSl9LHdyaXRlRmlsZTpILGdldEN1cnJlbnREaXJlY3Rvcnk6ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIFAuZ2V0Q3VycmVudERpcmVjdG9yeSgpfSksdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczpmdW5jdGlvbigpe3JldHVybiBVfSxnZXRDYW5vbmljYWxGaWxlTmFtZTplLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKFUpLGdldE5ld0xpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXROZXdMaW5lQ2hhcmFjdGVyKGsoKSxqKX0sZmlsZUV4aXN0czpmdW5jdGlvbihJKXtyZXR1cm4gUC5maWxlRXhpc3RzKEkpfSxyZWFkRmlsZTpmdW5jdGlvbihJKXtyZXR1cm4gUC5yZWFkRmlsZShJKX0sdHJhY2U6ZS5tYXliZUJpbmQoUCxQLnRyYWNlKSxkaXJlY3RvcnlFeGlzdHM6ZS5tYXliZUJpbmQoWSxZLmRpcmVjdG9yeUV4aXN0cyksZ2V0RGlyZWN0b3JpZXM6ZS5tYXliZUJpbmQoWSxZLmdldERpcmVjdG9yaWVzKSxyZWFscGF0aDplLm1heWJlQmluZChQLFAucmVhbHBhdGgpLGdldEVudmlyb25tZW50VmFyaWFibGU6ZS5tYXliZUJpbmQoUCxQLmdldEVudmlyb25tZW50VmFyaWFibGUpfHxmdW5jdGlvbigpe3JldHVyblwiXCJ9LGNyZWF0ZUhhc2g6ZS5tYXliZUJpbmQoUCxQLmNyZWF0ZUhhc2gpLHJlYWREaXJlY3Rvcnk6ZS5tYXliZUJpbmQoUCxQLnJlYWREaXJlY3RvcnkpLGRpc2FibGVVc2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlOlAuZGlzYWJsZVVzZUZpbGVWZXJzaW9uQXNTaWduYXR1cmUsc3RvcmVGaWxlc0NoYW5naW5nU2lnbmF0dXJlRHVyaW5nRW1pdDpQLnN0b3JlRmlsZXNDaGFuZ2luZ1NpZ25hdHVyZUR1cmluZ0VtaXR9O2Z1bmN0aW9uIEgoSSxsLGQsRCl7dHJ5e2UucGVyZm9ybWFuY2UubWFyayhcImJlZm9yZUlPV3JpdGVcIiksZS53cml0ZUZpbGVFbnN1cmluZ0RpcmVjdG9yaWVzKEksbCxkLGZ1bmN0aW9uKGZlLGcsbmUpe3JldHVybiBQLndyaXRlRmlsZShmZSxnLG5lKX0sZnVuY3Rpb24oZmUpe3JldHVybiBQLmNyZWF0ZURpcmVjdG9yeShmZSl9LGZ1bmN0aW9uKGZlKXtyZXR1cm4gUC5kaXJlY3RvcnlFeGlzdHMoZmUpfSksZS5wZXJmb3JtYW5jZS5tYXJrKFwiYWZ0ZXJJT1dyaXRlXCIpLGUucGVyZm9ybWFuY2UubWVhc3VyZShcIkkvTyBXcml0ZVwiLFwiYmVmb3JlSU9Xcml0ZVwiLFwiYWZ0ZXJJT1dyaXRlXCIpfWNhdGNoKGZlKXtEJiZEKGZlLm1lc3NhZ2UpfX19ZS5jcmVhdGVDb21waWxlckhvc3RGcm9tUHJvZ3JhbUhvc3Q9RjtmdW5jdGlvbiB4KFAsayl7dmFyIFk9UC5nZXRTb3VyY2VGaWxlLFU9ZS5tYXliZUJpbmQoayxrLmNyZWF0ZUhhc2gpfHxlLmdlbmVyYXRlRGpiMkhhc2g7UC5nZXRTb3VyY2VGaWxlPWZ1bmN0aW9uKCl7Zm9yKHZhciBqPVtdLEg9MDtIPGFyZ3VtZW50cy5sZW5ndGg7SCsrKWpbSF09YXJndW1lbnRzW0hdO3ZhciBJPVkuY2FsbC5hcHBseShZLFZlKFtQXSxqLCExKSk7cmV0dXJuIEkmJihJLnZlcnNpb249VShJLnRleHQpKSxJfX1lLnNldEdldFNvdXJjZUZpbGVBc0hhc2hWZXJzaW9uZWQ9eDtmdW5jdGlvbiBYKFAsayl7dmFyIFk9ZS5tZW1vaXplKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0RGlyZWN0b3J5UGF0aChlLm5vcm1hbGl6ZVBhdGgoUC5nZXRFeGVjdXRpbmdGaWxlUGF0aCgpKSl9KTtyZXR1cm57dXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczpmdW5jdGlvbigpe3JldHVybiBQLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXN9LGdldE5ld0xpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gUC5uZXdMaW5lfSxnZXRDdXJyZW50RGlyZWN0b3J5OmUubWVtb2l6ZShmdW5jdGlvbigpe3JldHVybiBQLmdldEN1cnJlbnREaXJlY3RvcnkoKX0pLGdldERlZmF1bHRMaWJMb2NhdGlvbjpZLGdldERlZmF1bHRMaWJGaWxlTmFtZTpmdW5jdGlvbihVKXtyZXR1cm4gZS5jb21iaW5lUGF0aHMoWSgpLGUuZ2V0RGVmYXVsdExpYkZpbGVOYW1lKFUpKX0sZmlsZUV4aXN0czpmdW5jdGlvbihVKXtyZXR1cm4gUC5maWxlRXhpc3RzKFUpfSxyZWFkRmlsZTpmdW5jdGlvbihVLGope3JldHVybiBQLnJlYWRGaWxlKFUsail9LGRpcmVjdG9yeUV4aXN0czpmdW5jdGlvbihVKXtyZXR1cm4gUC5kaXJlY3RvcnlFeGlzdHMoVSl9LGdldERpcmVjdG9yaWVzOmZ1bmN0aW9uKFUpe3JldHVybiBQLmdldERpcmVjdG9yaWVzKFUpfSxyZWFkRGlyZWN0b3J5OmZ1bmN0aW9uKFUsaixILEksbCl7cmV0dXJuIFAucmVhZERpcmVjdG9yeShVLGosSCxJLGwpfSxyZWFscGF0aDplLm1heWJlQmluZChQLFAucmVhbHBhdGgpLGdldEVudmlyb25tZW50VmFyaWFibGU6ZS5tYXliZUJpbmQoUCxQLmdldEVudmlyb25tZW50VmFyaWFibGUpLHRyYWNlOmZ1bmN0aW9uKFUpe3JldHVybiBQLndyaXRlKFUrUC5uZXdMaW5lKX0sY3JlYXRlRGlyZWN0b3J5OmZ1bmN0aW9uKFUpe3JldHVybiBQLmNyZWF0ZURpcmVjdG9yeShVKX0sd3JpdGVGaWxlOmZ1bmN0aW9uKFUsaixIKXtyZXR1cm4gUC53cml0ZUZpbGUoVSxqLEgpfSxjcmVhdGVIYXNoOmUubWF5YmVCaW5kKFAsUC5jcmVhdGVIYXNoKSxjcmVhdGVQcm9ncmFtOmt8fGUuY3JlYXRlRW1pdEFuZFNlbWFudGljRGlhZ25vc3RpY3NCdWlsZGVyUHJvZ3JhbSxkaXNhYmxlVXNlRmlsZVZlcnNpb25Bc1NpZ25hdHVyZTpQLmRpc2FibGVVc2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlLHN0b3JlRmlsZXNDaGFuZ2luZ1NpZ25hdHVyZUR1cmluZ0VtaXQ6UC5zdG9yZUZpbGVzQ2hhbmdpbmdTaWduYXR1cmVEdXJpbmdFbWl0fX1lLmNyZWF0ZVByb2dyYW1Ib3N0PVg7ZnVuY3Rpb24gJChQLGssWSxVKXtQPT09dm9pZCAwJiYoUD1lLnN5cyk7dmFyIGo9ZnVuY3Rpb24oSSl7cmV0dXJuIFAud3JpdGUoSStQLm5ld0xpbmUpfSxIPVgoUCxrKTtyZXR1cm4gZS5jb3B5UHJvcGVydGllcyhILGVlKFAsVSkpLEguYWZ0ZXJQcm9ncmFtQ3JlYXRlPWZ1bmN0aW9uKEkpe3ZhciBsPUkuZ2V0Q29tcGlsZXJPcHRpb25zKCksZD1lLmdldE5ld0xpbmVDaGFyYWN0ZXIobCxmdW5jdGlvbigpe3JldHVybiBQLm5ld0xpbmV9KTtPKEksWSxqLGZ1bmN0aW9uKEQpe3JldHVybiBILm9uV2F0Y2hTdGF0dXNDaGFuZ2UoZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMobShEKSxEKSxkLGwsRCl9KX0sSH1mdW5jdGlvbiBBKFAsayxZKXtrKFkpLFAuZXhpdChlLkV4aXRTdGF0dXMuRGlhZ25vc3RpY3NQcmVzZW50X091dHB1dHNTa2lwcGVkKX1mdW5jdGlvbiB5KFApe3ZhciBrPVAuY29uZmlnRmlsZU5hbWUsWT1QLm9wdGlvbnNUb0V4dGVuZCxVPVAud2F0Y2hPcHRpb25zVG9FeHRlbmQsaj1QLmV4dHJhRmlsZUV4dGVuc2lvbnMsSD1QLnN5c3RlbSxJPVAuY3JlYXRlUHJvZ3JhbSxsPVAucmVwb3J0RGlhZ25vc3RpYyxkPVAucmVwb3J0V2F0Y2hTdGF0dXMsRD1sfHxDKEgpLGZlPSQoSCxJLEQsZCk7cmV0dXJuIGZlLm9uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljPWZ1bmN0aW9uKGcpe3JldHVybiBBKEgsRCxnKX0sZmUuY29uZmlnRmlsZU5hbWU9ayxmZS5vcHRpb25zVG9FeHRlbmQ9WSxmZS53YXRjaE9wdGlvbnNUb0V4dGVuZD1VLGZlLmV4dHJhRmlsZUV4dGVuc2lvbnM9aixmZX1lLmNyZWF0ZVdhdGNoQ29tcGlsZXJIb3N0T2ZDb25maWdGaWxlPXk7ZnVuY3Rpb24gVihQKXt2YXIgaz1QLnJvb3RGaWxlcyxZPVAub3B0aW9ucyxVPVAud2F0Y2hPcHRpb25zLGo9UC5wcm9qZWN0UmVmZXJlbmNlcyxIPVAuc3lzdGVtLEk9UC5jcmVhdGVQcm9ncmFtLGw9UC5yZXBvcnREaWFnbm9zdGljLGQ9UC5yZXBvcnRXYXRjaFN0YXR1cyxEPSQoSCxJLGx8fEMoSCksZCk7cmV0dXJuIEQucm9vdEZpbGVzPWssRC5vcHRpb25zPVksRC53YXRjaE9wdGlvbnM9VSxELnByb2plY3RSZWZlcmVuY2VzPWosRH1lLmNyZWF0ZVdhdGNoQ29tcGlsZXJIb3N0T2ZGaWxlc0FuZENvbXBpbGVyT3B0aW9ucz1WO2Z1bmN0aW9uIEwoUCl7dmFyIGs9UC5zeXN0ZW18fGUuc3lzLFk9UC5ob3N0fHwoUC5ob3N0PWUuY3JlYXRlSW5jcmVtZW50YWxDb21waWxlckhvc3QoUC5vcHRpb25zLGspKSxVPWUuY3JlYXRlSW5jcmVtZW50YWxQcm9ncmFtKFApLGo9dmUoVSxQLnJlcG9ydERpYWdub3N0aWN8fEMoayksZnVuY3Rpb24oSCl7cmV0dXJuIFkudHJhY2UmJlkudHJhY2UoSCl9LFAucmVwb3J0RXJyb3JTdW1tYXJ5fHxQLm9wdGlvbnMucHJldHR5P2Z1bmN0aW9uKEgsSSl7cmV0dXJuIGsud3JpdGUob2UoSCxJLGsubmV3TGluZSxZKSl9OnZvaWQgMCk7cmV0dXJuIFAuYWZ0ZXJQcm9ncmFtRW1pdEFuZERpYWdub3N0aWNzJiZQLmFmdGVyUHJvZ3JhbUVtaXRBbmREaWFnbm9zdGljcyhVKSxqfWUucGVyZm9ybUluY3JlbWVudGFsQ29tcGlsYXRpb249TH0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoUSxsZSl7aWYoIWUub3V0RmlsZShRKSl7dmFyIE49ZS5nZXRUc0J1aWxkSW5mb0VtaXRPdXRwdXRGaWxlUGF0aChRKTtpZighIU4pe3ZhciBwPWxlLnJlYWRGaWxlKE4pO2lmKCEhcCl7dmFyIG09ZS5nZXRCdWlsZEluZm8ocCk7aWYobS52ZXJzaW9uPT09ZS52ZXJzaW9uJiYhIW0ucHJvZ3JhbSlyZXR1cm4gZS5jcmVhdGVCdWlsZFByb2dyYW1Vc2luZ1Byb2dyYW1CdWlsZEluZm8obS5wcm9ncmFtLE4sbGUpfX19fWUucmVhZEJ1aWxkZXJQcm9ncmFtPWE7ZnVuY3Rpb24gQyhRLGxlKXtsZT09PXZvaWQgMCYmKGxlPWUuc3lzKTt2YXIgTj1lLmNyZWF0ZUNvbXBpbGVySG9zdFdvcmtlcihRLHZvaWQgMCxsZSk7cmV0dXJuIE4uY3JlYXRlSGFzaD1lLm1heWJlQmluZChsZSxsZS5jcmVhdGVIYXNoKSxOLmRpc2FibGVVc2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlPWxlLmRpc2FibGVVc2VGaWxlVmVyc2lvbkFzU2lnbmF0dXJlLE4uc3RvcmVGaWxlc0NoYW5naW5nU2lnbmF0dXJlRHVyaW5nRW1pdD1sZS5zdG9yZUZpbGVzQ2hhbmdpbmdTaWduYXR1cmVEdXJpbmdFbWl0LGUuc2V0R2V0U291cmNlRmlsZUFzSGFzaFZlcnNpb25lZChOLGxlKSxlLmNoYW5nZUNvbXBpbGVySG9zdExpa2VUb1VzZUNhY2hlKE4sZnVuY3Rpb24ocCl7cmV0dXJuIGUudG9QYXRoKHAsTi5nZXRDdXJyZW50RGlyZWN0b3J5KCksTi5nZXRDYW5vbmljYWxGaWxlTmFtZSl9KSxOfWUuY3JlYXRlSW5jcmVtZW50YWxDb21waWxlckhvc3Q9QztmdW5jdGlvbiB3KFEpe3ZhciBsZT1RLnJvb3ROYW1lcyxOPVEub3B0aW9ucyxwPVEuY29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyxtPVEucHJvamVjdFJlZmVyZW5jZXMsRz1RLmhvc3Qsb2U9US5jcmVhdGVQcm9ncmFtO0c9R3x8QyhOKSxvZT1vZXx8ZS5jcmVhdGVFbWl0QW5kU2VtYW50aWNEaWFnbm9zdGljc0J1aWxkZXJQcm9ncmFtO3ZhciBmPWEoTixHKTtyZXR1cm4gb2UobGUsTixHLGYscCxtKX1lLmNyZWF0ZUluY3JlbWVudGFsUHJvZ3JhbT13O2Z1bmN0aW9uIEIoUSxsZSxOLHAsbSxHLG9lLGYpe3JldHVybiBlLmlzQXJyYXkoUSk/ZS5jcmVhdGVXYXRjaENvbXBpbGVySG9zdE9mRmlsZXNBbmRDb21waWxlck9wdGlvbnMoe3Jvb3RGaWxlczpRLG9wdGlvbnM6bGUsd2F0Y2hPcHRpb25zOmYscHJvamVjdFJlZmVyZW5jZXM6b2Usc3lzdGVtOk4sY3JlYXRlUHJvZ3JhbTpwLHJlcG9ydERpYWdub3N0aWM6bSxyZXBvcnRXYXRjaFN0YXR1czpHfSk6ZS5jcmVhdGVXYXRjaENvbXBpbGVySG9zdE9mQ29uZmlnRmlsZSh7Y29uZmlnRmlsZU5hbWU6USxvcHRpb25zVG9FeHRlbmQ6bGUsd2F0Y2hPcHRpb25zVG9FeHRlbmQ6b2UsZXh0cmFGaWxlRXh0ZW5zaW9uczpmLHN5c3RlbTpOLGNyZWF0ZVByb2dyYW06cCxyZXBvcnREaWFnbm9zdGljOm0scmVwb3J0V2F0Y2hTdGF0dXM6R30pfWUuY3JlYXRlV2F0Y2hDb21waWxlckhvc3Q9QjtmdW5jdGlvbiBFKFEpe3ZhciBsZSxOLHAsbSxHLG9lLGYsVCxLLGI9US5leHRlbmRlZENvbmZpZ0NhY2hlLHNlPSExLEo9ITEsaWU9bmV3IGUuTWFwLFIscT0hMSxPPVEudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpLHZlPVEuZ2V0Q3VycmVudERpcmVjdG9yeSgpLGVlPVEuY29uZmlnRmlsZU5hbWUsaGU9US5vcHRpb25zVG9FeHRlbmQsRj1oZT09PXZvaWQgMD97fTpoZSx4PVEud2F0Y2hPcHRpb25zVG9FeHRlbmQsWD1RLmV4dHJhRmlsZUV4dGVuc2lvbnMsJD1RLmNyZWF0ZVByb2dyYW0sQT1RLnJvb3RGaWxlcyx5PVEub3B0aW9ucyxWPVEud2F0Y2hPcHRpb25zLEw9US5wcm9qZWN0UmVmZXJlbmNlcyxQLGssWT0hMSxVPSExLGo9ZWU9PT12b2lkIDA/dm9pZCAwOmUuY3JlYXRlQ2FjaGVkRGlyZWN0b3J5U3RydWN0dXJlSG9zdChRLHZlLE8pLEg9anx8USxJPWUucGFyc2VDb25maWdIb3N0RnJvbUNvbXBpbGVySG9zdExpa2UoUSxIKSxsPUllKCk7ZWUmJlEuY29uZmlnRmlsZVBhcnNpbmdSZXN1bHQmJihVcihRLmNvbmZpZ0ZpbGVQYXJzaW5nUmVzdWx0KSxsPUllKCkpLFllKGUuRGlhZ25vc3RpY3MuU3RhcnRpbmdfY29tcGlsYXRpb25faW5fd2F0Y2hfbW9kZSksZWUmJiFRLmNvbmZpZ0ZpbGVQYXJzaW5nUmVzdWx0JiYobD1lLmdldE5ld0xpbmVDaGFyYWN0ZXIoRixmdW5jdGlvbigpe3JldHVybiBRLmdldE5ld0xpbmUoKX0pLGUuRGVidWcuYXNzZXJ0KCFBKSx3cigpLGw9SWUoKSk7dmFyIGQ9ZS5jcmVhdGVXYXRjaEZhY3RvcnkoUSx5KSxEPWQud2F0Y2hGaWxlLGZlPWQud2F0Y2hEaXJlY3RvcnksZz1kLndyaXRlTG9nLG5lPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoTyk7ZyhcIkN1cnJlbnQgZGlyZWN0b3J5OiBcIi5jb25jYXQodmUsXCIgQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczogXCIpLmNvbmNhdChPKSk7dmFyIHVlO2VlJiYodWU9RChlZSxiZSxlLlBvbGxpbmdJbnRlcnZhbC5IaWdoLFYsZS5XYXRjaFR5cGUuQ29uZmlnRmlsZSkpO3ZhciBXZT1lLmNyZWF0ZUNvbXBpbGVySG9zdEZyb21Qcm9ncmFtSG9zdChRLGZ1bmN0aW9uKCl7cmV0dXJuIHl9LEgpO2Uuc2V0R2V0U291cmNlRmlsZUFzSGFzaFZlcnNpb25lZChXZSxRKTt2YXIgRmU9V2UuZ2V0U291cmNlRmlsZTtXZS5nZXRTb3VyY2VGaWxlPWZ1bmN0aW9uKHBpKXtmb3IodmFyIGFlPVtdLFhlPTE7WGU8YXJndW1lbnRzLmxlbmd0aDtYZSsrKWFlW1hlLTFdPWFyZ3VtZW50c1tYZV07cmV0dXJuIEFlLmFwcGx5KHZvaWQgMCxWZShbcGksX2UocGkpXSxhZSwhMSkpfSxXZS5nZXRTb3VyY2VGaWxlQnlQYXRoPUFlLFdlLmdldE5ld0xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbH0sV2UuZmlsZUV4aXN0cz15ZSxXZS5vblJlbGVhc2VPbGRTb3VyY2VGaWxlPUNyLFdlLm9uUmVsZWFzZVBhcnNlZENvbW1hbmRMaW5lPXBlLFdlLnRvUGF0aD1fZSxXZS5nZXRDb21waWxhdGlvblNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LFdlLnVzZVNvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0PWUubWF5YmVCaW5kKFEsUS51c2VTb3VyY2VPZlByb2plY3RSZWZlcmVuY2VSZWRpcmVjdCksV2Uud2F0Y2hEaXJlY3RvcnlPZkZhaWxlZExvb2t1cExvY2F0aW9uPWZ1bmN0aW9uKHBpLGFlLFhlKXtyZXR1cm4gZmUocGksYWUsWGUsVixlLldhdGNoVHlwZS5GYWlsZWRMb29rdXBMb2NhdGlvbnMpfSxXZS53YXRjaFR5cGVSb290c0RpcmVjdG9yeT1mdW5jdGlvbihwaSxhZSxYZSl7cmV0dXJuIGZlKHBpLGFlLFhlLFYsZS5XYXRjaFR5cGUuVHlwZVJvb3RzKX0sV2UuZ2V0Q2FjaGVkRGlyZWN0b3J5U3RydWN0dXJlSG9zdD1mdW5jdGlvbigpe3JldHVybiBqfSxXZS5zY2hlZHVsZUludmFsaWRhdGVSZXNvbHV0aW9uc09mRmFpbGVkTG9va3VwTG9jYXRpb25zPU5lLFdlLm9uSW52YWxpZGF0ZWRSZXNvbHV0aW9uPWxyLFdlLm9uQ2hhbmdlZEF1dG9tYXRpY1R5cGVEaXJlY3RpdmVOYW1lcz1scixXZS5maWxlSXNPcGVuPWUucmV0dXJuRmFsc2UsV2UuZ2V0Q3VycmVudFByb2dyYW09emUsV2Uud3JpdGVMb2c9ZyxXZS5nZXRQYXJzZWRDb21tYW5kTGluZT1paTt2YXIgWj1lLmNyZWF0ZVJlc29sdXRpb25DYWNoZShXZSxlZT9lLmdldERpcmVjdG9yeVBhdGgoZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGVlLHZlKSk6dmUsITEpO1dlLnJlc29sdmVNb2R1bGVOYW1lcz1RLnJlc29sdmVNb2R1bGVOYW1lcz9mdW5jdGlvbigpe2Zvcih2YXIgcGk9W10sYWU9MDthZTxhcmd1bWVudHMubGVuZ3RoO2FlKyspcGlbYWVdPWFyZ3VtZW50c1thZV07cmV0dXJuIFEucmVzb2x2ZU1vZHVsZU5hbWVzLmFwcGx5KFEscGkpfTpmdW5jdGlvbihwaSxhZSxYZSxKcix0aSxaZSl7cmV0dXJuIFoucmVzb2x2ZU1vZHVsZU5hbWVzKHBpLGFlLFhlLEpyLFplKX0sV2UucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzPVEucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzP2Z1bmN0aW9uKCl7Zm9yKHZhciBwaT1bXSxhZT0wO2FlPGFyZ3VtZW50cy5sZW5ndGg7YWUrKylwaVthZV09YXJndW1lbnRzW2FlXTtyZXR1cm4gUS5yZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMuYXBwbHkoUSxwaSl9OmZ1bmN0aW9uKHBpLGFlLFhlLEpyLHRpKXtyZXR1cm4gWi5yZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMocGksYWUsWGUsdGkpfTt2YXIgQmU9ISFRLnJlc29sdmVNb2R1bGVOYW1lc3x8ISFRLnJlc29sdmVUeXBlUmVmZXJlbmNlRGlyZWN0aXZlcztyZXR1cm4gbGU9YSh5LFdlKSxFZSgpLEdpKCksZWUmJlp0KF9lKGVlKSx5LFYsZS5XYXRjaFR5cGUuRXh0ZW5kZWRDb25maWdGaWxlKSxlZT97Z2V0Q3VycmVudFByb2dyYW06UmUsZ2V0UHJvZ3JhbTp1cixjbG9zZTpnZX06e2dldEN1cnJlbnRQcm9ncmFtOlJlLGdldFByb2dyYW06dXIsdXBkYXRlUm9vdEZpbGVOYW1lczpycixjbG9zZTpnZX07ZnVuY3Rpb24gZ2UoKXtFcigpLFouY2xlYXIoKSxlLmNsZWFyTWFwKGllLGZ1bmN0aW9uKHBpKXtwaSYmcGkuZmlsZVdhdGNoZXImJihwaS5maWxlV2F0Y2hlci5jbG9zZSgpLHBpLmZpbGVXYXRjaGVyPXZvaWQgMCl9KSx1ZSYmKHVlLmNsb3NlKCksdWU9dm9pZCAwKSxiPT1udWxsfHxiLmNsZWFyKCksYj12b2lkIDAsSyYmKGUuY2xlYXJNYXAoSyxlLmNsb3NlRmlsZVdhdGNoZXJPZiksSz12b2lkIDApLEcmJihlLmNsZWFyTWFwKEcsZS5jbG9zZUZpbGVXYXRjaGVyT2YpLEc9dm9pZCAwKSxwJiYoZS5jbGVhck1hcChwLGUuY2xvc2VGaWxlV2F0Y2hlcikscD12b2lkIDApLFQmJihlLmNsZWFyTWFwKFQsZnVuY3Rpb24ocGkpe3ZhciBhZTsoYWU9cGkud2F0Y2hlcik9PT1udWxsfHxhZT09PXZvaWQgMHx8YWUuY2xvc2UoKSxwaS53YXRjaGVyPXZvaWQgMCxwaS53YXRjaGVkRGlyZWN0b3JpZXMmJmUuY2xlYXJNYXAocGkud2F0Y2hlZERpcmVjdG9yaWVzLGUuY2xvc2VGaWxlV2F0Y2hlck9mKSxwaS53YXRjaGVkRGlyZWN0b3JpZXM9dm9pZCAwfSksVD12b2lkIDApLG0mJihlLmNsZWFyTWFwKG0sZS5jbG9zZUZpbGVXYXRjaGVyKSxtPXZvaWQgMCl9ZnVuY3Rpb24gUmUoKXtyZXR1cm4gbGV9ZnVuY3Rpb24gemUoKXtyZXR1cm4gbGUmJmxlLmdldFByb2dyYW1PclVuZGVmaW5lZCgpfWZ1bmN0aW9uIEVlKCl7ZyhcIlN5bmNocm9uaXppbmcgcHJvZ3JhbVwiKSxFcigpO3ZhciBwaT1SZSgpO3EmJihsPUllKCkscGkmJihzZXx8ZS5jaGFuZ2VzQWZmZWN0TW9kdWxlUmVzb2x1dGlvbihwaS5nZXRDb21waWxlck9wdGlvbnMoKSx5KSkmJlouY2xlYXIoKSk7dmFyIGFlPVouY3JlYXRlSGFzSW52YWxpZGF0ZWRSZXNvbHV0aW9uKEJlfHxzZSk7cmV0dXJuIGUuaXNQcm9ncmFtVXB0b0RhdGUoemUoKSxBLHksaXIseWUsYWUsQnIsaWksTCk/VSYmKEomJlllKGUuRGlhZ25vc3RpY3MuRmlsZV9jaGFuZ2VfZGV0ZWN0ZWRfU3RhcnRpbmdfaW5jcmVtZW50YWxfY29tcGlsYXRpb24pLGxlPSQodm9pZCAwLHZvaWQgMCxXZSxsZSxrLEwpLFU9ITEpOihKJiZZZShlLkRpYWdub3N0aWNzLkZpbGVfY2hhbmdlX2RldGVjdGVkX1N0YXJ0aW5nX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uKSxIZShhZSkpLHNlPSExLEo9ITEsUS5hZnRlclByb2dyYW1DcmVhdGUmJnBpIT09bGUmJlEuYWZ0ZXJQcm9ncmFtQ3JlYXRlKGxlKSxsZX1mdW5jdGlvbiBIZShwaSl7ZyhcIkNyZWF0aW5nUHJvZ3JhbVdpdGg6OlwiKSxnKFwiICByb290czogXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KEEpKSksZyhcIiAgb3B0aW9uczogXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHkpKSksTCYmZyhcIiAgcHJvamVjdFJlZmVyZW5jZXM6IFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeShMKSkpO3ZhciBhZT1xfHwhemUoKTtxPSExLFU9ITEsWi5zdGFydENhY2hpbmdQZXJEaXJlY3RvcnlSZXNvbHV0aW9uKCksV2UuaGFzSW52YWxpZGF0ZWRSZXNvbHV0aW9uPXBpLFdlLmhhc0NoYW5nZWRBdXRvbWF0aWNUeXBlRGlyZWN0aXZlTmFtZXM9QnIsbGU9JChBLHksV2UsbGUsayxMKTt2YXIgWGU9ZS5tYXAoWi5nZXRNb2R1bGVSZXNvbHV0aW9uQ2FjaGUoKS5nZXRQYWNrYWdlSnNvbkluZm9DYWNoZSgpLmVudHJpZXMoKSxmdW5jdGlvbihTcil7dmFyIHpyPVNyWzBdLFdyPVNyWzFdO3JldHVybltXZS5yZWFscGF0aD9fZShXZS5yZWFscGF0aCh6cikpOnpyLFdyXX0pO2lmKFouZmluaXNoQ2FjaGluZ1BlckRpcmVjdG9yeVJlc29sdXRpb24oKSxlLnVwZGF0ZU1pc3NpbmdGaWxlUGF0aHNXYXRjaChsZS5nZXRQcm9ncmFtKCkscHx8KHA9bmV3IGUuTWFwKSxEaSksZS51cGRhdGVQYWNrYWdlSnNvbldhdGNoKFhlLG18fChtPW5ldyBlLk1hcCksd2kpLGFlJiZaLnVwZGF0ZVR5cGVSb290c1dhdGNoKCksUil7Zm9yKHZhciBKcj0wLHRpPVI7SnI8dGkubGVuZ3RoO0pyKyspe3ZhciBaZT10aVtKcl07cC5oYXMoWmUpfHxpZS5kZWxldGUoWmUpfVI9dm9pZCAwfX1mdW5jdGlvbiBycihwaSl7ZS5EZWJ1Zy5hc3NlcnQoIWVlLFwiQ2Fubm90IHVwZGF0ZSByb290IGZpbGUgbmFtZXMgd2l0aCBjb25maWcgZmlsZSB3YXRjaCBtb2RlXCIpLEE9cGksbHIoKX1mdW5jdGlvbiBJZSgpe3JldHVybiBlLmdldE5ld0xpbmVDaGFyYWN0ZXIoeXx8RixmdW5jdGlvbigpe3JldHVybiBRLmdldE5ld0xpbmUoKX0pfWZ1bmN0aW9uIF9lKHBpKXtyZXR1cm4gZS50b1BhdGgocGksdmUsbmUpfWZ1bmN0aW9uIHdlKHBpKXtyZXR1cm4gdHlwZW9mIHBpPT1cImJvb2xlYW5cIn1mdW5jdGlvbiBkZShwaSl7cmV0dXJuIHR5cGVvZiBwaS52ZXJzaW9uPT1cImJvb2xlYW5cIn1mdW5jdGlvbiB5ZShwaSl7dmFyIGFlPV9lKHBpKTtyZXR1cm4gd2UoaWUuZ2V0KGFlKSk/ITE6SC5maWxlRXhpc3RzKHBpKX1mdW5jdGlvbiBBZShwaSxhZSxYZSxKcix0aSl7dmFyIFplPWllLmdldChhZSk7aWYoIXdlKFplKSl7aWYoWmU9PT12b2lkIDB8fHRpfHxkZShaZSkpe3ZhciBTcj1GZShwaSxYZSxKcik7aWYoWmUpU3I/KFplLnNvdXJjZUZpbGU9U3IsWmUudmVyc2lvbj1Tci52ZXJzaW9uLFplLmZpbGVXYXRjaGVyfHwoWmUuZmlsZVdhdGNoZXI9b3IoYWUscGkscXIsZS5Qb2xsaW5nSW50ZXJ2YWwuTG93LFYsZS5XYXRjaFR5cGUuU291cmNlRmlsZSkpKTooWmUuZmlsZVdhdGNoZXImJlplLmZpbGVXYXRjaGVyLmNsb3NlKCksaWUuc2V0KGFlLCExKSk7ZWxzZSBpZihTcil7dmFyIHpyPW9yKGFlLHBpLHFyLGUuUG9sbGluZ0ludGVydmFsLkxvdyxWLGUuV2F0Y2hUeXBlLlNvdXJjZUZpbGUpO2llLnNldChhZSx7c291cmNlRmlsZTpTcix2ZXJzaW9uOlNyLnZlcnNpb24sZmlsZVdhdGNoZXI6enJ9KX1lbHNlIGllLnNldChhZSwhMSk7cmV0dXJuIFNyJiYoU3IuaW1wbGllZE5vZGVGb3JtYXQ9ZS5nZXRJbXBsaWVkTm9kZUZvcm1hdEZvckZpbGUoYWUsWi5nZXRNb2R1bGVSZXNvbHV0aW9uQ2FjaGUoKS5nZXRQYWNrYWdlSnNvbkluZm9DYWNoZSgpLFdlLFdlLmdldENvbXBpbGF0aW9uU2V0dGluZ3MoKSkpLFNyfXJldHVybiBaZS5zb3VyY2VGaWxlfX1mdW5jdGlvbiBlcihwaSl7dmFyIGFlPWllLmdldChwaSk7YWUhPT12b2lkIDAmJih3ZShhZSk/aWUuc2V0KHBpLHt2ZXJzaW9uOiExfSk6YWUudmVyc2lvbj0hMSl9ZnVuY3Rpb24gaXIocGkpe3ZhciBhZT1pZS5nZXQocGkpO3JldHVybiFhZXx8IWFlLnZlcnNpb24/dm9pZCAwOmFlLnZlcnNpb259ZnVuY3Rpb24gQ3IocGksYWUsWGUpe3ZhciBKcj1pZS5nZXQocGkucmVzb2x2ZWRQYXRoKTtKciE9PXZvaWQgMCYmKHdlKEpyKT8oUnx8KFI9W10pKS5wdXNoKHBpLnBhdGgpOkpyLnNvdXJjZUZpbGU9PT1waSYmKEpyLmZpbGVXYXRjaGVyJiZKci5maWxlV2F0Y2hlci5jbG9zZSgpLGllLmRlbGV0ZShwaS5yZXNvbHZlZFBhdGgpLFhlfHxaLnJlbW92ZVJlc29sdXRpb25zT2ZGaWxlKHBpLnBhdGgpKSl9ZnVuY3Rpb24gWWUocGkpe1Eub25XYXRjaFN0YXR1c0NoYW5nZSYmUS5vbldhdGNoU3RhdHVzQ2hhbmdlKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKHBpKSxsLHl8fEYpfWZ1bmN0aW9uIEJyKCl7cmV0dXJuIFouaGFzQ2hhbmdlZEF1dG9tYXRpY1R5cGVEaXJlY3RpdmVOYW1lcygpfWZ1bmN0aW9uIEVyKCl7cmV0dXJuIGY/KFEuY2xlYXJUaW1lb3V0KGYpLGY9dm9pZCAwLCEwKTohMX1mdW5jdGlvbiBOZSgpe2lmKCFRLnNldFRpbWVvdXR8fCFRLmNsZWFyVGltZW91dClyZXR1cm4gWi5pbnZhbGlkYXRlUmVzb2x1dGlvbnNPZkZhaWxlZExvb2t1cExvY2F0aW9ucygpO3ZhciBwaT1FcigpO2coXCJTY2hlZHVsaW5nIGludmFsaWRhdGVGYWlsZWRMb29rdXBcIi5jb25jYXQocGk/XCIsIENhbmNlbGxlZCBlYXJsaWVyIG9uZVwiOlwiXCIpKSxmPVEuc2V0VGltZW91dChuLDI1MCl9ZnVuY3Rpb24gbigpe2Y9dm9pZCAwLFouaW52YWxpZGF0ZVJlc29sdXRpb25zT2ZGYWlsZWRMb29rdXBMb2NhdGlvbnMoKSYmbHIoKX1mdW5jdGlvbiBscigpeyFRLnNldFRpbWVvdXR8fCFRLmNsZWFyVGltZW91dHx8KG9lJiZRLmNsZWFyVGltZW91dChvZSksZyhcIlNjaGVkdWxpbmcgdXBkYXRlXCIpLG9lPVEuc2V0VGltZW91dChHZSwyNTApKX1mdW5jdGlvbiBiZSgpe2UuRGVidWcuYXNzZXJ0KCEhZWUpLE49ZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGwsbHIoKX1mdW5jdGlvbiBHZSgpe29lPXZvaWQgMCxKPSEwLHVyKCl9ZnVuY3Rpb24gdXIoKXtzd2l0Y2goTil7Y2FzZSBlLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuUGFydGlhbDplLnBlcmZMb2dnZXIubG9nU3RhcnRVcGRhdGVQcm9ncmFtKFwiUGFydGlhbENvbmZpZ1JlbG9hZFwiKSx5cigpO2JyZWFrO2Nhc2UgZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGw6ZS5wZXJmTG9nZ2VyLmxvZ1N0YXJ0VXBkYXRlUHJvZ3JhbShcIkZ1bGxDb25maWdSZWxvYWRcIiksSXIoKTticmVhaztkZWZhdWx0OmUucGVyZkxvZ2dlci5sb2dTdGFydFVwZGF0ZVByb2dyYW0oXCJTeW5jaHJvbml6ZVByb2dyYW1cIiksRWUoKTticmVha31yZXR1cm4gZS5wZXJmTG9nZ2VyLmxvZ1N0b3BVcGRhdGVQcm9ncmFtKFwiRG9uZVwiKSxSZSgpfWZ1bmN0aW9uIHlyKCl7ZyhcIlJlbG9hZGluZyBuZXcgZmlsZSBuYW1lcyBhbmQgb3B0aW9uc1wiKSxBPWUuZ2V0RmlsZU5hbWVzRnJvbUNvbmZpZ1NwZWNzKHkuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MsZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGUuZ2V0RGlyZWN0b3J5UGF0aChlZSksdmUpLHksSSxYKSxlLnVwZGF0ZUVycm9yRm9yTm9JbnB1dEZpbGVzKEEsZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGVlLHZlKSx5LmNvbmZpZ0ZpbGUuY29uZmlnRmlsZVNwZWNzLGssWSkmJihVPSEwKSxFZSgpfWZ1bmN0aW9uIElyKCl7ZyhcIlJlbG9hZGluZyBjb25maWcgZmlsZTogXCIuY29uY2F0KGVlKSksTj1lLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuTm9uZSxqJiZqLmNsZWFyQ2FjaGUoKSx3cigpLHE9ITAsRWUoKSxHaSgpLFp0KF9lKGVlKSx5LFYsZS5XYXRjaFR5cGUuRXh0ZW5kZWRDb25maWdGaWxlKX1mdW5jdGlvbiB3cigpe1VyKGUuZ2V0UGFyc2VkQ29tbWFuZExpbmVPZkNvbmZpZ0ZpbGUoZWUsRixJLGJ8fChiPW5ldyBlLk1hcCkseCxYKSl9ZnVuY3Rpb24gVXIocGkpe0E9cGkuZmlsZU5hbWVzLHk9cGkub3B0aW9ucyxWPXBpLndhdGNoT3B0aW9ucyxMPXBpLnByb2plY3RSZWZlcmVuY2VzLFA9cGkud2lsZGNhcmREaXJlY3RvcmllcyxrPWUuZ2V0Q29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyhwaSkuc2xpY2UoKSxZPWUuY2FuSnNvblJlcG9ydE5vSW5wdXRGaWxlcyhwaS5yYXcpLFU9ITB9ZnVuY3Rpb24gaWkocGkpe3ZhciBhZT1fZShwaSksWGU9VD09bnVsbD92b2lkIDA6VC5nZXQoYWUpO2lmKFhlKXtpZighWGUucmVsb2FkTGV2ZWwpcmV0dXJuIFhlLnBhcnNlZENvbW1hbmRMaW5lO2lmKFhlLnBhcnNlZENvbW1hbmRMaW5lJiZYZS5yZWxvYWRMZXZlbD09PWUuQ29uZmlnRmlsZVByb2dyYW1SZWxvYWRMZXZlbC5QYXJ0aWFsJiYhUS5nZXRQYXJzZWRDb21tYW5kTGluZSl7ZyhcIlJlbG9hZGluZyBuZXcgZmlsZSBuYW1lcyBhbmQgb3B0aW9uc1wiKTt2YXIgSnI9ZS5nZXRGaWxlTmFtZXNGcm9tQ29uZmlnU3BlY3MoWGUucGFyc2VkQ29tbWFuZExpbmUub3B0aW9ucy5jb25maWdGaWxlLmNvbmZpZ0ZpbGVTcGVjcyxlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoZS5nZXREaXJlY3RvcnlQYXRoKHBpKSx2ZSkseSxJKTtyZXR1cm4gWGUucGFyc2VkQ29tbWFuZExpbmU9S2UoS2Uoe30sWGUucGFyc2VkQ29tbWFuZExpbmUpLHtmaWxlTmFtZXM6SnJ9KSxYZS5yZWxvYWRMZXZlbD12b2lkIDAsWGUucGFyc2VkQ29tbWFuZExpbmV9fWcoXCJMb2FkaW5nIGNvbmZpZyBmaWxlOiBcIi5jb25jYXQocGkpKTt2YXIgdGk9US5nZXRQYXJzZWRDb21tYW5kTGluZT9RLmdldFBhcnNlZENvbW1hbmRMaW5lKHBpKTptaShwaSk7cmV0dXJuIFhlPyhYZS5wYXJzZWRDb21tYW5kTGluZT10aSxYZS5yZWxvYWRMZXZlbD12b2lkIDApOihUfHwoVD1uZXcgZS5NYXApKS5zZXQoYWUsWGU9e3BhcnNlZENvbW1hbmRMaW5lOnRpfSksX3IocGksYWUsWGUpLHRpfWZ1bmN0aW9uIG1pKHBpKXt2YXIgYWU9SS5vblVuUmVjb3ZlcmFibGVDb25maWdGaWxlRGlhZ25vc3RpYztJLm9uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljPWUubm9vcDt2YXIgWGU9ZS5nZXRQYXJzZWRDb21tYW5kTGluZU9mQ29uZmlnRmlsZShwaSx2b2lkIDAsSSxifHwoYj1uZXcgZS5NYXApLHgpO3JldHVybiBJLm9uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljPWFlLFhlfWZ1bmN0aW9uIHBlKHBpKXt2YXIgYWUsWGU9X2UocGkpLEpyPVQ9PW51bGw/dm9pZCAwOlQuZ2V0KFhlKTshSnJ8fChULmRlbGV0ZShYZSksSnIud2F0Y2hlZERpcmVjdG9yaWVzJiZlLmNsZWFyTWFwKEpyLndhdGNoZWREaXJlY3RvcmllcyxlLmNsb3NlRmlsZVdhdGNoZXJPZiksKGFlPUpyLndhdGNoZXIpPT09bnVsbHx8YWU9PT12b2lkIDB8fGFlLmNsb3NlKCksZS5jbGVhclNoYXJlZEV4dGVuZGVkQ29uZmlnRmlsZVdhdGNoZXIoWGUsSykpfWZ1bmN0aW9uIG9yKHBpLGFlLFhlLEpyLHRpLFplKXtyZXR1cm4gRChhZSxmdW5jdGlvbihTcix6cil7cmV0dXJuIFhlKFNyLHpyLHBpKX0sSnIsdGksWmUpfWZ1bmN0aW9uIHFyKHBpLGFlLFhlKXtzaShwaSxYZSxhZSksYWU9PT1lLkZpbGVXYXRjaGVyRXZlbnRLaW5kLkRlbGV0ZWQmJmllLmhhcyhYZSkmJlouaW52YWxpZGF0ZVJlc29sdXRpb25PZkZpbGUoWGUpLGVyKFhlKSxscigpfWZ1bmN0aW9uIHNpKHBpLGFlLFhlKXtqJiZqLmFkZE9yRGVsZXRlRmlsZShwaSxhZSxYZSl9ZnVuY3Rpb24gRGkocGkpe3JldHVybiBUIT1udWxsJiZULmhhcyhwaSk/ZS5ub29wRmlsZVdhdGNoZXI6b3IocGkscGksZXQsZS5Qb2xsaW5nSW50ZXJ2YWwuTWVkaXVtLFYsZS5XYXRjaFR5cGUuTWlzc2luZ0ZpbGUpfWZ1bmN0aW9uIHdpKHBpKXtyZXR1cm4gaWUuaGFzKHBpKT9lLm5vb3BGaWxlV2F0Y2hlcjpvcihwaSxwaSxYaSxlLlBvbGxpbmdJbnRlcnZhbC5IaWdoLFYsZS5XYXRjaFR5cGUuUGFja2FnZUpzb24pfWZ1bmN0aW9uIFhpKHBpLGFlLFhlKXtzaShwaSxYZSxhZSksTj1lLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuRnVsbCxzZT0hMCxscigpfWZ1bmN0aW9uIGV0KHBpLGFlLFhlKXtzaShwaSxYZSxhZSksYWU9PT1lLkZpbGVXYXRjaGVyRXZlbnRLaW5kLkNyZWF0ZWQmJnAuaGFzKFhlKSYmKHAuZ2V0KFhlKS5jbG9zZSgpLHAuZGVsZXRlKFhlKSxlcihYZSksbHIoKSl9ZnVuY3Rpb24gR2koKXtQP2UudXBkYXRlV2F0Y2hpbmdXaWxkY2FyZERpcmVjdG9yaWVzKEd8fChHPW5ldyBlLk1hcCksbmV3IGUuTWFwKGUuZ2V0RW50cmllcyhQKSksV3QpOkcmJmUuY2xlYXJNYXAoRyxlLmNsb3NlRmlsZVdhdGNoZXJPZil9ZnVuY3Rpb24gV3QocGksYWUpe3JldHVybiBmZShwaSxmdW5jdGlvbihYZSl7ZS5EZWJ1Zy5hc3NlcnQoISFlZSk7dmFyIEpyPV9lKFhlKTtqJiZqLmFkZE9yRGVsZXRlRmlsZU9yRGlyZWN0b3J5KFhlLEpyKSxlcihKciksIWUuaXNJZ25vcmVkRmlsZUZyb21XaWxkQ2FyZFdhdGNoaW5nKHt3YXRjaGVkRGlyUGF0aDpfZShwaSksZmlsZU9yRGlyZWN0b3J5OlhlLGZpbGVPckRpcmVjdG9yeVBhdGg6SnIsY29uZmlnRmlsZU5hbWU6ZWUsZXh0cmFGaWxlRXh0ZW5zaW9uczpYLG9wdGlvbnM6eSxwcm9ncmFtOlJlKCl8fEEsY3VycmVudERpcmVjdG9yeTp2ZSx1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOk8sd3JpdGVMb2c6Zyx0b1BhdGg6X2V9KSYmTiE9PWUuQ29uZmlnRmlsZVByb2dyYW1SZWxvYWRMZXZlbC5GdWxsJiYoTj1lLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuUGFydGlhbCxscigpKX0sYWUsVixlLldhdGNoVHlwZS5XaWxkY2FyZERpcmVjdG9yeSl9ZnVuY3Rpb24gWnQocGksYWUsWGUsSnIpe2UudXBkYXRlU2hhcmVkRXh0ZW5kZWRDb25maWdGaWxlV2F0Y2hlcihwaSxhZSxLfHwoSz1uZXcgZS5NYXApLGZ1bmN0aW9uKHRpLFplKXtyZXR1cm4gRCh0aSxmdW5jdGlvbihTcix6cil7dmFyIFdyO3NpKHRpLFplLHpyKSxiJiZlLmNsZWFuRXh0ZW5kZWRDb25maWdDYWNoZShiLFplLF9lKTt2YXIgSmU9KFdyPUsuZ2V0KFplKSk9PT1udWxsfHxXcj09PXZvaWQgMD92b2lkIDA6V3IucHJvamVjdHM7IShKZSE9bnVsbCYmSmUuc2l6ZSl8fEplLmZvckVhY2goZnVuY3Rpb24oeGUpe2lmKF9lKGVlKT09PXhlKU49ZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGw7ZWxzZXt2YXIgdnI9VD09bnVsbD92b2lkIDA6VC5nZXQoeGUpO3ZyJiYodnIucmVsb2FkTGV2ZWw9ZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGwpLFoucmVtb3ZlUmVzb2x1dGlvbnNGcm9tUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0cyh4ZSl9bHIoKX0pfSxlLlBvbGxpbmdJbnRlcnZhbC5IaWdoLFhlLEpyKX0sX2UpfWZ1bmN0aW9uIF9yKHBpLGFlLFhlKXt2YXIgSnIsdGksWmUsU3IsenI7WGUud2F0Y2hlcnx8KFhlLndhdGNoZXI9RChwaSxmdW5jdGlvbihXcixKZSl7c2kocGksYWUsSmUpO3ZhciB4ZT1UPT1udWxsP3ZvaWQgMDpULmdldChhZSk7eGUmJih4ZS5yZWxvYWRMZXZlbD1lLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuRnVsbCksWi5yZW1vdmVSZXNvbHV0aW9uc0Zyb21Qcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3RzKGFlKSxscigpfSxlLlBvbGxpbmdJbnRlcnZhbC5IaWdoLCgoSnI9WGUucGFyc2VkQ29tbWFuZExpbmUpPT09bnVsbHx8SnI9PT12b2lkIDA/dm9pZCAwOkpyLndhdGNoT3B0aW9ucyl8fFYsZS5XYXRjaFR5cGUuQ29uZmlnRmlsZU9mUmVmZXJlbmNlZFByb2plY3QpKSwhKCh0aT1YZS5wYXJzZWRDb21tYW5kTGluZSk9PT1udWxsfHx0aT09PXZvaWQgMCkmJnRpLndpbGRjYXJkRGlyZWN0b3JpZXM/ZS51cGRhdGVXYXRjaGluZ1dpbGRjYXJkRGlyZWN0b3JpZXMoWGUud2F0Y2hlZERpcmVjdG9yaWVzfHwoWGUud2F0Y2hlZERpcmVjdG9yaWVzPW5ldyBlLk1hcCksbmV3IGUuTWFwKGUuZ2V0RW50cmllcygoWmU9WGUucGFyc2VkQ29tbWFuZExpbmUpPT09bnVsbHx8WmU9PT12b2lkIDA/dm9pZCAwOlplLndpbGRjYXJkRGlyZWN0b3JpZXMpKSxmdW5jdGlvbihXcixKZSl7dmFyIHhlO3JldHVybiBmZShXcixmdW5jdGlvbih2cil7dmFyIG1yPV9lKHZyKTtqJiZqLmFkZE9yRGVsZXRlRmlsZU9yRGlyZWN0b3J5KHZyLG1yKSxlcihtcik7dmFyIEFyPVQ9PW51bGw/dm9pZCAwOlQuZ2V0KGFlKTshKEFyIT1udWxsJiZBci5wYXJzZWRDb21tYW5kTGluZSl8fGUuaXNJZ25vcmVkRmlsZUZyb21XaWxkQ2FyZFdhdGNoaW5nKHt3YXRjaGVkRGlyUGF0aDpfZShXciksZmlsZU9yRGlyZWN0b3J5OnZyLGZpbGVPckRpcmVjdG9yeVBhdGg6bXIsY29uZmlnRmlsZU5hbWU6cGksb3B0aW9uczpBci5wYXJzZWRDb21tYW5kTGluZS5vcHRpb25zLHByb2dyYW06QXIucGFyc2VkQ29tbWFuZExpbmUuZmlsZU5hbWVzLGN1cnJlbnREaXJlY3Rvcnk6dmUsdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczpPLHdyaXRlTG9nOmcsdG9QYXRoOl9lfSl8fEFyLnJlbG9hZExldmVsIT09ZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGwmJihBci5yZWxvYWRMZXZlbD1lLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuUGFydGlhbCxscigpKX0sSmUsKCh4ZT1YZS5wYXJzZWRDb21tYW5kTGluZSk9PT1udWxsfHx4ZT09PXZvaWQgMD92b2lkIDA6eGUud2F0Y2hPcHRpb25zKXx8VixlLldhdGNoVHlwZS5XaWxkY2FyZERpcmVjdG9yeU9mUmVmZXJlbmNlZFByb2plY3QpfSk6WGUud2F0Y2hlZERpcmVjdG9yaWVzJiYoZS5jbGVhck1hcChYZS53YXRjaGVkRGlyZWN0b3JpZXMsZS5jbG9zZUZpbGVXYXRjaGVyT2YpLFhlLndhdGNoZWREaXJlY3Rvcmllcz12b2lkIDApLFp0KGFlLChTcj1YZS5wYXJzZWRDb21tYW5kTGluZSk9PT1udWxsfHxTcj09PXZvaWQgMD92b2lkIDA6U3Iub3B0aW9ucywoKHpyPVhlLnBhcnNlZENvbW1hbmRMaW5lKT09PW51bGx8fHpyPT09dm9pZCAwP3ZvaWQgMDp6ci53YXRjaE9wdGlvbnMpfHxWLGUuV2F0Y2hUeXBlLkV4dGVuZGVkQ29uZmlnT2ZSZWZlcmVuY2VkUHJvamVjdCl9fWUuY3JlYXRlV2F0Y2hQcm9ncmFtPUV9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24odyl7d1t3LlVuYnVpbGRhYmxlPTBdPVwiVW5idWlsZGFibGVcIix3W3cuVXBUb0RhdGU9MV09XCJVcFRvRGF0ZVwiLHdbdy5VcFRvRGF0ZVdpdGhVcHN0cmVhbVR5cGVzPTJdPVwiVXBUb0RhdGVXaXRoVXBzdHJlYW1UeXBlc1wiLHdbdy5PdXRPZkRhdGVXaXRoUHJlcGVuZD0zXT1cIk91dE9mRGF0ZVdpdGhQcmVwZW5kXCIsd1t3Lk91dHB1dE1pc3Npbmc9NF09XCJPdXRwdXRNaXNzaW5nXCIsd1t3Lk91dE9mRGF0ZVdpdGhTZWxmPTVdPVwiT3V0T2ZEYXRlV2l0aFNlbGZcIix3W3cuT3V0T2ZEYXRlV2l0aFVwc3RyZWFtPTZdPVwiT3V0T2ZEYXRlV2l0aFVwc3RyZWFtXCIsd1t3LlVwc3RyZWFtT3V0T2ZEYXRlPTddPVwiVXBzdHJlYW1PdXRPZkRhdGVcIix3W3cuVXBzdHJlYW1CbG9ja2VkPThdPVwiVXBzdHJlYW1CbG9ja2VkXCIsd1t3LkNvbXB1dGluZ1Vwc3RyZWFtPTldPVwiQ29tcHV0aW5nVXBzdHJlYW1cIix3W3cuVHNWZXJzaW9uT3V0cHV0T2ZEYXRlPTEwXT1cIlRzVmVyc2lvbk91dHB1dE9mRGF0ZVwiLHdbdy5Db250YWluZXJPbmx5PTExXT1cIkNvbnRhaW5lck9ubHlcIn0pKGE9ZS5VcFRvRGF0ZVN0YXR1c1R5cGV8fChlLlVwVG9EYXRlU3RhdHVzVHlwZT17fSkpO2Z1bmN0aW9uIEModyl7cmV0dXJuIGUuZmlsZUV4dGVuc2lvbklzKHcsXCIuanNvblwiKT93OmUuY29tYmluZVBhdGhzKHcsXCJ0c2NvbmZpZy5qc29uXCIpfWUucmVzb2x2ZUNvbmZpZ0ZpbGVQcm9qZWN0TmFtZT1DfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE9bmV3IERhdGUoLTg2NGUxMyksQz1uZXcgRGF0ZSg4NjRlMTMpLHc7KGZ1bmN0aW9uKGJlKXtiZVtiZS5Ob25lPTBdPVwiTm9uZVwiLGJlW2JlLlN1Y2Nlc3M9MV09XCJTdWNjZXNzXCIsYmVbYmUuRGVjbGFyYXRpb25PdXRwdXRVbmNoYW5nZWQ9Ml09XCJEZWNsYXJhdGlvbk91dHB1dFVuY2hhbmdlZFwiLGJlW2JlLkNvbmZpZ0ZpbGVFcnJvcnM9NF09XCJDb25maWdGaWxlRXJyb3JzXCIsYmVbYmUuU3ludGF4RXJyb3JzPThdPVwiU3ludGF4RXJyb3JzXCIsYmVbYmUuVHlwZUVycm9ycz0xNl09XCJUeXBlRXJyb3JzXCIsYmVbYmUuRGVjbGFyYXRpb25FbWl0RXJyb3JzPTMyXT1cIkRlY2xhcmF0aW9uRW1pdEVycm9yc1wiLGJlW2JlLkVtaXRFcnJvcnM9NjRdPVwiRW1pdEVycm9yc1wiLGJlW2JlLkFueUVycm9ycz0xMjRdPVwiQW55RXJyb3JzXCJ9KSh3fHwodz17fSkpO2Z1bmN0aW9uIEIoYmUsR2UsdXIpe3ZhciB5cj1iZS5nZXQoR2UpLElyO3JldHVybiB5cnx8KElyPXVyKCksYmUuc2V0KEdlLElyKSkseXJ8fElyfWZ1bmN0aW9uIEUoYmUsR2Upe3JldHVybiBCKGJlLEdlLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBlLk1hcH0pfWZ1bmN0aW9uIFEoYmUsR2Upe3JldHVybiBHZT5iZT9HZTpiZX1mdW5jdGlvbiBsZShiZSl7cmV0dXJuISFiZSYmISFiZS5idWlsZE9yZGVyfWUuaXNDaXJjdWxhckJ1aWxkT3JkZXI9bGU7ZnVuY3Rpb24gTihiZSl7cmV0dXJuIGxlKGJlKT9iZS5idWlsZE9yZGVyOmJlfWUuZ2V0QnVpbGRPcmRlckZyb21BbnlCdWlsZE9yZGVyPU47ZnVuY3Rpb24gcChiZSxHZSl7cmV0dXJuIGZ1bmN0aW9uKHVyKXt2YXIgeXI9R2U/XCJbXCIuY29uY2F0KGUuZm9ybWF0Q29sb3JBbmRSZXNldChlLmdldExvY2FsZVRpbWVTdHJpbmcoYmUpLGUuRm9yZWdyb3VuZENvbG9yRXNjYXBlU2VxdWVuY2VzLkdyZXkpLFwiXSBcIik6XCJcIi5jb25jYXQoZS5nZXRMb2NhbGVUaW1lU3RyaW5nKGJlKSxcIiAtIFwiKTt5cis9XCJcIi5jb25jYXQoZS5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KHVyLm1lc3NhZ2VUZXh0LGJlLm5ld0xpbmUpKS5jb25jYXQoYmUubmV3TGluZStiZS5uZXdMaW5lKSxiZS53cml0ZSh5cil9fWUuY3JlYXRlQnVpbGRlclN0YXR1c1JlcG9ydGVyPXA7ZnVuY3Rpb24gbShiZSxHZSx1cix5cil7dmFyIElyPWUuY3JlYXRlUHJvZ3JhbUhvc3QoYmUsR2UpO3JldHVybiBJci5nZXRNb2RpZmllZFRpbWU9YmUuZ2V0TW9kaWZpZWRUaW1lP2Z1bmN0aW9uKHdyKXtyZXR1cm4gYmUuZ2V0TW9kaWZpZWRUaW1lKHdyKX06ZS5yZXR1cm5VbmRlZmluZWQsSXIuc2V0TW9kaWZpZWRUaW1lPWJlLnNldE1vZGlmaWVkVGltZT9mdW5jdGlvbih3cixVcil7cmV0dXJuIGJlLnNldE1vZGlmaWVkVGltZSh3cixVcil9OmUubm9vcCxJci5kZWxldGVGaWxlPWJlLmRlbGV0ZUZpbGU/ZnVuY3Rpb24od3Ipe3JldHVybiBiZS5kZWxldGVGaWxlKHdyKX06ZS5ub29wLElyLnJlcG9ydERpYWdub3N0aWM9dXJ8fGUuY3JlYXRlRGlhZ25vc3RpY1JlcG9ydGVyKGJlKSxJci5yZXBvcnRTb2x1dGlvbkJ1aWxkZXJTdGF0dXM9eXJ8fHAoYmUpLElyLm5vdz1lLm1heWJlQmluZChiZSxiZS5ub3cpLElyfWZ1bmN0aW9uIEcoYmUsR2UsdXIseXIsSXIpe2JlPT09dm9pZCAwJiYoYmU9ZS5zeXMpO3ZhciB3cj1tKGJlLEdlLHVyLHlyKTtyZXR1cm4gd3IucmVwb3J0RXJyb3JTdW1tYXJ5PUlyLHdyfWUuY3JlYXRlU29sdXRpb25CdWlsZGVySG9zdD1HO2Z1bmN0aW9uIG9lKGJlLEdlLHVyLHlyLElyKXtiZT09PXZvaWQgMCYmKGJlPWUuc3lzKTt2YXIgd3I9bShiZSxHZSx1cix5ciksVXI9ZS5jcmVhdGVXYXRjaEhvc3QoYmUsSXIpO3JldHVybiBlLmNvcHlQcm9wZXJ0aWVzKHdyLFVyKSx3cn1lLmNyZWF0ZVNvbHV0aW9uQnVpbGRlcldpdGhXYXRjaEhvc3Q9b2U7ZnVuY3Rpb24gZihiZSl7dmFyIEdlPXt9O3JldHVybiBlLmNvbW1vbk9wdGlvbnNXaXRoQnVpbGQuZm9yRWFjaChmdW5jdGlvbih1cil7ZS5oYXNQcm9wZXJ0eShiZSx1ci5uYW1lKSYmKEdlW3VyLm5hbWVdPWJlW3VyLm5hbWVdKX0pLEdlfWZ1bmN0aW9uIFQoYmUsR2UsdXIpe3JldHVybiB5ZSghMSxiZSxHZSx1cil9ZS5jcmVhdGVTb2x1dGlvbkJ1aWxkZXI9VDtmdW5jdGlvbiBLKGJlLEdlLHVyLHlyKXtyZXR1cm4geWUoITAsYmUsR2UsdXIseXIpfWUuY3JlYXRlU29sdXRpb25CdWlsZGVyV2l0aFdhdGNoPUs7ZnVuY3Rpb24gYihiZSxHZSx1cix5cixJcil7dmFyIHdyPUdlLFVyPUdlLGlpPXdyLmdldEN1cnJlbnREaXJlY3RvcnkoKSxtaT1lLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKHdyLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSkscGU9Zih5ciksb3I9ZS5jcmVhdGVDb21waWxlckhvc3RGcm9tUHJvZ3JhbUhvc3Qod3IsZnVuY3Rpb24oKXtyZXR1cm4gWnQucHJvamVjdENvbXBpbGVyT3B0aW9uc30pO2Uuc2V0R2V0U291cmNlRmlsZUFzSGFzaFZlcnNpb25lZChvcix3ciksb3IuZ2V0UGFyc2VkQ29tbWFuZExpbmU9ZnVuY3Rpb24oX3Ipe3JldHVybiBxKFp0LF9yLEooWnQsX3IpKX0sb3IucmVzb2x2ZU1vZHVsZU5hbWVzPWUubWF5YmVCaW5kKHdyLHdyLnJlc29sdmVNb2R1bGVOYW1lcyksb3IucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzPWUubWF5YmVCaW5kKHdyLHdyLnJlc29sdmVUeXBlUmVmZXJlbmNlRGlyZWN0aXZlcyk7dmFyIHFyPW9yLnJlc29sdmVNb2R1bGVOYW1lcz92b2lkIDA6ZS5jcmVhdGVNb2R1bGVSZXNvbHV0aW9uQ2FjaGUoaWksbWkpLHNpPW9yLnJlc29sdmVUeXBlUmVmZXJlbmNlRGlyZWN0aXZlcz92b2lkIDA6ZS5jcmVhdGVUeXBlUmVmZXJlbmNlRGlyZWN0aXZlUmVzb2x1dGlvbkNhY2hlKGlpLG1pLHZvaWQgMCxxcj09bnVsbD92b2lkIDA6cXIuZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGUoKSk7aWYoIW9yLnJlc29sdmVNb2R1bGVOYW1lcyl7dmFyIERpPWZ1bmN0aW9uKF9yLHBpLGFlLFhlKXtyZXR1cm4gZS5yZXNvbHZlTW9kdWxlTmFtZShfcixhZSxadC5wcm9qZWN0Q29tcGlsZXJPcHRpb25zLG9yLHFyLFhlLHBpKS5yZXNvbHZlZE1vZHVsZX07b3IucmVzb2x2ZU1vZHVsZU5hbWVzPWZ1bmN0aW9uKF9yLHBpLGFlLFhlLEpyLHRpKXtyZXR1cm4gZS5sb2FkV2l0aE1vZGVBd2FyZUNhY2hlKGUuRGVidWcuY2hlY2tFYWNoRGVmaW5lZChfciksZS5EZWJ1Zy5jaGVja0RlZmluZWQodGkpLHBpLFhlLERpKX0sb3IuZ2V0TW9kdWxlUmVzb2x1dGlvbkNhY2hlPWZ1bmN0aW9uKCl7cmV0dXJuIHFyfX1pZighb3IucmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzKXt2YXIgd2k9ZnVuY3Rpb24oX3IscGksYWUsWGUpe3JldHVybiBlLnJlc29sdmVUeXBlUmVmZXJlbmNlRGlyZWN0aXZlKF9yLHBpLFp0LnByb2plY3RDb21waWxlck9wdGlvbnMsb3IsYWUsWnQudHlwZVJlZmVyZW5jZURpcmVjdGl2ZVJlc29sdXRpb25DYWNoZSxYZSkucmVzb2x2ZWRUeXBlUmVmZXJlbmNlRGlyZWN0aXZlfTtvci5yZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXM9ZnVuY3Rpb24oX3IscGksYWUsWGUsSnIpe3JldHVybiBlLmxvYWRXaXRoVHlwZURpcmVjdGl2ZUNhY2hlKGUuRGVidWcuY2hlY2tFYWNoRGVmaW5lZChfcikscGksYWUsSnIsd2kpfX12YXIgWGk9ZS5jcmVhdGVXYXRjaEZhY3RvcnkoVXIseXIpLGV0PVhpLndhdGNoRmlsZSxHaT1YaS53YXRjaERpcmVjdG9yeSxXdD1YaS53cml0ZUxvZyxadD17aG9zdDp3cixob3N0V2l0aFdhdGNoOlVyLGN1cnJlbnREaXJlY3Rvcnk6aWksZ2V0Q2Fub25pY2FsRmlsZU5hbWU6bWkscGFyc2VDb25maWdGaWxlSG9zdDplLnBhcnNlQ29uZmlnSG9zdEZyb21Db21waWxlckhvc3RMaWtlKHdyKSx3cml0ZTplLm1heWJlQmluZCh3cix3ci50cmFjZSksb3B0aW9uczp5cixiYXNlQ29tcGlsZXJPcHRpb25zOnBlLHJvb3ROYW1lczp1cixiYXNlV2F0Y2hPcHRpb25zOklyLHJlc29sdmVkQ29uZmlnRmlsZVBhdGhzOm5ldyBlLk1hcCxjb25maWdGaWxlQ2FjaGU6bmV3IGUuTWFwLHByb2plY3RTdGF0dXM6bmV3IGUuTWFwLGJ1aWxkSW5mb0NoZWNrZWQ6bmV3IGUuTWFwLGV4dGVuZGVkQ29uZmlnQ2FjaGU6bmV3IGUuTWFwLGJ1aWxkZXJQcm9ncmFtczpuZXcgZS5NYXAsZGlhZ25vc3RpY3M6bmV3IGUuTWFwLHByb2plY3RQZW5kaW5nQnVpbGQ6bmV3IGUuTWFwLHByb2plY3RFcnJvcnNSZXBvcnRlZDpuZXcgZS5NYXAsY29tcGlsZXJIb3N0Om9yLG1vZHVsZVJlc29sdXRpb25DYWNoZTpxcix0eXBlUmVmZXJlbmNlRGlyZWN0aXZlUmVzb2x1dGlvbkNhY2hlOnNpLGJ1aWxkT3JkZXI6dm9pZCAwLHJlYWRGaWxlV2l0aENhY2hlOmZ1bmN0aW9uKF9yKXtyZXR1cm4gd3IucmVhZEZpbGUoX3IpfSxwcm9qZWN0Q29tcGlsZXJPcHRpb25zOnBlLGNhY2hlOnZvaWQgMCxhbGxQcm9qZWN0QnVpbGRQZW5kaW5nOiEwLG5lZWRzU3VtbWFyeTohMCx3YXRjaEFsbFByb2plY3RzUGVuZGluZzpiZSxjdXJyZW50SW52YWxpZGF0ZWRQcm9qZWN0OnZvaWQgMCx3YXRjaDpiZSxhbGxXYXRjaGVkV2lsZGNhcmREaXJlY3RvcmllczpuZXcgZS5NYXAsYWxsV2F0Y2hlZElucHV0RmlsZXM6bmV3IGUuTWFwLGFsbFdhdGNoZWRDb25maWdGaWxlczpuZXcgZS5NYXAsYWxsV2F0Y2hlZEV4dGVuZGVkQ29uZmlnRmlsZXM6bmV3IGUuTWFwLGFsbFdhdGNoZWRQYWNrYWdlSnNvbkZpbGVzOm5ldyBlLk1hcCxsYXN0Q2FjaGVkUGFja2FnZUpzb25Mb29rdXBzOm5ldyBlLk1hcCx0aW1lclRvQnVpbGRJbnZhbGlkYXRlZFByb2plY3Q6dm9pZCAwLHJlcG9ydEZpbGVDaGFuZ2VEZXRlY3RlZDohMSx3YXRjaEZpbGU6ZXQsd2F0Y2hEaXJlY3Rvcnk6R2ksd3JpdGVMb2c6V3R9O3JldHVybiBadH1mdW5jdGlvbiBzZShiZSxHZSl7cmV0dXJuIGUudG9QYXRoKEdlLGJlLmN1cnJlbnREaXJlY3RvcnksYmUuZ2V0Q2Fub25pY2FsRmlsZU5hbWUpfWZ1bmN0aW9uIEooYmUsR2Upe3ZhciB1cj1iZS5yZXNvbHZlZENvbmZpZ0ZpbGVQYXRocyx5cj11ci5nZXQoR2UpO2lmKHlyIT09dm9pZCAwKXJldHVybiB5cjt2YXIgSXI9c2UoYmUsR2UpO3JldHVybiB1ci5zZXQoR2UsSXIpLElyfWZ1bmN0aW9uIGllKGJlKXtyZXR1cm4hIWJlLm9wdGlvbnN9ZnVuY3Rpb24gUihiZSxHZSl7dmFyIHVyPWJlLmNvbmZpZ0ZpbGVDYWNoZS5nZXQoR2UpO3JldHVybiB1ciYmaWUodXIpP3VyOnZvaWQgMH1mdW5jdGlvbiBxKGJlLEdlLHVyKXt2YXIgeXI9YmUuY29uZmlnRmlsZUNhY2hlLElyPXlyLmdldCh1cik7aWYoSXIpcmV0dXJuIGllKElyKT9Jcjp2b2lkIDA7dmFyIHdyLFVyPWJlLnBhcnNlQ29uZmlnRmlsZUhvc3QsaWk9YmUuYmFzZUNvbXBpbGVyT3B0aW9ucyxtaT1iZS5iYXNlV2F0Y2hPcHRpb25zLHBlPWJlLmV4dGVuZGVkQ29uZmlnQ2FjaGUsb3I9YmUuaG9zdCxxcjtyZXR1cm4gb3IuZ2V0UGFyc2VkQ29tbWFuZExpbmU/KHFyPW9yLmdldFBhcnNlZENvbW1hbmRMaW5lKEdlKSxxcnx8KHdyPWUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGUuRGlhZ25vc3RpY3MuRmlsZV8wX25vdF9mb3VuZCxHZSkpKTooVXIub25VblJlY292ZXJhYmxlQ29uZmlnRmlsZURpYWdub3N0aWM9ZnVuY3Rpb24oc2kpe3JldHVybiB3cj1zaX0scXI9ZS5nZXRQYXJzZWRDb21tYW5kTGluZU9mQ29uZmlnRmlsZShHZSxpaSxVcixwZSxtaSksVXIub25VblJlY292ZXJhYmxlQ29uZmlnRmlsZURpYWdub3N0aWM9ZS5ub29wKSx5ci5zZXQodXIscXJ8fHdyKSxxcn1mdW5jdGlvbiBPKGJlLEdlKXtyZXR1cm4gZS5yZXNvbHZlQ29uZmlnRmlsZVByb2plY3ROYW1lKGUucmVzb2x2ZVBhdGgoYmUuY3VycmVudERpcmVjdG9yeSxHZSkpfWZ1bmN0aW9uIHZlKGJlLEdlKXtmb3IodmFyIHVyPW5ldyBlLk1hcCx5cj1uZXcgZS5NYXAsSXI9W10sd3IsVXIsaWk9MCxtaT1HZTtpaTxtaS5sZW5ndGg7aWkrKyl7dmFyIHBlPW1pW2lpXTtvcihwZSl9cmV0dXJuIFVyP3tidWlsZE9yZGVyOndyfHxlLmVtcHR5QXJyYXksY2lyY3VsYXJEaWFnbm9zdGljczpVcn06d3J8fGUuZW1wdHlBcnJheTtmdW5jdGlvbiBvcihxcixzaSl7dmFyIERpPUooYmUscXIpO2lmKCF5ci5oYXMoRGkpKXtpZih1ci5oYXMoRGkpKXtzaXx8KFVyfHwoVXI9W10pKS5wdXNoKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljKGUuRGlhZ25vc3RpY3MuUHJvamVjdF9yZWZlcmVuY2VzX21heV9ub3RfZm9ybV9hX2NpcmN1bGFyX2dyYXBoX0N5Y2xlX2RldGVjdGVkX0NvbG9uXzAsSXIuam9pbihgXFxyXG5gKSkpO3JldHVybn11ci5zZXQoRGksITApLElyLnB1c2gocXIpO3ZhciB3aT1xKGJlLHFyLERpKTtpZih3aSYmd2kucHJvamVjdFJlZmVyZW5jZXMpZm9yKHZhciBYaT0wLGV0PXdpLnByb2plY3RSZWZlcmVuY2VzO1hpPGV0Lmxlbmd0aDtYaSsrKXt2YXIgR2k9ZXRbWGldLFd0PU8oYmUsR2kucGF0aCk7b3IoV3Qsc2l8fEdpLmNpcmN1bGFyKX1Jci5wb3AoKSx5ci5zZXQoRGksITApLCh3cnx8KHdyPVtdKSkucHVzaChxcil9fX1mdW5jdGlvbiBlZShiZSl7cmV0dXJuIGJlLmJ1aWxkT3JkZXJ8fGhlKGJlKX1mdW5jdGlvbiBoZShiZSl7dmFyIEdlPXZlKGJlLGJlLnJvb3ROYW1lcy5tYXAoZnVuY3Rpb24oSXIpe3JldHVybiBPKGJlLElyKX0pKTtiZS5yZXNvbHZlZENvbmZpZ0ZpbGVQYXRocy5jbGVhcigpO3ZhciB1cj1uZXcgZS5NYXAoTihHZSkubWFwKGZ1bmN0aW9uKElyKXtyZXR1cm5bSihiZSxJciksITBdfSkpLHlyPXtvbkRlbGV0ZVZhbHVlOmUubm9vcH07cmV0dXJuIGUubXV0YXRlTWFwU2tpcHBpbmdOZXdWYWx1ZXMoYmUuY29uZmlnRmlsZUNhY2hlLHVyLHlyKSxlLm11dGF0ZU1hcFNraXBwaW5nTmV3VmFsdWVzKGJlLnByb2plY3RTdGF0dXMsdXIseXIpLGUubXV0YXRlTWFwU2tpcHBpbmdOZXdWYWx1ZXMoYmUuYnVpbGRJbmZvQ2hlY2tlZCx1cix5ciksZS5tdXRhdGVNYXBTa2lwcGluZ05ld1ZhbHVlcyhiZS5idWlsZGVyUHJvZ3JhbXMsdXIseXIpLGUubXV0YXRlTWFwU2tpcHBpbmdOZXdWYWx1ZXMoYmUuZGlhZ25vc3RpY3MsdXIseXIpLGUubXV0YXRlTWFwU2tpcHBpbmdOZXdWYWx1ZXMoYmUucHJvamVjdFBlbmRpbmdCdWlsZCx1cix5ciksZS5tdXRhdGVNYXBTa2lwcGluZ05ld1ZhbHVlcyhiZS5wcm9qZWN0RXJyb3JzUmVwb3J0ZWQsdXIseXIpLGJlLndhdGNoJiYoZS5tdXRhdGVNYXBTa2lwcGluZ05ld1ZhbHVlcyhiZS5hbGxXYXRjaGVkQ29uZmlnRmlsZXMsdXIse29uRGVsZXRlVmFsdWU6ZS5jbG9zZUZpbGVXYXRjaGVyfSksYmUuYWxsV2F0Y2hlZEV4dGVuZGVkQ29uZmlnRmlsZXMuZm9yRWFjaChmdW5jdGlvbihJcil7SXIucHJvamVjdHMuZm9yRWFjaChmdW5jdGlvbih3cil7dXIuaGFzKHdyKXx8SXIucHJvamVjdHMuZGVsZXRlKHdyKX0pLElyLmNsb3NlKCl9KSxlLm11dGF0ZU1hcFNraXBwaW5nTmV3VmFsdWVzKGJlLmFsbFdhdGNoZWRXaWxkY2FyZERpcmVjdG9yaWVzLHVyLHtvbkRlbGV0ZVZhbHVlOmZ1bmN0aW9uKElyKXtyZXR1cm4gSXIuZm9yRWFjaChlLmNsb3NlRmlsZVdhdGNoZXJPZil9fSksZS5tdXRhdGVNYXBTa2lwcGluZ05ld1ZhbHVlcyhiZS5hbGxXYXRjaGVkSW5wdXRGaWxlcyx1cix7b25EZWxldGVWYWx1ZTpmdW5jdGlvbihJcil7cmV0dXJuIElyLmZvckVhY2goZS5jbG9zZUZpbGVXYXRjaGVyKX19KSxlLm11dGF0ZU1hcFNraXBwaW5nTmV3VmFsdWVzKGJlLmFsbFdhdGNoZWRQYWNrYWdlSnNvbkZpbGVzLHVyLHtvbkRlbGV0ZVZhbHVlOmZ1bmN0aW9uKElyKXtyZXR1cm4gSXIuZm9yRWFjaChlLmNsb3NlRmlsZVdhdGNoZXIpfX0pKSxiZS5idWlsZE9yZGVyPUdlfWZ1bmN0aW9uIEYoYmUsR2UsdXIpe3ZhciB5cj1HZSYmTyhiZSxHZSksSXI9ZWUoYmUpO2lmKGxlKElyKSlyZXR1cm4gSXI7aWYoeXIpe3ZhciB3cj1KKGJlLHlyKSxVcj1lLmZpbmRJbmRleChJcixmdW5jdGlvbihtaSl7cmV0dXJuIEooYmUsbWkpPT09d3J9KTtpZihVcj09PS0xKXJldHVybn12YXIgaWk9eXI/dmUoYmUsW3lyXSk6SXI7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCFsZShpaSkpLGUuRGVidWcuYXNzZXJ0KCF1cnx8eXIhPT12b2lkIDApLGUuRGVidWcuYXNzZXJ0KCF1cnx8aWlbaWkubGVuZ3RoLTFdPT09eXIpLHVyP2lpLnNsaWNlKDAsaWkubGVuZ3RoLTEpOmlpfWZ1bmN0aW9uIHgoYmUpe2JlLmNhY2hlJiZYKGJlKTt2YXIgR2U9YmUuY29tcGlsZXJIb3N0LHVyPWJlLmhvc3QseXI9YmUucmVhZEZpbGVXaXRoQ2FjaGUsSXI9R2UuZ2V0U291cmNlRmlsZSx3cj1lLmNoYW5nZUNvbXBpbGVySG9zdExpa2VUb1VzZUNhY2hlKHVyLGZ1bmN0aW9uKERpKXtyZXR1cm4gc2UoYmUsRGkpfSxmdW5jdGlvbigpe2Zvcih2YXIgRGk9W10sd2k9MDt3aTxhcmd1bWVudHMubGVuZ3RoO3dpKyspRGlbd2ldPWFyZ3VtZW50c1t3aV07cmV0dXJuIElyLmNhbGwuYXBwbHkoSXIsVmUoW0dlXSxEaSwhMSkpfSksVXI9d3Iub3JpZ2luYWxSZWFkRmlsZSxpaT13ci5vcmlnaW5hbEZpbGVFeGlzdHMsbWk9d3Iub3JpZ2luYWxEaXJlY3RvcnlFeGlzdHMscGU9d3Iub3JpZ2luYWxDcmVhdGVEaXJlY3Rvcnksb3I9d3Iub3JpZ2luYWxXcml0ZUZpbGUscXI9d3IuZ2V0U291cmNlRmlsZVdpdGhDYWNoZSxzaT13ci5yZWFkRmlsZVdpdGhDYWNoZTtiZS5yZWFkRmlsZVdpdGhDYWNoZT1zaSxHZS5nZXRTb3VyY2VGaWxlPXFyLGJlLmNhY2hlPXtvcmlnaW5hbFJlYWRGaWxlOlVyLG9yaWdpbmFsRmlsZUV4aXN0czppaSxvcmlnaW5hbERpcmVjdG9yeUV4aXN0czptaSxvcmlnaW5hbENyZWF0ZURpcmVjdG9yeTpwZSxvcmlnaW5hbFdyaXRlRmlsZTpvcixvcmlnaW5hbFJlYWRGaWxlV2l0aENhY2hlOnlyLG9yaWdpbmFsR2V0U291cmNlRmlsZTpJcn19ZnVuY3Rpb24gWChiZSl7aWYoISFiZS5jYWNoZSl7dmFyIEdlPWJlLmNhY2hlLHVyPWJlLmhvc3QseXI9YmUuY29tcGlsZXJIb3N0LElyPWJlLmV4dGVuZGVkQ29uZmlnQ2FjaGUsd3I9YmUubW9kdWxlUmVzb2x1dGlvbkNhY2hlLFVyPWJlLnR5cGVSZWZlcmVuY2VEaXJlY3RpdmVSZXNvbHV0aW9uQ2FjaGU7dXIucmVhZEZpbGU9R2Uub3JpZ2luYWxSZWFkRmlsZSx1ci5maWxlRXhpc3RzPUdlLm9yaWdpbmFsRmlsZUV4aXN0cyx1ci5kaXJlY3RvcnlFeGlzdHM9R2Uub3JpZ2luYWxEaXJlY3RvcnlFeGlzdHMsdXIuY3JlYXRlRGlyZWN0b3J5PUdlLm9yaWdpbmFsQ3JlYXRlRGlyZWN0b3J5LHVyLndyaXRlRmlsZT1HZS5vcmlnaW5hbFdyaXRlRmlsZSx5ci5nZXRTb3VyY2VGaWxlPUdlLm9yaWdpbmFsR2V0U291cmNlRmlsZSxiZS5yZWFkRmlsZVdpdGhDYWNoZT1HZS5vcmlnaW5hbFJlYWRGaWxlV2l0aENhY2hlLElyLmNsZWFyKCksd3I9PW51bGx8fHdyLmNsZWFyKCksVXI9PW51bGx8fFVyLmNsZWFyKCksYmUuY2FjaGU9dm9pZCAwfX1mdW5jdGlvbiAkKGJlLEdlKXtiZS5wcm9qZWN0U3RhdHVzLmRlbGV0ZShHZSksYmUuZGlhZ25vc3RpY3MuZGVsZXRlKEdlKX1mdW5jdGlvbiBBKGJlLEdlLHVyKXt2YXIgeXI9YmUucHJvamVjdFBlbmRpbmdCdWlsZCxJcj15ci5nZXQoR2UpOyhJcj09PXZvaWQgMHx8SXI8dXIpJiZ5ci5zZXQoR2UsdXIpfWZ1bmN0aW9uIHkoYmUsR2Upe2lmKCEhYmUuYWxsUHJvamVjdEJ1aWxkUGVuZGluZyl7YmUuYWxsUHJvamVjdEJ1aWxkUGVuZGluZz0hMSxiZS5vcHRpb25zLndhdGNoJiZpcihiZSxlLkRpYWdub3N0aWNzLlN0YXJ0aW5nX2NvbXBpbGF0aW9uX2luX3dhdGNoX21vZGUpLHgoYmUpO3ZhciB1cj1OKGVlKGJlKSk7dXIuZm9yRWFjaChmdW5jdGlvbih5cil7cmV0dXJuIGJlLnByb2plY3RQZW5kaW5nQnVpbGQuc2V0KEooYmUseXIpLGUuQ29uZmlnRmlsZVByb2dyYW1SZWxvYWRMZXZlbC5Ob25lKX0pLEdlJiZHZS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl9fXZhciBWOyhmdW5jdGlvbihiZSl7YmVbYmUuQnVpbGQ9MF09XCJCdWlsZFwiLGJlW2JlLlVwZGF0ZUJ1bmRsZT0xXT1cIlVwZGF0ZUJ1bmRsZVwiLGJlW2JlLlVwZGF0ZU91dHB1dEZpbGVTdGFtcHM9Ml09XCJVcGRhdGVPdXRwdXRGaWxlU3RhbXBzXCJ9KShWPWUuSW52YWxpZGF0ZWRQcm9qZWN0S2luZHx8KGUuSW52YWxpZGF0ZWRQcm9qZWN0S2luZD17fSkpO2Z1bmN0aW9uIEwoYmUsR2Upe3JldHVybiBiZS5wcm9qZWN0UGVuZGluZ0J1aWxkLmRlbGV0ZShHZSksYmUuY3VycmVudEludmFsaWRhdGVkUHJvamVjdD12b2lkIDAsYmUuZGlhZ25vc3RpY3MuaGFzKEdlKT9lLkV4aXRTdGF0dXMuRGlhZ25vc3RpY3NQcmVzZW50X091dHB1dHNTa2lwcGVkOmUuRXhpdFN0YXR1cy5TdWNjZXNzfWZ1bmN0aW9uIFAoYmUsR2UsdXIseXIsSXIpe3ZhciB3cj0hMDtyZXR1cm57a2luZDpWLlVwZGF0ZU91dHB1dEZpbGVTdGFtcHMscHJvamVjdDpHZSxwcm9qZWN0UGF0aDp1cixidWlsZE9yZGVyOklyLGdldENvbXBpbGVyT3B0aW9uczpmdW5jdGlvbigpe3JldHVybiB5ci5vcHRpb25zfSxnZXRDdXJyZW50RGlyZWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGJlLmN1cnJlbnREaXJlY3Rvcnl9LHVwZGF0ZU91dHB1dEZpbGVTdGF0bXBzOmZ1bmN0aW9uKCl7dWUoYmUseXIsdXIpLHdyPSExfSxkb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHdyJiZ1ZShiZSx5cix1ciksTChiZSx1cil9fX12YXIgazsoZnVuY3Rpb24oYmUpe2JlW2JlLkNyZWF0ZVByb2dyYW09MF09XCJDcmVhdGVQcm9ncmFtXCIsYmVbYmUuU3ludGF4RGlhZ25vc3RpY3M9MV09XCJTeW50YXhEaWFnbm9zdGljc1wiLGJlW2JlLlNlbWFudGljRGlhZ25vc3RpY3M9Ml09XCJTZW1hbnRpY0RpYWdub3N0aWNzXCIsYmVbYmUuRW1pdD0zXT1cIkVtaXRcIixiZVtiZS5FbWl0QnVuZGxlPTRdPVwiRW1pdEJ1bmRsZVwiLGJlW2JlLkVtaXRCdWlsZEluZm89NV09XCJFbWl0QnVpbGRJbmZvXCIsYmVbYmUuQnVpbGRJbnZhbGlkYXRlZFByb2plY3RPZkJ1bmRsZT02XT1cIkJ1aWxkSW52YWxpZGF0ZWRQcm9qZWN0T2ZCdW5kbGVcIixiZVtiZS5RdWV1ZVJlZmVyZW5jaW5nUHJvamVjdHM9N109XCJRdWV1ZVJlZmVyZW5jaW5nUHJvamVjdHNcIixiZVtiZS5Eb25lPThdPVwiRG9uZVwifSkoa3x8KGs9e30pKTtmdW5jdGlvbiBZKGJlLEdlLHVyLHlyLElyLHdyLFVyKXt2YXIgaWk9YmU9PT1WLkJ1aWxkP2suQ3JlYXRlUHJvZ3JhbTprLkVtaXRCdW5kbGUsbWkscGUsb3I7cmV0dXJuIGJlPT09Vi5CdWlsZD97a2luZDpiZSxwcm9qZWN0OnVyLHByb2plY3RQYXRoOnlyLGJ1aWxkT3JkZXI6VXIsZ2V0Q29tcGlsZXJPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHdyLm9wdGlvbnN9LGdldEN1cnJlbnREaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gR2UuY3VycmVudERpcmVjdG9yeX0sZ2V0QnVpbGRlclByb2dyYW06ZnVuY3Rpb24oKXtyZXR1cm4gc2koZS5pZGVudGl0eSl9LGdldFByb2dyYW06ZnVuY3Rpb24oKXtyZXR1cm4gc2koZnVuY3Rpb24oWGUpe3JldHVybiBYZS5nZXRQcm9ncmFtT3JVbmRlZmluZWQoKX0pfSxnZXRTb3VyY2VGaWxlOmZ1bmN0aW9uKFhlKXtyZXR1cm4gc2koZnVuY3Rpb24oSnIpe3JldHVybiBKci5nZXRTb3VyY2VGaWxlKFhlKX0pfSxnZXRTb3VyY2VGaWxlczpmdW5jdGlvbigpe3JldHVybiBEaShmdW5jdGlvbihYZSl7cmV0dXJuIFhlLmdldFNvdXJjZUZpbGVzKCl9KX0sZ2V0T3B0aW9uc0RpYWdub3N0aWNzOmZ1bmN0aW9uKFhlKXtyZXR1cm4gRGkoZnVuY3Rpb24oSnIpe3JldHVybiBKci5nZXRPcHRpb25zRGlhZ25vc3RpY3MoWGUpfSl9LGdldEdsb2JhbERpYWdub3N0aWNzOmZ1bmN0aW9uKFhlKXtyZXR1cm4gRGkoZnVuY3Rpb24oSnIpe3JldHVybiBKci5nZXRHbG9iYWxEaWFnbm9zdGljcyhYZSl9KX0sZ2V0Q29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljczpmdW5jdGlvbigpe3JldHVybiBEaShmdW5jdGlvbihYZSl7cmV0dXJuIFhlLmdldENvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3MoKX0pfSxnZXRTeW50YWN0aWNEaWFnbm9zdGljczpmdW5jdGlvbihYZSxKcil7cmV0dXJuIERpKGZ1bmN0aW9uKHRpKXtyZXR1cm4gdGkuZ2V0U3ludGFjdGljRGlhZ25vc3RpY3MoWGUsSnIpfSl9LGdldEFsbERlcGVuZGVuY2llczpmdW5jdGlvbihYZSl7cmV0dXJuIERpKGZ1bmN0aW9uKEpyKXtyZXR1cm4gSnIuZ2V0QWxsRGVwZW5kZW5jaWVzKFhlKX0pfSxnZXRTZW1hbnRpY0RpYWdub3N0aWNzOmZ1bmN0aW9uKFhlLEpyKXtyZXR1cm4gRGkoZnVuY3Rpb24odGkpe3JldHVybiB0aS5nZXRTZW1hbnRpY0RpYWdub3N0aWNzKFhlLEpyKX0pfSxnZXRTZW1hbnRpY0RpYWdub3N0aWNzT2ZOZXh0QWZmZWN0ZWRGaWxlOmZ1bmN0aW9uKFhlLEpyKXtyZXR1cm4gc2koZnVuY3Rpb24odGkpe3JldHVybiB0aS5nZXRTZW1hbnRpY0RpYWdub3N0aWNzT2ZOZXh0QWZmZWN0ZWRGaWxlJiZ0aS5nZXRTZW1hbnRpY0RpYWdub3N0aWNzT2ZOZXh0QWZmZWN0ZWRGaWxlKFhlLEpyKX0pfSxlbWl0OmZ1bmN0aW9uKFhlLEpyLHRpLFplLFNyKXtpZihYZXx8WmUpcmV0dXJuIHNpKGZ1bmN0aW9uKHpyKXt2YXIgV3IsSmU7cmV0dXJuIHpyLmVtaXQoWGUsSnIsdGksWmUsU3J8fCgoSmU9KFdyPUdlLmhvc3QpLmdldEN1c3RvbVRyYW5zZm9ybWVycyk9PT1udWxsfHxKZT09PXZvaWQgMD92b2lkIDA6SmUuY2FsbChXcix1cikpKX0pO2lmKGFlKGsuU2VtYW50aWNEaWFnbm9zdGljcyx0aSksaWk9PT1rLkVtaXRCdWlsZEluZm8pcmV0dXJuIFp0KEpyLHRpKTtpZihpaT09PWsuRW1pdClyZXR1cm4gV3QoSnIsdGksU3IpfSxkb25lOnFyfTp7a2luZDpiZSxwcm9qZWN0OnVyLHByb2plY3RQYXRoOnlyLGJ1aWxkT3JkZXI6VXIsZ2V0Q29tcGlsZXJPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHdyLm9wdGlvbnN9LGdldEN1cnJlbnREaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gR2UuY3VycmVudERpcmVjdG9yeX0sZW1pdDpmdW5jdGlvbihYZSxKcil7cmV0dXJuIGlpIT09ay5FbWl0QnVuZGxlP29yOnBpKFhlLEpyKX0sZG9uZTpxcn07ZnVuY3Rpb24gcXIoWGUsSnIsdGkpe3JldHVybiBhZShrLkRvbmUsWGUsSnIsdGkpLEwoR2UseXIpfWZ1bmN0aW9uIHNpKFhlKXtyZXR1cm4gYWUoay5DcmVhdGVQcm9ncmFtKSxtaSYmWGUobWkpfWZ1bmN0aW9uIERpKFhlKXtyZXR1cm4gc2koWGUpfHxlLmVtcHR5QXJyYXl9ZnVuY3Rpb24gd2koKXt2YXIgWGUsSnI7aWYoZS5EZWJ1Zy5hc3NlcnQobWk9PT12b2lkIDApLEdlLm9wdGlvbnMuZHJ5KXtlcihHZSxlLkRpYWdub3N0aWNzLkFfbm9uX2RyeV9idWlsZF93b3VsZF9idWlsZF9wcm9qZWN0XzAsdXIpLHBlPXcuU3VjY2VzcyxpaT1rLlF1ZXVlUmVmZXJlbmNpbmdQcm9qZWN0cztyZXR1cm59aWYoR2Uub3B0aW9ucy52ZXJib3NlJiZlcihHZSxlLkRpYWdub3N0aWNzLkJ1aWxkaW5nX3Byb2plY3RfMCx1ciksd3IuZmlsZU5hbWVzLmxlbmd0aD09PTApe1llKEdlLHlyLGUuZ2V0Q29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyh3cikpLHBlPXcuTm9uZSxpaT1rLlF1ZXVlUmVmZXJlbmNpbmdQcm9qZWN0cztyZXR1cm59dmFyIHRpPUdlLmhvc3QsWmU9R2UuY29tcGlsZXJIb3N0O0dlLnByb2plY3RDb21waWxlck9wdGlvbnM9d3Iub3B0aW9ucywoWGU9R2UubW9kdWxlUmVzb2x1dGlvbkNhY2hlKT09PW51bGx8fFhlPT09dm9pZCAwfHxYZS51cGRhdGUod3Iub3B0aW9ucyksKEpyPUdlLnR5cGVSZWZlcmVuY2VEaXJlY3RpdmVSZXNvbHV0aW9uQ2FjaGUpPT09bnVsbHx8SnI9PT12b2lkIDB8fEpyLnVwZGF0ZSh3ci5vcHRpb25zKSxtaT10aS5jcmVhdGVQcm9ncmFtKHdyLmZpbGVOYW1lcyx3ci5vcHRpb25zLFplLEkoR2UseXIsd3IpLGUuZ2V0Q29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyh3ciksd3IucHJvamVjdFJlZmVyZW5jZXMpLEdlLndhdGNoJiYoR2UubGFzdENhY2hlZFBhY2thZ2VKc29uTG9va3Vwcy5zZXQoeXIsR2UubW9kdWxlUmVzb2x1dGlvbkNhY2hlJiZlLm1hcChHZS5tb2R1bGVSZXNvbHV0aW9uQ2FjaGUuZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGUoKS5lbnRyaWVzKCksZnVuY3Rpb24oU3Ipe3ZhciB6cj1TclswXSxXcj1TclsxXTtyZXR1cm5bR2UuaG9zdC5yZWFscGF0aCYmV3I/c2UoR2UsR2UuaG9zdC5yZWFscGF0aCh6cikpOnpyLFdyXX0pKSxHZS5idWlsZGVyUHJvZ3JhbXMuc2V0KHlyLG1pKSksaWkrK31mdW5jdGlvbiBYaShYZSxKcix0aSl7dmFyIFplO1hlLmxlbmd0aD8oWmU9ZChHZSx5cixtaSx3cixYZSxKcix0aSkscGU9WmUuYnVpbGRSZXN1bHQsaWk9WmUuc3RlcCk6aWkrK31mdW5jdGlvbiBldChYZSl7ZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQobWkpLFhpKFZlKFZlKFZlKFZlKFtdLG1pLmdldENvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3MoKSwhMCksbWkuZ2V0T3B0aW9uc0RpYWdub3N0aWNzKFhlKSwhMCksbWkuZ2V0R2xvYmFsRGlhZ25vc3RpY3MoWGUpLCEwKSxtaS5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyh2b2lkIDAsWGUpLCEwKSx3LlN5bnRheEVycm9ycyxcIlN5bnRhY3RpY1wiKX1mdW5jdGlvbiBHaShYZSl7WGkoZS5EZWJ1Zy5jaGVja0RlZmluZWQobWkpLmdldFNlbWFudGljRGlhZ25vc3RpY3Modm9pZCAwLFhlKSx3LlR5cGVFcnJvcnMsXCJTZW1hbnRpY1wiKX1mdW5jdGlvbiBXdChYZSxKcix0aSl7dmFyIFplLFNyLHpyO2UuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKG1pKSxlLkRlYnVnLmFzc2VydChpaT09PWsuRW1pdCksbWkuYmFja3VwU3RhdGUoKTt2YXIgV3IsSmU9ZnVuY3Rpb24oZnIpe3JldHVybihXcnx8KFdyPVtdKSkucHVzaChmcil9LHhlPVtdLHZyPWUuZW1pdEZpbGVzQW5kUmVwb3J0RXJyb3JzKG1pLEplLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oZnIsRGUsZ3Ipe3JldHVybiB4ZS5wdXNoKHtuYW1lOmZyLHRleHQ6RGUsd3JpdGVCeXRlT3JkZXJNYXJrOmdyfSl9LEpyLCExLHRpfHwoKHpyPShTcj1HZS5ob3N0KS5nZXRDdXN0b21UcmFuc2Zvcm1lcnMpPT09bnVsbHx8enI9PT12b2lkIDA/dm9pZCAwOnpyLmNhbGwoU3IsdXIpKSkuZW1pdFJlc3VsdDtpZihXcilyZXR1cm4gbWkucmVzdG9yZVN0YXRlKCksWmU9ZChHZSx5cixtaSx3cixXcix3LkRlY2xhcmF0aW9uRW1pdEVycm9ycyxcIkRlY2xhcmF0aW9uIGZpbGVcIikscGU9WmUuYnVpbGRSZXN1bHQsaWk9WmUuc3RlcCx7ZW1pdFNraXBwZWQ6ITAsZGlhZ25vc3RpY3M6dnIuZGlhZ25vc3RpY3N9O3ZhciBtcj1HZS5ob3N0LEFyPUdlLmNvbXBpbGVySG9zdCxPZT13LkRlY2xhcmF0aW9uT3V0cHV0VW5jaGFuZ2VkLG5yPWEsTXI9ITEsUGU9ZS5jcmVhdGVEaWFnbm9zdGljQ29sbGVjdGlvbigpLFVlPW5ldyBlLk1hcDtyZXR1cm4geGUuZm9yRWFjaChmdW5jdGlvbihmcil7dmFyIERlPWZyLm5hbWUsZ3I9ZnIudGV4dCxWcj1mci53cml0ZUJ5dGVPcmRlck1hcmssVHI7IU1yJiZlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShEZSkmJihtci5maWxlRXhpc3RzKERlKSYmR2UucmVhZEZpbGVXaXRoQ2FjaGUoRGUpPT09Z3I/VHI9bXIuZ2V0TW9kaWZpZWRUaW1lKERlKTooT2UmPX53LkRlY2xhcmF0aW9uT3V0cHV0VW5jaGFuZ2VkLE1yPSEwKSksVWUuc2V0KHNlKEdlLERlKSxEZSksZS53cml0ZUZpbGUoWGU/e3dyaXRlRmlsZTpYZX06QXIsUGUsRGUsZ3IsVnIpLFRyIT09dm9pZCAwJiYobnI9UShUcixucikpfSksX3IoUGUsVWUsbnIsTXIseGUubGVuZ3RoP3hlWzBdLm5hbWU6ZS5nZXRGaXJzdFByb2plY3RPdXRwdXQod3IsIW1yLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSksT2UpLHZyfWZ1bmN0aW9uIFp0KFhlLEpyKXtlLkRlYnVnLmFzc2VydElzRGVmaW5lZChtaSksZS5EZWJ1Zy5hc3NlcnQoaWk9PT1rLkVtaXRCdWlsZEluZm8pO3ZhciB0aT1taS5lbWl0QnVpbGRJbmZvKFhlLEpyKTtyZXR1cm4gdGkuZGlhZ25vc3RpY3MubGVuZ3RoJiYoQ3IoR2UsdGkuZGlhZ25vc3RpY3MpLEdlLmRpYWdub3N0aWNzLnNldCh5cixWZShWZShbXSxHZS5kaWFnbm9zdGljcy5nZXQoeXIpLCEwKSx0aS5kaWFnbm9zdGljcywhMCkpLHBlPXcuRW1pdEVycm9ycyZwZSksdGkuZW1pdHRlZEZpbGVzJiZHZS53cml0ZSYmdGkuZW1pdHRlZEZpbGVzLmZvckVhY2goZnVuY3Rpb24oWmUpe3JldHVybiBIKEdlLHdyLFplKX0pLGwoR2UsbWksd3IpLGlpPWsuUXVldWVSZWZlcmVuY2luZ1Byb2plY3RzLHRpfWZ1bmN0aW9uIF9yKFhlLEpyLHRpLFplLFNyLHpyKXt2YXIgV3IsSmU9WGUuZ2V0RGlhZ25vc3RpY3MoKTtpZihKZS5sZW5ndGgpcmV0dXJuIFdyPWQoR2UseXIsbWksd3IsSmUsdy5FbWl0RXJyb3JzLFwiRW1pdFwiKSxwZT1Xci5idWlsZFJlc3VsdCxpaT1Xci5zdGVwLEplO0dlLndyaXRlJiZKci5mb3JFYWNoKGZ1bmN0aW9uKHZyKXtyZXR1cm4gSChHZSx3cix2cil9KTt2YXIgeGU9bmUoR2Usd3IsdGksZS5EaWFnbm9zdGljcy5VcGRhdGluZ191bmNoYW5nZWRfb3V0cHV0X3RpbWVzdGFtcHNfb2ZfcHJvamVjdF8wLEpyKTtyZXR1cm4gR2UuZGlhZ25vc3RpY3MuZGVsZXRlKHlyKSxHZS5wcm9qZWN0U3RhdHVzLnNldCh5cix7dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5VcFRvRGF0ZSxuZXdlc3REZWNsYXJhdGlvbkZpbGVDb250ZW50Q2hhbmdlZFRpbWU6WmU/Qzp4ZSxvbGRlc3RPdXRwdXRGaWxlTmFtZTpTcn0pLGwoR2UsbWksd3IpLGlpPWsuUXVldWVSZWZlcmVuY2luZ1Byb2plY3RzLHBlPXpyLEplfWZ1bmN0aW9uIHBpKFhlLEpyKXt2YXIgdGksWmU7aWYoZS5EZWJ1Zy5hc3NlcnQoYmU9PT1WLlVwZGF0ZUJ1bmRsZSksR2Uub3B0aW9ucy5kcnkpe2VyKEdlLGUuRGlhZ25vc3RpY3MuQV9ub25fZHJ5X2J1aWxkX3dvdWxkX3VwZGF0ZV9vdXRwdXRfb2ZfcHJvamVjdF8wLHVyKSxwZT13LlN1Y2Nlc3MsaWk9ay5RdWV1ZVJlZmVyZW5jaW5nUHJvamVjdHM7cmV0dXJufUdlLm9wdGlvbnMudmVyYm9zZSYmZXIoR2UsZS5EaWFnbm9zdGljcy5VcGRhdGluZ19vdXRwdXRfb2ZfcHJvamVjdF8wLHVyKTt2YXIgU3I9R2UuY29tcGlsZXJIb3N0O0dlLnByb2plY3RDb21waWxlck9wdGlvbnM9d3Iub3B0aW9uczt2YXIgenI9ZS5lbWl0VXNpbmdCdWlsZEluZm8od3IsU3IsZnVuY3Rpb24odnIpe3ZhciBtcj1PKEdlLHZyLnBhdGgpO3JldHVybiBxKEdlLG1yLEooR2UsbXIpKX0sSnJ8fCgoWmU9KHRpPUdlLmhvc3QpLmdldEN1c3RvbVRyYW5zZm9ybWVycyk9PT1udWxsfHxaZT09PXZvaWQgMD92b2lkIDA6WmUuY2FsbCh0aSx1cikpKTtpZihlLmlzU3RyaW5nKHpyKSlyZXR1cm4gZXIoR2UsZS5EaWFnbm9zdGljcy5DYW5ub3RfdXBkYXRlX291dHB1dF9vZl9wcm9qZWN0XzBfYmVjYXVzZV90aGVyZV93YXNfZXJyb3JfcmVhZGluZ19maWxlXzEsdXIsQWUoR2UsenIpKSxpaT1rLkJ1aWxkSW52YWxpZGF0ZWRQcm9qZWN0T2ZCdW5kbGUsb3I9WShWLkJ1aWxkLEdlLHVyLHlyLElyLHdyLFVyKTtlLkRlYnVnLmFzc2VydCghIXpyLmxlbmd0aCk7dmFyIFdyPWUuY3JlYXRlRGlhZ25vc3RpY0NvbGxlY3Rpb24oKSxKZT1uZXcgZS5NYXA7enIuZm9yRWFjaChmdW5jdGlvbih2cil7dmFyIG1yPXZyLm5hbWUsQXI9dnIudGV4dCxPZT12ci53cml0ZUJ5dGVPcmRlck1hcms7SmUuc2V0KHNlKEdlLG1yKSxtciksZS53cml0ZUZpbGUoWGU/e3dyaXRlRmlsZTpYZX06U3IsV3IsbXIsQXIsT2UpfSk7dmFyIHhlPV9yKFdyLEplLGEsITEsenJbMF0ubmFtZSx3LkRlY2xhcmF0aW9uT3V0cHV0VW5jaGFuZ2VkKTtyZXR1cm57ZW1pdFNraXBwZWQ6ITEsZGlhZ25vc3RpY3M6eGV9fWZ1bmN0aW9uIGFlKFhlLEpyLHRpLFplKXtmb3IoO2lpPD1YZSYmaWk8ay5Eb25lOyl7dmFyIFNyPWlpO3N3aXRjaChpaSl7Y2FzZSBrLkNyZWF0ZVByb2dyYW06d2koKTticmVhaztjYXNlIGsuU3ludGF4RGlhZ25vc3RpY3M6ZXQoSnIpO2JyZWFrO2Nhc2Ugay5TZW1hbnRpY0RpYWdub3N0aWNzOkdpKEpyKTticmVhaztjYXNlIGsuRW1pdDpXdCh0aSxKcixaZSk7YnJlYWs7Y2FzZSBrLkVtaXRCdWlsZEluZm86WnQodGksSnIpO2JyZWFrO2Nhc2Ugay5FbWl0QnVuZGxlOnBpKHRpLFplKTticmVhaztjYXNlIGsuQnVpbGRJbnZhbGlkYXRlZFByb2plY3RPZkJ1bmRsZTplLkRlYnVnLmNoZWNrRGVmaW5lZChvcikuZG9uZShKcix0aSxaZSksaWk9ay5Eb25lO2JyZWFrO2Nhc2Ugay5RdWV1ZVJlZmVyZW5jaW5nUHJvamVjdHM6V2UoR2UsdXIseXIsSXIsd3IsVXIsZS5EZWJ1Zy5jaGVja0RlZmluZWQocGUpKSxpaSsrO2JyZWFrO2Nhc2Ugay5Eb25lOmRlZmF1bHQ6ZS5hc3NlcnRUeXBlKGlpKX1lLkRlYnVnLmFzc2VydChpaT5Tcil9fX1mdW5jdGlvbiBVKGJlLEdlLHVyKXt2YXIgeXI9YmUub3B0aW9ucztyZXR1cm4gR2UudHlwZSE9PWUuVXBUb0RhdGVTdGF0dXNUeXBlLk91dE9mRGF0ZVdpdGhQcmVwZW5kfHx5ci5mb3JjZT8hMDp1ci5maWxlTmFtZXMubGVuZ3RoPT09MHx8ISFlLmdldENvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3ModXIpLmxlbmd0aHx8IWUuaXNJbmNyZW1lbnRhbENvbXBpbGF0aW9uKHVyLm9wdGlvbnMpfWZ1bmN0aW9uIGooYmUsR2UsdXIpe2lmKCEhYmUucHJvamVjdFBlbmRpbmdCdWlsZC5zaXplJiYhbGUoR2UpKXtpZihiZS5jdXJyZW50SW52YWxpZGF0ZWRQcm9qZWN0KXJldHVybiBlLmFycmF5SXNFcXVhbFRvKGJlLmN1cnJlbnRJbnZhbGlkYXRlZFByb2plY3QuYnVpbGRPcmRlcixHZSk/YmUuY3VycmVudEludmFsaWRhdGVkUHJvamVjdDp2b2lkIDA7Zm9yKHZhciB5cj1iZS5vcHRpb25zLElyPWJlLnByb2plY3RQZW5kaW5nQnVpbGQsd3I9MDt3cjxHZS5sZW5ndGg7d3IrKyl7dmFyIFVyPUdlW3dyXSxpaT1KKGJlLFVyKSxtaT1iZS5wcm9qZWN0UGVuZGluZ0J1aWxkLmdldChpaSk7aWYobWkhPT12b2lkIDApe3VyJiYodXI9ITEsTmUoYmUsR2UpKTt2YXIgcGU9cShiZSxVcixpaSk7aWYoIXBlKXtCcihiZSxpaSksSXIuZGVsZXRlKGlpKTtjb250aW51ZX1taT09PWUuQ29uZmlnRmlsZVByb2dyYW1SZWxvYWRMZXZlbC5GdWxsPyhFZShiZSxVcixpaSxwZSksSGUoYmUsaWkscGUpLHJyKGJlLFVyLGlpLHBlKSxJZShiZSxVcixpaSxwZSksX2UoYmUsVXIsaWkscGUpKTptaT09PWUuQ29uZmlnRmlsZVByb2dyYW1SZWxvYWRMZXZlbC5QYXJ0aWFsJiYocGUuZmlsZU5hbWVzPWUuZ2V0RmlsZU5hbWVzRnJvbUNvbmZpZ1NwZWNzKHBlLm9wdGlvbnMuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MsZS5nZXREaXJlY3RvcnlQYXRoKFVyKSxwZS5vcHRpb25zLGJlLnBhcnNlQ29uZmlnRmlsZUhvc3QpLGUudXBkYXRlRXJyb3JGb3JOb0lucHV0RmlsZXMocGUuZmlsZU5hbWVzLFVyLHBlLm9wdGlvbnMuY29uZmlnRmlsZS5jb25maWdGaWxlU3BlY3MscGUuZXJyb3JzLGUuY2FuSnNvblJlcG9ydE5vSW5wdXRGaWxlcyhwZS5yYXcpKSxJZShiZSxVcixpaSxwZSksX2UoYmUsVXIsaWkscGUpKTt2YXIgb3I9ZyhiZSxwZSxpaSk7aWYobHIoYmUsVXIsb3IpLCF5ci5mb3JjZSl7aWYob3IudHlwZT09PWUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwVG9EYXRlKXtZZShiZSxpaSxlLmdldENvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3MocGUpKSxJci5kZWxldGUoaWkpLHlyLmRyeSYmZXIoYmUsZS5EaWFnbm9zdGljcy5Qcm9qZWN0XzBfaXNfdXBfdG9fZGF0ZSxVcik7Y29udGludWV9aWYob3IudHlwZT09PWUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwVG9EYXRlV2l0aFVwc3RyZWFtVHlwZXMpcmV0dXJuIFllKGJlLGlpLGUuZ2V0Q29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyhwZSkpLFAoYmUsVXIsaWkscGUsR2UpfWlmKG9yLnR5cGU9PT1lLlVwVG9EYXRlU3RhdHVzVHlwZS5VcHN0cmVhbUJsb2NrZWQpe1llKGJlLGlpLGUuZ2V0Q29uZmlnRmlsZVBhcnNpbmdEaWFnbm9zdGljcyhwZSkpLElyLmRlbGV0ZShpaSkseXIudmVyYm9zZSYmZXIoYmUsb3IudXBzdHJlYW1Qcm9qZWN0QmxvY2tlZD9lLkRpYWdub3N0aWNzLlNraXBwaW5nX2J1aWxkX29mX3Byb2plY3RfMF9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfd2FzX25vdF9idWlsdDplLkRpYWdub3N0aWNzLlNraXBwaW5nX2J1aWxkX29mX3Byb2plY3RfMF9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfaGFzX2Vycm9ycyxVcixvci51cHN0cmVhbVByb2plY3ROYW1lKTtjb250aW51ZX1pZihvci50eXBlPT09ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuQ29udGFpbmVyT25seSl7WWUoYmUsaWksZS5nZXRDb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzKHBlKSksSXIuZGVsZXRlKGlpKTtjb250aW51ZX1yZXR1cm4gWShVKGJlLG9yLHBlKT9WLkJ1aWxkOlYuVXBkYXRlQnVuZGxlLGJlLFVyLGlpLHdyLHBlLEdlKX19fX1mdW5jdGlvbiBIKGJlLEdlLHVyKXt2YXIgeXI9YmUud3JpdGU7eXImJkdlLm9wdGlvbnMubGlzdEVtaXR0ZWRGaWxlcyYmeXIoXCJUU0ZJTEU6IFwiLmNvbmNhdCh1cikpfWZ1bmN0aW9uIEkoYmUsR2UsdXIpe3ZhciB5cj1iZS5vcHRpb25zLElyPWJlLmJ1aWxkZXJQcm9ncmFtcyx3cj1iZS5jb21waWxlckhvc3Q7aWYoIXlyLmZvcmNlKXt2YXIgVXI9SXIuZ2V0KEdlKTtyZXR1cm4gVXJ8fGUucmVhZEJ1aWxkZXJQcm9ncmFtKHVyLm9wdGlvbnMsd3IpfX1mdW5jdGlvbiBsKGJlLEdlLHVyKXtHZT8oR2UmJmJlLndyaXRlJiZlLmxpc3RGaWxlcyhHZSxiZS53cml0ZSksYmUuaG9zdC5hZnRlclByb2dyYW1FbWl0QW5kRGlhZ25vc3RpY3MmJmJlLmhvc3QuYWZ0ZXJQcm9ncmFtRW1pdEFuZERpYWdub3N0aWNzKEdlKSxHZS5yZWxlYXNlUHJvZ3JhbSgpKTpiZS5ob3N0LmFmdGVyRW1pdEJ1bmRsZSYmYmUuaG9zdC5hZnRlckVtaXRCdW5kbGUodXIpLGJlLnByb2plY3RDb21waWxlck9wdGlvbnM9YmUuYmFzZUNvbXBpbGVyT3B0aW9uc31mdW5jdGlvbiBkKGJlLEdlLHVyLHlyLElyLHdyLFVyKXt2YXIgaWk9ISh3ciZ3LlN5bnRheEVycm9ycykmJnVyJiYhZS5vdXRGaWxlKHVyLmdldENvbXBpbGVyT3B0aW9ucygpKTtyZXR1cm4gWWUoYmUsR2UsSXIpLGJlLnByb2plY3RTdGF0dXMuc2V0KEdlLHt0eXBlOmUuVXBUb0RhdGVTdGF0dXNUeXBlLlVuYnVpbGRhYmxlLHJlYXNvbjpcIlwiLmNvbmNhdChVcixcIiBlcnJvcnNcIil9KSxpaT97YnVpbGRSZXN1bHQ6d3Isc3RlcDprLkVtaXRCdWlsZEluZm99OihsKGJlLHVyLHlyKSx7YnVpbGRSZXN1bHQ6d3Isc3RlcDprLlF1ZXVlUmVmZXJlbmNpbmdQcm9qZWN0c30pfWZ1bmN0aW9uIEQoYmUsR2UsdXIseXIpe3ZhciBJcj1lLmdldE1vZGlmaWVkVGltZShiZS5ob3N0LEdlKTtpZih1cjxJcilyZXR1cm57dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5PdXRPZkRhdGVXaXRoU2VsZixvdXRPZkRhdGVPdXRwdXRGaWxlTmFtZTp5cixuZXdlcklucHV0RmlsZU5hbWU6R2V9fWZ1bmN0aW9uIGZlKGJlLEdlLHVyKXtmb3IodmFyIHlyPSEhYmUub3B0aW9ucy5mb3JjZSxJcj12b2lkIDAsd3I9YSxVcj1iZS5ob3N0LGlpPTAsbWk9R2UuZmlsZU5hbWVzO2lpPG1pLmxlbmd0aDtpaSsrKXt2YXIgcGU9bWlbaWldO2lmKCFVci5maWxlRXhpc3RzKHBlKSlyZXR1cm57dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5VbmJ1aWxkYWJsZSxyZWFzb246XCJcIi5jb25jYXQocGUsXCIgZG9lcyBub3QgZXhpc3RcIil9O2lmKCF5cil7dmFyIG9yPWUuZ2V0TW9kaWZpZWRUaW1lKFVyLHBlKTtvcj53ciYmKElyPXBlLHdyPW9yKX19aWYoIUdlLmZpbGVOYW1lcy5sZW5ndGgmJiFlLmNhbkpzb25SZXBvcnROb0lucHV0RmlsZXMoR2UucmF3KSlyZXR1cm57dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5Db250YWluZXJPbmx5fTt2YXIgcXI9ZS5nZXRBbGxQcm9qZWN0T3V0cHV0cyhHZSwhVXIudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpKSxzaT1cIihub25lKVwiLERpPUMsd2k9XCIobm9uZSlcIixYaT1hLGV0LEdpPWEsV3Q9ITE7aWYoIXlyKWZvcih2YXIgWnQ9MCxfcj1xcjtadDxfci5sZW5ndGg7WnQrKyl7dmFyIHBpPV9yW1p0XTtpZighVXIuZmlsZUV4aXN0cyhwaSkpe2V0PXBpO2JyZWFrfXZhciBhZT1lLmdldE1vZGlmaWVkVGltZShVcixwaSk7aWYoYWU8RGkmJihEaT1hZSxzaT1waSksYWU8d3Ipe1d0PSEwO2JyZWFrfWlmKGFlPlhpJiYoWGk9YWUsd2k9cGkpLGUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKHBpKSl7dmFyIFhlPWUuZ2V0TW9kaWZpZWRUaW1lKFVyLHBpKTtHaT1RKEdpLFhlKX19dmFyIEpyPSExLHRpPSExLFplO2lmKEdlLnByb2plY3RSZWZlcmVuY2VzKXtiZS5wcm9qZWN0U3RhdHVzLnNldCh1cix7dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5Db21wdXRpbmdVcHN0cmVhbX0pO2Zvcih2YXIgU3I9MCx6cj1HZS5wcm9qZWN0UmVmZXJlbmNlcztTcjx6ci5sZW5ndGg7U3IrKyl7dmFyIFdyPXpyW1NyXTt0aT10aXx8ISFXci5wcmVwZW5kO3ZhciBKZT1lLnJlc29sdmVQcm9qZWN0UmVmZXJlbmNlUGF0aChXcikseGU9SihiZSxKZSksdnI9ZyhiZSxxKGJlLEplLHhlKSx4ZSk7aWYoISh2ci50eXBlPT09ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuQ29tcHV0aW5nVXBzdHJlYW18fHZyLnR5cGU9PT1lLlVwVG9EYXRlU3RhdHVzVHlwZS5Db250YWluZXJPbmx5KSl7aWYodnIudHlwZT09PWUuVXBUb0RhdGVTdGF0dXNUeXBlLlVuYnVpbGRhYmxlfHx2ci50eXBlPT09ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBzdHJlYW1CbG9ja2VkKXJldHVybnt0eXBlOmUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwc3RyZWFtQmxvY2tlZCx1cHN0cmVhbVByb2plY3ROYW1lOldyLnBhdGgsdXBzdHJlYW1Qcm9qZWN0QmxvY2tlZDp2ci50eXBlPT09ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBzdHJlYW1CbG9ja2VkfTtpZih2ci50eXBlIT09ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBUb0RhdGUpcmV0dXJue3R5cGU6ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBzdHJlYW1PdXRPZkRhdGUsdXBzdHJlYW1Qcm9qZWN0TmFtZTpXci5wYXRofTtpZigheXImJiFldCl7aWYodnIubmV3ZXN0SW5wdXRGaWxlVGltZSYmdnIubmV3ZXN0SW5wdXRGaWxlVGltZTw9RGkpY29udGludWU7aWYodnIubmV3ZXN0RGVjbGFyYXRpb25GaWxlQ29udGVudENoYW5nZWRUaW1lJiZ2ci5uZXdlc3REZWNsYXJhdGlvbkZpbGVDb250ZW50Q2hhbmdlZFRpbWU8PURpKXtKcj0hMCxaZT1Xci5wYXRoO2NvbnRpbnVlfXJldHVybiBlLkRlYnVnLmFzc2VydChzaSE9PXZvaWQgMCxcIlNob3VsZCBoYXZlIGFuIG9sZGVzdCBvdXRwdXQgZmlsZW5hbWUgaGVyZVwiKSx7dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5PdXRPZkRhdGVXaXRoVXBzdHJlYW0sb3V0T2ZEYXRlT3V0cHV0RmlsZU5hbWU6c2ksbmV3ZXJQcm9qZWN0TmFtZTpXci5wYXRofX19fX1pZihldCE9PXZvaWQgMClyZXR1cm57dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5PdXRwdXRNaXNzaW5nLG1pc3NpbmdPdXRwdXRGaWxlTmFtZTpldH07aWYoV3QpcmV0dXJue3R5cGU6ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuT3V0T2ZEYXRlV2l0aFNlbGYsb3V0T2ZEYXRlT3V0cHV0RmlsZU5hbWU6c2ksbmV3ZXJJbnB1dEZpbGVOYW1lOklyfTt2YXIgbXI9RChiZSxHZS5vcHRpb25zLmNvbmZpZ0ZpbGVQYXRoLERpLHNpKTtpZihtcilyZXR1cm4gbXI7dmFyIEFyPWUuZm9yRWFjaChHZS5vcHRpb25zLmNvbmZpZ0ZpbGUuZXh0ZW5kZWRTb3VyY2VGaWxlc3x8ZS5lbXB0eUFycmF5LGZ1bmN0aW9uKFVlKXtyZXR1cm4gRChiZSxVZSxEaSxzaSl9KTtpZihBcilyZXR1cm4gQXI7dmFyIE9lPWUuZm9yRWFjaChiZS5sYXN0Q2FjaGVkUGFja2FnZUpzb25Mb29rdXBzLmdldCh1cil8fGUuZW1wdHlBcnJheSxmdW5jdGlvbihVZSl7dmFyIGZyPVVlWzBdO3JldHVybiBEKGJlLGZyLERpLHNpKX0pO2lmKE9lKXJldHVybiBPZTtpZigheXImJiFiZS5idWlsZEluZm9DaGVja2VkLmhhcyh1cikpe2JlLmJ1aWxkSW5mb0NoZWNrZWQuc2V0KHVyLCEwKTt2YXIgbnI9ZS5nZXRUc0J1aWxkSW5mb0VtaXRPdXRwdXRGaWxlUGF0aChHZS5vcHRpb25zKTtpZihucil7dmFyIE1yPWJlLnJlYWRGaWxlV2l0aENhY2hlKG5yKSxQZT1NciYmZS5nZXRCdWlsZEluZm8oTXIpO2lmKFBlJiYoUGUuYnVuZGxlfHxQZS5wcm9ncmFtKSYmUGUudmVyc2lvbiE9PWUudmVyc2lvbilyZXR1cm57dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5Uc1ZlcnNpb25PdXRwdXRPZkRhdGUsdmVyc2lvbjpQZS52ZXJzaW9ufX19cmV0dXJuIHRpJiZKcj97dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5PdXRPZkRhdGVXaXRoUHJlcGVuZCxvdXRPZkRhdGVPdXRwdXRGaWxlTmFtZTpzaSxuZXdlclByb2plY3ROYW1lOlplfTp7dHlwZTpKcj9lLlVwVG9EYXRlU3RhdHVzVHlwZS5VcFRvRGF0ZVdpdGhVcHN0cmVhbVR5cGVzOmUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwVG9EYXRlLG5ld2VzdERlY2xhcmF0aW9uRmlsZUNvbnRlbnRDaGFuZ2VkVGltZTpHaSxuZXdlc3RJbnB1dEZpbGVUaW1lOndyLG5ld2VzdE91dHB1dEZpbGVUaW1lOlhpLG5ld2VzdElucHV0RmlsZU5hbWU6SXIsbmV3ZXN0T3V0cHV0RmlsZU5hbWU6d2ksb2xkZXN0T3V0cHV0RmlsZU5hbWU6c2l9fWZ1bmN0aW9uIGcoYmUsR2UsdXIpe2lmKEdlPT09dm9pZCAwKXJldHVybnt0eXBlOmUuVXBUb0RhdGVTdGF0dXNUeXBlLlVuYnVpbGRhYmxlLHJlYXNvbjpcIkZpbGUgZGVsZXRlZCBtaWQtYnVpbGRcIn07dmFyIHlyPWJlLnByb2plY3RTdGF0dXMuZ2V0KHVyKTtpZih5ciE9PXZvaWQgMClyZXR1cm4geXI7dmFyIElyPWZlKGJlLEdlLHVyKTtyZXR1cm4gYmUucHJvamVjdFN0YXR1cy5zZXQodXIsSXIpLElyfWZ1bmN0aW9uIG5lKGJlLEdlLHVyLHlyLElyKXtpZihHZS5vcHRpb25zLm5vRW1pdClyZXR1cm4gdXI7dmFyIHdyPWJlLmhvc3QsVXI9ZS5nZXRBbGxQcm9qZWN0T3V0cHV0cyhHZSwhd3IudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpKTtpZighSXJ8fFVyLmxlbmd0aCE9PUlyLnNpemUpZm9yKHZhciBpaT0hIWJlLm9wdGlvbnMudmVyYm9zZSxtaT13ci5ub3c/d3Iubm93KCk6bmV3IERhdGUscGU9MCxvcj1VcjtwZTxvci5sZW5ndGg7cGUrKyl7dmFyIHFyPW9yW3BlXTtJciYmSXIuaGFzKHNlKGJlLHFyKSl8fChpaSYmKGlpPSExLGVyKGJlLHlyLEdlLm9wdGlvbnMuY29uZmlnRmlsZVBhdGgpKSxlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShxcikmJih1cj1RKHVyLGUuZ2V0TW9kaWZpZWRUaW1lKHdyLHFyKSkpLHdyLnNldE1vZGlmaWVkVGltZShxcixtaSkpfXJldHVybiB1cn1mdW5jdGlvbiB1ZShiZSxHZSx1cil7aWYoYmUub3B0aW9ucy5kcnkpcmV0dXJuIGVyKGJlLGUuRGlhZ25vc3RpY3MuQV9ub25fZHJ5X2J1aWxkX3dvdWxkX3VwZGF0ZV90aW1lc3RhbXBzX2Zvcl9vdXRwdXRfb2ZfcHJvamVjdF8wLEdlLm9wdGlvbnMuY29uZmlnRmlsZVBhdGgpO3ZhciB5cj1uZShiZSxHZSxhLGUuRGlhZ25vc3RpY3MuVXBkYXRpbmdfb3V0cHV0X3RpbWVzdGFtcHNfb2ZfcHJvamVjdF8wKTtiZS5wcm9qZWN0U3RhdHVzLnNldCh1cix7dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5VcFRvRGF0ZSxuZXdlc3REZWNsYXJhdGlvbkZpbGVDb250ZW50Q2hhbmdlZFRpbWU6eXIsb2xkZXN0T3V0cHV0RmlsZU5hbWU6ZS5nZXRGaXJzdFByb2plY3RPdXRwdXQoR2UsIWJlLmhvc3QudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpKX0pfWZ1bmN0aW9uIFdlKGJlLEdlLHVyLHlyLElyLHdyLFVyKXtpZighKFVyJncuQW55RXJyb3JzKSYmISFJci5vcHRpb25zLmNvbXBvc2l0ZSlmb3IodmFyIGlpPXlyKzE7aWk8d3IubGVuZ3RoO2lpKyspe3ZhciBtaT13cltpaV0scGU9SihiZSxtaSk7aWYoIWJlLnByb2plY3RQZW5kaW5nQnVpbGQuaGFzKHBlKSl7dmFyIG9yPXEoYmUsbWkscGUpO2lmKCEoIW9yfHwhb3IucHJvamVjdFJlZmVyZW5jZXMpKWZvcih2YXIgcXI9MCxzaT1vci5wcm9qZWN0UmVmZXJlbmNlcztxcjxzaS5sZW5ndGg7cXIrKyl7dmFyIERpPXNpW3FyXSx3aT1PKGJlLERpLnBhdGgpO2lmKEooYmUsd2kpPT09dXIpe3ZhciBYaT1iZS5wcm9qZWN0U3RhdHVzLmdldChwZSk7aWYoWGkpc3dpdGNoKFhpLnR5cGUpe2Nhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBUb0RhdGU6aWYoVXImdy5EZWNsYXJhdGlvbk91dHB1dFVuY2hhbmdlZCl7RGkucHJlcGVuZD9iZS5wcm9qZWN0U3RhdHVzLnNldChwZSx7dHlwZTplLlVwVG9EYXRlU3RhdHVzVHlwZS5PdXRPZkRhdGVXaXRoUHJlcGVuZCxvdXRPZkRhdGVPdXRwdXRGaWxlTmFtZTpYaS5vbGRlc3RPdXRwdXRGaWxlTmFtZSxuZXdlclByb2plY3ROYW1lOkdlfSk6WGkudHlwZT1lLlVwVG9EYXRlU3RhdHVzVHlwZS5VcFRvRGF0ZVdpdGhVcHN0cmVhbVR5cGVzO2JyZWFrfWNhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBUb0RhdGVXaXRoVXBzdHJlYW1UeXBlczpjYXNlIGUuVXBUb0RhdGVTdGF0dXNUeXBlLk91dE9mRGF0ZVdpdGhQcmVwZW5kOlVyJncuRGVjbGFyYXRpb25PdXRwdXRVbmNoYW5nZWR8fGJlLnByb2plY3RTdGF0dXMuc2V0KHBlLHt0eXBlOmUuVXBUb0RhdGVTdGF0dXNUeXBlLk91dE9mRGF0ZVdpdGhVcHN0cmVhbSxvdXRPZkRhdGVPdXRwdXRGaWxlTmFtZTpYaS50eXBlPT09ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuT3V0T2ZEYXRlV2l0aFByZXBlbmQ/WGkub3V0T2ZEYXRlT3V0cHV0RmlsZU5hbWU6WGkub2xkZXN0T3V0cHV0RmlsZU5hbWUsbmV3ZXJQcm9qZWN0TmFtZTpHZX0pO2JyZWFrO2Nhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBzdHJlYW1CbG9ja2VkOkooYmUsTyhiZSxYaS51cHN0cmVhbVByb2plY3ROYW1lKSk9PT11ciYmJChiZSxwZSk7YnJlYWt9QShiZSxwZSxlLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuTm9uZSk7YnJlYWt9fX19fWZ1bmN0aW9uIEZlKGJlLEdlLHVyLHlyLElyLHdyKXt2YXIgVXI9RihiZSxHZSx3cik7aWYoIVVyKXJldHVybiBlLkV4aXRTdGF0dXMuSW52YWxpZFByb2plY3RfT3V0cHV0c1NraXBwZWQ7eShiZSx1cik7Zm9yKHZhciBpaT0hMCxtaT0wOzspe3ZhciBwZT1qKGJlLFVyLGlpKTtpZighcGUpYnJlYWs7aWk9ITEscGUuZG9uZSh1cix5cixJcj09bnVsbD92b2lkIDA6SXIocGUucHJvamVjdCkpLGJlLmRpYWdub3N0aWNzLmhhcyhwZS5wcm9qZWN0UGF0aCl8fG1pKyt9cmV0dXJuIFgoYmUpLEVyKGJlLFVyKSx3ZShiZSxVciksbGUoVXIpP2UuRXhpdFN0YXR1cy5Qcm9qZWN0UmVmZXJlbmNlQ3ljbGVfT3V0cHV0c1NraXBwZWQ6VXIuc29tZShmdW5jdGlvbihvcil7cmV0dXJuIGJlLmRpYWdub3N0aWNzLmhhcyhKKGJlLG9yKSl9KT9taT9lLkV4aXRTdGF0dXMuRGlhZ25vc3RpY3NQcmVzZW50X091dHB1dHNHZW5lcmF0ZWQ6ZS5FeGl0U3RhdHVzLkRpYWdub3N0aWNzUHJlc2VudF9PdXRwdXRzU2tpcHBlZDplLkV4aXRTdGF0dXMuU3VjY2Vzc31mdW5jdGlvbiBaKGJlLEdlLHVyKXt2YXIgeXI9RihiZSxHZSx1cik7aWYoIXlyKXJldHVybiBlLkV4aXRTdGF0dXMuSW52YWxpZFByb2plY3RfT3V0cHV0c1NraXBwZWQ7aWYobGUoeXIpKXJldHVybiBDcihiZSx5ci5jaXJjdWxhckRpYWdub3N0aWNzKSxlLkV4aXRTdGF0dXMuUHJvamVjdFJlZmVyZW5jZUN5Y2xlX091dHB1dHNTa2lwcGVkO2Zvcih2YXIgSXI9YmUub3B0aW9ucyx3cj1iZS5ob3N0LFVyPUlyLmRyeT9bXTp2b2lkIDAsaWk9MCxtaT15cjtpaTxtaS5sZW5ndGg7aWkrKyl7dmFyIHBlPW1pW2lpXSxvcj1KKGJlLHBlKSxxcj1xKGJlLHBlLG9yKTtpZihxcj09PXZvaWQgMCl7QnIoYmUsb3IpO2NvbnRpbnVlfXZhciBzaT1lLmdldEFsbFByb2plY3RPdXRwdXRzKHFyLCF3ci51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCkpO2lmKCEhc2kubGVuZ3RoKWZvcih2YXIgRGk9bmV3IGUuU2V0KHFyLmZpbGVOYW1lcy5tYXAoZnVuY3Rpb24oR2kpe3JldHVybiBzZShiZSxHaSl9KSksd2k9MCxYaT1zaTt3aTxYaS5sZW5ndGg7d2krKyl7dmFyIGV0PVhpW3dpXTtEaS5oYXMoc2UoYmUsZXQpKXx8d3IuZmlsZUV4aXN0cyhldCkmJihVcj9Vci5wdXNoKGV0KTood3IuZGVsZXRlRmlsZShldCksQmUoYmUsb3IsZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLk5vbmUpKSl9fXJldHVybiBVciYmZXIoYmUsZS5EaWFnbm9zdGljcy5BX25vbl9kcnlfYnVpbGRfd291bGRfZGVsZXRlX3RoZV9mb2xsb3dpbmdfZmlsZXNfQ29sb25fMCxVci5tYXAoZnVuY3Rpb24oR2kpe3JldHVybmBcXHJcbiAqIGAuY29uY2F0KEdpKX0pLmpvaW4oXCJcIikpLGUuRXhpdFN0YXR1cy5TdWNjZXNzfWZ1bmN0aW9uIEJlKGJlLEdlLHVyKXtiZS5ob3N0LmdldFBhcnNlZENvbW1hbmRMaW5lJiZ1cj09PWUuQ29uZmlnRmlsZVByb2dyYW1SZWxvYWRMZXZlbC5QYXJ0aWFsJiYodXI9ZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGwpLHVyPT09ZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGwmJihiZS5jb25maWdGaWxlQ2FjaGUuZGVsZXRlKEdlKSxiZS5idWlsZE9yZGVyPXZvaWQgMCksYmUubmVlZHNTdW1tYXJ5PSEwLCQoYmUsR2UpLEEoYmUsR2UsdXIpLHgoYmUpfWZ1bmN0aW9uIGdlKGJlLEdlLHVyKXtiZS5yZXBvcnRGaWxlQ2hhbmdlRGV0ZWN0ZWQ9ITAsQmUoYmUsR2UsdXIpLFJlKGJlKX1mdW5jdGlvbiBSZShiZSl7dmFyIEdlPWJlLmhvc3RXaXRoV2F0Y2g7IUdlLnNldFRpbWVvdXR8fCFHZS5jbGVhclRpbWVvdXR8fChiZS50aW1lclRvQnVpbGRJbnZhbGlkYXRlZFByb2plY3QmJkdlLmNsZWFyVGltZW91dChiZS50aW1lclRvQnVpbGRJbnZhbGlkYXRlZFByb2plY3QpLGJlLnRpbWVyVG9CdWlsZEludmFsaWRhdGVkUHJvamVjdD1HZS5zZXRUaW1lb3V0KHplLDI1MCxiZSkpfWZ1bmN0aW9uIHplKGJlKXtiZS50aW1lclRvQnVpbGRJbnZhbGlkYXRlZFByb2plY3Q9dm9pZCAwLGJlLnJlcG9ydEZpbGVDaGFuZ2VEZXRlY3RlZCYmKGJlLnJlcG9ydEZpbGVDaGFuZ2VEZXRlY3RlZD0hMSxiZS5wcm9qZWN0RXJyb3JzUmVwb3J0ZWQuY2xlYXIoKSxpcihiZSxlLkRpYWdub3N0aWNzLkZpbGVfY2hhbmdlX2RldGVjdGVkX1N0YXJ0aW5nX2luY3JlbWVudGFsX2NvbXBpbGF0aW9uKSk7dmFyIEdlPWVlKGJlKSx1cj1qKGJlLEdlLCExKTtpZih1ciYmKHVyLmRvbmUoKSxiZS5wcm9qZWN0UGVuZGluZ0J1aWxkLnNpemUpKXtiZS53YXRjaCYmIWJlLnRpbWVyVG9CdWlsZEludmFsaWRhdGVkUHJvamVjdCYmUmUoYmUpO3JldHVybn1YKGJlKSxFcihiZSxHZSl9ZnVuY3Rpb24gRWUoYmUsR2UsdXIseXIpeyFiZS53YXRjaHx8YmUuYWxsV2F0Y2hlZENvbmZpZ0ZpbGVzLmhhcyh1cil8fGJlLmFsbFdhdGNoZWRDb25maWdGaWxlcy5zZXQodXIsYmUud2F0Y2hGaWxlKEdlLGZ1bmN0aW9uKCl7Z2UoYmUsdXIsZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLkZ1bGwpfSxlLlBvbGxpbmdJbnRlcnZhbC5IaWdoLHlyPT1udWxsP3ZvaWQgMDp5ci53YXRjaE9wdGlvbnMsZS5XYXRjaFR5cGUuQ29uZmlnRmlsZSxHZSkpfWZ1bmN0aW9uIEhlKGJlLEdlLHVyKXtlLnVwZGF0ZVNoYXJlZEV4dGVuZGVkQ29uZmlnRmlsZVdhdGNoZXIoR2UsdXI9PW51bGw/dm9pZCAwOnVyLm9wdGlvbnMsYmUuYWxsV2F0Y2hlZEV4dGVuZGVkQ29uZmlnRmlsZXMsZnVuY3Rpb24oeXIsSXIpe3JldHVybiBiZS53YXRjaEZpbGUoeXIsZnVuY3Rpb24oKXt2YXIgd3I7cmV0dXJuKHdyPWJlLmFsbFdhdGNoZWRFeHRlbmRlZENvbmZpZ0ZpbGVzLmdldChJcikpPT09bnVsbHx8d3I9PT12b2lkIDA/dm9pZCAwOndyLnByb2plY3RzLmZvckVhY2goZnVuY3Rpb24oVXIpe3JldHVybiBnZShiZSxVcixlLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuRnVsbCl9KX0sZS5Qb2xsaW5nSW50ZXJ2YWwuSGlnaCx1cj09bnVsbD92b2lkIDA6dXIud2F0Y2hPcHRpb25zLGUuV2F0Y2hUeXBlLkV4dGVuZGVkQ29uZmlnRmlsZSl9LGZ1bmN0aW9uKHlyKXtyZXR1cm4gc2UoYmUseXIpfSl9ZnVuY3Rpb24gcnIoYmUsR2UsdXIseXIpeyFiZS53YXRjaHx8ZS51cGRhdGVXYXRjaGluZ1dpbGRjYXJkRGlyZWN0b3JpZXMoRShiZS5hbGxXYXRjaGVkV2lsZGNhcmREaXJlY3Rvcmllcyx1ciksbmV3IGUuTWFwKGUuZ2V0RW50cmllcyh5ci53aWxkY2FyZERpcmVjdG9yaWVzKSksZnVuY3Rpb24oSXIsd3Ipe3JldHVybiBiZS53YXRjaERpcmVjdG9yeShJcixmdW5jdGlvbihVcil7dmFyIGlpO2UuaXNJZ25vcmVkRmlsZUZyb21XaWxkQ2FyZFdhdGNoaW5nKHt3YXRjaGVkRGlyUGF0aDpzZShiZSxJciksZmlsZU9yRGlyZWN0b3J5OlVyLGZpbGVPckRpcmVjdG9yeVBhdGg6c2UoYmUsVXIpLGNvbmZpZ0ZpbGVOYW1lOkdlLGN1cnJlbnREaXJlY3Rvcnk6YmUuY3VycmVudERpcmVjdG9yeSxvcHRpb25zOnlyLm9wdGlvbnMscHJvZ3JhbTpiZS5idWlsZGVyUHJvZ3JhbXMuZ2V0KHVyKXx8KChpaT1SKGJlLHVyKSk9PT1udWxsfHxpaT09PXZvaWQgMD92b2lkIDA6aWkuZmlsZU5hbWVzKSx1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOmJlLnBhcnNlQ29uZmlnRmlsZUhvc3QudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyx3cml0ZUxvZzpmdW5jdGlvbihtaSl7cmV0dXJuIGJlLndyaXRlTG9nKG1pKX0sdG9QYXRoOmZ1bmN0aW9uKG1pKXtyZXR1cm4gc2UoYmUsbWkpfX0pfHxnZShiZSx1cixlLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuUGFydGlhbCl9LHdyLHlyPT1udWxsP3ZvaWQgMDp5ci53YXRjaE9wdGlvbnMsZS5XYXRjaFR5cGUuV2lsZGNhcmREaXJlY3RvcnksR2UpfSl9ZnVuY3Rpb24gSWUoYmUsR2UsdXIseXIpeyFiZS53YXRjaHx8ZS5tdXRhdGVNYXAoRShiZS5hbGxXYXRjaGVkSW5wdXRGaWxlcyx1ciksZS5hcnJheVRvTWFwKHlyLmZpbGVOYW1lcyxmdW5jdGlvbihJcil7cmV0dXJuIHNlKGJlLElyKX0pLHtjcmVhdGVOZXdWYWx1ZTpmdW5jdGlvbihJcix3cil7cmV0dXJuIGJlLndhdGNoRmlsZSh3cixmdW5jdGlvbigpe3JldHVybiBnZShiZSx1cixlLkNvbmZpZ0ZpbGVQcm9ncmFtUmVsb2FkTGV2ZWwuTm9uZSl9LGUuUG9sbGluZ0ludGVydmFsLkxvdyx5cj09bnVsbD92b2lkIDA6eXIud2F0Y2hPcHRpb25zLGUuV2F0Y2hUeXBlLlNvdXJjZUZpbGUsR2UpfSxvbkRlbGV0ZVZhbHVlOmUuY2xvc2VGaWxlV2F0Y2hlcn0pfWZ1bmN0aW9uIF9lKGJlLEdlLHVyLHlyKXshYmUud2F0Y2h8fCFiZS5sYXN0Q2FjaGVkUGFja2FnZUpzb25Mb29rdXBzfHxlLm11dGF0ZU1hcChFKGJlLmFsbFdhdGNoZWRQYWNrYWdlSnNvbkZpbGVzLHVyKSxuZXcgZS5NYXAoYmUubGFzdENhY2hlZFBhY2thZ2VKc29uTG9va3Vwcy5nZXQodXIpKSx7Y3JlYXRlTmV3VmFsdWU6ZnVuY3Rpb24oSXIsd3Ipe3JldHVybiBiZS53YXRjaEZpbGUoSXIsZnVuY3Rpb24oKXtyZXR1cm4gZ2UoYmUsdXIsZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLk5vbmUpfSxlLlBvbGxpbmdJbnRlcnZhbC5IaWdoLHlyPT1udWxsP3ZvaWQgMDp5ci53YXRjaE9wdGlvbnMsZS5XYXRjaFR5cGUuUGFja2FnZUpzb24sR2UpfSxvbkRlbGV0ZVZhbHVlOmUuY2xvc2VGaWxlV2F0Y2hlcn0pfWZ1bmN0aW9uIHdlKGJlLEdlKXtpZighIWJlLndhdGNoQWxsUHJvamVjdHNQZW5kaW5nKXtiZS53YXRjaEFsbFByb2plY3RzUGVuZGluZz0hMTtmb3IodmFyIHVyPTAseXI9TihHZSk7dXI8eXIubGVuZ3RoO3VyKyspe3ZhciBJcj15clt1cl0sd3I9SihiZSxJciksVXI9cShiZSxJcix3cik7RWUoYmUsSXIsd3IsVXIpLEhlKGJlLHdyLFVyKSxVciYmKHJyKGJlLElyLHdyLFVyKSxJZShiZSxJcix3cixVciksX2UoYmUsSXIsd3IsVXIpKX19fWZ1bmN0aW9uIGRlKGJlKXtlLmNsZWFyTWFwKGJlLmFsbFdhdGNoZWRDb25maWdGaWxlcyxlLmNsb3NlRmlsZVdhdGNoZXIpLGUuY2xlYXJNYXAoYmUuYWxsV2F0Y2hlZEV4dGVuZGVkQ29uZmlnRmlsZXMsZS5jbG9zZUZpbGVXYXRjaGVyT2YpLGUuY2xlYXJNYXAoYmUuYWxsV2F0Y2hlZFdpbGRjYXJkRGlyZWN0b3JpZXMsZnVuY3Rpb24oR2Upe3JldHVybiBlLmNsZWFyTWFwKEdlLGUuY2xvc2VGaWxlV2F0Y2hlck9mKX0pLGUuY2xlYXJNYXAoYmUuYWxsV2F0Y2hlZElucHV0RmlsZXMsZnVuY3Rpb24oR2Upe3JldHVybiBlLmNsZWFyTWFwKEdlLGUuY2xvc2VGaWxlV2F0Y2hlcil9KSxlLmNsZWFyTWFwKGJlLmFsbFdhdGNoZWRQYWNrYWdlSnNvbkZpbGVzLGZ1bmN0aW9uKEdlKXtyZXR1cm4gZS5jbGVhck1hcChHZSxlLmNsb3NlRmlsZVdhdGNoZXIpfSl9ZnVuY3Rpb24geWUoYmUsR2UsdXIseXIsSXIpe3ZhciB3cj1iKGJlLEdlLHVyLHlyLElyKTtyZXR1cm57YnVpbGQ6ZnVuY3Rpb24oVXIsaWksbWkscGUpe3JldHVybiBGZSh3cixVcixpaSxtaSxwZSl9LGNsZWFuOmZ1bmN0aW9uKFVyKXtyZXR1cm4gWih3cixVcil9LGJ1aWxkUmVmZXJlbmNlczpmdW5jdGlvbihVcixpaSxtaSxwZSl7cmV0dXJuIEZlKHdyLFVyLGlpLG1pLHBlLCEwKX0sY2xlYW5SZWZlcmVuY2VzOmZ1bmN0aW9uKFVyKXtyZXR1cm4gWih3cixVciwhMCl9LGdldE5leHRJbnZhbGlkYXRlZFByb2plY3Q6ZnVuY3Rpb24oVXIpe3JldHVybiB5KHdyLFVyKSxqKHdyLGVlKHdyKSwhMSl9LGdldEJ1aWxkT3JkZXI6ZnVuY3Rpb24oKXtyZXR1cm4gZWUod3IpfSxnZXRVcFRvRGF0ZVN0YXR1c09mUHJvamVjdDpmdW5jdGlvbihVcil7dmFyIGlpPU8od3IsVXIpLG1pPUood3IsaWkpO3JldHVybiBnKHdyLHEod3IsaWksbWkpLG1pKX0saW52YWxpZGF0ZVByb2plY3Q6ZnVuY3Rpb24oVXIsaWkpe3JldHVybiBCZSh3cixVcixpaXx8ZS5Db25maWdGaWxlUHJvZ3JhbVJlbG9hZExldmVsLk5vbmUpfSxidWlsZE5leHRJbnZhbGlkYXRlZFByb2plY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gemUod3IpfSxnZXRBbGxQYXJzZWRDb25maWdzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXJyYXlGcm9tKGUubWFwRGVmaW5lZEl0ZXJhdG9yKHdyLmNvbmZpZ0ZpbGVDYWNoZS52YWx1ZXMoKSxmdW5jdGlvbihVcil7cmV0dXJuIGllKFVyKT9Vcjp2b2lkIDB9KSl9LGNsb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIGRlKHdyKX19fWZ1bmN0aW9uIEFlKGJlLEdlKXtyZXR1cm4gZS5jb252ZXJ0VG9SZWxhdGl2ZVBhdGgoR2UsYmUuY3VycmVudERpcmVjdG9yeSxmdW5jdGlvbih1cil7cmV0dXJuIGJlLmdldENhbm9uaWNhbEZpbGVOYW1lKHVyKX0pfWZ1bmN0aW9uIGVyKGJlLEdlKXtmb3IodmFyIHVyPVtdLHlyPTI7eXI8YXJndW1lbnRzLmxlbmd0aDt5cisrKXVyW3lyLTJdPWFyZ3VtZW50c1t5cl07YmUuaG9zdC5yZXBvcnRTb2x1dGlvbkJ1aWxkZXJTdGF0dXMoZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMuYXBwbHkodm9pZCAwLFZlKFtHZV0sdXIsITEpKSl9ZnVuY3Rpb24gaXIoYmUsR2Upe2Zvcih2YXIgdXIseXIsSXI9W10sd3I9Mjt3cjxhcmd1bWVudHMubGVuZ3RoO3dyKyspSXJbd3ItMl09YXJndW1lbnRzW3dyXTsoeXI9KHVyPWJlLmhvc3RXaXRoV2F0Y2gpLm9uV2F0Y2hTdGF0dXNDaGFuZ2UpPT09bnVsbHx8eXI9PT12b2lkIDB8fHlyLmNhbGwodXIsZS5jcmVhdGVDb21waWxlckRpYWdub3N0aWMuYXBwbHkodm9pZCAwLFZlKFtHZV0sSXIsITEpKSxiZS5ob3N0LmdldE5ld0xpbmUoKSxiZS5iYXNlQ29tcGlsZXJPcHRpb25zKX1mdW5jdGlvbiBDcihiZSxHZSl7dmFyIHVyPWJlLmhvc3Q7R2UuZm9yRWFjaChmdW5jdGlvbih5cil7cmV0dXJuIHVyLnJlcG9ydERpYWdub3N0aWMoeXIpfSl9ZnVuY3Rpb24gWWUoYmUsR2UsdXIpe0NyKGJlLHVyKSxiZS5wcm9qZWN0RXJyb3JzUmVwb3J0ZWQuc2V0KEdlLCEwKSx1ci5sZW5ndGgmJmJlLmRpYWdub3N0aWNzLnNldChHZSx1cil9ZnVuY3Rpb24gQnIoYmUsR2Upe1llKGJlLEdlLFtiZS5jb25maWdGaWxlQ2FjaGUuZ2V0KEdlKV0pfWZ1bmN0aW9uIEVyKGJlLEdlKXtpZighIWJlLm5lZWRzU3VtbWFyeSl7YmUubmVlZHNTdW1tYXJ5PSExO3ZhciB1cj1iZS53YXRjaHx8ISFiZS5ob3N0LnJlcG9ydEVycm9yU3VtbWFyeSx5cj1iZS5kaWFnbm9zdGljcyxJcj0wLHdyPVtdO2xlKEdlKT8oTmUoYmUsR2UuYnVpbGRPcmRlciksQ3IoYmUsR2UuY2lyY3VsYXJEaWFnbm9zdGljcyksdXImJihJcis9ZS5nZXRFcnJvckNvdW50Rm9yU3VtbWFyeShHZS5jaXJjdWxhckRpYWdub3N0aWNzKSksdXImJih3cj1WZShWZShbXSx3ciwhMCksZS5nZXRGaWxlc0luRXJyb3JGb3JTdW1tYXJ5KEdlLmNpcmN1bGFyRGlhZ25vc3RpY3MpLCEwKSkpOihHZS5mb3JFYWNoKGZ1bmN0aW9uKFVyKXt2YXIgaWk9SihiZSxVcik7YmUucHJvamVjdEVycm9yc1JlcG9ydGVkLmhhcyhpaSl8fENyKGJlLHlyLmdldChpaSl8fGUuZW1wdHlBcnJheSl9KSx1ciYmeXIuZm9yRWFjaChmdW5jdGlvbihVcil7cmV0dXJuIElyKz1lLmdldEVycm9yQ291bnRGb3JTdW1tYXJ5KFVyKX0pLHVyJiZ5ci5mb3JFYWNoKGZ1bmN0aW9uKFVyKXtyZXR1cm4gVmUoVmUoW10sd3IsITApLGUuZ2V0RmlsZXNJbkVycm9yRm9yU3VtbWFyeShVciksITApfSkpLGJlLndhdGNoP2lyKGJlLGUuZ2V0V2F0Y2hFcnJvclN1bW1hcnlEaWFnbm9zdGljTWVzc2FnZShJciksSXIpOmJlLmhvc3QucmVwb3J0RXJyb3JTdW1tYXJ5JiZiZS5ob3N0LnJlcG9ydEVycm9yU3VtbWFyeShJcix3cil9fWZ1bmN0aW9uIE5lKGJlLEdlKXtiZS5vcHRpb25zLnZlcmJvc2UmJmVyKGJlLGUuRGlhZ25vc3RpY3MuUHJvamVjdHNfaW5fdGhpc19idWlsZF9Db2xvbl8wLEdlLm1hcChmdW5jdGlvbih1cil7cmV0dXJuYFxcclxuICAgICogYCtBZShiZSx1cil9KS5qb2luKFwiXCIpKX1mdW5jdGlvbiBuKGJlLEdlLHVyKXtpZihiZS5vcHRpb25zLmZvcmNlJiYodXIudHlwZT09PWUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwVG9EYXRlfHx1ci50eXBlPT09ZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVXBUb0RhdGVXaXRoVXBzdHJlYW1UeXBlcykpcmV0dXJuIGVyKGJlLGUuRGlhZ25vc3RpY3MuUHJvamVjdF8wX2lzX2JlaW5nX2ZvcmNpYmx5X3JlYnVpbHQsQWUoYmUsR2UpKTtzd2l0Y2godXIudHlwZSl7Y2FzZSBlLlVwVG9EYXRlU3RhdHVzVHlwZS5PdXRPZkRhdGVXaXRoU2VsZjpyZXR1cm4gZXIoYmUsZS5EaWFnbm9zdGljcy5Qcm9qZWN0XzBfaXNfb3V0X29mX2RhdGVfYmVjYXVzZV9vbGRlc3Rfb3V0cHV0XzFfaXNfb2xkZXJfdGhhbl9uZXdlc3RfaW5wdXRfMixBZShiZSxHZSksQWUoYmUsdXIub3V0T2ZEYXRlT3V0cHV0RmlsZU5hbWUpLEFlKGJlLHVyLm5ld2VySW5wdXRGaWxlTmFtZSkpO2Nhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuT3V0T2ZEYXRlV2l0aFVwc3RyZWFtOnJldHVybiBlcihiZSxlLkRpYWdub3N0aWNzLlByb2plY3RfMF9pc19vdXRfb2ZfZGF0ZV9iZWNhdXNlX29sZGVzdF9vdXRwdXRfMV9pc19vbGRlcl90aGFuX25ld2VzdF9pbnB1dF8yLEFlKGJlLEdlKSxBZShiZSx1ci5vdXRPZkRhdGVPdXRwdXRGaWxlTmFtZSksQWUoYmUsdXIubmV3ZXJQcm9qZWN0TmFtZSkpO2Nhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuT3V0cHV0TWlzc2luZzpyZXR1cm4gZXIoYmUsZS5EaWFnbm9zdGljcy5Qcm9qZWN0XzBfaXNfb3V0X29mX2RhdGVfYmVjYXVzZV9vdXRwdXRfZmlsZV8xX2RvZXNfbm90X2V4aXN0LEFlKGJlLEdlKSxBZShiZSx1ci5taXNzaW5nT3V0cHV0RmlsZU5hbWUpKTtjYXNlIGUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwVG9EYXRlOmlmKHVyLm5ld2VzdElucHV0RmlsZVRpbWUhPT12b2lkIDApcmV0dXJuIGVyKGJlLGUuRGlhZ25vc3RpY3MuUHJvamVjdF8wX2lzX3VwX3RvX2RhdGVfYmVjYXVzZV9uZXdlc3RfaW5wdXRfMV9pc19vbGRlcl90aGFuX29sZGVzdF9vdXRwdXRfMixBZShiZSxHZSksQWUoYmUsdXIubmV3ZXN0SW5wdXRGaWxlTmFtZXx8XCJcIiksQWUoYmUsdXIub2xkZXN0T3V0cHV0RmlsZU5hbWV8fFwiXCIpKTticmVhaztjYXNlIGUuVXBUb0RhdGVTdGF0dXNUeXBlLk91dE9mRGF0ZVdpdGhQcmVwZW5kOnJldHVybiBlcihiZSxlLkRpYWdub3N0aWNzLlByb2plY3RfMF9pc19vdXRfb2ZfZGF0ZV9iZWNhdXNlX291dHB1dF9vZl9pdHNfZGVwZW5kZW5jeV8xX2hhc19jaGFuZ2VkLEFlKGJlLEdlKSxBZShiZSx1ci5uZXdlclByb2plY3ROYW1lKSk7Y2FzZSBlLlVwVG9EYXRlU3RhdHVzVHlwZS5VcFRvRGF0ZVdpdGhVcHN0cmVhbVR5cGVzOnJldHVybiBlcihiZSxlLkRpYWdub3N0aWNzLlByb2plY3RfMF9pc191cF90b19kYXRlX3dpdGhfZF90c19maWxlc19mcm9tX2l0c19kZXBlbmRlbmNpZXMsQWUoYmUsR2UpKTtjYXNlIGUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwc3RyZWFtT3V0T2ZEYXRlOnJldHVybiBlcihiZSxlLkRpYWdub3N0aWNzLlByb2plY3RfMF9pc19vdXRfb2ZfZGF0ZV9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfaXNfb3V0X29mX2RhdGUsQWUoYmUsR2UpLEFlKGJlLHVyLnVwc3RyZWFtUHJvamVjdE5hbWUpKTtjYXNlIGUuVXBUb0RhdGVTdGF0dXNUeXBlLlVwc3RyZWFtQmxvY2tlZDpyZXR1cm4gZXIoYmUsdXIudXBzdHJlYW1Qcm9qZWN0QmxvY2tlZD9lLkRpYWdub3N0aWNzLlByb2plY3RfMF9jYW5fdF9iZV9idWlsdF9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfd2FzX25vdF9idWlsdDplLkRpYWdub3N0aWNzLlByb2plY3RfMF9jYW5fdF9iZV9idWlsdF9iZWNhdXNlX2l0c19kZXBlbmRlbmN5XzFfaGFzX2Vycm9ycyxBZShiZSxHZSksQWUoYmUsdXIudXBzdHJlYW1Qcm9qZWN0TmFtZSkpO2Nhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVW5idWlsZGFibGU6cmV0dXJuIGVyKGJlLGUuRGlhZ25vc3RpY3MuRmFpbGVkX3RvX3BhcnNlX2ZpbGVfMF9Db2xvbl8xLEFlKGJlLEdlKSx1ci5yZWFzb24pO2Nhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuVHNWZXJzaW9uT3V0cHV0T2ZEYXRlOnJldHVybiBlcihiZSxlLkRpYWdub3N0aWNzLlByb2plY3RfMF9pc19vdXRfb2ZfZGF0ZV9iZWNhdXNlX291dHB1dF9mb3JfaXRfd2FzX2dlbmVyYXRlZF93aXRoX3ZlcnNpb25fMV90aGF0X2RpZmZlcnNfd2l0aF9jdXJyZW50X3ZlcnNpb25fMixBZShiZSxHZSksdXIudmVyc2lvbixlLnZlcnNpb24pO2Nhc2UgZS5VcFRvRGF0ZVN0YXR1c1R5cGUuQ29udGFpbmVyT25seTpjYXNlIGUuVXBUb0RhdGVTdGF0dXNUeXBlLkNvbXB1dGluZ1Vwc3RyZWFtOmJyZWFrO2RlZmF1bHQ6ZS5hc3NlcnRUeXBlKHVyKX19ZnVuY3Rpb24gbHIoYmUsR2UsdXIpe2JlLm9wdGlvbnMudmVyYm9zZSYmbihiZSxHZSx1cil9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe0MuQWN0aW9uU2V0PVwiYWN0aW9uOjpzZXRcIixDLkFjdGlvbkludmFsaWRhdGU9XCJhY3Rpb246OmludmFsaWRhdGVcIixDLkFjdGlvblBhY2thZ2VJbnN0YWxsZWQ9XCJhY3Rpb246OnBhY2thZ2VJbnN0YWxsZWRcIixDLkV2ZW50VHlwZXNSZWdpc3RyeT1cImV2ZW50Ojp0eXBlc1JlZ2lzdHJ5XCIsQy5FdmVudEJlZ2luSW5zdGFsbFR5cGVzPVwiZXZlbnQ6OmJlZ2luSW5zdGFsbFR5cGVzXCIsQy5FdmVudEVuZEluc3RhbGxUeXBlcz1cImV2ZW50OjplbmRJbnN0YWxsVHlwZXNcIixDLkV2ZW50SW5pdGlhbGl6YXRpb25GYWlsZWQ9XCJldmVudDo6aW5pdGlhbGl6YXRpb25GYWlsZWRcIjt2YXIgdzsoZnVuY3Rpb24obGUpe2xlLkdsb2JhbENhY2hlTG9jYXRpb249XCItLWdsb2JhbFR5cGluZ3NDYWNoZUxvY2F0aW9uXCIsbGUuTG9nRmlsZT1cIi0tbG9nRmlsZVwiLGxlLkVuYWJsZVRlbGVtZXRyeT1cIi0tZW5hYmxlVGVsZW1ldHJ5XCIsbGUuVHlwaW5nU2FmZUxpc3RMb2NhdGlvbj1cIi0tdHlwaW5nU2FmZUxpc3RMb2NhdGlvblwiLGxlLlR5cGVzTWFwTG9jYXRpb249XCItLXR5cGVzTWFwTG9jYXRpb25cIixsZS5OcG1Mb2NhdGlvbj1cIi0tbnBtTG9jYXRpb25cIixsZS5WYWxpZGF0ZURlZmF1bHROcG1Mb2NhdGlvbj1cIi0tdmFsaWRhdGVEZWZhdWx0TnBtTG9jYXRpb25cIn0pKHc9Qy5Bcmd1bWVudHN8fChDLkFyZ3VtZW50cz17fSkpO2Z1bmN0aW9uIEIobGUpe3JldHVybiBlLnN5cy5hcmdzLmluZGV4T2YobGUpPj0wfUMuaGFzQXJndW1lbnQ9QjtmdW5jdGlvbiBFKGxlKXt2YXIgTj1lLnN5cy5hcmdzLmluZGV4T2YobGUpO3JldHVybiBOPj0wJiZOPGUuc3lzLmFyZ3MubGVuZ3RoLTE/ZS5zeXMuYXJnc1tOKzFdOnZvaWQgMH1DLmZpbmRBcmd1bWVudD1FO2Z1bmN0aW9uIFEoKXt2YXIgbGU9bmV3IERhdGU7cmV0dXJuXCJcIi5jb25jYXQoZS5wYWRMZWZ0KGxlLmdldEhvdXJzKCkudG9TdHJpbmcoKSwyLFwiMFwiKSxcIjpcIikuY29uY2F0KGUucGFkTGVmdChsZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSwyLFwiMFwiKSxcIjpcIikuY29uY2F0KGUucGFkTGVmdChsZS5nZXRTZWNvbmRzKCkudG9TdHJpbmcoKSwyLFwiMFwiKSxcIi5cIikuY29uY2F0KGUucGFkTGVmdChsZS5nZXRNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLDMsXCIwXCIpKX1DLm5vd1N0cmluZz1RfSkoYT1lLnNlcnZlcnx8KGUuc2VydmVyPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyhLLGIpe3ZhciBzZT1uZXcgZS5WZXJzaW9uKGUuZ2V0UHJvcGVydHkoYixcInRzXCIuY29uY2F0KGUudmVyc2lvbk1ham9yTWlub3IpKXx8ZS5nZXRQcm9wZXJ0eShiLFwibGF0ZXN0XCIpKTtyZXR1cm4gc2UuY29tcGFyZVRvKEsudmVyc2lvbik8PTB9Qy5pc1R5cGluZ1VwVG9EYXRlPXc7dmFyIEI9W1wiYXNzZXJ0XCIsXCJhc3NlcnQvc3RyaWN0XCIsXCJhc3luY19ob29rc1wiLFwiYnVmZmVyXCIsXCJjaGlsZF9wcm9jZXNzXCIsXCJjbHVzdGVyXCIsXCJjb25zb2xlXCIsXCJjb25zdGFudHNcIixcImNyeXB0b1wiLFwiZGdyYW1cIixcImRpYWdub3N0aWNzX2NoYW5uZWxcIixcImRuc1wiLFwiZG5zL3Byb21pc2VzXCIsXCJkb21haW5cIixcImV2ZW50c1wiLFwiZnNcIixcImZzL3Byb21pc2VzXCIsXCJodHRwXCIsXCJodHRwc1wiLFwiaHR0cDJcIixcImluc3BlY3RvclwiLFwibW9kdWxlXCIsXCJuZXRcIixcIm9zXCIsXCJwYXRoXCIsXCJwZXJmX2hvb2tzXCIsXCJwcm9jZXNzXCIsXCJwdW55Y29kZVwiLFwicXVlcnlzdHJpbmdcIixcInJlYWRsaW5lXCIsXCJyZXBsXCIsXCJzdHJlYW1cIixcInN0cmVhbS9wcm9taXNlc1wiLFwic3RyaW5nX2RlY29kZXJcIixcInRpbWVyc1wiLFwidGltZXJzL3Byb21pc2VzXCIsXCJ0bHNcIixcInRyYWNlX2V2ZW50c1wiLFwidHR5XCIsXCJ1cmxcIixcInV0aWxcIixcInV0aWwvdHlwZXNcIixcInY4XCIsXCJ2bVwiLFwid2FzaVwiLFwid29ya2VyX3RocmVhZHNcIixcInpsaWJcIl07Qy5wcmVmaXhlZE5vZGVDb3JlTW9kdWxlTGlzdD1CLm1hcChmdW5jdGlvbihLKXtyZXR1cm5cIm5vZGU6XCIuY29uY2F0KEspfSksQy5ub2RlQ29yZU1vZHVsZUxpc3Q9VmUoVmUoW10sQiwhMCksQy5wcmVmaXhlZE5vZGVDb3JlTW9kdWxlTGlzdCwhMCksQy5ub2RlQ29yZU1vZHVsZXM9bmV3IGUuU2V0KEMubm9kZUNvcmVNb2R1bGVMaXN0KTtmdW5jdGlvbiBFKEspe3JldHVybiBDLm5vZGVDb3JlTW9kdWxlcy5oYXMoSyk/XCJub2RlXCI6S31DLm5vblJlbGF0aXZlTW9kdWxlTmFtZUZvclR5cGluZ0NhY2hlPUU7ZnVuY3Rpb24gUShLLGIpe3ZhciBzZT1lLnJlYWRDb25maWdGaWxlKGIsZnVuY3Rpb24oSil7cmV0dXJuIEsucmVhZEZpbGUoSil9KTtyZXR1cm4gbmV3IGUuTWFwKGUuZ2V0RW50cmllcyhzZS5jb25maWcpKX1DLmxvYWRTYWZlTGlzdD1RO2Z1bmN0aW9uIGxlKEssYil7dmFyIHNlPWUucmVhZENvbmZpZ0ZpbGUoYixmdW5jdGlvbihKKXtyZXR1cm4gSy5yZWFkRmlsZShKKX0pO2lmKHNlLmNvbmZpZylyZXR1cm4gbmV3IGUuTWFwKGUuZ2V0RW50cmllcyhzZS5jb25maWcuc2ltcGxlTWFwKSl9Qy5sb2FkVHlwZXNNYXA9bGU7ZnVuY3Rpb24gTihLLGIsc2UsSixpZSxSLHEsTyx2ZSl7aWYoIXF8fCFxLmVuYWJsZSlyZXR1cm57Y2FjaGVkVHlwaW5nUGF0aHM6W10sbmV3VHlwaW5nTmFtZXM6W10sZmlsZXNUb1dhdGNoOltdfTt2YXIgZWU9bmV3IGUuTWFwO3NlPWUubWFwRGVmaW5lZChzZSxmdW5jdGlvbihJKXt2YXIgbD1lLm5vcm1hbGl6ZVBhdGgoSSk7aWYoZS5oYXNKU0ZpbGVFeHRlbnNpb24obCkpcmV0dXJuIGx9KTt2YXIgaGU9W107cS5pbmNsdWRlJiZVKHEuaW5jbHVkZSxcIkV4cGxpY2l0bHkgaW5jbHVkZWQgdHlwZXNcIik7dmFyIEY9cS5leGNsdWRlfHxbXSx4PW5ldyBlLlNldChzZS5tYXAoZS5nZXREaXJlY3RvcnlQYXRoKSk7aWYoeC5hZGQoSikseC5mb3JFYWNoKGZ1bmN0aW9uKEkpe2ooSSxcImJvd2VyLmpzb25cIixcImJvd2VyX2NvbXBvbmVudHNcIixoZSksaihJLFwicGFja2FnZS5qc29uXCIsXCJub2RlX21vZHVsZXNcIixoZSl9KSxxLmRpc2FibGVGaWxlbmFtZUJhc2VkVHlwZUFjcXVpc2l0aW9ufHxIKHNlKSxPKXt2YXIgWD1lLmRlZHVwbGljYXRlKE8ubWFwKEUpLGUuZXF1YXRlU3RyaW5nc0Nhc2VTZW5zaXRpdmUsZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmUpO1UoWCxcIkluZmVycmVkIHR5cGluZ3MgZnJvbSB1bnJlc29sdmVkIGltcG9ydHNcIil9Ui5mb3JFYWNoKGZ1bmN0aW9uKEksbCl7dmFyIGQ9dmUuZ2V0KGwpO2VlLmhhcyhsKSYmZWUuZ2V0KGwpPT09dm9pZCAwJiZkIT09dm9pZCAwJiZ3KEksZCkmJmVlLnNldChsLEkudHlwaW5nTG9jYXRpb24pfSk7Zm9yKHZhciAkPTAsQT1GOyQ8QS5sZW5ndGg7JCsrKXt2YXIgeT1BWyRdLFY9ZWUuZGVsZXRlKHkpO1YmJmImJmIoXCJUeXBpbmcgZm9yIFwiLmNvbmNhdCh5LFwiIGlzIGluIGV4Y2x1ZGUgbGlzdCwgd2lsbCBiZSBpZ25vcmVkLlwiKSl9dmFyIEw9W10sUD1bXTtlZS5mb3JFYWNoKGZ1bmN0aW9uKEksbCl7SSE9PXZvaWQgMD9QLnB1c2goSSk6TC5wdXNoKGwpfSk7dmFyIGs9e2NhY2hlZFR5cGluZ1BhdGhzOlAsbmV3VHlwaW5nTmFtZXM6TCxmaWxlc1RvV2F0Y2g6aGV9O3JldHVybiBiJiZiKFwiUmVzdWx0OiBcIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkoaykpKSxrO2Z1bmN0aW9uIFkoSSl7ZWUuaGFzKEkpfHxlZS5zZXQoSSx2b2lkIDApfWZ1bmN0aW9uIFUoSSxsKXtiJiZiKFwiXCIuY29uY2F0KGwsXCI6IFwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkoSSkpKSxlLmZvckVhY2goSSxZKX1mdW5jdGlvbiBqKEksbCxkLEQpe3ZhciBmZT1lLmNvbWJpbmVQYXRocyhJLGwpLGcsbmU7Sy5maWxlRXhpc3RzKGZlKSYmKEQucHVzaChmZSksZz1lLnJlYWRDb25maWdGaWxlKGZlLGZ1bmN0aW9uKEllKXtyZXR1cm4gSy5yZWFkRmlsZShJZSl9KS5jb25maWcsbmU9ZS5mbGF0TWFwKFtnLmRlcGVuZGVuY2llcyxnLmRldkRlcGVuZGVuY2llcyxnLm9wdGlvbmFsRGVwZW5kZW5jaWVzLGcucGVlckRlcGVuZGVuY2llc10sZS5nZXRPd25LZXlzKSxVKG5lLFwiVHlwaW5nIG5hbWVzIGluICdcIi5jb25jYXQoZmUsXCInIGRlcGVuZGVuY2llc1wiKSkpO3ZhciB1ZT1lLmNvbWJpbmVQYXRocyhJLGQpO2lmKEQucHVzaCh1ZSksISFLLmRpcmVjdG9yeUV4aXN0cyh1ZSkpe3ZhciBXZT1bXSxGZT1uZT9uZS5tYXAoZnVuY3Rpb24oSWUpe3JldHVybiBlLmNvbWJpbmVQYXRocyh1ZSxJZSxsKX0pOksucmVhZERpcmVjdG9yeSh1ZSxbXCIuanNvblwiXSx2b2lkIDAsdm9pZCAwLDMpLmZpbHRlcihmdW5jdGlvbihJZSl7aWYoZS5nZXRCYXNlRmlsZU5hbWUoSWUpIT09bClyZXR1cm4hMTt2YXIgX2U9ZS5nZXRQYXRoQ29tcG9uZW50cyhlLm5vcm1hbGl6ZVBhdGgoSWUpKSx3ZT1fZVtfZS5sZW5ndGgtM11bMF09PT1cIkBcIjtyZXR1cm4gd2UmJl9lW19lLmxlbmd0aC00XS50b0xvd2VyQ2FzZSgpPT09ZHx8IXdlJiZfZVtfZS5sZW5ndGgtM10udG9Mb3dlckNhc2UoKT09PWR9KTtiJiZiKFwiU2VhcmNoaW5nIGZvciB0eXBpbmcgbmFtZXMgaW4gXCIuY29uY2F0KHVlLFwiOyBhbGwgZmlsZXM6IFwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkoRmUpKSk7Zm9yKHZhciBaPTAsQmU9RmU7WjxCZS5sZW5ndGg7WisrKXt2YXIgZ2U9QmVbWl0sUmU9ZS5ub3JtYWxpemVQYXRoKGdlKSx6ZT1lLnJlYWRDb25maWdGaWxlKFJlLGZ1bmN0aW9uKEllKXtyZXR1cm4gSy5yZWFkRmlsZShJZSl9KSxFZT16ZS5jb25maWc7aWYoISFFZS5uYW1lKXt2YXIgSGU9RWUudHlwZXN8fEVlLnR5cGluZ3M7aWYoSGUpe3ZhciBycj1lLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoSGUsZS5nZXREaXJlY3RvcnlQYXRoKFJlKSk7Sy5maWxlRXhpc3RzKHJyKT8oYiYmYihcIiAgICBQYWNrYWdlICdcIi5jb25jYXQoRWUubmFtZSxcIicgcHJvdmlkZXMgaXRzIG93biB0eXBlcy5cIikpLGVlLnNldChFZS5uYW1lLHJyKSk6YiYmYihcIiAgICBQYWNrYWdlICdcIi5jb25jYXQoRWUubmFtZSxcIicgcHJvdmlkZXMgaXRzIG93biB0eXBlcyBidXQgdGhleSBhcmUgbWlzc2luZy5cIikpfWVsc2UgV2UucHVzaChFZS5uYW1lKX19VShXZSxcIiAgICBGb3VuZCBwYWNrYWdlIG5hbWVzXCIpfX1mdW5jdGlvbiBIKEkpe3ZhciBsPWUubWFwRGVmaW5lZChJLGZ1bmN0aW9uKEQpe2lmKCEhZS5oYXNKU0ZpbGVFeHRlbnNpb24oRCkpe3ZhciBmZT1lLnJlbW92ZUZpbGVFeHRlbnNpb24oZS5nZXRCYXNlRmlsZU5hbWUoRC50b0xvd2VyQ2FzZSgpKSksZz1lLnJlbW92ZU1pbkFuZFZlcnNpb25OdW1iZXJzKGZlKTtyZXR1cm4gaWUuZ2V0KGcpfX0pO2wubGVuZ3RoJiZVKGwsXCJJbmZlcnJlZCB0eXBpbmdzIGZyb20gZmlsZSBuYW1lc1wiKTt2YXIgZD1lLnNvbWUoSSxmdW5jdGlvbihEKXtyZXR1cm4gZS5maWxlRXh0ZW5zaW9uSXMoRCxcIi5qc3hcIil9KTtkJiYoYiYmYihcIkluZmVycmVkICdyZWFjdCcgdHlwaW5ncyBkdWUgdG8gcHJlc2VuY2Ugb2YgJy5qc3gnIGV4dGVuc2lvblwiKSxZKFwicmVhY3RcIikpfX1DLmRpc2NvdmVyVHlwaW5ncz1OO3ZhciBwOyhmdW5jdGlvbihLKXtLW0suT2s9MF09XCJPa1wiLEtbSy5FbXB0eU5hbWU9MV09XCJFbXB0eU5hbWVcIixLW0suTmFtZVRvb0xvbmc9Ml09XCJOYW1lVG9vTG9uZ1wiLEtbSy5OYW1lU3RhcnRzV2l0aERvdD0zXT1cIk5hbWVTdGFydHNXaXRoRG90XCIsS1tLLk5hbWVTdGFydHNXaXRoVW5kZXJzY29yZT00XT1cIk5hbWVTdGFydHNXaXRoVW5kZXJzY29yZVwiLEtbSy5OYW1lQ29udGFpbnNOb25VUklTYWZlQ2hhcmFjdGVycz01XT1cIk5hbWVDb250YWluc05vblVSSVNhZmVDaGFyYWN0ZXJzXCJ9KShwPUMuTmFtZVZhbGlkYXRpb25SZXN1bHR8fChDLk5hbWVWYWxpZGF0aW9uUmVzdWx0PXt9KSk7dmFyIG09MjE0O2Z1bmN0aW9uIEcoSyl7cmV0dXJuIG9lKEssITApfUMudmFsaWRhdGVQYWNrYWdlTmFtZT1HO2Z1bmN0aW9uIG9lKEssYil7aWYoIUspcmV0dXJuIDE7aWYoSy5sZW5ndGg+bSlyZXR1cm4gMjtpZihLLmNoYXJDb2RlQXQoMCk9PT00NilyZXR1cm4gMztpZihLLmNoYXJDb2RlQXQoMCk9PT05NSlyZXR1cm4gNDtpZihiKXt2YXIgc2U9L15AKFteL10rKVxcLyhbXi9dKykkLy5leGVjKEspO2lmKHNlKXt2YXIgSj1vZShzZVsxXSwhMSk7aWYoSiE9PTApcmV0dXJue25hbWU6c2VbMV0saXNTY29wZU5hbWU6ITAscmVzdWx0Okp9O3ZhciBpZT1vZShzZVsyXSwhMSk7cmV0dXJuIGllIT09MD97bmFtZTpzZVsyXSxpc1Njb3BlTmFtZTohMSxyZXN1bHQ6aWV9OjB9fXJldHVybiBlbmNvZGVVUklDb21wb25lbnQoSykhPT1LPzU6MH1mdW5jdGlvbiBmKEssYil7cmV0dXJuIHR5cGVvZiBLPT1cIm9iamVjdFwiP1QoYixLLnJlc3VsdCxLLm5hbWUsSy5pc1Njb3BlTmFtZSk6VChiLEssYiwhMSl9Qy5yZW5kZXJQYWNrYWdlTmFtZVZhbGlkYXRpb25GYWlsdXJlPWY7ZnVuY3Rpb24gVChLLGIsc2UsSil7dmFyIGllPUo/XCJTY29wZVwiOlwiUGFja2FnZVwiO3N3aXRjaChiKXtjYXNlIDE6cmV0dXJuXCInXCIuY29uY2F0KEssXCInOjogXCIpLmNvbmNhdChpZSxcIiBuYW1lICdcIikuY29uY2F0KHNlLFwiJyBjYW5ub3QgYmUgZW1wdHlcIik7Y2FzZSAyOnJldHVyblwiJ1wiLmNvbmNhdChLLFwiJzo6IFwiKS5jb25jYXQoaWUsXCIgbmFtZSAnXCIpLmNvbmNhdChzZSxcIicgc2hvdWxkIGJlIGxlc3MgdGhhbiBcIikuY29uY2F0KG0sXCIgY2hhcmFjdGVyc1wiKTtjYXNlIDM6cmV0dXJuXCInXCIuY29uY2F0KEssXCInOjogXCIpLmNvbmNhdChpZSxcIiBuYW1lICdcIikuY29uY2F0KHNlLFwiJyBjYW5ub3Qgc3RhcnQgd2l0aCAnLidcIik7Y2FzZSA0OnJldHVyblwiJ1wiLmNvbmNhdChLLFwiJzo6IFwiKS5jb25jYXQoaWUsXCIgbmFtZSAnXCIpLmNvbmNhdChzZSxcIicgY2Fubm90IHN0YXJ0IHdpdGggJ18nXCIpO2Nhc2UgNTpyZXR1cm5cIidcIi5jb25jYXQoSyxcIic6OiBcIikuY29uY2F0KGllLFwiIG5hbWUgJ1wiKS5jb25jYXQoc2UsXCInIGNvbnRhaW5zIG5vbiBVUkkgc2FmZSBjaGFyYWN0ZXJzXCIpO2Nhc2UgMDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKCk7ZGVmYXVsdDp0aHJvdyBlLkRlYnVnLmFzc2VydE5ldmVyKGIpfX19KShhPWUuSnNUeXBpbmd8fChlLkpzVHlwaW5nPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oTyl7dmFyIHZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaGUoRil7dGhpcy50ZXh0PUZ9cmV0dXJuIGhlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKEYseCl7cmV0dXJuIEY9PT0wJiZ4PT09dGhpcy50ZXh0Lmxlbmd0aD90aGlzLnRleHQ6dGhpcy50ZXh0LnN1YnN0cmluZyhGLHgpfSxoZS5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dC5sZW5ndGh9LGhlLnByb3RvdHlwZS5nZXRDaGFuZ2VSYW5nZT1mdW5jdGlvbigpe30saGV9KCk7ZnVuY3Rpb24gZWUoaGUpe3JldHVybiBuZXcgdmUoaGUpfU8uZnJvbVN0cmluZz1lZX0pKGE9ZS5TY3JpcHRTbmFwc2hvdHx8KGUuU2NyaXB0U25hcHNob3Q9e30pKTt2YXIgQzsoZnVuY3Rpb24oTyl7T1tPLkRlcGVuZGVuY2llcz0xXT1cIkRlcGVuZGVuY2llc1wiLE9bTy5EZXZEZXBlbmRlbmNpZXM9Ml09XCJEZXZEZXBlbmRlbmNpZXNcIixPW08uUGVlckRlcGVuZGVuY2llcz00XT1cIlBlZXJEZXBlbmRlbmNpZXNcIixPW08uT3B0aW9uYWxEZXBlbmRlbmNpZXM9OF09XCJPcHRpb25hbERlcGVuZGVuY2llc1wiLE9bTy5BbGw9MTVdPVwiQWxsXCJ9KShDPWUuUGFja2FnZUpzb25EZXBlbmRlbmN5R3JvdXB8fChlLlBhY2thZ2VKc29uRGVwZW5kZW5jeUdyb3VwPXt9KSk7dmFyIHc7KGZ1bmN0aW9uKE8pe09bTy5PZmY9MF09XCJPZmZcIixPW08uT249MV09XCJPblwiLE9bTy5BdXRvPTJdPVwiQXV0b1wifSkodz1lLlBhY2thZ2VKc29uQXV0b0ltcG9ydFByZWZlcmVuY2V8fChlLlBhY2thZ2VKc29uQXV0b0ltcG9ydFByZWZlcmVuY2U9e30pKTt2YXIgQjsoZnVuY3Rpb24oTyl7T1tPLlNlbWFudGljPTBdPVwiU2VtYW50aWNcIixPW08uUGFydGlhbFNlbWFudGljPTFdPVwiUGFydGlhbFNlbWFudGljXCIsT1tPLlN5bnRhY3RpYz0yXT1cIlN5bnRhY3RpY1wifSkoQj1lLkxhbmd1YWdlU2VydmljZU1vZGV8fChlLkxhbmd1YWdlU2VydmljZU1vZGU9e30pKSxlLmVtcHR5T3B0aW9ucz17fTt2YXIgRTsoZnVuY3Rpb24oTyl7Ty5PcmlnaW5hbD1cIm9yaWdpbmFsXCIsTy5Ud2VudHlUd2VudHk9XCIyMDIwXCJ9KShFPWUuU2VtYW50aWNDbGFzc2lmaWNhdGlvbkZvcm1hdHx8KGUuU2VtYW50aWNDbGFzc2lmaWNhdGlvbkZvcm1hdD17fSkpO3ZhciBROyhmdW5jdGlvbihPKXtPW08uSW52b2tlZD0xXT1cIkludm9rZWRcIixPW08uVHJpZ2dlckNoYXJhY3Rlcj0yXT1cIlRyaWdnZXJDaGFyYWN0ZXJcIixPW08uVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0zXT1cIlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnNcIn0pKFE9ZS5Db21wbGV0aW9uVHJpZ2dlcktpbmR8fChlLkNvbXBsZXRpb25UcmlnZ2VyS2luZD17fSkpO3ZhciBsZTsoZnVuY3Rpb24oTyl7Ty5UeXBlPVwiVHlwZVwiLE8uUGFyYW1ldGVyPVwiUGFyYW1ldGVyXCIsTy5FbnVtPVwiRW51bVwifSkobGU9ZS5JbmxheUhpbnRLaW5kfHwoZS5JbmxheUhpbnRLaW5kPXt9KSk7dmFyIE47KGZ1bmN0aW9uKE8pe08ubm9uZT1cIm5vbmVcIixPLmRlZmluaXRpb249XCJkZWZpbml0aW9uXCIsTy5yZWZlcmVuY2U9XCJyZWZlcmVuY2VcIixPLndyaXR0ZW5SZWZlcmVuY2U9XCJ3cml0dGVuUmVmZXJlbmNlXCJ9KShOPWUuSGlnaGxpZ2h0U3BhbktpbmR8fChlLkhpZ2hsaWdodFNwYW5LaW5kPXt9KSk7dmFyIHA7KGZ1bmN0aW9uKE8pe09bTy5Ob25lPTBdPVwiTm9uZVwiLE9bTy5CbG9jaz0xXT1cIkJsb2NrXCIsT1tPLlNtYXJ0PTJdPVwiU21hcnRcIn0pKHA9ZS5JbmRlbnRTdHlsZXx8KGUuSW5kZW50U3R5bGU9e30pKTt2YXIgbTsoZnVuY3Rpb24oTyl7Ty5JZ25vcmU9XCJpZ25vcmVcIixPLkluc2VydD1cImluc2VydFwiLE8uUmVtb3ZlPVwicmVtb3ZlXCJ9KShtPWUuU2VtaWNvbG9uUHJlZmVyZW5jZXx8KGUuU2VtaWNvbG9uUHJlZmVyZW5jZT17fSkpO2Z1bmN0aW9uIEcoTyl7cmV0dXJue2luZGVudFNpemU6NCx0YWJTaXplOjQsbmV3TGluZUNoYXJhY3RlcjpPfHxgXG5gLGNvbnZlcnRUYWJzVG9TcGFjZXM6ITAsaW5kZW50U3R5bGU6cC5TbWFydCxpbnNlcnRTcGFjZUFmdGVyQ29uc3RydWN0b3I6ITEsaW5zZXJ0U3BhY2VBZnRlckNvbW1hRGVsaW1pdGVyOiEwLGluc2VydFNwYWNlQWZ0ZXJTZW1pY29sb25JbkZvclN0YXRlbWVudHM6ITAsaW5zZXJ0U3BhY2VCZWZvcmVBbmRBZnRlckJpbmFyeU9wZXJhdG9yczohMCxpbnNlcnRTcGFjZUFmdGVyS2V5d29yZHNJbkNvbnRyb2xGbG93U3RhdGVtZW50czohMCxpbnNlcnRTcGFjZUFmdGVyRnVuY3Rpb25LZXl3b3JkRm9yQW5vbnltb3VzRnVuY3Rpb25zOiExLGluc2VydFNwYWNlQWZ0ZXJPcGVuaW5nQW5kQmVmb3JlQ2xvc2luZ05vbmVtcHR5UGFyZW50aGVzaXM6ITEsaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nTm9uZW1wdHlCcmFja2V0czohMSxpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eUJyYWNlczohMCxpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdUZW1wbGF0ZVN0cmluZ0JyYWNlczohMSxpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdKc3hFeHByZXNzaW9uQnJhY2VzOiExLGluc2VydFNwYWNlQmVmb3JlRnVuY3Rpb25QYXJlbnRoZXNpczohMSxwbGFjZU9wZW5CcmFjZU9uTmV3TGluZUZvckZ1bmN0aW9uczohMSxwbGFjZU9wZW5CcmFjZU9uTmV3TGluZUZvckNvbnRyb2xCbG9ja3M6ITEsc2VtaWNvbG9uczptLklnbm9yZSx0cmltVHJhaWxpbmdXaGl0ZXNwYWNlOiEwfX1lLmdldERlZmF1bHRGb3JtYXRDb2RlU2V0dGluZ3M9RyxlLnRlc3RGb3JtYXRTZXR0aW5ncz1HKGBcbmApO3ZhciBvZTsoZnVuY3Rpb24oTyl7T1tPLmFsaWFzTmFtZT0wXT1cImFsaWFzTmFtZVwiLE9bTy5jbGFzc05hbWU9MV09XCJjbGFzc05hbWVcIixPW08uZW51bU5hbWU9Ml09XCJlbnVtTmFtZVwiLE9bTy5maWVsZE5hbWU9M109XCJmaWVsZE5hbWVcIixPW08uaW50ZXJmYWNlTmFtZT00XT1cImludGVyZmFjZU5hbWVcIixPW08ua2V5d29yZD01XT1cImtleXdvcmRcIixPW08ubGluZUJyZWFrPTZdPVwibGluZUJyZWFrXCIsT1tPLm51bWVyaWNMaXRlcmFsPTddPVwibnVtZXJpY0xpdGVyYWxcIixPW08uc3RyaW5nTGl0ZXJhbD04XT1cInN0cmluZ0xpdGVyYWxcIixPW08ubG9jYWxOYW1lPTldPVwibG9jYWxOYW1lXCIsT1tPLm1ldGhvZE5hbWU9MTBdPVwibWV0aG9kTmFtZVwiLE9bTy5tb2R1bGVOYW1lPTExXT1cIm1vZHVsZU5hbWVcIixPW08ub3BlcmF0b3I9MTJdPVwib3BlcmF0b3JcIixPW08ucGFyYW1ldGVyTmFtZT0xM109XCJwYXJhbWV0ZXJOYW1lXCIsT1tPLnByb3BlcnR5TmFtZT0xNF09XCJwcm9wZXJ0eU5hbWVcIixPW08ucHVuY3R1YXRpb249MTVdPVwicHVuY3R1YXRpb25cIixPW08uc3BhY2U9MTZdPVwic3BhY2VcIixPW08udGV4dD0xN109XCJ0ZXh0XCIsT1tPLnR5cGVQYXJhbWV0ZXJOYW1lPTE4XT1cInR5cGVQYXJhbWV0ZXJOYW1lXCIsT1tPLmVudW1NZW1iZXJOYW1lPTE5XT1cImVudW1NZW1iZXJOYW1lXCIsT1tPLmZ1bmN0aW9uTmFtZT0yMF09XCJmdW5jdGlvbk5hbWVcIixPW08ucmVndWxhckV4cHJlc3Npb25MaXRlcmFsPTIxXT1cInJlZ3VsYXJFeHByZXNzaW9uTGl0ZXJhbFwiLE9bTy5saW5rPTIyXT1cImxpbmtcIixPW08ubGlua05hbWU9MjNdPVwibGlua05hbWVcIixPW08ubGlua1RleHQ9MjRdPVwibGlua1RleHRcIn0pKG9lPWUuU3ltYm9sRGlzcGxheVBhcnRLaW5kfHwoZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQ9e30pKTt2YXIgZjsoZnVuY3Rpb24oTyl7T1tPLk5vbmU9MF09XCJOb25lXCIsT1tPLk1heUluY2x1ZGVBdXRvSW1wb3J0cz0xXT1cIk1heUluY2x1ZGVBdXRvSW1wb3J0c1wiLE9bTy5Jc0ltcG9ydFN0YXRlbWVudENvbXBsZXRpb249Ml09XCJJc0ltcG9ydFN0YXRlbWVudENvbXBsZXRpb25cIixPW08uSXNDb250aW51YXRpb249NF09XCJJc0NvbnRpbnVhdGlvblwiLE9bTy5SZXNvbHZlZE1vZHVsZVNwZWNpZmllcnM9OF09XCJSZXNvbHZlZE1vZHVsZVNwZWNpZmllcnNcIixPW08uUmVzb2x2ZWRNb2R1bGVTcGVjaWZpZXJzQmV5b25kTGltaXQ9MTZdPVwiUmVzb2x2ZWRNb2R1bGVTcGVjaWZpZXJzQmV5b25kTGltaXRcIixPW08uTWF5SW5jbHVkZU1ldGhvZFNuaXBwZXRzPTMyXT1cIk1heUluY2x1ZGVNZXRob2RTbmlwcGV0c1wifSkoZj1lLkNvbXBsZXRpb25JbmZvRmxhZ3N8fChlLkNvbXBsZXRpb25JbmZvRmxhZ3M9e30pKTt2YXIgVDsoZnVuY3Rpb24oTyl7Ty5Db21tZW50PVwiY29tbWVudFwiLE8uUmVnaW9uPVwicmVnaW9uXCIsTy5Db2RlPVwiY29kZVwiLE8uSW1wb3J0cz1cImltcG9ydHNcIn0pKFQ9ZS5PdXRsaW5pbmdTcGFuS2luZHx8KGUuT3V0bGluaW5nU3BhbktpbmQ9e30pKTt2YXIgSzsoZnVuY3Rpb24oTyl7T1tPLkphdmFTY3JpcHQ9MF09XCJKYXZhU2NyaXB0XCIsT1tPLlNvdXJjZU1hcD0xXT1cIlNvdXJjZU1hcFwiLE9bTy5EZWNsYXJhdGlvbj0yXT1cIkRlY2xhcmF0aW9uXCJ9KShLPWUuT3V0cHV0RmlsZVR5cGV8fChlLk91dHB1dEZpbGVUeXBlPXt9KSk7dmFyIGI7KGZ1bmN0aW9uKE8pe09bTy5Ob25lPTBdPVwiTm9uZVwiLE9bTy5Jbk11bHRpTGluZUNvbW1lbnRUcml2aWE9MV09XCJJbk11bHRpTGluZUNvbW1lbnRUcml2aWFcIixPW08uSW5TaW5nbGVRdW90ZVN0cmluZ0xpdGVyYWw9Ml09XCJJblNpbmdsZVF1b3RlU3RyaW5nTGl0ZXJhbFwiLE9bTy5JbkRvdWJsZVF1b3RlU3RyaW5nTGl0ZXJhbD0zXT1cIkluRG91YmxlUXVvdGVTdHJpbmdMaXRlcmFsXCIsT1tPLkluVGVtcGxhdGVIZWFkT3JOb1N1YnN0aXR1dGlvblRlbXBsYXRlPTRdPVwiSW5UZW1wbGF0ZUhlYWRPck5vU3Vic3RpdHV0aW9uVGVtcGxhdGVcIixPW08uSW5UZW1wbGF0ZU1pZGRsZU9yVGFpbD01XT1cIkluVGVtcGxhdGVNaWRkbGVPclRhaWxcIixPW08uSW5UZW1wbGF0ZVN1YnN0aXR1dGlvblBvc2l0aW9uPTZdPVwiSW5UZW1wbGF0ZVN1YnN0aXR1dGlvblBvc2l0aW9uXCJ9KShiPWUuRW5kT2ZMaW5lU3RhdGV8fChlLkVuZE9mTGluZVN0YXRlPXt9KSk7dmFyIHNlOyhmdW5jdGlvbihPKXtPW08uUHVuY3R1YXRpb249MF09XCJQdW5jdHVhdGlvblwiLE9bTy5LZXl3b3JkPTFdPVwiS2V5d29yZFwiLE9bTy5PcGVyYXRvcj0yXT1cIk9wZXJhdG9yXCIsT1tPLkNvbW1lbnQ9M109XCJDb21tZW50XCIsT1tPLldoaXRlc3BhY2U9NF09XCJXaGl0ZXNwYWNlXCIsT1tPLklkZW50aWZpZXI9NV09XCJJZGVudGlmaWVyXCIsT1tPLk51bWJlckxpdGVyYWw9Nl09XCJOdW1iZXJMaXRlcmFsXCIsT1tPLkJpZ0ludExpdGVyYWw9N109XCJCaWdJbnRMaXRlcmFsXCIsT1tPLlN0cmluZ0xpdGVyYWw9OF09XCJTdHJpbmdMaXRlcmFsXCIsT1tPLlJlZ0V4cExpdGVyYWw9OV09XCJSZWdFeHBMaXRlcmFsXCJ9KShzZT1lLlRva2VuQ2xhc3N8fChlLlRva2VuQ2xhc3M9e30pKTt2YXIgSjsoZnVuY3Rpb24oTyl7Ty51bmtub3duPVwiXCIsTy53YXJuaW5nPVwid2FybmluZ1wiLE8ua2V5d29yZD1cImtleXdvcmRcIixPLnNjcmlwdEVsZW1lbnQ9XCJzY3JpcHRcIixPLm1vZHVsZUVsZW1lbnQ9XCJtb2R1bGVcIixPLmNsYXNzRWxlbWVudD1cImNsYXNzXCIsTy5sb2NhbENsYXNzRWxlbWVudD1cImxvY2FsIGNsYXNzXCIsTy5pbnRlcmZhY2VFbGVtZW50PVwiaW50ZXJmYWNlXCIsTy50eXBlRWxlbWVudD1cInR5cGVcIixPLmVudW1FbGVtZW50PVwiZW51bVwiLE8uZW51bU1lbWJlckVsZW1lbnQ9XCJlbnVtIG1lbWJlclwiLE8udmFyaWFibGVFbGVtZW50PVwidmFyXCIsTy5sb2NhbFZhcmlhYmxlRWxlbWVudD1cImxvY2FsIHZhclwiLE8uZnVuY3Rpb25FbGVtZW50PVwiZnVuY3Rpb25cIixPLmxvY2FsRnVuY3Rpb25FbGVtZW50PVwibG9jYWwgZnVuY3Rpb25cIixPLm1lbWJlckZ1bmN0aW9uRWxlbWVudD1cIm1ldGhvZFwiLE8ubWVtYmVyR2V0QWNjZXNzb3JFbGVtZW50PVwiZ2V0dGVyXCIsTy5tZW1iZXJTZXRBY2Nlc3NvckVsZW1lbnQ9XCJzZXR0ZXJcIixPLm1lbWJlclZhcmlhYmxlRWxlbWVudD1cInByb3BlcnR5XCIsTy5jb25zdHJ1Y3RvckltcGxlbWVudGF0aW9uRWxlbWVudD1cImNvbnN0cnVjdG9yXCIsTy5jYWxsU2lnbmF0dXJlRWxlbWVudD1cImNhbGxcIixPLmluZGV4U2lnbmF0dXJlRWxlbWVudD1cImluZGV4XCIsTy5jb25zdHJ1Y3RTaWduYXR1cmVFbGVtZW50PVwiY29uc3RydWN0XCIsTy5wYXJhbWV0ZXJFbGVtZW50PVwicGFyYW1ldGVyXCIsTy50eXBlUGFyYW1ldGVyRWxlbWVudD1cInR5cGUgcGFyYW1ldGVyXCIsTy5wcmltaXRpdmVUeXBlPVwicHJpbWl0aXZlIHR5cGVcIixPLmxhYmVsPVwibGFiZWxcIixPLmFsaWFzPVwiYWxpYXNcIixPLmNvbnN0RWxlbWVudD1cImNvbnN0XCIsTy5sZXRFbGVtZW50PVwibGV0XCIsTy5kaXJlY3Rvcnk9XCJkaXJlY3RvcnlcIixPLmV4dGVybmFsTW9kdWxlTmFtZT1cImV4dGVybmFsIG1vZHVsZSBuYW1lXCIsTy5qc3hBdHRyaWJ1dGU9XCJKU1ggYXR0cmlidXRlXCIsTy5zdHJpbmc9XCJzdHJpbmdcIixPLmxpbms9XCJsaW5rXCIsTy5saW5rTmFtZT1cImxpbmsgbmFtZVwiLE8ubGlua1RleHQ9XCJsaW5rIHRleHRcIn0pKEo9ZS5TY3JpcHRFbGVtZW50S2luZHx8KGUuU2NyaXB0RWxlbWVudEtpbmQ9e30pKTt2YXIgaWU7KGZ1bmN0aW9uKE8pe08ubm9uZT1cIlwiLE8ucHVibGljTWVtYmVyTW9kaWZpZXI9XCJwdWJsaWNcIixPLnByaXZhdGVNZW1iZXJNb2RpZmllcj1cInByaXZhdGVcIixPLnByb3RlY3RlZE1lbWJlck1vZGlmaWVyPVwicHJvdGVjdGVkXCIsTy5leHBvcnRlZE1vZGlmaWVyPVwiZXhwb3J0XCIsTy5hbWJpZW50TW9kaWZpZXI9XCJkZWNsYXJlXCIsTy5zdGF0aWNNb2RpZmllcj1cInN0YXRpY1wiLE8uYWJzdHJhY3RNb2RpZmllcj1cImFic3RyYWN0XCIsTy5vcHRpb25hbE1vZGlmaWVyPVwib3B0aW9uYWxcIixPLmRlcHJlY2F0ZWRNb2RpZmllcj1cImRlcHJlY2F0ZWRcIixPLmR0c01vZGlmaWVyPVwiLmQudHNcIixPLnRzTW9kaWZpZXI9XCIudHNcIixPLnRzeE1vZGlmaWVyPVwiLnRzeFwiLE8uanNNb2RpZmllcj1cIi5qc1wiLE8uanN4TW9kaWZpZXI9XCIuanN4XCIsTy5qc29uTW9kaWZpZXI9XCIuanNvblwiLE8uZG10c01vZGlmaWVyPVwiLmQubXRzXCIsTy5tdHNNb2RpZmllcj1cIi5tdHNcIixPLm1qc01vZGlmaWVyPVwiLm1qc1wiLE8uZGN0c01vZGlmaWVyPVwiLmQuY3RzXCIsTy5jdHNNb2RpZmllcj1cIi5jdHNcIixPLmNqc01vZGlmaWVyPVwiLmNqc1wifSkoaWU9ZS5TY3JpcHRFbGVtZW50S2luZE1vZGlmaWVyfHwoZS5TY3JpcHRFbGVtZW50S2luZE1vZGlmaWVyPXt9KSk7dmFyIFI7KGZ1bmN0aW9uKE8pe08uY29tbWVudD1cImNvbW1lbnRcIixPLmlkZW50aWZpZXI9XCJpZGVudGlmaWVyXCIsTy5rZXl3b3JkPVwia2V5d29yZFwiLE8ubnVtZXJpY0xpdGVyYWw9XCJudW1iZXJcIixPLmJpZ2ludExpdGVyYWw9XCJiaWdpbnRcIixPLm9wZXJhdG9yPVwib3BlcmF0b3JcIixPLnN0cmluZ0xpdGVyYWw9XCJzdHJpbmdcIixPLndoaXRlU3BhY2U9XCJ3aGl0ZXNwYWNlXCIsTy50ZXh0PVwidGV4dFwiLE8ucHVuY3R1YXRpb249XCJwdW5jdHVhdGlvblwiLE8uY2xhc3NOYW1lPVwiY2xhc3MgbmFtZVwiLE8uZW51bU5hbWU9XCJlbnVtIG5hbWVcIixPLmludGVyZmFjZU5hbWU9XCJpbnRlcmZhY2UgbmFtZVwiLE8ubW9kdWxlTmFtZT1cIm1vZHVsZSBuYW1lXCIsTy50eXBlUGFyYW1ldGVyTmFtZT1cInR5cGUgcGFyYW1ldGVyIG5hbWVcIixPLnR5cGVBbGlhc05hbWU9XCJ0eXBlIGFsaWFzIG5hbWVcIixPLnBhcmFtZXRlck5hbWU9XCJwYXJhbWV0ZXIgbmFtZVwiLE8uZG9jQ29tbWVudFRhZ05hbWU9XCJkb2MgY29tbWVudCB0YWcgbmFtZVwiLE8uanN4T3BlblRhZ05hbWU9XCJqc3ggb3BlbiB0YWcgbmFtZVwiLE8uanN4Q2xvc2VUYWdOYW1lPVwianN4IGNsb3NlIHRhZyBuYW1lXCIsTy5qc3hTZWxmQ2xvc2luZ1RhZ05hbWU9XCJqc3ggc2VsZiBjbG9zaW5nIHRhZyBuYW1lXCIsTy5qc3hBdHRyaWJ1dGU9XCJqc3ggYXR0cmlidXRlXCIsTy5qc3hUZXh0PVwianN4IHRleHRcIixPLmpzeEF0dHJpYnV0ZVN0cmluZ0xpdGVyYWxWYWx1ZT1cImpzeCBhdHRyaWJ1dGUgc3RyaW5nIGxpdGVyYWwgdmFsdWVcIn0pKFI9ZS5DbGFzc2lmaWNhdGlvblR5cGVOYW1lc3x8KGUuQ2xhc3NpZmljYXRpb25UeXBlTmFtZXM9e30pKTt2YXIgcTsoZnVuY3Rpb24oTyl7T1tPLmNvbW1lbnQ9MV09XCJjb21tZW50XCIsT1tPLmlkZW50aWZpZXI9Ml09XCJpZGVudGlmaWVyXCIsT1tPLmtleXdvcmQ9M109XCJrZXl3b3JkXCIsT1tPLm51bWVyaWNMaXRlcmFsPTRdPVwibnVtZXJpY0xpdGVyYWxcIixPW08ub3BlcmF0b3I9NV09XCJvcGVyYXRvclwiLE9bTy5zdHJpbmdMaXRlcmFsPTZdPVwic3RyaW5nTGl0ZXJhbFwiLE9bTy5yZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWw9N109XCJyZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWxcIixPW08ud2hpdGVTcGFjZT04XT1cIndoaXRlU3BhY2VcIixPW08udGV4dD05XT1cInRleHRcIixPW08ucHVuY3R1YXRpb249MTBdPVwicHVuY3R1YXRpb25cIixPW08uY2xhc3NOYW1lPTExXT1cImNsYXNzTmFtZVwiLE9bTy5lbnVtTmFtZT0xMl09XCJlbnVtTmFtZVwiLE9bTy5pbnRlcmZhY2VOYW1lPTEzXT1cImludGVyZmFjZU5hbWVcIixPW08ubW9kdWxlTmFtZT0xNF09XCJtb2R1bGVOYW1lXCIsT1tPLnR5cGVQYXJhbWV0ZXJOYW1lPTE1XT1cInR5cGVQYXJhbWV0ZXJOYW1lXCIsT1tPLnR5cGVBbGlhc05hbWU9MTZdPVwidHlwZUFsaWFzTmFtZVwiLE9bTy5wYXJhbWV0ZXJOYW1lPTE3XT1cInBhcmFtZXRlck5hbWVcIixPW08uZG9jQ29tbWVudFRhZ05hbWU9MThdPVwiZG9jQ29tbWVudFRhZ05hbWVcIixPW08uanN4T3BlblRhZ05hbWU9MTldPVwianN4T3BlblRhZ05hbWVcIixPW08uanN4Q2xvc2VUYWdOYW1lPTIwXT1cImpzeENsb3NlVGFnTmFtZVwiLE9bTy5qc3hTZWxmQ2xvc2luZ1RhZ05hbWU9MjFdPVwianN4U2VsZkNsb3NpbmdUYWdOYW1lXCIsT1tPLmpzeEF0dHJpYnV0ZT0yMl09XCJqc3hBdHRyaWJ1dGVcIixPW08uanN4VGV4dD0yM109XCJqc3hUZXh0XCIsT1tPLmpzeEF0dHJpYnV0ZVN0cmluZ0xpdGVyYWxWYWx1ZT0yNF09XCJqc3hBdHRyaWJ1dGVTdHJpbmdMaXRlcmFsVmFsdWVcIixPW08uYmlnaW50TGl0ZXJhbD0yNV09XCJiaWdpbnRMaXRlcmFsXCJ9KShxPWUuQ2xhc3NpZmljYXRpb25UeXBlfHwoZS5DbGFzc2lmaWNhdGlvblR5cGU9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Uuc2Nhbm5lcj1lLmNyZWF0ZVNjYW5uZXIoOTksITApO3ZhciBhOyhmdW5jdGlvbihTZSl7U2VbU2UuTm9uZT0wXT1cIk5vbmVcIixTZVtTZS5WYWx1ZT0xXT1cIlZhbHVlXCIsU2VbU2UuVHlwZT0yXT1cIlR5cGVcIixTZVtTZS5OYW1lc3BhY2U9NF09XCJOYW1lc3BhY2VcIixTZVtTZS5BbGw9N109XCJBbGxcIn0pKGE9ZS5TZW1hbnRpY01lYW5pbmd8fChlLlNlbWFudGljTWVhbmluZz17fSkpO2Z1bmN0aW9uIEMoU2Upe3N3aXRjaChTZS5raW5kKXtjYXNlIDI1NDpyZXR1cm4gZS5pc0luSlNGaWxlKFNlKSYmZS5nZXRKU0RvY0VudW1UYWcoU2UpPzc6MTtjYXNlIDE2NDpjYXNlIDIwMzpjYXNlIDE2NzpjYXNlIDE2NjpjYXNlIDI5NjpjYXNlIDI5NzpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDI5MjpjYXNlIDI4NTpyZXR1cm4gMTtjYXNlIDE2MzpjYXNlIDI1ODpjYXNlIDI1OTpjYXNlIDE4MjpyZXR1cm4gMjtjYXNlIDM0NTpyZXR1cm4gU2UubmFtZT09PXZvaWQgMD8zOjI7Y2FzZSAyOTk6Y2FzZSAyNTc6cmV0dXJuIDM7Y2FzZSAyNjE6cmV0dXJuIGUuaXNBbWJpZW50TW9kdWxlKFNlKXx8ZS5nZXRNb2R1bGVJbnN0YW5jZVN0YXRlKFNlKT09PTE/NTo0O2Nhc2UgMjYwOmNhc2UgMjY5OmNhc2UgMjcwOmNhc2UgMjY1OmNhc2UgMjY2OmNhc2UgMjcxOmNhc2UgMjcyOnJldHVybiA3O2Nhc2UgMzA1OnJldHVybiA1fXJldHVybiA3fWUuZ2V0TWVhbmluZ0Zyb21EZWNsYXJhdGlvbj1DO2Z1bmN0aW9uIHcoU2Upe1NlPUJyKFNlKTt2YXIgaHI9U2UucGFyZW50O3JldHVybiBTZS5raW5kPT09MzA1PzE6ZS5pc0V4cG9ydEFzc2lnbm1lbnQoaHIpfHxlLmlzRXhwb3J0U3BlY2lmaWVyKGhyKXx8ZS5pc0V4dGVybmFsTW9kdWxlUmVmZXJlbmNlKGhyKXx8ZS5pc0ltcG9ydFNwZWNpZmllcihocil8fGUuaXNJbXBvcnRDbGF1c2UoaHIpfHxlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oaHIpJiZTZT09PWhyLm5hbWU/NzpFKFNlKT9CKFNlKTplLmlzRGVjbGFyYXRpb25OYW1lKFNlKT9DKGhyKTplLmlzRW50aXR5TmFtZShTZSkmJmUuZmluZEFuY2VzdG9yKFNlLGUub3IoZS5pc0pTRG9jTmFtZVJlZmVyZW5jZSxlLmlzSlNEb2NMaW5rTGlrZSxlLmlzSlNEb2NNZW1iZXJOYW1lKSk/NzpwKFNlKT8yOlEoU2UpPzQ6ZS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihocik/KGUuRGVidWcuYXNzZXJ0KGUuaXNKU0RvY1RlbXBsYXRlVGFnKGhyLnBhcmVudCkpLDIpOmUuaXNMaXRlcmFsVHlwZU5vZGUoaHIpPzM6MX1lLmdldE1lYW5pbmdGcm9tTG9jYXRpb249dztmdW5jdGlvbiBCKFNlKXt2YXIgaHI9U2Uua2luZD09PTE2MT9TZTplLmlzUXVhbGlmaWVkTmFtZShTZS5wYXJlbnQpJiZTZS5wYXJlbnQucmlnaHQ9PT1TZT9TZS5wYXJlbnQ6dm9pZCAwO3JldHVybiBociYmaHIucGFyZW50LmtpbmQ9PT0yNjU/Nzo0fWZ1bmN0aW9uIEUoU2Upe2Zvcig7U2UucGFyZW50LmtpbmQ9PT0xNjE7KVNlPVNlLnBhcmVudDtyZXR1cm4gZS5pc0ludGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oU2UucGFyZW50KSYmU2UucGFyZW50Lm1vZHVsZVJlZmVyZW5jZT09PVNlfWUuaXNJblJpZ2h0U2lkZU9mSW50ZXJuYWxJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbj1FO2Z1bmN0aW9uIFEoU2Upe3JldHVybiBsZShTZSl8fE4oU2UpfWZ1bmN0aW9uIGxlKFNlKXt2YXIgaHI9U2UsT3I9ITA7aWYoaHIucGFyZW50LmtpbmQ9PT0xNjEpe2Zvcig7aHIucGFyZW50JiZoci5wYXJlbnQua2luZD09PTE2MTspaHI9aHIucGFyZW50O09yPWhyLnJpZ2h0PT09U2V9cmV0dXJuIGhyLnBhcmVudC5raW5kPT09MTc4JiYhT3J9ZnVuY3Rpb24gTihTZSl7dmFyIGhyPVNlLE9yPSEwO2lmKGhyLnBhcmVudC5raW5kPT09MjA2KXtmb3IoO2hyLnBhcmVudCYmaHIucGFyZW50LmtpbmQ9PT0yMDY7KWhyPWhyLnBhcmVudDtPcj1oci5uYW1lPT09U2V9aWYoIU9yJiZoci5wYXJlbnQua2luZD09PTIyOCYmaHIucGFyZW50LnBhcmVudC5raW5kPT09MjkxKXt2YXIga2k9aHIucGFyZW50LnBhcmVudC5wYXJlbnQ7cmV0dXJuIGtpLmtpbmQ9PT0yNTcmJmhyLnBhcmVudC5wYXJlbnQudG9rZW49PT0xMTd8fGtpLmtpbmQ9PT0yNTgmJmhyLnBhcmVudC5wYXJlbnQudG9rZW49PT05NH1yZXR1cm4hMX1mdW5jdGlvbiBwKFNlKXtzd2l0Y2goZS5pc1JpZ2h0U2lkZU9mUXVhbGlmaWVkTmFtZU9yUHJvcGVydHlBY2Nlc3MoU2UpJiYoU2U9U2UucGFyZW50KSxTZS5raW5kKXtjYXNlIDEwODpyZXR1cm4hZS5pc0V4cHJlc3Npb25Ob2RlKFNlKTtjYXNlIDE5MjpyZXR1cm4hMH1zd2l0Y2goU2UucGFyZW50LmtpbmQpe2Nhc2UgMTc4OnJldHVybiEwO2Nhc2UgMjAwOnJldHVybiFTZS5wYXJlbnQuaXNUeXBlT2Y7Y2FzZSAyMjg6cmV0dXJuIGUuaXNQYXJ0T2ZUeXBlTm9kZShTZS5wYXJlbnQpfXJldHVybiExfWZ1bmN0aW9uIG0oU2UsaHIsT3Ipe3JldHVybiBocj09PXZvaWQgMCYmKGhyPSExKSxPcj09PXZvaWQgMCYmKE9yPSExKSxpZShTZSxlLmlzQ2FsbEV4cHJlc3Npb24sYixocixPcil9ZS5pc0NhbGxFeHByZXNzaW9uVGFyZ2V0PW07ZnVuY3Rpb24gRyhTZSxocixPcil7cmV0dXJuIGhyPT09dm9pZCAwJiYoaHI9ITEpLE9yPT09dm9pZCAwJiYoT3I9ITEpLGllKFNlLGUuaXNOZXdFeHByZXNzaW9uLGIsaHIsT3IpfWUuaXNOZXdFeHByZXNzaW9uVGFyZ2V0PUc7ZnVuY3Rpb24gb2UoU2UsaHIsT3Ipe3JldHVybiBocj09PXZvaWQgMCYmKGhyPSExKSxPcj09PXZvaWQgMCYmKE9yPSExKSxpZShTZSxlLmlzQ2FsbE9yTmV3RXhwcmVzc2lvbixiLGhyLE9yKX1lLmlzQ2FsbE9yTmV3RXhwcmVzc2lvblRhcmdldD1vZTtmdW5jdGlvbiBmKFNlLGhyLE9yKXtyZXR1cm4gaHI9PT12b2lkIDAmJihocj0hMSksT3I9PT12b2lkIDAmJihPcj0hMSksaWUoU2UsZS5pc1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbixzZSxocixPcil9ZS5pc1RhZ2dlZFRlbXBsYXRlVGFnPWY7ZnVuY3Rpb24gVChTZSxocixPcil7cmV0dXJuIGhyPT09dm9pZCAwJiYoaHI9ITEpLE9yPT09dm9pZCAwJiYoT3I9ITEpLGllKFNlLGUuaXNEZWNvcmF0b3IsYixocixPcil9ZS5pc0RlY29yYXRvclRhcmdldD1UO2Z1bmN0aW9uIEsoU2UsaHIsT3Ipe3JldHVybiBocj09PXZvaWQgMCYmKGhyPSExKSxPcj09PXZvaWQgMCYmKE9yPSExKSxpZShTZSxlLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50LEosaHIsT3IpfWUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnRUYWdOYW1lPUs7ZnVuY3Rpb24gYihTZSl7cmV0dXJuIFNlLmV4cHJlc3Npb259ZnVuY3Rpb24gc2UoU2Upe3JldHVybiBTZS50YWd9ZnVuY3Rpb24gSihTZSl7cmV0dXJuIFNlLnRhZ05hbWV9ZnVuY3Rpb24gaWUoU2UsaHIsT3Isa2ksZHQpe3ZhciBsYT1raT9xKFNlKTpSKFNlKTtyZXR1cm4gZHQmJihsYT1lLnNraXBPdXRlckV4cHJlc3Npb25zKGxhKSksISFsYSYmISFsYS5wYXJlbnQmJmhyKGxhLnBhcmVudCkmJk9yKGxhLnBhcmVudCk9PT1sYX1mdW5jdGlvbiBSKFNlKXtyZXR1cm4gJChTZSk/U2UucGFyZW50OlNlfWUuY2xpbWJQYXN0UHJvcGVydHlBY2Nlc3M9UjtmdW5jdGlvbiBxKFNlKXtyZXR1cm4gJChTZSl8fEEoU2UpP1NlLnBhcmVudDpTZX1lLmNsaW1iUGFzdFByb3BlcnR5T3JFbGVtZW50QWNjZXNzPXE7ZnVuY3Rpb24gTyhTZSxocil7Zm9yKDtTZTspe2lmKFNlLmtpbmQ9PT0yNTAmJlNlLmxhYmVsLmVzY2FwZWRUZXh0PT09aHIpcmV0dXJuIFNlLmxhYmVsO1NlPVNlLnBhcmVudH19ZS5nZXRUYXJnZXRMYWJlbD1PO2Z1bmN0aW9uIHZlKFNlLGhyKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihTZS5leHByZXNzaW9uKT9TZS5leHByZXNzaW9uLm5hbWUudGV4dD09PWhyOiExfWUuaGFzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uV2l0aE5hbWU9dmU7ZnVuY3Rpb24gZWUoU2Upe3ZhciBocjtyZXR1cm4gZS5pc0lkZW50aWZpZXIoU2UpJiYoKGhyPWUudHJ5Q2FzdChTZS5wYXJlbnQsZS5pc0JyZWFrT3JDb250aW51ZVN0YXRlbWVudCkpPT09bnVsbHx8aHI9PT12b2lkIDA/dm9pZCAwOmhyLmxhYmVsKT09PVNlfWUuaXNKdW1wU3RhdGVtZW50VGFyZ2V0PWVlO2Z1bmN0aW9uIGhlKFNlKXt2YXIgaHI7cmV0dXJuIGUuaXNJZGVudGlmaWVyKFNlKSYmKChocj1lLnRyeUNhc3QoU2UucGFyZW50LGUuaXNMYWJlbGVkU3RhdGVtZW50KSk9PT1udWxsfHxocj09PXZvaWQgMD92b2lkIDA6aHIubGFiZWwpPT09U2V9ZS5pc0xhYmVsT2ZMYWJlbGVkU3RhdGVtZW50PWhlO2Z1bmN0aW9uIEYoU2Upe3JldHVybiBoZShTZSl8fGVlKFNlKX1lLmlzTGFiZWxOYW1lPUY7ZnVuY3Rpb24geChTZSl7dmFyIGhyO3JldHVybigoaHI9ZS50cnlDYXN0KFNlLnBhcmVudCxlLmlzSlNEb2NUYWcpKT09PW51bGx8fGhyPT09dm9pZCAwP3ZvaWQgMDpoci50YWdOYW1lKT09PVNlfWUuaXNUYWdOYW1lPXg7ZnVuY3Rpb24gWChTZSl7dmFyIGhyO3JldHVybigoaHI9ZS50cnlDYXN0KFNlLnBhcmVudCxlLmlzUXVhbGlmaWVkTmFtZSkpPT09bnVsbHx8aHI9PT12b2lkIDA/dm9pZCAwOmhyLnJpZ2h0KT09PVNlfWUuaXNSaWdodFNpZGVPZlF1YWxpZmllZE5hbWU9WDtmdW5jdGlvbiAkKFNlKXt2YXIgaHI7cmV0dXJuKChocj1lLnRyeUNhc3QoU2UucGFyZW50LGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pKT09PW51bGx8fGhyPT09dm9pZCAwP3ZvaWQgMDpoci5uYW1lKT09PVNlfWUuaXNSaWdodFNpZGVPZlByb3BlcnR5QWNjZXNzPSQ7ZnVuY3Rpb24gQShTZSl7dmFyIGhyO3JldHVybigoaHI9ZS50cnlDYXN0KFNlLnBhcmVudCxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24pKT09PW51bGx8fGhyPT09dm9pZCAwP3ZvaWQgMDpoci5hcmd1bWVudEV4cHJlc3Npb24pPT09U2V9ZS5pc0FyZ3VtZW50RXhwcmVzc2lvbk9mRWxlbWVudEFjY2Vzcz1BO2Z1bmN0aW9uIHkoU2Upe3ZhciBocjtyZXR1cm4oKGhyPWUudHJ5Q2FzdChTZS5wYXJlbnQsZS5pc01vZHVsZURlY2xhcmF0aW9uKSk9PT1udWxsfHxocj09PXZvaWQgMD92b2lkIDA6aHIubmFtZSk9PT1TZX1lLmlzTmFtZU9mTW9kdWxlRGVjbGFyYXRpb249eTtmdW5jdGlvbiBWKFNlKXt2YXIgaHI7cmV0dXJuIGUuaXNJZGVudGlmaWVyKFNlKSYmKChocj1lLnRyeUNhc3QoU2UucGFyZW50LGUuaXNGdW5jdGlvbkxpa2UpKT09PW51bGx8fGhyPT09dm9pZCAwP3ZvaWQgMDpoci5uYW1lKT09PVNlfWUuaXNOYW1lT2ZGdW5jdGlvbkRlY2xhcmF0aW9uPVY7ZnVuY3Rpb24gTChTZSl7c3dpdGNoKFNlLnBhcmVudC5raW5kKXtjYXNlIDE2NzpjYXNlIDE2NjpjYXNlIDI5NjpjYXNlIDI5OTpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDI2MTpyZXR1cm4gZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihTZS5wYXJlbnQpPT09U2U7Y2FzZSAyMDc6cmV0dXJuIFNlLnBhcmVudC5hcmd1bWVudEV4cHJlc3Npb249PT1TZTtjYXNlIDE2MjpyZXR1cm4hMDtjYXNlIDE5NjpyZXR1cm4gU2UucGFyZW50LnBhcmVudC5raW5kPT09MTk0O2RlZmF1bHQ6cmV0dXJuITF9fWUuaXNMaXRlcmFsTmFtZU9mUHJvcGVydHlEZWNsYXJhdGlvbk9ySW5kZXhBY2Nlc3M9TDtmdW5jdGlvbiBQKFNlKXtyZXR1cm4gZS5pc0V4dGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oU2UucGFyZW50LnBhcmVudCkmJmUuZ2V0RXh0ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbkV4cHJlc3Npb24oU2UucGFyZW50LnBhcmVudCk9PT1TZX1lLmlzRXhwcmVzc2lvbk9mRXh0ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbj1QO2Z1bmN0aW9uIGsoU2Upe2ZvcihlLmlzSlNEb2NUeXBlQWxpYXMoU2UpJiYoU2U9U2UucGFyZW50LnBhcmVudCk7Oyl7aWYoU2U9U2UucGFyZW50LCFTZSlyZXR1cm47c3dpdGNoKFNlLmtpbmQpe2Nhc2UgMzA1OmNhc2UgMTY5OmNhc2UgMTY4OmNhc2UgMjU2OmNhc2UgMjEzOmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMjU3OmNhc2UgMjU4OmNhc2UgMjYwOmNhc2UgMjYxOnJldHVybiBTZX19fWUuZ2V0Q29udGFpbmVyTm9kZT1rO2Z1bmN0aW9uIFkoU2Upe3N3aXRjaChTZS5raW5kKXtjYXNlIDMwNTpyZXR1cm4gZS5pc0V4dGVybmFsTW9kdWxlKFNlKT9cIm1vZHVsZVwiOlwic2NyaXB0XCI7Y2FzZSAyNjE6cmV0dXJuXCJtb2R1bGVcIjtjYXNlIDI1NzpjYXNlIDIyNjpyZXR1cm5cImNsYXNzXCI7Y2FzZSAyNTg6cmV0dXJuXCJpbnRlcmZhY2VcIjtjYXNlIDI1OTpjYXNlIDMzODpjYXNlIDM0NTpyZXR1cm5cInR5cGVcIjtjYXNlIDI2MDpyZXR1cm5cImVudW1cIjtjYXNlIDI1NDpyZXR1cm4gd2EoU2UpO2Nhc2UgMjAzOnJldHVybiB3YShlLmdldFJvb3REZWNsYXJhdGlvbihTZSkpO2Nhc2UgMjE0OmNhc2UgMjU2OmNhc2UgMjEzOnJldHVyblwiZnVuY3Rpb25cIjtjYXNlIDE3MjpyZXR1cm5cImdldHRlclwiO2Nhc2UgMTczOnJldHVyblwic2V0dGVyXCI7Y2FzZSAxNjk6Y2FzZSAxNjg6cmV0dXJuXCJtZXRob2RcIjtjYXNlIDI5Njp2YXIgaHI9U2UuaW5pdGlhbGl6ZXI7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2UoaHIpP1wibWV0aG9kXCI6XCJwcm9wZXJ0eVwiO2Nhc2UgMTY3OmNhc2UgMTY2OmNhc2UgMjk3OmNhc2UgMjk4OnJldHVyblwicHJvcGVydHlcIjtjYXNlIDE3NjpyZXR1cm5cImluZGV4XCI7Y2FzZSAxNzU6cmV0dXJuXCJjb25zdHJ1Y3RcIjtjYXNlIDE3NDpyZXR1cm5cImNhbGxcIjtjYXNlIDE3MTpjYXNlIDE3MDpyZXR1cm5cImNvbnN0cnVjdG9yXCI7Y2FzZSAxNjM6cmV0dXJuXCJ0eXBlIHBhcmFtZXRlclwiO2Nhc2UgMjk5OnJldHVyblwiZW51bSBtZW1iZXJcIjtjYXNlIDE2NDpyZXR1cm4gZS5oYXNTeW50YWN0aWNNb2RpZmllcihTZSwxNjQ3Nik/XCJwcm9wZXJ0eVwiOlwicGFyYW1ldGVyXCI7Y2FzZSAyNjU6Y2FzZSAyNzA6Y2FzZSAyNzU6Y2FzZSAyNjg6Y2FzZSAyNzQ6cmV0dXJuXCJhbGlhc1wiO2Nhc2UgMjIxOnZhciBPcj1lLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoU2UpLGtpPVNlLnJpZ2h0O3N3aXRjaChPcil7Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAwOnJldHVyblwiXCI7Y2FzZSAxOmNhc2UgMjp2YXIgZHQ9WShraSk7cmV0dXJuIGR0PT09XCJcIj9cImNvbnN0XCI6ZHQ7Y2FzZSAzOnJldHVybiBlLmlzRnVuY3Rpb25FeHByZXNzaW9uKGtpKT9cIm1ldGhvZFwiOlwicHJvcGVydHlcIjtjYXNlIDQ6cmV0dXJuXCJwcm9wZXJ0eVwiO2Nhc2UgNTpyZXR1cm4gZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihraSk/XCJtZXRob2RcIjpcInByb3BlcnR5XCI7Y2FzZSA2OnJldHVyblwibG9jYWwgY2xhc3NcIjtkZWZhdWx0OnJldHVybiBlLmFzc2VydFR5cGUoT3IpLFwiXCJ9Y2FzZSA3OTpyZXR1cm4gZS5pc0ltcG9ydENsYXVzZShTZS5wYXJlbnQpP1wiYWxpYXNcIjpcIlwiO2Nhc2UgMjcxOnZhciBsYT1ZKFNlLmV4cHJlc3Npb24pO3JldHVybiBsYT09PVwiXCI/XCJjb25zdFwiOmxhO2RlZmF1bHQ6cmV0dXJuXCJcIn1mdW5jdGlvbiB3YShPbil7cmV0dXJuIGUuaXNWYXJDb25zdChPbik/XCJjb25zdFwiOmUuaXNMZXQoT24pP1wibGV0XCI6XCJ2YXJcIn19ZS5nZXROb2RlS2luZD1ZO2Z1bmN0aW9uIFUoU2Upe3N3aXRjaChTZS5raW5kKXtjYXNlIDEwODpyZXR1cm4hMDtjYXNlIDc5OnJldHVybiBlLmlkZW50aWZpZXJJc1RoaXNLZXl3b3JkKFNlKSYmU2UucGFyZW50LmtpbmQ9PT0xNjQ7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc1RoaXM9VTt2YXIgaj0vXlxcL1xcL1xcL1xccyo8LztmdW5jdGlvbiBIKFNlLGhyKXt2YXIgT3I9ZS5nZXRMaW5lU3RhcnRzKGhyKSxraT1oci5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihTZSkubGluZTtyZXR1cm4gT3Jba2ldfWUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbj1IO2Z1bmN0aW9uIEkoU2UsaHIpe3JldHVybiBmZShTZS5wb3MsU2UuZW5kLGhyKX1lLnJhbmdlQ29udGFpbnNSYW5nZT1JO2Z1bmN0aW9uIGwoU2UsaHIpe3JldHVybiBEKFNlLGhyLnBvcykmJkQoU2UsaHIuZW5kKX1lLnJhbmdlQ29udGFpbnNSYW5nZUV4Y2x1c2l2ZT1sO2Z1bmN0aW9uIGQoU2UsaHIpe3JldHVybiBTZS5wb3M8PWhyJiZocjw9U2UuZW5kfWUucmFuZ2VDb250YWluc1Bvc2l0aW9uPWQ7ZnVuY3Rpb24gRChTZSxocil7cmV0dXJuIFNlLnBvczxociYmaHI8U2UuZW5kfWUucmFuZ2VDb250YWluc1Bvc2l0aW9uRXhjbHVzaXZlPUQ7ZnVuY3Rpb24gZmUoU2UsaHIsT3Ipe3JldHVybiBTZTw9T3IucG9zJiZocj49T3IuZW5kfWUuc3RhcnRFbmRDb250YWluc1JhbmdlPWZlO2Z1bmN0aW9uIGcoU2UsaHIsT3Ipe3JldHVybiBTZS5wb3M8PWhyJiZTZS5lbmQ+PU9yfWUucmFuZ2VDb250YWluc1N0YXJ0RW5kPWc7ZnVuY3Rpb24gbmUoU2UsaHIsT3Ipe3JldHVybiBXZShTZS5wb3MsU2UuZW5kLGhyLE9yKX1lLnJhbmdlT3ZlcmxhcHNXaXRoU3RhcnRFbmQ9bmU7ZnVuY3Rpb24gdWUoU2UsaHIsT3Isa2kpe3JldHVybiBXZShTZS5nZXRTdGFydChociksU2UuZW5kLE9yLGtpKX1lLm5vZGVPdmVybGFwc1dpdGhTdGFydEVuZD11ZTtmdW5jdGlvbiBXZShTZSxocixPcixraSl7dmFyIGR0PU1hdGgubWF4KFNlLE9yKSxsYT1NYXRoLm1pbihocixraSk7cmV0dXJuIGR0PGxhfWUuc3RhcnRFbmRPdmVybGFwc1dpdGhTdGFydEVuZD1XZTtmdW5jdGlvbiBGZShTZSxocixPcil7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KFNlLnBvczw9aHIpLGhyPFNlLmVuZHx8IVooU2UsT3IpfWUucG9zaXRpb25CZWxvbmdzVG9Ob2RlPUZlO2Z1bmN0aW9uIFooU2UsaHIpe2lmKFNlPT09dm9pZCAwfHxlLm5vZGVJc01pc3NpbmcoU2UpKXJldHVybiExO3N3aXRjaChTZS5raW5kKXtjYXNlIDI1NzpjYXNlIDI1ODpjYXNlIDI2MDpjYXNlIDIwNTpjYXNlIDIwMTpjYXNlIDE4MjpjYXNlIDIzNTpjYXNlIDI2MjpjYXNlIDI2MzpjYXNlIDI2OTpjYXNlIDI3MzpyZXR1cm4gQmUoU2UsMTksaHIpO2Nhc2UgMjkyOnJldHVybiBaKFNlLmJsb2NrLGhyKTtjYXNlIDIwOTppZighU2UuYXJndW1lbnRzKXJldHVybiEwO2Nhc2UgMjA4OmNhc2UgMjEyOmNhc2UgMTkxOnJldHVybiBCZShTZSwyMSxocik7Y2FzZSAxNzk6Y2FzZSAxODA6cmV0dXJuIFooU2UudHlwZSxocik7Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAyNTY6Y2FzZSAyMTM6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzU6Y2FzZSAxNzQ6Y2FzZSAyMTQ6cmV0dXJuIFNlLmJvZHk/WihTZS5ib2R5LGhyKTpTZS50eXBlP1ooU2UudHlwZSxocik6UmUoU2UsMjEsaHIpO2Nhc2UgMjYxOnJldHVybiEhU2UuYm9keSYmWihTZS5ib2R5LGhyKTtjYXNlIDIzOTpyZXR1cm4gU2UuZWxzZVN0YXRlbWVudD9aKFNlLmVsc2VTdGF0ZW1lbnQsaHIpOlooU2UudGhlblN0YXRlbWVudCxocik7Y2FzZSAyMzg6cmV0dXJuIFooU2UuZXhwcmVzc2lvbixocil8fFJlKFNlLDI2LGhyKTtjYXNlIDIwNDpjYXNlIDIwMjpjYXNlIDIwNzpjYXNlIDE2MjpjYXNlIDE4NDpyZXR1cm4gQmUoU2UsMjMsaHIpO2Nhc2UgMTc2OnJldHVybiBTZS50eXBlP1ooU2UudHlwZSxocik6UmUoU2UsMjMsaHIpO2Nhc2UgMjg5OmNhc2UgMjkwOnJldHVybiExO2Nhc2UgMjQyOmNhc2UgMjQzOmNhc2UgMjQ0OmNhc2UgMjQxOnJldHVybiBaKFNlLnN0YXRlbWVudCxocik7Y2FzZSAyNDA6cmV0dXJuIFJlKFNlLDExNSxocik/QmUoU2UsMjEsaHIpOlooU2Uuc3RhdGVtZW50LGhyKTtjYXNlIDE4MTpyZXR1cm4gWihTZS5leHByTmFtZSxocik7Y2FzZSAyMTY6Y2FzZSAyMTU6Y2FzZSAyMTc6Y2FzZSAyMjQ6Y2FzZSAyMjU6dmFyIE9yPVNlO3JldHVybiBaKE9yLmV4cHJlc3Npb24saHIpO2Nhc2UgMjEwOnJldHVybiBaKFNlLnRlbXBsYXRlLGhyKTtjYXNlIDIyMzp2YXIga2k9ZS5sYXN0T3JVbmRlZmluZWQoU2UudGVtcGxhdGVTcGFucyk7cmV0dXJuIFooa2ksaHIpO2Nhc2UgMjMzOnJldHVybiBlLm5vZGVJc1ByZXNlbnQoU2UubGl0ZXJhbCk7Y2FzZSAyNzI6Y2FzZSAyNjY6cmV0dXJuIGUubm9kZUlzUHJlc2VudChTZS5tb2R1bGVTcGVjaWZpZXIpO2Nhc2UgMjE5OnJldHVybiBaKFNlLm9wZXJhbmQsaHIpO2Nhc2UgMjIxOnJldHVybiBaKFNlLnJpZ2h0LGhyKTtjYXNlIDIyMjpyZXR1cm4gWihTZS53aGVuRmFsc2UsaHIpO2RlZmF1bHQ6cmV0dXJuITB9fWZ1bmN0aW9uIEJlKFNlLGhyLE9yKXt2YXIga2k9U2UuZ2V0Q2hpbGRyZW4oT3IpO2lmKGtpLmxlbmd0aCl7dmFyIGR0PWUubGFzdChraSk7aWYoZHQua2luZD09PWhyKXJldHVybiEwO2lmKGR0LmtpbmQ9PT0yNiYma2kubGVuZ3RoIT09MSlyZXR1cm4ga2lba2kubGVuZ3RoLTJdLmtpbmQ9PT1ocn1yZXR1cm4hMX1mdW5jdGlvbiBnZShTZSl7dmFyIGhyPUVlKFNlKTtpZighIWhyKXt2YXIgT3I9aHIuZ2V0Q2hpbGRyZW4oKSxraT1lLmluZGV4T2ZOb2RlKE9yLFNlKTtyZXR1cm57bGlzdEl0ZW1JbmRleDpraSxsaXN0OmhyfX19ZS5maW5kTGlzdEl0ZW1JbmZvPWdlO2Z1bmN0aW9uIFJlKFNlLGhyLE9yKXtyZXR1cm4hIXplKFNlLGhyLE9yKX1lLmhhc0NoaWxkT2ZLaW5kPVJlO2Z1bmN0aW9uIHplKFNlLGhyLE9yKXtyZXR1cm4gZS5maW5kKFNlLmdldENoaWxkcmVuKE9yKSxmdW5jdGlvbihraSl7cmV0dXJuIGtpLmtpbmQ9PT1ocn0pfWUuZmluZENoaWxkT2ZLaW5kPXplO2Z1bmN0aW9uIEVlKFNlKXt2YXIgaHI9ZS5maW5kKFNlLnBhcmVudC5nZXRDaGlsZHJlbigpLGZ1bmN0aW9uKE9yKXtyZXR1cm4gZS5pc1N5bnRheExpc3QoT3IpJiZJKE9yLFNlKX0pO3JldHVybiBlLkRlYnVnLmFzc2VydCghaHJ8fGUuY29udGFpbnMoaHIuZ2V0Q2hpbGRyZW4oKSxTZSkpLGhyfWUuZmluZENvbnRhaW5pbmdMaXN0PUVlO2Z1bmN0aW9uIEhlKFNlKXtyZXR1cm4gU2Uua2luZD09PTg4fWZ1bmN0aW9uIHJyKFNlKXtyZXR1cm4gU2Uua2luZD09PTg0fWZ1bmN0aW9uIEllKFNlKXtyZXR1cm4gU2Uua2luZD09PTk4fWZ1bmN0aW9uIF9lKFNlKXtpZihlLmlzTmFtZWREZWNsYXJhdGlvbihTZSkpcmV0dXJuIFNlLm5hbWU7aWYoZS5pc0NsYXNzRGVjbGFyYXRpb24oU2UpKXt2YXIgaHI9U2UubW9kaWZpZXJzJiZlLmZpbmQoU2UubW9kaWZpZXJzLEhlKTtpZihocilyZXR1cm4gaHJ9aWYoZS5pc0NsYXNzRXhwcmVzc2lvbihTZSkpe3ZhciBPcj1lLmZpbmQoU2UuZ2V0Q2hpbGRyZW4oKSxycik7aWYoT3IpcmV0dXJuIE9yfX1mdW5jdGlvbiB3ZShTZSl7aWYoZS5pc05hbWVkRGVjbGFyYXRpb24oU2UpKXJldHVybiBTZS5uYW1lO2lmKGUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKFNlKSl7dmFyIGhyPWUuZmluZChTZS5tb2RpZmllcnMsSGUpO2lmKGhyKXJldHVybiBocn1pZihlLmlzRnVuY3Rpb25FeHByZXNzaW9uKFNlKSl7dmFyIE9yPWUuZmluZChTZS5nZXRDaGlsZHJlbigpLEllKTtpZihPcilyZXR1cm4gT3J9fWZ1bmN0aW9uIGRlKFNlKXt2YXIgaHI7cmV0dXJuIGUuZmluZEFuY2VzdG9yKFNlLGZ1bmN0aW9uKE9yKXtyZXR1cm4gZS5pc1R5cGVOb2RlKE9yKSYmKGhyPU9yKSwhZS5pc1F1YWxpZmllZE5hbWUoT3IucGFyZW50KSYmIWUuaXNUeXBlTm9kZShPci5wYXJlbnQpJiYhZS5pc1R5cGVFbGVtZW50KE9yLnBhcmVudCl9KSxocn1mdW5jdGlvbiB5ZShTZSxocil7dmFyIE9yPXlpKFNlLGhyKTtpZihPcilyZXR1cm4gT3I7dmFyIGtpPWRlKFNlKTtyZXR1cm4ga2kmJmhyLmdldFR5cGVBdExvY2F0aW9uKGtpKX1lLmdldENvbnRleHR1YWxUeXBlRnJvbVBhcmVudE9yQW5jZXN0b3JUeXBlTm9kZT15ZTtmdW5jdGlvbiBBZShTZSxocil7aWYoIWhyKXN3aXRjaChTZS5raW5kKXtjYXNlIDI1NzpjYXNlIDIyNjpyZXR1cm4gX2UoU2UpO2Nhc2UgMjU2OmNhc2UgMjEzOnJldHVybiB3ZShTZSl9aWYoZS5pc05hbWVkRGVjbGFyYXRpb24oU2UpKXJldHVybiBTZS5uYW1lfWZ1bmN0aW9uIGVyKFNlLGhyKXtpZihTZS5pbXBvcnRDbGF1c2Upe2lmKFNlLmltcG9ydENsYXVzZS5uYW1lJiZTZS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncylyZXR1cm47aWYoU2UuaW1wb3J0Q2xhdXNlLm5hbWUpcmV0dXJuIFNlLmltcG9ydENsYXVzZS5uYW1lO2lmKFNlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKXtpZihlLmlzTmFtZWRJbXBvcnRzKFNlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKSl7dmFyIE9yPWUuc2luZ2xlT3JVbmRlZmluZWQoU2UuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MuZWxlbWVudHMpO3JldHVybiBPcj9Pci5uYW1lOnZvaWQgMH1lbHNlIGlmKGUuaXNOYW1lc3BhY2VJbXBvcnQoU2UuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpKXJldHVybiBTZS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5uYW1lfX1pZighaHIpcmV0dXJuIFNlLm1vZHVsZVNwZWNpZmllcn1mdW5jdGlvbiBpcihTZSxocil7aWYoU2UuZXhwb3J0Q2xhdXNlKXtpZihlLmlzTmFtZWRFeHBvcnRzKFNlLmV4cG9ydENsYXVzZSkpe3ZhciBPcj1lLnNpbmdsZU9yVW5kZWZpbmVkKFNlLmV4cG9ydENsYXVzZS5lbGVtZW50cyk7cmV0dXJuIE9yP1NlLmV4cG9ydENsYXVzZS5lbGVtZW50c1swXS5uYW1lOnZvaWQgMH1lbHNlIGlmKGUuaXNOYW1lc3BhY2VFeHBvcnQoU2UuZXhwb3J0Q2xhdXNlKSlyZXR1cm4gU2UuZXhwb3J0Q2xhdXNlLm5hbWV9aWYoIWhyKXJldHVybiBTZS5tb2R1bGVTcGVjaWZpZXJ9ZnVuY3Rpb24gQ3IoU2Upe2lmKFNlLnR5cGVzLmxlbmd0aD09PTEpcmV0dXJuIFNlLnR5cGVzWzBdLmV4cHJlc3Npb259ZnVuY3Rpb24gWWUoU2UsaHIpe3ZhciBPcj1TZS5wYXJlbnQ7aWYoZS5pc01vZGlmaWVyKFNlKSYmKGhyfHxTZS5raW5kIT09ODgpP2UuY29udGFpbnMoT3IubW9kaWZpZXJzLFNlKTpTZS5raW5kPT09ODQ/ZS5pc0NsYXNzRGVjbGFyYXRpb24oT3IpfHxlLmlzQ2xhc3NFeHByZXNzaW9uKFNlKTpTZS5raW5kPT09OTg/ZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oT3IpfHxlLmlzRnVuY3Rpb25FeHByZXNzaW9uKFNlKTpTZS5raW5kPT09MTE4P2UuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihPcik6U2Uua2luZD09PTkyP2UuaXNFbnVtRGVjbGFyYXRpb24oT3IpOlNlLmtpbmQ9PT0xNTI/ZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKE9yKTpTZS5raW5kPT09MTQyfHxTZS5raW5kPT09MTQxP2UuaXNNb2R1bGVEZWNsYXJhdGlvbihPcik6U2Uua2luZD09PTEwMD9lLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oT3IpOlNlLmtpbmQ9PT0xMzY/ZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oT3IpOlNlLmtpbmQ9PT0xNDkmJmUuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKE9yKSl7dmFyIGtpPUFlKE9yLGhyKTtpZihraSlyZXR1cm4ga2l9aWYoKFNlLmtpbmQ9PT0xMTN8fFNlLmtpbmQ9PT04NXx8U2Uua2luZD09PTExOSkmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChPcikmJk9yLmRlY2xhcmF0aW9ucy5sZW5ndGg9PT0xKXt2YXIgZHQ9T3IuZGVjbGFyYXRpb25zWzBdO2lmKGUuaXNJZGVudGlmaWVyKGR0Lm5hbWUpKXJldHVybiBkdC5uYW1lfWlmKFNlLmtpbmQ9PT0xNTIpe2lmKGUuaXNJbXBvcnRDbGF1c2UoT3IpJiZPci5pc1R5cGVPbmx5KXt2YXIga2k9ZXIoT3IucGFyZW50LGhyKTtpZihraSlyZXR1cm4ga2l9aWYoZS5pc0V4cG9ydERlY2xhcmF0aW9uKE9yKSYmT3IuaXNUeXBlT25seSl7dmFyIGtpPWlyKE9yLGhyKTtpZihraSlyZXR1cm4ga2l9fWlmKFNlLmtpbmQ9PT0xMjcpe2lmKGUuaXNJbXBvcnRTcGVjaWZpZXIoT3IpJiZPci5wcm9wZXJ0eU5hbWV8fGUuaXNFeHBvcnRTcGVjaWZpZXIoT3IpJiZPci5wcm9wZXJ0eU5hbWV8fGUuaXNOYW1lc3BhY2VJbXBvcnQoT3IpfHxlLmlzTmFtZXNwYWNlRXhwb3J0KE9yKSlyZXR1cm4gT3IubmFtZTtpZihlLmlzRXhwb3J0RGVjbGFyYXRpb24oT3IpJiZPci5leHBvcnRDbGF1c2UmJmUuaXNOYW1lc3BhY2VFeHBvcnQoT3IuZXhwb3J0Q2xhdXNlKSlyZXR1cm4gT3IuZXhwb3J0Q2xhdXNlLm5hbWV9aWYoU2Uua2luZD09PTEwMCYmZS5pc0ltcG9ydERlY2xhcmF0aW9uKE9yKSl7dmFyIGtpPWVyKE9yLGhyKTtpZihraSlyZXR1cm4ga2l9aWYoU2Uua2luZD09PTkzKXtpZihlLmlzRXhwb3J0RGVjbGFyYXRpb24oT3IpKXt2YXIga2k9aXIoT3IsaHIpO2lmKGtpKXJldHVybiBraX1pZihlLmlzRXhwb3J0QXNzaWdubWVudChPcikpcmV0dXJuIGUuc2tpcE91dGVyRXhwcmVzc2lvbnMoT3IuZXhwcmVzc2lvbil9aWYoU2Uua2luZD09PTE0NiYmZS5pc0V4dGVybmFsTW9kdWxlUmVmZXJlbmNlKE9yKSlyZXR1cm4gT3IuZXhwcmVzc2lvbjtpZihTZS5raW5kPT09MTU2JiYoZS5pc0ltcG9ydERlY2xhcmF0aW9uKE9yKXx8ZS5pc0V4cG9ydERlY2xhcmF0aW9uKE9yKSkmJk9yLm1vZHVsZVNwZWNpZmllcilyZXR1cm4gT3IubW9kdWxlU3BlY2lmaWVyO2lmKChTZS5raW5kPT09OTR8fFNlLmtpbmQ9PT0xMTcpJiZlLmlzSGVyaXRhZ2VDbGF1c2UoT3IpJiZPci50b2tlbj09PVNlLmtpbmQpe3ZhciBraT1DcihPcik7aWYoa2kpcmV0dXJuIGtpfWlmKFNlLmtpbmQ9PT05NCl7aWYoZS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihPcikmJk9yLmNvbnN0cmFpbnQmJmUuaXNUeXBlUmVmZXJlbmNlTm9kZShPci5jb25zdHJhaW50KSlyZXR1cm4gT3IuY29uc3RyYWludC50eXBlTmFtZTtpZihlLmlzQ29uZGl0aW9uYWxUeXBlTm9kZShPcikmJmUuaXNUeXBlUmVmZXJlbmNlTm9kZShPci5leHRlbmRzVHlwZSkpcmV0dXJuIE9yLmV4dGVuZHNUeXBlLnR5cGVOYW1lfWlmKFNlLmtpbmQ9PT0xMzcmJmUuaXNJbmZlclR5cGVOb2RlKE9yKSlyZXR1cm4gT3IudHlwZVBhcmFtZXRlci5uYW1lO2lmKFNlLmtpbmQ9PT0xMDEmJmUuaXNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oT3IpJiZlLmlzTWFwcGVkVHlwZU5vZGUoT3IucGFyZW50KSlyZXR1cm4gT3IubmFtZTtpZihTZS5raW5kPT09MTQwJiZlLmlzVHlwZU9wZXJhdG9yTm9kZShPcikmJk9yLm9wZXJhdG9yPT09MTQwJiZlLmlzVHlwZVJlZmVyZW5jZU5vZGUoT3IudHlwZSkpcmV0dXJuIE9yLnR5cGUudHlwZU5hbWU7aWYoU2Uua2luZD09PTE0NSYmZS5pc1R5cGVPcGVyYXRvck5vZGUoT3IpJiZPci5vcGVyYXRvcj09PTE0NSYmZS5pc0FycmF5VHlwZU5vZGUoT3IudHlwZSkmJmUuaXNUeXBlUmVmZXJlbmNlTm9kZShPci50eXBlLmVsZW1lbnRUeXBlKSlyZXR1cm4gT3IudHlwZS5lbGVtZW50VHlwZS50eXBlTmFtZTtpZighaHIpe2lmKChTZS5raW5kPT09MTAzJiZlLmlzTmV3RXhwcmVzc2lvbihPcil8fFNlLmtpbmQ9PT0xMTQmJmUuaXNWb2lkRXhwcmVzc2lvbihPcil8fFNlLmtpbmQ9PT0xMTImJmUuaXNUeXBlT2ZFeHByZXNzaW9uKE9yKXx8U2Uua2luZD09PTEzMiYmZS5pc0F3YWl0RXhwcmVzc2lvbihPcil8fFNlLmtpbmQ9PT0xMjUmJmUuaXNZaWVsZEV4cHJlc3Npb24oT3IpfHxTZS5raW5kPT09ODkmJmUuaXNEZWxldGVFeHByZXNzaW9uKE9yKSkmJk9yLmV4cHJlc3Npb24pcmV0dXJuIGUuc2tpcE91dGVyRXhwcmVzc2lvbnMoT3IuZXhwcmVzc2lvbik7aWYoKFNlLmtpbmQ9PT0xMDF8fFNlLmtpbmQ9PT0xMDIpJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihPcikmJk9yLm9wZXJhdG9yVG9rZW49PT1TZSlyZXR1cm4gZS5za2lwT3V0ZXJFeHByZXNzaW9ucyhPci5yaWdodCk7aWYoU2Uua2luZD09PTEyNyYmZS5pc0FzRXhwcmVzc2lvbihPcikmJmUuaXNUeXBlUmVmZXJlbmNlTm9kZShPci50eXBlKSlyZXR1cm4gT3IudHlwZS50eXBlTmFtZTtpZihTZS5raW5kPT09MTAxJiZlLmlzRm9ySW5TdGF0ZW1lbnQoT3IpfHxTZS5raW5kPT09MTYwJiZlLmlzRm9yT2ZTdGF0ZW1lbnQoT3IpKXJldHVybiBlLnNraXBPdXRlckV4cHJlc3Npb25zKE9yLmV4cHJlc3Npb24pfXJldHVybiBTZX1mdW5jdGlvbiBCcihTZSl7cmV0dXJuIFllKFNlLCExKX1lLmdldEFkanVzdGVkUmVmZXJlbmNlTG9jYXRpb249QnI7ZnVuY3Rpb24gRXIoU2Upe3JldHVybiBZZShTZSwhMCl9ZS5nZXRBZGp1c3RlZFJlbmFtZUxvY2F0aW9uPUVyO2Z1bmN0aW9uIE5lKFNlLGhyKXtyZXR1cm4gbihTZSxocixmdW5jdGlvbihPcil7cmV0dXJuIGUuaXNQcm9wZXJ0eU5hbWVMaXRlcmFsKE9yKXx8ZS5pc0tleXdvcmQoT3Iua2luZCl8fGUuaXNQcml2YXRlSWRlbnRpZmllcihPcil9KX1lLmdldFRvdWNoaW5nUHJvcGVydHlOYW1lPU5lO2Z1bmN0aW9uIG4oU2UsaHIsT3Ipe3JldHVybiBiZShTZSxociwhMSxPciwhMSl9ZS5nZXRUb3VjaGluZ1Rva2VuPW47ZnVuY3Rpb24gbHIoU2UsaHIpe3JldHVybiBiZShTZSxociwhMCx2b2lkIDAsITEpfWUuZ2V0VG9rZW5BdFBvc2l0aW9uPWxyO2Z1bmN0aW9uIGJlKFNlLGhyLE9yLGtpLGR0KXt2YXIgbGE9U2Usd2EsT249ZnVuY3Rpb24oKXt2YXIgcG89bGEuZ2V0Q2hpbGRyZW4oU2UpLEduPWUuYmluYXJ5U2VhcmNoS2V5KHBvLGhyLGZ1bmN0aW9uKCRuLEhvKXtyZXR1cm4gSG99LGZ1bmN0aW9uKCRuLEhvKXt2YXIgWm89T3I/cG9bJG5dLmdldEZ1bGxTdGFydCgpOnBvWyRuXS5nZXRTdGFydChTZSwhMCk7cmV0dXJuIFpvPmhyPzE6am8ocG9bJG5dKT9wb1skbi0xXSYmam8ocG9bJG4tMV0pPzE6MDpraSYmWm89PT1ociYmcG9bJG4tMV0mJnBvWyRuLTFdLmdldEVuZCgpPT09aHImJmpvKHBvWyRuLTFdKT8xOi0xfSk7cmV0dXJuIHdhP3t2YWx1ZTp3YX06R24+PTAmJnBvW0duXT8obGE9cG9bR25dLFwiY29udGludWUtb3V0ZXJcIik6e3ZhbHVlOmxhfX07ZTpmb3IoOzspe3ZhciBObz1PbigpO2lmKHR5cGVvZiBObz09XCJvYmplY3RcIilyZXR1cm4gTm8udmFsdWU7c3dpdGNoKE5vKXtjYXNlXCJjb250aW51ZS1vdXRlclwiOmNvbnRpbnVlIGV9fWZ1bmN0aW9uIGpvKHBvKXt2YXIgR249T3I/cG8uZ2V0RnVsbFN0YXJ0KCk6cG8uZ2V0U3RhcnQoU2UsITApO2lmKEduPmhyKXJldHVybiExO3ZhciAkbj1wby5nZXRFbmQoKTtpZihocjwkbnx8aHI9PT0kbiYmKHBvLmtpbmQ9PT0xfHxkdCkpcmV0dXJuITA7aWYoa2kmJiRuPT09aHIpe3ZhciBIbz1JcihocixTZSxwbyk7aWYoSG8mJmtpKEhvKSlyZXR1cm4gd2E9SG8sITB9cmV0dXJuITF9fWZ1bmN0aW9uIEdlKFNlLGhyKXtmb3IodmFyIE9yPWxyKFNlLGhyKTtvcihPcik7KXt2YXIga2k9eXIoT3IsT3IucGFyZW50LFNlKTtpZigha2kpcmV0dXJuO09yPWtpfXJldHVybiBPcn1lLmZpbmRGaXJzdE5vbkpzeFdoaXRlc3BhY2VUb2tlbj1HZTtmdW5jdGlvbiB1cihTZSxocil7dmFyIE9yPWxyKFNlLGhyKTtyZXR1cm4gZS5pc1Rva2VuKE9yKSYmaHI+T3IuZ2V0U3RhcnQoU2UpJiZocjxPci5nZXRFbmQoKT9PcjpJcihocixTZSl9ZS5maW5kVG9rZW5PbkxlZnRPZlBvc2l0aW9uPXVyO2Z1bmN0aW9uIHlyKFNlLGhyLE9yKXtyZXR1cm4ga2koaHIpO2Z1bmN0aW9uIGtpKGR0KXtyZXR1cm4gZS5pc1Rva2VuKGR0KSYmZHQucG9zPT09U2UuZW5kP2R0OmUuZmlyc3REZWZpbmVkKGR0LmdldENoaWxkcmVuKE9yKSxmdW5jdGlvbihsYSl7dmFyIHdhPWxhLnBvczw9U2UucG9zJiZsYS5lbmQ+U2UuZW5kfHxsYS5wb3M9PT1TZS5lbmQ7cmV0dXJuIHdhJiZwaShsYSxPcik/a2kobGEpOnZvaWQgMH0pfX1lLmZpbmROZXh0VG9rZW49eXI7ZnVuY3Rpb24gSXIoU2UsaHIsT3Isa2kpe3ZhciBkdD1sYShPcnx8aHIpO3JldHVybiBlLkRlYnVnLmFzc2VydCghKGR0JiZvcihkdCkpKSxkdDtmdW5jdGlvbiBsYSh3YSl7aWYod3Iod2EpJiZ3YS5raW5kIT09MSlyZXR1cm4gd2E7dmFyIE9uPXdhLmdldENoaWxkcmVuKGhyKSxObz1lLmJpbmFyeVNlYXJjaEtleShPbixTZSxmdW5jdGlvbihabyxFcyl7cmV0dXJuIEVzfSxmdW5jdGlvbihabyxFcyl7cmV0dXJuIFNlPE9uW1pvXS5lbmQ/IU9uW1pvLTFdfHxTZT49T25bWm8tMV0uZW5kPzA6MTotMX0pO2lmKE5vPj0wJiZPbltOb10pe3ZhciBqbz1PbltOb107aWYoU2U8am8uZW5kKXt2YXIgcG89am8uZ2V0U3RhcnQoaHIsIWtpKSxHbj1wbz49U2V8fCFwaShqbyxocil8fG9yKGpvKTtpZihHbil7dmFyICRuPWlpKE9uLE5vLGhyLHdhLmtpbmQpO3JldHVybiAkbiYmVXIoJG4saHIpfWVsc2UgcmV0dXJuIGxhKGpvKX19ZS5EZWJ1Zy5hc3NlcnQoT3IhPT12b2lkIDB8fHdhLmtpbmQ9PT0zMDV8fHdhLmtpbmQ9PT0xfHxlLmlzSlNEb2NDb21tZW50Q29udGFpbmluZ05vZGUod2EpKTt2YXIgSG89aWkoT24sT24ubGVuZ3RoLGhyLHdhLmtpbmQpO3JldHVybiBIbyYmVXIoSG8saHIpfX1lLmZpbmRQcmVjZWRpbmdUb2tlbj1JcjtmdW5jdGlvbiB3cihTZSl7cmV0dXJuIGUuaXNUb2tlbihTZSkmJiFvcihTZSl9ZnVuY3Rpb24gVXIoU2UsaHIpe2lmKHdyKFNlKSlyZXR1cm4gU2U7dmFyIE9yPVNlLmdldENoaWxkcmVuKGhyKTtpZihPci5sZW5ndGg9PT0wKXJldHVybiBTZTt2YXIga2k9aWkoT3IsT3IubGVuZ3RoLGhyLFNlLmtpbmQpO3JldHVybiBraSYmVXIoa2ksaHIpfWZ1bmN0aW9uIGlpKFNlLGhyLE9yLGtpKXtmb3IodmFyIGR0PWhyLTE7ZHQ+PTA7ZHQtLSl7dmFyIGxhPVNlW2R0XTtpZihvcihsYSkpZHQ9PT0wJiYoa2k9PT0xMXx8a2k9PT0yNzkpJiZlLkRlYnVnLmZhaWwoXCJgSnN4VGV4dGAgdG9rZW5zIHNob3VsZCBub3QgYmUgdGhlIGZpcnN0IGNoaWxkIG9mIGBKc3hFbGVtZW50IHwgSnN4U2VsZkNsb3NpbmdFbGVtZW50YFwiKTtlbHNlIGlmKHBpKFNlW2R0XSxPcikpcmV0dXJuIFNlW2R0XX19ZnVuY3Rpb24gbWkoU2UsaHIsT3Ipe2lmKE9yPT09dm9pZCAwJiYoT3I9SXIoaHIsU2UpKSxPciYmZS5pc1N0cmluZ1RleHRDb250YWluaW5nTm9kZShPcikpe3ZhciBraT1Pci5nZXRTdGFydChTZSksZHQ9T3IuZ2V0RW5kKCk7aWYoa2k8aHImJmhyPGR0KXJldHVybiEwO2lmKGhyPT09ZHQpcmV0dXJuISFPci5pc1VudGVybWluYXRlZH1yZXR1cm4hMX1lLmlzSW5TdHJpbmc9bWk7ZnVuY3Rpb24gcGUoU2UsaHIpe3ZhciBPcj1scihTZSxocik7cmV0dXJuIE9yPyEhKE9yLmtpbmQ9PT0xMXx8T3Iua2luZD09PTI5JiZPci5wYXJlbnQua2luZD09PTExfHxPci5raW5kPT09MjkmJk9yLnBhcmVudC5raW5kPT09Mjg4fHxPciYmT3Iua2luZD09PTE5JiZPci5wYXJlbnQua2luZD09PTI4OHx8T3Iua2luZD09PTI5JiZPci5wYXJlbnQua2luZD09PTI4MSk6ITF9ZS5pc0luc2lkZUpzeEVsZW1lbnRPckF0dHJpYnV0ZT1wZTtmdW5jdGlvbiBvcihTZSl7cmV0dXJuIGUuaXNKc3hUZXh0KFNlKSYmU2UuY29udGFpbnNPbmx5VHJpdmlhV2hpdGVTcGFjZXN9ZnVuY3Rpb24gcXIoU2UsaHIpe3ZhciBPcj1scihTZSxocik7cmV0dXJuIGUuaXNUZW1wbGF0ZUxpdGVyYWxLaW5kKE9yLmtpbmQpJiZocj5Pci5nZXRTdGFydChTZSl9ZS5pc0luVGVtcGxhdGVTdHJpbmc9cXI7ZnVuY3Rpb24gc2koU2UsaHIpe3ZhciBPcj1scihTZSxocik7cmV0dXJuISEoZS5pc0pzeFRleHQoT3IpfHxPci5raW5kPT09MTgmJmUuaXNKc3hFeHByZXNzaW9uKE9yLnBhcmVudCkmJmUuaXNKc3hFbGVtZW50KE9yLnBhcmVudC5wYXJlbnQpfHxPci5raW5kPT09MjkmJmUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQoT3IucGFyZW50KSYmZS5pc0pzeEVsZW1lbnQoT3IucGFyZW50LnBhcmVudCkpfWUuaXNJbkpTWFRleHQ9c2k7ZnVuY3Rpb24gRGkoU2UsaHIpe2Z1bmN0aW9uIE9yKGtpKXtmb3IoO2tpOylpZihraS5raW5kPj0yNzkmJmtpLmtpbmQ8PTI4OHx8a2kua2luZD09PTExfHxraS5raW5kPT09Mjl8fGtpLmtpbmQ9PT0zMXx8a2kua2luZD09PTc5fHxraS5raW5kPT09MTl8fGtpLmtpbmQ9PT0xOHx8a2kua2luZD09PTQzKWtpPWtpLnBhcmVudDtlbHNlIGlmKGtpLmtpbmQ9PT0yNzgpe2lmKGhyPmtpLmdldFN0YXJ0KFNlKSlyZXR1cm4hMDtraT1raS5wYXJlbnR9ZWxzZSByZXR1cm4hMTtyZXR1cm4hMX1yZXR1cm4gT3IobHIoU2UsaHIpKX1lLmlzSW5zaWRlSnN4RWxlbWVudD1EaTtmdW5jdGlvbiB3aShTZSxocixPcil7dmFyIGtpPWUudG9rZW5Ub1N0cmluZyhTZS5raW5kKSxkdD1lLnRva2VuVG9TdHJpbmcoaHIpLGxhPVNlLmdldEZ1bGxTdGFydCgpLHdhPU9yLnRleHQubGFzdEluZGV4T2YoZHQsbGEpO2lmKHdhIT09LTEpe2lmKE9yLnRleHQubGFzdEluZGV4T2Yoa2ksbGEtMSk8d2Epe3ZhciBPbj1Jcih3YSsxLE9yKTtpZihPbiYmT24ua2luZD09PWhyKXJldHVybiBPbn1mb3IodmFyIE5vPVNlLmtpbmQsam89MDs7KXt2YXIgcG89SXIoU2UuZ2V0RnVsbFN0YXJ0KCksT3IpO2lmKCFwbylyZXR1cm47aWYoU2U9cG8sU2Uua2luZD09PWhyKXtpZihqbz09PTApcmV0dXJuIFNlO2pvLS19ZWxzZSBTZS5raW5kPT09Tm8mJmpvKyt9fX1lLmZpbmRQcmVjZWRpbmdNYXRjaGluZ1Rva2VuPXdpO2Z1bmN0aW9uIFhpKFNlLGhyLE9yKXtyZXR1cm4gaHI/U2UuZ2V0Tm9uTnVsbGFibGVUeXBlKCk6T3I/U2UuZ2V0Tm9uT3B0aW9uYWxUeXBlKCk6U2V9ZS5yZW1vdmVPcHRpb25hbGl0eT1YaTtmdW5jdGlvbiBldChTZSxocixPcil7dmFyIGtpPVd0KFNlLGhyKTtyZXR1cm4ga2khPT12b2lkIDAmJihlLmlzUGFydE9mVHlwZU5vZGUoa2kuY2FsbGVkKXx8R2koa2kuY2FsbGVkLGtpLm5UeXBlQXJndW1lbnRzLE9yKS5sZW5ndGghPT0wfHxldChraS5jYWxsZWQsaHIsT3IpKX1lLmlzUG9zc2libHlUeXBlQXJndW1lbnRQb3NpdGlvbj1ldDtmdW5jdGlvbiBHaShTZSxocixPcil7dmFyIGtpPU9yLmdldFR5cGVBdExvY2F0aW9uKFNlKTtlLmlzT3B0aW9uYWxDaGFpbihTZS5wYXJlbnQpJiYoa2k9WGkoa2ksZS5pc09wdGlvbmFsQ2hhaW5Sb290KFNlLnBhcmVudCksITApKTt2YXIgZHQ9ZS5pc05ld0V4cHJlc3Npb24oU2UucGFyZW50KT9raS5nZXRDb25zdHJ1Y3RTaWduYXR1cmVzKCk6a2kuZ2V0Q2FsbFNpZ25hdHVyZXMoKTtyZXR1cm4gZHQuZmlsdGVyKGZ1bmN0aW9uKGxhKXtyZXR1cm4hIWxhLnR5cGVQYXJhbWV0ZXJzJiZsYS50eXBlUGFyYW1ldGVycy5sZW5ndGg+PWhyfSl9ZS5nZXRQb3NzaWJsZUdlbmVyaWNTaWduYXR1cmVzPUdpO2Z1bmN0aW9uIFd0KFNlLGhyKXtpZihoci50ZXh0Lmxhc3RJbmRleE9mKFwiPFwiLFNlP1NlLnBvczpoci50ZXh0Lmxlbmd0aCkhPT0tMSlmb3IodmFyIE9yPVNlLGtpPTAsZHQ9MDtPcjspe3N3aXRjaChPci5raW5kKXtjYXNlIDI5OmlmKE9yPUlyKE9yLmdldEZ1bGxTdGFydCgpLGhyKSxPciYmT3Iua2luZD09PTI4JiYoT3I9SXIoT3IuZ2V0RnVsbFN0YXJ0KCksaHIpKSwhT3J8fCFlLmlzSWRlbnRpZmllcihPcikpcmV0dXJuO2lmKCFraSlyZXR1cm4gZS5pc0RlY2xhcmF0aW9uTmFtZShPcik/dm9pZCAwOntjYWxsZWQ6T3IsblR5cGVBcmd1bWVudHM6ZHR9O2tpLS07YnJlYWs7Y2FzZSA0OTpraT0zO2JyZWFrO2Nhc2UgNDg6a2k9MjticmVhaztjYXNlIDMxOmtpKys7YnJlYWs7Y2FzZSAxOTppZihPcj13aShPciwxOCxociksIU9yKXJldHVybjticmVhaztjYXNlIDIxOmlmKE9yPXdpKE9yLDIwLGhyKSwhT3IpcmV0dXJuO2JyZWFrO2Nhc2UgMjM6aWYoT3I9d2koT3IsMjIsaHIpLCFPcilyZXR1cm47YnJlYWs7Y2FzZSAyNzpkdCsrO2JyZWFrO2Nhc2UgMzg6Y2FzZSA3OTpjYXNlIDEwOmNhc2UgODpjYXNlIDk6Y2FzZSAxMTA6Y2FzZSA5NTpjYXNlIDExMjpjYXNlIDk0OmNhc2UgMTQwOmNhc2UgMjQ6Y2FzZSA1MTpjYXNlIDU3OmNhc2UgNTg6YnJlYWs7ZGVmYXVsdDppZihlLmlzVHlwZU5vZGUoT3IpKWJyZWFrO3JldHVybn1Pcj1JcihPci5nZXRGdWxsU3RhcnQoKSxocil9fWUuZ2V0UG9zc2libGVUeXBlQXJndW1lbnRzSW5mbz1XdDtmdW5jdGlvbiBadChTZSxocixPcil7cmV0dXJuIGUuZm9ybWF0dGluZy5nZXRSYW5nZU9mRW5jbG9zaW5nQ29tbWVudChTZSxocix2b2lkIDAsT3IpfWUuaXNJbkNvbW1lbnQ9WnQ7ZnVuY3Rpb24gX3IoU2UsaHIpe3ZhciBPcj1scihTZSxocik7cmV0dXJuISFlLmZpbmRBbmNlc3RvcihPcixlLmlzSlNEb2MpfWUuaGFzRG9jQ29tbWVudD1fcjtmdW5jdGlvbiBwaShTZSxocil7cmV0dXJuIFNlLmtpbmQ9PT0xPyEhU2UuanNEb2M6U2UuZ2V0V2lkdGgoaHIpIT09MH1mdW5jdGlvbiBhZShTZSxocil7aHI9PT12b2lkIDAmJihocj0wKTt2YXIgT3I9W10sa2k9ZS5pc0RlY2xhcmF0aW9uKFNlKT9lLmdldENvbWJpbmVkTm9kZUZsYWdzQWx3YXlzSW5jbHVkZUpTRG9jKFNlKSZ+aHI6MDtyZXR1cm4ga2kmOCYmT3IucHVzaChcInByaXZhdGVcIiksa2kmMTYmJk9yLnB1c2goXCJwcm90ZWN0ZWRcIiksa2kmNCYmT3IucHVzaChcInB1YmxpY1wiKSwoa2kmMzJ8fGUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oU2UpKSYmT3IucHVzaChcInN0YXRpY1wiKSxraSYxMjgmJk9yLnB1c2goXCJhYnN0cmFjdFwiKSxraSYxJiZPci5wdXNoKFwiZXhwb3J0XCIpLGtpJjgxOTImJk9yLnB1c2goXCJkZXByZWNhdGVkXCIpLFNlLmZsYWdzJjE2Nzc3MjE2JiZPci5wdXNoKFwiZGVjbGFyZVwiKSxTZS5raW5kPT09MjcxJiZPci5wdXNoKFwiZXhwb3J0XCIpLE9yLmxlbmd0aD4wP09yLmpvaW4oXCIsXCIpOlwiXCJ9ZS5nZXROb2RlTW9kaWZpZXJzPWFlO2Z1bmN0aW9uIFhlKFNlKXtpZihTZS5raW5kPT09MTc4fHxTZS5raW5kPT09MjA4KXJldHVybiBTZS50eXBlQXJndW1lbnRzO2lmKGUuaXNGdW5jdGlvbkxpa2UoU2UpfHxTZS5raW5kPT09MjU3fHxTZS5raW5kPT09MjU4KXJldHVybiBTZS50eXBlUGFyYW1ldGVyc31lLmdldFR5cGVBcmd1bWVudE9yVHlwZVBhcmFtZXRlckxpc3Q9WGU7ZnVuY3Rpb24gSnIoU2Upe3JldHVybiBTZT09PTJ8fFNlPT09M31lLmlzQ29tbWVudD1KcjtmdW5jdGlvbiB0aShTZSl7cmV0dXJuISEoU2U9PT0xMHx8U2U9PT0xM3x8ZS5pc1RlbXBsYXRlTGl0ZXJhbEtpbmQoU2UpKX1lLmlzU3RyaW5nT3JSZWd1bGFyRXhwcmVzc2lvbk9yVGVtcGxhdGVMaXRlcmFsPXRpO2Z1bmN0aW9uIFplKFNlKXtyZXR1cm4gMTg8PVNlJiZTZTw9Nzh9ZS5pc1B1bmN0dWF0aW9uPVplO2Z1bmN0aW9uIFNyKFNlLGhyLE9yKXtyZXR1cm4gZS5pc1RlbXBsYXRlTGl0ZXJhbEtpbmQoU2Uua2luZCkmJlNlLmdldFN0YXJ0KE9yKTxociYmaHI8U2UuZW5kfHwhIVNlLmlzVW50ZXJtaW5hdGVkJiZocj09PVNlLmVuZH1lLmlzSW5zaWRlVGVtcGxhdGVMaXRlcmFsPVNyO2Z1bmN0aW9uIHpyKFNlKXtzd2l0Y2goU2Upe2Nhc2UgMTIzOmNhc2UgMTIxOmNhc2UgMTIyOnJldHVybiEwfXJldHVybiExfWUuaXNBY2Nlc3NpYmlsaXR5TW9kaWZpZXI9enI7ZnVuY3Rpb24gV3IoU2Upe3ZhciBocj1lLmNsb25lKFNlKTtyZXR1cm4gZS5zZXRDb25maWdGaWxlSW5PcHRpb25zKGhyLFNlJiZTZS5jb25maWdGaWxlKSxocn1lLmNsb25lQ29tcGlsZXJPcHRpb25zPVdyO2Z1bmN0aW9uIEplKFNlKXtyZXR1cm4hISgoU2Uua2luZD09PTIwNHx8U2Uua2luZD09PTIwNSkmJihTZS5wYXJlbnQua2luZD09PTIyMSYmU2UucGFyZW50LmxlZnQ9PT1TZSYmU2UucGFyZW50Lm9wZXJhdG9yVG9rZW4ua2luZD09PTYzfHxTZS5wYXJlbnQua2luZD09PTI0NCYmU2UucGFyZW50LmluaXRpYWxpemVyPT09U2V8fEplKFNlLnBhcmVudC5raW5kPT09Mjk2P1NlLnBhcmVudC5wYXJlbnQ6U2UucGFyZW50KSkpfWUuaXNBcnJheUxpdGVyYWxPck9iamVjdExpdGVyYWxEZXN0cnVjdHVyaW5nUGF0dGVybj1KZTtmdW5jdGlvbiB4ZShTZSxocil7cmV0dXJuIG1yKFNlLGhyLCEwKX1lLmlzSW5SZWZlcmVuY2VDb21tZW50PXhlO2Z1bmN0aW9uIHZyKFNlLGhyKXtyZXR1cm4gbXIoU2UsaHIsITEpfWUuaXNJbk5vblJlZmVyZW5jZUNvbW1lbnQ9dnI7ZnVuY3Rpb24gbXIoU2UsaHIsT3Ipe3ZhciBraT1adChTZSxocix2b2lkIDApO3JldHVybiEha2kmJk9yPT09ai50ZXN0KFNlLnRleHQuc3Vic3RyaW5nKGtpLnBvcyxraS5lbmQpKX1mdW5jdGlvbiBBcihTZSl7aWYoISFTZSlzd2l0Y2goU2Uua2luZCl7Y2FzZSAxMDpjYXNlIDE0OnJldHVybiBucihTZSk7ZGVmYXVsdDpyZXR1cm4gT2UoU2UpfX1lLmdldFJlcGxhY2VtZW50U3BhbkZvckNvbnRleHRUb2tlbj1BcjtmdW5jdGlvbiBPZShTZSxocixPcil7cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKFNlLmdldFN0YXJ0KGhyKSwoT3J8fFNlKS5nZXRFbmQoKSl9ZS5jcmVhdGVUZXh0U3BhbkZyb21Ob2RlPU9lO2Z1bmN0aW9uIG5yKFNlKXtpZighU2UuaXNVbnRlcm1pbmF0ZWQpcmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKFNlLmdldFN0YXJ0KCkrMSxTZS5nZXRFbmQoKS0xKX1lLmNyZWF0ZVRleHRTcGFuRnJvbVN0cmluZ0xpdGVyYWxMaWtlQ29udGVudD1ucjtmdW5jdGlvbiBNcihTZSxocil7cmV0dXJuIGUuY3JlYXRlUmFuZ2UoU2UuZ2V0U3RhcnQoaHIpLFNlLmVuZCl9ZS5jcmVhdGVUZXh0UmFuZ2VGcm9tTm9kZT1NcjtmdW5jdGlvbiBQZShTZSl7cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKFNlLnBvcyxTZS5lbmQpfWUuY3JlYXRlVGV4dFNwYW5Gcm9tUmFuZ2U9UGU7ZnVuY3Rpb24gVWUoU2Upe3JldHVybiBlLmNyZWF0ZVJhbmdlKFNlLnN0YXJ0LFNlLnN0YXJ0K1NlLmxlbmd0aCl9ZS5jcmVhdGVUZXh0UmFuZ2VGcm9tU3Bhbj1VZTtmdW5jdGlvbiBmcihTZSxocixPcil7cmV0dXJuIERlKGUuY3JlYXRlVGV4dFNwYW4oU2UsaHIpLE9yKX1lLmNyZWF0ZVRleHRDaGFuZ2VGcm9tU3RhcnRMZW5ndGg9ZnI7ZnVuY3Rpb24gRGUoU2UsaHIpe3JldHVybntzcGFuOlNlLG5ld1RleHQ6aHJ9fWUuY3JlYXRlVGV4dENoYW5nZT1EZSxlLnR5cGVLZXl3b3Jkcz1bMTMwLDEyOCwxNTgsMTMzLDk1LDEzNywxNDAsMTQzLDEwNCwxNDcsMTQ4LDE0NSwxNTAsMTUxLDExMCwxMTQsMTUzLDE1NCwxNTVdO2Z1bmN0aW9uIGdyKFNlKXtyZXR1cm4gZS5jb250YWlucyhlLnR5cGVLZXl3b3JkcyxTZSl9ZS5pc1R5cGVLZXl3b3JkPWdyO2Z1bmN0aW9uIFZyKFNlKXtyZXR1cm4gU2Uua2luZD09PTE1Mn1lLmlzVHlwZUtleXdvcmRUb2tlbj1WcjtmdW5jdGlvbiBUcihTZSl7cmV0dXJuIFZyKFNlKXx8ZS5pc0lkZW50aWZpZXIoU2UpJiZTZS50ZXh0PT09XCJ0eXBlXCJ9ZS5pc1R5cGVLZXl3b3JkVG9rZW5PcklkZW50aWZpZXI9VHI7ZnVuY3Rpb24gdmkoU2Upe3JldHVybiEhKFNlLmZsYWdzJjE1MzYpJiZTZS5uYW1lLmNoYXJDb2RlQXQoMCk9PT0zNH1lLmlzRXh0ZXJuYWxNb2R1bGVTeW1ib2w9dmk7ZnVuY3Rpb24gVWkoKXt2YXIgU2U9W107cmV0dXJuIGZ1bmN0aW9uKGhyKXt2YXIgT3I9ZS5nZXROb2RlSWQoaHIpO3JldHVybiFTZVtPcl0mJihTZVtPcl09ITApfX1lLm5vZGVTZWVuVHJhY2tlcj1VaTtmdW5jdGlvbiBZaShTZSl7cmV0dXJuIFNlLmdldFRleHQoMCxTZS5nZXRMZW5ndGgoKSl9ZS5nZXRTbmFwc2hvdFRleHQ9WWk7ZnVuY3Rpb24gV2koU2UsaHIpe2Zvcih2YXIgT3I9XCJcIixraT0wO2tpPGhyO2tpKyspT3IrPVNlO3JldHVybiBPcn1lLnJlcGVhdFN0cmluZz1XaTtmdW5jdGlvbiBjdChTZSl7cmV0dXJuIFNlLmlzVHlwZVBhcmFtZXRlcigpJiZTZS5nZXRDb25zdHJhaW50KCl8fFNlfWUuc2tpcENvbnN0cmFpbnQ9Y3Q7ZnVuY3Rpb24gTGkoU2Upe3JldHVybiBTZS5raW5kPT09MTYyP2UuaXNTdHJpbmdPck51bWVyaWNMaXRlcmFsTGlrZShTZS5leHByZXNzaW9uKT9TZS5leHByZXNzaW9uLnRleHQ6dm9pZCAwOmUuaXNQcml2YXRlSWRlbnRpZmllcihTZSk/ZS5pZFRleHQoU2UpOmUuZ2V0VGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChTZSl9ZS5nZXROYW1lRnJvbVByb3BlcnR5TmFtZT1MaTtmdW5jdGlvbiBudChTZSl7cmV0dXJuIFNlLmdldFNvdXJjZUZpbGVzKCkuc29tZShmdW5jdGlvbihocil7cmV0dXJuIWhyLmlzRGVjbGFyYXRpb25GaWxlJiYhU2UuaXNTb3VyY2VGaWxlRnJvbUV4dGVybmFsTGlicmFyeShocikmJiEhKGhyLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yfHxoci5jb21tb25Kc01vZHVsZUluZGljYXRvcil9KX1lLnByb2dyYW1Db250YWluc01vZHVsZXM9bnQ7ZnVuY3Rpb24gTXQoU2Upe3JldHVybiBTZS5nZXRTb3VyY2VGaWxlcygpLnNvbWUoZnVuY3Rpb24oaHIpe3JldHVybiFoci5pc0RlY2xhcmF0aW9uRmlsZSYmIVNlLmlzU291cmNlRmlsZUZyb21FeHRlcm5hbExpYnJhcnkoaHIpJiYhIWhyLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yfSl9ZS5wcm9ncmFtQ29udGFpbnNFc01vZHVsZXM9TXQ7ZnVuY3Rpb24geHQoU2Upe3JldHVybiEhU2UubW9kdWxlfHxlLmdldEVtaXRTY3JpcHRUYXJnZXQoU2UpPj0yfHwhIVNlLm5vRW1pdH1lLmNvbXBpbGVyT3B0aW9uc0luZGljYXRlRXNNb2R1bGVzPXh0O2Z1bmN0aW9uIHV0KFNlLGhyKXtyZXR1cm57ZmlsZUV4aXN0czpmdW5jdGlvbihPcil7cmV0dXJuIFNlLmZpbGVFeGlzdHMoT3IpfSxnZXRDdXJyZW50RGlyZWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGhyLmdldEN1cnJlbnREaXJlY3RvcnkoKX0scmVhZEZpbGU6ZS5tYXliZUJpbmQoaHIsaHIucmVhZEZpbGUpLHVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6ZS5tYXliZUJpbmQoaHIsaHIudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyksZ2V0U3ltbGlua0NhY2hlOmUubWF5YmVCaW5kKGhyLGhyLmdldFN5bWxpbmtDYWNoZSl8fFNlLmdldFN5bWxpbmtDYWNoZSxnZXRNb2R1bGVTcGVjaWZpZXJDYWNoZTplLm1heWJlQmluZChocixoci5nZXRNb2R1bGVTcGVjaWZpZXJDYWNoZSksZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGU6ZnVuY3Rpb24oKXt2YXIgT3I7cmV0dXJuKE9yPVNlLmdldE1vZHVsZVJlc29sdXRpb25DYWNoZSgpKT09PW51bGx8fE9yPT09dm9pZCAwP3ZvaWQgMDpPci5nZXRQYWNrYWdlSnNvbkluZm9DYWNoZSgpfSxnZXRHbG9iYWxUeXBpbmdzQ2FjaGVMb2NhdGlvbjplLm1heWJlQmluZChocixoci5nZXRHbG9iYWxUeXBpbmdzQ2FjaGVMb2NhdGlvbikscmVkaXJlY3RUYXJnZXRzTWFwOlNlLnJlZGlyZWN0VGFyZ2V0c01hcCxnZXRQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q6ZnVuY3Rpb24oT3Ipe3JldHVybiBTZS5nZXRQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QoT3IpfSxpc1NvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0OmZ1bmN0aW9uKE9yKXtyZXR1cm4gU2UuaXNTb3VyY2VPZlByb2plY3RSZWZlcmVuY2VSZWRpcmVjdChPcil9LGdldE5lYXJlc3RBbmNlc3RvckRpcmVjdG9yeVdpdGhQYWNrYWdlSnNvbjplLm1heWJlQmluZChocixoci5nZXROZWFyZXN0QW5jZXN0b3JEaXJlY3RvcnlXaXRoUGFja2FnZUpzb24pLGdldEZpbGVJbmNsdWRlUmVhc29uczpmdW5jdGlvbigpe3JldHVybiBTZS5nZXRGaWxlSW5jbHVkZVJlYXNvbnMoKX19fWUuY3JlYXRlTW9kdWxlU3BlY2lmaWVyUmVzb2x1dGlvbkhvc3Q9dXQ7ZnVuY3Rpb24gRHQoU2UsaHIpe3JldHVybiBLZShLZSh7fSx1dChTZSxocikpLHtnZXRDb21tb25Tb3VyY2VEaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gU2UuZ2V0Q29tbW9uU291cmNlRGlyZWN0b3J5KCl9fSl9ZS5nZXRNb2R1bGVTcGVjaWZpZXJSZXNvbHZlckhvc3Q9RHQ7ZnVuY3Rpb24gUnQoU2Upe3JldHVybiBTZT49ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTYmJlNlPD1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVOZXh0fWUubW9kdWxlUmVzb2x1dGlvblJlc3BlY3RzRXhwb3J0cz1SdDtmdW5jdGlvbiBJaShTZSl7cmV0dXJuIFNlPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlSnN8fFNlPj1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNiYmU2U8PWUuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZU5leHR9ZS5tb2R1bGVSZXNvbHV0aW9uVXNlc05vZGVNb2R1bGVzPUlpO2Z1bmN0aW9uIEtpKFNlLGhyLE9yLGtpKXtyZXR1cm4gU2V8fGhyJiZoci5sZW5ndGg/RmkoU2UsaHIsT3Isa2kpOnZvaWQgMH1lLm1ha2VJbXBvcnRJZk5lY2Vzc2FyeT1LaTtmdW5jdGlvbiBGaShTZSxocixPcixraSxkdCl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLFNlfHxocj9lLmZhY3RvcnkuY3JlYXRlSW1wb3J0Q2xhdXNlKCEhZHQsU2UsaHImJmhyLmxlbmd0aD9lLmZhY3RvcnkuY3JlYXRlTmFtZWRJbXBvcnRzKGhyKTp2b2lkIDApOnZvaWQgMCx0eXBlb2YgT3I9PVwic3RyaW5nXCI/dWkoT3Isa2kpOk9yLHZvaWQgMCl9ZS5tYWtlSW1wb3J0PUZpO2Z1bmN0aW9uIHVpKFNlLGhyKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoU2UsaHI9PT0wKX1lLm1ha2VTdHJpbmdMaXRlcmFsPXVpO3ZhciBCdDsoZnVuY3Rpb24oU2Upe1NlW1NlLlNpbmdsZT0wXT1cIlNpbmdsZVwiLFNlW1NlLkRvdWJsZT0xXT1cIkRvdWJsZVwifSkoQnQ9ZS5RdW90ZVByZWZlcmVuY2V8fChlLlF1b3RlUHJlZmVyZW5jZT17fSkpO2Z1bmN0aW9uIHd0KFNlLGhyKXtyZXR1cm4gZS5pc1N0cmluZ0RvdWJsZVF1b3RlZChTZSxocik/MTowfWUucXVvdGVQcmVmZXJlbmNlRnJvbVN0cmluZz13dDtmdW5jdGlvbiBuYShTZSxocil7aWYoaHIucXVvdGVQcmVmZXJlbmNlJiZoci5xdW90ZVByZWZlcmVuY2UhPT1cImF1dG9cIilyZXR1cm4gaHIucXVvdGVQcmVmZXJlbmNlPT09XCJzaW5nbGVcIj8wOjE7dmFyIE9yPVNlLmltcG9ydHMmJmUuZmluZChTZS5pbXBvcnRzLGZ1bmN0aW9uKGtpKXtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWwoa2kpJiYhZS5ub2RlSXNTeW50aGVzaXplZChraS5wYXJlbnQpfSk7cmV0dXJuIE9yP3d0KE9yLFNlKToxfWUuZ2V0UXVvdGVQcmVmZXJlbmNlPW5hO2Z1bmN0aW9uIEFpKFNlKXtzd2l0Y2goU2Upe2Nhc2UgMDpyZXR1cm5cIidcIjtjYXNlIDE6cmV0dXJuJ1wiJztkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKFNlKX19ZS5nZXRRdW90ZUZyb21QcmVmZXJlbmNlPUFpO2Z1bmN0aW9uIE9pKFNlKXt2YXIgaHI9amkoU2UpO3JldHVybiBocj09PXZvaWQgMD92b2lkIDA6ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyhocil9ZS5zeW1ib2xOYW1lTm9EZWZhdWx0PU9pO2Z1bmN0aW9uIGppKFNlKXtyZXR1cm4gU2UuZXNjYXBlZE5hbWUhPT1cImRlZmF1bHRcIj9TZS5lc2NhcGVkTmFtZTplLmZpcnN0RGVmaW5lZChTZS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oaHIpe3ZhciBPcj1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKGhyKTtyZXR1cm4gT3ImJk9yLmtpbmQ9PT03OT9Pci5lc2NhcGVkVGV4dDp2b2lkIDB9KX1lLnN5bWJvbEVzY2FwZWROYW1lTm9EZWZhdWx0PWppO2Z1bmN0aW9uIFZpKFNlKXtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWxMaWtlKFNlKSYmKGUuaXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZShTZS5wYXJlbnQpfHxlLmlzSW1wb3J0RGVjbGFyYXRpb24oU2UucGFyZW50KXx8ZS5pc1JlcXVpcmVDYWxsKFNlLnBhcmVudCwhMSkmJlNlLnBhcmVudC5hcmd1bWVudHNbMF09PT1TZXx8ZS5pc0ltcG9ydENhbGwoU2UucGFyZW50KSYmU2UucGFyZW50LmFyZ3VtZW50c1swXT09PVNlKX1lLmlzTW9kdWxlU3BlY2lmaWVyTGlrZT1WaTtmdW5jdGlvbiBhdChTZSl7cmV0dXJuIGUuaXNCaW5kaW5nRWxlbWVudChTZSkmJmUuaXNPYmplY3RCaW5kaW5nUGF0dGVybihTZS5wYXJlbnQpJiZlLmlzSWRlbnRpZmllcihTZS5uYW1lKSYmIVNlLnByb3BlcnR5TmFtZX1lLmlzT2JqZWN0QmluZGluZ0VsZW1lbnRXaXRob3V0UHJvcGVydHlOYW1lPWF0O2Z1bmN0aW9uIEF0KFNlLGhyKXt2YXIgT3I9U2UuZ2V0VHlwZUF0TG9jYXRpb24oaHIucGFyZW50KTtyZXR1cm4gT3ImJlNlLmdldFByb3BlcnR5T2ZUeXBlKE9yLGhyLm5hbWUudGV4dCl9ZS5nZXRQcm9wZXJ0eVN5bWJvbEZyb21CaW5kaW5nRWxlbWVudD1BdDtmdW5jdGlvbiBiYShTZSxocixPcil7aWYoISFTZSlmb3IoO1NlLnBhcmVudDspe2lmKGUuaXNTb3VyY2VGaWxlKFNlLnBhcmVudCl8fCEkYShPcixTZS5wYXJlbnQsaHIpKXJldHVybiBTZTtTZT1TZS5wYXJlbnR9fWUuZ2V0UGFyZW50Tm9kZUluU3Bhbj1iYTtmdW5jdGlvbiAkYShTZSxocixPcil7cmV0dXJuIGUudGV4dFNwYW5Db250YWluc1Bvc2l0aW9uKFNlLGhyLmdldFN0YXJ0KE9yKSkmJmhyLmdldEVuZCgpPD1lLnRleHRTcGFuRW5kKFNlKX1mdW5jdGlvbiBRYShTZSxocil7cmV0dXJuIFNlLm1vZGlmaWVycyYmZS5maW5kKFNlLm1vZGlmaWVycyxmdW5jdGlvbihPcil7cmV0dXJuIE9yLmtpbmQ9PT1ocn0pfWUuZmluZE1vZGlmaWVyPVFhO2Z1bmN0aW9uIGFpKFNlLGhyLE9yLGtpKXt2YXIgZHQ9ZS5pc0FycmF5KE9yKT9PclswXTpPcixsYT1kdC5raW5kPT09MjM3P2UuaXNSZXF1aXJlVmFyaWFibGVTdGF0ZW1lbnQ6ZS5pc0FueUltcG9ydFN5bnRheCx3YT1lLmZpbHRlcihoci5zdGF0ZW1lbnRzLGxhKSxPbj1lLmlzQXJyYXkoT3IpP2Uuc3RhYmxlU29ydChPcixlLk9yZ2FuaXplSW1wb3J0cy5jb21wYXJlSW1wb3J0c09yUmVxdWlyZVN0YXRlbWVudHMpOltPcl07aWYoIXdhLmxlbmd0aClTZS5pbnNlcnROb2Rlc0F0VG9wT2ZGaWxlKGhyLE9uLGtpKTtlbHNlIGlmKHdhJiZlLk9yZ2FuaXplSW1wb3J0cy5pbXBvcnRzQXJlU29ydGVkKHdhKSlmb3IodmFyIE5vPTAsam89T247Tm88am8ubGVuZ3RoO05vKyspe3ZhciBwbz1qb1tOb10sR249ZS5Pcmdhbml6ZUltcG9ydHMuZ2V0SW1wb3J0RGVjbGFyYXRpb25JbnNlcnRpb25JbmRleCh3YSxwbyk7aWYoR249PT0wKXt2YXIgJG49d2FbMF09PT1oci5zdGF0ZW1lbnRzWzBdP3tsZWFkaW5nVHJpdmlhT3B0aW9uOmUudGV4dENoYW5nZXMuTGVhZGluZ1RyaXZpYU9wdGlvbi5FeGNsdWRlfTp7fTtTZS5pbnNlcnROb2RlQmVmb3JlKGhyLHdhWzBdLHBvLCExLCRuKX1lbHNle3ZhciBIbz13YVtHbi0xXTtTZS5pbnNlcnROb2RlQWZ0ZXIoaHIsSG8scG8pfX1lbHNle3ZhciBabz1lLmxhc3RPclVuZGVmaW5lZCh3YSk7Wm8/U2UuaW5zZXJ0Tm9kZXNBZnRlcihocixabyxPbik6U2UuaW5zZXJ0Tm9kZXNBdFRvcE9mRmlsZShocixPbixraSl9fWUuaW5zZXJ0SW1wb3J0cz1haTtmdW5jdGlvbiBEbihTZSxocil7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KFNlLmlzVHlwZU9ubHkpLGUuY2FzdChTZS5nZXRDaGlsZEF0KDAsaHIpLFZyKX1lLmdldFR5cGVLZXl3b3JkT2ZUeXBlT25seUltcG9ydD1EbjtmdW5jdGlvbiBrYShTZSxocil7cmV0dXJuISFTZSYmISFociYmU2Uuc3RhcnQ9PT1oci5zdGFydCYmU2UubGVuZ3RoPT09aHIubGVuZ3RofWUudGV4dFNwYW5zRXF1YWw9a2E7ZnVuY3Rpb24gQmEoU2UsaHIpe3JldHVybiBTZS5maWxlTmFtZT09PWhyLmZpbGVOYW1lJiZrYShTZS50ZXh0U3Bhbixoci50ZXh0U3Bhbil9ZS5kb2N1bWVudFNwYW5zRXF1YWw9QmE7ZnVuY3Rpb24gcG4oU2UsaHIpe2lmKFNlKXtmb3IodmFyIE9yPTA7T3I8U2UubGVuZ3RoO09yKyspaWYoU2UuaW5kZXhPZihTZVtPcl0pPT09T3Ipe3ZhciBraT1ocihTZVtPcl0sT3IpO2lmKGtpKXJldHVybiBraX19fWUuZm9yRWFjaFVuaXF1ZT1wbjtmdW5jdGlvbiBDbihTZSxocixPcil7Zm9yKHZhciBraT1ocjtraTxPcjtraSsrKWlmKCFlLmlzV2hpdGVTcGFjZUxpa2UoU2UuY2hhckNvZGVBdChraSkpKXJldHVybiExO3JldHVybiEwfWUuaXNUZXh0V2hpdGVTcGFjZUxpa2U9Q247ZnVuY3Rpb24gQmkoU2Upe3ZhciBocj1TZS5kZWNsYXJhdGlvbnM/ZS5maXJzdE9yVW5kZWZpbmVkKFNlLmRlY2xhcmF0aW9ucyk6dm9pZCAwO3JldHVybiEhZS5maW5kQW5jZXN0b3IoaHIsZnVuY3Rpb24oT3Ipe3JldHVybiBlLmlzUGFyYW1ldGVyKE9yKT8hMDplLmlzQmluZGluZ0VsZW1lbnQoT3IpfHxlLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4oT3IpfHxlLmlzQXJyYXlCaW5kaW5nUGF0dGVybihPcik/ITE6XCJxdWl0XCJ9KX1lLmlzRmlyc3REZWNsYXJhdGlvbk9mU3ltYm9sUGFyYW1ldGVyPUJpO3ZhciBrbj14bigpO2Z1bmN0aW9uIHhuKCl7dmFyIFNlPWUuZGVmYXVsdE1heGltdW1UcnVuY2F0aW9uTGVuZ3RoKjEwLGhyLE9yLGtpLGR0O3BvKCk7dmFyIGxhPWZ1bmN0aW9uKEduKXtyZXR1cm4gT24oR24sZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQudGV4dCl9O3JldHVybntkaXNwbGF5UGFydHM6ZnVuY3Rpb24oKXt2YXIgR249aHIubGVuZ3RoJiZocltoci5sZW5ndGgtMV0udGV4dDtyZXR1cm4gZHQ+U2UmJkduJiZHbiE9PVwiLi4uXCImJihlLmlzV2hpdGVTcGFjZUxpa2UoR24uY2hhckNvZGVBdChHbi5sZW5ndGgtMSkpfHxoci5wdXNoKFBuKFwiIFwiLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnNwYWNlKSksaHIucHVzaChQbihcIi4uLlwiLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnB1bmN0dWF0aW9uKSkpLGhyfSx3cml0ZUtleXdvcmQ6ZnVuY3Rpb24oR24pe3JldHVybiBPbihHbixlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5rZXl3b3JkKX0sd3JpdGVPcGVyYXRvcjpmdW5jdGlvbihHbil7cmV0dXJuIE9uKEduLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLm9wZXJhdG9yKX0sd3JpdGVQdW5jdHVhdGlvbjpmdW5jdGlvbihHbil7cmV0dXJuIE9uKEduLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnB1bmN0dWF0aW9uKX0sd3JpdGVUcmFpbGluZ1NlbWljb2xvbjpmdW5jdGlvbihHbil7cmV0dXJuIE9uKEduLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnB1bmN0dWF0aW9uKX0sd3JpdGVTcGFjZTpmdW5jdGlvbihHbil7cmV0dXJuIE9uKEduLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnNwYWNlKX0sd3JpdGVTdHJpbmdMaXRlcmFsOmZ1bmN0aW9uKEduKXtyZXR1cm4gT24oR24sZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuc3RyaW5nTGl0ZXJhbCl9LHdyaXRlUGFyYW1ldGVyOmZ1bmN0aW9uKEduKXtyZXR1cm4gT24oR24sZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQucGFyYW1ldGVyTmFtZSl9LHdyaXRlUHJvcGVydHk6ZnVuY3Rpb24oR24pe3JldHVybiBPbihHbixlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5wcm9wZXJ0eU5hbWUpfSx3cml0ZUxpdGVyYWw6ZnVuY3Rpb24oR24pe3JldHVybiBPbihHbixlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5zdHJpbmdMaXRlcmFsKX0sd3JpdGVTeW1ib2w6Tm8sd3JpdGVMaW5lOmpvLHdyaXRlOmxhLHdyaXRlQ29tbWVudDpsYSxnZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuXCJcIn0sZ2V0VGV4dFBvczpmdW5jdGlvbigpe3JldHVybiAwfSxnZXRDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0TGluZTpmdW5jdGlvbigpe3JldHVybiAwfSxpc0F0U3RhcnRPZkxpbmU6ZnVuY3Rpb24oKXtyZXR1cm4hMX0saGFzVHJhaWxpbmdXaGl0ZXNwYWNlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGhhc1RyYWlsaW5nQ29tbWVudDpmdW5jdGlvbigpe3JldHVybiExfSxyYXdXcml0ZTplLm5vdEltcGxlbWVudGVkLGdldEluZGVudDpmdW5jdGlvbigpe3JldHVybiBraX0saW5jcmVhc2VJbmRlbnQ6ZnVuY3Rpb24oKXtraSsrfSxkZWNyZWFzZUluZGVudDpmdW5jdGlvbigpe2tpLS19LGNsZWFyOnBvLHRyYWNrU3ltYm9sOmZ1bmN0aW9uKCl7cmV0dXJuITF9LHJlcG9ydEluYWNjZXNzaWJsZVRoaXNFcnJvcjplLm5vb3AscmVwb3J0SW5hY2Nlc3NpYmxlVW5pcXVlU3ltYm9sRXJyb3I6ZS5ub29wLHJlcG9ydFByaXZhdGVJbkJhc2VPZkNsYXNzRXhwcmVzc2lvbjplLm5vb3B9O2Z1bmN0aW9uIHdhKCl7aWYoIShkdD5TZSkmJk9yKXt2YXIgR249ZS5nZXRJbmRlbnRTdHJpbmcoa2kpO0duJiYoZHQrPUduLmxlbmd0aCxoci5wdXNoKFBuKEduLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnNwYWNlKSkpLE9yPSExfX1mdW5jdGlvbiBPbihHbiwkbil7ZHQ+U2V8fCh3YSgpLGR0Kz1Hbi5sZW5ndGgsaHIucHVzaChQbihHbiwkbikpKX1mdW5jdGlvbiBObyhHbiwkbil7ZHQ+U2V8fCh3YSgpLGR0Kz1Hbi5sZW5ndGgsaHIucHVzaChLbihHbiwkbikpKX1mdW5jdGlvbiBqbygpe2R0PlNlfHwoZHQrPTEsaHIucHVzaChKbigpKSxPcj0hMCl9ZnVuY3Rpb24gcG8oKXtocj1bXSxPcj0hMCxraT0wLGR0PTB9fWZ1bmN0aW9uIEtuKFNlLGhyKXtyZXR1cm4gUG4oU2UsT3IoaHIpKTtmdW5jdGlvbiBPcihraSl7dmFyIGR0PWtpLmZsYWdzO3JldHVybiBkdCYzP0JpKGtpKT9lLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5wYXJhbWV0ZXJOYW1lOmUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLmxvY2FsTmFtZTpkdCY0fHxkdCYzMjc2OHx8ZHQmNjU1MzY/ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQucHJvcGVydHlOYW1lOmR0Jjg/ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuZW51bU1lbWJlck5hbWU6ZHQmMTY/ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuZnVuY3Rpb25OYW1lOmR0JjMyP2UuU3ltYm9sRGlzcGxheVBhcnRLaW5kLmNsYXNzTmFtZTpkdCY2ND9lLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5pbnRlcmZhY2VOYW1lOmR0JjM4ND9lLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5lbnVtTmFtZTpkdCYxNTM2P2UuU3ltYm9sRGlzcGxheVBhcnRLaW5kLm1vZHVsZU5hbWU6ZHQmODE5Mj9lLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5tZXRob2ROYW1lOmR0JjI2MjE0ND9lLlN5bWJvbERpc3BsYXlQYXJ0S2luZC50eXBlUGFyYW1ldGVyTmFtZTpkdCY1MjQyODh8fGR0JjIwOTcxNTI/ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuYWxpYXNOYW1lOmUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnRleHR9fWUuc3ltYm9sUGFydD1LbjtmdW5jdGlvbiBQbihTZSxocil7cmV0dXJue3RleHQ6U2Usa2luZDplLlN5bWJvbERpc3BsYXlQYXJ0S2luZFtocl19fWUuZGlzcGxheVBhcnQ9UG47ZnVuY3Rpb24gZW8oKXtyZXR1cm4gUG4oXCIgXCIsZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuc3BhY2UpfWUuc3BhY2VQYXJ0PWVvO2Z1bmN0aW9uIFJuKFNlKXtyZXR1cm4gUG4oZS50b2tlblRvU3RyaW5nKFNlKSxlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5rZXl3b3JkKX1lLmtleXdvcmRQYXJ0PVJuO2Z1bmN0aW9uIERhKFNlKXtyZXR1cm4gUG4oZS50b2tlblRvU3RyaW5nKFNlKSxlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5wdW5jdHVhdGlvbil9ZS5wdW5jdHVhdGlvblBhcnQ9RGE7ZnVuY3Rpb24gYm8oU2Upe3JldHVybiBQbihlLnRva2VuVG9TdHJpbmcoU2UpLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLm9wZXJhdG9yKX1lLm9wZXJhdG9yUGFydD1ibztmdW5jdGlvbiBSbyhTZSl7cmV0dXJuIFBuKFNlLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnBhcmFtZXRlck5hbWUpfWUucGFyYW1ldGVyTmFtZVBhcnQ9Um87ZnVuY3Rpb24gRW4oU2Upe3JldHVybiBQbihTZSxlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5wcm9wZXJ0eU5hbWUpfWUucHJvcGVydHlOYW1lUGFydD1FbjtmdW5jdGlvbiBXbihTZSl7dmFyIGhyPWUuc3RyaW5nVG9Ub2tlbihTZSk7cmV0dXJuIGhyPT09dm9pZCAwP3RvKFNlKTpSbihocil9ZS50ZXh0T3JLZXl3b3JkUGFydD1XbjtmdW5jdGlvbiB0byhTZSl7cmV0dXJuIFBuKFNlLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnRleHQpfWUudGV4dFBhcnQ9dG87ZnVuY3Rpb24gQ28oU2Upe3JldHVybiBQbihTZSxlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5hbGlhc05hbWUpfWUudHlwZUFsaWFzTmFtZVBhcnQ9Q287ZnVuY3Rpb24gS28oU2Upe3JldHVybiBQbihTZSxlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC50eXBlUGFyYW1ldGVyTmFtZSl9ZS50eXBlUGFyYW1ldGVyTmFtZVBhcnQ9S287ZnVuY3Rpb24gT28oU2Upe3JldHVybiBQbihTZSxlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5saW5rVGV4dCl9ZS5saW5rVGV4dFBhcnQ9T287ZnVuY3Rpb24gbm8oU2UsaHIpe3JldHVybnt0ZXh0OlNlLGtpbmQ6ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmRbZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQubGlua05hbWVdLHRhcmdldDp7ZmlsZU5hbWU6ZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGhyKS5maWxlTmFtZSx0ZXh0U3BhbjpPZShocil9fX1lLmxpbmtOYW1lUGFydD1ubztmdW5jdGlvbiAkbyhTZSl7cmV0dXJuIFBuKFNlLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLmxpbmspfWUubGlua1BhcnQ9JG87ZnVuY3Rpb24gUHIoU2UsaHIpe3ZhciBPcixraT1lLmlzSlNEb2NMaW5rKFNlKT9cImxpbmtcIjplLmlzSlNEb2NMaW5rQ29kZShTZSk/XCJsaW5rY29kZVwiOlwibGlua3BsYWluXCIsZHQ9WyRvKFwie0BcIi5jb25jYXQoa2ksXCIgXCIpKV07aWYoIVNlLm5hbWUpU2UudGV4dCYmZHQucHVzaChPbyhTZS50ZXh0KSk7ZWxzZXt2YXIgbGE9aHI9PW51bGw/dm9pZCAwOmhyLmdldFN5bWJvbEF0TG9jYXRpb24oU2UubmFtZSksd2E9U3QoU2UudGV4dCksT249ZS5nZXRUZXh0T2ZOb2RlKFNlLm5hbWUpK1NlLnRleHQuc2xpY2UoMCx3YSksTm89eGkoU2UudGV4dC5zbGljZSh3YSkpLGpvPShsYT09bnVsbD92b2lkIDA6bGEudmFsdWVEZWNsYXJhdGlvbil8fCgoT3I9bGE9PW51bGw/dm9pZCAwOmxhLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxPcj09PXZvaWQgMD92b2lkIDA6T3JbMF0pO2pvPyhkdC5wdXNoKG5vKE9uLGpvKSksTm8mJmR0LnB1c2goT28oTm8pKSk6ZHQucHVzaChPbyhPbisod2F8fE5vLmluZGV4T2YoXCI6Ly9cIik9PT0wP1wiXCI6XCIgXCIpK05vKSl9cmV0dXJuIGR0LnB1c2goJG8oXCJ9XCIpKSxkdH1lLmJ1aWxkTGlua1BhcnRzPVByO2Z1bmN0aW9uIHhpKFNlKXt2YXIgaHI9MDtpZihTZS5jaGFyQ29kZUF0KGhyKyspPT09MTI0KXtmb3IoO2hyPFNlLmxlbmd0aCYmU2UuY2hhckNvZGVBdChocik9PT0zMjspaHIrKztyZXR1cm4gU2Uuc2xpY2UoaHIpfXJldHVybiBTZX1mdW5jdGlvbiBTdChTZSl7aWYoU2UuaW5kZXhPZihcIigpXCIpPT09MClyZXR1cm4gMjtpZihTZVswXSE9PVwiPFwiKXJldHVybiAwO2Zvcih2YXIgaHI9MCxPcj0wO09yPFNlLmxlbmd0aDspaWYoU2VbT3JdPT09XCI8XCImJmhyKyssU2VbT3JdPT09XCI+XCImJmhyLS0sT3IrKywhaHIpcmV0dXJuIE9yO3JldHVybiAwfXZhciBwYT1gXFxyXG5gO2Z1bmN0aW9uIGRuKFNlLGhyKXt2YXIgT3I7cmV0dXJuKGhyPT1udWxsP3ZvaWQgMDpoci5uZXdMaW5lQ2hhcmFjdGVyKXx8KChPcj1TZS5nZXROZXdMaW5lKT09PW51bGx8fE9yPT09dm9pZCAwP3ZvaWQgMDpPci5jYWxsKFNlKSl8fHBhfWUuZ2V0TmV3TGluZU9yRGVmYXVsdEZyb21Ib3N0PWRuO2Z1bmN0aW9uIEpuKCl7cmV0dXJuIFBuKGBcbmAsZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQubGluZUJyZWFrKX1lLmxpbmVCcmVha1BhcnQ9Sm47ZnVuY3Rpb24gUWUoU2Upe3RyeXtyZXR1cm4gU2Uoa24pLGtuLmRpc3BsYXlQYXJ0cygpfWZpbmFsbHl7a24uY2xlYXIoKX19ZS5tYXBUb0Rpc3BsYXlQYXJ0cz1RZTtmdW5jdGlvbiBHcihTZSxocixPcixraSl7cmV0dXJuIGtpPT09dm9pZCAwJiYoa2k9MCksUWUoZnVuY3Rpb24oZHQpe1NlLndyaXRlVHlwZShocixPcixraXwxMDI0fDE2Mzg0LGR0KX0pfWUudHlwZVRvRGlzcGxheVBhcnRzPUdyO2Z1bmN0aW9uIFMoU2UsaHIsT3Isa2ksZHQpe3JldHVybiBkdD09PXZvaWQgMCYmKGR0PTApLFFlKGZ1bmN0aW9uKGxhKXtTZS53cml0ZVN5bWJvbChocixPcixraSxkdHw4LGxhKX0pfWUuc3ltYm9sVG9EaXNwbGF5UGFydHM9UztmdW5jdGlvbiBDZShTZSxocixPcixraSl7cmV0dXJuIGtpPT09dm9pZCAwJiYoa2k9MCksa2l8PTI1NjMyLFFlKGZ1bmN0aW9uKGR0KXtTZS53cml0ZVNpZ25hdHVyZShocixPcixraSx2b2lkIDAsZHQpfSl9ZS5zaWduYXR1cmVUb0Rpc3BsYXlQYXJ0cz1DZTtmdW5jdGlvbiBxZShTZSxocil7dmFyIE9yPWhyLmdldFNvdXJjZUZpbGUoKTtyZXR1cm4gUWUoZnVuY3Rpb24oa2kpe3ZhciBkdD1lLmNyZWF0ZVByaW50ZXIoe3JlbW92ZUNvbW1lbnRzOiEwLG9taXRUcmFpbGluZ1NlbWljb2xvbjohMH0pO2R0LndyaXRlTm9kZSg0LFNlLE9yLGtpKX0pfWUubm9kZVRvRGlzcGxheVBhcnRzPXFlO2Z1bmN0aW9uIGJyKFNlKXtyZXR1cm4hIVNlLnBhcmVudCYmZS5pc0ltcG9ydE9yRXhwb3J0U3BlY2lmaWVyKFNlLnBhcmVudCkmJlNlLnBhcmVudC5wcm9wZXJ0eU5hbWU9PT1TZX1lLmlzSW1wb3J0T3JFeHBvcnRTcGVjaWZpZXJOYW1lPWJyO2Z1bmN0aW9uIFpyKFNlLGhyKXtyZXR1cm4gZS5lbnN1cmVTY3JpcHRLaW5kKFNlLGhyLmdldFNjcmlwdEtpbmQmJmhyLmdldFNjcmlwdEtpbmQoU2UpKX1lLmdldFNjcmlwdEtpbmQ9WnI7ZnVuY3Rpb24gU2koU2UsaHIpe2Zvcih2YXIgT3I9U2U7UWkoT3IpfHxQaShPcikmJk9yLnRhcmdldDspUGkoT3IpJiZPci50YXJnZXQ/T3I9T3IudGFyZ2V0Ok9yPWUuc2tpcEFsaWFzKE9yLGhyKTtyZXR1cm4gT3J9ZS5nZXRTeW1ib2xUYXJnZXQ9U2k7ZnVuY3Rpb24gUGkoU2Upe3JldHVybihTZS5mbGFncyYzMzU1NDQzMikhPT0wfWZ1bmN0aW9uIFFpKFNlKXtyZXR1cm4oU2UuZmxhZ3MmMjA5NzE1MikhPT0wfWZ1bmN0aW9uIEN0KFNlLGhyKXtyZXR1cm4gZS5nZXRTeW1ib2xJZChlLnNraXBBbGlhcyhTZSxocikpfWUuZ2V0VW5pcXVlU3ltYm9sSWQ9Q3Q7ZnVuY3Rpb24gc2EoU2UsaHIpe2Zvcig7ZS5pc1doaXRlU3BhY2VMaWtlKFNlLmNoYXJDb2RlQXQoaHIpKTspaHIrPTE7cmV0dXJuIGhyfWUuZ2V0Rmlyc3ROb25TcGFjZUNoYXJhY3RlclBvc2l0aW9uPXNhO2Z1bmN0aW9uIGVuKFNlLGhyKXtmb3IoO2hyPi0xJiZlLmlzV2hpdGVTcGFjZVNpbmdsZUxpbmUoU2UuY2hhckNvZGVBdChocikpOyloci09MTtyZXR1cm4gaHIrMX1lLmdldFByZWNlZGluZ05vblNwYWNlQ2hhcmFjdGVyUG9zaXRpb249ZW47ZnVuY3Rpb24gV2EoU2UsaHIpe2hyPT09dm9pZCAwJiYoaHI9ITApO3ZhciBPcj1TZSYmbW8oU2UpO3JldHVybiBPciYmIWhyJiZ5cyhPciksT3J9ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZT1XYTtmdW5jdGlvbiBxbihTZSxocixPcil7dmFyIGtpPU9yKFNlKTtyZXR1cm4ga2k/ZS5zZXRPcmlnaW5hbE5vZGUoa2ksU2UpOmtpPW1vKFNlLE9yKSxraSYmIWhyJiZ5cyhraSksa2l9ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZVdpdGhSZXBsYWNlbWVudHM9cW47ZnVuY3Rpb24gbW8oU2UsaHIpe3ZhciBPcj1ocj9mdW5jdGlvbih3YSl7cmV0dXJuIHFuKHdhLCEwLGhyKX06V2Esa2k9aHI/ZnVuY3Rpb24od2Epe3JldHVybiB3YSYmR28od2EsITAsaHIpfTpmdW5jdGlvbih3YSl7cmV0dXJuIHdhJiZTbyh3YSl9LGR0PWUudmlzaXRFYWNoQ2hpbGQoU2UsT3IsZS5udWxsVHJhbnNmb3JtYXRpb25Db250ZXh0LGtpLE9yKTtpZihkdD09PVNlKXt2YXIgbGE9ZS5pc1N0cmluZ0xpdGVyYWwoU2UpP2Uuc2V0T3JpZ2luYWxOb2RlKGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsRnJvbU5vZGUoU2UpLFNlKTplLmlzTnVtZXJpY0xpdGVyYWwoU2UpP2Uuc2V0T3JpZ2luYWxOb2RlKGUuZmFjdG9yeS5jcmVhdGVOdW1lcmljTGl0ZXJhbChTZS50ZXh0LFNlLm51bWVyaWNMaXRlcmFsRmxhZ3MpLFNlKTplLmZhY3RvcnkuY2xvbmVOb2RlKFNlKTtyZXR1cm4gZS5zZXRUZXh0UmFuZ2UobGEsU2UpfXJldHVybiBkdC5wYXJlbnQ9dm9pZCAwLGR0fWZ1bmN0aW9uIFNvKFNlLGhyKXtyZXR1cm4gaHI9PT12b2lkIDAmJihocj0hMCksU2UmJmUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoU2UubWFwKGZ1bmN0aW9uKE9yKXtyZXR1cm4gV2EoT3IsaHIpfSksU2UuaGFzVHJhaWxpbmdDb21tYSl9ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZXM9U287ZnVuY3Rpb24gR28oU2UsaHIsT3Ipe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KFNlLm1hcChmdW5jdGlvbihraSl7cmV0dXJuIHFuKGtpLGhyLE9yKX0pLFNlLmhhc1RyYWlsaW5nQ29tbWEpfWUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmVzV2l0aFJlcGxhY2VtZW50cz1HbztmdW5jdGlvbiB5cyhTZSl7UGMoU2UpLFZjKFNlKX1lLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhPXlzO2Z1bmN0aW9uIFBjKFNlKXtwYyhTZSw1MTIsaHMpfWUuc3VwcHJlc3NMZWFkaW5nVHJpdmlhPVBjO2Z1bmN0aW9uIFZjKFNlKXtwYyhTZSwxMDI0LGUuZ2V0TGFzdENoaWxkKX1lLnN1cHByZXNzVHJhaWxpbmdUcml2aWE9VmM7ZnVuY3Rpb24gS2MoU2UsaHIpe3ZhciBPcj1TZS5nZXRTb3VyY2VGaWxlKCksa2k9T3IudGV4dDtYcyhTZSxraSk/UXMoU2UsaHIsT3IpOmRzKFNlLGhyLE9yKSxqcyhTZSxocixPcil9ZS5jb3B5Q29tbWVudHM9S2M7ZnVuY3Rpb24gWHMoU2UsaHIpe2Zvcih2YXIgT3I9U2UuZ2V0RnVsbFN0YXJ0KCksa2k9U2UuZ2V0U3RhcnQoKSxkdD1PcjtkdDxraTtkdCsrKWlmKGhyLmNoYXJDb2RlQXQoZHQpPT09MTApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcGMoU2UsaHIsT3Ipe2UuYWRkRW1pdEZsYWdzKFNlLGhyKTt2YXIga2k9T3IoU2UpO2tpJiZwYyhraSxocixPcil9ZnVuY3Rpb24gaHMoU2Upe3JldHVybiBTZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oaHIpe3JldHVybiBocn0pfWZ1bmN0aW9uIHRjKFNlLGhyKXtmb3IodmFyIE9yPVNlLGtpPTE7IWUuaXNGaWxlTGV2ZWxVbmlxdWVOYW1lKGhyLE9yKTtraSsrKU9yPVwiXCIuY29uY2F0KFNlLFwiX1wiKS5jb25jYXQoa2kpO3JldHVybiBPcn1lLmdldFVuaXF1ZU5hbWU9dGM7ZnVuY3Rpb24gcHMoU2UsaHIsT3Isa2kpe2Zvcih2YXIgZHQ9MCxsYT0tMSx3YT0wLE9uPVNlO3dhPE9uLmxlbmd0aDt3YSsrKXt2YXIgTm89T25bd2FdLGpvPU5vLmZpbGVOYW1lLHBvPU5vLnRleHRDaGFuZ2VzO2UuRGVidWcuYXNzZXJ0KGpvPT09aHIpO2Zvcih2YXIgR249MCwkbj1wbztHbjwkbi5sZW5ndGg7R24rKyl7dmFyIEhvPSRuW0duXSxabz1Iby5zcGFuLEVzPUhvLm5ld1RleHQseWM9Y2UoRXMsT3IpO2lmKHljIT09LTEmJihsYT1aby5zdGFydCtkdCt5Yywha2kpKXJldHVybiBsYTtkdCs9RXMubGVuZ3RoLVpvLmxlbmd0aH19cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGtpKSxlLkRlYnVnLmFzc2VydChsYT49MCksbGF9ZS5nZXRSZW5hbWVMb2NhdGlvbj1wcztmdW5jdGlvbiBRcyhTZSxocixPcixraSxkdCl7ZS5mb3JFYWNoTGVhZGluZ0NvbW1lbnRSYW5nZShPci50ZXh0LFNlLnBvcyxKaShocixPcixraSxkdCxlLmFkZFN5bnRoZXRpY0xlYWRpbmdDb21tZW50KSl9ZS5jb3B5TGVhZGluZ0NvbW1lbnRzPVFzO2Z1bmN0aW9uIGpzKFNlLGhyLE9yLGtpLGR0KXtlLmZvckVhY2hUcmFpbGluZ0NvbW1lbnRSYW5nZShPci50ZXh0LFNlLmVuZCxKaShocixPcixraSxkdCxlLmFkZFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudCkpfWUuY29weVRyYWlsaW5nQ29tbWVudHM9anM7ZnVuY3Rpb24gZHMoU2UsaHIsT3Isa2ksZHQpe2UuZm9yRWFjaFRyYWlsaW5nQ29tbWVudFJhbmdlKE9yLnRleHQsU2UucG9zLEppKGhyLE9yLGtpLGR0LGUuYWRkU3ludGhldGljTGVhZGluZ0NvbW1lbnQpKX1lLmNvcHlUcmFpbGluZ0FzTGVhZGluZ0NvbW1lbnRzPWRzO2Z1bmN0aW9uIEppKFNlLGhyLE9yLGtpLGR0KXtyZXR1cm4gZnVuY3Rpb24obGEsd2EsT24sTm8pe09uPT09Mz8obGErPTIsd2EtPTIpOmxhKz0yLGR0KFNlLE9yfHxPbixoci50ZXh0LnNsaWNlKGxhLHdhKSxraSE9PXZvaWQgMD9raTpObyl9fWZ1bmN0aW9uIGNlKFNlLGhyKXtpZihlLnN0YXJ0c1dpdGgoU2UsaHIpKXJldHVybiAwO3ZhciBPcj1TZS5pbmRleE9mKFwiIFwiK2hyKTtyZXR1cm4gT3I9PT0tMSYmKE9yPVNlLmluZGV4T2YoXCIuXCIraHIpKSxPcj09PS0xJiYoT3I9U2UuaW5kZXhPZignXCInK2hyKSksT3I9PT0tMT8tMTpPcisxfWZ1bmN0aW9uIFJyKFNlKXtyZXR1cm4gZS5pc0JpbmFyeUV4cHJlc3Npb24oU2UpJiZTZS5vcGVyYXRvclRva2VuLmtpbmQ9PT0yN3x8ZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKFNlKXx8ZS5pc0FzRXhwcmVzc2lvbihTZSkmJmUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihTZS5leHByZXNzaW9uKX1lLm5lZWRzUGFyZW50aGVzZXM9UnI7ZnVuY3Rpb24geWkoU2UsaHIpe3ZhciBPcj1TZS5wYXJlbnQ7c3dpdGNoKE9yLmtpbmQpe2Nhc2UgMjA5OnJldHVybiBoci5nZXRDb250ZXh0dWFsVHlwZShPcik7Y2FzZSAyMjE6e3ZhciBraT1PcixkdD1raS5sZWZ0LGxhPWtpLm9wZXJhdG9yVG9rZW4sd2E9a2kucmlnaHQ7cmV0dXJuIGplKGxhLmtpbmQpP2hyLmdldFR5cGVBdExvY2F0aW9uKFNlPT09d2E/ZHQ6d2EpOmhyLmdldENvbnRleHR1YWxUeXBlKFNlKX1jYXNlIDI4OTpyZXR1cm4gT3IuZXhwcmVzc2lvbj09PVNlP1B0KE9yLGhyKTp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gaHIuZ2V0Q29udGV4dHVhbFR5cGUoU2UpfX1lLmdldENvbnRleHR1YWxUeXBlRnJvbVBhcmVudD15aTtmdW5jdGlvbiBxaShTZSxocixPcil7dmFyIGtpPW5hKFNlLGhyKSxkdD1KU09OLnN0cmluZ2lmeShPcik7cmV0dXJuIGtpPT09MD9cIidcIi5jb25jYXQoZS5zdHJpcFF1b3RlcyhkdCkucmVwbGFjZSgvJy9nLFwiXFxcXCdcIikucmVwbGFjZSgvXFxcXFwiL2csJ1wiJyksXCInXCIpOmR0fWUucXVvdGU9cWk7ZnVuY3Rpb24gamUoU2Upe3N3aXRjaChTZSl7Y2FzZSAzNjpjYXNlIDM0OmNhc2UgMzc6Y2FzZSAzNTpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1lLmlzRXF1YWxpdHlPcGVyYXRvcktpbmQ9amU7ZnVuY3Rpb24gSHIoU2Upe3N3aXRjaChTZS5raW5kKXtjYXNlIDEwOmNhc2UgMTQ6Y2FzZSAyMjM6Y2FzZSAyMTA6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZS5pc1N0cmluZ0xpdGVyYWxPclRlbXBsYXRlPUhyO2Z1bmN0aW9uIHB0KFNlKXtyZXR1cm4hIVNlLmdldFN0cmluZ0luZGV4VHlwZSgpfHwhIVNlLmdldE51bWJlckluZGV4VHlwZSgpfWUuaGFzSW5kZXhTaWduYXR1cmU9cHQ7ZnVuY3Rpb24gUHQoU2UsaHIpe3JldHVybiBoci5nZXRUeXBlQXRMb2NhdGlvbihTZS5wYXJlbnQucGFyZW50LmV4cHJlc3Npb24pfWUuZ2V0U3dpdGNoZWRUeXBlPVB0LGUuQU5PTllNT1VTPVwiYW5vbnltb3VzIGZ1bmN0aW9uXCI7ZnVuY3Rpb24gZ2EoU2UsaHIsT3Isa2kpe3ZhciBkdD1Pci5nZXRUeXBlQ2hlY2tlcigpLGxhPSEwLHdhPWZ1bmN0aW9uKCl7cmV0dXJuIGxhPSExfSxPbj1kdC50eXBlVG9UeXBlTm9kZShTZSxociwxLHt0cmFja1N5bWJvbDpmdW5jdGlvbihObyxqbyxwbyl7cmV0dXJuIGxhPWxhJiZkdC5pc1N5bWJvbEFjY2Vzc2libGUoTm8sam8scG8sITEpLmFjY2Vzc2liaWxpdHk9PT0wLCFsYX0scmVwb3J0SW5hY2Nlc3NpYmxlVGhpc0Vycm9yOndhLHJlcG9ydFByaXZhdGVJbkJhc2VPZkNsYXNzRXhwcmVzc2lvbjp3YSxyZXBvcnRJbmFjY2Vzc2libGVVbmlxdWVTeW1ib2xFcnJvcjp3YSxtb2R1bGVSZXNvbHZlckhvc3Q6RHQoT3Isa2kpfSk7cmV0dXJuIGxhP09uOnZvaWQgMH1lLmdldFR5cGVOb2RlSWZBY2Nlc3NpYmxlPWdhO2Z1bmN0aW9uIHVhKFNlKXtyZXR1cm4gU2U9PT0xNzR8fFNlPT09MTc1fHxTZT09PTE3Nnx8U2U9PT0xNjZ8fFNlPT09MTY4fWZ1bmN0aW9uIFhuKFNlKXtyZXR1cm4gU2U9PT0yNTZ8fFNlPT09MTcxfHxTZT09PTE2OXx8U2U9PT0xNzJ8fFNlPT09MTczfWZ1bmN0aW9uIGpyKFNlKXtyZXR1cm4gU2U9PT0yNjF9ZnVuY3Rpb24gZm8oU2Upe3JldHVybiBTZT09PTIzN3x8U2U9PT0yMzh8fFNlPT09MjQwfHxTZT09PTI0NXx8U2U9PT0yNDZ8fFNlPT09MjQ3fHxTZT09PTI1MXx8U2U9PT0yNTN8fFNlPT09MTY3fHxTZT09PTI1OXx8U2U9PT0yNjZ8fFNlPT09MjY1fHxTZT09PTI3Mnx8U2U9PT0yNjR8fFNlPT09MjcxfWUuc3ludGF4UmVxdWlyZXNUcmFpbGluZ1NlbWljb2xvbk9yQVNJPWZvLGUuc3ludGF4TWF5QmVBU0lDYW5kaWRhdGU9ZS5vcih1YSxYbixqcixmbyk7ZnVuY3Rpb24geHMoU2UsaHIpe3ZhciBPcj1TZS5nZXRMYXN0VG9rZW4oaHIpO2lmKE9yJiZPci5raW5kPT09MjYpcmV0dXJuITE7aWYodWEoU2Uua2luZCkpe2lmKE9yJiZPci5raW5kPT09MjcpcmV0dXJuITF9ZWxzZSBpZihqcihTZS5raW5kKSl7dmFyIGtpPWUubGFzdChTZS5nZXRDaGlsZHJlbihocikpO2lmKGtpJiZlLmlzTW9kdWxlQmxvY2soa2kpKXJldHVybiExfWVsc2UgaWYoWG4oU2Uua2luZCkpe3ZhciBraT1lLmxhc3QoU2UuZ2V0Q2hpbGRyZW4oaHIpKTtpZihraSYmZS5pc0Z1bmN0aW9uQmxvY2soa2kpKXJldHVybiExfWVsc2UgaWYoIWZvKFNlLmtpbmQpKXJldHVybiExO2lmKFNlLmtpbmQ9PT0yNDApcmV0dXJuITA7dmFyIGR0PWUuZmluZEFuY2VzdG9yKFNlLGZ1bmN0aW9uKE5vKXtyZXR1cm4hTm8ucGFyZW50fSksbGE9eXIoU2UsZHQsaHIpO2lmKCFsYXx8bGEua2luZD09PTE5KXJldHVybiEwO3ZhciB3YT1oci5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihTZS5nZXRFbmQoKSkubGluZSxPbj1oci5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihsYS5nZXRTdGFydChocikpLmxpbmU7cmV0dXJuIHdhIT09T259ZnVuY3Rpb24gRm8oU2UsaHIsT3Ipe3ZhciBraT1lLmZpbmRBbmNlc3RvcihocixmdW5jdGlvbihkdCl7cmV0dXJuIGR0LmVuZCE9PVNlP1wicXVpdFwiOmUuc3ludGF4TWF5QmVBU0lDYW5kaWRhdGUoZHQua2luZCl9KTtyZXR1cm4hIWtpJiZ4cyhraSxPcil9ZS5wb3NpdGlvbklzQVNJQ2FuZGlkYXRlPUZvO2Z1bmN0aW9uIGtvKFNlKXt2YXIgaHI9MCxPcj0wLGtpPTU7cmV0dXJuIGUuZm9yRWFjaENoaWxkKFNlLGZ1bmN0aW9uIGR0KGxhKXtpZihmbyhsYS5raW5kKSl7dmFyIHdhPWxhLmdldExhc3RUb2tlbihTZSk7KHdhPT1udWxsP3ZvaWQgMDp3YS5raW5kKT09PTI2P2hyKys6T3IrK31lbHNlIGlmKHVhKGxhLmtpbmQpKXt2YXIgd2E9bGEuZ2V0TGFzdFRva2VuKFNlKTtpZigod2E9PW51bGw/dm9pZCAwOndhLmtpbmQpPT09MjYpaHIrKztlbHNlIGlmKHdhJiZ3YS5raW5kIT09Mjcpe3ZhciBPbj1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFNlLHdhLmdldFN0YXJ0KFNlKSkubGluZSxObz1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFNlLGUuZ2V0U3Bhbk9mVG9rZW5BdFBvc2l0aW9uKFNlLHdhLmVuZCkuc3RhcnQpLmxpbmU7T24hPT1ObyYmT3IrK319cmV0dXJuIGhyK09yPj1raT8hMDplLmZvckVhY2hDaGlsZChsYSxkdCl9KSxocj09PTAmJk9yPD0xPyEwOmhyL09yPjEva2l9ZS5wcm9iYWJseVVzZXNTZW1pY29sb25zPWtvO2Z1bmN0aW9uIEFvKFNlLGhyKXtyZXR1cm4gdGwoU2UsU2UuZ2V0RGlyZWN0b3JpZXMsaHIpfHxbXX1lLnRyeUdldERpcmVjdG9yaWVzPUFvO2Z1bmN0aW9uIE1zKFNlLGhyLE9yLGtpLGR0KXtyZXR1cm4gdGwoU2UsU2UucmVhZERpcmVjdG9yeSxocixPcixraSxkdCl8fGUuZW1wdHlBcnJheX1lLnRyeVJlYWREaXJlY3Rvcnk9TXM7ZnVuY3Rpb24gQnMoU2UsaHIpe3JldHVybiB0bChTZSxTZS5maWxlRXhpc3RzLGhyKX1lLnRyeUZpbGVFeGlzdHM9QnM7ZnVuY3Rpb24geGMoU2UsaHIpe3JldHVybiBzdShmdW5jdGlvbigpe3JldHVybiBlLmRpcmVjdG9yeVByb2JhYmx5RXhpc3RzKGhyLFNlKX0pfHwhMX1lLnRyeURpcmVjdG9yeUV4aXN0cz14YztmdW5jdGlvbiBzdShTZSl7dHJ5e3JldHVybiBTZSgpfWNhdGNoe3JldHVybn19ZS50cnlBbmRJZ25vcmVFcnJvcnM9c3U7ZnVuY3Rpb24gdGwoU2UsaHIpe2Zvcih2YXIgT3I9W10sa2k9MjtraTxhcmd1bWVudHMubGVuZ3RoO2tpKyspT3Jba2ktMl09YXJndW1lbnRzW2tpXTtyZXR1cm4gc3UoZnVuY3Rpb24oKXtyZXR1cm4gaHImJmhyLmFwcGx5KFNlLE9yKX0pfWUudHJ5SU9BbmRDb25zdW1lRXJyb3JzPXRsO2Z1bmN0aW9uIFpjKFNlLGhyLE9yKXt2YXIga2k9W107cmV0dXJuIGUuZm9yRWFjaEFuY2VzdG9yRGlyZWN0b3J5KFNlLGZ1bmN0aW9uKGR0KXtpZihkdD09PU9yKXJldHVybiEwO3ZhciBsYT1lLmNvbWJpbmVQYXRocyhkdCxcInBhY2thZ2UuanNvblwiKTtCcyhocixsYSkmJmtpLnB1c2gobGEpfSksa2l9ZS5maW5kUGFja2FnZUpzb25zPVpjO2Z1bmN0aW9uIFJmKFNlLGhyKXt2YXIgT3I7cmV0dXJuIGUuZm9yRWFjaEFuY2VzdG9yRGlyZWN0b3J5KFNlLGZ1bmN0aW9uKGtpKXtpZihraT09PVwibm9kZV9tb2R1bGVzXCJ8fChPcj1lLmZpbmRDb25maWdGaWxlKGtpLGZ1bmN0aW9uKGR0KXtyZXR1cm4gQnMoaHIsZHQpfSxcInBhY2thZ2UuanNvblwiKSxPcikpcmV0dXJuITB9KSxPcn1lLmZpbmRQYWNrYWdlSnNvbj1SZjtmdW5jdGlvbiBhbChTZSxocil7aWYoIWhyLmZpbGVFeGlzdHMpcmV0dXJuW107dmFyIE9yPVtdO3JldHVybiBlLmZvckVhY2hBbmNlc3RvckRpcmVjdG9yeShlLmdldERpcmVjdG9yeVBhdGgoU2UpLGZ1bmN0aW9uKGtpKXt2YXIgZHQ9ZS5jb21iaW5lUGF0aHMoa2ksXCJwYWNrYWdlLmpzb25cIik7aWYoaHIuZmlsZUV4aXN0cyhkdCkpe3ZhciBsYT1KbyhkdCxocik7bGEmJk9yLnB1c2gobGEpfX0pLE9yfWUuZ2V0UGFja2FnZUpzb25zVmlzaWJsZVRvRmlsZT1hbDtmdW5jdGlvbiBKbyhTZSxocil7aWYoIWhyLnJlYWRGaWxlKXJldHVybjt2YXIgT3I9W1wiZGVwZW5kZW5jaWVzXCIsXCJkZXZEZXBlbmRlbmNpZXNcIixcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCIsXCJwZWVyRGVwZW5kZW5jaWVzXCJdLGtpPWhyLnJlYWRGaWxlKFNlKXx8XCJcIixkdD1XcyhraSksbGE9e307aWYoZHQpZm9yKHZhciB3YT0wLE9uPU9yO3dhPE9uLmxlbmd0aDt3YSsrKXt2YXIgTm89T25bd2FdLGpvPWR0W05vXTtpZighIWpvKXt2YXIgcG89bmV3IGUuTWFwO2Zvcih2YXIgR24gaW4gam8pcG8uc2V0KEduLGpvW0duXSk7bGFbTm9dPXBvfX12YXIgJG49W1sxLGxhLmRlcGVuZGVuY2llc10sWzIsbGEuZGV2RGVwZW5kZW5jaWVzXSxbOCxsYS5vcHRpb25hbERlcGVuZGVuY2llc10sWzQsbGEucGVlckRlcGVuZGVuY2llc11dO3JldHVybiBLZShLZSh7fSxsYSkse3BhcnNlYWJsZTohIWR0LGZpbGVOYW1lOlNlLGdldDpIbyxoYXM6ZnVuY3Rpb24oWm8sRXMpe3JldHVybiEhSG8oWm8sRXMpfX0pO2Z1bmN0aW9uIEhvKFpvLEVzKXtFcz09PXZvaWQgMCYmKEVzPTE1KTtmb3IodmFyIHljPTAsWHI9JG47eWM8WHIubGVuZ3RoO3ljKyspe3ZhciBMcz1Yclt5Y10sSWM9THNbMF0senU9THNbMV07aWYoenUmJkVzJkljKXt2YXIgdmY9enUuZ2V0KFpvKTtpZih2ZiE9PXZvaWQgMClyZXR1cm4gdmZ9fX19ZS5jcmVhdGVQYWNrYWdlSnNvbkluZm89Sm87ZnVuY3Rpb24gZXUoU2UsaHIsT3Ipe3ZhciBraT0oT3IuZ2V0UGFja2FnZUpzb25zVmlzaWJsZVRvRmlsZSYmT3IuZ2V0UGFja2FnZUpzb25zVmlzaWJsZVRvRmlsZShTZS5maWxlTmFtZSl8fGFsKFNlLmZpbGVOYW1lLE9yKSkuZmlsdGVyKGZ1bmN0aW9uKCRuKXtyZXR1cm4gJG4ucGFyc2VhYmxlfSksZHQ7cmV0dXJue2FsbG93c0ltcG9ydGluZ0FtYmllbnRNb2R1bGU6d2EsYWxsb3dzSW1wb3J0aW5nU291cmNlRmlsZTpPbixhbGxvd3NJbXBvcnRpbmdTcGVjaWZpZXI6Tm99O2Z1bmN0aW9uIGxhKCRuKXtmb3IodmFyIEhvPUduKCRuKSxabz0wLEVzPWtpO1pvPEVzLmxlbmd0aDtabysrKXt2YXIgeWM9RXNbWm9dO2lmKHljLmhhcyhIbyl8fHljLmhhcyhlLmdldFR5cGVzUGFja2FnZU5hbWUoSG8pKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB3YSgkbixIbyl7aWYoIWtpLmxlbmd0aHx8ISRuLnZhbHVlRGVjbGFyYXRpb24pcmV0dXJuITA7dmFyIFpvPSRuLnZhbHVlRGVjbGFyYXRpb24uZ2V0U291cmNlRmlsZSgpLEVzPXBvKFpvLmZpbGVOYW1lLEhvKTtpZih0eXBlb2YgRXM+XCJ1XCIpcmV0dXJuITA7dmFyIHljPWUuc3RyaXBRdW90ZXMoJG4uZ2V0TmFtZSgpKTtyZXR1cm4gam8oeWMpPyEwOmxhKEVzKXx8bGEoeWMpfWZ1bmN0aW9uIE9uKCRuLEhvKXtpZigha2kubGVuZ3RoKXJldHVybiEwO3ZhciBabz1wbygkbi5maWxlTmFtZSxIbyk7cmV0dXJuIFpvP2xhKFpvKTohMH1mdW5jdGlvbiBObygkbil7cmV0dXJuIWtpLmxlbmd0aHx8am8oJG4pfHxlLnBhdGhJc1JlbGF0aXZlKCRuKXx8ZS5pc1Jvb3RlZERpc2tQYXRoKCRuKT8hMDpsYSgkbil9ZnVuY3Rpb24gam8oJG4pe3JldHVybiEhKGUuaXNTb3VyY2VGaWxlSlMoU2UpJiZlLkpzVHlwaW5nLm5vZGVDb3JlTW9kdWxlcy5oYXMoJG4pJiYoZHQ9PT12b2lkIDAmJihkdD1wdShTZSkpLGR0KSl9ZnVuY3Rpb24gcG8oJG4sSG8pe2lmKCEhZS5zdHJpbmdDb250YWlucygkbixcIm5vZGVfbW9kdWxlc1wiKSl7dmFyIFpvPWUubW9kdWxlU3BlY2lmaWVycy5nZXROb2RlTW9kdWxlc1BhY2thZ2VOYW1lKE9yLmdldENvbXBpbGF0aW9uU2V0dGluZ3MoKSxTZSwkbixIbyxocik7aWYoISFabyYmIWUucGF0aElzUmVsYXRpdmUoWm8pJiYhZS5pc1Jvb3RlZERpc2tQYXRoKFpvKSlyZXR1cm4gR24oWm8pfX1mdW5jdGlvbiBHbigkbil7dmFyIEhvPWUuZ2V0UGF0aENvbXBvbmVudHMoZS5nZXRQYWNrYWdlTmFtZUZyb21UeXBlc1BhY2thZ2VOYW1lKCRuKSkuc2xpY2UoMSk7cmV0dXJuIGUuc3RhcnRzV2l0aChIb1swXSxcIkBcIik/XCJcIi5jb25jYXQoSG9bMF0sXCIvXCIpLmNvbmNhdChIb1sxXSk6SG9bMF19fWUuY3JlYXRlUGFja2FnZUpzb25JbXBvcnRGaWx0ZXI9ZXU7ZnVuY3Rpb24gV3MoU2Upe3RyeXtyZXR1cm4gSlNPTi5wYXJzZShTZSl9Y2F0Y2h7cmV0dXJufX1mdW5jdGlvbiBwdShTZSl7cmV0dXJuIGUuc29tZShTZS5pbXBvcnRzLGZ1bmN0aW9uKGhyKXt2YXIgT3I9aHIudGV4dDtyZXR1cm4gZS5Kc1R5cGluZy5ub2RlQ29yZU1vZHVsZXMuaGFzKE9yKX0pfWUuY29uc3VtZXNOb2RlQ29yZU1vZHVsZXM9cHU7ZnVuY3Rpb24gVXUoU2Upe3JldHVybiBlLmNvbnRhaW5zKGUuZ2V0UGF0aENvbXBvbmVudHMoU2UpLFwibm9kZV9tb2R1bGVzXCIpfWUuaXNJbnNpZGVOb2RlTW9kdWxlcz1VdTtmdW5jdGlvbiBRbChTZSl7cmV0dXJuIFNlLmZpbGUhPT12b2lkIDAmJlNlLnN0YXJ0IT09dm9pZCAwJiZTZS5sZW5ndGghPT12b2lkIDB9ZS5pc0RpYWdub3N0aWNXaXRoTG9jYXRpb249UWw7ZnVuY3Rpb24geGwoU2UsaHIpe3ZhciBPcj1PZShTZSksa2k9ZS5iaW5hcnlTZWFyY2hLZXkoaHIsT3IsZS5pZGVudGl0eSxlLmNvbXBhcmVUZXh0U3BhbnMpO2lmKGtpPj0wKXt2YXIgZHQ9aHJba2ldO3JldHVybiBlLkRlYnVnLmFzc2VydEVxdWFsKGR0LmZpbGUsU2UuZ2V0U291cmNlRmlsZSgpLFwiRGlhZ25vc3RpY3MgcHJvaWRlZCB0byAnZmluZERpYWdub3N0aWNGb3JOb2RlJyBtdXN0IGJlIGZyb20gYSBzaW5nbGUgU291cmNlRmlsZVwiKSxlLmNhc3QoZHQsUWwpfX1lLmZpbmREaWFnbm9zdGljRm9yTm9kZT14bDtmdW5jdGlvbiBZYShTZSxocil7dmFyIE9yLGtpPWUuYmluYXJ5U2VhcmNoS2V5KGhyLFNlLnN0YXJ0LGZ1bmN0aW9uKE9uKXtyZXR1cm4gT24uc3RhcnR9LGUuY29tcGFyZVZhbHVlcyk7Zm9yKGtpPDAmJihraT1+a2kpOygoT3I9aHJba2ktMV0pPT09bnVsbHx8T3I9PT12b2lkIDA/dm9pZCAwOk9yLnN0YXJ0KT09PVNlLnN0YXJ0OylraS0tO2Zvcih2YXIgZHQ9W10sbGE9ZS50ZXh0U3BhbkVuZChTZSk7Oyl7dmFyIHdhPWUudHJ5Q2FzdChocltraV0sUWwpO2lmKCF3YXx8d2Euc3RhcnQ+bGEpYnJlYWs7ZS50ZXh0U3BhbkNvbnRhaW5zVGV4dFNwYW4oU2Usd2EpJiZkdC5wdXNoKHdhKSxraSsrfXJldHVybiBkdH1lLmdldERpYWdub3N0aWNzV2l0aGluU3Bhbj1ZYTtmdW5jdGlvbiBkdShTZSl7dmFyIGhyPVNlLnN0YXJ0UG9zaXRpb24sT3I9U2UuZW5kUG9zaXRpb247cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKGhyLE9yPT09dm9pZCAwP2hyOk9yKX1lLmdldFJlZmFjdG9yQ29udGV4dFNwYW49ZHU7ZnVuY3Rpb24gdmMoU2UsaHIpe3ZhciBPcj1scihTZSxoci5zdGFydCksa2k9ZS5maW5kQW5jZXN0b3IoT3IsZnVuY3Rpb24oZHQpe3JldHVybiBkdC5nZXRTdGFydChTZSk8aHIuc3RhcnR8fGR0LmdldEVuZCgpPmUudGV4dFNwYW5FbmQoaHIpP1wicXVpdFwiOmUuaXNFeHByZXNzaW9uKGR0KSYma2EoaHIsT2UoZHQsU2UpKX0pO3JldHVybiBraX1lLmdldEZpeGFibGVFcnJvclNwYW5FeHByZXNzaW9uPXZjO2Z1bmN0aW9uIEtyKFNlLGhyLE9yKXtyZXR1cm4gT3I9PT12b2lkIDAmJihPcj1lLmlkZW50aXR5KSxTZT9lLmlzQXJyYXkoU2UpP09yKGUubWFwKFNlLGhyKSk6aHIoU2UsMCk6dm9pZCAwfWUubWFwT25lT3JNYW55PUtyO2Z1bmN0aW9uIF9pKFNlKXtyZXR1cm4gZS5pc0FycmF5KFNlKT9lLmZpcnN0KFNlKTpTZX1lLmZpcnN0T3JPbmx5PV9pO2Z1bmN0aW9uIEVpKFNlLGhyKXtpZihrdChTZSkpe3ZhciBPcj1idChTZSk7aWYoT3IpcmV0dXJuIE9yO3ZhciBraT1lLmNvZGVmaXgubW9kdWxlU3ltYm9sVG9WYWxpZElkZW50aWZpZXIoaWEoU2UpLGhyLCExKSxkdD1lLmNvZGVmaXgubW9kdWxlU3ltYm9sVG9WYWxpZElkZW50aWZpZXIoaWEoU2UpLGhyLCEwKTtyZXR1cm4ga2k9PT1kdD9raTpba2ksZHRdfXJldHVybiBTZS5uYW1lfWUuZ2V0TmFtZXNGb3JFeHBvcnRlZFN5bWJvbD1FaTtmdW5jdGlvbiB0dChTZSxocixPcil7cmV0dXJuIGt0KFNlKT9idChTZSl8fGUuY29kZWZpeC5tb2R1bGVTeW1ib2xUb1ZhbGlkSWRlbnRpZmllcihpYShTZSksaHIsISFPcik6U2UubmFtZX1lLmdldE5hbWVGb3JFeHBvcnRlZFN5bWJvbD10dDtmdW5jdGlvbiBrdChTZSl7cmV0dXJuIShTZS5mbGFncyYzMzU1NDQzMikmJihTZS5lc2NhcGVkTmFtZT09PVwiZXhwb3J0PVwifHxTZS5lc2NhcGVkTmFtZT09PVwiZGVmYXVsdFwiKX1mdW5jdGlvbiBidChTZSl7cmV0dXJuIGUuZmlyc3REZWZpbmVkKFNlLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihocil7dmFyIE9yO3JldHVybiBlLmlzRXhwb3J0QXNzaWdubWVudChocik/KE9yPWUudHJ5Q2FzdChlLnNraXBPdXRlckV4cHJlc3Npb25zKGhyLmV4cHJlc3Npb24pLGUuaXNJZGVudGlmaWVyKSk9PT1udWxsfHxPcj09PXZvaWQgMD92b2lkIDA6T3IudGV4dDp2b2lkIDB9KX1mdW5jdGlvbiBpYShTZSl7dmFyIGhyO3JldHVybiBlLkRlYnVnLmNoZWNrRGVmaW5lZChTZS5wYXJlbnQsXCJTeW1ib2wgcGFyZW50IHdhcyB1bmRlZmluZWQuIEZsYWdzOiBcIi5jb25jYXQoZS5EZWJ1Zy5mb3JtYXRTeW1ib2xGbGFncyhTZS5mbGFncyksXCIuIFwiKStcIkRlY2xhcmF0aW9uczogXCIuY29uY2F0KChocj1TZS5kZWNsYXJhdGlvbnMpPT09bnVsbHx8aHI9PT12b2lkIDA/dm9pZCAwOmhyLm1hcChmdW5jdGlvbihPcil7dmFyIGtpPWUuRGVidWcuZm9ybWF0U3ludGF4S2luZChPci5raW5kKSxkdD1lLmlzSW5KU0ZpbGUoT3IpLGxhPU9yLmV4cHJlc3Npb247cmV0dXJuKGR0P1wiW0pTXVwiOlwiXCIpK2tpKyhsYT9cIiAoZXhwcmVzc2lvbjogXCIuY29uY2F0KGUuRGVidWcuZm9ybWF0U3ludGF4S2luZChsYS5raW5kKSxcIilcIik6XCJcIil9KS5qb2luKFwiLCBcIiksXCIuXCIpKX1mdW5jdGlvbiBYdChTZSxocixPcil7dmFyIGtpPWhyLmxlbmd0aDtpZihraStPcj5TZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBkdD0wO2R0PGtpO2R0KyspaWYoaHIuY2hhckNvZGVBdChkdCkhPT1TZS5jaGFyQ29kZUF0KGR0K09yKSlyZXR1cm4hMTtyZXR1cm4hMH1lLnN0cmluZ0NvbnRhaW5zQXQ9WHQ7ZnVuY3Rpb24gWmEoU2Upe3JldHVybiBTZS5jaGFyQ29kZUF0KDApPT09OTV9ZS5zdGFydHNXaXRoVW5kZXJzY29yZT1aYTtmdW5jdGlvbiBibihTZSl7cmV0dXJuIV9hKFNlKX1lLmlzR2xvYmFsRGVjbGFyYXRpb249Ym47ZnVuY3Rpb24gX2EoU2Upe3ZhciBocj1TZS5nZXRTb3VyY2VGaWxlKCk7cmV0dXJuIWhyLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yJiYhaHIuY29tbW9uSnNNb2R1bGVJbmRpY2F0b3I/ITE6ZS5pc0luSlNGaWxlKFNlKXx8IWUuZmluZEFuY2VzdG9yKFNlLGUuaXNHbG9iYWxTY29wZUF1Z21lbnRhdGlvbil9ZS5pc05vbkdsb2JhbERlY2xhcmF0aW9uPV9hO2Z1bmN0aW9uIHFhKFNlKXtyZXR1cm4hIShlLmdldENvbWJpbmVkTm9kZUZsYWdzQWx3YXlzSW5jbHVkZUpTRG9jKFNlKSY4MTkyKX1lLmlzRGVwcmVjYXRlZERlY2xhcmF0aW9uPXFhO2Z1bmN0aW9uIHJuKFNlLGhyKXt2YXIgT3I9ZS5maXJzdERlZmluZWQoU2UuaW1wb3J0cyxmdW5jdGlvbihraSl7aWYoZS5Kc1R5cGluZy5ub2RlQ29yZU1vZHVsZXMuaGFzKGtpLnRleHQpKXJldHVybiBlLnN0YXJ0c1dpdGgoa2kudGV4dCxcIm5vZGU6XCIpfSk7cmV0dXJuIE9yIT1udWxsP09yOmhyLnVzZXNVcmlTdHlsZU5vZGVDb3JlTW9kdWxlc31lLnNob3VsZFVzZVVyaVN0eWxlTm9kZUNvcmVNb2R1bGVzPXJuO2Z1bmN0aW9uIGpuKFNlKXtyZXR1cm4gU2U9PT1gXG5gPzE6MH1lLmdldE5ld0xpbmVLaW5kPWpuO2Z1bmN0aW9uIE1vKFNlKXtyZXR1cm4gZS5pc0FycmF5KFNlKT9lLmZvcm1hdFN0cmluZ0Zyb21BcmdzKGUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKFNlWzBdKSxTZS5zbGljZSgxKSk6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoU2UpfWUuZGlhZ25vc3RpY1RvU3RyaW5nPU1vO2Z1bmN0aW9uIGhvKFNlLGhyKXt2YXIgT3I9U2Uub3B0aW9ucyxraT0hT3Iuc2VtaWNvbG9uc3x8T3Iuc2VtaWNvbG9ucz09PWUuU2VtaWNvbG9uUHJlZmVyZW5jZS5JZ25vcmUsZHQ9T3Iuc2VtaWNvbG9ucz09PWUuU2VtaWNvbG9uUHJlZmVyZW5jZS5SZW1vdmV8fGtpJiYha28oaHIpO3JldHVybiBLZShLZSh7fSxPcikse3NlbWljb2xvbnM6ZHQ/ZS5TZW1pY29sb25QcmVmZXJlbmNlLlJlbW92ZTplLlNlbWljb2xvblByZWZlcmVuY2UuSWdub3JlfSl9ZS5nZXRGb3JtYXRDb2RlU2V0dGluZ3NGb3JXcml0aW5nPWhvO2Z1bmN0aW9uIGdzKFNlKXtyZXR1cm4gU2U9PT0yfHxTZT09PTN9ZS5qc3hNb2RlTmVlZHNFeHBsaWNpdEltcG9ydD1nc30pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihUKXtUW1QuTmFtZWQ9MF09XCJOYW1lZFwiLFRbVC5EZWZhdWx0PTFdPVwiRGVmYXVsdFwiLFRbVC5OYW1lc3BhY2U9Ml09XCJOYW1lc3BhY2VcIixUW1QuQ29tbW9uSlM9M109XCJDb21tb25KU1wifSkoYT1lLkltcG9ydEtpbmR8fChlLkltcG9ydEtpbmQ9e30pKTt2YXIgQzsoZnVuY3Rpb24oVCl7VFtULk5hbWVkPTBdPVwiTmFtZWRcIixUW1QuRGVmYXVsdD0xXT1cIkRlZmF1bHRcIixUW1QuRXhwb3J0RXF1YWxzPTJdPVwiRXhwb3J0RXF1YWxzXCIsVFtULlVNRD0zXT1cIlVNRFwifSkoQz1lLkV4cG9ydEtpbmR8fChlLkV4cG9ydEtpbmQ9e30pKTtmdW5jdGlvbiB3KFQpe3ZhciBLPTEsYj1lLmNyZWF0ZU11bHRpTWFwKCksc2U9bmV3IGUuTWFwLEo9bmV3IGUuTWFwLGllLFI9e2lzVXNhYmxlQnlGaWxlOmZ1bmN0aW9uKHgpe3JldHVybiB4PT09aWV9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hYi5zaXplfSxjbGVhcjpmdW5jdGlvbigpe2IuY2xlYXIoKSxzZS5jbGVhcigpLGllPXZvaWQgMH0sYWRkOmZ1bmN0aW9uKHgsWCwkLEEseSxWLEwsUCl7eCE9PWllJiYoUi5jbGVhcigpLGllPXgpO3ZhciBrO2lmKHkpe3ZhciBZPWUuZ2V0Tm9kZU1vZHVsZVBhdGhQYXJ0cyh5LmZpbGVOYW1lKTtpZihZKXt2YXIgVT1ZLnRvcExldmVsTm9kZU1vZHVsZXNJbmRleCxqPVkudG9wTGV2ZWxQYWNrYWdlTmFtZUluZGV4LEg9WS5wYWNrYWdlUm9vdEluZGV4O2lmKGs9ZS51bm1hbmdsZVNjb3BlZFBhY2thZ2VOYW1lKGUuZ2V0UGFja2FnZU5hbWVGcm9tVHlwZXNQYWNrYWdlTmFtZSh5LmZpbGVOYW1lLnN1YnN0cmluZyhqKzEsSCkpKSxlLnN0YXJ0c1dpdGgoeCx5LnBhdGguc3Vic3RyaW5nKDAsVSkpKXt2YXIgST1KLmdldChrKSxsPXkuZmlsZU5hbWUuc3Vic3RyaW5nKDAsaisxKTtpZihJKXt2YXIgZD1JLmluZGV4T2YoZS5ub2RlTW9kdWxlc1BhdGhQYXJ0KTtVPmQmJkouc2V0KGssbCl9ZWxzZSBKLnNldChrLGwpfX19dmFyIEQ9Vj09PTEsZmU9RCYmZS5nZXRMb2NhbFN5bWJvbEZvckV4cG9ydERlZmF1bHQoWCl8fFgsZz1WPT09MHx8ZS5pc0V4dGVybmFsTW9kdWxlU3ltYm9sKGZlKT9lLnVuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKCQpOmUuZ2V0TmFtZXNGb3JFeHBvcnRlZFN5bWJvbChmZSx2b2lkIDApLG5lPXR5cGVvZiBnPT1cInN0cmluZ1wiP2c6Z1swXSx1ZT10eXBlb2YgZz09XCJzdHJpbmdcIj92b2lkIDA6Z1sxXSxXZT1lLnN0cmlwUXVvdGVzKEEubmFtZSksRmU9SysrLFo9ZS5za2lwQWxpYXMoWCxQKSxCZT1YLmZsYWdzJjMzNTU0NDMyP3ZvaWQgMDpYLGdlPUEuZmxhZ3MmMzM1NTQ0MzI/dm9pZCAwOkE7KCFCZXx8IWdlKSYmc2Uuc2V0KEZlLFtYLEFdKSxiLmFkZChPKG5lLFgsZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKFdlKT92b2lkIDA6V2UsUCkse2lkOkZlLHN5bWJvbFRhYmxlS2V5OiQsc3ltYm9sTmFtZTpuZSxjYXBpdGFsaXplZFN5bWJvbE5hbWU6dWUsbW9kdWxlTmFtZTpXZSxtb2R1bGVGaWxlOnksbW9kdWxlRmlsZU5hbWU6eT09bnVsbD92b2lkIDA6eS5maWxlTmFtZSxwYWNrYWdlTmFtZTprLGV4cG9ydEtpbmQ6Vix0YXJnZXRGbGFnczpaLmZsYWdzLGlzRnJvbVBhY2thZ2VKc29uOkwsc3ltYm9sOkJlLG1vZHVsZVN5bWJvbDpnZX0pfSxnZXQ6ZnVuY3Rpb24oeCxYKXtpZih4PT09aWUpe3ZhciAkPWIuZ2V0KFgpO3JldHVybiAkPT1udWxsP3ZvaWQgMDokLm1hcChxKX19LHNlYXJjaDpmdW5jdGlvbih4LFgsJCxBKXt4PT09aWUmJmIuZm9yRWFjaChmdW5jdGlvbih5LFYpe3ZhciBMPXZlKFYpLFA9TC5zeW1ib2xOYW1lLGs9TC5hbWJpZW50TW9kdWxlTmFtZSxZPVgmJnlbMF0uY2FwaXRhbGl6ZWRTeW1ib2xOYW1lfHxQO2lmKCQoWSx5WzBdLnRhcmdldEZsYWdzKSl7dmFyIFU9eS5tYXAocSksaj1VLmZpbHRlcihmdW5jdGlvbihILEkpe3JldHVybiBGKEgseVtJXS5wYWNrYWdlTmFtZSl9KTtqLmxlbmd0aCYmQShqLFksISFrLFYpfX0pfSxyZWxlYXNlU3ltYm9sczpmdW5jdGlvbigpe3NlLmNsZWFyKCl9LG9uRmlsZUNoYW5nZWQ6ZnVuY3Rpb24oeCxYLCQpe3JldHVybiBlZSh4KSYmZWUoWCk/ITE6aWUmJmllIT09WC5wYXRofHwkJiZlLmNvbnN1bWVzTm9kZUNvcmVNb2R1bGVzKHgpIT09ZS5jb25zdW1lc05vZGVDb3JlTW9kdWxlcyhYKXx8IWUuYXJyYXlJc0VxdWFsVG8oeC5tb2R1bGVBdWdtZW50YXRpb25zLFgubW9kdWxlQXVnbWVudGF0aW9ucyl8fCFoZSh4LFgpPyhSLmNsZWFyKCksITApOihpZT1YLnBhdGgsITEpfX07cmV0dXJuIGUuRGVidWcuaXNEZWJ1Z2dpbmcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLFwiX19jYWNoZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYn19KSxSO2Z1bmN0aW9uIHEoeCl7aWYoeC5zeW1ib2wmJngubW9kdWxlU3ltYm9sKXJldHVybiB4O3ZhciBYPXguaWQsJD14LmV4cG9ydEtpbmQsQT14LnRhcmdldEZsYWdzLHk9eC5pc0Zyb21QYWNrYWdlSnNvbixWPXgubW9kdWxlRmlsZU5hbWUsTD1zZS5nZXQoWCl8fGUuZW1wdHlBcnJheSxQPUxbMF0saz1MWzFdO2lmKFAmJmspcmV0dXJue3N5bWJvbDpQLG1vZHVsZVN5bWJvbDprLG1vZHVsZUZpbGVOYW1lOlYsZXhwb3J0S2luZDokLHRhcmdldEZsYWdzOkEsaXNGcm9tUGFja2FnZUpzb246eX07dmFyIFk9KHk/VC5nZXRQYWNrYWdlSnNvbkF1dG9JbXBvcnRQcm92aWRlcigpOlQuZ2V0Q3VycmVudFByb2dyYW0oKSkuZ2V0VHlwZUNoZWNrZXIoKSxVPXgubW9kdWxlU3ltYm9sfHxrfHxlLkRlYnVnLmNoZWNrRGVmaW5lZCh4Lm1vZHVsZUZpbGU/WS5nZXRNZXJnZWRTeW1ib2woeC5tb2R1bGVGaWxlLnN5bWJvbCk6WS50cnlGaW5kQW1iaWVudE1vZHVsZSh4Lm1vZHVsZU5hbWUpKSxqPXguc3ltYm9sfHxQfHxlLkRlYnVnLmNoZWNrRGVmaW5lZCgkPT09Mj9ZLnJlc29sdmVFeHRlcm5hbE1vZHVsZVN5bWJvbChVKTpZLnRyeUdldE1lbWJlckluTW9kdWxlRXhwb3J0c0FuZFByb3BlcnRpZXMoZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyh4LnN5bWJvbFRhYmxlS2V5KSxVKSxcIkNvdWxkIG5vdCBmaW5kIHN5bWJvbCAnXCIuY29uY2F0KHguc3ltYm9sTmFtZSxcIicgYnkga2V5ICdcIikuY29uY2F0KHguc3ltYm9sVGFibGVLZXksXCInIGluIG1vZHVsZSBcIikuY29uY2F0KFUubmFtZSkpO3JldHVybiBzZS5zZXQoWCxbaixVXSkse3N5bWJvbDpqLG1vZHVsZVN5bWJvbDpVLG1vZHVsZUZpbGVOYW1lOlYsZXhwb3J0S2luZDokLHRhcmdldEZsYWdzOkEsaXNGcm9tUGFja2FnZUpzb246eX19ZnVuY3Rpb24gTyh4LFgsJCxBKXt2YXIgeT0kfHxcIlwiO3JldHVyblwiXCIuY29uY2F0KHgsXCJ8XCIpLmNvbmNhdChlLmdldFN5bWJvbElkKGUuc2tpcEFsaWFzKFgsQSkpLFwifFwiKS5jb25jYXQoeSl9ZnVuY3Rpb24gdmUoeCl7dmFyIFg9eC5zdWJzdHJpbmcoMCx4LmluZGV4T2YoXCJ8XCIpKSwkPXguc3Vic3RyaW5nKHgubGFzdEluZGV4T2YoXCJ8XCIpKzEpLEE9JD09PVwiXCI/dm9pZCAwOiQ7cmV0dXJue3N5bWJvbE5hbWU6WCxhbWJpZW50TW9kdWxlTmFtZTpBfX1mdW5jdGlvbiBlZSh4KXtyZXR1cm4heC5jb21tb25Kc01vZHVsZUluZGljYXRvciYmIXguZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3ImJiF4Lm1vZHVsZUF1Z21lbnRhdGlvbnMmJiF4LmFtYmllbnRNb2R1bGVOYW1lc31mdW5jdGlvbiBoZSh4LFgpe2lmKCFlLmFycmF5SXNFcXVhbFRvKHguYW1iaWVudE1vZHVsZU5hbWVzLFguYW1iaWVudE1vZHVsZU5hbWVzKSlyZXR1cm4hMTtmb3IodmFyICQ9LTEsQT0tMSx5PWZ1bmN0aW9uKFkpe3ZhciBVPWZ1bmN0aW9uKGope3JldHVybiBlLmlzTm9uR2xvYmFsQW1iaWVudE1vZHVsZShqKSYmai5uYW1lLnRleHQ9PT1ZfTtpZigkPWUuZmluZEluZGV4KHguc3RhdGVtZW50cyxVLCQrMSksQT1lLmZpbmRJbmRleChYLnN0YXRlbWVudHMsVSxBKzEpLHguc3RhdGVtZW50c1skXSE9PVguc3RhdGVtZW50c1tBXSlyZXR1cm57dmFsdWU6ITF9fSxWPTAsTD1YLmFtYmllbnRNb2R1bGVOYW1lcztWPEwubGVuZ3RoO1YrKyl7dmFyIFA9TFtWXSxrPXkoUCk7aWYodHlwZW9mIGs9PVwib2JqZWN0XCIpcmV0dXJuIGsudmFsdWV9cmV0dXJuITB9ZnVuY3Rpb24gRih4LFgpe2lmKCFYfHwheC5tb2R1bGVGaWxlTmFtZSlyZXR1cm4hMDt2YXIgJD1ULmdldEdsb2JhbFR5cGluZ3NDYWNoZUxvY2F0aW9uKCk7aWYoJCYmZS5zdGFydHNXaXRoKHgubW9kdWxlRmlsZU5hbWUsJCkpcmV0dXJuITA7dmFyIEE9Si5nZXQoWCk7cmV0dXJuIUF8fGUuc3RhcnRzV2l0aCh4Lm1vZHVsZUZpbGVOYW1lLEEpfX1lLmNyZWF0ZUNhY2hlYWJsZUV4cG9ydEluZm9NYXA9dztmdW5jdGlvbiBCKFQsSyxiLHNlLEosaWUsUil7dmFyIHE7aWYoSz09PWIpcmV0dXJuITE7dmFyIE89Uj09bnVsbD92b2lkIDA6Ui5nZXQoSy5wYXRoLGIucGF0aCxzZSx7fSk7aWYoKE89PW51bGw/dm9pZCAwOk8uaXNCbG9ja2VkQnlQYWNrYWdlSnNvbkRlcGVuZGVuY2llcykhPT12b2lkIDApcmV0dXJuIU8uaXNCbG9ja2VkQnlQYWNrYWdlSnNvbkRlcGVuZGVuY2llczt2YXIgdmU9ZS5ob3N0R2V0Q2Fub25pY2FsRmlsZU5hbWUoaWUpLGVlPShxPWllLmdldEdsb2JhbFR5cGluZ3NDYWNoZUxvY2F0aW9uKT09PW51bGx8fHE9PT12b2lkIDA/dm9pZCAwOnEuY2FsbChpZSksaGU9ISFlLm1vZHVsZVNwZWNpZmllcnMuZm9yRWFjaEZpbGVOYW1lT2ZNb2R1bGUoSy5maWxlTmFtZSxiLmZpbGVOYW1lLGllLCExLGZ1bmN0aW9uKHgpe3ZhciBYPVQuZ2V0U291cmNlRmlsZSh4KTtyZXR1cm4oWD09PWJ8fCFYKSYmRShLLmZpbGVOYW1lLHgsdmUsZWUpfSk7aWYoSil7dmFyIEY9aGUmJkouYWxsb3dzSW1wb3J0aW5nU291cmNlRmlsZShiLGllKTtyZXR1cm4gUj09bnVsbHx8Ui5zZXRCbG9ja2VkQnlQYWNrYWdlSnNvbkRlcGVuZGVuY2llcyhLLnBhdGgsYi5wYXRoLHNlLHt9LCFGKSxGfXJldHVybiBoZX1lLmlzSW1wb3J0YWJsZUZpbGU9QjtmdW5jdGlvbiBFKFQsSyxiLHNlKXt2YXIgSj1lLmZvckVhY2hBbmNlc3RvckRpcmVjdG9yeShLLGZ1bmN0aW9uKFIpe3JldHVybiBlLmdldEJhc2VGaWxlTmFtZShSKT09PVwibm9kZV9tb2R1bGVzXCI/Ujp2b2lkIDB9KSxpZT1KJiZlLmdldERpcmVjdG9yeVBhdGgoYihKKSk7cmV0dXJuIGllPT09dm9pZCAwfHxlLnN0YXJ0c1dpdGgoYihUKSxpZSl8fCEhc2UmJmUuc3RhcnRzV2l0aChiKHNlKSxpZSl9ZnVuY3Rpb24gUShULEssYixzZSl7dmFyIEosaWU7bGUoVC5nZXRUeXBlQ2hlY2tlcigpLFQuZ2V0U291cmNlRmlsZXMoKSxmdW5jdGlvbihPLHZlKXtyZXR1cm4gc2UoTyx2ZSxULCExKX0pO3ZhciBSPWImJigoSj1LLmdldFBhY2thZ2VKc29uQXV0b0ltcG9ydFByb3ZpZGVyKT09PW51bGx8fEo9PT12b2lkIDA/dm9pZCAwOkouY2FsbChLKSk7aWYoUil7dmFyIHE9ZS50aW1lc3RhbXAoKTtsZShSLmdldFR5cGVDaGVja2VyKCksUi5nZXRTb3VyY2VGaWxlcygpLGZ1bmN0aW9uKE8sdmUpe3JldHVybiBzZShPLHZlLFIsITApfSksKGllPUsubG9nKT09PW51bGx8fGllPT09dm9pZCAwfHxpZS5jYWxsKEssXCJmb3JFYWNoRXh0ZXJuYWxNb2R1bGVUb0ltcG9ydEZyb20gYXV0b0ltcG9ydFByb3ZpZGVyOiBcIi5jb25jYXQoZS50aW1lc3RhbXAoKS1xKSl9fWUuZm9yRWFjaEV4dGVybmFsTW9kdWxlVG9JbXBvcnRGcm9tPVE7ZnVuY3Rpb24gbGUoVCxLLGIpe2Zvcih2YXIgc2U9MCxKPVQuZ2V0QW1iaWVudE1vZHVsZXMoKTtzZTxKLmxlbmd0aDtzZSsrKXt2YXIgaWU9SltzZV07ZS5zdHJpbmdDb250YWlucyhpZS5uYW1lLFwiKlwiKXx8YihpZSx2b2lkIDApfWZvcih2YXIgUj0wLHE9SztSPHEubGVuZ3RoO1IrKyl7dmFyIE89cVtSXTtlLmlzRXh0ZXJuYWxPckNvbW1vbkpzTW9kdWxlKE8pJiZiKFQuZ2V0TWVyZ2VkU3ltYm9sKE8uc3ltYm9sKSxPKX19ZnVuY3Rpb24gTihULEssYixzZSl7dmFyIEosaWUsUixxLE8sdmU9ZS50aW1lc3RhbXAoKTsoSj1LLmdldFBhY2thZ2VKc29uQXV0b0ltcG9ydFByb3ZpZGVyKT09PW51bGx8fEo9PT12b2lkIDB8fEouY2FsbChLKTt2YXIgZWU9KChpZT1LLmdldENhY2hlZEV4cG9ydEluZm9NYXApPT09bnVsbHx8aWU9PT12b2lkIDA/dm9pZCAwOmllLmNhbGwoSykpfHx3KHtnZXRDdXJyZW50UHJvZ3JhbTpmdW5jdGlvbigpe3JldHVybiBifSxnZXRQYWNrYWdlSnNvbkF1dG9JbXBvcnRQcm92aWRlcjpmdW5jdGlvbigpe3ZhciB4O3JldHVybih4PUsuZ2V0UGFja2FnZUpzb25BdXRvSW1wb3J0UHJvdmlkZXIpPT09bnVsbHx8eD09PXZvaWQgMD92b2lkIDA6eC5jYWxsKEspfSxnZXRHbG9iYWxUeXBpbmdzQ2FjaGVMb2NhdGlvbjpmdW5jdGlvbigpe3ZhciB4O3JldHVybih4PUsuZ2V0R2xvYmFsVHlwaW5nc0NhY2hlTG9jYXRpb24pPT09bnVsbHx8eD09PXZvaWQgMD92b2lkIDA6eC5jYWxsKEspfX0pO2lmKGVlLmlzVXNhYmxlQnlGaWxlKFQucGF0aCkpcmV0dXJuKFI9Sy5sb2cpPT09bnVsbHx8Uj09PXZvaWQgMHx8Ui5jYWxsKEssXCJnZXRFeHBvcnRJbmZvTWFwOiBjYWNoZSBoaXRcIiksZWU7KHE9Sy5sb2cpPT09bnVsbHx8cT09PXZvaWQgMHx8cS5jYWxsKEssXCJnZXRFeHBvcnRJbmZvTWFwOiBjYWNoZSBtaXNzIG9yIGVtcHR5OyBjYWxjdWxhdGluZyBuZXcgcmVzdWx0c1wiKTt2YXIgaGU9Yi5nZXRDb21waWxlck9wdGlvbnMoKSxGPTA7dHJ5e1EoYixLLCEwLGZ1bmN0aW9uKHgsWCwkLEEpeysrRiUxMDA9PT0wJiYoc2U9PW51bGx8fHNlLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKSk7dmFyIHk9bmV3IGUuTWFwLFY9JC5nZXRUeXBlQ2hlY2tlcigpLEw9cCh4LFYsaGUpO0wmJm0oTC5zeW1ib2wsVikmJmVlLmFkZChULnBhdGgsTC5zeW1ib2wsTC5leHBvcnRLaW5kPT09MT9cImRlZmF1bHRcIjpcImV4cG9ydD1cIix4LFgsTC5leHBvcnRLaW5kLEEsViksVi5mb3JFYWNoRXhwb3J0QW5kUHJvcGVydHlPZk1vZHVsZSh4LGZ1bmN0aW9uKFAsayl7UCE9PShMPT1udWxsP3ZvaWQgMDpMLnN5bWJvbCkmJm0oUCxWKSYmZS5hZGRUb1NlZW4oeSxrKSYmZWUuYWRkKFQucGF0aCxQLGsseCxYLDAsQSxWKX0pfSl9Y2F0Y2goeCl7dGhyb3cgZWUuY2xlYXIoKSx4fXJldHVybihPPUsubG9nKT09PW51bGx8fE89PT12b2lkIDB8fE8uY2FsbChLLFwiZ2V0RXhwb3J0SW5mb01hcDogZG9uZSBpbiBcIi5jb25jYXQoZS50aW1lc3RhbXAoKS12ZSxcIiBtc1wiKSksZWV9ZS5nZXRFeHBvcnRJbmZvTWFwPU47ZnVuY3Rpb24gcChULEssYil7dmFyIHNlPUcoVCxLKTtpZighIXNlKXt2YXIgSj1zZS5zeW1ib2wsaWU9c2UuZXhwb3J0S2luZCxSPW9lKEosSyxiKTtyZXR1cm4gUiYmS2Uoe3N5bWJvbDpKLGV4cG9ydEtpbmQ6aWV9LFIpfX1lLmdldERlZmF1bHRMaWtlRXhwb3J0SW5mbz1wO2Z1bmN0aW9uIG0oVCxLKXtyZXR1cm4hSy5pc1VuZGVmaW5lZFN5bWJvbChUKSYmIUsuaXNVbmtub3duU3ltYm9sKFQpJiYhZS5pc0tub3duU3ltYm9sKFQpJiYhZS5pc1ByaXZhdGVJZGVudGlmaWVyU3ltYm9sKFQpfWZ1bmN0aW9uIEcoVCxLKXt2YXIgYj1LLnJlc29sdmVFeHRlcm5hbE1vZHVsZVN5bWJvbChUKTtpZihiIT09VClyZXR1cm57c3ltYm9sOmIsZXhwb3J0S2luZDoyfTt2YXIgc2U9Sy50cnlHZXRNZW1iZXJJbk1vZHVsZUV4cG9ydHMoXCJkZWZhdWx0XCIsVCk7aWYoc2UpcmV0dXJue3N5bWJvbDpzZSxleHBvcnRLaW5kOjF9fWZ1bmN0aW9uIG9lKFQsSyxiKXt2YXIgc2U9ZS5nZXRMb2NhbFN5bWJvbEZvckV4cG9ydERlZmF1bHQoVCk7aWYoc2UpcmV0dXJue3N5bWJvbEZvck1lYW5pbmc6c2UsbmFtZTpzZS5uYW1lfTt2YXIgSj1mKFQpO2lmKEohPT12b2lkIDApcmV0dXJue3N5bWJvbEZvck1lYW5pbmc6VCxuYW1lOkp9O2lmKFQuZmxhZ3MmMjA5NzE1Mil7dmFyIGllPUsuZ2V0SW1tZWRpYXRlQWxpYXNlZFN5bWJvbChUKTtpZihpZSYmaWUucGFyZW50KXJldHVybiBvZShpZSxLLGIpfXJldHVybiBULmVzY2FwZWROYW1lIT09XCJkZWZhdWx0XCImJlQuZXNjYXBlZE5hbWUhPT1cImV4cG9ydD1cIj97c3ltYm9sRm9yTWVhbmluZzpULG5hbWU6VC5nZXROYW1lKCl9OntzeW1ib2xGb3JNZWFuaW5nOlQsbmFtZTplLmdldE5hbWVGb3JFeHBvcnRlZFN5bWJvbChULGIudGFyZ2V0KX19ZnVuY3Rpb24gZihUKXtyZXR1cm4gVC5kZWNsYXJhdGlvbnMmJmUuZmlyc3REZWZpbmVkKFQuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKEspe3ZhciBiO2lmKGUuaXNFeHBvcnRBc3NpZ25tZW50KEspKXJldHVybihiPWUudHJ5Q2FzdChlLnNraXBPdXRlckV4cHJlc3Npb25zKEsuZXhwcmVzc2lvbiksZS5pc0lkZW50aWZpZXIpKT09PW51bGx8fGI9PT12b2lkIDA/dm9pZCAwOmIudGV4dDtpZihlLmlzRXhwb3J0U3BlY2lmaWVyKEspKXJldHVybiBlLkRlYnVnLmFzc2VydChLLm5hbWUudGV4dD09PVwiZGVmYXVsdFwiLFwiRXhwZWN0ZWQgdGhlIHNwZWNpZmllciB0byBiZSBhIGRlZmF1bHQgZXhwb3J0XCIpLEsucHJvcGVydHlOYW1lJiZLLnByb3BlcnR5TmFtZS50ZXh0fSl9fSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYSgpe3ZhciBxPWUuY3JlYXRlU2Nhbm5lcig5OSwhMSk7ZnVuY3Rpb24gTyhlZSxoZSxGKXtyZXR1cm4gRSh2ZShlZSxoZSxGKSxlZSl9ZnVuY3Rpb24gdmUoZWUsaGUsRil7dmFyIHg9MCxYPTAsJD1bXSxBPU4oaGUpLHk9QS5wcmVmaXgsVj1BLnB1c2hUZW1wbGF0ZTtlZT15K2VlO3ZhciBMPXkubGVuZ3RoO1YmJiQucHVzaCgxNSkscS5zZXRUZXh0KGVlKTt2YXIgUD0wLGs9W10sWT0wO2Rve3g9cS5zY2FuKCksZS5pc1RyaXZpYSh4KXx8KEgoKSxYPXgpO3ZhciBVPXEuZ2V0VGV4dFBvcygpO2lmKEIocS5nZXRUb2tlblBvcygpLFUsTCxHKHgpLGspLFU+PWVlLmxlbmd0aCl7dmFyIGo9dyhxLHgsZS5sYXN0T3JVbmRlZmluZWQoJCkpO2ohPT12b2lkIDAmJihQPWopfX13aGlsZSh4IT09MSk7ZnVuY3Rpb24gSCgpe3N3aXRjaCh4KXtjYXNlIDQzOmNhc2UgNjg6IUNbWF0mJnEucmVTY2FuU2xhc2hUb2tlbigpPT09MTMmJih4PTEzKTticmVhaztjYXNlIDI5Olg9PT03OSYmWSsrO2JyZWFrO2Nhc2UgMzE6WT4wJiZZLS07YnJlYWs7Y2FzZSAxMzA6Y2FzZSAxNTA6Y2FzZSAxNDc6Y2FzZSAxMzM6Y2FzZSAxNTE6WT4wJiYhRiYmKHg9NzkpO2JyZWFrO2Nhc2UgMTU6JC5wdXNoKHgpO2JyZWFrO2Nhc2UgMTg6JC5sZW5ndGg+MCYmJC5wdXNoKHgpO2JyZWFrO2Nhc2UgMTk6aWYoJC5sZW5ndGg+MCl7dmFyIEk9ZS5sYXN0T3JVbmRlZmluZWQoJCk7ST09PTE1Pyh4PXEucmVTY2FuVGVtcGxhdGVUb2tlbighMSkseD09PTE3PyQucG9wKCk6ZS5EZWJ1Zy5hc3NlcnRFcXVhbCh4LDE2LFwiU2hvdWxkIGhhdmUgYmVlbiBhIHRlbXBsYXRlIG1pZGRsZS5cIikpOihlLkRlYnVnLmFzc2VydEVxdWFsKEksMTgsXCJTaG91bGQgaGF2ZSBiZWVuIGFuIG9wZW4gYnJhY2VcIiksJC5wb3AoKSl9YnJlYWs7ZGVmYXVsdDppZighZS5pc0tleXdvcmQoeCkpYnJlYWs7KFg9PT0yNHx8ZS5pc0tleXdvcmQoWCkmJmUuaXNLZXl3b3JkKHgpJiYhbGUoWCx4KSkmJih4PTc5KX19cmV0dXJue2VuZE9mTGluZVN0YXRlOlAsc3BhbnM6a319cmV0dXJue2dldENsYXNzaWZpY2F0aW9uc0ZvckxpbmU6TyxnZXRFbmNvZGVkTGV4aWNhbENsYXNzaWZpY2F0aW9uczp2ZX19ZS5jcmVhdGVDbGFzc2lmaWVyPWE7dmFyIEM9ZS5hcnJheVRvTnVtZXJpY01hcChbNzksMTAsOCw5LDEzLDEwOCw0NSw0NiwyMSwyMywxOSwxMTAsOTVdLGZ1bmN0aW9uKHEpe3JldHVybiBxfSxmdW5jdGlvbigpe3JldHVybiEwfSk7ZnVuY3Rpb24gdyhxLE8sdmUpe3N3aXRjaChPKXtjYXNlIDEwOntpZighcS5pc1VudGVybWluYXRlZCgpKXJldHVybjtmb3IodmFyIGVlPXEuZ2V0VG9rZW5UZXh0KCksaGU9ZWUubGVuZ3RoLTEsRj0wO2VlLmNoYXJDb2RlQXQoaGUtRik9PT05MjspRisrO3JldHVybihGJjEpPT09MD92b2lkIDA6ZWUuY2hhckNvZGVBdCgwKT09PTM0PzM6Mn1jYXNlIDM6cmV0dXJuIHEuaXNVbnRlcm1pbmF0ZWQoKT8xOnZvaWQgMDtkZWZhdWx0OmlmKGUuaXNUZW1wbGF0ZUxpdGVyYWxLaW5kKE8pKXtpZighcS5pc1VudGVybWluYXRlZCgpKXJldHVybjtzd2l0Y2goTyl7Y2FzZSAxNzpyZXR1cm4gNTtjYXNlIDE0OnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbChcIk9ubHkgJ05vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsJ3MgYW5kICdUZW1wbGF0ZVRhaWwncyBjYW4gYmUgdW50ZXJtaW5hdGVkOyBnb3QgU3ludGF4S2luZCAjXCIrTyl9fXJldHVybiB2ZT09PTE1PzY6dm9pZCAwfX1mdW5jdGlvbiBCKHEsTyx2ZSxlZSxoZSl7aWYoZWUhPT04KXtxPT09MCYmdmU+MCYmKHErPXZlKTt2YXIgRj1PLXE7Rj4wJiZoZS5wdXNoKHEtdmUsRixlZSl9fWZ1bmN0aW9uIEUocSxPKXtmb3IodmFyIHZlPVtdLGVlPXEuc3BhbnMsaGU9MCxGPTA7RjxlZS5sZW5ndGg7Ris9Myl7dmFyIHg9ZWVbRl0sWD1lZVtGKzFdLCQ9ZWVbRisyXTtpZihoZT49MCl7dmFyIEE9eC1oZTtBPjAmJnZlLnB1c2goe2xlbmd0aDpBLGNsYXNzaWZpY2F0aW9uOmUuVG9rZW5DbGFzcy5XaGl0ZXNwYWNlfSl9dmUucHVzaCh7bGVuZ3RoOlgsY2xhc3NpZmljYXRpb246USgkKX0pLGhlPXgrWH12YXIgeT1PLmxlbmd0aC1oZTtyZXR1cm4geT4wJiZ2ZS5wdXNoKHtsZW5ndGg6eSxjbGFzc2lmaWNhdGlvbjplLlRva2VuQ2xhc3MuV2hpdGVzcGFjZX0pLHtlbnRyaWVzOnZlLGZpbmFsTGV4U3RhdGU6cS5lbmRPZkxpbmVTdGF0ZX19ZnVuY3Rpb24gUShxKXtzd2l0Y2gocSl7Y2FzZSAxOnJldHVybiBlLlRva2VuQ2xhc3MuQ29tbWVudDtjYXNlIDM6cmV0dXJuIGUuVG9rZW5DbGFzcy5LZXl3b3JkO2Nhc2UgNDpyZXR1cm4gZS5Ub2tlbkNsYXNzLk51bWJlckxpdGVyYWw7Y2FzZSAyNTpyZXR1cm4gZS5Ub2tlbkNsYXNzLkJpZ0ludExpdGVyYWw7Y2FzZSA1OnJldHVybiBlLlRva2VuQ2xhc3MuT3BlcmF0b3I7Y2FzZSA2OnJldHVybiBlLlRva2VuQ2xhc3MuU3RyaW5nTGl0ZXJhbDtjYXNlIDg6cmV0dXJuIGUuVG9rZW5DbGFzcy5XaGl0ZXNwYWNlO2Nhc2UgMTA6cmV0dXJuIGUuVG9rZW5DbGFzcy5QdW5jdHVhdGlvbjtjYXNlIDI6Y2FzZSAxMTpjYXNlIDEyOmNhc2UgMTM6Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMTY6Y2FzZSA5OmNhc2UgMTc6cmV0dXJuIGUuVG9rZW5DbGFzcy5JZGVudGlmaWVyO2RlZmF1bHQ6cmV0dXJufX1mdW5jdGlvbiBsZShxLE8pe2lmKCFlLmlzQWNjZXNzaWJpbGl0eU1vZGlmaWVyKHEpKXJldHVybiEwO3N3aXRjaChPKXtjYXNlIDEzNjpjYXNlIDE0OTpjYXNlIDEzNDpjYXNlIDEyNDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBOKHEpe3N3aXRjaChxKXtjYXNlIDM6cmV0dXJue3ByZWZpeDpgXCJcXFxcXG5gfTtjYXNlIDI6cmV0dXJue3ByZWZpeDpgJ1xcXFxcbmB9O2Nhc2UgMTpyZXR1cm57cHJlZml4OmAvKlxuYH07Y2FzZSA0OnJldHVybntwcmVmaXg6XCJgXFxuXCJ9O2Nhc2UgNTpyZXR1cm57cHJlZml4OmB9XG5gLHB1c2hUZW1wbGF0ZTohMH07Y2FzZSA2OnJldHVybntwcmVmaXg6XCJcIixwdXNoVGVtcGxhdGU6ITB9O2Nhc2UgMDpyZXR1cm57cHJlZml4OlwiXCJ9O2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIocSl9fWZ1bmN0aW9uIHAocSl7c3dpdGNoKHEpe2Nhc2UgNDE6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDQ3OmNhc2UgNDg6Y2FzZSA0OTpjYXNlIDI5OmNhc2UgMzE6Y2FzZSAzMjpjYXNlIDMzOmNhc2UgMTAyOmNhc2UgMTAxOmNhc2UgMTI3OmNhc2UgMzQ6Y2FzZSAzNTpjYXNlIDM2OmNhc2UgMzc6Y2FzZSA1MDpjYXNlIDUyOmNhc2UgNTE6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNzQ6Y2FzZSA3MzpjYXNlIDc4OmNhc2UgNzA6Y2FzZSA3MTpjYXNlIDcyOmNhc2UgNjQ6Y2FzZSA2NTpjYXNlIDY2OmNhc2UgNjg6Y2FzZSA2OTpjYXNlIDYzOmNhc2UgMjc6Y2FzZSA2MDpjYXNlIDc1OmNhc2UgNzY6Y2FzZSA3NzpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBtKHEpe3N3aXRjaChxKXtjYXNlIDM5OmNhc2UgNDA6Y2FzZSA1NDpjYXNlIDUzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBHKHEpe2lmKGUuaXNLZXl3b3JkKHEpKXJldHVybiAzO2lmKHAocSl8fG0ocSkpcmV0dXJuIDU7aWYocT49MTgmJnE8PTc4KXJldHVybiAxMDtzd2l0Y2gocSl7Y2FzZSA4OnJldHVybiA0O2Nhc2UgOTpyZXR1cm4gMjU7Y2FzZSAxMDpyZXR1cm4gNjtjYXNlIDEzOnJldHVybiA3O2Nhc2UgNzpjYXNlIDM6Y2FzZSAyOnJldHVybiAxO2Nhc2UgNTpjYXNlIDQ6cmV0dXJuIDg7Y2FzZSA3OTpkZWZhdWx0OnJldHVybiBlLmlzVGVtcGxhdGVMaXRlcmFsS2luZChxKT82OjJ9fWZ1bmN0aW9uIG9lKHEsTyx2ZSxlZSxoZSl7cmV0dXJuIEooVChxLE8sdmUsZWUsaGUpKX1lLmdldFNlbWFudGljQ2xhc3NpZmljYXRpb25zPW9lO2Z1bmN0aW9uIGYocSxPKXtzd2l0Y2goTyl7Y2FzZSAyNjE6Y2FzZSAyNTc6Y2FzZSAyNTg6Y2FzZSAyNTY6Y2FzZSAyMjY6Y2FzZSAyMTM6Y2FzZSAyMTQ6cS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl9fWZ1bmN0aW9uIFQocSxPLHZlLGVlLGhlKXt2YXIgRj1bXTtyZXR1cm4gdmUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIFgoJCl7aWYoISghJHx8IWUudGV4dFNwYW5JbnRlcnNlY3RzV2l0aChoZSwkLnBvcywkLmdldEZ1bGxXaWR0aCgpKSkpe2lmKGYoTywkLmtpbmQpLGUuaXNJZGVudGlmaWVyKCQpJiYhZS5ub2RlSXNNaXNzaW5nKCQpJiZlZS5oYXMoJC5lc2NhcGVkVGV4dCkpe3ZhciBBPXEuZ2V0U3ltYm9sQXRMb2NhdGlvbigkKSx5PUEmJksoQSxlLmdldE1lYW5pbmdGcm9tTG9jYXRpb24oJCkscSk7eSYmeCgkLmdldFN0YXJ0KHZlKSwkLmdldEVuZCgpLHkpfSQuZm9yRWFjaENoaWxkKFgpfX0pLHtzcGFuczpGLGVuZE9mTGluZVN0YXRlOjB9O2Z1bmN0aW9uIHgoWCwkLEEpe3ZhciB5PSQtWDtlLkRlYnVnLmFzc2VydCh5PjAsXCJDbGFzc2lmaWNhdGlvbiBoYWQgbm9uLXBvc2l0aXZlIGxlbmd0aCBvZiBcIi5jb25jYXQoeSkpLEYucHVzaChYKSxGLnB1c2goeSksRi5wdXNoKEEpfX1lLmdldEVuY29kZWRTZW1hbnRpY0NsYXNzaWZpY2F0aW9ucz1UO2Z1bmN0aW9uIEsocSxPLHZlKXt2YXIgZWU9cS5nZXRGbGFncygpO2lmKChlZSYyODg1NjAwKSE9PTApcmV0dXJuIGVlJjMyPzExOmVlJjM4ND8xMjplZSY1MjQyODg/MTY6ZWUmMTUzNj9PJjR8fE8mMSYmYihxKT8xNDp2b2lkIDA6ZWUmMjA5NzE1Mj9LKHZlLmdldEFsaWFzZWRTeW1ib2wocSksTyx2ZSk6TyYyP2VlJjY0PzEzOmVlJjI2MjE0ND8xNTp2b2lkIDA6dm9pZCAwfWZ1bmN0aW9uIGIocSl7cmV0dXJuIGUuc29tZShxLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihPKXtyZXR1cm4gZS5pc01vZHVsZURlY2xhcmF0aW9uKE8pJiZlLmdldE1vZHVsZUluc3RhbmNlU3RhdGUoTyk9PT0xfSl9ZnVuY3Rpb24gc2UocSl7c3dpdGNoKHEpe2Nhc2UgMTpyZXR1cm5cImNvbW1lbnRcIjtjYXNlIDI6cmV0dXJuXCJpZGVudGlmaWVyXCI7Y2FzZSAzOnJldHVyblwia2V5d29yZFwiO2Nhc2UgNDpyZXR1cm5cIm51bWJlclwiO2Nhc2UgMjU6cmV0dXJuXCJiaWdpbnRcIjtjYXNlIDU6cmV0dXJuXCJvcGVyYXRvclwiO2Nhc2UgNjpyZXR1cm5cInN0cmluZ1wiO2Nhc2UgODpyZXR1cm5cIndoaXRlc3BhY2VcIjtjYXNlIDk6cmV0dXJuXCJ0ZXh0XCI7Y2FzZSAxMDpyZXR1cm5cInB1bmN0dWF0aW9uXCI7Y2FzZSAxMTpyZXR1cm5cImNsYXNzIG5hbWVcIjtjYXNlIDEyOnJldHVyblwiZW51bSBuYW1lXCI7Y2FzZSAxMzpyZXR1cm5cImludGVyZmFjZSBuYW1lXCI7Y2FzZSAxNDpyZXR1cm5cIm1vZHVsZSBuYW1lXCI7Y2FzZSAxNTpyZXR1cm5cInR5cGUgcGFyYW1ldGVyIG5hbWVcIjtjYXNlIDE2OnJldHVyblwidHlwZSBhbGlhcyBuYW1lXCI7Y2FzZSAxNzpyZXR1cm5cInBhcmFtZXRlciBuYW1lXCI7Y2FzZSAxODpyZXR1cm5cImRvYyBjb21tZW50IHRhZyBuYW1lXCI7Y2FzZSAxOTpyZXR1cm5cImpzeCBvcGVuIHRhZyBuYW1lXCI7Y2FzZSAyMDpyZXR1cm5cImpzeCBjbG9zZSB0YWcgbmFtZVwiO2Nhc2UgMjE6cmV0dXJuXCJqc3ggc2VsZiBjbG9zaW5nIHRhZyBuYW1lXCI7Y2FzZSAyMjpyZXR1cm5cImpzeCBhdHRyaWJ1dGVcIjtjYXNlIDIzOnJldHVyblwianN4IHRleHRcIjtjYXNlIDI0OnJldHVyblwianN4IGF0dHJpYnV0ZSBzdHJpbmcgbGl0ZXJhbCB2YWx1ZVwiO2RlZmF1bHQ6cmV0dXJufX1mdW5jdGlvbiBKKHEpe2UuRGVidWcuYXNzZXJ0KHEuc3BhbnMubGVuZ3RoJTM9PT0wKTtmb3IodmFyIE89cS5zcGFucyx2ZT1bXSxlZT0wO2VlPE8ubGVuZ3RoO2VlKz0zKXZlLnB1c2goe3RleHRTcGFuOmUuY3JlYXRlVGV4dFNwYW4oT1tlZV0sT1tlZSsxXSksY2xhc3NpZmljYXRpb25UeXBlOnNlKE9bZWUrMl0pfSk7cmV0dXJuIHZlfWZ1bmN0aW9uIGllKHEsTyx2ZSl7cmV0dXJuIEooUihxLE8sdmUpKX1lLmdldFN5bnRhY3RpY0NsYXNzaWZpY2F0aW9ucz1pZTtmdW5jdGlvbiBSKHEsTyx2ZSl7dmFyIGVlPXZlLnN0YXJ0LGhlPXZlLmxlbmd0aCxGPWUuY3JlYXRlU2Nhbm5lcig5OSwhMSxPLmxhbmd1YWdlVmFyaWFudCxPLnRleHQpLHg9ZS5jcmVhdGVTY2FubmVyKDk5LCExLE8ubGFuZ3VhZ2VWYXJpYW50LE8udGV4dCksWD1bXTtyZXR1cm4gbChPKSx7c3BhbnM6WCxlbmRPZkxpbmVTdGF0ZTowfTtmdW5jdGlvbiAkKGQsRCxmZSl7WC5wdXNoKGQpLFgucHVzaChEKSxYLnB1c2goZmUpfWZ1bmN0aW9uIEEoZCl7Zm9yKEYuc2V0VGV4dFBvcyhkLnBvcyk7Oyl7dmFyIEQ9Ri5nZXRUZXh0UG9zKCk7aWYoIWUuY291bGRTdGFydFRyaXZpYShPLnRleHQsRCkpcmV0dXJuIEQ7dmFyIGZlPUYuc2NhbigpLGc9Ri5nZXRUZXh0UG9zKCksbmU9Zy1EO2lmKCFlLmlzVHJpdmlhKGZlKSlyZXR1cm4gRDtzd2l0Y2goZmUpe2Nhc2UgNDpjYXNlIDU6Y29udGludWU7Y2FzZSAyOmNhc2UgMzp5KGQsZmUsRCxuZSksRi5zZXRUZXh0UG9zKGcpO2NvbnRpbnVlO2Nhc2UgNzp2YXIgdWU9Ty50ZXh0LFdlPXVlLmNoYXJDb2RlQXQoRCk7aWYoV2U9PT02MHx8V2U9PT02Mil7JChELG5lLDEpO2NvbnRpbnVlfWUuRGVidWcuYXNzZXJ0KFdlPT09MTI0fHxXZT09PTYxKSxZKHVlLEQsZyk7YnJlYWs7Y2FzZSA2OmJyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnROZXZlcihmZSl9fX1mdW5jdGlvbiB5KGQsRCxmZSxnKXtpZihEPT09Myl7dmFyIG5lPWUucGFyc2VJc29sYXRlZEpTRG9jQ29tbWVudChPLnRleHQsZmUsZyk7aWYobmUmJm5lLmpzRG9jKXtlLnNldFBhcmVudChuZS5qc0RvYyxkKSxMKG5lLmpzRG9jKTtyZXR1cm59fWVsc2UgaWYoRD09PTImJlAoZmUsZykpcmV0dXJuO1YoZmUsZyl9ZnVuY3Rpb24gVihkLEQpeyQoZCxELDEpfWZ1bmN0aW9uIEwoZCl7dmFyIEQsZmUsZyxuZSx1ZSxXZSxGZSxaPWQucG9zO2lmKGQudGFncylmb3IodmFyIEJlPTAsZ2U9ZC50YWdzO0JlPGdlLmxlbmd0aDtCZSsrKXt2YXIgUmU9Z2VbQmVdO1JlLnBvcyE9PVomJlYoWixSZS5wb3MtWiksJChSZS5wb3MsMSwxMCksJChSZS50YWdOYW1lLnBvcyxSZS50YWdOYW1lLmVuZC1SZS50YWdOYW1lLnBvcywxOCksWj1SZS50YWdOYW1lLmVuZDt2YXIgemU9UmUudGFnTmFtZS5lbmQ7c3dpdGNoKFJlLmtpbmQpe2Nhc2UgMzQwOnZhciBFZT1SZTtJZShFZSksemU9RWUuaXNOYW1lRmlyc3QmJigoRD1FZS50eXBlRXhwcmVzc2lvbik9PT1udWxsfHxEPT09dm9pZCAwP3ZvaWQgMDpELmVuZCl8fEVlLm5hbWUuZW5kO2JyZWFrO2Nhc2UgMzQ3OnZhciBIZT1SZTt6ZT1IZS5pc05hbWVGaXJzdCYmKChmZT1IZS50eXBlRXhwcmVzc2lvbik9PT1udWxsfHxmZT09PXZvaWQgMD92b2lkIDA6ZmUuZW5kKXx8SGUubmFtZS5lbmQ7YnJlYWs7Y2FzZSAzNDQ6ayhSZSksWj1SZS5lbmQsemU9UmUudHlwZVBhcmFtZXRlcnMuZW5kO2JyZWFrO2Nhc2UgMzQ1OnZhciBycj1SZTt6ZT0oKGc9cnIudHlwZUV4cHJlc3Npb24pPT09bnVsbHx8Zz09PXZvaWQgMD92b2lkIDA6Zy5raW5kKT09PTMwOSYmKChuZT1yci5mdWxsTmFtZSk9PT1udWxsfHxuZT09PXZvaWQgMD92b2lkIDA6bmUuZW5kKXx8KCh1ZT1yci50eXBlRXhwcmVzc2lvbik9PT1udWxsfHx1ZT09PXZvaWQgMD92b2lkIDA6dWUuZW5kKXx8emU7YnJlYWs7Y2FzZSAzMzg6emU9UmUudHlwZUV4cHJlc3Npb24uZW5kO2JyZWFrO2Nhc2UgMzQzOmwoUmUudHlwZUV4cHJlc3Npb24pLFo9UmUuZW5kLHplPVJlLnR5cGVFeHByZXNzaW9uLmVuZDticmVhaztjYXNlIDM0MjpjYXNlIDMzOTp6ZT1SZS50eXBlRXhwcmVzc2lvbi5lbmQ7YnJlYWs7Y2FzZSAzNDE6bChSZS50eXBlRXhwcmVzc2lvbiksWj1SZS5lbmQsemU9KChXZT1SZS50eXBlRXhwcmVzc2lvbik9PT1udWxsfHxXZT09PXZvaWQgMD92b2lkIDA6V2UuZW5kKXx8emU7YnJlYWs7Y2FzZSAzNDY6emU9KChGZT1SZS5uYW1lKT09PW51bGx8fEZlPT09dm9pZCAwP3ZvaWQgMDpGZS5lbmQpfHx6ZTticmVhaztjYXNlIDMyODpjYXNlIDMyOTp6ZT1SZS5jbGFzcy5lbmQ7YnJlYWt9dHlwZW9mIFJlLmNvbW1lbnQ9PVwib2JqZWN0XCI/VihSZS5jb21tZW50LnBvcyxSZS5jb21tZW50LmVuZC1SZS5jb21tZW50LnBvcyk6dHlwZW9mIFJlLmNvbW1lbnQ9PVwic3RyaW5nXCImJlYoemUsUmUuZW5kLXplKX1aIT09ZC5lbmQmJlYoWixkLmVuZC1aKTtyZXR1cm47ZnVuY3Rpb24gSWUoX2Upe19lLmlzTmFtZUZpcnN0JiYoVihaLF9lLm5hbWUucG9zLVopLCQoX2UubmFtZS5wb3MsX2UubmFtZS5lbmQtX2UubmFtZS5wb3MsMTcpLFo9X2UubmFtZS5lbmQpLF9lLnR5cGVFeHByZXNzaW9uJiYoVihaLF9lLnR5cGVFeHByZXNzaW9uLnBvcy1aKSxsKF9lLnR5cGVFeHByZXNzaW9uKSxaPV9lLnR5cGVFeHByZXNzaW9uLmVuZCksX2UuaXNOYW1lRmlyc3R8fChWKFosX2UubmFtZS5wb3MtWiksJChfZS5uYW1lLnBvcyxfZS5uYW1lLmVuZC1fZS5uYW1lLnBvcywxNyksWj1fZS5uYW1lLmVuZCl9fWZ1bmN0aW9uIFAoZCxEKXt2YXIgZmU9L14oXFwvXFwvXFwvXFxzKikoPCkoPzooXFxTKykoKD86W14vXXxcXC9bXj5dKSopKFxcLz4pPyk/L2ltLGc9LyhcXHMpKFxcUyspKFxccyopKD0pKFxccyopKCdbXiddKyd8XCJbXlwiXStcIikvaW1nLG5lPU8udGV4dC5zdWJzdHIoZCxEKSx1ZT1mZS5leGVjKG5lKTtpZighdWV8fCF1ZVszXXx8ISh1ZVszXWluIGUuY29tbWVudFByYWdtYXMpKXJldHVybiExO3ZhciBXZT1kO1YoV2UsdWVbMV0ubGVuZ3RoKSxXZSs9dWVbMV0ubGVuZ3RoLCQoV2UsdWVbMl0ubGVuZ3RoLDEwKSxXZSs9dWVbMl0ubGVuZ3RoLCQoV2UsdWVbM10ubGVuZ3RoLDIxKSxXZSs9dWVbM10ubGVuZ3RoO2Zvcih2YXIgRmU9dWVbNF0sWj1XZTs7KXt2YXIgQmU9Zy5leGVjKEZlKTtpZighQmUpYnJlYWs7dmFyIGdlPVdlK0JlLmluZGV4K0JlWzFdLmxlbmd0aDtnZT5aJiYoVihaLGdlLVopLFo9Z2UpLCQoWixCZVsyXS5sZW5ndGgsMjIpLForPUJlWzJdLmxlbmd0aCxCZVszXS5sZW5ndGgmJihWKFosQmVbM10ubGVuZ3RoKSxaKz1CZVszXS5sZW5ndGgpLCQoWixCZVs0XS5sZW5ndGgsNSksWis9QmVbNF0ubGVuZ3RoLEJlWzVdLmxlbmd0aCYmKFYoWixCZVs1XS5sZW5ndGgpLForPUJlWzVdLmxlbmd0aCksJChaLEJlWzZdLmxlbmd0aCwyNCksWis9QmVbNl0ubGVuZ3RofVdlKz11ZVs0XS5sZW5ndGgsV2U+WiYmVihaLFdlLVopLHVlWzVdJiYoJChXZSx1ZVs1XS5sZW5ndGgsMTApLFdlKz11ZVs1XS5sZW5ndGgpO3ZhciBSZT1kK0Q7cmV0dXJuIFdlPFJlJiZWKFdlLFJlLVdlKSwhMH1mdW5jdGlvbiBrKGQpe2Zvcih2YXIgRD0wLGZlPWQuZ2V0Q2hpbGRyZW4oKTtEPGZlLmxlbmd0aDtEKyspe3ZhciBnPWZlW0RdO2woZyl9fWZ1bmN0aW9uIFkoZCxELGZlKXt2YXIgZztmb3IoZz1EO2c8ZmUmJiFlLmlzTGluZUJyZWFrKGQuY2hhckNvZGVBdChnKSk7ZysrKTtmb3IoJChELGctRCwxKSx4LnNldFRleHRQb3MoZyk7eC5nZXRUZXh0UG9zKCk8ZmU7KVUoKX1mdW5jdGlvbiBVKCl7dmFyIGQ9eC5nZXRUZXh0UG9zKCksRD14LnNjYW4oKSxmZT14LmdldFRleHRQb3MoKSxnPUkoRCk7ZyYmJChkLGZlLWQsZyl9ZnVuY3Rpb24gaihkKXtpZihlLmlzSlNEb2MoZCl8fGUubm9kZUlzTWlzc2luZyhkKSlyZXR1cm4hMDt2YXIgRD1IKGQpO2lmKCFlLmlzVG9rZW4oZCkmJmQua2luZCE9PTExJiZEPT09dm9pZCAwKXJldHVybiExO3ZhciBmZT1kLmtpbmQ9PT0xMT9kLnBvczpBKGQpLGc9ZC5lbmQtZmU7aWYoZS5EZWJ1Zy5hc3NlcnQoZz49MCksZz4wKXt2YXIgbmU9RHx8SShkLmtpbmQsZCk7bmUmJiQoZmUsZyxuZSl9cmV0dXJuITB9ZnVuY3Rpb24gSChkKXtzd2l0Y2goZC5wYXJlbnQmJmQucGFyZW50LmtpbmQpe2Nhc2UgMjgwOmlmKGQucGFyZW50LnRhZ05hbWU9PT1kKXJldHVybiAxOTticmVhaztjYXNlIDI4MTppZihkLnBhcmVudC50YWdOYW1lPT09ZClyZXR1cm4gMjA7YnJlYWs7Y2FzZSAyNzk6aWYoZC5wYXJlbnQudGFnTmFtZT09PWQpcmV0dXJuIDIxO2JyZWFrO2Nhc2UgMjg1OmlmKGQucGFyZW50Lm5hbWU9PT1kKXJldHVybiAyMjticmVha319ZnVuY3Rpb24gSShkLEQpe2lmKGUuaXNLZXl3b3JkKGQpKXJldHVybiAzO2lmKChkPT09Mjl8fGQ9PT0zMSkmJkQmJmUuZ2V0VHlwZUFyZ3VtZW50T3JUeXBlUGFyYW1ldGVyTGlzdChELnBhcmVudCkpcmV0dXJuIDEwO2lmKGUuaXNQdW5jdHVhdGlvbihkKSl7aWYoRCl7dmFyIGZlPUQucGFyZW50O2lmKGQ9PT02MyYmKGZlLmtpbmQ9PT0yNTR8fGZlLmtpbmQ9PT0xNjd8fGZlLmtpbmQ9PT0xNjR8fGZlLmtpbmQ9PT0yODUpfHxmZS5raW5kPT09MjIxfHxmZS5raW5kPT09MjE5fHxmZS5raW5kPT09MjIwfHxmZS5raW5kPT09MjIyKXJldHVybiA1fXJldHVybiAxMH1lbHNle2lmKGQ9PT04KXJldHVybiA0O2lmKGQ9PT05KXJldHVybiAyNTtpZihkPT09MTApcmV0dXJuIEQmJkQucGFyZW50LmtpbmQ9PT0yODU/MjQ6NjtpZihkPT09MTMpcmV0dXJuIDY7aWYoZS5pc1RlbXBsYXRlTGl0ZXJhbEtpbmQoZCkpcmV0dXJuIDY7aWYoZD09PTExKXJldHVybiAyMztpZihkPT09Nzkpe2lmKEQpe3N3aXRjaChELnBhcmVudC5raW5kKXtjYXNlIDI1NzpyZXR1cm4gRC5wYXJlbnQubmFtZT09PUQ/MTE6dm9pZCAwO2Nhc2UgMTYzOnJldHVybiBELnBhcmVudC5uYW1lPT09RD8xNTp2b2lkIDA7Y2FzZSAyNTg6cmV0dXJuIEQucGFyZW50Lm5hbWU9PT1EPzEzOnZvaWQgMDtjYXNlIDI2MDpyZXR1cm4gRC5wYXJlbnQubmFtZT09PUQ/MTI6dm9pZCAwO2Nhc2UgMjYxOnJldHVybiBELnBhcmVudC5uYW1lPT09RD8xNDp2b2lkIDA7Y2FzZSAxNjQ6cmV0dXJuIEQucGFyZW50Lm5hbWU9PT1EP2UuaXNUaGlzSWRlbnRpZmllcihEKT8zOjE3OnZvaWQgMH1pZihlLmlzQ29uc3RUeXBlUmVmZXJlbmNlKEQucGFyZW50KSlyZXR1cm4gM31yZXR1cm4gMn19fWZ1bmN0aW9uIGwoZCl7aWYoISFkJiZlLmRlY29kZWRUZXh0U3BhbkludGVyc2VjdHNXaXRoKGVlLGhlLGQucG9zLGQuZ2V0RnVsbFdpZHRoKCkpKXtmKHEsZC5raW5kKTtmb3IodmFyIEQ9MCxmZT1kLmdldENoaWxkcmVuKE8pO0Q8ZmUubGVuZ3RoO0QrKyl7dmFyIGc9ZmVbRF07aihnKXx8bChnKX19fX1lLmdldEVuY29kZWRTeW50YWN0aWNDbGFzc2lmaWNhdGlvbnM9Un0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oQil7dmFyIEU7KGZ1bmN0aW9uKFIpe1JbUi50eXBlT2Zmc2V0PThdPVwidHlwZU9mZnNldFwiLFJbUi5tb2RpZmllck1hc2s9MjU1XT1cIm1vZGlmaWVyTWFza1wifSkoRT1CLlRva2VuRW5jb2RpbmdDb25zdHN8fChCLlRva2VuRW5jb2RpbmdDb25zdHM9e30pKTt2YXIgUTsoZnVuY3Rpb24oUil7UltSLmNsYXNzPTBdPVwiY2xhc3NcIixSW1IuZW51bT0xXT1cImVudW1cIixSW1IuaW50ZXJmYWNlPTJdPVwiaW50ZXJmYWNlXCIsUltSLm5hbWVzcGFjZT0zXT1cIm5hbWVzcGFjZVwiLFJbUi50eXBlUGFyYW1ldGVyPTRdPVwidHlwZVBhcmFtZXRlclwiLFJbUi50eXBlPTVdPVwidHlwZVwiLFJbUi5wYXJhbWV0ZXI9Nl09XCJwYXJhbWV0ZXJcIixSW1IudmFyaWFibGU9N109XCJ2YXJpYWJsZVwiLFJbUi5lbnVtTWVtYmVyPThdPVwiZW51bU1lbWJlclwiLFJbUi5wcm9wZXJ0eT05XT1cInByb3BlcnR5XCIsUltSLmZ1bmN0aW9uPTEwXT1cImZ1bmN0aW9uXCIsUltSLm1lbWJlcj0xMV09XCJtZW1iZXJcIn0pKFE9Qi5Ub2tlblR5cGV8fChCLlRva2VuVHlwZT17fSkpO3ZhciBsZTsoZnVuY3Rpb24oUil7UltSLmRlY2xhcmF0aW9uPTBdPVwiZGVjbGFyYXRpb25cIixSW1Iuc3RhdGljPTFdPVwic3RhdGljXCIsUltSLmFzeW5jPTJdPVwiYXN5bmNcIixSW1IucmVhZG9ubHk9M109XCJyZWFkb25seVwiLFJbUi5kZWZhdWx0TGlicmFyeT00XT1cImRlZmF1bHRMaWJyYXJ5XCIsUltSLmxvY2FsPTVdPVwibG9jYWxcIn0pKGxlPUIuVG9rZW5Nb2RpZmllcnx8KEIuVG9rZW5Nb2RpZmllcj17fSkpO2Z1bmN0aW9uIE4oUixxLE8sdmUpe3ZhciBlZT1wKFIscSxPLHZlKTtlLkRlYnVnLmFzc2VydChlZS5zcGFucy5sZW5ndGglMz09PTApO2Zvcih2YXIgaGU9ZWUuc3BhbnMsRj1bXSx4PTA7eDxoZS5sZW5ndGg7eCs9MylGLnB1c2goe3RleHRTcGFuOmUuY3JlYXRlVGV4dFNwYW4oaGVbeF0saGVbeCsxXSksY2xhc3NpZmljYXRpb25UeXBlOmhlW3grMl19KTtyZXR1cm4gRn1CLmdldFNlbWFudGljQ2xhc3NpZmljYXRpb25zPU47ZnVuY3Rpb24gcChSLHEsTyx2ZSl7cmV0dXJue3NwYW5zOm0oUixPLHZlLHEpLGVuZE9mTGluZVN0YXRlOjB9fUIuZ2V0RW5jb2RlZFNlbWFudGljQ2xhc3NpZmljYXRpb25zPXA7ZnVuY3Rpb24gbShSLHEsTyx2ZSl7dmFyIGVlPVtdLGhlPWZ1bmN0aW9uKEYseCxYKXtlZS5wdXNoKEYuZ2V0U3RhcnQocSksRi5nZXRXaWR0aChxKSwoeCsxPDw4KStYKX07cmV0dXJuIFImJnEmJkcoUixxLE8saGUsdmUpLGVlfWZ1bmN0aW9uIEcoUixxLE8sdmUsZWUpe3ZhciBoZT1SLmdldFR5cGVDaGVja2VyKCksRj0hMTtmdW5jdGlvbiB4KFgpe3N3aXRjaChYLmtpbmQpe2Nhc2UgMjYxOmNhc2UgMjU3OmNhc2UgMjU4OmNhc2UgMjU2OmNhc2UgMjI2OmNhc2UgMjEzOmNhc2UgMjE0OmVlLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKX1pZighKCFYfHwhZS50ZXh0U3BhbkludGVyc2VjdHNXaXRoKE8sWC5wb3MsWC5nZXRGdWxsV2lkdGgoKSl8fFguZ2V0RnVsbFdpZHRoKCk9PT0wKSl7dmFyICQ9RjtpZigoZS5pc0pzeEVsZW1lbnQoWCl8fGUuaXNKc3hTZWxmQ2xvc2luZ0VsZW1lbnQoWCkpJiYoRj0hMCksZS5pc0pzeEV4cHJlc3Npb24oWCkmJihGPSExKSxlLmlzSWRlbnRpZmllcihYKSYmIUYmJiFiKFgpJiYhZS5pc0luZmluaXR5T3JOYU5TdHJpbmcoWC5lc2NhcGVkVGV4dCkpe3ZhciBBPWhlLmdldFN5bWJvbEF0TG9jYXRpb24oWCk7aWYoQSl7QS5mbGFncyYyMDk3MTUyJiYoQT1oZS5nZXRBbGlhc2VkU3ltYm9sKEEpKTt2YXIgeT1vZShBLGUuZ2V0TWVhbmluZ0Zyb21Mb2NhdGlvbihYKSk7aWYoeSE9PXZvaWQgMCl7dmFyIFY9MDtpZihYLnBhcmVudCl7dmFyIEw9ZS5pc0JpbmRpbmdFbGVtZW50KFgucGFyZW50KXx8aWUuZ2V0KFgucGFyZW50LmtpbmQpPT09eTtMJiZYLnBhcmVudC5uYW1lPT09WCYmKFY9MTw8MCl9eT09PTYmJkooWCkmJih5PTkpLHk9ZihoZSxYLHkpO3ZhciBQPUEudmFsdWVEZWNsYXJhdGlvbjtpZihQKXt2YXIgaz1lLmdldENvbWJpbmVkTW9kaWZpZXJGbGFncyhQKSxZPWUuZ2V0Q29tYmluZWROb2RlRmxhZ3MoUCk7ayYzMiYmKFZ8PTE8PDEpLGsmMjU2JiYoVnw9MTw8MikseSE9PTAmJnkhPT0yJiYoayY2NHx8WSYyfHxBLmdldEZsYWdzKCkmOCkmJihWfD0xPDwzKSwoeT09PTd8fHk9PT0xMCkmJlQoUCxxKSYmKFZ8PTE8PDUpLFIuaXNTb3VyY2VGaWxlRGVmYXVsdExpYnJhcnkoUC5nZXRTb3VyY2VGaWxlKCkpJiYoVnw9MTw8NCl9ZWxzZSBBLmRlY2xhcmF0aW9ucyYmQS5kZWNsYXJhdGlvbnMuc29tZShmdW5jdGlvbihVKXtyZXR1cm4gUi5pc1NvdXJjZUZpbGVEZWZhdWx0TGlicmFyeShVLmdldFNvdXJjZUZpbGUoKSl9KSYmKFZ8PTE8PDQpO3ZlKFgseSxWKX19fWUuZm9yRWFjaENoaWxkKFgseCksRj0kfX14KHEpfWZ1bmN0aW9uIG9lKFIscSl7dmFyIE89Ui5nZXRGbGFncygpO2lmKE8mMzIpcmV0dXJuIDA7aWYoTyYzODQpcmV0dXJuIDE7aWYoTyY1MjQyODgpcmV0dXJuIDU7aWYoTyY2NCl7aWYocSYyKXJldHVybiAyfWVsc2UgaWYoTyYyNjIxNDQpcmV0dXJuIDQ7dmFyIHZlPVIudmFsdWVEZWNsYXJhdGlvbnx8Ui5kZWNsYXJhdGlvbnMmJlIuZGVjbGFyYXRpb25zWzBdO3JldHVybiB2ZSYmZS5pc0JpbmRpbmdFbGVtZW50KHZlKSYmKHZlPUsodmUpKSx2ZSYmaWUuZ2V0KHZlLmtpbmQpfWZ1bmN0aW9uIGYoUixxLE8pe2lmKE89PT03fHxPPT09OXx8Tz09PTYpe3ZhciB2ZT1SLmdldFR5cGVBdExvY2F0aW9uKHEpO2lmKHZlKXt2YXIgZWU9ZnVuY3Rpb24oaGUpe3JldHVybiBoZSh2ZSl8fHZlLmlzVW5pb24oKSYmdmUudHlwZXMuc29tZShoZSl9O2lmKE8hPT02JiZlZShmdW5jdGlvbihoZSl7cmV0dXJuIGhlLmdldENvbnN0cnVjdFNpZ25hdHVyZXMoKS5sZW5ndGg+MH0pKXJldHVybiAwO2lmKGVlKGZ1bmN0aW9uKGhlKXtyZXR1cm4gaGUuZ2V0Q2FsbFNpZ25hdHVyZXMoKS5sZW5ndGg+MH0pJiYhZWUoZnVuY3Rpb24oaGUpe3JldHVybiBoZS5nZXRQcm9wZXJ0aWVzKCkubGVuZ3RoPjB9KXx8c2UocSkpcmV0dXJuIE89PT05PzExOjEwfX1yZXR1cm4gT31mdW5jdGlvbiBUKFIscSl7cmV0dXJuIGUuaXNCaW5kaW5nRWxlbWVudChSKSYmKFI9SyhSKSksZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oUik/KCFlLmlzU291cmNlRmlsZShSLnBhcmVudC5wYXJlbnQucGFyZW50KXx8ZS5pc0NhdGNoQ2xhdXNlKFIucGFyZW50KSkmJlIuZ2V0U291cmNlRmlsZSgpPT09cTplLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihSKT8hZS5pc1NvdXJjZUZpbGUoUi5wYXJlbnQpJiZSLmdldFNvdXJjZUZpbGUoKT09PXE6ITF9ZnVuY3Rpb24gSyhSKXtmb3IoOzspaWYoZS5pc0JpbmRpbmdFbGVtZW50KFIucGFyZW50LnBhcmVudCkpUj1SLnBhcmVudC5wYXJlbnQ7ZWxzZSByZXR1cm4gUi5wYXJlbnQucGFyZW50fWZ1bmN0aW9uIGIoUil7dmFyIHE9Ui5wYXJlbnQ7cmV0dXJuIHEmJihlLmlzSW1wb3J0Q2xhdXNlKHEpfHxlLmlzSW1wb3J0U3BlY2lmaWVyKHEpfHxlLmlzTmFtZXNwYWNlSW1wb3J0KHEpKX1mdW5jdGlvbiBzZShSKXtmb3IoO0ooUik7KVI9Ui5wYXJlbnQ7cmV0dXJuIGUuaXNDYWxsRXhwcmVzc2lvbihSLnBhcmVudCkmJlIucGFyZW50LmV4cHJlc3Npb249PT1SfWZ1bmN0aW9uIEooUil7cmV0dXJuIGUuaXNRdWFsaWZpZWROYW1lKFIucGFyZW50KSYmUi5wYXJlbnQucmlnaHQ9PT1SfHxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFIucGFyZW50KSYmUi5wYXJlbnQubmFtZT09PVJ9dmFyIGllPW5ldyBlLk1hcChbWzI1NCw3XSxbMTY0LDZdLFsxNjcsOV0sWzI2MSwzXSxbMjYwLDFdLFsyOTksOF0sWzI1NywwXSxbMTY5LDExXSxbMjU2LDEwXSxbMjEzLDEwXSxbMTY4LDExXSxbMTcyLDldLFsxNzMsOV0sWzE2Niw5XSxbMjU4LDJdLFsyNTksNV0sWzE2Myw0XSxbMjk2LDldLFsyOTcsOV1dKX0pKHc9Qy52MjAyMHx8KEMudjIwMjA9e30pKX0pKGE9ZS5jbGFzc2lmaWVyfHwoZS5jbGFzc2lmaWVyPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc7KGZ1bmN0aW9uKEIpe2Z1bmN0aW9uIEUoWixCZSxnZSxSZSx6ZSxFZSxIZSxycil7aWYoZS5pc0luUmVmZXJlbmNlQ29tbWVudChaLEJlKSl7dmFyIEllPWwoWixCZSxSZSx6ZSk7cmV0dXJuIEllJiZwKEllKX1pZihlLmlzSW5TdHJpbmcoWixCZSxnZSkpe2lmKCFnZXx8IWUuaXNTdHJpbmdMaXRlcmFsTGlrZShnZSkpcmV0dXJuO3ZhciBJZT1vZShaLGdlLEJlLEVlLmdldFR5cGVDaGVja2VyKCksUmUsemUscnIpO3JldHVybiBRKEllLGdlLFosemUsRWUsSGUsUmUscnIpfX1CLmdldFN0cmluZ0xpdGVyYWxDb21wbGV0aW9ucz1FO2Z1bmN0aW9uIFEoWixCZSxnZSxSZSx6ZSxFZSxIZSxycil7aWYoWiE9PXZvaWQgMCl7dmFyIEllPWUuY3JlYXRlVGV4dFNwYW5Gcm9tU3RyaW5nTGl0ZXJhbExpa2VDb250ZW50KEJlKTtzd2l0Y2goWi5raW5kKXtjYXNlIDA6cmV0dXJuIHAoWi5wYXRocyk7Y2FzZSAxOnt2YXIgX2U9ZS5jcmVhdGVTb3J0ZWRBcnJheSgpO3JldHVybiBDLmdldENvbXBsZXRpb25FbnRyaWVzRnJvbVN5bWJvbHMoWi5zeW1ib2xzLF9lLEJlLEJlLGdlLGdlLFJlLHplLDk5LEVlLDQscnIsSGUsdm9pZCAwKSx7aXNHbG9iYWxDb21wbGV0aW9uOiExLGlzTWVtYmVyQ29tcGxldGlvbjohMCxpc05ld0lkZW50aWZpZXJMb2NhdGlvbjpaLmhhc0luZGV4U2lnbmF0dXJlLG9wdGlvbmFsUmVwbGFjZW1lbnRTcGFuOkllLGVudHJpZXM6X2V9fWNhc2UgMjp7dmFyIF9lPVoudHlwZXMubWFwKGZ1bmN0aW9uKGRlKXtyZXR1cm57bmFtZTpkZS52YWx1ZSxraW5kTW9kaWZpZXJzOlwiXCIsa2luZDpcInN0cmluZ1wiLHNvcnRUZXh0OkMuU29ydFRleHQuTG9jYXRpb25Qcmlvcml0eSxyZXBsYWNlbWVudFNwYW46ZS5nZXRSZXBsYWNlbWVudFNwYW5Gb3JDb250ZXh0VG9rZW4oQmUpfX0pO3JldHVybntpc0dsb2JhbENvbXBsZXRpb246ITEsaXNNZW1iZXJDb21wbGV0aW9uOiExLGlzTmV3SWRlbnRpZmllckxvY2F0aW9uOlouaXNOZXdJZGVudGlmaWVyLG9wdGlvbmFsUmVwbGFjZW1lbnRTcGFuOkllLGVudHJpZXM6X2V9fWRlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoWil9fX1mdW5jdGlvbiBsZShaLEJlLGdlLFJlLHplLEVlLEhlLHJyLEllKXtpZighKCFSZXx8IWUuaXNTdHJpbmdMaXRlcmFsTGlrZShSZSkpKXt2YXIgX2U9b2UoQmUsUmUsZ2UsemUsRWUsSGUsSWUpO3JldHVybiBfZSYmTihaLFJlLF9lLEJlLHplLHJyKX19Qi5nZXRTdHJpbmdMaXRlcmFsQ29tcGxldGlvbkRldGFpbHM9bGU7ZnVuY3Rpb24gTihaLEJlLGdlLFJlLHplLEVlKXtzd2l0Y2goZ2Uua2luZCl7Y2FzZSAwOnt2YXIgSGU9ZS5maW5kKGdlLnBhdGhzLGZ1bmN0aW9uKHJyKXtyZXR1cm4gcnIubmFtZT09PVp9KTtyZXR1cm4gSGUmJkMuY3JlYXRlQ29tcGxldGlvbkRldGFpbHMoWixtKEhlLmV4dGVuc2lvbiksSGUua2luZCxbZS50ZXh0UGFydChaKV0pfWNhc2UgMTp7dmFyIEhlPWUuZmluZChnZS5zeW1ib2xzLGZ1bmN0aW9uKEllKXtyZXR1cm4gSWUubmFtZT09PVp9KTtyZXR1cm4gSGUmJkMuY3JlYXRlQ29tcGxldGlvbkRldGFpbHNGb3JTeW1ib2woSGUsemUsUmUsQmUsRWUpfWNhc2UgMjpyZXR1cm4gZS5maW5kKGdlLnR5cGVzLGZ1bmN0aW9uKHJyKXtyZXR1cm4gcnIudmFsdWU9PT1afSk/Qy5jcmVhdGVDb21wbGV0aW9uRGV0YWlscyhaLFwiXCIsXCJ0eXBlXCIsW2UudGV4dFBhcnQoWildKTp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihnZSl9fWZ1bmN0aW9uIHAoWil7dmFyIEJlPSExLGdlPSEwLFJlPVoubWFwKGZ1bmN0aW9uKHplKXt2YXIgRWU9emUubmFtZSxIZT16ZS5raW5kLHJyPXplLnNwYW4sSWU9emUuZXh0ZW5zaW9uO3JldHVybntuYW1lOkVlLGtpbmQ6SGUsa2luZE1vZGlmaWVyczptKEllKSxzb3J0VGV4dDpDLlNvcnRUZXh0LkxvY2F0aW9uUHJpb3JpdHkscmVwbGFjZW1lbnRTcGFuOnJyfX0pO3JldHVybntpc0dsb2JhbENvbXBsZXRpb246QmUsaXNNZW1iZXJDb21wbGV0aW9uOiExLGlzTmV3SWRlbnRpZmllckxvY2F0aW9uOmdlLGVudHJpZXM6UmV9fWZ1bmN0aW9uIG0oWil7c3dpdGNoKFope2Nhc2VcIi5kLnRzXCI6cmV0dXJuXCIuZC50c1wiO2Nhc2VcIi5qc1wiOnJldHVyblwiLmpzXCI7Y2FzZVwiLmpzb25cIjpyZXR1cm5cIi5qc29uXCI7Y2FzZVwiLmpzeFwiOnJldHVyblwiLmpzeFwiO2Nhc2VcIi50c1wiOnJldHVyblwiLnRzXCI7Y2FzZVwiLnRzeFwiOnJldHVyblwiLnRzeFwiO2Nhc2VcIi5kLm10c1wiOnJldHVyblwiLmQubXRzXCI7Y2FzZVwiLm1qc1wiOnJldHVyblwiLm1qc1wiO2Nhc2VcIi5tdHNcIjpyZXR1cm5cIi5tdHNcIjtjYXNlXCIuZC5jdHNcIjpyZXR1cm5cIi5kLmN0c1wiO2Nhc2VcIi5janNcIjpyZXR1cm5cIi5janNcIjtjYXNlXCIuY3RzXCI6cmV0dXJuXCIuY3RzXCI7Y2FzZVwiLnRzYnVpbGRpbmZvXCI6cmV0dXJuIGUuRGVidWcuZmFpbChcIkV4dGVuc2lvbiBcIi5jb25jYXQoXCIudHNidWlsZGluZm9cIixcIiBpcyB1bnN1cHBvcnRlZC5cIikpO2Nhc2Ugdm9pZCAwOnJldHVyblwiXCI7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihaKX19dmFyIEc7KGZ1bmN0aW9uKFope1pbWi5QYXRocz0wXT1cIlBhdGhzXCIsWltaLlByb3BlcnRpZXM9MV09XCJQcm9wZXJ0aWVzXCIsWltaLlR5cGVzPTJdPVwiVHlwZXNcIn0pKEd8fChHPXt9KSk7ZnVuY3Rpb24gb2UoWixCZSxnZSxSZSx6ZSxFZSxIZSl7dmFyIHJyPWYoQmUucGFyZW50KTtzd2l0Y2gocnIua2luZCl7Y2FzZSAxOTY6e3ZhciBJZT1mKHJyLnBhcmVudCk7c3dpdGNoKEllLmtpbmQpe2Nhc2UgMTc4Ont2YXIgX2U9SWUsd2U9ZS5maW5kQW5jZXN0b3IocnIsZnVuY3Rpb24obil7cmV0dXJuIG4ucGFyZW50PT09X2V9KTtyZXR1cm4gd2U/e2tpbmQ6Mix0eXBlczpKKFJlLmdldFR5cGVBcmd1bWVudENvbnN0cmFpbnQod2UpKSxpc05ld0lkZW50aWZpZXI6ITF9OnZvaWQgMH1jYXNlIDE5NDp2YXIgZGU9SWUseWU9ZGUuaW5kZXhUeXBlLEFlPWRlLm9iamVjdFR5cGU7cmV0dXJuIGUucmFuZ2VDb250YWluc1Bvc2l0aW9uKHllLGdlKT9iKFJlLmdldFR5cGVGcm9tVHlwZU5vZGUoQWUpKTp2b2lkIDA7Y2FzZSAyMDA6cmV0dXJue2tpbmQ6MCxwYXRoczpPKFosQmUsemUsRWUsUmUsSGUpfTtjYXNlIDE4Nzp7aWYoIWUuaXNUeXBlUmVmZXJlbmNlTm9kZShJZS5wYXJlbnQpKXJldHVybjt2YXIgZXI9VChJZSxyciksaXI9SihSZS5nZXRUeXBlQXJndW1lbnRDb25zdHJhaW50KEllKSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiFlLmNvbnRhaW5zKGVyLG4udmFsdWUpfSk7cmV0dXJue2tpbmQ6Mix0eXBlczppcixpc05ld0lkZW50aWZpZXI6ITF9fWRlZmF1bHQ6cmV0dXJufX1jYXNlIDI5NjpyZXR1cm4gZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKHJyLnBhcmVudCkmJnJyLm5hbWU9PT1CZT9zZShSZSxyci5wYXJlbnQpOk5lKCk7Y2FzZSAyMDc6e3ZhciBDcj1ycixZZT1Dci5leHByZXNzaW9uLEJyPUNyLmFyZ3VtZW50RXhwcmVzc2lvbjtyZXR1cm4gQmU9PT1lLnNraXBQYXJlbnRoZXNlcyhCcik/YihSZS5nZXRUeXBlQXRMb2NhdGlvbihZZSkpOnZvaWQgMH1jYXNlIDIwODpjYXNlIDIwOTpjYXNlIDI4NTppZighRmUoQmUpJiYhZS5pc0ltcG9ydENhbGwocnIpKXt2YXIgRXI9ZS5TaWduYXR1cmVIZWxwLmdldEFyZ3VtZW50SW5mb0ZvckNvbXBsZXRpb25zKHJyLmtpbmQ9PT0yODU/cnIucGFyZW50OkJlLGdlLFopO3JldHVybiBFcj9LKEVyLmludm9jYXRpb24sQmUsRXIsUmUpOk5lKCl9Y2FzZSAyNjY6Y2FzZSAyNzI6Y2FzZSAyNzc6cmV0dXJue2tpbmQ6MCxwYXRoczpPKFosQmUsemUsRWUsUmUsSGUpfTtkZWZhdWx0OnJldHVybiBOZSgpfWZ1bmN0aW9uIE5lKCl7cmV0dXJue2tpbmQ6Mix0eXBlczpKKGUuZ2V0Q29udGV4dHVhbFR5cGVGcm9tUGFyZW50KEJlLFJlKSksaXNOZXdJZGVudGlmaWVyOiExfX19ZnVuY3Rpb24gZihaKXtzd2l0Y2goWi5raW5kKXtjYXNlIDE5MTpyZXR1cm4gZS53YWxrVXBQYXJlbnRoZXNpemVkVHlwZXMoWik7Y2FzZSAyMTI6cmV0dXJuIGUud2Fsa1VwUGFyZW50aGVzaXplZEV4cHJlc3Npb25zKFopO2RlZmF1bHQ6cmV0dXJuIFp9fWZ1bmN0aW9uIFQoWixCZSl7cmV0dXJuIGUubWFwRGVmaW5lZChaLnR5cGVzLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZ2UhPT1CZSYmZS5pc0xpdGVyYWxUeXBlTm9kZShnZSkmJmUuaXNTdHJpbmdMaXRlcmFsKGdlLmxpdGVyYWwpP2dlLmxpdGVyYWwudGV4dDp2b2lkIDB9KX1mdW5jdGlvbiBLKFosQmUsZ2UsUmUpe3ZhciB6ZT0hMSxFZT1uZXcgZS5NYXAsSGU9W10scnI9ZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChaKT9lLkRlYnVnLmNoZWNrRGVmaW5lZChlLmZpbmRBbmNlc3RvcihCZS5wYXJlbnQsZS5pc0pzeEF0dHJpYnV0ZSkpOkJlO1JlLmdldFJlc29sdmVkU2lnbmF0dXJlRm9yU3RyaW5nTGl0ZXJhbENvbXBsZXRpb25zKFoscnIsSGUpO3ZhciBJZT1lLmZsYXRNYXAoSGUsZnVuY3Rpb24oX2Upe2lmKCEoIWUuc2lnbmF0dXJlSGFzUmVzdFBhcmFtZXRlcihfZSkmJmdlLmFyZ3VtZW50Q291bnQ+X2UucGFyYW1ldGVycy5sZW5ndGgpKXt2YXIgd2U9X2UuZ2V0VHlwZVBhcmFtZXRlckF0UG9zaXRpb24oZ2UuYXJndW1lbnRJbmRleCk7aWYoZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChaKSl7dmFyIGRlPVJlLmdldFR5cGVPZlByb3BlcnR5T2ZUeXBlKHdlLHJyLm5hbWUudGV4dCk7ZGUmJih3ZT1kZSl9cmV0dXJuIHplPXplfHwhISh3ZS5mbGFncyY0KSxKKHdlLEVlKX19KTtyZXR1cm57a2luZDoyLHR5cGVzOkllLGlzTmV3SWRlbnRpZmllcjp6ZX19ZnVuY3Rpb24gYihaKXtyZXR1cm4gWiYme2tpbmQ6MSxzeW1ib2xzOmUuZmlsdGVyKFouZ2V0QXBwYXJlbnRQcm9wZXJ0aWVzKCksZnVuY3Rpb24oQmUpe3JldHVybiEoQmUudmFsdWVEZWNsYXJhdGlvbiYmZS5pc1ByaXZhdGVJZGVudGlmaWVyQ2xhc3NFbGVtZW50RGVjbGFyYXRpb24oQmUudmFsdWVEZWNsYXJhdGlvbikpfSksaGFzSW5kZXhTaWduYXR1cmU6ZS5oYXNJbmRleFNpZ25hdHVyZShaKX19ZnVuY3Rpb24gc2UoWixCZSl7dmFyIGdlPVouZ2V0Q29udGV4dHVhbFR5cGUoQmUpO2lmKCEhZ2Upe3ZhciBSZT1aLmdldENvbnRleHR1YWxUeXBlKEJlLDQpLHplPUMuZ2V0UHJvcGVydGllc0Zvck9iamVjdEV4cHJlc3Npb24oZ2UsUmUsQmUsWik7cmV0dXJue2tpbmQ6MSxzeW1ib2xzOnplLGhhc0luZGV4U2lnbmF0dXJlOmUuaGFzSW5kZXhTaWduYXR1cmUoZ2UpfX19ZnVuY3Rpb24gSihaLEJlKXtyZXR1cm4gQmU9PT12b2lkIDAmJihCZT1uZXcgZS5NYXApLFo/KFo9ZS5za2lwQ29uc3RyYWludChaKSxaLmlzVW5pb24oKT9lLmZsYXRNYXAoWi50eXBlcyxmdW5jdGlvbihnZSl7cmV0dXJuIEooZ2UsQmUpfSk6Wi5pc1N0cmluZ0xpdGVyYWwoKSYmIShaLmZsYWdzJjEwMjQpJiZlLmFkZFRvU2VlbihCZSxaLnZhbHVlKT9bWl06ZS5lbXB0eUFycmF5KTplLmVtcHR5QXJyYXl9ZnVuY3Rpb24gaWUoWixCZSxnZSl7cmV0dXJue25hbWU6WixraW5kOkJlLGV4dGVuc2lvbjpnZX19ZnVuY3Rpb24gUihaKXtyZXR1cm4gaWUoWixcImRpcmVjdG9yeVwiLHZvaWQgMCl9ZnVuY3Rpb24gcShaLEJlLGdlKXt2YXIgUmU9ZmUoWixCZSksemU9Wi5sZW5ndGg9PT0wP3ZvaWQgMDplLmNyZWF0ZVRleHRTcGFuKEJlLFoubGVuZ3RoKTtyZXR1cm4gZ2UubWFwKGZ1bmN0aW9uKEVlKXt2YXIgSGU9RWUubmFtZSxycj1FZS5raW5kLEllPUVlLmV4dGVuc2lvbjtyZXR1cm4gTWF0aC5tYXgoSGUuaW5kZXhPZihlLmRpcmVjdG9yeVNlcGFyYXRvciksSGUuaW5kZXhPZihlLmFsdERpcmVjdG9yeVNlcGFyYXRvcikpIT09LTE/e25hbWU6SGUsa2luZDpycixleHRlbnNpb246SWUsc3Bhbjp6ZX06e25hbWU6SGUsa2luZDpycixleHRlbnNpb246SWUsc3BhbjpSZX19KX1mdW5jdGlvbiBPKFosQmUsZ2UsUmUsemUsRWUpe3JldHVybiBxKEJlLnRleHQsQmUuZ2V0U3RhcnQoWikrMSx2ZShaLEJlLGdlLFJlLHplLEVlKSl9ZnVuY3Rpb24gdmUoWixCZSxnZSxSZSx6ZSxFZSl7dmFyIEhlPWUubm9ybWFsaXplU2xhc2hlcyhCZS50ZXh0KSxycj1aLnBhdGgsSWU9ZS5nZXREaXJlY3RvcnlQYXRoKHJyKTtyZXR1cm4gZyhIZSl8fCFnZS5iYXNlVXJsJiYoZS5pc1Jvb3RlZERpc2tQYXRoKEhlKXx8ZS5pc1VybChIZSkpP2hlKEhlLEllLGdlLFJlLHJyLF9lKCkpOlAoSGUsSWUsZ2UsUmUsemUpO2Z1bmN0aW9uIF9lKCl7dmFyIHdlPWUuaXNTdHJpbmdMaXRlcmFsTGlrZShCZSk/ZS5nZXRNb2RlRm9yVXNhZ2VMb2NhdGlvbihaLEJlKTp2b2lkIDA7cmV0dXJuIEVlLmltcG9ydE1vZHVsZVNwZWNpZmllckVuZGluZz09PVwianNcInx8d2U9PT1lLk1vZHVsZUtpbmQuRVNOZXh0PzI6MH19ZnVuY3Rpb24gZWUoWixCZSl7cmV0dXJuIEJlPT09dm9pZCAwJiYoQmU9MCkse2V4dGVuc2lvbnM6ZS5mbGF0dGVuKFgoWikpLGluY2x1ZGVFeHRlbnNpb25zT3B0aW9uOkJlfX1mdW5jdGlvbiBoZShaLEJlLGdlLFJlLHplLEVlKXt2YXIgSGU9ZWUoZ2UsRWUpO3JldHVybiBnZS5yb290RGlycz9BKGdlLnJvb3REaXJzLFosQmUsSGUsZ2UsUmUsemUpOlYoWixCZSxIZSxSZSx6ZSl9ZnVuY3Rpb24gRihaKXtyZXR1cm4gZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoWik9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKc3x8ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoWik9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGUxNnx8ZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoWik9PT1lLk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVOZXh0fWZ1bmN0aW9uIHgoWil7cmV0dXJuIGUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKFopPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlMTZ8fGUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKFopPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlTmV4dH1mdW5jdGlvbiBYKFope3ZhciBCZT1lLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoWik7cmV0dXJuIEYoWik/ZS5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zV2l0aEpzb25JZlJlc29sdmVKc29uTW9kdWxlKFosQmUpOkJlfWZ1bmN0aW9uICQoWixCZSxnZSxSZSl7Wj1aLm1hcChmdW5jdGlvbihFZSl7cmV0dXJuIGUubm9ybWFsaXplUGF0aChlLmlzUm9vdGVkRGlza1BhdGgoRWUpP0VlOmUuY29tYmluZVBhdGhzKEJlLEVlKSl9KTt2YXIgemU9ZS5maXJzdERlZmluZWQoWixmdW5jdGlvbihFZSl7cmV0dXJuIGUuY29udGFpbnNQYXRoKEVlLGdlLEJlLFJlKT9nZS5zdWJzdHIoRWUubGVuZ3RoKTp2b2lkIDB9KTtyZXR1cm4gZS5kZWR1cGxpY2F0ZShWZShWZShbXSxaLm1hcChmdW5jdGlvbihFZSl7cmV0dXJuIGUuY29tYmluZVBhdGhzKEVlLHplKX0pLCEwKSxbZ2VdLCExKSxlLmVxdWF0ZVN0cmluZ3NDYXNlU2Vuc2l0aXZlLGUuY29tcGFyZVN0cmluZ3NDYXNlU2Vuc2l0aXZlKX1mdW5jdGlvbiBBKFosQmUsZ2UsUmUsemUsRWUsSGUpe3ZhciBycj16ZS5wcm9qZWN0fHxFZS5nZXRDdXJyZW50RGlyZWN0b3J5KCksSWU9IShFZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzJiZFZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCkpLF9lPSQoWixycixnZSxJZSk7cmV0dXJuIGUuZmxhdE1hcChfZSxmdW5jdGlvbih3ZSl7cmV0dXJuIFYoQmUsd2UsUmUsRWUsSGUpfSl9dmFyIHk7KGZ1bmN0aW9uKFope1pbWi5FeGNsdWRlPTBdPVwiRXhjbHVkZVwiLFpbWi5JbmNsdWRlPTFdPVwiSW5jbHVkZVwiLFpbWi5Nb2R1bGVTcGVjaWZpZXJDb21wbGV0aW9uPTJdPVwiTW9kdWxlU3BlY2lmaWVyQ29tcGxldGlvblwifSkoeXx8KHk9e30pKTtmdW5jdGlvbiBWKFosQmUsZ2UsUmUsemUsRWUpe3ZhciBIZT1nZS5leHRlbnNpb25zLHJyPWdlLmluY2x1ZGVFeHRlbnNpb25zT3B0aW9uO0VlPT09dm9pZCAwJiYoRWU9W10pLFo9PT12b2lkIDAmJihaPVwiXCIpLFo9ZS5ub3JtYWxpemVTbGFzaGVzKFopLGUuaGFzVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoWil8fChaPWUuZ2V0RGlyZWN0b3J5UGF0aChaKSksWj09PVwiXCImJihaPVwiLlwiK2UuZGlyZWN0b3J5U2VwYXJhdG9yKSxaPWUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoWik7dmFyIEllPWUucmVzb2x2ZVBhdGgoQmUsWiksX2U9ZS5oYXNUcmFpbGluZ0RpcmVjdG9yeVNlcGFyYXRvcihJZSk/SWU6ZS5nZXREaXJlY3RvcnlQYXRoKEllKSx3ZT0hKFJlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMmJlJlLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMoKSk7aWYoIWUudHJ5RGlyZWN0b3J5RXhpc3RzKFJlLF9lKSlyZXR1cm4gRWU7dmFyIGRlPWUudHJ5UmVhZERpcmVjdG9yeShSZSxfZSxIZSx2b2lkIDAsW1wiLi8qXCJdKTtpZihkZSl7Zm9yKHZhciB5ZT1uZXcgZS5NYXAsQWU9MCxlcj1kZTtBZTxlci5sZW5ndGg7QWUrKyl7dmFyIGlyPWVyW0FlXTtpZihpcj1lLm5vcm1hbGl6ZVBhdGgoaXIpLCEoemUmJmUuY29tcGFyZVBhdGhzKGlyLHplLEJlLHdlKT09PTApKXt2YXIgQ3I9dm9pZCAwLFllPWUubW9kdWxlU3BlY2lmaWVycy50cnlHZXRKU0V4dGVuc2lvbkZvckZpbGUoaXIsUmUuZ2V0Q29tcGlsYXRpb25TZXR0aW5ncygpKTtycj09PTAmJiFlLmZpbGVFeHRlbnNpb25Jc09uZU9mKGlyLFtcIi5qc29uXCIsXCIubXRzXCIsXCIuY3RzXCIsXCIuZC5tdHNcIixcIi5kLmN0c1wiLFwiLm1qc1wiLFwiLmNqc1wiXSk/KENyPWUucmVtb3ZlRmlsZUV4dGVuc2lvbihlLmdldEJhc2VGaWxlTmFtZShpcikpLHllLnNldChDcixlLnRyeUdldEV4dGVuc2lvbkZyb21QYXRoKGlyKSkpOihlLmZpbGVFeHRlbnNpb25Jc09uZU9mKGlyLFtcIi5tdHNcIixcIi5jdHNcIixcIi5kLm10c1wiLFwiLmQuY3RzXCIsXCIubWpzXCIsXCIuY2pzXCJdKXx8cnI9PT0yKSYmWWU/KENyPWUuY2hhbmdlRXh0ZW5zaW9uKGUuZ2V0QmFzZUZpbGVOYW1lKGlyKSxZZSkseWUuc2V0KENyLFllKSk6KENyPWUuZ2V0QmFzZUZpbGVOYW1lKGlyKSx5ZS5zZXQoQ3IsZS50cnlHZXRFeHRlbnNpb25Gcm9tUGF0aChpcikpKX19eWUuZm9yRWFjaChmdW5jdGlvbihVcixpaSl7RWUucHVzaChpZShpaSxcInNjcmlwdFwiLFVyKSl9KX12YXIgQnI9ZS50cnlHZXREaXJlY3RvcmllcyhSZSxfZSk7aWYoQnIpZm9yKHZhciBFcj0wLE5lPUJyO0VyPE5lLmxlbmd0aDtFcisrKXt2YXIgbj1OZVtFcl0sbHI9ZS5nZXRCYXNlRmlsZU5hbWUoZS5ub3JtYWxpemVQYXRoKG4pKTtsciE9PVwiQHR5cGVzXCImJkVlLnB1c2goUihscikpfXZhciBiZT1lLmZpbmRQYWNrYWdlSnNvbihfZSxSZSk7aWYoYmUpe3ZhciBHZT1lLnJlYWRKc29uKGJlLFJlKSx1cj1HZS50eXBlc1ZlcnNpb25zO2lmKHR5cGVvZiB1cj09XCJvYmplY3RcIil7dmFyIHlyPWUuZ2V0UGFja2FnZUpzb25UeXBlc1ZlcnNpb25zUGF0aHModXIpLElyPXlyJiZ5ci5wYXRocyx3cj1JZS5zbGljZShlLmVuc3VyZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKF9lKS5sZW5ndGgpO0lyJiZMKEVlLHdyLF9lLEhlLElyLFJlKX19cmV0dXJuIEVlfWZ1bmN0aW9uIEwoWixCZSxnZSxSZSx6ZSxFZSl7Zm9yKHZhciBIZSBpbiB6ZSlpZighIWUuaGFzUHJvcGVydHkoemUsSGUpKXt2YXIgcnI9emVbSGVdO2lmKHJyKWZvcih2YXIgSWU9ZnVuY3Rpb24oaXIsQ3IsWWUpe1ouc29tZShmdW5jdGlvbihCcil7cmV0dXJuIEJyLm5hbWU9PT1pcn0pfHxaLnB1c2goaWUoaXIsQ3IsWWUpKX0sX2U9MCx3ZT1ZKEhlLHJyLEJlLGdlLFJlLEVlKTtfZTx3ZS5sZW5ndGg7X2UrKyl7dmFyIGRlPXdlW19lXSx5ZT1kZS5uYW1lLEFlPWRlLmtpbmQsZXI9ZGUuZXh0ZW5zaW9uO0llKHllLEFlLGVyKX19fWZ1bmN0aW9uIFAoWixCZSxnZSxSZSx6ZSl7dmFyIEVlPWdlLmJhc2VVcmwsSGU9Z2UucGF0aHMscnI9W10sSWU9ZWUoZ2UpO2lmKEVlKXt2YXIgX2U9Z2UucHJvamVjdHx8UmUuZ2V0Q3VycmVudERpcmVjdG9yeSgpLHdlPWUubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyhfZSxFZSkpO1YoWix3ZSxJZSxSZSx2b2lkIDAscnIpLEhlJiZMKHJyLFosd2UsSWUuZXh0ZW5zaW9ucyxIZSxSZSl9Zm9yKHZhciBkZT1rKFopLHllPTAsQWU9SShaLGRlLHplKTt5ZTxBZS5sZW5ndGg7eWUrKyl7dmFyIGVyPUFlW3llXTtyci5wdXNoKGllKGVyLFwiZXh0ZXJuYWwgbW9kdWxlIG5hbWVcIix2b2lkIDApKX1pZihkKFJlLGdlLEJlLGRlLEllLHJyKSxGKGdlKSl7dmFyIGlyPSExO2lmKGRlPT09dm9pZCAwKWZvcih2YXIgQ3I9ZnVuY3Rpb24obHIpe3JyLnNvbWUoZnVuY3Rpb24oYmUpe3JldHVybiBiZS5uYW1lPT09bHJ9KXx8KGlyPSEwLHJyLnB1c2goaWUobHIsXCJleHRlcm5hbCBtb2R1bGUgbmFtZVwiLHZvaWQgMCkpKX0sWWU9MCxCcj1EKFJlLEJlKTtZZTxCci5sZW5ndGg7WWUrKyl7dmFyIEVyPUJyW1llXTtDcihFcil9aWYoIWlyKXt2YXIgTmU9ZnVuY3Rpb24obHIpe3ZhciBiZT1lLmNvbWJpbmVQYXRocyhscixcIm5vZGVfbW9kdWxlc1wiKTtlLnRyeURpcmVjdG9yeUV4aXN0cyhSZSxiZSkmJlYoWixiZSxJZSxSZSx2b2lkIDAscnIpfTtpZihkZSYmeChnZSkpe3ZhciBuPU5lO05lPWZ1bmN0aW9uKGxyKXt2YXIgYmU9ZS5nZXRQYXRoQ29tcG9uZW50cyhaKTtiZS5zaGlmdCgpO3ZhciBHZT1iZS5zaGlmdCgpO2lmKCFHZSlyZXR1cm4gbihscik7aWYoZS5zdGFydHNXaXRoKEdlLFwiQFwiKSl7dmFyIHVyPWJlLnNoaWZ0KCk7aWYoIXVyKXJldHVybiBuKGxyKTtHZT1lLmNvbWJpbmVQYXRocyhHZSx1cil9dmFyIHlyPWUuY29tYmluZVBhdGhzKGxyLFwibm9kZV9tb2R1bGVzXCIsR2UsXCJwYWNrYWdlLmpzb25cIik7aWYoZS50cnlGaWxlRXhpc3RzKFJlLHlyKSl7dmFyIElyPWUucmVhZEpzb24oeXIsUmUpLHdyPUlyLmV4cG9ydHM7aWYod3Ipe2lmKHR5cGVvZiB3ciE9XCJvYmplY3RcInx8d3I9PT1udWxsKXJldHVybjt2YXIgVXI9ZS5nZXRPd25LZXlzKHdyKSxpaT1iZS5qb2luKFwiL1wiKSxtaT1lLm1hcERlZmluZWQoVXIsZnVuY3Rpb24ocGUpe2lmKHBlIT09XCIuXCImJiEhZS5zdGFydHNXaXRoKHBlLFwiLi9cIikpe3ZhciBvcj1wZS5zdWJzdHJpbmcoMik7aWYoISFlLnN0YXJ0c1dpdGgob3IsaWkpKXJldHVybiBlLnN0cmluZ0NvbnRhaW5zKG9yLFwiKlwiKT9vci5zbGljZSgwLG9yLmluZGV4T2YoXCIqXCIpKTpvcn19KTtlLmZvckVhY2gobWksZnVuY3Rpb24ocGUpe3BlJiZyci5wdXNoKGllKHBlLFwiZXh0ZXJuYWwgbW9kdWxlIG5hbWVcIix2b2lkIDApKX0pO3JldHVybn19cmV0dXJuIG4obHIpfX1lLmZvckVhY2hBbmNlc3RvckRpcmVjdG9yeShCZSxOZSl9fXJldHVybiBycn1mdW5jdGlvbiBrKFope3JldHVybiBXZShaKT9lLmhhc1RyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKFopP1o6ZS5nZXREaXJlY3RvcnlQYXRoKFopOnZvaWQgMH1mdW5jdGlvbiBZKFosQmUsZ2UsUmUsemUsRWUpe2lmKCFlLmVuZHNXaXRoKFosXCIqXCIpKXJldHVybiBlLnN0cmluZ0NvbnRhaW5zKFosXCIqXCIpP2UuZW1wdHlBcnJheTpJZShaKTt2YXIgSGU9Wi5zbGljZSgwLFoubGVuZ3RoLTEpLHJyPWUudHJ5UmVtb3ZlUHJlZml4KGdlLEhlKTtyZXR1cm4gcnI9PT12b2lkIDA/SWUoSGUpOmUuZmxhdE1hcChCZSxmdW5jdGlvbihfZSl7cmV0dXJuIFUocnIsUmUsX2UsemUsRWUpfSk7ZnVuY3Rpb24gSWUoX2Upe3JldHVybiBlLnN0YXJ0c1dpdGgoX2UsZ2UpP1tSKF9lKV06ZS5lbXB0eUFycmF5fX1mdW5jdGlvbiBVKFosQmUsZ2UsUmUsemUpe2lmKCF6ZS5yZWFkRGlyZWN0b3J5KXJldHVybjt2YXIgRWU9ZS50cnlQYXJzZVBhdHRlcm4oZ2UpO2lmKEVlPT09dm9pZCAwfHxlLmlzU3RyaW5nKEVlKSlyZXR1cm47dmFyIEhlPWUucmVzb2x2ZVBhdGgoRWUucHJlZml4KSxycj1lLmhhc1RyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKEVlLnByZWZpeCk/SGU6ZS5nZXREaXJlY3RvcnlQYXRoKEhlKSxJZT1lLmhhc1RyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKEVlLnByZWZpeCk/XCJcIjplLmdldEJhc2VGaWxlTmFtZShIZSksX2U9V2UoWiksd2U9X2U/ZS5oYXNUcmFpbGluZ0RpcmVjdG9yeVNlcGFyYXRvcihaKT9aOmUuZ2V0RGlyZWN0b3J5UGF0aChaKTp2b2lkIDAsZGU9X2U/ZS5jb21iaW5lUGF0aHMocnIsSWUrd2UpOnJyLHllPWUubm9ybWFsaXplUGF0aChFZS5zdWZmaXgpLEFlPWUubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyhCZSxkZSkpLGVyPV9lP0FlOmUuZW5zdXJlVHJhaWxpbmdEaXJlY3RvcnlTZXBhcmF0b3IoQWUpK0llLGlyPXllP1wiKiovKlwiOlwiLi8qXCIsQ3I9ZS5tYXBEZWZpbmVkKGUudHJ5UmVhZERpcmVjdG9yeSh6ZSxBZSxSZSx2b2lkIDAsW2lyXSksZnVuY3Rpb24oRXIpe3ZhciBOZT1lLnRyeUdldEV4dGVuc2lvbkZyb21QYXRoKEVyKSxuPUJyKEVyKTtyZXR1cm4gbj09PXZvaWQgMD92b2lkIDA6aWUoZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKG4pLFwic2NyaXB0XCIsTmUpfSksWWU9ZS5tYXBEZWZpbmVkKGUudHJ5R2V0RGlyZWN0b3JpZXMoemUsQWUpLm1hcChmdW5jdGlvbihFcil7cmV0dXJuIGUuY29tYmluZVBhdGhzKEFlLEVyKX0pLGZ1bmN0aW9uKEVyKXt2YXIgTmU9QnIoRXIpO3JldHVybiBOZT09PXZvaWQgMD92b2lkIDA6UihOZSl9KTtyZXR1cm4gVmUoVmUoW10sQ3IsITApLFllLCEwKTtmdW5jdGlvbiBCcihFcil7dmFyIE5lPWooZS5ub3JtYWxpemVQYXRoKEVyKSxlcix5ZSk7cmV0dXJuIE5lPT09dm9pZCAwP3ZvaWQgMDpIKE5lKX19ZnVuY3Rpb24gaihaLEJlLGdlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFosQmUpJiZlLmVuZHNXaXRoKFosZ2UpP1ouc2xpY2UoQmUubGVuZ3RoLFoubGVuZ3RoLWdlLmxlbmd0aCk6dm9pZCAwfWZ1bmN0aW9uIEgoWil7cmV0dXJuIFpbMF09PT1lLmRpcmVjdG9yeVNlcGFyYXRvcj9aLnNsaWNlKDEpOlp9ZnVuY3Rpb24gSShaLEJlLGdlKXt2YXIgUmU9Z2UuZ2V0QW1iaWVudE1vZHVsZXMoKS5tYXAoZnVuY3Rpb24oSGUpe3JldHVybiBlLnN0cmlwUXVvdGVzKEhlLm5hbWUpfSksemU9UmUuZmlsdGVyKGZ1bmN0aW9uKEhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKEhlLFopfSk7aWYoQmUhPT12b2lkIDApe3ZhciBFZT1lLmVuc3VyZVRyYWlsaW5nRGlyZWN0b3J5U2VwYXJhdG9yKEJlKTtyZXR1cm4gemUubWFwKGZ1bmN0aW9uKEhlKXtyZXR1cm4gZS5yZW1vdmVQcmVmaXgoSGUsRWUpfSl9cmV0dXJuIHplfWZ1bmN0aW9uIGwoWixCZSxnZSxSZSl7dmFyIHplPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKFosQmUpLEVlPWUuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoWi50ZXh0LHplLnBvcyksSGU9RWUmJmUuZmluZChFZSxmdW5jdGlvbihlcil7cmV0dXJuIEJlPj1lci5wb3MmJkJlPD1lci5lbmR9KTtpZighIUhlKXt2YXIgcnI9Wi50ZXh0LnNsaWNlKEhlLnBvcyxCZSksSWU9bmUuZXhlYyhycik7aWYoISFJZSl7dmFyIF9lPUllWzFdLHdlPUllWzJdLGRlPUllWzNdLHllPWUuZ2V0RGlyZWN0b3J5UGF0aChaLnBhdGgpLEFlPXdlPT09XCJwYXRoXCI/VihkZSx5ZSxlZShnZSwxKSxSZSxaLnBhdGgpOndlPT09XCJ0eXBlc1wiP2QoUmUsZ2UseWUsayhkZSksZWUoZ2UpKTplLkRlYnVnLmZhaWwoKTtyZXR1cm4gcShkZSxIZS5wb3MrX2UubGVuZ3RoLEFlKX19fWZ1bmN0aW9uIGQoWixCZSxnZSxSZSx6ZSxFZSl7RWU9PT12b2lkIDAmJihFZT1bXSk7Zm9yKHZhciBIZT1uZXcgZS5NYXAscnI9ZS50cnlBbmRJZ25vcmVFcnJvcnMoZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRFZmZlY3RpdmVUeXBlUm9vdHMoQmUsWil9KXx8ZS5lbXB0eUFycmF5LEllPTAsX2U9cnI7SWU8X2UubGVuZ3RoO0llKyspe3ZhciB3ZT1fZVtJZV07aXIod2UpfWZvcih2YXIgZGU9MCx5ZT1lLmZpbmRQYWNrYWdlSnNvbnMoZ2UsWik7ZGU8eWUubGVuZ3RoO2RlKyspe3ZhciBBZT15ZVtkZV0sZXI9ZS5jb21iaW5lUGF0aHMoZS5nZXREaXJlY3RvcnlQYXRoKEFlKSxcIm5vZGVfbW9kdWxlcy9AdHlwZXNcIik7aXIoZXIpfXJldHVybiBFZTtmdW5jdGlvbiBpcihDcil7aWYoISFlLnRyeURpcmVjdG9yeUV4aXN0cyhaLENyKSlmb3IodmFyIFllPTAsQnI9ZS50cnlHZXREaXJlY3RvcmllcyhaLENyKTtZZTxCci5sZW5ndGg7WWUrKyl7dmFyIEVyPUJyW1llXSxOZT1lLnVubWFuZ2xlU2NvcGVkUGFja2FnZU5hbWUoRXIpO2lmKCEoQmUudHlwZXMmJiFlLmNvbnRhaW5zKEJlLnR5cGVzLE5lKSkpaWYoUmU9PT12b2lkIDApSGUuaGFzKE5lKXx8KEVlLnB1c2goaWUoTmUsXCJleHRlcm5hbCBtb2R1bGUgbmFtZVwiLHZvaWQgMCkpLEhlLnNldChOZSwhMCkpO2Vsc2V7dmFyIG49ZS5jb21iaW5lUGF0aHMoQ3IsRXIpLGxyPWUudHJ5UmVtb3ZlRGlyZWN0b3J5UHJlZml4KFJlLE5lLGUuaG9zdEdldENhbm9uaWNhbEZpbGVOYW1lKFopKTtsciE9PXZvaWQgMCYmVihscixuLHplLFosdm9pZCAwLEVlKX19fX1mdW5jdGlvbiBEKFosQmUpe2lmKCFaLnJlYWRGaWxlfHwhWi5maWxlRXhpc3RzKXJldHVybiBlLmVtcHR5QXJyYXk7Zm9yKHZhciBnZT1bXSxSZT0wLHplPWUuZmluZFBhY2thZ2VKc29ucyhCZSxaKTtSZTx6ZS5sZW5ndGg7UmUrKylmb3IodmFyIEVlPXplW1JlXSxIZT1lLnJlYWRKc29uKEVlLFopLHJyPTAsSWU9dWU7cnI8SWUubGVuZ3RoO3JyKyspe3ZhciBfZT1JZVtycl0sd2U9SGVbX2VdO2lmKCEhd2UpZm9yKHZhciBkZSBpbiB3ZSl3ZS5oYXNPd25Qcm9wZXJ0eShkZSkmJiFlLnN0YXJ0c1dpdGgoZGUsXCJAdHlwZXMvXCIpJiZnZS5wdXNoKGRlKX1yZXR1cm4gZ2V9ZnVuY3Rpb24gZmUoWixCZSl7dmFyIGdlPU1hdGgubWF4KFoubGFzdEluZGV4T2YoZS5kaXJlY3RvcnlTZXBhcmF0b3IpLFoubGFzdEluZGV4T2YoZS5hbHREaXJlY3RvcnlTZXBhcmF0b3IpKSxSZT1nZSE9PS0xP2dlKzE6MCx6ZT1aLmxlbmd0aC1SZTtyZXR1cm4gemU9PT0wfHxlLmlzSWRlbnRpZmllclRleHQoWi5zdWJzdHIoUmUsemUpLDk5KT92b2lkIDA6ZS5jcmVhdGVUZXh0U3BhbihCZStSZSx6ZSl9ZnVuY3Rpb24gZyhaKXtpZihaJiZaLmxlbmd0aD49MiYmWi5jaGFyQ29kZUF0KDApPT09NDYpe3ZhciBCZT1aLmxlbmd0aD49MyYmWi5jaGFyQ29kZUF0KDEpPT09NDY/MjoxLGdlPVouY2hhckNvZGVBdChCZSk7cmV0dXJuIGdlPT09NDd8fGdlPT09OTJ9cmV0dXJuITF9dmFyIG5lPS9eKFxcL1xcL1xcL1xccyo8cmVmZXJlbmNlXFxzKyhwYXRofHR5cGVzKVxccyo9XFxzKig/Oid8XCIpKShbXlxcM1wiXSopJC8sdWU9W1wiZGVwZW5kZW5jaWVzXCIsXCJkZXZEZXBlbmRlbmNpZXNcIixcInBlZXJEZXBlbmRlbmNpZXNcIixcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCJdO2Z1bmN0aW9uIFdlKFope3JldHVybiBlLnN0cmluZ0NvbnRhaW5zKFosZS5kaXJlY3RvcnlTZXBhcmF0b3IpfWZ1bmN0aW9uIEZlKFope3JldHVybiBlLmlzQ2FsbEV4cHJlc3Npb24oWi5wYXJlbnQpJiZlLmZpcnN0T3JVbmRlZmluZWQoWi5wYXJlbnQuYXJndW1lbnRzKT09PVomJmUuaXNJZGVudGlmaWVyKFoucGFyZW50LmV4cHJlc3Npb24pJiZaLnBhcmVudC5leHByZXNzaW9uLmVzY2FwZWRUZXh0PT09XCJyZXF1aXJlXCJ9fSkodz1DLlN0cmluZ0NvbXBsZXRpb25zfHwoQy5TdHJpbmdDb21wbGV0aW9ucz17fSkpfSkoYT1lLkNvbXBsZXRpb25zfHwoZS5Db21wbGV0aW9ucz17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe0MubW9kdWxlU3BlY2lmaWVyUmVzb2x1dGlvbkxpbWl0PTEwMCxDLm1vZHVsZVNwZWNpZmllclJlc29sdXRpb25DYWNoZUF0dGVtcHRMaW1pdD0xZTMsQy5Tb3J0VGV4dD17TG9jYWxEZWNsYXJhdGlvblByaW9yaXR5OlwiMTBcIixMb2NhdGlvblByaW9yaXR5OlwiMTFcIixPcHRpb25hbE1lbWJlcjpcIjEyXCIsTWVtYmVyRGVjbGFyZWRCeVNwcmVhZEFzc2lnbm1lbnQ6XCIxM1wiLFN1Z2dlc3RlZENsYXNzTWVtYmVyczpcIjE0XCIsR2xvYmFsc09yS2V5d29yZHM6XCIxNVwiLEF1dG9JbXBvcnRTdWdnZXN0aW9uczpcIjE2XCIsQ2xhc3NNZW1iZXJTbmlwcGV0czpcIjE3XCIsSmF2YXNjcmlwdElkZW50aWZpZXJzOlwiMThcIixEZXByZWNhdGVkOmZ1bmN0aW9uKHhlKXtyZXR1cm5cInpcIit4ZX0sT2JqZWN0TGl0ZXJhbFByb3BlcnR5OmZ1bmN0aW9uKHhlLHZyKXtyZXR1cm5cIlwiLmNvbmNhdCh4ZSxcIlxcMFwiKS5jb25jYXQodnIsXCJcXDBcIil9LFNvcnRCZWxvdzpmdW5jdGlvbih4ZSl7cmV0dXJuIHhlK1wiMVwifX07dmFyIHc7KGZ1bmN0aW9uKHhlKXt4ZS5UaGlzUHJvcGVydHk9XCJUaGlzUHJvcGVydHkvXCIseGUuQ2xhc3NNZW1iZXJTbmlwcGV0PVwiQ2xhc3NNZW1iZXJTbmlwcGV0L1wiLHhlLlR5cGVPbmx5QWxpYXM9XCJUeXBlT25seUFsaWFzL1wiLHhlLk9iamVjdExpdGVyYWxNZXRob2RTbmlwcGV0PVwiT2JqZWN0TGl0ZXJhbE1ldGhvZFNuaXBwZXQvXCJ9KSh3PUMuQ29tcGxldGlvblNvdXJjZXx8KEMuQ29tcGxldGlvblNvdXJjZT17fSkpO3ZhciBCOyhmdW5jdGlvbih4ZSl7eGVbeGUuVGhpc1R5cGU9MV09XCJUaGlzVHlwZVwiLHhlW3hlLlN5bWJvbE1lbWJlcj0yXT1cIlN5bWJvbE1lbWJlclwiLHhlW3hlLkV4cG9ydD00XT1cIkV4cG9ydFwiLHhlW3hlLlByb21pc2U9OF09XCJQcm9taXNlXCIseGVbeGUuTnVsbGFibGU9MTZdPVwiTnVsbGFibGVcIix4ZVt4ZS5SZXNvbHZlZEV4cG9ydD0zMl09XCJSZXNvbHZlZEV4cG9ydFwiLHhlW3hlLlR5cGVPbmx5QWxpYXM9NjRdPVwiVHlwZU9ubHlBbGlhc1wiLHhlW3hlLk9iamVjdExpdGVyYWxNZXRob2Q9MTI4XT1cIk9iamVjdExpdGVyYWxNZXRob2RcIix4ZVt4ZS5TeW1ib2xNZW1iZXJOb0V4cG9ydD0yXT1cIlN5bWJvbE1lbWJlck5vRXhwb3J0XCIseGVbeGUuU3ltYm9sTWVtYmVyRXhwb3J0PTZdPVwiU3ltYm9sTWVtYmVyRXhwb3J0XCJ9KShCfHwoQj17fSkpO2Z1bmN0aW9uIEUoeGUpe3JldHVybiEhKHhlLmtpbmQmMSl9ZnVuY3Rpb24gUSh4ZSl7cmV0dXJuISEoeGUua2luZCYyKX1mdW5jdGlvbiBsZSh4ZSl7cmV0dXJuISEoeGUmJnhlLmtpbmQmNCl9ZnVuY3Rpb24gTih4ZSl7cmV0dXJuISEoeGUmJnhlLmtpbmQ9PT0zMil9ZnVuY3Rpb24gcCh4ZSl7cmV0dXJuIGxlKHhlKXx8Tih4ZSl9ZnVuY3Rpb24gbSh4ZSl7cmV0dXJuKGxlKHhlKXx8Tih4ZSkpJiYhIXhlLmlzRnJvbVBhY2thZ2VKc29ufWZ1bmN0aW9uIEcoeGUpe3JldHVybiEhKHhlLmtpbmQmOCl9ZnVuY3Rpb24gb2UoeGUpe3JldHVybiEhKHhlLmtpbmQmMTYpfWZ1bmN0aW9uIGYoeGUpe3JldHVybiEhKHhlJiZ4ZS5raW5kJjY0KX1mdW5jdGlvbiBUKHhlKXtyZXR1cm4hISh4ZSYmeGUua2luZCYxMjgpfXZhciBLOyhmdW5jdGlvbih4ZSl7eGVbeGUuTm9uZT0wXT1cIk5vbmVcIix4ZVt4ZS5BbGw9MV09XCJBbGxcIix4ZVt4ZS5DbGFzc0VsZW1lbnRLZXl3b3Jkcz0yXT1cIkNsYXNzRWxlbWVudEtleXdvcmRzXCIseGVbeGUuSW50ZXJmYWNlRWxlbWVudEtleXdvcmRzPTNdPVwiSW50ZXJmYWNlRWxlbWVudEtleXdvcmRzXCIseGVbeGUuQ29uc3RydWN0b3JQYXJhbWV0ZXJLZXl3b3Jkcz00XT1cIkNvbnN0cnVjdG9yUGFyYW1ldGVyS2V5d29yZHNcIix4ZVt4ZS5GdW5jdGlvbkxpa2VCb2R5S2V5d29yZHM9NV09XCJGdW5jdGlvbkxpa2VCb2R5S2V5d29yZHNcIix4ZVt4ZS5UeXBlQXNzZXJ0aW9uS2V5d29yZHM9Nl09XCJUeXBlQXNzZXJ0aW9uS2V5d29yZHNcIix4ZVt4ZS5UeXBlS2V5d29yZHM9N109XCJUeXBlS2V5d29yZHNcIix4ZVt4ZS5UeXBlS2V5d29yZD04XT1cIlR5cGVLZXl3b3JkXCIseGVbeGUuTGFzdD04XT1cIkxhc3RcIn0pKEt8fChLPXt9KSk7dmFyIGI7KGZ1bmN0aW9uKHhlKXt4ZVt4ZS5Db250aW51ZT0wXT1cIkNvbnRpbnVlXCIseGVbeGUuU3VjY2Vzcz0xXT1cIlN1Y2Nlc3NcIix4ZVt4ZS5GYWlsPTJdPVwiRmFpbFwifSkoYnx8KGI9e30pKTtmdW5jdGlvbiBzZSh4ZSx2cixtcixBcixPZSxucixNcixQZSxVZSl7dmFyIGZyLERlLGdyLFZyPWUudGltZXN0YW1wKCksVHI9ZS5jcmVhdGVQYWNrYWdlSnNvbkltcG9ydEZpbHRlcihBcixucix2ciksdmk9TXJ8fGUubW9kdWxlUmVzb2x1dGlvblJlc3BlY3RzRXhwb3J0cyhlLmdldEVtaXRNb2R1bGVSZXNvbHV0aW9uS2luZChtci5nZXRDb21waWxlck9wdGlvbnMoKSkpLFVpPSExLFlpPTAsV2k9MCxjdD0wLExpPTAsbnQ9VWUoe3RyeVJlc29sdmU6eHQsc2tpcHBlZEFueTpmdW5jdGlvbigpe3JldHVybiBVaX0scmVzb2x2ZWRBbnk6ZnVuY3Rpb24oKXtyZXR1cm4gV2k+MH0scmVzb2x2ZWRCZXlvbmRMaW1pdDpmdW5jdGlvbigpe3JldHVybiBXaT5DLm1vZHVsZVNwZWNpZmllclJlc29sdXRpb25MaW1pdH19KSxNdD1MaT9cIiAoXCIuY29uY2F0KChjdC9MaSoxMDApLnRvRml4ZWQoMSksXCIlIGhpdCByYXRlKVwiKTpcIlwiO3JldHVybihmcj12ci5sb2cpPT09bnVsbHx8ZnI9PT12b2lkIDB8fGZyLmNhbGwodnIsXCJcIi5jb25jYXQoeGUsXCI6IHJlc29sdmVkIFwiKS5jb25jYXQoV2ksXCIgbW9kdWxlIHNwZWNpZmllcnMsIHBsdXMgXCIpLmNvbmNhdChZaSxcIiBhbWJpZW50IGFuZCBcIikuY29uY2F0KGN0LFwiIGZyb20gY2FjaGVcIikuY29uY2F0KE10KSksKERlPXZyLmxvZyk9PT1udWxsfHxEZT09PXZvaWQgMHx8RGUuY2FsbCh2cixcIlwiLmNvbmNhdCh4ZSxcIjogcmVzcG9uc2UgaXMgXCIpLmNvbmNhdChVaT9cImluY29tcGxldGVcIjpcImNvbXBsZXRlXCIpKSwoZ3I9dnIubG9nKT09PW51bGx8fGdyPT09dm9pZCAwfHxnci5jYWxsKHZyLFwiXCIuY29uY2F0KHhlLFwiOiBcIikuY29uY2F0KGUudGltZXN0YW1wKCktVnIpKSxudDtmdW5jdGlvbiB4dCh1dCxEdCxSdCl7aWYoUnQpe3ZhciBJaT1lLmNvZGVmaXguZ2V0TW9kdWxlU3BlY2lmaWVyRm9yQmVzdEV4cG9ydEluZm8odXQsRHQsT2UsUGUsQXIsbXIsdnIsbnIpO3JldHVybiBJaSYmWWkrKyxJaXx8XCJmYWlsZWRcIn12YXIgS2k9dml8fG5yLmFsbG93SW5jb21wbGV0ZUNvbXBsZXRpb25zJiZXaTxDLm1vZHVsZVNwZWNpZmllclJlc29sdXRpb25MaW1pdCxGaT0hS2kmJm5yLmFsbG93SW5jb21wbGV0ZUNvbXBsZXRpb25zJiZMaTxDLm1vZHVsZVNwZWNpZmllclJlc29sdXRpb25DYWNoZUF0dGVtcHRMaW1pdCx1aT1LaXx8Rmk/ZS5jb2RlZml4LmdldE1vZHVsZVNwZWNpZmllckZvckJlc3RFeHBvcnRJbmZvKHV0LER0LE9lLFBlLEFyLG1yLHZyLG5yLFRyLEZpKTp2b2lkIDA7cmV0dXJuKCFLaSYmIUZpfHxGaSYmIXVpKSYmKFVpPSEwKSxXaSs9KHVpPT1udWxsP3ZvaWQgMDp1aS5jb21wdXRlZFdpdGhvdXRDYWNoZUNvdW50KXx8MCxjdCs9dXQubGVuZ3RoLSgodWk9PW51bGw/dm9pZCAwOnVpLmNvbXB1dGVkV2l0aG91dENhY2hlQ291bnQpfHwwKSxGaSYmTGkrKyx1aXx8KHZpP1wiZmFpbGVkXCI6XCJza2lwcGVkXCIpfX1mdW5jdGlvbiBKKHhlLHZyLG1yLEFyLE9lLG5yLE1yLFBlLFVlLGZyKXt2YXIgRGUsZ3I9WWUoT2UsQXIpLnByZXZpb3VzVG9rZW47aWYoIShNciYmIWUuaXNJblN0cmluZyhBcixPZSxncikmJiFldChBcixNcixncixPZSkpKXtpZihNcj09PVwiIFwiKXJldHVybiBuci5pbmNsdWRlQ29tcGxldGlvbnNGb3JJbXBvcnRTdGF0ZW1lbnRzJiZuci5pbmNsdWRlQ29tcGxldGlvbnNXaXRoSW5zZXJ0VGV4dD97aXNHbG9iYWxDb21wbGV0aW9uOiEwLGlzTWVtYmVyQ29tcGxldGlvbjohMSxpc05ld0lkZW50aWZpZXJMb2NhdGlvbjohMCxpc0luY29tcGxldGU6ITAsZW50cmllczpbXX06dm9pZCAwO3ZhciBWcj12ci5nZXRDb21waWxlck9wdGlvbnMoKSxUcj1uci5hbGxvd0luY29tcGxldGVDb21wbGV0aW9ucz8oRGU9eGUuZ2V0SW5jb21wbGV0ZUNvbXBsZXRpb25zQ2FjaGUpPT09bnVsbHx8RGU9PT12b2lkIDA/dm9pZCAwOkRlLmNhbGwoeGUpOnZvaWQgMDtpZihUciYmUGU9PT0zJiZnciYmZS5pc0lkZW50aWZpZXIoZ3IpKXt2YXIgdmk9cShUcixBcixncix2cix4ZSxucixVZSk7aWYodmkpcmV0dXJuIHZpfWVsc2UgVHI9PW51bGx8fFRyLmNsZWFyKCk7dmFyIFVpPUMuU3RyaW5nQ29tcGxldGlvbnMuZ2V0U3RyaW5nTGl0ZXJhbENvbXBsZXRpb25zKEFyLE9lLGdyLFZyLHhlLHZyLG1yLG5yKTtpZihVaSlyZXR1cm4gVWk7aWYoZ3ImJmUuaXNCcmVha09yQ29udGludWVTdGF0ZW1lbnQoZ3IucGFyZW50KSYmKGdyLmtpbmQ9PT04MXx8Z3Iua2luZD09PTg2fHxnci5raW5kPT09NzkpKXJldHVybiBaKGdyLnBhcmVudCk7dmFyIFlpPWlyKHZyLG1yLEFyLFZyLE9lLG5yLHZvaWQgMCx4ZSxmcixVZSk7aWYoISFZaSlzd2l0Y2goWWkua2luZCl7Y2FzZSAwOnZhciBXaT1YKEFyLHhlLHZyLFZyLG1yLFlpLG5yLGZyLE9lKTtyZXR1cm4gV2khPW51bGwmJldpLmlzSW5jb21wbGV0ZSYmKFRyPT1udWxsfHxUci5zZXQoV2kpKSxXaTtjYXNlIDE6cmV0dXJuIE8oZS5Kc0RvYy5nZXRKU0RvY1RhZ05hbWVDb21wbGV0aW9ucygpKTtjYXNlIDI6cmV0dXJuIE8oZS5Kc0RvYy5nZXRKU0RvY1RhZ0NvbXBsZXRpb25zKCkpO2Nhc2UgMzpyZXR1cm4gTyhlLkpzRG9jLmdldEpTRG9jUGFyYW1ldGVyTmFtZUNvbXBsZXRpb25zKFlpLnRhZykpO2Nhc2UgNDpyZXR1cm4gZWUoWWkua2V5d29yZENvbXBsZXRpb25zLFlpLmlzTmV3SWRlbnRpZmllckxvY2F0aW9uKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKFlpKX19fUMuZ2V0Q29tcGxldGlvbnNBdFBvc2l0aW9uPUo7ZnVuY3Rpb24gaWUoeGUsdnIpe3ZhciBtcixBcixPZT1lLmNvbXBhcmVTdHJpbmdzQ2FzZVNlbnNpdGl2ZVVJKHhlLnNvcnRUZXh0LHZyLnNvcnRUZXh0KTtyZXR1cm4gT2U9PT0wJiYoT2U9ZS5jb21wYXJlU3RyaW5nc0Nhc2VTZW5zaXRpdmVVSSh4ZS5uYW1lLHZyLm5hbWUpKSxPZT09PTAmJigobXI9eGUuZGF0YSk9PT1udWxsfHxtcj09PXZvaWQgMD92b2lkIDA6bXIubW9kdWxlU3BlY2lmaWVyKSYmKChBcj12ci5kYXRhKT09PW51bGx8fEFyPT09dm9pZCAwP3ZvaWQgMDpBci5tb2R1bGVTcGVjaWZpZXIpJiYoT2U9ZS5jb21wYXJlTnVtYmVyT2ZEaXJlY3RvcnlTZXBhcmF0b3JzKHhlLmRhdGEubW9kdWxlU3BlY2lmaWVyLHZyLmRhdGEubW9kdWxlU3BlY2lmaWVyKSksT2U9PT0wPy0xOk9lfWZ1bmN0aW9uIFIoeGUpe3JldHVybiEhKHhlIT1udWxsJiZ4ZS5tb2R1bGVTcGVjaWZpZXIpfWZ1bmN0aW9uIHEoeGUsdnIsbXIsQXIsT2UsbnIsTXIpe3ZhciBQZT14ZS5nZXQoKTtpZighIVBlKXt2YXIgVWU9bXIudGV4dC50b0xvd2VyQ2FzZSgpLGZyPWUuZ2V0RXhwb3J0SW5mb01hcCh2cixPZSxBcixNciksRGU9c2UoXCJjb250aW51ZVByZXZpb3VzSW5jb21wbGV0ZVJlc3BvbnNlXCIsT2UsQXIsdnIsbXIuZ2V0U3RhcnQoKSxuciwhMSxlLmlzVmFsaWRUeXBlT25seUFsaWFzVXNlU2l0ZShtciksZnVuY3Rpb24oZ3Ipe3ZhciBWcj1lLm1hcERlZmluZWQoUGUuZW50cmllcyxmdW5jdGlvbihUcil7dmFyIHZpO2lmKCFUci5oYXNBY3Rpb258fCFUci5zb3VyY2V8fCFUci5kYXRhfHxSKFRyLmRhdGEpKXJldHVybiBUcjtpZighIVdyKFRyLm5hbWUsVWUpKXt2YXIgVWk9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoQnIoVHIubmFtZSxUci5kYXRhLEFyLE9lKSkub3JpZ2luLFlpPWZyLmdldCh2ci5wYXRoLFRyLmRhdGEuZXhwb3J0TWFwS2V5KSxXaT1ZaSYmZ3IudHJ5UmVzb2x2ZShZaSxUci5uYW1lLCFlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUoZS5zdHJpcFF1b3RlcyhVaS5tb2R1bGVTeW1ib2wubmFtZSkpKTtpZihXaT09PVwic2tpcHBlZFwiKXJldHVybiBUcjtpZighV2l8fFdpPT09XCJmYWlsZWRcIil7KHZpPU9lLmxvZyk9PT1udWxsfHx2aT09PXZvaWQgMHx8dmkuY2FsbChPZSxcIlVuZXhwZWN0ZWQgZmFpbHVyZSByZXNvbHZpbmcgYXV0byBpbXBvcnQgZm9yICdcIi5jb25jYXQoVHIubmFtZSxcIicgZnJvbSAnXCIpLmNvbmNhdChUci5zb3VyY2UsXCInXCIpKTtyZXR1cm59dmFyIGN0PUtlKEtlKHt9LFVpKSx7a2luZDozMixtb2R1bGVTcGVjaWZpZXI6V2kubW9kdWxlU3BlY2lmaWVyfSk7cmV0dXJuIFRyLmRhdGE9RChjdCksVHIuc291cmNlPVdlKGN0KSxUci5zb3VyY2VEaXNwbGF5PVtlLnRleHRQYXJ0KGN0Lm1vZHVsZVNwZWNpZmllcildLFRyfX0pO3JldHVybiBnci5za2lwcGVkQW55KCl8fChQZS5pc0luY29tcGxldGU9dm9pZCAwKSxWcn0pO3JldHVybiBQZS5lbnRyaWVzPURlLFBlLmZsYWdzPShQZS5mbGFnc3x8MCl8NCxQZX19ZnVuY3Rpb24gTyh4ZSl7cmV0dXJue2lzR2xvYmFsQ29tcGxldGlvbjohMSxpc01lbWJlckNvbXBsZXRpb246ITEsaXNOZXdJZGVudGlmaWVyTG9jYXRpb246ITEsZW50cmllczp4ZX19ZnVuY3Rpb24gdmUoeGUpe3JldHVybntuYW1lOmUudG9rZW5Ub1N0cmluZyh4ZSksa2luZDpcImtleXdvcmRcIixraW5kTW9kaWZpZXJzOlwiXCIsc29ydFRleHQ6Qy5Tb3J0VGV4dC5HbG9iYWxzT3JLZXl3b3Jkc319ZnVuY3Rpb24gZWUoeGUsdnIpe3JldHVybntpc0dsb2JhbENvbXBsZXRpb246ITEsaXNNZW1iZXJDb21wbGV0aW9uOiExLGlzTmV3SWRlbnRpZmllckxvY2F0aW9uOnZyLGVudHJpZXM6eGUuc2xpY2UoKX19ZnVuY3Rpb24gaGUoeGUsdnIsbXIpe3JldHVybntraW5kOjQsa2V5d29yZENvbXBsZXRpb25zOmxyKHhlLHZyKSxpc05ld0lkZW50aWZpZXJMb2NhdGlvbjptcn19ZnVuY3Rpb24gRih4ZSl7c3dpdGNoKHhlKXtjYXNlIDE1MjpyZXR1cm4gODtkZWZhdWx0OmUuRGVidWcuZmFpbChcIlVua25vd24gbWFwcGluZyBmcm9tIFN5bnRheEtpbmQgdG8gS2V5d29yZENvbXBsZXRpb25GaWx0ZXJzXCIpfX1mdW5jdGlvbiB4KHhlKXtyZXR1cm4oeGU9PW51bGw/dm9pZCAwOnhlLmtpbmQpPT09Nzk/ZS5jcmVhdGVUZXh0U3BhbkZyb21Ob2RlKHhlKTp2b2lkIDB9ZnVuY3Rpb24gWCh4ZSx2cixtcixBcixPZSxucixNcixQZSxVZSl7dmFyIGZyPW5yLnN5bWJvbHMsRGU9bnIuY29udGV4dFRva2VuLGdyPW5yLmNvbXBsZXRpb25LaW5kLFZyPW5yLmlzSW5TbmlwcGV0U2NvcGUsVHI9bnIuaXNOZXdJZGVudGlmaWVyTG9jYXRpb24sdmk9bnIubG9jYXRpb24sVWk9bnIucHJvcGVydHlBY2Nlc3NUb0NvbnZlcnQsWWk9bnIua2V5d29yZEZpbHRlcnMsV2k9bnIubGl0ZXJhbHMsY3Q9bnIuc3ltYm9sVG9PcmlnaW5JbmZvTWFwLExpPW5yLnJlY29tbWVuZGVkQ29tcGxldGlvbixudD1uci5pc0pzeEluaXRpYWxpemVyLE10PW5yLmlzVHlwZU9ubHlMb2NhdGlvbix4dD1uci5pc0pzeElkZW50aWZpZXJFeHBlY3RlZCx1dD1uci5pc1JpZ2h0T2ZPcGVuVGFnLER0PW5yLmltcG9ydENvbXBsZXRpb25Ob2RlLFJ0PW5yLmluc2lkZUpzRG9jVGFnVHlwZUV4cHJlc3Npb24sSWk9bnIuc3ltYm9sVG9Tb3J0VGV4dE1hcCxLaT1uci5oYXNVbnJlc29sdmVkQXV0b0ltcG9ydHM7aWYoZS5nZXRMYW5ndWFnZVZhcmlhbnQoeGUuc2NyaXB0S2luZCk9PT0xKXt2YXIgRmk9eSh2aSx4ZSk7aWYoRmkpcmV0dXJuIEZpfXZhciB1aT1lLmNyZWF0ZVNvcnRlZEFycmF5KCk7aWYoJCh4ZSxBcikpe3ZhciBCdD1GZShmcix1aSx2b2lkIDAsRGUsdmkseGUsdnIsbXIsZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KEFyKSxPZSxncixNcixBcixQZSxNdCxVaSx4dCxudCxEdCxMaSxjdCxJaSx4dCx1dCk7Vih4ZSx2aS5wb3MsQnQsZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KEFyKSx1aSl9ZWxzZXtpZighVHImJighZnJ8fGZyLmxlbmd0aD09PTApJiZZaT09PTApcmV0dXJuO0ZlKGZyLHVpLHZvaWQgMCxEZSx2aSx4ZSx2cixtcixlLmdldEVtaXRTY3JpcHRUYXJnZXQoQXIpLE9lLGdyLE1yLEFyLFBlLE10LFVpLHh0LG50LER0LExpLGN0LElpLHh0LHV0KX1pZihZaSE9PTApZm9yKHZhciB3dD1uZXcgZS5TZXQodWkubWFwKGZ1bmN0aW9uKFFhKXtyZXR1cm4gUWEubmFtZX0pKSxuYT0wLEFpPWxyKFlpLCFSdCYmZS5pc1NvdXJjZUZpbGVKUyh4ZSkpO25hPEFpLmxlbmd0aDtuYSsrKXt2YXIgT2k9QWlbbmFdOyhNdCYmZS5pc1R5cGVLZXl3b3JkKGUuc3RyaW5nVG9Ub2tlbihPaS5uYW1lKSl8fCF3dC5oYXMoT2kubmFtZSkpJiZlLmluc2VydFNvcnRlZCh1aSxPaSxpZSwhMCl9Zm9yKHZhciBqaT1uZXcgZS5TZXQodWkubWFwKGZ1bmN0aW9uKFFhKXtyZXR1cm4gUWEubmFtZX0pKSxWaT0wLGF0PVVyKERlLFVlKTtWaTxhdC5sZW5ndGg7VmkrKyl7dmFyIE9pPWF0W1ZpXTtqaS5oYXMoT2kubmFtZSl8fGUuaW5zZXJ0U29ydGVkKHVpLE9pLGllLCEwKX1mb3IodmFyIEF0PTAsYmE9V2k7QXQ8YmEubGVuZ3RoO0F0Kyspe3ZhciAkYT1iYVtBdF07ZS5pbnNlcnRTb3J0ZWQodWksUCh4ZSxNciwkYSksaWUsITApfXJldHVybntmbGFnczpuci5mbGFncyxpc0dsb2JhbENvbXBsZXRpb246VnIsaXNJbmNvbXBsZXRlOk1yLmFsbG93SW5jb21wbGV0ZUNvbXBsZXRpb25zJiZLaT8hMDp2b2lkIDAsaXNNZW1iZXJDb21wbGV0aW9uOkEoZ3IpLGlzTmV3SWRlbnRpZmllckxvY2F0aW9uOlRyLG9wdGlvbmFsUmVwbGFjZW1lbnRTcGFuOngodmkpLGVudHJpZXM6dWl9fWZ1bmN0aW9uICQoeGUsdnIpe3JldHVybiBlLmlzU291cmNlRmlsZUpTKHhlKSYmIWUuaXNDaGVja0pzRW5hYmxlZEZvckZpbGUoeGUsdnIpfWZ1bmN0aW9uIEEoeGUpe3N3aXRjaCh4ZSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24geSh4ZSx2cil7dmFyIG1yPWUuZmluZEFuY2VzdG9yKHhlLGZ1bmN0aW9uKGZyKXtzd2l0Y2goZnIua2luZCl7Y2FzZSAyODE6cmV0dXJuITA7Y2FzZSA0MzpjYXNlIDMxOmNhc2UgNzk6Y2FzZSAyMDY6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm5cInF1aXRcIn19KTtpZihtcil7dmFyIEFyPSEhZS5maW5kQ2hpbGRPZktpbmQobXIsMzEsdnIpLE9lPW1yLnBhcmVudC5vcGVuaW5nRWxlbWVudC50YWdOYW1lLG5yPU9lLmdldFRleHQodnIpLE1yPW5yKyhBcj9cIlwiOlwiPlwiKSxQZT1lLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUobXIudGFnTmFtZSksVWU9e25hbWU6TXIsa2luZDpcImNsYXNzXCIsa2luZE1vZGlmaWVyczp2b2lkIDAsc29ydFRleHQ6Qy5Tb3J0VGV4dC5Mb2NhdGlvblByaW9yaXR5fTtyZXR1cm57aXNHbG9iYWxDb21wbGV0aW9uOiExLGlzTWVtYmVyQ29tcGxldGlvbjohMCxpc05ld0lkZW50aWZpZXJMb2NhdGlvbjohMSxvcHRpb25hbFJlcGxhY2VtZW50U3BhbjpQZSxlbnRyaWVzOltVZV19fX1mdW5jdGlvbiBWKHhlLHZyLG1yLEFyLE9lKXtlLmdldE5hbWVUYWJsZSh4ZSkuZm9yRWFjaChmdW5jdGlvbihucixNcil7aWYobnIhPT12cil7dmFyIFBlPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoTXIpOyFtci5oYXMoUGUpJiZlLmlzSWRlbnRpZmllclRleHQoUGUsQXIpJiYobXIuYWRkKFBlKSxlLmluc2VydFNvcnRlZChPZSx7bmFtZTpQZSxraW5kOlwid2FybmluZ1wiLGtpbmRNb2RpZmllcnM6XCJcIixzb3J0VGV4dDpDLlNvcnRUZXh0LkphdmFzY3JpcHRJZGVudGlmaWVycyxpc0Zyb21VbmNoZWNrZWRGaWxlOiEwfSxpZSkpfX0pfWZ1bmN0aW9uIEwoeGUsdnIsbXIpe3JldHVybiB0eXBlb2YgbXI9PVwib2JqZWN0XCI/ZS5wc2V1ZG9CaWdJbnRUb1N0cmluZyhtcikrXCJuXCI6ZS5pc1N0cmluZyhtcik/ZS5xdW90ZSh4ZSx2cixtcik6SlNPTi5zdHJpbmdpZnkobXIpfWZ1bmN0aW9uIFAoeGUsdnIsbXIpe3JldHVybntuYW1lOkwoeGUsdnIsbXIpLGtpbmQ6XCJzdHJpbmdcIixraW5kTW9kaWZpZXJzOlwiXCIsc29ydFRleHQ6Qy5Tb3J0VGV4dC5Mb2NhdGlvblByaW9yaXR5fX1mdW5jdGlvbiBrKHhlLHZyLG1yLEFyLE9lLG5yLE1yLFBlLFVlLGZyLERlLGdyLFZyLFRyLHZpLFVpLFlpLFdpLGN0LExpLG50LE10KXt2YXIgeHQsdXQsRHQsUnQ9ZS5nZXRSZXBsYWNlbWVudFNwYW5Gb3JDb250ZXh0VG9rZW4obXIpLElpLEtpLEZpPVdlKERlKSx1aSxCdCx3dCxuYT1QZS5nZXRUeXBlQ2hlY2tlcigpLEFpPURlJiZvZShEZSksT2k9RGUmJlEoRGUpfHxmcjtpZihEZSYmRShEZSkpRHQ9ZnI/XCJ0aGlzXCIuY29uY2F0KEFpP1wiPy5cIjpcIlwiLFwiW1wiKS5jb25jYXQobmUobnIsV2ksVWUpLFwiXVwiKTpcInRoaXNcIi5jb25jYXQoQWk/XCI/LlwiOlwiLlwiKS5jb25jYXQoVWUpO2Vsc2UgaWYoKE9pfHxBaSkmJlZyKXtEdD1PaT9mcj9cIltcIi5jb25jYXQobmUobnIsV2ksVWUpLFwiXVwiKTpcIltcIi5jb25jYXQoVWUsXCJdXCIpOlVlLChBaXx8VnIucXVlc3Rpb25Eb3RUb2tlbikmJihEdD1cIj8uXCIuY29uY2F0KER0KSk7dmFyIGppPWUuZmluZENoaWxkT2ZLaW5kKFZyLDI0LG5yKXx8ZS5maW5kQ2hpbGRPZktpbmQoVnIsMjgsbnIpO2lmKCFqaSlyZXR1cm47dmFyIFZpPWUuc3RhcnRzV2l0aChVZSxWci5uYW1lLnRleHQpP1ZyLm5hbWUuZW5kOmppLmVuZDtSdD1lLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhqaS5nZXRTdGFydChuciksVmkpfWlmKFRyJiYoRHQ9PT12b2lkIDAmJihEdD1VZSksRHQ9XCJ7XCIuY29uY2F0KER0LFwifVwiKSx0eXBlb2YgVHIhPVwiYm9vbGVhblwiJiYoUnQ9ZS5jcmVhdGVUZXh0U3BhbkZyb21Ob2RlKFRyLG5yKSkpLERlJiZHKERlKSYmVnIpe0R0PT09dm9pZCAwJiYoRHQ9VWUpO3ZhciBhdD1lLmZpbmRQcmVjZWRpbmdUb2tlbihWci5wb3MsbnIpLEF0PVwiXCI7YXQmJmUucG9zaXRpb25Jc0FTSUNhbmRpZGF0ZShhdC5lbmQsYXQucGFyZW50LG5yKSYmKEF0PVwiO1wiKSxBdCs9XCIoYXdhaXQgXCIuY29uY2F0KFZyLmV4cHJlc3Npb24uZ2V0VGV4dCgpLFwiKVwiKSxEdD1mcj9cIlwiLmNvbmNhdChBdCkuY29uY2F0KER0KTpcIlwiLmNvbmNhdChBdCkuY29uY2F0KEFpP1wiPy5cIjpcIi5cIikuY29uY2F0KER0KSxSdD1lLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhWci5nZXRTdGFydChuciksVnIuZW5kKX1pZihOKERlKSYmKHVpPVtlLnRleHRQYXJ0KERlLm1vZHVsZVNwZWNpZmllcildLHZpJiYoeHQ9ZyhVZSx2aSxBcixEZSxVaSxZaSxXaSksRHQ9eHQuaW5zZXJ0VGV4dCxSdD14dC5yZXBsYWNlbWVudFNwYW4sS2k9V2kuaW5jbHVkZUNvbXBsZXRpb25zV2l0aFNuaXBwZXRUZXh0PyEwOnZvaWQgMCkpLChEZT09bnVsbD92b2lkIDA6RGUua2luZCk9PT02NCYmKEJ0PSEwKSxXaS5pbmNsdWRlQ29tcGxldGlvbnNXaXRoQ2xhc3NNZW1iZXJTbmlwcGV0cyYmV2kuaW5jbHVkZUNvbXBsZXRpb25zV2l0aEluc2VydFRleHQmJmN0PT09MyYmWSh4ZSxPZSkpe3ZhciBiYT12b2lkIDA7dXQ9VShNcixQZSxZaSxXaSxVZSx4ZSxPZSxBcixMaSksRHQ9dXQuaW5zZXJ0VGV4dCxLaT11dC5pc1NuaXBwZXQsYmE9dXQuaW1wb3J0QWRkZXIsUnQ9dXQucmVwbGFjZW1lbnRTcGFuLHZyPUMuU29ydFRleHQuQ2xhc3NNZW1iZXJTbmlwcGV0cyxiYSE9bnVsbCYmYmEuaGFzRml4ZXMoKSYmKEJ0PSEwLEZpPXcuQ2xhc3NNZW1iZXJTbmlwcGV0KX1pZihEZSYmVChEZSkmJihEdD1EZS5pbnNlcnRUZXh0LEtpPURlLmlzU25pcHBldCx3dD1EZS5sYWJlbERldGFpbHMsV2kudXNlTGFiZWxEZXRhaWxzSW5Db21wbGV0aW9uRW50cmllc3x8KFVlPVVlK3d0LmRldGFpbCx3dD12b2lkIDApLEZpPXcuT2JqZWN0TGl0ZXJhbE1ldGhvZFNuaXBwZXQsdnI9Qy5Tb3J0VGV4dC5Tb3J0QmVsb3codnIpKSxudCYmIU10JiZXaS5pbmNsdWRlQ29tcGxldGlvbnNXaXRoU25pcHBldFRleHQmJldpLmpzeEF0dHJpYnV0ZUNvbXBsZXRpb25TdHlsZSYmV2kuanN4QXR0cmlidXRlQ29tcGxldGlvblN0eWxlIT09XCJub25lXCIpe3ZhciAkYT1XaS5qc3hBdHRyaWJ1dGVDb21wbGV0aW9uU3R5bGU9PT1cImJyYWNlc1wiLFFhPW5hLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oeGUsT2UpO1dpLmpzeEF0dHJpYnV0ZUNvbXBsZXRpb25TdHlsZT09PVwiYXV0b1wiJiYhKFFhLmZsYWdzJjUyOCkmJiEoUWEuZmxhZ3MmMTA0ODU3NiYmZS5maW5kKFFhLnR5cGVzLGZ1bmN0aW9uKGFpKXtyZXR1cm4hIShhaS5mbGFncyY1MjgpfSkpJiYoUWEuZmxhZ3MmNDAyNjUzMzE2fHxRYS5mbGFncyYxMDQ4NTc2JiZlLmV2ZXJ5KFFhLnR5cGVzLGZ1bmN0aW9uKGFpKXtyZXR1cm4hIShhaS5mbGFncyY0MDI2ODYwODQpfSk/KER0PVwiXCIuY29uY2F0KGUuZXNjYXBlU25pcHBldFRleHQoVWUpLFwiPVwiKS5jb25jYXQoZS5xdW90ZShucixXaSxcIiQxXCIpKSxLaT0hMCk6JGE9ITApLCRhJiYoRHQ9XCJcIi5jb25jYXQoZS5lc2NhcGVTbmlwcGV0VGV4dChVZSksXCI9eyQxfVwiKSxLaT0hMCl9aWYoIShEdCE9PXZvaWQgMCYmIVdpLmluY2x1ZGVDb21wbGV0aW9uc1dpdGhJbnNlcnRUZXh0KSlyZXR1cm4obGUoRGUpfHxOKERlKSkmJihJaT1EKERlKSxCdD0hdmkpLHtuYW1lOlVlLGtpbmQ6ZS5TeW1ib2xEaXNwbGF5LmdldFN5bWJvbEtpbmQobmEseGUsT2UpLGtpbmRNb2RpZmllcnM6ZS5TeW1ib2xEaXNwbGF5LmdldFN5bWJvbE1vZGlmaWVycyhuYSx4ZSksc29ydFRleHQ6dnIsc291cmNlOkZpLGhhc0FjdGlvbjpCdD8hMDp2b2lkIDAsaXNSZWNvbW1lbmRlZDp1ZSh4ZSxncixuYSl8fHZvaWQgMCxpbnNlcnRUZXh0OkR0LHJlcGxhY2VtZW50U3BhbjpSdCxzb3VyY2VEaXNwbGF5OnVpLGxhYmVsRGV0YWlsczp3dCxpc1NuaXBwZXQ6S2ksaXNQYWNrYWdlSnNvbkltcG9ydDptKERlKXx8dm9pZCAwLGlzSW1wb3J0U3RhdGVtZW50Q29tcGxldGlvbjohIXZpfHx2b2lkIDAsZGF0YTpJaX19ZnVuY3Rpb24gWSh4ZSx2cil7aWYoZS5pc0luSlNGaWxlKHZyKSlyZXR1cm4hMTt2YXIgbXI9MTA2NTAwO3JldHVybiEhKHhlLmZsYWdzJm1yKSYmKGUuaXNDbGFzc0xpa2UodnIpfHx2ci5wYXJlbnQmJnZyLnBhcmVudC5wYXJlbnQmJmUuaXNDbGFzc0VsZW1lbnQodnIucGFyZW50KSYmdnI9PT12ci5wYXJlbnQubmFtZSYmZS5pc0NsYXNzTGlrZSh2ci5wYXJlbnQucGFyZW50KXx8dnIucGFyZW50JiZlLmlzU3ludGF4TGlzdCh2cikmJmUuaXNDbGFzc0xpa2UodnIucGFyZW50KSl9ZnVuY3Rpb24gVSh4ZSx2cixtcixBcixPZSxucixNcixQZSxVZSl7dmFyIGZyPWUuZmluZEFuY2VzdG9yKE1yLGUuaXNDbGFzc0xpa2UpO2lmKCFmcilyZXR1cm57aW5zZXJ0VGV4dDpPZX07dmFyIERlLGdyLFZyPU9lLFRyPXZyLmdldFR5cGVDaGVja2VyKCksdmk9TXIuZ2V0U291cmNlRmlsZSgpLFVpPWQoe3JlbW92ZUNvbW1lbnRzOiEwLG1vZHVsZTptci5tb2R1bGUsdGFyZ2V0Om1yLnRhcmdldCxvbWl0VHJhaWxpbmdTZW1pY29sb246ITEsbmV3TGluZTplLmdldE5ld0xpbmVLaW5kKGUuZ2V0TmV3TGluZUNoYXJhY3RlcihtcixlLm1heWJlQmluZCh4ZSx4ZS5nZXROZXdMaW5lKSkpfSksWWk9ZS5jb2RlZml4LmNyZWF0ZUltcG9ydEFkZGVyKHZpLHZyLEFyLHhlKSxXaTtpZihBci5pbmNsdWRlQ29tcGxldGlvbnNXaXRoU25pcHBldFRleHQpe0RlPSEwO3ZhciBjdD1lLmZhY3RvcnkuY3JlYXRlRW1wdHlTdGF0ZW1lbnQoKTtXaT1lLmZhY3RvcnkuY3JlYXRlQmxvY2soW2N0XSwhMCksZS5zZXRTbmlwcGV0RWxlbWVudChjdCx7a2luZDowLG9yZGVyOjB9KX1lbHNlIFdpPWUuZmFjdG9yeS5jcmVhdGVCbG9jayhbXSwhMCk7dmFyIExpPTAsbnQ9aihQZSksTXQ9bnQubW9kaWZpZXJzLHh0PW50LnNwYW4sdXQ9ISEoTXQmMTI4KSxEdD1bXTtpZihlLmNvZGVmaXguYWRkTmV3Tm9kZUZvck1lbWJlclN5bWJvbChucixmcix2aSx7cHJvZ3JhbTp2cixob3N0OnhlfSxBcixZaSxmdW5jdGlvbihJaSl7dmFyIEtpPTA7dXQmJihLaXw9MTI4KSxlLmlzQ2xhc3NFbGVtZW50KElpKSYmVHIuZ2V0TWVtYmVyT3ZlcnJpZGVNb2RpZmllclN0YXR1cyhmcixJaSk9PT0xJiYoS2l8PTE2Mzg0KSxEdC5sZW5ndGh8fChMaT1JaS5tb2RpZmllckZsYWdzQ2FjaGV8S2l8TXQpLElpPWUuZmFjdG9yeS51cGRhdGVNb2RpZmllcnMoSWksTGkpLER0LnB1c2goSWkpfSxXaSwyLHV0KSxEdC5sZW5ndGgpe3ZhciBSdD0xMzEwNzM7Z3I9eHQsVWU/VnI9VWkucHJpbnRBbmRGb3JtYXRTbmlwcGV0TGlzdChSdCxlLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KER0KSx2aSxVZSk6VnI9VWkucHJpbnRTbmlwcGV0TGlzdChSdCxlLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KER0KSx2aSl9cmV0dXJue2luc2VydFRleHQ6VnIsaXNTbmlwcGV0OkRlLGltcG9ydEFkZGVyOllpLHJlcGxhY2VtZW50U3Bhbjpncn19ZnVuY3Rpb24gaih4ZSl7aWYoIXhlKXJldHVybnttb2RpZmllcnM6MH07dmFyIHZyPTAsbXIsQXI7cmV0dXJuKEFyPUgoeGUpKSYmKHZyfD1lLm1vZGlmaWVyVG9GbGFnKEFyKSxtcj1lLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUoeGUpKSxlLmlzUHJvcGVydHlEZWNsYXJhdGlvbih4ZS5wYXJlbnQpJiYodnJ8PWUubW9kaWZpZXJzVG9GbGFncyh4ZS5wYXJlbnQubW9kaWZpZXJzKSxtcj1lLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUoeGUucGFyZW50KSkse21vZGlmaWVyczp2cixzcGFuOm1yfX1mdW5jdGlvbiBIKHhlKXtpZihlLmlzTW9kaWZpZXIoeGUpKXJldHVybiB4ZS5raW5kO2lmKGUuaXNJZGVudGlmaWVyKHhlKSYmeGUub3JpZ2luYWxLZXl3b3JkS2luZCYmZS5pc01vZGlmaWVyS2luZCh4ZS5vcmlnaW5hbEtleXdvcmRLaW5kKSlyZXR1cm4geGUub3JpZ2luYWxLZXl3b3JkS2luZH1mdW5jdGlvbiBJKHhlLHZyLG1yLEFyLE9lLG5yLE1yLFBlKXt2YXIgVWU9TXIuaW5jbHVkZUNvbXBsZXRpb25zV2l0aFNuaXBwZXRUZXh0fHx2b2lkIDAsZnI9dnIsRGU9bXIuZ2V0U291cmNlRmlsZSgpLGdyPWwoeGUsbXIsRGUsQXIsT2UsTXIpO2lmKCEhZ3Ipe3ZhciBWcj1kKHtyZW1vdmVDb21tZW50czohMCxtb2R1bGU6bnIubW9kdWxlLHRhcmdldDpuci50YXJnZXQsb21pdFRyYWlsaW5nU2VtaWNvbG9uOiExLG5ld0xpbmU6ZS5nZXROZXdMaW5lS2luZChlLmdldE5ld0xpbmVDaGFyYWN0ZXIobnIsZS5tYXliZUJpbmQoT2UsT2UuZ2V0TmV3TGluZSkpKX0pO1BlP2ZyPVZyLnByaW50QW5kRm9ybWF0U25pcHBldExpc3QoODAsZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShbZ3JdLCEwKSxEZSxQZSk6ZnI9VnIucHJpbnRTbmlwcGV0TGlzdCg4MCxlLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KFtncl0sITApLERlKTt2YXIgVHI9ZS5jcmVhdGVQcmludGVyKHtyZW1vdmVDb21tZW50czohMCxtb2R1bGU6bnIubW9kdWxlLHRhcmdldDpuci50YXJnZXQsb21pdFRyYWlsaW5nU2VtaWNvbG9uOiEwfSksdmk9ZS5mYWN0b3J5LmNyZWF0ZU1ldGhvZFNpZ25hdHVyZSh2b2lkIDAsXCJcIixnci5xdWVzdGlvblRva2VuLGdyLnR5cGVQYXJhbWV0ZXJzLGdyLnBhcmFtZXRlcnMsZ3IudHlwZSksVWk9e2RldGFpbDpUci5wcmludE5vZGUoNCx2aSxEZSl9O3JldHVybntpc1NuaXBwZXQ6VWUsaW5zZXJ0VGV4dDpmcixsYWJlbERldGFpbHM6VWl9fX1mdW5jdGlvbiBsKHhlLHZyLG1yLEFyLE9lLG5yKXt2YXIgTXI9eGUuZ2V0RGVjbGFyYXRpb25zKCk7aWYoISEoTXImJk1yLmxlbmd0aCkpe3ZhciBQZT1Bci5nZXRUeXBlQ2hlY2tlcigpLFVlPU1yWzBdLGZyPWUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihVZSksITEpLERlPVBlLmdldFdpZGVuZWRUeXBlKFBlLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oeGUsdnIpKSxncj1lLmdldFF1b3RlUHJlZmVyZW5jZShtcixuciksVnI9Z3I9PT0wPzI2ODQzNTQ1Njp2b2lkIDA7c3dpdGNoKFVlLmtpbmQpe2Nhc2UgMTY2OmNhc2UgMTY3OmNhc2UgMTY4OmNhc2UgMTY5Ont2YXIgVHI9RGUuZmxhZ3MmMTA0ODU3NiYmRGUudHlwZXMubGVuZ3RoPDEwP1BlLmdldFVuaW9uVHlwZShEZS50eXBlcywyKTpEZTtpZihUci5mbGFncyYxMDQ4NTc2KXt2YXIgdmk9ZS5maWx0ZXIoVHIudHlwZXMsZnVuY3Rpb24obnQpe3JldHVybiBQZS5nZXRTaWduYXR1cmVzT2ZUeXBlKG50LDApLmxlbmd0aD4wfSk7aWYodmkubGVuZ3RoPT09MSlUcj12aVswXTtlbHNlIHJldHVybn12YXIgVWk9UGUuZ2V0U2lnbmF0dXJlc09mVHlwZShUciwwKTtpZihVaS5sZW5ndGghPT0xKXJldHVybjt2YXIgWWk9UGUudHlwZVRvVHlwZU5vZGUoVHIsdnIsVnIsZS5jb2RlZml4LmdldE5vb3BTeW1ib2xUcmFja2VyV2l0aFJlc29sdmVyKHtwcm9ncmFtOkFyLGhvc3Q6T2V9KSk7aWYoIVlpfHwhZS5pc0Z1bmN0aW9uVHlwZU5vZGUoWWkpKXJldHVybjt2YXIgV2k9dm9pZCAwO2lmKG5yLmluY2x1ZGVDb21wbGV0aW9uc1dpdGhTbmlwcGV0VGV4dCl7dmFyIGN0PWUuZmFjdG9yeS5jcmVhdGVFbXB0eVN0YXRlbWVudCgpO1dpPWUuZmFjdG9yeS5jcmVhdGVCbG9jayhbY3RdLCEwKSxlLnNldFNuaXBwZXRFbGVtZW50KGN0LHtraW5kOjAsb3JkZXI6MH0pfWVsc2UgV2k9ZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKFtdLCEwKTt2YXIgTGk9WWkucGFyYW1ldGVycy5tYXAoZnVuY3Rpb24obnQpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxudC5kb3REb3REb3RUb2tlbixudC5uYW1lLG50LnF1ZXN0aW9uVG9rZW4sdm9pZCAwLG50LmluaXRpYWxpemVyKX0pO3JldHVybiBlLmZhY3RvcnkuY3JlYXRlTWV0aG9kRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsZnIsdm9pZCAwLHZvaWQgMCxMaSx2b2lkIDAsV2kpfWRlZmF1bHQ6cmV0dXJufX19ZnVuY3Rpb24gZCh4ZSl7dmFyIHZyLG1yPWUudGV4dENoYW5nZXMuY3JlYXRlV3JpdGVyKGUuZ2V0TmV3TGluZUNoYXJhY3Rlcih4ZSkpLEFyPWUuY3JlYXRlUHJpbnRlcih4ZSxtciksT2U9S2UoS2Uoe30sbXIpLHt3cml0ZTpmdW5jdGlvbihmcil7cmV0dXJuIG5yKGZyLGZ1bmN0aW9uKCl7cmV0dXJuIG1yLndyaXRlKGZyKX0pfSxub25Fc2NhcGluZ1dyaXRlOm1yLndyaXRlLHdyaXRlTGl0ZXJhbDpmdW5jdGlvbihmcil7cmV0dXJuIG5yKGZyLGZ1bmN0aW9uKCl7cmV0dXJuIG1yLndyaXRlTGl0ZXJhbChmcil9KX0sd3JpdGVTdHJpbmdMaXRlcmFsOmZ1bmN0aW9uKGZyKXtyZXR1cm4gbnIoZnIsZnVuY3Rpb24oKXtyZXR1cm4gbXIud3JpdGVTdHJpbmdMaXRlcmFsKGZyKX0pfSx3cml0ZVN5bWJvbDpmdW5jdGlvbihmcixEZSl7cmV0dXJuIG5yKGZyLGZ1bmN0aW9uKCl7cmV0dXJuIG1yLndyaXRlU3ltYm9sKGZyLERlKX0pfSx3cml0ZVBhcmFtZXRlcjpmdW5jdGlvbihmcil7cmV0dXJuIG5yKGZyLGZ1bmN0aW9uKCl7cmV0dXJuIG1yLndyaXRlUGFyYW1ldGVyKGZyKX0pfSx3cml0ZUNvbW1lbnQ6ZnVuY3Rpb24oZnIpe3JldHVybiBucihmcixmdW5jdGlvbigpe3JldHVybiBtci53cml0ZUNvbW1lbnQoZnIpfSl9LHdyaXRlUHJvcGVydHk6ZnVuY3Rpb24oZnIpe3JldHVybiBucihmcixmdW5jdGlvbigpe3JldHVybiBtci53cml0ZVByb3BlcnR5KGZyKX0pfX0pO3JldHVybntwcmludFNuaXBwZXRMaXN0Ok1yLHByaW50QW5kRm9ybWF0U25pcHBldExpc3Q6VWV9O2Z1bmN0aW9uIG5yKGZyLERlKXt2YXIgZ3I9ZS5lc2NhcGVTbmlwcGV0VGV4dChmcik7aWYoZ3IhPT1mcil7dmFyIFZyPW1yLmdldFRleHRQb3MoKTtEZSgpO3ZhciBUcj1tci5nZXRUZXh0UG9zKCk7dnI9ZS5hcHBlbmQodnJ8fCh2cj1bXSkse25ld1RleHQ6Z3Isc3Bhbjp7c3RhcnQ6VnIsbGVuZ3RoOlRyLVZyfX0pfWVsc2UgRGUoKX1mdW5jdGlvbiBNcihmcixEZSxncil7dmFyIFZyPVBlKGZyLERlLGdyKTtyZXR1cm4gdnI/ZS50ZXh0Q2hhbmdlcy5hcHBseUNoYW5nZXMoVnIsdnIpOlZyfWZ1bmN0aW9uIFBlKGZyLERlLGdyKXtyZXR1cm4gdnI9dm9pZCAwLE9lLmNsZWFyKCksQXIud3JpdGVMaXN0KGZyLERlLGdyLE9lKSxPZS5nZXRUZXh0KCl9ZnVuY3Rpb24gVWUoZnIsRGUsZ3IsVnIpe3ZhciBUcj17dGV4dDpQZShmcixEZSxnciksZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb246ZnVuY3Rpb24oV2kpe3JldHVybiBlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHRoaXMsV2kpfX0sdmk9ZS5nZXRGb3JtYXRDb2RlU2V0dGluZ3NGb3JXcml0aW5nKFZyLGdyKSxVaT1lLmZsYXRNYXAoRGUsZnVuY3Rpb24oV2kpe3ZhciBjdD1lLnRleHRDaGFuZ2VzLmFzc2lnblBvc2l0aW9uc1RvTm9kZShXaSk7cmV0dXJuIGUuZm9ybWF0dGluZy5mb3JtYXROb2RlR2l2ZW5JbmRlbnRhdGlvbihjdCxUcixnci5sYW5ndWFnZVZhcmlhbnQsMCwwLEtlKEtlKHt9LFZyKSx7b3B0aW9uczp2aX0pKX0pLFlpPXZyP2Uuc3RhYmxlU29ydChlLmNvbmNhdGVuYXRlKFVpLHZyKSxmdW5jdGlvbihXaSxjdCl7cmV0dXJuIGUuY29tcGFyZVRleHRTcGFucyhXaS5zcGFuLGN0LnNwYW4pfSk6VWk7cmV0dXJuIGUudGV4dENoYW5nZXMuYXBwbHlDaGFuZ2VzKFRyLnRleHQsWWkpfX1mdW5jdGlvbiBEKHhlKXt2YXIgdnI9eGUuZmlsZU5hbWU/dm9pZCAwOmUuc3RyaXBRdW90ZXMoeGUubW9kdWxlU3ltYm9sLm5hbWUpLG1yPXhlLmlzRnJvbVBhY2thZ2VKc29uPyEwOnZvaWQgMDtpZihOKHhlKSl7dmFyIEFyPXtleHBvcnROYW1lOnhlLmV4cG9ydE5hbWUsbW9kdWxlU3BlY2lmaWVyOnhlLm1vZHVsZVNwZWNpZmllcixhbWJpZW50TW9kdWxlTmFtZTp2cixmaWxlTmFtZTp4ZS5maWxlTmFtZSxpc1BhY2thZ2VKc29uSW1wb3J0Om1yfTtyZXR1cm4gQXJ9dmFyIE9lPXtleHBvcnROYW1lOnhlLmV4cG9ydE5hbWUsZXhwb3J0TWFwS2V5OnhlLmV4cG9ydE1hcEtleSxmaWxlTmFtZTp4ZS5maWxlTmFtZSxhbWJpZW50TW9kdWxlTmFtZTp4ZS5maWxlTmFtZT92b2lkIDA6ZS5zdHJpcFF1b3Rlcyh4ZS5tb2R1bGVTeW1ib2wubmFtZSksaXNQYWNrYWdlSnNvbkltcG9ydDp4ZS5pc0Zyb21QYWNrYWdlSnNvbj8hMDp2b2lkIDB9O3JldHVybiBPZX1mdW5jdGlvbiBmZSh4ZSx2cixtcil7dmFyIEFyPXhlLmV4cG9ydE5hbWU9PT1cImRlZmF1bHRcIixPZT0hIXhlLmlzUGFja2FnZUpzb25JbXBvcnQ7aWYoUih4ZSkpe3ZhciBucj17a2luZDozMixleHBvcnROYW1lOnhlLmV4cG9ydE5hbWUsbW9kdWxlU3BlY2lmaWVyOnhlLm1vZHVsZVNwZWNpZmllcixzeW1ib2xOYW1lOnZyLGZpbGVOYW1lOnhlLmZpbGVOYW1lLG1vZHVsZVN5bWJvbDptcixpc0RlZmF1bHRFeHBvcnQ6QXIsaXNGcm9tUGFja2FnZUpzb246T2V9O3JldHVybiBucn12YXIgTXI9e2tpbmQ6NCxleHBvcnROYW1lOnhlLmV4cG9ydE5hbWUsZXhwb3J0TWFwS2V5OnhlLmV4cG9ydE1hcEtleSxzeW1ib2xOYW1lOnZyLGZpbGVOYW1lOnhlLmZpbGVOYW1lLG1vZHVsZVN5bWJvbDptcixpc0RlZmF1bHRFeHBvcnQ6QXIsaXNGcm9tUGFja2FnZUpzb246T2V9O3JldHVybiBNcn1mdW5jdGlvbiBnKHhlLHZyLG1yLEFyLE9lLG5yLE1yKXt2YXIgUGUsVWUsZnIsRGU9dnIuZ2V0U291cmNlRmlsZSgpLGdyPWUuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShlLmZpbmRBbmNlc3Rvcih2cixlLm9yKGUuaXNJbXBvcnREZWNsYXJhdGlvbixlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24pKXx8dnIsRGUpLFZyPWUucXVvdGUoRGUsTXIsQXIubW9kdWxlU3BlY2lmaWVyKSxUcj1Bci5pc0RlZmF1bHRFeHBvcnQ/MTpBci5leHBvcnROYW1lPT09XCJleHBvcnQ9XCI/MjowLHZpPU1yLmluY2x1ZGVDb21wbGV0aW9uc1dpdGhTbmlwcGV0VGV4dD9cIiQxXCI6XCJcIixVaT1lLmNvZGVmaXguZ2V0SW1wb3J0S2luZChEZSxUcixuciwhMCksWWk9KChVZT0oUGU9ZS50cnlDYXN0KHZyLGUuaXNJbXBvcnREZWNsYXJhdGlvbikpPT09bnVsbHx8UGU9PT12b2lkIDA/dm9pZCAwOlBlLmltcG9ydENsYXVzZSk9PT1udWxsfHxVZT09PXZvaWQgMD92b2lkIDA6VWUuaXNUeXBlT25seSl8fCgoZnI9ZS50cnlDYXN0KHZyLGUuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbikpPT09bnVsbHx8ZnI9PT12b2lkIDA/dm9pZCAwOmZyLmlzVHlwZU9ubHkpLFdpPWFlKHZyLG1yKSxjdD1ZaT9cIiBcIi5jb25jYXQoZS50b2tlblRvU3RyaW5nKDE1MiksXCIgXCIpOlwiIFwiLExpPVdpP1wiXCIuY29uY2F0KGUudG9rZW5Ub1N0cmluZygxNTIpLFwiIFwiKTpcIlwiLG50PU9lP1wiO1wiOlwiXCI7c3dpdGNoKFVpKXtjYXNlIDM6cmV0dXJue3JlcGxhY2VtZW50U3BhbjpncixpbnNlcnRUZXh0OlwiaW1wb3J0XCIuY29uY2F0KGN0KS5jb25jYXQoZS5lc2NhcGVTbmlwcGV0VGV4dCh4ZSkpLmNvbmNhdCh2aSxcIiA9IHJlcXVpcmUoXCIpLmNvbmNhdChWcixcIilcIikuY29uY2F0KG50KX07Y2FzZSAxOnJldHVybntyZXBsYWNlbWVudFNwYW46Z3IsaW5zZXJ0VGV4dDpcImltcG9ydFwiLmNvbmNhdChjdCkuY29uY2F0KGUuZXNjYXBlU25pcHBldFRleHQoeGUpKS5jb25jYXQodmksXCIgZnJvbSBcIikuY29uY2F0KFZyKS5jb25jYXQobnQpfTtjYXNlIDI6cmV0dXJue3JlcGxhY2VtZW50U3BhbjpncixpbnNlcnRUZXh0OlwiaW1wb3J0XCIuY29uY2F0KGN0LFwiKiBhcyBcIikuY29uY2F0KGUuZXNjYXBlU25pcHBldFRleHQoeGUpLFwiIGZyb20gXCIpLmNvbmNhdChWcikuY29uY2F0KG50KX07Y2FzZSAwOnJldHVybntyZXBsYWNlbWVudFNwYW46Z3IsaW5zZXJ0VGV4dDpcImltcG9ydFwiLmNvbmNhdChjdCxcInsgXCIpLmNvbmNhdChMaSkuY29uY2F0KGUuZXNjYXBlU25pcHBldFRleHQoeGUpKS5jb25jYXQodmksXCIgfSBmcm9tIFwiKS5jb25jYXQoVnIpLmNvbmNhdChudCl9fX1mdW5jdGlvbiBuZSh4ZSx2cixtcil7cmV0dXJuL15cXGQrJC8udGVzdChtcik/bXI6ZS5xdW90ZSh4ZSx2cixtcil9ZnVuY3Rpb24gdWUoeGUsdnIsbXIpe3JldHVybiB4ZT09PXZyfHwhISh4ZS5mbGFncyYxMDQ4NTc2KSYmbXIuZ2V0RXhwb3J0U3ltYm9sT2ZTeW1ib2woeGUpPT09dnJ9ZnVuY3Rpb24gV2UoeGUpe2lmKGxlKHhlKSlyZXR1cm4gZS5zdHJpcFF1b3Rlcyh4ZS5tb2R1bGVTeW1ib2wubmFtZSk7aWYoTih4ZSkpcmV0dXJuIHhlLm1vZHVsZVNwZWNpZmllcjtpZigoeGU9PW51bGw/dm9pZCAwOnhlLmtpbmQpPT09MSlyZXR1cm4gdy5UaGlzUHJvcGVydHk7aWYoKHhlPT1udWxsP3ZvaWQgMDp4ZS5raW5kKT09PTY0KXJldHVybiB3LlR5cGVPbmx5QWxpYXN9ZnVuY3Rpb24gRmUoeGUsdnIsbXIsQXIsT2UsbnIsTXIsUGUsVWUsZnIsRGUsZ3IsVnIsVHIsdmksVWksWWksV2ksY3QsTGksbnQsTXQseHQsdXQpe2Zvcih2YXIgRHQsUnQ9ZS50aW1lc3RhbXAoKSxJaT10aShPZSksS2k9ZS5wcm9iYWJseVVzZXNTZW1pY29sb25zKG5yKSxGaT1QZS5nZXRUeXBlQ2hlY2tlcigpLHVpPW5ldyBlLk1hcCxCdD0wO0J0PHhlLmxlbmd0aDtCdCsrKXt2YXIgd3Q9eGVbQnRdLG5hPW50PT1udWxsP3ZvaWQgMDpudFtCdF0sQWk9RXIod3QsVWUsbmEsRGUsISFZaSk7aWYoISghQWl8fHVpLmdldChBaS5uYW1lKSYmKCFuYXx8IVQobmEpKXx8RGU9PT0xJiZNdCYmISRhKHd0LE10KSkpe3ZhciBPaT1BaS5uYW1lLGppPUFpLm5lZWRzQ29udmVydFByb3BlcnR5QWNjZXNzLFZpPShEdD1NdD09bnVsbD92b2lkIDA6TXRbZS5nZXRTeW1ib2xJZCh3dCldKSE9PW51bGwmJkR0IT09dm9pZCAwP0R0OkMuU29ydFRleHQuTG9jYXRpb25Qcmlvcml0eSxhdD16cih3dCxGaSk/Qy5Tb3J0VGV4dC5EZXByZWNhdGVkKFZpKTpWaSxBdD1rKHd0LGF0LG1yLEFyLE9lLG5yLE1yLFBlLE9pLGppLG5hLExpLFVpLFdpLGN0LEtpLFZyLGdyLERlLFRyLHh0LHV0KTtpZighIUF0KXt2YXIgYmE9KCFuYXx8ZihuYSkpJiYhKHd0LnBhcmVudD09PXZvaWQgMCYmIWUuc29tZSh3dC5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oUWEpe3JldHVybiBRYS5nZXRTb3VyY2VGaWxlKCk9PT1PZS5nZXRTb3VyY2VGaWxlKCl9KSk7dWkuc2V0KE9pLGJhKSxlLmluc2VydFNvcnRlZCh2cixBdCxpZSwhMCl9fX1yZXR1cm4gZnIoXCJnZXRDb21wbGV0aW9uc0F0UG9zaXRpb246IGdldENvbXBsZXRpb25FbnRyaWVzRnJvbVN5bWJvbHM6IFwiKyhlLnRpbWVzdGFtcCgpLVJ0KSkse2hhczpmdW5jdGlvbihRYSl7cmV0dXJuIHVpLmhhcyhRYSl9LGFkZDpmdW5jdGlvbihRYSl7cmV0dXJuIHVpLnNldChRYSwhMCl9fTtmdW5jdGlvbiAkYShRYSxhaSl7dmFyIERuPVFhLmZsYWdzO2lmKCFlLmlzU291cmNlRmlsZShPZSkpe2lmKGUuaXNFeHBvcnRBc3NpZ25tZW50KE9lLnBhcmVudCkpcmV0dXJuITA7aWYoSWkmJlFhLnZhbHVlRGVjbGFyYXRpb249PT1JaSlyZXR1cm4hMTt2YXIga2E9ZS5za2lwQWxpYXMoUWEsRmkpO2lmKCEhbnIuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3ImJiFWci5hbGxvd1VtZEdsb2JhbEFjY2VzcyYmYWlbZS5nZXRTeW1ib2xJZChRYSldPT09Qy5Tb3J0VGV4dC5HbG9iYWxzT3JLZXl3b3JkcyYmKGFpW2UuZ2V0U3ltYm9sSWQoa2EpXT09PUMuU29ydFRleHQuQXV0b0ltcG9ydFN1Z2dlc3Rpb25zfHxhaVtlLmdldFN5bWJvbElkKGthKV09PT1DLlNvcnRUZXh0LkxvY2F0aW9uUHJpb3JpdHkpKXJldHVybiExO2lmKERufD1lLmdldENvbWJpbmVkTG9jYWxBbmRFeHBvcnRTeW1ib2xGbGFncyhrYSksZS5pc0luUmlnaHRTaWRlT2ZJbnRlcm5hbEltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKE9lKSlyZXR1cm4hIShEbiYxOTIwKTtpZih2aSlyZXR1cm4gU3IoUWEsRmkpfXJldHVybiEhKERuJjExMTU1MSl9fUMuZ2V0Q29tcGxldGlvbkVudHJpZXNGcm9tU3ltYm9scz1GZTtmdW5jdGlvbiBaKHhlKXt2YXIgdnI9QmUoeGUpO2lmKHZyLmxlbmd0aClyZXR1cm57aXNHbG9iYWxDb21wbGV0aW9uOiExLGlzTWVtYmVyQ29tcGxldGlvbjohMSxpc05ld0lkZW50aWZpZXJMb2NhdGlvbjohMSxlbnRyaWVzOnZyfX1mdW5jdGlvbiBCZSh4ZSl7Zm9yKHZhciB2cj1bXSxtcj1uZXcgZS5NYXAsQXI9eGU7QXImJiFlLmlzRnVuY3Rpb25MaWtlKEFyKTspe2lmKGUuaXNMYWJlbGVkU3RhdGVtZW50KEFyKSl7dmFyIE9lPUFyLmxhYmVsLnRleHQ7bXIuaGFzKE9lKXx8KG1yLnNldChPZSwhMCksdnIucHVzaCh7bmFtZTpPZSxraW5kTW9kaWZpZXJzOlwiXCIsa2luZDpcImxhYmVsXCIsc29ydFRleHQ6Qy5Tb3J0VGV4dC5Mb2NhdGlvblByaW9yaXR5fSkpfUFyPUFyLnBhcmVudH1yZXR1cm4gdnJ9ZnVuY3Rpb24gZ2UoeGUsdnIsbXIsQXIsT2UsbnIsTXIpe2lmKE9lLmRhdGEpe3ZhciBQZT1CcihPZS5uYW1lLE9lLmRhdGEseGUsbnIpO2lmKFBlKXt2YXIgVWU9WWUoQXIsbXIpLGZyPVVlLmNvbnRleHRUb2tlbixEZT1VZS5wcmV2aW91c1Rva2VuO3JldHVybnt0eXBlOlwic3ltYm9sXCIsc3ltYm9sOlBlLnN5bWJvbCxsb2NhdGlvbjplLmdldFRvdWNoaW5nUHJvcGVydHlOYW1lKG1yLEFyKSxwcmV2aW91c1Rva2VuOkRlLGNvbnRleHRUb2tlbjpmcixpc0pzeEluaXRpYWxpemVyOiExLGlzVHlwZU9ubHlMb2NhdGlvbjohMSxvcmlnaW46UGUub3JpZ2lufX19dmFyIGdyPXhlLmdldENvbXBpbGVyT3B0aW9ucygpLFZyPWlyKHhlLHZyLG1yLGdyLEFyLHtpbmNsdWRlQ29tcGxldGlvbnNGb3JNb2R1bGVFeHBvcnRzOiEwLGluY2x1ZGVDb21wbGV0aW9uc1dpdGhJbnNlcnRUZXh0OiEwfSxPZSxucix2b2lkIDApO2lmKCFWcilyZXR1cm57dHlwZTpcIm5vbmVcIn07aWYoVnIua2luZCE9PTApcmV0dXJue3R5cGU6XCJyZXF1ZXN0XCIscmVxdWVzdDpWcn07dmFyIFRyPVZyLnN5bWJvbHMsdmk9VnIubGl0ZXJhbHMsVWk9VnIubG9jYXRpb24sWWk9VnIuY29tcGxldGlvbktpbmQsV2k9VnIuc3ltYm9sVG9PcmlnaW5JbmZvTWFwLGN0PVZyLmNvbnRleHRUb2tlbixMaT1Wci5wcmV2aW91c1Rva2VuLG50PVZyLmlzSnN4SW5pdGlhbGl6ZXIsTXQ9VnIuaXNUeXBlT25seUxvY2F0aW9uLHh0PWUuZmluZCh2aSxmdW5jdGlvbih1dCl7cmV0dXJuIEwobXIsTXIsdXQpPT09T2UubmFtZX0pO3JldHVybiB4dCE9PXZvaWQgMD97dHlwZTpcImxpdGVyYWxcIixsaXRlcmFsOnh0fTplLmZpcnN0RGVmaW5lZChUcixmdW5jdGlvbih1dCxEdCl7dmFyIFJ0PVdpW0R0XSxJaT1Fcih1dCxlLmdldEVtaXRTY3JpcHRUYXJnZXQoZ3IpLFJ0LFlpLFZyLmlzSnN4SWRlbnRpZmllckV4cGVjdGVkKTtyZXR1cm4gSWkmJklpLm5hbWU9PT1PZS5uYW1lJiYoT2Uuc291cmNlPT09dy5DbGFzc01lbWJlclNuaXBwZXQmJnV0LmZsYWdzJjEwNjUwMHx8T2Uuc291cmNlPT09dy5PYmplY3RMaXRlcmFsTWV0aG9kU25pcHBldCYmdXQuZmxhZ3MmODE5Nnx8V2UoUnQpPT09T2Uuc291cmNlKT97dHlwZTpcInN5bWJvbFwiLHN5bWJvbDp1dCxsb2NhdGlvbjpVaSxvcmlnaW46UnQsY29udGV4dFRva2VuOmN0LHByZXZpb3VzVG9rZW46TGksaXNKc3hJbml0aWFsaXplcjpudCxpc1R5cGVPbmx5TG9jYXRpb246TXR9OnZvaWQgMH0pfHx7dHlwZTpcIm5vbmVcIn19ZnVuY3Rpb24gUmUoeGUsdnIsbXIsQXIsT2UsbnIsTXIsUGUsVWUpe3ZhciBmcj14ZS5nZXRUeXBlQ2hlY2tlcigpLERlPXhlLmdldENvbXBpbGVyT3B0aW9ucygpLGdyPU9lLm5hbWUsVnI9T2Uuc291cmNlLFRyPU9lLmRhdGEsdmk9ZS5maW5kUHJlY2VkaW5nVG9rZW4oQXIsbXIpO2lmKGUuaXNJblN0cmluZyhtcixBcix2aSkpcmV0dXJuIEMuU3RyaW5nQ29tcGxldGlvbnMuZ2V0U3RyaW5nTGl0ZXJhbENvbXBsZXRpb25EZXRhaWxzKGdyLG1yLEFyLHZpLGZyLERlLG5yLFVlLFBlKTt2YXIgVWk9Z2UoeGUsdnIsbXIsQXIsT2UsbnIsUGUpO3N3aXRjaChVaS50eXBlKXtjYXNlXCJyZXF1ZXN0XCI6e3ZhciBZaT1VaS5yZXF1ZXN0O3N3aXRjaChZaS5raW5kKXtjYXNlIDE6cmV0dXJuIGUuSnNEb2MuZ2V0SlNEb2NUYWdOYW1lQ29tcGxldGlvbkRldGFpbHMoZ3IpO2Nhc2UgMjpyZXR1cm4gZS5Kc0RvYy5nZXRKU0RvY1RhZ0NvbXBsZXRpb25EZXRhaWxzKGdyKTtjYXNlIDM6cmV0dXJuIGUuSnNEb2MuZ2V0SlNEb2NQYXJhbWV0ZXJOYW1lQ29tcGxldGlvbkRldGFpbHMoZ3IpO2Nhc2UgNDpyZXR1cm4gZS5zb21lKFlpLmtleXdvcmRDb21wbGV0aW9ucyxmdW5jdGlvbihJaSl7cmV0dXJuIElpLm5hbWU9PT1ncn0pP3plKGdyLFwia2V5d29yZFwiLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLmtleXdvcmQpOnZvaWQgMDtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKFlpKX19Y2FzZVwic3ltYm9sXCI6e3ZhciBXaT1VaS5zeW1ib2wsY3Q9VWkubG9jYXRpb24sTGk9VWkuY29udGV4dFRva2VuLG50PVVpLm9yaWdpbixNdD1VaS5wcmV2aW91c1Rva2VuLHh0PXJyKGdyLGN0LExpLG50LFdpLHhlLG5yLERlLG1yLEFyLE10LE1yLFBlLFRyLFZyKSx1dD14dC5jb2RlQWN0aW9ucyxEdD14dC5zb3VyY2VEaXNwbGF5O3JldHVybiBFZShXaSxmcixtcixjdCxVZSx1dCxEdCl9Y2FzZVwibGl0ZXJhbFwiOnt2YXIgUnQ9VWkubGl0ZXJhbDtyZXR1cm4gemUoTChtcixQZSxSdCksXCJzdHJpbmdcIix0eXBlb2YgUnQ9PVwic3RyaW5nXCI/ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuc3RyaW5nTGl0ZXJhbDplLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5udW1lcmljTGl0ZXJhbCl9Y2FzZVwibm9uZVwiOnJldHVybiBuKCkuc29tZShmdW5jdGlvbihJaSl7cmV0dXJuIElpLm5hbWU9PT1ncn0pP3plKGdyLFwia2V5d29yZFwiLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLmtleXdvcmQpOnZvaWQgMDtkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoVWkpfX1DLmdldENvbXBsZXRpb25FbnRyeURldGFpbHM9UmU7ZnVuY3Rpb24gemUoeGUsdnIsbXIpe3JldHVybiBIZSh4ZSxcIlwiLHZyLFtlLmRpc3BsYXlQYXJ0KHhlLG1yKV0pfWZ1bmN0aW9uIEVlKHhlLHZyLG1yLEFyLE9lLG5yLE1yKXt2YXIgUGU9dnIucnVuV2l0aENhbmNlbGxhdGlvblRva2VuKE9lLGZ1bmN0aW9uKFZyKXtyZXR1cm4gZS5TeW1ib2xEaXNwbGF5LmdldFN5bWJvbERpc3BsYXlQYXJ0c0RvY3VtZW50YXRpb25BbmRTeW1ib2xLaW5kKFZyLHhlLG1yLEFyLEFyLDcpfSksVWU9UGUuZGlzcGxheVBhcnRzLGZyPVBlLmRvY3VtZW50YXRpb24sRGU9UGUuc3ltYm9sS2luZCxncj1QZS50YWdzO3JldHVybiBIZSh4ZS5uYW1lLGUuU3ltYm9sRGlzcGxheS5nZXRTeW1ib2xNb2RpZmllcnModnIseGUpLERlLFVlLGZyLGdyLG5yLE1yKX1DLmNyZWF0ZUNvbXBsZXRpb25EZXRhaWxzRm9yU3ltYm9sPUVlO2Z1bmN0aW9uIEhlKHhlLHZyLG1yLEFyLE9lLG5yLE1yLFBlKXtyZXR1cm57bmFtZTp4ZSxraW5kTW9kaWZpZXJzOnZyLGtpbmQ6bXIsZGlzcGxheVBhcnRzOkFyLGRvY3VtZW50YXRpb246T2UsdGFnczpucixjb2RlQWN0aW9uczpNcixzb3VyY2U6UGUsc291cmNlRGlzcGxheTpQZX19Qy5jcmVhdGVDb21wbGV0aW9uRGV0YWlscz1IZTtmdW5jdGlvbiBycih4ZSx2cixtcixBcixPZSxucixNcixQZSxVZSxmcixEZSxncixWcixUcix2aSl7aWYoVHIhPW51bGwmJlRyLm1vZHVsZVNwZWNpZmllciYmRGUmJnBpKG1yfHxEZSkucmVwbGFjZW1lbnROb2RlKXJldHVybntjb2RlQWN0aW9uczp2b2lkIDAsc291cmNlRGlzcGxheTpbZS50ZXh0UGFydChUci5tb2R1bGVTcGVjaWZpZXIpXX07aWYodmk9PT13LkNsYXNzTWVtYmVyU25pcHBldCl7dmFyIFVpPVUoTXIsbnIsUGUsVnIseGUsT2UsdnIsbXIsZ3IpLmltcG9ydEFkZGVyO2lmKFVpKXt2YXIgWWk9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoe2hvc3Q6TXIsZm9ybWF0Q29udGV4dDpncixwcmVmZXJlbmNlczpWcn0sVWkud3JpdGVGaXhlcyk7cmV0dXJue3NvdXJjZURpc3BsYXk6dm9pZCAwLGNvZGVBY3Rpb25zOlt7Y2hhbmdlczpZaSxkZXNjcmlwdGlvbjplLmRpYWdub3N0aWNUb1N0cmluZyhbZS5EaWFnbm9zdGljcy5JbmNsdWRlc19pbXBvcnRzX29mX3R5cGVzX3JlZmVyZW5jZWRfYnlfMCx4ZV0pfV19fX1pZihmKEFyKSl7dmFyIFdpPWUuY29kZWZpeC5nZXRQcm9tb3RlVHlwZU9ubHlDb21wbGV0aW9uQWN0aW9uKFVlLEFyLmRlY2xhcmF0aW9uLm5hbWUsbnIsTXIsZ3IsVnIpO3JldHVybiBlLkRlYnVnLmFzc2VydElzRGVmaW5lZChXaSxcIkV4cGVjdGVkIHRvIGhhdmUgYSBjb2RlIGFjdGlvbiBmb3IgcHJvbW90aW5nIHR5cGUtb25seSBhbGlhc1wiKSx7Y29kZUFjdGlvbnM6W1dpXSxzb3VyY2VEaXNwbGF5OnZvaWQgMH19aWYoIUFyfHwhKGxlKEFyKXx8TihBcikpKXJldHVybntjb2RlQWN0aW9uczp2b2lkIDAsc291cmNlRGlzcGxheTp2b2lkIDB9O3ZhciBjdD1Bci5pc0Zyb21QYWNrYWdlSnNvbj9Nci5nZXRQYWNrYWdlSnNvbkF1dG9JbXBvcnRQcm92aWRlcigpLmdldFR5cGVDaGVja2VyKCk6bnIuZ2V0VHlwZUNoZWNrZXIoKSxMaT1Bci5tb2R1bGVTeW1ib2wsbnQ9Y3QuZ2V0TWVyZ2VkU3ltYm9sKGUuc2tpcEFsaWFzKE9lLmV4cG9ydFN5bWJvbHx8T2UsY3QpKSxNdD0obXI9PW51bGw/dm9pZCAwOm1yLmtpbmQpPT09MjkmJmUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQobXIucGFyZW50KSx4dD1lLmNvZGVmaXguZ2V0SW1wb3J0Q29tcGxldGlvbkFjdGlvbihudCxMaSxVZSxlLmdldE5hbWVGb3JFeHBvcnRlZFN5bWJvbChPZSxlLmdldEVtaXRTY3JpcHRUYXJnZXQoUGUpLE10KSxNdCxNcixucixncixEZSYmZS5pc0lkZW50aWZpZXIoRGUpP0RlLmdldFN0YXJ0KFVlKTpmcixWciksdXQ9eHQubW9kdWxlU3BlY2lmaWVyLER0PXh0LmNvZGVBY3Rpb247cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCEoVHIhPW51bGwmJlRyLm1vZHVsZVNwZWNpZmllcil8fHV0PT09VHIubW9kdWxlU3BlY2lmaWVyKSx7c291cmNlRGlzcGxheTpbZS50ZXh0UGFydCh1dCldLGNvZGVBY3Rpb25zOltEdF19fWZ1bmN0aW9uIEllKHhlLHZyLG1yLEFyLE9lLG5yLE1yKXt2YXIgUGU9Z2UoeGUsdnIsbXIsQXIsT2UsbnIsTXIpO3JldHVybiBQZS50eXBlPT09XCJzeW1ib2xcIj9QZS5zeW1ib2w6dm9pZCAwfUMuZ2V0Q29tcGxldGlvbkVudHJ5U3ltYm9sPUllO3ZhciBfZTsoZnVuY3Rpb24oeGUpe3hlW3hlLkRhdGE9MF09XCJEYXRhXCIseGVbeGUuSnNEb2NUYWdOYW1lPTFdPVwiSnNEb2NUYWdOYW1lXCIseGVbeGUuSnNEb2NUYWc9Ml09XCJKc0RvY1RhZ1wiLHhlW3hlLkpzRG9jUGFyYW1ldGVyTmFtZT0zXT1cIkpzRG9jUGFyYW1ldGVyTmFtZVwiLHhlW3hlLktleXdvcmRzPTRdPVwiS2V5d29yZHNcIn0pKF9lfHwoX2U9e30pKTt2YXIgd2U7KGZ1bmN0aW9uKHhlKXt4ZVt4ZS5PYmplY3RQcm9wZXJ0eURlY2xhcmF0aW9uPTBdPVwiT2JqZWN0UHJvcGVydHlEZWNsYXJhdGlvblwiLHhlW3hlLkdsb2JhbD0xXT1cIkdsb2JhbFwiLHhlW3hlLlByb3BlcnR5QWNjZXNzPTJdPVwiUHJvcGVydHlBY2Nlc3NcIix4ZVt4ZS5NZW1iZXJMaWtlPTNdPVwiTWVtYmVyTGlrZVwiLHhlW3hlLlN0cmluZz00XT1cIlN0cmluZ1wiLHhlW3hlLk5vbmU9NV09XCJOb25lXCJ9KSh3ZT1DLkNvbXBsZXRpb25LaW5kfHwoQy5Db21wbGV0aW9uS2luZD17fSkpO2Z1bmN0aW9uIGRlKHhlLHZyLG1yKXtyZXR1cm4gZS5maXJzdERlZmluZWQodnImJih2ci5pc1VuaW9uKCk/dnIudHlwZXM6W3ZyXSksZnVuY3Rpb24oQXIpe3ZhciBPZT1BciYmQXIuc3ltYm9sO3JldHVybiBPZSYmT2UuZmxhZ3MmNDI0JiYhZS5pc0Fic3RyYWN0Q29uc3RydWN0b3JTeW1ib2woT2UpP0FlKE9lLHhlLG1yKTp2b2lkIDB9KX1mdW5jdGlvbiB5ZSh4ZSx2cixtcixBcil7dmFyIE9lPXhlLnBhcmVudDtzd2l0Y2goeGUua2luZCl7Y2FzZSA3OTpyZXR1cm4gZS5nZXRDb250ZXh0dWFsVHlwZUZyb21QYXJlbnQoeGUsQXIpO2Nhc2UgNjM6c3dpdGNoKE9lLmtpbmQpe2Nhc2UgMjU0OnJldHVybiBBci5nZXRDb250ZXh0dWFsVHlwZShPZS5pbml0aWFsaXplcik7Y2FzZSAyMjE6cmV0dXJuIEFyLmdldFR5cGVBdExvY2F0aW9uKE9lLmxlZnQpO2Nhc2UgMjg1OnJldHVybiBBci5nZXRDb250ZXh0dWFsVHlwZUZvckpzeEF0dHJpYnV0ZShPZSk7ZGVmYXVsdDpyZXR1cm59Y2FzZSAxMDM6cmV0dXJuIEFyLmdldENvbnRleHR1YWxUeXBlKE9lKTtjYXNlIDgyOnZhciBucj1lLnRyeUNhc3QoT2UsZS5pc0Nhc2VDbGF1c2UpO3JldHVybiBucj9lLmdldFN3aXRjaGVkVHlwZShucixBcik6dm9pZCAwO2Nhc2UgMTg6cmV0dXJuIGUuaXNKc3hFeHByZXNzaW9uKE9lKSYmIWUuaXNKc3hFbGVtZW50KE9lLnBhcmVudCkmJiFlLmlzSnN4RnJhZ21lbnQoT2UucGFyZW50KT9Bci5nZXRDb250ZXh0dWFsVHlwZUZvckpzeEF0dHJpYnV0ZShPZS5wYXJlbnQpOnZvaWQgMDtkZWZhdWx0OnZhciBNcj1lLlNpZ25hdHVyZUhlbHAuZ2V0QXJndW1lbnRJbmZvRm9yQ29tcGxldGlvbnMoeGUsdnIsbXIpO3JldHVybiBNcj9Bci5nZXRDb250ZXh0dWFsVHlwZUZvckFyZ3VtZW50QXRJbmRleChNci5pbnZvY2F0aW9uLE1yLmFyZ3VtZW50SW5kZXgrKHhlLmtpbmQ9PT0yNz8xOjApKTplLmlzRXF1YWxpdHlPcGVyYXRvcktpbmQoeGUua2luZCkmJmUuaXNCaW5hcnlFeHByZXNzaW9uKE9lKSYmZS5pc0VxdWFsaXR5T3BlcmF0b3JLaW5kKE9lLm9wZXJhdG9yVG9rZW4ua2luZCk/QXIuZ2V0VHlwZUF0TG9jYXRpb24oT2UubGVmdCk6QXIuZ2V0Q29udGV4dHVhbFR5cGUoeGUpfX1mdW5jdGlvbiBBZSh4ZSx2cixtcil7dmFyIEFyPW1yLmdldEFjY2Vzc2libGVTeW1ib2xDaGFpbih4ZSx2ciw2NzEwODg2MywhMSk7cmV0dXJuIEFyP2UuZmlyc3QoQXIpOnhlLnBhcmVudCYmKGVyKHhlLnBhcmVudCk/eGU6QWUoeGUucGFyZW50LHZyLG1yKSl9ZnVuY3Rpb24gZXIoeGUpe3ZhciB2cjtyZXR1cm4hISghKCh2cj14ZS5kZWNsYXJhdGlvbnMpPT09bnVsbHx8dnI9PT12b2lkIDApJiZ2ci5zb21lKGZ1bmN0aW9uKG1yKXtyZXR1cm4gbXIua2luZD09PTMwNX0pKX1mdW5jdGlvbiBpcih4ZSx2cixtcixBcixPZSxucixNcixQZSxVZSxmcil7dmFyIERlPXhlLmdldFR5cGVDaGVja2VyKCksZ3I9JChtcixBciksVnI9ZS50aW1lc3RhbXAoKSxUcj1lLmdldFRva2VuQXRQb3NpdGlvbihtcixPZSk7dnIoXCJnZXRDb21wbGV0aW9uRGF0YTogR2V0IGN1cnJlbnQgdG9rZW46IFwiKyhlLnRpbWVzdGFtcCgpLVZyKSksVnI9ZS50aW1lc3RhbXAoKTt2YXIgdmk9ZS5pc0luQ29tbWVudChtcixPZSxUcik7dnIoXCJnZXRDb21wbGV0aW9uRGF0YTogSXMgaW5zaWRlIGNvbW1lbnQ6IFwiKyhlLnRpbWVzdGFtcCgpLVZyKSk7dmFyIFVpPSExLFlpPSExO2lmKHZpKXtpZihlLmhhc0RvY0NvbW1lbnQobXIsT2UpKXtpZihtci50ZXh0LmNoYXJDb2RlQXQoT2UtMSk9PT02NClyZXR1cm57a2luZDoxfTt2YXIgV2k9ZS5nZXRMaW5lU3RhcnRQb3NpdGlvbkZvclBvc2l0aW9uKE9lLG1yKTtpZighL1teXFwqfFxccygvKV0vLnRlc3QobXIudGV4dC5zdWJzdHJpbmcoV2ksT2UpKSlyZXR1cm57a2luZDoyfX12YXIgY3Q9aWkoVHIsT2UpO2lmKGN0KXtpZihjdC50YWdOYW1lLnBvczw9T2UmJk9lPD1jdC50YWdOYW1lLmVuZClyZXR1cm57a2luZDoxfTt2YXIgTGk9Ym8oY3QpO2lmKExpJiYoVHI9ZS5nZXRUb2tlbkF0UG9zaXRpb24obXIsT2UpLCghVHJ8fCFlLmlzRGVjbGFyYXRpb25OYW1lKFRyKSYmKFRyLnBhcmVudC5raW5kIT09MzQ3fHxUci5wYXJlbnQubmFtZSE9PVRyKSkmJihVaT1kcyhMaSkpKSwhVWkmJmUuaXNKU0RvY1BhcmFtZXRlclRhZyhjdCkmJihlLm5vZGVJc01pc3NpbmcoY3QubmFtZSl8fGN0Lm5hbWUucG9zPD1PZSYmT2U8PWN0Lm5hbWUuZW5kKSlyZXR1cm57a2luZDozLHRhZzpjdH19aWYoIVVpKXt2cihcIlJldHVybmluZyBhbiBlbXB0eSBsaXN0IGJlY2F1c2UgY29tcGxldGlvbiB3YXMgaW5zaWRlIGEgcmVndWxhciBjb21tZW50IG9yIHBsYWluIHRleHQgcGFydCBvZiBhIEpzRG9jIGNvbW1lbnQuXCIpO3JldHVybn19VnI9ZS50aW1lc3RhbXAoKTt2YXIgbnQ9IVVpJiZlLmlzU291cmNlRmlsZUpTKG1yKSxNdD1ZZShPZSxtcikseHQ9TXQucHJldmlvdXNUb2tlbix1dD1NdC5jb250ZXh0VG9rZW47dnIoXCJnZXRDb21wbGV0aW9uRGF0YTogR2V0IHByZXZpb3VzIHRva2VuOiBcIisoZS50aW1lc3RhbXAoKS1WcikpO3ZhciBEdD1UcixSdCxJaT0hMSxLaT0hMSxGaT0hMSx1aT0hMSxCdD0hMSx3dD0hMSxuYSxBaT1lLmdldFRvdWNoaW5nUHJvcGVydHlOYW1lKG1yLE9lKSxPaT0wLGppPSExLFZpPTA7aWYodXQpe3ZhciBhdD1waSh1dCk7aWYoamk9YXQuaXNOZXdJZGVudGlmaWVyTG9jYXRpb24sYXQua2V5d29yZENvbXBsZXRpb24pe2lmKGF0LmlzS2V5d29yZE9ubHlDb21wbGV0aW9uKXJldHVybntraW5kOjQsa2V5d29yZENvbXBsZXRpb25zOlt2ZShhdC5rZXl3b3JkQ29tcGxldGlvbildLGlzTmV3SWRlbnRpZmllckxvY2F0aW9uOmppfTtPaT1GKGF0LmtleXdvcmRDb21wbGV0aW9uKX1pZihhdC5yZXBsYWNlbWVudE5vZGUmJm5yLmluY2x1ZGVDb21wbGV0aW9uc0ZvckltcG9ydFN0YXRlbWVudHMmJm5yLmluY2x1ZGVDb21wbGV0aW9uc1dpdGhJbnNlcnRUZXh0JiYobmE9YXQucmVwbGFjZW1lbnROb2RlLFZpfD0yKSwhbmEmJnFlKHV0KSlyZXR1cm4gdnIoXCJSZXR1cm5pbmcgYW4gZW1wdHkgbGlzdCBiZWNhdXNlIGNvbXBsZXRpb24gd2FzIHJlcXVlc3RlZCBpbiBhbiBpbnZhbGlkIHBvc2l0aW9uLlwiKSxPaT9oZShPaSxudCxacigpKTp2b2lkIDA7dmFyIEF0PXV0LnBhcmVudDtpZih1dC5raW5kPT09MjR8fHV0LmtpbmQ9PT0yOClzd2l0Y2goSWk9dXQua2luZD09PTI0LEtpPXV0LmtpbmQ9PT0yOCxBdC5raW5kKXtjYXNlIDIwNjpSdD1BdCxEdD1SdC5leHByZXNzaW9uO3ZhciBiYT1lLmdldExlZnRtb3N0QWNjZXNzRXhwcmVzc2lvbihSdCk7aWYoZS5ub2RlSXNNaXNzaW5nKGJhKXx8KGUuaXNDYWxsRXhwcmVzc2lvbihEdCl8fGUuaXNGdW5jdGlvbkxpa2UoRHQpKSYmRHQuZW5kPT09dXQucG9zJiZEdC5nZXRDaGlsZENvdW50KG1yKSYmZS5sYXN0KER0LmdldENoaWxkcmVuKG1yKSkua2luZCE9PTIxKXJldHVybjticmVhaztjYXNlIDE2MTpEdD1BdC5sZWZ0O2JyZWFrO2Nhc2UgMjYxOkR0PUF0Lm5hbWU7YnJlYWs7Y2FzZSAyMDA6RHQ9QXQ7YnJlYWs7Y2FzZSAyMzE6RHQ9QXQuZ2V0Rmlyc3RUb2tlbihtciksZS5EZWJ1Zy5hc3NlcnQoRHQua2luZD09PTEwMHx8RHQua2luZD09PTEwMyk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59ZWxzZSBpZighbmEmJm1yLmxhbmd1YWdlVmFyaWFudD09PTEpe2lmKEF0JiZBdC5raW5kPT09MjA2JiYodXQ9QXQsQXQ9QXQucGFyZW50KSxUci5wYXJlbnQ9PT1BaSlzd2l0Y2goVHIua2luZCl7Y2FzZSAzMTooVHIucGFyZW50LmtpbmQ9PT0yNzh8fFRyLnBhcmVudC5raW5kPT09MjgwKSYmKEFpPVRyKTticmVhaztjYXNlIDQzOlRyLnBhcmVudC5raW5kPT09Mjc5JiYoQWk9VHIpO2JyZWFrfXN3aXRjaChBdC5raW5kKXtjYXNlIDI4MTp1dC5raW5kPT09NDMmJih1aT0hMCxBaT11dCk7YnJlYWs7Y2FzZSAyMjE6aWYoIUdpKEF0KSlicmVhaztjYXNlIDI3OTpjYXNlIDI3ODpjYXNlIDI4MDp3dD0hMCx1dC5raW5kPT09MjkmJihGaT0hMCxBaT11dCk7YnJlYWs7Y2FzZSAyODg6Y2FzZSAyODc6eHQua2luZD09PTE5JiZUci5raW5kPT09MzEmJih3dD0hMCk7YnJlYWs7Y2FzZSAyODU6aWYoQXQuaW5pdGlhbGl6ZXI9PT14dCYmeHQuZW5kPE9lKXt3dD0hMDticmVha31zd2l0Y2goeHQua2luZCl7Y2FzZSA2MzpCdD0hMDticmVhaztjYXNlIDc5Ond0PSEwLEF0IT09eHQucGFyZW50JiYhQXQuaW5pdGlhbGl6ZXImJmUuZmluZENoaWxkT2ZLaW5kKEF0LDYzLG1yKSYmKEJ0PXh0KX1icmVha319fXZhciAkYT1lLnRpbWVzdGFtcCgpLFFhPTUsYWk9ITEsRG49ITEsa2E9W10sQmE9W10scG49W10sQ249bmV3IGUuTWFwLEJpPVN0KCksa249ZS5tZW1vaXplT25lKGZ1bmN0aW9uKEppKXtyZXR1cm4gZS5jcmVhdGVNb2R1bGVTcGVjaWZpZXJSZXNvbHV0aW9uSG9zdChKaT9QZS5nZXRQYWNrYWdlSnNvbkF1dG9JbXBvcnRQcm92aWRlcigpOnhlLFBlKX0pO2lmKElpfHxLaSlSbygpO2Vsc2UgaWYoRmkpa2E9RGUuZ2V0SnN4SW50cmluc2ljVGFnTmFtZXNBdChBaSksZS5EZWJ1Zy5hc3NlcnRFYWNoSXNEZWZpbmVkKGthLFwiZ2V0SnN4SW50cmluc2ljVGFnTmFtZXMoKSBzaG91bGQgYWxsIGJlIGRlZmluZWRcIiksQ28oKSxRYT0xLE9pPTA7ZWxzZSBpZih1aSl7dmFyIHhuPXV0LnBhcmVudC5wYXJlbnQub3BlbmluZ0VsZW1lbnQudGFnTmFtZSxLbj1EZS5nZXRTeW1ib2xBdExvY2F0aW9uKHhuKTtLbiYmKGthPVtLbl0pLFFhPTEsT2k9MH1lbHNlIGlmKCFDbygpKXJldHVybiBPaT9oZShPaSxudCxqaSk6dm9pZCAwO3ZyKFwiZ2V0Q29tcGxldGlvbkRhdGE6IFNlbWFudGljIHdvcms6IFwiKyhlLnRpbWVzdGFtcCgpLSRhKSk7dmFyIFBuPXh0JiZ5ZSh4dCxPZSxtcixEZSksZW89ZS5tYXBEZWZpbmVkKFBuJiYoUG4uaXNVbmlvbigpP1BuLnR5cGVzOltQbl0pLGZ1bmN0aW9uKEppKXtyZXR1cm4gSmkuaXNMaXRlcmFsKCkmJiEoSmkuZmxhZ3MmMTAyNCk/SmkudmFsdWU6dm9pZCAwfSksUm49eHQmJlBuJiZkZSh4dCxQbixEZSk7cmV0dXJue2tpbmQ6MCxzeW1ib2xzOmthLGNvbXBsZXRpb25LaW5kOlFhLGlzSW5TbmlwcGV0U2NvcGU6WWkscHJvcGVydHlBY2Nlc3NUb0NvbnZlcnQ6UnQsaXNOZXdJZGVudGlmaWVyTG9jYXRpb246amksbG9jYXRpb246QWksa2V5d29yZEZpbHRlcnM6T2ksbGl0ZXJhbHM6ZW8sc3ltYm9sVG9PcmlnaW5JbmZvTWFwOkJhLHJlY29tbWVuZGVkQ29tcGxldGlvbjpSbixwcmV2aW91c1Rva2VuOnh0LGNvbnRleHRUb2tlbjp1dCxpc0pzeEluaXRpYWxpemVyOkJ0LGluc2lkZUpzRG9jVGFnVHlwZUV4cHJlc3Npb246VWksc3ltYm9sVG9Tb3J0VGV4dE1hcDpwbixpc1R5cGVPbmx5TG9jYXRpb246QmksaXNKc3hJZGVudGlmaWVyRXhwZWN0ZWQ6d3QsaXNSaWdodE9mT3BlblRhZzpGaSxpbXBvcnRDb21wbGV0aW9uTm9kZTpuYSxoYXNVbnJlc29sdmVkQXV0b0ltcG9ydHM6RG4sZmxhZ3M6Vml9O2Z1bmN0aW9uIERhKEppKXtzd2l0Y2goSmkua2luZCl7Y2FzZSAzNDA6Y2FzZSAzNDc6Y2FzZSAzNDE6Y2FzZSAzNDM6Y2FzZSAzNDU6cmV0dXJuITA7Y2FzZSAzNDQ6cmV0dXJuISFKaS5jb25zdHJhaW50O2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGJvKEppKXtpZihEYShKaSkpe3ZhciBjZT1lLmlzSlNEb2NUZW1wbGF0ZVRhZyhKaSk/SmkuY29uc3RyYWludDpKaS50eXBlRXhwcmVzc2lvbjtyZXR1cm4gY2UmJmNlLmtpbmQ9PT0zMDk/Y2U6dm9pZCAwfX1mdW5jdGlvbiBSbygpe1FhPTI7dmFyIEppPWUuaXNMaXRlcmFsSW1wb3J0VHlwZU5vZGUoRHQpLGNlPVVpfHxKaSYmIUR0LmlzVHlwZU9mfHxlLmlzUGFydE9mVHlwZU5vZGUoRHQucGFyZW50KXx8ZS5pc1Bvc3NpYmx5VHlwZUFyZ3VtZW50UG9zaXRpb24odXQsbXIsRGUpLFJyPWUuaXNJblJpZ2h0U2lkZU9mSW50ZXJuYWxJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihEdCk7aWYoZS5pc0VudGl0eU5hbWUoRHQpfHxKaXx8ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihEdCkpe3ZhciB5aT1lLmlzTW9kdWxlRGVjbGFyYXRpb24oRHQucGFyZW50KTt5aSYmKGppPSEwKTt2YXIgcWk9RGUuZ2V0U3ltYm9sQXRMb2NhdGlvbihEdCk7aWYocWkmJihxaT1lLnNraXBBbGlhcyhxaSxEZSkscWkuZmxhZ3MmMTkyMCkpe3ZhciBqZT1EZS5nZXRFeHBvcnRzT2ZNb2R1bGUocWkpO2UuRGVidWcuYXNzZXJ0RWFjaElzRGVmaW5lZChqZSxcImdldEV4cG9ydHNPZk1vZHVsZSgpIHNob3VsZCBhbGwgYmUgZGVmaW5lZFwiKTtmb3IodmFyIEhyPWZ1bmN0aW9uKEZvKXtyZXR1cm4gRGUuaXNWYWxpZFByb3BlcnR5QWNjZXNzKEppP0R0OkR0LnBhcmVudCxGby5uYW1lKX0scHQ9ZnVuY3Rpb24oRm8pe3JldHVybiBTcihGbyxEZSl9LFB0PXlpP2Z1bmN0aW9uKEZvKXt2YXIga287cmV0dXJuISEoRm8uZmxhZ3MmMTkyMCkmJiEoISgoa289Rm8uZGVjbGFyYXRpb25zKT09PW51bGx8fGtvPT09dm9pZCAwKSYma28uZXZlcnkoZnVuY3Rpb24oQW8pe3JldHVybiBBby5wYXJlbnQ9PT1EdC5wYXJlbnR9KSl9OlJyP2Z1bmN0aW9uKEZvKXtyZXR1cm4gcHQoRm8pfHxIcihGbyl9OmNlP3B0OkhyLGdhPTAsdWE9amU7Z2E8dWEubGVuZ3RoO2dhKyspe3ZhciBYbj11YVtnYV07UHQoWG4pJiZrYS5wdXNoKFhuKX1pZighY2UmJnFpLmRlY2xhcmF0aW9ucyYmcWkuZGVjbGFyYXRpb25zLnNvbWUoZnVuY3Rpb24oRm8pe3JldHVybiBGby5raW5kIT09MzA1JiZGby5raW5kIT09MjYxJiZGby5raW5kIT09MjYwfSkpe3ZhciBqcj1EZS5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKHFpLER0KS5nZXROb25PcHRpb25hbFR5cGUoKSxmbz0hMTtpZihqci5pc051bGxhYmxlVHlwZSgpKXt2YXIgeHM9SWkmJiFLaSYmbnIuaW5jbHVkZUF1dG9tYXRpY09wdGlvbmFsQ2hhaW5Db21wbGV0aW9ucyE9PSExOyh4c3x8S2kpJiYoanI9anIuZ2V0Tm9uTnVsbGFibGVUeXBlKCkseHMmJihmbz0hMCkpfUVuKGpyLCEhKER0LmZsYWdzJjMyNzY4KSxmbyl9cmV0dXJufX1pZighY2Upe0RlLnRyeUdldFRoaXNUeXBlQXQoRHQsITEpO3ZhciBqcj1EZS5nZXRUeXBlQXRMb2NhdGlvbihEdCkuZ2V0Tm9uT3B0aW9uYWxUeXBlKCksZm89ITE7aWYoanIuaXNOdWxsYWJsZVR5cGUoKSl7dmFyIHhzPUlpJiYhS2kmJm5yLmluY2x1ZGVBdXRvbWF0aWNPcHRpb25hbENoYWluQ29tcGxldGlvbnMhPT0hMTsoeHN8fEtpKSYmKGpyPWpyLmdldE5vbk51bGxhYmxlVHlwZSgpLHhzJiYoZm89ITApKX1FbihqciwhIShEdC5mbGFncyYzMjc2OCksZm8pfX1mdW5jdGlvbiBFbihKaSxjZSxScil7amk9ISFKaS5nZXRTdHJpbmdJbmRleFR5cGUoKSxLaSYmZS5zb21lKEppLmdldENhbGxTaWduYXR1cmVzKCkpJiYoamk9ITApO3ZhciB5aT1EdC5raW5kPT09MjAwP0R0OkR0LnBhcmVudDtpZihncilrYS5wdXNoLmFwcGx5KGthLGUuZmlsdGVyKHFyKEppLERlKSxmdW5jdGlvbih1YSl7cmV0dXJuIERlLmlzVmFsaWRQcm9wZXJ0eUFjY2Vzc0ZvckNvbXBsZXRpb25zKHlpLEppLHVhKX0pKTtlbHNlIGZvcih2YXIgcWk9MCxqZT1KaS5nZXRBcHBhcmVudFByb3BlcnRpZXMoKTtxaTxqZS5sZW5ndGg7cWkrKyl7dmFyIEhyPWplW3FpXTtEZS5pc1ZhbGlkUHJvcGVydHlBY2Nlc3NGb3JDb21wbGV0aW9ucyh5aSxKaSxIcikmJlduKEhyLCExLFJyKX1pZihjZSYmbnIuaW5jbHVkZUNvbXBsZXRpb25zV2l0aEluc2VydFRleHQpe3ZhciBwdD1EZS5nZXRQcm9taXNlZFR5cGVPZlByb21pc2UoSmkpO2lmKHB0KWZvcih2YXIgUHQ9MCxnYT1wdC5nZXRBcHBhcmVudFByb3BlcnRpZXMoKTtQdDxnYS5sZW5ndGg7UHQrKyl7dmFyIEhyPWdhW1B0XTtEZS5pc1ZhbGlkUHJvcGVydHlBY2Nlc3NGb3JDb21wbGV0aW9ucyh5aSxwdCxIcikmJlduKEhyLCEwLFJyKX19fWZ1bmN0aW9uIFduKEppLGNlLFJyKXt2YXIgeWkscWk9ZS5maXJzdERlZmluZWQoSmkuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGtvKXtyZXR1cm4gZS50cnlDYXN0KGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oa28pLGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZSl9KTtpZihxaSl7dmFyIGplPXRvKHFpLmV4cHJlc3Npb24pLEhyPWplJiZEZS5nZXRTeW1ib2xBdExvY2F0aW9uKGplKSxwdD1IciYmQWUoSHIsdXQsRGUpO2lmKHB0JiZlLmFkZFRvU2VlbihDbixlLmdldFN5bWJvbElkKHB0KSkpe3ZhciBQdD1rYS5sZW5ndGg7a2EucHVzaChwdCk7dmFyIGdhPXB0LnBhcmVudDtpZighZ2F8fCFlLmlzRXh0ZXJuYWxNb2R1bGVTeW1ib2woZ2EpfHxEZS50cnlHZXRNZW1iZXJJbk1vZHVsZUV4cG9ydHNBbmRQcm9wZXJ0aWVzKHB0Lm5hbWUsZ2EpIT09cHQpQmFbUHRdPXtraW5kOkZvKDIpfTtlbHNle3ZhciB1YT1lLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUoZS5zdHJpcFF1b3RlcyhnYS5uYW1lKSk/KHlpPWUuZ2V0U291cmNlRmlsZU9mTW9kdWxlKGdhKSk9PT1udWxsfHx5aT09PXZvaWQgMD92b2lkIDA6eWkuZmlsZU5hbWU6dm9pZCAwLFhuPShlLmNvZGVmaXguZ2V0TW9kdWxlU3BlY2lmaWVyRm9yQmVzdEV4cG9ydEluZm8oW3tleHBvcnRLaW5kOjAsbW9kdWxlRmlsZU5hbWU6dWEsaXNGcm9tUGFja2FnZUpzb246ITEsbW9kdWxlU3ltYm9sOmdhLHN5bWJvbDpwdCx0YXJnZXRGbGFnczplLnNraXBBbGlhcyhwdCxEZSkuZmxhZ3N9XSxwdC5uYW1lLE9lLGUuaXNWYWxpZFR5cGVPbmx5QWxpYXNVc2VTaXRlKEFpKSxtcix4ZSxQZSxucil8fHt9KS5tb2R1bGVTcGVjaWZpZXI7aWYoWG4pe3ZhciBqcj17a2luZDpGbyg2KSxtb2R1bGVTeW1ib2w6Z2EsaXNEZWZhdWx0RXhwb3J0OiExLHN5bWJvbE5hbWU6cHQubmFtZSxleHBvcnROYW1lOnB0Lm5hbWUsZmlsZU5hbWU6dWEsbW9kdWxlU3BlY2lmaWVyOlhufTtCYVtQdF09anJ9fX1lbHNlIG5yLmluY2x1ZGVDb21wbGV0aW9uc1dpdGhJbnNlcnRUZXh0JiYoeHMoSmkpLGZvKEppKSxrYS5wdXNoKEppKSl9ZWxzZSB4cyhKaSksZm8oSmkpLGthLnB1c2goSmkpO2Z1bmN0aW9uIGZvKGtvKXtadChrbykmJihwbltlLmdldFN5bWJvbElkKGtvKV09Qy5Tb3J0VGV4dC5Mb2NhbERlY2xhcmF0aW9uUHJpb3JpdHkpfWZ1bmN0aW9uIHhzKGtvKXtuci5pbmNsdWRlQ29tcGxldGlvbnNXaXRoSW5zZXJ0VGV4dCYmKGNlJiZlLmFkZFRvU2VlbihDbixlLmdldFN5bWJvbElkKGtvKSk/QmFba2EubGVuZ3RoXT17a2luZDpGbyg4KX06UnImJihCYVtrYS5sZW5ndGhdPXtraW5kOjE2fSkpfWZ1bmN0aW9uIEZvKGtvKXtyZXR1cm4gUnI/a298MTY6a299fWZ1bmN0aW9uIHRvKEppKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoSmkpP0ppOmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oSmkpP3RvKEppLmV4cHJlc3Npb24pOnZvaWQgMH1mdW5jdGlvbiBDbygpe3ZhciBKaT1QaSgpfHxRaSgpfHxubygpfHxDdCgpfHxzYSgpfHxLbygpfHxlbigpfHxPbygpfHwoJG8oKSwxKTtyZXR1cm4gSmk9PT0xfWZ1bmN0aW9uIEtvKCl7cmV0dXJuIHFuKHV0KT8oUWE9NSxqaT0hMCxPaT00LDEpOjB9ZnVuY3Rpb24gT28oKXt2YXIgSmk9U28odXQpLGNlPUppJiZEZS5nZXRDb250ZXh0dWFsVHlwZShKaS5hdHRyaWJ1dGVzKTtpZighY2UpcmV0dXJuIDA7dmFyIFJyPUppJiZEZS5nZXRDb250ZXh0dWFsVHlwZShKaS5hdHRyaWJ1dGVzLDQpO3JldHVybiBrYT1lLmNvbmNhdGVuYXRlKGthLGpzKG1pKGNlLFJyLEppLmF0dHJpYnV0ZXMsRGUpLEppLmF0dHJpYnV0ZXMucHJvcGVydGllcykpLGhzKCksUWE9MyxqaT0hMSwxfWZ1bmN0aW9uIG5vKCl7cmV0dXJuIG5hPyhqaT0hMCxKbigpLDEpOjB9ZnVuY3Rpb24gJG8oKXtPaT1tbyh1dCk/NToxLFFhPTEsamk9WnIoKSx4dCE9PXV0JiZlLkRlYnVnLmFzc2VydCghIXh0LFwiRXhwZWN0ZWQgJ2NvbnRleHRUb2tlbicgdG8gYmUgZGVmaW5lZCB3aGVuIGRpZmZlcmVudCBmcm9tICdwcmV2aW91c1Rva2VuJy5cIik7dmFyIEppPXh0IT09dXQ/eHQuZ2V0U3RhcnQoKTpPZSxjZT1DZSh1dCxKaSxtcil8fG1yO1lpPXhpKGNlKTt2YXIgUnI9KEJpPzA6MTExNTUxKXw3ODg5Njh8MTkyMHwyMDk3MTUyLHlpPXh0JiYhZS5pc1ZhbGlkVHlwZU9ubHlBbGlhc1VzZVNpdGUoeHQpO2thPWUuY29uY2F0ZW5hdGUoa2EsRGUuZ2V0U3ltYm9sc0luU2NvcGUoY2UsUnIpKSxlLkRlYnVnLmFzc2VydEVhY2hJc0RlZmluZWQoa2EsXCJnZXRTeW1ib2xzSW5TY29wZSgpIHNob3VsZCBhbGwgYmUgZGVmaW5lZFwiKTtmb3IodmFyIHFpPTA7cWk8a2EubGVuZ3RoO3FpKyspe3ZhciBqZT1rYVtxaV07aWYoIURlLmlzQXJndW1lbnRzU3ltYm9sKGplKSYmIWUuc29tZShqZS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oWG4pe3JldHVybiBYbi5nZXRTb3VyY2VGaWxlKCk9PT1tcn0pJiYocG5bZS5nZXRTeW1ib2xJZChqZSldPUMuU29ydFRleHQuR2xvYmFsc09yS2V5d29yZHMpLHlpJiYhKGplLmZsYWdzJjExMTU1MSkpe3ZhciBIcj1qZS5kZWNsYXJhdGlvbnMmJmUuZmluZChqZS5kZWNsYXJhdGlvbnMsZS5pc1R5cGVPbmx5SW1wb3J0T3JFeHBvcnREZWNsYXJhdGlvbik7aWYoSHIpe3ZhciBwdD17a2luZDo2NCxkZWNsYXJhdGlvbjpIcn07QmFbcWldPXB0fX19aWYobnIuaW5jbHVkZUNvbXBsZXRpb25zV2l0aEluc2VydFRleHQmJmNlLmtpbmQhPT0zMDUpe3ZhciBQdD1EZS50cnlHZXRUaGlzVHlwZUF0KGNlLCExKTtpZihQdCYmIVd0KFB0LG1yLERlKSlmb3IodmFyIGdhPTAsdWE9cXIoUHQsRGUpO2dhPHVhLmxlbmd0aDtnYSsrKXt2YXIgamU9dWFbZ2FdO0JhW2thLmxlbmd0aF09e2tpbmQ6MX0sa2EucHVzaChqZSkscG5bZS5nZXRTeW1ib2xJZChqZSldPUMuU29ydFRleHQuU3VnZ2VzdGVkQ2xhc3NNZW1iZXJzfX1KbigpLEJpJiYoT2k9dXQmJmUuaXNBc3NlcnRpb25FeHByZXNzaW9uKHV0LnBhcmVudCk/Njo3KX1mdW5jdGlvbiBQcigpe3JldHVybiBuYT8hMDphaXx8IW5yLmluY2x1ZGVDb21wbGV0aW9uc0Zvck1vZHVsZUV4cG9ydHM/ITE6bXIuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3J8fG1yLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yfHxlLmNvbXBpbGVyT3B0aW9uc0luZGljYXRlRXNNb2R1bGVzKHhlLmdldENvbXBpbGVyT3B0aW9ucygpKT8hMDplLnByb2dyYW1Db250YWluc01vZHVsZXMoeGUpfWZ1bmN0aW9uIHhpKEppKXtzd2l0Y2goSmkua2luZCl7Y2FzZSAzMDU6Y2FzZSAyMjM6Y2FzZSAyODg6Y2FzZSAyMzU6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gZS5pc1N0YXRlbWVudChKaSl9fWZ1bmN0aW9uIFN0KCl7cmV0dXJuIFVpfHwhIW5hJiZlLmlzVHlwZU9ubHlJbXBvcnRPckV4cG9ydERlY2xhcmF0aW9uKEFpLnBhcmVudCl8fCFwYSh1dCkmJihlLmlzUG9zc2libHlUeXBlQXJndW1lbnRQb3NpdGlvbih1dCxtcixEZSl8fGUuaXNQYXJ0T2ZUeXBlTm9kZShBaSl8fGRuKHV0KSl9ZnVuY3Rpb24gcGEoSmkpe3JldHVybiBKaSYmKEppLmtpbmQ9PT0xMTImJihKaS5wYXJlbnQua2luZD09PTE4MXx8ZS5pc1R5cGVPZkV4cHJlc3Npb24oSmkucGFyZW50KSl8fEppLmtpbmQ9PT0xMjgmJkppLnBhcmVudC5raW5kPT09MTc3KX1mdW5jdGlvbiBkbihKaSl7aWYoSmkpe3ZhciBjZT1KaS5wYXJlbnQua2luZDtzd2l0Y2goSmkua2luZCl7Y2FzZSA1ODpyZXR1cm4gY2U9PT0xNjd8fGNlPT09MTY2fHxjZT09PTE2NHx8Y2U9PT0yNTR8fGUuaXNGdW5jdGlvbkxpa2VLaW5kKGNlKTtjYXNlIDYzOnJldHVybiBjZT09PTI1OTtjYXNlIDEyNzpyZXR1cm4gY2U9PT0yMjk7Y2FzZSAyOTpyZXR1cm4gY2U9PT0xNzh8fGNlPT09MjExO2Nhc2UgOTQ6cmV0dXJuIGNlPT09MTYzfX1yZXR1cm4hMX1mdW5jdGlvbiBKbigpe3ZhciBKaSxjZTtpZighUHIoKXx8KGUuRGVidWcuYXNzZXJ0KCEoTXIhPW51bGwmJk1yLmRhdGEpLFwiU2hvdWxkIG5vdCBydW4gJ2NvbGxlY3RBdXRvSW1wb3J0cycgd2hlbiBmYXN0ZXIgcGF0aCBpcyBhdmFpbGFibGUgdmlhIGBkYXRhYFwiKSxNciYmIU1yLnNvdXJjZSkpcmV0dXJuO1ZpfD0xO3ZhciBScj14dD09PXV0JiZuYSYmYWUobmEsdXQpLHlpPVJyP1wiXCI6eHQmJmUuaXNJZGVudGlmaWVyKHh0KT94dC50ZXh0LnRvTG93ZXJDYXNlKCk6XCJcIixxaT0oSmk9UGUuZ2V0TW9kdWxlU3BlY2lmaWVyQ2FjaGUpPT09bnVsbHx8Smk9PT12b2lkIDA/dm9pZCAwOkppLmNhbGwoUGUpLGplPWUuZ2V0RXhwb3J0SW5mb01hcChtcixQZSx4ZSxmciksSHI9KGNlPVBlLmdldFBhY2thZ2VKc29uQXV0b0ltcG9ydFByb3ZpZGVyKT09PW51bGx8fGNlPT09dm9pZCAwP3ZvaWQgMDpjZS5jYWxsKFBlKSxwdD1Ncj92b2lkIDA6ZS5jcmVhdGVQYWNrYWdlSnNvbkltcG9ydEZpbHRlcihtcixucixQZSk7c2UoXCJjb2xsZWN0QXV0b0ltcG9ydHNcIixQZSx4ZSxtcixPZSxuciwhIW5hLGUuaXNWYWxpZFR5cGVPbmx5QWxpYXNVc2VTaXRlKEFpKSxmdW5jdGlvbihnYSl7amUuc2VhcmNoKG1yLnBhdGgsRmksZnVuY3Rpb24odWEsWG4pe2lmKCFlLmlzSWRlbnRpZmllclRleHQodWEsZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KFBlLmdldENvbXBpbGF0aW9uU2V0dGluZ3MoKSkpfHwhTXImJmUuaXNTdHJpbmdBTm9uQ29udGV4dHVhbEtleXdvcmQodWEpfHwhQmkmJiFuYSYmIShYbiYxMTE1NTEpfHxCaSYmIShYbiY3OTA1MDQpKXJldHVybiExO3ZhciBqcj11YS5jaGFyQ29kZUF0KDApO3JldHVybiBGaSYmKGpyPDY1fHxqcj45MCk/ITE6TXI/ITA6V3IodWEseWkpfSxmdW5jdGlvbih1YSxYbixqcixmbyl7dmFyIHhzO2lmKCEoTXImJiFlLnNvbWUodWEsZnVuY3Rpb24oc3Upe3JldHVybiBNci5zb3VyY2U9PT1lLnN0cmlwUXVvdGVzKHN1Lm1vZHVsZVN5bWJvbC5uYW1lKX0pKSl7dmFyIEZvPWUuZmluZCh1YSxQdCk7aWYoISFGbyl7dmFyIGtvPWdhLnRyeVJlc29sdmUodWEsWG4sanIpfHx7fTtpZihrbyE9PVwiZmFpbGVkXCIpe3ZhciBBbz1GbyxNcztrbyE9PVwic2tpcHBlZFwiJiYoeHM9a28uZXhwb3J0SW5mbyxBbz14cz09PXZvaWQgMD9Gbzp4cyxNcz1rby5tb2R1bGVTcGVjaWZpZXIpO3ZhciBCcz1Bby5leHBvcnRLaW5kPT09MSx4Yz1CcyYmZS5nZXRMb2NhbFN5bWJvbEZvckV4cG9ydERlZmF1bHQoQW8uc3ltYm9sKXx8QW8uc3ltYm9sO1FlKHhjLHtraW5kOk1zPzMyOjQsbW9kdWxlU3BlY2lmaWVyOk1zLHN5bWJvbE5hbWU6WG4sZXhwb3J0TWFwS2V5OmZvLGV4cG9ydE5hbWU6QW8uZXhwb3J0S2luZD09PTI/XCJleHBvcnQ9XCI6QW8uc3ltYm9sLm5hbWUsZmlsZU5hbWU6QW8ubW9kdWxlRmlsZU5hbWUsaXNEZWZhdWx0RXhwb3J0OkJzLG1vZHVsZVN5bWJvbDpBby5tb2R1bGVTeW1ib2wsaXNGcm9tUGFja2FnZUpzb246QW8uaXNGcm9tUGFja2FnZUpzb259KX19fX0pLERuPWdhLnNraXBwZWRBbnkoKSxWaXw9Z2EucmVzb2x2ZWRBbnkoKT84OjAsVml8PWdhLnJlc29sdmVkQmV5b25kTGltaXQoKT8xNjowfSk7ZnVuY3Rpb24gUHQoZ2Epe3ZhciB1YT1lLnRyeUNhc3QoZ2EubW9kdWxlU3ltYm9sLnZhbHVlRGVjbGFyYXRpb24sZS5pc1NvdXJjZUZpbGUpO2lmKCF1YSl7dmFyIFhuPWUuc3RyaXBRdW90ZXMoZ2EubW9kdWxlU3ltYm9sLm5hbWUpO3JldHVybiBlLkpzVHlwaW5nLm5vZGVDb3JlTW9kdWxlcy5oYXMoWG4pJiZlLnN0YXJ0c1dpdGgoWG4sXCJub2RlOlwiKSE9PWUuc2hvdWxkVXNlVXJpU3R5bGVOb2RlQ29yZU1vZHVsZXMobXIseGUpPyExOnB0P3B0LmFsbG93c0ltcG9ydGluZ0FtYmllbnRNb2R1bGUoZ2EubW9kdWxlU3ltYm9sLGtuKGdhLmlzRnJvbVBhY2thZ2VKc29uKSk6ITB9cmV0dXJuIGUuaXNJbXBvcnRhYmxlRmlsZShnYS5pc0Zyb21QYWNrYWdlSnNvbj9Icjp4ZSxtcix1YSxucixwdCxrbihnYS5pc0Zyb21QYWNrYWdlSnNvbikscWkpfX1mdW5jdGlvbiBRZShKaSxjZSl7dmFyIFJyPWUuZ2V0U3ltYm9sSWQoSmkpO3BuW1JyXSE9PUMuU29ydFRleHQuR2xvYmFsc09yS2V5d29yZHMmJihCYVtrYS5sZW5ndGhdPWNlLHBuW1JyXT1uYT9DLlNvcnRUZXh0LkxvY2F0aW9uUHJpb3JpdHk6Qy5Tb3J0VGV4dC5BdXRvSW1wb3J0U3VnZ2VzdGlvbnMsa2EucHVzaChKaSkpfWZ1bmN0aW9uIEdyKEppLGNlKXtlLmlzSW5KU0ZpbGUoQWkpfHxKaS5mb3JFYWNoKGZ1bmN0aW9uKFJyKXtpZighIVMoUnIpKXt2YXIgeWk9RXIoUnIsZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KEFyKSx2b2lkIDAsMCwhMSk7aWYoISF5aSl7dmFyIHFpPXlpLm5hbWUsamU9SShScixxaSxjZSx4ZSxQZSxBcixucixVZSk7aWYoISFqZSl7dmFyIEhyPUtlKHtraW5kOjEyOH0samUpO1ZpfD0zMixCYVtrYS5sZW5ndGhdPUhyLGthLnB1c2goUnIpfX19fSl9ZnVuY3Rpb24gUyhKaSl7cmV0dXJuISEoSmkuZmxhZ3MmODE5Nil9ZnVuY3Rpb24gQ2UoSmksY2UsUnIpe2Zvcih2YXIgeWk9Smk7eWkmJiFlLnBvc2l0aW9uQmVsb25nc1RvTm9kZSh5aSxjZSxScik7KXlpPXlpLnBhcmVudDtyZXR1cm4geWl9ZnVuY3Rpb24gcWUoSmkpe3ZhciBjZT1lLnRpbWVzdGFtcCgpLFJyPVNpKEppKXx8R28oSmkpfHxWYyhKaSl8fGJyKEppKXx8ZS5pc0JpZ0ludExpdGVyYWwoSmkpO3JldHVybiB2cihcImdldENvbXBsZXRpb25zQXRQb3NpdGlvbjogaXNDb21wbGV0aW9uTGlzdEJsb2NrZXI6IFwiKyhlLnRpbWVzdGFtcCgpLWNlKSksUnJ9ZnVuY3Rpb24gYnIoSmkpe2lmKEppLmtpbmQ9PT0xMSlyZXR1cm4hMDtpZihKaS5raW5kPT09MzEmJkppLnBhcmVudCl7aWYoQWk9PT1KaS5wYXJlbnQmJihBaS5raW5kPT09MjgwfHxBaS5raW5kPT09Mjc5KSlyZXR1cm4hMTtpZihKaS5wYXJlbnQua2luZD09PTI4MClyZXR1cm4gQWkucGFyZW50LmtpbmQhPT0yODA7aWYoSmkucGFyZW50LmtpbmQ9PT0yODF8fEppLnBhcmVudC5raW5kPT09Mjc5KXJldHVybiEhSmkucGFyZW50LnBhcmVudCYmSmkucGFyZW50LnBhcmVudC5raW5kPT09Mjc4fXJldHVybiExfWZ1bmN0aW9uIFpyKCl7aWYodXQpe3ZhciBKaT11dC5wYXJlbnQua2luZCxjZT13cih1dCk7c3dpdGNoKGNlKXtjYXNlIDI3OnJldHVybiBKaT09PTIwOHx8Smk9PT0xNzF8fEppPT09MjA5fHxKaT09PTIwNHx8Smk9PT0yMjF8fEppPT09MTc5fHxKaT09PTIwNTtjYXNlIDIwOnJldHVybiBKaT09PTIwOHx8Smk9PT0xNzF8fEppPT09MjA5fHxKaT09PTIxMnx8Smk9PT0xOTE7Y2FzZSAyMjpyZXR1cm4gSmk9PT0yMDR8fEppPT09MTc2fHxKaT09PTE2MjtjYXNlIDE0MTpjYXNlIDE0MjpjYXNlIDEwMDpyZXR1cm4hMDtjYXNlIDI0OnJldHVybiBKaT09PTI2MTtjYXNlIDE4OnJldHVybiBKaT09PTI1N3x8Smk9PT0yMDU7Y2FzZSA2MzpyZXR1cm4gSmk9PT0yNTR8fEppPT09MjIxO2Nhc2UgMTU6cmV0dXJuIEppPT09MjIzO2Nhc2UgMTY6cmV0dXJuIEppPT09MjMzO2Nhc2UgMTMxOnJldHVybiBKaT09PTE2OXx8Smk9PT0yOTc7Y2FzZSA0MTpyZXR1cm4gSmk9PT0xNjl9aWYoeXIoY2UpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFNpKEppKXtyZXR1cm4oZS5pc1JlZ3VsYXJFeHByZXNzaW9uTGl0ZXJhbChKaSl8fGUuaXNTdHJpbmdUZXh0Q29udGFpbmluZ05vZGUoSmkpKSYmKGUucmFuZ2VDb250YWluc1Bvc2l0aW9uRXhjbHVzaXZlKGUuY3JlYXRlVGV4dFJhbmdlRnJvbVNwYW4oZS5jcmVhdGVUZXh0U3BhbkZyb21Ob2RlKEppKSksT2UpfHxPZT09PUppLmVuZCYmKCEhSmkuaXNVbnRlcm1pbmF0ZWR8fGUuaXNSZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWwoSmkpKSl9ZnVuY3Rpb24gUGkoKXt2YXIgSmk9RGkodXQpO2lmKCFKaSlyZXR1cm4gMDt2YXIgY2U9ZS5pc0ludGVyc2VjdGlvblR5cGVOb2RlKEppLnBhcmVudCk/SmkucGFyZW50OnZvaWQgMCxScj1jZXx8SmkseWk9d2koUnIsRGUpO2lmKCF5aSlyZXR1cm4gMDt2YXIgcWk9RGUuZ2V0VHlwZUZyb21UeXBlTm9kZShSciksamU9cXIoeWksRGUpLEhyPXFyKHFpLERlKSxwdD1uZXcgZS5TZXQ7cmV0dXJuIEhyLmZvckVhY2goZnVuY3Rpb24oUHQpe3JldHVybiBwdC5hZGQoUHQuZXNjYXBlZE5hbWUpfSksa2E9ZS5jb25jYXRlbmF0ZShrYSxlLmZpbHRlcihqZSxmdW5jdGlvbihQdCl7cmV0dXJuIXB0LmhhcyhQdC5lc2NhcGVkTmFtZSl9KSksUWE9MCxqaT0hMCwxfWZ1bmN0aW9uIFFpKCl7dmFyIEppPWthLmxlbmd0aCxjZT1Dcih1dCk7aWYoIWNlKXJldHVybiAwO1FhPTA7dmFyIFJyLHlpO2lmKGNlLmtpbmQ9PT0yMDUpe3ZhciBxaT1fcihjZSxEZSk7aWYocWk9PT12b2lkIDApcmV0dXJuIGNlLmZsYWdzJjMzNTU0NDMyPzI6KGFpPSEwLDApO3ZhciBqZT1EZS5nZXRDb250ZXh0dWFsVHlwZShjZSw0KSxIcj0oamV8fHFpKS5nZXRTdHJpbmdJbmRleFR5cGUoKSxwdD0oamV8fHFpKS5nZXROdW1iZXJJbmRleFR5cGUoKTtpZihqaT0hIUhyfHwhIXB0LFJyPW1pKHFpLGplLGNlLERlKSx5aT1jZS5wcm9wZXJ0aWVzLFJyLmxlbmd0aD09PTAmJiFwdClyZXR1cm4gYWk9ITAsMH1lbHNle2UuRGVidWcuYXNzZXJ0KGNlLmtpbmQ9PT0yMDEpLGppPSExO3ZhciBQdD1lLmdldFJvb3REZWNsYXJhdGlvbihjZS5wYXJlbnQpO2lmKCFlLmlzVmFyaWFibGVMaWtlKFB0KSlyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiUm9vdCBkZWNsYXJhdGlvbiBpcyBub3QgdmFyaWFibGUtbGlrZS5cIik7dmFyIGdhPWUuaGFzSW5pdGlhbGl6ZXIoUHQpfHwhIWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKFB0KXx8UHQucGFyZW50LnBhcmVudC5raW5kPT09MjQ0O2lmKCFnYSYmUHQua2luZD09PTE2NCYmKGUuaXNFeHByZXNzaW9uKFB0LnBhcmVudCk/Z2E9ISFEZS5nZXRDb250ZXh0dWFsVHlwZShQdC5wYXJlbnQpOihQdC5wYXJlbnQua2luZD09PTE2OXx8UHQucGFyZW50LmtpbmQ9PT0xNzMpJiYoZ2E9ZS5pc0V4cHJlc3Npb24oUHQucGFyZW50LnBhcmVudCkmJiEhRGUuZ2V0Q29udGV4dHVhbFR5cGUoUHQucGFyZW50LnBhcmVudCkpKSxnYSl7dmFyIHVhPURlLmdldFR5cGVBdExvY2F0aW9uKGNlKTtpZighdWEpcmV0dXJuIDI7UnI9RGUuZ2V0UHJvcGVydGllc09mVHlwZSh1YSkuZmlsdGVyKGZ1bmN0aW9uKGpyKXtyZXR1cm4gRGUuaXNQcm9wZXJ0eUFjY2Vzc2libGUoY2UsITEsITEsdWEsanIpfSkseWk9Y2UuZWxlbWVudHN9fWlmKFJyJiZSci5sZW5ndGg+MCl7dmFyIFhuPVhzKFJyLGUuRGVidWcuY2hlY2tEZWZpbmVkKHlpKSk7a2E9ZS5jb25jYXRlbmF0ZShrYSxYbiksaHMoKSxjZS5raW5kPT09MjA1JiZuci5pbmNsdWRlQ29tcGxldGlvbnNXaXRoT2JqZWN0TGl0ZXJhbE1ldGhvZFNuaXBwZXRzJiZuci5pbmNsdWRlQ29tcGxldGlvbnNXaXRoSW5zZXJ0VGV4dCYmKHBzKEppKSxHcihYbixjZSkpfXJldHVybiAxfWZ1bmN0aW9uIEN0KCl7aWYoIXV0KXJldHVybiAwO3ZhciBKaT11dC5raW5kPT09MTh8fHV0LmtpbmQ9PT0yNz9lLnRyeUNhc3QodXQucGFyZW50LGUuaXNOYW1lZEltcG9ydHNPckV4cG9ydHMpOmUuaXNUeXBlS2V5d29yZFRva2VuT3JJZGVudGlmaWVyKHV0KT9lLnRyeUNhc3QodXQucGFyZW50LnBhcmVudCxlLmlzTmFtZWRJbXBvcnRzT3JFeHBvcnRzKTp2b2lkIDA7aWYoIUppKXJldHVybiAwO2UuaXNUeXBlS2V5d29yZFRva2VuT3JJZGVudGlmaWVyKHV0KXx8KE9pPTgpO3ZhciBjZT0oSmkua2luZD09PTI2OT9KaS5wYXJlbnQucGFyZW50OkppLnBhcmVudCkubW9kdWxlU3BlY2lmaWVyO2lmKCFjZSlyZXR1cm4gamk9ITAsSmkua2luZD09PTI2OT8yOjA7dmFyIFJyPURlLmdldFN5bWJvbEF0TG9jYXRpb24oY2UpO2lmKCFScilyZXR1cm4gamk9ITAsMjtRYT0zLGppPSExO3ZhciB5aT1EZS5nZXRFeHBvcnRzQW5kUHJvcGVydGllc09mTW9kdWxlKFJyKSxxaT1uZXcgZS5TZXQoSmkuZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKEhyKXtyZXR1cm4hZHMoSHIpfSkubWFwKGZ1bmN0aW9uKEhyKXtyZXR1cm4oSHIucHJvcGVydHlOYW1lfHxIci5uYW1lKS5lc2NhcGVkVGV4dH0pKSxqZT15aS5maWx0ZXIoZnVuY3Rpb24oSHIpe3JldHVybiBIci5lc2NhcGVkTmFtZSE9PVwiZGVmYXVsdFwiJiYhcWkuaGFzKEhyLmVzY2FwZWROYW1lKX0pO3JldHVybiBrYT1lLmNvbmNhdGVuYXRlKGthLGplKSxqZS5sZW5ndGh8fChPaT0wKSwxfWZ1bmN0aW9uIHNhKCl7dmFyIEppLGNlPXV0JiYodXQua2luZD09PTE4fHx1dC5raW5kPT09MjcpP2UudHJ5Q2FzdCh1dC5wYXJlbnQsZS5pc05hbWVkRXhwb3J0cyk6dm9pZCAwO2lmKCFjZSlyZXR1cm4gMDt2YXIgUnI9ZS5maW5kQW5jZXN0b3IoY2UsZS5vcihlLmlzU291cmNlRmlsZSxlLmlzTW9kdWxlRGVjbGFyYXRpb24pKTtyZXR1cm4gUWE9NSxqaT0hMSwoSmk9UnIubG9jYWxzKT09PW51bGx8fEppPT09dm9pZCAwfHxKaS5mb3JFYWNoKGZ1bmN0aW9uKHlpLHFpKXt2YXIgamUsSHI7a2EucHVzaCh5aSksISgoSHI9KGplPVJyLnN5bWJvbCk9PT1udWxsfHxqZT09PXZvaWQgMD92b2lkIDA6amUuZXhwb3J0cyk9PT1udWxsfHxIcj09PXZvaWQgMCkmJkhyLmhhcyhxaSkmJihwbltlLmdldFN5bWJvbElkKHlpKV09Qy5Tb3J0VGV4dC5PcHRpb25hbE1lbWJlcil9KSwxfWZ1bmN0aW9uIGVuKCl7dmFyIEppPXNpKG1yLHV0LEFpLE9lKTtpZighSmkpcmV0dXJuIDA7aWYoUWE9MyxqaT0hMCxPaT11dC5raW5kPT09NDE/MDplLmlzQ2xhc3NMaWtlKEppKT8yOjMsIWUuaXNDbGFzc0xpa2UoSmkpKXJldHVybiAxO3ZhciBjZT11dC5raW5kPT09MjY/dXQucGFyZW50LnBhcmVudDp1dC5wYXJlbnQsUnI9ZS5pc0NsYXNzRWxlbWVudChjZSk/ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKGNlKTowO2lmKHV0LmtpbmQ9PT03OSYmIWRzKHV0KSlzd2l0Y2godXQuZ2V0VGV4dCgpKXtjYXNlXCJwcml2YXRlXCI6UnI9UnJ8ODticmVhaztjYXNlXCJzdGF0aWNcIjpScj1ScnwzMjticmVhaztjYXNlXCJvdmVycmlkZVwiOlJyPVJyfDE2Mzg0O2JyZWFrfWlmKGUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oY2UpJiYoUnJ8PTMyKSwhKFJyJjgpKXt2YXIgeWk9ZS5pc0NsYXNzTGlrZShKaSkmJlJyJjE2Mzg0P2Uuc2luZ2xlRWxlbWVudEFycmF5KGUuZ2V0RWZmZWN0aXZlQmFzZVR5cGVOb2RlKEppKSk6ZS5nZXRBbGxTdXBlclR5cGVOb2RlcyhKaSkscWk9ZS5mbGF0TWFwKHlpLGZ1bmN0aW9uKGplKXt2YXIgSHI9RGUuZ2V0VHlwZUF0TG9jYXRpb24oamUpO3JldHVybiBSciYzMj8oSHI9PW51bGw/dm9pZCAwOkhyLnN5bWJvbCkmJkRlLmdldFByb3BlcnRpZXNPZlR5cGUoRGUuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihIci5zeW1ib2wsSmkpKTpIciYmRGUuZ2V0UHJvcGVydGllc09mVHlwZShIcil9KTtrYT1lLmNvbmNhdGVuYXRlKGthLFFzKHFpLEppLm1lbWJlcnMsUnIpKX1yZXR1cm4gMX1mdW5jdGlvbiBXYShKaSl7cmV0dXJuISFKaS5wYXJlbnQmJmUuaXNQYXJhbWV0ZXIoSmkucGFyZW50KSYmZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oSmkucGFyZW50LnBhcmVudCkmJihlLmlzUGFyYW1ldGVyUHJvcGVydHlNb2RpZmllcihKaS5raW5kKXx8ZS5pc0RlY2xhcmF0aW9uTmFtZShKaSkpfWZ1bmN0aW9uIHFuKEppKXtpZihKaSl7dmFyIGNlPUppLnBhcmVudDtzd2l0Y2goSmkua2luZCl7Y2FzZSAyMDpjYXNlIDI3OnJldHVybiBlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihKaS5wYXJlbnQpP0ppLnBhcmVudDp2b2lkIDA7ZGVmYXVsdDppZihXYShKaSkpcmV0dXJuIGNlLnBhcmVudH19fWZ1bmN0aW9uIG1vKEppKXtpZihKaSl7dmFyIGNlLFJyPWUuZmluZEFuY2VzdG9yKEppLnBhcmVudCxmdW5jdGlvbih5aSl7cmV0dXJuIGUuaXNDbGFzc0xpa2UoeWkpP1wicXVpdFwiOmUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbih5aSkmJmNlPT09eWkuYm9keT8hMDooY2U9eWksITEpfSk7cmV0dXJuIFJyJiZScn19ZnVuY3Rpb24gU28oSmkpe2lmKEppKXt2YXIgY2U9SmkucGFyZW50O3N3aXRjaChKaS5raW5kKXtjYXNlIDMxOmNhc2UgMzA6Y2FzZSA0MzpjYXNlIDc5OmNhc2UgMjA2OmNhc2UgMjg2OmNhc2UgMjg1OmNhc2UgMjg3OmlmKGNlJiYoY2Uua2luZD09PTI3OXx8Y2Uua2luZD09PTI4MCkpe2lmKEppLmtpbmQ9PT0zMSl7dmFyIFJyPWUuZmluZFByZWNlZGluZ1Rva2VuKEppLnBvcyxtcix2b2lkIDApO2lmKCFjZS50eXBlQXJndW1lbnRzfHxSciYmUnIua2luZD09PTQzKWJyZWFrfXJldHVybiBjZX1lbHNlIGlmKGNlLmtpbmQ9PT0yODUpcmV0dXJuIGNlLnBhcmVudC5wYXJlbnQ7YnJlYWs7Y2FzZSAxMDppZihjZSYmKGNlLmtpbmQ9PT0yODV8fGNlLmtpbmQ9PT0yODcpKXJldHVybiBjZS5wYXJlbnQucGFyZW50O2JyZWFrO2Nhc2UgMTk6aWYoY2UmJmNlLmtpbmQ9PT0yODgmJmNlLnBhcmVudCYmY2UucGFyZW50LmtpbmQ9PT0yODUpcmV0dXJuIGNlLnBhcmVudC5wYXJlbnQucGFyZW50O2lmKGNlJiZjZS5raW5kPT09Mjg3KXJldHVybiBjZS5wYXJlbnQucGFyZW50O2JyZWFrfX19ZnVuY3Rpb24gR28oSmkpe3ZhciBjZT1KaS5wYXJlbnQsUnI9Y2Uua2luZDtzd2l0Y2goSmkua2luZCl7Y2FzZSAyNzpyZXR1cm4gUnI9PT0yNTR8fEtjKEppKXx8UnI9PT0yMzd8fFJyPT09MjYwfHxQYyhScil8fFJyPT09MjU4fHxScj09PTIwMnx8UnI9PT0yNTl8fGUuaXNDbGFzc0xpa2UoY2UpJiYhIWNlLnR5cGVQYXJhbWV0ZXJzJiZjZS50eXBlUGFyYW1ldGVycy5lbmQ+PUppLnBvcztjYXNlIDI0OnJldHVybiBScj09PTIwMjtjYXNlIDU4OnJldHVybiBScj09PTIwMztjYXNlIDIyOnJldHVybiBScj09PTIwMjtjYXNlIDIwOnJldHVybiBScj09PTI5Mnx8UGMoUnIpO2Nhc2UgMTg6cmV0dXJuIFJyPT09MjYwO2Nhc2UgMjk6cmV0dXJuIFJyPT09MjU3fHxScj09PTIyNnx8UnI9PT0yNTh8fFJyPT09MjU5fHxlLmlzRnVuY3Rpb25MaWtlS2luZChScik7Y2FzZSAxMjQ6cmV0dXJuIFJyPT09MTY3JiYhZS5pc0NsYXNzTGlrZShjZS5wYXJlbnQpO2Nhc2UgMjU6cmV0dXJuIFJyPT09MTY0fHwhIWNlLnBhcmVudCYmY2UucGFyZW50LmtpbmQ9PT0yMDI7Y2FzZSAxMjM6Y2FzZSAxMjE6Y2FzZSAxMjI6cmV0dXJuIFJyPT09MTY0JiYhZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oY2UucGFyZW50KTtjYXNlIDEyNzpyZXR1cm4gUnI9PT0yNzB8fFJyPT09Mjc1fHxScj09PTI2ODtjYXNlIDEzNjpjYXNlIDE0OTpyZXR1cm4hWGkoSmkpO2Nhc2UgNzk6aWYoUnI9PT0yNzAmJkppPT09Y2UubmFtZSYmSmkudGV4dD09PVwidHlwZVwiKXJldHVybiExO2JyZWFrO2Nhc2UgODQ6Y2FzZSA5MjpjYXNlIDExODpjYXNlIDk4OmNhc2UgMTEzOmNhc2UgMTAwOmNhc2UgMTE5OmNhc2UgODU6Y2FzZSAxMzc6cmV0dXJuITA7Y2FzZSAxNTI6cmV0dXJuIFJyIT09MjcwO2Nhc2UgNDE6cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2UoSmkucGFyZW50KSYmIWUuaXNNZXRob2REZWNsYXJhdGlvbihKaS5wYXJlbnQpfWlmKHlyKHdyKEppKSkmJlhpKEppKXx8V2EoSmkpJiYoIWUuaXNJZGVudGlmaWVyKEppKXx8ZS5pc1BhcmFtZXRlclByb3BlcnR5TW9kaWZpZXIod3IoSmkpKXx8ZHMoSmkpKSlyZXR1cm4hMTtzd2l0Y2god3IoSmkpKXtjYXNlIDEyNjpjYXNlIDg0OmNhc2UgODU6Y2FzZSAxMzU6Y2FzZSA5MjpjYXNlIDk4OmNhc2UgMTE4OmNhc2UgMTE5OmNhc2UgMTIxOmNhc2UgMTIyOmNhc2UgMTIzOmNhc2UgMTI0OmNhc2UgMTEzOnJldHVybiEwO2Nhc2UgMTMxOnJldHVybiBlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihKaS5wYXJlbnQpfXZhciB5aT1lLmZpbmRBbmNlc3RvcihKaS5wYXJlbnQsZS5pc0NsYXNzTGlrZSk7aWYoeWkmJkppPT09eHQmJnlzKEppLE9lKSlyZXR1cm4hMTt2YXIgcWk9ZS5nZXRBbmNlc3RvcihKaS5wYXJlbnQsMTY3KTtpZihxaSYmSmkhPT14dCYmZS5pc0NsYXNzTGlrZSh4dC5wYXJlbnQucGFyZW50KSYmT2U8PXh0LmVuZCl7aWYoeXMoSmkseHQuZW5kKSlyZXR1cm4hMTtpZihKaS5raW5kIT09NjMmJihlLmlzSW5pdGlhbGl6ZWRQcm9wZXJ0eShxaSl8fGUuaGFzVHlwZShxaSkpKXJldHVybiEwfXJldHVybiBlLmlzRGVjbGFyYXRpb25OYW1lKEppKSYmIWUuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoSmkucGFyZW50KSYmIWUuaXNKc3hBdHRyaWJ1dGUoSmkucGFyZW50KSYmIShlLmlzQ2xhc3NMaWtlKEppLnBhcmVudCkmJihKaSE9PXh0fHxPZT54dC5lbmQpKX1mdW5jdGlvbiB5cyhKaSxjZSl7cmV0dXJuIEppLmtpbmQhPT02MyYmKEppLmtpbmQ9PT0yNnx8IWUucG9zaXRpb25zQXJlT25TYW1lTGluZShKaS5lbmQsY2UsbXIpKX1mdW5jdGlvbiBQYyhKaSl7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2VLaW5kKEppKSYmSmkhPT0xNzF9ZnVuY3Rpb24gVmMoSmkpe2lmKEppLmtpbmQ9PT04KXt2YXIgY2U9SmkuZ2V0RnVsbFRleHQoKTtyZXR1cm4gY2UuY2hhckF0KGNlLmxlbmd0aC0xKT09PVwiLlwifXJldHVybiExfWZ1bmN0aW9uIEtjKEppKXtyZXR1cm4gSmkucGFyZW50LmtpbmQ9PT0yNTUmJiFlLmlzUG9zc2libHlUeXBlQXJndW1lbnRQb3NpdGlvbihKaSxtcixEZSl9ZnVuY3Rpb24gWHMoSmksY2Upe2lmKGNlLmxlbmd0aD09PTApcmV0dXJuIEppO2Zvcih2YXIgUnI9bmV3IGUuU2V0LHlpPW5ldyBlLlNldCxxaT0wLGplPWNlO3FpPGplLmxlbmd0aDtxaSsrKXt2YXIgSHI9amVbcWldO2lmKCEoSHIua2luZCE9PTI5NiYmSHIua2luZCE9PTI5NyYmSHIua2luZCE9PTIwMyYmSHIua2luZCE9PTE2OSYmSHIua2luZCE9PTE3MiYmSHIua2luZCE9PTE3MyYmSHIua2luZCE9PTI5OCkmJiFkcyhIcikpe3ZhciBwdD12b2lkIDA7aWYoZS5pc1NwcmVhZEFzc2lnbm1lbnQoSHIpKXBjKEhyLFJyKTtlbHNlIGlmKGUuaXNCaW5kaW5nRWxlbWVudChIcikmJkhyLnByb3BlcnR5TmFtZSlIci5wcm9wZXJ0eU5hbWUua2luZD09PTc5JiYocHQ9SHIucHJvcGVydHlOYW1lLmVzY2FwZWRUZXh0KTtlbHNle3ZhciBQdD1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKEhyKTtwdD1QdCYmZS5pc1Byb3BlcnR5TmFtZUxpdGVyYWwoUHQpP2UuZ2V0RXNjYXBlZFRleHRPZklkZW50aWZpZXJPckxpdGVyYWwoUHQpOnZvaWQgMH1wdCE9PXZvaWQgMCYmeWkuYWRkKHB0KX19dmFyIGdhPUppLmZpbHRlcihmdW5jdGlvbih1YSl7cmV0dXJuIXlpLmhhcyh1YS5lc2NhcGVkTmFtZSl9KTtyZXR1cm4gdGMoUnIsZ2EpLGdhfWZ1bmN0aW9uIHBjKEppLGNlKXt2YXIgUnI9SmkuZXhwcmVzc2lvbix5aT1EZS5nZXRTeW1ib2xBdExvY2F0aW9uKFJyKSxxaT15aSYmRGUuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbih5aSxSciksamU9cWkmJnFpLnByb3BlcnRpZXM7amUmJmplLmZvckVhY2goZnVuY3Rpb24oSHIpe2NlLmFkZChIci5uYW1lKX0pfWZ1bmN0aW9uIGhzKCl7a2EuZm9yRWFjaChmdW5jdGlvbihKaSl7dmFyIGNlO2lmKEppLmZsYWdzJjE2Nzc3MjE2KXt2YXIgUnI9ZS5nZXRTeW1ib2xJZChKaSk7cG5bUnJdPShjZT1wbltScl0pIT09bnVsbCYmY2UhPT12b2lkIDA/Y2U6Qy5Tb3J0VGV4dC5PcHRpb25hbE1lbWJlcn19KX1mdW5jdGlvbiB0YyhKaSxjZSl7aWYoSmkuc2l6ZSE9PTApZm9yKHZhciBScj0wLHlpPWNlO1JyPHlpLmxlbmd0aDtScisrKXt2YXIgcWk9eWlbUnJdO0ppLmhhcyhxaS5uYW1lKSYmKHBuW2UuZ2V0U3ltYm9sSWQocWkpXT1DLlNvcnRUZXh0Lk1lbWJlckRlY2xhcmVkQnlTcHJlYWRBc3NpZ25tZW50KX19ZnVuY3Rpb24gcHMoSmkpe2Zvcih2YXIgY2UsUnI9Smk7UnI8a2EubGVuZ3RoO1JyKyspe3ZhciB5aT1rYVtScl0scWk9ZS5nZXRTeW1ib2xJZCh5aSksamU9QmE9PW51bGw/dm9pZCAwOkJhW1JyXSxIcj1lLmdldEVtaXRTY3JpcHRUYXJnZXQoQXIpLHB0PUVyKHlpLEhyLGplLDAsITEpO2lmKHB0KXt2YXIgUHQ9KGNlPXBuW3FpXSkhPT1udWxsJiZjZSE9PXZvaWQgMD9jZTpDLlNvcnRUZXh0LkxvY2F0aW9uUHJpb3JpdHksZ2E9cHQubmFtZTtwbltxaV09Qy5Tb3J0VGV4dC5PYmplY3RMaXRlcmFsUHJvcGVydHkoUHQsZ2EpfX19ZnVuY3Rpb24gUXMoSmksY2UsUnIpe2Zvcih2YXIgeWk9bmV3IGUuU2V0LHFpPTAsamU9Y2U7cWk8amUubGVuZ3RoO3FpKyspe3ZhciBIcj1qZVtxaV07aWYoIShIci5raW5kIT09MTY3JiZIci5raW5kIT09MTY5JiZIci5raW5kIT09MTcyJiZIci5raW5kIT09MTczKSYmIWRzKEhyKSYmIWUuaGFzRWZmZWN0aXZlTW9kaWZpZXIoSHIsOCkmJmUuaXNTdGF0aWMoSHIpPT09ISEoUnImMzIpKXt2YXIgcHQ9ZS5nZXRQcm9wZXJ0eU5hbWVGb3JQcm9wZXJ0eU5hbWVOb2RlKEhyLm5hbWUpO3B0JiZ5aS5hZGQocHQpfX1yZXR1cm4gSmkuZmlsdGVyKGZ1bmN0aW9uKFB0KXtyZXR1cm4heWkuaGFzKFB0LmVzY2FwZWROYW1lKSYmISFQdC5kZWNsYXJhdGlvbnMmJiEoZS5nZXREZWNsYXJhdGlvbk1vZGlmaWVyRmxhZ3NGcm9tU3ltYm9sKFB0KSY4KSYmIShQdC52YWx1ZURlY2xhcmF0aW9uJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXJDbGFzc0VsZW1lbnREZWNsYXJhdGlvbihQdC52YWx1ZURlY2xhcmF0aW9uKSl9KX1mdW5jdGlvbiBqcyhKaSxjZSl7Zm9yKHZhciBScj1uZXcgZS5TZXQseWk9bmV3IGUuU2V0LHFpPTAsamU9Y2U7cWk8amUubGVuZ3RoO3FpKyspe3ZhciBIcj1qZVtxaV07ZHMoSHIpfHwoSHIua2luZD09PTI4NT9Sci5hZGQoSHIubmFtZS5lc2NhcGVkVGV4dCk6ZS5pc0pzeFNwcmVhZEF0dHJpYnV0ZShIcikmJnBjKEhyLHlpKSl9dmFyIHB0PUppLmZpbHRlcihmdW5jdGlvbihQdCl7cmV0dXJuIVJyLmhhcyhQdC5lc2NhcGVkTmFtZSl9KTtyZXR1cm4gdGMoeWkscHQpLHB0fWZ1bmN0aW9uIGRzKEppKXtyZXR1cm4gSmkuZ2V0U3RhcnQobXIpPD1PZSYmT2U8PUppLmdldEVuZCgpfX1mdW5jdGlvbiBDcih4ZSl7aWYoeGUpe3ZhciB2cj14ZS5wYXJlbnQ7c3dpdGNoKHhlLmtpbmQpe2Nhc2UgMTg6Y2FzZSAyNzppZihlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24odnIpfHxlLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4odnIpKXJldHVybiB2cjticmVhaztjYXNlIDQxOnJldHVybiBlLmlzTWV0aG9kRGVjbGFyYXRpb24odnIpP2UudHJ5Q2FzdCh2ci5wYXJlbnQsZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKTp2b2lkIDA7Y2FzZSA3OTpyZXR1cm4geGUudGV4dD09PVwiYXN5bmNcIiYmZS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudCh4ZS5wYXJlbnQpP3hlLnBhcmVudC5wYXJlbnQ6dm9pZCAwfX19ZnVuY3Rpb24gWWUoeGUsdnIpe3ZhciBtcj1lLmZpbmRQcmVjZWRpbmdUb2tlbih4ZSx2cik7aWYobXImJnhlPD1tci5lbmQmJihlLmlzTWVtYmVyTmFtZShtcil8fGUuaXNLZXl3b3JkKG1yLmtpbmQpKSl7dmFyIEFyPWUuZmluZFByZWNlZGluZ1Rva2VuKG1yLmdldEZ1bGxTdGFydCgpLHZyLHZvaWQgMCk7cmV0dXJue2NvbnRleHRUb2tlbjpBcixwcmV2aW91c1Rva2VuOm1yfX1yZXR1cm57Y29udGV4dFRva2VuOm1yLHByZXZpb3VzVG9rZW46bXJ9fWZ1bmN0aW9uIEJyKHhlLHZyLG1yLEFyKXt2YXIgT2U9dnIuaXNQYWNrYWdlSnNvbkltcG9ydD9Bci5nZXRQYWNrYWdlSnNvbkF1dG9JbXBvcnRQcm92aWRlcigpOm1yLG5yPU9lLmdldFR5cGVDaGVja2VyKCksTXI9dnIuYW1iaWVudE1vZHVsZU5hbWU/bnIudHJ5RmluZEFtYmllbnRNb2R1bGUodnIuYW1iaWVudE1vZHVsZU5hbWUpOnZyLmZpbGVOYW1lP25yLmdldE1lcmdlZFN5bWJvbChlLkRlYnVnLmNoZWNrRGVmaW5lZChPZS5nZXRTb3VyY2VGaWxlKHZyLmZpbGVOYW1lKSkuc3ltYm9sKTp2b2lkIDA7aWYoISFNcil7dmFyIFBlPXZyLmV4cG9ydE5hbWU9PT1cImV4cG9ydD1cIj9uci5yZXNvbHZlRXh0ZXJuYWxNb2R1bGVTeW1ib2woTXIpOm5yLnRyeUdldE1lbWJlckluTW9kdWxlRXhwb3J0c0FuZFByb3BlcnRpZXModnIuZXhwb3J0TmFtZSxNcik7aWYoISFQZSl7dmFyIFVlPXZyLmV4cG9ydE5hbWU9PT1cImRlZmF1bHRcIjtyZXR1cm4gUGU9VWUmJmUuZ2V0TG9jYWxTeW1ib2xGb3JFeHBvcnREZWZhdWx0KFBlKXx8UGUse3N5bWJvbDpQZSxvcmlnaW46ZmUodnIseGUsTXIpfX19fWZ1bmN0aW9uIEVyKHhlLHZyLG1yLEFyLE9lKXt2YXIgbnI9cChtcik/bXIuc3ltYm9sTmFtZTp4ZS5uYW1lO2lmKCEobnI9PT12b2lkIDB8fHhlLmZsYWdzJjE1MzYmJmUuaXNTaW5nbGVPckRvdWJsZVF1b3RlKG5yLmNoYXJDb2RlQXQoMCkpfHxlLmlzS25vd25TeW1ib2woeGUpKSl7dmFyIE1yPXtuYW1lOm5yLG5lZWRzQ29udmVydFByb3BlcnR5QWNjZXNzOiExfTtpZihlLmlzSWRlbnRpZmllclRleHQobnIsdnIsT2U/MTowKXx8eGUudmFsdWVEZWNsYXJhdGlvbiYmZS5pc1ByaXZhdGVJZGVudGlmaWVyQ2xhc3NFbGVtZW50RGVjbGFyYXRpb24oeGUudmFsdWVEZWNsYXJhdGlvbikpcmV0dXJuIE1yO3N3aXRjaChBcil7Y2FzZSAzOnJldHVybjtjYXNlIDA6cmV0dXJue25hbWU6SlNPTi5zdHJpbmdpZnkobnIpLG5lZWRzQ29udmVydFByb3BlcnR5QWNjZXNzOiExfTtjYXNlIDI6Y2FzZSAxOnJldHVybiBuci5jaGFyQ29kZUF0KDApPT09MzI/dm9pZCAwOntuYW1lOm5yLG5lZWRzQ29udmVydFByb3BlcnR5QWNjZXNzOiEwfTtjYXNlIDU6Y2FzZSA0OnJldHVybiBNcjtkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoQXIpfX19dmFyIE5lPVtdLG49ZS5tZW1vaXplKGZ1bmN0aW9uKCl7Zm9yKHZhciB4ZT1bXSx2cj04MTt2cjw9MTYwO3ZyKyspeGUucHVzaCh7bmFtZTplLnRva2VuVG9TdHJpbmcodnIpLGtpbmQ6XCJrZXl3b3JkXCIsa2luZE1vZGlmaWVyczpcIlwiLHNvcnRUZXh0OkMuU29ydFRleHQuR2xvYmFsc09yS2V5d29yZHN9KTtyZXR1cm4geGV9KTtmdW5jdGlvbiBscih4ZSx2cil7aWYoIXZyKXJldHVybiBiZSh4ZSk7dmFyIG1yPXhlKzgrMTtyZXR1cm4gTmVbbXJdfHwoTmVbbXJdPWJlKHhlKS5maWx0ZXIoZnVuY3Rpb24oQXIpe3JldHVybiFHZShlLnN0cmluZ1RvVG9rZW4oQXIubmFtZSkpfSkpfWZ1bmN0aW9uIGJlKHhlKXtyZXR1cm4gTmVbeGVdfHwoTmVbeGVdPW4oKS5maWx0ZXIoZnVuY3Rpb24odnIpe3ZhciBtcj1lLnN0cmluZ1RvVG9rZW4odnIubmFtZSk7c3dpdGNoKHhlKXtjYXNlIDA6cmV0dXJuITE7Y2FzZSAxOnJldHVybiBJcihtcil8fG1yPT09MTM1fHxtcj09PTE0MXx8bXI9PT0xNTJ8fG1yPT09MTQyfHxtcj09PTEyNnx8ZS5pc1R5cGVLZXl3b3JkKG1yKSYmbXIhPT0xNTM7Y2FzZSA1OnJldHVybiBJcihtcik7Y2FzZSAyOnJldHVybiB5cihtcik7Y2FzZSAzOnJldHVybiB1cihtcik7Y2FzZSA0OnJldHVybiBlLmlzUGFyYW1ldGVyUHJvcGVydHlNb2RpZmllcihtcik7Y2FzZSA2OnJldHVybiBlLmlzVHlwZUtleXdvcmQobXIpfHxtcj09PTg1O2Nhc2UgNzpyZXR1cm4gZS5pc1R5cGVLZXl3b3JkKG1yKTtjYXNlIDg6cmV0dXJuIG1yPT09MTUyO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoeGUpfX0pKX1mdW5jdGlvbiBHZSh4ZSl7c3dpdGNoKHhlKXtjYXNlIDEyNjpjYXNlIDEzMDpjYXNlIDE1ODpjYXNlIDEzMzpjYXNlIDEzNTpjYXNlIDkyOmNhc2UgMTU3OmNhc2UgMTE3OmNhc2UgMTM3OmNhc2UgMTE4OmNhc2UgMTM5OmNhc2UgMTQwOmNhc2UgMTQxOmNhc2UgMTQyOmNhc2UgMTQzOmNhc2UgMTQ3OmNhc2UgMTQ4OmNhc2UgMTU5OmNhc2UgMTIxOmNhc2UgMTIyOmNhc2UgMTIzOmNhc2UgMTQ1OmNhc2UgMTUwOmNhc2UgMTUxOmNhc2UgMTUyOmNhc2UgMTU0OmNhc2UgMTU1OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHVyKHhlKXtyZXR1cm4geGU9PT0xNDV9ZnVuY3Rpb24geXIoeGUpe3N3aXRjaCh4ZSl7Y2FzZSAxMjY6Y2FzZSAxMzQ6Y2FzZSAxMzY6Y2FzZSAxNDk6Y2FzZSAxMzE6Y2FzZSAxMzU6Y2FzZSAxNTk6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gZS5pc0NsYXNzTWVtYmVyTW9kaWZpZXIoeGUpfX1mdW5jdGlvbiBJcih4ZSl7cmV0dXJuIHhlPT09MTMxfHx4ZT09PTEzMnx8eGU9PT0xMjd8fCFlLmlzQ29udGV4dHVhbEtleXdvcmQoeGUpJiYheXIoeGUpfWZ1bmN0aW9uIHdyKHhlKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoeGUpP3hlLm9yaWdpbmFsS2V5d29yZEtpbmR8fDA6eGUua2luZH1mdW5jdGlvbiBVcih4ZSx2cil7dmFyIG1yPVtdO2lmKHhlKXt2YXIgQXI9eGUuZ2V0U291cmNlRmlsZSgpLE9lPXhlLnBhcmVudCxucj1Bci5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbih4ZS5lbmQpLmxpbmUsTXI9QXIuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24odnIpLmxpbmU7KGUuaXNJbXBvcnREZWNsYXJhdGlvbihPZSl8fGUuaXNFeHBvcnREZWNsYXJhdGlvbihPZSkmJk9lLm1vZHVsZVNwZWNpZmllcikmJnhlPT09T2UubW9kdWxlU3BlY2lmaWVyJiZucj09PU1yJiZtci5wdXNoKHtuYW1lOmUudG9rZW5Ub1N0cmluZygxMjkpLGtpbmQ6XCJrZXl3b3JkXCIsa2luZE1vZGlmaWVyczpcIlwiLHNvcnRUZXh0OkMuU29ydFRleHQuR2xvYmFsc09yS2V5d29yZHN9KX1yZXR1cm4gbXJ9ZnVuY3Rpb24gaWkoeGUsdnIpe3JldHVybiBlLmZpbmRBbmNlc3Rvcih4ZSxmdW5jdGlvbihtcil7cmV0dXJuIGUuaXNKU0RvY1RhZyhtcikmJmUucmFuZ2VDb250YWluc1Bvc2l0aW9uKG1yLHZyKT8hMDplLmlzSlNEb2MobXIpP1wicXVpdFwiOiExfSl9ZnVuY3Rpb24gbWkoeGUsdnIsbXIsQXIpe3ZhciBPZT12ciYmdnIhPT14ZSxucj1PZSYmISh2ci5mbGFncyYzKT9Bci5nZXRVbmlvblR5cGUoW3hlLHZyXSk6eGUsTXI9cGUobnIsbXIsQXIpO3JldHVybiBuci5pc0NsYXNzKCkmJm9yKE1yKT9bXTpPZT9lLmZpbHRlcihNcixQZSk6TXI7ZnVuY3Rpb24gUGUoVWUpe3JldHVybiBlLmxlbmd0aChVZS5kZWNsYXJhdGlvbnMpP2Uuc29tZShVZS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oZnIpe3JldHVybiBmci5wYXJlbnQhPT1tcn0pOiEwfX1DLmdldFByb3BlcnRpZXNGb3JPYmplY3RFeHByZXNzaW9uPW1pO2Z1bmN0aW9uIHBlKHhlLHZyLG1yKXtyZXR1cm4geGUuaXNVbmlvbigpP21yLmdldEFsbFBvc3NpYmxlUHJvcGVydGllc09mVHlwZXMoZS5maWx0ZXIoeGUudHlwZXMsZnVuY3Rpb24oQXIpe3JldHVybiEoQXIuZmxhZ3MmMTMxMDY4fHxtci5pc0FycmF5TGlrZVR5cGUoQXIpfHxtci5pc1R5cGVJbnZhbGlkRHVlVG9VbmlvbkRpc2NyaW1pbmFudChBcix2cil8fGUudHlwZUhhc0NhbGxPckNvbnN0cnVjdFNpZ25hdHVyZXMoQXIsbXIpfHxBci5pc0NsYXNzKCkmJm9yKEFyLmdldEFwcGFyZW50UHJvcGVydGllcygpKSl9KSk6eGUuZ2V0QXBwYXJlbnRQcm9wZXJ0aWVzKCl9ZnVuY3Rpb24gb3IoeGUpe3JldHVybiBlLnNvbWUoeGUsZnVuY3Rpb24odnIpe3JldHVybiEhKGUuZ2V0RGVjbGFyYXRpb25Nb2RpZmllckZsYWdzRnJvbVN5bWJvbCh2cikmMjQpfSl9ZnVuY3Rpb24gcXIoeGUsdnIpe3JldHVybiB4ZS5pc1VuaW9uKCk/ZS5EZWJ1Zy5jaGVja0VhY2hEZWZpbmVkKHZyLmdldEFsbFBvc3NpYmxlUHJvcGVydGllc09mVHlwZXMoeGUudHlwZXMpLFwiZ2V0QWxsUG9zc2libGVQcm9wZXJ0aWVzT2ZUeXBlcygpIHNob3VsZCBhbGwgYmUgZGVmaW5lZFwiKTplLkRlYnVnLmNoZWNrRWFjaERlZmluZWQoeGUuZ2V0QXBwYXJlbnRQcm9wZXJ0aWVzKCksXCJnZXRBcHBhcmVudFByb3BlcnRpZXMoKSBzaG91bGQgYWxsIGJlIGRlZmluZWRcIil9ZnVuY3Rpb24gc2koeGUsdnIsbXIsQXIpe3N3aXRjaChtci5raW5kKXtjYXNlIDM0ODpyZXR1cm4gZS50cnlDYXN0KG1yLnBhcmVudCxlLmlzT2JqZWN0VHlwZURlY2xhcmF0aW9uKTtjYXNlIDE6dmFyIE9lPWUudHJ5Q2FzdChlLmxhc3RPclVuZGVmaW5lZChlLmNhc3QobXIucGFyZW50LGUuaXNTb3VyY2VGaWxlKS5zdGF0ZW1lbnRzKSxlLmlzT2JqZWN0VHlwZURlY2xhcmF0aW9uKTtpZihPZSYmIWUuZmluZENoaWxkT2ZLaW5kKE9lLDE5LHhlKSlyZXR1cm4gT2U7YnJlYWs7Y2FzZSA3OTp7aWYoZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24obXIucGFyZW50KSYmbXIucGFyZW50LmluaXRpYWxpemVyPT09bXIpcmV0dXJuO2lmKFhpKG1yKSlyZXR1cm4gZS5maW5kQW5jZXN0b3IobXIsZS5pc09iamVjdFR5cGVEZWNsYXJhdGlvbil9fWlmKCEhdnIpe2lmKG1yLmtpbmQ9PT0xMzR8fGUuaXNJZGVudGlmaWVyKHZyKSYmZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24odnIucGFyZW50KSYmZS5pc0NsYXNzTGlrZShtcikpcmV0dXJuIGUuZmluZEFuY2VzdG9yKHZyLGUuaXNDbGFzc0xpa2UpO3N3aXRjaCh2ci5raW5kKXtjYXNlIDYzOnJldHVybjtjYXNlIDI2OmNhc2UgMTk6cmV0dXJuIFhpKG1yKSYmbXIucGFyZW50Lm5hbWU9PT1tcj9tci5wYXJlbnQucGFyZW50OmUudHJ5Q2FzdChtcixlLmlzT2JqZWN0VHlwZURlY2xhcmF0aW9uKTtjYXNlIDE4OmNhc2UgMjc6cmV0dXJuIGUudHJ5Q2FzdCh2ci5wYXJlbnQsZS5pc09iamVjdFR5cGVEZWNsYXJhdGlvbik7ZGVmYXVsdDppZighWGkodnIpKXJldHVybiBlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHhlLHZyLmdldEVuZCgpKS5saW5lIT09ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbih4ZSxBcikubGluZSYmZS5pc09iamVjdFR5cGVEZWNsYXJhdGlvbihtcik/bXI6dm9pZCAwO3ZhciBucj1lLmlzQ2xhc3NMaWtlKHZyLnBhcmVudC5wYXJlbnQpP3lyOnVyO3JldHVybiBucih2ci5raW5kKXx8dnIua2luZD09PTQxfHxlLmlzSWRlbnRpZmllcih2cikmJm5yKGUuc3RyaW5nVG9Ub2tlbih2ci50ZXh0KSk/dnIucGFyZW50LnBhcmVudDp2b2lkIDB9fX1mdW5jdGlvbiBEaSh4ZSl7aWYoISF4ZSl7dmFyIHZyPXhlLnBhcmVudDtzd2l0Y2goeGUua2luZCl7Y2FzZSAxODppZihlLmlzVHlwZUxpdGVyYWxOb2RlKHZyKSlyZXR1cm4gdnI7YnJlYWs7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNzk6aWYodnIua2luZD09PTE2NiYmZS5pc1R5cGVMaXRlcmFsTm9kZSh2ci5wYXJlbnQpKXJldHVybiB2ci5wYXJlbnQ7YnJlYWt9fX1mdW5jdGlvbiB3aSh4ZSx2cil7aWYoISF4ZSl7aWYoZS5pc1R5cGVOb2RlKHhlKSYmZS5pc1R5cGVSZWZlcmVuY2VUeXBlKHhlLnBhcmVudCkpcmV0dXJuIHZyLmdldFR5cGVBcmd1bWVudENvbnN0cmFpbnQoeGUpO3ZhciBtcj13aSh4ZS5wYXJlbnQsdnIpO2lmKCEhbXIpc3dpdGNoKHhlLmtpbmQpe2Nhc2UgMTY2OnJldHVybiB2ci5nZXRUeXBlT2ZQcm9wZXJ0eU9mQ29udGV4dHVhbFR5cGUobXIseGUuc3ltYm9sLmVzY2FwZWROYW1lKTtjYXNlIDE4ODpjYXNlIDE4MjpjYXNlIDE4NzpyZXR1cm4gbXJ9fX1mdW5jdGlvbiBYaSh4ZSl7cmV0dXJuIHhlLnBhcmVudCYmZS5pc0NsYXNzT3JUeXBlRWxlbWVudCh4ZS5wYXJlbnQpJiZlLmlzT2JqZWN0VHlwZURlY2xhcmF0aW9uKHhlLnBhcmVudC5wYXJlbnQpfWZ1bmN0aW9uIGV0KHhlLHZyLG1yLEFyKXtzd2l0Y2godnIpe2Nhc2VcIi5cIjpjYXNlXCJAXCI6cmV0dXJuITA7Y2FzZSdcIic6Y2FzZVwiJ1wiOmNhc2VcImBcIjpyZXR1cm4hIW1yJiZlLmlzU3RyaW5nTGl0ZXJhbE9yVGVtcGxhdGUobXIpJiZBcj09PW1yLmdldFN0YXJ0KHhlKSsxO2Nhc2VcIiNcIjpyZXR1cm4hIW1yJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIobXIpJiYhIWUuZ2V0Q29udGFpbmluZ0NsYXNzKG1yKTtjYXNlXCI8XCI6cmV0dXJuISFtciYmbXIua2luZD09PTI5JiYoIWUuaXNCaW5hcnlFeHByZXNzaW9uKG1yLnBhcmVudCl8fEdpKG1yLnBhcmVudCkpO2Nhc2VcIi9cIjpyZXR1cm4hIW1yJiYoZS5pc1N0cmluZ0xpdGVyYWxMaWtlKG1yKT8hIWUudHJ5R2V0SW1wb3J0RnJvbU1vZHVsZVNwZWNpZmllcihtcik6bXIua2luZD09PTQzJiZlLmlzSnN4Q2xvc2luZ0VsZW1lbnQobXIucGFyZW50KSk7Y2FzZVwiIFwiOnJldHVybiEhbXImJmUuaXNJbXBvcnRLZXl3b3JkKG1yKSYmbXIucGFyZW50LmtpbmQ9PT0zMDU7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcih2cil9fWZ1bmN0aW9uIEdpKHhlKXt2YXIgdnI9eGUubGVmdDtyZXR1cm4gZS5ub2RlSXNNaXNzaW5nKHZyKX1mdW5jdGlvbiBXdCh4ZSx2cixtcil7dmFyIEFyPW1yLnJlc29sdmVOYW1lKFwic2VsZlwiLHZvaWQgMCwxMTE1NTEsITEpO2lmKEFyJiZtci5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKEFyLHZyKT09PXhlKXJldHVybiEwO3ZhciBPZT1tci5yZXNvbHZlTmFtZShcImdsb2JhbFwiLHZvaWQgMCwxMTE1NTEsITEpO2lmKE9lJiZtci5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKE9lLHZyKT09PXhlKXJldHVybiEwO3ZhciBucj1tci5yZXNvbHZlTmFtZShcImdsb2JhbFRoaXNcIix2b2lkIDAsMTExNTUxLCExKTtyZXR1cm4hIShuciYmbXIuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihucix2cik9PT14ZSl9ZnVuY3Rpb24gWnQoeGUpe3JldHVybiEhKHhlLnZhbHVlRGVjbGFyYXRpb24mJmUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFncyh4ZS52YWx1ZURlY2xhcmF0aW9uKSYzMiYmZS5pc0NsYXNzTGlrZSh4ZS52YWx1ZURlY2xhcmF0aW9uLnBhcmVudCkpfWZ1bmN0aW9uIF9yKHhlLHZyKXt2YXIgbXI9dnIuZ2V0Q29udGV4dHVhbFR5cGUoeGUpO2lmKG1yKXJldHVybiBtcjt2YXIgQXI9ZS53YWxrVXBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbnMoeGUucGFyZW50KTtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihBcikmJkFyLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzJiZ4ZT09PUFyLmxlZnQpcmV0dXJuIHZyLmdldFR5cGVBdExvY2F0aW9uKEFyKTtpZihlLmlzRXhwcmVzc2lvbihBcikpcmV0dXJuIHZyLmdldENvbnRleHR1YWxUeXBlKEFyKX1mdW5jdGlvbiBwaSh4ZSl7dmFyIHZyLG1yPSExLEFyPU9lKCk7cmV0dXJue2lzS2V5d29yZE9ubHlDb21wbGV0aW9uOm1yLGtleXdvcmRDb21wbGV0aW9uOnZyLGlzTmV3SWRlbnRpZmllckxvY2F0aW9uOiEhKEFyfHx2cj09PTE1MikscmVwbGFjZW1lbnROb2RlOkFyJiZlLnJhbmdlSXNPblNpbmdsZUxpbmUoQXIsQXIuZ2V0U291cmNlRmlsZSgpKT9Bcjp2b2lkIDB9O2Z1bmN0aW9uIE9lKCl7dmFyIG5yPXhlLnBhcmVudDtpZihlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24obnIpKXJldHVybiB2cj14ZS5raW5kPT09MTUyP3ZvaWQgMDoxNTIsSnIobnIubW9kdWxlUmVmZXJlbmNlKT9ucjp2b2lkIDA7aWYoYWUobnIseGUpJiZYZShuci5wYXJlbnQpKXJldHVybiBucjtpZihlLmlzTmFtZWRJbXBvcnRzKG5yKXx8ZS5pc05hbWVzcGFjZUltcG9ydChucikpe2lmKCFuci5wYXJlbnQuaXNUeXBlT25seSYmKHhlLmtpbmQ9PT0xOHx8eGUua2luZD09PTEwMHx8eGUua2luZD09PTI3KSYmKHZyPTE1MiksWGUobnIpKWlmKHhlLmtpbmQ9PT0xOXx8eGUua2luZD09PTc5KW1yPSEwLHZyPTE1NjtlbHNlIHJldHVybiBuci5wYXJlbnQucGFyZW50O3JldHVybn1pZihlLmlzSW1wb3J0S2V5d29yZCh4ZSkmJmUuaXNTb3VyY2VGaWxlKG5yKSlyZXR1cm4gdnI9MTUyLHhlO2lmKGUuaXNJbXBvcnRLZXl3b3JkKHhlKSYmZS5pc0ltcG9ydERlY2xhcmF0aW9uKG5yKSlyZXR1cm4gdnI9MTUyLEpyKG5yLm1vZHVsZVNwZWNpZmllcik/bnI6dm9pZCAwfX1mdW5jdGlvbiBhZSh4ZSx2cil7cmV0dXJuIGUuaXNJbXBvcnRTcGVjaWZpZXIoeGUpJiYoeGUuaXNUeXBlT25seXx8dnI9PT14ZS5uYW1lJiZlLmlzVHlwZUtleXdvcmRUb2tlbk9ySWRlbnRpZmllcih2cikpfWZ1bmN0aW9uIFhlKHhlKXtyZXR1cm4gSnIoeGUucGFyZW50LnBhcmVudC5tb2R1bGVTcGVjaWZpZXIpJiYoZS5pc05hbWVzcGFjZUltcG9ydCh4ZSl8fHhlLmVsZW1lbnRzLmxlbmd0aDwyKSYmIXhlLnBhcmVudC5uYW1lfWZ1bmN0aW9uIEpyKHhlKXt2YXIgdnI7cmV0dXJuIGUubm9kZUlzTWlzc2luZyh4ZSk/ITA6ISghKCh2cj1lLnRyeUNhc3QoZS5pc0V4dGVybmFsTW9kdWxlUmVmZXJlbmNlKHhlKT94ZS5leHByZXNzaW9uOnhlLGUuaXNTdHJpbmdMaXRlcmFsTGlrZSkpPT09bnVsbHx8dnI9PT12b2lkIDApJiZ2ci50ZXh0KX1mdW5jdGlvbiB0aSh4ZSl7dmFyIHZyPWUuZmluZEFuY2VzdG9yKHhlLGZ1bmN0aW9uKG1yKXtyZXR1cm4gZS5pc0Z1bmN0aW9uQmxvY2sobXIpfHxaZShtcil8fGUuaXNCaW5kaW5nUGF0dGVybihtcik/XCJxdWl0XCI6ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obXIpfSk7cmV0dXJuIHZyfWZ1bmN0aW9uIFplKHhlKXtyZXR1cm4geGUucGFyZW50JiZlLmlzQXJyb3dGdW5jdGlvbih4ZS5wYXJlbnQpJiZ4ZS5wYXJlbnQuYm9keT09PXhlfWZ1bmN0aW9uIFNyKHhlLHZyLG1yKXtyZXR1cm4gbXI9PT12b2lkIDAmJihtcj1uZXcgZS5NYXApLEFyKHhlKXx8QXIoZS5za2lwQWxpYXMoeGUuZXhwb3J0U3ltYm9sfHx4ZSx2cikpO2Z1bmN0aW9uIEFyKE9lKXtyZXR1cm4hIShPZS5mbGFncyY3ODg5NjgpfHx2ci5pc1Vua25vd25TeW1ib2woT2UpfHwhIShPZS5mbGFncyYxNTM2KSYmZS5hZGRUb1NlZW4obXIsZS5nZXRTeW1ib2xJZChPZSkpJiZ2ci5nZXRFeHBvcnRzT2ZNb2R1bGUoT2UpLnNvbWUoZnVuY3Rpb24obnIpe3JldHVybiBTcihucix2cixtcil9KX19ZnVuY3Rpb24genIoeGUsdnIpe3ZhciBtcj1lLnNraXBBbGlhcyh4ZSx2cikuZGVjbGFyYXRpb25zO3JldHVybiEhZS5sZW5ndGgobXIpJiZlLmV2ZXJ5KG1yLGUuaXNEZXByZWNhdGVkRGVjbGFyYXRpb24pfWZ1bmN0aW9uIFdyKHhlLHZyKXtpZih2ci5sZW5ndGg9PT0wKXJldHVybiEwO2Zvcih2YXIgbXI9ITEsQXIsT2U9MCxucj14ZS5sZW5ndGgsTXI9MDtNcjxucjtNcisrKXt2YXIgUGU9eGUuY2hhckNvZGVBdChNciksVWU9dnIuY2hhckNvZGVBdChPZSk7aWYoKFBlPT09VWV8fFBlPT09SmUoVWUpKSYmKG1yfHwobXI9QXI9PT12b2lkIDB8fDk3PD1BciYmQXI8PTEyMiYmNjU8PVBlJiZQZTw9OTB8fEFyPT09OTUmJlBlIT09OTUpLG1yJiZPZSsrLE9lPT09dnIubGVuZ3RoKSlyZXR1cm4hMDtBcj1QZX1yZXR1cm4hMX1mdW5jdGlvbiBKZSh4ZSl7cmV0dXJuIDk3PD14ZSYmeGU8PTEyMj94ZS0zMjp4ZX19KShhPWUuQ29tcGxldGlvbnN8fChlLkNvbXBsZXRpb25zPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdygkLEEseSxWLEwpe3ZhciBQPWUuZ2V0VG91Y2hpbmdQcm9wZXJ0eU5hbWUoeSxWKTtpZihQLnBhcmVudCYmKGUuaXNKc3hPcGVuaW5nRWxlbWVudChQLnBhcmVudCkmJlAucGFyZW50LnRhZ05hbWU9PT1QfHxlLmlzSnN4Q2xvc2luZ0VsZW1lbnQoUC5wYXJlbnQpKSl7dmFyIGs9UC5wYXJlbnQucGFyZW50LFk9ay5vcGVuaW5nRWxlbWVudCxVPWsuY2xvc2luZ0VsZW1lbnQsaj1bWSxVXS5tYXAoZnVuY3Rpb24oSCl7dmFyIEk9SC50YWdOYW1lO3JldHVybiBCKEkseSl9KTtyZXR1cm5be2ZpbGVOYW1lOnkuZmlsZU5hbWUsaGlnaGxpZ2h0U3BhbnM6an1dfXJldHVybiBFKFYsUCwkLEEsTCl8fFEoUCx5KX1DLmdldERvY3VtZW50SGlnaGxpZ2h0cz13O2Z1bmN0aW9uIEIoJCxBKXtyZXR1cm57ZmlsZU5hbWU6QS5maWxlTmFtZSx0ZXh0U3BhbjplLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUoJCxBKSxraW5kOlwibm9uZVwifX1mdW5jdGlvbiBFKCQsQSx5LFYsTCl7dmFyIFA9bmV3IGUuU2V0KEwubWFwKGZ1bmN0aW9uKGope3JldHVybiBqLmZpbGVOYW1lfSkpLGs9ZS5GaW5kQWxsUmVmZXJlbmNlcy5nZXRSZWZlcmVuY2VFbnRyaWVzRm9yTm9kZSgkLEEseSxMLFYsdm9pZCAwLFApO2lmKCEhayl7dmFyIFk9ZS5hcnJheVRvTXVsdGlNYXAoay5tYXAoZS5GaW5kQWxsUmVmZXJlbmNlcy50b0hpZ2hsaWdodFNwYW4pLGZ1bmN0aW9uKGope3JldHVybiBqLmZpbGVOYW1lfSxmdW5jdGlvbihqKXtyZXR1cm4gai5zcGFufSksVT1lLmNyZWF0ZUdldENhbm9uaWNhbEZpbGVOYW1lKHkudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcygpKTtyZXR1cm4gZS5tYXBEZWZpbmVkKGUuYXJyYXlGcm9tKFkuZW50cmllcygpKSxmdW5jdGlvbihqKXt2YXIgSD1qWzBdLEk9alsxXTtpZighUC5oYXMoSCkpe2lmKCF5LnJlZGlyZWN0VGFyZ2V0c01hcC5oYXMoZS50b1BhdGgoSCx5LmdldEN1cnJlbnREaXJlY3RvcnkoKSxVKSkpcmV0dXJuO3ZhciBsPXkuZ2V0U291cmNlRmlsZShIKSxkPWUuZmluZChMLGZ1bmN0aW9uKEQpe3JldHVybiEhRC5yZWRpcmVjdEluZm8mJkQucmVkaXJlY3RJbmZvLnJlZGlyZWN0VGFyZ2V0PT09bH0pO0g9ZC5maWxlTmFtZSxlLkRlYnVnLmFzc2VydChQLmhhcyhIKSl9cmV0dXJue2ZpbGVOYW1lOkgsaGlnaGxpZ2h0U3BhbnM6SX19KX19ZnVuY3Rpb24gUSgkLEEpe3ZhciB5PWxlKCQsQSk7cmV0dXJuIHkmJlt7ZmlsZU5hbWU6QS5maWxlTmFtZSxoaWdobGlnaHRTcGFuczp5fV19ZnVuY3Rpb24gbGUoJCxBKXtzd2l0Y2goJC5raW5kKXtjYXNlIDk5OmNhc2UgOTE6cmV0dXJuIGUuaXNJZlN0YXRlbWVudCgkLnBhcmVudCk/RigkLnBhcmVudCxBKTp2b2lkIDA7Y2FzZSAxMDU6cmV0dXJuIEwoJC5wYXJlbnQsZS5pc1JldHVyblN0YXRlbWVudCxPKTtjYXNlIDEwOTpyZXR1cm4gTCgkLnBhcmVudCxlLmlzVGhyb3dTdGF0ZW1lbnQscSk7Y2FzZSAxMTE6Y2FzZSA4MzpjYXNlIDk2OnZhciB5PSQua2luZD09PTgzPyQucGFyZW50LnBhcmVudDokLnBhcmVudDtyZXR1cm4gTCh5LGUuaXNUcnlTdGF0ZW1lbnQsUik7Y2FzZSAxMDc6cmV0dXJuIEwoJC5wYXJlbnQsZS5pc1N3aXRjaFN0YXRlbWVudCxpZSk7Y2FzZSA4MjpjYXNlIDg4OnJldHVybiBlLmlzRGVmYXVsdENsYXVzZSgkLnBhcmVudCl8fGUuaXNDYXNlQ2xhdXNlKCQucGFyZW50KT9MKCQucGFyZW50LnBhcmVudC5wYXJlbnQsZS5pc1N3aXRjaFN0YXRlbWVudCxpZSk6dm9pZCAwO2Nhc2UgODE6Y2FzZSA4NjpyZXR1cm4gTCgkLnBhcmVudCxlLmlzQnJlYWtPckNvbnRpbnVlU3RhdGVtZW50LEopO2Nhc2UgOTc6Y2FzZSAxMTU6Y2FzZSA5MDpyZXR1cm4gTCgkLnBhcmVudCxmdW5jdGlvbihrKXtyZXR1cm4gZS5pc0l0ZXJhdGlvblN0YXRlbWVudChrLCEwKX0sc2UpO2Nhc2UgMTM0OnJldHVybiBWKGUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uLFsxMzRdKTtjYXNlIDEzNjpjYXNlIDE0OTpyZXR1cm4gVihlLmlzQWNjZXNzb3IsWzEzNiwxNDldKTtjYXNlIDEzMjpyZXR1cm4gTCgkLnBhcmVudCxlLmlzQXdhaXRFeHByZXNzaW9uLHZlKTtjYXNlIDEzMTpyZXR1cm4gUCh2ZSgkKSk7Y2FzZSAxMjU6cmV0dXJuIFAoZWUoJCkpO2Nhc2UgMTAxOnJldHVybjtkZWZhdWx0OnJldHVybiBlLmlzTW9kaWZpZXJLaW5kKCQua2luZCkmJihlLmlzRGVjbGFyYXRpb24oJC5wYXJlbnQpfHxlLmlzVmFyaWFibGVTdGF0ZW1lbnQoJC5wYXJlbnQpKT9QKFQoJC5raW5kLCQucGFyZW50KSk6dm9pZCAwfWZ1bmN0aW9uIFYoayxZKXtyZXR1cm4gTCgkLnBhcmVudCxrLGZ1bmN0aW9uKFUpe3JldHVybiBlLm1hcERlZmluZWQoVS5zeW1ib2wuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGope3JldHVybiBrKGopP2UuZmluZChqLmdldENoaWxkcmVuKEEpLGZ1bmN0aW9uKEgpe3JldHVybiBlLmNvbnRhaW5zKFksSC5raW5kKX0pOnZvaWQgMH0pfSl9ZnVuY3Rpb24gTChrLFksVSl7cmV0dXJuIFkoayk/UChVKGssQSkpOnZvaWQgMH1mdW5jdGlvbiBQKGspe3JldHVybiBrJiZrLm1hcChmdW5jdGlvbihZKXtyZXR1cm4gQihZLEEpfSl9fWZ1bmN0aW9uIE4oJCl7cmV0dXJuIGUuaXNUaHJvd1N0YXRlbWVudCgkKT9bJF06ZS5pc1RyeVN0YXRlbWVudCgkKT9lLmNvbmNhdGVuYXRlKCQuY2F0Y2hDbGF1c2U/TigkLmNhdGNoQ2xhdXNlKTokLnRyeUJsb2NrJiZOKCQudHJ5QmxvY2spLCQuZmluYWxseUJsb2NrJiZOKCQuZmluYWxseUJsb2NrKSk6ZS5pc0Z1bmN0aW9uTGlrZSgkKT92b2lkIDA6RygkLE4pfWZ1bmN0aW9uIHAoJCl7Zm9yKHZhciBBPSQ7QS5wYXJlbnQ7KXt2YXIgeT1BLnBhcmVudDtpZihlLmlzRnVuY3Rpb25CbG9jayh5KXx8eS5raW5kPT09MzA1KXJldHVybiB5O2lmKGUuaXNUcnlTdGF0ZW1lbnQoeSkmJnkudHJ5QmxvY2s9PT1BJiZ5LmNhdGNoQ2xhdXNlKXJldHVybiBBO0E9eX19ZnVuY3Rpb24gbSgkKXtyZXR1cm4gZS5pc0JyZWFrT3JDb250aW51ZVN0YXRlbWVudCgkKT9bJF06ZS5pc0Z1bmN0aW9uTGlrZSgkKT92b2lkIDA6RygkLG0pfWZ1bmN0aW9uIEcoJCxBKXt2YXIgeT1bXTtyZXR1cm4gJC5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oVil7dmFyIEw9QShWKTtMIT09dm9pZCAwJiZ5LnB1c2guYXBwbHkoeSxlLnRvQXJyYXkoTCkpfSkseX1mdW5jdGlvbiBvZSgkLEEpe3ZhciB5PWYoQSk7cmV0dXJuISF5JiZ5PT09JH1mdW5jdGlvbiBmKCQpe3JldHVybiBlLmZpbmRBbmNlc3RvcigkLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmtpbmQpe2Nhc2UgMjQ5OmlmKCQua2luZD09PTI0NSlyZXR1cm4hMTtjYXNlIDI0MjpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0MTpjYXNlIDI0MDpyZXR1cm4hJC5sYWJlbHx8WChBLCQubGFiZWwuZXNjYXBlZFRleHQpO2RlZmF1bHQ6cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2UoQSkmJlwicXVpdFwifX0pfWZ1bmN0aW9uIFQoJCxBKXtyZXR1cm4gZS5tYXBEZWZpbmVkKEsoQSxlLm1vZGlmaWVyVG9GbGFnKCQpKSxmdW5jdGlvbih5KXtyZXR1cm4gZS5maW5kTW9kaWZpZXIoeSwkKX0pfWZ1bmN0aW9uIEsoJCxBKXt2YXIgeT0kLnBhcmVudDtzd2l0Y2goeS5raW5kKXtjYXNlIDI2MjpjYXNlIDMwNTpjYXNlIDIzNTpjYXNlIDI4OTpjYXNlIDI5MDpyZXR1cm4gQSYxMjgmJmUuaXNDbGFzc0RlY2xhcmF0aW9uKCQpP1ZlKFZlKFtdLCQubWVtYmVycywhMCksWyRdLCExKTp5LnN0YXRlbWVudHM7Y2FzZSAxNzE6Y2FzZSAxNjk6Y2FzZSAyNTY6cmV0dXJuIFZlKFZlKFtdLHkucGFyYW1ldGVycywhMCksZS5pc0NsYXNzTGlrZSh5LnBhcmVudCk/eS5wYXJlbnQubWVtYmVyczpbXSwhMCk7Y2FzZSAyNTc6Y2FzZSAyMjY6Y2FzZSAyNTg6Y2FzZSAxODI6dmFyIFY9eS5tZW1iZXJzO2lmKEEmOTIpe3ZhciBMPWUuZmluZCh5Lm1lbWJlcnMsZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24pO2lmKEwpcmV0dXJuIFZlKFZlKFtdLFYsITApLEwucGFyYW1ldGVycywhMCl9ZWxzZSBpZihBJjEyOClyZXR1cm4gVmUoVmUoW10sViwhMCksW3ldLCExKTtyZXR1cm4gVjtjYXNlIDIwNTpyZXR1cm47ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKHksXCJJbnZhbGlkIGNvbnRhaW5lciBraW5kLlwiKX19ZnVuY3Rpb24gYigkLEEpe2Zvcih2YXIgeT1bXSxWPTI7Vjxhcmd1bWVudHMubGVuZ3RoO1YrKyl5W1YtMl09YXJndW1lbnRzW1ZdO3JldHVybiBBJiZlLmNvbnRhaW5zKHksQS5raW5kKT8oJC5wdXNoKEEpLCEwKTohMX1mdW5jdGlvbiBzZSgkKXt2YXIgQT1bXTtpZihiKEEsJC5nZXRGaXJzdFRva2VuKCksOTcsMTE1LDkwKSYmJC5raW5kPT09MjQwKWZvcih2YXIgeT0kLmdldENoaWxkcmVuKCksVj15Lmxlbmd0aC0xO1Y+PTAmJiFiKEEseVtWXSwxMTUpO1YtLSk7cmV0dXJuIGUuZm9yRWFjaChtKCQuc3RhdGVtZW50KSxmdW5jdGlvbihMKXtvZSgkLEwpJiZiKEEsTC5nZXRGaXJzdFRva2VuKCksODEsODYpfSksQX1mdW5jdGlvbiBKKCQpe3ZhciBBPWYoJCk7aWYoQSlzd2l0Y2goQS5raW5kKXtjYXNlIDI0MjpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0MDpjYXNlIDI0MTpyZXR1cm4gc2UoQSk7Y2FzZSAyNDk6cmV0dXJuIGllKEEpfX1mdW5jdGlvbiBpZSgkKXt2YXIgQT1bXTtyZXR1cm4gYihBLCQuZ2V0Rmlyc3RUb2tlbigpLDEwNyksZS5mb3JFYWNoKCQuY2FzZUJsb2NrLmNsYXVzZXMsZnVuY3Rpb24oeSl7YihBLHkuZ2V0Rmlyc3RUb2tlbigpLDgyLDg4KSxlLmZvckVhY2gobSh5KSxmdW5jdGlvbihWKXtvZSgkLFYpJiZiKEEsVi5nZXRGaXJzdFRva2VuKCksODEpfSl9KSxBfWZ1bmN0aW9uIFIoJCxBKXt2YXIgeT1bXTtpZihiKHksJC5nZXRGaXJzdFRva2VuKCksMTExKSwkLmNhdGNoQ2xhdXNlJiZiKHksJC5jYXRjaENsYXVzZS5nZXRGaXJzdFRva2VuKCksODMpLCQuZmluYWxseUJsb2NrKXt2YXIgVj1lLmZpbmRDaGlsZE9mS2luZCgkLDk2LEEpO2IoeSxWLDk2KX1yZXR1cm4geX1mdW5jdGlvbiBxKCQsQSl7dmFyIHk9cCgkKTtpZighIXkpe3ZhciBWPVtdO3JldHVybiBlLmZvckVhY2goTih5KSxmdW5jdGlvbihMKXtWLnB1c2goZS5maW5kQ2hpbGRPZktpbmQoTCwxMDksQSkpfSksZS5pc0Z1bmN0aW9uQmxvY2soeSkmJmUuZm9yRWFjaFJldHVyblN0YXRlbWVudCh5LGZ1bmN0aW9uKEwpe1YucHVzaChlLmZpbmRDaGlsZE9mS2luZChMLDEwNSxBKSl9KSxWfX1mdW5jdGlvbiBPKCQsQSl7dmFyIHk9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24oJCk7aWYoISF5KXt2YXIgVj1bXTtyZXR1cm4gZS5mb3JFYWNoUmV0dXJuU3RhdGVtZW50KGUuY2FzdCh5LmJvZHksZS5pc0Jsb2NrKSxmdW5jdGlvbihMKXtWLnB1c2goZS5maW5kQ2hpbGRPZktpbmQoTCwxMDUsQSkpfSksZS5mb3JFYWNoKE4oeS5ib2R5KSxmdW5jdGlvbihMKXtWLnB1c2goZS5maW5kQ2hpbGRPZktpbmQoTCwxMDksQSkpfSksVn19ZnVuY3Rpb24gdmUoJCl7dmFyIEE9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24oJCk7aWYoISFBKXt2YXIgeT1bXTtyZXR1cm4gQS5tb2RpZmllcnMmJkEubW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24oVil7Yih5LFYsMTMxKX0pLGUuZm9yRWFjaENoaWxkKEEsZnVuY3Rpb24oVil7aGUoVixmdW5jdGlvbihMKXtlLmlzQXdhaXRFeHByZXNzaW9uKEwpJiZiKHksTC5nZXRGaXJzdFRva2VuKCksMTMyKX0pfSkseX19ZnVuY3Rpb24gZWUoJCl7dmFyIEE9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24oJCk7aWYoISFBKXt2YXIgeT1bXTtyZXR1cm4gZS5mb3JFYWNoQ2hpbGQoQSxmdW5jdGlvbihWKXtoZShWLGZ1bmN0aW9uKEwpe2UuaXNZaWVsZEV4cHJlc3Npb24oTCkmJmIoeSxMLmdldEZpcnN0VG9rZW4oKSwxMjUpfSl9KSx5fX1mdW5jdGlvbiBoZSgkLEEpe0EoJCksIWUuaXNGdW5jdGlvbkxpa2UoJCkmJiFlLmlzQ2xhc3NMaWtlKCQpJiYhZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKCQpJiYhZS5pc01vZHVsZURlY2xhcmF0aW9uKCQpJiYhZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKCQpJiYhZS5pc1R5cGVOb2RlKCQpJiZlLmZvckVhY2hDaGlsZCgkLGZ1bmN0aW9uKHkpe3JldHVybiBoZSh5LEEpfSl9ZnVuY3Rpb24gRigkLEEpe2Zvcih2YXIgeT14KCQsQSksVj1bXSxMPTA7TDx5Lmxlbmd0aDtMKyspe2lmKHlbTF0ua2luZD09PTkxJiZMPHkubGVuZ3RoLTEpe2Zvcih2YXIgUD15W0xdLGs9eVtMKzFdLFk9ITAsVT1rLmdldFN0YXJ0KEEpLTE7VT49UC5lbmQ7VS0tKWlmKCFlLmlzV2hpdGVTcGFjZVNpbmdsZUxpbmUoQS50ZXh0LmNoYXJDb2RlQXQoVSkpKXtZPSExO2JyZWFrfWlmKFkpe1YucHVzaCh7ZmlsZU5hbWU6QS5maWxlTmFtZSx0ZXh0U3BhbjplLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhQLmdldFN0YXJ0KCksay5lbmQpLGtpbmQ6XCJyZWZlcmVuY2VcIn0pLEwrKztjb250aW51ZX19Vi5wdXNoKEIoeVtMXSxBKSl9cmV0dXJuIFZ9ZnVuY3Rpb24geCgkLEEpe2Zvcih2YXIgeT1bXTtlLmlzSWZTdGF0ZW1lbnQoJC5wYXJlbnQpJiYkLnBhcmVudC5lbHNlU3RhdGVtZW50PT09JDspJD0kLnBhcmVudDtmb3IoOzspe3ZhciBWPSQuZ2V0Q2hpbGRyZW4oQSk7Yih5LFZbMF0sOTkpO2Zvcih2YXIgTD1WLmxlbmd0aC0xO0w+PTAmJiFiKHksVltMXSw5MSk7TC0tKTtpZighJC5lbHNlU3RhdGVtZW50fHwhZS5pc0lmU3RhdGVtZW50KCQuZWxzZVN0YXRlbWVudCkpYnJlYWs7JD0kLmVsc2VTdGF0ZW1lbnR9cmV0dXJuIHl9ZnVuY3Rpb24gWCgkLEEpe3JldHVybiEhZS5maW5kQW5jZXN0b3IoJC5wYXJlbnQsZnVuY3Rpb24oeSl7cmV0dXJuIGUuaXNMYWJlbGVkU3RhdGVtZW50KHkpP3kubGFiZWwuZXNjYXBlZFRleHQ9PT1BOlwicXVpdFwifSl9fSkoYT1lLkRvY3VtZW50SGlnaGxpZ2h0c3x8KGUuRG9jdW1lbnRIaWdobGlnaHRzPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKFEpe3JldHVybiEhUS5zb3VyY2VGaWxlfWZ1bmN0aW9uIEMoUSxsZSl7cmV0dXJuIHcoUSxsZSl9ZS5jcmVhdGVEb2N1bWVudFJlZ2lzdHJ5PUM7ZnVuY3Rpb24gdyhRLGxlLE4pe2xlPT09dm9pZCAwJiYobGU9XCJcIik7dmFyIHA9bmV3IGUuTWFwLG09ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZSghIVEpO2Z1bmN0aW9uIEcoKXt2YXIgTz1lLmFycmF5RnJvbShwLmtleXMoKSkuZmlsdGVyKGZ1bmN0aW9uKHZlKXtyZXR1cm4gdmUmJnZlLmNoYXJBdCgwKT09PVwiX1wifSkubWFwKGZ1bmN0aW9uKHZlKXt2YXIgZWU9cC5nZXQodmUpLGhlPVtdO3JldHVybiBlZS5mb3JFYWNoKGZ1bmN0aW9uKEYseCl7YShGKT9oZS5wdXNoKHtuYW1lOngsc2NyaXB0S2luZDpGLnNvdXJjZUZpbGUuc2NyaXB0S2luZCxyZWZDb3VudDpGLmxhbmd1YWdlU2VydmljZVJlZkNvdW50fSk6Ri5mb3JFYWNoKGZ1bmN0aW9uKFgsJCl7cmV0dXJuIGhlLnB1c2goe25hbWU6eCxzY3JpcHRLaW5kOiQscmVmQ291bnQ6WC5sYW5ndWFnZVNlcnZpY2VSZWZDb3VudH0pfSl9KSxoZS5zb3J0KGZ1bmN0aW9uKEYseCl7cmV0dXJuIHgucmVmQ291bnQtRi5yZWZDb3VudH0pLHtidWNrZXQ6dmUsc291cmNlRmlsZXM6aGV9fSk7cmV0dXJuIEpTT04uc3RyaW5naWZ5KE8sdm9pZCAwLDIpfWZ1bmN0aW9uIG9lKE8pe3JldHVybiB0eXBlb2YgTy5nZXRDb21waWxhdGlvblNldHRpbmdzPT1cImZ1bmN0aW9uXCI/Ty5nZXRDb21waWxhdGlvblNldHRpbmdzKCk6T31mdW5jdGlvbiBmKE8sdmUsZWUsaGUsRil7dmFyIHg9ZS50b1BhdGgoTyxsZSxtKSxYPUUob2UodmUpKTtyZXR1cm4gVChPLHgsdmUsWCxlZSxoZSxGKX1mdW5jdGlvbiBUKE8sdmUsZWUsaGUsRix4LFgpe3JldHVybiBKKE8sdmUsZWUsaGUsRix4LCEwLFgpfWZ1bmN0aW9uIEsoTyx2ZSxlZSxoZSxGKXt2YXIgeD1lLnRvUGF0aChPLGxlLG0pLFg9RShvZSh2ZSkpO3JldHVybiBiKE8seCx2ZSxYLGVlLGhlLEYpfWZ1bmN0aW9uIGIoTyx2ZSxlZSxoZSxGLHgsWCl7cmV0dXJuIEooTyx2ZSxvZShlZSksaGUsRix4LCExLFgpfWZ1bmN0aW9uIHNlKE8sdmUpe3ZhciBlZT1hKE8pP086Ty5nZXQoZS5EZWJ1Zy5jaGVja0RlZmluZWQodmUsXCJJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBzY3JpcHRLaW5kJ3MgZm9yIHNhbWUgZG9jdW1lbnQgdGhlIHNjcmlwdEtpbmQgc2hvdWxkIGJlIHByb3ZpZGVkXCIpKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQodmU9PT12b2lkIDB8fCFlZXx8ZWUuc291cmNlRmlsZS5zY3JpcHRLaW5kPT09dmUsXCJTY3JpcHQga2luZCBzaG91bGQgbWF0Y2ggcHJvdmlkZWQgU2NyaXB0S2luZDpcIi5jb25jYXQodmUsXCIgYW5kIHNvdXJjZUZpbGUuc2NyaXB0S2luZDogXCIpLmNvbmNhdChlZT09bnVsbD92b2lkIDA6ZWUuc291cmNlRmlsZS5zY3JpcHRLaW5kLFwiLCAhZW50cnk6IFwiKS5jb25jYXQoIWVlKSksZWV9ZnVuY3Rpb24gSihPLHZlLGVlLGhlLEYseCxYLCQpe3ZhciBBLHksVixMOyQ9ZS5lbnN1cmVTY3JpcHRLaW5kKE8sJCk7dmFyIFA9b2UoZWUpLGs9ZWU9PT1QP3ZvaWQgMDplZSxZPSQ9PT02PzEwMDplLmdldEVtaXRTY3JpcHRUYXJnZXQoUCksVT17bGFuZ3VhZ2VWZXJzaW9uOlksaW1wbGllZE5vZGVGb3JtYXQ6ayYmZS5nZXRJbXBsaWVkTm9kZUZvcm1hdEZvckZpbGUodmUsKEw9KFY9KHk9KEE9ay5nZXRDb21waWxlckhvc3QpPT09bnVsbHx8QT09PXZvaWQgMD92b2lkIDA6QS5jYWxsKGspKT09PW51bGx8fHk9PT12b2lkIDA/dm9pZCAwOnkuZ2V0TW9kdWxlUmVzb2x1dGlvbkNhY2hlKT09PW51bGx8fFY9PT12b2lkIDA/dm9pZCAwOlYuY2FsbCh5KSk9PT1udWxsfHxMPT09dm9pZCAwP3ZvaWQgMDpMLmdldFBhY2thZ2VKc29uSW5mb0NhY2hlKCksayxQKSxzZXRFeHRlcm5hbE1vZHVsZUluZGljYXRvcjplLmdldFNldEV4dGVybmFsTW9kdWxlSW5kaWNhdG9yKFApfSxqPXAuc2l6ZSxIPWUuZ2V0T3JVcGRhdGUocCxoZSxmdW5jdGlvbigpe3JldHVybiBuZXcgZS5NYXB9KTtpZihlLnRyYWNpbmcpe3Auc2l6ZT5qJiZlLnRyYWNpbmcuaW5zdGFudChcInNlc3Npb25cIixcImNyZWF0ZWREb2N1bWVudFJlZ2lzdHJ5QnVja2V0XCIse2NvbmZpZ0ZpbGVQYXRoOlAuY29uZmlnRmlsZVBhdGgsa2V5OmhlfSk7dmFyIEk9IWUuaXNEZWNsYXJhdGlvbkZpbGVOYW1lKHZlKSYmZS5mb3JFYWNoRW50cnkocCxmdW5jdGlvbihnLG5lKXtyZXR1cm4gbmUhPT1oZSYmZy5oYXModmUpJiZuZX0pO0kmJmUudHJhY2luZy5pbnN0YW50KFwic2Vzc2lvblwiLFwiZG9jdW1lbnRSZWdpc3RyeUJ1Y2tldE92ZXJsYXBcIix7cGF0aDp2ZSxrZXkxOkksa2V5MjpoZX0pfXZhciBsPUguZ2V0KHZlKSxkPWwmJnNlKGwsJCk7aWYoIWQmJk4pe3ZhciBEPU4uZ2V0RG9jdW1lbnQoaGUsdmUpO0QmJihlLkRlYnVnLmFzc2VydChYKSxkPXtzb3VyY2VGaWxlOkQsbGFuZ3VhZ2VTZXJ2aWNlUmVmQ291bnQ6MH0sZmUoKSl9aWYoZClkLnNvdXJjZUZpbGUudmVyc2lvbiE9PXgmJihkLnNvdXJjZUZpbGU9ZS51cGRhdGVMYW5ndWFnZVNlcnZpY2VTb3VyY2VGaWxlKGQuc291cmNlRmlsZSxGLHgsRi5nZXRDaGFuZ2VSYW5nZShkLnNvdXJjZUZpbGUuc2NyaXB0U25hcHNob3QpKSxOJiZOLnNldERvY3VtZW50KGhlLHZlLGQuc291cmNlRmlsZSkpLFgmJmQubGFuZ3VhZ2VTZXJ2aWNlUmVmQ291bnQrKztlbHNle3ZhciBEPWUuY3JlYXRlTGFuZ3VhZ2VTZXJ2aWNlU291cmNlRmlsZShPLEYsVSx4LCExLCQpO04mJk4uc2V0RG9jdW1lbnQoaGUsdmUsRCksZD17c291cmNlRmlsZTpELGxhbmd1YWdlU2VydmljZVJlZkNvdW50OjF9LGZlKCl9cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGQubGFuZ3VhZ2VTZXJ2aWNlUmVmQ291bnQhPT0wKSxkLnNvdXJjZUZpbGU7ZnVuY3Rpb24gZmUoKXtpZighbClILnNldCh2ZSxkKTtlbHNlIGlmKGEobCkpe3ZhciBnPW5ldyBlLk1hcDtnLnNldChsLnNvdXJjZUZpbGUuc2NyaXB0S2luZCxsKSxnLnNldCgkLGQpLEguc2V0KHZlLGcpfWVsc2UgbC5zZXQoJCxkKX19ZnVuY3Rpb24gaWUoTyx2ZSxlZSl7dmFyIGhlPWUudG9QYXRoKE8sbGUsbSksRj1FKHZlKTtyZXR1cm4gUihoZSxGLGVlKX1mdW5jdGlvbiBSKE8sdmUsZWUpe3ZhciBoZT1lLkRlYnVnLmNoZWNrRGVmaW5lZChwLmdldCh2ZSkpLEY9aGUuZ2V0KE8pLHg9c2UoRixlZSk7eC5sYW5ndWFnZVNlcnZpY2VSZWZDb3VudC0tLGUuRGVidWcuYXNzZXJ0KHgubGFuZ3VhZ2VTZXJ2aWNlUmVmQ291bnQ+PTApLHgubGFuZ3VhZ2VTZXJ2aWNlUmVmQ291bnQ9PT0wJiYoYShGKT9oZS5kZWxldGUoTyk6KEYuZGVsZXRlKGVlKSxGLnNpemU9PT0xJiZoZS5zZXQoTyxlLmZpcnN0RGVmaW5lZEl0ZXJhdG9yKEYudmFsdWVzKCksZS5pZGVudGl0eSkpKSl9ZnVuY3Rpb24gcShPLHZlKXtyZXR1cm4gZS5hcnJheUZyb20ocC5lbnRyaWVzKCksZnVuY3Rpb24oZWUpe3ZhciBoZT1lZVswXSxGPWVlWzFdLHg9Ri5nZXQoTyksWD14JiZzZSh4LHZlKTtyZXR1cm5baGUsWCYmWC5sYW5ndWFnZVNlcnZpY2VSZWZDb3VudF19KX1yZXR1cm57YWNxdWlyZURvY3VtZW50OmYsYWNxdWlyZURvY3VtZW50V2l0aEtleTpULHVwZGF0ZURvY3VtZW50OkssdXBkYXRlRG9jdW1lbnRXaXRoS2V5OmIscmVsZWFzZURvY3VtZW50OmllLHJlbGVhc2VEb2N1bWVudFdpdGhLZXk6UixnZXRMYW5ndWFnZVNlcnZpY2VSZWZDb3VudHM6cSxyZXBvcnRTdGF0czpHLGdldEtleUZvckNvbXBpbGF0aW9uU2V0dGluZ3M6RX19ZS5jcmVhdGVEb2N1bWVudFJlZ2lzdHJ5SW50ZXJuYWw9dztmdW5jdGlvbiBCKFEpe3ZhciBsZTtpZihRPT09bnVsbHx8dHlwZW9mIFEhPVwib2JqZWN0XCIpcmV0dXJuXCJcIitRO2lmKGUuaXNBcnJheShRKSlyZXR1cm5cIltcIi5jb25jYXQoKGxlPWUubWFwKFEsZnVuY3Rpb24obSl7cmV0dXJuIEIobSl9KSk9PT1udWxsfHxsZT09PXZvaWQgMD92b2lkIDA6bGUuam9pbihcIixcIiksXCJdXCIpO3ZhciBOPVwie1wiO2Zvcih2YXIgcCBpbiBRKWUuaGFzT3duUHJvcGVydHkuY2FsbChRLHApJiYoTis9XCJcIi5jb25jYXQocCxcIjogXCIpLmNvbmNhdChCKFFbcF0pKSk7cmV0dXJuIE4rXCJ9XCJ9ZnVuY3Rpb24gRShRKXtyZXR1cm4gZS5zb3VyY2VGaWxlQWZmZWN0aW5nQ29tcGlsZXJPcHRpb25zLm1hcChmdW5jdGlvbihsZSl7cmV0dXJuIEIoZS5nZXRDb21waWxlck9wdGlvblZhbHVlKFEsbGUpKX0pLmpvaW4oXCJ8XCIpKyhRLnBhdGhzQmFzZVBhdGg/XCJ8XCIuY29uY2F0KFEucGF0aHNCYXNlUGF0aCk6dm9pZCAwKX19KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyh2ZSxlZSxoZSxGKXt2YXIgeD1tKHZlLGhlLEYpO3JldHVybiBmdW5jdGlvbihYLCQsQSl7dmFyIHk9USh2ZSxlZSx4LCQsaGUsRiksVj15LmRpcmVjdEltcG9ydHMsTD15LmluZGlyZWN0VXNlcnM7cmV0dXJuIEtlKHtpbmRpcmVjdFVzZXJzOkx9LGxlKFYsWCwkLmV4cG9ydEtpbmQsaGUsQSkpfX1DLmNyZWF0ZUltcG9ydFRyYWNrZXI9dzt2YXIgQjsoZnVuY3Rpb24odmUpe3ZlW3ZlLk5hbWVkPTBdPVwiTmFtZWRcIix2ZVt2ZS5EZWZhdWx0PTFdPVwiRGVmYXVsdFwiLHZlW3ZlLkV4cG9ydEVxdWFscz0yXT1cIkV4cG9ydEVxdWFsc1wifSkoQj1DLkV4cG9ydEtpbmR8fChDLkV4cG9ydEtpbmQ9e30pKTt2YXIgRTsoZnVuY3Rpb24odmUpe3ZlW3ZlLkltcG9ydD0wXT1cIkltcG9ydFwiLHZlW3ZlLkV4cG9ydD0xXT1cIkV4cG9ydFwifSkoRT1DLkltcG9ydEV4cG9ydHx8KEMuSW1wb3J0RXhwb3J0PXt9KSk7ZnVuY3Rpb24gUSh2ZSxlZSxoZSxGLHgsWCl7dmFyICQ9Ri5leHBvcnRpbmdNb2R1bGVTeW1ib2wsQT1GLmV4cG9ydEtpbmQseT1lLm5vZGVTZWVuVHJhY2tlcigpLFY9ZS5ub2RlU2VlblRyYWNrZXIoKSxMPVtdLFA9ISEkLmdsb2JhbEV4cG9ydHMsaz1QP3ZvaWQgMDpbXTtyZXR1cm4gVSgkKSx7ZGlyZWN0SW1wb3J0czpMLGluZGlyZWN0VXNlcnM6WSgpfTtmdW5jdGlvbiBZKCl7aWYoUClyZXR1cm4gdmU7aWYoJC5kZWNsYXJhdGlvbnMpZm9yKHZhciBEPTAsZmU9JC5kZWNsYXJhdGlvbnM7RDxmZS5sZW5ndGg7RCsrKXt2YXIgZz1mZVtEXTtlLmlzRXh0ZXJuYWxNb2R1bGVBdWdtZW50YXRpb24oZykmJmVlLmhhcyhnLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSkmJmwoZyl9cmV0dXJuIGsubWFwKGUuZ2V0U291cmNlRmlsZU9mTm9kZSl9ZnVuY3Rpb24gVShEKXt2YXIgZmU9ZChEKTtpZihmZSlmb3IodmFyIGc9MCxuZT1mZTtnPG5lLmxlbmd0aDtnKyspe3ZhciB1ZT1uZVtnXTtpZighIXkodWUpKXN3aXRjaChYJiZYLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKSx1ZS5raW5kKXtjYXNlIDIwODppZihlLmlzSW1wb3J0Q2FsbCh1ZSkpe2oodWUpO2JyZWFrfWlmKCFQKXt2YXIgV2U9dWUucGFyZW50O2lmKEE9PT0yJiZXZS5raW5kPT09MjU0KXt2YXIgRmU9V2UubmFtZTtpZihGZS5raW5kPT09Nzkpe0wucHVzaChGZSk7YnJlYWt9fX1icmVhaztjYXNlIDc5OmJyZWFrO2Nhc2UgMjY1OkkodWUsdWUubmFtZSxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHVlLDEpLCExKTticmVhaztjYXNlIDI2NjpMLnB1c2godWUpO3ZhciBaPXVlLmltcG9ydENsYXVzZSYmdWUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3M7WiYmWi5raW5kPT09MjY4P0kodWUsWi5uYW1lLCExLCEwKTohUCYmZS5pc0RlZmF1bHRJbXBvcnQodWUpJiZsKFIodWUpKTticmVhaztjYXNlIDI3Mjp1ZS5leHBvcnRDbGF1c2U/dWUuZXhwb3J0Q2xhdXNlLmtpbmQ9PT0yNzQ/bChSKHVlKSwhMCk6TC5wdXNoKHVlKTpVKGllKHVlLHgpKTticmVhaztjYXNlIDIwMDp1ZS5pc1R5cGVPZiYmIXVlLnF1YWxpZmllciYmSCh1ZSkmJmwodWUuZ2V0U291cmNlRmlsZSgpLCEwKSxMLnB1c2godWUpO2JyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZCh1ZSxcIlVuZXhwZWN0ZWQgaW1wb3J0IGtpbmQuXCIpfX19ZnVuY3Rpb24gaihEKXt2YXIgZmU9ZS5maW5kQW5jZXN0b3IoRCxxKXx8RC5nZXRTb3VyY2VGaWxlKCk7bChmZSwhIUgoRCwhMCkpfWZ1bmN0aW9uIEgoRCxmZSl7cmV0dXJuIGZlPT09dm9pZCAwJiYoZmU9ITEpLGUuZmluZEFuY2VzdG9yKEQsZnVuY3Rpb24oZyl7cmV0dXJuIGZlJiZxKGcpP1wicXVpdFwiOmUuc29tZShnLm1vZGlmaWVycyxmdW5jdGlvbihuZSl7cmV0dXJuIG5lLmtpbmQ9PT05M30pfSl9ZnVuY3Rpb24gSShELGZlLGcsbmUpe2lmKEE9PT0yKW5lfHxMLnB1c2goRCk7ZWxzZSBpZighUCl7dmFyIHVlPVIoRCk7ZS5EZWJ1Zy5hc3NlcnQodWUua2luZD09PTMwNXx8dWUua2luZD09PTI2MSksZ3x8Tih1ZSxmZSx4KT9sKHVlLCEwKTpsKHVlKX19ZnVuY3Rpb24gbChELGZlKXtmZT09PXZvaWQgMCYmKGZlPSExKSxlLkRlYnVnLmFzc2VydCghUCk7dmFyIGc9VihEKTtpZighIWcmJihrLnB1c2goRCksISFmZSkpe3ZhciBuZT14LmdldE1lcmdlZFN5bWJvbChELnN5bWJvbCk7aWYoISFuZSl7ZS5EZWJ1Zy5hc3NlcnQoISEobmUuZmxhZ3MmMTUzNikpO3ZhciB1ZT1kKG5lKTtpZih1ZSlmb3IodmFyIFdlPTAsRmU9dWU7V2U8RmUubGVuZ3RoO1dlKyspe3ZhciBaPUZlW1dlXTtlLmlzSW1wb3J0VHlwZU5vZGUoWil8fGwoUihaKSwhMCl9fX19ZnVuY3Rpb24gZChEKXtyZXR1cm4gaGUuZ2V0KGUuZ2V0U3ltYm9sSWQoRCkudG9TdHJpbmcoKSl9fWZ1bmN0aW9uIGxlKHZlLGVlLGhlLEYseCl7dmFyIFg9W10sJD1bXTtmdW5jdGlvbiBBKGosSCl7WC5wdXNoKFtqLEhdKX1pZih2ZSlmb3IodmFyIHk9MCxWPXZlO3k8Vi5sZW5ndGg7eSsrKXt2YXIgTD1WW3ldO1AoTCl9cmV0dXJue2ltcG9ydFNlYXJjaGVzOlgsc2luZ2xlUmVmZXJlbmNlczokfTtmdW5jdGlvbiBQKGope2lmKGoua2luZD09PTI2NSl7TyhqKSYmayhqLm5hbWUpO3JldHVybn1pZihqLmtpbmQ9PT03OSl7ayhqKTtyZXR1cm59aWYoai5raW5kPT09MjAwKXtpZihqLnF1YWxpZmllcil7dmFyIEg9ZS5nZXRGaXJzdElkZW50aWZpZXIoai5xdWFsaWZpZXIpO0guZXNjYXBlZFRleHQ9PT1lLnN5bWJvbE5hbWUoZWUpJiYkLnB1c2goSCl9ZWxzZSBoZT09PTImJiQucHVzaChqLmFyZ3VtZW50LmxpdGVyYWwpO3JldHVybn1pZihqLm1vZHVsZVNwZWNpZmllci5raW5kPT09MTApe2lmKGoua2luZD09PTI3Mil7ai5leHBvcnRDbGF1c2UmJmUuaXNOYW1lZEV4cG9ydHMoai5leHBvcnRDbGF1c2UpJiZZKGouZXhwb3J0Q2xhdXNlKTtyZXR1cm59dmFyIEk9ai5pbXBvcnRDbGF1c2V8fHtuYW1lOnZvaWQgMCxuYW1lZEJpbmRpbmdzOnZvaWQgMH0sbD1JLm5hbWUsZD1JLm5hbWVkQmluZGluZ3M7aWYoZClzd2l0Y2goZC5raW5kKXtjYXNlIDI2ODprKGQubmFtZSk7YnJlYWs7Y2FzZSAyNjk6KGhlPT09MHx8aGU9PT0xKSYmWShkKTticmVhaztkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoZCl9aWYobCYmKGhlPT09MXx8aGU9PT0yKSYmKCF4fHxsLmVzY2FwZWRUZXh0PT09ZS5zeW1ib2xFc2NhcGVkTmFtZU5vRGVmYXVsdChlZSkpKXt2YXIgRD1GLmdldFN5bWJvbEF0TG9jYXRpb24obCk7QShsLEQpfX19ZnVuY3Rpb24gayhqKXtoZT09PTImJigheHx8VShqLmVzY2FwZWRUZXh0KSkmJkEoaixGLmdldFN5bWJvbEF0TG9jYXRpb24oaikpfWZ1bmN0aW9uIFkoail7aWYoISFqKWZvcih2YXIgSD0wLEk9ai5lbGVtZW50cztIPEkubGVuZ3RoO0grKyl7dmFyIGw9SVtIXSxkPWwubmFtZSxEPWwucHJvcGVydHlOYW1lO2lmKCEhVSgoRHx8ZCkuZXNjYXBlZFRleHQpKWlmKEQpJC5wdXNoKEQpLCgheHx8ZC5lc2NhcGVkVGV4dD09PWVlLmVzY2FwZWROYW1lKSYmQShkLEYuZ2V0U3ltYm9sQXRMb2NhdGlvbihkKSk7ZWxzZXt2YXIgZmU9bC5raW5kPT09Mjc1JiZsLnByb3BlcnR5TmFtZT9GLmdldEV4cG9ydFNwZWNpZmllckxvY2FsVGFyZ2V0U3ltYm9sKGwpOkYuZ2V0U3ltYm9sQXRMb2NhdGlvbihkKTtBKGQsZmUpfX19ZnVuY3Rpb24gVShqKXtyZXR1cm4gaj09PWVlLmVzY2FwZWROYW1lfHxoZSE9PTAmJmo9PT1cImRlZmF1bHRcIn19ZnVuY3Rpb24gTih2ZSxlZSxoZSl7dmFyIEY9aGUuZ2V0U3ltYm9sQXRMb2NhdGlvbihlZSk7cmV0dXJuISFHKHZlLGZ1bmN0aW9uKHgpe2lmKCEhZS5pc0V4cG9ydERlY2xhcmF0aW9uKHgpKXt2YXIgWD14LmV4cG9ydENsYXVzZSwkPXgubW9kdWxlU3BlY2lmaWVyO3JldHVybiEkJiZYJiZlLmlzTmFtZWRFeHBvcnRzKFgpJiZYLmVsZW1lbnRzLnNvbWUoZnVuY3Rpb24oQSl7cmV0dXJuIGhlLmdldEV4cG9ydFNwZWNpZmllckxvY2FsVGFyZ2V0U3ltYm9sKEEpPT09Rn0pfX0pfWZ1bmN0aW9uIHAodmUsZWUsaGUpe2Zvcih2YXIgRj1bXSx4PXZlLmdldFR5cGVDaGVja2VyKCksWD0wLCQ9ZWU7WDwkLmxlbmd0aDtYKyspe3ZhciBBPSRbWF0seT1oZS52YWx1ZURlY2xhcmF0aW9uO2lmKCh5PT1udWxsP3ZvaWQgMDp5LmtpbmQpPT09MzA1KXtmb3IodmFyIFY9MCxMPUEucmVmZXJlbmNlZEZpbGVzO1Y8TC5sZW5ndGg7VisrKXt2YXIgUD1MW1ZdO3ZlLmdldFNvdXJjZUZpbGVGcm9tUmVmZXJlbmNlKEEsUCk9PT15JiZGLnB1c2goe2tpbmQ6XCJyZWZlcmVuY2VcIixyZWZlcmVuY2luZ0ZpbGU6QSxyZWY6UH0pfWZvcih2YXIgaz0wLFk9QS50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcztrPFkubGVuZ3RoO2srKyl7dmFyIFA9WVtrXSxVPXZlLmdldFJlc29sdmVkVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMoKS5nZXQoUC5maWxlTmFtZSxQLnJlc29sdXRpb25Nb2RlfHxBLmltcGxpZWROb2RlRm9ybWF0KTtVIT09dm9pZCAwJiZVLnJlc29sdmVkRmlsZU5hbWU9PT15LmZpbGVOYW1lJiZGLnB1c2goe2tpbmQ6XCJyZWZlcmVuY2VcIixyZWZlcmVuY2luZ0ZpbGU6QSxyZWY6UH0pfX1vZShBLGZ1bmN0aW9uKGosSCl7dmFyIEk9eC5nZXRTeW1ib2xBdExvY2F0aW9uKEgpO0k9PT1oZSYmRi5wdXNoKHtraW5kOlwiaW1wb3J0XCIsbGl0ZXJhbDpIfSl9KX1yZXR1cm4gRn1DLmZpbmRNb2R1bGVSZWZlcmVuY2VzPXA7ZnVuY3Rpb24gbSh2ZSxlZSxoZSl7Zm9yKHZhciBGPW5ldyBlLk1hcCx4PTAsWD12ZTt4PFgubGVuZ3RoO3grKyl7dmFyICQ9WFt4XTtoZSYmaGUudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLG9lKCQsZnVuY3Rpb24oQSx5KXt2YXIgVj1lZS5nZXRTeW1ib2xBdExvY2F0aW9uKHkpO2lmKFYpe3ZhciBMPWUuZ2V0U3ltYm9sSWQoVikudG9TdHJpbmcoKSxQPUYuZ2V0KEwpO1B8fEYuc2V0KEwsUD1bXSksUC5wdXNoKEEpfX0pfXJldHVybiBGfWZ1bmN0aW9uIEcodmUsZWUpe3JldHVybiBlLmZvckVhY2godmUua2luZD09PTMwNT92ZS5zdGF0ZW1lbnRzOnZlLmJvZHkuc3RhdGVtZW50cyxmdW5jdGlvbihoZSl7cmV0dXJuIGVlKGhlKXx8cShoZSkmJmUuZm9yRWFjaChoZS5ib2R5JiZoZS5ib2R5LnN0YXRlbWVudHMsZWUpfSl9ZnVuY3Rpb24gb2UodmUsZWUpe2lmKHZlLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yfHx2ZS5pbXBvcnRzIT09dm9pZCAwKWZvcih2YXIgaGU9MCxGPXZlLmltcG9ydHM7aGU8Ri5sZW5ndGg7aGUrKyl7dmFyIHg9RltoZV07ZWUoZS5pbXBvcnRGcm9tTW9kdWxlU3BlY2lmaWVyKHgpLHgpfWVsc2UgRyh2ZSxmdW5jdGlvbihYKXtzd2l0Y2goWC5raW5kKXtjYXNlIDI3MjpjYXNlIDI2Njp7dmFyICQ9WDskLm1vZHVsZVNwZWNpZmllciYmZS5pc1N0cmluZ0xpdGVyYWwoJC5tb2R1bGVTcGVjaWZpZXIpJiZlZSgkLCQubW9kdWxlU3BlY2lmaWVyKTticmVha31jYXNlIDI2NTp7dmFyICQ9WDtPKCQpJiZlZSgkLCQubW9kdWxlUmVmZXJlbmNlLmV4cHJlc3Npb24pO2JyZWFrfX19KX1mdW5jdGlvbiBmKHZlLGVlLGhlLEYpe3JldHVybiBGP3goKTp4KCl8fFgoKTtmdW5jdGlvbiB4KCl7dmFyIHksVj12ZS5wYXJlbnQsTD1WLnBhcmVudDtpZihlZS5leHBvcnRTeW1ib2wpcmV0dXJuIFYua2luZD09PTIwNj8oKHk9ZWUuZGVjbGFyYXRpb25zKT09PW51bGx8fHk9PT12b2lkIDA/dm9pZCAwOnkuc29tZShmdW5jdGlvbihqKXtyZXR1cm4gaj09PVZ9KSkmJmUuaXNCaW5hcnlFeHByZXNzaW9uKEwpP1UoTCwhMSk6dm9pZCAwOiQoZWUuZXhwb3J0U3ltYm9sLEEoVikpO3ZhciBQPUsoVix2ZSk7aWYoUCYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihQLDEpKWlmKGUuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihQKSYmUC5tb2R1bGVSZWZlcmVuY2U9PT12ZSl7aWYoRilyZXR1cm47dmFyIGs9aGUuZ2V0U3ltYm9sQXRMb2NhdGlvbihQLm5hbWUpO3JldHVybntraW5kOjAsc3ltYm9sOmt9fWVsc2UgcmV0dXJuICQoZWUsQShQKSk7ZWxzZXtpZihlLmlzTmFtZXNwYWNlRXhwb3J0KFYpKXJldHVybiAkKGVlLDApO2lmKGUuaXNFeHBvcnRBc3NpZ25tZW50KFYpKXJldHVybiBZKFYpO2lmKGUuaXNFeHBvcnRBc3NpZ25tZW50KEwpKXJldHVybiBZKEwpO2lmKGUuaXNCaW5hcnlFeHByZXNzaW9uKFYpKXJldHVybiBVKFYsITApO2lmKGUuaXNCaW5hcnlFeHByZXNzaW9uKEwpKXJldHVybiBVKEwsITApO2lmKGUuaXNKU0RvY1R5cGVkZWZUYWcoVikpcmV0dXJuICQoZWUsMCl9ZnVuY3Rpb24gWShqKXtpZighIWouc3ltYm9sLnBhcmVudCl7dmFyIEg9ai5pc0V4cG9ydEVxdWFscz8yOjE7cmV0dXJue2tpbmQ6MSxzeW1ib2w6ZWUsZXhwb3J0SW5mbzp7ZXhwb3J0aW5nTW9kdWxlU3ltYm9sOmouc3ltYm9sLnBhcmVudCxleHBvcnRLaW5kOkh9fX19ZnVuY3Rpb24gVShqLEgpe3ZhciBJO3N3aXRjaChlLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoaikpe2Nhc2UgMTpJPTA7YnJlYWs7Y2FzZSAyOkk9MjticmVhaztkZWZhdWx0OnJldHVybn12YXIgbD1IP2hlLmdldFN5bWJvbEF0TG9jYXRpb24oZS5nZXROYW1lT2ZBY2Nlc3NFeHByZXNzaW9uKGUuY2FzdChqLmxlZnQsZS5pc0FjY2Vzc0V4cHJlc3Npb24pKSk6ZWU7cmV0dXJuIGwmJiQobCxJKX19ZnVuY3Rpb24gWCgpe3ZhciB5PWIodmUpO2lmKCEheSl7dmFyIFY9aGUuZ2V0SW1tZWRpYXRlQWxpYXNlZFN5bWJvbChlZSk7aWYoISFWKXtWPUooVixoZSksVi5lc2NhcGVkTmFtZT09PVwiZXhwb3J0PVwiJiYoVj1UKFYsaGUpKTt2YXIgTD1lLnN5bWJvbEVzY2FwZWROYW1lTm9EZWZhdWx0KFYpO2lmKEw9PT12b2lkIDB8fEw9PT1cImRlZmF1bHRcInx8TD09PWVlLmVzY2FwZWROYW1lKXJldHVybntraW5kOjAsc3ltYm9sOlZ9fX19ZnVuY3Rpb24gJCh5LFYpe3ZhciBMPXNlKHksVixoZSk7cmV0dXJuIEwmJntraW5kOjEsc3ltYm9sOnksZXhwb3J0SW5mbzpMfX1mdW5jdGlvbiBBKHkpe3JldHVybiBlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHksNTEyKT8xOjB9fUMuZ2V0SW1wb3J0T3JFeHBvcnRTeW1ib2w9ZjtmdW5jdGlvbiBUKHZlLGVlKXtpZih2ZS5mbGFncyYyMDk3MTUyKXJldHVybiBlLkRlYnVnLmNoZWNrRGVmaW5lZChlZS5nZXRJbW1lZGlhdGVBbGlhc2VkU3ltYm9sKHZlKSk7dmFyIGhlPWUuRGVidWcuY2hlY2tEZWZpbmVkKHZlLnZhbHVlRGVjbGFyYXRpb24pO3JldHVybiBlLmlzRXhwb3J0QXNzaWdubWVudChoZSk/ZS5EZWJ1Zy5jaGVja0RlZmluZWQoaGUuZXhwcmVzc2lvbi5zeW1ib2wpOmUuaXNCaW5hcnlFeHByZXNzaW9uKGhlKT9lLkRlYnVnLmNoZWNrRGVmaW5lZChoZS5yaWdodC5zeW1ib2wpOmUuaXNTb3VyY2VGaWxlKGhlKT9lLkRlYnVnLmNoZWNrRGVmaW5lZChoZS5zeW1ib2wpOmUuRGVidWcuZmFpbCgpfWZ1bmN0aW9uIEsodmUsZWUpe3ZhciBoZT1lLmlzVmFyaWFibGVEZWNsYXJhdGlvbih2ZSk/dmU6ZS5pc0JpbmRpbmdFbGVtZW50KHZlKT9lLndhbGtVcEJpbmRpbmdFbGVtZW50c0FuZFBhdHRlcm5zKHZlKTp2b2lkIDA7cmV0dXJuIGhlP3ZlLm5hbWUhPT1lZXx8ZS5pc0NhdGNoQ2xhdXNlKGhlLnBhcmVudCk/dm9pZCAwOmUuaXNWYXJpYWJsZVN0YXRlbWVudChoZS5wYXJlbnQucGFyZW50KT9oZS5wYXJlbnQucGFyZW50OnZvaWQgMDp2ZX1mdW5jdGlvbiBiKHZlKXt2YXIgZWU9dmUucGFyZW50O3N3aXRjaChlZS5raW5kKXtjYXNlIDI2NTpyZXR1cm4gZWUubmFtZT09PXZlJiZPKGVlKTtjYXNlIDI3MDpyZXR1cm4hZWUucHJvcGVydHlOYW1lO2Nhc2UgMjY3OmNhc2UgMjY4OnJldHVybiBlLkRlYnVnLmFzc2VydChlZS5uYW1lPT09dmUpLCEwO2Nhc2UgMjAzOnJldHVybiBlLmlzSW5KU0ZpbGUodmUpJiZlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkluaXRpYWxpemVkVG9CYXJlT3JBY2Nlc3NlZFJlcXVpcmUoZWUpO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHNlKHZlLGVlLGhlKXt2YXIgRj12ZS5wYXJlbnQ7aWYoISFGKXt2YXIgeD1oZS5nZXRNZXJnZWRTeW1ib2woRik7cmV0dXJuIGUuaXNFeHRlcm5hbE1vZHVsZVN5bWJvbCh4KT97ZXhwb3J0aW5nTW9kdWxlU3ltYm9sOngsZXhwb3J0S2luZDplZX06dm9pZCAwfX1DLmdldEV4cG9ydEluZm89c2U7ZnVuY3Rpb24gSih2ZSxlZSl7aWYodmUuZGVjbGFyYXRpb25zKWZvcih2YXIgaGU9MCxGPXZlLmRlY2xhcmF0aW9ucztoZTxGLmxlbmd0aDtoZSsrKXt2YXIgeD1GW2hlXTtpZihlLmlzRXhwb3J0U3BlY2lmaWVyKHgpJiYheC5wcm9wZXJ0eU5hbWUmJiF4LnBhcmVudC5wYXJlbnQubW9kdWxlU3BlY2lmaWVyKXJldHVybiBlZS5nZXRFeHBvcnRTcGVjaWZpZXJMb2NhbFRhcmdldFN5bWJvbCh4KTtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHgpJiZlLmlzTW9kdWxlRXhwb3J0c0FjY2Vzc0V4cHJlc3Npb24oeC5leHByZXNzaW9uKSYmIWUuaXNQcml2YXRlSWRlbnRpZmllcih4Lm5hbWUpKXJldHVybiBlZS5nZXRTeW1ib2xBdExvY2F0aW9uKHgpO2lmKGUuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoeCkmJmUuaXNCaW5hcnlFeHByZXNzaW9uKHgucGFyZW50LnBhcmVudCkmJmUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZCh4LnBhcmVudC5wYXJlbnQpPT09MilyZXR1cm4gZWUuZ2V0RXhwb3J0U3BlY2lmaWVyTG9jYWxUYXJnZXRTeW1ib2woeC5uYW1lKX1yZXR1cm4gdmV9ZnVuY3Rpb24gaWUodmUsZWUpe3JldHVybiBlZS5nZXRNZXJnZWRTeW1ib2woUih2ZSkuc3ltYm9sKX1mdW5jdGlvbiBSKHZlKXtpZih2ZS5raW5kPT09MjA4KXJldHVybiB2ZS5nZXRTb3VyY2VGaWxlKCk7dmFyIGVlPXZlLnBhcmVudDtyZXR1cm4gZWUua2luZD09PTMwNT9lZTooZS5EZWJ1Zy5hc3NlcnQoZWUua2luZD09PTI2MiksZS5jYXN0KGVlLnBhcmVudCxxKSl9ZnVuY3Rpb24gcSh2ZSl7cmV0dXJuIHZlLmtpbmQ9PT0yNjEmJnZlLm5hbWUua2luZD09PTEwfWZ1bmN0aW9uIE8odmUpe3JldHVybiB2ZS5tb2R1bGVSZWZlcmVuY2Uua2luZD09PTI3NyYmdmUubW9kdWxlUmVmZXJlbmNlLmV4cHJlc3Npb24ua2luZD09PTEwfX0pKGE9ZS5GaW5kQWxsUmVmZXJlbmNlc3x8KGUuRmluZEFsbFJlZmVyZW5jZXM9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oayl7a1trLlN5bWJvbD0wXT1cIlN5bWJvbFwiLGtbay5MYWJlbD0xXT1cIkxhYmVsXCIsa1trLktleXdvcmQ9Ml09XCJLZXl3b3JkXCIsa1trLlRoaXM9M109XCJUaGlzXCIsa1trLlN0cmluZz00XT1cIlN0cmluZ1wiLGtbay5UcmlwbGVTbGFzaFJlZmVyZW5jZT01XT1cIlRyaXBsZVNsYXNoUmVmZXJlbmNlXCJ9KSh3PUMuRGVmaW5pdGlvbktpbmR8fChDLkRlZmluaXRpb25LaW5kPXt9KSk7dmFyIEI7KGZ1bmN0aW9uKGspe2tbay5TcGFuPTBdPVwiU3BhblwiLGtbay5Ob2RlPTFdPVwiTm9kZVwiLGtbay5TdHJpbmdMaXRlcmFsPTJdPVwiU3RyaW5nTGl0ZXJhbFwiLGtbay5TZWFyY2hlZExvY2FsRm91bmRQcm9wZXJ0eT0zXT1cIlNlYXJjaGVkTG9jYWxGb3VuZFByb3BlcnR5XCIsa1trLlNlYXJjaGVkUHJvcGVydHlGb3VuZExvY2FsPTRdPVwiU2VhcmNoZWRQcm9wZXJ0eUZvdW5kTG9jYWxcIn0pKEI9Qy5FbnRyeUtpbmR8fChDLkVudHJ5S2luZD17fSkpO2Z1bmN0aW9uIEUoayxZKXtyZXR1cm4gWT09PXZvaWQgMCYmKFk9MSkse2tpbmQ6WSxub2RlOmsubmFtZXx8ayxjb250ZXh0OmxlKGspfX1DLm5vZGVFbnRyeT1FO2Z1bmN0aW9uIFEoayl7cmV0dXJuIGsmJmsua2luZD09PXZvaWQgMH1DLmlzQ29udGV4dFdpdGhTdGFydEFuZEVuZE5vZGU9UTtmdW5jdGlvbiBsZShrKXtpZihlLmlzRGVjbGFyYXRpb24oaykpcmV0dXJuIE4oayk7aWYoISFrLnBhcmVudCl7aWYoIWUuaXNEZWNsYXJhdGlvbihrLnBhcmVudCkmJiFlLmlzRXhwb3J0QXNzaWdubWVudChrLnBhcmVudCkpe2lmKGUuaXNJbkpTRmlsZShrKSl7dmFyIFk9ZS5pc0JpbmFyeUV4cHJlc3Npb24oay5wYXJlbnQpP2sucGFyZW50OmUuaXNBY2Nlc3NFeHByZXNzaW9uKGsucGFyZW50KSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oay5wYXJlbnQucGFyZW50KSYmay5wYXJlbnQucGFyZW50LmxlZnQ9PT1rLnBhcmVudD9rLnBhcmVudC5wYXJlbnQ6dm9pZCAwO2lmKFkmJmUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChZKSE9PTApcmV0dXJuIE4oWSl9aWYoZS5pc0pzeE9wZW5pbmdFbGVtZW50KGsucGFyZW50KXx8ZS5pc0pzeENsb3NpbmdFbGVtZW50KGsucGFyZW50KSlyZXR1cm4gay5wYXJlbnQucGFyZW50O2lmKGUuaXNKc3hTZWxmQ2xvc2luZ0VsZW1lbnQoay5wYXJlbnQpfHxlLmlzTGFiZWxlZFN0YXRlbWVudChrLnBhcmVudCl8fGUuaXNCcmVha09yQ29udGludWVTdGF0ZW1lbnQoay5wYXJlbnQpKXJldHVybiBrLnBhcmVudDtpZihlLmlzU3RyaW5nTGl0ZXJhbExpa2Uoaykpe3ZhciBVPWUudHJ5R2V0SW1wb3J0RnJvbU1vZHVsZVNwZWNpZmllcihrKTtpZihVKXt2YXIgaj1lLmZpbmRBbmNlc3RvcihVLGZ1bmN0aW9uKEkpe3JldHVybiBlLmlzRGVjbGFyYXRpb24oSSl8fGUuaXNTdGF0ZW1lbnQoSSl8fGUuaXNKU0RvY1RhZyhJKX0pO3JldHVybiBlLmlzRGVjbGFyYXRpb24oaik/TihqKTpqfX12YXIgSD1lLmZpbmRBbmNlc3RvcihrLGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZSk7cmV0dXJuIEg/TihILnBhcmVudCk6dm9pZCAwfWlmKGsucGFyZW50Lm5hbWU9PT1rfHxlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihrLnBhcmVudCl8fGUuaXNFeHBvcnRBc3NpZ25tZW50KGsucGFyZW50KXx8KGUuaXNJbXBvcnRPckV4cG9ydFNwZWNpZmllcihrLnBhcmVudCl8fGUuaXNCaW5kaW5nRWxlbWVudChrLnBhcmVudCkpJiZrLnBhcmVudC5wcm9wZXJ0eU5hbWU9PT1rfHxrLmtpbmQ9PT04OCYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihrLnBhcmVudCw1MTMpKXJldHVybiBOKGsucGFyZW50KX19ZnVuY3Rpb24gTihrKXtpZighIWspc3dpdGNoKGsua2luZCl7Y2FzZSAyNTQ6cmV0dXJuIWUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChrLnBhcmVudCl8fGsucGFyZW50LmRlY2xhcmF0aW9ucy5sZW5ndGghPT0xP2s6ZS5pc1ZhcmlhYmxlU3RhdGVtZW50KGsucGFyZW50LnBhcmVudCk/ay5wYXJlbnQucGFyZW50OmUuaXNGb3JJbk9yT2ZTdGF0ZW1lbnQoay5wYXJlbnQucGFyZW50KT9OKGsucGFyZW50LnBhcmVudCk6ay5wYXJlbnQ7Y2FzZSAyMDM6cmV0dXJuIE4oay5wYXJlbnQucGFyZW50KTtjYXNlIDI3MDpyZXR1cm4gay5wYXJlbnQucGFyZW50LnBhcmVudDtjYXNlIDI3NTpjYXNlIDI2ODpyZXR1cm4gay5wYXJlbnQucGFyZW50O2Nhc2UgMjY3OmNhc2UgMjc0OnJldHVybiBrLnBhcmVudDtjYXNlIDIyMTpyZXR1cm4gZS5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoay5wYXJlbnQpP2sucGFyZW50Oms7Y2FzZSAyNDQ6Y2FzZSAyNDM6cmV0dXJue3N0YXJ0OmsuaW5pdGlhbGl6ZXIsZW5kOmsuZXhwcmVzc2lvbn07Y2FzZSAyOTY6Y2FzZSAyOTc6cmV0dXJuIGUuaXNBcnJheUxpdGVyYWxPck9iamVjdExpdGVyYWxEZXN0cnVjdHVyaW5nUGF0dGVybihrLnBhcmVudCk/TihlLmZpbmRBbmNlc3RvcihrLnBhcmVudCxmdW5jdGlvbihZKXtyZXR1cm4gZS5pc0JpbmFyeUV4cHJlc3Npb24oWSl8fGUuaXNGb3JJbk9yT2ZTdGF0ZW1lbnQoWSl9KSk6aztkZWZhdWx0OnJldHVybiBrfX1DLmdldENvbnRleHROb2RlPU47ZnVuY3Rpb24gcChrLFksVSl7aWYoISFVKXt2YXIgaj1RKFUpPyQoVS5zdGFydCxZLFUuZW5kKTokKFUsWSk7cmV0dXJuIGouc3RhcnQhPT1rLnN0YXJ0fHxqLmxlbmd0aCE9PWsubGVuZ3RoP3tjb250ZXh0U3BhbjpqfTp2b2lkIDB9fUMudG9Db250ZXh0U3Bhbj1wO3ZhciBtOyhmdW5jdGlvbihrKXtrW2suT3RoZXI9MF09XCJPdGhlclwiLGtbay5SZWZlcmVuY2VzPTFdPVwiUmVmZXJlbmNlc1wiLGtbay5SZW5hbWU9Ml09XCJSZW5hbWVcIn0pKG09Qy5GaW5kUmVmZXJlbmNlc1VzZXx8KEMuRmluZFJlZmVyZW5jZXNVc2U9e30pKTtmdW5jdGlvbiBHKGssWSxVLGosSCl7dmFyIEk9ZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShqLEgpLGw9e3VzZToxfSxkPVAuZ2V0UmVmZXJlbmNlZFN5bWJvbHNGb3JOb2RlKEgsSSxrLFUsWSxsKSxEPWsuZ2V0VHlwZUNoZWNrZXIoKSxmZT1QLmdldEFkanVzdGVkTm9kZShJLGwpLGc9b2UoZmUpP0QuZ2V0U3ltYm9sQXRMb2NhdGlvbihmZSk6dm9pZCAwO3JldHVybiFkfHwhZC5sZW5ndGg/dm9pZCAwOmUubWFwRGVmaW5lZChkLGZ1bmN0aW9uKG5lKXt2YXIgdWU9bmUuZGVmaW5pdGlvbixXZT1uZS5yZWZlcmVuY2VzO3JldHVybiB1ZSYme2RlZmluaXRpb246RC5ydW5XaXRoQ2FuY2VsbGF0aW9uVG9rZW4oWSxmdW5jdGlvbihGZSl7cmV0dXJuIEoodWUsRmUsSSl9KSxyZWZlcmVuY2VzOldlLm1hcChmdW5jdGlvbihGZSl7cmV0dXJuIE8oRmUsZyl9KX19KX1DLmZpbmRSZWZlcmVuY2VkU3ltYm9scz1HO2Z1bmN0aW9uIG9lKGspe3JldHVybiBrLmtpbmQ9PT04OHx8ISFlLmdldERlY2xhcmF0aW9uRnJvbU5hbWUoayl8fGUuaXNMaXRlcmFsQ29tcHV0ZWRQcm9wZXJ0eURlY2xhcmF0aW9uTmFtZShrKXx8ay5raW5kPT09MTM0JiZlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihrLnBhcmVudCl9ZnVuY3Rpb24gZihrLFksVSxqLEgpe3ZhciBJPWUuZ2V0VG91Y2hpbmdQcm9wZXJ0eU5hbWUoaixIKSxsLGQ9VChrLFksVSxJLEgpO2lmKEkucGFyZW50LmtpbmQ9PT0yMDZ8fEkucGFyZW50LmtpbmQ9PT0yMDN8fEkucGFyZW50LmtpbmQ9PT0yMDd8fEkua2luZD09PTEwNilsPWQmJlZlKFtdLGQsITApO2Vsc2UgZm9yKHZhciBEPWQmJlZlKFtdLGQsITApLGZlPW5ldyBlLk1hcDtEJiZELmxlbmd0aDspe3ZhciBnPUQuc2hpZnQoKTtpZighIWUuYWRkVG9TZWVuKGZlLGUuZ2V0Tm9kZUlkKGcubm9kZSkpKXtsPWUuYXBwZW5kKGwsZyk7dmFyIG5lPVQoayxZLFUsZy5ub2RlLGcubm9kZS5wb3MpO25lJiZELnB1c2guYXBwbHkoRCxuZSl9fXZhciB1ZT1rLmdldFR5cGVDaGVja2VyKCk7cmV0dXJuIGUubWFwKGwsZnVuY3Rpb24oV2Upe3JldHVybiBGKFdlLHVlKX0pfUMuZ2V0SW1wbGVtZW50YXRpb25zQXRQb3NpdGlvbj1mO2Z1bmN0aW9uIFQoayxZLFUsaixIKXtpZihqLmtpbmQhPT0zMDUpe3ZhciBJPWsuZ2V0VHlwZUNoZWNrZXIoKTtpZihqLnBhcmVudC5raW5kPT09Mjk3KXt2YXIgbD1bXTtyZXR1cm4gUC5nZXRSZWZlcmVuY2VFbnRyaWVzRm9yU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KGosSSxmdW5jdGlvbihEKXtyZXR1cm4gbC5wdXNoKEUoRCkpfSksbH1lbHNlIGlmKGoua2luZD09PTEwNnx8ZS5pc1N1cGVyUHJvcGVydHkoai5wYXJlbnQpKXt2YXIgZD1JLmdldFN5bWJvbEF0TG9jYXRpb24oaik7cmV0dXJuIGQudmFsdWVEZWNsYXJhdGlvbiYmW0UoZC52YWx1ZURlY2xhcmF0aW9uKV19ZWxzZSByZXR1cm4gYihILGosayxVLFkse2ltcGxlbWVudGF0aW9uczohMCx1c2U6MX0pfX1mdW5jdGlvbiBLKGssWSxVLGosSCxJLGwpe3JldHVybiBlLm1hcChzZShQLmdldFJlZmVyZW5jZWRTeW1ib2xzRm9yTm9kZShILGosayxVLFksSSkpLGZ1bmN0aW9uKGQpe3JldHVybiBsKGQsaixrLmdldFR5cGVDaGVja2VyKCkpfSl9Qy5maW5kUmVmZXJlbmNlT3JSZW5hbWVFbnRyaWVzPUs7ZnVuY3Rpb24gYihrLFksVSxqLEgsSSxsKXtyZXR1cm4gST09PXZvaWQgMCYmKEk9e30pLGw9PT12b2lkIDAmJihsPW5ldyBlLlNldChqLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZC5maWxlTmFtZX0pKSksc2UoUC5nZXRSZWZlcmVuY2VkU3ltYm9sc0Zvck5vZGUoayxZLFUsaixILEksbCkpfUMuZ2V0UmVmZXJlbmNlRW50cmllc0Zvck5vZGU9YjtmdW5jdGlvbiBzZShrKXtyZXR1cm4gayYmZS5mbGF0TWFwKGssZnVuY3Rpb24oWSl7cmV0dXJuIFkucmVmZXJlbmNlc30pfWZ1bmN0aW9uIEooayxZLFUpe3ZhciBqPWZ1bmN0aW9uKCl7c3dpdGNoKGsudHlwZSl7Y2FzZSAwOnt2YXIgZz1rLnN5bWJvbCxuZT1SKGcsWSxVKSx1ZT1uZS5kaXNwbGF5UGFydHMsV2U9bmUua2luZCxGZT11ZS5tYXAoZnVuY3Rpb24oemUpe3JldHVybiB6ZS50ZXh0fSkuam9pbihcIlwiKSxaPWcuZGVjbGFyYXRpb25zJiZlLmZpcnN0T3JVbmRlZmluZWQoZy5kZWNsYXJhdGlvbnMpLEJlPVo/ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihaKXx8WjpVO3JldHVybiBLZShLZSh7fSxpZShCZSkpLHtuYW1lOkZlLGtpbmQ6V2UsZGlzcGxheVBhcnRzOnVlLGNvbnRleHQ6TihaKX0pfWNhc2UgMTp7dmFyIEJlPWsubm9kZTtyZXR1cm4gS2UoS2Uoe30saWUoQmUpKSx7bmFtZTpCZS50ZXh0LGtpbmQ6XCJsYWJlbFwiLGRpc3BsYXlQYXJ0czpbZS5kaXNwbGF5UGFydChCZS50ZXh0LGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLnRleHQpXX0pfWNhc2UgMjp7dmFyIEJlPWsubm9kZSxnZT1lLnRva2VuVG9TdHJpbmcoQmUua2luZCk7cmV0dXJuIEtlKEtlKHt9LGllKEJlKSkse25hbWU6Z2Usa2luZDpcImtleXdvcmRcIixkaXNwbGF5UGFydHM6W3t0ZXh0OmdlLGtpbmQ6XCJrZXl3b3JkXCJ9XX0pfWNhc2UgMzp7dmFyIEJlPWsubm9kZSxnPVkuZ2V0U3ltYm9sQXRMb2NhdGlvbihCZSksUmU9ZyYmZS5TeW1ib2xEaXNwbGF5LmdldFN5bWJvbERpc3BsYXlQYXJ0c0RvY3VtZW50YXRpb25BbmRTeW1ib2xLaW5kKFksZyxCZS5nZXRTb3VyY2VGaWxlKCksZS5nZXRDb250YWluZXJOb2RlKEJlKSxCZSkuZGlzcGxheVBhcnRzfHxbZS50ZXh0UGFydChcInRoaXNcIildO3JldHVybiBLZShLZSh7fSxpZShCZSkpLHtuYW1lOlwidGhpc1wiLGtpbmQ6XCJ2YXJcIixkaXNwbGF5UGFydHM6UmV9KX1jYXNlIDQ6e3ZhciBCZT1rLm5vZGU7cmV0dXJuIEtlKEtlKHt9LGllKEJlKSkse25hbWU6QmUudGV4dCxraW5kOlwidmFyXCIsZGlzcGxheVBhcnRzOltlLmRpc3BsYXlQYXJ0KGUuZ2V0VGV4dE9mTm9kZShCZSksZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuc3RyaW5nTGl0ZXJhbCldfSl9Y2FzZSA1OnJldHVybnt0ZXh0U3BhbjplLmNyZWF0ZVRleHRTcGFuRnJvbVJhbmdlKGsucmVmZXJlbmNlKSxzb3VyY2VGaWxlOmsuZmlsZSxuYW1lOmsucmVmZXJlbmNlLmZpbGVOYW1lLGtpbmQ6XCJzdHJpbmdcIixkaXNwbGF5UGFydHM6W2UuZGlzcGxheVBhcnQoJ1wiJy5jb25jYXQoay5yZWZlcmVuY2UuZmlsZU5hbWUsJ1wiJyksZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuc3RyaW5nTGl0ZXJhbCldfTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKGspfX0oKSxIPWouc291cmNlRmlsZSxJPWoudGV4dFNwYW4sbD1qLm5hbWUsZD1qLmtpbmQsRD1qLmRpc3BsYXlQYXJ0cyxmZT1qLmNvbnRleHQ7cmV0dXJuIEtlKHtjb250YWluZXJLaW5kOlwiXCIsY29udGFpbmVyTmFtZTpcIlwiLGZpbGVOYW1lOkguZmlsZU5hbWUsa2luZDpkLG5hbWU6bCx0ZXh0U3BhbjpJLGRpc3BsYXlQYXJ0czpEfSxwKEksSCxmZSkpfWZ1bmN0aW9uIGllKGspe3ZhciBZPWsuZ2V0U291cmNlRmlsZSgpO3JldHVybntzb3VyY2VGaWxlOlksdGV4dFNwYW46JChlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoayk/ay5leHByZXNzaW9uOmssWSl9fWZ1bmN0aW9uIFIoayxZLFUpe3ZhciBqPVAuZ2V0SW50ZXJzZWN0aW5nTWVhbmluZ0Zyb21EZWNsYXJhdGlvbnMoVSxrKSxIPWsuZGVjbGFyYXRpb25zJiZlLmZpcnN0T3JVbmRlZmluZWQoay5kZWNsYXJhdGlvbnMpfHxVLEk9ZS5TeW1ib2xEaXNwbGF5LmdldFN5bWJvbERpc3BsYXlQYXJ0c0RvY3VtZW50YXRpb25BbmRTeW1ib2xLaW5kKFksayxILmdldFNvdXJjZUZpbGUoKSxILEgsaiksbD1JLmRpc3BsYXlQYXJ0cyxkPUkuc3ltYm9sS2luZDtyZXR1cm57ZGlzcGxheVBhcnRzOmwsa2luZDpkfX1mdW5jdGlvbiBxKGssWSxVLGope3JldHVybiBLZShLZSh7fSxlZShrKSksaiYmaGUoayxZLFUpKX1DLnRvUmVuYW1lTG9jYXRpb249cTtmdW5jdGlvbiBPKGssWSl7dmFyIFU9dmUoayk7cmV0dXJuIFk/S2UoS2Uoe30sVSkse2lzRGVmaW5pdGlvbjprLmtpbmQhPT0wJiZWKGsubm9kZSxZKX0pOlV9ZnVuY3Rpb24gdmUoayl7dmFyIFk9ZWUoayk7aWYoay5raW5kPT09MClyZXR1cm4gS2UoS2Uoe30sWSkse2lzV3JpdGVBY2Nlc3M6ITF9KTt2YXIgVT1rLmtpbmQsaj1rLm5vZGU7cmV0dXJuIEtlKEtlKHt9LFkpLHtpc1dyaXRlQWNjZXNzOnkoaiksaXNJblN0cmluZzpVPT09Mj8hMDp2b2lkIDB9KX1DLnRvUmVmZXJlbmNlRW50cnk9dmU7ZnVuY3Rpb24gZWUoayl7aWYoay5raW5kPT09MClyZXR1cm57dGV4dFNwYW46ay50ZXh0U3BhbixmaWxlTmFtZTprLmZpbGVOYW1lfTt2YXIgWT1rLm5vZGUuZ2V0U291cmNlRmlsZSgpLFU9JChrLm5vZGUsWSk7cmV0dXJuIEtlKHt0ZXh0U3BhbjpVLGZpbGVOYW1lOlkuZmlsZU5hbWV9LHAoVSxZLGsuY29udGV4dCkpfWZ1bmN0aW9uIGhlKGssWSxVKXtpZihrLmtpbmQhPT0wJiZlLmlzSWRlbnRpZmllcihZKSl7dmFyIGo9ay5ub2RlLEg9ay5raW5kLEk9ai5wYXJlbnQsbD1ZLnRleHQsZD1lLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KEkpO2lmKGR8fGUuaXNPYmplY3RCaW5kaW5nRWxlbWVudFdpdGhvdXRQcm9wZXJ0eU5hbWUoSSkmJkkubmFtZT09PWomJkkuZG90RG90RG90VG9rZW49PT12b2lkIDApe3ZhciBEPXtwcmVmaXhUZXh0OmwrXCI6IFwifSxmZT17c3VmZml4VGV4dDpcIjogXCIrbH07aWYoSD09PTMpcmV0dXJuIEQ7aWYoSD09PTQpcmV0dXJuIGZlO2lmKGQpe3ZhciBnPUkucGFyZW50O3JldHVybiBlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oZykmJmUuaXNCaW5hcnlFeHByZXNzaW9uKGcucGFyZW50KSYmZS5pc01vZHVsZUV4cG9ydHNBY2Nlc3NFeHByZXNzaW9uKGcucGFyZW50LmxlZnQpP0Q6ZmV9ZWxzZSByZXR1cm4gRH1lbHNlIGlmKGUuaXNJbXBvcnRTcGVjaWZpZXIoSSkmJiFJLnByb3BlcnR5TmFtZSl7dmFyIG5lPWUuaXNFeHBvcnRTcGVjaWZpZXIoWS5wYXJlbnQpP1UuZ2V0RXhwb3J0U3BlY2lmaWVyTG9jYWxUYXJnZXRTeW1ib2woWS5wYXJlbnQpOlUuZ2V0U3ltYm9sQXRMb2NhdGlvbihZKTtyZXR1cm4gZS5jb250YWlucyhuZS5kZWNsYXJhdGlvbnMsSSk/e3ByZWZpeFRleHQ6bCtcIiBhcyBcIn06ZS5lbXB0eU9wdGlvbnN9ZWxzZSBpZihlLmlzRXhwb3J0U3BlY2lmaWVyKEkpJiYhSS5wcm9wZXJ0eU5hbWUpcmV0dXJuIFk9PT1rLm5vZGV8fFUuZ2V0U3ltYm9sQXRMb2NhdGlvbihZKT09PVUuZ2V0U3ltYm9sQXRMb2NhdGlvbihrLm5vZGUpP3twcmVmaXhUZXh0OmwrXCIgYXMgXCJ9OntzdWZmaXhUZXh0OlwiIGFzIFwiK2x9fXJldHVybiBlLmVtcHR5T3B0aW9uc31mdW5jdGlvbiBGKGssWSl7dmFyIFU9ZWUoayk7aWYoay5raW5kIT09MCl7dmFyIGo9ay5ub2RlO3JldHVybiBLZShLZSh7fSxVKSx4KGosWSkpfWVsc2UgcmV0dXJuIEtlKEtlKHt9LFUpLHtraW5kOlwiXCIsZGlzcGxheVBhcnRzOltdfSl9ZnVuY3Rpb24geChrLFkpe3ZhciBVPVkuZ2V0U3ltYm9sQXRMb2NhdGlvbihlLmlzRGVjbGFyYXRpb24oaykmJmsubmFtZT9rLm5hbWU6ayk7cmV0dXJuIFU/UihVLFksayk6ay5raW5kPT09MjA1P3traW5kOlwiaW50ZXJmYWNlXCIsZGlzcGxheVBhcnRzOltlLnB1bmN0dWF0aW9uUGFydCgyMCksZS50ZXh0UGFydChcIm9iamVjdCBsaXRlcmFsXCIpLGUucHVuY3R1YXRpb25QYXJ0KDIxKV19Omsua2luZD09PTIyNj97a2luZDpcImxvY2FsIGNsYXNzXCIsZGlzcGxheVBhcnRzOltlLnB1bmN0dWF0aW9uUGFydCgyMCksZS50ZXh0UGFydChcImFub255bW91cyBsb2NhbCBjbGFzc1wiKSxlLnB1bmN0dWF0aW9uUGFydCgyMSldfTp7a2luZDplLmdldE5vZGVLaW5kKGspLGRpc3BsYXlQYXJ0czpbXX19ZnVuY3Rpb24gWChrKXt2YXIgWT1lZShrKTtpZihrLmtpbmQ9PT0wKXJldHVybntmaWxlTmFtZTpZLmZpbGVOYW1lLHNwYW46e3RleHRTcGFuOlkudGV4dFNwYW4sa2luZDpcInJlZmVyZW5jZVwifX07dmFyIFU9eShrLm5vZGUpLGo9S2Uoe3RleHRTcGFuOlkudGV4dFNwYW4sa2luZDpVP1wid3JpdHRlblJlZmVyZW5jZVwiOlwicmVmZXJlbmNlXCIsaXNJblN0cmluZzprLmtpbmQ9PT0yPyEwOnZvaWQgMH0sWS5jb250ZXh0U3BhbiYme2NvbnRleHRTcGFuOlkuY29udGV4dFNwYW59KTtyZXR1cm57ZmlsZU5hbWU6WS5maWxlTmFtZSxzcGFuOmp9fUMudG9IaWdobGlnaHRTcGFuPVg7ZnVuY3Rpb24gJChrLFksVSl7dmFyIGo9ay5nZXRTdGFydChZKSxIPShVfHxrKS5nZXRFbmQoKTtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWxMaWtlKGspJiZILWo+MiYmKGUuRGVidWcuYXNzZXJ0KFU9PT12b2lkIDApLGorPTEsSC09MSksZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMoaixIKX1mdW5jdGlvbiBBKGspe3JldHVybiBrLmtpbmQ9PT0wP2sudGV4dFNwYW46JChrLm5vZGUsay5ub2RlLmdldFNvdXJjZUZpbGUoKSl9Qy5nZXRUZXh0U3Bhbk9mRW50cnk9QTtmdW5jdGlvbiB5KGspe3ZhciBZPWUuZ2V0RGVjbGFyYXRpb25Gcm9tTmFtZShrKTtyZXR1cm4hIVkmJkwoWSl8fGsua2luZD09PTg4fHxlLmlzV3JpdGVBY2Nlc3Moayl9ZnVuY3Rpb24gVihrLFkpe3ZhciBVO2lmKCFZKXJldHVybiExO3ZhciBqPWUuZ2V0RGVjbGFyYXRpb25Gcm9tTmFtZShrKXx8KGsua2luZD09PTg4P2sucGFyZW50OmUuaXNMaXRlcmFsQ29tcHV0ZWRQcm9wZXJ0eURlY2xhcmF0aW9uTmFtZShrKXx8ay5raW5kPT09MTM0JiZlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihrLnBhcmVudCk/ay5wYXJlbnQucGFyZW50OnZvaWQgMCksSD1qJiZlLmlzQmluYXJ5RXhwcmVzc2lvbihqKT9qLmxlZnQ6dm9pZCAwO3JldHVybiEhKGomJigoVT1ZLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxVPT09dm9pZCAwP3ZvaWQgMDpVLnNvbWUoZnVuY3Rpb24oSSl7cmV0dXJuIEk9PT1qfHxJPT09SH0pKSl9ZnVuY3Rpb24gTChrKXtpZihrLmZsYWdzJjE2Nzc3MjE2KXJldHVybiEwO3N3aXRjaChrLmtpbmQpe2Nhc2UgMjIxOmNhc2UgMjAzOmNhc2UgMjU3OmNhc2UgMjI2OmNhc2UgODg6Y2FzZSAyNjA6Y2FzZSAyOTk6Y2FzZSAyNzU6Y2FzZSAyNjc6Y2FzZSAyNjU6Y2FzZSAyNzA6Y2FzZSAyNTg6Y2FzZSAzMzg6Y2FzZSAzNDU6Y2FzZSAyODU6Y2FzZSAyNjE6Y2FzZSAyNjQ6Y2FzZSAyNjg6Y2FzZSAyNzQ6Y2FzZSAxNjQ6Y2FzZSAyOTc6Y2FzZSAyNTk6Y2FzZSAxNjM6cmV0dXJuITA7Y2FzZSAyOTY6cmV0dXJuIWUuaXNBcnJheUxpdGVyYWxPck9iamVjdExpdGVyYWxEZXN0cnVjdHVyaW5nUGF0dGVybihrLnBhcmVudCk7Y2FzZSAyNTY6Y2FzZSAyMTM6Y2FzZSAxNzE6Y2FzZSAxNjk6Y2FzZSAxNzI6Y2FzZSAxNzM6cmV0dXJuISFrLmJvZHk7Y2FzZSAyNTQ6Y2FzZSAxNjc6cmV0dXJuISFrLmluaXRpYWxpemVyfHxlLmlzQ2F0Y2hDbGF1c2Uoay5wYXJlbnQpO2Nhc2UgMTY4OmNhc2UgMTY2OmNhc2UgMzQ3OmNhc2UgMzQwOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoayl9fXZhciBQOyhmdW5jdGlvbihrKXtmdW5jdGlvbiBZKE9lLG5yLE1yLFBlLFVlLGZyLERlKXt2YXIgZ3IsVnI7aWYoZnI9PT12b2lkIDAmJihmcj17fSksRGU9PT12b2lkIDAmJihEZT1uZXcgZS5TZXQoUGUubWFwKGZ1bmN0aW9uKFJ0KXtyZXR1cm4gUnQuZmlsZU5hbWV9KSkpLG5yPVUobnIsZnIpLGUuaXNTb3VyY2VGaWxlKG5yKSl7dmFyIFRyPWUuR29Ub0RlZmluaXRpb24uZ2V0UmVmZXJlbmNlQXRQb3NpdGlvbihucixPZSxNcik7aWYoIShUciE9bnVsbCYmVHIuZmlsZSkpcmV0dXJuO3ZhciB2aT1Nci5nZXRUeXBlQ2hlY2tlcigpLmdldE1lcmdlZFN5bWJvbChUci5maWxlLnN5bWJvbCk7aWYodmkpcmV0dXJuIGZlKE1yLHZpLCExLFBlLERlKTt2YXIgVWk9TXIuZ2V0RmlsZUluY2x1ZGVSZWFzb25zKCk7cmV0dXJuIFVpP1t7ZGVmaW5pdGlvbjp7dHlwZTo1LHJlZmVyZW5jZTpUci5yZWZlcmVuY2UsZmlsZTpucn0scmVmZXJlbmNlczpIKFRyLmZpbGUsVWksTXIpfHxlLmVtcHR5QXJyYXl9XTp2b2lkIDB9aWYoIWZyLmltcGxlbWVudGF0aW9ucyl7dmFyIFlpPW5lKG5yLFBlLFVlKTtpZihZaSlyZXR1cm4gWWl9dmFyIFdpPU1yLmdldFR5cGVDaGVja2VyKCksY3Q9V2kuZ2V0U3ltYm9sQXRMb2NhdGlvbihlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihucikmJm5yLnBhcmVudC5uYW1lfHxucik7aWYoIWN0KXtpZighZnIuaW1wbGVtZW50YXRpb25zJiZlLmlzU3RyaW5nTGl0ZXJhbExpa2UobnIpKXtpZihlLmlzTW9kdWxlU3BlY2lmaWVyTGlrZShucikpe3ZhciBVaT1Nci5nZXRGaWxlSW5jbHVkZVJlYXNvbnMoKSxMaT0oVnI9KGdyPW5yLmdldFNvdXJjZUZpbGUoKS5yZXNvbHZlZE1vZHVsZXMpPT09bnVsbHx8Z3I9PT12b2lkIDA/dm9pZCAwOmdyLmdldChuci50ZXh0LGUuZ2V0TW9kZUZvclVzYWdlTG9jYXRpb24obnIuZ2V0U291cmNlRmlsZSgpLG5yKSkpPT09bnVsbHx8VnI9PT12b2lkIDA/dm9pZCAwOlZyLnJlc29sdmVkRmlsZU5hbWUsbnQ9TGk/TXIuZ2V0U291cmNlRmlsZShMaSk6dm9pZCAwO2lmKG50KXJldHVyblt7ZGVmaW5pdGlvbjp7dHlwZTo0LG5vZGU6bnJ9LHJlZmVyZW5jZXM6SChudCxVaSxNcil8fGUuZW1wdHlBcnJheX1dfXJldHVybiBhZShucixQZSxXaSxVZSl9cmV0dXJufWlmKGN0LmVzY2FwZWROYW1lPT09XCJleHBvcnQ9XCIpcmV0dXJuIGZlKE1yLGN0LnBhcmVudCwhMSxQZSxEZSk7dmFyIE10PWwoY3QsTXIsUGUsVWUsZnIsRGUpO2lmKE10JiYhKGN0LmZsYWdzJjMzNTU0NDMyKSlyZXR1cm4gTXQ7dmFyIHh0PUkobnIsY3QsV2kpLHV0PXh0JiZsKHh0LE1yLFBlLFVlLGZyLERlKSxEdD11ZShjdCxucixQZSxEZSxXaSxVZSxmcik7cmV0dXJuIGQoTXIsTXQsRHQsdXQpfWsuZ2V0UmVmZXJlbmNlZFN5bWJvbHNGb3JOb2RlPVk7ZnVuY3Rpb24gVShPZSxucil7cmV0dXJuIG5yLnVzZT09PTE/T2U9ZS5nZXRBZGp1c3RlZFJlZmVyZW5jZUxvY2F0aW9uKE9lKTpuci51c2U9PT0yJiYoT2U9ZS5nZXRBZGp1c3RlZFJlbmFtZUxvY2F0aW9uKE9lKSksT2V9ay5nZXRBZGp1c3RlZE5vZGU9VTtmdW5jdGlvbiBqKE9lLG5yLE1yLFBlKXt2YXIgVWUsZnI7UGU9PT12b2lkIDAmJihQZT1uZXcgZS5TZXQoTXIubWFwKGZ1bmN0aW9uKFRyKXtyZXR1cm4gVHIuZmlsZU5hbWV9KSkpO3ZhciBEZT0oVWU9bnIuZ2V0U291cmNlRmlsZShPZSkpPT09bnVsbHx8VWU9PT12b2lkIDA/dm9pZCAwOlVlLnN5bWJvbDtpZihEZSlyZXR1cm4oKGZyPWZlKG5yLERlLCExLE1yLFBlKVswXSk9PT1udWxsfHxmcj09PXZvaWQgMD92b2lkIDA6ZnIucmVmZXJlbmNlcyl8fGUuZW1wdHlBcnJheTt2YXIgZ3I9bnIuZ2V0RmlsZUluY2x1ZGVSZWFzb25zKCksVnI9bnIuZ2V0U291cmNlRmlsZShPZSk7cmV0dXJuIFZyJiZnciYmSChWcixncixucil8fGUuZW1wdHlBcnJheX1rLmdldFJlZmVyZW5jZXNGb3JGaWxlTmFtZT1qO2Z1bmN0aW9uIEgoT2UsbnIsTXIpe2Zvcih2YXIgUGUsVWU9bnIuZ2V0KE9lLnBhdGgpfHxlLmVtcHR5QXJyYXksZnI9MCxEZT1VZTtmcjxEZS5sZW5ndGg7ZnIrKyl7dmFyIGdyPURlW2ZyXTtpZihlLmlzUmVmZXJlbmNlZEZpbGUoZ3IpKXt2YXIgVnI9TXIuZ2V0U291cmNlRmlsZUJ5UGF0aChnci5maWxlKSxUcj1lLmdldFJlZmVyZW5jZWRGaWxlTG9jYXRpb24oTXIuZ2V0U291cmNlRmlsZUJ5UGF0aCxncik7ZS5pc1JlZmVyZW5jZUZpbGVMb2NhdGlvbihUcikmJihQZT1lLmFwcGVuZChQZSx7a2luZDowLGZpbGVOYW1lOlZyLmZpbGVOYW1lLHRleHRTcGFuOmUuY3JlYXRlVGV4dFNwYW5Gcm9tUmFuZ2UoVHIpfSkpfX1yZXR1cm4gUGV9ZnVuY3Rpb24gSShPZSxucixNcil7aWYoT2UucGFyZW50JiZlLmlzTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb24oT2UucGFyZW50KSl7dmFyIFBlPU1yLmdldEFsaWFzZWRTeW1ib2wobnIpLFVlPU1yLmdldE1lcmdlZFN5bWJvbChQZSk7aWYoUGUhPT1VZSlyZXR1cm4gVWV9fWZ1bmN0aW9uIGwoT2UsbnIsTXIsUGUsVWUsZnIpe3ZhciBEZT1PZS5mbGFncyYxNTM2JiZPZS5kZWNsYXJhdGlvbnMmJmUuZmluZChPZS5kZWNsYXJhdGlvbnMsZS5pc1NvdXJjZUZpbGUpO2lmKCEhRGUpe3ZhciBncj1PZS5leHBvcnRzLmdldChcImV4cG9ydD1cIiksVnI9ZmUobnIsT2UsISFncixNcixmcik7aWYoIWdyfHwhZnIuaGFzKERlLmZpbGVOYW1lKSlyZXR1cm4gVnI7dmFyIFRyPW5yLmdldFR5cGVDaGVja2VyKCk7cmV0dXJuIE9lPWUuc2tpcEFsaWFzKGdyLFRyKSxkKG5yLFZyLHVlKE9lLHZvaWQgMCxNcixmcixUcixQZSxVZSkpfX1mdW5jdGlvbiBkKE9lKXtmb3IodmFyIG5yPVtdLE1yPTE7TXI8YXJndW1lbnRzLmxlbmd0aDtNcisrKW5yW01yLTFdPWFyZ3VtZW50c1tNcl07Zm9yKHZhciBQZSxVZT0wLGZyPW5yO1VlPGZyLmxlbmd0aDtVZSsrKXt2YXIgRGU9ZnJbVWVdO2lmKCEoIURlfHwhRGUubGVuZ3RoKSl7aWYoIVBlKXtQZT1EZTtjb250aW51ZX1mb3IodmFyIGdyPWZ1bmN0aW9uKFVpKXtpZighVWkuZGVmaW5pdGlvbnx8VWkuZGVmaW5pdGlvbi50eXBlIT09MClyZXR1cm4gUGUucHVzaChVaSksXCJjb250aW51ZVwiO3ZhciBZaT1VaS5kZWZpbml0aW9uLnN5bWJvbCxXaT1lLmZpbmRJbmRleChQZSxmdW5jdGlvbihMaSl7cmV0dXJuISFMaS5kZWZpbml0aW9uJiZMaS5kZWZpbml0aW9uLnR5cGU9PT0wJiZMaS5kZWZpbml0aW9uLnN5bWJvbD09PVlpfSk7aWYoV2k9PT0tMSlyZXR1cm4gUGUucHVzaChVaSksXCJjb250aW51ZVwiO3ZhciBjdD1QZVtXaV07UGVbV2ldPXtkZWZpbml0aW9uOmN0LmRlZmluaXRpb24scmVmZXJlbmNlczpjdC5yZWZlcmVuY2VzLmNvbmNhdChVaS5yZWZlcmVuY2VzKS5zb3J0KGZ1bmN0aW9uKExpLG50KXt2YXIgTXQ9RChPZSxMaSkseHQ9RChPZSxudCk7aWYoTXQhPT14dClyZXR1cm4gZS5jb21wYXJlVmFsdWVzKE10LHh0KTt2YXIgdXQ9QShMaSksRHQ9QShudCk7cmV0dXJuIHV0LnN0YXJ0IT09RHQuc3RhcnQ/ZS5jb21wYXJlVmFsdWVzKHV0LnN0YXJ0LER0LnN0YXJ0KTplLmNvbXBhcmVWYWx1ZXModXQubGVuZ3RoLER0Lmxlbmd0aCl9KX19LFZyPTAsVHI9RGU7VnI8VHIubGVuZ3RoO1ZyKyspe3ZhciB2aT1UcltWcl07Z3IodmkpfX19cmV0dXJuIFBlfWZ1bmN0aW9uIEQoT2UsbnIpe3ZhciBNcj1uci5raW5kPT09MD9PZS5nZXRTb3VyY2VGaWxlKG5yLmZpbGVOYW1lKTpuci5ub2RlLmdldFNvdXJjZUZpbGUoKTtyZXR1cm4gT2UuZ2V0U291cmNlRmlsZXMoKS5pbmRleE9mKE1yKX1mdW5jdGlvbiBmZShPZSxucixNcixQZSxVZSl7ZS5EZWJ1Zy5hc3NlcnQoISFuci52YWx1ZURlY2xhcmF0aW9uKTt2YXIgZnI9ZS5tYXBEZWZpbmVkKEMuZmluZE1vZHVsZVJlZmVyZW5jZXMoT2UsUGUsbnIpLGZ1bmN0aW9uKGN0KXtpZihjdC5raW5kPT09XCJpbXBvcnRcIil7dmFyIExpPWN0LmxpdGVyYWwucGFyZW50O2lmKGUuaXNMaXRlcmFsVHlwZU5vZGUoTGkpKXt2YXIgbnQ9ZS5jYXN0KExpLnBhcmVudCxlLmlzSW1wb3J0VHlwZU5vZGUpO2lmKE1yJiYhbnQucXVhbGlmaWVyKXJldHVybn1yZXR1cm4gRShjdC5saXRlcmFsKX1lbHNlIHJldHVybntraW5kOjAsZmlsZU5hbWU6Y3QucmVmZXJlbmNpbmdGaWxlLmZpbGVOYW1lLHRleHRTcGFuOmUuY3JlYXRlVGV4dFNwYW5Gcm9tUmFuZ2UoY3QucmVmKX19KTtpZihuci5kZWNsYXJhdGlvbnMpZm9yKHZhciBEZT0wLGdyPW5yLmRlY2xhcmF0aW9ucztEZTxnci5sZW5ndGg7RGUrKyl7dmFyIFZyPWdyW0RlXTtzd2l0Y2goVnIua2luZCl7Y2FzZSAzMDU6YnJlYWs7Y2FzZSAyNjE6VWUuaGFzKFZyLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSkmJmZyLnB1c2goRShWci5uYW1lKSk7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydCghIShuci5mbGFncyYzMzU1NDQzMiksXCJFeHBlY3RlZCBhIG1vZHVsZSBzeW1ib2wgdG8gYmUgZGVjbGFyZWQgYnkgYSBTb3VyY2VGaWxlIG9yIE1vZHVsZURlY2xhcmF0aW9uLlwiKX19dmFyIFRyPW5yLmV4cG9ydHMuZ2V0KFwiZXhwb3J0PVwiKTtpZihUciE9bnVsbCYmVHIuZGVjbGFyYXRpb25zKWZvcih2YXIgdmk9MCxVaT1Uci5kZWNsYXJhdGlvbnM7dmk8VWkubGVuZ3RoO3ZpKyspe3ZhciBWcj1VaVt2aV0sWWk9VnIuZ2V0U291cmNlRmlsZSgpO2lmKFVlLmhhcyhZaS5maWxlTmFtZSkpe3ZhciBXaT1lLmlzQmluYXJ5RXhwcmVzc2lvbihWcikmJmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oVnIubGVmdCk/VnIubGVmdC5leHByZXNzaW9uOmUuaXNFeHBvcnRBc3NpZ25tZW50KFZyKT9lLkRlYnVnLmNoZWNrRGVmaW5lZChlLmZpbmRDaGlsZE9mS2luZChWciw5MyxZaSkpOmUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oVnIpfHxWcjtmci5wdXNoKEUoV2kpKX19cmV0dXJuIGZyLmxlbmd0aD9be2RlZmluaXRpb246e3R5cGU6MCxzeW1ib2w6bnJ9LHJlZmVyZW5jZXM6ZnJ9XTplLmVtcHR5QXJyYXl9ZnVuY3Rpb24gZyhPZSl7cmV0dXJuIE9lLmtpbmQ9PT0xNDUmJmUuaXNUeXBlT3BlcmF0b3JOb2RlKE9lLnBhcmVudCkmJk9lLnBhcmVudC5vcGVyYXRvcj09PTE0NX1mdW5jdGlvbiBuZShPZSxucixNcil7aWYoZS5pc1R5cGVLZXl3b3JkKE9lLmtpbmQpKXJldHVybiBPZS5raW5kPT09MTE0JiZlLmlzVm9pZEV4cHJlc3Npb24oT2UucGFyZW50KXx8T2Uua2luZD09PTE0NSYmIWcoT2UpP3ZvaWQgMDpOZShucixPZS5raW5kLE1yLE9lLmtpbmQ9PT0xNDU/Zzp2b2lkIDApO2lmKGUuaXNJbXBvcnRNZXRhKE9lLnBhcmVudCkmJk9lLnBhcmVudC5uYW1lPT09T2UpcmV0dXJuIEVyKG5yLE1yKTtpZihlLmlzU3RhdGljTW9kaWZpZXIoT2UpJiZlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKE9lLnBhcmVudCkpcmV0dXJuW3tkZWZpbml0aW9uOnt0eXBlOjIsbm9kZTpPZX0scmVmZXJlbmNlczpbRShPZSldfV07aWYoZS5pc0p1bXBTdGF0ZW1lbnRUYXJnZXQoT2UpKXt2YXIgUGU9ZS5nZXRUYXJnZXRMYWJlbChPZS5wYXJlbnQsT2UudGV4dCk7cmV0dXJuIFBlJiZZZShQZS5wYXJlbnQsUGUpfWVsc2UgaWYoZS5pc0xhYmVsT2ZMYWJlbGVkU3RhdGVtZW50KE9lKSlyZXR1cm4gWWUoT2UucGFyZW50LE9lKTtpZihlLmlzVGhpcyhPZSkpcmV0dXJuIHBpKE9lLG5yLE1yKTtpZihPZS5raW5kPT09MTA2KXJldHVybiBadChPZSl9ZnVuY3Rpb24gdWUoT2UsbnIsTXIsUGUsVWUsZnIsRGUpe3ZhciBncj1uciYmWihPZSxucixVZSwhQXIoRGUpKXx8T2UsVnI9bnI/enIobnIsZ3IpOjcsVHI9W10sdmk9bmV3IFJlKE1yLFBlLG5yP0ZlKG5yKTowLFVlLGZyLFZyLERlLFRyKSxVaT0hQXIoRGUpfHwhZ3IuZGVjbGFyYXRpb25zP3ZvaWQgMDplLmZpbmQoZ3IuZGVjbGFyYXRpb25zLGUuaXNFeHBvcnRTcGVjaWZpZXIpO2lmKFVpKXVyKFVpLm5hbWUsZ3IsVWksdmkuY3JlYXRlU2VhcmNoKG5yLE9lLHZvaWQgMCksdmksITAsITApO2Vsc2UgaWYobnImJm5yLmtpbmQ9PT04OCYmZ3IuZXNjYXBlZE5hbWU9PT1cImRlZmF1bHRcIiYmZ3IucGFyZW50KWlpKG5yLGdyLHZpKSx6ZShucixncix7ZXhwb3J0aW5nTW9kdWxlU3ltYm9sOmdyLnBhcmVudCxleHBvcnRLaW5kOjF9LHZpKTtlbHNle3ZhciBZaT12aS5jcmVhdGVTZWFyY2gobnIsZ3Isdm9pZCAwLHthbGxTZWFyY2hTeW1ib2xzOm5yP1hlKGdyLG5yLFVlLERlLnVzZT09PTIsISFEZS5wcm92aWRlUHJlZml4QW5kU3VmZml4VGV4dEZvclJlbmFtZSwhIURlLmltcGxlbWVudGF0aW9ucyk6W2dyXX0pO1dlKGdyLHZpLFlpKX1yZXR1cm4gVHJ9ZnVuY3Rpb24gV2UoT2UsbnIsTXIpe3ZhciBQZT13ZShPZSk7aWYoUGUpbHIoUGUsUGUuZ2V0U291cmNlRmlsZSgpLE1yLG5yLCEoZS5pc1NvdXJjZUZpbGUoUGUpJiYhZS5jb250YWlucyhuci5zb3VyY2VGaWxlcyxQZSkpKTtlbHNlIGZvcih2YXIgVWU9MCxmcj1uci5zb3VyY2VGaWxlcztVZTxmci5sZW5ndGg7VWUrKyl7dmFyIERlPWZyW1VlXTtuci5jYW5jZWxsYXRpb25Ub2tlbi50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCksSWUoRGUsTXIsbnIpfX1mdW5jdGlvbiBGZShPZSl7c3dpdGNoKE9lLmtpbmQpe2Nhc2UgMTcxOmNhc2UgMTM0OnJldHVybiAxO2Nhc2UgNzk6aWYoZS5pc0NsYXNzTGlrZShPZS5wYXJlbnQpKXJldHVybiBlLkRlYnVnLmFzc2VydChPZS5wYXJlbnQubmFtZT09PU9lKSwyO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIFooT2UsbnIsTXIsUGUpe3ZhciBVZT1uci5wYXJlbnQ7cmV0dXJuIGUuaXNFeHBvcnRTcGVjaWZpZXIoVWUpJiZQZT95cihucixPZSxVZSxNcik6ZS5maXJzdERlZmluZWQoT2UuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGZyKXtpZighZnIucGFyZW50KXtpZihPZS5mbGFncyYzMzU1NDQzMilyZXR1cm47ZS5EZWJ1Zy5mYWlsKFwiVW5leHBlY3RlZCBzeW1ib2wgYXQgXCIuY29uY2F0KGUuRGVidWcuZm9ybWF0U3ludGF4S2luZChuci5raW5kKSxcIjogXCIpLmNvbmNhdChlLkRlYnVnLmZvcm1hdFN5bWJvbChPZSkpKX1yZXR1cm4gZS5pc1R5cGVMaXRlcmFsTm9kZShmci5wYXJlbnQpJiZlLmlzVW5pb25UeXBlTm9kZShmci5wYXJlbnQucGFyZW50KT9Nci5nZXRQcm9wZXJ0eU9mVHlwZShNci5nZXRUeXBlRnJvbVR5cGVOb2RlKGZyLnBhcmVudC5wYXJlbnQpLE9lLm5hbWUpOnZvaWQgMH0pfXZhciBCZTsoZnVuY3Rpb24oT2Upe09lW09lLk5vbmU9MF09XCJOb25lXCIsT2VbT2UuQ29uc3RydWN0b3I9MV09XCJDb25zdHJ1Y3RvclwiLE9lW09lLkNsYXNzPTJdPVwiQ2xhc3NcIn0pKEJlfHwoQmU9e30pKTtmdW5jdGlvbiBnZShPZSl7aWYoISEoT2UuZmxhZ3MmMzM1NTU5NjgpKXt2YXIgbnI9T2UuZGVjbGFyYXRpb25zJiZlLmZpbmQoT2UuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKE1yKXtyZXR1cm4hZS5pc1NvdXJjZUZpbGUoTXIpJiYhZS5pc01vZHVsZURlY2xhcmF0aW9uKE1yKX0pO3JldHVybiBuciYmbnIuc3ltYm9sfX12YXIgUmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBPZShucixNcixQZSxVZSxmcixEZSxncixWcil7dGhpcy5zb3VyY2VGaWxlcz1ucix0aGlzLnNvdXJjZUZpbGVzU2V0PU1yLHRoaXMuc3BlY2lhbFNlYXJjaEtpbmQ9UGUsdGhpcy5jaGVja2VyPVVlLHRoaXMuY2FuY2VsbGF0aW9uVG9rZW49ZnIsdGhpcy5zZWFyY2hNZWFuaW5nPURlLHRoaXMub3B0aW9ucz1ncix0aGlzLnJlc3VsdD1Wcix0aGlzLmluaGVyaXRzRnJvbUNhY2hlPW5ldyBlLk1hcCx0aGlzLm1hcmtTZWVuQ29udGFpbmluZ1R5cGVSZWZlcmVuY2U9ZS5ub2RlU2VlblRyYWNrZXIoKSx0aGlzLm1hcmtTZWVuUmVFeHBvcnRSSFM9ZS5ub2RlU2VlblRyYWNrZXIoKSx0aGlzLnN5bWJvbElkVG9SZWZlcmVuY2VzPVtdLHRoaXMuc291cmNlRmlsZVRvU2VlblN5bWJvbHM9W119cmV0dXJuIE9lLnByb3RvdHlwZS5pbmNsdWRlc1NvdXJjZUZpbGU9ZnVuY3Rpb24obnIpe3JldHVybiB0aGlzLnNvdXJjZUZpbGVzU2V0Lmhhcyhuci5maWxlTmFtZSl9LE9lLnByb3RvdHlwZS5nZXRJbXBvcnRTZWFyY2hlcz1mdW5jdGlvbihucixNcil7cmV0dXJuIHRoaXMuaW1wb3J0VHJhY2tlcnx8KHRoaXMuaW1wb3J0VHJhY2tlcj1DLmNyZWF0ZUltcG9ydFRyYWNrZXIodGhpcy5zb3VyY2VGaWxlcyx0aGlzLnNvdXJjZUZpbGVzU2V0LHRoaXMuY2hlY2tlcix0aGlzLmNhbmNlbGxhdGlvblRva2VuKSksdGhpcy5pbXBvcnRUcmFja2VyKG5yLE1yLHRoaXMub3B0aW9ucy51c2U9PT0yKX0sT2UucHJvdG90eXBlLmNyZWF0ZVNlYXJjaD1mdW5jdGlvbihucixNcixQZSxVZSl7VWU9PT12b2lkIDAmJihVZT17fSk7dmFyIGZyPVVlLnRleHQsRGU9ZnI9PT12b2lkIDA/ZS5zdHJpcFF1b3RlcyhlLnN5bWJvbE5hbWUoZS5nZXRMb2NhbFN5bWJvbEZvckV4cG9ydERlZmF1bHQoTXIpfHxnZShNcil8fE1yKSk6ZnIsZ3I9VWUuYWxsU2VhcmNoU3ltYm9scyxWcj1ncj09PXZvaWQgMD9bTXJdOmdyLFRyPWUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKERlKSx2aT10aGlzLm9wdGlvbnMuaW1wbGVtZW50YXRpb25zJiZucj9tcihucixNcix0aGlzLmNoZWNrZXIpOnZvaWQgMDtyZXR1cm57c3ltYm9sOk1yLGNvbWluZ0Zyb206UGUsdGV4dDpEZSxlc2NhcGVkVGV4dDpUcixwYXJlbnRzOnZpLGFsbFNlYXJjaFN5bWJvbHM6VnIsaW5jbHVkZXM6ZnVuY3Rpb24oVWkpe3JldHVybiBlLmNvbnRhaW5zKFZyLFVpKX19fSxPZS5wcm90b3R5cGUucmVmZXJlbmNlQWRkZXI9ZnVuY3Rpb24obnIpe3ZhciBNcj1lLmdldFN5bWJvbElkKG5yKSxQZT10aGlzLnN5bWJvbElkVG9SZWZlcmVuY2VzW01yXTtyZXR1cm4gUGV8fChQZT10aGlzLnN5bWJvbElkVG9SZWZlcmVuY2VzW01yXT1bXSx0aGlzLnJlc3VsdC5wdXNoKHtkZWZpbml0aW9uOnt0eXBlOjAsc3ltYm9sOm5yfSxyZWZlcmVuY2VzOlBlfSkpLGZ1bmN0aW9uKFVlLGZyKXtyZXR1cm4gUGUucHVzaChFKFVlLGZyKSl9fSxPZS5wcm90b3R5cGUuYWRkU3RyaW5nT3JDb21tZW50UmVmZXJlbmNlPWZ1bmN0aW9uKG5yLE1yKXt0aGlzLnJlc3VsdC5wdXNoKHtkZWZpbml0aW9uOnZvaWQgMCxyZWZlcmVuY2VzOlt7a2luZDowLGZpbGVOYW1lOm5yLHRleHRTcGFuOk1yfV19KX0sT2UucHJvdG90eXBlLm1hcmtTZWFyY2hlZFN5bWJvbHM9ZnVuY3Rpb24obnIsTXIpe2Zvcih2YXIgUGU9ZS5nZXROb2RlSWQobnIpLFVlPXRoaXMuc291cmNlRmlsZVRvU2VlblN5bWJvbHNbUGVdfHwodGhpcy5zb3VyY2VGaWxlVG9TZWVuU3ltYm9sc1tQZV09bmV3IGUuU2V0KSxmcj0hMSxEZT0wLGdyPU1yO0RlPGdyLmxlbmd0aDtEZSsrKXt2YXIgVnI9Z3JbRGVdO2ZyPWUudHJ5QWRkVG9TZXQoVWUsZS5nZXRTeW1ib2xJZChWcikpfHxmcn1yZXR1cm4gZnJ9LE9lfSgpO2Z1bmN0aW9uIHplKE9lLG5yLE1yLFBlKXt2YXIgVWU9UGUuZ2V0SW1wb3J0U2VhcmNoZXMobnIsTXIpLGZyPVVlLmltcG9ydFNlYXJjaGVzLERlPVVlLnNpbmdsZVJlZmVyZW5jZXMsZ3I9VWUuaW5kaXJlY3RVc2VycztpZihEZS5sZW5ndGgpZm9yKHZhciBWcj1QZS5yZWZlcmVuY2VBZGRlcihuciksVHI9MCx2aT1EZTtUcjx2aS5sZW5ndGg7VHIrKyl7dmFyIFVpPXZpW1RyXTtIZShVaSxQZSkmJlZyKFVpKX1mb3IodmFyIFlpPTAsV2k9ZnI7WWk8V2kubGVuZ3RoO1lpKyspe3ZhciBjdD1XaVtZaV0sTGk9Y3RbMF0sbnQ9Y3RbMV07bihMaS5nZXRTb3VyY2VGaWxlKCksUGUuY3JlYXRlU2VhcmNoKExpLG50LDEpLFBlKX1pZihnci5sZW5ndGgpe3ZhciBNdD12b2lkIDA7c3dpdGNoKE1yLmV4cG9ydEtpbmQpe2Nhc2UgMDpNdD1QZS5jcmVhdGVTZWFyY2goT2UsbnIsMSk7YnJlYWs7Y2FzZSAxOk10PVBlLm9wdGlvbnMudXNlPT09Mj92b2lkIDA6UGUuY3JlYXRlU2VhcmNoKE9lLG5yLDEse3RleHQ6XCJkZWZhdWx0XCJ9KTticmVhaztjYXNlIDI6YnJlYWt9aWYoTXQpZm9yKHZhciB4dD0wLHV0PWdyO3h0PHV0Lmxlbmd0aDt4dCsrKXt2YXIgRHQ9dXRbeHRdO0llKER0LE10LFBlKX19fWZ1bmN0aW9uIEVlKE9lLG5yLE1yLFBlLFVlLGZyLERlLGdyKXtmb3IodmFyIFZyPUMuY3JlYXRlSW1wb3J0VHJhY2tlcihPZSxuZXcgZS5TZXQoT2UubWFwKGZ1bmN0aW9uKHd0KXtyZXR1cm4gd3QuZmlsZU5hbWV9KSksbnIsTXIpLFRyPVZyKFBlLHtleHBvcnRLaW5kOkRlPzE6MCxleHBvcnRpbmdNb2R1bGVTeW1ib2w6VWV9LCExKSx2aT1Uci5pbXBvcnRTZWFyY2hlcyxVaT1Uci5pbmRpcmVjdFVzZXJzLFlpPVRyLnNpbmdsZVJlZmVyZW5jZXMsV2k9MCxjdD12aTtXaTxjdC5sZW5ndGg7V2krKyl7dmFyIExpPWN0W1dpXVswXTtncihMaSl9Zm9yKHZhciBudD0wLE10PVlpO250PE10Lmxlbmd0aDtudCsrKXt2YXIgeHQ9TXRbbnRdO2UuaXNJZGVudGlmaWVyKHh0KSYmZS5pc0ltcG9ydFR5cGVOb2RlKHh0LnBhcmVudCkmJmdyKHh0KX1mb3IodmFyIHV0PTAsRHQ9VWk7dXQ8RHQubGVuZ3RoO3V0KyspZm9yKHZhciBSdD1EdFt1dF0sSWk9MCxLaT1pcihSdCxEZT9cImRlZmF1bHRcIjpmcik7SWk8S2kubGVuZ3RoO0lpKyspe3ZhciBGaT1LaVtJaV0sdWk9bnIuZ2V0U3ltYm9sQXRMb2NhdGlvbihGaSksQnQ9ZS5zb21lKHVpPT1udWxsP3ZvaWQgMDp1aS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24od3Qpe3JldHVybiEhZS50cnlDYXN0KHd0LGUuaXNFeHBvcnRBc3NpZ25tZW50KX0pO2UuaXNJZGVudGlmaWVyKEZpKSYmIWUuaXNJbXBvcnRPckV4cG9ydFNwZWNpZmllcihGaS5wYXJlbnQpJiYodWk9PT1QZXx8QnQpJiZncihGaSl9fWsuZWFjaEV4cG9ydFJlZmVyZW5jZT1FZTtmdW5jdGlvbiBIZShPZSxucil7cmV0dXJuIGJlKE9lLG5yKT9uci5vcHRpb25zLnVzZSE9PTI/ITA6ZS5pc0lkZW50aWZpZXIoT2UpPyEoZS5pc0ltcG9ydE9yRXhwb3J0U3BlY2lmaWVyKE9lLnBhcmVudCkmJk9lLmVzY2FwZWRUZXh0PT09XCJkZWZhdWx0XCIpOiExOiExfWZ1bmN0aW9uIHJyKE9lLG5yKXtpZighIU9lLmRlY2xhcmF0aW9ucylmb3IodmFyIE1yPTAsUGU9T2UuZGVjbGFyYXRpb25zO01yPFBlLmxlbmd0aDtNcisrKXt2YXIgVWU9UGVbTXJdLGZyPVVlLmdldFNvdXJjZUZpbGUoKTtuKGZyLG5yLmNyZWF0ZVNlYXJjaChVZSxPZSwwKSxucixuci5pbmNsdWRlc1NvdXJjZUZpbGUoZnIpKX19ZnVuY3Rpb24gSWUoT2UsbnIsTXIpe2UuZ2V0TmFtZVRhYmxlKE9lKS5nZXQobnIuZXNjYXBlZFRleHQpIT09dm9pZCAwJiZuKE9lLG5yLE1yKX1mdW5jdGlvbiBfZShPZSxucil7cmV0dXJuIGUuaXNBcnJheUxpdGVyYWxPck9iamVjdExpdGVyYWxEZXN0cnVjdHVyaW5nUGF0dGVybihPZS5wYXJlbnQucGFyZW50KT9uci5nZXRQcm9wZXJ0eVN5bWJvbE9mRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoT2UpOnZvaWQgMH1mdW5jdGlvbiB3ZShPZSl7dmFyIG5yPU9lLmRlY2xhcmF0aW9ucyxNcj1PZS5mbGFncyxQZT1PZS5wYXJlbnQsVWU9T2UudmFsdWVEZWNsYXJhdGlvbjtpZihVZSYmKFVlLmtpbmQ9PT0yMTN8fFVlLmtpbmQ9PT0yMjYpKXJldHVybiBVZTtpZighIW5yKXtpZihNciY4MTk2KXt2YXIgZnI9ZS5maW5kKG5yLGZ1bmN0aW9uKFdpKXtyZXR1cm4gZS5oYXNFZmZlY3RpdmVNb2RpZmllcihXaSw4KXx8ZS5pc1ByaXZhdGVJZGVudGlmaWVyQ2xhc3NFbGVtZW50RGVjbGFyYXRpb24oV2kpfSk7cmV0dXJuIGZyP2UuZ2V0QW5jZXN0b3IoZnIsMjU3KTp2b2lkIDB9aWYoIW5yLnNvbWUoZS5pc09iamVjdEJpbmRpbmdFbGVtZW50V2l0aG91dFByb3BlcnR5TmFtZSkpe3ZhciBEZT1QZSYmIShPZS5mbGFncyYyNjIxNDQpO2lmKCEoRGUmJiEoZS5pc0V4dGVybmFsTW9kdWxlU3ltYm9sKFBlKSYmIVBlLmdsb2JhbEV4cG9ydHMpKSl7Zm9yKHZhciBncixWcj0wLFRyPW5yO1ZyPFRyLmxlbmd0aDtWcisrKXt2YXIgdmk9VHJbVnJdLFVpPWUuZ2V0Q29udGFpbmVyTm9kZSh2aSk7aWYoZ3ImJmdyIT09VWl8fCFVaXx8VWkua2luZD09PTMwNSYmIWUuaXNFeHRlcm5hbE9yQ29tbW9uSnNNb2R1bGUoVWkpKXJldHVybjtpZihncj1VaSxlLmlzRnVuY3Rpb25FeHByZXNzaW9uKGdyKSlmb3IodmFyIFlpPXZvaWQgMDtZaT1lLmdldE5leHRKU0RvY0NvbW1lbnRMb2NhdGlvbihncik7KWdyPVlpfXJldHVybiBEZT9nci5nZXRTb3VyY2VGaWxlKCk6Z3J9fX19ZnVuY3Rpb24gZGUoT2UsbnIsTXIsUGUpe3JldHVybiBQZT09PXZvaWQgMCYmKFBlPU1yKSx5ZShPZSxucixNcixmdW5jdGlvbigpe3JldHVybiEwfSxQZSl8fCExfWsuaXNTeW1ib2xSZWZlcmVuY2VkSW5GaWxlPWRlO2Z1bmN0aW9uIHllKE9lLG5yLE1yLFBlLFVlKXtVZT09PXZvaWQgMCYmKFVlPU1yKTt2YXIgZnI9ZS5pc1BhcmFtZXRlclByb3BlcnR5RGVjbGFyYXRpb24oT2UucGFyZW50LE9lLnBhcmVudC5wYXJlbnQpP2UuZmlyc3QobnIuZ2V0U3ltYm9sc09mUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihPZS5wYXJlbnQsT2UudGV4dCkpOm5yLmdldFN5bWJvbEF0TG9jYXRpb24oT2UpO2lmKCEhZnIpZm9yKHZhciBEZT0wLGdyPWlyKE1yLGZyLm5hbWUsVWUpO0RlPGdyLmxlbmd0aDtEZSsrKXt2YXIgVnI9Z3JbRGVdO2lmKCEoIWUuaXNJZGVudGlmaWVyKFZyKXx8VnI9PT1PZXx8VnIuZXNjYXBlZFRleHQhPT1PZS5lc2NhcGVkVGV4dCkpe3ZhciBUcj1uci5nZXRTeW1ib2xBdExvY2F0aW9uKFZyKTtpZihUcj09PWZyfHxuci5nZXRTaG9ydGhhbmRBc3NpZ25tZW50VmFsdWVTeW1ib2woVnIucGFyZW50KT09PWZyfHxlLmlzRXhwb3J0U3BlY2lmaWVyKFZyLnBhcmVudCkmJnlyKFZyLFRyLFZyLnBhcmVudCxucik9PT1mcil7dmFyIHZpPVBlKFZyKTtpZih2aSlyZXR1cm4gdml9fX19ay5lYWNoU3ltYm9sUmVmZXJlbmNlSW5GaWxlPXllO2Z1bmN0aW9uIEFlKE9lLG5yKXt2YXIgTXI9ZS5maWx0ZXIoaXIobnIsT2UpLGZ1bmN0aW9uKFVlKXtyZXR1cm4hIWUuZ2V0RGVjbGFyYXRpb25Gcm9tTmFtZShVZSl9KTtyZXR1cm4gTXIucmVkdWNlKGZ1bmN0aW9uKFVlLGZyKXt2YXIgRGU9UGUoZnIpO3JldHVybiFlLnNvbWUoVWUuZGVjbGFyYXRpb25OYW1lcyl8fERlPT09VWUuZGVwdGg/KFVlLmRlY2xhcmF0aW9uTmFtZXMucHVzaChmciksVWUuZGVwdGg9RGUpOkRlPFVlLmRlcHRoJiYoVWUuZGVjbGFyYXRpb25OYW1lcz1bZnJdLFVlLmRlcHRoPURlKSxVZX0se2RlcHRoOjEvMCxkZWNsYXJhdGlvbk5hbWVzOltdfSkuZGVjbGFyYXRpb25OYW1lcztmdW5jdGlvbiBQZShVZSl7Zm9yKHZhciBmcj0wO1VlOylVZT1lLmdldENvbnRhaW5lck5vZGUoVWUpLGZyKys7cmV0dXJuIGZyfX1rLmdldFRvcE1vc3REZWNsYXJhdGlvbk5hbWVzSW5GaWxlPUFlO2Z1bmN0aW9uIGVyKE9lLG5yLE1yLFBlKXtpZighT2UubmFtZXx8IWUuaXNJZGVudGlmaWVyKE9lLm5hbWUpKXJldHVybiExO2Zvcih2YXIgVWU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoTXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihPZS5uYW1lKSksZnI9MCxEZT1ucjtmcjxEZS5sZW5ndGg7ZnIrKylmb3IodmFyIGdyPURlW2ZyXSxWcj0wLFRyPWlyKGdyLFVlLm5hbWUpO1ZyPFRyLmxlbmd0aDtWcisrKXt2YXIgdmk9VHJbVnJdO2lmKCEoIWUuaXNJZGVudGlmaWVyKHZpKXx8dmk9PT1PZS5uYW1lfHx2aS5lc2NhcGVkVGV4dCE9PU9lLm5hbWUuZXNjYXBlZFRleHQpKXt2YXIgVWk9ZS5jbGltYlBhc3RQcm9wZXJ0eUFjY2Vzcyh2aSksWWk9ZS5pc0NhbGxFeHByZXNzaW9uKFVpLnBhcmVudCkmJlVpLnBhcmVudC5leHByZXNzaW9uPT09VWk/VWkucGFyZW50OnZvaWQgMCxXaT1Nci5nZXRTeW1ib2xBdExvY2F0aW9uKHZpKTtpZihXaSYmTXIuZ2V0Um9vdFN5bWJvbHMoV2kpLnNvbWUoZnVuY3Rpb24oY3Qpe3JldHVybiBjdD09PVVlfSkmJlBlKHZpLFlpKSlyZXR1cm4hMH19cmV0dXJuITF9ay5zb21lU2lnbmF0dXJlVXNhZ2U9ZXI7ZnVuY3Rpb24gaXIoT2UsbnIsTXIpe3JldHVybiBNcj09PXZvaWQgMCYmKE1yPU9lKSxDcihPZSxucixNcikubWFwKGZ1bmN0aW9uKFBlKXtyZXR1cm4gZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShPZSxQZSl9KX1mdW5jdGlvbiBDcihPZSxucixNcil7TXI9PT12b2lkIDAmJihNcj1PZSk7dmFyIFBlPVtdO2lmKCFucnx8IW5yLmxlbmd0aClyZXR1cm4gUGU7Zm9yKHZhciBVZT1PZS50ZXh0LGZyPVVlLmxlbmd0aCxEZT1uci5sZW5ndGgsZ3I9VWUuaW5kZXhPZihucixNci5wb3MpO2dyPj0wJiYhKGdyPk1yLmVuZCk7KXt2YXIgVnI9Z3IrRGU7KGdyPT09MHx8IWUuaXNJZGVudGlmaWVyUGFydChVZS5jaGFyQ29kZUF0KGdyLTEpLDk5KSkmJihWcj09PWZyfHwhZS5pc0lkZW50aWZpZXJQYXJ0KFVlLmNoYXJDb2RlQXQoVnIpLDk5KSkmJlBlLnB1c2goZ3IpLGdyPVVlLmluZGV4T2YobnIsZ3IrRGUrMSl9cmV0dXJuIFBlfWZ1bmN0aW9uIFllKE9lLG5yKXt2YXIgTXI9T2UuZ2V0U291cmNlRmlsZSgpLFBlPW5yLnRleHQsVWU9ZS5tYXBEZWZpbmVkKGlyKE1yLFBlLE9lKSxmdW5jdGlvbihmcil7cmV0dXJuIGZyPT09bnJ8fGUuaXNKdW1wU3RhdGVtZW50VGFyZ2V0KGZyKSYmZS5nZXRUYXJnZXRMYWJlbChmcixQZSk9PT1ucj9FKGZyKTp2b2lkIDB9KTtyZXR1cm5be2RlZmluaXRpb246e3R5cGU6MSxub2RlOm5yfSxyZWZlcmVuY2VzOlVlfV19ZnVuY3Rpb24gQnIoT2UsbnIpe3N3aXRjaChPZS5raW5kKXtjYXNlIDgwOmlmKGUuaXNKU0RvY01lbWJlck5hbWUoT2UucGFyZW50KSlyZXR1cm4hMDtjYXNlIDc5OnJldHVybiBPZS50ZXh0Lmxlbmd0aD09PW5yLmxlbmd0aDtjYXNlIDE0OmNhc2UgMTA6e3ZhciBNcj1PZTtyZXR1cm4oZS5pc0xpdGVyYWxOYW1lT2ZQcm9wZXJ0eURlY2xhcmF0aW9uT3JJbmRleEFjY2VzcyhNcil8fGUuaXNOYW1lT2ZNb2R1bGVEZWNsYXJhdGlvbihPZSl8fGUuaXNFeHByZXNzaW9uT2ZFeHRlcm5hbE1vZHVsZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKE9lKXx8ZS5pc0NhbGxFeHByZXNzaW9uKE9lLnBhcmVudCkmJmUuaXNCaW5kYWJsZU9iamVjdERlZmluZVByb3BlcnR5Q2FsbChPZS5wYXJlbnQpJiZPZS5wYXJlbnQuYXJndW1lbnRzWzFdPT09T2UpJiZNci50ZXh0Lmxlbmd0aD09PW5yLmxlbmd0aH1jYXNlIDg6cmV0dXJuIGUuaXNMaXRlcmFsTmFtZU9mUHJvcGVydHlEZWNsYXJhdGlvbk9ySW5kZXhBY2Nlc3MoT2UpJiZPZS50ZXh0Lmxlbmd0aD09PW5yLmxlbmd0aDtjYXNlIDg4OnJldHVybiBuci5sZW5ndGg9PT03O2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIEVyKE9lLG5yKXt2YXIgTXI9ZS5mbGF0TWFwKE9lLGZ1bmN0aW9uKFBlKXtyZXR1cm4gbnIudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLGUubWFwRGVmaW5lZChpcihQZSxcIm1ldGFcIixQZSksZnVuY3Rpb24oVWUpe3ZhciBmcj1VZS5wYXJlbnQ7aWYoZS5pc0ltcG9ydE1ldGEoZnIpKXJldHVybiBFKGZyKX0pfSk7cmV0dXJuIE1yLmxlbmd0aD9be2RlZmluaXRpb246e3R5cGU6Mixub2RlOk1yWzBdLm5vZGV9LHJlZmVyZW5jZXM6TXJ9XTp2b2lkIDB9ZnVuY3Rpb24gTmUoT2UsbnIsTXIsUGUpe3ZhciBVZT1lLmZsYXRNYXAoT2UsZnVuY3Rpb24oZnIpe3JldHVybiBNci50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCksZS5tYXBEZWZpbmVkKGlyKGZyLGUudG9rZW5Ub1N0cmluZyhuciksZnIpLGZ1bmN0aW9uKERlKXtpZihEZS5raW5kPT09bnImJighUGV8fFBlKERlKSkpcmV0dXJuIEUoRGUpfSl9KTtyZXR1cm4gVWUubGVuZ3RoP1t7ZGVmaW5pdGlvbjp7dHlwZToyLG5vZGU6VWVbMF0ubm9kZX0scmVmZXJlbmNlczpVZX1dOnZvaWQgMH1mdW5jdGlvbiBuKE9lLG5yLE1yLFBlKXtyZXR1cm4gUGU9PT12b2lkIDAmJihQZT0hMCksTXIuY2FuY2VsbGF0aW9uVG9rZW4udGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLGxyKE9lLE9lLG5yLE1yLFBlKX1mdW5jdGlvbiBscihPZSxucixNcixQZSxVZSl7aWYoISFQZS5tYXJrU2VhcmNoZWRTeW1ib2xzKG5yLE1yLmFsbFNlYXJjaFN5bWJvbHMpKWZvcih2YXIgZnI9MCxEZT1DcihucixNci50ZXh0LE9lKTtmcjxEZS5sZW5ndGg7ZnIrKyl7dmFyIGdyPURlW2ZyXTtHZShucixncixNcixQZSxVZSl9fWZ1bmN0aW9uIGJlKE9lLG5yKXtyZXR1cm4hIShlLmdldE1lYW5pbmdGcm9tTG9jYXRpb24oT2UpJm5yLnNlYXJjaE1lYW5pbmcpfWZ1bmN0aW9uIEdlKE9lLG5yLE1yLFBlLFVlKXt2YXIgZnI9ZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShPZSxucik7aWYoIUJyKGZyLE1yLnRleHQpKXshUGUub3B0aW9ucy5pbXBsZW1lbnRhdGlvbnMmJihQZS5vcHRpb25zLmZpbmRJblN0cmluZ3MmJmUuaXNJblN0cmluZyhPZSxucil8fFBlLm9wdGlvbnMuZmluZEluQ29tbWVudHMmJmUuaXNJbk5vblJlZmVyZW5jZUNvbW1lbnQoT2UsbnIpKSYmUGUuYWRkU3RyaW5nT3JDb21tZW50UmVmZXJlbmNlKE9lLmZpbGVOYW1lLGUuY3JlYXRlVGV4dFNwYW4obnIsTXIudGV4dC5sZW5ndGgpKTtyZXR1cm59aWYoISFiZShmcixQZSkpe3ZhciBEZT1QZS5jaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oZnIpO2lmKCEhRGUpe3ZhciBncj1mci5wYXJlbnQ7aWYoIShlLmlzSW1wb3J0U3BlY2lmaWVyKGdyKSYmZ3IucHJvcGVydHlOYW1lPT09ZnIpKXtpZihlLmlzRXhwb3J0U3BlY2lmaWVyKGdyKSl7ZS5EZWJ1Zy5hc3NlcnQoZnIua2luZD09PTc5KSx1cihmcixEZSxncixNcixQZSxVZSk7cmV0dXJufXZhciBWcj1TcihNcixEZSxmcixQZSk7aWYoIVZyKXtVcihEZSxNcixQZSk7cmV0dXJufXN3aXRjaChQZS5zcGVjaWFsU2VhcmNoS2luZCl7Y2FzZSAwOlVlJiZpaShmcixWcixQZSk7YnJlYWs7Y2FzZSAxOm1pKGZyLE9lLE1yLFBlKTticmVhaztjYXNlIDI6cGUoZnIsTXIsUGUpO2JyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnROZXZlcihQZS5zcGVjaWFsU2VhcmNoS2luZCl9ZS5pc0luSlNGaWxlKGZyKSYmZnIucGFyZW50LmtpbmQ9PT0yMDMmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uSW5pdGlhbGl6ZWRUb0JhcmVPckFjY2Vzc2VkUmVxdWlyZShmci5wYXJlbnQpJiYoRGU9ZnIucGFyZW50LnN5bWJvbCwhRGUpfHx3cihmcixEZSxNcixQZSl9fX19ZnVuY3Rpb24gdXIoT2UsbnIsTXIsUGUsVWUsZnIsRGUpe2UuRGVidWcuYXNzZXJ0KCFEZXx8ISFVZS5vcHRpb25zLnByb3ZpZGVQcmVmaXhBbmRTdWZmaXhUZXh0Rm9yUmVuYW1lLFwiSWYgYWx3YXlzR2V0UmVmZXJlbmNlcyBpcyB0cnVlLCB0aGVuIHByZWZpeC9zdWZmaXggdGV4dCBtdXN0IGJlIGVuYWJsZWRcIik7dmFyIGdyPU1yLnBhcmVudCxWcj1Nci5wcm9wZXJ0eU5hbWUsVHI9TXIubmFtZSx2aT1nci5wYXJlbnQsVWk9eXIoT2UsbnIsTXIsVWUuY2hlY2tlcik7aWYoIURlJiYhUGUuaW5jbHVkZXMoVWkpKXJldHVybjtpZihWcj9PZT09PVZyPyh2aS5tb2R1bGVTcGVjaWZpZXJ8fE10KCksZnImJlVlLm9wdGlvbnMudXNlIT09MiYmVWUubWFya1NlZW5SZUV4cG9ydFJIUyhUcikmJmlpKFRyLGUuRGVidWcuY2hlY2tEZWZpbmVkKE1yLnN5bWJvbCksVWUpKTpVZS5tYXJrU2VlblJlRXhwb3J0UkhTKE9lKSYmTXQoKTpVZS5vcHRpb25zLnVzZT09PTImJlRyLmVzY2FwZWRUZXh0PT09XCJkZWZhdWx0XCJ8fE10KCksIUFyKFVlLm9wdGlvbnMpfHxEZSl7dmFyIFlpPU9lLm9yaWdpbmFsS2V5d29yZEtpbmQ9PT04OHx8TXIubmFtZS5vcmlnaW5hbEtleXdvcmRLaW5kPT09ODgsV2k9WWk/MTowLGN0PWUuRGVidWcuY2hlY2tEZWZpbmVkKE1yLnN5bWJvbCksTGk9Qy5nZXRFeHBvcnRJbmZvKGN0LFdpLFVlLmNoZWNrZXIpO0xpJiZ6ZShPZSxjdCxMaSxVZSl9aWYoUGUuY29taW5nRnJvbSE9PTEmJnZpLm1vZHVsZVNwZWNpZmllciYmIVZyJiYhQXIoVWUub3B0aW9ucykpe3ZhciBudD1VZS5jaGVja2VyLmdldEV4cG9ydFNwZWNpZmllckxvY2FsVGFyZ2V0U3ltYm9sKE1yKTtudCYmcnIobnQsVWUpfWZ1bmN0aW9uIE10KCl7ZnImJmlpKE9lLFVpLFVlKX19ZnVuY3Rpb24geXIoT2UsbnIsTXIsUGUpe3JldHVybiBJcihPZSxNcikmJlBlLmdldEV4cG9ydFNwZWNpZmllckxvY2FsVGFyZ2V0U3ltYm9sKE1yKXx8bnJ9ZnVuY3Rpb24gSXIoT2UsbnIpe3ZhciBNcj1uci5wYXJlbnQsUGU9bnIucHJvcGVydHlOYW1lLFVlPW5yLm5hbWU7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KFBlPT09T2V8fFVlPT09T2UpLFBlP1BlPT09T2U6IU1yLnBhcmVudC5tb2R1bGVTcGVjaWZpZXJ9ZnVuY3Rpb24gd3IoT2UsbnIsTXIsUGUpe3ZhciBVZT1DLmdldEltcG9ydE9yRXhwb3J0U3ltYm9sKE9lLG5yLFBlLmNoZWNrZXIsTXIuY29taW5nRnJvbT09PTEpO2lmKCEhVWUpe3ZhciBmcj1VZS5zeW1ib2w7VWUua2luZD09PTA/QXIoUGUub3B0aW9ucyl8fHJyKGZyLFBlKTp6ZShPZSxmcixVZS5leHBvcnRJbmZvLFBlKX19ZnVuY3Rpb24gVXIoT2UsbnIsTXIpe3ZhciBQZT1PZS5mbGFncyxVZT1PZS52YWx1ZURlY2xhcmF0aW9uLGZyPU1yLmNoZWNrZXIuZ2V0U2hvcnRoYW5kQXNzaWdubWVudFZhbHVlU3ltYm9sKFVlKSxEZT1VZSYmZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihVZSk7IShQZSYzMzU1NDQzMikmJkRlJiZuci5pbmNsdWRlcyhmcikmJmlpKERlLGZyLE1yKX1mdW5jdGlvbiBpaShPZSxucixNcil7dmFyIFBlPVwia2luZFwiaW4gbnI/bnI6e2tpbmQ6dm9pZCAwLHN5bWJvbDpucn0sVWU9UGUua2luZCxmcj1QZS5zeW1ib2w7aWYoIShNci5vcHRpb25zLnVzZT09PTImJk9lLmtpbmQ9PT04OCkpe3ZhciBEZT1Nci5yZWZlcmVuY2VBZGRlcihmcik7TXIub3B0aW9ucy5pbXBsZW1lbnRhdGlvbnM/WGkoT2UsRGUsTXIpOkRlKE9lLFVlKX19ZnVuY3Rpb24gbWkoT2UsbnIsTXIsUGUpe2UuaXNOZXdFeHByZXNzaW9uVGFyZ2V0KE9lKSYmaWkoT2UsTXIuc3ltYm9sLFBlKTt2YXIgVWU9ZnVuY3Rpb24oKXtyZXR1cm4gUGUucmVmZXJlbmNlQWRkZXIoTXIuc3ltYm9sKX07aWYoZS5pc0NsYXNzTGlrZShPZS5wYXJlbnQpKWUuRGVidWcuYXNzZXJ0KE9lLmtpbmQ9PT04OHx8T2UucGFyZW50Lm5hbWU9PT1PZSksb3IoTXIuc3ltYm9sLG5yLFVlKCkpO2Vsc2V7dmFyIGZyPXZyKE9lKTtmciYmKHNpKGZyLFVlKCkpLHdpKGZyLFBlKSl9fWZ1bmN0aW9uIHBlKE9lLG5yLE1yKXtpaShPZSxuci5zeW1ib2wsTXIpO3ZhciBQZT1PZS5wYXJlbnQ7aWYoIShNci5vcHRpb25zLnVzZT09PTJ8fCFlLmlzQ2xhc3NMaWtlKFBlKSkpe2UuRGVidWcuYXNzZXJ0KFBlLm5hbWU9PT1PZSk7Zm9yKHZhciBVZT1Nci5yZWZlcmVuY2VBZGRlcihuci5zeW1ib2wpLGZyPTAsRGU9UGUubWVtYmVycztmcjxEZS5sZW5ndGg7ZnIrKyl7dmFyIGdyPURlW2ZyXTshKGUuaXNNZXRob2RPckFjY2Vzc29yKGdyKSYmZS5pc1N0YXRpYyhncikpfHxnci5ib2R5JiZnci5ib2R5LmZvckVhY2hDaGlsZChmdW5jdGlvbiBWcihUcil7VHIua2luZD09PTEwOD9VZShUcik6IWUuaXNGdW5jdGlvbkxpa2UoVHIpJiYhZS5pc0NsYXNzTGlrZShUcikmJlRyLmZvckVhY2hDaGlsZChWcil9KX19fWZ1bmN0aW9uIG9yKE9lLG5yLE1yKXt2YXIgUGU9cXIoT2UpO2lmKFBlJiZQZS5kZWNsYXJhdGlvbnMpZm9yKHZhciBVZT0wLGZyPVBlLmRlY2xhcmF0aW9ucztVZTxmci5sZW5ndGg7VWUrKyl7dmFyIERlPWZyW1VlXSxncj1lLmZpbmRDaGlsZE9mS2luZChEZSwxMzQsbnIpO2UuRGVidWcuYXNzZXJ0KERlLmtpbmQ9PT0xNzEmJiEhZ3IpLE1yKGdyKX1PZS5leHBvcnRzJiZPZS5leHBvcnRzLmZvckVhY2goZnVuY3Rpb24oVnIpe3ZhciBUcj1Wci52YWx1ZURlY2xhcmF0aW9uO2lmKFRyJiZUci5raW5kPT09MTY5KXt2YXIgdmk9VHIuYm9keTt2aSYmeGUodmksMTA4LGZ1bmN0aW9uKFVpKXtlLmlzTmV3RXhwcmVzc2lvblRhcmdldChVaSkmJk1yKFVpKX0pfX0pfWZ1bmN0aW9uIHFyKE9lKXtyZXR1cm4gT2UubWVtYmVycyYmT2UubWVtYmVycy5nZXQoXCJfX2NvbnN0cnVjdG9yXCIpfWZ1bmN0aW9uIHNpKE9lLG5yKXt2YXIgTXI9cXIoT2Uuc3ltYm9sKTtpZighIShNciYmTXIuZGVjbGFyYXRpb25zKSlmb3IodmFyIFBlPTAsVWU9TXIuZGVjbGFyYXRpb25zO1BlPFVlLmxlbmd0aDtQZSsrKXt2YXIgZnI9VWVbUGVdO2UuRGVidWcuYXNzZXJ0KGZyLmtpbmQ9PT0xNzEpO3ZhciBEZT1mci5ib2R5O0RlJiZ4ZShEZSwxMDYsZnVuY3Rpb24oZ3Ipe2UuaXNDYWxsRXhwcmVzc2lvblRhcmdldChncikmJm5yKGdyKX0pfX1mdW5jdGlvbiBEaShPZSl7cmV0dXJuISFxcihPZS5zeW1ib2wpfWZ1bmN0aW9uIHdpKE9lLG5yKXtpZighRGkoT2UpKXt2YXIgTXI9T2Uuc3ltYm9sLFBlPW5yLmNyZWF0ZVNlYXJjaCh2b2lkIDAsTXIsdm9pZCAwKTtXZShNcixucixQZSl9fWZ1bmN0aW9uIFhpKE9lLG5yLE1yKXtpZihlLmlzRGVjbGFyYXRpb25OYW1lKE9lKSYmV3IoT2UucGFyZW50KSl7bnIoT2UpO3JldHVybn1pZihPZS5raW5kIT09NzkpcmV0dXJuO09lLnBhcmVudC5raW5kPT09Mjk3JiZKZShPZSxNci5jaGVja2VyLG5yKTt2YXIgUGU9ZXQoT2UpO2lmKFBlKXtucihQZSk7cmV0dXJufXZhciBVZT1lLmZpbmRBbmNlc3RvcihPZSxmdW5jdGlvbihWcil7cmV0dXJuIWUuaXNRdWFsaWZpZWROYW1lKFZyLnBhcmVudCkmJiFlLmlzVHlwZU5vZGUoVnIucGFyZW50KSYmIWUuaXNUeXBlRWxlbWVudChWci5wYXJlbnQpfSksZnI9VWUucGFyZW50O2lmKGUuaGFzVHlwZShmcikmJmZyLnR5cGU9PT1VZSYmTXIubWFya1NlZW5Db250YWluaW5nVHlwZVJlZmVyZW5jZShmcikpaWYoZS5oYXNJbml0aWFsaXplcihmcikpZ3IoZnIuaW5pdGlhbGl6ZXIpO2Vsc2UgaWYoZS5pc0Z1bmN0aW9uTGlrZShmcikmJmZyLmJvZHkpe3ZhciBEZT1mci5ib2R5O0RlLmtpbmQ9PT0yMzU/ZS5mb3JFYWNoUmV0dXJuU3RhdGVtZW50KERlLGZ1bmN0aW9uKFZyKXtWci5leHByZXNzaW9uJiZncihWci5leHByZXNzaW9uKX0pOmdyKERlKX1lbHNlIGUuaXNBc3NlcnRpb25FeHByZXNzaW9uKGZyKSYmZ3IoZnIuZXhwcmVzc2lvbik7ZnVuY3Rpb24gZ3IoVnIpe0dpKFZyKSYmbnIoVnIpfX1mdW5jdGlvbiBldChPZSl7cmV0dXJuIGUuaXNJZGVudGlmaWVyKE9lKXx8ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihPZSk/ZXQoT2UucGFyZW50KTplLmlzRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKE9lKT9lLnRyeUNhc3QoT2UucGFyZW50LnBhcmVudCxlLmlzQ2xhc3NMaWtlKTp2b2lkIDB9ZnVuY3Rpb24gR2koT2Upe3N3aXRjaChPZS5raW5kKXtjYXNlIDIxMjpyZXR1cm4gR2koT2UuZXhwcmVzc2lvbik7Y2FzZSAyMTQ6Y2FzZSAyMTM6Y2FzZSAyMDU6Y2FzZSAyMjY6Y2FzZSAyMDQ6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gV3QoT2UsbnIsTXIsUGUpe2lmKE9lPT09bnIpcmV0dXJuITA7dmFyIFVlPWUuZ2V0U3ltYm9sSWQoT2UpK1wiLFwiK2UuZ2V0U3ltYm9sSWQobnIpLGZyPU1yLmdldChVZSk7aWYoZnIhPT12b2lkIDApcmV0dXJuIGZyO01yLnNldChVZSwhMSk7dmFyIERlPSEhT2UuZGVjbGFyYXRpb25zJiZPZS5kZWNsYXJhdGlvbnMuc29tZShmdW5jdGlvbihncil7cmV0dXJuIGUuZ2V0QWxsU3VwZXJUeXBlTm9kZXMoZ3IpLnNvbWUoZnVuY3Rpb24oVnIpe3ZhciBUcj1QZS5nZXRUeXBlQXRMb2NhdGlvbihWcik7cmV0dXJuISFUciYmISFUci5zeW1ib2wmJld0KFRyLnN5bWJvbCxucixNcixQZSl9KX0pO3JldHVybiBNci5zZXQoVWUsRGUpLERlfWZ1bmN0aW9uIFp0KE9lKXt2YXIgbnI9ZS5nZXRTdXBlckNvbnRhaW5lcihPZSwhMSk7aWYoISFucil7dmFyIE1yPTMyO3N3aXRjaChuci5raW5kKXtjYXNlIDE2NzpjYXNlIDE2NjpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpNciY9ZS5nZXRTeW50YWN0aWNNb2RpZmllckZsYWdzKG5yKSxucj1uci5wYXJlbnQ7YnJlYWs7ZGVmYXVsdDpyZXR1cm59dmFyIFBlPW5yLmdldFNvdXJjZUZpbGUoKSxVZT1lLm1hcERlZmluZWQoaXIoUGUsXCJzdXBlclwiLG5yKSxmdW5jdGlvbihmcil7aWYoZnIua2luZD09PTEwNil7dmFyIERlPWUuZ2V0U3VwZXJDb250YWluZXIoZnIsITEpO3JldHVybiBEZSYmZS5pc1N0YXRpYyhEZSk9PT0hIU1yJiZEZS5wYXJlbnQuc3ltYm9sPT09bnIuc3ltYm9sP0UoZnIpOnZvaWQgMH19KTtyZXR1cm5be2RlZmluaXRpb246e3R5cGU6MCxzeW1ib2w6bnIuc3ltYm9sfSxyZWZlcmVuY2VzOlVlfV19fWZ1bmN0aW9uIF9yKE9lKXtyZXR1cm4gT2Uua2luZD09PTc5JiZPZS5wYXJlbnQua2luZD09PTE2NCYmT2UucGFyZW50Lm5hbWU9PT1PZX1mdW5jdGlvbiBwaShPZSxucixNcil7dmFyIFBlPWUuZ2V0VGhpc0NvbnRhaW5lcihPZSwhMSksVWU9MzI7c3dpdGNoKFBlLmtpbmQpe2Nhc2UgMTY5OmNhc2UgMTY4OmlmKGUuaXNPYmplY3RMaXRlcmFsTWV0aG9kKFBlKSl7VWUmPWUuZ2V0U3ludGFjdGljTW9kaWZpZXJGbGFncyhQZSksUGU9UGUucGFyZW50O2JyZWFrfWNhc2UgMTY3OmNhc2UgMTY2OmNhc2UgMTcxOmNhc2UgMTcyOmNhc2UgMTczOlVlJj1lLmdldFN5bnRhY3RpY01vZGlmaWVyRmxhZ3MoUGUpLFBlPVBlLnBhcmVudDticmVhaztjYXNlIDMwNTppZihlLmlzRXh0ZXJuYWxNb2R1bGUoUGUpfHxfcihPZSkpcmV0dXJuO2Nhc2UgMjU2OmNhc2UgMjEzOmJyZWFrO2RlZmF1bHQ6cmV0dXJufXZhciBmcj1lLmZsYXRNYXAoUGUua2luZD09PTMwNT9ucjpbUGUuZ2V0U291cmNlRmlsZSgpXSxmdW5jdGlvbihncil7cmV0dXJuIE1yLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKSxpcihncixcInRoaXNcIixlLmlzU291cmNlRmlsZShQZSk/Z3I6UGUpLmZpbHRlcihmdW5jdGlvbihWcil7aWYoIWUuaXNUaGlzKFZyKSlyZXR1cm4hMTt2YXIgVHI9ZS5nZXRUaGlzQ29udGFpbmVyKFZyLCExKTtzd2l0Y2goUGUua2luZCl7Y2FzZSAyMTM6Y2FzZSAyNTY6cmV0dXJuIFBlLnN5bWJvbD09PVRyLnN5bWJvbDtjYXNlIDE2OTpjYXNlIDE2ODpyZXR1cm4gZS5pc09iamVjdExpdGVyYWxNZXRob2QoUGUpJiZQZS5zeW1ib2w9PT1Uci5zeW1ib2w7Y2FzZSAyMjY6Y2FzZSAyNTc6Y2FzZSAyMDU6cmV0dXJuIFRyLnBhcmVudCYmUGUuc3ltYm9sPT09VHIucGFyZW50LnN5bWJvbCYmZS5pc1N0YXRpYyhUcik9PT0hIVVlO2Nhc2UgMzA1OnJldHVybiBUci5raW5kPT09MzA1JiYhZS5pc0V4dGVybmFsTW9kdWxlKFRyKSYmIV9yKFZyKX19KX0pLm1hcChmdW5jdGlvbihncil7cmV0dXJuIEUoZ3IpfSksRGU9ZS5maXJzdERlZmluZWQoZnIsZnVuY3Rpb24oZ3Ipe3JldHVybiBlLmlzUGFyYW1ldGVyKGdyLm5vZGUucGFyZW50KT9nci5ub2RlOnZvaWQgMH0pO3JldHVyblt7ZGVmaW5pdGlvbjp7dHlwZTozLG5vZGU6RGV8fE9lfSxyZWZlcmVuY2VzOmZyfV19ZnVuY3Rpb24gYWUoT2UsbnIsTXIsUGUpe3ZhciBVZT1lLmdldENvbnRleHR1YWxUeXBlRnJvbVBhcmVudE9yQW5jZXN0b3JUeXBlTm9kZShPZSxNciksZnI9ZS5mbGF0TWFwKG5yLGZ1bmN0aW9uKERlKXtyZXR1cm4gUGUudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLGUubWFwRGVmaW5lZChpcihEZSxPZS50ZXh0KSxmdW5jdGlvbihncil7aWYoZS5pc1N0cmluZ0xpdGVyYWxMaWtlKGdyKSYmZ3IudGV4dD09PU9lLnRleHQpaWYoVWUpe3ZhciBWcj1lLmdldENvbnRleHR1YWxUeXBlRnJvbVBhcmVudE9yQW5jZXN0b3JUeXBlTm9kZShncixNcik7aWYoVWUhPT1Nci5nZXRTdHJpbmdUeXBlKCkmJlVlPT09VnIpcmV0dXJuIEUoZ3IsMil9ZWxzZSByZXR1cm4gZS5pc05vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsKGdyKSYmIWUucmFuZ2VJc09uU2luZ2xlTGluZShncixEZSk/dm9pZCAwOkUoZ3IsMil9KX0pO3JldHVyblt7ZGVmaW5pdGlvbjp7dHlwZTo0LG5vZGU6T2V9LHJlZmVyZW5jZXM6ZnJ9XX1mdW5jdGlvbiBYZShPZSxucixNcixQZSxVZSxmcil7dmFyIERlPVtdO3JldHVybiBKcihPZSxucixNcixQZSwhKFBlJiZVZSksZnVuY3Rpb24oZ3IsVnIsVHIpe1RyJiZaZShPZSkhPT1aZShUcikmJihUcj12b2lkIDApLERlLnB1c2goVHJ8fFZyfHxncil9LGZ1bmN0aW9uKCl7cmV0dXJuIWZyfSksRGV9ZnVuY3Rpb24gSnIoT2UsbnIsTXIsUGUsVWUsZnIsRGUpe3ZhciBncj1lLmdldENvbnRhaW5pbmdPYmplY3RMaXRlcmFsRWxlbWVudChucik7aWYoZ3Ipe3ZhciBWcj1Nci5nZXRTaG9ydGhhbmRBc3NpZ25tZW50VmFsdWVTeW1ib2wobnIucGFyZW50KTtpZihWciYmUGUpcmV0dXJuIGZyKFZyLHZvaWQgMCx2b2lkIDAsMyk7dmFyIFRyPU1yLmdldENvbnRleHR1YWxUeXBlKGdyLnBhcmVudCksdmk9VHImJmUuZmlyc3REZWZpbmVkKGUuZ2V0UHJvcGVydHlTeW1ib2xzRnJvbUNvbnRleHR1YWxUeXBlKGdyLE1yLFRyLCEwKSxmdW5jdGlvbih1aSl7cmV0dXJuIEtpKHVpLDQpfSk7aWYodmkpcmV0dXJuIHZpO3ZhciBVaT1fZShucixNciksWWk9VWkmJmZyKFVpLHZvaWQgMCx2b2lkIDAsNCk7aWYoWWkpcmV0dXJuIFlpO3ZhciBXaT1WciYmZnIoVnIsdm9pZCAwLHZvaWQgMCwzKTtpZihXaSlyZXR1cm4gV2l9dmFyIGN0PUkobnIsT2UsTXIpO2lmKGN0KXt2YXIgTGk9ZnIoY3Qsdm9pZCAwLHZvaWQgMCwxKTtpZihMaSlyZXR1cm4gTGl9dmFyIG50PUtpKE9lKTtpZihudClyZXR1cm4gbnQ7aWYoT2UudmFsdWVEZWNsYXJhdGlvbiYmZS5pc1BhcmFtZXRlclByb3BlcnR5RGVjbGFyYXRpb24oT2UudmFsdWVEZWNsYXJhdGlvbixPZS52YWx1ZURlY2xhcmF0aW9uLnBhcmVudCkpe3ZhciBNdD1Nci5nZXRTeW1ib2xzT2ZQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKGUuY2FzdChPZS52YWx1ZURlY2xhcmF0aW9uLGUuaXNQYXJhbWV0ZXIpLE9lLm5hbWUpO3JldHVybiBlLkRlYnVnLmFzc2VydChNdC5sZW5ndGg9PT0yJiYhIShNdFswXS5mbGFncyYxKSYmISEoTXRbMV0uZmxhZ3MmNCkpLEtpKE9lLmZsYWdzJjE/TXRbMV06TXRbMF0pfXZhciB4dD1lLmdldERlY2xhcmF0aW9uT2ZLaW5kKE9lLDI3NSk7aWYoIVBlfHx4dCYmIXh0LnByb3BlcnR5TmFtZSl7dmFyIHV0PXh0JiZNci5nZXRFeHBvcnRTcGVjaWZpZXJMb2NhbFRhcmdldFN5bWJvbCh4dCk7aWYodXQpe3ZhciBEdD1mcih1dCx2b2lkIDAsdm9pZCAwLDEpO2lmKER0KXJldHVybiBEdH19aWYoIVBlKXt2YXIgUnQ9dm9pZCAwO3JldHVybiBVZT9SdD1lLmlzT2JqZWN0QmluZGluZ0VsZW1lbnRXaXRob3V0UHJvcGVydHlOYW1lKG5yLnBhcmVudCk/ZS5nZXRQcm9wZXJ0eVN5bWJvbEZyb21CaW5kaW5nRWxlbWVudChNcixuci5wYXJlbnQpOnZvaWQgMDpSdD1GaShPZSxNciksUnQmJktpKFJ0LDQpfWUuRGVidWcuYXNzZXJ0KFBlKTt2YXIgSWk9VWU7aWYoSWkpe3ZhciBSdD1GaShPZSxNcik7cmV0dXJuIFJ0JiZLaShSdCw0KX1mdW5jdGlvbiBLaSh1aSxCdCl7cmV0dXJuIGUuZmlyc3REZWZpbmVkKE1yLmdldFJvb3RTeW1ib2xzKHVpKSxmdW5jdGlvbih3dCl7cmV0dXJuIGZyKHVpLHd0LHZvaWQgMCxCdCl8fCh3dC5wYXJlbnQmJnd0LnBhcmVudC5mbGFncyY5NiYmRGUod3QpP3RpKHd0LnBhcmVudCx3dC5uYW1lLE1yLGZ1bmN0aW9uKG5hKXtyZXR1cm4gZnIodWksd3QsbmEsQnQpfSk6dm9pZCAwKX0pfWZ1bmN0aW9uIEZpKHVpLEJ0KXt2YXIgd3Q9ZS5nZXREZWNsYXJhdGlvbk9mS2luZCh1aSwyMDMpO2lmKHd0JiZlLmlzT2JqZWN0QmluZGluZ0VsZW1lbnRXaXRob3V0UHJvcGVydHlOYW1lKHd0KSlyZXR1cm4gZS5nZXRQcm9wZXJ0eVN5bWJvbEZyb21CaW5kaW5nRWxlbWVudChCdCx3dCl9fWZ1bmN0aW9uIHRpKE9lLG5yLE1yLFBlKXt2YXIgVWU9bmV3IGUuTWFwO3JldHVybiBmcihPZSk7ZnVuY3Rpb24gZnIoRGUpe2lmKCEoIShEZS5mbGFncyY5Nil8fCFlLmFkZFRvU2VlbihVZSxlLmdldFN5bWJvbElkKERlKSkpKXJldHVybiBlLmZpcnN0RGVmaW5lZChEZS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oZ3Ipe3JldHVybiBlLmZpcnN0RGVmaW5lZChlLmdldEFsbFN1cGVyVHlwZU5vZGVzKGdyKSxmdW5jdGlvbihWcil7dmFyIFRyPU1yLmdldFR5cGVBdExvY2F0aW9uKFZyKSx2aT1UciYmVHIuc3ltYm9sJiZNci5nZXRQcm9wZXJ0eU9mVHlwZShUcixucik7cmV0dXJuIFRyJiZ2aSYmKGUuZmlyc3REZWZpbmVkKE1yLmdldFJvb3RTeW1ib2xzKHZpKSxQZSl8fGZyKFRyLnN5bWJvbCkpfSl9KX19ZnVuY3Rpb24gWmUoT2Upe2lmKCFPZS52YWx1ZURlY2xhcmF0aW9uKXJldHVybiExO3ZhciBucj1lLmdldEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MoT2UudmFsdWVEZWNsYXJhdGlvbik7cmV0dXJuISEobnImMzIpfWZ1bmN0aW9uIFNyKE9lLG5yLE1yLFBlKXt2YXIgVWU9UGUuY2hlY2tlcjtyZXR1cm4gSnIobnIsTXIsVWUsITEsUGUub3B0aW9ucy51c2UhPT0yfHwhIVBlLm9wdGlvbnMucHJvdmlkZVByZWZpeEFuZFN1ZmZpeFRleHRGb3JSZW5hbWUsZnVuY3Rpb24oZnIsRGUsZ3IsVnIpe3JldHVybiBnciYmWmUobnIpIT09WmUoZ3IpJiYoZ3I9dm9pZCAwKSxPZS5pbmNsdWRlcyhncnx8RGV8fGZyKT97c3ltYm9sOkRlJiYhKGUuZ2V0Q2hlY2tGbGFncyhmcikmNik/RGU6ZnIsa2luZDpWcn06dm9pZCAwfSxmdW5jdGlvbihmcil7cmV0dXJuIShPZS5wYXJlbnRzJiYhT2UucGFyZW50cy5zb21lKGZ1bmN0aW9uKERlKXtyZXR1cm4gV3QoZnIucGFyZW50LERlLFBlLmluaGVyaXRzRnJvbUNhY2hlLFVlKX0pKX0pfWZ1bmN0aW9uIHpyKE9lLG5yKXt2YXIgTXI9ZS5nZXRNZWFuaW5nRnJvbUxvY2F0aW9uKE9lKSxQZT1uci5kZWNsYXJhdGlvbnM7aWYoUGUpe3ZhciBVZT12b2lkIDA7ZG97VWU9TXI7Zm9yKHZhciBmcj0wLERlPVBlO2ZyPERlLmxlbmd0aDtmcisrKXt2YXIgZ3I9RGVbZnJdLFZyPWUuZ2V0TWVhbmluZ0Zyb21EZWNsYXJhdGlvbihncik7VnImTXImJihNcnw9VnIpfX13aGlsZShNciE9PVVlKX1yZXR1cm4gTXJ9ay5nZXRJbnRlcnNlY3RpbmdNZWFuaW5nRnJvbURlY2xhcmF0aW9ucz16cjtmdW5jdGlvbiBXcihPZSl7cmV0dXJuIE9lLmZsYWdzJjE2Nzc3MjE2PyEoZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKE9lKXx8ZS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKE9lKSk6ZS5pc1ZhcmlhYmxlTGlrZShPZSk/ZS5oYXNJbml0aWFsaXplcihPZSk6ZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKE9lKT8hIU9lLmJvZHk6ZS5pc0NsYXNzTGlrZShPZSl8fGUuaXNNb2R1bGVPckVudW1EZWNsYXJhdGlvbihPZSl9ZnVuY3Rpb24gSmUoT2UsbnIsTXIpe3ZhciBQZT1uci5nZXRTeW1ib2xBdExvY2F0aW9uKE9lKSxVZT1uci5nZXRTaG9ydGhhbmRBc3NpZ25tZW50VmFsdWVTeW1ib2woUGUudmFsdWVEZWNsYXJhdGlvbik7aWYoVWUpZm9yKHZhciBmcj0wLERlPVVlLmdldERlY2xhcmF0aW9ucygpO2ZyPERlLmxlbmd0aDtmcisrKXt2YXIgZ3I9RGVbZnJdO2UuZ2V0TWVhbmluZ0Zyb21EZWNsYXJhdGlvbihncikmMSYmTXIoZ3IpfX1rLmdldFJlZmVyZW5jZUVudHJpZXNGb3JTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQ9SmU7ZnVuY3Rpb24geGUoT2UsbnIsTXIpe2UuZm9yRWFjaENoaWxkKE9lLGZ1bmN0aW9uKFBlKXtQZS5raW5kPT09bnImJk1yKFBlKSx4ZShQZSxucixNcil9KX1mdW5jdGlvbiB2cihPZSl7cmV0dXJuIGUudHJ5R2V0Q2xhc3NFeHRlbmRpbmdFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHMoZS5jbGltYlBhc3RQcm9wZXJ0eUFjY2VzcyhPZSkucGFyZW50KX1mdW5jdGlvbiBtcihPZSxucixNcil7dmFyIFBlPWUuaXNSaWdodFNpZGVPZlByb3BlcnR5QWNjZXNzKE9lKT9PZS5wYXJlbnQ6dm9pZCAwLFVlPVBlJiZNci5nZXRUeXBlQXRMb2NhdGlvbihQZS5leHByZXNzaW9uKSxmcj1lLm1hcERlZmluZWQoVWUmJihVZS5pc1VuaW9uT3JJbnRlcnNlY3Rpb24oKT9VZS50eXBlczpVZS5zeW1ib2w9PT1uci5wYXJlbnQ/dm9pZCAwOltVZV0pLGZ1bmN0aW9uKERlKXtyZXR1cm4gRGUuc3ltYm9sJiZEZS5zeW1ib2wuZmxhZ3MmOTY/RGUuc3ltYm9sOnZvaWQgMH0pO3JldHVybiBmci5sZW5ndGg9PT0wP3ZvaWQgMDpmcn1mdW5jdGlvbiBBcihPZSl7cmV0dXJuIE9lLnVzZT09PTImJk9lLnByb3ZpZGVQcmVmaXhBbmRTdWZmaXhUZXh0Rm9yUmVuYW1lfX0pKFA9Qy5Db3JlfHwoQy5Db3JlPXt9KSl9KShhPWUuRmluZEFsbFJlZmVyZW5jZXN8fChlLkZpbmRBbGxSZWZlcmVuY2VzPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyhMKXtyZXR1cm4oZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihMKXx8ZS5pc0NsYXNzRXhwcmVzc2lvbihMKSkmJmUuaXNOYW1lZERlY2xhcmF0aW9uKEwpfWZ1bmN0aW9uIEIoTCl7cmV0dXJuKGUuaXNGdW5jdGlvbkV4cHJlc3Npb24oTCl8fGUuaXNBcnJvd0Z1bmN0aW9uKEwpfHxlLmlzQ2xhc3NFeHByZXNzaW9uKEwpKSYmZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oTC5wYXJlbnQpJiZMPT09TC5wYXJlbnQuaW5pdGlhbGl6ZXImJmUuaXNJZGVudGlmaWVyKEwucGFyZW50Lm5hbWUpJiYhIShlLmdldENvbWJpbmVkTm9kZUZsYWdzKEwucGFyZW50KSYyKX1mdW5jdGlvbiBFKEwpe3JldHVybiBlLmlzU291cmNlRmlsZShMKXx8ZS5pc01vZHVsZURlY2xhcmF0aW9uKEwpfHxlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihMKXx8ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihMKXx8ZS5pc0NsYXNzRGVjbGFyYXRpb24oTCl8fGUuaXNDbGFzc0V4cHJlc3Npb24oTCl8fGUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oTCl8fGUuaXNNZXRob2REZWNsYXJhdGlvbihMKXx8ZS5pc01ldGhvZFNpZ25hdHVyZShMKXx8ZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oTCl8fGUuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKEwpfWZ1bmN0aW9uIFEoTCl7cmV0dXJuIGUuaXNTb3VyY2VGaWxlKEwpfHxlLmlzTW9kdWxlRGVjbGFyYXRpb24oTCkmJmUuaXNJZGVudGlmaWVyKEwubmFtZSl8fGUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKEwpfHxlLmlzQ2xhc3NEZWNsYXJhdGlvbihMKXx8ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihMKXx8ZS5pc01ldGhvZERlY2xhcmF0aW9uKEwpfHxlLmlzTWV0aG9kU2lnbmF0dXJlKEwpfHxlLmlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbihMKXx8ZS5pc1NldEFjY2Vzc29yRGVjbGFyYXRpb24oTCl8fHcoTCl8fEIoTCl9ZnVuY3Rpb24gbGUoTCl7cmV0dXJuIGUuaXNTb3VyY2VGaWxlKEwpP0w6ZS5pc05hbWVkRGVjbGFyYXRpb24oTCk/TC5uYW1lOkIoTCk/TC5wYXJlbnQubmFtZTplLkRlYnVnLmNoZWNrRGVmaW5lZChMLm1vZGlmaWVycyYmZS5maW5kKEwubW9kaWZpZXJzLE4pKX1mdW5jdGlvbiBOKEwpe3JldHVybiBMLmtpbmQ9PT04OH1mdW5jdGlvbiBwKEwsUCl7dmFyIGs9bGUoUCk7cmV0dXJuIGsmJkwuZ2V0U3ltYm9sQXRMb2NhdGlvbihrKX1mdW5jdGlvbiBtKEwsUCl7aWYoZS5pc1NvdXJjZUZpbGUoUCkpcmV0dXJue3RleHQ6UC5maWxlTmFtZSxwb3M6MCxlbmQ6MH07aWYoKGUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKFApfHxlLmlzQ2xhc3NEZWNsYXJhdGlvbihQKSkmJiFlLmlzTmFtZWREZWNsYXJhdGlvbihQKSl7dmFyIGs9UC5tb2RpZmllcnMmJmUuZmluZChQLm1vZGlmaWVycyxOKTtpZihrKXJldHVybnt0ZXh0OlwiZGVmYXVsdFwiLHBvczprLmdldFN0YXJ0KCksZW5kOmsuZ2V0RW5kKCl9fWlmKGUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oUCkpe3ZhciBZPVAuZ2V0U291cmNlRmlsZSgpLFU9ZS5za2lwVHJpdmlhKFkudGV4dCxlLm1vdmVSYW5nZVBhc3RNb2RpZmllcnMoUCkucG9zKSxqPVUrNixIPUwuZ2V0VHlwZUNoZWNrZXIoKSxJPUguZ2V0U3ltYm9sQXRMb2NhdGlvbihQLnBhcmVudCksbD1JP1wiXCIuY29uY2F0KEguc3ltYm9sVG9TdHJpbmcoSSxQLnBhcmVudCksXCIgXCIpOlwiXCI7cmV0dXJue3RleHQ6XCJcIi5jb25jYXQobCxcInN0YXRpYyB7fVwiKSxwb3M6VSxlbmQ6an19dmFyIGQ9QihQKT9QLnBhcmVudC5uYW1lOmUuRGVidWcuY2hlY2tEZWZpbmVkKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oUCksXCJFeHBlY3RlZCBjYWxsIGhpZXJhcmNoeSBpdGVtIHRvIGhhdmUgYSBuYW1lXCIpLEQ9ZS5pc0lkZW50aWZpZXIoZCk/ZS5pZFRleHQoZCk6ZS5pc1N0cmluZ09yTnVtZXJpY0xpdGVyYWxMaWtlKGQpP2QudGV4dDplLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoZCkmJmUuaXNTdHJpbmdPck51bWVyaWNMaXRlcmFsTGlrZShkLmV4cHJlc3Npb24pP2QuZXhwcmVzc2lvbi50ZXh0OnZvaWQgMDtpZihEPT09dm9pZCAwKXt2YXIgSD1MLmdldFR5cGVDaGVja2VyKCksST1ILmdldFN5bWJvbEF0TG9jYXRpb24oZCk7SSYmKEQ9SC5zeW1ib2xUb1N0cmluZyhJLFApKX1pZihEPT09dm9pZCAwKXt2YXIgZmU9ZS5jcmVhdGVQcmludGVyKHtyZW1vdmVDb21tZW50czohMCxvbWl0VHJhaWxpbmdTZW1pY29sb246ITB9KTtEPWUudXNpbmdTaW5nbGVMaW5lU3RyaW5nV3JpdGVyKGZ1bmN0aW9uKGcpe3JldHVybiBmZS53cml0ZU5vZGUoNCxQLFAuZ2V0U291cmNlRmlsZSgpLGcpfSl9cmV0dXJue3RleHQ6RCxwb3M6ZC5nZXRTdGFydCgpLGVuZDpkLmdldEVuZCgpfX1mdW5jdGlvbiBHKEwpe3ZhciBQLGs7aWYoQihMKSlyZXR1cm4gZS5pc01vZHVsZUJsb2NrKEwucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50KSYmZS5pc0lkZW50aWZpZXIoTC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lm5hbWUpP0wucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5uYW1lLmdldFRleHQoKTp2b2lkIDA7c3dpdGNoKEwua2luZCl7Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxNjk6cmV0dXJuIEwucGFyZW50LmtpbmQ9PT0yMDU/KFA9ZS5nZXRBc3NpZ25lZE5hbWUoTC5wYXJlbnQpKT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAuZ2V0VGV4dCgpOihrPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oTC5wYXJlbnQpKT09PW51bGx8fGs9PT12b2lkIDA/dm9pZCAwOmsuZ2V0VGV4dCgpO2Nhc2UgMjU2OmNhc2UgMjU3OmNhc2UgMjYxOmlmKGUuaXNNb2R1bGVCbG9jayhMLnBhcmVudCkmJmUuaXNJZGVudGlmaWVyKEwucGFyZW50LnBhcmVudC5uYW1lKSlyZXR1cm4gTC5wYXJlbnQucGFyZW50Lm5hbWUuZ2V0VGV4dCgpfX1mdW5jdGlvbiBvZShMLFApe2lmKFAuYm9keSlyZXR1cm4gUDtpZihlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihQKSlyZXR1cm4gZS5nZXRGaXJzdENvbnN0cnVjdG9yV2l0aEJvZHkoUC5wYXJlbnQpO2lmKGUuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKFApfHxlLmlzTWV0aG9kRGVjbGFyYXRpb24oUCkpe3ZhciBrPXAoTCxQKTtyZXR1cm4gayYmay52YWx1ZURlY2xhcmF0aW9uJiZlLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oay52YWx1ZURlY2xhcmF0aW9uKSYmay52YWx1ZURlY2xhcmF0aW9uLmJvZHk/ay52YWx1ZURlY2xhcmF0aW9uOnZvaWQgMH1yZXR1cm4gUH1mdW5jdGlvbiBmKEwsUCl7dmFyIGs9cChMLFApLFk7aWYoayYmay5kZWNsYXJhdGlvbnMpe3ZhciBVPWUuaW5kaWNlc09mKGsuZGVjbGFyYXRpb25zKSxqPWUubWFwKGsuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGZlKXtyZXR1cm57ZmlsZTpmZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUscG9zOmZlLnBvc319KTtVLnNvcnQoZnVuY3Rpb24oZmUsZyl7cmV0dXJuIGUuY29tcGFyZVN0cmluZ3NDYXNlU2Vuc2l0aXZlKGpbZmVdLmZpbGUsaltnXS5maWxlKXx8altmZV0ucG9zLWpbZ10ucG9zfSk7Zm9yKHZhciBIPWUubWFwKFUsZnVuY3Rpb24oZmUpe3JldHVybiBrLmRlY2xhcmF0aW9uc1tmZV19KSxJPXZvaWQgMCxsPTAsZD1IO2w8ZC5sZW5ndGg7bCsrKXt2YXIgRD1kW2xdO1EoRCkmJigoIUl8fEkucGFyZW50IT09RC5wYXJlbnR8fEkuZW5kIT09RC5wb3MpJiYoWT1lLmFwcGVuZChZLEQpKSxJPUQpfX1yZXR1cm4gWX1mdW5jdGlvbiBUKEwsUCl7dmFyIGssWSxVO3JldHVybiBlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKFApP1A6ZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKFApPyhZPShrPW9lKEwsUCkpIT09bnVsbCYmayE9PXZvaWQgMD9rOmYoTCxQKSkhPT1udWxsJiZZIT09dm9pZCAwP1k6UDooVT1mKEwsUCkpIT09bnVsbCYmVSE9PXZvaWQgMD9VOlB9ZnVuY3Rpb24gSyhMLFApe2Zvcih2YXIgaz1MLmdldFR5cGVDaGVja2VyKCksWT0hMTs7KXtpZihRKFApKXJldHVybiBUKGssUCk7aWYoRShQKSl7dmFyIFU9ZS5maW5kQW5jZXN0b3IoUCxRKTtyZXR1cm4gVSYmVChrLFUpfWlmKGUuaXNEZWNsYXJhdGlvbk5hbWUoUCkpe2lmKFEoUC5wYXJlbnQpKXJldHVybiBUKGssUC5wYXJlbnQpO2lmKEUoUC5wYXJlbnQpKXt2YXIgVT1lLmZpbmRBbmNlc3RvcihQLnBhcmVudCxRKTtyZXR1cm4gVSYmVChrLFUpfXJldHVybiBlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihQLnBhcmVudCkmJlAucGFyZW50LmluaXRpYWxpemVyJiZCKFAucGFyZW50LmluaXRpYWxpemVyKT9QLnBhcmVudC5pbml0aWFsaXplcjp2b2lkIDB9aWYoZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oUCkpcmV0dXJuIFEoUC5wYXJlbnQpP1AucGFyZW50OnZvaWQgMDtpZihQLmtpbmQ9PT0xMjQmJmUuaXNDbGFzc1N0YXRpY0Jsb2NrRGVjbGFyYXRpb24oUC5wYXJlbnQpKXtQPVAucGFyZW50O2NvbnRpbnVlfWlmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKFApJiZQLmluaXRpYWxpemVyJiZCKFAuaW5pdGlhbGl6ZXIpKXJldHVybiBQLmluaXRpYWxpemVyO2lmKCFZKXt2YXIgaj1rLmdldFN5bWJvbEF0TG9jYXRpb24oUCk7aWYoaiYmKGouZmxhZ3MmMjA5NzE1MiYmKGo9ay5nZXRBbGlhc2VkU3ltYm9sKGopKSxqLnZhbHVlRGVjbGFyYXRpb24pKXtZPSEwLFA9ai52YWx1ZURlY2xhcmF0aW9uO2NvbnRpbnVlfX1yZXR1cm59fUMucmVzb2x2ZUNhbGxIaWVyYXJjaHlEZWNsYXJhdGlvbj1LO2Z1bmN0aW9uIGIoTCxQKXt2YXIgaz1QLmdldFNvdXJjZUZpbGUoKSxZPW0oTCxQKSxVPUcoUCksaj1lLmdldE5vZGVLaW5kKFApLEg9ZS5nZXROb2RlTW9kaWZpZXJzKFApLEk9ZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMoZS5za2lwVHJpdmlhKGsudGV4dCxQLmdldEZ1bGxTdGFydCgpLCExLCEwKSxQLmdldEVuZCgpKSxsPWUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKFkucG9zLFkuZW5kKTtyZXR1cm57ZmlsZTprLmZpbGVOYW1lLGtpbmQ6aixraW5kTW9kaWZpZXJzOkgsbmFtZTpZLnRleHQsY29udGFpbmVyTmFtZTpVLHNwYW46SSxzZWxlY3Rpb25TcGFuOmx9fUMuY3JlYXRlQ2FsbEhpZXJhcmNoeUl0ZW09YjtmdW5jdGlvbiBzZShMKXtyZXR1cm4gTCE9PXZvaWQgMH1mdW5jdGlvbiBKKEwpe2lmKEwua2luZD09PTEpe3ZhciBQPUwubm9kZTtpZihlLmlzQ2FsbE9yTmV3RXhwcmVzc2lvblRhcmdldChQLCEwLCEwKXx8ZS5pc1RhZ2dlZFRlbXBsYXRlVGFnKFAsITAsITApfHxlLmlzRGVjb3JhdG9yVGFyZ2V0KFAsITAsITApfHxlLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50VGFnTmFtZShQLCEwLCEwKXx8ZS5pc1JpZ2h0U2lkZU9mUHJvcGVydHlBY2Nlc3MoUCl8fGUuaXNBcmd1bWVudEV4cHJlc3Npb25PZkVsZW1lbnRBY2Nlc3MoUCkpe3ZhciBrPVAuZ2V0U291cmNlRmlsZSgpLFk9ZS5maW5kQW5jZXN0b3IoUCxRKXx8aztyZXR1cm57ZGVjbGFyYXRpb246WSxyYW5nZTplLmNyZWF0ZVRleHRSYW5nZUZyb21Ob2RlKFAsayl9fX19ZnVuY3Rpb24gaWUoTCl7cmV0dXJuIGUuZ2V0Tm9kZUlkKEwuZGVjbGFyYXRpb24pfWZ1bmN0aW9uIFIoTCxQKXtyZXR1cm57ZnJvbTpMLGZyb21TcGFuczpQfX1mdW5jdGlvbiBxKEwsUCl7cmV0dXJuIFIoYihMLFBbMF0uZGVjbGFyYXRpb24pLGUubWFwKFAsZnVuY3Rpb24oayl7cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tUmFuZ2Uoay5yYW5nZSl9KSl9ZnVuY3Rpb24gTyhMLFAsayl7aWYoZS5pc1NvdXJjZUZpbGUoUCl8fGUuaXNNb2R1bGVEZWNsYXJhdGlvbihQKXx8ZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihQKSlyZXR1cm5bXTt2YXIgWT1sZShQKSxVPWUuZmlsdGVyKGUuRmluZEFsbFJlZmVyZW5jZXMuZmluZFJlZmVyZW5jZU9yUmVuYW1lRW50cmllcyhMLGssTC5nZXRTb3VyY2VGaWxlcygpLFksMCx7dXNlOjF9LEopLHNlKTtyZXR1cm4gVT9lLmdyb3VwKFUsaWUsZnVuY3Rpb24oail7cmV0dXJuIHEoTCxqKX0pOltdfUMuZ2V0SW5jb21pbmdDYWxscz1PO2Z1bmN0aW9uIHZlKEwsUCl7ZnVuY3Rpb24gayhVKXt2YXIgaj1lLmlzVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKFUpP1UudGFnOmUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQoVSk/VS50YWdOYW1lOmUuaXNBY2Nlc3NFeHByZXNzaW9uKFUpfHxlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKFUpP1U6VS5leHByZXNzaW9uLEg9SyhMLGopO2lmKEgpe3ZhciBJPWUuY3JlYXRlVGV4dFJhbmdlRnJvbU5vZGUoaixVLmdldFNvdXJjZUZpbGUoKSk7aWYoZS5pc0FycmF5KEgpKWZvcih2YXIgbD0wLGQ9SDtsPGQubGVuZ3RoO2wrKyl7dmFyIEQ9ZFtsXTtQLnB1c2goe2RlY2xhcmF0aW9uOkQscmFuZ2U6SX0pfWVsc2UgUC5wdXNoKHtkZWNsYXJhdGlvbjpILHJhbmdlOkl9KX19ZnVuY3Rpb24gWShVKXtpZighIVUmJiEoVS5mbGFncyYxNjc3NzIxNikpe2lmKFEoVSkpe2lmKGUuaXNDbGFzc0xpa2UoVSkpZm9yKHZhciBqPTAsSD1VLm1lbWJlcnM7ajxILmxlbmd0aDtqKyspe3ZhciBJPUhbal07SS5uYW1lJiZlLmlzQ29tcHV0ZWRQcm9wZXJ0eU5hbWUoSS5uYW1lKSYmWShJLm5hbWUuZXhwcmVzc2lvbil9cmV0dXJufXN3aXRjaChVLmtpbmQpe2Nhc2UgNzk6Y2FzZSAyNjU6Y2FzZSAyNjY6Y2FzZSAyNzI6Y2FzZSAyNTg6Y2FzZSAyNTk6cmV0dXJuO2Nhc2UgMTcwOmsoVSk7cmV0dXJuO2Nhc2UgMjExOmNhc2UgMjI5OlkoVS5leHByZXNzaW9uKTtyZXR1cm47Y2FzZSAyNTQ6Y2FzZSAxNjQ6WShVLm5hbWUpLFkoVS5pbml0aWFsaXplcik7cmV0dXJuO2Nhc2UgMjA4OmsoVSksWShVLmV4cHJlc3Npb24pLGUuZm9yRWFjaChVLmFyZ3VtZW50cyxZKTtyZXR1cm47Y2FzZSAyMDk6ayhVKSxZKFUuZXhwcmVzc2lvbiksZS5mb3JFYWNoKFUuYXJndW1lbnRzLFkpO3JldHVybjtjYXNlIDIxMDprKFUpLFkoVS50YWcpLFkoVS50ZW1wbGF0ZSk7cmV0dXJuO2Nhc2UgMjgwOmNhc2UgMjc5OmsoVSksWShVLnRhZ05hbWUpLFkoVS5hdHRyaWJ1dGVzKTtyZXR1cm47Y2FzZSAxNjU6ayhVKSxZKFUuZXhwcmVzc2lvbik7cmV0dXJuO2Nhc2UgMjA2OmNhc2UgMjA3OmsoVSksZS5mb3JFYWNoQ2hpbGQoVSxZKTticmVha31lLmlzUGFydE9mVHlwZU5vZGUoVSl8fGUuZm9yRWFjaENoaWxkKFUsWSl9fXJldHVybiBZfWZ1bmN0aW9uIGVlKEwsUCl7ZS5mb3JFYWNoKEwuc3RhdGVtZW50cyxQKX1mdW5jdGlvbiBoZShMLFApeyFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKEwsMikmJkwuYm9keSYmZS5pc01vZHVsZUJsb2NrKEwuYm9keSkmJmUuZm9yRWFjaChMLmJvZHkuc3RhdGVtZW50cyxQKX1mdW5jdGlvbiBGKEwsUCxrKXt2YXIgWT1vZShMLFApO1kmJihlLmZvckVhY2goWS5wYXJhbWV0ZXJzLGspLGsoWS5ib2R5KSl9ZnVuY3Rpb24geChMLFApe1AoTC5ib2R5KX1mdW5jdGlvbiBYKEwsUCl7ZS5mb3JFYWNoKEwuZGVjb3JhdG9ycyxQKTt2YXIgaz1lLmdldENsYXNzRXh0ZW5kc0hlcml0YWdlRWxlbWVudChMKTtrJiZQKGsuZXhwcmVzc2lvbik7Zm9yKHZhciBZPTAsVT1MLm1lbWJlcnM7WTxVLmxlbmd0aDtZKyspe3ZhciBqPVVbWV07ZS5mb3JFYWNoKGouZGVjb3JhdG9ycyxQKSxlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihqKT9QKGouaW5pdGlhbGl6ZXIpOmUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKGopJiZqLmJvZHk/KGUuZm9yRWFjaChqLnBhcmFtZXRlcnMsUCksUChqLmJvZHkpKTplLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKGopJiZQKGopfX1mdW5jdGlvbiAkKEwsUCl7dmFyIGs9W10sWT12ZShMLGspO3N3aXRjaChQLmtpbmQpe2Nhc2UgMzA1OmVlKFAsWSk7YnJlYWs7Y2FzZSAyNjE6aGUoUCxZKTticmVhaztjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpGKEwuZ2V0VHlwZUNoZWNrZXIoKSxQLFkpO2JyZWFrO2Nhc2UgMjU3OmNhc2UgMjI2OlgoUCxZKTticmVhaztjYXNlIDE3MDp4KFAsWSk7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKFApfXJldHVybiBrfWZ1bmN0aW9uIEEoTCxQKXtyZXR1cm57dG86TCxmcm9tU3BhbnM6UH19ZnVuY3Rpb24geShMLFApe3JldHVybiBBKGIoTCxQWzBdLmRlY2xhcmF0aW9uKSxlLm1hcChQLGZ1bmN0aW9uKGspe3JldHVybiBlLmNyZWF0ZVRleHRTcGFuRnJvbVJhbmdlKGsucmFuZ2UpfSkpfWZ1bmN0aW9uIFYoTCxQKXtyZXR1cm4gUC5mbGFncyYxNjc3NzIxNnx8ZS5pc01ldGhvZFNpZ25hdHVyZShQKT9bXTplLmdyb3VwKCQoTCxQKSxpZSxmdW5jdGlvbihrKXtyZXR1cm4geShMLGspfSl9Qy5nZXRPdXRnb2luZ0NhbGxzPVZ9KShhPWUuQ2FsbEhpZXJhcmNoeXx8KGUuQ2FsbEhpZXJhcmNoeT17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShmLFQsSyxiLHNlLEosaWUpe3ZhciBSPWUuaG9zdFVzZXNDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKGIpLHE9ZS5jcmVhdGVHZXRDYW5vbmljYWxGaWxlTmFtZShSKSxPPUMoVCxLLHEsaWUpLHZlPUMoSyxULHEsaWUpO3JldHVybiBlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh7aG9zdDpiLGZvcm1hdENvbnRleHQ6c2UscHJlZmVyZW5jZXM6Sn0sZnVuY3Rpb24oZWUpe0IoZixlZSxPLFQsSyxiLmdldEN1cnJlbnREaXJlY3RvcnkoKSxSKSxFKGYsZWUsTyx2ZSxiLHEpfSl9ZS5nZXRFZGl0c0ZvckZpbGVSZW5hbWU9YTtmdW5jdGlvbiBDKGYsVCxLLGIpe3ZhciBzZT1LKGYpO3JldHVybiBmdW5jdGlvbihpZSl7dmFyIFI9YiYmYi50cnlHZXRTb3VyY2VQb3NpdGlvbih7ZmlsZU5hbWU6aWUscG9zOjB9KSxxPUooUj9SLmZpbGVOYW1lOmllKTtyZXR1cm4gUj9xPT09dm9pZCAwP3ZvaWQgMDp3KFIuZmlsZU5hbWUscSxpZSxLKTpxfTtmdW5jdGlvbiBKKGllKXtpZihLKGllKT09PXNlKXJldHVybiBUO3ZhciBSPWUudHJ5UmVtb3ZlRGlyZWN0b3J5UHJlZml4KGllLHNlLEspO3JldHVybiBSPT09dm9pZCAwP3ZvaWQgMDpUK1wiL1wiK1J9fWUuZ2V0UGF0aFVwZGF0ZXI9QztmdW5jdGlvbiB3KGYsVCxLLGIpe3ZhciBzZT1lLmdldFJlbGF0aXZlUGF0aEZyb21GaWxlKGYsVCxiKTtyZXR1cm4gbGUoZS5nZXREaXJlY3RvcnlQYXRoKEspLHNlKX1mdW5jdGlvbiBCKGYsVCxLLGIsc2UsSixpZSl7dmFyIFI9Zi5nZXRDb21waWxlck9wdGlvbnMoKS5jb25maWdGaWxlO2lmKCFSKXJldHVybjt2YXIgcT1lLmdldERpcmVjdG9yeVBhdGgoUi5maWxlTmFtZSksTz1lLmdldFRzQ29uZmlnT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oUik7aWYoIU8pcmV0dXJuO29lKE8sZnVuY3Rpb24oRix4KXtzd2l0Y2goeCl7Y2FzZVwiZmlsZXNcIjpjYXNlXCJpbmNsdWRlXCI6Y2FzZVwiZXhjbHVkZVwiOnt2YXIgWD12ZShGKTtpZihYfHx4IT09XCJpbmNsdWRlXCJ8fCFlLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihGLmluaXRpYWxpemVyKSlyZXR1cm47dmFyICQ9ZS5tYXBEZWZpbmVkKEYuaW5pdGlhbGl6ZXIuZWxlbWVudHMsZnVuY3Rpb24oeSl7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsKHkpP3kudGV4dDp2b2lkIDB9KTtpZigkLmxlbmd0aD09PTApcmV0dXJuO3ZhciBBPWUuZ2V0RmlsZU1hdGNoZXJQYXR0ZXJucyhxLFtdLCQsaWUsSik7ZS5nZXRSZWdleEZyb21QYXR0ZXJuKGUuRGVidWcuY2hlY2tEZWZpbmVkKEEuaW5jbHVkZUZpbGVQYXR0ZXJuKSxpZSkudGVzdChiKSYmIWUuZ2V0UmVnZXhGcm9tUGF0dGVybihlLkRlYnVnLmNoZWNrRGVmaW5lZChBLmluY2x1ZGVGaWxlUGF0dGVybiksaWUpLnRlc3Qoc2UpJiZULmluc2VydE5vZGVBZnRlcihSLGUubGFzdChGLmluaXRpYWxpemVyLmVsZW1lbnRzKSxlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChoZShzZSkpKTtyZXR1cm59Y2FzZVwiY29tcGlsZXJPcHRpb25zXCI6b2UoRi5pbml0aWFsaXplcixmdW5jdGlvbih5LFYpe3ZhciBMPWUuZ2V0T3B0aW9uRnJvbU5hbWUoVik7TCYmKEwuaXNGaWxlUGF0aHx8TC50eXBlPT09XCJsaXN0XCImJkwuZWxlbWVudC5pc0ZpbGVQYXRoKT92ZSh5KTpWPT09XCJwYXRoc1wiJiZvZSh5LmluaXRpYWxpemVyLGZ1bmN0aW9uKFApe2lmKCEhZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oUC5pbml0aWFsaXplcikpZm9yKHZhciBrPTAsWT1QLmluaXRpYWxpemVyLmVsZW1lbnRzO2s8WS5sZW5ndGg7aysrKXt2YXIgVT1ZW2tdO2VlKFUpfX0pfSk7cmV0dXJufX0pO2Z1bmN0aW9uIHZlKEYpe2Zvcih2YXIgeD1lLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihGLmluaXRpYWxpemVyKT9GLmluaXRpYWxpemVyLmVsZW1lbnRzOltGLmluaXRpYWxpemVyXSxYPSExLCQ9MCxBPXg7JDxBLmxlbmd0aDskKyspe3ZhciB5PUFbJF07WD1lZSh5KXx8WH1yZXR1cm4gWH1mdW5jdGlvbiBlZShGKXtpZighZS5pc1N0cmluZ0xpdGVyYWwoRikpcmV0dXJuITE7dmFyIHg9bGUocSxGLnRleHQpLFg9Syh4KTtyZXR1cm4gWCE9PXZvaWQgMD8oVC5yZXBsYWNlUmFuZ2VXaXRoVGV4dChSLEcoRixSKSxoZShYKSksITApOiExfWZ1bmN0aW9uIGhlKEYpe3JldHVybiBlLmdldFJlbGF0aXZlUGF0aEZyb21EaXJlY3RvcnkocSxGLCFpZSl9fWZ1bmN0aW9uIEUoZixULEssYixzZSxKKXtmb3IodmFyIGllPWYuZ2V0U291cmNlRmlsZXMoKSxSPWZ1bmN0aW9uKGVlKXt2YXIgaGU9SyhlZS5maWxlTmFtZSksRj1oZSE9bnVsbD9oZTplZS5maWxlTmFtZSx4PWUuZ2V0RGlyZWN0b3J5UGF0aChGKSxYPWIoZWUuZmlsZU5hbWUpLCQ9WHx8ZWUuZmlsZU5hbWUsQT1lLmdldERpcmVjdG9yeVBhdGgoJCkseT1oZSE9PXZvaWQgMHx8WCE9PXZvaWQgMDttKGVlLFQsZnVuY3Rpb24oVil7aWYoISFlLnBhdGhJc1JlbGF0aXZlKFYpKXt2YXIgTD1sZShBLFYpLFA9SyhMKTtyZXR1cm4gUD09PXZvaWQgMD92b2lkIDA6ZS5lbnN1cmVQYXRoSXNOb25Nb2R1bGVOYW1lKGUuZ2V0UmVsYXRpdmVQYXRoRnJvbURpcmVjdG9yeSh4LFAsSikpfX0sZnVuY3Rpb24oVil7dmFyIEw9Zi5nZXRUeXBlQ2hlY2tlcigpLmdldFN5bWJvbEF0TG9jYXRpb24oVik7aWYoISgoTD09bnVsbD92b2lkIDA6TC5kZWNsYXJhdGlvbnMpJiZMLmRlY2xhcmF0aW9ucy5zb21lKGZ1bmN0aW9uKGspe3JldHVybiBlLmlzQW1iaWVudE1vZHVsZShrKX0pKSl7dmFyIFA9WCE9PXZvaWQgMD9wKFYsZS5yZXNvbHZlTW9kdWxlTmFtZShWLnRleHQsJCxmLmdldENvbXBpbGVyT3B0aW9ucygpLHNlKSxLLGllKTpOKEwsVixlZSxmLHNlLEspO3JldHVybiBQIT09dm9pZCAwJiYoUC51cGRhdGVkfHx5JiZlLnBhdGhJc1JlbGF0aXZlKFYudGV4dCkpP2UubW9kdWxlU3BlY2lmaWVycy51cGRhdGVNb2R1bGVTcGVjaWZpZXIoZi5nZXRDb21waWxlck9wdGlvbnMoKSxlZSxKKEYpLFAubmV3RmlsZU5hbWUsZS5jcmVhdGVNb2R1bGVTcGVjaWZpZXJSZXNvbHV0aW9uSG9zdChmLHNlKSxWLnRleHQpOnZvaWQgMH19KX0scT0wLE89aWU7cTxPLmxlbmd0aDtxKyspe3ZhciB2ZT1PW3FdO1IodmUpfX1mdW5jdGlvbiBRKGYsVCl7cmV0dXJuIGUubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyhmLFQpKX1mdW5jdGlvbiBsZShmLFQpe3JldHVybiBlLmVuc3VyZVBhdGhJc05vbk1vZHVsZU5hbWUoUShmLFQpKX1mdW5jdGlvbiBOKGYsVCxLLGIsc2UsSil7aWYoZil7dmFyIGllPWUuZmluZChmLmRlY2xhcmF0aW9ucyxlLmlzU291cmNlRmlsZSkuZmlsZU5hbWUsUj1KKGllKTtyZXR1cm4gUj09PXZvaWQgMD97bmV3RmlsZU5hbWU6aWUsdXBkYXRlZDohMX06e25ld0ZpbGVOYW1lOlIsdXBkYXRlZDohMH19ZWxzZXt2YXIgcT1lLmdldE1vZGVGb3JVc2FnZUxvY2F0aW9uKEssVCksTz1zZS5yZXNvbHZlTW9kdWxlTmFtZXM/c2UuZ2V0UmVzb2x2ZWRNb2R1bGVXaXRoRmFpbGVkTG9va3VwTG9jYXRpb25zRnJvbUNhY2hlJiZzZS5nZXRSZXNvbHZlZE1vZHVsZVdpdGhGYWlsZWRMb29rdXBMb2NhdGlvbnNGcm9tQ2FjaGUoVC50ZXh0LEsuZmlsZU5hbWUscSk6Yi5nZXRSZXNvbHZlZE1vZHVsZVdpdGhGYWlsZWRMb29rdXBMb2NhdGlvbnNGcm9tQ2FjaGUoVC50ZXh0LEsuZmlsZU5hbWUscSk7cmV0dXJuIHAoVCxPLEosYi5nZXRTb3VyY2VGaWxlcygpKX19ZnVuY3Rpb24gcChmLFQsSyxiKXtpZighVClyZXR1cm47aWYoVC5yZXNvbHZlZE1vZHVsZSl7dmFyIHNlPXEoVC5yZXNvbHZlZE1vZHVsZS5yZXNvbHZlZEZpbGVOYW1lKTtpZihzZSlyZXR1cm4gc2V9dmFyIEo9ZS5mb3JFYWNoKFQuZmFpbGVkTG9va3VwTG9jYXRpb25zLGllKXx8ZS5wYXRoSXNSZWxhdGl2ZShmLnRleHQpJiZlLmZvckVhY2goVC5mYWlsZWRMb29rdXBMb2NhdGlvbnMsUik7aWYoSilyZXR1cm4gSjtyZXR1cm4gVC5yZXNvbHZlZE1vZHVsZSYme25ld0ZpbGVOYW1lOlQucmVzb2x2ZWRNb2R1bGUucmVzb2x2ZWRGaWxlTmFtZSx1cGRhdGVkOiExfTtmdW5jdGlvbiBpZShPKXt2YXIgdmU9SyhPKTtyZXR1cm4gdmUmJmUuZmluZChiLGZ1bmN0aW9uKGVlKXtyZXR1cm4gZWUuZmlsZU5hbWU9PT12ZX0pP1IoTyk6dm9pZCAwfWZ1bmN0aW9uIFIoTyl7cmV0dXJuIGUuZW5kc1dpdGgoTyxcIi9wYWNrYWdlLmpzb25cIik/dm9pZCAwOnEoTyl9ZnVuY3Rpb24gcShPKXt2YXIgdmU9SyhPKTtyZXR1cm4gdmUmJntuZXdGaWxlTmFtZTp2ZSx1cGRhdGVkOiEwfX19ZnVuY3Rpb24gbShmLFQsSyxiKXtmb3IodmFyIHNlPTAsSj1mLnJlZmVyZW5jZWRGaWxlc3x8ZS5lbXB0eUFycmF5O3NlPEoubGVuZ3RoO3NlKyspe3ZhciBpZT1KW3NlXSxSPUsoaWUuZmlsZU5hbWUpO1IhPT12b2lkIDAmJlIhPT1mLnRleHQuc2xpY2UoaWUucG9zLGllLmVuZCkmJlQucmVwbGFjZVJhbmdlV2l0aFRleHQoZixpZSxSKX1mb3IodmFyIHE9MCxPPWYuaW1wb3J0cztxPE8ubGVuZ3RoO3ErKyl7dmFyIHZlPU9bcV0sUj1iKHZlKTtSIT09dm9pZCAwJiZSIT09dmUudGV4dCYmVC5yZXBsYWNlUmFuZ2VXaXRoVGV4dChmLEcodmUsZiksUil9fWZ1bmN0aW9uIEcoZixUKXtyZXR1cm4gZS5jcmVhdGVSYW5nZShmLmdldFN0YXJ0KFQpKzEsZi5lbmQtMSl9ZnVuY3Rpb24gb2UoZixUKXtpZighIWUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihmKSlmb3IodmFyIEs9MCxiPWYucHJvcGVydGllcztLPGIubGVuZ3RoO0srKyl7dmFyIHNlPWJbS107ZS5pc1Byb3BlcnR5QXNzaWdubWVudChzZSkmJmUuaXNTdHJpbmdMaXRlcmFsKHNlLm5hbWUpJiZUKHNlLHNlLm5hbWUudGV4dCl9fX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtmdW5jdGlvbiB3KEYseCxYLCQsQSl7dmFyIHksVixMPWxlKHgsWCxGKSxQPUwmJltPKEwucmVmZXJlbmNlLmZpbGVOYW1lLEwuZmlsZU5hbWUsTC51bnZlcmlmaWVkKV18fGUuZW1wdHlBcnJheTtpZihMIT1udWxsJiZMLmZpbGUpcmV0dXJuIFA7dmFyIGs9ZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZSh4LFgpO2lmKGshPT14KXt2YXIgWT1rLnBhcmVudCxVPUYuZ2V0VHlwZUNoZWNrZXIoKTtpZihrLmtpbmQ9PT0xNTl8fGUuaXNKU0RvY092ZXJyaWRlVGFnKGspJiZlLnJhbmdlQ29udGFpbnNQb3NpdGlvbihrLnRhZ05hbWUsWCkpcmV0dXJuIFEoVSxrKXx8ZS5lbXB0eUFycmF5O2lmKGUuaXNKdW1wU3RhdGVtZW50VGFyZ2V0KGspKXt2YXIgaj1lLmdldFRhcmdldExhYmVsKGsucGFyZW50LGsudGV4dCk7cmV0dXJuIGo/W0ooVSxqLFwibGFiZWxcIixrLnRleHQsdm9pZCAwKV06dm9pZCAwfWlmKGUuaXNTdGF0aWNNb2RpZmllcihrKSYmZS5pc0NsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbihrLnBhcmVudCkpe3ZhciBIPWsucGFyZW50LnBhcmVudCxJPWYoSCxVLEEpLGw9SS5zeW1ib2wsZD1JLmZhaWxlZEFsaWFzUmVzb2x1dGlvbixEPWUuZmlsdGVyKEgubWVtYmVycyxlLmlzQ2xhc3NTdGF0aWNCbG9ja0RlY2xhcmF0aW9uKSxmZT1sP1Uuc3ltYm9sVG9TdHJpbmcobCxIKTpcIlwiLGc9ay5nZXRTb3VyY2VGaWxlKCk7cmV0dXJuIGUubWFwKEQsZnVuY3Rpb24od2Upe3ZhciBkZT1lLm1vdmVSYW5nZVBhc3RNb2RpZmllcnMod2UpLnBvcztyZXR1cm4gZGU9ZS5za2lwVHJpdmlhKGcudGV4dCxkZSksSihVLHdlLFwiY29uc3RydWN0b3JcIixcInN0YXRpYyB7fVwiLGZlLCExLGQse3N0YXJ0OmRlLGxlbmd0aDo2fSl9KX12YXIgbmU9ZihrLFUsQSksdWU9bmUuc3ltYm9sLFdlPW5lLmZhaWxlZEFsaWFzUmVzb2x1dGlvbixGZT1rO2lmKCQmJldlKXt2YXIgWj1lLmZvckVhY2goVmUoW2tdLCh1ZT09bnVsbD92b2lkIDA6dWUuZGVjbGFyYXRpb25zKXx8ZS5lbXB0eUFycmF5LCEwKSxmdW5jdGlvbih3ZSl7cmV0dXJuIGUuZmluZEFuY2VzdG9yKHdlLGUuaXNBbnlJbXBvcnRPckJhcmVPckFjY2Vzc2VkUmVxdWlyZSl9KSxCZT1aJiZlLnRyeUdldE1vZHVsZVNwZWNpZmllckZyb21EZWNsYXJhdGlvbihaKTtCZSYmKHk9ZihCZSxVLEEpLHVlPXkuc3ltYm9sLFdlPXkuZmFpbGVkQWxpYXNSZXNvbHV0aW9uLEZlPUJlKX1pZighdWUmJmUuaXNNb2R1bGVTcGVjaWZpZXJMaWtlKEZlKSl7dmFyIGdlPShWPXgucmVzb2x2ZWRNb2R1bGVzKT09PW51bGx8fFY9PT12b2lkIDA/dm9pZCAwOlYuZ2V0KEZlLnRleHQsZS5nZXRNb2RlRm9yVXNhZ2VMb2NhdGlvbih4LEZlKSk7aWYoZ2UpcmV0dXJuW3tuYW1lOkZlLnRleHQsZmlsZU5hbWU6Z2UucmVzb2x2ZWRGaWxlTmFtZSxjb250YWluZXJOYW1lOnZvaWQgMCxjb250YWluZXJLaW5kOnZvaWQgMCxraW5kOlwic2NyaXB0XCIsdGV4dFNwYW46ZS5jcmVhdGVUZXh0U3BhbigwLDApLGZhaWxlZEFsaWFzUmVzb2x1dGlvbjpXZSxpc0FtYmllbnQ6ZS5pc0RlY2xhcmF0aW9uRmlsZU5hbWUoZ2UucmVzb2x2ZWRGaWxlTmFtZSksdW52ZXJpZmllZDpGZSE9PWt9XX1pZighdWUpcmV0dXJuIGUuY29uY2F0ZW5hdGUoUCxvZShrLFUpKTtpZighKCQmJmUuZXZlcnkodWUuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKHdlKXtyZXR1cm4gd2UuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lPT09eC5maWxlTmFtZX0pKSl7dmFyIFJlPWVlKFUsayk7aWYoUmUmJiEoZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChrLnBhcmVudCkmJmhlKFJlKSkpe3ZhciB6ZT1SKFUsUmUsV2UpO2lmKFUuZ2V0Um9vdFN5bWJvbHModWUpLnNvbWUoZnVuY3Rpb24od2Upe3JldHVybiBCKHdlLFJlKX0pKXJldHVyblt6ZV07dmFyIEVlPWIoVSx1ZSxrLFdlLFJlKXx8ZS5lbXB0eUFycmF5O3JldHVybiBrLmtpbmQ9PT0xMDY/VmUoW3plXSxFZSwhMCk6VmUoVmUoW10sRWUsITApLFt6ZV0sITEpfWlmKGsucGFyZW50LmtpbmQ9PT0yOTcpe3ZhciBIZT1VLmdldFNob3J0aGFuZEFzc2lnbm1lbnRWYWx1ZVN5bWJvbCh1ZS52YWx1ZURlY2xhcmF0aW9uKSxycj1IZSE9bnVsbCYmSGUuZGVjbGFyYXRpb25zP0hlLmRlY2xhcmF0aW9ucy5tYXAoZnVuY3Rpb24od2Upe3JldHVybiBzZSh3ZSxVLEhlLGssITEsV2UpfSk6ZS5lbXB0eUFycmF5O3JldHVybiBlLmNvbmNhdGVuYXRlKHJyLEUoVSxrKXx8ZS5lbXB0eUFycmF5KX1pZihlLmlzUHJvcGVydHlOYW1lKGspJiZlLmlzQmluZGluZ0VsZW1lbnQoWSkmJmUuaXNPYmplY3RCaW5kaW5nUGF0dGVybihZLnBhcmVudCkmJms9PT0oWS5wcm9wZXJ0eU5hbWV8fFkubmFtZSkpe3ZhciBJZT1lLmdldE5hbWVGcm9tUHJvcGVydHlOYW1lKGspLF9lPVUuZ2V0VHlwZUF0TG9jYXRpb24oWS5wYXJlbnQpO3JldHVybiBJZT09PXZvaWQgMD9lLmVtcHR5QXJyYXk6ZS5mbGF0TWFwKF9lLmlzVW5pb24oKT9fZS50eXBlczpbX2VdLGZ1bmN0aW9uKHdlKXt2YXIgZGU9d2UuZ2V0UHJvcGVydHkoSWUpO3JldHVybiBkZSYmYihVLGRlLGspfSl9cmV0dXJuIGUuY29uY2F0ZW5hdGUoUCxFKFUsayl8fGIoVSx1ZSxrLFdlKSl9fX1DLmdldERlZmluaXRpb25BdFBvc2l0aW9uPXc7ZnVuY3Rpb24gQihGLHgpe3JldHVybiBGPT09eC5zeW1ib2x8fEY9PT14LnN5bWJvbC5wYXJlbnR8fGUuaXNBc3NpZ25tZW50RXhwcmVzc2lvbih4LnBhcmVudCl8fCFlLmlzQ2FsbExpa2VFeHByZXNzaW9uKHgucGFyZW50KSYmRj09PXgucGFyZW50LnN5bWJvbH1mdW5jdGlvbiBFKEYseCl7dmFyIFg9ZS5nZXRDb250YWluaW5nT2JqZWN0TGl0ZXJhbEVsZW1lbnQoeCk7aWYoWCl7dmFyICQ9WCYmRi5nZXRDb250ZXh0dWFsVHlwZShYLnBhcmVudCk7aWYoJClyZXR1cm4gZS5mbGF0TWFwKGUuZ2V0UHJvcGVydHlTeW1ib2xzRnJvbUNvbnRleHR1YWxUeXBlKFgsRiwkLCExKSxmdW5jdGlvbihBKXtyZXR1cm4gYihGLEEseCl9KX19ZnVuY3Rpb24gUShGLHgpe3ZhciBYPWUuZmluZEFuY2VzdG9yKHgsZS5pc0NsYXNzRWxlbWVudCk7aWYoISEoWCYmWC5uYW1lKSl7dmFyICQ9ZS5maW5kQW5jZXN0b3IoWCxlLmlzQ2xhc3NMaWtlKTtpZighISQpe3ZhciBBPWUuZ2V0RWZmZWN0aXZlQmFzZVR5cGVOb2RlKCQpLHk9QT9GLmdldFR5cGVBdExvY2F0aW9uKEEpOnZvaWQgMDtpZighIXkpe3ZhciBWPWUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoZS5nZXRUZXh0T2ZQcm9wZXJ0eU5hbWUoWC5uYW1lKSksTD1lLmhhc1N0YXRpY01vZGlmaWVyKFgpP0YuZ2V0UHJvcGVydHlPZlR5cGUoRi5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKHkuc3ltYm9sLCQpLFYpOkYuZ2V0UHJvcGVydHlPZlR5cGUoeSxWKTtpZighIUwpcmV0dXJuIGIoRixMLHgpfX19fWZ1bmN0aW9uIGxlKEYseCxYKXt2YXIgJCxBLHk9cShGLnJlZmVyZW5jZWRGaWxlcyx4KTtpZih5KXt2YXIgVj1YLmdldFNvdXJjZUZpbGVGcm9tUmVmZXJlbmNlKEYseSk7cmV0dXJuIFYmJntyZWZlcmVuY2U6eSxmaWxlTmFtZTpWLmZpbGVOYW1lLGZpbGU6Vix1bnZlcmlmaWVkOiExfX12YXIgTD1xKEYudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMseCk7aWYoTCl7dmFyIFA9WC5nZXRSZXNvbHZlZFR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzKCkuZ2V0KEwuZmlsZU5hbWUsTC5yZXNvbHV0aW9uTW9kZXx8Ri5pbXBsaWVkTm9kZUZvcm1hdCksVj1QJiZYLmdldFNvdXJjZUZpbGUoUC5yZXNvbHZlZEZpbGVOYW1lKTtyZXR1cm4gViYme3JlZmVyZW5jZTpMLGZpbGVOYW1lOlYuZmlsZU5hbWUsZmlsZTpWLHVudmVyaWZpZWQ6ITF9fXZhciBrPXEoRi5saWJSZWZlcmVuY2VEaXJlY3RpdmVzLHgpO2lmKGspe3ZhciBWPVguZ2V0TGliRmlsZUZyb21SZWZlcmVuY2Uoayk7cmV0dXJuIFYmJntyZWZlcmVuY2U6ayxmaWxlTmFtZTpWLmZpbGVOYW1lLGZpbGU6Vix1bnZlcmlmaWVkOiExfX1pZighKCgkPUYucmVzb2x2ZWRNb2R1bGVzKT09PW51bGx8fCQ9PT12b2lkIDApJiYkLnNpemUoKSl7dmFyIFk9ZS5nZXRUb3VjaGluZ1Rva2VuKEYseCk7aWYoZS5pc01vZHVsZVNwZWNpZmllckxpa2UoWSkmJmUuaXNFeHRlcm5hbE1vZHVsZU5hbWVSZWxhdGl2ZShZLnRleHQpJiZGLnJlc29sdmVkTW9kdWxlcy5oYXMoWS50ZXh0LGUuZ2V0TW9kZUZvclVzYWdlTG9jYXRpb24oRixZKSkpe3ZhciBVPShBPUYucmVzb2x2ZWRNb2R1bGVzLmdldChZLnRleHQsZS5nZXRNb2RlRm9yVXNhZ2VMb2NhdGlvbihGLFkpKSk9PT1udWxsfHxBPT09dm9pZCAwP3ZvaWQgMDpBLnJlc29sdmVkRmlsZU5hbWUsaj1VfHxlLnJlc29sdmVQYXRoKGUuZ2V0RGlyZWN0b3J5UGF0aChGLmZpbGVOYW1lKSxZLnRleHQpO3JldHVybntmaWxlOlguZ2V0U291cmNlRmlsZShqKSxmaWxlTmFtZTpqLHJlZmVyZW5jZTp7cG9zOlkuZ2V0U3RhcnQoKSxlbmQ6WS5nZXRFbmQoKSxmaWxlTmFtZTpZLnRleHR9LHVudmVyaWZpZWQ6IVV9fX19Qy5nZXRSZWZlcmVuY2VBdFBvc2l0aW9uPWxlO2Z1bmN0aW9uIE4oRix4LFgpe3ZhciAkPWUuZ2V0VG91Y2hpbmdQcm9wZXJ0eU5hbWUoeCxYKTtpZigkIT09eCl7aWYoZS5pc0ltcG9ydE1ldGEoJC5wYXJlbnQpJiYkLnBhcmVudC5uYW1lPT09JClyZXR1cm4gcChGLmdldFR5cGVBdExvY2F0aW9uKCQucGFyZW50KSxGLCQucGFyZW50LCExKTt2YXIgQT1mKCQsRiwhMSkseT1BLnN5bWJvbCxWPUEuZmFpbGVkQWxpYXNSZXNvbHV0aW9uO2lmKCEheSl7dmFyIEw9Ri5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKHksJCksUD1tKHksTCxGKSxrPVAmJnAoUCxGLCQsViksWT1rJiZrLmxlbmd0aCE9PTA/azpwKEwsRiwkLFYpO3JldHVybiBZLmxlbmd0aD9ZOiEoeS5mbGFncyYxMTE1NTEpJiZ5LmZsYWdzJjc4ODk2OD9iKEYsZS5za2lwQWxpYXMoeSxGKSwkLFYpOnZvaWQgMH19fUMuZ2V0VHlwZURlZmluaXRpb25BdFBvc2l0aW9uPU47ZnVuY3Rpb24gcChGLHgsWCwkKXtyZXR1cm4gZS5mbGF0TWFwKEYuaXNVbmlvbigpJiYhKEYuZmxhZ3MmMzIpP0YudHlwZXM6W0ZdLGZ1bmN0aW9uKEEpe3JldHVybiBBLnN5bWJvbCYmYih4LEEuc3ltYm9sLFgsJCl9KX1mdW5jdGlvbiBtKEYseCxYKXtpZih4LnN5bWJvbD09PUZ8fEYudmFsdWVEZWNsYXJhdGlvbiYmeC5zeW1ib2wmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKEYudmFsdWVEZWNsYXJhdGlvbikmJkYudmFsdWVEZWNsYXJhdGlvbi5pbml0aWFsaXplcj09PXguc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pe3ZhciAkPXguZ2V0Q2FsbFNpZ25hdHVyZXMoKTtpZigkLmxlbmd0aD09PTEpcmV0dXJuIFguZ2V0UmV0dXJuVHlwZU9mU2lnbmF0dXJlKGUuZmlyc3QoJCkpfX1mdW5jdGlvbiBHKEYseCxYKXt2YXIgJD13KEYseCxYKTtpZighKCEkfHwkLmxlbmd0aD09PTApKXt2YXIgQT1xKHgucmVmZXJlbmNlZEZpbGVzLFgpfHxxKHgudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMsWCl8fHEoeC5saWJSZWZlcmVuY2VEaXJlY3RpdmVzLFgpO2lmKEEpcmV0dXJue2RlZmluaXRpb25zOiQsdGV4dFNwYW46ZS5jcmVhdGVUZXh0U3BhbkZyb21SYW5nZShBKX07dmFyIHk9ZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZSh4LFgpLFY9ZS5jcmVhdGVUZXh0U3Bhbih5LmdldFN0YXJ0KCkseS5nZXRXaWR0aCgpKTtyZXR1cm57ZGVmaW5pdGlvbnM6JCx0ZXh0U3BhbjpWfX19Qy5nZXREZWZpbml0aW9uQW5kQm91bmRTcGFuPUc7ZnVuY3Rpb24gb2UoRix4KXtyZXR1cm4gZS5tYXBEZWZpbmVkKHguZ2V0SW5kZXhJbmZvc0F0TG9jYXRpb24oRiksZnVuY3Rpb24oWCl7cmV0dXJuIFguZGVjbGFyYXRpb24mJlIoeCxYLmRlY2xhcmF0aW9uKX0pfWZ1bmN0aW9uIGYoRix4LFgpe3ZhciAkPXguZ2V0U3ltYm9sQXRMb2NhdGlvbihGKSxBPSExO2lmKCgkPT1udWxsP3ZvaWQgMDokLmRlY2xhcmF0aW9ucykmJiQuZmxhZ3MmMjA5NzE1MiYmIVgmJlQoRiwkLmRlY2xhcmF0aW9uc1swXSkpe3ZhciB5PXguZ2V0QWxpYXNlZFN5bWJvbCgkKTtpZih5LmRlY2xhcmF0aW9ucylyZXR1cm57c3ltYm9sOnl9O0E9ITB9cmV0dXJue3N5bWJvbDokLGZhaWxlZEFsaWFzUmVzb2x1dGlvbjpBfX1mdW5jdGlvbiBUKEYseCl7cmV0dXJuIEYua2luZCE9PTc5PyExOkYucGFyZW50PT09eD8hMDp4LmtpbmQhPT0yNjh9ZnVuY3Rpb24gSyhGKXtpZighZS5pc0Fzc2lnbm1lbnREZWNsYXJhdGlvbihGKSlyZXR1cm4hMTt2YXIgeD1lLmZpbmRBbmNlc3RvcihGLGZ1bmN0aW9uKFgpe3JldHVybiBlLmlzQXNzaWdubWVudEV4cHJlc3Npb24oWCk/ITA6ZS5pc0Fzc2lnbm1lbnREZWNsYXJhdGlvbihYKT8hMTpcInF1aXRcIn0pO3JldHVybiEheCYmZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKHgpPT09NX1mdW5jdGlvbiBiKEYseCxYLCQsQSl7dmFyIHk9ZS5maWx0ZXIoeC5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oVSl7cmV0dXJuIFUhPT1BfSksVj1lLmZpbHRlcih5LGZ1bmN0aW9uKFUpe3JldHVybiFLKFUpfSksTD1lLnNvbWUoVik/Vjp5O3JldHVybiBQKCl8fGsoKXx8ZS5tYXAoTCxmdW5jdGlvbihVKXtyZXR1cm4gc2UoVSxGLHgsWCwhMSwkKX0pO2Z1bmN0aW9uIFAoKXtpZih4LmZsYWdzJjMyJiYhKHguZmxhZ3MmMTkpJiYoZS5pc05ld0V4cHJlc3Npb25UYXJnZXQoWCl8fFgua2luZD09PTEzNCkpe3ZhciBVPWUuZmluZCh5LGUuaXNDbGFzc0xpa2UpfHxlLkRlYnVnLmZhaWwoXCJFeHBlY3RlZCBkZWNsYXJhdGlvbiB0byBoYXZlIGF0IGxlYXN0IG9uZSBjbGFzcy1saWtlIGRlY2xhcmF0aW9uXCIpO3JldHVybiBZKFUubWVtYmVycywhMCl9fWZ1bmN0aW9uIGsoKXtyZXR1cm4gZS5pc0NhbGxPck5ld0V4cHJlc3Npb25UYXJnZXQoWCl8fGUuaXNOYW1lT2ZGdW5jdGlvbkRlY2xhcmF0aW9uKFgpP1koeSwhMSk6dm9pZCAwfWZ1bmN0aW9uIFkoVSxqKXtpZighIVUpe3ZhciBIPVUuZmlsdGVyKGo/ZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb246ZS5pc0Z1bmN0aW9uTGlrZSksST1ILmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4hIWwuYm9keX0pO3JldHVybiBILmxlbmd0aD9JLmxlbmd0aCE9PTA/SS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIHNlKGwsRix4LFgpfSk6W3NlKGUubGFzdChIKSxGLHgsWCwhMSwkKV06dm9pZCAwfX19ZnVuY3Rpb24gc2UoRix4LFgsJCxBLHkpe3ZhciBWPXguc3ltYm9sVG9TdHJpbmcoWCksTD1lLlN5bWJvbERpc3BsYXkuZ2V0U3ltYm9sS2luZCh4LFgsJCksUD1YLnBhcmVudD94LnN5bWJvbFRvU3RyaW5nKFgucGFyZW50LCQpOlwiXCI7cmV0dXJuIEooeCxGLEwsVixQLEEseSl9Qy5jcmVhdGVEZWZpbml0aW9uSW5mbz1zZTtmdW5jdGlvbiBKKEYseCxYLCQsQSx5LFYsTCl7dmFyIFA9eC5nZXRTb3VyY2VGaWxlKCk7aWYoIUwpe3ZhciBrPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oeCl8fHg7TD1lLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUoayxQKX1yZXR1cm4gS2UoS2Uoe2ZpbGVOYW1lOlAuZmlsZU5hbWUsdGV4dFNwYW46TCxraW5kOlgsbmFtZTokLGNvbnRhaW5lcktpbmQ6dm9pZCAwLGNvbnRhaW5lck5hbWU6QX0sZS5GaW5kQWxsUmVmZXJlbmNlcy50b0NvbnRleHRTcGFuKEwsUCxlLkZpbmRBbGxSZWZlcmVuY2VzLmdldENvbnRleHROb2RlKHgpKSkse2lzTG9jYWw6IWllKEYseCksaXNBbWJpZW50OiEhKHguZmxhZ3MmMTY3NzcyMTYpLHVudmVyaWZpZWQ6eSxmYWlsZWRBbGlhc1Jlc29sdXRpb246Vn0pfWZ1bmN0aW9uIGllKEYseCl7aWYoRi5pc0RlY2xhcmF0aW9uVmlzaWJsZSh4KSlyZXR1cm4hMDtpZigheC5wYXJlbnQpcmV0dXJuITE7aWYoZS5oYXNJbml0aWFsaXplcih4LnBhcmVudCkmJngucGFyZW50LmluaXRpYWxpemVyPT09eClyZXR1cm4gaWUoRix4LnBhcmVudCk7c3dpdGNoKHgua2luZCl7Y2FzZSAxNjc6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxNjk6aWYoZS5oYXNFZmZlY3RpdmVNb2RpZmllcih4LDgpKXJldHVybiExO2Nhc2UgMTcxOmNhc2UgMjk2OmNhc2UgMjk3OmNhc2UgMjA1OmNhc2UgMjI2OmNhc2UgMjE0OmNhc2UgMjEzOnJldHVybiBpZShGLHgucGFyZW50KTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBSKEYseCxYKXtyZXR1cm4gc2UoeCxGLHguc3ltYm9sLHgsITEsWCl9ZnVuY3Rpb24gcShGLHgpe3JldHVybiBlLmZpbmQoRixmdW5jdGlvbihYKXtyZXR1cm4gZS50ZXh0UmFuZ2VDb250YWluc1Bvc2l0aW9uSW5jbHVzaXZlKFgseCl9KX1DLmZpbmRSZWZlcmVuY2VJblBvc2l0aW9uPXE7ZnVuY3Rpb24gTyhGLHgsWCl7cmV0dXJue2ZpbGVOYW1lOngsdGV4dFNwYW46ZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMoMCwwKSxraW5kOlwic2NyaXB0XCIsbmFtZTpGLGNvbnRhaW5lck5hbWU6dm9pZCAwLGNvbnRhaW5lcktpbmQ6dm9pZCAwLHVudmVyaWZpZWQ6WH19ZnVuY3Rpb24gdmUoRil7dmFyIHg9ZS5maW5kQW5jZXN0b3IoRixmdW5jdGlvbigkKXtyZXR1cm4hZS5pc1JpZ2h0U2lkZU9mUHJvcGVydHlBY2Nlc3MoJCl9KSxYPXg9PW51bGw/dm9pZCAwOngucGFyZW50O3JldHVybiBYJiZlLmlzQ2FsbExpa2VFeHByZXNzaW9uKFgpJiZlLmdldEludm9rZWRFeHByZXNzaW9uKFgpPT09eD9YOnZvaWQgMH1mdW5jdGlvbiBlZShGLHgpe3ZhciBYPXZlKHgpLCQ9WCYmRi5nZXRSZXNvbHZlZFNpZ25hdHVyZShYKTtyZXR1cm4gZS50cnlDYXN0KCQmJiQuZGVjbGFyYXRpb24sZnVuY3Rpb24oQSl7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2UoQSkmJiFlLmlzRnVuY3Rpb25UeXBlTm9kZShBKX0pfWZ1bmN0aW9uIGhlKEYpe3N3aXRjaChGLmtpbmQpe2Nhc2UgMTcxOmNhc2UgMTgwOmNhc2UgMTc1OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fX0pKGE9ZS5Hb1RvRGVmaW5pdGlvbnx8KGUuR29Ub0RlZmluaXRpb249e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1bXCJhYnN0cmFjdFwiLFwiYWNjZXNzXCIsXCJhbGlhc1wiLFwiYXJndW1lbnRcIixcImFzeW5jXCIsXCJhdWdtZW50c1wiLFwiYXV0aG9yXCIsXCJib3Jyb3dzXCIsXCJjYWxsYmFja1wiLFwiY2xhc3NcIixcImNsYXNzZGVzY1wiLFwiY29uc3RhbnRcIixcImNvbnN0cnVjdG9yXCIsXCJjb25zdHJ1Y3RzXCIsXCJjb3B5cmlnaHRcIixcImRlZmF1bHRcIixcImRlcHJlY2F0ZWRcIixcImRlc2NyaXB0aW9uXCIsXCJlbWl0c1wiLFwiZW51bVwiLFwiZXZlbnRcIixcImV4YW1wbGVcIixcImV4cG9ydHNcIixcImV4dGVuZHNcIixcImV4dGVybmFsXCIsXCJmaWVsZFwiLFwiZmlsZVwiLFwiZmlsZW92ZXJ2aWV3XCIsXCJmaXJlc1wiLFwiZnVuY3Rpb25cIixcImdlbmVyYXRvclwiLFwiZ2xvYmFsXCIsXCJoaWRlY29uc3RydWN0b3JcIixcImhvc3RcIixcImlnbm9yZVwiLFwiaW1wbGVtZW50c1wiLFwiaW5oZXJpdGRvY1wiLFwiaW5uZXJcIixcImluc3RhbmNlXCIsXCJpbnRlcmZhY2VcIixcImtpbmRcIixcImxlbmRzXCIsXCJsaWNlbnNlXCIsXCJsaW5rXCIsXCJsaXN0ZW5zXCIsXCJtZW1iZXJcIixcIm1lbWJlcm9mXCIsXCJtZXRob2RcIixcIm1peGVzXCIsXCJtb2R1bGVcIixcIm5hbWVcIixcIm5hbWVzcGFjZVwiLFwib3ZlcnJpZGVcIixcInBhY2thZ2VcIixcInBhcmFtXCIsXCJwcml2YXRlXCIsXCJwcm9wZXJ0eVwiLFwicHJvdGVjdGVkXCIsXCJwdWJsaWNcIixcInJlYWRvbmx5XCIsXCJyZXF1aXJlc1wiLFwicmV0dXJuc1wiLFwic2VlXCIsXCJzaW5jZVwiLFwic3RhdGljXCIsXCJzdW1tYXJ5XCIsXCJ0ZW1wbGF0ZVwiLFwidGhpc1wiLFwidGhyb3dzXCIsXCJ0b2RvXCIsXCJ0dXRvcmlhbFwiLFwidHlwZVwiLFwidHlwZWRlZlwiLFwidmFyXCIsXCJ2YXJpYXRpb25cIixcInZlcnNpb25cIixcInZpcnR1YWxcIixcInlpZWxkc1wiXSxCLEU7ZnVuY3Rpb24gUShGLHgpe3ZhciBYPVtdO3JldHVybiBlLmZvckVhY2hVbmlxdWUoRixmdW5jdGlvbigkKXtmb3IodmFyIEE9MCx5PU4oJCk7QTx5Lmxlbmd0aDtBKyspe3ZhciBWPXlbQV07aWYoIShWLmNvbW1lbnQ9PT12b2lkIDB8fGUuaXNKU0RvYyhWKSYmJC5raW5kIT09MzQ1JiYkLmtpbmQhPT0zMzgmJlYudGFncyYmVi50YWdzLnNvbWUoZnVuY3Rpb24oUCl7cmV0dXJuIFAua2luZD09PTM0NXx8UC5raW5kPT09MzM4fSkmJiFWLnRhZ3Muc29tZShmdW5jdGlvbihQKXtyZXR1cm4gUC5raW5kPT09MzQwfHxQLmtpbmQ9PT0zNDF9KSkpe3ZhciBMPW0oVi5jb21tZW50LHgpO2UuY29udGFpbnMoWCxMLGxlKXx8WC5wdXNoKEwpfX19KSxlLmZsYXR0ZW4oZS5pbnRlcnNwZXJzZShYLFtlLmxpbmVCcmVha1BhcnQoKV0pKX1DLmdldEpzRG9jQ29tbWVudHNGcm9tRGVjbGFyYXRpb25zPVE7ZnVuY3Rpb24gbGUoRix4KXtyZXR1cm4gZS5hcnJheXNFcXVhbChGLHgsZnVuY3Rpb24oWCwkKXtyZXR1cm4gWC5raW5kPT09JC5raW5kJiZYLnRleHQ9PT0kLnRleHR9KX1mdW5jdGlvbiBOKEYpe3N3aXRjaChGLmtpbmQpe2Nhc2UgMzQwOmNhc2UgMzQ3OnJldHVybltGXTtjYXNlIDMzODpjYXNlIDM0NTpyZXR1cm5bRixGLnBhcmVudF07ZGVmYXVsdDpyZXR1cm4gZS5nZXRKU0RvY0NvbW1lbnRzQW5kVGFncyhGKX19ZnVuY3Rpb24gcChGLHgpe3ZhciBYPVtdO3JldHVybiBlLmZvckVhY2hVbmlxdWUoRixmdW5jdGlvbigkKXt2YXIgQT1lLmdldEpTRG9jVGFncygkKTtpZighKEEuc29tZShmdW5jdGlvbihQKXtyZXR1cm4gUC5raW5kPT09MzQ1fHxQLmtpbmQ9PT0zMzh9KSYmIUEuc29tZShmdW5jdGlvbihQKXtyZXR1cm4gUC5raW5kPT09MzQwfHxQLmtpbmQ9PT0zNDF9KSkpZm9yKHZhciB5PTAsVj1BO3k8Vi5sZW5ndGg7eSsrKXt2YXIgTD1WW3ldO1gucHVzaCh7bmFtZTpMLnRhZ05hbWUudGV4dCx0ZXh0OkcoTCx4KX0pfX0pLFh9Qy5nZXRKc0RvY1RhZ3NGcm9tRGVjbGFyYXRpb25zPXA7ZnVuY3Rpb24gbShGLHgpe3JldHVybiB0eXBlb2YgRj09XCJzdHJpbmdcIj9bZS50ZXh0UGFydChGKV06ZS5mbGF0TWFwKEYsZnVuY3Rpb24oWCl7cmV0dXJuIFgua2luZD09PTMyMT9bZS50ZXh0UGFydChYLnRleHQpXTplLmJ1aWxkTGlua1BhcnRzKFgseCl9KX1mdW5jdGlvbiBHKEYseCl7dmFyIFg9Ri5jb21tZW50LCQ9Ri5raW5kLEE9b2UoJCk7c3dpdGNoKCQpe2Nhc2UgMzI5OnJldHVybiBrKEYuY2xhc3MpO2Nhc2UgMzI4OnJldHVybiBrKEYuY2xhc3MpO2Nhc2UgMzQ0OnZhciB5PUYsVj1bXTtpZih5LmNvbnN0cmFpbnQmJlYucHVzaChlLnRleHRQYXJ0KHkuY29uc3RyYWludC5nZXRUZXh0KCkpKSxlLmxlbmd0aCh5LnR5cGVQYXJhbWV0ZXJzKSl7ZS5sZW5ndGgoVikmJlYucHVzaChlLnNwYWNlUGFydCgpKTt2YXIgTD15LnR5cGVQYXJhbWV0ZXJzW3kudHlwZVBhcmFtZXRlcnMubGVuZ3RoLTFdO2UuZm9yRWFjaCh5LnR5cGVQYXJhbWV0ZXJzLGZ1bmN0aW9uKFUpe1YucHVzaChBKFUuZ2V0VGV4dCgpKSksTCE9PVUmJlYucHVzaC5hcHBseShWLFtlLnB1bmN0dWF0aW9uUGFydCgyNyksZS5zcGFjZVBhcnQoKV0pfSl9cmV0dXJuIFgmJlYucHVzaC5hcHBseShWLFZlKFtlLnNwYWNlUGFydCgpXSxtKFgseCksITApKSxWO2Nhc2UgMzQzOnJldHVybiBrKEYudHlwZUV4cHJlc3Npb24pO2Nhc2UgMzQ1OmNhc2UgMzM4OmNhc2UgMzQ3OmNhc2UgMzQwOmNhc2UgMzQ2OnZhciBQPUYubmFtZTtyZXR1cm4gUD9rKFApOlg9PT12b2lkIDA/dm9pZCAwOm0oWCx4KTtkZWZhdWx0OnJldHVybiBYPT09dm9pZCAwP3ZvaWQgMDptKFgseCl9ZnVuY3Rpb24gayhVKXtyZXR1cm4gWShVLmdldFRleHQoKSl9ZnVuY3Rpb24gWShVKXtyZXR1cm4gWD9VLm1hdGNoKC9eaHR0cHM/JC8pP1ZlKFtlLnRleHRQYXJ0KFUpXSxtKFgseCksITApOlZlKFtBKFUpLGUuc3BhY2VQYXJ0KCldLG0oWCx4KSwhMCk6W2UudGV4dFBhcnQoVSldfX1mdW5jdGlvbiBvZShGKXtzd2l0Y2goRil7Y2FzZSAzNDA6cmV0dXJuIGUucGFyYW1ldGVyTmFtZVBhcnQ7Y2FzZSAzNDc6cmV0dXJuIGUucHJvcGVydHlOYW1lUGFydDtjYXNlIDM0NDpyZXR1cm4gZS50eXBlUGFyYW1ldGVyTmFtZVBhcnQ7Y2FzZSAzNDU6Y2FzZSAzMzg6cmV0dXJuIGUudHlwZUFsaWFzTmFtZVBhcnQ7ZGVmYXVsdDpyZXR1cm4gZS50ZXh0UGFydH19ZnVuY3Rpb24gZigpe3JldHVybiBCfHwoQj1lLm1hcCh3LGZ1bmN0aW9uKEYpe3JldHVybntuYW1lOkYsa2luZDpcImtleXdvcmRcIixraW5kTW9kaWZpZXJzOlwiXCIsc29ydFRleHQ6ZS5Db21wbGV0aW9ucy5Tb3J0VGV4dC5Mb2NhdGlvblByaW9yaXR5fX0pKX1DLmdldEpTRG9jVGFnTmFtZUNvbXBsZXRpb25zPWYsQy5nZXRKU0RvY1RhZ05hbWVDb21wbGV0aW9uRGV0YWlscz1LO2Z1bmN0aW9uIFQoKXtyZXR1cm4gRXx8KEU9ZS5tYXAodyxmdW5jdGlvbihGKXtyZXR1cm57bmFtZTpcIkBcIi5jb25jYXQoRiksa2luZDpcImtleXdvcmRcIixraW5kTW9kaWZpZXJzOlwiXCIsc29ydFRleHQ6ZS5Db21wbGV0aW9ucy5Tb3J0VGV4dC5Mb2NhdGlvblByaW9yaXR5fX0pKX1DLmdldEpTRG9jVGFnQ29tcGxldGlvbnM9VDtmdW5jdGlvbiBLKEYpe3JldHVybntuYW1lOkYsa2luZDpcIlwiLGtpbmRNb2RpZmllcnM6XCJcIixkaXNwbGF5UGFydHM6W2UudGV4dFBhcnQoRildLGRvY3VtZW50YXRpb246ZS5lbXB0eUFycmF5LHRhZ3M6dm9pZCAwLGNvZGVBY3Rpb25zOnZvaWQgMH19Qy5nZXRKU0RvY1RhZ0NvbXBsZXRpb25EZXRhaWxzPUs7ZnVuY3Rpb24gYihGKXtpZighZS5pc0lkZW50aWZpZXIoRi5uYW1lKSlyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciB4PUYubmFtZS50ZXh0LFg9Ri5wYXJlbnQsJD1YLnBhcmVudDtyZXR1cm4gZS5pc0Z1bmN0aW9uTGlrZSgkKT9lLm1hcERlZmluZWQoJC5wYXJhbWV0ZXJzLGZ1bmN0aW9uKEEpe2lmKCEhZS5pc0lkZW50aWZpZXIoQS5uYW1lKSl7dmFyIHk9QS5uYW1lLnRleHQ7aWYoIShYLnRhZ3Muc29tZShmdW5jdGlvbihWKXtyZXR1cm4gViE9PUYmJmUuaXNKU0RvY1BhcmFtZXRlclRhZyhWKSYmZS5pc0lkZW50aWZpZXIoVi5uYW1lKSYmVi5uYW1lLmVzY2FwZWRUZXh0PT09eX0pfHx4IT09dm9pZCAwJiYhZS5zdGFydHNXaXRoKHkseCkpKXJldHVybntuYW1lOnksa2luZDpcInBhcmFtZXRlclwiLGtpbmRNb2RpZmllcnM6XCJcIixzb3J0VGV4dDplLkNvbXBsZXRpb25zLlNvcnRUZXh0LkxvY2F0aW9uUHJpb3JpdHl9fX0pOltdfUMuZ2V0SlNEb2NQYXJhbWV0ZXJOYW1lQ29tcGxldGlvbnM9YjtmdW5jdGlvbiBzZShGKXtyZXR1cm57bmFtZTpGLGtpbmQ6XCJwYXJhbWV0ZXJcIixraW5kTW9kaWZpZXJzOlwiXCIsZGlzcGxheVBhcnRzOltlLnRleHRQYXJ0KEYpXSxkb2N1bWVudGF0aW9uOmUuZW1wdHlBcnJheSx0YWdzOnZvaWQgMCxjb2RlQWN0aW9uczp2b2lkIDB9fUMuZ2V0SlNEb2NQYXJhbWV0ZXJOYW1lQ29tcGxldGlvbkRldGFpbHM9c2U7ZnVuY3Rpb24gSihGLHgsWCwkKXt2YXIgQT1lLmdldFRva2VuQXRQb3NpdGlvbih4LFgpLHk9ZS5maW5kQW5jZXN0b3IoQSxlLmlzSlNEb2MpO2lmKCEoeSYmKHkuY29tbWVudCE9PXZvaWQgMHx8ZS5sZW5ndGgoeS50YWdzKSkpKXt2YXIgVj1BLmdldFN0YXJ0KHgpO2lmKCEoIXkmJlY8WCkpe3ZhciBMPU8oQSwkKTtpZighIUwpe3ZhciBQPUwuY29tbWVudE93bmVyLGs9TC5wYXJhbWV0ZXJzLFk9TC5oYXNSZXR1cm4sVT1lLmhhc0pTRG9jTm9kZXMoUCkmJlAuanNEb2M/ZS5sYXN0T3JVbmRlZmluZWQoUC5qc0RvYyk6dm9pZCAwO2lmKCEoUC5nZXRTdGFydCh4KTxYfHxVJiZVIT09eSkpe3ZhciBqPWllKHgsWCksSD1lLmhhc0pTRmlsZUV4dGVuc2lvbih4LmZpbGVOYW1lKSxJPShrP1Ioa3x8W10sSCxqLEYpOlwiXCIpKyhZP3EoaixGKTpcIlwiKSxsPVwiLyoqXCIsZD1cIiAqL1wiO2lmKEkpe3ZhciBEPWwrRitqK1wiICogXCIsZmU9Vj09PVg/RitqOlwiXCIsZz1EK0YrSStqK2QrZmU7cmV0dXJue25ld1RleHQ6ZyxjYXJldE9mZnNldDpELmxlbmd0aH19cmV0dXJue25ld1RleHQ6bCtkLGNhcmV0T2Zmc2V0OjN9fX19fX1DLmdldERvY0NvbW1lbnRUZW1wbGF0ZUF0UG9zaXRpb249SjtmdW5jdGlvbiBpZShGLHgpe2Zvcih2YXIgWD1GLnRleHQsJD1lLmdldExpbmVTdGFydFBvc2l0aW9uRm9yUG9zaXRpb24oeCxGKSxBPSQ7QTw9eCYmZS5pc1doaXRlU3BhY2VTaW5nbGVMaW5lKFguY2hhckNvZGVBdChBKSk7QSsrKTtyZXR1cm4gWC5zbGljZSgkLEEpfWZ1bmN0aW9uIFIoRix4LFgsJCl7cmV0dXJuIEYubWFwKGZ1bmN0aW9uKEEseSl7dmFyIFY9QS5uYW1lLEw9QS5kb3REb3REb3RUb2tlbixQPVYua2luZD09PTc5P1YudGV4dDpcInBhcmFtXCIreSxrPXg/TD9cInsuLi5hbnl9IFwiOlwie2FueX0gXCI6XCJcIjtyZXR1cm5cIlwiLmNvbmNhdChYLFwiICogQHBhcmFtIFwiKS5jb25jYXQoaykuY29uY2F0KFApLmNvbmNhdCgkKX0pLmpvaW4oXCJcIil9ZnVuY3Rpb24gcShGLHgpe3JldHVyblwiXCIuY29uY2F0KEYsXCIgKiBAcmV0dXJuc1wiKS5jb25jYXQoeCl9ZnVuY3Rpb24gTyhGLHgpe3JldHVybiBlLmZvckVhY2hBbmNlc3RvcihGLGZ1bmN0aW9uKFgpe3JldHVybiB2ZShYLHgpfSl9ZnVuY3Rpb24gdmUoRix4KXtzd2l0Y2goRi5raW5kKXtjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDE2OTpjYXNlIDE3MTpjYXNlIDE2ODpjYXNlIDIxNDp2YXIgWD1GO3JldHVybntjb21tZW50T3duZXI6RixwYXJhbWV0ZXJzOlgucGFyYW1ldGVycyxoYXNSZXR1cm46ZWUoWCx4KX07Y2FzZSAyOTY6cmV0dXJuIHZlKEYuaW5pdGlhbGl6ZXIseCk7Y2FzZSAyNTc6Y2FzZSAyNTg6Y2FzZSAxNjY6Y2FzZSAyNjA6Y2FzZSAyOTk6Y2FzZSAyNTk6cmV0dXJue2NvbW1lbnRPd25lcjpGfTtjYXNlIDIzNzp7dmFyICQ9RixBPSQuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucyx5PUEubGVuZ3RoPT09MSYmQVswXS5pbml0aWFsaXplcj9oZShBWzBdLmluaXRpYWxpemVyKTp2b2lkIDA7cmV0dXJuIHk/e2NvbW1lbnRPd25lcjpGLHBhcmFtZXRlcnM6eS5wYXJhbWV0ZXJzLGhhc1JldHVybjplZSh5LHgpfTp7Y29tbWVudE93bmVyOkZ9fWNhc2UgMzA1OnJldHVyblwicXVpdFwiO2Nhc2UgMjYxOnJldHVybiBGLnBhcmVudC5raW5kPT09MjYxP3ZvaWQgMDp7Y29tbWVudE93bmVyOkZ9O2Nhc2UgMjM4OnJldHVybiB2ZShGLmV4cHJlc3Npb24seCk7Y2FzZSAyMjE6e3ZhciBWPUY7cmV0dXJuIGUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChWKT09PTA/XCJxdWl0XCI6ZS5pc0Z1bmN0aW9uTGlrZShWLnJpZ2h0KT97Y29tbWVudE93bmVyOkYscGFyYW1ldGVyczpWLnJpZ2h0LnBhcmFtZXRlcnMsaGFzUmV0dXJuOmVlKFYucmlnaHQseCl9Ontjb21tZW50T3duZXI6Rn19Y2FzZSAxNjc6dmFyIEw9Ri5pbml0aWFsaXplcjtpZihMJiYoZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihMKXx8ZS5pc0Fycm93RnVuY3Rpb24oTCkpKXJldHVybntjb21tZW50T3duZXI6RixwYXJhbWV0ZXJzOkwucGFyYW1ldGVycyxoYXNSZXR1cm46ZWUoTCx4KX19fWZ1bmN0aW9uIGVlKEYseCl7cmV0dXJuISEoeCE9bnVsbCYmeC5nZW5lcmF0ZVJldHVybkluRG9jVGVtcGxhdGUpJiYoZS5pc0Fycm93RnVuY3Rpb24oRikmJmUuaXNFeHByZXNzaW9uKEYuYm9keSl8fGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihGKSYmRi5ib2R5JiZlLmlzQmxvY2soRi5ib2R5KSYmISFlLmZvckVhY2hSZXR1cm5TdGF0ZW1lbnQoRi5ib2R5LGZ1bmN0aW9uKFgpe3JldHVybiBYfSkpfWZ1bmN0aW9uIGhlKEYpe2Zvcig7Ri5raW5kPT09MjEyOylGPUYuZXhwcmVzc2lvbjtzd2l0Y2goRi5raW5kKXtjYXNlIDIxMzpjYXNlIDIxNDpyZXR1cm4gRjtjYXNlIDIyNjpyZXR1cm4gZS5maW5kKEYubWVtYmVycyxlLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbil9fX0pKGE9ZS5Kc0RvY3x8KGUuSnNEb2M9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtmdW5jdGlvbiB3KG9lLGYsVCxLLGIsc2Upe3ZhciBKPWUuY3JlYXRlUGF0dGVybk1hdGNoZXIoSyk7aWYoIUopcmV0dXJuIGUuZW1wdHlBcnJheTtmb3IodmFyIGllPVtdLFI9ZnVuY3Rpb24oZWUpe2lmKFQudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLHNlJiZlZS5pc0RlY2xhcmF0aW9uRmlsZSlyZXR1cm5cImNvbnRpbnVlXCI7ZWUuZ2V0TmFtZWREZWNsYXJhdGlvbnMoKS5mb3JFYWNoKGZ1bmN0aW9uKGhlLEYpe0IoSixGLGhlLGYsZWUuZmlsZU5hbWUsaWUpfSl9LHE9MCxPPW9lO3E8Ty5sZW5ndGg7cSsrKXt2YXIgdmU9T1txXTtSKHZlKX1yZXR1cm4gaWUuc29ydChtKSwoYj09PXZvaWQgMD9pZTppZS5zbGljZSgwLGIpKS5tYXAoRyl9Qy5nZXROYXZpZ2F0ZVRvSXRlbXM9dztmdW5jdGlvbiBCKG9lLGYsVCxLLGIsc2Upe3ZhciBKPW9lLmdldE1hdGNoRm9yTGFzdFNlZ21lbnRPZlBhdHRlcm4oZik7aWYoISFKKWZvcih2YXIgaWU9MCxSPVQ7aWU8Ui5sZW5ndGg7aWUrKyl7dmFyIHE9UltpZV07aWYoISFFKHEsSykpaWYob2UucGF0dGVybkNvbnRhaW5zRG90cyl7dmFyIE89b2UuZ2V0RnVsbE1hdGNoKHAocSksZik7TyYmc2UucHVzaCh7bmFtZTpmLGZpbGVOYW1lOmIsbWF0Y2hLaW5kOk8ua2luZCxpc0Nhc2VTZW5zaXRpdmU6Ty5pc0Nhc2VTZW5zaXRpdmUsZGVjbGFyYXRpb246cX0pfWVsc2Ugc2UucHVzaCh7bmFtZTpmLGZpbGVOYW1lOmIsbWF0Y2hLaW5kOkoua2luZCxpc0Nhc2VTZW5zaXRpdmU6Si5pc0Nhc2VTZW5zaXRpdmUsZGVjbGFyYXRpb246cX0pfX1mdW5jdGlvbiBFKG9lLGYpe3N3aXRjaChvZS5raW5kKXtjYXNlIDI2NzpjYXNlIDI3MDpjYXNlIDI2NTp2YXIgVD1mLmdldFN5bWJvbEF0TG9jYXRpb24ob2UubmFtZSksSz1mLmdldEFsaWFzZWRTeW1ib2woVCk7cmV0dXJuIFQuZXNjYXBlZE5hbWUhPT1LLmVzY2FwZWROYW1lO2RlZmF1bHQ6cmV0dXJuITB9fWZ1bmN0aW9uIFEob2UsZil7dmFyIFQ9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihvZSk7cmV0dXJuISFUJiYoTihULGYpfHxULmtpbmQ9PT0xNjImJmxlKFQuZXhwcmVzc2lvbixmKSl9ZnVuY3Rpb24gbGUob2UsZil7cmV0dXJuIE4ob2UsZil8fGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ob2UpJiYoZi5wdXNoKG9lLm5hbWUudGV4dCksITApJiZsZShvZS5leHByZXNzaW9uLGYpfWZ1bmN0aW9uIE4ob2UsZil7cmV0dXJuIGUuaXNQcm9wZXJ0eU5hbWVMaXRlcmFsKG9lKSYmKGYucHVzaChlLmdldFRleHRPZklkZW50aWZpZXJPckxpdGVyYWwob2UpKSwhMCl9ZnVuY3Rpb24gcChvZSl7dmFyIGY9W10sVD1lLmdldE5hbWVPZkRlY2xhcmF0aW9uKG9lKTtpZihUJiZULmtpbmQ9PT0xNjImJiFsZShULmV4cHJlc3Npb24sZikpcmV0dXJuIGUuZW1wdHlBcnJheTtmLnNoaWZ0KCk7Zm9yKHZhciBLPWUuZ2V0Q29udGFpbmVyTm9kZShvZSk7Szspe2lmKCFRKEssZikpcmV0dXJuIGUuZW1wdHlBcnJheTtLPWUuZ2V0Q29udGFpbmVyTm9kZShLKX1yZXR1cm4gZi5yZXZlcnNlKCl9ZnVuY3Rpb24gbShvZSxmKXtyZXR1cm4gZS5jb21wYXJlVmFsdWVzKG9lLm1hdGNoS2luZCxmLm1hdGNoS2luZCl8fGUuY29tcGFyZVN0cmluZ3NDYXNlU2Vuc2l0aXZlVUkob2UubmFtZSxmLm5hbWUpfWZ1bmN0aW9uIEcob2Upe3ZhciBmPW9lLmRlY2xhcmF0aW9uLFQ9ZS5nZXRDb250YWluZXJOb2RlKGYpLEs9VCYmZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihUKTtyZXR1cm57bmFtZTpvZS5uYW1lLGtpbmQ6ZS5nZXROb2RlS2luZChmKSxraW5kTW9kaWZpZXJzOmUuZ2V0Tm9kZU1vZGlmaWVycyhmKSxtYXRjaEtpbmQ6ZS5QYXR0ZXJuTWF0Y2hLaW5kW29lLm1hdGNoS2luZF0saXNDYXNlU2Vuc2l0aXZlOm9lLmlzQ2FzZVNlbnNpdGl2ZSxmaWxlTmFtZTpvZS5maWxlTmFtZSx0ZXh0U3BhbjplLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUoZiksY29udGFpbmVyTmFtZTpLP0sudGV4dDpcIlwiLGNvbnRhaW5lcktpbmQ6Sz9lLmdldE5vZGVLaW5kKFQpOlwiXCJ9fX0pKGE9ZS5OYXZpZ2F0ZVRvfHwoZS5OYXZpZ2F0ZVRvPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHcsQj0vXFxzKy9nLEU9MTUwLFEsbGUsTj1bXSxwLG09W10sRyxvZT1bXTtmdW5jdGlvbiBmKEllLF9lKXtRPV9lLGxlPUllO3RyeXtyZXR1cm4gZS5tYXAoZmUoaWUoSWUpKSxuZSl9ZmluYWxseXtLKCl9fUMuZ2V0TmF2aWdhdGlvbkJhckl0ZW1zPWY7ZnVuY3Rpb24gVChJZSxfZSl7UT1fZSxsZT1JZTt0cnl7cmV0dXJuIGcoaWUoSWUpKX1maW5hbGx5e0soKX19Qy5nZXROYXZpZ2F0aW9uVHJlZT1UO2Z1bmN0aW9uIEsoKXtsZT12b2lkIDAsUT12b2lkIDAsTj1bXSxwPXZvaWQgMCxvZT1bXX1mdW5jdGlvbiBiKEllKXtyZXR1cm4gcnIoSWUuZ2V0VGV4dChsZSkpfWZ1bmN0aW9uIHNlKEllKXtyZXR1cm4gSWUubm9kZS5raW5kfWZ1bmN0aW9uIEooSWUsX2Upe0llLmNoaWxkcmVuP0llLmNoaWxkcmVuLnB1c2goX2UpOkllLmNoaWxkcmVuPVtfZV19ZnVuY3Rpb24gaWUoSWUpe2UuRGVidWcuYXNzZXJ0KCFOLmxlbmd0aCk7dmFyIF9lPXtub2RlOkllLG5hbWU6dm9pZCAwLGFkZGl0aW9uYWxOb2Rlczp2b2lkIDAscGFyZW50OnZvaWQgMCxjaGlsZHJlbjp2b2lkIDAsaW5kZW50OjB9O3A9X2U7Zm9yKHZhciB3ZT0wLGRlPUllLnN0YXRlbWVudHM7d2U8ZGUubGVuZ3RoO3dlKyspe3ZhciB5ZT1kZVt3ZV07QSh5ZSl9cmV0dXJuIEYoKSxlLkRlYnVnLmFzc2VydCghcCYmIU4ubGVuZ3RoKSxfZX1mdW5jdGlvbiBSKEllLF9lKXtKKHAscShJZSxfZSkpfWZ1bmN0aW9uIHEoSWUsX2Upe3JldHVybntub2RlOkllLG5hbWU6X2V8fChlLmlzRGVjbGFyYXRpb24oSWUpfHxlLmlzRXhwcmVzc2lvbihJZSk/ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihJZSk6dm9pZCAwKSxhZGRpdGlvbmFsTm9kZXM6dm9pZCAwLHBhcmVudDpwLGNoaWxkcmVuOnZvaWQgMCxpbmRlbnQ6cC5pbmRlbnQrMX19ZnVuY3Rpb24gTyhJZSl7R3x8KEc9bmV3IGUuTWFwKSxHLnNldChJZSwhMCl9ZnVuY3Rpb24gdmUoSWUpe2Zvcih2YXIgX2U9MDtfZTxJZTtfZSsrKUYoKX1mdW5jdGlvbiBlZShJZSxfZSl7Zm9yKHZhciB3ZT1bXTshZS5pc1Byb3BlcnR5TmFtZUxpdGVyYWwoX2UpOyl7dmFyIGRlPWUuZ2V0TmFtZU9yQXJndW1lbnQoX2UpLHllPWUuZ2V0RWxlbWVudE9yUHJvcGVydHlBY2Nlc3NOYW1lKF9lKTtfZT1fZS5leHByZXNzaW9uLCEoeWU9PT1cInByb3RvdHlwZVwifHxlLmlzUHJpdmF0ZUlkZW50aWZpZXIoZGUpKSYmd2UucHVzaChkZSl9d2UucHVzaChfZSk7Zm9yKHZhciBBZT13ZS5sZW5ndGgtMTtBZT4wO0FlLS0pe3ZhciBkZT13ZVtBZV07aGUoSWUsZGUpfXJldHVyblt3ZS5sZW5ndGgtMSx3ZVswXV19ZnVuY3Rpb24gaGUoSWUsX2Upe3ZhciB3ZT1xKEllLF9lKTtKKHAsd2UpLE4ucHVzaChwKSxtLnB1c2goRyksRz12b2lkIDAscD13ZX1mdW5jdGlvbiBGKCl7cC5jaGlsZHJlbiYmKHkocC5jaGlsZHJlbixwKSxJKHAuY2hpbGRyZW4pKSxwPU4ucG9wKCksRz1tLnBvcCgpfWZ1bmN0aW9uIHgoSWUsX2Usd2Upe2hlKEllLHdlKSxBKF9lKSxGKCl9ZnVuY3Rpb24gWChJZSl7SWUuaW5pdGlhbGl6ZXImJkhlKEllLmluaXRpYWxpemVyKT8oaGUoSWUpLGUuZm9yRWFjaENoaWxkKEllLmluaXRpYWxpemVyLEEpLEYoKSk6eChJZSxJZS5pbml0aWFsaXplcil9ZnVuY3Rpb24gJChJZSl7cmV0dXJuIWUuaGFzRHluYW1pY05hbWUoSWUpfHxJZS5raW5kIT09MjIxJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEllLm5hbWUuZXhwcmVzc2lvbikmJmUuaXNJZGVudGlmaWVyKEllLm5hbWUuZXhwcmVzc2lvbi5leHByZXNzaW9uKSYmZS5pZFRleHQoSWUubmFtZS5leHByZXNzaW9uLmV4cHJlc3Npb24pPT09XCJTeW1ib2xcIn1mdW5jdGlvbiBBKEllKXt2YXIgX2U7aWYoUS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCksISghSWV8fGUuaXNUb2tlbihJZSkpKXN3aXRjaChJZS5raW5kKXtjYXNlIDE3MTp2YXIgd2U9SWU7eCh3ZSx3ZS5ib2R5KTtmb3IodmFyIGRlPTAseWU9d2UucGFyYW1ldGVycztkZTx5ZS5sZW5ndGg7ZGUrKyl7dmFyIEFlPXllW2RlXTtlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihBZSx3ZSkmJlIoQWUpfWJyZWFrO2Nhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMTY4OiQoSWUpJiZ4KEllLEllLmJvZHkpO2JyZWFrO2Nhc2UgMTY3OiQoSWUpJiZYKEllKTticmVhaztjYXNlIDE2NjokKEllKSYmUihJZSk7YnJlYWs7Y2FzZSAyNjc6dmFyIGVyPUllO2VyLm5hbWUmJlIoZXIubmFtZSk7dmFyIGlyPWVyLm5hbWVkQmluZGluZ3M7aWYoaXIpaWYoaXIua2luZD09PTI2OClSKGlyKTtlbHNlIGZvcih2YXIgQ3I9MCxZZT1pci5lbGVtZW50cztDcjxZZS5sZW5ndGg7Q3IrKyl7dmFyIEJyPVllW0NyXTtSKEJyKX1icmVhaztjYXNlIDI5Nzp4KEllLEllLm5hbWUpO2JyZWFrO2Nhc2UgMjk4OnZhciBFcj1JZS5leHByZXNzaW9uO2UuaXNJZGVudGlmaWVyKEVyKT9SKEllLEVyKTpSKEllKTticmVhaztjYXNlIDIwMzpjYXNlIDI5NjpjYXNlIDI1NDp7dmFyIE5lPUllO2UuaXNCaW5kaW5nUGF0dGVybihOZS5uYW1lKT9BKE5lLm5hbWUpOlgoTmUpO2JyZWFrfWNhc2UgMjU2OnZhciBuPUllLm5hbWU7biYmZS5pc0lkZW50aWZpZXIobikmJk8obi50ZXh0KSx4KEllLEllLmJvZHkpO2JyZWFrO2Nhc2UgMjE0OmNhc2UgMjEzOngoSWUsSWUuYm9keSk7YnJlYWs7Y2FzZSAyNjA6aGUoSWUpO2Zvcih2YXIgbHI9MCxiZT1JZS5tZW1iZXJzO2xyPGJlLmxlbmd0aDtscisrKXt2YXIgR2U9YmVbbHJdO0JlKEdlKXx8UihHZSl9RigpO2JyZWFrO2Nhc2UgMjU3OmNhc2UgMjI2OmNhc2UgMjU4OmhlKEllKTtmb3IodmFyIHVyPTAseXI9SWUubWVtYmVyczt1cjx5ci5sZW5ndGg7dXIrKyl7dmFyIEdlPXlyW3VyXTtBKEdlKX1GKCk7YnJlYWs7Y2FzZSAyNjE6eChJZSxaKEllKS5ib2R5KTticmVhaztjYXNlIDI3MTp7dmFyIElyPUllLmV4cHJlc3Npb24sTmU9ZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKElyKXx8ZS5pc0NhbGxFeHByZXNzaW9uKElyKT9JcjplLmlzQXJyb3dGdW5jdGlvbihJcil8fGUuaXNGdW5jdGlvbkV4cHJlc3Npb24oSXIpP0lyLmJvZHk6dm9pZCAwO05lPyhoZShJZSksQShOZSksRigpKTpSKEllKTticmVha31jYXNlIDI3NTpjYXNlIDI2NTpjYXNlIDE3NjpjYXNlIDE3NDpjYXNlIDE3NTpjYXNlIDI1OTpSKEllKTticmVhaztjYXNlIDIwODpjYXNlIDIyMTp7dmFyIHdyPWUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChJZSk7c3dpdGNoKHdyKXtjYXNlIDE6Y2FzZSAyOngoSWUsSWUucmlnaHQpO3JldHVybjtjYXNlIDY6Y2FzZSAzOnt2YXIgVXI9SWUsaWk9VXIubGVmdCxtaT13cj09PTM/aWkuZXhwcmVzc2lvbjppaSxwZT0wLG9yPXZvaWQgMDtlLmlzSWRlbnRpZmllcihtaS5leHByZXNzaW9uKT8oTyhtaS5leHByZXNzaW9uLnRleHQpLG9yPW1pLmV4cHJlc3Npb24pOihfZT1lZShVcixtaS5leHByZXNzaW9uKSxwZT1fZVswXSxvcj1fZVsxXSksd3I9PT02P2UuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihVci5yaWdodCkmJlVyLnJpZ2h0LnByb3BlcnRpZXMubGVuZ3RoPjAmJihoZShVcixvciksZS5mb3JFYWNoQ2hpbGQoVXIucmlnaHQsQSksRigpKTplLmlzRnVuY3Rpb25FeHByZXNzaW9uKFVyLnJpZ2h0KXx8ZS5pc0Fycm93RnVuY3Rpb24oVXIucmlnaHQpP3goSWUsVXIucmlnaHQsb3IpOihoZShVcixvcikseChJZSxVci5yaWdodCxpaS5uYW1lKSxGKCkpLHZlKHBlKTtyZXR1cm59Y2FzZSA3OmNhc2UgOTp7dmFyIHFyPUllLG9yPXdyPT09Nz9xci5hcmd1bWVudHNbMF06cXIuYXJndW1lbnRzWzBdLmV4cHJlc3Npb24sc2k9cXIuYXJndW1lbnRzWzFdLERpPWVlKEllLG9yKSxwZT1EaVswXSx3aT1EaVsxXTtoZShJZSx3aSksaGUoSWUsZS5zZXRUZXh0UmFuZ2UoZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoc2kudGV4dCksc2kpKSxBKEllLmFyZ3VtZW50c1syXSksRigpLEYoKSx2ZShwZSk7cmV0dXJufWNhc2UgNTp7dmFyIFVyPUllLGlpPVVyLmxlZnQsWGk9aWkuZXhwcmVzc2lvbjtpZihlLmlzSWRlbnRpZmllcihYaSkmJmUuZ2V0RWxlbWVudE9yUHJvcGVydHlBY2Nlc3NOYW1lKGlpKSE9PVwicHJvdG90eXBlXCImJkcmJkcuaGFzKFhpLnRleHQpKXtlLmlzRnVuY3Rpb25FeHByZXNzaW9uKFVyLnJpZ2h0KXx8ZS5pc0Fycm93RnVuY3Rpb24oVXIucmlnaHQpP3goSWUsVXIucmlnaHQsWGkpOmUuaXNCaW5kYWJsZVN0YXRpY0FjY2Vzc0V4cHJlc3Npb24oaWkpJiYoaGUoVXIsWGkpLHgoVXIubGVmdCxVci5yaWdodCxlLmdldE5hbWVPckFyZ3VtZW50KGlpKSksRigpKTtyZXR1cm59YnJlYWt9Y2FzZSA0OmNhc2UgMDpjYXNlIDg6YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKHdyKX19ZGVmYXVsdDplLmhhc0pTRG9jTm9kZXMoSWUpJiZlLmZvckVhY2goSWUuanNEb2MsZnVuY3Rpb24oZXQpe2UuZm9yRWFjaChldC50YWdzLGZ1bmN0aW9uKEdpKXtlLmlzSlNEb2NUeXBlQWxpYXMoR2kpJiZSKEdpKX0pfSksZS5mb3JFYWNoQ2hpbGQoSWUsQSl9fWZ1bmN0aW9uIHkoSWUsX2Upe3ZhciB3ZT1uZXcgZS5NYXA7ZS5maWx0ZXJNdXRhdGUoSWUsZnVuY3Rpb24oZGUseWUpe3ZhciBBZT1kZS5uYW1lfHxlLmdldE5hbWVPZkRlY2xhcmF0aW9uKGRlLm5vZGUpLGVyPUFlJiZiKEFlKTtpZighZXIpcmV0dXJuITA7dmFyIGlyPXdlLmdldChlcik7aWYoIWlyKXJldHVybiB3ZS5zZXQoZXIsZGUpLCEwO2lmKGlyIGluc3RhbmNlb2YgQXJyYXkpe2Zvcih2YXIgQ3I9MCxZZT1pcjtDcjxZZS5sZW5ndGg7Q3IrKyl7dmFyIEJyPVllW0NyXTtpZihQKEJyLGRlLHllLF9lKSlyZXR1cm4hMX1yZXR1cm4gaXIucHVzaChkZSksITB9ZWxzZXt2YXIgQnI9aXI7cmV0dXJuIFAoQnIsZGUseWUsX2UpPyExOih3ZS5zZXQoZXIsW0JyLGRlXSksITApfX0pfXZhciBWPSh3PXt9LHdbNV09ITAsd1szXT0hMCx3WzddPSEwLHdbOV09ITAsd1swXT0hMSx3WzFdPSExLHdbMl09ITEsd1s4XT0hMSx3WzZdPSEwLHdbNF09ITEsdyk7ZnVuY3Rpb24gTChJZSxfZSx3ZSxkZSl7ZnVuY3Rpb24geWUoTmUpe3JldHVybiBlLmlzRnVuY3Rpb25FeHByZXNzaW9uKE5lKXx8ZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oTmUpfHxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihOZSl9dmFyIEFlPWUuaXNCaW5hcnlFeHByZXNzaW9uKF9lLm5vZGUpfHxlLmlzQ2FsbEV4cHJlc3Npb24oX2Uubm9kZSk/ZS5nZXRBc3NpZ25tZW50RGVjbGFyYXRpb25LaW5kKF9lLm5vZGUpOjAsZXI9ZS5pc0JpbmFyeUV4cHJlc3Npb24oSWUubm9kZSl8fGUuaXNDYWxsRXhwcmVzc2lvbihJZS5ub2RlKT9lLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoSWUubm9kZSk6MDtpZihWW0FlXSYmVltlcl18fHllKEllLm5vZGUpJiZWW0FlXXx8eWUoX2Uubm9kZSkmJlZbZXJdfHxlLmlzQ2xhc3NEZWNsYXJhdGlvbihJZS5ub2RlKSYmWShJZS5ub2RlKSYmVltBZV18fGUuaXNDbGFzc0RlY2xhcmF0aW9uKF9lLm5vZGUpJiZWW2VyXXx8ZS5pc0NsYXNzRGVjbGFyYXRpb24oSWUubm9kZSkmJlkoSWUubm9kZSkmJnllKF9lLm5vZGUpfHxlLmlzQ2xhc3NEZWNsYXJhdGlvbihfZS5ub2RlKSYmeWUoSWUubm9kZSkmJlkoSWUubm9kZSkpe3ZhciBpcj1JZS5hZGRpdGlvbmFsTm9kZXMmJmUubGFzdE9yVW5kZWZpbmVkKEllLmFkZGl0aW9uYWxOb2Rlcyl8fEllLm5vZGU7aWYoIWUuaXNDbGFzc0RlY2xhcmF0aW9uKEllLm5vZGUpJiYhZS5pc0NsYXNzRGVjbGFyYXRpb24oX2Uubm9kZSl8fHllKEllLm5vZGUpfHx5ZShfZS5ub2RlKSl7dmFyIENyPXllKEllLm5vZGUpP0llLm5vZGU6eWUoX2Uubm9kZSk/X2Uubm9kZTp2b2lkIDA7aWYoQ3IhPT12b2lkIDApe3ZhciBZZT1lLnNldFRleHRSYW5nZShlLmZhY3RvcnkuY3JlYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLFtdLHZvaWQgMCksQ3IpLEJyPXEoWWUpO0JyLmluZGVudD1JZS5pbmRlbnQrMSxCci5jaGlsZHJlbj1JZS5ub2RlPT09Q3I/SWUuY2hpbGRyZW46X2UuY2hpbGRyZW4sSWUuY2hpbGRyZW49SWUubm9kZT09PUNyP2UuY29uY2F0ZW5hdGUoW0JyXSxfZS5jaGlsZHJlbnx8W19lXSk6ZS5jb25jYXRlbmF0ZShJZS5jaGlsZHJlbnx8W0tlKHt9LEllKV0sW0JyXSl9ZWxzZShJZS5jaGlsZHJlbnx8X2UuY2hpbGRyZW4pJiYoSWUuY2hpbGRyZW49ZS5jb25jYXRlbmF0ZShJZS5jaGlsZHJlbnx8W0tlKHt9LEllKV0sX2UuY2hpbGRyZW58fFtfZV0pLEllLmNoaWxkcmVuJiYoeShJZS5jaGlsZHJlbixJZSksSShJZS5jaGlsZHJlbikpKTtpcj1JZS5ub2RlPWUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVDbGFzc0RlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsSWUubmFtZXx8ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCJfX2NsYXNzX19cIiksdm9pZCAwLHZvaWQgMCxbXSksSWUubm9kZSl9ZWxzZSBJZS5jaGlsZHJlbj1lLmNvbmNhdGVuYXRlKEllLmNoaWxkcmVuLF9lLmNoaWxkcmVuKSxJZS5jaGlsZHJlbiYmeShJZS5jaGlsZHJlbixJZSk7dmFyIEVyPV9lLm5vZGU7cmV0dXJuIGRlLmNoaWxkcmVuW3dlLTFdLm5vZGUuZW5kPT09aXIuZW5kP2Uuc2V0VGV4dFJhbmdlKGlyLHtwb3M6aXIucG9zLGVuZDpFci5lbmR9KTooSWUuYWRkaXRpb25hbE5vZGVzfHwoSWUuYWRkaXRpb25hbE5vZGVzPVtdKSxJZS5hZGRpdGlvbmFsTm9kZXMucHVzaChlLnNldFRleHRSYW5nZShlLmZhY3RvcnkuY3JlYXRlQ2xhc3NEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLEllLm5hbWV8fGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwiX19jbGFzc19fXCIpLHZvaWQgMCx2b2lkIDAsW10pLF9lLm5vZGUpKSksITB9cmV0dXJuIEFlIT09MH1mdW5jdGlvbiBQKEllLF9lLHdlLGRlKXtyZXR1cm4gTChJZSxfZSx3ZSxkZSk/ITA6ayhJZS5ub2RlLF9lLm5vZGUsZGUpPyhIKEllLF9lKSwhMCk6ITF9ZnVuY3Rpb24gayhJZSxfZSx3ZSl7aWYoSWUua2luZCE9PV9lLmtpbmR8fEllLnBhcmVudCE9PV9lLnBhcmVudCYmIShVKEllLHdlKSYmVShfZSx3ZSkpKXJldHVybiExO3N3aXRjaChJZS5raW5kKXtjYXNlIDE2NzpjYXNlIDE2OTpjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gZS5pc1N0YXRpYyhJZSk9PT1lLmlzU3RhdGljKF9lKTtjYXNlIDI2MTpyZXR1cm4gaihJZSxfZSkmJkZlKEllKT09PUZlKF9lKTtkZWZhdWx0OnJldHVybiEwfX1mdW5jdGlvbiBZKEllKXtyZXR1cm4hIShJZS5mbGFncyY4KX1mdW5jdGlvbiBVKEllLF9lKXt2YXIgd2U9ZS5pc01vZHVsZUJsb2NrKEllLnBhcmVudCk/SWUucGFyZW50LnBhcmVudDpJZS5wYXJlbnQ7cmV0dXJuIHdlPT09X2Uubm9kZXx8ZS5jb250YWlucyhfZS5hZGRpdGlvbmFsTm9kZXMsd2UpfWZ1bmN0aW9uIGooSWUsX2Upe3JldHVybiFJZS5ib2R5fHwhX2UuYm9keT9JZS5ib2R5PT09X2UuYm9keTpJZS5ib2R5LmtpbmQ9PT1fZS5ib2R5LmtpbmQmJihJZS5ib2R5LmtpbmQhPT0yNjF8fGooSWUuYm9keSxfZS5ib2R5KSl9ZnVuY3Rpb24gSChJZSxfZSl7dmFyIHdlO0llLmFkZGl0aW9uYWxOb2Rlcz1JZS5hZGRpdGlvbmFsTm9kZXN8fFtdLEllLmFkZGl0aW9uYWxOb2Rlcy5wdXNoKF9lLm5vZGUpLF9lLmFkZGl0aW9uYWxOb2RlcyYmKHdlPUllLmFkZGl0aW9uYWxOb2RlcykucHVzaC5hcHBseSh3ZSxfZS5hZGRpdGlvbmFsTm9kZXMpLEllLmNoaWxkcmVuPWUuY29uY2F0ZW5hdGUoSWUuY2hpbGRyZW4sX2UuY2hpbGRyZW4pLEllLmNoaWxkcmVuJiYoeShJZS5jaGlsZHJlbixJZSksSShJZS5jaGlsZHJlbikpfWZ1bmN0aW9uIEkoSWUpe0llLnNvcnQobCl9ZnVuY3Rpb24gbChJZSxfZSl7cmV0dXJuIGUuY29tcGFyZVN0cmluZ3NDYXNlU2Vuc2l0aXZlVUkoZChJZS5ub2RlKSxkKF9lLm5vZGUpKXx8ZS5jb21wYXJlVmFsdWVzKHNlKEllKSxzZShfZSkpfWZ1bmN0aW9uIGQoSWUpe2lmKEllLmtpbmQ9PT0yNjEpcmV0dXJuIFdlKEllKTt2YXIgX2U9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihJZSk7aWYoX2UmJmUuaXNQcm9wZXJ0eU5hbWUoX2UpKXt2YXIgd2U9ZS5nZXRQcm9wZXJ0eU5hbWVGb3JQcm9wZXJ0eU5hbWVOb2RlKF9lKTtyZXR1cm4gd2UmJmUudW5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMod2UpfXN3aXRjaChJZS5raW5kKXtjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDIyNjpyZXR1cm4gemUoSWUpO2RlZmF1bHQ6cmV0dXJufX1mdW5jdGlvbiBEKEllLF9lKXtpZihJZS5raW5kPT09MjYxKXJldHVybiBycihXZShJZSkpO2lmKF9lKXt2YXIgd2U9ZS5pc0lkZW50aWZpZXIoX2UpP19lLnRleHQ6ZS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKF9lKT9cIltcIi5jb25jYXQoYihfZS5hcmd1bWVudEV4cHJlc3Npb24pLFwiXVwiKTpiKF9lKTtpZih3ZS5sZW5ndGg+MClyZXR1cm4gcnIod2UpfXN3aXRjaChJZS5raW5kKXtjYXNlIDMwNTp2YXIgZGU9SWU7cmV0dXJuIGUuaXNFeHRlcm5hbE1vZHVsZShkZSk/J1wiJy5jb25jYXQoZS5lc2NhcGVTdHJpbmcoZS5nZXRCYXNlRmlsZU5hbWUoZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKGUubm9ybWFsaXplUGF0aChkZS5maWxlTmFtZSkpKSksJ1wiJyk6XCI8Z2xvYmFsPlwiO2Nhc2UgMjcxOnJldHVybiBlLmlzRXhwb3J0QXNzaWdubWVudChJZSkmJkllLmlzRXhwb3J0RXF1YWxzP1wiZXhwb3J0PVwiOlwiZGVmYXVsdFwiO2Nhc2UgMjE0OmNhc2UgMjU2OmNhc2UgMjEzOmNhc2UgMjU3OmNhc2UgMjI2OnJldHVybiBlLmdldFN5bnRhY3RpY01vZGlmaWVyRmxhZ3MoSWUpJjUxMj9cImRlZmF1bHRcIjp6ZShJZSk7Y2FzZSAxNzE6cmV0dXJuXCJjb25zdHJ1Y3RvclwiO2Nhc2UgMTc1OnJldHVyblwibmV3KClcIjtjYXNlIDE3NDpyZXR1cm5cIigpXCI7Y2FzZSAxNzY6cmV0dXJuXCJbXVwiO2RlZmF1bHQ6cmV0dXJuXCI8dW5rbm93bj5cIn19ZnVuY3Rpb24gZmUoSWUpe3ZhciBfZT1bXTtmdW5jdGlvbiB3ZSh5ZSl7aWYoZGUoeWUpJiYoX2UucHVzaCh5ZSkseWUuY2hpbGRyZW4pKWZvcih2YXIgQWU9MCxlcj15ZS5jaGlsZHJlbjtBZTxlci5sZW5ndGg7QWUrKyl7dmFyIGlyPWVyW0FlXTt3ZShpcil9fXJldHVybiB3ZShJZSksX2U7ZnVuY3Rpb24gZGUoeWUpe2lmKHllLmNoaWxkcmVuKXJldHVybiEwO3N3aXRjaChzZSh5ZSkpe2Nhc2UgMjU3OmNhc2UgMjI2OmNhc2UgMjYwOmNhc2UgMjU4OmNhc2UgMjYxOmNhc2UgMzA1OmNhc2UgMjU5OmNhc2UgMzQ1OmNhc2UgMzM4OnJldHVybiEwO2Nhc2UgMjE0OmNhc2UgMjU2OmNhc2UgMjEzOnJldHVybiBBZSh5ZSk7ZGVmYXVsdDpyZXR1cm4hMX1mdW5jdGlvbiBBZShlcil7aWYoIWVyLm5vZGUuYm9keSlyZXR1cm4hMTtzd2l0Y2goc2UoZXIucGFyZW50KSl7Y2FzZSAyNjI6Y2FzZSAzMDU6Y2FzZSAxNjk6Y2FzZSAxNzE6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19fX1mdW5jdGlvbiBnKEllKXtyZXR1cm57dGV4dDpEKEllLm5vZGUsSWUubmFtZSksa2luZDplLmdldE5vZGVLaW5kKEllLm5vZGUpLGtpbmRNb2RpZmllcnM6UmUoSWUubm9kZSksc3BhbnM6dWUoSWUpLG5hbWVTcGFuOkllLm5hbWUmJmdlKEllLm5hbWUpLGNoaWxkSXRlbXM6ZS5tYXAoSWUuY2hpbGRyZW4sZyl9fWZ1bmN0aW9uIG5lKEllKXtyZXR1cm57dGV4dDpEKEllLm5vZGUsSWUubmFtZSksa2luZDplLmdldE5vZGVLaW5kKEllLm5vZGUpLGtpbmRNb2RpZmllcnM6UmUoSWUubm9kZSksc3BhbnM6dWUoSWUpLGNoaWxkSXRlbXM6ZS5tYXAoSWUuY2hpbGRyZW4sX2UpfHxvZSxpbmRlbnQ6SWUuaW5kZW50LGJvbGRlZDohMSxncmF5ZWQ6ITF9O2Z1bmN0aW9uIF9lKHdlKXtyZXR1cm57dGV4dDpEKHdlLm5vZGUsd2UubmFtZSksa2luZDplLmdldE5vZGVLaW5kKHdlLm5vZGUpLGtpbmRNb2RpZmllcnM6ZS5nZXROb2RlTW9kaWZpZXJzKHdlLm5vZGUpLHNwYW5zOnVlKHdlKSxjaGlsZEl0ZW1zOm9lLGluZGVudDowLGJvbGRlZDohMSxncmF5ZWQ6ITF9fX1mdW5jdGlvbiB1ZShJZSl7dmFyIF9lPVtnZShJZS5ub2RlKV07aWYoSWUuYWRkaXRpb25hbE5vZGVzKWZvcih2YXIgd2U9MCxkZT1JZS5hZGRpdGlvbmFsTm9kZXM7d2U8ZGUubGVuZ3RoO3dlKyspe3ZhciB5ZT1kZVt3ZV07X2UucHVzaChnZSh5ZSkpfXJldHVybiBfZX1mdW5jdGlvbiBXZShJZSl7cmV0dXJuIGUuaXNBbWJpZW50TW9kdWxlKEllKT9lLmdldFRleHRPZk5vZGUoSWUubmFtZSk6RmUoSWUpfWZ1bmN0aW9uIEZlKEllKXtmb3IodmFyIF9lPVtlLmdldFRleHRPZklkZW50aWZpZXJPckxpdGVyYWwoSWUubmFtZSldO0llLmJvZHkmJkllLmJvZHkua2luZD09PTI2MTspSWU9SWUuYm9keSxfZS5wdXNoKGUuZ2V0VGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChJZS5uYW1lKSk7cmV0dXJuIF9lLmpvaW4oXCIuXCIpfWZ1bmN0aW9uIFooSWUpe3JldHVybiBJZS5ib2R5JiZlLmlzTW9kdWxlRGVjbGFyYXRpb24oSWUuYm9keSk/WihJZS5ib2R5KTpJZX1mdW5jdGlvbiBCZShJZSl7cmV0dXJuIUllLm5hbWV8fEllLm5hbWUua2luZD09PTE2Mn1mdW5jdGlvbiBnZShJZSl7cmV0dXJuIEllLmtpbmQ9PT0zMDU/ZS5jcmVhdGVUZXh0U3BhbkZyb21SYW5nZShJZSk6ZS5jcmVhdGVUZXh0U3BhbkZyb21Ob2RlKEllLGxlKX1mdW5jdGlvbiBSZShJZSl7cmV0dXJuIEllLnBhcmVudCYmSWUucGFyZW50LmtpbmQ9PT0yNTQmJihJZT1JZS5wYXJlbnQpLGUuZ2V0Tm9kZU1vZGlmaWVycyhJZSl9ZnVuY3Rpb24gemUoSWUpe3ZhciBfZT1JZS5wYXJlbnQ7aWYoSWUubmFtZSYmZS5nZXRGdWxsV2lkdGgoSWUubmFtZSk+MClyZXR1cm4gcnIoZS5kZWNsYXJhdGlvbk5hbWVUb1N0cmluZyhJZS5uYW1lKSk7aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oX2UpKXJldHVybiBycihlLmRlY2xhcmF0aW9uTmFtZVRvU3RyaW5nKF9lLm5hbWUpKTtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihfZSkmJl9lLm9wZXJhdG9yVG9rZW4ua2luZD09PTYzKXJldHVybiBiKF9lLmxlZnQpLnJlcGxhY2UoQixcIlwiKTtpZihlLmlzUHJvcGVydHlBc3NpZ25tZW50KF9lKSlyZXR1cm4gYihfZS5uYW1lKTtpZihlLmdldFN5bnRhY3RpY01vZGlmaWVyRmxhZ3MoSWUpJjUxMilyZXR1cm5cImRlZmF1bHRcIjtpZihlLmlzQ2xhc3NMaWtlKEllKSlyZXR1cm5cIjxjbGFzcz5cIjtpZihlLmlzQ2FsbEV4cHJlc3Npb24oX2UpKXt2YXIgd2U9RWUoX2UuZXhwcmVzc2lvbik7aWYod2UhPT12b2lkIDApe2lmKHdlPXJyKHdlKSx3ZS5sZW5ndGg+RSlyZXR1cm5cIlwiLmNvbmNhdCh3ZSxcIiBjYWxsYmFja1wiKTt2YXIgZGU9cnIoZS5tYXBEZWZpbmVkKF9lLmFyZ3VtZW50cyxmdW5jdGlvbih5ZSl7cmV0dXJuIGUuaXNTdHJpbmdMaXRlcmFsTGlrZSh5ZSk/eWUuZ2V0VGV4dChsZSk6dm9pZCAwfSkuam9pbihcIiwgXCIpKTtyZXR1cm5cIlwiLmNvbmNhdCh3ZSxcIihcIikuY29uY2F0KGRlLFwiKSBjYWxsYmFja1wiKX19cmV0dXJuXCI8ZnVuY3Rpb24+XCJ9ZnVuY3Rpb24gRWUoSWUpe2lmKGUuaXNJZGVudGlmaWVyKEllKSlyZXR1cm4gSWUudGV4dDtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEllKSl7dmFyIF9lPUVlKEllLmV4cHJlc3Npb24pLHdlPUllLm5hbWUudGV4dDtyZXR1cm4gX2U9PT12b2lkIDA/d2U6XCJcIi5jb25jYXQoX2UsXCIuXCIpLmNvbmNhdCh3ZSl9ZWxzZSByZXR1cm59ZnVuY3Rpb24gSGUoSWUpe3N3aXRjaChJZS5raW5kKXtjYXNlIDIxNDpjYXNlIDIxMzpjYXNlIDIyNjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBycihJZSl7cmV0dXJuIEllPUllLmxlbmd0aD5FP0llLnN1YnN0cmluZygwLEUpK1wiLi4uXCI6SWUsSWUucmVwbGFjZSgvXFxcXD8oXFxyP1xcbnxcXHJ8XFx1MjAyOHxcXHUyMDI5KS9nLFwiXCIpfX0pKGE9ZS5OYXZpZ2F0aW9uQmFyfHwoZS5OYXZpZ2F0aW9uQmFyPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyh4LFgsJCxBLHksVil7dmFyIEw9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLmZyb21Db250ZXh0KHtob3N0OiQsZm9ybWF0Q29udGV4dDpYLHByZWZlcmVuY2VzOnl9KSxQPWZ1bmN0aW9uKEQpe3JldHVybiBlLnN0YWJsZVNvcnQocChRKEQseCxBLFYpKSxmdW5jdGlvbihmZSxnKXtyZXR1cm4gTyhmZSxnKX0pfSxrPUIoeCx4LnN0YXRlbWVudHMuZmlsdGVyKGUuaXNJbXBvcnREZWNsYXJhdGlvbikpO2suZm9yRWFjaChmdW5jdGlvbihEKXtyZXR1cm4gZChELFApfSk7dmFyIFk9eC5zdGF0ZW1lbnRzLmZpbHRlcihlLmlzRXhwb3J0RGVjbGFyYXRpb24pO2QoWSxHKTtmb3IodmFyIFU9MCxqPXguc3RhdGVtZW50cy5maWx0ZXIoZS5pc0FtYmllbnRNb2R1bGUpO1U8ai5sZW5ndGg7VSsrKXt2YXIgSD1qW1VdO2lmKCEhSC5ib2R5KXt2YXIgST1CKHgsSC5ib2R5LnN0YXRlbWVudHMuZmlsdGVyKGUuaXNJbXBvcnREZWNsYXJhdGlvbikpO0kuZm9yRWFjaChmdW5jdGlvbihEKXtyZXR1cm4gZChELFApfSk7dmFyIGw9SC5ib2R5LnN0YXRlbWVudHMuZmlsdGVyKGUuaXNFeHBvcnREZWNsYXJhdGlvbik7ZChsLEcpfX1yZXR1cm4gTC5nZXRDaGFuZ2VzKCk7ZnVuY3Rpb24gZChELGZlKXtpZihlLmxlbmd0aChEKSE9PTApe2Uuc3VwcHJlc3NMZWFkaW5nVHJpdmlhKERbMF0pO3ZhciBnPWUuZ3JvdXAoRCxmdW5jdGlvbihaKXtyZXR1cm4gTihaLm1vZHVsZVNwZWNpZmllcil9KSxuZT1lLnN0YWJsZVNvcnQoZyxmdW5jdGlvbihaLEJlKXtyZXR1cm4gSyhaWzBdLm1vZHVsZVNwZWNpZmllcixCZVswXS5tb2R1bGVTcGVjaWZpZXIpfSksdWU9ZS5mbGF0TWFwKG5lLGZ1bmN0aW9uKFope3JldHVybiBOKFpbMF0ubW9kdWxlU3BlY2lmaWVyKT9mZShaKTpafSk7aWYodWUubGVuZ3RoPT09MClMLmRlbGV0ZU5vZGVzKHgsRCx7dHJhaWxpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5UcmFpbGluZ1RyaXZpYU9wdGlvbi5JbmNsdWRlfSwhMCk7ZWxzZXt2YXIgV2U9e2xlYWRpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5MZWFkaW5nVHJpdmlhT3B0aW9uLkV4Y2x1ZGUsdHJhaWxpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5UcmFpbGluZ1RyaXZpYU9wdGlvbi5JbmNsdWRlLHN1ZmZpeDplLmdldE5ld0xpbmVPckRlZmF1bHRGcm9tSG9zdCgkLFgub3B0aW9ucyl9O0wucmVwbGFjZU5vZGVXaXRoTm9kZXMoeCxEWzBdLHVlLFdlKTt2YXIgRmU9TC5ub2RlSGFzVHJhaWxpbmdDb21tZW50KHgsRFswXSxXZSk7TC5kZWxldGVOb2Rlcyh4LEQuc2xpY2UoMSkse3RyYWlsaW5nVHJpdmlhT3B0aW9uOmUudGV4dENoYW5nZXMuVHJhaWxpbmdUcml2aWFPcHRpb24uSW5jbHVkZX0sRmUpfX19fUMub3JnYW5pemVJbXBvcnRzPXc7ZnVuY3Rpb24gQih4LFgpe2Zvcih2YXIgJD1lLmNyZWF0ZVNjYW5uZXIoeC5sYW5ndWFnZVZlcnNpb24sITEseC5sYW5ndWFnZVZhcmlhbnQpLEE9W10seT0wLFY9MCxMPVg7VjxMLmxlbmd0aDtWKyspe3ZhciBQPUxbVl07RSh4LFAsJCkmJnkrKyxBW3ldfHwoQVt5XT1bXSksQVt5XS5wdXNoKFApfXJldHVybiBBfWZ1bmN0aW9uIEUoeCxYLCQpe3ZhciBBPVguZ2V0RnVsbFN0YXJ0KCkseT1YLmdldFN0YXJ0KCk7JC5zZXRUZXh0KHgudGV4dCxBLHktQSk7Zm9yKHZhciBWPTA7JC5nZXRUb2tlblBvcygpPHk7KXt2YXIgTD0kLnNjYW4oKTtpZihMPT09NCYmKFYrKyxWPj0yKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBRKHgsWCwkLEEpe2lmKEEpcmV0dXJuIHg7Zm9yKHZhciB5PSQuZ2V0VHlwZUNoZWNrZXIoKSxWPSQuZ2V0Q29tcGlsZXJPcHRpb25zKCksTD15LmdldEpzeE5hbWVzcGFjZShYKSxQPXkuZ2V0SnN4RnJhZ21lbnRGYWN0b3J5KFgpLGs9ISEoWC50cmFuc2Zvcm1GbGFncyYyKSxZPVtdLFU9MCxqPXg7VTxqLmxlbmd0aDtVKyspe3ZhciBIPWpbVV0sST1ILmltcG9ydENsYXVzZSxsPUgubW9kdWxlU3BlY2lmaWVyO2lmKCFJKXtZLnB1c2goSCk7Y29udGludWV9dmFyIGQ9SS5uYW1lLEQ9SS5uYW1lZEJpbmRpbmdzO2lmKGQmJiFnKGQpJiYoZD12b2lkIDApLEQpaWYoZS5pc05hbWVzcGFjZUltcG9ydChEKSlnKEQubmFtZSl8fChEPXZvaWQgMCk7ZWxzZXt2YXIgZmU9RC5lbGVtZW50cy5maWx0ZXIoZnVuY3Rpb24obmUpe3JldHVybiBnKG5lLm5hbWUpfSk7ZmUubGVuZ3RoPEQuZWxlbWVudHMubGVuZ3RoJiYoRD1mZS5sZW5ndGg/ZS5mYWN0b3J5LnVwZGF0ZU5hbWVkSW1wb3J0cyhELGZlKTp2b2lkIDApfWR8fEQ/WS5wdXNoKG9lKEgsZCxEKSk6bGUoWCxsKSYmKFguaXNEZWNsYXJhdGlvbkZpbGU/WS5wdXNoKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbihILmRlY29yYXRvcnMsSC5tb2RpZmllcnMsdm9pZCAwLGwsdm9pZCAwKSk6WS5wdXNoKEgpKX1yZXR1cm4gWTtmdW5jdGlvbiBnKG5lKXtyZXR1cm4gayYmKG5lLnRleHQ9PT1MfHxQJiZuZS50ZXh0PT09UCkmJmUuanN4TW9kZU5lZWRzRXhwbGljaXRJbXBvcnQoVi5qc3gpfHxlLkZpbmRBbGxSZWZlcmVuY2VzLkNvcmUuaXNTeW1ib2xSZWZlcmVuY2VkSW5GaWxlKG5lLHksWCl9fWZ1bmN0aW9uIGxlKHgsWCl7dmFyICQ9ZS5pc1N0cmluZ0xpdGVyYWwoWCkmJlgudGV4dDtyZXR1cm4gZS5pc1N0cmluZygkKSYmZS5zb21lKHgubW9kdWxlQXVnbWVudGF0aW9ucyxmdW5jdGlvbihBKXtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWwoQSkmJkEudGV4dD09PSR9KX1mdW5jdGlvbiBOKHgpe3JldHVybiB4IT09dm9pZCAwJiZlLmlzU3RyaW5nTGl0ZXJhbExpa2UoeCk/eC50ZXh0OnZvaWQgMH1mdW5jdGlvbiBwKHgpe3ZhciBYO2lmKHgubGVuZ3RoPT09MClyZXR1cm4geDt2YXIgJD1tKHgpLEE9JC5pbXBvcnRXaXRob3V0Q2xhdXNlLHk9JC50eXBlT25seUltcG9ydHMsVj0kLnJlZ3VsYXJJbXBvcnRzLEw9W107QSYmTC5wdXNoKEEpO2Zvcih2YXIgUD0wLGs9W1YseV07UDxrLmxlbmd0aDtQKyspe3ZhciBZPWtbUF0sVT1ZPT09eSxqPVkuZGVmYXVsdEltcG9ydHMsSD1ZLm5hbWVzcGFjZUltcG9ydHMsST1ZLm5hbWVkSW1wb3J0cztpZighVSYmai5sZW5ndGg9PT0xJiZILmxlbmd0aD09PTEmJkkubGVuZ3RoPT09MCl7dmFyIGw9alswXTtMLnB1c2gob2UobCxsLmltcG9ydENsYXVzZS5uYW1lLEhbMF0uaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpKTtjb250aW51ZX1mb3IodmFyIGQ9ZS5zdGFibGVTb3J0KEgsZnVuY3Rpb24oUmUsemUpe3JldHVybiBiKFJlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzLm5hbWUsemUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MubmFtZSl9KSxEPTAsZmU9ZDtEPGZlLmxlbmd0aDtEKyspe3ZhciBnPWZlW0RdO0wucHVzaChvZShnLHZvaWQgMCxnLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKSl9aWYoIShqLmxlbmd0aD09PTAmJkkubGVuZ3RoPT09MCkpe3ZhciBuZT12b2lkIDAsdWU9W107aWYoai5sZW5ndGg9PT0xKW5lPWpbMF0uaW1wb3J0Q2xhdXNlLm5hbWU7ZWxzZSBmb3IodmFyIFdlPTAsRmU9ajtXZTxGZS5sZW5ndGg7V2UrKyl7dmFyIGw9RmVbV2VdO3VlLnB1c2goZS5mYWN0b3J5LmNyZWF0ZUltcG9ydFNwZWNpZmllcighMSxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcImRlZmF1bHRcIiksbC5pbXBvcnRDbGF1c2UubmFtZSkpfXVlLnB1c2guYXBwbHkodWUsaGUoSSkpO3ZhciBaPWYodWUpLEJlPWoubGVuZ3RoPjA/alswXTpJWzBdLGdlPVoubGVuZ3RoPT09MD9uZT92b2lkIDA6ZS5mYWN0b3J5LmNyZWF0ZU5hbWVkSW1wb3J0cyhlLmVtcHR5QXJyYXkpOkkubGVuZ3RoPT09MD9lLmZhY3RvcnkuY3JlYXRlTmFtZWRJbXBvcnRzKFopOmUuZmFjdG9yeS51cGRhdGVOYW1lZEltcG9ydHMoSVswXS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncyxaKTtVJiZuZSYmZ2U/KEwucHVzaChvZShCZSxuZSx2b2lkIDApKSxMLnB1c2gob2UoKFg9SVswXSkhPT1udWxsJiZYIT09dm9pZCAwP1g6QmUsdm9pZCAwLGdlKSkpOkwucHVzaChvZShCZSxuZSxnZSkpfX1yZXR1cm4gTH1DLmNvYWxlc2NlSW1wb3J0cz1wO2Z1bmN0aW9uIG0oeCl7Zm9yKHZhciBYLCQ9e2RlZmF1bHRJbXBvcnRzOltdLG5hbWVzcGFjZUltcG9ydHM6W10sbmFtZWRJbXBvcnRzOltdfSxBPXtkZWZhdWx0SW1wb3J0czpbXSxuYW1lc3BhY2VJbXBvcnRzOltdLG5hbWVkSW1wb3J0czpbXX0seT0wLFY9eDt5PFYubGVuZ3RoO3krKyl7dmFyIEw9Vlt5XTtpZihMLmltcG9ydENsYXVzZT09PXZvaWQgMCl7WD1YfHxMO2NvbnRpbnVlfXZhciBQPUwuaW1wb3J0Q2xhdXNlLmlzVHlwZU9ubHk/JDpBLGs9TC5pbXBvcnRDbGF1c2UsWT1rLm5hbWUsVT1rLm5hbWVkQmluZGluZ3M7WSYmUC5kZWZhdWx0SW1wb3J0cy5wdXNoKEwpLFUmJihlLmlzTmFtZXNwYWNlSW1wb3J0KFUpP1AubmFtZXNwYWNlSW1wb3J0cy5wdXNoKEwpOlAubmFtZWRJbXBvcnRzLnB1c2goTCkpfXJldHVybntpbXBvcnRXaXRob3V0Q2xhdXNlOlgsdHlwZU9ubHlJbXBvcnRzOiQscmVndWxhckltcG9ydHM6QX19ZnVuY3Rpb24gRyh4KXtpZih4Lmxlbmd0aD09PTApcmV0dXJuIHg7dmFyIFg9SCh4KSwkPVguZXhwb3J0V2l0aG91dENsYXVzZSxBPVgubmFtZWRFeHBvcnRzLHk9WC50eXBlT25seUV4cG9ydHMsVj1bXTskJiZWLnB1c2goJCk7Zm9yKHZhciBMPTAsUD1bQSx5XTtMPFAubGVuZ3RoO0wrKyl7dmFyIGs9UFtMXTtpZihrLmxlbmd0aCE9PTApe3ZhciBZPVtdO1kucHVzaC5hcHBseShZLGUuZmxhdE1hcChrLGZ1bmN0aW9uKEkpe3JldHVybiBJLmV4cG9ydENsYXVzZSYmZS5pc05hbWVkRXhwb3J0cyhJLmV4cG9ydENsYXVzZSk/SS5leHBvcnRDbGF1c2UuZWxlbWVudHM6ZS5lbXB0eUFycmF5fSkpO3ZhciBVPWYoWSksaj1rWzBdO1YucHVzaChlLmZhY3RvcnkudXBkYXRlRXhwb3J0RGVjbGFyYXRpb24oaixqLmRlY29yYXRvcnMsai5tb2RpZmllcnMsai5pc1R5cGVPbmx5LGouZXhwb3J0Q2xhdXNlJiYoZS5pc05hbWVkRXhwb3J0cyhqLmV4cG9ydENsYXVzZSk/ZS5mYWN0b3J5LnVwZGF0ZU5hbWVkRXhwb3J0cyhqLmV4cG9ydENsYXVzZSxVKTplLmZhY3RvcnkudXBkYXRlTmFtZXNwYWNlRXhwb3J0KGouZXhwb3J0Q2xhdXNlLGouZXhwb3J0Q2xhdXNlLm5hbWUpKSxqLm1vZHVsZVNwZWNpZmllcixqLmFzc2VydENsYXVzZSkpfX1yZXR1cm4gVjtmdW5jdGlvbiBIKEkpe2Zvcih2YXIgbCxkPVtdLEQ9W10sZmU9MCxnPUk7ZmU8Zy5sZW5ndGg7ZmUrKyl7dmFyIG5lPWdbZmVdO25lLmV4cG9ydENsYXVzZT09PXZvaWQgMD9sPWx8fG5lOm5lLmlzVHlwZU9ubHk/RC5wdXNoKG5lKTpkLnB1c2gobmUpfXJldHVybntleHBvcnRXaXRob3V0Q2xhdXNlOmwsbmFtZWRFeHBvcnRzOmQsdHlwZU9ubHlFeHBvcnRzOkR9fX1DLmNvYWxlc2NlRXhwb3J0cz1HO2Z1bmN0aW9uIG9lKHgsWCwkKXtyZXR1cm4gZS5mYWN0b3J5LnVwZGF0ZUltcG9ydERlY2xhcmF0aW9uKHgseC5kZWNvcmF0b3JzLHgubW9kaWZpZXJzLGUuZmFjdG9yeS51cGRhdGVJbXBvcnRDbGF1c2UoeC5pbXBvcnRDbGF1c2UseC5pbXBvcnRDbGF1c2UuaXNUeXBlT25seSxYLCQpLHgubW9kdWxlU3BlY2lmaWVyLHguYXNzZXJ0Q2xhdXNlKX1mdW5jdGlvbiBmKHgpe3JldHVybiBlLnN0YWJsZVNvcnQoeCxUKX1mdW5jdGlvbiBUKHgsWCl7cmV0dXJuIGUuY29tcGFyZUJvb2xlYW5zKHguaXNUeXBlT25seSxYLmlzVHlwZU9ubHkpfHxiKHgucHJvcGVydHlOYW1lfHx4Lm5hbWUsWC5wcm9wZXJ0eU5hbWV8fFgubmFtZSl8fGIoeC5uYW1lLFgubmFtZSl9Qy5jb21wYXJlSW1wb3J0T3JFeHBvcnRTcGVjaWZpZXJzPVQ7ZnVuY3Rpb24gSyh4LFgpe3ZhciAkPXg9PT12b2lkIDA/dm9pZCAwOk4oeCksQT1YPT09dm9pZCAwP3ZvaWQgMDpOKFgpO3JldHVybiBlLmNvbXBhcmVCb29sZWFucygkPT09dm9pZCAwLEE9PT12b2lkIDApfHxlLmNvbXBhcmVCb29sZWFucyhlLmlzRXh0ZXJuYWxNb2R1bGVOYW1lUmVsYXRpdmUoJCksZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKEEpKXx8ZS5jb21wYXJlU3RyaW5nc0Nhc2VJbnNlbnNpdGl2ZSgkLEEpfUMuY29tcGFyZU1vZHVsZVNwZWNpZmllcnM9SztmdW5jdGlvbiBiKHgsWCl7cmV0dXJuIGUuY29tcGFyZVN0cmluZ3NDYXNlSW5zZW5zaXRpdmUoeC50ZXh0LFgudGV4dCl9ZnVuY3Rpb24gc2UoeCl7dmFyIFg7c3dpdGNoKHgua2luZCl7Y2FzZSAyNjU6cmV0dXJuKFg9ZS50cnlDYXN0KHgubW9kdWxlUmVmZXJlbmNlLGUuaXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSkpPT09bnVsbHx8WD09PXZvaWQgMD92b2lkIDA6WC5leHByZXNzaW9uO2Nhc2UgMjY2OnJldHVybiB4Lm1vZHVsZVNwZWNpZmllcjtjYXNlIDIzNzpyZXR1cm4geC5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zWzBdLmluaXRpYWxpemVyLmFyZ3VtZW50c1swXX19ZnVuY3Rpb24gSih4KXtyZXR1cm4gZS5hcnJheUlzU29ydGVkKHgsTyl9Qy5pbXBvcnRzQXJlU29ydGVkPUo7ZnVuY3Rpb24gaWUoeCl7cmV0dXJuIGUuYXJyYXlJc1NvcnRlZCh4LFQpfUMuaW1wb3J0U3BlY2lmaWVyc0FyZVNvcnRlZD1pZTtmdW5jdGlvbiBSKHgsWCl7dmFyICQ9ZS5iaW5hcnlTZWFyY2goeCxYLGUuaWRlbnRpdHksTyk7cmV0dXJuICQ8MD9+JDokfUMuZ2V0SW1wb3J0RGVjbGFyYXRpb25JbnNlcnRpb25JbmRleD1SO2Z1bmN0aW9uIHEoeCxYKXt2YXIgJD1lLmJpbmFyeVNlYXJjaCh4LFgsZS5pZGVudGl0eSxUKTtyZXR1cm4gJDwwP34kOiR9Qy5nZXRJbXBvcnRTcGVjaWZpZXJJbnNlcnRpb25JbmRleD1xO2Z1bmN0aW9uIE8oeCxYKXtyZXR1cm4gSyhzZSh4KSxzZShYKSl8fHZlKHgsWCl9Qy5jb21wYXJlSW1wb3J0c09yUmVxdWlyZVN0YXRlbWVudHM9TztmdW5jdGlvbiB2ZSh4LFgpe3JldHVybiBlLmNvbXBhcmVWYWx1ZXMoZWUoeCksZWUoWCkpfWZ1bmN0aW9uIGVlKHgpe3ZhciBYO3N3aXRjaCh4LmtpbmQpe2Nhc2UgMjY2OnJldHVybiB4LmltcG9ydENsYXVzZT94LmltcG9ydENsYXVzZS5pc1R5cGVPbmx5PzE6KChYPXguaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpPT09bnVsbHx8WD09PXZvaWQgMD92b2lkIDA6WC5raW5kKT09PTI2OD8yOnguaW1wb3J0Q2xhdXNlLm5hbWU/Mzo0OjA7Y2FzZSAyNjU6cmV0dXJuIDU7Y2FzZSAyMzc6cmV0dXJuIDZ9fWZ1bmN0aW9uIGhlKHgpe3JldHVybiBlLmZsYXRNYXAoeCxmdW5jdGlvbihYKXtyZXR1cm4gZS5tYXAoRihYKSxmdW5jdGlvbigkKXtyZXR1cm4gJC5uYW1lJiYkLnByb3BlcnR5TmFtZSYmJC5uYW1lLmVzY2FwZWRUZXh0PT09JC5wcm9wZXJ0eU5hbWUuZXNjYXBlZFRleHQ/ZS5mYWN0b3J5LnVwZGF0ZUltcG9ydFNwZWNpZmllcigkLCQuaXNUeXBlT25seSx2b2lkIDAsJC5uYW1lKTokfSl9KX1mdW5jdGlvbiBGKHgpe3ZhciBYO3JldHVybigoWD14LmltcG9ydENsYXVzZSk9PT1udWxsfHxYPT09dm9pZCAwP3ZvaWQgMDpYLm5hbWVkQmluZGluZ3MpJiZlLmlzTmFtZWRJbXBvcnRzKHguaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpP3guaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MuZWxlbWVudHM6dm9pZCAwfX0pKGE9ZS5Pcmdhbml6ZUltcG9ydHN8fChlLk9yZ2FuaXplSW1wb3J0cz17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe2Z1bmN0aW9uIHcoYixzZSl7dmFyIEo9W107cmV0dXJuIEIoYixzZSxKKSxFKGIsSiksSi5zb3J0KGZ1bmN0aW9uKGllLFIpe3JldHVybiBpZS50ZXh0U3Bhbi5zdGFydC1SLnRleHRTcGFuLnN0YXJ0fSl9Qy5jb2xsZWN0RWxlbWVudHM9dztmdW5jdGlvbiBCKGIsc2UsSil7Zm9yKHZhciBpZT00MCxSPTAscT1WZShWZShbXSxiLnN0YXRlbWVudHMsITApLFtiLmVuZE9mRmlsZVRva2VuXSwhMSksTz1xLmxlbmd0aDtSPE87KXtmb3IoO1I8TyYmIWUuaXNBbnlJbXBvcnRTeW50YXgocVtSXSk7KWhlKHFbUl0pLFIrKztpZihSPT09TylicmVhaztmb3IodmFyIHZlPVI7UjxPJiZlLmlzQW55SW1wb3J0U3ludGF4KHFbUl0pOylwKHFbUl0sYixzZSxKKSxSKys7dmFyIGVlPVItMTtlZSE9PXZlJiZKLnB1c2gobShlLmZpbmRDaGlsZE9mS2luZChxW3ZlXSwxMDAsYikuZ2V0U3RhcnQoYikscVtlZV0uZ2V0RW5kKCksXCJpbXBvcnRzXCIpKX1mdW5jdGlvbiBoZShGKXt2YXIgeDtpZihpZSE9PTApe3NlLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKSwoZS5pc0RlY2xhcmF0aW9uKEYpfHxlLmlzVmFyaWFibGVTdGF0ZW1lbnQoRil8fGUuaXNSZXR1cm5TdGF0ZW1lbnQoRil8fGUuaXNDYWxsT3JOZXdFeHByZXNzaW9uKEYpfHxGLmtpbmQ9PT0xKSYmcChGLGIsc2UsSiksZS5pc0Z1bmN0aW9uTGlrZShGKSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oRi5wYXJlbnQpJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEYucGFyZW50LmxlZnQpJiZwKEYucGFyZW50LmxlZnQsYixzZSxKKSwoZS5pc0Jsb2NrKEYpfHxlLmlzTW9kdWxlQmxvY2soRikpJiZOKEYuc3RhdGVtZW50cy5lbmQsYixzZSxKKSwoZS5pc0NsYXNzTGlrZShGKXx8ZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKEYpKSYmTihGLm1lbWJlcnMuZW5kLGIsc2UsSik7dmFyIFg9RyhGLGIpO1gmJkoucHVzaChYKSxpZS0tLGUuaXNDYWxsRXhwcmVzc2lvbihGKT8oaWUrKyxoZShGLmV4cHJlc3Npb24pLGllLS0sRi5hcmd1bWVudHMuZm9yRWFjaChoZSksKHg9Ri50eXBlQXJndW1lbnRzKT09PW51bGx8fHg9PT12b2lkIDB8fHguZm9yRWFjaChoZSkpOmUuaXNJZlN0YXRlbWVudChGKSYmRi5lbHNlU3RhdGVtZW50JiZlLmlzSWZTdGF0ZW1lbnQoRi5lbHNlU3RhdGVtZW50KT8oaGUoRi5leHByZXNzaW9uKSxoZShGLnRoZW5TdGF0ZW1lbnQpLGllKyssaGUoRi5lbHNlU3RhdGVtZW50KSxpZS0tKTpGLmZvckVhY2hDaGlsZChoZSksaWUrK319fWZ1bmN0aW9uIEUoYixzZSl7Zm9yKHZhciBKPVtdLGllPWIuZ2V0TGluZVN0YXJ0cygpLFI9MCxxPWllO1I8cS5sZW5ndGg7UisrKXt2YXIgTz1xW1JdLHZlPWIuZ2V0TGluZUVuZE9mUG9zaXRpb24oTyksZWU9Yi50ZXh0LnN1YnN0cmluZyhPLHZlKSxoZT1sZShlZSk7aWYoISghaGV8fGUuaXNJbkNvbW1lbnQoYixPKSkpaWYoaGVbMV0pe3ZhciB4PUoucG9wKCk7eCYmKHgudGV4dFNwYW4ubGVuZ3RoPXZlLXgudGV4dFNwYW4uc3RhcnQseC5oaW50U3Bhbi5sZW5ndGg9dmUteC50ZXh0U3Bhbi5zdGFydCxzZS5wdXNoKHgpKX1lbHNle3ZhciBGPWUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKGIudGV4dC5pbmRleE9mKFwiLy9cIixPKSx2ZSk7Si5wdXNoKFQoRixcInJlZ2lvblwiLEYsITEsaGVbMl18fFwiI3JlZ2lvblwiKSl9fX12YXIgUT0vXiMoZW5kKT9yZWdpb24oPzpcXHMrKC4qKSk/KD86XFxyKT8kLztmdW5jdGlvbiBsZShiKXtyZXR1cm4gYj1lLnRyaW1TdHJpbmdTdGFydChiKSxlLnN0YXJ0c1dpdGgoYixcIi8vXCIpPyhiPWUudHJpbVN0cmluZyhiLnNsaWNlKDIpKSxRLmV4ZWMoYikpOm51bGx9ZnVuY3Rpb24gTihiLHNlLEosaWUpe3ZhciBSPWUuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoc2UudGV4dCxiKTtpZighUilyZXR1cm47Zm9yKHZhciBxPS0xLE89LTEsdmU9MCxlZT1zZS5nZXRGdWxsVGV4dCgpLGhlPTAsRj1SO2hlPEYubGVuZ3RoO2hlKyspe3ZhciB4PUZbaGVdLFg9eC5raW5kLCQ9eC5wb3MsQT14LmVuZDtzd2l0Y2goSi50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCksWCl7Y2FzZSAyOnZhciB5PWVlLnNsaWNlKCQsQSk7aWYobGUoeSkpe1YoKSx2ZT0wO2JyZWFrfXZlPT09MCYmKHE9JCksTz1BLHZlKys7YnJlYWs7Y2FzZSAzOlYoKSxpZS5wdXNoKG0oJCxBLFwiY29tbWVudFwiKSksdmU9MDticmVhaztkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoWCl9fVYoKTtmdW5jdGlvbiBWKCl7dmU+MSYmaWUucHVzaChtKHEsTyxcImNvbW1lbnRcIikpfX1mdW5jdGlvbiBwKGIsc2UsSixpZSl7ZS5pc0pzeFRleHQoYil8fE4oYi5wb3Msc2UsSixpZSl9ZnVuY3Rpb24gbShiLHNlLEope3JldHVybiBUKGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKGIsc2UpLEopfWZ1bmN0aW9uIEcoYixzZSl7c3dpdGNoKGIua2luZCl7Y2FzZSAyMzU6aWYoZS5pc0Z1bmN0aW9uTGlrZShiLnBhcmVudCkpcmV0dXJuIG9lKGIucGFyZW50LGIsc2UpO3N3aXRjaChiLnBhcmVudC5raW5kKXtjYXNlIDI0MDpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0MjpjYXNlIDIzOTpjYXNlIDI0MTpjYXNlIDI0ODpjYXNlIDI5MjpyZXR1cm4geChiLnBhcmVudCk7Y2FzZSAyNTI6dmFyIEo9Yi5wYXJlbnQ7aWYoSi50cnlCbG9jaz09PWIpcmV0dXJuIHgoYi5wYXJlbnQpO2lmKEouZmluYWxseUJsb2NrPT09Yil7dmFyIGllPWUuZmluZENoaWxkT2ZLaW5kKEosOTYsc2UpO2lmKGllKXJldHVybiB4KGllKX1kZWZhdWx0OnJldHVybiBUKGUuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShiLHNlKSxcImNvZGVcIil9Y2FzZSAyNjI6cmV0dXJuIHgoYi5wYXJlbnQpO2Nhc2UgMjU3OmNhc2UgMjI2OmNhc2UgMjU4OmNhc2UgMjYwOmNhc2UgMjYzOmNhc2UgMTgyOmNhc2UgMjAxOnJldHVybiB4KGIpO2Nhc2UgMTg0OnJldHVybiB4KGIsITEsIWUuaXNUdXBsZVR5cGVOb2RlKGIucGFyZW50KSwyMik7Y2FzZSAyODk6Y2FzZSAyOTA6cmV0dXJuIFgoYi5zdGF0ZW1lbnRzKTtjYXNlIDIwNTpyZXR1cm4gRihiKTtjYXNlIDIwNDpyZXR1cm4gRihiLDIyKTtjYXNlIDI3ODpyZXR1cm4gTyhiKTtjYXNlIDI4MjpyZXR1cm4gdmUoYik7Y2FzZSAyNzk6Y2FzZSAyODA6cmV0dXJuIGVlKGIuYXR0cmlidXRlcyk7Y2FzZSAyMjM6Y2FzZSAxNDpyZXR1cm4gaGUoYik7Y2FzZSAyMDI6cmV0dXJuIHgoYiwhMSwhZS5pc0JpbmRpbmdFbGVtZW50KGIucGFyZW50KSwyMik7Y2FzZSAyMTQ6cmV0dXJuIHEoYik7Y2FzZSAyMDg6cmV0dXJuIFIoYik7Y2FzZSAyMTI6cmV0dXJuICQoYil9ZnVuY3Rpb24gUihBKXtpZighIUEuYXJndW1lbnRzLmxlbmd0aCl7dmFyIHk9ZS5maW5kQ2hpbGRPZktpbmQoQSwyMCxzZSksVj1lLmZpbmRDaGlsZE9mS2luZChBLDIxLHNlKTtpZighKCF5fHwhVnx8ZS5wb3NpdGlvbnNBcmVPblNhbWVMaW5lKHkucG9zLFYucG9zLHNlKSkpcmV0dXJuIGYoeSxWLEEsc2UsITEsITApfX1mdW5jdGlvbiBxKEEpe2lmKCEoZS5pc0Jsb2NrKEEuYm9keSl8fGUuaXNQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihBLmJvZHkpfHxlLnBvc2l0aW9uc0FyZU9uU2FtZUxpbmUoQS5ib2R5LmdldEZ1bGxTdGFydCgpLEEuYm9keS5nZXRFbmQoKSxzZSkpKXt2YXIgeT1lLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhBLmJvZHkuZ2V0RnVsbFN0YXJ0KCksQS5ib2R5LmdldEVuZCgpKTtyZXR1cm4gVCh5LFwiY29kZVwiLGUuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShBKSl9fWZ1bmN0aW9uIE8oQSl7dmFyIHk9ZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMoQS5vcGVuaW5nRWxlbWVudC5nZXRTdGFydChzZSksQS5jbG9zaW5nRWxlbWVudC5nZXRFbmQoKSksVj1BLm9wZW5pbmdFbGVtZW50LnRhZ05hbWUuZ2V0VGV4dChzZSksTD1cIjxcIitWK1wiPi4uLjwvXCIrVitcIj5cIjtyZXR1cm4gVCh5LFwiY29kZVwiLHksITEsTCl9ZnVuY3Rpb24gdmUoQSl7dmFyIHk9ZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMoQS5vcGVuaW5nRnJhZ21lbnQuZ2V0U3RhcnQoc2UpLEEuY2xvc2luZ0ZyYWdtZW50LmdldEVuZCgpKSxWPVwiPD4uLi48Lz5cIjtyZXR1cm4gVCh5LFwiY29kZVwiLHksITEsVil9ZnVuY3Rpb24gZWUoQSl7aWYoQS5wcm9wZXJ0aWVzLmxlbmd0aCE9PTApcmV0dXJuIG0oQS5nZXRTdGFydChzZSksQS5nZXRFbmQoKSxcImNvZGVcIil9ZnVuY3Rpb24gaGUoQSl7aWYoIShBLmtpbmQ9PT0xNCYmQS50ZXh0Lmxlbmd0aD09PTApKXJldHVybiBtKEEuZ2V0U3RhcnQoc2UpLEEuZ2V0RW5kKCksXCJjb2RlXCIpfWZ1bmN0aW9uIEYoQSx5KXtyZXR1cm4geT09PXZvaWQgMCYmKHk9MTgpLHgoQSwhMSwhZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oQS5wYXJlbnQpJiYhZS5pc0NhbGxFeHByZXNzaW9uKEEucGFyZW50KSx5KX1mdW5jdGlvbiB4KEEseSxWLEwsUCl7eT09PXZvaWQgMCYmKHk9ITEpLFY9PT12b2lkIDAmJihWPSEwKSxMPT09dm9pZCAwJiYoTD0xOCksUD09PXZvaWQgMCYmKFA9TD09PTE4PzE5OjIzKTt2YXIgaz1lLmZpbmRDaGlsZE9mS2luZChiLEwsc2UpLFk9ZS5maW5kQ2hpbGRPZktpbmQoYixQLHNlKTtyZXR1cm4gayYmWSYmZihrLFksQSxzZSx5LFYpfWZ1bmN0aW9uIFgoQSl7cmV0dXJuIEEubGVuZ3RoP1QoZS5jcmVhdGVUZXh0U3BhbkZyb21SYW5nZShBKSxcImNvZGVcIik6dm9pZCAwfWZ1bmN0aW9uICQoQSl7aWYoIWUucG9zaXRpb25zQXJlT25TYW1lTGluZShBLmdldFN0YXJ0KCksQS5nZXRFbmQoKSxzZSkpe3ZhciB5PWUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKEEuZ2V0U3RhcnQoKSxBLmdldEVuZCgpKTtyZXR1cm4gVCh5LFwiY29kZVwiLGUuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShBKSl9fX1mdW5jdGlvbiBvZShiLHNlLEope3ZhciBpZT1LKGIsc2UsSiksUj1lLmZpbmRDaGlsZE9mS2luZChzZSwxOSxKKTtyZXR1cm4gaWUmJlImJmYoaWUsUixiLEosYi5raW5kIT09MjE0KX1mdW5jdGlvbiBmKGIsc2UsSixpZSxSLHEpe1I9PT12b2lkIDAmJihSPSExKSxxPT09dm9pZCAwJiYocT0hMCk7dmFyIE89ZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMocT9iLmdldEZ1bGxTdGFydCgpOmIuZ2V0U3RhcnQoaWUpLHNlLmdldEVuZCgpKTtyZXR1cm4gVChPLFwiY29kZVwiLGUuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShKLGllKSxSKX1mdW5jdGlvbiBUKGIsc2UsSixpZSxSKXtyZXR1cm4gSj09PXZvaWQgMCYmKEo9YiksaWU9PT12b2lkIDAmJihpZT0hMSksUj09PXZvaWQgMCYmKFI9XCIuLi5cIikse3RleHRTcGFuOmIsa2luZDpzZSxoaW50U3BhbjpKLGJhbm5lclRleHQ6UixhdXRvQ29sbGFwc2U6aWV9fWZ1bmN0aW9uIEsoYixzZSxKKXtpZihlLmlzTm9kZUFycmF5TXVsdGlMaW5lKGIucGFyYW1ldGVycyxKKSl7dmFyIGllPWUuZmluZENoaWxkT2ZLaW5kKGIsMjAsSik7aWYoaWUpcmV0dXJuIGllfXJldHVybiBlLmZpbmRDaGlsZE9mS2luZChzZSwxOCxKKX19KShhPWUuT3V0bGluaW5nRWxlbWVudHNDb2xsZWN0b3J8fChlLk91dGxpbmluZ0VsZW1lbnRzQ29sbGVjdG9yPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oeSl7eVt5LmV4YWN0PTBdPVwiZXhhY3RcIix5W3kucHJlZml4PTFdPVwicHJlZml4XCIseVt5LnN1YnN0cmluZz0yXT1cInN1YnN0cmluZ1wiLHlbeS5jYW1lbENhc2U9M109XCJjYW1lbENhc2VcIn0pKGE9ZS5QYXR0ZXJuTWF0Y2hLaW5kfHwoZS5QYXR0ZXJuTWF0Y2hLaW5kPXt9KSk7ZnVuY3Rpb24gQyh5LFYpe3JldHVybntraW5kOnksaXNDYXNlU2Vuc2l0aXZlOlZ9fWZ1bmN0aW9uIHcoeSl7dmFyIFY9bmV3IGUuTWFwLEw9eS50cmltKCkuc3BsaXQoXCIuXCIpLm1hcChmdW5jdGlvbihQKXtyZXR1cm4gZihQLnRyaW0oKSl9KTtpZighTC5zb21lKGZ1bmN0aW9uKFApe3JldHVybiFQLnN1YldvcmRUZXh0Q2h1bmtzLmxlbmd0aH0pKXJldHVybntnZXRGdWxsTWF0Y2g6ZnVuY3Rpb24oUCxrKXtyZXR1cm4gQihQLGssTCxWKX0sZ2V0TWF0Y2hGb3JMYXN0U2VnbWVudE9mUGF0dGVybjpmdW5jdGlvbihQKXtyZXR1cm4gbGUoUCxlLmxhc3QoTCksVil9LHBhdHRlcm5Db250YWluc0RvdHM6TC5sZW5ndGg+MX19ZS5jcmVhdGVQYXR0ZXJuTWF0Y2hlcj13O2Z1bmN0aW9uIEIoeSxWLEwsUCl7dmFyIGs9bGUoVixlLmxhc3QoTCksUCk7aWYoISFrJiYhKEwubGVuZ3RoLTE+eS5sZW5ndGgpKXtmb3IodmFyIFksVT1MLmxlbmd0aC0yLGo9eS5sZW5ndGgtMTtVPj0wO1UtPTEsai09MSlZPU4oWSxsZSh5W2pdLExbVV0sUCkpO3JldHVybiBZfX1mdW5jdGlvbiBFKHksVil7dmFyIEw9Vi5nZXQoeSk7cmV0dXJuIEx8fFYuc2V0KHksTD12ZSh5KSksTH1mdW5jdGlvbiBRKHksVixMKXt2YXIgUD1iKHksVi50ZXh0TG93ZXJDYXNlKTtpZihQPT09MClyZXR1cm4gQyhWLnRleHQubGVuZ3RoPT09eS5sZW5ndGg/YS5leGFjdDphLnByZWZpeCxlLnN0YXJ0c1dpdGgoeSxWLnRleHQpKTtpZihWLmlzTG93ZXJDYXNlKXtpZihQPT09LTEpcmV0dXJuO2Zvcih2YXIgaz1FKHksTCksWT0wLFU9aztZPFUubGVuZ3RoO1krKyl7dmFyIGo9VVtZXTtpZihtKHksaixWLnRleHQsITApKXJldHVybiBDKGEuc3Vic3RyaW5nLG0oeSxqLFYudGV4dCwhMSkpfWlmKFYudGV4dC5sZW5ndGg8eS5sZW5ndGgmJlQoeS5jaGFyQ29kZUF0KFApKSlyZXR1cm4gQyhhLnN1YnN0cmluZywhMSl9ZWxzZXtpZih5LmluZGV4T2YoVi50ZXh0KT4wKXJldHVybiBDKGEuc3Vic3RyaW5nLCEwKTtpZihWLmNoYXJhY3RlclNwYW5zLmxlbmd0aD4wKXt2YXIgSD1FKHksTCksST1vZSh5LEgsViwhMSk/ITA6b2UoeSxILFYsITApPyExOnZvaWQgMDtpZihJIT09dm9pZCAwKXJldHVybiBDKGEuY2FtZWxDYXNlLEkpfX19ZnVuY3Rpb24gbGUoeSxWLEwpe2lmKEEoVi50b3RhbFRleHRDaHVuay50ZXh0LGZ1bmN0aW9uKEkpe3JldHVybiBJIT09MzImJkkhPT00Mn0pKXt2YXIgUD1RKHksVi50b3RhbFRleHRDaHVuayxMKTtpZihQKXJldHVybiBQfWZvcih2YXIgaz1WLnN1YldvcmRUZXh0Q2h1bmtzLFksVT0wLGo9aztVPGoubGVuZ3RoO1UrKyl7dmFyIEg9altVXTtZPU4oWSxRKHksSCxMKSl9cmV0dXJuIFl9ZnVuY3Rpb24gTih5LFYpe3JldHVybiBlLm1pbih5LFYscCl9ZnVuY3Rpb24gcCh5LFYpe3JldHVybiB5PT09dm9pZCAwPzE6Vj09PXZvaWQgMD8tMTplLmNvbXBhcmVWYWx1ZXMoeS5raW5kLFYua2luZCl8fGUuY29tcGFyZUJvb2xlYW5zKCF5LmlzQ2FzZVNlbnNpdGl2ZSwhVi5pc0Nhc2VTZW5zaXRpdmUpfWZ1bmN0aW9uIG0oeSxWLEwsUCxrKXtyZXR1cm4gaz09PXZvaWQgMCYmKGs9e3N0YXJ0OjAsbGVuZ3RoOkwubGVuZ3RofSksay5sZW5ndGg8PVYubGVuZ3RoJiYkKDAsay5sZW5ndGgsZnVuY3Rpb24oWSl7cmV0dXJuIEcoTC5jaGFyQ29kZUF0KGsuc3RhcnQrWSkseS5jaGFyQ29kZUF0KFYuc3RhcnQrWSksUCl9KX1mdW5jdGlvbiBHKHksVixMKXtyZXR1cm4gTD9zZSh5KT09PXNlKFYpOnk9PT1WfWZ1bmN0aW9uIG9lKHksVixMLFApe2Zvcih2YXIgaz1MLmNoYXJhY3RlclNwYW5zLFk9MCxVPTAsaixIOzspe2lmKFU9PT1rLmxlbmd0aClyZXR1cm4hMDtpZihZPT09Vi5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBJPVZbWV0sbD0hMTtVPGsubGVuZ3RoO1UrKyl7dmFyIGQ9a1tVXTtpZihsJiYoIVQoTC50ZXh0LmNoYXJDb2RlQXQoa1tVLTFdLnN0YXJ0KSl8fCFUKEwudGV4dC5jaGFyQ29kZUF0KGtbVV0uc3RhcnQpKSl8fCFtKHksSSxMLnRleHQsUCxkKSlicmVhaztsPSEwLGo9aj09PXZvaWQgMD9ZOmosSD1IPT09dm9pZCAwPyEwOkgsST1lLmNyZWF0ZVRleHRTcGFuKEkuc3RhcnQrZC5sZW5ndGgsSS5sZW5ndGgtZC5sZW5ndGgpfSFsJiZIIT09dm9pZCAwJiYoSD0hMSksWSsrfX1mdW5jdGlvbiBmKHkpe3JldHVybnt0b3RhbFRleHRDaHVuazpxKHkpLHN1YldvcmRUZXh0Q2h1bmtzOlIoeSl9fWZ1bmN0aW9uIFQoeSl7aWYoeT49NjUmJnk8PTkwKXJldHVybiEwO2lmKHk8MTI3fHwhZS5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoeSw5OSkpcmV0dXJuITE7dmFyIFY9U3RyaW5nLmZyb21DaGFyQ29kZSh5KTtyZXR1cm4gVj09PVYudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBLKHkpe2lmKHk+PTk3JiZ5PD0xMjIpcmV0dXJuITA7aWYoeTwxMjd8fCFlLmlzVW5pY29kZUlkZW50aWZpZXJTdGFydCh5LDk5KSlyZXR1cm4hMTt2YXIgVj1TdHJpbmcuZnJvbUNoYXJDb2RlKHkpO3JldHVybiBWPT09Vi50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGIoeSxWKXtmb3IodmFyIEw9eS5sZW5ndGgtVi5sZW5ndGgsUD1mdW5jdGlvbihVKXtpZihBKFYsZnVuY3Rpb24oaixIKXtyZXR1cm4gc2UoeS5jaGFyQ29kZUF0KEgrVSkpPT09an0pKXJldHVybnt2YWx1ZTpVfX0saz0wO2s8PUw7aysrKXt2YXIgWT1QKGspO2lmKHR5cGVvZiBZPT1cIm9iamVjdFwiKXJldHVybiBZLnZhbHVlfXJldHVybi0xfWZ1bmN0aW9uIHNlKHkpe3JldHVybiB5Pj02NSYmeTw9OTA/OTcrKHktNjUpOnk8MTI3P3k6U3RyaW5nLmZyb21DaGFyQ29kZSh5KS50b0xvd2VyQ2FzZSgpLmNoYXJDb2RlQXQoMCl9ZnVuY3Rpb24gSih5KXtyZXR1cm4geT49NDgmJnk8PTU3fWZ1bmN0aW9uIGllKHkpe3JldHVybiBUKHkpfHxLKHkpfHxKKHkpfHx5PT09OTV8fHk9PT0zNn1mdW5jdGlvbiBSKHkpe2Zvcih2YXIgVj1bXSxMPTAsUD0wLGs9MDtrPHkubGVuZ3RoO2srKyl7dmFyIFk9eS5jaGFyQ29kZUF0KGspO2llKFkpPyhQPT09MCYmKEw9ayksUCsrKTpQPjAmJihWLnB1c2gocSh5LnN1YnN0cihMLFApKSksUD0wKX1yZXR1cm4gUD4wJiZWLnB1c2gocSh5LnN1YnN0cihMLFApKSksVn1mdW5jdGlvbiBxKHkpe3ZhciBWPXkudG9Mb3dlckNhc2UoKTtyZXR1cm57dGV4dDp5LHRleHRMb3dlckNhc2U6Vixpc0xvd2VyQ2FzZTp5PT09VixjaGFyYWN0ZXJTcGFuczpPKHkpfX1mdW5jdGlvbiBPKHkpe3JldHVybiBlZSh5LCExKX1lLmJyZWFrSW50b0NoYXJhY3RlclNwYW5zPU87ZnVuY3Rpb24gdmUoeSl7cmV0dXJuIGVlKHksITApfWUuYnJlYWtJbnRvV29yZFNwYW5zPXZlO2Z1bmN0aW9uIGVlKHksVil7Zm9yKHZhciBMPVtdLFA9MCxrPTE7azx5Lmxlbmd0aDtrKyspe3ZhciBZPUooeS5jaGFyQ29kZUF0KGstMSkpLFU9Sih5LmNoYXJDb2RlQXQoaykpLGo9WCh5LFYsayksSD1WJiZ4KHksayxQKTsoaGUoeS5jaGFyQ29kZUF0KGstMSkpfHxoZSh5LmNoYXJDb2RlQXQoaykpfHxZIT09VXx8anx8SCkmJihGKHksUCxrKXx8TC5wdXNoKGUuY3JlYXRlVGV4dFNwYW4oUCxrLVApKSxQPWspfXJldHVybiBGKHksUCx5Lmxlbmd0aCl8fEwucHVzaChlLmNyZWF0ZVRleHRTcGFuKFAseS5sZW5ndGgtUCkpLEx9ZnVuY3Rpb24gaGUoeSl7c3dpdGNoKHkpe2Nhc2UgMzM6Y2FzZSAzNDpjYXNlIDM1OmNhc2UgMzc6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA0MTpjYXNlIDQyOmNhc2UgNDQ6Y2FzZSA0NTpjYXNlIDQ2OmNhc2UgNDc6Y2FzZSA1ODpjYXNlIDU5OmNhc2UgNjM6Y2FzZSA2NDpjYXNlIDkxOmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDk1OmNhc2UgMTIzOmNhc2UgMTI1OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEYoeSxWLEwpe3JldHVybiBBKHksZnVuY3Rpb24oUCl7cmV0dXJuIGhlKFApJiZQIT09OTV9LFYsTCl9ZnVuY3Rpb24geCh5LFYsTCl7cmV0dXJuIFYhPT1MJiZWKzE8eS5sZW5ndGgmJlQoeS5jaGFyQ29kZUF0KFYpKSYmSyh5LmNoYXJDb2RlQXQoVisxKSkmJkEoeSxULEwsVil9ZnVuY3Rpb24gWCh5LFYsTCl7dmFyIFA9VCh5LmNoYXJDb2RlQXQoTC0xKSksaz1UKHkuY2hhckNvZGVBdChMKSk7cmV0dXJuIGsmJighVnx8IVApfWZ1bmN0aW9uICQoeSxWLEwpe2Zvcih2YXIgUD15O1A8VjtQKyspaWYoIUwoUCkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQSh5LFYsTCxQKXtyZXR1cm4gTD09PXZvaWQgMCYmKEw9MCksUD09PXZvaWQgMCYmKFA9eS5sZW5ndGgpLCQoTCxQLGZ1bmN0aW9uKGspe3JldHVybiBWKHkuY2hhckNvZGVBdChrKSxrKX0pfX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoQyx3LEIpe3c9PT12b2lkIDAmJih3PSEwKSxCPT09dm9pZCAwJiYoQj0hMSk7dmFyIEU9e2xhbmd1YWdlVmVyc2lvbjoxLHByYWdtYXM6dm9pZCAwLGNoZWNrSnNEaXJlY3RpdmU6dm9pZCAwLHJlZmVyZW5jZWRGaWxlczpbXSx0eXBlUmVmZXJlbmNlRGlyZWN0aXZlczpbXSxsaWJSZWZlcmVuY2VEaXJlY3RpdmVzOltdLGFtZERlcGVuZGVuY2llczpbXSxoYXNOb0RlZmF1bHRMaWI6dm9pZCAwLG1vZHVsZU5hbWU6dm9pZCAwfSxRPVtdLGxlLE4scCxtPTAsRz0hMTtmdW5jdGlvbiBvZSgpe3JldHVybiBOPXAscD1lLnNjYW5uZXIuc2NhbigpLHA9PT0xOD9tKys6cD09PTE5JiZtLS0scH1mdW5jdGlvbiBmKCl7dmFyICQ9ZS5zY2FubmVyLmdldFRva2VuVmFsdWUoKSxBPWUuc2Nhbm5lci5nZXRUb2tlblBvcygpO3JldHVybntmaWxlTmFtZTokLHBvczpBLGVuZDpBKyQubGVuZ3RofX1mdW5jdGlvbiBUKCl7bGV8fChsZT1bXSksbGUucHVzaCh7cmVmOmYoKSxkZXB0aDptfSl9ZnVuY3Rpb24gSygpe1EucHVzaChmKCkpLGIoKX1mdW5jdGlvbiBiKCl7bT09PTAmJihHPSEwKX1mdW5jdGlvbiBzZSgpe3ZhciAkPWUuc2Nhbm5lci5nZXRUb2tlbigpO3JldHVybiAkPT09MTM1PygkPW9lKCksJD09PTE0MSYmKCQ9b2UoKSwkPT09MTAmJlQoKSksITApOiExfWZ1bmN0aW9uIEooKXtpZihOPT09MjQpcmV0dXJuITE7dmFyICQ9ZS5zY2FubmVyLmdldFRva2VuKCk7aWYoJD09PTEwMCl7aWYoJD1vZSgpLCQ9PT0yMCl7aWYoJD1vZSgpLCQ9PT0xMHx8JD09PTE0KXJldHVybiBLKCksITB9ZWxzZXtpZigkPT09MTApcmV0dXJuIEsoKSwhMDtpZigkPT09MTUyKXt2YXIgQT1lLnNjYW5uZXIubG9va0FoZWFkKGZ1bmN0aW9uKCl7dmFyIHk9ZS5zY2FubmVyLnNjYW4oKTtyZXR1cm4geSE9PTE1NiYmKHk9PT00MXx8eT09PTE4fHx5PT09Nzl8fGUuaXNLZXl3b3JkKHkpKX0pO0EmJigkPW9lKCkpfWlmKCQ9PT03OXx8ZS5pc0tleXdvcmQoJCkpaWYoJD1vZSgpLCQ9PT0xNTYpe2lmKCQ9b2UoKSwkPT09MTApcmV0dXJuIEsoKSwhMH1lbHNlIGlmKCQ9PT02Myl7aWYoUighMCkpcmV0dXJuITB9ZWxzZSBpZigkPT09MjcpJD1vZSgpO2Vsc2UgcmV0dXJuITA7aWYoJD09PTE4KXtmb3IoJD1vZSgpOyQhPT0xOSYmJCE9PTE7KSQ9b2UoKTskPT09MTkmJigkPW9lKCksJD09PTE1NiYmKCQ9b2UoKSwkPT09MTAmJksoKSkpfWVsc2UgJD09PTQxJiYoJD1vZSgpLCQ9PT0xMjcmJigkPW9lKCksKCQ9PT03OXx8ZS5pc0tleXdvcmQoJCkpJiYoJD1vZSgpLCQ9PT0xNTYmJigkPW9lKCksJD09PTEwJiZLKCkpKSkpfXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGllKCl7dmFyICQ9ZS5zY2FubmVyLmdldFRva2VuKCk7aWYoJD09PTkzKXtpZihiKCksJD1vZSgpLCQ9PT0xNTIpe3ZhciBBPWUuc2Nhbm5lci5sb29rQWhlYWQoZnVuY3Rpb24oKXt2YXIgeT1lLnNjYW5uZXIuc2NhbigpO3JldHVybiB5PT09NDF8fHk9PT0xOH0pO0EmJigkPW9lKCkpfWlmKCQ9PT0xOCl7Zm9yKCQ9b2UoKTskIT09MTkmJiQhPT0xOykkPW9lKCk7JD09PTE5JiYoJD1vZSgpLCQ9PT0xNTYmJigkPW9lKCksJD09PTEwJiZLKCkpKX1lbHNlIGlmKCQ9PT00MSkkPW9lKCksJD09PTE1NiYmKCQ9b2UoKSwkPT09MTAmJksoKSk7ZWxzZSBpZigkPT09MTAwKXtpZigkPW9lKCksJD09PTE1Mil7dmFyIEE9ZS5zY2FubmVyLmxvb2tBaGVhZChmdW5jdGlvbigpe3ZhciBWPWUuc2Nhbm5lci5zY2FuKCk7cmV0dXJuIFY9PT03OXx8ZS5pc0tleXdvcmQoVil9KTtBJiYoJD1vZSgpKX1pZigoJD09PTc5fHxlLmlzS2V5d29yZCgkKSkmJigkPW9lKCksJD09PTYzJiZSKCEwKSkpcmV0dXJuITB9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gUigkLEEpe0E9PT12b2lkIDAmJihBPSExKTt2YXIgeT0kP29lKCk6ZS5zY2FubmVyLmdldFRva2VuKCk7cmV0dXJuIHk9PT0xNDY/KHk9b2UoKSx5PT09MjAmJih5PW9lKCksKHk9PT0xMHx8QSYmeT09PTE0KSYmSygpKSwhMCk6ITF9ZnVuY3Rpb24gcSgpe3ZhciAkPWUuc2Nhbm5lci5nZXRUb2tlbigpO2lmKCQ9PT03OSYmZS5zY2FubmVyLmdldFRva2VuVmFsdWUoKT09PVwiZGVmaW5lXCIpe2lmKCQ9b2UoKSwkIT09MjApcmV0dXJuITA7aWYoJD1vZSgpLCQ9PT0xMHx8JD09PTE0KWlmKCQ9b2UoKSwkPT09MjcpJD1vZSgpO2Vsc2UgcmV0dXJuITA7aWYoJCE9PTIyKXJldHVybiEwO2ZvcigkPW9lKCk7JCE9PTIzJiYkIT09MTspKCQ9PT0xMHx8JD09PTE0KSYmSygpLCQ9b2UoKTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBPKCl7Zm9yKGUuc2Nhbm5lci5zZXRUZXh0KEMpLG9lKCk7ZS5zY2FubmVyLmdldFRva2VuKCkhPT0xOyl7aWYoZS5zY2FubmVyLmdldFRva2VuKCk9PT0xNSl7dmFyICQ9W2Uuc2Nhbm5lci5nZXRUb2tlbigpXSxBPWUuc2Nhbm5lci5zY2FuKCk7ZTpmb3IoO2UubGVuZ3RoKCQpOyl7c3dpdGNoKEEpe2Nhc2UgMTpicmVhayBlO2Nhc2UgMTAwOkooKTticmVhaztjYXNlIDE1OiQucHVzaChBKTticmVhaztjYXNlIDE4OmUubGVuZ3RoKCQpJiYkLnB1c2goQSk7YnJlYWs7Y2FzZSAxOTplLmxlbmd0aCgkKSYmKGUubGFzdE9yVW5kZWZpbmVkKCQpPT09MTU/ZS5zY2FubmVyLnJlU2NhblRlbXBsYXRlVG9rZW4oITEpPT09MTcmJiQucG9wKCk6JC5wb3AoKSk7YnJlYWt9QT1lLnNjYW5uZXIuc2NhbigpfW9lKCl9c2UoKXx8SigpfHxpZSgpfHxCJiYoUighMSwhMCl8fHEoKSl8fG9lKCl9ZS5zY2FubmVyLnNldFRleHQodm9pZCAwKX1pZih3JiZPKCksZS5wcm9jZXNzQ29tbWVudFByYWdtYXMoRSxDKSxlLnByb2Nlc3NQcmFnbWFzSW50b0ZpZWxkcyhFLGUubm9vcCksRyl7aWYobGUpZm9yKHZhciB2ZT0wLGVlPWxlO3ZlPGVlLmxlbmd0aDt2ZSsrKXt2YXIgaGU9ZWVbdmVdO1EucHVzaChoZS5yZWYpfXJldHVybntyZWZlcmVuY2VkRmlsZXM6RS5yZWZlcmVuY2VkRmlsZXMsdHlwZVJlZmVyZW5jZURpcmVjdGl2ZXM6RS50eXBlUmVmZXJlbmNlRGlyZWN0aXZlcyxsaWJSZWZlcmVuY2VEaXJlY3RpdmVzOkUubGliUmVmZXJlbmNlRGlyZWN0aXZlcyxpbXBvcnRlZEZpbGVzOlEsaXNMaWJGaWxlOiEhRS5oYXNOb0RlZmF1bHRMaWIsYW1iaWVudEV4dGVybmFsTW9kdWxlczp2b2lkIDB9fWVsc2V7dmFyIEY9dm9pZCAwO2lmKGxlKWZvcih2YXIgeD0wLFg9bGU7eDxYLmxlbmd0aDt4Kyspe3ZhciBoZT1YW3hdO2hlLmRlcHRoPT09MD8oRnx8KEY9W10pLEYucHVzaChoZS5yZWYuZmlsZU5hbWUpKTpRLnB1c2goaGUucmVmKX1yZXR1cm57cmVmZXJlbmNlZEZpbGVzOkUucmVmZXJlbmNlZEZpbGVzLHR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzOkUudHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMsbGliUmVmZXJlbmNlRGlyZWN0aXZlczpFLmxpYlJlZmVyZW5jZURpcmVjdGl2ZXMsaW1wb3J0ZWRGaWxlczpRLGlzTGliRmlsZTohIUUuaGFzTm9EZWZhdWx0TGliLGFtYmllbnRFeHRlcm5hbE1vZHVsZXM6Rn19fWUucHJlUHJvY2Vzc0ZpbGU9YX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtmdW5jdGlvbiB3KEcsb2UsZixUKXt2YXIgSz1lLmdldEFkanVzdGVkUmVuYW1lTG9jYXRpb24oZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShvZSxmKSk7aWYobShLKSl7dmFyIGI9QihLLEcuZ2V0VHlwZUNoZWNrZXIoKSxvZSxHLFQpO2lmKGIpcmV0dXJuIGJ9cmV0dXJuIE4oZS5EaWFnbm9zdGljcy5Zb3VfY2Fubm90X3JlbmFtZV90aGlzX2VsZW1lbnQpfUMuZ2V0UmVuYW1lSW5mbz13O2Z1bmN0aW9uIEIoRyxvZSxmLFQsSyl7dmFyIGI9b2UuZ2V0U3ltYm9sQXRMb2NhdGlvbihHKTtpZighYil7aWYoZS5pc1N0cmluZ0xpdGVyYWxMaWtlKEcpKXt2YXIgc2U9ZS5nZXRDb250ZXh0dWFsVHlwZUZyb21QYXJlbnRPckFuY2VzdG9yVHlwZU5vZGUoRyxvZSk7aWYoc2UmJihzZS5mbGFncyYxMjh8fHNlLmZsYWdzJjEwNDg1NzYmJmUuZXZlcnkoc2UudHlwZXMsZnVuY3Rpb24oZWUpe3JldHVybiEhKGVlLmZsYWdzJjEyOCl9KSkpcmV0dXJuIGxlKEcudGV4dCxHLnRleHQsXCJzdHJpbmdcIixcIlwiLEcsZil9ZWxzZSBpZihlLmlzTGFiZWxOYW1lKEcpKXt2YXIgSj1lLmdldFRleHRPZk5vZGUoRyk7cmV0dXJuIGxlKEosSixcImxhYmVsXCIsXCJcIixHLGYpfXJldHVybn12YXIgaWU9Yi5kZWNsYXJhdGlvbnM7aWYoISghaWV8fGllLmxlbmd0aD09PTApKXtpZihpZS5zb21lKGZ1bmN0aW9uKGVlKXtyZXR1cm4gRShULGVlKX0pKXJldHVybiBOKGUuRGlhZ25vc3RpY3MuWW91X2Nhbm5vdF9yZW5hbWVfZWxlbWVudHNfdGhhdF9hcmVfZGVmaW5lZF9pbl90aGVfc3RhbmRhcmRfVHlwZVNjcmlwdF9saWJyYXJ5KTtpZighKGUuaXNJZGVudGlmaWVyKEcpJiZHLm9yaWdpbmFsS2V5d29yZEtpbmQ9PT04OCYmYi5wYXJlbnQmJmIucGFyZW50LmZsYWdzJjE1MzYpKXtpZihlLmlzU3RyaW5nTGl0ZXJhbExpa2UoRykmJmUudHJ5R2V0SW1wb3J0RnJvbU1vZHVsZVNwZWNpZmllcihHKSlyZXR1cm4gSyYmSy5hbGxvd1JlbmFtZU9mSW1wb3J0UGF0aD9RKEcsZixiKTp2b2lkIDA7dmFyIFI9ZS5TeW1ib2xEaXNwbGF5LmdldFN5bWJvbEtpbmQob2UsYixHKSxxPWUuaXNJbXBvcnRPckV4cG9ydFNwZWNpZmllck5hbWUoRyl8fGUuaXNTdHJpbmdPck51bWVyaWNMaXRlcmFsTGlrZShHKSYmRy5wYXJlbnQua2luZD09PTE2Mj9lLnN0cmlwUXVvdGVzKGUuZ2V0VGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChHKSk6dm9pZCAwLE89cXx8b2Uuc3ltYm9sVG9TdHJpbmcoYiksdmU9cXx8b2UuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKGIpO3JldHVybiBsZShPLHZlLFIsZS5TeW1ib2xEaXNwbGF5LmdldFN5bWJvbE1vZGlmaWVycyhvZSxiKSxHLGYpfX19ZnVuY3Rpb24gRShHLG9lKXt2YXIgZj1vZS5nZXRTb3VyY2VGaWxlKCk7cmV0dXJuIEcuaXNTb3VyY2VGaWxlRGVmYXVsdExpYnJhcnkoZikmJmUuZmlsZUV4dGVuc2lvbklzKGYuZmlsZU5hbWUsXCIuZC50c1wiKX1mdW5jdGlvbiBRKEcsb2UsZil7aWYoIWUuaXNFeHRlcm5hbE1vZHVsZU5hbWVSZWxhdGl2ZShHLnRleHQpKXJldHVybiBOKGUuRGlhZ25vc3RpY3MuWW91X2Nhbm5vdF9yZW5hbWVfYV9tb2R1bGVfdmlhX2FfZ2xvYmFsX2ltcG9ydCk7dmFyIFQ9Zi5kZWNsYXJhdGlvbnMmJmUuZmluZChmLmRlY2xhcmF0aW9ucyxlLmlzU291cmNlRmlsZSk7aWYoISFUKXt2YXIgSz1lLmVuZHNXaXRoKEcudGV4dCxcIi9pbmRleFwiKXx8ZS5lbmRzV2l0aChHLnRleHQsXCIvaW5kZXguanNcIik/dm9pZCAwOmUudHJ5UmVtb3ZlU3VmZml4KGUucmVtb3ZlRmlsZUV4dGVuc2lvbihULmZpbGVOYW1lKSxcIi9pbmRleFwiKSxiPUs9PT12b2lkIDA/VC5maWxlTmFtZTpLLHNlPUs9PT12b2lkIDA/XCJtb2R1bGVcIjpcImRpcmVjdG9yeVwiLEo9Ry50ZXh0Lmxhc3RJbmRleE9mKFwiL1wiKSsxLGllPWUuY3JlYXRlVGV4dFNwYW4oRy5nZXRTdGFydChvZSkrMStKLEcudGV4dC5sZW5ndGgtSik7cmV0dXJue2NhblJlbmFtZTohMCxmaWxlVG9SZW5hbWU6YixraW5kOnNlLGRpc3BsYXlOYW1lOmIsZnVsbERpc3BsYXlOYW1lOmIsa2luZE1vZGlmaWVyczpcIlwiLHRyaWdnZXJTcGFuOmllfX19ZnVuY3Rpb24gbGUoRyxvZSxmLFQsSyxiKXtyZXR1cm57Y2FuUmVuYW1lOiEwLGZpbGVUb1JlbmFtZTp2b2lkIDAsa2luZDpmLGRpc3BsYXlOYW1lOkcsZnVsbERpc3BsYXlOYW1lOm9lLGtpbmRNb2RpZmllcnM6VCx0cmlnZ2VyU3BhbjpwKEssYil9fWZ1bmN0aW9uIE4oRyl7cmV0dXJue2NhblJlbmFtZTohMSxsb2NhbGl6ZWRFcnJvck1lc3NhZ2U6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoRyl9fWZ1bmN0aW9uIHAoRyxvZSl7dmFyIGY9Ry5nZXRTdGFydChvZSksVD1HLmdldFdpZHRoKG9lKTtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWxMaWtlKEcpJiYoZis9MSxULT0yKSxlLmNyZWF0ZVRleHRTcGFuKGYsVCl9ZnVuY3Rpb24gbShHKXtzd2l0Y2goRy5raW5kKXtjYXNlIDc5OmNhc2UgODA6Y2FzZSAxMDpjYXNlIDE0OmNhc2UgMTA4OnJldHVybiEwO2Nhc2UgODpyZXR1cm4gZS5pc0xpdGVyYWxOYW1lT2ZQcm9wZXJ0eURlY2xhcmF0aW9uT3JJbmRleEFjY2VzcyhHKTtkZWZhdWx0OnJldHVybiExfX1DLm5vZGVJc0VsaWdpYmxlRm9yUmVuYW1lPW19KShhPWUuUmVuYW1lfHwoZS5SZW5hbWU9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtmdW5jdGlvbiB3KGYsVCl7dmFyIEssYj17dGV4dFNwYW46ZS5jcmVhdGVUZXh0U3BhbkZyb21Cb3VuZHMoVC5nZXRGdWxsU3RhcnQoKSxULmdldEVuZCgpKX0sc2U9VDtlOmZvcig7Oyl7dmFyIEo9UShzZSk7aWYoIUoubGVuZ3RoKWJyZWFrO2Zvcih2YXIgaWU9MDtpZTxKLmxlbmd0aDtpZSsrKXt2YXIgUj1KW2llLTFdLHE9SltpZV0sTz1KW2llKzFdO2lmKGUuZ2V0VG9rZW5Qb3NPZk5vZGUocSxULCEwKT5mKWJyZWFrIGU7dmFyIHZlPWUuc2luZ2xlT3JVbmRlZmluZWQoZS5nZXRUcmFpbGluZ0NvbW1lbnRSYW5nZXMoVC50ZXh0LHEuZW5kKSk7aWYodmUmJnZlLmtpbmQ9PT0yJiZBKHZlLnBvcyx2ZS5lbmQpLEIoVCxmLHEpKXtpZihlLmlzQmxvY2socSl8fGUuaXNUZW1wbGF0ZVNwYW4ocSl8fGUuaXNUZW1wbGF0ZUhlYWQocSl8fGUuaXNUZW1wbGF0ZVRhaWwocSl8fFImJmUuaXNUZW1wbGF0ZUhlYWQoUil8fGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChxKSYmZS5pc1ZhcmlhYmxlU3RhdGVtZW50KHNlKXx8ZS5pc1N5bnRheExpc3QocSkmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChzZSl8fGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHEpJiZlLmlzU3ludGF4TGlzdChzZSkmJkoubGVuZ3RoPT09MXx8ZS5pc0pTRG9jVHlwZUV4cHJlc3Npb24ocSl8fGUuaXNKU0RvY1NpZ25hdHVyZShxKXx8ZS5pc0pTRG9jVHlwZUxpdGVyYWwocSkpe3NlPXE7YnJlYWt9aWYoZS5pc1RlbXBsYXRlU3BhbihzZSkmJk8mJmUuaXNUZW1wbGF0ZU1pZGRsZU9yVGVtcGxhdGVUYWlsKE8pKXt2YXIgZWU9cS5nZXRGdWxsU3RhcnQoKS0yLGhlPU8uZ2V0U3RhcnQoKSsxOyQoZWUsaGUpfXZhciBGPWUuaXNTeW50YXhMaXN0KHEpJiZtKFIpJiZHKE8pJiYhZS5wb3NpdGlvbnNBcmVPblNhbWVMaW5lKFIuZ2V0U3RhcnQoKSxPLmdldFN0YXJ0KCksVCkseD1GP1IuZ2V0RW5kKCk6cS5nZXRTdGFydCgpLFg9Rj9PLmdldFN0YXJ0KCk6b2UoVCxxKTtlLmhhc0pTRG9jTm9kZXMocSkmJigoSz1xLmpzRG9jKT09PW51bGx8fEs9PT12b2lkIDA/dm9pZCAwOksubGVuZ3RoKSYmJChlLmZpcnN0KHEuanNEb2MpLmdldFN0YXJ0KCksWCksJCh4LFgpLChlLmlzU3RyaW5nTGl0ZXJhbChxKXx8ZS5pc1RlbXBsYXRlTGl0ZXJhbChxKSkmJiQoeCsxLFgtMSksc2U9cTticmVha31pZihpZT09PUoubGVuZ3RoLTEpYnJlYWsgZX19cmV0dXJuIGI7ZnVuY3Rpb24gJCh5LFYpe2lmKHkhPT1WKXt2YXIgTD1lLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyh5LFYpOyghYnx8IWUudGV4dFNwYW5zRXF1YWwoTCxiLnRleHRTcGFuKSYmZS50ZXh0U3BhbkludGVyc2VjdHNXaXRoUG9zaXRpb24oTCxmKSkmJihiPUtlKHt0ZXh0U3BhbjpMfSxiJiZ7cGFyZW50OmJ9KSl9fWZ1bmN0aW9uIEEoeSxWKXskKHksVik7Zm9yKHZhciBMPXk7VC50ZXh0LmNoYXJDb2RlQXQoTCk9PT00NzspTCsrOyQoTCxWKX19Qy5nZXRTbWFydFNlbGVjdGlvblJhbmdlPXc7ZnVuY3Rpb24gQihmLFQsSyl7aWYoZS5EZWJ1Zy5hc3NlcnQoSy5wb3M8PVQpLFQ8Sy5lbmQpcmV0dXJuITA7dmFyIGI9Sy5nZXRFbmQoKTtyZXR1cm4gYj09PVQ/ZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShmLFQpLnBvczxLLmVuZDohMX12YXIgRT1lLm9yKGUuaXNJbXBvcnREZWNsYXJhdGlvbixlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24pO2Z1bmN0aW9uIFEoZil7aWYoZS5pc1NvdXJjZUZpbGUoZikpcmV0dXJuIGxlKGYuZ2V0Q2hpbGRBdCgwKS5nZXRDaGlsZHJlbigpLEUpO2lmKGUuaXNNYXBwZWRUeXBlTm9kZShmKSl7dmFyIFQ9Zi5nZXRDaGlsZHJlbigpLEs9VFswXSxiPVQuc2xpY2UoMSksc2U9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoYi5wb3AoKSk7ZS5EZWJ1Zy5hc3NlcnRFcXVhbChLLmtpbmQsMTgpLGUuRGVidWcuYXNzZXJ0RXF1YWwoc2Uua2luZCwxOSk7dmFyIEo9bGUoYixmdW5jdGlvbihPKXtyZXR1cm4gTz09PWYucmVhZG9ubHlUb2tlbnx8Ty5raW5kPT09MTQ1fHxPPT09Zi5xdWVzdGlvblRva2VufHxPLmtpbmQ9PT01N30pLGllPWxlKEosZnVuY3Rpb24oTyl7dmFyIHZlPU8ua2luZDtyZXR1cm4gdmU9PT0yMnx8dmU9PT0xNjN8fHZlPT09MjN9KTtyZXR1cm5bSyxwKE4oaWUsZnVuY3Rpb24oTyl7dmFyIHZlPU8ua2luZDtyZXR1cm4gdmU9PT01OH0pKSxzZV19aWYoZS5pc1Byb3BlcnR5U2lnbmF0dXJlKGYpKXt2YXIgYj1sZShmLmdldENoaWxkcmVuKCksZnVuY3Rpb24odmUpe3JldHVybiB2ZT09PWYubmFtZXx8ZS5jb250YWlucyhmLm1vZGlmaWVycyx2ZSl9KTtyZXR1cm4gTihiLGZ1bmN0aW9uKHZlKXt2YXIgZWU9dmUua2luZDtyZXR1cm4gZWU9PT01OH0pfWlmKGUuaXNQYXJhbWV0ZXIoZikpe3ZhciBSPWxlKGYuZ2V0Q2hpbGRyZW4oKSxmdW5jdGlvbihPKXtyZXR1cm4gTz09PWYuZG90RG90RG90VG9rZW58fE89PT1mLm5hbWV9KSxxPWxlKFIsZnVuY3Rpb24oTyl7cmV0dXJuIE89PT1SWzBdfHxPPT09Zi5xdWVzdGlvblRva2VufSk7cmV0dXJuIE4ocSxmdW5jdGlvbihPKXt2YXIgdmU9Ty5raW5kO3JldHVybiB2ZT09PTYzfSl9cmV0dXJuIGUuaXNCaW5kaW5nRWxlbWVudChmKT9OKGYuZ2V0Q2hpbGRyZW4oKSxmdW5jdGlvbihPKXt2YXIgdmU9Ty5raW5kO3JldHVybiB2ZT09PTYzfSk6Zi5nZXRDaGlsZHJlbigpfWZ1bmN0aW9uIGxlKGYsVCl7Zm9yKHZhciBLPVtdLGIsc2U9MCxKPWY7c2U8Si5sZW5ndGg7c2UrKyl7dmFyIGllPUpbc2VdO1QoaWUpPyhiPWJ8fFtdLGIucHVzaChpZSkpOihiJiYoSy5wdXNoKHAoYikpLGI9dm9pZCAwKSxLLnB1c2goaWUpKX1yZXR1cm4gYiYmSy5wdXNoKHAoYikpLEt9ZnVuY3Rpb24gTihmLFQsSyl7aWYoSz09PXZvaWQgMCYmKEs9ITApLGYubGVuZ3RoPDIpcmV0dXJuIGY7dmFyIGI9ZS5maW5kSW5kZXgoZixUKTtpZihiPT09LTEpcmV0dXJuIGY7dmFyIHNlPWYuc2xpY2UoMCxiKSxKPWZbYl0saWU9ZS5sYXN0KGYpLFI9SyYmaWUua2luZD09PTI2LHE9Zi5zbGljZShiKzEsUj9mLmxlbmd0aC0xOnZvaWQgMCksTz1lLmNvbXBhY3QoW3NlLmxlbmd0aD9wKHNlKTp2b2lkIDAsSixxLmxlbmd0aD9wKHEpOnZvaWQgMF0pO3JldHVybiBSP08uY29uY2F0KGllKTpPfWZ1bmN0aW9uIHAoZil7cmV0dXJuIGUuRGVidWcuYXNzZXJ0R3JlYXRlclRoYW5PckVxdWFsKGYubGVuZ3RoLDEpLGUuc2V0VGV4dFJhbmdlUG9zRW5kKGUucGFyc2VOb2RlRmFjdG9yeS5jcmVhdGVTeW50YXhMaXN0KGYpLGZbMF0ucG9zLGUubGFzdChmKS5lbmQpfWZ1bmN0aW9uIG0oZil7dmFyIFQ9ZiYmZi5raW5kO3JldHVybiBUPT09MTh8fFQ9PT0yMnx8VD09PTIwfHxUPT09MjgwfWZ1bmN0aW9uIEcoZil7dmFyIFQ9ZiYmZi5raW5kO3JldHVybiBUPT09MTl8fFQ9PT0yM3x8VD09PTIxfHxUPT09MjgxfWZ1bmN0aW9uIG9lKGYsVCl7c3dpdGNoKFQua2luZCl7Y2FzZSAzNDA6Y2FzZSAzMzg6Y2FzZSAzNDc6Y2FzZSAzNDU6Y2FzZSAzNDI6cmV0dXJuIGYuZ2V0TGluZUVuZE9mUG9zaXRpb24oVC5nZXRTdGFydCgpKTtkZWZhdWx0OnJldHVybiBULmdldEVuZCgpfX19KShhPWUuU21hcnRTZWxlY3Rpb25SYW5nZXx8KGUuU21hcnRTZWxlY3Rpb25SYW5nZT17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3OyhmdW5jdGlvbihsKXtsW2wuQ2FsbD0wXT1cIkNhbGxcIixsW2wuVHlwZUFyZ3M9MV09XCJUeXBlQXJnc1wiLGxbbC5Db250ZXh0dWFsPTJdPVwiQ29udGV4dHVhbFwifSkod3x8KHc9e30pKTtmdW5jdGlvbiBCKGwsZCxELGZlLGcpe3ZhciBuZT1sLmdldFR5cGVDaGVja2VyKCksdWU9ZS5maW5kVG9rZW5PbkxlZnRPZlBvc2l0aW9uKGQsRCk7aWYoISF1ZSl7dmFyIFdlPSEhZmUmJmZlLmtpbmQ9PT1cImNoYXJhY3RlclR5cGVkXCI7aWYoIShXZSYmKGUuaXNJblN0cmluZyhkLEQsdWUpfHxlLmlzSW5Db21tZW50KGQsRCkpKSl7dmFyIEZlPSEhZmUmJmZlLmtpbmQ9PT1cImludm9rZWRcIixaPUYodWUsRCxkLG5lLEZlKTtpZighIVope2cudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpO3ZhciBCZT1RKFosbmUsZCx1ZSxXZSk7cmV0dXJuIGcudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLEJlP25lLnJ1bldpdGhDYW5jZWxsYXRpb25Ub2tlbihnLGZ1bmN0aW9uKGdlKXtyZXR1cm4gQmUua2luZD09PTA/eShCZS5jYW5kaWRhdGVzLEJlLnJlc29sdmVkU2lnbmF0dXJlLFosZCxnZSk6VihCZS5zeW1ib2wsWixkLGdlKX0pOmUuaXNTb3VyY2VGaWxlSlMoZCk/TihaLGwsZyk6dm9pZCAwfX19fUMuZ2V0U2lnbmF0dXJlSGVscEl0ZW1zPUI7dmFyIEU7KGZ1bmN0aW9uKGwpe2xbbC5DYW5kaWRhdGU9MF09XCJDYW5kaWRhdGVcIixsW2wuVHlwZT0xXT1cIlR5cGVcIn0pKEV8fChFPXt9KSk7ZnVuY3Rpb24gUShsLGQsRCxmZSxnKXt2YXIgbmU9bC5pbnZvY2F0aW9uLHVlPWwuYXJndW1lbnRDb3VudDtzd2l0Y2gobmUua2luZCl7Y2FzZSAwOntpZihnJiYhbGUoZmUsbmUubm9kZSxEKSlyZXR1cm47dmFyIFdlPVtdLEZlPWQuZ2V0UmVzb2x2ZWRTaWduYXR1cmVGb3JTaWduYXR1cmVIZWxwKG5lLm5vZGUsV2UsdWUpO3JldHVybiBXZS5sZW5ndGg9PT0wP3ZvaWQgMDp7a2luZDowLGNhbmRpZGF0ZXM6V2UscmVzb2x2ZWRTaWduYXR1cmU6RmV9fWNhc2UgMTp7dmFyIFo9bmUuY2FsbGVkO2lmKGcmJiFwKGZlLEQsZS5pc0lkZW50aWZpZXIoWik/Wi5wYXJlbnQ6WikpcmV0dXJuO3ZhciBXZT1lLmdldFBvc3NpYmxlR2VuZXJpY1NpZ25hdHVyZXMoWix1ZSxkKTtpZihXZS5sZW5ndGghPT0wKXJldHVybntraW5kOjAsY2FuZGlkYXRlczpXZSxyZXNvbHZlZFNpZ25hdHVyZTplLmZpcnN0KFdlKX07dmFyIEJlPWQuZ2V0U3ltYm9sQXRMb2NhdGlvbihaKTtyZXR1cm4gQmUmJntraW5kOjEsc3ltYm9sOkJlfX1jYXNlIDI6cmV0dXJue2tpbmQ6MCxjYW5kaWRhdGVzOltuZS5zaWduYXR1cmVdLHJlc29sdmVkU2lnbmF0dXJlOm5lLnNpZ25hdHVyZX07ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihuZSl9fWZ1bmN0aW9uIGxlKGwsZCxEKXtpZighZS5pc0NhbGxPck5ld0V4cHJlc3Npb24oZCkpcmV0dXJuITE7dmFyIGZlPWQuZ2V0Q2hpbGRyZW4oRCk7c3dpdGNoKGwua2luZCl7Y2FzZSAyMDpyZXR1cm4gZS5jb250YWlucyhmZSxsKTtjYXNlIDI3Ont2YXIgZz1lLmZpbmRDb250YWluaW5nTGlzdChsKTtyZXR1cm4hIWcmJmUuY29udGFpbnMoZmUsZyl9Y2FzZSAyOTpyZXR1cm4gcChsLEQsZC5leHByZXNzaW9uKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBOKGwsZCxEKXtpZihsLmludm9jYXRpb24ua2luZCE9PTIpe3ZhciBmZT1YKGwuaW52b2NhdGlvbiksZz1lLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGZlKT9mZS5uYW1lLnRleHQ6dm9pZCAwLG5lPWQuZ2V0VHlwZUNoZWNrZXIoKTtyZXR1cm4gZz09PXZvaWQgMD92b2lkIDA6ZS5maXJzdERlZmluZWQoZC5nZXRTb3VyY2VGaWxlcygpLGZ1bmN0aW9uKHVlKXtyZXR1cm4gZS5maXJzdERlZmluZWQodWUuZ2V0TmFtZWREZWNsYXJhdGlvbnMoKS5nZXQoZyksZnVuY3Rpb24oV2Upe3ZhciBGZT1XZS5zeW1ib2wmJm5lLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oV2Uuc3ltYm9sLFdlKSxaPUZlJiZGZS5nZXRDYWxsU2lnbmF0dXJlcygpO2lmKFomJloubGVuZ3RoKXJldHVybiBuZS5ydW5XaXRoQ2FuY2VsbGF0aW9uVG9rZW4oRCxmdW5jdGlvbihCZSl7cmV0dXJuIHkoWixaWzBdLGwsdWUsQmUsITApfSl9KX0pfX1mdW5jdGlvbiBwKGwsZCxEKXtmb3IodmFyIGZlPWwuZ2V0RnVsbFN0YXJ0KCksZz1sLnBhcmVudDtnOyl7dmFyIG5lPWUuZmluZFByZWNlZGluZ1Rva2VuKGZlLGQsZywhMCk7aWYobmUpcmV0dXJuIGUucmFuZ2VDb250YWluc1JhbmdlKEQsbmUpO2c9Zy5wYXJlbnR9cmV0dXJuIGUuRGVidWcuZmFpbChcIkNvdWxkIG5vdCBmaW5kIHByZWNlZGluZyB0b2tlblwiKX1mdW5jdGlvbiBtKGwsZCxEKXt2YXIgZmU9ZihsLGQsRCk7cmV0dXJuIWZlfHxmZS5pc1R5cGVQYXJhbWV0ZXJMaXN0fHxmZS5pbnZvY2F0aW9uLmtpbmQhPT0wP3ZvaWQgMDp7aW52b2NhdGlvbjpmZS5pbnZvY2F0aW9uLm5vZGUsYXJndW1lbnRDb3VudDpmZS5hcmd1bWVudENvdW50LGFyZ3VtZW50SW5kZXg6ZmUuYXJndW1lbnRJbmRleH19Qy5nZXRBcmd1bWVudEluZm9Gb3JDb21wbGV0aW9ucz1tO2Z1bmN0aW9uIEcobCxkLEQpe3ZhciBmZT1vZShsLEQpO2lmKCEhZmUpe3ZhciBnPWZlLmxpc3QsbmU9ZmUuYXJndW1lbnRJbmRleCx1ZT1xKGcsZS5pc0luU3RyaW5nKEQsZCxsKSk7bmUhPT0wJiZlLkRlYnVnLmFzc2VydExlc3NUaGFuKG5lLHVlKTt2YXIgV2U9ZWUoZyxEKTtyZXR1cm57bGlzdDpnLGFyZ3VtZW50SW5kZXg6bmUsYXJndW1lbnRDb3VudDp1ZSxhcmd1bWVudHNTcGFuOldlfX19ZnVuY3Rpb24gb2UobCxkKXtpZihsLmtpbmQ9PT0yOXx8bC5raW5kPT09MjApcmV0dXJue2xpc3Q6eChsLnBhcmVudCxsLGQpLGFyZ3VtZW50SW5kZXg6MH07dmFyIEQ9ZS5maW5kQ29udGFpbmluZ0xpc3QobCk7cmV0dXJuIEQmJntsaXN0OkQsYXJndW1lbnRJbmRleDpSKEQsbCl9fWZ1bmN0aW9uIGYobCxkLEQpe3ZhciBmZT1sLnBhcmVudDtpZihlLmlzQ2FsbE9yTmV3RXhwcmVzc2lvbihmZSkpe3ZhciBnPWZlLG5lPUcobCxkLEQpO2lmKCFuZSlyZXR1cm47dmFyIHVlPW5lLmxpc3QsV2U9bmUuYXJndW1lbnRJbmRleCxGZT1uZS5hcmd1bWVudENvdW50LFo9bmUuYXJndW1lbnRzU3BhbixCZT0hIWZlLnR5cGVBcmd1bWVudHMmJmZlLnR5cGVBcmd1bWVudHMucG9zPT09dWUucG9zO3JldHVybntpc1R5cGVQYXJhbWV0ZXJMaXN0OkJlLGludm9jYXRpb246e2tpbmQ6MCxub2RlOmd9LGFyZ3VtZW50c1NwYW46Wixhcmd1bWVudEluZGV4OldlLGFyZ3VtZW50Q291bnQ6RmV9fWVsc2V7aWYoZS5pc05vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsKGwpJiZlLmlzVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKGZlKSlyZXR1cm4gZS5pc0luc2lkZVRlbXBsYXRlTGl0ZXJhbChsLGQsRCk/dmUoZmUsMCxEKTp2b2lkIDA7aWYoZS5pc1RlbXBsYXRlSGVhZChsKSYmZmUucGFyZW50LmtpbmQ9PT0yMTApe3ZhciBnZT1mZSxSZT1nZS5wYXJlbnQ7ZS5EZWJ1Zy5hc3NlcnQoZ2Uua2luZD09PTIyMyk7dmFyIFdlPWUuaXNJbnNpZGVUZW1wbGF0ZUxpdGVyYWwobCxkLEQpPzA6MTtyZXR1cm4gdmUoUmUsV2UsRCl9ZWxzZSBpZihlLmlzVGVtcGxhdGVTcGFuKGZlKSYmZS5pc1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbihmZS5wYXJlbnQucGFyZW50KSl7dmFyIHplPWZlLFJlPWZlLnBhcmVudC5wYXJlbnQ7aWYoZS5pc1RlbXBsYXRlVGFpbChsKSYmIWUuaXNJbnNpZGVUZW1wbGF0ZUxpdGVyYWwobCxkLEQpKXJldHVybjt2YXIgRWU9emUucGFyZW50LnRlbXBsYXRlU3BhbnMuaW5kZXhPZih6ZSksV2U9TyhFZSxsLGQsRCk7cmV0dXJuIHZlKFJlLFdlLEQpfWVsc2UgaWYoZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChmZSkpe3ZhciBIZT1mZS5hdHRyaWJ1dGVzLnBvcyxycj1lLnNraXBUcml2aWEoRC50ZXh0LGZlLmF0dHJpYnV0ZXMuZW5kLCExKTtyZXR1cm57aXNUeXBlUGFyYW1ldGVyTGlzdDohMSxpbnZvY2F0aW9uOntraW5kOjAsbm9kZTpmZX0sYXJndW1lbnRzU3BhbjplLmNyZWF0ZVRleHRTcGFuKEhlLHJyLUhlKSxhcmd1bWVudEluZGV4OjAsYXJndW1lbnRDb3VudDoxfX1lbHNle3ZhciBJZT1lLmdldFBvc3NpYmxlVHlwZUFyZ3VtZW50c0luZm8obCxEKTtpZihJZSl7dmFyIF9lPUllLmNhbGxlZCx3ZT1JZS5uVHlwZUFyZ3VtZW50cyxnPXtraW5kOjEsY2FsbGVkOl9lfSxaPWUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKF9lLmdldFN0YXJ0KEQpLGwuZW5kKTtyZXR1cm57aXNUeXBlUGFyYW1ldGVyTGlzdDohMCxpbnZvY2F0aW9uOmcsYXJndW1lbnRzU3BhbjpaLGFyZ3VtZW50SW5kZXg6d2UsYXJndW1lbnRDb3VudDp3ZSsxfX1yZXR1cm59fX1mdW5jdGlvbiBUKGwsZCxELGZlKXtyZXR1cm4gc2UobCxkLEQsZmUpfHxmKGwsZCxEKX1mdW5jdGlvbiBLKGwpe3JldHVybiBlLmlzQmluYXJ5RXhwcmVzc2lvbihsLnBhcmVudCk/SyhsLnBhcmVudCk6bH1mdW5jdGlvbiBiKGwpe3JldHVybiBlLmlzQmluYXJ5RXhwcmVzc2lvbihsLmxlZnQpP2IobC5sZWZ0KSsxOjJ9ZnVuY3Rpb24gc2UobCxkLEQsZmUpe3ZhciBnPUoobCxELGQsZmUpO2lmKCEhZyl7dmFyIG5lPWcuY29udGV4dHVhbFR5cGUsdWU9Zy5hcmd1bWVudEluZGV4LFdlPWcuYXJndW1lbnRDb3VudCxGZT1nLmFyZ3VtZW50c1NwYW4sWj1uZS5nZXROb25OdWxsYWJsZVR5cGUoKSxCZT1aLnN5bWJvbDtpZihCZSE9PXZvaWQgMCl7dmFyIGdlPWUubGFzdE9yVW5kZWZpbmVkKFouZ2V0Q2FsbFNpZ25hdHVyZXMoKSk7aWYoZ2UhPT12b2lkIDApe3ZhciBSZT17a2luZDoyLHNpZ25hdHVyZTpnZSxub2RlOmwsc3ltYm9sOmllKEJlKX07cmV0dXJue2lzVHlwZVBhcmFtZXRlckxpc3Q6ITEsaW52b2NhdGlvbjpSZSxhcmd1bWVudHNTcGFuOkZlLGFyZ3VtZW50SW5kZXg6dWUsYXJndW1lbnRDb3VudDpXZX19fX19ZnVuY3Rpb24gSihsLGQsRCxmZSl7aWYoIShsLmtpbmQhPT0yMCYmbC5raW5kIT09MjcpKXt2YXIgZz1sLnBhcmVudDtzd2l0Y2goZy5raW5kKXtjYXNlIDIxMjpjYXNlIDE2OTpjYXNlIDIxMzpjYXNlIDIxNDp2YXIgbmU9RyhsLEQsZCk7aWYoIW5lKXJldHVybjt2YXIgdWU9bmUuYXJndW1lbnRJbmRleCxXZT1uZS5hcmd1bWVudENvdW50LEZlPW5lLmFyZ3VtZW50c1NwYW4sWj1lLmlzTWV0aG9kRGVjbGFyYXRpb24oZyk/ZmUuZ2V0Q29udGV4dHVhbFR5cGVGb3JPYmplY3RMaXRlcmFsRWxlbWVudChnKTpmZS5nZXRDb250ZXh0dWFsVHlwZShnKTtyZXR1cm4gWiYme2NvbnRleHR1YWxUeXBlOlosYXJndW1lbnRJbmRleDp1ZSxhcmd1bWVudENvdW50OldlLGFyZ3VtZW50c1NwYW46RmV9O2Nhc2UgMjIxOnt2YXIgQmU9SyhnKSxnZT1mZS5nZXRDb250ZXh0dWFsVHlwZShCZSksUmU9bC5raW5kPT09MjA/MDpiKGcpLTEsemU9YihCZSk7cmV0dXJuIGdlJiZ7Y29udGV4dHVhbFR5cGU6Z2UsYXJndW1lbnRJbmRleDpSZSxhcmd1bWVudENvdW50OnplLGFyZ3VtZW50c1NwYW46ZS5jcmVhdGVUZXh0U3BhbkZyb21Ob2RlKGcpfX1kZWZhdWx0OnJldHVybn19fWZ1bmN0aW9uIGllKGwpe3JldHVybiBsLm5hbWU9PT1cIl9fdHlwZVwiJiZlLmZpcnN0RGVmaW5lZChsLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihkKXtyZXR1cm4gZS5pc0Z1bmN0aW9uVHlwZU5vZGUoZCk/ZC5wYXJlbnQuc3ltYm9sOnZvaWQgMH0pfHxsfWZ1bmN0aW9uIFIobCxkKXtmb3IodmFyIEQ9MCxmZT0wLGc9bC5nZXRDaGlsZHJlbigpO2ZlPGcubGVuZ3RoO2ZlKyspe3ZhciBuZT1nW2ZlXTtpZihuZT09PWQpYnJlYWs7bmUua2luZCE9PTI3JiZEKyt9cmV0dXJuIER9ZnVuY3Rpb24gcShsLGQpe3ZhciBEPWwuZ2V0Q2hpbGRyZW4oKSxmZT1lLmNvdW50V2hlcmUoRCxmdW5jdGlvbihnKXtyZXR1cm4gZy5raW5kIT09Mjd9KTtyZXR1cm4hZCYmRC5sZW5ndGg+MCYmZS5sYXN0KEQpLmtpbmQ9PT0yNyYmZmUrKyxmZX1mdW5jdGlvbiBPKGwsZCxELGZlKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoRD49ZC5nZXRTdGFydCgpLFwiQXNzdW1lZCAncG9zaXRpb24nIGNvdWxkIG5vdCBvY2N1ciBiZWZvcmUgbm9kZS5cIiksZS5pc1RlbXBsYXRlTGl0ZXJhbFRva2VuKGQpP2UuaXNJbnNpZGVUZW1wbGF0ZUxpdGVyYWwoZCxELGZlKT8wOmwrMjpsKzF9ZnVuY3Rpb24gdmUobCxkLEQpe3ZhciBmZT1lLmlzTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWwobC50ZW1wbGF0ZSk/MTpsLnRlbXBsYXRlLnRlbXBsYXRlU3BhbnMubGVuZ3RoKzE7cmV0dXJuIGQhPT0wJiZlLkRlYnVnLmFzc2VydExlc3NUaGFuKGQsZmUpLHtpc1R5cGVQYXJhbWV0ZXJMaXN0OiExLGludm9jYXRpb246e2tpbmQ6MCxub2RlOmx9LGFyZ3VtZW50c1NwYW46aGUobCxEKSxhcmd1bWVudEluZGV4OmQsYXJndW1lbnRDb3VudDpmZX19ZnVuY3Rpb24gZWUobCxkKXt2YXIgRD1sLmdldEZ1bGxTdGFydCgpLGZlPWUuc2tpcFRyaXZpYShkLnRleHQsbC5nZXRFbmQoKSwhMSk7cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW4oRCxmZS1EKX1mdW5jdGlvbiBoZShsLGQpe3ZhciBEPWwudGVtcGxhdGUsZmU9RC5nZXRTdGFydCgpLGc9RC5nZXRFbmQoKTtpZihELmtpbmQ9PT0yMjMpe3ZhciBuZT1lLmxhc3QoRC50ZW1wbGF0ZVNwYW5zKTtuZS5saXRlcmFsLmdldEZ1bGxXaWR0aCgpPT09MCYmKGc9ZS5za2lwVHJpdmlhKGQudGV4dCxnLCExKSl9cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW4oZmUsZy1mZSl9ZnVuY3Rpb24gRihsLGQsRCxmZSxnKXtmb3IodmFyIG5lPWZ1bmN0aW9uKEZlKXtlLkRlYnVnLmFzc2VydChlLnJhbmdlQ29udGFpbnNSYW5nZShGZS5wYXJlbnQsRmUpLFwiTm90IGEgc3Vic3BhblwiLGZ1bmN0aW9uKCl7cmV0dXJuXCJDaGlsZDogXCIuY29uY2F0KGUuRGVidWcuZm9ybWF0U3ludGF4S2luZChGZS5raW5kKSxcIiwgcGFyZW50OiBcIikuY29uY2F0KGUuRGVidWcuZm9ybWF0U3ludGF4S2luZChGZS5wYXJlbnQua2luZCkpfSk7dmFyIFo9VChGZSxkLEQsZmUpO2lmKFopcmV0dXJue3ZhbHVlOlp9fSx1ZT1sOyFlLmlzU291cmNlRmlsZSh1ZSkmJihnfHwhZS5pc0Jsb2NrKHVlKSk7dWU9dWUucGFyZW50KXt2YXIgV2U9bmUodWUpO2lmKHR5cGVvZiBXZT09XCJvYmplY3RcIilyZXR1cm4gV2UudmFsdWV9fWZ1bmN0aW9uIHgobCxkLEQpe3ZhciBmZT1sLmdldENoaWxkcmVuKEQpLGc9ZmUuaW5kZXhPZihkKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoZz49MCYmZmUubGVuZ3RoPmcrMSksZmVbZysxXX1mdW5jdGlvbiBYKGwpe3JldHVybiBsLmtpbmQ9PT0wP2UuZ2V0SW52b2tlZEV4cHJlc3Npb24obC5ub2RlKTpsLmNhbGxlZH1mdW5jdGlvbiAkKGwpe3JldHVybiBsLmtpbmQ9PT0wP2wubm9kZTpsLmtpbmQ9PT0xP2wuY2FsbGVkOmwubm9kZX12YXIgQT03MDI0NjQwMDtmdW5jdGlvbiB5KGwsZCxELGZlLGcsbmUpe3ZhciB1ZSxXZT1ELmlzVHlwZVBhcmFtZXRlckxpc3QsRmU9RC5hcmd1bWVudENvdW50LFo9RC5hcmd1bWVudHNTcGFuLEJlPUQuaW52b2NhdGlvbixnZT1ELmFyZ3VtZW50SW5kZXgsUmU9JChCZSksemU9QmUua2luZD09PTI/QmUuc3ltYm9sOmcuZ2V0U3ltYm9sQXRMb2NhdGlvbihYKEJlKSl8fG5lJiYoKHVlPWQuZGVjbGFyYXRpb24pPT09bnVsbHx8dWU9PT12b2lkIDA/dm9pZCAwOnVlLnN5bWJvbCksRWU9emU/ZS5zeW1ib2xUb0Rpc3BsYXlQYXJ0cyhnLHplLG5lP2ZlOnZvaWQgMCx2b2lkIDApOmUuZW1wdHlBcnJheSxIZT1lLm1hcChsLGZ1bmN0aW9uKEJyKXtyZXR1cm4gayhCcixFZSxXZSxnLFJlLGZlKX0pO2dlIT09MCYmZS5EZWJ1Zy5hc3NlcnRMZXNzVGhhbihnZSxGZSk7Zm9yKHZhciBycj0wLEllPTAsX2U9MDtfZTxIZS5sZW5ndGg7X2UrKyl7dmFyIHdlPUhlW19lXTtpZihsW19lXT09PWQmJihycj1JZSx3ZS5sZW5ndGg+MSkpZm9yKHZhciBkZT0wLHllPTAsQWU9d2U7eWU8QWUubGVuZ3RoO3llKyspe3ZhciBlcj1BZVt5ZV07aWYoZXIuaXNWYXJpYWRpY3x8ZXIucGFyYW1ldGVycy5sZW5ndGg+PUZlKXtycj1JZStkZTticmVha31kZSsrfUllKz13ZS5sZW5ndGh9ZS5EZWJ1Zy5hc3NlcnQocnIhPT0tMSk7dmFyIGlyPXtpdGVtczplLmZsYXRNYXBUb011dGFibGUoSGUsZS5pZGVudGl0eSksYXBwbGljYWJsZVNwYW46WixzZWxlY3RlZEl0ZW1JbmRleDpycixhcmd1bWVudEluZGV4OmdlLGFyZ3VtZW50Q291bnQ6RmV9LENyPWlyLml0ZW1zW3JyXTtpZihDci5pc1ZhcmlhZGljKXt2YXIgWWU9ZS5maW5kSW5kZXgoQ3IucGFyYW1ldGVycyxmdW5jdGlvbihCcil7cmV0dXJuISFCci5pc1Jlc3R9KTstMTxZZSYmWWU8Q3IucGFyYW1ldGVycy5sZW5ndGgtMT9pci5hcmd1bWVudEluZGV4PUNyLnBhcmFtZXRlcnMubGVuZ3RoOmlyLmFyZ3VtZW50SW5kZXg9TWF0aC5taW4oaXIuYXJndW1lbnRJbmRleCxDci5wYXJhbWV0ZXJzLmxlbmd0aC0xKX1yZXR1cm4gaXJ9ZnVuY3Rpb24gVihsLGQsRCxmZSl7dmFyIGc9ZC5hcmd1bWVudENvdW50LG5lPWQuYXJndW1lbnRzU3Bhbix1ZT1kLmludm9jYXRpb24sV2U9ZC5hcmd1bWVudEluZGV4LEZlPWZlLmdldExvY2FsVHlwZVBhcmFtZXRlcnNPZkNsYXNzT3JJbnRlcmZhY2VPclR5cGVBbGlhcyhsKTtpZighIUZlKXt2YXIgWj1bTChsLEZlLGZlLCQodWUpLEQpXTtyZXR1cm57aXRlbXM6WixhcHBsaWNhYmxlU3BhbjpuZSxzZWxlY3RlZEl0ZW1JbmRleDowLGFyZ3VtZW50SW5kZXg6V2UsYXJndW1lbnRDb3VudDpnfX19ZnVuY3Rpb24gTChsLGQsRCxmZSxnKXt2YXIgbmU9ZS5zeW1ib2xUb0Rpc3BsYXlQYXJ0cyhELGwpLHVlPWUuY3JlYXRlUHJpbnRlcih7cmVtb3ZlQ29tbWVudHM6ITB9KSxXZT1kLm1hcChmdW5jdGlvbihnZSl7cmV0dXJuIEkoZ2UsRCxmZSxnLHVlKX0pLEZlPWwuZ2V0RG9jdW1lbnRhdGlvbkNvbW1lbnQoRCksWj1sLmdldEpzRG9jVGFncyhEKSxCZT1WZShWZShbXSxuZSwhMCksW2UucHVuY3R1YXRpb25QYXJ0KDI5KV0sITEpO3JldHVybntpc1ZhcmlhZGljOiExLHByZWZpeERpc3BsYXlQYXJ0czpCZSxzdWZmaXhEaXNwbGF5UGFydHM6W2UucHVuY3R1YXRpb25QYXJ0KDMxKV0sc2VwYXJhdG9yRGlzcGxheVBhcnRzOlAscGFyYW1ldGVyczpXZSxkb2N1bWVudGF0aW9uOkZlLHRhZ3M6Wn19dmFyIFA9W2UucHVuY3R1YXRpb25QYXJ0KDI3KSxlLnNwYWNlUGFydCgpXTtmdW5jdGlvbiBrKGwsZCxELGZlLGcsbmUpe3ZhciB1ZT0oRD9VOmopKGwsZmUsZyxuZSk7cmV0dXJuIGUubWFwKHVlLGZ1bmN0aW9uKFdlKXt2YXIgRmU9V2UuaXNWYXJpYWRpYyxaPVdlLnBhcmFtZXRlcnMsQmU9V2UucHJlZml4LGdlPVdlLnN1ZmZpeCxSZT1WZShWZShbXSxkLCEwKSxCZSwhMCksemU9VmUoVmUoW10sZ2UsITApLFkobCxnLGZlKSwhMCksRWU9bC5nZXREb2N1bWVudGF0aW9uQ29tbWVudChmZSksSGU9bC5nZXRKc0RvY1RhZ3MoKTtyZXR1cm57aXNWYXJpYWRpYzpGZSxwcmVmaXhEaXNwbGF5UGFydHM6UmUsc3VmZml4RGlzcGxheVBhcnRzOnplLHNlcGFyYXRvckRpc3BsYXlQYXJ0czpQLHBhcmFtZXRlcnM6Wixkb2N1bWVudGF0aW9uOkVlLHRhZ3M6SGV9fSl9ZnVuY3Rpb24gWShsLGQsRCl7cmV0dXJuIGUubWFwVG9EaXNwbGF5UGFydHMoZnVuY3Rpb24oZmUpe2ZlLndyaXRlUHVuY3R1YXRpb24oXCI6XCIpLGZlLndyaXRlU3BhY2UoXCIgXCIpO3ZhciBnPUQuZ2V0VHlwZVByZWRpY2F0ZU9mU2lnbmF0dXJlKGwpO2c/RC53cml0ZVR5cGVQcmVkaWNhdGUoZyxkLHZvaWQgMCxmZSk6RC53cml0ZVR5cGUoRC5nZXRSZXR1cm5UeXBlT2ZTaWduYXR1cmUobCksZCx2b2lkIDAsZmUpfSl9ZnVuY3Rpb24gVShsLGQsRCxmZSl7dmFyIGc9KGwudGFyZ2V0fHxsKS50eXBlUGFyYW1ldGVycyxuZT1lLmNyZWF0ZVByaW50ZXIoe3JlbW92ZUNvbW1lbnRzOiEwfSksdWU9KGd8fGUuZW1wdHlBcnJheSkubWFwKGZ1bmN0aW9uKEZlKXtyZXR1cm4gSShGZSxkLEQsZmUsbmUpfSksV2U9bC50aGlzUGFyYW1ldGVyP1tkLnN5bWJvbFRvUGFyYW1ldGVyRGVjbGFyYXRpb24obC50aGlzUGFyYW1ldGVyLEQsQSldOltdO3JldHVybiBkLmdldEV4cGFuZGVkUGFyYW1ldGVycyhsKS5tYXAoZnVuY3Rpb24oRmUpe3ZhciBaPWUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoVmUoVmUoW10sV2UsITApLGUubWFwKEZlLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZC5zeW1ib2xUb1BhcmFtZXRlckRlY2xhcmF0aW9uKGdlLEQsQSl9KSwhMCkpLEJlPWUubWFwVG9EaXNwbGF5UGFydHMoZnVuY3Rpb24oZ2Upe25lLndyaXRlTGlzdCgyNTc2LFosZmUsZ2UpfSk7cmV0dXJue2lzVmFyaWFkaWM6ITEscGFyYW1ldGVyczp1ZSxwcmVmaXg6W2UucHVuY3R1YXRpb25QYXJ0KDI5KV0sc3VmZml4OlZlKFtlLnB1bmN0dWF0aW9uUGFydCgzMSldLEJlLCEwKX19KX1mdW5jdGlvbiBqKGwsZCxELGZlKXt2YXIgZz1lLmNyZWF0ZVByaW50ZXIoe3JlbW92ZUNvbW1lbnRzOiEwfSksbmU9ZS5tYXBUb0Rpc3BsYXlQYXJ0cyhmdW5jdGlvbihGZSl7aWYobC50eXBlUGFyYW1ldGVycyYmbC50eXBlUGFyYW1ldGVycy5sZW5ndGgpe3ZhciBaPWUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkobC50eXBlUGFyYW1ldGVycy5tYXAoZnVuY3Rpb24oQmUpe3JldHVybiBkLnR5cGVQYXJhbWV0ZXJUb0RlY2xhcmF0aW9uKEJlLEQsQSl9KSk7Zy53cml0ZUxpc3QoNTM3NzYsWixmZSxGZSl9fSksdWU9ZC5nZXRFeHBhbmRlZFBhcmFtZXRlcnMobCksV2U9ZC5oYXNFZmZlY3RpdmVSZXN0UGFyYW1ldGVyKGwpP3VlLmxlbmd0aD09PTE/ZnVuY3Rpb24oRmUpe3JldHVybiEwfTpmdW5jdGlvbihGZSl7cmV0dXJuISEoRmUubGVuZ3RoJiZGZVtGZS5sZW5ndGgtMV0uY2hlY2tGbGFncyYzMjc2OCl9OmZ1bmN0aW9uKEZlKXtyZXR1cm4hMX07cmV0dXJuIHVlLm1hcChmdW5jdGlvbihGZSl7cmV0dXJue2lzVmFyaWFkaWM6V2UoRmUpLHBhcmFtZXRlcnM6RmUubWFwKGZ1bmN0aW9uKFope3JldHVybiBIKFosZCxELGZlLGcpfSkscHJlZml4OlZlKFZlKFtdLG5lLCEwKSxbZS5wdW5jdHVhdGlvblBhcnQoMjApXSwhMSksc3VmZml4OltlLnB1bmN0dWF0aW9uUGFydCgyMSldfX0pfWZ1bmN0aW9uIEgobCxkLEQsZmUsZyl7dmFyIG5lPWUubWFwVG9EaXNwbGF5UGFydHMoZnVuY3Rpb24oRmUpe3ZhciBaPWQuc3ltYm9sVG9QYXJhbWV0ZXJEZWNsYXJhdGlvbihsLEQsQSk7Zy53cml0ZU5vZGUoNCxaLGZlLEZlKX0pLHVlPWQuaXNPcHRpb25hbFBhcmFtZXRlcihsLnZhbHVlRGVjbGFyYXRpb24pLFdlPSEhKGwuY2hlY2tGbGFncyYzMjc2OCk7cmV0dXJue25hbWU6bC5uYW1lLGRvY3VtZW50YXRpb246bC5nZXREb2N1bWVudGF0aW9uQ29tbWVudChkKSxkaXNwbGF5UGFydHM6bmUsaXNPcHRpb25hbDp1ZSxpc1Jlc3Q6V2V9fWZ1bmN0aW9uIEkobCxkLEQsZmUsZyl7dmFyIG5lPWUubWFwVG9EaXNwbGF5UGFydHMoZnVuY3Rpb24odWUpe3ZhciBXZT1kLnR5cGVQYXJhbWV0ZXJUb0RlY2xhcmF0aW9uKGwsRCxBKTtnLndyaXRlTm9kZSg0LFdlLGZlLHVlKX0pO3JldHVybntuYW1lOmwuc3ltYm9sLm5hbWUsZG9jdW1lbnRhdGlvbjpsLnN5bWJvbC5nZXREb2N1bWVudGF0aW9uQ29tbWVudChkKSxkaXNwbGF5UGFydHM6bmUsaXNPcHRpb25hbDohMSxpc1Jlc3Q6ITF9fX0pKGE9ZS5TaWduYXR1cmVIZWxwfHwoZS5TaWduYXR1cmVIZWxwPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9MzAsQj1mdW5jdGlvbihOKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl5cXFxccz8vXFxcXCpcXFxcKj9cXFxccz9cIi5jb25jYXQoTixcIlxcXFxzP1xcXFwqXFxcXC9cXFxccz8kXCIpKX07ZnVuY3Rpb24gRShOKXtyZXR1cm4gTi5pbmNsdWRlSW5sYXlQYXJhbWV0ZXJOYW1lSGludHM9PT1cImxpdGVyYWxzXCJ8fE4uaW5jbHVkZUlubGF5UGFyYW1ldGVyTmFtZUhpbnRzPT09XCJhbGxcIn1mdW5jdGlvbiBRKE4pe3JldHVybiBOLmluY2x1ZGVJbmxheVBhcmFtZXRlck5hbWVIaW50cz09PVwibGl0ZXJhbHNcIn1mdW5jdGlvbiBsZShOKXt2YXIgcD1OLmZpbGUsbT1OLnByb2dyYW0sRz1OLnNwYW4sb2U9Ti5jYW5jZWxsYXRpb25Ub2tlbixmPU4ucHJlZmVyZW5jZXMsVD1wLnRleHQsSz1tLmdldENvbXBpbGVyT3B0aW9ucygpLGI9bS5nZXRUeXBlQ2hlY2tlcigpLHNlPVtdO3JldHVybiBKKHApLHNlO2Z1bmN0aW9uIEooVSl7aWYoISghVXx8VS5nZXRGdWxsV2lkdGgoKT09PTApKXtzd2l0Y2goVS5raW5kKXtjYXNlIDI2MTpjYXNlIDI1NzpjYXNlIDI1ODpjYXNlIDI1NjpjYXNlIDIyNjpjYXNlIDIxMzpjYXNlIDE2OTpjYXNlIDIxNDpvZS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl9aWYoISFlLnRleHRTcGFuSW50ZXJzZWN0c1dpdGgoRyxVLnBvcyxVLmdldEZ1bGxXaWR0aCgpKSYmIWUuaXNUeXBlTm9kZShVKSlyZXR1cm4gZi5pbmNsdWRlSW5sYXlWYXJpYWJsZVR5cGVIaW50cyYmZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oVSl8fGYuaW5jbHVkZUlubGF5UHJvcGVydHlEZWNsYXJhdGlvblR5cGVIaW50cyYmZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oVSk/aGUoVSk6Zi5pbmNsdWRlSW5sYXlFbnVtTWVtYmVyVmFsdWVIaW50cyYmZS5pc0VudW1NZW1iZXIoVSk/dmUoVSk6RShmKSYmKGUuaXNDYWxsRXhwcmVzc2lvbihVKXx8ZS5pc05ld0V4cHJlc3Npb24oVSkpP0YoVSk6KGYuaW5jbHVkZUlubGF5RnVuY3Rpb25QYXJhbWV0ZXJUeXBlSGludHMmJmUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihVKSYmZS5oYXNDb250ZXh0U2Vuc2l0aXZlUGFyYW1ldGVycyhVKSYmVihVKSxmLmluY2x1ZGVJbmxheUZ1bmN0aW9uTGlrZVJldHVyblR5cGVIaW50cyYmaWUoVSkmJkEoVSkpLGUuZm9yRWFjaENoaWxkKFUsSil9fWZ1bmN0aW9uIGllKFUpe3JldHVybiBlLmlzQXJyb3dGdW5jdGlvbihVKXx8ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihVKXx8ZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oVSl8fGUuaXNNZXRob2REZWNsYXJhdGlvbihVKXx8ZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oVSl9ZnVuY3Rpb24gUihVLGosSCl7c2UucHVzaCh7dGV4dDpcIlwiLmNvbmNhdChIP1wiLi4uXCI6XCJcIikuY29uY2F0KFAoVSx3KSxcIjpcIikscG9zaXRpb246aixraW5kOlwiUGFyYW1ldGVyXCIsd2hpdGVzcGFjZUFmdGVyOiEwfSl9ZnVuY3Rpb24gcShVLGope3NlLnB1c2goe3RleHQ6XCI6IFwiLmNvbmNhdChQKFUsdykpLHBvc2l0aW9uOmosa2luZDpcIlR5cGVcIix3aGl0ZXNwYWNlQmVmb3JlOiEwfSl9ZnVuY3Rpb24gTyhVLGope3NlLnB1c2goe3RleHQ6XCI9IFwiLmNvbmNhdChQKFUsdykpLHBvc2l0aW9uOmosa2luZDpcIkVudW1cIix3aGl0ZXNwYWNlQmVmb3JlOiEwfSl9ZnVuY3Rpb24gdmUoVSl7aWYoIVUuaW5pdGlhbGl6ZXIpe3ZhciBqPWIuZ2V0Q29uc3RhbnRWYWx1ZShVKTtqIT09dm9pZCAwJiZPKGoudG9TdHJpbmcoKSxVLmVuZCl9fWZ1bmN0aW9uIGVlKFUpe3JldHVybiBVLnN5bWJvbCYmVS5zeW1ib2wuZmxhZ3MmMTUzNn1mdW5jdGlvbiBoZShVKXtpZighKCFVLmluaXRpYWxpemVyfHxlLmlzQmluZGluZ1BhdHRlcm4oVS5uYW1lKSkpe3ZhciBqPWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKFUpO2lmKCFqKXt2YXIgSD1iLmdldFR5cGVBdExvY2F0aW9uKFUpO2lmKCFlZShIKSl7dmFyIEk9ayhIKTtJJiZxKEksVS5uYW1lLmVuZCl9fX19ZnVuY3Rpb24gRihVKXt2YXIgaj1VLmFyZ3VtZW50cztpZighKCFqfHwhai5sZW5ndGgpKXt2YXIgSD1bXSxJPWIuZ2V0UmVzb2x2ZWRTaWduYXR1cmVGb3JTaWduYXR1cmVIZWxwKFUsSCk7aWYoISghSXx8IUgubGVuZ3RoKSlmb3IodmFyIGw9MDtsPGoubGVuZ3RoOysrbCl7dmFyIGQ9altsXSxEPWUuc2tpcFBhcmVudGhlc2VzKGQpO2lmKCEoUShmKSYmISQoRCkpKXt2YXIgZmU9Yi5nZXRQYXJhbWV0ZXJJZGVudGlmaWVyTmFtZUF0UG9zaXRpb24oSSxsKTtpZihmZSl7dmFyIGc9ZmVbMF0sbmU9ZmVbMV0sdWU9Zi5pbmNsdWRlSW5sYXlQYXJhbWV0ZXJOYW1lSGludHNXaGVuQXJndW1lbnRNYXRjaGVzTmFtZXx8IXgoRCxnKTtpZighdWUmJiFuZSljb250aW51ZTt2YXIgV2U9ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhnKTtpZihYKEQsV2UpKWNvbnRpbnVlO1IoV2UsZC5nZXRTdGFydCgpLG5lKX19fX19ZnVuY3Rpb24geChVLGope3JldHVybiBlLmlzSWRlbnRpZmllcihVKT9VLnRleHQ9PT1qOmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oVSk/VS5uYW1lLnRleHQ9PT1qOiExfWZ1bmN0aW9uIFgoVSxqKXtpZighZS5pc0lkZW50aWZpZXJUZXh0KGosSy50YXJnZXQsZS5nZXRMYW5ndWFnZVZhcmlhbnQocC5zY3JpcHRLaW5kKSkpcmV0dXJuITE7dmFyIEg9ZS5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyhULFUucG9zKTtpZighKEghPW51bGwmJkgubGVuZ3RoKSlyZXR1cm4hMTt2YXIgST1CKGopO3JldHVybiBlLnNvbWUoSCxmdW5jdGlvbihsKXtyZXR1cm4gSS50ZXN0KFQuc3Vic3RyaW5nKGwucG9zLGwuZW5kKSl9KX1mdW5jdGlvbiAkKFUpe3N3aXRjaChVLmtpbmQpe2Nhc2UgMjE5Ont2YXIgaj1VLm9wZXJhbmQ7cmV0dXJuIGUuaXNMaXRlcmFsRXhwcmVzc2lvbihqKXx8ZS5pc0lkZW50aWZpZXIoaikmJmUuaXNJbmZpbml0eU9yTmFOU3RyaW5nKGouZXNjYXBlZFRleHQpfWNhc2UgMTEwOmNhc2UgOTU6Y2FzZSAxMDQ6Y2FzZSAxNDpjYXNlIDIyMzpyZXR1cm4hMDtjYXNlIDc5Ont2YXIgSD1VLmVzY2FwZWRUZXh0O3JldHVybiBZKEgpfHxlLmlzSW5maW5pdHlPck5hTlN0cmluZyhIKX19cmV0dXJuIGUuaXNMaXRlcmFsRXhwcmVzc2lvbihVKX1mdW5jdGlvbiBBKFUpe2lmKCEoZS5pc0Fycm93RnVuY3Rpb24oVSkmJiFlLmZpbmRDaGlsZE9mS2luZChVLDIwLHApKSl7dmFyIGo9ZS5nZXRFZmZlY3RpdmVSZXR1cm5UeXBlTm9kZShVKTtpZighKGp8fCFVLmJvZHkpKXt2YXIgSD1iLmdldFNpZ25hdHVyZUZyb21EZWNsYXJhdGlvbihVKTtpZighIUgpe3ZhciBJPWIuZ2V0UmV0dXJuVHlwZU9mU2lnbmF0dXJlKEgpO2lmKCFlZShJKSl7dmFyIGw9ayhJKTshbHx8cShsLHkoVSkpfX19fX1mdW5jdGlvbiB5KFUpe3ZhciBqPWUuZmluZENoaWxkT2ZLaW5kKFUsMjEscCk7cmV0dXJuIGo/ai5lbmQ6VS5wYXJhbWV0ZXJzLmVuZH1mdW5jdGlvbiBWKFUpe3ZhciBqPWIuZ2V0U2lnbmF0dXJlRnJvbURlY2xhcmF0aW9uKFUpO2lmKCEhailmb3IodmFyIEg9MDtIPFUucGFyYW1ldGVycy5sZW5ndGgmJkg8ai5wYXJhbWV0ZXJzLmxlbmd0aDsrK0gpe3ZhciBJPVUucGFyYW1ldGVyc1tIXSxsPWUuZ2V0RWZmZWN0aXZlVHlwZUFubm90YXRpb25Ob2RlKEkpO2lmKCFsKXt2YXIgZD1MKGoucGFyYW1ldGVyc1tIXSk7IWR8fHEoZCxJLnF1ZXN0aW9uVG9rZW4/SS5xdWVzdGlvblRva2VuLmVuZDpJLm5hbWUuZW5kKX19fWZ1bmN0aW9uIEwoVSl7dmFyIGo9VS52YWx1ZURlY2xhcmF0aW9uO2lmKCEoIWp8fCFlLmlzUGFyYW1ldGVyKGopKSl7dmFyIEg9Yi5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKFUsaik7aWYoIWVlKEgpKXJldHVybiBrKEgpfX1mdW5jdGlvbiBQKFUsail7cmV0dXJuIFUubGVuZ3RoPmo/VS5zdWJzdHIoMCxqLTMpK1wiLi4uXCI6VX1mdW5jdGlvbiBrKFUpe3ZhciBqPTcxMjg2Nzg0LEg9e3JlbW92ZUNvbW1lbnRzOiEwfSxJPWUuY3JlYXRlUHJpbnRlcihIKTtyZXR1cm4gZS51c2luZ1NpbmdsZUxpbmVTdHJpbmdXcml0ZXIoZnVuY3Rpb24obCl7dmFyIGQ9Yi50eXBlVG9UeXBlTm9kZShVLHZvaWQgMCxqLGwpO2UuRGVidWcuYXNzZXJ0SXNEZWZpbmVkKGQsXCJzaG91bGQgYWx3YXlzIGdldCB0eXBlbm9kZVwiKSxJLndyaXRlTm9kZSg0LGQscCxsKX0pfWZ1bmN0aW9uIFkoVSl7cmV0dXJuIFU9PT1cInVuZGVmaW5lZFwifX1DLnByb3ZpZGVJbmxheUhpbnRzPWxlfSkoYT1lLklubGF5SGludHN8fChlLklubGF5SGludHM9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhPS9eZGF0YTooPzphcHBsaWNhdGlvblxcL2pzb24oPzo7Y2hhcnNldD1bdVVdW3RUXVtmRl0tOCk7YmFzZTY0LChbQS1aYS16MC05K1xcLz1dKykkKT8vO2Z1bmN0aW9uIEMoUSl7dmFyIGxlPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoUS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCkpLE49US5nZXRDdXJyZW50RGlyZWN0b3J5KCkscD1uZXcgZS5NYXAsbT1uZXcgZS5NYXA7cmV0dXJue3RyeUdldFNvdXJjZVBvc2l0aW9uOmYsdHJ5R2V0R2VuZXJhdGVkUG9zaXRpb246VCx0b0xpbmVDb2x1bW5PZmZzZXQ6SixjbGVhckNhY2hlOmllfTtmdW5jdGlvbiBHKFIpe3JldHVybiBlLnRvUGF0aChSLE4sbGUpfWZ1bmN0aW9uIG9lKFIscSl7dmFyIE89RyhSKSx2ZT1tLmdldChPKTtpZih2ZSlyZXR1cm4gdmU7dmFyIGVlO2lmKFEuZ2V0RG9jdW1lbnRQb3NpdGlvbk1hcHBlcillZT1RLmdldERvY3VtZW50UG9zaXRpb25NYXBwZXIoUixxKTtlbHNlIGlmKFEucmVhZEZpbGUpe3ZhciBoZT1zZShSKTtlZT1oZSYmZS5nZXREb2N1bWVudFBvc2l0aW9uTWFwcGVyKHtnZXRTb3VyY2VGaWxlTGlrZTpzZSxnZXRDYW5vbmljYWxGaWxlTmFtZTpsZSxsb2c6ZnVuY3Rpb24oRil7cmV0dXJuIFEubG9nKEYpfX0sUixlLmdldExpbmVJbmZvKGhlLnRleHQsZS5nZXRMaW5lU3RhcnRzKGhlKSksZnVuY3Rpb24oRil7cmV0dXJuIVEuZmlsZUV4aXN0c3x8US5maWxlRXhpc3RzKEYpP1EucmVhZEZpbGUoRik6dm9pZCAwfSl9cmV0dXJuIG0uc2V0KE8sZWV8fGUuaWRlbnRpdHlTb3VyY2VNYXBDb25zdW1lciksZWV8fGUuaWRlbnRpdHlTb3VyY2VNYXBDb25zdW1lcn1mdW5jdGlvbiBmKFIpe2lmKCEhZS5pc0RlY2xhcmF0aW9uRmlsZU5hbWUoUi5maWxlTmFtZSkpe3ZhciBxPUsoUi5maWxlTmFtZSk7aWYoISFxKXt2YXIgTz1vZShSLmZpbGVOYW1lKS5nZXRTb3VyY2VQb3NpdGlvbihSKTtyZXR1cm4hT3x8Tz09PVI/dm9pZCAwOmYoTyl8fE99fX1mdW5jdGlvbiBUKFIpe2lmKCFlLmlzRGVjbGFyYXRpb25GaWxlTmFtZShSLmZpbGVOYW1lKSl7dmFyIHE9SyhSLmZpbGVOYW1lKTtpZighIXEpe3ZhciBPPVEuZ2V0UHJvZ3JhbSgpO2lmKCFPLmlzU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QocS5maWxlTmFtZSkpe3ZhciB2ZT1PLmdldENvbXBpbGVyT3B0aW9ucygpLGVlPWUub3V0RmlsZSh2ZSksaGU9ZWU/ZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKGVlKStcIi5kLnRzXCI6ZS5nZXREZWNsYXJhdGlvbkVtaXRPdXRwdXRGaWxlUGF0aFdvcmtlcihSLmZpbGVOYW1lLE8uZ2V0Q29tcGlsZXJPcHRpb25zKCksTixPLmdldENvbW1vblNvdXJjZURpcmVjdG9yeSgpLGxlKTtpZihoZSE9PXZvaWQgMCl7dmFyIEY9b2UoaGUsUi5maWxlTmFtZSkuZ2V0R2VuZXJhdGVkUG9zaXRpb24oUik7cmV0dXJuIEY9PT1SP3ZvaWQgMDpGfX19fX1mdW5jdGlvbiBLKFIpe3ZhciBxPVEuZ2V0UHJvZ3JhbSgpO2lmKCEhcSl7dmFyIE89RyhSKSx2ZT1xLmdldFNvdXJjZUZpbGVCeVBhdGgoTyk7cmV0dXJuIHZlJiZ2ZS5yZXNvbHZlZFBhdGg9PT1PP3ZlOnZvaWQgMH19ZnVuY3Rpb24gYihSKXt2YXIgcT1HKFIpLE89cC5nZXQocSk7aWYoTyE9PXZvaWQgMClyZXR1cm4gT3x8dm9pZCAwO2lmKCFRLnJlYWRGaWxlfHxRLmZpbGVFeGlzdHMmJiFRLmZpbGVFeGlzdHMocSkpe3Auc2V0KHEsITEpO3JldHVybn12YXIgdmU9US5yZWFkRmlsZShxKSxlZT12ZT9FKHZlKTohMTtyZXR1cm4gcC5zZXQocSxlZSksZWV8fHZvaWQgMH1mdW5jdGlvbiBzZShSKXtyZXR1cm4gUS5nZXRTb3VyY2VGaWxlTGlrZT9RLmdldFNvdXJjZUZpbGVMaWtlKFIpOksoUil8fGIoUil9ZnVuY3Rpb24gSihSLHEpe3ZhciBPPXNlKFIpO3JldHVybiBPLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHEpfWZ1bmN0aW9uIGllKCl7cC5jbGVhcigpLG0uY2xlYXIoKX19ZS5nZXRTb3VyY2VNYXBwZXI9QztmdW5jdGlvbiB3KFEsbGUsTixwKXt2YXIgbT1lLnRyeUdldFNvdXJjZU1hcHBpbmdVUkwoTik7aWYobSl7dmFyIEc9YS5leGVjKG0pO2lmKEcpe2lmKEdbMV0pe3ZhciBvZT1HWzFdO3JldHVybiBCKFEsZS5iYXNlNjRkZWNvZGUoZS5zeXMsb2UpLGxlKX1tPXZvaWQgMH19dmFyIGY9W107bSYmZi5wdXNoKG0pLGYucHVzaChsZStcIi5tYXBcIik7Zm9yKHZhciBUPW0mJmUuZ2V0Tm9ybWFsaXplZEFic29sdXRlUGF0aChtLGUuZ2V0RGlyZWN0b3J5UGF0aChsZSkpLEs9MCxiPWY7SzxiLmxlbmd0aDtLKyspe3ZhciBzZT1iW0tdLEo9ZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKHNlLGUuZ2V0RGlyZWN0b3J5UGF0aChsZSkpLGllPXAoSixUKTtpZihlLmlzU3RyaW5nKGllKSlyZXR1cm4gQihRLGllLEopO2lmKGllIT09dm9pZCAwKXJldHVybiBpZXx8dm9pZCAwfX1lLmdldERvY3VtZW50UG9zaXRpb25NYXBwZXI9dztmdW5jdGlvbiBCKFEsbGUsTil7dmFyIHA9ZS50cnlQYXJzZVJhd1NvdXJjZU1hcChsZSk7aWYoISghcHx8IXAuc291cmNlc3x8IXAuZmlsZXx8IXAubWFwcGluZ3MpJiYhKHAuc291cmNlc0NvbnRlbnQmJnAuc291cmNlc0NvbnRlbnQuc29tZShlLmlzU3RyaW5nKSkpcmV0dXJuIGUuY3JlYXRlRG9jdW1lbnRQb3NpdGlvbk1hcHBlcihRLHAsTil9ZnVuY3Rpb24gRShRLGxlKXtyZXR1cm57dGV4dDpRLGxpbmVNYXA6bGUsZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb246ZnVuY3Rpb24oTil7cmV0dXJuIGUuY29tcHV0ZUxpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGUuZ2V0TGluZVN0YXJ0cyh0aGlzKSxOKX19fX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhPW5ldyBlLk1hcDtmdW5jdGlvbiBDKGllLFIscSl7Ui5nZXRTZW1hbnRpY0RpYWdub3N0aWNzKGllLHEpO3ZhciBPPVtdLHZlPVIuZ2V0VHlwZUNoZWNrZXIoKSxlZT1pZS5pbXBsaWVkTm9kZUZvcm1hdD09PWUuTW9kdWxlS2luZC5Db21tb25KU3x8ZS5maWxlRXh0ZW5zaW9uSXNPbmVPZihpZS5maWxlTmFtZSxbXCIuY3RzXCIsXCIuY2pzXCJdKTshZWUmJmllLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yJiYoZS5wcm9ncmFtQ29udGFpbnNFc01vZHVsZXMoUil8fGUuY29tcGlsZXJPcHRpb25zSW5kaWNhdGVFc01vZHVsZXMoUi5nZXRDb21waWxlck9wdGlvbnMoKSkpJiZ3KGllKSYmTy5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUocChpZS5jb21tb25Kc01vZHVsZUluZGljYXRvciksZS5EaWFnbm9zdGljcy5GaWxlX2lzX2FfQ29tbW9uSlNfbW9kdWxlX2l0X21heV9iZV9jb252ZXJ0ZWRfdG9fYW5fRVNfbW9kdWxlKSk7dmFyIGhlPWUuaXNTb3VyY2VGaWxlSlMoaWUpO2lmKGEuY2xlYXIoKSxMKGllKSxlLmdldEFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMoUi5nZXRDb21waWxlck9wdGlvbnMoKSkpZm9yKHZhciBGPTAseD1pZS5pbXBvcnRzO0Y8eC5sZW5ndGg7RisrKXt2YXIgWD14W0ZdLCQ9ZS5pbXBvcnRGcm9tTW9kdWxlU3BlY2lmaWVyKFgpLEE9RSgkKTtpZighIUEpe3ZhciB5PWUuZ2V0UmVzb2x2ZWRNb2R1bGUoaWUsWC50ZXh0LGUuZ2V0TW9kZUZvclVzYWdlTG9jYXRpb24oaWUsWCkpLFY9eSYmUi5nZXRTb3VyY2VGaWxlKHkucmVzb2x2ZWRGaWxlTmFtZSk7ViYmVi5leHRlcm5hbE1vZHVsZUluZGljYXRvciYmVi5leHRlcm5hbE1vZHVsZUluZGljYXRvciE9PSEwJiZlLmlzRXhwb3J0QXNzaWdubWVudChWLmV4dGVybmFsTW9kdWxlSW5kaWNhdG9yKSYmVi5leHRlcm5hbE1vZHVsZUluZGljYXRvci5pc0V4cG9ydEVxdWFscyYmTy5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoQSxlLkRpYWdub3N0aWNzLkltcG9ydF9tYXlfYmVfY29udmVydGVkX3RvX2FfZGVmYXVsdF9pbXBvcnQpKX19cmV0dXJuIGUuYWRkUmFuZ2UoTyxpZS5iaW5kU3VnZ2VzdGlvbkRpYWdub3N0aWNzKSxlLmFkZFJhbmdlKE8sUi5nZXRTdWdnZXN0aW9uRGlhZ25vc3RpY3MoaWUscSkpLE8uc29ydChmdW5jdGlvbihQLGspe3JldHVybiBQLnN0YXJ0LWsuc3RhcnR9KTtmdW5jdGlvbiBMKFApe2lmKGhlKXNlKFAsdmUpJiZPLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihQLnBhcmVudCk/UC5wYXJlbnQubmFtZTpQLGUuRGlhZ25vc3RpY3MuVGhpc19jb25zdHJ1Y3Rvcl9mdW5jdGlvbl9tYXlfYmVfY29udmVydGVkX3RvX2FfY2xhc3NfZGVjbGFyYXRpb24pKTtlbHNle2lmKGUuaXNWYXJpYWJsZVN0YXRlbWVudChQKSYmUC5wYXJlbnQ9PT1pZSYmUC5kZWNsYXJhdGlvbkxpc3QuZmxhZ3MmMiYmUC5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLmxlbmd0aD09PTEpe3ZhciBrPVAuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9uc1swXS5pbml0aWFsaXplcjtrJiZlLmlzUmVxdWlyZUNhbGwoaywhMCkmJk8ucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKGssZS5EaWFnbm9zdGljcy5yZXF1aXJlX2NhbGxfbWF5X2JlX2NvbnZlcnRlZF90b19hbl9pbXBvcnQpKX1lLmNvZGVmaXgucGFyYW1ldGVyU2hvdWxkR2V0VHlwZUZyb21KU0RvYyhQKSYmTy5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoUC5uYW1lfHxQLGUuRGlhZ25vc3RpY3MuSlNEb2NfdHlwZXNfbWF5X2JlX21vdmVkX3RvX1R5cGVTY3JpcHRfdHlwZXMpKX1KKFApJiZRKFAsdmUsTyksUC5mb3JFYWNoQ2hpbGQoTCl9fWUuY29tcHV0ZVN1Z2dlc3Rpb25EaWFnbm9zdGljcz1DO2Z1bmN0aW9uIHcoaWUpe3JldHVybiBpZS5zdGF0ZW1lbnRzLnNvbWUoZnVuY3Rpb24oUil7c3dpdGNoKFIua2luZCl7Y2FzZSAyMzc6cmV0dXJuIFIuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucy5zb21lKGZ1bmN0aW9uKHZlKXtyZXR1cm4hIXZlLmluaXRpYWxpemVyJiZlLmlzUmVxdWlyZUNhbGwoQih2ZS5pbml0aWFsaXplciksITApfSk7Y2FzZSAyMzg6e3ZhciBxPVIuZXhwcmVzc2lvbjtpZighZS5pc0JpbmFyeUV4cHJlc3Npb24ocSkpcmV0dXJuIGUuaXNSZXF1aXJlQ2FsbChxLCEwKTt2YXIgTz1lLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQocSk7cmV0dXJuIE89PT0xfHxPPT09Mn1kZWZhdWx0OnJldHVybiExfX0pfWZ1bmN0aW9uIEIoaWUpe3JldHVybiBlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGllKT9CKGllLmV4cHJlc3Npb24pOmllfWZ1bmN0aW9uIEUoaWUpe3N3aXRjaChpZS5raW5kKXtjYXNlIDI2Njp2YXIgUj1pZS5pbXBvcnRDbGF1c2UscT1pZS5tb2R1bGVTcGVjaWZpZXI7cmV0dXJuIFImJiFSLm5hbWUmJlIubmFtZWRCaW5kaW5ncyYmUi5uYW1lZEJpbmRpbmdzLmtpbmQ9PT0yNjgmJmUuaXNTdHJpbmdMaXRlcmFsKHEpP1IubmFtZWRCaW5kaW5ncy5uYW1lOnZvaWQgMDtjYXNlIDI2NTpyZXR1cm4gaWUubmFtZTtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gUShpZSxSLHEpe2xlKGllLFIpJiYhYS5oYXMoYihpZSkpJiZxLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZSghaWUubmFtZSYmZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oaWUucGFyZW50KSYmZS5pc0lkZW50aWZpZXIoaWUucGFyZW50Lm5hbWUpP2llLnBhcmVudC5uYW1lOmllLGUuRGlhZ25vc3RpY3MuVGhpc19tYXlfYmVfY29udmVydGVkX3RvX2FuX2FzeW5jX2Z1bmN0aW9uKSl9ZnVuY3Rpb24gbGUoaWUsUil7cmV0dXJuIWUuaXNBc3luY0Z1bmN0aW9uKGllKSYmaWUuYm9keSYmZS5pc0Jsb2NrKGllLmJvZHkpJiZtKGllLmJvZHksUikmJk4oaWUsUil9ZnVuY3Rpb24gTihpZSxSKXt2YXIgcT1SLmdldFNpZ25hdHVyZUZyb21EZWNsYXJhdGlvbihpZSksTz1xP1IuZ2V0UmV0dXJuVHlwZU9mU2lnbmF0dXJlKHEpOnZvaWQgMDtyZXR1cm4hIU8mJiEhUi5nZXRQcm9taXNlZFR5cGVPZlByb21pc2UoTyl9ZS5yZXR1cm5zUHJvbWlzZT1OO2Z1bmN0aW9uIHAoaWUpe3JldHVybiBlLmlzQmluYXJ5RXhwcmVzc2lvbihpZSk/aWUubGVmdDppZX1mdW5jdGlvbiBtKGllLFIpe3JldHVybiEhZS5mb3JFYWNoUmV0dXJuU3RhdGVtZW50KGllLGZ1bmN0aW9uKHEpe3JldHVybiBHKHEsUil9KX1mdW5jdGlvbiBHKGllLFIpe3JldHVybiBlLmlzUmV0dXJuU3RhdGVtZW50KGllKSYmISFpZS5leHByZXNzaW9uJiZvZShpZS5leHByZXNzaW9uLFIpfWUuaXNSZXR1cm5TdGF0ZW1lbnRXaXRoRml4YWJsZVByb21pc2VIYW5kbGVyPUc7ZnVuY3Rpb24gb2UoaWUsUil7aWYoIWYoaWUpfHwhVChpZSl8fCFpZS5hcmd1bWVudHMuZXZlcnkoZnVuY3Rpb24oTyl7cmV0dXJuIEsoTyxSKX0pKXJldHVybiExO2Zvcih2YXIgcT1pZS5leHByZXNzaW9uLmV4cHJlc3Npb247ZihxKXx8ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihxKTspaWYoZS5pc0NhbGxFeHByZXNzaW9uKHEpKXtpZighVChxKXx8IXEuYXJndW1lbnRzLmV2ZXJ5KGZ1bmN0aW9uKE8pe3JldHVybiBLKE8sUil9KSlyZXR1cm4hMTtxPXEuZXhwcmVzc2lvbi5leHByZXNzaW9ufWVsc2UgcT1xLmV4cHJlc3Npb247cmV0dXJuITB9ZS5pc0ZpeGFibGVQcm9taXNlSGFuZGxlcj1vZTtmdW5jdGlvbiBmKGllKXtyZXR1cm4gZS5pc0NhbGxFeHByZXNzaW9uKGllKSYmKGUuaGFzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uV2l0aE5hbWUoaWUsXCJ0aGVuXCIpfHxlLmhhc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbldpdGhOYW1lKGllLFwiY2F0Y2hcIil8fGUuaGFzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uV2l0aE5hbWUoaWUsXCJmaW5hbGx5XCIpKX1mdW5jdGlvbiBUKGllKXt2YXIgUj1pZS5leHByZXNzaW9uLm5hbWUudGV4dCxxPVI9PT1cInRoZW5cIj8yOlI9PT1cImNhdGNoXCJ8fFI9PT1cImZpbmFsbHlcIj8xOjA7cmV0dXJuIGllLmFyZ3VtZW50cy5sZW5ndGg+cT8hMTppZS5hcmd1bWVudHMubGVuZ3RoPHE/ITA6cT09PTF8fGUuc29tZShpZS5hcmd1bWVudHMsZnVuY3Rpb24oTyl7cmV0dXJuIE8ua2luZD09PTEwNHx8ZS5pc0lkZW50aWZpZXIoTykmJk8udGV4dD09PVwidW5kZWZpbmVkXCJ9KX1mdW5jdGlvbiBLKGllLFIpe3N3aXRjaChpZS5raW5kKXtjYXNlIDI1NjpjYXNlIDIxMzp2YXIgcT1lLmdldEZ1bmN0aW9uRmxhZ3MoaWUpO2lmKHEmMSlyZXR1cm4hMTtjYXNlIDIxNDphLnNldChiKGllKSwhMCk7Y2FzZSAxMDQ6cmV0dXJuITA7Y2FzZSA3OTpjYXNlIDIwNjp7dmFyIE89Ui5nZXRTeW1ib2xBdExvY2F0aW9uKGllKTtyZXR1cm4gTz9SLmlzVW5kZWZpbmVkU3ltYm9sKE8pfHxlLnNvbWUoZS5za2lwQWxpYXMoTyxSKS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24odmUpe3JldHVybiBlLmlzRnVuY3Rpb25MaWtlKHZlKXx8ZS5oYXNJbml0aWFsaXplcih2ZSkmJiEhdmUuaW5pdGlhbGl6ZXImJmUuaXNGdW5jdGlvbkxpa2UodmUuaW5pdGlhbGl6ZXIpfSk6ITF9ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gYihpZSl7cmV0dXJuXCJcIi5jb25jYXQoaWUucG9zLnRvU3RyaW5nKCksXCI6XCIpLmNvbmNhdChpZS5lbmQudG9TdHJpbmcoKSl9ZnVuY3Rpb24gc2UoaWUsUil7dmFyIHEsTyx2ZSxlZTtpZihpZS5raW5kPT09MjEzKXtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihpZS5wYXJlbnQpJiYoKHE9aWUuc3ltYm9sLm1lbWJlcnMpPT09bnVsbHx8cT09PXZvaWQgMD92b2lkIDA6cS5zaXplKSlyZXR1cm4hMDt2YXIgaGU9Ui5nZXRTeW1ib2xPZkV4cGFuZG8oaWUsITEpO3JldHVybiEhKGhlJiYoKChPPWhlLmV4cG9ydHMpPT09bnVsbHx8Tz09PXZvaWQgMD92b2lkIDA6Ty5zaXplKXx8KCh2ZT1oZS5tZW1iZXJzKT09PW51bGx8fHZlPT09dm9pZCAwP3ZvaWQgMDp2ZS5zaXplKSkpfXJldHVybiBpZS5raW5kPT09MjU2PyEhKCEoKGVlPWllLnN5bWJvbC5tZW1iZXJzKT09PW51bGx8fGVlPT09dm9pZCAwKSYmZWUuc2l6ZSk6ITF9ZnVuY3Rpb24gSihpZSl7c3dpdGNoKGllLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMTY5OmNhc2UgMjEzOmNhc2UgMjE0OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWUuY2FuQmVDb252ZXJ0ZWRUb0FzeW5jPUp9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9NzAyNDY0MDA7ZnVuY3Rpb24gQihtLEcsb2Upe3ZhciBmPUUobSxHLG9lKTtpZihmIT09XCJcIilyZXR1cm4gZjt2YXIgVD1lLmdldENvbWJpbmVkTG9jYWxBbmRFeHBvcnRTeW1ib2xGbGFncyhHKTtyZXR1cm4gVCYzMj9lLmdldERlY2xhcmF0aW9uT2ZLaW5kKEcsMjI2KT9cImxvY2FsIGNsYXNzXCI6XCJjbGFzc1wiOlQmMzg0P1wiZW51bVwiOlQmNTI0Mjg4P1widHlwZVwiOlQmNjQ/XCJpbnRlcmZhY2VcIjpUJjI2MjE0ND9cInR5cGUgcGFyYW1ldGVyXCI6VCY4P1wiZW51bSBtZW1iZXJcIjpUJjIwOTcxNTI/XCJhbGlhc1wiOlQmMTUzNj9cIm1vZHVsZVwiOmZ9Qy5nZXRTeW1ib2xLaW5kPUI7ZnVuY3Rpb24gRShtLEcsb2Upe3ZhciBmPW0uZ2V0Um9vdFN5bWJvbHMoRyk7aWYoZi5sZW5ndGg9PT0xJiZlLmZpcnN0KGYpLmZsYWdzJjgxOTImJm0uZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihHLG9lKS5nZXROb25OdWxsYWJsZVR5cGUoKS5nZXRDYWxsU2lnbmF0dXJlcygpLmxlbmd0aCE9PTApcmV0dXJuXCJtZXRob2RcIjtpZihtLmlzVW5kZWZpbmVkU3ltYm9sKEcpKXJldHVyblwidmFyXCI7aWYobS5pc0FyZ3VtZW50c1N5bWJvbChHKSlyZXR1cm5cImxvY2FsIHZhclwiO2lmKG9lLmtpbmQ9PT0xMDgmJmUuaXNFeHByZXNzaW9uKG9lKXx8ZS5pc1RoaXNJblR5cGVRdWVyeShvZSkpcmV0dXJuXCJwYXJhbWV0ZXJcIjt2YXIgVD1lLmdldENvbWJpbmVkTG9jYWxBbmRFeHBvcnRTeW1ib2xGbGFncyhHKTtpZihUJjMpcmV0dXJuIGUuaXNGaXJzdERlY2xhcmF0aW9uT2ZTeW1ib2xQYXJhbWV0ZXIoRyk/XCJwYXJhbWV0ZXJcIjpHLnZhbHVlRGVjbGFyYXRpb24mJmUuaXNWYXJDb25zdChHLnZhbHVlRGVjbGFyYXRpb24pP1wiY29uc3RcIjplLmZvckVhY2goRy5kZWNsYXJhdGlvbnMsZS5pc0xldCk/XCJsZXRcIjpwKEcpP1wibG9jYWwgdmFyXCI6XCJ2YXJcIjtpZihUJjE2KXJldHVybiBwKEcpP1wibG9jYWwgZnVuY3Rpb25cIjpcImZ1bmN0aW9uXCI7aWYoVCYzMjc2OClyZXR1cm5cImdldHRlclwiO2lmKFQmNjU1MzYpcmV0dXJuXCJzZXR0ZXJcIjtpZihUJjgxOTIpcmV0dXJuXCJtZXRob2RcIjtpZihUJjE2Mzg0KXJldHVyblwiY29uc3RydWN0b3JcIjtpZihUJjQpe2lmKFQmMzM1NTQ0MzImJkcuY2hlY2tGbGFncyY2KXt2YXIgSz1lLmZvckVhY2gobS5nZXRSb290U3ltYm9scyhHKSxmdW5jdGlvbihzZSl7dmFyIEo9c2UuZ2V0RmxhZ3MoKTtpZihKJjk4MzExKXJldHVyblwicHJvcGVydHlcIn0pO2lmKCFLKXt2YXIgYj1tLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oRyxvZSk7cmV0dXJuIGIuZ2V0Q2FsbFNpZ25hdHVyZXMoKS5sZW5ndGg/XCJtZXRob2RcIjpcInByb3BlcnR5XCJ9cmV0dXJuIEt9cmV0dXJuXCJwcm9wZXJ0eVwifXJldHVyblwiXCJ9ZnVuY3Rpb24gUShtKXtpZihtLmRlY2xhcmF0aW9ucyYmbS5kZWNsYXJhdGlvbnMubGVuZ3RoKXt2YXIgRz1tLmRlY2xhcmF0aW9ucyxvZT1HWzBdLGY9Ry5zbGljZSgxKSxUPWUubGVuZ3RoKGYpJiZlLmlzRGVwcmVjYXRlZERlY2xhcmF0aW9uKG9lKSYmZS5zb21lKGYsZnVuY3Rpb24oYil7cmV0dXJuIWUuaXNEZXByZWNhdGVkRGVjbGFyYXRpb24oYil9KT84MTkyOjAsSz1lLmdldE5vZGVNb2RpZmllcnMob2UsVCk7aWYoSylyZXR1cm4gSy5zcGxpdChcIixcIil9cmV0dXJuW119ZnVuY3Rpb24gbGUobSxHKXtpZighRylyZXR1cm5cIlwiO3ZhciBvZT1uZXcgZS5TZXQoUShHKSk7aWYoRy5mbGFncyYyMDk3MTUyKXt2YXIgZj1tLmdldEFsaWFzZWRTeW1ib2woRyk7ZiE9PUcmJmUuZm9yRWFjaChRKGYpLGZ1bmN0aW9uKFQpe29lLmFkZChUKX0pfXJldHVybiBHLmZsYWdzJjE2Nzc3MjE2JiZvZS5hZGQoXCJvcHRpb25hbFwiKSxvZS5zaXplPjA/ZS5hcnJheUZyb20ob2UudmFsdWVzKCkpLmpvaW4oXCIsXCIpOlwiXCJ9Qy5nZXRTeW1ib2xNb2RpZmllcnM9bGU7ZnVuY3Rpb24gTihtLEcsb2UsZixULEssYil7dmFyIHNlO0s9PT12b2lkIDAmJihLPWUuZ2V0TWVhbmluZ0Zyb21Mb2NhdGlvbihUKSk7dmFyIEo9W10saWU9W10sUj1bXSxxPWUuZ2V0Q29tYmluZWRMb2NhbEFuZEV4cG9ydFN5bWJvbEZsYWdzKEcpLE89SyYxP0UobSxHLFQpOlwiXCIsdmU9ITEsZWU9VC5raW5kPT09MTA4JiZlLmlzSW5FeHByZXNzaW9uQ29udGV4dChUKXx8ZS5pc1RoaXNJblR5cGVRdWVyeShUKSxoZSxGLHgsWCwkPSExO2lmKFQua2luZD09PTEwOCYmIWVlKXJldHVybntkaXNwbGF5UGFydHM6W2Uua2V5d29yZFBhcnQoMTA4KV0sZG9jdW1lbnRhdGlvbjpbXSxzeW1ib2xLaW5kOlwicHJpbWl0aXZlIHR5cGVcIix0YWdzOnZvaWQgMH07aWYoTyE9PVwiXCJ8fHEmMzJ8fHEmMjA5NzE1Mil7aWYoTz09PVwiZ2V0dGVyXCJ8fE89PT1cInNldHRlclwiKXt2YXIgQT1lLmZpbmQoRy5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oZXIpe3JldHVybiBlci5uYW1lPT09VH0pO2lmKEEpc3dpdGNoKEEua2luZCl7Y2FzZSAxNzI6Tz1cImdldHRlclwiO2JyZWFrO2Nhc2UgMTczOk89XCJzZXR0ZXJcIjticmVhaztkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoQSl9ZWxzZSBPPVwicHJvcGVydHlcIn12YXIgeT12b2lkIDA7aWYoaGU9ZWU/bS5nZXRUeXBlQXRMb2NhdGlvbihUKTptLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oRyxUKSxULnBhcmVudCYmVC5wYXJlbnQua2luZD09PTIwNil7dmFyIFY9VC5wYXJlbnQubmFtZTsoVj09PVR8fFYmJlYuZ2V0RnVsbFdpZHRoKCk9PT0wKSYmKFQ9VC5wYXJlbnQpfXZhciBMPXZvaWQgMDtpZihlLmlzQ2FsbE9yTmV3RXhwcmVzc2lvbihUKT9MPVQ6KGUuaXNDYWxsRXhwcmVzc2lvblRhcmdldChUKXx8ZS5pc05ld0V4cHJlc3Npb25UYXJnZXQoVCl8fFQucGFyZW50JiYoZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChULnBhcmVudCl8fGUuaXNUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oVC5wYXJlbnQpKSYmZS5pc0Z1bmN0aW9uTGlrZShHLnZhbHVlRGVjbGFyYXRpb24pKSYmKEw9VC5wYXJlbnQpLEwpe3k9bS5nZXRSZXNvbHZlZFNpZ25hdHVyZShMKTt2YXIgUD1MLmtpbmQ9PT0yMDl8fGUuaXNDYWxsRXhwcmVzc2lvbihMKSYmTC5leHByZXNzaW9uLmtpbmQ9PT0xMDYsaz1QP2hlLmdldENvbnN0cnVjdFNpZ25hdHVyZXMoKTpoZS5nZXRDYWxsU2lnbmF0dXJlcygpO2lmKHkmJiFlLmNvbnRhaW5zKGsseS50YXJnZXQpJiYhZS5jb250YWlucyhrLHkpJiYoeT1rLmxlbmd0aD9rWzBdOnZvaWQgMCkseSl7c3dpdGNoKFAmJnEmMzI/KE89XCJjb25zdHJ1Y3RvclwiLHdlKGhlLnN5bWJvbCxPKSk6cSYyMDk3MTUyPyhPPVwiYWxpYXNcIixkZShPKSxKLnB1c2goZS5zcGFjZVBhcnQoKSksUCYmKHkuZmxhZ3MmNCYmKEoucHVzaChlLmtleXdvcmRQYXJ0KDEyNikpLEoucHVzaChlLnNwYWNlUGFydCgpKSksSi5wdXNoKGUua2V5d29yZFBhcnQoMTAzKSksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpKSxfZShHKSk6d2UoRyxPKSxPKXtjYXNlXCJKU1ggYXR0cmlidXRlXCI6Y2FzZVwicHJvcGVydHlcIjpjYXNlXCJ2YXJcIjpjYXNlXCJjb25zdFwiOmNhc2VcImxldFwiOmNhc2VcInBhcmFtZXRlclwiOmNhc2VcImxvY2FsIHZhclwiOkoucHVzaChlLnB1bmN0dWF0aW9uUGFydCg1OCkpLEoucHVzaChlLnNwYWNlUGFydCgpKSwhKGUuZ2V0T2JqZWN0RmxhZ3MoaGUpJjE2KSYmaGUuc3ltYm9sJiYoZS5hZGRSYW5nZShKLGUuc3ltYm9sVG9EaXNwbGF5UGFydHMobSxoZS5zeW1ib2wsZix2b2lkIDAsNSkpLEoucHVzaChlLmxpbmVCcmVha1BhcnQoKSkpLFAmJih5LmZsYWdzJjQmJihKLnB1c2goZS5rZXl3b3JkUGFydCgxMjYpKSxKLnB1c2goZS5zcGFjZVBhcnQoKSkpLEoucHVzaChlLmtleXdvcmRQYXJ0KDEwMykpLEoucHVzaChlLnNwYWNlUGFydCgpKSkseWUoeSxrLDI2MjE0NCk7YnJlYWs7ZGVmYXVsdDp5ZSh5LGspfXZlPSEwLCQ9ay5sZW5ndGg+MX19ZWxzZSBpZihlLmlzTmFtZU9mRnVuY3Rpb25EZWNsYXJhdGlvbihUKSYmIShxJjk4MzA0KXx8VC5raW5kPT09MTM0JiZULnBhcmVudC5raW5kPT09MTcxKXt2YXIgWT1ULnBhcmVudCxVPUcuZGVjbGFyYXRpb25zJiZlLmZpbmQoRy5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oZXIpe3JldHVybiBlcj09PShULmtpbmQ9PT0xMzQ/WS5wYXJlbnQ6WSl9KTtpZihVKXt2YXIgaz1ZLmtpbmQ9PT0xNzE/aGUuZ2V0Tm9uTnVsbGFibGVUeXBlKCkuZ2V0Q29uc3RydWN0U2lnbmF0dXJlcygpOmhlLmdldE5vbk51bGxhYmxlVHlwZSgpLmdldENhbGxTaWduYXR1cmVzKCk7bS5pc0ltcGxlbWVudGF0aW9uT2ZPdmVybG9hZChZKT95PWtbMF06eT1tLmdldFNpZ25hdHVyZUZyb21EZWNsYXJhdGlvbihZKSxZLmtpbmQ9PT0xNzE/KE89XCJjb25zdHJ1Y3RvclwiLHdlKGhlLnN5bWJvbCxPKSk6d2UoWS5raW5kPT09MTc0JiYhKGhlLnN5bWJvbC5mbGFncyYyMDQ4fHxoZS5zeW1ib2wuZmxhZ3MmNDA5Nik/aGUuc3ltYm9sOkcsTykseSYmeWUoeSxrKSx2ZT0hMCwkPWsubGVuZ3RoPjF9fX1pZihxJjMyJiYhdmUmJiFlZSYmKHJyKCksZS5nZXREZWNsYXJhdGlvbk9mS2luZChHLDIyNik/ZGUoXCJsb2NhbCBjbGFzc1wiKTpKLnB1c2goZS5rZXl3b3JkUGFydCg4NCkpLEoucHVzaChlLnNwYWNlUGFydCgpKSxfZShHKSxBZShHLG9lKSkscSY2NCYmSyYyJiYoSGUoKSxKLnB1c2goZS5rZXl3b3JkUGFydCgxMTgpKSxKLnB1c2goZS5zcGFjZVBhcnQoKSksX2UoRyksQWUoRyxvZSkpLHEmNTI0Mjg4JiZLJjImJihIZSgpLEoucHVzaChlLmtleXdvcmRQYXJ0KDE1MikpLEoucHVzaChlLnNwYWNlUGFydCgpKSxfZShHKSxBZShHLG9lKSxKLnB1c2goZS5zcGFjZVBhcnQoKSksSi5wdXNoKGUub3BlcmF0b3JQYXJ0KDYzKSksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpLGUuYWRkUmFuZ2UoSixlLnR5cGVUb0Rpc3BsYXlQYXJ0cyhtLGUuaXNDb25zdFR5cGVSZWZlcmVuY2UoVC5wYXJlbnQpP20uZ2V0VHlwZUF0TG9jYXRpb24oVC5wYXJlbnQpOm0uZ2V0RGVjbGFyZWRUeXBlT2ZTeW1ib2woRyksZiw4Mzg4NjA4KSkpLHEmMzg0JiYoSGUoKSxlLnNvbWUoRy5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oZXIpe3JldHVybiBlLmlzRW51bURlY2xhcmF0aW9uKGVyKSYmZS5pc0VudW1Db25zdChlcil9KSYmKEoucHVzaChlLmtleXdvcmRQYXJ0KDg1KSksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpKSxKLnB1c2goZS5rZXl3b3JkUGFydCg5MikpLEoucHVzaChlLnNwYWNlUGFydCgpKSxfZShHKSkscSYxNTM2JiYhZWUpe0hlKCk7dmFyIEE9ZS5nZXREZWNsYXJhdGlvbk9mS2luZChHLDI2MSksaj1BJiZBLm5hbWUmJkEubmFtZS5raW5kPT09Nzk7Si5wdXNoKGUua2V5d29yZFBhcnQoaj8xNDI6MTQxKSksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpLF9lKEcpfWlmKHEmMjYyMTQ0JiZLJjIpaWYoSGUoKSxKLnB1c2goZS5wdW5jdHVhdGlvblBhcnQoMjApKSxKLnB1c2goZS50ZXh0UGFydChcInR5cGUgcGFyYW1ldGVyXCIpKSxKLnB1c2goZS5wdW5jdHVhdGlvblBhcnQoMjEpKSxKLnB1c2goZS5zcGFjZVBhcnQoKSksX2UoRyksRy5wYXJlbnQpSWUoKSxfZShHLnBhcmVudCxmKSxBZShHLnBhcmVudCxmKTtlbHNle3ZhciBIPWUuZ2V0RGVjbGFyYXRpb25PZktpbmQoRywxNjMpO2lmKEg9PT12b2lkIDApcmV0dXJuIGUuRGVidWcuZmFpbCgpO3ZhciBBPUgucGFyZW50O2lmKEEpaWYoZS5pc0Z1bmN0aW9uTGlrZUtpbmQoQS5raW5kKSl7SWUoKTt2YXIgeT1tLmdldFNpZ25hdHVyZUZyb21EZWNsYXJhdGlvbihBKTtBLmtpbmQ9PT0xNzU/KEoucHVzaChlLmtleXdvcmRQYXJ0KDEwMykpLEoucHVzaChlLnNwYWNlUGFydCgpKSk6QS5raW5kIT09MTc0JiZBLm5hbWUmJl9lKEEuc3ltYm9sKSxlLmFkZFJhbmdlKEosZS5zaWduYXR1cmVUb0Rpc3BsYXlQYXJ0cyhtLHksb2UsMzIpKX1lbHNlIEEua2luZD09PTI1OSYmKEllKCksSi5wdXNoKGUua2V5d29yZFBhcnQoMTUyKSksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpLF9lKEEuc3ltYm9sKSxBZShBLnN5bWJvbCxvZSkpfWlmKHEmOCl7Tz1cImVudW0gbWVtYmVyXCIsd2UoRyxcImVudW0gbWVtYmVyXCIpO3ZhciBBPShzZT1HLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxzZT09PXZvaWQgMD92b2lkIDA6c2VbMF07aWYoKEE9PW51bGw/dm9pZCAwOkEua2luZCk9PT0yOTkpe3ZhciBJPW0uZ2V0Q29uc3RhbnRWYWx1ZShBKTtJIT09dm9pZCAwJiYoSi5wdXNoKGUuc3BhY2VQYXJ0KCkpLEoucHVzaChlLm9wZXJhdG9yUGFydCg2MykpLEoucHVzaChlLnNwYWNlUGFydCgpKSxKLnB1c2goZS5kaXNwbGF5UGFydChlLmdldFRleHRPZkNvbnN0YW50VmFsdWUoSSksdHlwZW9mIEk9PVwibnVtYmVyXCI/ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQubnVtZXJpY0xpdGVyYWw6ZS5TeW1ib2xEaXNwbGF5UGFydEtpbmQuc3RyaW5nTGl0ZXJhbCkpKX19aWYoRy5mbGFncyYyMDk3MTUyKXtpZihIZSgpLCF2ZSl7dmFyIGw9bS5nZXRBbGlhc2VkU3ltYm9sKEcpO2lmKGwhPT1HJiZsLmRlY2xhcmF0aW9ucyYmbC5kZWNsYXJhdGlvbnMubGVuZ3RoPjApe3ZhciBkPWwuZGVjbGFyYXRpb25zWzBdLEQ9ZS5nZXROYW1lT2ZEZWNsYXJhdGlvbihkKTtpZihEKXt2YXIgZmU9ZS5pc01vZHVsZVdpdGhTdHJpbmdMaXRlcmFsTmFtZShkKSYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihkLDIpLGc9Ry5uYW1lIT09XCJkZWZhdWx0XCImJiFmZSxuZT1OKG0sbCxlLmdldFNvdXJjZUZpbGVPZk5vZGUoZCksZCxELEssZz9HOmwpO0oucHVzaC5hcHBseShKLG5lLmRpc3BsYXlQYXJ0cyksSi5wdXNoKGUubGluZUJyZWFrUGFydCgpKSx4PW5lLmRvY3VtZW50YXRpb24sWD1uZS50YWdzfWVsc2UgeD1sLmdldENvbnRleHR1YWxEb2N1bWVudGF0aW9uQ29tbWVudChkLG0pLFg9bC5nZXRKc0RvY1RhZ3MobSl9fWlmKEcuZGVjbGFyYXRpb25zKXN3aXRjaChHLmRlY2xhcmF0aW9uc1swXS5raW5kKXtjYXNlIDI2NDpKLnB1c2goZS5rZXl3b3JkUGFydCg5MykpLEoucHVzaChlLnNwYWNlUGFydCgpKSxKLnB1c2goZS5rZXl3b3JkUGFydCgxNDIpKTticmVhaztjYXNlIDI3MTpKLnB1c2goZS5rZXl3b3JkUGFydCg5MykpLEoucHVzaChlLnNwYWNlUGFydCgpKSxKLnB1c2goZS5rZXl3b3JkUGFydChHLmRlY2xhcmF0aW9uc1swXS5pc0V4cG9ydEVxdWFscz82Mzo4OCkpO2JyZWFrO2Nhc2UgMjc1OkoucHVzaChlLmtleXdvcmRQYXJ0KDkzKSk7YnJlYWs7ZGVmYXVsdDpKLnB1c2goZS5rZXl3b3JkUGFydCgxMDApKX1KLnB1c2goZS5zcGFjZVBhcnQoKSksX2UoRyksZS5mb3JFYWNoKEcuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGVyKXtpZihlci5raW5kPT09MjY1KXt2YXIgaXI9ZXI7aWYoZS5pc0V4dGVybmFsTW9kdWxlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oaXIpKUoucHVzaChlLnNwYWNlUGFydCgpKSxKLnB1c2goZS5vcGVyYXRvclBhcnQoNjMpKSxKLnB1c2goZS5zcGFjZVBhcnQoKSksSi5wdXNoKGUua2V5d29yZFBhcnQoMTQ2KSksSi5wdXNoKGUucHVuY3R1YXRpb25QYXJ0KDIwKSksSi5wdXNoKGUuZGlzcGxheVBhcnQoZS5nZXRUZXh0T2ZOb2RlKGUuZ2V0RXh0ZXJuYWxNb2R1bGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbkV4cHJlc3Npb24oaXIpKSxlLlN5bWJvbERpc3BsYXlQYXJ0S2luZC5zdHJpbmdMaXRlcmFsKSksSi5wdXNoKGUucHVuY3R1YXRpb25QYXJ0KDIxKSk7ZWxzZXt2YXIgQ3I9bS5nZXRTeW1ib2xBdExvY2F0aW9uKGlyLm1vZHVsZVJlZmVyZW5jZSk7Q3ImJihKLnB1c2goZS5zcGFjZVBhcnQoKSksSi5wdXNoKGUub3BlcmF0b3JQYXJ0KDYzKSksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpLF9lKENyLGYpKX1yZXR1cm4hMH19KX1pZighdmUpaWYoTyE9PVwiXCIpe2lmKGhlKXtpZihlZT8oSGUoKSxKLnB1c2goZS5rZXl3b3JkUGFydCgxMDgpKSk6d2UoRyxPKSxPPT09XCJwcm9wZXJ0eVwifHxPPT09XCJnZXR0ZXJcInx8Tz09PVwic2V0dGVyXCJ8fE89PT1cIkpTWCBhdHRyaWJ1dGVcInx8cSYzfHxPPT09XCJsb2NhbCB2YXJcInx8ZWUpe2lmKEoucHVzaChlLnB1bmN0dWF0aW9uUGFydCg1OCkpLEoucHVzaChlLnNwYWNlUGFydCgpKSxoZS5zeW1ib2wmJmhlLnN5bWJvbC5mbGFncyYyNjIxNDQpe3ZhciB1ZT1lLm1hcFRvRGlzcGxheVBhcnRzKGZ1bmN0aW9uKGVyKXt2YXIgaXI9bS50eXBlUGFyYW1ldGVyVG9EZWNsYXJhdGlvbihoZSxmLHcpO0VlKCkud3JpdGVOb2RlKDQsaXIsZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGUuZ2V0UGFyc2VUcmVlTm9kZShmKSksZXIpfSk7ZS5hZGRSYW5nZShKLHVlKX1lbHNlIGUuYWRkUmFuZ2UoSixlLnR5cGVUb0Rpc3BsYXlQYXJ0cyhtLGhlLGYpKTtpZihHLnRhcmdldCYmRy50YXJnZXQudHVwbGVMYWJlbERlY2xhcmF0aW9uKXt2YXIgV2U9Ry50YXJnZXQudHVwbGVMYWJlbERlY2xhcmF0aW9uO2UuRGVidWcuYXNzZXJ0Tm9kZShXZS5uYW1lLGUuaXNJZGVudGlmaWVyKSxKLnB1c2goZS5zcGFjZVBhcnQoKSksSi5wdXNoKGUucHVuY3R1YXRpb25QYXJ0KDIwKSksSi5wdXNoKGUudGV4dFBhcnQoZS5pZFRleHQoV2UubmFtZSkpKSxKLnB1c2goZS5wdW5jdHVhdGlvblBhcnQoMjEpKX19ZWxzZSBpZihxJjE2fHxxJjgxOTJ8fHEmMTYzODR8fHEmMTMxMDcyfHxxJjk4MzA0fHxPPT09XCJtZXRob2RcIil7dmFyIGs9aGUuZ2V0Tm9uTnVsbGFibGVUeXBlKCkuZ2V0Q2FsbFNpZ25hdHVyZXMoKTtrLmxlbmd0aCYmKHllKGtbMF0sayksJD1rLmxlbmd0aD4xKX19fWVsc2UgTz1CKG0sRyxUKTtpZihpZS5sZW5ndGg9PT0wJiYhJCYmKGllPUcuZ2V0Q29udGV4dHVhbERvY3VtZW50YXRpb25Db21tZW50KGYsbSkpLGllLmxlbmd0aD09PTAmJnEmNCYmRy5wYXJlbnQmJkcuZGVjbGFyYXRpb25zJiZlLmZvckVhY2goRy5wYXJlbnQuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKGVyKXtyZXR1cm4gZXIua2luZD09PTMwNX0pKWZvcih2YXIgRmU9MCxaPUcuZGVjbGFyYXRpb25zO0ZlPFoubGVuZ3RoO0ZlKyspe3ZhciBBPVpbRmVdO2lmKCEoIUEucGFyZW50fHxBLnBhcmVudC5raW5kIT09MjIxKSl7dmFyIEJlPW0uZ2V0U3ltYm9sQXRMb2NhdGlvbihBLnBhcmVudC5yaWdodCk7aWYoISFCZSYmKGllPUJlLmdldERvY3VtZW50YXRpb25Db21tZW50KG0pLFI9QmUuZ2V0SnNEb2NUYWdzKG0pLGllLmxlbmd0aD4wKSlicmVha319aWYoaWUubGVuZ3RoPT09MCYmZS5pc0lkZW50aWZpZXIoVCkmJkcudmFsdWVEZWNsYXJhdGlvbiYmZS5pc0JpbmRpbmdFbGVtZW50KEcudmFsdWVEZWNsYXJhdGlvbikpe3ZhciBBPUcudmFsdWVEZWNsYXJhdGlvbixnZT1BLnBhcmVudDtpZihlLmlzSWRlbnRpZmllcihBLm5hbWUpJiZlLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4oZ2UpKXt2YXIgUmU9ZS5nZXRUZXh0T2ZJZGVudGlmaWVyT3JMaXRlcmFsKEEubmFtZSksemU9bS5nZXRUeXBlQXRMb2NhdGlvbihnZSk7aWU9ZS5maXJzdERlZmluZWQoemUuaXNVbmlvbigpP3plLnR5cGVzOlt6ZV0sZnVuY3Rpb24oaXIpe3ZhciBDcj1pci5nZXRQcm9wZXJ0eShSZSk7cmV0dXJuIENyP0NyLmdldERvY3VtZW50YXRpb25Db21tZW50KG0pOnZvaWQgMH0pfHxlLmVtcHR5QXJyYXl9fXJldHVybiBSLmxlbmd0aD09PTAmJiEkJiYoUj1HLmdldENvbnRleHR1YWxKc0RvY1RhZ3MoZixtKSksaWUubGVuZ3RoPT09MCYmeCYmKGllPXgpLFIubGVuZ3RoPT09MCYmWCYmKFI9WCkse2Rpc3BsYXlQYXJ0czpKLGRvY3VtZW50YXRpb246aWUsc3ltYm9sS2luZDpPLHRhZ3M6Ui5sZW5ndGg9PT0wP3ZvaWQgMDpSfTtmdW5jdGlvbiBFZSgpe3JldHVybiBGfHwoRj1lLmNyZWF0ZVByaW50ZXIoe3JlbW92ZUNvbW1lbnRzOiEwfSkpLEZ9ZnVuY3Rpb24gSGUoKXtKLmxlbmd0aCYmSi5wdXNoKGUubGluZUJyZWFrUGFydCgpKSxycigpfWZ1bmN0aW9uIHJyKCl7YiYmKGRlKFwiYWxpYXNcIiksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpKX1mdW5jdGlvbiBJZSgpe0oucHVzaChlLnNwYWNlUGFydCgpKSxKLnB1c2goZS5rZXl3b3JkUGFydCgxMDEpKSxKLnB1c2goZS5zcGFjZVBhcnQoKSl9ZnVuY3Rpb24gX2UoZXIsaXIpe2ImJmVyPT09RyYmKGVyPWIpO3ZhciBDcj1lLnN5bWJvbFRvRGlzcGxheVBhcnRzKG0sZXIsaXJ8fG9lLHZvaWQgMCw3KTtlLmFkZFJhbmdlKEosQ3IpLEcuZmxhZ3MmMTY3NzcyMTYmJkoucHVzaChlLnB1bmN0dWF0aW9uUGFydCg1NykpfWZ1bmN0aW9uIHdlKGVyLGlyKXtIZSgpLGlyJiYoZGUoaXIpLGVyJiYhZS5zb21lKGVyLmRlY2xhcmF0aW9ucyxmdW5jdGlvbihDcil7cmV0dXJuIGUuaXNBcnJvd0Z1bmN0aW9uKENyKXx8KGUuaXNGdW5jdGlvbkV4cHJlc3Npb24oQ3IpfHxlLmlzQ2xhc3NFeHByZXNzaW9uKENyKSkmJiFDci5uYW1lfSkmJihKLnB1c2goZS5zcGFjZVBhcnQoKSksX2UoZXIpKSl9ZnVuY3Rpb24gZGUoZXIpe3N3aXRjaChlcil7Y2FzZVwidmFyXCI6Y2FzZVwiZnVuY3Rpb25cIjpjYXNlXCJsZXRcIjpjYXNlXCJjb25zdFwiOmNhc2VcImNvbnN0cnVjdG9yXCI6Si5wdXNoKGUudGV4dE9yS2V5d29yZFBhcnQoZXIpKTtyZXR1cm47ZGVmYXVsdDpKLnB1c2goZS5wdW5jdHVhdGlvblBhcnQoMjApKSxKLnB1c2goZS50ZXh0T3JLZXl3b3JkUGFydChlcikpLEoucHVzaChlLnB1bmN0dWF0aW9uUGFydCgyMSkpO3JldHVybn19ZnVuY3Rpb24geWUoZXIsaXIsQ3Ipe0NyPT09dm9pZCAwJiYoQ3I9MCksZS5hZGRSYW5nZShKLGUuc2lnbmF0dXJlVG9EaXNwbGF5UGFydHMobSxlcixmLENyfDMyKSksaXIubGVuZ3RoPjEmJihKLnB1c2goZS5zcGFjZVBhcnQoKSksSi5wdXNoKGUucHVuY3R1YXRpb25QYXJ0KDIwKSksSi5wdXNoKGUub3BlcmF0b3JQYXJ0KDM5KSksSi5wdXNoKGUuZGlzcGxheVBhcnQoKGlyLmxlbmd0aC0xKS50b1N0cmluZygpLGUuU3ltYm9sRGlzcGxheVBhcnRLaW5kLm51bWVyaWNMaXRlcmFsKSksSi5wdXNoKGUuc3BhY2VQYXJ0KCkpLEoucHVzaChlLnRleHRQYXJ0KGlyLmxlbmd0aD09PTI/XCJvdmVybG9hZFwiOlwib3ZlcmxvYWRzXCIpKSxKLnB1c2goZS5wdW5jdHVhdGlvblBhcnQoMjEpKSksaWU9ZXIuZ2V0RG9jdW1lbnRhdGlvbkNvbW1lbnQobSksUj1lci5nZXRKc0RvY1RhZ3MoKSxpci5sZW5ndGg+MSYmaWUubGVuZ3RoPT09MCYmUi5sZW5ndGg9PT0wJiYoaWU9aXJbMF0uZ2V0RG9jdW1lbnRhdGlvbkNvbW1lbnQobSksUj1pclswXS5nZXRKc0RvY1RhZ3MoKSl9ZnVuY3Rpb24gQWUoZXIsaXIpe3ZhciBDcj1lLm1hcFRvRGlzcGxheVBhcnRzKGZ1bmN0aW9uKFllKXt2YXIgQnI9bS5zeW1ib2xUb1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbnMoZXIsaXIsdyk7RWUoKS53cml0ZUxpc3QoNTM3NzYsQnIsZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKGUuZ2V0UGFyc2VUcmVlTm9kZShpcikpLFllKX0pO2UuYWRkUmFuZ2UoSixDcil9fUMuZ2V0U3ltYm9sRGlzcGxheVBhcnRzRG9jdW1lbnRhdGlvbkFuZFN5bWJvbEtpbmQ9TjtmdW5jdGlvbiBwKG0pe3JldHVybiBtLnBhcmVudD8hMTplLmZvckVhY2gobS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oRyl7aWYoRy5raW5kPT09MjEzKXJldHVybiEwO2lmKEcua2luZCE9PTI1NCYmRy5raW5kIT09MjU2KXJldHVybiExO2Zvcih2YXIgb2U9Ry5wYXJlbnQ7IWUuaXNGdW5jdGlvbkJsb2NrKG9lKTtvZT1vZS5wYXJlbnQpaWYob2Uua2luZD09PTMwNXx8b2Uua2luZD09PTI2MilyZXR1cm4hMTtyZXR1cm4hMH0pfX0pKGE9ZS5TeW1ib2xEaXNwbGF5fHwoZS5TeW1ib2xEaXNwbGF5PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKEUsUSl7dmFyIGxlPVtdLE49US5jb21waWxlck9wdGlvbnM/QihRLmNvbXBpbGVyT3B0aW9ucyxsZSk6e30scD1lLmdldERlZmF1bHRDb21waWxlck9wdGlvbnMoKTtmb3IodmFyIG0gaW4gcCllLmhhc1Byb3BlcnR5KHAsbSkmJk5bbV09PT12b2lkIDAmJihOW21dPXBbbV0pO2Zvcih2YXIgRz0wLG9lPWUudHJhbnNwaWxlT3B0aW9uVmFsdWVDb21waWxlck9wdGlvbnM7RzxvZS5sZW5ndGg7RysrKXt2YXIgZj1vZVtHXTtOW2YubmFtZV09Zi50cmFuc3BpbGVPcHRpb25WYWx1ZX1OLnN1cHByZXNzT3V0cHV0UGF0aENoZWNrPSEwLE4uYWxsb3dOb25Uc0V4dGVuc2lvbnM9ITA7dmFyIFQ9ZS5nZXROZXdMaW5lQ2hhcmFjdGVyKE4pLEs9e2dldFNvdXJjZUZpbGU6ZnVuY3Rpb24ocSl7cmV0dXJuIHE9PT1lLm5vcm1hbGl6ZVBhdGgoYik/c2U6dm9pZCAwfSx3cml0ZUZpbGU6ZnVuY3Rpb24ocSxPKXtlLmZpbGVFeHRlbnNpb25JcyhxLFwiLm1hcFwiKT8oZS5EZWJ1Zy5hc3NlcnRFcXVhbChpZSx2b2lkIDAsXCJVbmV4cGVjdGVkIG11bHRpcGxlIHNvdXJjZSBtYXAgb3V0cHV0cywgZmlsZTpcIixxKSxpZT1PKTooZS5EZWJ1Zy5hc3NlcnRFcXVhbChKLHZvaWQgMCxcIlVuZXhwZWN0ZWQgbXVsdGlwbGUgb3V0cHV0cywgZmlsZTpcIixxKSxKPU8pfSxnZXREZWZhdWx0TGliRmlsZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm5cImxpYi5kLnRzXCJ9LHVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ2V0Q2Fub25pY2FsRmlsZU5hbWU6ZnVuY3Rpb24ocSl7cmV0dXJuIHF9LGdldEN1cnJlbnREaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm5cIlwifSxnZXROZXdMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LGZpbGVFeGlzdHM6ZnVuY3Rpb24ocSl7cmV0dXJuIHE9PT1ifSxyZWFkRmlsZTpmdW5jdGlvbigpe3JldHVyblwiXCJ9LGRpcmVjdG9yeUV4aXN0czpmdW5jdGlvbigpe3JldHVybiEwfSxnZXREaXJlY3RvcmllczpmdW5jdGlvbigpe3JldHVybltdfX0sYj1RLmZpbGVOYW1lfHwoUS5jb21waWxlck9wdGlvbnMmJlEuY29tcGlsZXJPcHRpb25zLmpzeD9cIm1vZHVsZS50c3hcIjpcIm1vZHVsZS50c1wiKSxzZT1lLmNyZWF0ZVNvdXJjZUZpbGUoYixFLHtsYW5ndWFnZVZlcnNpb246ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KE4pLGltcGxpZWROb2RlRm9ybWF0OmUuZ2V0SW1wbGllZE5vZGVGb3JtYXRGb3JGaWxlKGUudG9QYXRoKGIsXCJcIixLLmdldENhbm9uaWNhbEZpbGVOYW1lKSx2b2lkIDAsSyxOKSxzZXRFeHRlcm5hbE1vZHVsZUluZGljYXRvcjplLmdldFNldEV4dGVybmFsTW9kdWxlSW5kaWNhdG9yKE4pfSk7US5tb2R1bGVOYW1lJiYoc2UubW9kdWxlTmFtZT1RLm1vZHVsZU5hbWUpLFEucmVuYW1lZERlcGVuZGVuY2llcyYmKHNlLnJlbmFtZWREZXBlbmRlbmNpZXM9bmV3IGUuTWFwKGUuZ2V0RW50cmllcyhRLnJlbmFtZWREZXBlbmRlbmNpZXMpKSk7dmFyIEosaWUsUj1lLmNyZWF0ZVByb2dyYW0oW2JdLE4sSyk7cmV0dXJuIFEucmVwb3J0RGlhZ25vc3RpY3MmJihlLmFkZFJhbmdlKGxlLFIuZ2V0U3ludGFjdGljRGlhZ25vc3RpY3Moc2UpKSxlLmFkZFJhbmdlKGxlLFIuZ2V0T3B0aW9uc0RpYWdub3N0aWNzKCkpKSxSLmVtaXQodm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFEudHJhbnNmb3JtZXJzKSxKPT09dm9pZCAwP2UuRGVidWcuZmFpbChcIk91dHB1dCBnZW5lcmF0aW9uIGZhaWxlZFwiKTp7b3V0cHV0VGV4dDpKLGRpYWdub3N0aWNzOmxlLHNvdXJjZU1hcFRleHQ6aWV9fWUudHJhbnNwaWxlTW9kdWxlPWE7ZnVuY3Rpb24gQyhFLFEsbGUsTixwKXt2YXIgbT1hKEUse2NvbXBpbGVyT3B0aW9uczpRLGZpbGVOYW1lOmxlLHJlcG9ydERpYWdub3N0aWNzOiEhTixtb2R1bGVOYW1lOnB9KTtyZXR1cm4gZS5hZGRSYW5nZShOLG0uZGlhZ25vc3RpY3MpLG0ub3V0cHV0VGV4dH1lLnRyYW5zcGlsZT1DO3ZhciB3O2Z1bmN0aW9uIEIoRSxRKXt3PXd8fGUuZmlsdGVyKGUub3B0aW9uRGVjbGFyYXRpb25zLGZ1bmN0aW9uKEcpe3JldHVybiB0eXBlb2YgRy50eXBlPT1cIm9iamVjdFwiJiYhZS5mb3JFYWNoRW50cnkoRy50eXBlLGZ1bmN0aW9uKG9lKXtyZXR1cm4gdHlwZW9mIG9lIT1cIm51bWJlclwifSl9KSxFPWUuY2xvbmVDb21waWxlck9wdGlvbnMoRSk7Zm9yKHZhciBsZT1mdW5jdGlvbihHKXtpZighZS5oYXNQcm9wZXJ0eShFLEcubmFtZSkpcmV0dXJuXCJjb250aW51ZVwiO3ZhciBvZT1FW0cubmFtZV07ZS5pc1N0cmluZyhvZSk/RVtHLm5hbWVdPWUucGFyc2VDdXN0b21UeXBlT3B0aW9uKEcsb2UsUSk6ZS5mb3JFYWNoRW50cnkoRy50eXBlLGZ1bmN0aW9uKGYpe3JldHVybiBmPT09b2V9KXx8US5wdXNoKGUuY3JlYXRlQ29tcGlsZXJEaWFnbm9zdGljRm9ySW52YWxpZEN1c3RvbVR5cGUoRykpfSxOPTAscD13O048cC5sZW5ndGg7TisrKXt2YXIgbT1wW05dO2xlKG0pfXJldHVybiBFfWUuZml4dXBDb21waWxlck9wdGlvbnM9Qn0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oRSl7RVtFLkZvcm1hdERvY3VtZW50PTBdPVwiRm9ybWF0RG9jdW1lbnRcIixFW0UuRm9ybWF0U2VsZWN0aW9uPTFdPVwiRm9ybWF0U2VsZWN0aW9uXCIsRVtFLkZvcm1hdE9uRW50ZXI9Ml09XCJGb3JtYXRPbkVudGVyXCIsRVtFLkZvcm1hdE9uU2VtaWNvbG9uPTNdPVwiRm9ybWF0T25TZW1pY29sb25cIixFW0UuRm9ybWF0T25PcGVuaW5nQ3VybHlCcmFjZT00XT1cIkZvcm1hdE9uT3BlbmluZ0N1cmx5QnJhY2VcIixFW0UuRm9ybWF0T25DbG9zaW5nQ3VybHlCcmFjZT01XT1cIkZvcm1hdE9uQ2xvc2luZ0N1cmx5QnJhY2VcIn0pKHc9Qy5Gb3JtYXR0aW5nUmVxdWVzdEtpbmR8fChDLkZvcm1hdHRpbmdSZXF1ZXN0S2luZD17fSkpO3ZhciBCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRShRLGxlLE4pe3RoaXMuc291cmNlRmlsZT1RLHRoaXMuZm9ybWF0dGluZ1JlcXVlc3RLaW5kPWxlLHRoaXMub3B0aW9ucz1OfXJldHVybiBFLnByb3RvdHlwZS51cGRhdGVDb250ZXh0PWZ1bmN0aW9uKFEsbGUsTixwLG0pe3RoaXMuY3VycmVudFRva2VuU3Bhbj1lLkRlYnVnLmNoZWNrRGVmaW5lZChRKSx0aGlzLmN1cnJlbnRUb2tlblBhcmVudD1lLkRlYnVnLmNoZWNrRGVmaW5lZChsZSksdGhpcy5uZXh0VG9rZW5TcGFuPWUuRGVidWcuY2hlY2tEZWZpbmVkKE4pLHRoaXMubmV4dFRva2VuUGFyZW50PWUuRGVidWcuY2hlY2tEZWZpbmVkKHApLHRoaXMuY29udGV4dE5vZGU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQobSksdGhpcy5jb250ZXh0Tm9kZUFsbE9uU2FtZUxpbmU9dm9pZCAwLHRoaXMubmV4dE5vZGVBbGxPblNhbWVMaW5lPXZvaWQgMCx0aGlzLnRva2Vuc0FyZU9uU2FtZUxpbmU9dm9pZCAwLHRoaXMuY29udGV4dE5vZGVCbG9ja0lzT25PbmVMaW5lPXZvaWQgMCx0aGlzLm5leHROb2RlQmxvY2tJc09uT25lTGluZT12b2lkIDB9LEUucHJvdG90eXBlLkNvbnRleHROb2RlQWxsT25TYW1lTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHROb2RlQWxsT25TYW1lTGluZT09PXZvaWQgMCYmKHRoaXMuY29udGV4dE5vZGVBbGxPblNhbWVMaW5lPXRoaXMuTm9kZUlzT25PbmVMaW5lKHRoaXMuY29udGV4dE5vZGUpKSx0aGlzLmNvbnRleHROb2RlQWxsT25TYW1lTGluZX0sRS5wcm90b3R5cGUuTmV4dE5vZGVBbGxPblNhbWVMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dE5vZGVBbGxPblNhbWVMaW5lPT09dm9pZCAwJiYodGhpcy5uZXh0Tm9kZUFsbE9uU2FtZUxpbmU9dGhpcy5Ob2RlSXNPbk9uZUxpbmUodGhpcy5uZXh0VG9rZW5QYXJlbnQpKSx0aGlzLm5leHROb2RlQWxsT25TYW1lTGluZX0sRS5wcm90b3R5cGUuVG9rZW5zQXJlT25TYW1lTGluZT1mdW5jdGlvbigpe2lmKHRoaXMudG9rZW5zQXJlT25TYW1lTGluZT09PXZvaWQgMCl7dmFyIFE9dGhpcy5zb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHRoaXMuY3VycmVudFRva2VuU3Bhbi5wb3MpLmxpbmUsbGU9dGhpcy5zb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHRoaXMubmV4dFRva2VuU3Bhbi5wb3MpLmxpbmU7dGhpcy50b2tlbnNBcmVPblNhbWVMaW5lPVE9PT1sZX1yZXR1cm4gdGhpcy50b2tlbnNBcmVPblNhbWVMaW5lfSxFLnByb3RvdHlwZS5Db250ZXh0Tm9kZUJsb2NrSXNPbk9uZUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0Tm9kZUJsb2NrSXNPbk9uZUxpbmU9PT12b2lkIDAmJih0aGlzLmNvbnRleHROb2RlQmxvY2tJc09uT25lTGluZT10aGlzLkJsb2NrSXNPbk9uZUxpbmUodGhpcy5jb250ZXh0Tm9kZSkpLHRoaXMuY29udGV4dE5vZGVCbG9ja0lzT25PbmVMaW5lfSxFLnByb3RvdHlwZS5OZXh0Tm9kZUJsb2NrSXNPbk9uZUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0Tm9kZUJsb2NrSXNPbk9uZUxpbmU9PT12b2lkIDAmJih0aGlzLm5leHROb2RlQmxvY2tJc09uT25lTGluZT10aGlzLkJsb2NrSXNPbk9uZUxpbmUodGhpcy5uZXh0VG9rZW5QYXJlbnQpKSx0aGlzLm5leHROb2RlQmxvY2tJc09uT25lTGluZX0sRS5wcm90b3R5cGUuTm9kZUlzT25PbmVMaW5lPWZ1bmN0aW9uKFEpe3ZhciBsZT10aGlzLnNvdXJjZUZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oUS5nZXRTdGFydCh0aGlzLnNvdXJjZUZpbGUpKS5saW5lLE49dGhpcy5zb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFEuZ2V0RW5kKCkpLmxpbmU7cmV0dXJuIGxlPT09Tn0sRS5wcm90b3R5cGUuQmxvY2tJc09uT25lTGluZT1mdW5jdGlvbihRKXt2YXIgbGU9ZS5maW5kQ2hpbGRPZktpbmQoUSwxOCx0aGlzLnNvdXJjZUZpbGUpLE49ZS5maW5kQ2hpbGRPZktpbmQoUSwxOSx0aGlzLnNvdXJjZUZpbGUpO2lmKGxlJiZOKXt2YXIgcD10aGlzLnNvdXJjZUZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obGUuZ2V0RW5kKCkpLmxpbmUsbT10aGlzLnNvdXJjZUZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oTi5nZXRTdGFydCh0aGlzLnNvdXJjZUZpbGUpKS5saW5lO3JldHVybiBwPT09bX1yZXR1cm4hMX0sRX0oKTtDLkZvcm1hdHRpbmdDb250ZXh0PUJ9KShhPWUuZm9ybWF0dGluZ3x8KGUuZm9ybWF0dGluZz17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PWUuY3JlYXRlU2Nhbm5lcig5OSwhMSwwKSxCPWUuY3JlYXRlU2Nhbm5lcig5OSwhMSwxKSxFOyhmdW5jdGlvbihsZSl7bGVbbGUuU2Nhbj0wXT1cIlNjYW5cIixsZVtsZS5SZXNjYW5HcmVhdGVyVGhhblRva2VuPTFdPVwiUmVzY2FuR3JlYXRlclRoYW5Ub2tlblwiLGxlW2xlLlJlc2NhblNsYXNoVG9rZW49Ml09XCJSZXNjYW5TbGFzaFRva2VuXCIsbGVbbGUuUmVzY2FuVGVtcGxhdGVUb2tlbj0zXT1cIlJlc2NhblRlbXBsYXRlVG9rZW5cIixsZVtsZS5SZXNjYW5Kc3hJZGVudGlmaWVyPTRdPVwiUmVzY2FuSnN4SWRlbnRpZmllclwiLGxlW2xlLlJlc2NhbkpzeFRleHQ9NV09XCJSZXNjYW5Kc3hUZXh0XCIsbGVbbGUuUmVzY2FuSnN4QXR0cmlidXRlVmFsdWU9Nl09XCJSZXNjYW5Kc3hBdHRyaWJ1dGVWYWx1ZVwifSkoRXx8KEU9e30pKTtmdW5jdGlvbiBRKGxlLE4scCxtLEcpe3ZhciBvZT1OPT09MT9COnc7b2Uuc2V0VGV4dChsZSksb2Uuc2V0VGV4dFBvcyhwKTt2YXIgZj0hMCxULEssYixzZSxKLGllPUcoe2FkdmFuY2U6UixyZWFkVG9rZW5JbmZvOlgscmVhZEVPRlRva2VuUmFuZ2U6QSxpc09uVG9rZW46eSxpc09uRU9GOlYsZ2V0Q3VycmVudExlYWRpbmdUcml2aWE6ZnVuY3Rpb24oKXtyZXR1cm4gVH0sbGFzdFRyYWlsaW5nVHJpdmlhV2FzTmV3TGluZTpmdW5jdGlvbigpe3JldHVybiBmfSxza2lwVG9FbmRPZjpQLHNraXBUb1N0YXJ0T2Y6ayxnZXRTdGFydFBvczpmdW5jdGlvbigpe3ZhciBZO3JldHVybihZPUo9PW51bGw/dm9pZCAwOkoudG9rZW4ucG9zKSE9PW51bGwmJlkhPT12b2lkIDA/WTpvZS5nZXRUb2tlblBvcygpfX0pO3JldHVybiBKPXZvaWQgMCxvZS5zZXRUZXh0KHZvaWQgMCksaWU7ZnVuY3Rpb24gUigpe0o9dm9pZCAwO3ZhciBZPW9lLmdldFN0YXJ0UG9zKCkhPT1wO1k/Zj0hIUsmJmUubGFzdChLKS5raW5kPT09NDpvZS5zY2FuKCksVD12b2lkIDAsSz12b2lkIDA7Zm9yKHZhciBVPW9lLmdldFN0YXJ0UG9zKCk7VTxtOyl7dmFyIGo9b2UuZ2V0VG9rZW4oKTtpZighZS5pc1RyaXZpYShqKSlicmVhaztvZS5zY2FuKCk7dmFyIEg9e3BvczpVLGVuZDpvZS5nZXRTdGFydFBvcygpLGtpbmQ6an07VT1vZS5nZXRTdGFydFBvcygpLFQ9ZS5hcHBlbmQoVCxIKX1iPW9lLmdldFN0YXJ0UG9zKCl9ZnVuY3Rpb24gcShZKXtzd2l0Y2goWS5raW5kKXtjYXNlIDMzOmNhc2UgNzE6Y2FzZSA3MjpjYXNlIDQ5OmNhc2UgNDg6cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gTyhZKXtpZihZLnBhcmVudClzd2l0Y2goWS5wYXJlbnQua2luZCl7Y2FzZSAyODU6Y2FzZSAyODA6Y2FzZSAyODE6Y2FzZSAyNzk6cmV0dXJuIGUuaXNLZXl3b3JkKFkua2luZCl8fFkua2luZD09PTc5fXJldHVybiExfWZ1bmN0aW9uIHZlKFkpe3JldHVybiBlLmlzSnN4VGV4dChZKX1mdW5jdGlvbiBlZShZKXtyZXR1cm4gWS5raW5kPT09MTN9ZnVuY3Rpb24gaGUoWSl7cmV0dXJuIFkua2luZD09PTE2fHxZLmtpbmQ9PT0xN31mdW5jdGlvbiBGKFkpe3JldHVybiBZLnBhcmVudCYmZS5pc0pzeEF0dHJpYnV0ZShZLnBhcmVudCkmJlkucGFyZW50LmluaXRpYWxpemVyPT09WX1mdW5jdGlvbiB4KFkpe3JldHVybiBZPT09NDN8fFk9PT02OH1mdW5jdGlvbiBYKFkpe2UuRGVidWcuYXNzZXJ0KHkoKSk7dmFyIFU9cShZKT8xOmVlKFkpPzI6aGUoWSk/MzpPKFkpPzQ6dmUoWSk/NTpGKFkpPzY6MDtpZihKJiZVPT09c2UpcmV0dXJuIEwoSixZKTtvZS5nZXRTdGFydFBvcygpIT09YiYmKGUuRGVidWcuYXNzZXJ0KEohPT12b2lkIDApLG9lLnNldFRleHRQb3MoYiksb2Uuc2NhbigpKTt2YXIgaj0kKFksVSksSD1DLmNyZWF0ZVRleHRSYW5nZVdpdGhLaW5kKG9lLmdldFN0YXJ0UG9zKCksb2UuZ2V0VGV4dFBvcygpLGopO2ZvcihLJiYoSz12b2lkIDApO29lLmdldFN0YXJ0UG9zKCk8bSYmKGo9b2Uuc2NhbigpLCEhZS5pc1RyaXZpYShqKSk7KXt2YXIgST1DLmNyZWF0ZVRleHRSYW5nZVdpdGhLaW5kKG9lLmdldFN0YXJ0UG9zKCksb2UuZ2V0VGV4dFBvcygpLGopO2lmKEt8fChLPVtdKSxLLnB1c2goSSksaj09PTQpe29lLnNjYW4oKTticmVha319cmV0dXJuIEo9e2xlYWRpbmdUcml2aWE6VCx0cmFpbGluZ1RyaXZpYTpLLHRva2VuOkh9LEwoSixZKX1mdW5jdGlvbiAkKFksVSl7dmFyIGo9b2UuZ2V0VG9rZW4oKTtzd2l0Y2goc2U9MCxVKXtjYXNlIDE6aWYoaj09PTMxKXtzZT0xO3ZhciBIPW9lLnJlU2NhbkdyZWF0ZXJUb2tlbigpO3JldHVybiBlLkRlYnVnLmFzc2VydChZLmtpbmQ9PT1IKSxIfWJyZWFrO2Nhc2UgMjppZih4KGopKXtzZT0yO3ZhciBIPW9lLnJlU2NhblNsYXNoVG9rZW4oKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoWS5raW5kPT09SCksSH1icmVhaztjYXNlIDM6aWYoaj09PTE5KXJldHVybiBzZT0zLG9lLnJlU2NhblRlbXBsYXRlVG9rZW4oITEpO2JyZWFrO2Nhc2UgNDpyZXR1cm4gc2U9NCxvZS5zY2FuSnN4SWRlbnRpZmllcigpO2Nhc2UgNTpyZXR1cm4gc2U9NSxvZS5yZVNjYW5Kc3hUb2tlbighMSk7Y2FzZSA2OnJldHVybiBzZT02LG9lLnJlU2NhbkpzeEF0dHJpYnV0ZVZhbHVlKCk7Y2FzZSAwOmJyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnROZXZlcihVKX1yZXR1cm4gan1mdW5jdGlvbiBBKCl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KFYoKSksQy5jcmVhdGVUZXh0UmFuZ2VXaXRoS2luZChvZS5nZXRTdGFydFBvcygpLG9lLmdldFRleHRQb3MoKSwxKX1mdW5jdGlvbiB5KCl7dmFyIFk9Sj9KLnRva2VuLmtpbmQ6b2UuZ2V0VG9rZW4oKTtyZXR1cm4gWSE9PTEmJiFlLmlzVHJpdmlhKFkpfWZ1bmN0aW9uIFYoKXt2YXIgWT1KP0oudG9rZW4ua2luZDpvZS5nZXRUb2tlbigpO3JldHVybiBZPT09MX1mdW5jdGlvbiBMKFksVSl7cmV0dXJuIGUuaXNUb2tlbihVKSYmWS50b2tlbi5raW5kIT09VS5raW5kJiYoWS50b2tlbi5raW5kPVUua2luZCksWX1mdW5jdGlvbiBQKFkpe29lLnNldFRleHRQb3MoWS5lbmQpLGI9b2UuZ2V0U3RhcnRQb3MoKSxzZT12b2lkIDAsSj12b2lkIDAsZj0hMSxUPXZvaWQgMCxLPXZvaWQgMH1mdW5jdGlvbiBrKFkpe29lLnNldFRleHRQb3MoWS5wb3MpLGI9b2UuZ2V0U3RhcnRQb3MoKSxzZT12b2lkIDAsSj12b2lkIDAsZj0hMSxUPXZvaWQgMCxLPXZvaWQgMH19Qy5nZXRGb3JtYXR0aW5nU2Nhbm5lcj1RfSkoYT1lLmZvcm1hdHRpbmd8fChlLmZvcm1hdHRpbmc9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtDLmFueUNvbnRleHQ9ZS5lbXB0eUFycmF5O3ZhciB3OyhmdW5jdGlvbihFKXtFW0UuU3RvcFByb2Nlc3NpbmdTcGFjZUFjdGlvbnM9MV09XCJTdG9wUHJvY2Vzc2luZ1NwYWNlQWN0aW9uc1wiLEVbRS5TdG9wUHJvY2Vzc2luZ1Rva2VuQWN0aW9ucz0yXT1cIlN0b3BQcm9jZXNzaW5nVG9rZW5BY3Rpb25zXCIsRVtFLkluc2VydFNwYWNlPTRdPVwiSW5zZXJ0U3BhY2VcIixFW0UuSW5zZXJ0TmV3TGluZT04XT1cIkluc2VydE5ld0xpbmVcIixFW0UuRGVsZXRlU3BhY2U9MTZdPVwiRGVsZXRlU3BhY2VcIixFW0UuRGVsZXRlVG9rZW49MzJdPVwiRGVsZXRlVG9rZW5cIixFW0UuSW5zZXJ0VHJhaWxpbmdTZW1pY29sb249NjRdPVwiSW5zZXJ0VHJhaWxpbmdTZW1pY29sb25cIixFW0UuU3RvcEFjdGlvbj0zXT1cIlN0b3BBY3Rpb25cIixFW0UuTW9kaWZ5U3BhY2VBY3Rpb249MjhdPVwiTW9kaWZ5U3BhY2VBY3Rpb25cIixFW0UuTW9kaWZ5VG9rZW5BY3Rpb249OTZdPVwiTW9kaWZ5VG9rZW5BY3Rpb25cIn0pKHc9Qy5SdWxlQWN0aW9ufHwoQy5SdWxlQWN0aW9uPXt9KSk7dmFyIEI7KGZ1bmN0aW9uKEUpe0VbRS5Ob25lPTBdPVwiTm9uZVwiLEVbRS5DYW5EZWxldGVOZXdMaW5lcz0xXT1cIkNhbkRlbGV0ZU5ld0xpbmVzXCJ9KShCPUMuUnVsZUZsYWdzfHwoQy5SdWxlRmxhZ3M9e30pKX0pKGE9ZS5mb3JtYXR0aW5nfHwoZS5mb3JtYXR0aW5nPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdygpe2Zvcih2YXIgTmU9W10sbj0wO248PTE2MDtuKyspbiE9PTEmJk5lLnB1c2gobik7ZnVuY3Rpb24gbHIoKXtmb3IodmFyIF9yPVtdLHBpPTA7cGk8YXJndW1lbnRzLmxlbmd0aDtwaSsrKV9yW3BpXT1hcmd1bWVudHNbcGldO3JldHVybnt0b2tlbnM6TmUuZmlsdGVyKGZ1bmN0aW9uKGFlKXtyZXR1cm4hX3Iuc29tZShmdW5jdGlvbihYZSl7cmV0dXJuIFhlPT09YWV9KX0pLGlzU3BlY2lmaWM6ITF9fXZhciBiZT17dG9rZW5zOk5lLGlzU3BlY2lmaWM6ITF9LEdlPUUoVmUoVmUoW10sTmUsITApLFszXSwhMSkpLHVyPUUoVmUoVmUoW10sTmUsITApLFsxXSwhMSkpLHlyPWxlKDgxLDE2MCksSXI9bGUoMjksNzgpLHdyPVsxMDEsMTAyLDE2MCwxMjcsMTM5XSxVcj1bNDUsNDYsNTQsNTNdLGlpPVs4LDksNzksMjAsMjIsMTgsMTA4LDEwM10sbWk9Wzc5LDIwLDEwOCwxMDNdLHBlPVs3OSwyMSwyMywxMDNdLG9yPVs3OSwyMCwxMDgsMTAzXSxxcj1bNzksMjEsMjMsMTAzXSxzaT1bMiwzXSxEaT1WZShbNzldLGUudHlwZUtleXdvcmRzLCEwKSx3aT1HZSxYaT1FKFs3OSwzLDg0LDkzLDEwMF0pLGV0PUUoWzIxLDMsOTAsMTExLDk2LDkxXSksR2k9W0IoXCJJZ25vcmVCZWZvcmVDb21tZW50XCIsYmUsc2ksQy5hbnlDb250ZXh0LDEpLEIoXCJJZ25vcmVBZnRlckxpbmVDb21tZW50XCIsMixiZSxDLmFueUNvbnRleHQsMSksQihcIk5vdFNwYWNlQmVmb3JlQ29sb25cIixiZSw1OCxbZyxzZSxKXSwxNiksQihcIlNwYWNlQWZ0ZXJDb2xvblwiLDU4LGJlLFtnLHNlXSw0KSxCKFwiTm9TcGFjZUJlZm9yZVF1ZXN0aW9uTWFya1wiLGJlLDU3LFtnLHNlLEpdLDE2KSxCKFwiU3BhY2VBZnRlclF1ZXN0aW9uTWFya0luQ29uZGl0aW9uYWxPcGVyYXRvclwiLDU3LGJlLFtnLFJdLDQpLEIoXCJOb1NwYWNlQWZ0ZXJRdWVzdGlvbk1hcmtcIiw1NyxiZSxbZ10sMTYpLEIoXCJOb1NwYWNlQmVmb3JlRG90XCIsYmUsWzI0LDI4XSxbZ10sMTYpLEIoXCJOb1NwYWNlQWZ0ZXJEb3RcIixbMjQsMjhdLGJlLFtnXSwxNiksQihcIk5vU3BhY2VCZXR3ZWVuSW1wb3J0UGFyZW5JbkltcG9ydFR5cGVcIiwxMDAsMjAsW2csZmVdLDE2KSxCKFwiTm9TcGFjZUFmdGVyVW5hcnlQcmVmaXhPcGVyYXRvclwiLFVyLGlpLFtnLHNlXSwxNiksQihcIk5vU3BhY2VBZnRlclVuYXJ5UHJlaW5jcmVtZW50T3BlcmF0b3JcIiw0NSxtaSxbZ10sMTYpLEIoXCJOb1NwYWNlQWZ0ZXJVbmFyeVByZWRlY3JlbWVudE9wZXJhdG9yXCIsNDYsb3IsW2ddLDE2KSxCKFwiTm9TcGFjZUJlZm9yZVVuYXJ5UG9zdGluY3JlbWVudE9wZXJhdG9yXCIscGUsNDUsW2csQ3JdLDE2KSxCKFwiTm9TcGFjZUJlZm9yZVVuYXJ5UG9zdGRlY3JlbWVudE9wZXJhdG9yXCIscXIsNDYsW2csQ3JdLDE2KSxCKFwiU3BhY2VBZnRlclBvc3RpbmNyZW1lbnRXaGVuRm9sbG93ZWRCeUFkZFwiLDQ1LDM5LFtnLGJdLDQpLEIoXCJTcGFjZUFmdGVyQWRkV2hlbkZvbGxvd2VkQnlVbmFyeVBsdXNcIiwzOSwzOSxbZyxiXSw0KSxCKFwiU3BhY2VBZnRlckFkZFdoZW5Gb2xsb3dlZEJ5UHJlaW5jcmVtZW50XCIsMzksNDUsW2csYl0sNCksQihcIlNwYWNlQWZ0ZXJQb3N0ZGVjcmVtZW50V2hlbkZvbGxvd2VkQnlTdWJ0cmFjdFwiLDQ2LDQwLFtnLGJdLDQpLEIoXCJTcGFjZUFmdGVyU3VidHJhY3RXaGVuRm9sbG93ZWRCeVVuYXJ5TWludXNcIiw0MCw0MCxbZyxiXSw0KSxCKFwiU3BhY2VBZnRlclN1YnRyYWN0V2hlbkZvbGxvd2VkQnlQcmVkZWNyZW1lbnRcIiw0MCw0NixbZyxiXSw0KSxCKFwiTm9TcGFjZUFmdGVyQ2xvc2VCcmFjZVwiLDE5LFsyNywyNl0sW2ddLDE2KSxCKFwiTmV3TGluZUJlZm9yZUNsb3NlQnJhY2VJbkJsb2NrQ29udGV4dFwiLEdlLDE5LFtlZV0sOCksQihcIlNwYWNlQWZ0ZXJDbG9zZUJyYWNlXCIsMTksbHIoMjEpLFtnLFBdLDQpLEIoXCJTcGFjZUJldHdlZW5DbG9zZUJyYWNlQW5kRWxzZVwiLDE5LDkxLFtnXSw0KSxCKFwiU3BhY2VCZXR3ZWVuQ2xvc2VCcmFjZUFuZFdoaWxlXCIsMTksMTE1LFtnXSw0KSxCKFwiTm9TcGFjZUJldHdlZW5FbXB0eUJyYWNlQnJhY2tldHNcIiwxOCwxOSxbZyxZXSwxNiksQihcIlNwYWNlQWZ0ZXJDb25kaXRpb25hbENsb3NpbmdQYXJlblwiLDIxLDIyLFtrXSw0KSxCKFwiTm9TcGFjZUJldHdlZW5GdW5jdGlvbktleXdvcmRBbmRTdGFyXCIsOTgsNDEsW3ldLDE2KSxCKFwiU3BhY2VBZnRlclN0YXJJbkdlbmVyYXRvckRlY2xhcmF0aW9uXCIsNDEsNzksW3ldLDQpLEIoXCJTcGFjZUFmdGVyRnVuY3Rpb25JbkZ1bmNEZWNsXCIsOTgsYmUsWyRdLDQpLEIoXCJOZXdMaW5lQWZ0ZXJPcGVuQnJhY2VJbkJsb2NrQ29udGV4dFwiLDE4LGJlLFtlZV0sOCksQihcIlNwYWNlQWZ0ZXJHZXRTZXRJbk1lbWJlclwiLFsxMzYsMTQ5XSw3OSxbJF0sNCksQihcIk5vU3BhY2VCZXR3ZWVuWWllbGRLZXl3b3JkQW5kU3RhclwiLDEyNSw0MSxbZyxlcl0sMTYpLEIoXCJTcGFjZUJldHdlZW5ZaWVsZE9yWWllbGRTdGFyQW5kT3BlcmFuZFwiLFsxMjUsNDFdLGJlLFtnLGVyXSw0KSxCKFwiTm9TcGFjZUJldHdlZW5SZXR1cm5BbmRTZW1pY29sb25cIiwxMDUsMjYsW2ddLDE2KSxCKFwiU3BhY2VBZnRlckNlcnRhaW5LZXl3b3Jkc1wiLFsxMTMsMTA5LDEwMyw4OSwxMDUsMTEyLDEzMl0sYmUsW2ddLDQpLEIoXCJTcGFjZUFmdGVyTGV0Q29uc3RJblZhcmlhYmxlRGVjbGFyYXRpb25cIixbMTE5LDg1XSxiZSxbZyxFZV0sNCksQihcIk5vU3BhY2VCZWZvcmVPcGVuUGFyZW5JbkZ1bmNDYWxsXCIsYmUsMjAsW2csSCxJXSwxNiksQihcIlNwYWNlQmVmb3JlQmluYXJ5S2V5d29yZE9wZXJhdG9yXCIsYmUsd3IsW2csYl0sNCksQihcIlNwYWNlQWZ0ZXJCaW5hcnlLZXl3b3JkT3BlcmF0b3JcIix3cixiZSxbZyxiXSw0KSxCKFwiU3BhY2VBZnRlclZvaWRPcGVyYXRvclwiLDExNCxiZSxbZyxBZV0sNCksQihcIlNwYWNlQmV0d2VlbkFzeW5jQW5kT3BlblBhcmVuXCIsMTMxLDIwLFtELGddLDQpLEIoXCJTcGFjZUJldHdlZW5Bc3luY0FuZEZ1bmN0aW9uS2V5d29yZFwiLDEzMSxbOTgsNzldLFtnXSw0KSxCKFwiTm9TcGFjZUJldHdlZW5UYWdBbmRUZW1wbGF0ZVN0cmluZ1wiLFs3OSwyMV0sWzE0LDE1XSxbZ10sMTYpLEIoXCJTcGFjZUJlZm9yZUpzeEF0dHJpYnV0ZVwiLGJlLDc5LFtGZSxnXSw0KSxCKFwiU3BhY2VCZWZvcmVTbGFzaEluSnN4T3BlbmluZ0VsZW1lbnRcIixiZSw0MyxbQmUsZ10sNCksQihcIk5vU3BhY2VCZWZvcmVHcmVhdGVyVGhhblRva2VuSW5Kc3hPcGVuaW5nRWxlbWVudFwiLDQzLDMxLFtCZSxnXSwxNiksQihcIk5vU3BhY2VCZWZvcmVFcXVhbEluSnN4QXR0cmlidXRlXCIsYmUsNjMsW1osZ10sMTYpLEIoXCJOb1NwYWNlQWZ0ZXJFcXVhbEluSnN4QXR0cmlidXRlXCIsNjMsYmUsW1osZ10sMTYpLEIoXCJOb1NwYWNlQWZ0ZXJNb2R1bGVJbXBvcnRcIixbMTQxLDE0Nl0sMjAsW2ddLDE2KSxCKFwiU3BhY2VBZnRlckNlcnRhaW5UeXBlU2NyaXB0S2V5d29yZHNcIixbMTI2LDg0LDEzNSw4OCw5Miw5Myw5NCwxMzYsMTE3LDEwMCwxMTgsMTQxLDE0MiwxMjEsMTIzLDEyMiwxNDUsMTQ5LDEyNCwxNTIsMTU2LDE0MCwxMzddLGJlLFtnXSw0KSxCKFwiU3BhY2VCZWZvcmVDZXJ0YWluVHlwZVNjcmlwdEtleXdvcmRzXCIsYmUsWzk0LDExNywxNTZdLFtnXSw0KSxCKFwiU3BhY2VBZnRlck1vZHVsZU5hbWVcIiwxMCwxOCxbcnJdLDQpLEIoXCJTcGFjZUJlZm9yZUFycm93XCIsYmUsMzgsW2ddLDQpLEIoXCJTcGFjZUFmdGVyQXJyb3dcIiwzOCxiZSxbZ10sNCksQihcIk5vU3BhY2VBZnRlckVsbGlwc2lzXCIsMjUsNzksW2ddLDE2KSxCKFwiTm9TcGFjZUFmdGVyT3B0aW9uYWxQYXJhbWV0ZXJzXCIsNTcsWzIxLDI3XSxbZyxzZV0sMTYpLEIoXCJOb1NwYWNlQmV0d2VlbkVtcHR5SW50ZXJmYWNlQnJhY2VCcmFja2V0c1wiLDE4LDE5LFtnLEllXSwxNiksQihcIk5vU3BhY2VCZWZvcmVPcGVuQW5ndWxhckJyYWNrZXRcIixEaSwyOSxbZyxkZV0sMTYpLEIoXCJOb1NwYWNlQmV0d2VlbkNsb3NlUGFyZW5BbmRBbmd1bGFyQnJhY2tldFwiLDIxLDI5LFtnLGRlXSwxNiksQihcIk5vU3BhY2VBZnRlck9wZW5Bbmd1bGFyQnJhY2tldFwiLDI5LGJlLFtnLGRlXSwxNiksQihcIk5vU3BhY2VCZWZvcmVDbG9zZUFuZ3VsYXJCcmFja2V0XCIsYmUsMzEsW2csZGVdLDE2KSxCKFwiTm9TcGFjZUFmdGVyQ2xvc2VBbmd1bGFyQnJhY2tldFwiLDMxLFsyMCwyMiwzMSwyN10sW2csZGUsQV0sMTYpLEIoXCJTcGFjZUJlZm9yZUF0XCIsWzIxLDc5XSw1OSxbZ10sNCksQihcIk5vU3BhY2VBZnRlckF0XCIsNTksYmUsW2ddLDE2KSxCKFwiU3BhY2VBZnRlckRlY29yYXRvclwiLGJlLFsxMjYsNzksOTMsODgsODQsMTI0LDEyMywxMjEsMTIyLDEzNiwxNDksMjIsNDFdLFtSZV0sNCksQihcIk5vU3BhY2VCZWZvcmVOb25OdWxsQXNzZXJ0aW9uT3BlcmF0b3JcIixiZSw1MyxbZyxpcl0sMTYpLEIoXCJOb1NwYWNlQWZ0ZXJOZXdLZXl3b3JkT25Db25zdHJ1Y3RvclNpZ25hdHVyZVwiLDEwMywyMCxbZyxfZV0sMTYpLEIoXCJTcGFjZUxlc3NUaGFuQW5kTm9uSlNYVHlwZUFubm90YXRpb25cIiwyOSwyOSxbZ10sNCldLFd0PVtCKFwiU3BhY2VBZnRlckNvbnN0cnVjdG9yXCIsMTM0LDIwLFtwKFwiaW5zZXJ0U3BhY2VBZnRlckNvbnN0cnVjdG9yXCIpLGddLDQpLEIoXCJOb1NwYWNlQWZ0ZXJDb25zdHJ1Y3RvclwiLDEzNCwyMCxbRyhcImluc2VydFNwYWNlQWZ0ZXJDb25zdHJ1Y3RvclwiKSxnXSwxNiksQihcIlNwYWNlQWZ0ZXJDb21tYVwiLDI3LGJlLFtwKFwiaW5zZXJ0U3BhY2VBZnRlckNvbW1hRGVsaW1pdGVyXCIpLGcsdWUsbCxkXSw0KSxCKFwiTm9TcGFjZUFmdGVyQ29tbWFcIiwyNyxiZSxbRyhcImluc2VydFNwYWNlQWZ0ZXJDb21tYURlbGltaXRlclwiKSxnLHVlXSwxNiksQihcIlNwYWNlQWZ0ZXJBbm9ueW1vdXNGdW5jdGlvbktleXdvcmRcIixbOTgsNDFdLDIwLFtwKFwiaW5zZXJ0U3BhY2VBZnRlckZ1bmN0aW9uS2V5d29yZEZvckFub255bW91c0Z1bmN0aW9uc1wiKSwkXSw0KSxCKFwiTm9TcGFjZUFmdGVyQW5vbnltb3VzRnVuY3Rpb25LZXl3b3JkXCIsWzk4LDQxXSwyMCxbRyhcImluc2VydFNwYWNlQWZ0ZXJGdW5jdGlvbktleXdvcmRGb3JBbm9ueW1vdXNGdW5jdGlvbnNcIiksJF0sMTYpLEIoXCJTcGFjZUFmdGVyS2V5d29yZEluQ29udHJvbFwiLHlyLDIwLFtwKFwiaW5zZXJ0U3BhY2VBZnRlcktleXdvcmRzSW5Db250cm9sRmxvd1N0YXRlbWVudHNcIiksa10sNCksQihcIk5vU3BhY2VBZnRlcktleXdvcmRJbkNvbnRyb2xcIix5ciwyMCxbRyhcImluc2VydFNwYWNlQWZ0ZXJLZXl3b3Jkc0luQ29udHJvbEZsb3dTdGF0ZW1lbnRzXCIpLGtdLDE2KSxCKFwiU3BhY2VBZnRlck9wZW5QYXJlblwiLDIwLGJlLFtwKFwiaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nTm9uZW1wdHlQYXJlbnRoZXNpc1wiKSxnXSw0KSxCKFwiU3BhY2VCZWZvcmVDbG9zZVBhcmVuXCIsYmUsMjEsW3AoXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eVBhcmVudGhlc2lzXCIpLGddLDQpLEIoXCJTcGFjZUJldHdlZW5PcGVuUGFyZW5zXCIsMjAsMjAsW3AoXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eVBhcmVudGhlc2lzXCIpLGddLDQpLEIoXCJOb1NwYWNlQmV0d2VlblBhcmVuc1wiLDIwLDIxLFtnXSwxNiksQihcIk5vU3BhY2VBZnRlck9wZW5QYXJlblwiLDIwLGJlLFtHKFwiaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nTm9uZW1wdHlQYXJlbnRoZXNpc1wiKSxnXSwxNiksQihcIk5vU3BhY2VCZWZvcmVDbG9zZVBhcmVuXCIsYmUsMjEsW0coXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eVBhcmVudGhlc2lzXCIpLGddLDE2KSxCKFwiU3BhY2VBZnRlck9wZW5CcmFja2V0XCIsMjIsYmUsW3AoXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eUJyYWNrZXRzXCIpLGddLDQpLEIoXCJTcGFjZUJlZm9yZUNsb3NlQnJhY2tldFwiLGJlLDIzLFtwKFwiaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nTm9uZW1wdHlCcmFja2V0c1wiKSxnXSw0KSxCKFwiTm9TcGFjZUJldHdlZW5CcmFja2V0c1wiLDIyLDIzLFtnXSwxNiksQihcIk5vU3BhY2VBZnRlck9wZW5CcmFja2V0XCIsMjIsYmUsW0coXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eUJyYWNrZXRzXCIpLGddLDE2KSxCKFwiTm9TcGFjZUJlZm9yZUNsb3NlQnJhY2tldFwiLGJlLDIzLFtHKFwiaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nTm9uZW1wdHlCcmFja2V0c1wiKSxnXSwxNiksQihcIlNwYWNlQWZ0ZXJPcGVuQnJhY2VcIiwxOCxiZSxbZihcImluc2VydFNwYWNlQWZ0ZXJPcGVuaW5nQW5kQmVmb3JlQ2xvc2luZ05vbmVtcHR5QnJhY2VzXCIpLE9dLDQpLEIoXCJTcGFjZUJlZm9yZUNsb3NlQnJhY2VcIixiZSwxOSxbZihcImluc2VydFNwYWNlQWZ0ZXJPcGVuaW5nQW5kQmVmb3JlQ2xvc2luZ05vbmVtcHR5QnJhY2VzXCIpLE9dLDQpLEIoXCJOb1NwYWNlQmV0d2VlbkVtcHR5QnJhY2VCcmFja2V0c1wiLDE4LDE5LFtnLFldLDE2KSxCKFwiTm9TcGFjZUFmdGVyT3BlbkJyYWNlXCIsMTgsYmUsW20oXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eUJyYWNlc1wiKSxnXSwxNiksQihcIk5vU3BhY2VCZWZvcmVDbG9zZUJyYWNlXCIsYmUsMTksW20oXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdOb25lbXB0eUJyYWNlc1wiKSxnXSwxNiksQihcIlNwYWNlQmV0d2VlbkVtcHR5QnJhY2VCcmFja2V0c1wiLDE4LDE5LFtwKFwiaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nRW1wdHlCcmFjZXNcIildLDQpLEIoXCJOb1NwYWNlQmV0d2VlbkVtcHR5QnJhY2VCcmFja2V0c1wiLDE4LDE5LFttKFwiaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nRW1wdHlCcmFjZXNcIiksZ10sMTYpLEIoXCJTcGFjZUFmdGVyVGVtcGxhdGVIZWFkQW5kTWlkZGxlXCIsWzE1LDE2XSxiZSxbcChcImluc2VydFNwYWNlQWZ0ZXJPcGVuaW5nQW5kQmVmb3JlQ2xvc2luZ1RlbXBsYXRlU3RyaW5nQnJhY2VzXCIpLG5lXSw0LDEpLEIoXCJTcGFjZUJlZm9yZVRlbXBsYXRlTWlkZGxlQW5kVGFpbFwiLGJlLFsxNiwxN10sW3AoXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdUZW1wbGF0ZVN0cmluZ0JyYWNlc1wiKSxnXSw0KSxCKFwiTm9TcGFjZUFmdGVyVGVtcGxhdGVIZWFkQW5kTWlkZGxlXCIsWzE1LDE2XSxiZSxbRyhcImluc2VydFNwYWNlQWZ0ZXJPcGVuaW5nQW5kQmVmb3JlQ2xvc2luZ1RlbXBsYXRlU3RyaW5nQnJhY2VzXCIpLG5lXSwxNiwxKSxCKFwiTm9TcGFjZUJlZm9yZVRlbXBsYXRlTWlkZGxlQW5kVGFpbFwiLGJlLFsxNiwxN10sW0coXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdUZW1wbGF0ZVN0cmluZ0JyYWNlc1wiKSxnXSwxNiksQihcIlNwYWNlQWZ0ZXJPcGVuQnJhY2VJbkpzeEV4cHJlc3Npb25cIiwxOCxiZSxbcChcImluc2VydFNwYWNlQWZ0ZXJPcGVuaW5nQW5kQmVmb3JlQ2xvc2luZ0pzeEV4cHJlc3Npb25CcmFjZXNcIiksZyxXZV0sNCksQihcIlNwYWNlQmVmb3JlQ2xvc2VCcmFjZUluSnN4RXhwcmVzc2lvblwiLGJlLDE5LFtwKFwiaW5zZXJ0U3BhY2VBZnRlck9wZW5pbmdBbmRCZWZvcmVDbG9zaW5nSnN4RXhwcmVzc2lvbkJyYWNlc1wiKSxnLFdlXSw0KSxCKFwiTm9TcGFjZUFmdGVyT3BlbkJyYWNlSW5Kc3hFeHByZXNzaW9uXCIsMTgsYmUsW0coXCJpbnNlcnRTcGFjZUFmdGVyT3BlbmluZ0FuZEJlZm9yZUNsb3NpbmdKc3hFeHByZXNzaW9uQnJhY2VzXCIpLGcsV2VdLDE2KSxCKFwiTm9TcGFjZUJlZm9yZUNsb3NlQnJhY2VJbkpzeEV4cHJlc3Npb25cIixiZSwxOSxbRyhcImluc2VydFNwYWNlQWZ0ZXJPcGVuaW5nQW5kQmVmb3JlQ2xvc2luZ0pzeEV4cHJlc3Npb25CcmFjZXNcIiksZyxXZV0sMTYpLEIoXCJTcGFjZUFmdGVyU2VtaWNvbG9uSW5Gb3JcIiwyNixiZSxbcChcImluc2VydFNwYWNlQWZ0ZXJTZW1pY29sb25JbkZvclN0YXRlbWVudHNcIiksZyxUXSw0KSxCKFwiTm9TcGFjZUFmdGVyU2VtaWNvbG9uSW5Gb3JcIiwyNixiZSxbRyhcImluc2VydFNwYWNlQWZ0ZXJTZW1pY29sb25JbkZvclN0YXRlbWVudHNcIiksZyxUXSwxNiksQihcIlNwYWNlQmVmb3JlQmluYXJ5T3BlcmF0b3JcIixiZSxJcixbcChcImluc2VydFNwYWNlQmVmb3JlQW5kQWZ0ZXJCaW5hcnlPcGVyYXRvcnNcIiksZyxiXSw0KSxCKFwiU3BhY2VBZnRlckJpbmFyeU9wZXJhdG9yXCIsSXIsYmUsW3AoXCJpbnNlcnRTcGFjZUJlZm9yZUFuZEFmdGVyQmluYXJ5T3BlcmF0b3JzXCIpLGcsYl0sNCksQihcIk5vU3BhY2VCZWZvcmVCaW5hcnlPcGVyYXRvclwiLGJlLElyLFtHKFwiaW5zZXJ0U3BhY2VCZWZvcmVBbmRBZnRlckJpbmFyeU9wZXJhdG9yc1wiKSxnLGJdLDE2KSxCKFwiTm9TcGFjZUFmdGVyQmluYXJ5T3BlcmF0b3JcIixJcixiZSxbRyhcImluc2VydFNwYWNlQmVmb3JlQW5kQWZ0ZXJCaW5hcnlPcGVyYXRvcnNcIiksZyxiXSwxNiksQihcIlNwYWNlQmVmb3JlT3BlblBhcmVuSW5GdW5jRGVjbFwiLGJlLDIwLFtwKFwiaW5zZXJ0U3BhY2VCZWZvcmVGdW5jdGlvblBhcmVudGhlc2lzXCIpLGcsJF0sNCksQihcIk5vU3BhY2VCZWZvcmVPcGVuUGFyZW5JbkZ1bmNEZWNsXCIsYmUsMjAsW0coXCJpbnNlcnRTcGFjZUJlZm9yZUZ1bmN0aW9uUGFyZW50aGVzaXNcIiksZywkXSwxNiksQihcIk5ld0xpbmVCZWZvcmVPcGVuQnJhY2VJbkNvbnRyb2xcIixldCwxOCxbcChcInBsYWNlT3BlbkJyYWNlT25OZXdMaW5lRm9yQ29udHJvbEJsb2Nrc1wiKSxrLHZlXSw4LDEpLEIoXCJOZXdMaW5lQmVmb3JlT3BlbkJyYWNlSW5GdW5jdGlvblwiLHdpLDE4LFtwKFwicGxhY2VPcGVuQnJhY2VPbk5ld0xpbmVGb3JGdW5jdGlvbnNcIiksJCx2ZV0sOCwxKSxCKFwiTmV3TGluZUJlZm9yZU9wZW5CcmFjZUluVHlwZVNjcmlwdERlY2xXaXRoQmxvY2tcIixYaSwxOCxbcChcInBsYWNlT3BlbkJyYWNlT25OZXdMaW5lRm9yRnVuY3Rpb25zXCIpLFYsdmVdLDgsMSksQihcIlNwYWNlQWZ0ZXJUeXBlQXNzZXJ0aW9uXCIsMzEsYmUsW3AoXCJpbnNlcnRTcGFjZUFmdGVyVHlwZUFzc2VydGlvblwiKSxnLHllXSw0KSxCKFwiTm9TcGFjZUFmdGVyVHlwZUFzc2VydGlvblwiLDMxLGJlLFtHKFwiaW5zZXJ0U3BhY2VBZnRlclR5cGVBc3NlcnRpb25cIiksZyx5ZV0sMTYpLEIoXCJTcGFjZUJlZm9yZVR5cGVBbm5vdGF0aW9uXCIsYmUsWzU3LDU4XSxbcChcImluc2VydFNwYWNlQmVmb3JlVHlwZUFubm90YXRpb25cIiksZyxpZV0sNCksQihcIk5vU3BhY2VCZWZvcmVUeXBlQW5ub3RhdGlvblwiLGJlLFs1Nyw1OF0sW0coXCJpbnNlcnRTcGFjZUJlZm9yZVR5cGVBbm5vdGF0aW9uXCIpLGcsaWVdLDE2KSxCKFwiTm9PcHRpb25hbFNlbWljb2xvblwiLDI2LHVyLFtOKFwic2VtaWNvbG9uc1wiLGUuU2VtaWNvbG9uUHJlZmVyZW5jZS5SZW1vdmUpLEJyXSwzMiksQihcIk9wdGlvbmFsU2VtaWNvbG9uXCIsYmUsdXIsW04oXCJzZW1pY29sb25zXCIsZS5TZW1pY29sb25QcmVmZXJlbmNlLkluc2VydCksRXJdLDY0KV0sWnQ9W0IoXCJOb1NwYWNlQmVmb3JlU2VtaWNvbG9uXCIsYmUsMjYsW2ddLDE2KSxCKFwiU3BhY2VCZWZvcmVPcGVuQnJhY2VJbkNvbnRyb2xcIixldCwxOCxbb2UoXCJwbGFjZU9wZW5CcmFjZU9uTmV3TGluZUZvckNvbnRyb2xCbG9ja3NcIiksayxIZSxxXSw0LDEpLEIoXCJTcGFjZUJlZm9yZU9wZW5CcmFjZUluRnVuY3Rpb25cIix3aSwxOCxbb2UoXCJwbGFjZU9wZW5CcmFjZU9uTmV3TGluZUZvckZ1bmN0aW9uc1wiKSwkLHgsSGUscV0sNCwxKSxCKFwiU3BhY2VCZWZvcmVPcGVuQnJhY2VJblR5cGVTY3JpcHREZWNsV2l0aEJsb2NrXCIsWGksMTgsW29lKFwicGxhY2VPcGVuQnJhY2VPbk5ld0xpbmVGb3JGdW5jdGlvbnNcIiksVixIZSxxXSw0LDEpLEIoXCJOb1NwYWNlQmVmb3JlQ29tbWFcIixiZSwyNyxbZ10sMTYpLEIoXCJOb1NwYWNlQmVmb3JlT3BlbkJyYWNrZXRcIixscigxMzEsODIpLDIyLFtnXSwxNiksQihcIk5vU3BhY2VBZnRlckNsb3NlQnJhY2tldFwiLDIzLGJlLFtnLGdlXSwxNiksQihcIlNwYWNlQWZ0ZXJTZW1pY29sb25cIiwyNixiZSxbZ10sNCksQihcIlNwYWNlQmV0d2VlbkZvckFuZEF3YWl0S2V5d29yZFwiLDk3LDEzMixbZ10sNCksQihcIlNwYWNlQmV0d2VlblN0YXRlbWVudHNcIixbMjEsOTAsOTEsODJdLGJlLFtnLHVlLEtdLDQpLEIoXCJTcGFjZUFmdGVyVHJ5Q2F0Y2hGaW5hbGx5XCIsWzExMSw4Myw5Nl0sMTgsW2ddLDQpXTtyZXR1cm4gVmUoVmUoVmUoW10sR2ksITApLFd0LCEwKSxadCwhMCl9Qy5nZXRBbGxSdWxlcz13O2Z1bmN0aW9uIEIoTmUsbixscixiZSxHZSx1cil7cmV0dXJuIHVyPT09dm9pZCAwJiYodXI9MCkse2xlZnRUb2tlblJhbmdlOlEobikscmlnaHRUb2tlblJhbmdlOlEobHIpLHJ1bGU6e2RlYnVnTmFtZTpOZSxjb250ZXh0OmJlLGFjdGlvbjpHZSxmbGFnczp1cn19fWZ1bmN0aW9uIEUoTmUpe3JldHVybnt0b2tlbnM6TmUsaXNTcGVjaWZpYzohMH19ZnVuY3Rpb24gUShOZSl7cmV0dXJuIHR5cGVvZiBOZT09XCJudW1iZXJcIj9FKFtOZV0pOmUuaXNBcnJheShOZSk/RShOZSk6TmV9ZnVuY3Rpb24gbGUoTmUsbixscil7bHI9PT12b2lkIDAmJihscj1bXSk7Zm9yKHZhciBiZT1bXSxHZT1OZTtHZTw9bjtHZSsrKWUuY29udGFpbnMobHIsR2UpfHxiZS5wdXNoKEdlKTtyZXR1cm4gRShiZSl9ZnVuY3Rpb24gTihOZSxuKXtyZXR1cm4gZnVuY3Rpb24obHIpe3JldHVybiBsci5vcHRpb25zJiZsci5vcHRpb25zW05lXT09PW59fWZ1bmN0aW9uIHAoTmUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbi5vcHRpb25zJiZuLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoTmUpJiYhIW4ub3B0aW9uc1tOZV19fWZ1bmN0aW9uIG0oTmUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbi5vcHRpb25zJiZuLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoTmUpJiYhbi5vcHRpb25zW05lXX19ZnVuY3Rpb24gRyhOZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiFuLm9wdGlvbnN8fCFuLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoTmUpfHwhbi5vcHRpb25zW05lXX19ZnVuY3Rpb24gb2UoTmUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4hbi5vcHRpb25zfHwhbi5vcHRpb25zLmhhc093blByb3BlcnR5KE5lKXx8IW4ub3B0aW9uc1tOZV18fG4uVG9rZW5zQXJlT25TYW1lTGluZSgpfX1mdW5jdGlvbiBmKE5lKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIW4ub3B0aW9uc3x8IW4ub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShOZSl8fCEhbi5vcHRpb25zW05lXX19ZnVuY3Rpb24gVChOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQ9PT0yNDJ9ZnVuY3Rpb24gSyhOZSl7cmV0dXJuIVQoTmUpfWZ1bmN0aW9uIGIoTmUpe3N3aXRjaChOZS5jb250ZXh0Tm9kZS5raW5kKXtjYXNlIDIyMTpyZXR1cm4gTmUuY29udGV4dE5vZGUub3BlcmF0b3JUb2tlbi5raW5kIT09Mjc7Y2FzZSAyMjI6Y2FzZSAxODk6Y2FzZSAyMjk6Y2FzZSAyNzU6Y2FzZSAyNzA6Y2FzZSAxNzc6Y2FzZSAxODc6Y2FzZSAxODg6cmV0dXJuITA7Y2FzZSAyMDM6Y2FzZSAyNTk6Y2FzZSAyNjU6Y2FzZSAyNzE6Y2FzZSAyNTQ6Y2FzZSAxNjQ6Y2FzZSAyOTk6Y2FzZSAxNjc6Y2FzZSAxNjY6cmV0dXJuIE5lLmN1cnJlbnRUb2tlblNwYW4ua2luZD09PTYzfHxOZS5uZXh0VG9rZW5TcGFuLmtpbmQ9PT02MztjYXNlIDI0MzpjYXNlIDE2MzpyZXR1cm4gTmUuY3VycmVudFRva2VuU3Bhbi5raW5kPT09MTAxfHxOZS5uZXh0VG9rZW5TcGFuLmtpbmQ9PT0xMDF8fE5lLmN1cnJlbnRUb2tlblNwYW4ua2luZD09PTYzfHxOZS5uZXh0VG9rZW5TcGFuLmtpbmQ9PT02MztjYXNlIDI0NDpyZXR1cm4gTmUuY3VycmVudFRva2VuU3Bhbi5raW5kPT09MTYwfHxOZS5uZXh0VG9rZW5TcGFuLmtpbmQ9PT0xNjB9cmV0dXJuITF9ZnVuY3Rpb24gc2UoTmUpe3JldHVybiFiKE5lKX1mdW5jdGlvbiBKKE5lKXtyZXR1cm4haWUoTmUpfWZ1bmN0aW9uIGllKE5lKXt2YXIgbj1OZS5jb250ZXh0Tm9kZS5raW5kO3JldHVybiBuPT09MTY3fHxuPT09MTY2fHxuPT09MTY0fHxuPT09MjU0fHxlLmlzRnVuY3Rpb25MaWtlS2luZChuKX1mdW5jdGlvbiBSKE5lKXtyZXR1cm4gTmUuY29udGV4dE5vZGUua2luZD09PTIyMnx8TmUuY29udGV4dE5vZGUua2luZD09PTE4OX1mdW5jdGlvbiBxKE5lKXtyZXR1cm4gTmUuVG9rZW5zQXJlT25TYW1lTGluZSgpfHx4KE5lKX1mdW5jdGlvbiBPKE5lKXtyZXR1cm4gTmUuY29udGV4dE5vZGUua2luZD09PTIwMXx8TmUuY29udGV4dE5vZGUua2luZD09PTE5NXx8aGUoTmUpfWZ1bmN0aW9uIHZlKE5lKXtyZXR1cm4geChOZSkmJiEoTmUuTmV4dE5vZGVBbGxPblNhbWVMaW5lKCl8fE5lLk5leHROb2RlQmxvY2tJc09uT25lTGluZSgpKX1mdW5jdGlvbiBlZShOZSl7cmV0dXJuIEYoTmUpJiYhKE5lLkNvbnRleHROb2RlQWxsT25TYW1lTGluZSgpfHxOZS5Db250ZXh0Tm9kZUJsb2NrSXNPbk9uZUxpbmUoKSl9ZnVuY3Rpb24gaGUoTmUpe3JldHVybiBGKE5lKSYmKE5lLkNvbnRleHROb2RlQWxsT25TYW1lTGluZSgpfHxOZS5Db250ZXh0Tm9kZUJsb2NrSXNPbk9uZUxpbmUoKSl9ZnVuY3Rpb24gRihOZSl7cmV0dXJuIFgoTmUuY29udGV4dE5vZGUpfWZ1bmN0aW9uIHgoTmUpe3JldHVybiBYKE5lLm5leHRUb2tlblBhcmVudCl9ZnVuY3Rpb24gWChOZSl7aWYoTChOZSkpcmV0dXJuITA7c3dpdGNoKE5lLmtpbmQpe2Nhc2UgMjM1OmNhc2UgMjYzOmNhc2UgMjA1OmNhc2UgMjYyOnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uICQoTmUpe3N3aXRjaChOZS5jb250ZXh0Tm9kZS5raW5kKXtjYXNlIDI1NjpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDE3NDpjYXNlIDIxMzpjYXNlIDE3MTpjYXNlIDIxNDpjYXNlIDI1ODpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBBKE5lKXtyZXR1cm4hJChOZSl9ZnVuY3Rpb24geShOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQ9PT0yNTZ8fE5lLmNvbnRleHROb2RlLmtpbmQ9PT0yMTN9ZnVuY3Rpb24gVihOZSl7cmV0dXJuIEwoTmUuY29udGV4dE5vZGUpfWZ1bmN0aW9uIEwoTmUpe3N3aXRjaChOZS5raW5kKXtjYXNlIDI1NzpjYXNlIDIyNjpjYXNlIDI1ODpjYXNlIDI2MDpjYXNlIDE4MjpjYXNlIDI2MTpjYXNlIDI3MjpjYXNlIDI3MzpjYXNlIDI2NjpjYXNlIDI2OTpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBQKE5lKXtzd2l0Y2goTmUuY3VycmVudFRva2VuUGFyZW50LmtpbmQpe2Nhc2UgMjU3OmNhc2UgMjYxOmNhc2UgMjYwOmNhc2UgMjkyOmNhc2UgMjYyOmNhc2UgMjQ5OnJldHVybiEwO2Nhc2UgMjM1Ont2YXIgbj1OZS5jdXJyZW50VG9rZW5QYXJlbnQucGFyZW50O2lmKCFufHxuLmtpbmQhPT0yMTQmJm4ua2luZCE9PTIxMylyZXR1cm4hMH19cmV0dXJuITF9ZnVuY3Rpb24gayhOZSl7c3dpdGNoKE5lLmNvbnRleHROb2RlLmtpbmQpe2Nhc2UgMjM5OmNhc2UgMjQ5OmNhc2UgMjQyOmNhc2UgMjQzOmNhc2UgMjQ0OmNhc2UgMjQxOmNhc2UgMjUyOmNhc2UgMjQwOmNhc2UgMjQ4OmNhc2UgMjkyOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIFkoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09MjA1fWZ1bmN0aW9uIFUoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09MjA4fWZ1bmN0aW9uIGooTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09MjA5fWZ1bmN0aW9uIEgoTmUpe3JldHVybiBVKE5lKXx8aihOZSl9ZnVuY3Rpb24gSShOZSl7cmV0dXJuIE5lLmN1cnJlbnRUb2tlblNwYW4ua2luZCE9PTI3fWZ1bmN0aW9uIGwoTmUpe3JldHVybiBOZS5uZXh0VG9rZW5TcGFuLmtpbmQhPT0yM31mdW5jdGlvbiBkKE5lKXtyZXR1cm4gTmUubmV4dFRva2VuU3Bhbi5raW5kIT09MjF9ZnVuY3Rpb24gRChOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQ9PT0yMTR9ZnVuY3Rpb24gZmUoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09MjAwfWZ1bmN0aW9uIGcoTmUpe3JldHVybiBOZS5Ub2tlbnNBcmVPblNhbWVMaW5lKCkmJk5lLmNvbnRleHROb2RlLmtpbmQhPT0xMX1mdW5jdGlvbiBuZShOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQhPT0xMX1mdW5jdGlvbiB1ZShOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQhPT0yNzgmJk5lLmNvbnRleHROb2RlLmtpbmQhPT0yODJ9ZnVuY3Rpb24gV2UoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09Mjg4fHxOZS5jb250ZXh0Tm9kZS5raW5kPT09Mjg3fWZ1bmN0aW9uIEZlKE5lKXtyZXR1cm4gTmUubmV4dFRva2VuUGFyZW50LmtpbmQ9PT0yODV9ZnVuY3Rpb24gWihOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQ9PT0yODV9ZnVuY3Rpb24gQmUoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09Mjc5fWZ1bmN0aW9uIGdlKE5lKXtyZXR1cm4hJChOZSkmJiF4KE5lKX1mdW5jdGlvbiBSZShOZSl7cmV0dXJuIE5lLlRva2Vuc0FyZU9uU2FtZUxpbmUoKSYmISFOZS5jb250ZXh0Tm9kZS5kZWNvcmF0b3JzJiZ6ZShOZS5jdXJyZW50VG9rZW5QYXJlbnQpJiYhemUoTmUubmV4dFRva2VuUGFyZW50KX1mdW5jdGlvbiB6ZShOZSl7Zm9yKDtlLmlzRXhwcmVzc2lvbk5vZGUoTmUpOylOZT1OZS5wYXJlbnQ7cmV0dXJuIE5lLmtpbmQ9PT0xNjV9ZnVuY3Rpb24gRWUoTmUpe3JldHVybiBOZS5jdXJyZW50VG9rZW5QYXJlbnQua2luZD09PTI1NSYmTmUuY3VycmVudFRva2VuUGFyZW50LmdldFN0YXJ0KE5lLnNvdXJjZUZpbGUpPT09TmUuY3VycmVudFRva2VuU3Bhbi5wb3N9ZnVuY3Rpb24gSGUoTmUpe3JldHVybiBOZS5mb3JtYXR0aW5nUmVxdWVzdEtpbmQhPT0yfWZ1bmN0aW9uIHJyKE5lKXtyZXR1cm4gTmUuY29udGV4dE5vZGUua2luZD09PTI2MX1mdW5jdGlvbiBJZShOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQ9PT0xODJ9ZnVuY3Rpb24gX2UoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09MTc1fWZ1bmN0aW9uIHdlKE5lLG4pe2lmKE5lLmtpbmQhPT0yOSYmTmUua2luZCE9PTMxKXJldHVybiExO3N3aXRjaChuLmtpbmQpe2Nhc2UgMTc4OmNhc2UgMjExOmNhc2UgMjU5OmNhc2UgMjU3OmNhc2UgMjI2OmNhc2UgMjU4OmNhc2UgMjU2OmNhc2UgMjEzOmNhc2UgMjE0OmNhc2UgMTY5OmNhc2UgMTY4OmNhc2UgMTc0OmNhc2UgMTc1OmNhc2UgMjA4OmNhc2UgMjA5OmNhc2UgMjI4OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGRlKE5lKXtyZXR1cm4gd2UoTmUuY3VycmVudFRva2VuU3BhbixOZS5jdXJyZW50VG9rZW5QYXJlbnQpfHx3ZShOZS5uZXh0VG9rZW5TcGFuLE5lLm5leHRUb2tlblBhcmVudCl9ZnVuY3Rpb24geWUoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09MjExfWZ1bmN0aW9uIEFlKE5lKXtyZXR1cm4gTmUuY3VycmVudFRva2VuU3Bhbi5raW5kPT09MTE0JiZOZS5jdXJyZW50VG9rZW5QYXJlbnQua2luZD09PTIxN31mdW5jdGlvbiBlcihOZSl7cmV0dXJuIE5lLmNvbnRleHROb2RlLmtpbmQ9PT0yMjQmJk5lLmNvbnRleHROb2RlLmV4cHJlc3Npb24hPT12b2lkIDB9ZnVuY3Rpb24gaXIoTmUpe3JldHVybiBOZS5jb250ZXh0Tm9kZS5raW5kPT09MjMwfWZ1bmN0aW9uIENyKE5lKXtyZXR1cm4hWWUoTmUpfWZ1bmN0aW9uIFllKE5lKXtzd2l0Y2goTmUuY29udGV4dE5vZGUua2luZCl7Y2FzZSAyMzk6Y2FzZSAyNDI6Y2FzZSAyNDM6Y2FzZSAyNDQ6Y2FzZSAyNDA6Y2FzZSAyNDE6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gQnIoTmUpe3ZhciBuPU5lLm5leHRUb2tlblNwYW4ua2luZCxscj1OZS5uZXh0VG9rZW5TcGFuLnBvcztpZihlLmlzVHJpdmlhKG4pKXt2YXIgYmU9TmUubmV4dFRva2VuUGFyZW50PT09TmUuY3VycmVudFRva2VuUGFyZW50P2UuZmluZE5leHRUb2tlbihOZS5jdXJyZW50VG9rZW5QYXJlbnQsZS5maW5kQW5jZXN0b3IoTmUuY3VycmVudFRva2VuUGFyZW50LGZ1bmN0aW9uKHlyKXtyZXR1cm4heXIucGFyZW50fSksTmUuc291cmNlRmlsZSk6TmUubmV4dFRva2VuUGFyZW50LmdldEZpcnN0VG9rZW4oTmUuc291cmNlRmlsZSk7aWYoIWJlKXJldHVybiEwO249YmUua2luZCxscj1iZS5nZXRTdGFydChOZS5zb3VyY2VGaWxlKX12YXIgR2U9TmUuc291cmNlRmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihOZS5jdXJyZW50VG9rZW5TcGFuLnBvcykubGluZSx1cj1OZS5zb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGxyKS5saW5lO3JldHVybiBHZT09PXVyP249PT0xOXx8bj09PTE6bj09PTIzNHx8bj09PTI2PyExOk5lLmNvbnRleHROb2RlLmtpbmQ9PT0yNTh8fE5lLmNvbnRleHROb2RlLmtpbmQ9PT0yNTk/IWUuaXNQcm9wZXJ0eVNpZ25hdHVyZShOZS5jdXJyZW50VG9rZW5QYXJlbnQpfHwhIU5lLmN1cnJlbnRUb2tlblBhcmVudC50eXBlfHxuIT09MjA6ZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oTmUuY3VycmVudFRva2VuUGFyZW50KT8hTmUuY3VycmVudFRva2VuUGFyZW50LmluaXRpYWxpemVyOk5lLmN1cnJlbnRUb2tlblBhcmVudC5raW5kIT09MjQyJiZOZS5jdXJyZW50VG9rZW5QYXJlbnQua2luZCE9PTIzNiYmTmUuY3VycmVudFRva2VuUGFyZW50LmtpbmQhPT0yMzQmJm4hPT0yMiYmbiE9PTIwJiZuIT09MzkmJm4hPT00MCYmbiE9PTQzJiZuIT09MTMmJm4hPT0yNyYmbiE9PTIyMyYmbiE9PTE1JiZuIT09MTQmJm4hPT0yNH1mdW5jdGlvbiBFcihOZSl7cmV0dXJuIGUucG9zaXRpb25Jc0FTSUNhbmRpZGF0ZShOZS5jdXJyZW50VG9rZW5TcGFuLmVuZCxOZS5jdXJyZW50VG9rZW5QYXJlbnQsTmUuc291cmNlRmlsZSl9fSkoYT1lLmZvcm1hdHRpbmd8fChlLmZvcm1hdHRpbmc9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtmdW5jdGlvbiB3KHNlLEope3JldHVybntvcHRpb25zOnNlLGdldFJ1bGVzOkUoKSxob3N0Okp9fUMuZ2V0Rm9ybWF0Q29udGV4dD13O3ZhciBCO2Z1bmN0aW9uIEUoKXtyZXR1cm4gQj09PXZvaWQgMCYmKEI9bGUoQy5nZXRBbGxSdWxlcygpKSksQn1mdW5jdGlvbiBRKHNlKXt2YXIgSj0wO3JldHVybiBzZSYxJiYoSnw9MjgpLHNlJjImJihKfD05Niksc2UmMjgmJihKfD0yOCksc2UmOTYmJihKfD05NiksSn1mdW5jdGlvbiBsZShzZSl7dmFyIEo9TihzZSk7cmV0dXJuIGZ1bmN0aW9uKGllKXt2YXIgUj1KW3AoaWUuY3VycmVudFRva2VuU3Bhbi5raW5kLGllLm5leHRUb2tlblNwYW4ua2luZCldO2lmKFIpe2Zvcih2YXIgcT1bXSxPPTAsdmU9MCxlZT1SO3ZlPGVlLmxlbmd0aDt2ZSsrKXt2YXIgaGU9ZWVbdmVdLEY9flEoTyk7aGUuYWN0aW9uJkYmJmUuZXZlcnkoaGUuY29udGV4dCxmdW5jdGlvbih4KXtyZXR1cm4geChpZSl9KSYmKHEucHVzaChoZSksT3w9aGUuYWN0aW9uKX1pZihxLmxlbmd0aClyZXR1cm4gcX19fWZ1bmN0aW9uIE4oc2Upe2Zvcih2YXIgSj1uZXcgQXJyYXkob2Uqb2UpLGllPW5ldyBBcnJheShKLmxlbmd0aCksUj0wLHE9c2U7UjxxLmxlbmd0aDtSKyspZm9yKHZhciBPPXFbUl0sdmU9Ty5sZWZ0VG9rZW5SYW5nZS5pc1NwZWNpZmljJiZPLnJpZ2h0VG9rZW5SYW5nZS5pc1NwZWNpZmljLGVlPTAsaGU9Ty5sZWZ0VG9rZW5SYW5nZS50b2tlbnM7ZWU8aGUubGVuZ3RoO2VlKyspZm9yKHZhciBGPWhlW2VlXSx4PTAsWD1PLnJpZ2h0VG9rZW5SYW5nZS50b2tlbnM7eDxYLmxlbmd0aDt4Kyspe3ZhciAkPVhbeF0sQT1wKEYsJCkseT1KW0FdO3k9PT12b2lkIDAmJih5PUpbQV09W10pLFQoeSxPLnJ1bGUsdmUsaWUsQSl9cmV0dXJuIEp9ZnVuY3Rpb24gcChzZSxKKXtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoc2U8PTE2MCYmSjw9MTYwLFwiTXVzdCBjb21wdXRlIGZvcm1hdHRpbmcgY29udGV4dCBmcm9tIHRva2Vuc1wiKSxzZSpvZStKfXZhciBtPTUsRz0zMSxvZT0xNjArMSxmOyhmdW5jdGlvbihzZSl7c2Vbc2UuU3RvcFJ1bGVzU3BlY2lmaWM9MF09XCJTdG9wUnVsZXNTcGVjaWZpY1wiLHNlW3NlLlN0b3BSdWxlc0FueT1tKjFdPVwiU3RvcFJ1bGVzQW55XCIsc2Vbc2UuQ29udGV4dFJ1bGVzU3BlY2lmaWM9bSoyXT1cIkNvbnRleHRSdWxlc1NwZWNpZmljXCIsc2Vbc2UuQ29udGV4dFJ1bGVzQW55PW0qM109XCJDb250ZXh0UnVsZXNBbnlcIixzZVtzZS5Ob0NvbnRleHRSdWxlc1NwZWNpZmljPW0qNF09XCJOb0NvbnRleHRSdWxlc1NwZWNpZmljXCIsc2Vbc2UuTm9Db250ZXh0UnVsZXNBbnk9bSo1XT1cIk5vQ29udGV4dFJ1bGVzQW55XCJ9KShmfHwoZj17fSkpO2Z1bmN0aW9uIFQoc2UsSixpZSxSLHEpe3ZhciBPPUouYWN0aW9uJjM/aWU/Zi5TdG9wUnVsZXNTcGVjaWZpYzpmLlN0b3BSdWxlc0FueTpKLmNvbnRleHQhPT1DLmFueUNvbnRleHQ/aWU/Zi5Db250ZXh0UnVsZXNTcGVjaWZpYzpmLkNvbnRleHRSdWxlc0FueTppZT9mLk5vQ29udGV4dFJ1bGVzU3BlY2lmaWM6Zi5Ob0NvbnRleHRSdWxlc0FueSx2ZT1SW3FdfHwwO3NlLnNwbGljZShLKHZlLE8pLDAsSiksUltxXT1iKHZlLE8pfWZ1bmN0aW9uIEsoc2UsSil7Zm9yKHZhciBpZT0wLFI9MDtSPD1KO1IrPW0paWUrPXNlJkcsc2U+Pj1tO3JldHVybiBpZX1mdW5jdGlvbiBiKHNlLEope3ZhciBpZT0oc2U+PkomRykrMTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoKGllJkcpPT09aWUsXCJBZGRpbmcgbW9yZSBydWxlcyBpbnRvIHRoZSBzdWItYnVja2V0IHRoYW4gYWxsb3dlZC4gTWF4aW11bSBhbGxvd2VkIGlzIDMyIHJ1bGVzLlwiKSxzZSZ+KEc8PEopfGllPDxKfX0pKGE9ZS5mb3JtYXR0aW5nfHwoZS5mb3JtYXR0aW5nPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyhBLHksVil7dmFyIEw9e3BvczpBLGVuZDp5LGtpbmQ6Vn07cmV0dXJuIGUuRGVidWcuaXNEZWJ1Z2dpbmcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLFwiX19kZWJ1Z0tpbmRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuRGVidWcuZm9ybWF0U3ludGF4S2luZChWKX19KSxMfUMuY3JlYXRlVGV4dFJhbmdlV2l0aEtpbmQ9dzt2YXIgQjsoZnVuY3Rpb24oQSl7QVtBLlVua25vd249LTFdPVwiVW5rbm93blwifSkoQnx8KEI9e30pKTtmdW5jdGlvbiBFKEEseSxWKXt2YXIgTD15LmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKEEpLmxpbmU7aWYoTD09PTApcmV0dXJuW107Zm9yKHZhciBQPWUuZ2V0RW5kTGluZVBvc2l0aW9uKEwseSk7ZS5pc1doaXRlU3BhY2VTaW5nbGVMaW5lKHkudGV4dC5jaGFyQ29kZUF0KFApKTspUC0tO2UuaXNMaW5lQnJlYWsoeS50ZXh0LmNoYXJDb2RlQXQoUCkpJiZQLS07dmFyIGs9e3BvczplLmdldFN0YXJ0UG9zaXRpb25PZkxpbmUoTC0xLHkpLGVuZDpQKzF9O3JldHVybiBSKGsseSxWLDIpfUMuZm9ybWF0T25FbnRlcj1FO2Z1bmN0aW9uIFEoQSx5LFYpe3ZhciBMPUcoQSwyNix5KTtyZXR1cm4gaWUob2UoTCkseSxWLDMpfUMuZm9ybWF0T25TZW1pY29sb249UTtmdW5jdGlvbiBsZShBLHksVil7dmFyIEw9RyhBLDE4LHkpO2lmKCFMKXJldHVybltdO3ZhciBQPUwucGFyZW50LGs9b2UoUCksWT17cG9zOmUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihrLmdldFN0YXJ0KHkpLHkpLGVuZDpBfTtyZXR1cm4gUihZLHksViw0KX1DLmZvcm1hdE9uT3BlbmluZ0N1cmx5PWxlO2Z1bmN0aW9uIE4oQSx5LFYpe3ZhciBMPUcoQSwxOSx5KTtyZXR1cm4gaWUob2UoTCkseSxWLDUpfUMuZm9ybWF0T25DbG9zaW5nQ3VybHk9TjtmdW5jdGlvbiBwKEEseSl7dmFyIFY9e3BvczowLGVuZDpBLnRleHQubGVuZ3RofTtyZXR1cm4gUihWLEEseSwwKX1DLmZvcm1hdERvY3VtZW50PXA7ZnVuY3Rpb24gbShBLHksVixMKXt2YXIgUD17cG9zOmUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihBLFYpLGVuZDp5fTtyZXR1cm4gUihQLFYsTCwxKX1DLmZvcm1hdFNlbGVjdGlvbj1tO2Z1bmN0aW9uIEcoQSx5LFYpe3ZhciBMPWUuZmluZFByZWNlZGluZ1Rva2VuKEEsVik7cmV0dXJuIEwmJkwua2luZD09PXkmJkE9PT1MLmdldEVuZCgpP0w6dm9pZCAwfWZ1bmN0aW9uIG9lKEEpe2Zvcih2YXIgeT1BO3kmJnkucGFyZW50JiZ5LnBhcmVudC5lbmQ9PT1BLmVuZCYmIWYoeS5wYXJlbnQseSk7KXk9eS5wYXJlbnQ7cmV0dXJuIHl9ZnVuY3Rpb24gZihBLHkpe3N3aXRjaChBLmtpbmQpe2Nhc2UgMjU3OmNhc2UgMjU4OnJldHVybiBlLnJhbmdlQ29udGFpbnNSYW5nZShBLm1lbWJlcnMseSk7Y2FzZSAyNjE6dmFyIFY9QS5ib2R5O3JldHVybiEhViYmVi5raW5kPT09MjYyJiZlLnJhbmdlQ29udGFpbnNSYW5nZShWLnN0YXRlbWVudHMseSk7Y2FzZSAzMDU6Y2FzZSAyMzU6Y2FzZSAyNjI6cmV0dXJuIGUucmFuZ2VDb250YWluc1JhbmdlKEEuc3RhdGVtZW50cyx5KTtjYXNlIDI5MjpyZXR1cm4gZS5yYW5nZUNvbnRhaW5zUmFuZ2UoQS5ibG9jay5zdGF0ZW1lbnRzLHkpfXJldHVybiExfWZ1bmN0aW9uIFQoQSx5KXtyZXR1cm4gVih5KTtmdW5jdGlvbiBWKEwpe3ZhciBQPWUuZm9yRWFjaENoaWxkKEwsZnVuY3Rpb24oWSl7cmV0dXJuIGUuc3RhcnRFbmRDb250YWluc1JhbmdlKFkuZ2V0U3RhcnQoeSksWS5lbmQsQSkmJll9KTtpZihQKXt2YXIgaz1WKFApO2lmKGspcmV0dXJuIGt9cmV0dXJuIEx9fWZ1bmN0aW9uIEsoQSx5KXtpZighQS5sZW5ndGgpcmV0dXJuIFA7dmFyIFY9QS5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuIGUucmFuZ2VPdmVybGFwc1dpdGhTdGFydEVuZCh5LGsuc3RhcnQsay5zdGFydCtrLmxlbmd0aCl9KS5zb3J0KGZ1bmN0aW9uKGssWSl7cmV0dXJuIGsuc3RhcnQtWS5zdGFydH0pO2lmKCFWLmxlbmd0aClyZXR1cm4gUDt2YXIgTD0wO3JldHVybiBmdW5jdGlvbihrKXtmb3IoOzspe2lmKEw+PVYubGVuZ3RoKXJldHVybiExO3ZhciBZPVZbTF07aWYoay5lbmQ8PVkuc3RhcnQpcmV0dXJuITE7aWYoZS5zdGFydEVuZE92ZXJsYXBzV2l0aFN0YXJ0RW5kKGsucG9zLGsuZW5kLFkuc3RhcnQsWS5zdGFydCtZLmxlbmd0aCkpcmV0dXJuITA7TCsrfX07ZnVuY3Rpb24gUCgpe3JldHVybiExfX1mdW5jdGlvbiBiKEEseSxWKXt2YXIgTD1BLmdldFN0YXJ0KFYpO2lmKEw9PT15LnBvcyYmQS5lbmQ9PT15LmVuZClyZXR1cm4gTDt2YXIgUD1lLmZpbmRQcmVjZWRpbmdUb2tlbih5LnBvcyxWKTtyZXR1cm4hUHx8UC5lbmQ+PXkucG9zP0EucG9zOlAuZW5kfWZ1bmN0aW9uIHNlKEEseSxWKXtmb3IodmFyIEw9LTEsUDtBOyl7dmFyIGs9Vi5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihBLmdldFN0YXJ0KFYpKS5saW5lO2lmKEwhPT0tMSYmayE9PUwpYnJlYWs7aWYoQy5TbWFydEluZGVudGVyLnNob3VsZEluZGVudENoaWxkTm9kZSh5LEEsUCxWKSlyZXR1cm4geS5pbmRlbnRTaXplO0w9ayxQPUEsQT1BLnBhcmVudH1yZXR1cm4gMH1mdW5jdGlvbiBKKEEseSxWLEwsUCxrKXt2YXIgWT17cG9zOkEucG9zLGVuZDpBLmVuZH07cmV0dXJuIEMuZ2V0Rm9ybWF0dGluZ1NjYW5uZXIoeS50ZXh0LFYsWS5wb3MsWS5lbmQsZnVuY3Rpb24oVSl7cmV0dXJuIHEoWSxBLEwsUCxVLGssMSxmdW5jdGlvbihqKXtyZXR1cm4hMX0seSl9KX1DLmZvcm1hdE5vZGVHaXZlbkluZGVudGF0aW9uPUo7ZnVuY3Rpb24gaWUoQSx5LFYsTCl7aWYoIUEpcmV0dXJuW107dmFyIFA9e3BvczplLmdldExpbmVTdGFydFBvc2l0aW9uRm9yUG9zaXRpb24oQS5nZXRTdGFydCh5KSx5KSxlbmQ6QS5lbmR9O3JldHVybiBSKFAseSxWLEwpfWZ1bmN0aW9uIFIoQSx5LFYsTCl7dmFyIFA9VChBLHkpO3JldHVybiBDLmdldEZvcm1hdHRpbmdTY2FubmVyKHkudGV4dCx5Lmxhbmd1YWdlVmFyaWFudCxiKFAsQSx5KSxBLmVuZCxmdW5jdGlvbihrKXtyZXR1cm4gcShBLFAsQy5TbWFydEluZGVudGVyLmdldEluZGVudGF0aW9uRm9yTm9kZShQLEEseSxWLm9wdGlvbnMpLHNlKFAsVi5vcHRpb25zLHkpLGssVixMLEsoeS5wYXJzZURpYWdub3N0aWNzLEEpLHkpfSl9ZnVuY3Rpb24gcShBLHksVixMLFAsayxZLFUsail7dmFyIEgsST1rLm9wdGlvbnMsbD1rLmdldFJ1bGVzLGQ9ay5ob3N0LEQ9bmV3IEMuRm9ybWF0dGluZ0NvbnRleHQoaixZLEkpLGZlLGcsbmUsdWUsV2U9LTEsRmU9W107aWYoUC5hZHZhbmNlKCksUC5pc09uVG9rZW4oKSl7dmFyIFo9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbih5LmdldFN0YXJ0KGopKS5saW5lLEJlPVo7eS5kZWNvcmF0b3JzJiYoQmU9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihlLmdldE5vbkRlY29yYXRvclRva2VuUG9zT2ZOb2RlKHksaikpLmxpbmUpLHdlKHkseSxaLEJlLFYsTCl9aWYoIVAuaXNPblRva2VuKCkpe3ZhciBnZT1DLlNtYXJ0SW5kZW50ZXIubm9kZVdpbGxJbmRlbnRDaGlsZChJLHksdm9pZCAwLGosITEpP1YrSS5pbmRlbnRTaXplOlYsUmU9UC5nZXRDdXJyZW50TGVhZGluZ1RyaXZpYSgpO1JlJiYoZGUoUmUsZ2UsITEsZnVuY3Rpb24oSXIpe3JldHVybiBBZShJcixqLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKElyLnBvcykseSx5LHZvaWQgMCl9KSxJLnRyaW1UcmFpbGluZ1doaXRlc3BhY2UhPT0hMSYmbihSZSkpfWlmKGZlJiZQLmdldFN0YXJ0UG9zKCk+PUEuZW5kKXt2YXIgemU9UC5pc09uRU9GKCk/UC5yZWFkRU9GVG9rZW5SYW5nZSgpOlAuaXNPblRva2VuKCk/UC5yZWFkVG9rZW5JbmZvKHkpLnRva2VuOnZvaWQgMDtpZih6ZSl7dmFyIEVlPSgoSD1lLmZpbmRQcmVjZWRpbmdUb2tlbih6ZS5lbmQsaix5KSk9PT1udWxsfHxIPT09dm9pZCAwP3ZvaWQgMDpILnBhcmVudCl8fGc7ZXIoemUsai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbih6ZS5wb3MpLmxpbmUsRWUsZmUsbmUsZyxFZSx2b2lkIDApfX1yZXR1cm4gRmU7ZnVuY3Rpb24gSGUoSXIsd3IsVXIsaWksbWkpe2lmKGUucmFuZ2VPdmVybGFwc1dpdGhTdGFydEVuZChpaSxJcix3cil8fGUucmFuZ2VDb250YWluc1N0YXJ0RW5kKGlpLElyLHdyKSl7aWYobWkhPT0tMSlyZXR1cm4gbWl9ZWxzZXt2YXIgcGU9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihJcikubGluZSxvcj1lLmdldExpbmVTdGFydFBvc2l0aW9uRm9yUG9zaXRpb24oSXIsaikscXI9Qy5TbWFydEluZGVudGVyLmZpbmRGaXJzdE5vbldoaXRlc3BhY2VDb2x1bW4ob3IsSXIsaixJKTtpZihwZSE9PVVyfHxJcj09PXFyKXt2YXIgc2k9Qy5TbWFydEluZGVudGVyLmdldEJhc2VJbmRlbnRhdGlvbihJKTtyZXR1cm4gc2k+cXI/c2k6cXJ9fXJldHVybi0xfWZ1bmN0aW9uIHJyKElyLHdyLFVyLGlpLG1pLHBlKXt2YXIgb3I9Qy5TbWFydEluZGVudGVyLnNob3VsZEluZGVudENoaWxkTm9kZShJLElyKT9JLmluZGVudFNpemU6MDtyZXR1cm4gcGU9PT13cj97aW5kZW50YXRpb246d3I9PT11ZT9XZTptaS5nZXRJbmRlbnRhdGlvbigpLGRlbHRhOk1hdGgubWluKEkuaW5kZW50U2l6ZSxtaS5nZXREZWx0YShJcikrb3IpfTpVcj09PS0xP0lyLmtpbmQ9PT0yMCYmd3I9PT11ZT97aW5kZW50YXRpb246V2UsZGVsdGE6bWkuZ2V0RGVsdGEoSXIpfTpDLlNtYXJ0SW5kZW50ZXIuY2hpbGRTdGFydHNPblRoZVNhbWVMaW5lV2l0aEVsc2VJbklmU3RhdGVtZW50KGlpLElyLHdyLGopfHxDLlNtYXJ0SW5kZW50ZXIuY2hpbGRJc1VuaW5kZW50ZWRCcmFuY2hPZkNvbmRpdGlvbmFsRXhwcmVzc2lvbihpaSxJcix3cixqKXx8Qy5TbWFydEluZGVudGVyLmFyZ3VtZW50U3RhcnRzT25TYW1lTGluZUFzUHJldmlvdXNBcmd1bWVudChpaSxJcix3cixqKT97aW5kZW50YXRpb246bWkuZ2V0SW5kZW50YXRpb24oKSxkZWx0YTpvcn06e2luZGVudGF0aW9uOm1pLmdldEluZGVudGF0aW9uKCkrbWkuZ2V0RGVsdGEoSXIpLGRlbHRhOm9yfTp7aW5kZW50YXRpb246VXIsZGVsdGE6b3J9fWZ1bmN0aW9uIEllKElyKXtpZihJci5tb2RpZmllcnMmJklyLm1vZGlmaWVycy5sZW5ndGgpcmV0dXJuIElyLm1vZGlmaWVyc1swXS5raW5kO3N3aXRjaChJci5raW5kKXtjYXNlIDI1NzpyZXR1cm4gODQ7Y2FzZSAyNTg6cmV0dXJuIDExODtjYXNlIDI1NjpyZXR1cm4gOTg7Y2FzZSAyNjA6cmV0dXJuIDI2MDtjYXNlIDE3MjpyZXR1cm4gMTM2O2Nhc2UgMTczOnJldHVybiAxNDk7Y2FzZSAxNjk6aWYoSXIuYXN0ZXJpc2tUb2tlbilyZXR1cm4gNDE7Y2FzZSAxNjc6Y2FzZSAxNjQ6dmFyIHdyPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oSXIpO2lmKHdyKXJldHVybiB3ci5raW5kfX1mdW5jdGlvbiBfZShJcix3cixVcixpaSl7cmV0dXJue2dldEluZGVudGF0aW9uRm9yQ29tbWVudDpmdW5jdGlvbihvcixxcixzaSl7c3dpdGNoKG9yKXtjYXNlIDE5OmNhc2UgMjM6Y2FzZSAyMTpyZXR1cm4gVXIrcGUoc2kpfXJldHVybiBxciE9PS0xP3FyOlVyfSxnZXRJbmRlbnRhdGlvbkZvclRva2VuOmZ1bmN0aW9uKG9yLHFyLHNpLERpKXtyZXR1cm4hRGkmJm1pKG9yLHFyLHNpKT9VcitwZShzaSk6VXJ9LGdldEluZGVudGF0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIFVyfSxnZXREZWx0YTpwZSxyZWNvbXB1dGVJbmRlbnRhdGlvbjpmdW5jdGlvbihvcixxcil7Qy5TbWFydEluZGVudGVyLnNob3VsZEluZGVudENoaWxkTm9kZShJLHFyLElyLGopJiYoVXIrPW9yP0kuaW5kZW50U2l6ZTotSS5pbmRlbnRTaXplLGlpPUMuU21hcnRJbmRlbnRlci5zaG91bGRJbmRlbnRDaGlsZE5vZGUoSSxJcik/SS5pbmRlbnRTaXplOjApfX07ZnVuY3Rpb24gbWkob3IscXIsc2kpe3N3aXRjaChxcil7Y2FzZSAxODpjYXNlIDE5OmNhc2UgMjE6Y2FzZSA5MTpjYXNlIDExNTpjYXNlIDU5OnJldHVybiExO2Nhc2UgNDM6Y2FzZSAzMTpzd2l0Y2goc2kua2luZCl7Y2FzZSAyODA6Y2FzZSAyODE6Y2FzZSAyNzk6Y2FzZSAyMjg6cmV0dXJuITF9YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmlmKHNpLmtpbmQhPT0xOTUpcmV0dXJuITE7YnJlYWt9cmV0dXJuIHdyIT09b3ImJiEoSXIuZGVjb3JhdG9ycyYmcXI9PT1JZShJcikpfWZ1bmN0aW9uIHBlKG9yKXtyZXR1cm4gQy5TbWFydEluZGVudGVyLm5vZGVXaWxsSW5kZW50Q2hpbGQoSSxJcixvcixqLCEwKT9paTowfX1mdW5jdGlvbiB3ZShJcix3cixVcixpaSxtaSxwZSl7aWYoIWUucmFuZ2VPdmVybGFwc1dpdGhTdGFydEVuZChBLElyLmdldFN0YXJ0KGopLElyLmdldEVuZCgpKSlyZXR1cm47dmFyIG9yPV9lKElyLFVyLG1pLHBlKSxxcj13cjtmb3IoZS5mb3JFYWNoQ2hpbGQoSXIsZnVuY3Rpb24oZXQpe0RpKGV0LC0xLElyLG9yLFVyLGlpLCExKX0sZnVuY3Rpb24oZXQpe3dpKGV0LElyLFVyLG9yKX0pO1AuaXNPblRva2VuKCkmJlAuZ2V0U3RhcnRQb3MoKTxBLmVuZDspe3ZhciBzaT1QLnJlYWRUb2tlbkluZm8oSXIpO2lmKHNpLnRva2VuLmVuZD5NYXRoLm1pbihJci5lbmQsQS5lbmQpKWJyZWFrO1hpKHNpLElyLG9yLElyKX1mdW5jdGlvbiBEaShldCxHaSxXdCxadCxfcixwaSxhZSxYZSl7aWYoZS5ub2RlSXNNaXNzaW5nKGV0KSlyZXR1cm4gR2k7dmFyIEpyPWV0LmdldFN0YXJ0KGopLHRpPWouZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oSnIpLmxpbmUsWmU9dGk7ZXQuZGVjb3JhdG9ycyYmKFplPWouZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZS5nZXROb25EZWNvcmF0b3JUb2tlblBvc09mTm9kZShldCxqKSkubGluZSk7dmFyIFNyPS0xO2lmKGFlJiZlLnJhbmdlQ29udGFpbnNSYW5nZShBLFd0KSYmKFNyPUhlKEpyLGV0LmVuZCxfcixBLEdpKSxTciE9PS0xJiYoR2k9U3IpKSwhZS5yYW5nZU92ZXJsYXBzV2l0aFN0YXJ0RW5kKEEsZXQucG9zLGV0LmVuZCkpcmV0dXJuIGV0LmVuZDxBLnBvcyYmUC5za2lwVG9FbmRPZihldCksR2k7aWYoZXQuZ2V0RnVsbFdpZHRoKCk9PT0wKXJldHVybiBHaTtmb3IoO1AuaXNPblRva2VuKCkmJlAuZ2V0U3RhcnRQb3MoKTxBLmVuZDspe3ZhciB6cj1QLnJlYWRUb2tlbkluZm8oSXIpO2lmKHpyLnRva2VuLmVuZD5BLmVuZClyZXR1cm4gR2k7aWYoenIudG9rZW4uZW5kPkpyKXt6ci50b2tlbi5wb3M+SnImJlAuc2tpcFRvU3RhcnRPZihldCk7YnJlYWt9WGkoenIsSXIsWnQsSXIpfWlmKCFQLmlzT25Ub2tlbigpfHxQLmdldFN0YXJ0UG9zKCk+PUEuZW5kKXJldHVybiBHaTtpZihlLmlzVG9rZW4oZXQpKXt2YXIgenI9UC5yZWFkVG9rZW5JbmZvKGV0KTtpZihldC5raW5kIT09MTEpcmV0dXJuIGUuRGVidWcuYXNzZXJ0KHpyLnRva2VuLmVuZD09PWV0LmVuZCxcIlRva2VuIGVuZCBpcyBjaGlsZCBlbmRcIiksWGkoenIsSXIsWnQsZXQpLEdpfXZhciBXcj1ldC5raW5kPT09MTY1P3RpOnBpLEplPXJyKGV0LHRpLFNyLElyLFp0LFdyKTtyZXR1cm4gd2UoZXQscXIsdGksWmUsSmUuaW5kZW50YXRpb24sSmUuZGVsdGEpLHFyPUlyLFhlJiZXdC5raW5kPT09MjA0JiZHaT09PS0xJiYoR2k9SmUuaW5kZW50YXRpb24pLEdpfWZ1bmN0aW9uIHdpKGV0LEdpLFd0LFp0KXtlLkRlYnVnLmFzc2VydChlLmlzTm9kZUFycmF5KGV0KSk7dmFyIF9yPWVlKEdpLGV0KSxwaT1adCxhZT1XdDtpZighZS5yYW5nZU92ZXJsYXBzV2l0aFN0YXJ0RW5kKEEsZXQucG9zLGV0LmVuZCkpe2V0LmVuZDxBLnBvcyYmUC5za2lwVG9FbmRPZihldCk7cmV0dXJufWlmKF9yIT09MClmb3IoO1AuaXNPblRva2VuKCkmJlAuZ2V0U3RhcnRQb3MoKTxBLmVuZDspe3ZhciBYZT1QLnJlYWRUb2tlbkluZm8oR2kpO2lmKFhlLnRva2VuLmVuZD5ldC5wb3MpYnJlYWs7aWYoWGUudG9rZW4ua2luZD09PV9yKXthZT1qLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFhlLnRva2VuLnBvcykubGluZSxYaShYZSxHaSxadCxHaSk7dmFyIEpyPXZvaWQgMDtpZihXZSE9PS0xKUpyPVdlO2Vsc2V7dmFyIHRpPWUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihYZS50b2tlbi5wb3Msaik7SnI9Qy5TbWFydEluZGVudGVyLmZpbmRGaXJzdE5vbldoaXRlc3BhY2VDb2x1bW4odGksWGUudG9rZW4ucG9zLGosSSl9cGk9X2UoR2ksV3QsSnIsSS5pbmRlbnRTaXplKX1lbHNlIFhpKFhlLEdpLFp0LEdpKX1mb3IodmFyIFplPS0xLFNyPTA7U3I8ZXQubGVuZ3RoO1NyKyspe3ZhciB6cj1ldFtTcl07WmU9RGkoenIsWmUsSXIscGksYWUsYWUsITAsU3I9PT0wKX12YXIgV3I9aGUoX3IpO2lmKFdyIT09MCYmUC5pc09uVG9rZW4oKSYmUC5nZXRTdGFydFBvcygpPEEuZW5kKXt2YXIgWGU9UC5yZWFkVG9rZW5JbmZvKEdpKTtpZihYZS50b2tlbi5raW5kPT09MjcmJmUuaXNDYWxsTGlrZUV4cHJlc3Npb24oR2kpKXt2YXIgSmU9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihYZS50b2tlbi5wb3MpLmxpbmU7YWUhPT1KZSYmKFAuYWR2YW5jZSgpLFhlPVAuaXNPblRva2VuKCk/UC5yZWFkVG9rZW5JbmZvKEdpKTp2b2lkIDApfVhlJiZYZS50b2tlbi5raW5kPT09V3ImJmUucmFuZ2VDb250YWluc1JhbmdlKEdpLFhlLnRva2VuKSYmWGkoWGUsR2kscGksR2ksITApfX1mdW5jdGlvbiBYaShldCxHaSxXdCxadCxfcil7ZS5EZWJ1Zy5hc3NlcnQoZS5yYW5nZUNvbnRhaW5zUmFuZ2UoR2ksZXQudG9rZW4pKTt2YXIgcGk9UC5sYXN0VHJhaWxpbmdUcml2aWFXYXNOZXdMaW5lKCksYWU9ITE7ZXQubGVhZGluZ1RyaXZpYSYmeWUoZXQubGVhZGluZ1RyaXZpYSxHaSxxcixXdCk7dmFyIFhlPTAsSnI9ZS5yYW5nZUNvbnRhaW5zUmFuZ2UoQSxldC50b2tlbiksdGk9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihldC50b2tlbi5wb3MpO2lmKEpyKXt2YXIgWmU9VShldC50b2tlbiksU3I9ZmU7aWYoWGU9QWUoZXQudG9rZW4sdGksR2kscXIsV3QpLCFaZSlpZihYZT09PTApe3ZhciB6cj1TciYmai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihTci5lbmQpLmxpbmU7YWU9cGkmJnRpLmxpbmUhPT16cn1lbHNlIGFlPVhlPT09MX1pZihldC50cmFpbGluZ1RyaXZpYSYmeWUoZXQudHJhaWxpbmdUcml2aWEsR2kscXIsV3QpLGFlKXt2YXIgV3I9SnImJiFVKGV0LnRva2VuKT9XdC5nZXRJbmRlbnRhdGlvbkZvclRva2VuKHRpLmxpbmUsZXQudG9rZW4ua2luZCxadCwhIV9yKTotMSxKZT0hMDtpZihldC5sZWFkaW5nVHJpdmlhKXt2YXIgeGU9V3QuZ2V0SW5kZW50YXRpb25Gb3JDb21tZW50KGV0LnRva2VuLmtpbmQsV3IsWnQpO0plPWRlKGV0LmxlYWRpbmdUcml2aWEseGUsSmUsZnVuY3Rpb24odnIpe3JldHVybiBpcih2ci5wb3MseGUsITEpfSl9V3IhPT0tMSYmSmUmJihpcihldC50b2tlbi5wb3MsV3IsWGU9PT0xKSx1ZT10aS5saW5lLFdlPVdyKX1QLmFkdmFuY2UoKSxxcj1HaX19ZnVuY3Rpb24gZGUoSXIsd3IsVXIsaWkpe2Zvcih2YXIgbWk9MCxwZT1JcjttaTxwZS5sZW5ndGg7bWkrKyl7dmFyIG9yPXBlW21pXSxxcj1lLnJhbmdlQ29udGFpbnNSYW5nZShBLG9yKTtzd2l0Y2gob3Iua2luZCl7Y2FzZSAzOnFyJiZCcihvcix3ciwhVXIpLFVyPSExO2JyZWFrO2Nhc2UgMjpVciYmcXImJmlpKG9yKSxVcj0hMTticmVhaztjYXNlIDQ6VXI9ITA7YnJlYWt9fXJldHVybiBVcn1mdW5jdGlvbiB5ZShJcix3cixVcixpaSl7Zm9yKHZhciBtaT0wLHBlPUlyO21pPHBlLmxlbmd0aDttaSsrKXt2YXIgb3I9cGVbbWldO2lmKGUuaXNDb21tZW50KG9yLmtpbmQpJiZlLnJhbmdlQ29udGFpbnNSYW5nZShBLG9yKSl7dmFyIHFyPWouZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24ob3IucG9zKTtBZShvcixxcix3cixVcixpaSl9fX1mdW5jdGlvbiBBZShJcix3cixVcixpaSxtaSl7dmFyIHBlPVUoSXIpLG9yPTA7aWYoIXBlKWlmKGZlKW9yPWVyKElyLHdyLmxpbmUsVXIsZmUsbmUsZyxpaSxtaSk7ZWxzZXt2YXIgcXI9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihBLnBvcyk7RXIocXIubGluZSx3ci5saW5lKX1yZXR1cm4gZmU9SXIsZz1VcixuZT13ci5saW5lLG9yfWZ1bmN0aW9uIGVyKElyLHdyLFVyLGlpLG1pLHBlLG9yLHFyKXtELnVwZGF0ZUNvbnRleHQoaWkscGUsSXIsVXIsb3IpO3ZhciBzaT1sKEQpLERpPUQub3B0aW9ucy50cmltVHJhaWxpbmdXaGl0ZXNwYWNlIT09ITEsd2k9MDtyZXR1cm4gc2k/ZS5mb3JFYWNoUmlnaHQoc2ksZnVuY3Rpb24oWGkpe2lmKHdpPXlyKFhpLGlpLG1pLElyLHdyKSxxcilzd2l0Y2god2kpe2Nhc2UgMjpVci5nZXRTdGFydChqKT09PUlyLnBvcyYmcXIucmVjb21wdXRlSW5kZW50YXRpb24oITEsb3IpO2JyZWFrO2Nhc2UgMTpVci5nZXRTdGFydChqKT09PUlyLnBvcyYmcXIucmVjb21wdXRlSW5kZW50YXRpb24oITAsb3IpO2JyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnQod2k9PT0wKX1EaT1EaSYmIShYaS5hY3Rpb24mMTYpJiZYaS5mbGFncyE9PTF9KTpEaT1EaSYmSXIua2luZCE9PTEsd3IhPT1taSYmRGkmJkVyKG1pLHdyLGlpKSx3aX1mdW5jdGlvbiBpcihJcix3cixVcil7dmFyIGlpPSQod3IsSSk7aWYoVXIpR2UoSXIsMCxpaSk7ZWxzZXt2YXIgbWk9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihJcikscGU9ZS5nZXRTdGFydFBvc2l0aW9uT2ZMaW5lKG1pLmxpbmUsaik7KHdyIT09Q3IocGUsbWkuY2hhcmFjdGVyKXx8WWUoaWkscGUpKSYmR2UocGUsbWkuY2hhcmFjdGVyLGlpKX19ZnVuY3Rpb24gQ3IoSXIsd3Ipe2Zvcih2YXIgVXI9MCxpaT0wO2lpPHdyO2lpKyspai50ZXh0LmNoYXJDb2RlQXQoSXIraWkpPT09OT9Vcis9SS50YWJTaXplLVVyJUkudGFiU2l6ZTpVcisrO3JldHVybiBVcn1mdW5jdGlvbiBZZShJcix3cil7cmV0dXJuIElyIT09ai50ZXh0LnN1YnN0cih3cixJci5sZW5ndGgpfWZ1bmN0aW9uIEJyKElyLHdyLFVyLGlpKXtpaT09PXZvaWQgMCYmKGlpPSEwKTt2YXIgbWk9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihJci5wb3MpLmxpbmUscGU9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihJci5lbmQpLmxpbmU7aWYobWk9PT1wZSl7VXJ8fGlyKElyLnBvcyx3ciwhMSk7cmV0dXJufWZvcih2YXIgb3I9W10scXI9SXIucG9zLHNpPW1pO3NpPHBlO3NpKyspe3ZhciBEaT1lLmdldEVuZExpbmVQb3NpdGlvbihzaSxqKTtvci5wdXNoKHtwb3M6cXIsZW5kOkRpfSkscXI9ZS5nZXRTdGFydFBvc2l0aW9uT2ZMaW5lKHNpKzEsail9aWYoaWkmJm9yLnB1c2goe3BvczpxcixlbmQ6SXIuZW5kfSksb3IubGVuZ3RoIT09MCl7dmFyIHdpPWUuZ2V0U3RhcnRQb3NpdGlvbk9mTGluZShtaSxqKSxYaT1DLlNtYXJ0SW5kZW50ZXIuZmluZEZpcnN0Tm9uV2hpdGVzcGFjZUNoYXJhY3RlckFuZENvbHVtbih3aSxvclswXS5wb3MsaixJKSxldD0wO1VyJiYoZXQ9MSxtaSsrKTtmb3IodmFyIEdpPXdyLVhpLmNvbHVtbixXdD1ldDtXdDxvci5sZW5ndGg7V3QrKyxtaSsrKXt2YXIgWnQ9ZS5nZXRTdGFydFBvc2l0aW9uT2ZMaW5lKG1pLGopLF9yPVd0PT09MD9YaTpDLlNtYXJ0SW5kZW50ZXIuZmluZEZpcnN0Tm9uV2hpdGVzcGFjZUNoYXJhY3RlckFuZENvbHVtbihvcltXdF0ucG9zLG9yW1d0XS5lbmQsaixJKSxwaT1fci5jb2x1bW4rR2k7aWYocGk+MCl7dmFyIGFlPSQocGksSSk7R2UoWnQsX3IuY2hhcmFjdGVyLGFlKX1lbHNlIGJlKFp0LF9yLmNoYXJhY3Rlcil9fX1mdW5jdGlvbiBFcihJcix3cixVcil7Zm9yKHZhciBpaT1JcjtpaTx3cjtpaSsrKXt2YXIgbWk9ZS5nZXRTdGFydFBvc2l0aW9uT2ZMaW5lKGlpLGopLHBlPWUuZ2V0RW5kTGluZVBvc2l0aW9uKGlpLGopO2lmKCEoVXImJihlLmlzQ29tbWVudChVci5raW5kKXx8ZS5pc1N0cmluZ09yUmVndWxhckV4cHJlc3Npb25PclRlbXBsYXRlTGl0ZXJhbChVci5raW5kKSkmJlVyLnBvczw9cGUmJlVyLmVuZD5wZSkpe3ZhciBvcj1OZShtaSxwZSk7b3IhPT0tMSYmKGUuRGVidWcuYXNzZXJ0KG9yPT09bWl8fCFlLmlzV2hpdGVTcGFjZVNpbmdsZUxpbmUoai50ZXh0LmNoYXJDb2RlQXQob3ItMSkpKSxiZShvcixwZSsxLW9yKSl9fX1mdW5jdGlvbiBOZShJcix3cil7Zm9yKHZhciBVcj13cjtVcj49SXImJmUuaXNXaGl0ZVNwYWNlU2luZ2xlTGluZShqLnRleHQuY2hhckNvZGVBdChVcikpOylVci0tO3JldHVybiBVciE9PXdyP1VyKzE6LTF9ZnVuY3Rpb24gbihJcil7Zm9yKHZhciB3cj1mZT9mZS5lbmQ6QS5wb3MsVXI9MCxpaT1JcjtVcjxpaS5sZW5ndGg7VXIrKyl7dmFyIG1pPWlpW1VyXTtlLmlzQ29tbWVudChtaS5raW5kKSYmKHdyPG1pLnBvcyYmbHIod3IsbWkucG9zLTEsZmUpLHdyPW1pLmVuZCsxKX13cjxBLmVuZCYmbHIod3IsQS5lbmQsZmUpfWZ1bmN0aW9uIGxyKElyLHdyLFVyKXt2YXIgaWk9ai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihJcikubGluZSxtaT1qLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHdyKS5saW5lO0VyKGlpLG1pKzEsVXIpfWZ1bmN0aW9uIGJlKElyLHdyKXt3ciYmRmUucHVzaChlLmNyZWF0ZVRleHRDaGFuZ2VGcm9tU3RhcnRMZW5ndGgoSXIsd3IsXCJcIikpfWZ1bmN0aW9uIEdlKElyLHdyLFVyKXsod3J8fFVyKSYmRmUucHVzaChlLmNyZWF0ZVRleHRDaGFuZ2VGcm9tU3RhcnRMZW5ndGgoSXIsd3IsVXIpKX1mdW5jdGlvbiB1cihJcix3cil7d3ImJkZlLnB1c2goZS5jcmVhdGVUZXh0Q2hhbmdlRnJvbVN0YXJ0TGVuZ3RoKElyLDAsd3IpKX1mdW5jdGlvbiB5cihJcix3cixVcixpaSxtaSl7dmFyIHBlPW1pIT09VXI7c3dpdGNoKElyLmFjdGlvbil7Y2FzZSAxOnJldHVybiAwO2Nhc2UgMTY6aWYod3IuZW5kIT09aWkucG9zKXJldHVybiBiZSh3ci5lbmQsaWkucG9zLXdyLmVuZCkscGU/MjowO2JyZWFrO2Nhc2UgMzI6YmUod3IucG9zLHdyLmVuZC13ci5wb3MpO2JyZWFrO2Nhc2UgODppZihJci5mbGFncyE9PTEmJlVyIT09bWkpcmV0dXJuIDA7dmFyIG9yPW1pLVVyO2lmKG9yIT09MSlyZXR1cm4gR2Uod3IuZW5kLGlpLnBvcy13ci5lbmQsZS5nZXROZXdMaW5lT3JEZWZhdWx0RnJvbUhvc3QoZCxJKSkscGU/MDoxO2JyZWFrO2Nhc2UgNDppZihJci5mbGFncyE9PTEmJlVyIT09bWkpcmV0dXJuIDA7dmFyIHFyPWlpLnBvcy13ci5lbmQ7aWYocXIhPT0xfHxqLnRleHQuY2hhckNvZGVBdCh3ci5lbmQpIT09MzIpcmV0dXJuIEdlKHdyLmVuZCxpaS5wb3Mtd3IuZW5kLFwiIFwiKSxwZT8yOjA7YnJlYWs7Y2FzZSA2NDp1cih3ci5lbmQsXCI7XCIpfXJldHVybiAwfX12YXIgTzsoZnVuY3Rpb24oQSl7QVtBLk5vbmU9MF09XCJOb25lXCIsQVtBLkxpbmVBZGRlZD0xXT1cIkxpbmVBZGRlZFwiLEFbQS5MaW5lUmVtb3ZlZD0yXT1cIkxpbmVSZW1vdmVkXCJ9KShPfHwoTz17fSkpO2Z1bmN0aW9uIHZlKEEseSxWLEwpe0w9PT12b2lkIDAmJihMPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKEEseSkpO3ZhciBQPWUuZmluZEFuY2VzdG9yKEwsZS5pc0pTRG9jKTtQJiYoTD1QLnBhcmVudCk7dmFyIGs9TC5nZXRTdGFydChBKTtpZighKGs8PXkmJnk8TC5nZXRFbmQoKSkpe1Y9Vj09PW51bGw/dm9pZCAwOlY9PT12b2lkIDA/ZS5maW5kUHJlY2VkaW5nVG9rZW4oeSxBKTpWO3ZhciBZPVYmJmUuZ2V0VHJhaWxpbmdDb21tZW50UmFuZ2VzKEEudGV4dCxWLmVuZCksVT1lLmdldExlYWRpbmdDb21tZW50UmFuZ2VzT2ZOb2RlKEwsQSksaj1lLmNvbmNhdGVuYXRlKFksVSk7cmV0dXJuIGomJmUuZmluZChqLGZ1bmN0aW9uKEgpe3JldHVybiBlLnJhbmdlQ29udGFpbnNQb3NpdGlvbkV4Y2x1c2l2ZShILHkpfHx5PT09SC5lbmQmJihILmtpbmQ9PT0yfHx5PT09QS5nZXRGdWxsV2lkdGgoKSl9KX19Qy5nZXRSYW5nZU9mRW5jbG9zaW5nQ29tbWVudD12ZTtmdW5jdGlvbiBlZShBLHkpe3N3aXRjaChBLmtpbmQpe2Nhc2UgMTcxOmNhc2UgMjU2OmNhc2UgMjEzOmNhc2UgMTY5OmNhc2UgMTY4OmNhc2UgMjE0OmlmKEEudHlwZVBhcmFtZXRlcnM9PT15KXJldHVybiAyOTtpZihBLnBhcmFtZXRlcnM9PT15KXJldHVybiAyMDticmVhaztjYXNlIDIwODpjYXNlIDIwOTppZihBLnR5cGVBcmd1bWVudHM9PT15KXJldHVybiAyOTtpZihBLmFyZ3VtZW50cz09PXkpcmV0dXJuIDIwO2JyZWFrO2Nhc2UgMTc4OmlmKEEudHlwZUFyZ3VtZW50cz09PXkpcmV0dXJuIDI5O2JyZWFrO2Nhc2UgMTgyOnJldHVybiAxOH1yZXR1cm4gMH1mdW5jdGlvbiBoZShBKXtzd2l0Y2goQSl7Y2FzZSAyMDpyZXR1cm4gMjE7Y2FzZSAyOTpyZXR1cm4gMzE7Y2FzZSAxODpyZXR1cm4gMTl9cmV0dXJuIDB9dmFyIEYseCxYO2Z1bmN0aW9uICQoQSx5KXt2YXIgVj0hRnx8Ri50YWJTaXplIT09eS50YWJTaXplfHxGLmluZGVudFNpemUhPT15LmluZGVudFNpemU7aWYoViYmKEY9e3RhYlNpemU6eS50YWJTaXplLGluZGVudFNpemU6eS5pbmRlbnRTaXplfSx4PVg9dm9pZCAwKSx5LmNvbnZlcnRUYWJzVG9TcGFjZXMpe3ZhciBZPXZvaWQgMCxVPU1hdGguZmxvb3IoQS95LmluZGVudFNpemUpLGo9QSV5LmluZGVudFNpemU7cmV0dXJuIFh8fChYPVtdKSxYW1VdPT09dm9pZCAwPyhZPWUucmVwZWF0U3RyaW5nKFwiIFwiLHkuaW5kZW50U2l6ZSpVKSxYW1VdPVkpOlk9WFtVXSxqP1krZS5yZXBlYXRTdHJpbmcoXCIgXCIsaik6WX1lbHNle3ZhciBMPU1hdGguZmxvb3IoQS95LnRhYlNpemUpLFA9QS1MKnkudGFiU2l6ZSxrPXZvaWQgMDtyZXR1cm4geHx8KHg9W10pLHhbTF09PT12b2lkIDA/eFtMXT1rPWUucmVwZWF0U3RyaW5nKFwiXHRcIixMKTprPXhbTF0sUD9rK2UucmVwZWF0U3RyaW5nKFwiIFwiLFApOmt9fUMuZ2V0SW5kZW50YXRpb25TdHJpbmc9JH0pKGE9ZS5mb3JtYXR0aW5nfHwoZS5mb3JtYXR0aW5nPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc7KGZ1bmN0aW9uKEIpe3ZhciBFOyhmdW5jdGlvbihVKXtVW1UuVW5rbm93bj0tMV09XCJVbmtub3duXCJ9KShFfHwoRT17fSkpO2Z1bmN0aW9uIFEoVSxqLEgsSSl7aWYoST09PXZvaWQgMCYmKEk9ITEpLFU+ai50ZXh0Lmxlbmd0aClyZXR1cm4gRyhIKTtpZihILmluZGVudFN0eWxlPT09ZS5JbmRlbnRTdHlsZS5Ob25lKXJldHVybiAwO3ZhciBsPWUuZmluZFByZWNlZGluZ1Rva2VuKFUsaix2b2lkIDAsITApLGQ9Qy5nZXRSYW5nZU9mRW5jbG9zaW5nQ29tbWVudChqLFUsbHx8bnVsbCk7aWYoZCYmZC5raW5kPT09MylyZXR1cm4gbGUoaixVLEgsZCk7aWYoIWwpcmV0dXJuIEcoSCk7dmFyIEQ9ZS5pc1N0cmluZ09yUmVndWxhckV4cHJlc3Npb25PclRlbXBsYXRlTGl0ZXJhbChsLmtpbmQpO2lmKEQmJmwuZ2V0U3RhcnQoaik8PVUmJlU8bC5lbmQpcmV0dXJuIDA7dmFyIGZlPWouZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oVSkubGluZSxnPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKGosVSksbmU9Zy5raW5kPT09MTgmJmcucGFyZW50LmtpbmQ9PT0yMDU7aWYoSC5pbmRlbnRTdHlsZT09PWUuSW5kZW50U3R5bGUuQmxvY2t8fG5lKXJldHVybiBOKGosVSxIKTtpZihsLmtpbmQ9PT0yNyYmbC5wYXJlbnQua2luZCE9PTIyMSl7dmFyIHVlPVQobCxqLEgpO2lmKHVlIT09LTEpcmV0dXJuIHVlfXZhciBXZT1lZShVLGwucGFyZW50LGopO2lmKFdlJiYhZS5yYW5nZUNvbnRhaW5zUmFuZ2UoV2UsbCkpe3ZhciBGZT1bMjEzLDIxNF0uaW5kZXhPZihnLnBhcmVudC5raW5kKSE9PS0xLFo9RmU/MDpILmluZGVudFNpemU7cmV0dXJuIHgoV2UsaixIKStafXJldHVybiBwKGosVSxsLGZlLEksSCl9Qi5nZXRJbmRlbnRhdGlvbj1RO2Z1bmN0aW9uIGxlKFUsaixILEkpe3ZhciBsPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oVSxqKS5saW5lLTEsZD1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFUsSS5wb3MpLmxpbmU7aWYoZS5EZWJ1Zy5hc3NlcnQoZD49MCksbDw9ZClyZXR1cm4gVihlLmdldFN0YXJ0UG9zaXRpb25PZkxpbmUoZCxVKSxqLFUsSCk7dmFyIEQ9ZS5nZXRTdGFydFBvc2l0aW9uT2ZMaW5lKGwsVSksZmU9eShELGosVSxIKSxnPWZlLmNvbHVtbixuZT1mZS5jaGFyYWN0ZXI7aWYoZz09PTApcmV0dXJuIGc7dmFyIHVlPVUudGV4dC5jaGFyQ29kZUF0KEQrbmUpO3JldHVybiB1ZT09PTQyP2ctMTpnfWZ1bmN0aW9uIE4oVSxqLEgpe2Zvcih2YXIgST1qO0k+MDspe3ZhciBsPVUudGV4dC5jaGFyQ29kZUF0KEkpO2lmKCFlLmlzV2hpdGVTcGFjZUxpa2UobCkpYnJlYWs7SS0tfXZhciBkPWUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihJLFUpO3JldHVybiBWKGQsSSxVLEgpfWZ1bmN0aW9uIHAoVSxqLEgsSSxsLGQpe2Zvcih2YXIgRCxmZT1IO2ZlOyl7aWYoZS5wb3NpdGlvbkJlbG9uZ3NUb05vZGUoZmUsaixVKSYmayhkLGZlLEQsVSwhMCkpe3ZhciBnPUooZmUsVSksbmU9c2UoSCxmZSxJLFUpLHVlPW5lIT09MD9sJiZuZT09PTI/ZC5pbmRlbnRTaXplOjA6SSE9PWcubGluZT9kLmluZGVudFNpemU6MDtyZXR1cm4gb2UoZmUsZyx2b2lkIDAsdWUsVSwhMCxkKX12YXIgV2U9WChmZSxVLGQsITApO2lmKFdlIT09LTEpcmV0dXJuIFdlO0Q9ZmUsZmU9ZmUucGFyZW50fXJldHVybiBHKGQpfWZ1bmN0aW9uIG0oVSxqLEgsSSl7dmFyIGw9SC5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihVLmdldFN0YXJ0KEgpKTtyZXR1cm4gb2UoVSxsLGosMCxILCExLEkpfUIuZ2V0SW5kZW50YXRpb25Gb3JOb2RlPW07ZnVuY3Rpb24gRyhVKXtyZXR1cm4gVS5iYXNlSW5kZW50U2l6ZXx8MH1CLmdldEJhc2VJbmRlbnRhdGlvbj1HO2Z1bmN0aW9uIG9lKFUsaixILEksbCxkLEQpe2Zvcih2YXIgZmUsZz1VLnBhcmVudDtnOyl7dmFyIG5lPSEwO2lmKEgpe3ZhciB1ZT1VLmdldFN0YXJ0KGwpO25lPXVlPEgucG9zfHx1ZT5ILmVuZH12YXIgV2U9ZihnLFUsbCksRmU9V2UubGluZT09PWoubGluZXx8UihnLFUsai5saW5lLGwpO2lmKG5lKXt2YXIgWj0oZmU9dmUoVSxsKSk9PT1udWxsfHxmZT09PXZvaWQgMD92b2lkIDA6ZmVbMF0sQmU9ISFaJiZKKFosbCkubGluZT5XZS5saW5lLGdlPVgoVSxsLEQsQmUpO2lmKGdlIT09LTF8fChnZT1LKFUsZyxqLEZlLGwsRCksZ2UhPT0tMSkpcmV0dXJuIGdlK0l9ayhELGcsVSxsLGQpJiYhRmUmJihJKz1ELmluZGVudFNpemUpO3ZhciBSZT1pZShnLFUsai5saW5lLGwpO1U9ZyxnPVUucGFyZW50LGo9UmU/bC5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihVLmdldFN0YXJ0KGwpKTpXZX1yZXR1cm4gSStHKEQpfWZ1bmN0aW9uIGYoVSxqLEgpe3ZhciBJPXZlKGosSCksbD1JP0kucG9zOlUuZ2V0U3RhcnQoSCk7cmV0dXJuIEguZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obCl9ZnVuY3Rpb24gVChVLGosSCl7dmFyIEk9ZS5maW5kTGlzdEl0ZW1JbmZvKFUpO3JldHVybiBJJiZJLmxpc3RJdGVtSW5kZXg+MD8kKEkubGlzdC5nZXRDaGlsZHJlbigpLEkubGlzdEl0ZW1JbmRleC0xLGosSCk6LTF9ZnVuY3Rpb24gSyhVLGosSCxJLGwsZCl7dmFyIEQ9KGUuaXNEZWNsYXJhdGlvbihVKXx8ZS5pc1N0YXRlbWVudEJ1dE5vdERlY2xhcmF0aW9uKFUpKSYmKGoua2luZD09PTMwNXx8IUkpO3JldHVybiBEP0EoSCxsLGQpOi0xfXZhciBiOyhmdW5jdGlvbihVKXtVW1UuVW5rbm93bj0wXT1cIlVua25vd25cIixVW1UuT3BlbkJyYWNlPTFdPVwiT3BlbkJyYWNlXCIsVVtVLkNsb3NlQnJhY2U9Ml09XCJDbG9zZUJyYWNlXCJ9KShifHwoYj17fSkpO2Z1bmN0aW9uIHNlKFUsaixILEkpe3ZhciBsPWUuZmluZE5leHRUb2tlbihVLGosSSk7aWYoIWwpcmV0dXJuIDA7aWYobC5raW5kPT09MTgpcmV0dXJuIDE7aWYobC5raW5kPT09MTkpe3ZhciBkPUoobCxJKS5saW5lO3JldHVybiBIPT09ZD8yOjB9cmV0dXJuIDB9ZnVuY3Rpb24gSihVLGope3JldHVybiBqLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFUuZ2V0U3RhcnQoaikpfWZ1bmN0aW9uIGllKFUsaixILEkpe2lmKCEoZS5pc0NhbGxFeHByZXNzaW9uKFUpJiZlLmNvbnRhaW5zKFUuYXJndW1lbnRzLGopKSlyZXR1cm4hMTt2YXIgbD1VLmV4cHJlc3Npb24uZ2V0RW5kKCksZD1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKEksbCkubGluZTtyZXR1cm4gZD09PUh9Qi5pc0FyZ3VtZW50QW5kU3RhcnRMaW5lT3ZlcmxhcHNFeHByZXNzaW9uQmVpbmdDYWxsZWQ9aWU7ZnVuY3Rpb24gUihVLGosSCxJKXtpZihVLmtpbmQ9PT0yMzkmJlUuZWxzZVN0YXRlbWVudD09PWope3ZhciBsPWUuZmluZENoaWxkT2ZLaW5kKFUsOTEsSSk7ZS5EZWJ1Zy5hc3NlcnQobCE9PXZvaWQgMCk7dmFyIGQ9SihsLEkpLmxpbmU7cmV0dXJuIGQ9PT1IfXJldHVybiExfUIuY2hpbGRTdGFydHNPblRoZVNhbWVMaW5lV2l0aEVsc2VJbklmU3RhdGVtZW50PVI7ZnVuY3Rpb24gcShVLGosSCxJKXtpZihlLmlzQ29uZGl0aW9uYWxFeHByZXNzaW9uKFUpJiYoaj09PVUud2hlblRydWV8fGo9PT1VLndoZW5GYWxzZSkpe3ZhciBsPWUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oSSxVLmNvbmRpdGlvbi5lbmQpLmxpbmU7aWYoaj09PVUud2hlblRydWUpcmV0dXJuIEg9PT1sO3ZhciBkPUooVS53aGVuVHJ1ZSxJKS5saW5lLEQ9ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihJLFUud2hlblRydWUuZW5kKS5saW5lO3JldHVybiBsPT09ZCYmRD09PUh9cmV0dXJuITF9Qi5jaGlsZElzVW5pbmRlbnRlZEJyYW5jaE9mQ29uZGl0aW9uYWxFeHByZXNzaW9uPXE7ZnVuY3Rpb24gTyhVLGosSCxJKXtpZihlLmlzQ2FsbE9yTmV3RXhwcmVzc2lvbihVKSl7aWYoIVUuYXJndW1lbnRzKXJldHVybiExO3ZhciBsPWUuZmluZChVLmFyZ3VtZW50cyxmdW5jdGlvbihnKXtyZXR1cm4gZy5wb3M9PT1qLnBvc30pO2lmKCFsKXJldHVybiExO3ZhciBkPVUuYXJndW1lbnRzLmluZGV4T2YobCk7aWYoZD09PTApcmV0dXJuITE7dmFyIEQ9VS5hcmd1bWVudHNbZC0xXSxmZT1lLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKEksRC5nZXRFbmQoKSkubGluZTtpZihIPT09ZmUpcmV0dXJuITB9cmV0dXJuITF9Qi5hcmd1bWVudFN0YXJ0c09uU2FtZUxpbmVBc1ByZXZpb3VzQXJndW1lbnQ9TztmdW5jdGlvbiB2ZShVLGope3JldHVybiBVLnBhcmVudCYmaGUoVS5nZXRTdGFydChqKSxVLmdldEVuZCgpLFUucGFyZW50LGopfUIuZ2V0Q29udGFpbmluZ0xpc3Q9dmU7ZnVuY3Rpb24gZWUoVSxqLEgpe3JldHVybiBqJiZoZShVLFUsaixIKX1mdW5jdGlvbiBoZShVLGosSCxJKXtzd2l0Y2goSC5raW5kKXtjYXNlIDE3ODpyZXR1cm4gbChILnR5cGVBcmd1bWVudHMpO2Nhc2UgMjA1OnJldHVybiBsKEgucHJvcGVydGllcyk7Y2FzZSAyMDQ6cmV0dXJuIGwoSC5lbGVtZW50cyk7Y2FzZSAxODI6cmV0dXJuIGwoSC5tZW1iZXJzKTtjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDIxNDpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE3NDpjYXNlIDE3MTpjYXNlIDE4MDpjYXNlIDE3NTpyZXR1cm4gbChILnR5cGVQYXJhbWV0ZXJzKXx8bChILnBhcmFtZXRlcnMpO2Nhc2UgMTcyOnJldHVybiBsKEgucGFyYW1ldGVycyk7Y2FzZSAyNTc6Y2FzZSAyMjY6Y2FzZSAyNTg6Y2FzZSAyNTk6Y2FzZSAzNDQ6cmV0dXJuIGwoSC50eXBlUGFyYW1ldGVycyk7Y2FzZSAyMDk6Y2FzZSAyMDg6cmV0dXJuIGwoSC50eXBlQXJndW1lbnRzKXx8bChILmFyZ3VtZW50cyk7Y2FzZSAyNTU6cmV0dXJuIGwoSC5kZWNsYXJhdGlvbnMpO2Nhc2UgMjY5OmNhc2UgMjczOnJldHVybiBsKEguZWxlbWVudHMpO2Nhc2UgMjAxOmNhc2UgMjAyOnJldHVybiBsKEguZWxlbWVudHMpfWZ1bmN0aW9uIGwoZCl7cmV0dXJuIGQmJmUucmFuZ2VDb250YWluc1N0YXJ0RW5kKEYoSCxkLEkpLFUsaik/ZDp2b2lkIDB9fWZ1bmN0aW9uIEYoVSxqLEgpe2Zvcih2YXIgST1VLmdldENoaWxkcmVuKEgpLGw9MTtsPEkubGVuZ3RoLTE7bCsrKWlmKElbbF0ucG9zPT09ai5wb3MmJklbbF0uZW5kPT09ai5lbmQpcmV0dXJue3BvczpJW2wtMV0uZW5kLGVuZDpJW2wrMV0uZ2V0U3RhcnQoSCl9O3JldHVybiBqfWZ1bmN0aW9uIHgoVSxqLEgpe3JldHVybiBVP0Eoai5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihVLnBvcyksaixIKTotMX1mdW5jdGlvbiBYKFUsaixILEkpe2lmKFUucGFyZW50JiZVLnBhcmVudC5raW5kPT09MjU1KXJldHVybi0xO3ZhciBsPXZlKFUsaik7aWYobCl7dmFyIGQ9bC5pbmRleE9mKFUpO2lmKGQhPT0tMSl7dmFyIEQ9JChsLGQsaixIKTtpZihEIT09LTEpcmV0dXJuIER9cmV0dXJuIHgobCxqLEgpKyhJP0guaW5kZW50U2l6ZTowKX1yZXR1cm4tMX1mdW5jdGlvbiAkKFUsaixILEkpe2UuRGVidWcuYXNzZXJ0KGo+PTAmJmo8VS5sZW5ndGgpO2Zvcih2YXIgbD1VW2pdLGQ9SihsLEgpLEQ9ai0xO0Q+PTA7RC0tKWlmKFVbRF0ua2luZCE9PTI3KXt2YXIgZmU9SC5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihVW0RdLmVuZCkubGluZTtpZihmZSE9PWQubGluZSlyZXR1cm4gQShkLEgsSSk7ZD1KKFVbRF0sSCl9cmV0dXJuLTF9ZnVuY3Rpb24gQShVLGosSCl7dmFyIEk9ai5nZXRQb3NpdGlvbk9mTGluZUFuZENoYXJhY3RlcihVLmxpbmUsMCk7cmV0dXJuIFYoSSxJK1UuY2hhcmFjdGVyLGosSCl9ZnVuY3Rpb24geShVLGosSCxJKXtmb3IodmFyIGw9MCxkPTAsRD1VO0Q8ajtEKyspe3ZhciBmZT1ILnRleHQuY2hhckNvZGVBdChEKTtpZighZS5pc1doaXRlU3BhY2VTaW5nbGVMaW5lKGZlKSlicmVhaztmZT09PTk/ZCs9SS50YWJTaXplK2QlSS50YWJTaXplOmQrKyxsKyt9cmV0dXJue2NvbHVtbjpkLGNoYXJhY3RlcjpsfX1CLmZpbmRGaXJzdE5vbldoaXRlc3BhY2VDaGFyYWN0ZXJBbmRDb2x1bW49eTtmdW5jdGlvbiBWKFUsaixILEkpe3JldHVybiB5KFUsaixILEkpLmNvbHVtbn1CLmZpbmRGaXJzdE5vbldoaXRlc3BhY2VDb2x1bW49VjtmdW5jdGlvbiBMKFUsaixILEksbCl7dmFyIGQ9SD9ILmtpbmQ6MDtzd2l0Y2goai5raW5kKXtjYXNlIDIzODpjYXNlIDI1NzpjYXNlIDIyNjpjYXNlIDI1ODpjYXNlIDI2MDpjYXNlIDI1OTpjYXNlIDIwNDpjYXNlIDIzNTpjYXNlIDI2MjpjYXNlIDIwNTpjYXNlIDE4MjpjYXNlIDE5NTpjYXNlIDE4NDpjYXNlIDI2MzpjYXNlIDI5MDpjYXNlIDI4OTpjYXNlIDIxMjpjYXNlIDIwNjpjYXNlIDIwODpjYXNlIDIwOTpjYXNlIDIzNzpjYXNlIDI3MTpjYXNlIDI0NzpjYXNlIDIyMjpjYXNlIDIwMjpjYXNlIDIwMTpjYXNlIDI4MDpjYXNlIDI4MzpjYXNlIDI3OTpjYXNlIDI4ODpjYXNlIDE2ODpjYXNlIDE3NDpjYXNlIDE3NTpjYXNlIDE2NDpjYXNlIDE3OTpjYXNlIDE4MDpjYXNlIDE5MTpjYXNlIDIxMDpjYXNlIDIxODpjYXNlIDI3MzpjYXNlIDI2OTpjYXNlIDI3NTpjYXNlIDI3MDpjYXNlIDE2NzpyZXR1cm4hMDtjYXNlIDI1NDpjYXNlIDI5NjpjYXNlIDIyMTppZighVS5pbmRlbnRNdWx0aUxpbmVPYmplY3RMaXRlcmFsQmVnaW5uaW5nT25CbGFua0xpbmUmJkkmJmQ9PT0yMDUpcmV0dXJuIFkoSSxIKTtpZihqLmtpbmQ9PT0yMjEmJkkmJkgmJmQ9PT0yNzgpe3ZhciBEPUkuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZS5za2lwVHJpdmlhKEkudGV4dCxqLnBvcykpLmxpbmUsZmU9SS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihlLnNraXBUcml2aWEoSS50ZXh0LEgucG9zKSkubGluZTtyZXR1cm4gRCE9PWZlfWlmKGoua2luZCE9PTIyMSlyZXR1cm4hMDticmVhaztjYXNlIDI0MDpjYXNlIDI0MTpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0MjpjYXNlIDIzOTpjYXNlIDI1NjpjYXNlIDIxMzpjYXNlIDE2OTpjYXNlIDE3MTpjYXNlIDE3MjpjYXNlIDE3MzpyZXR1cm4gZCE9PTIzNTtjYXNlIDIxNDpyZXR1cm4gSSYmZD09PTIxMj9ZKEksSCk6ZCE9PTIzNTtjYXNlIDI3MjpyZXR1cm4gZCE9PTI3MztjYXNlIDI2NjpyZXR1cm4gZCE9PTI2N3x8ISFILm5hbWVkQmluZGluZ3MmJkgubmFtZWRCaW5kaW5ncy5raW5kIT09MjY5O2Nhc2UgMjc4OnJldHVybiBkIT09MjgxO2Nhc2UgMjgyOnJldHVybiBkIT09Mjg0O2Nhc2UgMTg4OmNhc2UgMTg3OmlmKGQ9PT0xODJ8fGQ9PT0xODQpcmV0dXJuITE7YnJlYWt9cmV0dXJuIGx9Qi5ub2RlV2lsbEluZGVudENoaWxkPUw7ZnVuY3Rpb24gUChVLGope3N3aXRjaChVKXtjYXNlIDI0NzpjYXNlIDI1MTpjYXNlIDI0NTpjYXNlIDI0NjpyZXR1cm4gai5raW5kIT09MjM1O2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGsoVSxqLEgsSSxsKXtyZXR1cm4gbD09PXZvaWQgMCYmKGw9ITEpLEwoVSxqLEgsSSwhMSkmJiEobCYmSCYmUChILmtpbmQsaikpfUIuc2hvdWxkSW5kZW50Q2hpbGROb2RlPWs7ZnVuY3Rpb24gWShVLGope3ZhciBIPWUuc2tpcFRyaXZpYShVLnRleHQsai5wb3MpLEk9VS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihIKS5saW5lLGw9VS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihqLmVuZCkubGluZTtyZXR1cm4gST09PWx9fSkodz1DLlNtYXJ0SW5kZW50ZXJ8fChDLlNtYXJ0SW5kZW50ZXI9e30pKX0pKGE9ZS5mb3JtYXR0aW5nfHwoZS5mb3JtYXR0aW5nPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyhIKXt2YXIgST1ILl9fcG9zO3JldHVybiBlLkRlYnVnLmFzc2VydCh0eXBlb2YgST09XCJudW1iZXJcIiksSX1mdW5jdGlvbiBCKEgsSSl7ZS5EZWJ1Zy5hc3NlcnQodHlwZW9mIEk9PVwibnVtYmVyXCIpLEguX19wb3M9SX1mdW5jdGlvbiBFKEgpe3ZhciBJPUguX19lbmQ7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KHR5cGVvZiBJPT1cIm51bWJlclwiKSxJfWZ1bmN0aW9uIFEoSCxJKXtlLkRlYnVnLmFzc2VydCh0eXBlb2YgST09XCJudW1iZXJcIiksSC5fX2VuZD1JfXZhciBsZTsoZnVuY3Rpb24oSCl7SFtILkV4Y2x1ZGU9MF09XCJFeGNsdWRlXCIsSFtILkluY2x1ZGVBbGw9MV09XCJJbmNsdWRlQWxsXCIsSFtILkpTRG9jPTJdPVwiSlNEb2NcIixIW0guU3RhcnRMaW5lPTNdPVwiU3RhcnRMaW5lXCJ9KShsZT1DLkxlYWRpbmdUcml2aWFPcHRpb258fChDLkxlYWRpbmdUcml2aWFPcHRpb249e30pKTt2YXIgTjsoZnVuY3Rpb24oSCl7SFtILkV4Y2x1ZGU9MF09XCJFeGNsdWRlXCIsSFtILkV4Y2x1ZGVXaGl0ZXNwYWNlPTFdPVwiRXhjbHVkZVdoaXRlc3BhY2VcIixIW0guSW5jbHVkZT0yXT1cIkluY2x1ZGVcIn0pKE49Qy5UcmFpbGluZ1RyaXZpYU9wdGlvbnx8KEMuVHJhaWxpbmdUcml2aWFPcHRpb249e30pKTtmdW5jdGlvbiBwKEgsSSl7cmV0dXJuIGUuc2tpcFRyaXZpYShILEksITEsITApfWZ1bmN0aW9uIG0oSCxJKXtmb3IodmFyIGw9STtsPEgubGVuZ3RoOyl7dmFyIGQ9SC5jaGFyQ29kZUF0KGwpO2lmKGUuaXNXaGl0ZVNwYWNlU2luZ2xlTGluZShkKSl7bCsrO2NvbnRpbnVlfXJldHVybiBkPT09NDd9cmV0dXJuITF9dmFyIEc9e2xlYWRpbmdUcml2aWFPcHRpb246bGUuRXhjbHVkZSx0cmFpbGluZ1RyaXZpYU9wdGlvbjpOLkV4Y2x1ZGV9LG9lOyhmdW5jdGlvbihIKXtIW0guUmVtb3ZlPTBdPVwiUmVtb3ZlXCIsSFtILlJlcGxhY2VXaXRoU2luZ2xlTm9kZT0xXT1cIlJlcGxhY2VXaXRoU2luZ2xlTm9kZVwiLEhbSC5SZXBsYWNlV2l0aE11bHRpcGxlTm9kZXM9Ml09XCJSZXBsYWNlV2l0aE11bHRpcGxlTm9kZXNcIixIW0guVGV4dD0zXT1cIlRleHRcIn0pKG9lfHwob2U9e30pKTtmdW5jdGlvbiBmKEgsSSxsLGQpe3JldHVybntwb3M6VChILEksZCksZW5kOmIoSCxsLGQpfX1mdW5jdGlvbiBUKEgsSSxsLGQpe3ZhciBELGZlO2Q9PT12b2lkIDAmJihkPSExKTt2YXIgZz1sLmxlYWRpbmdUcml2aWFPcHRpb247aWYoZz09PWxlLkV4Y2x1ZGUpcmV0dXJuIEkuZ2V0U3RhcnQoSCk7aWYoZz09PWxlLlN0YXJ0TGluZSl7dmFyIG5lPUkuZ2V0U3RhcnQoSCksdWU9ZS5nZXRMaW5lU3RhcnRQb3NpdGlvbkZvclBvc2l0aW9uKG5lLEgpO3JldHVybiBlLnJhbmdlQ29udGFpbnNQb3NpdGlvbihJLHVlKT91ZTpuZX1pZihnPT09bGUuSlNEb2Mpe3ZhciBXZT1lLmdldEpTRG9jQ29tbWVudFJhbmdlcyhJLEgudGV4dCk7aWYoV2UhPW51bGwmJldlLmxlbmd0aClyZXR1cm4gZS5nZXRMaW5lU3RhcnRQb3NpdGlvbkZvclBvc2l0aW9uKFdlWzBdLnBvcyxIKX12YXIgRmU9SS5nZXRGdWxsU3RhcnQoKSxaPUkuZ2V0U3RhcnQoSCk7aWYoRmU9PT1aKXJldHVybiBaO3ZhciBCZT1lLmdldExpbmVTdGFydFBvc2l0aW9uRm9yUG9zaXRpb24oRmUsSCksZ2U9ZS5nZXRMaW5lU3RhcnRQb3NpdGlvbkZvclBvc2l0aW9uKFosSCk7aWYoZ2U9PT1CZSlyZXR1cm4gZz09PWxlLkluY2x1ZGVBbGw/RmU6WjtpZihkKXt2YXIgUmU9KChEPWUuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoSC50ZXh0LEZlKSk9PT1udWxsfHxEPT09dm9pZCAwP3ZvaWQgMDpEWzBdKXx8KChmZT1lLmdldFRyYWlsaW5nQ29tbWVudFJhbmdlcyhILnRleHQsRmUpKT09PW51bGx8fGZlPT09dm9pZCAwP3ZvaWQgMDpmZVswXSk7aWYoUmUpcmV0dXJuIGUuc2tpcFRyaXZpYShILnRleHQsUmUuZW5kLCEwLCEwKX12YXIgemU9RmU+MD8xOjAsRWU9ZS5nZXRTdGFydFBvc2l0aW9uT2ZMaW5lKGUuZ2V0TGluZU9mTG9jYWxQb3NpdGlvbihILEJlKSt6ZSxIKTtyZXR1cm4gRWU9cChILnRleHQsRWUpLGUuZ2V0U3RhcnRQb3NpdGlvbk9mTGluZShlLmdldExpbmVPZkxvY2FsUG9zaXRpb24oSCxFZSksSCl9ZnVuY3Rpb24gSyhILEksbCl7dmFyIGQ9SS5lbmQsRD1sLnRyYWlsaW5nVHJpdmlhT3B0aW9uO2lmKEQ9PT1OLkluY2x1ZGUpe3ZhciBmZT1lLmdldFRyYWlsaW5nQ29tbWVudFJhbmdlcyhILnRleHQsZCk7aWYoZmUpZm9yKHZhciBnPWUuZ2V0TGluZU9mTG9jYWxQb3NpdGlvbihILEkuZW5kKSxuZT0wLHVlPWZlO25lPHVlLmxlbmd0aDtuZSsrKXt2YXIgV2U9dWVbbmVdO2lmKFdlLmtpbmQ9PT0yfHxlLmdldExpbmVPZkxvY2FsUG9zaXRpb24oSCxXZS5wb3MpPmcpYnJlYWs7dmFyIEZlPWUuZ2V0TGluZU9mTG9jYWxQb3NpdGlvbihILFdlLmVuZCk7aWYoRmU+ZylyZXR1cm4gZS5za2lwVHJpdmlhKEgudGV4dCxXZS5lbmQsITAsITApfX19ZnVuY3Rpb24gYihILEksbCl7dmFyIGQsRD1JLmVuZCxmZT1sLnRyYWlsaW5nVHJpdmlhT3B0aW9uO2lmKGZlPT09Ti5FeGNsdWRlKXJldHVybiBEO2lmKGZlPT09Ti5FeGNsdWRlV2hpdGVzcGFjZSl7dmFyIGc9ZS5jb25jYXRlbmF0ZShlLmdldFRyYWlsaW5nQ29tbWVudFJhbmdlcyhILnRleHQsRCksZS5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyhILnRleHQsRCkpLG5lPShkPWc9PW51bGw/dm9pZCAwOmdbZy5sZW5ndGgtMV0pPT09bnVsbHx8ZD09PXZvaWQgMD92b2lkIDA6ZC5lbmQ7cmV0dXJuIG5lfHxEfXZhciB1ZT1LKEgsSSxsKTtpZih1ZSlyZXR1cm4gdWU7dmFyIFdlPWUuc2tpcFRyaXZpYShILnRleHQsRCwhMCk7cmV0dXJuIFdlIT09RCYmKGZlPT09Ti5JbmNsdWRlfHxlLmlzTGluZUJyZWFrKEgudGV4dC5jaGFyQ29kZUF0KFdlLTEpKSk/V2U6RH1mdW5jdGlvbiBzZShILEkpe3JldHVybiEhSSYmISFILnBhcmVudCYmKEkua2luZD09PTI3fHxJLmtpbmQ9PT0yNiYmSC5wYXJlbnQua2luZD09PTIwNSl9ZnVuY3Rpb24gSihIKXtyZXR1cm4gZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihIKXx8ZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oSCl9Qy5pc1RoaXNUeXBlQW5ub3RhdGFibGU9Sjt2YXIgaWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBIKEksbCl7dGhpcy5uZXdMaW5lQ2hhcmFjdGVyPUksdGhpcy5mb3JtYXRDb250ZXh0PWwsdGhpcy5jaGFuZ2VzPVtdLHRoaXMubmV3RmlsZXM9W10sdGhpcy5jbGFzc2VzV2l0aE5vZGVzSW5zZXJ0ZWRBdFN0YXJ0PW5ldyBlLk1hcCx0aGlzLmRlbGV0ZWROb2Rlcz1bXX1yZXR1cm4gSC5mcm9tQ29udGV4dD1mdW5jdGlvbihJKXtyZXR1cm4gbmV3IEgoZS5nZXROZXdMaW5lT3JEZWZhdWx0RnJvbUhvc3QoSS5ob3N0LEkuZm9ybWF0Q29udGV4dC5vcHRpb25zKSxJLmZvcm1hdENvbnRleHQpfSxILndpdGg9ZnVuY3Rpb24oSSxsKXt2YXIgZD1ILmZyb21Db250ZXh0KEkpO3JldHVybiBsKGQpLGQuZ2V0Q2hhbmdlcygpfSxILnByb3RvdHlwZS5wdXNoUmF3PWZ1bmN0aW9uKEksbCl7ZS5EZWJ1Zy5hc3NlcnRFcXVhbChJLmZpbGVOYW1lLGwuZmlsZU5hbWUpO2Zvcih2YXIgZD0wLEQ9bC50ZXh0Q2hhbmdlcztkPEQubGVuZ3RoO2QrKyl7dmFyIGZlPURbZF07dGhpcy5jaGFuZ2VzLnB1c2goe2tpbmQ6b2UuVGV4dCxzb3VyY2VGaWxlOkksdGV4dDpmZS5uZXdUZXh0LHJhbmdlOmUuY3JlYXRlVGV4dFJhbmdlRnJvbVNwYW4oZmUuc3Bhbil9KX19LEgucHJvdG90eXBlLmRlbGV0ZVJhbmdlPWZ1bmN0aW9uKEksbCl7dGhpcy5jaGFuZ2VzLnB1c2goe2tpbmQ6b2UuUmVtb3ZlLHNvdXJjZUZpbGU6SSxyYW5nZTpsfSl9LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihJLGwpe3RoaXMuZGVsZXRlZE5vZGVzLnB1c2goe3NvdXJjZUZpbGU6SSxub2RlOmx9KX0sSC5wcm90b3R5cGUuZGVsZXRlTm9kZT1mdW5jdGlvbihJLGwsZCl7ZD09PXZvaWQgMCYmKGQ9e2xlYWRpbmdUcml2aWFPcHRpb246bGUuSW5jbHVkZUFsbH0pLHRoaXMuZGVsZXRlUmFuZ2UoSSxmKEksbCxsLGQpKX0sSC5wcm90b3R5cGUuZGVsZXRlTm9kZXM9ZnVuY3Rpb24oSSxsLGQsRCl7ZD09PXZvaWQgMCYmKGQ9e2xlYWRpbmdUcml2aWFPcHRpb246bGUuSW5jbHVkZUFsbH0pO2Zvcih2YXIgZmU9MCxnPWw7ZmU8Zy5sZW5ndGg7ZmUrKyl7dmFyIG5lPWdbZmVdLHVlPVQoSSxuZSxkLEQpLFdlPWIoSSxuZSxkKTt0aGlzLmRlbGV0ZVJhbmdlKEkse3Bvczp1ZSxlbmQ6V2V9KSxEPSEhSyhJLG5lLGQpfX0sSC5wcm90b3R5cGUuZGVsZXRlTW9kaWZpZXI9ZnVuY3Rpb24oSSxsKXt0aGlzLmRlbGV0ZVJhbmdlKEkse3BvczpsLmdldFN0YXJ0KEkpLGVuZDplLnNraXBUcml2aWEoSS50ZXh0LGwuZW5kLCEwKX0pfSxILnByb3RvdHlwZS5kZWxldGVOb2RlUmFuZ2U9ZnVuY3Rpb24oSSxsLGQsRCl7RD09PXZvaWQgMCYmKEQ9e2xlYWRpbmdUcml2aWFPcHRpb246bGUuSW5jbHVkZUFsbH0pO3ZhciBmZT1UKEksbCxEKSxnPWIoSSxkLEQpO3RoaXMuZGVsZXRlUmFuZ2UoSSx7cG9zOmZlLGVuZDpnfSl9LEgucHJvdG90eXBlLmRlbGV0ZU5vZGVSYW5nZUV4Y2x1ZGluZ0VuZD1mdW5jdGlvbihJLGwsZCxEKXtEPT09dm9pZCAwJiYoRD17bGVhZGluZ1RyaXZpYU9wdGlvbjpsZS5JbmNsdWRlQWxsfSk7dmFyIGZlPVQoSSxsLEQpLGc9ZD09PXZvaWQgMD9JLnRleHQubGVuZ3RoOlQoSSxkLEQpO3RoaXMuZGVsZXRlUmFuZ2UoSSx7cG9zOmZlLGVuZDpnfSl9LEgucHJvdG90eXBlLnJlcGxhY2VSYW5nZT1mdW5jdGlvbihJLGwsZCxEKXtEPT09dm9pZCAwJiYoRD17fSksdGhpcy5jaGFuZ2VzLnB1c2goe2tpbmQ6b2UuUmVwbGFjZVdpdGhTaW5nbGVOb2RlLHNvdXJjZUZpbGU6SSxyYW5nZTpsLG9wdGlvbnM6RCxub2RlOmR9KX0sSC5wcm90b3R5cGUucmVwbGFjZU5vZGU9ZnVuY3Rpb24oSSxsLGQsRCl7RD09PXZvaWQgMCYmKEQ9RyksdGhpcy5yZXBsYWNlUmFuZ2UoSSxmKEksbCxsLEQpLGQsRCl9LEgucHJvdG90eXBlLnJlcGxhY2VOb2RlUmFuZ2U9ZnVuY3Rpb24oSSxsLGQsRCxmZSl7ZmU9PT12b2lkIDAmJihmZT1HKSx0aGlzLnJlcGxhY2VSYW5nZShJLGYoSSxsLGQsZmUpLEQsZmUpfSxILnByb3RvdHlwZS5yZXBsYWNlUmFuZ2VXaXRoTm9kZXM9ZnVuY3Rpb24oSSxsLGQsRCl7RD09PXZvaWQgMCYmKEQ9e30pLHRoaXMuY2hhbmdlcy5wdXNoKHtraW5kOm9lLlJlcGxhY2VXaXRoTXVsdGlwbGVOb2Rlcyxzb3VyY2VGaWxlOkkscmFuZ2U6bCxvcHRpb25zOkQsbm9kZXM6ZH0pfSxILnByb3RvdHlwZS5yZXBsYWNlTm9kZVdpdGhOb2Rlcz1mdW5jdGlvbihJLGwsZCxEKXtEPT09dm9pZCAwJiYoRD1HKSx0aGlzLnJlcGxhY2VSYW5nZVdpdGhOb2RlcyhJLGYoSSxsLGwsRCksZCxEKX0sSC5wcm90b3R5cGUucmVwbGFjZU5vZGVXaXRoVGV4dD1mdW5jdGlvbihJLGwsZCl7dGhpcy5yZXBsYWNlUmFuZ2VXaXRoVGV4dChJLGYoSSxsLGwsRyksZCl9LEgucHJvdG90eXBlLnJlcGxhY2VOb2RlUmFuZ2VXaXRoTm9kZXM9ZnVuY3Rpb24oSSxsLGQsRCxmZSl7ZmU9PT12b2lkIDAmJihmZT1HKSx0aGlzLnJlcGxhY2VSYW5nZVdpdGhOb2RlcyhJLGYoSSxsLGQsZmUpLEQsZmUpfSxILnByb3RvdHlwZS5ub2RlSGFzVHJhaWxpbmdDb21tZW50PWZ1bmN0aW9uKEksbCxkKXtyZXR1cm4gZD09PXZvaWQgMCYmKGQ9RyksISFLKEksbCxkKX0sSC5wcm90b3R5cGUubmV4dENvbW1hVG9rZW49ZnVuY3Rpb24oSSxsKXt2YXIgZD1lLmZpbmROZXh0VG9rZW4obCxsLnBhcmVudCxJKTtyZXR1cm4gZCYmZC5raW5kPT09Mjc/ZDp2b2lkIDB9LEgucHJvdG90eXBlLnJlcGxhY2VQcm9wZXJ0eUFzc2lnbm1lbnQ9ZnVuY3Rpb24oSSxsLGQpe3ZhciBEPXRoaXMubmV4dENvbW1hVG9rZW4oSSxsKT9cIlwiOlwiLFwiK3RoaXMubmV3TGluZUNoYXJhY3Rlcjt0aGlzLnJlcGxhY2VOb2RlKEksbCxkLHtzdWZmaXg6RH0pfSxILnByb3RvdHlwZS5pbnNlcnROb2RlQXQ9ZnVuY3Rpb24oSSxsLGQsRCl7RD09PXZvaWQgMCYmKEQ9e30pLHRoaXMucmVwbGFjZVJhbmdlKEksZS5jcmVhdGVSYW5nZShsKSxkLEQpfSxILnByb3RvdHlwZS5pbnNlcnROb2Rlc0F0PWZ1bmN0aW9uKEksbCxkLEQpe0Q9PT12b2lkIDAmJihEPXt9KSx0aGlzLnJlcGxhY2VSYW5nZVdpdGhOb2RlcyhJLGUuY3JlYXRlUmFuZ2UobCksZCxEKX0sSC5wcm90b3R5cGUuaW5zZXJ0Tm9kZUF0VG9wT2ZGaWxlPWZ1bmN0aW9uKEksbCxkKXt0aGlzLmluc2VydEF0VG9wT2ZGaWxlKEksbCxkKX0sSC5wcm90b3R5cGUuaW5zZXJ0Tm9kZXNBdFRvcE9mRmlsZT1mdW5jdGlvbihJLGwsZCl7dGhpcy5pbnNlcnRBdFRvcE9mRmlsZShJLGwsZCl9LEgucHJvdG90eXBlLmluc2VydEF0VG9wT2ZGaWxlPWZ1bmN0aW9uKEksbCxkKXt2YXIgRD1MKEkpLGZlPXtwcmVmaXg6RD09PTA/dm9pZCAwOnRoaXMubmV3TGluZUNoYXJhY3RlcixzdWZmaXg6KGUuaXNMaW5lQnJlYWsoSS50ZXh0LmNoYXJDb2RlQXQoRCkpP1wiXCI6dGhpcy5uZXdMaW5lQ2hhcmFjdGVyKSsoZD90aGlzLm5ld0xpbmVDaGFyYWN0ZXI6XCJcIil9O2UuaXNBcnJheShsKT90aGlzLmluc2VydE5vZGVzQXQoSSxELGwsZmUpOnRoaXMuaW5zZXJ0Tm9kZUF0KEksRCxsLGZlKX0sSC5wcm90b3R5cGUuaW5zZXJ0Rmlyc3RQYXJhbWV0ZXI9ZnVuY3Rpb24oSSxsLGQpe3ZhciBEPWUuZmlyc3RPclVuZGVmaW5lZChsKTtEP3RoaXMuaW5zZXJ0Tm9kZUJlZm9yZShJLEQsZCk6dGhpcy5pbnNlcnROb2RlQXQoSSxsLnBvcyxkKX0sSC5wcm90b3R5cGUuaW5zZXJ0Tm9kZUJlZm9yZT1mdW5jdGlvbihJLGwsZCxELGZlKXtEPT09dm9pZCAwJiYoRD0hMSksZmU9PT12b2lkIDAmJihmZT17fSksdGhpcy5pbnNlcnROb2RlQXQoSSxUKEksbCxmZSksZCx0aGlzLmdldE9wdGlvbnNGb3JJbnNlcnROb2RlQmVmb3JlKGwsZCxEKSl9LEgucHJvdG90eXBlLmluc2VydE1vZGlmaWVyQXQ9ZnVuY3Rpb24oSSxsLGQsRCl7RD09PXZvaWQgMCYmKEQ9e30pLHRoaXMuaW5zZXJ0Tm9kZUF0KEksbCxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oZCksRCl9LEgucHJvdG90eXBlLmluc2VydE1vZGlmaWVyQmVmb3JlPWZ1bmN0aW9uKEksbCxkKXtyZXR1cm4gdGhpcy5pbnNlcnRNb2RpZmllckF0KEksZC5nZXRTdGFydChJKSxsLHtzdWZmaXg6XCIgXCJ9KX0sSC5wcm90b3R5cGUuaW5zZXJ0Q29tbWVudEJlZm9yZUxpbmU9ZnVuY3Rpb24oSSxsLGQsRCl7dmFyIGZlPWUuZ2V0U3RhcnRQb3NpdGlvbk9mTGluZShsLEkpLGc9ZS5nZXRGaXJzdE5vblNwYWNlQ2hhcmFjdGVyUG9zaXRpb24oSS50ZXh0LGZlKSxuZT1QKEksZyksdWU9ZS5nZXRUb3VjaGluZ1Rva2VuKEksbmU/ZzpkKSxXZT1JLnRleHQuc2xpY2UoZmUsZyksRmU9XCJcIi5jb25jYXQobmU/XCJcIjp0aGlzLm5ld0xpbmVDaGFyYWN0ZXIsXCIvL1wiKS5jb25jYXQoRCkuY29uY2F0KHRoaXMubmV3TGluZUNoYXJhY3RlcikuY29uY2F0KFdlKTt0aGlzLmluc2VydFRleHQoSSx1ZS5nZXRTdGFydChJKSxGZSl9LEgucHJvdG90eXBlLmluc2VydEpzZG9jQ29tbWVudEJlZm9yZT1mdW5jdGlvbihJLGwsZCl7dmFyIEQ9bC5nZXRTdGFydChJKTtpZihsLmpzRG9jKWZvcih2YXIgZmU9MCxnPWwuanNEb2M7ZmU8Zy5sZW5ndGg7ZmUrKyl7dmFyIG5lPWdbZmVdO3RoaXMuZGVsZXRlUmFuZ2UoSSx7cG9zOmUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihuZS5nZXRTdGFydChJKSxJKSxlbmQ6YihJLG5lLHt9KX0pfXZhciB1ZT1lLmdldFByZWNlZGluZ05vblNwYWNlQ2hhcmFjdGVyUG9zaXRpb24oSS50ZXh0LEQtMSksV2U9SS50ZXh0LnNsaWNlKHVlLEQpO3RoaXMuaW5zZXJ0Tm9kZUF0KEksRCxkLHtzdWZmaXg6dGhpcy5uZXdMaW5lQ2hhcmFjdGVyK1dlfSl9LEgucHJvdG90eXBlLmNyZWF0ZUpTRG9jVGV4dD1mdW5jdGlvbihJLGwpe3ZhciBkPWUuZmxhdE1hcChsLmpzRG9jLGZ1bmN0aW9uKGZlKXtyZXR1cm4gZS5pc1N0cmluZyhmZS5jb21tZW50KT9lLmZhY3RvcnkuY3JlYXRlSlNEb2NUZXh0KGZlLmNvbW1lbnQpOmZlLmNvbW1lbnR9KSxEPWUuc2luZ2xlT3JVbmRlZmluZWQobC5qc0RvYyk7cmV0dXJuIEQmJmUucG9zaXRpb25zQXJlT25TYW1lTGluZShELnBvcyxELmVuZCxJKSYmZS5sZW5ndGgoZCk9PT0wP3ZvaWQgMDplLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KGUuaW50ZXJzcGVyc2UoZCxlLmZhY3RvcnkuY3JlYXRlSlNEb2NUZXh0KGBcbmApKSl9LEgucHJvdG90eXBlLnJlcGxhY2VKU0RvY0NvbW1lbnQ9ZnVuY3Rpb24oSSxsLGQpe3RoaXMuaW5zZXJ0SnNkb2NDb21tZW50QmVmb3JlKEksUihsKSxlLmZhY3RvcnkuY3JlYXRlSlNEb2NDb21tZW50KHRoaXMuY3JlYXRlSlNEb2NUZXh0KEksbCksZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShkKSkpfSxILnByb3RvdHlwZS5hZGRKU0RvY1RhZ3M9ZnVuY3Rpb24oSSxsLGQpe3ZhciBEPWUuZmxhdE1hcFRvTXV0YWJsZShsLmpzRG9jLGZ1bmN0aW9uKGcpe3JldHVybiBnLnRhZ3N9KSxmZT1kLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4hRC5zb21lKGZ1bmN0aW9uKG5lLHVlKXt2YXIgV2U9cShuZSxnKTtyZXR1cm4gV2UmJihEW3VlXT1XZSksISFXZX0pfSk7dGhpcy5yZXBsYWNlSlNEb2NDb21tZW50KEksbCxWZShWZShbXSxELCEwKSxmZSwhMCkpfSxILnByb3RvdHlwZS5maWx0ZXJKU0RvY1RhZ3M9ZnVuY3Rpb24oSSxsLGQpe3RoaXMucmVwbGFjZUpTRG9jQ29tbWVudChJLGwsZS5maWx0ZXIoZS5mbGF0TWFwVG9NdXRhYmxlKGwuanNEb2MsZnVuY3Rpb24oRCl7cmV0dXJuIEQudGFnc30pLGQpKX0sSC5wcm90b3R5cGUucmVwbGFjZVJhbmdlV2l0aFRleHQ9ZnVuY3Rpb24oSSxsLGQpe3RoaXMuY2hhbmdlcy5wdXNoKHtraW5kOm9lLlRleHQsc291cmNlRmlsZTpJLHJhbmdlOmwsdGV4dDpkfSl9LEgucHJvdG90eXBlLmluc2VydFRleHQ9ZnVuY3Rpb24oSSxsLGQpe3RoaXMucmVwbGFjZVJhbmdlV2l0aFRleHQoSSxlLmNyZWF0ZVJhbmdlKGwpLGQpfSxILnByb3RvdHlwZS50cnlJbnNlcnRUeXBlQW5ub3RhdGlvbj1mdW5jdGlvbihJLGwsZCl7dmFyIEQsZmU7aWYoZS5pc0Z1bmN0aW9uTGlrZShsKSl7aWYoZmU9ZS5maW5kQ2hpbGRPZktpbmQobCwyMSxJKSwhZmUpe2lmKCFlLmlzQXJyb3dGdW5jdGlvbihsKSlyZXR1cm4hMTtmZT1lLmZpcnN0KGwucGFyYW1ldGVycyl9fWVsc2UgZmU9KEQ9bC5raW5kPT09MjU0P2wuZXhjbGFtYXRpb25Ub2tlbjpsLnF1ZXN0aW9uVG9rZW4pIT09bnVsbCYmRCE9PXZvaWQgMD9EOmwubmFtZTtyZXR1cm4gdGhpcy5pbnNlcnROb2RlQXQoSSxmZS5lbmQsZCx7cHJlZml4OlwiOiBcIn0pLCEwfSxILnByb3RvdHlwZS50cnlJbnNlcnRUaGlzVHlwZUFubm90YXRpb249ZnVuY3Rpb24oSSxsLGQpe3ZhciBEPWUuZmluZENoaWxkT2ZLaW5kKGwsMjAsSSkuZ2V0U3RhcnQoSSkrMSxmZT1sLnBhcmFtZXRlcnMubGVuZ3RoP1wiLCBcIjpcIlwiO3RoaXMuaW5zZXJ0Tm9kZUF0KEksRCxkLHtwcmVmaXg6XCJ0aGlzOiBcIixzdWZmaXg6ZmV9KX0sSC5wcm90b3R5cGUuaW5zZXJ0VHlwZVBhcmFtZXRlcnM9ZnVuY3Rpb24oSSxsLGQpe3ZhciBEPShlLmZpbmRDaGlsZE9mS2luZChsLDIwLEkpfHxlLmZpcnN0KGwucGFyYW1ldGVycykpLmdldFN0YXJ0KEkpO3RoaXMuaW5zZXJ0Tm9kZXNBdChJLEQsZCx7cHJlZml4OlwiPFwiLHN1ZmZpeDpcIj5cIixqb2luZXI6XCIsIFwifSl9LEgucHJvdG90eXBlLmdldE9wdGlvbnNGb3JJbnNlcnROb2RlQmVmb3JlPWZ1bmN0aW9uKEksbCxkKXtyZXR1cm4gZS5pc1N0YXRlbWVudChJKXx8ZS5pc0NsYXNzRWxlbWVudChJKT97c3VmZml4OmQ/dGhpcy5uZXdMaW5lQ2hhcmFjdGVyK3RoaXMubmV3TGluZUNoYXJhY3Rlcjp0aGlzLm5ld0xpbmVDaGFyYWN0ZXJ9OmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKEkpP3tzdWZmaXg6XCIsIFwifTplLmlzUGFyYW1ldGVyKEkpP2UuaXNQYXJhbWV0ZXIobCk/e3N1ZmZpeDpcIiwgXCJ9Ont9OmUuaXNTdHJpbmdMaXRlcmFsKEkpJiZlLmlzSW1wb3J0RGVjbGFyYXRpb24oSS5wYXJlbnQpfHxlLmlzTmFtZWRJbXBvcnRzKEkpP3tzdWZmaXg6XCIsIFwifTplLmlzSW1wb3J0U3BlY2lmaWVyKEkpP3tzdWZmaXg6XCIsXCIrKGQ/dGhpcy5uZXdMaW5lQ2hhcmFjdGVyOlwiIFwiKX06ZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChJKX0sSC5wcm90b3R5cGUuaW5zZXJ0Tm9kZUF0Q29uc3RydWN0b3JTdGFydD1mdW5jdGlvbihJLGwsZCl7dmFyIEQ9ZS5maXJzdE9yVW5kZWZpbmVkKGwuYm9keS5zdGF0ZW1lbnRzKTshRHx8IWwuYm9keS5tdWx0aUxpbmU/dGhpcy5yZXBsYWNlQ29uc3RydWN0b3JCb2R5KEksbCxWZShbZF0sbC5ib2R5LnN0YXRlbWVudHMsITApKTp0aGlzLmluc2VydE5vZGVCZWZvcmUoSSxELGQpfSxILnByb3RvdHlwZS5pbnNlcnROb2RlQXRDb25zdHJ1Y3RvclN0YXJ0QWZ0ZXJTdXBlckNhbGw9ZnVuY3Rpb24oSSxsLGQpe3ZhciBEPWUuZmluZChsLmJvZHkuc3RhdGVtZW50cyxmdW5jdGlvbihmZSl7cmV0dXJuIGUuaXNFeHByZXNzaW9uU3RhdGVtZW50KGZlKSYmZS5pc1N1cGVyQ2FsbChmZS5leHByZXNzaW9uKX0pOyFEfHwhbC5ib2R5Lm11bHRpTGluZT90aGlzLnJlcGxhY2VDb25zdHJ1Y3RvckJvZHkoSSxsLFZlKFZlKFtdLGwuYm9keS5zdGF0ZW1lbnRzLCEwKSxbZF0sITEpKTp0aGlzLmluc2VydE5vZGVBZnRlcihJLEQsZCl9LEgucHJvdG90eXBlLmluc2VydE5vZGVBdENvbnN0cnVjdG9yRW5kPWZ1bmN0aW9uKEksbCxkKXt2YXIgRD1lLmxhc3RPclVuZGVmaW5lZChsLmJvZHkuc3RhdGVtZW50cyk7IUR8fCFsLmJvZHkubXVsdGlMaW5lP3RoaXMucmVwbGFjZUNvbnN0cnVjdG9yQm9keShJLGwsVmUoVmUoW10sbC5ib2R5LnN0YXRlbWVudHMsITApLFtkXSwhMSkpOnRoaXMuaW5zZXJ0Tm9kZUFmdGVyKEksRCxkKX0sSC5wcm90b3R5cGUucmVwbGFjZUNvbnN0cnVjdG9yQm9keT1mdW5jdGlvbihJLGwsZCl7dGhpcy5yZXBsYWNlTm9kZShJLGwuYm9keSxlLmZhY3RvcnkuY3JlYXRlQmxvY2soZCwhMCkpfSxILnByb3RvdHlwZS5pbnNlcnROb2RlQXRFbmRPZlNjb3BlPWZ1bmN0aW9uKEksbCxkKXt2YXIgRD1UKEksbC5nZXRMYXN0VG9rZW4oKSx7fSk7dGhpcy5pbnNlcnROb2RlQXQoSSxELGQse3ByZWZpeDplLmlzTGluZUJyZWFrKEkudGV4dC5jaGFyQ29kZUF0KGwuZ2V0TGFzdFRva2VuKCkucG9zKSk/dGhpcy5uZXdMaW5lQ2hhcmFjdGVyOnRoaXMubmV3TGluZUNoYXJhY3Rlcit0aGlzLm5ld0xpbmVDaGFyYWN0ZXIsc3VmZml4OnRoaXMubmV3TGluZUNoYXJhY3Rlcn0pfSxILnByb3RvdHlwZS5pbnNlcnRNZW1iZXJBdFN0YXJ0PWZ1bmN0aW9uKEksbCxkKXt0aGlzLmluc2VydE5vZGVBdFN0YXJ0V29ya2VyKEksbCxkKX0sSC5wcm90b3R5cGUuaW5zZXJ0Tm9kZUF0T2JqZWN0U3RhcnQ9ZnVuY3Rpb24oSSxsLGQpe3RoaXMuaW5zZXJ0Tm9kZUF0U3RhcnRXb3JrZXIoSSxsLGQpfSxILnByb3RvdHlwZS5pbnNlcnROb2RlQXRTdGFydFdvcmtlcj1mdW5jdGlvbihJLGwsZCl7dmFyIEQsZmU9KEQ9dGhpcy5ndWVzc0luZGVudGF0aW9uRnJvbUV4aXN0aW5nTWVtYmVycyhJLGwpKSE9PW51bGwmJkQhPT12b2lkIDA/RDp0aGlzLmNvbXB1dGVJbmRlbnRhdGlvbkZvck5ld01lbWJlcihJLGwpO3RoaXMuaW5zZXJ0Tm9kZUF0KEksZWUobCkucG9zLGQsdGhpcy5nZXRJbnNlcnROb2RlQXRTdGFydEluc2VydE9wdGlvbnMoSSxsLGZlKSl9LEgucHJvdG90eXBlLmd1ZXNzSW5kZW50YXRpb25Gcm9tRXhpc3RpbmdNZW1iZXJzPWZ1bmN0aW9uKEksbCl7Zm9yKHZhciBkLEQ9bCxmZT0wLGc9ZWUobCk7ZmU8Zy5sZW5ndGg7ZmUrKyl7dmFyIG5lPWdbZmVdO2lmKGUucmFuZ2VTdGFydFBvc2l0aW9uc0FyZU9uU2FtZUxpbmUoRCxuZSxJKSlyZXR1cm47dmFyIHVlPW5lLmdldFN0YXJ0KEkpLFdlPWUuZm9ybWF0dGluZy5TbWFydEluZGVudGVyLmZpbmRGaXJzdE5vbldoaXRlc3BhY2VDb2x1bW4oZS5nZXRMaW5lU3RhcnRQb3NpdGlvbkZvclBvc2l0aW9uKHVlLEkpLHVlLEksdGhpcy5mb3JtYXRDb250ZXh0Lm9wdGlvbnMpO2lmKGQ9PT12b2lkIDApZD1XZTtlbHNlIGlmKFdlIT09ZClyZXR1cm47RD1uZX1yZXR1cm4gZH0sSC5wcm90b3R5cGUuY29tcHV0ZUluZGVudGF0aW9uRm9yTmV3TWVtYmVyPWZ1bmN0aW9uKEksbCl7dmFyIGQsRD1sLmdldFN0YXJ0KEkpO3JldHVybiBlLmZvcm1hdHRpbmcuU21hcnRJbmRlbnRlci5maW5kRmlyc3ROb25XaGl0ZXNwYWNlQ29sdW1uKGUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihELEkpLEQsSSx0aGlzLmZvcm1hdENvbnRleHQub3B0aW9ucykrKChkPXRoaXMuZm9ybWF0Q29udGV4dC5vcHRpb25zLmluZGVudFNpemUpIT09bnVsbCYmZCE9PXZvaWQgMD9kOjQpfSxILnByb3RvdHlwZS5nZXRJbnNlcnROb2RlQXRTdGFydEluc2VydE9wdGlvbnM9ZnVuY3Rpb24oSSxsLGQpe3ZhciBEPWVlKGwpLGZlPUQubGVuZ3RoPT09MCxnPWUuYWRkVG9TZWVuKHRoaXMuY2xhc3Nlc1dpdGhOb2Rlc0luc2VydGVkQXRTdGFydCxlLmdldE5vZGVJZChsKSx7bm9kZTpsLHNvdXJjZUZpbGU6SX0pLG5lPWUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihsKSYmKCFlLmlzSnNvblNvdXJjZUZpbGUoSSl8fCFmZSksdWU9ZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGwpJiZlLmlzSnNvblNvdXJjZUZpbGUoSSkmJmZlJiYhZztyZXR1cm57aW5kZW50YXRpb246ZCxwcmVmaXg6KHVlP1wiLFwiOlwiXCIpK3RoaXMubmV3TGluZUNoYXJhY3RlcixzdWZmaXg6bmU/XCIsXCI6XCJcIn19LEgucHJvdG90eXBlLmluc2VydE5vZGVBZnRlckNvbW1hPWZ1bmN0aW9uKEksbCxkKXt2YXIgRD10aGlzLmluc2VydE5vZGVBZnRlcldvcmtlcihJLHRoaXMubmV4dENvbW1hVG9rZW4oSSxsKXx8bCxkKTt0aGlzLmluc2VydE5vZGVBdChJLEQsZCx0aGlzLmdldEluc2VydE5vZGVBZnRlck9wdGlvbnMoSSxsKSl9LEgucHJvdG90eXBlLmluc2VydE5vZGVBZnRlcj1mdW5jdGlvbihJLGwsZCl7dmFyIEQ9dGhpcy5pbnNlcnROb2RlQWZ0ZXJXb3JrZXIoSSxsLGQpO3RoaXMuaW5zZXJ0Tm9kZUF0KEksRCxkLHRoaXMuZ2V0SW5zZXJ0Tm9kZUFmdGVyT3B0aW9ucyhJLGwpKX0sSC5wcm90b3R5cGUuaW5zZXJ0Tm9kZUF0RW5kT2ZMaXN0PWZ1bmN0aW9uKEksbCxkKXt0aGlzLmluc2VydE5vZGVBdChJLGwuZW5kLGQse3ByZWZpeDpcIiwgXCJ9KX0sSC5wcm90b3R5cGUuaW5zZXJ0Tm9kZXNBZnRlcj1mdW5jdGlvbihJLGwsZCl7dmFyIEQ9dGhpcy5pbnNlcnROb2RlQWZ0ZXJXb3JrZXIoSSxsLGUuZmlyc3QoZCkpO3RoaXMuaW5zZXJ0Tm9kZXNBdChJLEQsZCx0aGlzLmdldEluc2VydE5vZGVBZnRlck9wdGlvbnMoSSxsKSl9LEgucHJvdG90eXBlLmluc2VydE5vZGVBZnRlcldvcmtlcj1mdW5jdGlvbihJLGwsZCl7ayhsLGQpJiZJLnRleHQuY2hhckNvZGVBdChsLmVuZC0xKSE9PTU5JiZ0aGlzLnJlcGxhY2VSYW5nZShJLGUuY3JlYXRlUmFuZ2UobC5lbmQpLGUuZmFjdG9yeS5jcmVhdGVUb2tlbigyNikpO3ZhciBEPWIoSSxsLHt9KTtyZXR1cm4gRH0sSC5wcm90b3R5cGUuZ2V0SW5zZXJ0Tm9kZUFmdGVyT3B0aW9ucz1mdW5jdGlvbihJLGwpe3ZhciBkPXRoaXMuZ2V0SW5zZXJ0Tm9kZUFmdGVyT3B0aW9uc1dvcmtlcihsKTtyZXR1cm4gS2UoS2Uoe30sZCkse3ByZWZpeDpsLmVuZD09PUkuZW5kJiZlLmlzU3RhdGVtZW50KGwpP2QucHJlZml4P2BcbmAuY29uY2F0KGQucHJlZml4KTpgXG5gOmQucHJlZml4fSl9LEgucHJvdG90eXBlLmdldEluc2VydE5vZGVBZnRlck9wdGlvbnNXb3JrZXI9ZnVuY3Rpb24oSSl7c3dpdGNoKEkua2luZCl7Y2FzZSAyNTc6Y2FzZSAyNjE6cmV0dXJue3ByZWZpeDp0aGlzLm5ld0xpbmVDaGFyYWN0ZXIsc3VmZml4OnRoaXMubmV3TGluZUNoYXJhY3Rlcn07Y2FzZSAyNTQ6Y2FzZSAxMDpjYXNlIDc5OnJldHVybntwcmVmaXg6XCIsIFwifTtjYXNlIDI5NjpyZXR1cm57c3VmZml4OlwiLFwiK3RoaXMubmV3TGluZUNoYXJhY3Rlcn07Y2FzZSA5MzpyZXR1cm57cHJlZml4OlwiIFwifTtjYXNlIDE2NDpyZXR1cm57fTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydChlLmlzU3RhdGVtZW50KEkpfHxlLmlzQ2xhc3NPclR5cGVFbGVtZW50KEkpKSx7c3VmZml4OnRoaXMubmV3TGluZUNoYXJhY3Rlcn19fSxILnByb3RvdHlwZS5pbnNlcnROYW1lPWZ1bmN0aW9uKEksbCxkKXtpZihlLkRlYnVnLmFzc2VydCghbC5uYW1lKSxsLmtpbmQ9PT0yMTQpe3ZhciBEPWUuZmluZENoaWxkT2ZLaW5kKGwsMzgsSSksZmU9ZS5maW5kQ2hpbGRPZktpbmQobCwyMCxJKTtmZT8odGhpcy5pbnNlcnROb2Rlc0F0KEksZmUuZ2V0U3RhcnQoSSksW2UuZmFjdG9yeS5jcmVhdGVUb2tlbig5OCksZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoZCldLHtqb2luZXI6XCIgXCJ9KSxVKHRoaXMsSSxEKSk6KHRoaXMuaW5zZXJ0VGV4dChJLGUuZmlyc3QobC5wYXJhbWV0ZXJzKS5nZXRTdGFydChJKSxcImZ1bmN0aW9uIFwiLmNvbmNhdChkLFwiKFwiKSksdGhpcy5yZXBsYWNlUmFuZ2UoSSxELGUuZmFjdG9yeS5jcmVhdGVUb2tlbigyMSkpKSxsLmJvZHkua2luZCE9PTIzNSYmKHRoaXMuaW5zZXJ0Tm9kZXNBdChJLGwuYm9keS5nZXRTdGFydChJKSxbZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDE4KSxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMTA1KV0se2pvaW5lcjpcIiBcIixzdWZmaXg6XCIgXCJ9KSx0aGlzLmluc2VydE5vZGVzQXQoSSxsLmJvZHkuZW5kLFtlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjYpLGUuZmFjdG9yeS5jcmVhdGVUb2tlbigxOSldLHtqb2luZXI6XCIgXCJ9KSl9ZWxzZXt2YXIgZz1lLmZpbmRDaGlsZE9mS2luZChsLGwua2luZD09PTIxMz85ODo4NCxJKS5lbmQ7dGhpcy5pbnNlcnROb2RlQXQoSSxnLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGQpLHtwcmVmaXg6XCIgXCJ9KX19LEgucHJvdG90eXBlLmluc2VydEV4cG9ydE1vZGlmaWVyPWZ1bmN0aW9uKEksbCl7dGhpcy5pbnNlcnRUZXh0KEksbC5nZXRTdGFydChJKSxcImV4cG9ydCBcIil9LEgucHJvdG90eXBlLmluc2VydEltcG9ydFNwZWNpZmllckF0SW5kZXg9ZnVuY3Rpb24oSSxsLGQsRCl7dmFyIGZlPWQuZWxlbWVudHNbRC0xXTtmZT90aGlzLmluc2VydE5vZGVJbkxpc3RBZnRlcihJLGZlLGwpOnRoaXMuaW5zZXJ0Tm9kZUJlZm9yZShJLGQuZWxlbWVudHNbMF0sbCwhZS5wb3NpdGlvbnNBcmVPblNhbWVMaW5lKGQuZWxlbWVudHNbMF0uZ2V0U3RhcnQoKSxkLnBhcmVudC5wYXJlbnQuZ2V0U3RhcnQoKSxJKSl9LEgucHJvdG90eXBlLmluc2VydE5vZGVJbkxpc3RBZnRlcj1mdW5jdGlvbihJLGwsZCxEKXtpZihEPT09dm9pZCAwJiYoRD1lLmZvcm1hdHRpbmcuU21hcnRJbmRlbnRlci5nZXRDb250YWluaW5nTGlzdChsLEkpKSwhRCl7ZS5EZWJ1Zy5mYWlsKFwibm9kZSBpcyBub3QgYSBsaXN0IGVsZW1lbnRcIik7cmV0dXJufXZhciBmZT1lLmluZGV4T2ZOb2RlKEQsbCk7aWYoIShmZTwwKSl7dmFyIGc9bC5nZXRFbmQoKTtpZihmZSE9PUQubGVuZ3RoLTEpe3ZhciBuZT1lLmdldFRva2VuQXRQb3NpdGlvbihJLGwuZW5kKTtpZihuZSYmc2UobCxuZSkpe3ZhciB1ZT1EW2ZlKzFdLFdlPXAoSS50ZXh0LHVlLmdldEZ1bGxTdGFydCgpKSxGZT1cIlwiLmNvbmNhdChlLnRva2VuVG9TdHJpbmcobmUua2luZCkpLmNvbmNhdChJLnRleHQuc3Vic3RyaW5nKG5lLmVuZCxXZSkpO3RoaXMuaW5zZXJ0Tm9kZXNBdChJLFdlLFtkXSx7c3VmZml4OkZlfSl9fWVsc2V7dmFyIFo9bC5nZXRTdGFydChJKSxCZT1lLmdldExpbmVTdGFydFBvc2l0aW9uRm9yUG9zaXRpb24oWixJKSxnZT12b2lkIDAsUmU9ITE7aWYoRC5sZW5ndGg9PT0xKWdlPTI3O2Vsc2V7dmFyIHplPWUuZmluZFByZWNlZGluZ1Rva2VuKGwucG9zLEkpO2dlPXNlKGwsemUpP3plLmtpbmQ6Mjc7dmFyIEVlPWUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihEW2ZlLTFdLmdldFN0YXJ0KEkpLEkpO1JlPUVlIT09QmV9aWYobShJLnRleHQsbC5lbmQpJiYoUmU9ITApLFJlKXt0aGlzLnJlcGxhY2VSYW5nZShJLGUuY3JlYXRlUmFuZ2UoZyksZS5mYWN0b3J5LmNyZWF0ZVRva2VuKGdlKSk7Zm9yKHZhciBIZT1lLmZvcm1hdHRpbmcuU21hcnRJbmRlbnRlci5maW5kRmlyc3ROb25XaGl0ZXNwYWNlQ29sdW1uKEJlLFosSSx0aGlzLmZvcm1hdENvbnRleHQub3B0aW9ucykscnI9ZS5za2lwVHJpdmlhKEkudGV4dCxnLCEwLCExKTtyciE9PWcmJmUuaXNMaW5lQnJlYWsoSS50ZXh0LmNoYXJDb2RlQXQocnItMSkpOylyci0tO3RoaXMucmVwbGFjZVJhbmdlKEksZS5jcmVhdGVSYW5nZShyciksZCx7aW5kZW50YXRpb246SGUscHJlZml4OnRoaXMubmV3TGluZUNoYXJhY3Rlcn0pfWVsc2UgdGhpcy5yZXBsYWNlUmFuZ2UoSSxlLmNyZWF0ZVJhbmdlKGcpLGQse3ByZWZpeDpcIlwiLmNvbmNhdChlLnRva2VuVG9TdHJpbmcoZ2UpLFwiIFwiKX0pfX19LEgucHJvdG90eXBlLnBhcmVudGhlc2l6ZUV4cHJlc3Npb249ZnVuY3Rpb24oSSxsKXt0aGlzLnJlcGxhY2VSYW5nZShJLGUucmFuZ2VPZk5vZGUobCksZS5mYWN0b3J5LmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGwpKX0sSC5wcm90b3R5cGUuZmluaXNoQ2xhc3Nlc1dpdGhOb2Rlc0luc2VydGVkQXRTdGFydD1mdW5jdGlvbigpe3ZhciBJPXRoaXM7dGhpcy5jbGFzc2VzV2l0aE5vZGVzSW5zZXJ0ZWRBdFN0YXJ0LmZvckVhY2goZnVuY3Rpb24obCl7dmFyIGQ9bC5ub2RlLEQ9bC5zb3VyY2VGaWxlLGZlPXZlKGQsRCksZz1mZVswXSxuZT1mZVsxXTtpZihnIT09dm9pZCAwJiZuZSE9PXZvaWQgMCl7dmFyIHVlPWVlKGQpLmxlbmd0aD09PTAsV2U9ZS5wb3NpdGlvbnNBcmVPblNhbWVMaW5lKGcsbmUsRCk7dWUmJldlJiZnIT09bmUtMSYmSS5kZWxldGVSYW5nZShELGUuY3JlYXRlUmFuZ2UoZyxuZS0xKSksV2UmJkkuaW5zZXJ0VGV4dChELG5lLTEsSS5uZXdMaW5lQ2hhcmFjdGVyKX19KX0sSC5wcm90b3R5cGUuZmluaXNoRGVsZXRlRGVjbGFyYXRpb25zPWZ1bmN0aW9uKCl7Zm9yKHZhciBJPXRoaXMsbD1uZXcgZS5TZXQsZD1mdW5jdGlvbihGZSxaKXtELmRlbGV0ZWROb2Rlcy5zb21lKGZ1bmN0aW9uKEJlKXtyZXR1cm4gQmUuc291cmNlRmlsZT09PUZlJiZlLnJhbmdlQ29udGFpbnNSYW5nZUV4Y2x1c2l2ZShCZS5ub2RlLFopfSl8fChlLmlzQXJyYXkoWik/RC5kZWxldGVSYW5nZShGZSxlLnJhbmdlT2ZUeXBlUGFyYW1ldGVycyhGZSxaKSk6WS5kZWxldGVEZWNsYXJhdGlvbihELGwsRmUsWikpfSxEPXRoaXMsZmU9MCxnPXRoaXMuZGVsZXRlZE5vZGVzO2ZlPGcubGVuZ3RoO2ZlKyspe3ZhciBuZT1nW2ZlXSx1ZT1uZS5zb3VyY2VGaWxlLFdlPW5lLm5vZGU7ZCh1ZSxXZSl9bC5mb3JFYWNoKGZ1bmN0aW9uKEZlKXt2YXIgWj1GZS5nZXRTb3VyY2VGaWxlKCksQmU9ZS5mb3JtYXR0aW5nLlNtYXJ0SW5kZW50ZXIuZ2V0Q29udGFpbmluZ0xpc3QoRmUsWik7aWYoRmU9PT1lLmxhc3QoQmUpKXt2YXIgZ2U9ZS5maW5kTGFzdEluZGV4KEJlLGZ1bmN0aW9uKFJlKXtyZXR1cm4hbC5oYXMoUmUpfSxCZS5sZW5ndGgtMik7Z2UhPT0tMSYmSS5kZWxldGVSYW5nZShaLHtwb3M6QmVbZ2VdLmVuZCxlbmQ6TyhaLEJlW2dlKzFdKX0pfX0pfSxILnByb3RvdHlwZS5nZXRDaGFuZ2VzPWZ1bmN0aW9uKEkpe3RoaXMuZmluaXNoRGVsZXRlRGVjbGFyYXRpb25zKCksdGhpcy5maW5pc2hDbGFzc2VzV2l0aE5vZGVzSW5zZXJ0ZWRBdFN0YXJ0KCk7Zm9yKHZhciBsPUYuZ2V0VGV4dENoYW5nZXNGcm9tQ2hhbmdlcyh0aGlzLmNoYW5nZXMsdGhpcy5uZXdMaW5lQ2hhcmFjdGVyLHRoaXMuZm9ybWF0Q29udGV4dCxJKSxkPTAsRD10aGlzLm5ld0ZpbGVzO2Q8RC5sZW5ndGg7ZCsrKXt2YXIgZmU9RFtkXSxnPWZlLm9sZEZpbGUsbmU9ZmUuZmlsZU5hbWUsdWU9ZmUuc3RhdGVtZW50cztsLnB1c2goRi5uZXdGaWxlQ2hhbmdlcyhnLG5lLHVlLHRoaXMubmV3TGluZUNoYXJhY3Rlcix0aGlzLmZvcm1hdENvbnRleHQpKX1yZXR1cm4gbH0sSC5wcm90b3R5cGUuY3JlYXRlTmV3RmlsZT1mdW5jdGlvbihJLGwsZCl7dGhpcy5uZXdGaWxlcy5wdXNoKHtvbGRGaWxlOkksZmlsZU5hbWU6bCxzdGF0ZW1lbnRzOmR9KX0sSH0oKTtDLkNoYW5nZVRyYWNrZXI9aWU7ZnVuY3Rpb24gUihIKXtpZihILmtpbmQhPT0yMTQpcmV0dXJuIEg7dmFyIEk9SC5wYXJlbnQua2luZD09PTE2Nz9ILnBhcmVudDpILnBhcmVudC5wYXJlbnQ7cmV0dXJuIEkuanNEb2M9SC5qc0RvYyxJLmpzRG9jQ2FjaGU9SC5qc0RvY0NhY2hlLEl9ZnVuY3Rpb24gcShILEkpe2lmKEgua2luZD09PUkua2luZClzd2l0Y2goSC5raW5kKXtjYXNlIDM0MDp7dmFyIGw9SCxkPUk7cmV0dXJuIGUuaXNJZGVudGlmaWVyKGwubmFtZSkmJmUuaXNJZGVudGlmaWVyKGQubmFtZSkmJmwubmFtZS5lc2NhcGVkVGV4dD09PWQubmFtZS5lc2NhcGVkVGV4dD9lLmZhY3RvcnkuY3JlYXRlSlNEb2NQYXJhbWV0ZXJUYWcodm9pZCAwLGQubmFtZSwhMSxkLnR5cGVFeHByZXNzaW9uLGQuaXNOYW1lRmlyc3QsbC5jb21tZW50KTp2b2lkIDB9Y2FzZSAzNDE6cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVKU0RvY1JldHVyblRhZyh2b2lkIDAsSS50eXBlRXhwcmVzc2lvbixILmNvbW1lbnQpO2Nhc2UgMzQzOnJldHVybiBlLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlVGFnKHZvaWQgMCxJLnR5cGVFeHByZXNzaW9uLEguY29tbWVudCl9fWZ1bmN0aW9uIE8oSCxJKXtyZXR1cm4gZS5za2lwVHJpdmlhKEgudGV4dCxUKEgsSSx7bGVhZGluZ1RyaXZpYU9wdGlvbjpsZS5JbmNsdWRlQWxsfSksITEsITApfWZ1bmN0aW9uIHZlKEgsSSl7dmFyIGw9ZS5maW5kQ2hpbGRPZktpbmQoSCwxOCxJKSxkPWUuZmluZENoaWxkT2ZLaW5kKEgsMTksSSk7cmV0dXJuW2w9PW51bGw/dm9pZCAwOmwuZW5kLGQ9PW51bGw/dm9pZCAwOmQuZW5kXX1mdW5jdGlvbiBlZShIKXtyZXR1cm4gZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKEgpP0gucHJvcGVydGllczpILm1lbWJlcnN9ZnVuY3Rpb24gaGUoSCxJLGwsZCl7cmV0dXJuIEYubmV3RmlsZUNoYW5nZXNXb3JrZXIodm9pZCAwLEksSCxsLGQpfUMuZ2V0TmV3RmlsZVRleHQ9aGU7dmFyIEY7KGZ1bmN0aW9uKEgpe2Z1bmN0aW9uIEkobmUsdWUsV2UsRmUpe3JldHVybiBlLm1hcERlZmluZWQoZS5ncm91cChuZSxmdW5jdGlvbihaKXtyZXR1cm4gWi5zb3VyY2VGaWxlLnBhdGh9KSxmdW5jdGlvbihaKXtmb3IodmFyIEJlPVpbMF0uc291cmNlRmlsZSxnZT1lLnN0YWJsZVNvcnQoWixmdW5jdGlvbihIZSxycil7cmV0dXJuIEhlLnJhbmdlLnBvcy1yci5yYW5nZS5wb3N8fEhlLnJhbmdlLmVuZC1yci5yYW5nZS5lbmR9KSxSZT1mdW5jdGlvbihIZSl7ZS5EZWJ1Zy5hc3NlcnQoZ2VbSGVdLnJhbmdlLmVuZDw9Z2VbSGUrMV0ucmFuZ2UucG9zLFwiQ2hhbmdlcyBvdmVybGFwXCIsZnVuY3Rpb24oKXtyZXR1cm5cIlwiLmNvbmNhdChKU09OLnN0cmluZ2lmeShnZVtIZV0ucmFuZ2UpLFwiIGFuZCBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KGdlW0hlKzFdLnJhbmdlKSl9KX0semU9MDt6ZTxnZS5sZW5ndGgtMTt6ZSsrKVJlKHplKTt2YXIgRWU9ZS5tYXBEZWZpbmVkKGdlLGZ1bmN0aW9uKEhlKXt2YXIgcnI9ZS5jcmVhdGVUZXh0U3BhbkZyb21SYW5nZShIZS5yYW5nZSksSWU9RChIZSxCZSx1ZSxXZSxGZSk7aWYoIShyci5sZW5ndGg9PT1JZS5sZW5ndGgmJmUuc3RyaW5nQ29udGFpbnNBdChCZS50ZXh0LEllLHJyLnN0YXJ0KSkpcmV0dXJuIGUuY3JlYXRlVGV4dENoYW5nZShycixJZSl9KTtyZXR1cm4gRWUubGVuZ3RoPjA/e2ZpbGVOYW1lOkJlLmZpbGVOYW1lLHRleHRDaGFuZ2VzOkVlfTp2b2lkIDB9KX1ILmdldFRleHRDaGFuZ2VzRnJvbUNoYW5nZXM9STtmdW5jdGlvbiBsKG5lLHVlLFdlLEZlLFope3ZhciBCZT1kKG5lLGUuZ2V0U2NyaXB0S2luZEZyb21GaWxlTmFtZSh1ZSksV2UsRmUsWik7cmV0dXJue2ZpbGVOYW1lOnVlLHRleHRDaGFuZ2VzOltlLmNyZWF0ZVRleHRDaGFuZ2UoZS5jcmVhdGVUZXh0U3BhbigwLDApLEJlKV0saXNOZXdGaWxlOiEwfX1ILm5ld0ZpbGVDaGFuZ2VzPWw7ZnVuY3Rpb24gZChuZSx1ZSxXZSxGZSxaKXt2YXIgQmU9V2UubWFwKGZ1bmN0aW9uKHplKXtyZXR1cm4gemU9PT00P1wiXCI6Zyh6ZSxuZSxGZSkudGV4dH0pLmpvaW4oRmUpLGdlPWUuY3JlYXRlU291cmNlRmlsZShcImFueSBmaWxlIG5hbWVcIixCZSw5OSwhMCx1ZSksUmU9ZS5mb3JtYXR0aW5nLmZvcm1hdERvY3VtZW50KGdlLFopO3JldHVybiB4KEJlLFJlKStGZX1ILm5ld0ZpbGVDaGFuZ2VzV29ya2VyPWQ7ZnVuY3Rpb24gRChuZSx1ZSxXZSxGZSxaKXt2YXIgQmU7aWYobmUua2luZD09PW9lLlJlbW92ZSlyZXR1cm5cIlwiO2lmKG5lLmtpbmQ9PT1vZS5UZXh0KXJldHVybiBuZS50ZXh0O3ZhciBnZT1uZS5vcHRpb25zLFJlPWdlPT09dm9pZCAwP3t9OmdlLHplPW5lLnJhbmdlLnBvcyxFZT1mdW5jdGlvbihJZSl7cmV0dXJuIGZlKEllLHVlLHplLFJlLFdlLEZlLFopfSxIZT1uZS5raW5kPT09b2UuUmVwbGFjZVdpdGhNdWx0aXBsZU5vZGVzP25lLm5vZGVzLm1hcChmdW5jdGlvbihJZSl7cmV0dXJuIGUucmVtb3ZlU3VmZml4KEVlKEllKSxXZSl9KS5qb2luKCgoQmU9bmUub3B0aW9ucyk9PT1udWxsfHxCZT09PXZvaWQgMD92b2lkIDA6QmUuam9pbmVyKXx8V2UpOkVlKG5lLm5vZGUpLHJyPVJlLmluZGVudGF0aW9uIT09dm9pZCAwfHxlLmdldExpbmVTdGFydFBvc2l0aW9uRm9yUG9zaXRpb24oemUsdWUpPT09emU/SGU6SGUucmVwbGFjZSgvXlxccysvLFwiXCIpO3JldHVybihSZS5wcmVmaXh8fFwiXCIpK3JyKyghUmUuc3VmZml4fHxlLmVuZHNXaXRoKHJyLFJlLnN1ZmZpeCk/XCJcIjpSZS5zdWZmaXgpfWZ1bmN0aW9uIGZlKG5lLHVlLFdlLEZlLFosQmUsZ2Upe3ZhciBSZT1GZS5pbmRlbnRhdGlvbix6ZT1GZS5wcmVmaXgsRWU9RmUuZGVsdGEsSGU9ZyhuZSx1ZSxaKSxycj1IZS5ub2RlLEllPUhlLnRleHQ7Z2UmJmdlKHJyLEllKTt2YXIgX2U9ZS5nZXRGb3JtYXRDb2RlU2V0dGluZ3NGb3JXcml0aW5nKEJlLHVlKSx3ZT1SZSE9PXZvaWQgMD9SZTplLmZvcm1hdHRpbmcuU21hcnRJbmRlbnRlci5nZXRJbmRlbnRhdGlvbihXZSx1ZSxfZSx6ZT09PVp8fGUuZ2V0TGluZVN0YXJ0UG9zaXRpb25Gb3JQb3NpdGlvbihXZSx1ZSk9PT1XZSk7RWU9PT12b2lkIDAmJihFZT1lLmZvcm1hdHRpbmcuU21hcnRJbmRlbnRlci5zaG91bGRJbmRlbnRDaGlsZE5vZGUoX2UsbmUpJiZfZS5pbmRlbnRTaXplfHwwKTt2YXIgZGU9e3RleHQ6SWUsZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb246ZnVuY3Rpb24oQWUpe3JldHVybiBlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHRoaXMsQWUpfX0seWU9ZS5mb3JtYXR0aW5nLmZvcm1hdE5vZGVHaXZlbkluZGVudGF0aW9uKHJyLGRlLHVlLmxhbmd1YWdlVmFyaWFudCx3ZSxFZSxLZShLZSh7fSxCZSkse29wdGlvbnM6X2V9KSk7cmV0dXJuIHgoSWUseWUpfWZ1bmN0aW9uIGcobmUsdWUsV2Upe3ZhciBGZT1WKFdlKSxaPWUuZ2V0TmV3TGluZUtpbmQoV2UpO3JldHVybiBlLmNyZWF0ZVByaW50ZXIoe25ld0xpbmU6WixuZXZlckFzY2lpRXNjYXBlOiEwLHByZXNlcnZlU291cmNlTmV3bGluZXM6ITAsdGVybWluYXRlVW50ZXJtaW5hdGVkTGl0ZXJhbHM6ITB9LEZlKS53cml0ZU5vZGUoNCxuZSx1ZSxGZSkse3RleHQ6RmUuZ2V0VGV4dCgpLG5vZGU6QShuZSl9fUguZ2V0Tm9uZm9ybWF0dGVkVGV4dD1nfSkoRnx8KEY9e30pKTtmdW5jdGlvbiB4KEgsSSl7Zm9yKHZhciBsPUkubGVuZ3RoLTE7bD49MDtsLS0pe3ZhciBkPUlbbF0sRD1kLnNwYW4sZmU9ZC5uZXdUZXh0O0g9XCJcIi5jb25jYXQoSC5zdWJzdHJpbmcoMCxELnN0YXJ0KSkuY29uY2F0KGZlKS5jb25jYXQoSC5zdWJzdHJpbmcoZS50ZXh0U3BhbkVuZChEKSkpfXJldHVybiBIfUMuYXBwbHlDaGFuZ2VzPXg7ZnVuY3Rpb24gWChIKXtyZXR1cm4gZS5za2lwVHJpdmlhKEgsMCk9PT1ILmxlbmd0aH12YXIgJD1LZShLZSh7fSxlLm51bGxUcmFuc2Zvcm1hdGlvbkNvbnRleHQpLHtmYWN0b3J5OmUuY3JlYXRlTm9kZUZhY3RvcnkoZS5udWxsVHJhbnNmb3JtYXRpb25Db250ZXh0LmZhY3RvcnkuZmxhZ3N8MSxlLm51bGxUcmFuc2Zvcm1hdGlvbkNvbnRleHQuZmFjdG9yeS5iYXNlRmFjdG9yeSl9KTtmdW5jdGlvbiBBKEgpe3ZhciBJPWUudmlzaXRFYWNoQ2hpbGQoSCxBLCQseSxBKSxsPWUubm9kZUlzU3ludGhlc2l6ZWQoSSk/STpPYmplY3QuY3JlYXRlKEkpO3JldHVybiBlLnNldFRleHRSYW5nZVBvc0VuZChsLHcoSCksRShIKSksbH1DLmFzc2lnblBvc2l0aW9uc1RvTm9kZT1BO2Z1bmN0aW9uIHkoSCxJLGwsZCxEKXt2YXIgZmU9ZS52aXNpdE5vZGVzKEgsSSxsLGQsRCk7aWYoIWZlKXJldHVybiBmZTt2YXIgZz1mZT09PUg/ZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShmZS5zbGljZSgwKSk6ZmU7cmV0dXJuIGUuc2V0VGV4dFJhbmdlUG9zRW5kKGcsdyhIKSxFKEgpKSxnfWZ1bmN0aW9uIFYoSCl7dmFyIEk9MCxsPWUuY3JlYXRlVGV4dFdyaXRlcihIKSxkPWZ1bmN0aW9uKGxyKXtsciYmQihscixJKX0sRD1mdW5jdGlvbihscil7bHImJlEobHIsSSl9LGZlPWZ1bmN0aW9uKGxyKXtsciYmQihscixJKX0sZz1mdW5jdGlvbihscil7bHImJlEobHIsSSl9LG5lPWZ1bmN0aW9uKGxyKXtsciYmQihscixJKX0sdWU9ZnVuY3Rpb24obHIpe2xyJiZRKGxyLEkpfTtmdW5jdGlvbiBXZShscixiZSl7aWYoYmV8fCFYKGxyKSl7ST1sLmdldFRleHRQb3MoKTtmb3IodmFyIEdlPTA7ZS5pc1doaXRlU3BhY2VMaWtlKGxyLmNoYXJDb2RlQXQobHIubGVuZ3RoLUdlLTEpKTspR2UrKztJLT1HZX19ZnVuY3Rpb24gRmUobHIpe2wud3JpdGUobHIpLFdlKGxyLCExKX1mdW5jdGlvbiBaKGxyKXtsLndyaXRlQ29tbWVudChscil9ZnVuY3Rpb24gQmUobHIpe2wud3JpdGVLZXl3b3JkKGxyKSxXZShsciwhMSl9ZnVuY3Rpb24gZ2UobHIpe2wud3JpdGVPcGVyYXRvcihsciksV2UobHIsITEpfWZ1bmN0aW9uIFJlKGxyKXtsLndyaXRlUHVuY3R1YXRpb24obHIpLFdlKGxyLCExKX1mdW5jdGlvbiB6ZShscil7bC53cml0ZVRyYWlsaW5nU2VtaWNvbG9uKGxyKSxXZShsciwhMSl9ZnVuY3Rpb24gRWUobHIpe2wud3JpdGVQYXJhbWV0ZXIobHIpLFdlKGxyLCExKX1mdW5jdGlvbiBIZShscil7bC53cml0ZVByb3BlcnR5KGxyKSxXZShsciwhMSl9ZnVuY3Rpb24gcnIobHIpe2wud3JpdGVTcGFjZShsciksV2UobHIsITEpfWZ1bmN0aW9uIEllKGxyKXtsLndyaXRlU3RyaW5nTGl0ZXJhbChsciksV2UobHIsITEpfWZ1bmN0aW9uIF9lKGxyLGJlKXtsLndyaXRlU3ltYm9sKGxyLGJlKSxXZShsciwhMSl9ZnVuY3Rpb24gd2UobHIpe2wud3JpdGVMaW5lKGxyKX1mdW5jdGlvbiBkZSgpe2wuaW5jcmVhc2VJbmRlbnQoKX1mdW5jdGlvbiB5ZSgpe2wuZGVjcmVhc2VJbmRlbnQoKX1mdW5jdGlvbiBBZSgpe3JldHVybiBsLmdldFRleHQoKX1mdW5jdGlvbiBlcihscil7bC5yYXdXcml0ZShsciksV2UobHIsITEpfWZ1bmN0aW9uIGlyKGxyKXtsLndyaXRlTGl0ZXJhbChsciksV2UobHIsITApfWZ1bmN0aW9uIENyKCl7cmV0dXJuIGwuZ2V0VGV4dFBvcygpfWZ1bmN0aW9uIFllKCl7cmV0dXJuIGwuZ2V0TGluZSgpfWZ1bmN0aW9uIEJyKCl7cmV0dXJuIGwuZ2V0Q29sdW1uKCl9ZnVuY3Rpb24gRXIoKXtyZXR1cm4gbC5nZXRJbmRlbnQoKX1mdW5jdGlvbiBOZSgpe3JldHVybiBsLmlzQXRTdGFydE9mTGluZSgpfWZ1bmN0aW9uIG4oKXtsLmNsZWFyKCksST0wfXJldHVybntvbkJlZm9yZUVtaXROb2RlOmQsb25BZnRlckVtaXROb2RlOkQsb25CZWZvcmVFbWl0Tm9kZUFycmF5OmZlLG9uQWZ0ZXJFbWl0Tm9kZUFycmF5Omcsb25CZWZvcmVFbWl0VG9rZW46bmUsb25BZnRlckVtaXRUb2tlbjp1ZSx3cml0ZTpGZSx3cml0ZUNvbW1lbnQ6Wix3cml0ZUtleXdvcmQ6QmUsd3JpdGVPcGVyYXRvcjpnZSx3cml0ZVB1bmN0dWF0aW9uOlJlLHdyaXRlVHJhaWxpbmdTZW1pY29sb246emUsd3JpdGVQYXJhbWV0ZXI6RWUsd3JpdGVQcm9wZXJ0eTpIZSx3cml0ZVNwYWNlOnJyLHdyaXRlU3RyaW5nTGl0ZXJhbDpJZSx3cml0ZVN5bWJvbDpfZSx3cml0ZUxpbmU6d2UsaW5jcmVhc2VJbmRlbnQ6ZGUsZGVjcmVhc2VJbmRlbnQ6eWUsZ2V0VGV4dDpBZSxyYXdXcml0ZTplcix3cml0ZUxpdGVyYWw6aXIsZ2V0VGV4dFBvczpDcixnZXRMaW5lOlllLGdldENvbHVtbjpCcixnZXRJbmRlbnQ6RXIsaXNBdFN0YXJ0T2ZMaW5lOk5lLGhhc1RyYWlsaW5nQ29tbWVudDpmdW5jdGlvbigpe3JldHVybiBsLmhhc1RyYWlsaW5nQ29tbWVudCgpfSxoYXNUcmFpbGluZ1doaXRlc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbC5oYXNUcmFpbGluZ1doaXRlc3BhY2UoKX0sY2xlYXI6bn19Qy5jcmVhdGVXcml0ZXI9VjtmdW5jdGlvbiBMKEgpe2Zvcih2YXIgSSxsPTAsZD1ILnN0YXRlbWVudHM7bDxkLmxlbmd0aDtsKyspe3ZhciBEPWRbbF07aWYoZS5pc1Byb2xvZ3VlRGlyZWN0aXZlKEQpKUk9RDtlbHNlIGJyZWFrfXZhciBmZT0wLGc9SC50ZXh0O2lmKEkpcmV0dXJuIGZlPUkuZW5kLEhlKCksZmU7dmFyIG5lPWUuZ2V0U2hlYmFuZyhnKTtuZSE9PXZvaWQgMCYmKGZlPW5lLmxlbmd0aCxIZSgpKTt2YXIgdWU9ZS5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyhnLGZlKTtpZighdWUpcmV0dXJuIGZlO2Zvcih2YXIgV2UsRmUsWj0wLEJlPXVlO1o8QmUubGVuZ3RoO1orKyl7dmFyIGdlPUJlW1pdO2lmKGdlLmtpbmQ9PT0zKXtpZihlLmlzUGlubmVkQ29tbWVudChnLGdlLnBvcykpe1dlPXtyYW5nZTpnZSxwaW5uZWRPclRyaXBsZVNsYXNoOiEwfTtjb250aW51ZX19ZWxzZSBpZihlLmlzUmVjb2duaXplZFRyaXBsZVNsYXNoQ29tbWVudChnLGdlLnBvcyxnZS5lbmQpKXtXZT17cmFuZ2U6Z2UscGlubmVkT3JUcmlwbGVTbGFzaDohMH07Y29udGludWV9aWYoV2Upe2lmKFdlLnBpbm5lZE9yVHJpcGxlU2xhc2gpYnJlYWs7dmFyIFJlPUguZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZ2UucG9zKS5saW5lLHplPUguZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oV2UucmFuZ2UuZW5kKS5saW5lO2lmKFJlPj16ZSsyKWJyZWFrfWlmKEguc3RhdGVtZW50cy5sZW5ndGgpe0ZlPT09dm9pZCAwJiYoRmU9SC5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihILnN0YXRlbWVudHNbMF0uZ2V0U3RhcnQoKSkubGluZSk7dmFyIEVlPUguZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZ2UuZW5kKS5saW5lO2lmKEZlPEVlKzIpYnJlYWt9V2U9e3JhbmdlOmdlLHBpbm5lZE9yVHJpcGxlU2xhc2g6ITF9fXJldHVybiBXZSYmKGZlPVdlLnJhbmdlLmVuZCxIZSgpKSxmZTtmdW5jdGlvbiBIZSgpe2lmKGZlPGcubGVuZ3RoKXt2YXIgcnI9Zy5jaGFyQ29kZUF0KGZlKTtlLmlzTGluZUJyZWFrKHJyKSYmKGZlKyssZmU8Zy5sZW5ndGgmJnJyPT09MTMmJmcuY2hhckNvZGVBdChmZSk9PT0xMCYmZmUrKyl9fX1mdW5jdGlvbiBQKEgsSSl7cmV0dXJuIWUuaXNJbkNvbW1lbnQoSCxJKSYmIWUuaXNJblN0cmluZyhILEkpJiYhZS5pc0luVGVtcGxhdGVTdHJpbmcoSCxJKSYmIWUuaXNJbkpTWFRleHQoSCxJKX1DLmlzVmFsaWRMb2NhdGlvblRvQWRkQ29tbWVudD1QO2Z1bmN0aW9uIGsoSCxJKXtyZXR1cm4oZS5pc1Byb3BlcnR5U2lnbmF0dXJlKEgpfHxlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihIKSkmJmUuaXNDbGFzc09yVHlwZUVsZW1lbnQoSSkmJkkubmFtZS5raW5kPT09MTYyfHxlLmlzU3RhdGVtZW50QnV0Tm90RGVjbGFyYXRpb24oSCkmJmUuaXNTdGF0ZW1lbnRCdXROb3REZWNsYXJhdGlvbihJKX12YXIgWTsoZnVuY3Rpb24oSCl7ZnVuY3Rpb24gSShmZSxnLG5lLHVlKXtzd2l0Y2godWUua2luZCl7Y2FzZSAxNjQ6e3ZhciBXZT11ZS5wYXJlbnQ7ZS5pc0Fycm93RnVuY3Rpb24oV2UpJiZXZS5wYXJhbWV0ZXJzLmxlbmd0aD09PTEmJiFlLmZpbmRDaGlsZE9mS2luZChXZSwyMCxuZSk/ZmUucmVwbGFjZU5vZGVXaXRoVGV4dChuZSx1ZSxcIigpXCIpOmooZmUsZyxuZSx1ZSk7YnJlYWt9Y2FzZSAyNjY6Y2FzZSAyNjU6dmFyIEZlPW5lLmltcG9ydHMubGVuZ3RoJiZ1ZT09PWUuZmlyc3QobmUuaW1wb3J0cykucGFyZW50fHx1ZT09PWUuZmluZChuZS5zdGF0ZW1lbnRzLGUuaXNBbnlJbXBvcnRTeW50YXgpO1UoZmUsbmUsdWUse2xlYWRpbmdUcml2aWFPcHRpb246RmU/bGUuRXhjbHVkZTplLmhhc0pTRG9jTm9kZXModWUpP2xlLkpTRG9jOmxlLlN0YXJ0TGluZX0pO2JyZWFrO2Nhc2UgMjAzOnZhciBaPXVlLnBhcmVudCxCZT1aLmtpbmQ9PT0yMDImJnVlIT09ZS5sYXN0KFouZWxlbWVudHMpO0JlP1UoZmUsbmUsdWUpOmooZmUsZyxuZSx1ZSk7YnJlYWs7Y2FzZSAyNTQ6RChmZSxnLG5lLHVlKTticmVhaztjYXNlIDE2MzpqKGZlLGcsbmUsdWUpO2JyZWFrO2Nhc2UgMjcwOnZhciBnZT11ZS5wYXJlbnQ7Z2UuZWxlbWVudHMubGVuZ3RoPT09MT9kKGZlLG5lLGdlKTpqKGZlLGcsbmUsdWUpO2JyZWFrO2Nhc2UgMjY4OmQoZmUsbmUsdWUpO2JyZWFrO2Nhc2UgMjY6VShmZSxuZSx1ZSx7dHJhaWxpbmdUcml2aWFPcHRpb246Ti5FeGNsdWRlfSk7YnJlYWs7Y2FzZSA5ODpVKGZlLG5lLHVlLHtsZWFkaW5nVHJpdmlhT3B0aW9uOmxlLkV4Y2x1ZGV9KTticmVhaztjYXNlIDI1NzpjYXNlIDI1NjpVKGZlLG5lLHVlLHtsZWFkaW5nVHJpdmlhT3B0aW9uOmUuaGFzSlNEb2NOb2Rlcyh1ZSk/bGUuSlNEb2M6bGUuU3RhcnRMaW5lfSk7YnJlYWs7ZGVmYXVsdDp1ZS5wYXJlbnQ/ZS5pc0ltcG9ydENsYXVzZSh1ZS5wYXJlbnQpJiZ1ZS5wYXJlbnQubmFtZT09PXVlP2woZmUsbmUsdWUucGFyZW50KTplLmlzQ2FsbEV4cHJlc3Npb24odWUucGFyZW50KSYmZS5jb250YWlucyh1ZS5wYXJlbnQuYXJndW1lbnRzLHVlKT9qKGZlLGcsbmUsdWUpOlUoZmUsbmUsdWUpOlUoZmUsbmUsdWUpfX1ILmRlbGV0ZURlY2xhcmF0aW9uPUk7ZnVuY3Rpb24gbChmZSxnLG5lKXtpZighbmUubmFtZWRCaW5kaW5ncylVKGZlLGcsbmUucGFyZW50KTtlbHNle3ZhciB1ZT1uZS5uYW1lLmdldFN0YXJ0KGcpLFdlPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKGcsbmUubmFtZS5lbmQpO2lmKFdlJiZXZS5raW5kPT09Mjcpe3ZhciBGZT1lLnNraXBUcml2aWEoZy50ZXh0LFdlLmVuZCwhMSwhMCk7ZmUuZGVsZXRlUmFuZ2UoZyx7cG9zOnVlLGVuZDpGZX0pfWVsc2UgVShmZSxnLG5lLm5hbWUpfX1mdW5jdGlvbiBkKGZlLGcsbmUpe2lmKG5lLnBhcmVudC5uYW1lKXt2YXIgdWU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5nZXRUb2tlbkF0UG9zaXRpb24oZyxuZS5wb3MtMSkpO2ZlLmRlbGV0ZVJhbmdlKGcse3Bvczp1ZS5nZXRTdGFydChnKSxlbmQ6bmUuZW5kfSl9ZWxzZXt2YXIgV2U9ZS5nZXRBbmNlc3RvcihuZSwyNjYpO1UoZmUsZyxXZSl9fWZ1bmN0aW9uIEQoZmUsZyxuZSx1ZSl7dmFyIFdlPXVlLnBhcmVudDtpZihXZS5raW5kPT09MjkyKXtmZS5kZWxldGVOb2RlUmFuZ2UobmUsZS5maW5kQ2hpbGRPZktpbmQoV2UsMjAsbmUpLGUuZmluZENoaWxkT2ZLaW5kKFdlLDIxLG5lKSk7cmV0dXJufWlmKFdlLmRlY2xhcmF0aW9ucy5sZW5ndGghPT0xKXtqKGZlLGcsbmUsdWUpO3JldHVybn12YXIgRmU9V2UucGFyZW50O3N3aXRjaChGZS5raW5kKXtjYXNlIDI0NDpjYXNlIDI0MzpmZS5yZXBsYWNlTm9kZShuZSx1ZSxlLmZhY3RvcnkuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oKSk7YnJlYWs7Y2FzZSAyNDI6VShmZSxuZSxXZSk7YnJlYWs7Y2FzZSAyMzc6VShmZSxuZSxGZSx7bGVhZGluZ1RyaXZpYU9wdGlvbjplLmhhc0pTRG9jTm9kZXMoRmUpP2xlLkpTRG9jOmxlLlN0YXJ0TGluZX0pO2JyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnROZXZlcihGZSl9fX0pKFl8fChZPXt9KSk7ZnVuY3Rpb24gVShILEksbCxkKXtkPT09dm9pZCAwJiYoZD17bGVhZGluZ1RyaXZpYU9wdGlvbjpsZS5JbmNsdWRlQWxsfSk7dmFyIEQ9VChJLGwsZCksZmU9YihJLGwsZCk7SC5kZWxldGVSYW5nZShJLHtwb3M6RCxlbmQ6ZmV9KX1DLmRlbGV0ZU5vZGU9VTtmdW5jdGlvbiBqKEgsSSxsLGQpe3ZhciBEPWUuRGVidWcuY2hlY2tEZWZpbmVkKGUuZm9ybWF0dGluZy5TbWFydEluZGVudGVyLmdldENvbnRhaW5pbmdMaXN0KGQsbCkpLGZlPWUuaW5kZXhPZk5vZGUoRCxkKTtpZihlLkRlYnVnLmFzc2VydChmZSE9PS0xKSxELmxlbmd0aD09PTEpe1UoSCxsLGQpO3JldHVybn1lLkRlYnVnLmFzc2VydCghSS5oYXMoZCksXCJEZWxldGluZyBhIG5vZGUgdHdpY2VcIiksSS5hZGQoZCksSC5kZWxldGVSYW5nZShsLHtwb3M6TyhsLGQpLGVuZDpmZT09PUQubGVuZ3RoLTE/YihsLGQse30pOk8obCxEW2ZlKzFdKX0pfX0pKGE9ZS50ZXh0Q2hhbmdlc3x8KGUudGV4dENoYW5nZXM9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1lLmNyZWF0ZU11bHRpTWFwKCksQj1uZXcgZS5NYXA7ZnVuY3Rpb24gRShpZSxSLHEpe3JldHVybiBOKGllLGUuZGlhZ25vc3RpY1RvU3RyaW5nKHEpLFIsdm9pZCAwLHZvaWQgMCl9Qy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbD1FO2Z1bmN0aW9uIFEoaWUsUixxLE8sdmUsZWUpe3JldHVybiBOKGllLGUuZGlhZ25vc3RpY1RvU3RyaW5nKHEpLFIsTyxlLmRpYWdub3N0aWNUb1N0cmluZyh2ZSksZWUpfUMuY3JlYXRlQ29kZUZpeEFjdGlvbj1RO2Z1bmN0aW9uIGxlKGllLFIscSxPLHZlLGVlKXtyZXR1cm4gTihpZSxlLmRpYWdub3N0aWNUb1N0cmluZyhxKSxSLE8sdmUmJmUuZGlhZ25vc3RpY1RvU3RyaW5nKHZlKSxlZSl9Qy5jcmVhdGVDb2RlRml4QWN0aW9uTWF5YmVGaXhBbGw9bGU7ZnVuY3Rpb24gTihpZSxSLHEsTyx2ZSxlZSl7cmV0dXJue2ZpeE5hbWU6aWUsZGVzY3JpcHRpb246UixjaGFuZ2VzOnEsZml4SWQ6TyxmaXhBbGxEZXNjcmlwdGlvbjp2ZSxjb21tYW5kczplZT9bZWVdOnZvaWQgMH19ZnVuY3Rpb24gcChpZSl7Zm9yKHZhciBSPTAscT1pZS5lcnJvckNvZGVzO1I8cS5sZW5ndGg7UisrKXt2YXIgTz1xW1JdO3cuYWRkKFN0cmluZyhPKSxpZSl9aWYoaWUuZml4SWRzKWZvcih2YXIgdmU9MCxlZT1pZS5maXhJZHM7dmU8ZWUubGVuZ3RoO3ZlKyspe3ZhciBoZT1lZVt2ZV07ZS5EZWJ1Zy5hc3NlcnQoIUIuaGFzKGhlKSksQi5zZXQoaGUsaWUpfX1DLnJlZ2lzdGVyQ29kZUZpeD1wO2Z1bmN0aW9uIG0oKXtyZXR1cm4gZS5hcnJheUZyb20ody5rZXlzKCkpfUMuZ2V0U3VwcG9ydGVkRXJyb3JDb2Rlcz1tO2Z1bmN0aW9uIEcoaWUsUil7Zm9yKHZhciBxPWllLmVycm9yQ29kZXMsTz0wLHZlPTAsZWU9Ujt2ZTxlZS5sZW5ndGg7dmUrKyl7dmFyIGhlPWVlW3ZlXTtpZihlLmNvbnRhaW5zKHEsaGUuY29kZSkmJk8rKyxPPjEpYnJlYWt9dmFyIEY9TzwyO3JldHVybiBmdW5jdGlvbih4KXt2YXIgWD14LmZpeElkLCQ9eC5maXhBbGxEZXNjcmlwdGlvbixBPXByKHgsW1wiZml4SWRcIixcImZpeEFsbERlc2NyaXB0aW9uXCJdKTtyZXR1cm4gRj9BOktlKEtlKHt9LEEpLHtmaXhJZDpYLGZpeEFsbERlc2NyaXB0aW9uOiR9KX19ZnVuY3Rpb24gb2UoaWUpe3ZhciBSPUooaWUpLHE9dy5nZXQoU3RyaW5nKGllLmVycm9yQ29kZSkpO3JldHVybiBlLmZsYXRNYXAocSxmdW5jdGlvbihPKXtyZXR1cm4gZS5tYXAoTy5nZXRDb2RlQWN0aW9ucyhpZSksRyhPLFIpKX0pfUMuZ2V0Rml4ZXM9b2U7ZnVuY3Rpb24gZihpZSl7cmV0dXJuIEIuZ2V0KGUuY2FzdChpZS5maXhJZCxlLmlzU3RyaW5nKSkuZ2V0QWxsQ29kZUFjdGlvbnMoaWUpfUMuZ2V0QWxsRml4ZXM9ZjtmdW5jdGlvbiBUKGllLFIpe3JldHVybntjaGFuZ2VzOmllLGNvbW1hbmRzOlJ9fUMuY3JlYXRlQ29tYmluZWRDb2RlQWN0aW9ucz1UO2Z1bmN0aW9uIEsoaWUsUil7cmV0dXJue2ZpbGVOYW1lOmllLHRleHRDaGFuZ2VzOlJ9fUMuY3JlYXRlRmlsZVRleHRDaGFuZ2VzPUs7ZnVuY3Rpb24gYihpZSxSLHEpe3ZhciBPPVtdLHZlPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGllLGZ1bmN0aW9uKGVlKXtyZXR1cm4gc2UoaWUsUixmdW5jdGlvbihoZSl7cmV0dXJuIHEoZWUsaGUsTyl9KX0pO3JldHVybiBUKHZlLE8ubGVuZ3RoPT09MD92b2lkIDA6Tyl9Qy5jb2RlRml4QWxsPWI7ZnVuY3Rpb24gc2UoaWUsUixxKXtmb3IodmFyIE89MCx2ZT1KKGllKTtPPHZlLmxlbmd0aDtPKyspe3ZhciBlZT12ZVtPXTtlLmNvbnRhaW5zKFIsZWUuY29kZSkmJnEoZWUpfX1DLmVhY2hEaWFnbm9zdGljPXNlO2Z1bmN0aW9uIEooaWUpe3ZhciBSPWllLnByb2dyYW0scT1pZS5zb3VyY2VGaWxlLE89aWUuY2FuY2VsbGF0aW9uVG9rZW47cmV0dXJuIFZlKFZlKFZlKFtdLFIuZ2V0U2VtYW50aWNEaWFnbm9zdGljcyhxLE8pLCEwKSxSLmdldFN5bnRhY3RpY0RpYWdub3N0aWNzKHEsTyksITApLGUuY29tcHV0ZVN1Z2dlc3Rpb25EaWFnbm9zdGljcyhxLFIsTyksITApfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9bmV3IGUuTWFwO2Z1bmN0aW9uIEIobGUsTil7dy5zZXQobGUsTil9Qy5yZWdpc3RlclJlZmFjdG9yPUI7ZnVuY3Rpb24gRShsZSl7cmV0dXJuIGUuYXJyYXlGcm9tKGUuZmxhdE1hcEl0ZXJhdG9yKHcudmFsdWVzKCksZnVuY3Rpb24oTil7dmFyIHA7cmV0dXJuIGxlLmNhbmNlbGxhdGlvblRva2VuJiZsZS5jYW5jZWxsYXRpb25Ub2tlbi5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpfHwhKCEoKHA9Ti5raW5kcyk9PT1udWxsfHxwPT09dm9pZCAwKSYmcC5zb21lKGZ1bmN0aW9uKG0pe3JldHVybiBDLnJlZmFjdG9yS2luZEJlZ2luc1dpdGgobSxsZS5raW5kKX0pKT92b2lkIDA6Ti5nZXRBdmFpbGFibGVBY3Rpb25zKGxlKX0pKX1DLmdldEFwcGxpY2FibGVSZWZhY3RvcnM9RTtmdW5jdGlvbiBRKGxlLE4scCl7dmFyIG09dy5nZXQoTik7cmV0dXJuIG0mJm0uZ2V0RWRpdHNGb3JBY3Rpb24obGUscCl9Qy5nZXRFZGl0c0ZvclJlZmFjdG9yPVF9KShhPWUucmVmYWN0b3J8fChlLnJlZmFjdG9yPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJhZGRDb252ZXJ0VG9Vbmtub3duRm9yTm9uT3ZlcmxhcHBpbmdUeXBlc1wiLEI9W2UuRGlhZ25vc3RpY3MuQ29udmVyc2lvbl9vZl90eXBlXzBfdG9fdHlwZV8xX21heV9iZV9hX21pc3Rha2VfYmVjYXVzZV9uZWl0aGVyX3R5cGVfc3VmZmljaWVudGx5X292ZXJsYXBzX3dpdGhfdGhlX290aGVyX0lmX3RoaXNfd2FzX2ludGVudGlvbmFsX2NvbnZlcnRfdGhlX2V4cHJlc3Npb25fdG9fdW5rbm93bl9maXJzdC5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKE4pe3ZhciBwPVEoTi5zb3VyY2VGaWxlLE4uc3Bhbi5zdGFydCk7aWYocCE9PXZvaWQgMCl7dmFyIG09ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoTixmdW5jdGlvbihHKXtyZXR1cm4gRShHLE4uc291cmNlRmlsZSxwKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxtLGUuRGlhZ25vc3RpY3MuQWRkX3Vua25vd25fY29udmVyc2lvbl9mb3Jfbm9uX292ZXJsYXBwaW5nX3R5cGVzLHcsZS5EaWFnbm9zdGljcy5BZGRfdW5rbm93bl90b19hbGxfY29udmVyc2lvbnNfb2Zfbm9uX292ZXJsYXBwaW5nX3R5cGVzKV19fSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKGxlKXtyZXR1cm4gQy5jb2RlRml4QWxsKGxlLEIsZnVuY3Rpb24oTixwKXt2YXIgbT1RKHAuZmlsZSxwLnN0YXJ0KTttJiZFKE4scC5maWxlLG0pfSl9fSk7ZnVuY3Rpb24gRShsZSxOLHApe3ZhciBtPWUuaXNBc0V4cHJlc3Npb24ocCk/ZS5mYWN0b3J5LmNyZWF0ZUFzRXhwcmVzc2lvbihwLmV4cHJlc3Npb24sZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxNTUpKTplLmZhY3RvcnkuY3JlYXRlVHlwZUFzc2VydGlvbihlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1NSkscC5leHByZXNzaW9uKTtsZS5yZXBsYWNlTm9kZShOLHAuZXhwcmVzc2lvbixtKX1mdW5jdGlvbiBRKGxlLE4pe2lmKCFlLmlzSW5KU0ZpbGUobGUpKXJldHVybiBlLmZpbmRBbmNlc3RvcihlLmdldFRva2VuQXRQb3NpdGlvbihsZSxOKSxmdW5jdGlvbihwKXtyZXR1cm4gZS5pc0FzRXhwcmVzc2lvbihwKXx8ZS5pc1R5cGVBc3NlcnRpb25FeHByZXNzaW9uKHApfSl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpbZS5EaWFnbm9zdGljcy5hd2FpdF9leHByZXNzaW9uc19hcmVfb25seV9hbGxvd2VkX2F0X3RoZV90b3BfbGV2ZWxfb2ZfYV9maWxlX3doZW5fdGhhdF9maWxlX2lzX2FfbW9kdWxlX2J1dF90aGlzX2ZpbGVfaGFzX25vX2ltcG9ydHNfb3JfZXhwb3J0c19Db25zaWRlcl9hZGRpbmdfYW5fZW1wdHlfZXhwb3J0X3RvX21ha2VfdGhpc19maWxlX2FfbW9kdWxlLmNvZGUsZS5EaWFnbm9zdGljcy5mb3JfYXdhaXRfbG9vcHNfYXJlX29ubHlfYWxsb3dlZF9hdF90aGVfdG9wX2xldmVsX29mX2FfZmlsZV93aGVuX3RoYXRfZmlsZV9pc19hX21vZHVsZV9idXRfdGhpc19maWxlX2hhc19ub19pbXBvcnRzX29yX2V4cG9ydHNfQ29uc2lkZXJfYWRkaW5nX2FuX2VtcHR5X2V4cG9ydF90b19tYWtlX3RoaXNfZmlsZV9hX21vZHVsZS5jb2RlXSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihCKXt2YXIgRT1CLnNvdXJjZUZpbGUsUT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChCLGZ1bmN0aW9uKGxlKXt2YXIgTj1lLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxlLmZhY3RvcnkuY3JlYXRlTmFtZWRFeHBvcnRzKFtdKSx2b2lkIDApO2xlLmluc2VydE5vZGVBdEVuZE9mU2NvcGUoRSxFLE4pfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbldpdGhvdXRGaXhBbGwoXCJhZGRFbXB0eUV4cG9ydERlY2xhcmF0aW9uXCIsUSxlLkRpYWdub3N0aWNzLkFkZF9leHBvcnRfdG9fbWFrZV90aGlzX2ZpbGVfaW50b19hX21vZHVsZSldfX0pfSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImFkZE1pc3NpbmdBc3luY1wiLEI9W2UuRGlhZ25vc3RpY3MuQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzEuY29kZSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEuY29kZSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfY29tcGFyYWJsZV90b190eXBlXzEuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2ZpeElkczpbd10sZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKG0pe3ZhciBHPW0uc291cmNlRmlsZSxvZT1tLmVycm9yQ29kZSxmPW0uY2FuY2VsbGF0aW9uVG9rZW4sVD1tLnByb2dyYW0sSz1tLnNwYW4sYj1lLmZpbmQoVC5nZXRUeXBlQ2hlY2tlcigpLmdldERpYWdub3N0aWNzKEcsZiksTihLLG9lKSksc2U9YiYmYi5yZWxhdGVkSW5mb3JtYXRpb24mJmUuZmluZChiLnJlbGF0ZWRJbmZvcm1hdGlvbixmdW5jdGlvbihSKXtyZXR1cm4gUi5jb2RlPT09ZS5EaWFnbm9zdGljcy5EaWRfeW91X21lYW5fdG9fbWFya190aGlzX2Z1bmN0aW9uX2FzX2FzeW5jLmNvZGV9KSxKPWxlKEcsc2UpO2lmKCEhSil7dmFyIGllPWZ1bmN0aW9uKFIpe3JldHVybiBlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChtLFIpfTtyZXR1cm5bRShtLEosaWUpXX19LGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKHApe3ZhciBtPXAuc291cmNlRmlsZSxHPW5ldyBlLlNldDtyZXR1cm4gQy5jb2RlRml4QWxsKHAsQixmdW5jdGlvbihvZSxmKXt2YXIgVD1mLnJlbGF0ZWRJbmZvcm1hdGlvbiYmZS5maW5kKGYucmVsYXRlZEluZm9ybWF0aW9uLGZ1bmN0aW9uKHNlKXtyZXR1cm4gc2UuY29kZT09PWUuRGlhZ25vc3RpY3MuRGlkX3lvdV9tZWFuX3RvX21hcmtfdGhpc19mdW5jdGlvbl9hc19hc3luYy5jb2RlfSksSz1sZShtLFQpO2lmKCEhSyl7dmFyIGI9ZnVuY3Rpb24oc2Upe3JldHVybiBzZShvZSksW119O3JldHVybiBFKHAsSyxiLEcpfX0pfX0pO2Z1bmN0aW9uIEUocCxtLEcsb2Upe3ZhciBmPUcoZnVuY3Rpb24oVCl7cmV0dXJuIFEoVCxwLnNvdXJjZUZpbGUsbSxvZSl9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsZixlLkRpYWdub3N0aWNzLkFkZF9hc3luY19tb2RpZmllcl90b19jb250YWluaW5nX2Z1bmN0aW9uLHcsZS5EaWFnbm9zdGljcy5BZGRfYWxsX21pc3NpbmdfYXN5bmNfbW9kaWZpZXJzKX1mdW5jdGlvbiBRKHAsbSxHLG9lKXtpZighKG9lJiZvZS5oYXMoZS5nZXROb2RlSWQoRykpKSl7b2U9PW51bGx8fG9lLmFkZChlLmdldE5vZGVJZChHKSk7dmFyIGY9ZS5mYWN0b3J5LnVwZGF0ZU1vZGlmaWVycyhlLmdldFN5bnRoZXNpemVkRGVlcENsb25lKEcsITApLGUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzKGUuZ2V0U3ludGFjdGljTW9kaWZpZXJGbGFncyhHKXwyNTYpKSk7cC5yZXBsYWNlTm9kZShtLEcsZil9fWZ1bmN0aW9uIGxlKHAsbSl7aWYoISFtKXt2YXIgRz1lLmdldFRva2VuQXRQb3NpdGlvbihwLG0uc3RhcnQpLG9lPWUuZmluZEFuY2VzdG9yKEcsZnVuY3Rpb24oZil7cmV0dXJuIGYuZ2V0U3RhcnQocCk8bS5zdGFydHx8Zi5nZXRFbmQoKT5lLnRleHRTcGFuRW5kKG0pP1wicXVpdFwiOihlLmlzQXJyb3dGdW5jdGlvbihmKXx8ZS5pc01ldGhvZERlY2xhcmF0aW9uKGYpfHxlLmlzRnVuY3Rpb25FeHByZXNzaW9uKGYpfHxlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihmKSkmJmUudGV4dFNwYW5zRXF1YWwobSxlLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUoZixwKSl9KTtyZXR1cm4gb2V9fWZ1bmN0aW9uIE4ocCxtKXtyZXR1cm4gZnVuY3Rpb24oRyl7dmFyIG9lPUcuc3RhcnQsZj1HLmxlbmd0aCxUPUcucmVsYXRlZEluZm9ybWF0aW9uLEs9Ry5jb2RlO3JldHVybiBlLmlzTnVtYmVyKG9lKSYmZS5pc051bWJlcihmKSYmZS50ZXh0U3BhbnNFcXVhbCh7c3RhcnQ6b2UsbGVuZ3RoOmZ9LHApJiZLPT09bSYmISFUJiZlLnNvbWUoVCxmdW5jdGlvbihiKXtyZXR1cm4gYi5jb2RlPT09ZS5EaWFnbm9zdGljcy5EaWRfeW91X21lYW5fdG9fbWFya190aGlzX2Z1bmN0aW9uX2FzX2FzeW5jLmNvZGV9KX19fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImFkZE1pc3NpbmdBd2FpdFwiLEI9ZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMS5jb2RlLEU9W2UuRGlhZ25vc3RpY3MuVGhpc19leHByZXNzaW9uX2lzX25vdF9jYWxsYWJsZS5jb2RlLGUuRGlhZ25vc3RpY3MuVGhpc19leHByZXNzaW9uX2lzX25vdF9jb25zdHJ1Y3RhYmxlLmNvZGVdLFE9VmUoW2UuRGlhZ25vc3RpY3MuQW5fYXJpdGhtZXRpY19vcGVyYW5kX211c3RfYmVfb2ZfdHlwZV9hbnlfbnVtYmVyX2JpZ2ludF9vcl9hbl9lbnVtX3R5cGUuY29kZSxlLkRpYWdub3N0aWNzLlRoZV9sZWZ0X2hhbmRfc2lkZV9vZl9hbl9hcml0aG1ldGljX29wZXJhdGlvbl9tdXN0X2JlX29mX3R5cGVfYW55X251bWJlcl9iaWdpbnRfb3JfYW5fZW51bV90eXBlLmNvZGUsZS5EaWFnbm9zdGljcy5UaGVfcmlnaHRfaGFuZF9zaWRlX29mX2FuX2FyaXRobWV0aWNfb3BlcmF0aW9uX211c3RfYmVfb2ZfdHlwZV9hbnlfbnVtYmVyX2JpZ2ludF9vcl9hbl9lbnVtX3R5cGUuY29kZSxlLkRpYWdub3N0aWNzLk9wZXJhdG9yXzBfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV8xLmNvZGUsZS5EaWFnbm9zdGljcy5PcGVyYXRvcl8wX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX3R5cGVzXzFfYW5kXzIuY29kZSxlLkRpYWdub3N0aWNzLlRoaXNfY29uZGl0aW9uX3dpbGxfYWx3YXlzX3JldHVybl8wX3NpbmNlX3RoZV90eXBlc18xX2FuZF8yX2hhdmVfbm9fb3ZlcmxhcC5jb2RlLGUuRGlhZ25vc3RpY3MuVGhpc19jb25kaXRpb25fd2lsbF9hbHdheXNfcmV0dXJuX3RydWVfc2luY2VfdGhpc18wX2lzX2Fsd2F5c19kZWZpbmVkLmNvZGUsZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2FuX2FycmF5X3R5cGUuY29kZSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYW5fYXJyYXlfdHlwZV9vcl9hX3N0cmluZ190eXBlLmNvZGUsZS5EaWFnbm9zdGljcy5UeXBlXzBfY2FuX29ubHlfYmVfaXRlcmF0ZWRfdGhyb3VnaF93aGVuX3VzaW5nX3RoZV9kb3dubGV2ZWxJdGVyYXRpb25fZmxhZ19vcl93aXRoX2FfdGFyZ2V0X29mX2VzMjAxNV9vcl9oaWdoZXIuY29kZSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYW5fYXJyYXlfdHlwZV9vcl9hX3N0cmluZ190eXBlX29yX2RvZXNfbm90X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9pdGVyYXRvci5jb2RlLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hbl9hcnJheV90eXBlX29yX2RvZXNfbm90X2hhdmVfYV9TeW1ib2xfaXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9pdGVyYXRvci5jb2RlLGUuRGlhZ25vc3RpY3MuVHlwZV8wX211c3RfaGF2ZV9hX1N5bWJvbF9pdGVyYXRvcl9tZXRob2RfdGhhdF9yZXR1cm5zX2FuX2l0ZXJhdG9yLmNvZGUsZS5EaWFnbm9zdGljcy5UeXBlXzBfbXVzdF9oYXZlX2FfU3ltYm9sX2FzeW5jSXRlcmF0b3JfbWV0aG9kX3RoYXRfcmV0dXJuc19hbl9hc3luY19pdGVyYXRvci5jb2RlLGUuRGlhZ25vc3RpY3MuQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzEuY29kZSxCXSxFLCEwKTtDLnJlZ2lzdGVyQ29kZUZpeCh7Zml4SWRzOlt3XSxlcnJvckNvZGVzOlEsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oSil7dmFyIGllPUouc291cmNlRmlsZSxSPUouZXJyb3JDb2RlLHE9Si5zcGFuLE89Si5jYW5jZWxsYXRpb25Ub2tlbix2ZT1KLnByb2dyYW0sZWU9bGUoaWUsUixxLE8sdmUpO2lmKCEhZWUpe3ZhciBoZT1KLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSxGPWZ1bmN0aW9uKHgpe3JldHVybiBlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChKLHgpfTtyZXR1cm4gZS5jb21wYWN0KFtOKEosZWUsUixoZSxGKSxwKEosZWUsUixoZSxGKV0pfX0sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oc2Upe3ZhciBKPXNlLnNvdXJjZUZpbGUsaWU9c2UucHJvZ3JhbSxSPXNlLmNhbmNlbGxhdGlvblRva2VuLHE9c2UucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLE89bmV3IGUuU2V0O3JldHVybiBDLmNvZGVGaXhBbGwoc2UsUSxmdW5jdGlvbih2ZSxlZSl7dmFyIGhlPWxlKEosZWUuY29kZSxlZSxSLGllKTtpZighIWhlKXt2YXIgRj1mdW5jdGlvbih4KXtyZXR1cm4geCh2ZSksW119O3JldHVybiBOKHNlLGhlLGVlLmNvZGUscSxGLE8pfHxwKHNlLGhlLGVlLmNvZGUscSxGLE8pfX0pfX0pO2Z1bmN0aW9uIGxlKHNlLEosaWUsUixxKXt2YXIgTz1lLmdldEZpeGFibGVFcnJvclNwYW5FeHByZXNzaW9uKHNlLGllKTtyZXR1cm4gTyYmbShzZSxKLGllLFIscSkmJlQoTyk/Tzp2b2lkIDB9ZnVuY3Rpb24gTihzZSxKLGllLFIscSxPKXt2YXIgdmU9c2Uuc291cmNlRmlsZSxlZT1zZS5wcm9ncmFtLGhlPXNlLmNhbmNlbGxhdGlvblRva2VuLEY9RyhKLHZlLGhlLGVlLFIpO2lmKEYpe3ZhciB4PXEoZnVuY3Rpb24oWCl7ZS5mb3JFYWNoKEYuaW5pdGlhbGl6ZXJzLGZ1bmN0aW9uKCQpe3ZhciBBPSQuZXhwcmVzc2lvbjtyZXR1cm4gSyhYLGllLHZlLFIsQSxPKX0pLE8mJkYubmVlZHNTZWNvbmRQYXNzRm9yRml4QWxsJiZLKFgsaWUsdmUsUixKLE8pfSk7cmV0dXJuIEMuY3JlYXRlQ29kZUZpeEFjdGlvbldpdGhvdXRGaXhBbGwoXCJhZGRNaXNzaW5nQXdhaXRUb0luaXRpYWxpemVyXCIseCxGLmluaXRpYWxpemVycy5sZW5ndGg9PT0xP1tlLkRpYWdub3N0aWNzLkFkZF9hd2FpdF90b19pbml0aWFsaXplcl9mb3JfMCxGLmluaXRpYWxpemVyc1swXS5kZWNsYXJhdGlvblN5bWJvbC5uYW1lXTplLkRpYWdub3N0aWNzLkFkZF9hd2FpdF90b19pbml0aWFsaXplcnMpfX1mdW5jdGlvbiBwKHNlLEosaWUsUixxLE8pe3ZhciB2ZT1xKGZ1bmN0aW9uKGVlKXtyZXR1cm4gSyhlZSxpZSxzZS5zb3VyY2VGaWxlLFIsSixPKX0pO3JldHVybiBDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyx2ZSxlLkRpYWdub3N0aWNzLkFkZF9hd2FpdCx3LGUuRGlhZ25vc3RpY3MuRml4X2FsbF9leHByZXNzaW9uc19wb3NzaWJseV9taXNzaW5nX2F3YWl0KX1mdW5jdGlvbiBtKHNlLEosaWUsUixxKXt2YXIgTz1xLmdldFR5cGVDaGVja2VyKCksdmU9Ty5nZXREaWFnbm9zdGljcyhzZSxSKTtyZXR1cm4gZS5zb21lKHZlLGZ1bmN0aW9uKGVlKXt2YXIgaGU9ZWUuc3RhcnQsRj1lZS5sZW5ndGgseD1lZS5yZWxhdGVkSW5mb3JtYXRpb24sWD1lZS5jb2RlO3JldHVybiBlLmlzTnVtYmVyKGhlKSYmZS5pc051bWJlcihGKSYmZS50ZXh0U3BhbnNFcXVhbCh7c3RhcnQ6aGUsbGVuZ3RoOkZ9LGllKSYmWD09PUomJiEheCYmZS5zb21lKHgsZnVuY3Rpb24oJCl7cmV0dXJuICQuY29kZT09PWUuRGlhZ25vc3RpY3MuRGlkX3lvdV9mb3JnZXRfdG9fdXNlX2F3YWl0LmNvZGV9KX0pfWZ1bmN0aW9uIEcoc2UsSixpZSxSLHEpe3ZhciBPPW9lKHNlLHEpO2lmKCEhTyl7Zm9yKHZhciB2ZT1PLmlzQ29tcGxldGVGaXgsZWUsaGU9ZnVuY3Rpb24oJCl7dmFyIEE9cS5nZXRTeW1ib2xBdExvY2F0aW9uKCQpO2lmKCFBKXJldHVyblwiY29udGludWVcIjt2YXIgeT1lLnRyeUNhc3QoQS52YWx1ZURlY2xhcmF0aW9uLGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKSxWPXkmJmUudHJ5Q2FzdCh5Lm5hbWUsZS5pc0lkZW50aWZpZXIpLEw9ZS5nZXRBbmNlc3Rvcih5LDIzNyk7aWYoIXl8fCFMfHx5LnR5cGV8fCF5LmluaXRpYWxpemVyfHxMLmdldFNvdXJjZUZpbGUoKSE9PUp8fGUuaGFzU3ludGFjdGljTW9kaWZpZXIoTCwxKXx8IVZ8fCFUKHkuaW5pdGlhbGl6ZXIpKXJldHVybiB2ZT0hMSxcImNvbnRpbnVlXCI7dmFyIFA9Ui5nZXRTZW1hbnRpY0RpYWdub3N0aWNzKEosaWUpLGs9ZS5GaW5kQWxsUmVmZXJlbmNlcy5Db3JlLmVhY2hTeW1ib2xSZWZlcmVuY2VJbkZpbGUoVixxLEosZnVuY3Rpb24oWSl7cmV0dXJuICQhPT1ZJiYhZihZLFAsSixxKX0pO2lmKGspcmV0dXJuIHZlPSExLFwiY29udGludWVcIjsoZWV8fChlZT1bXSkpLnB1c2goe2V4cHJlc3Npb246eS5pbml0aWFsaXplcixkZWNsYXJhdGlvblN5bWJvbDpBfSl9LEY9MCx4PU8uaWRlbnRpZmllcnM7Rjx4Lmxlbmd0aDtGKyspe3ZhciBYPXhbRl07aGUoWCl9cmV0dXJuIGVlJiZ7aW5pdGlhbGl6ZXJzOmVlLG5lZWRzU2Vjb25kUGFzc0ZvckZpeEFsbDohdmV9fX1mdW5jdGlvbiBvZShzZSxKKXtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHNlLnBhcmVudCkmJmUuaXNJZGVudGlmaWVyKHNlLnBhcmVudC5leHByZXNzaW9uKSlyZXR1cm57aWRlbnRpZmllcnM6W3NlLnBhcmVudC5leHByZXNzaW9uXSxpc0NvbXBsZXRlRml4OiEwfTtpZihlLmlzSWRlbnRpZmllcihzZSkpcmV0dXJue2lkZW50aWZpZXJzOltzZV0saXNDb21wbGV0ZUZpeDohMH07aWYoZS5pc0JpbmFyeUV4cHJlc3Npb24oc2UpKXtmb3IodmFyIGllPXZvaWQgMCxSPSEwLHE9MCxPPVtzZS5sZWZ0LHNlLnJpZ2h0XTtxPE8ubGVuZ3RoO3ErKyl7dmFyIHZlPU9bcV0sZWU9Si5nZXRUeXBlQXRMb2NhdGlvbih2ZSk7aWYoSi5nZXRQcm9taXNlZFR5cGVPZlByb21pc2UoZWUpKXtpZighZS5pc0lkZW50aWZpZXIodmUpKXtSPSExO2NvbnRpbnVlfShpZXx8KGllPVtdKSkucHVzaCh2ZSl9fXJldHVybiBpZSYme2lkZW50aWZpZXJzOmllLGlzQ29tcGxldGVGaXg6Un19fWZ1bmN0aW9uIGYoc2UsSixpZSxSKXt2YXIgcT1lLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHNlLnBhcmVudCk/c2UucGFyZW50Lm5hbWU6ZS5pc0JpbmFyeUV4cHJlc3Npb24oc2UucGFyZW50KT9zZS5wYXJlbnQ6c2UsTz1lLmZpbmQoSixmdW5jdGlvbih2ZSl7cmV0dXJuIHZlLnN0YXJ0PT09cS5nZXRTdGFydChpZSkmJnZlLnN0YXJ0K3ZlLmxlbmd0aD09PXEuZ2V0RW5kKCl9KTtyZXR1cm4gTyYmZS5jb250YWlucyhRLE8uY29kZSl8fFIuZ2V0VHlwZUF0TG9jYXRpb24ocSkuZmxhZ3MmMX1mdW5jdGlvbiBUKHNlKXtyZXR1cm4gc2Uua2luZCYzMjc2OHx8ISFlLmZpbmRBbmNlc3RvcihzZSxmdW5jdGlvbihKKXtyZXR1cm4gSi5wYXJlbnQmJmUuaXNBcnJvd0Z1bmN0aW9uKEoucGFyZW50KSYmSi5wYXJlbnQuYm9keT09PUp8fGUuaXNCbG9jayhKKSYmKEoucGFyZW50LmtpbmQ9PT0yNTZ8fEoucGFyZW50LmtpbmQ9PT0yMTN8fEoucGFyZW50LmtpbmQ9PT0yMTR8fEoucGFyZW50LmtpbmQ9PT0xNjkpfSl9ZnVuY3Rpb24gSyhzZSxKLGllLFIscSxPKXtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihxKSlmb3IodmFyIHZlPTAsZWU9W3EubGVmdCxxLnJpZ2h0XTt2ZTxlZS5sZW5ndGg7dmUrKyl7dmFyIGhlPWVlW3ZlXTtpZihPJiZlLmlzSWRlbnRpZmllcihoZSkpe3ZhciBGPVIuZ2V0U3ltYm9sQXRMb2NhdGlvbihoZSk7aWYoRiYmTy5oYXMoZS5nZXRTeW1ib2xJZChGKSkpY29udGludWV9dmFyIHg9Ui5nZXRUeXBlQXRMb2NhdGlvbihoZSksWD1SLmdldFByb21pc2VkVHlwZU9mUHJvbWlzZSh4KT9lLmZhY3RvcnkuY3JlYXRlQXdhaXRFeHByZXNzaW9uKGhlKTpoZTtzZS5yZXBsYWNlTm9kZShpZSxoZSxYKX1lbHNlIGlmKEo9PT1CJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHEucGFyZW50KSl7aWYoTyYmZS5pc0lkZW50aWZpZXIocS5wYXJlbnQuZXhwcmVzc2lvbikpe3ZhciBGPVIuZ2V0U3ltYm9sQXRMb2NhdGlvbihxLnBhcmVudC5leHByZXNzaW9uKTtpZihGJiZPLmhhcyhlLmdldFN5bWJvbElkKEYpKSlyZXR1cm59c2UucmVwbGFjZU5vZGUoaWUscS5wYXJlbnQuZXhwcmVzc2lvbixlLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZUF3YWl0RXhwcmVzc2lvbihxLnBhcmVudC5leHByZXNzaW9uKSkpLGIoc2UscS5wYXJlbnQuZXhwcmVzc2lvbixpZSl9ZWxzZSBpZihlLmNvbnRhaW5zKEUsSikmJmUuaXNDYWxsT3JOZXdFeHByZXNzaW9uKHEucGFyZW50KSl7aWYoTyYmZS5pc0lkZW50aWZpZXIocSkpe3ZhciBGPVIuZ2V0U3ltYm9sQXRMb2NhdGlvbihxKTtpZihGJiZPLmhhcyhlLmdldFN5bWJvbElkKEYpKSlyZXR1cm59c2UucmVwbGFjZU5vZGUoaWUscSxlLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZUF3YWl0RXhwcmVzc2lvbihxKSkpLGIoc2UscSxpZSl9ZWxzZXtpZihPJiZlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihxLnBhcmVudCkmJmUuaXNJZGVudGlmaWVyKHEucGFyZW50Lm5hbWUpKXt2YXIgRj1SLmdldFN5bWJvbEF0TG9jYXRpb24ocS5wYXJlbnQubmFtZSk7aWYoRiYmIWUudHJ5QWRkVG9TZXQoTyxlLmdldFN5bWJvbElkKEYpKSlyZXR1cm59c2UucmVwbGFjZU5vZGUoaWUscSxlLmZhY3RvcnkuY3JlYXRlQXdhaXRFeHByZXNzaW9uKHEpKX19ZnVuY3Rpb24gYihzZSxKLGllKXt2YXIgUj1lLmZpbmRQcmVjZWRpbmdUb2tlbihKLnBvcyxpZSk7UiYmZS5wb3NpdGlvbklzQVNJQ2FuZGlkYXRlKFIuZW5kLFIucGFyZW50LGllKSYmc2UuaW5zZXJ0VGV4dChpZSxKLmdldFN0YXJ0KGllKSxcIjtcIil9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImFkZE1pc3NpbmdDb25zdFwiLEI9W2UuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wLmNvZGUsZS5EaWFnbm9zdGljcy5Ob192YWx1ZV9leGlzdHNfaW5fc2NvcGVfZm9yX3RoZV9zaG9ydGhhbmRfcHJvcGVydHlfMF9FaXRoZXJfZGVjbGFyZV9vbmVfb3JfcHJvdmlkZV9hbl9pbml0aWFsaXplci5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKG9lKXt2YXIgZj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChvZSxmdW5jdGlvbihUKXtyZXR1cm4gRShULG9lLnNvdXJjZUZpbGUsb2Uuc3Bhbi5zdGFydCxvZS5wcm9ncmFtKX0pO2lmKGYubGVuZ3RoPjApcmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LGYsZS5EaWFnbm9zdGljcy5BZGRfY29uc3RfdG9fdW5yZXNvbHZlZF92YXJpYWJsZSx3LGUuRGlhZ25vc3RpY3MuQWRkX2NvbnN0X3RvX2FsbF91bnJlc29sdmVkX3ZhcmlhYmxlcyldfSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKEcpe3ZhciBvZT1uZXcgZS5TZXQ7cmV0dXJuIEMuY29kZUZpeEFsbChHLEIsZnVuY3Rpb24oZixUKXtyZXR1cm4gRShmLFQuZmlsZSxULnN0YXJ0LEcucHJvZ3JhbSxvZSl9KX19KTtmdW5jdGlvbiBFKEcsb2UsZixULEspe3ZhciBiPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKG9lLGYpLHNlPWUuZmluZEFuY2VzdG9yKGIsZnVuY3Rpb24oTyl7cmV0dXJuIGUuaXNGb3JJbk9yT2ZTdGF0ZW1lbnQoTy5wYXJlbnQpP08ucGFyZW50LmluaXRpYWxpemVyPT09TzpsZShPKT8hMTpcInF1aXRcIn0pO2lmKHNlKXJldHVybiBRKEcsc2Usb2UsSyk7dmFyIEo9Yi5wYXJlbnQ7aWYoZS5pc0JpbmFyeUV4cHJlc3Npb24oSikmJkoub3BlcmF0b3JUb2tlbi5raW5kPT09NjMmJmUuaXNFeHByZXNzaW9uU3RhdGVtZW50KEoucGFyZW50KSlyZXR1cm4gUShHLGIsb2UsSyk7aWYoZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oSikpe3ZhciBpZT1ULmdldFR5cGVDaGVja2VyKCk7cmV0dXJuIGUuZXZlcnkoSi5lbGVtZW50cyxmdW5jdGlvbihPKXtyZXR1cm4gTihPLGllKX0pP1EoRyxKLG9lLEspOnZvaWQgMH12YXIgUj1lLmZpbmRBbmNlc3RvcihiLGZ1bmN0aW9uKE8pe3JldHVybiBlLmlzRXhwcmVzc2lvblN0YXRlbWVudChPLnBhcmVudCk/ITA6cChPKT8hMTpcInF1aXRcIn0pO2lmKFIpe3ZhciBxPVQuZ2V0VHlwZUNoZWNrZXIoKTtyZXR1cm4gbShSLHEpP1EoRyxSLG9lLEspOnZvaWQgMH19ZnVuY3Rpb24gUShHLG9lLGYsVCl7KCFUfHxlLnRyeUFkZFRvU2V0KFQsb2UpKSYmRy5pbnNlcnRNb2RpZmllckJlZm9yZShmLDg1LG9lKX1mdW5jdGlvbiBsZShHKXtzd2l0Y2goRy5raW5kKXtjYXNlIDc5OmNhc2UgMjA0OmNhc2UgMjA1OmNhc2UgMjk2OmNhc2UgMjk3OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIE4oRyxvZSl7dmFyIGY9ZS5pc0lkZW50aWZpZXIoRyk/RzplLmlzQXNzaWdubWVudEV4cHJlc3Npb24oRywhMCkmJmUuaXNJZGVudGlmaWVyKEcubGVmdCk/Ry5sZWZ0OnZvaWQgMDtyZXR1cm4hIWYmJiFvZS5nZXRTeW1ib2xBdExvY2F0aW9uKGYpfWZ1bmN0aW9uIHAoRyl7c3dpdGNoKEcua2luZCl7Y2FzZSA3OTpjYXNlIDIyMTpjYXNlIDI3OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIG0oRyxvZSl7cmV0dXJuIGUuaXNCaW5hcnlFeHByZXNzaW9uKEcpP0cub3BlcmF0b3JUb2tlbi5raW5kPT09Mjc/ZS5ldmVyeShbRy5sZWZ0LEcucmlnaHRdLGZ1bmN0aW9uKGYpe3JldHVybiBtKGYsb2UpfSk6Ry5vcGVyYXRvclRva2VuLmtpbmQ9PT02MyYmZS5pc0lkZW50aWZpZXIoRy5sZWZ0KSYmIW9lLmdldFN5bWJvbEF0TG9jYXRpb24oRy5sZWZ0KTohMX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiYWRkTWlzc2luZ0RlY2xhcmVQcm9wZXJ0eVwiLEI9W2UuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF93aWxsX292ZXJ3cml0ZV90aGVfYmFzZV9wcm9wZXJ0eV9pbl8xX0lmX3RoaXNfaXNfaW50ZW50aW9uYWxfYWRkX2FuX2luaXRpYWxpemVyX090aGVyd2lzZV9hZGRfYV9kZWNsYXJlX21vZGlmaWVyX29yX3JlbW92ZV90aGVfcmVkdW5kYW50X2RlY2xhcmF0aW9uLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3ZhciBOPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKHApe3JldHVybiBFKHAsbGUuc291cmNlRmlsZSxsZS5zcGFuLnN0YXJ0KX0pO2lmKE4ubGVuZ3RoPjApcmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LE4sZS5EaWFnbm9zdGljcy5QcmVmaXhfd2l0aF9kZWNsYXJlLHcsZS5EaWFnbm9zdGljcy5QcmVmaXhfYWxsX2luY29ycmVjdF9wcm9wZXJ0eV9kZWNsYXJhdGlvbnNfd2l0aF9kZWNsYXJlKV19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oUSl7dmFyIGxlPW5ldyBlLlNldDtyZXR1cm4gQy5jb2RlRml4QWxsKFEsQixmdW5jdGlvbihOLHApe3JldHVybiBFKE4scC5maWxlLHAuc3RhcnQsbGUpfSl9fSk7ZnVuY3Rpb24gRShRLGxlLE4scCl7dmFyIG09ZS5nZXRUb2tlbkF0UG9zaXRpb24obGUsTik7aWYoISFlLmlzSWRlbnRpZmllcihtKSl7dmFyIEc9bS5wYXJlbnQ7Ry5raW5kPT09MTY3JiYoIXB8fGUudHJ5QWRkVG9TZXQocCxHKSkmJlEuaW5zZXJ0TW9kaWZpZXJCZWZvcmUobGUsMTM1LEcpfX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiYWRkTWlzc2luZ0ludm9jYXRpb25Gb3JEZWNvcmF0b3JcIixCPVtlLkRpYWdub3N0aWNzLl8wX2FjY2VwdHNfdG9vX2Zld19hcmd1bWVudHNfdG9fYmVfdXNlZF9hc19hX2RlY29yYXRvcl9oZXJlX0RpZF95b3VfbWVhbl90b19jYWxsX2l0X2ZpcnN0X2FuZF93cml0ZV8wLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3ZhciBOPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKHApe3JldHVybiBFKHAsbGUuc291cmNlRmlsZSxsZS5zcGFuLnN0YXJ0KX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxOLGUuRGlhZ25vc3RpY3MuQ2FsbF9kZWNvcmF0b3JfZXhwcmVzc2lvbix3LGUuRGlhZ25vc3RpY3MuQWRkX3RvX2FsbF91bmNhbGxlZF9kZWNvcmF0b3JzKV19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oUSl7cmV0dXJuIEMuY29kZUZpeEFsbChRLEIsZnVuY3Rpb24obGUsTil7cmV0dXJuIEUobGUsTi5maWxlLE4uc3RhcnQpfSl9fSk7ZnVuY3Rpb24gRShRLGxlLE4pe3ZhciBwPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKGxlLE4pLG09ZS5maW5kQW5jZXN0b3IocCxlLmlzRGVjb3JhdG9yKTtlLkRlYnVnLmFzc2VydCghIW0sXCJFeHBlY3RlZCBwb3NpdGlvbiB0byBiZSBvd25lZCBieSBhIGRlY29yYXRvci5cIik7dmFyIEc9ZS5mYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKG0uZXhwcmVzc2lvbix2b2lkIDAsdm9pZCAwKTtRLnJlcGxhY2VOb2RlKGxlLG0uZXhwcmVzc2lvbixHKX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiYWRkTmFtZVRvTmFtZWxlc3NQYXJhbWV0ZXJcIixCPVtlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl9oYXNfYV9uYW1lX2J1dF9ub190eXBlX0RpZF95b3VfbWVhbl8wX0NvbG9uXzEuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgobGUsZnVuY3Rpb24ocCl7cmV0dXJuIEUocCxsZS5zb3VyY2VGaWxlLGxlLnNwYW4uc3RhcnQpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LE4sZS5EaWFnbm9zdGljcy5BZGRfcGFyYW1ldGVyX25hbWUsdyxlLkRpYWdub3N0aWNzLkFkZF9uYW1lc190b19hbGxfcGFyYW1ldGVyc193aXRob3V0X25hbWVzKV19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oUSl7cmV0dXJuIEMuY29kZUZpeEFsbChRLEIsZnVuY3Rpb24obGUsTil7cmV0dXJuIEUobGUsTi5maWxlLE4uc3RhcnQpfSl9fSk7ZnVuY3Rpb24gRShRLGxlLE4pe3ZhciBwPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKGxlLE4pLG09cC5wYXJlbnQ7aWYoIWUuaXNQYXJhbWV0ZXIobSkpcmV0dXJuIGUuRGVidWcuZmFpbChcIlRyaWVkIHRvIGFkZCBhIHBhcmFtZXRlciBuYW1lIHRvIGEgbm9uLXBhcmFtZXRlcjogXCIrZS5EZWJ1Zy5mb3JtYXRTeW50YXhLaW5kKHAua2luZCkpO3ZhciBHPW0ucGFyZW50LnBhcmFtZXRlcnMuaW5kZXhPZihtKTtlLkRlYnVnLmFzc2VydCghbS50eXBlLFwiVHJpZWQgdG8gYWRkIGEgcGFyYW1ldGVyIG5hbWUgdG8gYSBwYXJhbWV0ZXIgdGhhdCBhbHJlYWR5IGhhZCBvbmUuXCIpLGUuRGVidWcuYXNzZXJ0KEc+LTEsXCJQYXJhbWV0ZXIgbm90IGZvdW5kIGluIHBhcmVudCBwYXJhbWV0ZXIgbGlzdC5cIik7dmFyIG9lPWUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShtLm5hbWUsdm9pZCAwKSxmPWUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsbS5tb2RpZmllcnMsbS5kb3REb3REb3RUb2tlbixcImFyZ1wiK0csbS5xdWVzdGlvblRva2VuLG0uZG90RG90RG90VG9rZW4/ZS5mYWN0b3J5LmNyZWF0ZUFycmF5VHlwZU5vZGUob2UpOm9lLG0uaW5pdGlhbGl6ZXIpO1EucmVwbGFjZU5vZGUobGUsbSxmKX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiYWRkT3B0aW9uYWxQcm9wZXJ0eVVuZGVmaW5lZFwiLEI9W2UuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV93aXRoX2V4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzX0NvbG9uX3RydWVfQ29uc2lkZXJfYWRkaW5nX3VuZGVmaW5lZF90b190aGVfdHlwZV9vZl90aGVfdGFyZ2V0LmNvZGUsZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xX3dpdGhfZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNfQ29sb25fdHJ1ZV9Db25zaWRlcl9hZGRpbmdfdW5kZWZpbmVkX3RvX3RoZV90eXBlc19vZl90aGVfdGFyZ2V0X3NfcHJvcGVydGllcy5jb2RlLGUuRGlhZ25vc3RpY3MuQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzFfd2l0aF9leGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc19Db2xvbl90cnVlX0NvbnNpZGVyX2FkZGluZ191bmRlZmluZWRfdG9fdGhlX3R5cGVzX29mX3RoZV90YXJnZXRfc19wcm9wZXJ0aWVzLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG09cC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksRz1FKHAuc291cmNlRmlsZSxwLnNwYW4sbSk7aWYoISFHLmxlbmd0aCl7dmFyIG9lPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHAsZnVuY3Rpb24oZil7cmV0dXJuIE4oZixHKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb25XaXRob3V0Rml4QWxsKHcsb2UsZS5EaWFnbm9zdGljcy5BZGRfdW5kZWZpbmVkX3RvX29wdGlvbmFsX3Byb3BlcnR5X3R5cGUpXX19LGZpeElkczpbd119KTtmdW5jdGlvbiBFKHAsbSxHKXt2YXIgb2UsZixUPWxlKGUuZ2V0Rml4YWJsZUVycm9yU3BhbkV4cHJlc3Npb24ocCxtKSxHKTtpZighVClyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciBLPVQuc291cmNlLGI9VC50YXJnZXQsc2U9UShLLGIsRyk/Ry5nZXRUeXBlQXRMb2NhdGlvbihiLmV4cHJlc3Npb24pOkcuZ2V0VHlwZUF0TG9jYXRpb24oYik7cmV0dXJuISgoZj0ob2U9c2Uuc3ltYm9sKT09PW51bGx8fG9lPT09dm9pZCAwP3ZvaWQgMDpvZS5kZWNsYXJhdGlvbnMpPT09bnVsbHx8Zj09PXZvaWQgMCkmJmYuc29tZShmdW5jdGlvbihKKXtyZXR1cm4gZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKEopLmZpbGVOYW1lLm1hdGNoKC9cXC5kXFwudHMkLyl9KT9lLmVtcHR5QXJyYXk6Ry5nZXRFeGFjdE9wdGlvbmFsUHJvcGVydGllcyhzZSl9ZnVuY3Rpb24gUShwLG0sRyl7cmV0dXJuIGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obSkmJiEhRy5nZXRFeGFjdE9wdGlvbmFsUHJvcGVydGllcyhHLmdldFR5cGVBdExvY2F0aW9uKG0uZXhwcmVzc2lvbikpLmxlbmd0aCYmRy5nZXRUeXBlQXRMb2NhdGlvbihwKT09PUcuZ2V0VW5kZWZpbmVkVHlwZSgpfWZ1bmN0aW9uIGxlKHAsbSl7dmFyIEc7aWYocCl7aWYoZS5pc0JpbmFyeUV4cHJlc3Npb24ocC5wYXJlbnQpJiZwLnBhcmVudC5vcGVyYXRvclRva2VuLmtpbmQ9PT02MylyZXR1cm57c291cmNlOnAucGFyZW50LnJpZ2h0LHRhcmdldDpwLnBhcmVudC5sZWZ0fTtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihwLnBhcmVudCkmJnAucGFyZW50LmluaXRpYWxpemVyKXJldHVybntzb3VyY2U6cC5wYXJlbnQuaW5pdGlhbGl6ZXIsdGFyZ2V0OnAucGFyZW50Lm5hbWV9O2lmKGUuaXNDYWxsRXhwcmVzc2lvbihwLnBhcmVudCkpe3ZhciBvZT1tLmdldFN5bWJvbEF0TG9jYXRpb24ocC5wYXJlbnQuZXhwcmVzc2lvbik7aWYoIShvZSE9bnVsbCYmb2UudmFsdWVEZWNsYXJhdGlvbil8fCFlLmlzRnVuY3Rpb25MaWtlS2luZChvZS52YWx1ZURlY2xhcmF0aW9uLmtpbmQpfHwhZS5pc0V4cHJlc3Npb24ocCkpcmV0dXJuO3ZhciBmPXAucGFyZW50LmFyZ3VtZW50cy5pbmRleE9mKHApO2lmKGY9PT0tMSlyZXR1cm47dmFyIFQ9b2UudmFsdWVEZWNsYXJhdGlvbi5wYXJhbWV0ZXJzW2ZdLm5hbWU7aWYoZS5pc0lkZW50aWZpZXIoVCkpcmV0dXJue3NvdXJjZTpwLHRhcmdldDpUfX1lbHNlIGlmKGUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocC5wYXJlbnQpJiZlLmlzSWRlbnRpZmllcihwLnBhcmVudC5uYW1lKXx8ZS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChwLnBhcmVudCkpe3ZhciBLPWxlKHAucGFyZW50LnBhcmVudCxtKTtpZighSylyZXR1cm47dmFyIGI9bS5nZXRQcm9wZXJ0eU9mVHlwZShtLmdldFR5cGVBdExvY2F0aW9uKEsudGFyZ2V0KSxwLnBhcmVudC5uYW1lLnRleHQpLHNlPShHPWI9PW51bGw/dm9pZCAwOmIuZGVjbGFyYXRpb25zKT09PW51bGx8fEc9PT12b2lkIDA/dm9pZCAwOkdbMF07cmV0dXJuIHNlP3tzb3VyY2U6ZS5pc1Byb3BlcnR5QXNzaWdubWVudChwLnBhcmVudCk/cC5wYXJlbnQuaW5pdGlhbGl6ZXI6cC5wYXJlbnQubmFtZSx0YXJnZXQ6c2V9OnZvaWQgMH19ZWxzZSByZXR1cm59ZnVuY3Rpb24gTihwLG0pe2Zvcih2YXIgRz0wLG9lPW07RzxvZS5sZW5ndGg7RysrKXt2YXIgZj1vZVtHXSxUPWYudmFsdWVEZWNsYXJhdGlvbjtpZihUJiYoZS5pc1Byb3BlcnR5U2lnbmF0dXJlKFQpfHxlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihUKSkmJlQudHlwZSl7dmFyIEs9ZS5mYWN0b3J5LmNyZWF0ZVVuaW9uVHlwZU5vZGUoVmUoVmUoW10sVC50eXBlLmtpbmQ9PT0xODc/VC50eXBlLnR5cGVzOltULnR5cGVdLCEwKSxbZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKFwidW5kZWZpbmVkXCIpXSwhMSkpO3AucmVwbGFjZU5vZGUoVC5nZXRTb3VyY2VGaWxlKCksVC50eXBlLEspfX19fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImFubm90YXRlV2l0aFR5cGVGcm9tSlNEb2NcIixCPVtlLkRpYWdub3N0aWNzLkpTRG9jX3R5cGVzX21heV9iZV9tb3ZlZF90b19UeXBlU2NyaXB0X3R5cGVzLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oSil7dmFyIGllPUUoSi5zb3VyY2VGaWxlLEouc3Bhbi5zdGFydCk7aWYoISFpZSl7dmFyIFI9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoSixmdW5jdGlvbihxKXtyZXR1cm4gTihxLEouc291cmNlRmlsZSxpZSl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsUixlLkRpYWdub3N0aWNzLkFubm90YXRlX3dpdGhfdHlwZV9mcm9tX0pTRG9jLHcsZS5EaWFnbm9zdGljcy5Bbm5vdGF0ZV9ldmVyeXRoaW5nX3dpdGhfdHlwZXNfZnJvbV9KU0RvYyldfX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihKKXtyZXR1cm4gQy5jb2RlRml4QWxsKEosQixmdW5jdGlvbihpZSxSKXt2YXIgcT1FKFIuZmlsZSxSLnN0YXJ0KTtxJiZOKGllLFIuZmlsZSxxKX0pfX0pO2Z1bmN0aW9uIEUoSixpZSl7dmFyIFI9ZS5nZXRUb2tlbkF0UG9zaXRpb24oSixpZSk7cmV0dXJuIGUudHJ5Q2FzdChlLmlzUGFyYW1ldGVyKFIucGFyZW50KT9SLnBhcmVudC5wYXJlbnQ6Ui5wYXJlbnQsUSl9ZnVuY3Rpb24gUShKKXtyZXR1cm4gcChKKSYmbGUoSil9Qy5wYXJhbWV0ZXJTaG91bGRHZXRUeXBlRnJvbUpTRG9jPVE7ZnVuY3Rpb24gbGUoSil7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihKKT9KLnBhcmFtZXRlcnMuc29tZShsZSl8fCFKLnR5cGUmJiEhZS5nZXRKU0RvY1JldHVyblR5cGUoSik6IUoudHlwZSYmISFlLmdldEpTRG9jVHlwZShKKX1mdW5jdGlvbiBOKEosaWUsUil7aWYoZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKFIpJiYoZS5nZXRKU0RvY1JldHVyblR5cGUoUil8fFIucGFyYW1ldGVycy5zb21lKGZ1bmN0aW9uKCQpe3JldHVybiEhZS5nZXRKU0RvY1R5cGUoJCl9KSkpe2lmKCFSLnR5cGVQYXJhbWV0ZXJzKXt2YXIgcT1lLmdldEpTRG9jVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9ucyhSKTtxLmxlbmd0aCYmSi5pbnNlcnRUeXBlUGFyYW1ldGVycyhpZSxSLHEpfXZhciBPPWUuaXNBcnJvd0Z1bmN0aW9uKFIpJiYhZS5maW5kQ2hpbGRPZktpbmQoUiwyMCxpZSk7TyYmSi5pbnNlcnROb2RlQmVmb3JlKGllLGUuZmlyc3QoUi5wYXJhbWV0ZXJzKSxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjApKTtmb3IodmFyIHZlPTAsZWU9Ui5wYXJhbWV0ZXJzO3ZlPGVlLmxlbmd0aDt2ZSsrKXt2YXIgaGU9ZWVbdmVdO2lmKCFoZS50eXBlKXt2YXIgRj1lLmdldEpTRG9jVHlwZShoZSk7RiYmSi50cnlJbnNlcnRUeXBlQW5ub3RhdGlvbihpZSxoZSxtKEYpKX19aWYoTyYmSi5pbnNlcnROb2RlQWZ0ZXIoaWUsZS5sYXN0KFIucGFyYW1ldGVycyksZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDIxKSksIVIudHlwZSl7dmFyIHg9ZS5nZXRKU0RvY1JldHVyblR5cGUoUik7eCYmSi50cnlJbnNlcnRUeXBlQW5ub3RhdGlvbihpZSxSLG0oeCkpfX1lbHNle3ZhciBYPWUuRGVidWcuY2hlY2tEZWZpbmVkKGUuZ2V0SlNEb2NUeXBlKFIpLFwiQSBKU0RvY1R5cGUgZm9yIHRoaXMgZGVjbGFyYXRpb24gc2hvdWxkIGV4aXN0XCIpO2UuRGVidWcuYXNzZXJ0KCFSLnR5cGUsXCJUaGUgSlNEb2NUeXBlIGRlY2wgc2hvdWxkIGhhdmUgYSB0eXBlXCIpLEoudHJ5SW5zZXJ0VHlwZUFubm90YXRpb24oaWUsUixtKFgpKX19ZnVuY3Rpb24gcChKKXtyZXR1cm4gZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKEopfHxKLmtpbmQ9PT0yNTR8fEoua2luZD09PTE2Nnx8Si5raW5kPT09MTY3fWZ1bmN0aW9uIG0oSil7c3dpdGNoKEoua2luZCl7Y2FzZSAzMTI6Y2FzZSAzMTM6cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShcImFueVwiLGUuZW1wdHlBcnJheSk7Y2FzZSAzMTY6cmV0dXJuIEcoSik7Y2FzZSAzMTU6cmV0dXJuIG0oSi50eXBlKTtjYXNlIDMxNDpyZXR1cm4gb2UoSik7Y2FzZSAzMTg6cmV0dXJuIGYoSik7Y2FzZSAzMTc6cmV0dXJuIFQoSik7Y2FzZSAxNzg6cmV0dXJuIGIoSik7ZGVmYXVsdDp2YXIgaWU9ZS52aXNpdEVhY2hDaGlsZChKLG0sZS5udWxsVHJhbnNmb3JtYXRpb25Db250ZXh0KTtyZXR1cm4gZS5zZXRFbWl0RmxhZ3MoaWUsMSksaWV9fWZ1bmN0aW9uIEcoSil7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVVbmlvblR5cGVOb2RlKFtlLnZpc2l0Tm9kZShKLnR5cGUsbSksZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKFwidW5kZWZpbmVkXCIsZS5lbXB0eUFycmF5KV0pfWZ1bmN0aW9uIG9lKEope3JldHVybiBlLmZhY3RvcnkuY3JlYXRlVW5pb25UeXBlTm9kZShbZS52aXNpdE5vZGUoSi50eXBlLG0pLGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShcIm51bGxcIixlLmVtcHR5QXJyYXkpXSl9ZnVuY3Rpb24gZihKKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUFycmF5VHlwZU5vZGUoZS52aXNpdE5vZGUoSi50eXBlLG0pKX1mdW5jdGlvbiBUKEope3ZhciBpZTtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUZ1bmN0aW9uVHlwZU5vZGUoZS5lbXB0eUFycmF5LEoucGFyYW1ldGVycy5tYXAoSyksKGllPUoudHlwZSkhPT1udWxsJiZpZSE9PXZvaWQgMD9pZTplLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDEzMCkpfWZ1bmN0aW9uIEsoSil7dmFyIGllPUoucGFyZW50LnBhcmFtZXRlcnMuaW5kZXhPZihKKSxSPUoudHlwZS5raW5kPT09MzE4JiZpZT09PUoucGFyZW50LnBhcmFtZXRlcnMubGVuZ3RoLTEscT1KLm5hbWV8fChSP1wicmVzdFwiOlwiYXJnXCIraWUpLE89Uj9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjUpOkouZG90RG90RG90VG9rZW47cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihKLmRlY29yYXRvcnMsSi5tb2RpZmllcnMsTyxxLEoucXVlc3Rpb25Ub2tlbixlLnZpc2l0Tm9kZShKLnR5cGUsbSksSi5pbml0aWFsaXplcil9ZnVuY3Rpb24gYihKKXt2YXIgaWU9Si50eXBlTmFtZSxSPUoudHlwZUFyZ3VtZW50cztpZihlLmlzSWRlbnRpZmllcihKLnR5cGVOYW1lKSl7aWYoZS5pc0pTRG9jSW5kZXhTaWduYXR1cmUoSikpcmV0dXJuIHNlKEopO3ZhciBxPUoudHlwZU5hbWUudGV4dDtzd2l0Y2goSi50eXBlTmFtZS50ZXh0KXtjYXNlXCJTdHJpbmdcIjpjYXNlXCJCb29sZWFuXCI6Y2FzZVwiT2JqZWN0XCI6Y2FzZVwiTnVtYmVyXCI6cT1xLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZVwiYXJyYXlcIjpjYXNlXCJkYXRlXCI6Y2FzZVwicHJvbWlzZVwiOnE9cVswXS50b1VwcGVyQ2FzZSgpK3Euc2xpY2UoMSk7YnJlYWt9aWU9ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIocSksKHE9PT1cIkFycmF5XCJ8fHE9PT1cIlByb21pc2VcIikmJiFKLnR5cGVBcmd1bWVudHM/Uj1lLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KFtlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoXCJhbnlcIixlLmVtcHR5QXJyYXkpXSk6Uj1lLnZpc2l0Tm9kZXMoSi50eXBlQXJndW1lbnRzLG0pfXJldHVybiBlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoaWUsUil9ZnVuY3Rpb24gc2UoSil7dmFyIGllPWUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCxKLnR5cGVBcmd1bWVudHNbMF0ua2luZD09PTE0Nz9cIm5cIjpcInNcIix2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKEoudHlwZUFyZ3VtZW50c1swXS5raW5kPT09MTQ3P1wibnVtYmVyXCI6XCJzdHJpbmdcIixbXSksdm9pZCAwKSxSPWUuZmFjdG9yeS5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUoW2UuZmFjdG9yeS5jcmVhdGVJbmRleFNpZ25hdHVyZSh2b2lkIDAsdm9pZCAwLFtpZV0sSi50eXBlQXJndW1lbnRzWzFdKV0pO3JldHVybiBlLnNldEVtaXRGbGFncyhSLDEpLFJ9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImNvbnZlcnRGdW5jdGlvblRvRXM2Q2xhc3NcIixCPVtlLkRpYWdub3N0aWNzLlRoaXNfY29uc3RydWN0b3JfZnVuY3Rpb25fbWF5X2JlX2NvbnZlcnRlZF90b19hX2NsYXNzX2RlY2xhcmF0aW9uLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG09ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgocCxmdW5jdGlvbihHKXtyZXR1cm4gRShHLHAuc291cmNlRmlsZSxwLnNwYW4uc3RhcnQscC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCkscC5wcmVmZXJlbmNlcyxwLnByb2dyYW0uZ2V0Q29tcGlsZXJPcHRpb25zKCkpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LG0sZS5EaWFnbm9zdGljcy5Db252ZXJ0X2Z1bmN0aW9uX3RvX2FuX0VTMjAxNV9jbGFzcyx3LGUuRGlhZ25vc3RpY3MuQ29udmVydF9hbGxfY29uc3RydWN0b3JfZnVuY3Rpb25zX3RvX2NsYXNzZXMpXX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihwKXtyZXR1cm4gQy5jb2RlRml4QWxsKHAsQixmdW5jdGlvbihtLEcpe3JldHVybiBFKG0sRy5maWxlLEcuc3RhcnQscC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCkscC5wcmVmZXJlbmNlcyxwLnByb2dyYW0uZ2V0Q29tcGlsZXJPcHRpb25zKCkpfSl9fSk7ZnVuY3Rpb24gRShwLG0sRyxvZSxmLFQpe3ZhciBLPW9lLmdldFN5bWJvbEF0TG9jYXRpb24oZS5nZXRUb2tlbkF0UG9zaXRpb24obSxHKSk7aWYoIUt8fCFLLnZhbHVlRGVjbGFyYXRpb258fCEoSy5mbGFncyYxOSkpcmV0dXJuO3ZhciBiPUsudmFsdWVEZWNsYXJhdGlvbjtpZihlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihiKSlwLnJlcGxhY2VOb2RlKG0sYixxKGIpKTtlbHNlIGlmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGIpKXt2YXIgc2U9UihiKTtpZighc2UpcmV0dXJuO3ZhciBKPWIucGFyZW50LnBhcmVudDtlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoYi5wYXJlbnQpJiZiLnBhcmVudC5kZWNsYXJhdGlvbnMubGVuZ3RoPjE/KHAuZGVsZXRlKG0sYikscC5pbnNlcnROb2RlQWZ0ZXIobSxKLHNlKSk6cC5yZXBsYWNlTm9kZShtLEosc2UpfWZ1bmN0aW9uIGllKE8pe3ZhciB2ZT1bXTtyZXR1cm4gTy5leHBvcnRzJiZPLmV4cG9ydHMuZm9yRWFjaChmdW5jdGlvbihGKXtpZihGLm5hbWU9PT1cInByb3RvdHlwZVwiJiZGLmRlY2xhcmF0aW9ucyl7dmFyIHg9Ri5kZWNsYXJhdGlvbnNbMF07aWYoRi5kZWNsYXJhdGlvbnMubGVuZ3RoPT09MSYmZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih4KSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oeC5wYXJlbnQpJiZ4LnBhcmVudC5vcGVyYXRvclRva2VuLmtpbmQ9PT02MyYmZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKHgucGFyZW50LnJpZ2h0KSl7dmFyIFg9eC5wYXJlbnQucmlnaHQ7aGUoWC5zeW1ib2wsdm9pZCAwLHZlKX19ZWxzZSBoZShGLFtlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMTI0KV0sdmUpfSksTy5tZW1iZXJzJiZPLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbihGLHgpe3ZhciBYLCQsQSx5O2lmKHg9PT1cImNvbnN0cnVjdG9yXCImJkYudmFsdWVEZWNsYXJhdGlvbil7dmFyIFY9KHk9KEE9KCQ9KFg9Ty5leHBvcnRzKT09PW51bGx8fFg9PT12b2lkIDA/dm9pZCAwOlguZ2V0KFwicHJvdG90eXBlXCIpKT09PW51bGx8fCQ9PT12b2lkIDA/dm9pZCAwOiQuZGVjbGFyYXRpb25zKT09PW51bGx8fEE9PT12b2lkIDA/dm9pZCAwOkFbMF0pPT09bnVsbHx8eT09PXZvaWQgMD92b2lkIDA6eS5wYXJlbnQ7ViYmZS5pc0JpbmFyeUV4cHJlc3Npb24oVikmJmUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihWLnJpZ2h0KSYmZS5zb21lKFYucmlnaHQucHJvcGVydGllcyxsZSl8fHAuZGVsZXRlKG0sRi52YWx1ZURlY2xhcmF0aW9uLnBhcmVudCk7cmV0dXJufWhlKEYsdm9pZCAwLHZlKX0pLHZlO2Z1bmN0aW9uIGVlKEYseCl7cmV0dXJuIGUuaXNBY2Nlc3NFeHByZXNzaW9uKEYpP2UuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRikmJmxlKEYpPyEwOmUuaXNGdW5jdGlvbkxpa2UoeCk6ZS5ldmVyeShGLnByb3BlcnRpZXMsZnVuY3Rpb24oWCl7cmV0dXJuISEoZS5pc01ldGhvZERlY2xhcmF0aW9uKFgpfHxlLmlzR2V0T3JTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKFgpfHxlLmlzUHJvcGVydHlBc3NpZ25tZW50KFgpJiZlLmlzRnVuY3Rpb25FeHByZXNzaW9uKFguaW5pdGlhbGl6ZXIpJiYhIVgubmFtZXx8bGUoWCkpfSl9ZnVuY3Rpb24gaGUoRix4LFgpe2lmKCEoRi5mbGFncyY4MTkyKSYmIShGLmZsYWdzJjQwOTYpKXJldHVybjt2YXIgJD1GLnZhbHVlRGVjbGFyYXRpb24sQT0kLnBhcmVudCx5PUEucmlnaHQ7aWYoIWVlKCQseSl8fGUuc29tZShYLGZ1bmN0aW9uKEgpe3ZhciBJPWUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oSCk7cmV0dXJuISEoSSYmZS5pc0lkZW50aWZpZXIoSSkmJmUuaWRUZXh0KEkpPT09ZS5zeW1ib2xOYW1lKEYpKX0pKXJldHVybjt2YXIgVj1BLnBhcmVudCYmQS5wYXJlbnQua2luZD09PTIzOD9BLnBhcmVudDpBO2lmKHAuZGVsZXRlKG0sViksIXkpe1gucHVzaChlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlEZWNsYXJhdGlvbihbXSx4LEYubmFtZSx2b2lkIDAsdm9pZCAwLHZvaWQgMCkpO3JldHVybn1pZihlLmlzQWNjZXNzRXhwcmVzc2lvbigkKSYmKGUuaXNGdW5jdGlvbkV4cHJlc3Npb24oeSl8fGUuaXNBcnJvd0Z1bmN0aW9uKHkpKSl7dmFyIEw9ZS5nZXRRdW90ZVByZWZlcmVuY2UobSxmKSxQPU4oJCxULEwpO1AmJlkoWCx5LFApO3JldHVybn1lbHNlIGlmKGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbih5KSl7ZS5mb3JFYWNoKHkucHJvcGVydGllcyxmdW5jdGlvbihIKXsoZS5pc01ldGhvZERlY2xhcmF0aW9uKEgpfHxlLmlzR2V0T3JTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKEgpKSYmWC5wdXNoKEgpLGUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQoSCkmJmUuaXNGdW5jdGlvbkV4cHJlc3Npb24oSC5pbml0aWFsaXplcikmJlkoWCxILmluaXRpYWxpemVyLEgubmFtZSksbGUoSCl9KTtyZXR1cm59ZWxzZXtpZihlLmlzU291cmNlRmlsZUpTKG0pfHwhZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigkKSlyZXR1cm47dmFyIGs9ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLHgsJC5uYW1lLHZvaWQgMCx2b2lkIDAseSk7ZS5jb3B5TGVhZGluZ0NvbW1lbnRzKEEucGFyZW50LGssbSksWC5wdXNoKGspO3JldHVybn1mdW5jdGlvbiBZKEgsSSxsKXtyZXR1cm4gZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihJKT9VKEgsSSxsKTpqKEgsSSxsKX1mdW5jdGlvbiBVKEgsSSxsKXt2YXIgZD1lLmNvbmNhdGVuYXRlKHgsUShJLDEzMSkpLEQ9ZS5mYWN0b3J5LmNyZWF0ZU1ldGhvZERlY2xhcmF0aW9uKHZvaWQgMCxkLHZvaWQgMCxsLHZvaWQgMCx2b2lkIDAsSS5wYXJhbWV0ZXJzLHZvaWQgMCxJLmJvZHkpO2UuY29weUxlYWRpbmdDb21tZW50cyhBLEQsbSksSC5wdXNoKEQpfWZ1bmN0aW9uIGooSCxJLGwpe3ZhciBkPUkuYm9keSxEO2Qua2luZD09PTIzNT9EPWQ6RD1lLmZhY3RvcnkuY3JlYXRlQmxvY2soW2UuZmFjdG9yeS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoZCldKTt2YXIgZmU9ZS5jb25jYXRlbmF0ZSh4LFEoSSwxMzEpKSxnPWUuZmFjdG9yeS5jcmVhdGVNZXRob2REZWNsYXJhdGlvbih2b2lkIDAsZmUsdm9pZCAwLGwsdm9pZCAwLHZvaWQgMCxJLnBhcmFtZXRlcnMsdm9pZCAwLEQpO2UuY29weUxlYWRpbmdDb21tZW50cyhBLGcsbSksSC5wdXNoKGcpfX19ZnVuY3Rpb24gUihPKXt2YXIgdmU9Ty5pbml0aWFsaXplcjtpZighKCF2ZXx8IWUuaXNGdW5jdGlvbkV4cHJlc3Npb24odmUpfHwhZS5pc0lkZW50aWZpZXIoTy5uYW1lKSkpe3ZhciBlZT1pZShPLnN5bWJvbCk7dmUuYm9keSYmZWUudW5zaGlmdChlLmZhY3RvcnkuY3JlYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZlLnBhcmFtZXRlcnMsdmUuYm9keSkpO3ZhciBoZT1RKE8ucGFyZW50LnBhcmVudCw5MyksRj1lLmZhY3RvcnkuY3JlYXRlQ2xhc3NEZWNsYXJhdGlvbih2b2lkIDAsaGUsTy5uYW1lLHZvaWQgMCx2b2lkIDAsZWUpO3JldHVybiBGfX1mdW5jdGlvbiBxKE8pe3ZhciB2ZT1pZShLKTtPLmJvZHkmJnZlLnVuc2hpZnQoZS5mYWN0b3J5LmNyZWF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxPLnBhcmFtZXRlcnMsTy5ib2R5KSk7dmFyIGVlPVEoTyw5MyksaGU9ZS5mYWN0b3J5LmNyZWF0ZUNsYXNzRGVjbGFyYXRpb24odm9pZCAwLGVlLE8ubmFtZSx2b2lkIDAsdm9pZCAwLHZlKTtyZXR1cm4gaGV9fWZ1bmN0aW9uIFEocCxtKXtyZXR1cm4gZS5maWx0ZXIocC5tb2RpZmllcnMsZnVuY3Rpb24oRyl7cmV0dXJuIEcua2luZD09PW19KX1mdW5jdGlvbiBsZShwKXtyZXR1cm4gcC5uYW1lPyEhKGUuaXNJZGVudGlmaWVyKHAubmFtZSkmJnAubmFtZS50ZXh0PT09XCJjb25zdHJ1Y3RvclwiKTohMX1mdW5jdGlvbiBOKHAsbSxHKXtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHApKXJldHVybiBwLm5hbWU7dmFyIG9lPXAuYXJndW1lbnRFeHByZXNzaW9uO2lmKGUuaXNOdW1lcmljTGl0ZXJhbChvZSkpcmV0dXJuIG9lO2lmKGUuaXNTdHJpbmdMaXRlcmFsTGlrZShvZSkpcmV0dXJuIGUuaXNJZGVudGlmaWVyVGV4dChvZS50ZXh0LGUuZ2V0RW1pdFNjcmlwdFRhcmdldChtKSk/ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIob2UudGV4dCk6ZS5pc05vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsKG9lKT9lLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChvZS50ZXh0LEc9PT0wKTpvZX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiY29udmVydFRvQXN5bmNGdW5jdGlvblwiLEI9W2UuRGlhZ25vc3RpY3MuVGhpc19tYXlfYmVfY29udmVydGVkX3RvX2FuX2FzeW5jX2Z1bmN0aW9uLmNvZGVdLEU9ITA7Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihnKXtFPSEwO3ZhciBuZT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChnLGZ1bmN0aW9uKHVlKXtyZXR1cm4gbGUodWUsZy5zb3VyY2VGaWxlLGcuc3Bhbi5zdGFydCxnLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSl9KTtyZXR1cm4gRT9bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsbmUsZS5EaWFnbm9zdGljcy5Db252ZXJ0X3RvX2FzeW5jX2Z1bmN0aW9uLHcsZS5EaWFnbm9zdGljcy5Db252ZXJ0X2FsbF90b19hc3luY19mdW5jdGlvbnMpXTpbXX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihnKXtyZXR1cm4gQy5jb2RlRml4QWxsKGcsQixmdW5jdGlvbihuZSx1ZSl7cmV0dXJuIGxlKG5lLHVlLmZpbGUsdWUuc3RhcnQsZy5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCkpfSl9fSk7dmFyIFE7KGZ1bmN0aW9uKGcpe2dbZy5JZGVudGlmaWVyPTBdPVwiSWRlbnRpZmllclwiLGdbZy5CaW5kaW5nUGF0dGVybj0xXT1cIkJpbmRpbmdQYXR0ZXJuXCJ9KShRfHwoUT17fSkpO2Z1bmN0aW9uIGxlKGcsbmUsdWUsV2Upe3ZhciBGZT1lLmdldFRva2VuQXRQb3NpdGlvbihuZSx1ZSksWjtpZihlLmlzSWRlbnRpZmllcihGZSkmJmUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKEZlLnBhcmVudCkmJkZlLnBhcmVudC5pbml0aWFsaXplciYmZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKEZlLnBhcmVudC5pbml0aWFsaXplcik/Wj1GZS5wYXJlbnQuaW5pdGlhbGl6ZXI6Wj1lLnRyeUNhc3QoZS5nZXRDb250YWluaW5nRnVuY3Rpb24oZS5nZXRUb2tlbkF0UG9zaXRpb24obmUsdWUpKSxlLmNhbkJlQ29udmVydGVkVG9Bc3luYyksISFaKXt2YXIgQmU9bmV3IGUuTWFwLGdlPWUuaXNJbkpTRmlsZShaKSxSZT1wKFosV2UpLHplPVQoWixXZSxCZSk7aWYoISFlLnJldHVybnNQcm9taXNlKHplLFdlKSl7dmFyIEVlPXplLmJvZHkmJmUuaXNCbG9jayh6ZS5ib2R5KT9OKHplLmJvZHksV2UpOmUuZW1wdHlBcnJheSxIZT17Y2hlY2tlcjpXZSxzeW50aE5hbWVzTWFwOkJlLHNldE9mRXhwcmVzc2lvbnNUb1JldHVybjpSZSxpc0luSlNGaWxlOmdlfTtpZighIUVlLmxlbmd0aCl7dmFyIHJyPVoubW9kaWZpZXJzP1oubW9kaWZpZXJzLmVuZDpaLmRlY29yYXRvcnM/ZS5za2lwVHJpdmlhKG5lLnRleHQsWi5kZWNvcmF0b3JzLmVuZCk6Wi5nZXRTdGFydChuZSksSWU9Wi5tb2RpZmllcnM/e3ByZWZpeDpcIiBcIn06e3N1ZmZpeDpcIiBcIn07Zy5pbnNlcnRNb2RpZmllckF0KG5lLHJyLDEzMSxJZSk7Zm9yKHZhciBfZT1mdW5jdGlvbihlcil7aWYoZS5mb3JFYWNoQ2hpbGQoZXIsZnVuY3Rpb24gaXIoQ3Ipe2lmKGUuaXNDYWxsRXhwcmVzc2lvbihDcikpe3ZhciBZZT1KKENyLENyLEhlLCExKTtpZihiKCkpcmV0dXJuITA7Zy5yZXBsYWNlTm9kZVdpdGhOb2RlcyhuZSxlcixZZSl9ZWxzZSBpZighZS5pc0Z1bmN0aW9uTGlrZShDcikmJihlLmZvckVhY2hDaGlsZChDcixpciksYigpKSlyZXR1cm4hMH0pLGIoKSlyZXR1cm57dmFsdWU6dm9pZCAwfX0sd2U9MCxkZT1FZTt3ZTxkZS5sZW5ndGg7d2UrKyl7dmFyIHllPWRlW3dlXSxBZT1fZSh5ZSk7aWYodHlwZW9mIEFlPT1cIm9iamVjdFwiKXJldHVybiBBZS52YWx1ZX19fX19ZnVuY3Rpb24gTihnLG5lKXt2YXIgdWU9W107cmV0dXJuIGUuZm9yRWFjaFJldHVyblN0YXRlbWVudChnLGZ1bmN0aW9uKFdlKXtlLmlzUmV0dXJuU3RhdGVtZW50V2l0aEZpeGFibGVQcm9taXNlSGFuZGxlcihXZSxuZSkmJnVlLnB1c2goV2UpfSksdWV9ZnVuY3Rpb24gcChnLG5lKXtpZighZy5ib2R5KXJldHVybiBuZXcgZS5TZXQ7dmFyIHVlPW5ldyBlLlNldDtyZXR1cm4gZS5mb3JFYWNoQ2hpbGQoZy5ib2R5LGZ1bmN0aW9uIFdlKEZlKXttKEZlLG5lLFwidGhlblwiKT8odWUuYWRkKGUuZ2V0Tm9kZUlkKEZlKSksZS5mb3JFYWNoKEZlLmFyZ3VtZW50cyxXZSkpOm0oRmUsbmUsXCJjYXRjaFwiKXx8bShGZSxuZSxcImZpbmFsbHlcIik/KHVlLmFkZChlLmdldE5vZGVJZChGZSkpLGUuZm9yRWFjaENoaWxkKEZlLFdlKSk6ZihGZSxuZSk/dWUuYWRkKGUuZ2V0Tm9kZUlkKEZlKSk6ZS5mb3JFYWNoQ2hpbGQoRmUsV2UpfSksdWV9ZnVuY3Rpb24gbShnLG5lLHVlKXtpZighZS5pc0NhbGxFeHByZXNzaW9uKGcpKXJldHVybiExO3ZhciBXZT1lLmhhc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbldpdGhOYW1lKGcsdWUpLEZlPVdlJiZuZS5nZXRUeXBlQXRMb2NhdGlvbihnKTtyZXR1cm4hIShGZSYmbmUuZ2V0UHJvbWlzZWRUeXBlT2ZQcm9taXNlKEZlKSl9ZnVuY3Rpb24gRyhnLG5lKXtyZXR1cm4oZS5nZXRPYmplY3RGbGFncyhnKSY0KSE9PTAmJmcudGFyZ2V0PT09bmV9ZnVuY3Rpb24gb2UoZyxuZSx1ZSl7aWYoZy5leHByZXNzaW9uLm5hbWUuZXNjYXBlZFRleHQhPT1cImZpbmFsbHlcIil7dmFyIFdlPXVlLmdldFR5cGVBdExvY2F0aW9uKGcuZXhwcmVzc2lvbi5leHByZXNzaW9uKTtpZihHKFdlLHVlLmdldFByb21pc2VUeXBlKCkpfHxHKFdlLHVlLmdldFByb21pc2VMaWtlVHlwZSgpKSlpZihnLmV4cHJlc3Npb24ubmFtZS5lc2NhcGVkVGV4dD09PVwidGhlblwiKXtpZihuZT09PWUuZWxlbWVudEF0KGcuYXJndW1lbnRzLDApKXJldHVybiBlLmVsZW1lbnRBdChnLnR5cGVBcmd1bWVudHMsMCk7aWYobmU9PT1lLmVsZW1lbnRBdChnLmFyZ3VtZW50cywxKSlyZXR1cm4gZS5lbGVtZW50QXQoZy50eXBlQXJndW1lbnRzLDEpfWVsc2UgcmV0dXJuIGUuZWxlbWVudEF0KGcudHlwZUFyZ3VtZW50cywwKX19ZnVuY3Rpb24gZihnLG5lKXtyZXR1cm4gZS5pc0V4cHJlc3Npb24oZyk/ISFuZS5nZXRQcm9taXNlZFR5cGVPZlByb21pc2UobmUuZ2V0VHlwZUF0TG9jYXRpb24oZykpOiExfWZ1bmN0aW9uIFQoZyxuZSx1ZSl7dmFyIFdlPW5ldyBlLk1hcCxGZT1lLmNyZWF0ZU11bHRpTWFwKCk7cmV0dXJuIGUuZm9yRWFjaENoaWxkKGcsZnVuY3Rpb24gWihCZSl7aWYoIWUuaXNJZGVudGlmaWVyKEJlKSl7ZS5mb3JFYWNoQ2hpbGQoQmUsWik7cmV0dXJufXZhciBnZT1uZS5nZXRTeW1ib2xBdExvY2F0aW9uKEJlKTtpZihnZSl7dmFyIFJlPW5lLmdldFR5cGVBdExvY2F0aW9uKEJlKSx6ZT15KFJlLG5lKSxFZT1lLmdldFN5bWJvbElkKGdlKS50b1N0cmluZygpO2lmKHplJiYhZS5pc1BhcmFtZXRlcihCZS5wYXJlbnQpJiYhZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKEJlLnBhcmVudCkmJiF1ZS5oYXMoRWUpKXt2YXIgSGU9ZS5maXJzdE9yVW5kZWZpbmVkKHplLnBhcmFtZXRlcnMpLHJyPShIZT09bnVsbD92b2lkIDA6SGUudmFsdWVEZWNsYXJhdGlvbikmJmUuaXNQYXJhbWV0ZXIoSGUudmFsdWVEZWNsYXJhdGlvbikmJmUudHJ5Q2FzdChIZS52YWx1ZURlY2xhcmF0aW9uLm5hbWUsZS5pc0lkZW50aWZpZXIpfHxlLmZhY3RvcnkuY3JlYXRlVW5pcXVlTmFtZShcInJlc3VsdFwiLDE2KSxJZT1LKHJyLEZlKTt1ZS5zZXQoRWUsSWUpLEZlLmFkZChyci50ZXh0LGdlKX1lbHNlIGlmKEJlLnBhcmVudCYmKGUuaXNQYXJhbWV0ZXIoQmUucGFyZW50KXx8ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oQmUucGFyZW50KXx8ZS5pc0JpbmRpbmdFbGVtZW50KEJlLnBhcmVudCkpKXt2YXIgX2U9QmUudGV4dCx3ZT1GZS5nZXQoX2UpO2lmKHdlJiZ3ZS5zb21lKGZ1bmN0aW9uKEFlKXtyZXR1cm4gQWUhPT1nZX0pKXt2YXIgZGU9SyhCZSxGZSk7V2Uuc2V0KEVlLGRlLmlkZW50aWZpZXIpLHVlLnNldChFZSxkZSksRmUuYWRkKF9lLGdlKX1lbHNle3ZhciB5ZT1lLmdldFN5bnRoZXNpemVkRGVlcENsb25lKEJlKTt1ZS5zZXQoRWUsWSh5ZSkpLEZlLmFkZChfZSxnZSl9fX19KSxlLmdldFN5bnRoZXNpemVkRGVlcENsb25lV2l0aFJlcGxhY2VtZW50cyhnLCEwLGZ1bmN0aW9uKFope2lmKGUuaXNCaW5kaW5nRWxlbWVudChaKSYmZS5pc0lkZW50aWZpZXIoWi5uYW1lKSYmZS5pc09iamVjdEJpbmRpbmdQYXR0ZXJuKFoucGFyZW50KSl7dmFyIEJlPW5lLmdldFN5bWJvbEF0TG9jYXRpb24oWi5uYW1lKSxnZT1CZSYmV2UuZ2V0KFN0cmluZyhlLmdldFN5bWJvbElkKEJlKSkpO2lmKGdlJiZnZS50ZXh0IT09KFoubmFtZXx8Wi5wcm9wZXJ0eU5hbWUpLmdldFRleHQoKSlyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUJpbmRpbmdFbGVtZW50KFouZG90RG90RG90VG9rZW4sWi5wcm9wZXJ0eU5hbWV8fFoubmFtZSxnZSxaLmluaXRpYWxpemVyKX1lbHNlIGlmKGUuaXNJZGVudGlmaWVyKFopKXt2YXIgQmU9bmUuZ2V0U3ltYm9sQXRMb2NhdGlvbihaKSxnZT1CZSYmV2UuZ2V0KFN0cmluZyhlLmdldFN5bWJvbElkKEJlKSkpO2lmKGdlKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihnZS50ZXh0KX19KX1mdW5jdGlvbiBLKGcsbmUpe3ZhciB1ZT0obmUuZ2V0KGcudGV4dCl8fGUuZW1wdHlBcnJheSkubGVuZ3RoLFdlPXVlPT09MD9nOmUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGcudGV4dCtcIl9cIit1ZSk7cmV0dXJuIFkoV2UpfWZ1bmN0aW9uIGIoKXtyZXR1cm4hRX1mdW5jdGlvbiBzZSgpe3JldHVybiBFPSExLGUuZW1wdHlBcnJheX1mdW5jdGlvbiBKKGcsbmUsdWUsV2UsRmUpe2lmKG0obmUsdWUuY2hlY2tlcixcInRoZW5cIikpcmV0dXJuIGhlKG5lLGUuZWxlbWVudEF0KG5lLmFyZ3VtZW50cywwKSxlLmVsZW1lbnRBdChuZS5hcmd1bWVudHMsMSksdWUsV2UsRmUpO2lmKG0obmUsdWUuY2hlY2tlcixcImNhdGNoXCIpKXJldHVybiBlZShuZSxlLmVsZW1lbnRBdChuZS5hcmd1bWVudHMsMCksdWUsV2UsRmUpO2lmKG0obmUsdWUuY2hlY2tlcixcImZpbmFsbHlcIikpcmV0dXJuIHZlKG5lLGUuZWxlbWVudEF0KG5lLmFyZ3VtZW50cywwKSx1ZSxXZSxGZSk7aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihuZSkpcmV0dXJuIEooZyxuZS5leHByZXNzaW9uLHVlLFdlLEZlKTt2YXIgWj11ZS5jaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKG5lKTtyZXR1cm4gWiYmdWUuY2hlY2tlci5nZXRQcm9taXNlZFR5cGVPZlByb21pc2UoWik/KGUuRGVidWcuYXNzZXJ0Tm9kZShlLmdldE9yaWdpbmFsTm9kZShuZSkucGFyZW50LGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pLEYoZyxuZSx1ZSxXZSxGZSkpOnNlKCl9ZnVuY3Rpb24gaWUoZyxuZSl7dmFyIHVlPWcuY2hlY2tlcjtpZihuZS5raW5kPT09MTA0KXJldHVybiEwO2lmKGUuaXNJZGVudGlmaWVyKG5lKSYmIWUuaXNHZW5lcmF0ZWRJZGVudGlmaWVyKG5lKSYmZS5pZFRleHQobmUpPT09XCJ1bmRlZmluZWRcIil7dmFyIFdlPXVlLmdldFN5bWJvbEF0TG9jYXRpb24obmUpO3JldHVybiFXZXx8dWUuaXNVbmRlZmluZWRTeW1ib2woV2UpfXJldHVybiExfWZ1bmN0aW9uIFIoZyl7dmFyIG5lPWUuZmFjdG9yeS5jcmVhdGVVbmlxdWVOYW1lKGcuaWRlbnRpZmllci50ZXh0LDE2KTtyZXR1cm4gWShuZSl9ZnVuY3Rpb24gcShnLG5lLHVlKXt2YXIgV2U7cmV0dXJuIHVlJiYhZmUoZyxuZSkmJihkKHVlKT8oV2U9dWUsbmUuc3ludGhOYW1lc01hcC5mb3JFYWNoKGZ1bmN0aW9uKEZlLFope2lmKEZlLmlkZW50aWZpZXIudGV4dD09PXVlLmlkZW50aWZpZXIudGV4dCl7dmFyIEJlPVIodWUpO25lLnN5bnRoTmFtZXNNYXAuc2V0KFosQmUpfX0pKTpXZT1ZKGUuZmFjdG9yeS5jcmVhdGVVbmlxdWVOYW1lKFwicmVzdWx0XCIsMTYpLHVlLnR5cGVzKSxsKFdlKSksV2V9ZnVuY3Rpb24gTyhnLG5lLHVlLFdlLEZlKXt2YXIgWj1bXSxCZTtpZihXZSYmIWZlKGcsbmUpKXtCZT1lLmdldFN5bnRoZXNpemVkRGVlcENsb25lKGwoV2UpKTt2YXIgZ2U9V2UudHlwZXMsUmU9bmUuY2hlY2tlci5nZXRVbmlvblR5cGUoZ2UsMiksemU9bmUuaXNJbkpTRmlsZT92b2lkIDA6bmUuY2hlY2tlci50eXBlVG9UeXBlTm9kZShSZSx2b2lkIDAsdm9pZCAwKSxFZT1bZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oQmUsdm9pZCAwLHplKV0sSGU9ZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoRWUsMSkpO1oucHVzaChIZSl9cmV0dXJuIFoucHVzaCh1ZSksRmUmJkJlJiZEKEZlKSYmWi5wdXNoKGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihlLmdldFN5bnRoZXNpemVkRGVlcENsb25lKEkoRmUpKSx2b2lkIDAsdm9pZCAwLEJlKV0sMikpKSxafWZ1bmN0aW9uIHZlKGcsbmUsdWUsV2UsRmUpe2lmKCFuZXx8aWUodWUsbmUpKXJldHVybiBKKGcsZy5leHByZXNzaW9uLmV4cHJlc3Npb24sdWUsV2UsRmUpO3ZhciBaPXEoZyx1ZSxGZSksQmU9SihnLGcuZXhwcmVzc2lvbi5leHByZXNzaW9uLHVlLCEwLFopO2lmKGIoKSlyZXR1cm4gc2UoKTt2YXIgZ2U9JChuZSxXZSx2b2lkIDAsdm9pZCAwLGcsdWUpO2lmKGIoKSlyZXR1cm4gc2UoKTt2YXIgUmU9ZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKEJlKSx6ZT1lLmZhY3RvcnkuY3JlYXRlQmxvY2soZ2UpLEVlPWUuZmFjdG9yeS5jcmVhdGVUcnlTdGF0ZW1lbnQoUmUsdm9pZCAwLHplKTtyZXR1cm4gTyhnLHVlLEVlLFosRmUpfWZ1bmN0aW9uIGVlKGcsbmUsdWUsV2UsRmUpe2lmKCFuZXx8aWUodWUsbmUpKXJldHVybiBKKGcsZy5leHByZXNzaW9uLmV4cHJlc3Npb24sdWUsV2UsRmUpO3ZhciBaPVAobmUsdWUpLEJlPXEoZyx1ZSxGZSksZ2U9SihnLGcuZXhwcmVzc2lvbi5leHByZXNzaW9uLHVlLCEwLEJlKTtpZihiKCkpcmV0dXJuIHNlKCk7dmFyIFJlPSQobmUsV2UsQmUsWixnLHVlKTtpZihiKCkpcmV0dXJuIHNlKCk7dmFyIHplPWUuZmFjdG9yeS5jcmVhdGVCbG9jayhnZSksRWU9ZS5mYWN0b3J5LmNyZWF0ZUNhdGNoQ2xhdXNlKFomJmUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoSChaKSksZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKFJlKSksSGU9ZS5mYWN0b3J5LmNyZWF0ZVRyeVN0YXRlbWVudCh6ZSxFZSx2b2lkIDApO3JldHVybiBPKGcsdWUsSGUsQmUsRmUpfWZ1bmN0aW9uIGhlKGcsbmUsdWUsV2UsRmUsWil7aWYoIW5lfHxpZShXZSxuZSkpcmV0dXJuIGVlKGcsdWUsV2UsRmUsWik7aWYodWUmJiFpZShXZSx1ZSkpcmV0dXJuIHNlKCk7dmFyIEJlPVAobmUsV2UpLGdlPUooZy5leHByZXNzaW9uLmV4cHJlc3Npb24sZy5leHByZXNzaW9uLmV4cHJlc3Npb24sV2UsITAsQmUpO2lmKGIoKSlyZXR1cm4gc2UoKTt2YXIgUmU9JChuZSxGZSxaLEJlLGcsV2UpO3JldHVybiBiKCk/c2UoKTplLmNvbmNhdGVuYXRlKGdlLFJlKX1mdW5jdGlvbiBGKGcsbmUsdWUsV2UsRmUpe2lmKGZlKGcsdWUpKXt2YXIgWj1lLmdldFN5bnRoZXNpemVkRGVlcENsb25lKG5lKTtyZXR1cm4gV2UmJihaPWUuZmFjdG9yeS5jcmVhdGVBd2FpdEV4cHJlc3Npb24oWikpLFtlLmZhY3RvcnkuY3JlYXRlUmV0dXJuU3RhdGVtZW50KFopXX1yZXR1cm4geChGZSxlLmZhY3RvcnkuY3JlYXRlQXdhaXRFeHByZXNzaW9uKG5lKSx2b2lkIDApfWZ1bmN0aW9uIHgoZyxuZSx1ZSl7cmV0dXJuIWd8fGsoZyk/W2UuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KG5lKV06ZChnKSYmZy5oYXNCZWVuRGVjbGFyZWQ/W2UuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGUuZmFjdG9yeS5jcmVhdGVBc3NpZ25tZW50KGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoaihnKSksbmUpKV06W2UuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihlLmdldFN5bnRoZXNpemVkRGVlcENsb25lKEgoZykpLHZvaWQgMCx1ZSxuZSldLDIpKV19ZnVuY3Rpb24gWChnLG5lKXtpZihuZSYmZyl7dmFyIHVlPWUuZmFjdG9yeS5jcmVhdGVVbmlxdWVOYW1lKFwicmVzdWx0XCIsMTYpO3JldHVybiBWZShWZShbXSx4KFkodWUpLGcsbmUpLCEwKSxbZS5mYWN0b3J5LmNyZWF0ZVJldHVyblN0YXRlbWVudCh1ZSldLCExKX1yZXR1cm5bZS5mYWN0b3J5LmNyZWF0ZVJldHVyblN0YXRlbWVudChnKV19ZnVuY3Rpb24gJChnLG5lLHVlLFdlLEZlLFope3ZhciBCZTtzd2l0Y2goZy5raW5kKXtjYXNlIDEwNDpicmVhaztjYXNlIDIwNjpjYXNlIDc5OmlmKCFXZSlicmVhazt2YXIgZ2U9ZS5mYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoZyksdm9pZCAwLGQoV2UpP1tqKFdlKV06W10pO2lmKGZlKEZlLFopKXJldHVybiBYKGdlLG9lKEZlLGcsWi5jaGVja2VyKSk7dmFyIFJlPVouY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihnKSx6ZT1aLmNoZWNrZXIuZ2V0U2lnbmF0dXJlc09mVHlwZShSZSwwKTtpZighemUubGVuZ3RoKXJldHVybiBzZSgpO3ZhciBFZT16ZVswXS5nZXRSZXR1cm5UeXBlKCksSGU9eCh1ZSxlLmZhY3RvcnkuY3JlYXRlQXdhaXRFeHByZXNzaW9uKGdlKSxvZShGZSxnLFouY2hlY2tlcikpO3JldHVybiB1ZSYmdWUudHlwZXMucHVzaChaLmNoZWNrZXIuZ2V0QXdhaXRlZFR5cGUoRWUpfHxFZSksSGU7Y2FzZSAyMTM6Y2FzZSAyMTQ6e3ZhciBycj1nLmJvZHksSWU9KEJlPXkoWi5jaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGcpLFouY2hlY2tlcikpPT09bnVsbHx8QmU9PT12b2lkIDA/dm9pZCAwOkJlLmdldFJldHVyblR5cGUoKTtpZihlLmlzQmxvY2socnIpKXtmb3IodmFyIF9lPVtdLHdlPSExLGRlPTAseWU9cnIuc3RhdGVtZW50cztkZTx5ZS5sZW5ndGg7ZGUrKyl7dmFyIEFlPXllW2RlXTtpZihlLmlzUmV0dXJuU3RhdGVtZW50KEFlKSlpZih3ZT0hMCxlLmlzUmV0dXJuU3RhdGVtZW50V2l0aEZpeGFibGVQcm9taXNlSGFuZGxlcihBZSxaLmNoZWNrZXIpKV9lPV9lLmNvbmNhdChMKFosQWUsbmUsdWUpKTtlbHNle3ZhciBlcj1JZSYmQWUuZXhwcmVzc2lvbj9BKFouY2hlY2tlcixJZSxBZS5leHByZXNzaW9uKTpBZS5leHByZXNzaW9uO19lLnB1c2guYXBwbHkoX2UsWChlcixvZShGZSxnLFouY2hlY2tlcikpKX1lbHNle2lmKG5lJiZlLmZvckVhY2hSZXR1cm5TdGF0ZW1lbnQoQWUsZS5yZXR1cm5UcnVlKSlyZXR1cm4gc2UoKTtfZS5wdXNoKEFlKX19cmV0dXJuIGZlKEZlLFopP19lLm1hcChmdW5jdGlvbihZZSl7cmV0dXJuIGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoWWUpfSk6VihfZSx1ZSxaLHdlKX1lbHNle3ZhciBpcj1lLmlzRml4YWJsZVByb21pc2VIYW5kbGVyKHJyLFouY2hlY2tlcik/TChaLGUuZmFjdG9yeS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQocnIpLG5lLHVlKTplLmVtcHR5QXJyYXk7aWYoaXIubGVuZ3RoPjApcmV0dXJuIGlyO2lmKEllKXt2YXIgZXI9QShaLmNoZWNrZXIsSWUscnIpO2lmKGZlKEZlLFopKXJldHVybiBYKGVyLG9lKEZlLGcsWi5jaGVja2VyKSk7dmFyIENyPXgodWUsZXIsdm9pZCAwKTtyZXR1cm4gdWUmJnVlLnR5cGVzLnB1c2goWi5jaGVja2VyLmdldEF3YWl0ZWRUeXBlKEllKXx8SWUpLENyfWVsc2UgcmV0dXJuIHNlKCl9fWRlZmF1bHQ6cmV0dXJuIHNlKCl9cmV0dXJuIGUuZW1wdHlBcnJheX1mdW5jdGlvbiBBKGcsbmUsdWUpe3ZhciBXZT1lLmdldFN5bnRoZXNpemVkRGVlcENsb25lKHVlKTtyZXR1cm4gZy5nZXRQcm9taXNlZFR5cGVPZlByb21pc2UobmUpP2UuZmFjdG9yeS5jcmVhdGVBd2FpdEV4cHJlc3Npb24oV2UpOldlfWZ1bmN0aW9uIHkoZyxuZSl7dmFyIHVlPW5lLmdldFNpZ25hdHVyZXNPZlR5cGUoZywwKTtyZXR1cm4gZS5sYXN0T3JVbmRlZmluZWQodWUpfWZ1bmN0aW9uIFYoZyxuZSx1ZSxXZSl7Zm9yKHZhciBGZT1bXSxaPTAsQmU9ZztaPEJlLmxlbmd0aDtaKyspe3ZhciBnZT1CZVtaXTtpZihlLmlzUmV0dXJuU3RhdGVtZW50KGdlKSl7aWYoZ2UuZXhwcmVzc2lvbil7dmFyIFJlPWYoZ2UuZXhwcmVzc2lvbix1ZS5jaGVja2VyKT9lLmZhY3RvcnkuY3JlYXRlQXdhaXRFeHByZXNzaW9uKGdlLmV4cHJlc3Npb24pOmdlLmV4cHJlc3Npb247bmU9PT12b2lkIDA/RmUucHVzaChlLmZhY3RvcnkuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChSZSkpOmQobmUpJiZuZS5oYXNCZWVuRGVjbGFyZWQ/RmUucHVzaChlLmZhY3RvcnkuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChlLmZhY3RvcnkuY3JlYXRlQXNzaWdubWVudChqKG5lKSxSZSkpKTpGZS5wdXNoKGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihIKG5lKSx2b2lkIDAsdm9pZCAwLFJlKV0sMikpKX19ZWxzZSBGZS5wdXNoKGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoZ2UpKX1yZXR1cm4hV2UmJm5lIT09dm9pZCAwJiZGZS5wdXNoKGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihIKG5lKSx2b2lkIDAsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwidW5kZWZpbmVkXCIpKV0sMikpKSxGZX1mdW5jdGlvbiBMKGcsbmUsdWUsV2Upe3ZhciBGZT1bXTtyZXR1cm4gZS5mb3JFYWNoQ2hpbGQobmUsZnVuY3Rpb24gWihCZSl7aWYoZS5pc0NhbGxFeHByZXNzaW9uKEJlKSl7dmFyIGdlPUooQmUsQmUsZyx1ZSxXZSk7aWYoRmU9RmUuY29uY2F0KGdlKSxGZS5sZW5ndGg+MClyZXR1cm59ZWxzZSBlLmlzRnVuY3Rpb25MaWtlKEJlKXx8ZS5mb3JFYWNoQ2hpbGQoQmUsWil9KSxGZX1mdW5jdGlvbiBQKGcsbmUpe3ZhciB1ZT1bXSxXZTtpZihlLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oZykpe2lmKGcucGFyYW1ldGVycy5sZW5ndGg+MCl7dmFyIEZlPWcucGFyYW1ldGVyc1swXS5uYW1lO1dlPVooRmUpfX1lbHNlIGUuaXNJZGVudGlmaWVyKGcpP1dlPUJlKGcpOmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZykmJmUuaXNJZGVudGlmaWVyKGcubmFtZSkmJihXZT1CZShnLm5hbWUpKTtpZighV2V8fFwiaWRlbnRpZmllclwiaW4gV2UmJldlLmlkZW50aWZpZXIudGV4dD09PVwidW5kZWZpbmVkXCIpcmV0dXJuO3JldHVybiBXZTtmdW5jdGlvbiBaKHplKXtpZihlLmlzSWRlbnRpZmllcih6ZSkpcmV0dXJuIEJlKHplKTt2YXIgRWU9ZS5mbGF0TWFwKHplLmVsZW1lbnRzLGZ1bmN0aW9uKEhlKXtyZXR1cm4gZS5pc09taXR0ZWRFeHByZXNzaW9uKEhlKT9bXTpbWihIZS5uYW1lKV19KTtyZXR1cm4gVSh6ZSxFZSl9ZnVuY3Rpb24gQmUoemUpe3ZhciBFZT1SZSh6ZSksSGU9Z2UoRWUpO2lmKCFIZSlyZXR1cm4gWSh6ZSx1ZSk7dmFyIHJyPW5lLnN5bnRoTmFtZXNNYXAuZ2V0KGUuZ2V0U3ltYm9sSWQoSGUpLnRvU3RyaW5nKCkpO3JldHVybiBycnx8WSh6ZSx1ZSl9ZnVuY3Rpb24gZ2UoemUpe3JldHVybiB6ZS5zeW1ib2w/emUuc3ltYm9sOm5lLmNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbih6ZSl9ZnVuY3Rpb24gUmUoemUpe3JldHVybiB6ZS5vcmlnaW5hbD96ZS5vcmlnaW5hbDp6ZX19ZnVuY3Rpb24gayhnKXtyZXR1cm4gZz9kKGcpPyFnLmlkZW50aWZpZXIudGV4dDplLmV2ZXJ5KGcuZWxlbWVudHMsayk6ITB9ZnVuY3Rpb24gWShnLG5lKXtyZXR1cm4gbmU9PT12b2lkIDAmJihuZT1bXSkse2tpbmQ6MCxpZGVudGlmaWVyOmcsdHlwZXM6bmUsaGFzQmVlbkRlY2xhcmVkOiExLGhhc0JlZW5SZWZlcmVuY2VkOiExfX1mdW5jdGlvbiBVKGcsbmUsdWUpe3JldHVybiBuZT09PXZvaWQgMCYmKG5lPWUuZW1wdHlBcnJheSksdWU9PT12b2lkIDAmJih1ZT1bXSkse2tpbmQ6MSxiaW5kaW5nUGF0dGVybjpnLGVsZW1lbnRzOm5lLHR5cGVzOnVlfX1mdW5jdGlvbiBqKGcpe3JldHVybiBnLmhhc0JlZW5SZWZlcmVuY2VkPSEwLGcuaWRlbnRpZmllcn1mdW5jdGlvbiBIKGcpe3JldHVybiBkKGcpP2woZyk6SShnKX1mdW5jdGlvbiBJKGcpe2Zvcih2YXIgbmU9MCx1ZT1nLmVsZW1lbnRzO25lPHVlLmxlbmd0aDtuZSsrKXt2YXIgV2U9dWVbbmVdO0goV2UpfXJldHVybiBnLmJpbmRpbmdQYXR0ZXJufWZ1bmN0aW9uIGwoZyl7cmV0dXJuIGcuaGFzQmVlbkRlY2xhcmVkPSEwLGcuaWRlbnRpZmllcn1mdW5jdGlvbiBkKGcpe3JldHVybiBnLmtpbmQ9PT0wfWZ1bmN0aW9uIEQoZyl7cmV0dXJuIGcua2luZD09PTF9ZnVuY3Rpb24gZmUoZyxuZSl7cmV0dXJuISFnLm9yaWdpbmFsJiZuZS5zZXRPZkV4cHJlc3Npb25zVG9SZXR1cm4uaGFzKGUuZ2V0Tm9kZUlkKGcub3JpZ2luYWwpKX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOltlLkRpYWdub3N0aWNzLkZpbGVfaXNfYV9Db21tb25KU19tb2R1bGVfaXRfbWF5X2JlX2NvbnZlcnRlZF90b19hbl9FU19tb2R1bGUuY29kZV0sZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTCl7dmFyIFA9TC5zb3VyY2VGaWxlLGs9TC5wcm9ncmFtLFk9TC5wcmVmZXJlbmNlcyxVPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKEwsZnVuY3Rpb24oail7dmFyIEg9QihQLGsuZ2V0VHlwZUNoZWNrZXIoKSxqLGUuZ2V0RW1pdFNjcmlwdFRhcmdldChrLmdldENvbXBpbGVyT3B0aW9ucygpKSxlLmdldFF1b3RlUHJlZmVyZW5jZShQLFkpKTtpZihIKWZvcih2YXIgST0wLGw9ay5nZXRTb3VyY2VGaWxlcygpO0k8bC5sZW5ndGg7SSsrKXt2YXIgZD1sW0ldO3coZCxQLGosZS5nZXRRdW90ZVByZWZlcmVuY2UoZCxZKSl9fSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbldpdGhvdXRGaXhBbGwoXCJjb252ZXJ0VG9Fc01vZHVsZVwiLFUsZS5EaWFnbm9zdGljcy5Db252ZXJ0X3RvX0VTX21vZHVsZSldfX0pO2Z1bmN0aW9uIHcoTCxQLGssWSl7Zm9yKHZhciBVPTAsaj1MLmltcG9ydHM7VTxqLmxlbmd0aDtVKyspe3ZhciBIPWpbVV0sST1lLmdldFJlc29sdmVkTW9kdWxlKEwsSC50ZXh0LGUuZ2V0TW9kZUZvclVzYWdlTG9jYXRpb24oTCxIKSk7aWYoISghSXx8SS5yZXNvbHZlZEZpbGVOYW1lIT09UC5maWxlTmFtZSkpe3ZhciBsPWUuaW1wb3J0RnJvbU1vZHVsZVNwZWNpZmllcihIKTtzd2l0Y2gobC5raW5kKXtjYXNlIDI2NTprLnJlcGxhY2VOb2RlKEwsbCxlLm1ha2VJbXBvcnQobC5uYW1lLHZvaWQgMCxILFkpKTticmVhaztjYXNlIDIwODplLmlzUmVxdWlyZUNhbGwobCwhMSkmJmsucmVwbGFjZU5vZGUoTCxsLGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZShsKSxcImRlZmF1bHRcIikpO2JyZWFrfX19fWZ1bmN0aW9uIEIoTCxQLGssWSxVKXt2YXIgaj17b3JpZ2luYWw6dmUoTCksYWRkaXRpb25hbDpuZXcgZS5TZXR9LEg9RShMLFAsaik7UShMLEgsayk7Zm9yKHZhciBJPSExLGwsZD0wLEQ9ZS5maWx0ZXIoTC5zdGF0ZW1lbnRzLGUuaXNWYXJpYWJsZVN0YXRlbWVudCk7ZDxELmxlbmd0aDtkKyspe3ZhciBmZT1EW2RdLGc9cChMLGZlLGssUCxqLFksVSk7ZyYmZS5jb3B5RW50cmllcyhnLGwhPW51bGw/bDpsPW5ldyBlLk1hcCl9Zm9yKHZhciBuZT0wLHVlPWUuZmlsdGVyKEwuc3RhdGVtZW50cyxmdW5jdGlvbihGZSl7cmV0dXJuIWUuaXNWYXJpYWJsZVN0YXRlbWVudChGZSl9KTtuZTx1ZS5sZW5ndGg7bmUrKyl7dmFyIGZlPXVlW25lXSxXZT1OKEwsZmUsUCxrLGosWSxILGwsVSk7ST1JfHxXZX1yZXR1cm4gbD09bnVsbHx8bC5mb3JFYWNoKGZ1bmN0aW9uKEZlLFope2sucmVwbGFjZU5vZGUoTCxaLEZlKX0pLEl9ZnVuY3Rpb24gRShMLFAsayl7dmFyIFk9bmV3IGUuTWFwO3JldHVybiBsZShMLGZ1bmN0aW9uKFUpe3ZhciBqPVUubmFtZSxIPWoudGV4dCxJPWoub3JpZ2luYWxLZXl3b3JkS2luZDshWS5oYXMoSCkmJihJIT09dm9pZCAwJiZlLmlzTm9uQ29udGV4dHVhbEtleXdvcmQoSSl8fFAucmVzb2x2ZU5hbWUoSCxVLDExMTU1MSwhMCkpJiZZLnNldChILE8oXCJfXCIuY29uY2F0KEgpLGspKX0pLFl9ZnVuY3Rpb24gUShMLFAsayl7bGUoTCxmdW5jdGlvbihZLFUpe2lmKCFVKXt2YXIgaj1ZLm5hbWUudGV4dDtrLnJlcGxhY2VOb2RlKEwsWSxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihQLmdldChqKXx8aikpfX0pfWZ1bmN0aW9uIGxlKEwsUCl7TC5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gayhZKXtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFkpJiZlLmlzRXhwb3J0c09yTW9kdWxlRXhwb3J0c09yQWxpYXMoTCxZLmV4cHJlc3Npb24pJiZlLmlzSWRlbnRpZmllcihZLm5hbWUpKXt2YXIgVT1ZLnBhcmVudDtQKFksZS5pc0JpbmFyeUV4cHJlc3Npb24oVSkmJlUubGVmdD09PVkmJlUub3BlcmF0b3JUb2tlbi5raW5kPT09NjMpfVkuZm9yRWFjaENoaWxkKGspfSl9ZnVuY3Rpb24gTihMLFAsayxZLFUsaixILEksbCl7c3dpdGNoKFAua2luZCl7Y2FzZSAyMzc6cmV0dXJuIHAoTCxQLFksayxVLGosbCksITE7Y2FzZSAyMzg6e3ZhciBkPVAuZXhwcmVzc2lvbjtzd2l0Y2goZC5raW5kKXtjYXNlIDIwODpyZXR1cm4gZS5pc1JlcXVpcmVDYWxsKGQsITApJiZZLnJlcGxhY2VOb2RlKEwsUCxlLm1ha2VJbXBvcnQodm9pZCAwLHZvaWQgMCxkLmFyZ3VtZW50c1swXSxsKSksITE7Y2FzZSAyMjE6e3ZhciBEPWQub3BlcmF0b3JUb2tlbjtyZXR1cm4gRC5raW5kPT09NjMmJkcoTCxrLGQsWSxILEkpfX19ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gcChMLFAsayxZLFUsaixIKXt2YXIgST1QLmRlY2xhcmF0aW9uTGlzdCxsPSExLGQ9ZS5tYXAoSS5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oZmUpe3ZhciBnPWZlLm5hbWUsbmU9ZmUuaW5pdGlhbGl6ZXI7aWYobmUpe2lmKGUuaXNFeHBvcnRzT3JNb2R1bGVFeHBvcnRzT3JBbGlhcyhMLG5lKSlyZXR1cm4gbD0hMCxWKFtdKTtpZihlLmlzUmVxdWlyZUNhbGwobmUsITApKXJldHVybiBsPSEwLFIoZyxuZS5hcmd1bWVudHNbMF0sWSxVLGosSCk7aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihuZSkmJmUuaXNSZXF1aXJlQ2FsbChuZS5leHByZXNzaW9uLCEwKSlyZXR1cm4gbD0hMCxtKGcsbmUubmFtZS50ZXh0LG5lLmV4cHJlc3Npb24uYXJndW1lbnRzWzBdLFUsSCl9cmV0dXJuIFYoW2UuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtmZV0sSS5mbGFncykpXSl9KTtpZihsKXtrLnJlcGxhY2VOb2RlV2l0aE5vZGVzKEwsUCxlLmZsYXRNYXAoZCxmdW5jdGlvbihmZSl7cmV0dXJuIGZlLm5ld0ltcG9ydHN9KSk7dmFyIEQ7cmV0dXJuIGUuZm9yRWFjaChkLGZ1bmN0aW9uKGZlKXtmZS51c2VTaXRlc1RvVW5xdWFsaWZ5JiZlLmNvcHlFbnRyaWVzKGZlLnVzZVNpdGVzVG9VbnF1YWxpZnksRCE9bnVsbD9EOkQ9bmV3IGUuTWFwKX0pLER9fWZ1bmN0aW9uIG0oTCxQLGssWSxVKXtzd2l0Y2goTC5raW5kKXtjYXNlIDIwMTpjYXNlIDIwMjp7dmFyIGo9TyhQLFkpO3JldHVybiBWKFtYKGosUCxrLFUpLEEodm9pZCAwLEwsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoaikpXSl9Y2FzZSA3OTpyZXR1cm4gVihbWChMLnRleHQsUCxrLFUpXSk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihMLFwiQ29udmVydCB0byBFUyBtb2R1bGUgZ290IGludmFsaWQgc3ludGF4IGZvcm0gXCIuY29uY2F0KEwua2luZCkpfX1mdW5jdGlvbiBHKEwsUCxrLFksVSxqKXt2YXIgSD1rLmxlZnQsST1rLnJpZ2h0O2lmKCFlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEgpKXJldHVybiExO2lmKGUuaXNFeHBvcnRzT3JNb2R1bGVFeHBvcnRzT3JBbGlhcyhMLEgpKWlmKGUuaXNFeHBvcnRzT3JNb2R1bGVFeHBvcnRzT3JBbGlhcyhMLEkpKVkuZGVsZXRlKEwsay5wYXJlbnQpO2Vsc2V7dmFyIGw9ZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKEkpP29lKEksaik6ZS5pc1JlcXVpcmVDYWxsKEksITApP1QoSS5hcmd1bWVudHNbMF0sUCk6dm9pZCAwO3JldHVybiBsPyhZLnJlcGxhY2VOb2RlV2l0aE5vZGVzKEwsay5wYXJlbnQsbFswXSksbFsxXSk6KFkucmVwbGFjZVJhbmdlV2l0aFRleHQoTCxlLmNyZWF0ZVJhbmdlKEguZ2V0U3RhcnQoTCksSS5wb3MpLFwiZXhwb3J0IGRlZmF1bHRcIiksITApfWVsc2UgZS5pc0V4cG9ydHNPck1vZHVsZUV4cG9ydHNPckFsaWFzKEwsSC5leHByZXNzaW9uKSYmZihMLGssWSxVKTtyZXR1cm4hMX1mdW5jdGlvbiBvZShMLFApe3ZhciBrPWUubWFwQWxsT3JGYWlsKEwucHJvcGVydGllcyxmdW5jdGlvbihZKXtzd2l0Y2goWS5raW5kKXtjYXNlIDE3MjpjYXNlIDE3MzpjYXNlIDI5NzpjYXNlIDI5ODpyZXR1cm47Y2FzZSAyOTY6cmV0dXJuIGUuaXNJZGVudGlmaWVyKFkubmFtZSk/SihZLm5hbWUudGV4dCxZLmluaXRpYWxpemVyLFApOnZvaWQgMDtjYXNlIDE2OTpyZXR1cm4gZS5pc0lkZW50aWZpZXIoWS5uYW1lKT9GKFkubmFtZS50ZXh0LFtlLmZhY3RvcnkuY3JlYXRlVG9rZW4oOTMpXSxZLFApOnZvaWQgMDtkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoWSxcIkNvbnZlcnQgdG8gRVM2IGdvdCBpbnZhbGlkIHByb3Aga2luZCBcIi5jb25jYXQoWS5raW5kKSl9fSk7cmV0dXJuIGsmJltrLCExXX1mdW5jdGlvbiBmKEwsUCxrLFkpe3ZhciBVPVAubGVmdC5uYW1lLnRleHQsaj1ZLmdldChVKTtpZihqIT09dm9pZCAwKXt2YXIgSD1bQSh2b2lkIDAsaixQLnJpZ2h0KSx5KFtlLmZhY3RvcnkuY3JlYXRlRXhwb3J0U3BlY2lmaWVyKCExLGosVSldKV07ay5yZXBsYWNlTm9kZVdpdGhOb2RlcyhMLFAucGFyZW50LEgpfWVsc2Ugc2UoUCxMLGspfWZ1bmN0aW9uIFQoTCxQKXt2YXIgaz1MLnRleHQsWT1QLmdldFN5bWJvbEF0TG9jYXRpb24oTCksVT1ZP1kuZXhwb3J0czplLmVtcHR5TWFwO3JldHVybiBVLmhhcyhcImV4cG9ydD1cIik/W1tiKGspXSwhMF06VS5oYXMoXCJkZWZhdWx0XCIpP1Uuc2l6ZT4xP1tbSyhrKSxiKGspXSwhMF06W1tiKGspXSwhMF06W1tLKGspXSwhMV19ZnVuY3Rpb24gSyhMKXtyZXR1cm4geSh2b2lkIDAsTCl9ZnVuY3Rpb24gYihMKXtyZXR1cm4geShbZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydFNwZWNpZmllcighMSx2b2lkIDAsXCJkZWZhdWx0XCIpXSxMKX1mdW5jdGlvbiBzZShMLFAsayl7dmFyIFk9TC5sZWZ0LFU9TC5yaWdodCxqPUwucGFyZW50LEg9WS5uYW1lLnRleHQ7aWYoKGUuaXNGdW5jdGlvbkV4cHJlc3Npb24oVSl8fGUuaXNBcnJvd0Z1bmN0aW9uKFUpfHxlLmlzQ2xhc3NFeHByZXNzaW9uKFUpKSYmKCFVLm5hbWV8fFUubmFtZS50ZXh0PT09SCkpe2sucmVwbGFjZVJhbmdlKFAse3BvczpZLmdldFN0YXJ0KFApLGVuZDpVLmdldFN0YXJ0KFApfSxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oOTMpLHtzdWZmaXg6XCIgXCJ9KSxVLm5hbWV8fGsuaW5zZXJ0TmFtZShQLFUsSCk7dmFyIEk9ZS5maW5kQ2hpbGRPZktpbmQoaiwyNixQKTtJJiZrLmRlbGV0ZShQLEkpfWVsc2Ugay5yZXBsYWNlTm9kZVJhbmdlV2l0aE5vZGVzKFAsWS5leHByZXNzaW9uLGUuZmluZENoaWxkT2ZLaW5kKFksMjQsUCksW2UuZmFjdG9yeS5jcmVhdGVUb2tlbig5MyksZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDg1KV0se2pvaW5lcjpcIiBcIixzdWZmaXg6XCIgXCJ9KX1mdW5jdGlvbiBKKEwsUCxrKXt2YXIgWT1bZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDkzKV07c3dpdGNoKFAua2luZCl7Y2FzZSAyMTM6e3ZhciBVPVAubmFtZTtpZihVJiZVLnRleHQhPT1MKXJldHVybiBqKCl9Y2FzZSAyMTQ6cmV0dXJuIEYoTCxZLFAsayk7Y2FzZSAyMjY6cmV0dXJuIHgoTCxZLFAsayk7ZGVmYXVsdDpyZXR1cm4gaigpfWZ1bmN0aW9uIGooKXtyZXR1cm4gQShZLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEwpLGllKFAsaykpfX1mdW5jdGlvbiBpZShMLFApe2lmKCFQfHwhZS5zb21lKGUuYXJyYXlGcm9tKFAua2V5cygpKSxmdW5jdGlvbihZKXtyZXR1cm4gZS5yYW5nZUNvbnRhaW5zUmFuZ2UoTCxZKX0pKXJldHVybiBMO3JldHVybiBlLmlzQXJyYXkoTCk/ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZXNXaXRoUmVwbGFjZW1lbnRzKEwsITAsayk6ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZVdpdGhSZXBsYWNlbWVudHMoTCwhMCxrKTtmdW5jdGlvbiBrKFkpe2lmKFkua2luZD09PTIwNil7dmFyIFU9UC5nZXQoWSk7cmV0dXJuIFAuZGVsZXRlKFkpLFV9fX1mdW5jdGlvbiBSKEwsUCxrLFksVSxqKXtzd2l0Y2goTC5raW5kKXtjYXNlIDIwMTp7dmFyIEg9ZS5tYXBBbGxPckZhaWwoTC5lbGVtZW50cyxmdW5jdGlvbihsKXtyZXR1cm4gbC5kb3REb3REb3RUb2tlbnx8bC5pbml0aWFsaXplcnx8bC5wcm9wZXJ0eU5hbWUmJiFlLmlzSWRlbnRpZmllcihsLnByb3BlcnR5TmFtZSl8fCFlLmlzSWRlbnRpZmllcihsLm5hbWUpP3ZvaWQgMDokKGwucHJvcGVydHlOYW1lJiZsLnByb3BlcnR5TmFtZS50ZXh0LGwubmFtZS50ZXh0KX0pO2lmKEgpcmV0dXJuIFYoW2UubWFrZUltcG9ydCh2b2lkIDAsSCxQLGopXSl9Y2FzZSAyMDI6e3ZhciBJPU8oQy5tb2R1bGVTcGVjaWZpZXJUb1ZhbGlkSWRlbnRpZmllcihQLnRleHQsVSksWSk7cmV0dXJuIFYoW2UubWFrZUltcG9ydChlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihJKSx2b2lkIDAsUCxqKSxBKHZvaWQgMCxlLmdldFN5bnRoZXNpemVkRGVlcENsb25lKEwpLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEkpKV0pfWNhc2UgNzk6cmV0dXJuIHEoTCxQLGssWSxqKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKEwsXCJDb252ZXJ0IHRvIEVTIG1vZHVsZSBnb3QgaW52YWxpZCBuYW1lIGtpbmQgXCIuY29uY2F0KEwua2luZCkpfX1mdW5jdGlvbiBxKEwsUCxrLFksVSl7Zm9yKHZhciBqPWsuZ2V0U3ltYm9sQXRMb2NhdGlvbihMKSxIPW5ldyBlLk1hcCxJPSExLGwsZD0wLEQ9WS5vcmlnaW5hbC5nZXQoTC50ZXh0KTtkPEQubGVuZ3RoO2QrKyl7dmFyIGZlPURbZF07aWYoIShrLmdldFN5bWJvbEF0TG9jYXRpb24oZmUpIT09anx8ZmU9PT1MKSl7dmFyIGc9ZmUucGFyZW50O2lmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZykpe3ZhciBuZT1nLm5hbWUudGV4dDtpZihuZT09PVwiZGVmYXVsdFwiKXtJPSEwO3ZhciB1ZT1mZS5nZXRUZXh0KCk7KGwhPW51bGw/bDpsPW5ldyBlLk1hcCkuc2V0KGcsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIodWUpKX1lbHNle2UuRGVidWcuYXNzZXJ0KGcuZXhwcmVzc2lvbj09PWZlLFwiRGlkbid0IGV4cGVjdCBleHByZXNzaW9uID09PSB1c2VcIik7dmFyIFdlPUguZ2V0KG5lKTtXZT09PXZvaWQgMCYmKFdlPU8obmUsWSksSC5zZXQobmUsV2UpKSwobCE9bnVsbD9sOmw9bmV3IGUuTWFwKS5zZXQoZyxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihXZSkpfX1lbHNlIEk9ITB9fXZhciBGZT1ILnNpemU9PT0wP3ZvaWQgMDplLmFycmF5RnJvbShlLm1hcEl0ZXJhdG9yKEguZW50cmllcygpLGZ1bmN0aW9uKFope3ZhciBCZT1aWzBdLGdlPVpbMV07cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoITEsQmU9PT1nZT92b2lkIDA6ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoQmUpLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGdlKSl9KSk7cmV0dXJuIEZlfHwoST0hMCksVihbZS5tYWtlSW1wb3J0KEk/ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZShMKTp2b2lkIDAsRmUsUCxVKV0sbCl9ZnVuY3Rpb24gTyhMLFApe2Zvcig7UC5vcmlnaW5hbC5oYXMoTCl8fFAuYWRkaXRpb25hbC5oYXMoTCk7KUw9XCJfXCIuY29uY2F0KEwpO3JldHVybiBQLmFkZGl0aW9uYWwuYWRkKEwpLEx9ZnVuY3Rpb24gdmUoTCl7dmFyIFA9ZS5jcmVhdGVNdWx0aU1hcCgpO3JldHVybiBlZShMLGZ1bmN0aW9uKGspe3JldHVybiBQLmFkZChrLnRleHQsayl9KSxQfWZ1bmN0aW9uIGVlKEwsUCl7ZS5pc0lkZW50aWZpZXIoTCkmJmhlKEwpJiZQKEwpLEwuZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGspe3JldHVybiBlZShrLFApfSl9ZnVuY3Rpb24gaGUoTCl7dmFyIFA9TC5wYXJlbnQ7c3dpdGNoKFAua2luZCl7Y2FzZSAyMDY6cmV0dXJuIFAubmFtZSE9PUw7Y2FzZSAyMDM6cmV0dXJuIFAucHJvcGVydHlOYW1lIT09TDtjYXNlIDI3MDpyZXR1cm4gUC5wcm9wZXJ0eU5hbWUhPT1MO2RlZmF1bHQ6cmV0dXJuITB9fWZ1bmN0aW9uIEYoTCxQLGssWSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmVzKGsuZGVjb3JhdG9ycyksZS5jb25jYXRlbmF0ZShQLGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmVzKGsubW9kaWZpZXJzKSksZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZShrLmFzdGVyaXNrVG9rZW4pLEwsZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZXMoay50eXBlUGFyYW1ldGVycyksZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZXMoay5wYXJhbWV0ZXJzKSxlLmdldFN5bnRoZXNpemVkRGVlcENsb25lKGsudHlwZSksZS5mYWN0b3J5LmNvbnZlcnRlcnMuY29udmVydFRvRnVuY3Rpb25CbG9jayhpZShrLmJvZHksWSkpKX1mdW5jdGlvbiB4KEwsUCxrLFkpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlQ2xhc3NEZWNsYXJhdGlvbihlLmdldFN5bnRoZXNpemVkRGVlcENsb25lcyhrLmRlY29yYXRvcnMpLGUuY29uY2F0ZW5hdGUoUCxlLmdldFN5bnRoZXNpemVkRGVlcENsb25lcyhrLm1vZGlmaWVycykpLEwsZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZXMoay50eXBlUGFyYW1ldGVycyksZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZXMoay5oZXJpdGFnZUNsYXVzZXMpLGllKGsubWVtYmVycyxZKSl9ZnVuY3Rpb24gWChMLFAsayxZKXtyZXR1cm4gUD09PVwiZGVmYXVsdFwiP2UubWFrZUltcG9ydChlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihMKSx2b2lkIDAsayxZKTplLm1ha2VJbXBvcnQodm9pZCAwLFskKFAsTCldLGssWSl9ZnVuY3Rpb24gJChMLFApe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKCExLEwhPT12b2lkIDAmJkwhPT1QP2UuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEwpOnZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihQKSl9ZnVuY3Rpb24gQShMLFAsayl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudChMLGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oUCx2b2lkIDAsdm9pZCAwLGspXSwyKSl9ZnVuY3Rpb24geShMLFApe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxMJiZlLmZhY3RvcnkuY3JlYXRlTmFtZWRFeHBvcnRzKEwpLFA9PT12b2lkIDA/dm9pZCAwOmUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKFApKX1mdW5jdGlvbiBWKEwsUCl7cmV0dXJue25ld0ltcG9ydHM6TCx1c2VTaXRlc1RvVW5xdWFsaWZ5OlB9fX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJjb3JyZWN0UXVhbGlmaWVkTmFtZVRvSW5kZXhlZEFjY2Vzc1R5cGVcIixCPVtlLkRpYWdub3N0aWNzLkNhbm5vdF9hY2Nlc3NfMF8xX2JlY2F1c2VfMF9pc19hX3R5cGVfYnV0X25vdF9hX25hbWVzcGFjZV9EaWRfeW91X21lYW5fdG9fcmV0cmlldmVfdGhlX3R5cGVfb2ZfdGhlX3Byb3BlcnR5XzFfaW5fMF93aXRoXzBfMS5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKGxlKXt2YXIgTj1FKGxlLnNvdXJjZUZpbGUsbGUuc3Bhbi5zdGFydCk7aWYoISFOKXt2YXIgcD1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChsZSxmdW5jdGlvbihHKXtyZXR1cm4gUShHLGxlLnNvdXJjZUZpbGUsTil9KSxtPVwiXCIuY29uY2F0KE4ubGVmdC50ZXh0LCdbXCInKS5jb25jYXQoTi5yaWdodC50ZXh0LCdcIl0nKTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcscCxbZS5EaWFnbm9zdGljcy5SZXdyaXRlX2FzX3RoZV9pbmRleGVkX2FjY2Vzc190eXBlXzAsbV0sdyxlLkRpYWdub3N0aWNzLlJld3JpdGVfYWxsX2FzX2luZGV4ZWRfYWNjZXNzX3R5cGVzKV19fSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKGxlKXtyZXR1cm4gQy5jb2RlRml4QWxsKGxlLEIsZnVuY3Rpb24oTixwKXt2YXIgbT1FKHAuZmlsZSxwLnN0YXJ0KTttJiZRKE4scC5maWxlLG0pfSl9fSk7ZnVuY3Rpb24gRShsZSxOKXt2YXIgcD1lLmZpbmRBbmNlc3RvcihlLmdldFRva2VuQXRQb3NpdGlvbihsZSxOKSxlLmlzUXVhbGlmaWVkTmFtZSk7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCEhcCxcIkV4cGVjdGVkIHBvc2l0aW9uIHRvIGJlIG93bmVkIGJ5IGEgcXVhbGlmaWVkIG5hbWUuXCIpLGUuaXNJZGVudGlmaWVyKHAubGVmdCk/cDp2b2lkIDB9ZnVuY3Rpb24gUShsZSxOLHApe3ZhciBtPXAucmlnaHQudGV4dCxHPWUuZmFjdG9yeS5jcmVhdGVJbmRleGVkQWNjZXNzVHlwZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKHAubGVmdCx2b2lkIDApLGUuZmFjdG9yeS5jcmVhdGVMaXRlcmFsVHlwZU5vZGUoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwobSkpKTtsZS5yZXBsYWNlTm9kZShOLHAsRyl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1bZS5EaWFnbm9zdGljcy5SZV9leHBvcnRpbmdfYV90eXBlX3doZW5fdGhlX2lzb2xhdGVkTW9kdWxlc19mbGFnX2lzX3Byb3ZpZGVkX3JlcXVpcmVzX3VzaW5nX2V4cG9ydF90eXBlLmNvZGVdLEI9XCJjb252ZXJ0VG9UeXBlT25seUV4cG9ydFwiO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOncsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG09ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgocCxmdW5jdGlvbihHKXtyZXR1cm4gUShHLEUocC5zcGFuLHAuc291cmNlRmlsZSkscCl9KTtpZihtLmxlbmd0aClyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKEIsbSxlLkRpYWdub3N0aWNzLkNvbnZlcnRfdG9fdHlwZV9vbmx5X2V4cG9ydCxCLGUuRGlhZ25vc3RpY3MuQ29udmVydF9hbGxfcmVfZXhwb3J0ZWRfdHlwZXNfdG9fdHlwZV9vbmx5X2V4cG9ydHMpXX0sZml4SWRzOltCXSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihwKXt2YXIgbT1uZXcgZS5NYXA7cmV0dXJuIEMuY29kZUZpeEFsbChwLHcsZnVuY3Rpb24oRyxvZSl7dmFyIGY9RShvZSxwLnNvdXJjZUZpbGUpO2YmJmUuYWRkVG9TZWVuKG0sZS5nZXROb2RlSWQoZi5wYXJlbnQucGFyZW50KSkmJlEoRyxmLHApfSl9fSk7ZnVuY3Rpb24gRShOLHApe3JldHVybiBlLnRyeUNhc3QoZS5nZXRUb2tlbkF0UG9zaXRpb24ocCxOLnN0YXJ0KS5wYXJlbnQsZS5pc0V4cG9ydFNwZWNpZmllcil9ZnVuY3Rpb24gUShOLHAsbSl7aWYoISFwKXt2YXIgRz1wLnBhcmVudCxvZT1HLnBhcmVudCxmPWxlKHAsbSk7aWYoZi5sZW5ndGg9PT1HLmVsZW1lbnRzLmxlbmd0aClOLmluc2VydE1vZGlmaWVyQmVmb3JlKG0uc291cmNlRmlsZSwxNTIsRyk7ZWxzZXt2YXIgVD1lLmZhY3RvcnkudXBkYXRlRXhwb3J0RGVjbGFyYXRpb24ob2Usb2UuZGVjb3JhdG9ycyxvZS5tb2RpZmllcnMsITEsZS5mYWN0b3J5LnVwZGF0ZU5hbWVkRXhwb3J0cyhHLGUuZmlsdGVyKEcuZWxlbWVudHMsZnVuY3Rpb24oYil7cmV0dXJuIWUuY29udGFpbnMoZixiKX0pKSxvZS5tb2R1bGVTcGVjaWZpZXIsdm9pZCAwKSxLPWUuZmFjdG9yeS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCEwLGUuZmFjdG9yeS5jcmVhdGVOYW1lZEV4cG9ydHMoZiksb2UubW9kdWxlU3BlY2lmaWVyLHZvaWQgMCk7Ti5yZXBsYWNlTm9kZShtLnNvdXJjZUZpbGUsb2UsVCx7bGVhZGluZ1RyaXZpYU9wdGlvbjplLnRleHRDaGFuZ2VzLkxlYWRpbmdUcml2aWFPcHRpb24uSW5jbHVkZUFsbCx0cmFpbGluZ1RyaXZpYU9wdGlvbjplLnRleHRDaGFuZ2VzLlRyYWlsaW5nVHJpdmlhT3B0aW9uLkV4Y2x1ZGV9KSxOLmluc2VydE5vZGVBZnRlcihtLnNvdXJjZUZpbGUsb2UsSyl9fX1mdW5jdGlvbiBsZShOLHApe3ZhciBtPU4ucGFyZW50O2lmKG0uZWxlbWVudHMubGVuZ3RoPT09MSlyZXR1cm4gbS5lbGVtZW50czt2YXIgRz1lLmdldERpYWdub3N0aWNzV2l0aGluU3BhbihlLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUobSkscC5wcm9ncmFtLmdldFNlbWFudGljRGlhZ25vc3RpY3MocC5zb3VyY2VGaWxlLHAuY2FuY2VsbGF0aW9uVG9rZW4pKTtyZXR1cm4gZS5maWx0ZXIobS5lbGVtZW50cyxmdW5jdGlvbihvZSl7dmFyIGY7cmV0dXJuIG9lPT09Tnx8KChmPWUuZmluZERpYWdub3N0aWNGb3JOb2RlKG9lLEcpKT09PW51bGx8fGY9PT12b2lkIDA/dm9pZCAwOmYuY29kZSk9PT13WzBdfSl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1bZS5EaWFnbm9zdGljcy5UaGlzX2ltcG9ydF9pc19uZXZlcl91c2VkX2FzX2FfdmFsdWVfYW5kX211c3RfdXNlX2ltcG9ydF90eXBlX2JlY2F1c2VfaW1wb3J0c05vdFVzZWRBc1ZhbHVlc19pc19zZXRfdG9fZXJyb3IuY29kZV0sQj1cImNvbnZlcnRUb1R5cGVPbmx5SW1wb3J0XCI7Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6dyxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihOKXt2YXIgcD1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChOLGZ1bmN0aW9uKG0pe3ZhciBHPUUoTi5zcGFuLE4uc291cmNlRmlsZSk7UShtLEcsTil9KTtpZihwLmxlbmd0aClyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKEIscCxlLkRpYWdub3N0aWNzLkNvbnZlcnRfdG9fdHlwZV9vbmx5X2ltcG9ydCxCLGUuRGlhZ25vc3RpY3MuQ29udmVydF9hbGxfaW1wb3J0c19ub3RfdXNlZF9hc19hX3ZhbHVlX3RvX3R5cGVfb25seV9pbXBvcnRzKV19LGZpeElkczpbQl0sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7cmV0dXJuIEMuY29kZUZpeEFsbChOLHcsZnVuY3Rpb24ocCxtKXt2YXIgRz1FKG0sTi5zb3VyY2VGaWxlKTtRKHAsRyxOKX0pfX0pO2Z1bmN0aW9uIEUobGUsTil7cmV0dXJuIGUudHJ5Q2FzdChlLmdldFRva2VuQXRQb3NpdGlvbihOLGxlLnN0YXJ0KS5wYXJlbnQsZS5pc0ltcG9ydERlY2xhcmF0aW9uKX1mdW5jdGlvbiBRKGxlLE4scCl7aWYoISEoTiE9bnVsbCYmTi5pbXBvcnRDbGF1c2UpKXt2YXIgbT1OLmltcG9ydENsYXVzZTtsZS5pbnNlcnRUZXh0KHAuc291cmNlRmlsZSxOLmdldFN0YXJ0KCkrNixcIiB0eXBlXCIpLG0ubmFtZSYmbS5uYW1lZEJpbmRpbmdzJiYobGUuZGVsZXRlTm9kZVJhbmdlRXhjbHVkaW5nRW5kKHAuc291cmNlRmlsZSxtLm5hbWUsTi5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncyksbGUuaW5zZXJ0Tm9kZUJlZm9yZShwLnNvdXJjZUZpbGUsTixlLmZhY3RvcnkudXBkYXRlSW1wb3J0RGVjbGFyYXRpb24oTix2b2lkIDAsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRDbGF1c2UoITAsbS5uYW1lLHZvaWQgMCksTi5tb2R1bGVTcGVjaWZpZXIsdm9pZCAwKSkpfX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiY29udmVydExpdGVyYWxUeXBlVG9NYXBwZWRUeXBlXCIsQj1bZS5EaWFnbm9zdGljcy5fMF9vbmx5X3JlZmVyc190b19hX3R5cGVfYnV0X2lzX2JlaW5nX3VzZWRfYXNfYV92YWx1ZV9oZXJlX0RpZF95b3VfbWVhbl90b191c2VfMV9pbl8wLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7dmFyIHA9Ti5zb3VyY2VGaWxlLG09Ti5zcGFuLEc9RShwLG0uc3RhcnQpO2lmKCEhRyl7dmFyIG9lPUcubmFtZSxmPUcuY29uc3RyYWludCxUPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKE4sZnVuY3Rpb24oSyl7cmV0dXJuIFEoSyxwLEcpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LFQsW2UuRGlhZ25vc3RpY3MuQ29udmVydF8wX3RvXzFfaW5fMCxmLG9lXSx3LGUuRGlhZ25vc3RpY3MuQ29udmVydF9hbGxfdHlwZV9saXRlcmFsc190b19tYXBwZWRfdHlwZSldfX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7cmV0dXJuIEMuY29kZUZpeEFsbChsZSxCLGZ1bmN0aW9uKE4scCl7dmFyIG09RShwLmZpbGUscC5zdGFydCk7bSYmUShOLHAuZmlsZSxtKX0pfX0pO2Z1bmN0aW9uIEUobGUsTil7dmFyIHA9ZS5nZXRUb2tlbkF0UG9zaXRpb24obGUsTik7aWYoZS5pc0lkZW50aWZpZXIocCkpe3ZhciBtPWUuY2FzdChwLnBhcmVudC5wYXJlbnQsZS5pc1Byb3BlcnR5U2lnbmF0dXJlKSxHPXAuZ2V0VGV4dChsZSk7cmV0dXJue2NvbnRhaW5lcjplLmNhc3QobS5wYXJlbnQsZS5pc1R5cGVMaXRlcmFsTm9kZSksdHlwZU5vZGU6bS50eXBlLGNvbnN0cmFpbnQ6RyxuYW1lOkc9PT1cIktcIj9cIlBcIjpcIktcIn19fWZ1bmN0aW9uIFEobGUsTixwKXt2YXIgbT1wLmNvbnRhaW5lcixHPXAudHlwZU5vZGUsb2U9cC5jb25zdHJhaW50LGY9cC5uYW1lO2xlLnJlcGxhY2VOb2RlKE4sbSxlLmZhY3RvcnkuY3JlYXRlTWFwcGVkVHlwZU5vZGUodm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLGYsZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKG9lKSksdm9pZCAwLHZvaWQgMCxHLHZvaWQgMCkpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9W2UuRGlhZ25vc3RpY3MuQ2xhc3NfMF9pbmNvcnJlY3RseV9pbXBsZW1lbnRzX2ludGVyZmFjZV8xLmNvZGUsZS5EaWFnbm9zdGljcy5DbGFzc18wX2luY29ycmVjdGx5X2ltcGxlbWVudHNfY2xhc3NfMV9EaWRfeW91X21lYW5fdG9fZXh0ZW5kXzFfYW5kX2luaGVyaXRfaXRzX21lbWJlcnNfYXNfYV9zdWJjbGFzcy5jb2RlXSxCPVwiZml4Q2xhc3NJbmNvcnJlY3RseUltcGxlbWVudHNJbnRlcmZhY2VcIjtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2Rlczp3LGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKHApe3ZhciBtPXAuc291cmNlRmlsZSxHPXAuc3BhbixvZT1FKG0sRy5zdGFydCk7cmV0dXJuIGUubWFwRGVmaW5lZChlLmdldEVmZmVjdGl2ZUltcGxlbWVudHNUeXBlTm9kZXMob2UpLGZ1bmN0aW9uKGYpe3ZhciBUPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHAsZnVuY3Rpb24oSyl7cmV0dXJuIGxlKHAsZixtLG9lLEsscC5wcmVmZXJlbmNlcyl9KTtyZXR1cm4gVC5sZW5ndGg9PT0wP3ZvaWQgMDpDLmNyZWF0ZUNvZGVGaXhBY3Rpb24oQixULFtlLkRpYWdub3N0aWNzLkltcGxlbWVudF9pbnRlcmZhY2VfMCxmLmdldFRleHQobSldLEIsZS5EaWFnbm9zdGljcy5JbXBsZW1lbnRfYWxsX3VuaW1wbGVtZW50ZWRfaW50ZXJmYWNlcyl9KX0sZml4SWRzOltCXSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihwKXt2YXIgbT1uZXcgZS5NYXA7cmV0dXJuIEMuY29kZUZpeEFsbChwLHcsZnVuY3Rpb24oRyxvZSl7dmFyIGY9RShvZS5maWxlLG9lLnN0YXJ0KTtpZihlLmFkZFRvU2VlbihtLGUuZ2V0Tm9kZUlkKGYpKSlmb3IodmFyIFQ9MCxLPWUuZ2V0RWZmZWN0aXZlSW1wbGVtZW50c1R5cGVOb2RlcyhmKTtUPEsubGVuZ3RoO1QrKyl7dmFyIGI9S1tUXTtsZShwLGIsb2UuZmlsZSxmLEcscC5wcmVmZXJlbmNlcyl9fSl9fSk7ZnVuY3Rpb24gRShwLG0pe3JldHVybiBlLkRlYnVnLmNoZWNrRGVmaW5lZChlLmdldENvbnRhaW5pbmdDbGFzcyhlLmdldFRva2VuQXRQb3NpdGlvbihwLG0pKSxcIlRoZXJlIHNob3VsZCBiZSBhIGNvbnRhaW5pbmcgY2xhc3NcIil9ZnVuY3Rpb24gUShwKXtyZXR1cm4hcC52YWx1ZURlY2xhcmF0aW9ufHwhKGUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFncyhwLnZhbHVlRGVjbGFyYXRpb24pJjgpfWZ1bmN0aW9uIGxlKHAsbSxHLG9lLGYsVCl7dmFyIEs9cC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksYj1OKG9lLEspLHNlPUsuZ2V0VHlwZUF0TG9jYXRpb24obSksSj1LLmdldFByb3BlcnRpZXNPZlR5cGUoc2UpLGllPUouZmlsdGVyKGUuYW5kKFEsZnVuY3Rpb24oaGUpe3JldHVybiFiLmhhcyhoZS5lc2NhcGVkTmFtZSl9KSksUj1LLmdldFR5cGVBdExvY2F0aW9uKG9lKSxxPWUuZmluZChvZS5tZW1iZXJzLGZ1bmN0aW9uKGhlKXtyZXR1cm4gZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oaGUpfSk7Ui5nZXROdW1iZXJJbmRleFR5cGUoKXx8dmUoc2UsMSksUi5nZXRTdHJpbmdJbmRleFR5cGUoKXx8dmUoc2UsMCk7dmFyIE89Qy5jcmVhdGVJbXBvcnRBZGRlcihHLHAucHJvZ3JhbSxULHAuaG9zdCk7Qy5jcmVhdGVNaXNzaW5nTWVtYmVyTm9kZXMob2UsaWUsRyxwLFQsTyxmdW5jdGlvbihoZSl7cmV0dXJuIGVlKEcsb2UsaGUpfSksTy53cml0ZUZpeGVzKGYpO2Z1bmN0aW9uIHZlKGhlLEYpe3ZhciB4PUsuZ2V0SW5kZXhJbmZvT2ZUeXBlKGhlLEYpO3gmJmVlKEcsb2UsSy5pbmRleEluZm9Ub0luZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oeCxvZSx2b2lkIDAsQy5nZXROb29wU3ltYm9sVHJhY2tlcldpdGhSZXNvbHZlcihwKSkpfWZ1bmN0aW9uIGVlKGhlLEYseCl7cT9mLmluc2VydE5vZGVBZnRlcihoZSxxLHgpOmYuaW5zZXJ0TWVtYmVyQXRTdGFydChoZSxGLHgpfX1mdW5jdGlvbiBOKHAsbSl7dmFyIEc9ZS5nZXRFZmZlY3RpdmVCYXNlVHlwZU5vZGUocCk7aWYoIUcpcmV0dXJuIGUuY3JlYXRlU3ltYm9sVGFibGUoKTt2YXIgb2U9bS5nZXRUeXBlQXRMb2NhdGlvbihHKSxmPW0uZ2V0UHJvcGVydGllc09mVHlwZShvZSk7cmV0dXJuIGUuY3JlYXRlU3ltYm9sVGFibGUoZi5maWx0ZXIoUSkpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7Qy5pbXBvcnRGaXhOYW1lPVwiaW1wb3J0XCI7dmFyIHc9XCJmaXhNaXNzaW5nSW1wb3J0XCIsQj1bZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzAuY29kZSxlLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fMS5jb2RlLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90aGVfaW5zdGFuY2VfbWVtYmVyX3RoaXNfMC5jb2RlLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90aGVfc3RhdGljX21lbWJlcl8xXzAuY29kZSxlLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX25hbWVzcGFjZV8wLmNvZGUsZS5EaWFnbm9zdGljcy5fMF9yZWZlcnNfdG9fYV9VTURfZ2xvYmFsX2J1dF90aGVfY3VycmVudF9maWxlX2lzX2FfbW9kdWxlX0NvbnNpZGVyX2FkZGluZ19hbl9pbXBvcnRfaW5zdGVhZC5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfb25seV9yZWZlcnNfdG9fYV90eXBlX2J1dF9pc19iZWluZ191c2VkX2FzX2FfdmFsdWVfaGVyZS5jb2RlLGUuRGlhZ25vc3RpY3MuTm9fdmFsdWVfZXhpc3RzX2luX3Njb3BlX2Zvcl90aGVfc2hvcnRoYW5kX3Byb3BlcnR5XzBfRWl0aGVyX2RlY2xhcmVfb25lX29yX3Byb3ZpZGVfYW5faW5pdGlhbGl6ZXIuY29kZSxlLkRpYWdub3N0aWNzLl8wX2Nhbm5vdF9iZV91c2VkX2FzX2FfdmFsdWVfYmVjYXVzZV9pdF93YXNfaW1wb3J0ZWRfdXNpbmdfaW1wb3J0X3R5cGUuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihfZSl7dmFyIHdlPV9lLmVycm9yQ29kZSxkZT1fZS5wcmVmZXJlbmNlcyx5ZT1fZS5zb3VyY2VGaWxlLEFlPV9lLnNwYW4sZXI9X2UucHJvZ3JhbSxpcj14KF9lLHdlLEFlLnN0YXJ0LCEwKTtpZighIWlyKXt2YXIgQ3I9aXIuZml4ZXMsWWU9aXIuc3ltYm9sTmFtZSxCcj1pci5lcnJvcklkZW50aWZpZXJUZXh0LEVyPWUuZ2V0UXVvdGVQcmVmZXJlbmNlKHllLGRlKTtyZXR1cm4gQ3IubWFwKGZ1bmN0aW9uKE5lKXtyZXR1cm4gZmUoX2UseWUsWWUsTmUsWWUhPT1CcixFcixlci5nZXRDb21waWxlck9wdGlvbnMoKSl9KX19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oX2Upe3ZhciB3ZT1fZS5zb3VyY2VGaWxlLGRlPV9lLnByb2dyYW0seWU9X2UucHJlZmVyZW5jZXMsQWU9X2UuaG9zdCxlcj1RKHdlLGRlLCEwLHllLEFlKTtyZXR1cm4gQy5lYWNoRGlhZ25vc3RpYyhfZSxCLGZ1bmN0aW9uKGlyKXtyZXR1cm4gZXIuYWRkSW1wb3J0RnJvbURpYWdub3N0aWMoaXIsX2UpfSksQy5jcmVhdGVDb21iaW5lZENvZGVBY3Rpb25zKGUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKF9lLGVyLndyaXRlRml4ZXMpKX19KTtmdW5jdGlvbiBFKF9lLHdlLGRlLHllKXtyZXR1cm4gUShfZSx3ZSwhMSxkZSx5ZSl9Qy5jcmVhdGVJbXBvcnRBZGRlcj1FO2Z1bmN0aW9uIFEoX2Usd2UsZGUseWUsQWUpe3ZhciBlcj13ZS5nZXRDb21waWxlck9wdGlvbnMoKSxpcj1bXSxDcj1bXSxZZT1uZXcgZS5NYXAsQnI9bmV3IGUuTWFwO3JldHVybnthZGRJbXBvcnRGcm9tRGlhZ25vc3RpYzpFcixhZGRJbXBvcnRGcm9tRXhwb3J0ZWRTeW1ib2w6TmUsd3JpdGVGaXhlczpscixoYXNGaXhlczpiZX07ZnVuY3Rpb24gRXIoR2UsdXIpe3ZhciB5cj14KHVyLEdlLmNvZGUsR2Uuc3RhcnQsZGUpOyF5cnx8IXlyLmZpeGVzLmxlbmd0aHx8bih5cil9ZnVuY3Rpb24gTmUoR2UsdXIpe3ZhciB5cj1lLkRlYnVnLmNoZWNrRGVmaW5lZChHZS5wYXJlbnQpLElyPWUuZ2V0TmFtZUZvckV4cG9ydGVkU3ltYm9sKEdlLGUuZ2V0RW1pdFNjcmlwdFRhcmdldChlcikpLHdyPXdlLmdldFR5cGVDaGVja2VyKCksVXI9d3IuZ2V0TWVyZ2VkU3ltYm9sKGUuc2tpcEFsaWFzKEdlLHdyKSksaWk9VChfZSxVcix5cixJciwhMSxBZSx3ZSx5ZSxkZSksbWk9dmUoX2Usd2UpLHBlPUcoX2UsaWkseXIsd2Usdm9pZCAwLCEhdXIsbWksQWUseWUpO3BlJiZuKHtmaXhlczpbcGVdLHN5bWJvbE5hbWU6SXIsZXJyb3JJZGVudGlmaWVyVGV4dDp2b2lkIDB9KX1mdW5jdGlvbiBuKEdlKXt2YXIgdXIseXIsSXI9R2UuZml4ZXMsd3I9R2Uuc3ltYm9sTmFtZSxVcj1lLmZpcnN0KElyKTtzd2l0Y2goVXIua2luZCl7Y2FzZSAwOmlyLnB1c2goVXIpO2JyZWFrO2Nhc2UgMTpDci5wdXNoKFVyKTticmVhaztjYXNlIDI6e3ZhciBpaT1Vci5pbXBvcnRDbGF1c2VPckJpbmRpbmdQYXR0ZXJuLG1pPVVyLmltcG9ydEtpbmQscGU9VXIuYWRkQXNUeXBlT25seSxvcj1TdHJpbmcoZS5nZXROb2RlSWQoaWkpKSxxcj1ZZS5nZXQob3IpO2lmKHFyfHxZZS5zZXQob3IscXI9e2ltcG9ydENsYXVzZU9yQmluZGluZ1BhdHRlcm46aWksZGVmYXVsdEltcG9ydDp2b2lkIDAsbmFtZWRJbXBvcnRzOm5ldyBlLk1hcH0pLG1pPT09MCl7dmFyIHNpPXFyPT1udWxsP3ZvaWQgMDpxci5uYW1lZEltcG9ydHMuZ2V0KHdyKTtxci5uYW1lZEltcG9ydHMuc2V0KHdyLFhpKHNpLHBlKSl9ZWxzZSBlLkRlYnVnLmFzc2VydChxci5kZWZhdWx0SW1wb3J0PT09dm9pZCAwfHxxci5kZWZhdWx0SW1wb3J0Lm5hbWU9PT13cixcIihBZGQgdG8gRXhpc3RpbmcpIERlZmF1bHQgaW1wb3J0IHNob3VsZCBiZSBtaXNzaW5nIG9yIG1hdGNoIHN5bWJvbE5hbWVcIikscXIuZGVmYXVsdEltcG9ydD17bmFtZTp3cixhZGRBc1R5cGVPbmx5OlhpKCh1cj1xci5kZWZhdWx0SW1wb3J0KT09PW51bGx8fHVyPT09dm9pZCAwP3ZvaWQgMDp1ci5hZGRBc1R5cGVPbmx5LHBlKX07YnJlYWt9Y2FzZSAzOnt2YXIgRGk9VXIubW9kdWxlU3BlY2lmaWVyLG1pPVVyLmltcG9ydEtpbmQsd2k9VXIudXNlUmVxdWlyZSxwZT1Vci5hZGRBc1R5cGVPbmx5LHFyPWV0KERpLG1pLHdpLHBlKTtzd2l0Y2goZS5EZWJ1Zy5hc3NlcnQocXIudXNlUmVxdWlyZT09PXdpLFwiKEFkZCBuZXcpIFRyaWVkIHRvIGFkZCBhbiBgaW1wb3J0YCBhbmQgYSBgcmVxdWlyZWAgZm9yIHRoZSBzYW1lIG1vZHVsZVwiKSxtaSl7Y2FzZSAxOmUuRGVidWcuYXNzZXJ0KHFyLmRlZmF1bHRJbXBvcnQ9PT12b2lkIDB8fHFyLmRlZmF1bHRJbXBvcnQubmFtZT09PXdyLFwiKEFkZCBuZXcpIERlZmF1bHQgaW1wb3J0IHNob3VsZCBiZSBtaXNzaW5nIG9yIG1hdGNoIHN5bWJvbE5hbWVcIikscXIuZGVmYXVsdEltcG9ydD17bmFtZTp3cixhZGRBc1R5cGVPbmx5OlhpKCh5cj1xci5kZWZhdWx0SW1wb3J0KT09PW51bGx8fHlyPT09dm9pZCAwP3ZvaWQgMDp5ci5hZGRBc1R5cGVPbmx5LHBlKX07YnJlYWs7Y2FzZSAwOnZhciBzaT0ocXIubmFtZWRJbXBvcnRzfHwocXIubmFtZWRJbXBvcnRzPW5ldyBlLk1hcCkpLmdldCh3cik7cXIubmFtZWRJbXBvcnRzLnNldCh3cixYaShzaSxwZSkpO2JyZWFrO2Nhc2UgMzpjYXNlIDI6ZS5EZWJ1Zy5hc3NlcnQocXIubmFtZXNwYWNlTGlrZUltcG9ydD09PXZvaWQgMHx8cXIubmFtZXNwYWNlTGlrZUltcG9ydC5uYW1lPT09d3IsXCJOYW1lc3BhY2VsaWtlIGltcG9ydCBzaG91ZGwgYmUgbWlzc2luZyBvciBtYXRjaCBzeW1ib2xOYW1lXCIpLHFyLm5hbWVzcGFjZUxpa2VJbXBvcnQ9e2ltcG9ydEtpbmQ6bWksbmFtZTp3cixhZGRBc1R5cGVPbmx5OnBlfTticmVha31icmVha31jYXNlIDQ6YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmFzc2VydE5ldmVyKFVyLFwiZml4IHdhc24ndCBuZXZlciAtIGdvdCBraW5kIFwiLmNvbmNhdChVci5raW5kKSl9ZnVuY3Rpb24gWGkoV3QsWnQpe3JldHVybiBNYXRoLm1heChXdCE9bnVsbD9XdDowLFp0KX1mdW5jdGlvbiBldChXdCxadCxfcixwaSl7dmFyIGFlPUdpKFd0LCEwKSxYZT1HaShXdCwhMSksSnI9QnIuZ2V0KGFlKSx0aT1Cci5nZXQoWGUpLFplPXtkZWZhdWx0SW1wb3J0OnZvaWQgMCxuYW1lZEltcG9ydHM6dm9pZCAwLG5hbWVzcGFjZUxpa2VJbXBvcnQ6dm9pZCAwLHVzZVJlcXVpcmU6X3J9O3JldHVybiBadD09PTEmJnBpPT09Mj9Kcnx8KEJyLnNldChhZSxaZSksWmUpOnBpPT09MSYmKEpyfHx0aSk/SnJ8fHRpOnRpfHwoQnIuc2V0KFhlLFplKSxaZSl9ZnVuY3Rpb24gR2koV3QsWnQpe3JldHVyblwiXCIuY29uY2F0KFp0PzE6MCxcInxcIikuY29uY2F0KFd0KX19ZnVuY3Rpb24gbHIoR2Upe2Zvcih2YXIgdXI9ZS5nZXRRdW90ZVByZWZlcmVuY2UoX2UseWUpLHlyPTAsSXI9aXI7eXI8SXIubGVuZ3RoO3lyKyspe3ZhciB3cj1Jclt5cl07RmUoR2UsX2Usd3IpfWZvcih2YXIgVXI9MCxpaT1DcjtVcjxpaS5sZW5ndGg7VXIrKyl7dmFyIHdyPWlpW1VyXTtaKEdlLF9lLHdyLHVyKX1ZZS5mb3JFYWNoKGZ1bmN0aW9uKHBlKXt2YXIgb3I9cGUuaW1wb3J0Q2xhdXNlT3JCaW5kaW5nUGF0dGVybixxcj1wZS5kZWZhdWx0SW1wb3J0LHNpPXBlLm5hbWVkSW1wb3J0cztXZShHZSxfZSxvcixxcixlLmFycmF5RnJvbShzaS5lbnRyaWVzKCksZnVuY3Rpb24oRGkpe3ZhciB3aT1EaVswXSxYaT1EaVsxXTtyZXR1cm57YWRkQXNUeXBlT25seTpYaSxuYW1lOndpfX0pLGVyKX0pO3ZhciBtaTtCci5mb3JFYWNoKGZ1bmN0aW9uKHBlLG9yKXt2YXIgcXI9cGUudXNlUmVxdWlyZSxzaT1wZS5kZWZhdWx0SW1wb3J0LERpPXBlLm5hbWVkSW1wb3J0cyx3aT1wZS5uYW1lc3BhY2VMaWtlSW1wb3J0LFhpPW9yLnNsaWNlKDIpLGV0PXFyP3plOlJlLEdpPWV0KFhpLHVyLHNpLERpJiZlLmFycmF5RnJvbShEaS5lbnRyaWVzKCksZnVuY3Rpb24oV3Qpe3ZhciBadD1XdFswXSxfcj1XdFsxXTtyZXR1cm57YWRkQXNUeXBlT25seTpfcixuYW1lOlp0fX0pLHdpKTttaT1lLmNvbWJpbmUobWksR2kpfSksbWkmJmUuaW5zZXJ0SW1wb3J0cyhHZSxfZSxtaSwhMCl9ZnVuY3Rpb24gYmUoKXtyZXR1cm4gaXIubGVuZ3RoPjB8fENyLmxlbmd0aD4wfHxZZS5zaXplPjB8fEJyLnNpemU+MH19dmFyIGxlOyhmdW5jdGlvbihfZSl7X2VbX2UuVXNlTmFtZXNwYWNlPTBdPVwiVXNlTmFtZXNwYWNlXCIsX2VbX2UuSnNkb2NUeXBlSW1wb3J0PTFdPVwiSnNkb2NUeXBlSW1wb3J0XCIsX2VbX2UuQWRkVG9FeGlzdGluZz0yXT1cIkFkZFRvRXhpc3RpbmdcIixfZVtfZS5BZGROZXc9M109XCJBZGROZXdcIixfZVtfZS5Qcm9tb3RlVHlwZU9ubHk9NF09XCJQcm9tb3RlVHlwZU9ubHlcIn0pKGxlfHwobGU9e30pKTt2YXIgTjsoZnVuY3Rpb24oX2Upe19lW19lLkFsbG93ZWQ9MV09XCJBbGxvd2VkXCIsX2VbX2UuUmVxdWlyZWQ9Ml09XCJSZXF1aXJlZFwiLF9lW19lLk5vdEFsbG93ZWQ9NF09XCJOb3RBbGxvd2VkXCJ9KShOfHwoTj17fSkpO2Z1bmN0aW9uIHAoX2Usd2UsZGUseWUsQWUsZXIsaXIsQ3IsWWUsQnIpe3ZhciBFcj1pci5nZXRDb21waWxlck9wdGlvbnMoKSxOZT1lLnBhdGhJc0JhcmVTcGVjaWZpZXIoZS5zdHJpcFF1b3Rlcyh3ZS5uYW1lKSk/W2YoX2Usd2UsaXIsZXIpXTpUKGRlLF9lLHdlLHllLEFlLGVyLGlyLEJyLCEwKSxuPXZlKGRlLGlyKSxscj1lLmlzVmFsaWRUeXBlT25seUFsaWFzVXNlU2l0ZShlLmdldFRva2VuQXRQb3NpdGlvbihkZSxZZSkpLGJlPWUuRGVidWcuY2hlY2tEZWZpbmVkKEcoZGUsTmUsd2UsaXIse3N5bWJvbE5hbWU6eWUscG9zaXRpb246WWV9LGxyLG4sZXIsQnIpKTtyZXR1cm57bW9kdWxlU3BlY2lmaWVyOmJlLm1vZHVsZVNwZWNpZmllcixjb2RlQWN0aW9uOm9lKGZlKHtob3N0OmVyLGZvcm1hdENvbnRleHQ6Q3IscHJlZmVyZW5jZXM6QnJ9LGRlLHllLGJlLCExLGUuZ2V0UXVvdGVQcmVmZXJlbmNlKGRlLEJyKSxFcikpfX1DLmdldEltcG9ydENvbXBsZXRpb25BY3Rpb249cDtmdW5jdGlvbiBtKF9lLHdlLGRlLHllLEFlLGVyKXt2YXIgaXI9ZGUuZ2V0Q29tcGlsZXJPcHRpb25zKCksQ3I9SShfZSxkZS5nZXRUeXBlQ2hlY2tlcigpLHdlLGlyKSxZZT1IKF9lLHdlLENyLGRlKSxCcj1DciE9PXdlLnRleHQ7cmV0dXJuIFllJiZvZShmZSh7aG9zdDp5ZSxmb3JtYXRDb250ZXh0OkFlLHByZWZlcmVuY2VzOmVyfSxfZSxDcixZZSxCciwxLGlyKSl9Qy5nZXRQcm9tb3RlVHlwZU9ubHlDb21wbGV0aW9uQWN0aW9uPW07ZnVuY3Rpb24gRyhfZSx3ZSxkZSx5ZSxBZSxlcixpcixDcixZZSl7ZS5EZWJ1Zy5hc3NlcnQod2Uuc29tZShmdW5jdGlvbihFcil7cmV0dXJuIEVyLm1vZHVsZVN5bWJvbD09PWRlfHxFci5zeW1ib2wucGFyZW50PT09ZGV9KSxcIlNvbWUgZXhwb3J0SW5mbyBzaG91bGQgbWF0Y2ggdGhlIHNwZWNpZmllZCBtb2R1bGVTeW1ib2xcIik7dmFyIEJyPWUuY3JlYXRlUGFja2FnZUpzb25JbXBvcnRGaWx0ZXIoX2UsWWUsQ3IpO3JldHVybiAkKGIod2UsQWUsZXIsaXIseWUsX2UsQ3IsWWUpLmZpeGVzLF9lLHllLEJyLENyKX1mdW5jdGlvbiBvZShfZSl7dmFyIHdlPV9lLmRlc2NyaXB0aW9uLGRlPV9lLmNoYW5nZXMseWU9X2UuY29tbWFuZHM7cmV0dXJue2Rlc2NyaXB0aW9uOndlLGNoYW5nZXM6ZGUsY29tbWFuZHM6eWV9fWZ1bmN0aW9uIGYoX2Usd2UsZGUseWUpe3ZhciBBZSxlcixpcj1kZS5nZXRDb21waWxlck9wdGlvbnMoKSxDcj1CcihkZS5nZXRUeXBlQ2hlY2tlcigpLCExKTtpZihDcilyZXR1cm4gQ3I7dmFyIFllPShlcj0oQWU9eWUuZ2V0UGFja2FnZUpzb25BdXRvSW1wb3J0UHJvdmlkZXIpPT09bnVsbHx8QWU9PT12b2lkIDA/dm9pZCAwOkFlLmNhbGwoeWUpKT09PW51bGx8fGVyPT09dm9pZCAwP3ZvaWQgMDplci5nZXRUeXBlQ2hlY2tlcigpO3JldHVybiBlLkRlYnVnLmNoZWNrRGVmaW5lZChZZSYmQnIoWWUsITApLFwiQ291bGQgbm90IGZpbmQgc3ltYm9sIGluIHNwZWNpZmllZCBtb2R1bGUgZm9yIGNvZGUgYWN0aW9uc1wiKTtmdW5jdGlvbiBCcihFcixOZSl7dmFyIG49ZS5nZXREZWZhdWx0TGlrZUV4cG9ydEluZm8od2UsRXIsaXIpO2lmKG4mJmUuc2tpcEFsaWFzKG4uc3ltYm9sLEVyKT09PV9lKXJldHVybntzeW1ib2w6bi5zeW1ib2wsbW9kdWxlU3ltYm9sOndlLG1vZHVsZUZpbGVOYW1lOnZvaWQgMCxleHBvcnRLaW5kOm4uZXhwb3J0S2luZCx0YXJnZXRGbGFnczplLnNraXBBbGlhcyhfZSxFcikuZmxhZ3MsaXNGcm9tUGFja2FnZUpzb246TmV9O3ZhciBscj1Fci50cnlHZXRNZW1iZXJJbk1vZHVsZUV4cG9ydHNBbmRQcm9wZXJ0aWVzKF9lLm5hbWUsd2UpO2lmKGxyJiZlLnNraXBBbGlhcyhscixFcik9PT1fZSlyZXR1cm57c3ltYm9sOmxyLG1vZHVsZVN5bWJvbDp3ZSxtb2R1bGVGaWxlTmFtZTp2b2lkIDAsZXhwb3J0S2luZDowLHRhcmdldEZsYWdzOmUuc2tpcEFsaWFzKF9lLEVyKS5mbGFncyxpc0Zyb21QYWNrYWdlSnNvbjpOZX19fWZ1bmN0aW9uIFQoX2Usd2UsZGUseWUsQWUsZXIsaXIsQ3IsWWUpe3ZhciBCcj1bXSxFcj1pci5nZXRDb21waWxlck9wdGlvbnMoKSxOZT1lLm1lbW9pemVPbmUoZnVuY3Rpb24obHIpe3JldHVybiBlLmNyZWF0ZU1vZHVsZVNwZWNpZmllclJlc29sdXRpb25Ib3N0KGxyP2VyLmdldFBhY2thZ2VKc29uQXV0b0ltcG9ydFByb3ZpZGVyKCk6aXIsZXIpfSk7cmV0dXJuIGUuZm9yRWFjaEV4dGVybmFsTW9kdWxlVG9JbXBvcnRGcm9tKGlyLGVyLFllLGZ1bmN0aW9uKGxyLGJlLEdlLHVyKXt2YXIgeXI9R2UuZ2V0VHlwZUNoZWNrZXIoKTtpZighKGJlJiZsciE9PWRlJiZlLnN0YXJ0c1dpdGgoX2UuZmlsZU5hbWUsZS5nZXREaXJlY3RvcnlQYXRoKGJlLmZpbGVOYW1lKSkpKXt2YXIgSXI9ZS5nZXREZWZhdWx0TGlrZUV4cG9ydEluZm8obHIseXIsRXIpO0lyJiYoSXIubmFtZT09PXllfHxycihscixlLmdldEVtaXRTY3JpcHRUYXJnZXQoRXIpLEFlKT09PXllKSYmZS5za2lwQWxpYXMoSXIuc3ltYm9sLHlyKT09PXdlJiZuKEdlLGJlLHVyKSYmQnIucHVzaCh7c3ltYm9sOklyLnN5bWJvbCxtb2R1bGVTeW1ib2w6bHIsbW9kdWxlRmlsZU5hbWU6YmU9PW51bGw/dm9pZCAwOmJlLmZpbGVOYW1lLGV4cG9ydEtpbmQ6SXIuZXhwb3J0S2luZCx0YXJnZXRGbGFnczplLnNraXBBbGlhcyhJci5zeW1ib2wseXIpLmZsYWdzLGlzRnJvbVBhY2thZ2VKc29uOnVyfSk7Zm9yKHZhciB3cj0wLFVyPXlyLmdldEV4cG9ydHNBbmRQcm9wZXJ0aWVzT2ZNb2R1bGUobHIpO3dyPFVyLmxlbmd0aDt3cisrKXt2YXIgaWk9VXJbd3JdO2lpLm5hbWU9PT15ZSYmeXIuZ2V0TWVyZ2VkU3ltYm9sKGUuc2tpcEFsaWFzKGlpLHlyKSk9PT13ZSYmbihHZSxiZSx1cikmJkJyLnB1c2goe3N5bWJvbDppaSxtb2R1bGVTeW1ib2w6bHIsbW9kdWxlRmlsZU5hbWU6YmU9PW51bGw/dm9pZCAwOmJlLmZpbGVOYW1lLGV4cG9ydEtpbmQ6MCx0YXJnZXRGbGFnczplLnNraXBBbGlhcyhpaSx5cikuZmxhZ3MsaXNGcm9tUGFja2FnZUpzb246dXJ9KX19fSksQnI7ZnVuY3Rpb24gbihscixiZSxHZSl7dmFyIHVyO3JldHVybiFiZXx8ZS5pc0ltcG9ydGFibGVGaWxlKGxyLF9lLGJlLENyLHZvaWQgMCxOZShHZSksKHVyPWVyLmdldE1vZHVsZVNwZWNpZmllckNhY2hlKT09PW51bGx8fHVyPT09dm9pZCAwP3ZvaWQgMDp1ci5jYWxsKGVyKSl9fWZ1bmN0aW9uIEsoX2Usd2UsZGUseWUsQWUsZXIsaXIsQ3IsWWUsQnIpe3ZhciBFcj1iKF9lLHtzeW1ib2xOYW1lOndlLHBvc2l0aW9uOmRlfSx5ZSwhMSxlcixBZSxpcixDcixCciksTmU9RXIuZml4ZXMsbj1Fci5jb21wdXRlZFdpdGhvdXRDYWNoZUNvdW50LGxyPSQoTmUsQWUsZXIsWWV8fGUuY3JlYXRlUGFja2FnZUpzb25JbXBvcnRGaWx0ZXIoQWUsQ3IsaXIpLGlyKTtyZXR1cm4gbHImJktlKEtlKHt9LGxyKSx7Y29tcHV0ZWRXaXRob3V0Q2FjaGVDb3VudDpufSl9Qy5nZXRNb2R1bGVTcGVjaWZpZXJGb3JCZXN0RXhwb3J0SW5mbz1LO2Z1bmN0aW9uIGIoX2Usd2UsZGUseWUsQWUsZXIsaXIsQ3IsWWUpe3ZhciBCcj1BZS5nZXRUeXBlQ2hlY2tlcigpLEVyPWUuZmxhdE1hcChfZSxmdW5jdGlvbih5cil7cmV0dXJuIE8oeXIsQnIsZXIsQWUuZ2V0Q29tcGlsZXJPcHRpb25zKCkpfSksTmU9d2UmJnNlKEVyLHdlLnN5bWJvbE5hbWUsd2UucG9zaXRpb24sQnIpLG49cShFcixkZSxCcixBZS5nZXRDb21waWxlck9wdGlvbnMoKSk7aWYobilyZXR1cm57Y29tcHV0ZWRXaXRob3V0Q2FjaGVDb3VudDowLGZpeGVzOlZlKFZlKFtdLE5lP1tOZV06ZS5lbXB0eUFycmF5LCEwKSxbbl0sITEpfTt2YXIgbHI9aGUoX2UsRXIsQWUsZXIsd2U9PW51bGw/dm9pZCAwOndlLnBvc2l0aW9uLGRlLHllLGlyLENyLFllKSxiZT1sci5maXhlcyxHZT1sci5jb21wdXRlZFdpdGhvdXRDYWNoZUNvdW50LHVyPUdlPT09dm9pZCAwPzA6R2U7cmV0dXJue2NvbXB1dGVkV2l0aG91dENhY2hlQ291bnQ6dXIsZml4ZXM6VmUoVmUoW10sTmU/W05lXTplLmVtcHR5QXJyYXksITApLGJlLCEwKX19ZnVuY3Rpb24gc2UoX2Usd2UsZGUseWUpe3JldHVybiBlLmZpcnN0RGVmaW5lZChfZSxmdW5jdGlvbihBZSl7dmFyIGVyLGlyPUFlLmRlY2xhcmF0aW9uLENyPWllKGlyKSxZZT0oZXI9ZS50cnlHZXRNb2R1bGVTcGVjaWZpZXJGcm9tRGVjbGFyYXRpb24oaXIpKT09PW51bGx8fGVyPT09dm9pZCAwP3ZvaWQgMDplci50ZXh0O2lmKENyJiZZZSl7dmFyIEJyPUooaXIseWUpO2lmKEJyJiZCci5leHBvcnRzLmhhcyhlLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyh3ZSkpKXJldHVybntraW5kOjAsbmFtZXNwYWNlUHJlZml4OkNyLHBvc2l0aW9uOmRlLG1vZHVsZVNwZWNpZmllcjpZZX19fSl9ZnVuY3Rpb24gSihfZSx3ZSl7dmFyIGRlO3N3aXRjaChfZS5raW5kKXtjYXNlIDI1NDpyZXR1cm4gd2UucmVzb2x2ZUV4dGVybmFsTW9kdWxlTmFtZShfZS5pbml0aWFsaXplci5hcmd1bWVudHNbMF0pO2Nhc2UgMjY1OnJldHVybiB3ZS5nZXRBbGlhc2VkU3ltYm9sKF9lLnN5bWJvbCk7Y2FzZSAyNjY6dmFyIHllPWUudHJ5Q2FzdCgoZGU9X2UuaW1wb3J0Q2xhdXNlKT09PW51bGx8fGRlPT09dm9pZCAwP3ZvaWQgMDpkZS5uYW1lZEJpbmRpbmdzLGUuaXNOYW1lc3BhY2VJbXBvcnQpO3JldHVybiB5ZSYmd2UuZ2V0QWxpYXNlZFN5bWJvbCh5ZS5zeW1ib2wpO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoX2UpfX1mdW5jdGlvbiBpZShfZSl7dmFyIHdlLGRlLHllO3N3aXRjaChfZS5raW5kKXtjYXNlIDI1NDpyZXR1cm4od2U9ZS50cnlDYXN0KF9lLm5hbWUsZS5pc0lkZW50aWZpZXIpKT09PW51bGx8fHdlPT09dm9pZCAwP3ZvaWQgMDp3ZS50ZXh0O2Nhc2UgMjY1OnJldHVybiBfZS5uYW1lLnRleHQ7Y2FzZSAyNjY6cmV0dXJuKHllPWUudHJ5Q2FzdCgoZGU9X2UuaW1wb3J0Q2xhdXNlKT09PW51bGx8fGRlPT09dm9pZCAwP3ZvaWQgMDpkZS5uYW1lZEJpbmRpbmdzLGUuaXNOYW1lc3BhY2VJbXBvcnQpKT09PW51bGx8fHllPT09dm9pZCAwP3ZvaWQgMDp5ZS5uYW1lLnRleHQ7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihfZSl9fWZ1bmN0aW9uIFIoX2Usd2UsZGUseWUsQWUsZXIpe3JldHVybiBfZT93ZSYmZXIuaW1wb3J0c05vdFVzZWRBc1ZhbHVlcz09PTJ8fGVyLmlzb2xhdGVkTW9kdWxlcyYmZXIucHJlc2VydmVWYWx1ZUltcG9ydHMmJighKHllJjExMTU1MSl8fCEhQWUuZ2V0VHlwZU9ubHlBbGlhc0RlY2xhcmF0aW9uKGRlKSk/MjoxOjR9ZnVuY3Rpb24gcShfZSx3ZSxkZSx5ZSl7cmV0dXJuIGUuZmlyc3REZWZpbmVkKF9lLGZ1bmN0aW9uKEFlKXt2YXIgZXI9QWUuZGVjbGFyYXRpb24saXI9QWUuaW1wb3J0S2luZCxDcj1BZS5zeW1ib2wsWWU9QWUudGFyZ2V0RmxhZ3M7aWYoIShpcj09PTN8fGlyPT09Mnx8ZXIua2luZD09PTI2NSkpe2lmKGVyLmtpbmQ9PT0yNTQpcmV0dXJuKGlyPT09MHx8aXI9PT0xKSYmZXIubmFtZS5raW5kPT09MjAxP3traW5kOjIsaW1wb3J0Q2xhdXNlT3JCaW5kaW5nUGF0dGVybjplci5uYW1lLGltcG9ydEtpbmQ6aXIsbW9kdWxlU3BlY2lmaWVyOmVyLmluaXRpYWxpemVyLmFyZ3VtZW50c1swXS50ZXh0LGFkZEFzVHlwZU9ubHk6NH06dm9pZCAwO3ZhciBCcj1lci5pbXBvcnRDbGF1c2U7aWYoISghQnJ8fCFlLmlzU3RyaW5nTGl0ZXJhbExpa2UoZXIubW9kdWxlU3BlY2lmaWVyKSkpe3ZhciBFcj1Cci5uYW1lLE5lPUJyLm5hbWVkQmluZGluZ3M7aWYoIShCci5pc1R5cGVPbmx5JiYhKGlyPT09MCYmTmUpKSl7dmFyIG49Uih3ZSwhMSxDcixZZSxkZSx5ZSk7aWYoIShpcj09PTEmJihFcnx8bj09PTImJk5lKSkmJiEoaXI9PT0wJiYoTmU9PW51bGw/dm9pZCAwOk5lLmtpbmQpPT09MjY4KSlyZXR1cm57a2luZDoyLGltcG9ydENsYXVzZU9yQmluZGluZ1BhdHRlcm46QnIsaW1wb3J0S2luZDppcixtb2R1bGVTcGVjaWZpZXI6ZXIubW9kdWxlU3BlY2lmaWVyLnRleHQsYWRkQXNUeXBlT25seTpufX19fX0pfWZ1bmN0aW9uIE8oX2Usd2UsZGUseWUpe3ZhciBBZT1fZS5tb2R1bGVTeW1ib2wsZXI9X2UuZXhwb3J0S2luZCxpcj1fZS50YXJnZXRGbGFncyxDcj1fZS5zeW1ib2w7aWYoIShpciYxMTE1NTEpJiZlLmlzU291cmNlRmlsZUpTKGRlKSlyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciBZZT1ZKGRlLGVyLHllKTtyZXR1cm4gZS5tYXBEZWZpbmVkKGRlLmltcG9ydHMsZnVuY3Rpb24oQnIpe3ZhciBFcj1lLmltcG9ydEZyb21Nb2R1bGVTcGVjaWZpZXIoQnIpO2lmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uSW5pdGlhbGl6ZWRUb1JlcXVpcmUoRXIucGFyZW50KSlyZXR1cm4gd2UucmVzb2x2ZUV4dGVybmFsTW9kdWxlTmFtZShCcik9PT1BZT97ZGVjbGFyYXRpb246RXIucGFyZW50LGltcG9ydEtpbmQ6WWUsc3ltYm9sOkNyLHRhcmdldEZsYWdzOmlyfTp2b2lkIDA7aWYoRXIua2luZD09PTI2Nnx8RXIua2luZD09PTI2NSlyZXR1cm4gd2UuZ2V0U3ltYm9sQXRMb2NhdGlvbihCcik9PT1BZT97ZGVjbGFyYXRpb246RXIsaW1wb3J0S2luZDpZZSxzeW1ib2w6Q3IsdGFyZ2V0RmxhZ3M6aXJ9OnZvaWQgMH0pfWZ1bmN0aW9uIHZlKF9lLHdlKXtpZighZS5pc1NvdXJjZUZpbGVKUyhfZSkpcmV0dXJuITE7aWYoX2UuY29tbW9uSnNNb2R1bGVJbmRpY2F0b3ImJiFfZS5leHRlcm5hbE1vZHVsZUluZGljYXRvcilyZXR1cm4hMDtpZihfZS5leHRlcm5hbE1vZHVsZUluZGljYXRvciYmIV9lLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yKXJldHVybiExO3ZhciBkZT13ZS5nZXRDb21waWxlck9wdGlvbnMoKTtpZihkZS5jb25maWdGaWxlKXJldHVybiBlLmdldEVtaXRNb2R1bGVLaW5kKGRlKTxlLk1vZHVsZUtpbmQuRVMyMDE1O2Zvcih2YXIgeWU9MCxBZT13ZS5nZXRTb3VyY2VGaWxlcygpO3llPEFlLmxlbmd0aDt5ZSsrKXt2YXIgZXI9QWVbeWVdO2lmKCEoZXI9PT1fZXx8IWUuaXNTb3VyY2VGaWxlSlMoZXIpfHx3ZS5pc1NvdXJjZUZpbGVGcm9tRXh0ZXJuYWxMaWJyYXJ5KGVyKSkpe2lmKGVyLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yJiYhZXIuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3IpcmV0dXJuITA7aWYoZXIuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3ImJiFlci5jb21tb25Kc01vZHVsZUluZGljYXRvcilyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gZWUoX2Usd2UsZGUseWUsQWUsZXIsaXIsQ3IsWWUpe3ZhciBCcj1lLmlzU291cmNlRmlsZUpTKHdlKSxFcj1fZS5nZXRDb21waWxlck9wdGlvbnMoKSxOZT1lLmNyZWF0ZU1vZHVsZVNwZWNpZmllclJlc29sdXRpb25Ib3N0KF9lLGlyKSxuPWUubWVtb2l6ZU9uZShmdW5jdGlvbih5cil7cmV0dXJuIHlyP2lyLmdldFBhY2thZ2VKc29uQXV0b0ltcG9ydFByb3ZpZGVyKCkuZ2V0VHlwZUNoZWNrZXIoKTpfZS5nZXRUeXBlQ2hlY2tlcigpfSksbHI9ZS5tb2R1bGVSZXNvbHV0aW9uVXNlc05vZGVNb2R1bGVzKGUuZ2V0RW1pdE1vZHVsZVJlc29sdXRpb25LaW5kKEVyKSksYmU9WWU/ZnVuY3Rpb24oeXIpe3JldHVybnttb2R1bGVTcGVjaWZpZXJzOmUubW9kdWxlU3BlY2lmaWVycy50cnlHZXRNb2R1bGVTcGVjaWZpZXJzRnJvbUNhY2hlKHlyLHdlLE5lLENyKSxjb21wdXRlZFdpdGhvdXRDYWNoZTohMX19OmZ1bmN0aW9uKHlyLElyKXtyZXR1cm4gZS5tb2R1bGVTcGVjaWZpZXJzLmdldE1vZHVsZVNwZWNpZmllcnNXaXRoQ2FjaGVJbmZvKHlyLElyLEVyLHdlLE5lLENyKX0sR2U9MCx1cj1lLmZsYXRNYXAoZXIsZnVuY3Rpb24oeXIsSXIpe3ZhciB3cj1uKHlyLmlzRnJvbVBhY2thZ2VKc29uKSxVcj1iZSh5ci5tb2R1bGVTeW1ib2wsd3IpLGlpPVVyLmNvbXB1dGVkV2l0aG91dENhY2hlLG1pPVVyLm1vZHVsZVNwZWNpZmllcnMscGU9ISEoeXIudGFyZ2V0RmxhZ3MmMTExNTUxKSxvcj1SKHllLCEwLHlyLnN5bWJvbCx5ci50YXJnZXRGbGFncyx3cixFcik7cmV0dXJuIEdlKz1paT8xOjAsZS5tYXBEZWZpbmVkKG1pLGZ1bmN0aW9uKHFyKXtyZXR1cm4gbHImJmUucGF0aENvbnRhaW5zTm9kZU1vZHVsZXMocXIpP3ZvaWQgMDohcGUmJkJyJiZkZSE9PXZvaWQgMD97a2luZDoxLG1vZHVsZVNwZWNpZmllcjpxcixwb3NpdGlvbjpkZSxleHBvcnRJbmZvOnlyLGlzUmVFeHBvcnQ6SXI+MH06e2tpbmQ6Myxtb2R1bGVTcGVjaWZpZXI6cXIsaW1wb3J0S2luZDpZKHdlLHlyLmV4cG9ydEtpbmQsRXIpLHVzZVJlcXVpcmU6QWUsYWRkQXNUeXBlT25seTpvcixleHBvcnRJbmZvOnlyLGlzUmVFeHBvcnQ6SXI+MH19KX0pO3JldHVybntjb21wdXRlZFdpdGhvdXRDYWNoZUNvdW50OkdlLGZpeGVzOnVyfX1mdW5jdGlvbiBoZShfZSx3ZSxkZSx5ZSxBZSxlcixpcixDcixZZSxCcil7dmFyIEVyPWUuZmlyc3REZWZpbmVkKHdlLGZ1bmN0aW9uKE5lKXtyZXR1cm4gRihOZSxlcixpcixkZS5nZXRUeXBlQ2hlY2tlcigpLGRlLmdldENvbXBpbGVyT3B0aW9ucygpKX0pO3JldHVybiBFcj97Zml4ZXM6W0VyXX06ZWUoZGUseWUsQWUsZXIsaXIsX2UsQ3IsWWUsQnIpfWZ1bmN0aW9uIEYoX2Usd2UsZGUseWUsQWUpe3ZhciBlcixpcj1fZS5kZWNsYXJhdGlvbixDcj1fZS5pbXBvcnRLaW5kLFllPV9lLnN5bWJvbCxCcj1fZS50YXJnZXRGbGFncyxFcj0oZXI9ZS50cnlHZXRNb2R1bGVTcGVjaWZpZXJGcm9tRGVjbGFyYXRpb24oaXIpKT09PW51bGx8fGVyPT09dm9pZCAwP3ZvaWQgMDplci50ZXh0O2lmKEVyKXt2YXIgTmU9ZGU/NDpSKHdlLCEwLFllLEJyLHllLEFlKTtyZXR1cm57a2luZDozLG1vZHVsZVNwZWNpZmllcjpFcixpbXBvcnRLaW5kOkNyLGFkZEFzVHlwZU9ubHk6TmUsdXNlUmVxdWlyZTpkZX19fWZ1bmN0aW9uIHgoX2Usd2UsZGUseWUpe3ZhciBBZT1lLmdldFRva2VuQXRQb3NpdGlvbihfZS5zb3VyY2VGaWxlLGRlKSxlcjtpZih3ZT09PWUuRGlhZ25vc3RpY3MuXzBfcmVmZXJzX3RvX2FfVU1EX2dsb2JhbF9idXRfdGhlX2N1cnJlbnRfZmlsZV9pc19hX21vZHVsZV9Db25zaWRlcl9hZGRpbmdfYW5faW1wb3J0X2luc3RlYWQuY29kZSllcj1QKF9lLEFlKTtlbHNlIGlmKGUuaXNJZGVudGlmaWVyKEFlKSlpZih3ZT09PWUuRGlhZ25vc3RpY3MuXzBfY2Fubm90X2JlX3VzZWRfYXNfYV92YWx1ZV9iZWNhdXNlX2l0X3dhc19pbXBvcnRlZF91c2luZ19pbXBvcnRfdHlwZS5jb2RlKXt2YXIgaXI9SShfZS5zb3VyY2VGaWxlLF9lLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSxBZSxfZS5wcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpKSxDcj1IKF9lLnNvdXJjZUZpbGUsQWUsaXIsX2UucHJvZ3JhbSk7cmV0dXJuIENyJiZ7Zml4ZXM6W0NyXSxzeW1ib2xOYW1lOmlyLGVycm9ySWRlbnRpZmllclRleHQ6QWUudGV4dH19ZWxzZSBlcj1qKF9lLEFlLHllKTtlbHNlIHJldHVybjt2YXIgWWU9ZS5jcmVhdGVQYWNrYWdlSnNvbkltcG9ydEZpbHRlcihfZS5zb3VyY2VGaWxlLF9lLnByZWZlcmVuY2VzLF9lLmhvc3QpO3JldHVybiBlciYmS2UoS2Uoe30sZXIpLHtmaXhlczpYKGVyLmZpeGVzLF9lLnNvdXJjZUZpbGUsX2UucHJvZ3JhbSxZZSxfZS5ob3N0KX0pfWZ1bmN0aW9uIFgoX2Usd2UsZGUseWUsQWUpe3ZhciBlcj1mdW5jdGlvbihpcil7cmV0dXJuIGUudG9QYXRoKGlyLEFlLmdldEN1cnJlbnREaXJlY3RvcnkoKSxlLmhvc3RHZXRDYW5vbmljYWxGaWxlTmFtZShBZSkpfTtyZXR1cm4gZS5zb3J0KF9lLGZ1bmN0aW9uKGlyLENyKXtyZXR1cm4gZS5jb21wYXJlVmFsdWVzKGlyLmtpbmQsQ3Iua2luZCl8fEEoaXIsQ3Isd2UsZGUseWUuYWxsb3dzSW1wb3J0aW5nU3BlY2lmaWVyLGVyKX0pfWZ1bmN0aW9uICQoX2Usd2UsZGUseWUsQWUpe2lmKCEhZS5zb21lKF9lKSlyZXR1cm4gX2VbMF0ua2luZD09PTB8fF9lWzBdLmtpbmQ9PT0yP19lWzBdOl9lLnJlZHVjZShmdW5jdGlvbihlcixpcil7cmV0dXJuIEEoaXIsZXIsd2UsZGUseWUuYWxsb3dzSW1wb3J0aW5nU3BlY2lmaWVyLGZ1bmN0aW9uKENyKXtyZXR1cm4gZS50b1BhdGgoQ3IsQWUuZ2V0Q3VycmVudERpcmVjdG9yeSgpLGUuaG9zdEdldENhbm9uaWNhbEZpbGVOYW1lKEFlKSl9KT09PS0xP2lyOmVyfSl9ZnVuY3Rpb24gQShfZSx3ZSxkZSx5ZSxBZSxlcil7cmV0dXJuIF9lLmtpbmQhPT0wJiZ3ZS5raW5kIT09MD9lLmNvbXBhcmVCb29sZWFucyhBZSh3ZS5tb2R1bGVTcGVjaWZpZXIpLEFlKF9lLm1vZHVsZVNwZWNpZmllcikpfHxMKF9lLm1vZHVsZVNwZWNpZmllcix3ZS5tb2R1bGVTcGVjaWZpZXIsZGUseWUpfHxlLmNvbXBhcmVCb29sZWFucyh5KF9lLGRlLHllLmdldENvbXBpbGVyT3B0aW9ucygpLGVyKSx5KHdlLGRlLHllLmdldENvbXBpbGVyT3B0aW9ucygpLGVyKSl8fGUuY29tcGFyZU51bWJlck9mRGlyZWN0b3J5U2VwYXJhdG9ycyhfZS5tb2R1bGVTcGVjaWZpZXIsd2UubW9kdWxlU3BlY2lmaWVyKTowfWZ1bmN0aW9uIHkoX2Usd2UsZGUseWUpe3ZhciBBZTtpZihfZS5pc1JlRXhwb3J0JiYoKEFlPV9lLmV4cG9ydEluZm8pPT09bnVsbHx8QWU9PT12b2lkIDA/dm9pZCAwOkFlLm1vZHVsZUZpbGVOYW1lKSYmZS5nZXRFbWl0TW9kdWxlUmVzb2x1dGlvbktpbmQoZGUpPT09ZS5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlSnMmJlYoX2UuZXhwb3J0SW5mby5tb2R1bGVGaWxlTmFtZSkpe3ZhciBlcj15ZShlLmdldERpcmVjdG9yeVBhdGgoX2UuZXhwb3J0SW5mby5tb2R1bGVGaWxlTmFtZSkpO3JldHVybiBlLnN0YXJ0c1dpdGgod2UucGF0aCxlcil9cmV0dXJuITF9ZnVuY3Rpb24gVihfZSl7cmV0dXJuIGUuZ2V0QmFzZUZpbGVOYW1lKF9lLFtcIi5qc1wiLFwiLmpzeFwiLFwiLmQudHNcIixcIi50c1wiLFwiLnRzeFwiXSwhMCk9PT1cImluZGV4XCJ9ZnVuY3Rpb24gTChfZSx3ZSxkZSx5ZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChfZSxcIm5vZGU6XCIpJiYhZS5zdGFydHNXaXRoKHdlLFwibm9kZTpcIik/ZS5zaG91bGRVc2VVcmlTdHlsZU5vZGVDb3JlTW9kdWxlcyhkZSx5ZSk/LTE6MTplLnN0YXJ0c1dpdGgod2UsXCJub2RlOlwiKSYmIWUuc3RhcnRzV2l0aChfZSxcIm5vZGU6XCIpP2Uuc2hvdWxkVXNlVXJpU3R5bGVOb2RlQ29yZU1vZHVsZXMoZGUseWUpPzE6LTE6MH1mdW5jdGlvbiBQKF9lLHdlKXt2YXIgZGUseWU9X2Uuc291cmNlRmlsZSxBZT1fZS5wcm9ncmFtLGVyPV9lLmhvc3QsaXI9X2UucHJlZmVyZW5jZXMsQ3I9QWUuZ2V0VHlwZUNoZWNrZXIoKSxZZT1rKHdlLENyKTtpZighIVllKXt2YXIgQnI9Q3IuZ2V0QWxpYXNlZFN5bWJvbChZZSksRXI9WWUubmFtZSxOZT1be3N5bWJvbDpZZSxtb2R1bGVTeW1ib2w6QnIsbW9kdWxlRmlsZU5hbWU6dm9pZCAwLGV4cG9ydEtpbmQ6Myx0YXJnZXRGbGFnczpCci5mbGFncyxpc0Zyb21QYWNrYWdlSnNvbjohMX1dLG49dmUoeWUsQWUpLGxyPWUuaXNJZGVudGlmaWVyKHdlKT93ZS5nZXRTdGFydCh5ZSk6dm9pZCAwLGJlPWIoTmUsbHI/e3Bvc2l0aW9uOmxyLHN5bWJvbE5hbWU6RXJ9OnZvaWQgMCwhMSxuLEFlLHllLGVyLGlyKS5maXhlcztyZXR1cm57Zml4ZXM6YmUsc3ltYm9sTmFtZTpFcixlcnJvcklkZW50aWZpZXJUZXh0OihkZT1lLnRyeUNhc3Qod2UsZS5pc0lkZW50aWZpZXIpKT09PW51bGx8fGRlPT09dm9pZCAwP3ZvaWQgMDpkZS50ZXh0fX19ZnVuY3Rpb24gayhfZSx3ZSl7dmFyIGRlPWUuaXNJZGVudGlmaWVyKF9lKT93ZS5nZXRTeW1ib2xBdExvY2F0aW9uKF9lKTp2b2lkIDA7aWYoZS5pc1VNREV4cG9ydFN5bWJvbChkZSkpcmV0dXJuIGRlO3ZhciB5ZT1fZS5wYXJlbnQ7cmV0dXJuIGUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQoeWUpJiZ5ZS50YWdOYW1lPT09X2V8fGUuaXNKc3hPcGVuaW5nRnJhZ21lbnQoeWUpP2UudHJ5Q2FzdCh3ZS5yZXNvbHZlTmFtZSh3ZS5nZXRKc3hOYW1lc3BhY2UoeWUpLGUuaXNKc3hPcGVuaW5nTGlrZUVsZW1lbnQoeWUpP19lOnllLDExMTU1MSwhMSksZS5pc1VNREV4cG9ydFN5bWJvbCk6dm9pZCAwfWZ1bmN0aW9uIFkoX2Usd2UsZGUseWUpe3N3aXRjaCh3ZSl7Y2FzZSAwOnJldHVybiAwO2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIEQoX2UsZGUsISF5ZSk7Y2FzZSAzOnJldHVybiBVKF9lLGRlLCEheWUpO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIod2UpfX1DLmdldEltcG9ydEtpbmQ9WTtmdW5jdGlvbiBVKF9lLHdlLGRlKXtpZihlLmdldEFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMod2UpKXJldHVybiAxO3ZhciB5ZT1lLmdldEVtaXRNb2R1bGVLaW5kKHdlKTtzd2l0Y2goeWUpe2Nhc2UgZS5Nb2R1bGVLaW5kLkFNRDpjYXNlIGUuTW9kdWxlS2luZC5Db21tb25KUzpjYXNlIGUuTW9kdWxlS2luZC5VTUQ6cmV0dXJuIGUuaXNJbkpTRmlsZShfZSkmJihlLmlzRXh0ZXJuYWxNb2R1bGUoX2UpfHxkZSk/MjozO2Nhc2UgZS5Nb2R1bGVLaW5kLlN5c3RlbTpjYXNlIGUuTW9kdWxlS2luZC5FUzIwMTU6Y2FzZSBlLk1vZHVsZUtpbmQuRVMyMDIwOmNhc2UgZS5Nb2R1bGVLaW5kLkVTMjAyMjpjYXNlIGUuTW9kdWxlS2luZC5FU05leHQ6Y2FzZSBlLk1vZHVsZUtpbmQuTm9uZTpyZXR1cm4gMjtjYXNlIGUuTW9kdWxlS2luZC5Ob2RlMTY6Y2FzZSBlLk1vZHVsZUtpbmQuTm9kZU5leHQ6cmV0dXJuIF9lLmltcGxpZWROb2RlRm9ybWF0PT09ZS5Nb2R1bGVLaW5kLkVTTmV4dD8yOjM7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcih5ZSxcIlVuZXhwZWN0ZWQgbW9kdWxlS2luZCBcIi5jb25jYXQoeWUpKX19ZnVuY3Rpb24gaihfZSx3ZSxkZSl7dmFyIHllPV9lLnNvdXJjZUZpbGUsQWU9X2UucHJvZ3JhbSxlcj1fZS5jYW5jZWxsYXRpb25Ub2tlbixpcj1fZS5ob3N0LENyPV9lLnByZWZlcmVuY2VzLFllPUFlLmdldFR5cGVDaGVja2VyKCksQnI9QWUuZ2V0Q29tcGlsZXJPcHRpb25zKCksRXI9SSh5ZSxZZSx3ZSxCcik7aWYoRXIhPT1cImRlZmF1bHRcIil7dmFyIE5lPWUuaXNWYWxpZFR5cGVPbmx5QWxpYXNVc2VTaXRlKHdlKSxuPXZlKHllLEFlKSxscj1kKEVyLGUuaXNKU1hUYWdOYW1lKHdlKSxlLmdldE1lYW5pbmdGcm9tTG9jYXRpb24od2UpLGVyLHllLEFlLGRlLGlyLENyKSxiZT1lLmFycmF5RnJvbShlLmZsYXRNYXBJdGVyYXRvcihsci5lbnRyaWVzKCksZnVuY3Rpb24oR2Upe3ZhciB1cj1HZVswXSx5cj1HZVsxXTtyZXR1cm4gYih5cix7c3ltYm9sTmFtZTpFcixwb3NpdGlvbjp3ZS5nZXRTdGFydCh5ZSl9LE5lLG4sQWUseWUsaXIsQ3IpLmZpeGVzfSkpO3JldHVybntmaXhlczpiZSxzeW1ib2xOYW1lOkVyLGVycm9ySWRlbnRpZmllclRleHQ6d2UudGV4dH19fWZ1bmN0aW9uIEgoX2Usd2UsZGUseWUpe3ZhciBBZT15ZS5nZXRUeXBlQ2hlY2tlcigpLGVyPUFlLnJlc29sdmVOYW1lKGRlLHdlLDExMTU1MSwhMCk7aWYoISFlcil7dmFyIGlyPUFlLmdldFR5cGVPbmx5QWxpYXNEZWNsYXJhdGlvbihlcik7aWYoISghaXJ8fGUuZ2V0U291cmNlRmlsZU9mTm9kZShpcikhPT1fZSkpcmV0dXJue2tpbmQ6NCx0eXBlT25seUFsaWFzRGVjbGFyYXRpb246aXJ9fX1mdW5jdGlvbiBJKF9lLHdlLGRlLHllKXt2YXIgQWU9ZGUucGFyZW50O2lmKChlLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50KEFlKXx8ZS5pc0pzeENsb3NpbmdFbGVtZW50KEFlKSkmJkFlLnRhZ05hbWU9PT1kZSYmZS5qc3hNb2RlTmVlZHNFeHBsaWNpdEltcG9ydCh5ZS5qc3gpKXt2YXIgZXI9d2UuZ2V0SnN4TmFtZXNwYWNlKF9lKTtpZihsKGVyLGRlLHdlKSlyZXR1cm4gZXJ9cmV0dXJuIGRlLnRleHR9ZnVuY3Rpb24gbChfZSx3ZSxkZSl7aWYoZS5pc0ludHJpbnNpY0pzeE5hbWUod2UudGV4dCkpcmV0dXJuITA7dmFyIHllPWRlLnJlc29sdmVOYW1lKF9lLHdlLDExMTU1MSwhMCk7cmV0dXJuIXllfHxlLnNvbWUoeWUuZGVjbGFyYXRpb25zLGUuaXNUeXBlT25seUltcG9ydE9yRXhwb3J0RGVjbGFyYXRpb24pJiYhKHllLmZsYWdzJjExMTU1MSl9ZnVuY3Rpb24gZChfZSx3ZSxkZSx5ZSxBZSxlcixpcixDcixZZSl7dmFyIEJyLEVyPWUuY3JlYXRlTXVsdGlNYXAoKSxOZT1lLmNyZWF0ZVBhY2thZ2VKc29uSW1wb3J0RmlsdGVyKEFlLFllLENyKSxuPShCcj1Dci5nZXRNb2R1bGVTcGVjaWZpZXJDYWNoZSk9PT1udWxsfHxCcj09PXZvaWQgMD92b2lkIDA6QnIuY2FsbChDciksbHI9ZS5tZW1vaXplT25lKGZ1bmN0aW9uKEdlKXtyZXR1cm4gZS5jcmVhdGVNb2R1bGVTcGVjaWZpZXJSZXNvbHV0aW9uSG9zdChHZT9Dci5nZXRQYWNrYWdlSnNvbkF1dG9JbXBvcnRQcm92aWRlcigpOmVyLENyKX0pO2Z1bmN0aW9uIGJlKEdlLHVyLHlyLElyLHdyLFVyKXt2YXIgaWk9bHIoVXIpO2lmKHVyJiZlLmlzSW1wb3J0YWJsZUZpbGUod3IsQWUsdXIsWWUsTmUsaWksbil8fCF1ciYmTmUuYWxsb3dzSW1wb3J0aW5nQW1iaWVudE1vZHVsZShHZSxpaSkpe3ZhciBtaT13ci5nZXRUeXBlQ2hlY2tlcigpO0VyLmFkZChlLmdldFVuaXF1ZVN5bWJvbElkKHlyLG1pKS50b1N0cmluZygpLHtzeW1ib2w6eXIsbW9kdWxlU3ltYm9sOkdlLG1vZHVsZUZpbGVOYW1lOnVyPT1udWxsP3ZvaWQgMDp1ci5maWxlTmFtZSxleHBvcnRLaW5kOklyLHRhcmdldEZsYWdzOmUuc2tpcEFsaWFzKHlyLG1pKS5mbGFncyxpc0Zyb21QYWNrYWdlSnNvbjpVcn0pfX1yZXR1cm4gZS5mb3JFYWNoRXh0ZXJuYWxNb2R1bGVUb0ltcG9ydEZyb20oZXIsQ3IsaXIsZnVuY3Rpb24oR2UsdXIseXIsSXIpe3ZhciB3cj15ci5nZXRUeXBlQ2hlY2tlcigpO3llLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKTt2YXIgVXI9eXIuZ2V0Q29tcGlsZXJPcHRpb25zKCksaWk9ZS5nZXREZWZhdWx0TGlrZUV4cG9ydEluZm8oR2Usd3IsVXIpO2lpJiYoaWkubmFtZT09PV9lfHxycihHZSxlLmdldEVtaXRTY3JpcHRUYXJnZXQoVXIpLHdlKT09PV9lKSYmSGUoaWkuc3ltYm9sRm9yTWVhbmluZyxkZSkmJmJlKEdlLHVyLGlpLnN5bWJvbCxpaS5leHBvcnRLaW5kLHlyLElyKTt2YXIgbWk9d3IudHJ5R2V0TWVtYmVySW5Nb2R1bGVFeHBvcnRzQW5kUHJvcGVydGllcyhfZSxHZSk7bWkmJkhlKG1pLGRlKSYmYmUoR2UsdXIsbWksMCx5cixJcil9KSxFcn1mdW5jdGlvbiBEKF9lLHdlLGRlKXt2YXIgeWU9ZS5nZXRBbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzKHdlKSxBZT1lLmlzSW5KU0ZpbGUoX2UpO2lmKCFBZSYmZS5nZXRFbWl0TW9kdWxlS2luZCh3ZSk+PWUuTW9kdWxlS2luZC5FUzIwMTUpcmV0dXJuIHllPzE6MjtpZihBZSlyZXR1cm4gZS5pc0V4dGVybmFsTW9kdWxlKF9lKXx8ZGU/eWU/MToyOjM7Zm9yKHZhciBlcj0wLGlyPV9lLnN0YXRlbWVudHM7ZXI8aXIubGVuZ3RoO2VyKyspe3ZhciBDcj1pcltlcl07aWYoZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKENyKSYmIWUubm9kZUlzTWlzc2luZyhDci5tb2R1bGVSZWZlcmVuY2UpKXJldHVybiAzfXJldHVybiB5ZT8xOjN9ZnVuY3Rpb24gZmUoX2Usd2UsZGUseWUsQWUsZXIsaXIpe3ZhciBDcixZZT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChfZSxmdW5jdGlvbihCcil7Q3I9ZyhCcix3ZSxkZSx5ZSxBZSxlcixpcil9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKEMuaW1wb3J0Rml4TmFtZSxZZSxDcix3LGUuRGlhZ25vc3RpY3MuQWRkX2FsbF9taXNzaW5nX2ltcG9ydHMpfWZ1bmN0aW9uIGcoX2Usd2UsZGUseWUsQWUsZXIsaXIpe3N3aXRjaCh5ZS5raW5kKXtjYXNlIDA6cmV0dXJuIEZlKF9lLHdlLHllKSxbZS5EaWFnbm9zdGljcy5DaGFuZ2VfMF90b18xLGRlLFwiXCIuY29uY2F0KHllLm5hbWVzcGFjZVByZWZpeCxcIi5cIikuY29uY2F0KGRlKV07Y2FzZSAxOnJldHVybiBaKF9lLHdlLHllLGVyKSxbZS5EaWFnbm9zdGljcy5DaGFuZ2VfMF90b18xLGRlLEJlKHllLm1vZHVsZVNwZWNpZmllcixlcikrZGVdO2Nhc2UgMjp7dmFyIENyPXllLmltcG9ydENsYXVzZU9yQmluZGluZ1BhdHRlcm4sWWU9eWUuaW1wb3J0S2luZCxCcj15ZS5hZGRBc1R5cGVPbmx5LEVyPXllLm1vZHVsZVNwZWNpZmllcjtXZShfZSx3ZSxDcixZZT09PTE/e25hbWU6ZGUsYWRkQXNUeXBlT25seTpCcn06dm9pZCAwLFllPT09MD9be25hbWU6ZGUsYWRkQXNUeXBlT25seTpCcn1dOmUuZW1wdHlBcnJheSxpcik7dmFyIE5lPWUuc3RyaXBRdW90ZXMoRXIpO3JldHVybiBBZT9bZS5EaWFnbm9zdGljcy5JbXBvcnRfMF9mcm9tXzEsZGUsTmVdOltlLkRpYWdub3N0aWNzLlVwZGF0ZV9pbXBvcnRfZnJvbV8wLE5lXX1jYXNlIDM6e3ZhciBZZT15ZS5pbXBvcnRLaW5kLEVyPXllLm1vZHVsZVNwZWNpZmllcixCcj15ZS5hZGRBc1R5cGVPbmx5LG49eWUudXNlUmVxdWlyZSxscj1uP3plOlJlLGJlPVllPT09MT97bmFtZTpkZSxhZGRBc1R5cGVPbmx5OkJyfTp2b2lkIDAsR2U9WWU9PT0wP1t7bmFtZTpkZSxhZGRBc1R5cGVPbmx5OkJyfV06dm9pZCAwLHVyPVllPT09Mnx8WWU9PT0zP3tpbXBvcnRLaW5kOlllLG5hbWU6ZGUsYWRkQXNUeXBlT25seTpCcn06dm9pZCAwO3JldHVybiBlLmluc2VydEltcG9ydHMoX2Usd2UsbHIoRXIsZXIsYmUsR2UsdXIpLCEwKSxBZT9bZS5EaWFnbm9zdGljcy5JbXBvcnRfMF9mcm9tXzEsZGUsRXJdOltlLkRpYWdub3N0aWNzLkFkZF9pbXBvcnRfZnJvbV8wLEVyXX1jYXNlIDQ6e3ZhciB5cj15ZS50eXBlT25seUFsaWFzRGVjbGFyYXRpb24sSXI9dWUoX2UseXIsaXIsd2UpO3JldHVybiBJci5raW5kPT09MjcwP1tlLkRpYWdub3N0aWNzLlJlbW92ZV90eXBlX2Zyb21faW1wb3J0X29mXzBfZnJvbV8xLGRlLG5lKElyLnBhcmVudC5wYXJlbnQpXTpbZS5EaWFnbm9zdGljcy5SZW1vdmVfdHlwZV9mcm9tX2ltcG9ydF9kZWNsYXJhdGlvbl9mcm9tXzAsbmUoSXIpXX1kZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKHllLFwiVW5leHBlY3RlZCBmaXgga2luZCBcIi5jb25jYXQoeWUua2luZCkpfX1mdW5jdGlvbiBuZShfZSl7dmFyIHdlLGRlO3JldHVybiBfZS5raW5kPT09MjY1PygoZGU9ZS50cnlDYXN0KCh3ZT1lLnRyeUNhc3QoX2UubW9kdWxlUmVmZXJlbmNlLGUuaXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSkpPT09bnVsbHx8d2U9PT12b2lkIDA/dm9pZCAwOndlLmV4cHJlc3Npb24sZS5pc1N0cmluZ0xpdGVyYWxMaWtlKSk9PT1udWxsfHxkZT09PXZvaWQgMD92b2lkIDA6ZGUudGV4dCl8fF9lLm1vZHVsZVJlZmVyZW5jZS5nZXRUZXh0KCk6ZS5jYXN0KF9lLnBhcmVudC5tb2R1bGVTcGVjaWZpZXIsZS5pc1N0cmluZ0xpdGVyYWwpLnRleHR9ZnVuY3Rpb24gdWUoX2Usd2UsZGUseWUpe3ZhciBBZT1kZS5wcmVzZXJ2ZVZhbHVlSW1wb3J0cyYmZGUuaXNvbGF0ZWRNb2R1bGVzO3N3aXRjaCh3ZS5raW5kKXtjYXNlIDI3MDppZih3ZS5pc1R5cGVPbmx5KXtpZih3ZS5wYXJlbnQuZWxlbWVudHMubGVuZ3RoPjEmJmUuT3JnYW5pemVJbXBvcnRzLmltcG9ydFNwZWNpZmllcnNBcmVTb3J0ZWQod2UucGFyZW50LmVsZW1lbnRzKSl7X2UuZGVsZXRlKHllLHdlKTt2YXIgZXI9ZS5mYWN0b3J5LnVwZGF0ZUltcG9ydFNwZWNpZmllcih3ZSwhMSx3ZS5wcm9wZXJ0eU5hbWUsd2UubmFtZSksaXI9ZS5Pcmdhbml6ZUltcG9ydHMuZ2V0SW1wb3J0U3BlY2lmaWVySW5zZXJ0aW9uSW5kZXgod2UucGFyZW50LmVsZW1lbnRzLGVyKTtfZS5pbnNlcnRJbXBvcnRTcGVjaWZpZXJBdEluZGV4KHllLGVyLHdlLnBhcmVudCxpcil9ZWxzZSBfZS5kZWxldGVSYW5nZSh5ZSx3ZS5nZXRGaXJzdFRva2VuKCkpO3JldHVybiB3ZX1lbHNlIHJldHVybiBlLkRlYnVnLmFzc2VydCh3ZS5wYXJlbnQucGFyZW50LmlzVHlwZU9ubHkpLENyKHdlLnBhcmVudC5wYXJlbnQpLHdlLnBhcmVudC5wYXJlbnQ7Y2FzZSAyNjc6cmV0dXJuIENyKHdlKSx3ZTtjYXNlIDI2ODpyZXR1cm4gQ3Iod2UucGFyZW50KSx3ZS5wYXJlbnQ7Y2FzZSAyNjU6cmV0dXJuIF9lLmRlbGV0ZVJhbmdlKHllLHdlLmdldENoaWxkQXQoMSkpLHdlO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZCh3ZSl9ZnVuY3Rpb24gQ3IoWWUpe2lmKF9lLmRlbGV0ZSh5ZSxlLmdldFR5cGVLZXl3b3JkT2ZUeXBlT25seUltcG9ydChZZSx5ZSkpLEFlKXt2YXIgQnI9ZS50cnlDYXN0KFllLm5hbWVkQmluZGluZ3MsZS5pc05hbWVkSW1wb3J0cyk7aWYoQnImJkJyLmVsZW1lbnRzLmxlbmd0aD4xKXtlLk9yZ2FuaXplSW1wb3J0cy5pbXBvcnRTcGVjaWZpZXJzQXJlU29ydGVkKEJyLmVsZW1lbnRzKSYmd2Uua2luZD09PTI3MCYmQnIuZWxlbWVudHMuaW5kZXhPZih3ZSkhPT0wJiYoX2UuZGVsZXRlKHllLHdlKSxfZS5pbnNlcnRJbXBvcnRTcGVjaWZpZXJBdEluZGV4KHllLHdlLEJyLDApKTtmb3IodmFyIEVyPTAsTmU9QnIuZWxlbWVudHM7RXI8TmUubGVuZ3RoO0VyKyspe3ZhciBuPU5lW0VyXTtuIT09d2UmJiFuLmlzVHlwZU9ubHkmJl9lLmluc2VydE1vZGlmaWVyQmVmb3JlKHllLDE1MixuKX19fX19ZnVuY3Rpb24gV2UoX2Usd2UsZGUseWUsQWUsZXIpe3ZhciBpcjtpZihkZS5raW5kPT09MjAxKXt5ZSYmcGUoZGUseWUubmFtZSxcImRlZmF1bHRcIik7Zm9yKHZhciBDcj0wLFllPUFlO0NyPFllLmxlbmd0aDtDcisrKXt2YXIgQnI9WWVbQ3JdO3BlKGRlLEJyLm5hbWUsdm9pZCAwKX1yZXR1cm59dmFyIEVyPWRlLmlzVHlwZU9ubHkmJmUuc29tZShWZShbeWVdLEFlLCEwKSxmdW5jdGlvbihvcil7cmV0dXJuKG9yPT1udWxsP3ZvaWQgMDpvci5hZGRBc1R5cGVPbmx5KT09PTR9KSxOZT1kZS5uYW1lZEJpbmRpbmdzJiYoKGlyPWUudHJ5Q2FzdChkZS5uYW1lZEJpbmRpbmdzLGUuaXNOYW1lZEltcG9ydHMpKT09PW51bGx8fGlyPT09dm9pZCAwP3ZvaWQgMDppci5lbGVtZW50cyksbj1FciYmZXIucHJlc2VydmVWYWx1ZUltcG9ydHMmJmVyLmlzb2xhdGVkTW9kdWxlcztpZih5ZSYmKGUuRGVidWcuYXNzZXJ0KCFkZS5uYW1lLFwiQ2Fubm90IGFkZCBhIGRlZmF1bHQgaW1wb3J0IHRvIGFuIGltcG9ydCBjbGF1c2UgdGhhdCBhbHJlYWR5IGhhcyBvbmVcIiksX2UuaW5zZXJ0Tm9kZUF0KHdlLGRlLmdldFN0YXJ0KHdlKSxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcih5ZS5uYW1lKSx7c3VmZml4OlwiLCBcIn0pKSxBZS5sZW5ndGgpe3ZhciBscj1lLnN0YWJsZVNvcnQoQWUubWFwKGZ1bmN0aW9uKG9yKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUltcG9ydFNwZWNpZmllcigoIWRlLmlzVHlwZU9ubHl8fEVyKSYmZ2Uob3IpLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihvci5uYW1lKSl9KSxlLk9yZ2FuaXplSW1wb3J0cy5jb21wYXJlSW1wb3J0T3JFeHBvcnRTcGVjaWZpZXJzKTtpZigoTmU9PW51bGw/dm9pZCAwOk5lLmxlbmd0aCkmJmUuT3JnYW5pemVJbXBvcnRzLmltcG9ydFNwZWNpZmllcnNBcmVTb3J0ZWQoTmUpKWZvcih2YXIgYmU9MCxHZT1scjtiZTxHZS5sZW5ndGg7YmUrKyl7dmFyIHVyPUdlW2JlXSx5cj1uJiYhdXIuaXNUeXBlT25seT8wOmUuT3JnYW5pemVJbXBvcnRzLmdldEltcG9ydFNwZWNpZmllckluc2VydGlvbkluZGV4KE5lLHVyKTtfZS5pbnNlcnRJbXBvcnRTcGVjaWZpZXJBdEluZGV4KHdlLHVyLGRlLm5hbWVkQmluZGluZ3MseXIpfWVsc2UgaWYoTmUhPW51bGwmJk5lLmxlbmd0aClmb3IodmFyIElyPTAsd3I9bHI7SXI8d3IubGVuZ3RoO0lyKyspe3ZhciB1cj13cltJcl07X2UuaW5zZXJ0Tm9kZUluTGlzdEFmdGVyKHdlLGUubGFzdChOZSksdXIsTmUpfWVsc2UgaWYobHIubGVuZ3RoKXt2YXIgVXI9ZS5mYWN0b3J5LmNyZWF0ZU5hbWVkSW1wb3J0cyhscik7ZGUubmFtZWRCaW5kaW5ncz9fZS5yZXBsYWNlTm9kZSh3ZSxkZS5uYW1lZEJpbmRpbmdzLFVyKTpfZS5pbnNlcnROb2RlQWZ0ZXIod2UsZS5EZWJ1Zy5jaGVja0RlZmluZWQoZGUubmFtZSxcIkltcG9ydCBjbGF1c2UgbXVzdCBoYXZlIGVpdGhlciBuYW1lZCBpbXBvcnRzIG9yIGEgZGVmYXVsdCBpbXBvcnRcIiksVXIpfX1pZihFciYmKF9lLmRlbGV0ZSh3ZSxlLmdldFR5cGVLZXl3b3JkT2ZUeXBlT25seUltcG9ydChkZSx3ZSkpLG4mJk5lKSlmb3IodmFyIGlpPTAsbWk9TmU7aWk8bWkubGVuZ3RoO2lpKyspe3ZhciBCcj1taVtpaV07X2UuaW5zZXJ0TW9kaWZpZXJCZWZvcmUod2UsMTUyLEJyKX1mdW5jdGlvbiBwZShvcixxcixzaSl7dmFyIERpPWUuZmFjdG9yeS5jcmVhdGVCaW5kaW5nRWxlbWVudCh2b2lkIDAsc2kscXIpO29yLmVsZW1lbnRzLmxlbmd0aD9fZS5pbnNlcnROb2RlSW5MaXN0QWZ0ZXIod2UsZS5sYXN0KG9yLmVsZW1lbnRzKSxEaSk6X2UucmVwbGFjZU5vZGUod2Usb3IsZS5mYWN0b3J5LmNyZWF0ZU9iamVjdEJpbmRpbmdQYXR0ZXJuKFtEaV0pKX19ZnVuY3Rpb24gRmUoX2Usd2UsZGUpe3ZhciB5ZT1kZS5uYW1lc3BhY2VQcmVmaXgsQWU9ZGUucG9zaXRpb247X2UuaW5zZXJ0VGV4dCh3ZSxBZSx5ZStcIi5cIil9ZnVuY3Rpb24gWihfZSx3ZSxkZSx5ZSl7dmFyIEFlPWRlLm1vZHVsZVNwZWNpZmllcixlcj1kZS5wb3NpdGlvbjtfZS5pbnNlcnRUZXh0KHdlLGVyLEJlKEFlLHllKSl9ZnVuY3Rpb24gQmUoX2Usd2Upe3ZhciBkZT1lLmdldFF1b3RlRnJvbVByZWZlcmVuY2Uod2UpO3JldHVyblwiaW1wb3J0KFwiLmNvbmNhdChkZSkuY29uY2F0KF9lKS5jb25jYXQoZGUsXCIpLlwiKX1mdW5jdGlvbiBnZShfZSl7dmFyIHdlPV9lLmFkZEFzVHlwZU9ubHk7cmV0dXJuIHdlPT09Mn1mdW5jdGlvbiBSZShfZSx3ZSxkZSx5ZSxBZSl7dmFyIGVyPWUubWFrZVN0cmluZ0xpdGVyYWwoX2Usd2UpLGlyO2lmKGRlIT09dm9pZCAwfHwoeWU9PW51bGw/dm9pZCAwOnllLmxlbmd0aCkpe3ZhciBDcj0oIWRlfHxnZShkZSkpJiZlLmV2ZXJ5KHllLGdlKTtpcj1lLmNvbWJpbmUoaXIsZS5tYWtlSW1wb3J0KGRlJiZlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihkZS5uYW1lKSx5ZT09bnVsbD92b2lkIDA6eWUubWFwKGZ1bmN0aW9uKEJyKXt2YXIgRXI9QnIuYWRkQXNUeXBlT25seSxOZT1Cci5uYW1lO3JldHVybiBlLmZhY3RvcnkuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKCFDciYmRXI9PT0yLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihOZSkpfSksX2Usd2UsQ3IpKX1pZihBZSl7dmFyIFllPUFlLmltcG9ydEtpbmQ9PT0zP2UuZmFjdG9yeS5jcmVhdGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLGdlKEFlKSxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihBZS5uYW1lKSxlLmZhY3RvcnkuY3JlYXRlRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UoZXIpKTplLmZhY3RvcnkuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSW1wb3J0Q2xhdXNlKGdlKEFlKSx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZU5hbWVzcGFjZUltcG9ydChlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihBZS5uYW1lKSkpLGVyLHZvaWQgMCk7aXI9ZS5jb21iaW5lKGlyLFllKX1yZXR1cm4gZS5EZWJ1Zy5jaGVja0RlZmluZWQoaXIpfWZ1bmN0aW9uIHplKF9lLHdlLGRlLHllLEFlKXt2YXIgZXI9ZS5tYWtlU3RyaW5nTGl0ZXJhbChfZSx3ZSksaXI7aWYoZGV8fCh5ZT09bnVsbD92b2lkIDA6eWUubGVuZ3RoKSl7dmFyIENyPSh5ZT09bnVsbD92b2lkIDA6eWUubWFwKGZ1bmN0aW9uKEJyKXt2YXIgRXI9QnIubmFtZTtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUJpbmRpbmdFbGVtZW50KHZvaWQgMCx2b2lkIDAsRXIpfSkpfHxbXTtkZSYmQ3IudW5zaGlmdChlLmZhY3RvcnkuY3JlYXRlQmluZGluZ0VsZW1lbnQodm9pZCAwLFwiZGVmYXVsdFwiLGRlLm5hbWUpKTt2YXIgWWU9RWUoZS5mYWN0b3J5LmNyZWF0ZU9iamVjdEJpbmRpbmdQYXR0ZXJuKENyKSxlcik7aXI9ZS5jb21iaW5lKGlyLFllKX1pZihBZSl7dmFyIFllPUVlKEFlLm5hbWUsZXIpO2lyPWUuY29tYmluZShpcixZZSl9cmV0dXJuIGUuRGVidWcuY2hlY2tEZWZpbmVkKGlyKX1mdW5jdGlvbiBFZShfZSx3ZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbih0eXBlb2YgX2U9PVwic3RyaW5nXCI/ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoX2UpOl9lLHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwicmVxdWlyZVwiKSx2b2lkIDAsW3dlXSkpXSwyKSl9ZnVuY3Rpb24gSGUoX2Usd2Upe3ZhciBkZT1fZS5kZWNsYXJhdGlvbnM7cmV0dXJuIGUuc29tZShkZSxmdW5jdGlvbih5ZSl7cmV0dXJuISEoZS5nZXRNZWFuaW5nRnJvbURlY2xhcmF0aW9uKHllKSZ3ZSl9KX1mdW5jdGlvbiBycihfZSx3ZSxkZSl7cmV0dXJuIEllKGUucmVtb3ZlRmlsZUV4dGVuc2lvbihlLnN0cmlwUXVvdGVzKF9lLm5hbWUpKSx3ZSxkZSl9Qy5tb2R1bGVTeW1ib2xUb1ZhbGlkSWRlbnRpZmllcj1ycjtmdW5jdGlvbiBJZShfZSx3ZSxkZSl7dmFyIHllPWUuZ2V0QmFzZUZpbGVOYW1lKGUucmVtb3ZlU3VmZml4KF9lLFwiL2luZGV4XCIpKSxBZT1cIlwiLGVyPSEwLGlyPXllLmNoYXJDb2RlQXQoMCk7ZS5pc0lkZW50aWZpZXJTdGFydChpcix3ZSk/KEFlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGlyKSxkZSYmKEFlPUFlLnRvVXBwZXJDYXNlKCkpKTplcj0hMTtmb3IodmFyIENyPTE7Q3I8eWUubGVuZ3RoO0NyKyspe3ZhciBZZT15ZS5jaGFyQ29kZUF0KENyKSxCcj1lLmlzSWRlbnRpZmllclBhcnQoWWUsd2UpO2lmKEJyKXt2YXIgRXI9U3RyaW5nLmZyb21DaGFyQ29kZShZZSk7ZXJ8fChFcj1Fci50b1VwcGVyQ2FzZSgpKSxBZSs9RXJ9ZXI9QnJ9cmV0dXJuIGUuaXNTdHJpbmdBTm9uQ29udGV4dHVhbEtleXdvcmQoQWUpP1wiX1wiLmNvbmNhdChBZSk6QWV8fFwiX1wifUMubW9kdWxlU3BlY2lmaWVyVG9WYWxpZElkZW50aWZpZXI9SWV9KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3LEI9XCJmaXhPdmVycmlkZU1vZGlmaWVyXCIsRT1cImZpeEFkZE92ZXJyaWRlTW9kaWZpZXJcIixRPVwiZml4UmVtb3ZlT3ZlcnJpZGVNb2RpZmllclwiLGxlPVtlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZSxlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfY2xhc3NfMF9kb2VzX25vdF9leHRlbmRfYW5vdGhlcl9jbGFzcy5jb2RlLGUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FuX2Fic3RyYWN0X21ldGhvZF90aGF0X2lzX2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZSxlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX211c3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X292ZXJyaWRlc19hX21lbWJlcl9pbl90aGVfYmFzZV9jbGFzc18wLmNvZGUsZS5EaWFnbm9zdGljcy5UaGlzX3BhcmFtZXRlcl9wcm9wZXJ0eV9tdXN0X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdF9vdmVycmlkZXNfYV9tZW1iZXJfaW5fYmFzZV9jbGFzc18wLmNvZGUsZS5EaWFnbm9zdGljcy5UaGlzX21lbWJlcl9tdXN0X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZSxlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0c19jb250YWluaW5nX2NsYXNzXzBfZG9lc19ub3RfZXh0ZW5kX2Fub3RoZXJfY2xhc3MuY29kZSxlLkRpYWdub3N0aWNzLlRoaXNfcGFyYW1ldGVyX3Byb3BlcnR5X211c3RfaGF2ZV9hX0pTRG9jX2NvbW1lbnRfd2l0aF9hbl9vdmVycmlkZV90YWdfYmVjYXVzZV9pdF9vdmVycmlkZXNfYV9tZW1iZXJfaW5fdGhlX2Jhc2VfY2xhc3NfMC5jb2RlLGUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZV0sTj0odz17fSx3W2UuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZV09e2Rlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLkFkZF9vdmVycmlkZV9tb2RpZmllcixmaXhJZDpFLGZpeEFsbERlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLkFkZF9hbGxfbWlzc2luZ19vdmVycmlkZV9tb2RpZmllcnN9LHdbZS5EaWFnbm9zdGljcy5UaGlzX21lbWJlcl9tdXN0X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZV09e2Rlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLkFkZF9vdmVycmlkZV9tb2RpZmllcixmaXhJZDpFLGZpeEFsbERlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLkFkZF9hbGxfbWlzc2luZ19vdmVycmlkZV9tb2RpZmllcnN9LHdbZS5EaWFnbm9zdGljcy5UaGlzX21lbWJlcl9jYW5ub3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0c19jb250YWluaW5nX2NsYXNzXzBfZG9lc19ub3RfZXh0ZW5kX2Fub3RoZXJfY2xhc3MuY29kZV09e2Rlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLlJlbW92ZV9vdmVycmlkZV9tb2RpZmllcixmaXhJZDpRLGZpeEFsbERlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLlJlbW92ZV9hbGxfdW5uZWNlc3Nhcnlfb3ZlcnJpZGVfbW9kaWZpZXJzfSx3W2UuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfY2xhc3NfMF9kb2VzX25vdF9leHRlbmRfYW5vdGhlcl9jbGFzcy5jb2RlXT17ZGVzY3JpcHRpb25zOmUuRGlhZ25vc3RpY3MuUmVtb3ZlX292ZXJyaWRlX21vZGlmaWVyLGZpeElkOlEsZml4QWxsRGVzY3JpcHRpb25zOmUuRGlhZ25vc3RpY3MuUmVtb3ZlX292ZXJyaWRlX21vZGlmaWVyfSx3W2UuRGlhZ25vc3RpY3MuVGhpc19wYXJhbWV0ZXJfcHJvcGVydHlfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX2Jhc2VfY2xhc3NfMC5jb2RlXT17ZGVzY3JpcHRpb25zOmUuRGlhZ25vc3RpY3MuQWRkX292ZXJyaWRlX21vZGlmaWVyLGZpeElkOkUsZml4QWxsRGVzY3JpcHRpb25zOmUuRGlhZ25vc3RpY3MuQWRkX2FsbF9taXNzaW5nX292ZXJyaWRlX21vZGlmaWVyc30sd1tlLkRpYWdub3N0aWNzLlRoaXNfcGFyYW1ldGVyX3Byb3BlcnR5X211c3RfaGF2ZV9hX0pTRG9jX2NvbW1lbnRfd2l0aF9hbl9vdmVycmlkZV90YWdfYmVjYXVzZV9pdF9vdmVycmlkZXNfYV9tZW1iZXJfaW5fdGhlX2Jhc2VfY2xhc3NfMC5jb2RlXT17ZGVzY3JpcHRpb25zOmUuRGlhZ25vc3RpY3MuQWRkX292ZXJyaWRlX21vZGlmaWVyLGZpeElkOkUsZml4QWxsRGVzY3JpcHRpb25zOmUuRGlhZ25vc3RpY3MuQWRkX2FsbF9taXNzaW5nX292ZXJyaWRlX21vZGlmaWVyc30sd1tlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX211c3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X292ZXJyaWRlc19hbl9hYnN0cmFjdF9tZXRob2RfdGhhdF9pc19kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wLmNvZGVdPXtkZXNjcmlwdGlvbnM6ZS5EaWFnbm9zdGljcy5BZGRfb3ZlcnJpZGVfbW9kaWZpZXIsZml4SWQ6RSxmaXhBbGxEZXNjcmlwdGlvbnM6ZS5EaWFnbm9zdGljcy5SZW1vdmVfYWxsX3VubmVjZXNzYXJ5X292ZXJyaWRlX21vZGlmaWVyc30sd1tlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZV09e2Rlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLlJlbW92ZV9vdmVycmlkZV9tb2RpZmllcixmaXhJZDpRLGZpeEFsbERlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLlJlbW92ZV9hbGxfdW5uZWNlc3Nhcnlfb3ZlcnJpZGVfbW9kaWZpZXJzfSx3W2UuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZV09e2Rlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLlJlbW92ZV9vdmVycmlkZV9tb2RpZmllcixmaXhJZDpRLGZpeEFsbERlc2NyaXB0aW9uczplLkRpYWdub3N0aWNzLlJlbW92ZV9hbGxfdW5uZWNlc3Nhcnlfb3ZlcnJpZGVfbW9kaWZpZXJzfSx3KTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpsZSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihLKXt2YXIgYj1LLmVycm9yQ29kZSxzZT1LLnNwYW4sSj1OW2JdO2lmKCFKKXJldHVybiBlLmVtcHR5QXJyYXk7dmFyIGllPUouZGVzY3JpcHRpb25zLFI9Si5maXhJZCxxPUouZml4QWxsRGVzY3JpcHRpb25zLE89ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoSyxmdW5jdGlvbih2ZSl7cmV0dXJuIHAodmUsSyxiLHNlLnN0YXJ0KX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb25NYXliZUZpeEFsbChCLE8saWUsUixxKV19LGZpeElkczpbQixFLFFdLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKFQpe3JldHVybiBDLmNvZGVGaXhBbGwoVCxsZSxmdW5jdGlvbihLLGIpe3ZhciBzZT1iLmNvZGUsSj1iLnN0YXJ0LGllPU5bc2VdOyFpZXx8aWUuZml4SWQhPT1ULmZpeElkfHxwKEssVCxzZSxKKX0pfX0pO2Z1bmN0aW9uIHAoVCxLLGIsc2Upe3N3aXRjaChiKXtjYXNlIGUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRfb3ZlcnJpZGVzX2FfbWVtYmVyX2luX3RoZV9iYXNlX2NsYXNzXzAuY29kZTpjYXNlIGUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfbXVzdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0X292ZXJyaWRlc19hX21lbWJlcl9pbl90aGVfYmFzZV9jbGFzc18wLmNvZGU6Y2FzZSBlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX211c3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X292ZXJyaWRlc19hbl9hYnN0cmFjdF9tZXRob2RfdGhhdF9pc19kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wLmNvZGU6Y2FzZSBlLkRpYWdub3N0aWNzLlRoaXNfcGFyYW1ldGVyX3Byb3BlcnR5X211c3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X292ZXJyaWRlc19hX21lbWJlcl9pbl9iYXNlX2NsYXNzXzAuY29kZTpjYXNlIGUuRGlhZ25vc3RpY3MuVGhpc19wYXJhbWV0ZXJfcHJvcGVydHlfbXVzdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0X292ZXJyaWRlc19hX21lbWJlcl9pbl90aGVfYmFzZV9jbGFzc18wLmNvZGU6cmV0dXJuIG0oVCxLLnNvdXJjZUZpbGUsc2UpO2Nhc2UgZS5EaWFnbm9zdGljcy5UaGlzX21lbWJlcl9jYW5ub3RfaGF2ZV9hbl9vdmVycmlkZV9tb2RpZmllcl9iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wLmNvZGU6Y2FzZSBlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FfSlNEb2NfY29tbWVudF93aXRoX2FuX292ZXJyaWRlX3RhZ19iZWNhdXNlX2l0X2lzX25vdF9kZWNsYXJlZF9pbl90aGVfYmFzZV9jbGFzc18wLmNvZGU6Y2FzZSBlLkRpYWdub3N0aWNzLlRoaXNfbWVtYmVyX2Nhbm5vdF9oYXZlX2FuX292ZXJyaWRlX21vZGlmaWVyX2JlY2F1c2VfaXRzX2NvbnRhaW5pbmdfY2xhc3NfMF9kb2VzX25vdF9leHRlbmRfYW5vdGhlcl9jbGFzcy5jb2RlOmNhc2UgZS5EaWFnbm9zdGljcy5UaGlzX21lbWJlcl9jYW5ub3RfaGF2ZV9hX0pTRG9jX2NvbW1lbnRfd2l0aF9hbl9vdmVycmlkZV90YWdfYmVjYXVzZV9pdHNfY29udGFpbmluZ19jbGFzc18wX2RvZXNfbm90X2V4dGVuZF9hbm90aGVyX2NsYXNzLmNvZGU6cmV0dXJuIEcoVCxLLnNvdXJjZUZpbGUsc2UpO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsKFwiVW5leHBlY3RlZCBlcnJvciBjb2RlOiBcIitiKX19ZnVuY3Rpb24gbShULEssYil7dmFyIHNlPWYoSyxiKTtpZihlLmlzU291cmNlRmlsZUpTKEspKXtULmFkZEpTRG9jVGFncyhLLHNlLFtlLmZhY3RvcnkuY3JlYXRlSlNEb2NPdmVycmlkZVRhZyhlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcIm92ZXJyaWRlXCIpKV0pO3JldHVybn12YXIgSj1zZS5tb2RpZmllcnN8fGUuZW1wdHlBcnJheSxpZT1lLmZpbmQoSixlLmlzU3RhdGljTW9kaWZpZXIpLFI9ZS5maW5kKEosZS5pc0Fic3RyYWN0TW9kaWZpZXIpLHE9ZS5maW5kKEosZnVuY3Rpb24oZWUpe3JldHVybiBlLmlzQWNjZXNzaWJpbGl0eU1vZGlmaWVyKGVlLmtpbmQpfSksTz1SP1IuZW5kOmllP2llLmVuZDpxP3EuZW5kOnNlLmRlY29yYXRvcnM/ZS5za2lwVHJpdmlhKEsudGV4dCxzZS5kZWNvcmF0b3JzLmVuZCk6c2UuZ2V0U3RhcnQoSyksdmU9cXx8aWV8fFI/e3ByZWZpeDpcIiBcIn06e3N1ZmZpeDpcIiBcIn07VC5pbnNlcnRNb2RpZmllckF0KEssTywxNTksdmUpfWZ1bmN0aW9uIEcoVCxLLGIpe3ZhciBzZT1mKEssYik7aWYoZS5pc1NvdXJjZUZpbGVKUyhLKSl7VC5maWx0ZXJKU0RvY1RhZ3MoSyxzZSxlLm5vdChlLmlzSlNEb2NPdmVycmlkZVRhZykpO3JldHVybn12YXIgSj1zZS5tb2RpZmllcnMmJmUuZmluZChzZS5tb2RpZmllcnMsZnVuY3Rpb24oaWUpe3JldHVybiBpZS5raW5kPT09MTU5fSk7ZS5EZWJ1Zy5hc3NlcnRJc0RlZmluZWQoSiksVC5kZWxldGVNb2RpZmllcihLLEopfWZ1bmN0aW9uIG9lKFQpe3N3aXRjaChULmtpbmQpe2Nhc2UgMTcxOmNhc2UgMTY3OmNhc2UgMTY5OmNhc2UgMTcyOmNhc2UgMTczOnJldHVybiEwO2Nhc2UgMTY0OnJldHVybiBlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbihULFQucGFyZW50KTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBmKFQsSyl7dmFyIGI9ZS5nZXRUb2tlbkF0UG9zaXRpb24oVCxLKSxzZT1lLmZpbmRBbmNlc3RvcihiLGZ1bmN0aW9uKEope3JldHVybiBlLmlzQ2xhc3NMaWtlKEopP1wicXVpdFwiOm9lKEopfSk7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KHNlJiZvZShzZSkpLHNlfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhOb1Byb3BlcnR5QWNjZXNzRnJvbUluZGV4U2lnbmF0dXJlXCIsQj1bZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2NvbWVzX2Zyb21fYW5faW5kZXhfc2lnbmF0dXJlX3NvX2l0X211c3RfYmVfYWNjZXNzZWRfd2l0aF8wLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZml4SWRzOlt3XSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49bGUuc291cmNlRmlsZSxwPWxlLnNwYW4sbT1sZS5wcmVmZXJlbmNlcyxHPVEoTixwLnN0YXJ0KSxvZT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChsZSxmdW5jdGlvbihmKXtyZXR1cm4gRShmLGxlLnNvdXJjZUZpbGUsRyxtKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxvZSxbZS5EaWFnbm9zdGljcy5Vc2VfZWxlbWVudF9hY2Nlc3NfZm9yXzAsRy5uYW1lLnRleHRdLHcsZS5EaWFnbm9zdGljcy5Vc2VfZWxlbWVudF9hY2Nlc3NfZm9yX2FsbF91bmRlY2xhcmVkX3Byb3BlcnRpZXMpXX0sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3JldHVybiBDLmNvZGVGaXhBbGwobGUsQixmdW5jdGlvbihOLHApe3JldHVybiBFKE4scC5maWxlLFEocC5maWxlLHAuc3RhcnQpLGxlLnByZWZlcmVuY2VzKX0pfX0pO2Z1bmN0aW9uIEUobGUsTixwLG0pe3ZhciBHPWUuZ2V0UXVvdGVQcmVmZXJlbmNlKE4sbSksb2U9ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocC5uYW1lLnRleHQsRz09PTApO2xlLnJlcGxhY2VOb2RlKE4scCxlLmlzUHJvcGVydHlBY2Nlc3NDaGFpbihwKT9lLmZhY3RvcnkuY3JlYXRlRWxlbWVudEFjY2Vzc0NoYWluKHAuZXhwcmVzc2lvbixwLnF1ZXN0aW9uRG90VG9rZW4sb2UpOmUuZmFjdG9yeS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihwLmV4cHJlc3Npb24sb2UpKX1mdW5jdGlvbiBRKGxlLE4pe3JldHVybiBlLmNhc3QoZS5nZXRUb2tlbkF0UG9zaXRpb24obGUsTikucGFyZW50LGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhJbXBsaWNpdFRoaXNcIixCPVtlLkRpYWdub3N0aWNzLnRoaXNfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9pdF9kb2VzX25vdF9oYXZlX2FfdHlwZV9hbm5vdGF0aW9uLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3ZhciBOPWxlLnNvdXJjZUZpbGUscD1sZS5wcm9ncmFtLG09bGUuc3BhbixHLG9lPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKGYpe0c9RShmLE4sbS5zdGFydCxwLmdldFR5cGVDaGVja2VyKCkpfSk7cmV0dXJuIEc/W0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LG9lLEcsdyxlLkRpYWdub3N0aWNzLkZpeF9hbGxfaW1wbGljaXRfdGhpc19lcnJvcnMpXTplLmVtcHR5QXJyYXl9LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oUSl7cmV0dXJuIEMuY29kZUZpeEFsbChRLEIsZnVuY3Rpb24obGUsTil7RShsZSxOLmZpbGUsTi5zdGFydCxRLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSl9KX19KTtmdW5jdGlvbiBFKFEsbGUsTixwKXt2YXIgbT1lLmdldFRva2VuQXRQb3NpdGlvbihsZSxOKTtpZighIWUuaXNUaGlzKG0pKXt2YXIgRz1lLmdldFRoaXNDb250YWluZXIobSwhMSk7aWYoISghZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oRykmJiFlLmlzRnVuY3Rpb25FeHByZXNzaW9uKEcpKSYmIWUuaXNTb3VyY2VGaWxlKGUuZ2V0VGhpc0NvbnRhaW5lcihHLCExKSkpe3ZhciBvZT1lLkRlYnVnLmNoZWNrRGVmaW5lZChlLmZpbmRDaGlsZE9mS2luZChHLDk4LGxlKSksZj1HLm5hbWUsVD1lLkRlYnVnLmNoZWNrRGVmaW5lZChHLmJvZHkpO3JldHVybiBlLmlzRnVuY3Rpb25FeHByZXNzaW9uKEcpP2YmJmUuRmluZEFsbFJlZmVyZW5jZXMuQ29yZS5pc1N5bWJvbFJlZmVyZW5jZWRJbkZpbGUoZixwLGxlLFQpP3ZvaWQgMDooUS5kZWxldGUobGUsb2UpLGYmJlEuZGVsZXRlKGxlLGYpLFEuaW5zZXJ0VGV4dChsZSxULnBvcyxcIiA9PlwiKSxbZS5EaWFnbm9zdGljcy5Db252ZXJ0X2Z1bmN0aW9uX2V4cHJlc3Npb25fMF90b19hcnJvd19mdW5jdGlvbixmP2YudGV4dDplLkFOT05ZTU9VU10pOihRLnJlcGxhY2VOb2RlKGxlLG9lLGUuZmFjdG9yeS5jcmVhdGVUb2tlbig4NSkpLFEuaW5zZXJ0VGV4dChsZSxmLmVuZCxcIiA9IFwiKSxRLmluc2VydFRleHQobGUsVC5wb3MsXCIgPT5cIiksW2UuRGlhZ25vc3RpY3MuQ29udmVydF9mdW5jdGlvbl9kZWNsYXJhdGlvbl8wX3RvX2Fycm93X2Z1bmN0aW9uLGYudGV4dF0pfX19fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeEluY29ycmVjdE5hbWVkVHVwbGVTeW50YXhcIixCPVtlLkRpYWdub3N0aWNzLkFfbGFiZWxlZF90dXBsZV9lbGVtZW50X2lzX2RlY2xhcmVkX2FzX29wdGlvbmFsX3dpdGhfYV9xdWVzdGlvbl9tYXJrX2FmdGVyX3RoZV9uYW1lX2FuZF9iZWZvcmVfdGhlX2NvbG9uX3JhdGhlcl90aGFuX2FmdGVyX3RoZV90eXBlLmNvZGUsZS5EaWFnbm9zdGljcy5BX2xhYmVsZWRfdHVwbGVfZWxlbWVudF9pc19kZWNsYXJlZF9hc19yZXN0X3dpdGhfYV9iZWZvcmVfdGhlX25hbWVfcmF0aGVyX3RoYW5fYmVmb3JlX3RoZV90eXBlLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7dmFyIHA9Ti5zb3VyY2VGaWxlLG09Ti5zcGFuLEc9RShwLG0uc3RhcnQpLG9lPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKE4sZnVuY3Rpb24oZil7cmV0dXJuIFEoZixwLEcpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LG9lLGUuRGlhZ25vc3RpY3MuTW92ZV9sYWJlbGVkX3R1cGxlX2VsZW1lbnRfbW9kaWZpZXJzX3RvX2xhYmVscyx3LGUuRGlhZ25vc3RpY3MuTW92ZV9sYWJlbGVkX3R1cGxlX2VsZW1lbnRfbW9kaWZpZXJzX3RvX2xhYmVscyldfSxmaXhJZHM6W3ddfSk7ZnVuY3Rpb24gRShsZSxOKXt2YXIgcD1lLmdldFRva2VuQXRQb3NpdGlvbihsZSxOKTtyZXR1cm4gZS5maW5kQW5jZXN0b3IocCxmdW5jdGlvbihtKXtyZXR1cm4gbS5raW5kPT09MTk3fSl9ZnVuY3Rpb24gUShsZSxOLHApe2lmKCEhcCl7Zm9yKHZhciBtPXAudHlwZSxHPSExLG9lPSExO20ua2luZD09PTE4NXx8bS5raW5kPT09MTg2fHxtLmtpbmQ9PT0xOTE7KW0ua2luZD09PTE4NT9HPSEwOm0ua2luZD09PTE4NiYmKG9lPSEwKSxtPW0udHlwZTt2YXIgZj1lLmZhY3RvcnkudXBkYXRlTmFtZWRUdXBsZU1lbWJlcihwLHAuZG90RG90RG90VG9rZW58fChvZT9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjUpOnZvaWQgMCkscC5uYW1lLHAucXVlc3Rpb25Ub2tlbnx8KEc/ZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDU3KTp2b2lkIDApLG0pO2YhPT1wJiZsZS5yZXBsYWNlTm9kZShOLHAsZil9fX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhTcGVsbGluZ1wiLEI9W2UuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRGlkX3lvdV9tZWFuXzIuY29kZSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfbWF5X25vdF9leGlzdF9vbl90eXBlXzFfRGlkX3lvdV9tZWFuXzIuY29kZSxlLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fMS5jb2RlLGUuRGlhZ25vc3RpY3MuQ291bGRfbm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl8xLmNvZGUsZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lc3BhY2VfMF9EaWRfeW91X21lYW5fMS5jb2RlLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90aGVfaW5zdGFuY2VfbWVtYmVyX3RoaXNfMC5jb2RlLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90aGVfc3RhdGljX21lbWJlcl8xXzAuY29kZSxlLkRpYWdub3N0aWNzLl8wX2hhc19ub19leHBvcnRlZF9tZW1iZXJfbmFtZWRfMV9EaWRfeW91X21lYW5fMi5jb2RlLGUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYW5fb3ZlcnJpZGVfbW9kaWZpZXJfYmVjYXVzZV9pdF9pc19ub3RfZGVjbGFyZWRfaW5fdGhlX2Jhc2VfY2xhc3NfMF9EaWRfeW91X21lYW5fMS5jb2RlLGUuRGlhZ25vc3RpY3MuVGhpc19tZW1iZXJfY2Fubm90X2hhdmVfYV9KU0RvY19jb21tZW50X3dpdGhfYW5fb3ZlcnJpZGVfdGFnX2JlY2F1c2VfaXRfaXNfbm90X2RlY2xhcmVkX2luX3RoZV9iYXNlX2NsYXNzXzBfRGlkX3lvdV9tZWFuXzEuY29kZSxlLkRpYWdub3N0aWNzLk5vX292ZXJsb2FkX21hdGNoZXNfdGhpc19jYWxsLmNvZGUsZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG09cC5zb3VyY2VGaWxlLEc9cC5lcnJvckNvZGUsb2U9RShtLHAuc3Bhbi5zdGFydCxwLEcpO2lmKCEhb2Upe3ZhciBmPW9lLm5vZGUsVD1vZS5zdWdnZXN0ZWRTeW1ib2wsSz1lLmdldEVtaXRTY3JpcHRUYXJnZXQocC5ob3N0LmdldENvbXBpbGF0aW9uU2V0dGluZ3MoKSksYj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKHNlKXtyZXR1cm4gUShzZSxtLGYsVCxLKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24oXCJzcGVsbGluZ1wiLGIsW2UuRGlhZ25vc3RpY3MuQ2hhbmdlX3NwZWxsaW5nX3RvXzAsZS5zeW1ib2xOYW1lKFQpXSx3LGUuRGlhZ25vc3RpY3MuRml4X2FsbF9kZXRlY3RlZF9zcGVsbGluZ19lcnJvcnMpXX19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7cmV0dXJuIEMuY29kZUZpeEFsbChwLEIsZnVuY3Rpb24obSxHKXt2YXIgb2U9RShHLmZpbGUsRy5zdGFydCxwLEcuY29kZSksZj1lLmdldEVtaXRTY3JpcHRUYXJnZXQocC5ob3N0LmdldENvbXBpbGF0aW9uU2V0dGluZ3MoKSk7b2UmJlEobSxwLnNvdXJjZUZpbGUsb2Uubm9kZSxvZS5zdWdnZXN0ZWRTeW1ib2wsZil9KX19KTtmdW5jdGlvbiBFKHAsbSxHLG9lKXt2YXIgZj1lLmdldFRva2VuQXRQb3NpdGlvbihwLG0pLFQ9Zi5wYXJlbnQ7aWYoISgob2U9PT1lLkRpYWdub3N0aWNzLk5vX292ZXJsb2FkX21hdGNoZXNfdGhpc19jYWxsLmNvZGV8fG9lPT09ZS5EaWFnbm9zdGljcy5UeXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fdHlwZV8xLmNvZGUpJiYhZS5pc0pzeEF0dHJpYnV0ZShUKSkpe3ZhciBLPUcucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLGI7aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihUKSYmVC5uYW1lPT09Zil7ZS5EZWJ1Zy5hc3NlcnQoZS5pc01lbWJlck5hbWUoZiksXCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGZvciBzcGVsbGluZyAocHJvcGVydHkgYWNjZXNzKVwiKTt2YXIgc2U9Sy5nZXRUeXBlQXRMb2NhdGlvbihULmV4cHJlc3Npb24pO1QuZmxhZ3MmMzImJihzZT1LLmdldE5vbk51bGxhYmxlVHlwZShzZSkpLGI9Sy5nZXRTdWdnZXN0ZWRTeW1ib2xGb3JOb25leGlzdGVudFByb3BlcnR5KGYsc2UpfWVsc2UgaWYoZS5pc0JpbmFyeUV4cHJlc3Npb24oVCkmJlQub3BlcmF0b3JUb2tlbi5raW5kPT09MTAxJiZULmxlZnQ9PT1mJiZlLmlzUHJpdmF0ZUlkZW50aWZpZXIoZikpe3ZhciBKPUsuZ2V0VHlwZUF0TG9jYXRpb24oVC5yaWdodCk7Yj1LLmdldFN1Z2dlc3RlZFN5bWJvbEZvck5vbmV4aXN0ZW50UHJvcGVydHkoZixKKX1lbHNlIGlmKGUuaXNRdWFsaWZpZWROYW1lKFQpJiZULnJpZ2h0PT09Zil7dmFyIGllPUsuZ2V0U3ltYm9sQXRMb2NhdGlvbihULmxlZnQpO2llJiZpZS5mbGFncyYxNTM2JiYoYj1LLmdldFN1Z2dlc3RlZFN5bWJvbEZvck5vbmV4aXN0ZW50TW9kdWxlKFQucmlnaHQsaWUpKX1lbHNlIGlmKGUuaXNJbXBvcnRTcGVjaWZpZXIoVCkmJlQubmFtZT09PWYpe2UuRGVidWcuYXNzZXJ0Tm9kZShmLGUuaXNJZGVudGlmaWVyLFwiRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBmb3Igc3BlbGxpbmcgKGltcG9ydClcIik7dmFyIFI9ZS5maW5kQW5jZXN0b3IoZixlLmlzSW1wb3J0RGVjbGFyYXRpb24pLHE9TihwLEcsUik7cSYmcS5zeW1ib2wmJihiPUsuZ2V0U3VnZ2VzdGVkU3ltYm9sRm9yTm9uZXhpc3RlbnRNb2R1bGUoZixxLnN5bWJvbCkpfWVsc2UgaWYoZS5pc0pzeEF0dHJpYnV0ZShUKSYmVC5uYW1lPT09Zil7ZS5EZWJ1Zy5hc3NlcnROb2RlKGYsZS5pc0lkZW50aWZpZXIsXCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGZvciBKU1ggYXR0cmlidXRlXCIpO3ZhciBPPWUuZmluZEFuY2VzdG9yKGYsZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudCksdmU9Sy5nZXRDb250ZXh0dWFsVHlwZUZvckFyZ3VtZW50QXRJbmRleChPLDApO2I9Sy5nZXRTdWdnZXN0ZWRTeW1ib2xGb3JOb25leGlzdGVudEpTWEF0dHJpYnV0ZShmLHZlKX1lbHNlIGlmKGUuaGFzU3ludGFjdGljTW9kaWZpZXIoVCwxNjM4NCkmJmUuaXNDbGFzc0VsZW1lbnQoVCkmJlQubmFtZT09PWYpe3ZhciBlZT1lLmZpbmRBbmNlc3RvcihmLGUuaXNDbGFzc0xpa2UpLGhlPWVlP2UuZ2V0RWZmZWN0aXZlQmFzZVR5cGVOb2RlKGVlKTp2b2lkIDAsRj1oZT9LLmdldFR5cGVBdExvY2F0aW9uKGhlKTp2b2lkIDA7RiYmKGI9Sy5nZXRTdWdnZXN0ZWRTeW1ib2xGb3JOb25leGlzdGVudENsYXNzTWVtYmVyKGUuZ2V0VGV4dE9mTm9kZShmKSxGKSl9ZWxzZXt2YXIgeD1lLmdldE1lYW5pbmdGcm9tTG9jYXRpb24oZiksWD1lLmdldFRleHRPZk5vZGUoZik7ZS5EZWJ1Zy5hc3NlcnQoWCE9PXZvaWQgMCxcIm5hbWUgc2hvdWxkIGJlIGRlZmluZWRcIiksYj1LLmdldFN1Z2dlc3RlZFN5bWJvbEZvck5vbmV4aXN0ZW50U3ltYm9sKGYsWCxsZSh4KSl9cmV0dXJuIGI9PT12b2lkIDA/dm9pZCAwOntub2RlOmYsc3VnZ2VzdGVkU3ltYm9sOmJ9fX1mdW5jdGlvbiBRKHAsbSxHLG9lLGYpe3ZhciBUPWUuc3ltYm9sTmFtZShvZSk7aWYoIWUuaXNJZGVudGlmaWVyVGV4dChULGYpJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEcucGFyZW50KSl7dmFyIEs9b2UudmFsdWVEZWNsYXJhdGlvbjtLJiZlLmlzTmFtZWREZWNsYXJhdGlvbihLKSYmZS5pc1ByaXZhdGVJZGVudGlmaWVyKEsubmFtZSk/cC5yZXBsYWNlTm9kZShtLEcsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoVCkpOnAucmVwbGFjZU5vZGUobSxHLnBhcmVudCxlLmZhY3RvcnkuY3JlYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oRy5wYXJlbnQuZXhwcmVzc2lvbixlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChUKSkpfWVsc2UgcC5yZXBsYWNlTm9kZShtLEcsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoVCkpfWZ1bmN0aW9uIGxlKHApe3ZhciBtPTA7cmV0dXJuIHAmNCYmKG18PTE5MjApLHAmMiYmKG18PTc4ODk2OCkscCYxJiYobXw9MTExNTUxKSxtfWZ1bmN0aW9uIE4ocCxtLEcpe2lmKCEoIUd8fCFlLmlzU3RyaW5nTGl0ZXJhbExpa2UoRy5tb2R1bGVTcGVjaWZpZXIpKSl7dmFyIG9lPWUuZ2V0UmVzb2x2ZWRNb2R1bGUocCxHLm1vZHVsZVNwZWNpZmllci50ZXh0LGUuZ2V0TW9kZUZvclVzYWdlTG9jYXRpb24ocCxHLm1vZHVsZVNwZWNpZmllcikpO2lmKCEhb2UpcmV0dXJuIG0ucHJvZ3JhbS5nZXRTb3VyY2VGaWxlKG9lLnJlc29sdmVkRmlsZU5hbWUpfX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwicmV0dXJuVmFsdWVDb3JyZWN0XCIsQj1cImZpeEFkZFJldHVyblN0YXRlbWVudFwiLEU9XCJmaXhSZW1vdmVCcmFjZXNGcm9tQXJyb3dGdW5jdGlvbkJvZHlcIixRPVwiZml4V3JhcFRoZUJsb2NrV2l0aFBhcmVuXCIsbGU9W2UuRGlhZ25vc3RpY3MuQV9mdW5jdGlvbl93aG9zZV9kZWNsYXJlZF90eXBlX2lzX25laXRoZXJfdm9pZF9ub3JfYW55X211c3RfcmV0dXJuX2FfdmFsdWUuY29kZSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEuY29kZSxlLkRpYWdub3N0aWNzLkFyZ3VtZW50X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19wYXJhbWV0ZXJfb2ZfdHlwZV8xLmNvZGVdLE47KGZ1bmN0aW9uKFIpe1JbUi5NaXNzaW5nUmV0dXJuU3RhdGVtZW50PTBdPVwiTWlzc2luZ1JldHVyblN0YXRlbWVudFwiLFJbUi5NaXNzaW5nUGFyZW50aGVzZXM9MV09XCJNaXNzaW5nUGFyZW50aGVzZXNcIn0pKE58fChOPXt9KSksQy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6bGUsZml4SWRzOltCLEUsUV0sZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24ocSl7dmFyIE89cS5wcm9ncmFtLHZlPXEuc291cmNlRmlsZSxlZT1xLnNwYW4uc3RhcnQsaGU9cS5lcnJvckNvZGUsRj1vZShPLmdldFR5cGVDaGVja2VyKCksdmUsZWUsaGUpO2lmKCEhRilyZXR1cm4gRi5raW5kPT09Ti5NaXNzaW5nUmV0dXJuU3RhdGVtZW50P2UuYXBwZW5kKFtzZShxLEYuZXhwcmVzc2lvbixGLnN0YXRlbWVudCldLGUuaXNBcnJvd0Z1bmN0aW9uKEYuZGVjbGFyYXRpb24pP0oocSxGLmRlY2xhcmF0aW9uLEYuZXhwcmVzc2lvbixGLmNvbW1lbnRTb3VyY2UpOnZvaWQgMCk6W2llKHEsRi5kZWNsYXJhdGlvbixGLmV4cHJlc3Npb24pXX0sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oUil7cmV0dXJuIEMuY29kZUZpeEFsbChSLGxlLGZ1bmN0aW9uKHEsTyl7dmFyIHZlPW9lKFIucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLE8uZmlsZSxPLnN0YXJ0LE8uY29kZSk7aWYoISF2ZSlzd2l0Y2goUi5maXhJZCl7Y2FzZSBCOlQocSxPLmZpbGUsdmUuZXhwcmVzc2lvbix2ZS5zdGF0ZW1lbnQpO2JyZWFrO2Nhc2UgRTppZighZS5pc0Fycm93RnVuY3Rpb24odmUuZGVjbGFyYXRpb24pKXJldHVybjtLKHEsTy5maWxlLHZlLmRlY2xhcmF0aW9uLHZlLmV4cHJlc3Npb24sdmUuY29tbWVudFNvdXJjZSwhMSk7YnJlYWs7Y2FzZSBROmlmKCFlLmlzQXJyb3dGdW5jdGlvbih2ZS5kZWNsYXJhdGlvbikpcmV0dXJuO2IocSxPLmZpbGUsdmUuZGVjbGFyYXRpb24sdmUuZXhwcmVzc2lvbik7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmZhaWwoSlNPTi5zdHJpbmdpZnkoUi5maXhJZCkpfX0pfX0pO2Z1bmN0aW9uIHAoUixxLE8pe3ZhciB2ZT1SLmNyZWF0ZVN5bWJvbCg0LHEuZXNjYXBlZFRleHQpO3ZlLnR5cGU9Ui5nZXRUeXBlQXRMb2NhdGlvbihPKTt2YXIgZWU9ZS5jcmVhdGVTeW1ib2xUYWJsZShbdmVdKTtyZXR1cm4gUi5jcmVhdGVBbm9ueW1vdXNUeXBlKHZvaWQgMCxlZSxbXSxbXSxbXSl9ZnVuY3Rpb24gbShSLHEsTyx2ZSl7aWYoISghcS5ib2R5fHwhZS5pc0Jsb2NrKHEuYm9keSl8fGUubGVuZ3RoKHEuYm9keS5zdGF0ZW1lbnRzKSE9PTEpKXt2YXIgZWU9ZS5maXJzdChxLmJvZHkuc3RhdGVtZW50cyk7aWYoZS5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoZWUpJiZHKFIscSxSLmdldFR5cGVBdExvY2F0aW9uKGVlLmV4cHJlc3Npb24pLE8sdmUpKXJldHVybntkZWNsYXJhdGlvbjpxLGtpbmQ6Ti5NaXNzaW5nUmV0dXJuU3RhdGVtZW50LGV4cHJlc3Npb246ZWUuZXhwcmVzc2lvbixzdGF0ZW1lbnQ6ZWUsY29tbWVudFNvdXJjZTplZS5leHByZXNzaW9ufTtpZihlLmlzTGFiZWxlZFN0YXRlbWVudChlZSkmJmUuaXNFeHByZXNzaW9uU3RhdGVtZW50KGVlLnN0YXRlbWVudCkpe3ZhciBoZT1lLmZhY3RvcnkuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oW2UuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoZWUubGFiZWwsZWUuc3RhdGVtZW50LmV4cHJlc3Npb24pXSksRj1wKFIsZWUubGFiZWwsZWUuc3RhdGVtZW50LmV4cHJlc3Npb24pO2lmKEcoUixxLEYsTyx2ZSkpcmV0dXJuIGUuaXNBcnJvd0Z1bmN0aW9uKHEpP3tkZWNsYXJhdGlvbjpxLGtpbmQ6Ti5NaXNzaW5nUGFyZW50aGVzZXMsZXhwcmVzc2lvbjpoZSxzdGF0ZW1lbnQ6ZWUsY29tbWVudFNvdXJjZTplZS5zdGF0ZW1lbnQuZXhwcmVzc2lvbn06e2RlY2xhcmF0aW9uOnEsa2luZDpOLk1pc3NpbmdSZXR1cm5TdGF0ZW1lbnQsZXhwcmVzc2lvbjpoZSxzdGF0ZW1lbnQ6ZWUsY29tbWVudFNvdXJjZTplZS5zdGF0ZW1lbnQuZXhwcmVzc2lvbn19ZWxzZSBpZihlLmlzQmxvY2soZWUpJiZlLmxlbmd0aChlZS5zdGF0ZW1lbnRzKT09PTEpe3ZhciB4PWUuZmlyc3QoZWUuc3RhdGVtZW50cyk7aWYoZS5pc0xhYmVsZWRTdGF0ZW1lbnQoeCkmJmUuaXNFeHByZXNzaW9uU3RhdGVtZW50KHguc3RhdGVtZW50KSl7dmFyIGhlPWUuZmFjdG9yeS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihbZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCh4LmxhYmVsLHguc3RhdGVtZW50LmV4cHJlc3Npb24pXSksRj1wKFIseC5sYWJlbCx4LnN0YXRlbWVudC5leHByZXNzaW9uKTtpZihHKFIscSxGLE8sdmUpKXJldHVybntkZWNsYXJhdGlvbjpxLGtpbmQ6Ti5NaXNzaW5nUmV0dXJuU3RhdGVtZW50LGV4cHJlc3Npb246aGUsc3RhdGVtZW50OmVlLGNvbW1lbnRTb3VyY2U6eH19fX19ZnVuY3Rpb24gRyhSLHEsTyx2ZSxlZSl7aWYoZWUpe3ZhciBoZT1SLmdldFNpZ25hdHVyZUZyb21EZWNsYXJhdGlvbihxKTtpZihoZSl7ZS5oYXNTeW50YWN0aWNNb2RpZmllcihxLDI1NikmJihPPVIuY3JlYXRlUHJvbWlzZVR5cGUoTykpO3ZhciBGPVIuY3JlYXRlU2lnbmF0dXJlKHEsaGUudHlwZVBhcmFtZXRlcnMsaGUudGhpc1BhcmFtZXRlcixoZS5wYXJhbWV0ZXJzLE8sdm9pZCAwLGhlLm1pbkFyZ3VtZW50Q291bnQsaGUuZmxhZ3MpO089Ui5jcmVhdGVBbm9ueW1vdXNUeXBlKHZvaWQgMCxlLmNyZWF0ZVN5bWJvbFRhYmxlKCksW0ZdLFtdLFtdKX1lbHNlIE89Ui5nZXRBbnlUeXBlKCl9cmV0dXJuIFIuaXNUeXBlQXNzaWduYWJsZVRvKE8sdmUpfWZ1bmN0aW9uIG9lKFIscSxPLHZlKXt2YXIgZWU9ZS5nZXRUb2tlbkF0UG9zaXRpb24ocSxPKTtpZighIWVlLnBhcmVudCl7dmFyIGhlPWUuZmluZEFuY2VzdG9yKGVlLnBhcmVudCxlLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24pO3N3aXRjaCh2ZSl7Y2FzZSBlLkRpYWdub3N0aWNzLkFfZnVuY3Rpb25fd2hvc2VfZGVjbGFyZWRfdHlwZV9pc19uZWl0aGVyX3ZvaWRfbm9yX2FueV9tdXN0X3JldHVybl9hX3ZhbHVlLmNvZGU6cmV0dXJuIWhlfHwhaGUuYm9keXx8IWhlLnR5cGV8fCFlLnJhbmdlQ29udGFpbnNSYW5nZShoZS50eXBlLGVlKT92b2lkIDA6bShSLGhlLFIuZ2V0VHlwZUZyb21UeXBlTm9kZShoZS50eXBlKSwhMSk7Y2FzZSBlLkRpYWdub3N0aWNzLkFyZ3VtZW50X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19wYXJhbWV0ZXJfb2ZfdHlwZV8xLmNvZGU6aWYoIWhlfHwhZS5pc0NhbGxFeHByZXNzaW9uKGhlLnBhcmVudCl8fCFoZS5ib2R5KXJldHVybjt2YXIgRj1oZS5wYXJlbnQuYXJndW1lbnRzLmluZGV4T2YoaGUpLHg9Ui5nZXRDb250ZXh0dWFsVHlwZUZvckFyZ3VtZW50QXRJbmRleChoZS5wYXJlbnQsRik7cmV0dXJuIHg/bShSLGhlLHgsITApOnZvaWQgMDtjYXNlIGUuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMS5jb2RlOmlmKCFlLmlzRGVjbGFyYXRpb25OYW1lKGVlKXx8IWUuaXNWYXJpYWJsZUxpa2UoZWUucGFyZW50KSYmIWUuaXNKc3hBdHRyaWJ1dGUoZWUucGFyZW50KSlyZXR1cm47dmFyIFg9ZihlZS5wYXJlbnQpO3JldHVybiFYfHwhZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKFgpfHwhWC5ib2R5P3ZvaWQgMDptKFIsWCxSLmdldFR5cGVBdExvY2F0aW9uKGVlLnBhcmVudCksITApfX19ZnVuY3Rpb24gZihSKXtzd2l0Y2goUi5raW5kKXtjYXNlIDI1NDpjYXNlIDE2NDpjYXNlIDIwMzpjYXNlIDE2NzpjYXNlIDI5NjpyZXR1cm4gUi5pbml0aWFsaXplcjtjYXNlIDI4NTpyZXR1cm4gUi5pbml0aWFsaXplciYmKGUuaXNKc3hFeHByZXNzaW9uKFIuaW5pdGlhbGl6ZXIpP1IuaW5pdGlhbGl6ZXIuZXhwcmVzc2lvbjp2b2lkIDApO2Nhc2UgMjk3OmNhc2UgMTY2OmNhc2UgMjk5OmNhc2UgMzQ3OmNhc2UgMzQwOnJldHVybn19ZnVuY3Rpb24gVChSLHEsTyx2ZSl7ZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShPKTt2YXIgZWU9ZS5wcm9iYWJseVVzZXNTZW1pY29sb25zKHEpO1IucmVwbGFjZU5vZGUocSx2ZSxlLmZhY3RvcnkuY3JlYXRlUmV0dXJuU3RhdGVtZW50KE8pLHtsZWFkaW5nVHJpdmlhT3B0aW9uOmUudGV4dENoYW5nZXMuTGVhZGluZ1RyaXZpYU9wdGlvbi5FeGNsdWRlLHRyYWlsaW5nVHJpdmlhT3B0aW9uOmUudGV4dENoYW5nZXMuVHJhaWxpbmdUcml2aWFPcHRpb24uRXhjbHVkZSxzdWZmaXg6ZWU/XCI7XCI6dm9pZCAwfSl9ZnVuY3Rpb24gSyhSLHEsTyx2ZSxlZSxoZSl7dmFyIEY9aGV8fGUubmVlZHNQYXJlbnRoZXNlcyh2ZSk/ZS5mYWN0b3J5LmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKHZlKTp2ZTtlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKGVlKSxlLmNvcHlDb21tZW50cyhlZSxGKSxSLnJlcGxhY2VOb2RlKHEsTy5ib2R5LEYpfWZ1bmN0aW9uIGIoUixxLE8sdmUpe1IucmVwbGFjZU5vZGUocSxPLmJvZHksZS5mYWN0b3J5LmNyZWF0ZVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKHZlKSl9ZnVuY3Rpb24gc2UoUixxLE8pe3ZhciB2ZT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChSLGZ1bmN0aW9uKGVlKXtyZXR1cm4gVChlZSxSLnNvdXJjZUZpbGUscSxPKX0pO3JldHVybiBDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyx2ZSxlLkRpYWdub3N0aWNzLkFkZF9hX3JldHVybl9zdGF0ZW1lbnQsQixlLkRpYWdub3N0aWNzLkFkZF9hbGxfbWlzc2luZ19yZXR1cm5fc3RhdGVtZW50KX1mdW5jdGlvbiBKKFIscSxPLHZlKXt2YXIgZWU9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoUixmdW5jdGlvbihoZSl7cmV0dXJuIEsoaGUsUi5zb3VyY2VGaWxlLHEsTyx2ZSwhMSl9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsZWUsZS5EaWFnbm9zdGljcy5SZW1vdmVfYnJhY2VzX2Zyb21fYXJyb3dfZnVuY3Rpb25fYm9keSxFLGUuRGlhZ25vc3RpY3MuUmVtb3ZlX2JyYWNlc19mcm9tX2FsbF9hcnJvd19mdW5jdGlvbl9ib2RpZXNfd2l0aF9yZWxldmFudF9pc3N1ZXMpfWZ1bmN0aW9uIGllKFIscSxPKXt2YXIgdmU9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoUixmdW5jdGlvbihlZSl7cmV0dXJuIGIoZWUsUi5zb3VyY2VGaWxlLHEsTyl9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsdmUsZS5EaWFnbm9zdGljcy5XcmFwX3RoZV9mb2xsb3dpbmdfYm9keV93aXRoX3BhcmVudGhlc2VzX3doaWNoX3Nob3VsZF9iZV9hbl9vYmplY3RfbGl0ZXJhbCxRLGUuRGlhZ25vc3RpY3MuV3JhcF9hbGxfb2JqZWN0X2xpdGVyYWxfd2l0aF9wYXJlbnRoZXNlcyl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeE1pc3NpbmdNZW1iZXJcIixCPVwiZml4TWlzc2luZ1Byb3BlcnRpZXNcIixFPVwiZml4TWlzc2luZ0F0dHJpYnV0ZXNcIixRPVwiZml4TWlzc2luZ0Z1bmN0aW9uRGVjbGFyYXRpb25cIixsZT1bZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2RvZXNfbm90X2V4aXN0X29uX3R5cGVfMS5jb2RlLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzFfRGlkX3lvdV9tZWFuXzIuY29kZSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaXNfbWlzc2luZ19pbl90eXBlXzFfYnV0X3JlcXVpcmVkX2luX3R5cGVfMi5jb2RlLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX21pc3NpbmdfdGhlX2ZvbGxvd2luZ19wcm9wZXJ0aWVzX2Zyb21fdHlwZV8xX0NvbG9uXzIuY29kZSxlLkRpYWdub3N0aWNzLlR5cGVfMF9pc19taXNzaW5nX3RoZV9mb2xsb3dpbmdfcHJvcGVydGllc19mcm9tX3R5cGVfMV9Db2xvbl8yX2FuZF8zX21vcmUuY29kZSxlLkRpYWdub3N0aWNzLkFyZ3VtZW50X29mX3R5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b19wYXJhbWV0ZXJfb2ZfdHlwZV8xLmNvZGUsZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9uYW1lXzAuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6bGUsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oeSl7dmFyIFY9eS5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksTD1wKHkuc291cmNlRmlsZSx5LnNwYW4uc3RhcnQseS5lcnJvckNvZGUsVix5LnByb2dyYW0pO2lmKCEhTCl7aWYoTC5raW5kPT09Myl7dmFyIFA9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoeSxmdW5jdGlvbihrKXtyZXR1cm4gaGUoayx5LEwpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbihCLFAsZS5EaWFnbm9zdGljcy5BZGRfbWlzc2luZ19wcm9wZXJ0aWVzLEIsZS5EaWFnbm9zdGljcy5BZGRfYWxsX21pc3NpbmdfcHJvcGVydGllcyldfWlmKEwua2luZD09PTQpe3ZhciBQPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHksZnVuY3Rpb24oWSl7cmV0dXJuIGVlKFkseSxMKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24oRSxQLGUuRGlhZ25vc3RpY3MuQWRkX21pc3NpbmdfYXR0cmlidXRlcyxFLGUuRGlhZ25vc3RpY3MuQWRkX2FsbF9taXNzaW5nX2F0dHJpYnV0ZXMpXX1pZihMLmtpbmQ9PT0yKXt2YXIgUD1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh5LGZ1bmN0aW9uKFkpe3JldHVybiB2ZShZLHksTCl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKFEsUCxbZS5EaWFnbm9zdGljcy5BZGRfbWlzc2luZ19mdW5jdGlvbl9kZWNsYXJhdGlvbl8wLEwudG9rZW4udGV4dF0sUSxlLkRpYWdub3N0aWNzLkFkZF9hbGxfbWlzc2luZ19mdW5jdGlvbl9kZWNsYXJhdGlvbnMpXX1pZihMLmtpbmQ9PT0xKXt2YXIgUD1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh5LGZ1bmN0aW9uKFkpe3JldHVybiBPKFkseS5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksTCl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsUCxbZS5EaWFnbm9zdGljcy5BZGRfbWlzc2luZ19lbnVtX21lbWJlcl8wLEwudG9rZW4udGV4dF0sdyxlLkRpYWdub3N0aWNzLkFkZF9hbGxfbWlzc2luZ19tZW1iZXJzKV19cmV0dXJuIGUuY29uY2F0ZW5hdGUoUih5LEwpLEcoeSxMKSl9fSxmaXhJZHM6W3csUSxCLEVdLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKHkpe3ZhciBWPXkucHJvZ3JhbSxMPXkuZml4SWQsUD1WLmdldFR5cGVDaGVja2VyKCksaz1uZXcgZS5NYXAsWT1uZXcgZS5NYXA7cmV0dXJuIEMuY3JlYXRlQ29tYmluZWRDb2RlQWN0aW9ucyhlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh5LGZ1bmN0aW9uKFUpe0MuZWFjaERpYWdub3N0aWMoeSxsZSxmdW5jdGlvbihqKXt2YXIgSD1wKGouZmlsZSxqLnN0YXJ0LGouY29kZSxQLHkucHJvZ3JhbSk7aWYoISghSHx8IWUuYWRkVG9TZWVuKGssZS5nZXROb2RlSWQoSC5wYXJlbnREZWNsYXJhdGlvbikrXCIjXCIrSC50b2tlbi50ZXh0KSkpe2lmKEw9PT1RJiZILmtpbmQ9PT0yKXZlKFUseSxIKTtlbHNlIGlmKEw9PT1CJiZILmtpbmQ9PT0zKWhlKFUseSxIKTtlbHNlIGlmKEw9PT1FJiZILmtpbmQ9PT00KWVlKFUseSxIKTtlbHNlIGlmKEgua2luZD09PTEmJk8oVSxQLEgpLEgua2luZD09PTApe3ZhciBJPUgucGFyZW50RGVjbGFyYXRpb24sbD1ILnRva2VuLGQ9ZS5nZXRPclVwZGF0ZShZLEksZnVuY3Rpb24oKXtyZXR1cm5bXX0pO2Quc29tZShmdW5jdGlvbihEKXtyZXR1cm4gRC50b2tlbi50ZXh0PT09bC50ZXh0fSl8fGQucHVzaChIKX19fSksWS5mb3JFYWNoKGZ1bmN0aW9uKGosSCl7Zm9yKHZhciBJPWUuaXNUeXBlTGl0ZXJhbE5vZGUoSCk/dm9pZCAwOkMuZ2V0QWxsU3VwZXJzKEgsUCksbD1mdW5jdGlvbihnKXtpZihJIT1udWxsJiZJLnNvbWUoZnVuY3Rpb24oUmUpe3ZhciB6ZT1ZLmdldChSZSk7cmV0dXJuISF6ZSYmemUuc29tZShmdW5jdGlvbihFZSl7dmFyIEhlPUVlLnRva2VuO3JldHVybiBIZS50ZXh0PT09Zy50b2tlbi50ZXh0fSl9KSlyZXR1cm5cImNvbnRpbnVlXCI7dmFyIG5lPWcucGFyZW50RGVjbGFyYXRpb24sdWU9Zy5kZWNsU291cmNlRmlsZSxXZT1nLm1vZGlmaWVyRmxhZ3MsRmU9Zy50b2tlbixaPWcuY2FsbCxCZT1nLmlzSlNGaWxlO2lmKFomJiFlLmlzUHJpdmF0ZUlkZW50aWZpZXIoRmUpKXEoeSxVLFosRmUsV2UmMzIsbmUsdWUpO2Vsc2UgaWYoQmUmJiFlLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24obmUpJiYhZS5pc1R5cGVMaXRlcmFsTm9kZShuZSkpZihVLHVlLG5lLEZlLCEhKFdlJjMyKSk7ZWxzZXt2YXIgZ2U9YihQLG5lLEZlKTtzZShVLHVlLG5lLEZlLnRleHQsZ2UsV2UmMzIpfX0sZD0wLEQ9ajtkPEQubGVuZ3RoO2QrKyl7dmFyIGZlPURbZF07bChmZSl9fSl9KSl9fSk7dmFyIE47KGZ1bmN0aW9uKHkpe3lbeS5UeXBlTGlrZURlY2xhcmF0aW9uPTBdPVwiVHlwZUxpa2VEZWNsYXJhdGlvblwiLHlbeS5FbnVtPTFdPVwiRW51bVwiLHlbeS5GdW5jdGlvbj0yXT1cIkZ1bmN0aW9uXCIseVt5Lk9iamVjdExpdGVyYWw9M109XCJPYmplY3RMaXRlcmFsXCIseVt5LkpzeEF0dHJpYnV0ZXM9NF09XCJKc3hBdHRyaWJ1dGVzXCJ9KShOfHwoTj17fSkpO2Z1bmN0aW9uIHAoeSxWLEwsUCxrKXt2YXIgWT1lLmdldFRva2VuQXRQb3NpdGlvbih5LFYpLFU9WS5wYXJlbnQ7aWYoTD09PWUuRGlhZ25vc3RpY3MuQXJndW1lbnRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3BhcmFtZXRlcl9vZl90eXBlXzEuY29kZSl7aWYoIShZLmtpbmQ9PT0xOCYmZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKFUpJiZlLmlzQ2FsbEV4cHJlc3Npb24oVS5wYXJlbnQpKSlyZXR1cm47dmFyIGo9ZS5maW5kSW5kZXgoVS5wYXJlbnQuYXJndW1lbnRzLGZ1bmN0aW9uKHJyKXtyZXR1cm4gcnI9PT1VfSk7aWYoajwwKXJldHVybjt2YXIgSD1lLnNpbmdsZU9yVW5kZWZpbmVkKFAuZ2V0U2lnbmF0dXJlc09mVHlwZShQLmdldFR5cGVBdExvY2F0aW9uKFUucGFyZW50LmV4cHJlc3Npb24pLDApKTtpZighKEgmJkguZGVjbGFyYXRpb24mJkgucGFyYW1ldGVyc1tqXSkpcmV0dXJuO3ZhciBJPUgucGFyYW1ldGVyc1tqXS52YWx1ZURlY2xhcmF0aW9uO2lmKCEoSSYmZS5pc1BhcmFtZXRlcihJKSYmZS5pc0lkZW50aWZpZXIoSS5uYW1lKSkpcmV0dXJuO3ZhciBsPWUuYXJyYXlGcm9tKFAuZ2V0VW5tYXRjaGVkUHJvcGVydGllcyhQLmdldFR5cGVBdExvY2F0aW9uKFUpLFAuZ2V0UGFyYW1ldGVyVHlwZShILGopLCExLCExKSk7cmV0dXJuIGUubGVuZ3RoKGwpP3traW5kOjMsdG9rZW46SS5uYW1lLHByb3BlcnRpZXM6bCxwYXJlbnREZWNsYXJhdGlvbjpVfTp2b2lkIDB9aWYoISFlLmlzTWVtYmVyTmFtZShZKSl7aWYoZS5pc0lkZW50aWZpZXIoWSkmJmUuaGFzSW5pdGlhbGl6ZXIoVSkmJlUuaW5pdGlhbGl6ZXImJmUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihVLmluaXRpYWxpemVyKSl7dmFyIGw9ZS5hcnJheUZyb20oUC5nZXRVbm1hdGNoZWRQcm9wZXJ0aWVzKFAuZ2V0VHlwZUF0TG9jYXRpb24oVS5pbml0aWFsaXplciksUC5nZXRUeXBlQXRMb2NhdGlvbihZKSwhMSwhMSkpO3JldHVybiBlLmxlbmd0aChsKT97a2luZDozLHRva2VuOlkscHJvcGVydGllczpsLHBhcmVudERlY2xhcmF0aW9uOlUuaW5pdGlhbGl6ZXJ9OnZvaWQgMH1pZihlLmlzSWRlbnRpZmllcihZKSYmZS5pc0pzeE9wZW5pbmdMaWtlRWxlbWVudChZLnBhcmVudCkpe3ZhciBkPWUuZ2V0RW1pdFNjcmlwdFRhcmdldChrLmdldENvbXBpbGVyT3B0aW9ucygpKSxEPSQoUCxkLFkucGFyZW50KTtyZXR1cm4gZS5sZW5ndGgoRCk/e2tpbmQ6NCx0b2tlbjpZLGF0dHJpYnV0ZXM6RCxwYXJlbnREZWNsYXJhdGlvbjpZLnBhcmVudH06dm9pZCAwfWlmKGUuaXNJZGVudGlmaWVyKFkpJiZlLmlzQ2FsbEV4cHJlc3Npb24oVSkpcmV0dXJue2tpbmQ6Mix0b2tlbjpZLGNhbGw6VSxzb3VyY2VGaWxlOnksbW9kaWZpZXJGbGFnczowLHBhcmVudERlY2xhcmF0aW9uOnl9O2lmKCEhZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihVKSl7dmFyIGZlPWUuc2tpcENvbnN0cmFpbnQoUC5nZXRUeXBlQXRMb2NhdGlvbihVLmV4cHJlc3Npb24pKSxnPWZlLnN5bWJvbDtpZighKCFnfHwhZy5kZWNsYXJhdGlvbnMpKXtpZihlLmlzSWRlbnRpZmllcihZKSYmZS5pc0NhbGxFeHByZXNzaW9uKFUucGFyZW50KSl7dmFyIG5lPWUuZmluZChnLmRlY2xhcmF0aW9ucyxlLmlzTW9kdWxlRGVjbGFyYXRpb24pLHVlPW5lPT1udWxsP3ZvaWQgMDpuZS5nZXRTb3VyY2VGaWxlKCk7aWYobmUmJnVlJiYhbShrLHVlKSlyZXR1cm57a2luZDoyLHRva2VuOlksY2FsbDpVLnBhcmVudCxzb3VyY2VGaWxlOnksbW9kaWZpZXJGbGFnczoxLHBhcmVudERlY2xhcmF0aW9uOm5lfTt2YXIgV2U9ZS5maW5kKGcuZGVjbGFyYXRpb25zLGUuaXNTb3VyY2VGaWxlKTtpZih5LmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yKXJldHVybjtpZihXZSYmIW0oayxXZSkpcmV0dXJue2tpbmQ6Mix0b2tlbjpZLGNhbGw6VS5wYXJlbnQsc291cmNlRmlsZTpXZSxtb2RpZmllckZsYWdzOjEscGFyZW50RGVjbGFyYXRpb246V2V9fXZhciBGZT1lLmZpbmQoZy5kZWNsYXJhdGlvbnMsZS5pc0NsYXNzTGlrZSk7aWYoISghRmUmJmUuaXNQcml2YXRlSWRlbnRpZmllcihZKSkpe3ZhciBaPUZlfHxlLmZpbmQoZy5kZWNsYXJhdGlvbnMsZnVuY3Rpb24ocnIpe3JldHVybiBlLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24ocnIpfHxlLmlzVHlwZUxpdGVyYWxOb2RlKHJyKX0pO2lmKFomJiFtKGssWi5nZXRTb3VyY2VGaWxlKCkpKXt2YXIgQmU9IWUuaXNUeXBlTGl0ZXJhbE5vZGUoWikmJihmZS50YXJnZXR8fGZlKSE9PVAuZ2V0RGVjbGFyZWRUeXBlT2ZTeW1ib2woZyk7aWYoQmUmJihlLmlzUHJpdmF0ZUlkZW50aWZpZXIoWSl8fGUuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihaKSkpcmV0dXJuO3ZhciBnZT1aLmdldFNvdXJjZUZpbGUoKSxSZT1lLmlzVHlwZUxpdGVyYWxOb2RlKFopPzA6KEJlPzMyOjApfChlLnN0YXJ0c1dpdGhVbmRlcnNjb3JlKFkudGV4dCk/ODowKSx6ZT1lLmlzU291cmNlRmlsZUpTKGdlKSxFZT1lLnRyeUNhc3QoVS5wYXJlbnQsZS5pc0NhbGxFeHByZXNzaW9uKTtyZXR1cm57a2luZDowLHRva2VuOlksY2FsbDpFZSxtb2RpZmllckZsYWdzOlJlLHBhcmVudERlY2xhcmF0aW9uOlosZGVjbFNvdXJjZUZpbGU6Z2UsaXNKU0ZpbGU6emV9fXZhciBIZT1lLmZpbmQoZy5kZWNsYXJhdGlvbnMsZS5pc0VudW1EZWNsYXJhdGlvbik7aWYoSGUmJiFlLmlzUHJpdmF0ZUlkZW50aWZpZXIoWSkmJiFtKGssSGUuZ2V0U291cmNlRmlsZSgpKSlyZXR1cm57a2luZDoxLHRva2VuOlkscGFyZW50RGVjbGFyYXRpb246SGV9fX19fX1mdW5jdGlvbiBtKHksVil7cmV0dXJuIHkuaXNTb3VyY2VGaWxlRnJvbUV4dGVybmFsTGlicmFyeShWKXx8eS5pc1NvdXJjZUZpbGVEZWZhdWx0TGlicmFyeShWKX1mdW5jdGlvbiBHKHksVil7cmV0dXJuIFYuaXNKU0ZpbGU/ZS5zaW5nbGVFbGVtZW50QXJyYXkob2UoeSxWKSk6Syh5LFYpfWZ1bmN0aW9uIG9lKHksVil7dmFyIEw9Vi5wYXJlbnREZWNsYXJhdGlvbixQPVYuZGVjbFNvdXJjZUZpbGUsaz1WLm1vZGlmaWVyRmxhZ3MsWT1WLnRva2VuO2lmKCEoZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKEwpfHxlLmlzVHlwZUxpdGVyYWxOb2RlKEwpKSl7dmFyIFU9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoeSxmdW5jdGlvbihIKXtyZXR1cm4gZihILFAsTCxZLCEhKGsmMzIpKX0pO2lmKFUubGVuZ3RoIT09MCl7dmFyIGo9ayYzMj9lLkRpYWdub3N0aWNzLkluaXRpYWxpemVfc3RhdGljX3Byb3BlcnR5XzA6ZS5pc1ByaXZhdGVJZGVudGlmaWVyKFkpP2UuRGlhZ25vc3RpY3MuRGVjbGFyZV9hX3ByaXZhdGVfZmllbGRfbmFtZWRfMDplLkRpYWdub3N0aWNzLkluaXRpYWxpemVfcHJvcGVydHlfMF9pbl90aGVfY29uc3RydWN0b3I7cmV0dXJuIEMuY3JlYXRlQ29kZUZpeEFjdGlvbih3LFUsW2osWS50ZXh0XSx3LGUuRGlhZ25vc3RpY3MuQWRkX2FsbF9taXNzaW5nX21lbWJlcnMpfX19ZnVuY3Rpb24gZih5LFYsTCxQLGspe3ZhciBZPVAudGV4dDtpZihrKXtpZihMLmtpbmQ9PT0yMjYpcmV0dXJuO3ZhciBVPUwubmFtZS5nZXRUZXh0KCksaj1UKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFUpLFkpO3kuaW5zZXJ0Tm9kZUFmdGVyKFYsTCxqKX1lbHNlIGlmKGUuaXNQcml2YXRlSWRlbnRpZmllcihQKSl7dmFyIEg9ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxZLHZvaWQgMCx2b2lkIDAsdm9pZCAwKSxJPUooTCk7ST95Lmluc2VydE5vZGVBZnRlcihWLEksSCk6eS5pbnNlcnRNZW1iZXJBdFN0YXJ0KFYsTCxIKX1lbHNle3ZhciBsPWUuZ2V0Rmlyc3RDb25zdHJ1Y3RvcldpdGhCb2R5KEwpO2lmKCFsKXJldHVybjt2YXIgZD1UKGUuZmFjdG9yeS5jcmVhdGVUaGlzKCksWSk7eS5pbnNlcnROb2RlQXRDb25zdHJ1Y3RvckVuZChWLGwsZCl9fWZ1bmN0aW9uIFQoeSxWKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZS5mYWN0b3J5LmNyZWF0ZUFzc2lnbm1lbnQoZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih5LFYpLHgoKSkpfWZ1bmN0aW9uIEsoeSxWKXt2YXIgTD1WLnBhcmVudERlY2xhcmF0aW9uLFA9Vi5kZWNsU291cmNlRmlsZSxrPVYubW9kaWZpZXJGbGFncyxZPVYudG9rZW4sVT1ZLnRleHQsaj1rJjMyLEg9Yih5LnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSxMLFkpLEk9ZnVuY3Rpb24oZCl7cmV0dXJuIGUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHksZnVuY3Rpb24oRCl7cmV0dXJuIHNlKEQsUCxMLFUsSCxkKX0pfSxsPVtDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxJKGsmMzIpLFtqP2UuRGlhZ25vc3RpY3MuRGVjbGFyZV9zdGF0aWNfcHJvcGVydHlfMDplLkRpYWdub3N0aWNzLkRlY2xhcmVfcHJvcGVydHlfMCxVXSx3LGUuRGlhZ25vc3RpY3MuQWRkX2FsbF9taXNzaW5nX21lbWJlcnMpXTtyZXR1cm4ganx8ZS5pc1ByaXZhdGVJZGVudGlmaWVyKFkpfHwoayY4JiZsLnVuc2hpZnQoQy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbCh3LEkoOCksW2UuRGlhZ25vc3RpY3MuRGVjbGFyZV9wcml2YXRlX3Byb3BlcnR5XzAsVV0pKSxsLnB1c2goaWUoeSxQLEwsWS50ZXh0LEgpKSksbH1mdW5jdGlvbiBiKHksVixMKXt2YXIgUDtpZihMLnBhcmVudC5wYXJlbnQua2luZD09PTIyMSl7dmFyIGs9TC5wYXJlbnQucGFyZW50LFk9TC5wYXJlbnQ9PT1rLmxlZnQ/ay5yaWdodDprLmxlZnQsVT15LmdldFdpZGVuZWRUeXBlKHkuZ2V0QmFzZVR5cGVPZkxpdGVyYWxUeXBlKHkuZ2V0VHlwZUF0TG9jYXRpb24oWSkpKTtQPXkudHlwZVRvVHlwZU5vZGUoVSxWLDEpfWVsc2V7dmFyIGo9eS5nZXRDb250ZXh0dWFsVHlwZShMLnBhcmVudCk7UD1qP3kudHlwZVRvVHlwZU5vZGUoaix2b2lkIDAsMSk6dm9pZCAwfXJldHVybiBQfHxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDEzMCl9ZnVuY3Rpb24gc2UoeSxWLEwsUCxrLFkpe3ZhciBVPVk/ZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3MoWSkpOnZvaWQgMCxqPWUuaXNDbGFzc0xpa2UoTCk/ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24odm9pZCAwLFUsUCx2b2lkIDAsayx2b2lkIDApOmUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eVNpZ25hdHVyZSh2b2lkIDAsUCx2b2lkIDAsayksSD1KKEwpO0g/eS5pbnNlcnROb2RlQWZ0ZXIoVixILGopOnkuaW5zZXJ0TWVtYmVyQXRTdGFydChWLEwsail9ZnVuY3Rpb24gSih5KXtmb3IodmFyIFYsTD0wLFA9eS5tZW1iZXJzO0w8UC5sZW5ndGg7TCsrKXt2YXIgaz1QW0xdO2lmKCFlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihrKSlicmVhaztWPWt9cmV0dXJuIFZ9ZnVuY3Rpb24gaWUoeSxWLEwsUCxrKXt2YXIgWT1lLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1MCksVT1lLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJ4XCIsdm9pZCAwLFksdm9pZCAwKSxqPWUuZmFjdG9yeS5jcmVhdGVJbmRleFNpZ25hdHVyZSh2b2lkIDAsdm9pZCAwLFtVXSxrKSxIPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHksZnVuY3Rpb24oSSl7cmV0dXJuIEkuaW5zZXJ0TWVtYmVyQXRTdGFydChWLEwsail9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbCh3LEgsW2UuRGlhZ25vc3RpY3MuQWRkX2luZGV4X3NpZ25hdHVyZV9mb3JfcHJvcGVydHlfMCxQXSl9ZnVuY3Rpb24gUih5LFYpe3ZhciBMPVYucGFyZW50RGVjbGFyYXRpb24sUD1WLmRlY2xTb3VyY2VGaWxlLGs9Vi5tb2RpZmllckZsYWdzLFk9Vi50b2tlbixVPVYuY2FsbDtpZihVIT09dm9pZCAwJiYhZS5pc1ByaXZhdGVJZGVudGlmaWVyKFkpKXt2YXIgaj1ZLnRleHQsSD1mdW5jdGlvbihsKXtyZXR1cm4gZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoeSxmdW5jdGlvbihkKXtyZXR1cm4gcSh5LGQsVSxZLGwsTCxQKX0pfSxJPVtDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxIKGsmMzIpLFtrJjMyP2UuRGlhZ25vc3RpY3MuRGVjbGFyZV9zdGF0aWNfbWV0aG9kXzA6ZS5EaWFnbm9zdGljcy5EZWNsYXJlX21ldGhvZF8wLGpdLHcsZS5EaWFnbm9zdGljcy5BZGRfYWxsX21pc3NpbmdfbWVtYmVycyldO3JldHVybiBrJjgmJkkudW5zaGlmdChDLmNyZWF0ZUNvZGVGaXhBY3Rpb25XaXRob3V0Rml4QWxsKHcsSCg4KSxbZS5EaWFnbm9zdGljcy5EZWNsYXJlX3ByaXZhdGVfbWV0aG9kXzAsal0pKSxJfX1mdW5jdGlvbiBxKHksVixMLFAsayxZLFUpe3ZhciBqPUMuY3JlYXRlSW1wb3J0QWRkZXIoVSx5LnByb2dyYW0seS5wcmVmZXJlbmNlcyx5Lmhvc3QpLEg9ZS5pc0NsYXNzTGlrZShZKT8xNjk6MTY4LEk9Qy5jcmVhdGVTaWduYXR1cmVEZWNsYXJhdGlvbkZyb21DYWxsRXhwcmVzc2lvbihILHksaixMLFAsayxZKSxsPUEoWSxMKTtsP1YuaW5zZXJ0Tm9kZUFmdGVyKFUsbCxJKTpWLmluc2VydE1lbWJlckF0U3RhcnQoVSxZLEkpLGoud3JpdGVGaXhlcyhWKX1mdW5jdGlvbiBPKHksVixMKXt2YXIgUD1MLnRva2VuLGs9TC5wYXJlbnREZWNsYXJhdGlvbixZPWUuc29tZShrLm1lbWJlcnMsZnVuY3Rpb24oail7dmFyIEg9Vi5nZXRUeXBlQXRMb2NhdGlvbihqKTtyZXR1cm4hIShIJiZILmZsYWdzJjQwMjY1MzMxNil9KSxVPWUuZmFjdG9yeS5jcmVhdGVFbnVtTWVtYmVyKFAsWT9lLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChQLnRleHQpOnZvaWQgMCk7eS5yZXBsYWNlTm9kZShrLmdldFNvdXJjZUZpbGUoKSxrLGUuZmFjdG9yeS51cGRhdGVFbnVtRGVjbGFyYXRpb24oayxrLmRlY29yYXRvcnMsay5tb2RpZmllcnMsay5uYW1lLGUuY29uY2F0ZW5hdGUoay5tZW1iZXJzLGUuc2luZ2xlRWxlbWVudEFycmF5KFUpKSkse2xlYWRpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5MZWFkaW5nVHJpdmlhT3B0aW9uLkluY2x1ZGVBbGwsdHJhaWxpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5UcmFpbGluZ1RyaXZpYU9wdGlvbi5FeGNsdWRlfSl9ZnVuY3Rpb24gdmUoeSxWLEwpe3ZhciBQPUMuY3JlYXRlSW1wb3J0QWRkZXIoVi5zb3VyY2VGaWxlLFYucHJvZ3JhbSxWLnByZWZlcmVuY2VzLFYuaG9zdCksaz1DLmNyZWF0ZVNpZ25hdHVyZURlY2xhcmF0aW9uRnJvbUNhbGxFeHByZXNzaW9uKDI1NixWLFAsTC5jYWxsLGUuaWRUZXh0KEwudG9rZW4pLEwubW9kaWZpZXJGbGFncyxMLnBhcmVudERlY2xhcmF0aW9uKTt5Lmluc2VydE5vZGVBdEVuZE9mU2NvcGUoTC5zb3VyY2VGaWxlLEwucGFyZW50RGVjbGFyYXRpb24sayl9ZnVuY3Rpb24gZWUoeSxWLEwpe3ZhciBQPUMuY3JlYXRlSW1wb3J0QWRkZXIoVi5zb3VyY2VGaWxlLFYucHJvZ3JhbSxWLnByZWZlcmVuY2VzLFYuaG9zdCksaz1lLmdldFF1b3RlUHJlZmVyZW5jZShWLnNvdXJjZUZpbGUsVi5wcmVmZXJlbmNlcyksWT1WLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSxVPUwucGFyZW50RGVjbGFyYXRpb24uYXR0cmlidXRlcyxqPWUuc29tZShVLnByb3BlcnRpZXMsZS5pc0pzeFNwcmVhZEF0dHJpYnV0ZSksSD1lLm1hcChMLmF0dHJpYnV0ZXMsZnVuY3Rpb24oZCl7dmFyIEQ9RihWLFksUCxrLFkuZ2V0VHlwZU9mU3ltYm9sKGQpKSxmZT1lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihkLm5hbWUpLGc9ZS5mYWN0b3J5LmNyZWF0ZUpzeEF0dHJpYnV0ZShmZSxlLmZhY3RvcnkuY3JlYXRlSnN4RXhwcmVzc2lvbih2b2lkIDAsRCkpO3JldHVybiBlLnNldFBhcmVudChmZSxnKSxnfSksST1lLmZhY3RvcnkuY3JlYXRlSnN4QXR0cmlidXRlcyhqP1ZlKFZlKFtdLEgsITApLFUucHJvcGVydGllcywhMCk6VmUoVmUoW10sVS5wcm9wZXJ0aWVzLCEwKSxILCEwKSksbD17cHJlZml4OlUucG9zPT09VS5lbmQ/XCIgXCI6dm9pZCAwfTt5LnJlcGxhY2VOb2RlKFYuc291cmNlRmlsZSxVLEksbCl9ZnVuY3Rpb24gaGUoeSxWLEwpe3ZhciBQPUMuY3JlYXRlSW1wb3J0QWRkZXIoVi5zb3VyY2VGaWxlLFYucHJvZ3JhbSxWLnByZWZlcmVuY2VzLFYuaG9zdCksaz1lLmdldFF1b3RlUHJlZmVyZW5jZShWLnNvdXJjZUZpbGUsVi5wcmVmZXJlbmNlcyksWT1lLmdldEVtaXRTY3JpcHRUYXJnZXQoVi5wcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpKSxVPVYucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLGo9ZS5tYXAoTC5wcm9wZXJ0aWVzLGZ1bmN0aW9uKEkpe3ZhciBsPUYoVixVLFAsayxVLmdldFR5cGVPZlN5bWJvbChJKSk7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoZS5jcmVhdGVQcm9wZXJ0eU5hbWVOb2RlRm9ySWRlbnRpZmllck9yTGl0ZXJhbChJLm5hbWUsWSxrPT09MCksbCl9KSxIPXtsZWFkaW5nVHJpdmlhT3B0aW9uOmUudGV4dENoYW5nZXMuTGVhZGluZ1RyaXZpYU9wdGlvbi5FeGNsdWRlLHRyYWlsaW5nVHJpdmlhT3B0aW9uOmUudGV4dENoYW5nZXMuVHJhaWxpbmdUcml2aWFPcHRpb24uRXhjbHVkZSxpbmRlbnRhdGlvbjpMLmluZGVudGF0aW9ufTt5LnJlcGxhY2VOb2RlKFYuc291cmNlRmlsZSxMLnBhcmVudERlY2xhcmF0aW9uLGUuZmFjdG9yeS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihWZShWZShbXSxMLnBhcmVudERlY2xhcmF0aW9uLnByb3BlcnRpZXMsITApLGosITApLCEwKSxIKX1mdW5jdGlvbiBGKHksVixMLFAsayl7aWYoay5mbGFncyYzKXJldHVybiB4KCk7aWYoay5mbGFncyYxMzQyMTc3MzIpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKFwiXCIsUD09PTApO2lmKGsuZmxhZ3MmOClyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZU51bWVyaWNMaXRlcmFsKDApO2lmKGsuZmxhZ3MmNjQpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVCaWdJbnRMaXRlcmFsKFwiMG5cIik7aWYoay5mbGFncyYxNilyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUZhbHNlKCk7aWYoay5mbGFncyYxMDU2KXt2YXIgWT1rLnN5bWJvbC5leHBvcnRzP2UuZmlyc3RPclVuZGVmaW5lZChlLmFycmF5RnJvbShrLnN5bWJvbC5leHBvcnRzLnZhbHVlcygpKSk6ay5zeW1ib2wsVT1WLnN5bWJvbFRvRXhwcmVzc2lvbihrLnN5bWJvbC5wYXJlbnQ/ay5zeW1ib2wucGFyZW50Omsuc3ltYm9sLDExMTU1MSx2b2lkIDAsdm9pZCAwKTtyZXR1cm4gWT09PXZvaWQgMHx8VT09PXZvaWQgMD9lLmZhY3RvcnkuY3JlYXRlTnVtZXJpY0xpdGVyYWwoMCk6ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihVLFYuc3ltYm9sVG9TdHJpbmcoWSkpfWlmKGsuZmxhZ3MmMjU2KXJldHVybiBlLmZhY3RvcnkuY3JlYXRlTnVtZXJpY0xpdGVyYWwoay52YWx1ZSk7aWYoay5mbGFncyYyMDQ4KXJldHVybiBlLmZhY3RvcnkuY3JlYXRlQmlnSW50TGl0ZXJhbChrLnZhbHVlKTtpZihrLmZsYWdzJjEyOClyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoay52YWx1ZSxQPT09MCk7aWYoay5mbGFncyY1MTIpcmV0dXJuIGs9PT1WLmdldEZhbHNlVHlwZSgpfHxrPT09Vi5nZXRGYWxzZVR5cGUoITApP2UuZmFjdG9yeS5jcmVhdGVGYWxzZSgpOmUuZmFjdG9yeS5jcmVhdGVUcnVlKCk7aWYoay5mbGFncyY2NTUzNilyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZU51bGwoKTtpZihrLmZsYWdzJjEwNDg1NzYpe3ZhciBqPWUuZmlyc3REZWZpbmVkKGsudHlwZXMsZnVuY3Rpb24oZyl7cmV0dXJuIEYoeSxWLEwsUCxnKX0pO3JldHVybiBqIT1udWxsP2o6eCgpfWlmKFYuaXNBcnJheUxpa2VUeXBlKGspKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbigpO2lmKFgoaykpe3ZhciBIPWUubWFwKFYuZ2V0UHJvcGVydGllc09mVHlwZShrKSxmdW5jdGlvbihnKXt2YXIgbmU9Zy52YWx1ZURlY2xhcmF0aW9uP0YoeSxWLEwsUCxWLmdldFR5cGVBdExvY2F0aW9uKGcudmFsdWVEZWNsYXJhdGlvbikpOngoKTtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChnLm5hbWUsbmUpfSk7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihILCEwKX1pZihlLmdldE9iamVjdEZsYWdzKGspJjE2KXt2YXIgST1lLmZpbmQoay5zeW1ib2wuZGVjbGFyYXRpb25zfHxlLmVtcHR5QXJyYXksZS5vcihlLmlzRnVuY3Rpb25UeXBlTm9kZSxlLmlzTWV0aG9kU2lnbmF0dXJlLGUuaXNNZXRob2REZWNsYXJhdGlvbikpO2lmKEk9PT12b2lkIDApcmV0dXJuIHgoKTt2YXIgbD1WLmdldFNpZ25hdHVyZXNPZlR5cGUoaywwKTtpZihsPT09dm9pZCAwKXJldHVybiB4KCk7dmFyIGQ9Qy5jcmVhdGVTaWduYXR1cmVEZWNsYXJhdGlvbkZyb21TaWduYXR1cmUoMjEzLHksUCxsWzBdLEMuY3JlYXRlU3R1YmJlZEJvZHkoZS5EaWFnbm9zdGljcy5GdW5jdGlvbl9ub3RfaW1wbGVtZW50ZWQubWVzc2FnZSxQKSx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsTCk7cmV0dXJuIGQhPW51bGw/ZDp4KCl9aWYoZS5nZXRPYmplY3RGbGFncyhrKSYxKXt2YXIgRD1lLmdldENsYXNzTGlrZURlY2xhcmF0aW9uT2ZTeW1ib2woay5zeW1ib2wpO2lmKEQ9PT12b2lkIDB8fGUuaGFzQWJzdHJhY3RNb2RpZmllcihEKSlyZXR1cm4geCgpO3ZhciBmZT1lLmdldEZpcnN0Q29uc3RydWN0b3JXaXRoQm9keShEKTtyZXR1cm4gZmUmJmUubGVuZ3RoKGZlLnBhcmFtZXRlcnMpP3goKTplLmZhY3RvcnkuY3JlYXRlTmV3RXhwcmVzc2lvbihlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihrLnN5bWJvbC5uYW1lKSx2b2lkIDAsdm9pZCAwKX1yZXR1cm4geCgpfWZ1bmN0aW9uIHgoKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCJ1bmRlZmluZWRcIil9ZnVuY3Rpb24gWCh5KXtyZXR1cm4geS5mbGFncyY1MjQyODgmJihlLmdldE9iamVjdEZsYWdzKHkpJjEyOHx8eS5zeW1ib2wmJmUudHJ5Q2FzdChlLnNpbmdsZU9yVW5kZWZpbmVkKHkuc3ltYm9sLmRlY2xhcmF0aW9ucyksZS5pc1R5cGVMaXRlcmFsTm9kZSkpfWZ1bmN0aW9uICQoeSxWLEwpe3ZhciBQPXkuZ2V0Q29udGV4dHVhbFR5cGUoTC5hdHRyaWJ1dGVzKTtpZihQPT09dm9pZCAwKXJldHVybiBlLmVtcHR5QXJyYXk7dmFyIGs9UC5nZXRQcm9wZXJ0aWVzKCk7aWYoIWUubGVuZ3RoKGspKXJldHVybiBlLmVtcHR5QXJyYXk7Zm9yKHZhciBZPW5ldyBlLlNldCxVPTAsaj1MLmF0dHJpYnV0ZXMucHJvcGVydGllcztVPGoubGVuZ3RoO1UrKyl7dmFyIEg9altVXTtpZihlLmlzSnN4QXR0cmlidXRlKEgpJiZZLmFkZChILm5hbWUuZXNjYXBlZFRleHQpLGUuaXNKc3hTcHJlYWRBdHRyaWJ1dGUoSCkpZm9yKHZhciBJPXkuZ2V0VHlwZUF0TG9jYXRpb24oSC5leHByZXNzaW9uKSxsPTAsZD1JLmdldFByb3BlcnRpZXMoKTtsPGQubGVuZ3RoO2wrKyl7dmFyIEQ9ZFtsXTtZLmFkZChELmVzY2FwZWROYW1lKX19cmV0dXJuIGUuZmlsdGVyKGssZnVuY3Rpb24oZmUpe3JldHVybiBlLmlzSWRlbnRpZmllclRleHQoZmUubmFtZSxWLDEpJiYhKGZlLmZsYWdzJjE2Nzc3MjE2fHxlLmdldENoZWNrRmxhZ3MoZmUpJjQ4fHxZLmhhcyhmZS5lc2NhcGVkTmFtZSkpfSl9ZnVuY3Rpb24gQSh5LFYpe2lmKCFlLmlzVHlwZUxpdGVyYWxOb2RlKHkpKXt2YXIgTD1lLmZpbmRBbmNlc3RvcihWLGZ1bmN0aW9uKFApe3JldHVybiBlLmlzTWV0aG9kRGVjbGFyYXRpb24oUCl8fGUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFApfSk7cmV0dXJuIEwmJkwucGFyZW50PT09eT9MOnZvaWQgMH19fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImFkZE1pc3NpbmdOZXdPcGVyYXRvclwiLEI9W2UuRGlhZ25vc3RpY3MuVmFsdWVfb2ZfdHlwZV8wX2lzX25vdF9jYWxsYWJsZV9EaWRfeW91X21lYW5fdG9faW5jbHVkZV9uZXcuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49bGUuc291cmNlRmlsZSxwPWxlLnNwYW4sbT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChsZSxmdW5jdGlvbihHKXtyZXR1cm4gRShHLE4scCl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsbSxlLkRpYWdub3N0aWNzLkFkZF9taXNzaW5nX25ld19vcGVyYXRvcl90b19jYWxsLHcsZS5EaWFnbm9zdGljcy5BZGRfbWlzc2luZ19uZXdfb3BlcmF0b3JfdG9fYWxsX2NhbGxzKV19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3JldHVybiBDLmNvZGVGaXhBbGwobGUsQixmdW5jdGlvbihOLHApe3JldHVybiBFKE4sbGUuc291cmNlRmlsZSxwKX0pfX0pO2Z1bmN0aW9uIEUobGUsTixwKXt2YXIgbT1lLmNhc3QoUShOLHApLGUuaXNDYWxsRXhwcmVzc2lvbiksRz1lLmZhY3RvcnkuY3JlYXRlTmV3RXhwcmVzc2lvbihtLmV4cHJlc3Npb24sbS50eXBlQXJndW1lbnRzLG0uYXJndW1lbnRzKTtsZS5yZXBsYWNlTm9kZShOLG0sRyl9ZnVuY3Rpb24gUShsZSxOKXtmb3IodmFyIHA9ZS5nZXRUb2tlbkF0UG9zaXRpb24obGUsTi5zdGFydCksbT1lLnRleHRTcGFuRW5kKE4pO3AuZW5kPG07KXA9cC5wYXJlbnQ7cmV0dXJuIHB9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeENhbm5vdEZpbmRNb2R1bGVcIixCPVwiaW5zdGFsbFR5cGVzUGFja2FnZVwiLEU9ZS5EaWFnbm9zdGljcy5DYW5ub3RfZmluZF9tb2R1bGVfMF9vcl9pdHNfY29ycmVzcG9uZGluZ190eXBlX2RlY2xhcmF0aW9ucy5jb2RlLFE9W0UsZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9hX2RlY2xhcmF0aW9uX2ZpbGVfZm9yX21vZHVsZV8wXzFfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGUuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6USxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihHKXt2YXIgb2U9Ry5ob3N0LGY9Ry5zb3VyY2VGaWxlLFQ9Ry5zcGFuLnN0YXJ0LEs9TihmLFQpO2lmKEshPT12b2lkIDApe3ZhciBiPXAoSyxvZSxHLmVycm9yQ29kZSk7cmV0dXJuIGI9PT12b2lkIDA/W106W0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LFtdLFtlLkRpYWdub3N0aWNzLkluc3RhbGxfMCxiXSxCLGUuRGlhZ25vc3RpY3MuSW5zdGFsbF9hbGxfbWlzc2luZ190eXBlc19wYWNrYWdlcyxsZShmLmZpbGVOYW1lLGIpKV19fSxmaXhJZHM6W0JdLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKG0pe3JldHVybiBDLmNvZGVGaXhBbGwobSxRLGZ1bmN0aW9uKEcsb2UsZil7dmFyIFQ9TihvZS5maWxlLG9lLnN0YXJ0KTtpZihUIT09dm9pZCAwKXN3aXRjaChtLmZpeElkKXtjYXNlIEI6e3ZhciBLPXAoVCxtLmhvc3Qsb2UuY29kZSk7SyYmZi5wdXNoKGxlKG9lLmZpbGUuZmlsZU5hbWUsSykpO2JyZWFrfWRlZmF1bHQ6ZS5EZWJ1Zy5mYWlsKFwiQmFkIGZpeElkOiBcIi5jb25jYXQobS5maXhJZCkpfX0pfX0pO2Z1bmN0aW9uIGxlKG0sRyl7cmV0dXJue3R5cGU6XCJpbnN0YWxsIHBhY2thZ2VcIixmaWxlOm0scGFja2FnZU5hbWU6R319ZnVuY3Rpb24gTihtLEcpe3ZhciBvZT1lLnRyeUNhc3QoZS5nZXRUb2tlbkF0UG9zaXRpb24obSxHKSxlLmlzU3RyaW5nTGl0ZXJhbCk7aWYoISFvZSl7dmFyIGY9b2UudGV4dCxUPWUucGFyc2VQYWNrYWdlTmFtZShmKS5wYWNrYWdlTmFtZTtyZXR1cm4gZS5pc0V4dGVybmFsTW9kdWxlTmFtZVJlbGF0aXZlKFQpP3ZvaWQgMDpUfX1mdW5jdGlvbiBwKG0sRyxvZSl7dmFyIGY7cmV0dXJuIG9lPT09RT9lLkpzVHlwaW5nLm5vZGVDb3JlTW9kdWxlcy5oYXMobSk/XCJAdHlwZXMvbm9kZVwiOnZvaWQgMDohKChmPUcuaXNLbm93blR5cGVzUGFja2FnZU5hbWUpPT09bnVsbHx8Zj09PXZvaWQgMCkmJmYuY2FsbChHLG0pP2UuZ2V0VHlwZXNQYWNrYWdlTmFtZShtKTp2b2lkIDB9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1bZS5EaWFnbm9zdGljcy5Ob25fYWJzdHJhY3RfY2xhc3NfMF9kb2VzX25vdF9pbXBsZW1lbnRfaW5oZXJpdGVkX2Fic3RyYWN0X21lbWJlcl8xX2Zyb21fY2xhc3NfMi5jb2RlLGUuRGlhZ25vc3RpY3MuTm9uX2Fic3RyYWN0X2NsYXNzX2V4cHJlc3Npb25fZG9lc19ub3RfaW1wbGVtZW50X2luaGVyaXRlZF9hYnN0cmFjdF9tZW1iZXJfMF9mcm9tX2NsYXNzXzEuY29kZV0sQj1cImZpeENsYXNzRG9lc250SW1wbGVtZW50SW5oZXJpdGVkQWJzdHJhY3RNZW1iZXJcIjtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2Rlczp3LGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKHApe3ZhciBtPXAuc291cmNlRmlsZSxHPXAuc3BhbixvZT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKGYpe3JldHVybiBRKEUobSxHLnN0YXJ0KSxtLHAsZixwLnByZWZlcmVuY2VzKX0pO3JldHVybiBvZS5sZW5ndGg9PT0wP3ZvaWQgMDpbQy5jcmVhdGVDb2RlRml4QWN0aW9uKEIsb2UsZS5EaWFnbm9zdGljcy5JbXBsZW1lbnRfaW5oZXJpdGVkX2Fic3RyYWN0X2NsYXNzLEIsZS5EaWFnbm9zdGljcy5JbXBsZW1lbnRfYWxsX2luaGVyaXRlZF9hYnN0cmFjdF9jbGFzc2VzKV19LGZpeElkczpbQl0sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG09bmV3IGUuTWFwO3JldHVybiBDLmNvZGVGaXhBbGwocCx3LGZ1bmN0aW9uKEcsb2Upe3ZhciBmPUUob2UuZmlsZSxvZS5zdGFydCk7ZS5hZGRUb1NlZW4obSxlLmdldE5vZGVJZChmKSkmJlEoZixwLnNvdXJjZUZpbGUscCxHLHAucHJlZmVyZW5jZXMpfSl9fSk7ZnVuY3Rpb24gRShOLHApe3ZhciBtPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKE4scCk7cmV0dXJuIGUuY2FzdChtLnBhcmVudCxlLmlzQ2xhc3NMaWtlKX1mdW5jdGlvbiBRKE4scCxtLEcsb2Upe3ZhciBmPWUuZ2V0RWZmZWN0aXZlQmFzZVR5cGVOb2RlKE4pLFQ9bS5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksSz1ULmdldFR5cGVBdExvY2F0aW9uKGYpLGI9VC5nZXRQcm9wZXJ0aWVzT2ZUeXBlKEspLmZpbHRlcihsZSksc2U9Qy5jcmVhdGVJbXBvcnRBZGRlcihwLG0ucHJvZ3JhbSxvZSxtLmhvc3QpO0MuY3JlYXRlTWlzc2luZ01lbWJlck5vZGVzKE4sYixwLG0sb2Usc2UsZnVuY3Rpb24oSil7cmV0dXJuIEcuaW5zZXJ0TWVtYmVyQXRTdGFydChwLE4sSil9KSxzZS53cml0ZUZpeGVzKEcpfWZ1bmN0aW9uIGxlKE4pe3ZhciBwPWUuZ2V0U3ludGFjdGljTW9kaWZpZXJGbGFncyhlLmZpcnN0KE4uZ2V0RGVjbGFyYXRpb25zKCkpKTtyZXR1cm4hKHAmOCkmJiEhKHAmMTI4KX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiY2xhc3NTdXBlck11c3RQcmVjZWRlVGhpc0FjY2Vzc1wiLEI9W2UuRGlhZ25vc3RpY3Muc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3MuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihOKXt2YXIgcD1OLnNvdXJjZUZpbGUsbT1OLnNwYW4sRz1RKHAsbS5zdGFydCk7aWYoISFHKXt2YXIgb2U9Ry5jb25zdHJ1Y3RvcixmPUcuc3VwZXJDYWxsLFQ9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoTixmdW5jdGlvbihLKXtyZXR1cm4gRShLLHAsb2UsZil9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsVCxlLkRpYWdub3N0aWNzLk1ha2Vfc3VwZXJfY2FsbF90aGVfZmlyc3Rfc3RhdGVtZW50X2luX3RoZV9jb25zdHJ1Y3Rvcix3LGUuRGlhZ25vc3RpY3MuTWFrZV9hbGxfc3VwZXJfY2FsbHNfdGhlX2ZpcnN0X3N0YXRlbWVudF9pbl90aGVpcl9jb25zdHJ1Y3RvcildfX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihOKXt2YXIgcD1OLnNvdXJjZUZpbGUsbT1uZXcgZS5NYXA7cmV0dXJuIEMuY29kZUZpeEFsbChOLEIsZnVuY3Rpb24oRyxvZSl7dmFyIGY9UShvZS5maWxlLG9lLnN0YXJ0KTtpZighIWYpe3ZhciBUPWYuY29uc3RydWN0b3IsSz1mLnN1cGVyQ2FsbDtlLmFkZFRvU2VlbihtLGUuZ2V0Tm9kZUlkKFQucGFyZW50KSkmJkUoRyxwLFQsSyl9fSl9fSk7ZnVuY3Rpb24gRShOLHAsbSxHKXtOLmluc2VydE5vZGVBdENvbnN0cnVjdG9yU3RhcnQocCxtLEcpLE4uZGVsZXRlKHAsRyl9ZnVuY3Rpb24gUShOLHApe3ZhciBtPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKE4scCk7aWYobS5raW5kPT09MTA4KXt2YXIgRz1lLmdldENvbnRhaW5pbmdGdW5jdGlvbihtKSxvZT1sZShHLmJvZHkpO3JldHVybiBvZSYmIW9lLmV4cHJlc3Npb24uYXJndW1lbnRzLnNvbWUoZnVuY3Rpb24oZil7cmV0dXJuIGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZikmJmYuZXhwcmVzc2lvbj09PW19KT97Y29uc3RydWN0b3I6RyxzdXBlckNhbGw6b2V9OnZvaWQgMH19ZnVuY3Rpb24gbGUoTil7cmV0dXJuIGUuaXNFeHByZXNzaW9uU3RhdGVtZW50KE4pJiZlLmlzU3VwZXJDYWxsKE4uZXhwcmVzc2lvbik/TjplLmlzRnVuY3Rpb25MaWtlKE4pP3ZvaWQgMDplLmZvckVhY2hDaGlsZChOLGxlKX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiY29uc3RydWN0b3JGb3JEZXJpdmVkTmVlZFN1cGVyQ2FsbFwiLEI9W2UuRGlhZ25vc3RpY3MuQ29uc3RydWN0b3JzX2Zvcl9kZXJpdmVkX2NsYXNzZXNfbXVzdF9jb250YWluX2Ffc3VwZXJfY2FsbC5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKGxlKXt2YXIgTj1sZS5zb3VyY2VGaWxlLHA9bGUuc3BhbixtPUUoTixwLnN0YXJ0KSxHPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKG9lKXtyZXR1cm4gUShvZSxOLG0pfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LEcsZS5EaWFnbm9zdGljcy5BZGRfbWlzc2luZ19zdXBlcl9jYWxsLHcsZS5EaWFnbm9zdGljcy5BZGRfYWxsX21pc3Npbmdfc3VwZXJfY2FsbHMpXX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7cmV0dXJuIEMuY29kZUZpeEFsbChsZSxCLGZ1bmN0aW9uKE4scCl7cmV0dXJuIFEoTixsZS5zb3VyY2VGaWxlLEUocC5maWxlLHAuc3RhcnQpKX0pfX0pO2Z1bmN0aW9uIEUobGUsTil7dmFyIHA9ZS5nZXRUb2tlbkF0UG9zaXRpb24obGUsTik7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKHAucGFyZW50KSxcInRva2VuIHNob3VsZCBiZSBhdCB0aGUgY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIikscC5wYXJlbnR9ZnVuY3Rpb24gUShsZSxOLHApe3ZhciBtPWUuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGUuZmFjdG9yeS5jcmVhdGVDYWxsRXhwcmVzc2lvbihlLmZhY3RvcnkuY3JlYXRlU3VwZXIoKSx2b2lkIDAsZS5lbXB0eUFycmF5KSk7bGUuaW5zZXJ0Tm9kZUF0Q29uc3RydWN0b3JTdGFydChOLHAsbSl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImVuYWJsZUV4cGVyaW1lbnRhbERlY29yYXRvcnNcIixCPVtlLkRpYWdub3N0aWNzLkV4cGVyaW1lbnRhbF9zdXBwb3J0X2Zvcl9kZWNvcmF0b3JzX2lzX2FfZmVhdHVyZV90aGF0X2lzX3N1YmplY3RfdG9fY2hhbmdlX2luX2FfZnV0dXJlX3JlbGVhc2VfU2V0X3RoZV9leHBlcmltZW50YWxEZWNvcmF0b3JzX29wdGlvbl9pbl95b3VyX3RzY29uZmlnX29yX2pzY29uZmlnX3RvX3JlbW92ZV90aGlzX3dhcm5pbmcuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49bGUucHJvZ3JhbS5nZXRDb21waWxlck9wdGlvbnMoKS5jb25maWdGaWxlO2lmKE4hPT12b2lkIDApe3ZhciBwPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKG0pe3JldHVybiBFKG0sTil9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbCh3LHAsZS5EaWFnbm9zdGljcy5FbmFibGVfdGhlX2V4cGVyaW1lbnRhbERlY29yYXRvcnNfb3B0aW9uX2luX3lvdXJfY29uZmlndXJhdGlvbl9maWxlKV19fSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKFEpe3JldHVybiBDLmNvZGVGaXhBbGwoUSxCLGZ1bmN0aW9uKGxlKXt2YXIgTj1RLnByb2dyYW0uZ2V0Q29tcGlsZXJPcHRpb25zKCkuY29uZmlnRmlsZTtOIT09dm9pZCAwJiZFKGxlLE4pfSl9fSk7ZnVuY3Rpb24gRShRLGxlKXtDLnNldEpzb25Db21waWxlck9wdGlvblZhbHVlKFEsbGUsXCJleHBlcmltZW50YWxEZWNvcmF0b3JzXCIsZS5mYWN0b3J5LmNyZWF0ZVRydWUoKSl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeEVuYWJsZUpzeEZsYWdcIixCPVtlLkRpYWdub3N0aWNzLkNhbm5vdF91c2VfSlNYX3VubGVzc190aGVfanN4X2ZsYWdfaXNfcHJvdmlkZWQuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49bGUucHJvZ3JhbS5nZXRDb21waWxlck9wdGlvbnMoKS5jb25maWdGaWxlO2lmKE4hPT12b2lkIDApe3ZhciBwPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKG0pe3JldHVybiBFKG0sTil9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbCh3LHAsZS5EaWFnbm9zdGljcy5FbmFibGVfdGhlX2pzeF9mbGFnX2luX3lvdXJfY29uZmlndXJhdGlvbl9maWxlKV19fSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKFEpe3JldHVybiBDLmNvZGVGaXhBbGwoUSxCLGZ1bmN0aW9uKGxlKXt2YXIgTj1RLnByb2dyYW0uZ2V0Q29tcGlsZXJPcHRpb25zKCkuY29uZmlnRmlsZTtOIT09dm9pZCAwJiZFKGxlLE4pfSl9fSk7ZnVuY3Rpb24gRShRLGxlKXtDLnNldEpzb25Db21waWxlck9wdGlvblZhbHVlKFEsbGUsXCJqc3hcIixlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChcInJlYWN0XCIpKX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOltlLkRpYWdub3N0aWNzLlRvcF9sZXZlbF9hd2FpdF9leHByZXNzaW9uc19hcmVfb25seV9hbGxvd2VkX3doZW5fdGhlX21vZHVsZV9vcHRpb25faXNfc2V0X3RvX2VzMjAyMl9lc25leHRfc3lzdGVtX25vZGUxNl9vcl9ub2RlbmV4dF9hbmRfdGhlX3RhcmdldF9vcHRpb25faXNfc2V0X3RvX2VzMjAxN19vcl9oaWdoZXIuY29kZSxlLkRpYWdub3N0aWNzLlRvcF9sZXZlbF9mb3JfYXdhaXRfbG9vcHNfYXJlX29ubHlfYWxsb3dlZF93aGVuX3RoZV9tb2R1bGVfb3B0aW9uX2lzX3NldF90b19lczIwMjJfZXNuZXh0X3N5c3RlbV9ub2RlMTZfb3Jfbm9kZW5leHRfYW5kX3RoZV90YXJnZXRfb3B0aW9uX2lzX3NldF90b19lczIwMTdfb3JfaGlnaGVyLmNvZGVdLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKEIpe3ZhciBFPUIucHJvZ3JhbS5nZXRDb21waWxlck9wdGlvbnMoKSxRPUUuY29uZmlnRmlsZTtpZihRIT09dm9pZCAwKXt2YXIgbGU9W10sTj1lLmdldEVtaXRNb2R1bGVLaW5kKEUpLHA9Tj49ZS5Nb2R1bGVLaW5kLkVTMjAxNSYmTjxlLk1vZHVsZUtpbmQuRVNOZXh0O2lmKHApe3ZhciBtPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKEIsZnVuY3Rpb24oZil7Qy5zZXRKc29uQ29tcGlsZXJPcHRpb25WYWx1ZShmLFEsXCJtb2R1bGVcIixlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChcImVzbmV4dFwiKSl9KTtsZS5wdXNoKEMuY3JlYXRlQ29kZUZpeEFjdGlvbldpdGhvdXRGaXhBbGwoXCJmaXhNb2R1bGVPcHRpb25cIixtLFtlLkRpYWdub3N0aWNzLlNldF90aGVfbW9kdWxlX29wdGlvbl9pbl95b3VyX2NvbmZpZ3VyYXRpb25fZmlsZV90b18wLFwiZXNuZXh0XCJdKSl9dmFyIEc9ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KEUpLG9lPUc8NHx8Rz45OTtpZihvZSl7dmFyIG09ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoQixmdW5jdGlvbihUKXt2YXIgSz1lLmdldFRzQ29uZmlnT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oUSk7aWYoISFLKXt2YXIgYj1bW1widGFyZ2V0XCIsZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoXCJlczIwMTdcIildXTtOPT09ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTJiZiLnB1c2goW1wibW9kdWxlXCIsZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoXCJjb21tb25qc1wiKV0pLEMuc2V0SnNvbkNvbXBpbGVyT3B0aW9uVmFsdWVzKFQsUSxiKX19KTtsZS5wdXNoKEMuY3JlYXRlQ29kZUZpeEFjdGlvbldpdGhvdXRGaXhBbGwoXCJmaXhUYXJnZXRPcHRpb25cIixtLFtlLkRpYWdub3N0aWNzLlNldF90aGVfdGFyZ2V0X29wdGlvbl9pbl95b3VyX2NvbmZpZ3VyYXRpb25fZmlsZV90b18wLFwiZXMyMDE3XCJdKSl9cmV0dXJuIGxlLmxlbmd0aD9sZTp2b2lkIDB9fX0pfSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeFByb3BlcnR5QXNzaWdubWVudFwiLEI9W2UuRGlhZ25vc3RpY3MuRGlkX3lvdV9tZWFuX3RvX3VzZV9hX0NvbG9uX0FuX2Nhbl9vbmx5X2ZvbGxvd19hX3Byb3BlcnR5X25hbWVfd2hlbl90aGVfY29udGFpbmluZ19vYmplY3RfbGl0ZXJhbF9pc19wYXJ0X29mX2FfZGVzdHJ1Y3R1cmluZ19wYXR0ZXJuLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZml4SWRzOlt3XSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49bGUuc291cmNlRmlsZSxwPWxlLnNwYW4sbT1RKE4scC5zdGFydCksRz1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChsZSxmdW5jdGlvbihvZSl7cmV0dXJuIEUob2UsbGUuc291cmNlRmlsZSxtKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxHLFtlLkRpYWdub3N0aWNzLkNoYW5nZV8wX3RvXzEsXCI9XCIsXCI6XCJdLHcsW2UuRGlhZ25vc3RpY3MuU3dpdGNoX2VhY2hfbWlzdXNlZF8wX3RvXzEsXCI9XCIsXCI6XCJdKV19LGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKGxlKXtyZXR1cm4gQy5jb2RlRml4QWxsKGxlLEIsZnVuY3Rpb24oTixwKXtyZXR1cm4gRShOLHAuZmlsZSxRKHAuZmlsZSxwLnN0YXJ0KSl9KX19KTtmdW5jdGlvbiBFKGxlLE4scCl7bGUucmVwbGFjZU5vZGUoTixwLGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQocC5uYW1lLHAub2JqZWN0QXNzaWdubWVudEluaXRpYWxpemVyKSl9ZnVuY3Rpb24gUShsZSxOKXtyZXR1cm4gZS5jYXN0KGUuZ2V0VG9rZW5BdFBvc2l0aW9uKGxlLE4pLnBhcmVudCxlLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiZXh0ZW5kc0ludGVyZmFjZUJlY29tZXNJbXBsZW1lbnRzXCIsQj1bZS5EaWFnbm9zdGljcy5DYW5ub3RfZXh0ZW5kX2FuX2ludGVyZmFjZV8wX0RpZF95b3VfbWVhbl9pbXBsZW1lbnRzLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3ZhciBOPWxlLnNvdXJjZUZpbGUscD1FKE4sbGUuc3Bhbi5zdGFydCk7aWYoISFwKXt2YXIgbT1wLmV4dGVuZHNUb2tlbixHPXAuaGVyaXRhZ2VDbGF1c2VzLG9lPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKGYpe3JldHVybiBRKGYsTixtLEcpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LG9lLGUuRGlhZ25vc3RpY3MuQ2hhbmdlX2V4dGVuZHNfdG9faW1wbGVtZW50cyx3LGUuRGlhZ25vc3RpY3MuQ2hhbmdlX2FsbF9leHRlbmRlZF9pbnRlcmZhY2VzX3RvX2ltcGxlbWVudHMpXX19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3JldHVybiBDLmNvZGVGaXhBbGwobGUsQixmdW5jdGlvbihOLHApe3ZhciBtPUUocC5maWxlLHAuc3RhcnQpO20mJlEoTixwLmZpbGUsbS5leHRlbmRzVG9rZW4sbS5oZXJpdGFnZUNsYXVzZXMpfSl9fSk7ZnVuY3Rpb24gRShsZSxOKXt2YXIgcD1lLmdldFRva2VuQXRQb3NpdGlvbihsZSxOKSxtPWUuZ2V0Q29udGFpbmluZ0NsYXNzKHApLmhlcml0YWdlQ2xhdXNlcyxHPW1bMF0uZ2V0Rmlyc3RUb2tlbigpO3JldHVybiBHLmtpbmQ9PT05ND97ZXh0ZW5kc1Rva2VuOkcsaGVyaXRhZ2VDbGF1c2VzOm19OnZvaWQgMH1mdW5jdGlvbiBRKGxlLE4scCxtKXtpZihsZS5yZXBsYWNlTm9kZShOLHAsZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDExNykpLG0ubGVuZ3RoPT09MiYmbVswXS50b2tlbj09PTk0JiZtWzFdLnRva2VuPT09MTE3KXt2YXIgRz1tWzFdLmdldEZpcnN0VG9rZW4oKSxvZT1HLmdldEZ1bGxTdGFydCgpO2xlLnJlcGxhY2VSYW5nZShOLHtwb3M6b2UsZW5kOm9lfSxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjcpKTtmb3IodmFyIGY9Ti50ZXh0LFQ9Ry5lbmQ7VDxmLmxlbmd0aCYmZS5pc1doaXRlU3BhY2VTaW5nbGVMaW5lKGYuY2hhckNvZGVBdChUKSk7KVQrKztsZS5kZWxldGVSYW5nZShOLHtwb3M6Ry5nZXRTdGFydCgpLGVuZDpUfSl9fX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmb3Jnb3R0ZW5UaGlzUHJvcGVydHlBY2Nlc3NcIixCPWUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90aGVfc3RhdGljX21lbWJlcl8xXzAuY29kZSxFPVtlLkRpYWdub3N0aWNzLkNhbm5vdF9maW5kX25hbWVfMF9EaWRfeW91X21lYW5fdGhlX2luc3RhbmNlX21lbWJlcl90aGlzXzAuY29kZSxlLkRpYWdub3N0aWNzLlByaXZhdGVfaWRlbnRpZmllcnNfYXJlX29ubHlfYWxsb3dlZF9pbl9jbGFzc19ib2RpZXNfYW5kX21heV9vbmx5X2JlX3VzZWRfYXNfcGFydF9vZl9hX2NsYXNzX21lbWJlcl9kZWNsYXJhdGlvbl9wcm9wZXJ0eV9hY2Nlc3Nfb3Jfb25fdGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2luX2V4cHJlc3Npb24uY29kZSxCXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpFLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKE4pe3ZhciBwPU4uc291cmNlRmlsZSxtPVEocCxOLnNwYW4uc3RhcnQsTi5lcnJvckNvZGUpO2lmKCEhbSl7dmFyIEc9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoTixmdW5jdGlvbihvZSl7cmV0dXJuIGxlKG9lLHAsbSl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsRyxbZS5EaWFnbm9zdGljcy5BZGRfMF90b191bnJlc29sdmVkX3ZhcmlhYmxlLG0uY2xhc3NOYW1lfHxcInRoaXNcIl0sdyxlLkRpYWdub3N0aWNzLkFkZF9xdWFsaWZpZXJfdG9fYWxsX3VucmVzb2x2ZWRfdmFyaWFibGVzX21hdGNoaW5nX2FfbWVtYmVyX25hbWUpXX19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7cmV0dXJuIEMuY29kZUZpeEFsbChOLEUsZnVuY3Rpb24ocCxtKXt2YXIgRz1RKG0uZmlsZSxtLnN0YXJ0LG0uY29kZSk7RyYmbGUocCxOLnNvdXJjZUZpbGUsRyl9KX19KTtmdW5jdGlvbiBRKE4scCxtKXt2YXIgRz1lLmdldFRva2VuQXRQb3NpdGlvbihOLHApO2lmKGUuaXNJZGVudGlmaWVyKEcpfHxlLmlzUHJpdmF0ZUlkZW50aWZpZXIoRykpcmV0dXJue25vZGU6RyxjbGFzc05hbWU6bT09PUI/ZS5nZXRDb250YWluaW5nQ2xhc3MoRykubmFtZS50ZXh0OnZvaWQgMH19ZnVuY3Rpb24gbGUoTixwLG0pe3ZhciBHPW0ubm9kZSxvZT1tLmNsYXNzTmFtZTtlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKEcpLE4ucmVwbGFjZU5vZGUocCxHLGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ob2U/ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIob2UpOmUuZmFjdG9yeS5jcmVhdGVUaGlzKCksRykpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhJbnZhbGlkSnN4Q2hhcmFjdGVyc19leHByZXNzaW9uXCIsQj1cImZpeEludmFsaWRKc3hDaGFyYWN0ZXJzX2h0bWxFbnRpdHlcIixFPVtlLkRpYWdub3N0aWNzLlVuZXhwZWN0ZWRfdG9rZW5fRGlkX3lvdV9tZWFuX29yX2d0LmNvZGUsZS5EaWFnbm9zdGljcy5VbmV4cGVjdGVkX3Rva2VuX0RpZF95b3VfbWVhbl9vcl9yYnJhY2UuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6RSxmaXhJZHM6W3csQl0sZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG09cC5zb3VyY2VGaWxlLEc9cC5wcmVmZXJlbmNlcyxvZT1wLnNwYW4sZj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKEspe3JldHVybiBOKEssRyxtLG9lLnN0YXJ0LCExKX0pLFQ9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgocCxmdW5jdGlvbihLKXtyZXR1cm4gTihLLEcsbSxvZS5zdGFydCwhMCl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsZixlLkRpYWdub3N0aWNzLldyYXBfaW52YWxpZF9jaGFyYWN0ZXJfaW5fYW5fZXhwcmVzc2lvbl9jb250YWluZXIsdyxlLkRpYWdub3N0aWNzLldyYXBfYWxsX2ludmFsaWRfY2hhcmFjdGVyc19pbl9hbl9leHByZXNzaW9uX2NvbnRhaW5lciksQy5jcmVhdGVDb2RlRml4QWN0aW9uKEIsVCxlLkRpYWdub3N0aWNzLkNvbnZlcnRfaW52YWxpZF9jaGFyYWN0ZXJfdG9faXRzX2h0bWxfZW50aXR5X2NvZGUsQixlLkRpYWdub3N0aWNzLkNvbnZlcnRfYWxsX2ludmFsaWRfY2hhcmFjdGVyc190b19IVE1MX2VudGl0eV9jb2RlKV19LGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKHApe3JldHVybiBDLmNvZGVGaXhBbGwocCxFLGZ1bmN0aW9uKG0sRyl7cmV0dXJuIE4obSxwLnByZWZlcmVuY2VzLEcuZmlsZSxHLnN0YXJ0LHAuZml4SWQ9PT1CKX0pfX0pO3ZhciBRPXtcIj5cIjpcIiZndDtcIixcIn1cIjpcIiZyYnJhY2U7XCJ9O2Z1bmN0aW9uIGxlKHApe3JldHVybiBlLmhhc1Byb3BlcnR5KFEscCl9ZnVuY3Rpb24gTihwLG0sRyxvZSxmKXt2YXIgVD1HLmdldFRleHQoKVtvZV07aWYoISFsZShUKSl7dmFyIEs9Zj9RW1RdOlwie1wiLmNvbmNhdChlLnF1b3RlKEcsbSxUKSxcIn1cIik7cC5yZXBsYWNlUmFuZ2VXaXRoVGV4dChHLHtwb3M6b2UsZW5kOm9lKzF9LEspfX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiZGVsZXRlVW5tYXRjaGVkUGFyYW1ldGVyXCIsQj1cInJlbmFtZVVubWF0Y2hlZFBhcmFtZXRlclwiLEU9W2UuRGlhZ25vc3RpY3MuSlNEb2NfcGFyYW1fdGFnX2hhc19uYW1lXzBfYnV0X3RoZXJlX2lzX25vX3BhcmFtZXRlcl93aXRoX3RoYXRfbmFtZS5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7Zml4SWRzOlt3LEJdLGVycm9yQ29kZXM6RSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihtKXt2YXIgRz1tLnNvdXJjZUZpbGUsb2U9bS5zcGFuLGY9W10sVD1OKEcsb2Uuc3RhcnQpO2lmKFQpcmV0dXJuIGUuYXBwZW5kKGYsUShtLFQpKSxlLmFwcGVuZChmLGxlKG0sVCkpLGZ9LGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKG0pe3ZhciBHPW5ldyBlLk1hcDtyZXR1cm4gQy5jcmVhdGVDb21iaW5lZENvZGVBY3Rpb25zKGUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKG0sZnVuY3Rpb24ob2Upe0MuZWFjaERpYWdub3N0aWMobSxFLGZ1bmN0aW9uKGYpe3ZhciBUPWYuZmlsZSxLPWYuc3RhcnQsYj1OKFQsSyk7YiYmRy5zZXQoYi5zaWduYXR1cmUsZS5hcHBlbmQoRy5nZXQoYi5zaWduYXR1cmUpLGIuanNEb2NQYXJhbWV0ZXJUYWcpKX0pLEcuZm9yRWFjaChmdW5jdGlvbihmLFQpe2lmKG0uZml4SWQ9PT13KXt2YXIgSz1uZXcgZS5TZXQoZik7b2UuZmlsdGVySlNEb2NUYWdzKFQuZ2V0U291cmNlRmlsZSgpLFQsZnVuY3Rpb24oYil7cmV0dXJuIUsuaGFzKGIpfSl9fSl9KSl9fSk7ZnVuY3Rpb24gUShwLG0pe3ZhciBHPW0ubmFtZSxvZT1tLnNpZ25hdHVyZSxmPW0uanNEb2NQYXJhbWV0ZXJUYWcsVD1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKEspe3JldHVybiBLLmZpbHRlckpTRG9jVGFncyhwLnNvdXJjZUZpbGUsb2UsZnVuY3Rpb24oYil7cmV0dXJuIGIhPT1mfSl9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsVCxbZS5EaWFnbm9zdGljcy5EZWxldGVfdW51c2VkX3BhcmFtX3RhZ18wLEcuZ2V0VGV4dChwLnNvdXJjZUZpbGUpXSx3LGUuRGlhZ25vc3RpY3MuRGVsZXRlX2FsbF91bnVzZWRfcGFyYW1fdGFncyl9ZnVuY3Rpb24gbGUocCxtKXt2YXIgRz1tLm5hbWUsb2U9bS5zaWduYXR1cmUsZj1tLmpzRG9jUGFyYW1ldGVyVGFnO2lmKCEhZS5sZW5ndGgob2UucGFyYW1ldGVycykpe2Zvcih2YXIgVD1wLnNvdXJjZUZpbGUsSz1lLmdldEpTRG9jVGFncyhvZSksYj1uZXcgZS5TZXQsc2U9MCxKPUs7c2U8Si5sZW5ndGg7c2UrKyl7dmFyIGllPUpbc2VdO2UuaXNKU0RvY1BhcmFtZXRlclRhZyhpZSkmJmUuaXNJZGVudGlmaWVyKGllLm5hbWUpJiZiLmFkZChpZS5uYW1lLmVzY2FwZWRUZXh0KX12YXIgUj1lLmZpcnN0RGVmaW5lZChvZS5wYXJhbWV0ZXJzLGZ1bmN0aW9uKHZlKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIodmUubmFtZSkmJiFiLmhhcyh2ZS5uYW1lLmVzY2FwZWRUZXh0KT92ZS5uYW1lLmdldFRleHQoVCk6dm9pZCAwfSk7aWYoUiE9PXZvaWQgMCl7dmFyIHE9ZS5mYWN0b3J5LnVwZGF0ZUpTRG9jUGFyYW1ldGVyVGFnKGYsZi50YWdOYW1lLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFIpLGYuaXNCcmFja2V0ZWQsZi50eXBlRXhwcmVzc2lvbixmLmlzTmFtZUZpcnN0LGYuY29tbWVudCksTz1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKHZlKXtyZXR1cm4gdmUucmVwbGFjZUpTRG9jQ29tbWVudChULG9lLGUubWFwKEssZnVuY3Rpb24oZWUpe3JldHVybiBlZT09PWY/cTplZX0pKX0pO3JldHVybiBDLmNyZWF0ZUNvZGVGaXhBY3Rpb25XaXRob3V0Rml4QWxsKEIsTyxbZS5EaWFnbm9zdGljcy5SZW5hbWVfcGFyYW1fdGFnX25hbWVfMF90b18xLEcuZ2V0VGV4dChUKSxSXSl9fX1mdW5jdGlvbiBOKHAsbSl7dmFyIEc9ZS5nZXRUb2tlbkF0UG9zaXRpb24ocCxtKTtpZihHLnBhcmVudCYmZS5pc0pTRG9jUGFyYW1ldGVyVGFnKEcucGFyZW50KSYmZS5pc0lkZW50aWZpZXIoRy5wYXJlbnQubmFtZSkpe3ZhciBvZT1HLnBhcmVudCxmPWUuZ2V0SG9zdFNpZ25hdHVyZUZyb21KU0RvYyhvZSk7aWYoZilyZXR1cm57c2lnbmF0dXJlOmYsbmFtZTpHLnBhcmVudC5uYW1lLGpzRG9jUGFyYW1ldGVyVGFnOm9lfX19fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeFVucmVmZXJlbmNlYWJsZURlY29yYXRvck1ldGFkYXRhXCIsQj1bZS5EaWFnbm9zdGljcy5BX3R5cGVfcmVmZXJlbmNlZF9pbl9hX2RlY29yYXRlZF9zaWduYXR1cmVfbXVzdF9iZV9pbXBvcnRlZF93aXRoX2ltcG9ydF90eXBlX29yX2FfbmFtZXNwYWNlX2ltcG9ydF93aGVuX2lzb2xhdGVkTW9kdWxlc19hbmRfZW1pdERlY29yYXRvck1ldGFkYXRhX2FyZV9lbmFibGVkLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7dmFyIHA9RShOLnNvdXJjZUZpbGUsTi5wcm9ncmFtLE4uc3Bhbi5zdGFydCk7aWYoISFwKXt2YXIgbT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChOLGZ1bmN0aW9uKGYpe3JldHVybiBwLmtpbmQ9PT0yNzAmJmxlKGYsTi5zb3VyY2VGaWxlLHAsTi5wcm9ncmFtKX0pLEc9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoTixmdW5jdGlvbihmKXtyZXR1cm4gUShmLE4uc291cmNlRmlsZSxwLE4ucHJvZ3JhbSl9KSxvZTtyZXR1cm4gbS5sZW5ndGgmJihvZT1lLmFwcGVuZChvZSxDLmNyZWF0ZUNvZGVGaXhBY3Rpb25XaXRob3V0Rml4QWxsKHcsbSxlLkRpYWdub3N0aWNzLkNvbnZlcnRfbmFtZWRfaW1wb3J0c190b19uYW1lc3BhY2VfaW1wb3J0KSkpLEcubGVuZ3RoJiYob2U9ZS5hcHBlbmQob2UsQy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbCh3LEcsZS5EaWFnbm9zdGljcy5Db252ZXJ0X3RvX3R5cGVfb25seV9pbXBvcnQpKSksb2V9fSxmaXhJZHM6W3ddfSk7ZnVuY3Rpb24gRShOLHAsbSl7dmFyIEc9ZS50cnlDYXN0KGUuZ2V0VG9rZW5BdFBvc2l0aW9uKE4sbSksZS5pc0lkZW50aWZpZXIpO2lmKCEoIUd8fEcucGFyZW50LmtpbmQhPT0xNzgpKXt2YXIgb2U9cC5nZXRUeXBlQ2hlY2tlcigpLGY9b2UuZ2V0U3ltYm9sQXRMb2NhdGlvbihHKTtyZXR1cm4gZS5maW5kKChmPT1udWxsP3ZvaWQgMDpmLmRlY2xhcmF0aW9ucyl8fGUuZW1wdHlBcnJheSxlLm9yKGUuaXNJbXBvcnRDbGF1c2UsZS5pc0ltcG9ydFNwZWNpZmllcixlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24pKX19ZnVuY3Rpb24gUShOLHAsbSxHKXtpZihtLmtpbmQ9PT0yNjUpe04uaW5zZXJ0TW9kaWZpZXJCZWZvcmUocCwxNTIsbS5uYW1lKTtyZXR1cm59dmFyIG9lPW0ua2luZD09PTI2Nz9tOm0ucGFyZW50LnBhcmVudDtpZighKG9lLm5hbWUmJm9lLm5hbWVkQmluZGluZ3MpKXt2YXIgZj1HLmdldFR5cGVDaGVja2VyKCksVD0hIWUuZm9yRWFjaEltcG9ydENsYXVzZURlY2xhcmF0aW9uKG9lLGZ1bmN0aW9uKEspe2lmKGUuc2tpcEFsaWFzKEsuc3ltYm9sLGYpLmZsYWdzJjExMTU1MSlyZXR1cm4hMH0pO1R8fE4uaW5zZXJ0TW9kaWZpZXJCZWZvcmUocCwxNTIsb2UpfX1mdW5jdGlvbiBsZShOLHAsbSxHKXtlLnJlZmFjdG9yLmRvQ2hhbmdlTmFtZWRUb05hbWVzcGFjZU9yRGVmYXVsdChwLEcsTixtLnBhcmVudCl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cInVudXNlZElkZW50aWZpZXJcIixCPVwidW51c2VkSWRlbnRpZmllcl9wcmVmaXhcIixFPVwidW51c2VkSWRlbnRpZmllcl9kZWxldGVcIixRPVwidW51c2VkSWRlbnRpZmllcl9kZWxldGVJbXBvcnRzXCIsbGU9XCJ1bnVzZWRJZGVudGlmaWVyX2luZmVyXCIsTj1bZS5EaWFnbm9zdGljcy5fMF9pc19kZWNsYXJlZF9idXRfaXRzX3ZhbHVlX2lzX25ldmVyX3JlYWQuY29kZSxlLkRpYWdub3N0aWNzLl8wX2lzX2RlY2xhcmVkX2J1dF9uZXZlcl91c2VkLmNvZGUsZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZC5jb2RlLGUuRGlhZ25vc3RpY3MuQWxsX2ltcG9ydHNfaW5faW1wb3J0X2RlY2xhcmF0aW9uX2FyZV91bnVzZWQuY29kZSxlLkRpYWdub3N0aWNzLkFsbF9kZXN0cnVjdHVyZWRfZWxlbWVudHNfYXJlX3VudXNlZC5jb2RlLGUuRGlhZ25vc3RpY3MuQWxsX3ZhcmlhYmxlc19hcmVfdW51c2VkLmNvZGUsZS5EaWFnbm9zdGljcy5BbGxfdHlwZV9wYXJhbWV0ZXJzX2FyZV91bnVzZWQuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6TixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbih4KXt2YXIgWD14LmVycm9yQ29kZSwkPXguc291cmNlRmlsZSxBPXgucHJvZ3JhbSx5PXguY2FuY2VsbGF0aW9uVG9rZW4sVj1BLmdldFR5cGVDaGVja2VyKCksTD1BLmdldFNvdXJjZUZpbGVzKCksUD1lLmdldFRva2VuQXRQb3NpdGlvbigkLHguc3Bhbi5zdGFydCk7aWYoZS5pc0pTRG9jVGVtcGxhdGVUYWcoUCkpcmV0dXJuW20oZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoeCxmdW5jdGlvbihEKXtyZXR1cm4gRC5kZWxldGUoJCxQKX0pLGUuRGlhZ25vc3RpY3MuUmVtb3ZlX3RlbXBsYXRlX3RhZyldO2lmKFAua2luZD09PTI5KXt2YXIgaz1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh4LGZ1bmN0aW9uKEQpe3JldHVybiBHKEQsJCxQKX0pO3JldHVyblttKGssZS5EaWFnbm9zdGljcy5SZW1vdmVfdHlwZV9wYXJhbWV0ZXJzKV19dmFyIFk9ZihQKTtpZihZKXt2YXIgaz1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh4LGZ1bmN0aW9uKGZlKXtyZXR1cm4gZmUuZGVsZXRlKCQsWSl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsayxbZS5EaWFnbm9zdGljcy5SZW1vdmVfaW1wb3J0X2Zyb21fMCxlLnNob3dNb2R1bGVTcGVjaWZpZXIoWSldLFEsZS5EaWFnbm9zdGljcy5EZWxldGVfYWxsX3VudXNlZF9pbXBvcnRzKV19ZWxzZSBpZihvZShQKSl7dmFyIFU9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoeCxmdW5jdGlvbihEKXtyZXR1cm4gaWUoJCxQLEQsVixMLEEseSwhMSl9KTtpZihVLmxlbmd0aClyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsVSxbZS5EaWFnbm9zdGljcy5SZW1vdmVfdW51c2VkX2RlY2xhcmF0aW9uX2Zvcl9Db2xvbl8wLFAuZ2V0VGV4dCgkKV0sUSxlLkRpYWdub3N0aWNzLkRlbGV0ZV9hbGxfdW51c2VkX2ltcG9ydHMpXX1pZihlLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4oUC5wYXJlbnQpfHxlLmlzQXJyYXlCaW5kaW5nUGF0dGVybihQLnBhcmVudCkpe2lmKGUuaXNQYXJhbWV0ZXIoUC5wYXJlbnQucGFyZW50KSl7dmFyIGo9UC5wYXJlbnQuZWxlbWVudHMsSD1bai5sZW5ndGg+MT9lLkRpYWdub3N0aWNzLlJlbW92ZV91bnVzZWRfZGVjbGFyYXRpb25zX2Zvcl9Db2xvbl8wOmUuRGlhZ25vc3RpY3MuUmVtb3ZlX3VudXNlZF9kZWNsYXJhdGlvbl9mb3JfQ29sb25fMCxlLm1hcChqLGZ1bmN0aW9uKEQpe3JldHVybiBELmdldFRleHQoJCl9KS5qb2luKFwiLCBcIildO3JldHVyblttKGUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHgsZnVuY3Rpb24oRCl7cmV0dXJuIGIoRCwkLFAucGFyZW50KX0pLEgpXX1yZXR1cm5bbShlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh4LGZ1bmN0aW9uKEQpe3JldHVybiBELmRlbGV0ZSgkLFAucGFyZW50LnBhcmVudCl9KSxlLkRpYWdub3N0aWNzLlJlbW92ZV91bnVzZWRfZGVzdHJ1Y3R1cmluZ19kZWNsYXJhdGlvbildfWlmKFQoJCxQKSlyZXR1cm5bbShlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh4LGZ1bmN0aW9uKEQpe3JldHVybiBLKEQsJCxQLnBhcmVudCl9KSxlLkRpYWdub3N0aWNzLlJlbW92ZV92YXJpYWJsZV9zdGF0ZW1lbnQpXTt2YXIgST1bXTtpZihQLmtpbmQ9PT0xMzcpe3ZhciBrPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHgsZnVuY3Rpb24oZmUpe3JldHVybiBwKGZlLCQsUCl9KSxsPWUuY2FzdChQLnBhcmVudCxlLmlzSW5mZXJUeXBlTm9kZSkudHlwZVBhcmFtZXRlci5uYW1lLnRleHQ7SS5wdXNoKEMuY3JlYXRlQ29kZUZpeEFjdGlvbih3LGssW2UuRGlhZ25vc3RpY3MuUmVwbGFjZV9pbmZlcl8wX3dpdGhfdW5rbm93bixsXSxsZSxlLkRpYWdub3N0aWNzLlJlcGxhY2VfYWxsX3VudXNlZF9pbmZlcl93aXRoX3Vua25vd24pKX1lbHNle3ZhciBVPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHgsZnVuY3Rpb24oZmUpe3JldHVybiBpZSgkLFAsZmUsVixMLEEseSwhMSl9KTtpZihVLmxlbmd0aCl7dmFyIGw9ZS5pc0NvbXB1dGVkUHJvcGVydHlOYW1lKFAucGFyZW50KT9QLnBhcmVudDpQO0kucHVzaChtKFUsW2UuRGlhZ25vc3RpY3MuUmVtb3ZlX3VudXNlZF9kZWNsYXJhdGlvbl9mb3JfQ29sb25fMCxsLmdldFRleHQoJCldKSl9fXZhciBkPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHgsZnVuY3Rpb24oRCl7cmV0dXJuIHNlKEQsWCwkLFApfSk7cmV0dXJuIGQubGVuZ3RoJiZJLnB1c2goQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsZCxbZS5EaWFnbm9zdGljcy5QcmVmaXhfMF93aXRoX2FuX3VuZGVyc2NvcmUsUC5nZXRUZXh0KCQpXSxCLGUuRGlhZ25vc3RpY3MuUHJlZml4X2FsbF91bnVzZWRfZGVjbGFyYXRpb25zX3dpdGhfd2hlcmVfcG9zc2libGUpKSxJfSxmaXhJZHM6W0IsRSxRLGxlXSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbih4KXt2YXIgWD14LnNvdXJjZUZpbGUsJD14LnByb2dyYW0sQT14LmNhbmNlbGxhdGlvblRva2VuLHk9JC5nZXRUeXBlQ2hlY2tlcigpLFY9JC5nZXRTb3VyY2VGaWxlcygpO3JldHVybiBDLmNvZGVGaXhBbGwoeCxOLGZ1bmN0aW9uKEwsUCl7dmFyIGs9ZS5nZXRUb2tlbkF0UG9zaXRpb24oWCxQLnN0YXJ0KTtzd2l0Y2goeC5maXhJZCl7Y2FzZSBCOnNlKEwsUC5jb2RlLFgsayk7YnJlYWs7Y2FzZSBROnt2YXIgWT1mKGspO1k/TC5kZWxldGUoWCxZKTpvZShrKSYmaWUoWCxrLEwseSxWLCQsQSwhMCk7YnJlYWt9Y2FzZSBFOntpZihrLmtpbmQ9PT0xMzd8fG9lKGspKWJyZWFrO2lmKGUuaXNKU0RvY1RlbXBsYXRlVGFnKGspKUwuZGVsZXRlKFgsayk7ZWxzZSBpZihrLmtpbmQ9PT0yOSlHKEwsWCxrKTtlbHNlIGlmKGUuaXNPYmplY3RCaW5kaW5nUGF0dGVybihrLnBhcmVudCkpe2lmKGsucGFyZW50LnBhcmVudC5pbml0aWFsaXplcilicmVhazsoIWUuaXNQYXJhbWV0ZXIoay5wYXJlbnQucGFyZW50KXx8TyhrLnBhcmVudC5wYXJlbnQseSxWKSkmJkwuZGVsZXRlKFgsay5wYXJlbnQucGFyZW50KX1lbHNle2lmKGUuaXNBcnJheUJpbmRpbmdQYXR0ZXJuKGsucGFyZW50LnBhcmVudCkmJmsucGFyZW50LnBhcmVudC5wYXJlbnQuaW5pdGlhbGl6ZXIpYnJlYWs7VChYLGspP0soTCxYLGsucGFyZW50KTppZShYLGssTCx5LFYsJCxBLCEwKX1icmVha31jYXNlIGxlOmsua2luZD09PTEzNyYmcChMLFgsayk7YnJlYWs7ZGVmYXVsdDplLkRlYnVnLmZhaWwoSlNPTi5zdHJpbmdpZnkoeC5maXhJZCkpfX0pfX0pO2Z1bmN0aW9uIHAoeCxYLCQpe3gucmVwbGFjZU5vZGUoWCwkLnBhcmVudCxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1NSkpfWZ1bmN0aW9uIG0oeCxYKXtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcseCxYLEUsZS5EaWFnbm9zdGljcy5EZWxldGVfYWxsX3VudXNlZF9kZWNsYXJhdGlvbnMpfWZ1bmN0aW9uIEcoeCxYLCQpe3guZGVsZXRlKFgsZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5jYXN0KCQucGFyZW50LGUuaXNEZWNsYXJhdGlvbldpdGhUeXBlUGFyYW1ldGVyQ2hpbGRyZW4pLnR5cGVQYXJhbWV0ZXJzLFwiVGhlIHR5cGUgcGFyYW1ldGVyIHRvIGRlbGV0ZSBzaG91bGQgZXhpc3RcIikpfWZ1bmN0aW9uIG9lKHgpe3JldHVybiB4LmtpbmQ9PT0xMDB8fHgua2luZD09PTc5JiYoeC5wYXJlbnQua2luZD09PTI3MHx8eC5wYXJlbnQua2luZD09PTI2Nyl9ZnVuY3Rpb24gZih4KXtyZXR1cm4geC5raW5kPT09MTAwP2UudHJ5Q2FzdCh4LnBhcmVudCxlLmlzSW1wb3J0RGVjbGFyYXRpb24pOnZvaWQgMH1mdW5jdGlvbiBUKHgsWCl7cmV0dXJuIGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChYLnBhcmVudCkmJmUuZmlyc3QoWC5wYXJlbnQuZ2V0Q2hpbGRyZW4oeCkpPT09WH1mdW5jdGlvbiBLKHgsWCwkKXt4LmRlbGV0ZShYLCQucGFyZW50LmtpbmQ9PT0yMzc/JC5wYXJlbnQ6JCl9ZnVuY3Rpb24gYih4LFgsJCl7ZS5mb3JFYWNoKCQuZWxlbWVudHMsZnVuY3Rpb24oQSl7cmV0dXJuIHguZGVsZXRlKFgsQSl9KX1mdW5jdGlvbiBzZSh4LFgsJCxBKXtYIT09ZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2lzX2RlY2xhcmVkX2J1dF9pdHNfdmFsdWVfaXNfbmV2ZXJfcmVhZC5jb2RlJiYoQS5raW5kPT09MTM3JiYoQT1lLmNhc3QoQS5wYXJlbnQsZS5pc0luZmVyVHlwZU5vZGUpLnR5cGVQYXJhbWV0ZXIubmFtZSksZS5pc0lkZW50aWZpZXIoQSkmJkooQSkmJih4LnJlcGxhY2VOb2RlKCQsQSxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcIl9cIi5jb25jYXQoQS50ZXh0KSkpLGUuaXNQYXJhbWV0ZXIoQS5wYXJlbnQpJiZlLmdldEpTRG9jUGFyYW1ldGVyVGFncyhBLnBhcmVudCkuZm9yRWFjaChmdW5jdGlvbih5KXtlLmlzSWRlbnRpZmllcih5Lm5hbWUpJiZ4LnJlcGxhY2VOb2RlKCQseS5uYW1lLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwiX1wiLmNvbmNhdCh5Lm5hbWUudGV4dCkpKX0pKSl9ZnVuY3Rpb24gSih4KXtzd2l0Y2goeC5wYXJlbnQua2luZCl7Y2FzZSAxNjQ6Y2FzZSAxNjM6cmV0dXJuITA7Y2FzZSAyNTQ6e3ZhciBYPXgucGFyZW50O3N3aXRjaChYLnBhcmVudC5wYXJlbnQua2luZCl7Y2FzZSAyNDQ6Y2FzZSAyNDM6cmV0dXJuITB9fX1yZXR1cm4hMX1mdW5jdGlvbiBpZSh4LFgsJCxBLHksVixMLFApe1IoWCwkLHgsQSx5LFYsTCxQKSxlLmlzSWRlbnRpZmllcihYKSYmZS5GaW5kQWxsUmVmZXJlbmNlcy5Db3JlLmVhY2hTeW1ib2xSZWZlcmVuY2VJbkZpbGUoWCxBLHgsZnVuY3Rpb24oayl7ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihrLnBhcmVudCkmJmsucGFyZW50Lm5hbWU9PT1rJiYoaz1rLnBhcmVudCksIVAmJkYoaykmJiQuZGVsZXRlKHgsay5wYXJlbnQucGFyZW50KX0pfWZ1bmN0aW9uIFIoeCxYLCQsQSx5LFYsTCxQKXt2YXIgaz14LnBhcmVudDtpZihlLmlzUGFyYW1ldGVyKGspKXEoWCwkLGssQSx5LFYsTCxQKTtlbHNlIGlmKCEoUCYmZS5pc0lkZW50aWZpZXIoeCkmJmUuRmluZEFsbFJlZmVyZW5jZXMuQ29yZS5pc1N5bWJvbFJlZmVyZW5jZWRJbkZpbGUoeCxBLCQpKSl7dmFyIFk9ZS5pc0ltcG9ydENsYXVzZShrKT94OmUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShrKT9rLnBhcmVudDprO2UuRGVidWcuYXNzZXJ0KFkhPT0kLFwic2hvdWxkIG5vdCBkZWxldGUgd2hvbGUgc291cmNlIGZpbGVcIiksWC5kZWxldGUoJCxZKX19ZnVuY3Rpb24gcSh4LFgsJCxBLHksVixMLFApe1A9PT12b2lkIDAmJihQPSExKSx2ZShBLFgsJCx5LFYsTCxQKSYmKCQubW9kaWZpZXJzJiYkLm1vZGlmaWVycy5sZW5ndGg+MCYmKCFlLmlzSWRlbnRpZmllcigkLm5hbWUpfHxlLkZpbmRBbGxSZWZlcmVuY2VzLkNvcmUuaXNTeW1ib2xSZWZlcmVuY2VkSW5GaWxlKCQubmFtZSxBLFgpKT8kLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uKGspe3JldHVybiB4LmRlbGV0ZU1vZGlmaWVyKFgsayl9KTohJC5pbml0aWFsaXplciYmTygkLEEseSkmJnguZGVsZXRlKFgsJCkpfWZ1bmN0aW9uIE8oeCxYLCQpe3ZhciBBPXgucGFyZW50LnBhcmFtZXRlcnMuaW5kZXhPZih4KTtyZXR1cm4hZS5GaW5kQWxsUmVmZXJlbmNlcy5Db3JlLnNvbWVTaWduYXR1cmVVc2FnZSh4LnBhcmVudCwkLFgsZnVuY3Rpb24oeSxWKXtyZXR1cm4hVnx8Vi5hcmd1bWVudHMubGVuZ3RoPkF9KX1mdW5jdGlvbiB2ZSh4LFgsJCxBLHksVixMKXt2YXIgUD0kLnBhcmVudDtzd2l0Y2goUC5raW5kKXtjYXNlIDE2OTpjYXNlIDE3MTp2YXIgaz1QLnBhcmFtZXRlcnMuaW5kZXhPZigkKSxZPWUuaXNNZXRob2REZWNsYXJhdGlvbihQKT9QLm5hbWU6UCxVPWUuRmluZEFsbFJlZmVyZW5jZXMuQ29yZS5nZXRSZWZlcmVuY2VkU3ltYm9sc0Zvck5vZGUoUC5wb3MsWSx5LEEsVik7aWYoVSlmb3IodmFyIGo9MCxIPVU7ajxILmxlbmd0aDtqKyspZm9yKHZhciBJPUhbal0sbD0wLGQ9SS5yZWZlcmVuY2VzO2w8ZC5sZW5ndGg7bCsrKXt2YXIgRD1kW2xdO2lmKEQua2luZD09PTEpe3ZhciBmZT1lLmlzU3VwZXJLZXl3b3JkKEQubm9kZSkmJmUuaXNDYWxsRXhwcmVzc2lvbihELm5vZGUucGFyZW50KSYmRC5ub2RlLnBhcmVudC5hcmd1bWVudHMubGVuZ3RoPmssZz1lLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEQubm9kZS5wYXJlbnQpJiZlLmlzU3VwZXJLZXl3b3JkKEQubm9kZS5wYXJlbnQuZXhwcmVzc2lvbikmJmUuaXNDYWxsRXhwcmVzc2lvbihELm5vZGUucGFyZW50LnBhcmVudCkmJkQubm9kZS5wYXJlbnQucGFyZW50LmFyZ3VtZW50cy5sZW5ndGg+ayxuZT0oZS5pc01ldGhvZERlY2xhcmF0aW9uKEQubm9kZS5wYXJlbnQpfHxlLmlzTWV0aG9kU2lnbmF0dXJlKEQubm9kZS5wYXJlbnQpKSYmRC5ub2RlLnBhcmVudCE9PSQucGFyZW50JiZELm5vZGUucGFyZW50LnBhcmFtZXRlcnMubGVuZ3RoPms7aWYoZmV8fGd8fG5lKXJldHVybiExfX1yZXR1cm4hMDtjYXNlIDI1NjpyZXR1cm4gUC5uYW1lJiZlZSh4LFgsUC5uYW1lKT9oZShQLCQsTCk6ITA7Y2FzZSAyMTM6Y2FzZSAyMTQ6cmV0dXJuIGhlKFAsJCxMKTtjYXNlIDE3MzpyZXR1cm4hMTtjYXNlIDE3MjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmZhaWxCYWRTeW50YXhLaW5kKFApfX1mdW5jdGlvbiBlZSh4LFgsJCl7cmV0dXJuISFlLkZpbmRBbGxSZWZlcmVuY2VzLkNvcmUuZWFjaFN5bWJvbFJlZmVyZW5jZUluRmlsZSgkLHgsWCxmdW5jdGlvbihBKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoQSkmJmUuaXNDYWxsRXhwcmVzc2lvbihBLnBhcmVudCkmJkEucGFyZW50LmFyZ3VtZW50cy5pbmRleE9mKEEpPj0wfSl9ZnVuY3Rpb24gaGUoeCxYLCQpe3ZhciBBPXgucGFyYW1ldGVycyx5PUEuaW5kZXhPZihYKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoeSE9PS0xLFwiVGhlIHBhcmFtZXRlciBzaG91bGQgYWxyZWFkeSBiZSBpbiB0aGUgbGlzdFwiKSwkP0Euc2xpY2UoeSsxKS5ldmVyeShmdW5jdGlvbihWKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoVi5uYW1lKSYmIVYuc3ltYm9sLmlzUmVmZXJlbmNlZH0pOnk9PT1BLmxlbmd0aC0xfWZ1bmN0aW9uIEYoeCl7cmV0dXJuKGUuaXNCaW5hcnlFeHByZXNzaW9uKHgucGFyZW50KSYmeC5wYXJlbnQubGVmdD09PXh8fChlLmlzUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbih4LnBhcmVudCl8fGUuaXNQcmVmaXhVbmFyeUV4cHJlc3Npb24oeC5wYXJlbnQpKSYmeC5wYXJlbnQub3BlcmFuZD09PXgpJiZlLmlzRXhwcmVzc2lvblN0YXRlbWVudCh4LnBhcmVudC5wYXJlbnQpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhVbnJlYWNoYWJsZUNvZGVcIixCPVtlLkRpYWdub3N0aWNzLlVucmVhY2hhYmxlX2NvZGVfZGV0ZWN0ZWQuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6QixnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49bGUucHJvZ3JhbS5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyhsZS5zb3VyY2VGaWxlLGxlLmNhbmNlbGxhdGlvblRva2VuKTtpZighTi5sZW5ndGgpe3ZhciBwPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKG0pe3JldHVybiBFKG0sbGUuc291cmNlRmlsZSxsZS5zcGFuLnN0YXJ0LGxlLnNwYW4ubGVuZ3RoLGxlLmVycm9yQ29kZSl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcscCxlLkRpYWdub3N0aWNzLlJlbW92ZV91bnJlYWNoYWJsZV9jb2RlLHcsZS5EaWFnbm9zdGljcy5SZW1vdmVfYWxsX3VucmVhY2hhYmxlX2NvZGUpXX19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3JldHVybiBDLmNvZGVGaXhBbGwobGUsQixmdW5jdGlvbihOLHApe3JldHVybiBFKE4scC5maWxlLHAuc3RhcnQscC5sZW5ndGgscC5jb2RlKX0pfX0pO2Z1bmN0aW9uIEUobGUsTixwLG0sRyl7dmFyIG9lPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKE4scCksZj1lLmZpbmRBbmNlc3RvcihvZSxlLmlzU3RhdGVtZW50KTtpZihmLmdldFN0YXJ0KE4pIT09b2UuZ2V0U3RhcnQoTikpe3ZhciBUPUpTT04uc3RyaW5naWZ5KHtzdGF0ZW1lbnRLaW5kOmUuRGVidWcuZm9ybWF0U3ludGF4S2luZChmLmtpbmQpLHRva2VuS2luZDplLkRlYnVnLmZvcm1hdFN5bnRheEtpbmQob2Uua2luZCksZXJyb3JDb2RlOkcsc3RhcnQ6cCxsZW5ndGg6bX0pO2UuRGVidWcuZmFpbChcIlRva2VuIGFuZCBzdGF0ZW1lbnQgc2hvdWxkIHN0YXJ0IGF0IHRoZSBzYW1lIHBvaW50LiBcIitUKX12YXIgSz0oZS5pc0Jsb2NrKGYucGFyZW50KT9mLnBhcmVudDpmKS5wYXJlbnQ7aWYoIWUuaXNCbG9jayhmLnBhcmVudCl8fGY9PT1lLmZpcnN0KGYucGFyZW50LnN0YXRlbWVudHMpKXN3aXRjaChLLmtpbmQpe2Nhc2UgMjM5OmlmKEsuZWxzZVN0YXRlbWVudCl7aWYoZS5pc0Jsb2NrKGYucGFyZW50KSlicmVhaztsZS5yZXBsYWNlTm9kZShOLGYsZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKGUuZW1wdHlBcnJheSkpO3JldHVybn1jYXNlIDI0MTpjYXNlIDI0MjpsZS5kZWxldGUoTixLKTtyZXR1cm59aWYoZS5pc0Jsb2NrKGYucGFyZW50KSl7dmFyIGI9cCttLHNlPWUuRGVidWcuY2hlY2tEZWZpbmVkKFEoZS5zbGljZUFmdGVyKGYucGFyZW50LnN0YXRlbWVudHMsZiksZnVuY3Rpb24oSil7cmV0dXJuIEoucG9zPGJ9KSxcIlNvbWUgc3RhdGVtZW50IHNob3VsZCBiZSBsYXN0XCIpO2xlLmRlbGV0ZU5vZGVSYW5nZShOLGYsc2UpfWVsc2UgbGUuZGVsZXRlKE4sZil9ZnVuY3Rpb24gUShsZSxOKXtmb3IodmFyIHAsbT0wLEc9bGU7bTxHLmxlbmd0aDttKyspe3ZhciBvZT1HW21dO2lmKCFOKG9lKSlicmVhaztwPW9lfXJldHVybiBwfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhVbnVzZWRMYWJlbFwiLEI9W2UuRGlhZ25vc3RpY3MuVW51c2VkX2xhYmVsLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oUSl7dmFyIGxlPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKFEsZnVuY3Rpb24oTil7cmV0dXJuIEUoTixRLnNvdXJjZUZpbGUsUS5zcGFuLnN0YXJ0KX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxsZSxlLkRpYWdub3N0aWNzLlJlbW92ZV91bnVzZWRfbGFiZWwsdyxlLkRpYWdub3N0aWNzLlJlbW92ZV9hbGxfdW51c2VkX2xhYmVscyldfSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKFEpe3JldHVybiBDLmNvZGVGaXhBbGwoUSxCLGZ1bmN0aW9uKGxlLE4pe3JldHVybiBFKGxlLE4uZmlsZSxOLnN0YXJ0KX0pfX0pO2Z1bmN0aW9uIEUoUSxsZSxOKXt2YXIgcD1lLmdldFRva2VuQXRQb3NpdGlvbihsZSxOKSxtPWUuY2FzdChwLnBhcmVudCxlLmlzTGFiZWxlZFN0YXRlbWVudCksRz1wLmdldFN0YXJ0KGxlKSxvZT1tLnN0YXRlbWVudC5nZXRTdGFydChsZSksZj1lLnBvc2l0aW9uc0FyZU9uU2FtZUxpbmUoRyxvZSxsZSk/b2U6ZS5za2lwVHJpdmlhKGxlLnRleHQsZS5maW5kQ2hpbGRPZktpbmQobSw1OCxsZSkuZW5kLCEwKTtRLmRlbGV0ZVJhbmdlKGxlLHtwb3M6RyxlbmQ6Zn0pfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhKU0RvY1R5cGVzX3BsYWluXCIsQj1cImZpeEpTRG9jVHlwZXNfbnVsbGFibGVcIixFPVtlLkRpYWdub3N0aWNzLkpTRG9jX3R5cGVzX2Nhbl9vbmx5X2JlX3VzZWRfaW5zaWRlX2RvY3VtZW50YXRpb25fY29tbWVudHMuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6RSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihwKXt2YXIgbT1wLnNvdXJjZUZpbGUsRz1wLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSxvZT1sZShtLHAuc3Bhbi5zdGFydCxHKTtpZighb2UpcmV0dXJuO3ZhciBmPW9lLnR5cGVOb2RlLFQ9b2UudHlwZSxLPWYuZ2V0VGV4dChtKSxiPVtzZShULHcsZS5EaWFnbm9zdGljcy5DaGFuZ2VfYWxsX2pzZG9jX3N0eWxlX3R5cGVzX3RvX1R5cGVTY3JpcHQpXTtyZXR1cm4gZi5raW5kPT09MzE0JiZiLnB1c2goc2UoRy5nZXROdWxsYWJsZVR5cGUoVCwzMjc2OCksQixlLkRpYWdub3N0aWNzLkNoYW5nZV9hbGxfanNkb2Nfc3R5bGVfdHlwZXNfdG9fVHlwZVNjcmlwdF9hbmRfYWRkX3VuZGVmaW5lZF90b19udWxsYWJsZV90eXBlcykpLGI7ZnVuY3Rpb24gc2UoSixpZSxSKXt2YXIgcT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKE8pe3JldHVybiBRKE8sbSxmLEosRyl9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKFwiamRvY1R5cGVzXCIscSxbZS5EaWFnbm9zdGljcy5DaGFuZ2VfMF90b18xLEssRy50eXBlVG9TdHJpbmcoSildLGllLFIpfX0sZml4SWRzOlt3LEJdLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKHApe3ZhciBtPXAuZml4SWQsRz1wLnByb2dyYW0sb2U9cC5zb3VyY2VGaWxlLGY9Ry5nZXRUeXBlQ2hlY2tlcigpO3JldHVybiBDLmNvZGVGaXhBbGwocCxFLGZ1bmN0aW9uKFQsSyl7dmFyIGI9bGUoSy5maWxlLEsuc3RhcnQsZik7aWYoISFiKXt2YXIgc2U9Yi50eXBlTm9kZSxKPWIudHlwZSxpZT1zZS5raW5kPT09MzE0JiZtPT09Qj9mLmdldE51bGxhYmxlVHlwZShKLDMyNzY4KTpKO1EoVCxvZSxzZSxpZSxmKX19KX19KTtmdW5jdGlvbiBRKHAsbSxHLG9lLGYpe3AucmVwbGFjZU5vZGUobSxHLGYudHlwZVRvVHlwZU5vZGUob2UsRyx2b2lkIDApKX1mdW5jdGlvbiBsZShwLG0sRyl7dmFyIG9lPWUuZmluZEFuY2VzdG9yKGUuZ2V0VG9rZW5BdFBvc2l0aW9uKHAsbSksTiksZj1vZSYmb2UudHlwZTtyZXR1cm4gZiYme3R5cGVOb2RlOmYsdHlwZTpHLmdldFR5cGVGcm9tVHlwZU5vZGUoZil9fWZ1bmN0aW9uIE4ocCl7c3dpdGNoKHAua2luZCl7Y2FzZSAyMjk6Y2FzZSAxNzQ6Y2FzZSAxNzU6Y2FzZSAyNTY6Y2FzZSAxNzI6Y2FzZSAxNzY6Y2FzZSAxOTU6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNjQ6Y2FzZSAxNjc6Y2FzZSAxNjY6Y2FzZSAxNzM6Y2FzZSAyNTk6Y2FzZSAyMTE6Y2FzZSAyNTQ6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeE1pc3NpbmdDYWxsUGFyZW50aGVzZXNcIixCPVtlLkRpYWdub3N0aWNzLlRoaXNfY29uZGl0aW9uX3dpbGxfYWx3YXlzX3JldHVybl90cnVlX3NpbmNlX3RoaXNfZnVuY3Rpb25faXNfYWx3YXlzX2RlZmluZWRfRGlkX3lvdV9tZWFuX3RvX2NhbGxfaXRfaW5zdGVhZC5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGZpeElkczpbd10sZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3ZhciBOPWxlLnNvdXJjZUZpbGUscD1sZS5zcGFuLG09UShOLHAuc3RhcnQpO2lmKCEhbSl7dmFyIEc9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgobGUsZnVuY3Rpb24ob2Upe3JldHVybiBFKG9lLGxlLnNvdXJjZUZpbGUsbSl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsRyxlLkRpYWdub3N0aWNzLkFkZF9taXNzaW5nX2NhbGxfcGFyZW50aGVzZXMsdyxlLkRpYWdub3N0aWNzLkFkZF9hbGxfbWlzc2luZ19jYWxsX3BhcmVudGhlc2VzKV19fSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7cmV0dXJuIEMuY29kZUZpeEFsbChsZSxCLGZ1bmN0aW9uKE4scCl7dmFyIG09UShwLmZpbGUscC5zdGFydCk7bSYmRShOLHAuZmlsZSxtKX0pfX0pO2Z1bmN0aW9uIEUobGUsTixwKXtsZS5yZXBsYWNlTm9kZVdpdGhUZXh0KE4scCxcIlwiLmNvbmNhdChwLnRleHQsXCIoKVwiKSl9ZnVuY3Rpb24gUShsZSxOKXt2YXIgcD1lLmdldFRva2VuQXRQb3NpdGlvbihsZSxOKTtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHAucGFyZW50KSl7Zm9yKHZhciBtPXAucGFyZW50O2UuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obS5wYXJlbnQpOyltPW0ucGFyZW50O3JldHVybiBtLm5hbWV9aWYoZS5pc0lkZW50aWZpZXIocCkpcmV0dXJuIHB9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImZpeEF3YWl0SW5TeW5jRnVuY3Rpb25cIixCPVtlLkRpYWdub3N0aWNzLmF3YWl0X2V4cHJlc3Npb25zX2FyZV9vbmx5X2FsbG93ZWRfd2l0aGluX2FzeW5jX2Z1bmN0aW9uc19hbmRfYXRfdGhlX3RvcF9sZXZlbHNfb2ZfbW9kdWxlcy5jb2RlLGUuRGlhZ25vc3RpY3MuZm9yX2F3YWl0X2xvb3BzX2FyZV9vbmx5X2FsbG93ZWRfd2l0aGluX2FzeW5jX2Z1bmN0aW9uc19hbmRfYXRfdGhlX3RvcF9sZXZlbHNfb2ZfbW9kdWxlcy5jb2RlLGUuRGlhZ25vc3RpY3MuQ2Fubm90X2ZpbmRfbmFtZV8wX0RpZF95b3VfbWVhbl90b193cml0ZV90aGlzX2luX2FuX2FzeW5jX2Z1bmN0aW9uLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7dmFyIHA9Ti5zb3VyY2VGaWxlLG09Ti5zcGFuLEc9UShwLG0uc3RhcnQpO2lmKCEhRyl7dmFyIG9lPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKE4sZnVuY3Rpb24oZil7cmV0dXJuIGxlKGYscCxHKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxvZSxlLkRpYWdub3N0aWNzLkFkZF9hc3luY19tb2RpZmllcl90b19jb250YWluaW5nX2Z1bmN0aW9uLHcsZS5EaWFnbm9zdGljcy5BZGRfYWxsX21pc3NpbmdfYXN5bmNfbW9kaWZpZXJzKV19fSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKHApe3ZhciBtPW5ldyBlLk1hcDtyZXR1cm4gQy5jb2RlRml4QWxsKHAsQixmdW5jdGlvbihHLG9lKXt2YXIgZj1RKG9lLmZpbGUsb2Uuc3RhcnQpOyFmfHwhZS5hZGRUb1NlZW4obSxlLmdldE5vZGVJZChmLmluc2VydEJlZm9yZSkpfHxsZShHLHAuc291cmNlRmlsZSxmKX0pfX0pO2Z1bmN0aW9uIEUoTil7aWYoTi50eXBlKXJldHVybiBOLnR5cGU7aWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oTi5wYXJlbnQpJiZOLnBhcmVudC50eXBlJiZlLmlzRnVuY3Rpb25UeXBlTm9kZShOLnBhcmVudC50eXBlKSlyZXR1cm4gTi5wYXJlbnQudHlwZS50eXBlfWZ1bmN0aW9uIFEoTixwKXt2YXIgbT1lLmdldFRva2VuQXRQb3NpdGlvbihOLHApLEc9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24obSk7aWYoISFHKXt2YXIgb2U7c3dpdGNoKEcua2luZCl7Y2FzZSAxNjk6b2U9Ry5uYW1lO2JyZWFrO2Nhc2UgMjU2OmNhc2UgMjEzOm9lPWUuZmluZENoaWxkT2ZLaW5kKEcsOTgsTik7YnJlYWs7Y2FzZSAyMTQ6dmFyIGY9Ry50eXBlUGFyYW1ldGVycz8yOToyMDtvZT1lLmZpbmRDaGlsZE9mS2luZChHLGYsTil8fGUuZmlyc3QoRy5wYXJhbWV0ZXJzKTticmVhaztkZWZhdWx0OnJldHVybn1yZXR1cm4gb2UmJntpbnNlcnRCZWZvcmU6b2UscmV0dXJuVHlwZTpFKEcpfX19ZnVuY3Rpb24gbGUoTixwLG0pe3ZhciBHPW0uaW5zZXJ0QmVmb3JlLG9lPW0ucmV0dXJuVHlwZTtpZihvZSl7dmFyIGY9ZS5nZXRFbnRpdHlOYW1lRnJvbVR5cGVOb2RlKG9lKTsoIWZ8fGYua2luZCE9PTc5fHxmLnRleHQhPT1cIlByb21pc2VcIikmJk4ucmVwbGFjZU5vZGUocCxvZSxlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoXCJQcm9taXNlXCIsZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShbb2VdKSkpfU4uaW5zZXJ0TW9kaWZpZXJCZWZvcmUocCwxMzEsRyl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1bZS5EaWFnbm9zdGljcy5fMF9pc19kZWZpbmVkX2FzX2FuX2FjY2Vzc29yX2luX2NsYXNzXzFfYnV0X2lzX292ZXJyaWRkZW5faGVyZV9pbl8yX2FzX2FuX2luc3RhbmNlX3Byb3BlcnR5LmNvZGUsZS5EaWFnbm9zdGljcy5fMF9pc19kZWZpbmVkX2FzX2FfcHJvcGVydHlfaW5fY2xhc3NfMV9idXRfaXNfb3ZlcnJpZGRlbl9oZXJlX2luXzJfYXNfYW5fYWNjZXNzb3IuY29kZV0sQj1cImZpeFByb3BlcnR5T3ZlcnJpZGVBY2Nlc3NvclwiO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOncsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oUSl7dmFyIGxlPUUoUS5zb3VyY2VGaWxlLFEuc3Bhbi5zdGFydCxRLnNwYW4ubGVuZ3RoLFEuZXJyb3JDb2RlLFEpO2lmKGxlKXJldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24oQixsZSxlLkRpYWdub3N0aWNzLkdlbmVyYXRlX2dldF9hbmRfc2V0X2FjY2Vzc29ycyxCLGUuRGlhZ25vc3RpY3MuR2VuZXJhdGVfZ2V0X2FuZF9zZXRfYWNjZXNzb3JzX2Zvcl9hbGxfb3ZlcnJpZGluZ19wcm9wZXJ0aWVzKV19LGZpeElkczpbQl0sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oUSl7cmV0dXJuIEMuY29kZUZpeEFsbChRLHcsZnVuY3Rpb24obGUsTil7dmFyIHA9RShOLmZpbGUsTi5zdGFydCxOLmxlbmd0aCxOLmNvZGUsUSk7aWYocClmb3IodmFyIG09MCxHPXA7bTxHLmxlbmd0aDttKyspe3ZhciBvZT1HW21dO2xlLnB1c2hSYXcoUS5zb3VyY2VGaWxlLG9lKX19KX19KTtmdW5jdGlvbiBFKFEsbGUsTixwLG0pe3ZhciBHLG9lO2lmKHA9PT1lLkRpYWdub3N0aWNzLl8wX2lzX2RlZmluZWRfYXNfYW5fYWNjZXNzb3JfaW5fY2xhc3NfMV9idXRfaXNfb3ZlcnJpZGRlbl9oZXJlX2luXzJfYXNfYW5faW5zdGFuY2VfcHJvcGVydHkuY29kZSlHPWxlLG9lPWxlK047ZWxzZSBpZihwPT09ZS5EaWFnbm9zdGljcy5fMF9pc19kZWZpbmVkX2FzX2FfcHJvcGVydHlfaW5fY2xhc3NfMV9idXRfaXNfb3ZlcnJpZGRlbl9oZXJlX2luXzJfYXNfYW5fYWNjZXNzb3IuY29kZSl7dmFyIGY9bS5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksVD1lLmdldFRva2VuQXRQb3NpdGlvbihRLGxlKS5wYXJlbnQ7ZS5EZWJ1Zy5hc3NlcnQoZS5pc0FjY2Vzc29yKFQpLFwiZXJyb3Igc3BhbiBvZiBmaXhQcm9wZXJ0eU92ZXJyaWRlQWNjZXNzb3Igc2hvdWxkIG9ubHkgYmUgb24gYW4gYWNjZXNzb3JcIik7dmFyIEs9VC5wYXJlbnQ7ZS5EZWJ1Zy5hc3NlcnQoZS5pc0NsYXNzTGlrZShLKSxcImVycm9uZW91cyBhY2Nlc3NvcnMgc2hvdWxkIG9ubHkgYmUgaW5zaWRlIGNsYXNzZXNcIik7dmFyIGI9ZS5zaW5nbGVPclVuZGVmaW5lZChDLmdldEFsbFN1cGVycyhLLGYpKTtpZighYilyZXR1cm5bXTt2YXIgc2U9ZS51bmVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhlLmdldFRleHRPZlByb3BlcnR5TmFtZShULm5hbWUpKSxKPWYuZ2V0UHJvcGVydHlPZlR5cGUoZi5nZXRUeXBlQXRMb2NhdGlvbihiKSxzZSk7aWYoIUp8fCFKLnZhbHVlRGVjbGFyYXRpb24pcmV0dXJuW107Rz1KLnZhbHVlRGVjbGFyYXRpb24ucG9zLG9lPUoudmFsdWVEZWNsYXJhdGlvbi5lbmQsUT1lLmdldFNvdXJjZUZpbGVPZk5vZGUoSi52YWx1ZURlY2xhcmF0aW9uKX1lbHNlIGUuRGVidWcuZmFpbChcImZpeFByb3BlcnR5T3ZlcnJpZGVBY2Nlc3NvciBjb2RlZml4IGdvdCB1bmV4cGVjdGVkIGVycm9yIGNvZGUgXCIrcCk7cmV0dXJuIEMuZ2VuZXJhdGVBY2Nlc3NvckZyb21Qcm9wZXJ0eShRLG0ucHJvZ3JhbSxHLG9lLG0sZS5EaWFnbm9zdGljcy5HZW5lcmF0ZV9nZXRfYW5kX3NldF9hY2Nlc3NvcnMubWVzc2FnZSl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImluZmVyRnJvbVVzYWdlXCIsQj1bZS5EaWFnbm9zdGljcy5WYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfMV9pbl9zb21lX2xvY2F0aW9uc193aGVyZV9pdHNfdHlwZV9jYW5ub3RfYmVfZGV0ZXJtaW5lZC5jb2RlLGUuRGlhZ25vc3RpY3MuVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGUuY29kZSxlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZS5jb2RlLGUuRGlhZ25vc3RpY3MuUmVzdF9wYXJhbWV0ZXJfMF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZS5jb2RlLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0c19nZXRfYWNjZXNzb3JfbGFja3NfYV9yZXR1cm5fdHlwZV9hbm5vdGF0aW9uLmNvZGUsZS5EaWFnbm9zdGljcy5fMF93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuXzFfcmV0dXJuX3R5cGUuY29kZSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9pdHNfc2V0X2FjY2Vzc29yX2xhY2tzX2FfcGFyYW1ldGVyX3R5cGVfYW5ub3RhdGlvbi5jb2RlLGUuRGlhZ25vc3RpY3MuTWVtYmVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlLmNvZGUsZS5EaWFnbm9zdGljcy5WYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfMV9pbl9zb21lX2xvY2F0aW9uc19idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlLGUuRGlhZ25vc3RpY3MuVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2UuY29kZSxlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlLGUuRGlhZ25vc3RpY3MuUmVzdF9wYXJhbWV0ZXJfMF9pbXBsaWNpdGx5X2hhc19hbl9hbnlfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9idXRfYV9iZXR0ZXJfdHlwZV9mb3JfaXRzX2dldF9hY2Nlc3Nvcl9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlLGUuRGlhZ25vc3RpY3MuXzBfaW1wbGljaXRseV9oYXNfYW5fMV9yZXR1cm5fdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9idXRfYV9iZXR0ZXJfdHlwZV9mb3JfaXRzX3NldF9hY2Nlc3Nvcl9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlLGUuRGlhZ25vc3RpY3MuTWVtYmVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlLmNvZGUsZS5EaWFnbm9zdGljcy50aGlzX2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2JlY2F1c2VfaXRfZG9lc19ub3RfaGF2ZV9hX3R5cGVfYW5ub3RhdGlvbi5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKHEpe3ZhciBPPXEuc291cmNlRmlsZSx2ZT1xLnByb2dyYW0sZWU9cS5zcGFuLnN0YXJ0LGhlPXEuZXJyb3JDb2RlLEY9cS5jYW5jZWxsYXRpb25Ub2tlbix4PXEuaG9zdCxYPXEucHJlZmVyZW5jZXMsJD1lLmdldFRva2VuQXRQb3NpdGlvbihPLGVlKSxBLHk9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgocSxmdW5jdGlvbihMKXtBPWxlKEwsTywkLGhlLHZlLEYsZS5yZXR1cm5UcnVlLHgsWCl9KSxWPUEmJmUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oQSk7cmV0dXJuIVZ8fHkubGVuZ3RoPT09MD92b2lkIDA6W0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LHksW0UoaGUsJCksZS5nZXRUZXh0T2ZOb2RlKFYpXSx3LGUuRGlhZ25vc3RpY3MuSW5mZXJfYWxsX3R5cGVzX2Zyb21fdXNhZ2UpXX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihxKXt2YXIgTz1xLnNvdXJjZUZpbGUsdmU9cS5wcm9ncmFtLGVlPXEuY2FuY2VsbGF0aW9uVG9rZW4saGU9cS5ob3N0LEY9cS5wcmVmZXJlbmNlcyx4PWUubm9kZVNlZW5UcmFja2VyKCk7cmV0dXJuIEMuY29kZUZpeEFsbChxLEIsZnVuY3Rpb24oWCwkKXtsZShYLE8sZS5nZXRUb2tlbkF0UG9zaXRpb24oJC5maWxlLCQuc3RhcnQpLCQuY29kZSx2ZSxlZSx4LGhlLEYpfSl9fSk7ZnVuY3Rpb24gRShxLE8pe3N3aXRjaChxKXtjYXNlIGUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlLmNvZGU6Y2FzZSBlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlOnJldHVybiBlLmlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihlLmdldENvbnRhaW5pbmdGdW5jdGlvbihPKSk/ZS5EaWFnbm9zdGljcy5JbmZlcl90eXBlX29mXzBfZnJvbV91c2FnZTplLkRpYWdub3N0aWNzLkluZmVyX3BhcmFtZXRlcl90eXBlc19mcm9tX3VzYWdlO2Nhc2UgZS5EaWFnbm9zdGljcy5SZXN0X3BhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlLmNvZGU6Y2FzZSBlLkRpYWdub3N0aWNzLlJlc3RfcGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2UuY29kZTpyZXR1cm4gZS5EaWFnbm9zdGljcy5JbmZlcl9wYXJhbWV0ZXJfdHlwZXNfZnJvbV91c2FnZTtjYXNlIGUuRGlhZ25vc3RpY3MudGhpc19pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV90eXBlX2Fubm90YXRpb24uY29kZTpyZXR1cm4gZS5EaWFnbm9zdGljcy5JbmZlcl90aGlzX3R5cGVfb2ZfMF9mcm9tX3VzYWdlO2RlZmF1bHQ6cmV0dXJuIGUuRGlhZ25vc3RpY3MuSW5mZXJfdHlwZV9vZl8wX2Zyb21fdXNhZ2V9fWZ1bmN0aW9uIFEocSl7c3dpdGNoKHEpe2Nhc2UgZS5EaWFnbm9zdGljcy5WYXJpYWJsZV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfMV9pbl9zb21lX2xvY2F0aW9uc19idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlOnJldHVybiBlLkRpYWdub3N0aWNzLlZhcmlhYmxlXzBfaW1wbGljaXRseV9oYXNfdHlwZV8xX2luX3NvbWVfbG9jYXRpb25zX3doZXJlX2l0c190eXBlX2Nhbm5vdF9iZV9kZXRlcm1pbmVkLmNvZGU7Y2FzZSBlLkRpYWdub3N0aWNzLlZhcmlhYmxlXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlLmNvZGU6cmV0dXJuIGUuRGlhZ25vc3RpY3MuVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGUuY29kZTtjYXNlIGUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlX2J1dF9hX2JldHRlcl90eXBlX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlLmNvZGU6cmV0dXJuIGUuRGlhZ25vc3RpY3MuUGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fMV90eXBlLmNvZGU7Y2FzZSBlLkRpYWdub3N0aWNzLlJlc3RfcGFyYW1ldGVyXzBfaW1wbGljaXRseV9oYXNfYW5fYW55X3R5cGVfYnV0X2FfYmV0dGVyX3R5cGVfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2UuY29kZTpyZXR1cm4gZS5EaWFnbm9zdGljcy5SZXN0X3BhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlLmNvZGU7Y2FzZSBlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYnV0X2FfYmV0dGVyX3R5cGVfZm9yX2l0c19nZXRfYWNjZXNzb3JfbWF5X2JlX2luZmVycmVkX2Zyb21fdXNhZ2UuY29kZTpyZXR1cm4gZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2JlY2F1c2VfaXRzX2dldF9hY2Nlc3Nvcl9sYWNrc19hX3JldHVybl90eXBlX2Fubm90YXRpb24uY29kZTtjYXNlIGUuRGlhZ25vc3RpY3MuXzBfaW1wbGljaXRseV9oYXNfYW5fMV9yZXR1cm5fdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlOnJldHVybiBlLkRpYWdub3N0aWNzLl8wX3doaWNoX2xhY2tzX3JldHVybl90eXBlX2Fubm90YXRpb25faW1wbGljaXRseV9oYXNfYW5fMV9yZXR1cm5fdHlwZS5jb2RlO2Nhc2UgZS5EaWFnbm9zdGljcy5Qcm9wZXJ0eV8wX2ltcGxpY2l0bHlfaGFzX3R5cGVfYW55X2J1dF9hX2JldHRlcl90eXBlX2Zvcl9pdHNfc2V0X2FjY2Vzc29yX21heV9iZV9pbmZlcnJlZF9mcm9tX3VzYWdlLmNvZGU6cmV0dXJuIGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0c19zZXRfYWNjZXNzb3JfbGFja3NfYV9wYXJhbWV0ZXJfdHlwZV9hbm5vdGF0aW9uLmNvZGU7Y2FzZSBlLkRpYWdub3N0aWNzLk1lbWJlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZV9idXRfYV9iZXR0ZXJfdHlwZV9tYXlfYmVfaW5mZXJyZWRfZnJvbV91c2FnZS5jb2RlOnJldHVybiBlLkRpYWdub3N0aWNzLk1lbWJlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZS5jb2RlfXJldHVybiBxfWZ1bmN0aW9uIGxlKHEsTyx2ZSxlZSxoZSxGLHgsWCwkKXtpZighKCFlLmlzUGFyYW1ldGVyUHJvcGVydHlNb2RpZmllcih2ZS5raW5kKSYmdmUua2luZCE9PTc5JiZ2ZS5raW5kIT09MjUmJnZlLmtpbmQhPT0xMDgpKXt2YXIgQT12ZS5wYXJlbnQseT1DLmNyZWF0ZUltcG9ydEFkZGVyKE8saGUsJCxYKTtzd2l0Y2goZWU9UShlZSksZWUpe2Nhc2UgZS5EaWFnbm9zdGljcy5NZW1iZXJfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGUuY29kZTpjYXNlIGUuRGlhZ25vc3RpY3MuVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc190eXBlXzFfaW5fc29tZV9sb2NhdGlvbnNfd2hlcmVfaXRzX3R5cGVfY2Fubm90X2JlX2RldGVybWluZWQuY29kZTppZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihBKSYmeChBKXx8ZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oQSl8fGUuaXNQcm9wZXJ0eVNpZ25hdHVyZShBKSlyZXR1cm4gTihxLHksTyxBLGhlLFgsRikseS53cml0ZUZpeGVzKHEpLEE7aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihBKSl7dmFyIFY9c2UoQS5uYW1lLGhlLEYpLEw9ZS5nZXRUeXBlTm9kZUlmQWNjZXNzaWJsZShWLEEsaGUsWCk7aWYoTCl7dmFyIFA9ZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVHlwZVRhZyh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVHlwZUV4cHJlc3Npb24oTCksdm9pZCAwKTtxLmFkZEpTRG9jVGFncyhPLGUuY2FzdChBLnBhcmVudC5wYXJlbnQsZS5pc0V4cHJlc3Npb25TdGF0ZW1lbnQpLFtQXSl9cmV0dXJuIHkud3JpdGVGaXhlcyhxKSxBfXJldHVybjtjYXNlIGUuRGlhZ25vc3RpY3MuVmFyaWFibGVfMF9pbXBsaWNpdGx5X2hhc19hbl8xX3R5cGUuY29kZTp7dmFyIGs9aGUuZ2V0VHlwZUNoZWNrZXIoKS5nZXRTeW1ib2xBdExvY2F0aW9uKHZlKTtyZXR1cm4gayYmay52YWx1ZURlY2xhcmF0aW9uJiZlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihrLnZhbHVlRGVjbGFyYXRpb24pJiZ4KGsudmFsdWVEZWNsYXJhdGlvbik/KE4ocSx5LGUuZ2V0U291cmNlRmlsZU9mTm9kZShrLnZhbHVlRGVjbGFyYXRpb24pLGsudmFsdWVEZWNsYXJhdGlvbixoZSxYLEYpLHkud3JpdGVGaXhlcyhxKSxrLnZhbHVlRGVjbGFyYXRpb24pOnZvaWQgMH19dmFyIFk9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24odmUpO2lmKFkhPT12b2lkIDApe3ZhciBVO3N3aXRjaChlZSl7Y2FzZSBlLkRpYWdub3N0aWNzLlBhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuXzFfdHlwZS5jb2RlOmlmKGUuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKFkpKXtvZShxLHksTyxZLGhlLFgsRiksVT1ZO2JyZWFrfWNhc2UgZS5EaWFnbm9zdGljcy5SZXN0X3BhcmFtZXRlcl8wX2ltcGxpY2l0bHlfaGFzX2FuX2FueV90eXBlLmNvZGU6aWYoeChZKSl7dmFyIGo9ZS5jYXN0KEEsZS5pc1BhcmFtZXRlcik7cChxLHksTyxqLFksaGUsWCxGKSxVPWp9YnJlYWs7Y2FzZSBlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaW1wbGljaXRseV9oYXNfdHlwZV9hbnlfYmVjYXVzZV9pdHNfZ2V0X2FjY2Vzc29yX2xhY2tzX2FfcmV0dXJuX3R5cGVfYW5ub3RhdGlvbi5jb2RlOmNhc2UgZS5EaWFnbm9zdGljcy5fMF93aGljaF9sYWNrc19yZXR1cm5fdHlwZV9hbm5vdGF0aW9uX2ltcGxpY2l0bHlfaGFzX2FuXzFfcmV0dXJuX3R5cGUuY29kZTplLmlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbihZKSYmZS5pc0lkZW50aWZpZXIoWS5uYW1lKSYmKGYocSx5LE8sWSxzZShZLm5hbWUsaGUsRiksaGUsWCksVT1ZKTticmVhaztjYXNlIGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0c19zZXRfYWNjZXNzb3JfbGFja3NfYV9wYXJhbWV0ZXJfdHlwZV9hbm5vdGF0aW9uLmNvZGU6ZS5pc1NldEFjY2Vzc29yRGVjbGFyYXRpb24oWSkmJihvZShxLHksTyxZLGhlLFgsRiksVT1ZKTticmVhaztjYXNlIGUuRGlhZ25vc3RpY3MudGhpc19pbXBsaWNpdGx5X2hhc190eXBlX2FueV9iZWNhdXNlX2l0X2RvZXNfbm90X2hhdmVfYV90eXBlX2Fubm90YXRpb24uY29kZTplLnRleHRDaGFuZ2VzLmlzVGhpc1R5cGVBbm5vdGF0YWJsZShZKSYmeChZKSYmKG0ocSxPLFksaGUsWCxGKSxVPVkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbChTdHJpbmcoZWUpKX1yZXR1cm4geS53cml0ZUZpeGVzKHEpLFV9fX1mdW5jdGlvbiBOKHEsTyx2ZSxlZSxoZSxGLHgpe2UuaXNJZGVudGlmaWVyKGVlLm5hbWUpJiZmKHEsTyx2ZSxlZSxzZShlZS5uYW1lLGhlLHgpLGhlLEYpfWZ1bmN0aW9uIHAocSxPLHZlLGVlLGhlLEYseCxYKXtpZighIWUuaXNJZGVudGlmaWVyKGVlLm5hbWUpKXt2YXIgJD1KKGhlLHZlLEYsWCk7aWYoZS5EZWJ1Zy5hc3NlcnQoaGUucGFyYW1ldGVycy5sZW5ndGg9PT0kLmxlbmd0aCxcIlBhcmFtZXRlciBjb3VudCBhbmQgaW5mZXJlbmNlIGNvdW50IHNob3VsZCBtYXRjaFwiKSxlLmlzSW5KU0ZpbGUoaGUpKUsocSx2ZSwkLEYseCk7ZWxzZXt2YXIgQT1lLmlzQXJyb3dGdW5jdGlvbihoZSkmJiFlLmZpbmRDaGlsZE9mS2luZChoZSwyMCx2ZSk7QSYmcS5pbnNlcnROb2RlQmVmb3JlKHZlLGUuZmlyc3QoaGUucGFyYW1ldGVycyksZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDIwKSk7Zm9yKHZhciB5PTAsVj0kO3k8Vi5sZW5ndGg7eSsrKXt2YXIgTD1WW3ldLFA9TC5kZWNsYXJhdGlvbixrPUwudHlwZTtQJiYhUC50eXBlJiYhUC5pbml0aWFsaXplciYmZihxLE8sdmUsUCxrLEYseCl9QSYmcS5pbnNlcnROb2RlQWZ0ZXIodmUsZS5sYXN0KGhlLnBhcmFtZXRlcnMpLGUuZmFjdG9yeS5jcmVhdGVUb2tlbigyMSkpfX19ZnVuY3Rpb24gbShxLE8sdmUsZWUsaGUsRil7dmFyIHg9aWUodmUsTyxlZSxGKTtpZighKCF4fHwheC5sZW5ndGgpKXt2YXIgWD1SKGVlLHgsRikudGhpc1BhcmFtZXRlcigpLCQ9ZS5nZXRUeXBlTm9kZUlmQWNjZXNzaWJsZShYLHZlLGVlLGhlKTshJHx8KGUuaXNJbkpTRmlsZSh2ZSk/RyhxLE8sdmUsJCk6cS50cnlJbnNlcnRUaGlzVHlwZUFubm90YXRpb24oTyx2ZSwkKSl9fWZ1bmN0aW9uIEcocSxPLHZlLGVlKXtxLmFkZEpTRG9jVGFncyhPLHZlLFtlLmZhY3RvcnkuY3JlYXRlSlNEb2NUaGlzVGFnKHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlRXhwcmVzc2lvbihlZSkpXSl9ZnVuY3Rpb24gb2UocSxPLHZlLGVlLGhlLEYseCl7dmFyIFg9ZS5maXJzdE9yVW5kZWZpbmVkKGVlLnBhcmFtZXRlcnMpO2lmKFgmJmUuaXNJZGVudGlmaWVyKGVlLm5hbWUpJiZlLmlzSWRlbnRpZmllcihYLm5hbWUpKXt2YXIgJD1zZShlZS5uYW1lLGhlLHgpOyQ9PT1oZS5nZXRUeXBlQ2hlY2tlcigpLmdldEFueVR5cGUoKSYmKCQ9c2UoWC5uYW1lLGhlLHgpKSxlLmlzSW5KU0ZpbGUoZWUpP0socSx2ZSxbe2RlY2xhcmF0aW9uOlgsdHlwZTokfV0saGUsRik6ZihxLE8sdmUsWCwkLGhlLEYpfX1mdW5jdGlvbiBmKHEsTyx2ZSxlZSxoZSxGLHgpe3ZhciBYPWUuZ2V0VHlwZU5vZGVJZkFjY2Vzc2libGUoaGUsZWUsRix4KTtpZihYKWlmKGUuaXNJbkpTRmlsZSh2ZSkmJmVlLmtpbmQhPT0xNjYpe3ZhciAkPWUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGVlKT9lLnRyeUNhc3QoZWUucGFyZW50LnBhcmVudCxlLmlzVmFyaWFibGVTdGF0ZW1lbnQpOmVlO2lmKCEkKXJldHVybjt2YXIgQT1lLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlRXhwcmVzc2lvbihYKSx5PWUuaXNHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKGVlKT9lLmZhY3RvcnkuY3JlYXRlSlNEb2NSZXR1cm5UYWcodm9pZCAwLEEsdm9pZCAwKTplLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlVGFnKHZvaWQgMCxBLHZvaWQgMCk7cS5hZGRKU0RvY1RhZ3ModmUsJCxbeV0pfWVsc2UgVChYLGVlLHZlLHEsTyxlLmdldEVtaXRTY3JpcHRUYXJnZXQoRi5nZXRDb21waWxlck9wdGlvbnMoKSkpfHxxLnRyeUluc2VydFR5cGVBbm5vdGF0aW9uKHZlLGVlLFgpfWZ1bmN0aW9uIFQocSxPLHZlLGVlLGhlLEYpe3ZhciB4PUMudHJ5R2V0QXV0b0ltcG9ydGFibGVSZWZlcmVuY2VGcm9tVHlwZU5vZGUocSxGKTtyZXR1cm4geCYmZWUudHJ5SW5zZXJ0VHlwZUFubm90YXRpb24odmUsTyx4LnR5cGVOb2RlKT8oZS5mb3JFYWNoKHguc3ltYm9scyxmdW5jdGlvbihYKXtyZXR1cm4gaGUuYWRkSW1wb3J0RnJvbUV4cG9ydGVkU3ltYm9sKFgsITApfSksITApOiExfWZ1bmN0aW9uIEsocSxPLHZlLGVlLGhlKXt2YXIgRj12ZS5sZW5ndGgmJnZlWzBdLmRlY2xhcmF0aW9uLnBhcmVudDtpZighIUYpe3ZhciB4PWUubWFwRGVmaW5lZCh2ZSxmdW5jdGlvbihBKXt2YXIgeT1BLmRlY2xhcmF0aW9uO2lmKCEoeS5pbml0aWFsaXplcnx8ZS5nZXRKU0RvY1R5cGUoeSl8fCFlLmlzSWRlbnRpZmllcih5Lm5hbWUpKSl7dmFyIFY9QS50eXBlJiZlLmdldFR5cGVOb2RlSWZBY2Nlc3NpYmxlKEEudHlwZSx5LGVlLGhlKTtpZihWKXt2YXIgTD1lLmZhY3RvcnkuY2xvbmVOb2RlKHkubmFtZSk7cmV0dXJuIGUuc2V0RW1pdEZsYWdzKEwsMzU4NCkse25hbWU6ZS5mYWN0b3J5LmNsb25lTm9kZSh5Lm5hbWUpLHBhcmFtOnksaXNPcHRpb25hbDohIUEuaXNPcHRpb25hbCx0eXBlTm9kZTpWfX19fSk7aWYoISF4Lmxlbmd0aClpZihlLmlzQXJyb3dGdW5jdGlvbihGKXx8ZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihGKSl7dmFyIFg9ZS5pc0Fycm93RnVuY3Rpb24oRikmJiFlLmZpbmRDaGlsZE9mS2luZChGLDIwLE8pO1gmJnEuaW5zZXJ0Tm9kZUJlZm9yZShPLGUuZmlyc3QoRi5wYXJhbWV0ZXJzKSxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjApKSxlLmZvckVhY2goeCxmdW5jdGlvbihBKXt2YXIgeT1BLnR5cGVOb2RlLFY9QS5wYXJhbSxMPWUuZmFjdG9yeS5jcmVhdGVKU0RvY1R5cGVUYWcodm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVKU0RvY1R5cGVFeHByZXNzaW9uKHkpKSxQPWUuZmFjdG9yeS5jcmVhdGVKU0RvY0NvbW1lbnQodm9pZCAwLFtMXSk7cS5pbnNlcnROb2RlQXQoTyxWLmdldFN0YXJ0KE8pLFAse3N1ZmZpeDpcIiBcIn0pfSksWCYmcS5pbnNlcnROb2RlQWZ0ZXIoTyxlLmxhc3QoRi5wYXJhbWV0ZXJzKSxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjEpKX1lbHNle3ZhciAkPWUubWFwKHgsZnVuY3Rpb24oQSl7dmFyIHk9QS5uYW1lLFY9QS50eXBlTm9kZSxMPUEuaXNPcHRpb25hbDtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUpTRG9jUGFyYW1ldGVyVGFnKHZvaWQgMCx5LCEhTCxlLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlRXhwcmVzc2lvbihWKSwhMSx2b2lkIDApfSk7cS5hZGRKU0RvY1RhZ3MoTyxGLCQpfX19ZnVuY3Rpb24gYihxLE8sdmUpe3JldHVybiBlLm1hcERlZmluZWQoZS5GaW5kQWxsUmVmZXJlbmNlcy5nZXRSZWZlcmVuY2VFbnRyaWVzRm9yTm9kZSgtMSxxLE8sTy5nZXRTb3VyY2VGaWxlcygpLHZlKSxmdW5jdGlvbihlZSl7cmV0dXJuIGVlLmtpbmQhPT0wP2UudHJ5Q2FzdChlZS5ub2RlLGUuaXNJZGVudGlmaWVyKTp2b2lkIDB9KX1mdW5jdGlvbiBzZShxLE8sdmUpe3ZhciBlZT1iKHEsTyx2ZSk7cmV0dXJuIFIoTyxlZSx2ZSkuc2luZ2xlKCl9ZnVuY3Rpb24gSihxLE8sdmUsZWUpe3ZhciBoZT1pZShxLE8sdmUsZWUpO3JldHVybiBoZSYmUih2ZSxoZSxlZSkucGFyYW1ldGVycyhxKXx8cS5wYXJhbWV0ZXJzLm1hcChmdW5jdGlvbihGKXtyZXR1cm57ZGVjbGFyYXRpb246Rix0eXBlOmUuaXNJZGVudGlmaWVyKEYubmFtZSk/c2UoRi5uYW1lLHZlLGVlKTp2ZS5nZXRUeXBlQ2hlY2tlcigpLmdldEFueVR5cGUoKX19KX1mdW5jdGlvbiBpZShxLE8sdmUsZWUpe3ZhciBoZTtzd2l0Y2gocS5raW5kKXtjYXNlIDE3MTpoZT1lLmZpbmRDaGlsZE9mS2luZChxLDEzNCxPKTticmVhaztjYXNlIDIxNDpjYXNlIDIxMzp2YXIgRj1xLnBhcmVudDtoZT0oZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oRil8fGUuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKEYpKSYmZS5pc0lkZW50aWZpZXIoRi5uYW1lKT9GLm5hbWU6cS5uYW1lO2JyZWFrO2Nhc2UgMjU2OmNhc2UgMTY5OmNhc2UgMTY4OmhlPXEubmFtZTticmVha31pZighIWhlKXJldHVybiBiKGhlLHZlLGVlKX1mdW5jdGlvbiBSKHEsTyx2ZSl7dmFyIGVlPXEuZ2V0VHlwZUNoZWNrZXIoKSxoZT17c3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGVlLmdldFN0cmluZ1R5cGUoKX0sbnVtYmVyOmZ1bmN0aW9uKCl7cmV0dXJuIGVlLmdldE51bWJlclR5cGUoKX0sQXJyYXk6ZnVuY3Rpb24oX2Upe3JldHVybiBlZS5jcmVhdGVBcnJheVR5cGUoX2UpfSxQcm9taXNlOmZ1bmN0aW9uKF9lKXtyZXR1cm4gZWUuY3JlYXRlUHJvbWlzZVR5cGUoX2UpfX0sRj1bZWUuZ2V0U3RyaW5nVHlwZSgpLGVlLmdldE51bWJlclR5cGUoKSxlZS5jcmVhdGVBcnJheVR5cGUoZWUuZ2V0QW55VHlwZSgpKSxlZS5jcmVhdGVQcm9taXNlVHlwZShlZS5nZXRBbnlUeXBlKCkpXTtyZXR1cm57c2luZ2xlOiQscGFyYW1ldGVyczpBLHRoaXNQYXJhbWV0ZXI6eX07ZnVuY3Rpb24geCgpe3JldHVybntpc051bWJlcjp2b2lkIDAsaXNTdHJpbmc6dm9pZCAwLGlzTnVtYmVyT3JTdHJpbmc6dm9pZCAwLGNhbmRpZGF0ZVR5cGVzOnZvaWQgMCxwcm9wZXJ0aWVzOnZvaWQgMCxjYWxsczp2b2lkIDAsY29uc3RydWN0czp2b2lkIDAsbnVtYmVySW5kZXg6dm9pZCAwLHN0cmluZ0luZGV4OnZvaWQgMCxjYW5kaWRhdGVUaGlzVHlwZXM6dm9pZCAwLGluZmVycmVkVHlwZXM6dm9pZCAwfX1mdW5jdGlvbiBYKF9lKXtmb3IodmFyIHdlPW5ldyBlLk1hcCxkZT0wLHllPV9lO2RlPHllLmxlbmd0aDtkZSsrKXt2YXIgQWU9eWVbZGVdO0FlLnByb3BlcnRpZXMmJkFlLnByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbihpcixDcil7d2UuaGFzKENyKXx8d2Uuc2V0KENyLFtdKSx3ZS5nZXQoQ3IpLnB1c2goaXIpfSl9dmFyIGVyPW5ldyBlLk1hcDtyZXR1cm4gd2UuZm9yRWFjaChmdW5jdGlvbihpcixDcil7ZXIuc2V0KENyLFgoaXIpKX0pLHtpc051bWJlcjpfZS5zb21lKGZ1bmN0aW9uKGlyKXtyZXR1cm4gaXIuaXNOdW1iZXJ9KSxpc1N0cmluZzpfZS5zb21lKGZ1bmN0aW9uKGlyKXtyZXR1cm4gaXIuaXNTdHJpbmd9KSxpc051bWJlck9yU3RyaW5nOl9lLnNvbWUoZnVuY3Rpb24oaXIpe3JldHVybiBpci5pc051bWJlck9yU3RyaW5nfSksY2FuZGlkYXRlVHlwZXM6ZS5mbGF0TWFwKF9lLGZ1bmN0aW9uKGlyKXtyZXR1cm4gaXIuY2FuZGlkYXRlVHlwZXN9KSxwcm9wZXJ0aWVzOmVyLGNhbGxzOmUuZmxhdE1hcChfZSxmdW5jdGlvbihpcil7cmV0dXJuIGlyLmNhbGxzfSksY29uc3RydWN0czplLmZsYXRNYXAoX2UsZnVuY3Rpb24oaXIpe3JldHVybiBpci5jb25zdHJ1Y3RzfSksbnVtYmVySW5kZXg6ZS5mb3JFYWNoKF9lLGZ1bmN0aW9uKGlyKXtyZXR1cm4gaXIubnVtYmVySW5kZXh9KSxzdHJpbmdJbmRleDplLmZvckVhY2goX2UsZnVuY3Rpb24oaXIpe3JldHVybiBpci5zdHJpbmdJbmRleH0pLGNhbmRpZGF0ZVRoaXNUeXBlczplLmZsYXRNYXAoX2UsZnVuY3Rpb24oaXIpe3JldHVybiBpci5jYW5kaWRhdGVUaGlzVHlwZXN9KSxpbmZlcnJlZFR5cGVzOnZvaWQgMH19ZnVuY3Rpb24gJCgpe3JldHVybiBuZShWKE8pKX1mdW5jdGlvbiBBKF9lKXtpZighKE8ubGVuZ3RoPT09MHx8IV9lLnBhcmFtZXRlcnMpKXtmb3IodmFyIHdlPXgoKSxkZT0wLHllPU87ZGU8eWUubGVuZ3RoO2RlKyspe3ZhciBBZT15ZVtkZV07dmUudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLEwoQWUsd2UpfXZhciBlcj1WZShWZShbXSx3ZS5jb25zdHJ1Y3RzfHxbXSwhMCksd2UuY2FsbHN8fFtdLCEwKTtyZXR1cm4gX2UucGFyYW1ldGVycy5tYXAoZnVuY3Rpb24oaXIsQ3Ipe2Zvcih2YXIgWWU9W10sQnI9ZS5pc1Jlc3RQYXJhbWV0ZXIoaXIpLEVyPSExLE5lPTAsbj1lcjtOZTxuLmxlbmd0aDtOZSsrKXt2YXIgbHI9bltOZV07aWYobHIuYXJndW1lbnRUeXBlcy5sZW5ndGg8PUNyKUVyPWUuaXNJbkpTRmlsZShfZSksWWUucHVzaChlZS5nZXRVbmRlZmluZWRUeXBlKCkpO2Vsc2UgaWYoQnIpZm9yKHZhciBiZT1DcjtiZTxsci5hcmd1bWVudFR5cGVzLmxlbmd0aDtiZSsrKVllLnB1c2goZWUuZ2V0QmFzZVR5cGVPZkxpdGVyYWxUeXBlKGxyLmFyZ3VtZW50VHlwZXNbYmVdKSk7ZWxzZSBZZS5wdXNoKGVlLmdldEJhc2VUeXBlT2ZMaXRlcmFsVHlwZShsci5hcmd1bWVudFR5cGVzW0NyXSkpfWlmKGUuaXNJZGVudGlmaWVyKGlyLm5hbWUpKXt2YXIgR2U9VihiKGlyLm5hbWUscSx2ZSkpO1llLnB1c2guYXBwbHkoWWUsQnI/ZS5tYXBEZWZpbmVkKEdlLGVlLmdldEVsZW1lbnRUeXBlT2ZBcnJheVR5cGUpOkdlKX12YXIgdXI9bmUoWWUpO3JldHVybnt0eXBlOkJyP2VlLmNyZWF0ZUFycmF5VHlwZSh1cik6dXIsaXNPcHRpb25hbDpFciYmIUJyLGRlY2xhcmF0aW9uOmlyfX0pfX1mdW5jdGlvbiB5KCl7Zm9yKHZhciBfZT14KCksd2U9MCxkZT1PO3dlPGRlLmxlbmd0aDt3ZSsrKXt2YXIgeWU9ZGVbd2VdO3ZlLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKSxMKHllLF9lKX1yZXR1cm4gbmUoX2UuY2FuZGlkYXRlVGhpc1R5cGVzfHxlLmVtcHR5QXJyYXkpfWZ1bmN0aW9uIFYoX2Upe2Zvcih2YXIgd2U9eCgpLGRlPTAseWU9X2U7ZGU8eWUubGVuZ3RoO2RlKyspe3ZhciBBZT15ZVtkZV07dmUudGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpLEwoQWUsd2UpfXJldHVybiBXZSh3ZSl9ZnVuY3Rpb24gTChfZSx3ZSl7Zm9yKDtlLmlzUmlnaHRTaWRlT2ZRdWFsaWZpZWROYW1lT3JQcm9wZXJ0eUFjY2VzcyhfZSk7KV9lPV9lLnBhcmVudDtzd2l0Y2goX2UucGFyZW50LmtpbmQpe2Nhc2UgMjM4OmsoX2Usd2UpO2JyZWFrO2Nhc2UgMjIwOndlLmlzTnVtYmVyPSEwO2JyZWFrO2Nhc2UgMjE5OlkoX2UucGFyZW50LHdlKTticmVhaztjYXNlIDIyMTpVKF9lLF9lLnBhcmVudCx3ZSk7YnJlYWs7Y2FzZSAyODk6Y2FzZSAyOTA6aihfZS5wYXJlbnQsd2UpO2JyZWFrO2Nhc2UgMjA4OmNhc2UgMjA5Ol9lLnBhcmVudC5leHByZXNzaW9uPT09X2U/SChfZS5wYXJlbnQsd2UpOlAoX2Usd2UpO2JyZWFrO2Nhc2UgMjA2OkkoX2UucGFyZW50LHdlKTticmVhaztjYXNlIDIwNzpsKF9lLnBhcmVudCxfZSx3ZSk7YnJlYWs7Y2FzZSAyOTY6Y2FzZSAyOTc6ZChfZS5wYXJlbnQsd2UpO2JyZWFrO2Nhc2UgMTY3OkQoX2UucGFyZW50LHdlKTticmVhaztjYXNlIDI1NDp7dmFyIGRlPV9lLnBhcmVudCx5ZT1kZS5uYW1lLEFlPWRlLmluaXRpYWxpemVyO2lmKF9lPT09eWUpe0FlJiZycih3ZSxlZS5nZXRUeXBlQXRMb2NhdGlvbihBZSkpO2JyZWFrfX1kZWZhdWx0OnJldHVybiBQKF9lLHdlKX19ZnVuY3Rpb24gUChfZSx3ZSl7ZS5pc0V4cHJlc3Npb25Ob2RlKF9lKSYmcnIod2UsZWUuZ2V0Q29udGV4dHVhbFR5cGUoX2UpKX1mdW5jdGlvbiBrKF9lLHdlKXtycih3ZSxlLmlzQ2FsbEV4cHJlc3Npb24oX2UpP2VlLmdldFZvaWRUeXBlKCk6ZWUuZ2V0QW55VHlwZSgpKX1mdW5jdGlvbiBZKF9lLHdlKXtzd2l0Y2goX2Uub3BlcmF0b3Ipe2Nhc2UgNDU6Y2FzZSA0NjpjYXNlIDQwOmNhc2UgNTQ6d2UuaXNOdW1iZXI9ITA7YnJlYWs7Y2FzZSAzOTp3ZS5pc051bWJlck9yU3RyaW5nPSEwO2JyZWFrfX1mdW5jdGlvbiBVKF9lLHdlLGRlKXtzd2l0Y2god2Uub3BlcmF0b3JUb2tlbi5raW5kKXtjYXNlIDQyOmNhc2UgNDE6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgNDc6Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNjU6Y2FzZSA2NzpjYXNlIDY2OmNhc2UgNjg6Y2FzZSA2OTpjYXNlIDczOmNhc2UgNzQ6Y2FzZSA3ODpjYXNlIDcwOmNhc2UgNzI6Y2FzZSA3MTpjYXNlIDQwOmNhc2UgMjk6Y2FzZSAzMjpjYXNlIDMxOmNhc2UgMzM6dmFyIHllPWVlLmdldFR5cGVBdExvY2F0aW9uKHdlLmxlZnQ9PT1fZT93ZS5yaWdodDp3ZS5sZWZ0KTt5ZS5mbGFncyYxMDU2P3JyKGRlLHllKTpkZS5pc051bWJlcj0hMDticmVhaztjYXNlIDY0OmNhc2UgMzk6dmFyIEFlPWVlLmdldFR5cGVBdExvY2F0aW9uKHdlLmxlZnQ9PT1fZT93ZS5yaWdodDp3ZS5sZWZ0KTtBZS5mbGFncyYxMDU2P3JyKGRlLEFlKTpBZS5mbGFncyYyOTY/ZGUuaXNOdW1iZXI9ITA6QWUuZmxhZ3MmNDAyNjUzMzE2P2RlLmlzU3RyaW5nPSEwOkFlLmZsYWdzJjF8fChkZS5pc051bWJlck9yU3RyaW5nPSEwKTticmVhaztjYXNlIDYzOmNhc2UgMzQ6Y2FzZSAzNjpjYXNlIDM3OmNhc2UgMzU6cnIoZGUsZWUuZ2V0VHlwZUF0TG9jYXRpb24od2UubGVmdD09PV9lP3dlLnJpZ2h0OndlLmxlZnQpKTticmVhaztjYXNlIDEwMTpfZT09PXdlLmxlZnQmJihkZS5pc1N0cmluZz0hMCk7YnJlYWs7Y2FzZSA1NjpjYXNlIDYwOl9lPT09d2UubGVmdCYmKF9lLnBhcmVudC5wYXJlbnQua2luZD09PTI1NHx8ZS5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKF9lLnBhcmVudC5wYXJlbnQsITApKSYmcnIoZGUsZWUuZ2V0VHlwZUF0TG9jYXRpb24od2UucmlnaHQpKTticmVhaztjYXNlIDU1OmNhc2UgMjc6Y2FzZSAxMDI6YnJlYWt9fWZ1bmN0aW9uIGooX2Usd2Upe3JyKHdlLGVlLmdldFR5cGVBdExvY2F0aW9uKF9lLnBhcmVudC5wYXJlbnQuZXhwcmVzc2lvbikpfWZ1bmN0aW9uIEgoX2Usd2Upe3ZhciBkZT17YXJndW1lbnRUeXBlczpbXSxyZXR1cm5fOngoKX07aWYoX2UuYXJndW1lbnRzKWZvcih2YXIgeWU9MCxBZT1fZS5hcmd1bWVudHM7eWU8QWUubGVuZ3RoO3llKyspe3ZhciBlcj1BZVt5ZV07ZGUuYXJndW1lbnRUeXBlcy5wdXNoKGVlLmdldFR5cGVBdExvY2F0aW9uKGVyKSl9TChfZSxkZS5yZXR1cm5fKSxfZS5raW5kPT09MjA4Pyh3ZS5jYWxsc3x8KHdlLmNhbGxzPVtdKSkucHVzaChkZSk6KHdlLmNvbnN0cnVjdHN8fCh3ZS5jb25zdHJ1Y3RzPVtdKSkucHVzaChkZSl9ZnVuY3Rpb24gSShfZSx3ZSl7dmFyIGRlPWUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKF9lLm5hbWUudGV4dCk7d2UucHJvcGVydGllc3x8KHdlLnByb3BlcnRpZXM9bmV3IGUuTWFwKTt2YXIgeWU9d2UucHJvcGVydGllcy5nZXQoZGUpfHx4KCk7TChfZSx5ZSksd2UucHJvcGVydGllcy5zZXQoZGUseWUpfWZ1bmN0aW9uIGwoX2Usd2UsZGUpe2lmKHdlPT09X2UuYXJndW1lbnRFeHByZXNzaW9uKXtkZS5pc051bWJlck9yU3RyaW5nPSEwO3JldHVybn1lbHNle3ZhciB5ZT1lZS5nZXRUeXBlQXRMb2NhdGlvbihfZS5hcmd1bWVudEV4cHJlc3Npb24pLEFlPXgoKTtMKF9lLEFlKSx5ZS5mbGFncyYyOTY/ZGUubnVtYmVySW5kZXg9QWU6ZGUuc3RyaW5nSW5kZXg9QWV9fWZ1bmN0aW9uIGQoX2Usd2Upe3ZhciBkZT1lLmlzVmFyaWFibGVEZWNsYXJhdGlvbihfZS5wYXJlbnQucGFyZW50KT9fZS5wYXJlbnQucGFyZW50Ol9lLnBhcmVudDtJZSh3ZSxlZS5nZXRUeXBlQXRMb2NhdGlvbihkZSkpfWZ1bmN0aW9uIEQoX2Usd2Upe0llKHdlLGVlLmdldFR5cGVBdExvY2F0aW9uKF9lLnBhcmVudCkpfWZ1bmN0aW9uIGZlKF9lLHdlKXtmb3IodmFyIGRlPVtdLHllPTAsQWU9X2U7eWU8QWUubGVuZ3RoO3llKyspZm9yKHZhciBlcj1BZVt5ZV0saXI9MCxDcj13ZTtpcjxDci5sZW5ndGg7aXIrKyl7dmFyIFllPUNyW2lyXSxCcj1ZZS5oaWdoLEVyPVllLmxvdztCcihlcikmJihlLkRlYnVnLmFzc2VydCghRXIoZXIpLFwiUHJpb3JpdHkgY2FuJ3QgaGF2ZSBib3RoIGxvdyBhbmQgaGlnaFwiKSxkZS5wdXNoKEVyKSl9cmV0dXJuIF9lLmZpbHRlcihmdW5jdGlvbihOZSl7cmV0dXJuIGRlLmV2ZXJ5KGZ1bmN0aW9uKG4pe3JldHVybiFuKE5lKX0pfSl9ZnVuY3Rpb24gZyhfZSl7cmV0dXJuIG5lKFdlKF9lKSl9ZnVuY3Rpb24gbmUoX2Upe2lmKCFfZS5sZW5ndGgpcmV0dXJuIGVlLmdldEFueVR5cGUoKTt2YXIgd2U9ZWUuZ2V0VW5pb25UeXBlKFtlZS5nZXRTdHJpbmdUeXBlKCksZWUuZ2V0TnVtYmVyVHlwZSgpXSksZGU9W3toaWdoOmZ1bmN0aW9uKGVyKXtyZXR1cm4gZXI9PT1lZS5nZXRTdHJpbmdUeXBlKCl8fGVyPT09ZWUuZ2V0TnVtYmVyVHlwZSgpfSxsb3c6ZnVuY3Rpb24oZXIpe3JldHVybiBlcj09PXdlfX0se2hpZ2g6ZnVuY3Rpb24oZXIpe3JldHVybiEoZXIuZmxhZ3MmMTYzODUpfSxsb3c6ZnVuY3Rpb24oZXIpe3JldHVybiEhKGVyLmZsYWdzJjE2Mzg1KX19LHtoaWdoOmZ1bmN0aW9uKGVyKXtyZXR1cm4hKGVyLmZsYWdzJjExNDY4OSkmJiEoZS5nZXRPYmplY3RGbGFncyhlcikmMTYpfSxsb3c6ZnVuY3Rpb24oZXIpe3JldHVybiEhKGUuZ2V0T2JqZWN0RmxhZ3MoZXIpJjE2KX19XSx5ZT1mZShfZSxkZSksQWU9eWUuZmlsdGVyKGZ1bmN0aW9uKGVyKXtyZXR1cm4gZS5nZXRPYmplY3RGbGFncyhlcikmMTZ9KTtyZXR1cm4gQWUubGVuZ3RoJiYoeWU9eWUuZmlsdGVyKGZ1bmN0aW9uKGVyKXtyZXR1cm4hKGUuZ2V0T2JqZWN0RmxhZ3MoZXIpJjE2KX0pLHllLnB1c2godWUoQWUpKSksZWUuZ2V0V2lkZW5lZFR5cGUoZWUuZ2V0VW5pb25UeXBlKHllLm1hcChlZS5nZXRCYXNlVHlwZU9mTGl0ZXJhbFR5cGUpLDIpKX1mdW5jdGlvbiB1ZShfZSl7aWYoX2UubGVuZ3RoPT09MSlyZXR1cm4gX2VbMF07Zm9yKHZhciB3ZT1bXSxkZT1bXSx5ZT1bXSxBZT1bXSxlcj0hMSxpcj0hMSxDcj1lLmNyZWF0ZU11bHRpTWFwKCksWWU9MCxCcj1fZTtZZTxCci5sZW5ndGg7WWUrKyl7Zm9yKHZhciBFcj1CcltZZV0sTmU9MCxuPWVlLmdldFByb3BlcnRpZXNPZlR5cGUoRXIpO05lPG4ubGVuZ3RoO05lKyspe3ZhciBscj1uW05lXTtDci5hZGQobHIubmFtZSxsci52YWx1ZURlY2xhcmF0aW9uP2VlLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24obHIsbHIudmFsdWVEZWNsYXJhdGlvbik6ZWUuZ2V0QW55VHlwZSgpKX13ZS5wdXNoLmFwcGx5KHdlLGVlLmdldFNpZ25hdHVyZXNPZlR5cGUoRXIsMCkpLGRlLnB1c2guYXBwbHkoZGUsZWUuZ2V0U2lnbmF0dXJlc09mVHlwZShFciwxKSk7dmFyIGJlPWVlLmdldEluZGV4SW5mb09mVHlwZShFciwwKTtiZSYmKHllLnB1c2goYmUudHlwZSksZXI9ZXJ8fGJlLmlzUmVhZG9ubHkpO3ZhciBHZT1lZS5nZXRJbmRleEluZm9PZlR5cGUoRXIsMSk7R2UmJihBZS5wdXNoKEdlLnR5cGUpLGlyPWlyfHxHZS5pc1JlYWRvbmx5KX12YXIgdXI9ZS5tYXBFbnRyaWVzKENyLGZ1bmN0aW9uKElyLHdyKXt2YXIgVXI9d3IubGVuZ3RoPF9lLmxlbmd0aD8xNjc3NzIxNjowLGlpPWVlLmNyZWF0ZVN5bWJvbCg0fFVyLElyKTtyZXR1cm4gaWkudHlwZT1lZS5nZXRVbmlvblR5cGUod3IpLFtJcixpaV19KSx5cj1bXTtyZXR1cm4geWUubGVuZ3RoJiZ5ci5wdXNoKGVlLmNyZWF0ZUluZGV4SW5mbyhlZS5nZXRTdHJpbmdUeXBlKCksZWUuZ2V0VW5pb25UeXBlKHllKSxlcikpLEFlLmxlbmd0aCYmeXIucHVzaChlZS5jcmVhdGVJbmRleEluZm8oZWUuZ2V0TnVtYmVyVHlwZSgpLGVlLmdldFVuaW9uVHlwZShBZSksaXIpKSxlZS5jcmVhdGVBbm9ueW1vdXNUeXBlKF9lWzBdLnN5bWJvbCx1cix3ZSxkZSx5cil9ZnVuY3Rpb24gV2UoX2Upe3ZhciB3ZSxkZSx5ZSxBZT1bXTtfZS5pc051bWJlciYmQWUucHVzaChlZS5nZXROdW1iZXJUeXBlKCkpLF9lLmlzU3RyaW5nJiZBZS5wdXNoKGVlLmdldFN0cmluZ1R5cGUoKSksX2UuaXNOdW1iZXJPclN0cmluZyYmQWUucHVzaChlZS5nZXRVbmlvblR5cGUoW2VlLmdldFN0cmluZ1R5cGUoKSxlZS5nZXROdW1iZXJUeXBlKCldKSksX2UubnVtYmVySW5kZXgmJkFlLnB1c2goZWUuY3JlYXRlQXJyYXlUeXBlKGcoX2UubnVtYmVySW5kZXgpKSksKCgod2U9X2UucHJvcGVydGllcyk9PT1udWxsfHx3ZT09PXZvaWQgMD92b2lkIDA6d2Uuc2l6ZSl8fCgoZGU9X2UuY29uc3RydWN0cyk9PT1udWxsfHxkZT09PXZvaWQgMD92b2lkIDA6ZGUubGVuZ3RoKXx8X2Uuc3RyaW5nSW5kZXgpJiZBZS5wdXNoKEZlKF9lKSk7dmFyIGVyPShfZS5jYW5kaWRhdGVUeXBlc3x8W10pLm1hcChmdW5jdGlvbihDcil7cmV0dXJuIGVlLmdldEJhc2VUeXBlT2ZMaXRlcmFsVHlwZShDcil9KSxpcj0hKCh5ZT1fZS5jYWxscyk9PT1udWxsfHx5ZT09PXZvaWQgMCkmJnllLmxlbmd0aD9GZShfZSk6dm9pZCAwO3JldHVybiBpciYmZXI/QWUucHVzaChlZS5nZXRVbmlvblR5cGUoVmUoW2lyXSxlciwhMCksMikpOihpciYmQWUucHVzaChpciksZS5sZW5ndGgoZXIpJiZBZS5wdXNoLmFwcGx5KEFlLGVyKSksQWUucHVzaC5hcHBseShBZSxaKF9lKSksQWV9ZnVuY3Rpb24gRmUoX2Upe3ZhciB3ZT1uZXcgZS5NYXA7X2UucHJvcGVydGllcyYmX2UucHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uKGVyLGlyKXt2YXIgQ3I9ZWUuY3JlYXRlU3ltYm9sKDQsaXIpO0NyLnR5cGU9Zyhlciksd2Uuc2V0KGlyLENyKX0pO3ZhciBkZT1fZS5jYWxscz9bSGUoX2UuY2FsbHMpXTpbXSx5ZT1fZS5jb25zdHJ1Y3RzP1tIZShfZS5jb25zdHJ1Y3RzKV06W10sQWU9X2Uuc3RyaW5nSW5kZXg/W2VlLmNyZWF0ZUluZGV4SW5mbyhlZS5nZXRTdHJpbmdUeXBlKCksZyhfZS5zdHJpbmdJbmRleCksITEpXTpbXTtyZXR1cm4gZWUuY3JlYXRlQW5vbnltb3VzVHlwZSh2b2lkIDAsd2UsZGUseWUsQWUpfWZ1bmN0aW9uIFooX2Upe2lmKCFfZS5wcm9wZXJ0aWVzfHwhX2UucHJvcGVydGllcy5zaXplKXJldHVybltdO3ZhciB3ZT1GLmZpbHRlcihmdW5jdGlvbihkZSl7cmV0dXJuIEJlKGRlLF9lKX0pO3JldHVybiAwPHdlLmxlbmd0aCYmd2UubGVuZ3RoPDM/d2UubWFwKGZ1bmN0aW9uKGRlKXtyZXR1cm4gZ2UoZGUsX2UpfSk6W119ZnVuY3Rpb24gQmUoX2Usd2Upe3JldHVybiB3ZS5wcm9wZXJ0aWVzPyFlLmZvckVhY2hFbnRyeSh3ZS5wcm9wZXJ0aWVzLGZ1bmN0aW9uKGRlLHllKXt2YXIgQWU9ZWUuZ2V0VHlwZU9mUHJvcGVydHlPZlR5cGUoX2UseWUpO2lmKCFBZSlyZXR1cm4hMDtpZihkZS5jYWxscyl7dmFyIGVyPWVlLmdldFNpZ25hdHVyZXNPZlR5cGUoQWUsMCk7cmV0dXJuIWVyLmxlbmd0aHx8IWVlLmlzVHlwZUFzc2lnbmFibGVUbyhBZSxFZShkZS5jYWxscykpfWVsc2UgcmV0dXJuIWVlLmlzVHlwZUFzc2lnbmFibGVUbyhBZSxnKGRlKSl9KTohMX1mdW5jdGlvbiBnZShfZSx3ZSl7aWYoIShlLmdldE9iamVjdEZsYWdzKF9lKSY0KXx8IXdlLnByb3BlcnRpZXMpcmV0dXJuIF9lO3ZhciBkZT1fZS50YXJnZXQseWU9ZS5zaW5nbGVPclVuZGVmaW5lZChkZS50eXBlUGFyYW1ldGVycyk7aWYoIXllKXJldHVybiBfZTt2YXIgQWU9W107cmV0dXJuIHdlLnByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbihlcixpcil7dmFyIENyPWVlLmdldFR5cGVPZlByb3BlcnR5T2ZUeXBlKGRlLGlyKTtlLkRlYnVnLmFzc2VydCghIUNyLFwiZ2VuZXJpYyBzaG91bGQgaGF2ZSBhbGwgdGhlIHByb3BlcnRpZXMgb2YgaXRzIHJlZmVyZW5jZS5cIiksQWUucHVzaC5hcHBseShBZSxSZShDcixnKGVyKSx5ZSkpfSksaGVbX2Uuc3ltYm9sLmVzY2FwZWROYW1lXShuZShBZSkpfWZ1bmN0aW9uIFJlKF9lLHdlLGRlKXtpZihfZT09PWRlKXJldHVyblt3ZV07aWYoX2UuZmxhZ3MmMzE0NTcyOClyZXR1cm4gZS5mbGF0TWFwKF9lLnR5cGVzLGZ1bmN0aW9uKEJyKXtyZXR1cm4gUmUoQnIsd2UsZGUpfSk7aWYoZS5nZXRPYmplY3RGbGFncyhfZSkmNCYmZS5nZXRPYmplY3RGbGFncyh3ZSkmNCl7dmFyIHllPWVlLmdldFR5cGVBcmd1bWVudHMoX2UpLEFlPWVlLmdldFR5cGVBcmd1bWVudHMod2UpLGVyPVtdO2lmKHllJiZBZSlmb3IodmFyIGlyPTA7aXI8eWUubGVuZ3RoO2lyKyspQWVbaXJdJiZlci5wdXNoLmFwcGx5KGVyLFJlKHllW2lyXSxBZVtpcl0sZGUpKTtyZXR1cm4gZXJ9dmFyIENyPWVlLmdldFNpZ25hdHVyZXNPZlR5cGUoX2UsMCksWWU9ZWUuZ2V0U2lnbmF0dXJlc09mVHlwZSh3ZSwwKTtyZXR1cm4gQ3IubGVuZ3RoPT09MSYmWWUubGVuZ3RoPT09MT96ZShDclswXSxZZVswXSxkZSk6W119ZnVuY3Rpb24gemUoX2Usd2UsZGUpe2Zvcih2YXIgeWU9W10sQWU9MDtBZTxfZS5wYXJhbWV0ZXJzLmxlbmd0aDtBZSsrKXt2YXIgZXI9X2UucGFyYW1ldGVyc1tBZV0saXI9d2UucGFyYW1ldGVyc1tBZV0sQ3I9X2UuZGVjbGFyYXRpb24mJmUuaXNSZXN0UGFyYW1ldGVyKF9lLmRlY2xhcmF0aW9uLnBhcmFtZXRlcnNbQWVdKTtpZighaXIpYnJlYWs7dmFyIFllPWVyLnZhbHVlRGVjbGFyYXRpb24/ZWUuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihlcixlci52YWx1ZURlY2xhcmF0aW9uKTplZS5nZXRBbnlUeXBlKCksQnI9Q3ImJmVlLmdldEVsZW1lbnRUeXBlT2ZBcnJheVR5cGUoWWUpO0JyJiYoWWU9QnIpO3ZhciBFcj1pci50eXBlfHwoaXIudmFsdWVEZWNsYXJhdGlvbj9lZS5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKGlyLGlyLnZhbHVlRGVjbGFyYXRpb24pOmVlLmdldEFueVR5cGUoKSk7eWUucHVzaC5hcHBseSh5ZSxSZShZZSxFcixkZSkpfXZhciBOZT1lZS5nZXRSZXR1cm5UeXBlT2ZTaWduYXR1cmUoX2UpLG49ZWUuZ2V0UmV0dXJuVHlwZU9mU2lnbmF0dXJlKHdlKTtyZXR1cm4geWUucHVzaC5hcHBseSh5ZSxSZShOZSxuLGRlKSkseWV9ZnVuY3Rpb24gRWUoX2Upe3JldHVybiBlZS5jcmVhdGVBbm9ueW1vdXNUeXBlKHZvaWQgMCxlLmNyZWF0ZVN5bWJvbFRhYmxlKCksW0hlKF9lKV0sZS5lbXB0eUFycmF5LGUuZW1wdHlBcnJheSl9ZnVuY3Rpb24gSGUoX2Upe2Zvcih2YXIgd2U9W10sZGU9TWF0aC5tYXguYXBwbHkoTWF0aCxfZS5tYXAoZnVuY3Rpb24oaXIpe3JldHVybiBpci5hcmd1bWVudFR5cGVzLmxlbmd0aH0pKSx5ZT1mdW5jdGlvbihpcil7dmFyIENyPWVlLmNyZWF0ZVN5bWJvbCgxLGUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKFwiYXJnXCIuY29uY2F0KGlyKSkpO0NyLnR5cGU9bmUoX2UubWFwKGZ1bmN0aW9uKFllKXtyZXR1cm4gWWUuYXJndW1lbnRUeXBlc1tpcl18fGVlLmdldFVuZGVmaW5lZFR5cGUoKX0pKSxfZS5zb21lKGZ1bmN0aW9uKFllKXtyZXR1cm4gWWUuYXJndW1lbnRUeXBlc1tpcl09PT12b2lkIDB9KSYmKENyLmZsYWdzfD0xNjc3NzIxNiksd2UucHVzaChDcil9LEFlPTA7QWU8ZGU7QWUrKyl5ZShBZSk7dmFyIGVyPWcoWChfZS5tYXAoZnVuY3Rpb24oaXIpe3JldHVybiBpci5yZXR1cm5ffSkpKTtyZXR1cm4gZWUuY3JlYXRlU2lnbmF0dXJlKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHdlLGVyLHZvaWQgMCxkZSwwKX1mdW5jdGlvbiBycihfZSx3ZSl7d2UmJiEod2UuZmxhZ3MmMSkmJiEod2UuZmxhZ3MmMTMxMDcyKSYmKF9lLmNhbmRpZGF0ZVR5cGVzfHwoX2UuY2FuZGlkYXRlVHlwZXM9W10pKS5wdXNoKHdlKX1mdW5jdGlvbiBJZShfZSx3ZSl7d2UmJiEod2UuZmxhZ3MmMSkmJiEod2UuZmxhZ3MmMTMxMDcyKSYmKF9lLmNhbmRpZGF0ZVRoaXNUeXBlc3x8KF9lLmNhbmRpZGF0ZVRoaXNUeXBlcz1bXSkpLnB1c2god2UpfX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiZml4UmV0dXJuVHlwZUluQXN5bmNGdW5jdGlvblwiLEI9W2UuRGlhZ25vc3RpY3MuVGhlX3JldHVybl90eXBlX29mX2FuX2FzeW5jX2Z1bmN0aW9uX29yX21ldGhvZF9tdXN0X2JlX3RoZV9nbG9iYWxfUHJvbWlzZV9UX3R5cGVfRGlkX3lvdV9tZWFuX3RvX3dyaXRlX1Byb21pc2VfMC5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGZpeElkczpbd10sZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7dmFyIHA9Ti5zb3VyY2VGaWxlLG09Ti5wcm9ncmFtLEc9Ti5zcGFuLG9lPW0uZ2V0VHlwZUNoZWNrZXIoKSxmPUUocCxtLmdldFR5cGVDaGVja2VyKCksRy5zdGFydCk7aWYoISFmKXt2YXIgVD1mLnJldHVyblR5cGVOb2RlLEs9Zi5yZXR1cm5UeXBlLGI9Zi5wcm9taXNlZFR5cGVOb2RlLHNlPWYucHJvbWlzZWRUeXBlLEo9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoTixmdW5jdGlvbihpZSl7cmV0dXJuIFEoaWUscCxULGIpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LEosW2UuRGlhZ25vc3RpY3MuUmVwbGFjZV8wX3dpdGhfUHJvbWlzZV8xLG9lLnR5cGVUb1N0cmluZyhLKSxvZS50eXBlVG9TdHJpbmcoc2UpXSx3LGUuRGlhZ25vc3RpY3MuRml4X2FsbF9pbmNvcnJlY3RfcmV0dXJuX3R5cGVfb2ZfYW5fYXN5bmNfZnVuY3Rpb25zKV19fSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7cmV0dXJuIEMuY29kZUZpeEFsbChsZSxCLGZ1bmN0aW9uKE4scCl7dmFyIG09RShwLmZpbGUsbGUucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLHAuc3RhcnQpO20mJlEoTixwLmZpbGUsbS5yZXR1cm5UeXBlTm9kZSxtLnByb21pc2VkVHlwZU5vZGUpfSl9fSk7ZnVuY3Rpb24gRShsZSxOLHApe2lmKCFlLmlzSW5KU0ZpbGUobGUpKXt2YXIgbT1lLmdldFRva2VuQXRQb3NpdGlvbihsZSxwKSxHPWUuZmluZEFuY2VzdG9yKG0sZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKSxvZT1HPT1udWxsP3ZvaWQgMDpHLnR5cGU7aWYoISFvZSl7dmFyIGY9Ti5nZXRUeXBlRnJvbVR5cGVOb2RlKG9lKSxUPU4uZ2V0QXdhaXRlZFR5cGUoZil8fE4uZ2V0Vm9pZFR5cGUoKSxLPU4udHlwZVRvVHlwZU5vZGUoVCxvZSx2b2lkIDApO2lmKEspcmV0dXJue3JldHVyblR5cGVOb2RlOm9lLHJldHVyblR5cGU6Zixwcm9taXNlZFR5cGVOb2RlOksscHJvbWlzZWRUeXBlOlR9fX19ZnVuY3Rpb24gUShsZSxOLHAsbSl7bGUucmVwbGFjZU5vZGUoTixwLGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShcIlByb21pc2VcIixbbV0pKX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiZGlzYWJsZUpzRGlhZ25vc3RpY3NcIixCPVwiZGlzYWJsZUpzRGlhZ25vc3RpY3NcIixFPWUubWFwRGVmaW5lZChPYmplY3Qua2V5cyhlLkRpYWdub3N0aWNzKSxmdW5jdGlvbihsZSl7dmFyIE49ZS5EaWFnbm9zdGljc1tsZV07cmV0dXJuIE4uY2F0ZWdvcnk9PT1lLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcj9OLmNvZGU6dm9pZCAwfSk7Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6RSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihOKXt2YXIgcD1OLnNvdXJjZUZpbGUsbT1OLnByb2dyYW0sRz1OLnNwYW4sb2U9Ti5ob3N0LGY9Ti5mb3JtYXRDb250ZXh0O2lmKCEoIWUuaXNJbkpTRmlsZShwKXx8IWUuaXNDaGVja0pzRW5hYmxlZEZvckZpbGUocCxtLmdldENvbXBpbGVyT3B0aW9ucygpKSkpe3ZhciBUPXAuY2hlY2tKc0RpcmVjdGl2ZT9cIlwiOmUuZ2V0TmV3TGluZU9yRGVmYXVsdEZyb21Ib3N0KG9lLGYub3B0aW9ucyksSz1bQy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbCh3LFtDLmNyZWF0ZUZpbGVUZXh0Q2hhbmdlcyhwLmZpbGVOYW1lLFtlLmNyZWF0ZVRleHRDaGFuZ2UocC5jaGVja0pzRGlyZWN0aXZlP2UuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKHAuY2hlY2tKc0RpcmVjdGl2ZS5wb3MscC5jaGVja0pzRGlyZWN0aXZlLmVuZCk6ZS5jcmVhdGVUZXh0U3BhbigwLDApLFwiLy8gQHRzLW5vY2hlY2tcIi5jb25jYXQoVCkpXSldLGUuRGlhZ25vc3RpY3MuRGlzYWJsZV9jaGVja2luZ19mb3JfdGhpc19maWxlKV07cmV0dXJuIGUudGV4dENoYW5nZXMuaXNWYWxpZExvY2F0aW9uVG9BZGRDb21tZW50KHAsRy5zdGFydCkmJksudW5zaGlmdChDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChOLGZ1bmN0aW9uKGIpe3JldHVybiBRKGIscCxHLnN0YXJ0KX0pLGUuRGlhZ25vc3RpY3MuSWdub3JlX3RoaXNfZXJyb3JfbWVzc2FnZSxCLGUuRGlhZ25vc3RpY3MuQWRkX3RzX2lnbm9yZV90b19hbGxfZXJyb3JfbWVzc2FnZXMpKSxLfX0sZml4SWRzOltCXSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7dmFyIE49bmV3IGUuU2V0O3JldHVybiBDLmNvZGVGaXhBbGwobGUsRSxmdW5jdGlvbihwLG0pe2UudGV4dENoYW5nZXMuaXNWYWxpZExvY2F0aW9uVG9BZGRDb21tZW50KG0uZmlsZSxtLnN0YXJ0KSYmUShwLG0uZmlsZSxtLnN0YXJ0LE4pfSl9fSk7ZnVuY3Rpb24gUShsZSxOLHAsbSl7dmFyIEc9ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihOLHApLmxpbmU7KCFtfHxlLnRyeUFkZFRvU2V0KG0sRykpJiZsZS5pbnNlcnRDb21tZW50QmVmb3JlTGluZShOLEcscCxcIiBAdHMtaWdub3JlXCIpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyhlZSxoZSxGLHgsWCwkLEEpe2Zvcih2YXIgeT1lZS5zeW1ib2wubWVtYmVycyxWPTAsTD1oZTtWPEwubGVuZ3RoO1YrKyl7dmFyIFA9TFtWXTt5LmhhcyhQLmVzY2FwZWROYW1lKXx8UShQLGVlLEYseCxYLCQsQSx2b2lkIDApfX1DLmNyZWF0ZU1pc3NpbmdNZW1iZXJOb2Rlcz13O2Z1bmN0aW9uIEIoZWUpe3JldHVybnt0cmFja1N5bWJvbDpmdW5jdGlvbigpe3JldHVybiExfSxtb2R1bGVSZXNvbHZlckhvc3Q6ZS5nZXRNb2R1bGVTcGVjaWZpZXJSZXNvbHZlckhvc3QoZWUucHJvZ3JhbSxlZS5ob3N0KX19Qy5nZXROb29wU3ltYm9sVHJhY2tlcldpdGhSZXNvbHZlcj1CO3ZhciBFOyhmdW5jdGlvbihlZSl7ZWVbZWUuTWV0aG9kPTFdPVwiTWV0aG9kXCIsZWVbZWUuUHJvcGVydHk9Ml09XCJQcm9wZXJ0eVwiLGVlW2VlLkFsbD0zXT1cIkFsbFwifSkoRT1DLlByZXNlcnZlT3B0aW9uYWxGbGFnc3x8KEMuUHJlc2VydmVPcHRpb25hbEZsYWdzPXt9KSk7ZnVuY3Rpb24gUShlZSxoZSxGLHgsWCwkLEEseSxWLEwpe1Y9PT12b2lkIDAmJihWPTMpLEw9PT12b2lkIDAmJihMPSExKTt2YXIgUD1lZS5nZXREZWNsYXJhdGlvbnMoKTtpZighKFAmJlAubGVuZ3RoKSlyZXR1cm47dmFyIGs9eC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksWT1lLmdldEVtaXRTY3JpcHRUYXJnZXQoeC5wcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpKSxVPVBbMF0saj1lLmdldFN5bnRoZXNpemVkRGVlcENsb25lKGUuZ2V0TmFtZU9mRGVjbGFyYXRpb24oVSksITEpLEg9YihlLmdldEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MoVSkpLEk9SD9lLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KFtIXSk6dm9pZCAwLGw9ay5nZXRXaWRlbmVkVHlwZShrLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oZWUsaGUpKSxkPSEhKGVlLmZsYWdzJjE2Nzc3MjE2KSxEPSEhKGhlLmZsYWdzJjE2Nzc3MjE2KXx8TCxmZT1lLmdldFF1b3RlUHJlZmVyZW5jZShGLFgpO3N3aXRjaChVLmtpbmQpe2Nhc2UgMTY2OmNhc2UgMTY3OnZhciBnPWZlPT09MD8yNjg0MzU0NTY6dm9pZCAwLG5lPWsudHlwZVRvVHlwZU5vZGUobCxoZSxnLEIoeCkpO2lmKCQpe3ZhciB1ZT1xKG5lLFkpO3VlJiYobmU9dWUudHlwZU5vZGUsdmUoJCx1ZS5zeW1ib2xzKSl9QShlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlEZWNsYXJhdGlvbih2b2lkIDAsSSxqLGQmJlYmMj9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpOnZvaWQgMCxuZSx2b2lkIDApKTticmVhaztjYXNlIDE3MjpjYXNlIDE3Mzp7dmFyIFdlPWsudHlwZVRvVHlwZU5vZGUobCxoZSx2b2lkIDAsQih4KSksRmU9ZS5nZXRBbGxBY2Nlc3NvckRlY2xhcmF0aW9ucyhQLFUpLFo9RmUuc2Vjb25kQWNjZXNzb3I/W0ZlLmZpcnN0QWNjZXNzb3IsRmUuc2Vjb25kQWNjZXNzb3JdOltGZS5maXJzdEFjY2Vzc29yXTtpZigkKXt2YXIgdWU9cShXZSxZKTt1ZSYmKFdlPXVlLnR5cGVOb2RlLHZlKCQsdWUuc3ltYm9scykpfWZvcih2YXIgQmU9MCxnZT1aO0JlPGdlLmxlbmd0aDtCZSsrKXt2YXIgUmU9Z2VbQmVdO2lmKGUuaXNHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKFJlKSlBKGUuZmFjdG9yeS5jcmVhdGVHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHZvaWQgMCxJLGosZS5lbXB0eUFycmF5LFdlLEQ/dm9pZCAwOnl8fFQoZmUpKSk7ZWxzZXtlLkRlYnVnLmFzc2VydE5vZGUoUmUsZS5pc1NldEFjY2Vzc29yRGVjbGFyYXRpb24sXCJUaGUgY291bnRlcnBhcnQgdG8gYSBnZXR0ZXIgc2hvdWxkIGJlIGEgc2V0dGVyXCIpO3ZhciB6ZT1lLmdldFNldEFjY2Vzc29yVmFsdWVQYXJhbWV0ZXIoUmUpLEVlPXplJiZlLmlzSWRlbnRpZmllcih6ZS5uYW1lKT9lLmlkVGV4dCh6ZS5uYW1lKTp2b2lkIDA7QShlLmZhY3RvcnkuY3JlYXRlU2V0QWNjZXNzb3JEZWNsYXJhdGlvbih2b2lkIDAsSSxqLG0oMSxbRWVdLFtXZV0sMSwhMSksRD92b2lkIDA6eXx8VChmZSkpKX19YnJlYWt9Y2FzZSAxNjg6Y2FzZSAxNjk6dmFyIEhlPWsuZ2V0U2lnbmF0dXJlc09mVHlwZShsLDApO2lmKCFlLnNvbWUoSGUpKWJyZWFrO2lmKFAubGVuZ3RoPT09MSl7ZS5EZWJ1Zy5hc3NlcnQoSGUubGVuZ3RoPT09MSxcIk9uZSBkZWNsYXJhdGlvbiBpbXBsaWVzIG9uZSBzaWduYXR1cmVcIik7dmFyIHJyPUhlWzBdO3dlKGZlLHJyLEksaixEP3ZvaWQgMDp5fHxUKGZlKSk7YnJlYWt9Zm9yKHZhciBJZT0wLF9lPUhlO0llPF9lLmxlbmd0aDtJZSsrKXt2YXIgcnI9X2VbSWVdO3dlKGZlLHJyLGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmVzKEksITEpLGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoaiwhMSkpfWlmKCFEKWlmKFAubGVuZ3RoPkhlLmxlbmd0aCl7dmFyIHJyPWsuZ2V0U2lnbmF0dXJlRnJvbURlY2xhcmF0aW9uKFBbUC5sZW5ndGgtMV0pO3dlKGZlLHJyLEksaix5fHxUKGZlKSl9ZWxzZSBlLkRlYnVnLmFzc2VydChQLmxlbmd0aD09PUhlLmxlbmd0aCxcIkRlY2xhcmF0aW9ucyBhbmQgc2lnbmF0dXJlcyBzaG91bGQgbWF0Y2ggY291bnRcIiksQShHKGsseCxoZSxIZSxqLGQmJiEhKFYmMSksSSxmZSx5KSk7YnJlYWt9ZnVuY3Rpb24gd2UoZGUseWUsQWUsZXIsaXIpe3ZhciBDcj1sZSgxNjkseCxkZSx5ZSxpcixlcixBZSxkJiYhIShWJjEpLGhlLCQpO0NyJiZBKENyKX19Qy5hZGROZXdOb2RlRm9yTWVtYmVyU3ltYm9sPVE7ZnVuY3Rpb24gbGUoZWUsaGUsRix4LFgsJCxBLHksVixMKXt2YXIgUD1oZS5wcm9ncmFtLGs9UC5nZXRUeXBlQ2hlY2tlcigpLFk9ZS5nZXRFbWl0U2NyaXB0VGFyZ2V0KFAuZ2V0Q29tcGlsZXJPcHRpb25zKCkpLFU9NTI0NTQ1fChGPT09MD8yNjg0MzU0NTY6MCksaj1rLnNpZ25hdHVyZVRvU2lnbmF0dXJlRGVjbGFyYXRpb24oeCxlZSxWLFUsQihoZSkpO2lmKCEhail7dmFyIEg9ai50eXBlUGFyYW1ldGVycyxJPWoucGFyYW1ldGVycyxsPWoudHlwZTtpZihMKXtpZihIKXt2YXIgZD1lLnNhbWVNYXAoSCxmdW5jdGlvbih1ZSl7dmFyIFdlPXVlLmNvbnN0cmFpbnQsRmU9dWUuZGVmYXVsdDtpZihXZSl7dmFyIFo9cShXZSxZKTtaJiYoV2U9Wi50eXBlTm9kZSx2ZShMLFouc3ltYm9scykpfWlmKEZlKXt2YXIgWj1xKEZlLFkpO1omJihGZT1aLnR5cGVOb2RlLHZlKEwsWi5zeW1ib2xzKSl9cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24odWUsdWUubW9kaWZpZXJzLHVlLm5hbWUsV2UsRmUpfSk7SCE9PWQmJihIPWUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoZCxILmhhc1RyYWlsaW5nQ29tbWEpLEgpKX12YXIgRD1lLnNhbWVNYXAoSSxmdW5jdGlvbih1ZSl7dmFyIFdlPXEodWUudHlwZSxZKSxGZT11ZS50eXBlO3JldHVybiBXZSYmKEZlPVdlLnR5cGVOb2RlLHZlKEwsV2Uuc3ltYm9scykpLGUuZmFjdG9yeS51cGRhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih1ZSx1ZS5kZWNvcmF0b3JzLHVlLm1vZGlmaWVycyx1ZS5kb3REb3REb3RUb2tlbix1ZS5uYW1lLHVlLnF1ZXN0aW9uVG9rZW4sRmUsdWUuaW5pdGlhbGl6ZXIpfSk7aWYoSSE9PUQmJihJPWUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoRCxJLmhhc1RyYWlsaW5nQ29tbWEpLEkpKSxsKXt2YXIgZmU9cShsLFkpO2ZlJiYobD1mZS50eXBlTm9kZSx2ZShMLGZlLnN5bWJvbHMpKX19dmFyIGc9eT9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpOnZvaWQgMCxuZT1qLmFzdGVyaXNrVG9rZW47aWYoZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbihqKSlyZXR1cm4gZS5mYWN0b3J5LnVwZGF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihqLEEsai5hc3Rlcmlza1Rva2VuLGUudHJ5Q2FzdCgkLGUuaXNJZGVudGlmaWVyKSxILEksbCxYIT1udWxsP1g6ai5ib2R5KTtpZihlLmlzQXJyb3dGdW5jdGlvbihqKSlyZXR1cm4gZS5mYWN0b3J5LnVwZGF0ZUFycm93RnVuY3Rpb24oaixBLEgsSSxsLGouZXF1YWxzR3JlYXRlclRoYW5Ub2tlbixYIT1udWxsP1g6ai5ib2R5KTtpZihlLmlzTWV0aG9kRGVjbGFyYXRpb24oaikpcmV0dXJuIGUuZmFjdG9yeS51cGRhdGVNZXRob2REZWNsYXJhdGlvbihqLHZvaWQgMCxBLG5lLCQhPW51bGw/JDplLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcIlwiKSxnLEgsSSxsLFgpfX1DLmNyZWF0ZVNpZ25hdHVyZURlY2xhcmF0aW9uRnJvbVNpZ25hdHVyZT1sZTtmdW5jdGlvbiBOKGVlLGhlLEYseCxYLCQsQSl7dmFyIHk9ZS5nZXRRdW90ZVByZWZlcmVuY2UoaGUuc291cmNlRmlsZSxoZS5wcmVmZXJlbmNlcyksVj1lLmdldEVtaXRTY3JpcHRUYXJnZXQoaGUucHJvZ3JhbS5nZXRDb21waWxlck9wdGlvbnMoKSksTD1CKGhlKSxQPWhlLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSxrPWUuaXNJbkpTRmlsZShBKSxZPXgudHlwZUFyZ3VtZW50cyxVPXguYXJndW1lbnRzLGo9eC5wYXJlbnQsSD1rP3ZvaWQgMDpQLmdldENvbnRleHR1YWxUeXBlKHgpLEk9ZS5tYXAoVSxmdW5jdGlvbih1ZSl7cmV0dXJuIGUuaXNJZGVudGlmaWVyKHVlKT91ZS50ZXh0OmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24odWUpJiZlLmlzSWRlbnRpZmllcih1ZS5uYW1lKT91ZS5uYW1lLnRleHQ6dm9pZCAwfSksbD1rP1tdOmUubWFwKFUsZnVuY3Rpb24odWUpe3JldHVybiBwKFAsRixQLmdldEJhc2VUeXBlT2ZMaXRlcmFsVHlwZShQLmdldFR5cGVBdExvY2F0aW9uKHVlKSksQSxWLHZvaWQgMCxMKX0pLGQ9JD9lLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KGUuZmFjdG9yeS5jcmVhdGVNb2RpZmllcnNGcm9tTW9kaWZpZXJGbGFncygkKSk6dm9pZCAwLEQ9ZS5pc1lpZWxkRXhwcmVzc2lvbihqKT9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNDEpOnZvaWQgMCxmZT1rfHxZPT09dm9pZCAwP3ZvaWQgMDplLm1hcChZLGZ1bmN0aW9uKHVlLFdlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsODQrWS5sZW5ndGgtMTw9OTA/U3RyaW5nLmZyb21DaGFyQ29kZSg4NCtXZSk6XCJUXCIuY29uY2F0KFdlKSl9KSxnPW0oVS5sZW5ndGgsSSxsLHZvaWQgMCxrKSxuZT1rfHxIPT09dm9pZCAwP3ZvaWQgMDpQLnR5cGVUb1R5cGVOb2RlKEgsQSx2b2lkIDAsTCk7c3dpdGNoKGVlKXtjYXNlIDE2OTpyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZU1ldGhvZERlY2xhcmF0aW9uKHZvaWQgMCxkLEQsWCx2b2lkIDAsZmUsZyxuZSxUKHkpKTtjYXNlIDE2ODpyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZU1ldGhvZFNpZ25hdHVyZShkLFgsdm9pZCAwLGZlLGcsbmUpO2Nhc2UgMjU2OnJldHVybiBlLmZhY3RvcnkuY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbih2b2lkIDAsZCxELFgsZmUsZyxuZSxLKGUuRGlhZ25vc3RpY3MuRnVuY3Rpb25fbm90X2ltcGxlbWVudGVkLm1lc3NhZ2UseSkpO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsKFwiVW5leHBlY3RlZCBraW5kXCIpfX1DLmNyZWF0ZVNpZ25hdHVyZURlY2xhcmF0aW9uRnJvbUNhbGxFeHByZXNzaW9uPU47ZnVuY3Rpb24gcChlZSxoZSxGLHgsWCwkLEEpe3ZhciB5PWVlLnR5cGVUb1R5cGVOb2RlKEYseCwkLEEpO2lmKHkmJmUuaXNJbXBvcnRUeXBlTm9kZSh5KSl7dmFyIFY9cSh5LFgpO1YmJih2ZShoZSxWLnN5bWJvbHMpLHk9Vi50eXBlTm9kZSl9cmV0dXJuIGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoeSl9Qy50eXBlVG9BdXRvSW1wb3J0YWJsZVR5cGVOb2RlPXA7ZnVuY3Rpb24gbShlZSxoZSxGLHgsWCl7Zm9yKHZhciAkPVtdLEE9MDtBPGVlO0ErKyl7dmFyIHk9ZS5mYWN0b3J5LmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGhlJiZoZVtBXXx8XCJhcmdcIi5jb25jYXQoQSkseCE9PXZvaWQgMCYmQT49eD9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpOnZvaWQgMCxYP3ZvaWQgMDpGJiZGW0FdfHxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1NSksdm9pZCAwKTskLnB1c2goeSl9cmV0dXJuICR9ZnVuY3Rpb24gRyhlZSxoZSxGLHgsWCwkLEEseSxWKXtmb3IodmFyIEw9eFswXSxQPXhbMF0ubWluQXJndW1lbnRDb3VudCxrPSExLFk9MCxVPXg7WTxVLmxlbmd0aDtZKyspe3ZhciBqPVVbWV07UD1NYXRoLm1pbihqLm1pbkFyZ3VtZW50Q291bnQsUCksZS5zaWduYXR1cmVIYXNSZXN0UGFyYW1ldGVyKGopJiYoaz0hMCksai5wYXJhbWV0ZXJzLmxlbmd0aD49TC5wYXJhbWV0ZXJzLmxlbmd0aCYmKCFlLnNpZ25hdHVyZUhhc1Jlc3RQYXJhbWV0ZXIoail8fGUuc2lnbmF0dXJlSGFzUmVzdFBhcmFtZXRlcihMKSkmJihMPWopfXZhciBIPUwucGFyYW1ldGVycy5sZW5ndGgtKGUuc2lnbmF0dXJlSGFzUmVzdFBhcmFtZXRlcihMKT8xOjApLEk9TC5wYXJhbWV0ZXJzLm1hcChmdW5jdGlvbihEKXtyZXR1cm4gRC5uYW1lfSksbD1tKEgsSSx2b2lkIDAsUCwhMSk7aWYoayl7dmFyIGQ9ZS5mYWN0b3J5LmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDI1KSxJW0hdfHxcInJlc3RcIixIPj1QP2UuZmFjdG9yeS5jcmVhdGVUb2tlbig1Nyk6dm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVBcnJheVR5cGVOb2RlKGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTU1KSksdm9pZCAwKTtsLnB1c2goZCl9cmV0dXJuIGYoQSxYLCQsdm9pZCAwLGwsb2UoeCxlZSxoZSxGKSx5LFYpfWZ1bmN0aW9uIG9lKGVlLGhlLEYseCl7aWYoZS5sZW5ndGgoZWUpKXt2YXIgWD1oZS5nZXRVbmlvblR5cGUoZS5tYXAoZWUsaGUuZ2V0UmV0dXJuVHlwZU9mU2lnbmF0dXJlKSk7cmV0dXJuIGhlLnR5cGVUb1R5cGVOb2RlKFgseCx2b2lkIDAsQihGKSl9fWZ1bmN0aW9uIGYoZWUsaGUsRix4LFgsJCxBLHkpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlTWV0aG9kRGVjbGFyYXRpb24odm9pZCAwLGVlLHZvaWQgMCxoZSxGP2UuZmFjdG9yeS5jcmVhdGVUb2tlbig1Nyk6dm9pZCAwLHgsWCwkLHl8fFQoQSkpfWZ1bmN0aW9uIFQoZWUpe3JldHVybiBLKGUuRGlhZ25vc3RpY3MuTWV0aG9kX25vdF9pbXBsZW1lbnRlZC5tZXNzYWdlLGVlKX1mdW5jdGlvbiBLKGVlLGhlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKFtlLmZhY3RvcnkuY3JlYXRlVGhyb3dTdGF0ZW1lbnQoZS5mYWN0b3J5LmNyZWF0ZU5ld0V4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXCJFcnJvclwiKSx2b2lkIDAsW2UuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKGVlLGhlPT09MCldKSldLCEwKX1DLmNyZWF0ZVN0dWJiZWRCb2R5PUs7ZnVuY3Rpb24gYihlZSl7aWYoZWUmNClyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDEyMyk7aWYoZWUmMTYpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUb2tlbigxMjIpfWZ1bmN0aW9uIHNlKGVlLGhlLEYpe3ZhciB4PWUuZ2V0VHNDb25maWdPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihoZSk7aWYoISF4KXt2YXIgWD1SKHgsXCJjb21waWxlck9wdGlvbnNcIik7aWYoWD09PXZvaWQgMCl7ZWUuaW5zZXJ0Tm9kZUF0T2JqZWN0U3RhcnQoaGUseCxpZShcImNvbXBpbGVyT3B0aW9uc1wiLGUuZmFjdG9yeS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihGLm1hcChmdW5jdGlvbihZKXt2YXIgVT1ZWzBdLGo9WVsxXTtyZXR1cm4gaWUoVSxqKX0pLCEwKSkpO3JldHVybn12YXIgJD1YLmluaXRpYWxpemVyO2lmKCEhZS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKCQpKWZvcih2YXIgQT0wLHk9RjtBPHkubGVuZ3RoO0ErKyl7dmFyIFY9eVtBXSxMPVZbMF0sUD1WWzFdLGs9UigkLEwpO2s9PT12b2lkIDA/ZWUuaW5zZXJ0Tm9kZUF0T2JqZWN0U3RhcnQoaGUsJCxpZShMLFApKTplZS5yZXBsYWNlTm9kZShoZSxrLmluaXRpYWxpemVyLFApfX19Qy5zZXRKc29uQ29tcGlsZXJPcHRpb25WYWx1ZXM9c2U7ZnVuY3Rpb24gSihlZSxoZSxGLHgpe3NlKGVlLGhlLFtbRix4XV0pfUMuc2V0SnNvbkNvbXBpbGVyT3B0aW9uVmFsdWU9SjtmdW5jdGlvbiBpZShlZSxoZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoZWUpLGhlKX1DLmNyZWF0ZUpzb25Qcm9wZXJ0eUFzc2lnbm1lbnQ9aWU7ZnVuY3Rpb24gUihlZSxoZSl7cmV0dXJuIGUuZmluZChlZS5wcm9wZXJ0aWVzLGZ1bmN0aW9uKEYpe3JldHVybiBlLmlzUHJvcGVydHlBc3NpZ25tZW50KEYpJiYhIUYubmFtZSYmZS5pc1N0cmluZ0xpdGVyYWwoRi5uYW1lKSYmRi5uYW1lLnRleHQ9PT1oZX0pfUMuZmluZEpzb25Qcm9wZXJ0eT1SO2Z1bmN0aW9uIHEoZWUsaGUpe3ZhciBGLHg9ZS52aXNpdE5vZGUoZWUsWCk7aWYoRiYmeClyZXR1cm57dHlwZU5vZGU6eCxzeW1ib2xzOkZ9O2Z1bmN0aW9uIFgoJCl7dmFyIEE7aWYoZS5pc0xpdGVyYWxJbXBvcnRUeXBlTm9kZSgkKSYmJC5xdWFsaWZpZXIpe3ZhciB5PWUuZ2V0Rmlyc3RJZGVudGlmaWVyKCQucXVhbGlmaWVyKSxWPWUuZ2V0TmFtZUZvckV4cG9ydGVkU3ltYm9sKHkuc3ltYm9sLGhlKSxMPVYhPT15LnRleHQ/TygkLnF1YWxpZmllcixlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihWKSk6JC5xdWFsaWZpZXI7Rj1lLmFwcGVuZChGLHkuc3ltYm9sKTt2YXIgUD0oQT0kLnR5cGVBcmd1bWVudHMpPT09bnVsbHx8QT09PXZvaWQgMD92b2lkIDA6QS5tYXAoWCk7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShMLFApfXJldHVybiBlLnZpc2l0RWFjaENoaWxkKCQsWCxlLm51bGxUcmFuc2Zvcm1hdGlvbkNvbnRleHQpfX1DLnRyeUdldEF1dG9JbXBvcnRhYmxlUmVmZXJlbmNlRnJvbVR5cGVOb2RlPXE7ZnVuY3Rpb24gTyhlZSxoZSl7cmV0dXJuIGVlLmtpbmQ9PT03OT9oZTplLmZhY3RvcnkuY3JlYXRlUXVhbGlmaWVkTmFtZShPKGVlLmxlZnQsaGUpLGVlLnJpZ2h0KX1mdW5jdGlvbiB2ZShlZSxoZSl7aGUuZm9yRWFjaChmdW5jdGlvbihGKXtyZXR1cm4gZWUuYWRkSW1wb3J0RnJvbUV4cG9ydGVkU3ltYm9sKEYsITApfSl9Qy5pbXBvcnRTeW1ib2xzPXZlfSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXtmdW5jdGlvbiB3KFIscSxPLHZlLGVlLGhlKXt2YXIgRj1tKFIscSxPLHZlKTtpZighKCFGfHxlLnJlZmFjdG9yLmlzUmVmYWN0b3JFcnJvckluZm8oRikpKXt2YXIgeD1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIuZnJvbUNvbnRleHQoZWUpLFg9Ri5pc1N0YXRpYywkPUYuaXNSZWFkb25seSxBPUYuZmllbGROYW1lLHk9Ri5hY2Nlc3Nvck5hbWUsVj1GLm9yaWdpbmFsTmFtZSxMPUYudHlwZSxQPUYuY29udGFpbmVyLGs9Ri5kZWNsYXJhdGlvbjtlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKEEpLGUuc3VwcHJlc3NMZWFkaW5nQW5kVHJhaWxpbmdUcml2aWEoeSksZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShrKSxlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKFApO3ZhciBZLFU7aWYoZS5pc0NsYXNzTGlrZShQKSl7dmFyIGo9ZS5nZXRFZmZlY3RpdmVNb2RpZmllckZsYWdzKGspO2lmKGUuaXNTb3VyY2VGaWxlSlMoUikpe3ZhciBIPWUuY3JlYXRlTW9kaWZpZXJzKGopO1k9SCxVPUh9ZWxzZSBZPWUuY3JlYXRlTW9kaWZpZXJzKE4oaikpLFU9ZS5jcmVhdGVNb2RpZmllcnMocChqKSl9Syh4LFIsayxMLEEsVSk7dmFyIEk9RyhBLHksTCxZLFgsUCk7aWYoZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShJKSxiKHgsUixJLGssUCksJCl7dmFyIGw9ZS5nZXRGaXJzdENvbnN0cnVjdG9yV2l0aEJvZHkoUCk7bCYmc2UoeCxSLGwsQS50ZXh0LFYpfWVsc2V7dmFyIGQ9b2UoQSx5LEwsWSxYLFApO2Uuc3VwcHJlc3NMZWFkaW5nQW5kVHJhaWxpbmdUcml2aWEoZCksYih4LFIsZCxrLFApfXJldHVybiB4LmdldENoYW5nZXMoKX19Qy5nZW5lcmF0ZUFjY2Vzc29yRnJvbVByb3BlcnR5PXc7ZnVuY3Rpb24gQihSKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoUil8fGUuaXNTdHJpbmdMaXRlcmFsKFIpfWZ1bmN0aW9uIEUoUil7cmV0dXJuIGUuaXNQYXJhbWV0ZXJQcm9wZXJ0eURlY2xhcmF0aW9uKFIsUi5wYXJlbnQpfHxlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihSKXx8ZS5pc1Byb3BlcnR5QXNzaWdubWVudChSKX1mdW5jdGlvbiBRKFIscSl7cmV0dXJuIGUuaXNJZGVudGlmaWVyKHEpP2UuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFIpOmUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKFIpfWZ1bmN0aW9uIGxlKFIscSxPKXt2YXIgdmU9cT9PLm5hbWU6ZS5mYWN0b3J5LmNyZWF0ZVRoaXMoKTtyZXR1cm4gZS5pc0lkZW50aWZpZXIoUik/ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih2ZSxSKTplLmZhY3RvcnkuY3JlYXRlRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24odmUsZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZShSKSl9ZnVuY3Rpb24gTihSKXtyZXR1cm4gUiY9LTY1LFImPS05LFImMTZ8fChSfD00KSxSfWZ1bmN0aW9uIHAoUil7cmV0dXJuIFImPS01LFImPS0xNyxSfD04LFJ9ZnVuY3Rpb24gbShSLHEsTyx2ZSxlZSl7ZWU9PT12b2lkIDAmJihlZT0hMCk7dmFyIGhlPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKFIsTyksRj1PPT09dmUmJmVlLHg9ZS5maW5kQW5jZXN0b3IoaGUucGFyZW50LEUpLFg9MTI0O2lmKCF4fHwhKGUubm9kZU92ZXJsYXBzV2l0aFN0YXJ0RW5kKHgubmFtZSxSLE8sdmUpfHxGKSlyZXR1cm57ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9wcm9wZXJ0eV9mb3Jfd2hpY2hfdG9fZ2VuZXJhdGVfYWNjZXNzb3IpfTtpZighQih4Lm5hbWUpKXJldHVybntlcnJvcjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLk5hbWVfaXNfbm90X3ZhbGlkKX07aWYoKGUuZ2V0RWZmZWN0aXZlTW9kaWZpZXJGbGFncyh4KXxYKSE9PVgpcmV0dXJue2Vycm9yOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ2FuX29ubHlfY29udmVydF9wcm9wZXJ0eV93aXRoX21vZGlmaWVyKX07dmFyICQ9eC5uYW1lLnRleHQsQT1lLnN0YXJ0c1dpdGhVbmRlcnNjb3JlKCQpLHk9UShBPyQ6ZS5nZXRVbmlxdWVOYW1lKFwiX1wiLmNvbmNhdCgkKSxSKSx4Lm5hbWUpLFY9UShBP2UuZ2V0VW5pcXVlTmFtZSgkLnN1YnN0cmluZygxKSxSKTokLHgubmFtZSk7cmV0dXJue2lzU3RhdGljOmUuaGFzU3RhdGljTW9kaWZpZXIoeCksaXNSZWFkb25seTplLmhhc0VmZmVjdGl2ZVJlYWRvbmx5TW9kaWZpZXIoeCksdHlwZTpKKHgscSksY29udGFpbmVyOngua2luZD09PTE2ND94LnBhcmVudC5wYXJlbnQ6eC5wYXJlbnQsb3JpZ2luYWxOYW1lOngubmFtZS50ZXh0LGRlY2xhcmF0aW9uOngsZmllbGROYW1lOnksYWNjZXNzb3JOYW1lOlYscmVuYW1lQWNjZXNzb3I6QX19Qy5nZXRBY2Nlc3NvckNvbnZlcnRpYmxlUHJvcGVydHlBdFBvc2l0aW9uPW07ZnVuY3Rpb24gRyhSLHEsTyx2ZSxlZSxoZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHZvaWQgMCx2ZSxxLHZvaWQgMCxPLGUuZmFjdG9yeS5jcmVhdGVCbG9jayhbZS5mYWN0b3J5LmNyZWF0ZVJldHVyblN0YXRlbWVudChsZShSLGVlLGhlKSldLCEwKSl9ZnVuY3Rpb24gb2UoUixxLE8sdmUsZWUsaGUpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlU2V0QWNjZXNzb3JEZWNsYXJhdGlvbih2b2lkIDAsdmUscSxbZS5mYWN0b3J5LmNyZWF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwidmFsdWVcIiksdm9pZCAwLE8pXSxlLmZhY3RvcnkuY3JlYXRlQmxvY2soW2UuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGUuZmFjdG9yeS5jcmVhdGVBc3NpZ25tZW50KGxlKFIsZWUsaGUpLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwidmFsdWVcIikpKV0sITApKX1mdW5jdGlvbiBmKFIscSxPLHZlLGVlLGhlKXt2YXIgRj1lLmZhY3RvcnkudXBkYXRlUHJvcGVydHlEZWNsYXJhdGlvbihPLE8uZGVjb3JhdG9ycyxoZSxlZSxPLnF1ZXN0aW9uVG9rZW58fE8uZXhjbGFtYXRpb25Ub2tlbix2ZSxPLmluaXRpYWxpemVyKTtSLnJlcGxhY2VOb2RlKHEsTyxGKX1mdW5jdGlvbiBUKFIscSxPLHZlKXt2YXIgZWU9ZS5mYWN0b3J5LnVwZGF0ZVByb3BlcnR5QXNzaWdubWVudChPLHZlLE8uaW5pdGlhbGl6ZXIpO1IucmVwbGFjZVByb3BlcnR5QXNzaWdubWVudChxLE8sZWUpfWZ1bmN0aW9uIEsoUixxLE8sdmUsZWUsaGUpe2UuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKE8pP2YoUixxLE8sdmUsZWUsaGUpOmUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQoTyk/VChSLHEsTyxlZSk6Ui5yZXBsYWNlTm9kZShxLE8sZS5mYWN0b3J5LnVwZGF0ZVBhcmFtZXRlckRlY2xhcmF0aW9uKE8sTy5kZWNvcmF0b3JzLGhlLE8uZG90RG90RG90VG9rZW4sZS5jYXN0KGVlLGUuaXNJZGVudGlmaWVyKSxPLnF1ZXN0aW9uVG9rZW4sTy50eXBlLE8uaW5pdGlhbGl6ZXIpKX1mdW5jdGlvbiBiKFIscSxPLHZlLGVlKXtlLmlzUGFyYW1ldGVyUHJvcGVydHlEZWNsYXJhdGlvbih2ZSx2ZS5wYXJlbnQpP1IuaW5zZXJ0TWVtYmVyQXRTdGFydChxLGVlLE8pOmUuaXNQcm9wZXJ0eUFzc2lnbm1lbnQodmUpP1IuaW5zZXJ0Tm9kZUFmdGVyQ29tbWEocSx2ZSxPKTpSLmluc2VydE5vZGVBZnRlcihxLHZlLE8pfWZ1bmN0aW9uIHNlKFIscSxPLHZlLGVlKXshTy5ib2R5fHxPLmJvZHkuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIGhlKEYpe2UuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihGKSYmRi5leHByZXNzaW9uLmtpbmQ9PT0xMDgmJmUuaXNTdHJpbmdMaXRlcmFsKEYuYXJndW1lbnRFeHByZXNzaW9uKSYmRi5hcmd1bWVudEV4cHJlc3Npb24udGV4dD09PWVlJiZlLmlzV3JpdGVBY2Nlc3MoRikmJlIucmVwbGFjZU5vZGUocSxGLmFyZ3VtZW50RXhwcmVzc2lvbixlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbCh2ZSkpLGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRikmJkYuZXhwcmVzc2lvbi5raW5kPT09MTA4JiZGLm5hbWUudGV4dD09PWVlJiZlLmlzV3JpdGVBY2Nlc3MoRikmJlIucmVwbGFjZU5vZGUocSxGLm5hbWUsZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIodmUpKSwhZS5pc0Z1bmN0aW9uTGlrZShGKSYmIWUuaXNDbGFzc0xpa2UoRikmJkYuZm9yRWFjaENoaWxkKGhlKX0pfWZ1bmN0aW9uIEooUixxKXt2YXIgTz1lLmdldFR5cGVBbm5vdGF0aW9uTm9kZShSKTtpZihlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihSKSYmTyYmUi5xdWVzdGlvblRva2VuKXt2YXIgdmU9cS5nZXRUeXBlQ2hlY2tlcigpLGVlPXZlLmdldFR5cGVGcm9tVHlwZU5vZGUoTyk7aWYoIXZlLmlzVHlwZUFzc2lnbmFibGVUbyh2ZS5nZXRVbmRlZmluZWRUeXBlKCksZWUpKXt2YXIgaGU9ZS5pc1VuaW9uVHlwZU5vZGUoTyk/Ty50eXBlczpbT107cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVVbmlvblR5cGVOb2RlKFZlKFZlKFtdLGhlLCEwKSxbZS5mYWN0b3J5LmNyZWF0ZUtleXdvcmRUeXBlTm9kZSgxNTMpXSwhMSkpfX1yZXR1cm4gT31mdW5jdGlvbiBpZShSLHEpe2Zvcih2YXIgTz1bXTtSOyl7dmFyIHZlPWUuZ2V0Q2xhc3NFeHRlbmRzSGVyaXRhZ2VFbGVtZW50KFIpLGVlPXZlJiZxLmdldFN5bWJvbEF0TG9jYXRpb24odmUuZXhwcmVzc2lvbik7aWYoIWVlKWJyZWFrO3ZhciBoZT1lZS5mbGFncyYyMDk3MTUyP3EuZ2V0QWxpYXNlZFN5bWJvbChlZSk6ZWUsRj1oZS5kZWNsYXJhdGlvbnMmJmUuZmluZChoZS5kZWNsYXJhdGlvbnMsZS5pc0NsYXNzTGlrZSk7aWYoIUYpYnJlYWs7Ty5wdXNoKEYpLFI9Rn1yZXR1cm4gT31DLmdldEFsbFN1cGVycz1pZX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJpbnZhbGlkSW1wb3J0U3ludGF4XCI7ZnVuY3Rpb24gQihwLG0pe3ZhciBHPWUuZ2V0U291cmNlRmlsZU9mTm9kZShtKSxvZT1lLmdldE5hbWVzcGFjZURlY2xhcmF0aW9uTm9kZShtKSxmPXAucHJvZ3JhbS5nZXRDb21waWxlck9wdGlvbnMoKSxUPVtdO3JldHVybiBULnB1c2goRShwLEcsbSxlLm1ha2VJbXBvcnQob2UubmFtZSx2b2lkIDAsbS5tb2R1bGVTcGVjaWZpZXIsZS5nZXRRdW90ZVByZWZlcmVuY2UoRyxwLnByZWZlcmVuY2VzKSkpKSxlLmdldEVtaXRNb2R1bGVLaW5kKGYpPT09ZS5Nb2R1bGVLaW5kLkNvbW1vbkpTJiZULnB1c2goRShwLEcsbSxlLmZhY3RvcnkuY3JlYXRlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCwhMSxvZS5uYW1lLGUuZmFjdG9yeS5jcmVhdGVFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZShtLm1vZHVsZVNwZWNpZmllcikpKSksVH1mdW5jdGlvbiBFKHAsbSxHLG9lKXt2YXIgZj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKFQpe3JldHVybiBULnJlcGxhY2VOb2RlKG0sRyxvZSl9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uV2l0aG91dEZpeEFsbCh3LGYsW2UuRGlhZ25vc3RpY3MuUmVwbGFjZV9pbXBvcnRfd2l0aF8wLGZbMF0udGV4dENoYW5nZXNbMF0ubmV3VGV4dF0pfUMucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOltlLkRpYWdub3N0aWNzLlRoaXNfZXhwcmVzc2lvbl9pc19ub3RfY2FsbGFibGUuY29kZSxlLkRpYWdub3N0aWNzLlRoaXNfZXhwcmVzc2lvbl9pc19ub3RfY29uc3RydWN0YWJsZS5jb2RlXSxnZXRDb2RlQWN0aW9uczpRfSk7ZnVuY3Rpb24gUShwKXt2YXIgbT1wLnNvdXJjZUZpbGUsRz1lLkRpYWdub3N0aWNzLlRoaXNfZXhwcmVzc2lvbl9pc19ub3RfY2FsbGFibGUuY29kZT09PXAuZXJyb3JDb2RlPzIwODoyMDksb2U9ZS5maW5kQW5jZXN0b3IoZS5nZXRUb2tlbkF0UG9zaXRpb24obSxwLnNwYW4uc3RhcnQpLGZ1bmN0aW9uKFQpe3JldHVybiBULmtpbmQ9PT1HfSk7aWYoIW9lKXJldHVybltdO3ZhciBmPW9lLmV4cHJlc3Npb247cmV0dXJuIE4ocCxmKX1DLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpbZS5EaWFnbm9zdGljcy5Bcmd1bWVudF9vZl90eXBlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fcGFyYW1ldGVyX29mX3R5cGVfMS5jb2RlLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2RvZXNfbm90X3NhdGlzZnlfdGhlX2NvbnN0cmFpbnRfMS5jb2RlLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMS5jb2RlLGUuRGlhZ25vc3RpY3MuVHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMV9Ud29fZGlmZmVyZW50X3R5cGVzX3dpdGhfdGhpc19uYW1lX2V4aXN0X2J1dF90aGV5X2FyZV91bnJlbGF0ZWQuY29kZSxlLkRpYWdub3N0aWNzLlR5cGVfcHJlZGljYXRlXzBfaXNfbm90X2Fzc2lnbmFibGVfdG9fMS5jb2RlLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9vZl90eXBlXzFfaXNfbm90X2Fzc2lnbmFibGVfdG9fMl9pbmRleF90eXBlXzMuY29kZSxlLkRpYWdub3N0aWNzLl8wX2luZGV4X3R5cGVfMV9pc19ub3RfYXNzaWduYWJsZV90b18yX2luZGV4X3R5cGVfMy5jb2RlLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9pbl90eXBlXzFfaXNfbm90X2Fzc2lnbmFibGVfdG9fdGhlX3NhbWVfcHJvcGVydHlfaW5fYmFzZV90eXBlXzIuY29kZSxlLkRpYWdub3N0aWNzLlByb3BlcnR5XzBfaW5fdHlwZV8xX2lzX25vdF9hc3NpZ25hYmxlX3RvX3R5cGVfMi5jb2RlLGUuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9vZl9KU1hfc3ByZWFkX2F0dHJpYnV0ZV9pc19ub3RfYXNzaWduYWJsZV90b190YXJnZXRfcHJvcGVydHkuY29kZSxlLkRpYWdub3N0aWNzLlRoZV90aGlzX2NvbnRleHRfb2ZfdHlwZV8wX2lzX25vdF9hc3NpZ25hYmxlX3RvX21ldGhvZF9zX3RoaXNfb2ZfdHlwZV8xLmNvZGVdLGdldENvZGVBY3Rpb25zOmxlfSk7ZnVuY3Rpb24gbGUocCl7dmFyIG09cC5zb3VyY2VGaWxlLEc9ZS5maW5kQW5jZXN0b3IoZS5nZXRUb2tlbkF0UG9zaXRpb24obSxwLnNwYW4uc3RhcnQpLGZ1bmN0aW9uKG9lKXtyZXR1cm4gb2UuZ2V0U3RhcnQoKT09PXAuc3Bhbi5zdGFydCYmb2UuZ2V0RW5kKCk9PT1wLnNwYW4uc3RhcnQrcC5zcGFuLmxlbmd0aH0pO3JldHVybiBHP04ocCxHKTpbXX1mdW5jdGlvbiBOKHAsbSl7dmFyIEc9cC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCkuZ2V0VHlwZUF0TG9jYXRpb24obSk7aWYoIShHLnN5bWJvbCYmRy5zeW1ib2wub3JpZ2luYXRpbmdJbXBvcnQpKXJldHVybltdO3ZhciBvZT1bXSxmPUcuc3ltYm9sLm9yaWdpbmF0aW5nSW1wb3J0O2lmKGUuaXNJbXBvcnRDYWxsKGYpfHxlLmFkZFJhbmdlKG9lLEIocCxmKSksZS5pc0V4cHJlc3Npb24obSkmJiEoZS5pc05hbWVkRGVjbGFyYXRpb24obS5wYXJlbnQpJiZtLnBhcmVudC5uYW1lPT09bSkpe3ZhciBUPXAuc291cmNlRmlsZSxLPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHAsZnVuY3Rpb24oYil7cmV0dXJuIGIucmVwbGFjZU5vZGUoVCxtLGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obSxcImRlZmF1bHRcIikse30pfSk7b2UucHVzaChDLmNyZWF0ZUNvZGVGaXhBY3Rpb25XaXRob3V0Rml4QWxsKHcsSyxlLkRpYWdub3N0aWNzLlVzZV9zeW50aGV0aWNfZGVmYXVsdF9tZW1iZXIpKX1yZXR1cm4gb2V9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cInN0cmljdENsYXNzSW5pdGlhbGl6YXRpb25cIixCPVwiYWRkTWlzc2luZ1Byb3BlcnR5RGVmaW5pdGVBc3NpZ25tZW50QXNzZXJ0aW9uc1wiLEU9XCJhZGRNaXNzaW5nUHJvcGVydHlVbmRlZmluZWRUeXBlXCIsUT1cImFkZE1pc3NpbmdQcm9wZXJ0eUluaXRpYWxpemVyXCIsbGU9W2UuRGlhZ25vc3RpY3MuUHJvcGVydHlfMF9oYXNfbm9faW5pdGlhbGl6ZXJfYW5kX2lzX25vdF9kZWZpbml0ZWx5X2Fzc2lnbmVkX2luX3RoZV9jb25zdHJ1Y3Rvci5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpsZSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihKKXt2YXIgaWU9TihKLnNvdXJjZUZpbGUsSi5zcGFuLnN0YXJ0KTtpZighIWllKXt2YXIgUj1bXTtyZXR1cm4gZS5hcHBlbmQoUixHKEosaWUpKSxlLmFwcGVuZChSLHAoSixpZSkpLGUuYXBwZW5kKFIsZihKLGllKSksUn19LGZpeElkczpbQixFLFFdLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKHNlKXtyZXR1cm4gQy5jb2RlRml4QWxsKHNlLGxlLGZ1bmN0aW9uKEosaWUpe3ZhciBSPU4oaWUuZmlsZSxpZS5zdGFydCk7aWYoISFSKXN3aXRjaChzZS5maXhJZCl7Y2FzZSBCOm0oSixpZS5maWxlLFIucHJvcCk7YnJlYWs7Y2FzZSBFOm9lKEosaWUuZmlsZSxSKTticmVhaztjYXNlIFE6dmFyIHE9c2UucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLE89SyhxLFIucHJvcCk7aWYoIU8pcmV0dXJuO1QoSixpZS5maWxlLFIucHJvcCxPKTticmVhaztkZWZhdWx0OmUuRGVidWcuZmFpbChKU09OLnN0cmluZ2lmeShzZS5maXhJZCkpfX0pfX0pO2Z1bmN0aW9uIE4oc2UsSil7dmFyIGllPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKHNlLEopO2lmKGUuaXNJZGVudGlmaWVyKGllKSYmZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oaWUucGFyZW50KSl7dmFyIFI9ZS5nZXRFZmZlY3RpdmVUeXBlQW5ub3RhdGlvbk5vZGUoaWUucGFyZW50KTtpZihSKXJldHVybnt0eXBlOlIscHJvcDppZS5wYXJlbnQsaXNKczplLmlzSW5KU0ZpbGUoaWUucGFyZW50KX19fWZ1bmN0aW9uIHAoc2UsSil7aWYoIUouaXNKcyl7dmFyIGllPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHNlLGZ1bmN0aW9uKFIpe3JldHVybiBtKFIsc2Uuc291cmNlRmlsZSxKLnByb3ApfSk7cmV0dXJuIEMuY3JlYXRlQ29kZUZpeEFjdGlvbih3LGllLFtlLkRpYWdub3N0aWNzLkFkZF9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl90b19wcm9wZXJ0eV8wLEoucHJvcC5nZXRUZXh0KCldLEIsZS5EaWFnbm9zdGljcy5BZGRfZGVmaW5pdGVfYXNzaWdubWVudF9hc3NlcnRpb25zX3RvX2FsbF91bmluaXRpYWxpemVkX3Byb3BlcnRpZXMpfX1mdW5jdGlvbiBtKHNlLEosaWUpe2Uuc3VwcHJlc3NMZWFkaW5nQW5kVHJhaWxpbmdUcml2aWEoaWUpO3ZhciBSPWUuZmFjdG9yeS51cGRhdGVQcm9wZXJ0eURlY2xhcmF0aW9uKGllLGllLmRlY29yYXRvcnMsaWUubW9kaWZpZXJzLGllLm5hbWUsZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDUzKSxpZS50eXBlLGllLmluaXRpYWxpemVyKTtzZS5yZXBsYWNlTm9kZShKLGllLFIpfWZ1bmN0aW9uIEcoc2UsSil7dmFyIGllPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHNlLGZ1bmN0aW9uKFIpe3JldHVybiBvZShSLHNlLnNvdXJjZUZpbGUsSil9KTtyZXR1cm4gQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsaWUsW2UuRGlhZ25vc3RpY3MuQWRkX3VuZGVmaW5lZF90eXBlX3RvX3Byb3BlcnR5XzAsSi5wcm9wLm5hbWUuZ2V0VGV4dCgpXSxFLGUuRGlhZ25vc3RpY3MuQWRkX3VuZGVmaW5lZF90eXBlX3RvX2FsbF91bmluaXRpYWxpemVkX3Byb3BlcnRpZXMpfWZ1bmN0aW9uIG9lKHNlLEosaWUpe3ZhciBSPWUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTUzKSxxPWUuaXNVbmlvblR5cGVOb2RlKGllLnR5cGUpP2llLnR5cGUudHlwZXMuY29uY2F0KFIpOltpZS50eXBlLFJdLE89ZS5mYWN0b3J5LmNyZWF0ZVVuaW9uVHlwZU5vZGUocSk7aWUuaXNKcz9zZS5hZGRKU0RvY1RhZ3MoSixpZS5wcm9wLFtlLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlVGFnKHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlRXhwcmVzc2lvbihPKSldKTpzZS5yZXBsYWNlTm9kZShKLGllLnR5cGUsTyl9ZnVuY3Rpb24gZihzZSxKKXtpZighSi5pc0pzKXt2YXIgaWU9c2UucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLFI9SyhpZSxKLnByb3ApO2lmKCEhUil7dmFyIHE9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoc2UsZnVuY3Rpb24oTyl7cmV0dXJuIFQoTyxzZS5zb3VyY2VGaWxlLEoucHJvcCxSKX0pO3JldHVybiBDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxxLFtlLkRpYWdub3N0aWNzLkFkZF9pbml0aWFsaXplcl90b19wcm9wZXJ0eV8wLEoucHJvcC5uYW1lLmdldFRleHQoKV0sUSxlLkRpYWdub3N0aWNzLkFkZF9pbml0aWFsaXplcnNfdG9fYWxsX3VuaW5pdGlhbGl6ZWRfcHJvcGVydGllcyl9fX1mdW5jdGlvbiBUKHNlLEosaWUsUil7ZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShpZSk7dmFyIHE9ZS5mYWN0b3J5LnVwZGF0ZVByb3BlcnR5RGVjbGFyYXRpb24oaWUsaWUuZGVjb3JhdG9ycyxpZS5tb2RpZmllcnMsaWUubmFtZSxpZS5xdWVzdGlvblRva2VuLGllLnR5cGUsUik7c2UucmVwbGFjZU5vZGUoSixpZSxxKX1mdW5jdGlvbiBLKHNlLEope3JldHVybiBiKHNlLHNlLmdldFR5cGVGcm9tVHlwZU5vZGUoSi50eXBlKSl9ZnVuY3Rpb24gYihzZSxKKXtpZihKLmZsYWdzJjUxMilyZXR1cm4gSj09PXNlLmdldEZhbHNlVHlwZSgpfHxKPT09c2UuZ2V0RmFsc2VUeXBlKCEwKT9lLmZhY3RvcnkuY3JlYXRlRmFsc2UoKTplLmZhY3RvcnkuY3JlYXRlVHJ1ZSgpO2lmKEouaXNTdHJpbmdMaXRlcmFsKCkpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKEoudmFsdWUpO2lmKEouaXNOdW1iZXJMaXRlcmFsKCkpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVOdW1lcmljTGl0ZXJhbChKLnZhbHVlKTtpZihKLmZsYWdzJjIwNDgpcmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVCaWdJbnRMaXRlcmFsKEoudmFsdWUpO2lmKEouaXNVbmlvbigpKXJldHVybiBlLmZpcnN0RGVmaW5lZChKLnR5cGVzLGZ1bmN0aW9uKHEpe3JldHVybiBiKHNlLHEpfSk7aWYoSi5pc0NsYXNzKCkpe3ZhciBpZT1lLmdldENsYXNzTGlrZURlY2xhcmF0aW9uT2ZTeW1ib2woSi5zeW1ib2wpO2lmKCFpZXx8ZS5oYXNTeW50YWN0aWNNb2RpZmllcihpZSwxMjgpKXJldHVybjt2YXIgUj1lLmdldEZpcnN0Q29uc3RydWN0b3JXaXRoQm9keShpZSk7cmV0dXJuIFImJlIucGFyYW1ldGVycy5sZW5ndGg/dm9pZCAwOmUuZmFjdG9yeS5jcmVhdGVOZXdFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEouc3ltYm9sLm5hbWUpLHZvaWQgMCx2b2lkIDApfWVsc2UgaWYoc2UuaXNBcnJheUxpa2VUeXBlKEopKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbigpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJyZXF1aXJlSW5Uc1wiLEI9W2UuRGlhZ25vc3RpY3MucmVxdWlyZV9jYWxsX21heV9iZV9jb252ZXJ0ZWRfdG9fYW5faW1wb3J0LmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7dmFyIHA9UShOLnNvdXJjZUZpbGUsTi5wcm9ncmFtLE4uc3Bhbi5zdGFydCk7aWYoISFwKXt2YXIgbT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChOLGZ1bmN0aW9uKEcpe3JldHVybiBFKEcsTi5zb3VyY2VGaWxlLHApfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LG0sZS5EaWFnbm9zdGljcy5Db252ZXJ0X3JlcXVpcmVfdG9faW1wb3J0LHcsZS5EaWFnbm9zdGljcy5Db252ZXJ0X2FsbF9yZXF1aXJlX3RvX2ltcG9ydCldfX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihOKXtyZXR1cm4gQy5jb2RlRml4QWxsKE4sQixmdW5jdGlvbihwLG0pe3ZhciBHPVEobS5maWxlLE4ucHJvZ3JhbSxtLnN0YXJ0KTtHJiZFKHAsTi5zb3VyY2VGaWxlLEcpfSl9fSk7ZnVuY3Rpb24gRShOLHAsbSl7dmFyIEc9bS5hbGxvd1N5bnRoZXRpY0RlZmF1bHRzLG9lPW0uZGVmYXVsdEltcG9ydE5hbWUsZj1tLm5hbWVkSW1wb3J0cyxUPW0uc3RhdGVtZW50LEs9bS5yZXF1aXJlZDtOLnJlcGxhY2VOb2RlKHAsVCxvZSYmIUc/ZS5mYWN0b3J5LmNyZWF0ZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsITEsb2UsZS5mYWN0b3J5LmNyZWF0ZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlKEspKTplLmZhY3RvcnkuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSW1wb3J0Q2xhdXNlKCExLG9lLGYpLEssdm9pZCAwKSl9ZnVuY3Rpb24gUShOLHAsbSl7dmFyIEc9ZS5nZXRUb2tlbkF0UG9zaXRpb24oTixtKS5wYXJlbnQ7aWYoIWUuaXNSZXF1aXJlQ2FsbChHLCEwKSl0aHJvdyBlLkRlYnVnLmZhaWxCYWRTeW50YXhLaW5kKEcpO3ZhciBvZT1lLmNhc3QoRy5wYXJlbnQsZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24pLGY9ZS50cnlDYXN0KG9lLm5hbWUsZS5pc0lkZW50aWZpZXIpLFQ9ZS5pc09iamVjdEJpbmRpbmdQYXR0ZXJuKG9lLm5hbWUpP2xlKG9lLm5hbWUpOnZvaWQgMDtpZihmfHxUKXJldHVybnthbGxvd1N5bnRoZXRpY0RlZmF1bHRzOmUuZ2V0QWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyhwLmdldENvbXBpbGVyT3B0aW9ucygpKSxkZWZhdWx0SW1wb3J0TmFtZTpmLG5hbWVkSW1wb3J0czpULHN0YXRlbWVudDplLmNhc3Qob2UucGFyZW50LnBhcmVudCxlLmlzVmFyaWFibGVTdGF0ZW1lbnQpLHJlcXVpcmVkOmUuZmlyc3QoRy5hcmd1bWVudHMpfX1mdW5jdGlvbiBsZShOKXtmb3IodmFyIHA9W10sbT0wLEc9Ti5lbGVtZW50czttPEcubGVuZ3RoO20rKyl7dmFyIG9lPUdbbV07aWYoIWUuaXNJZGVudGlmaWVyKG9lLm5hbWUpfHxvZS5pbml0aWFsaXplcilyZXR1cm47cC5wdXNoKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoITEsZS50cnlDYXN0KG9lLnByb3BlcnR5TmFtZSxlLmlzSWRlbnRpZmllciksb2UubmFtZSkpfWlmKHAubGVuZ3RoKXJldHVybiBlLmZhY3RvcnkuY3JlYXRlTmFtZWRJbXBvcnRzKHApfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJ1c2VEZWZhdWx0SW1wb3J0XCIsQj1bZS5EaWFnbm9zdGljcy5JbXBvcnRfbWF5X2JlX2NvbnZlcnRlZF90b19hX2RlZmF1bHRfaW1wb3J0LmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3ZhciBOPWxlLnNvdXJjZUZpbGUscD1sZS5zcGFuLnN0YXJ0LG09RShOLHApO2lmKCEhbSl7dmFyIEc9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgobGUsZnVuY3Rpb24ob2Upe3JldHVybiBRKG9lLE4sbSxsZS5wcmVmZXJlbmNlcyl9KTtyZXR1cm5bQy5jcmVhdGVDb2RlRml4QWN0aW9uKHcsRyxlLkRpYWdub3N0aWNzLkNvbnZlcnRfdG9fZGVmYXVsdF9pbXBvcnQsdyxlLkRpYWdub3N0aWNzLkNvbnZlcnRfYWxsX3RvX2RlZmF1bHRfaW1wb3J0cyldfX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7cmV0dXJuIEMuY29kZUZpeEFsbChsZSxCLGZ1bmN0aW9uKE4scCl7dmFyIG09RShwLmZpbGUscC5zdGFydCk7bSYmUShOLHAuZmlsZSxtLGxlLnByZWZlcmVuY2VzKX0pfX0pO2Z1bmN0aW9uIEUobGUsTil7dmFyIHA9ZS5nZXRUb2tlbkF0UG9zaXRpb24obGUsTik7aWYoISFlLmlzSWRlbnRpZmllcihwKSl7dmFyIG09cC5wYXJlbnQ7aWYoZS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uKG0pJiZlLmlzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UobS5tb2R1bGVSZWZlcmVuY2UpKXJldHVybntpbXBvcnROb2RlOm0sbmFtZTpwLG1vZHVsZVNwZWNpZmllcjptLm1vZHVsZVJlZmVyZW5jZS5leHByZXNzaW9ufTtpZihlLmlzTmFtZXNwYWNlSW1wb3J0KG0pKXt2YXIgRz1tLnBhcmVudC5wYXJlbnQ7cmV0dXJue2ltcG9ydE5vZGU6RyxuYW1lOnAsbW9kdWxlU3BlY2lmaWVyOkcubW9kdWxlU3BlY2lmaWVyfX19fWZ1bmN0aW9uIFEobGUsTixwLG0pe2xlLnJlcGxhY2VOb2RlKE4scC5pbXBvcnROb2RlLGUubWFrZUltcG9ydChwLm5hbWUsdm9pZCAwLHAubW9kdWxlU3BlY2lmaWVyLGUuZ2V0UXVvdGVQcmVmZXJlbmNlKE4sbSkpKX19KShhPWUuY29kZWZpeHx8KGUuY29kZWZpeD17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwidXNlQmlnaW50TGl0ZXJhbFwiLEI9W2UuRGlhZ25vc3RpY3MuTnVtZXJpY19saXRlcmFsc193aXRoX2Fic29sdXRlX3ZhbHVlc19lcXVhbF90b18yXzUzX29yX2dyZWF0ZXJfYXJlX3Rvb19sYXJnZV90b19iZV9yZXByZXNlbnRlZF9hY2N1cmF0ZWx5X2FzX2ludGVnZXJzLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24obGUpe3ZhciBOPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKGxlLGZ1bmN0aW9uKHApe3JldHVybiBFKHAsbGUuc291cmNlRmlsZSxsZS5zcGFuKX0pO2lmKE4ubGVuZ3RoPjApcmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LE4sZS5EaWFnbm9zdGljcy5Db252ZXJ0X3RvX2FfYmlnaW50X251bWVyaWNfbGl0ZXJhbCx3LGUuRGlhZ25vc3RpY3MuQ29udmVydF9hbGxfdG9fYmlnaW50X251bWVyaWNfbGl0ZXJhbHMpXX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihRKXtyZXR1cm4gQy5jb2RlRml4QWxsKFEsQixmdW5jdGlvbihsZSxOKXtyZXR1cm4gRShsZSxOLmZpbGUsTil9KX19KTtmdW5jdGlvbiBFKFEsbGUsTil7dmFyIHA9ZS50cnlDYXN0KGUuZ2V0VG9rZW5BdFBvc2l0aW9uKGxlLE4uc3RhcnQpLGUuaXNOdW1lcmljTGl0ZXJhbCk7aWYoISFwKXt2YXIgbT1wLmdldFRleHQobGUpK1wiblwiO1EucmVwbGFjZU5vZGUobGUscCxlLmZhY3RvcnkuY3JlYXRlQmlnSW50TGl0ZXJhbChtKSl9fX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhBZGRNb2R1bGVSZWZlclR5cGVNaXNzaW5nVHlwZW9mXCIsQj13LEU9W2UuRGlhZ25vc3RpY3MuTW9kdWxlXzBfZG9lc19ub3RfcmVmZXJfdG9fYV90eXBlX2J1dF9pc191c2VkX2FzX2FfdHlwZV9oZXJlX0RpZF95b3VfbWVhbl90eXBlb2ZfaW1wb3J0XzAuY29kZV07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6RSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihwKXt2YXIgbT1wLnNvdXJjZUZpbGUsRz1wLnNwYW4sb2U9UShtLEcuc3RhcnQpLGY9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgocCxmdW5jdGlvbihUKXtyZXR1cm4gbGUoVCxtLG9lKX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24oQixmLGUuRGlhZ25vc3RpY3MuQWRkX21pc3NpbmdfdHlwZW9mLEIsZS5EaWFnbm9zdGljcy5BZGRfbWlzc2luZ190eXBlb2YpXX0sZml4SWRzOltCXSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihOKXtyZXR1cm4gQy5jb2RlRml4QWxsKE4sRSxmdW5jdGlvbihwLG0pe3JldHVybiBsZShwLE4uc291cmNlRmlsZSxRKG0uZmlsZSxtLnN0YXJ0KSl9KX19KTtmdW5jdGlvbiBRKE4scCl7dmFyIG09ZS5nZXRUb2tlbkF0UG9zaXRpb24oTixwKTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQobS5raW5kPT09MTAwLFwiVGhpcyB0b2tlbiBzaG91bGQgYmUgYW4gSW1wb3J0S2V5d29yZFwiKSxlLkRlYnVnLmFzc2VydChtLnBhcmVudC5raW5kPT09MjAwLFwiVG9rZW4gcGFyZW50IHNob3VsZCBiZSBhbiBJbXBvcnRUeXBlXCIpLG0ucGFyZW50fWZ1bmN0aW9uIGxlKE4scCxtKXt2YXIgRz1lLmZhY3RvcnkudXBkYXRlSW1wb3J0VHlwZU5vZGUobSxtLmFyZ3VtZW50LG0ucXVhbGlmaWVyLG0udHlwZUFyZ3VtZW50cywhMCk7Ti5yZXBsYWNlTm9kZShwLG0sRyl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cIndyYXBKc3hJbkZyYWdtZW50XCIsQj1bZS5EaWFnbm9zdGljcy5KU1hfZXhwcmVzc2lvbnNfbXVzdF9oYXZlX29uZV9wYXJlbnRfZWxlbWVudC5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKHApe3ZhciBtPXAuc291cmNlRmlsZSxHPXAuc3BhbixvZT1FKG0sRy5zdGFydCk7aWYoISFvZSl7dmFyIGY9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgocCxmdW5jdGlvbihUKXtyZXR1cm4gUShULG0sb2UpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LGYsZS5EaWFnbm9zdGljcy5XcmFwX2luX0pTWF9mcmFnbWVudCx3LGUuRGlhZ25vc3RpY3MuV3JhcF9hbGxfdW5wYXJlbnRlZF9KU1hfaW5fSlNYX2ZyYWdtZW50KV19fSxmaXhJZHM6W3ddLGdldEFsbENvZGVBY3Rpb25zOmZ1bmN0aW9uKE4pe3JldHVybiBDLmNvZGVGaXhBbGwoTixCLGZ1bmN0aW9uKHAsbSl7dmFyIEc9RShOLnNvdXJjZUZpbGUsbS5zdGFydCk7IUd8fFEocCxOLnNvdXJjZUZpbGUsRyl9KX19KTtmdW5jdGlvbiBFKE4scCl7dmFyIG09ZS5nZXRUb2tlbkF0UG9zaXRpb24oTixwKSxHPW0ucGFyZW50LG9lPUcucGFyZW50O2lmKCEoIWUuaXNCaW5hcnlFeHByZXNzaW9uKG9lKSYmKG9lPW9lLnBhcmVudCwhZS5pc0JpbmFyeUV4cHJlc3Npb24ob2UpKSkmJiEhZS5ub2RlSXNNaXNzaW5nKG9lLm9wZXJhdG9yVG9rZW4pKXJldHVybiBvZX1mdW5jdGlvbiBRKE4scCxtKXt2YXIgRz1sZShtKTtHJiZOLnJlcGxhY2VOb2RlKHAsbSxlLmZhY3RvcnkuY3JlYXRlSnN4RnJhZ21lbnQoZS5mYWN0b3J5LmNyZWF0ZUpzeE9wZW5pbmdGcmFnbWVudCgpLEcsZS5mYWN0b3J5LmNyZWF0ZUpzeEpzeENsb3NpbmdGcmFnbWVudCgpKSl9ZnVuY3Rpb24gbGUoTil7Zm9yKHZhciBwPVtdLG09Tjs7KWlmKGUuaXNCaW5hcnlFeHByZXNzaW9uKG0pJiZlLm5vZGVJc01pc3NpbmcobS5vcGVyYXRvclRva2VuKSYmbS5vcGVyYXRvclRva2VuLmtpbmQ9PT0yNyl7aWYocC5wdXNoKG0ubGVmdCksZS5pc0pzeENoaWxkKG0ucmlnaHQpKXJldHVybiBwLnB1c2gobS5yaWdodCkscDtpZihlLmlzQmluYXJ5RXhwcmVzc2lvbihtLnJpZ2h0KSl7bT1tLnJpZ2h0O2NvbnRpbnVlfWVsc2UgcmV0dXJufWVsc2UgcmV0dXJufX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhDb252ZXJ0VG9NYXBwZWRPYmplY3RUeXBlXCIsQj1bZS5EaWFnbm9zdGljcy5Bbl9pbmRleF9zaWduYXR1cmVfcGFyYW1ldGVyX3R5cGVfY2Fubm90X2JlX2FfbGl0ZXJhbF90eXBlX29yX2dlbmVyaWNfdHlwZV9Db25zaWRlcl91c2luZ19hX21hcHBlZF9vYmplY3RfdHlwZV9pbnN0ZWFkLmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24ocCl7dmFyIG09cC5zb3VyY2VGaWxlLEc9cC5zcGFuLG9lPUUobSxHLnN0YXJ0KTtpZighIW9lKXt2YXIgZj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChwLGZ1bmN0aW9uKEspe3JldHVybiBsZShLLG0sb2UpfSksVD1lLmlkVGV4dChvZS5jb250YWluZXIubmFtZSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LGYsW2UuRGlhZ25vc3RpY3MuQ29udmVydF8wX3RvX21hcHBlZF9vYmplY3RfdHlwZSxUXSx3LFtlLkRpYWdub3N0aWNzLkNvbnZlcnRfMF90b19tYXBwZWRfb2JqZWN0X3R5cGUsVF0pXX19LGZpeElkczpbd10sZ2V0QWxsQ29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7cmV0dXJuIEMuY29kZUZpeEFsbChOLEIsZnVuY3Rpb24ocCxtKXt2YXIgRz1FKG0uZmlsZSxtLnN0YXJ0KTtHJiZsZShwLG0uZmlsZSxHKX0pfX0pO2Z1bmN0aW9uIEUoTixwKXt2YXIgbT1lLmdldFRva2VuQXRQb3NpdGlvbihOLHApLEc9ZS50cnlDYXN0KG0ucGFyZW50LnBhcmVudCxlLmlzSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbik7aWYoISFHKXt2YXIgb2U9ZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKEcucGFyZW50KT9HLnBhcmVudDplLnRyeUNhc3QoRy5wYXJlbnQucGFyZW50LGUuaXNUeXBlQWxpYXNEZWNsYXJhdGlvbik7aWYoISFvZSlyZXR1cm57aW5kZXhTaWduYXR1cmU6Ryxjb250YWluZXI6b2V9fX1mdW5jdGlvbiBRKE4scCl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUeXBlQWxpYXNEZWNsYXJhdGlvbihOLmRlY29yYXRvcnMsTi5tb2RpZmllcnMsTi5uYW1lLE4udHlwZVBhcmFtZXRlcnMscCl9ZnVuY3Rpb24gbGUoTixwLG0pe3ZhciBHPW0uaW5kZXhTaWduYXR1cmUsb2U9bS5jb250YWluZXIsZj1lLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24ob2UpP29lLm1lbWJlcnM6b2UudHlwZS5tZW1iZXJzLFQ9Zi5maWx0ZXIoZnVuY3Rpb24oaWUpe3JldHVybiFlLmlzSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbihpZSl9KSxLPWUuZmlyc3QoRy5wYXJhbWV0ZXJzKSxiPWUuZmFjdG9yeS5jcmVhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLGUuY2FzdChLLm5hbWUsZS5pc0lkZW50aWZpZXIpLEsudHlwZSksc2U9ZS5mYWN0b3J5LmNyZWF0ZU1hcHBlZFR5cGVOb2RlKGUuaGFzRWZmZWN0aXZlUmVhZG9ubHlNb2RpZmllcihHKT9lLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXIoMTQ1KTp2b2lkIDAsYix2b2lkIDAsRy5xdWVzdGlvblRva2VuLEcudHlwZSx2b2lkIDApLEo9ZS5mYWN0b3J5LmNyZWF0ZUludGVyc2VjdGlvblR5cGVOb2RlKFZlKFZlKFZlKFtdLGUuZ2V0QWxsU3VwZXJUeXBlTm9kZXMob2UpLCEwKSxbc2VdLCExKSxULmxlbmd0aD9bZS5mYWN0b3J5LmNyZWF0ZVR5cGVMaXRlcmFsTm9kZShUKV06ZS5lbXB0eUFycmF5LCEwKSk7Ti5yZXBsYWNlTm9kZShwLG9lLFEob2UsSikpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJyZW1vdmVBY2NpZGVudGFsQ2FsbFBhcmVudGhlc2VzXCIsQj1bZS5EaWFnbm9zdGljcy5UaGlzX2V4cHJlc3Npb25faXNfbm90X2NhbGxhYmxlX2JlY2F1c2VfaXRfaXNfYV9nZXRfYWNjZXNzb3JfRGlkX3lvdV9tZWFuX3RvX3VzZV9pdF93aXRob3V0LmNvZGVdO0MucmVnaXN0ZXJDb2RlRml4KHtlcnJvckNvZGVzOkIsZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oRSl7dmFyIFE9ZS5maW5kQW5jZXN0b3IoZS5nZXRUb2tlbkF0UG9zaXRpb24oRS5zb3VyY2VGaWxlLEUuc3Bhbi5zdGFydCksZS5pc0NhbGxFeHByZXNzaW9uKTtpZighIVEpe3ZhciBsZT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChFLGZ1bmN0aW9uKE4pe04uZGVsZXRlUmFuZ2UoRS5zb3VyY2VGaWxlLHtwb3M6US5leHByZXNzaW9uLmVuZCxlbmQ6US5lbmR9KX0pO3JldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb25XaXRob3V0Rml4QWxsKHcsbGUsZS5EaWFnbm9zdGljcy5SZW1vdmVfcGFyZW50aGVzZXMpXX19LGZpeElkczpbd119KX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJyZW1vdmVVbm5lY2Vzc2FyeUF3YWl0XCIsQj1bZS5EaWFnbm9zdGljcy5hd2FpdF9oYXNfbm9fZWZmZWN0X29uX3RoZV90eXBlX29mX3RoaXNfZXhwcmVzc2lvbi5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKGxlKXt2YXIgTj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChsZSxmdW5jdGlvbihwKXtyZXR1cm4gRShwLGxlLnNvdXJjZUZpbGUsbGUuc3Bhbil9KTtpZihOLmxlbmd0aD4wKXJldHVybltDLmNyZWF0ZUNvZGVGaXhBY3Rpb24odyxOLGUuRGlhZ25vc3RpY3MuUmVtb3ZlX3VubmVjZXNzYXJ5X2F3YWl0LHcsZS5EaWFnbm9zdGljcy5SZW1vdmVfYWxsX3VubmVjZXNzYXJ5X3VzZXNfb2ZfYXdhaXQpXX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihRKXtyZXR1cm4gQy5jb2RlRml4QWxsKFEsQixmdW5jdGlvbihsZSxOKXtyZXR1cm4gRShsZSxOLmZpbGUsTil9KX19KTtmdW5jdGlvbiBFKFEsbGUsTil7dmFyIHA9ZS50cnlDYXN0KGUuZ2V0VG9rZW5BdFBvc2l0aW9uKGxlLE4uc3RhcnQpLGZ1bmN0aW9uKEspe3JldHVybiBLLmtpbmQ9PT0xMzJ9KSxtPXAmJmUudHJ5Q2FzdChwLnBhcmVudCxlLmlzQXdhaXRFeHByZXNzaW9uKTtpZighIW0pe3ZhciBHPW0sb2U9ZS5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uKG0ucGFyZW50KTtpZihvZSl7dmFyIGY9ZS5nZXRMZWZ0bW9zdEV4cHJlc3Npb24obS5leHByZXNzaW9uLCExKTtpZihlLmlzSWRlbnRpZmllcihmKSl7dmFyIFQ9ZS5maW5kUHJlY2VkaW5nVG9rZW4obS5wYXJlbnQucG9zLGxlKTtUJiZULmtpbmQhPT0xMDMmJihHPW0ucGFyZW50KX19US5yZXBsYWNlTm9kZShsZSxHLG0uZXhwcmVzc2lvbil9fX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9W2UuRGlhZ25vc3RpY3MuQV90eXBlX29ubHlfaW1wb3J0X2Nhbl9zcGVjaWZ5X2FfZGVmYXVsdF9pbXBvcnRfb3JfbmFtZWRfYmluZGluZ3NfYnV0X25vdF9ib3RoLmNvZGVdLEI9XCJzcGxpdFR5cGVPbmx5SW1wb3J0XCI7Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6dyxmaXhJZHM6W0JdLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKE4pe3ZhciBwPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKE4sZnVuY3Rpb24obSl7cmV0dXJuIFEobSxFKE4uc291cmNlRmlsZSxOLnNwYW4pLE4pfSk7aWYocC5sZW5ndGgpcmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbihCLHAsZS5EaWFnbm9zdGljcy5TcGxpdF9pbnRvX3R3b19zZXBhcmF0ZV9pbXBvcnRfZGVjbGFyYXRpb25zLEIsZS5EaWFnbm9zdGljcy5TcGxpdF9hbGxfaW52YWxpZF90eXBlX29ubHlfaW1wb3J0cyldfSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihsZSl7cmV0dXJuIEMuY29kZUZpeEFsbChsZSx3LGZ1bmN0aW9uKE4scCl7UShOLEUobGUuc291cmNlRmlsZSxwKSxsZSl9KX19KTtmdW5jdGlvbiBFKGxlLE4pe3JldHVybiBlLmZpbmRBbmNlc3RvcihlLmdldFRva2VuQXRQb3NpdGlvbihsZSxOLnN0YXJ0KSxlLmlzSW1wb3J0RGVjbGFyYXRpb24pfWZ1bmN0aW9uIFEobGUsTixwKXtpZighIU4pe3ZhciBtPWUuRGVidWcuY2hlY2tEZWZpbmVkKE4uaW1wb3J0Q2xhdXNlKTtsZS5yZXBsYWNlTm9kZShwLnNvdXJjZUZpbGUsTixlLmZhY3RvcnkudXBkYXRlSW1wb3J0RGVjbGFyYXRpb24oTixOLmRlY29yYXRvcnMsTi5tb2RpZmllcnMsZS5mYWN0b3J5LnVwZGF0ZUltcG9ydENsYXVzZShtLG0uaXNUeXBlT25seSxtLm5hbWUsdm9pZCAwKSxOLm1vZHVsZVNwZWNpZmllcixOLmFzc2VydENsYXVzZSkpLGxlLmluc2VydE5vZGVBZnRlcihwLnNvdXJjZUZpbGUsTixlLmZhY3RvcnkuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxlLmZhY3RvcnkudXBkYXRlSW1wb3J0Q2xhdXNlKG0sbS5pc1R5cGVPbmx5LHZvaWQgMCxtLm5hbWVkQmluZGluZ3MpLE4ubW9kdWxlU3BlY2lmaWVyLE4uYXNzZXJ0Q2xhdXNlKSl9fX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhDb252ZXJ0Q29uc3RUb0xldFwiLEI9W2UuRGlhZ25vc3RpY3MuQ2Fubm90X2Fzc2lnbl90b18wX2JlY2F1c2VfaXRfaXNfYV9jb25zdGFudC5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpCLGdldENvZGVBY3Rpb25zOmZ1bmN0aW9uKE4pe3ZhciBwPU4uc291cmNlRmlsZSxtPU4uc3BhbixHPU4ucHJvZ3JhbSxvZT1FKHAsbS5zdGFydCxHKTtpZihvZSE9PXZvaWQgMCl7dmFyIGY9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoTixmdW5jdGlvbihUKXtyZXR1cm4gUShULHAsb2UpfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LGYsZS5EaWFnbm9zdGljcy5Db252ZXJ0X2NvbnN0X3RvX2xldCx3LGUuRGlhZ25vc3RpY3MuQ29udmVydF9jb25zdF90b19sZXQpXX19LGZpeElkczpbd119KTtmdW5jdGlvbiBFKGxlLE4scCl7dmFyIG0sRz1wLmdldFR5cGVDaGVja2VyKCksb2U9Ry5nZXRTeW1ib2xBdExvY2F0aW9uKGUuZ2V0VG9rZW5BdFBvc2l0aW9uKGxlLE4pKSxmPWUudHJ5Q2FzdCgobT1vZT09bnVsbD92b2lkIDA6b2UudmFsdWVEZWNsYXJhdGlvbik9PT1udWxsfHxtPT09dm9pZCAwP3ZvaWQgMDptLnBhcmVudCxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpO2lmKGYhPT12b2lkIDApe3ZhciBUPWUuZmluZENoaWxkT2ZLaW5kKGYsODUsbGUpO2lmKFQhPT12b2lkIDApcmV0dXJuIGUuY3JlYXRlUmFuZ2UoVC5wb3MsVC5lbmQpfX1mdW5jdGlvbiBRKGxlLE4scCl7bGUucmVwbGFjZVJhbmdlV2l0aFRleHQoTixwLFwibGV0XCIpfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJmaXhFeHBlY3RlZENvbW1hXCIsQj1lLkRpYWdub3N0aWNzLl8wX2V4cGVjdGVkLmNvZGUsRT1bQl07Qy5yZWdpc3RlckNvZGVGaXgoe2Vycm9yQ29kZXM6RSxnZXRDb2RlQWN0aW9uczpmdW5jdGlvbihOKXt2YXIgcD1OLnNvdXJjZUZpbGUsbT1RKHAsTi5zcGFuLnN0YXJ0LE4uZXJyb3JDb2RlKTtpZighIW0pe3ZhciBHPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKE4sZnVuY3Rpb24ob2Upe3JldHVybiBsZShvZSxwLG0pfSk7cmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LEcsW2UuRGlhZ25vc3RpY3MuQ2hhbmdlXzBfdG9fMSxcIjtcIixcIixcIl0sdyxbZS5EaWFnbm9zdGljcy5DaGFuZ2VfMF90b18xLFwiO1wiLFwiLFwiXSldfX0sZml4SWRzOlt3XSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihOKXtyZXR1cm4gQy5jb2RlRml4QWxsKE4sRSxmdW5jdGlvbihwLG0pe3ZhciBHPVEobS5maWxlLG0uc3RhcnQsbS5jb2RlKTtHJiZsZShwLE4uc291cmNlRmlsZSxHKX0pfX0pO2Z1bmN0aW9uIFEoTixwLG0pe3ZhciBHPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKE4scCk7cmV0dXJuIEcua2luZD09PTI2JiZHLnBhcmVudCYmKGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihHLnBhcmVudCl8fGUuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKEcucGFyZW50KSk/e25vZGU6R306dm9pZCAwfWZ1bmN0aW9uIGxlKE4scCxtKXt2YXIgRz1tLm5vZGUsb2U9ZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDI3KTtOLnJlcGxhY2VOb2RlKHAsRyxvZSl9fSkoYT1lLmNvZGVmaXh8fChlLmNvZGVmaXg9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cImFkZFZvaWRUb1Byb21pc2VcIixCPVwiYWRkVm9pZFRvUHJvbWlzZVwiLEU9W2UuRGlhZ25vc3RpY3MuRXhwZWN0ZWRfMV9hcmd1bWVudF9idXRfZ290XzBfbmV3X1Byb21pc2VfbmVlZHNfYV9KU0RvY19oaW50X3RvX3Byb2R1Y2VfYV9yZXNvbHZlX3RoYXRfY2FuX2JlX2NhbGxlZF93aXRob3V0X2FyZ3VtZW50cy5jb2RlLGUuRGlhZ25vc3RpY3MuRXhwZWN0ZWRfMF9hcmd1bWVudHNfYnV0X2dvdF8xX0RpZF95b3VfZm9yZ2V0X3RvX2luY2x1ZGVfdm9pZF9pbl95b3VyX3R5cGVfYXJndW1lbnRfdG9fUHJvbWlzZS5jb2RlXTtDLnJlZ2lzdGVyQ29kZUZpeCh7ZXJyb3JDb2RlczpFLGZpeElkczpbQl0sZ2V0Q29kZUFjdGlvbnM6ZnVuY3Rpb24oTil7dmFyIHA9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoTixmdW5jdGlvbihtKXtyZXR1cm4gUShtLE4uc291cmNlRmlsZSxOLnNwYW4sTi5wcm9ncmFtKX0pO2lmKHAubGVuZ3RoPjApcmV0dXJuW0MuY3JlYXRlQ29kZUZpeEFjdGlvbih3LHAsZS5EaWFnbm9zdGljcy5BZGRfdm9pZF90b19Qcm9taXNlX3Jlc29sdmVkX3dpdGhvdXRfYV92YWx1ZSxCLGUuRGlhZ25vc3RpY3MuQWRkX3ZvaWRfdG9fYWxsX1Byb21pc2VzX3Jlc29sdmVkX3dpdGhvdXRfYV92YWx1ZSldfSxnZXRBbGxDb2RlQWN0aW9uczpmdW5jdGlvbihOKXtyZXR1cm4gQy5jb2RlRml4QWxsKE4sRSxmdW5jdGlvbihwLG0pe3JldHVybiBRKHAsbS5maWxlLG0sTi5wcm9ncmFtLG5ldyBlLlNldCl9KX19KTtmdW5jdGlvbiBRKE4scCxtLEcsb2Upe3ZhciBmPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKHAsbS5zdGFydCk7aWYoISghZS5pc0lkZW50aWZpZXIoZil8fCFlLmlzQ2FsbEV4cHJlc3Npb24oZi5wYXJlbnQpfHxmLnBhcmVudC5leHByZXNzaW9uIT09Znx8Zi5wYXJlbnQuYXJndW1lbnRzLmxlbmd0aCE9PTApKXt2YXIgVD1HLmdldFR5cGVDaGVja2VyKCksSz1ULmdldFN5bWJvbEF0TG9jYXRpb24oZiksYj1LPT1udWxsP3ZvaWQgMDpLLnZhbHVlRGVjbGFyYXRpb247aWYoISghYnx8IWUuaXNQYXJhbWV0ZXIoYil8fCFlLmlzTmV3RXhwcmVzc2lvbihiLnBhcmVudC5wYXJlbnQpKSYmIShvZSE9bnVsbCYmb2UuaGFzKGIpKSl7b2U9PW51bGx8fG9lLmFkZChiKTt2YXIgc2U9bGUoYi5wYXJlbnQucGFyZW50KTtpZihlLnNvbWUoc2UpKXt2YXIgSj1zZVswXSxpZT0hZS5pc1VuaW9uVHlwZU5vZGUoSikmJiFlLmlzUGFyZW50aGVzaXplZFR5cGVOb2RlKEopJiZlLmlzUGFyZW50aGVzaXplZFR5cGVOb2RlKGUuZmFjdG9yeS5jcmVhdGVVbmlvblR5cGVOb2RlKFtKLGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUoMTE0KV0pLnR5cGVzWzBdKTtpZSYmTi5pbnNlcnRUZXh0KHAsSi5wb3MsXCIoXCIpLE4uaW5zZXJ0VGV4dChwLEouZW5kLGllP1wiKSB8IHZvaWRcIjpcIiB8IHZvaWRcIil9ZWxzZXt2YXIgUj1ULmdldFJlc29sdmVkU2lnbmF0dXJlKGYucGFyZW50KSxxPVI9PW51bGw/dm9pZCAwOlIucGFyYW1ldGVyc1swXSxPPXEmJlQuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihxLGIucGFyZW50LnBhcmVudCk7ZS5pc0luSlNGaWxlKGIpPyghT3x8Ty5mbGFncyYzKSYmKE4uaW5zZXJ0VGV4dChwLGIucGFyZW50LnBhcmVudC5lbmQsXCIpXCIpLE4uaW5zZXJ0VGV4dChwLGUuc2tpcFRyaXZpYShwLnRleHQsYi5wYXJlbnQucGFyZW50LnBvcyksXCIvKiogQHR5cGUge1Byb21pc2U8dm9pZD59ICovKFwiKSk6KCFPfHxPLmZsYWdzJjIpJiZOLmluc2VydFRleHQocCxiLnBhcmVudC5wYXJlbnQuZXhwcmVzc2lvbi5lbmQsXCI8dm9pZD5cIil9fX19ZnVuY3Rpb24gbGUoTil7dmFyIHA7aWYoZS5pc0luSlNGaWxlKE4pKXtpZihlLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24oTi5wYXJlbnQpKXt2YXIgbT0ocD1lLmdldEpTRG9jVHlwZVRhZyhOLnBhcmVudCkpPT09bnVsbHx8cD09PXZvaWQgMD92b2lkIDA6cC50eXBlRXhwcmVzc2lvbi50eXBlO2lmKG0mJmUuaXNUeXBlUmVmZXJlbmNlTm9kZShtKSYmZS5pc0lkZW50aWZpZXIobS50eXBlTmFtZSkmJmUuaWRUZXh0KG0udHlwZU5hbWUpPT09XCJQcm9taXNlXCIpcmV0dXJuIG0udHlwZUFyZ3VtZW50c319ZWxzZSByZXR1cm4gTi50eXBlQXJndW1lbnRzfX0pKGE9ZS5jb2RlZml4fHwoZS5jb2RlZml4PXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc9XCJDb252ZXJ0IGV4cG9ydFwiLEI9e25hbWU6XCJDb252ZXJ0IGRlZmF1bHQgZXhwb3J0IHRvIG5hbWVkIGV4cG9ydFwiLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuQ29udmVydF9kZWZhdWx0X2V4cG9ydF90b19uYW1lZF9leHBvcnQubWVzc2FnZSxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5leHBvcnQubmFtZWRcIn0sRT17bmFtZTpcIkNvbnZlcnQgbmFtZWQgZXhwb3J0IHRvIGRlZmF1bHQgZXhwb3J0XCIsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5Db252ZXJ0X25hbWVkX2V4cG9ydF90b19kZWZhdWx0X2V4cG9ydC5tZXNzYWdlLGtpbmQ6XCJyZWZhY3Rvci5yZXdyaXRlLmV4cG9ydC5kZWZhdWx0XCJ9O0MucmVnaXN0ZXJSZWZhY3Rvcih3LHtraW5kczpbQi5raW5kLEUua2luZF0sZ2V0QXZhaWxhYmxlQWN0aW9uczpmdW5jdGlvbihLKXt2YXIgYj1RKEssSy50cmlnZ2VyUmVhc29uPT09XCJpbnZva2VkXCIpO2lmKCFiKXJldHVybiBlLmVtcHR5QXJyYXk7aWYoIUMuaXNSZWZhY3RvckVycm9ySW5mbyhiKSl7dmFyIHNlPWIud2FzRGVmYXVsdD9COkU7cmV0dXJuW3tuYW1lOncsZGVzY3JpcHRpb246c2UuZGVzY3JpcHRpb24sYWN0aW9uczpbc2VdfV19cmV0dXJuIEsucHJlZmVyZW5jZXMucHJvdmlkZVJlZmFjdG9yTm90QXBwbGljYWJsZVJlYXNvbj9be25hbWU6dyxkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkNvbnZlcnRfZGVmYXVsdF9leHBvcnRfdG9fbmFtZWRfZXhwb3J0Lm1lc3NhZ2UsYWN0aW9uczpbS2UoS2Uoe30sQikse25vdEFwcGxpY2FibGVSZWFzb246Yi5lcnJvcn0pLEtlKEtlKHt9LEUpLHtub3RBcHBsaWNhYmxlUmVhc29uOmIuZXJyb3J9KV19XTplLmVtcHR5QXJyYXl9LGdldEVkaXRzRm9yQWN0aW9uOmZ1bmN0aW9uKEssYil7ZS5EZWJ1Zy5hc3NlcnQoYj09PUIubmFtZXx8Yj09PUUubmFtZSxcIlVuZXhwZWN0ZWQgYWN0aW9uIG5hbWVcIik7dmFyIHNlPVEoSyk7ZS5EZWJ1Zy5hc3NlcnQoc2UmJiFDLmlzUmVmYWN0b3JFcnJvckluZm8oc2UpLFwiRXhwZWN0ZWQgYXBwbGljYWJsZSByZWZhY3RvciBpbmZvXCIpO3ZhciBKPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKEssZnVuY3Rpb24oaWUpe3JldHVybiBsZShLLmZpbGUsSy5wcm9ncmFtLHNlLGllLEsuY2FuY2VsbGF0aW9uVG9rZW4pfSk7cmV0dXJue2VkaXRzOkoscmVuYW1lRmlsZW5hbWU6dm9pZCAwLHJlbmFtZUxvY2F0aW9uOnZvaWQgMH19fSk7ZnVuY3Rpb24gUShULEspe0s9PT12b2lkIDAmJihLPSEwKTt2YXIgYj1ULmZpbGUsc2U9VC5wcm9ncmFtLEo9ZS5nZXRSZWZhY3RvckNvbnRleHRTcGFuKFQpLGllPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKGIsSi5zdGFydCksUj0hIShpZS5wYXJlbnQmJmUuZ2V0U3ludGFjdGljTW9kaWZpZXJGbGFncyhpZS5wYXJlbnQpJjEpJiZLP2llLnBhcmVudDplLmdldFBhcmVudE5vZGVJblNwYW4oaWUsYixKKTtpZighUnx8IWUuaXNTb3VyY2VGaWxlKFIucGFyZW50KSYmIShlLmlzTW9kdWxlQmxvY2soUi5wYXJlbnQpJiZlLmlzQW1iaWVudE1vZHVsZShSLnBhcmVudC5wYXJlbnQpKSlyZXR1cm57ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9leHBvcnRfc3RhdGVtZW50KX07dmFyIHE9ZS5pc1NvdXJjZUZpbGUoUi5wYXJlbnQpP1IucGFyZW50LnN5bWJvbDpSLnBhcmVudC5wYXJlbnQuc3ltYm9sLE89ZS5nZXRTeW50YWN0aWNNb2RpZmllckZsYWdzKFIpfHwoZS5pc0V4cG9ydEFzc2lnbm1lbnQoUikmJiFSLmlzRXhwb3J0RXF1YWxzPzUxMzowKSx2ZT0hIShPJjUxMik7aWYoIShPJjEpfHwhdmUmJnEuZXhwb3J0cy5oYXMoXCJkZWZhdWx0XCIpKXJldHVybntlcnJvcjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLlRoaXNfZmlsZV9hbHJlYWR5X2hhc19hX2RlZmF1bHRfZXhwb3J0KX07dmFyIGVlPXNlLmdldFR5cGVDaGVja2VyKCksaGU9ZnVuY3Rpb24oJCl7cmV0dXJuIGUuaXNJZGVudGlmaWVyKCQpJiZlZS5nZXRTeW1ib2xBdExvY2F0aW9uKCQpP3ZvaWQgMDp7ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5DYW5fb25seV9jb252ZXJ0X25hbWVkX2V4cG9ydCl9fTtzd2l0Y2goUi5raW5kKXtjYXNlIDI1NjpjYXNlIDI1NzpjYXNlIDI1ODpjYXNlIDI2MDpjYXNlIDI1OTpjYXNlIDI2MTp7dmFyIEY9UjtyZXR1cm4gRi5uYW1lP2hlKEYubmFtZSl8fHtleHBvcnROb2RlOkYsZXhwb3J0TmFtZTpGLm5hbWUsd2FzRGVmYXVsdDp2ZSxleHBvcnRpbmdNb2R1bGVTeW1ib2w6cX06dm9pZCAwfWNhc2UgMjM3Ont2YXIgeD1SO2lmKCEoeC5kZWNsYXJhdGlvbkxpc3QuZmxhZ3MmMil8fHguZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucy5sZW5ndGghPT0xKXJldHVybjt2YXIgWD1lLmZpcnN0KHguZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucyk7cmV0dXJuIFguaW5pdGlhbGl6ZXI/KGUuRGVidWcuYXNzZXJ0KCF2ZSxcIkNhbid0IGhhdmUgYSBkZWZhdWx0IGZsYWcgaGVyZVwiKSxoZShYLm5hbWUpfHx7ZXhwb3J0Tm9kZTp4LGV4cG9ydE5hbWU6WC5uYW1lLHdhc0RlZmF1bHQ6dmUsZXhwb3J0aW5nTW9kdWxlU3ltYm9sOnF9KTp2b2lkIDB9Y2FzZSAyNzE6e3ZhciBGPVI7cmV0dXJuIEYuaXNFeHBvcnRFcXVhbHM/dm9pZCAwOmhlKEYuZXhwcmVzc2lvbil8fHtleHBvcnROb2RlOkYsZXhwb3J0TmFtZTpGLmV4cHJlc3Npb24sd2FzRGVmYXVsdDp2ZSxleHBvcnRpbmdNb2R1bGVTeW1ib2w6cX19ZGVmYXVsdDpyZXR1cm59fWZ1bmN0aW9uIGxlKFQsSyxiLHNlLEope04oVCxiLHNlLEsuZ2V0VHlwZUNoZWNrZXIoKSkscChLLGIsc2UsSil9ZnVuY3Rpb24gTihULEssYixzZSl7dmFyIEo9Sy53YXNEZWZhdWx0LGllPUsuZXhwb3J0Tm9kZSxSPUsuZXhwb3J0TmFtZTtpZihKKWlmKGUuaXNFeHBvcnRBc3NpZ25tZW50KGllKSYmIWllLmlzRXhwb3J0RXF1YWxzKXt2YXIgcT1pZS5leHByZXNzaW9uLE89ZihxLnRleHQscS50ZXh0KTtiLnJlcGxhY2VOb2RlKFQsaWUsZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsITEsZS5mYWN0b3J5LmNyZWF0ZU5hbWVkRXhwb3J0cyhbT10pKSl9ZWxzZSBiLmRlbGV0ZShULGUuRGVidWcuY2hlY2tEZWZpbmVkKGUuZmluZE1vZGlmaWVyKGllLDg4KSxcIlNob3VsZCBmaW5kIGEgZGVmYXVsdCBrZXl3b3JkIGluIG1vZGlmaWVyIGxpc3RcIikpO2Vsc2V7dmFyIHZlPWUuRGVidWcuY2hlY2tEZWZpbmVkKGUuZmluZE1vZGlmaWVyKGllLDkzKSxcIlNob3VsZCBmaW5kIGFuIGV4cG9ydCBrZXl3b3JkIGluIG1vZGlmaWVyIGxpc3RcIik7c3dpdGNoKGllLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjU3OmNhc2UgMjU4OmIuaW5zZXJ0Tm9kZUFmdGVyKFQsdmUsZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDg4KSk7YnJlYWs7Y2FzZSAyMzc6dmFyIGVlPWUuZmlyc3QoaWUuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9ucyk7aWYoIWUuRmluZEFsbFJlZmVyZW5jZXMuQ29yZS5pc1N5bWJvbFJlZmVyZW5jZWRJbkZpbGUoUixzZSxUKSYmIWVlLnR5cGUpe2IucmVwbGFjZU5vZGUoVCxpZSxlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVmYXVsdChlLkRlYnVnLmNoZWNrRGVmaW5lZChlZS5pbml0aWFsaXplcixcIkluaXRpYWxpemVyIHdhcyBwcmV2aW91c2x5IGtub3duIHRvIGJlIHByZXNlbnRcIikpKTticmVha31jYXNlIDI2MDpjYXNlIDI1OTpjYXNlIDI2MTpiLmRlbGV0ZU1vZGlmaWVyKFQsdmUpLGIuaW5zZXJ0Tm9kZUFmdGVyKFQsaWUsZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydERlZmF1bHQoZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoUi50ZXh0KSkpO2JyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsKFwiVW5leHBlY3RlZCBleHBvcnROb2RlIGtpbmQgXCIuY29uY2F0KGllLmtpbmQpKX19fWZ1bmN0aW9uIHAoVCxLLGIsc2Upe3ZhciBKPUsud2FzRGVmYXVsdCxpZT1LLmV4cG9ydE5hbWUsUj1LLmV4cG9ydGluZ01vZHVsZVN5bWJvbCxxPVQuZ2V0VHlwZUNoZWNrZXIoKSxPPWUuRGVidWcuY2hlY2tEZWZpbmVkKHEuZ2V0U3ltYm9sQXRMb2NhdGlvbihpZSksXCJFeHBvcnQgbmFtZSBzaG91bGQgcmVzb2x2ZSB0byBhIHN5bWJvbFwiKTtlLkZpbmRBbGxSZWZlcmVuY2VzLkNvcmUuZWFjaEV4cG9ydFJlZmVyZW5jZShULmdldFNvdXJjZUZpbGVzKCkscSxzZSxPLFIsaWUudGV4dCxKLGZ1bmN0aW9uKHZlKXt2YXIgZWU9dmUuZ2V0U291cmNlRmlsZSgpO0o/bShlZSx2ZSxiLGllLnRleHQpOkcoZWUsdmUsYil9KX1mdW5jdGlvbiBtKFQsSyxiLHNlKXt2YXIgSj1LLnBhcmVudDtzd2l0Y2goSi5raW5kKXtjYXNlIDIwNjpiLnJlcGxhY2VOb2RlKFQsSyxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihzZSkpO2JyZWFrO2Nhc2UgMjcwOmNhc2UgMjc1Ont2YXIgaWU9SjtiLnJlcGxhY2VOb2RlKFQsaWUsb2Uoc2UsaWUubmFtZS50ZXh0KSk7YnJlYWt9Y2FzZSAyNjc6e3ZhciBSPUo7ZS5EZWJ1Zy5hc3NlcnQoUi5uYW1lPT09SyxcIkltcG9ydCBjbGF1c2UgbmFtZSBzaG91bGQgbWF0Y2ggcHJvdmlkZWQgcmVmXCIpO3ZhciBpZT1vZShzZSxLLnRleHQpLHE9Ui5uYW1lZEJpbmRpbmdzO2lmKCFxKWIucmVwbGFjZU5vZGUoVCxLLGUuZmFjdG9yeS5jcmVhdGVOYW1lZEltcG9ydHMoW2llXSkpO2Vsc2UgaWYocS5raW5kPT09MjY4KXtiLmRlbGV0ZVJhbmdlKFQse3BvczpLLmdldFN0YXJ0KFQpLGVuZDpxLmdldFN0YXJ0KFQpfSk7dmFyIE89ZS5pc1N0cmluZ0xpdGVyYWwoUi5wYXJlbnQubW9kdWxlU3BlY2lmaWVyKT9lLnF1b3RlUHJlZmVyZW5jZUZyb21TdHJpbmcoUi5wYXJlbnQubW9kdWxlU3BlY2lmaWVyLFQpOjEsdmU9ZS5tYWtlSW1wb3J0KHZvaWQgMCxbb2Uoc2UsSy50ZXh0KV0sUi5wYXJlbnQubW9kdWxlU3BlY2lmaWVyLE8pO2IuaW5zZXJ0Tm9kZUFmdGVyKFQsUi5wYXJlbnQsdmUpfWVsc2UgYi5kZWxldGUoVCxLKSxiLmluc2VydE5vZGVBdEVuZE9mTGlzdChULHEuZWxlbWVudHMsaWUpO2JyZWFrfWNhc2UgMjAwOnZhciBlZT1KO2IucmVwbGFjZU5vZGUoVCxKLGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRUeXBlTm9kZShlZS5hcmd1bWVudCxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihzZSksZWUudHlwZUFyZ3VtZW50cyxlZS5pc1R5cGVPZikpO2JyZWFrO2RlZmF1bHQ6ZS5EZWJ1Zy5mYWlsQmFkU3ludGF4S2luZChKKX19ZnVuY3Rpb24gRyhULEssYil7dmFyIHNlPUsucGFyZW50O3N3aXRjaChzZS5raW5kKXtjYXNlIDIwNjpiLnJlcGxhY2VOb2RlKFQsSyxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcImRlZmF1bHRcIikpO2JyZWFrO2Nhc2UgMjcwOnt2YXIgSj1lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihzZS5uYW1lLnRleHQpO3NlLnBhcmVudC5lbGVtZW50cy5sZW5ndGg9PT0xP2IucmVwbGFjZU5vZGUoVCxzZS5wYXJlbnQsSik6KGIuZGVsZXRlKFQsc2UpLGIuaW5zZXJ0Tm9kZUJlZm9yZShULHNlLnBhcmVudCxKKSk7YnJlYWt9Y2FzZSAyNzU6e2IucmVwbGFjZU5vZGUoVCxzZSxmKFwiZGVmYXVsdFwiLHNlLm5hbWUudGV4dCkpO2JyZWFrfWRlZmF1bHQ6ZS5EZWJ1Zy5hc3NlcnROZXZlcihzZSxcIlVuZXhwZWN0ZWQgcGFyZW50IGtpbmQgXCIuY29uY2F0KHNlLmtpbmQpKX19ZnVuY3Rpb24gb2UoVCxLKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUltcG9ydFNwZWNpZmllcighMSxUPT09Sz92b2lkIDA6ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoVCksZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoSykpfWZ1bmN0aW9uIGYoVCxLKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydFNwZWNpZmllcighMSxUPT09Sz92b2lkIDA6ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoVCksZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoSykpfX0pKGE9ZS5yZWZhY3Rvcnx8KGUucmVmYWN0b3I9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdyxCPVwiQ29udmVydCBpbXBvcnRcIixFPSh3PXt9LHdbMF09e25hbWU6XCJDb252ZXJ0IG5hbWVzcGFjZSBpbXBvcnQgdG8gbmFtZWQgaW1wb3J0c1wiLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuQ29udmVydF9uYW1lc3BhY2VfaW1wb3J0X3RvX25hbWVkX2ltcG9ydHMubWVzc2FnZSxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5pbXBvcnQubmFtZWRcIn0sd1syXT17bmFtZTpcIkNvbnZlcnQgbmFtZWQgaW1wb3J0cyB0byBuYW1lc3BhY2UgaW1wb3J0XCIsZGVzY3JpcHRpb246ZS5EaWFnbm9zdGljcy5Db252ZXJ0X25hbWVkX2ltcG9ydHNfdG9fbmFtZXNwYWNlX2ltcG9ydC5tZXNzYWdlLGtpbmQ6XCJyZWZhY3Rvci5yZXdyaXRlLmltcG9ydC5uYW1lc3BhY2VcIn0sd1sxXT17bmFtZTpcIkNvbnZlcnQgbmFtZWQgaW1wb3J0cyB0byBkZWZhdWx0IGltcG9ydFwiLGRlc2NyaXB0aW9uOmUuRGlhZ25vc3RpY3MuQ29udmVydF9uYW1lZF9pbXBvcnRzX3RvX2RlZmF1bHRfaW1wb3J0Lm1lc3NhZ2Usa2luZDpcInJlZmFjdG9yLnJld3JpdGUuaW1wb3J0LmRlZmF1bHRcIn0sdyk7Qy5yZWdpc3RlclJlZmFjdG9yKEIse2tpbmRzOmUuZ2V0T3duVmFsdWVzKEUpLm1hcChmdW5jdGlvbihLKXtyZXR1cm4gSy5raW5kfSksZ2V0QXZhaWxhYmxlQWN0aW9uczpmdW5jdGlvbihiKXt2YXIgc2U9UShiLGIudHJpZ2dlclJlYXNvbj09PVwiaW52b2tlZFwiKTtpZighc2UpcmV0dXJuIGUuZW1wdHlBcnJheTtpZighQy5pc1JlZmFjdG9yRXJyb3JJbmZvKHNlKSl7dmFyIEo9RVtzZS5jb252ZXJ0VG9dO3JldHVyblt7bmFtZTpCLGRlc2NyaXB0aW9uOkouZGVzY3JpcHRpb24sYWN0aW9uczpbSl19XX1yZXR1cm4gYi5wcmVmZXJlbmNlcy5wcm92aWRlUmVmYWN0b3JOb3RBcHBsaWNhYmxlUmVhc29uP2UuZ2V0T3duVmFsdWVzKEUpLm1hcChmdW5jdGlvbihpZSl7cmV0dXJue25hbWU6QixkZXNjcmlwdGlvbjppZS5kZXNjcmlwdGlvbixhY3Rpb25zOltLZShLZSh7fSxpZSkse25vdEFwcGxpY2FibGVSZWFzb246c2UuZXJyb3J9KV19fSk6ZS5lbXB0eUFycmF5fSxnZXRFZGl0c0ZvckFjdGlvbjpmdW5jdGlvbihiLHNlKXtlLkRlYnVnLmFzc2VydChlLnNvbWUoZS5nZXRPd25WYWx1ZXMoRSksZnVuY3Rpb24oUil7cmV0dXJuIFIubmFtZT09PXNlfSksXCJVbmV4cGVjdGVkIGFjdGlvbiBuYW1lXCIpO3ZhciBKPVEoYik7ZS5EZWJ1Zy5hc3NlcnQoSiYmIUMuaXNSZWZhY3RvckVycm9ySW5mbyhKKSxcIkV4cGVjdGVkIGFwcGxpY2FibGUgcmVmYWN0b3IgaW5mb1wiKTt2YXIgaWU9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoYixmdW5jdGlvbihSKXtyZXR1cm4gTihiLmZpbGUsYi5wcm9ncmFtLFIsSil9KTtyZXR1cm57ZWRpdHM6aWUscmVuYW1lRmlsZW5hbWU6dm9pZCAwLHJlbmFtZUxvY2F0aW9uOnZvaWQgMH19fSk7ZnVuY3Rpb24gUShLLGIpe2I9PT12b2lkIDAmJihiPSEwKTt2YXIgc2U9Sy5maWxlLEo9ZS5nZXRSZWZhY3RvckNvbnRleHRTcGFuKEspLGllPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKHNlLEouc3RhcnQpLFI9Yj9lLmZpbmRBbmNlc3RvcihpZSxlLmlzSW1wb3J0RGVjbGFyYXRpb24pOmUuZ2V0UGFyZW50Tm9kZUluU3BhbihpZSxzZSxKKTtpZighUnx8IWUuaXNJbXBvcnREZWNsYXJhdGlvbihSKSlyZXR1cm57ZXJyb3I6XCJTZWxlY3Rpb24gaXMgbm90IGFuIGltcG9ydCBkZWNsYXJhdGlvbi5cIn07dmFyIHE9Si5zdGFydCtKLmxlbmd0aCxPPWUuZmluZE5leHRUb2tlbihSLFIucGFyZW50LHNlKTtpZighKE8mJnE+Ty5nZXRTdGFydCgpKSl7dmFyIHZlPVIuaW1wb3J0Q2xhdXNlO2lmKCF2ZSlyZXR1cm57ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9pbXBvcnRfY2xhdXNlKX07aWYoIXZlLm5hbWVkQmluZGluZ3MpcmV0dXJue2Vycm9yOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ291bGRfbm90X2ZpbmRfbmFtZXNwYWNlX2ltcG9ydF9vcl9uYW1lZF9pbXBvcnRzKX07aWYodmUubmFtZWRCaW5kaW5ncy5raW5kPT09MjY4KXJldHVybntjb252ZXJ0VG86MCxpbXBvcnQ6dmUubmFtZWRCaW5kaW5nc307dmFyIGVlPWxlKEsucHJvZ3JhbSx2ZSk7cmV0dXJuIGVlP3tjb252ZXJ0VG86MSxpbXBvcnQ6dmUubmFtZWRCaW5kaW5nc306e2NvbnZlcnRUbzoyLGltcG9ydDp2ZS5uYW1lZEJpbmRpbmdzfX19ZnVuY3Rpb24gbGUoSyxiKXtyZXR1cm4gZS5nZXRBbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzKEsuZ2V0Q29tcGlsZXJPcHRpb25zKCkpJiZmKGIucGFyZW50Lm1vZHVsZVNwZWNpZmllcixLLmdldFR5cGVDaGVja2VyKCkpfWZ1bmN0aW9uIE4oSyxiLHNlLEope3ZhciBpZT1iLmdldFR5cGVDaGVja2VyKCk7Si5jb252ZXJ0VG89PT0wP3AoSyxpZSxzZSxKLmltcG9ydCxlLmdldEFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMoYi5nZXRDb21waWxlck9wdGlvbnMoKSkpOm9lKEssYixzZSxKLmltcG9ydCxKLmNvbnZlcnRUbz09PTEpfWZ1bmN0aW9uIHAoSyxiLHNlLEosaWUpe3ZhciBSPSExLHE9W10sTz1uZXcgZS5NYXA7ZS5GaW5kQWxsUmVmZXJlbmNlcy5Db3JlLmVhY2hTeW1ib2xSZWZlcmVuY2VJbkZpbGUoSi5uYW1lLGIsSyxmdW5jdGlvbih5KXtpZighZS5pc1Byb3BlcnR5QWNjZXNzT3JRdWFsaWZpZWROYW1lKHkucGFyZW50KSlSPSEwO2Vsc2V7dmFyIFY9bSh5LnBhcmVudCkudGV4dDtiLnJlc29sdmVOYW1lKFYseSw2NzEwODg2MywhMCkmJk8uc2V0KFYsITApLGUuRGVidWcuYXNzZXJ0KEcoeS5wYXJlbnQpPT09eSxcIlBhcmVudCBleHByZXNzaW9uIHNob3VsZCBtYXRjaCBpZFwiKSxxLnB1c2goeS5wYXJlbnQpfX0pO2Zvcih2YXIgdmU9bmV3IGUuTWFwLGVlPTAsaGU9cTtlZTxoZS5sZW5ndGg7ZWUrKyl7dmFyIEY9aGVbZWVdLHg9bShGKS50ZXh0LFg9dmUuZ2V0KHgpO1g9PT12b2lkIDAmJnZlLnNldCh4LFg9Ty5oYXMoeCk/ZS5nZXRVbmlxdWVOYW1lKHgsSyk6eCksc2UucmVwbGFjZU5vZGUoSyxGLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFgpKX12YXIgJD1bXTt2ZS5mb3JFYWNoKGZ1bmN0aW9uKHksVil7JC5wdXNoKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoITEseT09PVY/dm9pZCAwOmUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFYpLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHkpKSl9KTt2YXIgQT1KLnBhcmVudC5wYXJlbnQ7UiYmIWllP3NlLmluc2VydE5vZGVBZnRlcihLLEEsVChBLHZvaWQgMCwkKSk6c2UucmVwbGFjZU5vZGUoSyxBLFQoQSxSP2UuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEoubmFtZS50ZXh0KTp2b2lkIDAsJCkpfWZ1bmN0aW9uIG0oSyl7cmV0dXJuIGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oSyk/Sy5uYW1lOksucmlnaHR9ZnVuY3Rpb24gRyhLKXtyZXR1cm4gZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihLKT9LLmV4cHJlc3Npb246Sy5sZWZ0fWZ1bmN0aW9uIG9lKEssYixzZSxKLGllKXtpZT09PXZvaWQgMCYmKGllPWxlKGIsSi5wYXJlbnQpKTt2YXIgUj1iLmdldFR5cGVDaGVja2VyKCkscT1KLnBhcmVudC5wYXJlbnQsTz1xLm1vZHVsZVNwZWNpZmllcix2ZT1uZXcgZS5TZXQ7Si5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKFApe3ZhciBrPVIuZ2V0U3ltYm9sQXRMb2NhdGlvbihQLm5hbWUpO2smJnZlLmFkZChrKX0pO3ZhciBlZT1PJiZlLmlzU3RyaW5nTGl0ZXJhbChPKT9lLmNvZGVmaXgubW9kdWxlU3BlY2lmaWVyVG9WYWxpZElkZW50aWZpZXIoTy50ZXh0LDk5KTpcIm1vZHVsZVwiO2Z1bmN0aW9uIGhlKFApe3JldHVybiEhZS5GaW5kQWxsUmVmZXJlbmNlcy5Db3JlLmVhY2hTeW1ib2xSZWZlcmVuY2VJbkZpbGUoUC5uYW1lLFIsSyxmdW5jdGlvbihrKXt2YXIgWT1SLnJlc29sdmVOYW1lKGVlLGssNjcxMDg4NjMsITApO3JldHVybiBZP3ZlLmhhcyhZKT9lLmlzRXhwb3J0U3BlY2lmaWVyKGsucGFyZW50KTohMDohMX0pfWZvcih2YXIgRj1KLmVsZW1lbnRzLnNvbWUoaGUpLHg9Rj9lLmdldFVuaXF1ZU5hbWUoZWUsSyk6ZWUsWD1uZXcgZS5TZXQsJD1mdW5jdGlvbihQKXt2YXIgaz0oUC5wcm9wZXJ0eU5hbWV8fFAubmFtZSkudGV4dDtlLkZpbmRBbGxSZWZlcmVuY2VzLkNvcmUuZWFjaFN5bWJvbFJlZmVyZW5jZUluRmlsZShQLm5hbWUsUixLLGZ1bmN0aW9uKFkpe3ZhciBVPWUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoeCksayk7ZS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChZLnBhcmVudCk/c2UucmVwbGFjZU5vZGUoSyxZLnBhcmVudCxlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBc3NpZ25tZW50KFkudGV4dCxVKSk6ZS5pc0V4cG9ydFNwZWNpZmllcihZLnBhcmVudCk/WC5hZGQoUCk6c2UucmVwbGFjZU5vZGUoSyxZLFUpfSl9LEE9MCx5PUouZWxlbWVudHM7QTx5Lmxlbmd0aDtBKyspe3ZhciBWPXlbQV07JChWKX1pZihzZS5yZXBsYWNlTm9kZShLLEosaWU/ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoeCk6ZS5mYWN0b3J5LmNyZWF0ZU5hbWVzcGFjZUltcG9ydChlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcih4KSkpLFguc2l6ZSl7dmFyIEw9ZS5hcnJheUZyb20oWC52YWx1ZXMoKSkubWFwKGZ1bmN0aW9uKFApe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKFAuaXNUeXBlT25seSxQLnByb3BlcnR5TmFtZSYmZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoUC5wcm9wZXJ0eU5hbWUudGV4dCksZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoUC5uYW1lLnRleHQpKX0pO3NlLmluc2VydE5vZGVBZnRlcihLLEoucGFyZW50LnBhcmVudCxUKHEsdm9pZCAwLEwpKX19Qy5kb0NoYW5nZU5hbWVkVG9OYW1lc3BhY2VPckRlZmF1bHQ9b2U7ZnVuY3Rpb24gZihLLGIpe3ZhciBzZT1iLnJlc29sdmVFeHRlcm5hbE1vZHVsZU5hbWUoSyk7aWYoIXNlKXJldHVybiExO3ZhciBKPWIucmVzb2x2ZUV4dGVybmFsTW9kdWxlU3ltYm9sKHNlKTtyZXR1cm4gc2UhPT1KfWZ1bmN0aW9uIFQoSyxiLHNlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUltcG9ydENsYXVzZSghMSxiLHNlJiZzZS5sZW5ndGg/ZS5mYWN0b3J5LmNyZWF0ZU5hbWVkSW1wb3J0cyhzZSk6dm9pZCAwKSxLLm1vZHVsZVNwZWNpZmllcix2b2lkIDApfX0pKGE9ZS5yZWZhY3Rvcnx8KGUucmVmYWN0b3I9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oQil7dmFyIEU9XCJDb252ZXJ0IHRvIG9wdGlvbmFsIGNoYWluIGV4cHJlc3Npb25cIixRPWUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ29udmVydF90b19vcHRpb25hbF9jaGFpbl9leHByZXNzaW9uKSxsZT17bmFtZTpFLGRlc2NyaXB0aW9uOlEsa2luZDpcInJlZmFjdG9yLnJld3JpdGUuZXhwcmVzc2lvbi5vcHRpb25hbENoYWluXCJ9O0MucmVnaXN0ZXJSZWZhY3RvcihFLHtraW5kczpbbGUua2luZF0sZ2V0RWRpdHNGb3JBY3Rpb246cCxnZXRBdmFpbGFibGVBY3Rpb25zOk59KTtmdW5jdGlvbiBOKEYpe3ZhciB4PWYoRixGLnRyaWdnZXJSZWFzb249PT1cImludm9rZWRcIik7cmV0dXJuIHg/Qy5pc1JlZmFjdG9yRXJyb3JJbmZvKHgpP0YucHJlZmVyZW5jZXMucHJvdmlkZVJlZmFjdG9yTm90QXBwbGljYWJsZVJlYXNvbj9be25hbWU6RSxkZXNjcmlwdGlvbjpRLGFjdGlvbnM6W0tlKEtlKHt9LGxlKSx7bm90QXBwbGljYWJsZVJlYXNvbjp4LmVycm9yfSldfV06ZS5lbXB0eUFycmF5Olt7bmFtZTpFLGRlc2NyaXB0aW9uOlEsYWN0aW9uczpbbGVdfV06ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIHAoRix4KXt2YXIgWD1mKEYpO2UuRGVidWcuYXNzZXJ0KFgmJiFDLmlzUmVmYWN0b3JFcnJvckluZm8oWCksXCJFeHBlY3RlZCBhcHBsaWNhYmxlIHJlZmFjdG9yIGluZm9cIik7dmFyICQ9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoRixmdW5jdGlvbihBKXtyZXR1cm4gaGUoRi5maWxlLEYucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLEEsWCx4KX0pO3JldHVybntlZGl0czokLHJlbmFtZUZpbGVuYW1lOnZvaWQgMCxyZW5hbWVMb2NhdGlvbjp2b2lkIDB9fWZ1bmN0aW9uIG0oRil7cmV0dXJuIGUuaXNCaW5hcnlFeHByZXNzaW9uKEYpfHxlLmlzQ29uZGl0aW9uYWxFeHByZXNzaW9uKEYpfWZ1bmN0aW9uIEcoRil7cmV0dXJuIGUuaXNFeHByZXNzaW9uU3RhdGVtZW50KEYpfHxlLmlzUmV0dXJuU3RhdGVtZW50KEYpfHxlLmlzVmFyaWFibGVTdGF0ZW1lbnQoRil9ZnVuY3Rpb24gb2UoRil7cmV0dXJuIG0oRil8fEcoRil9ZnVuY3Rpb24gZihGLHgpe3g9PT12b2lkIDAmJih4PSEwKTt2YXIgWD1GLmZpbGUsJD1GLnByb2dyYW0sQT1lLmdldFJlZmFjdG9yQ29udGV4dFNwYW4oRikseT1BLmxlbmd0aD09PTA7aWYoISh5JiYheCkpe3ZhciBWPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKFgsQS5zdGFydCksTD1lLmZpbmRUb2tlbk9uTGVmdE9mUG9zaXRpb24oWCxBLnN0YXJ0K0EubGVuZ3RoKSxQPWUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKFYucG9zLEwmJkwuZW5kPj1WLnBvcz9MLmdldEVuZCgpOlYuZ2V0RW5kKCkpLGs9eT9xKFYpOlIoVixQKSxZPWsmJm9lKGspP08oayk6dm9pZCAwO2lmKCFZKXJldHVybntlcnJvcjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkNvdWxkX25vdF9maW5kX2NvbnZlcnRpYmxlX2FjY2Vzc19leHByZXNzaW9uKX07dmFyIFU9JC5nZXRUeXBlQ2hlY2tlcigpO3JldHVybiBlLmlzQ29uZGl0aW9uYWxFeHByZXNzaW9uKFkpP1QoWSxVKTpLKFkpfX1mdW5jdGlvbiBUKEYseCl7dmFyIFg9Ri5jb25kaXRpb24sJD12ZShGLndoZW5UcnVlKTtpZighJHx8eC5pc051bGxhYmxlVHlwZSh4LmdldFR5cGVBdExvY2F0aW9uKCQpKSlyZXR1cm57ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9jb252ZXJ0aWJsZV9hY2Nlc3NfZXhwcmVzc2lvbil9O2lmKChlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFgpfHxlLmlzSWRlbnRpZmllcihYKSkmJnNlKFgsJC5leHByZXNzaW9uKSlyZXR1cm57ZmluYWxFeHByZXNzaW9uOiQsb2NjdXJyZW5jZXM6W1hdLGV4cHJlc3Npb246Rn07aWYoZS5pc0JpbmFyeUV4cHJlc3Npb24oWCkpe3ZhciBBPWIoJC5leHByZXNzaW9uLFgpO3JldHVybiBBP3tmaW5hbEV4cHJlc3Npb246JCxvY2N1cnJlbmNlczpBLGV4cHJlc3Npb246Rn06e2Vycm9yOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ291bGRfbm90X2ZpbmRfbWF0Y2hpbmdfYWNjZXNzX2V4cHJlc3Npb25zKX19fWZ1bmN0aW9uIEsoRil7aWYoRi5vcGVyYXRvclRva2VuLmtpbmQhPT01NSlyZXR1cm57ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5DYW5fb25seV9jb252ZXJ0X2xvZ2ljYWxfQU5EX2FjY2Vzc19jaGFpbnMpfTt2YXIgeD12ZShGLnJpZ2h0KTtpZigheClyZXR1cm57ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9jb252ZXJ0aWJsZV9hY2Nlc3NfZXhwcmVzc2lvbil9O3ZhciBYPWIoeC5leHByZXNzaW9uLEYubGVmdCk7cmV0dXJuIFg/e2ZpbmFsRXhwcmVzc2lvbjp4LG9jY3VycmVuY2VzOlgsZXhwcmVzc2lvbjpGfTp7ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9tYXRjaGluZ19hY2Nlc3NfZXhwcmVzc2lvbnMpfX1mdW5jdGlvbiBiKEYseCl7Zm9yKHZhciBYPVtdO2UuaXNCaW5hcnlFeHByZXNzaW9uKHgpJiZ4Lm9wZXJhdG9yVG9rZW4ua2luZD09PTU1Oyl7dmFyICQ9c2UoZS5za2lwUGFyZW50aGVzZXMoRiksZS5za2lwUGFyZW50aGVzZXMoeC5yaWdodCkpO2lmKCEkKWJyZWFrO1gucHVzaCgkKSxGPSQseD14LmxlZnR9dmFyIEE9c2UoRix4KTtyZXR1cm4gQSYmWC5wdXNoKEEpLFgubGVuZ3RoPjA/WDp2b2lkIDB9ZnVuY3Rpb24gc2UoRix4KXtpZighKCFlLmlzSWRlbnRpZmllcih4KSYmIWUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oeCkmJiFlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oeCkpKXJldHVybiBKKEYseCk/eDp2b2lkIDB9ZnVuY3Rpb24gSihGLHgpe2Zvcig7KGUuaXNDYWxsRXhwcmVzc2lvbihGKXx8ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihGKXx8ZS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKEYpKSYmaWUoRikhPT1pZSh4KTspRj1GLmV4cHJlc3Npb247Zm9yKDtlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEYpJiZlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHgpfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oRikmJmUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbih4KTspe2lmKGllKEYpIT09aWUoeCkpcmV0dXJuITE7Rj1GLmV4cHJlc3Npb24seD14LmV4cHJlc3Npb259cmV0dXJuIGUuaXNJZGVudGlmaWVyKEYpJiZlLmlzSWRlbnRpZmllcih4KSYmRi5nZXRUZXh0KCk9PT14LmdldFRleHQoKX1mdW5jdGlvbiBpZShGKXtpZihlLmlzSWRlbnRpZmllcihGKXx8ZS5pc1N0cmluZ09yTnVtZXJpY0xpdGVyYWxMaWtlKEYpKXJldHVybiBGLmdldFRleHQoKTtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKEYpKXJldHVybiBpZShGLm5hbWUpO2lmKGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihGKSlyZXR1cm4gaWUoRi5hcmd1bWVudEV4cHJlc3Npb24pfWZ1bmN0aW9uIFIoRix4KXtmb3IoO0YucGFyZW50Oyl7aWYob2UoRikmJngubGVuZ3RoIT09MCYmRi5lbmQ+PXguc3RhcnQreC5sZW5ndGgpcmV0dXJuIEY7Rj1GLnBhcmVudH19ZnVuY3Rpb24gcShGKXtmb3IoO0YucGFyZW50Oyl7aWYob2UoRikmJiFvZShGLnBhcmVudCkpcmV0dXJuIEY7Rj1GLnBhcmVudH19ZnVuY3Rpb24gTyhGKXtpZihtKEYpKXJldHVybiBGO2lmKGUuaXNWYXJpYWJsZVN0YXRlbWVudChGKSl7dmFyIHg9ZS5nZXRTaW5nbGVWYXJpYWJsZU9mVmFyaWFibGVTdGF0ZW1lbnQoRiksWD14PT1udWxsP3ZvaWQgMDp4LmluaXRpYWxpemVyO3JldHVybiBYJiZtKFgpP1g6dm9pZCAwfXJldHVybiBGLmV4cHJlc3Npb24mJm0oRi5leHByZXNzaW9uKT9GLmV4cHJlc3Npb246dm9pZCAwfWZ1bmN0aW9uIHZlKEYpe2lmKEY9ZS5za2lwUGFyZW50aGVzZXMoRiksZS5pc0JpbmFyeUV4cHJlc3Npb24oRikpcmV0dXJuIHZlKEYubGVmdCk7aWYoKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRil8fGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihGKXx8ZS5pc0NhbGxFeHByZXNzaW9uKEYpKSYmIWUuaXNPcHRpb25hbENoYWluKEYpKXJldHVybiBGfWZ1bmN0aW9uIGVlKEYseCxYKXtpZihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHgpfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oeCl8fGUuaXNDYWxsRXhwcmVzc2lvbih4KSl7dmFyICQ9ZWUoRix4LmV4cHJlc3Npb24sWCksQT1YLmxlbmd0aD4wP1hbWC5sZW5ndGgtMV06dm9pZCAwLHk9KEE9PW51bGw/dm9pZCAwOkEuZ2V0VGV4dCgpKT09PXguZXhwcmVzc2lvbi5nZXRUZXh0KCk7aWYoeSYmWC5wb3AoKSxlLmlzQ2FsbEV4cHJlc3Npb24oeCkpcmV0dXJuIHk/ZS5mYWN0b3J5LmNyZWF0ZUNhbGxDaGFpbigkLGUuZmFjdG9yeS5jcmVhdGVUb2tlbigyOCkseC50eXBlQXJndW1lbnRzLHguYXJndW1lbnRzKTplLmZhY3RvcnkuY3JlYXRlQ2FsbENoYWluKCQseC5xdWVzdGlvbkRvdFRva2VuLHgudHlwZUFyZ3VtZW50cyx4LmFyZ3VtZW50cyk7aWYoZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbih4KSlyZXR1cm4geT9lLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NDaGFpbigkLGUuZmFjdG9yeS5jcmVhdGVUb2tlbigyOCkseC5uYW1lKTplLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NDaGFpbigkLHgucXVlc3Rpb25Eb3RUb2tlbix4Lm5hbWUpO2lmKGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbih4KSlyZXR1cm4geT9lLmZhY3RvcnkuY3JlYXRlRWxlbWVudEFjY2Vzc0NoYWluKCQsZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDI4KSx4LmFyZ3VtZW50RXhwcmVzc2lvbik6ZS5mYWN0b3J5LmNyZWF0ZUVsZW1lbnRBY2Nlc3NDaGFpbigkLHgucXVlc3Rpb25Eb3RUb2tlbix4LmFyZ3VtZW50RXhwcmVzc2lvbil9cmV0dXJuIHh9ZnVuY3Rpb24gaGUoRix4LFgsJCxBKXt2YXIgeT0kLmZpbmFsRXhwcmVzc2lvbixWPSQub2NjdXJyZW5jZXMsTD0kLmV4cHJlc3Npb24sUD1WW1YubGVuZ3RoLTFdLGs9ZWUoeCx5LFYpO2smJihlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGspfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oayl8fGUuaXNDYWxsRXhwcmVzc2lvbihrKSkmJihlLmlzQmluYXJ5RXhwcmVzc2lvbihMKT9YLnJlcGxhY2VOb2RlUmFuZ2UoRixQLHksayk6ZS5pc0NvbmRpdGlvbmFsRXhwcmVzc2lvbihMKSYmWC5yZXBsYWNlTm9kZShGLEwsZS5mYWN0b3J5LmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oayxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oNjApLEwud2hlbkZhbHNlKSkpfX0pKHc9Qy5jb252ZXJ0VG9PcHRpb25hbENoYWluRXhwcmVzc2lvbnx8KEMuY29udmVydFRvT3B0aW9uYWxDaGFpbkV4cHJlc3Npb249e30pKX0pKGE9ZS5yZWZhY3Rvcnx8KGUucmVmYWN0b3I9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oQil7dmFyIEU9XCJDb252ZXJ0IG92ZXJsb2FkIGxpc3QgdG8gc2luZ2xlIHNpZ25hdHVyZVwiLFE9ZS5EaWFnbm9zdGljcy5Db252ZXJ0X292ZXJsb2FkX2xpc3RfdG9fc2luZ2xlX3NpZ25hdHVyZS5tZXNzYWdlLGxlPXtuYW1lOkUsZGVzY3JpcHRpb246USxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5mdW5jdGlvbi5vdmVybG9hZExpc3RcIn07Qy5yZWdpc3RlclJlZmFjdG9yKEUse2tpbmRzOltsZS5raW5kXSxnZXRFZGl0c0ZvckFjdGlvbjpwLGdldEF2YWlsYWJsZUFjdGlvbnM6Tn0pO2Z1bmN0aW9uIE4ob2Upe3ZhciBmPW9lLmZpbGUsVD1vZS5zdGFydFBvc2l0aW9uLEs9b2UucHJvZ3JhbSxiPUcoZixULEspO3JldHVybiBiP1t7bmFtZTpFLGRlc2NyaXB0aW9uOlEsYWN0aW9uczpbbGVdfV06ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIHAob2Upe3ZhciBmPW9lLmZpbGUsVD1vZS5zdGFydFBvc2l0aW9uLEs9b2UucHJvZ3JhbSxiPUcoZixULEspO2lmKCFiKXJldHVybjt2YXIgc2U9Sy5nZXRUeXBlQ2hlY2tlcigpLEo9YltiLmxlbmd0aC0xXSxpZT1KO3N3aXRjaChKLmtpbmQpe2Nhc2UgMTY4OntpZT1lLmZhY3RvcnkudXBkYXRlTWV0aG9kU2lnbmF0dXJlKEosSi5tb2RpZmllcnMsSi5uYW1lLEoucXVlc3Rpb25Ub2tlbixKLnR5cGVQYXJhbWV0ZXJzLHEoYiksSi50eXBlKTticmVha31jYXNlIDE2OTp7aWU9ZS5mYWN0b3J5LnVwZGF0ZU1ldGhvZERlY2xhcmF0aW9uKEosSi5kZWNvcmF0b3JzLEoubW9kaWZpZXJzLEouYXN0ZXJpc2tUb2tlbixKLm5hbWUsSi5xdWVzdGlvblRva2VuLEoudHlwZVBhcmFtZXRlcnMscShiKSxKLnR5cGUsSi5ib2R5KTticmVha31jYXNlIDE3NDp7aWU9ZS5mYWN0b3J5LnVwZGF0ZUNhbGxTaWduYXR1cmUoSixKLnR5cGVQYXJhbWV0ZXJzLHEoYiksSi50eXBlKTticmVha31jYXNlIDE3MTp7aWU9ZS5mYWN0b3J5LnVwZGF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oSixKLmRlY29yYXRvcnMsSi5tb2RpZmllcnMscShiKSxKLmJvZHkpO2JyZWFrfWNhc2UgMTc1OntpZT1lLmZhY3RvcnkudXBkYXRlQ29uc3RydWN0U2lnbmF0dXJlKEosSi50eXBlUGFyYW1ldGVycyxxKGIpLEoudHlwZSk7YnJlYWt9Y2FzZSAyNTY6e2llPWUuZmFjdG9yeS51cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKEosSi5kZWNvcmF0b3JzLEoubW9kaWZpZXJzLEouYXN0ZXJpc2tUb2tlbixKLm5hbWUsSi50eXBlUGFyYW1ldGVycyxxKGIpLEoudHlwZSxKLmJvZHkpO2JyZWFrfWRlZmF1bHQ6cmV0dXJuIGUuRGVidWcuZmFpbEJhZFN5bnRheEtpbmQoSixcIlVuaGFuZGxlZCBzaWduYXR1cmUga2luZCBpbiBvdmVybG9hZCBsaXN0IGNvbnZlcnNpb24gcmVmYWN0b3JpbmdcIil9aWYoaWU9PT1KKXJldHVybjt2YXIgUj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChvZSxmdW5jdGlvbihlZSl7ZWUucmVwbGFjZU5vZGVSYW5nZShmLGJbMF0sYltiLmxlbmd0aC0xXSxpZSl9KTtyZXR1cm57cmVuYW1lRmlsZW5hbWU6dm9pZCAwLHJlbmFtZUxvY2F0aW9uOnZvaWQgMCxlZGl0czpSfTtmdW5jdGlvbiBxKGVlKXt2YXIgaGU9ZWVbZWUubGVuZ3RoLTFdO3JldHVybiBlLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oaGUpJiZoZS5ib2R5JiYoZWU9ZWUuc2xpY2UoMCxlZS5sZW5ndGgtMSkpLGUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoW2UuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVUb2tlbigyNSksXCJhcmdzXCIsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVVbmlvblR5cGVOb2RlKGUubWFwKGVlLE8pKSldKX1mdW5jdGlvbiBPKGVlKXt2YXIgaGU9ZS5tYXAoZWUucGFyYW1ldGVycyx2ZSk7cmV0dXJuIGUuc2V0RW1pdEZsYWdzKGUuZmFjdG9yeS5jcmVhdGVUdXBsZVR5cGVOb2RlKGhlKSxlLnNvbWUoaGUsZnVuY3Rpb24oRil7cmV0dXJuISFlLmxlbmd0aChlLmdldFN5bnRoZXRpY0xlYWRpbmdDb21tZW50cyhGKSl9KT8wOjEpfWZ1bmN0aW9uIHZlKGVlKXtlLkRlYnVnLmFzc2VydChlLmlzSWRlbnRpZmllcihlZS5uYW1lKSk7dmFyIGhlPWUuc2V0VGV4dFJhbmdlKGUuZmFjdG9yeS5jcmVhdGVOYW1lZFR1cGxlTWVtYmVyKGVlLmRvdERvdERvdFRva2VuLGVlLm5hbWUsZWUucXVlc3Rpb25Ub2tlbixlZS50eXBlfHxlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDEzMCkpLGVlKSxGPWVlLnN5bWJvbCYmZWUuc3ltYm9sLmdldERvY3VtZW50YXRpb25Db21tZW50KHNlKTtpZihGKXt2YXIgeD1lLmRpc3BsYXlQYXJ0c1RvU3RyaW5nKEYpO3gubGVuZ3RoJiZlLnNldFN5bnRoZXRpY0xlYWRpbmdDb21tZW50cyhoZSxbe3RleHQ6YCpcbmAuY29uY2F0KHguc3BsaXQoYFxuYCkubWFwKGZ1bmN0aW9uKFgpe3JldHVyblwiICogXCIuY29uY2F0KFgpfSkuam9pbihgXG5gKSxgXG4gYCksa2luZDozLHBvczotMSxlbmQ6LTEsaGFzVHJhaWxpbmdOZXdMaW5lOiEwLGhhc0xlYWRpbmdOZXdsaW5lOiEwfV0pfXJldHVybiBoZX19ZnVuY3Rpb24gbShvZSl7c3dpdGNoKG9lLmtpbmQpe2Nhc2UgMTY4OmNhc2UgMTY5OmNhc2UgMTc0OmNhc2UgMTcxOmNhc2UgMTc1OmNhc2UgMjU2OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEcob2UsZixUKXt2YXIgSz1lLmdldFRva2VuQXRQb3NpdGlvbihvZSxmKSxiPWUuZmluZEFuY2VzdG9yKEssbSk7aWYoISFiKXt2YXIgc2U9VC5nZXRUeXBlQ2hlY2tlcigpLEo9Yi5zeW1ib2w7aWYoISFKKXt2YXIgaWU9Si5kZWNsYXJhdGlvbnM7aWYoIShlLmxlbmd0aChpZSk8PTEpJiYhIWUuZXZlcnkoaWUsZnVuY3Rpb24oZWUpe3JldHVybiBlLmdldFNvdXJjZUZpbGVPZk5vZGUoZWUpPT09b2V9KSYmISFtKGllWzBdKSl7dmFyIFI9aWVbMF0ua2luZDtpZighIWUuZXZlcnkoaWUsZnVuY3Rpb24oZWUpe3JldHVybiBlZS5raW5kPT09Un0pKXt2YXIgcT1pZTtpZighZS5zb21lKHEsZnVuY3Rpb24oZWUpe3JldHVybiEhZWUudHlwZVBhcmFtZXRlcnN8fGUuc29tZShlZS5wYXJhbWV0ZXJzLGZ1bmN0aW9uKGhlKXtyZXR1cm4hIWhlLmRlY29yYXRvcnN8fCEhaGUubW9kaWZpZXJzfHwhZS5pc0lkZW50aWZpZXIoaGUubmFtZSl9KX0pKXt2YXIgTz1lLm1hcERlZmluZWQocSxmdW5jdGlvbihlZSl7cmV0dXJuIHNlLmdldFNpZ25hdHVyZUZyb21EZWNsYXJhdGlvbihlZSl9KTtpZihlLmxlbmd0aChPKT09PWUubGVuZ3RoKGllKSl7dmFyIHZlPXNlLmdldFJldHVyblR5cGVPZlNpZ25hdHVyZShPWzBdKTtpZighIWUuZXZlcnkoTyxmdW5jdGlvbihlZSl7cmV0dXJuIHNlLmdldFJldHVyblR5cGVPZlNpZ25hdHVyZShlZSk9PT12ZX0pKXJldHVybiBxfX19fX19fX0pKHc9Qy5hZGRPclJlbW92ZUJyYWNlc1RvQXJyb3dGdW5jdGlvbnx8KEMuYWRkT3JSZW1vdmVCcmFjZXNUb0Fycm93RnVuY3Rpb249e30pKX0pKGE9ZS5yZWZhY3Rvcnx8KGUucmVmYWN0b3I9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oQil7dmFyIEU9XCJFeHRyYWN0IFN5bWJvbFwiLFE9e25hbWU6XCJFeHRyYWN0IENvbnN0YW50XCIsZGVzY3JpcHRpb246ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5FeHRyYWN0X2NvbnN0YW50KSxraW5kOlwicmVmYWN0b3IuZXh0cmFjdC5jb25zdGFudFwifSxsZT17bmFtZTpcIkV4dHJhY3QgRnVuY3Rpb25cIixkZXNjcmlwdGlvbjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkV4dHJhY3RfZnVuY3Rpb24pLGtpbmQ6XCJyZWZhY3Rvci5leHRyYWN0LmZ1bmN0aW9uXCJ9O0MucmVnaXN0ZXJSZWZhY3RvcihFLHtraW5kczpbUS5raW5kLGxlLmtpbmRdLGdldEVkaXRzRm9yQWN0aW9uOnAsZ2V0QXZhaWxhYmxlQWN0aW9uczpOfSk7ZnVuY3Rpb24gTihGZSl7dmFyIFo9RmUua2luZCxCZT1vZShGZS5maWxlLGUuZ2V0UmVmYWN0b3JDb250ZXh0U3BhbihGZSksRmUudHJpZ2dlclJlYXNvbj09PVwiaW52b2tlZFwiKSxnZT1CZS50YXJnZXRSYW5nZTtpZihnZT09PXZvaWQgMCl7aWYoIUJlLmVycm9yc3x8QmUuZXJyb3JzLmxlbmd0aD09PTB8fCFGZS5wcmVmZXJlbmNlcy5wcm92aWRlUmVmYWN0b3JOb3RBcHBsaWNhYmxlUmVhc29uKXJldHVybiBlLmVtcHR5QXJyYXk7dmFyIFJlPVtdO3JldHVybiBDLnJlZmFjdG9yS2luZEJlZ2luc1dpdGgobGUua2luZCxaKSYmUmUucHVzaCh7bmFtZTpFLGRlc2NyaXB0aW9uOmxlLmRlc2NyaXB0aW9uLGFjdGlvbnM6W0tlKEtlKHt9LGxlKSx7bm90QXBwbGljYWJsZVJlYXNvbjpOZShCZS5lcnJvcnMpfSldfSksQy5yZWZhY3RvcktpbmRCZWdpbnNXaXRoKFEua2luZCxaKSYmUmUucHVzaCh7bmFtZTpFLGRlc2NyaXB0aW9uOlEuZGVzY3JpcHRpb24sYWN0aW9uczpbS2UoS2Uoe30sUSkse25vdEFwcGxpY2FibGVSZWFzb246TmUoQmUuZXJyb3JzKX0pXX0pLFJlfXZhciB6ZT1pZShnZSxGZSk7aWYoemU9PT12b2lkIDApcmV0dXJuIGUuZW1wdHlBcnJheTtmb3IodmFyIEVlPVtdLEhlPW5ldyBlLk1hcCxycixJZT1bXSxfZT1uZXcgZS5NYXAsd2UsZGU9MCx5ZT0wLEFlPXplO3llPEFlLmxlbmd0aDt5ZSsrKXt2YXIgZXI9QWVbeWVdLGlyPWVyLmZ1bmN0aW9uRXh0cmFjdGlvbixDcj1lci5jb25zdGFudEV4dHJhY3Rpb24sWWU9aXIuZGVzY3JpcHRpb247aWYoQy5yZWZhY3RvcktpbmRCZWdpbnNXaXRoKGxlLmtpbmQsWikmJihpci5lcnJvcnMubGVuZ3RoPT09MD9IZS5oYXMoWWUpfHwoSGUuc2V0KFllLCEwKSxFZS5wdXNoKHtkZXNjcmlwdGlvbjpZZSxuYW1lOlwiZnVuY3Rpb25fc2NvcGVfXCIuY29uY2F0KGRlKSxraW5kOmxlLmtpbmR9KSk6cnJ8fChycj17ZGVzY3JpcHRpb246WWUsbmFtZTpcImZ1bmN0aW9uX3Njb3BlX1wiLmNvbmNhdChkZSksbm90QXBwbGljYWJsZVJlYXNvbjpOZShpci5lcnJvcnMpLGtpbmQ6bGUua2luZH0pKSxDLnJlZmFjdG9yS2luZEJlZ2luc1dpdGgoUS5raW5kLFopKWlmKENyLmVycm9ycy5sZW5ndGg9PT0wKXt2YXIgQnI9Q3IuZGVzY3JpcHRpb247X2UuaGFzKEJyKXx8KF9lLnNldChCciwhMCksSWUucHVzaCh7ZGVzY3JpcHRpb246QnIsbmFtZTpcImNvbnN0YW50X3Njb3BlX1wiLmNvbmNhdChkZSksa2luZDpRLmtpbmR9KSl9ZWxzZSB3ZXx8KHdlPXtkZXNjcmlwdGlvbjpZZSxuYW1lOlwiY29uc3RhbnRfc2NvcGVfXCIuY29uY2F0KGRlKSxub3RBcHBsaWNhYmxlUmVhc29uOk5lKENyLmVycm9ycyksa2luZDpRLmtpbmR9KTtkZSsrfXZhciBFcj1bXTtyZXR1cm4gRWUubGVuZ3RoP0VyLnB1c2goe25hbWU6RSxkZXNjcmlwdGlvbjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkV4dHJhY3RfZnVuY3Rpb24pLGFjdGlvbnM6RWV9KTpGZS5wcmVmZXJlbmNlcy5wcm92aWRlUmVmYWN0b3JOb3RBcHBsaWNhYmxlUmVhc29uJiZyciYmRXIucHVzaCh7bmFtZTpFLGRlc2NyaXB0aW9uOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuRXh0cmFjdF9mdW5jdGlvbiksYWN0aW9uczpbcnJdfSksSWUubGVuZ3RoP0VyLnB1c2goe25hbWU6RSxkZXNjcmlwdGlvbjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkV4dHJhY3RfY29uc3RhbnQpLGFjdGlvbnM6SWV9KTpGZS5wcmVmZXJlbmNlcy5wcm92aWRlUmVmYWN0b3JOb3RBcHBsaWNhYmxlUmVhc29uJiZ3ZSYmRXIucHVzaCh7bmFtZTpFLGRlc2NyaXB0aW9uOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuRXh0cmFjdF9jb25zdGFudCksYWN0aW9uczpbd2VdfSksRXIubGVuZ3RoP0VyOmUuZW1wdHlBcnJheTtmdW5jdGlvbiBOZShuKXt2YXIgbHI9blswXS5tZXNzYWdlVGV4dDtyZXR1cm4gdHlwZW9mIGxyIT1cInN0cmluZ1wiJiYobHI9bHIubWVzc2FnZVRleHQpLGxyfX1CLmdldFJlZmFjdG9yQWN0aW9uc1RvRXh0cmFjdFN5bWJvbD1OO2Z1bmN0aW9uIHAoRmUsWil7dmFyIEJlPW9lKEZlLmZpbGUsZS5nZXRSZWZhY3RvckNvbnRleHRTcGFuKEZlKSksZ2U9QmUudGFyZ2V0UmFuZ2UsUmU9L15mdW5jdGlvbl9zY29wZV8oXFxkKykkLy5leGVjKFopO2lmKFJlKXt2YXIgemU9K1JlWzFdO3JldHVybiBlLkRlYnVnLmFzc2VydChpc0Zpbml0ZSh6ZSksXCJFeHBlY3RlZCB0byBwYXJzZSBhIGZpbml0ZSBudW1iZXIgZnJvbSB0aGUgZnVuY3Rpb24gc2NvcGUgaW5kZXhcIiksc2UoZ2UsRmUsemUpfXZhciBFZT0vXmNvbnN0YW50X3Njb3BlXyhcXGQrKSQvLmV4ZWMoWik7aWYoRWUpe3ZhciB6ZT0rRWVbMV07cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGlzRmluaXRlKHplKSxcIkV4cGVjdGVkIHRvIHBhcnNlIGEgZmluaXRlIG51bWJlciBmcm9tIHRoZSBjb25zdGFudCBzY29wZSBpbmRleFwiKSxKKGdlLEZlLHplKX1lLkRlYnVnLmZhaWwoXCJVbnJlY29nbml6ZWQgYWN0aW9uIG5hbWVcIil9Qi5nZXRSZWZhY3RvckVkaXRzVG9FeHRyYWN0U3ltYm9sPXA7dmFyIG07KGZ1bmN0aW9uKEZlKXtmdW5jdGlvbiBaKEJlKXtyZXR1cm57bWVzc2FnZTpCZSxjb2RlOjAsY2F0ZWdvcnk6ZS5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxrZXk6QmV9fUZlLmNhbm5vdEV4dHJhY3RSYW5nZT1aKFwiQ2Fubm90IGV4dHJhY3QgcmFuZ2UuXCIpLEZlLmNhbm5vdEV4dHJhY3RJbXBvcnQ9WihcIkNhbm5vdCBleHRyYWN0IGltcG9ydCBzdGF0ZW1lbnQuXCIpLEZlLmNhbm5vdEV4dHJhY3RTdXBlcj1aKFwiQ2Fubm90IGV4dHJhY3Qgc3VwZXIgY2FsbC5cIiksRmUuY2Fubm90RXh0cmFjdEpTRG9jPVooXCJDYW5ub3QgZXh0cmFjdCBKU0RvYy5cIiksRmUuY2Fubm90RXh0cmFjdEVtcHR5PVooXCJDYW5ub3QgZXh0cmFjdCBlbXB0eSByYW5nZS5cIiksRmUuZXhwcmVzc2lvbkV4cGVjdGVkPVooXCJleHByZXNzaW9uIGV4cGVjdGVkLlwiKSxGZS51c2VsZXNzQ29uc3RhbnRUeXBlPVooXCJObyByZWFzb24gdG8gZXh0cmFjdCBjb25zdGFudCBvZiB0eXBlLlwiKSxGZS5zdGF0ZW1lbnRPckV4cHJlc3Npb25FeHBlY3RlZD1aKFwiU3RhdGVtZW50IG9yIGV4cHJlc3Npb24gZXhwZWN0ZWQuXCIpLEZlLmNhbm5vdEV4dHJhY3RSYW5nZUNvbnRhaW5pbmdDb25kaXRpb25hbEJyZWFrT3JDb250aW51ZVN0YXRlbWVudHM9WihcIkNhbm5vdCBleHRyYWN0IHJhbmdlIGNvbnRhaW5pbmcgY29uZGl0aW9uYWwgYnJlYWsgb3IgY29udGludWUgc3RhdGVtZW50cy5cIiksRmUuY2Fubm90RXh0cmFjdFJhbmdlQ29udGFpbmluZ0NvbmRpdGlvbmFsUmV0dXJuU3RhdGVtZW50PVooXCJDYW5ub3QgZXh0cmFjdCByYW5nZSBjb250YWluaW5nIGNvbmRpdGlvbmFsIHJldHVybiBzdGF0ZW1lbnQuXCIpLEZlLmNhbm5vdEV4dHJhY3RSYW5nZUNvbnRhaW5pbmdMYWJlbGVkQnJlYWtPckNvbnRpbnVlU3RhdGVtZW50V2l0aFRhcmdldE91dHNpZGVPZlRoZVJhbmdlPVooXCJDYW5ub3QgZXh0cmFjdCByYW5nZSBjb250YWluaW5nIGxhYmVsZWQgYnJlYWsgb3IgY29udGludWUgd2l0aCB0YXJnZXQgb3V0c2lkZSBvZiB0aGUgcmFuZ2UuXCIpLEZlLmNhbm5vdEV4dHJhY3RSYW5nZVRoYXRDb250YWluc1dyaXRlc1RvUmVmZXJlbmNlc0xvY2F0ZWRPdXRzaWRlT2ZUaGVUYXJnZXRSYW5nZUluR2VuZXJhdG9ycz1aKFwiQ2Fubm90IGV4dHJhY3QgcmFuZ2UgY29udGFpbmluZyB3cml0ZXMgdG8gcmVmZXJlbmNlcyBsb2NhdGVkIG91dHNpZGUgb2YgdGhlIHRhcmdldCByYW5nZSBpbiBnZW5lcmF0b3JzLlwiKSxGZS50eXBlV2lsbE5vdEJlVmlzaWJsZUluVGhlTmV3U2NvcGU9WihcIlR5cGUgd2lsbCBub3QgdmlzaWJsZSBpbiB0aGUgbmV3IHNjb3BlLlwiKSxGZS5mdW5jdGlvbldpbGxOb3RCZVZpc2libGVJblRoZU5ld1Njb3BlPVooXCJGdW5jdGlvbiB3aWxsIG5vdCB2aXNpYmxlIGluIHRoZSBuZXcgc2NvcGUuXCIpLEZlLmNhbm5vdEV4dHJhY3RJZGVudGlmaWVyPVooXCJTZWxlY3QgbW9yZSB0aGFuIGEgc2luZ2xlIGlkZW50aWZpZXIuXCIpLEZlLmNhbm5vdEV4dHJhY3RFeHBvcnRlZEVudGl0eT1aKFwiQ2Fubm90IGV4dHJhY3QgZXhwb3J0ZWQgZGVjbGFyYXRpb25cIiksRmUuY2Fubm90V3JpdGVJbkV4cHJlc3Npb249WihcIkNhbm5vdCB3cml0ZSBiYWNrIHNpZGUtZWZmZWN0cyB3aGVuIGV4dHJhY3RpbmcgYW4gZXhwcmVzc2lvblwiKSxGZS5jYW5ub3RFeHRyYWN0UmVhZG9ubHlQcm9wZXJ0eUluaXRpYWxpemVyT3V0c2lkZUNvbnN0cnVjdG9yPVooXCJDYW5ub3QgbW92ZSBpbml0aWFsaXphdGlvbiBvZiByZWFkLW9ubHkgY2xhc3MgcHJvcGVydHkgb3V0c2lkZSBvZiB0aGUgY29uc3RydWN0b3JcIiksRmUuY2Fubm90RXh0cmFjdEFtYmllbnRCbG9jaz1aKFwiQ2Fubm90IGV4dHJhY3QgY29kZSBmcm9tIGFtYmllbnQgY29udGV4dHNcIiksRmUuY2Fubm90QWNjZXNzVmFyaWFibGVzRnJvbU5lc3RlZFNjb3Blcz1aKFwiQ2Fubm90IGFjY2VzcyB2YXJpYWJsZXMgZnJvbSBuZXN0ZWQgc2NvcGVzXCIpLEZlLmNhbm5vdEV4dHJhY3RUb0pTQ2xhc3M9WihcIkNhbm5vdCBleHRyYWN0IGNvbnN0YW50IHRvIGEgY2xhc3Mgc2NvcGUgaW4gSlNcIiksRmUuY2Fubm90RXh0cmFjdFRvRXhwcmVzc2lvbkFycm93RnVuY3Rpb249WihcIkNhbm5vdCBleHRyYWN0IGNvbnN0YW50IHRvIGFuIGFycm93IGZ1bmN0aW9uIHdpdGhvdXQgYSBibG9ja1wiKSxGZS5jYW5ub3RFeHRyYWN0RnVuY3Rpb25zQ29udGFpbmluZ1RoaXNUb01ldGhvZD1aKFwiQ2Fubm90IGV4dHJhY3QgZnVuY3Rpb25zIGNvbnRhaW5pbmcgdGhpcyB0byBtZXRob2RcIil9KShtPUIuTWVzc2FnZXN8fChCLk1lc3NhZ2VzPXt9KSk7dmFyIEc7KGZ1bmN0aW9uKEZlKXtGZVtGZS5Ob25lPTBdPVwiTm9uZVwiLEZlW0ZlLkhhc1JldHVybj0xXT1cIkhhc1JldHVyblwiLEZlW0ZlLklzR2VuZXJhdG9yPTJdPVwiSXNHZW5lcmF0b3JcIixGZVtGZS5Jc0FzeW5jRnVuY3Rpb249NF09XCJJc0FzeW5jRnVuY3Rpb25cIixGZVtGZS5Vc2VzVGhpcz04XT1cIlVzZXNUaGlzXCIsRmVbRmUuVXNlc1RoaXNJbkZ1bmN0aW9uPTE2XT1cIlVzZXNUaGlzSW5GdW5jdGlvblwiLEZlW0ZlLkluU3RhdGljUmVnaW9uPTMyXT1cIkluU3RhdGljUmVnaW9uXCJ9KShHfHwoRz17fSkpO2Z1bmN0aW9uIG9lKEZlLFosQmUpe0JlPT09dm9pZCAwJiYoQmU9ITApO3ZhciBnZT1aLmxlbmd0aDtpZihnZT09PTAmJiFCZSlyZXR1cm57ZXJyb3JzOltlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKEZlLFouc3RhcnQsZ2UsbS5jYW5ub3RFeHRyYWN0RW1wdHkpXX07dmFyIFJlPWdlPT09MCYmQmUsemU9ZS5maW5kRmlyc3ROb25Kc3hXaGl0ZXNwYWNlVG9rZW4oRmUsWi5zdGFydCksRWU9ZS5maW5kVG9rZW5PbkxlZnRPZlBvc2l0aW9uKEZlLGUudGV4dFNwYW5FbmQoWikpLEhlPXplJiZFZSYmQmU/Zih6ZSxFZSxGZSk6Wixycj1SZT9mZSh6ZSk6ZS5nZXRQYXJlbnROb2RlSW5TcGFuKHplLEZlLEhlKSxJZT1SZT9ycjplLmdldFBhcmVudE5vZGVJblNwYW4oRWUsRmUsSGUpLF9lPVtdLHdlPUcuTm9uZSxkZTtpZighcnJ8fCFJZSlyZXR1cm57ZXJyb3JzOltlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKEZlLFouc3RhcnQsZ2UsbS5jYW5ub3RFeHRyYWN0UmFuZ2UpXX07aWYocnIuZmxhZ3MmODM4ODYwOClyZXR1cm57ZXJyb3JzOltlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKEZlLFouc3RhcnQsZ2UsbS5jYW5ub3RFeHRyYWN0SlNEb2MpXX07aWYocnIucGFyZW50IT09SWUucGFyZW50KXJldHVybntlcnJvcnM6W2UuY3JlYXRlRmlsZURpYWdub3N0aWMoRmUsWi5zdGFydCxnZSxtLmNhbm5vdEV4dHJhY3RSYW5nZSldfTtpZihyciE9PUllKXtpZighbmUocnIucGFyZW50KSlyZXR1cm57ZXJyb3JzOltlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKEZlLFouc3RhcnQsZ2UsbS5jYW5ub3RFeHRyYWN0UmFuZ2UpXX07Zm9yKHZhciB5ZT1bXSxBZT0wLGVyPXJyLnBhcmVudC5zdGF0ZW1lbnRzO0FlPGVyLmxlbmd0aDtBZSsrKXt2YXIgaXI9ZXJbQWVdO2lmKGlyPT09cnJ8fHllLmxlbmd0aCl7dmFyIENyPWxyKGlyKTtpZihDcilyZXR1cm57ZXJyb3JzOkNyfTt5ZS5wdXNoKGlyKX1pZihpcj09PUllKWJyZWFrfXJldHVybiB5ZS5sZW5ndGg/e3RhcmdldFJhbmdlOntyYW5nZTp5ZSxmYWN0czp3ZSxkZWNsYXJhdGlvbnM6X2UsdGhpc05vZGU6ZGV9fTp7ZXJyb3JzOltlLmNyZWF0ZUZpbGVEaWFnbm9zdGljKEZlLFouc3RhcnQsZ2UsbS5jYW5ub3RFeHRyYWN0UmFuZ2UpXX19aWYoZS5pc1JldHVyblN0YXRlbWVudChycikmJiFyci5leHByZXNzaW9uKXJldHVybntlcnJvcnM6W2UuY3JlYXRlRmlsZURpYWdub3N0aWMoRmUsWi5zdGFydCxnZSxtLmNhbm5vdEV4dHJhY3RSYW5nZSldfTt2YXIgWWU9RXIocnIpLEJyPU5lKFllKXx8bHIoWWUpO2lmKEJyKXJldHVybntlcnJvcnM6QnJ9O3JldHVybnt0YXJnZXRSYW5nZTp7cmFuZ2U6VChZZSksZmFjdHM6d2UsZGVjbGFyYXRpb25zOl9lLHRoaXNOb2RlOmRlfX07ZnVuY3Rpb24gRXIoYmUpe2lmKGUuaXNSZXR1cm5TdGF0ZW1lbnQoYmUpKXtpZihiZS5leHByZXNzaW9uKXJldHVybiBiZS5leHByZXNzaW9ufWVsc2UgaWYoZS5pc1ZhcmlhYmxlU3RhdGVtZW50KGJlKXx8ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGJlKSl7Zm9yKHZhciBHZT1lLmlzVmFyaWFibGVTdGF0ZW1lbnQoYmUpP2JlLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnM6YmUuZGVjbGFyYXRpb25zLHVyPTAseXI9dm9pZCAwLElyPTAsd3I9R2U7SXI8d3IubGVuZ3RoO0lyKyspe3ZhciBVcj13cltJcl07VXIuaW5pdGlhbGl6ZXImJih1cisrLHlyPVVyLmluaXRpYWxpemVyKX1pZih1cj09PTEpcmV0dXJuIHlyfWVsc2UgaWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oYmUpJiZiZS5pbml0aWFsaXplcilyZXR1cm4gYmUuaW5pdGlhbGl6ZXI7cmV0dXJuIGJlfWZ1bmN0aW9uIE5lKGJlKXtpZihlLmlzSWRlbnRpZmllcihlLmlzRXhwcmVzc2lvblN0YXRlbWVudChiZSk/YmUuZXhwcmVzc2lvbjpiZSkpcmV0dXJuW2UuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoYmUsbS5jYW5ub3RFeHRyYWN0SWRlbnRpZmllcildfWZ1bmN0aW9uIG4oYmUsR2Upe2Zvcih2YXIgdXI9YmU7dXIhPT1HZTspe2lmKHVyLmtpbmQ9PT0xNjcpe2UuaXNTdGF0aWModXIpJiYod2V8PUcuSW5TdGF0aWNSZWdpb24pO2JyZWFrfWVsc2UgaWYodXIua2luZD09PTE2NCl7dmFyIHlyPWUuZ2V0Q29udGFpbmluZ0Z1bmN0aW9uKHVyKTt5ci5raW5kPT09MTcxJiYod2V8PUcuSW5TdGF0aWNSZWdpb24pO2JyZWFrfWVsc2UgdXIua2luZD09PTE2OSYmZS5pc1N0YXRpYyh1cikmJih3ZXw9Ry5JblN0YXRpY1JlZ2lvbik7dXI9dXIucGFyZW50fX1mdW5jdGlvbiBscihiZSl7dmFyIEdlO2lmKGZ1bmN0aW9uKG1pKXttaVttaS5Ob25lPTBdPVwiTm9uZVwiLG1pW21pLkJyZWFrPTFdPVwiQnJlYWtcIixtaVttaS5Db250aW51ZT0yXT1cIkNvbnRpbnVlXCIsbWlbbWkuUmV0dXJuPTRdPVwiUmV0dXJuXCJ9KEdlfHwoR2U9e30pKSxlLkRlYnVnLmFzc2VydChiZS5wb3M8PWJlLmVuZCxcIlRoaXMgZmFpbHVyZSBjb3VsZCB0cmlnZ2VyIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjA4MDkgKDEpXCIpLGUuRGVidWcuYXNzZXJ0KCFlLnBvc2l0aW9uSXNTeW50aGVzaXplZChiZS5wb3MpLFwiVGhpcyBmYWlsdXJlIGNvdWxkIHRyaWdnZXIgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yMDgwOSAoMilcIiksIWUuaXNTdGF0ZW1lbnQoYmUpJiYhKGUuaXNFeHByZXNzaW9uTm9kZShiZSkmJmcoYmUpKSYmIVdlKGJlKSlyZXR1cm5bZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShiZSxtLnN0YXRlbWVudE9yRXhwcmVzc2lvbkV4cGVjdGVkKV07aWYoYmUuZmxhZ3MmMTY3NzcyMTYpcmV0dXJuW2UuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoYmUsbS5jYW5ub3RFeHRyYWN0QW1iaWVudEJsb2NrKV07dmFyIHVyPWUuZ2V0Q29udGFpbmluZ0NsYXNzKGJlKTt1ciYmbihiZSx1cik7dmFyIHlyLElyPTQsd3I7aWYoaWkoYmUpLHdlJkcuVXNlc1RoaXMpe3ZhciBVcj1lLmdldFRoaXNDb250YWluZXIoYmUsITEpOyhVci5raW5kPT09MjU2fHxVci5raW5kPT09MTY5JiZVci5wYXJlbnQua2luZD09PTIwNXx8VXIua2luZD09PTIxMykmJih3ZXw9Ry5Vc2VzVGhpc0luRnVuY3Rpb24pfXJldHVybiB5cjtmdW5jdGlvbiBpaShtaSl7aWYoeXIpcmV0dXJuITA7aWYoZS5pc0RlY2xhcmF0aW9uKG1pKSl7dmFyIHBlPW1pLmtpbmQ9PT0yNTQ/bWkucGFyZW50LnBhcmVudDptaTtpZihlLmhhc1N5bnRhY3RpY01vZGlmaWVyKHBlLDEpKXJldHVybih5cnx8KHlyPVtdKSkucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG1pLG0uY2Fubm90RXh0cmFjdEV4cG9ydGVkRW50aXR5KSksITA7X2UucHVzaChtaS5zeW1ib2wpfXN3aXRjaChtaS5raW5kKXtjYXNlIDI2NjpyZXR1cm4oeXJ8fCh5cj1bXSkpLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShtaSxtLmNhbm5vdEV4dHJhY3RJbXBvcnQpKSwhMDtjYXNlIDI3MTpyZXR1cm4oeXJ8fCh5cj1bXSkpLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShtaSxtLmNhbm5vdEV4dHJhY3RFeHBvcnRlZEVudGl0eSkpLCEwO2Nhc2UgMTA2OmlmKG1pLnBhcmVudC5raW5kPT09MjA4KXt2YXIgb3I9ZS5nZXRDb250YWluaW5nQ2xhc3MobWkpO2lmKG9yPT09dm9pZCAwfHxvci5wb3M8Wi5zdGFydHx8b3IuZW5kPj1aLnN0YXJ0K1oubGVuZ3RoKXJldHVybih5cnx8KHlyPVtdKSkucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG1pLG0uY2Fubm90RXh0cmFjdFN1cGVyKSksITB9ZWxzZSB3ZXw9Ry5Vc2VzVGhpcyxkZT1taTticmVhaztjYXNlIDIxNDplLmZvckVhY2hDaGlsZChtaSxmdW5jdGlvbiBEaSh3aSl7aWYoZS5pc1RoaXMod2kpKXdlfD1HLlVzZXNUaGlzLGRlPW1pO2Vsc2V7aWYoZS5pc0NsYXNzTGlrZSh3aSl8fGUuaXNGdW5jdGlvbkxpa2Uod2kpJiYhZS5pc0Fycm93RnVuY3Rpb24od2kpKXJldHVybiExO2UuZm9yRWFjaENoaWxkKHdpLERpKX19KTtjYXNlIDI1NzpjYXNlIDI1NjplLmlzU291cmNlRmlsZShtaS5wYXJlbnQpJiZtaS5wYXJlbnQuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I9PT12b2lkIDAmJih5cnx8KHlyPVtdKSkucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG1pLG0uZnVuY3Rpb25XaWxsTm90QmVWaXNpYmxlSW5UaGVOZXdTY29wZSkpO2Nhc2UgMjI2OmNhc2UgMjEzOmNhc2UgMTY5OmNhc2UgMTcxOmNhc2UgMTcyOmNhc2UgMTczOnJldHVybiExfXZhciBxcj1Jcjtzd2l0Y2gobWkua2luZCl7Y2FzZSAyMzk6SXI9MDticmVhaztjYXNlIDI1MjpJcj0wO2JyZWFrO2Nhc2UgMjM1Om1pLnBhcmVudCYmbWkucGFyZW50LmtpbmQ9PT0yNTImJm1pLnBhcmVudC5maW5hbGx5QmxvY2s9PT1taSYmKElyPTQpO2JyZWFrO2Nhc2UgMjkwOmNhc2UgMjg5OklyfD0xO2JyZWFrO2RlZmF1bHQ6ZS5pc0l0ZXJhdGlvblN0YXRlbWVudChtaSwhMSkmJihJcnw9Myk7YnJlYWt9c3dpdGNoKG1pLmtpbmQpe2Nhc2UgMTkyOmNhc2UgMTA4OndlfD1HLlVzZXNUaGlzLGRlPW1pO2JyZWFrO2Nhc2UgMjUwOnt2YXIgc2k9bWkubGFiZWw7KHdyfHwod3I9W10pKS5wdXNoKHNpLmVzY2FwZWRUZXh0KSxlLmZvckVhY2hDaGlsZChtaSxpaSksd3IucG9wKCk7YnJlYWt9Y2FzZSAyNDY6Y2FzZSAyNDU6e3ZhciBzaT1taS5sYWJlbDtzaT9lLmNvbnRhaW5zKHdyLHNpLmVzY2FwZWRUZXh0KXx8KHlyfHwoeXI9W10pKS5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUobWksbS5jYW5ub3RFeHRyYWN0UmFuZ2VDb250YWluaW5nTGFiZWxlZEJyZWFrT3JDb250aW51ZVN0YXRlbWVudFdpdGhUYXJnZXRPdXRzaWRlT2ZUaGVSYW5nZSkpOklyJihtaS5raW5kPT09MjQ2PzE6Mil8fCh5cnx8KHlyPVtdKSkucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKG1pLG0uY2Fubm90RXh0cmFjdFJhbmdlQ29udGFpbmluZ0NvbmRpdGlvbmFsQnJlYWtPckNvbnRpbnVlU3RhdGVtZW50cykpO2JyZWFrfWNhc2UgMjE4OndlfD1HLklzQXN5bmNGdW5jdGlvbjticmVhaztjYXNlIDIyNDp3ZXw9Ry5Jc0dlbmVyYXRvcjticmVhaztjYXNlIDI0NzpJciY0P3dlfD1HLkhhc1JldHVybjooeXJ8fCh5cj1bXSkpLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShtaSxtLmNhbm5vdEV4dHJhY3RSYW5nZUNvbnRhaW5pbmdDb25kaXRpb25hbFJldHVyblN0YXRlbWVudCkpO2JyZWFrO2RlZmF1bHQ6ZS5mb3JFYWNoQ2hpbGQobWksaWkpO2JyZWFrfUlyPXFyfX19Qi5nZXRSYW5nZVRvRXh0cmFjdD1vZTtmdW5jdGlvbiBmKEZlLFosQmUpe3ZhciBnZT1GZS5nZXRTdGFydChCZSksUmU9Wi5nZXRFbmQoKTtyZXR1cm4gQmUudGV4dC5jaGFyQ29kZUF0KFJlKT09PTU5JiZSZSsrLHtzdGFydDpnZSxsZW5ndGg6UmUtZ2V9fWZ1bmN0aW9uIFQoRmUpe2lmKGUuaXNTdGF0ZW1lbnQoRmUpKXJldHVybltGZV07aWYoZS5pc0V4cHJlc3Npb25Ob2RlKEZlKSlyZXR1cm4gZS5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoRmUucGFyZW50KT9bRmUucGFyZW50XTpGZTtpZihXZShGZSkpcmV0dXJuIEZlfWZ1bmN0aW9uIEsoRmUpe3JldHVybiBlLmlzQXJyb3dGdW5jdGlvbihGZSk/ZS5pc0Z1bmN0aW9uQm9keShGZS5ib2R5KTplLmlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oRmUpfHxlLmlzU291cmNlRmlsZShGZSl8fGUuaXNNb2R1bGVCbG9jayhGZSl8fGUuaXNDbGFzc0xpa2UoRmUpfWZ1bmN0aW9uIGIoRmUpe3ZhciBaPUkoRmUucmFuZ2UpP2UuZmlyc3QoRmUucmFuZ2UpOkZlLnJhbmdlO2lmKEZlLmZhY3RzJkcuVXNlc1RoaXMmJiEoRmUuZmFjdHMmRy5Vc2VzVGhpc0luRnVuY3Rpb24pKXt2YXIgQmU9ZS5nZXRDb250YWluaW5nQ2xhc3MoWik7aWYoQmUpe3ZhciBnZT1lLmZpbmRBbmNlc3RvcihaLGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbik7cmV0dXJuIGdlP1tnZSxCZV06W0JlXX19Zm9yKHZhciBSZT1bXTs7KWlmKFo9Wi5wYXJlbnQsWi5raW5kPT09MTY0JiYoWj1lLmZpbmRBbmNlc3RvcihaLGZ1bmN0aW9uKHplKXtyZXR1cm4gZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKHplKX0pLnBhcmVudCksSyhaKSYmKFJlLnB1c2goWiksWi5raW5kPT09MzA1KSlyZXR1cm4gUmV9ZnVuY3Rpb24gc2UoRmUsWixCZSl7dmFyIGdlPVIoRmUsWiksUmU9Z2Uuc2NvcGVzLHplPWdlLnJlYWRzQW5kV3JpdGVzLEVlPXplLnRhcmdldCxIZT16ZS51c2FnZXNQZXJTY29wZSxycj16ZS5mdW5jdGlvbkVycm9yc1BlclNjb3BlLEllPXplLmV4cG9zZWRWYXJpYWJsZURlY2xhcmF0aW9ucztyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoIXJyW0JlXS5sZW5ndGgsXCJUaGUgZXh0cmFjdGlvbiB3ZW50IG1pc3Npbmc/IEhvdz9cIiksWi5jYW5jZWxsYXRpb25Ub2tlbi50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCkseChFZSxSZVtCZV0sSGVbQmVdLEllLEZlLFopfWZ1bmN0aW9uIEooRmUsWixCZSl7dmFyIGdlPVIoRmUsWiksUmU9Z2Uuc2NvcGVzLHplPWdlLnJlYWRzQW5kV3JpdGVzLEVlPXplLnRhcmdldCxIZT16ZS51c2FnZXNQZXJTY29wZSxycj16ZS5jb25zdGFudEVycm9yc1BlclNjb3BlLEllPXplLmV4cG9zZWRWYXJpYWJsZURlY2xhcmF0aW9ucztlLkRlYnVnLmFzc2VydCghcnJbQmVdLmxlbmd0aCxcIlRoZSBleHRyYWN0aW9uIHdlbnQgbWlzc2luZz8gSG93P1wiKSxlLkRlYnVnLmFzc2VydChJZS5sZW5ndGg9PT0wLFwiRXh0cmFjdCBjb25zdGFudCBhY2NlcHRlZCBhIHJhbmdlIGNvbnRhaW5pbmcgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbj9cIiksWi5jYW5jZWxsYXRpb25Ub2tlbi50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCk7dmFyIF9lPWUuaXNFeHByZXNzaW9uKEVlKT9FZTpFZS5zdGF0ZW1lbnRzWzBdLmV4cHJlc3Npb247cmV0dXJuIFgoX2UsUmVbQmVdLEhlW0JlXSxGZS5mYWN0cyxaKX1mdW5jdGlvbiBpZShGZSxaKXt2YXIgQmU9UihGZSxaKSxnZT1CZS5zY29wZXMsUmU9QmUucmVhZHNBbmRXcml0ZXMsemU9UmUuZnVuY3Rpb25FcnJvcnNQZXJTY29wZSxFZT1SZS5jb25zdGFudEVycm9yc1BlclNjb3BlLEhlPWdlLm1hcChmdW5jdGlvbihycixJZSl7dmFyIF9lPXEocnIpLHdlPU8ocnIpLGRlPWUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihycik/dmUocnIpOmUuaXNDbGFzc0xpa2UocnIpP2VlKHJyKTpoZShycikseWUsQWU7cmV0dXJuIGRlPT09MT8oeWU9ZS5mb3JtYXRTdHJpbmdGcm9tQXJncyhlLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkV4dHJhY3RfdG9fMF9pbl8xX3Njb3BlKSxbX2UsXCJnbG9iYWxcIl0pLEFlPWUuZm9ybWF0U3RyaW5nRnJvbUFyZ3MoZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5FeHRyYWN0X3RvXzBfaW5fMV9zY29wZSksW3dlLFwiZ2xvYmFsXCJdKSk6ZGU9PT0wPyh5ZT1lLmZvcm1hdFN0cmluZ0Zyb21BcmdzKGUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuRXh0cmFjdF90b18wX2luXzFfc2NvcGUpLFtfZSxcIm1vZHVsZVwiXSksQWU9ZS5mb3JtYXRTdHJpbmdGcm9tQXJncyhlLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkV4dHJhY3RfdG9fMF9pbl8xX3Njb3BlKSxbd2UsXCJtb2R1bGVcIl0pKTooeWU9ZS5mb3JtYXRTdHJpbmdGcm9tQXJncyhlLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkV4dHJhY3RfdG9fMF9pbl8xKSxbX2UsZGVdKSxBZT1lLmZvcm1hdFN0cmluZ0Zyb21BcmdzKGUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuRXh0cmFjdF90b18wX2luXzEpLFt3ZSxkZV0pKSxJZT09PTAmJiFlLmlzQ2xhc3NMaWtlKHJyKSYmKEFlPWUuZm9ybWF0U3RyaW5nRnJvbUFyZ3MoZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5FeHRyYWN0X3RvXzBfaW5fZW5jbG9zaW5nX3Njb3BlKSxbd2VdKSkse2Z1bmN0aW9uRXh0cmFjdGlvbjp7ZGVzY3JpcHRpb246eWUsZXJyb3JzOnplW0llXX0sY29uc3RhbnRFeHRyYWN0aW9uOntkZXNjcmlwdGlvbjpBZSxlcnJvcnM6RWVbSWVdfX19KTtyZXR1cm4gSGV9ZnVuY3Rpb24gUihGZSxaKXt2YXIgQmU9Wi5maWxlLGdlPWIoRmUpLFJlPWwoRmUsQmUpLHplPUQoRmUsZ2UsUmUsQmUsWi5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksWi5jYW5jZWxsYXRpb25Ub2tlbik7cmV0dXJue3Njb3BlczpnZSxyZWFkc0FuZFdyaXRlczp6ZX19ZnVuY3Rpb24gcShGZSl7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihGZSk/XCJpbm5lciBmdW5jdGlvblwiOmUuaXNDbGFzc0xpa2UoRmUpP1wibWV0aG9kXCI6XCJmdW5jdGlvblwifWZ1bmN0aW9uIE8oRmUpe3JldHVybiBlLmlzQ2xhc3NMaWtlKEZlKT9cInJlYWRvbmx5IGZpZWxkXCI6XCJjb25zdGFudFwifWZ1bmN0aW9uIHZlKEZlKXtzd2l0Y2goRmUua2luZCl7Y2FzZSAxNzE6cmV0dXJuXCJjb25zdHJ1Y3RvclwiO2Nhc2UgMjEzOmNhc2UgMjU2OnJldHVybiBGZS5uYW1lP1wiZnVuY3Rpb24gJ1wiLmNvbmNhdChGZS5uYW1lLnRleHQsXCInXCIpOmUuQU5PTllNT1VTO2Nhc2UgMjE0OnJldHVyblwiYXJyb3cgZnVuY3Rpb25cIjtjYXNlIDE2OTpyZXR1cm5cIm1ldGhvZCAnXCIuY29uY2F0KEZlLm5hbWUuZ2V0VGV4dCgpLFwiJ1wiKTtjYXNlIDE3MjpyZXR1cm5cIidnZXQgXCIuY29uY2F0KEZlLm5hbWUuZ2V0VGV4dCgpLFwiJ1wiKTtjYXNlIDE3MzpyZXR1cm5cIidzZXQgXCIuY29uY2F0KEZlLm5hbWUuZ2V0VGV4dCgpLFwiJ1wiKTtkZWZhdWx0OnRocm93IGUuRGVidWcuYXNzZXJ0TmV2ZXIoRmUsXCJVbmV4cGVjdGVkIHNjb3BlIGtpbmQgXCIuY29uY2F0KEZlLmtpbmQpKX19ZnVuY3Rpb24gZWUoRmUpe3JldHVybiBGZS5raW5kPT09MjU3P0ZlLm5hbWU/XCJjbGFzcyAnXCIuY29uY2F0KEZlLm5hbWUudGV4dCxcIidcIik6XCJhbm9ueW1vdXMgY2xhc3MgZGVjbGFyYXRpb25cIjpGZS5uYW1lP1wiY2xhc3MgZXhwcmVzc2lvbiAnXCIuY29uY2F0KEZlLm5hbWUudGV4dCxcIidcIik6XCJhbm9ueW1vdXMgY2xhc3MgZXhwcmVzc2lvblwifWZ1bmN0aW9uIGhlKEZlKXtyZXR1cm4gRmUua2luZD09PTI2Mj9cIm5hbWVzcGFjZSAnXCIuY29uY2F0KEZlLnBhcmVudC5uYW1lLmdldFRleHQoKSxcIidcIik6RmUuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I/MDoxfXZhciBGOyhmdW5jdGlvbihGZSl7RmVbRmUuTW9kdWxlPTBdPVwiTW9kdWxlXCIsRmVbRmUuR2xvYmFsPTFdPVwiR2xvYmFsXCJ9KShGfHwoRj17fSkpO2Z1bmN0aW9uIHgoRmUsWixCZSxnZSxSZSx6ZSl7dmFyIEVlPUJlLnVzYWdlcyxIZT1CZS50eXBlUGFyYW1ldGVyVXNhZ2VzLHJyPUJlLnN1YnN0aXR1dGlvbnMsSWU9emUucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLF9lPWUuZ2V0RW1pdFNjcmlwdFRhcmdldCh6ZS5wcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpKSx3ZT1lLmNvZGVmaXguY3JlYXRlSW1wb3J0QWRkZXIoemUuZmlsZSx6ZS5wcm9ncmFtLHplLnByZWZlcmVuY2VzLHplLmhvc3QpLGRlPVouZ2V0U291cmNlRmlsZSgpLHllPWUuZ2V0VW5pcXVlTmFtZShlLmlzQ2xhc3NMaWtlKFopP1wibmV3TWV0aG9kXCI6XCJuZXdGdW5jdGlvblwiLGRlKSxBZT1lLmlzSW5KU0ZpbGUoWiksZXI9ZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoeWUpLGlyLENyPVtdLFllPVtdLEJyO0VlLmZvckVhY2goZnVuY3Rpb24oeGUsdnIpe3ZhciBtcjtpZighQWUpe3ZhciBBcj1JZS5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKHhlLnN5bWJvbCx4ZS5ub2RlKTtBcj1JZS5nZXRCYXNlVHlwZU9mTGl0ZXJhbFR5cGUoQXIpLG1yPWUuY29kZWZpeC50eXBlVG9BdXRvSW1wb3J0YWJsZVR5cGVOb2RlKEllLHdlLEFyLFosX2UsMSl9dmFyIE9lPWUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCx2cix2b2lkIDAsbXIpO0NyLnB1c2goT2UpLHhlLnVzYWdlPT09MiYmKEJyfHwoQnI9W10pKS5wdXNoKHhlKSxZZS5wdXNoKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHZyKSl9KTt2YXIgRXI9ZS5hcnJheUZyb20oSGUudmFsdWVzKCkpLm1hcChmdW5jdGlvbih4ZSl7cmV0dXJue3R5cGU6eGUsZGVjbGFyYXRpb246QSh4ZSl9fSksTmU9RXIuc29ydCh5KSxuPU5lLmxlbmd0aD09PTA/dm9pZCAwOk5lLm1hcChmdW5jdGlvbih4ZSl7cmV0dXJuIHhlLmRlY2xhcmF0aW9ufSksbHI9biE9PXZvaWQgMD9uLm1hcChmdW5jdGlvbih4ZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZSh4ZS5uYW1lLHZvaWQgMCl9KTp2b2lkIDA7aWYoZS5pc0V4cHJlc3Npb24oRmUpJiYhQWUpe3ZhciBiZT1JZS5nZXRDb250ZXh0dWFsVHlwZShGZSk7aXI9SWUudHlwZVRvVHlwZU5vZGUoYmUsWiwxKX12YXIgR2U9TChGZSxnZSxCcixyciwhIShSZS5mYWN0cyZHLkhhc1JldHVybikpLHVyPUdlLmJvZHkseXI9R2UucmV0dXJuVmFsdWVQcm9wZXJ0eTtlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKHVyKTt2YXIgSXIsd3I9ISEoUmUuZmFjdHMmRy5Vc2VzVGhpc0luRnVuY3Rpb24pO2lmKGUuaXNDbGFzc0xpa2UoWikpe3ZhciBVcj1BZT9bXTpbZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyKDEyMSldO1JlLmZhY3RzJkcuSW5TdGF0aWNSZWdpb24mJlVyLnB1c2goZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyKDEyNCkpLFJlLmZhY3RzJkcuSXNBc3luY0Z1bmN0aW9uJiZVci5wdXNoKGUuZmFjdG9yeS5jcmVhdGVNb2RpZmllcigxMzEpKSxJcj1lLmZhY3RvcnkuY3JlYXRlTWV0aG9kRGVjbGFyYXRpb24odm9pZCAwLFVyLmxlbmd0aD9Vcjp2b2lkIDAsUmUuZmFjdHMmRy5Jc0dlbmVyYXRvcj9lLmZhY3RvcnkuY3JlYXRlVG9rZW4oNDEpOnZvaWQgMCxlcix2b2lkIDAsbixDcixpcix1cil9ZWxzZSB3ciYmQ3IudW5zaGlmdChlLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJ0aGlzXCIsdm9pZCAwLEllLnR5cGVUb1R5cGVOb2RlKEllLmdldFR5cGVBdExvY2F0aW9uKFJlLnRoaXNOb2RlKSxaLDEpLHZvaWQgMCkpLElyPWUuZmFjdG9yeS5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKHZvaWQgMCxSZS5mYWN0cyZHLklzQXN5bmNGdW5jdGlvbj9bZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDEzMSldOnZvaWQgMCxSZS5mYWN0cyZHLklzR2VuZXJhdG9yP2UuZmFjdG9yeS5jcmVhdGVUb2tlbig0MSk6dm9pZCAwLGVyLG4sQ3IsaXIsdXIpO3ZhciBpaT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIuZnJvbUNvbnRleHQoemUpLG1pPShJKFJlLnJhbmdlKT9lLmxhc3QoUmUucmFuZ2UpOlJlLnJhbmdlKS5lbmQscGU9WShtaSxaKTtwZT9paS5pbnNlcnROb2RlQmVmb3JlKHplLmZpbGUscGUsSXIsITApOmlpLmluc2VydE5vZGVBdEVuZE9mU2NvcGUoemUuZmlsZSxaLElyKSx3ZS53cml0ZUZpeGVzKGlpKTt2YXIgb3I9W10scXI9VihaLFJlLHllKTt3ciYmWWUudW5zaGlmdChlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcInRoaXNcIikpO3ZhciBzaT1lLmZhY3RvcnkuY3JlYXRlQ2FsbEV4cHJlc3Npb24od3I/ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihxcixcImNhbGxcIik6cXIsbHIsWWUpO2lmKFJlLmZhY3RzJkcuSXNHZW5lcmF0b3ImJihzaT1lLmZhY3RvcnkuY3JlYXRlWWllbGRFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVUb2tlbig0MSksc2kpKSxSZS5mYWN0cyZHLklzQXN5bmNGdW5jdGlvbiYmKHNpPWUuZmFjdG9yeS5jcmVhdGVBd2FpdEV4cHJlc3Npb24oc2kpKSx1ZShGZSkmJihzaT1lLmZhY3RvcnkuY3JlYXRlSnN4RXhwcmVzc2lvbih2b2lkIDAsc2kpKSxnZS5sZW5ndGgmJiFCcilpZihlLkRlYnVnLmFzc2VydCgheXIsXCJFeHBlY3RlZCBubyByZXR1cm5WYWx1ZVByb3BlcnR5XCIpLGUuRGVidWcuYXNzZXJ0KCEoUmUuZmFjdHMmRy5IYXNSZXR1cm4pLFwiRXhwZWN0ZWQgUmFuZ2VGYWN0cy5IYXNSZXR1cm4gZmxhZyB0byBiZSB1bnNldFwiKSxnZS5sZW5ndGg9PT0xKXt2YXIgRGk9Z2VbMF07b3IucHVzaChlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQodm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZShEaS5uYW1lKSx2b2lkIDAsZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZShEaS50eXBlKSxzaSldLERpLnBhcmVudC5mbGFncykpKX1lbHNle2Zvcih2YXIgd2k9W10sWGk9W10sZXQ9Z2VbMF0ucGFyZW50LmZsYWdzLEdpPSExLFd0PTAsWnQ9Z2U7V3Q8WnQubGVuZ3RoO1d0Kyspe3ZhciBEaT1adFtXdF07d2kucHVzaChlLmZhY3RvcnkuY3JlYXRlQmluZGluZ0VsZW1lbnQodm9pZCAwLHZvaWQgMCxlLmdldFN5bnRoZXNpemVkRGVlcENsb25lKERpLm5hbWUpKSk7dmFyIF9yPUllLnR5cGVUb1R5cGVOb2RlKEllLmdldEJhc2VUeXBlT2ZMaXRlcmFsVHlwZShJZS5nZXRUeXBlQXRMb2NhdGlvbihEaSkpLFosMSk7WGkucHVzaChlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlTaWduYXR1cmUodm9pZCAwLERpLnN5bWJvbC5uYW1lLHZvaWQgMCxfcikpLEdpPUdpfHxEaS50eXBlIT09dm9pZCAwLGV0PWV0JkRpLnBhcmVudC5mbGFnc312YXIgcGk9R2k/ZS5mYWN0b3J5LmNyZWF0ZVR5cGVMaXRlcmFsTm9kZShYaSk6dm9pZCAwO3BpJiZlLnNldEVtaXRGbGFncyhwaSwxKSxvci5wdXNoKGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihlLmZhY3RvcnkuY3JlYXRlT2JqZWN0QmluZGluZ1BhdHRlcm4od2kpLHZvaWQgMCxwaSxzaSldLGV0KSkpfWVsc2UgaWYoZ2UubGVuZ3RofHxCcil7aWYoZ2UubGVuZ3RoKWZvcih2YXIgYWU9MCxYZT1nZTthZTxYZS5sZW5ndGg7YWUrKyl7dmFyIERpPVhlW2FlXSxKcj1EaS5wYXJlbnQuZmxhZ3M7SnImMiYmKEpyPUpyJi0zfDEpLG9yLnB1c2goZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW2UuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKERpLnN5bWJvbC5uYW1lLHZvaWQgMCxKZShEaS50eXBlKSldLEpyKSkpfXlyJiZvci5wdXNoKGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbih5cix2b2lkIDAsSmUoaXIpKV0sMSkpKTt2YXIgdGk9SChnZSxCcik7eXImJnRpLnVuc2hpZnQoZS5mYWN0b3J5LmNyZWF0ZVNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudCh5cikpLHRpLmxlbmd0aD09PTE/KGUuRGVidWcuYXNzZXJ0KCF5cixcIlNob3VsZG4ndCBoYXZlIHJldHVyblZhbHVlUHJvcGVydHkgaGVyZVwiKSxvci5wdXNoKGUuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGUuZmFjdG9yeS5jcmVhdGVBc3NpZ25tZW50KHRpWzBdLm5hbWUsc2kpKSksUmUuZmFjdHMmRy5IYXNSZXR1cm4mJm9yLnB1c2goZS5mYWN0b3J5LmNyZWF0ZVJldHVyblN0YXRlbWVudCgpKSk6KG9yLnB1c2goZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZS5mYWN0b3J5LmNyZWF0ZUFzc2lnbm1lbnQoZS5mYWN0b3J5LmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKHRpKSxzaSkpKSx5ciYmb3IucHVzaChlLmZhY3RvcnkuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHlyKSkpKX1lbHNlIFJlLmZhY3RzJkcuSGFzUmV0dXJuP29yLnB1c2goZS5mYWN0b3J5LmNyZWF0ZVJldHVyblN0YXRlbWVudChzaSkpOkkoUmUucmFuZ2UpP29yLnB1c2goZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoc2kpKTpvci5wdXNoKHNpKTtJKFJlLnJhbmdlKT9paS5yZXBsYWNlTm9kZVJhbmdlV2l0aE5vZGVzKHplLmZpbGUsZS5maXJzdChSZS5yYW5nZSksZS5sYXN0KFJlLnJhbmdlKSxvcik6aWkucmVwbGFjZU5vZGVXaXRoTm9kZXMoemUuZmlsZSxSZS5yYW5nZSxvcik7dmFyIFplPWlpLmdldENoYW5nZXMoKSxTcj1JKFJlLnJhbmdlKT9lLmZpcnN0KFJlLnJhbmdlKTpSZS5yYW5nZSx6cj1Tci5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUsV3I9ZS5nZXRSZW5hbWVMb2NhdGlvbihaZSx6cix5ZSwhMSk7cmV0dXJue3JlbmFtZUZpbGVuYW1lOnpyLHJlbmFtZUxvY2F0aW9uOldyLGVkaXRzOlplfTtmdW5jdGlvbiBKZSh4ZSl7aWYoeGUhPT12b2lkIDApe2Zvcih2YXIgdnI9ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZSh4ZSksbXI9dnI7ZS5pc1BhcmVudGhlc2l6ZWRUeXBlTm9kZShtcik7KW1yPW1yLnR5cGU7cmV0dXJuIGUuaXNVbmlvblR5cGVOb2RlKG1yKSYmZS5maW5kKG1yLnR5cGVzLGZ1bmN0aW9uKEFyKXtyZXR1cm4gQXIua2luZD09PTE1M30pP3ZyOmUuZmFjdG9yeS5jcmVhdGVVbmlvblR5cGVOb2RlKFt2cixlLmZhY3RvcnkuY3JlYXRlS2V5d29yZFR5cGVOb2RlKDE1MyldKX19fWZ1bmN0aW9uIFgoRmUsWixCZSxnZSxSZSl7dmFyIHplLEVlPUJlLnN1YnN0aXR1dGlvbnMsSGU9UmUucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLHJyPVouZ2V0U291cmNlRmlsZSgpLEllPWUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oRmUpJiYhZS5pc0NsYXNzTGlrZShaKSYmIUhlLnJlc29sdmVOYW1lKEZlLm5hbWUudGV4dCxGZSwxMTE1NTEsITEpJiYhZS5pc1ByaXZhdGVJZGVudGlmaWVyKEZlLm5hbWUpJiYhZS5pc0tleXdvcmQoRmUubmFtZS5vcmlnaW5hbEtleXdvcmRLaW5kKT9GZS5uYW1lLnRleHQ6ZS5nZXRVbmlxdWVOYW1lKGUuaXNDbGFzc0xpa2UoWik/XCJuZXdQcm9wZXJ0eVwiOlwibmV3TG9jYWxcIixyciksX2U9ZS5pc0luSlNGaWxlKFopLHdlPV9lfHwhSGUuaXNDb250ZXh0U2Vuc2l0aXZlKEZlKT92b2lkIDA6SGUudHlwZVRvVHlwZU5vZGUoSGUuZ2V0Q29udGV4dHVhbFR5cGUoRmUpLFosMSksZGU9UChlLnNraXBQYXJlbnRoZXNlcyhGZSksRWUpO3plPUdlKHdlLGRlKSx3ZT16ZS52YXJpYWJsZVR5cGUsZGU9emUuaW5pdGlhbGl6ZXIsZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShkZSk7dmFyIHllPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci5mcm9tQ29udGV4dChSZSk7aWYoZS5pc0NsYXNzTGlrZShaKSl7ZS5EZWJ1Zy5hc3NlcnQoIV9lLFwiQ2Fubm90IGV4dHJhY3QgdG8gYSBKUyBjbGFzc1wiKTt2YXIgQWU9W107QWUucHVzaChlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXIoMTIxKSksZ2UmRy5JblN0YXRpY1JlZ2lvbiYmQWUucHVzaChlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXIoMTI0KSksQWUucHVzaChlLmZhY3RvcnkuY3JlYXRlTW9kaWZpZXIoMTQ1KSk7dmFyIGVyPWUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eURlY2xhcmF0aW9uKHZvaWQgMCxBZSxJZSx2b2lkIDAsd2UsZGUpLGlyPWUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZ2UmRy5JblN0YXRpY1JlZ2lvbj9lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihaLm5hbWUuZ2V0VGV4dCgpKTplLmZhY3RvcnkuY3JlYXRlVGhpcygpLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEllKSk7dWUoRmUpJiYoaXI9ZS5mYWN0b3J5LmNyZWF0ZUpzeEV4cHJlc3Npb24odm9pZCAwLGlyKSk7dmFyIENyPUZlLnBvcyxZZT1VKENyLFopO3llLmluc2VydE5vZGVCZWZvcmUoUmUuZmlsZSxZZSxlciwhMCkseWUucmVwbGFjZU5vZGUoUmUuZmlsZSxGZSxpcil9ZWxzZXt2YXIgQnI9ZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oSWUsdm9pZCAwLHdlLGRlKSxFcj0kKEZlLFopO2lmKEVyKXt5ZS5pbnNlcnROb2RlQmVmb3JlKFJlLmZpbGUsRXIsQnIpO3ZhciBpcj1lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihJZSk7eWUucmVwbGFjZU5vZGUoUmUuZmlsZSxGZSxpcil9ZWxzZSBpZihGZS5wYXJlbnQua2luZD09PTIzOCYmWj09PWUuZmluZEFuY2VzdG9yKEZlLEspKXt2YXIgTmU9ZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW0JyXSwyKSk7eWUucmVwbGFjZU5vZGUoUmUuZmlsZSxGZS5wYXJlbnQsTmUpfWVsc2V7dmFyIE5lPWUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtCcl0sMikpLFllPWooRmUsWik7aWYoWWUucG9zPT09MD95ZS5pbnNlcnROb2RlQXRUb3BPZkZpbGUoUmUuZmlsZSxOZSwhMSk6eWUuaW5zZXJ0Tm9kZUJlZm9yZShSZS5maWxlLFllLE5lLCExKSxGZS5wYXJlbnQua2luZD09PTIzOCl5ZS5kZWxldGUoUmUuZmlsZSxGZS5wYXJlbnQpO2Vsc2V7dmFyIGlyPWUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEllKTt1ZShGZSkmJihpcj1lLmZhY3RvcnkuY3JlYXRlSnN4RXhwcmVzc2lvbih2b2lkIDAsaXIpKSx5ZS5yZXBsYWNlTm9kZShSZS5maWxlLEZlLGlyKX19fXZhciBuPXllLmdldENoYW5nZXMoKSxscj1GZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUsYmU9ZS5nZXRSZW5hbWVMb2NhdGlvbihuLGxyLEllLCEwKTtyZXR1cm57cmVuYW1lRmlsZW5hbWU6bHIscmVuYW1lTG9jYXRpb246YmUsZWRpdHM6bn07ZnVuY3Rpb24gR2UodXIseXIpe2lmKHVyPT09dm9pZCAwKXJldHVybnt2YXJpYWJsZVR5cGU6dXIsaW5pdGlhbGl6ZXI6eXJ9O2lmKCFlLmlzRnVuY3Rpb25FeHByZXNzaW9uKHlyKSYmIWUuaXNBcnJvd0Z1bmN0aW9uKHlyKXx8ISF5ci50eXBlUGFyYW1ldGVycylyZXR1cm57dmFyaWFibGVUeXBlOnVyLGluaXRpYWxpemVyOnlyfTt2YXIgSXI9SGUuZ2V0VHlwZUF0TG9jYXRpb24oRmUpLHdyPWUuc2luZ2xlT3JVbmRlZmluZWQoSGUuZ2V0U2lnbmF0dXJlc09mVHlwZShJciwwKSk7aWYoIXdyKXJldHVybnt2YXJpYWJsZVR5cGU6dXIsaW5pdGlhbGl6ZXI6eXJ9O2lmKHdyLmdldFR5cGVQYXJhbWV0ZXJzKCkpcmV0dXJue3ZhcmlhYmxlVHlwZTp1cixpbml0aWFsaXplcjp5cn07Zm9yKHZhciBVcj1bXSxpaT0hMSxtaT0wLHBlPXlyLnBhcmFtZXRlcnM7bWk8cGUubGVuZ3RoO21pKyspe3ZhciBvcj1wZVttaV07aWYob3IudHlwZSlVci5wdXNoKG9yKTtlbHNle3ZhciBxcj1IZS5nZXRUeXBlQXRMb2NhdGlvbihvcik7cXI9PT1IZS5nZXRBbnlUeXBlKCkmJihpaT0hMCksVXIucHVzaChlLmZhY3RvcnkudXBkYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24ob3Isb3IuZGVjb3JhdG9ycyxvci5tb2RpZmllcnMsb3IuZG90RG90RG90VG9rZW4sb3IubmFtZSxvci5xdWVzdGlvblRva2VuLG9yLnR5cGV8fEhlLnR5cGVUb1R5cGVOb2RlKHFyLFosMSksb3IuaW5pdGlhbGl6ZXIpKX19aWYoaWkpcmV0dXJue3ZhcmlhYmxlVHlwZTp1cixpbml0aWFsaXplcjp5cn07aWYodXI9dm9pZCAwLGUuaXNBcnJvd0Z1bmN0aW9uKHlyKSl5cj1lLmZhY3RvcnkudXBkYXRlQXJyb3dGdW5jdGlvbih5cixGZS5tb2RpZmllcnMseXIudHlwZVBhcmFtZXRlcnMsVXIseXIudHlwZXx8SGUudHlwZVRvVHlwZU5vZGUod3IuZ2V0UmV0dXJuVHlwZSgpLFosMSkseXIuZXF1YWxzR3JlYXRlclRoYW5Ub2tlbix5ci5ib2R5KTtlbHNle2lmKHdyJiYhIXdyLnRoaXNQYXJhbWV0ZXIpe3ZhciBzaT1lLmZpcnN0T3JVbmRlZmluZWQoVXIpO2lmKCFzaXx8ZS5pc0lkZW50aWZpZXIoc2kubmFtZSkmJnNpLm5hbWUuZXNjYXBlZFRleHQhPT1cInRoaXNcIil7dmFyIERpPUhlLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24od3IudGhpc1BhcmFtZXRlcixGZSk7VXIuc3BsaWNlKDAsMCxlLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsXCJ0aGlzXCIsdm9pZCAwLEhlLnR5cGVUb1R5cGVOb2RlKERpLFosMSkpKX19eXI9ZS5mYWN0b3J5LnVwZGF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih5cixGZS5tb2RpZmllcnMseXIuYXN0ZXJpc2tUb2tlbix5ci5uYW1lLHlyLnR5cGVQYXJhbWV0ZXJzLFVyLHlyLnR5cGV8fEhlLnR5cGVUb1R5cGVOb2RlKHdyLmdldFJldHVyblR5cGUoKSxaLDEpLHlyLmJvZHkpfXJldHVybnt2YXJpYWJsZVR5cGU6dXIsaW5pdGlhbGl6ZXI6eXJ9fX1mdW5jdGlvbiAkKEZlLFope2Zvcih2YXIgQmU7RmUhPT12b2lkIDAmJkZlIT09Wjspe2lmKGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKEZlKSYmRmUuaW5pdGlhbGl6ZXI9PT1CZSYmZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KEZlLnBhcmVudCkmJkZlLnBhcmVudC5kZWNsYXJhdGlvbnMubGVuZ3RoPjEpcmV0dXJuIEZlO0JlPUZlLEZlPUZlLnBhcmVudH19ZnVuY3Rpb24gQShGZSl7dmFyIFosQmU9RmUuc3ltYm9sO2lmKEJlJiZCZS5kZWNsYXJhdGlvbnMpZm9yKHZhciBnZT0wLFJlPUJlLmRlY2xhcmF0aW9ucztnZTxSZS5sZW5ndGg7Z2UrKyl7dmFyIHplPVJlW2dlXTsoWj09PXZvaWQgMHx8emUucG9zPFoucG9zKSYmKFo9emUpfXJldHVybiBafWZ1bmN0aW9uIHkoRmUsWil7dmFyIEJlPUZlLnR5cGUsZ2U9RmUuZGVjbGFyYXRpb24sUmU9Wi50eXBlLHplPVouZGVjbGFyYXRpb247cmV0dXJuIGUuY29tcGFyZVByb3BlcnRpZXMoZ2UsemUsXCJwb3NcIixlLmNvbXBhcmVWYWx1ZXMpfHxlLmNvbXBhcmVTdHJpbmdzQ2FzZVNlbnNpdGl2ZShCZS5zeW1ib2w/QmUuc3ltYm9sLmdldE5hbWUoKTpcIlwiLFJlLnN5bWJvbD9SZS5zeW1ib2wuZ2V0TmFtZSgpOlwiXCIpfHxlLmNvbXBhcmVWYWx1ZXMoQmUuaWQsUmUuaWQpfWZ1bmN0aW9uIFYoRmUsWixCZSl7dmFyIGdlPWUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKEJlKTtpZihlLmlzQ2xhc3NMaWtlKEZlKSl7dmFyIFJlPVouZmFjdHMmRy5JblN0YXRpY1JlZ2lvbj9lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihGZS5uYW1lLnRleHQpOmUuZmFjdG9yeS5jcmVhdGVUaGlzKCk7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUmUsZ2UpfWVsc2UgcmV0dXJuIGdlfWZ1bmN0aW9uIEwoRmUsWixCZSxnZSxSZSl7dmFyIHplPUJlIT09dm9pZCAwfHxaLmxlbmd0aD4wO2lmKGUuaXNCbG9jayhGZSkmJiF6ZSYmZ2Uuc2l6ZT09PTApcmV0dXJue2JvZHk6ZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKEZlLnN0YXRlbWVudHMsITApLHJldHVyblZhbHVlUHJvcGVydHk6dm9pZCAwfTt2YXIgRWUsSGU9ITEscnI9ZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShlLmlzQmxvY2soRmUpP0ZlLnN0YXRlbWVudHMuc2xpY2UoMCk6W2UuaXNTdGF0ZW1lbnQoRmUpP0ZlOmUuZmFjdG9yeS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoZS5za2lwUGFyZW50aGVzZXMoRmUpKV0pO2lmKHplfHxnZS5zaXplKXt2YXIgSWU9ZS52aXNpdE5vZGVzKHJyLHdlKS5zbGljZSgpO2lmKHplJiYhUmUmJmUuaXNTdGF0ZW1lbnQoRmUpKXt2YXIgX2U9SChaLEJlKTtfZS5sZW5ndGg9PT0xP0llLnB1c2goZS5mYWN0b3J5LmNyZWF0ZVJldHVyblN0YXRlbWVudChfZVswXS5uYW1lKSk6SWUucHVzaChlLmZhY3RvcnkuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGUuZmFjdG9yeS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihfZSkpKX1yZXR1cm57Ym9keTplLmZhY3RvcnkuY3JlYXRlQmxvY2soSWUsITApLHJldHVyblZhbHVlUHJvcGVydHk6RWV9fWVsc2UgcmV0dXJue2JvZHk6ZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKHJyLCEwKSxyZXR1cm5WYWx1ZVByb3BlcnR5OnZvaWQgMH07ZnVuY3Rpb24gd2UoZGUpe2lmKCFIZSYmZS5pc1JldHVyblN0YXRlbWVudChkZSkmJnplKXt2YXIgeWU9SChaLEJlKTtyZXR1cm4gZGUuZXhwcmVzc2lvbiYmKEVlfHwoRWU9XCJfX3JldHVyblwiKSx5ZS51bnNoaWZ0KGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoRWUsZS52aXNpdE5vZGUoZGUuZXhwcmVzc2lvbix3ZSkpKSkseWUubGVuZ3RoPT09MT9lLmZhY3RvcnkuY3JlYXRlUmV0dXJuU3RhdGVtZW50KHllWzBdLm5hbWUpOmUuZmFjdG9yeS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoZS5mYWN0b3J5LmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKHllKSl9ZWxzZXt2YXIgQWU9SGU7SGU9SGV8fGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihkZSl8fGUuaXNDbGFzc0xpa2UoZGUpO3ZhciBlcj1nZS5nZXQoZS5nZXROb2RlSWQoZGUpLnRvU3RyaW5nKCkpLGlyPWVyP2UuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoZXIpOmUudmlzaXRFYWNoQ2hpbGQoZGUsd2UsZS5udWxsVHJhbnNmb3JtYXRpb25Db250ZXh0KTtyZXR1cm4gSGU9QWUsaXJ9fX1mdW5jdGlvbiBQKEZlLFope3JldHVybiBaLnNpemU/QmUoRmUpOkZlO2Z1bmN0aW9uIEJlKGdlKXt2YXIgUmU9Wi5nZXQoZS5nZXROb2RlSWQoZ2UpLnRvU3RyaW5nKCkpO3JldHVybiBSZT9lLmdldFN5bnRoZXNpemVkRGVlcENsb25lKFJlKTplLnZpc2l0RWFjaENoaWxkKGdlLEJlLGUubnVsbFRyYW5zZm9ybWF0aW9uQ29udGV4dCl9fWZ1bmN0aW9uIGsoRmUpe2lmKGUuaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihGZSkpe3ZhciBaPUZlLmJvZHk7aWYoZS5pc0Jsb2NrKFopKXJldHVybiBaLnN0YXRlbWVudHN9ZWxzZXtpZihlLmlzTW9kdWxlQmxvY2soRmUpfHxlLmlzU291cmNlRmlsZShGZSkpcmV0dXJuIEZlLnN0YXRlbWVudHM7aWYoZS5pc0NsYXNzTGlrZShGZSkpcmV0dXJuIEZlLm1lbWJlcnM7ZS5hc3NlcnRUeXBlKEZlKX1yZXR1cm4gZS5lbXB0eUFycmF5fWZ1bmN0aW9uIFkoRmUsWil7cmV0dXJuIGUuZmluZChrKFopLGZ1bmN0aW9uKEJlKXtyZXR1cm4gQmUucG9zPj1GZSYmZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKEJlKSYmIWUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKEJlKX0pfWZ1bmN0aW9uIFUoRmUsWil7dmFyIEJlPVoubWVtYmVycztlLkRlYnVnLmFzc2VydChCZS5sZW5ndGg+MCxcIkZvdW5kIG5vIG1lbWJlcnNcIik7Zm9yKHZhciBnZSxSZT0hMCx6ZT0wLEVlPUJlO3plPEVlLmxlbmd0aDt6ZSsrKXt2YXIgSGU9RWVbemVdO2lmKEhlLnBvcz5GZSlyZXR1cm4gZ2V8fEJlWzBdO2lmKFJlJiYhZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oSGUpKXtpZihnZSE9PXZvaWQgMClyZXR1cm4gSGU7UmU9ITF9Z2U9SGV9cmV0dXJuIGdlPT09dm9pZCAwP2UuRGVidWcuZmFpbCgpOmdlfWZ1bmN0aW9uIGooRmUsWil7ZS5EZWJ1Zy5hc3NlcnQoIWUuaXNDbGFzc0xpa2UoWikpO2Zvcih2YXIgQmUsZ2U9RmU7Z2UhPT1aO2dlPWdlLnBhcmVudClLKGdlKSYmKEJlPWdlKTtmb3IodmFyIGdlPShCZXx8RmUpLnBhcmVudDs7Z2U9Z2UucGFyZW50KXtpZihuZShnZSkpe2Zvcih2YXIgUmU9dm9pZCAwLHplPTAsRWU9Z2Uuc3RhdGVtZW50czt6ZTxFZS5sZW5ndGg7emUrKyl7dmFyIEhlPUVlW3plXTtpZihIZS5wb3M+RmUucG9zKWJyZWFrO1JlPUhlfXJldHVybiFSZSYmZS5pc0Nhc2VDbGF1c2UoZ2UpPyhlLkRlYnVnLmFzc2VydChlLmlzU3dpdGNoU3RhdGVtZW50KGdlLnBhcmVudC5wYXJlbnQpLFwiR3JhbmRwYXJlbnQgaXNuJ3QgYSBzd2l0Y2ggc3RhdGVtZW50XCIpLGdlLnBhcmVudC5wYXJlbnQpOmUuRGVidWcuY2hlY2tEZWZpbmVkKFJlLFwicHJldlN0YXRlbWVudCBmYWlsZWQgdG8gZ2V0IHNldFwiKX1lLkRlYnVnLmFzc2VydChnZSE9PVosXCJEaWRuJ3QgZW5jb3VudGVyIGEgYmxvY2stbGlrZSBiZWZvcmUgZW5jb3VudGVyaW5nIHNjb3BlXCIpfX1mdW5jdGlvbiBIKEZlLFope3ZhciBCZT1lLm1hcChGZSxmdW5jdGlvbihSZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoUmUuc3ltYm9sLm5hbWUpfSksZ2U9ZS5tYXAoWixmdW5jdGlvbihSZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoUmUuc3ltYm9sLm5hbWUpfSk7cmV0dXJuIEJlPT09dm9pZCAwP2dlOmdlPT09dm9pZCAwP0JlOkJlLmNvbmNhdChnZSl9ZnVuY3Rpb24gSShGZSl7cmV0dXJuIGUuaXNBcnJheShGZSl9ZnVuY3Rpb24gbChGZSxaKXtyZXR1cm4gSShGZS5yYW5nZSk/e3BvczplLmZpcnN0KEZlLnJhbmdlKS5nZXRTdGFydChaKSxlbmQ6ZS5sYXN0KEZlLnJhbmdlKS5nZXRFbmQoKX06RmUucmFuZ2V9dmFyIGQ7KGZ1bmN0aW9uKEZlKXtGZVtGZS5SZWFkPTFdPVwiUmVhZFwiLEZlW0ZlLldyaXRlPTJdPVwiV3JpdGVcIn0pKGR8fChkPXt9KSk7ZnVuY3Rpb24gRChGZSxaLEJlLGdlLFJlLHplKXt2YXIgRWU9bmV3IGUuTWFwLEhlPVtdLHJyPVtdLEllPVtdLF9lPVtdLHdlPVtdLGRlPW5ldyBlLk1hcCx5ZT1bXSxBZSxlcj1JKEZlLnJhbmdlKT9GZS5yYW5nZS5sZW5ndGg9PT0xJiZlLmlzRXhwcmVzc2lvblN0YXRlbWVudChGZS5yYW5nZVswXSk/RmUucmFuZ2VbMF0uZXhwcmVzc2lvbjp2b2lkIDA6RmUucmFuZ2UsaXI7aWYoZXI9PT12b2lkIDApe3ZhciBDcj1GZS5yYW5nZSxZZT1lLmZpcnN0KENyKS5nZXRTdGFydCgpLEJyPWUubGFzdChDcikuZW5kO2lyPWUuY3JlYXRlRmlsZURpYWdub3N0aWMoZ2UsWWUsQnItWWUsbS5leHByZXNzaW9uRXhwZWN0ZWQpfWVsc2UgUmUuZ2V0VHlwZUF0TG9jYXRpb24oZXIpLmZsYWdzJjE0NzQ1NiYmKGlyPWUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoZXIsbS51c2VsZXNzQ29uc3RhbnRUeXBlKSk7Zm9yKHZhciBFcj0wLE5lPVo7RXI8TmUubGVuZ3RoO0VyKyspe3ZhciBuPU5lW0VyXTtIZS5wdXNoKHt1c2FnZXM6bmV3IGUuTWFwLHR5cGVQYXJhbWV0ZXJVc2FnZXM6bmV3IGUuTWFwLHN1YnN0aXR1dGlvbnM6bmV3IGUuTWFwfSkscnIucHVzaChuZXcgZS5NYXApLEllLnB1c2goW10pO3ZhciBscj1bXTtpciYmbHIucHVzaChpciksZS5pc0NsYXNzTGlrZShuKSYmZS5pc0luSlNGaWxlKG4pJiZsci5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUobixtLmNhbm5vdEV4dHJhY3RUb0pTQ2xhc3MpKSxlLmlzQXJyb3dGdW5jdGlvbihuKSYmIWUuaXNCbG9jayhuLmJvZHkpJiZsci5wdXNoKGUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUobixtLmNhbm5vdEV4dHJhY3RUb0V4cHJlc3Npb25BcnJvd0Z1bmN0aW9uKSksX2UucHVzaChscil9dmFyIGJlPW5ldyBlLk1hcCxHZT1JKEZlLnJhbmdlKT9lLmZhY3RvcnkuY3JlYXRlQmxvY2soRmUucmFuZ2UpOkZlLnJhbmdlLHVyPUkoRmUucmFuZ2UpP2UuZmlyc3QoRmUucmFuZ2UpOkZlLnJhbmdlLHlyPVhpKHVyKTtpZihHaShHZSkseXImJiFJKEZlLnJhbmdlKSYmIWUuaXNKc3hBdHRyaWJ1dGUoRmUucmFuZ2UpKXt2YXIgSXI9UmUuZ2V0Q29udGV4dHVhbFR5cGUoRmUucmFuZ2UpO2V0KElyKX1pZihFZS5zaXplPjApe2Zvcih2YXIgd3I9bmV3IGUuTWFwLFVyPTAsaWk9dXI7aWkhPT12b2lkIDAmJlVyPFoubGVuZ3RoO2lpPWlpLnBhcmVudClpZihpaT09PVpbVXJdJiYod3IuZm9yRWFjaChmdW5jdGlvbihYZSxKcil7SGVbVXJdLnR5cGVQYXJhbWV0ZXJVc2FnZXMuc2V0KEpyLFhlKX0pLFVyKyspLGUuaXNEZWNsYXJhdGlvbldpdGhUeXBlUGFyYW1ldGVycyhpaSkpZm9yKHZhciBtaT0wLHBlPWUuZ2V0RWZmZWN0aXZlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9ucyhpaSk7bWk8cGUubGVuZ3RoO21pKyspe3ZhciBvcj1wZVttaV0scXI9UmUuZ2V0VHlwZUF0TG9jYXRpb24ob3IpO0VlLmhhcyhxci5pZC50b1N0cmluZygpKSYmd3Iuc2V0KHFyLmlkLnRvU3RyaW5nKCkscXIpfWUuRGVidWcuYXNzZXJ0KFVyPT09Wi5sZW5ndGgsXCJTaG91bGQgaGF2ZSBpdGVyYXRlZCBhbGwgc2NvcGVzXCIpfWlmKHdlLmxlbmd0aCl7dmFyIHNpPWUuaXNCbG9ja1Njb3BlKFpbMF0sWlswXS5wYXJlbnQpP1pbMF06ZS5nZXRFbmNsb3NpbmdCbG9ja1Njb3BlQ29udGFpbmVyKFpbMF0pO2UuZm9yRWFjaENoaWxkKHNpLF9yKX1mb3IodmFyIERpPWZ1bmN0aW9uKFhlKXt2YXIgSnI9SGVbWGVdO2lmKFhlPjAmJihKci51c2FnZXMuc2l6ZT4wfHxKci50eXBlUGFyYW1ldGVyVXNhZ2VzLnNpemU+MCkpe3ZhciB0aT1JKEZlLnJhbmdlKT9GZS5yYW5nZVswXTpGZS5yYW5nZTtfZVtYZV0ucHVzaChlLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKHRpLG0uY2Fubm90QWNjZXNzVmFyaWFibGVzRnJvbU5lc3RlZFNjb3BlcykpfUZlLmZhY3RzJkcuVXNlc1RoaXNJbkZ1bmN0aW9uJiZlLmlzQ2xhc3NMaWtlKFpbWGVdKSYmSWVbWGVdLnB1c2goZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShGZS50aGlzTm9kZSxtLmNhbm5vdEV4dHJhY3RGdW5jdGlvbnNDb250YWluaW5nVGhpc1RvTWV0aG9kKSk7dmFyIFplPSExLFNyO2lmKEhlW1hlXS51c2FnZXMuZm9yRWFjaChmdW5jdGlvbihXcil7V3IudXNhZ2U9PT0yJiYoWmU9ITAsV3Iuc3ltYm9sLmZsYWdzJjEwNjUwMCYmV3Iuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24mJmUuaGFzRWZmZWN0aXZlTW9kaWZpZXIoV3Iuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24sNjQpJiYoU3I9V3Iuc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pKX0pLGUuRGVidWcuYXNzZXJ0KEkoRmUucmFuZ2UpfHx5ZS5sZW5ndGg9PT0wLFwiTm8gdmFyaWFibGUgZGVjbGFyYXRpb25zIGV4cGVjdGVkIGlmIHNvbWV0aGluZyB3YXMgZXh0cmFjdGVkXCIpLFplJiYhSShGZS5yYW5nZSkpe3ZhciB6cj1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKEZlLnJhbmdlLG0uY2Fubm90V3JpdGVJbkV4cHJlc3Npb24pO0llW1hlXS5wdXNoKHpyKSxfZVtYZV0ucHVzaCh6cil9ZWxzZSBpZihTciYmWGU+MCl7dmFyIHpyPWUuY3JlYXRlRGlhZ25vc3RpY0Zvck5vZGUoU3IsbS5jYW5ub3RFeHRyYWN0UmVhZG9ubHlQcm9wZXJ0eUluaXRpYWxpemVyT3V0c2lkZUNvbnN0cnVjdG9yKTtJZVtYZV0ucHVzaCh6ciksX2VbWGVdLnB1c2goenIpfWVsc2UgaWYoQWUpe3ZhciB6cj1lLmNyZWF0ZURpYWdub3N0aWNGb3JOb2RlKEFlLG0uY2Fubm90RXh0cmFjdEV4cG9ydGVkRW50aXR5KTtJZVtYZV0ucHVzaCh6ciksX2VbWGVdLnB1c2goenIpfX0sd2k9MDt3aTxaLmxlbmd0aDt3aSsrKURpKHdpKTtyZXR1cm57dGFyZ2V0OkdlLHVzYWdlc1BlclNjb3BlOkhlLGZ1bmN0aW9uRXJyb3JzUGVyU2NvcGU6SWUsY29uc3RhbnRFcnJvcnNQZXJTY29wZTpfZSxleHBvc2VkVmFyaWFibGVEZWNsYXJhdGlvbnM6eWV9O2Z1bmN0aW9uIFhpKFhlKXtyZXR1cm4hIWUuZmluZEFuY2VzdG9yKFhlLGZ1bmN0aW9uKEpyKXtyZXR1cm4gZS5pc0RlY2xhcmF0aW9uV2l0aFR5cGVQYXJhbWV0ZXJzKEpyKSYmZS5nZXRFZmZlY3RpdmVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25zKEpyKS5sZW5ndGghPT0wfSl9ZnVuY3Rpb24gZXQoWGUpe2Zvcih2YXIgSnI9UmUuZ2V0U3ltYm9sV2Fsa2VyKGZ1bmN0aW9uKCl7cmV0dXJuIHplLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKSwhMH0pLHRpPUpyLndhbGtUeXBlKFhlKS52aXNpdGVkVHlwZXMsWmU9MCxTcj10aTtaZTxTci5sZW5ndGg7WmUrKyl7dmFyIHpyPVNyW1plXTt6ci5pc1R5cGVQYXJhbWV0ZXIoKSYmRWUuc2V0KHpyLmlkLnRvU3RyaW5nKCksenIpfX1mdW5jdGlvbiBHaShYZSxKcil7aWYoSnI9PT12b2lkIDAmJihKcj0xKSx5cil7dmFyIHRpPVJlLmdldFR5cGVBdExvY2F0aW9uKFhlKTtldCh0aSl9aWYoZS5pc0RlY2xhcmF0aW9uKFhlKSYmWGUuc3ltYm9sJiZ3ZS5wdXNoKFhlKSxlLmlzQXNzaWdubWVudEV4cHJlc3Npb24oWGUpKUdpKFhlLmxlZnQsMiksR2koWGUucmlnaHQpO2Vsc2UgaWYoZS5pc1VuYXJ5RXhwcmVzc2lvbldpdGhXcml0ZShYZSkpR2koWGUub3BlcmFuZCwyKTtlbHNlIGlmKGUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oWGUpfHxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oWGUpKWUuZm9yRWFjaENoaWxkKFhlLEdpKTtlbHNlIGlmKGUuaXNJZGVudGlmaWVyKFhlKSl7aWYoIVhlLnBhcmVudHx8ZS5pc1F1YWxpZmllZE5hbWUoWGUucGFyZW50KSYmWGUhPT1YZS5wYXJlbnQubGVmdHx8ZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihYZS5wYXJlbnQpJiZYZSE9PVhlLnBhcmVudC5leHByZXNzaW9uKXJldHVybjtXdChYZSxKcixlLmlzUGFydE9mVHlwZU5vZGUoWGUpKX1lbHNlIGUuZm9yRWFjaENoaWxkKFhlLEdpKX1mdW5jdGlvbiBXdChYZSxKcix0aSl7dmFyIFplPVp0KFhlLEpyLHRpKTtpZihaZSlmb3IodmFyIFNyPTA7U3I8Wi5sZW5ndGg7U3IrKyl7dmFyIHpyPXJyW1NyXS5nZXQoWmUpO3pyJiZIZVtTcl0uc3Vic3RpdHV0aW9ucy5zZXQoZS5nZXROb2RlSWQoWGUpLnRvU3RyaW5nKCksenIpfX1mdW5jdGlvbiBadChYZSxKcix0aSl7dmFyIFplPXBpKFhlKTtpZighIVplKXt2YXIgU3I9ZS5nZXRTeW1ib2xJZChaZSkudG9TdHJpbmcoKSx6cj1iZS5nZXQoU3IpO2lmKHpyJiZ6cj49SnIpcmV0dXJuIFNyO2lmKGJlLnNldChTcixKciksenIpe2Zvcih2YXIgV3I9MCxKZT1IZTtXcjxKZS5sZW5ndGg7V3IrKyl7dmFyIHhlPUplW1dyXSx2cj14ZS51c2FnZXMuZ2V0KFhlLnRleHQpO3ZyJiZ4ZS51c2FnZXMuc2V0KFhlLnRleHQse3VzYWdlOkpyLHN5bWJvbDpaZSxub2RlOlhlfSl9cmV0dXJuIFNyfXZhciBtcj1aZS5nZXREZWNsYXJhdGlvbnMoKSxBcj1tciYmZS5maW5kKG1yLGZ1bmN0aW9uKHZpKXtyZXR1cm4gdmkuZ2V0U291cmNlRmlsZSgpPT09Z2V9KTtpZighIUFyJiYhZS5yYW5nZUNvbnRhaW5zU3RhcnRFbmQoQmUsQXIuZ2V0U3RhcnQoKSxBci5lbmQpKXtpZihGZS5mYWN0cyZHLklzR2VuZXJhdG9yJiZKcj09PTIpe2Zvcih2YXIgT2U9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShYZSxtLmNhbm5vdEV4dHJhY3RSYW5nZVRoYXRDb250YWluc1dyaXRlc1RvUmVmZXJlbmNlc0xvY2F0ZWRPdXRzaWRlT2ZUaGVUYXJnZXRSYW5nZUluR2VuZXJhdG9ycyksbnI9MCxNcj1JZTtucjxNci5sZW5ndGg7bnIrKyl7dmFyIFBlPU1yW25yXTtQZS5wdXNoKE9lKX1mb3IodmFyIFVlPTAsZnI9X2U7VWU8ZnIubGVuZ3RoO1VlKyspe3ZhciBQZT1mcltVZV07UGUucHVzaChPZSl9fWZvcih2YXIgRGU9MDtEZTxaLmxlbmd0aDtEZSsrKXt2YXIgZ3I9WltEZV0sVnI9UmUucmVzb2x2ZU5hbWUoWmUubmFtZSxncixaZS5mbGFncywhMSk7aWYoVnIhPT1aZSYmIXJyW0RlXS5oYXMoU3IpKXt2YXIgVHI9YWUoWmUuZXhwb3J0U3ltYm9sfHxaZSxncix0aSk7aWYoVHIpcnJbRGVdLnNldChTcixUcik7ZWxzZSBpZih0aSl7aWYoIShaZS5mbGFncyYyNjIxNDQpKXt2YXIgT2U9ZS5jcmVhdGVEaWFnbm9zdGljRm9yTm9kZShYZSxtLnR5cGVXaWxsTm90QmVWaXNpYmxlSW5UaGVOZXdTY29wZSk7SWVbRGVdLnB1c2goT2UpLF9lW0RlXS5wdXNoKE9lKX19ZWxzZSBIZVtEZV0udXNhZ2VzLnNldChYZS50ZXh0LHt1c2FnZTpKcixzeW1ib2w6WmUsbm9kZTpYZX0pfX1yZXR1cm4gU3J9fX1mdW5jdGlvbiBfcihYZSl7aWYoIShYZT09PUZlLnJhbmdlfHxJKEZlLnJhbmdlKSYmRmUucmFuZ2UuaW5kZXhPZihYZSk+PTApKXt2YXIgSnI9ZS5pc0lkZW50aWZpZXIoWGUpP3BpKFhlKTpSZS5nZXRTeW1ib2xBdExvY2F0aW9uKFhlKTtpZihKcil7dmFyIHRpPWUuZmluZCh3ZSxmdW5jdGlvbihTcil7cmV0dXJuIFNyLnN5bWJvbD09PUpyfSk7aWYodGkpaWYoZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24odGkpKXt2YXIgWmU9dGkuc3ltYm9sLmlkLnRvU3RyaW5nKCk7ZGUuaGFzKFplKXx8KHllLnB1c2godGkpLGRlLnNldChaZSwhMCkpfWVsc2UgQWU9QWV8fHRpfWUuZm9yRWFjaENoaWxkKFhlLF9yKX19ZnVuY3Rpb24gcGkoWGUpe3JldHVybiBYZS5wYXJlbnQmJmUuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoWGUucGFyZW50KSYmWGUucGFyZW50Lm5hbWU9PT1YZT9SZS5nZXRTaG9ydGhhbmRBc3NpZ25tZW50VmFsdWVTeW1ib2woWGUucGFyZW50KTpSZS5nZXRTeW1ib2xBdExvY2F0aW9uKFhlKX1mdW5jdGlvbiBhZShYZSxKcix0aSl7aWYoISFYZSl7dmFyIFplPVhlLmdldERlY2xhcmF0aW9ucygpO2lmKFplJiZaZS5zb21lKGZ1bmN0aW9uKHpyKXtyZXR1cm4genIucGFyZW50PT09SnJ9KSlyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoWGUubmFtZSk7dmFyIFNyPWFlKFhlLnBhcmVudCxKcix0aSk7aWYoU3IhPT12b2lkIDApcmV0dXJuIHRpP2UuZmFjdG9yeS5jcmVhdGVRdWFsaWZpZWROYW1lKFNyLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFhlLm5hbWUpKTplLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFNyLFhlLm5hbWUpfX19ZnVuY3Rpb24gZmUoRmUpe3JldHVybiBlLmZpbmRBbmNlc3RvcihGZSxmdW5jdGlvbihaKXtyZXR1cm4gWi5wYXJlbnQmJmcoWikmJiFlLmlzQmluYXJ5RXhwcmVzc2lvbihaLnBhcmVudCl9KX1mdW5jdGlvbiBnKEZlKXt2YXIgWj1GZS5wYXJlbnQ7c3dpdGNoKFoua2luZCl7Y2FzZSAyOTk6cmV0dXJuITF9c3dpdGNoKEZlLmtpbmQpe2Nhc2UgMTA6cmV0dXJuIFoua2luZCE9PTI2NiYmWi5raW5kIT09MjcwO2Nhc2UgMjI1OmNhc2UgMjAxOmNhc2UgMjAzOnJldHVybiExO2Nhc2UgNzk6cmV0dXJuIFoua2luZCE9PTIwMyYmWi5raW5kIT09MjcwJiZaLmtpbmQhPT0yNzV9cmV0dXJuITB9ZnVuY3Rpb24gbmUoRmUpe3N3aXRjaChGZS5raW5kKXtjYXNlIDIzNTpjYXNlIDMwNTpjYXNlIDI2MjpjYXNlIDI4OTpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiB1ZShGZSl7cmV0dXJuIFdlKEZlKXx8KGUuaXNKc3hFbGVtZW50KEZlKXx8ZS5pc0pzeFNlbGZDbG9zaW5nRWxlbWVudChGZSl8fGUuaXNKc3hGcmFnbWVudChGZSkpJiYoZS5pc0pzeEVsZW1lbnQoRmUucGFyZW50KXx8ZS5pc0pzeEZyYWdtZW50KEZlLnBhcmVudCkpfWZ1bmN0aW9uIFdlKEZlKXtyZXR1cm4gZS5pc1N0cmluZ0xpdGVyYWwoRmUpJiZGZS5wYXJlbnQmJmUuaXNKc3hBdHRyaWJ1dGUoRmUucGFyZW50KX19KSh3PUMuZXh0cmFjdFN5bWJvbHx8KEMuZXh0cmFjdFN5bWJvbD17fSkpfSkoYT1lLnJlZmFjdG9yfHwoZS5yZWZhY3Rvcj17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3PVwiRXh0cmFjdCB0eXBlXCIsQj17bmFtZTpcIkV4dHJhY3QgdG8gdHlwZSBhbGlhc1wiLGRlc2NyaXB0aW9uOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuRXh0cmFjdF90b190eXBlX2FsaWFzKSxraW5kOlwicmVmYWN0b3IuZXh0cmFjdC50eXBlXCJ9LEU9e25hbWU6XCJFeHRyYWN0IHRvIGludGVyZmFjZVwiLGRlc2NyaXB0aW9uOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuRXh0cmFjdF90b19pbnRlcmZhY2UpLGtpbmQ6XCJyZWZhY3Rvci5leHRyYWN0LmludGVyZmFjZVwifSxRPXtuYW1lOlwiRXh0cmFjdCB0byB0eXBlZGVmXCIsZGVzY3JpcHRpb246ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5FeHRyYWN0X3RvX3R5cGVkZWYpLGtpbmQ6XCJyZWZhY3Rvci5leHRyYWN0LnR5cGVkZWZcIn07Qy5yZWdpc3RlclJlZmFjdG9yKHcse2tpbmRzOltCLmtpbmQsRS5raW5kLFEua2luZF0sZ2V0QXZhaWxhYmxlQWN0aW9uczpmdW5jdGlvbihLKXt2YXIgYj1sZShLLEsudHJpZ2dlclJlYXNvbj09PVwiaW52b2tlZFwiKTtyZXR1cm4gYj9DLmlzUmVmYWN0b3JFcnJvckluZm8oYik/Sy5wcmVmZXJlbmNlcy5wcm92aWRlUmVmYWN0b3JOb3RBcHBsaWNhYmxlUmVhc29uP1t7bmFtZTp3LGRlc2NyaXB0aW9uOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuRXh0cmFjdF90eXBlKSxhY3Rpb25zOltLZShLZSh7fSxRKSx7bm90QXBwbGljYWJsZVJlYXNvbjpiLmVycm9yfSksS2UoS2Uoe30sQikse25vdEFwcGxpY2FibGVSZWFzb246Yi5lcnJvcn0pLEtlKEtlKHt9LEUpLHtub3RBcHBsaWNhYmxlUmVhc29uOmIuZXJyb3J9KV19XTplLmVtcHR5QXJyYXk6W3tuYW1lOncsZGVzY3JpcHRpb246ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5FeHRyYWN0X3R5cGUpLGFjdGlvbnM6Yi5pc0pTP1tRXTplLmFwcGVuZChbQl0sYi50eXBlRWxlbWVudHMmJkUpfV06ZS5lbXB0eUFycmF5fSxnZXRFZGl0c0ZvckFjdGlvbjpmdW5jdGlvbihLLGIpe3ZhciBzZT1LLmZpbGUsSj1sZShLKTtlLkRlYnVnLmFzc2VydChKJiYhQy5pc1JlZmFjdG9yRXJyb3JJbmZvKEopLFwiRXhwZWN0ZWQgdG8gZmluZCBhIHJhbmdlIHRvIGV4dHJhY3RcIik7dmFyIGllPWUuZ2V0VW5pcXVlTmFtZShcIk5ld1R5cGVcIixzZSksUj1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChLLGZ1bmN0aW9uKHZlKXtzd2l0Y2goYil7Y2FzZSBCLm5hbWU6cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCFKLmlzSlMsXCJJbnZhbGlkIGFjdGlvbk5hbWUvSlMgY29tYm9cIiksRyh2ZSxzZSxpZSxKKTtjYXNlIFEubmFtZTpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnQoSi5pc0pTLFwiSW52YWxpZCBhY3Rpb25OYW1lL0pTIGNvbWJvXCIpLGYodmUsc2UsaWUsSik7Y2FzZSBFLm5hbWU6cmV0dXJuIGUuRGVidWcuYXNzZXJ0KCFKLmlzSlMmJiEhSi50eXBlRWxlbWVudHMsXCJJbnZhbGlkIGFjdGlvbk5hbWUvSlMgY29tYm9cIiksb2UodmUsc2UsaWUsSik7ZGVmYXVsdDplLkRlYnVnLmZhaWwoXCJVbmV4cGVjdGVkIGFjdGlvbiBuYW1lXCIpfX0pLHE9c2UuZmlsZU5hbWUsTz1lLmdldFJlbmFtZUxvY2F0aW9uKFIscSxpZSwhMSk7cmV0dXJue2VkaXRzOlIscmVuYW1lRmlsZW5hbWU6cSxyZW5hbWVMb2NhdGlvbjpPfX19KTtmdW5jdGlvbiBsZShULEspe0s9PT12b2lkIDAmJihLPSEwKTt2YXIgYj1ULmZpbGUsc2U9VC5zdGFydFBvc2l0aW9uLEo9ZS5pc1NvdXJjZUZpbGVKUyhiKSxpZT1lLmdldFRva2VuQXRQb3NpdGlvbihiLHNlKSxSPWUuY3JlYXRlVGV4dFJhbmdlRnJvbVNwYW4oZS5nZXRSZWZhY3RvckNvbnRleHRTcGFuKFQpKSxxPVIucG9zPT09Ui5lbmQmJkssTz1lLmZpbmRBbmNlc3RvcihpZSxmdW5jdGlvbih4KXtyZXR1cm4geC5wYXJlbnQmJmUuaXNUeXBlTm9kZSh4KSYmIXAoUix4LnBhcmVudCxiKSYmKHF8fGUubm9kZU92ZXJsYXBzV2l0aFN0YXJ0RW5kKGllLGIsUi5wb3MsUi5lbmQpKX0pO2lmKCFPfHwhZS5pc1R5cGVOb2RlKE8pKXJldHVybntlcnJvcjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLlNlbGVjdGlvbl9pc19ub3RfYV92YWxpZF90eXBlX25vZGUpfTt2YXIgdmU9VC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksZWU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5maW5kQW5jZXN0b3IoTyxlLmlzU3RhdGVtZW50KSxcIlNob3VsZCBmaW5kIGEgc3RhdGVtZW50XCIpLGhlPW0odmUsTyxlZSxiKTtpZighaGUpcmV0dXJue2Vycm9yOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuTm9fdHlwZV9jb3VsZF9iZV9leHRyYWN0ZWRfZnJvbV90aGlzX3R5cGVfbm9kZSl9O3ZhciBGPU4odmUsTyk7cmV0dXJue2lzSlM6SixzZWxlY3Rpb246TyxmaXJzdFN0YXRlbWVudDplZSx0eXBlUGFyYW1ldGVyczpoZSx0eXBlRWxlbWVudHM6Rn19ZnVuY3Rpb24gTihULEspe2lmKCEhSylpZihlLmlzSW50ZXJzZWN0aW9uVHlwZU5vZGUoSykpe2Zvcih2YXIgYj1bXSxzZT1uZXcgZS5NYXAsSj0wLGllPUsudHlwZXM7SjxpZS5sZW5ndGg7SisrKXt2YXIgUj1pZVtKXSxxPU4oVCxSKTtpZighcXx8IXEuZXZlcnkoZnVuY3Rpb24oTyl7cmV0dXJuIE8ubmFtZSYmZS5hZGRUb1NlZW4oc2UsZS5nZXROYW1lRnJvbVByb3BlcnR5TmFtZShPLm5hbWUpKX0pKXJldHVybjtlLmFkZFJhbmdlKGIscSl9cmV0dXJuIGJ9ZWxzZXtpZihlLmlzUGFyZW50aGVzaXplZFR5cGVOb2RlKEspKXJldHVybiBOKFQsSy50eXBlKTtpZihlLmlzVHlwZUxpdGVyYWxOb2RlKEspKXJldHVybiBLLm1lbWJlcnN9fWZ1bmN0aW9uIHAoVCxLLGIpe3JldHVybiBlLnJhbmdlQ29udGFpbnNTdGFydEVuZChULGUuc2tpcFRyaXZpYShiLnRleHQsSy5wb3MpLEsuZW5kKX1mdW5jdGlvbiBtKFQsSyxiLHNlKXt2YXIgSj1bXTtyZXR1cm4gaWUoSyk/dm9pZCAwOko7ZnVuY3Rpb24gaWUoUil7aWYoZS5pc1R5cGVSZWZlcmVuY2VOb2RlKFIpKXtpZihlLmlzSWRlbnRpZmllcihSLnR5cGVOYW1lKSlmb3IodmFyIHE9Ui50eXBlTmFtZSxPPVQucmVzb2x2ZU5hbWUocS50ZXh0LHEsMjYyMTQ0LCEwKSx2ZT0wLGVlPShPPT1udWxsP3ZvaWQgMDpPLmRlY2xhcmF0aW9ucyl8fGUuZW1wdHlBcnJheTt2ZTxlZS5sZW5ndGg7dmUrKyl7dmFyIGhlPWVlW3ZlXTtpZihlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKGhlKSYmaGUuZ2V0U291cmNlRmlsZSgpPT09c2Upe2lmKGhlLm5hbWUuZXNjYXBlZFRleHQ9PT1xLmVzY2FwZWRUZXh0JiZwKGhlLEssc2UpKXJldHVybiEwO2lmKHAoYixoZSxzZSkmJiFwKEssaGUsc2UpKXtlLnB1c2hJZlVuaXF1ZShKLGhlKTticmVha319fX1lbHNlIGlmKGUuaXNJbmZlclR5cGVOb2RlKFIpKXt2YXIgRj1lLmZpbmRBbmNlc3RvcihSLGZ1bmN0aW9uKFgpe3JldHVybiBlLmlzQ29uZGl0aW9uYWxUeXBlTm9kZShYKSYmcChYLmV4dGVuZHNUeXBlLFIsc2UpfSk7aWYoIUZ8fCFwKEssRixzZSkpcmV0dXJuITB9ZWxzZSBpZihlLmlzVHlwZVByZWRpY2F0ZU5vZGUoUil8fGUuaXNUaGlzVHlwZU5vZGUoUikpe3ZhciB4PWUuZmluZEFuY2VzdG9yKFIucGFyZW50LGUuaXNGdW5jdGlvbkxpa2UpO2lmKHgmJngudHlwZSYmcCh4LnR5cGUsUixzZSkmJiFwKEsseCxzZSkpcmV0dXJuITB9ZWxzZSBpZihlLmlzVHlwZVF1ZXJ5Tm9kZShSKSl7aWYoZS5pc0lkZW50aWZpZXIoUi5leHByTmFtZSkpe3ZhciBPPVQucmVzb2x2ZU5hbWUoUi5leHByTmFtZS50ZXh0LFIuZXhwck5hbWUsMTExNTUxLCExKTtpZigoTz09bnVsbD92b2lkIDA6Ty52YWx1ZURlY2xhcmF0aW9uKSYmcChiLE8udmFsdWVEZWNsYXJhdGlvbixzZSkmJiFwKEssTy52YWx1ZURlY2xhcmF0aW9uLHNlKSlyZXR1cm4hMH1lbHNlIGlmKGUuaXNUaGlzSWRlbnRpZmllcihSLmV4cHJOYW1lLmxlZnQpJiYhcChLLFIucGFyZW50LHNlKSlyZXR1cm4hMH1yZXR1cm4gc2UmJmUuaXNUdXBsZVR5cGVOb2RlKFIpJiZlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHNlLFIucG9zKS5saW5lPT09ZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihzZSxSLmVuZCkubGluZSYmZS5zZXRFbWl0RmxhZ3MoUiwxKSxlLmZvckVhY2hDaGlsZChSLGllKX19ZnVuY3Rpb24gRyhULEssYixzZSl7dmFyIEo9c2UuZmlyc3RTdGF0ZW1lbnQsaWU9c2Uuc2VsZWN0aW9uLFI9c2UudHlwZVBhcmFtZXRlcnMscT1lLmZhY3RvcnkuY3JlYXRlVHlwZUFsaWFzRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxiLFIubWFwKGZ1bmN0aW9uKE8pe3JldHVybiBlLmZhY3RvcnkudXBkYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKE8sTy5tb2RpZmllcnMsTy5uYW1lLE8uY29uc3RyYWludCx2b2lkIDApfSksaWUpO1QuaW5zZXJ0Tm9kZUJlZm9yZShLLEosZS5pZ25vcmVTb3VyY2VOZXdsaW5lcyhxKSwhMCksVC5yZXBsYWNlTm9kZShLLGllLGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShiLFIubWFwKGZ1bmN0aW9uKE8pe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoTy5uYW1lLHZvaWQgMCl9KSkse2xlYWRpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5MZWFkaW5nVHJpdmlhT3B0aW9uLkV4Y2x1ZGUsdHJhaWxpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5UcmFpbGluZ1RyaXZpYU9wdGlvbi5FeGNsdWRlV2hpdGVzcGFjZX0pfWZ1bmN0aW9uIG9lKFQsSyxiLHNlKXt2YXIgSixpZT1zZS5maXJzdFN0YXRlbWVudCxSPXNlLnNlbGVjdGlvbixxPXNlLnR5cGVQYXJhbWV0ZXJzLE89c2UudHlwZUVsZW1lbnRzLHZlPWUuZmFjdG9yeS5jcmVhdGVJbnRlcmZhY2VEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLGIscSx2b2lkIDAsTyk7ZS5zZXRUZXh0UmFuZ2UodmUsKEo9T1swXSk9PT1udWxsfHxKPT09dm9pZCAwP3ZvaWQgMDpKLnBhcmVudCksVC5pbnNlcnROb2RlQmVmb3JlKEssaWUsZS5pZ25vcmVTb3VyY2VOZXdsaW5lcyh2ZSksITApLFQucmVwbGFjZU5vZGUoSyxSLGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShiLHEubWFwKGZ1bmN0aW9uKGVlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKGVlLm5hbWUsdm9pZCAwKX0pKSx7bGVhZGluZ1RyaXZpYU9wdGlvbjplLnRleHRDaGFuZ2VzLkxlYWRpbmdUcml2aWFPcHRpb24uRXhjbHVkZSx0cmFpbGluZ1RyaXZpYU9wdGlvbjplLnRleHRDaGFuZ2VzLlRyYWlsaW5nVHJpdmlhT3B0aW9uLkV4Y2x1ZGVXaGl0ZXNwYWNlfSl9ZnVuY3Rpb24gZihULEssYixzZSl7dmFyIEo9c2UuZmlyc3RTdGF0ZW1lbnQsaWU9c2Uuc2VsZWN0aW9uLFI9c2UudHlwZVBhcmFtZXRlcnM7ZS5zZXRFbWl0RmxhZ3MoaWUsMzU4NCk7dmFyIHE9ZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVHlwZWRlZlRhZyhlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcInR5cGVkZWZcIiksZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVHlwZUV4cHJlc3Npb24oaWUpLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKGIpKSxPPVtdO2UuZm9yRWFjaChSLGZ1bmN0aW9uKHZlKXt2YXIgZWU9ZS5nZXRFZmZlY3RpdmVDb25zdHJhaW50T2ZUeXBlUGFyYW1ldGVyKHZlKSxoZT1lLmZhY3RvcnkuY3JlYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKHZvaWQgMCx2ZS5uYW1lKSxGPWUuZmFjdG9yeS5jcmVhdGVKU0RvY1RlbXBsYXRlVGFnKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwidGVtcGxhdGVcIiksZWUmJmUuY2FzdChlZSxlLmlzSlNEb2NUeXBlRXhwcmVzc2lvbiksW2hlXSk7Ty5wdXNoKEYpfSksVC5pbnNlcnROb2RlQmVmb3JlKEssSixlLmZhY3RvcnkuY3JlYXRlSlNEb2NDb21tZW50KHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KGUuY29uY2F0ZW5hdGUoTyxbcV0pKSksITApLFQucmVwbGFjZU5vZGUoSyxpZSxlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoYixSLm1hcChmdW5jdGlvbih2ZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZSh2ZS5uYW1lLHZvaWQgMCl9KSkpfX0pKGE9ZS5yZWZhY3Rvcnx8KGUucmVmYWN0b3I9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oQil7dmFyIEU9XCJHZW5lcmF0ZSAnZ2V0JyBhbmQgJ3NldCcgYWNjZXNzb3JzXCIsUT1lLkRpYWdub3N0aWNzLkdlbmVyYXRlX2dldF9hbmRfc2V0X2FjY2Vzc29ycy5tZXNzYWdlLGxlPXtuYW1lOkUsZGVzY3JpcHRpb246USxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5wcm9wZXJ0eS5nZW5lcmF0ZUFjY2Vzc29yc1wifTtDLnJlZ2lzdGVyUmVmYWN0b3IoRSx7a2luZHM6W2xlLmtpbmRdLGdldEVkaXRzRm9yQWN0aW9uOmZ1bmN0aW9uKHAsbSl7aWYoISFwLmVuZFBvc2l0aW9uKXt2YXIgRz1lLmNvZGVmaXguZ2V0QWNjZXNzb3JDb252ZXJ0aWJsZVByb3BlcnR5QXRQb3NpdGlvbihwLmZpbGUscC5wcm9ncmFtLHAuc3RhcnRQb3NpdGlvbixwLmVuZFBvc2l0aW9uKTtlLkRlYnVnLmFzc2VydChHJiYhQy5pc1JlZmFjdG9yRXJyb3JJbmZvKEcpLFwiRXhwZWN0ZWQgYXBwbGljYWJsZSByZWZhY3RvciBpbmZvXCIpO3ZhciBvZT1lLmNvZGVmaXguZ2VuZXJhdGVBY2Nlc3NvckZyb21Qcm9wZXJ0eShwLmZpbGUscC5wcm9ncmFtLHAuc3RhcnRQb3NpdGlvbixwLmVuZFBvc2l0aW9uLHAsbSk7aWYoISFvZSl7dmFyIGY9cC5maWxlLmZpbGVOYW1lLFQ9Ry5yZW5hbWVBY2Nlc3Nvcj9HLmFjY2Vzc29yTmFtZTpHLmZpZWxkTmFtZSxLPWUuaXNJZGVudGlmaWVyKFQpPzA6LTEsYj1LK2UuZ2V0UmVuYW1lTG9jYXRpb24ob2UsZixULnRleHQsZS5pc1BhcmFtZXRlcihHLmRlY2xhcmF0aW9uKSk7cmV0dXJue3JlbmFtZUZpbGVuYW1lOmYscmVuYW1lTG9jYXRpb246YixlZGl0czpvZX19fX0sZ2V0QXZhaWxhYmxlQWN0aW9uczpmdW5jdGlvbihOKXtpZighTi5lbmRQb3NpdGlvbilyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciBwPWUuY29kZWZpeC5nZXRBY2Nlc3NvckNvbnZlcnRpYmxlUHJvcGVydHlBdFBvc2l0aW9uKE4uZmlsZSxOLnByb2dyYW0sTi5zdGFydFBvc2l0aW9uLE4uZW5kUG9zaXRpb24sTi50cmlnZ2VyUmVhc29uPT09XCJpbnZva2VkXCIpO3JldHVybiBwP0MuaXNSZWZhY3RvckVycm9ySW5mbyhwKT9OLnByZWZlcmVuY2VzLnByb3ZpZGVSZWZhY3Rvck5vdEFwcGxpY2FibGVSZWFzb24/W3tuYW1lOkUsZGVzY3JpcHRpb246USxhY3Rpb25zOltLZShLZSh7fSxsZSkse25vdEFwcGxpY2FibGVSZWFzb246cC5lcnJvcn0pXX1dOmUuZW1wdHlBcnJheTpbe25hbWU6RSxkZXNjcmlwdGlvbjpRLGFjdGlvbnM6W2xlXX1dOmUuZW1wdHlBcnJheX19KX0pKHc9Qy5nZW5lcmF0ZUdldEFjY2Vzc29yQW5kU2V0QWNjZXNzb3J8fChDLmdlbmVyYXRlR2V0QWNjZXNzb3JBbmRTZXRBY2Nlc3Nvcj17fSkpfSkoYT1lLnJlZmFjdG9yfHwoZS5yZWZhY3Rvcj17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe2Z1bmN0aW9uIHcoRSl7cmV0dXJuIEUuZXJyb3IhPT12b2lkIDB9Qy5pc1JlZmFjdG9yRXJyb3JJbmZvPXc7ZnVuY3Rpb24gQihFLFEpe3JldHVybiBRP0Uuc3Vic3RyKDAsUS5sZW5ndGgpPT09UTohMH1DLnJlZmFjdG9yS2luZEJlZ2luc1dpdGg9Qn0pKGE9ZS5yZWZhY3Rvcnx8KGUucmVmYWN0b3I9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdz1cIk1vdmUgdG8gYSBuZXcgZmlsZVwiLEI9ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Nb3ZlX3RvX2FfbmV3X2ZpbGUpLEU9e25hbWU6dyxkZXNjcmlwdGlvbjpCLGtpbmQ6XCJyZWZhY3Rvci5tb3ZlLm5ld0ZpbGVcIn07Qy5yZWdpc3RlclJlZmFjdG9yKHcse2tpbmRzOltFLmtpbmRdLGdldEF2YWlsYWJsZUFjdGlvbnM6ZnVuY3Rpb24oSGUpe3ZhciBycj1OKEhlKTtyZXR1cm4gSGUucHJlZmVyZW5jZXMuYWxsb3dUZXh0Q2hhbmdlc0luTmV3RmlsZXMmJnJyP1t7bmFtZTp3LGRlc2NyaXB0aW9uOkIsYWN0aW9uczpbRV19XTpIZS5wcmVmZXJlbmNlcy5wcm92aWRlUmVmYWN0b3JOb3RBcHBsaWNhYmxlUmVhc29uP1t7bmFtZTp3LGRlc2NyaXB0aW9uOkIsYWN0aW9uczpbS2UoS2Uoe30sRSkse25vdEFwcGxpY2FibGVSZWFzb246ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5TZWxlY3Rpb25faXNfbm90X2FfdmFsaWRfc3RhdGVtZW50X29yX3N0YXRlbWVudHMpfSldfV06ZS5lbXB0eUFycmF5fSxnZXRFZGl0c0ZvckFjdGlvbjpmdW5jdGlvbihIZSxycil7ZS5EZWJ1Zy5hc3NlcnQocnI9PT13LFwiV3JvbmcgcmVmYWN0b3IgaW52b2tlZFwiKTt2YXIgSWU9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoTihIZSkpLF9lPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKEhlLGZ1bmN0aW9uKHdlKXtyZXR1cm4gbGUoSGUuZmlsZSxIZS5wcm9ncmFtLEllLHdlLEhlLmhvc3QsSGUucHJlZmVyZW5jZXMpfSk7cmV0dXJue2VkaXRzOl9lLHJlbmFtZUZpbGVuYW1lOnZvaWQgMCxyZW5hbWVMb2NhdGlvbjp2b2lkIDB9fX0pO2Z1bmN0aW9uIFEoRWUpe3ZhciBIZT1FZS5maWxlLHJyPWUuY3JlYXRlVGV4dFJhbmdlRnJvbVNwYW4oZS5nZXRSZWZhY3RvckNvbnRleHRTcGFuKEVlKSksSWU9SGUuc3RhdGVtZW50cyxfZT1lLmZpbmRJbmRleChJZSxmdW5jdGlvbih5ZSl7cmV0dXJuIHllLmVuZD5yci5wb3N9KTtpZihfZSE9PS0xKXt2YXIgd2U9SWVbX2VdO2lmKGUuaXNOYW1lZERlY2xhcmF0aW9uKHdlKSYmd2UubmFtZSYmZS5yYW5nZUNvbnRhaW5zUmFuZ2Uod2UubmFtZSxycikpcmV0dXJue3RvTW92ZTpbSWVbX2VdXSxhZnRlckxhc3Q6SWVbX2UrMV19O2lmKCEocnIucG9zPndlLmdldFN0YXJ0KEhlKSkpe3ZhciBkZT1lLmZpbmRJbmRleChJZSxmdW5jdGlvbih5ZSl7cmV0dXJuIHllLmVuZD5yci5lbmR9LF9lKTtpZighKGRlIT09LTEmJihkZT09PTB8fEllW2RlXS5nZXRTdGFydChIZSk8cnIuZW5kKSkpcmV0dXJue3RvTW92ZTpJZS5zbGljZShfZSxkZT09PS0xP0llLmxlbmd0aDpkZSksYWZ0ZXJMYXN0OmRlPT09LTE/dm9pZCAwOkllW2RlXX19fX1mdW5jdGlvbiBsZShFZSxIZSxycixJZSxfZSx3ZSl7dmFyIGRlPUhlLmdldFR5cGVDaGVja2VyKCkseWU9VihFZSxyci5hbGwsZGUpLEFlPWUuZ2V0RGlyZWN0b3J5UGF0aChFZS5maWxlTmFtZSksZXI9ZS5leHRlbnNpb25Gcm9tUGF0aChFZS5maWxlTmFtZSksaXI9QSh5KHllLm1vdmVkU3ltYm9scyksZXIsQWUsX2UpLENyPWlyK2VyO0llLmNyZWF0ZU5ld0ZpbGUoRWUsZS5jb21iaW5lUGF0aHMoQWUsQ3IpLG9lKEVlLHllLEllLHJyLEhlLGlyLHdlKSksRyhIZSxJZSxFZS5maWxlTmFtZSxDcixlLmhvc3RHZXRDYW5vbmljYWxGaWxlTmFtZShfZSkpfWZ1bmN0aW9uIE4oRWUpe3ZhciBIZT1RKEVlKTtpZihIZSE9PXZvaWQgMCl7dmFyIHJyPVtdLEllPVtdLF9lPUhlLnRvTW92ZSx3ZT1IZS5hZnRlckxhc3Q7cmV0dXJuIGUuZ2V0UmFuZ2VzV2hlcmUoX2UscCxmdW5jdGlvbihkZSx5ZSl7Zm9yKHZhciBBZT1kZTtBZTx5ZTtBZSsrKXJyLnB1c2goX2VbQWVdKTtJZS5wdXNoKHtmaXJzdDpfZVtkZV0sYWZ0ZXJMYXN0OndlfSl9KSxyci5sZW5ndGg9PT0wP3ZvaWQgMDp7YWxsOnJyLHJhbmdlczpJZX19fWZ1bmN0aW9uIHAoRWUpe3JldHVybiFtKEVlKSYmIWUuaXNQcm9sb2d1ZURpcmVjdGl2ZShFZSl9ZnVuY3Rpb24gbShFZSl7c3dpdGNoKEVlLmtpbmQpe2Nhc2UgMjY2OnJldHVybiEwO2Nhc2UgMjY1OnJldHVybiFlLmhhc1N5bnRhY3RpY01vZGlmaWVyKEVlLDEpO2Nhc2UgMjM3OnJldHVybiBFZS5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zLmV2ZXJ5KGZ1bmN0aW9uKEhlKXtyZXR1cm4hIUhlLmluaXRpYWxpemVyJiZlLmlzUmVxdWlyZUNhbGwoSGUuaW5pdGlhbGl6ZXIsITApfSk7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRyhFZSxIZSxycixJZSxfZSl7dmFyIHdlPUVlLmdldENvbXBpbGVyT3B0aW9ucygpLmNvbmZpZ0ZpbGU7aWYoISF3ZSl7dmFyIGRlPWUubm9ybWFsaXplUGF0aChlLmNvbWJpbmVQYXRocyhycixcIi4uXCIsSWUpKSx5ZT1lLmdldFJlbGF0aXZlUGF0aEZyb21GaWxlKHdlLmZpbGVOYW1lLGRlLF9lKSxBZT13ZS5zdGF0ZW1lbnRzWzBdJiZlLnRyeUNhc3Qod2Uuc3RhdGVtZW50c1swXS5leHByZXNzaW9uLGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbiksZXI9QWUmJmUuZmluZChBZS5wcm9wZXJ0aWVzLGZ1bmN0aW9uKGlyKXtyZXR1cm4gZS5pc1Byb3BlcnR5QXNzaWdubWVudChpcikmJmUuaXNTdHJpbmdMaXRlcmFsKGlyLm5hbWUpJiZpci5uYW1lLnRleHQ9PT1cImZpbGVzXCJ9KTtlciYmZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oZXIuaW5pdGlhbGl6ZXIpJiZIZS5pbnNlcnROb2RlSW5MaXN0QWZ0ZXIod2UsZS5sYXN0KGVyLmluaXRpYWxpemVyLmVsZW1lbnRzKSxlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbCh5ZSksZXIuaW5pdGlhbGl6ZXIuZWxlbWVudHMpfX1mdW5jdGlvbiBvZShFZSxIZSxycixJZSxfZSx3ZSxkZSl7dmFyIHllPV9lLmdldFR5cGVDaGVja2VyKCksQWU9ZS50YWtlV2hpbGUoRWUuc3RhdGVtZW50cyxlLmlzUHJvbG9ndWVEaXJlY3RpdmUpO2lmKCFFZS5leHRlcm5hbE1vZHVsZUluZGljYXRvciYmIUVlLmNvbW1vbkpzTW9kdWxlSW5kaWNhdG9yKXJldHVybiBmKEVlLEllLnJhbmdlcyxyciksVmUoVmUoW10sQWUsITApLEllLmFsbCwhMCk7dmFyIGVyPSEhRWUuZXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3IsaXI9ZS5nZXRRdW90ZVByZWZlcmVuY2UoRWUsZGUpLENyPXEoSGUub2xkRmlsZUltcG9ydHNGcm9tTmV3RmlsZSx3ZSxlcixpcik7Q3ImJmUuaW5zZXJ0SW1wb3J0cyhycixFZSxDciwhMCksVChFZSxJZS5hbGwscnIsSGUudW51c2VkSW1wb3J0c0Zyb21PbGRGaWxlLHllKSxmKEVlLEllLnJhbmdlcyxyciksSyhycixfZSxFZSxIZS5tb3ZlZFN5bWJvbHMsd2UpO3ZhciBZZT0kKEVlLEhlLm9sZEltcG9ydHNOZWVkZWRCeU5ld0ZpbGUsSGUubmV3RmlsZUltcG9ydHNGcm9tT2xkRmlsZSxycix5ZSxlcixpciksQnI9aGUoRWUsSWUuYWxsLEhlLm9sZEZpbGVJbXBvcnRzRnJvbU5ld0ZpbGUsZXIpO3JldHVybiBZZS5sZW5ndGgmJkJyLmxlbmd0aD9WZShWZShWZShWZShbXSxBZSwhMCksWWUsITApLFs0XSwhMSksQnIsITApOlZlKFZlKFZlKFtdLEFlLCEwKSxZZSwhMCksQnIsITApfWZ1bmN0aW9uIGYoRWUsSGUscnIpe2Zvcih2YXIgSWU9MCxfZT1IZTtJZTxfZS5sZW5ndGg7SWUrKyl7dmFyIHdlPV9lW0llXSxkZT13ZS5maXJzdCx5ZT13ZS5hZnRlckxhc3Q7cnIuZGVsZXRlTm9kZVJhbmdlRXhjbHVkaW5nRW5kKEVlLGRlLHllKX19ZnVuY3Rpb24gVChFZSxIZSxycixJZSxfZSl7Zm9yKHZhciB3ZT0wLGRlPUVlLnN0YXRlbWVudHM7d2U8ZGUubGVuZ3RoO3dlKyspe3ZhciB5ZT1kZVt3ZV07ZS5jb250YWlucyhIZSx5ZSl8fFIoeWUsZnVuY3Rpb24oQWUpe3JldHVybiBGKEVlLEFlLHJyLGZ1bmN0aW9uKGVyKXtyZXR1cm4gSWUuaGFzKF9lLmdldFN5bWJvbEF0TG9jYXRpb24oZXIpKX0pfSl9fWZ1bmN0aW9uIEsoRWUsSGUscnIsSWUsX2Upe2Zvcih2YXIgd2U9SGUuZ2V0VHlwZUNoZWNrZXIoKSxkZT1mdW5jdGlvbihpcil7aWYoaXI9PT1ycilyZXR1cm5cImNvbnRpbnVlXCI7Zm9yKHZhciBDcj1mdW5jdGlvbihOZSl7UihOZSxmdW5jdGlvbihuKXtpZih3ZS5nZXRTeW1ib2xBdExvY2F0aW9uKGllKG4pKT09PXJyLnN5bWJvbCl7dmFyIGxyPWZ1bmN0aW9uKHlyKXt2YXIgSXI9ZS5pc0JpbmRpbmdFbGVtZW50KHlyLnBhcmVudCk/ZS5nZXRQcm9wZXJ0eVN5bWJvbEZyb21CaW5kaW5nRWxlbWVudCh3ZSx5ci5wYXJlbnQpOmUuc2tpcEFsaWFzKHdlLmdldFN5bWJvbEF0TG9jYXRpb24oeXIpLHdlKTtyZXR1cm4hIUlyJiZJZS5oYXMoSXIpfTtGKGlyLG4sRWUsbHIpO3ZhciBiZT1lLmNvbWJpbmVQYXRocyhlLmdldERpcmVjdG9yeVBhdGgoaWUobikudGV4dCksX2UpLEdlPWsobixlLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChiZSksbHIpO0dlJiZFZS5pbnNlcnROb2RlQWZ0ZXIoaXIsTmUsR2UpO3ZhciB1cj1iKG4pO3VyJiZzZShFZSxpcix3ZSxJZSxfZSxiZSx1cixuKX19KX0sWWU9MCxCcj1pci5zdGF0ZW1lbnRzO1llPEJyLmxlbmd0aDtZZSsrKXt2YXIgRXI9QnJbWWVdO0NyKEVyKX19LHllPTAsQWU9SGUuZ2V0U291cmNlRmlsZXMoKTt5ZTxBZS5sZW5ndGg7eWUrKyl7dmFyIGVyPUFlW3llXTtkZShlcil9fWZ1bmN0aW9uIGIoRWUpe3N3aXRjaChFZS5raW5kKXtjYXNlIDI2NjpyZXR1cm4gRWUuaW1wb3J0Q2xhdXNlJiZFZS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncyYmRWUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3Mua2luZD09PTI2OD9FZS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5uYW1lOnZvaWQgMDtjYXNlIDI2NTpyZXR1cm4gRWUubmFtZTtjYXNlIDI1NDpyZXR1cm4gZS50cnlDYXN0KEVlLm5hbWUsZS5pc0lkZW50aWZpZXIpO2RlZmF1bHQ6cmV0dXJuIGUuRGVidWcuYXNzZXJ0TmV2ZXIoRWUsXCJVbmV4cGVjdGVkIG5vZGUga2luZCBcIi5jb25jYXQoRWUua2luZCkpfX1mdW5jdGlvbiBzZShFZSxIZSxycixJZSxfZSx3ZSxkZSx5ZSl7dmFyIEFlPWUuY29kZWZpeC5tb2R1bGVTcGVjaWZpZXJUb1ZhbGlkSWRlbnRpZmllcihfZSw5OSksZXI9ITEsaXI9W107aWYoZS5GaW5kQWxsUmVmZXJlbmNlcy5Db3JlLmVhY2hTeW1ib2xSZWZlcmVuY2VJbkZpbGUoZGUscnIsSGUsZnVuY3Rpb24oTmUpeyFlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKE5lLnBhcmVudCl8fChlcj1lcnx8ISFyci5yZXNvbHZlTmFtZShBZSxOZSw2NzEwODg2MywhMCksSWUuaGFzKHJyLmdldFN5bWJvbEF0TG9jYXRpb24oTmUucGFyZW50Lm5hbWUpKSYmaXIucHVzaChOZSkpfSksaXIubGVuZ3RoKXtmb3IodmFyIENyPWVyP2UuZ2V0VW5pcXVlTmFtZShBZSxIZSk6QWUsWWU9MCxCcj1pcjtZZTxCci5sZW5ndGg7WWUrKyl7dmFyIEVyPUJyW1llXTtFZS5yZXBsYWNlTm9kZShIZSxFcixlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihDcikpfUVlLmluc2VydE5vZGVBZnRlcihIZSx5ZSxKKHllLF9lLHdlKSl9fWZ1bmN0aW9uIEooRWUsSGUscnIpe3ZhciBJZT1lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihIZSksX2U9ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocnIpO3N3aXRjaChFZS5raW5kKXtjYXNlIDI2NjpyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZUltcG9ydENsYXVzZSghMSx2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZU5hbWVzcGFjZUltcG9ydChJZSkpLF9lLHZvaWQgMCk7Y2FzZSAyNjU6cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLCExLEllLGUuZmFjdG9yeS5jcmVhdGVFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZShfZSkpO2Nhc2UgMjU0OnJldHVybiBlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihJZSx2b2lkIDAsdm9pZCAwLGVlKF9lKSk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihFZSxcIlVuZXhwZWN0ZWQgbm9kZSBraW5kIFwiLmNvbmNhdChFZS5raW5kKSl9fWZ1bmN0aW9uIGllKEVlKXtyZXR1cm4gRWUua2luZD09PTI2Nj9FZS5tb2R1bGVTcGVjaWZpZXI6RWUua2luZD09PTI2NT9FZS5tb2R1bGVSZWZlcmVuY2UuZXhwcmVzc2lvbjpFZS5pbml0aWFsaXplci5hcmd1bWVudHNbMF19ZnVuY3Rpb24gUihFZSxIZSl7aWYoZS5pc0ltcG9ydERlY2xhcmF0aW9uKEVlKSllLmlzU3RyaW5nTGl0ZXJhbChFZS5tb2R1bGVTcGVjaWZpZXIpJiZIZShFZSk7ZWxzZSBpZihlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oRWUpKWUuaXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZShFZS5tb2R1bGVSZWZlcmVuY2UpJiZlLmlzU3RyaW5nTGl0ZXJhbExpa2UoRWUubW9kdWxlUmVmZXJlbmNlLmV4cHJlc3Npb24pJiZIZShFZSk7ZWxzZSBpZihlLmlzVmFyaWFibGVTdGF0ZW1lbnQoRWUpKWZvcih2YXIgcnI9MCxJZT1FZS5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zO3JyPEllLmxlbmd0aDtycisrKXt2YXIgX2U9SWVbcnJdO19lLmluaXRpYWxpemVyJiZlLmlzUmVxdWlyZUNhbGwoX2UuaW5pdGlhbGl6ZXIsITApJiZIZShfZSl9fWZ1bmN0aW9uIHEoRWUsSGUscnIsSWUpe3ZhciBfZSx3ZT1bXTtyZXR1cm4gRWUuZm9yRWFjaChmdW5jdGlvbihkZSl7ZGUuZXNjYXBlZE5hbWU9PT1cImRlZmF1bHRcIj9fZT1lLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihlLnN5bWJvbE5hbWVOb0RlZmF1bHQoZGUpKTp3ZS5wdXNoKGRlLm5hbWUpfSksTyhfZSx3ZSxIZSxycixJZSl9ZnVuY3Rpb24gTyhFZSxIZSxycixJZSxfZSl7aWYocnI9ZS5lbnN1cmVQYXRoSXNOb25Nb2R1bGVOYW1lKHJyKSxJZSl7dmFyIHdlPUhlLm1hcChmdW5jdGlvbih5ZSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoITEsdm9pZCAwLGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHllKSl9KTtyZXR1cm4gZS5tYWtlSW1wb3J0SWZOZWNlc3NhcnkoRWUsd2UscnIsX2UpfWVsc2V7ZS5EZWJ1Zy5hc3NlcnQoIUVlLFwiTm8gZGVmYXVsdCBpbXBvcnQgc2hvdWxkIGV4aXN0XCIpO3ZhciBkZT1IZS5tYXAoZnVuY3Rpb24oeWUpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlQmluZGluZ0VsZW1lbnQodm9pZCAwLHZvaWQgMCx5ZSl9KTtyZXR1cm4gZGUubGVuZ3RoP3ZlKGUuZmFjdG9yeS5jcmVhdGVPYmplY3RCaW5kaW5nUGF0dGVybihkZSksdm9pZCAwLGVlKGUuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKHJyKSkpOnZvaWQgMH19ZnVuY3Rpb24gdmUoRWUsSGUscnIsSWUpe3JldHVybiBJZT09PXZvaWQgMCYmKEllPTIpLGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCh2b2lkIDAsZS5mYWN0b3J5LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFtlLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihFZSx2b2lkIDAsSGUscnIpXSxJZSkpfWZ1bmN0aW9uIGVlKEVlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKFwicmVxdWlyZVwiKSx2b2lkIDAsW0VlXSl9ZnVuY3Rpb24gaGUoRWUsSGUscnIsSWUpe3JldHVybiBlLmZsYXRNYXAoSGUsZnVuY3Rpb24oX2Upe2lmKGQoX2UpJiYhRmUoRWUsX2UsSWUpJiZmZShfZSxmdW5jdGlvbihkZSl7cmV0dXJuIHJyLmhhcyhlLkRlYnVnLmNoZWNrRGVmaW5lZChkZS5zeW1ib2wpKX0pKXt2YXIgd2U9WihfZSxJZSk7aWYod2UpcmV0dXJuIHdlfXJldHVybiBfZX0pfWZ1bmN0aW9uIEYoRWUsSGUscnIsSWUpe3N3aXRjaChIZS5raW5kKXtjYXNlIDI2Njp4KEVlLEhlLHJyLEllKTticmVhaztjYXNlIDI2NTpJZShIZS5uYW1lKSYmcnIuZGVsZXRlKEVlLEhlKTticmVhaztjYXNlIDI1NDpYKEVlLEhlLHJyLEllKTticmVhaztkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoSGUsXCJVbmV4cGVjdGVkIGltcG9ydCBkZWNsIGtpbmQgXCIuY29uY2F0KEhlLmtpbmQpKX19ZnVuY3Rpb24geChFZSxIZSxycixJZSl7aWYoISFIZS5pbXBvcnRDbGF1c2Upe3ZhciBfZT1IZS5pbXBvcnRDbGF1c2Usd2U9X2UubmFtZSxkZT1fZS5uYW1lZEJpbmRpbmdzLHllPSF3ZXx8SWUod2UpLEFlPSFkZXx8KGRlLmtpbmQ9PT0yNjg/SWUoZGUubmFtZSk6ZGUuZWxlbWVudHMubGVuZ3RoIT09MCYmZGUuZWxlbWVudHMuZXZlcnkoZnVuY3Rpb24oWWUpe3JldHVybiBJZShZZS5uYW1lKX0pKTtpZih5ZSYmQWUpcnIuZGVsZXRlKEVlLEhlKTtlbHNlIGlmKHdlJiZ5ZSYmcnIuZGVsZXRlKEVlLHdlKSxkZSl7aWYoQWUpcnIucmVwbGFjZU5vZGUoRWUsSGUuaW1wb3J0Q2xhdXNlLGUuZmFjdG9yeS51cGRhdGVJbXBvcnRDbGF1c2UoSGUuaW1wb3J0Q2xhdXNlLEhlLmltcG9ydENsYXVzZS5pc1R5cGVPbmx5LHdlLHZvaWQgMCkpO2Vsc2UgaWYoZGUua2luZD09PTI2OSlmb3IodmFyIGVyPTAsaXI9ZGUuZWxlbWVudHM7ZXI8aXIubGVuZ3RoO2VyKyspe3ZhciBDcj1pcltlcl07SWUoQ3IubmFtZSkmJnJyLmRlbGV0ZShFZSxDcil9fX19ZnVuY3Rpb24gWChFZSxIZSxycixJZSl7dmFyIF9lPUhlLm5hbWU7c3dpdGNoKF9lLmtpbmQpe2Nhc2UgNzk6SWUoX2UpJiZyci5kZWxldGUoRWUsX2UpO2JyZWFrO2Nhc2UgMjAyOmJyZWFrO2Nhc2UgMjAxOmlmKF9lLmVsZW1lbnRzLmV2ZXJ5KGZ1bmN0aW9uKEFlKXtyZXR1cm4gZS5pc0lkZW50aWZpZXIoQWUubmFtZSkmJkllKEFlLm5hbWUpfSkpcnIuZGVsZXRlKEVlLGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChIZS5wYXJlbnQpJiZIZS5wYXJlbnQuZGVjbGFyYXRpb25zLmxlbmd0aD09PTE/SGUucGFyZW50LnBhcmVudDpIZSk7ZWxzZSBmb3IodmFyIHdlPTAsZGU9X2UuZWxlbWVudHM7d2U8ZGUubGVuZ3RoO3dlKyspe3ZhciB5ZT1kZVt3ZV07ZS5pc0lkZW50aWZpZXIoeWUubmFtZSkmJkllKHllLm5hbWUpJiZyci5kZWxldGUoRWUseWUubmFtZSl9YnJlYWt9fWZ1bmN0aW9uICQoRWUsSGUscnIsSWUsX2Usd2UsZGUpe2Zvcih2YXIgeWU9W10sQWU9MCxlcj1FZS5zdGF0ZW1lbnRzO0FlPGVyLmxlbmd0aDtBZSsrKXt2YXIgaXI9ZXJbQWVdO1IoaXIsZnVuY3Rpb24oRXIpe2UuYXBwZW5kKHllLGsoRXIsaWUoRXIpLGZ1bmN0aW9uKE5lKXtyZXR1cm4gSGUuaGFzKF9lLmdldFN5bWJvbEF0TG9jYXRpb24oTmUpKX0pKX0pfXZhciBDcixZZT1bXSxCcj1lLm5vZGVTZWVuVHJhY2tlcigpO3JldHVybiByci5mb3JFYWNoKGZ1bmN0aW9uKEVyKXtpZighIUVyLmRlY2xhcmF0aW9ucylmb3IodmFyIE5lPTAsbj1Fci5kZWNsYXJhdGlvbnM7TmU8bi5sZW5ndGg7TmUrKyl7dmFyIGxyPW5bTmVdO2lmKCEhSShscikpe3ZhciBiZT1uZShscik7aWYoISFiZSl7dmFyIEdlPXVlKGxyKTtCcihHZSkmJldlKEVlLEdlLGJlLEllLHdlKSxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKGxyLDUxMik/Q3I9YmU6WWUucHVzaChiZS50ZXh0KX19fX0pLGUuYXBwZW5kKHllLE8oQ3IsWWUsZS5yZW1vdmVGaWxlRXh0ZW5zaW9uKGUuZ2V0QmFzZUZpbGVOYW1lKEVlLmZpbGVOYW1lKSksd2UsZGUpKSx5ZX1mdW5jdGlvbiBBKEVlLEhlLHJyLEllKXtmb3IodmFyIF9lPUVlLHdlPTE7O3dlKyspe3ZhciBkZT1lLmNvbWJpbmVQYXRocyhycixfZStIZSk7aWYoIUllLmZpbGVFeGlzdHMoZGUpKXJldHVybiBfZTtfZT1cIlwiLmNvbmNhdChFZSxcIi5cIikuY29uY2F0KHdlKX19ZnVuY3Rpb24geShFZSl7cmV0dXJuIEVlLmZvckVhY2hFbnRyeShlLnN5bWJvbE5hbWVOb0RlZmF1bHQpfHxcIm5ld0ZpbGVcIn1mdW5jdGlvbiBWKEVlLEhlLHJyKXt2YXIgSWU9bmV3IEgsX2U9bmV3IEgsd2U9bmV3IEgsZGU9ZS5maW5kKEhlLGZ1bmN0aW9uKGJlKXtyZXR1cm4hIShiZS50cmFuc2Zvcm1GbGFncyYyKX0pLHllPWxyKGRlKTt5ZSYmX2UuYWRkKHllKTtmb3IodmFyIEFlPTAsZXI9SGU7QWU8ZXIubGVuZ3RoO0FlKyspe3ZhciBpcj1lcltBZV07ZmUoaXIsZnVuY3Rpb24oYmUpe0llLmFkZChlLkRlYnVnLmNoZWNrRGVmaW5lZChlLmlzRXhwcmVzc2lvblN0YXRlbWVudChiZSk/cnIuZ2V0U3ltYm9sQXRMb2NhdGlvbihiZS5leHByZXNzaW9uLmxlZnQpOmJlLnN5bWJvbCxcIk5lZWQgYSBzeW1ib2wgaGVyZVwiKSl9KX1mb3IodmFyIENyPTAsWWU9SGU7Q3I8WWUubGVuZ3RoO0NyKyspe3ZhciBpcj1ZZVtDcl07aihpcixycixmdW5jdGlvbihHZSl7aWYoISFHZS5kZWNsYXJhdGlvbnMpZm9yKHZhciB1cj0wLHlyPUdlLmRlY2xhcmF0aW9uczt1cjx5ci5sZW5ndGg7dXIrKyl7dmFyIElyPXlyW3VyXTtMKElyKT9fZS5hZGQoR2UpOkkoSXIpJiZsKElyKT09PUVlJiYhSWUuaGFzKEdlKSYmd2UuYWRkKEdlKX19KX1mb3IodmFyIEJyPV9lLmNsb25lKCksRXI9bmV3IEgsTmU9MCxuPUVlLnN0YXRlbWVudHM7TmU8bi5sZW5ndGg7TmUrKyl7dmFyIGlyPW5bTmVdO2UuY29udGFpbnMoSGUsaXIpfHwoeWUmJiEhKGlyLnRyYW5zZm9ybUZsYWdzJjIpJiZCci5kZWxldGUoeWUpLGooaXIscnIsZnVuY3Rpb24oR2Upe0llLmhhcyhHZSkmJkVyLmFkZChHZSksQnIuZGVsZXRlKEdlKX0pKX1yZXR1cm57bW92ZWRTeW1ib2xzOkllLG5ld0ZpbGVJbXBvcnRzRnJvbU9sZEZpbGU6d2Usb2xkRmlsZUltcG9ydHNGcm9tTmV3RmlsZTpFcixvbGRJbXBvcnRzTmVlZGVkQnlOZXdGaWxlOl9lLHVudXNlZEltcG9ydHNGcm9tT2xkRmlsZTpCcn07ZnVuY3Rpb24gbHIoYmUpe2lmKGJlIT09dm9pZCAwKXt2YXIgR2U9cnIuZ2V0SnN4TmFtZXNwYWNlKGJlKSx1cj1yci5yZXNvbHZlTmFtZShHZSxiZSwxOTIwLCEwKTtyZXR1cm4hIXVyJiZlLnNvbWUodXIuZGVjbGFyYXRpb25zLEwpP3VyOnZvaWQgMH19fWZ1bmN0aW9uIEwoRWUpe3N3aXRjaChFZS5raW5kKXtjYXNlIDI2NTpjYXNlIDI3MDpjYXNlIDI2NzpjYXNlIDI2ODpyZXR1cm4hMDtjYXNlIDI1NDpyZXR1cm4gUChFZSk7Y2FzZSAyMDM6cmV0dXJuIGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKEVlLnBhcmVudC5wYXJlbnQpJiZQKEVlLnBhcmVudC5wYXJlbnQpO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIFAoRWUpe3JldHVybiBlLmlzU291cmNlRmlsZShFZS5wYXJlbnQucGFyZW50LnBhcmVudCkmJiEhRWUuaW5pdGlhbGl6ZXImJmUuaXNSZXF1aXJlQ2FsbChFZS5pbml0aWFsaXplciwhMCl9ZnVuY3Rpb24gayhFZSxIZSxycil7c3dpdGNoKEVlLmtpbmQpe2Nhc2UgMjY2Ont2YXIgSWU9RWUuaW1wb3J0Q2xhdXNlO2lmKCFJZSlyZXR1cm47dmFyIF9lPUllLm5hbWUmJnJyKEllLm5hbWUpP0llLm5hbWU6dm9pZCAwLHdlPUllLm5hbWVkQmluZGluZ3MmJlkoSWUubmFtZWRCaW5kaW5ncyxycik7cmV0dXJuIF9lfHx3ZT9lLmZhY3RvcnkuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCxlLmZhY3RvcnkuY3JlYXRlSW1wb3J0Q2xhdXNlKCExLF9lLHdlKSxIZSx2b2lkIDApOnZvaWQgMH1jYXNlIDI2NTpyZXR1cm4gcnIoRWUubmFtZSk/RWU6dm9pZCAwO2Nhc2UgMjU0Ont2YXIgZGU9VShFZS5uYW1lLHJyKTtyZXR1cm4gZGU/dmUoZGUsRWUudHlwZSxlZShIZSksRWUucGFyZW50LmZsYWdzKTp2b2lkIDB9ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihFZSxcIlVuZXhwZWN0ZWQgaW1wb3J0IGtpbmQgXCIuY29uY2F0KEVlLmtpbmQpKX19ZnVuY3Rpb24gWShFZSxIZSl7aWYoRWUua2luZD09PTI2OClyZXR1cm4gSGUoRWUubmFtZSk/RWU6dm9pZCAwO3ZhciBycj1FZS5lbGVtZW50cy5maWx0ZXIoZnVuY3Rpb24oSWUpe3JldHVybiBIZShJZS5uYW1lKX0pO3JldHVybiByci5sZW5ndGg/ZS5mYWN0b3J5LmNyZWF0ZU5hbWVkSW1wb3J0cyhycik6dm9pZCAwfWZ1bmN0aW9uIFUoRWUsSGUpe3N3aXRjaChFZS5raW5kKXtjYXNlIDc5OnJldHVybiBIZShFZSk/RWU6dm9pZCAwO2Nhc2UgMjAyOnJldHVybiBFZTtjYXNlIDIwMTp7dmFyIHJyPUVlLmVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbihJZSl7cmV0dXJuIEllLnByb3BlcnR5TmFtZXx8IWUuaXNJZGVudGlmaWVyKEllLm5hbWUpfHxIZShJZS5uYW1lKX0pO3JldHVybiByci5sZW5ndGg/ZS5mYWN0b3J5LmNyZWF0ZU9iamVjdEJpbmRpbmdQYXR0ZXJuKHJyKTp2b2lkIDB9fX1mdW5jdGlvbiBqKEVlLEhlLHJyKXtFZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gSWUoX2Upe2lmKGUuaXNJZGVudGlmaWVyKF9lKSYmIWUuaXNEZWNsYXJhdGlvbk5hbWUoX2UpKXt2YXIgd2U9SGUuZ2V0U3ltYm9sQXRMb2NhdGlvbihfZSk7d2UmJnJyKHdlKX1lbHNlIF9lLmZvckVhY2hDaGlsZChJZSl9KX12YXIgSD1mdW5jdGlvbigpe2Z1bmN0aW9uIEVlKCl7dGhpcy5tYXA9bmV3IGUuTWFwfXJldHVybiBFZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKEhlKXt0aGlzLm1hcC5zZXQoU3RyaW5nKGUuZ2V0U3ltYm9sSWQoSGUpKSxIZSl9LEVlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oSGUpe3JldHVybiB0aGlzLm1hcC5oYXMoU3RyaW5nKGUuZ2V0U3ltYm9sSWQoSGUpKSl9LEVlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oSGUpe3RoaXMubWFwLmRlbGV0ZShTdHJpbmcoZS5nZXRTeW1ib2xJZChIZSkpKX0sRWUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oSGUpe3RoaXMubWFwLmZvckVhY2goSGUpfSxFZS5wcm90b3R5cGUuZm9yRWFjaEVudHJ5PWZ1bmN0aW9uKEhlKXtyZXR1cm4gZS5mb3JFYWNoRW50cnkodGhpcy5tYXAsSGUpfSxFZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgSGU9bmV3IEVlO3JldHVybiBlLmNvcHlFbnRyaWVzKHRoaXMubWFwLEhlLm1hcCksSGV9LEVlfSgpO2Z1bmN0aW9uIEkoRWUpe3JldHVybiBEKEVlKSYmZS5pc1NvdXJjZUZpbGUoRWUucGFyZW50KXx8ZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oRWUpJiZlLmlzU291cmNlRmlsZShFZS5wYXJlbnQucGFyZW50LnBhcmVudCl9ZnVuY3Rpb24gbChFZSl7cmV0dXJuIGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKEVlKT9FZS5wYXJlbnQucGFyZW50LnBhcmVudDpFZS5wYXJlbnR9ZnVuY3Rpb24gZChFZSl7cmV0dXJuIGUuRGVidWcuYXNzZXJ0KGUuaXNTb3VyY2VGaWxlKEVlLnBhcmVudCksXCJOb2RlIHBhcmVudCBzaG91bGQgYmUgYSBTb3VyY2VGaWxlXCIpLEQoRWUpfHxlLmlzVmFyaWFibGVTdGF0ZW1lbnQoRWUpfWZ1bmN0aW9uIEQoRWUpe3N3aXRjaChFZS5raW5kKXtjYXNlIDI1NjpjYXNlIDI1NzpjYXNlIDI2MTpjYXNlIDI2MDpjYXNlIDI1OTpjYXNlIDI1ODpjYXNlIDI2NTpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBmZShFZSxIZSl7c3dpdGNoKEVlLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjU3OmNhc2UgMjYxOmNhc2UgMjYwOmNhc2UgMjU5OmNhc2UgMjU4OmNhc2UgMjY1OnJldHVybiBIZShFZSk7Y2FzZSAyMzc6cmV0dXJuIGUuZmlyc3REZWZpbmVkKEVlLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oSWUpe3JldHVybiBnKEllLm5hbWUsSGUpfSk7Y2FzZSAyMzg6e3ZhciBycj1FZS5leHByZXNzaW9uO3JldHVybiBlLmlzQmluYXJ5RXhwcmVzc2lvbihycikmJmUuZ2V0QXNzaWdubWVudERlY2xhcmF0aW9uS2luZChycik9PT0xP0hlKEVlKTp2b2lkIDB9fX1mdW5jdGlvbiBnKEVlLEhlKXtzd2l0Y2goRWUua2luZCl7Y2FzZSA3OTpyZXR1cm4gSGUoZS5jYXN0KEVlLnBhcmVudCxmdW5jdGlvbihycil7cmV0dXJuIGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHJyKXx8ZS5pc0JpbmRpbmdFbGVtZW50KHJyKX0pKTtjYXNlIDIwMjpjYXNlIDIwMTpyZXR1cm4gZS5maXJzdERlZmluZWQoRWUuZWxlbWVudHMsZnVuY3Rpb24ocnIpe3JldHVybiBlLmlzT21pdHRlZEV4cHJlc3Npb24ocnIpP3ZvaWQgMDpnKHJyLm5hbWUsSGUpfSk7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihFZSxcIlVuZXhwZWN0ZWQgbmFtZSBraW5kIFwiLmNvbmNhdChFZS5raW5kKSl9fWZ1bmN0aW9uIG5lKEVlKXtyZXR1cm4gZS5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoRWUpP2UudHJ5Q2FzdChFZS5leHByZXNzaW9uLmxlZnQubmFtZSxlLmlzSWRlbnRpZmllcik6ZS50cnlDYXN0KEVlLm5hbWUsZS5pc0lkZW50aWZpZXIpfWZ1bmN0aW9uIHVlKEVlKXtzd2l0Y2goRWUua2luZCl7Y2FzZSAyNTQ6cmV0dXJuIEVlLnBhcmVudC5wYXJlbnQ7Y2FzZSAyMDM6cmV0dXJuIHVlKGUuY2FzdChFZS5wYXJlbnQucGFyZW50LGZ1bmN0aW9uKEhlKXtyZXR1cm4gZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oSGUpfHxlLmlzQmluZGluZ0VsZW1lbnQoSGUpfSkpO2RlZmF1bHQ6cmV0dXJuIEVlfX1mdW5jdGlvbiBXZShFZSxIZSxycixJZSxfZSl7aWYoIUZlKEVlLEhlLF9lLHJyKSlpZihfZSllLmlzRXhwcmVzc2lvblN0YXRlbWVudChIZSl8fEllLmluc2VydEV4cG9ydE1vZGlmaWVyKEVlLEhlKTtlbHNle3ZhciB3ZT1SZShIZSk7d2UubGVuZ3RoIT09MCYmSWUuaW5zZXJ0Tm9kZXNBZnRlcihFZSxIZSx3ZS5tYXAoemUpKX19ZnVuY3Rpb24gRmUoRWUsSGUscnIsSWUpe3ZhciBfZTtyZXR1cm4gcnI/IWUuaXNFeHByZXNzaW9uU3RhdGVtZW50KEhlKSYmZS5oYXNTeW50YWN0aWNNb2RpZmllcihIZSwxKXx8ISEoSWUmJigoX2U9RWUuc3ltYm9sLmV4cG9ydHMpPT09bnVsbHx8X2U9PT12b2lkIDA/dm9pZCAwOl9lLmhhcyhJZS5lc2NhcGVkVGV4dCkpKTpSZShIZSkuc29tZShmdW5jdGlvbih3ZSl7cmV0dXJuIEVlLnN5bWJvbC5leHBvcnRzLmhhcyhlLmVzY2FwZUxlYWRpbmdVbmRlcnNjb3Jlcyh3ZSkpfSl9ZnVuY3Rpb24gWihFZSxIZSl7cmV0dXJuIEhlP1tCZShFZSldOmdlKEVlKX1mdW5jdGlvbiBCZShFZSl7dmFyIEhlPWUuY29uY2F0ZW5hdGUoW2UuZmFjdG9yeS5jcmVhdGVNb2RpZmllcig5MyldLEVlLm1vZGlmaWVycyk7c3dpdGNoKEVlLmtpbmQpe2Nhc2UgMjU2OnJldHVybiBlLmZhY3RvcnkudXBkYXRlRnVuY3Rpb25EZWNsYXJhdGlvbihFZSxFZS5kZWNvcmF0b3JzLEhlLEVlLmFzdGVyaXNrVG9rZW4sRWUubmFtZSxFZS50eXBlUGFyYW1ldGVycyxFZS5wYXJhbWV0ZXJzLEVlLnR5cGUsRWUuYm9keSk7Y2FzZSAyNTc6cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVDbGFzc0RlY2xhcmF0aW9uKEVlLEVlLmRlY29yYXRvcnMsSGUsRWUubmFtZSxFZS50eXBlUGFyYW1ldGVycyxFZS5oZXJpdGFnZUNsYXVzZXMsRWUubWVtYmVycyk7Y2FzZSAyMzc6cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVWYXJpYWJsZVN0YXRlbWVudChFZSxIZSxFZS5kZWNsYXJhdGlvbkxpc3QpO2Nhc2UgMjYxOnJldHVybiBlLmZhY3RvcnkudXBkYXRlTW9kdWxlRGVjbGFyYXRpb24oRWUsRWUuZGVjb3JhdG9ycyxIZSxFZS5uYW1lLEVlLmJvZHkpO2Nhc2UgMjYwOnJldHVybiBlLmZhY3RvcnkudXBkYXRlRW51bURlY2xhcmF0aW9uKEVlLEVlLmRlY29yYXRvcnMsSGUsRWUubmFtZSxFZS5tZW1iZXJzKTtjYXNlIDI1OTpyZXR1cm4gZS5mYWN0b3J5LnVwZGF0ZVR5cGVBbGlhc0RlY2xhcmF0aW9uKEVlLEVlLmRlY29yYXRvcnMsSGUsRWUubmFtZSxFZS50eXBlUGFyYW1ldGVycyxFZS50eXBlKTtjYXNlIDI1ODpyZXR1cm4gZS5mYWN0b3J5LnVwZGF0ZUludGVyZmFjZURlY2xhcmF0aW9uKEVlLEVlLmRlY29yYXRvcnMsSGUsRWUubmFtZSxFZS50eXBlUGFyYW1ldGVycyxFZS5oZXJpdGFnZUNsYXVzZXMsRWUubWVtYmVycyk7Y2FzZSAyNjU6cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihFZSxFZS5kZWNvcmF0b3JzLEhlLEVlLmlzVHlwZU9ubHksRWUubmFtZSxFZS5tb2R1bGVSZWZlcmVuY2UpO2Nhc2UgMjM4OnJldHVybiBlLkRlYnVnLmZhaWwoKTtkZWZhdWx0OnJldHVybiBlLkRlYnVnLmFzc2VydE5ldmVyKEVlLFwiVW5leHBlY3RlZCBkZWNsYXJhdGlvbiBraW5kIFwiLmNvbmNhdChFZS5raW5kKSl9fWZ1bmN0aW9uIGdlKEVlKXtyZXR1cm4gVmUoW0VlXSxSZShFZSkubWFwKHplKSwhMCl9ZnVuY3Rpb24gUmUoRWUpe3N3aXRjaChFZS5raW5kKXtjYXNlIDI1NjpjYXNlIDI1NzpyZXR1cm5bRWUubmFtZS50ZXh0XTtjYXNlIDIzNzpyZXR1cm4gZS5tYXBEZWZpbmVkKEVlLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnMsZnVuY3Rpb24oSGUpe3JldHVybiBlLmlzSWRlbnRpZmllcihIZS5uYW1lKT9IZS5uYW1lLnRleHQ6dm9pZCAwfSk7Y2FzZSAyNjE6Y2FzZSAyNjA6Y2FzZSAyNTk6Y2FzZSAyNTg6Y2FzZSAyNjU6cmV0dXJuIGUuZW1wdHlBcnJheTtjYXNlIDIzODpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiQ2FuJ3QgZXhwb3J0IGFuIEV4cHJlc3Npb25TdGF0ZW1lbnRcIik7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihFZSxcIlVuZXhwZWN0ZWQgZGVjbCBraW5kIFwiLmNvbmNhdChFZS5raW5kKSl9fWZ1bmN0aW9uIHplKEVlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZS5mYWN0b3J5LmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihcImV4cG9ydHNcIiksZS5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoRWUpKSw2MyxlLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihFZSkpKX19KShhPWUucmVmYWN0b3J8fChlLnJlZmFjdG9yPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc7KGZ1bmN0aW9uKEIpe3ZhciBFPVwiQWRkIG9yIHJlbW92ZSBicmFjZXMgaW4gYW4gYXJyb3cgZnVuY3Rpb25cIixRPWUuRGlhZ25vc3RpY3MuQWRkX29yX3JlbW92ZV9icmFjZXNfaW5fYW5fYXJyb3dfZnVuY3Rpb24ubWVzc2FnZSxsZT17bmFtZTpcIkFkZCBicmFjZXMgdG8gYXJyb3cgZnVuY3Rpb25cIixkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLkFkZF9icmFjZXNfdG9fYXJyb3dfZnVuY3Rpb24ubWVzc2FnZSxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5hcnJvdy5icmFjZXMuYWRkXCJ9LE49e25hbWU6XCJSZW1vdmUgYnJhY2VzIGZyb20gYXJyb3cgZnVuY3Rpb25cIixkZXNjcmlwdGlvbjplLkRpYWdub3N0aWNzLlJlbW92ZV9icmFjZXNfZnJvbV9hcnJvd19mdW5jdGlvbi5tZXNzYWdlLGtpbmQ6XCJyZWZhY3Rvci5yZXdyaXRlLmFycm93LmJyYWNlcy5yZW1vdmVcIn07Qy5yZWdpc3RlclJlZmFjdG9yKEUse2tpbmRzOltOLmtpbmRdLGdldEVkaXRzRm9yQWN0aW9uOm0sZ2V0QXZhaWxhYmxlQWN0aW9uczpwfSk7ZnVuY3Rpb24gcChvZSl7dmFyIGY9b2UuZmlsZSxUPW9lLnN0YXJ0UG9zaXRpb24sSz1vZS50cmlnZ2VyUmVhc29uLGI9RyhmLFQsSz09PVwiaW52b2tlZFwiKTtyZXR1cm4gYj9DLmlzUmVmYWN0b3JFcnJvckluZm8oYik/b2UucHJlZmVyZW5jZXMucHJvdmlkZVJlZmFjdG9yTm90QXBwbGljYWJsZVJlYXNvbj9be25hbWU6RSxkZXNjcmlwdGlvbjpRLGFjdGlvbnM6W0tlKEtlKHt9LGxlKSx7bm90QXBwbGljYWJsZVJlYXNvbjpiLmVycm9yfSksS2UoS2Uoe30sTikse25vdEFwcGxpY2FibGVSZWFzb246Yi5lcnJvcn0pXX1dOmUuZW1wdHlBcnJheTpbe25hbWU6RSxkZXNjcmlwdGlvbjpRLGFjdGlvbnM6W2IuYWRkQnJhY2VzP2xlOk5dfV06ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIG0ob2UsZil7dmFyIFQ9b2UuZmlsZSxLPW9lLnN0YXJ0UG9zaXRpb24sYj1HKFQsSyk7ZS5EZWJ1Zy5hc3NlcnQoYiYmIUMuaXNSZWZhY3RvckVycm9ySW5mbyhiKSxcIkV4cGVjdGVkIGFwcGxpY2FibGUgcmVmYWN0b3IgaW5mb1wiKTt2YXIgc2U9Yi5leHByZXNzaW9uLEo9Yi5yZXR1cm5TdGF0ZW1lbnQsaWU9Yi5mdW5jLFI7aWYoZj09PWxlLm5hbWUpe3ZhciBxPWUuZmFjdG9yeS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoc2UpO1I9ZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKFtxXSwhMCksZS5jb3B5TGVhZGluZ0NvbW1lbnRzKHNlLHEsVCwzLCEwKX1lbHNlIGlmKGY9PT1OLm5hbWUmJkope3ZhciBPPXNlfHxlLmZhY3RvcnkuY3JlYXRlVm9pZFplcm8oKTtSPWUubmVlZHNQYXJlbnRoZXNlcyhPKT9lLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oTyk6TyxlLmNvcHlUcmFpbGluZ0FzTGVhZGluZ0NvbW1lbnRzKEosUixULDMsITEpLGUuY29weUxlYWRpbmdDb21tZW50cyhKLFIsVCwzLCExKSxlLmNvcHlUcmFpbGluZ0NvbW1lbnRzKEosUixULDMsITEpfWVsc2UgZS5EZWJ1Zy5mYWlsKFwiaW52YWxpZCBhY3Rpb25cIik7dmFyIHZlPWUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKG9lLGZ1bmN0aW9uKGVlKXtlZS5yZXBsYWNlTm9kZShULGllLmJvZHksUil9KTtyZXR1cm57cmVuYW1lRmlsZW5hbWU6dm9pZCAwLHJlbmFtZUxvY2F0aW9uOnZvaWQgMCxlZGl0czp2ZX19ZnVuY3Rpb24gRyhvZSxmLFQsSyl7VD09PXZvaWQgMCYmKFQ9ITApO3ZhciBiPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKG9lLGYpLHNlPWUuZ2V0Q29udGFpbmluZ0Z1bmN0aW9uKGIpO2lmKCFzZSlyZXR1cm57ZXJyb3I6ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db3VsZF9ub3RfZmluZF9hX2NvbnRhaW5pbmdfYXJyb3dfZnVuY3Rpb24pfTtpZighZS5pc0Fycm93RnVuY3Rpb24oc2UpKXJldHVybntlcnJvcjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkNvbnRhaW5pbmdfZnVuY3Rpb25faXNfbm90X2FuX2Fycm93X2Z1bmN0aW9uKX07aWYoISghZS5yYW5nZUNvbnRhaW5zUmFuZ2Uoc2UsYil8fGUucmFuZ2VDb250YWluc1JhbmdlKHNlLmJvZHksYikmJiFUKSl7aWYoQy5yZWZhY3RvcktpbmRCZWdpbnNXaXRoKGxlLmtpbmQsSykmJmUuaXNFeHByZXNzaW9uKHNlLmJvZHkpKXJldHVybntmdW5jOnNlLGFkZEJyYWNlczohMCxleHByZXNzaW9uOnNlLmJvZHl9O2lmKEMucmVmYWN0b3JLaW5kQmVnaW5zV2l0aChOLmtpbmQsSykmJmUuaXNCbG9jayhzZS5ib2R5KSYmc2UuYm9keS5zdGF0ZW1lbnRzLmxlbmd0aD09PTEpe3ZhciBKPWUuZmlyc3Qoc2UuYm9keS5zdGF0ZW1lbnRzKTtpZihlLmlzUmV0dXJuU3RhdGVtZW50KEopKXJldHVybntmdW5jOnNlLGFkZEJyYWNlczohMSxleHByZXNzaW9uOkouZXhwcmVzc2lvbixyZXR1cm5TdGF0ZW1lbnQ6Sn19fX19KSh3PUMuYWRkT3JSZW1vdmVCcmFjZXNUb0Fycm93RnVuY3Rpb258fChDLmFkZE9yUmVtb3ZlQnJhY2VzVG9BcnJvd0Z1bmN0aW9uPXt9KSl9KShhPWUucmVmYWN0b3J8fChlLnJlZmFjdG9yPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc7KGZ1bmN0aW9uKEIpe3ZhciBFPVwiQ29udmVydCBwYXJhbWV0ZXJzIHRvIGRlc3RydWN0dXJlZCBvYmplY3RcIixRPTEsbGU9ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db252ZXJ0X3BhcmFtZXRlcnNfdG9fZGVzdHJ1Y3R1cmVkX29iamVjdCksTj17bmFtZTpFLGRlc2NyaXB0aW9uOmxlLGtpbmQ6XCJyZWZhY3Rvci5yZXdyaXRlLnBhcmFtZXRlcnMudG9EZXN0cnVjdHVyZWRcIn07Qy5yZWdpc3RlclJlZmFjdG9yKEUse2tpbmRzOltOLmtpbmRdLGdldEVkaXRzRm9yQWN0aW9uOm0sZ2V0QXZhaWxhYmxlQWN0aW9uczpwfSk7ZnVuY3Rpb24gcChVKXt2YXIgaj1VLmZpbGUsSD1VLnN0YXJ0UG9zaXRpb24sST1lLmlzU291cmNlRmlsZUpTKGopO2lmKEkpcmV0dXJuIGUuZW1wdHlBcnJheTt2YXIgbD1pZShqLEgsVS5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCkpO3JldHVybiBsP1t7bmFtZTpFLGRlc2NyaXB0aW9uOmxlLGFjdGlvbnM6W05dfV06ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIG0oVSxqKXtlLkRlYnVnLmFzc2VydChqPT09RSxcIlVuZXhwZWN0ZWQgYWN0aW9uIG5hbWVcIik7dmFyIEg9VS5maWxlLEk9VS5zdGFydFBvc2l0aW9uLGw9VS5wcm9ncmFtLGQ9VS5jYW5jZWxsYXRpb25Ub2tlbixEPVUuaG9zdCxmZT1pZShILEksbC5nZXRUeXBlQ2hlY2tlcigpKTtpZighKCFmZXx8IWQpKXt2YXIgZz1vZShmZSxsLGQpO2lmKGcudmFsaWQpe3ZhciBuZT1lLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aChVLGZ1bmN0aW9uKHVlKXtyZXR1cm4gRyhILGwsRCx1ZSxmZSxnKX0pO3JldHVybntyZW5hbWVGaWxlbmFtZTp2b2lkIDAscmVuYW1lTG9jYXRpb246dm9pZCAwLGVkaXRzOm5lfX1yZXR1cm57ZWRpdHM6W119fX1mdW5jdGlvbiBHKFUsaixILEksbCxkKXt2YXIgRD1kLnNpZ25hdHVyZSxmZT1lLm1hcChMKGwsaixIKSxmdW5jdGlvbihnZSl7cmV0dXJuIGUuZ2V0U3ludGhlc2l6ZWREZWVwQ2xvbmUoZ2UpfSk7aWYoRCl7dmFyIGc9ZS5tYXAoTChELGosSCksZnVuY3Rpb24oZ2Upe3JldHVybiBlLmdldFN5bnRoZXNpemVkRGVlcENsb25lKGdlKX0pO0JlKEQsZyl9QmUobCxmZSk7Zm9yKHZhciBuZT1lLnNvcnRBbmREZWR1cGxpY2F0ZShkLmZ1bmN0aW9uQ2FsbHMsZnVuY3Rpb24oZ2UsUmUpe3JldHVybiBlLmNvbXBhcmVWYWx1ZXMoZ2UucG9zLFJlLnBvcyl9KSx1ZT0wLFdlPW5lO3VlPFdlLmxlbmd0aDt1ZSsrKXt2YXIgRmU9V2VbdWVdO2lmKEZlLmFyZ3VtZW50cyYmRmUuYXJndW1lbnRzLmxlbmd0aCl7dmFyIFo9ZS5nZXRTeW50aGVzaXplZERlZXBDbG9uZShWKGwsRmUuYXJndW1lbnRzKSwhMCk7SS5yZXBsYWNlTm9kZVJhbmdlKGUuZ2V0U291cmNlRmlsZU9mTm9kZShGZSksZS5maXJzdChGZS5hcmd1bWVudHMpLGUubGFzdChGZS5hcmd1bWVudHMpLFose2xlYWRpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5MZWFkaW5nVHJpdmlhT3B0aW9uLkluY2x1ZGVBbGwsdHJhaWxpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5UcmFpbGluZ1RyaXZpYU9wdGlvbi5JbmNsdWRlfSl9fWZ1bmN0aW9uIEJlKGdlLFJlKXtJLnJlcGxhY2VOb2RlUmFuZ2VXaXRoTm9kZXMoVSxlLmZpcnN0KGdlLnBhcmFtZXRlcnMpLGUubGFzdChnZS5wYXJhbWV0ZXJzKSxSZSx7am9pbmVyOlwiLCBcIixpbmRlbnRhdGlvbjowLGxlYWRpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5MZWFkaW5nVHJpdmlhT3B0aW9uLkluY2x1ZGVBbGwsdHJhaWxpbmdUcml2aWFPcHRpb246ZS50ZXh0Q2hhbmdlcy5UcmFpbGluZ1RyaXZpYU9wdGlvbi5JbmNsdWRlfSl9fWZ1bmN0aW9uIG9lKFUsaixIKXt2YXIgST1ZKFUpLGw9ZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oVSk/ayhVKTpbXSxkPWUuZGVkdXBsaWNhdGUoVmUoVmUoW10sSSwhMCksbCwhMCksZS5lcXVhdGVWYWx1ZXMpLEQ9ai5nZXRUeXBlQ2hlY2tlcigpLGZlPWUuZmxhdE1hcChkLGZ1bmN0aW9uKFdlKXtyZXR1cm4gZS5GaW5kQWxsUmVmZXJlbmNlcy5nZXRSZWZlcmVuY2VFbnRyaWVzRm9yTm9kZSgtMSxXZSxqLGouZ2V0U291cmNlRmlsZXMoKSxIKX0pLGc9bmUoZmUpO3JldHVybiBlLmV2ZXJ5KGcuZGVjbGFyYXRpb25zLGZ1bmN0aW9uKFdlKXtyZXR1cm4gZS5jb250YWlucyhkLFdlKX0pfHwoZy52YWxpZD0hMSksZztmdW5jdGlvbiBuZShXZSl7Zm9yKHZhciBGZT17YWNjZXNzRXhwcmVzc2lvbnM6W10sdHlwZVVzYWdlczpbXX0sWj17ZnVuY3Rpb25DYWxsczpbXSxkZWNsYXJhdGlvbnM6W10sY2xhc3NSZWZlcmVuY2VzOkZlLHZhbGlkOiEwfSxCZT1lLm1hcChJLHVlKSxnZT1lLm1hcChsLHVlKSxSZT1lLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihVKSx6ZT1lLm1hcChJLGZ1bmN0aW9uKGVyKXtyZXR1cm4gZihlcixEKX0pLEVlPTAsSGU9V2U7RWU8SGUubGVuZ3RoO0VlKyspe3ZhciBycj1IZVtFZV07aWYocnIua2luZD09PTApe1oudmFsaWQ9ITE7Y29udGludWV9aWYoZS5jb250YWlucyh6ZSx1ZShyci5ub2RlKSkpe2lmKHEocnIubm9kZS5wYXJlbnQpKXtaLnNpZ25hdHVyZT1yci5ub2RlLnBhcmVudDtjb250aW51ZX12YXIgSWU9Yihycik7aWYoSWUpe1ouZnVuY3Rpb25DYWxscy5wdXNoKEllKTtjb250aW51ZX19dmFyIF9lPWYocnIubm9kZSxEKTtpZihfZSYmZS5jb250YWlucyh6ZSxfZSkpe3ZhciB3ZT1LKHJyKTtpZih3ZSl7Wi5kZWNsYXJhdGlvbnMucHVzaCh3ZSk7Y29udGludWV9fWlmKGUuY29udGFpbnMoQmUsdWUocnIubm9kZSkpfHxlLmlzTmV3RXhwcmVzc2lvblRhcmdldChyci5ub2RlKSl7dmFyIGRlPVQocnIpO2lmKGRlKWNvbnRpbnVlO3ZhciB3ZT1LKHJyKTtpZih3ZSl7Wi5kZWNsYXJhdGlvbnMucHVzaCh3ZSk7Y29udGludWV9dmFyIEllPWIocnIpO2lmKEllKXtaLmZ1bmN0aW9uQ2FsbHMucHVzaChJZSk7Y29udGludWV9fWlmKFJlJiZlLmNvbnRhaW5zKGdlLHVlKHJyLm5vZGUpKSl7dmFyIGRlPVQocnIpO2lmKGRlKWNvbnRpbnVlO3ZhciB3ZT1LKHJyKTtpZih3ZSl7Wi5kZWNsYXJhdGlvbnMucHVzaCh3ZSk7Y29udGludWV9dmFyIHllPXNlKHJyKTtpZih5ZSl7RmUuYWNjZXNzRXhwcmVzc2lvbnMucHVzaCh5ZSk7Y29udGludWV9aWYoZS5pc0NsYXNzRGVjbGFyYXRpb24oVS5wYXJlbnQpKXt2YXIgQWU9Sihycik7aWYoQWUpe0ZlLnR5cGVVc2FnZXMucHVzaChBZSk7Y29udGludWV9fX1aLnZhbGlkPSExfXJldHVybiBafWZ1bmN0aW9uIHVlKFdlKXt2YXIgRmU9RC5nZXRTeW1ib2xBdExvY2F0aW9uKFdlKTtyZXR1cm4gRmUmJmUuZ2V0U3ltYm9sVGFyZ2V0KEZlLEQpfX1mdW5jdGlvbiBmKFUsail7dmFyIEg9ZS5nZXRDb250YWluaW5nT2JqZWN0TGl0ZXJhbEVsZW1lbnQoVSk7aWYoSCl7dmFyIEk9ai5nZXRDb250ZXh0dWFsVHlwZUZvck9iamVjdExpdGVyYWxFbGVtZW50KEgpLGw9ST09bnVsbD92b2lkIDA6SS5nZXRTeW1ib2woKTtpZihsJiYhKGUuZ2V0Q2hlY2tGbGFncyhsKSY2KSlyZXR1cm4gbH19ZnVuY3Rpb24gVChVKXt2YXIgaj1VLm5vZGU7aWYoZS5pc0ltcG9ydFNwZWNpZmllcihqLnBhcmVudCl8fGUuaXNJbXBvcnRDbGF1c2Uoai5wYXJlbnQpfHxlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oai5wYXJlbnQpfHxlLmlzTmFtZXNwYWNlSW1wb3J0KGoucGFyZW50KXx8ZS5pc0V4cG9ydFNwZWNpZmllcihqLnBhcmVudCl8fGUuaXNFeHBvcnRBc3NpZ25tZW50KGoucGFyZW50KSlyZXR1cm4gan1mdW5jdGlvbiBLKFUpe2lmKGUuaXNEZWNsYXJhdGlvbihVLm5vZGUucGFyZW50KSlyZXR1cm4gVS5ub2RlfWZ1bmN0aW9uIGIoVSl7aWYoVS5ub2RlLnBhcmVudCl7dmFyIGo9VS5ub2RlLEg9ai5wYXJlbnQ7c3dpdGNoKEgua2luZCl7Y2FzZSAyMDg6Y2FzZSAyMDk6dmFyIEk9ZS50cnlDYXN0KEgsZS5pc0NhbGxPck5ld0V4cHJlc3Npb24pO2lmKEkmJkkuZXhwcmVzc2lvbj09PWopcmV0dXJuIEk7YnJlYWs7Y2FzZSAyMDY6dmFyIGw9ZS50cnlDYXN0KEgsZS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik7aWYobCYmbC5wYXJlbnQmJmwubmFtZT09PWope3ZhciBkPWUudHJ5Q2FzdChsLnBhcmVudCxlLmlzQ2FsbE9yTmV3RXhwcmVzc2lvbik7aWYoZCYmZC5leHByZXNzaW9uPT09bClyZXR1cm4gZH1icmVhaztjYXNlIDIwNzp2YXIgRD1lLnRyeUNhc3QoSCxlLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24pO2lmKEQmJkQucGFyZW50JiZELmFyZ3VtZW50RXhwcmVzc2lvbj09PWope3ZhciBmZT1lLnRyeUNhc3QoRC5wYXJlbnQsZS5pc0NhbGxPck5ld0V4cHJlc3Npb24pO2lmKGZlJiZmZS5leHByZXNzaW9uPT09RClyZXR1cm4gZmV9YnJlYWt9fX1mdW5jdGlvbiBzZShVKXtpZihVLm5vZGUucGFyZW50KXt2YXIgaj1VLm5vZGUsSD1qLnBhcmVudDtzd2l0Y2goSC5raW5kKXtjYXNlIDIwNjp2YXIgST1lLnRyeUNhc3QoSCxlLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKTtpZihJJiZJLmV4cHJlc3Npb249PT1qKXJldHVybiBJO2JyZWFrO2Nhc2UgMjA3OnZhciBsPWUudHJ5Q2FzdChILGUuaXNFbGVtZW50QWNjZXNzRXhwcmVzc2lvbik7aWYobCYmbC5leHByZXNzaW9uPT09ailyZXR1cm4gbDticmVha319fWZ1bmN0aW9uIEooVSl7dmFyIGo9VS5ub2RlO2lmKGUuZ2V0TWVhbmluZ0Zyb21Mb2NhdGlvbihqKT09PTJ8fGUuaXNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHNJbkNsYXNzRXh0ZW5kc0NsYXVzZShqLnBhcmVudCkpcmV0dXJuIGp9ZnVuY3Rpb24gaWUoVSxqLEgpe3ZhciBJPWUuZ2V0VG91Y2hpbmdUb2tlbihVLGopLGw9ZS5nZXRDb250YWluaW5nRnVuY3Rpb25EZWNsYXJhdGlvbihJKTtpZighUihJKSYmbCYmTyhsLEgpJiZlLnJhbmdlQ29udGFpbnNSYW5nZShsLEkpJiYhKGwuYm9keSYmZS5yYW5nZUNvbnRhaW5zUmFuZ2UobC5ib2R5LEkpKSlyZXR1cm4gbH1mdW5jdGlvbiBSKFUpe3ZhciBqPWUuZmluZEFuY2VzdG9yKFUsZS5pc0pTRG9jTm9kZSk7aWYoail7dmFyIEg9ZS5maW5kQW5jZXN0b3IoaixmdW5jdGlvbihJKXtyZXR1cm4hZS5pc0pTRG9jTm9kZShJKX0pO3JldHVybiEhSCYmZS5pc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKEgpfXJldHVybiExfWZ1bmN0aW9uIHEoVSl7cmV0dXJuIGUuaXNNZXRob2RTaWduYXR1cmUoVSkmJihlLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24oVS5wYXJlbnQpfHxlLmlzVHlwZUxpdGVyYWxOb2RlKFUucGFyZW50KSl9ZnVuY3Rpb24gTyhVLGope3ZhciBIO2lmKCFoZShVLnBhcmFtZXRlcnMsaikpcmV0dXJuITE7c3dpdGNoKFUua2luZCl7Y2FzZSAyNTY6cmV0dXJuIGVlKFUpJiZ2ZShVLGopO2Nhc2UgMTY5OmlmKGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihVLnBhcmVudCkpe3ZhciBJPWYoVS5uYW1lLGopO3JldHVybigoSD1JPT1udWxsP3ZvaWQgMDpJLmRlY2xhcmF0aW9ucyk9PT1udWxsfHxIPT09dm9pZCAwP3ZvaWQgMDpILmxlbmd0aCk9PT0xJiZ2ZShVLGopfXJldHVybiB2ZShVLGopO2Nhc2UgMTcxOnJldHVybiBlLmlzQ2xhc3NEZWNsYXJhdGlvbihVLnBhcmVudCk/ZWUoVS5wYXJlbnQpJiZ2ZShVLGopOngoVS5wYXJlbnQucGFyZW50KSYmdmUoVSxqKTtjYXNlIDIxMzpjYXNlIDIxNDpyZXR1cm4geChVLnBhcmVudCl9cmV0dXJuITF9ZnVuY3Rpb24gdmUoVSxqKXtyZXR1cm4hIVUuYm9keSYmIWouaXNJbXBsZW1lbnRhdGlvbk9mT3ZlcmxvYWQoVSl9ZnVuY3Rpb24gZWUoVSl7aWYoIVUubmFtZSl7dmFyIGo9ZS5maW5kTW9kaWZpZXIoVSw4OCk7cmV0dXJuISFqfXJldHVybiEwfWZ1bmN0aW9uIGhlKFUsail7cmV0dXJuICQoVSk+PVEmJmUuZXZlcnkoVSxmdW5jdGlvbihIKXtyZXR1cm4gRihILGopfSl9ZnVuY3Rpb24gRihVLGope2lmKGUuaXNSZXN0UGFyYW1ldGVyKFUpKXt2YXIgSD1qLmdldFR5cGVBdExvY2F0aW9uKFUpO2lmKCFqLmlzQXJyYXlUeXBlKEgpJiYhai5pc1R1cGxlVHlwZShIKSlyZXR1cm4hMX1yZXR1cm4hVS5tb2RpZmllcnMmJiFVLmRlY29yYXRvcnMmJmUuaXNJZGVudGlmaWVyKFUubmFtZSl9ZnVuY3Rpb24geChVKXtyZXR1cm4gZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oVSkmJmUuaXNWYXJDb25zdChVKSYmZS5pc0lkZW50aWZpZXIoVS5uYW1lKSYmIVUudHlwZX1mdW5jdGlvbiBYKFUpe3JldHVybiBVLmxlbmd0aD4wJiZlLmlzVGhpcyhVWzBdLm5hbWUpfWZ1bmN0aW9uICQoVSl7cmV0dXJuIFgoVSk/VS5sZW5ndGgtMTpVLmxlbmd0aH1mdW5jdGlvbiBBKFUpe3JldHVybiBYKFUpJiYoVT1lLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KFUuc2xpY2UoMSksVS5oYXNUcmFpbGluZ0NvbW1hKSksVX1mdW5jdGlvbiB5KFUsail7cmV0dXJuIGUuaXNJZGVudGlmaWVyKGopJiZlLmdldFRleHRPZklkZW50aWZpZXJPckxpdGVyYWwoaik9PT1VP2UuZmFjdG9yeS5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoVSk6ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChVLGopfWZ1bmN0aW9uIFYoVSxqKXt2YXIgSD1BKFUucGFyYW1ldGVycyksST1lLmlzUmVzdFBhcmFtZXRlcihlLmxhc3QoSCkpLGw9ST9qLnNsaWNlKDAsSC5sZW5ndGgtMSk6aixkPWUubWFwKGwsZnVuY3Rpb24obmUsdWUpe3ZhciBXZT1QKEhbdWVdKSxGZT15KFdlLG5lKTtyZXR1cm4gZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShGZS5uYW1lKSxlLmlzUHJvcGVydHlBc3NpZ25tZW50KEZlKSYmZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShGZS5pbml0aWFsaXplciksZS5jb3B5Q29tbWVudHMobmUsRmUpLEZlfSk7aWYoSSYmai5sZW5ndGg+PUgubGVuZ3RoKXt2YXIgRD1qLnNsaWNlKEgubGVuZ3RoLTEpLGZlPWUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoUChlLmxhc3QoSCkpLGUuZmFjdG9yeS5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uKEQpKTtkLnB1c2goZmUpfXZhciBnPWUuZmFjdG9yeS5jcmVhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihkLCExKTtyZXR1cm4gZ31mdW5jdGlvbiBMKFUsaixIKXt2YXIgST1qLmdldFR5cGVDaGVja2VyKCksbD1BKFUucGFyYW1ldGVycyksZD1lLm1hcChsLEZlKSxEPWUuZmFjdG9yeS5jcmVhdGVPYmplY3RCaW5kaW5nUGF0dGVybihkKSxmZT1aKGwpLGc7ZS5ldmVyeShsLFJlKSYmKGc9ZS5mYWN0b3J5LmNyZWF0ZU9iamVjdExpdGVyYWxFeHByZXNzaW9uKCkpO3ZhciBuZT1lLmZhY3RvcnkuY3JlYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24odm9pZCAwLHZvaWQgMCx2b2lkIDAsRCx2b2lkIDAsZmUsZyk7aWYoWChVLnBhcmFtZXRlcnMpKXt2YXIgdWU9VS5wYXJhbWV0ZXJzWzBdLFdlPWUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbih2b2lkIDAsdm9pZCAwLHZvaWQgMCx1ZS5uYW1lLHZvaWQgMCx1ZS50eXBlKTtyZXR1cm4gZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShXZS5uYW1lKSxlLmNvcHlDb21tZW50cyh1ZS5uYW1lLFdlLm5hbWUpLHVlLnR5cGUmJihlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKFdlLnR5cGUpLGUuY29weUNvbW1lbnRzKHVlLnR5cGUsV2UudHlwZSkpLGUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoW1dlLG5lXSl9cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoW25lXSk7ZnVuY3Rpb24gRmUoemUpe3ZhciBFZT1lLmZhY3RvcnkuY3JlYXRlQmluZGluZ0VsZW1lbnQodm9pZCAwLHZvaWQgMCxQKHplKSxlLmlzUmVzdFBhcmFtZXRlcih6ZSkmJlJlKHplKT9lLmZhY3RvcnkuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbigpOnplLmluaXRpYWxpemVyKTtyZXR1cm4gZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShFZSksemUuaW5pdGlhbGl6ZXImJkVlLmluaXRpYWxpemVyJiZlLmNvcHlDb21tZW50cyh6ZS5pbml0aWFsaXplcixFZS5pbml0aWFsaXplciksRWV9ZnVuY3Rpb24gWih6ZSl7dmFyIEVlPWUubWFwKHplLEJlKSxIZT1lLmFkZEVtaXRGbGFncyhlLmZhY3RvcnkuY3JlYXRlVHlwZUxpdGVyYWxOb2RlKEVlKSwxKTtyZXR1cm4gSGV9ZnVuY3Rpb24gQmUoemUpe3ZhciBFZT16ZS50eXBlOyFFZSYmKHplLmluaXRpYWxpemVyfHxlLmlzUmVzdFBhcmFtZXRlcih6ZSkpJiYoRWU9Z2UoemUpKTt2YXIgSGU9ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlKHZvaWQgMCxQKHplKSxSZSh6ZSk/ZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDU3KTp6ZS5xdWVzdGlvblRva2VuLEVlKTtyZXR1cm4gZS5zdXBwcmVzc0xlYWRpbmdBbmRUcmFpbGluZ1RyaXZpYShIZSksZS5jb3B5Q29tbWVudHMoemUubmFtZSxIZS5uYW1lKSx6ZS50eXBlJiZIZS50eXBlJiZlLmNvcHlDb21tZW50cyh6ZS50eXBlLEhlLnR5cGUpLEhlfWZ1bmN0aW9uIGdlKHplKXt2YXIgRWU9SS5nZXRUeXBlQXRMb2NhdGlvbih6ZSk7cmV0dXJuIGUuZ2V0VHlwZU5vZGVJZkFjY2Vzc2libGUoRWUsemUsaixIKX1mdW5jdGlvbiBSZSh6ZSl7aWYoZS5pc1Jlc3RQYXJhbWV0ZXIoemUpKXt2YXIgRWU9SS5nZXRUeXBlQXRMb2NhdGlvbih6ZSk7cmV0dXJuIUkuaXNUdXBsZVR5cGUoRWUpfXJldHVybiBJLmlzT3B0aW9uYWxQYXJhbWV0ZXIoemUpfX1mdW5jdGlvbiBQKFUpe3JldHVybiBlLmdldFRleHRPZklkZW50aWZpZXJPckxpdGVyYWwoVS5uYW1lKX1mdW5jdGlvbiBrKFUpe3N3aXRjaChVLnBhcmVudC5raW5kKXtjYXNlIDI1Nzp2YXIgaj1VLnBhcmVudDtpZihqLm5hbWUpcmV0dXJuW2oubmFtZV07dmFyIEg9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5maW5kTW9kaWZpZXIoaiw4OCksXCJOYW1lbGVzcyBjbGFzcyBkZWNsYXJhdGlvbiBzaG91bGQgYmUgYSBkZWZhdWx0IGV4cG9ydFwiKTtyZXR1cm5bSF07Y2FzZSAyMjY6dmFyIEk9VS5wYXJlbnQsbD1VLnBhcmVudC5wYXJlbnQsZD1JLm5hbWU7cmV0dXJuIGQ/W2QsbC5uYW1lXTpbbC5uYW1lXX19ZnVuY3Rpb24gWShVKXtzd2l0Y2goVS5raW5kKXtjYXNlIDI1NjppZihVLm5hbWUpcmV0dXJuW1UubmFtZV07dmFyIGo9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5maW5kTW9kaWZpZXIoVSw4OCksXCJOYW1lbGVzcyBmdW5jdGlvbiBkZWNsYXJhdGlvbiBzaG91bGQgYmUgYSBkZWZhdWx0IGV4cG9ydFwiKTtyZXR1cm5bal07Y2FzZSAxNjk6cmV0dXJuW1UubmFtZV07Y2FzZSAxNzE6dmFyIEg9ZS5EZWJ1Zy5jaGVja0RlZmluZWQoZS5maW5kQ2hpbGRPZktpbmQoVSwxMzQsVS5nZXRTb3VyY2VGaWxlKCkpLFwiQ29uc3RydWN0b3IgZGVjbGFyYXRpb24gc2hvdWxkIGhhdmUgY29uc3RydWN0b3Iga2V5d29yZFwiKTtpZihVLnBhcmVudC5raW5kPT09MjI2KXt2YXIgST1VLnBhcmVudC5wYXJlbnQ7cmV0dXJuW0kubmFtZSxIXX1yZXR1cm5bSF07Y2FzZSAyMTQ6cmV0dXJuW1UucGFyZW50Lm5hbWVdO2Nhc2UgMjEzOnJldHVybiBVLm5hbWU/W1UubmFtZSxVLnBhcmVudC5uYW1lXTpbVS5wYXJlbnQubmFtZV07ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5hc3NlcnROZXZlcihVLFwiVW5leHBlY3RlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbiBraW5kIFwiLmNvbmNhdChVLmtpbmQpKX19fSkodz1DLmNvbnZlcnRQYXJhbXNUb0Rlc3RydWN0dXJlZE9iamVjdHx8KEMuY29udmVydFBhcmFtc1RvRGVzdHJ1Y3R1cmVkT2JqZWN0PXt9KSl9KShhPWUucmVmYWN0b3J8fChlLnJlZmFjdG9yPXt9KSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7dmFyIHc7KGZ1bmN0aW9uKEIpe3ZhciBFPVwiQ29udmVydCB0byB0ZW1wbGF0ZSBzdHJpbmdcIixRPWUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ29udmVydF90b190ZW1wbGF0ZV9zdHJpbmcpLGxlPXtuYW1lOkUsZGVzY3JpcHRpb246USxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5zdHJpbmdcIn07Qy5yZWdpc3RlclJlZmFjdG9yKEUse2tpbmRzOltsZS5raW5kXSxnZXRFZGl0c0ZvckFjdGlvbjptLGdldEF2YWlsYWJsZUFjdGlvbnM6Tn0pO2Z1bmN0aW9uIE4odmUpe3ZhciBlZT12ZS5maWxlLGhlPXZlLnN0YXJ0UG9zaXRpb24sRj1wKGVlLGhlKSx4PWYoRiksWD17bmFtZTpFLGRlc2NyaXB0aW9uOlEsYWN0aW9uczpbXX07cmV0dXJuIGUuaXNCaW5hcnlFeHByZXNzaW9uKHgpJiZUKHgpLmlzVmFsaWRDb25jYXRlbmF0aW9uPyhYLmFjdGlvbnMucHVzaChsZSksW1hdKTp2ZS5wcmVmZXJlbmNlcy5wcm92aWRlUmVmYWN0b3JOb3RBcHBsaWNhYmxlUmVhc29uPyhYLmFjdGlvbnMucHVzaChLZShLZSh7fSxsZSkse25vdEFwcGxpY2FibGVSZWFzb246ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5DYW5fb25seV9jb252ZXJ0X3N0cmluZ19jb25jYXRlbmF0aW9uKX0pKSxbWF0pOmUuZW1wdHlBcnJheX1mdW5jdGlvbiBwKHZlLGVlKXt2YXIgaGU9ZS5nZXRUb2tlbkF0UG9zaXRpb24odmUsZWUpLEY9ZihoZSkseD0hVChGKS5pc1ZhbGlkQ29uY2F0ZW5hdGlvbjtyZXR1cm4geCYmZS5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uKEYucGFyZW50KSYmZS5pc0JpbmFyeUV4cHJlc3Npb24oRi5wYXJlbnQucGFyZW50KT9GLnBhcmVudC5wYXJlbnQ6aGV9ZnVuY3Rpb24gbSh2ZSxlZSl7dmFyIGhlPXZlLmZpbGUsRj12ZS5zdGFydFBvc2l0aW9uLHg9cChoZSxGKTtzd2l0Y2goZWUpe2Nhc2UgUTpyZXR1cm57ZWRpdHM6Ryh2ZSx4KX07ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiaW52YWxpZCBhY3Rpb25cIil9fWZ1bmN0aW9uIEcodmUsZWUpe3ZhciBoZT1mKGVlKSxGPXZlLmZpbGUseD1SKFQoaGUpLEYpLFg9ZS5nZXRUcmFpbGluZ0NvbW1lbnRSYW5nZXMoRi50ZXh0LGhlLmVuZCk7aWYoWCl7dmFyICQ9WFtYLmxlbmd0aC0xXSxBPXtwb3M6WFswXS5wb3MsZW5kOiQuZW5kfTtyZXR1cm4gZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgodmUsZnVuY3Rpb24oeSl7eS5kZWxldGVSYW5nZShGLEEpLHkucmVwbGFjZU5vZGUoRixoZSx4KX0pfWVsc2UgcmV0dXJuIGUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHZlLGZ1bmN0aW9uKHkpe3JldHVybiB5LnJlcGxhY2VOb2RlKEYsaGUseCl9KX1mdW5jdGlvbiBvZSh2ZSl7cmV0dXJuIHZlLm9wZXJhdG9yVG9rZW4ua2luZCE9PTYzfWZ1bmN0aW9uIGYodmUpe3ZhciBlZT1lLmZpbmRBbmNlc3Rvcih2ZS5wYXJlbnQsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5raW5kKXtjYXNlIDIwNjpjYXNlIDIwNzpyZXR1cm4hMTtjYXNlIDIyMzpjYXNlIDIyMTpyZXR1cm4hKGUuaXNCaW5hcnlFeHByZXNzaW9uKGhlLnBhcmVudCkmJm9lKGhlLnBhcmVudCkpO2RlZmF1bHQ6cmV0dXJuXCJxdWl0XCJ9fSk7cmV0dXJuIGVlfHx2ZX1mdW5jdGlvbiBUKHZlKXt2YXIgZWU9ZnVuY3Rpb24oQSl7aWYoIWUuaXNCaW5hcnlFeHByZXNzaW9uKEEpKXJldHVybntub2RlczpbQV0sb3BlcmF0b3JzOltdLHZhbGlkT3BlcmF0b3JzOiEwLGhhc1N0cmluZzplLmlzU3RyaW5nTGl0ZXJhbChBKXx8ZS5pc05vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsKEEpfTt2YXIgeT1lZShBLmxlZnQpLFY9eS5ub2RlcyxMPXkub3BlcmF0b3JzLFA9eS5oYXNTdHJpbmcsaz15LnZhbGlkT3BlcmF0b3JzO2lmKCEoUHx8ZS5pc1N0cmluZ0xpdGVyYWwoQS5yaWdodCl8fGUuaXNUZW1wbGF0ZUV4cHJlc3Npb24oQS5yaWdodCkpKXJldHVybntub2RlczpbQV0sb3BlcmF0b3JzOltdLGhhc1N0cmluZzohMSx2YWxpZE9wZXJhdG9yczohMH07dmFyIFk9QS5vcGVyYXRvclRva2VuLmtpbmQ9PT0zOSxVPWsmJlk7cmV0dXJuIFYucHVzaChBLnJpZ2h0KSxMLnB1c2goQS5vcGVyYXRvclRva2VuKSx7bm9kZXM6VixvcGVyYXRvcnM6TCxoYXNTdHJpbmc6ITAsdmFsaWRPcGVyYXRvcnM6VX19LGhlPWVlKHZlKSxGPWhlLm5vZGVzLHg9aGUub3BlcmF0b3JzLFg9aGUudmFsaWRPcGVyYXRvcnMsJD1oZS5oYXNTdHJpbmc7cmV0dXJue25vZGVzOkYsb3BlcmF0b3JzOngsaXNWYWxpZENvbmNhdGVuYXRpb246WCYmJH19dmFyIEs9ZnVuY3Rpb24odmUsZWUpe3JldHVybiBmdW5jdGlvbihoZSxGKXtoZTx2ZS5sZW5ndGgmJmUuY29weVRyYWlsaW5nQ29tbWVudHModmVbaGVdLEYsZWUsMywhMSl9fSxiPWZ1bmN0aW9uKHZlLGVlLGhlKXtyZXR1cm4gZnVuY3Rpb24oRix4KXtmb3IoO0YubGVuZ3RoPjA7KXt2YXIgWD1GLnNoaWZ0KCk7ZS5jb3B5VHJhaWxpbmdDb21tZW50cyh2ZVtYXSx4LGVlLDMsITEpLGhlKFgseCl9fX07ZnVuY3Rpb24gc2UodmUpe3JldHVybiB2ZS5yZXBsYWNlKC9cXFxcLnxbJGBdL2csZnVuY3Rpb24oZWUpe3JldHVybiBlZVswXT09PVwiXFxcXFwiP2VlOlwiXFxcXFwiK2VlfSl9ZnVuY3Rpb24gSih2ZSl7dmFyIGVlPWUuaXNUZW1wbGF0ZUhlYWQodmUpfHxlLmlzVGVtcGxhdGVNaWRkbGUodmUpPy0yOi0xO3JldHVybiBlLmdldFRleHRPZk5vZGUodmUpLnNsaWNlKDEsZWUpfWZ1bmN0aW9uIGllKHZlLGVlKXtmb3IodmFyIGhlPVtdLEY9XCJcIix4PVwiXCI7dmU8ZWUubGVuZ3RoOyl7dmFyIFg9ZWVbdmVdO2lmKGUuaXNTdHJpbmdMaXRlcmFsTGlrZShYKSlGKz1YLnRleHQseCs9c2UoZS5nZXRUZXh0T2ZOb2RlKFgpLnNsaWNlKDEsLTEpKSxoZS5wdXNoKHZlKSx2ZSsrO2Vsc2UgaWYoZS5pc1RlbXBsYXRlRXhwcmVzc2lvbihYKSl7Ris9WC5oZWFkLnRleHQseCs9SihYLmhlYWQpO2JyZWFrfWVsc2UgYnJlYWt9cmV0dXJuW3ZlLEYseCxoZV19ZnVuY3Rpb24gUih2ZSxlZSl7dmFyIGhlPXZlLm5vZGVzLEY9dmUub3BlcmF0b3JzLHg9SyhGLGVlKSxYPWIoaGUsZWUseCksJD1pZSgwLGhlKSxBPSRbMF0seT0kWzFdLFY9JFsyXSxMPSRbM107aWYoQT09PWhlLmxlbmd0aCl7dmFyIFA9ZS5mYWN0b3J5LmNyZWF0ZU5vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsKHksVik7cmV0dXJuIFgoTCxQKSxQfXZhciBrPVtdLFk9ZS5mYWN0b3J5LmNyZWF0ZVRlbXBsYXRlSGVhZCh5LFYpO1goTCxZKTtmb3IodmFyIFU9ZnVuY3Rpb24oSSl7dmFyIGw9TyhoZVtJXSk7eChJLGwpO3ZhciBkPWllKEkrMSxoZSksRD1kWzBdLGZlPWRbMV0sZz1kWzJdLG5lPWRbM107ST1ELTE7dmFyIHVlPUk9PT1oZS5sZW5ndGgtMTtpZihlLmlzVGVtcGxhdGVFeHByZXNzaW9uKGwpKXt2YXIgV2U9ZS5tYXAobC50ZW1wbGF0ZVNwYW5zLGZ1bmN0aW9uKFosQmUpe3EoWik7dmFyIGdlPUJlPT09bC50ZW1wbGF0ZVNwYW5zLmxlbmd0aC0xLFJlPVoubGl0ZXJhbC50ZXh0KyhnZT9mZTpcIlwiKSx6ZT1KKFoubGl0ZXJhbCkrKGdlP2c6XCJcIik7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUZW1wbGF0ZVNwYW4oWi5leHByZXNzaW9uLHVlJiZnZT9lLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVUYWlsKFJlLHplKTplLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVNaWRkbGUoUmUsemUpKX0pO2sucHVzaC5hcHBseShrLFdlKX1lbHNle3ZhciBGZT11ZT9lLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVUYWlsKGZlLGcpOmUuZmFjdG9yeS5jcmVhdGVUZW1wbGF0ZU1pZGRsZShmZSxnKTtYKG5lLEZlKSxrLnB1c2goZS5mYWN0b3J5LmNyZWF0ZVRlbXBsYXRlU3BhbihsLEZlKSl9aj1JfSxqLEg9QTtIPGhlLmxlbmd0aDtIKyspVShIKSxIPWo7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVUZW1wbGF0ZUV4cHJlc3Npb24oWSxrKX1mdW5jdGlvbiBxKHZlKXt2YXIgZWU9dmUuZ2V0U291cmNlRmlsZSgpO2UuY29weVRyYWlsaW5nQ29tbWVudHModmUsdmUuZXhwcmVzc2lvbixlZSwzLCExKSxlLmNvcHlUcmFpbGluZ0FzTGVhZGluZ0NvbW1lbnRzKHZlLmV4cHJlc3Npb24sdmUuZXhwcmVzc2lvbixlZSwzLCExKX1mdW5jdGlvbiBPKHZlKXtyZXR1cm4gZS5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uKHZlKSYmKHEodmUpLHZlPXZlLmV4cHJlc3Npb24pLHZlfX0pKHc9Qy5jb252ZXJ0U3RyaW5nT3JUZW1wbGF0ZUxpdGVyYWx8fChDLmNvbnZlcnRTdHJpbmdPclRlbXBsYXRlTGl0ZXJhbD17fSkpfSkoYT1lLnJlZmFjdG9yfHwoZS5yZWZhY3Rvcj17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE7KGZ1bmN0aW9uKEMpe3ZhciB3OyhmdW5jdGlvbihCKXt2YXIgRT1cIkNvbnZlcnQgYXJyb3cgZnVuY3Rpb24gb3IgZnVuY3Rpb24gZXhwcmVzc2lvblwiLFE9ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db252ZXJ0X2Fycm93X2Z1bmN0aW9uX29yX2Z1bmN0aW9uX2V4cHJlc3Npb24pLGxlPXtuYW1lOlwiQ29udmVydCB0byBhbm9ueW1vdXMgZnVuY3Rpb25cIixkZXNjcmlwdGlvbjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkNvbnZlcnRfdG9fYW5vbnltb3VzX2Z1bmN0aW9uKSxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5mdW5jdGlvbi5hbm9ueW1vdXNcIn0sTj17bmFtZTpcIkNvbnZlcnQgdG8gbmFtZWQgZnVuY3Rpb25cIixkZXNjcmlwdGlvbjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkNvbnZlcnRfdG9fbmFtZWRfZnVuY3Rpb24pLGtpbmQ6XCJyZWZhY3Rvci5yZXdyaXRlLmZ1bmN0aW9uLm5hbWVkXCJ9LHA9e25hbWU6XCJDb252ZXJ0IHRvIGFycm93IGZ1bmN0aW9uXCIsZGVzY3JpcHRpb246ZS5nZXRMb2NhbGVTcGVjaWZpY01lc3NhZ2UoZS5EaWFnbm9zdGljcy5Db252ZXJ0X3RvX2Fycm93X2Z1bmN0aW9uKSxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5mdW5jdGlvbi5hcnJvd1wifTtDLnJlZ2lzdGVyUmVmYWN0b3IoRSx7a2luZHM6W2xlLmtpbmQsTi5raW5kLHAua2luZF0sZ2V0RWRpdHNGb3JBY3Rpb246RyxnZXRBdmFpbGFibGVBY3Rpb25zOm19KTtmdW5jdGlvbiBtKHZlKXt2YXIgZWU9dmUuZmlsZSxoZT12ZS5zdGFydFBvc2l0aW9uLEY9dmUucHJvZ3JhbSx4PXZlLmtpbmQsWD1mKGVlLGhlLEYpO2lmKCFYKXJldHVybiBlLmVtcHR5QXJyYXk7dmFyICQ9WC5zZWxlY3RlZFZhcmlhYmxlRGVjbGFyYXRpb24sQT1YLmZ1bmMseT1bXSxWPVtdO2lmKEMucmVmYWN0b3JLaW5kQmVnaW5zV2l0aChOLmtpbmQseCkpe3ZhciBMPSR8fGUuaXNBcnJvd0Z1bmN0aW9uKEEpJiZlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihBLnBhcmVudCk/dm9pZCAwOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ291bGRfbm90X2NvbnZlcnRfdG9fbmFtZWRfZnVuY3Rpb24pO0w/Vi5wdXNoKEtlKEtlKHt9LE4pLHtub3RBcHBsaWNhYmxlUmVhc29uOkx9KSk6eS5wdXNoKE4pfWlmKEMucmVmYWN0b3JLaW5kQmVnaW5zV2l0aChsZS5raW5kLHgpKXt2YXIgTD0hJCYmZS5pc0Fycm93RnVuY3Rpb24oQSk/dm9pZCAwOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ291bGRfbm90X2NvbnZlcnRfdG9fYW5vbnltb3VzX2Z1bmN0aW9uKTtMP1YucHVzaChLZShLZSh7fSxsZSkse25vdEFwcGxpY2FibGVSZWFzb246TH0pKTp5LnB1c2gobGUpfWlmKEMucmVmYWN0b3JLaW5kQmVnaW5zV2l0aChwLmtpbmQseCkpe3ZhciBMPWUuaXNGdW5jdGlvbkV4cHJlc3Npb24oQSk/dm9pZCAwOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuQ291bGRfbm90X2NvbnZlcnRfdG9fYXJyb3dfZnVuY3Rpb24pO0w/Vi5wdXNoKEtlKEtlKHt9LHApLHtub3RBcHBsaWNhYmxlUmVhc29uOkx9KSk6eS5wdXNoKHApfXJldHVyblt7bmFtZTpFLGRlc2NyaXB0aW9uOlEsYWN0aW9uczp5Lmxlbmd0aD09PTAmJnZlLnByZWZlcmVuY2VzLnByb3ZpZGVSZWZhY3Rvck5vdEFwcGxpY2FibGVSZWFzb24/Vjp5fV19ZnVuY3Rpb24gRyh2ZSxlZSl7dmFyIGhlPXZlLmZpbGUsRj12ZS5zdGFydFBvc2l0aW9uLHg9dmUucHJvZ3JhbSxYPWYoaGUsRix4KTtpZighIVgpe3ZhciAkPVguZnVuYyxBPVtdO3N3aXRjaChlZSl7Y2FzZSBsZS5uYW1lOkEucHVzaC5hcHBseShBLEoodmUsJCkpO2JyZWFrO2Nhc2UgTi5uYW1lOnZhciB5PXNlKCQpO2lmKCF5KXJldHVybjtBLnB1c2guYXBwbHkoQSxpZSh2ZSwkLHkpKTticmVhaztjYXNlIHAubmFtZTppZighZS5pc0Z1bmN0aW9uRXhwcmVzc2lvbigkKSlyZXR1cm47QS5wdXNoLmFwcGx5KEEsUih2ZSwkKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZS5EZWJ1Zy5mYWlsKFwiaW52YWxpZCBhY3Rpb25cIil9cmV0dXJue3JlbmFtZUZpbGVuYW1lOnZvaWQgMCxyZW5hbWVMb2NhdGlvbjp2b2lkIDAsZWRpdHM6QX19fWZ1bmN0aW9uIG9lKHZlKXt2YXIgZWU9ITE7cmV0dXJuIHZlLmZvckVhY2hDaGlsZChmdW5jdGlvbiBoZShGKXtpZihlLmlzVGhpcyhGKSl7ZWU9ITA7cmV0dXJufSFlLmlzQ2xhc3NMaWtlKEYpJiYhZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oRikmJiFlLmlzRnVuY3Rpb25FeHByZXNzaW9uKEYpJiZlLmZvckVhY2hDaGlsZChGLGhlKX0pLGVlfWZ1bmN0aW9uIGYodmUsZWUsaGUpe3ZhciBGPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKHZlLGVlKSx4PWhlLmdldFR5cGVDaGVja2VyKCksWD1LKHZlLHgsRi5wYXJlbnQpO2lmKFgmJiFvZShYLmJvZHkpJiYheC5jb250YWluc0FyZ3VtZW50c1JlZmVyZW5jZShYKSlyZXR1cm57c2VsZWN0ZWRWYXJpYWJsZURlY2xhcmF0aW9uOiEwLGZ1bmM6WH07dmFyICQ9ZS5nZXRDb250YWluaW5nRnVuY3Rpb24oRik7aWYoJCYmKGUuaXNGdW5jdGlvbkV4cHJlc3Npb24oJCl8fGUuaXNBcnJvd0Z1bmN0aW9uKCQpKSYmIWUucmFuZ2VDb250YWluc1JhbmdlKCQuYm9keSxGKSYmIW9lKCQuYm9keSkmJiF4LmNvbnRhaW5zQXJndW1lbnRzUmVmZXJlbmNlKCQpKXJldHVybiBlLmlzRnVuY3Rpb25FeHByZXNzaW9uKCQpJiZPKHZlLHgsJCk/dm9pZCAwOntzZWxlY3RlZFZhcmlhYmxlRGVjbGFyYXRpb246ITEsZnVuYzokfX1mdW5jdGlvbiBUKHZlKXtyZXR1cm4gZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24odmUpfHxlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QodmUpJiZ2ZS5kZWNsYXJhdGlvbnMubGVuZ3RoPT09MX1mdW5jdGlvbiBLKHZlLGVlLGhlKXtpZighIVQoaGUpKXt2YXIgRj1lLmlzVmFyaWFibGVEZWNsYXJhdGlvbihoZSk/aGU6ZS5maXJzdChoZS5kZWNsYXJhdGlvbnMpLHg9Ri5pbml0aWFsaXplcjtpZih4JiYoZS5pc0Fycm93RnVuY3Rpb24oeCl8fGUuaXNGdW5jdGlvbkV4cHJlc3Npb24oeCkmJiFPKHZlLGVlLHgpKSlyZXR1cm4geH19ZnVuY3Rpb24gYih2ZSl7aWYoZS5pc0V4cHJlc3Npb24odmUpKXt2YXIgZWU9ZS5mYWN0b3J5LmNyZWF0ZVJldHVyblN0YXRlbWVudCh2ZSksaGU9dmUuZ2V0U291cmNlRmlsZSgpO3JldHVybiBlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKGVlKSxlLmNvcHlUcmFpbGluZ0FzTGVhZGluZ0NvbW1lbnRzKHZlLGVlLGhlLHZvaWQgMCwhMCksZS5mYWN0b3J5LmNyZWF0ZUJsb2NrKFtlZV0sITApfWVsc2UgcmV0dXJuIHZlfWZ1bmN0aW9uIHNlKHZlKXt2YXIgZWU9dmUucGFyZW50O2lmKCEoIWUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGVlKXx8IWUuaXNWYXJpYWJsZURlY2xhcmF0aW9uSW5WYXJpYWJsZVN0YXRlbWVudChlZSkpKXt2YXIgaGU9ZWUucGFyZW50LEY9aGUucGFyZW50O2lmKCEoIWUuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChoZSl8fCFlLmlzVmFyaWFibGVTdGF0ZW1lbnQoRil8fCFlLmlzSWRlbnRpZmllcihlZS5uYW1lKSkpcmV0dXJue3ZhcmlhYmxlRGVjbGFyYXRpb246ZWUsdmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q6aGUsc3RhdGVtZW50OkYsbmFtZTplZS5uYW1lfX19ZnVuY3Rpb24gSih2ZSxlZSl7dmFyIGhlPXZlLmZpbGUsRj1iKGVlLmJvZHkpLHg9ZS5mYWN0b3J5LmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihlZS5tb2RpZmllcnMsZWUuYXN0ZXJpc2tUb2tlbix2b2lkIDAsZWUudHlwZVBhcmFtZXRlcnMsZWUucGFyYW1ldGVycyxlZS50eXBlLEYpO3JldHVybiBlLnRleHRDaGFuZ2VzLkNoYW5nZVRyYWNrZXIud2l0aCh2ZSxmdW5jdGlvbihYKXtyZXR1cm4gWC5yZXBsYWNlTm9kZShoZSxlZSx4KX0pfWZ1bmN0aW9uIGllKHZlLGVlLGhlKXt2YXIgRj12ZS5maWxlLHg9YihlZS5ib2R5KSxYPWhlLnZhcmlhYmxlRGVjbGFyYXRpb24sJD1oZS52YXJpYWJsZURlY2xhcmF0aW9uTGlzdCxBPWhlLnN0YXRlbWVudCx5PWhlLm5hbWU7ZS5zdXBwcmVzc0xlYWRpbmdUcml2aWEoQSk7dmFyIFY9ZS5nZXRDb21iaW5lZE1vZGlmaWVyRmxhZ3MoWCkmMXxlLmdldEVmZmVjdGl2ZU1vZGlmaWVyRmxhZ3MoZWUpLEw9ZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzKFYpLFA9ZS5mYWN0b3J5LmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oZWUuZGVjb3JhdG9ycyxlLmxlbmd0aChMKT9MOnZvaWQgMCxlZS5hc3Rlcmlza1Rva2VuLHksZWUudHlwZVBhcmFtZXRlcnMsZWUucGFyYW1ldGVycyxlZS50eXBlLHgpO3JldHVybiAkLmRlY2xhcmF0aW9ucy5sZW5ndGg9PT0xP2UudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHZlLGZ1bmN0aW9uKGspe3JldHVybiBrLnJlcGxhY2VOb2RlKEYsQSxQKX0pOmUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHZlLGZ1bmN0aW9uKGspe2suZGVsZXRlKEYsWCksay5pbnNlcnROb2RlQWZ0ZXIoRixBLFApfSl9ZnVuY3Rpb24gUih2ZSxlZSl7dmFyIGhlPXZlLmZpbGUsRj1lZS5ib2R5LnN0YXRlbWVudHMseD1GWzBdLFg7cShlZS5ib2R5LHgpPyhYPXguZXhwcmVzc2lvbixlLnN1cHByZXNzTGVhZGluZ0FuZFRyYWlsaW5nVHJpdmlhKFgpLGUuY29weUNvbW1lbnRzKHgsWCkpOlg9ZWUuYm9keTt2YXIgJD1lLmZhY3RvcnkuY3JlYXRlQXJyb3dGdW5jdGlvbihlZS5tb2RpZmllcnMsZWUudHlwZVBhcmFtZXRlcnMsZWUucGFyYW1ldGVycyxlZS50eXBlLGUuZmFjdG9yeS5jcmVhdGVUb2tlbigzOCksWCk7cmV0dXJuIGUudGV4dENoYW5nZXMuQ2hhbmdlVHJhY2tlci53aXRoKHZlLGZ1bmN0aW9uKEEpe3JldHVybiBBLnJlcGxhY2VOb2RlKGhlLGVlLCQpfSl9ZnVuY3Rpb24gcSh2ZSxlZSl7cmV0dXJuIHZlLnN0YXRlbWVudHMubGVuZ3RoPT09MSYmZS5pc1JldHVyblN0YXRlbWVudChlZSkmJiEhZWUuZXhwcmVzc2lvbn1mdW5jdGlvbiBPKHZlLGVlLGhlKXtyZXR1cm4hIWhlLm5hbWUmJmUuRmluZEFsbFJlZmVyZW5jZXMuQ29yZS5pc1N5bWJvbFJlZmVyZW5jZWRJbkZpbGUoaGUubmFtZSxlZSx2ZSl9fSkodz1DLmNvbnZlcnRBcnJvd0Z1bmN0aW9uT3JGdW5jdGlvbkV4cHJlc3Npb258fChDLmNvbnZlcnRBcnJvd0Z1bmN0aW9uT3JGdW5jdGlvbkV4cHJlc3Npb249e30pKX0pKGE9ZS5yZWZhY3Rvcnx8KGUucmVmYWN0b3I9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe3ZhciBhOyhmdW5jdGlvbihDKXt2YXIgdzsoZnVuY3Rpb24oQil7dmFyIEU9XCJJbmZlciBmdW5jdGlvbiByZXR1cm4gdHlwZVwiLFE9ZS5EaWFnbm9zdGljcy5JbmZlcl9mdW5jdGlvbl9yZXR1cm5fdHlwZS5tZXNzYWdlLGxlPXtuYW1lOkUsZGVzY3JpcHRpb246USxraW5kOlwicmVmYWN0b3IucmV3cml0ZS5mdW5jdGlvbi5yZXR1cm5UeXBlXCJ9O0MucmVnaXN0ZXJSZWZhY3RvcihFLHtraW5kczpbbGUua2luZF0sZ2V0RWRpdHNGb3JBY3Rpb246TixnZXRBdmFpbGFibGVBY3Rpb25zOnB9KTtmdW5jdGlvbiBOKFQpe3ZhciBLPUcoVCk7aWYoSyYmIUMuaXNSZWZhY3RvckVycm9ySW5mbyhLKSl7dmFyIGI9ZS50ZXh0Q2hhbmdlcy5DaGFuZ2VUcmFja2VyLndpdGgoVCxmdW5jdGlvbihzZSl7cmV0dXJuIG0oVC5maWxlLHNlLEsuZGVjbGFyYXRpb24sSy5yZXR1cm5UeXBlTm9kZSl9KTtyZXR1cm57cmVuYW1lRmlsZW5hbWU6dm9pZCAwLHJlbmFtZUxvY2F0aW9uOnZvaWQgMCxlZGl0czpifX19ZnVuY3Rpb24gcChUKXt2YXIgSz1HKFQpO3JldHVybiBLP0MuaXNSZWZhY3RvckVycm9ySW5mbyhLKT9ULnByZWZlcmVuY2VzLnByb3ZpZGVSZWZhY3Rvck5vdEFwcGxpY2FibGVSZWFzb24/W3tuYW1lOkUsZGVzY3JpcHRpb246USxhY3Rpb25zOltLZShLZSh7fSxsZSkse25vdEFwcGxpY2FibGVSZWFzb246Sy5lcnJvcn0pXX1dOmUuZW1wdHlBcnJheTpbe25hbWU6RSxkZXNjcmlwdGlvbjpRLGFjdGlvbnM6W2xlXX1dOmUuZW1wdHlBcnJheX1mdW5jdGlvbiBtKFQsSyxiLHNlKXt2YXIgSj1lLmZpbmRDaGlsZE9mS2luZChiLDIxLFQpLGllPWUuaXNBcnJvd0Z1bmN0aW9uKGIpJiZKPT09dm9pZCAwLFI9aWU/ZS5maXJzdChiLnBhcmFtZXRlcnMpOko7UiYmKGllJiYoSy5pbnNlcnROb2RlQmVmb3JlKFQsUixlLmZhY3RvcnkuY3JlYXRlVG9rZW4oMjApKSxLLmluc2VydE5vZGVBZnRlcihULFIsZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDIxKSkpLEsuaW5zZXJ0Tm9kZUF0KFQsUi5lbmQsc2Use3ByZWZpeDpcIjogXCJ9KSl9ZnVuY3Rpb24gRyhUKXtpZighKGUuaXNJbkpTRmlsZShULmZpbGUpfHwhQy5yZWZhY3RvcktpbmRCZWdpbnNXaXRoKGxlLmtpbmQsVC5raW5kKSkpe3ZhciBLPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKFQuZmlsZSxULnN0YXJ0UG9zaXRpb24pLGI9ZS5maW5kQW5jZXN0b3IoSyxmdW5jdGlvbihSKXtyZXR1cm4gZS5pc0Jsb2NrKFIpfHxSLnBhcmVudCYmZS5pc0Fycm93RnVuY3Rpb24oUi5wYXJlbnQpJiYoUi5raW5kPT09Mzh8fFIucGFyZW50LmJvZHk9PT1SKT9cInF1aXRcIjpvZShSKX0pO2lmKCFifHwhYi5ib2R5fHxiLnR5cGUpcmV0dXJue2Vycm9yOmUuZ2V0TG9jYWxlU3BlY2lmaWNNZXNzYWdlKGUuRGlhZ25vc3RpY3MuUmV0dXJuX3R5cGVfbXVzdF9iZV9pbmZlcnJlZF9mcm9tX2FfZnVuY3Rpb24pfTt2YXIgc2U9VC5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksSj1mKHNlLGIpO2lmKCFKKXJldHVybntlcnJvcjplLmdldExvY2FsZVNwZWNpZmljTWVzc2FnZShlLkRpYWdub3N0aWNzLkNvdWxkX25vdF9kZXRlcm1pbmVfZnVuY3Rpb25fcmV0dXJuX3R5cGUpfTt2YXIgaWU9c2UudHlwZVRvVHlwZU5vZGUoSixiLDEpO2lmKGllKXJldHVybntkZWNsYXJhdGlvbjpiLHJldHVyblR5cGVOb2RlOmllfX19ZnVuY3Rpb24gb2UoVCl7c3dpdGNoKFQua2luZCl7Y2FzZSAyNTY6Y2FzZSAyMTM6Y2FzZSAyMTQ6Y2FzZSAxNjk6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gZihULEspe2lmKFQuaXNJbXBsZW1lbnRhdGlvbk9mT3ZlcmxvYWQoSykpe3ZhciBiPVQuZ2V0VHlwZUF0TG9jYXRpb24oSykuZ2V0Q2FsbFNpZ25hdHVyZXMoKTtpZihiLmxlbmd0aD4xKXJldHVybiBULmdldFVuaW9uVHlwZShlLm1hcERlZmluZWQoYixmdW5jdGlvbihKKXtyZXR1cm4gSi5nZXRSZXR1cm5UeXBlKCl9KSl9dmFyIHNlPVQuZ2V0U2lnbmF0dXJlRnJvbURlY2xhcmF0aW9uKEspO2lmKHNlKXJldHVybiBULmdldFJldHVyblR5cGVPZlNpZ25hdHVyZShzZSl9fSkodz1DLmluZmVyRnVuY3Rpb25SZXR1cm5UeXBlfHwoQy5pbmZlckZ1bmN0aW9uUmV0dXJuVHlwZT17fSkpfSkoYT1lLnJlZmFjdG9yfHwoZS5yZWZhY3Rvcj17fSkpfSkoa2V8fChrZT17fSkpO3ZhciBrZTsoZnVuY3Rpb24oZSl7ZS5zZXJ2aWNlc1ZlcnNpb249XCIwLjhcIjtmdW5jdGlvbiBhKGcsbmUsdWUsV2Upe3ZhciBGZT1lLmlzTm9kZUtpbmQoZyk/bmV3IEMoZyxuZSx1ZSk6Zz09PTc5P25ldyBwKDc5LG5lLHVlKTpnPT09ODA/bmV3IG0oODAsbmUsdWUpOm5ldyBOKGcsbmUsdWUpO3JldHVybiBGZS5wYXJlbnQ9V2UsRmUuZmxhZ3M9V2UuZmxhZ3MmNTA3MjA3NjgsRmV9dmFyIEM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKG5lLHVlLFdlKXt0aGlzLnBvcz11ZSx0aGlzLmVuZD1XZSx0aGlzLmZsYWdzPTAsdGhpcy5tb2RpZmllckZsYWdzQ2FjaGU9MCx0aGlzLnRyYW5zZm9ybUZsYWdzPTAsdGhpcy5wYXJlbnQ9dm9pZCAwLHRoaXMua2luZD1uZX1yZXR1cm4gZy5wcm90b3R5cGUuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uPWZ1bmN0aW9uKG5lKXtlLkRlYnVnLmFzc2VydCghZS5wb3NpdGlvbklzU3ludGhlc2l6ZWQodGhpcy5wb3MpJiYhZS5wb3NpdGlvbklzU3ludGhlc2l6ZWQodGhpcy5lbmQpLG5lfHxcIk5vZGUgbXVzdCBoYXZlIGEgcmVhbCBwb3NpdGlvbiBmb3IgdGhpcyBvcGVyYXRpb25cIil9LGcucHJvdG90eXBlLmdldFNvdXJjZUZpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHRoaXMpfSxnLnByb3RvdHlwZS5nZXRTdGFydD1mdW5jdGlvbihuZSx1ZSl7cmV0dXJuIHRoaXMuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uKCksZS5nZXRUb2tlblBvc09mTm9kZSh0aGlzLG5lLHVlKX0sZy5wcm90b3R5cGUuZ2V0RnVsbFN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uKCksdGhpcy5wb3N9LGcucHJvdG90eXBlLmdldEVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFzc2VydEhhc1JlYWxQb3NpdGlvbigpLHRoaXMuZW5kfSxnLnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uKCksdGhpcy5nZXRFbmQoKS10aGlzLmdldFN0YXJ0KG5lKX0sZy5wcm90b3R5cGUuZ2V0RnVsbFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uKCksdGhpcy5lbmQtdGhpcy5wb3N9LGcucHJvdG90eXBlLmdldExlYWRpbmdUcml2aWFXaWR0aD1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uKCksdGhpcy5nZXRTdGFydChuZSktdGhpcy5wb3N9LGcucHJvdG90eXBlLmdldEZ1bGxUZXh0PWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5hc3NlcnRIYXNSZWFsUG9zaXRpb24oKSwobmV8fHRoaXMuZ2V0U291cmNlRmlsZSgpKS50ZXh0LnN1YnN0cmluZyh0aGlzLnBvcyx0aGlzLmVuZCl9LGcucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmFzc2VydEhhc1JlYWxQb3NpdGlvbigpLG5lfHwobmU9dGhpcy5nZXRTb3VyY2VGaWxlKCkpLG5lLnRleHQuc3Vic3RyaW5nKHRoaXMuZ2V0U3RhcnQobmUpLHRoaXMuZ2V0RW5kKCkpfSxnLnByb3RvdHlwZS5nZXRDaGlsZENvdW50PWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5nZXRDaGlsZHJlbihuZSkubGVuZ3RofSxnLnByb3RvdHlwZS5nZXRDaGlsZEF0PWZ1bmN0aW9uKG5lLHVlKXtyZXR1cm4gdGhpcy5nZXRDaGlsZHJlbih1ZSlbbmVdfSxnLnByb3RvdHlwZS5nZXRDaGlsZHJlbj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uKFwiTm9kZSB3aXRob3V0IGEgcmVhbCBwb3NpdGlvbiBjYW5ub3QgYmUgc2Nhbm5lZCBhbmQgdGh1cyBoYXMgbm8gdG9rZW4gbm9kZXMgLSB1c2UgZm9yRWFjaENoaWxkIGFuZCBjb2xsZWN0IHRoZSByZXN1bHQgaWYgdGhhdCdzIGZpbmVcIiksdGhpcy5fY2hpbGRyZW58fCh0aGlzLl9jaGlsZHJlbj13KHRoaXMsbmUpKX0sZy5wcm90b3R5cGUuZ2V0Rmlyc3RUb2tlbj1mdW5jdGlvbihuZSl7dGhpcy5hc3NlcnRIYXNSZWFsUG9zaXRpb24oKTt2YXIgdWU9dGhpcy5nZXRDaGlsZHJlbihuZSk7aWYoISF1ZS5sZW5ndGgpe3ZhciBXZT1lLmZpbmQodWUsZnVuY3Rpb24oRmUpe3JldHVybiBGZS5raW5kPDMwOXx8RmUua2luZD4zNDd9KTtyZXR1cm4gV2Uua2luZDwxNjE/V2U6V2UuZ2V0Rmlyc3RUb2tlbihuZSl9fSxnLnByb3RvdHlwZS5nZXRMYXN0VG9rZW49ZnVuY3Rpb24obmUpe3RoaXMuYXNzZXJ0SGFzUmVhbFBvc2l0aW9uKCk7dmFyIHVlPXRoaXMuZ2V0Q2hpbGRyZW4obmUpLFdlPWUubGFzdE9yVW5kZWZpbmVkKHVlKTtpZighIVdlKXJldHVybiBXZS5raW5kPDE2MT9XZTpXZS5nZXRMYXN0VG9rZW4obmUpfSxnLnByb3RvdHlwZS5mb3JFYWNoQ2hpbGQ9ZnVuY3Rpb24obmUsdWUpe3JldHVybiBlLmZvckVhY2hDaGlsZCh0aGlzLG5lLHVlKX0sZ30oKTtmdW5jdGlvbiB3KGcsbmUpe2lmKCFlLmlzTm9kZUtpbmQoZy5raW5kKSlyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciB1ZT1bXTtpZihlLmlzSlNEb2NDb21tZW50Q29udGFpbmluZ05vZGUoZykpcmV0dXJuIGcuZm9yRWFjaENoaWxkKGZ1bmN0aW9uKEJlKXt1ZS5wdXNoKEJlKX0pLHVlO2Uuc2Nhbm5lci5zZXRUZXh0KChuZXx8Zy5nZXRTb3VyY2VGaWxlKCkpLnRleHQpO3ZhciBXZT1nLnBvcyxGZT1mdW5jdGlvbihCZSl7Qih1ZSxXZSxCZS5wb3MsZyksdWUucHVzaChCZSksV2U9QmUuZW5kfSxaPWZ1bmN0aW9uKEJlKXtCKHVlLFdlLEJlLnBvcyxnKSx1ZS5wdXNoKEUoQmUsZykpLFdlPUJlLmVuZH07cmV0dXJuIGUuZm9yRWFjaChnLmpzRG9jLEZlKSxXZT1nLnBvcyxnLmZvckVhY2hDaGlsZChGZSxaKSxCKHVlLFdlLGcuZW5kLGcpLGUuc2Nhbm5lci5zZXRUZXh0KHZvaWQgMCksdWV9ZnVuY3Rpb24gQihnLG5lLHVlLFdlKXtmb3IoZS5zY2FubmVyLnNldFRleHRQb3MobmUpO25lPHVlOyl7dmFyIEZlPWUuc2Nhbm5lci5zY2FuKCksWj1lLnNjYW5uZXIuZ2V0VGV4dFBvcygpO2lmKFo8PXVlJiYoRmU9PT03OSYmZS5EZWJ1Zy5mYWlsKFwiRGlkIG5vdCBleHBlY3QgXCIuY29uY2F0KGUuRGVidWcuZm9ybWF0U3ludGF4S2luZChXZS5raW5kKSxcIiB0byBoYXZlIGFuIElkZW50aWZpZXIgaW4gaXRzIHRyaXZpYVwiKSksZy5wdXNoKGEoRmUsbmUsWixXZSkpKSxuZT1aLEZlPT09MSlicmVha319ZnVuY3Rpb24gRShnLG5lKXt2YXIgdWU9YSgzNDgsZy5wb3MsZy5lbmQsbmUpO3VlLl9jaGlsZHJlbj1bXTtmb3IodmFyIFdlPWcucG9zLEZlPTAsWj1nO0ZlPFoubGVuZ3RoO0ZlKyspe3ZhciBCZT1aW0ZlXTtCKHVlLl9jaGlsZHJlbixXZSxCZS5wb3MsbmUpLHVlLl9jaGlsZHJlbi5wdXNoKEJlKSxXZT1CZS5lbmR9cmV0dXJuIEIodWUuX2NoaWxkcmVuLFdlLGcuZW5kLG5lKSx1ZX12YXIgUT1mdW5jdGlvbigpe2Z1bmN0aW9uIGcobmUsdWUpe3RoaXMucG9zPW5lLHRoaXMuZW5kPXVlLHRoaXMuZmxhZ3M9MCx0aGlzLm1vZGlmaWVyRmxhZ3NDYWNoZT0wLHRoaXMudHJhbnNmb3JtRmxhZ3M9MCx0aGlzLnBhcmVudD12b2lkIDB9cmV0dXJuIGcucHJvdG90eXBlLmdldFNvdXJjZUZpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRTb3VyY2VGaWxlT2ZOb2RlKHRoaXMpfSxnLnByb3RvdHlwZS5nZXRTdGFydD1mdW5jdGlvbihuZSx1ZSl7cmV0dXJuIGUuZ2V0VG9rZW5Qb3NPZk5vZGUodGhpcyxuZSx1ZSl9LGcucHJvdG90eXBlLmdldEZ1bGxTdGFydD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc30sZy5wcm90b3R5cGUuZ2V0RW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kfSxnLnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuZ2V0RW5kKCktdGhpcy5nZXRTdGFydChuZSl9LGcucHJvdG90eXBlLmdldEZ1bGxXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC10aGlzLnBvc30sZy5wcm90b3R5cGUuZ2V0TGVhZGluZ1RyaXZpYVdpZHRoPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5nZXRTdGFydChuZSktdGhpcy5wb3N9LGcucHJvdG90eXBlLmdldEZ1bGxUZXh0PWZ1bmN0aW9uKG5lKXtyZXR1cm4obmV8fHRoaXMuZ2V0U291cmNlRmlsZSgpKS50ZXh0LnN1YnN0cmluZyh0aGlzLnBvcyx0aGlzLmVuZCl9LGcucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24obmUpe3JldHVybiBuZXx8KG5lPXRoaXMuZ2V0U291cmNlRmlsZSgpKSxuZS50ZXh0LnN1YnN0cmluZyh0aGlzLmdldFN0YXJ0KG5lKSx0aGlzLmdldEVuZCgpKX0sZy5wcm90b3R5cGUuZ2V0Q2hpbGRDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldENoaWxkcmVuKCkubGVuZ3RofSxnLnByb3RvdHlwZS5nZXRDaGlsZEF0PWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5nZXRDaGlsZHJlbigpW25lXX0sZy5wcm90b3R5cGUuZ2V0Q2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5raW5kPT09MSYmdGhpcy5qc0RvY3x8ZS5lbXB0eUFycmF5fSxnLnByb3RvdHlwZS5nZXRGaXJzdFRva2VuPWZ1bmN0aW9uKCl7fSxnLnByb3RvdHlwZS5nZXRMYXN0VG9rZW49ZnVuY3Rpb24oKXt9LGcucHJvdG90eXBlLmZvckVhY2hDaGlsZD1mdW5jdGlvbigpe30sZ30oKSxsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGcobmUsdWUpe3RoaXMuZmxhZ3M9bmUsdGhpcy5lc2NhcGVkTmFtZT11ZX1yZXR1cm4gZy5wcm90b3R5cGUuZ2V0RmxhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mbGFnc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGcucHJvdG90eXBlLFwibmFtZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zeW1ib2xOYW1lKHRoaXMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGcucHJvdG90eXBlLmdldEVzY2FwZWROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXNjYXBlZE5hbWV9LGcucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxnLnByb3RvdHlwZS5nZXREZWNsYXJhdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWNsYXJhdGlvbnN9LGcucHJvdG90eXBlLmdldERvY3VtZW50YXRpb25Db21tZW50PWZ1bmN0aW9uKG5lKXtpZighdGhpcy5kb2N1bWVudGF0aW9uQ29tbWVudClpZih0aGlzLmRvY3VtZW50YXRpb25Db21tZW50PWUuZW1wdHlBcnJheSwhdGhpcy5kZWNsYXJhdGlvbnMmJnRoaXMudGFyZ2V0JiZ0aGlzLnRhcmdldC50dXBsZUxhYmVsRGVjbGFyYXRpb24pe3ZhciB1ZT10aGlzLnRhcmdldC50dXBsZUxhYmVsRGVjbGFyYXRpb247dGhpcy5kb2N1bWVudGF0aW9uQ29tbWVudD1LKFt1ZV0sbmUpfWVsc2UgdGhpcy5kb2N1bWVudGF0aW9uQ29tbWVudD1LKHRoaXMuZGVjbGFyYXRpb25zLG5lKTtyZXR1cm4gdGhpcy5kb2N1bWVudGF0aW9uQ29tbWVudH0sZy5wcm90b3R5cGUuZ2V0Q29udGV4dHVhbERvY3VtZW50YXRpb25Db21tZW50PWZ1bmN0aW9uKG5lLHVlKXtzd2l0Y2gobmU9PW51bGw/dm9pZCAwOm5lLmtpbmQpe2Nhc2UgMTcyOnJldHVybiB0aGlzLmNvbnRleHR1YWxHZXRBY2Nlc3NvckRvY3VtZW50YXRpb25Db21tZW50fHwodGhpcy5jb250ZXh0dWFsR2V0QWNjZXNzb3JEb2N1bWVudGF0aW9uQ29tbWVudD1LKGUuZmlsdGVyKHRoaXMuZGVjbGFyYXRpb25zLGUuaXNHZXRBY2Nlc3NvciksdWUpKSx0aGlzLmNvbnRleHR1YWxHZXRBY2Nlc3NvckRvY3VtZW50YXRpb25Db21tZW50O2Nhc2UgMTczOnJldHVybiB0aGlzLmNvbnRleHR1YWxTZXRBY2Nlc3NvckRvY3VtZW50YXRpb25Db21tZW50fHwodGhpcy5jb250ZXh0dWFsU2V0QWNjZXNzb3JEb2N1bWVudGF0aW9uQ29tbWVudD1LKGUuZmlsdGVyKHRoaXMuZGVjbGFyYXRpb25zLGUuaXNTZXRBY2Nlc3NvciksdWUpKSx0aGlzLmNvbnRleHR1YWxTZXRBY2Nlc3NvckRvY3VtZW50YXRpb25Db21tZW50O2RlZmF1bHQ6cmV0dXJuIHRoaXMuZ2V0RG9jdW1lbnRhdGlvbkNvbW1lbnQodWUpfX0sZy5wcm90b3R5cGUuZ2V0SnNEb2NUYWdzPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy50YWdzPT09dm9pZCAwJiYodGhpcy50YWdzPVQodGhpcy5kZWNsYXJhdGlvbnMsbmUpKSx0aGlzLnRhZ3N9LGcucHJvdG90eXBlLmdldENvbnRleHR1YWxKc0RvY1RhZ3M9ZnVuY3Rpb24obmUsdWUpe3N3aXRjaChuZT09bnVsbD92b2lkIDA6bmUua2luZCl7Y2FzZSAxNzI6cmV0dXJuIHRoaXMuY29udGV4dHVhbEdldEFjY2Vzc29yVGFnc3x8KHRoaXMuY29udGV4dHVhbEdldEFjY2Vzc29yVGFncz1UKGUuZmlsdGVyKHRoaXMuZGVjbGFyYXRpb25zLGUuaXNHZXRBY2Nlc3NvciksdWUpKSx0aGlzLmNvbnRleHR1YWxHZXRBY2Nlc3NvclRhZ3M7Y2FzZSAxNzM6cmV0dXJuIHRoaXMuY29udGV4dHVhbFNldEFjY2Vzc29yVGFnc3x8KHRoaXMuY29udGV4dHVhbFNldEFjY2Vzc29yVGFncz1UKGUuZmlsdGVyKHRoaXMuZGVjbGFyYXRpb25zLGUuaXNTZXRBY2Nlc3NvciksdWUpKSx0aGlzLmNvbnRleHR1YWxTZXRBY2Nlc3NvclRhZ3M7ZGVmYXVsdDpyZXR1cm4gdGhpcy5nZXRKc0RvY1RhZ3ModWUpfX0sZ30oKSxOPWZ1bmN0aW9uKGcpe0xyKG5lLGcpO2Z1bmN0aW9uIG5lKHVlLFdlLEZlKXt2YXIgWj1nLmNhbGwodGhpcyxXZSxGZSl8fHRoaXM7cmV0dXJuIFoua2luZD11ZSxafXJldHVybiBuZX0oUSkscD1mdW5jdGlvbihnKXtMcihuZSxnKTtmdW5jdGlvbiBuZSh1ZSxXZSxGZSl7dmFyIFo9Zy5jYWxsKHRoaXMsV2UsRmUpfHx0aGlzO3JldHVybiBaLmtpbmQ9NzksWn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5lLnByb3RvdHlwZSxcInRleHRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuaWRUZXh0KHRoaXMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG5lfShRKTtwLnByb3RvdHlwZS5raW5kPTc5O3ZhciBtPWZ1bmN0aW9uKGcpe0xyKG5lLGcpO2Z1bmN0aW9uIG5lKHVlLFdlLEZlKXtyZXR1cm4gZy5jYWxsKHRoaXMsV2UsRmUpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobmUucHJvdG90eXBlLFwidGV4dFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5pZFRleHQodGhpcyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbmV9KFEpO20ucHJvdG90eXBlLmtpbmQ9ODA7dmFyIEc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKG5lLHVlKXt0aGlzLmNoZWNrZXI9bmUsdGhpcy5mbGFncz11ZX1yZXR1cm4gZy5wcm90b3R5cGUuZ2V0RmxhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mbGFnc30sZy5wcm90b3R5cGUuZ2V0U3ltYm9sPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3ltYm9sfSxnLnByb3RvdHlwZS5nZXRQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hlY2tlci5nZXRQcm9wZXJ0aWVzT2ZUeXBlKHRoaXMpfSxnLnByb3RvdHlwZS5nZXRQcm9wZXJ0eT1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZSh0aGlzLG5lKX0sZy5wcm90b3R5cGUuZ2V0QXBwYXJlbnRQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hlY2tlci5nZXRBdWdtZW50ZWRQcm9wZXJ0aWVzT2ZUeXBlKHRoaXMpfSxnLnByb3RvdHlwZS5nZXRDYWxsU2lnbmF0dXJlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrZXIuZ2V0U2lnbmF0dXJlc09mVHlwZSh0aGlzLDApfSxnLnByb3RvdHlwZS5nZXRDb25zdHJ1Y3RTaWduYXR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hlY2tlci5nZXRTaWduYXR1cmVzT2ZUeXBlKHRoaXMsMSl9LGcucHJvdG90eXBlLmdldFN0cmluZ0luZGV4VHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrZXIuZ2V0SW5kZXhUeXBlT2ZUeXBlKHRoaXMsMCl9LGcucHJvdG90eXBlLmdldE51bWJlckluZGV4VHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrZXIuZ2V0SW5kZXhUeXBlT2ZUeXBlKHRoaXMsMSl9LGcucHJvdG90eXBlLmdldEJhc2VUeXBlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQ2xhc3NPckludGVyZmFjZSgpP3RoaXMuY2hlY2tlci5nZXRCYXNlVHlwZXModGhpcyk6dm9pZCAwfSxnLnByb3RvdHlwZS5pc051bGxhYmxlVHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrZXIuaXNOdWxsYWJsZVR5cGUodGhpcyl9LGcucHJvdG90eXBlLmdldE5vbk51bGxhYmxlVHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrZXIuZ2V0Tm9uTnVsbGFibGVUeXBlKHRoaXMpfSxnLnByb3RvdHlwZS5nZXROb25PcHRpb25hbFR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGVja2VyLmdldE5vbk9wdGlvbmFsVHlwZSh0aGlzKX0sZy5wcm90b3R5cGUuZ2V0Q29uc3RyYWludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrZXIuZ2V0QmFzZUNvbnN0cmFpbnRPZlR5cGUodGhpcyl9LGcucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGVja2VyLmdldERlZmF1bHRGcm9tVHlwZVBhcmFtZXRlcih0aGlzKX0sZy5wcm90b3R5cGUuaXNVbmlvbj1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMuZmxhZ3MmMTA0ODU3Nil9LGcucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5mbGFncyYyMDk3MTUyKX0sZy5wcm90b3R5cGUuaXNVbmlvbk9ySW50ZXJzZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5mbGFncyYzMTQ1NzI4KX0sZy5wcm90b3R5cGUuaXNMaXRlcmFsPWZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5mbGFncyYzODQpfSxnLnByb3RvdHlwZS5pc1N0cmluZ0xpdGVyYWw9ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLmZsYWdzJjEyOCl9LGcucHJvdG90eXBlLmlzTnVtYmVyTGl0ZXJhbD1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMuZmxhZ3MmMjU2KX0sZy5wcm90b3R5cGUuaXNUeXBlUGFyYW1ldGVyPWZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5mbGFncyYyNjIxNDQpfSxnLnByb3RvdHlwZS5pc0NsYXNzT3JJbnRlcmZhY2U9ZnVuY3Rpb24oKXtyZXR1cm4hIShlLmdldE9iamVjdEZsYWdzKHRoaXMpJjMpfSxnLnByb3RvdHlwZS5pc0NsYXNzPWZ1bmN0aW9uKCl7cmV0dXJuISEoZS5nZXRPYmplY3RGbGFncyh0aGlzKSYxKX0sZy5wcm90b3R5cGUuaXNJbmRleFR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLmZsYWdzJjQxOTQzMDQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZy5wcm90b3R5cGUsXCJ0eXBlQXJndW1lbnRzXCIse2dldDpmdW5jdGlvbigpe2lmKGUuZ2V0T2JqZWN0RmxhZ3ModGhpcykmNClyZXR1cm4gdGhpcy5jaGVja2VyLmdldFR5cGVBcmd1bWVudHModGhpcyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZ30oKSxvZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGcobmUsdWUpe3RoaXMuY2hlY2tlcj1uZSx0aGlzLmZsYWdzPXVlfXJldHVybiBnLnByb3RvdHlwZS5nZXREZWNsYXJhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY2xhcmF0aW9ufSxnLnByb3RvdHlwZS5nZXRUeXBlUGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzfSxnLnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1ldGVyc30sZy5wcm90b3R5cGUuZ2V0UmV0dXJuVHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrZXIuZ2V0UmV0dXJuVHlwZU9mU2lnbmF0dXJlKHRoaXMpfSxnLnByb3RvdHlwZS5nZXRUeXBlUGFyYW1ldGVyQXRQb3NpdGlvbj1mdW5jdGlvbihuZSl7dmFyIHVlPXRoaXMuY2hlY2tlci5nZXRQYXJhbWV0ZXJUeXBlKHRoaXMsbmUpO2lmKHVlLmlzSW5kZXhUeXBlKCkmJmUuaXNUaGlzVHlwZVBhcmFtZXRlcih1ZS50eXBlKSl7dmFyIFdlPXVlLnR5cGUuZ2V0Q29uc3RyYWludCgpO2lmKFdlKXJldHVybiB0aGlzLmNoZWNrZXIuZ2V0SW5kZXhUeXBlKFdlKX1yZXR1cm4gdWV9LGcucHJvdG90eXBlLmdldERvY3VtZW50YXRpb25Db21tZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnRhdGlvbkNvbW1lbnR8fCh0aGlzLmRvY3VtZW50YXRpb25Db21tZW50PUsoZS5zaW5nbGVFbGVtZW50QXJyYXkodGhpcy5kZWNsYXJhdGlvbiksdGhpcy5jaGVja2VyKSl9LGcucHJvdG90eXBlLmdldEpzRG9jVGFncz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmpzRG9jVGFnc3x8KHRoaXMuanNEb2NUYWdzPVQoZS5zaW5nbGVFbGVtZW50QXJyYXkodGhpcy5kZWNsYXJhdGlvbiksdGhpcy5jaGVja2VyKSl9LGd9KCk7ZnVuY3Rpb24gZihnKXtyZXR1cm4gZS5nZXRKU0RvY1RhZ3MoZykuc29tZShmdW5jdGlvbihuZSl7cmV0dXJuIG5lLnRhZ05hbWUudGV4dD09PVwiaW5oZXJpdERvY1wifSl9ZnVuY3Rpb24gVChnLG5lKXtpZighZylyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciB1ZT1lLkpzRG9jLmdldEpzRG9jVGFnc0Zyb21EZWNsYXJhdGlvbnMoZyxuZSk7aWYobmUmJih1ZS5sZW5ndGg9PT0wfHxnLnNvbWUoZikpKWZvcih2YXIgV2U9bmV3IGUuU2V0LEZlPWZ1bmN0aW9uKFJlKXt2YXIgemU9YihuZSxSZSxmdW5jdGlvbihFZSl7dmFyIEhlO2lmKCFXZS5oYXMoRWUpKXJldHVybiBXZS5hZGQoRWUpLFJlLmtpbmQ9PT0xNzJ8fFJlLmtpbmQ9PT0xNzM/RWUuZ2V0Q29udGV4dHVhbEpzRG9jVGFncyhSZSxuZSk6KChIZT1FZS5kZWNsYXJhdGlvbnMpPT09bnVsbHx8SGU9PT12b2lkIDA/dm9pZCAwOkhlLmxlbmd0aCk9PT0xP0VlLmdldEpzRG9jVGFncygpOnZvaWQgMH0pO3plJiYodWU9VmUoVmUoW10semUsITApLHVlLCEwKSl9LFo9MCxCZT1nO1o8QmUubGVuZ3RoO1orKyl7dmFyIGdlPUJlW1pdO0ZlKGdlKX1yZXR1cm4gdWV9ZnVuY3Rpb24gSyhnLG5lKXtpZighZylyZXR1cm4gZS5lbXB0eUFycmF5O3ZhciB1ZT1lLkpzRG9jLmdldEpzRG9jQ29tbWVudHNGcm9tRGVjbGFyYXRpb25zKGcsbmUpO2lmKG5lJiYodWUubGVuZ3RoPT09MHx8Zy5zb21lKGYpKSlmb3IodmFyIFdlPW5ldyBlLlNldCxGZT1mdW5jdGlvbihSZSl7dmFyIHplPWIobmUsUmUsZnVuY3Rpb24oRWUpe2lmKCFXZS5oYXMoRWUpKXJldHVybiBXZS5hZGQoRWUpLFJlLmtpbmQ9PT0xNzJ8fFJlLmtpbmQ9PT0xNzM/RWUuZ2V0Q29udGV4dHVhbERvY3VtZW50YXRpb25Db21tZW50KFJlLG5lKTpFZS5nZXREb2N1bWVudGF0aW9uQ29tbWVudChuZSl9KTt6ZSYmKHVlPXVlLmxlbmd0aD09PTA/emUuc2xpY2UoKTp6ZS5jb25jYXQoZS5saW5lQnJlYWtQYXJ0KCksdWUpKX0sWj0wLEJlPWc7WjxCZS5sZW5ndGg7WisrKXt2YXIgZ2U9QmVbWl07RmUoZ2UpfXJldHVybiB1ZX1mdW5jdGlvbiBiKGcsbmUsdWUpe3ZhciBXZTtpZighZS5oYXNTdGF0aWNNb2RpZmllcihuZSkpe3ZhciBGZT0oKFdlPW5lLnBhcmVudCk9PT1udWxsfHxXZT09PXZvaWQgMD92b2lkIDA6V2Uua2luZCk9PT0xNzE/bmUucGFyZW50LnBhcmVudDpuZS5wYXJlbnQ7aWYoISFGZSlyZXR1cm4gZS5maXJzdERlZmluZWQoZS5nZXRBbGxTdXBlclR5cGVOb2RlcyhGZSksZnVuY3Rpb24oWil7dmFyIEJlPWcuZ2V0UHJvcGVydHlPZlR5cGUoZy5nZXRUeXBlQXRMb2NhdGlvbihaKSxuZS5zeW1ib2wubmFtZSk7cmV0dXJuIEJlP3VlKEJlKTp2b2lkIDB9KX19dmFyIHNlPWZ1bmN0aW9uKGcpe0xyKG5lLGcpO2Z1bmN0aW9uIG5lKHVlLFdlLEZlKXt2YXIgWj1nLmNhbGwodGhpcyx1ZSxXZSxGZSl8fHRoaXM7cmV0dXJuIFoua2luZD0zMDUsWn1yZXR1cm4gbmUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih1ZSxXZSl7cmV0dXJuIGUudXBkYXRlU291cmNlRmlsZSh0aGlzLHVlLFdlKX0sbmUucHJvdG90eXBlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uPWZ1bmN0aW9uKHVlKXtyZXR1cm4gZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbih0aGlzLHVlKX0sbmUucHJvdG90eXBlLmdldExpbmVTdGFydHM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRMaW5lU3RhcnRzKHRoaXMpfSxuZS5wcm90b3R5cGUuZ2V0UG9zaXRpb25PZkxpbmVBbmRDaGFyYWN0ZXI9ZnVuY3Rpb24odWUsV2UsRmUpe3JldHVybiBlLmNvbXB1dGVQb3NpdGlvbk9mTGluZUFuZENoYXJhY3RlcihlLmdldExpbmVTdGFydHModGhpcyksdWUsV2UsdGhpcy50ZXh0LEZlKX0sbmUucHJvdG90eXBlLmdldExpbmVFbmRPZlBvc2l0aW9uPWZ1bmN0aW9uKHVlKXt2YXIgV2U9dGhpcy5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbih1ZSkubGluZSxGZT10aGlzLmdldExpbmVTdGFydHMoKSxaO1dlKzE+PUZlLmxlbmd0aCYmKFo9dGhpcy5nZXRFbmQoKSksWnx8KFo9RmVbV2UrMV0tMSk7dmFyIEJlPXRoaXMuZ2V0RnVsbFRleHQoKTtyZXR1cm4gQmVbWl09PT1gXG5gJiZCZVtaLTFdPT09XCJcXHJcIj9aLTE6Wn0sbmUucHJvdG90eXBlLmdldE5hbWVkRGVjbGFyYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZWREZWNsYXJhdGlvbnN8fCh0aGlzLm5hbWVkRGVjbGFyYXRpb25zPXRoaXMuY29tcHV0ZU5hbWVkRGVjbGFyYXRpb25zKCkpLHRoaXMubmFtZWREZWNsYXJhdGlvbnN9LG5lLnByb3RvdHlwZS5jb21wdXRlTmFtZWREZWNsYXJhdGlvbnM9ZnVuY3Rpb24oKXt2YXIgdWU9ZS5jcmVhdGVNdWx0aU1hcCgpO3JldHVybiB0aGlzLmZvckVhY2hDaGlsZChCZSksdWU7ZnVuY3Rpb24gV2UoZ2Upe3ZhciBSZT1aKGdlKTtSZSYmdWUuYWRkKFJlLGdlKX1mdW5jdGlvbiBGZShnZSl7dmFyIFJlPXVlLmdldChnZSk7cmV0dXJuIFJlfHx1ZS5zZXQoZ2UsUmU9W10pLFJlfWZ1bmN0aW9uIFooZ2Upe3ZhciBSZT1lLmdldE5vbkFzc2lnbmVkTmFtZU9mRGVjbGFyYXRpb24oZ2UpO3JldHVybiBSZSYmKGUuaXNDb21wdXRlZFByb3BlcnR5TmFtZShSZSkmJmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oUmUuZXhwcmVzc2lvbik/UmUuZXhwcmVzc2lvbi5uYW1lLnRleHQ6ZS5pc1Byb3BlcnR5TmFtZShSZSk/ZS5nZXROYW1lRnJvbVByb3BlcnR5TmFtZShSZSk6dm9pZCAwKX1mdW5jdGlvbiBCZShnZSl7c3dpdGNoKGdlLmtpbmQpe2Nhc2UgMjU2OmNhc2UgMjEzOmNhc2UgMTY5OmNhc2UgMTY4OnZhciBSZT1nZSx6ZT1aKFJlKTtpZih6ZSl7dmFyIEVlPUZlKHplKSxIZT1lLmxhc3RPclVuZGVmaW5lZChFZSk7SGUmJlJlLnBhcmVudD09PUhlLnBhcmVudCYmUmUuc3ltYm9sPT09SGUuc3ltYm9sP1JlLmJvZHkmJiFIZS5ib2R5JiYoRWVbRWUubGVuZ3RoLTFdPVJlKTpFZS5wdXNoKFJlKX1lLmZvckVhY2hDaGlsZChnZSxCZSk7YnJlYWs7Y2FzZSAyNTc6Y2FzZSAyMjY6Y2FzZSAyNTg6Y2FzZSAyNTk6Y2FzZSAyNjA6Y2FzZSAyNjE6Y2FzZSAyNjU6Y2FzZSAyNzU6Y2FzZSAyNzA6Y2FzZSAyNjc6Y2FzZSAyNjg6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxODI6V2UoZ2UpLGUuZm9yRWFjaENoaWxkKGdlLEJlKTticmVhaztjYXNlIDE2NDppZighZS5oYXNTeW50YWN0aWNNb2RpZmllcihnZSwxNjQ3NikpYnJlYWs7Y2FzZSAyNTQ6Y2FzZSAyMDM6e3ZhciBycj1nZTtpZihlLmlzQmluZGluZ1BhdHRlcm4ocnIubmFtZSkpe2UuZm9yRWFjaENoaWxkKHJyLm5hbWUsQmUpO2JyZWFrfXJyLmluaXRpYWxpemVyJiZCZShyci5pbml0aWFsaXplcil9Y2FzZSAyOTk6Y2FzZSAxNjc6Y2FzZSAxNjY6V2UoZ2UpO2JyZWFrO2Nhc2UgMjcyOnZhciBJZT1nZTtJZS5leHBvcnRDbGF1c2UmJihlLmlzTmFtZWRFeHBvcnRzKEllLmV4cG9ydENsYXVzZSk/ZS5mb3JFYWNoKEllLmV4cG9ydENsYXVzZS5lbGVtZW50cyxCZSk6QmUoSWUuZXhwb3J0Q2xhdXNlLm5hbWUpKTticmVhaztjYXNlIDI2Njp2YXIgX2U9Z2UuaW1wb3J0Q2xhdXNlO19lJiYoX2UubmFtZSYmV2UoX2UubmFtZSksX2UubmFtZWRCaW5kaW5ncyYmKF9lLm5hbWVkQmluZGluZ3Mua2luZD09PTI2OD9XZShfZS5uYW1lZEJpbmRpbmdzKTplLmZvckVhY2goX2UubmFtZWRCaW5kaW5ncy5lbGVtZW50cyxCZSkpKTticmVhaztjYXNlIDIyMTplLmdldEFzc2lnbm1lbnREZWNsYXJhdGlvbktpbmQoZ2UpIT09MCYmV2UoZ2UpO2RlZmF1bHQ6ZS5mb3JFYWNoQ2hpbGQoZ2UsQmUpfX19LG5lfShDKSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhuZSx1ZSxXZSl7dGhpcy5maWxlTmFtZT1uZSx0aGlzLnRleHQ9dWUsdGhpcy5za2lwVHJpdmlhPVdlfXJldHVybiBnLnByb3RvdHlwZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbj1mdW5jdGlvbihuZSl7cmV0dXJuIGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24odGhpcyxuZSl9LGd9KCk7ZnVuY3Rpb24gaWUoKXtyZXR1cm57Z2V0Tm9kZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIEN9LGdldFRva2VuQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sZ2V0SWRlbnRpZmllckNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LGdldFByaXZhdGVJZGVudGlmaWVyQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sZ2V0U291cmNlRmlsZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHNlfSxnZXRTeW1ib2xDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3JldHVybiBsZX0sZ2V0VHlwZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIEd9LGdldFNpZ25hdHVyZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG9lfSxnZXRTb3VyY2VNYXBTb3VyY2VDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3JldHVybiBKfX19ZnVuY3Rpb24gUihnKXt2YXIgbmU9ITA7Zm9yKHZhciB1ZSBpbiBnKWlmKGUuaGFzUHJvcGVydHkoZyx1ZSkmJiFxKHVlKSl7bmU9ITE7YnJlYWt9aWYobmUpcmV0dXJuIGc7dmFyIFdlPXt9O2Zvcih2YXIgdWUgaW4gZylpZihlLmhhc1Byb3BlcnR5KGcsdWUpKXt2YXIgRmU9cSh1ZSk/dWU6dWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkrdWUuc3Vic3RyKDEpO1dlW0ZlXT1nW3VlXX1yZXR1cm4gV2V9ZS50b0VkaXRvclNldHRpbmdzPVI7ZnVuY3Rpb24gcShnKXtyZXR1cm4hZy5sZW5ndGh8fGcuY2hhckF0KDApPT09Zy5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBPKGcpe3JldHVybiBnP2UubWFwKGcsZnVuY3Rpb24obmUpe3JldHVybiBuZS50ZXh0fSkuam9pbihcIlwiKTpcIlwifWUuZGlzcGxheVBhcnRzVG9TdHJpbmc9TztmdW5jdGlvbiB2ZSgpe3JldHVybnt0YXJnZXQ6MSxqc3g6MX19ZS5nZXREZWZhdWx0Q29tcGlsZXJPcHRpb25zPXZlO2Z1bmN0aW9uIGVlKCl7cmV0dXJuIGUuY29kZWZpeC5nZXRTdXBwb3J0ZWRFcnJvckNvZGVzKCl9ZS5nZXRTdXBwb3J0ZWRDb2RlRml4ZXM9ZWU7dmFyIGhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhuZSx1ZSl7dGhpcy5ob3N0PW5lLHRoaXMuY3VycmVudERpcmVjdG9yeT1uZS5nZXRDdXJyZW50RGlyZWN0b3J5KCksdGhpcy5maWxlTmFtZVRvRW50cnk9bmV3IGUuTWFwO3ZhciBXZT1uZS5nZXRTY3JpcHRGaWxlTmFtZXMoKTtlLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wdXNoKFwic2Vzc2lvblwiLFwiaW5pdGlhbGl6ZUhvc3RDYWNoZVwiLHtjb3VudDpXZS5sZW5ndGh9KTtmb3IodmFyIEZlPTAsWj1XZTtGZTxaLmxlbmd0aDtGZSsrKXt2YXIgQmU9WltGZV07dGhpcy5jcmVhdGVFbnRyeShCZSxlLnRvUGF0aChCZSx0aGlzLmN1cnJlbnREaXJlY3RvcnksdWUpKX1lLnRyYWNpbmc9PT1udWxsfHxlLnRyYWNpbmc9PT12b2lkIDB8fGUudHJhY2luZy5wb3AoKX1yZXR1cm4gZy5wcm90b3R5cGUuY3JlYXRlRW50cnk9ZnVuY3Rpb24obmUsdWUpe3ZhciBXZSxGZT10aGlzLmhvc3QuZ2V0U2NyaXB0U25hcHNob3QobmUpO3JldHVybiBGZT9XZT17aG9zdEZpbGVOYW1lOm5lLHZlcnNpb246dGhpcy5ob3N0LmdldFNjcmlwdFZlcnNpb24obmUpLHNjcmlwdFNuYXBzaG90OkZlLHNjcmlwdEtpbmQ6ZS5nZXRTY3JpcHRLaW5kKG5lLHRoaXMuaG9zdCl9OldlPW5lLHRoaXMuZmlsZU5hbWVUb0VudHJ5LnNldCh1ZSxXZSksV2V9LGcucHJvdG90eXBlLmdldEVudHJ5QnlQYXRoPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5maWxlTmFtZVRvRW50cnkuZ2V0KG5lKX0sZy5wcm90b3R5cGUuZ2V0SG9zdEZpbGVJbmZvcm1hdGlvbj1mdW5jdGlvbihuZSl7dmFyIHVlPXRoaXMuZmlsZU5hbWVUb0VudHJ5LmdldChuZSk7cmV0dXJuIGUuaXNTdHJpbmcodWUpP3ZvaWQgMDp1ZX0sZy5wcm90b3R5cGUuZ2V0T3JDcmVhdGVFbnRyeUJ5UGF0aD1mdW5jdGlvbihuZSx1ZSl7dmFyIFdlPXRoaXMuZ2V0RW50cnlCeVBhdGgodWUpfHx0aGlzLmNyZWF0ZUVudHJ5KG5lLHVlKTtyZXR1cm4gZS5pc1N0cmluZyhXZSk/dm9pZCAwOldlfSxnLnByb3RvdHlwZS5nZXRSb290RmlsZU5hbWVzPWZ1bmN0aW9uKCl7dmFyIG5lPVtdO3JldHVybiB0aGlzLmZpbGVOYW1lVG9FbnRyeS5mb3JFYWNoKGZ1bmN0aW9uKHVlKXtlLmlzU3RyaW5nKHVlKT9uZS5wdXNoKHVlKTpuZS5wdXNoKHVlLmhvc3RGaWxlTmFtZSl9KSxuZX0sZy5wcm90b3R5cGUuZ2V0U2NyaXB0U25hcHNob3Q9ZnVuY3Rpb24obmUpe3ZhciB1ZT10aGlzLmdldEhvc3RGaWxlSW5mb3JtYXRpb24obmUpO3JldHVybiB1ZSYmdWUuc2NyaXB0U25hcHNob3R9LGd9KCksRj1mdW5jdGlvbigpe2Z1bmN0aW9uIGcobmUpe3RoaXMuaG9zdD1uZX1yZXR1cm4gZy5wcm90b3R5cGUuZ2V0Q3VycmVudFNvdXJjZUZpbGU9ZnVuY3Rpb24obmUpe3ZhciB1ZSxXZSxGZSxaLEJlLGdlLFJlLHplLEVlPXRoaXMuaG9zdC5nZXRTY3JpcHRTbmFwc2hvdChuZSk7aWYoIUVlKXRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBmaW5kIGZpbGU6ICdcIituZStcIicuXCIpO3ZhciBIZT1lLmdldFNjcmlwdEtpbmQobmUsdGhpcy5ob3N0KSxycj10aGlzLmhvc3QuZ2V0U2NyaXB0VmVyc2lvbihuZSksSWU7aWYodGhpcy5jdXJyZW50RmlsZU5hbWUhPT1uZSl7dmFyIF9lPXtsYW5ndWFnZVZlcnNpb246OTksaW1wbGllZE5vZGVGb3JtYXQ6ZS5nZXRJbXBsaWVkTm9kZUZvcm1hdEZvckZpbGUoZS50b1BhdGgobmUsdGhpcy5ob3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKSwoKEZlPShXZT0odWU9dGhpcy5ob3N0KS5nZXRDb21waWxlckhvc3QpPT09bnVsbHx8V2U9PT12b2lkIDA/dm9pZCAwOldlLmNhbGwodWUpKT09PW51bGx8fEZlPT09dm9pZCAwP3ZvaWQgMDpGZS5nZXRDYW5vbmljYWxGaWxlTmFtZSl8fGUuaG9zdEdldENhbm9uaWNhbEZpbGVOYW1lKHRoaXMuaG9zdCkpLCh6ZT0oUmU9KGdlPShCZT0oWj10aGlzLmhvc3QpLmdldENvbXBpbGVySG9zdCk9PT1udWxsfHxCZT09PXZvaWQgMD92b2lkIDA6QmUuY2FsbChaKSk9PT1udWxsfHxnZT09PXZvaWQgMD92b2lkIDA6Z2UuZ2V0TW9kdWxlUmVzb2x1dGlvbkNhY2hlKT09PW51bGx8fFJlPT09dm9pZCAwP3ZvaWQgMDpSZS5jYWxsKGdlKSk9PT1udWxsfHx6ZT09PXZvaWQgMD92b2lkIDA6emUuZ2V0UGFja2FnZUpzb25JbmZvQ2FjaGUoKSx0aGlzLmhvc3QsdGhpcy5ob3N0LmdldENvbXBpbGF0aW9uU2V0dGluZ3MoKSksc2V0RXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I6ZS5nZXRTZXRFeHRlcm5hbE1vZHVsZUluZGljYXRvcih0aGlzLmhvc3QuZ2V0Q29tcGlsYXRpb25TZXR0aW5ncygpKX07SWU9WChuZSxFZSxfZSxyciwhMCxIZSl9ZWxzZSBpZih0aGlzLmN1cnJlbnRGaWxlVmVyc2lvbiE9PXJyKXt2YXIgd2U9RWUuZ2V0Q2hhbmdlUmFuZ2UodGhpcy5jdXJyZW50RmlsZVNjcmlwdFNuYXBzaG90KTtJZT0kKHRoaXMuY3VycmVudFNvdXJjZUZpbGUsRWUscnIsd2UpfXJldHVybiBJZSYmKHRoaXMuY3VycmVudEZpbGVWZXJzaW9uPXJyLHRoaXMuY3VycmVudEZpbGVOYW1lPW5lLHRoaXMuY3VycmVudEZpbGVTY3JpcHRTbmFwc2hvdD1FZSx0aGlzLmN1cnJlbnRTb3VyY2VGaWxlPUllKSx0aGlzLmN1cnJlbnRTb3VyY2VGaWxlfSxnfSgpO2Z1bmN0aW9uIHgoZyxuZSx1ZSl7Zy52ZXJzaW9uPXVlLGcuc2NyaXB0U25hcHNob3Q9bmV9ZnVuY3Rpb24gWChnLG5lLHVlLFdlLEZlLFope3ZhciBCZT1lLmNyZWF0ZVNvdXJjZUZpbGUoZyxlLmdldFNuYXBzaG90VGV4dChuZSksdWUsRmUsWik7cmV0dXJuIHgoQmUsbmUsV2UpLEJlfWUuY3JlYXRlTGFuZ3VhZ2VTZXJ2aWNlU291cmNlRmlsZT1YO2Z1bmN0aW9uICQoZyxuZSx1ZSxXZSxGZSl7aWYoV2UmJnVlIT09Zy52ZXJzaW9uKXt2YXIgWj12b2lkIDAsQmU9V2Uuc3Bhbi5zdGFydCE9PTA/Zy50ZXh0LnN1YnN0cigwLFdlLnNwYW4uc3RhcnQpOlwiXCIsZ2U9ZS50ZXh0U3BhbkVuZChXZS5zcGFuKSE9PWcudGV4dC5sZW5ndGg/Zy50ZXh0LnN1YnN0cihlLnRleHRTcGFuRW5kKFdlLnNwYW4pKTpcIlwiO2lmKFdlLm5ld0xlbmd0aD09PTApWj1CZSYmZ2U/QmUrZ2U6QmV8fGdlO2Vsc2V7dmFyIFJlPW5lLmdldFRleHQoV2Uuc3Bhbi5zdGFydCxXZS5zcGFuLnN0YXJ0K1dlLm5ld0xlbmd0aCk7Wj1CZSYmZ2U/QmUrUmUrZ2U6QmU/QmUrUmU6UmUrZ2V9dmFyIHplPWUudXBkYXRlU291cmNlRmlsZShnLFosV2UsRmUpO3JldHVybiB4KHplLG5lLHVlKSx6ZS5uYW1lVGFibGU9dm9pZCAwLGchPT16ZSYmZy5zY3JpcHRTbmFwc2hvdCYmKGcuc2NyaXB0U25hcHNob3QuZGlzcG9zZSYmZy5zY3JpcHRTbmFwc2hvdC5kaXNwb3NlKCksZy5zY3JpcHRTbmFwc2hvdD12b2lkIDApLHplfXZhciBFZT17bGFuZ3VhZ2VWZXJzaW9uOmcubGFuZ3VhZ2VWZXJzaW9uLGltcGxpZWROb2RlRm9ybWF0OmcuaW1wbGllZE5vZGVGb3JtYXQsc2V0RXh0ZXJuYWxNb2R1bGVJbmRpY2F0b3I6Zy5zZXRFeHRlcm5hbE1vZHVsZUluZGljYXRvcn07cmV0dXJuIFgoZy5maWxlTmFtZSxuZSxFZSx1ZSwhMCxnLnNjcmlwdEtpbmQpfWUudXBkYXRlTGFuZ3VhZ2VTZXJ2aWNlU291cmNlRmlsZT0kO3ZhciBBPXtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDplLnJldHVybkZhbHNlLHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ZS5ub29wfSx5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhuZSl7dGhpcy5jYW5jZWxsYXRpb25Ub2tlbj1uZX1yZXR1cm4gZy5wcm90b3R5cGUuaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWxsYXRpb25Ub2tlbi5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpfSxnLnByb3RvdHlwZS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpKXRocm93IGUudHJhY2luZz09PW51bGx8fGUudHJhY2luZz09PXZvaWQgMHx8ZS50cmFjaW5nLmluc3RhbnQoXCJzZXNzaW9uXCIsXCJjYW5jZWxsYXRpb25UaHJvd25cIix7a2luZDpcIkNhbmNlbGxhdGlvblRva2VuT2JqZWN0XCJ9KSxuZXcgZS5PcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbn0sZ30oKSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhuZSx1ZSl7dWU9PT12b2lkIDAmJih1ZT0yMCksdGhpcy5ob3N0Q2FuY2VsbGF0aW9uVG9rZW49bmUsdGhpcy50aHJvdHRsZVdhaXRNaWxsaXNlY29uZHM9dWUsdGhpcy5sYXN0Q2FuY2VsbGF0aW9uQ2hlY2tUaW1lPTB9cmV0dXJuIGcucHJvdG90eXBlLmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkPWZ1bmN0aW9uKCl7dmFyIG5lPWUudGltZXN0YW1wKCksdWU9TWF0aC5hYnMobmUtdGhpcy5sYXN0Q2FuY2VsbGF0aW9uQ2hlY2tUaW1lKTtyZXR1cm4gdWU+PXRoaXMudGhyb3R0bGVXYWl0TWlsbGlzZWNvbmRzPyh0aGlzLmxhc3RDYW5jZWxsYXRpb25DaGVja1RpbWU9bmUsdGhpcy5ob3N0Q2FuY2VsbGF0aW9uVG9rZW4uaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKSk6ITF9LGcucHJvdG90eXBlLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCkpdGhyb3cgZS50cmFjaW5nPT09bnVsbHx8ZS50cmFjaW5nPT09dm9pZCAwfHxlLnRyYWNpbmcuaW5zdGFudChcInNlc3Npb25cIixcImNhbmNlbGxhdGlvblRocm93blwiLHtraW5kOlwiVGhyb3R0bGVkQ2FuY2VsbGF0aW9uVG9rZW5cIn0pLG5ldyBlLk9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9ufSxnfSgpO2UuVGhyb3R0bGVkQ2FuY2VsbGF0aW9uVG9rZW49Vjt2YXIgTD1bXCJnZXRTZW1hbnRpY0RpYWdub3N0aWNzXCIsXCJnZXRTdWdnZXN0aW9uRGlhZ25vc3RpY3NcIixcImdldENvbXBpbGVyT3B0aW9uc0RpYWdub3N0aWNzXCIsXCJnZXRTZW1hbnRpY0NsYXNzaWZpY2F0aW9uc1wiLFwiZ2V0RW5jb2RlZFNlbWFudGljQ2xhc3NpZmljYXRpb25zXCIsXCJnZXRDb2RlRml4ZXNBdFBvc2l0aW9uXCIsXCJnZXRDb21iaW5lZENvZGVGaXhcIixcImFwcGx5Q29kZUFjdGlvbkNvbW1hbmRcIixcIm9yZ2FuaXplSW1wb3J0c1wiLFwiZ2V0RWRpdHNGb3JGaWxlUmVuYW1lXCIsXCJnZXRFbWl0T3V0cHV0XCIsXCJnZXRBcHBsaWNhYmxlUmVmYWN0b3JzXCIsXCJnZXRFZGl0c0ZvclJlZmFjdG9yXCIsXCJwcmVwYXJlQ2FsbEhpZXJhcmNoeVwiLFwicHJvdmlkZUNhbGxIaWVyYXJjaHlJbmNvbWluZ0NhbGxzXCIsXCJwcm92aWRlQ2FsbEhpZXJhcmNoeU91dGdvaW5nQ2FsbHNcIixcInByb3ZpZGVJbmxheUhpbnRzXCJdLFA9VmUoVmUoW10sTCwhMCksW1wiZ2V0Q29tcGxldGlvbnNBdFBvc2l0aW9uXCIsXCJnZXRDb21wbGV0aW9uRW50cnlEZXRhaWxzXCIsXCJnZXRDb21wbGV0aW9uRW50cnlTeW1ib2xcIixcImdldFNpZ25hdHVyZUhlbHBJdGVtc1wiLFwiZ2V0UXVpY2tJbmZvQXRQb3NpdGlvblwiLFwiZ2V0RGVmaW5pdGlvbkF0UG9zaXRpb25cIixcImdldERlZmluaXRpb25BbmRCb3VuZFNwYW5cIixcImdldEltcGxlbWVudGF0aW9uQXRQb3NpdGlvblwiLFwiZ2V0VHlwZURlZmluaXRpb25BdFBvc2l0aW9uXCIsXCJnZXRSZWZlcmVuY2VzQXRQb3NpdGlvblwiLFwiZmluZFJlZmVyZW5jZXNcIixcImdldE9jY3VycmVuY2VzQXRQb3NpdGlvblwiLFwiZ2V0RG9jdW1lbnRIaWdobGlnaHRzXCIsXCJnZXROYXZpZ2F0ZVRvSXRlbXNcIixcImdldFJlbmFtZUluZm9cIixcImZpbmRSZW5hbWVMb2NhdGlvbnNcIixcImdldEFwcGxpY2FibGVSZWZhY3RvcnNcIl0sITEpO2Z1bmN0aW9uIGsoZyxuZSx1ZSl7dmFyIFdlLEZlO25lPT09dm9pZCAwJiYobmU9ZS5jcmVhdGVEb2N1bWVudFJlZ2lzdHJ5KGcudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyYmZy51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCksZy5nZXRDdXJyZW50RGlyZWN0b3J5KCkpKTt2YXIgWjt1ZT09PXZvaWQgMD9aPWUuTGFuZ3VhZ2VTZXJ2aWNlTW9kZS5TZW1hbnRpYzp0eXBlb2YgdWU9PVwiYm9vbGVhblwiP1o9dWU/ZS5MYW5ndWFnZVNlcnZpY2VNb2RlLlN5bnRhY3RpYzplLkxhbmd1YWdlU2VydmljZU1vZGUuU2VtYW50aWM6Wj11ZTt2YXIgQmU9bmV3IEYoZyksZ2UsUmUsemU9MCxFZT1nLmdldENhbmNlbGxhdGlvblRva2VuP25ldyB5KGcuZ2V0Q2FuY2VsbGF0aW9uVG9rZW4oKSk6QSxIZT1nLmdldEN1cnJlbnREaXJlY3RvcnkoKTtlLm1heWJlU2V0TG9jYWxpemVkRGlhZ25vc3RpY01lc3NhZ2VzKChGZT1nLmdldExvY2FsaXplZERpYWdub3N0aWNNZXNzYWdlcyk9PT1udWxsfHxGZT09PXZvaWQgMD92b2lkIDA6RmUuYmluZChnKSk7ZnVuY3Rpb24gcnIoQWkpe2cubG9nJiZnLmxvZyhBaSl9dmFyIEllPWUuaG9zdFVzZXNDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKGcpLF9lPWUuY3JlYXRlR2V0Q2Fub25pY2FsRmlsZU5hbWUoSWUpLHdlPWUuZ2V0U291cmNlTWFwcGVyKHt1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIEllfSxnZXRDdXJyZW50RGlyZWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIEhlfSxnZXRQcm9ncmFtOkFlLGZpbGVFeGlzdHM6ZS5tYXliZUJpbmQoZyxnLmZpbGVFeGlzdHMpLHJlYWRGaWxlOmUubWF5YmVCaW5kKGcsZy5yZWFkRmlsZSksZ2V0RG9jdW1lbnRQb3NpdGlvbk1hcHBlcjplLm1heWJlQmluZChnLGcuZ2V0RG9jdW1lbnRQb3NpdGlvbk1hcHBlciksZ2V0U291cmNlRmlsZUxpa2U6ZS5tYXliZUJpbmQoZyxnLmdldFNvdXJjZUZpbGVMaWtlKSxsb2c6cnJ9KTtmdW5jdGlvbiBkZShBaSl7dmFyIE9pPWdlLmdldFNvdXJjZUZpbGUoQWkpO2lmKCFPaSl7dmFyIGppPW5ldyBFcnJvcihcIkNvdWxkIG5vdCBmaW5kIHNvdXJjZSBmaWxlOiAnXCIuY29uY2F0KEFpLFwiJy5cIikpO3Rocm93IGppLlByb2dyYW1GaWxlcz1nZS5nZXRTb3VyY2VGaWxlcygpLm1hcChmdW5jdGlvbihWaSl7cmV0dXJuIFZpLmZpbGVOYW1lfSksaml9cmV0dXJuIE9pfWZ1bmN0aW9uIHllKCl7dmFyIEFpLE9pLGppO2lmKGUuRGVidWcuYXNzZXJ0KFohPT1lLkxhbmd1YWdlU2VydmljZU1vZGUuU3ludGFjdGljKSxnLmdldFByb2plY3RWZXJzaW9uKXt2YXIgVmk9Zy5nZXRQcm9qZWN0VmVyc2lvbigpO2lmKFZpKXtpZihSZT09PVZpJiYhKCEoKEFpPWcuaGFzQ2hhbmdlZEF1dG9tYXRpY1R5cGVEaXJlY3RpdmVOYW1lcyk9PT1udWxsfHxBaT09PXZvaWQgMCkmJkFpLmNhbGwoZykpKXJldHVybjtSZT1WaX19dmFyIGF0PWcuZ2V0VHlwZVJvb3RzVmVyc2lvbj9nLmdldFR5cGVSb290c1ZlcnNpb24oKTowO3plIT09YXQmJihycihcIlR5cGVSb290cyB2ZXJzaW9uIGhhcyBjaGFuZ2VkOyBwcm92aWRlIG5ldyBwcm9ncmFtXCIpLGdlPXZvaWQgMCx6ZT1hdCk7dmFyIEF0PW5ldyBoZShnLF9lKSxiYT1BdC5nZXRSb290RmlsZU5hbWVzKCksJGE9Zy5nZXRDb21waWxhdGlvblNldHRpbmdzKCl8fHZlKCksUWE9Zy5oYXNJbnZhbGlkYXRlZFJlc29sdXRpb258fGUucmV0dXJuRmFsc2UsYWk9ZS5tYXliZUJpbmQoZyxnLmhhc0NoYW5nZWRBdXRvbWF0aWNUeXBlRGlyZWN0aXZlTmFtZXMpLERuPShPaT1nLmdldFByb2plY3RSZWZlcmVuY2VzKT09PW51bGx8fE9pPT09dm9pZCAwP3ZvaWQgMDpPaS5jYWxsKGcpLGthLEJhPXt1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOkllLGZpbGVFeGlzdHM6UG4scmVhZEZpbGU6ZW8scmVhZERpcmVjdG9yeTpSbix0cmFjZTplLm1heWJlQmluZChnLGcudHJhY2UpLGdldEN1cnJlbnREaXJlY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gSGV9LG9uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljOmUubm9vcH07aWYoZS5pc1Byb2dyYW1VcHRvRGF0ZShnZSxiYSwkYSxmdW5jdGlvbihFbixXbil7cmV0dXJuIGcuZ2V0U2NyaXB0VmVyc2lvbihXbil9LFBuLFFhLGFpLGtuLERuKSlyZXR1cm47dmFyIHBuPXtnZXRTb3VyY2VGaWxlOmJvLGdldFNvdXJjZUZpbGVCeVBhdGg6Um8sZ2V0Q2FuY2VsbGF0aW9uVG9rZW46ZnVuY3Rpb24oKXtyZXR1cm4gRWV9LGdldENhbm9uaWNhbEZpbGVOYW1lOl9lLHVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gSWV9LGdldE5ld0xpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXROZXdMaW5lQ2hhcmFjdGVyKCRhLGZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0TmV3TGluZU9yRGVmYXVsdEZyb21Ib3N0KGcpfSl9LGdldERlZmF1bHRMaWJGaWxlTmFtZTpmdW5jdGlvbihFbil7cmV0dXJuIGcuZ2V0RGVmYXVsdExpYkZpbGVOYW1lKEVuKX0sd3JpdGVGaWxlOmUubm9vcCxnZXRDdXJyZW50RGlyZWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIEhlfSxmaWxlRXhpc3RzOlBuLHJlYWRGaWxlOmVvLGdldFN5bWxpbmtDYWNoZTplLm1heWJlQmluZChnLGcuZ2V0U3ltbGlua0NhY2hlKSxyZWFscGF0aDplLm1heWJlQmluZChnLGcucmVhbHBhdGgpLGRpcmVjdG9yeUV4aXN0czpmdW5jdGlvbihFbil7cmV0dXJuIGUuZGlyZWN0b3J5UHJvYmFibHlFeGlzdHMoRW4sZyl9LGdldERpcmVjdG9yaWVzOmZ1bmN0aW9uKEVuKXtyZXR1cm4gZy5nZXREaXJlY3Rvcmllcz9nLmdldERpcmVjdG9yaWVzKEVuKTpbXX0scmVhZERpcmVjdG9yeTpSbixvblJlbGVhc2VPbGRTb3VyY2VGaWxlOkRhLG9uUmVsZWFzZVBhcnNlZENvbW1hbmRMaW5lOktuLGhhc0ludmFsaWRhdGVkUmVzb2x1dGlvbjpRYSxoYXNDaGFuZ2VkQXV0b21hdGljVHlwZURpcmVjdGl2ZU5hbWVzOmFpLHRyYWNlOkJhLnRyYWNlLHJlc29sdmVNb2R1bGVOYW1lczplLm1heWJlQmluZChnLGcucmVzb2x2ZU1vZHVsZU5hbWVzKSxnZXRNb2R1bGVSZXNvbHV0aW9uQ2FjaGU6ZS5tYXliZUJpbmQoZyxnLmdldE1vZHVsZVJlc29sdXRpb25DYWNoZSkscmVzb2x2ZVR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzOmUubWF5YmVCaW5kKGcsZy5yZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMpLHVzZVNvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0OmUubWF5YmVCaW5kKGcsZy51c2VTb3VyY2VPZlByb2plY3RSZWZlcmVuY2VSZWRpcmVjdCksZ2V0UGFyc2VkQ29tbWFuZExpbmU6a259OyhqaT1nLnNldENvbXBpbGVySG9zdCk9PT1udWxsfHxqaT09PXZvaWQgMHx8amkuY2FsbChnLHBuKTt2YXIgQ249bmUuZ2V0S2V5Rm9yQ29tcGlsYXRpb25TZXR0aW5ncygkYSksQmk9e3Jvb3ROYW1lczpiYSxvcHRpb25zOiRhLGhvc3Q6cG4sb2xkUHJvZ3JhbTpnZSxwcm9qZWN0UmVmZXJlbmNlczpEbn07Z2U9ZS5jcmVhdGVQcm9ncmFtKEJpKSxBdD12b2lkIDAsa2E9dm9pZCAwLHdlLmNsZWFyQ2FjaGUoKSxnZS5nZXRUeXBlQ2hlY2tlcigpO3JldHVybjtmdW5jdGlvbiBrbihFbil7dmFyIFduPWUudG9QYXRoKEVuLEhlLF9lKSx0bz1rYT09bnVsbD92b2lkIDA6a2EuZ2V0KFduKTtpZih0byE9PXZvaWQgMClyZXR1cm4gdG98fHZvaWQgMDt2YXIgQ289Zy5nZXRQYXJzZWRDb21tYW5kTGluZT9nLmdldFBhcnNlZENvbW1hbmRMaW5lKEVuKTp4bihFbik7cmV0dXJuKGthfHwoa2E9bmV3IGUuTWFwKSkuc2V0KFduLENvfHwhMSksQ299ZnVuY3Rpb24geG4oRW4pe3ZhciBXbj1ibyhFbiwxMDApO2lmKCEhV24pcmV0dXJuIFduLnBhdGg9ZS50b1BhdGgoRW4sSGUsX2UpLFduLnJlc29sdmVkUGF0aD1Xbi5wYXRoLFduLm9yaWdpbmFsRmlsZU5hbWU9V24uZmlsZU5hbWUsZS5wYXJzZUpzb25Tb3VyY2VGaWxlQ29uZmlnRmlsZUNvbnRlbnQoV24sQmEsZS5nZXROb3JtYWxpemVkQWJzb2x1dGVQYXRoKGUuZ2V0RGlyZWN0b3J5UGF0aChFbiksSGUpLHZvaWQgMCxlLmdldE5vcm1hbGl6ZWRBYnNvbHV0ZVBhdGgoRW4sSGUpKX1mdW5jdGlvbiBLbihFbixXbix0byl7dmFyIENvO2cuZ2V0UGFyc2VkQ29tbWFuZExpbmU/KENvPWcub25SZWxlYXNlUGFyc2VkQ29tbWFuZExpbmUpPT09bnVsbHx8Q289PT12b2lkIDB8fENvLmNhbGwoZyxFbixXbix0byk6V24mJkRhKFduLnNvdXJjZUZpbGUsdG8pfWZ1bmN0aW9uIFBuKEVuKXt2YXIgV249ZS50b1BhdGgoRW4sSGUsX2UpLHRvPUF0JiZBdC5nZXRFbnRyeUJ5UGF0aChXbik7cmV0dXJuIHRvPyFlLmlzU3RyaW5nKHRvKTohIWcuZmlsZUV4aXN0cyYmZy5maWxlRXhpc3RzKEVuKX1mdW5jdGlvbiBlbyhFbil7dmFyIFduPWUudG9QYXRoKEVuLEhlLF9lKSx0bz1BdCYmQXQuZ2V0RW50cnlCeVBhdGgoV24pO3JldHVybiB0bz9lLmlzU3RyaW5nKHRvKT92b2lkIDA6ZS5nZXRTbmFwc2hvdFRleHQodG8uc2NyaXB0U25hcHNob3QpOmcucmVhZEZpbGUmJmcucmVhZEZpbGUoRW4pfWZ1bmN0aW9uIFJuKEVuLFduLHRvLENvLEtvKXtyZXR1cm4gZS5EZWJ1Zy5jaGVja0RlZmluZWQoZy5yZWFkRGlyZWN0b3J5LFwiJ0xhbmd1YWdlU2VydmljZUhvc3QucmVhZERpcmVjdG9yeScgbXVzdCBiZSBpbXBsZW1lbnRlZCB0byBjb3JyZWN0bHkgcHJvY2VzcyAncHJvamVjdFJlZmVyZW5jZXMnXCIpLGcucmVhZERpcmVjdG9yeShFbixXbix0byxDbyxLbyl9ZnVuY3Rpb24gRGEoRW4sV24pe3ZhciB0bz1uZS5nZXRLZXlGb3JDb21waWxhdGlvblNldHRpbmdzKFduKTtuZS5yZWxlYXNlRG9jdW1lbnRXaXRoS2V5KEVuLnJlc29sdmVkUGF0aCx0byxFbi5zY3JpcHRLaW5kKX1mdW5jdGlvbiBibyhFbixXbix0byxDbyl7cmV0dXJuIFJvKEVuLGUudG9QYXRoKEVuLEhlLF9lKSxXbix0byxDbyl9ZnVuY3Rpb24gUm8oRW4sV24sdG8sQ28sS28pe2UuRGVidWcuYXNzZXJ0KEF0IT09dm9pZCAwLFwiZ2V0T3JDcmVhdGVTb3VyY2VGaWxlQnlQYXRoIGNhbGxlZCBhZnRlciB0eXBpY2FsIENvbXBpbGVySG9zdCBsaWZldGltZSwgY2hlY2sgdGhlIGNhbGxzdGFjayBzb21ldGhpbmcgd2l0aCBhIHJlZmVyZW5jZSB0byBhbiBvbGQgaG9zdC5cIik7dmFyIE9vPUF0JiZBdC5nZXRPckNyZWF0ZUVudHJ5QnlQYXRoKEVuLFduKTtpZighIU9vKXtpZighS28pe3ZhciBubz1nZSYmZ2UuZ2V0U291cmNlRmlsZUJ5UGF0aChXbik7aWYobm8pe2lmKE9vLnNjcmlwdEtpbmQ9PT1uby5zY3JpcHRLaW5kKXJldHVybiBuZS51cGRhdGVEb2N1bWVudFdpdGhLZXkoRW4sV24sZyxDbixPby5zY3JpcHRTbmFwc2hvdCxPby52ZXJzaW9uLE9vLnNjcmlwdEtpbmQpO25lLnJlbGVhc2VEb2N1bWVudFdpdGhLZXkobm8ucmVzb2x2ZWRQYXRoLG5lLmdldEtleUZvckNvbXBpbGF0aW9uU2V0dGluZ3MoZ2UuZ2V0Q29tcGlsZXJPcHRpb25zKCkpLG5vLnNjcmlwdEtpbmQpfX1yZXR1cm4gbmUuYWNxdWlyZURvY3VtZW50V2l0aEtleShFbixXbixnLENuLE9vLnNjcmlwdFNuYXBzaG90LE9vLnZlcnNpb24sT28uc2NyaXB0S2luZCl9fX1mdW5jdGlvbiBBZSgpe2lmKFo9PT1lLkxhbmd1YWdlU2VydmljZU1vZGUuU3ludGFjdGljKXtlLkRlYnVnLmFzc2VydChnZT09PXZvaWQgMCk7cmV0dXJufXJldHVybiB5ZSgpLGdlfWZ1bmN0aW9uIGVyKCl7dmFyIEFpO3JldHVybihBaT1nLmdldFBhY2thZ2VKc29uQXV0b0ltcG9ydFByb3ZpZGVyKT09PW51bGx8fEFpPT09dm9pZCAwP3ZvaWQgMDpBaS5jYWxsKGcpfWZ1bmN0aW9uIGlyKCl7Z2U9dm9pZCAwfWZ1bmN0aW9uIENyKCl7aWYoZ2Upe3ZhciBBaT1uZS5nZXRLZXlGb3JDb21waWxhdGlvblNldHRpbmdzKGdlLmdldENvbXBpbGVyT3B0aW9ucygpKTtlLmZvckVhY2goZ2UuZ2V0U291cmNlRmlsZXMoKSxmdW5jdGlvbihPaSl7cmV0dXJuIG5lLnJlbGVhc2VEb2N1bWVudFdpdGhLZXkoT2kucmVzb2x2ZWRQYXRoLEFpLE9pLnNjcmlwdEtpbmQpfSksZ2U9dm9pZCAwfWc9dm9pZCAwfWZ1bmN0aW9uIFllKEFpKXtyZXR1cm4geWUoKSxnZS5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyhkZShBaSksRWUpLnNsaWNlKCl9ZnVuY3Rpb24gQnIoQWkpe3llKCk7dmFyIE9pPWRlKEFpKSxqaT1nZS5nZXRTZW1hbnRpY0RpYWdub3N0aWNzKE9pLEVlKTtpZighZS5nZXRFbWl0RGVjbGFyYXRpb25zKGdlLmdldENvbXBpbGVyT3B0aW9ucygpKSlyZXR1cm4gamkuc2xpY2UoKTt2YXIgVmk9Z2UuZ2V0RGVjbGFyYXRpb25EaWFnbm9zdGljcyhPaSxFZSk7cmV0dXJuIFZlKFZlKFtdLGppLCEwKSxWaSwhMCl9ZnVuY3Rpb24gRXIoQWkpe3JldHVybiB5ZSgpLGUuY29tcHV0ZVN1Z2dlc3Rpb25EaWFnbm9zdGljcyhkZShBaSksZ2UsRWUpfWZ1bmN0aW9uIE5lKCl7cmV0dXJuIHllKCksVmUoVmUoW10sZ2UuZ2V0T3B0aW9uc0RpYWdub3N0aWNzKEVlKSwhMCksZ2UuZ2V0R2xvYmFsRGlhZ25vc3RpY3MoRWUpLCEwKX1mdW5jdGlvbiBuKEFpLE9pLGppLFZpKXtqaT09PXZvaWQgMCYmKGppPWUuZW1wdHlPcHRpb25zKTt2YXIgYXQ9S2UoS2Uoe30sZS5pZGVudGl0eShqaSkpLHtpbmNsdWRlQ29tcGxldGlvbnNGb3JNb2R1bGVFeHBvcnRzOmppLmluY2x1ZGVDb21wbGV0aW9uc0Zvck1vZHVsZUV4cG9ydHN8fGppLmluY2x1ZGVFeHRlcm5hbE1vZHVsZUV4cG9ydHMsaW5jbHVkZUNvbXBsZXRpb25zV2l0aEluc2VydFRleHQ6amkuaW5jbHVkZUNvbXBsZXRpb25zV2l0aEluc2VydFRleHR8fGppLmluY2x1ZGVJbnNlcnRUZXh0Q29tcGxldGlvbnN9KTtyZXR1cm4geWUoKSxlLkNvbXBsZXRpb25zLmdldENvbXBsZXRpb25zQXRQb3NpdGlvbihnLGdlLHJyLGRlKEFpKSxPaSxhdCxqaS50cmlnZ2VyQ2hhcmFjdGVyLGppLnRyaWdnZXJLaW5kLEVlLFZpJiZlLmZvcm1hdHRpbmcuZ2V0Rm9ybWF0Q29udGV4dChWaSxnKSl9ZnVuY3Rpb24gbHIoQWksT2ksamksVmksYXQsQXQsYmEpe3JldHVybiBBdD09PXZvaWQgMCYmKEF0PWUuZW1wdHlPcHRpb25zKSx5ZSgpLGUuQ29tcGxldGlvbnMuZ2V0Q29tcGxldGlvbkVudHJ5RGV0YWlscyhnZSxycixkZShBaSksT2kse25hbWU6amksc291cmNlOmF0LGRhdGE6YmF9LGcsVmkmJmUuZm9ybWF0dGluZy5nZXRGb3JtYXRDb250ZXh0KFZpLGcpLEF0LEVlKX1mdW5jdGlvbiBiZShBaSxPaSxqaSxWaSxhdCl7cmV0dXJuIGF0PT09dm9pZCAwJiYoYXQ9ZS5lbXB0eU9wdGlvbnMpLHllKCksZS5Db21wbGV0aW9ucy5nZXRDb21wbGV0aW9uRW50cnlTeW1ib2woZ2UscnIsZGUoQWkpLE9pLHtuYW1lOmppLHNvdXJjZTpWaX0sZyxhdCl9ZnVuY3Rpb24gR2UoQWksT2kpe3llKCk7dmFyIGppPWRlKEFpKSxWaT1lLmdldFRvdWNoaW5nUHJvcGVydHlOYW1lKGppLE9pKTtpZihWaSE9PWppKXt2YXIgYXQ9Z2UuZ2V0VHlwZUNoZWNrZXIoKSxBdD11cihWaSksYmE9bChBdCxhdCk7aWYoIWJhfHxhdC5pc1Vua25vd25TeW1ib2woYmEpKXt2YXIgJGE9eXIoamksQXQsT2kpP2F0LmdldFR5cGVBdExvY2F0aW9uKEF0KTp2b2lkIDA7cmV0dXJuICRhJiZ7a2luZDpcIlwiLGtpbmRNb2RpZmllcnM6XCJcIix0ZXh0U3BhbjplLmNyZWF0ZVRleHRTcGFuRnJvbU5vZGUoQXQsamkpLGRpc3BsYXlQYXJ0czphdC5ydW5XaXRoQ2FuY2VsbGF0aW9uVG9rZW4oRWUsZnVuY3Rpb24ocG4pe3JldHVybiBlLnR5cGVUb0Rpc3BsYXlQYXJ0cyhwbiwkYSxlLmdldENvbnRhaW5lck5vZGUoQXQpKX0pLGRvY3VtZW50YXRpb246JGEuc3ltYm9sPyRhLnN5bWJvbC5nZXREb2N1bWVudGF0aW9uQ29tbWVudChhdCk6dm9pZCAwLHRhZ3M6JGEuc3ltYm9sPyRhLnN5bWJvbC5nZXRKc0RvY1RhZ3MoYXQpOnZvaWQgMH19dmFyIFFhPWF0LnJ1bldpdGhDYW5jZWxsYXRpb25Ub2tlbihFZSxmdW5jdGlvbihwbil7cmV0dXJuIGUuU3ltYm9sRGlzcGxheS5nZXRTeW1ib2xEaXNwbGF5UGFydHNEb2N1bWVudGF0aW9uQW5kU3ltYm9sS2luZChwbixiYSxqaSxlLmdldENvbnRhaW5lck5vZGUoQXQpLEF0KX0pLGFpPVFhLnN5bWJvbEtpbmQsRG49UWEuZGlzcGxheVBhcnRzLGthPVFhLmRvY3VtZW50YXRpb24sQmE9UWEudGFncztyZXR1cm57a2luZDphaSxraW5kTW9kaWZpZXJzOmUuU3ltYm9sRGlzcGxheS5nZXRTeW1ib2xNb2RpZmllcnMoYXQsYmEpLHRleHRTcGFuOmUuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShBdCxqaSksZGlzcGxheVBhcnRzOkRuLGRvY3VtZW50YXRpb246a2EsdGFnczpCYX19fWZ1bmN0aW9uIHVyKEFpKXtyZXR1cm4gZS5pc05ld0V4cHJlc3Npb24oQWkucGFyZW50KSYmQWkucG9zPT09QWkucGFyZW50LnBvcz9BaS5wYXJlbnQuZXhwcmVzc2lvbjplLmlzTmFtZWRUdXBsZU1lbWJlcihBaS5wYXJlbnQpJiZBaS5wb3M9PT1BaS5wYXJlbnQucG9zfHxlLmlzSW1wb3J0TWV0YShBaS5wYXJlbnQpJiZBaS5wYXJlbnQubmFtZT09PUFpP0FpLnBhcmVudDpBaX1mdW5jdGlvbiB5cihBaSxPaSxqaSl7c3dpdGNoKE9pLmtpbmQpe2Nhc2UgNzk6cmV0dXJuIWUuaXNMYWJlbE5hbWUoT2kpJiYhZS5pc1RhZ05hbWUoT2kpJiYhZS5pc0NvbnN0VHlwZVJlZmVyZW5jZShPaS5wYXJlbnQpO2Nhc2UgMjA2OmNhc2UgMTYxOnJldHVybiFlLmlzSW5Db21tZW50KEFpLGppKTtjYXNlIDEwODpjYXNlIDE5MjpjYXNlIDEwNjpjYXNlIDE5NzpyZXR1cm4hMDtjYXNlIDIzMTpyZXR1cm4gZS5pc0ltcG9ydE1ldGEoT2kpO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIElyKEFpLE9pLGppLFZpKXtyZXR1cm4geWUoKSxlLkdvVG9EZWZpbml0aW9uLmdldERlZmluaXRpb25BdFBvc2l0aW9uKGdlLGRlKEFpKSxPaSxqaSxWaSl9ZnVuY3Rpb24gd3IoQWksT2kpe3JldHVybiB5ZSgpLGUuR29Ub0RlZmluaXRpb24uZ2V0RGVmaW5pdGlvbkFuZEJvdW5kU3BhbihnZSxkZShBaSksT2kpfWZ1bmN0aW9uIFVyKEFpLE9pKXtyZXR1cm4geWUoKSxlLkdvVG9EZWZpbml0aW9uLmdldFR5cGVEZWZpbml0aW9uQXRQb3NpdGlvbihnZS5nZXRUeXBlQ2hlY2tlcigpLGRlKEFpKSxPaSl9ZnVuY3Rpb24gaWkoQWksT2kpe3JldHVybiB5ZSgpLGUuRmluZEFsbFJlZmVyZW5jZXMuZ2V0SW1wbGVtZW50YXRpb25zQXRQb3NpdGlvbihnZSxFZSxnZS5nZXRTb3VyY2VGaWxlcygpLGRlKEFpKSxPaSl9ZnVuY3Rpb24gbWkoQWksT2kpe3JldHVybiBlLmZsYXRNYXAocGUoQWksT2ksW0FpXSksZnVuY3Rpb24oamkpe3JldHVybiBqaS5oaWdobGlnaHRTcGFucy5tYXAoZnVuY3Rpb24oVmkpe3JldHVybiBLZShLZSh7ZmlsZU5hbWU6amkuZmlsZU5hbWUsdGV4dFNwYW46VmkudGV4dFNwYW4saXNXcml0ZUFjY2VzczpWaS5raW5kPT09XCJ3cml0dGVuUmVmZXJlbmNlXCJ9LFZpLmlzSW5TdHJpbmcmJntpc0luU3RyaW5nOiEwfSksVmkuY29udGV4dFNwYW4mJntjb250ZXh0U3BhbjpWaS5jb250ZXh0U3Bhbn0pfSl9KX1mdW5jdGlvbiBwZShBaSxPaSxqaSl7dmFyIFZpPWUubm9ybWFsaXplUGF0aChBaSk7ZS5EZWJ1Zy5hc3NlcnQoamkuc29tZShmdW5jdGlvbihiYSl7cmV0dXJuIGUubm9ybWFsaXplUGF0aChiYSk9PT1WaX0pKSx5ZSgpO3ZhciBhdD1lLm1hcERlZmluZWQoamksZnVuY3Rpb24oYmEpe3JldHVybiBnZS5nZXRTb3VyY2VGaWxlKGJhKX0pLEF0PWRlKEFpKTtyZXR1cm4gZS5Eb2N1bWVudEhpZ2hsaWdodHMuZ2V0RG9jdW1lbnRIaWdobGlnaHRzKGdlLEVlLEF0LE9pLGF0KX1mdW5jdGlvbiBvcihBaSxPaSxqaSxWaSxhdCl7eWUoKTt2YXIgQXQ9ZGUoQWkpLGJhPWUuZ2V0QWRqdXN0ZWRSZW5hbWVMb2NhdGlvbihlLmdldFRvdWNoaW5nUHJvcGVydHlOYW1lKEF0LE9pKSk7aWYoISFlLlJlbmFtZS5ub2RlSXNFbGlnaWJsZUZvclJlbmFtZShiYSkpaWYoZS5pc0lkZW50aWZpZXIoYmEpJiYoZS5pc0pzeE9wZW5pbmdFbGVtZW50KGJhLnBhcmVudCl8fGUuaXNKc3hDbG9zaW5nRWxlbWVudChiYS5wYXJlbnQpKSYmZS5pc0ludHJpbnNpY0pzeE5hbWUoYmEuZXNjYXBlZFRleHQpKXt2YXIgJGE9YmEucGFyZW50LnBhcmVudCxRYT0kYS5vcGVuaW5nRWxlbWVudCxhaT0kYS5jbG9zaW5nRWxlbWVudDtyZXR1cm5bUWEsYWldLm1hcChmdW5jdGlvbihEbil7dmFyIGthPWUuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShEbi50YWdOYW1lLEF0KTtyZXR1cm4gS2Uoe2ZpbGVOYW1lOkF0LmZpbGVOYW1lLHRleHRTcGFuOmthfSxlLkZpbmRBbGxSZWZlcmVuY2VzLnRvQ29udGV4dFNwYW4oa2EsQXQsRG4ucGFyZW50KSl9KX1lbHNlIHJldHVybiBzaShiYSxPaSx7ZmluZEluU3RyaW5nczpqaSxmaW5kSW5Db21tZW50czpWaSxwcm92aWRlUHJlZml4QW5kU3VmZml4VGV4dEZvclJlbmFtZTphdCx1c2U6Mn0sZnVuY3Rpb24oRG4sa2EsQmEpe3JldHVybiBlLkZpbmRBbGxSZWZlcmVuY2VzLnRvUmVuYW1lTG9jYXRpb24oRG4sa2EsQmEsYXR8fCExKX0pfWZ1bmN0aW9uIHFyKEFpLE9pKXtyZXR1cm4geWUoKSxzaShlLmdldFRvdWNoaW5nUHJvcGVydHlOYW1lKGRlKEFpKSxPaSksT2kse3VzZToxfSxlLkZpbmRBbGxSZWZlcmVuY2VzLnRvUmVmZXJlbmNlRW50cnkpfWZ1bmN0aW9uIHNpKEFpLE9pLGppLFZpKXt5ZSgpO3ZhciBhdD1qaSYmamkudXNlPT09Mj9nZS5nZXRTb3VyY2VGaWxlcygpLmZpbHRlcihmdW5jdGlvbihBdCl7cmV0dXJuIWdlLmlzU291cmNlRmlsZURlZmF1bHRMaWJyYXJ5KEF0KX0pOmdlLmdldFNvdXJjZUZpbGVzKCk7cmV0dXJuIGUuRmluZEFsbFJlZmVyZW5jZXMuZmluZFJlZmVyZW5jZU9yUmVuYW1lRW50cmllcyhnZSxFZSxhdCxBaSxPaSxqaSxWaSl9ZnVuY3Rpb24gRGkoQWksT2kpe3JldHVybiB5ZSgpLGUuRmluZEFsbFJlZmVyZW5jZXMuZmluZFJlZmVyZW5jZWRTeW1ib2xzKGdlLEVlLGdlLmdldFNvdXJjZUZpbGVzKCksZGUoQWkpLE9pKX1mdW5jdGlvbiB3aShBaSl7cmV0dXJuIHllKCksZS5GaW5kQWxsUmVmZXJlbmNlcy5Db3JlLmdldFJlZmVyZW5jZXNGb3JGaWxlTmFtZShBaSxnZSxnZS5nZXRTb3VyY2VGaWxlcygpKS5tYXAoZS5GaW5kQWxsUmVmZXJlbmNlcy50b1JlZmVyZW5jZUVudHJ5KX1mdW5jdGlvbiBYaShBaSxPaSxqaSxWaSl7Vmk9PT12b2lkIDAmJihWaT0hMSkseWUoKTt2YXIgYXQ9amk/W2RlKGppKV06Z2UuZ2V0U291cmNlRmlsZXMoKTtyZXR1cm4gZS5OYXZpZ2F0ZVRvLmdldE5hdmlnYXRlVG9JdGVtcyhhdCxnZS5nZXRUeXBlQ2hlY2tlcigpLEVlLEFpLE9pLFZpKX1mdW5jdGlvbiBldChBaSxPaSxqaSl7eWUoKTt2YXIgVmk9ZGUoQWkpLGF0PWcuZ2V0Q3VzdG9tVHJhbnNmb3JtZXJzJiZnLmdldEN1c3RvbVRyYW5zZm9ybWVycygpO3JldHVybiBlLmdldEZpbGVFbWl0T3V0cHV0KGdlLFZpLCEhT2ksRWUsYXQsamkpfWZ1bmN0aW9uIEdpKEFpLE9pLGppKXt2YXIgVmk9amk9PT12b2lkIDA/ZS5lbXB0eU9wdGlvbnM6amksYXQ9VmkudHJpZ2dlclJlYXNvbjt5ZSgpO3ZhciBBdD1kZShBaSk7cmV0dXJuIGUuU2lnbmF0dXJlSGVscC5nZXRTaWduYXR1cmVIZWxwSXRlbXMoZ2UsQXQsT2ksYXQsRWUpfWZ1bmN0aW9uIFd0KEFpKXtyZXR1cm4gQmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpfWZ1bmN0aW9uIFp0KEFpLE9pLGppKXt2YXIgVmk9QmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpLGF0PWUuZ2V0VG91Y2hpbmdQcm9wZXJ0eU5hbWUoVmksT2kpO2lmKGF0IT09Vmkpe3N3aXRjaChhdC5raW5kKXtjYXNlIDIwNjpjYXNlIDE2MTpjYXNlIDEwOmNhc2UgOTU6Y2FzZSAxMTA6Y2FzZSAxMDQ6Y2FzZSAxMDY6Y2FzZSAxMDg6Y2FzZSAxOTI6Y2FzZSA3OTpicmVhaztkZWZhdWx0OnJldHVybn1mb3IodmFyIEF0PWF0OzspaWYoZS5pc1JpZ2h0U2lkZU9mUHJvcGVydHlBY2Nlc3MoQXQpfHxlLmlzUmlnaHRTaWRlT2ZRdWFsaWZpZWROYW1lKEF0KSlBdD1BdC5wYXJlbnQ7ZWxzZSBpZihlLmlzTmFtZU9mTW9kdWxlRGVjbGFyYXRpb24oQXQpKWlmKEF0LnBhcmVudC5wYXJlbnQua2luZD09PTI2MSYmQXQucGFyZW50LnBhcmVudC5ib2R5PT09QXQucGFyZW50KUF0PUF0LnBhcmVudC5wYXJlbnQubmFtZTtlbHNlIGJyZWFrO2Vsc2UgYnJlYWs7cmV0dXJuIGUuY3JlYXRlVGV4dFNwYW5Gcm9tQm91bmRzKEF0LmdldFN0YXJ0KCksYXQuZ2V0RW5kKCkpfX1mdW5jdGlvbiBfcihBaSxPaSl7dmFyIGppPUJlLmdldEN1cnJlbnRTb3VyY2VGaWxlKEFpKTtyZXR1cm4gZS5CcmVha3BvaW50UmVzb2x2ZXIuc3BhbkluU291cmNlRmlsZUF0TG9jYXRpb24oamksT2kpfWZ1bmN0aW9uIHBpKEFpKXtyZXR1cm4gZS5OYXZpZ2F0aW9uQmFyLmdldE5hdmlnYXRpb25CYXJJdGVtcyhCZS5nZXRDdXJyZW50U291cmNlRmlsZShBaSksRWUpfWZ1bmN0aW9uIGFlKEFpKXtyZXR1cm4gZS5OYXZpZ2F0aW9uQmFyLmdldE5hdmlnYXRpb25UcmVlKEJlLmdldEN1cnJlbnRTb3VyY2VGaWxlKEFpKSxFZSl9ZnVuY3Rpb24gWGUoQWksT2ksamkpe3llKCk7dmFyIFZpPWppfHxcIm9yaWdpbmFsXCI7cmV0dXJuIFZpPT09XCIyMDIwXCI/ZS5jbGFzc2lmaWVyLnYyMDIwLmdldFNlbWFudGljQ2xhc3NpZmljYXRpb25zKGdlLEVlLGRlKEFpKSxPaSk6ZS5nZXRTZW1hbnRpY0NsYXNzaWZpY2F0aW9ucyhnZS5nZXRUeXBlQ2hlY2tlcigpLEVlLGRlKEFpKSxnZS5nZXRDbGFzc2lmaWFibGVOYW1lcygpLE9pKX1mdW5jdGlvbiBKcihBaSxPaSxqaSl7eWUoKTt2YXIgVmk9aml8fFwib3JpZ2luYWxcIjtyZXR1cm4gVmk9PT1cIm9yaWdpbmFsXCI/ZS5nZXRFbmNvZGVkU2VtYW50aWNDbGFzc2lmaWNhdGlvbnMoZ2UuZ2V0VHlwZUNoZWNrZXIoKSxFZSxkZShBaSksZ2UuZ2V0Q2xhc3NpZmlhYmxlTmFtZXMoKSxPaSk6ZS5jbGFzc2lmaWVyLnYyMDIwLmdldEVuY29kZWRTZW1hbnRpY0NsYXNzaWZpY2F0aW9ucyhnZSxFZSxkZShBaSksT2kpfWZ1bmN0aW9uIHRpKEFpLE9pKXtyZXR1cm4gZS5nZXRTeW50YWN0aWNDbGFzc2lmaWNhdGlvbnMoRWUsQmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpLE9pKX1mdW5jdGlvbiBaZShBaSxPaSl7cmV0dXJuIGUuZ2V0RW5jb2RlZFN5bnRhY3RpY0NsYXNzaWZpY2F0aW9ucyhFZSxCZS5nZXRDdXJyZW50U291cmNlRmlsZShBaSksT2kpfWZ1bmN0aW9uIFNyKEFpKXt2YXIgT2k9QmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpO3JldHVybiBlLk91dGxpbmluZ0VsZW1lbnRzQ29sbGVjdG9yLmNvbGxlY3RFbGVtZW50cyhPaSxFZSl9dmFyIHpyPW5ldyBlLk1hcChlLmdldEVudHJpZXMoKFdlPXt9LFdlWzE4XT0xOSxXZVsyMF09MjEsV2VbMjJdPTIzLFdlWzMxXT0yOSxXZSkpKTt6ci5mb3JFYWNoKGZ1bmN0aW9uKEFpLE9pKXtyZXR1cm4genIuc2V0KEFpLnRvU3RyaW5nKCksTnVtYmVyKE9pKSl9KTtmdW5jdGlvbiBXcihBaSxPaSl7dmFyIGppPUJlLmdldEN1cnJlbnRTb3VyY2VGaWxlKEFpKSxWaT1lLmdldFRvdWNoaW5nVG9rZW4oamksT2kpLGF0PVZpLmdldFN0YXJ0KGppKT09PU9pP3pyLmdldChWaS5raW5kLnRvU3RyaW5nKCkpOnZvaWQgMCxBdD1hdCYmZS5maW5kQ2hpbGRPZktpbmQoVmkucGFyZW50LGF0LGppKTtyZXR1cm4gQXQ/W2UuY3JlYXRlVGV4dFNwYW5Gcm9tTm9kZShWaSxqaSksZS5jcmVhdGVUZXh0U3BhbkZyb21Ob2RlKEF0LGppKV0uc29ydChmdW5jdGlvbihiYSwkYSl7cmV0dXJuIGJhLnN0YXJ0LSRhLnN0YXJ0fSk6ZS5lbXB0eUFycmF5fWZ1bmN0aW9uIEplKEFpLE9pLGppKXt2YXIgVmk9ZS50aW1lc3RhbXAoKSxhdD1SKGppKSxBdD1CZS5nZXRDdXJyZW50U291cmNlRmlsZShBaSk7cnIoXCJnZXRJbmRlbnRhdGlvbkF0UG9zaXRpb246IGdldEN1cnJlbnRTb3VyY2VGaWxlOiBcIisoZS50aW1lc3RhbXAoKS1WaSkpLFZpPWUudGltZXN0YW1wKCk7dmFyIGJhPWUuZm9ybWF0dGluZy5TbWFydEluZGVudGVyLmdldEluZGVudGF0aW9uKE9pLEF0LGF0KTtyZXR1cm4gcnIoXCJnZXRJbmRlbnRhdGlvbkF0UG9zaXRpb246IGNvbXB1dGVJbmRlbnRhdGlvbiAgOiBcIisoZS50aW1lc3RhbXAoKS1WaSkpLGJhfWZ1bmN0aW9uIHhlKEFpLE9pLGppLFZpKXt2YXIgYXQ9QmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpO3JldHVybiBlLmZvcm1hdHRpbmcuZm9ybWF0U2VsZWN0aW9uKE9pLGppLGF0LGUuZm9ybWF0dGluZy5nZXRGb3JtYXRDb250ZXh0KFIoVmkpLGcpKX1mdW5jdGlvbiB2cihBaSxPaSl7cmV0dXJuIGUuZm9ybWF0dGluZy5mb3JtYXREb2N1bWVudChCZS5nZXRDdXJyZW50U291cmNlRmlsZShBaSksZS5mb3JtYXR0aW5nLmdldEZvcm1hdENvbnRleHQoUihPaSksZykpfWZ1bmN0aW9uIG1yKEFpLE9pLGppLFZpKXt2YXIgYXQ9QmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpLEF0PWUuZm9ybWF0dGluZy5nZXRGb3JtYXRDb250ZXh0KFIoVmkpLGcpO2lmKCFlLmlzSW5Db21tZW50KGF0LE9pKSlzd2l0Y2goamkpe2Nhc2VcIntcIjpyZXR1cm4gZS5mb3JtYXR0aW5nLmZvcm1hdE9uT3BlbmluZ0N1cmx5KE9pLGF0LEF0KTtjYXNlXCJ9XCI6cmV0dXJuIGUuZm9ybWF0dGluZy5mb3JtYXRPbkNsb3NpbmdDdXJseShPaSxhdCxBdCk7Y2FzZVwiO1wiOnJldHVybiBlLmZvcm1hdHRpbmcuZm9ybWF0T25TZW1pY29sb24oT2ksYXQsQXQpO2Nhc2VgXG5gOnJldHVybiBlLmZvcm1hdHRpbmcuZm9ybWF0T25FbnRlcihPaSxhdCxBdCl9cmV0dXJuW119ZnVuY3Rpb24gQXIoQWksT2ksamksVmksYXQsQXQpe0F0PT09dm9pZCAwJiYoQXQ9ZS5lbXB0eU9wdGlvbnMpLHllKCk7dmFyIGJhPWRlKEFpKSwkYT1lLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhPaSxqaSksUWE9ZS5mb3JtYXR0aW5nLmdldEZvcm1hdENvbnRleHQoYXQsZyk7cmV0dXJuIGUuZmxhdE1hcChlLmRlZHVwbGljYXRlKFZpLGUuZXF1YXRlVmFsdWVzLGUuY29tcGFyZVZhbHVlcyksZnVuY3Rpb24oYWkpe3JldHVybiBFZS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCksZS5jb2RlZml4LmdldEZpeGVzKHtlcnJvckNvZGU6YWksc291cmNlRmlsZTpiYSxzcGFuOiRhLHByb2dyYW06Z2UsaG9zdDpnLGNhbmNlbGxhdGlvblRva2VuOkVlLGZvcm1hdENvbnRleHQ6UWEscHJlZmVyZW5jZXM6QXR9KX0pfWZ1bmN0aW9uIE9lKEFpLE9pLGppLFZpKXtWaT09PXZvaWQgMCYmKFZpPWUuZW1wdHlPcHRpb25zKSx5ZSgpLGUuRGVidWcuYXNzZXJ0KEFpLnR5cGU9PT1cImZpbGVcIik7dmFyIGF0PWRlKEFpLmZpbGVOYW1lKSxBdD1lLmZvcm1hdHRpbmcuZ2V0Rm9ybWF0Q29udGV4dChqaSxnKTtyZXR1cm4gZS5jb2RlZml4LmdldEFsbEZpeGVzKHtmaXhJZDpPaSxzb3VyY2VGaWxlOmF0LHByb2dyYW06Z2UsaG9zdDpnLGNhbmNlbGxhdGlvblRva2VuOkVlLGZvcm1hdENvbnRleHQ6QXQscHJlZmVyZW5jZXM6Vml9KX1mdW5jdGlvbiBucihBaSxPaSxqaSl7amk9PT12b2lkIDAmJihqaT1lLmVtcHR5T3B0aW9ucykseWUoKSxlLkRlYnVnLmFzc2VydChBaS50eXBlPT09XCJmaWxlXCIpO3ZhciBWaT1kZShBaS5maWxlTmFtZSksYXQ9ZS5mb3JtYXR0aW5nLmdldEZvcm1hdENvbnRleHQoT2ksZyk7cmV0dXJuIGUuT3JnYW5pemVJbXBvcnRzLm9yZ2FuaXplSW1wb3J0cyhWaSxhdCxnLGdlLGppLEFpLnNraXBEZXN0cnVjdGl2ZUNvZGVBY3Rpb25zKX1mdW5jdGlvbiBNcihBaSxPaSxqaSxWaSl7cmV0dXJuIFZpPT09dm9pZCAwJiYoVmk9ZS5lbXB0eU9wdGlvbnMpLGUuZ2V0RWRpdHNGb3JGaWxlUmVuYW1lKEFlKCksQWksT2ksZyxlLmZvcm1hdHRpbmcuZ2V0Rm9ybWF0Q29udGV4dChqaSxnKSxWaSx3ZSl9ZnVuY3Rpb24gUGUoQWksT2kpe3ZhciBqaT10eXBlb2YgQWk9PVwic3RyaW5nXCI/T2k6QWk7cmV0dXJuIGUuaXNBcnJheShqaSk/UHJvbWlzZS5hbGwoamkubWFwKGZ1bmN0aW9uKFZpKXtyZXR1cm4gVWUoVmkpfSkpOlVlKGppKX1mdW5jdGlvbiBVZShBaSl7dmFyIE9pPWZ1bmN0aW9uKGppKXtyZXR1cm4gZS50b1BhdGgoamksSGUsX2UpfTtyZXR1cm4gZS5EZWJ1Zy5hc3NlcnRFcXVhbChBaS50eXBlLFwiaW5zdGFsbCBwYWNrYWdlXCIpLGcuaW5zdGFsbFBhY2thZ2U/Zy5pbnN0YWxsUGFja2FnZSh7ZmlsZU5hbWU6T2koQWkuZmlsZSkscGFja2FnZU5hbWU6QWkucGFja2FnZU5hbWV9KTpQcm9taXNlLnJlamVjdChcIkhvc3QgZG9lcyBub3QgaW1wbGVtZW50IGBpbnN0YWxsUGFja2FnZWBcIil9ZnVuY3Rpb24gZnIoQWksT2ksamkpe3JldHVybiBlLkpzRG9jLmdldERvY0NvbW1lbnRUZW1wbGF0ZUF0UG9zaXRpb24oZS5nZXROZXdMaW5lT3JEZWZhdWx0RnJvbUhvc3QoZyksQmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpLE9pLGppKX1mdW5jdGlvbiBEZShBaSxPaSxqaSl7aWYoamk9PT02MClyZXR1cm4hMTt2YXIgVmk9QmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpO2lmKGUuaXNJblN0cmluZyhWaSxPaSkpcmV0dXJuITE7aWYoZS5pc0luc2lkZUpzeEVsZW1lbnRPckF0dHJpYnV0ZShWaSxPaSkpcmV0dXJuIGppPT09MTIzO2lmKGUuaXNJblRlbXBsYXRlU3RyaW5nKFZpLE9pKSlyZXR1cm4hMTtzd2l0Y2goamkpe2Nhc2UgMzk6Y2FzZSAzNDpjYXNlIDk2OnJldHVybiFlLmlzSW5Db21tZW50KFZpLE9pKX1yZXR1cm4hMH1mdW5jdGlvbiBncihBaSxPaSl7dmFyIGppPUJlLmdldEN1cnJlbnRTb3VyY2VGaWxlKEFpKSxWaT1lLmZpbmRQcmVjZWRpbmdUb2tlbihPaSxqaSk7aWYoISFWaSl7dmFyIGF0PVZpLmtpbmQ9PT0zMSYmZS5pc0pzeE9wZW5pbmdFbGVtZW50KFZpLnBhcmVudCk/VmkucGFyZW50LnBhcmVudDplLmlzSnN4VGV4dChWaSkmJmUuaXNKc3hFbGVtZW50KFZpLnBhcmVudCk/VmkucGFyZW50OnZvaWQgMDtpZihhdCYmV2koYXQpKXJldHVybntuZXdUZXh0OlwiPC9cIi5jb25jYXQoYXQub3BlbmluZ0VsZW1lbnQudGFnTmFtZS5nZXRUZXh0KGppKSxcIj5cIil9O3ZhciBBdD1WaS5raW5kPT09MzEmJmUuaXNKc3hPcGVuaW5nRnJhZ21lbnQoVmkucGFyZW50KT9WaS5wYXJlbnQucGFyZW50OmUuaXNKc3hUZXh0KFZpKSYmZS5pc0pzeEZyYWdtZW50KFZpLnBhcmVudCk/VmkucGFyZW50OnZvaWQgMDtpZihBdCYmY3QoQXQpKXJldHVybntuZXdUZXh0OlwiPC8+XCJ9fX1mdW5jdGlvbiBWcihBaSxPaSl7cmV0dXJue2xpbmVTdGFydHM6QWkuZ2V0TGluZVN0YXJ0cygpLGZpcnN0TGluZTpBaS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihPaS5wb3MpLmxpbmUsbGFzdExpbmU6QWkuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oT2kuZW5kKS5saW5lfX1mdW5jdGlvbiBUcihBaSxPaSxqaSl7Zm9yKHZhciBWaT1CZS5nZXRDdXJyZW50U291cmNlRmlsZShBaSksYXQ9W10sQXQ9VnIoVmksT2kpLGJhPUF0LmxpbmVTdGFydHMsJGE9QXQuZmlyc3RMaW5lLFFhPUF0Lmxhc3RMaW5lLGFpPWppfHwhMSxEbj1OdW1iZXIuTUFYX1ZBTFVFLGthPW5ldyBlLk1hcCxCYT1uZXcgUmVnRXhwKC9cXFMvKSxwbj1lLmlzSW5zaWRlSnN4RWxlbWVudChWaSxiYVskYV0pLENuPXBuP1wiey8qXCI6XCIvL1wiLEJpPSRhO0JpPD1RYTtCaSsrKXt2YXIga249VmkudGV4dC5zdWJzdHJpbmcoYmFbQmldLFZpLmdldExpbmVFbmRPZlBvc2l0aW9uKGJhW0JpXSkpLHhuPUJhLmV4ZWMoa24pO3huJiYoRG49TWF0aC5taW4oRG4seG4uaW5kZXgpLGthLnNldChCaS50b1N0cmluZygpLHhuLmluZGV4KSxrbi5zdWJzdHIoeG4uaW5kZXgsQ24ubGVuZ3RoKSE9PUNuJiYoYWk9amk9PT12b2lkIDB8fGppKSl9Zm9yKHZhciBCaT0kYTtCaTw9UWE7QmkrKylpZighKCRhIT09UWEmJmJhW0JpXT09PU9pLmVuZCkpe3ZhciBLbj1rYS5nZXQoQmkudG9TdHJpbmcoKSk7S24hPT12b2lkIDAmJihwbj9hdC5wdXNoLmFwcGx5KGF0LHZpKEFpLHtwb3M6YmFbQmldK0RuLGVuZDpWaS5nZXRMaW5lRW5kT2ZQb3NpdGlvbihiYVtCaV0pfSxhaSxwbikpOmFpP2F0LnB1c2goe25ld1RleHQ6Q24sc3Bhbjp7bGVuZ3RoOjAsc3RhcnQ6YmFbQmldK0RufX0pOlZpLnRleHQuc3Vic3RyKGJhW0JpXStLbixDbi5sZW5ndGgpPT09Q24mJmF0LnB1c2goe25ld1RleHQ6XCJcIixzcGFuOntsZW5ndGg6Q24ubGVuZ3RoLHN0YXJ0OmJhW0JpXStLbn19KSl9cmV0dXJuIGF0fWZ1bmN0aW9uIHZpKEFpLE9pLGppLFZpKXtmb3IodmFyIGF0LEF0PUJlLmdldEN1cnJlbnRTb3VyY2VGaWxlKEFpKSxiYT1bXSwkYT1BdC50ZXh0LFFhPSExLGFpPWppfHwhMSxEbj1bXSxrYT1PaS5wb3MsQmE9VmkhPT12b2lkIDA/Vmk6ZS5pc0luc2lkZUpzeEVsZW1lbnQoQXQsa2EpLHBuPUJhP1wiey8qXCI6XCIvKlwiLENuPUJhP1wiKi99XCI6XCIqL1wiLEJpPUJhP1wiXFxcXHtcXFxcL1xcXFwqXCI6XCJcXFxcL1xcXFwqXCIsa249QmE/XCJcXFxcKlxcXFwvXFxcXH1cIjpcIlxcXFwqXFxcXC9cIjtrYTw9T2kuZW5kOyl7dmFyIHhuPSRhLnN1YnN0cihrYSxwbi5sZW5ndGgpPT09cG4/cG4ubGVuZ3RoOjAsS249ZS5pc0luQ29tbWVudChBdCxrYSt4bik7aWYoS24pQmEmJihLbi5wb3MtLSxLbi5lbmQrKyksRG4ucHVzaChLbi5wb3MpLEtuLmtpbmQ9PT0zJiZEbi5wdXNoKEtuLmVuZCksUWE9ITAsa2E9S24uZW5kKzE7ZWxzZXt2YXIgUG49JGEuc3Vic3RyaW5nKGthLE9pLmVuZCkuc2VhcmNoKFwiKFwiLmNvbmNhdChCaSxcIil8KFwiKS5jb25jYXQoa24sXCIpXCIpKTthaT1qaSE9PXZvaWQgMD9qaTphaXx8IWUuaXNUZXh0V2hpdGVTcGFjZUxpa2UoJGEsa2EsUG49PT0tMT9PaS5lbmQ6a2ErUG4pLGthPVBuPT09LTE/T2kuZW5kKzE6a2ErUG4rQ24ubGVuZ3RofX1pZihhaXx8IVFhKXsoKGF0PWUuaXNJbkNvbW1lbnQoQXQsT2kucG9zKSk9PT1udWxsfHxhdD09PXZvaWQgMD92b2lkIDA6YXQua2luZCkhPT0yJiZlLmluc2VydFNvcnRlZChEbixPaS5wb3MsZS5jb21wYXJlVmFsdWVzKSxlLmluc2VydFNvcnRlZChEbixPaS5lbmQsZS5jb21wYXJlVmFsdWVzKTt2YXIgZW89RG5bMF07JGEuc3Vic3RyKGVvLHBuLmxlbmd0aCkhPT1wbiYmYmEucHVzaCh7bmV3VGV4dDpwbixzcGFuOntsZW5ndGg6MCxzdGFydDplb319KTtmb3IodmFyIFJuPTE7Um48RG4ubGVuZ3RoLTE7Um4rKykkYS5zdWJzdHIoRG5bUm5dLUNuLmxlbmd0aCxDbi5sZW5ndGgpIT09Q24mJmJhLnB1c2goe25ld1RleHQ6Q24sc3Bhbjp7bGVuZ3RoOjAsc3RhcnQ6RG5bUm5dfX0pLCRhLnN1YnN0cihEbltSbl0scG4ubGVuZ3RoKSE9PXBuJiZiYS5wdXNoKHtuZXdUZXh0OnBuLHNwYW46e2xlbmd0aDowLHN0YXJ0OkRuW1JuXX19KTtiYS5sZW5ndGglMiE9PTAmJmJhLnB1c2goe25ld1RleHQ6Q24sc3Bhbjp7bGVuZ3RoOjAsc3RhcnQ6RG5bRG4ubGVuZ3RoLTFdfX0pfWVsc2UgZm9yKHZhciBEYT0wLGJvPURuO0RhPGJvLmxlbmd0aDtEYSsrKXt2YXIgUm89Ym9bRGFdLEVuPVJvLUNuLmxlbmd0aD4wP1JvLUNuLmxlbmd0aDowLHhuPSRhLnN1YnN0cihFbixDbi5sZW5ndGgpPT09Q24/Q24ubGVuZ3RoOjA7YmEucHVzaCh7bmV3VGV4dDpcIlwiLHNwYW46e2xlbmd0aDpwbi5sZW5ndGgsc3RhcnQ6Um8teG59fSl9cmV0dXJuIGJhfWZ1bmN0aW9uIFVpKEFpLE9pKXt2YXIgamk9QmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpLFZpPVZyKGppLE9pKSxhdD1WaS5maXJzdExpbmUsQXQ9VmkubGFzdExpbmU7cmV0dXJuIGF0PT09QXQmJk9pLnBvcyE9PU9pLmVuZD92aShBaSxPaSwhMCk6VHIoQWksT2ksITApfWZ1bmN0aW9uIFlpKEFpLE9pKXt2YXIgamk9QmUuZ2V0Q3VycmVudFNvdXJjZUZpbGUoQWkpLFZpPVtdLGF0PU9pLnBvcyxBdD1PaS5lbmQ7YXQ9PT1BdCYmKEF0Kz1lLmlzSW5zaWRlSnN4RWxlbWVudChqaSxhdCk/MjoxKTtmb3IodmFyIGJhPWF0O2JhPD1BdDtiYSsrKXt2YXIgJGE9ZS5pc0luQ29tbWVudChqaSxiYSk7aWYoJGEpe3N3aXRjaCgkYS5raW5kKXtjYXNlIDI6VmkucHVzaC5hcHBseShWaSxUcihBaSx7ZW5kOiRhLmVuZCxwb3M6JGEucG9zKzF9LCExKSk7YnJlYWs7Y2FzZSAzOlZpLnB1c2guYXBwbHkoVmksdmkoQWkse2VuZDokYS5lbmQscG9zOiRhLnBvcysxfSwhMSkpfWJhPSRhLmVuZCsxfX1yZXR1cm4gVml9ZnVuY3Rpb24gV2koQWkpe3ZhciBPaT1BaS5vcGVuaW5nRWxlbWVudCxqaT1BaS5jbG9zaW5nRWxlbWVudCxWaT1BaS5wYXJlbnQ7cmV0dXJuIWUudGFnTmFtZXNBcmVFcXVpdmFsZW50KE9pLnRhZ05hbWUsamkudGFnTmFtZSl8fGUuaXNKc3hFbGVtZW50KFZpKSYmZS50YWdOYW1lc0FyZUVxdWl2YWxlbnQoT2kudGFnTmFtZSxWaS5vcGVuaW5nRWxlbWVudC50YWdOYW1lKSYmV2koVmkpfWZ1bmN0aW9uIGN0KEFpKXt2YXIgT2k9QWkuY2xvc2luZ0ZyYWdtZW50LGppPUFpLnBhcmVudDtyZXR1cm4hIShPaS5mbGFncyYxMzEwNzIpfHxlLmlzSnN4RnJhZ21lbnQoamkpJiZjdChqaSl9ZnVuY3Rpb24gTGkoQWksT2ksamkpe3ZhciBWaT1CZS5nZXRDdXJyZW50U291cmNlRmlsZShBaSksYXQ9ZS5mb3JtYXR0aW5nLmdldFJhbmdlT2ZFbmNsb3NpbmdDb21tZW50KFZpLE9pKTtyZXR1cm4gYXQmJighaml8fGF0LmtpbmQ9PT0zKT9lLmNyZWF0ZVRleHRTcGFuRnJvbVJhbmdlKGF0KTp2b2lkIDB9ZnVuY3Rpb24gbnQoQWksT2kpe3llKCk7dmFyIGppPWRlKEFpKTtFZS50aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCk7dmFyIFZpPWppLnRleHQsYXQ9W107aWYoT2kubGVuZ3RoPjAmJiFrbihqaS5maWxlTmFtZSkpZm9yKHZhciBBdD1DbigpLGJhPXZvaWQgMDtiYT1BdC5leGVjKFZpKTspe0VlLnRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKTt2YXIgJGE9MztlLkRlYnVnLmFzc2VydChiYS5sZW5ndGg9PT1PaS5sZW5ndGgrJGEpO3ZhciBRYT1iYVsxXSxhaT1iYS5pbmRleCtRYS5sZW5ndGg7aWYoISFlLmlzSW5Db21tZW50KGppLGFpKSl7Zm9yKHZhciBEbj12b2lkIDAsa2E9MDtrYTxPaS5sZW5ndGg7a2ErKyliYVtrYSskYV0mJihEbj1PaVtrYV0pO2lmKERuPT09dm9pZCAwKXJldHVybiBlLkRlYnVnLmZhaWwoKTtpZighQmkoVmkuY2hhckNvZGVBdChhaStEbi50ZXh0Lmxlbmd0aCkpKXt2YXIgQmE9YmFbMl07YXQucHVzaCh7ZGVzY3JpcHRvcjpEbixtZXNzYWdlOkJhLHBvc2l0aW9uOmFpfSl9fX1yZXR1cm4gYXQ7ZnVuY3Rpb24gcG4oeG4pe3JldHVybiB4bi5yZXBsYWNlKC9bXFwtXFxbXFxdXFwvXFx7XFx9XFwoXFwpXFwqXFwrXFw/XFwuXFxcXFxcXlxcJFxcfF0vZyxcIlxcXFwkJlwiKX1mdW5jdGlvbiBDbigpe3ZhciB4bj0vKD86XFwvXFwvK1xccyopLy5zb3VyY2UsS249Lyg/OlxcL1xcKitcXHMqKS8uc291cmNlLFBuPS8oPzpeKD86XFxzfFxcKikqKS8uc291cmNlLGVvPVwiKFwiK1BuK1wifFwiK3huK1wifFwiK0tuK1wiKVwiLFJuPVwiKD86XCIrZS5tYXAoT2ksZnVuY3Rpb24oV24pe3JldHVyblwiKFwiK3BuKFduLnRleHQpK1wiKVwifSkuam9pbihcInxcIikrXCIpXCIsRGE9Lyg/OiR8XFwqXFwvKS8uc291cmNlLGJvPS8oPzouKj8pLy5zb3VyY2UsUm89XCIoXCIrUm4rYm8rXCIpXCIsRW49ZW8rUm8rRGE7cmV0dXJuIG5ldyBSZWdFeHAoRW4sXCJnaW1cIil9ZnVuY3Rpb24gQmkoeG4pe3JldHVybiB4bj49OTcmJnhuPD0xMjJ8fHhuPj02NSYmeG48PTkwfHx4bj49NDgmJnhuPD01N31mdW5jdGlvbiBrbih4bil7cmV0dXJuIGUuc3RyaW5nQ29udGFpbnMoeG4sXCIvbm9kZV9tb2R1bGVzL1wiKX19ZnVuY3Rpb24gTXQoQWksT2ksamkpe3JldHVybiB5ZSgpLGUuUmVuYW1lLmdldFJlbmFtZUluZm8oZ2UsZGUoQWkpLE9pLGppKX1mdW5jdGlvbiB4dChBaSxPaSxqaSxWaSxhdCxBdCl7dmFyIGJhPXR5cGVvZiBPaT09XCJudW1iZXJcIj9bT2ksdm9pZCAwXTpbT2kucG9zLE9pLmVuZF0sJGE9YmFbMF0sUWE9YmFbMV07cmV0dXJue2ZpbGU6QWksc3RhcnRQb3NpdGlvbjokYSxlbmRQb3NpdGlvbjpRYSxwcm9ncmFtOkFlKCksaG9zdDpnLGZvcm1hdENvbnRleHQ6ZS5mb3JtYXR0aW5nLmdldEZvcm1hdENvbnRleHQoVmksZyksY2FuY2VsbGF0aW9uVG9rZW46RWUscHJlZmVyZW5jZXM6amksdHJpZ2dlclJlYXNvbjphdCxraW5kOkF0fX1mdW5jdGlvbiB1dChBaSxPaSxqaSl7cmV0dXJue2ZpbGU6QWkscHJvZ3JhbTpBZSgpLGhvc3Q6ZyxzcGFuOk9pLHByZWZlcmVuY2VzOmppLGNhbmNlbGxhdGlvblRva2VuOkVlfX1mdW5jdGlvbiBEdChBaSxPaSl7cmV0dXJuIGUuU21hcnRTZWxlY3Rpb25SYW5nZS5nZXRTbWFydFNlbGVjdGlvblJhbmdlKE9pLEJlLmdldEN1cnJlbnRTb3VyY2VGaWxlKEFpKSl9ZnVuY3Rpb24gUnQoQWksT2ksamksVmksYXQpe2ppPT09dm9pZCAwJiYoamk9ZS5lbXB0eU9wdGlvbnMpLHllKCk7dmFyIEF0PWRlKEFpKTtyZXR1cm4gZS5yZWZhY3Rvci5nZXRBcHBsaWNhYmxlUmVmYWN0b3JzKHh0KEF0LE9pLGppLGUuZW1wdHlPcHRpb25zLFZpLGF0KSl9ZnVuY3Rpb24gSWkoQWksT2ksamksVmksYXQsQXQpe0F0PT09dm9pZCAwJiYoQXQ9ZS5lbXB0eU9wdGlvbnMpLHllKCk7dmFyIGJhPWRlKEFpKTtyZXR1cm4gZS5yZWZhY3Rvci5nZXRFZGl0c0ZvclJlZmFjdG9yKHh0KGJhLGppLEF0LE9pKSxWaSxhdCl9ZnVuY3Rpb24gS2koQWksT2kpe3JldHVybiBPaT09PTA/e2xpbmU6MCxjaGFyYWN0ZXI6MH06d2UudG9MaW5lQ29sdW1uT2Zmc2V0KEFpLE9pKX1mdW5jdGlvbiBGaShBaSxPaSl7eWUoKTt2YXIgamk9ZS5DYWxsSGllcmFyY2h5LnJlc29sdmVDYWxsSGllcmFyY2h5RGVjbGFyYXRpb24oZ2UsZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShkZShBaSksT2kpKTtyZXR1cm4gamkmJmUubWFwT25lT3JNYW55KGppLGZ1bmN0aW9uKFZpKXtyZXR1cm4gZS5DYWxsSGllcmFyY2h5LmNyZWF0ZUNhbGxIaWVyYXJjaHlJdGVtKGdlLFZpKX0pfWZ1bmN0aW9uIHVpKEFpLE9pKXt5ZSgpO3ZhciBqaT1kZShBaSksVmk9ZS5maXJzdE9yT25seShlLkNhbGxIaWVyYXJjaHkucmVzb2x2ZUNhbGxIaWVyYXJjaHlEZWNsYXJhdGlvbihnZSxPaT09PTA/amk6ZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShqaSxPaSkpKTtyZXR1cm4gVmk/ZS5DYWxsSGllcmFyY2h5LmdldEluY29taW5nQ2FsbHMoZ2UsVmksRWUpOltdfWZ1bmN0aW9uIEJ0KEFpLE9pKXt5ZSgpO3ZhciBqaT1kZShBaSksVmk9ZS5maXJzdE9yT25seShlLkNhbGxIaWVyYXJjaHkucmVzb2x2ZUNhbGxIaWVyYXJjaHlEZWNsYXJhdGlvbihnZSxPaT09PTA/amk6ZS5nZXRUb3VjaGluZ1Byb3BlcnR5TmFtZShqaSxPaSkpKTtyZXR1cm4gVmk/ZS5DYWxsSGllcmFyY2h5LmdldE91dGdvaW5nQ2FsbHMoZ2UsVmkpOltdfWZ1bmN0aW9uIHd0KEFpLE9pLGppKXtqaT09PXZvaWQgMCYmKGppPWUuZW1wdHlPcHRpb25zKSx5ZSgpO3ZhciBWaT1kZShBaSk7cmV0dXJuIGUuSW5sYXlIaW50cy5wcm92aWRlSW5sYXlIaW50cyh1dChWaSxPaSxqaSkpfXZhciBuYT17ZGlzcG9zZTpDcixjbGVhbnVwU2VtYW50aWNDYWNoZTppcixnZXRTeW50YWN0aWNEaWFnbm9zdGljczpZZSxnZXRTZW1hbnRpY0RpYWdub3N0aWNzOkJyLGdldFN1Z2dlc3Rpb25EaWFnbm9zdGljczpFcixnZXRDb21waWxlck9wdGlvbnNEaWFnbm9zdGljczpOZSxnZXRTeW50YWN0aWNDbGFzc2lmaWNhdGlvbnM6dGksZ2V0U2VtYW50aWNDbGFzc2lmaWNhdGlvbnM6WGUsZ2V0RW5jb2RlZFN5bnRhY3RpY0NsYXNzaWZpY2F0aW9uczpaZSxnZXRFbmNvZGVkU2VtYW50aWNDbGFzc2lmaWNhdGlvbnM6SnIsZ2V0Q29tcGxldGlvbnNBdFBvc2l0aW9uOm4sZ2V0Q29tcGxldGlvbkVudHJ5RGV0YWlsczpscixnZXRDb21wbGV0aW9uRW50cnlTeW1ib2w6YmUsZ2V0U2lnbmF0dXJlSGVscEl0ZW1zOkdpLGdldFF1aWNrSW5mb0F0UG9zaXRpb246R2UsZ2V0RGVmaW5pdGlvbkF0UG9zaXRpb246SXIsZ2V0RGVmaW5pdGlvbkFuZEJvdW5kU3Bhbjp3cixnZXRJbXBsZW1lbnRhdGlvbkF0UG9zaXRpb246aWksZ2V0VHlwZURlZmluaXRpb25BdFBvc2l0aW9uOlVyLGdldFJlZmVyZW5jZXNBdFBvc2l0aW9uOnFyLGZpbmRSZWZlcmVuY2VzOkRpLGdldEZpbGVSZWZlcmVuY2VzOndpLGdldE9jY3VycmVuY2VzQXRQb3NpdGlvbjptaSxnZXREb2N1bWVudEhpZ2hsaWdodHM6cGUsZ2V0TmFtZU9yRG90dGVkTmFtZVNwYW46WnQsZ2V0QnJlYWtwb2ludFN0YXRlbWVudEF0UG9zaXRpb246X3IsZ2V0TmF2aWdhdGVUb0l0ZW1zOlhpLGdldFJlbmFtZUluZm86TXQsZ2V0U21hcnRTZWxlY3Rpb25SYW5nZTpEdCxmaW5kUmVuYW1lTG9jYXRpb25zOm9yLGdldE5hdmlnYXRpb25CYXJJdGVtczpwaSxnZXROYXZpZ2F0aW9uVHJlZTphZSxnZXRPdXRsaW5pbmdTcGFuczpTcixnZXRUb2RvQ29tbWVudHM6bnQsZ2V0QnJhY2VNYXRjaGluZ0F0UG9zaXRpb246V3IsZ2V0SW5kZW50YXRpb25BdFBvc2l0aW9uOkplLGdldEZvcm1hdHRpbmdFZGl0c0ZvclJhbmdlOnhlLGdldEZvcm1hdHRpbmdFZGl0c0ZvckRvY3VtZW50OnZyLGdldEZvcm1hdHRpbmdFZGl0c0FmdGVyS2V5c3Ryb2tlOm1yLGdldERvY0NvbW1lbnRUZW1wbGF0ZUF0UG9zaXRpb246ZnIsaXNWYWxpZEJyYWNlQ29tcGxldGlvbkF0UG9zaXRpb246RGUsZ2V0SnN4Q2xvc2luZ1RhZ0F0UG9zaXRpb246Z3IsZ2V0U3Bhbk9mRW5jbG9zaW5nQ29tbWVudDpMaSxnZXRDb2RlRml4ZXNBdFBvc2l0aW9uOkFyLGdldENvbWJpbmVkQ29kZUZpeDpPZSxhcHBseUNvZGVBY3Rpb25Db21tYW5kOlBlLG9yZ2FuaXplSW1wb3J0czpucixnZXRFZGl0c0ZvckZpbGVSZW5hbWU6TXIsZ2V0RW1pdE91dHB1dDpldCxnZXROb25Cb3VuZFNvdXJjZUZpbGU6V3QsZ2V0UHJvZ3JhbTpBZSxnZXRBdXRvSW1wb3J0UHJvdmlkZXI6ZXIsZ2V0QXBwbGljYWJsZVJlZmFjdG9yczpSdCxnZXRFZGl0c0ZvclJlZmFjdG9yOklpLHRvTGluZUNvbHVtbk9mZnNldDpLaSxnZXRTb3VyY2VNYXBwZXI6ZnVuY3Rpb24oKXtyZXR1cm4gd2V9LGNsZWFyU291cmNlTWFwcGVyQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gd2UuY2xlYXJDYWNoZSgpfSxwcmVwYXJlQ2FsbEhpZXJhcmNoeTpGaSxwcm92aWRlQ2FsbEhpZXJhcmNoeUluY29taW5nQ2FsbHM6dWkscHJvdmlkZUNhbGxIaWVyYXJjaHlPdXRnb2luZ0NhbGxzOkJ0LHRvZ2dsZUxpbmVDb21tZW50OlRyLHRvZ2dsZU11bHRpbGluZUNvbW1lbnQ6dmksY29tbWVudFNlbGVjdGlvbjpVaSx1bmNvbW1lbnRTZWxlY3Rpb246WWkscHJvdmlkZUlubGF5SGludHM6d3R9O3N3aXRjaChaKXtjYXNlIGUuTGFuZ3VhZ2VTZXJ2aWNlTW9kZS5TZW1hbnRpYzpicmVhaztjYXNlIGUuTGFuZ3VhZ2VTZXJ2aWNlTW9kZS5QYXJ0aWFsU2VtYW50aWM6TC5mb3JFYWNoKGZ1bmN0aW9uKEFpKXtyZXR1cm4gbmFbQWldPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiTGFuZ3VhZ2VTZXJ2aWNlIE9wZXJhdGlvbjogXCIuY29uY2F0KEFpLFwiIG5vdCBhbGxvd2VkIGluIExhbmd1YWdlU2VydmljZU1vZGUuUGFydGlhbFNlbWFudGljXCIpKX19KTticmVhaztjYXNlIGUuTGFuZ3VhZ2VTZXJ2aWNlTW9kZS5TeW50YWN0aWM6UC5mb3JFYWNoKGZ1bmN0aW9uKEFpKXtyZXR1cm4gbmFbQWldPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiTGFuZ3VhZ2VTZXJ2aWNlIE9wZXJhdGlvbjogXCIuY29uY2F0KEFpLFwiIG5vdCBhbGxvd2VkIGluIExhbmd1YWdlU2VydmljZU1vZGUuU3ludGFjdGljXCIpKX19KTticmVhaztkZWZhdWx0OmUuRGVidWcuYXNzZXJ0TmV2ZXIoWil9cmV0dXJuIG5hfWUuY3JlYXRlTGFuZ3VhZ2VTZXJ2aWNlPWs7ZnVuY3Rpb24gWShnKXtyZXR1cm4gZy5uYW1lVGFibGV8fFUoZyksZy5uYW1lVGFibGV9ZS5nZXROYW1lVGFibGU9WTtmdW5jdGlvbiBVKGcpe3ZhciBuZT1nLm5hbWVUYWJsZT1uZXcgZS5NYXA7Zy5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gdWUoV2Upe2lmKGUuaXNJZGVudGlmaWVyKFdlKSYmIWUuaXNUYWdOYW1lKFdlKSYmV2UuZXNjYXBlZFRleHR8fGUuaXNTdHJpbmdPck51bWVyaWNMaXRlcmFsTGlrZShXZSkmJmooV2UpKXt2YXIgRmU9ZS5nZXRFc2NhcGVkVGV4dE9mSWRlbnRpZmllck9yTGl0ZXJhbChXZSk7bmUuc2V0KEZlLG5lLmdldChGZSk9PT12b2lkIDA/V2UucG9zOi0xKX1lbHNlIGlmKGUuaXNQcml2YXRlSWRlbnRpZmllcihXZSkpe3ZhciBGZT1XZS5lc2NhcGVkVGV4dDtuZS5zZXQoRmUsbmUuZ2V0KEZlKT09PXZvaWQgMD9XZS5wb3M6LTEpfWlmKGUuZm9yRWFjaENoaWxkKFdlLHVlKSxlLmhhc0pTRG9jTm9kZXMoV2UpKWZvcih2YXIgWj0wLEJlPVdlLmpzRG9jO1o8QmUubGVuZ3RoO1orKyl7dmFyIGdlPUJlW1pdO2UuZm9yRWFjaENoaWxkKGdlLHVlKX19KX1mdW5jdGlvbiBqKGcpe3JldHVybiBlLmlzRGVjbGFyYXRpb25OYW1lKGcpfHxnLnBhcmVudC5raW5kPT09Mjc3fHxEKGcpfHxlLmlzTGl0ZXJhbENvbXB1dGVkUHJvcGVydHlEZWNsYXJhdGlvbk5hbWUoZyl9ZnVuY3Rpb24gSChnKXt2YXIgbmU9SShnKTtyZXR1cm4gbmUmJihlLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24obmUucGFyZW50KXx8ZS5pc0pzeEF0dHJpYnV0ZXMobmUucGFyZW50KSk/bmU6dm9pZCAwfWUuZ2V0Q29udGFpbmluZ09iamVjdExpdGVyYWxFbGVtZW50PUg7ZnVuY3Rpb24gSShnKXtzd2l0Y2goZy5raW5kKXtjYXNlIDEwOmNhc2UgMTQ6Y2FzZSA4OmlmKGcucGFyZW50LmtpbmQ9PT0xNjIpcmV0dXJuIGUuaXNPYmplY3RMaXRlcmFsRWxlbWVudChnLnBhcmVudC5wYXJlbnQpP2cucGFyZW50LnBhcmVudDp2b2lkIDA7Y2FzZSA3OTpyZXR1cm4gZS5pc09iamVjdExpdGVyYWxFbGVtZW50KGcucGFyZW50KSYmKGcucGFyZW50LnBhcmVudC5raW5kPT09MjA1fHxnLnBhcmVudC5wYXJlbnQua2luZD09PTI4NikmJmcucGFyZW50Lm5hbWU9PT1nP2cucGFyZW50OnZvaWQgMH19ZnVuY3Rpb24gbChnLG5lKXt2YXIgdWU9SChnKTtpZih1ZSl7dmFyIFdlPW5lLmdldENvbnRleHR1YWxUeXBlKHVlLnBhcmVudCksRmU9V2UmJmQodWUsbmUsV2UsITEpO2lmKEZlJiZGZS5sZW5ndGg9PT0xKXJldHVybiBlLmZpcnN0KEZlKX1yZXR1cm4gbmUuZ2V0U3ltYm9sQXRMb2NhdGlvbihnKX1mdW5jdGlvbiBkKGcsbmUsdWUsV2Upe3ZhciBGZT1lLmdldE5hbWVGcm9tUHJvcGVydHlOYW1lKGcubmFtZSk7aWYoIUZlKXJldHVybiBlLmVtcHR5QXJyYXk7aWYoIXVlLmlzVW5pb24oKSl7dmFyIFo9dWUuZ2V0UHJvcGVydHkoRmUpO3JldHVybiBaP1taXTplLmVtcHR5QXJyYXl9dmFyIEJlPWUubWFwRGVmaW5lZCh1ZS50eXBlcyxmdW5jdGlvbihnZSl7cmV0dXJuKGUuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihnLnBhcmVudCl8fGUuaXNKc3hBdHRyaWJ1dGVzKGcucGFyZW50KSkmJm5lLmlzVHlwZUludmFsaWREdWVUb1VuaW9uRGlzY3JpbWluYW50KGdlLGcucGFyZW50KT92b2lkIDA6Z2UuZ2V0UHJvcGVydHkoRmUpfSk7aWYoV2UmJihCZS5sZW5ndGg9PT0wfHxCZS5sZW5ndGg9PT11ZS50eXBlcy5sZW5ndGgpKXt2YXIgWj11ZS5nZXRQcm9wZXJ0eShGZSk7aWYoWilyZXR1cm5bWl19cmV0dXJuIEJlLmxlbmd0aD09PTA/ZS5tYXBEZWZpbmVkKHVlLnR5cGVzLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZ2UuZ2V0UHJvcGVydHkoRmUpfSk6QmV9ZS5nZXRQcm9wZXJ0eVN5bWJvbHNGcm9tQ29udGV4dHVhbFR5cGU9ZDtmdW5jdGlvbiBEKGcpe3JldHVybiBnJiZnLnBhcmVudCYmZy5wYXJlbnQua2luZD09PTIwNyYmZy5wYXJlbnQuYXJndW1lbnRFeHByZXNzaW9uPT09Z31mdW5jdGlvbiBmZShnKXtyZXR1cm5cIi9wcmV0dGllci1zZWN1cml0eS1kaXJuYW1lLXBsYWNlaG9sZGVyXCIrZS5kaXJlY3RvcnlTZXBhcmF0b3IrZS5nZXREZWZhdWx0TGliRmlsZU5hbWUoZyl9ZS5nZXREZWZhdWx0TGliRmlsZVBhdGg9ZmUsZS5zZXRPYmplY3RBbGxvY2F0b3IoaWUoKSl9KShrZXx8KGtlPXt9KSk7dmFyIGtlOyhmdW5jdGlvbihlKXt2YXIgYTsoZnVuY3Rpb24oQyl7ZnVuY3Rpb24gdyhCLEUpe2lmKEIuaXNEZWNsYXJhdGlvbkZpbGUpcmV0dXJuO3ZhciBRPWUuZ2V0VG9rZW5BdFBvc2l0aW9uKEIsRSksbGU9Qi5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihFKS5saW5lO2lmKEIuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oUS5nZXRTdGFydChCKSkubGluZT5sZSl7dmFyIE49ZS5maW5kUHJlY2VkaW5nVG9rZW4oUS5wb3MsQik7aWYoIU58fEIuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oTi5nZXRFbmQoKSkubGluZSE9PWxlKXJldHVybjtRPU59aWYoUS5mbGFncyYxNjc3NzIxNilyZXR1cm47cmV0dXJuIEsoUSk7ZnVuY3Rpb24gcChiLHNlKXt2YXIgSj1iLmRlY29yYXRvcnM/ZS5za2lwVHJpdmlhKEIudGV4dCxiLmRlY29yYXRvcnMuZW5kKTpiLmdldFN0YXJ0KEIpO3JldHVybiBlLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhKLChzZXx8YikuZ2V0RW5kKCkpfWZ1bmN0aW9uIG0oYixzZSl7cmV0dXJuIHAoYixlLmZpbmROZXh0VG9rZW4oc2Usc2UucGFyZW50LEIpKX1mdW5jdGlvbiBHKGIsc2Upe3JldHVybiBiJiZsZT09PUIuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oYi5nZXRTdGFydChCKSkubGluZT9LKGIpOksoc2UpfWZ1bmN0aW9uIG9lKGIpe3JldHVybiBlLmNyZWF0ZVRleHRTcGFuRnJvbUJvdW5kcyhlLnNraXBUcml2aWEoQi50ZXh0LGIucG9zKSxiLmVuZCl9ZnVuY3Rpb24gZihiKXtyZXR1cm4gSyhlLmZpbmRQcmVjZWRpbmdUb2tlbihiLnBvcyxCKSl9ZnVuY3Rpb24gVChiKXtyZXR1cm4gSyhlLmZpbmROZXh0VG9rZW4oYixiLnBhcmVudCxCKSl9ZnVuY3Rpb24gSyhiKXtpZihiKXt2YXIgc2U9Yi5wYXJlbnQ7c3dpdGNoKGIua2luZCl7Y2FzZSAyMzc6cmV0dXJuIGhlKGIuZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9uc1swXSk7Y2FzZSAyNTQ6Y2FzZSAxNjc6Y2FzZSAxNjY6cmV0dXJuIGhlKGIpO2Nhc2UgMTY0OnJldHVybiB4KGIpO2Nhc2UgMjU2OmNhc2UgMTY5OmNhc2UgMTY4OmNhc2UgMTcyOmNhc2UgMTczOmNhc2UgMTcxOmNhc2UgMjEzOmNhc2UgMjE0OnJldHVybiAkKGIpO2Nhc2UgMjM1OmlmKGUuaXNGdW5jdGlvbkJsb2NrKGIpKXJldHVybiBBKGIpO2Nhc2UgMjYyOnJldHVybiB5KGIpO2Nhc2UgMjkyOnJldHVybiB5KGIuYmxvY2spO2Nhc2UgMjM4OnJldHVybiBwKGIuZXhwcmVzc2lvbik7Y2FzZSAyNDc6cmV0dXJuIHAoYi5nZXRDaGlsZEF0KDApLGIuZXhwcmVzc2lvbik7Y2FzZSAyNDE6cmV0dXJuIG0oYixiLmV4cHJlc3Npb24pO2Nhc2UgMjQwOnJldHVybiBLKGIuc3RhdGVtZW50KTtjYXNlIDI1MzpyZXR1cm4gcChiLmdldENoaWxkQXQoMCkpO2Nhc2UgMjM5OnJldHVybiBtKGIsYi5leHByZXNzaW9uKTtjYXNlIDI1MDpyZXR1cm4gSyhiLnN0YXRlbWVudCk7Y2FzZSAyNDY6Y2FzZSAyNDU6cmV0dXJuIHAoYi5nZXRDaGlsZEF0KDApLGIubGFiZWwpO2Nhc2UgMjQyOnJldHVybiBMKGIpO2Nhc2UgMjQzOnJldHVybiBtKGIsYi5leHByZXNzaW9uKTtjYXNlIDI0NDpyZXR1cm4gVihiKTtjYXNlIDI0OTpyZXR1cm4gbShiLGIuZXhwcmVzc2lvbik7Y2FzZSAyODk6Y2FzZSAyOTA6cmV0dXJuIEsoYi5zdGF0ZW1lbnRzWzBdKTtjYXNlIDI1MjpyZXR1cm4geShiLnRyeUJsb2NrKTtjYXNlIDI1MTpyZXR1cm4gcChiLGIuZXhwcmVzc2lvbik7Y2FzZSAyNzE6cmV0dXJuIHAoYixiLmV4cHJlc3Npb24pO2Nhc2UgMjY1OnJldHVybiBwKGIsYi5tb2R1bGVSZWZlcmVuY2UpO2Nhc2UgMjY2OnJldHVybiBwKGIsYi5tb2R1bGVTcGVjaWZpZXIpO2Nhc2UgMjcyOnJldHVybiBwKGIsYi5tb2R1bGVTcGVjaWZpZXIpO2Nhc2UgMjYxOmlmKGUuZ2V0TW9kdWxlSW5zdGFuY2VTdGF0ZShiKSE9PTEpcmV0dXJuO2Nhc2UgMjU3OmNhc2UgMjYwOmNhc2UgMjk5OmNhc2UgMjAzOnJldHVybiBwKGIpO2Nhc2UgMjQ4OnJldHVybiBLKGIuc3RhdGVtZW50KTtjYXNlIDE2NTpyZXR1cm4gb2Uoc2UuZGVjb3JhdG9ycyk7Y2FzZSAyMDE6Y2FzZSAyMDI6cmV0dXJuIFAoYik7Y2FzZSAyNTg6Y2FzZSAyNTk6cmV0dXJuO2Nhc2UgMjY6Y2FzZSAxOnJldHVybiBHKGUuZmluZFByZWNlZGluZ1Rva2VuKGIucG9zLEIpKTtjYXNlIDI3OnJldHVybiBmKGIpO2Nhc2UgMTg6cmV0dXJuIFkoYik7Y2FzZSAxOTpyZXR1cm4gVShiKTtjYXNlIDIzOnJldHVybiBqKGIpO2Nhc2UgMjA6cmV0dXJuIEgoYik7Y2FzZSAyMTpyZXR1cm4gSShiKTtjYXNlIDU4OnJldHVybiBsKGIpO2Nhc2UgMzE6Y2FzZSAyOTpyZXR1cm4gZChiKTtjYXNlIDExNTpyZXR1cm4gRChiKTtjYXNlIDkxOmNhc2UgODM6Y2FzZSA5NjpyZXR1cm4gVChiKTtjYXNlIDE2MDpyZXR1cm4gZmUoYik7ZGVmYXVsdDppZihlLmlzQXJyYXlMaXRlcmFsT3JPYmplY3RMaXRlcmFsRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oYikpcmV0dXJuIGsoYik7aWYoKGIua2luZD09PTc5fHxiLmtpbmQ9PT0yMjV8fGIua2luZD09PTI5Nnx8Yi5raW5kPT09Mjk3KSYmZS5pc0FycmF5TGl0ZXJhbE9yT2JqZWN0TGl0ZXJhbERlc3RydWN0dXJpbmdQYXR0ZXJuKHNlKSlyZXR1cm4gcChiKTtpZihiLmtpbmQ9PT0yMjEpe3ZhciBKPWIsaWU9Si5sZWZ0LFI9Si5vcGVyYXRvclRva2VuO2lmKGUuaXNBcnJheUxpdGVyYWxPck9iamVjdExpdGVyYWxEZXN0cnVjdHVyaW5nUGF0dGVybihpZSkpcmV0dXJuIGsoaWUpO2lmKFIua2luZD09PTYzJiZlLmlzQXJyYXlMaXRlcmFsT3JPYmplY3RMaXRlcmFsRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oYi5wYXJlbnQpKXJldHVybiBwKGIpO2lmKFIua2luZD09PTI3KXJldHVybiBLKGllKX1pZihlLmlzRXhwcmVzc2lvbk5vZGUoYikpc3dpdGNoKHNlLmtpbmQpe2Nhc2UgMjQwOnJldHVybiBmKGIpO2Nhc2UgMTY1OnJldHVybiBLKGIucGFyZW50KTtjYXNlIDI0MjpjYXNlIDI0NDpyZXR1cm4gcChiKTtjYXNlIDIyMTppZihiLnBhcmVudC5vcGVyYXRvclRva2VuLmtpbmQ9PT0yNylyZXR1cm4gcChiKTticmVhaztjYXNlIDIxNDppZihiLnBhcmVudC5ib2R5PT09YilyZXR1cm4gcChiKTticmVha31zd2l0Y2goYi5wYXJlbnQua2luZCl7Y2FzZSAyOTY6aWYoYi5wYXJlbnQubmFtZT09PWImJiFlLmlzQXJyYXlMaXRlcmFsT3JPYmplY3RMaXRlcmFsRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oYi5wYXJlbnQucGFyZW50KSlyZXR1cm4gSyhiLnBhcmVudC5pbml0aWFsaXplcik7YnJlYWs7Y2FzZSAyMTE6aWYoYi5wYXJlbnQudHlwZT09PWIpcmV0dXJuIFQoYi5wYXJlbnQudHlwZSk7YnJlYWs7Y2FzZSAyNTQ6Y2FzZSAxNjQ6e3ZhciBxPWIucGFyZW50LE89cS5pbml0aWFsaXplcix2ZT1xLnR5cGU7aWYoTz09PWJ8fHZlPT09Ynx8ZS5pc0Fzc2lnbm1lbnRPcGVyYXRvcihiLmtpbmQpKXJldHVybiBmKGIpO2JyZWFrfWNhc2UgMjIxOnt2YXIgaWU9Yi5wYXJlbnQubGVmdDtpZihlLmlzQXJyYXlMaXRlcmFsT3JPYmplY3RMaXRlcmFsRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oaWUpJiZiIT09aWUpcmV0dXJuIGYoYik7YnJlYWt9ZGVmYXVsdDppZihlLmlzRnVuY3Rpb25MaWtlKGIucGFyZW50KSYmYi5wYXJlbnQudHlwZT09PWIpcmV0dXJuIGYoYil9cmV0dXJuIEsoYi5wYXJlbnQpfX1mdW5jdGlvbiBlZShnKXtyZXR1cm4gZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGcucGFyZW50KSYmZy5wYXJlbnQuZGVjbGFyYXRpb25zWzBdPT09Zz9wKGUuZmluZFByZWNlZGluZ1Rva2VuKGcucG9zLEIsZy5wYXJlbnQpLGcpOnAoZyl9ZnVuY3Rpb24gaGUoZyl7aWYoZy5wYXJlbnQucGFyZW50LmtpbmQ9PT0yNDMpcmV0dXJuIEsoZy5wYXJlbnQucGFyZW50KTt2YXIgbmU9Zy5wYXJlbnQ7aWYoZS5pc0JpbmRpbmdQYXR0ZXJuKGcubmFtZSkpcmV0dXJuIFAoZy5uYW1lKTtpZihnLmluaXRpYWxpemVyfHxlLmhhc1N5bnRhY3RpY01vZGlmaWVyKGcsMSl8fG5lLnBhcmVudC5raW5kPT09MjQ0KXJldHVybiBlZShnKTtpZihlLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoZy5wYXJlbnQpJiZnLnBhcmVudC5kZWNsYXJhdGlvbnNbMF0hPT1nKXJldHVybiBLKGUuZmluZFByZWNlZGluZ1Rva2VuKGcucG9zLEIsZy5wYXJlbnQpKX1mdW5jdGlvbiBGKGcpe3JldHVybiEhZy5pbml0aWFsaXplcnx8Zy5kb3REb3REb3RUb2tlbiE9PXZvaWQgMHx8ZS5oYXNTeW50YWN0aWNNb2RpZmllcihnLDEyKX1mdW5jdGlvbiB4KGcpe2lmKGUuaXNCaW5kaW5nUGF0dGVybihnLm5hbWUpKXJldHVybiBQKGcubmFtZSk7aWYoRihnKSlyZXR1cm4gcChnKTt2YXIgbmU9Zy5wYXJlbnQsdWU9bmUucGFyYW1ldGVycy5pbmRleE9mKGcpO3JldHVybiBlLkRlYnVnLmFzc2VydCh1ZSE9PS0xKSx1ZSE9PTA/eChuZS5wYXJhbWV0ZXJzW3VlLTFdKTpLKG5lLmJvZHkpfWZ1bmN0aW9uIFgoZyl7cmV0dXJuIGUuaGFzU3ludGFjdGljTW9kaWZpZXIoZywxKXx8Zy5wYXJlbnQua2luZD09PTI1NyYmZy5raW5kIT09MTcxfWZ1bmN0aW9uICQoZyl7aWYoISFnLmJvZHkpcmV0dXJuIFgoZyk/cChnKTpLKGcuYm9keSl9ZnVuY3Rpb24gQShnKXt2YXIgbmU9Zy5zdGF0ZW1lbnRzLmxlbmd0aD9nLnN0YXRlbWVudHNbMF06Zy5nZXRMYXN0VG9rZW4oKTtyZXR1cm4gWChnLnBhcmVudCk/RyhnLnBhcmVudCxuZSk6SyhuZSl9ZnVuY3Rpb24geShnKXtzd2l0Y2goZy5wYXJlbnQua2luZCl7Y2FzZSAyNjE6aWYoZS5nZXRNb2R1bGVJbnN0YW5jZVN0YXRlKGcucGFyZW50KSE9PTEpcmV0dXJuO2Nhc2UgMjQxOmNhc2UgMjM5OmNhc2UgMjQzOnJldHVybiBHKGcucGFyZW50LGcuc3RhdGVtZW50c1swXSk7Y2FzZSAyNDI6Y2FzZSAyNDQ6cmV0dXJuIEcoZS5maW5kUHJlY2VkaW5nVG9rZW4oZy5wb3MsQixnLnBhcmVudCksZy5zdGF0ZW1lbnRzWzBdKX1yZXR1cm4gSyhnLnN0YXRlbWVudHNbMF0pfWZ1bmN0aW9uIFYoZyl7aWYoZy5pbml0aWFsaXplci5raW5kPT09MjU1KXt2YXIgbmU9Zy5pbml0aWFsaXplcjtpZihuZS5kZWNsYXJhdGlvbnMubGVuZ3RoPjApcmV0dXJuIEsobmUuZGVjbGFyYXRpb25zWzBdKX1lbHNlIHJldHVybiBLKGcuaW5pdGlhbGl6ZXIpfWZ1bmN0aW9uIEwoZyl7aWYoZy5pbml0aWFsaXplcilyZXR1cm4gVihnKTtpZihnLmNvbmRpdGlvbilyZXR1cm4gcChnLmNvbmRpdGlvbik7aWYoZy5pbmNyZW1lbnRvcilyZXR1cm4gcChnLmluY3JlbWVudG9yKX1mdW5jdGlvbiBQKGcpe3ZhciBuZT1lLmZvckVhY2goZy5lbGVtZW50cyxmdW5jdGlvbih1ZSl7cmV0dXJuIHVlLmtpbmQhPT0yMjc/dWU6dm9pZCAwfSk7cmV0dXJuIG5lP0sobmUpOmcucGFyZW50LmtpbmQ9PT0yMDM/cChnLnBhcmVudCk6ZWUoZy5wYXJlbnQpfWZ1bmN0aW9uIGsoZyl7ZS5EZWJ1Zy5hc3NlcnQoZy5raW5kIT09MjAyJiZnLmtpbmQhPT0yMDEpO3ZhciBuZT1nLmtpbmQ9PT0yMDQ/Zy5lbGVtZW50czpnLnByb3BlcnRpZXMsdWU9ZS5mb3JFYWNoKG5lLGZ1bmN0aW9uKFdlKXtyZXR1cm4gV2Uua2luZCE9PTIyNz9XZTp2b2lkIDB9KTtyZXR1cm4gdWU/Syh1ZSk6cChnLnBhcmVudC5raW5kPT09MjIxP2cucGFyZW50OmcpfWZ1bmN0aW9uIFkoZyl7c3dpdGNoKGcucGFyZW50LmtpbmQpe2Nhc2UgMjYwOnZhciBuZT1nLnBhcmVudDtyZXR1cm4gRyhlLmZpbmRQcmVjZWRpbmdUb2tlbihnLnBvcyxCLGcucGFyZW50KSxuZS5tZW1iZXJzLmxlbmd0aD9uZS5tZW1iZXJzWzBdOm5lLmdldExhc3RUb2tlbihCKSk7Y2FzZSAyNTc6dmFyIHVlPWcucGFyZW50O3JldHVybiBHKGUuZmluZFByZWNlZGluZ1Rva2VuKGcucG9zLEIsZy5wYXJlbnQpLHVlLm1lbWJlcnMubGVuZ3RoP3VlLm1lbWJlcnNbMF06dWUuZ2V0TGFzdFRva2VuKEIpKTtjYXNlIDI2MzpyZXR1cm4gRyhnLnBhcmVudC5wYXJlbnQsZy5wYXJlbnQuY2xhdXNlc1swXSl9cmV0dXJuIEsoZy5wYXJlbnQpfWZ1bmN0aW9uIFUoZyl7c3dpdGNoKGcucGFyZW50LmtpbmQpe2Nhc2UgMjYyOmlmKGUuZ2V0TW9kdWxlSW5zdGFuY2VTdGF0ZShnLnBhcmVudC5wYXJlbnQpIT09MSlyZXR1cm47Y2FzZSAyNjA6Y2FzZSAyNTc6cmV0dXJuIHAoZyk7Y2FzZSAyMzU6aWYoZS5pc0Z1bmN0aW9uQmxvY2soZy5wYXJlbnQpKXJldHVybiBwKGcpO2Nhc2UgMjkyOnJldHVybiBLKGUubGFzdE9yVW5kZWZpbmVkKGcucGFyZW50LnN0YXRlbWVudHMpKTtjYXNlIDI2Mzp2YXIgbmU9Zy5wYXJlbnQsdWU9ZS5sYXN0T3JVbmRlZmluZWQobmUuY2xhdXNlcyk7cmV0dXJuIHVlP0soZS5sYXN0T3JVbmRlZmluZWQodWUuc3RhdGVtZW50cykpOnZvaWQgMDtjYXNlIDIwMTp2YXIgV2U9Zy5wYXJlbnQ7cmV0dXJuIEsoZS5sYXN0T3JVbmRlZmluZWQoV2UuZWxlbWVudHMpfHxXZSk7ZGVmYXVsdDppZihlLmlzQXJyYXlMaXRlcmFsT3JPYmplY3RMaXRlcmFsRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oZy5wYXJlbnQpKXt2YXIgRmU9Zy5wYXJlbnQ7cmV0dXJuIHAoZS5sYXN0T3JVbmRlZmluZWQoRmUucHJvcGVydGllcyl8fEZlKX1yZXR1cm4gSyhnLnBhcmVudCl9fWZ1bmN0aW9uIGooZyl7c3dpdGNoKGcucGFyZW50LmtpbmQpe2Nhc2UgMjAyOnZhciBuZT1nLnBhcmVudDtyZXR1cm4gcChlLmxhc3RPclVuZGVmaW5lZChuZS5lbGVtZW50cyl8fG5lKTtkZWZhdWx0OmlmKGUuaXNBcnJheUxpdGVyYWxPck9iamVjdExpdGVyYWxEZXN0cnVjdHVyaW5nUGF0dGVybihnLnBhcmVudCkpe3ZhciB1ZT1nLnBhcmVudDtyZXR1cm4gcChlLmxhc3RPclVuZGVmaW5lZCh1ZS5lbGVtZW50cyl8fHVlKX1yZXR1cm4gSyhnLnBhcmVudCl9fWZ1bmN0aW9uIEgoZyl7cmV0dXJuIGcucGFyZW50LmtpbmQ9PT0yNDB8fGcucGFyZW50LmtpbmQ9PT0yMDh8fGcucGFyZW50LmtpbmQ9PT0yMDk/ZihnKTpnLnBhcmVudC5raW5kPT09MjEyP1QoZyk6SyhnLnBhcmVudCl9ZnVuY3Rpb24gSShnKXtzd2l0Y2goZy5wYXJlbnQua2luZCl7Y2FzZSAyMTM6Y2FzZSAyNTY6Y2FzZSAyMTQ6Y2FzZSAxNjk6Y2FzZSAxNjg6Y2FzZSAxNzI6Y2FzZSAxNzM6Y2FzZSAxNzE6Y2FzZSAyNDE6Y2FzZSAyNDA6Y2FzZSAyNDI6Y2FzZSAyNDQ6Y2FzZSAyMDg6Y2FzZSAyMDk6Y2FzZSAyMTI6cmV0dXJuIGYoZyk7ZGVmYXVsdDpyZXR1cm4gSyhnLnBhcmVudCl9fWZ1bmN0aW9uIGwoZyl7cmV0dXJuIGUuaXNGdW5jdGlvbkxpa2UoZy5wYXJlbnQpfHxnLnBhcmVudC5raW5kPT09Mjk2fHxnLnBhcmVudC5raW5kPT09MTY0P2YoZyk6SyhnLnBhcmVudCl9ZnVuY3Rpb24gZChnKXtyZXR1cm4gZy5wYXJlbnQua2luZD09PTIxMT9UKGcpOksoZy5wYXJlbnQpfWZ1bmN0aW9uIEQoZyl7cmV0dXJuIGcucGFyZW50LmtpbmQ9PT0yNDA/bShnLGcucGFyZW50LmV4cHJlc3Npb24pOksoZy5wYXJlbnQpfWZ1bmN0aW9uIGZlKGcpe3JldHVybiBnLnBhcmVudC5raW5kPT09MjQ0P1QoZyk6SyhnLnBhcmVudCl9fX1DLnNwYW5JblNvdXJjZUZpbGVBdExvY2F0aW9uPXd9KShhPWUuQnJlYWtwb2ludFJlc29sdmVyfHwoZS5CcmVha3BvaW50UmVzb2x2ZXI9e30pKX0pKGtlfHwoa2U9e30pKTt2YXIga2U7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGEoQyx3LEIpe3ZhciBFPVtdO0I9ZS5maXh1cENvbXBpbGVyT3B0aW9ucyhCLEUpO3ZhciBRPWUuaXNBcnJheShDKT9DOltDXSxsZT1lLnRyYW5zZm9ybU5vZGVzKHZvaWQgMCx2b2lkIDAsZS5mYWN0b3J5LEIsUSx3LCEwKTtyZXR1cm4gbGUuZGlhZ25vc3RpY3M9ZS5jb25jYXRlbmF0ZShsZS5kaWFnbm9zdGljcyxFKSxsZX1lLnRyYW5zZm9ybT1hfSkoa2V8fChrZT17fSkpO3ZhciBhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpLGtlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBhKG0sRyl7bSYmbS5sb2coXCIqSU5URVJOQUwgRVJST1IqIC0gRXhjZXB0aW9uIGluIHR5cGVzY3JpcHQgc2VydmljZXM6IFwiK0cubWVzc2FnZSl9dmFyIEM9dm9pZCAwLHc9dm9pZCAwO2UuTGFuZ3VhZ2VTZXJ2aWNlU2hpbUhvc3RBZGFwdGVyPXc7dmFyIEI9dm9pZCAwO2UuQ29yZVNlcnZpY2VzU2hpbUhvc3RBZGFwdGVyPUI7dmFyIEU9dm9pZCAwO2UucmVhbGl6ZURpYWdub3N0aWNzPXZvaWQgMDt2YXIgUT12b2lkIDAsbGU9dm9pZCAwLE49dm9pZCAwLHA9dm9pZCAwO2UuVHlwZVNjcmlwdFNlcnZpY2VzRmFjdG9yeT12b2lkIDB9KShrZXx8KGtlPXt9KSksZnVuY3Rpb24oKXtyZXR1cm47dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLFwiX19tYWdpY19fXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxjb25maWd1cmFibGU6ITB9KSxfX21hZ2ljX18uZ2xvYmFsVGhpcz1fX21hZ2ljX18sdHlwZW9mIGdsb2JhbFRoaXM+XCJ1XCImJih3aW5kb3cuZ2xvYmFsVGhpcz13aW5kb3cpLGRlbGV0ZSBPYmplY3QucHJvdG90eXBlLl9fbWFnaWNfX31jYXRjaHt3aW5kb3cuZ2xvYmFsVGhpcz13aW5kb3d9fSgpLHR5cGVvZiByZTxcInVcIiYmcmUuZXhwb3J0cyYmKHJlLmV4cG9ydHM9a2UpO3ZhciBrZTsoZnVuY3Rpb24oZSl7dmFyIGE9e3NpbmNlOlwiNC4wXCIsd2FybkFmdGVyOlwiNC4xXCIsbWVzc2FnZTpcIlVzZSB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kIG9uICd0cy5mYWN0b3J5JyBvciB0aGUgJ2ZhY3RvcnknIHN1cHBsaWVkIGJ5IHlvdXIgdHJhbnNmb3JtYXRpb24gY29udGV4dCBpbnN0ZWFkLlwifTtlLmNyZWF0ZU5vZGVBcnJheT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlTm9kZUFycmF5LGEpLGUuY3JlYXRlTnVtZXJpY0xpdGVyYWw9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU51bWVyaWNMaXRlcmFsLGEpLGUuY3JlYXRlQmlnSW50TGl0ZXJhbD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlQmlnSW50TGl0ZXJhbCxhKSxlLmNyZWF0ZVN0cmluZ0xpdGVyYWw9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwsYSksZS5jcmVhdGVTdHJpbmdMaXRlcmFsRnJvbU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZSxhKSxlLmNyZWF0ZVJlZ3VsYXJFeHByZXNzaW9uTGl0ZXJhbD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUmVndWxhckV4cHJlc3Npb25MaXRlcmFsLGEpLGUuY3JlYXRlTG9vcFZhcmlhYmxlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVMb29wVmFyaWFibGUsYSksZS5jcmVhdGVVbmlxdWVOYW1lPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVVbmlxdWVOYW1lLGEpLGUuY3JlYXRlUHJpdmF0ZUlkZW50aWZpZXI9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVByaXZhdGVJZGVudGlmaWVyLGEpLGUuY3JlYXRlU3VwZXI9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVN1cGVyLGEpLGUuY3JlYXRlVGhpcz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVGhpcyxhKSxlLmNyZWF0ZU51bGw9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU51bGwsYSksZS5jcmVhdGVUcnVlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVUcnVlLGEpLGUuY3JlYXRlRmFsc2U9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUZhbHNlLGEpLGUuY3JlYXRlTW9kaWZpZXI9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyLGEpLGUuY3JlYXRlTW9kaWZpZXJzRnJvbU1vZGlmaWVyRmxhZ3M9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU1vZGlmaWVyc0Zyb21Nb2RpZmllckZsYWdzLGEpLGUuY3JlYXRlUXVhbGlmaWVkTmFtZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUXVhbGlmaWVkTmFtZSxhKSxlLnVwZGF0ZVF1YWxpZmllZE5hbWU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVF1YWxpZmllZE5hbWUsYSksZS5jcmVhdGVDb21wdXRlZFByb3BlcnR5TmFtZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eU5hbWUsYSksZS51cGRhdGVDb21wdXRlZFByb3BlcnR5TmFtZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQ29tcHV0ZWRQcm9wZXJ0eU5hbWUsYSksZS5jcmVhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbixhKSxlLnVwZGF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uLGEpLGUuY3JlYXRlUGFyYW1ldGVyPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVQYXJhbWV0ZXJEZWNsYXJhdGlvbixhKSxlLnVwZGF0ZVBhcmFtZXRlcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlUGFyYW1ldGVyRGVjbGFyYXRpb24sYSksZS5jcmVhdGVEZWNvcmF0b3I9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZURlY29yYXRvcixhKSxlLnVwZGF0ZURlY29yYXRvcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlRGVjb3JhdG9yLGEpLGUuY3JlYXRlUHJvcGVydHk9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5RGVjbGFyYXRpb24sYSksZS51cGRhdGVQcm9wZXJ0eT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlUHJvcGVydHlEZWNsYXJhdGlvbixhKSxlLmNyZWF0ZU1ldGhvZD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlTWV0aG9kRGVjbGFyYXRpb24sYSksZS51cGRhdGVNZXRob2Q9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZU1ldGhvZERlY2xhcmF0aW9uLGEpLGUuY3JlYXRlQ29uc3RydWN0b3I9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24sYSksZS51cGRhdGVDb25zdHJ1Y3Rvcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbixhKSxlLmNyZWF0ZUdldEFjY2Vzc29yPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVHZXRBY2Nlc3NvckRlY2xhcmF0aW9uLGEpLGUudXBkYXRlR2V0QWNjZXNzb3I9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUdldEFjY2Vzc29yRGVjbGFyYXRpb24sYSksZS5jcmVhdGVTZXRBY2Nlc3Nvcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlU2V0QWNjZXNzb3JEZWNsYXJhdGlvbixhKSxlLnVwZGF0ZVNldEFjY2Vzc29yPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLGEpLGUuY3JlYXRlQ2FsbFNpZ25hdHVyZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlQ2FsbFNpZ25hdHVyZSxhKSxlLnVwZGF0ZUNhbGxTaWduYXR1cmU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUNhbGxTaWduYXR1cmUsYSksZS5jcmVhdGVDb25zdHJ1Y3RTaWduYXR1cmU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUNvbnN0cnVjdFNpZ25hdHVyZSxhKSxlLnVwZGF0ZUNvbnN0cnVjdFNpZ25hdHVyZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQ29uc3RydWN0U2lnbmF0dXJlLGEpLGUudXBkYXRlSW5kZXhTaWduYXR1cmU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUluZGV4U2lnbmF0dXJlLGEpLGUuY3JlYXRlS2V5d29yZFR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVLZXl3b3JkVHlwZU5vZGUsYSksZS5jcmVhdGVUeXBlUHJlZGljYXRlTm9kZVdpdGhNb2RpZmllcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVHlwZVByZWRpY2F0ZU5vZGUsYSksZS51cGRhdGVUeXBlUHJlZGljYXRlTm9kZVdpdGhNb2RpZmllcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlVHlwZVByZWRpY2F0ZU5vZGUsYSksZS5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUsYSksZS51cGRhdGVUeXBlUmVmZXJlbmNlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlVHlwZVJlZmVyZW5jZU5vZGUsYSksZS5jcmVhdGVGdW5jdGlvblR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVGdW5jdGlvblR5cGVOb2RlLGEpLGUudXBkYXRlRnVuY3Rpb25UeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlRnVuY3Rpb25UeXBlTm9kZSxhKSxlLmNyZWF0ZUNvbnN0cnVjdG9yVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24oQyx3LEIpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlQ29uc3RydWN0b3JUeXBlTm9kZSh2b2lkIDAsQyx3LEIpfSxhKSxlLnVwZGF0ZUNvbnN0cnVjdG9yVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24oQyx3LEIsRSl7cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVDb25zdHJ1Y3RvclR5cGVOb2RlKEMsQy5tb2RpZmllcnMsdyxCLEUpfSxhKSxlLmNyZWF0ZVR5cGVRdWVyeU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVR5cGVRdWVyeU5vZGUsYSksZS51cGRhdGVUeXBlUXVlcnlOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVUeXBlUXVlcnlOb2RlLGEpLGUuY3JlYXRlVHlwZUxpdGVyYWxOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUsYSksZS51cGRhdGVUeXBlTGl0ZXJhbE5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVR5cGVMaXRlcmFsTm9kZSxhKSxlLmNyZWF0ZUFycmF5VHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUFycmF5VHlwZU5vZGUsYSksZS51cGRhdGVBcnJheVR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVBcnJheVR5cGVOb2RlLGEpLGUuY3JlYXRlVHVwbGVUeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVHVwbGVUeXBlTm9kZSxhKSxlLnVwZGF0ZVR1cGxlVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVR1cGxlVHlwZU5vZGUsYSksZS5jcmVhdGVPcHRpb25hbFR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVPcHRpb25hbFR5cGVOb2RlLGEpLGUudXBkYXRlT3B0aW9uYWxUeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlT3B0aW9uYWxUeXBlTm9kZSxhKSxlLmNyZWF0ZVJlc3RUeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUmVzdFR5cGVOb2RlLGEpLGUudXBkYXRlUmVzdFR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVSZXN0VHlwZU5vZGUsYSksZS5jcmVhdGVVbmlvblR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVVbmlvblR5cGVOb2RlLGEpLGUudXBkYXRlVW5pb25UeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlVW5pb25UeXBlTm9kZSxhKSxlLmNyZWF0ZUludGVyc2VjdGlvblR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVJbnRlcnNlY3Rpb25UeXBlTm9kZSxhKSxlLnVwZGF0ZUludGVyc2VjdGlvblR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVJbnRlcnNlY3Rpb25UeXBlTm9kZSxhKSxlLmNyZWF0ZUNvbmRpdGlvbmFsVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUNvbmRpdGlvbmFsVHlwZU5vZGUsYSksZS51cGRhdGVDb25kaXRpb25hbFR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVDb25kaXRpb25hbFR5cGVOb2RlLGEpLGUuY3JlYXRlSW5mZXJUeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSW5mZXJUeXBlTm9kZSxhKSxlLnVwZGF0ZUluZmVyVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUluZmVyVHlwZU5vZGUsYSksZS5jcmVhdGVJbXBvcnRUeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSW1wb3J0VHlwZU5vZGUsYSksZS51cGRhdGVJbXBvcnRUeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlSW1wb3J0VHlwZU5vZGUsYSksZS5jcmVhdGVQYXJlbnRoZXNpemVkVHlwZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZFR5cGUsYSksZS51cGRhdGVQYXJlbnRoZXNpemVkVHlwZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlUGFyZW50aGVzaXplZFR5cGUsYSksZS5jcmVhdGVUaGlzVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVRoaXNUeXBlTm9kZSxhKSxlLnVwZGF0ZVR5cGVPcGVyYXRvck5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVR5cGVPcGVyYXRvck5vZGUsYSksZS5jcmVhdGVJbmRleGVkQWNjZXNzVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUluZGV4ZWRBY2Nlc3NUeXBlTm9kZSxhKSxlLnVwZGF0ZUluZGV4ZWRBY2Nlc3NUeXBlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlSW5kZXhlZEFjY2Vzc1R5cGVOb2RlLGEpLGUuY3JlYXRlTWFwcGVkVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU1hcHBlZFR5cGVOb2RlLGEpLGUudXBkYXRlTWFwcGVkVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZU1hcHBlZFR5cGVOb2RlLGEpLGUuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVMaXRlcmFsVHlwZU5vZGUsYSksZS51cGRhdGVMaXRlcmFsVHlwZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUxpdGVyYWxUeXBlTm9kZSxhKSxlLmNyZWF0ZU9iamVjdEJpbmRpbmdQYXR0ZXJuPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVPYmplY3RCaW5kaW5nUGF0dGVybixhKSxlLnVwZGF0ZU9iamVjdEJpbmRpbmdQYXR0ZXJuPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVPYmplY3RCaW5kaW5nUGF0dGVybixhKSxlLmNyZWF0ZUFycmF5QmluZGluZ1BhdHRlcm49ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUFycmF5QmluZGluZ1BhdHRlcm4sYSksZS51cGRhdGVBcnJheUJpbmRpbmdQYXR0ZXJuPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVBcnJheUJpbmRpbmdQYXR0ZXJuLGEpLGUuY3JlYXRlQmluZGluZ0VsZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUJpbmRpbmdFbGVtZW50LGEpLGUudXBkYXRlQmluZGluZ0VsZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUJpbmRpbmdFbGVtZW50LGEpLGUuY3JlYXRlQXJyYXlMaXRlcmFsPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uLGEpLGUudXBkYXRlQXJyYXlMaXRlcmFsPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVBcnJheUxpdGVyYWxFeHByZXNzaW9uLGEpLGUuY3JlYXRlT2JqZWN0TGl0ZXJhbD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sYSksZS51cGRhdGVPYmplY3RMaXRlcmFsPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVPYmplY3RMaXRlcmFsRXhwcmVzc2lvbixhKSxlLmNyZWF0ZVByb3BlcnR5QWNjZXNzPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sYSksZS51cGRhdGVQcm9wZXJ0eUFjY2Vzcz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLGEpLGUuY3JlYXRlUHJvcGVydHlBY2Nlc3NDaGFpbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUHJvcGVydHlBY2Nlc3NDaGFpbixhKSxlLnVwZGF0ZVByb3BlcnR5QWNjZXNzQ2hhaW49ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVByb3BlcnR5QWNjZXNzQ2hhaW4sYSksZS5jcmVhdGVFbGVtZW50QWNjZXNzPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVFbGVtZW50QWNjZXNzRXhwcmVzc2lvbixhKSxlLnVwZGF0ZUVsZW1lbnRBY2Nlc3M9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLGEpLGUuY3JlYXRlRWxlbWVudEFjY2Vzc0NoYWluPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVFbGVtZW50QWNjZXNzQ2hhaW4sYSksZS51cGRhdGVFbGVtZW50QWNjZXNzQ2hhaW49ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUVsZW1lbnRBY2Nlc3NDaGFpbixhKSxlLmNyZWF0ZUNhbGw9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uLGEpLGUudXBkYXRlQ2FsbD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQ2FsbEV4cHJlc3Npb24sYSksZS5jcmVhdGVDYWxsQ2hhaW49ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUNhbGxDaGFpbixhKSxlLnVwZGF0ZUNhbGxDaGFpbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQ2FsbENoYWluLGEpLGUuY3JlYXRlTmV3PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVOZXdFeHByZXNzaW9uLGEpLGUudXBkYXRlTmV3PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVOZXdFeHByZXNzaW9uLGEpLGUuY3JlYXRlVHlwZUFzc2VydGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVHlwZUFzc2VydGlvbixhKSxlLnVwZGF0ZVR5cGVBc3NlcnRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVR5cGVBc3NlcnRpb24sYSksZS5jcmVhdGVQYXJlbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24sYSksZS51cGRhdGVQYXJlbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24sYSksZS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbixhKSxlLnVwZGF0ZUZ1bmN0aW9uRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlRnVuY3Rpb25FeHByZXNzaW9uLGEpLGUuY3JlYXRlRGVsZXRlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVEZWxldGVFeHByZXNzaW9uLGEpLGUudXBkYXRlRGVsZXRlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVEZWxldGVFeHByZXNzaW9uLGEpLGUuY3JlYXRlVHlwZU9mPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVUeXBlT2ZFeHByZXNzaW9uLGEpLGUudXBkYXRlVHlwZU9mPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVUeXBlT2ZFeHByZXNzaW9uLGEpLGUuY3JlYXRlVm9pZD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVm9pZEV4cHJlc3Npb24sYSksZS51cGRhdGVWb2lkPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVWb2lkRXhwcmVzc2lvbixhKSxlLmNyZWF0ZUF3YWl0PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVBd2FpdEV4cHJlc3Npb24sYSksZS51cGRhdGVBd2FpdD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQXdhaXRFeHByZXNzaW9uLGEpLGUuY3JlYXRlUHJlZml4PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVQcmVmaXhVbmFyeUV4cHJlc3Npb24sYSksZS51cGRhdGVQcmVmaXg9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVByZWZpeFVuYXJ5RXhwcmVzc2lvbixhKSxlLmNyZWF0ZVBvc3RmaXg9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVBvc3RmaXhVbmFyeUV4cHJlc3Npb24sYSksZS51cGRhdGVQb3N0Zml4PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVQb3N0Zml4VW5hcnlFeHByZXNzaW9uLGEpLGUuY3JlYXRlQmluYXJ5PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVCaW5hcnlFeHByZXNzaW9uLGEpLGUudXBkYXRlQ29uZGl0aW9uYWw9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbixhKSxlLmNyZWF0ZVRlbXBsYXRlRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVFeHByZXNzaW9uLGEpLGUudXBkYXRlVGVtcGxhdGVFeHByZXNzaW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVUZW1wbGF0ZUV4cHJlc3Npb24sYSksZS5jcmVhdGVUZW1wbGF0ZUhlYWQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVRlbXBsYXRlSGVhZCxhKSxlLmNyZWF0ZVRlbXBsYXRlTWlkZGxlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVUZW1wbGF0ZU1pZGRsZSxhKSxlLmNyZWF0ZVRlbXBsYXRlVGFpbD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVUYWlsLGEpLGUuY3JlYXRlTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWw9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU5vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsLGEpLGUudXBkYXRlWWllbGQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVlpZWxkRXhwcmVzc2lvbixhKSxlLmNyZWF0ZVNwcmVhZD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlU3ByZWFkRWxlbWVudCxhKSxlLnVwZGF0ZVNwcmVhZD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlU3ByZWFkRWxlbWVudCxhKSxlLmNyZWF0ZU9taXR0ZWRFeHByZXNzaW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVPbWl0dGVkRXhwcmVzc2lvbixhKSxlLmNyZWF0ZUFzRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlQXNFeHByZXNzaW9uLGEpLGUudXBkYXRlQXNFeHByZXNzaW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVBc0V4cHJlc3Npb24sYSksZS5jcmVhdGVOb25OdWxsRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlTm9uTnVsbEV4cHJlc3Npb24sYSksZS51cGRhdGVOb25OdWxsRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlTm9uTnVsbEV4cHJlc3Npb24sYSksZS5jcmVhdGVOb25OdWxsQ2hhaW49ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU5vbk51bGxDaGFpbixhKSxlLnVwZGF0ZU5vbk51bGxDaGFpbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlTm9uTnVsbENoYWluLGEpLGUuY3JlYXRlTWV0YVByb3BlcnR5PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVNZXRhUHJvcGVydHksYSksZS51cGRhdGVNZXRhUHJvcGVydHk9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZU1ldGFQcm9wZXJ0eSxhKSxlLmNyZWF0ZVRlbXBsYXRlU3Bhbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVGVtcGxhdGVTcGFuLGEpLGUudXBkYXRlVGVtcGxhdGVTcGFuPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVUZW1wbGF0ZVNwYW4sYSksZS5jcmVhdGVTZW1pY29sb25DbGFzc0VsZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVNlbWljb2xvbkNsYXNzRWxlbWVudCxhKSxlLmNyZWF0ZUJsb2NrPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVCbG9jayxhKSxlLnVwZGF0ZUJsb2NrPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVCbG9jayxhKSxlLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudCxhKSxlLnVwZGF0ZVZhcmlhYmxlU3RhdGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVWYXJpYWJsZVN0YXRlbWVudCxhKSxlLmNyZWF0ZUVtcHR5U3RhdGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVFbXB0eVN0YXRlbWVudCxhKSxlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQsYSksZS51cGRhdGVFeHByZXNzaW9uU3RhdGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVFeHByZXNzaW9uU3RhdGVtZW50LGEpLGUuY3JlYXRlU3RhdGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50LGEpLGUudXBkYXRlU3RhdGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVFeHByZXNzaW9uU3RhdGVtZW50LGEpLGUuY3JlYXRlSWY9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUlmU3RhdGVtZW50LGEpLGUudXBkYXRlSWY9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUlmU3RhdGVtZW50LGEpLGUuY3JlYXRlRG89ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZURvU3RhdGVtZW50LGEpLGUudXBkYXRlRG89ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZURvU3RhdGVtZW50LGEpLGUuY3JlYXRlV2hpbGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVdoaWxlU3RhdGVtZW50LGEpLGUudXBkYXRlV2hpbGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVdoaWxlU3RhdGVtZW50LGEpLGUuY3JlYXRlRm9yPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVGb3JTdGF0ZW1lbnQsYSksZS51cGRhdGVGb3I9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUZvclN0YXRlbWVudCxhKSxlLmNyZWF0ZUZvckluPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVGb3JJblN0YXRlbWVudCxhKSxlLnVwZGF0ZUZvckluPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVGb3JJblN0YXRlbWVudCxhKSxlLmNyZWF0ZUZvck9mPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVGb3JPZlN0YXRlbWVudCxhKSxlLnVwZGF0ZUZvck9mPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVGb3JPZlN0YXRlbWVudCxhKSxlLmNyZWF0ZUNvbnRpbnVlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVDb250aW51ZVN0YXRlbWVudCxhKSxlLnVwZGF0ZUNvbnRpbnVlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVDb250aW51ZVN0YXRlbWVudCxhKSxlLmNyZWF0ZUJyZWFrPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVCcmVha1N0YXRlbWVudCxhKSxlLnVwZGF0ZUJyZWFrPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVCcmVha1N0YXRlbWVudCxhKSxlLmNyZWF0ZVJldHVybj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUmV0dXJuU3RhdGVtZW50LGEpLGUudXBkYXRlUmV0dXJuPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVSZXR1cm5TdGF0ZW1lbnQsYSksZS5jcmVhdGVXaXRoPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVXaXRoU3RhdGVtZW50LGEpLGUudXBkYXRlV2l0aD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlV2l0aFN0YXRlbWVudCxhKSxlLmNyZWF0ZVN3aXRjaD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlU3dpdGNoU3RhdGVtZW50LGEpLGUudXBkYXRlU3dpdGNoPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVTd2l0Y2hTdGF0ZW1lbnQsYSksZS5jcmVhdGVMYWJlbD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlTGFiZWxlZFN0YXRlbWVudCxhKSxlLnVwZGF0ZUxhYmVsPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVMYWJlbGVkU3RhdGVtZW50LGEpLGUuY3JlYXRlVGhyb3c9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVRocm93U3RhdGVtZW50LGEpLGUudXBkYXRlVGhyb3c9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVRocm93U3RhdGVtZW50LGEpLGUuY3JlYXRlVHJ5PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVUcnlTdGF0ZW1lbnQsYSksZS51cGRhdGVUcnk9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVRyeVN0YXRlbWVudCxhKSxlLmNyZWF0ZURlYnVnZ2VyU3RhdGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVEZWJ1Z2dlclN0YXRlbWVudCxhKSxlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCxhKSxlLnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCxhKSxlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24sYSksZS51cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVGdW5jdGlvbkRlY2xhcmF0aW9uLGEpLGUuY3JlYXRlQ2xhc3NEZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlQ2xhc3NEZWNsYXJhdGlvbixhKSxlLnVwZGF0ZUNsYXNzRGVjbGFyYXRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUNsYXNzRGVjbGFyYXRpb24sYSksZS5jcmVhdGVJbnRlcmZhY2VEZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSW50ZXJmYWNlRGVjbGFyYXRpb24sYSksZS51cGRhdGVJbnRlcmZhY2VEZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlSW50ZXJmYWNlRGVjbGFyYXRpb24sYSksZS5jcmVhdGVUeXBlQWxpYXNEZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlVHlwZUFsaWFzRGVjbGFyYXRpb24sYSksZS51cGRhdGVUeXBlQWxpYXNEZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlVHlwZUFsaWFzRGVjbGFyYXRpb24sYSksZS5jcmVhdGVFbnVtRGVjbGFyYXRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUVudW1EZWNsYXJhdGlvbixhKSxlLnVwZGF0ZUVudW1EZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlRW51bURlY2xhcmF0aW9uLGEpLGUuY3JlYXRlTW9kdWxlRGVjbGFyYXRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU1vZHVsZURlY2xhcmF0aW9uLGEpLGUudXBkYXRlTW9kdWxlRGVjbGFyYXRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZU1vZHVsZURlY2xhcmF0aW9uLGEpLGUuY3JlYXRlTW9kdWxlQmxvY2s9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU1vZHVsZUJsb2NrLGEpLGUudXBkYXRlTW9kdWxlQmxvY2s9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZU1vZHVsZUJsb2NrLGEpLGUuY3JlYXRlQ2FzZUJsb2NrPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVDYXNlQmxvY2ssYSksZS51cGRhdGVDYXNlQmxvY2s9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUNhc2VCbG9jayxhKSxlLmNyZWF0ZU5hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbixhKSxlLnVwZGF0ZU5hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbixhKSxlLmNyZWF0ZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbixhKSxlLnVwZGF0ZUltcG9ydEVxdWFsc0RlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbixhKSxlLmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbixhKSxlLnVwZGF0ZUltcG9ydERlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVJbXBvcnREZWNsYXJhdGlvbixhKSxlLmNyZWF0ZU5hbWVzcGFjZUltcG9ydD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlTmFtZXNwYWNlSW1wb3J0LGEpLGUudXBkYXRlTmFtZXNwYWNlSW1wb3J0PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVOYW1lc3BhY2VJbXBvcnQsYSksZS5jcmVhdGVOYW1lZEltcG9ydHM9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU5hbWVkSW1wb3J0cyxhKSxlLnVwZGF0ZU5hbWVkSW1wb3J0cz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlTmFtZWRJbXBvcnRzLGEpLGUuY3JlYXRlSW1wb3J0U3BlY2lmaWVyPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIsYSksZS51cGRhdGVJbXBvcnRTcGVjaWZpZXI9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUltcG9ydFNwZWNpZmllcixhKSxlLmNyZWF0ZUV4cG9ydEFzc2lnbm1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUV4cG9ydEFzc2lnbm1lbnQsYSksZS51cGRhdGVFeHBvcnRBc3NpZ25tZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVFeHBvcnRBc3NpZ25tZW50LGEpLGUuY3JlYXRlTmFtZWRFeHBvcnRzPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVOYW1lZEV4cG9ydHMsYSksZS51cGRhdGVOYW1lZEV4cG9ydHM9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZU5hbWVkRXhwb3J0cyxhKSxlLmNyZWF0ZUV4cG9ydFNwZWNpZmllcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlRXhwb3J0U3BlY2lmaWVyLGEpLGUudXBkYXRlRXhwb3J0U3BlY2lmaWVyPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVFeHBvcnRTcGVjaWZpZXIsYSksZS5jcmVhdGVFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UsYSksZS51cGRhdGVFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UsYSksZS5jcmVhdGVKU0RvY1R5cGVFeHByZXNzaW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKU0RvY1R5cGVFeHByZXNzaW9uLGEpLGUuY3JlYXRlSlNEb2NUeXBlVGFnPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKU0RvY1R5cGVUYWcsYSksZS5jcmVhdGVKU0RvY1JldHVyblRhZz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSlNEb2NSZXR1cm5UYWcsYSksZS5jcmVhdGVKU0RvY1RoaXNUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVGhpc1RhZyxhKSxlLmNyZWF0ZUpTRG9jQ29tbWVudD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSlNEb2NDb21tZW50LGEpLGUuY3JlYXRlSlNEb2NQYXJhbWV0ZXJUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jUGFyYW1ldGVyVGFnLGEpLGUuY3JlYXRlSlNEb2NDbGFzc1RhZz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSlNEb2NDbGFzc1RhZyxhKSxlLmNyZWF0ZUpTRG9jQXVnbWVudHNUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jQXVnbWVudHNUYWcsYSksZS5jcmVhdGVKU0RvY0VudW1UYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jRW51bVRhZyxhKSxlLmNyZWF0ZUpTRG9jVGVtcGxhdGVUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVGVtcGxhdGVUYWcsYSksZS5jcmVhdGVKU0RvY1R5cGVkZWZUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVHlwZWRlZlRhZyxhKSxlLmNyZWF0ZUpTRG9jQ2FsbGJhY2tUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jQ2FsbGJhY2tUYWcsYSksZS5jcmVhdGVKU0RvY1NpZ25hdHVyZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSlNEb2NTaWduYXR1cmUsYSksZS5jcmVhdGVKU0RvY1Byb3BlcnR5VGFnPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKU0RvY1Byb3BlcnR5VGFnLGEpLGUuY3JlYXRlSlNEb2NUeXBlTGl0ZXJhbD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSlNEb2NUeXBlTGl0ZXJhbCxhKSxlLmNyZWF0ZUpTRG9jSW1wbGVtZW50c1RhZz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSlNEb2NJbXBsZW1lbnRzVGFnLGEpLGUuY3JlYXRlSlNEb2NBdXRob3JUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jQXV0aG9yVGFnLGEpLGUuY3JlYXRlSlNEb2NQdWJsaWNUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jUHVibGljVGFnLGEpLGUuY3JlYXRlSlNEb2NQcml2YXRlVGFnPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKU0RvY1ByaXZhdGVUYWcsYSksZS5jcmVhdGVKU0RvY1Byb3RlY3RlZFRhZz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSlNEb2NQcm90ZWN0ZWRUYWcsYSksZS5jcmVhdGVKU0RvY1JlYWRvbmx5VGFnPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKU0RvY1JlYWRvbmx5VGFnLGEpLGUuY3JlYXRlSlNEb2NUYWc9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVW5rbm93blRhZyxhKSxlLmNyZWF0ZUpzeEVsZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpzeEVsZW1lbnQsYSksZS51cGRhdGVKc3hFbGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVKc3hFbGVtZW50LGEpLGUuY3JlYXRlSnN4U2VsZkNsb3NpbmdFbGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKc3hTZWxmQ2xvc2luZ0VsZW1lbnQsYSksZS51cGRhdGVKc3hTZWxmQ2xvc2luZ0VsZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUpzeFNlbGZDbG9zaW5nRWxlbWVudCxhKSxlLmNyZWF0ZUpzeE9wZW5pbmdFbGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKc3hPcGVuaW5nRWxlbWVudCxhKSxlLnVwZGF0ZUpzeE9wZW5pbmdFbGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVKc3hPcGVuaW5nRWxlbWVudCxhKSxlLmNyZWF0ZUpzeENsb3NpbmdFbGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKc3hDbG9zaW5nRWxlbWVudCxhKSxlLnVwZGF0ZUpzeENsb3NpbmdFbGVtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVKc3hDbG9zaW5nRWxlbWVudCxhKSxlLmNyZWF0ZUpzeEZyYWdtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKc3hGcmFnbWVudCxhKSxlLmNyZWF0ZUpzeFRleHQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpzeFRleHQsYSksZS51cGRhdGVKc3hUZXh0PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVKc3hUZXh0LGEpLGUuY3JlYXRlSnN4T3BlbmluZ0ZyYWdtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKc3hPcGVuaW5nRnJhZ21lbnQsYSksZS5jcmVhdGVKc3hKc3hDbG9zaW5nRnJhZ21lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUpzeEpzeENsb3NpbmdGcmFnbWVudCxhKSxlLnVwZGF0ZUpzeEZyYWdtZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVKc3hGcmFnbWVudCxhKSxlLmNyZWF0ZUpzeEF0dHJpYnV0ZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSnN4QXR0cmlidXRlLGEpLGUudXBkYXRlSnN4QXR0cmlidXRlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVKc3hBdHRyaWJ1dGUsYSksZS5jcmVhdGVKc3hBdHRyaWJ1dGVzPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKc3hBdHRyaWJ1dGVzLGEpLGUudXBkYXRlSnN4QXR0cmlidXRlcz1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlSnN4QXR0cmlidXRlcyxhKSxlLmNyZWF0ZUpzeFNwcmVhZEF0dHJpYnV0ZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSnN4U3ByZWFkQXR0cmlidXRlLGEpLGUudXBkYXRlSnN4U3ByZWFkQXR0cmlidXRlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVKc3hTcHJlYWRBdHRyaWJ1dGUsYSksZS5jcmVhdGVKc3hFeHByZXNzaW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVKc3hFeHByZXNzaW9uLGEpLGUudXBkYXRlSnN4RXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlSnN4RXhwcmVzc2lvbixhKSxlLmNyZWF0ZUNhc2VDbGF1c2U9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUNhc2VDbGF1c2UsYSksZS51cGRhdGVDYXNlQ2xhdXNlPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVDYXNlQ2xhdXNlLGEpLGUuY3JlYXRlRGVmYXVsdENsYXVzZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlRGVmYXVsdENsYXVzZSxhKSxlLnVwZGF0ZURlZmF1bHRDbGF1c2U9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZURlZmF1bHRDbGF1c2UsYSksZS5jcmVhdGVIZXJpdGFnZUNsYXVzZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlSGVyaXRhZ2VDbGF1c2UsYSksZS51cGRhdGVIZXJpdGFnZUNsYXVzZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlSGVyaXRhZ2VDbGF1c2UsYSksZS5jcmVhdGVDYXRjaENsYXVzZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlQ2F0Y2hDbGF1c2UsYSksZS51cGRhdGVDYXRjaENsYXVzZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQ2F0Y2hDbGF1c2UsYSksZS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCxhKSxlLnVwZGF0ZVByb3BlcnR5QXNzaWdubWVudD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlUHJvcGVydHlBc3NpZ25tZW50LGEpLGUuY3JlYXRlU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQsYSksZS51cGRhdGVTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZVNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudCxhKSxlLmNyZWF0ZVNwcmVhZEFzc2lnbm1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVNwcmVhZEFzc2lnbm1lbnQsYSksZS51cGRhdGVTcHJlYWRBc3NpZ25tZW50PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVTcHJlYWRBc3NpZ25tZW50LGEpLGUuY3JlYXRlRW51bU1lbWJlcj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlRW51bU1lbWJlcixhKSxlLnVwZGF0ZUVudW1NZW1iZXI9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUVudW1NZW1iZXIsYSksZS51cGRhdGVTb3VyY2VGaWxlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlU291cmNlRmlsZSxhKSxlLmNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQsYSksZS5jcmVhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb24sYSksZS51cGRhdGVQYXJ0aWFsbHlFbWl0dGVkRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlUGFydGlhbGx5RW1pdHRlZEV4cHJlc3Npb24sYSksZS5jcmVhdGVDb21tYUxpc3Q9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUNvbW1hTGlzdEV4cHJlc3Npb24sYSksZS51cGRhdGVDb21tYUxpc3Q9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LnVwZGF0ZUNvbW1hTGlzdEV4cHJlc3Npb24sYSksZS5jcmVhdGVCdW5kbGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZUJ1bmRsZSxhKSxlLnVwZGF0ZUJ1bmRsZT1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkudXBkYXRlQnVuZGxlLGEpLGUuY3JlYXRlSW1tZWRpYXRlbHlJbnZva2VkRnVuY3Rpb25FeHByZXNzaW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVJbW1lZGlhdGVseUludm9rZWRGdW5jdGlvbkV4cHJlc3Npb24sYSksZS5jcmVhdGVJbW1lZGlhdGVseUludm9rZWRBcnJvd0Z1bmN0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVJbW1lZGlhdGVseUludm9rZWRBcnJvd0Z1bmN0aW9uLGEpLGUuY3JlYXRlVm9pZFplcm89ZS5EZWJ1Zy5kZXByZWNhdGUoZS5mYWN0b3J5LmNyZWF0ZVZvaWRaZXJvLGEpLGUuY3JlYXRlRXhwb3J0RGVmYXVsdD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlRXhwb3J0RGVmYXVsdCxhKSxlLmNyZWF0ZUV4dGVybmFsTW9kdWxlRXhwb3J0PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS5jcmVhdGVFeHRlcm5hbE1vZHVsZUV4cG9ydCxhKSxlLmNyZWF0ZU5hbWVzcGFjZUV4cG9ydD1lLkRlYnVnLmRlcHJlY2F0ZShlLmZhY3RvcnkuY3JlYXRlTmFtZXNwYWNlRXhwb3J0LGEpLGUudXBkYXRlTmFtZXNwYWNlRXhwb3J0PWUuRGVidWcuZGVwcmVjYXRlKGUuZmFjdG9yeS51cGRhdGVOYW1lc3BhY2VFeHBvcnQsYSksZS5jcmVhdGVUb2tlbj1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3KXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVRva2VuKHcpfSxhKSxlLmNyZWF0ZUlkZW50aWZpZXI9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKHcsdm9pZCAwLHZvaWQgMCl9LGEpLGUuY3JlYXRlVGVtcFZhcmlhYmxlPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlVGVtcFZhcmlhYmxlKHcsdm9pZCAwKX0sYSksZS5nZXRHZW5lcmF0ZWROYW1lRm9yTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3KXtyZXR1cm4gZS5mYWN0b3J5LmdldEdlbmVyYXRlZE5hbWVGb3JOb2RlKHcsdm9pZCAwKX0sYSksZS5jcmVhdGVPcHRpbWlzdGljVW5pcXVlTmFtZT1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3KXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVVuaXF1ZU5hbWUodywxNil9LGEpLGUuY3JlYXRlRmlsZUxldmVsVW5pcXVlTmFtZT1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3KXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVVuaXF1ZU5hbWUodyw0OCl9LGEpLGUuY3JlYXRlSW5kZXhTaWduYXR1cmU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUsUSl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVJbmRleFNpZ25hdHVyZSh3LEIsRSxRKX0sYSksZS5jcmVhdGVUeXBlUHJlZGljYXRlTm9kZT1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlVHlwZVByZWRpY2F0ZU5vZGUodm9pZCAwLHcsQil9LGEpLGUudXBkYXRlVHlwZVByZWRpY2F0ZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUpe3JldHVybiBlLmZhY3RvcnkudXBkYXRlVHlwZVByZWRpY2F0ZU5vZGUodyx2b2lkIDAsQixFKX0sYSksZS5jcmVhdGVMaXRlcmFsPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcpe3JldHVybiB0eXBlb2Ygdz09XCJudW1iZXJcIj9lLmZhY3RvcnkuY3JlYXRlTnVtZXJpY0xpdGVyYWwodyk6dHlwZW9mIHc9PVwib2JqZWN0XCImJlwiYmFzZTEwVmFsdWVcImluIHc/ZS5mYWN0b3J5LmNyZWF0ZUJpZ0ludExpdGVyYWwodyk6dHlwZW9mIHc9PVwiYm9vbGVhblwiP3c/ZS5mYWN0b3J5LmNyZWF0ZVRydWUoKTplLmZhY3RvcnkuY3JlYXRlRmFsc2UoKTp0eXBlb2Ygdz09XCJzdHJpbmdcIj9lLmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbCh3LHZvaWQgMCk6ZS5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWxGcm9tTm9kZSh3KX0se3NpbmNlOlwiNC4wXCIsd2FybkFmdGVyOlwiNC4xXCIsbWVzc2FnZTpcIlVzZSBgZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsYCwgYGZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbEZyb21Ob2RlYCwgYGZhY3RvcnkuY3JlYXRlTnVtZXJpY0xpdGVyYWxgLCBgZmFjdG9yeS5jcmVhdGVCaWdJbnRMaXRlcmFsYCwgYGZhY3RvcnkuY3JlYXRlVHJ1ZWAsIGBmYWN0b3J5LmNyZWF0ZUZhbHNlYCwgb3IgdGhlIGZhY3Rvcnkgc3VwcGxpZWQgYnkgeW91ciB0cmFuc2Zvcm1hdGlvbiBjb250ZXh0IGluc3RlYWQuXCJ9KSxlLmNyZWF0ZU1ldGhvZFNpZ25hdHVyZT1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSxRLGxlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZU1ldGhvZFNpZ25hdHVyZSh2b2lkIDAsUSxsZSx3LEIsRSl9LGEpLGUudXBkYXRlTWV0aG9kU2lnbmF0dXJlPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQixFLFEsbGUsTil7cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVNZXRob2RTaWduYXR1cmUodyx3Lm1vZGlmaWVycyxsZSxOLEIsRSxRKX0sYSksZS5jcmVhdGVUeXBlT3BlcmF0b3JOb2RlPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQil7dmFyIEU7cmV0dXJuIEI/RT13OihCPXcsRT0xNDApLGUuZmFjdG9yeS5jcmVhdGVUeXBlT3BlcmF0b3JOb2RlKEUsQil9LGEpLGUuY3JlYXRlVGFnZ2VkVGVtcGxhdGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUpe3ZhciBRO3JldHVybiBFP1E9QjpFPUIsZS5mYWN0b3J5LmNyZWF0ZVRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbih3LFEsRSl9LGEpLGUudXBkYXRlVGFnZ2VkVGVtcGxhdGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUsUSl7dmFyIGxlO3JldHVybiBRP2xlPUU6UT1FLGUuZmFjdG9yeS51cGRhdGVUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24odyxCLGxlLFEpfSxhKSxlLnVwZGF0ZUJpbmFyeT1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSxRKXtyZXR1cm4gUT09PXZvaWQgMCYmKFE9dy5vcGVyYXRvclRva2VuKSx0eXBlb2YgUT09XCJudW1iZXJcIiYmKFE9UT09PXcub3BlcmF0b3JUb2tlbi5raW5kP3cub3BlcmF0b3JUb2tlbjplLmZhY3RvcnkuY3JlYXRlVG9rZW4oUSkpLGUuZmFjdG9yeS51cGRhdGVCaW5hcnlFeHByZXNzaW9uKHcsQixRLEUpfSxhKSxlLmNyZWF0ZUNvbmRpdGlvbmFsPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQixFLFEsbGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09NT9lLmZhY3RvcnkuY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKHcsQixFLFEsbGUpOmFyZ3VtZW50cy5sZW5ndGg9PT0zP2UuZmFjdG9yeS5jcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odyxlLmZhY3RvcnkuY3JlYXRlVG9rZW4oNTcpLEIsZS5mYWN0b3J5LmNyZWF0ZVRva2VuKDU4KSxFKTplLkRlYnVnLmZhaWwoXCJBcmd1bWVudCBjb3VudCBtaXNtYXRjaFwiKX0sYSksZS5jcmVhdGVZaWVsZD1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIpe3ZhciBFO3JldHVybiBCP0U9dzpCPXcsZS5mYWN0b3J5LmNyZWF0ZVlpZWxkRXhwcmVzc2lvbihFLEIpfSxhKSxlLmNyZWF0ZUNsYXNzRXhwcmVzc2lvbj1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSxRLGxlKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUNsYXNzRXhwcmVzc2lvbih2b2lkIDAsdyxCLEUsUSxsZSl9LGEpLGUudXBkYXRlQ2xhc3NFeHByZXNzaW9uPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQixFLFEsbGUsTil7cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVDbGFzc0V4cHJlc3Npb24odyx2b2lkIDAsQixFLFEsbGUsTil9LGEpLGUuY3JlYXRlUHJvcGVydHlTaWduYXR1cmU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUsUSxsZSl7dmFyIE49ZS5mYWN0b3J5LmNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlKHcsQixFLFEpO3JldHVybiBOLmluaXRpYWxpemVyPWxlLE59LGEpLGUudXBkYXRlUHJvcGVydHlTaWduYXR1cmU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUsUSxsZSxOKXt2YXIgcD1lLmZhY3RvcnkudXBkYXRlUHJvcGVydHlTaWduYXR1cmUodyxCLEUsUSxsZSk7cmV0dXJuIHcuaW5pdGlhbGl6ZXIhPT1OJiYocD09PXcmJihwPWUuZmFjdG9yeS5jbG9uZU5vZGUodykpLHAuaW5pdGlhbGl6ZXI9TikscH0sYSksZS5jcmVhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHM9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cyhCLHcpfSxhKSxlLnVwZGF0ZUV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cz1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSl7cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHModyxFLEIpfSxhKSxlLmNyZWF0ZUFycm93RnVuY3Rpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUsUSxsZSxOKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTY/ZS5mYWN0b3J5LmNyZWF0ZUFycm93RnVuY3Rpb24odyxCLEUsUSxsZSxOKTphcmd1bWVudHMubGVuZ3RoPT09NT9lLmZhY3RvcnkuY3JlYXRlQXJyb3dGdW5jdGlvbih3LEIsRSxRLHZvaWQgMCxsZSk6ZS5EZWJ1Zy5mYWlsKFwiQXJndW1lbnQgY291bnQgbWlzbWF0Y2hcIil9LGEpLGUudXBkYXRlQXJyb3dGdW5jdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSxRLGxlLE4scCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT03P2UuZmFjdG9yeS51cGRhdGVBcnJvd0Z1bmN0aW9uKHcsQixFLFEsbGUsTixwKTphcmd1bWVudHMubGVuZ3RoPT09Nj9lLmZhY3RvcnkudXBkYXRlQXJyb3dGdW5jdGlvbih3LEIsRSxRLGxlLHcuZXF1YWxzR3JlYXRlclRoYW5Ub2tlbixOKTplLkRlYnVnLmZhaWwoXCJBcmd1bWVudCBjb3VudCBtaXNtYXRjaFwiKX0sYSksZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQixFLFEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09ND9lLmZhY3RvcnkuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbih3LEIsRSxRKTphcmd1bWVudHMubGVuZ3RoPj0xJiZhcmd1bWVudHMubGVuZ3RoPD0zP2UuZmFjdG9yeS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKHcsdm9pZCAwLEIsRSk6ZS5EZWJ1Zy5mYWlsKFwiQXJndW1lbnQgY291bnQgbWlzbWF0Y2hcIil9LGEpLGUudXBkYXRlVmFyaWFibGVEZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSxRLGxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTU/ZS5mYWN0b3J5LnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb24odyxCLEUsUSxsZSk6YXJndW1lbnRzLmxlbmd0aD09PTQ/ZS5mYWN0b3J5LnVwZGF0ZVZhcmlhYmxlRGVjbGFyYXRpb24odyxCLHcuZXhjbGFtYXRpb25Ub2tlbixFLFEpOmUuRGVidWcuZmFpbChcIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoXCIpfSxhKSxlLmNyZWF0ZUltcG9ydENsYXVzZT1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSl7cmV0dXJuIEU9PT12b2lkIDAmJihFPSExKSxlLmZhY3RvcnkuY3JlYXRlSW1wb3J0Q2xhdXNlKEUsdyxCKX0sYSksZS51cGRhdGVJbXBvcnRDbGF1c2U9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUsUSl7cmV0dXJuIGUuZmFjdG9yeS51cGRhdGVJbXBvcnRDbGF1c2UodyxRLEIsRSl9LGEpLGUuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb249ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUsUSxsZSl7cmV0dXJuIGxlPT09dm9pZCAwJiYobGU9ITEpLGUuZmFjdG9yeS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih3LEIsbGUsRSxRKX0sYSksZS51cGRhdGVFeHBvcnREZWNsYXJhdGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIsRSxRLGxlLE4pe3JldHVybiBlLmZhY3RvcnkudXBkYXRlRXhwb3J0RGVjbGFyYXRpb24odyxCLEUsTixRLGxlLHcuYXNzZXJ0Q2xhdXNlKX0sYSksZS5jcmVhdGVKU0RvY1BhcmFtVGFnPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQixFLFEpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlSlNEb2NQYXJhbWV0ZXJUYWcodm9pZCAwLHcsQixFLCExLFE/ZS5mYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShbZS5mYWN0b3J5LmNyZWF0ZUpTRG9jVGV4dChRKV0pOnZvaWQgMCl9LGEpLGUuY3JlYXRlQ29tbWE9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUNvbW1hKHcsQil9LGEpLGUuY3JlYXRlTGVzc1RoYW49ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUxlc3NUaGFuKHcsQil9LGEpLGUuY3JlYXRlQXNzaWdubWVudD1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3LEIpe3JldHVybiBlLmZhY3RvcnkuY3JlYXRlQXNzaWdubWVudCh3LEIpfSxhKSxlLmNyZWF0ZVN0cmljdEVxdWFsaXR5PWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQil7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVTdHJpY3RFcXVhbGl0eSh3LEIpfSxhKSxlLmNyZWF0ZVN0cmljdEluZXF1YWxpdHk9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZVN0cmljdEluZXF1YWxpdHkodyxCKX0sYSksZS5jcmVhdGVBZGQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUFkZCh3LEIpfSxhKSxlLmNyZWF0ZVN1YnRyYWN0PWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcsQil7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVTdWJ0cmFjdCh3LEIpfSxhKSxlLmNyZWF0ZUxvZ2ljYWxBbmQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUxvZ2ljYWxBbmQodyxCKX0sYSksZS5jcmVhdGVMb2dpY2FsT3I9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCKXtyZXR1cm4gZS5mYWN0b3J5LmNyZWF0ZUxvZ2ljYWxPcih3LEIpfSxhKSxlLmNyZWF0ZVBvc3RmaXhJbmNyZW1lbnQ9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVQb3N0Zml4SW5jcmVtZW50KHcpfSxhKSxlLmNyZWF0ZUxvZ2ljYWxOb3Q9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyl7cmV0dXJuIGUuZmFjdG9yeS5jcmVhdGVMb2dpY2FsTm90KHcpfSxhKSxlLmNyZWF0ZU5vZGU9ZS5EZWJ1Zy5kZXByZWNhdGUoZnVuY3Rpb24odyxCLEUpe3JldHVybiBCPT09dm9pZCAwJiYoQj0wKSxFPT09dm9pZCAwJiYoRT0wKSxlLnNldFRleHRSYW5nZVBvc0VuZCh3PT09MzA1P2UucGFyc2VCYXNlTm9kZUZhY3RvcnkuY3JlYXRlQmFzZVNvdXJjZUZpbGVOb2RlKHcpOnc9PT03OT9lLnBhcnNlQmFzZU5vZGVGYWN0b3J5LmNyZWF0ZUJhc2VJZGVudGlmaWVyTm9kZSh3KTp3PT09ODA/ZS5wYXJzZUJhc2VOb2RlRmFjdG9yeS5jcmVhdGVCYXNlUHJpdmF0ZUlkZW50aWZpZXJOb2RlKHcpOmUuaXNOb2RlS2luZCh3KT9lLnBhcnNlQmFzZU5vZGVGYWN0b3J5LmNyZWF0ZUJhc2VOb2RlKHcpOmUucGFyc2VCYXNlTm9kZUZhY3RvcnkuY3JlYXRlQmFzZVRva2VuTm9kZSh3KSxCLEUpfSx7c2luY2U6XCI0LjBcIix3YXJuQWZ0ZXI6XCI0LjFcIixtZXNzYWdlOlwiVXNlIGFuIGFwcHJvcHJpYXRlIGBmYWN0b3J5YCBtZXRob2QgaW5zdGVhZC5cIn0pLGUuZ2V0TXV0YWJsZUNsb25lPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcpe3ZhciBCPWUuZmFjdG9yeS5jbG9uZU5vZGUodyk7cmV0dXJuIGUuc2V0VGV4dFJhbmdlKEIsdyksZS5zZXRQYXJlbnQoQix3LnBhcmVudCksQn0se3NpbmNlOlwiNC4wXCIsd2FybkFmdGVyOlwiNC4xXCIsbWVzc2FnZTpcIlVzZSBhbiBhcHByb3ByaWF0ZSBgZmFjdG9yeS51cGRhdGUuLi5gIG1ldGhvZCBpbnN0ZWFkLCB1c2UgYHNldENvbW1lbnRSYW5nZWAgb3IgYHNldFNvdXJjZU1hcFJhbmdlYCwgYW5kIGF2b2lkIHNldHRpbmcgYHBhcmVudGAuXCJ9KSxlLmlzVHlwZUFzc2VydGlvbj1lLkRlYnVnLmRlcHJlY2F0ZShmdW5jdGlvbih3KXtyZXR1cm4gdy5raW5kPT09MjExfSx7c2luY2U6XCI0LjBcIix3YXJuQWZ0ZXI6XCI0LjFcIixtZXNzYWdlOlwiVXNlIGBpc1R5cGVBc3NlcnRpb25FeHByZXNzaW9uYCBpbnN0ZWFkLlwifSksZS5pc0lkZW50aWZpZXJPclByaXZhdGVJZGVudGlmaWVyPWUuRGVidWcuZGVwcmVjYXRlKGZ1bmN0aW9uKHcpe3JldHVybiBlLmlzTWVtYmVyTmFtZSh3KX0se3NpbmNlOlwiNC4yXCIsd2FybkFmdGVyOlwiNC4zXCIsbWVzc2FnZTpcIlVzZSBgaXNNZW1iZXJOYW1lYCBpbnN0ZWFkLlwifSl9KShrZXx8KGtlPXt9KSl9fSksJDQ9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9ub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzL2Rpc3QvZ2VuZXJhdGVkL2FzdC1zcGVjLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLkFTVF9UT0tFTl9UWVBFUz1NLkFTVF9OT0RFX1RZUEVTPXZvaWQgMDt2YXIgcmU7KGZ1bmN0aW9uKEtlKXtLZS5BcnJheUV4cHJlc3Npb249XCJBcnJheUV4cHJlc3Npb25cIixLZS5BcnJheVBhdHRlcm49XCJBcnJheVBhdHRlcm5cIixLZS5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbj1cIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIsS2UuQXNzaWdubWVudEV4cHJlc3Npb249XCJBc3NpZ25tZW50RXhwcmVzc2lvblwiLEtlLkFzc2lnbm1lbnRQYXR0ZXJuPVwiQXNzaWdubWVudFBhdHRlcm5cIixLZS5Bd2FpdEV4cHJlc3Npb249XCJBd2FpdEV4cHJlc3Npb25cIixLZS5CaW5hcnlFeHByZXNzaW9uPVwiQmluYXJ5RXhwcmVzc2lvblwiLEtlLkJsb2NrU3RhdGVtZW50PVwiQmxvY2tTdGF0ZW1lbnRcIixLZS5CcmVha1N0YXRlbWVudD1cIkJyZWFrU3RhdGVtZW50XCIsS2UuQ2FsbEV4cHJlc3Npb249XCJDYWxsRXhwcmVzc2lvblwiLEtlLkNhdGNoQ2xhdXNlPVwiQ2F0Y2hDbGF1c2VcIixLZS5DaGFpbkV4cHJlc3Npb249XCJDaGFpbkV4cHJlc3Npb25cIixLZS5DbGFzc0JvZHk9XCJDbGFzc0JvZHlcIixLZS5DbGFzc0RlY2xhcmF0aW9uPVwiQ2xhc3NEZWNsYXJhdGlvblwiLEtlLkNsYXNzRXhwcmVzc2lvbj1cIkNsYXNzRXhwcmVzc2lvblwiLEtlLkNvbmRpdGlvbmFsRXhwcmVzc2lvbj1cIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiLEtlLkNvbnRpbnVlU3RhdGVtZW50PVwiQ29udGludWVTdGF0ZW1lbnRcIixLZS5EZWJ1Z2dlclN0YXRlbWVudD1cIkRlYnVnZ2VyU3RhdGVtZW50XCIsS2UuRGVjb3JhdG9yPVwiRGVjb3JhdG9yXCIsS2UuRG9XaGlsZVN0YXRlbWVudD1cIkRvV2hpbGVTdGF0ZW1lbnRcIixLZS5FbXB0eVN0YXRlbWVudD1cIkVtcHR5U3RhdGVtZW50XCIsS2UuRXhwb3J0QWxsRGVjbGFyYXRpb249XCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiLEtlLkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbj1cIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiLEtlLkV4cG9ydE5hbWVkRGVjbGFyYXRpb249XCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIsS2UuRXhwb3J0U3BlY2lmaWVyPVwiRXhwb3J0U3BlY2lmaWVyXCIsS2UuRXhwcmVzc2lvblN0YXRlbWVudD1cIkV4cHJlc3Npb25TdGF0ZW1lbnRcIixLZS5Gb3JJblN0YXRlbWVudD1cIkZvckluU3RhdGVtZW50XCIsS2UuRm9yT2ZTdGF0ZW1lbnQ9XCJGb3JPZlN0YXRlbWVudFwiLEtlLkZvclN0YXRlbWVudD1cIkZvclN0YXRlbWVudFwiLEtlLkZ1bmN0aW9uRGVjbGFyYXRpb249XCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIsS2UuRnVuY3Rpb25FeHByZXNzaW9uPVwiRnVuY3Rpb25FeHByZXNzaW9uXCIsS2UuSWRlbnRpZmllcj1cIklkZW50aWZpZXJcIixLZS5JZlN0YXRlbWVudD1cIklmU3RhdGVtZW50XCIsS2UuSW1wb3J0QXR0cmlidXRlPVwiSW1wb3J0QXR0cmlidXRlXCIsS2UuSW1wb3J0RGVjbGFyYXRpb249XCJJbXBvcnREZWNsYXJhdGlvblwiLEtlLkltcG9ydERlZmF1bHRTcGVjaWZpZXI9XCJJbXBvcnREZWZhdWx0U3BlY2lmaWVyXCIsS2UuSW1wb3J0RXhwcmVzc2lvbj1cIkltcG9ydEV4cHJlc3Npb25cIixLZS5JbXBvcnROYW1lc3BhY2VTcGVjaWZpZXI9XCJJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXJcIixLZS5JbXBvcnRTcGVjaWZpZXI9XCJJbXBvcnRTcGVjaWZpZXJcIixLZS5KU1hBdHRyaWJ1dGU9XCJKU1hBdHRyaWJ1dGVcIixLZS5KU1hDbG9zaW5nRWxlbWVudD1cIkpTWENsb3NpbmdFbGVtZW50XCIsS2UuSlNYQ2xvc2luZ0ZyYWdtZW50PVwiSlNYQ2xvc2luZ0ZyYWdtZW50XCIsS2UuSlNYRWxlbWVudD1cIkpTWEVsZW1lbnRcIixLZS5KU1hFbXB0eUV4cHJlc3Npb249XCJKU1hFbXB0eUV4cHJlc3Npb25cIixLZS5KU1hFeHByZXNzaW9uQ29udGFpbmVyPVwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lclwiLEtlLkpTWEZyYWdtZW50PVwiSlNYRnJhZ21lbnRcIixLZS5KU1hJZGVudGlmaWVyPVwiSlNYSWRlbnRpZmllclwiLEtlLkpTWE1lbWJlckV4cHJlc3Npb249XCJKU1hNZW1iZXJFeHByZXNzaW9uXCIsS2UuSlNYTmFtZXNwYWNlZE5hbWU9XCJKU1hOYW1lc3BhY2VkTmFtZVwiLEtlLkpTWE9wZW5pbmdFbGVtZW50PVwiSlNYT3BlbmluZ0VsZW1lbnRcIixLZS5KU1hPcGVuaW5nRnJhZ21lbnQ9XCJKU1hPcGVuaW5nRnJhZ21lbnRcIixLZS5KU1hTcHJlYWRBdHRyaWJ1dGU9XCJKU1hTcHJlYWRBdHRyaWJ1dGVcIixLZS5KU1hTcHJlYWRDaGlsZD1cIkpTWFNwcmVhZENoaWxkXCIsS2UuSlNYVGV4dD1cIkpTWFRleHRcIixLZS5MYWJlbGVkU3RhdGVtZW50PVwiTGFiZWxlZFN0YXRlbWVudFwiLEtlLkxpdGVyYWw9XCJMaXRlcmFsXCIsS2UuTG9naWNhbEV4cHJlc3Npb249XCJMb2dpY2FsRXhwcmVzc2lvblwiLEtlLk1lbWJlckV4cHJlc3Npb249XCJNZW1iZXJFeHByZXNzaW9uXCIsS2UuTWV0YVByb3BlcnR5PVwiTWV0YVByb3BlcnR5XCIsS2UuTWV0aG9kRGVmaW5pdGlvbj1cIk1ldGhvZERlZmluaXRpb25cIixLZS5OZXdFeHByZXNzaW9uPVwiTmV3RXhwcmVzc2lvblwiLEtlLk9iamVjdEV4cHJlc3Npb249XCJPYmplY3RFeHByZXNzaW9uXCIsS2UuT2JqZWN0UGF0dGVybj1cIk9iamVjdFBhdHRlcm5cIixLZS5Qcml2YXRlSWRlbnRpZmllcj1cIlByaXZhdGVJZGVudGlmaWVyXCIsS2UuUHJvZ3JhbT1cIlByb2dyYW1cIixLZS5Qcm9wZXJ0eT1cIlByb3BlcnR5XCIsS2UuUHJvcGVydHlEZWZpbml0aW9uPVwiUHJvcGVydHlEZWZpbml0aW9uXCIsS2UuUmVzdEVsZW1lbnQ9XCJSZXN0RWxlbWVudFwiLEtlLlJldHVyblN0YXRlbWVudD1cIlJldHVyblN0YXRlbWVudFwiLEtlLlNlcXVlbmNlRXhwcmVzc2lvbj1cIlNlcXVlbmNlRXhwcmVzc2lvblwiLEtlLlNwcmVhZEVsZW1lbnQ9XCJTcHJlYWRFbGVtZW50XCIsS2UuU3RhdGljQmxvY2s9XCJTdGF0aWNCbG9ja1wiLEtlLlN1cGVyPVwiU3VwZXJcIixLZS5Td2l0Y2hDYXNlPVwiU3dpdGNoQ2FzZVwiLEtlLlN3aXRjaFN0YXRlbWVudD1cIlN3aXRjaFN0YXRlbWVudFwiLEtlLlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbj1cIlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvblwiLEtlLlRlbXBsYXRlRWxlbWVudD1cIlRlbXBsYXRlRWxlbWVudFwiLEtlLlRlbXBsYXRlTGl0ZXJhbD1cIlRlbXBsYXRlTGl0ZXJhbFwiLEtlLlRoaXNFeHByZXNzaW9uPVwiVGhpc0V4cHJlc3Npb25cIixLZS5UaHJvd1N0YXRlbWVudD1cIlRocm93U3RhdGVtZW50XCIsS2UuVHJ5U3RhdGVtZW50PVwiVHJ5U3RhdGVtZW50XCIsS2UuVW5hcnlFeHByZXNzaW9uPVwiVW5hcnlFeHByZXNzaW9uXCIsS2UuVXBkYXRlRXhwcmVzc2lvbj1cIlVwZGF0ZUV4cHJlc3Npb25cIixLZS5WYXJpYWJsZURlY2xhcmF0aW9uPVwiVmFyaWFibGVEZWNsYXJhdGlvblwiLEtlLlZhcmlhYmxlRGVjbGFyYXRvcj1cIlZhcmlhYmxlRGVjbGFyYXRvclwiLEtlLldoaWxlU3RhdGVtZW50PVwiV2hpbGVTdGF0ZW1lbnRcIixLZS5XaXRoU3RhdGVtZW50PVwiV2l0aFN0YXRlbWVudFwiLEtlLllpZWxkRXhwcmVzc2lvbj1cIllpZWxkRXhwcmVzc2lvblwiLEtlLlRTQWJzdHJhY3RLZXl3b3JkPVwiVFNBYnN0cmFjdEtleXdvcmRcIixLZS5UU0Fic3RyYWN0TWV0aG9kRGVmaW5pdGlvbj1cIlRTQWJzdHJhY3RNZXRob2REZWZpbml0aW9uXCIsS2UuVFNBYnN0cmFjdFByb3BlcnR5RGVmaW5pdGlvbj1cIlRTQWJzdHJhY3RQcm9wZXJ0eURlZmluaXRpb25cIixLZS5UU0FueUtleXdvcmQ9XCJUU0FueUtleXdvcmRcIixLZS5UU0FycmF5VHlwZT1cIlRTQXJyYXlUeXBlXCIsS2UuVFNBc0V4cHJlc3Npb249XCJUU0FzRXhwcmVzc2lvblwiLEtlLlRTQXN5bmNLZXl3b3JkPVwiVFNBc3luY0tleXdvcmRcIixLZS5UU0JpZ0ludEtleXdvcmQ9XCJUU0JpZ0ludEtleXdvcmRcIixLZS5UU0Jvb2xlYW5LZXl3b3JkPVwiVFNCb29sZWFuS2V5d29yZFwiLEtlLlRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uPVwiVFNDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb25cIixLZS5UU0NsYXNzSW1wbGVtZW50cz1cIlRTQ2xhc3NJbXBsZW1lbnRzXCIsS2UuVFNDb25kaXRpb25hbFR5cGU9XCJUU0NvbmRpdGlvbmFsVHlwZVwiLEtlLlRTQ29uc3RydWN0b3JUeXBlPVwiVFNDb25zdHJ1Y3RvclR5cGVcIixLZS5UU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uPVwiVFNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsYXJhdGlvblwiLEtlLlRTRGVjbGFyZUZ1bmN0aW9uPVwiVFNEZWNsYXJlRnVuY3Rpb25cIixLZS5UU0RlY2xhcmVLZXl3b3JkPVwiVFNEZWNsYXJlS2V5d29yZFwiLEtlLlRTRW1wdHlCb2R5RnVuY3Rpb25FeHByZXNzaW9uPVwiVFNFbXB0eUJvZHlGdW5jdGlvbkV4cHJlc3Npb25cIixLZS5UU0VudW1EZWNsYXJhdGlvbj1cIlRTRW51bURlY2xhcmF0aW9uXCIsS2UuVFNFbnVtTWVtYmVyPVwiVFNFbnVtTWVtYmVyXCIsS2UuVFNFeHBvcnRBc3NpZ25tZW50PVwiVFNFeHBvcnRBc3NpZ25tZW50XCIsS2UuVFNFeHBvcnRLZXl3b3JkPVwiVFNFeHBvcnRLZXl3b3JkXCIsS2UuVFNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZT1cIlRTRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2VcIixLZS5UU0Z1bmN0aW9uVHlwZT1cIlRTRnVuY3Rpb25UeXBlXCIsS2UuVFNJbnN0YW50aWF0aW9uRXhwcmVzc2lvbj1cIlRTSW5zdGFudGlhdGlvbkV4cHJlc3Npb25cIixLZS5UU0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uPVwiVFNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvblwiLEtlLlRTSW1wb3J0VHlwZT1cIlRTSW1wb3J0VHlwZVwiLEtlLlRTSW5kZXhlZEFjY2Vzc1R5cGU9XCJUU0luZGV4ZWRBY2Nlc3NUeXBlXCIsS2UuVFNJbmRleFNpZ25hdHVyZT1cIlRTSW5kZXhTaWduYXR1cmVcIixLZS5UU0luZmVyVHlwZT1cIlRTSW5mZXJUeXBlXCIsS2UuVFNJbnRlcmZhY2VCb2R5PVwiVFNJbnRlcmZhY2VCb2R5XCIsS2UuVFNJbnRlcmZhY2VEZWNsYXJhdGlvbj1cIlRTSW50ZXJmYWNlRGVjbGFyYXRpb25cIixLZS5UU0ludGVyZmFjZUhlcml0YWdlPVwiVFNJbnRlcmZhY2VIZXJpdGFnZVwiLEtlLlRTSW50ZXJzZWN0aW9uVHlwZT1cIlRTSW50ZXJzZWN0aW9uVHlwZVwiLEtlLlRTSW50cmluc2ljS2V5d29yZD1cIlRTSW50cmluc2ljS2V5d29yZFwiLEtlLlRTTGl0ZXJhbFR5cGU9XCJUU0xpdGVyYWxUeXBlXCIsS2UuVFNNYXBwZWRUeXBlPVwiVFNNYXBwZWRUeXBlXCIsS2UuVFNNZXRob2RTaWduYXR1cmU9XCJUU01ldGhvZFNpZ25hdHVyZVwiLEtlLlRTTW9kdWxlQmxvY2s9XCJUU01vZHVsZUJsb2NrXCIsS2UuVFNNb2R1bGVEZWNsYXJhdGlvbj1cIlRTTW9kdWxlRGVjbGFyYXRpb25cIixLZS5UU05hbWVkVHVwbGVNZW1iZXI9XCJUU05hbWVkVHVwbGVNZW1iZXJcIixLZS5UU05hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uPVwiVFNOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvblwiLEtlLlRTTmV2ZXJLZXl3b3JkPVwiVFNOZXZlcktleXdvcmRcIixLZS5UU05vbk51bGxFeHByZXNzaW9uPVwiVFNOb25OdWxsRXhwcmVzc2lvblwiLEtlLlRTTnVsbEtleXdvcmQ9XCJUU051bGxLZXl3b3JkXCIsS2UuVFNOdW1iZXJLZXl3b3JkPVwiVFNOdW1iZXJLZXl3b3JkXCIsS2UuVFNPYmplY3RLZXl3b3JkPVwiVFNPYmplY3RLZXl3b3JkXCIsS2UuVFNPcHRpb25hbFR5cGU9XCJUU09wdGlvbmFsVHlwZVwiLEtlLlRTUGFyYW1ldGVyUHJvcGVydHk9XCJUU1BhcmFtZXRlclByb3BlcnR5XCIsS2UuVFNQcml2YXRlS2V5d29yZD1cIlRTUHJpdmF0ZUtleXdvcmRcIixLZS5UU1Byb3BlcnR5U2lnbmF0dXJlPVwiVFNQcm9wZXJ0eVNpZ25hdHVyZVwiLEtlLlRTUHJvdGVjdGVkS2V5d29yZD1cIlRTUHJvdGVjdGVkS2V5d29yZFwiLEtlLlRTUHVibGljS2V5d29yZD1cIlRTUHVibGljS2V5d29yZFwiLEtlLlRTUXVhbGlmaWVkTmFtZT1cIlRTUXVhbGlmaWVkTmFtZVwiLEtlLlRTUmVhZG9ubHlLZXl3b3JkPVwiVFNSZWFkb25seUtleXdvcmRcIixLZS5UU1Jlc3RUeXBlPVwiVFNSZXN0VHlwZVwiLEtlLlRTU3RhdGljS2V5d29yZD1cIlRTU3RhdGljS2V5d29yZFwiLEtlLlRTU3RyaW5nS2V5d29yZD1cIlRTU3RyaW5nS2V5d29yZFwiLEtlLlRTU3ltYm9sS2V5d29yZD1cIlRTU3ltYm9sS2V5d29yZFwiLEtlLlRTVGVtcGxhdGVMaXRlcmFsVHlwZT1cIlRTVGVtcGxhdGVMaXRlcmFsVHlwZVwiLEtlLlRTVGhpc1R5cGU9XCJUU1RoaXNUeXBlXCIsS2UuVFNUdXBsZVR5cGU9XCJUU1R1cGxlVHlwZVwiLEtlLlRTVHlwZUFsaWFzRGVjbGFyYXRpb249XCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCIsS2UuVFNUeXBlQW5ub3RhdGlvbj1cIlRTVHlwZUFubm90YXRpb25cIixLZS5UU1R5cGVBc3NlcnRpb249XCJUU1R5cGVBc3NlcnRpb25cIixLZS5UU1R5cGVMaXRlcmFsPVwiVFNUeXBlTGl0ZXJhbFwiLEtlLlRTVHlwZU9wZXJhdG9yPVwiVFNUeXBlT3BlcmF0b3JcIixLZS5UU1R5cGVQYXJhbWV0ZXI9XCJUU1R5cGVQYXJhbWV0ZXJcIixLZS5UU1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj1cIlRTVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uXCIsS2UuVFNUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbj1cIlRTVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb25cIixLZS5UU1R5cGVQcmVkaWNhdGU9XCJUU1R5cGVQcmVkaWNhdGVcIixLZS5UU1R5cGVRdWVyeT1cIlRTVHlwZVF1ZXJ5XCIsS2UuVFNUeXBlUmVmZXJlbmNlPVwiVFNUeXBlUmVmZXJlbmNlXCIsS2UuVFNVbmRlZmluZWRLZXl3b3JkPVwiVFNVbmRlZmluZWRLZXl3b3JkXCIsS2UuVFNVbmlvblR5cGU9XCJUU1VuaW9uVHlwZVwiLEtlLlRTVW5rbm93bktleXdvcmQ9XCJUU1Vua25vd25LZXl3b3JkXCIsS2UuVFNWb2lkS2V5d29yZD1cIlRTVm9pZEtleXdvcmRcIn0pKHJlPU0uQVNUX05PREVfVFlQRVN8fChNLkFTVF9OT0RFX1RZUEVTPXt9KSk7dmFyIFZlOyhmdW5jdGlvbihLZSl7S2UuQm9vbGVhbj1cIkJvb2xlYW5cIixLZS5JZGVudGlmaWVyPVwiSWRlbnRpZmllclwiLEtlLkpTWElkZW50aWZpZXI9XCJKU1hJZGVudGlmaWVyXCIsS2UuSlNYVGV4dD1cIkpTWFRleHRcIixLZS5LZXl3b3JkPVwiS2V5d29yZFwiLEtlLk51bGw9XCJOdWxsXCIsS2UuTnVtZXJpYz1cIk51bWVyaWNcIixLZS5QdW5jdHVhdG9yPVwiUHVuY3R1YXRvclwiLEtlLlJlZ3VsYXJFeHByZXNzaW9uPVwiUmVndWxhckV4cHJlc3Npb25cIixLZS5TdHJpbmc9XCJTdHJpbmdcIixLZS5UZW1wbGF0ZT1cIlRlbXBsYXRlXCIsS2UuQmxvY2s9XCJCbG9ja1wiLEtlLkxpbmU9XCJMaW5lXCJ9KShWZT1NLkFTVF9UT0tFTl9UWVBFU3x8KE0uQVNUX1RPS0VOX1RZUEVTPXt9KSl9fSksRFU9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9ub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzL2Rpc3QvbGliLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX19KSxiVT1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL25vZGVfbW9kdWxlcy9AdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXMvZGlzdC9wYXJzZXItb3B0aW9ucy5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9fSksU1U9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9ub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzL2Rpc3QvdHMtZXN0cmVlLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG9pLGtyLHByLExyKXtMcj09PXZvaWQgMCYmKExyPXByKTt2YXIgYXI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihrcixwcik7KCFhcnx8KFwiZ2V0XCJpbiBhcj8ha3IuX19lc01vZHVsZTphci53cml0YWJsZXx8YXIuY29uZmlndXJhYmxlKSkmJihhcj17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga3JbcHJdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvaSxMcixhcil9OmZ1bmN0aW9uKG9pLGtyLHByLExyKXtMcj09PXZvaWQgMCYmKExyPXByKSxvaVtMcl09a3JbcHJdfSksVmU9TSYmTS5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG9pLGtyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkob2ksXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6a3J9KX06ZnVuY3Rpb24ob2ksa3Ipe29pLmRlZmF1bHQ9a3J9KSxLZT1NJiZNLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24ob2kpe2lmKG9pJiZvaS5fX2VzTW9kdWxlKXJldHVybiBvaTt2YXIga3I9e307aWYob2khPW51bGwpZm9yKHZhciBwciBpbiBvaSlwciE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2kscHIpJiZyZShrcixvaSxwcik7cmV0dXJuIFZlKGtyLG9pKSxrcn07T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS5UU0VTVHJlZT12b2lkIDAsTS5UU0VTVHJlZT1LZSgkNCgpKX19KSxaND1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL25vZGVfbW9kdWxlcy9AdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXMvZGlzdC9pbmRleC5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIHJlPU0mJk0uX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihvaSxrcixwcixMcil7THI9PT12b2lkIDAmJihMcj1wcik7dmFyIGFyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioa3IscHIpOyghYXJ8fChcImdldFwiaW4gYXI/IWtyLl9fZXNNb2R1bGU6YXIud3JpdGFibGV8fGFyLmNvbmZpZ3VyYWJsZSkpJiYoYXI9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGtyW3ByXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkob2ksTHIsYXIpfTpmdW5jdGlvbihvaSxrcixwcixMcil7THI9PT12b2lkIDAmJihMcj1wciksb2lbTHJdPWtyW3ByXX0pLFZlPU0mJk0uX19leHBvcnRTdGFyfHxmdW5jdGlvbihvaSxrcil7Zm9yKHZhciBwciBpbiBvaSlwciE9PVwiZGVmYXVsdFwiJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGtyLHByKSYmcmUoa3Isb2kscHIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLkFTVF9UT0tFTl9UWVBFUz1NLkFTVF9OT0RFX1RZUEVTPXZvaWQgMDt2YXIgS2U9JDQoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIkFTVF9OT0RFX1RZUEVTXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtlLkFTVF9OT0RFX1RZUEVTfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiQVNUX1RPS0VOX1RZUEVTXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtlLkFTVF9UT0tFTl9UWVBFU319KSxWZShEVSgpLE0pLFZlKGJVKCksTSksVmUoU1UoKSxNKX19KSxUVT1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL2Rpc3QvdHMtZXN0cmVlL3RzLW5vZGVzLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX19KSx4VT1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL2Rpc3QvdHMtZXN0cmVlL2VzdHJlZS10by10cy1ub2RlLXR5cGVzLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcmU9WjQoKX19KSxrMT1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL2Rpc3QvdHMtZXN0cmVlL2luZGV4LmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG9pLGtyLHByLExyKXtMcj09PXZvaWQgMCYmKExyPXByKTt2YXIgYXI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihrcixwcik7KCFhcnx8KFwiZ2V0XCJpbiBhcj8ha3IuX19lc01vZHVsZTphci53cml0YWJsZXx8YXIuY29uZmlndXJhYmxlKSkmJihhcj17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga3JbcHJdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvaSxMcixhcil9OmZ1bmN0aW9uKG9pLGtyLHByLExyKXtMcj09PXZvaWQgMCYmKExyPXByKSxvaVtMcl09a3JbcHJdfSksVmU9TSYmTS5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKG9pLGtyKXtmb3IodmFyIHByIGluIG9pKXByIT09XCJkZWZhdWx0XCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoa3IscHIpJiZyZShrcixvaSxwcil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uVFNFU1RyZWU9TS5BU1RfVE9LRU5fVFlQRVM9TS5BU1RfTk9ERV9UWVBFUz12b2lkIDA7dmFyIEtlPVo0KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJBU1RfTk9ERV9UWVBFU1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBLZS5BU1RfTk9ERV9UWVBFU319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIkFTVF9UT0tFTl9UWVBFU1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBLZS5BU1RfVE9LRU5fVFlQRVN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJUU0VTVHJlZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBLZS5UU0VTVHJlZX19KSxWZShUVSgpLE0pLFZlKHhVKCksTSl9fSksRVU9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2pzeC94aHRtbC1lbnRpdGllcy5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS54aHRtbEVudGl0aWVzPXZvaWQgMCxNLnhodG1sRW50aXRpZXM9e3F1b3Q6J1wiJyxhbXA6XCImXCIsYXBvczpcIidcIixsdDpcIjxcIixndDpcIj5cIixuYnNwOlwiXFx4QTBcIixpZXhjbDpcIlxceEExXCIsY2VudDpcIlxceEEyXCIscG91bmQ6XCJcXHhBM1wiLGN1cnJlbjpcIlxceEE0XCIseWVuOlwiXFx4QTVcIixicnZiYXI6XCJcXHhBNlwiLHNlY3Q6XCJcXHhBN1wiLHVtbDpcIlxceEE4XCIsY29weTpcIlxceEE5XCIsb3JkZjpcIlxceEFBXCIsbGFxdW86XCJcXHhBQlwiLG5vdDpcIlxceEFDXCIsc2h5OlwiXFx4QURcIixyZWc6XCJcXHhBRVwiLG1hY3I6XCJcXHhBRlwiLGRlZzpcIlxceEIwXCIscGx1c21uOlwiXFx4QjFcIixzdXAyOlwiXFx4QjJcIixzdXAzOlwiXFx4QjNcIixhY3V0ZTpcIlxceEI0XCIsbWljcm86XCJcXHhCNVwiLHBhcmE6XCJcXHhCNlwiLG1pZGRvdDpcIlxceEI3XCIsY2VkaWw6XCJcXHhCOFwiLHN1cDE6XCJcXHhCOVwiLG9yZG06XCJcXHhCQVwiLHJhcXVvOlwiXFx4QkJcIixmcmFjMTQ6XCJcXHhCQ1wiLGZyYWMxMjpcIlxceEJEXCIsZnJhYzM0OlwiXFx4QkVcIixpcXVlc3Q6XCJcXHhCRlwiLEFncmF2ZTpcIlxceEMwXCIsQWFjdXRlOlwiXFx4QzFcIixBY2lyYzpcIlxceEMyXCIsQXRpbGRlOlwiXFx4QzNcIixBdW1sOlwiXFx4QzRcIixBcmluZzpcIlxceEM1XCIsQUVsaWc6XCJcXHhDNlwiLENjZWRpbDpcIlxceEM3XCIsRWdyYXZlOlwiXFx4QzhcIixFYWN1dGU6XCJcXHhDOVwiLEVjaXJjOlwiXFx4Q0FcIixFdW1sOlwiXFx4Q0JcIixJZ3JhdmU6XCJcXHhDQ1wiLElhY3V0ZTpcIlxceENEXCIsSWNpcmM6XCJcXHhDRVwiLEl1bWw6XCJcXHhDRlwiLEVUSDpcIlxceEQwXCIsTnRpbGRlOlwiXFx4RDFcIixPZ3JhdmU6XCJcXHhEMlwiLE9hY3V0ZTpcIlxceEQzXCIsT2NpcmM6XCJcXHhENFwiLE90aWxkZTpcIlxceEQ1XCIsT3VtbDpcIlxceEQ2XCIsdGltZXM6XCJcXHhEN1wiLE9zbGFzaDpcIlxceEQ4XCIsVWdyYXZlOlwiXFx4RDlcIixVYWN1dGU6XCJcXHhEQVwiLFVjaXJjOlwiXFx4REJcIixVdW1sOlwiXFx4RENcIixZYWN1dGU6XCJcXHhERFwiLFRIT1JOOlwiXFx4REVcIixzemxpZzpcIlxceERGXCIsYWdyYXZlOlwiXFx4RTBcIixhYWN1dGU6XCJcXHhFMVwiLGFjaXJjOlwiXFx4RTJcIixhdGlsZGU6XCJcXHhFM1wiLGF1bWw6XCJcXHhFNFwiLGFyaW5nOlwiXFx4RTVcIixhZWxpZzpcIlxceEU2XCIsY2NlZGlsOlwiXFx4RTdcIixlZ3JhdmU6XCJcXHhFOFwiLGVhY3V0ZTpcIlxceEU5XCIsZWNpcmM6XCJcXHhFQVwiLGV1bWw6XCJcXHhFQlwiLGlncmF2ZTpcIlxceEVDXCIsaWFjdXRlOlwiXFx4RURcIixpY2lyYzpcIlxceEVFXCIsaXVtbDpcIlxceEVGXCIsZXRoOlwiXFx4RjBcIixudGlsZGU6XCJcXHhGMVwiLG9ncmF2ZTpcIlxceEYyXCIsb2FjdXRlOlwiXFx4RjNcIixvY2lyYzpcIlxceEY0XCIsb3RpbGRlOlwiXFx4RjVcIixvdW1sOlwiXFx4RjZcIixkaXZpZGU6XCJcXHhGN1wiLG9zbGFzaDpcIlxceEY4XCIsdWdyYXZlOlwiXFx4RjlcIix1YWN1dGU6XCJcXHhGQVwiLHVjaXJjOlwiXFx4RkJcIix1dW1sOlwiXFx4RkNcIix5YWN1dGU6XCJcXHhGRFwiLHRob3JuOlwiXFx4RkVcIix5dW1sOlwiXFx4RkZcIixPRWxpZzpcIlxcdTAxNTJcIixvZWxpZzpcIlxcdTAxNTNcIixTY2Fyb246XCJcXHUwMTYwXCIsc2Nhcm9uOlwiXFx1MDE2MVwiLFl1bWw6XCJcXHUwMTc4XCIsZm5vZjpcIlxcdTAxOTJcIixjaXJjOlwiXFx1MDJDNlwiLHRpbGRlOlwiXFx1MDJEQ1wiLEFscGhhOlwiXFx1MDM5MVwiLEJldGE6XCJcXHUwMzkyXCIsR2FtbWE6XCJcXHUwMzkzXCIsRGVsdGE6XCJcXHUwMzk0XCIsRXBzaWxvbjpcIlxcdTAzOTVcIixaZXRhOlwiXFx1MDM5NlwiLEV0YTpcIlxcdTAzOTdcIixUaGV0YTpcIlxcdTAzOThcIixJb3RhOlwiXFx1MDM5OVwiLEthcHBhOlwiXFx1MDM5QVwiLExhbWJkYTpcIlxcdTAzOUJcIixNdTpcIlxcdTAzOUNcIixOdTpcIlxcdTAzOURcIixYaTpcIlxcdTAzOUVcIixPbWljcm9uOlwiXFx1MDM5RlwiLFBpOlwiXFx1MDNBMFwiLFJobzpcIlxcdTAzQTFcIixTaWdtYTpcIlxcdTAzQTNcIixUYXU6XCJcXHUwM0E0XCIsVXBzaWxvbjpcIlxcdTAzQTVcIixQaGk6XCJcXHUwM0E2XCIsQ2hpOlwiXFx1MDNBN1wiLFBzaTpcIlxcdTAzQThcIixPbWVnYTpcIlxcdTAzQTlcIixhbHBoYTpcIlxcdTAzQjFcIixiZXRhOlwiXFx1MDNCMlwiLGdhbW1hOlwiXFx1MDNCM1wiLGRlbHRhOlwiXFx1MDNCNFwiLGVwc2lsb246XCJcXHUwM0I1XCIsemV0YTpcIlxcdTAzQjZcIixldGE6XCJcXHUwM0I3XCIsdGhldGE6XCJcXHUwM0I4XCIsaW90YTpcIlxcdTAzQjlcIixrYXBwYTpcIlxcdTAzQkFcIixsYW1iZGE6XCJcXHUwM0JCXCIsbXU6XCJcXHUwM0JDXCIsbnU6XCJcXHUwM0JEXCIseGk6XCJcXHUwM0JFXCIsb21pY3JvbjpcIlxcdTAzQkZcIixwaTpcIlxcdTAzQzBcIixyaG86XCJcXHUwM0MxXCIsc2lnbWFmOlwiXFx1MDNDMlwiLHNpZ21hOlwiXFx1MDNDM1wiLHRhdTpcIlxcdTAzQzRcIix1cHNpbG9uOlwiXFx1MDNDNVwiLHBoaTpcIlxcdTAzQzZcIixjaGk6XCJcXHUwM0M3XCIscHNpOlwiXFx1MDNDOFwiLG9tZWdhOlwiXFx1MDNDOVwiLHRoZXRhc3ltOlwiXFx1MDNEMVwiLHVwc2loOlwiXFx1MDNEMlwiLHBpdjpcIlxcdTAzRDZcIixlbnNwOlwiXFx1MjAwMlwiLGVtc3A6XCJcXHUyMDAzXCIsdGhpbnNwOlwiXFx1MjAwOVwiLHp3bmo6XCJcXHUyMDBDXCIsendqOlwiXFx1MjAwRFwiLGxybTpcIlxcdTIwMEVcIixybG06XCJcXHUyMDBGXCIsbmRhc2g6XCJcXHUyMDEzXCIsbWRhc2g6XCJcXHUyMDE0XCIsbHNxdW86XCJcXHUyMDE4XCIscnNxdW86XCJcXHUyMDE5XCIsc2JxdW86XCJcXHUyMDFBXCIsbGRxdW86XCJcXHUyMDFDXCIscmRxdW86XCJcXHUyMDFEXCIsYmRxdW86XCJcXHUyMDFFXCIsZGFnZ2VyOlwiXFx1MjAyMFwiLERhZ2dlcjpcIlxcdTIwMjFcIixidWxsOlwiXFx1MjAyMlwiLGhlbGxpcDpcIlxcdTIwMjZcIixwZXJtaWw6XCJcXHUyMDMwXCIscHJpbWU6XCJcXHUyMDMyXCIsUHJpbWU6XCJcXHUyMDMzXCIsbHNhcXVvOlwiXFx1MjAzOVwiLHJzYXF1bzpcIlxcdTIwM0FcIixvbGluZTpcIlxcdTIwM0VcIixmcmFzbDpcIlxcdTIwNDRcIixldXJvOlwiXFx1MjBBQ1wiLGltYWdlOlwiXFx1MjExMVwiLHdlaWVycDpcIlxcdTIxMThcIixyZWFsOlwiXFx1MjExQ1wiLHRyYWRlOlwiXFx1MjEyMlwiLGFsZWZzeW06XCJcXHUyMTM1XCIsbGFycjpcIlxcdTIxOTBcIix1YXJyOlwiXFx1MjE5MVwiLHJhcnI6XCJcXHUyMTkyXCIsZGFycjpcIlxcdTIxOTNcIixoYXJyOlwiXFx1MjE5NFwiLGNyYXJyOlwiXFx1MjFCNVwiLGxBcnI6XCJcXHUyMUQwXCIsdUFycjpcIlxcdTIxRDFcIixyQXJyOlwiXFx1MjFEMlwiLGRBcnI6XCJcXHUyMUQzXCIsaEFycjpcIlxcdTIxRDRcIixmb3JhbGw6XCJcXHUyMjAwXCIscGFydDpcIlxcdTIyMDJcIixleGlzdDpcIlxcdTIyMDNcIixlbXB0eTpcIlxcdTIyMDVcIixuYWJsYTpcIlxcdTIyMDdcIixpc2luOlwiXFx1MjIwOFwiLG5vdGluOlwiXFx1MjIwOVwiLG5pOlwiXFx1MjIwQlwiLHByb2Q6XCJcXHUyMjBGXCIsc3VtOlwiXFx1MjIxMVwiLG1pbnVzOlwiXFx1MjIxMlwiLGxvd2FzdDpcIlxcdTIyMTdcIixyYWRpYzpcIlxcdTIyMUFcIixwcm9wOlwiXFx1MjIxRFwiLGluZmluOlwiXFx1MjIxRVwiLGFuZzpcIlxcdTIyMjBcIixhbmQ6XCJcXHUyMjI3XCIsb3I6XCJcXHUyMjI4XCIsY2FwOlwiXFx1MjIyOVwiLGN1cDpcIlxcdTIyMkFcIixpbnQ6XCJcXHUyMjJCXCIsdGhlcmU0OlwiXFx1MjIzNFwiLHNpbTpcIlxcdTIyM0NcIixjb25nOlwiXFx1MjI0NVwiLGFzeW1wOlwiXFx1MjI0OFwiLG5lOlwiXFx1MjI2MFwiLGVxdWl2OlwiXFx1MjI2MVwiLGxlOlwiXFx1MjI2NFwiLGdlOlwiXFx1MjI2NVwiLHN1YjpcIlxcdTIyODJcIixzdXA6XCJcXHUyMjgzXCIsbnN1YjpcIlxcdTIyODRcIixzdWJlOlwiXFx1MjI4NlwiLHN1cGU6XCJcXHUyMjg3XCIsb3BsdXM6XCJcXHUyMjk1XCIsb3RpbWVzOlwiXFx1MjI5N1wiLHBlcnA6XCJcXHUyMkE1XCIsc2RvdDpcIlxcdTIyQzVcIixsY2VpbDpcIlxcdTIzMDhcIixyY2VpbDpcIlxcdTIzMDlcIixsZmxvb3I6XCJcXHUyMzBBXCIscmZsb29yOlwiXFx1MjMwQlwiLGxhbmc6XCJcXHUyMzI5XCIscmFuZzpcIlxcdTIzMkFcIixsb3o6XCJcXHUyNUNBXCIsc3BhZGVzOlwiXFx1MjY2MFwiLGNsdWJzOlwiXFx1MjY2M1wiLGhlYXJ0czpcIlxcdTI2NjVcIixkaWFtczpcIlxcdTI2NjZcIn19fSksQTE9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L25vZGUtdXRpbHMuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciByZT1NJiZNLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oVixMLFAsayl7az09PXZvaWQgMCYmKGs9UCk7dmFyIFk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihMLFApOyghWXx8KFwiZ2V0XCJpbiBZPyFMLl9fZXNNb2R1bGU6WS53cml0YWJsZXx8WS5jb25maWd1cmFibGUpKSYmKFk9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIExbUF19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFYsayxZKX06ZnVuY3Rpb24oVixMLFAsayl7az09PXZvaWQgMCYmKGs9UCksVltrXT1MW1BdfSksVmU9TSYmTS5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFYsTCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFYsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6TH0pfTpmdW5jdGlvbihWLEwpe1YuZGVmYXVsdD1MfSksS2U9TSYmTS5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKFYpe2lmKFYmJlYuX19lc01vZHVsZSlyZXR1cm4gVjt2YXIgTD17fTtpZihWIT1udWxsKWZvcih2YXIgUCBpbiBWKVAhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFYsUCkmJnJlKEwsVixQKTtyZXR1cm4gVmUoTCxWKSxMfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmZpcnN0RGVmaW5lZD1NLm5vZGVIYXNUb2tlbnM9TS5jcmVhdGVFcnJvcj1NLlRTRXJyb3I9TS5jb252ZXJ0VG9rZW5zPU0uY29udmVydFRva2VuPU0uZ2V0VG9rZW5UeXBlPU0uaXNDaGlsZFVud3JhcHBhYmxlT3B0aW9uYWxDaGFpbj1NLmlzQ2hhaW5FeHByZXNzaW9uPU0uaXNPcHRpb25hbD1NLmlzQ29tcHV0ZWRQcm9wZXJ0eT1NLnVuZXNjYXBlU3RyaW5nTGl0ZXJhbFRleHQ9TS5oYXNKU1hBbmNlc3Rvcj1NLmZpbmRGaXJzdE1hdGNoaW5nQW5jZXN0b3I9TS5maW5kTmV4dFRva2VuPU0uZ2V0VFNOb2RlQWNjZXNzaWJpbGl0eT1NLmdldERlY2xhcmF0aW9uS2luZD1NLmlzSlNYVG9rZW49TS5pc1Rva2VuPU0uZ2V0UmFuZ2U9TS5jYW5Db250YWluRGlyZWN0aXZlPU0uZ2V0TG9jRm9yPU0uZ2V0TGluZUFuZENoYXJhY3RlckZvcj1NLmdldEJpbmFyeUV4cHJlc3Npb25UeXBlPU0uaXNKU0RvY0NvbW1lbnQ9TS5pc0NvbW1lbnQ9TS5pc0NvbW1hPU0uZ2V0TGFzdE1vZGlmaWVyPU0uaGFzTW9kaWZpZXI9TS5pc0VTVHJlZUNsYXNzTWVtYmVyPU0uZ2V0VGV4dEZvclRva2VuS2luZD1NLmlzTG9naWNhbE9wZXJhdG9yPU0uaXNBc3NpZ25tZW50T3BlcmF0b3I9dm9pZCAwO3ZhciBvaT1LZShfdSgpKSxrcj1rMSgpLHByPUVVKCksTHI9b2kuU3ludGF4S2luZCxhcj1bTHIuQmFyQmFyVG9rZW4sTHIuQW1wZXJzYW5kQW1wZXJzYW5kVG9rZW4sTHIuUXVlc3Rpb25RdWVzdGlvblRva2VuXTtmdW5jdGlvbiBrZShWKXtyZXR1cm4gVi5raW5kPj1Mci5GaXJzdEFzc2lnbm1lbnQmJlYua2luZDw9THIuTGFzdEFzc2lnbm1lbnR9TS5pc0Fzc2lnbm1lbnRPcGVyYXRvcj1rZTtmdW5jdGlvbiBlKFYpe3JldHVybiBhci5pbmNsdWRlcyhWLmtpbmQpfU0uaXNMb2dpY2FsT3BlcmF0b3I9ZTtmdW5jdGlvbiBhKFYpe3JldHVybiBvaS50b2tlblRvU3RyaW5nKFYpfU0uZ2V0VGV4dEZvclRva2VuS2luZD1hO2Z1bmN0aW9uIEMoVil7cmV0dXJuIFYua2luZCE9PUxyLlNlbWljb2xvbkNsYXNzRWxlbWVudH1NLmlzRVNUcmVlQ2xhc3NNZW1iZXI9QztmdW5jdGlvbiB3KFYsTCl7cmV0dXJuISFMLm1vZGlmaWVycyYmISFMLm1vZGlmaWVycy5sZW5ndGgmJkwubW9kaWZpZXJzLnNvbWUoUD0+UC5raW5kPT09Vil9TS5oYXNNb2RpZmllcj13O2Z1bmN0aW9uIEIoVil7cmV0dXJuISFWLm1vZGlmaWVycyYmISFWLm1vZGlmaWVycy5sZW5ndGgmJlYubW9kaWZpZXJzW1YubW9kaWZpZXJzLmxlbmd0aC0xXXx8bnVsbH1NLmdldExhc3RNb2RpZmllcj1CO2Z1bmN0aW9uIEUoVil7cmV0dXJuIFYua2luZD09PUxyLkNvbW1hVG9rZW59TS5pc0NvbW1hPUU7ZnVuY3Rpb24gUShWKXtyZXR1cm4gVi5raW5kPT09THIuU2luZ2xlTGluZUNvbW1lbnRUcml2aWF8fFYua2luZD09PUxyLk11bHRpTGluZUNvbW1lbnRUcml2aWF9TS5pc0NvbW1lbnQ9UTtmdW5jdGlvbiBsZShWKXtyZXR1cm4gVi5raW5kPT09THIuSlNEb2NDb21tZW50fU0uaXNKU0RvY0NvbW1lbnQ9bGU7ZnVuY3Rpb24gTihWKXtyZXR1cm4ga2UoVik/a3IuQVNUX05PREVfVFlQRVMuQXNzaWdubWVudEV4cHJlc3Npb246ZShWKT9rci5BU1RfTk9ERV9UWVBFUy5Mb2dpY2FsRXhwcmVzc2lvbjprci5BU1RfTk9ERV9UWVBFUy5CaW5hcnlFeHByZXNzaW9ufU0uZ2V0QmluYXJ5RXhwcmVzc2lvblR5cGU9TjtmdW5jdGlvbiBwKFYsTCl7bGV0IFA9TC5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihWKTtyZXR1cm57bGluZTpQLmxpbmUrMSxjb2x1bW46UC5jaGFyYWN0ZXJ9fU0uZ2V0TGluZUFuZENoYXJhY3RlckZvcj1wO2Z1bmN0aW9uIG0oVixMLFApe3JldHVybntzdGFydDpwKFYsUCksZW5kOnAoTCxQKX19TS5nZXRMb2NGb3I9bTtmdW5jdGlvbiBHKFYpe2lmKFYua2luZD09PW9pLlN5bnRheEtpbmQuQmxvY2spc3dpdGNoKFYucGFyZW50LmtpbmQpe2Nhc2Ugb2kuU3ludGF4S2luZC5Db25zdHJ1Y3RvcjpjYXNlIG9pLlN5bnRheEtpbmQuR2V0QWNjZXNzb3I6Y2FzZSBvaS5TeW50YXhLaW5kLlNldEFjY2Vzc29yOmNhc2Ugb2kuU3ludGF4S2luZC5BcnJvd0Z1bmN0aW9uOmNhc2Ugb2kuU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb246Y2FzZSBvaS5TeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb246Y2FzZSBvaS5TeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9cmV0dXJuITB9TS5jYW5Db250YWluRGlyZWN0aXZlPUc7ZnVuY3Rpb24gb2UoVixMKXtyZXR1cm5bVi5nZXRTdGFydChMKSxWLmdldEVuZCgpXX1NLmdldFJhbmdlPW9lO2Z1bmN0aW9uIGYoVil7cmV0dXJuIFYua2luZD49THIuRmlyc3RUb2tlbiYmVi5raW5kPD1Mci5MYXN0VG9rZW59TS5pc1Rva2VuPWY7ZnVuY3Rpb24gVChWKXtyZXR1cm4gVi5raW5kPj1Mci5Kc3hFbGVtZW50JiZWLmtpbmQ8PUxyLkpzeEF0dHJpYnV0ZX1NLmlzSlNYVG9rZW49VDtmdW5jdGlvbiBLKFYpe3JldHVybiBWLmZsYWdzJm9pLk5vZGVGbGFncy5MZXQ/XCJsZXRcIjpWLmZsYWdzJm9pLk5vZGVGbGFncy5Db25zdD9cImNvbnN0XCI6XCJ2YXJcIn1NLmdldERlY2xhcmF0aW9uS2luZD1LO2Z1bmN0aW9uIGIoVil7bGV0IEw9Vi5tb2RpZmllcnM7aWYoIUwpcmV0dXJuIG51bGw7Zm9yKGxldCBQIG9mIEwpc3dpdGNoKFAua2luZCl7Y2FzZSBMci5QdWJsaWNLZXl3b3JkOnJldHVyblwicHVibGljXCI7Y2FzZSBMci5Qcm90ZWN0ZWRLZXl3b3JkOnJldHVyblwicHJvdGVjdGVkXCI7Y2FzZSBMci5Qcml2YXRlS2V5d29yZDpyZXR1cm5cInByaXZhdGVcIjtkZWZhdWx0OmJyZWFrfXJldHVybiBudWxsfU0uZ2V0VFNOb2RlQWNjZXNzaWJpbGl0eT1iO2Z1bmN0aW9uIHNlKFYsTCxQKXtyZXR1cm4gayhMKTtmdW5jdGlvbiBrKFkpe3JldHVybiBvaS5pc1Rva2VuKFkpJiZZLnBvcz09PVYuZW5kP1k6eShZLmdldENoaWxkcmVuKFApLFU9PihVLnBvczw9Vi5wb3MmJlUuZW5kPlYuZW5kfHxVLnBvcz09PVYuZW5kKSYmQShVLFApP2soVSk6dm9pZCAwKX19TS5maW5kTmV4dFRva2VuPXNlO2Z1bmN0aW9uIEooVixMKXtmb3IoO1Y7KXtpZihMKFYpKXJldHVybiBWO1Y9Vi5wYXJlbnR9fU0uZmluZEZpcnN0TWF0Y2hpbmdBbmNlc3Rvcj1KO2Z1bmN0aW9uIGllKFYpe3JldHVybiEhSihWLFQpfU0uaGFzSlNYQW5jZXN0b3I9aWU7ZnVuY3Rpb24gUihWKXtyZXR1cm4gVi5yZXBsYWNlKC8mKD86I1xcZCt8I3hbXFxkYS1mQS1GXSt8WzAtOWEtekEtWl0rKTsvZyxMPT57bGV0IFA9TC5zbGljZSgxLC0xKTtpZihQWzBdPT09XCIjXCIpe2xldCBrPVBbMV09PT1cInhcIj9wYXJzZUludChQLnNsaWNlKDIpLDE2KTpwYXJzZUludChQLnNsaWNlKDEpLDEwKTtyZXR1cm4gaz4xMTE0MTExP0w6U3RyaW5nLmZyb21Db2RlUG9pbnQoayl9cmV0dXJuIHByLnhodG1sRW50aXRpZXNbUF18fEx9KX1NLnVuZXNjYXBlU3RyaW5nTGl0ZXJhbFRleHQ9UjtmdW5jdGlvbiBxKFYpe3JldHVybiBWLmtpbmQ9PT1Mci5Db21wdXRlZFByb3BlcnR5TmFtZX1NLmlzQ29tcHV0ZWRQcm9wZXJ0eT1xO2Z1bmN0aW9uIE8oVil7cmV0dXJuIFYucXVlc3Rpb25Ub2tlbj9WLnF1ZXN0aW9uVG9rZW4ua2luZD09PUxyLlF1ZXN0aW9uVG9rZW46ITF9TS5pc09wdGlvbmFsPU87ZnVuY3Rpb24gdmUoVil7cmV0dXJuIFYudHlwZT09PWtyLkFTVF9OT0RFX1RZUEVTLkNoYWluRXhwcmVzc2lvbn1NLmlzQ2hhaW5FeHByZXNzaW9uPXZlO2Z1bmN0aW9uIGVlKFYsTCl7cmV0dXJuIHZlKEwpJiZWLmV4cHJlc3Npb24ua2luZCE9PW9pLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZEV4cHJlc3Npb259TS5pc0NoaWxkVW53cmFwcGFibGVPcHRpb25hbENoYWluPWVlO2Z1bmN0aW9uIGhlKFYpe2lmKFwib3JpZ2luYWxLZXl3b3JkS2luZFwiaW4gViYmVi5vcmlnaW5hbEtleXdvcmRLaW5kKXJldHVybiBWLm9yaWdpbmFsS2V5d29yZEtpbmQ9PT1Mci5OdWxsS2V5d29yZD9rci5BU1RfVE9LRU5fVFlQRVMuTnVsbDpWLm9yaWdpbmFsS2V5d29yZEtpbmQ+PUxyLkZpcnN0RnV0dXJlUmVzZXJ2ZWRXb3JkJiZWLm9yaWdpbmFsS2V5d29yZEtpbmQ8PUxyLkxhc3RLZXl3b3JkP2tyLkFTVF9UT0tFTl9UWVBFUy5JZGVudGlmaWVyOmtyLkFTVF9UT0tFTl9UWVBFUy5LZXl3b3JkO2lmKFYua2luZD49THIuRmlyc3RLZXl3b3JkJiZWLmtpbmQ8PUxyLkxhc3RGdXR1cmVSZXNlcnZlZFdvcmQpcmV0dXJuIFYua2luZD09PUxyLkZhbHNlS2V5d29yZHx8Vi5raW5kPT09THIuVHJ1ZUtleXdvcmQ/a3IuQVNUX1RPS0VOX1RZUEVTLkJvb2xlYW46a3IuQVNUX1RPS0VOX1RZUEVTLktleXdvcmQ7aWYoVi5raW5kPj1Mci5GaXJzdFB1bmN0dWF0aW9uJiZWLmtpbmQ8PUxyLkxhc3RQdW5jdHVhdGlvbilyZXR1cm4ga3IuQVNUX1RPS0VOX1RZUEVTLlB1bmN0dWF0b3I7aWYoVi5raW5kPj1Mci5Ob1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbCYmVi5raW5kPD1Mci5UZW1wbGF0ZVRhaWwpcmV0dXJuIGtyLkFTVF9UT0tFTl9UWVBFUy5UZW1wbGF0ZTtzd2l0Y2goVi5raW5kKXtjYXNlIExyLk51bWVyaWNMaXRlcmFsOnJldHVybiBrci5BU1RfVE9LRU5fVFlQRVMuTnVtZXJpYztjYXNlIExyLkpzeFRleHQ6cmV0dXJuIGtyLkFTVF9UT0tFTl9UWVBFUy5KU1hUZXh0O2Nhc2UgTHIuU3RyaW5nTGl0ZXJhbDpyZXR1cm4gVi5wYXJlbnQmJihWLnBhcmVudC5raW5kPT09THIuSnN4QXR0cmlidXRlfHxWLnBhcmVudC5raW5kPT09THIuSnN4RWxlbWVudCk/a3IuQVNUX1RPS0VOX1RZUEVTLkpTWFRleHQ6a3IuQVNUX1RPS0VOX1RZUEVTLlN0cmluZztjYXNlIExyLlJlZ3VsYXJFeHByZXNzaW9uTGl0ZXJhbDpyZXR1cm4ga3IuQVNUX1RPS0VOX1RZUEVTLlJlZ3VsYXJFeHByZXNzaW9uO2Nhc2UgTHIuSWRlbnRpZmllcjpjYXNlIExyLkNvbnN0cnVjdG9yS2V5d29yZDpjYXNlIExyLkdldEtleXdvcmQ6Y2FzZSBMci5TZXRLZXl3b3JkOmRlZmF1bHQ6fXJldHVybiBWLnBhcmVudCYmVi5raW5kPT09THIuSWRlbnRpZmllciYmKFQoVi5wYXJlbnQpfHxWLnBhcmVudC5raW5kPT09THIuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiZpZShWKSk/a3IuQVNUX1RPS0VOX1RZUEVTLkpTWElkZW50aWZpZXI6a3IuQVNUX1RPS0VOX1RZUEVTLklkZW50aWZpZXJ9TS5nZXRUb2tlblR5cGU9aGU7ZnVuY3Rpb24gRihWLEwpe2xldCBQPVYua2luZD09PUxyLkpzeFRleHQ/Vi5nZXRGdWxsU3RhcnQoKTpWLmdldFN0YXJ0KEwpLGs9Vi5nZXRFbmQoKSxZPUwudGV4dC5zbGljZShQLGspLFU9aGUoVik7cmV0dXJuIFU9PT1rci5BU1RfVE9LRU5fVFlQRVMuUmVndWxhckV4cHJlc3Npb24/e3R5cGU6VSx2YWx1ZTpZLHJhbmdlOltQLGtdLGxvYzptKFAsayxMKSxyZWdleDp7cGF0dGVybjpZLnNsaWNlKDEsWS5sYXN0SW5kZXhPZihcIi9cIikpLGZsYWdzOlkuc2xpY2UoWS5sYXN0SW5kZXhPZihcIi9cIikrMSl9fTp7dHlwZTpVLHZhbHVlOlkscmFuZ2U6W1Asa10sbG9jOm0oUCxrLEwpfX1NLmNvbnZlcnRUb2tlbj1GO2Z1bmN0aW9uIHgoVil7bGV0IEw9W107ZnVuY3Rpb24gUChrKXtpZighKFEoayl8fGxlKGspKSlpZihmKGspJiZrLmtpbmQhPT1Mci5FbmRPZkZpbGVUb2tlbil7bGV0IFk9RihrLFYpO1kmJkwucHVzaChZKX1lbHNlIGsuZ2V0Q2hpbGRyZW4oVikuZm9yRWFjaChQKX1yZXR1cm4gUChWKSxMfU0uY29udmVydFRva2Vucz14O3ZhciBYPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoVixMLFAsayxZKXtzdXBlcihWKSx0aGlzLmZpbGVOYW1lPUwsdGhpcy5pbmRleD1QLHRoaXMubGluZU51bWJlcj1rLHRoaXMuY29sdW1uPVksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJuYW1lXCIse3ZhbHVlOm5ldy50YXJnZXQubmFtZSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfX07TS5UU0Vycm9yPVg7ZnVuY3Rpb24gJChWLEwsUCl7bGV0IGs9Vi5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihMKTtyZXR1cm4gbmV3IFgoUCxWLmZpbGVOYW1lLEwsay5saW5lKzEsay5jaGFyYWN0ZXIpfU0uY3JlYXRlRXJyb3I9JDtmdW5jdGlvbiBBKFYsTCl7cmV0dXJuIFYua2luZD09PUxyLkVuZE9mRmlsZVRva2VuPyEhVi5qc0RvYzpWLmdldFdpZHRoKEwpIT09MH1NLm5vZGVIYXNUb2tlbnM9QTtmdW5jdGlvbiB5KFYsTCl7aWYoViE9PXZvaWQgMClmb3IobGV0IFA9MDtQPFYubGVuZ3RoO1ArKyl7bGV0IGs9TChWW1BdLFApO2lmKGshPT12b2lkIDApcmV0dXJuIGt9fU0uZmlyc3REZWZpbmVkPXl9fSksQ1U9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L3ZlcnNpb24tY2hlY2suanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciByZT1NJiZNLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oYXIsa2UsZSxhKXthPT09dm9pZCAwJiYoYT1lKTt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGtlLGUpOyghQ3x8KFwiZ2V0XCJpbiBDPyFrZS5fX2VzTW9kdWxlOkMud3JpdGFibGV8fEMuY29uZmlndXJhYmxlKSkmJihDPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBrZVtlXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYXIsYSxDKX06ZnVuY3Rpb24oYXIsa2UsZSxhKXthPT09dm9pZCAwJiYoYT1lKSxhclthXT1rZVtlXX0pLFZlPU0mJk0uX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihhcixrZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFyLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmtlfSl9OmZ1bmN0aW9uKGFyLGtlKXthci5kZWZhdWx0PWtlfSksS2U9TSYmTS5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGFyKXtpZihhciYmYXIuX19lc01vZHVsZSlyZXR1cm4gYXI7dmFyIGtlPXt9O2lmKGFyIT1udWxsKWZvcih2YXIgZSBpbiBhcillIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcixlKSYmcmUoa2UsYXIsZSk7cmV0dXJuIFZlKGtlLGFyKSxrZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS50eXBlc2NyaXB0VmVyc2lvbklzQXRMZWFzdD12b2lkIDA7dmFyIG9pPUtlKFFUKCkpLGtyPUtlKF91KCkpLHByPVtcIjMuN1wiLFwiMy44XCIsXCIzLjlcIixcIjQuMFwiXSxMcj17fTtNLnR5cGVzY3JpcHRWZXJzaW9uSXNBdExlYXN0PUxyO2ZvcihsZXQgYXIgb2YgcHIpTHJbYXJdPSEwfX0pLGUzPU9hKHtcIm5vZGVfbW9kdWxlcy9AdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXNjcmlwdC1lc3RyZWUvZGlzdC9jb252ZXJ0LmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGEsQyx3LEIpe0I9PT12b2lkIDAmJihCPXcpO3ZhciBFPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQyx3KTsoIUV8fChcImdldFwiaW4gRT8hQy5fX2VzTW9kdWxlOkUud3JpdGFibGV8fEUuY29uZmlndXJhYmxlKSkmJihFPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBDW3ddfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLEIsRSl9OmZ1bmN0aW9uKGEsQyx3LEIpe0I9PT12b2lkIDAmJihCPXcpLGFbQl09Q1t3XX0pLFZlPU0mJk0uX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihhLEMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOkN9KX06ZnVuY3Rpb24oYSxDKXthLmRlZmF1bHQ9Q30pLEtlPU0mJk0uX19pbXBvcnRTdGFyfHxmdW5jdGlvbihhKXtpZihhJiZhLl9fZXNNb2R1bGUpcmV0dXJuIGE7dmFyIEM9e307aWYoYSE9bnVsbClmb3IodmFyIHcgaW4gYSl3IT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHcpJiZyZShDLGEsdyk7cmV0dXJuIFZlKEMsYSksQ307T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS5Db252ZXJ0ZXI9TS5jb252ZXJ0RXJyb3I9dm9pZCAwO3ZhciBvaT1LZShfdSgpKSxrcj1BMSgpLHByPWsxKCksTHI9Q1UoKSxhcj1vaS5TeW50YXhLaW5kO2Z1bmN0aW9uIGtlKGEpe3JldHVybigwLGtyLmNyZWF0ZUVycm9yKShhLmZpbGUsYS5zdGFydCxcIm1lc3NhZ2VcImluIGEmJmEubWVzc2FnZXx8YS5tZXNzYWdlVGV4dCl9TS5jb252ZXJ0RXJyb3I9a2U7dmFyIGU9Y2xhc3N7Y29uc3RydWN0b3IoYSxDKXt0aGlzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcD1uZXcgV2Vha01hcCx0aGlzLnRzTm9kZVRvRVNUcmVlTm9kZU1hcD1uZXcgV2Vha01hcCx0aGlzLmFsbG93UGF0dGVybj0hMSx0aGlzLmluVHlwZU1vZGU9ITEsdGhpcy5hc3Q9YSx0aGlzLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSxDKX1nZXRBU1RNYXBzKCl7cmV0dXJue2VzVHJlZU5vZGVUb1RTTm9kZU1hcDp0aGlzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcCx0c05vZGVUb0VTVHJlZU5vZGVNYXA6dGhpcy50c05vZGVUb0VTVHJlZU5vZGVNYXB9fWNvbnZlcnRQcm9ncmFtKCl7cmV0dXJuIHRoaXMuY29udmVydGVyKHRoaXMuYXN0KX1jb252ZXJ0ZXIoYSxDLHcsQil7aWYoIWEpcmV0dXJuIG51bGw7bGV0IEU9dGhpcy5pblR5cGVNb2RlLFE9dGhpcy5hbGxvd1BhdHRlcm47dyE9PXZvaWQgMCYmKHRoaXMuaW5UeXBlTW9kZT13KSxCIT09dm9pZCAwJiYodGhpcy5hbGxvd1BhdHRlcm49Qik7bGV0IGxlPXRoaXMuY29udmVydE5vZGUoYSxDIT1udWxsP0M6YS5wYXJlbnQpO3JldHVybiB0aGlzLnJlZ2lzdGVyVFNOb2RlSW5Ob2RlTWFwKGEsbGUpLHRoaXMuaW5UeXBlTW9kZT1FLHRoaXMuYWxsb3dQYXR0ZXJuPVEsbGV9Zml4RXhwb3J0cyhhLEMpe2lmKGEubW9kaWZpZXJzJiZhLm1vZGlmaWVyc1swXS5raW5kPT09YXIuRXhwb3J0S2V5d29yZCl7dGhpcy5yZWdpc3RlclRTTm9kZUluTm9kZU1hcChhLEMpO2xldCB3PWEubW9kaWZpZXJzWzBdLEI9YS5tb2RpZmllcnNbMV0sRT1CJiZCLmtpbmQ9PT1hci5EZWZhdWx0S2V5d29yZCxRPUU/KDAsa3IuZmluZE5leHRUb2tlbikoQix0aGlzLmFzdCx0aGlzLmFzdCk6KDAsa3IuZmluZE5leHRUb2tlbikodyx0aGlzLmFzdCx0aGlzLmFzdCk7aWYoQy5yYW5nZVswXT1RLmdldFN0YXJ0KHRoaXMuYXN0KSxDLmxvYz0oMCxrci5nZXRMb2NGb3IpKEMucmFuZ2VbMF0sQy5yYW5nZVsxXSx0aGlzLmFzdCksRSlyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uLGRlY2xhcmF0aW9uOkMscmFuZ2U6W3cuZ2V0U3RhcnQodGhpcy5hc3QpLEMucmFuZ2VbMV1dLGV4cG9ydEtpbmQ6XCJ2YWx1ZVwifSk7e2xldCBsZT1DLnR5cGU9PT1wci5BU1RfTk9ERV9UWVBFUy5UU0ludGVyZmFjZURlY2xhcmF0aW9ufHxDLnR5cGU9PT1wci5BU1RfTk9ERV9UWVBFUy5UU1R5cGVBbGlhc0RlY2xhcmF0aW9uLE49XCJkZWNsYXJlXCJpbiBDJiZDLmRlY2xhcmU9PT0hMDtyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuRXhwb3J0TmFtZWREZWNsYXJhdGlvbixkZWNsYXJhdGlvbjpDLHNwZWNpZmllcnM6W10sc291cmNlOm51bGwsZXhwb3J0S2luZDpsZXx8Tj9cInR5cGVcIjpcInZhbHVlXCIscmFuZ2U6W3cuZ2V0U3RhcnQodGhpcy5hc3QpLEMucmFuZ2VbMV1dLGFzc2VydGlvbnM6W119KX19cmV0dXJuIEN9cmVnaXN0ZXJUU05vZGVJbk5vZGVNYXAoYSxDKXtDJiZ0aGlzLm9wdGlvbnMuc2hvdWxkUHJlc2VydmVOb2RlTWFwcyYmKHRoaXMudHNOb2RlVG9FU1RyZWVOb2RlTWFwLmhhcyhhKXx8dGhpcy50c05vZGVUb0VTVHJlZU5vZGVNYXAuc2V0KGEsQykpfWNvbnZlcnRQYXR0ZXJuKGEsQyl7cmV0dXJuIHRoaXMuY29udmVydGVyKGEsQyx0aGlzLmluVHlwZU1vZGUsITApfWNvbnZlcnRDaGlsZChhLEMpe3JldHVybiB0aGlzLmNvbnZlcnRlcihhLEMsdGhpcy5pblR5cGVNb2RlLCExKX1jb252ZXJ0VHlwZShhLEMpe3JldHVybiB0aGlzLmNvbnZlcnRlcihhLEMsITAsITEpfWNyZWF0ZU5vZGUoYSxDKXtsZXQgdz1DO3JldHVybiB3LnJhbmdlfHwody5yYW5nZT0oMCxrci5nZXRSYW5nZSkoYSx0aGlzLmFzdCkpLHcubG9jfHwody5sb2M9KDAsa3IuZ2V0TG9jRm9yKSh3LnJhbmdlWzBdLHcucmFuZ2VbMV0sdGhpcy5hc3QpKSx3JiZ0aGlzLm9wdGlvbnMuc2hvdWxkUHJlc2VydmVOb2RlTWFwcyYmdGhpcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuc2V0KHcsYSksd31jb252ZXJ0QmluZGluZ05hbWVXaXRoVHlwZUFubm90YXRpb24oYSxDLHcpe2xldCBCPXRoaXMuY29udmVydFBhdHRlcm4oYSk7cmV0dXJuIEMmJihCLnR5cGVBbm5vdGF0aW9uPXRoaXMuY29udmVydFR5cGVBbm5vdGF0aW9uKEMsdyksdGhpcy5maXhQYXJlbnRMb2NhdGlvbihCLEIudHlwZUFubm90YXRpb24ucmFuZ2UpKSxCfWNvbnZlcnRUeXBlQW5ub3RhdGlvbihhLEMpe2xldCB3PShDPT1udWxsP3ZvaWQgMDpDLmtpbmQpPT09YXIuRnVuY3Rpb25UeXBlfHwoQz09bnVsbD92b2lkIDA6Qy5raW5kKT09PWFyLkNvbnN0cnVjdG9yVHlwZT8yOjEsQj1hLmdldEZ1bGxTdGFydCgpLXcsRT0oMCxrci5nZXRMb2NGb3IpKEIsYS5lbmQsdGhpcy5hc3QpO3JldHVybnt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTVHlwZUFubm90YXRpb24sbG9jOkUscmFuZ2U6W0IsYS5lbmRdLHR5cGVBbm5vdGF0aW9uOnRoaXMuY29udmVydFR5cGUoYSl9fWNvbnZlcnRCb2R5RXhwcmVzc2lvbnMoYSxDKXtsZXQgdz0oMCxrci5jYW5Db250YWluRGlyZWN0aXZlKShDKTtyZXR1cm4gYS5tYXAoQj0+e2xldCBFPXRoaXMuY29udmVydENoaWxkKEIpO2lmKHcpaWYoKEU9PW51bGw/dm9pZCAwOkUuZXhwcmVzc2lvbikmJm9pLmlzRXhwcmVzc2lvblN0YXRlbWVudChCKSYmb2kuaXNTdHJpbmdMaXRlcmFsKEIuZXhwcmVzc2lvbikpe2xldCBRPUUuZXhwcmVzc2lvbi5yYXc7cmV0dXJuIEUuZGlyZWN0aXZlPVEuc2xpY2UoMSwtMSksRX1lbHNlIHc9ITE7cmV0dXJuIEV9KS5maWx0ZXIoQj0+Qil9Y29udmVydFR5cGVBcmd1bWVudHNUb1R5cGVQYXJhbWV0ZXJzKGEsQyl7bGV0IHc9KDAsa3IuZmluZE5leHRUb2tlbikoYSx0aGlzLmFzdCx0aGlzLmFzdCk7cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShDLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24scmFuZ2U6W2EucG9zLTEsdy5lbmRdLHBhcmFtczphLm1hcChCPT50aGlzLmNvbnZlcnRUeXBlKEIpKX0pfWNvbnZlcnRUU1R5cGVQYXJhbWV0ZXJzVG9UeXBlUGFyYW1ldGVyc0RlY2xhcmF0aW9uKGEpe2xldCBDPSgwLGtyLmZpbmROZXh0VG9rZW4pKGEsdGhpcy5hc3QsdGhpcy5hc3QpO3JldHVybnt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uLHJhbmdlOlthLnBvcy0xLEMuZW5kXSxsb2M6KDAsa3IuZ2V0TG9jRm9yKShhLnBvcy0xLEMuZW5kLHRoaXMuYXN0KSxwYXJhbXM6YS5tYXAodz0+dGhpcy5jb252ZXJ0VHlwZSh3KSl9fWNvbnZlcnRQYXJhbWV0ZXJzKGEpe3JldHVybiFhfHwhYS5sZW5ndGg/W106YS5tYXAoQz0+e3ZhciB3O2xldCBCPXRoaXMuY29udmVydENoaWxkKEMpO3JldHVybiEoKHc9Qy5kZWNvcmF0b3JzKT09PW51bGx8fHc9PT12b2lkIDApJiZ3Lmxlbmd0aCYmKEIuZGVjb3JhdG9ycz1DLmRlY29yYXRvcnMubWFwKEU9PnRoaXMuY29udmVydENoaWxkKEUpKSksQn0pfWNvbnZlcnRDaGFpbkV4cHJlc3Npb24oYSxDKXtsZXR7Y2hpbGQ6dyxpc09wdGlvbmFsOkJ9PSgoKT0+YS50eXBlPT09cHIuQVNUX05PREVfVFlQRVMuTWVtYmVyRXhwcmVzc2lvbj97Y2hpbGQ6YS5vYmplY3QsaXNPcHRpb25hbDphLm9wdGlvbmFsfTphLnR5cGU9PT1wci5BU1RfTk9ERV9UWVBFUy5DYWxsRXhwcmVzc2lvbj97Y2hpbGQ6YS5jYWxsZWUsaXNPcHRpb25hbDphLm9wdGlvbmFsfTp7Y2hpbGQ6YS5leHByZXNzaW9uLGlzT3B0aW9uYWw6ITF9KSgpLEU9KDAsa3IuaXNDaGlsZFVud3JhcHBhYmxlT3B0aW9uYWxDaGFpbikoQyx3KTtpZighRSYmIUIpcmV0dXJuIGE7aWYoRSYmKDAsa3IuaXNDaGFpbkV4cHJlc3Npb24pKHcpKXtsZXQgUT13LmV4cHJlc3Npb247YS50eXBlPT09cHIuQVNUX05PREVfVFlQRVMuTWVtYmVyRXhwcmVzc2lvbj9hLm9iamVjdD1ROmEudHlwZT09PXByLkFTVF9OT0RFX1RZUEVTLkNhbGxFeHByZXNzaW9uP2EuY2FsbGVlPVE6YS5leHByZXNzaW9uPVF9cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShDLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkNoYWluRXhwcmVzc2lvbixleHByZXNzaW9uOmF9KX1kZWVwbHlDb3B5KGEpe2lmKGEua2luZD09PW9pLlN5bnRheEtpbmQuSlNEb2NGdW5jdGlvblR5cGUpdGhyb3coMCxrci5jcmVhdGVFcnJvcikodGhpcy5hc3QsYS5wb3MsXCJKU0RvYyB0eXBlcyBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBkb2N1bWVudGF0aW9uIGNvbW1lbnRzLlwiKTtsZXQgQz1cIlRTXCIuY29uY2F0KGFyW2Eua2luZF0pO2lmKHRoaXMub3B0aW9ucy5lcnJvck9uVW5rbm93bkFTVFR5cGUmJiFwci5BU1RfTk9ERV9UWVBFU1tDXSl0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gQVNUX05PREVfVFlQRTogXCInLmNvbmNhdChDLCdcIicpKTtsZXQgdz10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpDfSk7cmV0dXJuXCJ0eXBlXCJpbiBhJiYody50eXBlQW5ub3RhdGlvbj1hLnR5cGUmJlwia2luZFwiaW4gYS50eXBlJiZvaS5pc1R5cGVOb2RlKGEudHlwZSk/dGhpcy5jb252ZXJ0VHlwZUFubm90YXRpb24oYS50eXBlLGEpOm51bGwpLFwidHlwZUFyZ3VtZW50c1wiaW4gYSYmKHcudHlwZVBhcmFtZXRlcnM9YS50eXBlQXJndW1lbnRzJiZcInBvc1wiaW4gYS50eXBlQXJndW1lbnRzP3RoaXMuY29udmVydFR5cGVBcmd1bWVudHNUb1R5cGVQYXJhbWV0ZXJzKGEudHlwZUFyZ3VtZW50cyxhKTpudWxsKSxcInR5cGVQYXJhbWV0ZXJzXCJpbiBhJiYody50eXBlUGFyYW1ldGVycz1hLnR5cGVQYXJhbWV0ZXJzJiZcInBvc1wiaW4gYS50eXBlUGFyYW1ldGVycz90aGlzLmNvbnZlcnRUU1R5cGVQYXJhbWV0ZXJzVG9UeXBlUGFyYW1ldGVyc0RlY2xhcmF0aW9uKGEudHlwZVBhcmFtZXRlcnMpOm51bGwpLFwiZGVjb3JhdG9yc1wiaW4gYSYmYS5kZWNvcmF0b3JzJiZhLmRlY29yYXRvcnMubGVuZ3RoJiYody5kZWNvcmF0b3JzPWEuZGVjb3JhdG9ycy5tYXAoQj0+dGhpcy5jb252ZXJ0Q2hpbGQoQikpKSxPYmplY3QuZW50cmllcyhhKS5maWx0ZXIoQj0+e2xldFtFXT1CO3JldHVybiEvXig/Ol9jaGlsZHJlbnxraW5kfHBhcmVudHxwb3N8ZW5kfGZsYWdzfG1vZGlmaWVyRmxhZ3NDYWNoZXxqc0RvY3x0eXBlfHR5cGVBcmd1bWVudHN8dHlwZVBhcmFtZXRlcnN8ZGVjb3JhdG9yc3x0cmFuc2Zvcm1GbGFncykkLy50ZXN0KEUpfSkuZm9yRWFjaChCPT57bGV0W0UsUV09QjtBcnJheS5pc0FycmF5KFEpP3dbRV09US5tYXAobGU9PnRoaXMuY29udmVydENoaWxkKGxlKSk6USYmdHlwZW9mIFE9PVwib2JqZWN0XCImJlEua2luZD93W0VdPXRoaXMuY29udmVydENoaWxkKFEpOndbRV09UX0pLHd9Y29udmVydEpTWElkZW50aWZpZXIoYSl7bGV0IEM9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYSWRlbnRpZmllcixuYW1lOmEuZ2V0VGV4dCgpfSk7cmV0dXJuIHRoaXMucmVnaXN0ZXJUU05vZGVJbk5vZGVNYXAoYSxDKSxDfWNvbnZlcnRKU1hOYW1lc3BhY2VPcklkZW50aWZpZXIoYSl7bGV0IEM9YS5nZXRUZXh0KCksdz1DLmluZGV4T2YoXCI6XCIpO2lmKHc+MCl7bGV0IEI9KDAsa3IuZ2V0UmFuZ2UpKGEsdGhpcy5hc3QpLEU9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYTmFtZXNwYWNlZE5hbWUsbmFtZXNwYWNlOnRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkpTWElkZW50aWZpZXIsbmFtZTpDLnNsaWNlKDAsdykscmFuZ2U6W0JbMF0sQlswXSt3XX0pLG5hbWU6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYSWRlbnRpZmllcixuYW1lOkMuc2xpY2UodysxKSxyYW5nZTpbQlswXSt3KzEsQlsxXV19KSxyYW5nZTpCfSk7cmV0dXJuIHRoaXMucmVnaXN0ZXJUU05vZGVJbk5vZGVNYXAoYSxFKSxFfXJldHVybiB0aGlzLmNvbnZlcnRKU1hJZGVudGlmaWVyKGEpfWNvbnZlcnRKU1hUYWdOYW1lKGEsQyl7bGV0IHc7c3dpdGNoKGEua2luZCl7Y2FzZSBhci5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246aWYoYS5uYW1lLmtpbmQ9PT1hci5Qcml2YXRlSWRlbnRpZmllcil0aHJvdyBuZXcgRXJyb3IoXCJOb24tcHJpdmF0ZSBpZGVudGlmaWVyIGV4cGVjdGVkLlwiKTt3PXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkpTWE1lbWJlckV4cHJlc3Npb24sb2JqZWN0OnRoaXMuY29udmVydEpTWFRhZ05hbWUoYS5leHByZXNzaW9uLEMpLHByb3BlcnR5OnRoaXMuY29udmVydEpTWElkZW50aWZpZXIoYS5uYW1lKX0pO2JyZWFrO2Nhc2UgYXIuVGhpc0tleXdvcmQ6Y2FzZSBhci5JZGVudGlmaWVyOmRlZmF1bHQ6cmV0dXJuIHRoaXMuY29udmVydEpTWE5hbWVzcGFjZU9ySWRlbnRpZmllcihhKX1yZXR1cm4gdGhpcy5yZWdpc3RlclRTTm9kZUluTm9kZU1hcChhLHcpLHd9Y29udmVydE1ldGhvZFNpZ25hdHVyZShhKXtsZXQgQz10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU01ldGhvZFNpZ25hdHVyZSxjb21wdXRlZDooMCxrci5pc0NvbXB1dGVkUHJvcGVydHkpKGEubmFtZSksa2V5OnRoaXMuY29udmVydENoaWxkKGEubmFtZSkscGFyYW1zOnRoaXMuY29udmVydFBhcmFtZXRlcnMoYS5wYXJhbWV0ZXJzKSxraW5kOigoKT0+e3N3aXRjaChhLmtpbmQpe2Nhc2UgYXIuR2V0QWNjZXNzb3I6cmV0dXJuXCJnZXRcIjtjYXNlIGFyLlNldEFjY2Vzc29yOnJldHVyblwic2V0XCI7Y2FzZSBhci5NZXRob2RTaWduYXR1cmU6cmV0dXJuXCJtZXRob2RcIn19KSgpfSk7KDAsa3IuaXNPcHRpb25hbCkoYSkmJihDLm9wdGlvbmFsPSEwKSxhLnR5cGUmJihDLnJldHVyblR5cGU9dGhpcy5jb252ZXJ0VHlwZUFubm90YXRpb24oYS50eXBlLGEpKSwoMCxrci5oYXNNb2RpZmllcikoYXIuUmVhZG9ubHlLZXl3b3JkLGEpJiYoQy5yZWFkb25seT0hMCksYS50eXBlUGFyYW1ldGVycyYmKEMudHlwZVBhcmFtZXRlcnM9dGhpcy5jb252ZXJ0VFNUeXBlUGFyYW1ldGVyc1RvVHlwZVBhcmFtZXRlcnNEZWNsYXJhdGlvbihhLnR5cGVQYXJhbWV0ZXJzKSk7bGV0IHc9KDAsa3IuZ2V0VFNOb2RlQWNjZXNzaWJpbGl0eSkoYSk7cmV0dXJuIHcmJihDLmFjY2Vzc2liaWxpdHk9dyksKDAsa3IuaGFzTW9kaWZpZXIpKGFyLkV4cG9ydEtleXdvcmQsYSkmJihDLmV4cG9ydD0hMCksKDAsa3IuaGFzTW9kaWZpZXIpKGFyLlN0YXRpY0tleXdvcmQsYSkmJihDLnN0YXRpYz0hMCksQ31jb252ZXJ0QXNzZXJ0Q2xhc3VlKGEpe3JldHVybiBhPT09dm9pZCAwP1tdOmEuZWxlbWVudHMubWFwKEM9PnRoaXMuY29udmVydENoaWxkKEMpKX1hcHBseU1vZGlmaWVyc1RvUmVzdWx0KGEsQyl7aWYoIUN8fCFDLmxlbmd0aClyZXR1cm47bGV0IHc9W107Zm9yKGxldCBCIG9mIEMpc3dpdGNoKEIua2luZCl7Y2FzZSBhci5FeHBvcnRLZXl3b3JkOmNhc2UgYXIuRGVmYXVsdEtleXdvcmQ6YnJlYWs7Y2FzZSBhci5Db25zdEtleXdvcmQ6YS5jb25zdD0hMDticmVhaztjYXNlIGFyLkRlY2xhcmVLZXl3b3JkOmEuZGVjbGFyZT0hMDticmVhaztkZWZhdWx0OncucHVzaCh0aGlzLmNvbnZlcnRDaGlsZChCKSk7YnJlYWt9dy5sZW5ndGgmJihhLm1vZGlmaWVycz13KX1maXhQYXJlbnRMb2NhdGlvbihhLEMpe0NbMF08YS5yYW5nZVswXSYmKGEucmFuZ2VbMF09Q1swXSxhLmxvYy5zdGFydD0oMCxrci5nZXRMaW5lQW5kQ2hhcmFjdGVyRm9yKShhLnJhbmdlWzBdLHRoaXMuYXN0KSksQ1sxXT5hLnJhbmdlWzFdJiYoYS5yYW5nZVsxXT1DWzFdLGEubG9jLmVuZD0oMCxrci5nZXRMaW5lQW5kQ2hhcmFjdGVyRm9yKShhLnJhbmdlWzFdLHRoaXMuYXN0KSl9YXNzZXJ0TW9kdWxlU3BlY2lmaWVyKGEsQyl7dmFyIHc7aWYoIUMmJmEubW9kdWxlU3BlY2lmaWVyPT1udWxsKXRocm93KDAsa3IuY3JlYXRlRXJyb3IpKHRoaXMuYXN0LGEucG9zLFwiTW9kdWxlIHNwZWNpZmllciBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwuXCIpO2lmKGEubW9kdWxlU3BlY2lmaWVyJiYoKHc9YS5tb2R1bGVTcGVjaWZpZXIpPT09bnVsbHx8dz09PXZvaWQgMD92b2lkIDA6dy5raW5kKSE9PWFyLlN0cmluZ0xpdGVyYWwpdGhyb3coMCxrci5jcmVhdGVFcnJvcikodGhpcy5hc3QsYS5tb2R1bGVTcGVjaWZpZXIucG9zLFwiTW9kdWxlIHNwZWNpZmllciBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwuXCIpfWNvbnZlcnROb2RlKGEsQyl7dmFyIHcsQixFLFEsbGUsTixwLG0sRyxvZTtzd2l0Y2goYS5raW5kKXtjYXNlIGFyLlNvdXJjZUZpbGU6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlByb2dyYW0sYm9keTp0aGlzLmNvbnZlcnRCb2R5RXhwcmVzc2lvbnMoYS5zdGF0ZW1lbnRzLGEpLHNvdXJjZVR5cGU6YS5leHRlcm5hbE1vZHVsZUluZGljYXRvcj9cIm1vZHVsZVwiOlwic2NyaXB0XCIscmFuZ2U6W2EuZ2V0U3RhcnQodGhpcy5hc3QpLGEuZW5kT2ZGaWxlVG9rZW4uZW5kXX0pO2Nhc2UgYXIuQmxvY2s6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkJsb2NrU3RhdGVtZW50LGJvZHk6dGhpcy5jb252ZXJ0Qm9keUV4cHJlc3Npb25zKGEuc3RhdGVtZW50cyxhKX0pO2Nhc2UgYXIuSWRlbnRpZmllcjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcixuYW1lOmEudGV4dH0pO2Nhc2UgYXIuUHJpdmF0ZUlkZW50aWZpZXI6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlByaXZhdGVJZGVudGlmaWVyLG5hbWU6YS50ZXh0LnNsaWNlKDEpfSk7Y2FzZSBhci5XaXRoU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5XaXRoU3RhdGVtZW50LG9iamVjdDp0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pLGJvZHk6dGhpcy5jb252ZXJ0Q2hpbGQoYS5zdGF0ZW1lbnQpfSk7Y2FzZSBhci5SZXR1cm5TdGF0ZW1lbnQ6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlJldHVyblN0YXRlbWVudCxhcmd1bWVudDp0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pfSk7Y2FzZSBhci5MYWJlbGVkU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5MYWJlbGVkU3RhdGVtZW50LGxhYmVsOnRoaXMuY29udmVydENoaWxkKGEubGFiZWwpLGJvZHk6dGhpcy5jb252ZXJ0Q2hpbGQoYS5zdGF0ZW1lbnQpfSk7Y2FzZSBhci5Db250aW51ZVN0YXRlbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuQ29udGludWVTdGF0ZW1lbnQsbGFiZWw6dGhpcy5jb252ZXJ0Q2hpbGQoYS5sYWJlbCl9KTtjYXNlIGFyLkJyZWFrU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5CcmVha1N0YXRlbWVudCxsYWJlbDp0aGlzLmNvbnZlcnRDaGlsZChhLmxhYmVsKX0pO2Nhc2UgYXIuSWZTdGF0ZW1lbnQ6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLklmU3RhdGVtZW50LHRlc3Q6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKSxjb25zZXF1ZW50OnRoaXMuY29udmVydENoaWxkKGEudGhlblN0YXRlbWVudCksYWx0ZXJuYXRlOnRoaXMuY29udmVydENoaWxkKGEuZWxzZVN0YXRlbWVudCl9KTtjYXNlIGFyLlN3aXRjaFN0YXRlbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuU3dpdGNoU3RhdGVtZW50LGRpc2NyaW1pbmFudDp0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pLGNhc2VzOmEuY2FzZUJsb2NrLmNsYXVzZXMubWFwKGY9PnRoaXMuY29udmVydENoaWxkKGYpKX0pO2Nhc2UgYXIuQ2FzZUNsYXVzZTpjYXNlIGFyLkRlZmF1bHRDbGF1c2U6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlN3aXRjaENhc2UsdGVzdDphLmtpbmQ9PT1hci5DYXNlQ2xhdXNlP3RoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbik6bnVsbCxjb25zZXF1ZW50OmEuc3RhdGVtZW50cy5tYXAoZj0+dGhpcy5jb252ZXJ0Q2hpbGQoZikpfSk7Y2FzZSBhci5UaHJvd1N0YXRlbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVGhyb3dTdGF0ZW1lbnQsYXJndW1lbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO2Nhc2UgYXIuVHJ5U3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UcnlTdGF0ZW1lbnQsYmxvY2s6dGhpcy5jb252ZXJ0Q2hpbGQoYS50cnlCbG9jayksaGFuZGxlcjp0aGlzLmNvbnZlcnRDaGlsZChhLmNhdGNoQ2xhdXNlKSxmaW5hbGl6ZXI6dGhpcy5jb252ZXJ0Q2hpbGQoYS5maW5hbGx5QmxvY2spfSk7Y2FzZSBhci5DYXRjaENsYXVzZTpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuQ2F0Y2hDbGF1c2UscGFyYW06YS52YXJpYWJsZURlY2xhcmF0aW9uP3RoaXMuY29udmVydEJpbmRpbmdOYW1lV2l0aFR5cGVBbm5vdGF0aW9uKGEudmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lLGEudmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKTpudWxsLGJvZHk6dGhpcy5jb252ZXJ0Q2hpbGQoYS5ibG9jayl9KTtjYXNlIGFyLldoaWxlU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5XaGlsZVN0YXRlbWVudCx0ZXN0OnRoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbiksYm9keTp0aGlzLmNvbnZlcnRDaGlsZChhLnN0YXRlbWVudCl9KTtjYXNlIGFyLkRvU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Eb1doaWxlU3RhdGVtZW50LHRlc3Q6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKSxib2R5OnRoaXMuY29udmVydENoaWxkKGEuc3RhdGVtZW50KX0pO2Nhc2UgYXIuRm9yU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Gb3JTdGF0ZW1lbnQsaW5pdDp0aGlzLmNvbnZlcnRDaGlsZChhLmluaXRpYWxpemVyKSx0ZXN0OnRoaXMuY29udmVydENoaWxkKGEuY29uZGl0aW9uKSx1cGRhdGU6dGhpcy5jb252ZXJ0Q2hpbGQoYS5pbmNyZW1lbnRvciksYm9keTp0aGlzLmNvbnZlcnRDaGlsZChhLnN0YXRlbWVudCl9KTtjYXNlIGFyLkZvckluU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Gb3JJblN0YXRlbWVudCxsZWZ0OnRoaXMuY29udmVydFBhdHRlcm4oYS5pbml0aWFsaXplcikscmlnaHQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKSxib2R5OnRoaXMuY29udmVydENoaWxkKGEuc3RhdGVtZW50KX0pO2Nhc2UgYXIuRm9yT2ZTdGF0ZW1lbnQ6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkZvck9mU3RhdGVtZW50LGxlZnQ6dGhpcy5jb252ZXJ0UGF0dGVybihhLmluaXRpYWxpemVyKSxyaWdodDp0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pLGJvZHk6dGhpcy5jb252ZXJ0Q2hpbGQoYS5zdGF0ZW1lbnQpLGF3YWl0OkJvb2xlYW4oYS5hd2FpdE1vZGlmaWVyJiZhLmF3YWl0TW9kaWZpZXIua2luZD09PWFyLkF3YWl0S2V5d29yZCl9KTtjYXNlIGFyLkZ1bmN0aW9uRGVjbGFyYXRpb246e2xldCBmPSgwLGtyLmhhc01vZGlmaWVyKShhci5EZWNsYXJlS2V5d29yZCxhKSxUPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOmZ8fCFhLmJvZHk/cHIuQVNUX05PREVfVFlQRVMuVFNEZWNsYXJlRnVuY3Rpb246cHIuQVNUX05PREVfVFlQRVMuRnVuY3Rpb25EZWNsYXJhdGlvbixpZDp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLGdlbmVyYXRvcjohIWEuYXN0ZXJpc2tUb2tlbixleHByZXNzaW9uOiExLGFzeW5jOigwLGtyLmhhc01vZGlmaWVyKShhci5Bc3luY0tleXdvcmQsYSkscGFyYW1zOnRoaXMuY29udmVydFBhcmFtZXRlcnMoYS5wYXJhbWV0ZXJzKSxib2R5OnRoaXMuY29udmVydENoaWxkKGEuYm9keSl8fHZvaWQgMH0pO3JldHVybiBhLnR5cGUmJihULnJldHVyblR5cGU9dGhpcy5jb252ZXJ0VHlwZUFubm90YXRpb24oYS50eXBlLGEpKSxhLnR5cGVQYXJhbWV0ZXJzJiYoVC50eXBlUGFyYW1ldGVycz10aGlzLmNvbnZlcnRUU1R5cGVQYXJhbWV0ZXJzVG9UeXBlUGFyYW1ldGVyc0RlY2xhcmF0aW9uKGEudHlwZVBhcmFtZXRlcnMpKSxmJiYoVC5kZWNsYXJlPSEwKSx0aGlzLmZpeEV4cG9ydHMoYSxUKX1jYXNlIGFyLlZhcmlhYmxlRGVjbGFyYXRpb246e2xldCBmPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlZhcmlhYmxlRGVjbGFyYXRvcixpZDp0aGlzLmNvbnZlcnRCaW5kaW5nTmFtZVdpdGhUeXBlQW5ub3RhdGlvbihhLm5hbWUsYS50eXBlLGEpLGluaXQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5pbml0aWFsaXplcil9KTtyZXR1cm4gYS5leGNsYW1hdGlvblRva2VuJiYoZi5kZWZpbml0ZT0hMCksZn1jYXNlIGFyLlZhcmlhYmxlU3RhdGVtZW50OntsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5WYXJpYWJsZURlY2xhcmF0aW9uLGRlY2xhcmF0aW9uczphLmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnMubWFwKFQ9PnRoaXMuY29udmVydENoaWxkKFQpKSxraW5kOigwLGtyLmdldERlY2xhcmF0aW9uS2luZCkoYS5kZWNsYXJhdGlvbkxpc3QpfSk7cmV0dXJuIGEuZGVjb3JhdG9ycyYmKGYuZGVjb3JhdG9ycz1hLmRlY29yYXRvcnMubWFwKFQ9PnRoaXMuY29udmVydENoaWxkKFQpKSksKDAsa3IuaGFzTW9kaWZpZXIpKGFyLkRlY2xhcmVLZXl3b3JkLGEpJiYoZi5kZWNsYXJlPSEwKSx0aGlzLmZpeEV4cG9ydHMoYSxmKX1jYXNlIGFyLlZhcmlhYmxlRGVjbGFyYXRpb25MaXN0OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5WYXJpYWJsZURlY2xhcmF0aW9uLGRlY2xhcmF0aW9uczphLmRlY2xhcmF0aW9ucy5tYXAoZj0+dGhpcy5jb252ZXJ0Q2hpbGQoZikpLGtpbmQ6KDAsa3IuZ2V0RGVjbGFyYXRpb25LaW5kKShhKX0pO2Nhc2UgYXIuRXhwcmVzc2lvblN0YXRlbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuRXhwcmVzc2lvblN0YXRlbWVudCxleHByZXNzaW9uOnRoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbil9KTtjYXNlIGFyLlRoaXNLZXl3b3JkOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UaGlzRXhwcmVzc2lvbn0pO2Nhc2UgYXIuQXJyYXlMaXRlcmFsRXhwcmVzc2lvbjpyZXR1cm4gdGhpcy5hbGxvd1BhdHRlcm4/dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuQXJyYXlQYXR0ZXJuLGVsZW1lbnRzOmEuZWxlbWVudHMubWFwKGY9PnRoaXMuY29udmVydFBhdHRlcm4oZikpfSk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuQXJyYXlFeHByZXNzaW9uLGVsZW1lbnRzOmEuZWxlbWVudHMubWFwKGY9PnRoaXMuY29udmVydENoaWxkKGYpKX0pO2Nhc2UgYXIuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb246cmV0dXJuIHRoaXMuYWxsb3dQYXR0ZXJuP3RoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLk9iamVjdFBhdHRlcm4scHJvcGVydGllczphLnByb3BlcnRpZXMubWFwKGY9PnRoaXMuY29udmVydFBhdHRlcm4oZikpfSk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuT2JqZWN0RXhwcmVzc2lvbixwcm9wZXJ0aWVzOmEucHJvcGVydGllcy5tYXAoZj0+dGhpcy5jb252ZXJ0Q2hpbGQoZikpfSk7Y2FzZSBhci5Qcm9wZXJ0eUFzc2lnbm1lbnQ6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlByb3BlcnR5LGtleTp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLHZhbHVlOnRoaXMuY29udmVydGVyKGEuaW5pdGlhbGl6ZXIsYSx0aGlzLmluVHlwZU1vZGUsdGhpcy5hbGxvd1BhdHRlcm4pLGNvbXB1dGVkOigwLGtyLmlzQ29tcHV0ZWRQcm9wZXJ0eSkoYS5uYW1lKSxtZXRob2Q6ITEsc2hvcnRoYW5kOiExLGtpbmQ6XCJpbml0XCJ9KTtjYXNlIGFyLlNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudDpyZXR1cm4gYS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXI/dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuUHJvcGVydHksa2V5OnRoaXMuY29udmVydENoaWxkKGEubmFtZSksdmFsdWU6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuQXNzaWdubWVudFBhdHRlcm4sbGVmdDp0aGlzLmNvbnZlcnRQYXR0ZXJuKGEubmFtZSkscmlnaHQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXIpfSksY29tcHV0ZWQ6ITEsbWV0aG9kOiExLHNob3J0aGFuZDohMCxraW5kOlwiaW5pdFwifSk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuUHJvcGVydHksa2V5OnRoaXMuY29udmVydENoaWxkKGEubmFtZSksdmFsdWU6dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lKSxjb21wdXRlZDohMSxtZXRob2Q6ITEsc2hvcnRoYW5kOiEwLGtpbmQ6XCJpbml0XCJ9KTtjYXNlIGFyLkNvbXB1dGVkUHJvcGVydHlOYW1lOnJldHVybiB0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pO2Nhc2UgYXIuUHJvcGVydHlEZWNsYXJhdGlvbjp7bGV0IGY9KDAsa3IuaGFzTW9kaWZpZXIpKGFyLkFic3RyYWN0S2V5d29yZCxhKSxUPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOmY/cHIuQVNUX05PREVfVFlQRVMuVFNBYnN0cmFjdFByb3BlcnR5RGVmaW5pdGlvbjpwci5BU1RfTk9ERV9UWVBFUy5Qcm9wZXJ0eURlZmluaXRpb24sa2V5OnRoaXMuY29udmVydENoaWxkKGEubmFtZSksdmFsdWU6Zj9udWxsOnRoaXMuY29udmVydENoaWxkKGEuaW5pdGlhbGl6ZXIpLGNvbXB1dGVkOigwLGtyLmlzQ29tcHV0ZWRQcm9wZXJ0eSkoYS5uYW1lKSxzdGF0aWM6KDAsa3IuaGFzTW9kaWZpZXIpKGFyLlN0YXRpY0tleXdvcmQsYSkscmVhZG9ubHk6KDAsa3IuaGFzTW9kaWZpZXIpKGFyLlJlYWRvbmx5S2V5d29yZCxhKXx8dm9pZCAwLGRlY2xhcmU6KDAsa3IuaGFzTW9kaWZpZXIpKGFyLkRlY2xhcmVLZXl3b3JkLGEpLG92ZXJyaWRlOigwLGtyLmhhc01vZGlmaWVyKShhci5PdmVycmlkZUtleXdvcmQsYSl9KTthLnR5cGUmJihULnR5cGVBbm5vdGF0aW9uPXRoaXMuY29udmVydFR5cGVBbm5vdGF0aW9uKGEudHlwZSxhKSksYS5kZWNvcmF0b3JzJiYoVC5kZWNvcmF0b3JzPWEuZGVjb3JhdG9ycy5tYXAoYj0+dGhpcy5jb252ZXJ0Q2hpbGQoYikpKTtsZXQgSz0oMCxrci5nZXRUU05vZGVBY2Nlc3NpYmlsaXR5KShhKTtyZXR1cm4gSyYmKFQuYWNjZXNzaWJpbGl0eT1LKSwoYS5uYW1lLmtpbmQ9PT1hci5JZGVudGlmaWVyfHxhLm5hbWUua2luZD09PWFyLkNvbXB1dGVkUHJvcGVydHlOYW1lfHxhLm5hbWUua2luZD09PWFyLlByaXZhdGVJZGVudGlmaWVyKSYmYS5xdWVzdGlvblRva2VuJiYoVC5vcHRpb25hbD0hMCksYS5leGNsYW1hdGlvblRva2VuJiYoVC5kZWZpbml0ZT0hMCksVC5rZXkudHlwZT09PXByLkFTVF9OT0RFX1RZUEVTLkxpdGVyYWwmJmEucXVlc3Rpb25Ub2tlbiYmKFQub3B0aW9uYWw9ITApLFR9Y2FzZSBhci5HZXRBY2Nlc3NvcjpjYXNlIGFyLlNldEFjY2Vzc29yOmlmKGEucGFyZW50LmtpbmQ9PT1hci5JbnRlcmZhY2VEZWNsYXJhdGlvbnx8YS5wYXJlbnQua2luZD09PWFyLlR5cGVMaXRlcmFsKXJldHVybiB0aGlzLmNvbnZlcnRNZXRob2RTaWduYXR1cmUoYSk7Y2FzZSBhci5NZXRob2REZWNsYXJhdGlvbjp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6YS5ib2R5P3ByLkFTVF9OT0RFX1RZUEVTLkZ1bmN0aW9uRXhwcmVzc2lvbjpwci5BU1RfTk9ERV9UWVBFUy5UU0VtcHR5Qm9keUZ1bmN0aW9uRXhwcmVzc2lvbixpZDpudWxsLGdlbmVyYXRvcjohIWEuYXN0ZXJpc2tUb2tlbixleHByZXNzaW9uOiExLGFzeW5jOigwLGtyLmhhc01vZGlmaWVyKShhci5Bc3luY0tleXdvcmQsYSksYm9keTp0aGlzLmNvbnZlcnRDaGlsZChhLmJvZHkpLHJhbmdlOlthLnBhcmFtZXRlcnMucG9zLTEsYS5lbmRdLHBhcmFtczpbXX0pO2EudHlwZSYmKGYucmV0dXJuVHlwZT10aGlzLmNvbnZlcnRUeXBlQW5ub3RhdGlvbihhLnR5cGUsYSkpLGEudHlwZVBhcmFtZXRlcnMmJihmLnR5cGVQYXJhbWV0ZXJzPXRoaXMuY29udmVydFRTVHlwZVBhcmFtZXRlcnNUb1R5cGVQYXJhbWV0ZXJzRGVjbGFyYXRpb24oYS50eXBlUGFyYW1ldGVycyksdGhpcy5maXhQYXJlbnRMb2NhdGlvbihmLGYudHlwZVBhcmFtZXRlcnMucmFuZ2UpKTtsZXQgVDtpZihDLmtpbmQ9PT1hci5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbilmLnBhcmFtcz1hLnBhcmFtZXRlcnMubWFwKEs9PnRoaXMuY29udmVydENoaWxkKEspKSxUPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlByb3BlcnR5LGtleTp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLHZhbHVlOmYsY29tcHV0ZWQ6KDAsa3IuaXNDb21wdXRlZFByb3BlcnR5KShhLm5hbWUpLG1ldGhvZDphLmtpbmQ9PT1hci5NZXRob2REZWNsYXJhdGlvbixzaG9ydGhhbmQ6ITEsa2luZDpcImluaXRcIn0pO2Vsc2V7Zi5wYXJhbXM9dGhpcy5jb252ZXJ0UGFyYW1ldGVycyhhLnBhcmFtZXRlcnMpO2xldCBLPSgwLGtyLmhhc01vZGlmaWVyKShhci5BYnN0cmFjdEtleXdvcmQsYSk/cHIuQVNUX05PREVfVFlQRVMuVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb246cHIuQVNUX05PREVfVFlQRVMuTWV0aG9kRGVmaW5pdGlvbjtUPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOkssa2V5OnRoaXMuY29udmVydENoaWxkKGEubmFtZSksdmFsdWU6Zixjb21wdXRlZDooMCxrci5pc0NvbXB1dGVkUHJvcGVydHkpKGEubmFtZSksc3RhdGljOigwLGtyLmhhc01vZGlmaWVyKShhci5TdGF0aWNLZXl3b3JkLGEpLGtpbmQ6XCJtZXRob2RcIixvdmVycmlkZTooMCxrci5oYXNNb2RpZmllcikoYXIuT3ZlcnJpZGVLZXl3b3JkLGEpfSksYS5kZWNvcmF0b3JzJiYoVC5kZWNvcmF0b3JzPWEuZGVjb3JhdG9ycy5tYXAoc2U9PnRoaXMuY29udmVydENoaWxkKHNlKSkpO2xldCBiPSgwLGtyLmdldFRTTm9kZUFjY2Vzc2liaWxpdHkpKGEpO2ImJihULmFjY2Vzc2liaWxpdHk9Yil9cmV0dXJuIGEucXVlc3Rpb25Ub2tlbiYmKFQub3B0aW9uYWw9ITApLGEua2luZD09PWFyLkdldEFjY2Vzc29yP1Qua2luZD1cImdldFwiOmEua2luZD09PWFyLlNldEFjY2Vzc29yP1Qua2luZD1cInNldFwiOiFULnN0YXRpYyYmYS5uYW1lLmtpbmQ9PT1hci5TdHJpbmdMaXRlcmFsJiZhLm5hbWUudGV4dD09PVwiY29uc3RydWN0b3JcIiYmVC50eXBlIT09cHIuQVNUX05PREVfVFlQRVMuUHJvcGVydHkmJihULmtpbmQ9XCJjb25zdHJ1Y3RvclwiKSxUfWNhc2UgYXIuQ29uc3RydWN0b3I6e2xldCBmPSgwLGtyLmdldExhc3RNb2RpZmllcikoYSksVD1mJiYoMCxrci5maW5kTmV4dFRva2VuKShmLGEsdGhpcy5hc3QpfHxhLmdldEZpcnN0VG9rZW4oKSxLPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOmEuYm9keT9wci5BU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkV4cHJlc3Npb246cHIuQVNUX05PREVfVFlQRVMuVFNFbXB0eUJvZHlGdW5jdGlvbkV4cHJlc3Npb24saWQ6bnVsbCxwYXJhbXM6dGhpcy5jb252ZXJ0UGFyYW1ldGVycyhhLnBhcmFtZXRlcnMpLGdlbmVyYXRvcjohMSxleHByZXNzaW9uOiExLGFzeW5jOiExLGJvZHk6dGhpcy5jb252ZXJ0Q2hpbGQoYS5ib2R5KSxyYW5nZTpbYS5wYXJhbWV0ZXJzLnBvcy0xLGEuZW5kXX0pO2EudHlwZVBhcmFtZXRlcnMmJihLLnR5cGVQYXJhbWV0ZXJzPXRoaXMuY29udmVydFRTVHlwZVBhcmFtZXRlcnNUb1R5cGVQYXJhbWV0ZXJzRGVjbGFyYXRpb24oYS50eXBlUGFyYW1ldGVycyksdGhpcy5maXhQYXJlbnRMb2NhdGlvbihLLEsudHlwZVBhcmFtZXRlcnMucmFuZ2UpKSxhLnR5cGUmJihLLnJldHVyblR5cGU9dGhpcy5jb252ZXJ0VHlwZUFubm90YXRpb24oYS50eXBlLGEpKTtsZXQgYj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyLG5hbWU6XCJjb25zdHJ1Y3RvclwiLHJhbmdlOltULmdldFN0YXJ0KHRoaXMuYXN0KSxULmVuZF19KSxzZT0oMCxrci5oYXNNb2RpZmllcikoYXIuU3RhdGljS2V5d29yZCxhKSxKPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOigwLGtyLmhhc01vZGlmaWVyKShhci5BYnN0cmFjdEtleXdvcmQsYSk/cHIuQVNUX05PREVfVFlQRVMuVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb246cHIuQVNUX05PREVfVFlQRVMuTWV0aG9kRGVmaW5pdGlvbixrZXk6Yix2YWx1ZTpLLGNvbXB1dGVkOiExLHN0YXRpYzpzZSxraW5kOnNlP1wibWV0aG9kXCI6XCJjb25zdHJ1Y3RvclwiLG92ZXJyaWRlOiExfSksaWU9KDAsa3IuZ2V0VFNOb2RlQWNjZXNzaWJpbGl0eSkoYSk7cmV0dXJuIGllJiYoSi5hY2Nlc3NpYmlsaXR5PWllKSxKfWNhc2UgYXIuRnVuY3Rpb25FeHByZXNzaW9uOntsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkV4cHJlc3Npb24saWQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lKSxnZW5lcmF0b3I6ISFhLmFzdGVyaXNrVG9rZW4scGFyYW1zOnRoaXMuY29udmVydFBhcmFtZXRlcnMoYS5wYXJhbWV0ZXJzKSxib2R5OnRoaXMuY29udmVydENoaWxkKGEuYm9keSksYXN5bmM6KDAsa3IuaGFzTW9kaWZpZXIpKGFyLkFzeW5jS2V5d29yZCxhKSxleHByZXNzaW9uOiExfSk7cmV0dXJuIGEudHlwZSYmKGYucmV0dXJuVHlwZT10aGlzLmNvbnZlcnRUeXBlQW5ub3RhdGlvbihhLnR5cGUsYSkpLGEudHlwZVBhcmFtZXRlcnMmJihmLnR5cGVQYXJhbWV0ZXJzPXRoaXMuY29udmVydFRTVHlwZVBhcmFtZXRlcnNUb1R5cGVQYXJhbWV0ZXJzRGVjbGFyYXRpb24oYS50eXBlUGFyYW1ldGVycykpLGZ9Y2FzZSBhci5TdXBlcktleXdvcmQ6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlN1cGVyfSk7Y2FzZSBhci5BcnJheUJpbmRpbmdQYXR0ZXJuOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5BcnJheVBhdHRlcm4sZWxlbWVudHM6YS5lbGVtZW50cy5tYXAoZj0+dGhpcy5jb252ZXJ0UGF0dGVybihmKSl9KTtjYXNlIGFyLk9taXR0ZWRFeHByZXNzaW9uOnJldHVybiBudWxsO2Nhc2UgYXIuT2JqZWN0QmluZGluZ1BhdHRlcm46cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLk9iamVjdFBhdHRlcm4scHJvcGVydGllczphLmVsZW1lbnRzLm1hcChmPT50aGlzLmNvbnZlcnRQYXR0ZXJuKGYpKX0pO2Nhc2UgYXIuQmluZGluZ0VsZW1lbnQ6aWYoQy5raW5kPT09YXIuQXJyYXlCaW5kaW5nUGF0dGVybil7bGV0IGY9dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lLEMpO3JldHVybiBhLmluaXRpYWxpemVyP3RoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkFzc2lnbm1lbnRQYXR0ZXJuLGxlZnQ6ZixyaWdodDp0aGlzLmNvbnZlcnRDaGlsZChhLmluaXRpYWxpemVyKX0pOmEuZG90RG90RG90VG9rZW4/dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuUmVzdEVsZW1lbnQsYXJndW1lbnQ6Zn0pOmZ9ZWxzZXtsZXQgZjtyZXR1cm4gYS5kb3REb3REb3RUb2tlbj9mPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlJlc3RFbGVtZW50LGFyZ3VtZW50OnRoaXMuY29udmVydENoaWxkKCh3PWEucHJvcGVydHlOYW1lKSE9PW51bGwmJnchPT12b2lkIDA/dzphLm5hbWUpfSk6Zj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Qcm9wZXJ0eSxrZXk6dGhpcy5jb252ZXJ0Q2hpbGQoKEI9YS5wcm9wZXJ0eU5hbWUpIT09bnVsbCYmQiE9PXZvaWQgMD9COmEubmFtZSksdmFsdWU6dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lKSxjb21wdXRlZDpCb29sZWFuKGEucHJvcGVydHlOYW1lJiZhLnByb3BlcnR5TmFtZS5raW5kPT09YXIuQ29tcHV0ZWRQcm9wZXJ0eU5hbWUpLG1ldGhvZDohMSxzaG9ydGhhbmQ6IWEucHJvcGVydHlOYW1lLGtpbmQ6XCJpbml0XCJ9KSxhLmluaXRpYWxpemVyJiYoZi52YWx1ZT10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Bc3NpZ25tZW50UGF0dGVybixsZWZ0OnRoaXMuY29udmVydENoaWxkKGEubmFtZSkscmlnaHQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5pbml0aWFsaXplcikscmFuZ2U6W2EubmFtZS5nZXRTdGFydCh0aGlzLmFzdCksYS5pbml0aWFsaXplci5lbmRdfSkpLGZ9Y2FzZSBhci5BcnJvd0Z1bmN0aW9uOntsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbixnZW5lcmF0b3I6ITEsaWQ6bnVsbCxwYXJhbXM6dGhpcy5jb252ZXJ0UGFyYW1ldGVycyhhLnBhcmFtZXRlcnMpLGJvZHk6dGhpcy5jb252ZXJ0Q2hpbGQoYS5ib2R5KSxhc3luYzooMCxrci5oYXNNb2RpZmllcikoYXIuQXN5bmNLZXl3b3JkLGEpLGV4cHJlc3Npb246YS5ib2R5LmtpbmQhPT1hci5CbG9ja30pO3JldHVybiBhLnR5cGUmJihmLnJldHVyblR5cGU9dGhpcy5jb252ZXJ0VHlwZUFubm90YXRpb24oYS50eXBlLGEpKSxhLnR5cGVQYXJhbWV0ZXJzJiYoZi50eXBlUGFyYW1ldGVycz10aGlzLmNvbnZlcnRUU1R5cGVQYXJhbWV0ZXJzVG9UeXBlUGFyYW1ldGVyc0RlY2xhcmF0aW9uKGEudHlwZVBhcmFtZXRlcnMpKSxmfWNhc2UgYXIuWWllbGRFeHByZXNzaW9uOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5ZaWVsZEV4cHJlc3Npb24sZGVsZWdhdGU6ISFhLmFzdGVyaXNrVG9rZW4sYXJndW1lbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO2Nhc2UgYXIuQXdhaXRFeHByZXNzaW9uOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Bd2FpdEV4cHJlc3Npb24sYXJndW1lbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO2Nhc2UgYXIuTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWw6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRlbXBsYXRlTGl0ZXJhbCxxdWFzaXM6W3RoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRlbXBsYXRlRWxlbWVudCx2YWx1ZTp7cmF3OnRoaXMuYXN0LnRleHQuc2xpY2UoYS5nZXRTdGFydCh0aGlzLmFzdCkrMSxhLmVuZC0xKSxjb29rZWQ6YS50ZXh0fSx0YWlsOiEwfSldLGV4cHJlc3Npb25zOltdfSk7Y2FzZSBhci5UZW1wbGF0ZUV4cHJlc3Npb246e2xldCBmPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRlbXBsYXRlTGl0ZXJhbCxxdWFzaXM6W3RoaXMuY29udmVydENoaWxkKGEuaGVhZCldLGV4cHJlc3Npb25zOltdfSk7cmV0dXJuIGEudGVtcGxhdGVTcGFucy5mb3JFYWNoKFQ9PntmLmV4cHJlc3Npb25zLnB1c2godGhpcy5jb252ZXJ0Q2hpbGQoVC5leHByZXNzaW9uKSksZi5xdWFzaXMucHVzaCh0aGlzLmNvbnZlcnRDaGlsZChULmxpdGVyYWwpKX0pLGZ9Y2FzZSBhci5UYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbix0eXBlUGFyYW1ldGVyczphLnR5cGVBcmd1bWVudHM/dGhpcy5jb252ZXJ0VHlwZUFyZ3VtZW50c1RvVHlwZVBhcmFtZXRlcnMoYS50eXBlQXJndW1lbnRzLGEpOnZvaWQgMCx0YWc6dGhpcy5jb252ZXJ0Q2hpbGQoYS50YWcpLHF1YXNpOnRoaXMuY29udmVydENoaWxkKGEudGVtcGxhdGUpfSk7Y2FzZSBhci5UZW1wbGF0ZUhlYWQ6Y2FzZSBhci5UZW1wbGF0ZU1pZGRsZTpjYXNlIGFyLlRlbXBsYXRlVGFpbDp7bGV0IGY9YS5raW5kPT09YXIuVGVtcGxhdGVUYWlsO3JldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UZW1wbGF0ZUVsZW1lbnQsdmFsdWU6e3Jhdzp0aGlzLmFzdC50ZXh0LnNsaWNlKGEuZ2V0U3RhcnQodGhpcy5hc3QpKzEsYS5lbmQtKGY/MToyKSksY29va2VkOmEudGV4dH0sdGFpbDpmfSl9Y2FzZSBhci5TcHJlYWRBc3NpZ25tZW50OmNhc2UgYXIuU3ByZWFkRWxlbWVudDpyZXR1cm4gdGhpcy5hbGxvd1BhdHRlcm4/dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuUmVzdEVsZW1lbnQsYXJndW1lbnQ6dGhpcy5jb252ZXJ0UGF0dGVybihhLmV4cHJlc3Npb24pfSk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuU3ByZWFkRWxlbWVudCxhcmd1bWVudDp0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pfSk7Y2FzZSBhci5QYXJhbWV0ZXI6e2xldCBmLFQ7cmV0dXJuIGEuZG90RG90RG90VG9rZW4/Zj1UPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlJlc3RFbGVtZW50LGFyZ3VtZW50OnRoaXMuY29udmVydENoaWxkKGEubmFtZSl9KTphLmluaXRpYWxpemVyPyhmPXRoaXMuY29udmVydENoaWxkKGEubmFtZSksVD10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Bc3NpZ25tZW50UGF0dGVybixsZWZ0OmYscmlnaHQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5pbml0aWFsaXplcil9KSxhLm1vZGlmaWVycyYmKFQucmFuZ2VbMF09Zi5yYW5nZVswXSxULmxvYz0oMCxrci5nZXRMb2NGb3IpKFQucmFuZ2VbMF0sVC5yYW5nZVsxXSx0aGlzLmFzdCkpKTpmPVQ9dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lLEMpLGEudHlwZSYmKGYudHlwZUFubm90YXRpb249dGhpcy5jb252ZXJ0VHlwZUFubm90YXRpb24oYS50eXBlLGEpLHRoaXMuZml4UGFyZW50TG9jYXRpb24oZixmLnR5cGVBbm5vdGF0aW9uLnJhbmdlKSksYS5xdWVzdGlvblRva2VuJiYoYS5xdWVzdGlvblRva2VuLmVuZD5mLnJhbmdlWzFdJiYoZi5yYW5nZVsxXT1hLnF1ZXN0aW9uVG9rZW4uZW5kLGYubG9jLmVuZD0oMCxrci5nZXRMaW5lQW5kQ2hhcmFjdGVyRm9yKShmLnJhbmdlWzFdLHRoaXMuYXN0KSksZi5vcHRpb25hbD0hMCksYS5tb2RpZmllcnM/dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNQYXJhbWV0ZXJQcm9wZXJ0eSxhY2Nlc3NpYmlsaXR5OihFPSgwLGtyLmdldFRTTm9kZUFjY2Vzc2liaWxpdHkpKGEpKSE9PW51bGwmJkUhPT12b2lkIDA/RTp2b2lkIDAscmVhZG9ubHk6KDAsa3IuaGFzTW9kaWZpZXIpKGFyLlJlYWRvbmx5S2V5d29yZCxhKXx8dm9pZCAwLHN0YXRpYzooMCxrci5oYXNNb2RpZmllcikoYXIuU3RhdGljS2V5d29yZCxhKXx8dm9pZCAwLGV4cG9ydDooMCxrci5oYXNNb2RpZmllcikoYXIuRXhwb3J0S2V5d29yZCxhKXx8dm9pZCAwLG92ZXJyaWRlOigwLGtyLmhhc01vZGlmaWVyKShhci5PdmVycmlkZUtleXdvcmQsYSl8fHZvaWQgMCxwYXJhbWV0ZXI6VH0pOlR9Y2FzZSBhci5DbGFzc0RlY2xhcmF0aW9uOmNhc2UgYXIuQ2xhc3NFeHByZXNzaW9uOntsZXQgZj0oUT1hLmhlcml0YWdlQ2xhdXNlcykhPT1udWxsJiZRIT09dm9pZCAwP1E6W10sVD1hLmtpbmQ9PT1hci5DbGFzc0RlY2xhcmF0aW9uP3ByLkFTVF9OT0RFX1RZUEVTLkNsYXNzRGVjbGFyYXRpb246cHIuQVNUX05PREVfVFlQRVMuQ2xhc3NFeHByZXNzaW9uLEs9Zi5maW5kKGllPT5pZS50b2tlbj09PWFyLkV4dGVuZHNLZXl3b3JkKSxiPWYuZmluZChpZT0+aWUudG9rZW49PT1hci5JbXBsZW1lbnRzS2V5d29yZCksc2U9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6VCxpZDp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLGJvZHk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuQ2xhc3NCb2R5LGJvZHk6W10scmFuZ2U6W2EubWVtYmVycy5wb3MtMSxhLmVuZF19KSxzdXBlckNsYXNzOkshPW51bGwmJksudHlwZXNbMF0/dGhpcy5jb252ZXJ0Q2hpbGQoSy50eXBlc1swXS5leHByZXNzaW9uKTpudWxsfSk7aWYoSyl7aWYoSy50eXBlcy5sZW5ndGg+MSl0aHJvdygwLGtyLmNyZWF0ZUVycm9yKSh0aGlzLmFzdCxLLnR5cGVzWzFdLnBvcyxcIkNsYXNzZXMgY2FuIG9ubHkgZXh0ZW5kIGEgc2luZ2xlIGNsYXNzLlwiKTshKChsZT1LLnR5cGVzWzBdKT09PW51bGx8fGxlPT09dm9pZCAwKSYmbGUudHlwZUFyZ3VtZW50cyYmKHNlLnN1cGVyVHlwZVBhcmFtZXRlcnM9dGhpcy5jb252ZXJ0VHlwZUFyZ3VtZW50c1RvVHlwZVBhcmFtZXRlcnMoSy50eXBlc1swXS50eXBlQXJndW1lbnRzLEsudHlwZXNbMF0pKX1hLnR5cGVQYXJhbWV0ZXJzJiYoc2UudHlwZVBhcmFtZXRlcnM9dGhpcy5jb252ZXJ0VFNUeXBlUGFyYW1ldGVyc1RvVHlwZVBhcmFtZXRlcnNEZWNsYXJhdGlvbihhLnR5cGVQYXJhbWV0ZXJzKSksYiYmKHNlLmltcGxlbWVudHM9Yi50eXBlcy5tYXAoaWU9PnRoaXMuY29udmVydENoaWxkKGllKSkpLCgwLGtyLmhhc01vZGlmaWVyKShhci5BYnN0cmFjdEtleXdvcmQsYSkmJihzZS5hYnN0cmFjdD0hMCksKDAsa3IuaGFzTW9kaWZpZXIpKGFyLkRlY2xhcmVLZXl3b3JkLGEpJiYoc2UuZGVjbGFyZT0hMCksYS5kZWNvcmF0b3JzJiYoc2UuZGVjb3JhdG9ycz1hLmRlY29yYXRvcnMubWFwKGllPT50aGlzLmNvbnZlcnRDaGlsZChpZSkpKTtsZXQgSj1hLm1lbWJlcnMuZmlsdGVyKGtyLmlzRVNUcmVlQ2xhc3NNZW1iZXIpO3JldHVybiBKLmxlbmd0aCYmKHNlLmJvZHkuYm9keT1KLm1hcChpZT0+dGhpcy5jb252ZXJ0Q2hpbGQoaWUpKSksdGhpcy5maXhFeHBvcnRzKGEsc2UpfWNhc2UgYXIuTW9kdWxlQmxvY2s6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTTW9kdWxlQmxvY2ssYm9keTp0aGlzLmNvbnZlcnRCb2R5RXhwcmVzc2lvbnMoYS5zdGF0ZW1lbnRzLGEpfSk7Y2FzZSBhci5JbXBvcnREZWNsYXJhdGlvbjp7dGhpcy5hc3NlcnRNb2R1bGVTcGVjaWZpZXIoYSwhMSk7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSW1wb3J0RGVjbGFyYXRpb24sc291cmNlOnRoaXMuY29udmVydENoaWxkKGEubW9kdWxlU3BlY2lmaWVyKSxzcGVjaWZpZXJzOltdLGltcG9ydEtpbmQ6XCJ2YWx1ZVwiLGFzc2VydGlvbnM6dGhpcy5jb252ZXJ0QXNzZXJ0Q2xhc3VlKGEuYXNzZXJ0Q2xhdXNlKX0pO2lmKGEuaW1wb3J0Q2xhdXNlJiYoYS5pbXBvcnRDbGF1c2UuaXNUeXBlT25seSYmKGYuaW1wb3J0S2luZD1cInR5cGVcIiksYS5pbXBvcnRDbGF1c2UubmFtZSYmZi5zcGVjaWZpZXJzLnB1c2godGhpcy5jb252ZXJ0Q2hpbGQoYS5pbXBvcnRDbGF1c2UpKSxhLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKSlzd2l0Y2goYS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5raW5kKXtjYXNlIGFyLk5hbWVzcGFjZUltcG9ydDpmLnNwZWNpZmllcnMucHVzaCh0aGlzLmNvbnZlcnRDaGlsZChhLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKSk7YnJlYWs7Y2FzZSBhci5OYW1lZEltcG9ydHM6Zi5zcGVjaWZpZXJzPWYuc3BlY2lmaWVycy5jb25jYXQoYS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5lbGVtZW50cy5tYXAoVD0+dGhpcy5jb252ZXJ0Q2hpbGQoVCkpKTticmVha31yZXR1cm4gZn1jYXNlIGFyLk5hbWVzcGFjZUltcG9ydDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyLGxvY2FsOnRoaXMuY29udmVydENoaWxkKGEubmFtZSl9KTtjYXNlIGFyLkltcG9ydFNwZWNpZmllcjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSW1wb3J0U3BlY2lmaWVyLGxvY2FsOnRoaXMuY29udmVydENoaWxkKGEubmFtZSksaW1wb3J0ZWQ6dGhpcy5jb252ZXJ0Q2hpbGQoKE49YS5wcm9wZXJ0eU5hbWUpIT09bnVsbCYmTiE9PXZvaWQgMD9OOmEubmFtZSksaW1wb3J0S2luZDphLmlzVHlwZU9ubHk/XCJ0eXBlXCI6XCJ2YWx1ZVwifSk7Y2FzZSBhci5JbXBvcnRDbGF1c2U6e2xldCBmPXRoaXMuY29udmVydENoaWxkKGEubmFtZSk7cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkltcG9ydERlZmF1bHRTcGVjaWZpZXIsbG9jYWw6ZixyYW5nZTpmLnJhbmdlfSl9Y2FzZSBhci5FeHBvcnREZWNsYXJhdGlvbjpyZXR1cm4oKHA9YS5leHBvcnRDbGF1c2UpPT09bnVsbHx8cD09PXZvaWQgMD92b2lkIDA6cC5raW5kKT09PWFyLk5hbWVkRXhwb3J0cz8odGhpcy5hc3NlcnRNb2R1bGVTcGVjaWZpZXIoYSwhMCksdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuRXhwb3J0TmFtZWREZWNsYXJhdGlvbixzb3VyY2U6dGhpcy5jb252ZXJ0Q2hpbGQoYS5tb2R1bGVTcGVjaWZpZXIpLHNwZWNpZmllcnM6YS5leHBvcnRDbGF1c2UuZWxlbWVudHMubWFwKGY9PnRoaXMuY29udmVydENoaWxkKGYpKSxleHBvcnRLaW5kOmEuaXNUeXBlT25seT9cInR5cGVcIjpcInZhbHVlXCIsZGVjbGFyYXRpb246bnVsbCxhc3NlcnRpb25zOnRoaXMuY29udmVydEFzc2VydENsYXN1ZShhLmFzc2VydENsYXVzZSl9KSk6KHRoaXMuYXNzZXJ0TW9kdWxlU3BlY2lmaWVyKGEsITEpLHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkV4cG9ydEFsbERlY2xhcmF0aW9uLHNvdXJjZTp0aGlzLmNvbnZlcnRDaGlsZChhLm1vZHVsZVNwZWNpZmllciksZXhwb3J0S2luZDphLmlzVHlwZU9ubHk/XCJ0eXBlXCI6XCJ2YWx1ZVwiLGV4cG9ydGVkOmEuZXhwb3J0Q2xhdXNlJiZhLmV4cG9ydENsYXVzZS5raW5kPT09YXIuTmFtZXNwYWNlRXhwb3J0P3RoaXMuY29udmVydENoaWxkKGEuZXhwb3J0Q2xhdXNlLm5hbWUpOm51bGwsYXNzZXJ0aW9uczp0aGlzLmNvbnZlcnRBc3NlcnRDbGFzdWUoYS5hc3NlcnRDbGF1c2UpfSkpO2Nhc2UgYXIuRXhwb3J0U3BlY2lmaWVyOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5FeHBvcnRTcGVjaWZpZXIsbG9jYWw6dGhpcy5jb252ZXJ0Q2hpbGQoKG09YS5wcm9wZXJ0eU5hbWUpIT09bnVsbCYmbSE9PXZvaWQgMD9tOmEubmFtZSksZXhwb3J0ZWQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lKSxleHBvcnRLaW5kOmEuaXNUeXBlT25seT9cInR5cGVcIjpcInZhbHVlXCJ9KTtjYXNlIGFyLkV4cG9ydEFzc2lnbm1lbnQ6cmV0dXJuIGEuaXNFeHBvcnRFcXVhbHM/dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNFeHBvcnRBc3NpZ25tZW50LGV4cHJlc3Npb246dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pOnRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbixkZWNsYXJhdGlvbjp0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pLGV4cG9ydEtpbmQ6XCJ2YWx1ZVwifSk7Y2FzZSBhci5QcmVmaXhVbmFyeUV4cHJlc3Npb246Y2FzZSBhci5Qb3N0Zml4VW5hcnlFeHByZXNzaW9uOntsZXQgZj0oMCxrci5nZXRUZXh0Rm9yVG9rZW5LaW5kKShhLm9wZXJhdG9yKTtyZXR1cm4gZj09PVwiKytcInx8Zj09PVwiLS1cIj90aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5VcGRhdGVFeHByZXNzaW9uLG9wZXJhdG9yOmYscHJlZml4OmEua2luZD09PWFyLlByZWZpeFVuYXJ5RXhwcmVzc2lvbixhcmd1bWVudDp0aGlzLmNvbnZlcnRDaGlsZChhLm9wZXJhbmQpfSk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVW5hcnlFeHByZXNzaW9uLG9wZXJhdG9yOmYscHJlZml4OmEua2luZD09PWFyLlByZWZpeFVuYXJ5RXhwcmVzc2lvbixhcmd1bWVudDp0aGlzLmNvbnZlcnRDaGlsZChhLm9wZXJhbmQpfSl9Y2FzZSBhci5EZWxldGVFeHByZXNzaW9uOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5VbmFyeUV4cHJlc3Npb24sb3BlcmF0b3I6XCJkZWxldGVcIixwcmVmaXg6ITAsYXJndW1lbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO2Nhc2UgYXIuVm9pZEV4cHJlc3Npb246cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlVuYXJ5RXhwcmVzc2lvbixvcGVyYXRvcjpcInZvaWRcIixwcmVmaXg6ITAsYXJndW1lbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO2Nhc2UgYXIuVHlwZU9mRXhwcmVzc2lvbjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVW5hcnlFeHByZXNzaW9uLG9wZXJhdG9yOlwidHlwZW9mXCIscHJlZml4OiEwLGFyZ3VtZW50OnRoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbil9KTtjYXNlIGFyLlR5cGVPcGVyYXRvcjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNUeXBlT3BlcmF0b3Isb3BlcmF0b3I6KDAsa3IuZ2V0VGV4dEZvclRva2VuS2luZCkoYS5vcGVyYXRvciksdHlwZUFubm90YXRpb246dGhpcy5jb252ZXJ0Q2hpbGQoYS50eXBlKX0pO2Nhc2UgYXIuQmluYXJ5RXhwcmVzc2lvbjppZigoMCxrci5pc0NvbW1hKShhLm9wZXJhdG9yVG9rZW4pKXtsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5TZXF1ZW5jZUV4cHJlc3Npb24sZXhwcmVzc2lvbnM6W119KSxUPXRoaXMuY29udmVydENoaWxkKGEubGVmdCk7cmV0dXJuIFQudHlwZT09PXByLkFTVF9OT0RFX1RZUEVTLlNlcXVlbmNlRXhwcmVzc2lvbiYmYS5sZWZ0LmtpbmQhPT1hci5QYXJlbnRoZXNpemVkRXhwcmVzc2lvbj9mLmV4cHJlc3Npb25zPWYuZXhwcmVzc2lvbnMuY29uY2F0KFQuZXhwcmVzc2lvbnMpOmYuZXhwcmVzc2lvbnMucHVzaChUKSxmLmV4cHJlc3Npb25zLnB1c2godGhpcy5jb252ZXJ0Q2hpbGQoYS5yaWdodCkpLGZ9ZWxzZXtsZXQgZj0oMCxrci5nZXRCaW5hcnlFeHByZXNzaW9uVHlwZSkoYS5vcGVyYXRvclRva2VuKTtyZXR1cm4gdGhpcy5hbGxvd1BhdHRlcm4mJmY9PT1wci5BU1RfTk9ERV9UWVBFUy5Bc3NpZ25tZW50RXhwcmVzc2lvbj90aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5Bc3NpZ25tZW50UGF0dGVybixsZWZ0OnRoaXMuY29udmVydFBhdHRlcm4oYS5sZWZ0LGEpLHJpZ2h0OnRoaXMuY29udmVydENoaWxkKGEucmlnaHQpfSk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6ZixvcGVyYXRvcjooMCxrci5nZXRUZXh0Rm9yVG9rZW5LaW5kKShhLm9wZXJhdG9yVG9rZW4ua2luZCksbGVmdDp0aGlzLmNvbnZlcnRlcihhLmxlZnQsYSx0aGlzLmluVHlwZU1vZGUsZj09PXByLkFTVF9OT0RFX1RZUEVTLkFzc2lnbm1lbnRFeHByZXNzaW9uKSxyaWdodDp0aGlzLmNvbnZlcnRDaGlsZChhLnJpZ2h0KX0pfWNhc2UgYXIuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOntsZXQgZj10aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pLFQ9dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lKSxLPSExLGI9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuTWVtYmVyRXhwcmVzc2lvbixvYmplY3Q6Zixwcm9wZXJ0eTpULGNvbXB1dGVkOkssb3B0aW9uYWw6YS5xdWVzdGlvbkRvdFRva2VuIT09dm9pZCAwfSk7cmV0dXJuIHRoaXMuY29udmVydENoYWluRXhwcmVzc2lvbihiLGEpfWNhc2UgYXIuRWxlbWVudEFjY2Vzc0V4cHJlc3Npb246e2xldCBmPXRoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbiksVD10aGlzLmNvbnZlcnRDaGlsZChhLmFyZ3VtZW50RXhwcmVzc2lvbiksSz0hMCxiPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLk1lbWJlckV4cHJlc3Npb24sb2JqZWN0OmYscHJvcGVydHk6VCxjb21wdXRlZDpLLG9wdGlvbmFsOmEucXVlc3Rpb25Eb3RUb2tlbiE9PXZvaWQgMH0pO3JldHVybiB0aGlzLmNvbnZlcnRDaGFpbkV4cHJlc3Npb24oYixhKX1jYXNlIGFyLkNhbGxFeHByZXNzaW9uOntpZihhLmV4cHJlc3Npb24ua2luZD09PWFyLkltcG9ydEtleXdvcmQpe2lmKGEuYXJndW1lbnRzLmxlbmd0aCE9PTEmJmEuYXJndW1lbnRzLmxlbmd0aCE9PTIpdGhyb3coMCxrci5jcmVhdGVFcnJvcikodGhpcy5hc3QsYS5hcmd1bWVudHMucG9zLFwiRHluYW1pYyBpbXBvcnQgcmVxdWlyZXMgZXhhY3RseSBvbmUgb3IgdHdvIGFyZ3VtZW50cy5cIik7cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkltcG9ydEV4cHJlc3Npb24sc291cmNlOnRoaXMuY29udmVydENoaWxkKGEuYXJndW1lbnRzWzBdKSxhdHRyaWJ1dGVzOmEuYXJndW1lbnRzWzFdP3RoaXMuY29udmVydENoaWxkKGEuYXJndW1lbnRzWzFdKTpudWxsfSl9bGV0IGY9dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKSxUPWEuYXJndW1lbnRzLm1hcChiPT50aGlzLmNvbnZlcnRDaGlsZChiKSksSz10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5DYWxsRXhwcmVzc2lvbixjYWxsZWU6Zixhcmd1bWVudHM6VCxvcHRpb25hbDphLnF1ZXN0aW9uRG90VG9rZW4hPT12b2lkIDB9KTtyZXR1cm4gYS50eXBlQXJndW1lbnRzJiYoSy50eXBlUGFyYW1ldGVycz10aGlzLmNvbnZlcnRUeXBlQXJndW1lbnRzVG9UeXBlUGFyYW1ldGVycyhhLnR5cGVBcmd1bWVudHMsYSkpLHRoaXMuY29udmVydENoYWluRXhwcmVzc2lvbihLLGEpfWNhc2UgYXIuTmV3RXhwcmVzc2lvbjp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuTmV3RXhwcmVzc2lvbixjYWxsZWU6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKSxhcmd1bWVudHM6YS5hcmd1bWVudHM/YS5hcmd1bWVudHMubWFwKFQ9PnRoaXMuY29udmVydENoaWxkKFQpKTpbXX0pO3JldHVybiBhLnR5cGVBcmd1bWVudHMmJihmLnR5cGVQYXJhbWV0ZXJzPXRoaXMuY29udmVydFR5cGVBcmd1bWVudHNUb1R5cGVQYXJhbWV0ZXJzKGEudHlwZUFyZ3VtZW50cyxhKSksZn1jYXNlIGFyLkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuQ29uZGl0aW9uYWxFeHByZXNzaW9uLHRlc3Q6dGhpcy5jb252ZXJ0Q2hpbGQoYS5jb25kaXRpb24pLGNvbnNlcXVlbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS53aGVuVHJ1ZSksYWx0ZXJuYXRlOnRoaXMuY29udmVydENoaWxkKGEud2hlbkZhbHNlKX0pO2Nhc2UgYXIuTWV0YVByb3BlcnR5OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5NZXRhUHJvcGVydHksbWV0YTp0aGlzLmNyZWF0ZU5vZGUoYS5nZXRGaXJzdFRva2VuKCkse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcixuYW1lOigwLGtyLmdldFRleHRGb3JUb2tlbktpbmQpKGEua2V5d29yZFRva2VuKX0pLHByb3BlcnR5OnRoaXMuY29udmVydENoaWxkKGEubmFtZSl9KTtjYXNlIGFyLkRlY29yYXRvcjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuRGVjb3JhdG9yLGV4cHJlc3Npb246dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO2Nhc2UgYXIuU3RyaW5nTGl0ZXJhbDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuTGl0ZXJhbCx2YWx1ZTpDLmtpbmQ9PT1hci5Kc3hBdHRyaWJ1dGU/KDAsa3IudW5lc2NhcGVTdHJpbmdMaXRlcmFsVGV4dCkoYS50ZXh0KTphLnRleHQscmF3OmEuZ2V0VGV4dCgpfSk7Y2FzZSBhci5OdW1lcmljTGl0ZXJhbDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuTGl0ZXJhbCx2YWx1ZTpOdW1iZXIoYS50ZXh0KSxyYXc6YS5nZXRUZXh0KCl9KTtjYXNlIGFyLkJpZ0ludExpdGVyYWw6e2xldCBmPSgwLGtyLmdldFJhbmdlKShhLHRoaXMuYXN0KSxUPXRoaXMuYXN0LnRleHQuc2xpY2UoZlswXSxmWzFdKSxLPVQuc2xpY2UoMCwtMSkucmVwbGFjZSgvXy9nLFwiXCIpLGI9dHlwZW9mIEJpZ0ludDxcInVcIj9CaWdJbnQoSyk6bnVsbDtyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuTGl0ZXJhbCxyYXc6VCx2YWx1ZTpiLGJpZ2ludDpiPT09bnVsbD9LOlN0cmluZyhiKSxyYW5nZTpmfSl9Y2FzZSBhci5SZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWw6e2xldCBmPWEudGV4dC5zbGljZSgxLGEudGV4dC5sYXN0SW5kZXhPZihcIi9cIikpLFQ9YS50ZXh0LnNsaWNlKGEudGV4dC5sYXN0SW5kZXhPZihcIi9cIikrMSksSz1udWxsO3RyeXtLPW5ldyBSZWdFeHAoZixUKX1jYXRjaHtLPW51bGx9cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkxpdGVyYWwsdmFsdWU6SyxyYXc6YS50ZXh0LHJlZ2V4OntwYXR0ZXJuOmYsZmxhZ3M6VH19KX1jYXNlIGFyLlRydWVLZXl3b3JkOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5MaXRlcmFsLHZhbHVlOiEwLHJhdzpcInRydWVcIn0pO2Nhc2UgYXIuRmFsc2VLZXl3b3JkOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5MaXRlcmFsLHZhbHVlOiExLHJhdzpcImZhbHNlXCJ9KTtjYXNlIGFyLk51bGxLZXl3b3JkOnJldHVybiFMci50eXBlc2NyaXB0VmVyc2lvbklzQXRMZWFzdFtcIjQuMFwiXSYmdGhpcy5pblR5cGVNb2RlP3RoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTTnVsbEtleXdvcmR9KTp0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5MaXRlcmFsLHZhbHVlOm51bGwscmF3OlwibnVsbFwifSk7Y2FzZSBhci5FbXB0eVN0YXRlbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuRW1wdHlTdGF0ZW1lbnR9KTtjYXNlIGFyLkRlYnVnZ2VyU3RhdGVtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5EZWJ1Z2dlclN0YXRlbWVudH0pO2Nhc2UgYXIuSnN4RWxlbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYRWxlbWVudCxvcGVuaW5nRWxlbWVudDp0aGlzLmNvbnZlcnRDaGlsZChhLm9wZW5pbmdFbGVtZW50KSxjbG9zaW5nRWxlbWVudDp0aGlzLmNvbnZlcnRDaGlsZChhLmNsb3NpbmdFbGVtZW50KSxjaGlsZHJlbjphLmNoaWxkcmVuLm1hcChmPT50aGlzLmNvbnZlcnRDaGlsZChmKSl9KTtjYXNlIGFyLkpzeEZyYWdtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5KU1hGcmFnbWVudCxvcGVuaW5nRnJhZ21lbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5vcGVuaW5nRnJhZ21lbnQpLGNsb3NpbmdGcmFnbWVudDp0aGlzLmNvbnZlcnRDaGlsZChhLmNsb3NpbmdGcmFnbWVudCksY2hpbGRyZW46YS5jaGlsZHJlbi5tYXAoZj0+dGhpcy5jb252ZXJ0Q2hpbGQoZikpfSk7Y2FzZSBhci5Kc3hTZWxmQ2xvc2luZ0VsZW1lbnQ6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkpTWEVsZW1lbnQsb3BlbmluZ0VsZW1lbnQ6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYT3BlbmluZ0VsZW1lbnQsdHlwZVBhcmFtZXRlcnM6YS50eXBlQXJndW1lbnRzP3RoaXMuY29udmVydFR5cGVBcmd1bWVudHNUb1R5cGVQYXJhbWV0ZXJzKGEudHlwZUFyZ3VtZW50cyxhKTp2b2lkIDAsc2VsZkNsb3Npbmc6ITAsbmFtZTp0aGlzLmNvbnZlcnRKU1hUYWdOYW1lKGEudGFnTmFtZSxhKSxhdHRyaWJ1dGVzOmEuYXR0cmlidXRlcy5wcm9wZXJ0aWVzLm1hcChmPT50aGlzLmNvbnZlcnRDaGlsZChmKSkscmFuZ2U6KDAsa3IuZ2V0UmFuZ2UpKGEsdGhpcy5hc3QpfSksY2xvc2luZ0VsZW1lbnQ6bnVsbCxjaGlsZHJlbjpbXX0pO2Nhc2UgYXIuSnN4T3BlbmluZ0VsZW1lbnQ6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkpTWE9wZW5pbmdFbGVtZW50LHR5cGVQYXJhbWV0ZXJzOmEudHlwZUFyZ3VtZW50cz90aGlzLmNvbnZlcnRUeXBlQXJndW1lbnRzVG9UeXBlUGFyYW1ldGVycyhhLnR5cGVBcmd1bWVudHMsYSk6dm9pZCAwLHNlbGZDbG9zaW5nOiExLG5hbWU6dGhpcy5jb252ZXJ0SlNYVGFnTmFtZShhLnRhZ05hbWUsYSksYXR0cmlidXRlczphLmF0dHJpYnV0ZXMucHJvcGVydGllcy5tYXAoZj0+dGhpcy5jb252ZXJ0Q2hpbGQoZikpfSk7Y2FzZSBhci5Kc3hDbG9zaW5nRWxlbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYQ2xvc2luZ0VsZW1lbnQsbmFtZTp0aGlzLmNvbnZlcnRKU1hUYWdOYW1lKGEudGFnTmFtZSxhKX0pO2Nhc2UgYXIuSnN4T3BlbmluZ0ZyYWdtZW50OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5KU1hPcGVuaW5nRnJhZ21lbnR9KTtjYXNlIGFyLkpzeENsb3NpbmdGcmFnbWVudDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYQ2xvc2luZ0ZyYWdtZW50fSk7Y2FzZSBhci5Kc3hFeHByZXNzaW9uOntsZXQgZj1hLmV4cHJlc3Npb24/dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKTp0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5KU1hFbXB0eUV4cHJlc3Npb24scmFuZ2U6W2EuZ2V0U3RhcnQodGhpcy5hc3QpKzEsYS5nZXRFbmQoKS0xXX0pO3JldHVybiBhLmRvdERvdERvdFRva2VuP3RoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkpTWFNwcmVhZENoaWxkLGV4cHJlc3Npb246Zn0pOnRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkpTWEV4cHJlc3Npb25Db250YWluZXIsZXhwcmVzc2lvbjpmfSl9Y2FzZSBhci5Kc3hBdHRyaWJ1dGU6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLkpTWEF0dHJpYnV0ZSxuYW1lOnRoaXMuY29udmVydEpTWE5hbWVzcGFjZU9ySWRlbnRpZmllcihhLm5hbWUpLHZhbHVlOnRoaXMuY29udmVydENoaWxkKGEuaW5pdGlhbGl6ZXIpfSk7Y2FzZSBhci5Kc3hUZXh0OntsZXQgZj1hLmdldEZ1bGxTdGFydCgpLFQ9YS5nZXRFbmQoKSxLPXRoaXMuYXN0LnRleHQuc2xpY2UoZixUKTtyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuSlNYVGV4dCx2YWx1ZTooMCxrci51bmVzY2FwZVN0cmluZ0xpdGVyYWxUZXh0KShLKSxyYXc6SyxyYW5nZTpbZixUXX0pfWNhc2UgYXIuSnN4U3ByZWFkQXR0cmlidXRlOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5KU1hTcHJlYWRBdHRyaWJ1dGUsYXJndW1lbnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO2Nhc2UgYXIuUXVhbGlmaWVkTmFtZTpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNRdWFsaWZpZWROYW1lLGxlZnQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5sZWZ0KSxyaWdodDp0aGlzLmNvbnZlcnRDaGlsZChhLnJpZ2h0KX0pO2Nhc2UgYXIuVHlwZVJlZmVyZW5jZTpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNUeXBlUmVmZXJlbmNlLHR5cGVOYW1lOnRoaXMuY29udmVydFR5cGUoYS50eXBlTmFtZSksdHlwZVBhcmFtZXRlcnM6YS50eXBlQXJndW1lbnRzP3RoaXMuY29udmVydFR5cGVBcmd1bWVudHNUb1R5cGVQYXJhbWV0ZXJzKGEudHlwZUFyZ3VtZW50cyxhKTp2b2lkIDB9KTtjYXNlIGFyLlR5cGVQYXJhbWV0ZXI6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTVHlwZVBhcmFtZXRlcixuYW1lOnRoaXMuY29udmVydFR5cGUoYS5uYW1lKSxjb25zdHJhaW50OmEuY29uc3RyYWludD90aGlzLmNvbnZlcnRUeXBlKGEuY29uc3RyYWludCk6dm9pZCAwLGRlZmF1bHQ6YS5kZWZhdWx0P3RoaXMuY29udmVydFR5cGUoYS5kZWZhdWx0KTp2b2lkIDAsaW46KDAsa3IuaGFzTW9kaWZpZXIpKGFyLkluS2V5d29yZCxhKSxvdXQ6KDAsa3IuaGFzTW9kaWZpZXIpKGFyLk91dEtleXdvcmQsYSl9KTtjYXNlIGFyLlRoaXNUeXBlOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU1RoaXNUeXBlfSk7Y2FzZSBhci5BbnlLZXl3b3JkOmNhc2UgYXIuQmlnSW50S2V5d29yZDpjYXNlIGFyLkJvb2xlYW5LZXl3b3JkOmNhc2UgYXIuTmV2ZXJLZXl3b3JkOmNhc2UgYXIuTnVtYmVyS2V5d29yZDpjYXNlIGFyLk9iamVjdEtleXdvcmQ6Y2FzZSBhci5TdHJpbmdLZXl3b3JkOmNhc2UgYXIuU3ltYm9sS2V5d29yZDpjYXNlIGFyLlVua25vd25LZXl3b3JkOmNhc2UgYXIuVm9pZEtleXdvcmQ6Y2FzZSBhci5VbmRlZmluZWRLZXl3b3JkOmNhc2UgYXIuSW50cmluc2ljS2V5d29yZDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVNbXCJUU1wiLmNvbmNhdChhclthLmtpbmRdKV19KTtjYXNlIGFyLk5vbk51bGxFeHByZXNzaW9uOntsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU05vbk51bGxFeHByZXNzaW9uLGV4cHJlc3Npb246dGhpcy5jb252ZXJ0Q2hpbGQoYS5leHByZXNzaW9uKX0pO3JldHVybiB0aGlzLmNvbnZlcnRDaGFpbkV4cHJlc3Npb24oZixhKX1jYXNlIGFyLlR5cGVMaXRlcmFsOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU1R5cGVMaXRlcmFsLG1lbWJlcnM6YS5tZW1iZXJzLm1hcChmPT50aGlzLmNvbnZlcnRDaGlsZChmKSl9KTtjYXNlIGFyLkFycmF5VHlwZTpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNBcnJheVR5cGUsZWxlbWVudFR5cGU6dGhpcy5jb252ZXJ0VHlwZShhLmVsZW1lbnRUeXBlKX0pO2Nhc2UgYXIuSW5kZXhlZEFjY2Vzc1R5cGU6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTSW5kZXhlZEFjY2Vzc1R5cGUsb2JqZWN0VHlwZTp0aGlzLmNvbnZlcnRUeXBlKGEub2JqZWN0VHlwZSksaW5kZXhUeXBlOnRoaXMuY29udmVydFR5cGUoYS5pbmRleFR5cGUpfSk7Y2FzZSBhci5Db25kaXRpb25hbFR5cGU6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTQ29uZGl0aW9uYWxUeXBlLGNoZWNrVHlwZTp0aGlzLmNvbnZlcnRUeXBlKGEuY2hlY2tUeXBlKSxleHRlbmRzVHlwZTp0aGlzLmNvbnZlcnRUeXBlKGEuZXh0ZW5kc1R5cGUpLHRydWVUeXBlOnRoaXMuY29udmVydFR5cGUoYS50cnVlVHlwZSksZmFsc2VUeXBlOnRoaXMuY29udmVydFR5cGUoYS5mYWxzZVR5cGUpfSk7Y2FzZSBhci5UeXBlUXVlcnk6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTVHlwZVF1ZXJ5LGV4cHJOYW1lOnRoaXMuY29udmVydFR5cGUoYS5leHByTmFtZSksdHlwZVBhcmFtZXRlcnM6YS50eXBlQXJndW1lbnRzJiZ0aGlzLmNvbnZlcnRUeXBlQXJndW1lbnRzVG9UeXBlUGFyYW1ldGVycyhhLnR5cGVBcmd1bWVudHMsYSl9KTtjYXNlIGFyLk1hcHBlZFR5cGU6e2xldCBmPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTTWFwcGVkVHlwZSx0eXBlUGFyYW1ldGVyOnRoaXMuY29udmVydFR5cGUoYS50eXBlUGFyYW1ldGVyKSxuYW1lVHlwZTooRz10aGlzLmNvbnZlcnRUeXBlKGEubmFtZVR5cGUpKSE9PW51bGwmJkchPT12b2lkIDA/RzpudWxsfSk7cmV0dXJuIGEucmVhZG9ubHlUb2tlbiYmKGEucmVhZG9ubHlUb2tlbi5raW5kPT09YXIuUmVhZG9ubHlLZXl3b3JkP2YucmVhZG9ubHk9ITA6Zi5yZWFkb25seT0oMCxrci5nZXRUZXh0Rm9yVG9rZW5LaW5kKShhLnJlYWRvbmx5VG9rZW4ua2luZCkpLGEucXVlc3Rpb25Ub2tlbiYmKGEucXVlc3Rpb25Ub2tlbi5raW5kPT09YXIuUXVlc3Rpb25Ub2tlbj9mLm9wdGlvbmFsPSEwOmYub3B0aW9uYWw9KDAsa3IuZ2V0VGV4dEZvclRva2VuS2luZCkoYS5xdWVzdGlvblRva2VuLmtpbmQpKSxhLnR5cGUmJihmLnR5cGVBbm5vdGF0aW9uPXRoaXMuY29udmVydFR5cGUoYS50eXBlKSksZn1jYXNlIGFyLlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uOnJldHVybiB0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24sQyk7Y2FzZSBhci5UeXBlQWxpYXNEZWNsYXJhdGlvbjp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNUeXBlQWxpYXNEZWNsYXJhdGlvbixpZDp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLHR5cGVBbm5vdGF0aW9uOnRoaXMuY29udmVydFR5cGUoYS50eXBlKX0pO3JldHVybigwLGtyLmhhc01vZGlmaWVyKShhci5EZWNsYXJlS2V5d29yZCxhKSYmKGYuZGVjbGFyZT0hMCksYS50eXBlUGFyYW1ldGVycyYmKGYudHlwZVBhcmFtZXRlcnM9dGhpcy5jb252ZXJ0VFNUeXBlUGFyYW1ldGVyc1RvVHlwZVBhcmFtZXRlcnNEZWNsYXJhdGlvbihhLnR5cGVQYXJhbWV0ZXJzKSksdGhpcy5maXhFeHBvcnRzKGEsZil9Y2FzZSBhci5NZXRob2RTaWduYXR1cmU6cmV0dXJuIHRoaXMuY29udmVydE1ldGhvZFNpZ25hdHVyZShhKTtjYXNlIGFyLlByb3BlcnR5U2lnbmF0dXJlOntsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU1Byb3BlcnR5U2lnbmF0dXJlLG9wdGlvbmFsOigwLGtyLmlzT3B0aW9uYWwpKGEpfHx2b2lkIDAsY29tcHV0ZWQ6KDAsa3IuaXNDb21wdXRlZFByb3BlcnR5KShhLm5hbWUpLGtleTp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLHR5cGVBbm5vdGF0aW9uOmEudHlwZT90aGlzLmNvbnZlcnRUeXBlQW5ub3RhdGlvbihhLnR5cGUsYSk6dm9pZCAwLGluaXRpYWxpemVyOnRoaXMuY29udmVydENoaWxkKGEuaW5pdGlhbGl6ZXIpfHx2b2lkIDAscmVhZG9ubHk6KDAsa3IuaGFzTW9kaWZpZXIpKGFyLlJlYWRvbmx5S2V5d29yZCxhKXx8dm9pZCAwLHN0YXRpYzooMCxrci5oYXNNb2RpZmllcikoYXIuU3RhdGljS2V5d29yZCxhKXx8dm9pZCAwLGV4cG9ydDooMCxrci5oYXNNb2RpZmllcikoYXIuRXhwb3J0S2V5d29yZCxhKXx8dm9pZCAwfSksVD0oMCxrci5nZXRUU05vZGVBY2Nlc3NpYmlsaXR5KShhKTtyZXR1cm4gVCYmKGYuYWNjZXNzaWJpbGl0eT1UKSxmfWNhc2UgYXIuSW5kZXhTaWduYXR1cmU6e2xldCBmPXRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTSW5kZXhTaWduYXR1cmUscGFyYW1ldGVyczphLnBhcmFtZXRlcnMubWFwKEs9PnRoaXMuY29udmVydENoaWxkKEspKX0pO2EudHlwZSYmKGYudHlwZUFubm90YXRpb249dGhpcy5jb252ZXJ0VHlwZUFubm90YXRpb24oYS50eXBlLGEpKSwoMCxrci5oYXNNb2RpZmllcikoYXIuUmVhZG9ubHlLZXl3b3JkLGEpJiYoZi5yZWFkb25seT0hMCk7bGV0IFQ9KDAsa3IuZ2V0VFNOb2RlQWNjZXNzaWJpbGl0eSkoYSk7cmV0dXJuIFQmJihmLmFjY2Vzc2liaWxpdHk9VCksKDAsa3IuaGFzTW9kaWZpZXIpKGFyLkV4cG9ydEtleXdvcmQsYSkmJihmLmV4cG9ydD0hMCksKDAsa3IuaGFzTW9kaWZpZXIpKGFyLlN0YXRpY0tleXdvcmQsYSkmJihmLnN0YXRpYz0hMCksZn1jYXNlIGFyLkNvbnN0cnVjdG9yVHlwZTp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNDb25zdHJ1Y3RvclR5cGUscGFyYW1zOnRoaXMuY29udmVydFBhcmFtZXRlcnMoYS5wYXJhbWV0ZXJzKSxhYnN0cmFjdDooMCxrci5oYXNNb2RpZmllcikoYXIuQWJzdHJhY3RLZXl3b3JkLGEpfSk7cmV0dXJuIGEudHlwZSYmKGYucmV0dXJuVHlwZT10aGlzLmNvbnZlcnRUeXBlQW5ub3RhdGlvbihhLnR5cGUsYSkpLGEudHlwZVBhcmFtZXRlcnMmJihmLnR5cGVQYXJhbWV0ZXJzPXRoaXMuY29udmVydFRTVHlwZVBhcmFtZXRlcnNUb1R5cGVQYXJhbWV0ZXJzRGVjbGFyYXRpb24oYS50eXBlUGFyYW1ldGVycykpLGZ9Y2FzZSBhci5GdW5jdGlvblR5cGU6Y2FzZSBhci5Db25zdHJ1Y3RTaWduYXR1cmU6Y2FzZSBhci5DYWxsU2lnbmF0dXJlOntsZXQgZj1hLmtpbmQ9PT1hci5Db25zdHJ1Y3RTaWduYXR1cmU/cHIuQVNUX05PREVfVFlQRVMuVFNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsYXJhdGlvbjphLmtpbmQ9PT1hci5DYWxsU2lnbmF0dXJlP3ByLkFTVF9OT0RFX1RZUEVTLlRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uOnByLkFTVF9OT0RFX1RZUEVTLlRTRnVuY3Rpb25UeXBlLFQ9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6ZixwYXJhbXM6dGhpcy5jb252ZXJ0UGFyYW1ldGVycyhhLnBhcmFtZXRlcnMpfSk7cmV0dXJuIGEudHlwZSYmKFQucmV0dXJuVHlwZT10aGlzLmNvbnZlcnRUeXBlQW5ub3RhdGlvbihhLnR5cGUsYSkpLGEudHlwZVBhcmFtZXRlcnMmJihULnR5cGVQYXJhbWV0ZXJzPXRoaXMuY29udmVydFRTVHlwZVBhcmFtZXRlcnNUb1R5cGVQYXJhbWV0ZXJzRGVjbGFyYXRpb24oYS50eXBlUGFyYW1ldGVycykpLFR9Y2FzZSBhci5FeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHM6e2xldCBmPUMua2luZCxUPWY9PT1hci5JbnRlcmZhY2VEZWNsYXJhdGlvbj9wci5BU1RfTk9ERV9UWVBFUy5UU0ludGVyZmFjZUhlcml0YWdlOmY9PT1hci5IZXJpdGFnZUNsYXVzZT9wci5BU1RfTk9ERV9UWVBFUy5UU0NsYXNzSW1wbGVtZW50czpwci5BU1RfTk9ERV9UWVBFUy5UU0luc3RhbnRpYXRpb25FeHByZXNzaW9uLEs9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6VCxleHByZXNzaW9uOnRoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbil9KTtyZXR1cm4gYS50eXBlQXJndW1lbnRzJiYoSy50eXBlUGFyYW1ldGVycz10aGlzLmNvbnZlcnRUeXBlQXJndW1lbnRzVG9UeXBlUGFyYW1ldGVycyhhLnR5cGVBcmd1bWVudHMsYSkpLEt9Y2FzZSBhci5JbnRlcmZhY2VEZWNsYXJhdGlvbjp7bGV0IGY9KG9lPWEuaGVyaXRhZ2VDbGF1c2VzKSE9PW51bGwmJm9lIT09dm9pZCAwP29lOltdLFQ9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNJbnRlcmZhY2VEZWNsYXJhdGlvbixib2R5OnRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTSW50ZXJmYWNlQm9keSxib2R5OmEubWVtYmVycy5tYXAoSz0+dGhpcy5jb252ZXJ0Q2hpbGQoSykpLHJhbmdlOlthLm1lbWJlcnMucG9zLTEsYS5lbmRdfSksaWQ6dGhpcy5jb252ZXJ0Q2hpbGQoYS5uYW1lKX0pO2lmKGEudHlwZVBhcmFtZXRlcnMmJihULnR5cGVQYXJhbWV0ZXJzPXRoaXMuY29udmVydFRTVHlwZVBhcmFtZXRlcnNUb1R5cGVQYXJhbWV0ZXJzRGVjbGFyYXRpb24oYS50eXBlUGFyYW1ldGVycykpLGYubGVuZ3RoPjApe2xldCBLPVtdLGI9W107Zm9yKGxldCBzZSBvZiBmKWlmKHNlLnRva2VuPT09YXIuRXh0ZW5kc0tleXdvcmQpZm9yKGxldCBKIG9mIHNlLnR5cGVzKUsucHVzaCh0aGlzLmNvbnZlcnRDaGlsZChKLGEpKTtlbHNlIGZvcihsZXQgSiBvZiBzZS50eXBlcyliLnB1c2godGhpcy5jb252ZXJ0Q2hpbGQoSixhKSk7Sy5sZW5ndGgmJihULmV4dGVuZHM9SyksYi5sZW5ndGgmJihULmltcGxlbWVudHM9Yil9cmV0dXJuKDAsa3IuaGFzTW9kaWZpZXIpKGFyLkFic3RyYWN0S2V5d29yZCxhKSYmKFQuYWJzdHJhY3Q9ITApLCgwLGtyLmhhc01vZGlmaWVyKShhci5EZWNsYXJlS2V5d29yZCxhKSYmKFQuZGVjbGFyZT0hMCksdGhpcy5maXhFeHBvcnRzKGEsVCl9Y2FzZSBhci5UeXBlUHJlZGljYXRlOntsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU1R5cGVQcmVkaWNhdGUsYXNzZXJ0czphLmFzc2VydHNNb2RpZmllciE9PXZvaWQgMCxwYXJhbWV0ZXJOYW1lOnRoaXMuY29udmVydENoaWxkKGEucGFyYW1ldGVyTmFtZSksdHlwZUFubm90YXRpb246bnVsbH0pO3JldHVybiBhLnR5cGUmJihmLnR5cGVBbm5vdGF0aW9uPXRoaXMuY29udmVydFR5cGVBbm5vdGF0aW9uKGEudHlwZSxhKSxmLnR5cGVBbm5vdGF0aW9uLmxvYz1mLnR5cGVBbm5vdGF0aW9uLnR5cGVBbm5vdGF0aW9uLmxvYyxmLnR5cGVBbm5vdGF0aW9uLnJhbmdlPWYudHlwZUFubm90YXRpb24udHlwZUFubm90YXRpb24ucmFuZ2UpLGZ9Y2FzZSBhci5JbXBvcnRUeXBlOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU0ltcG9ydFR5cGUsaXNUeXBlT2Y6ISFhLmlzVHlwZU9mLHBhcmFtZXRlcjp0aGlzLmNvbnZlcnRDaGlsZChhLmFyZ3VtZW50KSxxdWFsaWZpZXI6dGhpcy5jb252ZXJ0Q2hpbGQoYS5xdWFsaWZpZXIpLHR5cGVQYXJhbWV0ZXJzOmEudHlwZUFyZ3VtZW50cz90aGlzLmNvbnZlcnRUeXBlQXJndW1lbnRzVG9UeXBlUGFyYW1ldGVycyhhLnR5cGVBcmd1bWVudHMsYSk6bnVsbH0pO2Nhc2UgYXIuRW51bURlY2xhcmF0aW9uOntsZXQgZj10aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU0VudW1EZWNsYXJhdGlvbixpZDp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLG1lbWJlcnM6YS5tZW1iZXJzLm1hcChUPT50aGlzLmNvbnZlcnRDaGlsZChUKSl9KTtyZXR1cm4gdGhpcy5hcHBseU1vZGlmaWVyc1RvUmVzdWx0KGYsYS5tb2RpZmllcnMpLHRoaXMuZml4RXhwb3J0cyhhLGYpfWNhc2UgYXIuRW51bU1lbWJlcjp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNFbnVtTWVtYmVyLGlkOnRoaXMuY29udmVydENoaWxkKGEubmFtZSl9KTtyZXR1cm4gYS5pbml0aWFsaXplciYmKGYuaW5pdGlhbGl6ZXI9dGhpcy5jb252ZXJ0Q2hpbGQoYS5pbml0aWFsaXplcikpLGEubmFtZS5raW5kPT09b2kuU3ludGF4S2luZC5Db21wdXRlZFByb3BlcnR5TmFtZSYmKGYuY29tcHV0ZWQ9ITApLGZ9Y2FzZSBhci5Nb2R1bGVEZWNsYXJhdGlvbjp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNNb2R1bGVEZWNsYXJhdGlvbixpZDp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpfSk7cmV0dXJuIGEuYm9keSYmKGYuYm9keT10aGlzLmNvbnZlcnRDaGlsZChhLmJvZHkpKSx0aGlzLmFwcGx5TW9kaWZpZXJzVG9SZXN1bHQoZixhLm1vZGlmaWVycyksYS5mbGFncyZvaS5Ob2RlRmxhZ3MuR2xvYmFsQXVnbWVudGF0aW9uJiYoZi5nbG9iYWw9ITApLHRoaXMuZml4RXhwb3J0cyhhLGYpfWNhc2UgYXIuUGFyZW50aGVzaXplZFR5cGU6cmV0dXJuIHRoaXMuY29udmVydFR5cGUoYS50eXBlKTtjYXNlIGFyLlVuaW9uVHlwZTpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNVbmlvblR5cGUsdHlwZXM6YS50eXBlcy5tYXAoZj0+dGhpcy5jb252ZXJ0VHlwZShmKSl9KTtjYXNlIGFyLkludGVyc2VjdGlvblR5cGU6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTSW50ZXJzZWN0aW9uVHlwZSx0eXBlczphLnR5cGVzLm1hcChmPT50aGlzLmNvbnZlcnRUeXBlKGYpKX0pO2Nhc2UgYXIuQXNFeHByZXNzaW9uOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU0FzRXhwcmVzc2lvbixleHByZXNzaW9uOnRoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbiksdHlwZUFubm90YXRpb246dGhpcy5jb252ZXJ0VHlwZShhLnR5cGUpfSk7Y2FzZSBhci5JbmZlclR5cGU6cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTSW5mZXJUeXBlLHR5cGVQYXJhbWV0ZXI6dGhpcy5jb252ZXJ0VHlwZShhLnR5cGVQYXJhbWV0ZXIpfSk7Y2FzZSBhci5MaXRlcmFsVHlwZTpyZXR1cm4gTHIudHlwZXNjcmlwdFZlcnNpb25Jc0F0TGVhc3RbXCI0LjBcIl0mJmEubGl0ZXJhbC5raW5kPT09YXIuTnVsbEtleXdvcmQ/dGhpcy5jcmVhdGVOb2RlKGEubGl0ZXJhbCx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU051bGxLZXl3b3JkfSk6dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNMaXRlcmFsVHlwZSxsaXRlcmFsOnRoaXMuY29udmVydFR5cGUoYS5saXRlcmFsKX0pO2Nhc2UgYXIuVHlwZUFzc2VydGlvbkV4cHJlc3Npb246cmV0dXJuIHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTVHlwZUFzc2VydGlvbix0eXBlQW5ub3RhdGlvbjp0aGlzLmNvbnZlcnRUeXBlKGEudHlwZSksZXhwcmVzc2lvbjp0aGlzLmNvbnZlcnRDaGlsZChhLmV4cHJlc3Npb24pfSk7Y2FzZSBhci5JbXBvcnRFcXVhbHNEZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbixpZDp0aGlzLmNvbnZlcnRDaGlsZChhLm5hbWUpLG1vZHVsZVJlZmVyZW5jZTp0aGlzLmNvbnZlcnRDaGlsZChhLm1vZHVsZVJlZmVyZW5jZSksaW1wb3J0S2luZDphLmlzVHlwZU9ubHk/XCJ0eXBlXCI6XCJ2YWx1ZVwiLGlzRXhwb3J0OigwLGtyLmhhc01vZGlmaWVyKShhci5FeHBvcnRLZXl3b3JkLGEpfSk7Y2FzZSBhci5FeHRlcm5hbE1vZHVsZVJlZmVyZW5jZTpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSxleHByZXNzaW9uOnRoaXMuY29udmVydENoaWxkKGEuZXhwcmVzc2lvbil9KTtjYXNlIGFyLk5hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU05hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uLGlkOnRoaXMuY29udmVydENoaWxkKGEubmFtZSl9KTtjYXNlIGFyLkFic3RyYWN0S2V5d29yZDpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNBYnN0cmFjdEtleXdvcmR9KTtjYXNlIGFyLlR1cGxlVHlwZTp7bGV0IGY9XCJlbGVtZW50VHlwZXNcImluIGE/YS5lbGVtZW50VHlwZXMubWFwKFQ9PnRoaXMuY29udmVydFR5cGUoVCkpOmEuZWxlbWVudHMubWFwKFQ9PnRoaXMuY29udmVydFR5cGUoVCkpO3JldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU1R1cGxlVHlwZSxlbGVtZW50VHlwZXM6Zn0pfWNhc2UgYXIuTmFtZWRUdXBsZU1lbWJlcjp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNOYW1lZFR1cGxlTWVtYmVyLGVsZW1lbnRUeXBlOnRoaXMuY29udmVydFR5cGUoYS50eXBlLGEpLGxhYmVsOnRoaXMuY29udmVydENoaWxkKGEubmFtZSxhKSxvcHRpb25hbDphLnF1ZXN0aW9uVG9rZW4hPW51bGx9KTtyZXR1cm4gYS5kb3REb3REb3RUb2tlbj8oZi5yYW5nZVswXT1mLmxhYmVsLnJhbmdlWzBdLGYubG9jLnN0YXJ0PWYubGFiZWwubG9jLnN0YXJ0LHRoaXMuY3JlYXRlTm9kZShhLHt0eXBlOnByLkFTVF9OT0RFX1RZUEVTLlRTUmVzdFR5cGUsdHlwZUFubm90YXRpb246Zn0pKTpmfWNhc2UgYXIuT3B0aW9uYWxUeXBlOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU09wdGlvbmFsVHlwZSx0eXBlQW5ub3RhdGlvbjp0aGlzLmNvbnZlcnRUeXBlKGEudHlwZSl9KTtjYXNlIGFyLlJlc3RUeXBlOnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5UU1Jlc3RUeXBlLHR5cGVBbm5vdGF0aW9uOnRoaXMuY29udmVydFR5cGUoYS50eXBlKX0pO2Nhc2UgYXIuVGVtcGxhdGVMaXRlcmFsVHlwZTp7bGV0IGY9dGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuVFNUZW1wbGF0ZUxpdGVyYWxUeXBlLHF1YXNpczpbdGhpcy5jb252ZXJ0Q2hpbGQoYS5oZWFkKV0sdHlwZXM6W119KTtyZXR1cm4gYS50ZW1wbGF0ZVNwYW5zLmZvckVhY2goVD0+e2YudHlwZXMucHVzaCh0aGlzLmNvbnZlcnRDaGlsZChULnR5cGUpKSxmLnF1YXNpcy5wdXNoKHRoaXMuY29udmVydENoaWxkKFQubGl0ZXJhbCkpfSksZn1jYXNlIGFyLkNsYXNzU3RhdGljQmxvY2tEZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy5jcmVhdGVOb2RlKGEse3R5cGU6cHIuQVNUX05PREVfVFlQRVMuU3RhdGljQmxvY2ssYm9keTp0aGlzLmNvbnZlcnRCb2R5RXhwcmVzc2lvbnMoYS5ib2R5LnN0YXRlbWVudHMsYSl9KTtjYXNlIGFyLkFzc2VydEVudHJ5OnJldHVybiB0aGlzLmNyZWF0ZU5vZGUoYSx7dHlwZTpwci5BU1RfTk9ERV9UWVBFUy5JbXBvcnRBdHRyaWJ1dGUsa2V5OnRoaXMuY29udmVydENoaWxkKGEubmFtZSksdmFsdWU6dGhpcy5jb252ZXJ0Q2hpbGQoYS52YWx1ZSl9KTtkZWZhdWx0OnJldHVybiB0aGlzLmRlZXBseUNvcHkoYSl9fX07TS5Db252ZXJ0ZXI9ZX19KSxVZD17fTtoMShVZCx7X19hc3NpZ246KCk9PnYxLF9fYXN5bmNEZWxlZ2F0b3I6KCk9PkpVLF9fYXN5bmNHZW5lcmF0b3I6KCk9PkJVLF9fYXN5bmNWYWx1ZXM6KCk9PmpVLF9fYXdhaXQ6KCk9Plh5LF9fYXdhaXRlcjooKT0+d1UsX19jbGFzc1ByaXZhdGVGaWVsZEdldDooKT0+cVUsX19jbGFzc1ByaXZhdGVGaWVsZFNldDooKT0+VlUsX19jcmVhdGVCaW5kaW5nOigpPT5GVSxfX2RlY29yYXRlOigpPT5OVSxfX2V4cG9ydFN0YXI6KCk9Pk1VLF9fZXh0ZW5kczooKT0+a1UsX19nZW5lcmF0b3I6KCk9Pk9VLF9faW1wb3J0RGVmYXVsdDooKT0+V1UsX19pbXBvcnRTdGFyOigpPT56VSxfX21ha2VUZW1wbGF0ZU9iamVjdDooKT0+VVUsX19tZXRhZGF0YTooKT0+SVUsX19wYXJhbTooKT0+UFUsX19yZWFkOigpPT5yMyxfX3Jlc3Q6KCk9PkFVLF9fc3ByZWFkOigpPT5MVSxfX3NwcmVhZEFycmF5czooKT0+UlUsX192YWx1ZXM6KCk9PlVUfSk7ZnVuY3Rpb24ga1UoTSxyZSl7bTEoTSxyZSk7ZnVuY3Rpb24gVmUoKXt0aGlzLmNvbnN0cnVjdG9yPU19TS5wcm90b3R5cGU9cmU9PT1udWxsP09iamVjdC5jcmVhdGUocmUpOihWZS5wcm90b3R5cGU9cmUucHJvdG90eXBlLG5ldyBWZSl9ZnVuY3Rpb24gQVUoTSxyZSl7dmFyIFZlPXt9O2Zvcih2YXIgS2UgaW4gTSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoTSxLZSkmJnJlLmluZGV4T2YoS2UpPDAmJihWZVtLZV09TVtLZV0pO2lmKE0hPW51bGwmJnR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzPT1cImZ1bmN0aW9uXCIpZm9yKHZhciBvaT0wLEtlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTSk7b2k8S2UubGVuZ3RoO29pKyspcmUuaW5kZXhPZihLZVtvaV0pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChNLEtlW29pXSkmJihWZVtLZVtvaV1dPU1bS2Vbb2ldXSk7cmV0dXJuIFZlfWZ1bmN0aW9uIE5VKE0scmUsVmUsS2Upe3ZhciBvaT1hcmd1bWVudHMubGVuZ3RoLGtyPW9pPDM/cmU6S2U9PT1udWxsP0tlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocmUsVmUpOktlLHByO2lmKHR5cGVvZiBSZWZsZWN0PT1cIm9iamVjdFwiJiZ0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZT09XCJmdW5jdGlvblwiKWtyPVJlZmxlY3QuZGVjb3JhdGUoTSxyZSxWZSxLZSk7ZWxzZSBmb3IodmFyIExyPU0ubGVuZ3RoLTE7THI+PTA7THItLSkocHI9TVtMcl0pJiYoa3I9KG9pPDM/cHIoa3IpOm9pPjM/cHIocmUsVmUsa3IpOnByKHJlLFZlKSl8fGtyKTtyZXR1cm4gb2k+MyYma3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZSxWZSxrciksa3J9ZnVuY3Rpb24gUFUoTSxyZSl7cmV0dXJuIGZ1bmN0aW9uKFZlLEtlKXtyZShWZSxLZSxNKX19ZnVuY3Rpb24gSVUoTSxyZSl7aWYodHlwZW9mIFJlZmxlY3Q9PVwib2JqZWN0XCImJnR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhPT1cImZ1bmN0aW9uXCIpcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoTSxyZSl9ZnVuY3Rpb24gd1UoTSxyZSxWZSxLZSl7ZnVuY3Rpb24gb2koa3Ipe3JldHVybiBrciBpbnN0YW5jZW9mIFZlP2tyOm5ldyBWZShmdW5jdGlvbihwcil7cHIoa3IpfSl9cmV0dXJuIG5ldyhWZXx8KFZlPVByb21pc2UpKShmdW5jdGlvbihrcixwcil7ZnVuY3Rpb24gTHIoZSl7dHJ5e2tlKEtlLm5leHQoZSkpfWNhdGNoKGEpe3ByKGEpfX1mdW5jdGlvbiBhcihlKXt0cnl7a2UoS2UudGhyb3coZSkpfWNhdGNoKGEpe3ByKGEpfX1mdW5jdGlvbiBrZShlKXtlLmRvbmU/a3IoZS52YWx1ZSk6b2koZS52YWx1ZSkudGhlbihMcixhcil9a2UoKEtlPUtlLmFwcGx5KE0scmV8fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIE9VKE0scmUpe3ZhciBWZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoa3JbMF0mMSl0aHJvdyBrclsxXTtyZXR1cm4ga3JbMV19LHRyeXM6W10sb3BzOltdfSxLZSxvaSxrcixwcjtyZXR1cm4gcHI9e25leHQ6THIoMCksdGhyb3c6THIoMSkscmV0dXJuOkxyKDIpfSx0eXBlb2YgU3ltYm9sPT1cImZ1bmN0aW9uXCImJihwcltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxwcjtmdW5jdGlvbiBMcihrZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBhcihba2UsZV0pfX1mdW5jdGlvbiBhcihrZSl7aWYoS2UpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtWZTspdHJ5e2lmKEtlPTEsb2kmJihrcj1rZVswXSYyP29pLnJldHVybjprZVswXT9vaS50aHJvd3x8KChrcj1vaS5yZXR1cm4pJiZrci5jYWxsKG9pKSwwKTpvaS5uZXh0KSYmIShrcj1rci5jYWxsKG9pLGtlWzFdKSkuZG9uZSlyZXR1cm4ga3I7c3dpdGNoKG9pPTAsa3ImJihrZT1ba2VbMF0mMixrci52YWx1ZV0pLGtlWzBdKXtjYXNlIDA6Y2FzZSAxOmtyPWtlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gVmUubGFiZWwrKyx7dmFsdWU6a2VbMV0sZG9uZTohMX07Y2FzZSA1OlZlLmxhYmVsKyssb2k9a2VbMV0sa2U9WzBdO2NvbnRpbnVlO2Nhc2UgNzprZT1WZS5vcHMucG9wKCksVmUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKGtyPVZlLnRyeXMsIShrcj1rci5sZW5ndGg+MCYma3Jba3IubGVuZ3RoLTFdKSYmKGtlWzBdPT09Nnx8a2VbMF09PT0yKSl7VmU9MDtjb250aW51ZX1pZihrZVswXT09PTMmJigha3J8fGtlWzFdPmtyWzBdJiZrZVsxXTxrclszXSkpe1ZlLmxhYmVsPWtlWzFdO2JyZWFrfWlmKGtlWzBdPT09NiYmVmUubGFiZWw8a3JbMV0pe1ZlLmxhYmVsPWtyWzFdLGtyPWtlO2JyZWFrfWlmKGtyJiZWZS5sYWJlbDxrclsyXSl7VmUubGFiZWw9a3JbMl0sVmUub3BzLnB1c2goa2UpO2JyZWFrfWtyWzJdJiZWZS5vcHMucG9wKCksVmUudHJ5cy5wb3AoKTtjb250aW51ZX1rZT1yZS5jYWxsKE0sVmUpfWNhdGNoKGUpe2tlPVs2LGVdLG9pPTB9ZmluYWxseXtLZT1rcj0wfWlmKGtlWzBdJjUpdGhyb3cga2VbMV07cmV0dXJue3ZhbHVlOmtlWzBdP2tlWzFdOnZvaWQgMCxkb25lOiEwfX19ZnVuY3Rpb24gRlUoTSxyZSxWZSxLZSl7S2U9PT12b2lkIDAmJihLZT1WZSksTVtLZV09cmVbVmVdfWZ1bmN0aW9uIE1VKE0scmUpe2Zvcih2YXIgVmUgaW4gTSlWZSE9PVwiZGVmYXVsdFwiJiYhcmUuaGFzT3duUHJvcGVydHkoVmUpJiYocmVbVmVdPU1bVmVdKX1mdW5jdGlvbiBVVChNKXt2YXIgcmU9dHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZTeW1ib2wuaXRlcmF0b3IsVmU9cmUmJk1bcmVdLEtlPTA7aWYoVmUpcmV0dXJuIFZlLmNhbGwoTSk7aWYoTSYmdHlwZW9mIE0ubGVuZ3RoPT1cIm51bWJlclwiKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIE0mJktlPj1NLmxlbmd0aCYmKE09dm9pZCAwKSx7dmFsdWU6TSYmTVtLZSsrXSxkb25lOiFNfX19O3Rocm93IG5ldyBUeXBlRXJyb3IocmU/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX1mdW5jdGlvbiByMyhNLHJlKXt2YXIgVmU9dHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZNW1N5bWJvbC5pdGVyYXRvcl07aWYoIVZlKXJldHVybiBNO3ZhciBLZT1WZS5jYWxsKE0pLG9pLGtyPVtdLHByO3RyeXtmb3IoOyhyZT09PXZvaWQgMHx8cmUtLSA+MCkmJiEob2k9S2UubmV4dCgpKS5kb25lOylrci5wdXNoKG9pLnZhbHVlKX1jYXRjaChMcil7cHI9e2Vycm9yOkxyfX1maW5hbGx5e3RyeXtvaSYmIW9pLmRvbmUmJihWZT1LZS5yZXR1cm4pJiZWZS5jYWxsKEtlKX1maW5hbGx5e2lmKHByKXRocm93IHByLmVycm9yfX1yZXR1cm4ga3J9ZnVuY3Rpb24gTFUoKXtmb3IodmFyIE09W10scmU9MDtyZTxhcmd1bWVudHMubGVuZ3RoO3JlKyspTT1NLmNvbmNhdChyMyhhcmd1bWVudHNbcmVdKSk7cmV0dXJuIE19ZnVuY3Rpb24gUlUoKXtmb3IodmFyIE09MCxyZT0wLFZlPWFyZ3VtZW50cy5sZW5ndGg7cmU8VmU7cmUrKylNKz1hcmd1bWVudHNbcmVdLmxlbmd0aDtmb3IodmFyIEtlPUFycmF5KE0pLG9pPTAscmU9MDtyZTxWZTtyZSsrKWZvcih2YXIga3I9YXJndW1lbnRzW3JlXSxwcj0wLExyPWtyLmxlbmd0aDtwcjxMcjtwcisrLG9pKyspS2Vbb2ldPWtyW3ByXTtyZXR1cm4gS2V9ZnVuY3Rpb24gWHkoTSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBYeT8odGhpcy52PU0sdGhpcyk6bmV3IFh5KE0pfWZ1bmN0aW9uIEJVKE0scmUsVmUpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO3ZhciBLZT1WZS5hcHBseShNLHJlfHxbXSksb2ksa3I9W107cmV0dXJuIG9pPXt9LHByKFwibmV4dFwiKSxwcihcInRocm93XCIpLHByKFwicmV0dXJuXCIpLG9pW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxvaTtmdW5jdGlvbiBwcihDKXtLZVtDXSYmKG9pW0NdPWZ1bmN0aW9uKHcpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihCLEUpe2tyLnB1c2goW0MsdyxCLEVdKT4xfHxMcihDLHcpfSl9KX1mdW5jdGlvbiBMcihDLHcpe3RyeXthcihLZVtDXSh3KSl9Y2F0Y2goQil7YShrclswXVszXSxCKX19ZnVuY3Rpb24gYXIoQyl7Qy52YWx1ZSBpbnN0YW5jZW9mIFh5P1Byb21pc2UucmVzb2x2ZShDLnZhbHVlLnYpLnRoZW4oa2UsZSk6YShrclswXVsyXSxDKX1mdW5jdGlvbiBrZShDKXtMcihcIm5leHRcIixDKX1mdW5jdGlvbiBlKEMpe0xyKFwidGhyb3dcIixDKX1mdW5jdGlvbiBhKEMsdyl7Qyh3KSxrci5zaGlmdCgpLGtyLmxlbmd0aCYmTHIoa3JbMF1bMF0sa3JbMF1bMV0pfX1mdW5jdGlvbiBKVShNKXt2YXIgcmUsVmU7cmV0dXJuIHJlPXt9LEtlKFwibmV4dFwiKSxLZShcInRocm93XCIsZnVuY3Rpb24ob2kpe3Rocm93IG9pfSksS2UoXCJyZXR1cm5cIikscmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyZTtmdW5jdGlvbiBLZShvaSxrcil7cmVbb2ldPU1bb2ldP2Z1bmN0aW9uKHByKXtyZXR1cm4oVmU9IVZlKT97dmFsdWU6WHkoTVtvaV0ocHIpKSxkb25lOm9pPT09XCJyZXR1cm5cIn06a3I/a3IocHIpOnByfTprcn19ZnVuY3Rpb24galUoTSl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7dmFyIHJlPU1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLFZlO3JldHVybiByZT9yZS5jYWxsKE0pOihNPXR5cGVvZiBVVD09XCJmdW5jdGlvblwiP1VUKE0pOk1bU3ltYm9sLml0ZXJhdG9yXSgpLFZlPXt9LEtlKFwibmV4dFwiKSxLZShcInRocm93XCIpLEtlKFwicmV0dXJuXCIpLFZlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxWZSk7ZnVuY3Rpb24gS2Uoa3Ipe1ZlW2tyXT1NW2tyXSYmZnVuY3Rpb24ocHIpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihMcixhcil7cHI9TVtrcl0ocHIpLG9pKExyLGFyLHByLmRvbmUscHIudmFsdWUpfSl9fWZ1bmN0aW9uIG9pKGtyLHByLExyLGFyKXtQcm9taXNlLnJlc29sdmUoYXIpLnRoZW4oZnVuY3Rpb24oa2Upe2tyKHt2YWx1ZTprZSxkb25lOkxyfSl9LHByKX19ZnVuY3Rpb24gVVUoTSxyZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcInJhd1wiLHt2YWx1ZTpyZX0pOk0ucmF3PXJlLE19ZnVuY3Rpb24gelUoTSl7aWYoTSYmTS5fX2VzTW9kdWxlKXJldHVybiBNO3ZhciByZT17fTtpZihNIT1udWxsKWZvcih2YXIgVmUgaW4gTSlPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChNLFZlKSYmKHJlW1ZlXT1NW1ZlXSk7cmV0dXJuIHJlLmRlZmF1bHQ9TSxyZX1mdW5jdGlvbiBXVShNKXtyZXR1cm4gTSYmTS5fX2VzTW9kdWxlP006e2RlZmF1bHQ6TX19ZnVuY3Rpb24gcVUoTSxyZSl7aWYoIXJlLmhhcyhNKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtyZXR1cm4gcmUuZ2V0KE0pfWZ1bmN0aW9uIFZVKE0scmUsVmUpe2lmKCFyZS5oYXMoTSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBzZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7cmV0dXJuIHJlLnNldChNLFZlKSxWZX12YXIgbTEsdjEsdWc9UXkoe1wibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qc1wiKCl7RWEoKSxtMT1mdW5jdGlvbihNLHJlKXtyZXR1cm4gbTE9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKFZlLEtlKXtWZS5fX3Byb3RvX189S2V9fHxmdW5jdGlvbihWZSxLZSl7Zm9yKHZhciBvaSBpbiBLZSlLZS5oYXNPd25Qcm9wZXJ0eShvaSkmJihWZVtvaV09S2Vbb2ldKX0sbTEoTSxyZSl9LHYxPWZ1bmN0aW9uKCl7cmV0dXJuIHYxPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHJlKXtmb3IodmFyIFZlLEtlPTEsb2k9YXJndW1lbnRzLmxlbmd0aDtLZTxvaTtLZSsrKXtWZT1hcmd1bWVudHNbS2VdO2Zvcih2YXIga3IgaW4gVmUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFZlLGtyKSYmKHJlW2tyXT1WZVtrcl0pfXJldHVybiByZX0sdjEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19KSxLVT1PYSh7XCJub2RlX21vZHVsZXMvdHN1dGlscy90eXBlZ3VhcmQvMi44L25vZGUuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uaXNFeHByZXNzaW9uU3RhdGVtZW50PU0uaXNFeHByZXNzaW9uPU0uaXNFeHBvcnRTcGVjaWZpZXI9TS5pc0V4cG9ydERlY2xhcmF0aW9uPU0uaXNFeHBvcnRBc3NpZ25tZW50PU0uaXNFbnVtTWVtYmVyPU0uaXNFbnVtRGVjbGFyYXRpb249TS5pc0VudGl0eU5hbWVFeHByZXNzaW9uPU0uaXNFbnRpdHlOYW1lPU0uaXNFbXB0eVN0YXRlbWVudD1NLmlzRWxlbWVudEFjY2Vzc0V4cHJlc3Npb249TS5pc0RvU3RhdGVtZW50PU0uaXNEZWxldGVFeHByZXNzaW9uPU0uaXNEZWZhdWx0Q2xhdXNlPU0uaXNEZWNvcmF0b3I9TS5pc0RlYnVnZ2VyU3RhdGVtZW50PU0uaXNDb21wdXRlZFByb3BlcnR5TmFtZT1NLmlzQ29udGludWVTdGF0ZW1lbnQ9TS5pc0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uPU0uaXNDb25zdHJ1Y3RvclR5cGVOb2RlPU0uaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uPU0uaXNDb25kaXRpb25hbFR5cGVOb2RlPU0uaXNDb25kaXRpb25hbEV4cHJlc3Npb249TS5pc0NvbW1hTGlzdEV4cHJlc3Npb249TS5pc0NsYXNzTGlrZURlY2xhcmF0aW9uPU0uaXNDbGFzc0V4cHJlc3Npb249TS5pc0NsYXNzRGVjbGFyYXRpb249TS5pc0NhdGNoQ2xhdXNlPU0uaXNDYXNlT3JEZWZhdWx0Q2xhdXNlPU0uaXNDYXNlQ2xhdXNlPU0uaXNDYXNlQmxvY2s9TS5pc0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbj1NLmlzQ2FsbExpa2VFeHByZXNzaW9uPU0uaXNDYWxsRXhwcmVzc2lvbj1NLmlzQnJlYWtTdGF0ZW1lbnQ9TS5pc0JyZWFrT3JDb250aW51ZVN0YXRlbWVudD1NLmlzQm9vbGVhbkxpdGVyYWw9TS5pc0Jsb2NrTGlrZT1NLmlzQmxvY2s9TS5pc0JpbmRpbmdQYXR0ZXJuPU0uaXNCaW5kaW5nRWxlbWVudD1NLmlzQmluYXJ5RXhwcmVzc2lvbj1NLmlzQXdhaXRFeHByZXNzaW9uPU0uaXNBc3NlcnRpb25FeHByZXNzaW9uPU0uaXNBc0V4cHJlc3Npb249TS5pc0Fycm93RnVuY3Rpb249TS5pc0FycmF5VHlwZU5vZGU9TS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb249TS5pc0FycmF5QmluZGluZ1BhdHRlcm49TS5pc0FjY2Vzc29yRGVjbGFyYXRpb249dm9pZCAwLE0uaXNOYW1lc3BhY2VJbXBvcnQ9TS5pc05hbWVzcGFjZURlY2xhcmF0aW9uPU0uaXNOYW1lZEltcG9ydHM9TS5pc05hbWVkRXhwb3J0cz1NLmlzTW9kdWxlRGVjbGFyYXRpb249TS5pc01vZHVsZUJsb2NrPU0uaXNNZXRob2RTaWduYXR1cmU9TS5pc01ldGhvZERlY2xhcmF0aW9uPU0uaXNNZXRhUHJvcGVydHk9TS5pc01hcHBlZFR5cGVOb2RlPU0uaXNMaXRlcmFsVHlwZU5vZGU9TS5pc0xpdGVyYWxFeHByZXNzaW9uPU0uaXNMYWJlbGVkU3RhdGVtZW50PU0uaXNKc3hUZXh0PU0uaXNKc3hTcHJlYWRBdHRyaWJ1dGU9TS5pc0pzeFNlbGZDbG9zaW5nRWxlbWVudD1NLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50PU0uaXNKc3hPcGVuaW5nRnJhZ21lbnQ9TS5pc0pzeE9wZW5pbmdFbGVtZW50PU0uaXNKc3hGcmFnbWVudD1NLmlzSnN4RXhwcmVzc2lvbj1NLmlzSnN4RWxlbWVudD1NLmlzSnN4Q2xvc2luZ0ZyYWdtZW50PU0uaXNKc3hDbG9zaW5nRWxlbWVudD1NLmlzSnN4QXR0cmlidXRlcz1NLmlzSnN4QXR0cmlidXRlTGlrZT1NLmlzSnN4QXR0cmlidXRlPU0uaXNKc0RvYz1NLmlzSXRlcmF0aW9uU3RhdGVtZW50PU0uaXNJbnRlcnNlY3Rpb25UeXBlTm9kZT1NLmlzSW50ZXJmYWNlRGVjbGFyYXRpb249TS5pc0luZmVyVHlwZU5vZGU9TS5pc0luZGV4U2lnbmF0dXJlRGVjbGFyYXRpb249TS5pc0luZGV4ZWRBY2Nlc3NUeXBlTm9kZT1NLmlzSW1wb3J0U3BlY2lmaWVyPU0uaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbj1NLmlzSW1wb3J0RGVjbGFyYXRpb249TS5pc0ltcG9ydENsYXVzZT1NLmlzSWZTdGF0ZW1lbnQ9TS5pc0lkZW50aWZpZXI9TS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb249TS5pc0Z1bmN0aW9uVHlwZU5vZGU9TS5pc0Z1bmN0aW9uRXhwcmVzc2lvbj1NLmlzRnVuY3Rpb25EZWNsYXJhdGlvbj1NLmlzRm9yU3RhdGVtZW50PU0uaXNGb3JPZlN0YXRlbWVudD1NLmlzRm9ySW5Pck9mU3RhdGVtZW50PU0uaXNGb3JJblN0YXRlbWVudD1NLmlzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2U9TS5pc0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cz12b2lkIDAsTS5pc1ZhcmlhYmxlU3RhdGVtZW50PU0uaXNWYXJpYWJsZURlY2xhcmF0aW9uPU0uaXNVbmlvblR5cGVOb2RlPU0uaXNUeXBlUXVlcnlOb2RlPU0uaXNUeXBlUmVmZXJlbmNlTm9kZT1NLmlzVHlwZVByZWRpY2F0ZU5vZGU9TS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj1NLmlzVHlwZU9wZXJhdG9yTm9kZT1NLmlzVHlwZU9mRXhwcmVzc2lvbj1NLmlzVHlwZUxpdGVyYWxOb2RlPU0uaXNUeXBlQXNzZXJ0aW9uPU0uaXNUeXBlQWxpYXNEZWNsYXJhdGlvbj1NLmlzVHVwbGVUeXBlTm9kZT1NLmlzVHJ5U3RhdGVtZW50PU0uaXNUaHJvd1N0YXRlbWVudD1NLmlzVGV4dHVhbExpdGVyYWw9TS5pc1RlbXBsYXRlTGl0ZXJhbD1NLmlzVGVtcGxhdGVFeHByZXNzaW9uPU0uaXNUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb249TS5pc1N5bnRheExpc3Q9TS5pc1N3aXRjaFN0YXRlbWVudD1NLmlzU3RyaW5nTGl0ZXJhbD1NLmlzU3ByZWFkRWxlbWVudD1NLmlzU3ByZWFkQXNzaWdubWVudD1NLmlzU291cmNlRmlsZT1NLmlzU2lnbmF0dXJlRGVjbGFyYXRpb249TS5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudD1NLmlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbj1NLmlzUmV0dXJuU3RhdGVtZW50PU0uaXNSZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWw9TS5pc1F1YWxpZmllZE5hbWU9TS5pc1Byb3BlcnR5U2lnbmF0dXJlPU0uaXNQcm9wZXJ0eURlY2xhcmF0aW9uPU0uaXNQcm9wZXJ0eUFzc2lnbm1lbnQ9TS5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj1NLmlzUHJlZml4VW5hcnlFeHByZXNzaW9uPU0uaXNQb3N0Zml4VW5hcnlFeHByZXNzaW9uPU0uaXNQYXJlbnRoZXNpemVkVHlwZU5vZGU9TS5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uPU0uaXNQYXJhbWV0ZXJEZWNsYXJhdGlvbj1NLmlzT21pdHRlZEV4cHJlc3Npb249TS5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uPU0uaXNPYmplY3RCaW5kaW5nUGF0dGVybj1NLmlzTnVtZXJpY09yU3RyaW5nTGlrZUxpdGVyYWw9TS5pc051bWVyaWNMaXRlcmFsPU0uaXNOdWxsTGl0ZXJhbD1NLmlzTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWw9TS5pc05vbk51bGxFeHByZXNzaW9uPU0uaXNOZXdFeHByZXNzaW9uPU0uaXNOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbj12b2lkIDAsTS5pc1dpdGhTdGF0ZW1lbnQ9TS5pc1doaWxlU3RhdGVtZW50PU0uaXNWb2lkRXhwcmVzc2lvbj1NLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q9dm9pZCAwO3ZhciByZT1fdSgpO2Z1bmN0aW9uIFZlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuR2V0QWNjZXNzb3J8fGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlNldEFjY2Vzc29yfU0uaXNBY2Nlc3NvckRlY2xhcmF0aW9uPVZlO2Z1bmN0aW9uIEtlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuQXJyYXlCaW5kaW5nUGF0dGVybn1NLmlzQXJyYXlCaW5kaW5nUGF0dGVybj1LZTtmdW5jdGlvbiBvaShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkFycmF5TGl0ZXJhbEV4cHJlc3Npb259TS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb249b2k7ZnVuY3Rpb24ga3IoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5BcnJheVR5cGV9TS5pc0FycmF5VHlwZU5vZGU9a3I7ZnVuY3Rpb24gcHIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5BcnJvd0Z1bmN0aW9ufU0uaXNBcnJvd0Z1bmN0aW9uPXByO2Z1bmN0aW9uIExyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuQXNFeHByZXNzaW9ufU0uaXNBc0V4cHJlc3Npb249THI7ZnVuY3Rpb24gYXIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Bc0V4cHJlc3Npb258fGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlR5cGVBc3NlcnRpb25FeHByZXNzaW9ufU0uaXNBc3NlcnRpb25FeHByZXNzaW9uPWFyO2Z1bmN0aW9uIGtlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuQXdhaXRFeHByZXNzaW9ufU0uaXNBd2FpdEV4cHJlc3Npb249a2U7ZnVuY3Rpb24gZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkJpbmFyeUV4cHJlc3Npb259TS5pc0JpbmFyeUV4cHJlc3Npb249ZTtmdW5jdGlvbiBhKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuQmluZGluZ0VsZW1lbnR9TS5pc0JpbmRpbmdFbGVtZW50PWE7ZnVuY3Rpb24gQyhhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkFycmF5QmluZGluZ1BhdHRlcm58fGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLk9iamVjdEJpbmRpbmdQYXR0ZXJufU0uaXNCaW5kaW5nUGF0dGVybj1DO2Z1bmN0aW9uIHcoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5CbG9ja31NLmlzQmxvY2s9dztmdW5jdGlvbiBCKGFpKXtyZXR1cm4gYWkuc3RhdGVtZW50cyE9PXZvaWQgMH1NLmlzQmxvY2tMaWtlPUI7ZnVuY3Rpb24gRShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlRydWVLZXl3b3JkfHxhaS5raW5kPT09cmUuU3ludGF4S2luZC5GYWxzZUtleXdvcmR9TS5pc0Jvb2xlYW5MaXRlcmFsPUU7ZnVuY3Rpb24gUShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkJyZWFrU3RhdGVtZW50fHxhaS5raW5kPT09cmUuU3ludGF4S2luZC5Db250aW51ZVN0YXRlbWVudH1NLmlzQnJlYWtPckNvbnRpbnVlU3RhdGVtZW50PVE7ZnVuY3Rpb24gbGUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5CcmVha1N0YXRlbWVudH1NLmlzQnJlYWtTdGF0ZW1lbnQ9bGU7ZnVuY3Rpb24gTihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNhbGxFeHByZXNzaW9ufU0uaXNDYWxsRXhwcmVzc2lvbj1OO2Z1bmN0aW9uIHAoYWkpe3N3aXRjaChhaS5raW5kKXtjYXNlIHJlLlN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkRlY29yYXRvcjpjYXNlIHJlLlN5bnRheEtpbmQuSnN4T3BlbmluZ0VsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkpzeFNlbGZDbG9zaW5nRWxlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuTmV3RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fU0uaXNDYWxsTGlrZUV4cHJlc3Npb249cDtmdW5jdGlvbiBtKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuQ2FsbFNpZ25hdHVyZX1NLmlzQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uPW07ZnVuY3Rpb24gRyhhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNhc2VCbG9ja31NLmlzQ2FzZUJsb2NrPUc7ZnVuY3Rpb24gb2UoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5DYXNlQ2xhdXNlfU0uaXNDYXNlQ2xhdXNlPW9lO2Z1bmN0aW9uIGYoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5DYXNlQ2xhdXNlfHxhaS5raW5kPT09cmUuU3ludGF4S2luZC5EZWZhdWx0Q2xhdXNlfU0uaXNDYXNlT3JEZWZhdWx0Q2xhdXNlPWY7ZnVuY3Rpb24gVChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNhdGNoQ2xhdXNlfU0uaXNDYXRjaENsYXVzZT1UO2Z1bmN0aW9uIEsoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5DbGFzc0RlY2xhcmF0aW9ufU0uaXNDbGFzc0RlY2xhcmF0aW9uPUs7ZnVuY3Rpb24gYihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNsYXNzRXhwcmVzc2lvbn1NLmlzQ2xhc3NFeHByZXNzaW9uPWI7ZnVuY3Rpb24gc2UoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5DbGFzc0RlY2xhcmF0aW9ufHxhaS5raW5kPT09cmUuU3ludGF4S2luZC5DbGFzc0V4cHJlc3Npb259TS5pc0NsYXNzTGlrZURlY2xhcmF0aW9uPXNlO2Z1bmN0aW9uIEooYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Db21tYUxpc3RFeHByZXNzaW9ufU0uaXNDb21tYUxpc3RFeHByZXNzaW9uPUo7ZnVuY3Rpb24gaWUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Db25kaXRpb25hbEV4cHJlc3Npb259TS5pc0NvbmRpdGlvbmFsRXhwcmVzc2lvbj1pZTtmdW5jdGlvbiBSKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuQ29uZGl0aW9uYWxUeXBlfU0uaXNDb25kaXRpb25hbFR5cGVOb2RlPVI7ZnVuY3Rpb24gcShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNvbnN0cnVjdG9yfU0uaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uPXE7ZnVuY3Rpb24gTyhhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNvbnN0cnVjdG9yVHlwZX1NLmlzQ29uc3RydWN0b3JUeXBlTm9kZT1PO2Z1bmN0aW9uIHZlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuQ29uc3RydWN0U2lnbmF0dXJlfU0uaXNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsYXJhdGlvbj12ZTtmdW5jdGlvbiBlZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNvbnRpbnVlU3RhdGVtZW50fU0uaXNDb250aW51ZVN0YXRlbWVudD1lZTtmdW5jdGlvbiBoZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNvbXB1dGVkUHJvcGVydHlOYW1lfU0uaXNDb21wdXRlZFByb3BlcnR5TmFtZT1oZTtmdW5jdGlvbiBGKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuRGVidWdnZXJTdGF0ZW1lbnR9TS5pc0RlYnVnZ2VyU3RhdGVtZW50PUY7ZnVuY3Rpb24geChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkRlY29yYXRvcn1NLmlzRGVjb3JhdG9yPXg7ZnVuY3Rpb24gWChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkRlZmF1bHRDbGF1c2V9TS5pc0RlZmF1bHRDbGF1c2U9WDtmdW5jdGlvbiAkKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuRGVsZXRlRXhwcmVzc2lvbn1NLmlzRGVsZXRlRXhwcmVzc2lvbj0kO2Z1bmN0aW9uIEEoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Eb1N0YXRlbWVudH1NLmlzRG9TdGF0ZW1lbnQ9QTtmdW5jdGlvbiB5KGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuRWxlbWVudEFjY2Vzc0V4cHJlc3Npb259TS5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPXk7ZnVuY3Rpb24gVihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkVtcHR5U3RhdGVtZW50fU0uaXNFbXB0eVN0YXRlbWVudD1WO2Z1bmN0aW9uIEwoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5JZGVudGlmaWVyfHxQZShhaSl9TS5pc0VudGl0eU5hbWU9TDtmdW5jdGlvbiBQKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSWRlbnRpZmllcnx8QXIoYWkpJiZQKGFpLmV4cHJlc3Npb24pfU0uaXNFbnRpdHlOYW1lRXhwcmVzc2lvbj1QO2Z1bmN0aW9uIGsoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5FbnVtRGVjbGFyYXRpb259TS5pc0VudW1EZWNsYXJhdGlvbj1rO2Z1bmN0aW9uIFkoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5FbnVtTWVtYmVyfU0uaXNFbnVtTWVtYmVyPVk7ZnVuY3Rpb24gVShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkV4cG9ydEFzc2lnbm1lbnR9TS5pc0V4cG9ydEFzc2lnbm1lbnQ9VTtmdW5jdGlvbiBqKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuRXhwb3J0RGVjbGFyYXRpb259TS5pc0V4cG9ydERlY2xhcmF0aW9uPWo7ZnVuY3Rpb24gSChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkV4cG9ydFNwZWNpZmllcn1NLmlzRXhwb3J0U3BlY2lmaWVyPUg7ZnVuY3Rpb24gSShhaSl7c3dpdGNoKGFpLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5BcnJvd0Z1bmN0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5Bc0V4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkF3YWl0RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuQmluYXJ5RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkNsYXNzRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuQ29tbWFMaXN0RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuQ29uZGl0aW9uYWxFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5EZWxldGVFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5FbGVtZW50QWNjZXNzRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkOmNhc2UgcmUuU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLklkZW50aWZpZXI6Y2FzZSByZS5TeW50YXhLaW5kLkpzeEVsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkpzeEZyYWdtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Kc3hFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5Kc3hPcGVuaW5nRWxlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuSnN4T3BlbmluZ0ZyYWdtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Kc3hTZWxmQ2xvc2luZ0VsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLk1ldGFQcm9wZXJ0eTpjYXNlIHJlLlN5bnRheEtpbmQuTmV3RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuTm9uTnVsbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLk5vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsOmNhc2UgcmUuU3ludGF4S2luZC5OdWxsS2V5d29yZDpjYXNlIHJlLlN5bnRheEtpbmQuTnVtZXJpY0xpdGVyYWw6Y2FzZSByZS5TeW50YXhLaW5kLk9iamVjdExpdGVyYWxFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5PbWl0dGVkRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlBvc3RmaXhVbmFyeUV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlByZWZpeFVuYXJ5RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5SZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWw6Y2FzZSByZS5TeW50YXhLaW5kLlNwcmVhZEVsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlN0cmluZ0xpdGVyYWw6Y2FzZSByZS5TeW50YXhLaW5kLlN1cGVyS2V5d29yZDpjYXNlIHJlLlN5bnRheEtpbmQuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5UZW1wbGF0ZUV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlRoaXNLZXl3b3JkOmNhc2UgcmUuU3ludGF4S2luZC5UcnVlS2V5d29yZDpjYXNlIHJlLlN5bnRheEtpbmQuVHlwZUFzc2VydGlvbkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlR5cGVPZkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlZvaWRFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5ZaWVsZEV4cHJlc3Npb246cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19TS5pc0V4cHJlc3Npb249STtmdW5jdGlvbiBsKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuRXhwcmVzc2lvblN0YXRlbWVudH1NLmlzRXhwcmVzc2lvblN0YXRlbWVudD1sO2Z1bmN0aW9uIGQoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5FeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHN9TS5pc0V4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cz1kO2Z1bmN0aW9uIEQoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5FeHRlcm5hbE1vZHVsZVJlZmVyZW5jZX1NLmlzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2U9RDtmdW5jdGlvbiBmZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkZvckluU3RhdGVtZW50fU0uaXNGb3JJblN0YXRlbWVudD1mZTtmdW5jdGlvbiBnKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuRm9yT2ZTdGF0ZW1lbnR8fGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkZvckluU3RhdGVtZW50fU0uaXNGb3JJbk9yT2ZTdGF0ZW1lbnQ9ZztmdW5jdGlvbiBuZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkZvck9mU3RhdGVtZW50fU0uaXNGb3JPZlN0YXRlbWVudD1uZTtmdW5jdGlvbiB1ZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkZvclN0YXRlbWVudH1NLmlzRm9yU3RhdGVtZW50PXVlO2Z1bmN0aW9uIFdlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbn1NLmlzRnVuY3Rpb25EZWNsYXJhdGlvbj1XZTtmdW5jdGlvbiBGZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkZ1bmN0aW9uRXhwcmVzc2lvbn1NLmlzRnVuY3Rpb25FeHByZXNzaW9uPUZlO2Z1bmN0aW9uIFooYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5GdW5jdGlvblR5cGV9TS5pc0Z1bmN0aW9uVHlwZU5vZGU9WjtmdW5jdGlvbiBCZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkdldEFjY2Vzc29yfU0uaXNHZXRBY2Nlc3NvckRlY2xhcmF0aW9uPUJlO2Z1bmN0aW9uIGdlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSWRlbnRpZmllcn1NLmlzSWRlbnRpZmllcj1nZTtmdW5jdGlvbiBSZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLklmU3RhdGVtZW50fU0uaXNJZlN0YXRlbWVudD1SZTtmdW5jdGlvbiB6ZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkltcG9ydENsYXVzZX1NLmlzSW1wb3J0Q2xhdXNlPXplO2Z1bmN0aW9uIEVlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSW1wb3J0RGVjbGFyYXRpb259TS5pc0ltcG9ydERlY2xhcmF0aW9uPUVlO2Z1bmN0aW9uIEhlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSW1wb3J0RXF1YWxzRGVjbGFyYXRpb259TS5pc0ltcG9ydEVxdWFsc0RlY2xhcmF0aW9uPUhlO2Z1bmN0aW9uIHJyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSW1wb3J0U3BlY2lmaWVyfU0uaXNJbXBvcnRTcGVjaWZpZXI9cnI7ZnVuY3Rpb24gSWUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5JbmRleGVkQWNjZXNzVHlwZX1NLmlzSW5kZXhlZEFjY2Vzc1R5cGVOb2RlPUllO2Z1bmN0aW9uIF9lKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSW5kZXhTaWduYXR1cmV9TS5pc0luZGV4U2lnbmF0dXJlRGVjbGFyYXRpb249X2U7ZnVuY3Rpb24gd2UoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5JbmZlclR5cGV9TS5pc0luZmVyVHlwZU5vZGU9d2U7ZnVuY3Rpb24gZGUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbn1NLmlzSW50ZXJmYWNlRGVjbGFyYXRpb249ZGU7ZnVuY3Rpb24geWUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5JbnRlcnNlY3Rpb25UeXBlfU0uaXNJbnRlcnNlY3Rpb25UeXBlTm9kZT15ZTtmdW5jdGlvbiBBZShhaSl7c3dpdGNoKGFpLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5Gb3JTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkZvck9mU3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Gb3JJblN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuV2hpbGVTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkRvU3RhdGVtZW50OnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fU0uaXNJdGVyYXRpb25TdGF0ZW1lbnQ9QWU7ZnVuY3Rpb24gZXIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5KU0RvY0NvbW1lbnR9TS5pc0pzRG9jPWVyO2Z1bmN0aW9uIGlyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSnN4QXR0cmlidXRlfU0uaXNKc3hBdHRyaWJ1dGU9aXI7ZnVuY3Rpb24gQ3IoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Kc3hBdHRyaWJ1dGV8fGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeFNwcmVhZEF0dHJpYnV0ZX1NLmlzSnN4QXR0cmlidXRlTGlrZT1DcjtmdW5jdGlvbiBZZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeEF0dHJpYnV0ZXN9TS5pc0pzeEF0dHJpYnV0ZXM9WWU7ZnVuY3Rpb24gQnIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Kc3hDbG9zaW5nRWxlbWVudH1NLmlzSnN4Q2xvc2luZ0VsZW1lbnQ9QnI7ZnVuY3Rpb24gRXIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Kc3hDbG9zaW5nRnJhZ21lbnR9TS5pc0pzeENsb3NpbmdGcmFnbWVudD1FcjtmdW5jdGlvbiBOZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeEVsZW1lbnR9TS5pc0pzeEVsZW1lbnQ9TmU7ZnVuY3Rpb24gbihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeEV4cHJlc3Npb259TS5pc0pzeEV4cHJlc3Npb249bjtmdW5jdGlvbiBscihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeEZyYWdtZW50fU0uaXNKc3hGcmFnbWVudD1scjtmdW5jdGlvbiBiZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeE9wZW5pbmdFbGVtZW50fU0uaXNKc3hPcGVuaW5nRWxlbWVudD1iZTtmdW5jdGlvbiBHZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeE9wZW5pbmdGcmFnbWVudH1NLmlzSnN4T3BlbmluZ0ZyYWdtZW50PUdlO2Z1bmN0aW9uIHVyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSnN4T3BlbmluZ0VsZW1lbnR8fGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeFNlbGZDbG9zaW5nRWxlbWVudH1NLmlzSnN4T3BlbmluZ0xpa2VFbGVtZW50PXVyO2Z1bmN0aW9uIHlyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuSnN4U2VsZkNsb3NpbmdFbGVtZW50fU0uaXNKc3hTZWxmQ2xvc2luZ0VsZW1lbnQ9eXI7ZnVuY3Rpb24gSXIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Kc3hTcHJlYWRBdHRyaWJ1dGV9TS5pc0pzeFNwcmVhZEF0dHJpYnV0ZT1JcjtmdW5jdGlvbiB3cihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeFRleHR9TS5pc0pzeFRleHQ9d3I7ZnVuY3Rpb24gVXIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5MYWJlbGVkU3RhdGVtZW50fU0uaXNMYWJlbGVkU3RhdGVtZW50PVVyO2Z1bmN0aW9uIGlpKGFpKXtyZXR1cm4gYWkua2luZD49cmUuU3ludGF4S2luZC5GaXJzdExpdGVyYWxUb2tlbiYmYWkua2luZDw9cmUuU3ludGF4S2luZC5MYXN0TGl0ZXJhbFRva2VufU0uaXNMaXRlcmFsRXhwcmVzc2lvbj1paTtmdW5jdGlvbiBtaShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkxpdGVyYWxUeXBlfU0uaXNMaXRlcmFsVHlwZU5vZGU9bWk7ZnVuY3Rpb24gcGUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5NYXBwZWRUeXBlfU0uaXNNYXBwZWRUeXBlTm9kZT1wZTtmdW5jdGlvbiBvcihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLk1ldGFQcm9wZXJ0eX1NLmlzTWV0YVByb3BlcnR5PW9yO2Z1bmN0aW9uIHFyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb259TS5pc01ldGhvZERlY2xhcmF0aW9uPXFyO2Z1bmN0aW9uIHNpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuTWV0aG9kU2lnbmF0dXJlfU0uaXNNZXRob2RTaWduYXR1cmU9c2k7ZnVuY3Rpb24gRGkoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Nb2R1bGVCbG9ja31NLmlzTW9kdWxlQmxvY2s9RGk7ZnVuY3Rpb24gd2koYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbn1NLmlzTW9kdWxlRGVjbGFyYXRpb249d2k7ZnVuY3Rpb24gWGkoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5OYW1lZEV4cG9ydHN9TS5pc05hbWVkRXhwb3J0cz1YaTtmdW5jdGlvbiBldChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLk5hbWVkSW1wb3J0c31NLmlzTmFtZWRJbXBvcnRzPWV0O2Z1bmN0aW9uIEdpKGFpKXtyZXR1cm4gd2koYWkpJiZhaS5uYW1lLmtpbmQ9PT1yZS5TeW50YXhLaW5kLklkZW50aWZpZXImJmFpLmJvZHkhPT12b2lkIDAmJihhaS5ib2R5LmtpbmQ9PT1yZS5TeW50YXhLaW5kLk1vZHVsZUJsb2NrfHxHaShhaS5ib2R5KSl9TS5pc05hbWVzcGFjZURlY2xhcmF0aW9uPUdpO2Z1bmN0aW9uIFd0KGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuTmFtZXNwYWNlSW1wb3J0fU0uaXNOYW1lc3BhY2VJbXBvcnQ9V3Q7ZnVuY3Rpb24gWnQoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5OYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbn1NLmlzTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb249WnQ7ZnVuY3Rpb24gX3IoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5OZXdFeHByZXNzaW9ufU0uaXNOZXdFeHByZXNzaW9uPV9yO2Z1bmN0aW9uIHBpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuTm9uTnVsbEV4cHJlc3Npb259TS5pc05vbk51bGxFeHByZXNzaW9uPXBpO2Z1bmN0aW9uIGFlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWx9TS5pc05vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsPWFlO2Z1bmN0aW9uIFhlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuTnVsbEtleXdvcmR9TS5pc051bGxMaXRlcmFsPVhlO2Z1bmN0aW9uIEpyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuTnVtZXJpY0xpdGVyYWx9TS5pc051bWVyaWNMaXRlcmFsPUpyO2Z1bmN0aW9uIHRpKGFpKXtzd2l0Y2goYWkua2luZCl7Y2FzZSByZS5TeW50YXhLaW5kLlN0cmluZ0xpdGVyYWw6Y2FzZSByZS5TeW50YXhLaW5kLk51bWVyaWNMaXRlcmFsOmNhc2UgcmUuU3ludGF4S2luZC5Ob1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1NLmlzTnVtZXJpY09yU3RyaW5nTGlrZUxpdGVyYWw9dGk7ZnVuY3Rpb24gWmUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5PYmplY3RCaW5kaW5nUGF0dGVybn1NLmlzT2JqZWN0QmluZGluZ1BhdHRlcm49WmU7ZnVuY3Rpb24gU3IoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbn1NLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb249U3I7ZnVuY3Rpb24genIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5PbWl0dGVkRXhwcmVzc2lvbn1NLmlzT21pdHRlZEV4cHJlc3Npb249enI7ZnVuY3Rpb24gV3IoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5QYXJhbWV0ZXJ9TS5pc1BhcmFtZXRlckRlY2xhcmF0aW9uPVdyO2Z1bmN0aW9uIEplKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZEV4cHJlc3Npb259TS5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uPUplO2Z1bmN0aW9uIHhlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZFR5cGV9TS5pc1BhcmVudGhlc2l6ZWRUeXBlTm9kZT14ZTtmdW5jdGlvbiB2cihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlBvc3RmaXhVbmFyeUV4cHJlc3Npb259TS5pc1Bvc3RmaXhVbmFyeUV4cHJlc3Npb249dnI7ZnVuY3Rpb24gbXIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5QcmVmaXhVbmFyeUV4cHJlc3Npb259TS5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbj1tcjtmdW5jdGlvbiBBcihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbn1NLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPUFyO2Z1bmN0aW9uIE9lKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuUHJvcGVydHlBc3NpZ25tZW50fU0uaXNQcm9wZXJ0eUFzc2lnbm1lbnQ9T2U7ZnVuY3Rpb24gbnIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Qcm9wZXJ0eURlY2xhcmF0aW9ufU0uaXNQcm9wZXJ0eURlY2xhcmF0aW9uPW5yO2Z1bmN0aW9uIE1yKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuUHJvcGVydHlTaWduYXR1cmV9TS5pc1Byb3BlcnR5U2lnbmF0dXJlPU1yO2Z1bmN0aW9uIFBlKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuUXVhbGlmaWVkTmFtZX1NLmlzUXVhbGlmaWVkTmFtZT1QZTtmdW5jdGlvbiBVZShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlJlZ3VsYXJFeHByZXNzaW9uTGl0ZXJhbH1NLmlzUmVndWxhckV4cHJlc3Npb25MaXRlcmFsPVVlO2Z1bmN0aW9uIGZyKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuUmV0dXJuU3RhdGVtZW50fU0uaXNSZXR1cm5TdGF0ZW1lbnQ9ZnI7ZnVuY3Rpb24gRGUoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5TZXRBY2Nlc3Nvcn1NLmlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbj1EZTtmdW5jdGlvbiBncihhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudH1NLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50PWdyO2Z1bmN0aW9uIFZyKGFpKXtyZXR1cm4gYWkucGFyYW1ldGVycyE9PXZvaWQgMH1NLmlzU2lnbmF0dXJlRGVjbGFyYXRpb249VnI7ZnVuY3Rpb24gVHIoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5Tb3VyY2VGaWxlfU0uaXNTb3VyY2VGaWxlPVRyO2Z1bmN0aW9uIHZpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuU3ByZWFkQXNzaWdubWVudH1NLmlzU3ByZWFkQXNzaWdubWVudD12aTtmdW5jdGlvbiBVaShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlNwcmVhZEVsZW1lbnR9TS5pc1NwcmVhZEVsZW1lbnQ9VWk7ZnVuY3Rpb24gWWkoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5TdHJpbmdMaXRlcmFsfU0uaXNTdHJpbmdMaXRlcmFsPVlpO2Z1bmN0aW9uIFdpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuU3dpdGNoU3RhdGVtZW50fU0uaXNTd2l0Y2hTdGF0ZW1lbnQ9V2k7ZnVuY3Rpb24gY3QoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5TeW50YXhMaXN0fU0uaXNTeW50YXhMaXN0PWN0O2Z1bmN0aW9uIExpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9ufU0uaXNUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb249TGk7ZnVuY3Rpb24gbnQoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5UZW1wbGF0ZUV4cHJlc3Npb259TS5pc1RlbXBsYXRlRXhwcmVzc2lvbj1udDtmdW5jdGlvbiBNdChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlRlbXBsYXRlRXhwcmVzc2lvbnx8YWkua2luZD09PXJlLlN5bnRheEtpbmQuTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWx9TS5pc1RlbXBsYXRlTGl0ZXJhbD1NdDtmdW5jdGlvbiB4dChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlN0cmluZ0xpdGVyYWx8fGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLk5vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsfU0uaXNUZXh0dWFsTGl0ZXJhbD14dDtmdW5jdGlvbiB1dChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlRocm93U3RhdGVtZW50fU0uaXNUaHJvd1N0YXRlbWVudD11dDtmdW5jdGlvbiBEdChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlRyeVN0YXRlbWVudH1NLmlzVHJ5U3RhdGVtZW50PUR0O2Z1bmN0aW9uIFJ0KGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVHVwbGVUeXBlfU0uaXNUdXBsZVR5cGVOb2RlPVJ0O2Z1bmN0aW9uIElpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVHlwZUFsaWFzRGVjbGFyYXRpb259TS5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uPUlpO2Z1bmN0aW9uIEtpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVHlwZUFzc2VydGlvbkV4cHJlc3Npb259TS5pc1R5cGVBc3NlcnRpb249S2k7ZnVuY3Rpb24gRmkoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5UeXBlTGl0ZXJhbH1NLmlzVHlwZUxpdGVyYWxOb2RlPUZpO2Z1bmN0aW9uIHVpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVHlwZU9mRXhwcmVzc2lvbn1NLmlzVHlwZU9mRXhwcmVzc2lvbj11aTtmdW5jdGlvbiBCdChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlR5cGVPcGVyYXRvcn1NLmlzVHlwZU9wZXJhdG9yTm9kZT1CdDtmdW5jdGlvbiB3dChhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlR5cGVQYXJhbWV0ZXJ9TS5pc1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj13dDtmdW5jdGlvbiBuYShhaSl7cmV0dXJuIGFpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlR5cGVQcmVkaWNhdGV9TS5pc1R5cGVQcmVkaWNhdGVOb2RlPW5hO2Z1bmN0aW9uIEFpKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVHlwZVJlZmVyZW5jZX1NLmlzVHlwZVJlZmVyZW5jZU5vZGU9QWk7ZnVuY3Rpb24gT2koYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5UeXBlUXVlcnl9TS5pc1R5cGVRdWVyeU5vZGU9T2k7ZnVuY3Rpb24gamkoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5VbmlvblR5cGV9TS5pc1VuaW9uVHlwZU5vZGU9amk7ZnVuY3Rpb24gVmkoYWkpe3JldHVybiBhaS5raW5kPT09cmUuU3ludGF4S2luZC5WYXJpYWJsZURlY2xhcmF0aW9ufU0uaXNWYXJpYWJsZURlY2xhcmF0aW9uPVZpO2Z1bmN0aW9uIGF0KGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVmFyaWFibGVTdGF0ZW1lbnR9TS5pc1ZhcmlhYmxlU3RhdGVtZW50PWF0O2Z1bmN0aW9uIEF0KGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVmFyaWFibGVEZWNsYXJhdGlvbkxpc3R9TS5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0PUF0O2Z1bmN0aW9uIGJhKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuVm9pZEV4cHJlc3Npb259TS5pc1ZvaWRFeHByZXNzaW9uPWJhO2Z1bmN0aW9uICRhKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuV2hpbGVTdGF0ZW1lbnR9TS5pc1doaWxlU3RhdGVtZW50PSRhO2Z1bmN0aW9uIFFhKGFpKXtyZXR1cm4gYWkua2luZD09PXJlLlN5bnRheEtpbmQuV2l0aFN0YXRlbWVudH1NLmlzV2l0aFN0YXRlbWVudD1RYX19KSxHVT1PYSh7XCJub2RlX21vZHVsZXMvdHN1dGlscy90eXBlZ3VhcmQvMi45L25vZGUuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uaXNJbXBvcnRUeXBlTm9kZT12b2lkIDA7dmFyIHJlPSh1ZygpLG1wKFVkKSk7cmUuX19leHBvcnRTdGFyKEtVKCksTSk7dmFyIFZlPV91KCk7ZnVuY3Rpb24gS2Uob2kpe3JldHVybiBvaS5raW5kPT09VmUuU3ludGF4S2luZC5JbXBvcnRUeXBlfU0uaXNJbXBvcnRUeXBlTm9kZT1LZX19KSxIVT1PYSh7XCJub2RlX21vZHVsZXMvdHN1dGlscy90eXBlZ3VhcmQvMy4wL25vZGUuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uaXNTeW50aGV0aWNFeHByZXNzaW9uPU0uaXNSZXN0VHlwZU5vZGU9TS5pc09wdGlvbmFsVHlwZU5vZGU9dm9pZCAwO3ZhciByZT0odWcoKSxtcChVZCkpO3JlLl9fZXhwb3J0U3RhcihHVSgpLE0pO3ZhciBWZT1fdSgpO2Z1bmN0aW9uIEtlKHByKXtyZXR1cm4gcHIua2luZD09PVZlLlN5bnRheEtpbmQuT3B0aW9uYWxUeXBlfU0uaXNPcHRpb25hbFR5cGVOb2RlPUtlO2Z1bmN0aW9uIG9pKHByKXtyZXR1cm4gcHIua2luZD09PVZlLlN5bnRheEtpbmQuUmVzdFR5cGV9TS5pc1Jlc3RUeXBlTm9kZT1vaTtmdW5jdGlvbiBrcihwcil7cmV0dXJuIHByLmtpbmQ9PT1WZS5TeW50YXhLaW5kLlN5bnRoZXRpY0V4cHJlc3Npb259TS5pc1N5bnRoZXRpY0V4cHJlc3Npb249a3J9fSksaTM9T2Eoe1wibm9kZV9tb2R1bGVzL3RzdXRpbHMvdHlwZWd1YXJkLzMuMi9ub2RlLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmlzQmlnSW50TGl0ZXJhbD12b2lkIDA7dmFyIHJlPSh1ZygpLG1wKFVkKSk7cmUuX19leHBvcnRTdGFyKEhVKCksTSk7dmFyIFZlPV91KCk7ZnVuY3Rpb24gS2Uob2kpe3JldHVybiBvaS5raW5kPT09VmUuU3ludGF4S2luZC5CaWdJbnRMaXRlcmFsfU0uaXNCaWdJbnRMaXRlcmFsPUtlfX0pLHQzPU9hKHtcIm5vZGVfbW9kdWxlcy90c3V0aWxzL3R5cGVndWFyZC9ub2RlLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcmU9KHVnKCksbXAoVWQpKTtyZS5fX2V4cG9ydFN0YXIoaTMoKSxNKX19KSxYVT1PYSh7XCJub2RlX21vZHVsZXMvdHN1dGlscy90eXBlZ3VhcmQvMi44L3R5cGUuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uaXNVbmlxdWVFU1N5bWJvbFR5cGU9TS5pc1VuaW9uVHlwZT1NLmlzVW5pb25PckludGVyc2VjdGlvblR5cGU9TS5pc1R5cGVWYXJpYWJsZT1NLmlzVHlwZVJlZmVyZW5jZT1NLmlzVHlwZVBhcmFtZXRlcj1NLmlzU3Vic3RpdHV0aW9uVHlwZT1NLmlzT2JqZWN0VHlwZT1NLmlzTGl0ZXJhbFR5cGU9TS5pc0ludGVyc2VjdGlvblR5cGU9TS5pc0ludGVyZmFjZVR5cGU9TS5pc0luc3RhbnRpYWJsZVR5cGU9TS5pc0luZGV4ZWRBY2Nlc3N5cGU9TS5pc0luZGV4ZWRBY2Nlc3NUeXBlPU0uaXNHZW5lcmljVHlwZT1NLmlzRW51bVR5cGU9TS5pc0NvbmRpdGlvbmFsVHlwZT12b2lkIDA7dmFyIHJlPV91KCk7ZnVuY3Rpb24gVmUocCl7cmV0dXJuKHAuZmxhZ3MmcmUuVHlwZUZsYWdzLkNvbmRpdGlvbmFsKSE9PTB9TS5pc0NvbmRpdGlvbmFsVHlwZT1WZTtmdW5jdGlvbiBLZShwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuRW51bSkhPT0wfU0uaXNFbnVtVHlwZT1LZTtmdW5jdGlvbiBvaShwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuT2JqZWN0KSE9PTAmJihwLm9iamVjdEZsYWdzJnJlLk9iamVjdEZsYWdzLkNsYXNzT3JJbnRlcmZhY2UpIT09MCYmKHAub2JqZWN0RmxhZ3MmcmUuT2JqZWN0RmxhZ3MuUmVmZXJlbmNlKSE9PTB9TS5pc0dlbmVyaWNUeXBlPW9pO2Z1bmN0aW9uIGtyKHApe3JldHVybihwLmZsYWdzJnJlLlR5cGVGbGFncy5JbmRleGVkQWNjZXNzKSE9PTB9TS5pc0luZGV4ZWRBY2Nlc3NUeXBlPWtyO2Z1bmN0aW9uIHByKHApe3JldHVybihwLmZsYWdzJnJlLlR5cGVGbGFncy5JbmRleCkhPT0wfU0uaXNJbmRleGVkQWNjZXNzeXBlPXByO2Z1bmN0aW9uIExyKHApe3JldHVybihwLmZsYWdzJnJlLlR5cGVGbGFncy5JbnN0YW50aWFibGUpIT09MH1NLmlzSW5zdGFudGlhYmxlVHlwZT1McjtmdW5jdGlvbiBhcihwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuT2JqZWN0KSE9PTAmJihwLm9iamVjdEZsYWdzJnJlLk9iamVjdEZsYWdzLkNsYXNzT3JJbnRlcmZhY2UpIT09MH1NLmlzSW50ZXJmYWNlVHlwZT1hcjtmdW5jdGlvbiBrZShwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuSW50ZXJzZWN0aW9uKSE9PTB9TS5pc0ludGVyc2VjdGlvblR5cGU9a2U7ZnVuY3Rpb24gZShwKXtyZXR1cm4ocC5mbGFncyYocmUuVHlwZUZsYWdzLlN0cmluZ09yTnVtYmVyTGl0ZXJhbHxyZS5UeXBlRmxhZ3MuQmlnSW50TGl0ZXJhbCkpIT09MH1NLmlzTGl0ZXJhbFR5cGU9ZTtmdW5jdGlvbiBhKHApe3JldHVybihwLmZsYWdzJnJlLlR5cGVGbGFncy5PYmplY3QpIT09MH1NLmlzT2JqZWN0VHlwZT1hO2Z1bmN0aW9uIEMocCl7cmV0dXJuKHAuZmxhZ3MmcmUuVHlwZUZsYWdzLlN1YnN0aXR1dGlvbikhPT0wfU0uaXNTdWJzdGl0dXRpb25UeXBlPUM7ZnVuY3Rpb24gdyhwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuVHlwZVBhcmFtZXRlcikhPT0wfU0uaXNUeXBlUGFyYW1ldGVyPXc7ZnVuY3Rpb24gQihwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuT2JqZWN0KSE9PTAmJihwLm9iamVjdEZsYWdzJnJlLk9iamVjdEZsYWdzLlJlZmVyZW5jZSkhPT0wfU0uaXNUeXBlUmVmZXJlbmNlPUI7ZnVuY3Rpb24gRShwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuVHlwZVZhcmlhYmxlKSE9PTB9TS5pc1R5cGVWYXJpYWJsZT1FO2Z1bmN0aW9uIFEocCl7cmV0dXJuKHAuZmxhZ3MmcmUuVHlwZUZsYWdzLlVuaW9uT3JJbnRlcnNlY3Rpb24pIT09MH1NLmlzVW5pb25PckludGVyc2VjdGlvblR5cGU9UTtmdW5jdGlvbiBsZShwKXtyZXR1cm4ocC5mbGFncyZyZS5UeXBlRmxhZ3MuVW5pb24pIT09MH1NLmlzVW5pb25UeXBlPWxlO2Z1bmN0aW9uIE4ocCl7cmV0dXJuKHAuZmxhZ3MmcmUuVHlwZUZsYWdzLlVuaXF1ZUVTU3ltYm9sKSE9PTB9TS5pc1VuaXF1ZUVTU3ltYm9sVHlwZT1OfX0pLEQ0PU9hKHtcIm5vZGVfbW9kdWxlcy90c3V0aWxzL3R5cGVndWFyZC8yLjkvdHlwZS5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHJlPSh1ZygpLG1wKFVkKSk7cmUuX19leHBvcnRTdGFyKFhVKCksTSl9fSksUVU9T2Eoe1wibm9kZV9tb2R1bGVzL3RzdXRpbHMvdHlwZWd1YXJkLzMuMC90eXBlLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmlzVHVwbGVUeXBlUmVmZXJlbmNlPU0uaXNUdXBsZVR5cGU9dm9pZCAwO3ZhciByZT0odWcoKSxtcChVZCkpO3JlLl9fZXhwb3J0U3RhcihENCgpLE0pO3ZhciBWZT1fdSgpLEtlPUQ0KCk7ZnVuY3Rpb24gb2kocHIpe3JldHVybihwci5mbGFncyZWZS5UeXBlRmxhZ3MuT2JqZWN0JiZwci5vYmplY3RGbGFncyZWZS5PYmplY3RGbGFncy5UdXBsZSkhPT0wfU0uaXNUdXBsZVR5cGU9b2k7ZnVuY3Rpb24ga3IocHIpe3JldHVybiBLZS5pc1R5cGVSZWZlcmVuY2UocHIpJiZvaShwci50YXJnZXQpfU0uaXNUdXBsZVR5cGVSZWZlcmVuY2U9a3J9fSksYTM9T2Eoe1wibm9kZV9tb2R1bGVzL3RzdXRpbHMvdHlwZWd1YXJkLzMuMi90eXBlLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcmU9KHVnKCksbXAoVWQpKTtyZS5fX2V4cG9ydFN0YXIoUVUoKSxNKX19KSxZVT1PYSh7XCJub2RlX21vZHVsZXMvdHN1dGlscy90eXBlZ3VhcmQvMy4yL2luZGV4LmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcmU9KHVnKCksbXAoVWQpKTtyZS5fX2V4cG9ydFN0YXIoaTMoKSxNKSxyZS5fX2V4cG9ydFN0YXIoYTMoKSxNKX19KSwkVT1PYSh7XCJub2RlX21vZHVsZXMvdHN1dGlscy90eXBlZ3VhcmQvdHlwZS5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHJlPSh1ZygpLG1wKFVkKSk7cmUuX19leHBvcnRTdGFyKGEzKCksTSl9fSksWlU9T2Eoe1wibm9kZV9tb2R1bGVzL3RzdXRpbHMvdXRpbC90eXBlLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmdldEJhc2VDbGFzc01lbWJlck9mQ2xhc3NFbGVtZW50PU0uZ2V0SXRlcmF0b3JZaWVsZFJlc3VsdEZyb21JdGVyYXRvclJlc3VsdD1NLmdldEluc3RhbmNlVHlwZU9mQ2xhc3NMaWtlRGVjbGFyYXRpb249TS5nZXRDb25zdHJ1Y3RvclR5cGVPZkNsYXNzTGlrZURlY2xhcmF0aW9uPU0uZ2V0U3ltYm9sT2ZDbGFzc0xpa2VEZWNsYXJhdGlvbj1NLmdldFByb3BlcnR5TmFtZUZyb21UeXBlPU0uc3ltYm9sSGFzUmVhZG9ubHlEZWNsYXJhdGlvbj1NLmlzUHJvcGVydHlSZWFkb25seUluVHlwZT1NLmdldFdlbGxLbm93blN5bWJvbFByb3BlcnR5T2ZUeXBlPU0uZ2V0UHJvcGVydHlPZlR5cGU9TS5pc0Jvb2xlYW5MaXRlcmFsVHlwZT1NLmlzRmFsc3lUeXBlPU0uaXNUaGVuYWJsZVR5cGU9TS5zb21lVHlwZVBhcnQ9TS5pbnRlcnNlY3Rpb25UeXBlUGFydHM9TS51bmlvblR5cGVQYXJ0cz1NLmdldENhbGxTaWduYXR1cmVzT2ZUeXBlPU0uaXNUeXBlQXNzaWduYWJsZVRvU3RyaW5nPU0uaXNUeXBlQXNzaWduYWJsZVRvTnVtYmVyPU0uaXNPcHRpb25hbENoYWluaW5nVW5kZWZpbmVkTWFya2VyVHlwZT1NLnJlbW92ZU9wdGlvbmFsQ2hhaW5pbmdVbmRlZmluZWRNYXJrZXJUeXBlPU0ucmVtb3ZlT3B0aW9uYWxpdHlGcm9tVHlwZT1NLmlzRW1wdHlPYmplY3RUeXBlPXZvaWQgMDt2YXIgcmU9X3UoKSxWZT0kVSgpLEtlPW4zKCksb2k9dDMoKTtmdW5jdGlvbiBrcihGKXtpZihWZS5pc09iamVjdFR5cGUoRikmJkYub2JqZWN0RmxhZ3MmcmUuT2JqZWN0RmxhZ3MuQW5vbnltb3VzJiZGLmdldFByb3BlcnRpZXMoKS5sZW5ndGg9PT0wJiZGLmdldENhbGxTaWduYXR1cmVzKCkubGVuZ3RoPT09MCYmRi5nZXRDb25zdHJ1Y3RTaWduYXR1cmVzKCkubGVuZ3RoPT09MCYmRi5nZXRTdHJpbmdJbmRleFR5cGUoKT09PXZvaWQgMCYmRi5nZXROdW1iZXJJbmRleFR5cGUoKT09PXZvaWQgMCl7bGV0IHg9Ri5nZXRCYXNlVHlwZXMoKTtyZXR1cm4geD09PXZvaWQgMHx8eC5ldmVyeShrcil9cmV0dXJuITF9TS5pc0VtcHR5T2JqZWN0VHlwZT1rcjtmdW5jdGlvbiBwcihGLHgpe2lmKCFMcih4LHJlLlR5cGVGbGFncy5VbmRlZmluZWQpKXJldHVybiB4O2xldCBYPUxyKHgscmUuVHlwZUZsYWdzLk51bGwpO3JldHVybiB4PUYuZ2V0Tm9uTnVsbGFibGVUeXBlKHgpLFg/Ri5nZXROdWxsYWJsZVR5cGUoeCxyZS5UeXBlRmxhZ3MuTnVsbCk6eH1NLnJlbW92ZU9wdGlvbmFsaXR5RnJvbVR5cGU9cHI7ZnVuY3Rpb24gTHIoRix4KXtmb3IobGV0IFggb2YgQihGKSlpZihLZS5pc1R5cGVGbGFnU2V0KFgseCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gYXIoRix4KXtpZighVmUuaXNVbmlvblR5cGUoeCkpcmV0dXJuIGtlKEYseCk/eC5nZXROb25OdWxsYWJsZVR5cGUoKTp4O2xldCBYPTAsJD0hMTtmb3IobGV0IEEgb2YgeC50eXBlcylrZShGLEEpPyQ9ITA6WHw9QS5mbGFncztyZXR1cm4gJD9GLmdldE51bGxhYmxlVHlwZSh4LmdldE5vbk51bGxhYmxlVHlwZSgpLFgpOnh9TS5yZW1vdmVPcHRpb25hbENoYWluaW5nVW5kZWZpbmVkTWFya2VyVHlwZT1hcjtmdW5jdGlvbiBrZShGLHgpe3JldHVybiBLZS5pc1R5cGVGbGFnU2V0KHgscmUuVHlwZUZsYWdzLlVuZGVmaW5lZCkmJkYuZ2V0TnVsbGFibGVUeXBlKHguZ2V0Tm9uTnVsbGFibGVUeXBlKCkscmUuVHlwZUZsYWdzLlVuZGVmaW5lZCkhPT14fU0uaXNPcHRpb25hbENoYWluaW5nVW5kZWZpbmVkTWFya2VyVHlwZT1rZTtmdW5jdGlvbiBlKEYseCl7cmV0dXJuIEMoRix4LHJlLlR5cGVGbGFncy5OdW1iZXJMaWtlKX1NLmlzVHlwZUFzc2lnbmFibGVUb051bWJlcj1lO2Z1bmN0aW9uIGEoRix4KXtyZXR1cm4gQyhGLHgscmUuVHlwZUZsYWdzLlN0cmluZ0xpa2UpfU0uaXNUeXBlQXNzaWduYWJsZVRvU3RyaW5nPWE7ZnVuY3Rpb24gQyhGLHgsWCl7WHw9cmUuVHlwZUZsYWdzLkFueTtsZXQgJDtyZXR1cm4gZnVuY3Rpb24gQSh5KXtpZihWZS5pc1R5cGVQYXJhbWV0ZXIoeSkmJnkuc3ltYm9sIT09dm9pZCAwJiZ5LnN5bWJvbC5kZWNsYXJhdGlvbnMhPT12b2lkIDApe2lmKCQ9PT12b2lkIDApJD1uZXcgU2V0KFt5XSk7ZWxzZSBpZighJC5oYXMoeSkpJC5hZGQoeSk7ZWxzZSByZXR1cm4hMTtsZXQgVj15LnN5bWJvbC5kZWNsYXJhdGlvbnNbMF07cmV0dXJuIFYuY29uc3RyYWludD09PXZvaWQgMD8hMDpBKEYuZ2V0VHlwZUZyb21UeXBlTm9kZShWLmNvbnN0cmFpbnQpKX1yZXR1cm4gVmUuaXNVbmlvblR5cGUoeSk/eS50eXBlcy5ldmVyeShBKTpWZS5pc0ludGVyc2VjdGlvblR5cGUoeSk/eS50eXBlcy5zb21lKEEpOktlLmlzVHlwZUZsYWdTZXQoeSxYKX0oeCl9ZnVuY3Rpb24gdyhGKXtpZihWZS5pc1VuaW9uVHlwZShGKSl7bGV0IHg9W107Zm9yKGxldCBYIG9mIEYudHlwZXMpeC5wdXNoKC4uLncoWCkpO3JldHVybiB4fWlmKFZlLmlzSW50ZXJzZWN0aW9uVHlwZShGKSl7bGV0IHg7Zm9yKGxldCBYIG9mIEYudHlwZXMpe2xldCAkPXcoWCk7aWYoJC5sZW5ndGghPT0wKXtpZih4IT09dm9pZCAwKXJldHVybltdO3g9JH19cmV0dXJuIHg9PT12b2lkIDA/W106eH1yZXR1cm4gRi5nZXRDYWxsU2lnbmF0dXJlcygpfU0uZ2V0Q2FsbFNpZ25hdHVyZXNPZlR5cGU9dztmdW5jdGlvbiBCKEYpe3JldHVybiBWZS5pc1VuaW9uVHlwZShGKT9GLnR5cGVzOltGXX1NLnVuaW9uVHlwZVBhcnRzPUI7ZnVuY3Rpb24gRShGKXtyZXR1cm4gVmUuaXNJbnRlcnNlY3Rpb25UeXBlKEYpP0YudHlwZXM6W0ZdfU0uaW50ZXJzZWN0aW9uVHlwZVBhcnRzPUU7ZnVuY3Rpb24gUShGLHgsWCl7cmV0dXJuIHgoRik/Ri50eXBlcy5zb21lKFgpOlgoRil9TS5zb21lVHlwZVBhcnQ9UTtmdW5jdGlvbiBsZShGLHgpe2xldCBYPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTpGLmdldFR5cGVBdExvY2F0aW9uKHgpO2ZvcihsZXQgJCBvZiBCKEYuZ2V0QXBwYXJlbnRUeXBlKFgpKSl7bGV0IEE9JC5nZXRQcm9wZXJ0eShcInRoZW5cIik7aWYoQT09PXZvaWQgMCljb250aW51ZTtsZXQgeT1GLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oQSx4KTtmb3IobGV0IFYgb2YgQih5KSlmb3IobGV0IEwgb2YgVi5nZXRDYWxsU2lnbmF0dXJlcygpKWlmKEwucGFyYW1ldGVycy5sZW5ndGghPT0wJiZOKEYsTC5wYXJhbWV0ZXJzWzBdLHgpKXJldHVybiEwfXJldHVybiExfU0uaXNUaGVuYWJsZVR5cGU9bGU7ZnVuY3Rpb24gTihGLHgsWCl7bGV0ICQ9Ri5nZXRBcHBhcmVudFR5cGUoRi5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKHgsWCkpO2lmKHgudmFsdWVEZWNsYXJhdGlvbi5kb3REb3REb3RUb2tlbiYmKCQ9JC5nZXROdW1iZXJJbmRleFR5cGUoKSwkPT09dm9pZCAwKSlyZXR1cm4hMTtmb3IobGV0IEEgb2YgQigkKSlpZihBLmdldENhbGxTaWduYXR1cmVzKCkubGVuZ3RoIT09MClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBwKEYpe3JldHVybiBGLmZsYWdzJihyZS5UeXBlRmxhZ3MuVW5kZWZpbmVkfHJlLlR5cGVGbGFncy5OdWxsfHJlLlR5cGVGbGFncy5Wb2lkKT8hMDpWZS5pc0xpdGVyYWxUeXBlKEYpPyFGLnZhbHVlOm0oRiwhMSl9TS5pc0ZhbHN5VHlwZT1wO2Z1bmN0aW9uIG0oRix4KXtyZXR1cm4gS2UuaXNUeXBlRmxhZ1NldChGLHJlLlR5cGVGbGFncy5Cb29sZWFuTGl0ZXJhbCkmJkYuaW50cmluc2ljTmFtZT09PSh4P1widHJ1ZVwiOlwiZmFsc2VcIil9TS5pc0Jvb2xlYW5MaXRlcmFsVHlwZT1tO2Z1bmN0aW9uIEcoRix4KXtyZXR1cm4geC5zdGFydHNXaXRoKFwiX19cIik/Ri5nZXRQcm9wZXJ0aWVzKCkuZmluZChYPT5YLmVzY2FwZWROYW1lPT09eCk6Ri5nZXRQcm9wZXJ0eSh4KX1NLmdldFByb3BlcnR5T2ZUeXBlPUc7ZnVuY3Rpb24gb2UoRix4LFgpe2xldCAkPVwiX19AXCIreDtmb3IobGV0IEEgb2YgRi5nZXRQcm9wZXJ0aWVzKCkpe2lmKCFBLm5hbWUuc3RhcnRzV2l0aCgkKSljb250aW51ZTtsZXQgeT1YLmdldEFwcGFyZW50VHlwZShYLmdldFR5cGVBdExvY2F0aW9uKEEudmFsdWVEZWNsYXJhdGlvbi5uYW1lLmV4cHJlc3Npb24pKS5zeW1ib2w7aWYoQS5lc2NhcGVkTmFtZT09PWYoWCx5LHgpKXJldHVybiBBfX1NLmdldFdlbGxLbm93blN5bWJvbFByb3BlcnR5T2ZUeXBlPW9lO2Z1bmN0aW9uIGYoRix4LFgpe2xldCAkPXgmJkYuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbih4LHgudmFsdWVEZWNsYXJhdGlvbikuZ2V0UHJvcGVydHkoWCksQT0kJiZGLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oJCwkLnZhbHVlRGVjbGFyYXRpb24pO3JldHVybiBBJiZWZS5pc1VuaXF1ZUVTU3ltYm9sVHlwZShBKT9BLmVzY2FwZWROYW1lOlwiX19AXCIrWH1mdW5jdGlvbiBUKEYseCxYKXtsZXQgJD0hMSxBPSExO2ZvcihsZXQgeSBvZiBCKEYpKWlmKEcoeSx4KT09PXZvaWQgMCl7bGV0IFY9KEtlLmlzTnVtZXJpY1Byb3BlcnR5TmFtZSh4KT9YLmdldEluZGV4SW5mb09mVHlwZSh5LHJlLkluZGV4S2luZC5OdW1iZXIpOnZvaWQgMCl8fFguZ2V0SW5kZXhJbmZvT2ZUeXBlKHkscmUuSW5kZXhLaW5kLlN0cmluZyk7aWYoViE9PXZvaWQgMCYmVi5pc1JlYWRvbmx5KXtpZigkKXJldHVybiEwO0E9ITB9fWVsc2V7aWYoQXx8Syh5LHgsWCkpcmV0dXJuITA7JD0hMH1yZXR1cm4hMX1NLmlzUHJvcGVydHlSZWFkb25seUluVHlwZT1UO2Z1bmN0aW9uIEsoRix4LFgpe3JldHVybiBRKEYsVmUuaXNJbnRlcnNlY3Rpb25UeXBlLCQ9PntsZXQgQT1HKCQseCk7aWYoQT09PXZvaWQgMClyZXR1cm4hMTtpZihBLmZsYWdzJnJlLlN5bWJvbEZsYWdzLlRyYW5zaWVudCl7aWYoL14oPzpbMS05XVxcZCp8MCkkLy50ZXN0KHgpJiZWZS5pc1R1cGxlVHlwZVJlZmVyZW5jZSgkKSlyZXR1cm4gJC50YXJnZXQucmVhZG9ubHk7c3dpdGNoKGIoJCx4LFgpKXtjYXNlITA6cmV0dXJuITA7Y2FzZSExOnJldHVybiExO2RlZmF1bHQ6fX1yZXR1cm4gS2UuaXNTeW1ib2xGbGFnU2V0KEEscmUuU3ltYm9sRmxhZ3MuVmFsdWVNb2R1bGUpfHxzZShBLFgpfSl9ZnVuY3Rpb24gYihGLHgsWCl7aWYoIVZlLmlzT2JqZWN0VHlwZShGKXx8IUtlLmlzT2JqZWN0RmxhZ1NldChGLHJlLk9iamVjdEZsYWdzLk1hcHBlZCkpcmV0dXJuO2xldCAkPUYuc3ltYm9sLmRlY2xhcmF0aW9uc1swXTtyZXR1cm4gJC5yZWFkb25seVRva2VuIT09dm9pZCAwJiYhL15fX0BbXkBdKyQvLnRlc3QoeCk/JC5yZWFkb25seVRva2VuLmtpbmQhPT1yZS5TeW50YXhLaW5kLk1pbnVzVG9rZW46VChGLm1vZGlmaWVyc1R5cGUseCxYKX1mdW5jdGlvbiBzZShGLHgpe3JldHVybihGLmZsYWdzJnJlLlN5bWJvbEZsYWdzLkFjY2Vzc29yKT09PXJlLlN5bWJvbEZsYWdzLkdldEFjY2Vzc29yfHxGLmRlY2xhcmF0aW9ucyE9PXZvaWQgMCYmRi5kZWNsYXJhdGlvbnMuc29tZShYPT5LZS5pc01vZGlmaWVyRmxhZ1NldChYLHJlLk1vZGlmaWVyRmxhZ3MuUmVhZG9ubHkpfHxvaS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oWCkmJktlLmlzTm9kZUZsYWdTZXQoWC5wYXJlbnQscmUuTm9kZUZsYWdzLkNvbnN0KXx8b2kuaXNDYWxsRXhwcmVzc2lvbihYKSYmS2UuaXNSZWFkb25seUFzc2lnbm1lbnREZWNsYXJhdGlvbihYLHgpfHxvaS5pc0VudW1NZW1iZXIoWCl8fChvaS5pc1Byb3BlcnR5QXNzaWdubWVudChYKXx8b2kuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQoWCkpJiZLZS5pc0luQ29uc3RDb250ZXh0KFgucGFyZW50KSl9TS5zeW1ib2xIYXNSZWFkb25seURlY2xhcmF0aW9uPXNlO2Z1bmN0aW9uIEooRil7aWYoRi5mbGFncyYocmUuVHlwZUZsYWdzLlN0cmluZ0xpdGVyYWx8cmUuVHlwZUZsYWdzLk51bWJlckxpdGVyYWwpKXtsZXQgeD1TdHJpbmcoRi52YWx1ZSk7cmV0dXJue2Rpc3BsYXlOYW1lOngsc3ltYm9sTmFtZTpyZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoeCl9fWlmKFZlLmlzVW5pcXVlRVNTeW1ib2xUeXBlKEYpKXJldHVybntkaXNwbGF5TmFtZTpcIltcIi5jb25jYXQoRi5zeW1ib2w/XCJcIi5jb25jYXQoaWUoRi5zeW1ib2wpP1wiU3ltYm9sLlwiOlwiXCIpLmNvbmNhdChGLnN5bWJvbC5uYW1lKTpGLmVzY2FwZWROYW1lLnJlcGxhY2UoL15fX0B8QFxcZCskL2csXCJcIiksXCJdXCIpLHN5bWJvbE5hbWU6Ri5lc2NhcGVkTmFtZX19TS5nZXRQcm9wZXJ0eU5hbWVGcm9tVHlwZT1KO2Z1bmN0aW9uIGllKEYpe3JldHVybiBLZS5pc1N5bWJvbEZsYWdTZXQoRixyZS5TeW1ib2xGbGFncy5Qcm9wZXJ0eSkmJkYudmFsdWVEZWNsYXJhdGlvbiE9PXZvaWQgMCYmb2kuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihGLnZhbHVlRGVjbGFyYXRpb24ucGFyZW50KSYmRi52YWx1ZURlY2xhcmF0aW9uLnBhcmVudC5uYW1lLnRleHQ9PT1cIlN5bWJvbENvbnN0cnVjdG9yXCImJlIoRi52YWx1ZURlY2xhcmF0aW9uLnBhcmVudCl9ZnVuY3Rpb24gUihGKXtyZXR1cm4gS2UuaXNOb2RlRmxhZ1NldChGLnBhcmVudCxyZS5Ob2RlRmxhZ3MuR2xvYmFsQXVnbWVudGF0aW9uKXx8b2kuaXNTb3VyY2VGaWxlKEYucGFyZW50KSYmIXJlLmlzRXh0ZXJuYWxNb2R1bGUoRi5wYXJlbnQpfWZ1bmN0aW9uIHEoRix4KXt2YXIgWDtyZXR1cm4geC5nZXRTeW1ib2xBdExvY2F0aW9uKChYPUYubmFtZSkhPT1udWxsJiZYIT09dm9pZCAwP1g6S2UuZ2V0Q2hpbGRPZktpbmQoRixyZS5TeW50YXhLaW5kLkNsYXNzS2V5d29yZCkpfU0uZ2V0U3ltYm9sT2ZDbGFzc0xpa2VEZWNsYXJhdGlvbj1xO2Z1bmN0aW9uIE8oRix4KXtyZXR1cm4gRi5raW5kPT09cmUuU3ludGF4S2luZC5DbGFzc0V4cHJlc3Npb24/eC5nZXRUeXBlQXRMb2NhdGlvbihGKTp4LmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24ocShGLHgpLEYpfU0uZ2V0Q29uc3RydWN0b3JUeXBlT2ZDbGFzc0xpa2VEZWNsYXJhdGlvbj1PO2Z1bmN0aW9uIHZlKEYseCl7cmV0dXJuIEYua2luZD09PXJlLlN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbj94LmdldFR5cGVBdExvY2F0aW9uKEYpOnguZ2V0RGVjbGFyZWRUeXBlT2ZTeW1ib2wocShGLHgpKX1NLmdldEluc3RhbmNlVHlwZU9mQ2xhc3NMaWtlRGVjbGFyYXRpb249dmU7ZnVuY3Rpb24gZWUoRix4LFgpe3JldHVybiBWZS5pc1VuaW9uVHlwZShGKSYmRi50eXBlcy5maW5kKCQ9PntsZXQgQT0kLmdldFByb3BlcnR5KFwiZG9uZVwiKTtyZXR1cm4gQSE9PXZvaWQgMCYmbShwcihYLFguZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihBLHgpKSwhMSl9KXx8Rn1NLmdldEl0ZXJhdG9yWWllbGRSZXN1bHRGcm9tSXRlcmF0b3JSZXN1bHQ9ZWU7ZnVuY3Rpb24gaGUoRix4KXtpZighb2kuaXNDbGFzc0xpa2VEZWNsYXJhdGlvbihGLnBhcmVudCkpcmV0dXJuO2xldCBYPUtlLmdldEJhc2VPZkNsYXNzTGlrZUV4cHJlc3Npb24oRi5wYXJlbnQpO2lmKFg9PT12b2lkIDApcmV0dXJuO2xldCAkPUtlLmdldFNpbmdsZUxhdGVCb3VuZFByb3BlcnR5TmFtZU9mUHJvcGVydHlOYW1lKEYubmFtZSx4KTtpZigkPT09dm9pZCAwKXJldHVybjtsZXQgQT14LmdldFR5cGVBdExvY2F0aW9uKEtlLmhhc01vZGlmaWVyKEYubW9kaWZpZXJzLHJlLlN5bnRheEtpbmQuU3RhdGljS2V5d29yZCk/WC5leHByZXNzaW9uOlgpO3JldHVybiBHKEEsJC5zeW1ib2xOYW1lKX1NLmdldEJhc2VDbGFzc01lbWJlck9mQ2xhc3NFbGVtZW50PWhlfX0pLG4zPU9hKHtcIm5vZGVfbW9kdWxlcy90c3V0aWxzL3V0aWwvdXRpbC5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS5pc1ZhbGlkSWRlbnRpZmllcj1NLmdldExpbmVCcmVha1N0eWxlPU0uZ2V0TGluZVJhbmdlcz1NLmZvckVhY2hDb21tZW50PU0uZm9yRWFjaFRva2VuV2l0aFRyaXZpYT1NLmZvckVhY2hUb2tlbj1NLmlzRnVuY3Rpb25XaXRoQm9keT1NLmhhc093blRoaXNSZWZlcmVuY2U9TS5pc0Jsb2NrU2NvcGVCb3VuZGFyeT1NLmlzRnVuY3Rpb25TY29wZUJvdW5kYXJ5PU0uaXNUeXBlU2NvcGVCb3VuZGFyeT1NLmlzU2NvcGVCb3VuZGFyeT1NLlNjb3BlQm91bmRhcnlTZWxlY3Rvcj1NLlNjb3BlQm91bmRhcnk9TS5pc0luU2luZ2xlU3RhdGVtZW50Q29udGV4dD1NLmlzQmxvY2tTY29wZWREZWNsYXJhdGlvblN0YXRlbWVudD1NLmlzQmxvY2tTY29wZWRWYXJpYWJsZURlY2xhcmF0aW9uPU0uaXNCbG9ja1Njb3BlZFZhcmlhYmxlRGVjbGFyYXRpb25MaXN0PU0uZ2V0VmFyaWFibGVEZWNsYXJhdGlvbktpbmQ9TS5WYXJpYWJsZURlY2xhcmF0aW9uS2luZD1NLmZvckVhY2hEZWNsYXJlZFZhcmlhYmxlPU0uZm9yRWFjaERlc3RydWN0dXJpbmdJZGVudGlmaWVyPU0uZ2V0UHJvcGVydHlOYW1lPU0uZ2V0V3JhcHBlZE5vZGVBdFBvc2l0aW9uPU0uZ2V0QXN0Tm9kZUF0UG9zaXRpb249TS5jb21tZW50VGV4dD1NLmlzUG9zaXRpb25JbkNvbW1lbnQ9TS5nZXRDb21tZW50QXRQb3NpdGlvbj1NLmdldFRva2VuQXRQb3NpdGlvbj1NLmdldE5leHRUb2tlbj1NLmdldFByZXZpb3VzVG9rZW49TS5nZXROZXh0U3RhdGVtZW50PU0uZ2V0UHJldmlvdXNTdGF0ZW1lbnQ9TS5pc01vZGlmaWVyRmxhZ1NldD1NLmlzT2JqZWN0RmxhZ1NldD1NLmlzU3ltYm9sRmxhZ1NldD1NLmlzVHlwZUZsYWdTZXQ9TS5pc05vZGVGbGFnU2V0PU0uaGFzQWNjZXNzTW9kaWZpZXI9TS5pc1BhcmFtZXRlclByb3BlcnR5PU0uaGFzTW9kaWZpZXI9TS5nZXRNb2RpZmllcj1NLmlzVGhpc1BhcmFtZXRlcj1NLmlzS2V5d29yZEtpbmQ9TS5pc0pzRG9jS2luZD1NLmlzVHlwZU5vZGVLaW5kPU0uaXNBc3NpZ25tZW50S2luZD1NLmlzTm9kZUtpbmQ9TS5pc1Rva2VuS2luZD1NLmdldENoaWxkT2ZLaW5kPXZvaWQgMCxNLmdldEJhc2VPZkNsYXNzTGlrZUV4cHJlc3Npb249TS5oYXNFeGhhdXN0aXZlQ2FzZUNsYXVzZXM9TS5mb3JtYXRQc2V1ZG9CaWdJbnQ9TS51bndyYXBQYXJlbnRoZXNlcz1NLmdldFNpbmdsZUxhdGVCb3VuZFByb3BlcnR5TmFtZU9mUHJvcGVydHlOYW1lPU0uZ2V0TGF0ZUJvdW5kUHJvcGVydHlOYW1lc09mUHJvcGVydHlOYW1lPU0uZ2V0TGF0ZUJvdW5kUHJvcGVydHlOYW1lcz1NLmdldFByb3BlcnR5TmFtZU9mV2VsbEtub3duU3ltYm9sPU0uaXNXZWxsS25vd25TeW1ib2xMaXRlcmFsbHk9TS5pc0JpbmRhYmxlT2JqZWN0RGVmaW5lUHJvcGVydHlDYWxsPU0uaXNSZWFkb25seUFzc2lnbm1lbnREZWNsYXJhdGlvbj1NLmlzSW5Db25zdENvbnRleHQ9TS5pc0NvbnN0QXNzZXJ0aW9uPU0uZ2V0VHNDaGVja0RpcmVjdGl2ZT1NLmdldENoZWNrSnNEaXJlY3RpdmU9TS5pc0FtYmllbnRNb2R1bGU9TS5pc0NvbXBpbGVyT3B0aW9uRW5hYmxlZD1NLmlzU3RyaWN0Q29tcGlsZXJPcHRpb25FbmFibGVkPU0uZ2V0SUlGRT1NLmlzQW1iaWVudE1vZHVsZUJsb2NrPU0uaXNTdGF0ZW1lbnRJbkFtYmllbnRDb250ZXh0PU0uZmluZEltcG9ydExpa2VOb2Rlcz1NLmZpbmRJbXBvcnRzPU0uSW1wb3J0S2luZD1NLnBhcnNlSnNEb2NPZk5vZGU9TS5nZXRKc0RvYz1NLmNhbkhhdmVKc0RvYz1NLmlzUmVhc3NpZ25tZW50VGFyZ2V0PU0uZ2V0QWNjZXNzS2luZD1NLkFjY2Vzc0tpbmQ9TS5pc0V4cHJlc3Npb25WYWx1ZVVzZWQ9TS5nZXREZWNsYXJhdGlvbk9mQmluZGluZ0VsZW1lbnQ9TS5oYXNTaWRlRWZmZWN0cz1NLlNpZGVFZmZlY3RPcHRpb25zPU0uaXNTYW1lTGluZT1NLmlzTnVtZXJpY1Byb3BlcnR5TmFtZT1NLmlzVmFsaWRKc3hJZGVudGlmaWVyPU0uaXNWYWxpZE51bWVyaWNMaXRlcmFsPU0uaXNWYWxpZFByb3BlcnR5TmFtZT1NLmlzVmFsaWRQcm9wZXJ0eUFjY2Vzcz12b2lkIDA7dmFyIHJlPV91KCksVmU9dDMoKSxLZT1ZVSgpLG9pPVpVKCk7ZnVuY3Rpb24ga3IoYWUsWGUsSnIpe2ZvcihsZXQgdGkgb2YgYWUuZ2V0Q2hpbGRyZW4oSnIpKWlmKHRpLmtpbmQ9PT1YZSlyZXR1cm4gdGl9TS5nZXRDaGlsZE9mS2luZD1rcjtmdW5jdGlvbiBwcihhZSl7cmV0dXJuIGFlPj1yZS5TeW50YXhLaW5kLkZpcnN0VG9rZW4mJmFlPD1yZS5TeW50YXhLaW5kLkxhc3RUb2tlbn1NLmlzVG9rZW5LaW5kPXByO2Z1bmN0aW9uIExyKGFlKXtyZXR1cm4gYWU+PXJlLlN5bnRheEtpbmQuRmlyc3ROb2RlfU0uaXNOb2RlS2luZD1McjtmdW5jdGlvbiBhcihhZSl7cmV0dXJuIGFlPj1yZS5TeW50YXhLaW5kLkZpcnN0QXNzaWdubWVudCYmYWU8PXJlLlN5bnRheEtpbmQuTGFzdEFzc2lnbm1lbnR9TS5pc0Fzc2lnbm1lbnRLaW5kPWFyO2Z1bmN0aW9uIGtlKGFlKXtyZXR1cm4gYWU+PXJlLlN5bnRheEtpbmQuRmlyc3RUeXBlTm9kZSYmYWU8PXJlLlN5bnRheEtpbmQuTGFzdFR5cGVOb2RlfU0uaXNUeXBlTm9kZUtpbmQ9a2U7ZnVuY3Rpb24gZShhZSl7cmV0dXJuIGFlPj1yZS5TeW50YXhLaW5kLkZpcnN0SlNEb2NOb2RlJiZhZTw9cmUuU3ludGF4S2luZC5MYXN0SlNEb2NOb2RlfU0uaXNKc0RvY0tpbmQ9ZTtmdW5jdGlvbiBhKGFlKXtyZXR1cm4gYWU+PXJlLlN5bnRheEtpbmQuRmlyc3RLZXl3b3JkJiZhZTw9cmUuU3ludGF4S2luZC5MYXN0S2V5d29yZH1NLmlzS2V5d29yZEtpbmQ9YTtmdW5jdGlvbiBDKGFlKXtyZXR1cm4gYWUubmFtZS5raW5kPT09cmUuU3ludGF4S2luZC5JZGVudGlmaWVyJiZhZS5uYW1lLm9yaWdpbmFsS2V5d29yZEtpbmQ9PT1yZS5TeW50YXhLaW5kLlRoaXNLZXl3b3JkfU0uaXNUaGlzUGFyYW1ldGVyPUM7ZnVuY3Rpb24gdyhhZSxYZSl7aWYoYWUubW9kaWZpZXJzIT09dm9pZCAwKXtmb3IobGV0IEpyIG9mIGFlLm1vZGlmaWVycylpZihKci5raW5kPT09WGUpcmV0dXJuIEpyfX1NLmdldE1vZGlmaWVyPXc7ZnVuY3Rpb24gQihhZSl7aWYoYWU9PT12b2lkIDApcmV0dXJuITE7Zm9yKHZhciBYZT1hcmd1bWVudHMubGVuZ3RoLEpyPW5ldyBBcnJheShYZT4xP1hlLTE6MCksdGk9MTt0aTxYZTt0aSsrKUpyW3RpLTFdPWFyZ3VtZW50c1t0aV07Zm9yKGxldCBaZSBvZiBhZSlpZihKci5pbmNsdWRlcyhaZS5raW5kKSlyZXR1cm4hMDtyZXR1cm4hMX1NLmhhc01vZGlmaWVyPUI7ZnVuY3Rpb24gRShhZSl7cmV0dXJuIEIoYWUubW9kaWZpZXJzLHJlLlN5bnRheEtpbmQuUHVibGljS2V5d29yZCxyZS5TeW50YXhLaW5kLlByb3RlY3RlZEtleXdvcmQscmUuU3ludGF4S2luZC5Qcml2YXRlS2V5d29yZCxyZS5TeW50YXhLaW5kLlJlYWRvbmx5S2V5d29yZCl9TS5pc1BhcmFtZXRlclByb3BlcnR5PUU7ZnVuY3Rpb24gUShhZSl7cmV0dXJuIHAoYWUscmUuTW9kaWZpZXJGbGFncy5BY2Nlc3NpYmlsaXR5TW9kaWZpZXIpfU0uaGFzQWNjZXNzTW9kaWZpZXI9UTtmdW5jdGlvbiBsZShhZSxYZSl7cmV0dXJuKGFlLmZsYWdzJlhlKSE9PTB9TS5pc05vZGVGbGFnU2V0PWxlLE0uaXNUeXBlRmxhZ1NldD1sZSxNLmlzU3ltYm9sRmxhZ1NldD1sZTtmdW5jdGlvbiBOKGFlLFhlKXtyZXR1cm4oYWUub2JqZWN0RmxhZ3MmWGUpIT09MH1NLmlzT2JqZWN0RmxhZ1NldD1OO2Z1bmN0aW9uIHAoYWUsWGUpe3JldHVybihyZS5nZXRDb21iaW5lZE1vZGlmaWVyRmxhZ3MoYWUpJlhlKSE9PTB9TS5pc01vZGlmaWVyRmxhZ1NldD1wO2Z1bmN0aW9uIG0oYWUpe2xldCBYZT1hZS5wYXJlbnQ7aWYoVmUuaXNCbG9ja0xpa2UoWGUpKXtsZXQgSnI9WGUuc3RhdGVtZW50cy5pbmRleE9mKGFlKTtpZihKcj4wKXJldHVybiBYZS5zdGF0ZW1lbnRzW0pyLTFdfX1NLmdldFByZXZpb3VzU3RhdGVtZW50PW07ZnVuY3Rpb24gRyhhZSl7bGV0IFhlPWFlLnBhcmVudDtpZihWZS5pc0Jsb2NrTGlrZShYZSkpe2xldCBKcj1YZS5zdGF0ZW1lbnRzLmluZGV4T2YoYWUpO2lmKEpyPFhlLnN0YXRlbWVudHMubGVuZ3RoKXJldHVybiBYZS5zdGF0ZW1lbnRzW0pyKzFdfX1NLmdldE5leHRTdGF0ZW1lbnQ9RztmdW5jdGlvbiBvZShhZSxYZSl7bGV0e3BvczpKcn09YWU7aWYoSnIhPT0wKXtkbyBhZT1hZS5wYXJlbnQ7d2hpbGUoYWUucG9zPT09SnIpO3JldHVybiBLKGFlLEpyLTEsWGUhPW51bGw/WGU6YWUuZ2V0U291cmNlRmlsZSgpLCExKX19TS5nZXRQcmV2aW91c1Rva2VuPW9lO2Z1bmN0aW9uIGYoYWUsWGUpe2lmKGFlLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlNvdXJjZUZpbGV8fGFlLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkVuZE9mRmlsZVRva2VuKXJldHVybjtsZXQgSnI9YWUuZW5kO2ZvcihhZT1hZS5wYXJlbnQ7YWUuZW5kPT09SnI7KXtpZihhZS5wYXJlbnQ9PT12b2lkIDApcmV0dXJuIGFlLmVuZE9mRmlsZVRva2VuO2FlPWFlLnBhcmVudH1yZXR1cm4gSyhhZSxKcixYZSE9bnVsbD9YZTphZS5nZXRTb3VyY2VGaWxlKCksITEpfU0uZ2V0TmV4dFRva2VuPWY7ZnVuY3Rpb24gVChhZSxYZSxKcix0aSl7aWYoIShYZTxhZS5wb3N8fFhlPj1hZS5lbmQpKXJldHVybiBwcihhZS5raW5kKT9hZTpLKGFlLFhlLEpyIT1udWxsP0pyOmFlLmdldFNvdXJjZUZpbGUoKSx0aT09PSEwKX1NLmdldFRva2VuQXRQb3NpdGlvbj1UO2Z1bmN0aW9uIEsoYWUsWGUsSnIsdGkpe2lmKCF0aSYmKGFlPVIoYWUsWGUpLHByKGFlLmtpbmQpKSlyZXR1cm4gYWU7ZTpmb3IoOzspe2ZvcihsZXQgWmUgb2YgYWUuZ2V0Q2hpbGRyZW4oSnIpKWlmKFplLmVuZD5YZSYmKHRpfHxaZS5raW5kIT09cmUuU3ludGF4S2luZC5KU0RvY0NvbW1lbnQpKXtpZihwcihaZS5raW5kKSlyZXR1cm4gWmU7YWU9WmU7Y29udGludWUgZX1yZXR1cm59fWZ1bmN0aW9uIGIoYWUsWGUpe2xldCBKcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06YWUsdGk9VChKcixYZSxhZSk7aWYodGk9PT12b2lkIDB8fHRpLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeFRleHR8fFhlPj10aS5lbmQtKHJlLnRva2VuVG9TdHJpbmcodGkua2luZCl8fFwiXCIpLmxlbmd0aClyZXR1cm47bGV0IFplPXRpLnBvcz09PTA/KHJlLmdldFNoZWJhbmcoYWUudGV4dCl8fFwiXCIpLmxlbmd0aDp0aS5wb3M7cmV0dXJuIFplIT09MCYmcmUuZm9yRWFjaFRyYWlsaW5nQ29tbWVudFJhbmdlKGFlLnRleHQsWmUsc2UsWGUpfHxyZS5mb3JFYWNoTGVhZGluZ0NvbW1lbnRSYW5nZShhZS50ZXh0LFplLHNlLFhlKX1NLmdldENvbW1lbnRBdFBvc2l0aW9uPWI7ZnVuY3Rpb24gc2UoYWUsWGUsSnIsdGksWmUpe3JldHVybiBaZT49YWUmJlplPFhlP3twb3M6YWUsZW5kOlhlLGtpbmQ6SnJ9OnZvaWQgMH1mdW5jdGlvbiBKKGFlLFhlLEpyKXtyZXR1cm4gYihhZSxYZSxKcikhPT12b2lkIDB9TS5pc1Bvc2l0aW9uSW5Db21tZW50PUo7ZnVuY3Rpb24gaWUoYWUsWGUpe3JldHVybiBhZS5zdWJzdHJpbmcoWGUucG9zKzIsWGUua2luZD09PXJlLlN5bnRheEtpbmQuU2luZ2xlTGluZUNvbW1lbnRUcml2aWE/WGUuZW5kOlhlLmVuZC0yKX1NLmNvbW1lbnRUZXh0PWllO2Z1bmN0aW9uIFIoYWUsWGUpe2lmKCEoYWUucG9zPlhlfHxhZS5lbmQ8PVhlKSl7Zm9yKDtMcihhZS5raW5kKTspe2xldCBKcj1yZS5mb3JFYWNoQ2hpbGQoYWUsdGk9PnRpLnBvczw9WGUmJnRpLmVuZD5YZT90aTp2b2lkIDApO2lmKEpyPT09dm9pZCAwKWJyZWFrO2FlPUpyfXJldHVybiBhZX19TS5nZXRBc3ROb2RlQXRQb3NpdGlvbj1SO2Z1bmN0aW9uIHEoYWUsWGUpe2lmKGFlLm5vZGUucG9zPlhlfHxhZS5ub2RlLmVuZDw9WGUpcmV0dXJuO2U6Zm9yKDs7KXtmb3IobGV0IEpyIG9mIGFlLmNoaWxkcmVuKXtpZihKci5ub2RlLnBvcz5YZSlyZXR1cm4gYWU7aWYoSnIubm9kZS5lbmQ+WGUpe2FlPUpyO2NvbnRpbnVlIGV9fXJldHVybiBhZX19TS5nZXRXcmFwcGVkTm9kZUF0UG9zaXRpb249cTtmdW5jdGlvbiBPKGFlKXtpZihhZS5raW5kPT09cmUuU3ludGF4S2luZC5Db21wdXRlZFByb3BlcnR5TmFtZSl7bGV0IFhlPUdpKGFlLmV4cHJlc3Npb24pO2lmKFZlLmlzUHJlZml4VW5hcnlFeHByZXNzaW9uKFhlKSl7bGV0IEpyPSExO3N3aXRjaChYZS5vcGVyYXRvcil7Y2FzZSByZS5TeW50YXhLaW5kLk1pbnVzVG9rZW46SnI9ITA7Y2FzZSByZS5TeW50YXhLaW5kLlBsdXNUb2tlbjpyZXR1cm4gVmUuaXNOdW1lcmljTGl0ZXJhbChYZS5vcGVyYW5kKT9cIlwiLmNvbmNhdChKcj9cIi1cIjpcIlwiKS5jb25jYXQoWGUub3BlcmFuZC50ZXh0KTpLZS5pc0JpZ0ludExpdGVyYWwoWGUub3BlcmFuZCk/XCJcIi5jb25jYXQoSnI/XCItXCI6XCJcIikuY29uY2F0KFhlLm9wZXJhbmQudGV4dC5zbGljZSgwLC0xKSk6dm9pZCAwO2RlZmF1bHQ6cmV0dXJufX1yZXR1cm4gS2UuaXNCaWdJbnRMaXRlcmFsKFhlKT9YZS50ZXh0LnNsaWNlKDAsLTEpOlZlLmlzTnVtZXJpY09yU3RyaW5nTGlrZUxpdGVyYWwoWGUpP1hlLnRleHQ6dm9pZCAwfXJldHVybiBhZS5raW5kPT09cmUuU3ludGF4S2luZC5Qcml2YXRlSWRlbnRpZmllcj92b2lkIDA6YWUudGV4dH1NLmdldFByb3BlcnR5TmFtZT1PO2Z1bmN0aW9uIHZlKGFlLFhlKXtmb3IobGV0IEpyIG9mIGFlLmVsZW1lbnRzKXtpZihKci5raW5kIT09cmUuU3ludGF4S2luZC5CaW5kaW5nRWxlbWVudCljb250aW51ZTtsZXQgdGk7aWYoSnIubmFtZS5raW5kPT09cmUuU3ludGF4S2luZC5JZGVudGlmaWVyP3RpPVhlKEpyKTp0aT12ZShKci5uYW1lLFhlKSx0aSlyZXR1cm4gdGl9fU0uZm9yRWFjaERlc3RydWN0dXJpbmdJZGVudGlmaWVyPXZlO2Z1bmN0aW9uIGVlKGFlLFhlKXtmb3IobGV0IEpyIG9mIGFlLmRlY2xhcmF0aW9ucyl7bGV0IHRpO2lmKEpyLm5hbWUua2luZD09PXJlLlN5bnRheEtpbmQuSWRlbnRpZmllcj90aT1YZShKcik6dGk9dmUoSnIubmFtZSxYZSksdGkpcmV0dXJuIHRpfX1NLmZvckVhY2hEZWNsYXJlZFZhcmlhYmxlPWVlO3ZhciBoZTsoZnVuY3Rpb24oYWUpe2FlW2FlLlZhcj0wXT1cIlZhclwiLGFlW2FlLkxldD0xXT1cIkxldFwiLGFlW2FlLkNvbnN0PTJdPVwiQ29uc3RcIn0pKGhlPU0uVmFyaWFibGVEZWNsYXJhdGlvbktpbmR8fChNLlZhcmlhYmxlRGVjbGFyYXRpb25LaW5kPXt9KSk7ZnVuY3Rpb24gRihhZSl7cmV0dXJuIGFlLmZsYWdzJnJlLk5vZGVGbGFncy5MZXQ/MTphZS5mbGFncyZyZS5Ob2RlRmxhZ3MuQ29uc3Q/MjowfU0uZ2V0VmFyaWFibGVEZWNsYXJhdGlvbktpbmQ9RjtmdW5jdGlvbiB4KGFlKXtyZXR1cm4oYWUuZmxhZ3MmcmUuTm9kZUZsYWdzLkJsb2NrU2NvcGVkKSE9PTB9TS5pc0Jsb2NrU2NvcGVkVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Q9eDtmdW5jdGlvbiBYKGFlKXtsZXQgWGU9YWUucGFyZW50O3JldHVybiBYZS5raW5kPT09cmUuU3ludGF4S2luZC5DYXRjaENsYXVzZXx8eChYZSl9TS5pc0Jsb2NrU2NvcGVkVmFyaWFibGVEZWNsYXJhdGlvbj1YO2Z1bmN0aW9uICQoYWUpe3N3aXRjaChhZS5raW5kKXtjYXNlIHJlLlN5bnRheEtpbmQuVmFyaWFibGVTdGF0ZW1lbnQ6cmV0dXJuIHgoYWUuZGVjbGFyYXRpb25MaXN0KTtjYXNlIHJlLlN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuRW51bURlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuVHlwZUFsaWFzRGVjbGFyYXRpb246cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19TS5pc0Jsb2NrU2NvcGVkRGVjbGFyYXRpb25TdGF0ZW1lbnQ9JDtmdW5jdGlvbiBBKGFlKXtzd2l0Y2goYWUucGFyZW50LmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5Gb3JTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkZvckluU3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Gb3JPZlN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuV2hpbGVTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkRvU3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5JZlN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuV2l0aFN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuTGFiZWxlZFN0YXRlbWVudDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1NLmlzSW5TaW5nbGVTdGF0ZW1lbnRDb250ZXh0PUE7dmFyIHk7KGZ1bmN0aW9uKGFlKXthZVthZS5Ob25lPTBdPVwiTm9uZVwiLGFlW2FlLkZ1bmN0aW9uPTFdPVwiRnVuY3Rpb25cIixhZVthZS5CbG9jaz0yXT1cIkJsb2NrXCIsYWVbYWUuVHlwZT00XT1cIlR5cGVcIixhZVthZS5Db25kaXRpb25hbFR5cGU9OF09XCJDb25kaXRpb25hbFR5cGVcIn0pKHk9TS5TY29wZUJvdW5kYXJ5fHwoTS5TY29wZUJvdW5kYXJ5PXt9KSk7dmFyIFY7KGZ1bmN0aW9uKGFlKXthZVthZS5GdW5jdGlvbj0xXT1cIkZ1bmN0aW9uXCIsYWVbYWUuQmxvY2s9M109XCJCbG9ja1wiLGFlW2FlLlR5cGU9N109XCJUeXBlXCIsYWVbYWUuSW5mZXJUeXBlPThdPVwiSW5mZXJUeXBlXCJ9KShWPU0uU2NvcGVCb3VuZGFyeVNlbGVjdG9yfHwoTS5TY29wZUJvdW5kYXJ5U2VsZWN0b3I9e30pKTtmdW5jdGlvbiBMKGFlKXtyZXR1cm4gayhhZSl8fFkoYWUpfHxQKGFlKX1NLmlzU2NvcGVCb3VuZGFyeT1MO2Z1bmN0aW9uIFAoYWUpe3N3aXRjaChhZS5raW5kKXtjYXNlIHJlLlN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLlR5cGVBbGlhc0RlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5NYXBwZWRUeXBlOnJldHVybiA0O2Nhc2UgcmUuU3ludGF4S2luZC5Db25kaXRpb25hbFR5cGU6cmV0dXJuIDg7ZGVmYXVsdDpyZXR1cm4gMH19TS5pc1R5cGVTY29wZUJvdW5kYXJ5PVA7ZnVuY3Rpb24gayhhZSl7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkFycm93RnVuY3Rpb246Y2FzZSByZS5TeW50YXhLaW5kLkNvbnN0cnVjdG9yOmNhc2UgcmUuU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuQ2xhc3NFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5FbnVtRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5HZXRBY2Nlc3NvcjpjYXNlIHJlLlN5bnRheEtpbmQuU2V0QWNjZXNzb3I6Y2FzZSByZS5TeW50YXhLaW5kLk1ldGhvZFNpZ25hdHVyZTpjYXNlIHJlLlN5bnRheEtpbmQuQ2FsbFNpZ25hdHVyZTpjYXNlIHJlLlN5bnRheEtpbmQuQ29uc3RydWN0U2lnbmF0dXJlOmNhc2UgcmUuU3ludGF4S2luZC5Db25zdHJ1Y3RvclR5cGU6Y2FzZSByZS5TeW50YXhLaW5kLkZ1bmN0aW9uVHlwZTpyZXR1cm4gMTtjYXNlIHJlLlN5bnRheEtpbmQuU291cmNlRmlsZTpyZXR1cm4gcmUuaXNFeHRlcm5hbE1vZHVsZShhZSk/MTowO2RlZmF1bHQ6cmV0dXJuIDB9fU0uaXNGdW5jdGlvblNjb3BlQm91bmRhcnk9aztmdW5jdGlvbiBZKGFlKXtzd2l0Y2goYWUua2luZCl7Y2FzZSByZS5TeW50YXhLaW5kLkJsb2NrOmxldCBYZT1hZS5wYXJlbnQ7cmV0dXJuIFhlLmtpbmQhPT1yZS5TeW50YXhLaW5kLkNhdGNoQ2xhdXNlJiYoWGUua2luZD09PXJlLlN5bnRheEtpbmQuU291cmNlRmlsZXx8IWsoWGUpKT8yOjA7Y2FzZSByZS5TeW50YXhLaW5kLkZvclN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuRm9ySW5TdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkZvck9mU3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5DYXNlQmxvY2s6Y2FzZSByZS5TeW50YXhLaW5kLkNhdGNoQ2xhdXNlOmNhc2UgcmUuU3ludGF4S2luZC5XaXRoU3RhdGVtZW50OnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9fU0uaXNCbG9ja1Njb3BlQm91bmRhcnk9WTtmdW5jdGlvbiBVKGFlKXtzd2l0Y2goYWUua2luZCl7Y2FzZSByZS5TeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLkNsYXNzRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuRnVuY3Rpb25FeHByZXNzaW9uOnJldHVybiEwO2Nhc2UgcmUuU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uOnJldHVybiBhZS5ib2R5IT09dm9pZCAwO2Nhc2UgcmUuU3ludGF4S2luZC5NZXRob2REZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuR2V0QWNjZXNzb3I6Y2FzZSByZS5TeW50YXhLaW5kLlNldEFjY2Vzc29yOnJldHVybiBhZS5wYXJlbnQua2luZD09PXJlLlN5bnRheEtpbmQuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb247ZGVmYXVsdDpyZXR1cm4hMX19TS5oYXNPd25UaGlzUmVmZXJlbmNlPVU7ZnVuY3Rpb24gaihhZSl7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5HZXRBY2Nlc3NvcjpjYXNlIHJlLlN5bnRheEtpbmQuU2V0QWNjZXNzb3I6Y2FzZSByZS5TeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5Db25zdHJ1Y3RvcjpyZXR1cm4gYWUuYm9keSE9PXZvaWQgMDtjYXNlIHJlLlN5bnRheEtpbmQuRnVuY3Rpb25FeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5BcnJvd0Z1bmN0aW9uOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fU0uaXNGdW5jdGlvbldpdGhCb2R5PWo7ZnVuY3Rpb24gSChhZSxYZSl7bGV0IEpyPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTphZS5nZXRTb3VyY2VGaWxlKCksdGk9W107Zm9yKDs7KXtpZihwcihhZS5raW5kKSlYZShhZSk7ZWxzZSBpZihhZS5raW5kIT09cmUuU3ludGF4S2luZC5KU0RvY0NvbW1lbnQpe2xldCBaZT1hZS5nZXRDaGlsZHJlbihKcik7aWYoWmUubGVuZ3RoPT09MSl7YWU9WmVbMF07Y29udGludWV9Zm9yKGxldCBTcj1aZS5sZW5ndGgtMTtTcj49MDstLVNyKXRpLnB1c2goWmVbU3JdKX1pZih0aS5sZW5ndGg9PT0wKWJyZWFrO2FlPXRpLnBvcCgpfX1NLmZvckVhY2hUb2tlbj1IO2Z1bmN0aW9uIEkoYWUsWGUpe2xldCBKcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06YWUuZ2V0U291cmNlRmlsZSgpLHRpPUpyLnRleHQsWmU9cmUuY3JlYXRlU2Nhbm5lcihKci5sYW5ndWFnZVZlcnNpb24sITEsSnIubGFuZ3VhZ2VWYXJpYW50LHRpKTtyZXR1cm4gSChhZSxTcj0+e2xldCB6cj1Tci5raW5kPT09cmUuU3ludGF4S2luZC5Kc3hUZXh0fHxTci5wb3M9PT1Tci5lbmQ/U3IucG9zOlNyLmdldFN0YXJ0KEpyKTtpZih6ciE9PVNyLnBvcyl7WmUuc2V0VGV4dFBvcyhTci5wb3MpO2xldCBXcj1aZS5zY2FuKCksSmU9WmUuZ2V0VG9rZW5Qb3MoKTtmb3IoO0plPHpyOyl7bGV0IHhlPVplLmdldFRleHRQb3MoKTtpZihYZSh0aSxXcix7cG9zOkplLGVuZDp4ZX0sU3IucGFyZW50KSx4ZT09PXpyKWJyZWFrO1dyPVplLnNjYW4oKSxKZT1aZS5nZXRUb2tlblBvcygpfX1yZXR1cm4gWGUodGksU3Iua2luZCx7ZW5kOlNyLmVuZCxwb3M6enJ9LFNyLnBhcmVudCl9LEpyKX1NLmZvckVhY2hUb2tlbldpdGhUcml2aWE9STtmdW5jdGlvbiBsKGFlLFhlKXtsZXQgSnI9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOmFlLmdldFNvdXJjZUZpbGUoKSx0aT1Kci50ZXh0LFplPUpyLmxhbmd1YWdlVmFyaWFudCE9PXJlLkxhbmd1YWdlVmFyaWFudC5KU1g7cmV0dXJuIEgoYWUsenI9PntpZih6ci5wb3MhPT16ci5lbmQmJih6ci5raW5kIT09cmUuU3ludGF4S2luZC5Kc3hUZXh0JiZyZS5mb3JFYWNoTGVhZGluZ0NvbW1lbnRSYW5nZSh0aSx6ci5wb3M9PT0wPyhyZS5nZXRTaGViYW5nKHRpKXx8XCJcIikubGVuZ3RoOnpyLnBvcyxTciksWmV8fGQoenIpKSlyZXR1cm4gcmUuZm9yRWFjaFRyYWlsaW5nQ29tbWVudFJhbmdlKHRpLHpyLmVuZCxTcil9LEpyKTtmdW5jdGlvbiBTcih6cixXcixKZSl7WGUodGkse3Bvczp6cixlbmQ6V3Isa2luZDpKZX0pfX1NLmZvckVhY2hDb21tZW50PWw7ZnVuY3Rpb24gZChhZSl7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5DbG9zZUJyYWNlVG9rZW46cmV0dXJuIGFlLnBhcmVudC5raW5kIT09cmUuU3ludGF4S2luZC5Kc3hFeHByZXNzaW9ufHwhRChhZS5wYXJlbnQucGFyZW50KTtjYXNlIHJlLlN5bnRheEtpbmQuR3JlYXRlclRoYW5Ub2tlbjpzd2l0Y2goYWUucGFyZW50LmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5Kc3hPcGVuaW5nRWxlbWVudDpyZXR1cm4gYWUuZW5kIT09YWUucGFyZW50LmVuZDtjYXNlIHJlLlN5bnRheEtpbmQuSnN4T3BlbmluZ0ZyYWdtZW50OnJldHVybiExO2Nhc2UgcmUuU3ludGF4S2luZC5Kc3hTZWxmQ2xvc2luZ0VsZW1lbnQ6cmV0dXJuIGFlLmVuZCE9PWFlLnBhcmVudC5lbmR8fCFEKGFlLnBhcmVudC5wYXJlbnQpO2Nhc2UgcmUuU3ludGF4S2luZC5Kc3hDbG9zaW5nRWxlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuSnN4Q2xvc2luZ0ZyYWdtZW50OnJldHVybiFEKGFlLnBhcmVudC5wYXJlbnQucGFyZW50KX19cmV0dXJuITB9ZnVuY3Rpb24gRChhZSl7cmV0dXJuIGFlLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeEVsZW1lbnR8fGFlLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeEZyYWdtZW50fWZ1bmN0aW9uIGZlKGFlKXtsZXQgWGU9YWUuZ2V0TGluZVN0YXJ0cygpLEpyPVtdLHRpPVhlLmxlbmd0aCxaZT1hZS50ZXh0LFNyPTA7Zm9yKGxldCB6cj0xO3pyPHRpOysrenIpe2xldCBXcj1YZVt6cl0sSmU9V3I7Zm9yKDtKZT5TciYmcmUuaXNMaW5lQnJlYWsoWmUuY2hhckNvZGVBdChKZS0xKSk7LS1KZSk7SnIucHVzaCh7cG9zOlNyLGVuZDpXcixjb250ZW50TGVuZ3RoOkplLVNyfSksU3I9V3J9cmV0dXJuIEpyLnB1c2goe3BvczpTcixlbmQ6YWUuZW5kLGNvbnRlbnRMZW5ndGg6YWUuZW5kLVNyfSksSnJ9TS5nZXRMaW5lUmFuZ2VzPWZlO2Z1bmN0aW9uIGcoYWUpe2xldCBYZT1hZS5nZXRMaW5lU3RhcnRzKCk7cmV0dXJuIFhlLmxlbmd0aD09PTF8fFhlWzFdPDJ8fGFlLnRleHRbWGVbMV0tMl0hPT1cIlxcclwiP2BcbmA6YFxcclxuYH1NLmdldExpbmVCcmVha1N0eWxlPWc7dmFyIG5lO2Z1bmN0aW9uIHVlKGFlLFhlKXtyZXR1cm4gbmU9PT12b2lkIDA/bmU9cmUuY3JlYXRlU2Nhbm5lcihYZSwhMSx2b2lkIDAsYWUpOihuZS5zZXRTY3JpcHRUYXJnZXQoWGUpLG5lLnNldFRleHQoYWUpKSxuZS5zY2FuKCksbmV9ZnVuY3Rpb24gV2UoYWUpe2xldCBYZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06cmUuU2NyaXB0VGFyZ2V0LkxhdGVzdCxKcj11ZShhZSxYZSk7cmV0dXJuIEpyLmlzSWRlbnRpZmllcigpJiZKci5nZXRUZXh0UG9zKCk9PT1hZS5sZW5ndGgmJkpyLmdldFRva2VuUG9zKCk9PT0wfU0uaXNWYWxpZElkZW50aWZpZXI9V2U7ZnVuY3Rpb24gRmUoYWUpe3JldHVybiBhZT49NjU1MzY/MjoxfWZ1bmN0aW9uIFooYWUpe2xldCBYZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06cmUuU2NyaXB0VGFyZ2V0LkxhdGVzdDtpZihhZS5sZW5ndGg9PT0wKXJldHVybiExO2xldCBKcj1hZS5jb2RlUG9pbnRBdCgwKTtpZighcmUuaXNJZGVudGlmaWVyU3RhcnQoSnIsWGUpKXJldHVybiExO2ZvcihsZXQgdGk9RmUoSnIpO3RpPGFlLmxlbmd0aDt0aSs9RmUoSnIpKWlmKEpyPWFlLmNvZGVQb2ludEF0KHRpKSwhcmUuaXNJZGVudGlmaWVyUGFydChKcixYZSkpcmV0dXJuITE7cmV0dXJuITB9TS5pc1ZhbGlkUHJvcGVydHlBY2Nlc3M9WjtmdW5jdGlvbiBCZShhZSl7bGV0IFhlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpyZS5TY3JpcHRUYXJnZXQuTGF0ZXN0O2lmKFooYWUsWGUpKXJldHVybiEwO2xldCBKcj11ZShhZSxYZSk7cmV0dXJuIEpyLmdldFRleHRQb3MoKT09PWFlLmxlbmd0aCYmSnIuZ2V0VG9rZW4oKT09PXJlLlN5bnRheEtpbmQuTnVtZXJpY0xpdGVyYWwmJkpyLmdldFRva2VuVmFsdWUoKT09PWFlfU0uaXNWYWxpZFByb3BlcnR5TmFtZT1CZTtmdW5jdGlvbiBnZShhZSl7bGV0IFhlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpyZS5TY3JpcHRUYXJnZXQuTGF0ZXN0LEpyPXVlKGFlLFhlKTtyZXR1cm4gSnIuZ2V0VG9rZW4oKT09PXJlLlN5bnRheEtpbmQuTnVtZXJpY0xpdGVyYWwmJkpyLmdldFRleHRQb3MoKT09PWFlLmxlbmd0aCYmSnIuZ2V0VG9rZW5Qb3MoKT09PTB9TS5pc1ZhbGlkTnVtZXJpY0xpdGVyYWw9Z2U7ZnVuY3Rpb24gUmUoYWUpe2xldCBYZT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06cmUuU2NyaXB0VGFyZ2V0LkxhdGVzdDtpZihhZS5sZW5ndGg9PT0wKXJldHVybiExO2xldCBKcj0hMSx0aT1hZS5jb2RlUG9pbnRBdCgwKTtpZighcmUuaXNJZGVudGlmaWVyU3RhcnQodGksWGUpKXJldHVybiExO2ZvcihsZXQgWmU9RmUodGkpO1plPGFlLmxlbmd0aDtaZSs9RmUodGkpKWlmKHRpPWFlLmNvZGVQb2ludEF0KFplKSwhcmUuaXNJZGVudGlmaWVyUGFydCh0aSxYZSkmJnRpIT09NDUpaWYoIUpyJiZ0aT09PTU4JiZaZStGZSh0aSkhPT1hZS5sZW5ndGgpSnI9ITA7ZWxzZSByZXR1cm4hMTtyZXR1cm4hMH1NLmlzVmFsaWRKc3hJZGVudGlmaWVyPVJlO2Z1bmN0aW9uIHplKGFlKXtyZXR1cm4gU3RyaW5nKCthZSk9PT1hZX1NLmlzTnVtZXJpY1Byb3BlcnR5TmFtZT16ZTtmdW5jdGlvbiBFZShhZSxYZSxKcil7cmV0dXJuIHJlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGFlLFhlKS5saW5lPT09cmUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oYWUsSnIpLmxpbmV9TS5pc1NhbWVMaW5lPUVlO3ZhciBIZTsoZnVuY3Rpb24oYWUpe2FlW2FlLk5vbmU9MF09XCJOb25lXCIsYWVbYWUuVGFnZ2VkVGVtcGxhdGU9MV09XCJUYWdnZWRUZW1wbGF0ZVwiLGFlW2FlLkNvbnN0cnVjdG9yPTJdPVwiQ29uc3RydWN0b3JcIixhZVthZS5Kc3hFbGVtZW50PTRdPVwiSnN4RWxlbWVudFwifSkoSGU9TS5TaWRlRWZmZWN0T3B0aW9uc3x8KE0uU2lkZUVmZmVjdE9wdGlvbnM9e30pKTtmdW5jdGlvbiBycihhZSxYZSl7dmFyIEpyLHRpO2xldCBaZT1bXTtmb3IoOzspe3N3aXRjaChhZS5raW5kKXtjYXNlIHJlLlN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlBvc3RmaXhVbmFyeUV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkF3YWl0RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuWWllbGRFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5EZWxldGVFeHByZXNzaW9uOnJldHVybiEwO2Nhc2UgcmUuU3ludGF4S2luZC5UeXBlQXNzZXJ0aW9uRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuQXNFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5QYXJlbnRoZXNpemVkRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuTm9uTnVsbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlZvaWRFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5UeXBlT2ZFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlNwcmVhZEVsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlBhcnRpYWxseUVtaXR0ZWRFeHByZXNzaW9uOmFlPWFlLmV4cHJlc3Npb247Y29udGludWU7Y2FzZSByZS5TeW50YXhLaW5kLkJpbmFyeUV4cHJlc3Npb246aWYoYXIoYWUub3BlcmF0b3JUb2tlbi5raW5kKSlyZXR1cm4hMDtaZS5wdXNoKGFlLnJpZ2h0KSxhZT1hZS5sZWZ0O2NvbnRpbnVlO2Nhc2UgcmUuU3ludGF4S2luZC5QcmVmaXhVbmFyeUV4cHJlc3Npb246c3dpdGNoKGFlLm9wZXJhdG9yKXtjYXNlIHJlLlN5bnRheEtpbmQuUGx1c1BsdXNUb2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuTWludXNNaW51c1Rva2VuOnJldHVybiEwO2RlZmF1bHQ6YWU9YWUub3BlcmFuZDtjb250aW51ZX1jYXNlIHJlLlN5bnRheEtpbmQuRWxlbWVudEFjY2Vzc0V4cHJlc3Npb246YWUuYXJndW1lbnRFeHByZXNzaW9uIT09dm9pZCAwJiZaZS5wdXNoKGFlLmFyZ3VtZW50RXhwcmVzc2lvbiksYWU9YWUuZXhwcmVzc2lvbjtjb250aW51ZTtjYXNlIHJlLlN5bnRheEtpbmQuQ29uZGl0aW9uYWxFeHByZXNzaW9uOlplLnB1c2goYWUud2hlblRydWUsYWUud2hlbkZhbHNlKSxhZT1hZS5jb25kaXRpb247Y29udGludWU7Y2FzZSByZS5TeW50YXhLaW5kLk5ld0V4cHJlc3Npb246aWYoWGUmMilyZXR1cm4hMDthZS5hcmd1bWVudHMhPT12b2lkIDAmJlplLnB1c2goLi4uYWUuYXJndW1lbnRzKSxhZT1hZS5leHByZXNzaW9uO2NvbnRpbnVlO2Nhc2UgcmUuU3ludGF4S2luZC5UYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246aWYoWGUmMSlyZXR1cm4hMDtpZihaZS5wdXNoKGFlLnRhZyksYWU9YWUudGVtcGxhdGUsYWUua2luZD09PXJlLlN5bnRheEtpbmQuTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWwpYnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLlRlbXBsYXRlRXhwcmVzc2lvbjpmb3IobGV0IFNyIG9mIGFlLnRlbXBsYXRlU3BhbnMpWmUucHVzaChTci5leHByZXNzaW9uKTticmVhaztjYXNlIHJlLlN5bnRheEtpbmQuQ2xhc3NFeHByZXNzaW9uOntpZihhZS5kZWNvcmF0b3JzIT09dm9pZCAwKXJldHVybiEwO2ZvcihsZXQgenIgb2YgYWUubWVtYmVycyl7aWYoenIuZGVjb3JhdG9ycyE9PXZvaWQgMClyZXR1cm4hMDtpZighQih6ci5tb2RpZmllcnMscmUuU3ludGF4S2luZC5EZWNsYXJlS2V5d29yZCkpaWYoKChKcj16ci5uYW1lKT09PW51bGx8fEpyPT09dm9pZCAwP3ZvaWQgMDpKci5raW5kKT09PXJlLlN5bnRheEtpbmQuQ29tcHV0ZWRQcm9wZXJ0eU5hbWUmJlplLnB1c2goenIubmFtZS5leHByZXNzaW9uKSxWZS5pc01ldGhvZERlY2xhcmF0aW9uKHpyKSl7Zm9yKGxldCBXciBvZiB6ci5wYXJhbWV0ZXJzKWlmKFdyLmRlY29yYXRvcnMhPT12b2lkIDApcmV0dXJuITB9ZWxzZSBWZS5pc1Byb3BlcnR5RGVjbGFyYXRpb24oenIpJiZ6ci5pbml0aWFsaXplciE9PXZvaWQgMCYmQih6ci5tb2RpZmllcnMscmUuU3ludGF4S2luZC5TdGF0aWNLZXl3b3JkKSYmWmUucHVzaCh6ci5pbml0aWFsaXplcil9bGV0IFNyPXBpKGFlKTtpZihTcj09PXZvaWQgMClicmVhazthZT1Tci5leHByZXNzaW9uO2NvbnRpbnVlfWNhc2UgcmUuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uOlplLnB1c2goLi4uYWUuZWxlbWVudHMpO2JyZWFrO2Nhc2UgcmUuU3ludGF4S2luZC5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbjpmb3IobGV0IFNyIG9mIGFlLnByb3BlcnRpZXMpc3dpdGNoKCgodGk9U3IubmFtZSk9PT1udWxsfHx0aT09PXZvaWQgMD92b2lkIDA6dGkua2luZCk9PT1yZS5TeW50YXhLaW5kLkNvbXB1dGVkUHJvcGVydHlOYW1lJiZaZS5wdXNoKFNyLm5hbWUuZXhwcmVzc2lvbiksU3Iua2luZCl7Y2FzZSByZS5TeW50YXhLaW5kLlByb3BlcnR5QXNzaWdubWVudDpaZS5wdXNoKFNyLmluaXRpYWxpemVyKTticmVhaztjYXNlIHJlLlN5bnRheEtpbmQuU3ByZWFkQXNzaWdubWVudDpaZS5wdXNoKFNyLmV4cHJlc3Npb24pfWJyZWFrO2Nhc2UgcmUuU3ludGF4S2luZC5Kc3hFeHByZXNzaW9uOmlmKGFlLmV4cHJlc3Npb249PT12b2lkIDApYnJlYWs7YWU9YWUuZXhwcmVzc2lvbjtjb250aW51ZTtjYXNlIHJlLlN5bnRheEtpbmQuSnN4RWxlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuSnN4RnJhZ21lbnQ6Zm9yKGxldCBTciBvZiBhZS5jaGlsZHJlbilTci5raW5kIT09cmUuU3ludGF4S2luZC5Kc3hUZXh0JiZaZS5wdXNoKFNyKTtpZihhZS5raW5kPT09cmUuU3ludGF4S2luZC5Kc3hGcmFnbWVudClicmVhazthZT1hZS5vcGVuaW5nRWxlbWVudDtjYXNlIHJlLlN5bnRheEtpbmQuSnN4U2VsZkNsb3NpbmdFbGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Kc3hPcGVuaW5nRWxlbWVudDppZihYZSY0KXJldHVybiEwO2ZvcihsZXQgU3Igb2YgYWUuYXR0cmlidXRlcy5wcm9wZXJ0aWVzKVNyLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkpzeFNwcmVhZEF0dHJpYnV0ZT9aZS5wdXNoKFNyLmV4cHJlc3Npb24pOlNyLmluaXRpYWxpemVyIT09dm9pZCAwJiZaZS5wdXNoKFNyLmluaXRpYWxpemVyKTticmVhaztjYXNlIHJlLlN5bnRheEtpbmQuQ29tbWFMaXN0RXhwcmVzc2lvbjpaZS5wdXNoKC4uLmFlLmVsZW1lbnRzKX1pZihaZS5sZW5ndGg9PT0wKXJldHVybiExO2FlPVplLnBvcCgpfX1NLmhhc1NpZGVFZmZlY3RzPXJyO2Z1bmN0aW9uIEllKGFlKXtsZXQgWGU9YWUucGFyZW50LnBhcmVudDtmb3IoO1hlLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkJpbmRpbmdFbGVtZW50OylYZT1YZS5wYXJlbnQucGFyZW50O3JldHVybiBYZX1NLmdldERlY2xhcmF0aW9uT2ZCaW5kaW5nRWxlbWVudD1JZTtmdW5jdGlvbiBfZShhZSl7Zm9yKDs7KXtsZXQgWGU9YWUucGFyZW50O3N3aXRjaChYZS5raW5kKXtjYXNlIHJlLlN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLk5ld0V4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5XaGlsZVN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuRG9TdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLldpdGhTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlRocm93U3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5SZXR1cm5TdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkpzeEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkpzeFNwcmVhZEF0dHJpYnV0ZTpjYXNlIHJlLlN5bnRheEtpbmQuSnN4RWxlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuSnN4RnJhZ21lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkpzeFNlbGZDbG9zaW5nRWxlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuQ29tcHV0ZWRQcm9wZXJ0eU5hbWU6Y2FzZSByZS5TeW50YXhLaW5kLkFycm93RnVuY3Rpb246Y2FzZSByZS5TeW50YXhLaW5kLkV4cG9ydFNwZWNpZmllcjpjYXNlIHJlLlN5bnRheEtpbmQuRXhwb3J0QXNzaWdubWVudDpjYXNlIHJlLlN5bnRheEtpbmQuSW1wb3J0RGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLkV4dGVybmFsTW9kdWxlUmVmZXJlbmNlOmNhc2UgcmUuU3ludGF4S2luZC5EZWNvcmF0b3I6Y2FzZSByZS5TeW50YXhLaW5kLlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuVGVtcGxhdGVTcGFuOmNhc2UgcmUuU3ludGF4S2luZC5FeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHM6Y2FzZSByZS5TeW50YXhLaW5kLlR5cGVPZkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkF3YWl0RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuWWllbGRFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5MaXRlcmFsVHlwZTpjYXNlIHJlLlN5bnRheEtpbmQuSnN4QXR0cmlidXRlczpjYXNlIHJlLlN5bnRheEtpbmQuSnN4T3BlbmluZ0VsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkpzeENsb3NpbmdFbGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5JZlN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuQ2FzZUNsYXVzZTpjYXNlIHJlLlN5bnRheEtpbmQuU3dpdGNoU3RhdGVtZW50OnJldHVybiEwO2Nhc2UgcmUuU3ludGF4S2luZC5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246cmV0dXJuIFhlLmV4cHJlc3Npb249PT1hZTtjYXNlIHJlLlN5bnRheEtpbmQuUXVhbGlmaWVkTmFtZTpyZXR1cm4gWGUubGVmdD09PWFlO2Nhc2UgcmUuU3ludGF4S2luZC5TaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQ6cmV0dXJuIFhlLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcj09PWFlfHwhd2UoWGUpO2Nhc2UgcmUuU3ludGF4S2luZC5Qcm9wZXJ0eUFzc2lnbm1lbnQ6cmV0dXJuIFhlLmluaXRpYWxpemVyPT09YWUmJiF3ZShYZSk7Y2FzZSByZS5TeW50YXhLaW5kLlNwcmVhZEFzc2lnbm1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlNwcmVhZEVsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkFycmF5TGl0ZXJhbEV4cHJlc3Npb246cmV0dXJuIXdlKFhlKTtjYXNlIHJlLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkFzRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuVHlwZUFzc2VydGlvbkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlBvc3RmaXhVbmFyeUV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlByZWZpeFVuYXJ5RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuTm9uTnVsbEV4cHJlc3Npb246YWU9WGU7Y29udGludWU7Y2FzZSByZS5TeW50YXhLaW5kLkZvclN0YXRlbWVudDpyZXR1cm4gWGUuY29uZGl0aW9uPT09YWU7Y2FzZSByZS5TeW50YXhLaW5kLkZvckluU3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Gb3JPZlN0YXRlbWVudDpyZXR1cm4gWGUuZXhwcmVzc2lvbj09PWFlO2Nhc2UgcmUuU3ludGF4S2luZC5Db25kaXRpb25hbEV4cHJlc3Npb246aWYoWGUuY29uZGl0aW9uPT09YWUpcmV0dXJuITA7YWU9WGU7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLlByb3BlcnR5RGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLkJpbmRpbmdFbGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5WYXJpYWJsZURlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5QYXJhbWV0ZXI6Y2FzZSByZS5TeW50YXhLaW5kLkVudW1NZW1iZXI6cmV0dXJuIFhlLmluaXRpYWxpemVyPT09YWU7Y2FzZSByZS5TeW50YXhLaW5kLkltcG9ydEVxdWFsc0RlY2xhcmF0aW9uOnJldHVybiBYZS5tb2R1bGVSZWZlcmVuY2U9PT1hZTtjYXNlIHJlLlN5bnRheEtpbmQuQ29tbWFMaXN0RXhwcmVzc2lvbjppZihYZS5lbGVtZW50c1tYZS5lbGVtZW50cy5sZW5ndGgtMV0hPT1hZSlyZXR1cm4hMTthZT1YZTticmVhaztjYXNlIHJlLlN5bnRheEtpbmQuQmluYXJ5RXhwcmVzc2lvbjppZihYZS5yaWdodD09PWFlKXtpZihYZS5vcGVyYXRvclRva2VuLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkNvbW1hVG9rZW4pe2FlPVhlO2JyZWFrfXJldHVybiEwfXN3aXRjaChYZS5vcGVyYXRvclRva2VuLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5Db21tYVRva2VuOmNhc2UgcmUuU3ludGF4S2luZC5FcXVhbHNUb2tlbjpyZXR1cm4hMTtjYXNlIHJlLlN5bnRheEtpbmQuRXF1YWxzRXF1YWxzRXF1YWxzVG9rZW46Y2FzZSByZS5TeW50YXhLaW5kLkVxdWFsc0VxdWFsc1Rva2VuOmNhc2UgcmUuU3ludGF4S2luZC5FeGNsYW1hdGlvbkVxdWFsc0VxdWFsc1Rva2VuOmNhc2UgcmUuU3ludGF4S2luZC5FeGNsYW1hdGlvbkVxdWFsc1Rva2VuOmNhc2UgcmUuU3ludGF4S2luZC5JbnN0YW5jZU9mS2V5d29yZDpjYXNlIHJlLlN5bnRheEtpbmQuUGx1c1Rva2VuOmNhc2UgcmUuU3ludGF4S2luZC5NaW51c1Rva2VuOmNhc2UgcmUuU3ludGF4S2luZC5Bc3Rlcmlza1Rva2VuOmNhc2UgcmUuU3ludGF4S2luZC5TbGFzaFRva2VuOmNhc2UgcmUuU3ludGF4S2luZC5QZXJjZW50VG9rZW46Y2FzZSByZS5TeW50YXhLaW5kLkFzdGVyaXNrQXN0ZXJpc2tUb2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuR3JlYXRlclRoYW5Ub2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuR3JlYXRlclRoYW5HcmVhdGVyVGhhblRva2VuOmNhc2UgcmUuU3ludGF4S2luZC5HcmVhdGVyVGhhbkdyZWF0ZXJUaGFuR3JlYXRlclRoYW5Ub2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuR3JlYXRlclRoYW5FcXVhbHNUb2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuTGVzc1RoYW5Ub2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuTGVzc1RoYW5MZXNzVGhhblRva2VuOmNhc2UgcmUuU3ludGF4S2luZC5MZXNzVGhhbkVxdWFsc1Rva2VuOmNhc2UgcmUuU3ludGF4S2luZC5BbXBlcnNhbmRUb2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuQmFyVG9rZW46Y2FzZSByZS5TeW50YXhLaW5kLkNhcmV0VG9rZW46Y2FzZSByZS5TeW50YXhLaW5kLkJhckJhclRva2VuOmNhc2UgcmUuU3ludGF4S2luZC5BbXBlcnNhbmRBbXBlcnNhbmRUb2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuUXVlc3Rpb25RdWVzdGlvblRva2VuOmNhc2UgcmUuU3ludGF4S2luZC5JbktleXdvcmQ6Y2FzZSByZS5TeW50YXhLaW5kLlF1ZXN0aW9uUXVlc3Rpb25FcXVhbHNUb2tlbjpjYXNlIHJlLlN5bnRheEtpbmQuQW1wZXJzYW5kQW1wZXJzYW5kRXF1YWxzVG9rZW46Y2FzZSByZS5TeW50YXhLaW5kLkJhckJhckVxdWFsc1Rva2VuOnJldHVybiEwO2RlZmF1bHQ6YWU9WGV9YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX19fU0uaXNFeHByZXNzaW9uVmFsdWVVc2VkPV9lO2Z1bmN0aW9uIHdlKGFlKXtzd2l0Y2goYWUua2luZCl7Y2FzZSByZS5TeW50YXhLaW5kLlNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudDppZihhZS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXIhPT12b2lkIDApcmV0dXJuITA7Y2FzZSByZS5TeW50YXhLaW5kLlByb3BlcnR5QXNzaWdubWVudDpjYXNlIHJlLlN5bnRheEtpbmQuU3ByZWFkQXNzaWdubWVudDphZT1hZS5wYXJlbnQ7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLlNwcmVhZEVsZW1lbnQ6aWYoYWUucGFyZW50LmtpbmQhPT1yZS5TeW50YXhLaW5kLkFycmF5TGl0ZXJhbEV4cHJlc3Npb24pcmV0dXJuITE7YWU9YWUucGFyZW50fWZvcig7Oylzd2l0Y2goYWUucGFyZW50LmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5CaW5hcnlFeHByZXNzaW9uOnJldHVybiBhZS5wYXJlbnQubGVmdD09PWFlJiZhZS5wYXJlbnQub3BlcmF0b3JUb2tlbi5raW5kPT09cmUuU3ludGF4S2luZC5FcXVhbHNUb2tlbjtjYXNlIHJlLlN5bnRheEtpbmQuRm9yT2ZTdGF0ZW1lbnQ6cmV0dXJuIGFlLnBhcmVudC5pbml0aWFsaXplcj09PWFlO2Nhc2UgcmUuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbjphZT1hZS5wYXJlbnQ7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLlNwcmVhZEFzc2lnbm1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlByb3BlcnR5QXNzaWdubWVudDphZT1hZS5wYXJlbnQucGFyZW50O2JyZWFrO2Nhc2UgcmUuU3ludGF4S2luZC5TcHJlYWRFbGVtZW50OmlmKGFlLnBhcmVudC5wYXJlbnQua2luZCE9PXJlLlN5bnRheEtpbmQuQXJyYXlMaXRlcmFsRXhwcmVzc2lvbilyZXR1cm4hMTthZT1hZS5wYXJlbnQucGFyZW50O2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBkZTsoZnVuY3Rpb24oYWUpe2FlW2FlLk5vbmU9MF09XCJOb25lXCIsYWVbYWUuUmVhZD0xXT1cIlJlYWRcIixhZVthZS5Xcml0ZT0yXT1cIldyaXRlXCIsYWVbYWUuRGVsZXRlPTRdPVwiRGVsZXRlXCIsYWVbYWUuUmVhZFdyaXRlPTNdPVwiUmVhZFdyaXRlXCIsYWVbYWUuTW9kaWZpY2F0aW9uPTZdPVwiTW9kaWZpY2F0aW9uXCJ9KShkZT1NLkFjY2Vzc0tpbmR8fChNLkFjY2Vzc0tpbmQ9e30pKTtmdW5jdGlvbiB5ZShhZSl7bGV0IFhlPWFlLnBhcmVudDtzd2l0Y2goWGUua2luZCl7Y2FzZSByZS5TeW50YXhLaW5kLkRlbGV0ZUV4cHJlc3Npb246cmV0dXJuIDQ7Y2FzZSByZS5TeW50YXhLaW5kLlBvc3RmaXhVbmFyeUV4cHJlc3Npb246cmV0dXJuIDM7Y2FzZSByZS5TeW50YXhLaW5kLlByZWZpeFVuYXJ5RXhwcmVzc2lvbjpyZXR1cm4gWGUub3BlcmF0b3I9PT1yZS5TeW50YXhLaW5kLlBsdXNQbHVzVG9rZW58fFhlLm9wZXJhdG9yPT09cmUuU3ludGF4S2luZC5NaW51c01pbnVzVG9rZW4/MzoxO2Nhc2UgcmUuU3ludGF4S2luZC5CaW5hcnlFeHByZXNzaW9uOnJldHVybiBYZS5yaWdodD09PWFlPzE6YXIoWGUub3BlcmF0b3JUb2tlbi5raW5kKT9YZS5vcGVyYXRvclRva2VuLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkVxdWFsc1Rva2VuPzI6MzoxO2Nhc2UgcmUuU3ludGF4S2luZC5TaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQ6cmV0dXJuIFhlLm9iamVjdEFzc2lnbm1lbnRJbml0aWFsaXplcj09PWFlPzE6d2UoWGUpPzI6MTtjYXNlIHJlLlN5bnRheEtpbmQuUHJvcGVydHlBc3NpZ25tZW50OnJldHVybiBYZS5uYW1lPT09YWU/MDp3ZShYZSk/MjoxO2Nhc2UgcmUuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5TcHJlYWRFbGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5TcHJlYWRBc3NpZ25tZW50OnJldHVybiB3ZShYZSk/MjoxO2Nhc2UgcmUuU3ludGF4S2luZC5QYXJlbnRoZXNpemVkRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuTm9uTnVsbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlR5cGVBc3NlcnRpb25FeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5Bc0V4cHJlc3Npb246cmV0dXJuIHllKFhlKTtjYXNlIHJlLlN5bnRheEtpbmQuRm9yT2ZTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkZvckluU3RhdGVtZW50OnJldHVybiBYZS5pbml0aWFsaXplcj09PWFlPzI6MTtjYXNlIHJlLlN5bnRheEtpbmQuRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzOnJldHVybiBYZS5wYXJlbnQudG9rZW49PT1yZS5TeW50YXhLaW5kLkV4dGVuZHNLZXl3b3JkJiZYZS5wYXJlbnQucGFyZW50LmtpbmQhPT1yZS5TeW50YXhLaW5kLkludGVyZmFjZURlY2xhcmF0aW9uPzE6MDtjYXNlIHJlLlN5bnRheEtpbmQuQ29tcHV0ZWRQcm9wZXJ0eU5hbWU6Y2FzZSByZS5TeW50YXhLaW5kLkV4cHJlc3Npb25TdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlR5cGVPZkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5Gb3JTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLklmU3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Eb1N0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuV2hpbGVTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlN3aXRjaFN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuV2l0aFN0YXRlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuVGhyb3dTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkNhbGxFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5OZXdFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5UYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkpzeEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkRlY29yYXRvcjpjYXNlIHJlLlN5bnRheEtpbmQuVGVtcGxhdGVTcGFuOmNhc2UgcmUuU3ludGF4S2luZC5Kc3hPcGVuaW5nRWxlbWVudDpjYXNlIHJlLlN5bnRheEtpbmQuSnN4U2VsZkNsb3NpbmdFbGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5Kc3hTcHJlYWRBdHRyaWJ1dGU6Y2FzZSByZS5TeW50YXhLaW5kLlZvaWRFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5SZXR1cm5TdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkF3YWl0RXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuWWllbGRFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5Db25kaXRpb25hbEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkNhc2VDbGF1c2U6Y2FzZSByZS5TeW50YXhLaW5kLkpzeEVsZW1lbnQ6cmV0dXJuIDE7Y2FzZSByZS5TeW50YXhLaW5kLkFycm93RnVuY3Rpb246cmV0dXJuIFhlLmJvZHk9PT1hZT8xOjI7Y2FzZSByZS5TeW50YXhLaW5kLlByb3BlcnR5RGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLlZhcmlhYmxlRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLlBhcmFtZXRlcjpjYXNlIHJlLlN5bnRheEtpbmQuRW51bU1lbWJlcjpjYXNlIHJlLlN5bnRheEtpbmQuQmluZGluZ0VsZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkpzeEF0dHJpYnV0ZTpyZXR1cm4gWGUuaW5pdGlhbGl6ZXI9PT1hZT8xOjA7Y2FzZSByZS5TeW50YXhLaW5kLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjpyZXR1cm4gWGUuZXhwcmVzc2lvbj09PWFlPzE6MDtjYXNlIHJlLlN5bnRheEtpbmQuRXhwb3J0QXNzaWdubWVudDpyZXR1cm4gWGUuaXNFeHBvcnRFcXVhbHM/MTowfXJldHVybiAwfU0uZ2V0QWNjZXNzS2luZD15ZTtmdW5jdGlvbiBBZShhZSl7cmV0dXJuKHllKGFlKSYyKSE9PTB9TS5pc1JlYXNzaWdubWVudFRhcmdldD1BZTtmdW5jdGlvbiBlcihhZSl7c3dpdGNoKGFlLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5QYXJhbWV0ZXI6Y2FzZSByZS5TeW50YXhLaW5kLkNhbGxTaWduYXR1cmU6Y2FzZSByZS5TeW50YXhLaW5kLkNvbnN0cnVjdFNpZ25hdHVyZTpjYXNlIHJlLlN5bnRheEtpbmQuTWV0aG9kU2lnbmF0dXJlOmNhc2UgcmUuU3ludGF4S2luZC5Qcm9wZXJ0eVNpZ25hdHVyZTpjYXNlIHJlLlN5bnRheEtpbmQuQXJyb3dGdW5jdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZEV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLlNwcmVhZEFzc2lnbm1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudDpjYXNlIHJlLlN5bnRheEtpbmQuUHJvcGVydHlBc3NpZ25tZW50OmNhc2UgcmUuU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb246Y2FzZSByZS5TeW50YXhLaW5kLkxhYmVsZWRTdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkV4cHJlc3Npb25TdGF0ZW1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLlZhcmlhYmxlU3RhdGVtZW50OmNhc2UgcmUuU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5Db25zdHJ1Y3RvcjpjYXNlIHJlLlN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLlByb3BlcnR5RGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLkdldEFjY2Vzc29yOmNhc2UgcmUuU3ludGF4S2luZC5TZXRBY2Nlc3NvcjpjYXNlIHJlLlN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuQ2xhc3NFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuVHlwZUFsaWFzRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLkVudW1NZW1iZXI6Y2FzZSByZS5TeW50YXhLaW5kLkVudW1EZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuTW9kdWxlRGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLkltcG9ydEVxdWFsc0RlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5JbXBvcnREZWNsYXJhdGlvbjpjYXNlIHJlLlN5bnRheEtpbmQuTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb246Y2FzZSByZS5TeW50YXhLaW5kLkV4cG9ydEFzc2lnbm1lbnQ6Y2FzZSByZS5TeW50YXhLaW5kLkluZGV4U2lnbmF0dXJlOmNhc2UgcmUuU3ludGF4S2luZC5GdW5jdGlvblR5cGU6Y2FzZSByZS5TeW50YXhLaW5kLkNvbnN0cnVjdG9yVHlwZTpjYXNlIHJlLlN5bnRheEtpbmQuSlNEb2NGdW5jdGlvblR5cGU6Y2FzZSByZS5TeW50YXhLaW5kLkV4cG9ydERlY2xhcmF0aW9uOmNhc2UgcmUuU3ludGF4S2luZC5OYW1lZFR1cGxlTWVtYmVyOmNhc2UgcmUuU3ludGF4S2luZC5FbmRPZkZpbGVUb2tlbjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1NLmNhbkhhdmVKc0RvYz1lcjtmdW5jdGlvbiBpcihhZSxYZSl7bGV0IEpyPVtdO2ZvcihsZXQgdGkgb2YgYWUuZ2V0Q2hpbGRyZW4oWGUpKXtpZighVmUuaXNKc0RvYyh0aSkpYnJlYWs7SnIucHVzaCh0aSl9cmV0dXJuIEpyfU0uZ2V0SnNEb2M9aXI7ZnVuY3Rpb24gQ3IoYWUsWGUpe2xldCBKcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06YWUuZ2V0U291cmNlRmlsZSgpO2lmKGVyKGFlKSYmYWUua2luZCE9PXJlLlN5bnRheEtpbmQuRW5kT2ZGaWxlVG9rZW4pe2xldCB0aT1pcihhZSxKcik7aWYodGkubGVuZ3RoIT09MHx8IVhlKXJldHVybiB0aX1yZXR1cm4gWWUoYWUsYWUuZ2V0U3RhcnQoSnIpLEpyLFhlKX1NLnBhcnNlSnNEb2NPZk5vZGU9Q3I7ZnVuY3Rpb24gWWUoYWUsWGUsSnIsdGkpe2xldCBaZT1yZVt0aSYmRWUoSnIsYWUucG9zLFhlKT9cImZvckVhY2hUcmFpbGluZ0NvbW1lbnRSYW5nZVwiOlwiZm9yRWFjaExlYWRpbmdDb21tZW50UmFuZ2VcIl0oSnIudGV4dCxhZS5wb3MsKHZyLG1yLEFyKT0+QXI9PT1yZS5TeW50YXhLaW5kLk11bHRpTGluZUNvbW1lbnRUcml2aWEmJkpyLnRleHRbdnIrMl09PT1cIipcIj97cG9zOnZyfTp2b2lkIDApO2lmKFplPT09dm9pZCAwKXJldHVybltdO2xldCBTcj1aZS5wb3MsenI9SnIudGV4dC5zbGljZShTcixYZSksV3I9cmUuY3JlYXRlU291cmNlRmlsZShcImpzZG9jLnRzXCIsXCJcIi5jb25jYXQoenIsXCJ2YXIgYTtcIiksSnIubGFuZ3VhZ2VWZXJzaW9uKSxKZT1pcihXci5zdGF0ZW1lbnRzWzBdLFdyKTtmb3IobGV0IHZyIG9mIEplKXhlKHZyLGFlKTtyZXR1cm4gSmU7ZnVuY3Rpb24geGUodnIsbXIpe3JldHVybiB2ci5wb3MrPVNyLHZyLmVuZCs9U3IsdnIucGFyZW50PW1yLHJlLmZvckVhY2hDaGlsZCh2cixBcj0+eGUoQXIsdnIpLEFyPT57QXIucG9zKz1TcixBci5lbmQrPVNyO2ZvcihsZXQgT2Ugb2YgQXIpeGUoT2UsdnIpfSl9fXZhciBCcjsoZnVuY3Rpb24oYWUpe2FlW2FlLkltcG9ydERlY2xhcmF0aW9uPTFdPVwiSW1wb3J0RGVjbGFyYXRpb25cIixhZVthZS5JbXBvcnRFcXVhbHM9Ml09XCJJbXBvcnRFcXVhbHNcIixhZVthZS5FeHBvcnRGcm9tPTRdPVwiRXhwb3J0RnJvbVwiLGFlW2FlLkR5bmFtaWNJbXBvcnQ9OF09XCJEeW5hbWljSW1wb3J0XCIsYWVbYWUuUmVxdWlyZT0xNl09XCJSZXF1aXJlXCIsYWVbYWUuSW1wb3J0VHlwZT0zMl09XCJJbXBvcnRUeXBlXCIsYWVbYWUuQWxsPTYzXT1cIkFsbFwiLGFlW2FlLkFsbEltcG9ydHM9NTldPVwiQWxsSW1wb3J0c1wiLGFlW2FlLkFsbFN0YXRpY0ltcG9ydHM9M109XCJBbGxTdGF0aWNJbXBvcnRzXCIsYWVbYWUuQWxsSW1wb3J0RXhwcmVzc2lvbnM9MjRdPVwiQWxsSW1wb3J0RXhwcmVzc2lvbnNcIixhZVthZS5BbGxSZXF1aXJlTGlrZT0xOF09XCJBbGxSZXF1aXJlTGlrZVwiLGFlW2FlLkFsbE5lc3RlZEltcG9ydHM9NTZdPVwiQWxsTmVzdGVkSW1wb3J0c1wiLGFlW2FlLkFsbFRvcExldmVsSW1wb3J0cz03XT1cIkFsbFRvcExldmVsSW1wb3J0c1wifSkoQnI9TS5JbXBvcnRLaW5kfHwoTS5JbXBvcnRLaW5kPXt9KSk7ZnVuY3Rpb24gRXIoYWUsWGUpe2xldCBKcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITAsdGk9W107Zm9yKGxldCBTciBvZiBOZShhZSxYZSxKcikpc3dpdGNoKFNyLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5JbXBvcnREZWNsYXJhdGlvbjpaZShTci5tb2R1bGVTcGVjaWZpZXIpO2JyZWFrO2Nhc2UgcmUuU3ludGF4S2luZC5JbXBvcnRFcXVhbHNEZWNsYXJhdGlvbjpaZShTci5tb2R1bGVSZWZlcmVuY2UuZXhwcmVzc2lvbik7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLkV4cG9ydERlY2xhcmF0aW9uOlplKFNyLm1vZHVsZVNwZWNpZmllcik7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLkNhbGxFeHByZXNzaW9uOlplKFNyLmFyZ3VtZW50c1swXSk7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLkltcG9ydFR5cGU6VmUuaXNMaXRlcmFsVHlwZU5vZGUoU3IuYXJndW1lbnQpJiZaZShTci5hcmd1bWVudC5saXRlcmFsKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcInVuZXhwZWN0ZWQgbm9kZVwiKX1yZXR1cm4gdGk7ZnVuY3Rpb24gWmUoU3Ipe1ZlLmlzVGV4dHVhbExpdGVyYWwoU3IpJiZ0aS5wdXNoKFNyKX19TS5maW5kSW1wb3J0cz1FcjtmdW5jdGlvbiBOZShhZSxYZSl7bGV0IEpyPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMDtyZXR1cm4gbmV3IG4oYWUsWGUsSnIpLmZpbmQoKX1NLmZpbmRJbXBvcnRMaWtlTm9kZXM9TmU7dmFyIG49Y2xhc3N7Y29uc3RydWN0b3IoYWUsWGUsSnIpe3RoaXMuX3NvdXJjZUZpbGU9YWUsdGhpcy5fb3B0aW9ucz1YZSx0aGlzLl9pZ25vcmVGaWxlTmFtZT1Kcix0aGlzLl9yZXN1bHQ9W119ZmluZCgpe3JldHVybiB0aGlzLl9zb3VyY2VGaWxlLmlzRGVjbGFyYXRpb25GaWxlJiYodGhpcy5fb3B0aW9ucyY9LTI1KSx0aGlzLl9vcHRpb25zJjcmJnRoaXMuX2ZpbmRJbXBvcnRzKHRoaXMuX3NvdXJjZUZpbGUuc3RhdGVtZW50cyksdGhpcy5fb3B0aW9ucyY1NiYmdGhpcy5fZmluZE5lc3RlZEltcG9ydHMoKSx0aGlzLl9yZXN1bHR9X2ZpbmRJbXBvcnRzKGFlKXtmb3IobGV0IFhlIG9mIGFlKVZlLmlzSW1wb3J0RGVjbGFyYXRpb24oWGUpP3RoaXMuX29wdGlvbnMmMSYmdGhpcy5fcmVzdWx0LnB1c2goWGUpOlZlLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oWGUpP3RoaXMuX29wdGlvbnMmMiYmWGUubW9kdWxlUmVmZXJlbmNlLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkV4dGVybmFsTW9kdWxlUmVmZXJlbmNlJiZ0aGlzLl9yZXN1bHQucHVzaChYZSk6VmUuaXNFeHBvcnREZWNsYXJhdGlvbihYZSk/WGUubW9kdWxlU3BlY2lmaWVyIT09dm9pZCAwJiZ0aGlzLl9vcHRpb25zJjQmJnRoaXMuX3Jlc3VsdC5wdXNoKFhlKTpWZS5pc01vZHVsZURlY2xhcmF0aW9uKFhlKSYmdGhpcy5fZmluZEltcG9ydHNJbk1vZHVsZShYZSl9X2ZpbmRJbXBvcnRzSW5Nb2R1bGUoYWUpe2lmKGFlLmJvZHkhPT12b2lkIDApe2lmKGFlLmJvZHkua2luZD09PXJlLlN5bnRheEtpbmQuTW9kdWxlRGVjbGFyYXRpb24pcmV0dXJuIHRoaXMuX2ZpbmRJbXBvcnRzSW5Nb2R1bGUoYWUuYm9keSk7dGhpcy5fZmluZEltcG9ydHMoYWUuYm9keS5zdGF0ZW1lbnRzKX19X2ZpbmROZXN0ZWRJbXBvcnRzKCl7bGV0IGFlPXRoaXMuX2lnbm9yZUZpbGVOYW1lfHwodGhpcy5fc291cmNlRmlsZS5mbGFncyZyZS5Ob2RlRmxhZ3MuSmF2YVNjcmlwdEZpbGUpIT09MCxYZSxKcjtpZigodGhpcy5fb3B0aW9ucyY1Nik9PT0xNil7aWYoIWFlKXJldHVybjtYZT0vXFxicmVxdWlyZVxccypbPC8oXS9nLEpyPSExfWVsc2UgdGhpcy5fb3B0aW9ucyYxNiYmYWU/KFhlPS9cXGIoPzppbXBvcnR8cmVxdWlyZSlcXHMqWzwvKF0vZyxKcj0odGhpcy5fb3B0aW9ucyYzMikhPT0wKTooWGU9L1xcYmltcG9ydFxccypbPC8oXS9nLEpyPWFlJiYodGhpcy5fb3B0aW9ucyYzMikhPT0wKTtmb3IobGV0IHRpPVhlLmV4ZWModGhpcy5fc291cmNlRmlsZS50ZXh0KTt0aSE9PW51bGw7dGk9WGUuZXhlYyh0aGlzLl9zb3VyY2VGaWxlLnRleHQpKXtsZXQgWmU9Syh0aGlzLl9zb3VyY2VGaWxlLHRpLmluZGV4LHRoaXMuX3NvdXJjZUZpbGUsdGlbMF1bMF09PT1cImlcIiYmSnIpO2lmKFplLmtpbmQ9PT1yZS5TeW50YXhLaW5kLkltcG9ydEtleXdvcmQpe2lmKFplLmVuZC02IT09dGkuaW5kZXgpY29udGludWU7c3dpdGNoKFplLnBhcmVudC5raW5kKXtjYXNlIHJlLlN5bnRheEtpbmQuSW1wb3J0VHlwZTp0aGlzLl9yZXN1bHQucHVzaChaZS5wYXJlbnQpO2JyZWFrO2Nhc2UgcmUuU3ludGF4S2luZC5DYWxsRXhwcmVzc2lvbjpaZS5wYXJlbnQuYXJndW1lbnRzLmxlbmd0aD4xJiZ0aGlzLl9yZXN1bHQucHVzaChaZS5wYXJlbnQpfX1lbHNlIFplLmtpbmQ9PT1yZS5TeW50YXhLaW5kLklkZW50aWZpZXImJlplLmVuZC03PT09dGkuaW5kZXgmJlplLnBhcmVudC5raW5kPT09cmUuU3ludGF4S2luZC5DYWxsRXhwcmVzc2lvbiYmWmUucGFyZW50LmV4cHJlc3Npb249PT1aZSYmWmUucGFyZW50LmFyZ3VtZW50cy5sZW5ndGg9PT0xJiZ0aGlzLl9yZXN1bHQucHVzaChaZS5wYXJlbnQpfX19O2Z1bmN0aW9uIGxyKGFlKXtmb3IoO2FlLmZsYWdzJnJlLk5vZGVGbGFncy5OZXN0ZWROYW1lc3BhY2U7KWFlPWFlLnBhcmVudDtyZXR1cm4gQihhZS5tb2RpZmllcnMscmUuU3ludGF4S2luZC5EZWNsYXJlS2V5d29yZCl8fGJlKGFlLnBhcmVudCl9TS5pc1N0YXRlbWVudEluQW1iaWVudENvbnRleHQ9bHI7ZnVuY3Rpb24gYmUoYWUpe2Zvcig7YWUua2luZD09PXJlLlN5bnRheEtpbmQuTW9kdWxlQmxvY2s7KXtkbyBhZT1hZS5wYXJlbnQ7d2hpbGUoYWUuZmxhZ3MmcmUuTm9kZUZsYWdzLk5lc3RlZE5hbWVzcGFjZSk7aWYoQihhZS5tb2RpZmllcnMscmUuU3ludGF4S2luZC5EZWNsYXJlS2V5d29yZCkpcmV0dXJuITA7YWU9YWUucGFyZW50fXJldHVybiExfU0uaXNBbWJpZW50TW9kdWxlQmxvY2s9YmU7ZnVuY3Rpb24gR2UoYWUpe2xldCBYZT1hZS5wYXJlbnQ7Zm9yKDtYZS5raW5kPT09cmUuU3ludGF4S2luZC5QYXJlbnRoZXNpemVkRXhwcmVzc2lvbjspWGU9WGUucGFyZW50O3JldHVybiBWZS5pc0NhbGxFeHByZXNzaW9uKFhlKSYmYWUuZW5kPD1YZS5leHByZXNzaW9uLmVuZD9YZTp2b2lkIDB9TS5nZXRJSUZFPUdlO2Z1bmN0aW9uIHVyKGFlLFhlKXtyZXR1cm4oYWUuc3RyaWN0P2FlW1hlXSE9PSExOmFlW1hlXT09PSEwKSYmKFhlIT09XCJzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uXCJ8fHVyKGFlLFwic3RyaWN0TnVsbENoZWNrc1wiKSl9TS5pc1N0cmljdENvbXBpbGVyT3B0aW9uRW5hYmxlZD11cjtmdW5jdGlvbiB5cihhZSxYZSl7c3dpdGNoKFhlKXtjYXNlXCJzdHJpcEludGVybmFsXCI6Y2FzZVwiZGVjbGFyYXRpb25NYXBcIjpjYXNlXCJlbWl0RGVjbGFyYXRpb25Pbmx5XCI6cmV0dXJuIGFlW1hlXT09PSEwJiZ5cihhZSxcImRlY2xhcmF0aW9uXCIpO2Nhc2VcImRlY2xhcmF0aW9uXCI6cmV0dXJuIGFlLmRlY2xhcmF0aW9ufHx5cihhZSxcImNvbXBvc2l0ZVwiKTtjYXNlXCJpbmNyZW1lbnRhbFwiOnJldHVybiBhZS5pbmNyZW1lbnRhbD09PXZvaWQgMD95cihhZSxcImNvbXBvc2l0ZVwiKTphZS5pbmNyZW1lbnRhbDtjYXNlXCJza2lwRGVmYXVsdExpYkNoZWNrXCI6cmV0dXJuIGFlLnNraXBEZWZhdWx0TGliQ2hlY2t8fHlyKGFlLFwic2tpcExpYkNoZWNrXCIpO2Nhc2VcInN1cHByZXNzSW1wbGljaXRBbnlJbmRleEVycm9yc1wiOnJldHVybiBhZS5zdXBwcmVzc0ltcGxpY2l0QW55SW5kZXhFcnJvcnM9PT0hMCYmeXIoYWUsXCJub0ltcGxpY2l0QW55XCIpO2Nhc2VcImFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHNcIjpyZXR1cm4gYWUuYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyE9PXZvaWQgMD9hZS5hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOnlyKGFlLFwiZXNNb2R1bGVJbnRlcm9wXCIpfHxhZS5tb2R1bGU9PT1yZS5Nb2R1bGVLaW5kLlN5c3RlbTtjYXNlXCJub1VuY2hlY2tlZEluZGV4ZWRBY2Nlc3NcIjpyZXR1cm4gYWUubm9VbmNoZWNrZWRJbmRleGVkQWNjZXNzPT09ITAmJnlyKGFlLFwic3RyaWN0TnVsbENoZWNrc1wiKTtjYXNlXCJhbGxvd0pzXCI6cmV0dXJuIGFlLmFsbG93SnM9PT12b2lkIDA/eXIoYWUsXCJjaGVja0pzXCIpOmFlLmFsbG93SnM7Y2FzZVwibm9JbXBsaWNpdEFueVwiOmNhc2VcIm5vSW1wbGljaXRUaGlzXCI6Y2FzZVwic3RyaWN0TnVsbENoZWNrc1wiOmNhc2VcInN0cmljdEZ1bmN0aW9uVHlwZXNcIjpjYXNlXCJzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uXCI6Y2FzZVwiYWx3YXlzU3RyaWN0XCI6Y2FzZVwic3RyaWN0QmluZENhbGxBcHBseVwiOnJldHVybiB1cihhZSxYZSl9cmV0dXJuIGFlW1hlXT09PSEwfU0uaXNDb21waWxlck9wdGlvbkVuYWJsZWQ9eXI7ZnVuY3Rpb24gSXIoYWUpe3JldHVybiBhZS5uYW1lLmtpbmQ9PT1yZS5TeW50YXhLaW5kLlN0cmluZ0xpdGVyYWx8fChhZS5mbGFncyZyZS5Ob2RlRmxhZ3MuR2xvYmFsQXVnbWVudGF0aW9uKSE9PTB9TS5pc0FtYmllbnRNb2R1bGU9SXI7ZnVuY3Rpb24gd3IoYWUpe3JldHVybiBVcihhZSl9TS5nZXRDaGVja0pzRGlyZWN0aXZlPXdyO2Z1bmN0aW9uIFVyKGFlKXtsZXQgWGU7cmV0dXJuIHJlLmZvckVhY2hMZWFkaW5nQ29tbWVudFJhbmdlKGFlLChyZS5nZXRTaGViYW5nKGFlKXx8XCJcIikubGVuZ3RoLChKcix0aSxaZSk9PntpZihaZT09PXJlLlN5bnRheEtpbmQuU2luZ2xlTGluZUNvbW1lbnRUcml2aWEpe2xldCBTcj1hZS5zbGljZShKcix0aSksenI9L15cXC97MiwzfVxccypAdHMtKG5vKT9jaGVjayg/Olxcc3wkKS9pLmV4ZWMoU3IpO3pyIT09bnVsbCYmKFhlPXtwb3M6SnIsZW5kOnRpLGVuYWJsZWQ6enJbMV09PT12b2lkIDB9KX19KSxYZX1NLmdldFRzQ2hlY2tEaXJlY3RpdmU9VXI7ZnVuY3Rpb24gaWkoYWUpe3JldHVybiBWZS5pc1R5cGVSZWZlcmVuY2VOb2RlKGFlLnR5cGUpJiZhZS50eXBlLnR5cGVOYW1lLmtpbmQ9PT1yZS5TeW50YXhLaW5kLklkZW50aWZpZXImJmFlLnR5cGUudHlwZU5hbWUuZXNjYXBlZFRleHQ9PT1cImNvbnN0XCJ9TS5pc0NvbnN0QXNzZXJ0aW9uPWlpO2Z1bmN0aW9uIG1pKGFlKXtsZXQgWGU9YWU7Zm9yKDs7KXtsZXQgSnI9WGUucGFyZW50O2U6c3dpdGNoKEpyLmtpbmQpe2Nhc2UgcmUuU3ludGF4S2luZC5UeXBlQXNzZXJ0aW9uRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuQXNFeHByZXNzaW9uOnJldHVybiBpaShKcik7Y2FzZSByZS5TeW50YXhLaW5kLlByZWZpeFVuYXJ5RXhwcmVzc2lvbjppZihYZS5raW5kIT09cmUuU3ludGF4S2luZC5OdW1lcmljTGl0ZXJhbClyZXR1cm4hMTtzd2l0Y2goSnIub3BlcmF0b3Ipe2Nhc2UgcmUuU3ludGF4S2luZC5QbHVzVG9rZW46Y2FzZSByZS5TeW50YXhLaW5kLk1pbnVzVG9rZW46WGU9SnI7YnJlYWsgZTtkZWZhdWx0OnJldHVybiExfWNhc2UgcmUuU3ludGF4S2luZC5Qcm9wZXJ0eUFzc2lnbm1lbnQ6aWYoSnIuaW5pdGlhbGl6ZXIhPT1YZSlyZXR1cm4hMTtYZT1Kci5wYXJlbnQ7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLlNob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudDpYZT1Kci5wYXJlbnQ7YnJlYWs7Y2FzZSByZS5TeW50YXhLaW5kLlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uOmNhc2UgcmUuU3ludGF4S2luZC5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbjpjYXNlIHJlLlN5bnRheEtpbmQuVGVtcGxhdGVFeHByZXNzaW9uOlhlPUpyO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9fX1NLmlzSW5Db25zdENvbnRleHQ9bWk7ZnVuY3Rpb24gcGUoYWUsWGUpe2lmKCFvcihhZSkpcmV0dXJuITE7bGV0IEpyPVhlLmdldFR5cGVBdExvY2F0aW9uKGFlLmFyZ3VtZW50c1syXSk7aWYoSnIuZ2V0UHJvcGVydHkoXCJ2YWx1ZVwiKT09PXZvaWQgMClyZXR1cm4gSnIuZ2V0UHJvcGVydHkoXCJzZXRcIik9PT12b2lkIDA7bGV0IHRpPUpyLmdldFByb3BlcnR5KFwid3JpdGFibGVcIik7aWYodGk9PT12b2lkIDApcmV0dXJuITE7bGV0IFplPXRpLnZhbHVlRGVjbGFyYXRpb24hPT12b2lkIDAmJlZlLmlzUHJvcGVydHlBc3NpZ25tZW50KHRpLnZhbHVlRGVjbGFyYXRpb24pP1hlLmdldFR5cGVBdExvY2F0aW9uKHRpLnZhbHVlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIpOlhlLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24odGksYWUuYXJndW1lbnRzWzJdKTtyZXR1cm4gb2kuaXNCb29sZWFuTGl0ZXJhbFR5cGUoWmUsITEpfU0uaXNSZWFkb25seUFzc2lnbm1lbnREZWNsYXJhdGlvbj1wZTtmdW5jdGlvbiBvcihhZSl7cmV0dXJuIGFlLmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZWZS5pc0VudGl0eU5hbWVFeHByZXNzaW9uKGFlLmFyZ3VtZW50c1swXSkmJlZlLmlzTnVtZXJpY09yU3RyaW5nTGlrZUxpdGVyYWwoYWUuYXJndW1lbnRzWzFdKSYmVmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oYWUuZXhwcmVzc2lvbikmJmFlLmV4cHJlc3Npb24ubmFtZS5lc2NhcGVkVGV4dD09PVwiZGVmaW5lUHJvcGVydHlcIiYmVmUuaXNJZGVudGlmaWVyKGFlLmV4cHJlc3Npb24uZXhwcmVzc2lvbikmJmFlLmV4cHJlc3Npb24uZXhwcmVzc2lvbi5lc2NhcGVkVGV4dD09PVwiT2JqZWN0XCJ9TS5pc0JpbmRhYmxlT2JqZWN0RGVmaW5lUHJvcGVydHlDYWxsPW9yO2Z1bmN0aW9uIHFyKGFlKXtyZXR1cm4gcmUuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oYWUpJiZyZS5pc0lkZW50aWZpZXIoYWUuZXhwcmVzc2lvbikmJmFlLmV4cHJlc3Npb24uZXNjYXBlZFRleHQ9PT1cIlN5bWJvbFwifU0uaXNXZWxsS25vd25TeW1ib2xMaXRlcmFsbHk9cXI7ZnVuY3Rpb24gc2koYWUpe3JldHVybntkaXNwbGF5TmFtZTpcIltTeW1ib2wuXCIuY29uY2F0KGFlLm5hbWUudGV4dCxcIl1cIiksc3ltYm9sTmFtZTpcIl9fQFwiK2FlLm5hbWUudGV4dH19TS5nZXRQcm9wZXJ0eU5hbWVPZldlbGxLbm93blN5bWJvbD1zaTt2YXIgRGk9KGFlPT57bGV0W1hlLEpyXT1hZTtyZXR1cm4gWGU8XCI0XCJ8fFhlPT09XCI0XCImJkpyPFwiM1wifSkocmUudmVyc2lvbk1ham9yTWlub3Iuc3BsaXQoXCIuXCIpKTtmdW5jdGlvbiB3aShhZSxYZSl7bGV0IEpyPXtrbm93bjohMCxuYW1lczpbXX07aWYoYWU9R2koYWUpLERpJiZxcihhZSkpSnIubmFtZXMucHVzaChzaShhZSkpO2Vsc2V7bGV0IHRpPVhlLmdldFR5cGVBdExvY2F0aW9uKGFlKTtmb3IobGV0IFplIG9mIG9pLnVuaW9uVHlwZVBhcnRzKFhlLmdldEJhc2VDb25zdHJhaW50T2ZUeXBlKHRpKXx8dGkpKXtsZXQgU3I9b2kuZ2V0UHJvcGVydHlOYW1lRnJvbVR5cGUoWmUpO1NyP0pyLm5hbWVzLnB1c2goU3IpOkpyLmtub3duPSExfX1yZXR1cm4gSnJ9TS5nZXRMYXRlQm91bmRQcm9wZXJ0eU5hbWVzPXdpO2Z1bmN0aW9uIFhpKGFlLFhlKXtsZXQgSnI9TyhhZSk7cmV0dXJuIEpyIT09dm9pZCAwP3trbm93bjohMCxuYW1lczpbe2Rpc3BsYXlOYW1lOkpyLHN5bWJvbE5hbWU6cmUuZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKEpyKX1dfTphZS5raW5kPT09cmUuU3ludGF4S2luZC5Qcml2YXRlSWRlbnRpZmllcj97a25vd246ITAsbmFtZXM6W3tkaXNwbGF5TmFtZTphZS50ZXh0LHN5bWJvbE5hbWU6WGUuZ2V0U3ltYm9sQXRMb2NhdGlvbihhZSkuZXNjYXBlZE5hbWV9XX06d2koYWUuZXhwcmVzc2lvbixYZSl9TS5nZXRMYXRlQm91bmRQcm9wZXJ0eU5hbWVzT2ZQcm9wZXJ0eU5hbWU9WGk7ZnVuY3Rpb24gZXQoYWUsWGUpe2xldCBKcj1PKGFlKTtpZihKciE9PXZvaWQgMClyZXR1cm57ZGlzcGxheU5hbWU6SnIsc3ltYm9sTmFtZTpyZS5lc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMoSnIpfTtpZihhZS5raW5kPT09cmUuU3ludGF4S2luZC5Qcml2YXRlSWRlbnRpZmllcilyZXR1cm57ZGlzcGxheU5hbWU6YWUudGV4dCxzeW1ib2xOYW1lOlhlLmdldFN5bWJvbEF0TG9jYXRpb24oYWUpLmVzY2FwZWROYW1lfTtsZXR7ZXhwcmVzc2lvbjp0aX09YWU7cmV0dXJuIERpJiZxcih0aSk/c2kodGkpOm9pLmdldFByb3BlcnR5TmFtZUZyb21UeXBlKFhlLmdldFR5cGVBdExvY2F0aW9uKHRpKSl9TS5nZXRTaW5nbGVMYXRlQm91bmRQcm9wZXJ0eU5hbWVPZlByb3BlcnR5TmFtZT1ldDtmdW5jdGlvbiBHaShhZSl7Zm9yKDthZS5raW5kPT09cmUuU3ludGF4S2luZC5QYXJlbnRoZXNpemVkRXhwcmVzc2lvbjspYWU9YWUuZXhwcmVzc2lvbjtyZXR1cm4gYWV9TS51bndyYXBQYXJlbnRoZXNlcz1HaTtmdW5jdGlvbiBXdChhZSl7cmV0dXJuXCJcIi5jb25jYXQoYWUubmVnYXRpdmU/XCItXCI6XCJcIikuY29uY2F0KGFlLmJhc2UxMFZhbHVlLFwiblwiKX1NLmZvcm1hdFBzZXVkb0JpZ0ludD1XdDtmdW5jdGlvbiBadChhZSxYZSl7bGV0IEpyPWFlLmNhc2VCbG9jay5jbGF1c2VzLmZpbHRlcihWZS5pc0Nhc2VDbGF1c2UpO2lmKEpyLmxlbmd0aD09PTApcmV0dXJuITE7bGV0IHRpPW9pLnVuaW9uVHlwZVBhcnRzKFhlLmdldFR5cGVBdExvY2F0aW9uKGFlLmV4cHJlc3Npb24pKTtpZih0aS5sZW5ndGg+SnIubGVuZ3RoKXJldHVybiExO2xldCBaZT1uZXcgU2V0KHRpLm1hcChfcikpO2lmKFplLmhhcyh2b2lkIDApKXJldHVybiExO2xldCBTcj1uZXcgU2V0O2ZvcihsZXQgenIgb2YgSnIpe2xldCBXcj1YZS5nZXRUeXBlQXRMb2NhdGlvbih6ci5leHByZXNzaW9uKTtpZihNLmlzVHlwZUZsYWdTZXQoV3IscmUuVHlwZUZsYWdzLk5ldmVyKSljb250aW51ZTtsZXQgSmU9X3IoV3IpO2lmKFplLmhhcyhKZSkpU3IuYWRkKEplKTtlbHNlIGlmKEplIT09XCJudWxsXCImJkplIT09XCJ1bmRlZmluZWRcIilyZXR1cm4hMX1yZXR1cm4gWmUuc2l6ZT09PVNyLnNpemV9TS5oYXNFeGhhdXN0aXZlQ2FzZUNsYXVzZXM9WnQ7ZnVuY3Rpb24gX3IoYWUpe2lmKE0uaXNUeXBlRmxhZ1NldChhZSxyZS5UeXBlRmxhZ3MuTnVsbCkpcmV0dXJuXCJudWxsXCI7aWYoTS5pc1R5cGVGbGFnU2V0KGFlLHJlLlR5cGVGbGFncy5VbmRlZmluZWQpKXJldHVyblwidW5kZWZpbmVkXCI7aWYoTS5pc1R5cGVGbGFnU2V0KGFlLHJlLlR5cGVGbGFncy5OdW1iZXJMaXRlcmFsKSlyZXR1cm5cIlwiLmNvbmNhdChNLmlzVHlwZUZsYWdTZXQoYWUscmUuVHlwZUZsYWdzLkVudW1MaXRlcmFsKT9cImVudW06XCI6XCJcIikuY29uY2F0KGFlLnZhbHVlKTtpZihNLmlzVHlwZUZsYWdTZXQoYWUscmUuVHlwZUZsYWdzLlN0cmluZ0xpdGVyYWwpKXJldHVyblwiXCIuY29uY2F0KE0uaXNUeXBlRmxhZ1NldChhZSxyZS5UeXBlRmxhZ3MuRW51bUxpdGVyYWwpP1wiZW51bTpcIjpcIlwiLFwic3RyaW5nOlwiKS5jb25jYXQoYWUudmFsdWUpO2lmKE0uaXNUeXBlRmxhZ1NldChhZSxyZS5UeXBlRmxhZ3MuQmlnSW50TGl0ZXJhbCkpcmV0dXJuIFd0KGFlLnZhbHVlKTtpZihLZS5pc1VuaXF1ZUVTU3ltYm9sVHlwZShhZSkpcmV0dXJuIGFlLmVzY2FwZWROYW1lO2lmKG9pLmlzQm9vbGVhbkxpdGVyYWxUeXBlKGFlLCEwKSlyZXR1cm5cInRydWVcIjtpZihvaS5pc0Jvb2xlYW5MaXRlcmFsVHlwZShhZSwhMSkpcmV0dXJuXCJmYWxzZVwifWZ1bmN0aW9uIHBpKGFlKXt2YXIgWGU7aWYoKChYZT1hZS5oZXJpdGFnZUNsYXVzZXMpPT09bnVsbHx8WGU9PT12b2lkIDA/dm9pZCAwOlhlWzBdLnRva2VuKT09PXJlLlN5bnRheEtpbmQuRXh0ZW5kc0tleXdvcmQpcmV0dXJuIGFlLmhlcml0YWdlQ2xhdXNlc1swXS50eXBlc1swXX1NLmdldEJhc2VPZkNsYXNzTGlrZUV4cHJlc3Npb249cGl9fSksZXo9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2NvbnZlcnQtY29tbWVudHMuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciByZT1NJiZNLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oa2UsZSxhLEMpe0M9PT12b2lkIDAmJihDPWEpO3ZhciB3PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxhKTsoIXd8fChcImdldFwiaW4gdz8hZS5fX2VzTW9kdWxlOncud3JpdGFibGV8fHcuY29uZmlndXJhYmxlKSkmJih3PXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW2FdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrZSxDLHcpfTpmdW5jdGlvbihrZSxlLGEsQyl7Qz09PXZvaWQgMCYmKEM9YSksa2VbQ109ZVthXX0pLFZlPU0mJk0uX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihrZSxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoa2UsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pfTpmdW5jdGlvbihrZSxlKXtrZS5kZWZhdWx0PWV9KSxLZT1NJiZNLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oa2Upe2lmKGtlJiZrZS5fX2VzTW9kdWxlKXJldHVybiBrZTt2YXIgZT17fTtpZihrZSE9bnVsbClmb3IodmFyIGEgaW4ga2UpYSE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoa2UsYSkmJnJlKGUsa2UsYSk7cmV0dXJuIFZlKGUsa2UpLGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uY29udmVydENvbW1lbnRzPXZvaWQgMDt2YXIgb2k9S2UoX3UoKSksa3I9bjMoKSxwcj1BMSgpLExyPWsxKCk7ZnVuY3Rpb24gYXIoa2UsZSl7bGV0IGE9W107cmV0dXJuKDAsa3IuZm9yRWFjaENvbW1lbnQpKGtlLChDLHcpPT57bGV0IEI9dy5raW5kPT1vaS5TeW50YXhLaW5kLlNpbmdsZUxpbmVDb21tZW50VHJpdmlhP0xyLkFTVF9UT0tFTl9UWVBFUy5MaW5lOkxyLkFTVF9UT0tFTl9UWVBFUy5CbG9jayxFPVt3LnBvcyx3LmVuZF0sUT0oMCxwci5nZXRMb2NGb3IpKEVbMF0sRVsxXSxrZSksbGU9RVswXSsyLE49dy5raW5kPT09b2kuU3ludGF4S2luZC5TaW5nbGVMaW5lQ29tbWVudFRyaXZpYT9FWzFdLWxlOkVbMV0tbGUtMjthLnB1c2goe3R5cGU6Qix2YWx1ZTplLnNsaWNlKGxlLGxlK04pLHJhbmdlOkUsbG9jOlF9KX0sa2UpLGF9TS5jb252ZXJ0Q29tbWVudHM9YXJ9fSksbzM9T2Eoe1wibm9kZV9tb2R1bGVzL2VzbGludC12aXNpdG9yLWtleXMvZGlzdC9lc2xpbnQtdmlzaXRvci1rZXlzLmNqc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHJlPXtBc3NpZ25tZW50RXhwcmVzc2lvbjpbXCJsZWZ0XCIsXCJyaWdodFwiXSxBc3NpZ25tZW50UGF0dGVybjpbXCJsZWZ0XCIsXCJyaWdodFwiXSxBcnJheUV4cHJlc3Npb246W1wiZWxlbWVudHNcIl0sQXJyYXlQYXR0ZXJuOltcImVsZW1lbnRzXCJdLEFycm93RnVuY3Rpb25FeHByZXNzaW9uOltcInBhcmFtc1wiLFwiYm9keVwiXSxBd2FpdEV4cHJlc3Npb246W1wiYXJndW1lbnRcIl0sQmxvY2tTdGF0ZW1lbnQ6W1wiYm9keVwiXSxCaW5hcnlFeHByZXNzaW9uOltcImxlZnRcIixcInJpZ2h0XCJdLEJyZWFrU3RhdGVtZW50OltcImxhYmVsXCJdLENhbGxFeHByZXNzaW9uOltcImNhbGxlZVwiLFwiYXJndW1lbnRzXCJdLENhdGNoQ2xhdXNlOltcInBhcmFtXCIsXCJib2R5XCJdLENoYWluRXhwcmVzc2lvbjpbXCJleHByZXNzaW9uXCJdLENsYXNzQm9keTpbXCJib2R5XCJdLENsYXNzRGVjbGFyYXRpb246W1wiaWRcIixcInN1cGVyQ2xhc3NcIixcImJvZHlcIl0sQ2xhc3NFeHByZXNzaW9uOltcImlkXCIsXCJzdXBlckNsYXNzXCIsXCJib2R5XCJdLENvbmRpdGlvbmFsRXhwcmVzc2lvbjpbXCJ0ZXN0XCIsXCJjb25zZXF1ZW50XCIsXCJhbHRlcm5hdGVcIl0sQ29udGludWVTdGF0ZW1lbnQ6W1wibGFiZWxcIl0sRGVidWdnZXJTdGF0ZW1lbnQ6W10sRG9XaGlsZVN0YXRlbWVudDpbXCJib2R5XCIsXCJ0ZXN0XCJdLEVtcHR5U3RhdGVtZW50OltdLEV4cG9ydEFsbERlY2xhcmF0aW9uOltcImV4cG9ydGVkXCIsXCJzb3VyY2VcIl0sRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOltcImRlY2xhcmF0aW9uXCJdLEV4cG9ydE5hbWVkRGVjbGFyYXRpb246W1wiZGVjbGFyYXRpb25cIixcInNwZWNpZmllcnNcIixcInNvdXJjZVwiXSxFeHBvcnRTcGVjaWZpZXI6W1wiZXhwb3J0ZWRcIixcImxvY2FsXCJdLEV4cHJlc3Npb25TdGF0ZW1lbnQ6W1wiZXhwcmVzc2lvblwiXSxFeHBlcmltZW50YWxSZXN0UHJvcGVydHk6W1wiYXJndW1lbnRcIl0sRXhwZXJpbWVudGFsU3ByZWFkUHJvcGVydHk6W1wiYXJndW1lbnRcIl0sRm9yU3RhdGVtZW50OltcImluaXRcIixcInRlc3RcIixcInVwZGF0ZVwiLFwiYm9keVwiXSxGb3JJblN0YXRlbWVudDpbXCJsZWZ0XCIsXCJyaWdodFwiLFwiYm9keVwiXSxGb3JPZlN0YXRlbWVudDpbXCJsZWZ0XCIsXCJyaWdodFwiLFwiYm9keVwiXSxGdW5jdGlvbkRlY2xhcmF0aW9uOltcImlkXCIsXCJwYXJhbXNcIixcImJvZHlcIl0sRnVuY3Rpb25FeHByZXNzaW9uOltcImlkXCIsXCJwYXJhbXNcIixcImJvZHlcIl0sSWRlbnRpZmllcjpbXSxJZlN0YXRlbWVudDpbXCJ0ZXN0XCIsXCJjb25zZXF1ZW50XCIsXCJhbHRlcm5hdGVcIl0sSW1wb3J0RGVjbGFyYXRpb246W1wic3BlY2lmaWVyc1wiLFwic291cmNlXCJdLEltcG9ydERlZmF1bHRTcGVjaWZpZXI6W1wibG9jYWxcIl0sSW1wb3J0RXhwcmVzc2lvbjpbXCJzb3VyY2VcIl0sSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOltcImxvY2FsXCJdLEltcG9ydFNwZWNpZmllcjpbXCJpbXBvcnRlZFwiLFwibG9jYWxcIl0sSlNYQXR0cmlidXRlOltcIm5hbWVcIixcInZhbHVlXCJdLEpTWENsb3NpbmdFbGVtZW50OltcIm5hbWVcIl0sSlNYRWxlbWVudDpbXCJvcGVuaW5nRWxlbWVudFwiLFwiY2hpbGRyZW5cIixcImNsb3NpbmdFbGVtZW50XCJdLEpTWEVtcHR5RXhwcmVzc2lvbjpbXSxKU1hFeHByZXNzaW9uQ29udGFpbmVyOltcImV4cHJlc3Npb25cIl0sSlNYSWRlbnRpZmllcjpbXSxKU1hNZW1iZXJFeHByZXNzaW9uOltcIm9iamVjdFwiLFwicHJvcGVydHlcIl0sSlNYTmFtZXNwYWNlZE5hbWU6W1wibmFtZXNwYWNlXCIsXCJuYW1lXCJdLEpTWE9wZW5pbmdFbGVtZW50OltcIm5hbWVcIixcImF0dHJpYnV0ZXNcIl0sSlNYU3ByZWFkQXR0cmlidXRlOltcImFyZ3VtZW50XCJdLEpTWFRleHQ6W10sSlNYRnJhZ21lbnQ6W1wib3BlbmluZ0ZyYWdtZW50XCIsXCJjaGlsZHJlblwiLFwiY2xvc2luZ0ZyYWdtZW50XCJdLEpTWENsb3NpbmdGcmFnbWVudDpbXSxKU1hPcGVuaW5nRnJhZ21lbnQ6W10sTGl0ZXJhbDpbXSxMYWJlbGVkU3RhdGVtZW50OltcImxhYmVsXCIsXCJib2R5XCJdLExvZ2ljYWxFeHByZXNzaW9uOltcImxlZnRcIixcInJpZ2h0XCJdLE1lbWJlckV4cHJlc3Npb246W1wib2JqZWN0XCIsXCJwcm9wZXJ0eVwiXSxNZXRhUHJvcGVydHk6W1wibWV0YVwiLFwicHJvcGVydHlcIl0sTWV0aG9kRGVmaW5pdGlvbjpbXCJrZXlcIixcInZhbHVlXCJdLE5ld0V4cHJlc3Npb246W1wiY2FsbGVlXCIsXCJhcmd1bWVudHNcIl0sT2JqZWN0RXhwcmVzc2lvbjpbXCJwcm9wZXJ0aWVzXCJdLE9iamVjdFBhdHRlcm46W1wicHJvcGVydGllc1wiXSxQcml2YXRlSWRlbnRpZmllcjpbXSxQcm9ncmFtOltcImJvZHlcIl0sUHJvcGVydHk6W1wia2V5XCIsXCJ2YWx1ZVwiXSxQcm9wZXJ0eURlZmluaXRpb246W1wia2V5XCIsXCJ2YWx1ZVwiXSxSZXN0RWxlbWVudDpbXCJhcmd1bWVudFwiXSxSZXR1cm5TdGF0ZW1lbnQ6W1wiYXJndW1lbnRcIl0sU2VxdWVuY2VFeHByZXNzaW9uOltcImV4cHJlc3Npb25zXCJdLFNwcmVhZEVsZW1lbnQ6W1wiYXJndW1lbnRcIl0sU3RhdGljQmxvY2s6W1wiYm9keVwiXSxTdXBlcjpbXSxTd2l0Y2hTdGF0ZW1lbnQ6W1wiZGlzY3JpbWluYW50XCIsXCJjYXNlc1wiXSxTd2l0Y2hDYXNlOltcInRlc3RcIixcImNvbnNlcXVlbnRcIl0sVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOltcInRhZ1wiLFwicXVhc2lcIl0sVGVtcGxhdGVFbGVtZW50OltdLFRlbXBsYXRlTGl0ZXJhbDpbXCJxdWFzaXNcIixcImV4cHJlc3Npb25zXCJdLFRoaXNFeHByZXNzaW9uOltdLFRocm93U3RhdGVtZW50OltcImFyZ3VtZW50XCJdLFRyeVN0YXRlbWVudDpbXCJibG9ja1wiLFwiaGFuZGxlclwiLFwiZmluYWxpemVyXCJdLFVuYXJ5RXhwcmVzc2lvbjpbXCJhcmd1bWVudFwiXSxVcGRhdGVFeHByZXNzaW9uOltcImFyZ3VtZW50XCJdLFZhcmlhYmxlRGVjbGFyYXRpb246W1wiZGVjbGFyYXRpb25zXCJdLFZhcmlhYmxlRGVjbGFyYXRvcjpbXCJpZFwiLFwiaW5pdFwiXSxXaGlsZVN0YXRlbWVudDpbXCJ0ZXN0XCIsXCJib2R5XCJdLFdpdGhTdGF0ZW1lbnQ6W1wib2JqZWN0XCIsXCJib2R5XCJdLFlpZWxkRXhwcmVzc2lvbjpbXCJhcmd1bWVudFwiXX0sVmU9T2JqZWN0LmtleXMocmUpO2ZvcihsZXQgTHIgb2YgVmUpT2JqZWN0LmZyZWV6ZShyZVtMcl0pO09iamVjdC5mcmVlemUocmUpO3ZhciBLZT1uZXcgU2V0KFtcInBhcmVudFwiLFwibGVhZGluZ0NvbW1lbnRzXCIsXCJ0cmFpbGluZ0NvbW1lbnRzXCJdKTtmdW5jdGlvbiBvaShMcil7cmV0dXJuIUtlLmhhcyhMcikmJkxyWzBdIT09XCJfXCJ9ZnVuY3Rpb24ga3IoTHIpe3JldHVybiBPYmplY3Qua2V5cyhMcikuZmlsdGVyKG9pKX1mdW5jdGlvbiBwcihMcil7bGV0IGFyPU9iamVjdC5hc3NpZ24oe30scmUpO2ZvcihsZXQga2Ugb2YgT2JqZWN0LmtleXMoTHIpKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcixrZSkpe2xldCBlPW5ldyBTZXQoTHJba2VdKTtmb3IobGV0IGEgb2YgYXJba2VdKWUuYWRkKGEpO2FyW2tlXT1PYmplY3QuZnJlZXplKEFycmF5LmZyb20oZSkpfWVsc2UgYXJba2VdPU9iamVjdC5mcmVlemUoQXJyYXkuZnJvbShMcltrZV0pKTtyZXR1cm4gT2JqZWN0LmZyZWV6ZShhcil9TS5LRVlTPXJlLE0uZ2V0S2V5cz1rcixNLnVuaW9uV2l0aD1wcn19KSxyej1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL25vZGVfbW9kdWxlcy9AdHlwZXNjcmlwdC1lc2xpbnQvdmlzaXRvci1rZXlzL2Rpc3QvZ2V0LWtleXMuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uZ2V0S2V5cz12b2lkIDA7dmFyIHJlPW8zKCksVmU9cmUuZ2V0S2V5cztNLmdldEtleXM9VmV9fSksaXo9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9ub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3Zpc2l0b3Ita2V5cy9kaXN0L3Zpc2l0b3Ita2V5cy5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIHJlPU0mJk0uX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihMcixhcixrZSxlKXtlPT09dm9pZCAwJiYoZT1rZSk7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcixrZSk7KCFhfHwoXCJnZXRcImluIGE/IWFyLl9fZXNNb2R1bGU6YS53cml0YWJsZXx8YS5jb25maWd1cmFibGUpKSYmKGE9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFyW2tlXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTHIsZSxhKX06ZnVuY3Rpb24oTHIsYXIsa2UsZSl7ZT09PXZvaWQgMCYmKGU9a2UpLExyW2VdPWFyW2tlXX0pLFZlPU0mJk0uX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihMcixhcil7T2JqZWN0LmRlZmluZVByb3BlcnR5KExyLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmFyfSl9OmZ1bmN0aW9uKExyLGFyKXtMci5kZWZhdWx0PWFyfSksS2U9TSYmTS5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKExyKXtpZihMciYmTHIuX19lc01vZHVsZSlyZXR1cm4gTHI7dmFyIGFyPXt9O2lmKExyIT1udWxsKWZvcih2YXIga2UgaW4gTHIpa2UhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKExyLGtlKSYmcmUoYXIsTHIsa2UpO3JldHVybiBWZShhcixMciksYXJ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0udmlzaXRvcktleXM9dm9pZCAwO3ZhciBvaT1LZShvMygpKSxrcj17SW1wb3J0QXR0cmlidXRlOltcImtleVwiLFwidmFsdWVcIl0sQXJyYXlQYXR0ZXJuOltcImRlY29yYXRvcnNcIixcImVsZW1lbnRzXCIsXCJ0eXBlQW5ub3RhdGlvblwiXSxBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjpbXCJ0eXBlUGFyYW1ldGVyc1wiLFwicGFyYW1zXCIsXCJyZXR1cm5UeXBlXCIsXCJib2R5XCJdLEFzc2lnbm1lbnRQYXR0ZXJuOltcImRlY29yYXRvcnNcIixcImxlZnRcIixcInJpZ2h0XCIsXCJ0eXBlQW5ub3RhdGlvblwiXSxDYWxsRXhwcmVzc2lvbjpbXCJjYWxsZWVcIixcInR5cGVQYXJhbWV0ZXJzXCIsXCJhcmd1bWVudHNcIl0sQ2xhc3NEZWNsYXJhdGlvbjpbXCJkZWNvcmF0b3JzXCIsXCJpZFwiLFwidHlwZVBhcmFtZXRlcnNcIixcInN1cGVyQ2xhc3NcIixcInN1cGVyVHlwZVBhcmFtZXRlcnNcIixcImltcGxlbWVudHNcIixcImJvZHlcIl0sQ2xhc3NFeHByZXNzaW9uOltcImRlY29yYXRvcnNcIixcImlkXCIsXCJ0eXBlUGFyYW1ldGVyc1wiLFwic3VwZXJDbGFzc1wiLFwic3VwZXJUeXBlUGFyYW1ldGVyc1wiLFwiaW1wbGVtZW50c1wiLFwiYm9keVwiXSxFeHBvcnRBbGxEZWNsYXJhdGlvbjpbXCJleHBvcnRlZFwiLFwic291cmNlXCIsXCJhc3NlcnRpb25zXCJdLEV4cG9ydE5hbWVkRGVjbGFyYXRpb246W1wiZGVjbGFyYXRpb25cIixcInNwZWNpZmllcnNcIixcInNvdXJjZVwiLFwiYXNzZXJ0aW9uc1wiXSxGdW5jdGlvbkRlY2xhcmF0aW9uOltcImlkXCIsXCJ0eXBlUGFyYW1ldGVyc1wiLFwicGFyYW1zXCIsXCJyZXR1cm5UeXBlXCIsXCJib2R5XCJdLEZ1bmN0aW9uRXhwcmVzc2lvbjpbXCJpZFwiLFwidHlwZVBhcmFtZXRlcnNcIixcInBhcmFtc1wiLFwicmV0dXJuVHlwZVwiLFwiYm9keVwiXSxJZGVudGlmaWVyOltcImRlY29yYXRvcnNcIixcInR5cGVBbm5vdGF0aW9uXCJdLEltcG9ydERlY2xhcmF0aW9uOltcInNwZWNpZmllcnNcIixcInNvdXJjZVwiLFwiYXNzZXJ0aW9uc1wiXSxJbXBvcnRFeHByZXNzaW9uOltcInNvdXJjZVwiLFwiYXR0cmlidXRlc1wiXSxNZXRob2REZWZpbml0aW9uOltcImRlY29yYXRvcnNcIixcImtleVwiLFwidmFsdWVcIixcInR5cGVQYXJhbWV0ZXJzXCJdLE5ld0V4cHJlc3Npb246W1wiY2FsbGVlXCIsXCJ0eXBlUGFyYW1ldGVyc1wiLFwiYXJndW1lbnRzXCJdLE9iamVjdFBhdHRlcm46W1wiZGVjb3JhdG9yc1wiLFwicHJvcGVydGllc1wiLFwidHlwZUFubm90YXRpb25cIl0sUHJvcGVydHlEZWZpbml0aW9uOltcImRlY29yYXRvcnNcIixcImtleVwiLFwidHlwZUFubm90YXRpb25cIixcInZhbHVlXCJdLFJlc3RFbGVtZW50OltcImRlY29yYXRvcnNcIixcImFyZ3VtZW50XCIsXCJ0eXBlQW5ub3RhdGlvblwiXSxUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246W1widGFnXCIsXCJ0eXBlUGFyYW1ldGVyc1wiLFwicXVhc2lcIl0sU3RhdGljQmxvY2s6W1wiYm9keVwiXSxKU1hPcGVuaW5nRWxlbWVudDpbXCJuYW1lXCIsXCJ0eXBlUGFyYW1ldGVyc1wiLFwiYXR0cmlidXRlc1wiXSxKU1hDbG9zaW5nRnJhZ21lbnQ6W10sSlNYT3BlbmluZ0ZyYWdtZW50OltdLEpTWFNwcmVhZENoaWxkOltcImV4cHJlc3Npb25cIl0sRGVjb3JhdG9yOltcImV4cHJlc3Npb25cIl0sVFNBYnN0cmFjdEtleXdvcmQ6W10sVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb246W1wia2V5XCIsXCJ2YWx1ZVwiXSxUU0Fic3RyYWN0UHJvcGVydHlEZWZpbml0aW9uOltcImRlY29yYXRvcnNcIixcImtleVwiLFwidHlwZUFubm90YXRpb25cIl0sVFNBbnlLZXl3b3JkOltdLFRTQXJyYXlUeXBlOltcImVsZW1lbnRUeXBlXCJdLFRTQXNFeHByZXNzaW9uOltcImV4cHJlc3Npb25cIixcInR5cGVBbm5vdGF0aW9uXCJdLFRTQXN5bmNLZXl3b3JkOltdLFRTQmlnSW50S2V5d29yZDpbXSxUU0Jvb2xlYW5LZXl3b3JkOltdLFRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uOltcInR5cGVQYXJhbWV0ZXJzXCIsXCJwYXJhbXNcIixcInJldHVyblR5cGVcIl0sVFNDbGFzc0ltcGxlbWVudHM6W1wiZXhwcmVzc2lvblwiLFwidHlwZVBhcmFtZXRlcnNcIl0sVFNDb25kaXRpb25hbFR5cGU6W1wiY2hlY2tUeXBlXCIsXCJleHRlbmRzVHlwZVwiLFwidHJ1ZVR5cGVcIixcImZhbHNlVHlwZVwiXSxUU0NvbnN0cnVjdG9yVHlwZTpbXCJ0eXBlUGFyYW1ldGVyc1wiLFwicGFyYW1zXCIsXCJyZXR1cm5UeXBlXCJdLFRTQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb246W1widHlwZVBhcmFtZXRlcnNcIixcInBhcmFtc1wiLFwicmV0dXJuVHlwZVwiXSxUU0RlY2xhcmVGdW5jdGlvbjpbXCJpZFwiLFwidHlwZVBhcmFtZXRlcnNcIixcInBhcmFtc1wiLFwicmV0dXJuVHlwZVwiLFwiYm9keVwiXSxUU0RlY2xhcmVLZXl3b3JkOltdLFRTRW1wdHlCb2R5RnVuY3Rpb25FeHByZXNzaW9uOltcImlkXCIsXCJ0eXBlUGFyYW1ldGVyc1wiLFwicGFyYW1zXCIsXCJyZXR1cm5UeXBlXCJdLFRTRW51bURlY2xhcmF0aW9uOltcImlkXCIsXCJtZW1iZXJzXCJdLFRTRW51bU1lbWJlcjpbXCJpZFwiLFwiaW5pdGlhbGl6ZXJcIl0sVFNFeHBvcnRBc3NpZ25tZW50OltcImV4cHJlc3Npb25cIl0sVFNFeHBvcnRLZXl3b3JkOltdLFRTRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2U6W1wiZXhwcmVzc2lvblwiXSxUU0Z1bmN0aW9uVHlwZTpbXCJ0eXBlUGFyYW1ldGVyc1wiLFwicGFyYW1zXCIsXCJyZXR1cm5UeXBlXCJdLFRTSW1wb3J0RXF1YWxzRGVjbGFyYXRpb246W1wiaWRcIixcIm1vZHVsZVJlZmVyZW5jZVwiXSxUU0ltcG9ydFR5cGU6W1wicGFyYW1ldGVyXCIsXCJxdWFsaWZpZXJcIixcInR5cGVQYXJhbWV0ZXJzXCJdLFRTSW5kZXhlZEFjY2Vzc1R5cGU6W1wiaW5kZXhUeXBlXCIsXCJvYmplY3RUeXBlXCJdLFRTSW5kZXhTaWduYXR1cmU6W1wicGFyYW1ldGVyc1wiLFwidHlwZUFubm90YXRpb25cIl0sVFNJbmZlclR5cGU6W1widHlwZVBhcmFtZXRlclwiXSxUU0luc3RhbnRpYXRpb25FeHByZXNzaW9uOltcImV4cHJlc3Npb25cIixcInR5cGVQYXJhbWV0ZXJzXCJdLFRTSW50ZXJmYWNlQm9keTpbXCJib2R5XCJdLFRTSW50ZXJmYWNlRGVjbGFyYXRpb246W1wiaWRcIixcInR5cGVQYXJhbWV0ZXJzXCIsXCJleHRlbmRzXCIsXCJib2R5XCJdLFRTSW50ZXJmYWNlSGVyaXRhZ2U6W1wiZXhwcmVzc2lvblwiLFwidHlwZVBhcmFtZXRlcnNcIl0sVFNJbnRlcnNlY3Rpb25UeXBlOltcInR5cGVzXCJdLFRTSW50cmluc2ljS2V5d29yZDpbXSxUU0xpdGVyYWxUeXBlOltcImxpdGVyYWxcIl0sVFNNYXBwZWRUeXBlOltcIm5hbWVUeXBlXCIsXCJ0eXBlUGFyYW1ldGVyXCIsXCJ0eXBlQW5ub3RhdGlvblwiXSxUU01ldGhvZFNpZ25hdHVyZTpbXCJ0eXBlUGFyYW1ldGVyc1wiLFwia2V5XCIsXCJwYXJhbXNcIixcInJldHVyblR5cGVcIl0sVFNNb2R1bGVCbG9jazpbXCJib2R5XCJdLFRTTW9kdWxlRGVjbGFyYXRpb246W1wiaWRcIixcImJvZHlcIl0sVFNOYW1lZFR1cGxlTWVtYmVyOltcImxhYmVsXCIsXCJlbGVtZW50VHlwZVwiXSxUU05hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uOltcImlkXCJdLFRTTmV2ZXJLZXl3b3JkOltdLFRTTm9uTnVsbEV4cHJlc3Npb246W1wiZXhwcmVzc2lvblwiXSxUU051bGxLZXl3b3JkOltdLFRTTnVtYmVyS2V5d29yZDpbXSxUU09iamVjdEtleXdvcmQ6W10sVFNPcHRpb25hbFR5cGU6W1widHlwZUFubm90YXRpb25cIl0sVFNQYXJhbWV0ZXJQcm9wZXJ0eTpbXCJkZWNvcmF0b3JzXCIsXCJwYXJhbWV0ZXJcIl0sVFNQcml2YXRlS2V5d29yZDpbXSxUU1Byb3BlcnR5U2lnbmF0dXJlOltcInR5cGVBbm5vdGF0aW9uXCIsXCJrZXlcIixcImluaXRpYWxpemVyXCJdLFRTUHJvdGVjdGVkS2V5d29yZDpbXSxUU1B1YmxpY0tleXdvcmQ6W10sVFNRdWFsaWZpZWROYW1lOltcImxlZnRcIixcInJpZ2h0XCJdLFRTUmVhZG9ubHlLZXl3b3JkOltdLFRTUmVzdFR5cGU6W1widHlwZUFubm90YXRpb25cIl0sVFNTdGF0aWNLZXl3b3JkOltdLFRTU3RyaW5nS2V5d29yZDpbXSxUU1N5bWJvbEtleXdvcmQ6W10sVFNUZW1wbGF0ZUxpdGVyYWxUeXBlOltcInF1YXNpc1wiLFwidHlwZXNcIl0sVFNUaGlzVHlwZTpbXSxUU1R1cGxlVHlwZTpbXCJlbGVtZW50VHlwZXNcIl0sVFNUeXBlQWxpYXNEZWNsYXJhdGlvbjpbXCJpZFwiLFwidHlwZVBhcmFtZXRlcnNcIixcInR5cGVBbm5vdGF0aW9uXCJdLFRTVHlwZUFubm90YXRpb246W1widHlwZUFubm90YXRpb25cIl0sVFNUeXBlQXNzZXJ0aW9uOltcInR5cGVBbm5vdGF0aW9uXCIsXCJleHByZXNzaW9uXCJdLFRTVHlwZUxpdGVyYWw6W1wibWVtYmVyc1wiXSxUU1R5cGVPcGVyYXRvcjpbXCJ0eXBlQW5ub3RhdGlvblwiXSxUU1R5cGVQYXJhbWV0ZXI6W1wibmFtZVwiLFwiY29uc3RyYWludFwiLFwiZGVmYXVsdFwiXSxUU1R5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbjpbXCJwYXJhbXNcIl0sVFNUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbjpbXCJwYXJhbXNcIl0sVFNUeXBlUHJlZGljYXRlOltcInR5cGVBbm5vdGF0aW9uXCIsXCJwYXJhbWV0ZXJOYW1lXCJdLFRTVHlwZVF1ZXJ5OltcImV4cHJOYW1lXCJdLFRTVHlwZVJlZmVyZW5jZTpbXCJ0eXBlTmFtZVwiLFwidHlwZVBhcmFtZXRlcnNcIl0sVFNVbmRlZmluZWRLZXl3b3JkOltdLFRTVW5pb25UeXBlOltcInR5cGVzXCJdLFRTVW5rbm93bktleXdvcmQ6W10sVFNWb2lkS2V5d29yZDpbXX0scHI9b2kudW5pb25XaXRoKGtyKTtNLnZpc2l0b3JLZXlzPXByfX0pLHMzPU9hKHtcIm5vZGVfbW9kdWxlcy9AdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXNjcmlwdC1lc3RyZWUvbm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC92aXNpdG9yLWtleXMvZGlzdC9pbmRleC5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS52aXNpdG9yS2V5cz1NLmdldEtleXM9dm9pZCAwO3ZhciByZT1yeigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiZ2V0S2V5c1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByZS5nZXRLZXlzfX0pO3ZhciBWZT1peigpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwidmlzaXRvcktleXNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVmUudmlzaXRvcktleXN9fSl9fSksYzM9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L3NpbXBsZS10cmF2ZXJzZS5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS5zaW1wbGVUcmF2ZXJzZT12b2lkIDA7dmFyIHJlPXMzKCk7ZnVuY3Rpb24gVmUocHIpe3JldHVybiBwciE9PW51bGwmJnR5cGVvZiBwcj09XCJvYmplY3RcIiYmdHlwZW9mIHByLnR5cGU9PVwic3RyaW5nXCJ9ZnVuY3Rpb24gS2UocHIsTHIpe2xldCBhcj1wcltMci50eXBlXTtyZXR1cm4gYXIhPW51bGw/YXI6W119dmFyIG9pPWNsYXNze2NvbnN0cnVjdG9yKHByKXtsZXQgTHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOiExO3RoaXMuYWxsVmlzaXRvcktleXM9cmUudmlzaXRvcktleXMsdGhpcy5zZWxlY3RvcnM9cHIsdGhpcy5zZXRQYXJlbnRQb2ludGVycz1Mcn10cmF2ZXJzZShwcixMcil7aWYoIVZlKHByKSlyZXR1cm47dGhpcy5zZXRQYXJlbnRQb2ludGVycyYmKHByLnBhcmVudD1MciksXCJlbnRlclwiaW4gdGhpcy5zZWxlY3RvcnM/dGhpcy5zZWxlY3RvcnMuZW50ZXIocHIsTHIpOnByLnR5cGUgaW4gdGhpcy5zZWxlY3RvcnMmJnRoaXMuc2VsZWN0b3JzW3ByLnR5cGVdKHByLExyKTtsZXQgYXI9S2UodGhpcy5hbGxWaXNpdG9yS2V5cyxwcik7aWYoIShhci5sZW5ndGg8MSkpZm9yKGxldCBrZSBvZiBhcil7bGV0IGU9cHJba2VdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCBhIG9mIGUpdGhpcy50cmF2ZXJzZShhLHByKTtlbHNlIHRoaXMudHJhdmVyc2UoZSxwcil9fX07ZnVuY3Rpb24ga3IocHIsTHIpe2xldCBhcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITE7bmV3IG9pKExyLGFyKS50cmF2ZXJzZShwcix2b2lkIDApfU0uc2ltcGxlVHJhdmVyc2U9a3J9fSksdHo9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2FzdC1jb252ZXJ0ZXIuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uYXN0Q29udmVydGVyPXZvaWQgMDt2YXIgcmU9ZTMoKSxWZT1leigpLEtlPUExKCksb2k9YzMoKTtmdW5jdGlvbiBrcihwcixMcixhcil7bGV0e3BhcnNlRGlhZ25vc3RpY3M6a2V9PXByO2lmKGtlLmxlbmd0aCl0aHJvdygwLHJlLmNvbnZlcnRFcnJvcikoa2VbMF0pO2xldCBlPW5ldyByZS5Db252ZXJ0ZXIocHIse2Vycm9yT25Vbmtub3duQVNUVHlwZTpMci5lcnJvck9uVW5rbm93bkFTVFR5cGV8fCExLHNob3VsZFByZXNlcnZlTm9kZU1hcHM6YXJ9KSxhPWUuY29udmVydFByb2dyYW0oKTsoIUxyLnJhbmdlfHwhTHIubG9jKSYmKDAsb2kuc2ltcGxlVHJhdmVyc2UpKGEse2VudGVyOnc9PntMci5yYW5nZXx8ZGVsZXRlIHcucmFuZ2UsTHIubG9jfHxkZWxldGUgdy5sb2N9fSksTHIudG9rZW5zJiYoYS50b2tlbnM9KDAsS2UuY29udmVydFRva2VucykocHIpKSxMci5jb21tZW50JiYoYS5jb21tZW50cz0oMCxWZS5jb252ZXJ0Q29tbWVudHMpKHByLExyLmNvZGUpKTtsZXQgQz1lLmdldEFTVE1hcHMoKTtyZXR1cm57ZXN0cmVlOmEsYXN0TWFwczpDfX1NLmFzdENvbnZlcnRlcj1rcn19KSxNdj1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL2Rpc3QvY3JlYXRlLXByb2dyYW0vc2hhcmVkLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHAsbSxHLG9lKXtvZT09PXZvaWQgMCYmKG9lPUcpO3ZhciBmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSxHKTsoIWZ8fChcImdldFwiaW4gZj8hbS5fX2VzTW9kdWxlOmYud3JpdGFibGV8fGYuY29uZmlndXJhYmxlKSkmJihmPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBtW0ddfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwLG9lLGYpfTpmdW5jdGlvbihwLG0sRyxvZSl7b2U9PT12b2lkIDAmJihvZT1HKSxwW29lXT1tW0ddfSksVmU9TSYmTS5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHAsbSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6bX0pfTpmdW5jdGlvbihwLG0pe3AuZGVmYXVsdD1tfSksS2U9TSYmTS5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHApe2lmKHAmJnAuX19lc01vZHVsZSlyZXR1cm4gcDt2YXIgbT17fTtpZihwIT1udWxsKWZvcih2YXIgRyBpbiBwKUchPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHAsRykmJnJlKG0scCxHKTtyZXR1cm4gVmUobSxwKSxtfSxvaT1NJiZNLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24ocCl7cmV0dXJuIHAmJnAuX19lc01vZHVsZT9wOntkZWZhdWx0OnB9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmdldE1vZHVsZVJlc29sdmVyPU0uZ2V0QXN0RnJvbVByb2dyYW09TS5nZXRDYW5vbmljYWxGaWxlTmFtZT1NLmVuc3VyZUFic29sdXRlUGF0aD1NLmNyZWF0ZURlZmF1bHRDb21waWxlck9wdGlvbnNGcm9tRXh0cmE9TS5jYW5vbmljYWxEaXJuYW1lPU0uQ09SRV9DT01QSUxFUl9PUFRJT05TPXZvaWQgMDt2YXIga3I9b2koRnYoKSkscHI9S2UoX3UoKSksTHI9e25vRW1pdDohMCxub1VudXNlZExvY2FsczohMCxub1VudXNlZFBhcmFtZXRlcnM6ITB9O00uQ09SRV9DT01QSUxFUl9PUFRJT05TPUxyO3ZhciBhcj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sTHIpLHthbGxvd05vblRzRXh0ZW5zaW9uczohMCxhbGxvd0pzOiEwLGNoZWNrSnM6ITB9KTtmdW5jdGlvbiBrZShwKXtyZXR1cm4gcC5kZWJ1Z0xldmVsLmhhcyhcInR5cGVzY3JpcHRcIik/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGFyKSx7ZXh0ZW5kZWREaWFnbm9zdGljczohMH0pOmFyfU0uY3JlYXRlRGVmYXVsdENvbXBpbGVyT3B0aW9uc0Zyb21FeHRyYT1rZTt2YXIgZT1wci5zeXMhPT12b2lkIDA/cHIuc3lzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXM6ITAsYT1lP3A9PnA6cD0+cC50b0xvd2VyQ2FzZSgpO2Z1bmN0aW9uIEMocCl7bGV0IG09a3IuZGVmYXVsdC5ub3JtYWxpemUocCk7cmV0dXJuIG0uZW5kc1dpdGgoa3IuZGVmYXVsdC5zZXApJiYobT1tLnNsaWNlKDAsLTEpKSxhKG0pfU0uZ2V0Q2Fub25pY2FsRmlsZU5hbWU9QztmdW5jdGlvbiB3KHAsbSl7cmV0dXJuIGtyLmRlZmF1bHQuaXNBYnNvbHV0ZShwKT9wOmtyLmRlZmF1bHQuam9pbihtLnRzY29uZmlnUm9vdERpcnx8XCIvcHJldHRpZXItc2VjdXJpdHktZGlybmFtZS1wbGFjZWhvbGRlclwiLHApfU0uZW5zdXJlQWJzb2x1dGVQYXRoPXc7ZnVuY3Rpb24gQihwKXtyZXR1cm4ga3IuZGVmYXVsdC5kaXJuYW1lKHApfU0uY2Fub25pY2FsRGlybmFtZT1CO3ZhciBFPVtwci5FeHRlbnNpb24uRHRzLHByLkV4dGVuc2lvbi5EY3RzLHByLkV4dGVuc2lvbi5EbXRzXTtmdW5jdGlvbiBRKHApe3ZhciBtO3JldHVybiBwPyhtPUUuZmluZChHPT5wLmVuZHNXaXRoKEcpKSkhPT1udWxsJiZtIT09dm9pZCAwP206a3IuZGVmYXVsdC5leHRuYW1lKHApOm51bGx9ZnVuY3Rpb24gbGUocCxtKXtsZXQgRz1wLmdldFNvdXJjZUZpbGUobS5maWxlUGF0aCksb2U9UShtLmZpbGVQYXRoKSxmPVEoRz09bnVsbD92b2lkIDA6Ry5maWxlTmFtZSk7aWYob2U9PT1mKXJldHVybiBHJiZ7YXN0OkcscHJvZ3JhbTpwfX1NLmdldEFzdEZyb21Qcm9ncmFtPWxlO2Z1bmN0aW9uIE4ocCl7bGV0IG07dHJ5e3Rocm93IG5ldyBFcnJvcihcIkR5bmFtaWMgcmVxdWlyZSBpcyBub3Qgc3VwcG9ydGVkXCIpfWNhdGNoe2xldCBvZT1bXCJDb3VsZCBub3QgZmluZCB0aGUgcHJvdmlkZWQgcGFyc2VyT3B0aW9ucy5tb2R1bGVSZXNvbHZlci5cIixcIkhpbnQ6IHVzZSBhbiBhYnNvbHV0ZSBwYXRoIGlmIHlvdSBhcmUgbm90IGluIGNvbnRyb2wgb3ZlciB3aGVyZSB0aGUgRVNMaW50IGluc3RhbmNlIHJ1bnMuXCJdO3Rocm93IG5ldyBFcnJvcihvZS5qb2luKGBcbmApKX1yZXR1cm4gbX1NLmdldE1vZHVsZVJlc29sdmVyPU59fSksYXo9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2NyZWF0ZS1wcm9ncmFtL2NyZWF0ZURlZmF1bHRQcm9ncmFtLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGEsQyx3LEIpe0I9PT12b2lkIDAmJihCPXcpO3ZhciBFPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQyx3KTsoIUV8fChcImdldFwiaW4gRT8hQy5fX2VzTW9kdWxlOkUud3JpdGFibGV8fEUuY29uZmlndXJhYmxlKSkmJihFPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBDW3ddfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLEIsRSl9OmZ1bmN0aW9uKGEsQyx3LEIpe0I9PT12b2lkIDAmJihCPXcpLGFbQl09Q1t3XX0pLFZlPU0mJk0uX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihhLEMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOkN9KX06ZnVuY3Rpb24oYSxDKXthLmRlZmF1bHQ9Q30pLEtlPU0mJk0uX19pbXBvcnRTdGFyfHxmdW5jdGlvbihhKXtpZihhJiZhLl9fZXNNb2R1bGUpcmV0dXJuIGE7dmFyIEM9e307aWYoYSE9bnVsbClmb3IodmFyIHcgaW4gYSl3IT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHcpJiZyZShDLGEsdyk7cmV0dXJuIFZlKEMsYSksQ30sb2k9TSYmTS5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ZGVmYXVsdDphfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS5jcmVhdGVEZWZhdWx0UHJvZ3JhbT12b2lkIDA7dmFyIGtyPW9pKHdtKCkpLHByPW9pKEZ2KCkpLExyPUtlKF91KCkpLGFyPU12KCksa2U9KDAsa3IuZGVmYXVsdCkoXCJ0eXBlc2NyaXB0LWVzbGludDp0eXBlc2NyaXB0LWVzdHJlZTpjcmVhdGVEZWZhdWx0UHJvZ3JhbVwiKTtmdW5jdGlvbiBlKGEsQyl7aWYoa2UoXCJHZXR0aW5nIGRlZmF1bHQgcHJvZ3JhbSBmb3I6ICVzXCIsQy5maWxlUGF0aHx8XCJ1bm5hbWVkIGZpbGVcIiksIUMucHJvamVjdHN8fEMucHJvamVjdHMubGVuZ3RoIT09MSlyZXR1cm47bGV0IHc9Qy5wcm9qZWN0c1swXSxCPUxyLmdldFBhcnNlZENvbW1hbmRMaW5lT2ZDb25maWdGaWxlKHcsKDAsYXIuY3JlYXRlRGVmYXVsdENvbXBpbGVyT3B0aW9uc0Zyb21FeHRyYSkoQyksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LExyLnN5cykse29uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljOigpPT57fX0pKTtpZighQilyZXR1cm47bGV0IEU9THIuY3JlYXRlQ29tcGlsZXJIb3N0KEIub3B0aW9ucywhMCk7Qy5tb2R1bGVSZXNvbHZlciYmKEUucmVzb2x2ZU1vZHVsZU5hbWVzPSgwLGFyLmdldE1vZHVsZVJlc29sdmVyKShDLm1vZHVsZVJlc29sdmVyKS5yZXNvbHZlTW9kdWxlTmFtZXMpO2xldCBRPUUucmVhZEZpbGU7RS5yZWFkRmlsZT1wPT5wci5kZWZhdWx0Lm5vcm1hbGl6ZShwKT09PXByLmRlZmF1bHQubm9ybWFsaXplKEMuZmlsZVBhdGgpP2E6UShwKTtsZXQgbGU9THIuY3JlYXRlUHJvZ3JhbShbQy5maWxlUGF0aF0sQi5vcHRpb25zLEUpLE49bGUuZ2V0U291cmNlRmlsZShDLmZpbGVQYXRoKTtyZXR1cm4gTiYme2FzdDpOLHByb2dyYW06bGV9fU0uY3JlYXRlRGVmYXVsdFByb2dyYW09ZX19KSxyeD1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL2Rpc3QvY3JlYXRlLXByb2dyYW0vZ2V0U2NyaXB0S2luZC5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIHJlPU0mJk0uX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihrZSxlLGEsQyl7Qz09PXZvaWQgMCYmKEM9YSk7dmFyIHc9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGEpOyghd3x8KFwiZ2V0XCJpbiB3PyFlLl9fZXNNb2R1bGU6dy53cml0YWJsZXx8dy5jb25maWd1cmFibGUpKSYmKHc9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbYV19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGtlLEMsdyl9OmZ1bmN0aW9uKGtlLGUsYSxDKXtDPT09dm9pZCAwJiYoQz1hKSxrZVtDXT1lW2FdfSksVmU9TSYmTS5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGtlLGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShrZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSl9OmZ1bmN0aW9uKGtlLGUpe2tlLmRlZmF1bHQ9ZX0pLEtlPU0mJk0uX19pbXBvcnRTdGFyfHxmdW5jdGlvbihrZSl7aWYoa2UmJmtlLl9fZXNNb2R1bGUpcmV0dXJuIGtlO3ZhciBlPXt9O2lmKGtlIT1udWxsKWZvcih2YXIgYSBpbiBrZSlhIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrZSxhKSYmcmUoZSxrZSxhKTtyZXR1cm4gVmUoZSxrZSksZX0sb2k9TSYmTS5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGtlKXtyZXR1cm4ga2UmJmtlLl9fZXNNb2R1bGU/a2U6e2RlZmF1bHQ6a2V9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmdldExhbmd1YWdlVmFyaWFudD1NLmdldFNjcmlwdEtpbmQ9dm9pZCAwO3ZhciBrcj1vaShGdigpKSxwcj1LZShfdSgpKTtmdW5jdGlvbiBMcihrZSxlKXtzd2l0Y2goa3IuZGVmYXVsdC5leHRuYW1lKGtlKS50b0xvd2VyQ2FzZSgpKXtjYXNlIHByLkV4dGVuc2lvbi5KczpjYXNlIHByLkV4dGVuc2lvbi5DanM6Y2FzZSBwci5FeHRlbnNpb24uTWpzOnJldHVybiBwci5TY3JpcHRLaW5kLkpTO2Nhc2UgcHIuRXh0ZW5zaW9uLkpzeDpyZXR1cm4gcHIuU2NyaXB0S2luZC5KU1g7Y2FzZSBwci5FeHRlbnNpb24uVHM6Y2FzZSBwci5FeHRlbnNpb24uQ3RzOmNhc2UgcHIuRXh0ZW5zaW9uLk10czpyZXR1cm4gcHIuU2NyaXB0S2luZC5UUztjYXNlIHByLkV4dGVuc2lvbi5Uc3g6cmV0dXJuIHByLlNjcmlwdEtpbmQuVFNYO2Nhc2UgcHIuRXh0ZW5zaW9uLkpzb246cmV0dXJuIHByLlNjcmlwdEtpbmQuSlNPTjtkZWZhdWx0OnJldHVybiBlP3ByLlNjcmlwdEtpbmQuVFNYOnByLlNjcmlwdEtpbmQuVFN9fU0uZ2V0U2NyaXB0S2luZD1McjtmdW5jdGlvbiBhcihrZSl7c3dpdGNoKGtlKXtjYXNlIHByLlNjcmlwdEtpbmQuVFNYOmNhc2UgcHIuU2NyaXB0S2luZC5KU1g6Y2FzZSBwci5TY3JpcHRLaW5kLkpTOmNhc2UgcHIuU2NyaXB0S2luZC5KU09OOnJldHVybiBwci5MYW5ndWFnZVZhcmlhbnQuSlNYO2RlZmF1bHQ6cmV0dXJuIHByLkxhbmd1YWdlVmFyaWFudC5TdGFuZGFyZH19TS5nZXRMYW5ndWFnZVZhcmlhbnQ9YXJ9fSksbno9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2NyZWF0ZS1wcm9ncmFtL2NyZWF0ZUlzb2xhdGVkUHJvZ3JhbS5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIHJlPU0mJk0uX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihhLEMsdyxCKXtCPT09dm9pZCAwJiYoQj13KTt2YXIgRT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEMsdyk7KCFFfHwoXCJnZXRcImluIEU/IUMuX19lc01vZHVsZTpFLndyaXRhYmxlfHxFLmNvbmZpZ3VyYWJsZSkpJiYoRT17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQ1t3XX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxCLEUpfTpmdW5jdGlvbihhLEMsdyxCKXtCPT09dm9pZCAwJiYoQj13KSxhW0JdPUNbd119KSxWZT1NJiZNLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oYSxDKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTpDfSl9OmZ1bmN0aW9uKGEsQyl7YS5kZWZhdWx0PUN9KSxLZT1NJiZNLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oYSl7aWYoYSYmYS5fX2VzTW9kdWxlKXJldHVybiBhO3ZhciBDPXt9O2lmKGEhPW51bGwpZm9yKHZhciB3IGluIGEpdyE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSx3KSYmcmUoQyxhLHcpO3JldHVybiBWZShDLGEpLEN9LG9pPU0mJk0uX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5fX2VzTW9kdWxlP2E6e2RlZmF1bHQ6YX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uY3JlYXRlSXNvbGF0ZWRQcm9ncmFtPXZvaWQgMDt2YXIga3I9b2kod20oKSkscHI9S2UoX3UoKSksTHI9TXYoKSxhcj1yeCgpLGtlPSgwLGtyLmRlZmF1bHQpKFwidHlwZXNjcmlwdC1lc2xpbnQ6dHlwZXNjcmlwdC1lc3RyZWU6Y3JlYXRlSXNvbGF0ZWRQcm9ncmFtXCIpO2Z1bmN0aW9uIGUoYSxDKXtrZShcIkdldHRpbmcgaXNvbGF0ZWQgcHJvZ3JhbSBpbiAlcyBtb2RlIGZvcjogJXNcIixDLmpzeD9cIlRTWFwiOlwiVFNcIixDLmZpbGVQYXRoKTtsZXQgdz17ZmlsZUV4aXN0cygpe3JldHVybiEwfSxnZXRDYW5vbmljYWxGaWxlTmFtZSgpe3JldHVybiBDLmZpbGVQYXRofSxnZXRDdXJyZW50RGlyZWN0b3J5KCl7cmV0dXJuXCJcIn0sZ2V0RGlyZWN0b3JpZXMoKXtyZXR1cm5bXX0sZ2V0RGVmYXVsdExpYkZpbGVOYW1lKCl7cmV0dXJuXCJsaWIuZC50c1wifSxnZXROZXdMaW5lKCl7cmV0dXJuYFxuYH0sZ2V0U291cmNlRmlsZShRKXtyZXR1cm4gcHIuY3JlYXRlU291cmNlRmlsZShRLGEscHIuU2NyaXB0VGFyZ2V0LkxhdGVzdCwhMCwoMCxhci5nZXRTY3JpcHRLaW5kKShDLmZpbGVQYXRoLEMuanN4KSl9LHJlYWRGaWxlKCl7fSx1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCl7cmV0dXJuITB9LHdyaXRlRmlsZSgpe3JldHVybiBudWxsfX0sQj1wci5jcmVhdGVQcm9ncmFtKFtDLmZpbGVQYXRoXSxPYmplY3QuYXNzaWduKHtub1Jlc29sdmU6ITAsdGFyZ2V0OnByLlNjcmlwdFRhcmdldC5MYXRlc3QsanN4OkMuanN4P3ByLkpzeEVtaXQuUHJlc2VydmU6dm9pZCAwfSwoMCxMci5jcmVhdGVEZWZhdWx0Q29tcGlsZXJPcHRpb25zRnJvbUV4dHJhKShDKSksdyksRT1CLmdldFNvdXJjZUZpbGUoQy5maWxlUGF0aCk7aWYoIUUpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYW4gYXN0IHRvIGJlIHJldHVybmVkIGZvciB0aGUgc2luZ2xlLWZpbGUgaXNvbGF0ZWQgcHJvZ3JhbS5cIik7cmV0dXJue2FzdDpFLHByb2dyYW06Qn19TS5jcmVhdGVJc29sYXRlZFByb2dyYW09ZX19KSx1Mz1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL2Rpc3QvY3JlYXRlLXByb2dyYW0vY3JlYXRlV2F0Y2hQcm9ncmFtLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEosaWUsUixxKXtxPT09dm9pZCAwJiYocT1SKTt2YXIgTz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGllLFIpOyghT3x8KFwiZ2V0XCJpbiBPPyFpZS5fX2VzTW9kdWxlOk8ud3JpdGFibGV8fE8uY29uZmlndXJhYmxlKSkmJihPPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpZVtSXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSixxLE8pfTpmdW5jdGlvbihKLGllLFIscSl7cT09PXZvaWQgMCYmKHE9UiksSltxXT1pZVtSXX0pLFZlPU0mJk0uX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihKLGllKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoSixcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTppZX0pfTpmdW5jdGlvbihKLGllKXtKLmRlZmF1bHQ9aWV9KSxLZT1NJiZNLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oSil7aWYoSiYmSi5fX2VzTW9kdWxlKXJldHVybiBKO3ZhciBpZT17fTtpZihKIT1udWxsKWZvcih2YXIgUiBpbiBKKVIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEosUikmJnJlKGllLEosUik7cmV0dXJuIFZlKGllLEopLGllfSxvaT1NJiZNLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oSil7cmV0dXJuIEomJkouX19lc01vZHVsZT9KOntkZWZhdWx0Okp9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmdldFByb2dyYW1zRm9yUHJvamVjdHM9TS5jcmVhdGVXYXRjaFByb2dyYW09TS5jbGVhcldhdGNoQ2FjaGVzPXZvaWQgMDt2YXIga3I9b2kod20oKSkscHI9b2koZXgoKSksTHI9b2koUVQoKSksYXI9S2UoX3UoKSksa2U9TXYoKSxlPSgwLGtyLmRlZmF1bHQpKFwidHlwZXNjcmlwdC1lc2xpbnQ6dHlwZXNjcmlwdC1lc3RyZWU6Y3JlYXRlV2F0Y2hQcm9ncmFtXCIpLGE9bmV3IE1hcCxDPW5ldyBNYXAsdz1uZXcgTWFwLEI9bmV3IE1hcCxFPW5ldyBNYXAsUT1uZXcgTWFwO2Z1bmN0aW9uIGxlKCl7YS5jbGVhcigpLEMuY2xlYXIoKSx3LmNsZWFyKCksUS5jbGVhcigpLEIuY2xlYXIoKSxFLmNsZWFyKCl9TS5jbGVhcldhdGNoQ2FjaGVzPWxlO2Z1bmN0aW9uIE4oSil7cmV0dXJuKGllLFIpPT57bGV0IHE9KDAsa2UuZ2V0Q2Fub25pY2FsRmlsZU5hbWUpKGllKSxPPSgoKT0+e2xldCB2ZT1KLmdldChxKTtyZXR1cm4gdmV8fCh2ZT1uZXcgU2V0LEouc2V0KHEsdmUpKSx2ZX0pKCk7cmV0dXJuIE8uYWRkKFIpLHtjbG9zZTooKT0+e08uZGVsZXRlKFIpfX19fXZhciBwPXtjb2RlOlwiXCIsZmlsZVBhdGg6XCJcIn07ZnVuY3Rpb24gbShKKXt0aHJvdyBuZXcgRXJyb3IoYXIuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChKLm1lc3NhZ2VUZXh0LGFyLnN5cy5uZXdMaW5lKSl9ZnVuY3Rpb24gRyhKKXt2YXIgaWU7cmV0dXJuISgoaWU9YXIuc3lzKT09PW51bGx8fGllPT09dm9pZCAwKSYmaWUuY3JlYXRlSGFzaD9hci5zeXMuY3JlYXRlSGFzaChKKTpKfWZ1bmN0aW9uIG9lKEosaWUsUil7bGV0IHE9Ui5FWFBFUklNRU5UQUxfdXNlU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q/bmV3IFNldChpZS5nZXRTb3VyY2VGaWxlcygpLm1hcChPPT4oMCxrZS5nZXRDYW5vbmljYWxGaWxlTmFtZSkoTy5maWxlTmFtZSkpKTpuZXcgU2V0KGllLmdldFJvb3RGaWxlTmFtZXMoKS5tYXAoTz0+KDAsa2UuZ2V0Q2Fub25pY2FsRmlsZU5hbWUpKE8pKSk7cmV0dXJuIEIuc2V0KEoscSkscX1mdW5jdGlvbiBmKEosaWUsUil7bGV0IHE9KDAsa2UuZ2V0Q2Fub25pY2FsRmlsZU5hbWUpKGllKSxPPVtdO3AuY29kZT1KLHAuZmlsZVBhdGg9cTtsZXQgdmU9Qy5nZXQocSksZWU9RyhKKTtRLmdldChxKSE9PWVlJiZ2ZSYmdmUuc2l6ZT4wJiZ2ZS5mb3JFYWNoKGhlPT5oZShxLGFyLkZpbGVXYXRjaGVyRXZlbnRLaW5kLkNoYW5nZWQpKTtmb3IobGV0W2hlLEZdb2YgYS5lbnRyaWVzKCkpe2xldCB4PUIuZ2V0KGhlKSxYPW51bGw7aWYoeHx8KFg9Ri5nZXRQcm9ncmFtKCkuZ2V0UHJvZ3JhbSgpLHg9b2UoaGUsWCxSKSkseC5oYXMocSkpcmV0dXJuIGUoXCJGb3VuZCBleGlzdGluZyBwcm9ncmFtIGZvciBmaWxlLiAlc1wiLHEpLFg9WCE9bnVsbD9YOkYuZ2V0UHJvZ3JhbSgpLmdldFByb2dyYW0oKSxYLmdldFR5cGVDaGVja2VyKCksW1hdfWUoXCJGaWxlIGRpZCBub3QgYmVsb25nIHRvIGFueSBleGlzdGluZyBwcm9ncmFtcywgbW92aW5nIHRvIGNyZWF0ZS91cGRhdGUuICVzXCIscSk7Zm9yKGxldCBoZSBvZiBSLnByb2plY3RzKXtsZXQgRj1hLmdldChoZSk7aWYoRil7bGV0IEE9c2UoRixxLGhlKTtpZighQSljb250aW51ZTtpZihBLmdldFR5cGVDaGVja2VyKCksb2UoaGUsQSxSKS5oYXMocSkpcmV0dXJuIGUoXCJGb3VuZCB1cGRhdGVkIHByb2dyYW0gZm9yIGZpbGUuICVzXCIscSksW0FdO08ucHVzaChBKTtjb250aW51ZX1sZXQgeD1LKGhlLFIpO2Euc2V0KGhlLHgpO2xldCBYPXguZ2V0UHJvZ3JhbSgpLmdldFByb2dyYW0oKTtpZihYLmdldFR5cGVDaGVja2VyKCksb2UoaGUsWCxSKS5oYXMocSkpcmV0dXJuIGUoXCJGb3VuZCBwcm9ncmFtIGZvciBmaWxlLiAlc1wiLHEpLFtYXTtPLnB1c2goWCl9cmV0dXJuIE99TS5nZXRQcm9ncmFtc0ZvclByb2plY3RzPWY7dmFyIFQ9THIuZGVmYXVsdC5zYXRpc2ZpZXMoYXIudmVyc2lvbixcIj49My45LjAtYmV0YVwiLHtpbmNsdWRlUHJlcmVsZWFzZTohMH0pO2Z1bmN0aW9uIEsoSixpZSl7ZShcIkNyZWF0aW5nIHdhdGNoIHByb2dyYW0gZm9yICVzLlwiLEopO2xldCBSPWFyLmNyZWF0ZVdhdGNoQ29tcGlsZXJIb3N0KEosKDAsa2UuY3JlYXRlRGVmYXVsdENvbXBpbGVyT3B0aW9uc0Zyb21FeHRyYSkoaWUpLGFyLnN5cyxhci5jcmVhdGVBYnN0cmFjdEJ1aWxkZXIsbSwoKT0+e30pO2llLm1vZHVsZVJlc29sdmVyJiYoUi5yZXNvbHZlTW9kdWxlTmFtZXM9KDAsa2UuZ2V0TW9kdWxlUmVzb2x2ZXIpKGllLm1vZHVsZVJlc29sdmVyKS5yZXNvbHZlTW9kdWxlTmFtZXMpO2xldCBxPVIucmVhZEZpbGU7Ui5yZWFkRmlsZT0oaGUsRik9PntsZXQgeD0oMCxrZS5nZXRDYW5vbmljYWxGaWxlTmFtZSkoaGUpLFg9eD09PXAuZmlsZVBhdGg/cC5jb2RlOnEoeCxGKTtyZXR1cm4gWCE9PXZvaWQgMCYmUS5zZXQoeCxHKFgpKSxYfSxSLm9uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljPW0sUi5hZnRlclByb2dyYW1DcmVhdGU9aGU9PntsZXQgRj1oZS5nZXRDb25maWdGaWxlUGFyc2luZ0RpYWdub3N0aWNzKCkuZmlsdGVyKHg9PnguY2F0ZWdvcnk9PT1hci5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3ImJnguY29kZSE9PTE4MDAzKTtGLmxlbmd0aD4wJiZtKEZbMF0pfSxSLndhdGNoRmlsZT1OKEMpLFIud2F0Y2hEaXJlY3Rvcnk9Tih3KTtsZXQgTz1SLm9uQ2FjaGVkRGlyZWN0b3J5U3RydWN0dXJlSG9zdENyZWF0ZTtSLm9uQ2FjaGVkRGlyZWN0b3J5U3RydWN0dXJlSG9zdENyZWF0ZT1oZT0+e2xldCBGPWhlLnJlYWREaXJlY3Rvcnk7aGUucmVhZERpcmVjdG9yeT0oeCxYLCQsQSx5KT0+Rih4LFg/WC5jb25jYXQoaWUuZXh0cmFGaWxlRXh0ZW5zaW9ucyk6dm9pZCAwLCQsQSx5KSxPKGhlKX0sUi5leHRyYUZpbGVFeHRlbnNpb25zPWllLmV4dHJhRmlsZUV4dGVuc2lvbnMubWFwKGhlPT4oe2V4dGVuc2lvbjpoZSxpc01peGVkQ29udGVudDohMCxzY3JpcHRLaW5kOmFyLlNjcmlwdEtpbmQuRGVmZXJyZWR9KSksUi50cmFjZT1lLFIudXNlU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q9KCk9PmllLkVYUEVSSU1FTlRBTF91c2VTb3VyY2VPZlByb2plY3RSZWZlcmVuY2VSZWRpcmVjdDtsZXQgdmU7VD8oUi5zZXRUaW1lb3V0PXZvaWQgMCxSLmNsZWFyVGltZW91dD12b2lkIDApOihlKFwiUnVubmluZyB3aXRob3V0IHRpbWVvdXQgZml4XCIpLFIuc2V0VGltZW91dD1mdW5jdGlvbihoZSxGKXtmb3IodmFyIHg9YXJndW1lbnRzLmxlbmd0aCxYPW5ldyBBcnJheSh4PjI/eC0yOjApLCQ9MjskPHg7JCsrKVhbJC0yXT1hcmd1bWVudHNbJF07cmV0dXJuIHZlPWhlLmJpbmQodm9pZCAwLC4uLlgpLHZlfSxSLmNsZWFyVGltZW91dD0oKT0+e3ZlPXZvaWQgMH0pO2xldCBlZT1hci5jcmVhdGVXYXRjaFByb2dyYW0oUik7aWYoIVQpe2xldCBoZT1lZS5nZXRQcm9ncmFtO2VlLmdldFByb2dyYW09KCk9Pih2ZSYmdmUoKSx2ZT12b2lkIDAsaGUuY2FsbChlZSkpfXJldHVybiBlZX1NLmNyZWF0ZVdhdGNoUHJvZ3JhbT1LO2Z1bmN0aW9uIGIoSil7bGV0IFI9cHIuZGVmYXVsdC5zdGF0U3luYyhKKS5tdGltZU1zLHE9RS5nZXQoSik7cmV0dXJuIEUuc2V0KEosUikscT09PXZvaWQgMD8hMTpNYXRoLmFicyhxLVIpPk51bWJlci5FUFNJTE9OfWZ1bmN0aW9uIHNlKEosaWUsUil7bGV0IHE9Si5nZXRQcm9ncmFtKCkuZ2V0UHJvZ3JhbSgpO2lmKEV1LmVudi5UU0VTVFJFRV9OT19JTlZBTElEQVRJT049PT1cInRydWVcIilyZXR1cm4gcTtiKFIpJiYoZShcInRzY29uZmlnIGhhcyBjaGFuZ2VkIC0gdHJpZ2dlcmluZyBwcm9ncmFtIHVwZGF0ZS4gJXNcIixSKSxDLmdldChSKS5mb3JFYWNoKEE9PkEoUixhci5GaWxlV2F0Y2hlckV2ZW50S2luZC5DaGFuZ2VkKSksQi5kZWxldGUoUikpO2xldCBPPXEuZ2V0U291cmNlRmlsZShpZSk7aWYoTylyZXR1cm4gcTtlKFwiRmlsZSB3YXMgbm90IGZvdW5kIGluIHByb2dyYW0gLSB0cmlnZ2VyaW5nIGZvbGRlciB1cGRhdGUuICVzXCIsaWUpO2xldCB2ZT0oMCxrZS5jYW5vbmljYWxEaXJuYW1lKShpZSksZWU9bnVsbCxoZT12ZSxGPSExO2Zvcig7ZWUhPT1oZTspe2VlPWhlO2xldCBBPXcuZ2V0KGVlKTtBJiYoQS5mb3JFYWNoKHk9Pnt2ZSE9PWVlJiZ5KHZlLGFyLkZpbGVXYXRjaGVyRXZlbnRLaW5kLkNoYW5nZWQpLHkoZWUsYXIuRmlsZVdhdGNoZXJFdmVudEtpbmQuQ2hhbmdlZCl9KSxGPSEwKSxoZT0oMCxrZS5jYW5vbmljYWxEaXJuYW1lKShlZSl9aWYoIUYpcmV0dXJuIGUoXCJObyBjYWxsYmFjayBmb3VuZCBmb3IgZmlsZSwgbm90IHBhcnQgb2YgdGhpcyBwcm9ncmFtLiAlc1wiLGllKSxudWxsO2lmKEIuZGVsZXRlKFIpLHE9Si5nZXRQcm9ncmFtKCkuZ2V0UHJvZ3JhbSgpLE89cS5nZXRTb3VyY2VGaWxlKGllKSxPKXJldHVybiBxO2UoXCJGaWxlIHdhcyBzdGlsbCBub3QgZm91bmQgaW4gcHJvZ3JhbSBhZnRlciBkaXJlY3RvcnkgdXBkYXRlIC0gY2hlY2tpbmcgZmlsZSBkZWxldGlvbnMuICVzXCIsaWUpO2xldCBYPXEuZ2V0Um9vdEZpbGVOYW1lcygpLmZpbmQoQT0+IXByLmRlZmF1bHQuZXhpc3RzU3luYyhBKSk7aWYoIVgpcmV0dXJuIG51bGw7bGV0ICQ9Qy5nZXQoKDAsa2UuZ2V0Q2Fub25pY2FsRmlsZU5hbWUpKFgpKTtyZXR1cm4gJD8oZShcIk1hcmtpbmcgZmlsZSBhcyBkZWxldGVkLiAlc1wiLFgpLCQuZm9yRWFjaChBPT5BKFgsYXIuRmlsZVdhdGNoZXJFdmVudEtpbmQuRGVsZXRlZCkpLEIuZGVsZXRlKFIpLHE9Si5nZXRQcm9ncmFtKCkuZ2V0UHJvZ3JhbSgpLE89cS5nZXRTb3VyY2VGaWxlKGllKSxPP3E6KGUoXCJGaWxlIHdhcyBzdGlsbCBub3QgZm91bmQgaW4gcHJvZ3JhbSBhZnRlciBkZWxldGlvbiBjaGVjaywgYXNzdW1pbmcgaXQgaXMgbm90IHBhcnQgb2YgdGhpcyBwcm9ncmFtLiAlc1wiLGllKSxudWxsKSk6KGUoXCJDb3VsZCBub3QgZmluZCB3YXRjaCBjYWxsYmFja3MgZm9yIHJvb3QgZmlsZS4gJXNcIixYKSxxKX19fSksb3o9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2NyZWF0ZS1wcm9ncmFtL2NyZWF0ZVByb2plY3RQcm9ncmFtLmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEIsRSxRLGxlKXtsZT09PXZvaWQgMCYmKGxlPVEpO3ZhciBOPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRSxRKTsoIU58fChcImdldFwiaW4gTj8hRS5fX2VzTW9kdWxlOk4ud3JpdGFibGV8fE4uY29uZmlndXJhYmxlKSkmJihOPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBFW1FdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLGxlLE4pfTpmdW5jdGlvbihCLEUsUSxsZSl7bGU9PT12b2lkIDAmJihsZT1RKSxCW2xlXT1FW1FdfSksVmU9TSYmTS5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEIsRSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6RX0pfTpmdW5jdGlvbihCLEUpe0IuZGVmYXVsdD1FfSksS2U9TSYmTS5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKEIpe2lmKEImJkIuX19lc01vZHVsZSlyZXR1cm4gQjt2YXIgRT17fTtpZihCIT1udWxsKWZvcih2YXIgUSBpbiBCKVEhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEIsUSkmJnJlKEUsQixRKTtyZXR1cm4gVmUoRSxCKSxFfSxvaT1NJiZNLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oQil7cmV0dXJuIEImJkIuX19lc01vZHVsZT9COntkZWZhdWx0OkJ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmNyZWF0ZVByb2plY3RQcm9ncmFtPXZvaWQgMDt2YXIga3I9b2kod20oKSkscHI9b2koRnYoKSksTHI9S2UoX3UoKSksYXI9dTMoKSxrZT1BMSgpLGU9TXYoKSxhPSgwLGtyLmRlZmF1bHQpKFwidHlwZXNjcmlwdC1lc2xpbnQ6dHlwZXNjcmlwdC1lc3RyZWU6Y3JlYXRlUHJvamVjdFByb2dyYW1cIiksQz1bTHIuRXh0ZW5zaW9uLlRzLExyLkV4dGVuc2lvbi5Uc3gsTHIuRXh0ZW5zaW9uLkpzLExyLkV4dGVuc2lvbi5Kc3gsTHIuRXh0ZW5zaW9uLk1qcyxMci5FeHRlbnNpb24uTXRzLExyLkV4dGVuc2lvbi5DanMsTHIuRXh0ZW5zaW9uLkN0c107ZnVuY3Rpb24gdyhCLEUsUSl7YShcIkNyZWF0aW5nIHByb2plY3QgcHJvZ3JhbSBmb3I6ICVzXCIsUS5maWxlUGF0aCk7bGV0IGxlPSgwLGtlLmZpcnN0RGVmaW5lZCkoKDAsYXIuZ2V0UHJvZ3JhbXNGb3JQcm9qZWN0cykoQixRLmZpbGVQYXRoLFEpLE49PigwLGUuZ2V0QXN0RnJvbVByb2dyYW0pKE4sUSkpO2lmKCFsZSYmIUUpe2xldCBOPVsnXCJwYXJzZXJPcHRpb25zLnByb2plY3RcIiBoYXMgYmVlbiBzZXQgZm9yIEB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXIuJyxcIlRoZSBmaWxlIGRvZXMgbm90IG1hdGNoIHlvdXIgcHJvamVjdCBjb25maWc6IFwiLmNvbmNhdChwci5kZWZhdWx0LnJlbGF0aXZlKFEudHNjb25maWdSb290RGlyfHxcIi9wcmV0dGllci1zZWN1cml0eS1kaXJuYW1lLXBsYWNlaG9sZGVyXCIsUS5maWxlUGF0aCksXCIuXCIpXSxwPSExLG09US5leHRyYUZpbGVFeHRlbnNpb25zfHxbXTttLmZvckVhY2gob2U9PntvZS5zdGFydHNXaXRoKFwiLlwiKXx8Ti5wdXNoKCdGb3VuZCB1bmV4cGVjdGVkIGV4dGVuc2lvbiBcIicuY29uY2F0KG9lLCdcIiBzcGVjaWZpZWQgd2l0aCB0aGUgXCJleHRyYUZpbGVFeHRlbnNpb25zXCIgb3B0aW9uLiBEaWQgeW91IG1lYW4gXCIuJykuY29uY2F0KG9lLCdcIj8nKSksQy5pbmNsdWRlcyhvZSkmJk4ucHVzaCgnWW91IHVubmVjZXNzYXJpbHkgaW5jbHVkZWQgdGhlIGV4dGVuc2lvbiBcIicuY29uY2F0KG9lLCdcIiB3aXRoIHRoZSBcImV4dHJhRmlsZUV4dGVuc2lvbnNcIiBvcHRpb24uIFRoaXMgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgcGFyc2VyIGJ5IGRlZmF1bHQuJykpfSk7bGV0IEc9cHIuZGVmYXVsdC5leHRuYW1lKFEuZmlsZVBhdGgpO2lmKCFDLmluY2x1ZGVzKEcpKXtsZXQgb2U9XCJUaGUgZXh0ZW5zaW9uIGZvciB0aGUgZmlsZSAoXCIuY29uY2F0KEcsXCIpIGlzIG5vbi1zdGFuZGFyZFwiKTttLmxlbmd0aD4wP20uaW5jbHVkZXMoRyl8fChOLnB1c2goXCJcIi5jb25jYXQob2UsJy4gSXQgc2hvdWxkIGJlIGFkZGVkIHRvIHlvdXIgZXhpc3RpbmcgXCJwYXJzZXJPcHRpb25zLmV4dHJhRmlsZUV4dGVuc2lvbnNcIi4nKSkscD0hMCk6KE4ucHVzaChcIlwiLmNvbmNhdChvZSwnLiBZb3Ugc2hvdWxkIGFkZCBcInBhcnNlck9wdGlvbnMuZXh0cmFGaWxlRXh0ZW5zaW9uc1wiIHRvIHlvdXIgY29uZmlnLicpKSxwPSEwKX10aHJvdyBwfHxOLnB1c2goXCJUaGUgZmlsZSBtdXN0IGJlIGluY2x1ZGVkIGluIGF0IGxlYXN0IG9uZSBvZiB0aGUgcHJvamVjdHMgcHJvdmlkZWQuXCIpLG5ldyBFcnJvcihOLmpvaW4oYFxuYCkpfXJldHVybiBsZX1NLmNyZWF0ZVByb2plY3RQcm9ncmFtPXd9fSksc3o9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2NyZWF0ZS1wcm9ncmFtL2NyZWF0ZVNvdXJjZUZpbGUuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciByZT1NJiZNLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSxhLEMsdyl7dz09PXZvaWQgMCYmKHc9Qyk7dmFyIEI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLEMpOyghQnx8KFwiZ2V0XCJpbiBCPyFhLl9fZXNNb2R1bGU6Qi53cml0YWJsZXx8Qi5jb25maWd1cmFibGUpKSYmKEI9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFbQ119fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdyxCKX06ZnVuY3Rpb24oZSxhLEMsdyl7dz09PXZvaWQgMCYmKHc9QyksZVt3XT1hW0NdfSksVmU9TSYmTS5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6YX0pfTpmdW5jdGlvbihlLGEpe2UuZGVmYXVsdD1hfSksS2U9TSYmTS5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgYT17fTtpZihlIT1udWxsKWZvcih2YXIgQyBpbiBlKUMhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsQykmJnJlKGEsZSxDKTtyZXR1cm4gVmUoYSxlKSxhfSxvaT1NJiZNLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmNyZWF0ZVNvdXJjZUZpbGU9dm9pZCAwO3ZhciBrcj1vaSh3bSgpKSxwcj1LZShfdSgpKSxMcj1yeCgpLGFyPSgwLGtyLmRlZmF1bHQpKFwidHlwZXNjcmlwdC1lc2xpbnQ6dHlwZXNjcmlwdC1lc3RyZWU6Y3JlYXRlU291cmNlRmlsZVwiKTtmdW5jdGlvbiBrZShlLGEpe3JldHVybiBhcihcIkdldHRpbmcgQVNUIHdpdGhvdXQgdHlwZSBpbmZvcm1hdGlvbiBpbiAlcyBtb2RlIGZvcjogJXNcIixhLmpzeD9cIlRTWFwiOlwiVFNcIixhLmZpbGVQYXRoKSxwci5jcmVhdGVTb3VyY2VGaWxlKGEuZmlsZVBhdGgsZSxwci5TY3JpcHRUYXJnZXQuTGF0ZXN0LCEwLCgwLExyLmdldFNjcmlwdEtpbmQpKGEuZmlsZVBhdGgsYS5qc3gpKX1NLmNyZWF0ZVNvdXJjZUZpbGU9a2V9fSksY3o9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L3NlbWFudGljLW9yLXN5bnRhY3RpYy1lcnJvcnMuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE0uZ2V0Rmlyc3RTZW1hbnRpY09yU3ludGFjdGljRXJyb3I9dm9pZCAwO3ZhciByZT1fdSgpO2Z1bmN0aW9uIFZlKGtyLHByKXt0cnl7bGV0IExyPUtlKGtyLmdldFN5bnRhY3RpY0RpYWdub3N0aWNzKHByKSk7aWYoTHIubGVuZ3RoKXJldHVybiBvaShMclswXSk7bGV0IGFyPUtlKGtyLmdldFNlbWFudGljRGlhZ25vc3RpY3MocHIpKTtyZXR1cm4gYXIubGVuZ3RoP29pKGFyWzBdKTp2b2lkIDB9Y2F0Y2goTHIpe2NvbnNvbGUud2FybignV2FybmluZyBGcm9tIFRTQzogXCInLmNvbmNhdChMci5tZXNzYWdlKSk7cmV0dXJufX1NLmdldEZpcnN0U2VtYW50aWNPclN5bnRhY3RpY0Vycm9yPVZlO2Z1bmN0aW9uIEtlKGtyKXtyZXR1cm4ga3IuZmlsdGVyKHByPT57c3dpdGNoKHByLmNvZGUpe2Nhc2UgMTAxMzpjYXNlIDEwMTQ6Y2FzZSAxMDQ0OmNhc2UgMTA0NTpjYXNlIDEwNDg6Y2FzZSAxMDQ5OmNhc2UgMTA3MDpjYXNlIDEwNzE6Y2FzZSAxMDg1OmNhc2UgMTA5MDpjYXNlIDEwOTY6Y2FzZSAxMDk3OmNhc2UgMTA5ODpjYXNlIDEwOTk6Y2FzZSAxMTE3OmNhc2UgMTEyMTpjYXNlIDExMjM6Y2FzZSAxMTQxOmNhc2UgMTE2MjpjYXNlIDExNjQ6Y2FzZSAxMTcyOmNhc2UgMTE3MzpjYXNlIDExNzU6Y2FzZSAxMTc2OmNhc2UgMTE5MDpjYXNlIDExOTY6Y2FzZSAxMjAwOmNhc2UgMTIwNjpjYXNlIDEyMTE6Y2FzZSAxMjQyOmNhc2UgMTI0NjpjYXNlIDEyNTU6Y2FzZSAxMzA4OmNhc2UgMjM2NDpjYXNlIDIzNjk6Y2FzZSAyNDUyOmNhc2UgMjQ2MjpjYXNlIDgwMTc6Y2FzZSAxNzAxMjpjYXNlIDE3MDEzOnJldHVybiEwfXJldHVybiExfSl9ZnVuY3Rpb24gb2koa3Ipe3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sa3IpLHttZXNzYWdlOigwLHJlLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQpKGtyLm1lc3NhZ2VUZXh0LHJlLnN5cy5uZXdMaW5lKX0pfX19KSxsMz1PYSh7XCJub2RlX21vZHVsZXMvQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlL2Rpc3QvY3JlYXRlLXByb2dyYW0vdXNlUHJvdmlkZWRQcm9ncmFtcy5qc1wiKE0pe1widXNlIHN0cmljdFwiO0VhKCk7dmFyIHJlPU0mJk0uX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihCLEUsUSxsZSl7bGU9PT12b2lkIDAmJihsZT1RKTt2YXIgTj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEUsUSk7KCFOfHwoXCJnZXRcImluIE4/IUUuX19lc01vZHVsZTpOLndyaXRhYmxlfHxOLmNvbmZpZ3VyYWJsZSkpJiYoTj17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRVtRXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQixsZSxOKX06ZnVuY3Rpb24oQixFLFEsbGUpe2xlPT09dm9pZCAwJiYobGU9USksQltsZV09RVtRXX0pLFZlPU0mJk0uX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihCLEUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOkV9KX06ZnVuY3Rpb24oQixFKXtCLmRlZmF1bHQ9RX0pLEtlPU0mJk0uX19pbXBvcnRTdGFyfHxmdW5jdGlvbihCKXtpZihCJiZCLl9fZXNNb2R1bGUpcmV0dXJuIEI7dmFyIEU9e307aWYoQiE9bnVsbClmb3IodmFyIFEgaW4gQilRIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCLFEpJiZyZShFLEIsUSk7cmV0dXJuIFZlKEUsQiksRX0sb2k9TSYmTS5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKEIpe3JldHVybiBCJiZCLl9fZXNNb2R1bGU/Qjp7ZGVmYXVsdDpCfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksTS5jcmVhdGVQcm9ncmFtRnJvbUNvbmZpZ0ZpbGU9TS51c2VQcm92aWRlZFByb2dyYW1zPXZvaWQgMDt2YXIga3I9b2kod20oKSkscHI9S2UoZXgoKSksTHI9S2UoRnYoKSksYXI9S2UoX3UoKSksa2U9TXYoKSxlPSgwLGtyLmRlZmF1bHQpKFwidHlwZXNjcmlwdC1lc2xpbnQ6dHlwZXNjcmlwdC1lc3RyZWU6dXNlUHJvdmlkZWRQcm9ncmFtXCIpO2Z1bmN0aW9uIGEoQixFKXtlKFwiUmV0cmlldmluZyBhc3QgZm9yICVzIGZyb20gcHJvdmlkZWQgcHJvZ3JhbSBpbnN0YW5jZShzKVwiLEUuZmlsZVBhdGgpO2xldCBRO2ZvcihsZXQgbGUgb2YgQilpZihRPSgwLGtlLmdldEFzdEZyb21Qcm9ncmFtKShsZSxFKSxRKWJyZWFrO2lmKCFRKXtsZXQgbGU9THIucmVsYXRpdmUoRS50c2NvbmZpZ1Jvb3REaXJ8fFwiL3ByZXR0aWVyLXNlY3VyaXR5LWRpcm5hbWUtcGxhY2Vob2xkZXJcIixFLmZpbGVQYXRoKSxOPVsnXCJwYXJzZXJPcHRpb25zLnByb2dyYW1zXCIgaGFzIGJlZW4gcHJvdmlkZWQgZm9yIEB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXIuJyxcIlRoZSBmaWxlIHdhcyBub3QgZm91bmQgaW4gYW55IG9mIHRoZSBwcm92aWRlZCBwcm9ncmFtIGluc3RhbmNlKHMpOiBcIi5jb25jYXQobGUpXTt0aHJvdyBuZXcgRXJyb3IoTi5qb2luKGBcbmApKX1yZXR1cm4gUS5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCksUX1NLnVzZVByb3ZpZGVkUHJvZ3JhbXM9YTtmdW5jdGlvbiBDKEIsRSl7aWYoYXIuc3lzPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihcImBjcmVhdGVQcm9ncmFtRnJvbUNvbmZpZ0ZpbGVgIGlzIG9ubHkgc3VwcG9ydGVkIGluIGEgTm9kZS1saWtlIGVudmlyb25tZW50LlwiKTtsZXQgbGU9YXIuZ2V0UGFyc2VkQ29tbWFuZExpbmVPZkNvbmZpZ0ZpbGUoQixrZS5DT1JFX0NPTVBJTEVSX09QVElPTlMse29uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljOnA9Pnt0aHJvdyBuZXcgRXJyb3IodyhbcF0pKX0sZmlsZUV4aXN0czpwci5leGlzdHNTeW5jLGdldEN1cnJlbnREaXJlY3Rvcnk6KCk9PkUmJkxyLnJlc29sdmUoRSl8fFwiL3ByZXR0aWVyLXNlY3VyaXR5LWRpcm5hbWUtcGxhY2Vob2xkZXJcIixyZWFkRGlyZWN0b3J5OmFyLnN5cy5yZWFkRGlyZWN0b3J5LHJlYWRGaWxlOnA9PnByLnJlYWRGaWxlU3luYyhwLFwidXRmLThcIiksdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczphci5zeXMudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lc30pO2lmKGxlLmVycm9ycy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKHcobGUuZXJyb3JzKSk7bGV0IE49YXIuY3JlYXRlQ29tcGlsZXJIb3N0KGxlLm9wdGlvbnMsITApO3JldHVybiBhci5jcmVhdGVQcm9ncmFtKGxlLmZpbGVOYW1lcyxsZS5vcHRpb25zLE4pfU0uY3JlYXRlUHJvZ3JhbUZyb21Db25maWdGaWxlPUM7ZnVuY3Rpb24gdyhCKXtyZXR1cm4gYXIuZm9ybWF0RGlhZ25vc3RpY3MoQix7Z2V0Q2Fub25pY2FsRmlsZU5hbWU6RT0+RSxnZXRDdXJyZW50RGlyZWN0b3J5OkV1LmN3ZCxnZXROZXdMaW5lOigpPT5gXG5gfSl9fX0pLHV6PU9hKHtcIm5vZGVfbW9kdWxlcy9AdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXNjcmlwdC1lc3RyZWUvZGlzdC9wYXJzZXIuanNcIihNKXtcInVzZSBzdHJpY3RcIjtFYSgpO3ZhciByZT1NJiZNLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oeSxWLEwsUCl7UD09PXZvaWQgMCYmKFA9TCk7dmFyIGs9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihWLEwpOygha3x8KFwiZ2V0XCJpbiBrPyFWLl9fZXNNb2R1bGU6ay53cml0YWJsZXx8ay5jb25maWd1cmFibGUpKSYmKGs9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFZbTF19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHksUCxrKX06ZnVuY3Rpb24oeSxWLEwsUCl7UD09PXZvaWQgMCYmKFA9TCkseVtQXT1WW0xdfSksVmU9TSYmTS5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHksVil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHksXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6Vn0pfTpmdW5jdGlvbih5LFYpe3kuZGVmYXVsdD1WfSksS2U9TSYmTS5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHkpe2lmKHkmJnkuX19lc01vZHVsZSlyZXR1cm4geTt2YXIgVj17fTtpZih5IT1udWxsKWZvcih2YXIgTCBpbiB5KUwhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHksTCkmJnJlKFYseSxMKTtyZXR1cm4gVmUoVix5KSxWfSxvaT1NJiZNLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oeSl7cmV0dXJuIHkmJnkuX19lc01vZHVsZT95OntkZWZhdWx0Onl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLmNsZWFyUGFyc2VBbmRHZW5lcmF0ZVNlcnZpY2VzQ2FsbHM9TS5jbGVhclByb2dyYW1DYWNoZT1NLnBhcnNlV2l0aE5vZGVNYXBzPU0ucGFyc2VBbmRHZW5lcmF0ZVNlcnZpY2VzPU0ucGFyc2U9dm9pZCAwO3ZhciBrcj1vaSh3bSgpKSxwcj1vaShWaigpKSxMcj1vaShRVCgpKSxhcj1GdigpLGtlPUtlKF91KCkpLGU9dHooKSxhPWUzKCksQz1heigpLHc9bnooKSxCPW96KCksRT1zeigpLFE9Y3ooKSxsZT1NdigpLE49bDMoKSxwPSgwLGtyLmRlZmF1bHQpKFwidHlwZXNjcmlwdC1lc2xpbnQ6dHlwZXNjcmlwdC1lc3RyZWU6cGFyc2VyXCIpLG09XCI+PTMuMy4xIDw0LjguMFwiLEc9W10sb2U9a2UudmVyc2lvbixmPUxyLmRlZmF1bHQuc2F0aXNmaWVzKG9lLFttXS5jb25jYXQoRykuam9pbihcIiB8fCBcIikpLFQsSz0hMSxiPW5ldyBNYXA7ZnVuY3Rpb24gc2UoKXtiLmNsZWFyKCl9TS5jbGVhclByb2dyYW1DYWNoZT1zZTtmdW5jdGlvbiBKKHkpe3JldHVybiB0eXBlb2YgeSE9XCJzdHJpbmdcIj9TdHJpbmcoeSk6eX1mdW5jdGlvbiBpZSh5LFYsTCxQKXtyZXR1cm4gViYmKDAsTi51c2VQcm92aWRlZFByb2dyYW1zKShWLFQpfHxMJiYoMCxCLmNyZWF0ZVByb2plY3RQcm9ncmFtKSh5LFAsVCl8fEwmJlAmJigwLEMuY3JlYXRlRGVmYXVsdFByb2dyYW0pKHksVCl8fCgwLHcuY3JlYXRlSXNvbGF0ZWRQcm9ncmFtKSh5LFQpfWZ1bmN0aW9uIFIoKXtsZXR7anN4Onl9PWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4geT9cImVzdHJlZS50c3hcIjpcImVzdHJlZS50c1wifWZ1bmN0aW9uIHEoKXtUPXtjb2RlOlwiXCIsY29tbWVudDohMSxjb21tZW50czpbXSxjcmVhdGVEZWZhdWx0UHJvZ3JhbTohMSxkZWJ1Z0xldmVsOm5ldyBTZXQsZXJyb3JPblR5cGVTY3JpcHRTeW50YWN0aWNBbmRTZW1hbnRpY0lzc3VlczohMSxlcnJvck9uVW5rbm93bkFTVFR5cGU6ITEsRVhQRVJJTUVOVEFMX3VzZVNvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0OiExLGV4dHJhRmlsZUV4dGVuc2lvbnM6W10sZmlsZVBhdGg6UigpLGpzeDohMSxsb2M6ITEsbG9nOmNvbnNvbGUubG9nLHByZXNlcnZlTm9kZU1hcHM6ITAscHJvZ3JhbXM6bnVsbCxwcm9qZWN0czpbXSxyYW5nZTohMSxzdHJpY3Q6ITEsdG9rZW5zOm51bGwsdHNjb25maWdSb290RGlyOlwiL3ByZXR0aWVyLXNlY3VyaXR5LWRpcm5hbWUtcGxhY2Vob2xkZXJcIixzaW5nbGVSdW46ITEsbW9kdWxlUmVzb2x2ZXI6XCJcIn19ZnVuY3Rpb24gTyh5KXt2YXIgVjtpZih5LmRlYnVnTGV2ZWw9PT0hMD9ULmRlYnVnTGV2ZWw9bmV3IFNldChbXCJ0eXBlc2NyaXB0LWVzbGludFwiXSk6QXJyYXkuaXNBcnJheSh5LmRlYnVnTGV2ZWwpJiYoVC5kZWJ1Z0xldmVsPW5ldyBTZXQoeS5kZWJ1Z0xldmVsKSksVC5kZWJ1Z0xldmVsLnNpemU+MCl7bGV0IEw9W107VC5kZWJ1Z0xldmVsLmhhcyhcInR5cGVzY3JpcHQtZXNsaW50XCIpJiZMLnB1c2goXCJ0eXBlc2NyaXB0LWVzbGludDoqXCIpLChULmRlYnVnTGV2ZWwuaGFzKFwiZXNsaW50XCIpfHxrci5kZWZhdWx0LmVuYWJsZWQoXCJlc2xpbnQ6KiwtZXNsaW50OmNvZGUtcGF0aFwiKSkmJkwucHVzaChcImVzbGludDoqLC1lc2xpbnQ6Y29kZS1wYXRoXCIpLGtyLmRlZmF1bHQuZW5hYmxlKEwuam9pbihcIixcIikpfWlmKFQucmFuZ2U9dHlwZW9mIHkucmFuZ2U9PVwiYm9vbGVhblwiJiZ5LnJhbmdlLFQubG9jPXR5cGVvZiB5LmxvYz09XCJib29sZWFuXCImJnkubG9jLHR5cGVvZiB5LnRva2Vucz09XCJib29sZWFuXCImJnkudG9rZW5zJiYoVC50b2tlbnM9W10pLHR5cGVvZiB5LmNvbW1lbnQ9PVwiYm9vbGVhblwiJiZ5LmNvbW1lbnQmJihULmNvbW1lbnQ9ITAsVC5jb21tZW50cz1bXSksdHlwZW9mIHkuanN4IT1cImJvb2xlYW5cIj9ULmpzeD0hMTpULmpzeD15LmpzeCx0eXBlb2YgeS5maWxlUGF0aD09XCJzdHJpbmdcIiYmeS5maWxlUGF0aCE9PVwiPGlucHV0PlwiP1QuZmlsZVBhdGg9eS5maWxlUGF0aDpULmZpbGVQYXRoPVIoVCksdHlwZW9mIHkuZXJyb3JPblVua25vd25BU1RUeXBlPT1cImJvb2xlYW5cIiYmeS5lcnJvck9uVW5rbm93bkFTVFR5cGUmJihULmVycm9yT25Vbmtub3duQVNUVHlwZT0hMCksdHlwZW9mIHkubG9nZ2VyRm49PVwiZnVuY3Rpb25cIj9ULmxvZz15LmxvZ2dlckZuOnkubG9nZ2VyRm49PT0hMSYmKFQubG9nPSgpPT57fSksdHlwZW9mIHkudHNjb25maWdSb290RGlyPT1cInN0cmluZ1wiJiYoVC50c2NvbmZpZ1Jvb3REaXI9eS50c2NvbmZpZ1Jvb3REaXIpLFQuZmlsZVBhdGg9KDAsbGUuZW5zdXJlQWJzb2x1dGVQYXRoKShULmZpbGVQYXRoLFQpLEFycmF5LmlzQXJyYXkoeS5wcm9ncmFtcykpe2lmKCF5LnByb2dyYW1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJZb3UgaGF2ZSBzZXQgcGFyc2VyT3B0aW9ucy5wcm9ncmFtcyB0byBhbiBlbXB0eSBhcnJheS4gVGhpcyB3aWxsIGNhdXNlIGFsbCBmaWxlcyB0byBub3QgYmUgZm91bmQgaW4gZXhpc3RpbmcgcHJvZ3JhbXMuIEVpdGhlciBwcm92aWRlIG9uZSBvciBtb3JlIGV4aXN0aW5nIFR5cGVTY3JpcHQgUHJvZ3JhbSBpbnN0YW5jZXMgaW4gdGhlIGFycmF5LCBvciByZW1vdmUgdGhlIHBhcnNlck9wdGlvbnMucHJvZ3JhbXMgc2V0dGluZy5cIik7VC5wcm9ncmFtcz15LnByb2dyYW1zLHAoXCJwYXJzZXJPcHRpb25zLnByb2dyYW1zIHdhcyBwcm92aWRlZCwgc28gcGFyc2VyT3B0aW9ucy5wcm9qZWN0IHdpbGwgYmUgaWdub3JlZC5cIil9aWYoIVQucHJvZ3JhbXMpe2xldCBMPSgoVj15LnByb2plY3RGb2xkZXJJZ25vcmVMaXN0KSE9PW51bGwmJlYhPT12b2lkIDA/VjpbXCIqKi9ub2RlX21vZHVsZXMvKipcIl0pLnJlZHVjZSgoUCxrKT0+KHR5cGVvZiBrPT1cInN0cmluZ1wiJiZQLnB1c2goayksUCksW10pLm1hcChQPT5QLnN0YXJ0c1dpdGgoXCIhXCIpP1A6XCIhXCIuY29uY2F0KFApKTtULnByb2plY3RzPVtdfUFycmF5LmlzQXJyYXkoeS5leHRyYUZpbGVFeHRlbnNpb25zKSYmeS5leHRyYUZpbGVFeHRlbnNpb25zLmV2ZXJ5KEw9PnR5cGVvZiBMPT1cInN0cmluZ1wiKSYmKFQuZXh0cmFGaWxlRXh0ZW5zaW9ucz15LmV4dHJhRmlsZUV4dGVuc2lvbnMpLHR5cGVvZiB5LnByZXNlcnZlTm9kZU1hcHM9PVwiYm9vbGVhblwiJiYoVC5wcmVzZXJ2ZU5vZGVNYXBzPXkucHJlc2VydmVOb2RlTWFwcyksVC5jcmVhdGVEZWZhdWx0UHJvZ3JhbT10eXBlb2YgeS5jcmVhdGVEZWZhdWx0UHJvZ3JhbT09XCJib29sZWFuXCImJnkuY3JlYXRlRGVmYXVsdFByb2dyYW0sVC5FWFBFUklNRU5UQUxfdXNlU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3Q9dHlwZW9mIHkuRVhQRVJJTUVOVEFMX3VzZVNvdXJjZU9mUHJvamVjdFJlZmVyZW5jZVJlZGlyZWN0PT1cImJvb2xlYW5cIiYmeS5FWFBFUklNRU5UQUxfdXNlU291cmNlT2ZQcm9qZWN0UmVmZXJlbmNlUmVkaXJlY3QsdHlwZW9mIHkubW9kdWxlUmVzb2x2ZXI9PVwic3RyaW5nXCImJihULm1vZHVsZVJlc29sdmVyPXkubW9kdWxlUmVzb2x2ZXIpfWZ1bmN0aW9uIHZlKCl7dmFyIHk7aWYoIWYmJiFLKXtpZih0eXBlb2YgRXU+XCJ1XCI/ITE6KHk9RXUuc3Rkb3V0KT09PW51bGx8fHk9PT12b2lkIDA/dm9pZCAwOnkuaXNUVFkpe2xldCBMPVwiPT09PT09PT09PT09PVwiLFA9W0wsXCJXQVJOSU5HOiBZb3UgYXJlIGN1cnJlbnRseSBydW5uaW5nIGEgdmVyc2lvbiBvZiBUeXBlU2NyaXB0IHdoaWNoIGlzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBAdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXNjcmlwdC1lc3RyZWUuXCIsXCJZb3UgbWF5IGZpbmQgdGhhdCBpdCB3b3JrcyBqdXN0IGZpbmUsIG9yIHlvdSBtYXkgbm90LlwiLFwiU1VQUE9SVEVEIFRZUEVTQ1JJUFQgVkVSU0lPTlM6IFwiLmNvbmNhdChtKSxcIllPVVIgVFlQRVNDUklQVCBWRVJTSU9OOiBcIi5jb25jYXQob2UpLFwiUGxlYXNlIG9ubHkgc3VibWl0IGJ1ZyByZXBvcnRzIHdoZW4gdXNpbmcgdGhlIG9mZmljaWFsbHkgc3VwcG9ydGVkIHZlcnNpb24uXCIsTF07VC5sb2coUC5qb2luKGBcblxuYCkpfUs9ITB9fWZ1bmN0aW9uIGVlKHkpe2lmKEV1LmVudi5UU0VTVFJFRV9TSU5HTEVfUlVOPT09XCJmYWxzZVwiKXtULnNpbmdsZVJ1bj0hMTtyZXR1cm59aWYoRXUuZW52LlRTRVNUUkVFX1NJTkdMRV9SVU49PT1cInRydWVcIil7VC5zaW5nbGVSdW49ITA7cmV0dXJufWlmKHkhPW51bGwmJnkuYWxsb3dBdXRvbWF0aWNTaW5nbGVSdW5JbmZlcmVuY2UmJihFdS5lbnYuQ0k9PT1cInRydWVcInx8RXUuYXJndlsxXS5lbmRzV2l0aCgoMCxhci5ub3JtYWxpemUpKFwibm9kZV9tb2R1bGVzLy5iaW4vZXNsaW50XCIpKSkpe1Quc2luZ2xlUnVuPSEwO3JldHVybn1ULnNpbmdsZVJ1bj0hMX1mdW5jdGlvbiBoZSh5LFYpe2xldHthc3Q6TH09Rih5LFYsITEpO3JldHVybiBMfU0ucGFyc2U9aGU7ZnVuY3Rpb24gRih5LFYsTCl7aWYocSgpLFYhPW51bGwmJlYuZXJyb3JPblR5cGVTY3JpcHRTeW50YWN0aWNBbmRTZW1hbnRpY0lzc3Vlcyl0aHJvdyBuZXcgRXJyb3IoJ1wiZXJyb3JPblR5cGVTY3JpcHRTeW50YWN0aWNBbmRTZW1hbnRpY0lzc3Vlc1wiIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBwYXJzZUFuZEdlbmVyYXRlU2VydmljZXMoKScpO3k9Sih5KSxULmNvZGU9eSx0eXBlb2YgVjxcInVcIiYmTyhWKSx2ZSgpLGVlKFYpO2xldCBQPSgwLEUuY3JlYXRlU291cmNlRmlsZSkoeSxUKSx7ZXN0cmVlOmssYXN0TWFwczpZfT0oMCxlLmFzdENvbnZlcnRlcikoUCxULEwpO3JldHVybnthc3Q6ayxlc1RyZWVOb2RlVG9UU05vZGVNYXA6WS5lc1RyZWVOb2RlVG9UU05vZGVNYXAsdHNOb2RlVG9FU1RyZWVOb2RlTWFwOlkudHNOb2RlVG9FU1RyZWVOb2RlTWFwfX1mdW5jdGlvbiB4KHksVil7cmV0dXJuIEYoeSxWLCEwKX1NLnBhcnNlV2l0aE5vZGVNYXBzPXg7dmFyIFg9e307ZnVuY3Rpb24gJCgpe1g9e319TS5jbGVhclBhcnNlQW5kR2VuZXJhdGVTZXJ2aWNlc0NhbGxzPSQ7ZnVuY3Rpb24gQSh5LFYpe3ZhciBMO3EoKSx5PUooeSksVC5jb2RlPXksdHlwZW9mIFY8XCJ1XCImJihPKFYpLHR5cGVvZiBWLmVycm9yT25UeXBlU2NyaXB0U3ludGFjdGljQW5kU2VtYW50aWNJc3N1ZXM9PVwiYm9vbGVhblwiJiZWLmVycm9yT25UeXBlU2NyaXB0U3ludGFjdGljQW5kU2VtYW50aWNJc3N1ZXMmJihULmVycm9yT25UeXBlU2NyaXB0U3ludGFjdGljQW5kU2VtYW50aWNJc3N1ZXM9ITApKSx2ZSgpLGVlKFYpLFQuc2luZ2xlUnVuJiYhVC5wcm9ncmFtcyYmKChMPVQucHJvamVjdHMpPT09bnVsbHx8TD09PXZvaWQgMD92b2lkIDA6TC5sZW5ndGgpPjAmJihULnByb2dyYW1zPXsqW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IobGV0IEkgb2YgVC5wcm9qZWN0cyl7bGV0IGw9Yi5nZXQoSSk7aWYobCl5aWVsZCBsO2Vsc2V7cChcIkRldGVjdGVkIHNpbmdsZS1ydW4vQ0xJIHVzYWdlLCBjcmVhdGluZyBQcm9ncmFtIG9uY2UgYWhlYWQgb2YgdGltZSBmb3IgcHJvamVjdDogJXNcIixJKTtsZXQgZD0oMCxOLmNyZWF0ZVByb2dyYW1Gcm9tQ29uZmlnRmlsZSkoSSk7Yi5zZXQoSSxkKSx5aWVsZCBkfX19fSk7bGV0IFA9VC5wcm9ncmFtcyE9bnVsbHx8VC5wcm9qZWN0cyYmVC5wcm9qZWN0cy5sZW5ndGg+MCxrLFk7aWYoVC5zaW5nbGVSdW4mJlYuZmlsZVBhdGgmJihYW1YuZmlsZVBhdGhdPShYW1YuZmlsZVBhdGhdfHwwKSsxKSxULnNpbmdsZVJ1biYmVi5maWxlUGF0aCYmWFtWLmZpbGVQYXRoXT4xKXtsZXQgST0oMCx3LmNyZWF0ZUlzb2xhdGVkUHJvZ3JhbSkoeSxUKTtrPUkuYXN0LFk9SS5wcm9ncmFtfWVsc2V7bGV0IEk9aWUoeSxULnByb2dyYW1zLFAsVC5jcmVhdGVEZWZhdWx0UHJvZ3JhbSk7az1JLmFzdCxZPUkucHJvZ3JhbX1sZXQgVT10eXBlb2YgVC5wcmVzZXJ2ZU5vZGVNYXBzPT1cImJvb2xlYW5cIj9ULnByZXNlcnZlTm9kZU1hcHM6ITAse2VzdHJlZTpqLGFzdE1hcHM6SH09KDAsZS5hc3RDb252ZXJ0ZXIpKGssVCxVKTtpZihZJiZULmVycm9yT25UeXBlU2NyaXB0U3ludGFjdGljQW5kU2VtYW50aWNJc3N1ZXMpe2xldCBJPSgwLFEuZ2V0Rmlyc3RTZW1hbnRpY09yU3ludGFjdGljRXJyb3IpKFksayk7aWYoSSl0aHJvdygwLGEuY29udmVydEVycm9yKShJKX1yZXR1cm57YXN0Omosc2VydmljZXM6e2hhc0Z1bGxUeXBlSW5mb3JtYXRpb246UCxwcm9ncmFtOlksZXNUcmVlTm9kZVRvVFNOb2RlTWFwOkguZXNUcmVlTm9kZVRvVFNOb2RlTWFwLHRzTm9kZVRvRVNUcmVlTm9kZU1hcDpILnRzTm9kZVRvRVNUcmVlTm9kZU1hcH19fU0ucGFyc2VBbmRHZW5lcmF0ZVNlcnZpY2VzPUF9fSksbHo9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9wYWNrYWdlLmpzb25cIihNLHJlKXtyZS5leHBvcnRzPXtuYW1lOlwiQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXN0cmVlXCIsdmVyc2lvbjpcIjUuMjcuMFwiLGRlc2NyaXB0aW9uOlwiQSBwYXJzZXIgdGhhdCBjb252ZXJ0cyBUeXBlU2NyaXB0IHNvdXJjZSBjb2RlIGludG8gYW4gRVNUcmVlIGNvbXBhdGlibGUgZm9ybVwiLG1haW46XCJkaXN0L2luZGV4LmpzXCIsdHlwZXM6XCJkaXN0L2luZGV4LmQudHNcIixmaWxlczpbXCJkaXN0XCIsXCJSRUFETUUubWRcIixcIkxJQ0VOU0VcIl0sZW5naW5lczp7bm9kZTpcIl4xMi4yMi4wIHx8IF4xNC4xNy4wIHx8ID49MTYuMC4wXCJ9LHJlcG9zaXRvcnk6e3R5cGU6XCJnaXRcIix1cmw6XCJodHRwczovL2dpdGh1Yi5jb20vdHlwZXNjcmlwdC1lc2xpbnQvdHlwZXNjcmlwdC1lc2xpbnQuZ2l0XCIsZGlyZWN0b3J5OlwicGFja2FnZXMvdHlwZXNjcmlwdC1lc3RyZWVcIn0sYnVnczp7dXJsOlwiaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXNsaW50L2lzc3Vlc1wifSxsaWNlbnNlOlwiQlNELTItQ2xhdXNlXCIsa2V5d29yZHM6W1wiYXN0XCIsXCJlc3RyZWVcIixcImVjbWFzY3JpcHRcIixcImphdmFzY3JpcHRcIixcInR5cGVzY3JpcHRcIixcInBhcnNlclwiLFwic3ludGF4XCJdLHNjcmlwdHM6e2J1aWxkOlwidHNjIC1iIHRzY29uZmlnLmJ1aWxkLmpzb25cIixwb3N0YnVpbGQ6XCJkb3dubGV2ZWwtZHRzIGRpc3QgX3RzMy40L2Rpc3RcIixjbGVhbjpcInRzYyAtYiB0c2NvbmZpZy5idWlsZC5qc29uIC0tY2xlYW5cIixwb3N0Y2xlYW46XCJyaW1yYWYgZGlzdCAmJiByaW1yYWYgX3RzMy40ICYmIHJpbXJhZiBjb3ZlcmFnZVwiLGZvcm1hdDoncHJldHRpZXIgLS13cml0ZSBcIi4vKiovKi57dHMsbXRzLGN0cyx0c3gsanMsbWpzLGNqcyxqc3gsanNvbixtZCxjc3N9XCIgLS1pZ25vcmUtcGF0aCAuLi8uLi8ucHJldHRpZXJpZ25vcmUnLGxpbnQ6XCJlc2xpbnQgLiAtLWlnbm9yZS1wYXRoPScuLi8uLi8uZXNsaW50aWdub3JlJ1wiLHRlc3Q6XCJqZXN0IC0tY292ZXJhZ2VcIix0eXBlY2hlY2s6XCJ0c2MgLXAgdHNjb25maWcuanNvbiAtLW5vRW1pdFwifSxkZXBlbmRlbmNpZXM6e1wiQHR5cGVzY3JpcHQtZXNsaW50L3R5cGVzXCI6XCI1LjI3LjBcIixcIkB0eXBlc2NyaXB0LWVzbGludC92aXNpdG9yLWtleXNcIjpcIjUuMjcuMFwiLGRlYnVnOlwiXjQuMy40XCIsZ2xvYmJ5OlwiXjExLjEuMFwiLFwiaXMtZ2xvYlwiOlwiXjQuMC4zXCIsc2VtdmVyOlwiXjcuMy43XCIsdHN1dGlsczpcIl4zLjIxLjBcIn0sZGV2RGVwZW5kZW5jaWVzOntcIkBiYWJlbC9jb2RlLWZyYW1lXCI6XCIqXCIsXCJAYmFiZWwvcGFyc2VyXCI6XCIqXCIsXCJAdHlwZXMvYmFiZWxfX2NvZGUtZnJhbWVcIjpcIipcIixcIkB0eXBlcy9kZWJ1Z1wiOlwiKlwiLFwiQHR5cGVzL2dsb2JcIjpcIipcIixcIkB0eXBlcy9pcy1nbG9iXCI6XCIqXCIsXCJAdHlwZXMvc2VtdmVyXCI6XCIqXCIsXCJAdHlwZXMvdG1wXCI6XCIqXCIsXCJAdHlwZXNjcmlwdC1lc2xpbnQvc2hhcmVkLWZpeHR1cmVzXCI6XCI1LjI3LjBcIixnbG9iOlwiKlwiLFwiamVzdC1zcGVjaWZpYy1zbmFwc2hvdFwiOlwiKlwiLFwibWFrZS1kaXJcIjpcIipcIix0bXA6XCIqXCIsdHlwZXNjcmlwdDpcIipcIn0scGVlckRlcGVuZGVuY2llc01ldGE6e3R5cGVzY3JpcHQ6e29wdGlvbmFsOiEwfX0sZnVuZGluZzp7dHlwZTpcIm9wZW5jb2xsZWN0aXZlXCIsdXJsOlwiaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vdHlwZXNjcmlwdC1lc2xpbnRcIn0sdHlwZXNWZXJzaW9uczp7XCI8My44XCI6e1wiKlwiOltcIl90czMuNC8qXCJdfX0sZ2l0SGVhZDpcImUwZGIzNjRiOTQxNTg0MzdmMDQxZGIzNTk3MTAxZDBjOGIzMGQ4YmNcIn19fSksZno9T2Eoe1wibm9kZV9tb2R1bGVzL0B0eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzdHJlZS9kaXN0L2luZGV4LmpzXCIoTSl7XCJ1c2Ugc3RyaWN0XCI7RWEoKTt2YXIgcmU9TSYmTS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGFyLGtlLGUsYSl7YT09PXZvaWQgMCYmKGE9ZSk7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihrZSxlKTsoIUN8fChcImdldFwiaW4gQz8ha2UuX19lc01vZHVsZTpDLndyaXRhYmxlfHxDLmNvbmZpZ3VyYWJsZSkpJiYoQz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga2VbZV19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGFyLGEsQyl9OmZ1bmN0aW9uKGFyLGtlLGUsYSl7YT09PXZvaWQgMCYmKGE9ZSksYXJbYV09a2VbZV19KSxWZT1NJiZNLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oYXIsa2Upe2Zvcih2YXIgZSBpbiBhcillIT09XCJkZWZhdWx0XCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoa2UsZSkmJnJlKGtlLGFyLGUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxNLnZlcnNpb249TS52aXNpdG9yS2V5cz1NLmNyZWF0ZVByb2dyYW09TS5jbGVhckNhY2hlcz1NLnNpbXBsZVRyYXZlcnNlPU0uY2xlYXJQcm9ncmFtQ2FjaGU9TS5wYXJzZVdpdGhOb2RlTWFwcz1NLnBhcnNlQW5kR2VuZXJhdGVTZXJ2aWNlcz1NLnBhcnNlPXZvaWQgMDt2YXIgS2U9dXooKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcInBhcnNlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtlLnBhcnNlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwicGFyc2VBbmRHZW5lcmF0ZVNlcnZpY2VzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtlLnBhcnNlQW5kR2VuZXJhdGVTZXJ2aWNlc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcInBhcnNlV2l0aE5vZGVNYXBzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtlLnBhcnNlV2l0aE5vZGVNYXBzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiY2xlYXJQcm9ncmFtQ2FjaGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gS2UuY2xlYXJQcm9ncmFtQ2FjaGV9fSk7dmFyIG9pPWMzKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJzaW1wbGVUcmF2ZXJzZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvaS5zaW1wbGVUcmF2ZXJzZX19KSxWZShrMSgpLE0pO3ZhciBrcj11MygpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShNLFwiY2xlYXJDYWNoZXNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga3IuY2xlYXJXYXRjaENhY2hlc319KTt2YXIgcHI9bDMoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxcImNyZWF0ZVByb2dyYW1cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcHIuY3JlYXRlUHJvZ3JhbUZyb21Db25maWdGaWxlfX0pLFZlKHJ4KCksTSk7dmFyIExyPXMzKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sXCJ2aXNpdG9yS2V5c1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBMci52aXNpdG9yS2V5c319KSxNLnZlcnNpb249bHooKS52ZXJzaW9ufX0pO0VhKCk7dmFyIF96PVM0KCkscHo9VGooKSxkej1GaigpLGd6PU1qKCksbXo9VWooKSxiND17bG9jOiEwLHJhbmdlOiEwLGNvbW1lbnQ6ITAsanN4OiEwLHRva2VuczohMCxsb2dnZXJGbjohMSxwcm9qZWN0OltdfTtmdW5jdGlvbiB2eihNKXtsZXR7bWVzc2FnZTpyZSxsaW5lTnVtYmVyOlZlLGNvbHVtbjpLZX09TTtyZXR1cm4gdHlwZW9mIFZlIT1cIm51bWJlclwiP006X3oocmUse3N0YXJ0OntsaW5lOlZlLGNvbHVtbjpLZSsxfX0pfWZ1bmN0aW9uIHl6KE0scmUpe2xldCBWZT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30sS2U9Z3ooTSksb2k9aHooTSkse3BhcnNlV2l0aE5vZGVNYXBzOmtyfT1meigpLHtyZXN1bHQ6cHIsZXJyb3I6THJ9PXB6KCgpPT5rcihLZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYjQpLHt9LHtqc3g6b2l9KSksKCk9PmtyKEtlLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxiNCkse30se2pzeDohb2l9KSkpO2lmKCFwcil0aHJvdyB2eihMcik7cmV0dXJuIFZlLm9yaWdpbmFsVGV4dD1NLFZlLnRzUGFyc2VSZXN1bHQ9cHIsbXoocHIuYXN0LFZlKX1mdW5jdGlvbiBoeihNKXtyZXR1cm4gbmV3IFJlZ0V4cChbXCIoPzpeW15cXFwiJ2BdKjwvKVwiLFwifFwiLFwiKD86XlteL117Mn0uKi8+KVwiXS5qb2luKFwiXCIpLFwibVwiKS50ZXN0KE0pfWYzLmV4cG9ydHM9e3BhcnNlcnM6e3R5cGVzY3JpcHQ6ZHooeXopfX19KTtyZXR1cm4gRHooKTt9KTsiLCAiKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlPT1cIm9iamVjdFwiKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKHR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZClkZWZpbmUoZSk7ZWxzZXt2YXIgaT10eXBlb2YgZ2xvYmFsVGhpczxcInVcIj9nbG9iYWxUaGlzOnR5cGVvZiBnbG9iYWw8XCJ1XCI/Z2xvYmFsOnR5cGVvZiBzZWxmPFwidVwiP3NlbGY6dGhpc3x8e307aS5wcmV0dGllclBsdWdpbnM9aS5wcmV0dGllclBsdWdpbnN8fHt9LGkucHJldHRpZXJQbHVnaW5zLmFuZ3VsYXI9ZSgpfX0pKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHVuPShlLHQpPT4oKT0+KHR8fGUoKHQ9e2V4cG9ydHM6e319KS5leHBvcnRzLHQpLHQuZXhwb3J0cyk7dmFyIE1uPXVuKChqbixvbik9Pnt2YXIgemU9T2JqZWN0LmRlZmluZVByb3BlcnR5LGhuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsSGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsbG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxZPShlLHQpPT5mdW5jdGlvbigpe3JldHVybiBlJiYodD0oMCxlW0hlKGUpWzBdXSkoZT0wKSksdH0scT0oZSx0KT0+ZnVuY3Rpb24oKXtyZXR1cm4gdHx8KDAsZVtIZShlKVswXV0pKCh0PXtleHBvcnRzOnt9fSkuZXhwb3J0cyx0KSx0LmV4cG9ydHN9LFhlPShlLHQpPT57Zm9yKHZhciBuIGluIHQpemUoZSxuLHtnZXQ6dFtuXSxlbnVtZXJhYmxlOiEwfSl9LHBuPShlLHQsbixyKT0+e2lmKHQmJnR5cGVvZiB0PT1cIm9iamVjdFwifHx0eXBlb2YgdD09XCJmdW5jdGlvblwiKWZvcihsZXQgcyBvZiBIZSh0KSkhbG4uY2FsbChlLHMpJiZzIT09biYmemUoZSxzLHtnZXQ6KCk9PnRbc10sZW51bWVyYWJsZTohKHI9aG4odCxzKSl8fHIuZW51bWVyYWJsZX0pO3JldHVybiBlfSxiZT1lPT5wbih6ZSh7fSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlKSxMPVkoe1wiPGRlZmluZTpwcm9jZXNzPlwiKCl7fX0pLGRuPXEoe1wic3JjL3V0aWxzL2lzLW5vbi1lbXB0eS1hcnJheS5qc1wiKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7TCgpO2Z1bmN0aW9uIG4ocil7cmV0dXJuIEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB9dC5leHBvcnRzPW59fSksZm49cSh7XCJzcmMvbGFuZ3VhZ2UtanMvbG9jLmpzXCIoZSx0KXtcInVzZSBzdHJpY3RcIjtMKCk7dmFyIG49ZG4oKTtmdW5jdGlvbiByKGgsUCl7bGV0e2lnbm9yZURlY29yYXRvcnM6cH09UHx8e307aWYoIXApe2xldCB4PWguZGVjbGFyYXRpb24mJmguZGVjbGFyYXRpb24uZGVjb3JhdG9yc3x8aC5kZWNvcmF0b3JzO2lmKG4oeCkpcmV0dXJuIHIoeFswXSl9cmV0dXJuIGgucmFuZ2U/aC5yYW5nZVswXTpoLnN0YXJ0fWZ1bmN0aW9uIHMoaCl7cmV0dXJuIGgucmFuZ2U/aC5yYW5nZVsxXTpoLmVuZH1mdW5jdGlvbiBhKGgsUCl7bGV0IHA9cihoKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihwKSYmcD09PXIoUCl9ZnVuY3Rpb24gaShoLFApe2xldCBwPXMoaCk7cmV0dXJuIE51bWJlci5pc0ludGVnZXIocCkmJnA9PT1zKFApfWZ1bmN0aW9uIGwoaCxQKXtyZXR1cm4gYShoLFApJiZpKGgsUCl9dC5leHBvcnRzPXtsb2NTdGFydDpyLGxvY0VuZDpzLGhhc1NhbWVMb2NTdGFydDphLGhhc1NhbWVMb2M6bH19fSksZ249cSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1lc3RyZWUtcGFyc2VyL25vZGVfbW9kdWxlcy9saW5lcy1hbmQtY29sdW1ucy9idWlsZC9pbmRleC5qc1wiKGUpe1widXNlIHN0cmljdFwiO0woKSxlLl9fZXNNb2R1bGU9ITAsZS5MaW5lc0FuZENvbHVtbnM9dm9pZCAwO3ZhciB0PWBcbmAsbj1cIlxcclwiLHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGEpe3RoaXMuc3RyaW5nPWE7Zm9yKHZhciBpPVswXSxsPTA7bDxhLmxlbmd0aDspc3dpdGNoKGFbbF0pe2Nhc2UgdDpsKz10Lmxlbmd0aCxpLnB1c2gobCk7YnJlYWs7Y2FzZSBuOmwrPW4ubGVuZ3RoLGFbbF09PT10JiYobCs9dC5sZW5ndGgpLGkucHVzaChsKTticmVhaztkZWZhdWx0OmwrKzticmVha310aGlzLm9mZnNldHM9aX1yZXR1cm4gcy5wcm90b3R5cGUubG9jYXRpb25Gb3JJbmRleD1mdW5jdGlvbihhKXtpZihhPDB8fGE+dGhpcy5zdHJpbmcubGVuZ3RoKXJldHVybiBudWxsO2Zvcih2YXIgaT0wLGw9dGhpcy5vZmZzZXRzO2xbaSsxXTw9YTspaSsrO3ZhciBoPWEtbFtpXTtyZXR1cm57bGluZTppLGNvbHVtbjpofX0scy5wcm90b3R5cGUuaW5kZXhGb3JMb2NhdGlvbj1mdW5jdGlvbihhKXt2YXIgaT1hLmxpbmUsbD1hLmNvbHVtbjtyZXR1cm4gaTwwfHxpPj10aGlzLm9mZnNldHMubGVuZ3RofHxsPDB8fGw+dGhpcy5sZW5ndGhPZkxpbmUoaSk/bnVsbDp0aGlzLm9mZnNldHNbaV0rbH0scy5wcm90b3R5cGUubGVuZ3RoT2ZMaW5lPWZ1bmN0aW9uKGEpe3ZhciBpPXRoaXMub2Zmc2V0c1thXSxsPWE9PT10aGlzLm9mZnNldHMubGVuZ3RoLTE/dGhpcy5zdHJpbmcubGVuZ3RoOnRoaXMub2Zmc2V0c1thKzFdO3JldHVybiBsLWl9LHN9KCk7ZS5MaW5lc0FuZENvbHVtbnM9cixlLmRlZmF1bHQ9cn19KSx2bj1xKHtcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWVzdHJlZS1wYXJzZXIvbGliL2NvbnRleHQuanNcIihlKXtcInVzZSBzdHJpY3RcIjtMKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5Db250ZXh0PXZvaWQgMDt2YXIgdD1nbigpLG49Y2xhc3N7Y29uc3RydWN0b3Iocyl7dGhpcy50ZXh0PXMsdGhpcy5sb2NhdG9yPW5ldyByKHRoaXMudGV4dCl9fTtlLkNvbnRleHQ9bjt2YXIgcj1jbGFzc3tjb25zdHJ1Y3RvcihzKXt0aGlzLl9saW5lQW5kQ29sdW1uPW5ldyB0LmRlZmF1bHQocyl9bG9jYXRpb25Gb3JJbmRleChzKXtsZXR7bGluZTphLGNvbHVtbjppfT10aGlzLl9saW5lQW5kQ29sdW1uLmxvY2F0aW9uRm9ySW5kZXgocyk7cmV0dXJue2xpbmU6YSsxLGNvbHVtbjppfX19fX0pLEplPXt9O1hlKEplLHtBU1Q6KCk9PmssQVNUV2l0aE5hbWU6KCk9PlcsQVNUV2l0aFNvdXJjZTooKT0+RyxBYnNvbHV0ZVNvdXJjZVNwYW46KCk9PlUsQXN0TWVtb3J5RWZmaWNpZW50VHJhbnNmb3JtZXI6KCk9PkN0LEFzdFRyYW5zZm9ybWVyOigpPT5QdCxCaW5hcnk6KCk9PkssQmluZGluZ1BpcGU6KCk9PmZlLEJvdW5kRWxlbWVudFByb3BlcnR5OigpPT5JdCxDaGFpbjooKT0+b2UsQ29uZGl0aW9uYWw6KCk9PmNlLEVtcHR5RXhwcjooKT0+TSxFeHByZXNzaW9uQmluZGluZzooKT0+WmUsRnVuY3Rpb25DYWxsOigpPT5QZSxJbXBsaWNpdFJlY2VpdmVyOigpPT5PZSxJbnRlcnBvbGF0aW9uOigpPT5tZSxLZXllZFJlYWQ6KCk9PmxlLEtleWVkV3JpdGU6KCk9PmRlLExpdGVyYWxBcnJheTooKT0+Z2UsTGl0ZXJhbE1hcDooKT0+dmUsTGl0ZXJhbFByaW1pdGl2ZTooKT0+QixNZXRob2RDYWxsOigpPT55ZSxOb25OdWxsQXNzZXJ0OigpPT5TZSxQYXJzZVNwYW46KCk9PlYsUGFyc2VkRXZlbnQ6KCk9PkF0LFBhcnNlZFByb3BlcnR5OigpPT5FdCxQYXJzZWRQcm9wZXJ0eVR5cGU6KCk9PnNlLFBhcnNlZFZhcmlhYmxlOigpPT5fdCxQYXJzZXJFcnJvcjooKT0+YWUsUHJlZml4Tm90OigpPT54ZSxQcm9wZXJ0eVJlYWQ6KCk9PnJlLFByb3BlcnR5V3JpdGU6KCk9PnVlLFF1b3RlOigpPT5MZSxSZWN1cnNpdmVBc3RWaXNpdG9yOigpPT5ldCxTYWZlS2V5ZWRSZWFkOigpPT5wZSxTYWZlTWV0aG9kQ2FsbDooKT0+d2UsU2FmZVByb3BlcnR5UmVhZDooKT0+aGUsVGhpc1JlY2VpdmVyOigpPT5ZZSxVbmFyeTooKT0+RixWYXJpYWJsZUJpbmRpbmc6KCk9PlJlfSk7dmFyIGFlLFYsayxXLExlLE0sT2UsWWUsb2UsY2UscmUsdWUsaGUsbGUscGUsZGUsZmUsQixnZSx2ZSxtZSxLLEYseGUsU2UseWUsd2UsUGUsVSxHLFJlLFplLGV0LFB0LEN0LEV0LHNlLEF0LF90LEl0LHR0PVkoe1wibm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2NvbXBpbGVyL2VzbTIwMTUvc3JjL2V4cHJlc3Npb25fcGFyc2VyL2FzdC5qc1wiKCl7TCgpLGFlPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuaW5wdXQ9dCx0aGlzLmVyckxvY2F0aW9uPW4sdGhpcy5jdHhMb2NhdGlvbj1yLHRoaXMubWVzc2FnZT1cIlBhcnNlciBFcnJvcjogXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdChuLFwiIFtcIikuY29uY2F0KHQsXCJdIGluIFwiKS5jb25jYXQocil9fSxWPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdGFydD1lLHRoaXMuZW5kPXR9dG9BYnNvbHV0ZShlKXtyZXR1cm4gbmV3IFUoZSt0aGlzLnN0YXJ0LGUrdGhpcy5lbmQpfX0saz1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3Bhbj1lLHRoaXMuc291cmNlU3Bhbj10fXRvU3RyaW5nKCl7cmV0dXJuXCJBU1RcIn19LFc9Y2xhc3MgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcihlLHQpLHRoaXMubmFtZVNwYW49bn19LExlPWNsYXNzIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlLHQsbixyLHMpe3N1cGVyKGUsdCksdGhpcy5wcmVmaXg9bix0aGlzLnVuaW50ZXJwcmV0ZWRFeHByZXNzaW9uPXIsdGhpcy5sb2NhdGlvbj1zfXZpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0UXVvdGUodGhpcyx0KX10b1N0cmluZygpe3JldHVyblwiUXVvdGVcIn19LE09Y2xhc3MgZXh0ZW5kcyBre3Zpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsfX0sT2U9Y2xhc3MgZXh0ZW5kcyBre3Zpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0SW1wbGljaXRSZWNlaXZlcih0aGlzLHQpfX0sWWU9Y2xhc3MgZXh0ZW5kcyBPZXt2aXNpdChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDt2YXIgbjtyZXR1cm4obj1lLnZpc2l0VGhpc1JlY2VpdmVyKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uY2FsbChlLHRoaXMsdCl9fSxvZT1jbGFzcyBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUsdCksdGhpcy5leHByZXNzaW9ucz1ufXZpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0Q2hhaW4odGhpcyx0KX19LGNlPWNsYXNzIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlLHQsbixyLHMpe3N1cGVyKGUsdCksdGhpcy5jb25kaXRpb249bix0aGlzLnRydWVFeHA9cix0aGlzLmZhbHNlRXhwPXN9dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRDb25kaXRpb25hbCh0aGlzLHQpfX0scmU9Y2xhc3MgZXh0ZW5kcyBXe2NvbnN0cnVjdG9yKGUsdCxuLHIscyl7c3VwZXIoZSx0LG4pLHRoaXMucmVjZWl2ZXI9cix0aGlzLm5hbWU9c312aXNpdChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gZS52aXNpdFByb3BlcnR5UmVhZCh0aGlzLHQpfX0sdWU9Y2xhc3MgZXh0ZW5kcyBXe2NvbnN0cnVjdG9yKGUsdCxuLHIscyxhKXtzdXBlcihlLHQsbiksdGhpcy5yZWNlaXZlcj1yLHRoaXMubmFtZT1zLHRoaXMudmFsdWU9YX12aXNpdChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gZS52aXNpdFByb3BlcnR5V3JpdGUodGhpcyx0KX19LGhlPWNsYXNzIGV4dGVuZHMgV3tjb25zdHJ1Y3RvcihlLHQsbixyLHMpe3N1cGVyKGUsdCxuKSx0aGlzLnJlY2VpdmVyPXIsdGhpcy5uYW1lPXN9dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRTYWZlUHJvcGVydHlSZWFkKHRoaXMsdCl9fSxsZT1jbGFzcyBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0LG4scil7c3VwZXIoZSx0KSx0aGlzLnJlY2VpdmVyPW4sdGhpcy5rZXk9cn12aXNpdChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gZS52aXNpdEtleWVkUmVhZCh0aGlzLHQpfX0scGU9Y2xhc3MgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUsdCxuLHIpe3N1cGVyKGUsdCksdGhpcy5yZWNlaXZlcj1uLHRoaXMua2V5PXJ9dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRTYWZlS2V5ZWRSZWFkKHRoaXMsdCl9fSxkZT1jbGFzcyBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0LG4scixzKXtzdXBlcihlLHQpLHRoaXMucmVjZWl2ZXI9bix0aGlzLmtleT1yLHRoaXMudmFsdWU9c312aXNpdChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gZS52aXNpdEtleWVkV3JpdGUodGhpcyx0KX19LGZlPWNsYXNzIGV4dGVuZHMgV3tjb25zdHJ1Y3RvcihlLHQsbixyLHMsYSl7c3VwZXIoZSx0LGEpLHRoaXMuZXhwPW4sdGhpcy5uYW1lPXIsdGhpcy5hcmdzPXN9dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRQaXBlKHRoaXMsdCl9fSxCPWNsYXNzIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoZSx0KSx0aGlzLnZhbHVlPW59dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRMaXRlcmFsUHJpbWl0aXZlKHRoaXMsdCl9fSxnZT1jbGFzcyBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUsdCksdGhpcy5leHByZXNzaW9ucz1ufXZpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0TGl0ZXJhbEFycmF5KHRoaXMsdCl9fSx2ZT1jbGFzcyBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0LG4scil7c3VwZXIoZSx0KSx0aGlzLmtleXM9bix0aGlzLnZhbHVlcz1yfXZpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0TGl0ZXJhbE1hcCh0aGlzLHQpfX0sbWU9Y2xhc3MgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUsdCxuLHIpe3N1cGVyKGUsdCksdGhpcy5zdHJpbmdzPW4sdGhpcy5leHByZXNzaW9ucz1yfXZpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0SW50ZXJwb2xhdGlvbih0aGlzLHQpfX0sSz1jbGFzcyBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0LG4scixzKXtzdXBlcihlLHQpLHRoaXMub3BlcmF0aW9uPW4sdGhpcy5sZWZ0PXIsdGhpcy5yaWdodD1zfXZpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0QmluYXJ5KHRoaXMsdCl9fSxGPWNsYXNzIGV4dGVuZHMgS3tjb25zdHJ1Y3RvcihlLHQsbixyLHMsYSxpKXtzdXBlcihlLHQscyxhLGkpLHRoaXMub3BlcmF0b3I9bix0aGlzLmV4cHI9cn1zdGF0aWMgY3JlYXRlTWludXMoZSx0LG4pe3JldHVybiBuZXcgRihlLHQsXCItXCIsbixcIi1cIixuZXcgQihlLHQsMCksbil9c3RhdGljIGNyZWF0ZVBsdXMoZSx0LG4pe3JldHVybiBuZXcgRihlLHQsXCIrXCIsbixcIi1cIixuLG5ldyBCKGUsdCwwKSl9dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRVbmFyeSE9PXZvaWQgMD9lLnZpc2l0VW5hcnkodGhpcyx0KTplLnZpc2l0QmluYXJ5KHRoaXMsdCl9fSx4ZT1jbGFzcyBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUsdCksdGhpcy5leHByZXNzaW9uPW59dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRQcmVmaXhOb3QodGhpcyx0KX19LFNlPWNsYXNzIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoZSx0KSx0aGlzLmV4cHJlc3Npb249bn12aXNpdChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gZS52aXNpdE5vbk51bGxBc3NlcnQodGhpcyx0KX19LHllPWNsYXNzIGV4dGVuZHMgV3tjb25zdHJ1Y3RvcihlLHQsbixyLHMsYSxpKXtzdXBlcihlLHQsbiksdGhpcy5yZWNlaXZlcj1yLHRoaXMubmFtZT1zLHRoaXMuYXJncz1hLHRoaXMuYXJndW1lbnRTcGFuPWl9dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRNZXRob2RDYWxsKHRoaXMsdCl9fSx3ZT1jbGFzcyBleHRlbmRzIFd7Y29uc3RydWN0b3IoZSx0LG4scixzLGEsaSl7c3VwZXIoZSx0LG4pLHRoaXMucmVjZWl2ZXI9cix0aGlzLm5hbWU9cyx0aGlzLmFyZ3M9YSx0aGlzLmFyZ3VtZW50U3Bhbj1pfXZpc2l0KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBlLnZpc2l0U2FmZU1ldGhvZENhbGwodGhpcyx0KX19LFBlPWNsYXNzIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLHQpLHRoaXMudGFyZ2V0PW4sdGhpcy5hcmdzPXJ9dmlzaXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGUudmlzaXRGdW5jdGlvbkNhbGwodGhpcyx0KX19LFU9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0YXJ0PWUsdGhpcy5lbmQ9dH19LEc9Y2xhc3MgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUsdCxuLHIscyl7c3VwZXIobmV3IFYoMCx0PT09bnVsbD8wOnQubGVuZ3RoKSxuZXcgVShyLHQ9PT1udWxsP3I6cit0Lmxlbmd0aCkpLHRoaXMuYXN0PWUsdGhpcy5zb3VyY2U9dCx0aGlzLmxvY2F0aW9uPW4sdGhpcy5lcnJvcnM9c312aXNpdChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4gZS52aXNpdEFTVFdpdGhTb3VyY2U/ZS52aXNpdEFTVFdpdGhTb3VyY2UodGhpcyx0KTp0aGlzLmFzdC52aXNpdChlLHQpfXRvU3RyaW5nKCl7cmV0dXJuXCJcIi5jb25jYXQodGhpcy5zb3VyY2UsXCIgaW4gXCIpLmNvbmNhdCh0aGlzLmxvY2F0aW9uKX19LFJlPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnNvdXJjZVNwYW49ZSx0aGlzLmtleT10LHRoaXMudmFsdWU9bn19LFplPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnNvdXJjZVNwYW49ZSx0aGlzLmtleT10LHRoaXMudmFsdWU9bn19LGV0PWNsYXNze3Zpc2l0KGUsdCl7ZS52aXNpdCh0aGlzLHQpfXZpc2l0VW5hcnkoZSx0KXt0aGlzLnZpc2l0KGUuZXhwcix0KX12aXNpdEJpbmFyeShlLHQpe3RoaXMudmlzaXQoZS5sZWZ0LHQpLHRoaXMudmlzaXQoZS5yaWdodCx0KX12aXNpdENoYWluKGUsdCl7dGhpcy52aXNpdEFsbChlLmV4cHJlc3Npb25zLHQpfXZpc2l0Q29uZGl0aW9uYWwoZSx0KXt0aGlzLnZpc2l0KGUuY29uZGl0aW9uLHQpLHRoaXMudmlzaXQoZS50cnVlRXhwLHQpLHRoaXMudmlzaXQoZS5mYWxzZUV4cCx0KX12aXNpdFBpcGUoZSx0KXt0aGlzLnZpc2l0KGUuZXhwLHQpLHRoaXMudmlzaXRBbGwoZS5hcmdzLHQpfXZpc2l0RnVuY3Rpb25DYWxsKGUsdCl7ZS50YXJnZXQmJnRoaXMudmlzaXQoZS50YXJnZXQsdCksdGhpcy52aXNpdEFsbChlLmFyZ3MsdCl9dmlzaXRJbXBsaWNpdFJlY2VpdmVyKGUsdCl7fXZpc2l0VGhpc1JlY2VpdmVyKGUsdCl7fXZpc2l0SW50ZXJwb2xhdGlvbihlLHQpe3RoaXMudmlzaXRBbGwoZS5leHByZXNzaW9ucyx0KX12aXNpdEtleWVkUmVhZChlLHQpe3RoaXMudmlzaXQoZS5yZWNlaXZlcix0KSx0aGlzLnZpc2l0KGUua2V5LHQpfXZpc2l0S2V5ZWRXcml0ZShlLHQpe3RoaXMudmlzaXQoZS5yZWNlaXZlcix0KSx0aGlzLnZpc2l0KGUua2V5LHQpLHRoaXMudmlzaXQoZS52YWx1ZSx0KX12aXNpdExpdGVyYWxBcnJheShlLHQpe3RoaXMudmlzaXRBbGwoZS5leHByZXNzaW9ucyx0KX12aXNpdExpdGVyYWxNYXAoZSx0KXt0aGlzLnZpc2l0QWxsKGUudmFsdWVzLHQpfXZpc2l0TGl0ZXJhbFByaW1pdGl2ZShlLHQpe312aXNpdE1ldGhvZENhbGwoZSx0KXt0aGlzLnZpc2l0KGUucmVjZWl2ZXIsdCksdGhpcy52aXNpdEFsbChlLmFyZ3MsdCl9dmlzaXRQcmVmaXhOb3QoZSx0KXt0aGlzLnZpc2l0KGUuZXhwcmVzc2lvbix0KX12aXNpdE5vbk51bGxBc3NlcnQoZSx0KXt0aGlzLnZpc2l0KGUuZXhwcmVzc2lvbix0KX12aXNpdFByb3BlcnR5UmVhZChlLHQpe3RoaXMudmlzaXQoZS5yZWNlaXZlcix0KX12aXNpdFByb3BlcnR5V3JpdGUoZSx0KXt0aGlzLnZpc2l0KGUucmVjZWl2ZXIsdCksdGhpcy52aXNpdChlLnZhbHVlLHQpfXZpc2l0U2FmZVByb3BlcnR5UmVhZChlLHQpe3RoaXMudmlzaXQoZS5yZWNlaXZlcix0KX12aXNpdFNhZmVNZXRob2RDYWxsKGUsdCl7dGhpcy52aXNpdChlLnJlY2VpdmVyLHQpLHRoaXMudmlzaXRBbGwoZS5hcmdzLHQpfXZpc2l0U2FmZUtleWVkUmVhZChlLHQpe3RoaXMudmlzaXQoZS5yZWNlaXZlcix0KSx0aGlzLnZpc2l0KGUua2V5LHQpfXZpc2l0UXVvdGUoZSx0KXt9dmlzaXRBbGwoZSx0KXtmb3IobGV0IG4gb2YgZSl0aGlzLnZpc2l0KG4sdCl9fSxQdD1jbGFzc3t2aXNpdEltcGxpY2l0UmVjZWl2ZXIoZSx0KXtyZXR1cm4gZX12aXNpdFRoaXNSZWNlaXZlcihlLHQpe3JldHVybiBlfXZpc2l0SW50ZXJwb2xhdGlvbihlLHQpe3JldHVybiBuZXcgbWUoZS5zcGFuLGUuc291cmNlU3BhbixlLnN0cmluZ3MsdGhpcy52aXNpdEFsbChlLmV4cHJlc3Npb25zKSl9dmlzaXRMaXRlcmFsUHJpbWl0aXZlKGUsdCl7cmV0dXJuIG5ldyBCKGUuc3BhbixlLnNvdXJjZVNwYW4sZS52YWx1ZSl9dmlzaXRQcm9wZXJ0eVJlYWQoZSx0KXtyZXR1cm4gbmV3IHJlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5uYW1lU3BhbixlLnJlY2VpdmVyLnZpc2l0KHRoaXMpLGUubmFtZSl9dmlzaXRQcm9wZXJ0eVdyaXRlKGUsdCl7cmV0dXJuIG5ldyB1ZShlLnNwYW4sZS5zb3VyY2VTcGFuLGUubmFtZVNwYW4sZS5yZWNlaXZlci52aXNpdCh0aGlzKSxlLm5hbWUsZS52YWx1ZS52aXNpdCh0aGlzKSl9dmlzaXRTYWZlUHJvcGVydHlSZWFkKGUsdCl7cmV0dXJuIG5ldyBoZShlLnNwYW4sZS5zb3VyY2VTcGFuLGUubmFtZVNwYW4sZS5yZWNlaXZlci52aXNpdCh0aGlzKSxlLm5hbWUpfXZpc2l0TWV0aG9kQ2FsbChlLHQpe3JldHVybiBuZXcgeWUoZS5zcGFuLGUuc291cmNlU3BhbixlLm5hbWVTcGFuLGUucmVjZWl2ZXIudmlzaXQodGhpcyksZS5uYW1lLHRoaXMudmlzaXRBbGwoZS5hcmdzKSxlLmFyZ3VtZW50U3Bhbil9dmlzaXRTYWZlTWV0aG9kQ2FsbChlLHQpe3JldHVybiBuZXcgd2UoZS5zcGFuLGUuc291cmNlU3BhbixlLm5hbWVTcGFuLGUucmVjZWl2ZXIudmlzaXQodGhpcyksZS5uYW1lLHRoaXMudmlzaXRBbGwoZS5hcmdzKSxlLmFyZ3VtZW50U3Bhbil9dmlzaXRGdW5jdGlvbkNhbGwoZSx0KXtyZXR1cm4gbmV3IFBlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS50YXJnZXQudmlzaXQodGhpcyksdGhpcy52aXNpdEFsbChlLmFyZ3MpKX12aXNpdExpdGVyYWxBcnJheShlLHQpe3JldHVybiBuZXcgZ2UoZS5zcGFuLGUuc291cmNlU3Bhbix0aGlzLnZpc2l0QWxsKGUuZXhwcmVzc2lvbnMpKX12aXNpdExpdGVyYWxNYXAoZSx0KXtyZXR1cm4gbmV3IHZlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5rZXlzLHRoaXMudmlzaXRBbGwoZS52YWx1ZXMpKX12aXNpdFVuYXJ5KGUsdCl7c3dpdGNoKGUub3BlcmF0b3Ipe2Nhc2VcIitcIjpyZXR1cm4gRi5jcmVhdGVQbHVzKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5leHByLnZpc2l0KHRoaXMpKTtjYXNlXCItXCI6cmV0dXJuIEYuY3JlYXRlTWludXMoZS5zcGFuLGUuc291cmNlU3BhbixlLmV4cHIudmlzaXQodGhpcykpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biB1bmFyeSBvcGVyYXRvciBcIi5jb25jYXQoZS5vcGVyYXRvcikpfX12aXNpdEJpbmFyeShlLHQpe3JldHVybiBuZXcgSyhlLnNwYW4sZS5zb3VyY2VTcGFuLGUub3BlcmF0aW9uLGUubGVmdC52aXNpdCh0aGlzKSxlLnJpZ2h0LnZpc2l0KHRoaXMpKX12aXNpdFByZWZpeE5vdChlLHQpe3JldHVybiBuZXcgeGUoZS5zcGFuLGUuc291cmNlU3BhbixlLmV4cHJlc3Npb24udmlzaXQodGhpcykpfXZpc2l0Tm9uTnVsbEFzc2VydChlLHQpe3JldHVybiBuZXcgU2UoZS5zcGFuLGUuc291cmNlU3BhbixlLmV4cHJlc3Npb24udmlzaXQodGhpcykpfXZpc2l0Q29uZGl0aW9uYWwoZSx0KXtyZXR1cm4gbmV3IGNlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5jb25kaXRpb24udmlzaXQodGhpcyksZS50cnVlRXhwLnZpc2l0KHRoaXMpLGUuZmFsc2VFeHAudmlzaXQodGhpcykpfXZpc2l0UGlwZShlLHQpe3JldHVybiBuZXcgZmUoZS5zcGFuLGUuc291cmNlU3BhbixlLmV4cC52aXNpdCh0aGlzKSxlLm5hbWUsdGhpcy52aXNpdEFsbChlLmFyZ3MpLGUubmFtZVNwYW4pfXZpc2l0S2V5ZWRSZWFkKGUsdCl7cmV0dXJuIG5ldyBsZShlLnNwYW4sZS5zb3VyY2VTcGFuLGUucmVjZWl2ZXIudmlzaXQodGhpcyksZS5rZXkudmlzaXQodGhpcykpfXZpc2l0S2V5ZWRXcml0ZShlLHQpe3JldHVybiBuZXcgZGUoZS5zcGFuLGUuc291cmNlU3BhbixlLnJlY2VpdmVyLnZpc2l0KHRoaXMpLGUua2V5LnZpc2l0KHRoaXMpLGUudmFsdWUudmlzaXQodGhpcykpfXZpc2l0QWxsKGUpe2xldCB0PVtdO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXRbbl09ZVtuXS52aXNpdCh0aGlzKTtyZXR1cm4gdH12aXNpdENoYWluKGUsdCl7cmV0dXJuIG5ldyBvZShlLnNwYW4sZS5zb3VyY2VTcGFuLHRoaXMudmlzaXRBbGwoZS5leHByZXNzaW9ucykpfXZpc2l0UXVvdGUoZSx0KXtyZXR1cm4gbmV3IExlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5wcmVmaXgsZS51bmludGVycHJldGVkRXhwcmVzc2lvbixlLmxvY2F0aW9uKX12aXNpdFNhZmVLZXllZFJlYWQoZSx0KXtyZXR1cm4gbmV3IHBlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5yZWNlaXZlci52aXNpdCh0aGlzKSxlLmtleS52aXNpdCh0aGlzKSl9fSxDdD1jbGFzc3t2aXNpdEltcGxpY2l0UmVjZWl2ZXIoZSx0KXtyZXR1cm4gZX12aXNpdFRoaXNSZWNlaXZlcihlLHQpe3JldHVybiBlfXZpc2l0SW50ZXJwb2xhdGlvbihlLHQpe2xldCBuPXRoaXMudmlzaXRBbGwoZS5leHByZXNzaW9ucyk7cmV0dXJuIG4hPT1lLmV4cHJlc3Npb25zP25ldyBtZShlLnNwYW4sZS5zb3VyY2VTcGFuLGUuc3RyaW5ncyxuKTplfXZpc2l0TGl0ZXJhbFByaW1pdGl2ZShlLHQpe3JldHVybiBlfXZpc2l0UHJvcGVydHlSZWFkKGUsdCl7bGV0IG49ZS5yZWNlaXZlci52aXNpdCh0aGlzKTtyZXR1cm4gbiE9PWUucmVjZWl2ZXI/bmV3IHJlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5uYW1lU3BhbixuLGUubmFtZSk6ZX12aXNpdFByb3BlcnR5V3JpdGUoZSx0KXtsZXQgbj1lLnJlY2VpdmVyLnZpc2l0KHRoaXMpLHI9ZS52YWx1ZS52aXNpdCh0aGlzKTtyZXR1cm4gbiE9PWUucmVjZWl2ZXJ8fHIhPT1lLnZhbHVlP25ldyB1ZShlLnNwYW4sZS5zb3VyY2VTcGFuLGUubmFtZVNwYW4sbixlLm5hbWUscik6ZX12aXNpdFNhZmVQcm9wZXJ0eVJlYWQoZSx0KXtsZXQgbj1lLnJlY2VpdmVyLnZpc2l0KHRoaXMpO3JldHVybiBuIT09ZS5yZWNlaXZlcj9uZXcgaGUoZS5zcGFuLGUuc291cmNlU3BhbixlLm5hbWVTcGFuLG4sZS5uYW1lKTplfXZpc2l0TWV0aG9kQ2FsbChlLHQpe2xldCBuPWUucmVjZWl2ZXIudmlzaXQodGhpcykscj10aGlzLnZpc2l0QWxsKGUuYXJncyk7cmV0dXJuIG4hPT1lLnJlY2VpdmVyfHxyIT09ZS5hcmdzP25ldyB5ZShlLnNwYW4sZS5zb3VyY2VTcGFuLGUubmFtZVNwYW4sbixlLm5hbWUscixlLmFyZ3VtZW50U3Bhbik6ZX12aXNpdFNhZmVNZXRob2RDYWxsKGUsdCl7bGV0IG49ZS5yZWNlaXZlci52aXNpdCh0aGlzKSxyPXRoaXMudmlzaXRBbGwoZS5hcmdzKTtyZXR1cm4gbiE9PWUucmVjZWl2ZXJ8fHIhPT1lLmFyZ3M/bmV3IHdlKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5uYW1lU3BhbixuLGUubmFtZSxyLGUuYXJndW1lbnRTcGFuKTplfXZpc2l0RnVuY3Rpb25DYWxsKGUsdCl7bGV0IG49ZS50YXJnZXQmJmUudGFyZ2V0LnZpc2l0KHRoaXMpLHI9dGhpcy52aXNpdEFsbChlLmFyZ3MpO3JldHVybiBuIT09ZS50YXJnZXR8fHIhPT1lLmFyZ3M/bmV3IFBlKGUuc3BhbixlLnNvdXJjZVNwYW4sbixyKTplfXZpc2l0TGl0ZXJhbEFycmF5KGUsdCl7bGV0IG49dGhpcy52aXNpdEFsbChlLmV4cHJlc3Npb25zKTtyZXR1cm4gbiE9PWUuZXhwcmVzc2lvbnM/bmV3IGdlKGUuc3BhbixlLnNvdXJjZVNwYW4sbik6ZX12aXNpdExpdGVyYWxNYXAoZSx0KXtsZXQgbj10aGlzLnZpc2l0QWxsKGUudmFsdWVzKTtyZXR1cm4gbiE9PWUudmFsdWVzP25ldyB2ZShlLnNwYW4sZS5zb3VyY2VTcGFuLGUua2V5cyxuKTplfXZpc2l0VW5hcnkoZSx0KXtsZXQgbj1lLmV4cHIudmlzaXQodGhpcyk7aWYobiE9PWUuZXhwcilzd2l0Y2goZS5vcGVyYXRvcil7Y2FzZVwiK1wiOnJldHVybiBGLmNyZWF0ZVBsdXMoZS5zcGFuLGUuc291cmNlU3BhbixuKTtjYXNlXCItXCI6cmV0dXJuIEYuY3JlYXRlTWludXMoZS5zcGFuLGUuc291cmNlU3BhbixuKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVua25vd24gdW5hcnkgb3BlcmF0b3IgXCIuY29uY2F0KGUub3BlcmF0b3IpKX1yZXR1cm4gZX12aXNpdEJpbmFyeShlLHQpe2xldCBuPWUubGVmdC52aXNpdCh0aGlzKSxyPWUucmlnaHQudmlzaXQodGhpcyk7cmV0dXJuIG4hPT1lLmxlZnR8fHIhPT1lLnJpZ2h0P25ldyBLKGUuc3BhbixlLnNvdXJjZVNwYW4sZS5vcGVyYXRpb24sbixyKTplfXZpc2l0UHJlZml4Tm90KGUsdCl7bGV0IG49ZS5leHByZXNzaW9uLnZpc2l0KHRoaXMpO3JldHVybiBuIT09ZS5leHByZXNzaW9uP25ldyB4ZShlLnNwYW4sZS5zb3VyY2VTcGFuLG4pOmV9dmlzaXROb25OdWxsQXNzZXJ0KGUsdCl7bGV0IG49ZS5leHByZXNzaW9uLnZpc2l0KHRoaXMpO3JldHVybiBuIT09ZS5leHByZXNzaW9uP25ldyBTZShlLnNwYW4sZS5zb3VyY2VTcGFuLG4pOmV9dmlzaXRDb25kaXRpb25hbChlLHQpe2xldCBuPWUuY29uZGl0aW9uLnZpc2l0KHRoaXMpLHI9ZS50cnVlRXhwLnZpc2l0KHRoaXMpLHM9ZS5mYWxzZUV4cC52aXNpdCh0aGlzKTtyZXR1cm4gbiE9PWUuY29uZGl0aW9ufHxyIT09ZS50cnVlRXhwfHxzIT09ZS5mYWxzZUV4cD9uZXcgY2UoZS5zcGFuLGUuc291cmNlU3BhbixuLHIscyk6ZX12aXNpdFBpcGUoZSx0KXtsZXQgbj1lLmV4cC52aXNpdCh0aGlzKSxyPXRoaXMudmlzaXRBbGwoZS5hcmdzKTtyZXR1cm4gbiE9PWUuZXhwfHxyIT09ZS5hcmdzP25ldyBmZShlLnNwYW4sZS5zb3VyY2VTcGFuLG4sZS5uYW1lLHIsZS5uYW1lU3Bhbik6ZX12aXNpdEtleWVkUmVhZChlLHQpe2xldCBuPWUucmVjZWl2ZXIudmlzaXQodGhpcykscj1lLmtleS52aXNpdCh0aGlzKTtyZXR1cm4gbiE9PWUucmVjZWl2ZXJ8fHIhPT1lLmtleT9uZXcgbGUoZS5zcGFuLGUuc291cmNlU3BhbixuLHIpOmV9dmlzaXRLZXllZFdyaXRlKGUsdCl7bGV0IG49ZS5yZWNlaXZlci52aXNpdCh0aGlzKSxyPWUua2V5LnZpc2l0KHRoaXMpLHM9ZS52YWx1ZS52aXNpdCh0aGlzKTtyZXR1cm4gbiE9PWUucmVjZWl2ZXJ8fHIhPT1lLmtleXx8cyE9PWUudmFsdWU/bmV3IGRlKGUuc3BhbixlLnNvdXJjZVNwYW4sbixyLHMpOmV9dmlzaXRBbGwoZSl7bGV0IHQ9W10sbj0hMTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoOysrcil7bGV0IHM9ZVtyXSxhPXMudmlzaXQodGhpcyk7dFtyXT1hLG49bnx8YSE9PXN9cmV0dXJuIG4/dDplfXZpc2l0Q2hhaW4oZSx0KXtsZXQgbj10aGlzLnZpc2l0QWxsKGUuZXhwcmVzc2lvbnMpO3JldHVybiBuIT09ZS5leHByZXNzaW9ucz9uZXcgb2UoZS5zcGFuLGUuc291cmNlU3BhbixuKTplfXZpc2l0UXVvdGUoZSx0KXtyZXR1cm4gZX12aXNpdFNhZmVLZXllZFJlYWQoZSx0KXtsZXQgbj1lLnJlY2VpdmVyLnZpc2l0KHRoaXMpLHI9ZS5rZXkudmlzaXQodGhpcyk7cmV0dXJuIG4hPT1lLnJlY2VpdmVyfHxyIT09ZS5rZXk/bmV3IHBlKGUuc3BhbixlLnNvdXJjZVNwYW4sbixyKTplfX0sRXQ9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scixzLGEpe3RoaXMubmFtZT1lLHRoaXMuZXhwcmVzc2lvbj10LHRoaXMudHlwZT1uLHRoaXMuc291cmNlU3Bhbj1yLHRoaXMua2V5U3Bhbj1zLHRoaXMudmFsdWVTcGFuPWEsdGhpcy5pc0xpdGVyYWw9dGhpcy50eXBlPT09c2UuTElURVJBTF9BVFRSLHRoaXMuaXNBbmltYXRpb249dGhpcy50eXBlPT09c2UuQU5JTUFUSU9OfX0sZnVuY3Rpb24oZSl7ZVtlLkRFRkFVTFQ9MF09XCJERUZBVUxUXCIsZVtlLkxJVEVSQUxfQVRUUj0xXT1cIkxJVEVSQUxfQVRUUlwiLGVbZS5BTklNQVRJT049Ml09XCJBTklNQVRJT05cIn0oc2V8fChzZT17fSkpLEF0PWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIscyxhLGkpe3RoaXMubmFtZT1lLHRoaXMudGFyZ2V0T3JQaGFzZT10LHRoaXMudHlwZT1uLHRoaXMuaGFuZGxlcj1yLHRoaXMuc291cmNlU3Bhbj1zLHRoaXMuaGFuZGxlclNwYW49YSx0aGlzLmtleVNwYW49aX19LF90PWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIscyl7dGhpcy5uYW1lPWUsdGhpcy52YWx1ZT10LHRoaXMuc291cmNlU3Bhbj1uLHRoaXMua2V5U3Bhbj1yLHRoaXMudmFsdWVTcGFuPXN9fSxJdD1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyLHMsYSxpLGwpe3RoaXMubmFtZT1lLHRoaXMudHlwZT10LHRoaXMuc2VjdXJpdHlDb250ZXh0PW4sdGhpcy52YWx1ZT1yLHRoaXMudW5pdD1zLHRoaXMuc291cmNlU3Bhbj1hLHRoaXMua2V5U3Bhbj1pLHRoaXMudmFsdWVTcGFuPWx9fX19KTtmdW5jdGlvbiBtbihlKXtyZXR1cm4gZT49bnQmJmU8PXJ0fHxlPT1kdH1mdW5jdGlvbiBRKGUpe3JldHVybiAkdDw9ZSYmZTw9anR9ZnVuY3Rpb24geG4oZSl7cmV0dXJuIGU+PWx0JiZlPD1wdHx8ZT49dXQmJmU8PWh0fWZ1bmN0aW9uIG10KGUpe3JldHVybiBlPT09YXR8fGU9PT1zdHx8ZT09PVh0fXZhciBDZSxudCxPdCxrdCxOdCxidCxydCxMdCxzdCxSdCxpdCxUdCxqZSxhdCxFZSx6LEJ0LG90LGVlLGN0LEgsVGUsWCx0ZSxLdCxpZSxNdCxGZSwkdCxqdCx1dCxGdCxodCxBZSxVdCxuZSxXdCxLZSxsdCxHdCxWdCxxdCxRdCxEdCx6dCxIdCxwdCxCZSxVZSxfZSxkdCxYdCxKdD1ZKHtcIm5vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21waWxlci9lc20yMDE1L3NyYy9jaGFycy5qc1wiKCl7TCgpLENlPTAsbnQ9OSxPdD0xMCxrdD0xMSxOdD0xMixidD0xMyxydD0zMixMdD0zMyxzdD0zNCxSdD0zNSxpdD0zNixUdD0zNyxqZT0zOCxhdD0zOSxFZT00MCx6PTQxLEJ0PTQyLG90PTQzLGVlPTQ0LGN0PTQ1LEg9NDYsVGU9NDcsWD01OCx0ZT01OSxLdD02MCxpZT02MSxNdD02MixGZT02MywkdD00OCxqdD01Nyx1dD02NSxGdD02OSxodD05MCxBZT05MSxVdD05MixuZT05MyxXdD05NCxLZT05NSxsdD05NyxHdD0xMDEsVnQ9MTAyLHF0PTExMCxRdD0xMTQsRHQ9MTE2LHp0PTExNyxIdD0xMTgscHQ9MTIyLEJlPTEyMyxVZT0xMjQsX2U9MTI1LGR0PTE2MCxYdD05Nn19KSxZdD17fTtYZShZdCx7RU9GOigpPT5JZSxMZXhlcjooKT0+ZW4sVG9rZW46KCk9PiQsVG9rZW5UeXBlOigpPT5TLGlzSWRlbnRpZmllcjooKT0+WnR9KTtmdW5jdGlvbiB4dChlLHQsbil7cmV0dXJuIG5ldyAkKGUsdCxTLkNoYXJhY3RlcixuLFN0cmluZy5mcm9tQ2hhckNvZGUobikpfWZ1bmN0aW9uIFNuKGUsdCxuKXtyZXR1cm4gbmV3ICQoZSx0LFMuSWRlbnRpZmllciwwLG4pfWZ1bmN0aW9uIHluKGUsdCxuKXtyZXR1cm4gbmV3ICQoZSx0LFMuUHJpdmF0ZUlkZW50aWZpZXIsMCxuKX1mdW5jdGlvbiB3bihlLHQsbil7cmV0dXJuIG5ldyAkKGUsdCxTLktleXdvcmQsMCxuKX1mdW5jdGlvbiBNZShlLHQsbil7cmV0dXJuIG5ldyAkKGUsdCxTLk9wZXJhdG9yLDAsbil9ZnVuY3Rpb24gUG4oZSx0LG4pe3JldHVybiBuZXcgJChlLHQsUy5TdHJpbmcsMCxuKX1mdW5jdGlvbiBDbihlLHQsbil7cmV0dXJuIG5ldyAkKGUsdCxTLk51bWJlcixuLFwiXCIpfWZ1bmN0aW9uIEVuKGUsdCxuKXtyZXR1cm4gbmV3ICQoZSx0LFMuRXJyb3IsMCxuKX1mdW5jdGlvbiBXZShlKXtyZXR1cm4gbHQ8PWUmJmU8PXB0fHx1dDw9ZSYmZTw9aHR8fGU9PUtlfHxlPT1pdH1mdW5jdGlvbiBadChlKXtpZihlLmxlbmd0aD09MClyZXR1cm4hMTtsZXQgdD1uZXcgVmUoZSk7aWYoIVdlKHQucGVlaykpcmV0dXJuITE7Zm9yKHQuYWR2YW5jZSgpO3QucGVlayE9PUNlOyl7aWYoIUdlKHQucGVlaykpcmV0dXJuITE7dC5hZHZhbmNlKCl9cmV0dXJuITB9ZnVuY3Rpb24gR2UoZSl7cmV0dXJuIHhuKGUpfHxRKGUpfHxlPT1LZXx8ZT09aXR9ZnVuY3Rpb24gQW4oZSl7cmV0dXJuIGU9PUd0fHxlPT1GdH1mdW5jdGlvbiBfbihlKXtyZXR1cm4gZT09Y3R8fGU9PW90fWZ1bmN0aW9uIEluKGUpe3N3aXRjaChlKXtjYXNlIHF0OnJldHVybiBPdDtjYXNlIFZ0OnJldHVybiBOdDtjYXNlIFF0OnJldHVybiBidDtjYXNlIER0OnJldHVybiBudDtjYXNlIEh0OnJldHVybiBrdDtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBPbihlKXtsZXQgdD1wYXJzZUludChlKTtpZihpc05hTih0KSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgXCIrZSk7cmV0dXJuIHR9dmFyIFMsU3QsZW4sJCxJZSxWZSx0bj1ZKHtcIm5vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21waWxlci9lc20yMDE1L3NyYy9leHByZXNzaW9uX3BhcnNlci9sZXhlci5qc1wiKCl7TCgpLEp0KCksZnVuY3Rpb24oZSl7ZVtlLkNoYXJhY3Rlcj0wXT1cIkNoYXJhY3RlclwiLGVbZS5JZGVudGlmaWVyPTFdPVwiSWRlbnRpZmllclwiLGVbZS5Qcml2YXRlSWRlbnRpZmllcj0yXT1cIlByaXZhdGVJZGVudGlmaWVyXCIsZVtlLktleXdvcmQ9M109XCJLZXl3b3JkXCIsZVtlLlN0cmluZz00XT1cIlN0cmluZ1wiLGVbZS5PcGVyYXRvcj01XT1cIk9wZXJhdG9yXCIsZVtlLk51bWJlcj02XT1cIk51bWJlclwiLGVbZS5FcnJvcj03XT1cIkVycm9yXCJ9KFN8fChTPXt9KSksU3Q9W1widmFyXCIsXCJsZXRcIixcImFzXCIsXCJudWxsXCIsXCJ1bmRlZmluZWRcIixcInRydWVcIixcImZhbHNlXCIsXCJpZlwiLFwiZWxzZVwiLFwidGhpc1wiXSxlbj1jbGFzc3t0b2tlbml6ZShlKXtsZXQgdD1uZXcgVmUoZSksbj1bXSxyPXQuc2NhblRva2VuKCk7Zm9yKDtyIT1udWxsOyluLnB1c2gocikscj10LnNjYW5Ub2tlbigpO3JldHVybiBufX0sJD1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyLHMpe3RoaXMuaW5kZXg9ZSx0aGlzLmVuZD10LHRoaXMudHlwZT1uLHRoaXMubnVtVmFsdWU9cix0aGlzLnN0clZhbHVlPXN9aXNDaGFyYWN0ZXIoZSl7cmV0dXJuIHRoaXMudHlwZT09Uy5DaGFyYWN0ZXImJnRoaXMubnVtVmFsdWU9PWV9aXNOdW1iZXIoKXtyZXR1cm4gdGhpcy50eXBlPT1TLk51bWJlcn1pc1N0cmluZygpe3JldHVybiB0aGlzLnR5cGU9PVMuU3RyaW5nfWlzT3BlcmF0b3IoZSl7cmV0dXJuIHRoaXMudHlwZT09Uy5PcGVyYXRvciYmdGhpcy5zdHJWYWx1ZT09ZX1pc0lkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy50eXBlPT1TLklkZW50aWZpZXJ9aXNQcml2YXRlSWRlbnRpZmllcigpe3JldHVybiB0aGlzLnR5cGU9PVMuUHJpdmF0ZUlkZW50aWZpZXJ9aXNLZXl3b3JkKCl7cmV0dXJuIHRoaXMudHlwZT09Uy5LZXl3b3JkfWlzS2V5d29yZExldCgpe3JldHVybiB0aGlzLnR5cGU9PVMuS2V5d29yZCYmdGhpcy5zdHJWYWx1ZT09XCJsZXRcIn1pc0tleXdvcmRBcygpe3JldHVybiB0aGlzLnR5cGU9PVMuS2V5d29yZCYmdGhpcy5zdHJWYWx1ZT09XCJhc1wifWlzS2V5d29yZE51bGwoKXtyZXR1cm4gdGhpcy50eXBlPT1TLktleXdvcmQmJnRoaXMuc3RyVmFsdWU9PVwibnVsbFwifWlzS2V5d29yZFVuZGVmaW5lZCgpe3JldHVybiB0aGlzLnR5cGU9PVMuS2V5d29yZCYmdGhpcy5zdHJWYWx1ZT09XCJ1bmRlZmluZWRcIn1pc0tleXdvcmRUcnVlKCl7cmV0dXJuIHRoaXMudHlwZT09Uy5LZXl3b3JkJiZ0aGlzLnN0clZhbHVlPT1cInRydWVcIn1pc0tleXdvcmRGYWxzZSgpe3JldHVybiB0aGlzLnR5cGU9PVMuS2V5d29yZCYmdGhpcy5zdHJWYWx1ZT09XCJmYWxzZVwifWlzS2V5d29yZFRoaXMoKXtyZXR1cm4gdGhpcy50eXBlPT1TLktleXdvcmQmJnRoaXMuc3RyVmFsdWU9PVwidGhpc1wifWlzRXJyb3IoKXtyZXR1cm4gdGhpcy50eXBlPT1TLkVycm9yfXRvTnVtYmVyKCl7cmV0dXJuIHRoaXMudHlwZT09Uy5OdW1iZXI/dGhpcy5udW1WYWx1ZTotMX10b1N0cmluZygpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgUy5DaGFyYWN0ZXI6Y2FzZSBTLklkZW50aWZpZXI6Y2FzZSBTLktleXdvcmQ6Y2FzZSBTLk9wZXJhdG9yOmNhc2UgUy5Qcml2YXRlSWRlbnRpZmllcjpjYXNlIFMuU3RyaW5nOmNhc2UgUy5FcnJvcjpyZXR1cm4gdGhpcy5zdHJWYWx1ZTtjYXNlIFMuTnVtYmVyOnJldHVybiB0aGlzLm51bVZhbHVlLnRvU3RyaW5nKCk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19fSxJZT1uZXcgJCgtMSwtMSxTLkNoYXJhY3RlciwwLFwiXCIpLFZlPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuaW5wdXQ9ZSx0aGlzLnBlZWs9MCx0aGlzLmluZGV4PS0xLHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuYWR2YW5jZSgpfWFkdmFuY2UoKXt0aGlzLnBlZWs9Kyt0aGlzLmluZGV4Pj10aGlzLmxlbmd0aD9DZTp0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5pbmRleCl9c2NhblRva2VuKCl7bGV0IGU9dGhpcy5pbnB1dCx0PXRoaXMubGVuZ3RoLG49dGhpcy5wZWVrLHI9dGhpcy5pbmRleDtmb3IoO248PXJ0OylpZigrK3I+PXQpe249Q2U7YnJlYWt9ZWxzZSBuPWUuY2hhckNvZGVBdChyKTtpZih0aGlzLnBlZWs9bix0aGlzLmluZGV4PXIscj49dClyZXR1cm4gbnVsbDtpZihXZShuKSlyZXR1cm4gdGhpcy5zY2FuSWRlbnRpZmllcigpO2lmKFEobikpcmV0dXJuIHRoaXMuc2Nhbk51bWJlcihyKTtsZXQgcz1yO3N3aXRjaChuKXtjYXNlIEg6cmV0dXJuIHRoaXMuYWR2YW5jZSgpLFEodGhpcy5wZWVrKT90aGlzLnNjYW5OdW1iZXIocyk6eHQocyx0aGlzLmluZGV4LEgpO2Nhc2UgRWU6Y2FzZSB6OmNhc2UgQmU6Y2FzZSBfZTpjYXNlIEFlOmNhc2UgbmU6Y2FzZSBlZTpjYXNlIFg6Y2FzZSB0ZTpyZXR1cm4gdGhpcy5zY2FuQ2hhcmFjdGVyKHMsbik7Y2FzZSBhdDpjYXNlIHN0OnJldHVybiB0aGlzLnNjYW5TdHJpbmcoKTtjYXNlIFJ0OnJldHVybiB0aGlzLnNjYW5Qcml2YXRlSWRlbnRpZmllcigpO2Nhc2Ugb3Q6Y2FzZSBjdDpjYXNlIEJ0OmNhc2UgVGU6Y2FzZSBUdDpjYXNlIFd0OnJldHVybiB0aGlzLnNjYW5PcGVyYXRvcihzLFN0cmluZy5mcm9tQ2hhckNvZGUobikpO2Nhc2UgRmU6cmV0dXJuIHRoaXMuc2NhblF1ZXN0aW9uKHMpO2Nhc2UgS3Q6Y2FzZSBNdDpyZXR1cm4gdGhpcy5zY2FuQ29tcGxleE9wZXJhdG9yKHMsU3RyaW5nLmZyb21DaGFyQ29kZShuKSxpZSxcIj1cIik7Y2FzZSBMdDpjYXNlIGllOnJldHVybiB0aGlzLnNjYW5Db21wbGV4T3BlcmF0b3IocyxTdHJpbmcuZnJvbUNoYXJDb2RlKG4pLGllLFwiPVwiLGllLFwiPVwiKTtjYXNlIGplOnJldHVybiB0aGlzLnNjYW5Db21wbGV4T3BlcmF0b3IocyxcIiZcIixqZSxcIiZcIik7Y2FzZSBVZTpyZXR1cm4gdGhpcy5zY2FuQ29tcGxleE9wZXJhdG9yKHMsXCJ8XCIsVWUsXCJ8XCIpO2Nhc2UgZHQ6Zm9yKDttbih0aGlzLnBlZWspOyl0aGlzLmFkdmFuY2UoKTtyZXR1cm4gdGhpcy5zY2FuVG9rZW4oKX1yZXR1cm4gdGhpcy5hZHZhbmNlKCksdGhpcy5lcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIFtcIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShuKSxcIl1cIiksMCl9c2NhbkNoYXJhY3RlcihlLHQpe3JldHVybiB0aGlzLmFkdmFuY2UoKSx4dChlLHRoaXMuaW5kZXgsdCl9c2Nhbk9wZXJhdG9yKGUsdCl7cmV0dXJuIHRoaXMuYWR2YW5jZSgpLE1lKGUsdGhpcy5pbmRleCx0KX1zY2FuQ29tcGxleE9wZXJhdG9yKGUsdCxuLHIscyxhKXt0aGlzLmFkdmFuY2UoKTtsZXQgaT10O3JldHVybiB0aGlzLnBlZWs9PW4mJih0aGlzLmFkdmFuY2UoKSxpKz1yKSxzIT1udWxsJiZ0aGlzLnBlZWs9PXMmJih0aGlzLmFkdmFuY2UoKSxpKz1hKSxNZShlLHRoaXMuaW5kZXgsaSl9c2NhbklkZW50aWZpZXIoKXtsZXQgZT10aGlzLmluZGV4O2Zvcih0aGlzLmFkdmFuY2UoKTtHZSh0aGlzLnBlZWspOyl0aGlzLmFkdmFuY2UoKTtsZXQgdD10aGlzLmlucHV0LnN1YnN0cmluZyhlLHRoaXMuaW5kZXgpO3JldHVybiBTdC5pbmRleE9mKHQpPi0xP3duKGUsdGhpcy5pbmRleCx0KTpTbihlLHRoaXMuaW5kZXgsdCl9c2NhblByaXZhdGVJZGVudGlmaWVyKCl7bGV0IGU9dGhpcy5pbmRleDtpZih0aGlzLmFkdmFuY2UoKSwhV2UodGhpcy5wZWVrKSlyZXR1cm4gdGhpcy5lcnJvcihcIkludmFsaWQgY2hhcmFjdGVyIFsjXVwiLC0xKTtmb3IoO0dlKHRoaXMucGVlayk7KXRoaXMuYWR2YW5jZSgpO2xldCB0PXRoaXMuaW5wdXQuc3Vic3RyaW5nKGUsdGhpcy5pbmRleCk7cmV0dXJuIHluKGUsdGhpcy5pbmRleCx0KX1zY2FuTnVtYmVyKGUpe2xldCB0PXRoaXMuaW5kZXg9PT1lLG49ITE7Zm9yKHRoaXMuYWR2YW5jZSgpOzspe2lmKCFRKHRoaXMucGVlaykpaWYodGhpcy5wZWVrPT09S2Upe2lmKCFRKHRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLmluZGV4LTEpKXx8IVEodGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMuaW5kZXgrMSkpKXJldHVybiB0aGlzLmVycm9yKFwiSW52YWxpZCBudW1lcmljIHNlcGFyYXRvclwiLDApO249ITB9ZWxzZSBpZih0aGlzLnBlZWs9PT1IKXQ9ITE7ZWxzZSBpZihBbih0aGlzLnBlZWspKXtpZih0aGlzLmFkdmFuY2UoKSxfbih0aGlzLnBlZWspJiZ0aGlzLmFkdmFuY2UoKSwhUSh0aGlzLnBlZWspKXJldHVybiB0aGlzLmVycm9yKFwiSW52YWxpZCBleHBvbmVudFwiLC0xKTt0PSExfWVsc2UgYnJlYWs7dGhpcy5hZHZhbmNlKCl9bGV0IHI9dGhpcy5pbnB1dC5zdWJzdHJpbmcoZSx0aGlzLmluZGV4KTtuJiYocj1yLnJlcGxhY2UoL18vZyxcIlwiKSk7bGV0IHM9dD9PbihyKTpwYXJzZUZsb2F0KHIpO3JldHVybiBDbihlLHRoaXMuaW5kZXgscyl9c2NhblN0cmluZygpe2xldCBlPXRoaXMuaW5kZXgsdD10aGlzLnBlZWs7dGhpcy5hZHZhbmNlKCk7bGV0IG49XCJcIixyPXRoaXMuaW5kZXgscz10aGlzLmlucHV0O2Zvcig7dGhpcy5wZWVrIT10OylpZih0aGlzLnBlZWs9PVV0KXtuKz1zLnN1YnN0cmluZyhyLHRoaXMuaW5kZXgpLHRoaXMuYWR2YW5jZSgpO2xldCBpO2lmKHRoaXMucGVlaz10aGlzLnBlZWssdGhpcy5wZWVrPT16dCl7bGV0IGw9cy5zdWJzdHJpbmcodGhpcy5pbmRleCsxLHRoaXMuaW5kZXgrNSk7aWYoL15bMC05YS1mXSskL2kudGVzdChsKSlpPXBhcnNlSW50KGwsMTYpO2Vsc2UgcmV0dXJuIHRoaXMuZXJyb3IoXCJJbnZhbGlkIHVuaWNvZGUgZXNjYXBlIFtcXFxcdVwiLmNvbmNhdChsLFwiXVwiKSwwKTtmb3IobGV0IGg9MDtoPDU7aCsrKXRoaXMuYWR2YW5jZSgpfWVsc2UgaT1Jbih0aGlzLnBlZWspLHRoaXMuYWR2YW5jZSgpO24rPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkscj10aGlzLmluZGV4fWVsc2V7aWYodGhpcy5wZWVrPT1DZSlyZXR1cm4gdGhpcy5lcnJvcihcIlVudGVybWluYXRlZCBxdW90ZVwiLDApO3RoaXMuYWR2YW5jZSgpfWxldCBhPXMuc3Vic3RyaW5nKHIsdGhpcy5pbmRleCk7cmV0dXJuIHRoaXMuYWR2YW5jZSgpLFBuKGUsdGhpcy5pbmRleCxuK2EpfXNjYW5RdWVzdGlvbihlKXt0aGlzLmFkdmFuY2UoKTtsZXQgdD1cIj9cIjtyZXR1cm4odGhpcy5wZWVrPT09RmV8fHRoaXMucGVlaz09PUgpJiYodCs9dGhpcy5wZWVrPT09SD9cIi5cIjpcIj9cIix0aGlzLmFkdmFuY2UoKSksTWUoZSx0aGlzLmluZGV4LHQpfWVycm9yKGUsdCl7bGV0IG49dGhpcy5pbmRleCt0O3JldHVybiBFbihuLHRoaXMuaW5kZXgsXCJMZXhlciBFcnJvcjogXCIuY29uY2F0KGUsXCIgYXQgY29sdW1uIFwiKS5jb25jYXQobixcIiBpbiBleHByZXNzaW9uIFtcIikuY29uY2F0KHRoaXMuaW5wdXQsXCJdXCIpKX19fX0pO2Z1bmN0aW9uIGtuKGUsdCl7aWYodCE9bnVsbCYmIShBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD09MikpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgJ1wiLmNvbmNhdChlLFwiJyB0byBiZSBhbiBhcnJheSwgW3N0YXJ0LCBlbmRdLlwiKSk7aWYodCE9bnVsbCl7bGV0IG49dFswXSxyPXRbMV07bm4uZm9yRWFjaChzPT57aWYocy50ZXN0KG4pfHxzLnRlc3QocikpdGhyb3cgbmV3IEVycm9yKFwiWydcIi5jb25jYXQobixcIicsICdcIikuY29uY2F0KHIsXCInXSBjb250YWlucyB1bnVzYWJsZSBpbnRlcnBvbGF0aW9uIHN5bWJvbC5cIikpfSl9fXZhciBubixObj1ZKHtcIm5vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21waWxlci9lc20yMDE1L3NyYy9hc3NlcnRpb25zLmpzXCIoKXtMKCksbm49Wy9eXFxzKiQvLC9bPD5dLywvXlt7fV0kLywvJigjfFthLXpdKS9pLC9eXFwvXFwvL119fSksJGUsSixibj1ZKHtcIm5vZGVfbW9kdWxlcy9AYW5ndWxhci9jb21waWxlci9lc20yMDE1L3NyYy9tbF9wYXJzZXIvaW50ZXJwb2xhdGlvbl9jb25maWcuanNcIigpe0woKSxObigpLCRlPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdGFydD1lLHRoaXMuZW5kPXR9c3RhdGljIGZyb21BcnJheShlKXtyZXR1cm4gZT8oa24oXCJpbnRlcnBvbGF0aW9uXCIsZSksbmV3ICRlKGVbMF0sZVsxXSkpOkp9fSxKPW5ldyAkZShcInt7XCIsXCJ9fVwiKX19KSxybj17fTtYZShybix7SXZ5UGFyc2VyOigpPT5zbixQYXJzZXI6KCk9PkRlLFNwbGl0SW50ZXJwb2xhdGlvbjooKT0+cWUsVGVtcGxhdGVCaW5kaW5nUGFyc2VSZXN1bHQ6KCk9PlFlLF9QYXJzZUFTVDooKT0+RH0pO3ZhciBxZSxRZSxEZSxzbixaLEQseXQsd3QsTG49WSh7XCJub2RlX21vZHVsZXMvQGFuZ3VsYXIvY29tcGlsZXIvZXNtMjAxNS9zcmMvZXhwcmVzc2lvbl9wYXJzZXIvcGFyc2VyLmpzXCIoKXtMKCksSnQoKSxibigpLHR0KCksdG4oKSxxZT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5zdHJpbmdzPWUsdGhpcy5leHByZXNzaW9ucz10LHRoaXMub2Zmc2V0cz1ufX0sUWU9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMudGVtcGxhdGVCaW5kaW5ncz1lLHRoaXMud2FybmluZ3M9dCx0aGlzLmVycm9ycz1ufX0sRGU9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fbGV4ZXI9ZSx0aGlzLmVycm9ycz1bXSx0aGlzLnNpbXBsZUV4cHJlc3Npb25DaGVja2VyPXl0fXBhcnNlQWN0aW9uKGUsdCxuKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106Sjt0aGlzLl9jaGVja05vSW50ZXJwb2xhdGlvbihlLHQscik7bGV0IHM9dGhpcy5fc3RyaXBDb21tZW50cyhlKSxhPXRoaXMuX2xleGVyLnRva2VuaXplKHRoaXMuX3N0cmlwQ29tbWVudHMoZSkpLGk9bmV3IEQoZSx0LG4sYSxzLmxlbmd0aCwhMCx0aGlzLmVycm9ycyxlLmxlbmd0aC1zLmxlbmd0aCkucGFyc2VDaGFpbigpO3JldHVybiBuZXcgRyhpLGUsdCxuLHRoaXMuZXJyb3JzKX1wYXJzZUJpbmRpbmcoZSx0LG4pe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTpKLHM9dGhpcy5fcGFyc2VCaW5kaW5nQXN0KGUsdCxuLHIpO3JldHVybiBuZXcgRyhzLGUsdCxuLHRoaXMuZXJyb3JzKX1jaGVja1NpbXBsZUV4cHJlc3Npb24oZSl7bGV0IHQ9bmV3IHRoaXMuc2ltcGxlRXhwcmVzc2lvbkNoZWNrZXI7cmV0dXJuIGUudmlzaXQodCksdC5lcnJvcnN9cGFyc2VTaW1wbGVCaW5kaW5nKGUsdCxuKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106SixzPXRoaXMuX3BhcnNlQmluZGluZ0FzdChlLHQsbixyKSxhPXRoaXMuY2hlY2tTaW1wbGVFeHByZXNzaW9uKHMpO3JldHVybiBhLmxlbmd0aD4wJiZ0aGlzLl9yZXBvcnRFcnJvcihcIkhvc3QgYmluZGluZyBleHByZXNzaW9uIGNhbm5vdCBjb250YWluIFwiLmNvbmNhdChhLmpvaW4oXCIgXCIpKSxlLHQpLG5ldyBHKHMsZSx0LG4sdGhpcy5lcnJvcnMpfV9yZXBvcnRFcnJvcihlLHQsbixyKXt0aGlzLmVycm9ycy5wdXNoKG5ldyBhZShlLHQsbixyKSl9X3BhcnNlQmluZGluZ0FzdChlLHQsbixyKXtsZXQgcz10aGlzLl9wYXJzZVF1b3RlKGUsdCxuKTtpZihzIT1udWxsKXJldHVybiBzO3RoaXMuX2NoZWNrTm9JbnRlcnBvbGF0aW9uKGUsdCxyKTtsZXQgYT10aGlzLl9zdHJpcENvbW1lbnRzKGUpLGk9dGhpcy5fbGV4ZXIudG9rZW5pemUoYSk7cmV0dXJuIG5ldyBEKGUsdCxuLGksYS5sZW5ndGgsITEsdGhpcy5lcnJvcnMsZS5sZW5ndGgtYS5sZW5ndGgpLnBhcnNlQ2hhaW4oKX1fcGFyc2VRdW90ZShlLHQsbil7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtsZXQgcj1lLmluZGV4T2YoXCI6XCIpO2lmKHI9PS0xKXJldHVybiBudWxsO2xldCBzPWUuc3Vic3RyaW5nKDAscikudHJpbSgpO2lmKCFadChzKSlyZXR1cm4gbnVsbDtsZXQgYT1lLnN1YnN0cmluZyhyKzEpLGk9bmV3IFYoMCxlLmxlbmd0aCk7cmV0dXJuIG5ldyBMZShpLGkudG9BYnNvbHV0ZShuKSxzLGEsdCl9cGFyc2VUZW1wbGF0ZUJpbmRpbmdzKGUsdCxuLHIscyl7bGV0IGE9dGhpcy5fbGV4ZXIudG9rZW5pemUodCk7cmV0dXJuIG5ldyBEKHQsbixzLGEsdC5sZW5ndGgsITEsdGhpcy5lcnJvcnMsMCkucGFyc2VUZW1wbGF0ZUJpbmRpbmdzKHtzb3VyY2U6ZSxzcGFuOm5ldyBVKHIscitlLmxlbmd0aCl9KX1wYXJzZUludGVycG9sYXRpb24oZSx0LG4pe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTpKLHtzdHJpbmdzOnMsZXhwcmVzc2lvbnM6YSxvZmZzZXRzOml9PXRoaXMuc3BsaXRJbnRlcnBvbGF0aW9uKGUsdCxyKTtpZihhLmxlbmd0aD09PTApcmV0dXJuIG51bGw7bGV0IGw9W107Zm9yKGxldCBoPTA7aDxhLmxlbmd0aDsrK2gpe2xldCBQPWFbaF0udGV4dCxwPXRoaXMuX3N0cmlwQ29tbWVudHMoUCkseD10aGlzLl9sZXhlci50b2tlbml6ZShwKSxBPW5ldyBEKGUsdCxuLHgscC5sZW5ndGgsITEsdGhpcy5lcnJvcnMsaVtoXSsoUC5sZW5ndGgtcC5sZW5ndGgpKS5wYXJzZUNoYWluKCk7bC5wdXNoKEEpfXJldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYXRpb25Bc3Qocy5tYXAoaD0+aC50ZXh0KSxsLGUsdCxuKX1wYXJzZUludGVycG9sYXRpb25FeHByZXNzaW9uKGUsdCxuKXtsZXQgcj10aGlzLl9zdHJpcENvbW1lbnRzKGUpLHM9dGhpcy5fbGV4ZXIudG9rZW5pemUociksYT1uZXcgRChlLHQsbixzLHIubGVuZ3RoLCExLHRoaXMuZXJyb3JzLDApLnBhcnNlQ2hhaW4oKSxpPVtcIlwiLFwiXCJdO3JldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYXRpb25Bc3QoaSxbYV0sZSx0LG4pfWNyZWF0ZUludGVycG9sYXRpb25Bc3QoZSx0LG4scixzKXtsZXQgYT1uZXcgVigwLG4ubGVuZ3RoKSxpPW5ldyBtZShhLGEudG9BYnNvbHV0ZShzKSxlLHQpO3JldHVybiBuZXcgRyhpLG4scixzLHRoaXMuZXJyb3JzKX1zcGxpdEludGVycG9sYXRpb24oZSx0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06SixyPVtdLHM9W10sYT1bXSxpPTAsbD0hMSxoPSExLHtzdGFydDpQLGVuZDpwfT1uO2Zvcig7aTxlLmxlbmd0aDspaWYobCl7bGV0IHg9aSxBPXgrUC5sZW5ndGgsYj10aGlzLl9nZXRJbnRlcnBvbGF0aW9uRW5kSW5kZXgoZSxwLEEpO2lmKGI9PT0tMSl7bD0hMSxoPSEwO2JyZWFrfWxldCBfPWIrcC5sZW5ndGgsUj1lLnN1YnN0cmluZyhBLGIpO1IudHJpbSgpLmxlbmd0aD09PTAmJnRoaXMuX3JlcG9ydEVycm9yKFwiQmxhbmsgZXhwcmVzc2lvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGludGVycG9sYXRlZCBzdHJpbmdzXCIsZSxcImF0IGNvbHVtbiBcIi5jb25jYXQoaSxcIiBpblwiKSx0KSxzLnB1c2goe3RleHQ6UixzdGFydDp4LGVuZDpffSksYS5wdXNoKEEpLGk9XyxsPSExfWVsc2V7bGV0IHg9aTtpPWUuaW5kZXhPZihQLGkpLGk9PT0tMSYmKGk9ZS5sZW5ndGgpO2xldCBBPWUuc3Vic3RyaW5nKHgsaSk7ci5wdXNoKHt0ZXh0OkEsc3RhcnQ6eCxlbmQ6aX0pLGw9ITB9aWYoIWwpaWYoaCl7bGV0IHg9cltyLmxlbmd0aC0xXTt4LnRleHQrPWUuc3Vic3RyaW5nKGkpLHguZW5kPWUubGVuZ3RofWVsc2Ugci5wdXNoKHt0ZXh0OmUuc3Vic3RyaW5nKGkpLHN0YXJ0OmksZW5kOmUubGVuZ3RofSk7cmV0dXJuIG5ldyBxZShyLHMsYSl9d3JhcExpdGVyYWxQcmltaXRpdmUoZSx0LG4pe2xldCByPW5ldyBWKDAsZT09bnVsbD8wOmUubGVuZ3RoKTtyZXR1cm4gbmV3IEcobmV3IEIocixyLnRvQWJzb2x1dGUobiksZSksZSx0LG4sdGhpcy5lcnJvcnMpfV9zdHJpcENvbW1lbnRzKGUpe2xldCB0PXRoaXMuX2NvbW1lbnRTdGFydChlKTtyZXR1cm4gdCE9bnVsbD9lLnN1YnN0cmluZygwLHQpLnRyaW0oKTplfV9jb21tZW50U3RhcnQoZSl7bGV0IHQ9bnVsbDtmb3IobGV0IG49MDtuPGUubGVuZ3RoLTE7bisrKXtsZXQgcj1lLmNoYXJDb2RlQXQobikscz1lLmNoYXJDb2RlQXQobisxKTtpZihyPT09VGUmJnM9PVRlJiZ0PT1udWxsKXJldHVybiBuO3Q9PT1yP3Q9bnVsbDp0PT1udWxsJiZtdChyKSYmKHQ9cil9cmV0dXJuIG51bGx9X2NoZWNrTm9JbnRlcnBvbGF0aW9uKGUsdCxuKXtsZXR7c3RhcnQ6cixlbmQ6c309bixhPS0xLGk9LTE7Zm9yKGxldCBsIG9mIHRoaXMuX2ZvckVhY2hVbnF1b3RlZENoYXIoZSwwKSlpZihhPT09LTEpZS5zdGFydHNXaXRoKHIpJiYoYT1sKTtlbHNlIGlmKGk9dGhpcy5fZ2V0SW50ZXJwb2xhdGlvbkVuZEluZGV4KGUscyxsKSxpPi0xKWJyZWFrO2E+LTEmJmk+LTEmJnRoaXMuX3JlcG9ydEVycm9yKFwiR290IGludGVycG9sYXRpb24gKFwiLmNvbmNhdChyKS5jb25jYXQocyxcIikgd2hlcmUgZXhwcmVzc2lvbiB3YXMgZXhwZWN0ZWRcIiksZSxcImF0IGNvbHVtbiBcIi5jb25jYXQoYSxcIiBpblwiKSx0KX1fZ2V0SW50ZXJwb2xhdGlvbkVuZEluZGV4KGUsdCxuKXtmb3IobGV0IHIgb2YgdGhpcy5fZm9yRWFjaFVucXVvdGVkQ2hhcihlLG4pKXtpZihlLnN0YXJ0c1dpdGgodCxyKSlyZXR1cm4gcjtpZihlLnN0YXJ0c1dpdGgoXCIvL1wiLHIpKXJldHVybiBlLmluZGV4T2YodCxyKX1yZXR1cm4tMX0qX2ZvckVhY2hVbnF1b3RlZENoYXIoZSx0KXtsZXQgbj1udWxsLHI9MDtmb3IobGV0IHM9dDtzPGUubGVuZ3RoO3MrKyl7bGV0IGE9ZVtzXTttdChlLmNoYXJDb2RlQXQocykpJiYobj09PW51bGx8fG49PT1hKSYmciUyPT09MD9uPW49PT1udWxsP2E6bnVsbDpuPT09bnVsbCYmKHlpZWxkIHMpLHI9YT09PVwiXFxcXFwiP3IrMTowfX19LHNuPWNsYXNzIGV4dGVuZHMgRGV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2ltcGxlRXhwcmVzc2lvbkNoZWNrZXI9d3R9fSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT1cIk5vbmVcIixlW2UuV3JpdGFibGU9MV09XCJXcml0YWJsZVwifShafHwoWj17fSkpLEQ9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scixzLGEsaSxsKXt0aGlzLmlucHV0PWUsdGhpcy5sb2NhdGlvbj10LHRoaXMuYWJzb2x1dGVPZmZzZXQ9bix0aGlzLnRva2Vucz1yLHRoaXMuaW5wdXRMZW5ndGg9cyx0aGlzLnBhcnNlQWN0aW9uPWEsdGhpcy5lcnJvcnM9aSx0aGlzLm9mZnNldD1sLHRoaXMucnBhcmVuc0V4cGVjdGVkPTAsdGhpcy5yYnJhY2tldHNFeHBlY3RlZD0wLHRoaXMucmJyYWNlc0V4cGVjdGVkPTAsdGhpcy5jb250ZXh0PVouTm9uZSx0aGlzLnNvdXJjZVNwYW5DYWNoZT1uZXcgTWFwLHRoaXMuaW5kZXg9MH1wZWVrKGUpe2xldCB0PXRoaXMuaW5kZXgrZTtyZXR1cm4gdDx0aGlzLnRva2Vucy5sZW5ndGg/dGhpcy50b2tlbnNbdF06SWV9Z2V0IG5leHQoKXtyZXR1cm4gdGhpcy5wZWVrKDApfWdldCBhdEVPRigpe3JldHVybiB0aGlzLmluZGV4Pj10aGlzLnRva2Vucy5sZW5ndGh9Z2V0IGlucHV0SW5kZXgoKXtyZXR1cm4gdGhpcy5hdEVPRj90aGlzLmN1cnJlbnRFbmRJbmRleDp0aGlzLm5leHQuaW5kZXgrdGhpcy5vZmZzZXR9Z2V0IGN1cnJlbnRFbmRJbmRleCgpe3JldHVybiB0aGlzLmluZGV4PjA/dGhpcy5wZWVrKC0xKS5lbmQrdGhpcy5vZmZzZXQ6dGhpcy50b2tlbnMubGVuZ3RoPT09MD90aGlzLmlucHV0TGVuZ3RoK3RoaXMub2Zmc2V0OnRoaXMubmV4dC5pbmRleCt0aGlzLm9mZnNldH1nZXQgY3VycmVudEFic29sdXRlT2Zmc2V0KCl7cmV0dXJuIHRoaXMuYWJzb2x1dGVPZmZzZXQrdGhpcy5pbnB1dEluZGV4fXNwYW4oZSx0KXtsZXQgbj10aGlzLmN1cnJlbnRFbmRJbmRleDtpZih0IT09dm9pZCAwJiZ0PnRoaXMuY3VycmVudEVuZEluZGV4JiYobj10KSxlPm4pe2xldCByPW47bj1lLGU9cn1yZXR1cm4gbmV3IFYoZSxuKX1zb3VyY2VTcGFuKGUsdCl7bGV0IG49XCJcIi5jb25jYXQoZSxcIkBcIikuY29uY2F0KHRoaXMuaW5wdXRJbmRleCxcIjpcIikuY29uY2F0KHQpO3JldHVybiB0aGlzLnNvdXJjZVNwYW5DYWNoZS5oYXMobil8fHRoaXMuc291cmNlU3BhbkNhY2hlLnNldChuLHRoaXMuc3BhbihlLHQpLnRvQWJzb2x1dGUodGhpcy5hYnNvbHV0ZU9mZnNldCkpLHRoaXMuc291cmNlU3BhbkNhY2hlLmdldChuKX1hZHZhbmNlKCl7dGhpcy5pbmRleCsrfXdpdGhDb250ZXh0KGUsdCl7dGhpcy5jb250ZXh0fD1lO2xldCBuPXQoKTtyZXR1cm4gdGhpcy5jb250ZXh0Xj1lLG59Y29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKGUpe3JldHVybiB0aGlzLm5leHQuaXNDaGFyYWN0ZXIoZSk/KHRoaXMuYWR2YW5jZSgpLCEwKTohMX1wZWVrS2V5d29yZExldCgpe3JldHVybiB0aGlzLm5leHQuaXNLZXl3b3JkTGV0KCl9cGVla0tleXdvcmRBcygpe3JldHVybiB0aGlzLm5leHQuaXNLZXl3b3JkQXMoKX1leHBlY3RDaGFyYWN0ZXIoZSl7dGhpcy5jb25zdW1lT3B0aW9uYWxDaGFyYWN0ZXIoZSl8fHRoaXMuZXJyb3IoXCJNaXNzaW5nIGV4cGVjdGVkIFwiLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKSl9Y29uc3VtZU9wdGlvbmFsT3BlcmF0b3IoZSl7cmV0dXJuIHRoaXMubmV4dC5pc09wZXJhdG9yKGUpPyh0aGlzLmFkdmFuY2UoKSwhMCk6ITF9ZXhwZWN0T3BlcmF0b3IoZSl7dGhpcy5jb25zdW1lT3B0aW9uYWxPcGVyYXRvcihlKXx8dGhpcy5lcnJvcihcIk1pc3NpbmcgZXhwZWN0ZWQgb3BlcmF0b3IgXCIuY29uY2F0KGUpKX1wcmV0dHlQcmludFRva2VuKGUpe3JldHVybiBlPT09SWU/XCJlbmQgb2YgaW5wdXRcIjpcInRva2VuIFwiLmNvbmNhdChlKX1leHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkKCl7bGV0IGU9dGhpcy5uZXh0O3JldHVybiFlLmlzSWRlbnRpZmllcigpJiYhZS5pc0tleXdvcmQoKT8oZS5pc1ByaXZhdGVJZGVudGlmaWVyKCk/dGhpcy5fcmVwb3J0RXJyb3JGb3JQcml2YXRlSWRlbnRpZmllcihlLFwiZXhwZWN0ZWQgaWRlbnRpZmllciBvciBrZXl3b3JkXCIpOnRoaXMuZXJyb3IoXCJVbmV4cGVjdGVkIFwiLmNvbmNhdCh0aGlzLnByZXR0eVByaW50VG9rZW4oZSksXCIsIGV4cGVjdGVkIGlkZW50aWZpZXIgb3Iga2V5d29yZFwiKSksbnVsbCk6KHRoaXMuYWR2YW5jZSgpLGUudG9TdHJpbmcoKSl9ZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZE9yU3RyaW5nKCl7bGV0IGU9dGhpcy5uZXh0O3JldHVybiFlLmlzSWRlbnRpZmllcigpJiYhZS5pc0tleXdvcmQoKSYmIWUuaXNTdHJpbmcoKT8oZS5pc1ByaXZhdGVJZGVudGlmaWVyKCk/dGhpcy5fcmVwb3J0RXJyb3JGb3JQcml2YXRlSWRlbnRpZmllcihlLFwiZXhwZWN0ZWQgaWRlbnRpZmllciwga2V5d29yZCBvciBzdHJpbmdcIik6dGhpcy5lcnJvcihcIlVuZXhwZWN0ZWQgXCIuY29uY2F0KHRoaXMucHJldHR5UHJpbnRUb2tlbihlKSxcIiwgZXhwZWN0ZWQgaWRlbnRpZmllciwga2V5d29yZCwgb3Igc3RyaW5nXCIpKSxcIlwiKToodGhpcy5hZHZhbmNlKCksZS50b1N0cmluZygpKX1wYXJzZUNoYWluKCl7bGV0IGU9W10sdD10aGlzLmlucHV0SW5kZXg7Zm9yKDt0aGlzLmluZGV4PHRoaXMudG9rZW5zLmxlbmd0aDspe2xldCBuPXRoaXMucGFyc2VQaXBlKCk7aWYoZS5wdXNoKG4pLHRoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKHRlKSlmb3IodGhpcy5wYXJzZUFjdGlvbnx8dGhpcy5lcnJvcihcIkJpbmRpbmcgZXhwcmVzc2lvbiBjYW5ub3QgY29udGFpbiBjaGFpbmVkIGV4cHJlc3Npb25cIik7dGhpcy5jb25zdW1lT3B0aW9uYWxDaGFyYWN0ZXIodGUpOyk7ZWxzZSB0aGlzLmluZGV4PHRoaXMudG9rZW5zLmxlbmd0aCYmdGhpcy5lcnJvcihcIlVuZXhwZWN0ZWQgdG9rZW4gJ1wiLmNvbmNhdCh0aGlzLm5leHQsXCInXCIpKX1pZihlLmxlbmd0aD09MCl7bGV0IG49dGhpcy5vZmZzZXQscj10aGlzLm9mZnNldCt0aGlzLmlucHV0TGVuZ3RoO3JldHVybiBuZXcgTSh0aGlzLnNwYW4obixyKSx0aGlzLnNvdXJjZVNwYW4obixyKSl9cmV0dXJuIGUubGVuZ3RoPT0xP2VbMF06bmV3IG9lKHRoaXMuc3Bhbih0KSx0aGlzLnNvdXJjZVNwYW4odCksZSl9cGFyc2VQaXBlKCl7bGV0IGU9dGhpcy5pbnB1dEluZGV4LHQ9dGhpcy5wYXJzZUV4cHJlc3Npb24oKTtpZih0aGlzLmNvbnN1bWVPcHRpb25hbE9wZXJhdG9yKFwifFwiKSl7dGhpcy5wYXJzZUFjdGlvbiYmdGhpcy5lcnJvcihcIkNhbm5vdCBoYXZlIGEgcGlwZSBpbiBhbiBhY3Rpb24gZXhwcmVzc2lvblwiKTtkb3tsZXQgbj10aGlzLmlucHV0SW5kZXgscj10aGlzLmV4cGVjdElkZW50aWZpZXJPcktleXdvcmQoKSxzLGE7ciE9PW51bGw/cz10aGlzLnNvdXJjZVNwYW4obik6KHI9XCJcIixhPXRoaXMubmV4dC5pbmRleCE9PS0xP3RoaXMubmV4dC5pbmRleDp0aGlzLmlucHV0TGVuZ3RoK3RoaXMub2Zmc2V0LHM9bmV3IFYoYSxhKS50b0Fic29sdXRlKHRoaXMuYWJzb2x1dGVPZmZzZXQpKTtsZXQgaT1bXTtmb3IoO3RoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKFgpOylpLnB1c2godGhpcy5wYXJzZUV4cHJlc3Npb24oKSk7dD1uZXcgZmUodGhpcy5zcGFuKGUpLHRoaXMuc291cmNlU3BhbihlLGEpLHQscixpLHMpfXdoaWxlKHRoaXMuY29uc3VtZU9wdGlvbmFsT3BlcmF0b3IoXCJ8XCIpKX1yZXR1cm4gdH1wYXJzZUV4cHJlc3Npb24oKXtyZXR1cm4gdGhpcy5wYXJzZUNvbmRpdGlvbmFsKCl9cGFyc2VDb25kaXRpb25hbCgpe2xldCBlPXRoaXMuaW5wdXRJbmRleCx0PXRoaXMucGFyc2VMb2dpY2FsT3IoKTtpZih0aGlzLmNvbnN1bWVPcHRpb25hbE9wZXJhdG9yKFwiP1wiKSl7bGV0IG49dGhpcy5wYXJzZVBpcGUoKSxyO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKFgpKXI9dGhpcy5wYXJzZVBpcGUoKTtlbHNle2xldCBzPXRoaXMuaW5wdXRJbmRleCxhPXRoaXMuaW5wdXQuc3Vic3RyaW5nKGUscyk7dGhpcy5lcnJvcihcIkNvbmRpdGlvbmFsIGV4cHJlc3Npb24gXCIuY29uY2F0KGEsXCIgcmVxdWlyZXMgYWxsIDMgZXhwcmVzc2lvbnNcIikpLHI9bmV3IE0odGhpcy5zcGFuKGUpLHRoaXMuc291cmNlU3BhbihlKSl9cmV0dXJuIG5ldyBjZSh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLHQsbixyKX1lbHNlIHJldHVybiB0fXBhcnNlTG9naWNhbE9yKCl7bGV0IGU9dGhpcy5pbnB1dEluZGV4LHQ9dGhpcy5wYXJzZUxvZ2ljYWxBbmQoKTtmb3IoO3RoaXMuY29uc3VtZU9wdGlvbmFsT3BlcmF0b3IoXCJ8fFwiKTspe2xldCBuPXRoaXMucGFyc2VMb2dpY2FsQW5kKCk7dD1uZXcgSyh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLFwifHxcIix0LG4pfXJldHVybiB0fXBhcnNlTG9naWNhbEFuZCgpe2xldCBlPXRoaXMuaW5wdXRJbmRleCx0PXRoaXMucGFyc2VOdWxsaXNoQ29hbGVzY2luZygpO2Zvcig7dGhpcy5jb25zdW1lT3B0aW9uYWxPcGVyYXRvcihcIiYmXCIpOyl7bGV0IG49dGhpcy5wYXJzZU51bGxpc2hDb2FsZXNjaW5nKCk7dD1uZXcgSyh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLFwiJiZcIix0LG4pfXJldHVybiB0fXBhcnNlTnVsbGlzaENvYWxlc2NpbmcoKXtsZXQgZT10aGlzLmlucHV0SW5kZXgsdD10aGlzLnBhcnNlRXF1YWxpdHkoKTtmb3IoO3RoaXMuY29uc3VtZU9wdGlvbmFsT3BlcmF0b3IoXCI/P1wiKTspe2xldCBuPXRoaXMucGFyc2VFcXVhbGl0eSgpO3Q9bmV3IEsodGhpcy5zcGFuKGUpLHRoaXMuc291cmNlU3BhbihlKSxcIj8/XCIsdCxuKX1yZXR1cm4gdH1wYXJzZUVxdWFsaXR5KCl7bGV0IGU9dGhpcy5pbnB1dEluZGV4LHQ9dGhpcy5wYXJzZVJlbGF0aW9uYWwoKTtmb3IoO3RoaXMubmV4dC50eXBlPT1TLk9wZXJhdG9yOyl7bGV0IG49dGhpcy5uZXh0LnN0clZhbHVlO3N3aXRjaChuKXtjYXNlXCI9PVwiOmNhc2VcIj09PVwiOmNhc2VcIiE9XCI6Y2FzZVwiIT09XCI6dGhpcy5hZHZhbmNlKCk7bGV0IHI9dGhpcy5wYXJzZVJlbGF0aW9uYWwoKTt0PW5ldyBLKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSksbix0LHIpO2NvbnRpbnVlfWJyZWFrfXJldHVybiB0fXBhcnNlUmVsYXRpb25hbCgpe2xldCBlPXRoaXMuaW5wdXRJbmRleCx0PXRoaXMucGFyc2VBZGRpdGl2ZSgpO2Zvcig7dGhpcy5uZXh0LnR5cGU9PVMuT3BlcmF0b3I7KXtsZXQgbj10aGlzLm5leHQuc3RyVmFsdWU7c3dpdGNoKG4pe2Nhc2VcIjxcIjpjYXNlXCI+XCI6Y2FzZVwiPD1cIjpjYXNlXCI+PVwiOnRoaXMuYWR2YW5jZSgpO2xldCByPXRoaXMucGFyc2VBZGRpdGl2ZSgpO3Q9bmV3IEsodGhpcy5zcGFuKGUpLHRoaXMuc291cmNlU3BhbihlKSxuLHQscik7Y29udGludWV9YnJlYWt9cmV0dXJuIHR9cGFyc2VBZGRpdGl2ZSgpe2xldCBlPXRoaXMuaW5wdXRJbmRleCx0PXRoaXMucGFyc2VNdWx0aXBsaWNhdGl2ZSgpO2Zvcig7dGhpcy5uZXh0LnR5cGU9PVMuT3BlcmF0b3I7KXtsZXQgbj10aGlzLm5leHQuc3RyVmFsdWU7c3dpdGNoKG4pe2Nhc2VcIitcIjpjYXNlXCItXCI6dGhpcy5hZHZhbmNlKCk7bGV0IHI9dGhpcy5wYXJzZU11bHRpcGxpY2F0aXZlKCk7dD1uZXcgSyh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLG4sdCxyKTtjb250aW51ZX1icmVha31yZXR1cm4gdH1wYXJzZU11bHRpcGxpY2F0aXZlKCl7bGV0IGU9dGhpcy5pbnB1dEluZGV4LHQ9dGhpcy5wYXJzZVByZWZpeCgpO2Zvcig7dGhpcy5uZXh0LnR5cGU9PVMuT3BlcmF0b3I7KXtsZXQgbj10aGlzLm5leHQuc3RyVmFsdWU7c3dpdGNoKG4pe2Nhc2VcIipcIjpjYXNlXCIlXCI6Y2FzZVwiL1wiOnRoaXMuYWR2YW5jZSgpO2xldCByPXRoaXMucGFyc2VQcmVmaXgoKTt0PW5ldyBLKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSksbix0LHIpO2NvbnRpbnVlfWJyZWFrfXJldHVybiB0fXBhcnNlUHJlZml4KCl7aWYodGhpcy5uZXh0LnR5cGU9PVMuT3BlcmF0b3Ipe2xldCBlPXRoaXMuaW5wdXRJbmRleCx0PXRoaXMubmV4dC5zdHJWYWx1ZSxuO3N3aXRjaCh0KXtjYXNlXCIrXCI6cmV0dXJuIHRoaXMuYWR2YW5jZSgpLG49dGhpcy5wYXJzZVByZWZpeCgpLEYuY3JlYXRlUGx1cyh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLG4pO2Nhc2VcIi1cIjpyZXR1cm4gdGhpcy5hZHZhbmNlKCksbj10aGlzLnBhcnNlUHJlZml4KCksRi5jcmVhdGVNaW51cyh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLG4pO2Nhc2VcIiFcIjpyZXR1cm4gdGhpcy5hZHZhbmNlKCksbj10aGlzLnBhcnNlUHJlZml4KCksbmV3IHhlKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSksbil9fXJldHVybiB0aGlzLnBhcnNlQ2FsbENoYWluKCl9cGFyc2VDYWxsQ2hhaW4oKXtsZXQgZT10aGlzLmlucHV0SW5kZXgsdD10aGlzLnBhcnNlUHJpbWFyeSgpO2Zvcig7OylpZih0aGlzLmNvbnN1bWVPcHRpb25hbENoYXJhY3RlcihIKSl0PXRoaXMucGFyc2VBY2Nlc3NNZW1iZXJPck1ldGhvZENhbGwodCxlLCExKTtlbHNlIGlmKHRoaXMuY29uc3VtZU9wdGlvbmFsT3BlcmF0b3IoXCI/LlwiKSl0PXRoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKEFlKT90aGlzLnBhcnNlS2V5ZWRSZWFkT3JXcml0ZSh0LGUsITApOnRoaXMucGFyc2VBY2Nlc3NNZW1iZXJPck1ldGhvZENhbGwodCxlLCEwKTtlbHNlIGlmKHRoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKEFlKSl0PXRoaXMucGFyc2VLZXllZFJlYWRPcldyaXRlKHQsZSwhMSk7ZWxzZSBpZih0aGlzLmNvbnN1bWVPcHRpb25hbENoYXJhY3RlcihFZSkpe3RoaXMucnBhcmVuc0V4cGVjdGVkKys7bGV0IG49dGhpcy5wYXJzZUNhbGxBcmd1bWVudHMoKTt0aGlzLnJwYXJlbnNFeHBlY3RlZC0tLHRoaXMuZXhwZWN0Q2hhcmFjdGVyKHopLHQ9bmV3IFBlKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSksdCxuKX1lbHNlIGlmKHRoaXMuY29uc3VtZU9wdGlvbmFsT3BlcmF0b3IoXCIhXCIpKXQ9bmV3IFNlKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSksdCk7ZWxzZSByZXR1cm4gdH1wYXJzZVByaW1hcnkoKXtsZXQgZT10aGlzLmlucHV0SW5kZXg7aWYodGhpcy5jb25zdW1lT3B0aW9uYWxDaGFyYWN0ZXIoRWUpKXt0aGlzLnJwYXJlbnNFeHBlY3RlZCsrO2xldCB0PXRoaXMucGFyc2VQaXBlKCk7cmV0dXJuIHRoaXMucnBhcmVuc0V4cGVjdGVkLS0sdGhpcy5leHBlY3RDaGFyYWN0ZXIoeiksdH1lbHNle2lmKHRoaXMubmV4dC5pc0tleXdvcmROdWxsKCkpcmV0dXJuIHRoaXMuYWR2YW5jZSgpLG5ldyBCKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSksbnVsbCk7aWYodGhpcy5uZXh0LmlzS2V5d29yZFVuZGVmaW5lZCgpKXJldHVybiB0aGlzLmFkdmFuY2UoKSxuZXcgQih0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLHZvaWQgMCk7aWYodGhpcy5uZXh0LmlzS2V5d29yZFRydWUoKSlyZXR1cm4gdGhpcy5hZHZhbmNlKCksbmV3IEIodGhpcy5zcGFuKGUpLHRoaXMuc291cmNlU3BhbihlKSwhMCk7aWYodGhpcy5uZXh0LmlzS2V5d29yZEZhbHNlKCkpcmV0dXJuIHRoaXMuYWR2YW5jZSgpLG5ldyBCKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSksITEpO2lmKHRoaXMubmV4dC5pc0tleXdvcmRUaGlzKCkpcmV0dXJuIHRoaXMuYWR2YW5jZSgpLG5ldyBZZSh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpKTtpZih0aGlzLmNvbnN1bWVPcHRpb25hbENoYXJhY3RlcihBZSkpe3RoaXMucmJyYWNrZXRzRXhwZWN0ZWQrKztsZXQgdD10aGlzLnBhcnNlRXhwcmVzc2lvbkxpc3QobmUpO3JldHVybiB0aGlzLnJicmFja2V0c0V4cGVjdGVkLS0sdGhpcy5leHBlY3RDaGFyYWN0ZXIobmUpLG5ldyBnZSh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpLHQpfWVsc2V7aWYodGhpcy5uZXh0LmlzQ2hhcmFjdGVyKEJlKSlyZXR1cm4gdGhpcy5wYXJzZUxpdGVyYWxNYXAoKTtpZih0aGlzLm5leHQuaXNJZGVudGlmaWVyKCkpcmV0dXJuIHRoaXMucGFyc2VBY2Nlc3NNZW1iZXJPck1ldGhvZENhbGwobmV3IE9lKHRoaXMuc3BhbihlKSx0aGlzLnNvdXJjZVNwYW4oZSkpLGUsITEpO2lmKHRoaXMubmV4dC5pc051bWJlcigpKXtsZXQgdD10aGlzLm5leHQudG9OdW1iZXIoKTtyZXR1cm4gdGhpcy5hZHZhbmNlKCksbmV3IEIodGhpcy5zcGFuKGUpLHRoaXMuc291cmNlU3BhbihlKSx0KX1lbHNlIGlmKHRoaXMubmV4dC5pc1N0cmluZygpKXtsZXQgdD10aGlzLm5leHQudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5hZHZhbmNlKCksbmV3IEIodGhpcy5zcGFuKGUpLHRoaXMuc291cmNlU3BhbihlKSx0KX1lbHNlIHJldHVybiB0aGlzLm5leHQuaXNQcml2YXRlSWRlbnRpZmllcigpPyh0aGlzLl9yZXBvcnRFcnJvckZvclByaXZhdGVJZGVudGlmaWVyKHRoaXMubmV4dCxudWxsKSxuZXcgTSh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpKSk6dGhpcy5pbmRleD49dGhpcy50b2tlbnMubGVuZ3RoPyh0aGlzLmVycm9yKFwiVW5leHBlY3RlZCBlbmQgb2YgZXhwcmVzc2lvbjogXCIuY29uY2F0KHRoaXMuaW5wdXQpKSxuZXcgTSh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpKSk6KHRoaXMuZXJyb3IoXCJVbmV4cGVjdGVkIHRva2VuIFwiLmNvbmNhdCh0aGlzLm5leHQpKSxuZXcgTSh0aGlzLnNwYW4oZSksdGhpcy5zb3VyY2VTcGFuKGUpKSl9fX1wYXJzZUV4cHJlc3Npb25MaXN0KGUpe2xldCB0PVtdO2RvIGlmKCF0aGlzLm5leHQuaXNDaGFyYWN0ZXIoZSkpdC5wdXNoKHRoaXMucGFyc2VQaXBlKCkpO2Vsc2UgYnJlYWs7d2hpbGUodGhpcy5jb25zdW1lT3B0aW9uYWxDaGFyYWN0ZXIoZWUpKTtyZXR1cm4gdH1wYXJzZUxpdGVyYWxNYXAoKXtsZXQgZT1bXSx0PVtdLG49dGhpcy5pbnB1dEluZGV4O2lmKHRoaXMuZXhwZWN0Q2hhcmFjdGVyKEJlKSwhdGhpcy5jb25zdW1lT3B0aW9uYWxDaGFyYWN0ZXIoX2UpKXt0aGlzLnJicmFjZXNFeHBlY3RlZCsrO2Rve2xldCByPXRoaXMuaW5wdXRJbmRleCxzPXRoaXMubmV4dC5pc1N0cmluZygpLGE9dGhpcy5leHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkT3JTdHJpbmcoKTtpZihlLnB1c2goe2tleTphLHF1b3RlZDpzfSkscyl0aGlzLmV4cGVjdENoYXJhY3RlcihYKSx0LnB1c2godGhpcy5wYXJzZVBpcGUoKSk7ZWxzZSBpZih0aGlzLmNvbnN1bWVPcHRpb25hbENoYXJhY3RlcihYKSl0LnB1c2godGhpcy5wYXJzZVBpcGUoKSk7ZWxzZXtsZXQgaT10aGlzLnNwYW4ociksbD10aGlzLnNvdXJjZVNwYW4ocik7dC5wdXNoKG5ldyByZShpLGwsbCxuZXcgT2UoaSxsKSxhKSl9fXdoaWxlKHRoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKGVlKSk7dGhpcy5yYnJhY2VzRXhwZWN0ZWQtLSx0aGlzLmV4cGVjdENoYXJhY3RlcihfZSl9cmV0dXJuIG5ldyB2ZSh0aGlzLnNwYW4obiksdGhpcy5zb3VyY2VTcGFuKG4pLGUsdCl9cGFyc2VBY2Nlc3NNZW1iZXJPck1ldGhvZENhbGwoZSx0LG4pe2xldCByPXRoaXMuaW5wdXRJbmRleCxzPXRoaXMud2l0aENvbnRleHQoWi5Xcml0YWJsZSwoKT0+e3ZhciBpO2xldCBsPShpPXRoaXMuZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZCgpKSE9PW51bGwmJmkhPT12b2lkIDA/aTpcIlwiO3JldHVybiBsLmxlbmd0aD09PTAmJnRoaXMuZXJyb3IoXCJFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBwcm9wZXJ0eSBhY2Nlc3NcIixlLnNwYW4uZW5kKSxsfSksYT10aGlzLnNvdXJjZVNwYW4ocik7aWYodGhpcy5jb25zdW1lT3B0aW9uYWxDaGFyYWN0ZXIoRWUpKXtsZXQgaT10aGlzLmlucHV0SW5kZXg7dGhpcy5ycGFyZW5zRXhwZWN0ZWQrKztsZXQgbD10aGlzLnBhcnNlQ2FsbEFyZ3VtZW50cygpLGg9dGhpcy5zcGFuKGksdGhpcy5pbnB1dEluZGV4KS50b0Fic29sdXRlKHRoaXMuYWJzb2x1dGVPZmZzZXQpO3RoaXMuZXhwZWN0Q2hhcmFjdGVyKHopLHRoaXMucnBhcmVuc0V4cGVjdGVkLS07bGV0IFA9dGhpcy5zcGFuKHQpLHA9dGhpcy5zb3VyY2VTcGFuKHQpO3JldHVybiBuP25ldyB3ZShQLHAsYSxlLHMsbCxoKTpuZXcgeWUoUCxwLGEsZSxzLGwsaCl9ZWxzZXtpZihuKXJldHVybiB0aGlzLmNvbnN1bWVPcHRpb25hbE9wZXJhdG9yKFwiPVwiKT8odGhpcy5lcnJvcihcIlRoZSAnPy4nIG9wZXJhdG9yIGNhbm5vdCBiZSB1c2VkIGluIHRoZSBhc3NpZ25tZW50XCIpLG5ldyBNKHRoaXMuc3Bhbih0KSx0aGlzLnNvdXJjZVNwYW4odCkpKTpuZXcgaGUodGhpcy5zcGFuKHQpLHRoaXMuc291cmNlU3Bhbih0KSxhLGUscyk7aWYodGhpcy5jb25zdW1lT3B0aW9uYWxPcGVyYXRvcihcIj1cIikpe2lmKCF0aGlzLnBhcnNlQWN0aW9uKXJldHVybiB0aGlzLmVycm9yKFwiQmluZGluZ3MgY2Fubm90IGNvbnRhaW4gYXNzaWdubWVudHNcIiksbmV3IE0odGhpcy5zcGFuKHQpLHRoaXMuc291cmNlU3Bhbih0KSk7bGV0IGk9dGhpcy5wYXJzZUNvbmRpdGlvbmFsKCk7cmV0dXJuIG5ldyB1ZSh0aGlzLnNwYW4odCksdGhpcy5zb3VyY2VTcGFuKHQpLGEsZSxzLGkpfWVsc2UgcmV0dXJuIG5ldyByZSh0aGlzLnNwYW4odCksdGhpcy5zb3VyY2VTcGFuKHQpLGEsZSxzKX19cGFyc2VDYWxsQXJndW1lbnRzKCl7aWYodGhpcy5uZXh0LmlzQ2hhcmFjdGVyKHopKXJldHVybltdO2xldCBlPVtdO2RvIGUucHVzaCh0aGlzLnBhcnNlUGlwZSgpKTt3aGlsZSh0aGlzLmNvbnN1bWVPcHRpb25hbENoYXJhY3RlcihlZSkpO3JldHVybiBlfWV4cGVjdFRlbXBsYXRlQmluZGluZ0tleSgpe2xldCBlPVwiXCIsdD0hMSxuPXRoaXMuY3VycmVudEFic29sdXRlT2Zmc2V0O2RvIGUrPXRoaXMuZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZE9yU3RyaW5nKCksdD10aGlzLmNvbnN1bWVPcHRpb25hbE9wZXJhdG9yKFwiLVwiKSx0JiYoZSs9XCItXCIpO3doaWxlKHQpO3JldHVybntzb3VyY2U6ZSxzcGFuOm5ldyBVKG4sbitlLmxlbmd0aCl9fXBhcnNlVGVtcGxhdGVCaW5kaW5ncyhlKXtsZXQgdD1bXTtmb3IodC5wdXNoKC4uLnRoaXMucGFyc2VEaXJlY3RpdmVLZXl3b3JkQmluZGluZ3MoZSkpO3RoaXMuaW5kZXg8dGhpcy50b2tlbnMubGVuZ3RoOyl7bGV0IG49dGhpcy5wYXJzZUxldEJpbmRpbmcoKTtpZihuKXQucHVzaChuKTtlbHNle2xldCByPXRoaXMuZXhwZWN0VGVtcGxhdGVCaW5kaW5nS2V5KCkscz10aGlzLnBhcnNlQXNCaW5kaW5nKHIpO3M/dC5wdXNoKHMpOihyLnNvdXJjZT1lLnNvdXJjZStyLnNvdXJjZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStyLnNvdXJjZS5zdWJzdHJpbmcoMSksdC5wdXNoKC4uLnRoaXMucGFyc2VEaXJlY3RpdmVLZXl3b3JkQmluZGluZ3MocikpKX10aGlzLmNvbnN1bWVTdGF0ZW1lbnRUZXJtaW5hdG9yKCl9cmV0dXJuIG5ldyBRZSh0LFtdLHRoaXMuZXJyb3JzKX1wYXJzZUtleWVkUmVhZE9yV3JpdGUoZSx0LG4pe3JldHVybiB0aGlzLndpdGhDb250ZXh0KFouV3JpdGFibGUsKCk9Pnt0aGlzLnJicmFja2V0c0V4cGVjdGVkKys7bGV0IHI9dGhpcy5wYXJzZVBpcGUoKTtpZihyIGluc3RhbmNlb2YgTSYmdGhpcy5lcnJvcihcIktleSBhY2Nlc3MgY2Fubm90IGJlIGVtcHR5XCIpLHRoaXMucmJyYWNrZXRzRXhwZWN0ZWQtLSx0aGlzLmV4cGVjdENoYXJhY3RlcihuZSksdGhpcy5jb25zdW1lT3B0aW9uYWxPcGVyYXRvcihcIj1cIikpaWYobil0aGlzLmVycm9yKFwiVGhlICc/Licgb3BlcmF0b3IgY2Fubm90IGJlIHVzZWQgaW4gdGhlIGFzc2lnbm1lbnRcIik7ZWxzZXtsZXQgcz10aGlzLnBhcnNlQ29uZGl0aW9uYWwoKTtyZXR1cm4gbmV3IGRlKHRoaXMuc3Bhbih0KSx0aGlzLnNvdXJjZVNwYW4odCksZSxyLHMpfWVsc2UgcmV0dXJuIG4/bmV3IHBlKHRoaXMuc3Bhbih0KSx0aGlzLnNvdXJjZVNwYW4odCksZSxyKTpuZXcgbGUodGhpcy5zcGFuKHQpLHRoaXMuc291cmNlU3Bhbih0KSxlLHIpO3JldHVybiBuZXcgTSh0aGlzLnNwYW4odCksdGhpcy5zb3VyY2VTcGFuKHQpKX0pfXBhcnNlRGlyZWN0aXZlS2V5d29yZEJpbmRpbmdzKGUpe2xldCB0PVtdO3RoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKFgpO2xldCBuPXRoaXMuZ2V0RGlyZWN0aXZlQm91bmRUYXJnZXQoKSxyPXRoaXMuY3VycmVudEFic29sdXRlT2Zmc2V0LHM9dGhpcy5wYXJzZUFzQmluZGluZyhlKTtzfHwodGhpcy5jb25zdW1lU3RhdGVtZW50VGVybWluYXRvcigpLHI9dGhpcy5jdXJyZW50QWJzb2x1dGVPZmZzZXQpO2xldCBhPW5ldyBVKGUuc3Bhbi5zdGFydCxyKTtyZXR1cm4gdC5wdXNoKG5ldyBaZShhLGUsbikpLHMmJnQucHVzaChzKSx0fWdldERpcmVjdGl2ZUJvdW5kVGFyZ2V0KCl7aWYodGhpcy5uZXh0PT09SWV8fHRoaXMucGVla0tleXdvcmRBcygpfHx0aGlzLnBlZWtLZXl3b3JkTGV0KCkpcmV0dXJuIG51bGw7bGV0IGU9dGhpcy5wYXJzZVBpcGUoKSx7c3RhcnQ6dCxlbmQ6bn09ZS5zcGFuLHI9dGhpcy5pbnB1dC5zdWJzdHJpbmcodCxuKTtyZXR1cm4gbmV3IEcoZSxyLHRoaXMubG9jYXRpb24sdGhpcy5hYnNvbHV0ZU9mZnNldCt0LHRoaXMuZXJyb3JzKX1wYXJzZUFzQmluZGluZyhlKXtpZighdGhpcy5wZWVrS2V5d29yZEFzKCkpcmV0dXJuIG51bGw7dGhpcy5hZHZhbmNlKCk7bGV0IHQ9dGhpcy5leHBlY3RUZW1wbGF0ZUJpbmRpbmdLZXkoKTt0aGlzLmNvbnN1bWVTdGF0ZW1lbnRUZXJtaW5hdG9yKCk7bGV0IG49bmV3IFUoZS5zcGFuLnN0YXJ0LHRoaXMuY3VycmVudEFic29sdXRlT2Zmc2V0KTtyZXR1cm4gbmV3IFJlKG4sdCxlKX1wYXJzZUxldEJpbmRpbmcoKXtpZighdGhpcy5wZWVrS2V5d29yZExldCgpKXJldHVybiBudWxsO2xldCBlPXRoaXMuY3VycmVudEFic29sdXRlT2Zmc2V0O3RoaXMuYWR2YW5jZSgpO2xldCB0PXRoaXMuZXhwZWN0VGVtcGxhdGVCaW5kaW5nS2V5KCksbj1udWxsO3RoaXMuY29uc3VtZU9wdGlvbmFsT3BlcmF0b3IoXCI9XCIpJiYobj10aGlzLmV4cGVjdFRlbXBsYXRlQmluZGluZ0tleSgpKSx0aGlzLmNvbnN1bWVTdGF0ZW1lbnRUZXJtaW5hdG9yKCk7bGV0IHI9bmV3IFUoZSx0aGlzLmN1cnJlbnRBYnNvbHV0ZU9mZnNldCk7cmV0dXJuIG5ldyBSZShyLHQsbil9Y29uc3VtZVN0YXRlbWVudFRlcm1pbmF0b3IoKXt0aGlzLmNvbnN1bWVPcHRpb25hbENoYXJhY3Rlcih0ZSl8fHRoaXMuY29uc3VtZU9wdGlvbmFsQ2hhcmFjdGVyKGVlKX1lcnJvcihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bnVsbDt0aGlzLmVycm9ycy5wdXNoKG5ldyBhZShlLHRoaXMuaW5wdXQsdGhpcy5sb2NhdGlvblRleHQodCksdGhpcy5sb2NhdGlvbikpLHRoaXMuc2tpcCgpfWxvY2F0aW9uVGV4dCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBlPT1udWxsJiYoZT10aGlzLmluZGV4KSxlPHRoaXMudG9rZW5zLmxlbmd0aD9cImF0IGNvbHVtbiBcIi5jb25jYXQodGhpcy50b2tlbnNbZV0uaW5kZXgrMSxcIiBpblwiKTpcImF0IHRoZSBlbmQgb2YgdGhlIGV4cHJlc3Npb25cIn1fcmVwb3J0RXJyb3JGb3JQcml2YXRlSWRlbnRpZmllcihlLHQpe2xldCBuPVwiUHJpdmF0ZSBpZGVudGlmaWVycyBhcmUgbm90IHN1cHBvcnRlZC4gVW5leHBlY3RlZCBwcml2YXRlIGlkZW50aWZpZXI6IFwiLmNvbmNhdChlKTt0IT09bnVsbCYmKG4rPVwiLCBcIi5jb25jYXQodCkpLHRoaXMuZXJyb3Iobil9c2tpcCgpe2xldCBlPXRoaXMubmV4dDtmb3IoO3RoaXMuaW5kZXg8dGhpcy50b2tlbnMubGVuZ3RoJiYhZS5pc0NoYXJhY3Rlcih0ZSkmJiFlLmlzT3BlcmF0b3IoXCJ8XCIpJiYodGhpcy5ycGFyZW5zRXhwZWN0ZWQ8PTB8fCFlLmlzQ2hhcmFjdGVyKHopKSYmKHRoaXMucmJyYWNlc0V4cGVjdGVkPD0wfHwhZS5pc0NoYXJhY3RlcihfZSkpJiYodGhpcy5yYnJhY2tldHNFeHBlY3RlZDw9MHx8IWUuaXNDaGFyYWN0ZXIobmUpKSYmKCEodGhpcy5jb250ZXh0JlouV3JpdGFibGUpfHwhZS5pc09wZXJhdG9yKFwiPVwiKSk7KXRoaXMubmV4dC5pc0Vycm9yKCkmJnRoaXMuZXJyb3JzLnB1c2gobmV3IGFlKHRoaXMubmV4dC50b1N0cmluZygpLHRoaXMuaW5wdXQsdGhpcy5sb2NhdGlvblRleHQoKSx0aGlzLmxvY2F0aW9uKSksdGhpcy5hZHZhbmNlKCksZT10aGlzLm5leHR9fSx5dD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZXJyb3JzPVtdfXZpc2l0SW1wbGljaXRSZWNlaXZlcihlLHQpe312aXNpdFRoaXNSZWNlaXZlcihlLHQpe312aXNpdEludGVycG9sYXRpb24oZSx0KXt9dmlzaXRMaXRlcmFsUHJpbWl0aXZlKGUsdCl7fXZpc2l0UHJvcGVydHlSZWFkKGUsdCl7fXZpc2l0UHJvcGVydHlXcml0ZShlLHQpe312aXNpdFNhZmVQcm9wZXJ0eVJlYWQoZSx0KXt9dmlzaXRNZXRob2RDYWxsKGUsdCl7fXZpc2l0U2FmZU1ldGhvZENhbGwoZSx0KXt9dmlzaXRGdW5jdGlvbkNhbGwoZSx0KXt9dmlzaXRMaXRlcmFsQXJyYXkoZSx0KXt0aGlzLnZpc2l0QWxsKGUuZXhwcmVzc2lvbnMsdCl9dmlzaXRMaXRlcmFsTWFwKGUsdCl7dGhpcy52aXNpdEFsbChlLnZhbHVlcyx0KX12aXNpdFVuYXJ5KGUsdCl7fXZpc2l0QmluYXJ5KGUsdCl7fXZpc2l0UHJlZml4Tm90KGUsdCl7fXZpc2l0Tm9uTnVsbEFzc2VydChlLHQpe312aXNpdENvbmRpdGlvbmFsKGUsdCl7fXZpc2l0UGlwZShlLHQpe3RoaXMuZXJyb3JzLnB1c2goXCJwaXBlc1wiKX12aXNpdEtleWVkUmVhZChlLHQpe312aXNpdEtleWVkV3JpdGUoZSx0KXt9dmlzaXRBbGwoZSx0KXtyZXR1cm4gZS5tYXAobj0+bi52aXNpdCh0aGlzLHQpKX12aXNpdENoYWluKGUsdCl7fXZpc2l0UXVvdGUoZSx0KXt9dmlzaXRTYWZlS2V5ZWRSZWFkKGUsdCl7fX0sd3Q9Y2xhc3MgZXh0ZW5kcyBldHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5lcnJvcnM9W119dmlzaXRQaXBlKCl7dGhpcy5lcnJvcnMucHVzaChcInBpcGVzXCIpfX19fSksZnQ9cSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1lc3RyZWUtcGFyc2VyL2xpYi91dGlscy5qc1wiKGUpe1widXNlIHN0cmljdFwiO0woKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLmdldExhc3Q9ZS50b0xvd2VyQ2FtZWxDYXNlPWUuZmluZEJhY2tDaGFyPWUuZmluZEZyb250Q2hhcj1lLmZpdFNwYW5zPWUuZ2V0TmdUeXBlPWUucGFyc2VOZ0ludGVycG9sYXRpb249ZS5wYXJzZU5nVGVtcGxhdGVCaW5kaW5ncz1lLnBhcnNlTmdBY3Rpb249ZS5wYXJzZU5nU2ltcGxlQmluZGluZz1lLnBhcnNlTmdCaW5kaW5nPWUuTkdfUEFSU0VfVEVNUExBVEVfQklORElOR1NfRkFLRV9QUkVGSVg9dm9pZCAwO3ZhciB0PSh0dCgpLGJlKEplKSksbj0odG4oKSxiZShZdCkpLHI9KExuKCksYmUocm4pKSxzPVwiYW5ndWxhci1lc3RyZWUtcGFyc2VyXCI7ZS5OR19QQVJTRV9URU1QTEFURV9CSU5ESU5HU19GQUtFX1BSRUZJWD1cIk5nRXN0cmVlUGFyc2VyXCI7dmFyIGE9MCxpPVtzLGFdO2Z1bmN0aW9uIGwoKXtyZXR1cm4gbmV3IHIuUGFyc2VyKG5ldyBuLkxleGVyKX1mdW5jdGlvbiBoKG8sZCl7bGV0IHk9bCgpLHthc3RJbnB1dDpDLGNvbW1lbnRzOkV9PVQobyx5KSx7YXN0OkksZXJyb3JzOmp9PWQoQyx5KTtyZXR1cm4gUihqKSx7YXN0OkksY29tbWVudHM6RX19ZnVuY3Rpb24gUChvKXtyZXR1cm4gaChvLChkLHkpPT55LnBhcnNlQmluZGluZyhkLC4uLmkpKX1lLnBhcnNlTmdCaW5kaW5nPVA7ZnVuY3Rpb24gcChvKXtyZXR1cm4gaChvLChkLHkpPT55LnBhcnNlU2ltcGxlQmluZGluZyhkLC4uLmkpKX1lLnBhcnNlTmdTaW1wbGVCaW5kaW5nPXA7ZnVuY3Rpb24geChvKXtyZXR1cm4gaChvLChkLHkpPT55LnBhcnNlQWN0aW9uKGQsLi4uaSkpfWUucGFyc2VOZ0FjdGlvbj14O2Z1bmN0aW9uIEEobyl7bGV0IGQ9bCgpLHt0ZW1wbGF0ZUJpbmRpbmdzOnksZXJyb3JzOkN9PWQucGFyc2VUZW1wbGF0ZUJpbmRpbmdzKGUuTkdfUEFSU0VfVEVNUExBVEVfQklORElOR1NfRkFLRV9QUkVGSVgsbyxzLGEsYSk7cmV0dXJuIFIoQykseX1lLnBhcnNlTmdUZW1wbGF0ZUJpbmRpbmdzPUE7ZnVuY3Rpb24gYihvKXtsZXQgZD1sKCkse2FzdElucHV0OnksY29tbWVudHM6Q309VChvLGQpLEU9XCJ7e1wiLEk9XCJ9fVwiLHthc3Q6aixlcnJvcnM6Y259PWQucGFyc2VJbnRlcnBvbGF0aW9uKEUreStJLC4uLmkpO1IoY24pO2xldCBndD1qLmV4cHJlc3Npb25zWzBdLHZ0PW5ldyBTZXQ7cmV0dXJuIF8oZ3Qsa2U9Pnt2dC5oYXMoa2UpfHwoa2Uuc3RhcnQtPUUubGVuZ3RoLGtlLmVuZC09RS5sZW5ndGgsdnQuYWRkKGtlKSl9KSx7YXN0Omd0LGNvbW1lbnRzOkN9fWUucGFyc2VOZ0ludGVycG9sYXRpb249YjtmdW5jdGlvbiBfKG8sZCl7aWYoISghb3x8dHlwZW9mIG8hPVwib2JqZWN0XCIpKXtpZihBcnJheS5pc0FycmF5KG8pKXJldHVybiBvLmZvckVhY2goeT0+Xyh5LGQpKTtmb3IobGV0IHkgb2YgT2JqZWN0LmtleXMobykpe2xldCBDPW9beV07eT09PVwic3BhblwiP2QoQyk6XyhDLGQpfX19ZnVuY3Rpb24gUihvKXtpZihvLmxlbmd0aCE9PTApe2xldFt7bWVzc2FnZTpkfV09bzt0aHJvdyBuZXcgU3ludGF4RXJyb3IoZC5yZXBsYWNlKC9eUGFyc2VyIEVycm9yOiB8IGF0IGNvbHVtbiBcXGQrIGluIFteXSokL2csXCJcIikpfX1mdW5jdGlvbiBUKG8sZCl7bGV0IHk9ZC5fY29tbWVudFN0YXJ0KG8pO3JldHVybiB5PT09bnVsbD97YXN0SW5wdXQ6byxjb21tZW50czpbXX06e2FzdElucHV0Om8uc2xpY2UoMCx5KSxjb21tZW50czpbe3R5cGU6XCJDb21tZW50XCIsdmFsdWU6by5zbGljZSh5KzIpLHNwYW46e3N0YXJ0OnksZW5kOm8ubGVuZ3RofX1dfX1mdW5jdGlvbiBPKG8pe3JldHVybiB0LlVuYXJ5JiZvIGluc3RhbmNlb2YgdC5VbmFyeT9cIlVuYXJ5XCI6byBpbnN0YW5jZW9mIHQuQmluYXJ5P1wiQmluYXJ5XCI6byBpbnN0YW5jZW9mIHQuQmluZGluZ1BpcGU/XCJCaW5kaW5nUGlwZVwiOm8gaW5zdGFuY2VvZiB0LkNoYWluP1wiQ2hhaW5cIjpvIGluc3RhbmNlb2YgdC5Db25kaXRpb25hbD9cIkNvbmRpdGlvbmFsXCI6byBpbnN0YW5jZW9mIHQuRW1wdHlFeHByP1wiRW1wdHlFeHByXCI6byBpbnN0YW5jZW9mIHQuRnVuY3Rpb25DYWxsP1wiRnVuY3Rpb25DYWxsXCI6byBpbnN0YW5jZW9mIHQuSW1wbGljaXRSZWNlaXZlcj9cIkltcGxpY2l0UmVjZWl2ZXJcIjpvIGluc3RhbmNlb2YgdC5LZXllZFJlYWQ/XCJLZXllZFJlYWRcIjpvIGluc3RhbmNlb2YgdC5LZXllZFdyaXRlP1wiS2V5ZWRXcml0ZVwiOm8gaW5zdGFuY2VvZiB0LkxpdGVyYWxBcnJheT9cIkxpdGVyYWxBcnJheVwiOm8gaW5zdGFuY2VvZiB0LkxpdGVyYWxNYXA/XCJMaXRlcmFsTWFwXCI6byBpbnN0YW5jZW9mIHQuTGl0ZXJhbFByaW1pdGl2ZT9cIkxpdGVyYWxQcmltaXRpdmVcIjpvIGluc3RhbmNlb2YgdC5NZXRob2RDYWxsP1wiTWV0aG9kQ2FsbFwiOm8gaW5zdGFuY2VvZiB0Lk5vbk51bGxBc3NlcnQ/XCJOb25OdWxsQXNzZXJ0XCI6byBpbnN0YW5jZW9mIHQuUHJlZml4Tm90P1wiUHJlZml4Tm90XCI6byBpbnN0YW5jZW9mIHQuUHJvcGVydHlSZWFkP1wiUHJvcGVydHlSZWFkXCI6byBpbnN0YW5jZW9mIHQuUHJvcGVydHlXcml0ZT9cIlByb3BlcnR5V3JpdGVcIjpvIGluc3RhbmNlb2YgdC5RdW90ZT9cIlF1b3RlXCI6byBpbnN0YW5jZW9mIHQuU2FmZU1ldGhvZENhbGw/XCJTYWZlTWV0aG9kQ2FsbFwiOm8gaW5zdGFuY2VvZiB0LlNhZmVQcm9wZXJ0eVJlYWQ/XCJTYWZlUHJvcGVydHlSZWFkXCI6by50eXBlfWUuZ2V0TmdUeXBlPU87ZnVuY3Rpb24gTihvLGQpe2xldHtzdGFydDp5LGVuZDpDfT1vLEU9eSxJPUM7Zm9yKDtJIT09RSYmL1xccy8udGVzdChkW0ktMV0pOylJLS07Zm9yKDtFIT09SSYmL1xccy8udGVzdChkW0VdKTspRSsrO3JldHVybntzdGFydDpFLGVuZDpJfX1mdW5jdGlvbiBjKG8sZCl7bGV0e3N0YXJ0OnksZW5kOkN9PW8sRT15LEk9Qztmb3IoO0khPT1kLmxlbmd0aCYmL1xccy8udGVzdChkW0ldKTspSSsrO2Zvcig7RSE9PTAmJi9cXHMvLnRlc3QoZFtFLTFdKTspRS0tO3JldHVybntzdGFydDpFLGVuZDpJfX1mdW5jdGlvbiBnKG8sZCl7cmV0dXJuIGRbby5zdGFydC0xXT09PVwiKFwiJiZkW28uZW5kXT09PVwiKVwiP3tzdGFydDpvLnN0YXJ0LTEsZW5kOm8uZW5kKzF9Om99ZnVuY3Rpb24gdShvLGQseSl7bGV0IEM9MCxFPXtzdGFydDpvLnN0YXJ0LGVuZDpvLmVuZH07Zm9yKDs7KXtsZXQgST1jKEUsZCksaj1nKEksZCk7aWYoSS5zdGFydD09PWouc3RhcnQmJkkuZW5kPT09ai5lbmQpYnJlYWs7RS5zdGFydD1qLnN0YXJ0LEUuZW5kPWouZW5kLEMrK31yZXR1cm57aGFzUGFyZW5zOih5P0MtMTpDKSE9PTAsb3V0ZXJTcGFuOk4oeT97c3RhcnQ6RS5zdGFydCsxLGVuZDpFLmVuZC0xfTpFLGQpLGlubmVyU3BhbjpOKG8sZCl9fWUuZml0U3BhbnM9dTtmdW5jdGlvbiB2KG8sZCx5KXtsZXQgQz1kO2Zvcig7IW8udGVzdCh5W0NdKTspaWYoLS1DPDApdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgZnJvbnQgY2hhciBcIi5jb25jYXQobyxcIiBmcm9tIGluZGV4IFwiKS5jb25jYXQoZCxcIiBpbiBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KHkpKSk7cmV0dXJuIEN9ZS5maW5kRnJvbnRDaGFyPXY7ZnVuY3Rpb24gbShvLGQseSl7bGV0IEM9ZDtmb3IoOyFvLnRlc3QoeVtDXSk7KWlmKCsrQz49eS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgYmFjayBjaGFyIFwiLmNvbmNhdChvLFwiIGZyb20gaW5kZXggXCIpLmNvbmNhdChkLFwiIGluIFwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkoeSkpKTtyZXR1cm4gQ31lLmZpbmRCYWNrQ2hhcj1tO2Z1bmN0aW9uIGYobyl7cmV0dXJuIG8uc2xpY2UoMCwxKS50b0xvd2VyQ2FzZSgpK28uc2xpY2UoMSl9ZS50b0xvd2VyQ2FtZWxDYXNlPWY7ZnVuY3Rpb24gdyhvKXtyZXR1cm4gby5sZW5ndGg9PT0wP3ZvaWQgMDpvW28ubGVuZ3RoLTFdfWUuZ2V0TGFzdD13fX0pLGFuPXEoe1wibm9kZV9tb2R1bGVzL2FuZ3VsYXItZXN0cmVlLXBhcnNlci9saWIvdHJhbnNmb3JtLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7TCgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUudHJhbnNmb3JtU3Bhbj1lLnRyYW5zZm9ybT12b2lkIDA7dmFyIHQ9ZnQoKSxuPWZ1bmN0aW9uKHMsYSl7bGV0IGk9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOiExLGw9dC5nZXROZ1R5cGUocyk7c3dpdGNoKGwpe2Nhc2VcIlVuYXJ5XCI6e2xldHtvcGVyYXRvcjpjLGV4cHI6Z309cyx1PWgoZyk7cmV0dXJuIHAoXCJVbmFyeUV4cHJlc3Npb25cIix7cHJlZml4OiEwLGFyZ3VtZW50OnUsb3BlcmF0b3I6Y30scy5zcGFuLHtoYXNQYXJlbnRQYXJlbnM6aX0pfWNhc2VcIkJpbmFyeVwiOntsZXR7bGVmdDpjLG9wZXJhdGlvbjpnLHJpZ2h0OnV9PXMsdj11LnNwYW4uc3RhcnQ9PT11LnNwYW4uZW5kLG09Yy5zcGFuLnN0YXJ0PT09Yy5zcGFuLmVuZDtpZih2fHxtKXtsZXQgbz1jLnNwYW4uc3RhcnQ9PT1jLnNwYW4uZW5kP2godSk6aChjKTtyZXR1cm4gcChcIlVuYXJ5RXhwcmVzc2lvblwiLHtwcmVmaXg6ITAsYXJndW1lbnQ6byxvcGVyYXRvcjp2P1wiK1wiOlwiLVwifSx7c3RhcnQ6cy5zcGFuLnN0YXJ0LGVuZDpOKG8pfSx7aGFzUGFyZW50UGFyZW5zOml9KX1sZXQgZj1oKGMpLHc9aCh1KTtyZXR1cm4gcChnPT09XCImJlwifHxnPT09XCJ8fFwiP1wiTG9naWNhbEV4cHJlc3Npb25cIjpcIkJpbmFyeUV4cHJlc3Npb25cIix7bGVmdDpmLHJpZ2h0Oncsb3BlcmF0b3I6Z30se3N0YXJ0Ok8oZiksZW5kOk4odyl9LHtoYXNQYXJlbnRQYXJlbnM6aX0pfWNhc2VcIkJpbmRpbmdQaXBlXCI6e2xldHtleHA6YyxuYW1lOmcsYXJnczp1fT1zLHY9aChjKSxtPWIoL1xcUy8sYigvXFx8LyxOKHYpKSsxKSxmPXAoXCJJZGVudGlmaWVyXCIse25hbWU6Z30se3N0YXJ0Om0sZW5kOm0rZy5sZW5ndGh9KSx3PXUubWFwKGgpO3JldHVybiBwKFwiTkdQaXBlRXhwcmVzc2lvblwiLHtsZWZ0OnYscmlnaHQ6Zixhcmd1bWVudHM6d30se3N0YXJ0Ok8odiksZW5kOk4ody5sZW5ndGg9PT0wP2Y6dC5nZXRMYXN0KHcpKX0se2hhc1BhcmVudFBhcmVuczppfSl9Y2FzZVwiQ2hhaW5cIjp7bGV0e2V4cHJlc3Npb25zOmN9PXM7cmV0dXJuIHAoXCJOR0NoYWluZWRFeHByZXNzaW9uXCIse2V4cHJlc3Npb25zOmMubWFwKGgpfSxzLnNwYW4se2hhc1BhcmVudFBhcmVuczppfSl9Y2FzZVwiQ29tbWVudFwiOntsZXR7dmFsdWU6Y309cztyZXR1cm4gcChcIkNvbW1lbnRMaW5lXCIse3ZhbHVlOmN9LHMuc3Bhbix7cHJvY2Vzc1NwYW46ITF9KX1jYXNlXCJDb25kaXRpb25hbFwiOntsZXR7Y29uZGl0aW9uOmMsdHJ1ZUV4cDpnLGZhbHNlRXhwOnV9PXMsdj1oKGMpLG09aChnKSxmPWgodSk7cmV0dXJuIHAoXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIix7dGVzdDp2LGNvbnNlcXVlbnQ6bSxhbHRlcm5hdGU6Zn0se3N0YXJ0Ok8odiksZW5kOk4oZil9LHtoYXNQYXJlbnRQYXJlbnM6aX0pfWNhc2VcIkVtcHR5RXhwclwiOnJldHVybiBwKFwiTkdFbXB0eUV4cHJlc3Npb25cIix7fSxzLnNwYW4se2hhc1BhcmVudFBhcmVuczppfSk7Y2FzZVwiRnVuY3Rpb25DYWxsXCI6e2xldHt0YXJnZXQ6YyxhcmdzOmd9PXMsdT1nLmxlbmd0aD09PTE/W1AoZ1swXSldOmcubWFwKGgpLHY9aChjKTtyZXR1cm4gcChcIkNhbGxFeHByZXNzaW9uXCIse2NhbGxlZTp2LGFyZ3VtZW50czp1fSx7c3RhcnQ6Tyh2KSxlbmQ6cy5zcGFuLmVuZH0se2hhc1BhcmVudFBhcmVuczppfSl9Y2FzZVwiSW1wbGljaXRSZWNlaXZlclwiOnJldHVybiBwKFwiVGhpc0V4cHJlc3Npb25cIix7fSxzLnNwYW4se2hhc1BhcmVudFBhcmVuczppfSk7Y2FzZVwiS2V5ZWRSZWFkXCI6e2xldHtrZXk6Y309cyxnPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLFwicmVjZWl2ZXJcIik/cy5yZWNlaXZlcjpzLm9iaix1PWgoYyk7cmV0dXJuIHgoZyx1LHtjb21wdXRlZDohMCxvcHRpb25hbDohMX0se2VuZDpzLnNwYW4uZW5kLGhhc1BhcmVudFBhcmVuczppfSl9Y2FzZVwiTGl0ZXJhbEFycmF5XCI6e2xldHtleHByZXNzaW9uczpjfT1zO3JldHVybiBwKFwiQXJyYXlFeHByZXNzaW9uXCIse2VsZW1lbnRzOmMubWFwKGgpfSxzLnNwYW4se2hhc1BhcmVudFBhcmVuczppfSl9Y2FzZVwiTGl0ZXJhbE1hcFwiOntsZXR7a2V5czpjLHZhbHVlczpnfT1zLHU9Zy5tYXAobT0+aChtKSksdj1jLm1hcCgobSxmKT0+e2xldHtrZXk6dyxxdW90ZWQ6b309bSxkPXVbZl0seT1iKC9cXFMvLGY9PT0wP3Muc3Bhbi5zdGFydCsxOmIoLywvLE4odVtmLTFdKSkrMSksQz1BKC9cXFMvLEEoLzovLE8oZCktMSktMSkrMSxFPXtzdGFydDp5LGVuZDpDfSxJPW8/cChcIlN0cmluZ0xpdGVyYWxcIix7dmFsdWU6d30sRSk6cChcIklkZW50aWZpZXJcIix7bmFtZTp3fSxFKSxqPUkuZW5kPEkuc3RhcnQ7cmV0dXJuIHAoXCJPYmplY3RQcm9wZXJ0eVwiLHtrZXk6SSx2YWx1ZTpkLG1ldGhvZDohMSxzaG9ydGhhbmQ6aixjb21wdXRlZDohMX0se3N0YXJ0Ok8oSSksZW5kOk4oZCl9KX0pO3JldHVybiBwKFwiT2JqZWN0RXhwcmVzc2lvblwiLHtwcm9wZXJ0aWVzOnZ9LHMuc3Bhbix7aGFzUGFyZW50UGFyZW5zOml9KX1jYXNlXCJMaXRlcmFsUHJpbWl0aXZlXCI6e2xldHt2YWx1ZTpjfT1zO3N3aXRjaCh0eXBlb2YgYyl7Y2FzZVwiYm9vbGVhblwiOnJldHVybiBwKFwiQm9vbGVhbkxpdGVyYWxcIix7dmFsdWU6Y30scy5zcGFuLHtoYXNQYXJlbnRQYXJlbnM6aX0pO2Nhc2VcIm51bWJlclwiOnJldHVybiBwKFwiTnVtZXJpY0xpdGVyYWxcIix7dmFsdWU6Y30scy5zcGFuLHtoYXNQYXJlbnRQYXJlbnM6aX0pO2Nhc2VcIm9iamVjdFwiOnJldHVybiBwKFwiTnVsbExpdGVyYWxcIix7fSxzLnNwYW4se2hhc1BhcmVudFBhcmVuczppfSk7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHAoXCJTdHJpbmdMaXRlcmFsXCIse3ZhbHVlOmN9LHMuc3Bhbix7aGFzUGFyZW50UGFyZW5zOml9KTtjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm4gcChcIklkZW50aWZpZXJcIix7bmFtZTpcInVuZGVmaW5lZFwifSxzLnNwYW4se2hhc1BhcmVudFBhcmVuczppfSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIExpdGVyYWxQcmltaXRpdmUgdmFsdWUgdHlwZSBcIi5jb25jYXQodHlwZW9mIGMpKX19Y2FzZVwiTWV0aG9kQ2FsbFwiOmNhc2VcIlNhZmVNZXRob2RDYWxsXCI6e2xldCBjPWw9PT1cIlNhZmVNZXRob2RDYWxsXCIse3JlY2VpdmVyOmcsbmFtZTp1LGFyZ3M6dn09cyxtPXYubGVuZ3RoPT09MT9bUCh2WzBdKV06di5tYXAoaCksZj1BKC9cXFMvLEEoL1xcKC8sKG0ubGVuZ3RoPT09MD9BKC9cXCkvLHMuc3Bhbi5lbmQtMSk6TyhtWzBdKSktMSktMSkrMSx3PXAoXCJJZGVudGlmaWVyXCIse25hbWU6dX0se3N0YXJ0OmYtdS5sZW5ndGgsZW5kOmZ9KSxvPXgoZyx3LHtjb21wdXRlZDohMSxvcHRpb25hbDpjfSksZD1SKG8pO3JldHVybiBwKGN8fGQ/XCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCI6XCJDYWxsRXhwcmVzc2lvblwiLHtjYWxsZWU6byxhcmd1bWVudHM6bX0se3N0YXJ0Ok8obyksZW5kOnMuc3Bhbi5lbmR9LHtoYXNQYXJlbnRQYXJlbnM6aX0pfWNhc2VcIk5vbk51bGxBc3NlcnRcIjp7bGV0e2V4cHJlc3Npb246Y309cyxnPWgoYyk7cmV0dXJuIHAoXCJUU05vbk51bGxFeHByZXNzaW9uXCIse2V4cHJlc3Npb246Z30se3N0YXJ0Ok8oZyksZW5kOnMuc3Bhbi5lbmR9LHtoYXNQYXJlbnRQYXJlbnM6aX0pfWNhc2VcIlByZWZpeE5vdFwiOntsZXR7ZXhwcmVzc2lvbjpjfT1zLGc9aChjKTtyZXR1cm4gcChcIlVuYXJ5RXhwcmVzc2lvblwiLHtwcmVmaXg6ITAsb3BlcmF0b3I6XCIhXCIsYXJndW1lbnQ6Z30se3N0YXJ0OnMuc3Bhbi5zdGFydCxlbmQ6TihnKX0se2hhc1BhcmVudFBhcmVuczppfSl9Y2FzZVwiUHJvcGVydHlSZWFkXCI6Y2FzZVwiU2FmZVByb3BlcnR5UmVhZFwiOntsZXQgYz1sPT09XCJTYWZlUHJvcGVydHlSZWFkXCIse3JlY2VpdmVyOmcsbmFtZTp1fT1zLHY9QSgvXFxTLyxzLnNwYW4uZW5kLTEpKzEsbT1wKFwiSWRlbnRpZmllclwiLHtuYW1lOnV9LHtzdGFydDp2LXUubGVuZ3RoLGVuZDp2fSxfKGcpP3toYXNQYXJlbnRQYXJlbnM6aX06e30pO3JldHVybiB4KGcsbSx7Y29tcHV0ZWQ6ITEsb3B0aW9uYWw6Y30se2hhc1BhcmVudFBhcmVuczppfSl9Y2FzZVwiS2V5ZWRXcml0ZVwiOntsZXR7a2V5OmMsdmFsdWU6Z309cyx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLFwicmVjZWl2ZXJcIik/cy5yZWNlaXZlcjpzLm9iaix2PWgoYyksbT1oKGcpLGY9eCh1LHYse2NvbXB1dGVkOiEwLG9wdGlvbmFsOiExfSx7ZW5kOmIoL1xcXS8sTih2KSkrMX0pO3JldHVybiBwKFwiQXNzaWdubWVudEV4cHJlc3Npb25cIix7bGVmdDpmLG9wZXJhdG9yOlwiPVwiLHJpZ2h0Om19LHtzdGFydDpPKGYpLGVuZDpOKG0pfSx7aGFzUGFyZW50UGFyZW5zOml9KX1jYXNlXCJQcm9wZXJ0eVdyaXRlXCI6e2xldHtyZWNlaXZlcjpjLG5hbWU6Zyx2YWx1ZTp1fT1zLHY9aCh1KSxtPUEoL1xcUy8sQSgvPS8sTyh2KS0xKS0xKSsxLGY9cChcIklkZW50aWZpZXJcIix7bmFtZTpnfSx7c3RhcnQ6bS1nLmxlbmd0aCxlbmQ6bX0pLHc9eChjLGYse2NvbXB1dGVkOiExLG9wdGlvbmFsOiExfSk7cmV0dXJuIHAoXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiLHtsZWZ0Oncsb3BlcmF0b3I6XCI9XCIscmlnaHQ6dn0se3N0YXJ0Ok8odyksZW5kOk4odil9LHtoYXNQYXJlbnRQYXJlbnM6aX0pfWNhc2VcIlF1b3RlXCI6e2xldHtwcmVmaXg6Yyx1bmludGVycHJldGVkRXhwcmVzc2lvbjpnfT1zO3JldHVybiBwKFwiTkdRdW90ZWRFeHByZXNzaW9uXCIse3ByZWZpeDpjLHZhbHVlOmd9LHMuc3Bhbix7aGFzUGFyZW50UGFyZW5zOml9KX1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgbm9kZSBcIi5jb25jYXQobCkpfWZ1bmN0aW9uIGgoYyl7cmV0dXJuIGUudHJhbnNmb3JtKGMsYSl9ZnVuY3Rpb24gUChjKXtyZXR1cm4gZS50cmFuc2Zvcm0oYyxhLCEwKX1mdW5jdGlvbiBwKGMsZyx1KXtsZXR7cHJvY2Vzc1NwYW46dj0hMCxoYXNQYXJlbnRQYXJlbnM6bT0hMX09YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOnt9LGY9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt0eXBlOmN9LHIodSxhLHYsbSkpLGcpO3N3aXRjaChjKXtjYXNlXCJJZGVudGlmaWVyXCI6e2xldCB3PWY7dy5sb2MuaWRlbnRpZmllck5hbWU9dy5uYW1lO2JyZWFrfWNhc2VcIk51bWVyaWNMaXRlcmFsXCI6e2xldCB3PWY7dy5leHRyYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdy5leHRyYSkse3JhdzphLnRleHQuc2xpY2Uody5zdGFydCx3LmVuZCkscmF3VmFsdWU6dy52YWx1ZX0pO2JyZWFrfWNhc2VcIlN0cmluZ0xpdGVyYWxcIjp7bGV0IHc9Zjt3LmV4dHJhPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx3LmV4dHJhKSx7cmF3OmEudGV4dC5zbGljZSh3LnN0YXJ0LHcuZW5kKSxyYXdWYWx1ZTp3LnZhbHVlfSk7YnJlYWt9fXJldHVybiBmfWZ1bmN0aW9uIHgoYyxnLHUpe2xldHtlbmQ6dj1OKGcpLGhhc1BhcmVudFBhcmVuczptPSExfT1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106e307aWYoXyhjKXx8Yy5zcGFuLnN0YXJ0PT09Zy5zdGFydClyZXR1cm4gZztsZXQgZj1oKGMpLHc9UihmKTtyZXR1cm4gcCh1Lm9wdGlvbmFsfHx3P1wiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCI6XCJNZW1iZXJFeHByZXNzaW9uXCIsT2JqZWN0LmFzc2lnbih7b2JqZWN0OmYscHJvcGVydHk6Zyxjb21wdXRlZDp1LmNvbXB1dGVkfSx1Lm9wdGlvbmFsP3tvcHRpb25hbDohMH06dz97b3B0aW9uYWw6ITF9Om51bGwpLHtzdGFydDpPKGYpLGVuZDp2fSx7aGFzUGFyZW50UGFyZW5zOm19KX1mdW5jdGlvbiBBKGMsZyl7cmV0dXJuIHQuZmluZEZyb250Q2hhcihjLGcsYS50ZXh0KX1mdW5jdGlvbiBiKGMsZyl7cmV0dXJuIHQuZmluZEJhY2tDaGFyKGMsZyxhLnRleHQpfWZ1bmN0aW9uIF8oYyl7cmV0dXJuIGMuc3Bhbi5zdGFydD49Yy5zcGFuLmVuZHx8L15cXHMrJC8udGVzdChhLnRleHQuc2xpY2UoYy5zcGFuLnN0YXJ0LGMuc3Bhbi5lbmQpKX1mdW5jdGlvbiBSKGMpe3JldHVybihjLnR5cGU9PT1cIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cInx8Yy50eXBlPT09XCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cIikmJiFUKGMpfWZ1bmN0aW9uIFQoYyl7cmV0dXJuIGMuZXh0cmEmJmMuZXh0cmEucGFyZW50aGVzaXplZH1mdW5jdGlvbiBPKGMpe3JldHVybiBUKGMpP2MuZXh0cmEucGFyZW5TdGFydDpjLnN0YXJ0fWZ1bmN0aW9uIE4oYyl7cmV0dXJuIFQoYyk/Yy5leHRyYS5wYXJlbkVuZDpjLmVuZH19O2UudHJhbnNmb3JtPW47ZnVuY3Rpb24gcihzLGEpe2xldCBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMSxsPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTohMTtpZighaSl7bGV0e3N0YXJ0OngsZW5kOkF9PXM7cmV0dXJue3N0YXJ0OngsZW5kOkEsbG9jOntzdGFydDphLmxvY2F0b3IubG9jYXRpb25Gb3JJbmRleCh4KSxlbmQ6YS5sb2NhdG9yLmxvY2F0aW9uRm9ySW5kZXgoQSl9fX1sZXR7b3V0ZXJTcGFuOmgsaW5uZXJTcGFuOlAsaGFzUGFyZW5zOnB9PXQuZml0U3BhbnMocyxhLnRleHQsbCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oe3N0YXJ0OlAuc3RhcnQsZW5kOlAuZW5kLGxvYzp7c3RhcnQ6YS5sb2NhdG9yLmxvY2F0aW9uRm9ySW5kZXgoUC5zdGFydCksZW5kOmEubG9jYXRvci5sb2NhdGlvbkZvckluZGV4KFAuZW5kKX19LHAmJntleHRyYTp7cGFyZW50aGVzaXplZDohMCxwYXJlblN0YXJ0Omguc3RhcnQscGFyZW5FbmQ6aC5lbmR9fSl9ZS50cmFuc2Zvcm1TcGFuPXJ9fSksUm49cSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1lc3RyZWUtcGFyc2VyL2xpYi90cmFuc2Zvcm0tbWljcm9zeW50YXguanNcIihlKXtcInVzZSBzdHJpY3RcIjtMKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS50cmFuc2Zvcm1UZW1wbGF0ZUJpbmRpbmdzPXZvaWQgMDt2YXIgdD0odHQoKSxiZShKZSkpLG49YW4oKSxyPWZ0KCk7ZnVuY3Rpb24gcyhhLGkpe2EuZm9yRWFjaChOKTtsZXRbbF09YSx7a2V5Omh9PWwsUD1pLnRleHQuc2xpY2UobC5zb3VyY2VTcGFuLnN0YXJ0LGwuc291cmNlU3Bhbi5lbmQpLnRyaW0oKS5sZW5ndGg9PT0wP2Euc2xpY2UoMSk6YSxwPVtdLHg9bnVsbDtmb3IobGV0IHU9MDt1PFAubGVuZ3RoO3UrKyl7bGV0IHY9UFt1XTtpZih4JiZUKHgpJiZPKHYpJiZ2LnZhbHVlJiZ2LnZhbHVlLnNvdXJjZT09PXgua2V5LnNvdXJjZSl7bGV0IG09XyhcIk5HTWljcm9zeW50YXhLZXlcIix7bmFtZTp2LmtleS5zb3VyY2V9LHYua2V5LnNwYW4pLGY9KGQseSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkKSxuLnRyYW5zZm9ybVNwYW4oe3N0YXJ0OmQuc3RhcnQsZW5kOnl9LGkpKSx3PWQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxmKGQsbS5lbmQpKSx7YWxpYXM6bX0pLG89cC5wb3AoKTtpZihvLnR5cGU9PT1cIk5HTWljcm9zeW50YXhFeHByZXNzaW9uXCIpcC5wdXNoKHcobykpO2Vsc2UgaWYoby50eXBlPT09XCJOR01pY3Jvc3ludGF4S2V5ZWRFeHByZXNzaW9uXCIpe2xldCBkPXcoby5leHByZXNzaW9uKTtwLnB1c2goZihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2V4cHJlc3Npb246ZH0pLGQuZW5kKSl9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHR5cGUgXCIuY29uY2F0KG8udHlwZSkpfWVsc2UgcC5wdXNoKEEodix1KSk7eD12fXJldHVybiBfKFwiTkdNaWNyb3N5bnRheFwiLHtib2R5OnB9LHAubGVuZ3RoPT09MD9hWzBdLnNvdXJjZVNwYW46e3N0YXJ0OnBbMF0uc3RhcnQsZW5kOnBbcC5sZW5ndGgtMV0uZW5kfSk7ZnVuY3Rpb24gQSh1LHYpe2lmKFQodSkpe2xldHtrZXk6bSx2YWx1ZTpmfT11O3JldHVybiBmP3Y9PT0wP18oXCJOR01pY3Jvc3ludGF4RXhwcmVzc2lvblwiLHtleHByZXNzaW9uOmIoZi5hc3QpLGFsaWFzOm51bGx9LGYuc291cmNlU3Bhbik6XyhcIk5HTWljcm9zeW50YXhLZXllZEV4cHJlc3Npb25cIix7a2V5Ol8oXCJOR01pY3Jvc3ludGF4S2V5XCIse25hbWU6UihtLnNvdXJjZSl9LG0uc3BhbiksZXhwcmVzc2lvbjpfKFwiTkdNaWNyb3N5bnRheEV4cHJlc3Npb25cIix7ZXhwcmVzc2lvbjpiKGYuYXN0KSxhbGlhczpudWxsfSxmLnNvdXJjZVNwYW4pfSx7c3RhcnQ6bS5zcGFuLnN0YXJ0LGVuZDpmLnNvdXJjZVNwYW4uZW5kfSk6XyhcIk5HTWljcm9zeW50YXhLZXlcIix7bmFtZTpSKG0uc291cmNlKX0sbS5zcGFuKX1lbHNle2xldHtrZXk6bSxzb3VyY2VTcGFuOmZ9PXU7aWYoL15sZXRcXHMkLy50ZXN0KGkudGV4dC5zbGljZShmLnN0YXJ0LGYuc3RhcnQrNCkpKXtsZXR7dmFsdWU6b309dTtyZXR1cm4gXyhcIk5HTWljcm9zeW50YXhMZXRcIix7a2V5Ol8oXCJOR01pY3Jvc3ludGF4S2V5XCIse25hbWU6bS5zb3VyY2V9LG0uc3BhbiksdmFsdWU6bz9fKFwiTkdNaWNyb3N5bnRheEtleVwiLHtuYW1lOm8uc291cmNlfSxvLnNwYW4pOm51bGx9LHtzdGFydDpmLnN0YXJ0LGVuZDpvP28uc3Bhbi5lbmQ6bS5zcGFuLmVuZH0pfWVsc2V7bGV0IG89Zyh1KTtyZXR1cm4gXyhcIk5HTWljcm9zeW50YXhBc1wiLHtrZXk6XyhcIk5HTWljcm9zeW50YXhLZXlcIix7bmFtZTpvLnNvdXJjZX0sby5zcGFuKSxhbGlhczpfKFwiTkdNaWNyb3N5bnRheEtleVwiLHtuYW1lOm0uc291cmNlfSxtLnNwYW4pfSx7c3RhcnQ6by5zcGFuLnN0YXJ0LGVuZDptLnNwYW4uZW5kfSl9fX1mdW5jdGlvbiBiKHUpe3JldHVybiBuLnRyYW5zZm9ybSh1LGkpfWZ1bmN0aW9uIF8odSx2LG0pe2xldCBmPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTohMDtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt0eXBlOnV9LG4udHJhbnNmb3JtU3BhbihtLGksZikpLHYpfWZ1bmN0aW9uIFIodSl7cmV0dXJuIHIudG9Mb3dlckNhbWVsQ2FzZSh1LnNsaWNlKGguc291cmNlLmxlbmd0aCkpfWZ1bmN0aW9uIFQodSl7cmV0dXJuIHUgaW5zdGFuY2VvZiB0LkV4cHJlc3Npb25CaW5kaW5nfWZ1bmN0aW9uIE8odSl7cmV0dXJuIHUgaW5zdGFuY2VvZiB0LlZhcmlhYmxlQmluZGluZ31mdW5jdGlvbiBOKHUpe2ModS5rZXkuc3BhbiksTyh1KSYmdS52YWx1ZSYmYyh1LnZhbHVlLnNwYW4pfWZ1bmN0aW9uIGModSl7aWYoaS50ZXh0W3Uuc3RhcnRdIT09J1wiJyYmaS50ZXh0W3Uuc3RhcnRdIT09XCInXCIpcmV0dXJuO2xldCB2PWkudGV4dFt1LnN0YXJ0XSxtPSExO2ZvcihsZXQgZj11LnN0YXJ0KzE7ZjxpLnRleHQubGVuZ3RoO2YrKylzd2l0Y2goaS50ZXh0W2ZdKXtjYXNlIHY6aWYoIW0pe3UuZW5kPWYrMTtyZXR1cm59ZGVmYXVsdDptPSExO2JyZWFrO2Nhc2VcIlxcXFxcIjptPSFtO2JyZWFrfX1mdW5jdGlvbiBnKHUpe2lmKCF1LnZhbHVlfHx1LnZhbHVlLnNvdXJjZSE9PXIuTkdfUEFSU0VfVEVNUExBVEVfQklORElOR1NfRkFLRV9QUkVGSVgpcmV0dXJuIHUudmFsdWU7bGV0IHY9ci5maW5kQmFja0NoYXIoL1xcUy8sdS5zb3VyY2VTcGFuLnN0YXJ0LGkudGV4dCk7cmV0dXJue3NvdXJjZTpcIiRpbXBsaWNpdFwiLHNwYW46e3N0YXJ0OnYsZW5kOnZ9fX19ZS50cmFuc2Zvcm1UZW1wbGF0ZUJpbmRpbmdzPXN9fSksVG49cSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1lc3RyZWUtcGFyc2VyL2xpYi9pbmRleC5qc1wiKGUpe1widXNlIHN0cmljdFwiO0woKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLnBhcnNlVGVtcGxhdGVCaW5kaW5ncz1lLnBhcnNlQWN0aW9uPWUucGFyc2VJbnRlcnBvbGF0aW9uPWUucGFyc2VTaW1wbGVCaW5kaW5nPWUucGFyc2VCaW5kaW5nPXZvaWQgMDt2YXIgdD12bigpLG49YW4oKSxyPVJuKCkscz1mdCgpO2Z1bmN0aW9uIGEoeCxBKXtsZXR7YXN0OmIsY29tbWVudHM6X309QSh4KSxSPW5ldyB0LkNvbnRleHQoeCksVD1OPT5uLnRyYW5zZm9ybShOLFIpLE89VChiKTtyZXR1cm4gTy5jb21tZW50cz1fLm1hcChUKSxPfWZ1bmN0aW9uIGkoeCl7cmV0dXJuIGEoeCxzLnBhcnNlTmdCaW5kaW5nKX1lLnBhcnNlQmluZGluZz1pO2Z1bmN0aW9uIGwoeCl7cmV0dXJuIGEoeCxzLnBhcnNlTmdTaW1wbGVCaW5kaW5nKX1lLnBhcnNlU2ltcGxlQmluZGluZz1sO2Z1bmN0aW9uIGgoeCl7cmV0dXJuIGEoeCxzLnBhcnNlTmdJbnRlcnBvbGF0aW9uKX1lLnBhcnNlSW50ZXJwb2xhdGlvbj1oO2Z1bmN0aW9uIFAoeCl7cmV0dXJuIGEoeCxzLnBhcnNlTmdBY3Rpb24pfWUucGFyc2VBY3Rpb249UDtmdW5jdGlvbiBwKHgpe3JldHVybiByLnRyYW5zZm9ybVRlbXBsYXRlQmluZGluZ3Mocy5wYXJzZU5nVGVtcGxhdGVCaW5kaW5ncyh4KSxuZXcgdC5Db250ZXh0KHgpKX1lLnBhcnNlVGVtcGxhdGVCaW5kaW5ncz1wfX0pO0woKTt2YXJ7bG9jU3RhcnQ6Qm4sbG9jRW5kOktufT1mbigpO2Z1bmN0aW9uIE5lKGUpe3JldHVybnthc3RGb3JtYXQ6XCJlc3RyZWVcIixwYXJzZToobixyLHMpPT57bGV0IGE9VG4oKSxpPWUobixhKTtyZXR1cm57dHlwZTpcIk5HUm9vdFwiLG5vZGU6cy5wYXJzZXI9PT1cIl9fbmdfYWN0aW9uXCImJmkudHlwZSE9PVwiTkdDaGFpbmVkRXhwcmVzc2lvblwiP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSx7fSx7dHlwZTpcIk5HQ2hhaW5lZEV4cHJlc3Npb25cIixleHByZXNzaW9uczpbaV19KTppfX0sbG9jU3RhcnQ6Qm4sbG9jRW5kOktufX1vbi5leHBvcnRzPXtwYXJzZXJzOntfX25nX2FjdGlvbjpOZSgoZSx0KT0+dC5wYXJzZUFjdGlvbihlKSksX19uZ19iaW5kaW5nOk5lKChlLHQpPT50LnBhcnNlQmluZGluZyhlKSksX19uZ19pbnRlcnBvbGF0aW9uOk5lKChlLHQpPT50LnBhcnNlSW50ZXJwb2xhdGlvbihlKSksX19uZ19kaXJlY3RpdmU6TmUoKGUsdCk9PnQucGFyc2VUZW1wbGF0ZUJpbmRpbmdzKGUpKX19fSk7cmV0dXJuIE1uKCk7fSk7IiwgIihmdW5jdGlvbihlKXtpZih0eXBlb2YgZXhwb3J0cz09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZT09XCJvYmplY3RcIiltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpZGVmaW5lKGUpO2Vsc2V7dmFyIGk9dHlwZW9mIGdsb2JhbFRoaXM8XCJ1XCI/Z2xvYmFsVGhpczp0eXBlb2YgZ2xvYmFsPFwidVwiP2dsb2JhbDp0eXBlb2Ygc2VsZjxcInVcIj9zZWxmOnRoaXN8fHt9O2kucHJldHRpZXJQbHVnaW5zPWkucHJldHRpZXJQbHVnaW5zfHx7fSxpLnByZXR0aWVyUGx1Z2lucy5lc3ByZWU9ZSgpfX0pKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIFM9KG4sbyk9PigpPT4ob3x8bigobz17ZXhwb3J0czp7fX0pLmV4cG9ydHMsbyksby5leHBvcnRzKTt2YXIgJD1TKChEaCxxcik9Pnt2YXIgWmU9ZnVuY3Rpb24obil7cmV0dXJuIG4mJm4uTWF0aD09TWF0aCYmbn07cXIuZXhwb3J0cz1aZSh0eXBlb2YgZ2xvYmFsVGhpcz09XCJvYmplY3RcIiYmZ2xvYmFsVGhpcyl8fFplKHR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCImJndpbmRvdyl8fFplKHR5cGVvZiBzZWxmPT1cIm9iamVjdFwiJiZzZWxmKXx8WmUodHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfSk7dmFyIHllPVMoKE9oLE1yKT0+e01yLmV4cG9ydHM9ZnVuY3Rpb24obil7dHJ5e3JldHVybiEhbigpfWNhdGNoe3JldHVybiEwfX19KTt2YXIgX2U9UygoTGgsVXIpPT57dmFyIHRuPXllKCk7VXIuZXhwb3J0cz0hdG4oZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT03fSl9KTt2YXIgQ3Q9UygoVmgsenIpPT57dmFyIHJuPXllKCk7enIuZXhwb3J0cz0hcm4oZnVuY3Rpb24oKXt2YXIgbj1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiB0eXBlb2YgbiE9XCJmdW5jdGlvblwifHxuLmhhc093blByb3BlcnR5KFwicHJvdG90eXBlXCIpfSl9KTt2YXIgZXQ9UygoUmgsV3IpPT57dmFyIHNuPUN0KCksJGU9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7V3IuZXhwb3J0cz1zbj8kZS5iaW5kKCRlKTpmdW5jdGlvbigpe3JldHVybiAkZS5hcHBseSgkZSxhcmd1bWVudHMpfX0pO3ZhciBIcj1TKFhyPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIEdyPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLEtyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsYW49S3ImJiFHci5jYWxsKHsxOjJ9LDEpO1hyLmY9YW4/ZnVuY3Rpb24obyl7dmFyIHU9S3IodGhpcyxvKTtyZXR1cm4hIXUmJnUuZW51bWVyYWJsZX06R3J9KTt2YXIgRXQ9UygocWgsSnIpPT57SnIuZXhwb3J0cz1mdW5jdGlvbihuLG8pe3JldHVybntlbnVtZXJhYmxlOiEobiYxKSxjb25maWd1cmFibGU6IShuJjIpLHdyaXRhYmxlOiEobiY0KSx2YWx1ZTpvfX19KTt2YXIgY2U9UygoTWgsWnIpPT57dmFyIFlyPUN0KCksUXI9RnVuY3Rpb24ucHJvdG90eXBlLG5uPVFyLmJpbmQsYnQ9UXIuY2FsbCxvbj1ZciYmbm4uYmluZChidCxidCk7WnIuZXhwb3J0cz1Zcj9mdW5jdGlvbihuKXtyZXR1cm4gbiYmb24obil9OmZ1bmN0aW9uKG4pe3JldHVybiBuJiZmdW5jdGlvbigpe3JldHVybiBidC5hcHBseShuLGFyZ3VtZW50cyl9fX0pO3ZhciB0aT1TKChVaCxlaSk9Pnt2YXIgJHI9Y2UoKSx1bj0kcih7fS50b1N0cmluZyksaG49JHIoXCJcIi5zbGljZSk7ZWkuZXhwb3J0cz1mdW5jdGlvbihuKXtyZXR1cm4gaG4odW4obiksOCwtMSl9fSk7dmFyIGlpPVMoKHpoLHJpKT0+e3ZhciBsbj0kKCksY249Y2UoKSxwbj15ZSgpLGZuPXRpKCksX3Q9bG4uT2JqZWN0LGRuPWNuKFwiXCIuc3BsaXQpO3JpLmV4cG9ydHM9cG4oZnVuY3Rpb24oKXtyZXR1cm4hX3QoXCJ6XCIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24obil7cmV0dXJuIGZuKG4pPT1cIlN0cmluZ1wiP2RuKG4sXCJcIik6X3Qobil9Ol90fSk7dmFyIFN0PVMoKFdoLHNpKT0+e3ZhciBtbj0kKCksdm49bW4uVHlwZUVycm9yO3NpLmV4cG9ydHM9ZnVuY3Rpb24obil7aWYobj09bnVsbCl0aHJvdyB2bihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiK24pO3JldHVybiBufX0pO3ZhciB0dD1TKChHaCxhaSk9Pnt2YXIgZ249aWkoKSx4bj1TdCgpO2FpLmV4cG9ydHM9ZnVuY3Rpb24obil7cmV0dXJuIGduKHhuKG4pKX19KTt2YXIgcGU9UygoS2gsbmkpPT57bmkuZXhwb3J0cz1mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PVwiZnVuY3Rpb25cIn19KTt2YXIgSWU9UygoWGgsb2kpPT57dmFyIHluPXBlKCk7b2kuZXhwb3J0cz1mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PVwib2JqZWN0XCI/biE9PW51bGw6eW4obil9fSk7dmFyIHJ0PVMoKEhoLHVpKT0+e3ZhciB3dD0kKCksQW49cGUoKSxDbj1mdW5jdGlvbihuKXtyZXR1cm4gQW4obik/bjp2b2lkIDB9O3VpLmV4cG9ydHM9ZnVuY3Rpb24obixvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP0NuKHd0W25dKTp3dFtuXSYmd3Rbbl1bb119fSk7dmFyIGxpPVMoKEpoLGhpKT0+e3ZhciBFbj1jZSgpO2hpLmV4cG9ydHM9RW4oe30uaXNQcm90b3R5cGVPZil9KTt2YXIgcGk9UygoWWgsY2kpPT57dmFyIGJuPXJ0KCk7Y2kuZXhwb3J0cz1ibihcIm5hdmlnYXRvclwiLFwidXNlckFnZW50XCIpfHxcIlwifSk7dmFyIHlpPVMoKFFoLHhpKT0+e3ZhciBnaT0kKCksa3Q9cGkoKSxmaT1naS5wcm9jZXNzLGRpPWdpLkRlbm8sbWk9ZmkmJmZpLnZlcnNpb25zfHxkaSYmZGkudmVyc2lvbix2aT1taSYmbWkudjgsaGUsaXQ7dmkmJihoZT12aS5zcGxpdChcIi5cIiksaXQ9aGVbMF0+MCYmaGVbMF08ND8xOisoaGVbMF0raGVbMV0pKTshaXQmJmt0JiYoaGU9a3QubWF0Y2goL0VkZ2VcXC8oXFxkKykvKSwoIWhlfHxoZVsxXT49NzQpJiYoaGU9a3QubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pLGhlJiYoaXQ9K2hlWzFdKSkpO3hpLmV4cG9ydHM9aXR9KTt2YXIgRnQ9UygoWmgsQ2kpPT57dmFyIEFpPXlpKCksX249eWUoKTtDaS5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIV9uKGZ1bmN0aW9uKCl7dmFyIG49U3ltYm9sKCk7cmV0dXJuIVN0cmluZyhuKXx8IShPYmplY3QobilpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmQWkmJkFpPDQxfSl9KTt2YXIgQnQ9UygoJGgsRWkpPT57dmFyIFNuPUZ0KCk7RWkuZXhwb3J0cz1TbiYmIVN5bWJvbC5zaGFtJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1cInN5bWJvbFwifSk7dmFyIFR0PVMoKGVsLGJpKT0+e3ZhciB3bj0kKCksa249cnQoKSxGbj1wZSgpLEJuPWxpKCksVG49QnQoKSxJbj13bi5PYmplY3Q7YmkuZXhwb3J0cz1Ubj9mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PVwic3ltYm9sXCJ9OmZ1bmN0aW9uKG4pe3ZhciBvPWtuKFwiU3ltYm9sXCIpO3JldHVybiBGbihvKSYmQm4oby5wcm90b3R5cGUsSW4obikpfX0pO3ZhciBTaT1TKCh0bCxfaSk9Pnt2YXIgUG49JCgpLE5uPVBuLlN0cmluZztfaS5leHBvcnRzPWZ1bmN0aW9uKG4pe3RyeXtyZXR1cm4gTm4obil9Y2F0Y2h7cmV0dXJuXCJPYmplY3RcIn19fSk7dmFyIGtpPVMoKHJsLHdpKT0+e3ZhciBEbj0kKCksT249cGUoKSxMbj1TaSgpLFZuPURuLlR5cGVFcnJvcjt3aS5leHBvcnRzPWZ1bmN0aW9uKG4pe2lmKE9uKG4pKXJldHVybiBuO3Rocm93IFZuKExuKG4pK1wiIGlzIG5vdCBhIGZ1bmN0aW9uXCIpfX0pO3ZhciBCaT1TKChpbCxGaSk9Pnt2YXIgUm49a2koKTtGaS5leHBvcnRzPWZ1bmN0aW9uKG4sbyl7dmFyIHU9bltvXTtyZXR1cm4gdT09bnVsbD92b2lkIDA6Um4odSl9fSk7dmFyIElpPVMoKHNsLFRpKT0+e3ZhciBqbj0kKCksSXQ9ZXQoKSxQdD1wZSgpLE50PUllKCkscW49am4uVHlwZUVycm9yO1RpLmV4cG9ydHM9ZnVuY3Rpb24obixvKXt2YXIgdSxsO2lmKG89PT1cInN0cmluZ1wiJiZQdCh1PW4udG9TdHJpbmcpJiYhTnQobD1JdCh1LG4pKXx8UHQodT1uLnZhbHVlT2YpJiYhTnQobD1JdCh1LG4pKXx8byE9PVwic3RyaW5nXCImJlB0KHU9bi50b1N0cmluZykmJiFOdChsPUl0KHUsbikpKXJldHVybiBsO3Rocm93IHFuKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfX0pO3ZhciBOaT1TKChhbCxQaSk9PntQaS5leHBvcnRzPSExfSk7dmFyIHN0PVMoKG5sLE9pKT0+e3ZhciBEaT0kKCksTW49T2JqZWN0LmRlZmluZVByb3BlcnR5O09pLmV4cG9ydHM9ZnVuY3Rpb24obixvKXt0cnl7TW4oRGksbix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaHtEaVtuXT1vfXJldHVybiBvfX0pO3ZhciBhdD1TKChvbCxWaSk9Pnt2YXIgVW49JCgpLHpuPXN0KCksTGk9XCJfX2NvcmUtanNfc2hhcmVkX19cIixXbj1VbltMaV18fHpuKExpLHt9KTtWaS5leHBvcnRzPVdufSk7dmFyIER0PVMoKHVsLGppKT0+e3ZhciBHbj1OaSgpLFJpPWF0KCk7KGppLmV4cG9ydHM9ZnVuY3Rpb24obixvKXtyZXR1cm4gUmlbbl18fChSaVtuXT1vIT09dm9pZCAwP286e30pfSkoXCJ2ZXJzaW9uc1wiLFtdKS5wdXNoKHt2ZXJzaW9uOlwiMy4yMi4yXCIsbW9kZTpHbj9cInB1cmVcIjpcImdsb2JhbFwiLGNvcHlyaWdodDpcIlxceEE5IDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KVwiLGxpY2Vuc2U6XCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjIyLjIvTElDRU5TRVwiLHNvdXJjZTpcImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzXCJ9KX0pO3ZhciBNaT1TKChobCxxaSk9Pnt2YXIgS249JCgpLFhuPVN0KCksSG49S24uT2JqZWN0O3FpLmV4cG9ydHM9ZnVuY3Rpb24obil7cmV0dXJuIEhuKFhuKG4pKX19KTt2YXIgQWU9UygobGwsVWkpPT57dmFyIEpuPWNlKCksWW49TWkoKSxRbj1Kbih7fS5oYXNPd25Qcm9wZXJ0eSk7VWkuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbihvLHUpe3JldHVybiBRbihZbihvKSx1KX19KTt2YXIgT3Q9UygoY2wsemkpPT57dmFyIFpuPWNlKCksJG49MCxlbz1NYXRoLnJhbmRvbSgpLHRvPVpuKDEgLnRvU3RyaW5nKTt6aS5leHBvcnRzPWZ1bmN0aW9uKG4pe3JldHVyblwiU3ltYm9sKFwiKyhuPT09dm9pZCAwP1wiXCI6bikrXCIpX1wiK3RvKCsrJG4rZW8sMzYpfX0pO3ZhciBKaT1TKChwbCxIaSk9Pnt2YXIgcm89JCgpLGlvPUR0KCksV2k9QWUoKSxzbz1PdCgpLEdpPUZ0KCksWGk9QnQoKSxQZT1pbyhcIndrc1wiKSxTZT1yby5TeW1ib2wsS2k9U2UmJlNlLmZvcixhbz1YaT9TZTpTZSYmU2Uud2l0aG91dFNldHRlcnx8c287SGkuZXhwb3J0cz1mdW5jdGlvbihuKXtpZighV2koUGUsbil8fCEoR2l8fHR5cGVvZiBQZVtuXT09XCJzdHJpbmdcIikpe3ZhciBvPVwiU3ltYm9sLlwiK247R2kmJldpKFNlLG4pP1BlW25dPVNlW25dOlhpJiZLaT9QZVtuXT1LaShvKTpQZVtuXT1hbyhvKX1yZXR1cm4gUGVbbl19fSk7dmFyICRpPVMoKGZsLFppKT0+e3ZhciBubz0kKCksb289ZXQoKSxZaT1JZSgpLFFpPVR0KCksdW89QmkoKSxobz1JaSgpLGxvPUppKCksY289bm8uVHlwZUVycm9yLHBvPWxvKFwidG9QcmltaXRpdmVcIik7WmkuZXhwb3J0cz1mdW5jdGlvbihuLG8pe2lmKCFZaShuKXx8UWkobikpcmV0dXJuIG47dmFyIHU9dW8obixwbyksbDtpZih1KXtpZihvPT09dm9pZCAwJiYobz1cImRlZmF1bHRcIiksbD1vbyh1LG4sbyksIVlpKGwpfHxRaShsKSlyZXR1cm4gbDt0aHJvdyBjbyhcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX1yZXR1cm4gbz09PXZvaWQgMCYmKG89XCJudW1iZXJcIiksaG8obixvKX19KTt2YXIgTHQ9UygoZGwsZXMpPT57dmFyIGZvPSRpKCksbW89VHQoKTtlcy5leHBvcnRzPWZ1bmN0aW9uKG4pe3ZhciBvPWZvKG4sXCJzdHJpbmdcIik7cmV0dXJuIG1vKG8pP286bytcIlwifX0pO3ZhciBpcz1TKChtbCxycyk9Pnt2YXIgdm89JCgpLHRzPUllKCksVnQ9dm8uZG9jdW1lbnQsZ289dHMoVnQpJiZ0cyhWdC5jcmVhdGVFbGVtZW50KTtycy5leHBvcnRzPWZ1bmN0aW9uKG4pe3JldHVybiBnbz9WdC5jcmVhdGVFbGVtZW50KG4pOnt9fX0pO3ZhciBSdD1TKCh2bCxzcyk9Pnt2YXIgeG89X2UoKSx5bz15ZSgpLEFvPWlzKCk7c3MuZXhwb3J0cz0heG8mJiF5byhmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoQW8oXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmEhPTd9KX0pO3ZhciBqdD1TKG5zPT57dmFyIENvPV9lKCksRW89ZXQoKSxibz1IcigpLF9vPUV0KCksU289dHQoKSx3bz1MdCgpLGtvPUFlKCksRm89UnQoKSxhcz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO25zLmY9Q28/YXM6ZnVuY3Rpb24obyx1KXtpZihvPVNvKG8pLHU9d28odSksRm8pdHJ5e3JldHVybiBhcyhvLHUpfWNhdGNoe31pZihrbyhvLHUpKXJldHVybiBfbyghRW8oYm8uZixvLHUpLG9bdV0pfX0pO3ZhciB1cz1TKCh4bCxvcyk9Pnt2YXIgQm89X2UoKSxUbz15ZSgpO29zLmV4cG9ydHM9Qm8mJlRvKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sXCJwcm90b3R5cGVcIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGUhPTQyfSl9KTt2YXIgcXQ9UygoeWwsbHMpPT57dmFyIGhzPSQoKSxJbz1JZSgpLFBvPWhzLlN0cmluZyxObz1ocy5UeXBlRXJyb3I7bHMuZXhwb3J0cz1mdW5jdGlvbihuKXtpZihJbyhuKSlyZXR1cm4gbjt0aHJvdyBObyhQbyhuKStcIiBpcyBub3QgYW4gb2JqZWN0XCIpfX0pO3ZhciBHdD1TKHBzPT57dmFyIERvPSQoKSxPbz1fZSgpLExvPVJ0KCksVm89dXMoKSxudD1xdCgpLGNzPUx0KCksUm89RG8uVHlwZUVycm9yLE10PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxqbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFV0PVwiZW51bWVyYWJsZVwiLHp0PVwiY29uZmlndXJhYmxlXCIsV3Q9XCJ3cml0YWJsZVwiO3BzLmY9T28/Vm8/ZnVuY3Rpb24obyx1LGwpe2lmKG50KG8pLHU9Y3ModSksbnQobCksdHlwZW9mIG89PVwiZnVuY3Rpb25cIiYmdT09PVwicHJvdG90eXBlXCImJlwidmFsdWVcImluIGwmJld0IGluIGwmJiFsW1d0XSl7dmFyIG09am8obyx1KTttJiZtW1d0XSYmKG9bdV09bC52YWx1ZSxsPXtjb25maWd1cmFibGU6enQgaW4gbD9sW3p0XTptW3p0XSxlbnVtZXJhYmxlOlV0IGluIGw/bFtVdF06bVtVdF0sd3JpdGFibGU6ITF9KX1yZXR1cm4gTXQobyx1LGwpfTpNdDpmdW5jdGlvbihvLHUsbCl7aWYobnQobyksdT1jcyh1KSxudChsKSxMbyl0cnl7cmV0dXJuIE10KG8sdSxsKX1jYXRjaHt9aWYoXCJnZXRcImluIGx8fFwic2V0XCJpbiBsKXRocm93IFJvKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWRcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gbCYmKG9bdV09bC52YWx1ZSksb319KTt2YXIgb3Q9UygoQ2wsZnMpPT57dmFyIHFvPV9lKCksTW89R3QoKSxVbz1FdCgpO2ZzLmV4cG9ydHM9cW8/ZnVuY3Rpb24obixvLHUpe3JldHVybiBNby5mKG4sbyxVbygxLHUpKX06ZnVuY3Rpb24obixvLHUpe3JldHVybiBuW29dPXUsbn19KTt2YXIgWHQ9UygoRWwsZHMpPT57dmFyIHpvPWNlKCksV289cGUoKSxLdD1hdCgpLEdvPXpvKEZ1bmN0aW9uLnRvU3RyaW5nKTtXbyhLdC5pbnNwZWN0U291cmNlKXx8KEt0Lmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24obil7cmV0dXJuIEdvKG4pfSk7ZHMuZXhwb3J0cz1LdC5pbnNwZWN0U291cmNlfSk7dmFyIGdzPVMoKGJsLHZzKT0+e3ZhciBLbz0kKCksWG89cGUoKSxIbz1YdCgpLG1zPUtvLldlYWtNYXA7dnMuZXhwb3J0cz1YbyhtcykmJi9uYXRpdmUgY29kZS8udGVzdChIbyhtcykpfSk7dmFyIEFzPVMoKF9sLHlzKT0+e3ZhciBKbz1EdCgpLFlvPU90KCkseHM9Sm8oXCJrZXlzXCIpO3lzLmV4cG9ydHM9ZnVuY3Rpb24obil7cmV0dXJuIHhzW25dfHwoeHNbbl09WW8obikpfX0pO3ZhciBIdD1TKChTbCxDcyk9PntDcy5leHBvcnRzPXt9fSk7dmFyIGtzPVMoKHdsLHdzKT0+e3ZhciBRbz1ncygpLFNzPSQoKSxKdD1jZSgpLFpvPUllKCksJG89b3QoKSxZdD1BZSgpLFF0PWF0KCksZXU9QXMoKSx0dT1IdCgpLEVzPVwiT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWRcIiwkdD1Tcy5UeXBlRXJyb3IscnU9U3MuV2Vha01hcCx1dCxxZSxodCxpdT1mdW5jdGlvbihuKXtyZXR1cm4gaHQobik/cWUobik6dXQobix7fSl9LHN1PWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihvKXt2YXIgdTtpZighWm8obyl8fCh1PXFlKG8pKS50eXBlIT09bil0aHJvdyAkdChcIkluY29tcGF0aWJsZSByZWNlaXZlciwgXCIrbitcIiByZXF1aXJlZFwiKTtyZXR1cm4gdX19O1FvfHxRdC5zdGF0ZT8oQ2U9UXQuc3RhdGV8fChRdC5zdGF0ZT1uZXcgcnUpLGJzPUp0KENlLmdldCksWnQ9SnQoQ2UuaGFzKSxfcz1KdChDZS5zZXQpLHV0PWZ1bmN0aW9uKG4sbyl7aWYoWnQoQ2UsbikpdGhyb3cgbmV3ICR0KEVzKTtyZXR1cm4gby5mYWNhZGU9bixfcyhDZSxuLG8pLG99LHFlPWZ1bmN0aW9uKG4pe3JldHVybiBicyhDZSxuKXx8e319LGh0PWZ1bmN0aW9uKG4pe3JldHVybiBadChDZSxuKX0pOih3ZT1ldShcInN0YXRlXCIpLHR1W3dlXT0hMCx1dD1mdW5jdGlvbihuLG8pe2lmKFl0KG4sd2UpKXRocm93IG5ldyAkdChFcyk7cmV0dXJuIG8uZmFjYWRlPW4sJG8obix3ZSxvKSxvfSxxZT1mdW5jdGlvbihuKXtyZXR1cm4gWXQobix3ZSk/blt3ZV06e319LGh0PWZ1bmN0aW9uKG4pe3JldHVybiBZdChuLHdlKX0pO3ZhciBDZSxicyxadCxfcyx3ZTt3cy5leHBvcnRzPXtzZXQ6dXQsZ2V0OnFlLGhhczpodCxlbmZvcmNlOml1LGdldHRlckZvcjpzdX19KTt2YXIgVHM9Uygoa2wsQnMpPT57dmFyIGVyPV9lKCksYXU9QWUoKSxGcz1GdW5jdGlvbi5wcm90b3R5cGUsbnU9ZXImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdHI9YXUoRnMsXCJuYW1lXCIpLG91PXRyJiZmdW5jdGlvbigpe30ubmFtZT09PVwic29tZXRoaW5nXCIsdXU9dHImJighZXJ8fGVyJiZudShGcyxcIm5hbWVcIikuY29uZmlndXJhYmxlKTtCcy5leHBvcnRzPXtFWElTVFM6dHIsUFJPUEVSOm91LENPTkZJR1VSQUJMRTp1dX19KTt2YXIgT3M9UygoRmwsRHMpPT57dmFyIGh1PSQoKSxJcz1wZSgpLGx1PUFlKCksUHM9b3QoKSxjdT1zdCgpLHB1PVh0KCksTnM9a3MoKSxmdT1UcygpLkNPTkZJR1VSQUJMRSxkdT1Ocy5nZXQsbXU9TnMuZW5mb3JjZSx2dT1TdHJpbmcoU3RyaW5nKS5zcGxpdChcIlN0cmluZ1wiKTsoRHMuZXhwb3J0cz1mdW5jdGlvbihuLG8sdSxsKXt2YXIgbT1sPyEhbC51bnNhZmU6ITEsRT1sPyEhbC5lbnVtZXJhYmxlOiExLHk9bD8hIWwubm9UYXJnZXRHZXQ6ITEsQT1sJiZsLm5hbWUhPT12b2lkIDA/bC5uYW1lOm8sYjtpZihJcyh1KSYmKFN0cmluZyhBKS5zbGljZSgwLDcpPT09XCJTeW1ib2woXCImJihBPVwiW1wiK1N0cmluZyhBKS5yZXBsYWNlKC9eU3ltYm9sXFwoKFteKV0qKVxcKS8sXCIkMVwiKStcIl1cIiksKCFsdSh1LFwibmFtZVwiKXx8ZnUmJnUubmFtZSE9PUEpJiZQcyh1LFwibmFtZVwiLEEpLGI9bXUodSksYi5zb3VyY2V8fChiLnNvdXJjZT12dS5qb2luKHR5cGVvZiBBPT1cInN0cmluZ1wiP0E6XCJcIikpKSxuPT09aHUpe0U/bltvXT11OmN1KG8sdSk7cmV0dXJufWVsc2UgbT8heSYmbltvXSYmKEU9ITApOmRlbGV0ZSBuW29dO0U/bltvXT11OlBzKG4sbyx1KX0pKEZ1bmN0aW9uLnByb3RvdHlwZSxcInRvU3RyaW5nXCIsZnVuY3Rpb24oKXtyZXR1cm4gSXModGhpcykmJmR1KHRoaXMpLnNvdXJjZXx8cHUodGhpcyl9KX0pO3ZhciBycj1TKChCbCxMcyk9Pnt2YXIgZ3U9TWF0aC5jZWlsLHh1PU1hdGguZmxvb3I7THMuZXhwb3J0cz1mdW5jdGlvbihuKXt2YXIgbz0rbjtyZXR1cm4gbyE9PW98fG89PT0wPzA6KG8+MD94dTpndSkobyl9fSk7dmFyIFJzPVMoKFRsLFZzKT0+e3ZhciB5dT1ycigpLEF1PU1hdGgubWF4LEN1PU1hdGgubWluO1ZzLmV4cG9ydHM9ZnVuY3Rpb24obixvKXt2YXIgdT15dShuKTtyZXR1cm4gdTwwP0F1KHUrbywwKTpDdSh1LG8pfX0pO3ZhciBxcz1TKChJbCxqcyk9Pnt2YXIgRXU9cnIoKSxidT1NYXRoLm1pbjtqcy5leHBvcnRzPWZ1bmN0aW9uKG4pe3JldHVybiBuPjA/YnUoRXUobiksOTAwNzE5OTI1NDc0MDk5MSk6MH19KTt2YXIgVXM9UygoUGwsTXMpPT57dmFyIF91PXFzKCk7TXMuZXhwb3J0cz1mdW5jdGlvbihuKXtyZXR1cm4gX3Uobi5sZW5ndGgpfX0pO3ZhciBHcz1TKChObCxXcyk9Pnt2YXIgU3U9dHQoKSx3dT1ScygpLGt1PVVzKCksenM9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8sdSxsKXt2YXIgbT1TdShvKSxFPWt1KG0pLHk9d3UobCxFKSxBO2lmKG4mJnUhPXUpe2Zvcig7RT55OylpZihBPW1beSsrXSxBIT1BKXJldHVybiEwfWVsc2UgZm9yKDtFPnk7eSsrKWlmKChufHx5IGluIG0pJiZtW3ldPT09dSlyZXR1cm4gbnx8eXx8MDtyZXR1cm4hbiYmLTF9fTtXcy5leHBvcnRzPXtpbmNsdWRlczp6cyghMCksaW5kZXhPZjp6cyghMSl9fSk7dmFyIEhzPVMoKERsLFhzKT0+e3ZhciBGdT1jZSgpLGlyPUFlKCksQnU9dHQoKSxUdT1HcygpLmluZGV4T2YsSXU9SHQoKSxLcz1GdShbXS5wdXNoKTtYcy5leHBvcnRzPWZ1bmN0aW9uKG4sbyl7dmFyIHU9QnUobiksbD0wLG09W10sRTtmb3IoRSBpbiB1KSFpcihJdSxFKSYmaXIodSxFKSYmS3MobSxFKTtmb3IoO28ubGVuZ3RoPmw7KWlyKHUsRT1vW2wrK10pJiYoflR1KG0sRSl8fEtzKG0sRSkpO3JldHVybiBtfX0pO3ZhciBZcz1TKChPbCxKcyk9PntKcy5leHBvcnRzPVtcImNvbnN0cnVjdG9yXCIsXCJoYXNPd25Qcm9wZXJ0eVwiLFwiaXNQcm90b3R5cGVPZlwiLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcInRvTG9jYWxlU3RyaW5nXCIsXCJ0b1N0cmluZ1wiLFwidmFsdWVPZlwiXX0pO3ZhciBacz1TKFFzPT57dmFyIFB1PUhzKCksTnU9WXMoKSxEdT1OdS5jb25jYXQoXCJsZW5ndGhcIixcInByb3RvdHlwZVwiKTtRcy5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihvKXtyZXR1cm4gUHUobyxEdSl9fSk7dmFyIGVhPVMoJHM9Pnskcy5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9KTt2YXIgcmE9UygoUmwsdGEpPT57dmFyIE91PXJ0KCksTHU9Y2UoKSxWdT1acygpLFJ1PWVhKCksanU9cXQoKSxxdT1MdShbXS5jb25jYXQpO3RhLmV4cG9ydHM9T3UoXCJSZWZsZWN0XCIsXCJvd25LZXlzXCIpfHxmdW5jdGlvbihvKXt2YXIgdT1WdS5mKGp1KG8pKSxsPVJ1LmY7cmV0dXJuIGw/cXUodSxsKG8pKTp1fX0pO3ZhciBhYT1TKChqbCxzYSk9Pnt2YXIgaWE9QWUoKSxNdT1yYSgpLFV1PWp0KCksenU9R3QoKTtzYS5leHBvcnRzPWZ1bmN0aW9uKG4sbyx1KXtmb3IodmFyIGw9TXUobyksbT16dS5mLEU9VXUuZix5PTA7eTxsLmxlbmd0aDt5Kyspe3ZhciBBPWxbeV07IWlhKG4sQSkmJiEodSYmaWEodSxBKSkmJm0obixBLEUobyxBKSl9fX0pO3ZhciBvYT1TKChxbCxuYSk9Pnt2YXIgV3U9eWUoKSxHdT1wZSgpLEt1PS8jfFxcLnByb3RvdHlwZVxcLi8sTWU9ZnVuY3Rpb24obixvKXt2YXIgdT1IdVtYdShuKV07cmV0dXJuIHU9PVl1PyEwOnU9PUp1PyExOkd1KG8pP1d1KG8pOiEhb30sWHU9TWUubm9ybWFsaXplPWZ1bmN0aW9uKG4pe3JldHVybiBTdHJpbmcobikucmVwbGFjZShLdSxcIi5cIikudG9Mb3dlckNhc2UoKX0sSHU9TWUuZGF0YT17fSxKdT1NZS5OQVRJVkU9XCJOXCIsWXU9TWUuUE9MWUZJTEw9XCJQXCI7bmEuZXhwb3J0cz1NZX0pO3ZhciBoYT1TKChNbCx1YSk9Pnt2YXIgc3I9JCgpLFF1PWp0KCkuZixadT1vdCgpLCR1PU9zKCksZWg9c3QoKSx0aD1hYSgpLHJoPW9hKCk7dWEuZXhwb3J0cz1mdW5jdGlvbihuLG8pe3ZhciB1PW4udGFyZ2V0LGw9bi5nbG9iYWwsbT1uLnN0YXQsRSx5LEEsYixnLFY7aWYobD95PXNyOm0/eT1zclt1XXx8ZWgodSx7fSk6eT0oc3JbdV18fHt9KS5wcm90b3R5cGUseSlmb3IoQSBpbiBvKXtpZihnPW9bQV0sbi5ub1RhcmdldEdldD8oVj1RdSh5LEEpLGI9ViYmVi52YWx1ZSk6Yj15W0FdLEU9cmgobD9BOnUrKG0/XCIuXCI6XCIjXCIpK0Esbi5mb3JjZWQpLCFFJiZiIT09dm9pZCAwKXtpZih0eXBlb2YgZz09dHlwZW9mIGIpY29udGludWU7dGgoZyxiKX0obi5zaGFtfHxiJiZiLnNoYW0pJiZadShnLFwic2hhbVwiLCEwKSwkdSh5LEEsZyxuKX19fSk7dmFyIGxhPVMoKCk9Pnt2YXIgaWg9aGEoKSxzaD0kKCk7aWgoe2dsb2JhbDohMH0se2dsb2JhbFRoaXM6c2h9KX0pO3ZhciBjYT1TKCgpPT57bGEoKX0pO3ZhciBQaD1TKChYbCxOYSk9PntjYSgpO3ZhciB1cj1PYmplY3QuZGVmaW5lUHJvcGVydHksYWg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixocj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxuaD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHBhPShuLG8pPT5mdW5jdGlvbigpe3JldHVybiBuJiYobz0oMCxuW2hyKG4pWzBdXSkobj0wKSksb30sWT0obixvKT0+ZnVuY3Rpb24oKXtyZXR1cm4gb3x8KDAsbltocihuKVswXV0pKChvPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxvKSxvLmV4cG9ydHN9LG9oPShuLG8pPT57Zm9yKHZhciB1IGluIG8pdXIobix1LHtnZXQ6b1t1XSxlbnVtZXJhYmxlOiEwfSl9LHVoPShuLG8sdSxsKT0+e2lmKG8mJnR5cGVvZiBvPT1cIm9iamVjdFwifHx0eXBlb2Ygbz09XCJmdW5jdGlvblwiKWZvcihsZXQgbSBvZiBocihvKSkhbmguY2FsbChuLG0pJiZtIT09dSYmdXIobixtLHtnZXQ6KCk9Pm9bbV0sZW51bWVyYWJsZTohKGw9YWgobyxtKSl8fGwuZW51bWVyYWJsZX0pO3JldHVybiBufSxoaD1uPT51aCh1cih7fSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxuKSxKPXBhKHtcIjxkZWZpbmU6cHJvY2Vzcz5cIigpe319KSxscj1ZKHtcInNyYy9jb21tb24vcGFyc2VyLWNyZWF0ZS1lcnJvci5qc1wiKG4sbyl7XCJ1c2Ugc3RyaWN0XCI7SigpO2Z1bmN0aW9uIHUobCxtKXtsZXQgRT1uZXcgU3ludGF4RXJyb3IobCtcIiAoXCIrbS5zdGFydC5saW5lK1wiOlwiK20uc3RhcnQuY29sdW1uK1wiKVwiKTtyZXR1cm4gRS5sb2M9bSxFfW8uZXhwb3J0cz11fX0pLGZhPVkoe1wic3JjL3V0aWxzL3RyeS1jb21iaW5hdGlvbnMuanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTtmdW5jdGlvbiB1KCl7bGV0IGw7Zm9yKHZhciBtPWFyZ3VtZW50cy5sZW5ndGgsRT1uZXcgQXJyYXkobSkseT0wO3k8bTt5KyspRVt5XT1hcmd1bWVudHNbeV07Zm9yKGxldFtBLGJdb2YgRS5lbnRyaWVzKCkpdHJ5e3JldHVybntyZXN1bHQ6YigpfX1jYXRjaChnKXtBPT09MCYmKGw9Zyl9cmV0dXJue2Vycm9yOmx9fW8uZXhwb3J0cz11fX0pLGRhPXt9O29oKGRhLHtFT0w6KCk9Pm9yLGFyY2g6KCk9PmxoLGNwdXM6KCk9PkNhLGRlZmF1bHQ6KCk9PndhLGVuZGlhbm5lc3M6KCk9Pm1hLGZyZWVtZW06KCk9PnlhLGdldE5ldHdvcmtJbnRlcmZhY2VzOigpPT5TYSxob3N0bmFtZTooKT0+dmEsbG9hZGF2ZzooKT0+Z2EsbmV0d29ya0ludGVyZmFjZXM6KCk9Pl9hLHBsYXRmb3JtOigpPT5jaCxyZWxlYXNlOigpPT5iYSx0bXBEaXI6KCk9PmFyLHRtcGRpcjooKT0+bnIsdG90YWxtZW06KCk9PkFhLHR5cGU6KCk9PkVhLHVwdGltZTooKT0+eGF9KTtmdW5jdGlvbiBtYSgpe2lmKHR5cGVvZiBsdD5cInVcIil7dmFyIG49bmV3IEFycmF5QnVmZmVyKDIpLG89bmV3IFVpbnQ4QXJyYXkobiksdT1uZXcgVWludDE2QXJyYXkobik7aWYob1swXT0xLG9bMV09Mix1WzBdPT09MjU4KWx0PVwiQkVcIjtlbHNlIGlmKHVbMF09PT01MTMpbHQ9XCJMRVwiO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwidW5hYmxlIHRvIGZpZ3VyZSBvdXQgZW5kaWFuZXNzXCIpfXJldHVybiBsdH1mdW5jdGlvbiB2YSgpe3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpcy5sb2NhdGlvbjxcInVcIj9nbG9iYWxUaGlzLmxvY2F0aW9uLmhvc3RuYW1lOlwiXCJ9ZnVuY3Rpb24gZ2EoKXtyZXR1cm5bXX1mdW5jdGlvbiB4YSgpe3JldHVybiAwfWZ1bmN0aW9uIHlhKCl7cmV0dXJuIE51bWJlci5NQVhfVkFMVUV9ZnVuY3Rpb24gQWEoKXtyZXR1cm4gTnVtYmVyLk1BWF9WQUxVRX1mdW5jdGlvbiBDYSgpe3JldHVybltdfWZ1bmN0aW9uIEVhKCl7cmV0dXJuXCJCcm93c2VyXCJ9ZnVuY3Rpb24gYmEoKXtyZXR1cm4gdHlwZW9mIGdsb2JhbFRoaXMubmF2aWdhdG9yPFwidVwiP2dsb2JhbFRoaXMubmF2aWdhdG9yLmFwcFZlcnNpb246XCJcIn1mdW5jdGlvbiBfYSgpe31mdW5jdGlvbiBTYSgpe31mdW5jdGlvbiBsaCgpe3JldHVyblwiamF2YXNjcmlwdFwifWZ1bmN0aW9uIGNoKCl7cmV0dXJuXCJicm93c2VyXCJ9ZnVuY3Rpb24gYXIoKXtyZXR1cm5cIi90bXBcIn12YXIgbHQsbnIsb3Isd2EscGg9cGEoe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxsczpvc1wiKCl7SigpLG5yPWFyLG9yPWBcbmAsd2E9e0VPTDpvcix0bXBkaXI6bnIsdG1wRGlyOmFyLG5ldHdvcmtJbnRlcmZhY2VzOl9hLGdldE5ldHdvcmtJbnRlcmZhY2VzOlNhLHJlbGVhc2U6YmEsdHlwZTpFYSxjcHVzOkNhLHRvdGFsbWVtOkFhLGZyZWVtZW06eWEsdXB0aW1lOnhhLGxvYWRhdmc6Z2EsaG9zdG5hbWU6dmEsZW5kaWFubmVzczptYX19fSksZmg9WSh7XCJub2RlLW1vZHVsZXMtcG9seWZpbGxzLWNvbW1vbmpzOm9zXCIobixvKXtKKCk7dmFyIHU9KHBoKCksaGgoZGEpKTtpZih1JiZ1LmRlZmF1bHQpe28uZXhwb3J0cz11LmRlZmF1bHQ7Zm9yKGxldCBsIGluIHUpby5leHBvcnRzW2xdPXVbbF19ZWxzZSB1JiYoby5leHBvcnRzPXUpfX0pLGRoPVkoe1wibm9kZV9tb2R1bGVzL2RldGVjdC1uZXdsaW5lL2luZGV4LmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7dmFyIHU9bD0+e2lmKHR5cGVvZiBsIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIHN0cmluZ1wiKTtsZXQgbT1sLm1hdGNoKC8oPzpcXHI/XFxuKS9nKXx8W107aWYobS5sZW5ndGg9PT0wKXJldHVybjtsZXQgRT1tLmZpbHRlcihBPT5BPT09YFxcclxuYCkubGVuZ3RoLHk9bS5sZW5ndGgtRTtyZXR1cm4gRT55P2BcXHJcbmA6YFxuYH07by5leHBvcnRzPXUsby5leHBvcnRzLmdyYWNlZnVsPWw9PnR5cGVvZiBsPT1cInN0cmluZ1wiJiZ1KGwpfHxgXG5gfX0pLG1oPVkoe1wibm9kZV9tb2R1bGVzL2plc3QtZG9jYmxvY2svYnVpbGQvaW5kZXguanNcIihuKXtcInVzZSBzdHJpY3RcIjtKKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbi5leHRyYWN0PVQsbi5wYXJzZT1xLG4ucGFyc2VXaXRoQ29tbWVudHM9QixuLnByaW50PUksbi5zdHJpcD12O2Z1bmN0aW9uIG8oKXtsZXQgQz1maCgpO3JldHVybiBvPWZ1bmN0aW9uKCl7cmV0dXJuIEN9LEN9ZnVuY3Rpb24gdSgpe2xldCBDPWwoZGgoKSk7cmV0dXJuIHU9ZnVuY3Rpb24oKXtyZXR1cm4gQ30sQ31mdW5jdGlvbiBsKEMpe3JldHVybiBDJiZDLl9fZXNNb2R1bGU/Qzp7ZGVmYXVsdDpDfX12YXIgbT0vXFwqXFwvJC8sRT0vXlxcL1xcKlxcKi8seT0vXlxccyooXFwvXFwqXFwqPygufFxccj9cXG4pKj9cXCpcXC8pLyxBPS8oXnxcXHMrKVxcL1xcLyhbXlxcclxcbl0qKS9nLGI9L14oXFxyP1xcbikrLyxnPS8oPzpefFxccj9cXG4pICooQFteXFxyXFxuXSo/KSAqXFxyP1xcbiAqKD8hW15AXFxyXFxuXSpcXC9cXC9bXl0qKShbXkBcXHJcXG5cXHNdW15AXFxyXFxuXSs/KSAqXFxyP1xcbi9nLFY9Lyg/Ol58XFxyP1xcbikgKkAoXFxTKykgKihbXlxcclxcbl0qKS9nLFI9LyhcXHI/XFxufF4pICpcXCogPy9nLE49W107ZnVuY3Rpb24gVChDKXtsZXQgSD1DLm1hdGNoKHkpO3JldHVybiBIP0hbMF0udHJpbUxlZnQoKTpcIlwifWZ1bmN0aW9uIHYoQyl7bGV0IEg9Qy5tYXRjaCh5KTtyZXR1cm4gSCYmSFswXT9DLnN1YnN0cmluZyhIWzBdLmxlbmd0aCk6Q31mdW5jdGlvbiBxKEMpe3JldHVybiBCKEMpLnByYWdtYXN9ZnVuY3Rpb24gQihDKXtsZXQgSD0oMCx1KCkuZGVmYXVsdCkoQyl8fG8oKS5FT0w7Qz1DLnJlcGxhY2UoRSxcIlwiKS5yZXBsYWNlKG0sXCJcIikucmVwbGFjZShSLFwiJDFcIik7bGV0IEw9XCJcIjtmb3IoO0whPT1DOylMPUMsQz1DLnJlcGxhY2UoZyxcIlwiLmNvbmNhdChILFwiJDEgJDJcIikuY29uY2F0KEgpKTtDPUMucmVwbGFjZShiLFwiXCIpLnRyaW1SaWdodCgpO2xldCBpPU9iamVjdC5jcmVhdGUobnVsbCksXz1DLnJlcGxhY2UoVixcIlwiKS5yZXBsYWNlKGIsXCJcIikudHJpbVJpZ2h0KCksUDtmb3IoO1A9Vi5leGVjKEMpOyl7bGV0IE09UFsyXS5yZXBsYWNlKEEsXCJcIik7dHlwZW9mIGlbUFsxXV09PVwic3RyaW5nXCJ8fEFycmF5LmlzQXJyYXkoaVtQWzFdXSk/aVtQWzFdXT1OLmNvbmNhdChpW1BbMV1dLE0pOmlbUFsxXV09TX1yZXR1cm57Y29tbWVudHM6XyxwcmFnbWFzOml9fWZ1bmN0aW9uIEkoQyl7bGV0e2NvbW1lbnRzOkg9XCJcIixwcmFnbWFzOkw9e319PUMsaT0oMCx1KCkuZGVmYXVsdCkoSCl8fG8oKS5FT0wsXz1cIi8qKlwiLFA9XCIgKlwiLE09XCIgKi9cIixlZT1PYmplY3Qua2V5cyhMKSxhZT1lZS5tYXAoaWU9PmsoaWUsTFtpZV0pKS5yZWR1Y2UoKGllLE5lKT0+aWUuY29uY2F0KE5lKSxbXSkubWFwKGllPT5QK1wiIFwiK2llK2kpLmpvaW4oXCJcIik7aWYoIUgpe2lmKGVlLmxlbmd0aD09PTApcmV0dXJuXCJcIjtpZihlZS5sZW5ndGg9PT0xJiYhQXJyYXkuaXNBcnJheShMW2VlWzBdXSkpe2xldCBpZT1MW2VlWzBdXTtyZXR1cm5cIlwiLmNvbmNhdChfLFwiIFwiKS5jb25jYXQoayhlZVswXSxpZSlbMF0pLmNvbmNhdChNKX19bGV0IHRlPUguc3BsaXQoaSkubWFwKGllPT5cIlwiLmNvbmNhdChQLFwiIFwiKS5jb25jYXQoaWUpKS5qb2luKGkpK2k7cmV0dXJuIF8raSsoSD90ZTpcIlwiKSsoSCYmZWUubGVuZ3RoP1AraTpcIlwiKSthZStNfWZ1bmN0aW9uIGsoQyxIKXtyZXR1cm4gTi5jb25jYXQoSCkubWFwKEw9PlwiQFwiLmNvbmNhdChDLFwiIFwiKS5jb25jYXQoTCkudHJpbSgpKX19fSksdmg9WSh7XCJzcmMvY29tbW9uL2VuZC1vZi1saW5lLmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7ZnVuY3Rpb24gdSh5KXtsZXQgQT15LmluZGV4T2YoXCJcXHJcIik7cmV0dXJuIEE+PTA/eS5jaGFyQXQoQSsxKT09PWBcbmA/XCJjcmxmXCI6XCJjclwiOlwibGZcIn1mdW5jdGlvbiBsKHkpe3N3aXRjaCh5KXtjYXNlXCJjclwiOnJldHVyblwiXFxyXCI7Y2FzZVwiY3JsZlwiOnJldHVybmBcXHJcbmA7ZGVmYXVsdDpyZXR1cm5gXG5gfX1mdW5jdGlvbiBtKHksQSl7bGV0IGI7c3dpdGNoKEEpe2Nhc2VgXG5gOmI9L1xcbi9nO2JyZWFrO2Nhc2VcIlxcclwiOmI9L1xcci9nO2JyZWFrO2Nhc2VgXFxyXG5gOmI9L1xcclxcbi9nO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIFwiZW9sXCIgJy5jb25jYXQoSlNPTi5zdHJpbmdpZnkoQSksXCIuXCIpKX1sZXQgZz15Lm1hdGNoKGIpO3JldHVybiBnP2cubGVuZ3RoOjB9ZnVuY3Rpb24gRSh5KXtyZXR1cm4geS5yZXBsYWNlKC9cXHJcXG4/L2csYFxuYCl9by5leHBvcnRzPXtndWVzc0VuZE9mTGluZTp1LGNvbnZlcnRFbmRPZkxpbmVUb0NoYXJzOmwsY291bnRFbmRPZkxpbmVDaGFyczptLG5vcm1hbGl6ZUVuZE9mTGluZTpFfX19KSxnaD1ZKHtcInNyYy9sYW5ndWFnZS1qcy91dGlscy9nZXQtc2hlYmFuZy5qc1wiKG4sbyl7XCJ1c2Ugc3RyaWN0XCI7SigpO2Z1bmN0aW9uIHUobCl7aWYoIWwuc3RhcnRzV2l0aChcIiMhXCIpKXJldHVyblwiXCI7bGV0IG09bC5pbmRleE9mKGBcbmApO3JldHVybiBtPT09LTE/bDpsLnNsaWNlKDAsbSl9by5leHBvcnRzPXV9fSkseGg9WSh7XCJzcmMvbGFuZ3VhZ2UtanMvcHJhZ21hLmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7dmFye3BhcnNlV2l0aENvbW1lbnRzOnUsc3RyaXA6bCxleHRyYWN0Om0scHJpbnQ6RX09bWgoKSx7bm9ybWFsaXplRW5kT2ZMaW5lOnl9PXZoKCksQT1naCgpO2Z1bmN0aW9uIGIoUil7bGV0IE49QShSKTtOJiYoUj1SLnNsaWNlKE4ubGVuZ3RoKzEpKTtsZXQgVD1tKFIpLHtwcmFnbWFzOnYsY29tbWVudHM6cX09dShUKTtyZXR1cm57c2hlYmFuZzpOLHRleHQ6UixwcmFnbWFzOnYsY29tbWVudHM6cX19ZnVuY3Rpb24gZyhSKXtsZXQgTj1PYmplY3Qua2V5cyhiKFIpLnByYWdtYXMpO3JldHVybiBOLmluY2x1ZGVzKFwicHJldHRpZXJcIil8fE4uaW5jbHVkZXMoXCJmb3JtYXRcIil9ZnVuY3Rpb24gVihSKXtsZXR7c2hlYmFuZzpOLHRleHQ6VCxwcmFnbWFzOnYsY29tbWVudHM6cX09YihSKSxCPWwoVCksST1FKHtwcmFnbWFzOk9iamVjdC5hc3NpZ24oe2Zvcm1hdDpcIlwifSx2KSxjb21tZW50czpxLnRyaW1TdGFydCgpfSk7cmV0dXJuKE4/XCJcIi5jb25jYXQoTixgXG5gKTpcIlwiKSt5KEkpKyhCLnN0YXJ0c1dpdGgoYFxuYCk/YFxuYDpgXG5cbmApK0J9by5leHBvcnRzPXtoYXNQcmFnbWE6ZyxpbnNlcnRQcmFnbWE6Vn19fSkseWg9WSh7XCJzcmMvdXRpbHMvaXMtbm9uLWVtcHR5LWFycmF5LmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7ZnVuY3Rpb24gdShsKXtyZXR1cm4gQXJyYXkuaXNBcnJheShsKSYmbC5sZW5ndGg+MH1vLmV4cG9ydHM9dX19KSxrYT1ZKHtcInNyYy9sYW5ndWFnZS1qcy9sb2MuanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTt2YXIgdT15aCgpO2Z1bmN0aW9uIGwoYixnKXtsZXR7aWdub3JlRGVjb3JhdG9yczpWfT1nfHx7fTtpZighVil7bGV0IFI9Yi5kZWNsYXJhdGlvbiYmYi5kZWNsYXJhdGlvbi5kZWNvcmF0b3JzfHxiLmRlY29yYXRvcnM7aWYodShSKSlyZXR1cm4gbChSWzBdKX1yZXR1cm4gYi5yYW5nZT9iLnJhbmdlWzBdOmIuc3RhcnR9ZnVuY3Rpb24gbShiKXtyZXR1cm4gYi5yYW5nZT9iLnJhbmdlWzFdOmIuZW5kfWZ1bmN0aW9uIEUoYixnKXtsZXQgVj1sKGIpO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKFYpJiZWPT09bChnKX1mdW5jdGlvbiB5KGIsZyl7bGV0IFY9bShiKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihWKSYmVj09PW0oZyl9ZnVuY3Rpb24gQShiLGcpe3JldHVybiBFKGIsZykmJnkoYixnKX1vLmV4cG9ydHM9e2xvY1N0YXJ0OmwsbG9jRW5kOm0saGFzU2FtZUxvY1N0YXJ0OkUsaGFzU2FtZUxvYzpBfX19KSxGYT1ZKHtcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS91dGlscy9jcmVhdGUtcGFyc2VyLmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7dmFye2hhc1ByYWdtYTp1fT14aCgpLHtsb2NTdGFydDpsLGxvY0VuZDptfT1rYSgpO2Z1bmN0aW9uIEUoeSl7cmV0dXJuIHk9dHlwZW9mIHk9PVwiZnVuY3Rpb25cIj97cGFyc2U6eX06eSxPYmplY3QuYXNzaWduKHthc3RGb3JtYXQ6XCJlc3RyZWVcIixoYXNQcmFnbWE6dSxsb2NTdGFydDpsLGxvY0VuZDptfSx5KX1vLmV4cG9ydHM9RX19KSxBaD1ZKHtcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy10cy1rZXl3b3JkLXR5cGUuanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTtmdW5jdGlvbiB1KGwpe2xldHt0eXBlOm19PWw7cmV0dXJuIG0uc3RhcnRzV2l0aChcIlRTXCIpJiZtLmVuZHNXaXRoKFwiS2V5d29yZFwiKX1vLmV4cG9ydHM9dX19KSxDaD1ZKHtcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy1ibG9jay1jb21tZW50LmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7dmFyIHU9bmV3IFNldChbXCJCbG9ja1wiLFwiQ29tbWVudEJsb2NrXCIsXCJNdWx0aUxpbmVcIl0pLGw9bT0+dS5oYXMobT09bnVsbD92b2lkIDA6bS50eXBlKTtvLmV4cG9ydHM9bH19KSxFaD1ZKHtcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy10eXBlLWNhc3QtY29tbWVudC5qc1wiKG4sbyl7XCJ1c2Ugc3RyaWN0XCI7SigpO3ZhciB1PUNoKCk7ZnVuY3Rpb24gbChtKXtyZXR1cm4gdShtKSYmbS52YWx1ZVswXT09PVwiKlwiJiYvQHR5cGVcXGIvLnRlc3QobS52YWx1ZSl9by5leHBvcnRzPWx9fSksYmg9WSh7XCJzcmMvdXRpbHMvZ2V0LWxhc3QuanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTt2YXIgdT1sPT5sW2wubGVuZ3RoLTFdO28uZXhwb3J0cz11fX0pLEJhPVkoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL3Zpc2l0LW5vZGUuanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTtmdW5jdGlvbiB1KGwsbSl7aWYoQXJyYXkuaXNBcnJheShsKSl7Zm9yKGxldCBFPTA7RTxsLmxlbmd0aDtFKyspbFtFXT11KGxbRV0sbSk7cmV0dXJuIGx9aWYobCYmdHlwZW9mIGw9PVwib2JqZWN0XCImJnR5cGVvZiBsLnR5cGU9PVwic3RyaW5nXCIpe2xldCBFPU9iamVjdC5rZXlzKGwpO2ZvcihsZXQgeT0wO3k8RS5sZW5ndGg7eSsrKWxbRVt5XV09dShsW0VbeV1dLG0pO3JldHVybiBtKGwpfHxsfXJldHVybiBsfW8uZXhwb3J0cz11fX0pLFRhPVkoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL3Rocm93LXN5bnRheC1lcnJvci5qc1wiKG4sbyl7XCJ1c2Ugc3RyaWN0XCI7SigpO3ZhciB1PWxyKCk7ZnVuY3Rpb24gbChtLEUpe2xldHtzdGFydDp5LGVuZDpBfT1tLmxvYzt0aHJvdyB1KEUse3N0YXJ0OntsaW5lOnkubGluZSxjb2x1bW46eS5jb2x1bW4rMX0sZW5kOntsaW5lOkEubGluZSxjb2x1bW46QS5jb2x1bW4rMX19KX1vLmV4cG9ydHM9bH19KSxfaD1ZKHtcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS9wb3N0cHJvY2Vzcy90eXBlc2NyaXB0LmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7dmFyIHU9QmEoKSxsPVRhKCk7ZnVuY3Rpb24gbShBLGIsZyl7bGV0IFY9QS5kZWNvcmF0b3JzO2lmKCFBcnJheS5pc0FycmF5KFYpKXJldHVybjtsZXQgUj1iLmRlY29yYXRvcnM7KCFBcnJheS5pc0FycmF5KFIpfHxSLmxlbmd0aCE9PVYubGVuZ3RofHxWLnNvbWUoTj0+e2xldCBUPWcuZ2V0KE4pO3JldHVybiFUfHwhUi5pbmNsdWRlcyhUKX0pKSYmbChiLFwiTGVhZGluZyBkZWNvcmF0b3JzIG11c3QgYmUgYXR0YWNoZWQgdG8gYSBjbGFzcyBkZWNsYXJhdGlvblwiKX1mdW5jdGlvbiBFKEEsYil7QS5raW5kIT09MTY3fHxBLm1vZGlmaWVycyYmIUEubW9kaWZpZXJzLnNvbWUoUj0+Ui5raW5kPT09MTI2KXx8QS5pbml0aWFsaXplciYmYi52YWx1ZT09PW51bGwmJmwoYixcIkFic3RyYWN0IHByb3BlcnR5IGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyXCIpfWZ1bmN0aW9uIHkoQSxiKXtsZXR7ZXNUcmVlTm9kZVRvVFNOb2RlTWFwOmcsdHNOb2RlVG9FU1RyZWVOb2RlTWFwOlZ9PWIudHNQYXJzZVJlc3VsdDt1KEEsUj0+e2xldCBOPWcuZ2V0KFIpO2lmKCFOKXJldHVybjtsZXQgVD1WLmdldChOKTtUPT09UiYmKG0oTixULFYpLEUoTixUKSl9KX1vLmV4cG9ydHM9e3Rocm93RXJyb3JGb3JJbnZhbGlkTm9kZXM6eX19fSksSWE9WSh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvaW5kZXguanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTt2YXJ7bG9jU3RhcnQ6dSxsb2NFbmQ6bH09a2EoKSxtPUFoKCksRT1FaCgpLHk9YmgoKSxBPUJhKCkse3Rocm93RXJyb3JGb3JJbnZhbGlkTm9kZXM6Yn09X2goKSxnPVRhKCk7ZnVuY3Rpb24gVih2LHEpe2lmKHEucGFyc2VyPT09XCJ0eXBlc2NyaXB0XCImJi9AfGFic3RyYWN0Ly50ZXN0KHEub3JpZ2luYWxUZXh0KSYmYih2LHEpLHEucGFyc2VyIT09XCJ0eXBlc2NyaXB0XCImJnEucGFyc2VyIT09XCJmbG93XCImJnEucGFyc2VyIT09XCJhY29yblwiJiZxLnBhcnNlciE9PVwiZXNwcmVlXCImJnEucGFyc2VyIT09XCJtZXJpeWFoXCIpe2xldCBJPW5ldyBTZXQ7dj1BKHYsaz0+e2subGVhZGluZ0NvbW1lbnRzJiZrLmxlYWRpbmdDb21tZW50cy5zb21lKEUpJiZJLmFkZCh1KGspKX0pLHY9QSh2LGs9PntpZihrLnR5cGU9PT1cIlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uXCIpe2xldHtleHByZXNzaW9uOkN9PWs7aWYoQy50eXBlPT09XCJUeXBlQ2FzdEV4cHJlc3Npb25cIilyZXR1cm4gQy5yYW5nZT1rLnJhbmdlLEM7bGV0IEg9dShrKTtpZighSS5oYXMoSCkpcmV0dXJuIEMuZXh0cmE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEMuZXh0cmEpLHt9LHtwYXJlbnRoZXNpemVkOiEwfSksQ319KX1yZXR1cm4gdj1BKHYsST0+e3N3aXRjaChJLnR5cGUpe2Nhc2VcIkNoYWluRXhwcmVzc2lvblwiOnJldHVybiBSKEkuZXhwcmVzc2lvbik7Y2FzZVwiTG9naWNhbEV4cHJlc3Npb25cIjp7aWYoTihJKSlyZXR1cm4gVChJKTticmVha31jYXNlXCJWYXJpYWJsZURlY2xhcmF0aW9uXCI6e2xldCBrPXkoSS5kZWNsYXJhdGlvbnMpO2smJmsuaW5pdCYmQihJLGspO2JyZWFrfWNhc2VcIlRTUGFyZW50aGVzaXplZFR5cGVcIjpyZXR1cm4gbShJLnR5cGVBbm5vdGF0aW9uKXx8SS50eXBlQW5ub3RhdGlvbi50eXBlPT09XCJUU1RoaXNUeXBlXCJ8fChJLnR5cGVBbm5vdGF0aW9uLnJhbmdlPVt1KEkpLGwoSSldKSxJLnR5cGVBbm5vdGF0aW9uO2Nhc2VcIlRTVHlwZVBhcmFtZXRlclwiOmlmKHR5cGVvZiBJLm5hbWU9PVwic3RyaW5nXCIpe2xldCBrPXUoSSk7SS5uYW1lPXt0eXBlOlwiSWRlbnRpZmllclwiLG5hbWU6SS5uYW1lLHJhbmdlOltrLGsrSS5uYW1lLmxlbmd0aF19fWJyZWFrO2Nhc2VcIk9iamVjdEV4cHJlc3Npb25cIjppZihxLnBhcnNlcj09PVwidHlwZXNjcmlwdFwiKXtsZXQgaz1JLnByb3BlcnRpZXMuZmluZChDPT5DLnR5cGU9PT1cIlByb3BlcnR5XCImJkMudmFsdWUudHlwZT09PVwiVFNFbXB0eUJvZHlGdW5jdGlvbkV4cHJlc3Npb25cIik7ayYmZyhrLnZhbHVlLFwiVW5leHBlY3RlZCB0b2tlbi5cIil9YnJlYWs7Y2FzZVwiU2VxdWVuY2VFeHByZXNzaW9uXCI6e2xldCBrPXkoSS5leHByZXNzaW9ucyk7SS5yYW5nZT1bdShJKSxNYXRoLm1pbihsKGspLGwoSSkpXTticmVha31jYXNlXCJUb3BpY1JlZmVyZW5jZVwiOnEuX19pc1VzaW5nSGFja1BpcGVsaW5lPSEwO2JyZWFrO2Nhc2VcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCI6e2xldHtleHBvcnRlZDprfT1JO2lmKHEucGFyc2VyPT09XCJtZXJpeWFoXCImJmsmJmsudHlwZT09PVwiSWRlbnRpZmllclwiKXtsZXQgQz1xLm9yaWdpbmFsVGV4dC5zbGljZSh1KGspLGwoaykpOyhDLnN0YXJ0c1dpdGgoJ1wiJyl8fEMuc3RhcnRzV2l0aChcIidcIikpJiYoSS5leHBvcnRlZD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSS5leHBvcnRlZCkse30se3R5cGU6XCJMaXRlcmFsXCIsdmFsdWU6SS5leHBvcnRlZC5uYW1lLHJhdzpDfSkpfWJyZWFrfX19KSx2O2Z1bmN0aW9uIEIoSSxrKXtxLm9yaWdpbmFsVGV4dFtsKGspXSE9PVwiO1wiJiYoSS5yYW5nZT1bdShJKSxsKGspXSl9fWZ1bmN0aW9uIFIodil7c3dpdGNoKHYudHlwZSl7Y2FzZVwiQ2FsbEV4cHJlc3Npb25cIjp2LnR5cGU9XCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCIsdi5jYWxsZWU9Uih2LmNhbGxlZSk7YnJlYWs7Y2FzZVwiTWVtYmVyRXhwcmVzc2lvblwiOnYudHlwZT1cIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwiLHYub2JqZWN0PVIodi5vYmplY3QpO2JyZWFrO2Nhc2VcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjp2LmV4cHJlc3Npb249Uih2LmV4cHJlc3Npb24pO2JyZWFrfXJldHVybiB2fWZ1bmN0aW9uIE4odil7cmV0dXJuIHYudHlwZT09PVwiTG9naWNhbEV4cHJlc3Npb25cIiYmdi5yaWdodC50eXBlPT09XCJMb2dpY2FsRXhwcmVzc2lvblwiJiZ2Lm9wZXJhdG9yPT09di5yaWdodC5vcGVyYXRvcn1mdW5jdGlvbiBUKHYpe3JldHVybiBOKHYpP1Qoe3R5cGU6XCJMb2dpY2FsRXhwcmVzc2lvblwiLG9wZXJhdG9yOnYub3BlcmF0b3IsbGVmdDpUKHt0eXBlOlwiTG9naWNhbEV4cHJlc3Npb25cIixvcGVyYXRvcjp2Lm9wZXJhdG9yLGxlZnQ6di5sZWZ0LHJpZ2h0OnYucmlnaHQubGVmdCxyYW5nZTpbdSh2LmxlZnQpLGwodi5yaWdodC5sZWZ0KV19KSxyaWdodDp2LnJpZ2h0LnJpZ2h0LHJhbmdlOlt1KHYpLGwodildfSk6dn1vLmV4cG9ydHM9Vn19KSxjdD1ZKHtcIm5vZGVfbW9kdWxlcy9hY29ybi9kaXN0L2Fjb3JuLmpzXCIobixvKXtKKCksZnVuY3Rpb24odSxsKXt0eXBlb2Ygbj09XCJvYmplY3RcIiYmdHlwZW9mIG88XCJ1XCI/bChuKTp0eXBlb2YgZGVmaW5lPT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQ/ZGVmaW5lKFtcImV4cG9ydHNcIl0sbCk6KHU9dHlwZW9mIGdsb2JhbFRoaXM8XCJ1XCI/Z2xvYmFsVGhpczp1fHxzZWxmLGwodS5hY29ybj17fSkpfShuLGZ1bmN0aW9uKHUpe1widXNlIHN0cmljdFwiO3ZhciBsPXszOlwiYWJzdHJhY3QgYm9vbGVhbiBieXRlIGNoYXIgY2xhc3MgZG91YmxlIGVudW0gZXhwb3J0IGV4dGVuZHMgZmluYWwgZmxvYXQgZ290byBpbXBsZW1lbnRzIGltcG9ydCBpbnQgaW50ZXJmYWNlIGxvbmcgbmF0aXZlIHBhY2thZ2UgcHJpdmF0ZSBwcm90ZWN0ZWQgcHVibGljIHNob3J0IHN0YXRpYyBzdXBlciBzeW5jaHJvbml6ZWQgdGhyb3dzIHRyYW5zaWVudCB2b2xhdGlsZVwiLDU6XCJjbGFzcyBlbnVtIGV4dGVuZHMgc3VwZXIgY29uc3QgZXhwb3J0IGltcG9ydFwiLDY6XCJlbnVtXCIsc3RyaWN0OlwiaW1wbGVtZW50cyBpbnRlcmZhY2UgbGV0IHBhY2thZ2UgcHJpdmF0ZSBwcm90ZWN0ZWQgcHVibGljIHN0YXRpYyB5aWVsZFwiLHN0cmljdEJpbmQ6XCJldmFsIGFyZ3VtZW50c1wifSxtPVwiYnJlYWsgY2FzZSBjYXRjaCBjb250aW51ZSBkZWJ1Z2dlciBkZWZhdWx0IGRvIGVsc2UgZmluYWxseSBmb3IgZnVuY3Rpb24gaWYgcmV0dXJuIHN3aXRjaCB0aHJvdyB0cnkgdmFyIHdoaWxlIHdpdGggbnVsbCB0cnVlIGZhbHNlIGluc3RhbmNlb2YgdHlwZW9mIHZvaWQgZGVsZXRlIG5ldyBpbiB0aGlzXCIsRT17NTptLFwiNW1vZHVsZVwiOm0rXCIgZXhwb3J0IGltcG9ydFwiLDY6bStcIiBjb25zdCBjbGFzcyBleHRlbmRzIGV4cG9ydCBpbXBvcnQgc3VwZXJcIn0seT0vXmluKHN0YW5jZW9mKT8kLyxBPVwiXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjAtXFx1MDU4OFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwODYwLVxcdTA4NkFcXHUwODcwLVxcdTA4ODdcXHUwODg5LVxcdTA4OEVcXHUwOEEwLVxcdTA4QzlcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTA5RkNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM1RFxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0REXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA0LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENTQtXFx1MEQ1NlxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODYtXFx1MEU4QVxcdTBFOEMtXFx1MEVBM1xcdTBFQTVcXHUwRUE3LVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcxMVxcdTE3MUYtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc4XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNENcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDODAtXFx1MUM4OFxcdTFDOTAtXFx1MUNCQVxcdTFDQkQtXFx1MUNCRlxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGM1xcdTFDRjVcXHUxQ0Y2XFx1MUNGQVxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUItXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkVGXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0NBXFx1QTdEMFxcdUE3RDFcXHVBN0QzXFx1QTdENS1cXHVBN0Q5XFx1QTdGMi1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2OVxcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ1wiLGI9XCJcXHUyMDBDXFx1MjAwRFxceEI3XFx1MDMwMC1cXHUwMzZGXFx1MDM4N1xcdTA0ODMtXFx1MDQ4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA2MTAtXFx1MDYxQVxcdTA2NEItXFx1MDY2OVxcdTA2NzBcXHUwNkQ2LVxcdTA2RENcXHUwNkRGLVxcdTA2RTRcXHUwNkU3XFx1MDZFOFxcdTA2RUEtXFx1MDZFRFxcdTA2RjAtXFx1MDZGOVxcdTA3MTFcXHUwNzMwLVxcdTA3NEFcXHUwN0E2LVxcdTA3QjBcXHUwN0MwLVxcdTA3QzlcXHUwN0VCLVxcdTA3RjNcXHUwN0ZEXFx1MDgxNi1cXHUwODE5XFx1MDgxQi1cXHUwODIzXFx1MDgyNS1cXHUwODI3XFx1MDgyOS1cXHUwODJEXFx1MDg1OS1cXHUwODVCXFx1MDg5OC1cXHUwODlGXFx1MDhDQS1cXHUwOEUxXFx1MDhFMy1cXHUwOTAzXFx1MDkzQS1cXHUwOTNDXFx1MDkzRS1cXHUwOTRGXFx1MDk1MS1cXHUwOTU3XFx1MDk2MlxcdTA5NjNcXHUwOTY2LVxcdTA5NkZcXHUwOTgxLVxcdTA5ODNcXHUwOUJDXFx1MDlCRS1cXHUwOUM0XFx1MDlDN1xcdTA5QzhcXHUwOUNCLVxcdTA5Q0RcXHUwOUQ3XFx1MDlFMlxcdTA5RTNcXHUwOUU2LVxcdTA5RUZcXHUwOUZFXFx1MEEwMS1cXHUwQTAzXFx1MEEzQ1xcdTBBM0UtXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNjYtXFx1MEE3MVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQUJDXFx1MEFCRS1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFFMlxcdTBBRTNcXHUwQUU2LVxcdTBBRUZcXHUwQUZBLVxcdTBBRkZcXHUwQjAxLVxcdTBCMDNcXHUwQjNDXFx1MEIzRS1cXHUwQjQ0XFx1MEI0N1xcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjU1LVxcdTBCNTdcXHUwQjYyXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCODJcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQ3XFx1MEJFNi1cXHUwQkVGXFx1MEMwMC1cXHUwQzA0XFx1MEMzQ1xcdTBDM0UtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM2MlxcdTBDNjNcXHUwQzY2LVxcdTBDNkZcXHUwQzgxLVxcdTBDODNcXHUwQ0JDXFx1MENCRS1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0UyXFx1MENFM1xcdTBDRTYtXFx1MENFRlxcdTBEMDAtXFx1MEQwM1xcdTBEM0JcXHUwRDNDXFx1MEQzRS1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDREXFx1MEQ1N1xcdTBENjJcXHUwRDYzXFx1MEQ2Ni1cXHUwRDZGXFx1MEQ4MS1cXHUwRDgzXFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREU2LVxcdTBERUZcXHUwREYyXFx1MERGM1xcdTBFMzFcXHUwRTM0LVxcdTBFM0FcXHUwRTQ3LVxcdTBFNEVcXHUwRTUwLVxcdTBFNTlcXHUwRUIxXFx1MEVCNC1cXHUwRUJDXFx1MEVDOC1cXHUwRUNEXFx1MEVEMC1cXHUwRUQ5XFx1MEYxOFxcdTBGMTlcXHUwRjIwLVxcdTBGMjlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFXFx1MEYzRlxcdTBGNzEtXFx1MEY4NFxcdTBGODZcXHUwRjg3XFx1MEY4RC1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMkItXFx1MTAzRVxcdTEwNDAtXFx1MTA0OVxcdTEwNTYtXFx1MTA1OVxcdTEwNUUtXFx1MTA2MFxcdTEwNjItXFx1MTA2NFxcdTEwNjctXFx1MTA2RFxcdTEwNzEtXFx1MTA3NFxcdTEwODItXFx1MTA4RFxcdTEwOEYtXFx1MTA5RFxcdTEzNUQtXFx1MTM1RlxcdTEzNjktXFx1MTM3MVxcdTE3MTItXFx1MTcxNVxcdTE3MzItXFx1MTczNFxcdTE3NTJcXHUxNzUzXFx1MTc3MlxcdTE3NzNcXHUxN0I0LVxcdTE3RDNcXHUxN0REXFx1MTdFMC1cXHUxN0U5XFx1MTgwQi1cXHUxODBEXFx1MTgwRi1cXHUxODE5XFx1MThBOVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTE5NDYtXFx1MTk0RlxcdTE5RDAtXFx1MTlEQVxcdTFBMTctXFx1MUExQlxcdTFBNTUtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0YtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFBQjAtXFx1MUFCRFxcdTFBQkYtXFx1MUFDRVxcdTFCMDAtXFx1MUIwNFxcdTFCMzQtXFx1MUI0NFxcdTFCNTAtXFx1MUI1OVxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUI4MlxcdTFCQTEtXFx1MUJBRFxcdTFCQjAtXFx1MUJCOVxcdTFCRTYtXFx1MUJGM1xcdTFDMjQtXFx1MUMzN1xcdTFDNDAtXFx1MUM0OVxcdTFDNTAtXFx1MUM1OVxcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNFOFxcdTFDRURcXHUxQ0Y0XFx1MUNGNy1cXHUxQ0Y5XFx1MURDMC1cXHUxREZGXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTJDRUYtXFx1MkNGMVxcdTJEN0ZcXHUyREUwLVxcdTJERkZcXHUzMDJBLVxcdTMwMkZcXHUzMDk5XFx1MzA5QVxcdUE2MjAtXFx1QTYyOVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjlFXFx1QTY5RlxcdUE2RjBcXHVBNkYxXFx1QTgwMlxcdUE4MDZcXHVBODBCXFx1QTgyMy1cXHVBODI3XFx1QTgyQ1xcdUE4ODBcXHVBODgxXFx1QThCNC1cXHVBOEM1XFx1QThEMC1cXHVBOEQ5XFx1QThFMC1cXHVBOEYxXFx1QThGRi1cXHVBOTA5XFx1QTkyNi1cXHVBOTJEXFx1QTk0Ny1cXHVBOTUzXFx1QTk4MC1cXHVBOTgzXFx1QTlCMy1cXHVBOUMwXFx1QTlEMC1cXHVBOUQ5XFx1QTlFNVxcdUE5RjAtXFx1QTlGOVxcdUFBMjktXFx1QUEzNlxcdUFBNDNcXHVBQTRDXFx1QUE0RFxcdUFBNTAtXFx1QUE1OVxcdUFBN0ItXFx1QUE3RFxcdUFBQjBcXHVBQUIyLVxcdUFBQjRcXHVBQUI3XFx1QUFCOFxcdUFBQkVcXHVBQUJGXFx1QUFDMVxcdUFBRUItXFx1QUFFRlxcdUFBRjVcXHVBQUY2XFx1QUJFMy1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVBQkYwLVxcdUFCRjlcXHVGQjFFXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJGXFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRjEwLVxcdUZGMTlcXHVGRjNGXCIsZz1uZXcgUmVnRXhwKFwiW1wiK0ErXCJdXCIpLFY9bmV3IFJlZ0V4cChcIltcIitBK2IrXCJdXCIpO0E9Yj1udWxsO3ZhciBSPVswLDExLDIsMjUsMiwxOCwyLDEsMiwxNCwzLDEzLDM1LDEyMiw3MCw1MiwyNjgsMjgsNCw0OCw0OCwzMSwxNCwyOSw2LDM3LDExLDI5LDMsMzUsNSw3LDIsNCw0MywxNTcsMTksMzUsNSwzNSw1LDM5LDksNTEsMTMsMTAsMiwxNCwyLDYsMiwxLDIsMTAsMiwxNCwyLDYsMiwxLDY4LDMxMCwxMCwyMSwxMSw3LDI1LDUsMiw0MSwyLDgsNzAsNSwzLDAsMiw0MywyLDEsNCwwLDMsMjIsMTEsMjIsMTAsMzAsNjYsMTgsMiwxLDExLDIxLDExLDI1LDcxLDU1LDcsMSw2NSwwLDE2LDMsMiwyLDIsMjgsNDMsMjgsNCwyOCwzNiw3LDIsMjcsMjgsNTMsMTEsMjEsMTEsMTgsMTQsMTcsMTExLDcyLDU2LDUwLDE0LDUwLDE0LDM1LDM0OSw0MSw3LDEsNzksMjgsMTEsMCw5LDIxLDQzLDE3LDQ3LDIwLDI4LDIyLDEzLDUyLDU4LDEsMywwLDE0LDQ0LDMzLDI0LDI3LDM1LDMwLDAsMywwLDksMzQsNCwwLDEzLDQ3LDE1LDMsMjIsMCwyLDAsMzYsMTcsMiwyNCw4NSw2LDIsMCwyLDMsMiwxNCwyLDksOCw0NiwzOSw3LDMsMSwzLDIxLDIsNiwyLDEsMiw0LDQsMCwxOSwwLDEzLDQsMTU5LDUyLDE5LDMsMjEsMiwzMSw0NywyMSwxLDIsMCwxODUsNDYsNDIsMywzNyw0NywyMSwwLDYwLDQyLDE0LDAsNzIsMjYsMzgsNiwxODYsNDMsMTE3LDYzLDMyLDcsMywwLDMsNywyLDEsMiwyMywxNiwwLDIsMCw5NSw3LDMsMzgsMTcsMCwyLDAsMjksMCwxMSwzOSw4LDAsMjIsMCwxMiw0NSwyMCwwLDE5LDcyLDI2NCw4LDIsMzYsMTgsMCw1MCwyOSwxMTMsNiwyLDEsMiwzNywyMiwwLDI2LDUsMiwxLDIsMzEsMTUsMCwzMjgsMTgsMTkwLDAsODAsOTIxLDEwMywxMTAsMTgsMTk1LDI2MzcsOTYsMTYsMTA3MCw0MDUwLDU4Miw4NjM0LDU2OCw4LDMwLDE4LDc4LDE4LDI5LDE5LDQ3LDE3LDMsMzIsMjAsNiwxOCw2ODksNjMsMTI5LDc0LDYsMCw2NywxMiw2NSwxLDIsMCwyOSw2MTM1LDksMTIzNyw0Myw4LDg5MzYsMywyLDYsMiwxLDIsMjkwLDQ2LDIsMTgsMyw5LDM5NSwyMzA5LDEwNiw2LDEyLDQsOCw4LDksNTk5MSw4NCwyLDcwLDIsMSwzLDAsMywxLDMsMywyLDExLDIsMCwyLDYsMiw2NCwyLDMsMyw3LDIsNiwyLDI3LDIsMywyLDQsMiwwLDQsNiwyLDMzOSwzLDI0LDIsMjQsMiwzMCwyLDI0LDIsMzAsMiwyNCwyLDMwLDIsMjQsMiwzMCwyLDI0LDIsNywxODQ1LDMwLDQ4Miw0NCwxMSw2LDE3LDAsMzIyLDI5LDE5LDQzLDEyNjksNiwyLDMsMiwxLDIsMTQsMiwxOTYsNjAsNjcsOCwwLDEyMDUsMywyLDI2LDIsMSwyLDAsMywwLDIsOSwyLDMsMiwwLDIsMCw3LDAsNSwwLDIsMCwyLDAsMiwyLDIsMSwyLDAsMywwLDIsMCwyLDAsMiwwLDIsMCwyLDEsMiwwLDMsMywyLDYsMiwzLDIsMywyLDAsMiw5LDIsMTYsNiwyLDIsNCwyLDE2LDQ0MjEsNDI3MTksMzMsNDE1Miw4LDIyMSwzLDU3NjEsMTUsNzQ3MiwzMTA0LDU0MSwxNTA3LDQ5MzhdLE49WzUwOSwwLDIyNywwLDE1MCw0LDI5NCw5LDEzNjgsMiwyLDEsNiwzLDQxLDIsNSwwLDE2NiwxLDU3NCwzLDksOSwzNzAsMSwxNTQsMTAsNTAsMywxMjMsMiw1NCwxNCwzMiwxMCwzLDEsMTEsMyw0NiwxMCw4LDAsNDYsOSw3LDIsMzcsMTMsMiw5LDYsMSw0NSwwLDEzLDIsNDksMTMsOSwzLDIsMTEsODMsMTEsNywwLDE2MSwxMSw2LDksNywzLDU2LDEsMiw2LDMsMSwzLDIsMTAsMCwxMSwxLDMsNiw0LDQsMTkzLDE3LDEwLDksNSwwLDgyLDE5LDEzLDksMjE0LDYsMyw4LDI4LDEsODMsMTYsMTYsOSw4MiwxMiw5LDksODQsMTQsNSw5LDI0MywxNCwxNjYsOSw3MSw1LDIsMSwzLDMsMiwwLDIsMSwxMyw5LDEyMCw2LDMsNiw0LDAsMjksOSw0MSw2LDIsMyw5LDAsMTAsMTAsNDcsMTUsNDA2LDcsMiw3LDE3LDksNTcsMjEsMiwxMywxMjMsNSw0LDAsMiwxLDIsNiwyLDAsOSw5LDQ5LDQsMiwxLDIsNCw5LDksMzMwLDMsMTkzMDYsOSw4Nyw5LDM5LDQsNjAsNiwyNiw5LDEwMTQsMCwyLDU0LDgsMyw4MiwwLDEyLDEsMTk2MjgsMSw0NzA2LDQ1LDMsMjIsNTQzLDQsNCw1LDksNywzLDYsMzEsMywxNDksMiwxNDE4LDQ5LDUxMyw1NCw1LDQ5LDksMCwxNSwwLDIzLDQsMiwxNCwxMzYxLDYsMiwxNiwzLDYsMiwxLDIsNCwyNjIsNiwxMCw5LDM1NywwLDYyLDEzLDE0OTUsNiwxMTAsNiw2LDksNDc1OSw5LDc4NzcxOSwyMzldO2Z1bmN0aW9uIFQoZSx0KXtmb3IodmFyIHI9NjU1MzYscz0wO3M8dC5sZW5ndGg7cys9Mil7aWYocis9dFtzXSxyPmUpcmV0dXJuITE7aWYocis9dFtzKzFdLHI+PWUpcmV0dXJuITB9fWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZTw2NT9lPT09MzY6ZTw5MT8hMDplPDk3P2U9PT05NTplPDEyMz8hMDplPD02NTUzNT9lPj0xNzAmJmcudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTp0PT09ITE/ITE6VChlLFIpfWZ1bmN0aW9uIHEoZSx0KXtyZXR1cm4gZTw0OD9lPT09MzY6ZTw1OD8hMDplPDY1PyExOmU8OTE/ITA6ZTw5Nz9lPT09OTU6ZTwxMjM/ITA6ZTw9NjU1MzU/ZT49MTcwJiZWLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShlKSk6dD09PSExPyExOlQoZSxSKXx8VChlLE4pfXZhciBCPWZ1bmN0aW9uKHQscil7cj09PXZvaWQgMCYmKHI9e30pLHRoaXMubGFiZWw9dCx0aGlzLmtleXdvcmQ9ci5rZXl3b3JkLHRoaXMuYmVmb3JlRXhwcj0hIXIuYmVmb3JlRXhwcix0aGlzLnN0YXJ0c0V4cHI9ISFyLnN0YXJ0c0V4cHIsdGhpcy5pc0xvb3A9ISFyLmlzTG9vcCx0aGlzLmlzQXNzaWduPSEhci5pc0Fzc2lnbix0aGlzLnByZWZpeD0hIXIucHJlZml4LHRoaXMucG9zdGZpeD0hIXIucG9zdGZpeCx0aGlzLmJpbm9wPXIuYmlub3B8fG51bGwsdGhpcy51cGRhdGVDb250ZXh0PW51bGx9O2Z1bmN0aW9uIEkoZSx0KXtyZXR1cm4gbmV3IEIoZSx7YmVmb3JlRXhwcjohMCxiaW5vcDp0fSl9dmFyIGs9e2JlZm9yZUV4cHI6ITB9LEM9e3N0YXJ0c0V4cHI6ITB9LEg9e307ZnVuY3Rpb24gTChlLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD17fSksdC5rZXl3b3JkPWUsSFtlXT1uZXcgQihlLHQpfXZhciBpPXtudW06bmV3IEIoXCJudW1cIixDKSxyZWdleHA6bmV3IEIoXCJyZWdleHBcIixDKSxzdHJpbmc6bmV3IEIoXCJzdHJpbmdcIixDKSxuYW1lOm5ldyBCKFwibmFtZVwiLEMpLHByaXZhdGVJZDpuZXcgQihcInByaXZhdGVJZFwiLEMpLGVvZjpuZXcgQihcImVvZlwiKSxicmFja2V0TDpuZXcgQihcIltcIix7YmVmb3JlRXhwcjohMCxzdGFydHNFeHByOiEwfSksYnJhY2tldFI6bmV3IEIoXCJdXCIpLGJyYWNlTDpuZXcgQihcIntcIix7YmVmb3JlRXhwcjohMCxzdGFydHNFeHByOiEwfSksYnJhY2VSOm5ldyBCKFwifVwiKSxwYXJlbkw6bmV3IEIoXCIoXCIse2JlZm9yZUV4cHI6ITAsc3RhcnRzRXhwcjohMH0pLHBhcmVuUjpuZXcgQihcIilcIiksY29tbWE6bmV3IEIoXCIsXCIsayksc2VtaTpuZXcgQihcIjtcIixrKSxjb2xvbjpuZXcgQihcIjpcIixrKSxkb3Q6bmV3IEIoXCIuXCIpLHF1ZXN0aW9uOm5ldyBCKFwiP1wiLGspLHF1ZXN0aW9uRG90Om5ldyBCKFwiPy5cIiksYXJyb3c6bmV3IEIoXCI9PlwiLGspLHRlbXBsYXRlOm5ldyBCKFwidGVtcGxhdGVcIiksaW52YWxpZFRlbXBsYXRlOm5ldyBCKFwiaW52YWxpZFRlbXBsYXRlXCIpLGVsbGlwc2lzOm5ldyBCKFwiLi4uXCIsayksYmFja1F1b3RlOm5ldyBCKFwiYFwiLEMpLGRvbGxhckJyYWNlTDpuZXcgQihcIiR7XCIse2JlZm9yZUV4cHI6ITAsc3RhcnRzRXhwcjohMH0pLGVxOm5ldyBCKFwiPVwiLHtiZWZvcmVFeHByOiEwLGlzQXNzaWduOiEwfSksYXNzaWduOm5ldyBCKFwiXz1cIix7YmVmb3JlRXhwcjohMCxpc0Fzc2lnbjohMH0pLGluY0RlYzpuZXcgQihcIisrLy0tXCIse3ByZWZpeDohMCxwb3N0Zml4OiEwLHN0YXJ0c0V4cHI6ITB9KSxwcmVmaXg6bmV3IEIoXCIhL35cIix7YmVmb3JlRXhwcjohMCxwcmVmaXg6ITAsc3RhcnRzRXhwcjohMH0pLGxvZ2ljYWxPUjpJKFwifHxcIiwxKSxsb2dpY2FsQU5EOkkoXCImJlwiLDIpLGJpdHdpc2VPUjpJKFwifFwiLDMpLGJpdHdpc2VYT1I6SShcIl5cIiw0KSxiaXR3aXNlQU5EOkkoXCImXCIsNSksZXF1YWxpdHk6SShcIj09LyE9Lz09PS8hPT1cIiw2KSxyZWxhdGlvbmFsOkkoXCI8Lz4vPD0vPj1cIiw3KSxiaXRTaGlmdDpJKFwiPDwvPj4vPj4+XCIsOCkscGx1c01pbjpuZXcgQihcIisvLVwiLHtiZWZvcmVFeHByOiEwLGJpbm9wOjkscHJlZml4OiEwLHN0YXJ0c0V4cHI6ITB9KSxtb2R1bG86SShcIiVcIiwxMCksc3RhcjpJKFwiKlwiLDEwKSxzbGFzaDpJKFwiL1wiLDEwKSxzdGFyc3RhcjpuZXcgQihcIioqXCIse2JlZm9yZUV4cHI6ITB9KSxjb2FsZXNjZTpJKFwiPz9cIiwxKSxfYnJlYWs6TChcImJyZWFrXCIpLF9jYXNlOkwoXCJjYXNlXCIsayksX2NhdGNoOkwoXCJjYXRjaFwiKSxfY29udGludWU6TChcImNvbnRpbnVlXCIpLF9kZWJ1Z2dlcjpMKFwiZGVidWdnZXJcIiksX2RlZmF1bHQ6TChcImRlZmF1bHRcIixrKSxfZG86TChcImRvXCIse2lzTG9vcDohMCxiZWZvcmVFeHByOiEwfSksX2Vsc2U6TChcImVsc2VcIixrKSxfZmluYWxseTpMKFwiZmluYWxseVwiKSxfZm9yOkwoXCJmb3JcIix7aXNMb29wOiEwfSksX2Z1bmN0aW9uOkwoXCJmdW5jdGlvblwiLEMpLF9pZjpMKFwiaWZcIiksX3JldHVybjpMKFwicmV0dXJuXCIsayksX3N3aXRjaDpMKFwic3dpdGNoXCIpLF90aHJvdzpMKFwidGhyb3dcIixrKSxfdHJ5OkwoXCJ0cnlcIiksX3ZhcjpMKFwidmFyXCIpLF9jb25zdDpMKFwiY29uc3RcIiksX3doaWxlOkwoXCJ3aGlsZVwiLHtpc0xvb3A6ITB9KSxfd2l0aDpMKFwid2l0aFwiKSxfbmV3OkwoXCJuZXdcIix7YmVmb3JlRXhwcjohMCxzdGFydHNFeHByOiEwfSksX3RoaXM6TChcInRoaXNcIixDKSxfc3VwZXI6TChcInN1cGVyXCIsQyksX2NsYXNzOkwoXCJjbGFzc1wiLEMpLF9leHRlbmRzOkwoXCJleHRlbmRzXCIsayksX2V4cG9ydDpMKFwiZXhwb3J0XCIpLF9pbXBvcnQ6TChcImltcG9ydFwiLEMpLF9udWxsOkwoXCJudWxsXCIsQyksX3RydWU6TChcInRydWVcIixDKSxfZmFsc2U6TChcImZhbHNlXCIsQyksX2luOkwoXCJpblwiLHtiZWZvcmVFeHByOiEwLGJpbm9wOjd9KSxfaW5zdGFuY2VvZjpMKFwiaW5zdGFuY2VvZlwiLHtiZWZvcmVFeHByOiEwLGJpbm9wOjd9KSxfdHlwZW9mOkwoXCJ0eXBlb2ZcIix7YmVmb3JlRXhwcjohMCxwcmVmaXg6ITAsc3RhcnRzRXhwcjohMH0pLF92b2lkOkwoXCJ2b2lkXCIse2JlZm9yZUV4cHI6ITAscHJlZml4OiEwLHN0YXJ0c0V4cHI6ITB9KSxfZGVsZXRlOkwoXCJkZWxldGVcIix7YmVmb3JlRXhwcjohMCxwcmVmaXg6ITAsc3RhcnRzRXhwcjohMH0pfSxfPS9cXHJcXG4/fFxcbnxcXHUyMDI4fFxcdTIwMjkvLFA9bmV3IFJlZ0V4cChfLnNvdXJjZSxcImdcIik7ZnVuY3Rpb24gTShlKXtyZXR1cm4gZT09PTEwfHxlPT09MTN8fGU9PT04MjMyfHxlPT09ODIzM31mdW5jdGlvbiBlZShlLHQscil7cj09PXZvaWQgMCYmKHI9ZS5sZW5ndGgpO2Zvcih2YXIgcz10O3M8cjtzKyspe3ZhciBhPWUuY2hhckNvZGVBdChzKTtpZihNKGEpKXJldHVybiBzPHItMSYmYT09PTEzJiZlLmNoYXJDb2RlQXQocysxKT09PTEwP3MrMjpzKzF9cmV0dXJuLTF9dmFyIGFlPS9bXFx1MTY4MFxcdTIwMDAtXFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMFxcdWZlZmZdLyx0ZT0vKD86XFxzfFxcL1xcLy4qfFxcL1xcKlteXSo/XFwqXFwvKSovZyxpZT1PYmplY3QucHJvdG90eXBlLE5lPWllLmhhc093blByb3BlcnR5LHA9aWUudG9TdHJpbmcsRD1PYmplY3QuaGFzT3dufHxmdW5jdGlvbihlLHQpe3JldHVybiBOZS5jYWxsKGUsdCl9LHc9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHAuY2FsbChlKT09PVwiW29iamVjdCBBcnJheV1cIn07ZnVuY3Rpb24gZihlKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl4oPzpcIitlLnJlcGxhY2UoLyAvZyxcInxcIikrXCIpJFwiKX12YXIgRj0vKD86W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0pLyxLPWZ1bmN0aW9uKHQscil7dGhpcy5saW5lPXQsdGhpcy5jb2x1bW49cn07Sy5wcm90b3R5cGUub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSyh0aGlzLmxpbmUsdGhpcy5jb2x1bW4rdCl9O3ZhciBYPWZ1bmN0aW9uKHQscixzKXt0aGlzLnN0YXJ0PXIsdGhpcy5lbmQ9cyx0LnNvdXJjZUZpbGUhPT1udWxsJiYodGhpcy5zb3VyY2U9dC5zb3VyY2VGaWxlKX07ZnVuY3Rpb24gb2UoZSx0KXtmb3IodmFyIHI9MSxzPTA7Oyl7dmFyIGE9ZWUoZSxzLHQpO2lmKGE8MClyZXR1cm4gbmV3IEsocix0LXMpOysrcixzPWF9fXZhciBtZT17ZWNtYVZlcnNpb246bnVsbCxzb3VyY2VUeXBlOlwic2NyaXB0XCIsb25JbnNlcnRlZFNlbWljb2xvbjpudWxsLG9uVHJhaWxpbmdDb21tYTpudWxsLGFsbG93UmVzZXJ2ZWQ6bnVsbCxhbGxvd1JldHVybk91dHNpZGVGdW5jdGlvbjohMSxhbGxvd0ltcG9ydEV4cG9ydEV2ZXJ5d2hlcmU6ITEsYWxsb3dBd2FpdE91dHNpZGVGdW5jdGlvbjpudWxsLGFsbG93U3VwZXJPdXRzaWRlTWV0aG9kOm51bGwsYWxsb3dIYXNoQmFuZzohMSxsb2NhdGlvbnM6ITEsb25Ub2tlbjpudWxsLG9uQ29tbWVudDpudWxsLHJhbmdlczohMSxwcm9ncmFtOm51bGwsc291cmNlRmlsZTpudWxsLGRpcmVjdFNvdXJjZUZpbGU6bnVsbCxwcmVzZXJ2ZVBhcmVuczohMX0sdmU9ITE7ZnVuY3Rpb24gcHQoZSl7dmFyIHQ9e307Zm9yKHZhciByIGluIG1lKXRbcl09ZSYmRChlLHIpP2Vbcl06bWVbcl07aWYodC5lY21hVmVyc2lvbj09PVwibGF0ZXN0XCI/dC5lY21hVmVyc2lvbj0xZTg6dC5lY21hVmVyc2lvbj09bnVsbD8oIXZlJiZ0eXBlb2YgY29uc29sZT09XCJvYmplY3RcIiYmY29uc29sZS53YXJuJiYodmU9ITAsY29uc29sZS53YXJuKGBTaW5jZSBBY29ybiA4LjAuMCwgb3B0aW9ucy5lY21hVmVyc2lvbiBpcyByZXF1aXJlZC5cbkRlZmF1bHRpbmcgdG8gMjAyMCwgYnV0IHRoaXMgd2lsbCBzdG9wIHdvcmtpbmcgaW4gdGhlIGZ1dHVyZS5gKSksdC5lY21hVmVyc2lvbj0xMSk6dC5lY21hVmVyc2lvbj49MjAxNSYmKHQuZWNtYVZlcnNpb24tPTIwMDkpLHQuYWxsb3dSZXNlcnZlZD09bnVsbCYmKHQuYWxsb3dSZXNlcnZlZD10LmVjbWFWZXJzaW9uPDUpLHcodC5vblRva2VuKSl7dmFyIHM9dC5vblRva2VuO3Qub25Ub2tlbj1mdW5jdGlvbihhKXtyZXR1cm4gcy5wdXNoKGEpfX1yZXR1cm4gdyh0Lm9uQ29tbWVudCkmJih0Lm9uQ29tbWVudD1mdCh0LHQub25Db21tZW50KSksdH1mdW5jdGlvbiBmdChlLHQpe3JldHVybiBmdW5jdGlvbihyLHMsYSxoLGMsZCl7dmFyIHg9e3R5cGU6cj9cIkJsb2NrXCI6XCJMaW5lXCIsdmFsdWU6cyxzdGFydDphLGVuZDpofTtlLmxvY2F0aW9ucyYmKHgubG9jPW5ldyBYKHRoaXMsYyxkKSksZS5yYW5nZXMmJih4LnJhbmdlPVthLGhdKSx0LnB1c2goeCl9fXZhciBFZT0xLGdlPTIsRGU9NCxVZT04LGNyPTE2LHByPTMyLGR0PTY0LGZyPTEyOCxPZT0yNTYsbXQ9RWV8Z2V8T2U7ZnVuY3Rpb24gdnQoZSx0KXtyZXR1cm4gZ2V8KGU/RGU6MCl8KHQ/VWU6MCl9dmFyIHplPTAsZ3Q9MSxmZT0yLGRyPTMsbXI9NCx2cj01LFo9ZnVuY3Rpb24odCxyLHMpe3RoaXMub3B0aW9ucz10PXB0KHQpLHRoaXMuc291cmNlRmlsZT10LnNvdXJjZUZpbGUsdGhpcy5rZXl3b3Jkcz1mKEVbdC5lY21hVmVyc2lvbj49Nj82OnQuc291cmNlVHlwZT09PVwibW9kdWxlXCI/XCI1bW9kdWxlXCI6NV0pO3ZhciBhPVwiXCI7dC5hbGxvd1Jlc2VydmVkIT09ITAmJihhPWxbdC5lY21hVmVyc2lvbj49Nj82OnQuZWNtYVZlcnNpb249PT01PzU6M10sdC5zb3VyY2VUeXBlPT09XCJtb2R1bGVcIiYmKGErPVwiIGF3YWl0XCIpKSx0aGlzLnJlc2VydmVkV29yZHM9ZihhKTt2YXIgaD0oYT9hK1wiIFwiOlwiXCIpK2wuc3RyaWN0O3RoaXMucmVzZXJ2ZWRXb3Jkc1N0cmljdD1mKGgpLHRoaXMucmVzZXJ2ZWRXb3Jkc1N0cmljdEJpbmQ9ZihoK1wiIFwiK2wuc3RyaWN0QmluZCksdGhpcy5pbnB1dD1TdHJpbmcociksdGhpcy5jb250YWluc0VzYz0hMSxzPyh0aGlzLnBvcz1zLHRoaXMubGluZVN0YXJ0PXRoaXMuaW5wdXQubGFzdEluZGV4T2YoYFxuYCxzLTEpKzEsdGhpcy5jdXJMaW5lPXRoaXMuaW5wdXQuc2xpY2UoMCx0aGlzLmxpbmVTdGFydCkuc3BsaXQoXykubGVuZ3RoKToodGhpcy5wb3M9dGhpcy5saW5lU3RhcnQ9MCx0aGlzLmN1ckxpbmU9MSksdGhpcy50eXBlPWkuZW9mLHRoaXMudmFsdWU9bnVsbCx0aGlzLnN0YXJ0PXRoaXMuZW5kPXRoaXMucG9zLHRoaXMuc3RhcnRMb2M9dGhpcy5lbmRMb2M9dGhpcy5jdXJQb3NpdGlvbigpLHRoaXMubGFzdFRva0VuZExvYz10aGlzLmxhc3RUb2tTdGFydExvYz1udWxsLHRoaXMubGFzdFRva1N0YXJ0PXRoaXMubGFzdFRva0VuZD10aGlzLnBvcyx0aGlzLmNvbnRleHQ9dGhpcy5pbml0aWFsQ29udGV4dCgpLHRoaXMuZXhwckFsbG93ZWQ9ITAsdGhpcy5pbk1vZHVsZT10LnNvdXJjZVR5cGU9PT1cIm1vZHVsZVwiLHRoaXMuc3RyaWN0PXRoaXMuaW5Nb2R1bGV8fHRoaXMuc3RyaWN0RGlyZWN0aXZlKHRoaXMucG9zKSx0aGlzLnBvdGVudGlhbEFycm93QXQ9LTEsdGhpcy5wb3RlbnRpYWxBcnJvd0luRm9yQXdhaXQ9ITEsdGhpcy55aWVsZFBvcz10aGlzLmF3YWl0UG9zPXRoaXMuYXdhaXRJZGVudFBvcz0wLHRoaXMubGFiZWxzPVtdLHRoaXMudW5kZWZpbmVkRXhwb3J0cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucG9zPT09MCYmdC5hbGxvd0hhc2hCYW5nJiZ0aGlzLmlucHV0LnNsaWNlKDAsMik9PT1cIiMhXCImJnRoaXMuc2tpcExpbmVDb21tZW50KDIpLHRoaXMuc2NvcGVTdGFjaz1bXSx0aGlzLmVudGVyU2NvcGUoRWUpLHRoaXMucmVnZXhwU3RhdGU9bnVsbCx0aGlzLnByaXZhdGVOYW1lU3RhY2s9W119LGxlPXtpbkZ1bmN0aW9uOntjb25maWd1cmFibGU6ITB9LGluR2VuZXJhdG9yOntjb25maWd1cmFibGU6ITB9LGluQXN5bmM6e2NvbmZpZ3VyYWJsZTohMH0sY2FuQXdhaXQ6e2NvbmZpZ3VyYWJsZTohMH0sYWxsb3dTdXBlcjp7Y29uZmlndXJhYmxlOiEwfSxhbGxvd0RpcmVjdFN1cGVyOntjb25maWd1cmFibGU6ITB9LHRyZWF0RnVuY3Rpb25zQXNWYXI6e2NvbmZpZ3VyYWJsZTohMH0sYWxsb3dOZXdEb3RUYXJnZXQ6e2NvbmZpZ3VyYWJsZTohMH0saW5DbGFzc1N0YXRpY0Jsb2NrOntjb25maWd1cmFibGU6ITB9fTtaLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5wcm9ncmFtfHx0aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHRUb2tlbigpLHRoaXMucGFyc2VUb3BMZXZlbCh0KX0sbGUuaW5GdW5jdGlvbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5jdXJyZW50VmFyU2NvcGUoKS5mbGFncyZnZSk+MH0sbGUuaW5HZW5lcmF0b3IuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuY3VycmVudFZhclNjb3BlKCkuZmxhZ3MmVWUpPjAmJiF0aGlzLmN1cnJlbnRWYXJTY29wZSgpLmluQ2xhc3NGaWVsZEluaXR9LGxlLmluQXN5bmMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuY3VycmVudFZhclNjb3BlKCkuZmxhZ3MmRGUpPjAmJiF0aGlzLmN1cnJlbnRWYXJTY29wZSgpLmluQ2xhc3NGaWVsZEluaXR9LGxlLmNhbkF3YWl0LmdldD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnNjb3BlU3RhY2subGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciB0PXRoaXMuc2NvcGVTdGFja1tlXTtpZih0LmluQ2xhc3NGaWVsZEluaXR8fHQuZmxhZ3MmT2UpcmV0dXJuITE7aWYodC5mbGFncyZnZSlyZXR1cm4odC5mbGFncyZEZSk+MH1yZXR1cm4gdGhpcy5pbk1vZHVsZSYmdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj0xM3x8dGhpcy5vcHRpb25zLmFsbG93QXdhaXRPdXRzaWRlRnVuY3Rpb259LGxlLmFsbG93U3VwZXIuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jdXJyZW50VGhpc1Njb3BlKCksdD1lLmZsYWdzLHI9ZS5pbkNsYXNzRmllbGRJbml0O3JldHVybih0JmR0KT4wfHxyfHx0aGlzLm9wdGlvbnMuYWxsb3dTdXBlck91dHNpZGVNZXRob2R9LGxlLmFsbG93RGlyZWN0U3VwZXIuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuY3VycmVudFRoaXNTY29wZSgpLmZsYWdzJmZyKT4wfSxsZS50cmVhdEZ1bmN0aW9uc0FzVmFyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWF0RnVuY3Rpb25zQXNWYXJJblNjb3BlKHRoaXMuY3VycmVudFNjb3BlKCkpfSxsZS5hbGxvd05ld0RvdFRhcmdldC5nZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1cnJlbnRUaGlzU2NvcGUoKSx0PWUuZmxhZ3Mscj1lLmluQ2xhc3NGaWVsZEluaXQ7cmV0dXJuKHQmKGdlfE9lKSk+MHx8cn0sbGUuaW5DbGFzc1N0YXRpY0Jsb2NrLmdldD1mdW5jdGlvbigpe3JldHVybih0aGlzLmN1cnJlbnRWYXJTY29wZSgpLmZsYWdzJk9lKT4wfSxaLmV4dGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7ci0tOyl0W3JdPWFyZ3VtZW50c1tyXTtmb3IodmFyIHM9dGhpcyxhPTA7YTx0Lmxlbmd0aDthKyspcz10W2FdKHMpO3JldHVybiBzfSxaLnBhcnNlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG5ldyB0aGlzKHIsdCkucGFyc2UoKX0sWi5wYXJzZUV4cHJlc3Npb25BdD1mdW5jdGlvbih0LHIscyl7dmFyIGE9bmV3IHRoaXMocyx0LHIpO3JldHVybiBhLm5leHRUb2tlbigpLGEucGFyc2VFeHByZXNzaW9uKCl9LFoudG9rZW5pemVyPWZ1bmN0aW9uKHQscil7cmV0dXJuIG5ldyB0aGlzKHIsdCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFoucHJvdG90eXBlLGxlKTt2YXIgc2U9Wi5wcm90b3R5cGUsRGE9L14oPzonKCg/OlxcXFwufFteJ1xcXFxdKSo/KSd8XCIoKD86XFxcXC58W15cIlxcXFxdKSo/KVwiKS87c2Uuc3RyaWN0RGlyZWN0aXZlPWZ1bmN0aW9uKGUpe2Zvcig7Oyl7dGUubGFzdEluZGV4PWUsZSs9dGUuZXhlYyh0aGlzLmlucHV0KVswXS5sZW5ndGg7dmFyIHQ9RGEuZXhlYyh0aGlzLmlucHV0LnNsaWNlKGUpKTtpZighdClyZXR1cm4hMTtpZigodFsxXXx8dFsyXSk9PT1cInVzZSBzdHJpY3RcIil7dGUubGFzdEluZGV4PWUrdFswXS5sZW5ndGg7dmFyIHI9dGUuZXhlYyh0aGlzLmlucHV0KSxzPXIuaW5kZXgrclswXS5sZW5ndGgsYT10aGlzLmlucHV0LmNoYXJBdChzKTtyZXR1cm4gYT09PVwiO1wifHxhPT09XCJ9XCJ8fF8udGVzdChyWzBdKSYmISgvWyhgLlsrXFwtLyolPD49LD9eJl0vLnRlc3QoYSl8fGE9PT1cIiFcIiYmdGhpcy5pbnB1dC5jaGFyQXQocysxKT09PVwiPVwiKX1lKz10WzBdLmxlbmd0aCx0ZS5sYXN0SW5kZXg9ZSxlKz10ZS5leGVjKHRoaXMuaW5wdXQpWzBdLmxlbmd0aCx0aGlzLmlucHV0W2VdPT09XCI7XCImJmUrK319LHNlLmVhdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50eXBlPT09ZT8odGhpcy5uZXh0KCksITApOiExfSxzZS5pc0NvbnRleHR1YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudHlwZT09PWkubmFtZSYmdGhpcy52YWx1ZT09PWUmJiF0aGlzLmNvbnRhaW5zRXNjfSxzZS5lYXRDb250ZXh0dWFsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlzQ29udGV4dHVhbChlKT8odGhpcy5uZXh0KCksITApOiExfSxzZS5leHBlY3RDb250ZXh0dWFsPWZ1bmN0aW9uKGUpe3RoaXMuZWF0Q29udGV4dHVhbChlKXx8dGhpcy51bmV4cGVjdGVkKCl9LHNlLmNhbkluc2VydFNlbWljb2xvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGU9PT1pLmVvZnx8dGhpcy50eXBlPT09aS5icmFjZVJ8fF8udGVzdCh0aGlzLmlucHV0LnNsaWNlKHRoaXMubGFzdFRva0VuZCx0aGlzLnN0YXJ0KSl9LHNlLmluc2VydFNlbWljb2xvbj1mdW5jdGlvbigpe2lmKHRoaXMuY2FuSW5zZXJ0U2VtaWNvbG9uKCkpcmV0dXJuIHRoaXMub3B0aW9ucy5vbkluc2VydGVkU2VtaWNvbG9uJiZ0aGlzLm9wdGlvbnMub25JbnNlcnRlZFNlbWljb2xvbih0aGlzLmxhc3RUb2tFbmQsdGhpcy5sYXN0VG9rRW5kTG9jKSwhMH0sc2Uuc2VtaWNvbG9uPWZ1bmN0aW9uKCl7IXRoaXMuZWF0KGkuc2VtaSkmJiF0aGlzLmluc2VydFNlbWljb2xvbigpJiZ0aGlzLnVuZXhwZWN0ZWQoKX0sc2UuYWZ0ZXJUcmFpbGluZ0NvbW1hPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy50eXBlPT09ZSlyZXR1cm4gdGhpcy5vcHRpb25zLm9uVHJhaWxpbmdDb21tYSYmdGhpcy5vcHRpb25zLm9uVHJhaWxpbmdDb21tYSh0aGlzLmxhc3RUb2tTdGFydCx0aGlzLmxhc3RUb2tTdGFydExvYyksdHx8dGhpcy5uZXh0KCksITB9LHNlLmV4cGVjdD1mdW5jdGlvbihlKXt0aGlzLmVhdChlKXx8dGhpcy51bmV4cGVjdGVkKCl9LHNlLnVuZXhwZWN0ZWQ9ZnVuY3Rpb24oZSl7dGhpcy5yYWlzZShlIT1udWxsP2U6dGhpcy5zdGFydCxcIlVuZXhwZWN0ZWQgdG9rZW5cIil9O2Z1bmN0aW9uIFdlKCl7dGhpcy5zaG9ydGhhbmRBc3NpZ249dGhpcy50cmFpbGluZ0NvbW1hPXRoaXMucGFyZW50aGVzaXplZEFzc2lnbj10aGlzLnBhcmVudGhlc2l6ZWRCaW5kPXRoaXMuZG91YmxlUHJvdG89LTF9c2UuY2hlY2tQYXR0ZXJuRXJyb3JzPWZ1bmN0aW9uKGUsdCl7aWYoISFlKXtlLnRyYWlsaW5nQ29tbWE+LTEmJnRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnRyYWlsaW5nQ29tbWEsXCJDb21tYSBpcyBub3QgcGVybWl0dGVkIGFmdGVyIHRoZSByZXN0IGVsZW1lbnRcIik7dmFyIHI9dD9lLnBhcmVudGhlc2l6ZWRBc3NpZ246ZS5wYXJlbnRoZXNpemVkQmluZDtyPi0xJiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUocixcIlBhcmVudGhlc2l6ZWQgcGF0dGVyblwiKX19LHNlLmNoZWNrRXhwcmVzc2lvbkVycm9ycz1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiExO3ZhciByPWUuc2hvcnRoYW5kQXNzaWduLHM9ZS5kb3VibGVQcm90bztpZighdClyZXR1cm4gcj49MHx8cz49MDtyPj0wJiZ0aGlzLnJhaXNlKHIsXCJTaG9ydGhhbmQgcHJvcGVydHkgYXNzaWdubWVudHMgYXJlIHZhbGlkIG9ubHkgaW4gZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuc1wiKSxzPj0wJiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUocyxcIlJlZGVmaW5pdGlvbiBvZiBfX3Byb3RvX18gcHJvcGVydHlcIil9LHNlLmNoZWNrWWllbGRBd2FpdEluRGVmYXVsdFBhcmFtcz1mdW5jdGlvbigpe3RoaXMueWllbGRQb3MmJighdGhpcy5hd2FpdFBvc3x8dGhpcy55aWVsZFBvczx0aGlzLmF3YWl0UG9zKSYmdGhpcy5yYWlzZSh0aGlzLnlpZWxkUG9zLFwiWWllbGQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgYSBkZWZhdWx0IHZhbHVlXCIpLHRoaXMuYXdhaXRQb3MmJnRoaXMucmFpc2UodGhpcy5hd2FpdFBvcyxcIkF3YWl0IGV4cHJlc3Npb24gY2Fubm90IGJlIGEgZGVmYXVsdCB2YWx1ZVwiKX0sc2UuaXNTaW1wbGVBc3NpZ25UYXJnZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PVwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIj90aGlzLmlzU2ltcGxlQXNzaWduVGFyZ2V0KGUuZXhwcmVzc2lvbik6ZS50eXBlPT09XCJJZGVudGlmaWVyXCJ8fGUudHlwZT09PVwiTWVtYmVyRXhwcmVzc2lvblwifTt2YXIgaj1aLnByb3RvdHlwZTtqLnBhcnNlVG9wTGV2ZWw9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoZS5ib2R5fHwoZS5ib2R5PVtdKTt0aGlzLnR5cGUhPT1pLmVvZjspe3ZhciByPXRoaXMucGFyc2VTdGF0ZW1lbnQobnVsbCwhMCx0KTtlLmJvZHkucHVzaChyKX1pZih0aGlzLmluTW9kdWxlKWZvcih2YXIgcz0wLGE9T2JqZWN0LmtleXModGhpcy51bmRlZmluZWRFeHBvcnRzKTtzPGEubGVuZ3RoO3MrPTEpe3ZhciBoPWFbc107dGhpcy5yYWlzZVJlY292ZXJhYmxlKHRoaXMudW5kZWZpbmVkRXhwb3J0c1toXS5zdGFydCxcIkV4cG9ydCAnXCIraCtcIicgaXMgbm90IGRlZmluZWRcIil9cmV0dXJuIHRoaXMuYWRhcHREaXJlY3RpdmVQcm9sb2d1ZShlLmJvZHkpLHRoaXMubmV4dCgpLGUuc291cmNlVHlwZT10aGlzLm9wdGlvbnMuc291cmNlVHlwZSx0aGlzLmZpbmlzaE5vZGUoZSxcIlByb2dyYW1cIil9O3ZhciB4dD17a2luZDpcImxvb3BcIn0sT2E9e2tpbmQ6XCJzd2l0Y2hcIn07ai5pc0xldD1mdW5jdGlvbihlKXtpZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb248Nnx8IXRoaXMuaXNDb250ZXh0dWFsKFwibGV0XCIpKXJldHVybiExO3RlLmxhc3RJbmRleD10aGlzLnBvczt2YXIgdD10ZS5leGVjKHRoaXMuaW5wdXQpLHI9dGhpcy5wb3MrdFswXS5sZW5ndGgscz10aGlzLmlucHV0LmNoYXJDb2RlQXQocik7aWYocz09PTkxfHxzPT09OTJ8fHM+NTUyOTUmJnM8NTYzMjApcmV0dXJuITA7aWYoZSlyZXR1cm4hMTtpZihzPT09MTIzKXJldHVybiEwO2lmKHYocywhMCkpe2Zvcih2YXIgYT1yKzE7cShzPXRoaXMuaW5wdXQuY2hhckNvZGVBdChhKSwhMCk7KSsrYTtpZihzPT09OTJ8fHM+NTUyOTUmJnM8NTYzMjApcmV0dXJuITA7dmFyIGg9dGhpcy5pbnB1dC5zbGljZShyLGEpO2lmKCF5LnRlc3QoaCkpcmV0dXJuITB9cmV0dXJuITF9LGouaXNBc3luY0Z1bmN0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPDh8fCF0aGlzLmlzQ29udGV4dHVhbChcImFzeW5jXCIpKXJldHVybiExO3RlLmxhc3RJbmRleD10aGlzLnBvczt2YXIgZT10ZS5leGVjKHRoaXMuaW5wdXQpLHQ9dGhpcy5wb3MrZVswXS5sZW5ndGgscjtyZXR1cm4hXy50ZXN0KHRoaXMuaW5wdXQuc2xpY2UodGhpcy5wb3MsdCkpJiZ0aGlzLmlucHV0LnNsaWNlKHQsdCs4KT09PVwiZnVuY3Rpb25cIiYmKHQrOD09PXRoaXMuaW5wdXQubGVuZ3RofHwhKHEocj10aGlzLmlucHV0LmNoYXJDb2RlQXQodCs4KSl8fHI+NTUyOTUmJnI8NTYzMjApKX0sai5wYXJzZVN0YXRlbWVudD1mdW5jdGlvbihlLHQscil7dmFyIHM9dGhpcy50eXBlLGE9dGhpcy5zdGFydE5vZGUoKSxoO3N3aXRjaCh0aGlzLmlzTGV0KGUpJiYocz1pLl92YXIsaD1cImxldFwiKSxzKXtjYXNlIGkuX2JyZWFrOmNhc2UgaS5fY29udGludWU6cmV0dXJuIHRoaXMucGFyc2VCcmVha0NvbnRpbnVlU3RhdGVtZW50KGEscy5rZXl3b3JkKTtjYXNlIGkuX2RlYnVnZ2VyOnJldHVybiB0aGlzLnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoYSk7Y2FzZSBpLl9kbzpyZXR1cm4gdGhpcy5wYXJzZURvU3RhdGVtZW50KGEpO2Nhc2UgaS5fZm9yOnJldHVybiB0aGlzLnBhcnNlRm9yU3RhdGVtZW50KGEpO2Nhc2UgaS5fZnVuY3Rpb246cmV0dXJuIGUmJih0aGlzLnN0cmljdHx8ZSE9PVwiaWZcIiYmZSE9PVwibGFiZWxcIikmJnRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49NiYmdGhpcy51bmV4cGVjdGVkKCksdGhpcy5wYXJzZUZ1bmN0aW9uU3RhdGVtZW50KGEsITEsIWUpO2Nhc2UgaS5fY2xhc3M6cmV0dXJuIGUmJnRoaXMudW5leHBlY3RlZCgpLHRoaXMucGFyc2VDbGFzcyhhLCEwKTtjYXNlIGkuX2lmOnJldHVybiB0aGlzLnBhcnNlSWZTdGF0ZW1lbnQoYSk7Y2FzZSBpLl9yZXR1cm46cmV0dXJuIHRoaXMucGFyc2VSZXR1cm5TdGF0ZW1lbnQoYSk7Y2FzZSBpLl9zd2l0Y2g6cmV0dXJuIHRoaXMucGFyc2VTd2l0Y2hTdGF0ZW1lbnQoYSk7Y2FzZSBpLl90aHJvdzpyZXR1cm4gdGhpcy5wYXJzZVRocm93U3RhdGVtZW50KGEpO2Nhc2UgaS5fdHJ5OnJldHVybiB0aGlzLnBhcnNlVHJ5U3RhdGVtZW50KGEpO2Nhc2UgaS5fY29uc3Q6Y2FzZSBpLl92YXI6cmV0dXJuIGg9aHx8dGhpcy52YWx1ZSxlJiZoIT09XCJ2YXJcIiYmdGhpcy51bmV4cGVjdGVkKCksdGhpcy5wYXJzZVZhclN0YXRlbWVudChhLGgpO2Nhc2UgaS5fd2hpbGU6cmV0dXJuIHRoaXMucGFyc2VXaGlsZVN0YXRlbWVudChhKTtjYXNlIGkuX3dpdGg6cmV0dXJuIHRoaXMucGFyc2VXaXRoU3RhdGVtZW50KGEpO2Nhc2UgaS5icmFjZUw6cmV0dXJuIHRoaXMucGFyc2VCbG9jayghMCxhKTtjYXNlIGkuc2VtaTpyZXR1cm4gdGhpcy5wYXJzZUVtcHR5U3RhdGVtZW50KGEpO2Nhc2UgaS5fZXhwb3J0OmNhc2UgaS5faW1wb3J0OmlmKHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj4xMCYmcz09PWkuX2ltcG9ydCl7dGUubGFzdEluZGV4PXRoaXMucG9zO3ZhciBjPXRlLmV4ZWModGhpcy5pbnB1dCksZD10aGlzLnBvcytjWzBdLmxlbmd0aCx4PXRoaXMuaW5wdXQuY2hhckNvZGVBdChkKTtpZih4PT09NDB8fHg9PT00NilyZXR1cm4gdGhpcy5wYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoYSx0aGlzLnBhcnNlRXhwcmVzc2lvbigpKX1yZXR1cm4gdGhpcy5vcHRpb25zLmFsbG93SW1wb3J0RXhwb3J0RXZlcnl3aGVyZXx8KHR8fHRoaXMucmFpc2UodGhpcy5zdGFydCxcIidpbXBvcnQnIGFuZCAnZXhwb3J0JyBtYXkgb25seSBhcHBlYXIgYXQgdGhlIHRvcCBsZXZlbFwiKSx0aGlzLmluTW9kdWxlfHx0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCInaW1wb3J0JyBhbmQgJ2V4cG9ydCcgbWF5IGFwcGVhciBvbmx5IHdpdGggJ3NvdXJjZVR5cGU6IG1vZHVsZSdcIikpLHM9PT1pLl9pbXBvcnQ/dGhpcy5wYXJzZUltcG9ydChhKTp0aGlzLnBhcnNlRXhwb3J0KGEscik7ZGVmYXVsdDppZih0aGlzLmlzQXN5bmNGdW5jdGlvbigpKXJldHVybiBlJiZ0aGlzLnVuZXhwZWN0ZWQoKSx0aGlzLm5leHQoKSx0aGlzLnBhcnNlRnVuY3Rpb25TdGF0ZW1lbnQoYSwhMCwhZSk7dmFyIFU9dGhpcy52YWx1ZSxXPXRoaXMucGFyc2VFeHByZXNzaW9uKCk7cmV0dXJuIHM9PT1pLm5hbWUmJlcudHlwZT09PVwiSWRlbnRpZmllclwiJiZ0aGlzLmVhdChpLmNvbG9uKT90aGlzLnBhcnNlTGFiZWxlZFN0YXRlbWVudChhLFUsVyxlKTp0aGlzLnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChhLFcpfX0sai5wYXJzZUJyZWFrQ29udGludWVTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj10PT09XCJicmVha1wiO3RoaXMubmV4dCgpLHRoaXMuZWF0KGkuc2VtaSl8fHRoaXMuaW5zZXJ0U2VtaWNvbG9uKCk/ZS5sYWJlbD1udWxsOnRoaXMudHlwZSE9PWkubmFtZT90aGlzLnVuZXhwZWN0ZWQoKTooZS5sYWJlbD10aGlzLnBhcnNlSWRlbnQoKSx0aGlzLnNlbWljb2xvbigpKTtmb3IodmFyIHM9MDtzPHRoaXMubGFiZWxzLmxlbmd0aDsrK3Mpe3ZhciBhPXRoaXMubGFiZWxzW3NdO2lmKChlLmxhYmVsPT1udWxsfHxhLm5hbWU9PT1lLmxhYmVsLm5hbWUpJiYoYS5raW5kIT1udWxsJiYocnx8YS5raW5kPT09XCJsb29wXCIpfHxlLmxhYmVsJiZyKSlicmVha31yZXR1cm4gcz09PXRoaXMubGFiZWxzLmxlbmd0aCYmdGhpcy5yYWlzZShlLnN0YXJ0LFwiVW5zeW50YWN0aWMgXCIrdCksdGhpcy5maW5pc2hOb2RlKGUscj9cIkJyZWFrU3RhdGVtZW50XCI6XCJDb250aW51ZVN0YXRlbWVudFwiKX0sai5wYXJzZURlYnVnZ2VyU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5leHQoKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiRGVidWdnZXJTdGF0ZW1lbnRcIil9LGoucGFyc2VEb1N0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5sYWJlbHMucHVzaCh4dCksZS5ib2R5PXRoaXMucGFyc2VTdGF0ZW1lbnQoXCJkb1wiKSx0aGlzLmxhYmVscy5wb3AoKSx0aGlzLmV4cGVjdChpLl93aGlsZSksZS50ZXN0PXRoaXMucGFyc2VQYXJlbkV4cHJlc3Npb24oKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTY/dGhpcy5lYXQoaS5zZW1pKTp0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiRG9XaGlsZVN0YXRlbWVudFwiKX0sai5wYXJzZUZvclN0YXRlbWVudD1mdW5jdGlvbihlKXt0aGlzLm5leHQoKTt2YXIgdD10aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTkmJnRoaXMuY2FuQXdhaXQmJnRoaXMuZWF0Q29udGV4dHVhbChcImF3YWl0XCIpP3RoaXMubGFzdFRva1N0YXJ0Oi0xO2lmKHRoaXMubGFiZWxzLnB1c2goeHQpLHRoaXMuZW50ZXJTY29wZSgwKSx0aGlzLmV4cGVjdChpLnBhcmVuTCksdGhpcy50eXBlPT09aS5zZW1pKXJldHVybiB0Pi0xJiZ0aGlzLnVuZXhwZWN0ZWQodCksdGhpcy5wYXJzZUZvcihlLG51bGwpO3ZhciByPXRoaXMuaXNMZXQoKTtpZih0aGlzLnR5cGU9PT1pLl92YXJ8fHRoaXMudHlwZT09PWkuX2NvbnN0fHxyKXt2YXIgcz10aGlzLnN0YXJ0Tm9kZSgpLGE9cj9cImxldFwiOnRoaXMudmFsdWU7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMucGFyc2VWYXIocywhMCxhKSx0aGlzLmZpbmlzaE5vZGUocyxcIlZhcmlhYmxlRGVjbGFyYXRpb25cIiksKHRoaXMudHlwZT09PWkuX2lufHx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTYmJnRoaXMuaXNDb250ZXh0dWFsKFwib2ZcIikpJiZzLmRlY2xhcmF0aW9ucy5sZW5ndGg9PT0xPyh0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTkmJih0aGlzLnR5cGU9PT1pLl9pbj90Pi0xJiZ0aGlzLnVuZXhwZWN0ZWQodCk6ZS5hd2FpdD10Pi0xKSx0aGlzLnBhcnNlRm9ySW4oZSxzKSk6KHQ+LTEmJnRoaXMudW5leHBlY3RlZCh0KSx0aGlzLnBhcnNlRm9yKGUscykpfXZhciBoPXRoaXMuaXNDb250ZXh0dWFsKFwibGV0XCIpLGM9ITEsZD1uZXcgV2UseD10aGlzLnBhcnNlRXhwcmVzc2lvbih0Pi0xP1wiYXdhaXRcIjohMCxkKTtyZXR1cm4gdGhpcy50eXBlPT09aS5faW58fChjPXRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49NiYmdGhpcy5pc0NvbnRleHR1YWwoXCJvZlwiKSk/KHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49OSYmKHRoaXMudHlwZT09PWkuX2luP3Q+LTEmJnRoaXMudW5leHBlY3RlZCh0KTplLmF3YWl0PXQ+LTEpLGgmJmMmJnRoaXMucmFpc2UoeC5zdGFydCxcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhIGZvci1vZiBsb29wIG1heSBub3Qgc3RhcnQgd2l0aCAnbGV0Jy5cIiksdGhpcy50b0Fzc2lnbmFibGUoeCwhMSxkKSx0aGlzLmNoZWNrTFZhbFBhdHRlcm4oeCksdGhpcy5wYXJzZUZvckluKGUseCkpOih0aGlzLmNoZWNrRXhwcmVzc2lvbkVycm9ycyhkLCEwKSx0Pi0xJiZ0aGlzLnVuZXhwZWN0ZWQodCksdGhpcy5wYXJzZUZvcihlLHgpKX0sai5wYXJzZUZ1bmN0aW9uU3RhdGVtZW50PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5wYXJzZUZ1bmN0aW9uKGUsTGV8KHI/MDp5dCksITEsdCl9LGoucGFyc2VJZlN0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZXh0KCksZS50ZXN0PXRoaXMucGFyc2VQYXJlbkV4cHJlc3Npb24oKSxlLmNvbnNlcXVlbnQ9dGhpcy5wYXJzZVN0YXRlbWVudChcImlmXCIpLGUuYWx0ZXJuYXRlPXRoaXMuZWF0KGkuX2Vsc2UpP3RoaXMucGFyc2VTdGF0ZW1lbnQoXCJpZlwiKTpudWxsLHRoaXMuZmluaXNoTm9kZShlLFwiSWZTdGF0ZW1lbnRcIil9LGoucGFyc2VSZXR1cm5TdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuaW5GdW5jdGlvbiYmIXRoaXMub3B0aW9ucy5hbGxvd1JldHVybk91dHNpZGVGdW5jdGlvbiYmdGhpcy5yYWlzZSh0aGlzLnN0YXJ0LFwiJ3JldHVybicgb3V0c2lkZSBvZiBmdW5jdGlvblwiKSx0aGlzLm5leHQoKSx0aGlzLmVhdChpLnNlbWkpfHx0aGlzLmluc2VydFNlbWljb2xvbigpP2UuYXJndW1lbnQ9bnVsbDooZS5hcmd1bWVudD10aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuc2VtaWNvbG9uKCkpLHRoaXMuZmluaXNoTm9kZShlLFwiUmV0dXJuU3RhdGVtZW50XCIpfSxqLnBhcnNlU3dpdGNoU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3RoaXMubmV4dCgpLGUuZGlzY3JpbWluYW50PXRoaXMucGFyc2VQYXJlbkV4cHJlc3Npb24oKSxlLmNhc2VzPVtdLHRoaXMuZXhwZWN0KGkuYnJhY2VMKSx0aGlzLmxhYmVscy5wdXNoKE9hKSx0aGlzLmVudGVyU2NvcGUoMCk7Zm9yKHZhciB0LHI9ITE7dGhpcy50eXBlIT09aS5icmFjZVI7KWlmKHRoaXMudHlwZT09PWkuX2Nhc2V8fHRoaXMudHlwZT09PWkuX2RlZmF1bHQpe3ZhciBzPXRoaXMudHlwZT09PWkuX2Nhc2U7dCYmdGhpcy5maW5pc2hOb2RlKHQsXCJTd2l0Y2hDYXNlXCIpLGUuY2FzZXMucHVzaCh0PXRoaXMuc3RhcnROb2RlKCkpLHQuY29uc2VxdWVudD1bXSx0aGlzLm5leHQoKSxzP3QudGVzdD10aGlzLnBhcnNlRXhwcmVzc2lvbigpOihyJiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUodGhpcy5sYXN0VG9rU3RhcnQsXCJNdWx0aXBsZSBkZWZhdWx0IGNsYXVzZXNcIikscj0hMCx0LnRlc3Q9bnVsbCksdGhpcy5leHBlY3QoaS5jb2xvbil9ZWxzZSB0fHx0aGlzLnVuZXhwZWN0ZWQoKSx0LmNvbnNlcXVlbnQucHVzaCh0aGlzLnBhcnNlU3RhdGVtZW50KG51bGwpKTtyZXR1cm4gdGhpcy5leGl0U2NvcGUoKSx0JiZ0aGlzLmZpbmlzaE5vZGUodCxcIlN3aXRjaENhc2VcIiksdGhpcy5uZXh0KCksdGhpcy5sYWJlbHMucG9wKCksdGhpcy5maW5pc2hOb2RlKGUsXCJTd2l0Y2hTdGF0ZW1lbnRcIil9LGoucGFyc2VUaHJvd1N0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZXh0KCksXy50ZXN0KHRoaXMuaW5wdXQuc2xpY2UodGhpcy5sYXN0VG9rRW5kLHRoaXMuc3RhcnQpKSYmdGhpcy5yYWlzZSh0aGlzLmxhc3RUb2tFbmQsXCJJbGxlZ2FsIG5ld2xpbmUgYWZ0ZXIgdGhyb3dcIiksZS5hcmd1bWVudD10aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKGUsXCJUaHJvd1N0YXRlbWVudFwiKX07dmFyIExhPVtdO2oucGFyc2VUcnlTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5uZXh0KCksZS5ibG9jaz10aGlzLnBhcnNlQmxvY2soKSxlLmhhbmRsZXI9bnVsbCx0aGlzLnR5cGU9PT1pLl9jYXRjaCl7dmFyIHQ9dGhpcy5zdGFydE5vZGUoKTtpZih0aGlzLm5leHQoKSx0aGlzLmVhdChpLnBhcmVuTCkpe3QucGFyYW09dGhpcy5wYXJzZUJpbmRpbmdBdG9tKCk7dmFyIHI9dC5wYXJhbS50eXBlPT09XCJJZGVudGlmaWVyXCI7dGhpcy5lbnRlclNjb3BlKHI/cHI6MCksdGhpcy5jaGVja0xWYWxQYXR0ZXJuKHQucGFyYW0scj9tcjpmZSksdGhpcy5leHBlY3QoaS5wYXJlblIpfWVsc2UgdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPDEwJiZ0aGlzLnVuZXhwZWN0ZWQoKSx0LnBhcmFtPW51bGwsdGhpcy5lbnRlclNjb3BlKDApO3QuYm9keT10aGlzLnBhcnNlQmxvY2soITEpLHRoaXMuZXhpdFNjb3BlKCksZS5oYW5kbGVyPXRoaXMuZmluaXNoTm9kZSh0LFwiQ2F0Y2hDbGF1c2VcIil9cmV0dXJuIGUuZmluYWxpemVyPXRoaXMuZWF0KGkuX2ZpbmFsbHkpP3RoaXMucGFyc2VCbG9jaygpOm51bGwsIWUuaGFuZGxlciYmIWUuZmluYWxpemVyJiZ0aGlzLnJhaXNlKGUuc3RhcnQsXCJNaXNzaW5nIGNhdGNoIG9yIGZpbmFsbHkgY2xhdXNlXCIpLHRoaXMuZmluaXNoTm9kZShlLFwiVHJ5U3RhdGVtZW50XCIpfSxqLnBhcnNlVmFyU3RhdGVtZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMucGFyc2VWYXIoZSwhMSx0KSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKX0sai5wYXJzZVdoaWxlU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5leHQoKSxlLnRlc3Q9dGhpcy5wYXJzZVBhcmVuRXhwcmVzc2lvbigpLHRoaXMubGFiZWxzLnB1c2goeHQpLGUuYm9keT10aGlzLnBhcnNlU3RhdGVtZW50KFwid2hpbGVcIiksdGhpcy5sYWJlbHMucG9wKCksdGhpcy5maW5pc2hOb2RlKGUsXCJXaGlsZVN0YXRlbWVudFwiKX0sai5wYXJzZVdpdGhTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc3RyaWN0JiZ0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCInd2l0aCcgaW4gc3RyaWN0IG1vZGVcIiksdGhpcy5uZXh0KCksZS5vYmplY3Q9dGhpcy5wYXJzZVBhcmVuRXhwcmVzc2lvbigpLGUuYm9keT10aGlzLnBhcnNlU3RhdGVtZW50KFwid2l0aFwiKSx0aGlzLmZpbmlzaE5vZGUoZSxcIldpdGhTdGF0ZW1lbnRcIil9LGoucGFyc2VFbXB0eVN0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKGUsXCJFbXB0eVN0YXRlbWVudFwiKX0sai5wYXJzZUxhYmVsZWRTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSx0LHIscyl7Zm9yKHZhciBhPTAsaD10aGlzLmxhYmVsczthPGgubGVuZ3RoO2ErPTEpe3ZhciBjPWhbYV07Yy5uYW1lPT09dCYmdGhpcy5yYWlzZShyLnN0YXJ0LFwiTGFiZWwgJ1wiK3QrXCInIGlzIGFscmVhZHkgZGVjbGFyZWRcIil9Zm9yKHZhciBkPXRoaXMudHlwZS5pc0xvb3A/XCJsb29wXCI6dGhpcy50eXBlPT09aS5fc3dpdGNoP1wic3dpdGNoXCI6bnVsbCx4PXRoaXMubGFiZWxzLmxlbmd0aC0xO3g+PTA7eC0tKXt2YXIgVT10aGlzLmxhYmVsc1t4XTtpZihVLnN0YXRlbWVudFN0YXJ0PT09ZS5zdGFydClVLnN0YXRlbWVudFN0YXJ0PXRoaXMuc3RhcnQsVS5raW5kPWQ7ZWxzZSBicmVha31yZXR1cm4gdGhpcy5sYWJlbHMucHVzaCh7bmFtZTp0LGtpbmQ6ZCxzdGF0ZW1lbnRTdGFydDp0aGlzLnN0YXJ0fSksZS5ib2R5PXRoaXMucGFyc2VTdGF0ZW1lbnQocz9zLmluZGV4T2YoXCJsYWJlbFwiKT09PS0xP3MrXCJsYWJlbFwiOnM6XCJsYWJlbFwiKSx0aGlzLmxhYmVscy5wb3AoKSxlLmxhYmVsPXIsdGhpcy5maW5pc2hOb2RlKGUsXCJMYWJlbGVkU3RhdGVtZW50XCIpfSxqLnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlLmV4cHJlc3Npb249dCx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKX0sai5wYXJzZUJsb2NrPWZ1bmN0aW9uKGUsdCxyKXtmb3IoZT09PXZvaWQgMCYmKGU9ITApLHQ9PT12b2lkIDAmJih0PXRoaXMuc3RhcnROb2RlKCkpLHQuYm9keT1bXSx0aGlzLmV4cGVjdChpLmJyYWNlTCksZSYmdGhpcy5lbnRlclNjb3BlKDApO3RoaXMudHlwZSE9PWkuYnJhY2VSOyl7dmFyIHM9dGhpcy5wYXJzZVN0YXRlbWVudChudWxsKTt0LmJvZHkucHVzaChzKX1yZXR1cm4gciYmKHRoaXMuc3RyaWN0PSExKSx0aGlzLm5leHQoKSxlJiZ0aGlzLmV4aXRTY29wZSgpLHRoaXMuZmluaXNoTm9kZSh0LFwiQmxvY2tTdGF0ZW1lbnRcIil9LGoucGFyc2VGb3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pbml0PXQsdGhpcy5leHBlY3QoaS5zZW1pKSxlLnRlc3Q9dGhpcy50eXBlPT09aS5zZW1pP251bGw6dGhpcy5wYXJzZUV4cHJlc3Npb24oKSx0aGlzLmV4cGVjdChpLnNlbWkpLGUudXBkYXRlPXRoaXMudHlwZT09PWkucGFyZW5SP251bGw6dGhpcy5wYXJzZUV4cHJlc3Npb24oKSx0aGlzLmV4cGVjdChpLnBhcmVuUiksZS5ib2R5PXRoaXMucGFyc2VTdGF0ZW1lbnQoXCJmb3JcIiksdGhpcy5leGl0U2NvcGUoKSx0aGlzLmxhYmVscy5wb3AoKSx0aGlzLmZpbmlzaE5vZGUoZSxcIkZvclN0YXRlbWVudFwiKX0sai5wYXJzZUZvckluPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy50eXBlPT09aS5faW47cmV0dXJuIHRoaXMubmV4dCgpLHQudHlwZT09PVwiVmFyaWFibGVEZWNsYXJhdGlvblwiJiZ0LmRlY2xhcmF0aW9uc1swXS5pbml0IT1udWxsJiYoIXJ8fHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbjw4fHx0aGlzLnN0cmljdHx8dC5raW5kIT09XCJ2YXJcInx8dC5kZWNsYXJhdGlvbnNbMF0uaWQudHlwZSE9PVwiSWRlbnRpZmllclwiKSYmdGhpcy5yYWlzZSh0LnN0YXJ0LChyP1wiZm9yLWluXCI6XCJmb3Itb2ZcIikrXCIgbG9vcCB2YXJpYWJsZSBkZWNsYXJhdGlvbiBtYXkgbm90IGhhdmUgYW4gaW5pdGlhbGl6ZXJcIiksZS5sZWZ0PXQsZS5yaWdodD1yP3RoaXMucGFyc2VFeHByZXNzaW9uKCk6dGhpcy5wYXJzZU1heWJlQXNzaWduKCksdGhpcy5leHBlY3QoaS5wYXJlblIpLGUuYm9keT10aGlzLnBhcnNlU3RhdGVtZW50KFwiZm9yXCIpLHRoaXMuZXhpdFNjb3BlKCksdGhpcy5sYWJlbHMucG9wKCksdGhpcy5maW5pc2hOb2RlKGUscj9cIkZvckluU3RhdGVtZW50XCI6XCJGb3JPZlN0YXRlbWVudFwiKX0sai5wYXJzZVZhcj1mdW5jdGlvbihlLHQscil7Zm9yKGUuZGVjbGFyYXRpb25zPVtdLGUua2luZD1yOzspe3ZhciBzPXRoaXMuc3RhcnROb2RlKCk7aWYodGhpcy5wYXJzZVZhcklkKHMsciksdGhpcy5lYXQoaS5lcSk/cy5pbml0PXRoaXMucGFyc2VNYXliZUFzc2lnbih0KTpyPT09XCJjb25zdFwiJiYhKHRoaXMudHlwZT09PWkuX2lufHx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTYmJnRoaXMuaXNDb250ZXh0dWFsKFwib2ZcIikpP3RoaXMudW5leHBlY3RlZCgpOnMuaWQudHlwZSE9PVwiSWRlbnRpZmllclwiJiYhKHQmJih0aGlzLnR5cGU9PT1pLl9pbnx8dGhpcy5pc0NvbnRleHR1YWwoXCJvZlwiKSkpP3RoaXMucmFpc2UodGhpcy5sYXN0VG9rRW5kLFwiQ29tcGxleCBiaW5kaW5nIHBhdHRlcm5zIHJlcXVpcmUgYW4gaW5pdGlhbGl6YXRpb24gdmFsdWVcIik6cy5pbml0PW51bGwsZS5kZWNsYXJhdGlvbnMucHVzaCh0aGlzLmZpbmlzaE5vZGUocyxcIlZhcmlhYmxlRGVjbGFyYXRvclwiKSksIXRoaXMuZWF0KGkuY29tbWEpKWJyZWFrfXJldHVybiBlfSxqLnBhcnNlVmFySWQ9ZnVuY3Rpb24oZSx0KXtlLmlkPXRoaXMucGFyc2VCaW5kaW5nQXRvbSgpLHRoaXMuY2hlY2tMVmFsUGF0dGVybihlLmlkLHQ9PT1cInZhclwiP2d0OmZlLCExKX07dmFyIExlPTEseXQ9Mixncj00O2oucGFyc2VGdW5jdGlvbj1mdW5jdGlvbihlLHQscixzLGEpe3RoaXMuaW5pdEZ1bmN0aW9uKGUpLCh0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTl8fHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49NiYmIXMpJiYodGhpcy50eXBlPT09aS5zdGFyJiZ0Jnl0JiZ0aGlzLnVuZXhwZWN0ZWQoKSxlLmdlbmVyYXRvcj10aGlzLmVhdChpLnN0YXIpKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTgmJihlLmFzeW5jPSEhcyksdCZMZSYmKGUuaWQ9dCZnciYmdGhpcy50eXBlIT09aS5uYW1lP251bGw6dGhpcy5wYXJzZUlkZW50KCksZS5pZCYmISh0Jnl0KSYmdGhpcy5jaGVja0xWYWxTaW1wbGUoZS5pZCx0aGlzLnN0cmljdHx8ZS5nZW5lcmF0b3J8fGUuYXN5bmM/dGhpcy50cmVhdEZ1bmN0aW9uc0FzVmFyP2d0OmZlOmRyKSk7dmFyIGg9dGhpcy55aWVsZFBvcyxjPXRoaXMuYXdhaXRQb3MsZD10aGlzLmF3YWl0SWRlbnRQb3M7cmV0dXJuIHRoaXMueWllbGRQb3M9MCx0aGlzLmF3YWl0UG9zPTAsdGhpcy5hd2FpdElkZW50UG9zPTAsdGhpcy5lbnRlclNjb3BlKHZ0KGUuYXN5bmMsZS5nZW5lcmF0b3IpKSx0JkxlfHwoZS5pZD10aGlzLnR5cGU9PT1pLm5hbWU/dGhpcy5wYXJzZUlkZW50KCk6bnVsbCksdGhpcy5wYXJzZUZ1bmN0aW9uUGFyYW1zKGUpLHRoaXMucGFyc2VGdW5jdGlvbkJvZHkoZSxyLCExLGEpLHRoaXMueWllbGRQb3M9aCx0aGlzLmF3YWl0UG9zPWMsdGhpcy5hd2FpdElkZW50UG9zPWQsdGhpcy5maW5pc2hOb2RlKGUsdCZMZT9cIkZ1bmN0aW9uRGVjbGFyYXRpb25cIjpcIkZ1bmN0aW9uRXhwcmVzc2lvblwiKX0sai5wYXJzZUZ1bmN0aW9uUGFyYW1zPWZ1bmN0aW9uKGUpe3RoaXMuZXhwZWN0KGkucGFyZW5MKSxlLnBhcmFtcz10aGlzLnBhcnNlQmluZGluZ0xpc3QoaS5wYXJlblIsITEsdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj04KSx0aGlzLmNoZWNrWWllbGRBd2FpdEluRGVmYXVsdFBhcmFtcygpfSxqLnBhcnNlQ2xhc3M9ZnVuY3Rpb24oZSx0KXt0aGlzLm5leHQoKTt2YXIgcj10aGlzLnN0cmljdDt0aGlzLnN0cmljdD0hMCx0aGlzLnBhcnNlQ2xhc3NJZChlLHQpLHRoaXMucGFyc2VDbGFzc1N1cGVyKGUpO3ZhciBzPXRoaXMuZW50ZXJDbGFzc0JvZHkoKSxhPXRoaXMuc3RhcnROb2RlKCksaD0hMTtmb3IoYS5ib2R5PVtdLHRoaXMuZXhwZWN0KGkuYnJhY2VMKTt0aGlzLnR5cGUhPT1pLmJyYWNlUjspe3ZhciBjPXRoaXMucGFyc2VDbGFzc0VsZW1lbnQoZS5zdXBlckNsYXNzIT09bnVsbCk7YyYmKGEuYm9keS5wdXNoKGMpLGMudHlwZT09PVwiTWV0aG9kRGVmaW5pdGlvblwiJiZjLmtpbmQ9PT1cImNvbnN0cnVjdG9yXCI/KGgmJnRoaXMucmFpc2UoYy5zdGFydCxcIkR1cGxpY2F0ZSBjb25zdHJ1Y3RvciBpbiB0aGUgc2FtZSBjbGFzc1wiKSxoPSEwKTpjLmtleSYmYy5rZXkudHlwZT09PVwiUHJpdmF0ZUlkZW50aWZpZXJcIiYmVmEocyxjKSYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKGMua2V5LnN0YXJ0LFwiSWRlbnRpZmllciAnI1wiK2Mua2V5Lm5hbWUrXCInIGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWRcIikpfXJldHVybiB0aGlzLnN0cmljdD1yLHRoaXMubmV4dCgpLGUuYm9keT10aGlzLmZpbmlzaE5vZGUoYSxcIkNsYXNzQm9keVwiKSx0aGlzLmV4aXRDbGFzc0JvZHkoKSx0aGlzLmZpbmlzaE5vZGUoZSx0P1wiQ2xhc3NEZWNsYXJhdGlvblwiOlwiQ2xhc3NFeHByZXNzaW9uXCIpfSxqLnBhcnNlQ2xhc3NFbGVtZW50PWZ1bmN0aW9uKGUpe2lmKHRoaXMuZWF0KGkuc2VtaSkpcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uLHI9dGhpcy5zdGFydE5vZGUoKSxzPVwiXCIsYT0hMSxoPSExLGM9XCJtZXRob2RcIixkPSExO2lmKHRoaXMuZWF0Q29udGV4dHVhbChcInN0YXRpY1wiKSl7aWYodD49MTMmJnRoaXMuZWF0KGkuYnJhY2VMKSlyZXR1cm4gdGhpcy5wYXJzZUNsYXNzU3RhdGljQmxvY2socikscjt0aGlzLmlzQ2xhc3NFbGVtZW50TmFtZVN0YXJ0KCl8fHRoaXMudHlwZT09PWkuc3Rhcj9kPSEwOnM9XCJzdGF0aWNcIn1pZihyLnN0YXRpYz1kLCFzJiZ0Pj04JiZ0aGlzLmVhdENvbnRleHR1YWwoXCJhc3luY1wiKSYmKCh0aGlzLmlzQ2xhc3NFbGVtZW50TmFtZVN0YXJ0KCl8fHRoaXMudHlwZT09PWkuc3RhcikmJiF0aGlzLmNhbkluc2VydFNlbWljb2xvbigpP2g9ITA6cz1cImFzeW5jXCIpLCFzJiYodD49OXx8IWgpJiZ0aGlzLmVhdChpLnN0YXIpJiYoYT0hMCksIXMmJiFoJiYhYSl7dmFyIHg9dGhpcy52YWx1ZTsodGhpcy5lYXRDb250ZXh0dWFsKFwiZ2V0XCIpfHx0aGlzLmVhdENvbnRleHR1YWwoXCJzZXRcIikpJiYodGhpcy5pc0NsYXNzRWxlbWVudE5hbWVTdGFydCgpP2M9eDpzPXgpfWlmKHM/KHIuY29tcHV0ZWQ9ITEsci5rZXk9dGhpcy5zdGFydE5vZGVBdCh0aGlzLmxhc3RUb2tTdGFydCx0aGlzLmxhc3RUb2tTdGFydExvYyksci5rZXkubmFtZT1zLHRoaXMuZmluaXNoTm9kZShyLmtleSxcIklkZW50aWZpZXJcIikpOnRoaXMucGFyc2VDbGFzc0VsZW1lbnROYW1lKHIpLHQ8MTN8fHRoaXMudHlwZT09PWkucGFyZW5MfHxjIT09XCJtZXRob2RcInx8YXx8aCl7dmFyIFU9IXIuc3RhdGljJiZHZShyLFwiY29uc3RydWN0b3JcIiksVz1VJiZlO1UmJmMhPT1cIm1ldGhvZFwiJiZ0aGlzLnJhaXNlKHIua2V5LnN0YXJ0LFwiQ29uc3RydWN0b3IgY2FuJ3QgaGF2ZSBnZXQvc2V0IG1vZGlmaWVyXCIpLHIua2luZD1VP1wiY29uc3RydWN0b3JcIjpjLHRoaXMucGFyc2VDbGFzc01ldGhvZChyLGEsaCxXKX1lbHNlIHRoaXMucGFyc2VDbGFzc0ZpZWxkKHIpO3JldHVybiByfSxqLmlzQ2xhc3NFbGVtZW50TmFtZVN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZT09PWkubmFtZXx8dGhpcy50eXBlPT09aS5wcml2YXRlSWR8fHRoaXMudHlwZT09PWkubnVtfHx0aGlzLnR5cGU9PT1pLnN0cmluZ3x8dGhpcy50eXBlPT09aS5icmFja2V0THx8dGhpcy50eXBlLmtleXdvcmR9LGoucGFyc2VDbGFzc0VsZW1lbnROYW1lPWZ1bmN0aW9uKGUpe3RoaXMudHlwZT09PWkucHJpdmF0ZUlkPyh0aGlzLnZhbHVlPT09XCJjb25zdHJ1Y3RvclwiJiZ0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCJDbGFzc2VzIGNhbid0IGhhdmUgYW4gZWxlbWVudCBuYW1lZCAnI2NvbnN0cnVjdG9yJ1wiKSxlLmNvbXB1dGVkPSExLGUua2V5PXRoaXMucGFyc2VQcml2YXRlSWRlbnQoKSk6dGhpcy5wYXJzZVByb3BlcnR5TmFtZShlKX0sai5wYXJzZUNsYXNzTWV0aG9kPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciBhPWUua2V5O2Uua2luZD09PVwiY29uc3RydWN0b3JcIj8odCYmdGhpcy5yYWlzZShhLnN0YXJ0LFwiQ29uc3RydWN0b3IgY2FuJ3QgYmUgYSBnZW5lcmF0b3JcIiksciYmdGhpcy5yYWlzZShhLnN0YXJ0LFwiQ29uc3RydWN0b3IgY2FuJ3QgYmUgYW4gYXN5bmMgbWV0aG9kXCIpKTplLnN0YXRpYyYmR2UoZSxcInByb3RvdHlwZVwiKSYmdGhpcy5yYWlzZShhLnN0YXJ0LFwiQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgcHJvdG90eXBlXCIpO3ZhciBoPWUudmFsdWU9dGhpcy5wYXJzZU1ldGhvZCh0LHIscyk7cmV0dXJuIGUua2luZD09PVwiZ2V0XCImJmgucGFyYW1zLmxlbmd0aCE9PTAmJnRoaXMucmFpc2VSZWNvdmVyYWJsZShoLnN0YXJ0LFwiZ2V0dGVyIHNob3VsZCBoYXZlIG5vIHBhcmFtc1wiKSxlLmtpbmQ9PT1cInNldFwiJiZoLnBhcmFtcy5sZW5ndGghPT0xJiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUoaC5zdGFydCxcInNldHRlciBzaG91bGQgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbVwiKSxlLmtpbmQ9PT1cInNldFwiJiZoLnBhcmFtc1swXS50eXBlPT09XCJSZXN0RWxlbWVudFwiJiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUoaC5wYXJhbXNbMF0uc3RhcnQsXCJTZXR0ZXIgY2Fubm90IHVzZSByZXN0IHBhcmFtc1wiKSx0aGlzLmZpbmlzaE5vZGUoZSxcIk1ldGhvZERlZmluaXRpb25cIil9LGoucGFyc2VDbGFzc0ZpZWxkPWZ1bmN0aW9uKGUpe2lmKEdlKGUsXCJjb25zdHJ1Y3RvclwiKT90aGlzLnJhaXNlKGUua2V5LnN0YXJ0LFwiQ2xhc3NlcyBjYW4ndCBoYXZlIGEgZmllbGQgbmFtZWQgJ2NvbnN0cnVjdG9yJ1wiKTplLnN0YXRpYyYmR2UoZSxcInByb3RvdHlwZVwiKSYmdGhpcy5yYWlzZShlLmtleS5zdGFydCxcIkNsYXNzZXMgY2FuJ3QgaGF2ZSBhIHN0YXRpYyBmaWVsZCBuYW1lZCAncHJvdG90eXBlJ1wiKSx0aGlzLmVhdChpLmVxKSl7dmFyIHQ9dGhpcy5jdXJyZW50VGhpc1Njb3BlKCkscj10LmluQ2xhc3NGaWVsZEluaXQ7dC5pbkNsYXNzRmllbGRJbml0PSEwLGUudmFsdWU9dGhpcy5wYXJzZU1heWJlQXNzaWduKCksdC5pbkNsYXNzRmllbGRJbml0PXJ9ZWxzZSBlLnZhbHVlPW51bGw7cmV0dXJuIHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKGUsXCJQcm9wZXJ0eURlZmluaXRpb25cIil9LGoucGFyc2VDbGFzc1N0YXRpY0Jsb2NrPWZ1bmN0aW9uKGUpe2UuYm9keT1bXTt2YXIgdD10aGlzLmxhYmVscztmb3IodGhpcy5sYWJlbHM9W10sdGhpcy5lbnRlclNjb3BlKE9lfGR0KTt0aGlzLnR5cGUhPT1pLmJyYWNlUjspe3ZhciByPXRoaXMucGFyc2VTdGF0ZW1lbnQobnVsbCk7ZS5ib2R5LnB1c2gocil9cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZXhpdFNjb3BlKCksdGhpcy5sYWJlbHM9dCx0aGlzLmZpbmlzaE5vZGUoZSxcIlN0YXRpY0Jsb2NrXCIpfSxqLnBhcnNlQ2xhc3NJZD1mdW5jdGlvbihlLHQpe3RoaXMudHlwZT09PWkubmFtZT8oZS5pZD10aGlzLnBhcnNlSWRlbnQoKSx0JiZ0aGlzLmNoZWNrTFZhbFNpbXBsZShlLmlkLGZlLCExKSk6KHQ9PT0hMCYmdGhpcy51bmV4cGVjdGVkKCksZS5pZD1udWxsKX0sai5wYXJzZUNsYXNzU3VwZXI9ZnVuY3Rpb24oZSl7ZS5zdXBlckNsYXNzPXRoaXMuZWF0KGkuX2V4dGVuZHMpP3RoaXMucGFyc2VFeHByU3Vic2NyaXB0cyghMSk6bnVsbH0sai5lbnRlckNsYXNzQm9keT1mdW5jdGlvbigpe3ZhciBlPXtkZWNsYXJlZDpPYmplY3QuY3JlYXRlKG51bGwpLHVzZWQ6W119O3JldHVybiB0aGlzLnByaXZhdGVOYW1lU3RhY2sucHVzaChlKSxlLmRlY2xhcmVkfSxqLmV4aXRDbGFzc0JvZHk9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5wcml2YXRlTmFtZVN0YWNrLnBvcCgpLHQ9ZS5kZWNsYXJlZCxyPWUudXNlZCxzPXRoaXMucHJpdmF0ZU5hbWVTdGFjay5sZW5ndGgsYT1zPT09MD9udWxsOnRoaXMucHJpdmF0ZU5hbWVTdGFja1tzLTFdLGg9MDtoPHIubGVuZ3RoOysraCl7dmFyIGM9cltoXTtEKHQsYy5uYW1lKXx8KGE/YS51c2VkLnB1c2goYyk6dGhpcy5yYWlzZVJlY292ZXJhYmxlKGMuc3RhcnQsXCJQcml2YXRlIGZpZWxkICcjXCIrYy5uYW1lK1wiJyBtdXN0IGJlIGRlY2xhcmVkIGluIGFuIGVuY2xvc2luZyBjbGFzc1wiKSl9fTtmdW5jdGlvbiBWYShlLHQpe3ZhciByPXQua2V5Lm5hbWUscz1lW3JdLGE9XCJ0cnVlXCI7cmV0dXJuIHQudHlwZT09PVwiTWV0aG9kRGVmaW5pdGlvblwiJiYodC5raW5kPT09XCJnZXRcInx8dC5raW5kPT09XCJzZXRcIikmJihhPSh0LnN0YXRpYz9cInNcIjpcImlcIikrdC5raW5kKSxzPT09XCJpZ2V0XCImJmE9PT1cImlzZXRcInx8cz09PVwiaXNldFwiJiZhPT09XCJpZ2V0XCJ8fHM9PT1cInNnZXRcIiYmYT09PVwic3NldFwifHxzPT09XCJzc2V0XCImJmE9PT1cInNnZXRcIj8oZVtyXT1cInRydWVcIiwhMSk6cz8hMDooZVtyXT1hLCExKX1mdW5jdGlvbiBHZShlLHQpe3ZhciByPWUuY29tcHV0ZWQscz1lLmtleTtyZXR1cm4hciYmKHMudHlwZT09PVwiSWRlbnRpZmllclwiJiZzLm5hbWU9PT10fHxzLnR5cGU9PT1cIkxpdGVyYWxcIiYmcy52YWx1ZT09PXQpfWoucGFyc2VFeHBvcnQ9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLm5leHQoKSx0aGlzLmVhdChpLnN0YXIpKXJldHVybiB0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTExJiYodGhpcy5lYXRDb250ZXh0dWFsKFwiYXNcIik/KGUuZXhwb3J0ZWQ9dGhpcy5wYXJzZU1vZHVsZUV4cG9ydE5hbWUoKSx0aGlzLmNoZWNrRXhwb3J0KHQsZS5leHBvcnRlZC5uYW1lLHRoaXMubGFzdFRva1N0YXJ0KSk6ZS5leHBvcnRlZD1udWxsKSx0aGlzLmV4cGVjdENvbnRleHR1YWwoXCJmcm9tXCIpLHRoaXMudHlwZSE9PWkuc3RyaW5nJiZ0aGlzLnVuZXhwZWN0ZWQoKSxlLnNvdXJjZT10aGlzLnBhcnNlRXhwckF0b20oKSx0aGlzLnNlbWljb2xvbigpLHRoaXMuZmluaXNoTm9kZShlLFwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIik7aWYodGhpcy5lYXQoaS5fZGVmYXVsdCkpe3RoaXMuY2hlY2tFeHBvcnQodCxcImRlZmF1bHRcIix0aGlzLmxhc3RUb2tTdGFydCk7dmFyIHI7aWYodGhpcy50eXBlPT09aS5fZnVuY3Rpb258fChyPXRoaXMuaXNBc3luY0Z1bmN0aW9uKCkpKXt2YXIgcz10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMubmV4dCgpLHImJnRoaXMubmV4dCgpLGUuZGVjbGFyYXRpb249dGhpcy5wYXJzZUZ1bmN0aW9uKHMsTGV8Z3IsITEscil9ZWxzZSBpZih0aGlzLnR5cGU9PT1pLl9jbGFzcyl7dmFyIGE9dGhpcy5zdGFydE5vZGUoKTtlLmRlY2xhcmF0aW9uPXRoaXMucGFyc2VDbGFzcyhhLFwibnVsbGFibGVJRFwiKX1lbHNlIGUuZGVjbGFyYXRpb249dGhpcy5wYXJzZU1heWJlQXNzaWduKCksdGhpcy5zZW1pY29sb24oKTtyZXR1cm4gdGhpcy5maW5pc2hOb2RlKGUsXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIil9aWYodGhpcy5zaG91bGRQYXJzZUV4cG9ydFN0YXRlbWVudCgpKWUuZGVjbGFyYXRpb249dGhpcy5wYXJzZVN0YXRlbWVudChudWxsKSxlLmRlY2xhcmF0aW9uLnR5cGU9PT1cIlZhcmlhYmxlRGVjbGFyYXRpb25cIj90aGlzLmNoZWNrVmFyaWFibGVFeHBvcnQodCxlLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucyk6dGhpcy5jaGVja0V4cG9ydCh0LGUuZGVjbGFyYXRpb24uaWQubmFtZSxlLmRlY2xhcmF0aW9uLmlkLnN0YXJ0KSxlLnNwZWNpZmllcnM9W10sZS5zb3VyY2U9bnVsbDtlbHNle2lmKGUuZGVjbGFyYXRpb249bnVsbCxlLnNwZWNpZmllcnM9dGhpcy5wYXJzZUV4cG9ydFNwZWNpZmllcnModCksdGhpcy5lYXRDb250ZXh0dWFsKFwiZnJvbVwiKSl0aGlzLnR5cGUhPT1pLnN0cmluZyYmdGhpcy51bmV4cGVjdGVkKCksZS5zb3VyY2U9dGhpcy5wYXJzZUV4cHJBdG9tKCk7ZWxzZXtmb3IodmFyIGg9MCxjPWUuc3BlY2lmaWVycztoPGMubGVuZ3RoO2grPTEpe3ZhciBkPWNbaF07dGhpcy5jaGVja1VucmVzZXJ2ZWQoZC5sb2NhbCksdGhpcy5jaGVja0xvY2FsRXhwb3J0KGQubG9jYWwpLGQubG9jYWwudHlwZT09PVwiTGl0ZXJhbFwiJiZ0aGlzLnJhaXNlKGQubG9jYWwuc3RhcnQsXCJBIHN0cmluZyBsaXRlcmFsIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGV4cG9ydGVkIGJpbmRpbmcgd2l0aG91dCBgZnJvbWAuXCIpfWUuc291cmNlPW51bGx9dGhpcy5zZW1pY29sb24oKX1yZXR1cm4gdGhpcy5maW5pc2hOb2RlKGUsXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIpfSxqLmNoZWNrRXhwb3J0PWZ1bmN0aW9uKGUsdCxyKXshZXx8KEQoZSx0KSYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKHIsXCJEdXBsaWNhdGUgZXhwb3J0ICdcIit0K1wiJ1wiKSxlW3RdPSEwKX0sai5jaGVja1BhdHRlcm5FeHBvcnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj10LnR5cGU7aWYocj09PVwiSWRlbnRpZmllclwiKXRoaXMuY2hlY2tFeHBvcnQoZSx0Lm5hbWUsdC5zdGFydCk7ZWxzZSBpZihyPT09XCJPYmplY3RQYXR0ZXJuXCIpZm9yKHZhciBzPTAsYT10LnByb3BlcnRpZXM7czxhLmxlbmd0aDtzKz0xKXt2YXIgaD1hW3NdO3RoaXMuY2hlY2tQYXR0ZXJuRXhwb3J0KGUsaCl9ZWxzZSBpZihyPT09XCJBcnJheVBhdHRlcm5cIilmb3IodmFyIGM9MCxkPXQuZWxlbWVudHM7YzxkLmxlbmd0aDtjKz0xKXt2YXIgeD1kW2NdO3gmJnRoaXMuY2hlY2tQYXR0ZXJuRXhwb3J0KGUseCl9ZWxzZSByPT09XCJQcm9wZXJ0eVwiP3RoaXMuY2hlY2tQYXR0ZXJuRXhwb3J0KGUsdC52YWx1ZSk6cj09PVwiQXNzaWdubWVudFBhdHRlcm5cIj90aGlzLmNoZWNrUGF0dGVybkV4cG9ydChlLHQubGVmdCk6cj09PVwiUmVzdEVsZW1lbnRcIj90aGlzLmNoZWNrUGF0dGVybkV4cG9ydChlLHQuYXJndW1lbnQpOnI9PT1cIlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uXCImJnRoaXMuY2hlY2tQYXR0ZXJuRXhwb3J0KGUsdC5leHByZXNzaW9uKX0sai5jaGVja1ZhcmlhYmxlRXhwb3J0PWZ1bmN0aW9uKGUsdCl7aWYoISFlKWZvcih2YXIgcj0wLHM9dDtyPHMubGVuZ3RoO3IrPTEpe3ZhciBhPXNbcl07dGhpcy5jaGVja1BhdHRlcm5FeHBvcnQoZSxhLmlkKX19LGouc2hvdWxkUGFyc2VFeHBvcnRTdGF0ZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlLmtleXdvcmQ9PT1cInZhclwifHx0aGlzLnR5cGUua2V5d29yZD09PVwiY29uc3RcInx8dGhpcy50eXBlLmtleXdvcmQ9PT1cImNsYXNzXCJ8fHRoaXMudHlwZS5rZXl3b3JkPT09XCJmdW5jdGlvblwifHx0aGlzLmlzTGV0KCl8fHRoaXMuaXNBc3luY0Z1bmN0aW9uKCl9LGoucGFyc2VFeHBvcnRTcGVjaWZpZXJzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLHI9ITA7Zm9yKHRoaXMuZXhwZWN0KGkuYnJhY2VMKTshdGhpcy5lYXQoaS5icmFjZVIpOyl7aWYocilyPSExO2Vsc2UgaWYodGhpcy5leHBlY3QoaS5jb21tYSksdGhpcy5hZnRlclRyYWlsaW5nQ29tbWEoaS5icmFjZVIpKWJyZWFrO3ZhciBzPXRoaXMuc3RhcnROb2RlKCk7cy5sb2NhbD10aGlzLnBhcnNlTW9kdWxlRXhwb3J0TmFtZSgpLHMuZXhwb3J0ZWQ9dGhpcy5lYXRDb250ZXh0dWFsKFwiYXNcIik/dGhpcy5wYXJzZU1vZHVsZUV4cG9ydE5hbWUoKTpzLmxvY2FsLHRoaXMuY2hlY2tFeHBvcnQoZSxzLmV4cG9ydGVkW3MuZXhwb3J0ZWQudHlwZT09PVwiSWRlbnRpZmllclwiP1wibmFtZVwiOlwidmFsdWVcIl0scy5leHBvcnRlZC5zdGFydCksdC5wdXNoKHRoaXMuZmluaXNoTm9kZShzLFwiRXhwb3J0U3BlY2lmaWVyXCIpKX1yZXR1cm4gdH0sai5wYXJzZUltcG9ydD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZXh0KCksdGhpcy50eXBlPT09aS5zdHJpbmc/KGUuc3BlY2lmaWVycz1MYSxlLnNvdXJjZT10aGlzLnBhcnNlRXhwckF0b20oKSk6KGUuc3BlY2lmaWVycz10aGlzLnBhcnNlSW1wb3J0U3BlY2lmaWVycygpLHRoaXMuZXhwZWN0Q29udGV4dHVhbChcImZyb21cIiksZS5zb3VyY2U9dGhpcy50eXBlPT09aS5zdHJpbmc/dGhpcy5wYXJzZUV4cHJBdG9tKCk6dGhpcy51bmV4cGVjdGVkKCkpLHRoaXMuc2VtaWNvbG9uKCksdGhpcy5maW5pc2hOb2RlKGUsXCJJbXBvcnREZWNsYXJhdGlvblwiKX0sai5wYXJzZUltcG9ydFNwZWNpZmllcnM9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PSEwO2lmKHRoaXMudHlwZT09PWkubmFtZSl7dmFyIHI9dGhpcy5zdGFydE5vZGUoKTtpZihyLmxvY2FsPXRoaXMucGFyc2VJZGVudCgpLHRoaXMuY2hlY2tMVmFsU2ltcGxlKHIubG9jYWwsZmUpLGUucHVzaCh0aGlzLmZpbmlzaE5vZGUocixcIkltcG9ydERlZmF1bHRTcGVjaWZpZXJcIikpLCF0aGlzLmVhdChpLmNvbW1hKSlyZXR1cm4gZX1pZih0aGlzLnR5cGU9PT1pLnN0YXIpe3ZhciBzPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMubmV4dCgpLHRoaXMuZXhwZWN0Q29udGV4dHVhbChcImFzXCIpLHMubG9jYWw9dGhpcy5wYXJzZUlkZW50KCksdGhpcy5jaGVja0xWYWxTaW1wbGUocy5sb2NhbCxmZSksZS5wdXNoKHRoaXMuZmluaXNoTm9kZShzLFwiSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyXCIpKSxlfWZvcih0aGlzLmV4cGVjdChpLmJyYWNlTCk7IXRoaXMuZWF0KGkuYnJhY2VSKTspe2lmKHQpdD0hMTtlbHNlIGlmKHRoaXMuZXhwZWN0KGkuY29tbWEpLHRoaXMuYWZ0ZXJUcmFpbGluZ0NvbW1hKGkuYnJhY2VSKSlicmVhazt2YXIgYT10aGlzLnN0YXJ0Tm9kZSgpO2EuaW1wb3J0ZWQ9dGhpcy5wYXJzZU1vZHVsZUV4cG9ydE5hbWUoKSx0aGlzLmVhdENvbnRleHR1YWwoXCJhc1wiKT9hLmxvY2FsPXRoaXMucGFyc2VJZGVudCgpOih0aGlzLmNoZWNrVW5yZXNlcnZlZChhLmltcG9ydGVkKSxhLmxvY2FsPWEuaW1wb3J0ZWQpLHRoaXMuY2hlY2tMVmFsU2ltcGxlKGEubG9jYWwsZmUpLGUucHVzaCh0aGlzLmZpbmlzaE5vZGUoYSxcIkltcG9ydFNwZWNpZmllclwiKSl9cmV0dXJuIGV9LGoucGFyc2VNb2R1bGVFeHBvcnROYW1lPWZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj0xMyYmdGhpcy50eXBlPT09aS5zdHJpbmcpe3ZhciBlPXRoaXMucGFyc2VMaXRlcmFsKHRoaXMudmFsdWUpO3JldHVybiBGLnRlc3QoZS52YWx1ZSkmJnRoaXMucmFpc2UoZS5zdGFydCxcIkFuIGV4cG9ydCBuYW1lIGNhbm5vdCBpbmNsdWRlIGEgbG9uZSBzdXJyb2dhdGUuXCIpLGV9cmV0dXJuIHRoaXMucGFyc2VJZGVudCghMCl9LGouYWRhcHREaXJlY3RpdmVQcm9sb2d1ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoJiZ0aGlzLmlzRGlyZWN0aXZlQ2FuZGlkYXRlKGVbdF0pOysrdCllW3RdLmRpcmVjdGl2ZT1lW3RdLmV4cHJlc3Npb24ucmF3LnNsaWNlKDEsLTEpfSxqLmlzRGlyZWN0aXZlQ2FuZGlkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT1cIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiYmZS5leHByZXNzaW9uLnR5cGU9PT1cIkxpdGVyYWxcIiYmdHlwZW9mIGUuZXhwcmVzc2lvbi52YWx1ZT09XCJzdHJpbmdcIiYmKHRoaXMuaW5wdXRbZS5zdGFydF09PT0nXCInfHx0aGlzLmlucHV0W2Uuc3RhcnRdPT09XCInXCIpfTt2YXIgdWU9Wi5wcm90b3R5cGU7dWUudG9Bc3NpZ25hYmxlPWZ1bmN0aW9uKGUsdCxyKXtpZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTYmJmUpc3dpdGNoKGUudHlwZSl7Y2FzZVwiSWRlbnRpZmllclwiOnRoaXMuaW5Bc3luYyYmZS5uYW1lPT09XCJhd2FpdFwiJiZ0aGlzLnJhaXNlKGUuc3RhcnQsXCJDYW5ub3QgdXNlICdhd2FpdCcgYXMgaWRlbnRpZmllciBpbnNpZGUgYW4gYXN5bmMgZnVuY3Rpb25cIik7YnJlYWs7Y2FzZVwiT2JqZWN0UGF0dGVyblwiOmNhc2VcIkFycmF5UGF0dGVyblwiOmNhc2VcIkFzc2lnbm1lbnRQYXR0ZXJuXCI6Y2FzZVwiUmVzdEVsZW1lbnRcIjpicmVhaztjYXNlXCJPYmplY3RFeHByZXNzaW9uXCI6ZS50eXBlPVwiT2JqZWN0UGF0dGVyblwiLHImJnRoaXMuY2hlY2tQYXR0ZXJuRXJyb3JzKHIsITApO2Zvcih2YXIgcz0wLGE9ZS5wcm9wZXJ0aWVzO3M8YS5sZW5ndGg7cys9MSl7dmFyIGg9YVtzXTt0aGlzLnRvQXNzaWduYWJsZShoLHQpLGgudHlwZT09PVwiUmVzdEVsZW1lbnRcIiYmKGguYXJndW1lbnQudHlwZT09PVwiQXJyYXlQYXR0ZXJuXCJ8fGguYXJndW1lbnQudHlwZT09PVwiT2JqZWN0UGF0dGVyblwiKSYmdGhpcy5yYWlzZShoLmFyZ3VtZW50LnN0YXJ0LFwiVW5leHBlY3RlZCB0b2tlblwiKX1icmVhaztjYXNlXCJQcm9wZXJ0eVwiOmUua2luZCE9PVwiaW5pdFwiJiZ0aGlzLnJhaXNlKGUua2V5LnN0YXJ0LFwiT2JqZWN0IHBhdHRlcm4gY2FuJ3QgY29udGFpbiBnZXR0ZXIgb3Igc2V0dGVyXCIpLHRoaXMudG9Bc3NpZ25hYmxlKGUudmFsdWUsdCk7YnJlYWs7Y2FzZVwiQXJyYXlFeHByZXNzaW9uXCI6ZS50eXBlPVwiQXJyYXlQYXR0ZXJuXCIsciYmdGhpcy5jaGVja1BhdHRlcm5FcnJvcnMociwhMCksdGhpcy50b0Fzc2lnbmFibGVMaXN0KGUuZWxlbWVudHMsdCk7YnJlYWs7Y2FzZVwiU3ByZWFkRWxlbWVudFwiOmUudHlwZT1cIlJlc3RFbGVtZW50XCIsdGhpcy50b0Fzc2lnbmFibGUoZS5hcmd1bWVudCx0KSxlLmFyZ3VtZW50LnR5cGU9PT1cIkFzc2lnbm1lbnRQYXR0ZXJuXCImJnRoaXMucmFpc2UoZS5hcmd1bWVudC5zdGFydCxcIlJlc3QgZWxlbWVudHMgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlXCIpO2JyZWFrO2Nhc2VcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCI6ZS5vcGVyYXRvciE9PVwiPVwiJiZ0aGlzLnJhaXNlKGUubGVmdC5lbmQsXCJPbmx5ICc9JyBvcGVyYXRvciBjYW4gYmUgdXNlZCBmb3Igc3BlY2lmeWluZyBkZWZhdWx0IHZhbHVlLlwiKSxlLnR5cGU9XCJBc3NpZ25tZW50UGF0dGVyblwiLGRlbGV0ZSBlLm9wZXJhdG9yLHRoaXMudG9Bc3NpZ25hYmxlKGUubGVmdCx0KTticmVhaztjYXNlXCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiOnRoaXMudG9Bc3NpZ25hYmxlKGUuZXhwcmVzc2lvbix0LHIpO2JyZWFrO2Nhc2VcIkNoYWluRXhwcmVzc2lvblwiOnRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnN0YXJ0LFwiT3B0aW9uYWwgY2hhaW5pbmcgY2Fubm90IGFwcGVhciBpbiBsZWZ0LWhhbmQgc2lkZVwiKTticmVhaztjYXNlXCJNZW1iZXJFeHByZXNzaW9uXCI6aWYoIXQpYnJlYWs7ZGVmYXVsdDp0aGlzLnJhaXNlKGUuc3RhcnQsXCJBc3NpZ25pbmcgdG8gcnZhbHVlXCIpfWVsc2UgciYmdGhpcy5jaGVja1BhdHRlcm5FcnJvcnMociwhMCk7cmV0dXJuIGV9LHVlLnRvQXNzaWduYWJsZUxpc3Q9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9ZS5sZW5ndGgscz0wO3M8cjtzKyspe3ZhciBhPWVbc107YSYmdGhpcy50b0Fzc2lnbmFibGUoYSx0KX1pZihyKXt2YXIgaD1lW3ItMV07dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPT09NiYmdCYmaCYmaC50eXBlPT09XCJSZXN0RWxlbWVudFwiJiZoLmFyZ3VtZW50LnR5cGUhPT1cIklkZW50aWZpZXJcIiYmdGhpcy51bmV4cGVjdGVkKGguYXJndW1lbnQuc3RhcnQpfXJldHVybiBlfSx1ZS5wYXJzZVNwcmVhZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0LmFyZ3VtZW50PXRoaXMucGFyc2VNYXliZUFzc2lnbighMSxlKSx0aGlzLmZpbmlzaE5vZGUodCxcIlNwcmVhZEVsZW1lbnRcIil9LHVlLnBhcnNlUmVzdEJpbmRpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb249PT02JiZ0aGlzLnR5cGUhPT1pLm5hbWUmJnRoaXMudW5leHBlY3RlZCgpLGUuYXJndW1lbnQ9dGhpcy5wYXJzZUJpbmRpbmdBdG9tKCksdGhpcy5maW5pc2hOb2RlKGUsXCJSZXN0RWxlbWVudFwiKX0sdWUucGFyc2VCaW5kaW5nQXRvbT1mdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49Nilzd2l0Y2godGhpcy50eXBlKXtjYXNlIGkuYnJhY2tldEw6dmFyIGU9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5uZXh0KCksZS5lbGVtZW50cz10aGlzLnBhcnNlQmluZGluZ0xpc3QoaS5icmFja2V0UiwhMCwhMCksdGhpcy5maW5pc2hOb2RlKGUsXCJBcnJheVBhdHRlcm5cIik7Y2FzZSBpLmJyYWNlTDpyZXR1cm4gdGhpcy5wYXJzZU9iaighMCl9cmV0dXJuIHRoaXMucGFyc2VJZGVudCgpfSx1ZS5wYXJzZUJpbmRpbmdMaXN0PWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIHM9W10sYT0hMDshdGhpcy5lYXQoZSk7KWlmKGE/YT0hMTp0aGlzLmV4cGVjdChpLmNvbW1hKSx0JiZ0aGlzLnR5cGU9PT1pLmNvbW1hKXMucHVzaChudWxsKTtlbHNle2lmKHImJnRoaXMuYWZ0ZXJUcmFpbGluZ0NvbW1hKGUpKWJyZWFrO2lmKHRoaXMudHlwZT09PWkuZWxsaXBzaXMpe3ZhciBoPXRoaXMucGFyc2VSZXN0QmluZGluZygpO3RoaXMucGFyc2VCaW5kaW5nTGlzdEl0ZW0oaCkscy5wdXNoKGgpLHRoaXMudHlwZT09PWkuY29tbWEmJnRoaXMucmFpc2UodGhpcy5zdGFydCxcIkNvbW1hIGlzIG5vdCBwZXJtaXR0ZWQgYWZ0ZXIgdGhlIHJlc3QgZWxlbWVudFwiKSx0aGlzLmV4cGVjdChlKTticmVha31lbHNle3ZhciBjPXRoaXMucGFyc2VNYXliZURlZmF1bHQodGhpcy5zdGFydCx0aGlzLnN0YXJ0TG9jKTt0aGlzLnBhcnNlQmluZGluZ0xpc3RJdGVtKGMpLHMucHVzaChjKX19cmV0dXJuIHN9LHVlLnBhcnNlQmluZGluZ0xpc3RJdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlfSx1ZS5wYXJzZU1heWJlRGVmYXVsdD1mdW5jdGlvbihlLHQscil7aWYocj1yfHx0aGlzLnBhcnNlQmluZGluZ0F0b20oKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb248Nnx8IXRoaXMuZWF0KGkuZXEpKXJldHVybiByO3ZhciBzPXRoaXMuc3RhcnROb2RlQXQoZSx0KTtyZXR1cm4gcy5sZWZ0PXIscy5yaWdodD10aGlzLnBhcnNlTWF5YmVBc3NpZ24oKSx0aGlzLmZpbmlzaE5vZGUocyxcIkFzc2lnbm1lbnRQYXR0ZXJuXCIpfSx1ZS5jaGVja0xWYWxTaW1wbGU9ZnVuY3Rpb24oZSx0LHIpe3Q9PT12b2lkIDAmJih0PXplKTt2YXIgcz10IT09emU7c3dpdGNoKGUudHlwZSl7Y2FzZVwiSWRlbnRpZmllclwiOnRoaXMuc3RyaWN0JiZ0aGlzLnJlc2VydmVkV29yZHNTdHJpY3RCaW5kLnRlc3QoZS5uYW1lKSYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKGUuc3RhcnQsKHM/XCJCaW5kaW5nIFwiOlwiQXNzaWduaW5nIHRvIFwiKStlLm5hbWUrXCIgaW4gc3RyaWN0IG1vZGVcIikscyYmKHQ9PT1mZSYmZS5uYW1lPT09XCJsZXRcIiYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKGUuc3RhcnQsXCJsZXQgaXMgZGlzYWxsb3dlZCBhcyBhIGxleGljYWxseSBib3VuZCBuYW1lXCIpLHImJihEKHIsZS5uYW1lKSYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKGUuc3RhcnQsXCJBcmd1bWVudCBuYW1lIGNsYXNoXCIpLHJbZS5uYW1lXT0hMCksdCE9PXZyJiZ0aGlzLmRlY2xhcmVOYW1lKGUubmFtZSx0LGUuc3RhcnQpKTticmVhaztjYXNlXCJDaGFpbkV4cHJlc3Npb25cIjp0aGlzLnJhaXNlUmVjb3ZlcmFibGUoZS5zdGFydCxcIk9wdGlvbmFsIGNoYWluaW5nIGNhbm5vdCBhcHBlYXIgaW4gbGVmdC1oYW5kIHNpZGVcIik7YnJlYWs7Y2FzZVwiTWVtYmVyRXhwcmVzc2lvblwiOnMmJnRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnN0YXJ0LFwiQmluZGluZyBtZW1iZXIgZXhwcmVzc2lvblwiKTticmVhaztjYXNlXCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiOnJldHVybiBzJiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUoZS5zdGFydCxcIkJpbmRpbmcgcGFyZW50aGVzaXplZCBleHByZXNzaW9uXCIpLHRoaXMuY2hlY2tMVmFsU2ltcGxlKGUuZXhwcmVzc2lvbix0LHIpO2RlZmF1bHQ6dGhpcy5yYWlzZShlLnN0YXJ0LChzP1wiQmluZGluZ1wiOlwiQXNzaWduaW5nIHRvXCIpK1wiIHJ2YWx1ZVwiKX19LHVlLmNoZWNrTFZhbFBhdHRlcm49ZnVuY3Rpb24oZSx0LHIpe3N3aXRjaCh0PT09dm9pZCAwJiYodD16ZSksZS50eXBlKXtjYXNlXCJPYmplY3RQYXR0ZXJuXCI6Zm9yKHZhciBzPTAsYT1lLnByb3BlcnRpZXM7czxhLmxlbmd0aDtzKz0xKXt2YXIgaD1hW3NdO3RoaXMuY2hlY2tMVmFsSW5uZXJQYXR0ZXJuKGgsdCxyKX1icmVhaztjYXNlXCJBcnJheVBhdHRlcm5cIjpmb3IodmFyIGM9MCxkPWUuZWxlbWVudHM7YzxkLmxlbmd0aDtjKz0xKXt2YXIgeD1kW2NdO3gmJnRoaXMuY2hlY2tMVmFsSW5uZXJQYXR0ZXJuKHgsdCxyKX1icmVhaztkZWZhdWx0OnRoaXMuY2hlY2tMVmFsU2ltcGxlKGUsdCxyKX19LHVlLmNoZWNrTFZhbElubmVyUGF0dGVybj1mdW5jdGlvbihlLHQscil7c3dpdGNoKHQ9PT12b2lkIDAmJih0PXplKSxlLnR5cGUpe2Nhc2VcIlByb3BlcnR5XCI6dGhpcy5jaGVja0xWYWxJbm5lclBhdHRlcm4oZS52YWx1ZSx0LHIpO2JyZWFrO2Nhc2VcIkFzc2lnbm1lbnRQYXR0ZXJuXCI6dGhpcy5jaGVja0xWYWxQYXR0ZXJuKGUubGVmdCx0LHIpO2JyZWFrO2Nhc2VcIlJlc3RFbGVtZW50XCI6dGhpcy5jaGVja0xWYWxQYXR0ZXJuKGUuYXJndW1lbnQsdCxyKTticmVhaztkZWZhdWx0OnRoaXMuY2hlY2tMVmFsUGF0dGVybihlLHQscil9fTt2YXIgbmU9ZnVuY3Rpb24odCxyLHMsYSxoKXt0aGlzLnRva2VuPXQsdGhpcy5pc0V4cHI9ISFyLHRoaXMucHJlc2VydmVTcGFjZT0hIXMsdGhpcy5vdmVycmlkZT1hLHRoaXMuZ2VuZXJhdG9yPSEhaH0sUT17Yl9zdGF0Om5ldyBuZShcIntcIiwhMSksYl9leHByOm5ldyBuZShcIntcIiwhMCksYl90bXBsOm5ldyBuZShcIiR7XCIsITEpLHBfc3RhdDpuZXcgbmUoXCIoXCIsITEpLHBfZXhwcjpuZXcgbmUoXCIoXCIsITApLHFfdG1wbDpuZXcgbmUoXCJgXCIsITAsITAsZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJ5UmVhZFRlbXBsYXRlVG9rZW4oKX0pLGZfc3RhdDpuZXcgbmUoXCJmdW5jdGlvblwiLCExKSxmX2V4cHI6bmV3IG5lKFwiZnVuY3Rpb25cIiwhMCksZl9leHByX2dlbjpuZXcgbmUoXCJmdW5jdGlvblwiLCEwLCExLG51bGwsITApLGZfZ2VuOm5ldyBuZShcImZ1bmN0aW9uXCIsITEsITEsbnVsbCwhMCl9LGtlPVoucHJvdG90eXBlO2tlLmluaXRpYWxDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuW1EuYl9zdGF0XX0sa2UuY3VyQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHRbdGhpcy5jb250ZXh0Lmxlbmd0aC0xXX0sa2UuYnJhY2VJc0Jsb2NrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3VyQ29udGV4dCgpO3JldHVybiB0PT09US5mX2V4cHJ8fHQ9PT1RLmZfc3RhdD8hMDplPT09aS5jb2xvbiYmKHQ9PT1RLmJfc3RhdHx8dD09PVEuYl9leHByKT8hdC5pc0V4cHI6ZT09PWkuX3JldHVybnx8ZT09PWkubmFtZSYmdGhpcy5leHByQWxsb3dlZD9fLnRlc3QodGhpcy5pbnB1dC5zbGljZSh0aGlzLmxhc3RUb2tFbmQsdGhpcy5zdGFydCkpOmU9PT1pLl9lbHNlfHxlPT09aS5zZW1pfHxlPT09aS5lb2Z8fGU9PT1pLnBhcmVuUnx8ZT09PWkuYXJyb3c/ITA6ZT09PWkuYnJhY2VMP3Q9PT1RLmJfc3RhdDplPT09aS5fdmFyfHxlPT09aS5fY29uc3R8fGU9PT1pLm5hbWU/ITE6IXRoaXMuZXhwckFsbG93ZWR9LGtlLmluR2VuZXJhdG9yQ29udGV4dD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmNvbnRleHQubGVuZ3RoLTE7ZT49MTtlLS0pe3ZhciB0PXRoaXMuY29udGV4dFtlXTtpZih0LnRva2VuPT09XCJmdW5jdGlvblwiKXJldHVybiB0LmdlbmVyYXRvcn1yZXR1cm4hMX0sa2UudXBkYXRlQ29udGV4dD1mdW5jdGlvbihlKXt2YXIgdCxyPXRoaXMudHlwZTtyLmtleXdvcmQmJmU9PT1pLmRvdD90aGlzLmV4cHJBbGxvd2VkPSExOih0PXIudXBkYXRlQ29udGV4dCk/dC5jYWxsKHRoaXMsZSk6dGhpcy5leHByQWxsb3dlZD1yLmJlZm9yZUV4cHJ9LGtlLm92ZXJyaWRlQ29udGV4dD1mdW5jdGlvbihlKXt0aGlzLmN1ckNvbnRleHQoKSE9PWUmJih0aGlzLmNvbnRleHRbdGhpcy5jb250ZXh0Lmxlbmd0aC0xXT1lKX0saS5wYXJlblIudXBkYXRlQ29udGV4dD1pLmJyYWNlUi51cGRhdGVDb250ZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy5jb250ZXh0Lmxlbmd0aD09PTEpe3RoaXMuZXhwckFsbG93ZWQ9ITA7cmV0dXJufXZhciBlPXRoaXMuY29udGV4dC5wb3AoKTtlPT09US5iX3N0YXQmJnRoaXMuY3VyQ29udGV4dCgpLnRva2VuPT09XCJmdW5jdGlvblwiJiYoZT10aGlzLmNvbnRleHQucG9wKCkpLHRoaXMuZXhwckFsbG93ZWQ9IWUuaXNFeHByfSxpLmJyYWNlTC51cGRhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe3RoaXMuY29udGV4dC5wdXNoKHRoaXMuYnJhY2VJc0Jsb2NrKGUpP1EuYl9zdGF0OlEuYl9leHByKSx0aGlzLmV4cHJBbGxvd2VkPSEwfSxpLmRvbGxhckJyYWNlTC51cGRhdGVDb250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5jb250ZXh0LnB1c2goUS5iX3RtcGwpLHRoaXMuZXhwckFsbG93ZWQ9ITB9LGkucGFyZW5MLnVwZGF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT09PWkuX2lmfHxlPT09aS5fZm9yfHxlPT09aS5fd2l0aHx8ZT09PWkuX3doaWxlO3RoaXMuY29udGV4dC5wdXNoKHQ/US5wX3N0YXQ6US5wX2V4cHIpLHRoaXMuZXhwckFsbG93ZWQ9ITB9LGkuaW5jRGVjLnVwZGF0ZUNvbnRleHQ9ZnVuY3Rpb24oKXt9LGkuX2Z1bmN0aW9uLnVwZGF0ZUNvbnRleHQ9aS5fY2xhc3MudXBkYXRlQ29udGV4dD1mdW5jdGlvbihlKXtlLmJlZm9yZUV4cHImJmUhPT1pLl9lbHNlJiYhKGU9PT1pLnNlbWkmJnRoaXMuY3VyQ29udGV4dCgpIT09US5wX3N0YXQpJiYhKGU9PT1pLl9yZXR1cm4mJl8udGVzdCh0aGlzLmlucHV0LnNsaWNlKHRoaXMubGFzdFRva0VuZCx0aGlzLnN0YXJ0KSkpJiYhKChlPT09aS5jb2xvbnx8ZT09PWkuYnJhY2VMKSYmdGhpcy5jdXJDb250ZXh0KCk9PT1RLmJfc3RhdCk/dGhpcy5jb250ZXh0LnB1c2goUS5mX2V4cHIpOnRoaXMuY29udGV4dC5wdXNoKFEuZl9zdGF0KSx0aGlzLmV4cHJBbGxvd2VkPSExfSxpLmJhY2tRdW90ZS51cGRhdGVDb250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5jdXJDb250ZXh0KCk9PT1RLnFfdG1wbD90aGlzLmNvbnRleHQucG9wKCk6dGhpcy5jb250ZXh0LnB1c2goUS5xX3RtcGwpLHRoaXMuZXhwckFsbG93ZWQ9ITF9LGkuc3Rhci51cGRhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe2lmKGU9PT1pLl9mdW5jdGlvbil7dmFyIHQ9dGhpcy5jb250ZXh0Lmxlbmd0aC0xO3RoaXMuY29udGV4dFt0XT09PVEuZl9leHByP3RoaXMuY29udGV4dFt0XT1RLmZfZXhwcl9nZW46dGhpcy5jb250ZXh0W3RdPVEuZl9nZW59dGhpcy5leHByQWxsb3dlZD0hMH0saS5uYW1lLnVwZGF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj02JiZlIT09aS5kb3QmJih0aGlzLnZhbHVlPT09XCJvZlwiJiYhdGhpcy5leHByQWxsb3dlZHx8dGhpcy52YWx1ZT09PVwieWllbGRcIiYmdGhpcy5pbkdlbmVyYXRvckNvbnRleHQoKSkmJih0PSEwKSx0aGlzLmV4cHJBbGxvd2VkPXR9O3ZhciB6PVoucHJvdG90eXBlO3ouY2hlY2tQcm9wQ2xhc2g9ZnVuY3Rpb24oZSx0LHIpe2lmKCEodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj05JiZlLnR5cGU9PT1cIlNwcmVhZEVsZW1lbnRcIikmJiEodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj02JiYoZS5jb21wdXRlZHx8ZS5tZXRob2R8fGUuc2hvcnRoYW5kKSkpe3ZhciBzPWUua2V5LGE7c3dpdGNoKHMudHlwZSl7Y2FzZVwiSWRlbnRpZmllclwiOmE9cy5uYW1lO2JyZWFrO2Nhc2VcIkxpdGVyYWxcIjphPVN0cmluZyhzLnZhbHVlKTticmVhaztkZWZhdWx0OnJldHVybn12YXIgaD1lLmtpbmQ7aWYodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj02KXthPT09XCJfX3Byb3RvX19cIiYmaD09PVwiaW5pdFwiJiYodC5wcm90byYmKHI/ci5kb3VibGVQcm90bzwwJiYoci5kb3VibGVQcm90bz1zLnN0YXJ0KTp0aGlzLnJhaXNlUmVjb3ZlcmFibGUocy5zdGFydCxcIlJlZGVmaW5pdGlvbiBvZiBfX3Byb3RvX18gcHJvcGVydHlcIikpLHQucHJvdG89ITApO3JldHVybn1hPVwiJFwiK2E7dmFyIGM9dFthXTtpZihjKXt2YXIgZDtoPT09XCJpbml0XCI/ZD10aGlzLnN0cmljdCYmYy5pbml0fHxjLmdldHx8Yy5zZXQ6ZD1jLmluaXR8fGNbaF0sZCYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKHMuc3RhcnQsXCJSZWRlZmluaXRpb24gb2YgcHJvcGVydHlcIil9ZWxzZSBjPXRbYV09e2luaXQ6ITEsZ2V0OiExLHNldDohMX07Y1toXT0hMH19LHoucGFyc2VFeHByZXNzaW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5zdGFydCxzPXRoaXMuc3RhcnRMb2MsYT10aGlzLnBhcnNlTWF5YmVBc3NpZ24oZSx0KTtpZih0aGlzLnR5cGU9PT1pLmNvbW1hKXt2YXIgaD10aGlzLnN0YXJ0Tm9kZUF0KHIscyk7Zm9yKGguZXhwcmVzc2lvbnM9W2FdO3RoaXMuZWF0KGkuY29tbWEpOyloLmV4cHJlc3Npb25zLnB1c2godGhpcy5wYXJzZU1heWJlQXNzaWduKGUsdCkpO3JldHVybiB0aGlzLmZpbmlzaE5vZGUoaCxcIlNlcXVlbmNlRXhwcmVzc2lvblwiKX1yZXR1cm4gYX0sei5wYXJzZU1heWJlQXNzaWduPWZ1bmN0aW9uKGUsdCxyKXtpZih0aGlzLmlzQ29udGV4dHVhbChcInlpZWxkXCIpKXtpZih0aGlzLmluR2VuZXJhdG9yKXJldHVybiB0aGlzLnBhcnNlWWllbGQoZSk7dGhpcy5leHByQWxsb3dlZD0hMX12YXIgcz0hMSxhPS0xLGg9LTEsYz0tMTt0PyhhPXQucGFyZW50aGVzaXplZEFzc2lnbixoPXQudHJhaWxpbmdDb21tYSxjPXQuZG91YmxlUHJvdG8sdC5wYXJlbnRoZXNpemVkQXNzaWduPXQudHJhaWxpbmdDb21tYT0tMSk6KHQ9bmV3IFdlLHM9ITApO3ZhciBkPXRoaXMuc3RhcnQseD10aGlzLnN0YXJ0TG9jOyh0aGlzLnR5cGU9PT1pLnBhcmVuTHx8dGhpcy50eXBlPT09aS5uYW1lKSYmKHRoaXMucG90ZW50aWFsQXJyb3dBdD10aGlzLnN0YXJ0LHRoaXMucG90ZW50aWFsQXJyb3dJbkZvckF3YWl0PWU9PT1cImF3YWl0XCIpO3ZhciBVPXRoaXMucGFyc2VNYXliZUNvbmRpdGlvbmFsKGUsdCk7aWYociYmKFU9ci5jYWxsKHRoaXMsVSxkLHgpKSx0aGlzLnR5cGUuaXNBc3NpZ24pe3ZhciBXPXRoaXMuc3RhcnROb2RlQXQoZCx4KTtyZXR1cm4gVy5vcGVyYXRvcj10aGlzLnZhbHVlLHRoaXMudHlwZT09PWkuZXEmJihVPXRoaXMudG9Bc3NpZ25hYmxlKFUsITEsdCkpLHN8fCh0LnBhcmVudGhlc2l6ZWRBc3NpZ249dC50cmFpbGluZ0NvbW1hPXQuZG91YmxlUHJvdG89LTEpLHQuc2hvcnRoYW5kQXNzaWduPj1VLnN0YXJ0JiYodC5zaG9ydGhhbmRBc3NpZ249LTEpLHRoaXMudHlwZT09PWkuZXE/dGhpcy5jaGVja0xWYWxQYXR0ZXJuKFUpOnRoaXMuY2hlY2tMVmFsU2ltcGxlKFUpLFcubGVmdD1VLHRoaXMubmV4dCgpLFcucmlnaHQ9dGhpcy5wYXJzZU1heWJlQXNzaWduKGUpLGM+LTEmJih0LmRvdWJsZVByb3RvPWMpLHRoaXMuZmluaXNoTm9kZShXLFwiQXNzaWdubWVudEV4cHJlc3Npb25cIil9ZWxzZSBzJiZ0aGlzLmNoZWNrRXhwcmVzc2lvbkVycm9ycyh0LCEwKTtyZXR1cm4gYT4tMSYmKHQucGFyZW50aGVzaXplZEFzc2lnbj1hKSxoPi0xJiYodC50cmFpbGluZ0NvbW1hPWgpLFV9LHoucGFyc2VNYXliZUNvbmRpdGlvbmFsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5zdGFydCxzPXRoaXMuc3RhcnRMb2MsYT10aGlzLnBhcnNlRXhwck9wcyhlLHQpO2lmKHRoaXMuY2hlY2tFeHByZXNzaW9uRXJyb3JzKHQpKXJldHVybiBhO2lmKHRoaXMuZWF0KGkucXVlc3Rpb24pKXt2YXIgaD10aGlzLnN0YXJ0Tm9kZUF0KHIscyk7cmV0dXJuIGgudGVzdD1hLGguY29uc2VxdWVudD10aGlzLnBhcnNlTWF5YmVBc3NpZ24oKSx0aGlzLmV4cGVjdChpLmNvbG9uKSxoLmFsdGVybmF0ZT10aGlzLnBhcnNlTWF5YmVBc3NpZ24oZSksdGhpcy5maW5pc2hOb2RlKGgsXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIil9cmV0dXJuIGF9LHoucGFyc2VFeHByT3BzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5zdGFydCxzPXRoaXMuc3RhcnRMb2MsYT10aGlzLnBhcnNlTWF5YmVVbmFyeSh0LCExLCExLGUpO3JldHVybiB0aGlzLmNoZWNrRXhwcmVzc2lvbkVycm9ycyh0KXx8YS5zdGFydD09PXImJmEudHlwZT09PVwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIj9hOnRoaXMucGFyc2VFeHByT3AoYSxyLHMsLTEsZSl9LHoucGFyc2VFeHByT3A9ZnVuY3Rpb24oZSx0LHIscyxhKXt2YXIgaD10aGlzLnR5cGUuYmlub3A7aWYoaCE9bnVsbCYmKCFhfHx0aGlzLnR5cGUhPT1pLl9pbikmJmg+cyl7dmFyIGM9dGhpcy50eXBlPT09aS5sb2dpY2FsT1J8fHRoaXMudHlwZT09PWkubG9naWNhbEFORCxkPXRoaXMudHlwZT09PWkuY29hbGVzY2U7ZCYmKGg9aS5sb2dpY2FsQU5ELmJpbm9wKTt2YXIgeD10aGlzLnZhbHVlO3RoaXMubmV4dCgpO3ZhciBVPXRoaXMuc3RhcnQsVz10aGlzLnN0YXJ0TG9jLHJlPXRoaXMucGFyc2VFeHByT3AodGhpcy5wYXJzZU1heWJlVW5hcnkobnVsbCwhMSwhMSxhKSxVLFcsaCxhKSxiZT10aGlzLmJ1aWxkQmluYXJ5KHQscixlLHJlLHgsY3x8ZCk7cmV0dXJuKGMmJnRoaXMudHlwZT09PWkuY29hbGVzY2V8fGQmJih0aGlzLnR5cGU9PT1pLmxvZ2ljYWxPUnx8dGhpcy50eXBlPT09aS5sb2dpY2FsQU5EKSkmJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0aGlzLnN0YXJ0LFwiTG9naWNhbCBleHByZXNzaW9ucyBhbmQgY29hbGVzY2UgZXhwcmVzc2lvbnMgY2Fubm90IGJlIG1peGVkLiBXcmFwIGVpdGhlciBieSBwYXJlbnRoZXNlc1wiKSx0aGlzLnBhcnNlRXhwck9wKGJlLHQscixzLGEpfXJldHVybiBlfSx6LmJ1aWxkQmluYXJ5PWZ1bmN0aW9uKGUsdCxyLHMsYSxoKXtzLnR5cGU9PT1cIlByaXZhdGVJZGVudGlmaWVyXCImJnRoaXMucmFpc2Uocy5zdGFydCxcIlByaXZhdGUgaWRlbnRpZmllciBjYW4gb25seSBiZSBsZWZ0IHNpZGUgb2YgYmluYXJ5IGV4cHJlc3Npb25cIik7dmFyIGM9dGhpcy5zdGFydE5vZGVBdChlLHQpO3JldHVybiBjLmxlZnQ9cixjLm9wZXJhdG9yPWEsYy5yaWdodD1zLHRoaXMuZmluaXNoTm9kZShjLGg/XCJMb2dpY2FsRXhwcmVzc2lvblwiOlwiQmluYXJ5RXhwcmVzc2lvblwiKX0sei5wYXJzZU1heWJlVW5hcnk9ZnVuY3Rpb24oZSx0LHIscyl7dmFyIGE9dGhpcy5zdGFydCxoPXRoaXMuc3RhcnRMb2MsYztpZih0aGlzLmlzQ29udGV4dHVhbChcImF3YWl0XCIpJiZ0aGlzLmNhbkF3YWl0KWM9dGhpcy5wYXJzZUF3YWl0KHMpLHQ9ITA7ZWxzZSBpZih0aGlzLnR5cGUucHJlZml4KXt2YXIgZD10aGlzLnN0YXJ0Tm9kZSgpLHg9dGhpcy50eXBlPT09aS5pbmNEZWM7ZC5vcGVyYXRvcj10aGlzLnZhbHVlLGQucHJlZml4PSEwLHRoaXMubmV4dCgpLGQuYXJndW1lbnQ9dGhpcy5wYXJzZU1heWJlVW5hcnkobnVsbCwhMCx4LHMpLHRoaXMuY2hlY2tFeHByZXNzaW9uRXJyb3JzKGUsITApLHg/dGhpcy5jaGVja0xWYWxTaW1wbGUoZC5hcmd1bWVudCk6dGhpcy5zdHJpY3QmJmQub3BlcmF0b3I9PT1cImRlbGV0ZVwiJiZkLmFyZ3VtZW50LnR5cGU9PT1cIklkZW50aWZpZXJcIj90aGlzLnJhaXNlUmVjb3ZlcmFibGUoZC5zdGFydCxcIkRlbGV0aW5nIGxvY2FsIHZhcmlhYmxlIGluIHN0cmljdCBtb2RlXCIpOmQub3BlcmF0b3I9PT1cImRlbGV0ZVwiJiZ4cihkLmFyZ3VtZW50KT90aGlzLnJhaXNlUmVjb3ZlcmFibGUoZC5zdGFydCxcIlByaXZhdGUgZmllbGRzIGNhbiBub3QgYmUgZGVsZXRlZFwiKTp0PSEwLGM9dGhpcy5maW5pc2hOb2RlKGQseD9cIlVwZGF0ZUV4cHJlc3Npb25cIjpcIlVuYXJ5RXhwcmVzc2lvblwiKX1lbHNlIGlmKCF0JiZ0aGlzLnR5cGU9PT1pLnByaXZhdGVJZCkoc3x8dGhpcy5wcml2YXRlTmFtZVN0YWNrLmxlbmd0aD09PTApJiZ0aGlzLnVuZXhwZWN0ZWQoKSxjPXRoaXMucGFyc2VQcml2YXRlSWRlbnQoKSx0aGlzLnR5cGUhPT1pLl9pbiYmdGhpcy51bmV4cGVjdGVkKCk7ZWxzZXtpZihjPXRoaXMucGFyc2VFeHByU3Vic2NyaXB0cyhlLHMpLHRoaXMuY2hlY2tFeHByZXNzaW9uRXJyb3JzKGUpKXJldHVybiBjO2Zvcig7dGhpcy50eXBlLnBvc3RmaXgmJiF0aGlzLmNhbkluc2VydFNlbWljb2xvbigpOyl7dmFyIFU9dGhpcy5zdGFydE5vZGVBdChhLGgpO1Uub3BlcmF0b3I9dGhpcy52YWx1ZSxVLnByZWZpeD0hMSxVLmFyZ3VtZW50PWMsdGhpcy5jaGVja0xWYWxTaW1wbGUoYyksdGhpcy5uZXh0KCksYz10aGlzLmZpbmlzaE5vZGUoVSxcIlVwZGF0ZUV4cHJlc3Npb25cIil9fWlmKCFyJiZ0aGlzLmVhdChpLnN0YXJzdGFyKSlpZih0KXRoaXMudW5leHBlY3RlZCh0aGlzLmxhc3RUb2tTdGFydCk7ZWxzZSByZXR1cm4gdGhpcy5idWlsZEJpbmFyeShhLGgsYyx0aGlzLnBhcnNlTWF5YmVVbmFyeShudWxsLCExLCExLHMpLFwiKipcIiwhMSk7ZWxzZSByZXR1cm4gY307ZnVuY3Rpb24geHIoZSl7cmV0dXJuIGUudHlwZT09PVwiTWVtYmVyRXhwcmVzc2lvblwiJiZlLnByb3BlcnR5LnR5cGU9PT1cIlByaXZhdGVJZGVudGlmaWVyXCJ8fGUudHlwZT09PVwiQ2hhaW5FeHByZXNzaW9uXCImJnhyKGUuZXhwcmVzc2lvbil9ei5wYXJzZUV4cHJTdWJzY3JpcHRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5zdGFydCxzPXRoaXMuc3RhcnRMb2MsYT10aGlzLnBhcnNlRXhwckF0b20oZSx0KTtpZihhLnR5cGU9PT1cIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCImJnRoaXMuaW5wdXQuc2xpY2UodGhpcy5sYXN0VG9rU3RhcnQsdGhpcy5sYXN0VG9rRW5kKSE9PVwiKVwiKXJldHVybiBhO3ZhciBoPXRoaXMucGFyc2VTdWJzY3JpcHRzKGEscixzLCExLHQpO3JldHVybiBlJiZoLnR5cGU9PT1cIk1lbWJlckV4cHJlc3Npb25cIiYmKGUucGFyZW50aGVzaXplZEFzc2lnbj49aC5zdGFydCYmKGUucGFyZW50aGVzaXplZEFzc2lnbj0tMSksZS5wYXJlbnRoZXNpemVkQmluZD49aC5zdGFydCYmKGUucGFyZW50aGVzaXplZEJpbmQ9LTEpLGUudHJhaWxpbmdDb21tYT49aC5zdGFydCYmKGUudHJhaWxpbmdDb21tYT0tMSkpLGh9LHoucGFyc2VTdWJzY3JpcHRzPWZ1bmN0aW9uKGUsdCxyLHMsYSl7Zm9yKHZhciBoPXRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49OCYmZS50eXBlPT09XCJJZGVudGlmaWVyXCImJmUubmFtZT09PVwiYXN5bmNcIiYmdGhpcy5sYXN0VG9rRW5kPT09ZS5lbmQmJiF0aGlzLmNhbkluc2VydFNlbWljb2xvbigpJiZlLmVuZC1lLnN0YXJ0PT09NSYmdGhpcy5wb3RlbnRpYWxBcnJvd0F0PT09ZS5zdGFydCxjPSExOzspe3ZhciBkPXRoaXMucGFyc2VTdWJzY3JpcHQoZSx0LHIscyxoLGMsYSk7aWYoZC5vcHRpb25hbCYmKGM9ITApLGQ9PT1lfHxkLnR5cGU9PT1cIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIpe2lmKGMpe3ZhciB4PXRoaXMuc3RhcnROb2RlQXQodCxyKTt4LmV4cHJlc3Npb249ZCxkPXRoaXMuZmluaXNoTm9kZSh4LFwiQ2hhaW5FeHByZXNzaW9uXCIpfXJldHVybiBkfWU9ZH19LHoucGFyc2VTdWJzY3JpcHQ9ZnVuY3Rpb24oZSx0LHIscyxhLGgsYyl7dmFyIGQ9dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj0xMSx4PWQmJnRoaXMuZWF0KGkucXVlc3Rpb25Eb3QpO3MmJngmJnRoaXMucmFpc2UodGhpcy5sYXN0VG9rU3RhcnQsXCJPcHRpb25hbCBjaGFpbmluZyBjYW5ub3QgYXBwZWFyIGluIHRoZSBjYWxsZWUgb2YgbmV3IGV4cHJlc3Npb25zXCIpO3ZhciBVPXRoaXMuZWF0KGkuYnJhY2tldEwpO2lmKFV8fHgmJnRoaXMudHlwZSE9PWkucGFyZW5MJiZ0aGlzLnR5cGUhPT1pLmJhY2tRdW90ZXx8dGhpcy5lYXQoaS5kb3QpKXt2YXIgVz10aGlzLnN0YXJ0Tm9kZUF0KHQscik7Vy5vYmplY3Q9ZSxVPyhXLnByb3BlcnR5PXRoaXMucGFyc2VFeHByZXNzaW9uKCksdGhpcy5leHBlY3QoaS5icmFja2V0UikpOnRoaXMudHlwZT09PWkucHJpdmF0ZUlkJiZlLnR5cGUhPT1cIlN1cGVyXCI/Vy5wcm9wZXJ0eT10aGlzLnBhcnNlUHJpdmF0ZUlkZW50KCk6Vy5wcm9wZXJ0eT10aGlzLnBhcnNlSWRlbnQodGhpcy5vcHRpb25zLmFsbG93UmVzZXJ2ZWQhPT1cIm5ldmVyXCIpLFcuY29tcHV0ZWQ9ISFVLGQmJihXLm9wdGlvbmFsPXgpLGU9dGhpcy5maW5pc2hOb2RlKFcsXCJNZW1iZXJFeHByZXNzaW9uXCIpfWVsc2UgaWYoIXMmJnRoaXMuZWF0KGkucGFyZW5MKSl7dmFyIHJlPW5ldyBXZSxiZT10aGlzLnlpZWxkUG9zLGplPXRoaXMuYXdhaXRQb3MsRmU9dGhpcy5hd2FpdElkZW50UG9zO3RoaXMueWllbGRQb3M9MCx0aGlzLmF3YWl0UG9zPTAsdGhpcy5hd2FpdElkZW50UG9zPTA7dmFyIFFlPXRoaXMucGFyc2VFeHByTGlzdChpLnBhcmVuUix0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTgsITEscmUpO2lmKGEmJiF4JiYhdGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKSYmdGhpcy5lYXQoaS5hcnJvdykpcmV0dXJuIHRoaXMuY2hlY2tQYXR0ZXJuRXJyb3JzKHJlLCExKSx0aGlzLmNoZWNrWWllbGRBd2FpdEluRGVmYXVsdFBhcmFtcygpLHRoaXMuYXdhaXRJZGVudFBvcz4wJiZ0aGlzLnJhaXNlKHRoaXMuYXdhaXRJZGVudFBvcyxcIkNhbm5vdCB1c2UgJ2F3YWl0JyBhcyBpZGVudGlmaWVyIGluc2lkZSBhbiBhc3luYyBmdW5jdGlvblwiKSx0aGlzLnlpZWxkUG9zPWJlLHRoaXMuYXdhaXRQb3M9amUsdGhpcy5hd2FpdElkZW50UG9zPUZlLHRoaXMucGFyc2VBcnJvd0V4cHJlc3Npb24odGhpcy5zdGFydE5vZGVBdCh0LHIpLFFlLCEwLGMpO3RoaXMuY2hlY2tFeHByZXNzaW9uRXJyb3JzKHJlLCEwKSx0aGlzLnlpZWxkUG9zPWJlfHx0aGlzLnlpZWxkUG9zLHRoaXMuYXdhaXRQb3M9amV8fHRoaXMuYXdhaXRQb3MsdGhpcy5hd2FpdElkZW50UG9zPUZlfHx0aGlzLmF3YWl0SWRlbnRQb3M7dmFyIEJlPXRoaXMuc3RhcnROb2RlQXQodCxyKTtCZS5jYWxsZWU9ZSxCZS5hcmd1bWVudHM9UWUsZCYmKEJlLm9wdGlvbmFsPXgpLGU9dGhpcy5maW5pc2hOb2RlKEJlLFwiQ2FsbEV4cHJlc3Npb25cIil9ZWxzZSBpZih0aGlzLnR5cGU9PT1pLmJhY2tRdW90ZSl7KHh8fGgpJiZ0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCJPcHRpb25hbCBjaGFpbmluZyBjYW5ub3QgYXBwZWFyIGluIHRoZSB0YWcgb2YgdGFnZ2VkIHRlbXBsYXRlIGV4cHJlc3Npb25zXCIpO3ZhciBUZT10aGlzLnN0YXJ0Tm9kZUF0KHQscik7VGUudGFnPWUsVGUucXVhc2k9dGhpcy5wYXJzZVRlbXBsYXRlKHtpc1RhZ2dlZDohMH0pLGU9dGhpcy5maW5pc2hOb2RlKFRlLFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCIpfXJldHVybiBlfSx6LnBhcnNlRXhwckF0b209ZnVuY3Rpb24oZSx0KXt0aGlzLnR5cGU9PT1pLnNsYXNoJiZ0aGlzLnJlYWRSZWdleHAoKTt2YXIgcixzPXRoaXMucG90ZW50aWFsQXJyb3dBdD09PXRoaXMuc3RhcnQ7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSBpLl9zdXBlcjpyZXR1cm4gdGhpcy5hbGxvd1N1cGVyfHx0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCInc3VwZXInIGtleXdvcmQgb3V0c2lkZSBhIG1ldGhvZFwiKSxyPXRoaXMuc3RhcnROb2RlKCksdGhpcy5uZXh0KCksdGhpcy50eXBlPT09aS5wYXJlbkwmJiF0aGlzLmFsbG93RGlyZWN0U3VwZXImJnRoaXMucmFpc2Uoci5zdGFydCxcInN1cGVyKCkgY2FsbCBvdXRzaWRlIGNvbnN0cnVjdG9yIG9mIGEgc3ViY2xhc3NcIiksdGhpcy50eXBlIT09aS5kb3QmJnRoaXMudHlwZSE9PWkuYnJhY2tldEwmJnRoaXMudHlwZSE9PWkucGFyZW5MJiZ0aGlzLnVuZXhwZWN0ZWQoKSx0aGlzLmZpbmlzaE5vZGUocixcIlN1cGVyXCIpO2Nhc2UgaS5fdGhpczpyZXR1cm4gcj10aGlzLnN0YXJ0Tm9kZSgpLHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShyLFwiVGhpc0V4cHJlc3Npb25cIik7Y2FzZSBpLm5hbWU6dmFyIGE9dGhpcy5zdGFydCxoPXRoaXMuc3RhcnRMb2MsYz10aGlzLmNvbnRhaW5zRXNjLGQ9dGhpcy5wYXJzZUlkZW50KCExKTtpZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTgmJiFjJiZkLm5hbWU9PT1cImFzeW5jXCImJiF0aGlzLmNhbkluc2VydFNlbWljb2xvbigpJiZ0aGlzLmVhdChpLl9mdW5jdGlvbikpcmV0dXJuIHRoaXMub3ZlcnJpZGVDb250ZXh0KFEuZl9leHByKSx0aGlzLnBhcnNlRnVuY3Rpb24odGhpcy5zdGFydE5vZGVBdChhLGgpLDAsITEsITAsdCk7aWYocyYmIXRoaXMuY2FuSW5zZXJ0U2VtaWNvbG9uKCkpe2lmKHRoaXMuZWF0KGkuYXJyb3cpKXJldHVybiB0aGlzLnBhcnNlQXJyb3dFeHByZXNzaW9uKHRoaXMuc3RhcnROb2RlQXQoYSxoKSxbZF0sITEsdCk7aWYodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj04JiZkLm5hbWU9PT1cImFzeW5jXCImJnRoaXMudHlwZT09PWkubmFtZSYmIWMmJighdGhpcy5wb3RlbnRpYWxBcnJvd0luRm9yQXdhaXR8fHRoaXMudmFsdWUhPT1cIm9mXCJ8fHRoaXMuY29udGFpbnNFc2MpKXJldHVybiBkPXRoaXMucGFyc2VJZGVudCghMSksKHRoaXMuY2FuSW5zZXJ0U2VtaWNvbG9uKCl8fCF0aGlzLmVhdChpLmFycm93KSkmJnRoaXMudW5leHBlY3RlZCgpLHRoaXMucGFyc2VBcnJvd0V4cHJlc3Npb24odGhpcy5zdGFydE5vZGVBdChhLGgpLFtkXSwhMCx0KX1yZXR1cm4gZDtjYXNlIGkucmVnZXhwOnZhciB4PXRoaXMudmFsdWU7cmV0dXJuIHI9dGhpcy5wYXJzZUxpdGVyYWwoeC52YWx1ZSksci5yZWdleD17cGF0dGVybjp4LnBhdHRlcm4sZmxhZ3M6eC5mbGFnc30scjtjYXNlIGkubnVtOmNhc2UgaS5zdHJpbmc6cmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsKHRoaXMudmFsdWUpO2Nhc2UgaS5fbnVsbDpjYXNlIGkuX3RydWU6Y2FzZSBpLl9mYWxzZTpyZXR1cm4gcj10aGlzLnN0YXJ0Tm9kZSgpLHIudmFsdWU9dGhpcy50eXBlPT09aS5fbnVsbD9udWxsOnRoaXMudHlwZT09PWkuX3RydWUsci5yYXc9dGhpcy50eXBlLmtleXdvcmQsdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKHIsXCJMaXRlcmFsXCIpO2Nhc2UgaS5wYXJlbkw6dmFyIFU9dGhpcy5zdGFydCxXPXRoaXMucGFyc2VQYXJlbkFuZERpc3Rpbmd1aXNoRXhwcmVzc2lvbihzLHQpO3JldHVybiBlJiYoZS5wYXJlbnRoZXNpemVkQXNzaWduPDAmJiF0aGlzLmlzU2ltcGxlQXNzaWduVGFyZ2V0KFcpJiYoZS5wYXJlbnRoZXNpemVkQXNzaWduPVUpLGUucGFyZW50aGVzaXplZEJpbmQ8MCYmKGUucGFyZW50aGVzaXplZEJpbmQ9VSkpLFc7Y2FzZSBpLmJyYWNrZXRMOnJldHVybiByPXRoaXMuc3RhcnROb2RlKCksdGhpcy5uZXh0KCksci5lbGVtZW50cz10aGlzLnBhcnNlRXhwckxpc3QoaS5icmFja2V0UiwhMCwhMCxlKSx0aGlzLmZpbmlzaE5vZGUocixcIkFycmF5RXhwcmVzc2lvblwiKTtjYXNlIGkuYnJhY2VMOnJldHVybiB0aGlzLm92ZXJyaWRlQ29udGV4dChRLmJfZXhwciksdGhpcy5wYXJzZU9iaighMSxlKTtjYXNlIGkuX2Z1bmN0aW9uOnJldHVybiByPXRoaXMuc3RhcnROb2RlKCksdGhpcy5uZXh0KCksdGhpcy5wYXJzZUZ1bmN0aW9uKHIsMCk7Y2FzZSBpLl9jbGFzczpyZXR1cm4gdGhpcy5wYXJzZUNsYXNzKHRoaXMuc3RhcnROb2RlKCksITEpO2Nhc2UgaS5fbmV3OnJldHVybiB0aGlzLnBhcnNlTmV3KCk7Y2FzZSBpLmJhY2tRdW90ZTpyZXR1cm4gdGhpcy5wYXJzZVRlbXBsYXRlKCk7Y2FzZSBpLl9pbXBvcnQ6cmV0dXJuIHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49MTE/dGhpcy5wYXJzZUV4cHJJbXBvcnQoKTp0aGlzLnVuZXhwZWN0ZWQoKTtkZWZhdWx0OnRoaXMudW5leHBlY3RlZCgpfX0sei5wYXJzZUV4cHJJbXBvcnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXJ0Tm9kZSgpO3RoaXMuY29udGFpbnNFc2MmJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0aGlzLnN0YXJ0LFwiRXNjYXBlIHNlcXVlbmNlIGluIGtleXdvcmQgaW1wb3J0XCIpO3ZhciB0PXRoaXMucGFyc2VJZGVudCghMCk7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSBpLnBhcmVuTDpyZXR1cm4gdGhpcy5wYXJzZUR5bmFtaWNJbXBvcnQoZSk7Y2FzZSBpLmRvdDpyZXR1cm4gZS5tZXRhPXQsdGhpcy5wYXJzZUltcG9ydE1ldGEoZSk7ZGVmYXVsdDp0aGlzLnVuZXhwZWN0ZWQoKX19LHoucGFyc2VEeW5hbWljSW1wb3J0PWZ1bmN0aW9uKGUpe2lmKHRoaXMubmV4dCgpLGUuc291cmNlPXRoaXMucGFyc2VNYXliZUFzc2lnbigpLCF0aGlzLmVhdChpLnBhcmVuUikpe3ZhciB0PXRoaXMuc3RhcnQ7dGhpcy5lYXQoaS5jb21tYSkmJnRoaXMuZWF0KGkucGFyZW5SKT90aGlzLnJhaXNlUmVjb3ZlcmFibGUodCxcIlRyYWlsaW5nIGNvbW1hIGlzIG5vdCBhbGxvd2VkIGluIGltcG9ydCgpXCIpOnRoaXMudW5leHBlY3RlZCh0KX1yZXR1cm4gdGhpcy5maW5pc2hOb2RlKGUsXCJJbXBvcnRFeHByZXNzaW9uXCIpfSx6LnBhcnNlSW1wb3J0TWV0YT1mdW5jdGlvbihlKXt0aGlzLm5leHQoKTt2YXIgdD10aGlzLmNvbnRhaW5zRXNjO3JldHVybiBlLnByb3BlcnR5PXRoaXMucGFyc2VJZGVudCghMCksZS5wcm9wZXJ0eS5uYW1lIT09XCJtZXRhXCImJnRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnByb3BlcnR5LnN0YXJ0LFwiVGhlIG9ubHkgdmFsaWQgbWV0YSBwcm9wZXJ0eSBmb3IgaW1wb3J0IGlzICdpbXBvcnQubWV0YSdcIiksdCYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKGUuc3RhcnQsXCInaW1wb3J0Lm1ldGEnIG11c3Qgbm90IGNvbnRhaW4gZXNjYXBlZCBjaGFyYWN0ZXJzXCIpLHRoaXMub3B0aW9ucy5zb3VyY2VUeXBlIT09XCJtb2R1bGVcIiYmIXRoaXMub3B0aW9ucy5hbGxvd0ltcG9ydEV4cG9ydEV2ZXJ5d2hlcmUmJnRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnN0YXJ0LFwiQ2Fubm90IHVzZSAnaW1wb3J0Lm1ldGEnIG91dHNpZGUgYSBtb2R1bGVcIiksdGhpcy5maW5pc2hOb2RlKGUsXCJNZXRhUHJvcGVydHlcIil9LHoucGFyc2VMaXRlcmFsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHQudmFsdWU9ZSx0LnJhdz10aGlzLmlucHV0LnNsaWNlKHRoaXMuc3RhcnQsdGhpcy5lbmQpLHQucmF3LmNoYXJDb2RlQXQodC5yYXcubGVuZ3RoLTEpPT09MTEwJiYodC5iaWdpbnQ9dC5yYXcuc2xpY2UoMCwtMSkucmVwbGFjZSgvXy9nLFwiXCIpKSx0aGlzLm5leHQoKSx0aGlzLmZpbmlzaE5vZGUodCxcIkxpdGVyYWxcIil9LHoucGFyc2VQYXJlbkV4cHJlc3Npb249ZnVuY3Rpb24oKXt0aGlzLmV4cGVjdChpLnBhcmVuTCk7dmFyIGU9dGhpcy5wYXJzZUV4cHJlc3Npb24oKTtyZXR1cm4gdGhpcy5leHBlY3QoaS5wYXJlblIpLGV9LHoucGFyc2VQYXJlbkFuZERpc3Rpbmd1aXNoRXhwcmVzc2lvbj1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuc3RhcnQscz10aGlzLnN0YXJ0TG9jLGEsaD10aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTg7aWYodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj02KXt0aGlzLm5leHQoKTt2YXIgYz10aGlzLnN0YXJ0LGQ9dGhpcy5zdGFydExvYyx4PVtdLFU9ITAsVz0hMSxyZT1uZXcgV2UsYmU9dGhpcy55aWVsZFBvcyxqZT10aGlzLmF3YWl0UG9zLEZlO2Zvcih0aGlzLnlpZWxkUG9zPTAsdGhpcy5hd2FpdFBvcz0wO3RoaXMudHlwZSE9PWkucGFyZW5SOylpZihVP1U9ITE6dGhpcy5leHBlY3QoaS5jb21tYSksaCYmdGhpcy5hZnRlclRyYWlsaW5nQ29tbWEoaS5wYXJlblIsITApKXtXPSEwO2JyZWFrfWVsc2UgaWYodGhpcy50eXBlPT09aS5lbGxpcHNpcyl7RmU9dGhpcy5zdGFydCx4LnB1c2godGhpcy5wYXJzZVBhcmVuSXRlbSh0aGlzLnBhcnNlUmVzdEJpbmRpbmcoKSkpLHRoaXMudHlwZT09PWkuY29tbWEmJnRoaXMucmFpc2UodGhpcy5zdGFydCxcIkNvbW1hIGlzIG5vdCBwZXJtaXR0ZWQgYWZ0ZXIgdGhlIHJlc3QgZWxlbWVudFwiKTticmVha31lbHNlIHgucHVzaCh0aGlzLnBhcnNlTWF5YmVBc3NpZ24oITEscmUsdGhpcy5wYXJzZVBhcmVuSXRlbSkpO3ZhciBRZT10aGlzLmxhc3RUb2tFbmQsQmU9dGhpcy5sYXN0VG9rRW5kTG9jO2lmKHRoaXMuZXhwZWN0KGkucGFyZW5SKSxlJiYhdGhpcy5jYW5JbnNlcnRTZW1pY29sb24oKSYmdGhpcy5lYXQoaS5hcnJvdykpcmV0dXJuIHRoaXMuY2hlY2tQYXR0ZXJuRXJyb3JzKHJlLCExKSx0aGlzLmNoZWNrWWllbGRBd2FpdEluRGVmYXVsdFBhcmFtcygpLHRoaXMueWllbGRQb3M9YmUsdGhpcy5hd2FpdFBvcz1qZSx0aGlzLnBhcnNlUGFyZW5BcnJvd0xpc3QocixzLHgsdCk7KCF4Lmxlbmd0aHx8VykmJnRoaXMudW5leHBlY3RlZCh0aGlzLmxhc3RUb2tTdGFydCksRmUmJnRoaXMudW5leHBlY3RlZChGZSksdGhpcy5jaGVja0V4cHJlc3Npb25FcnJvcnMocmUsITApLHRoaXMueWllbGRQb3M9YmV8fHRoaXMueWllbGRQb3MsdGhpcy5hd2FpdFBvcz1qZXx8dGhpcy5hd2FpdFBvcyx4Lmxlbmd0aD4xPyhhPXRoaXMuc3RhcnROb2RlQXQoYyxkKSxhLmV4cHJlc3Npb25zPXgsdGhpcy5maW5pc2hOb2RlQXQoYSxcIlNlcXVlbmNlRXhwcmVzc2lvblwiLFFlLEJlKSk6YT14WzBdfWVsc2UgYT10aGlzLnBhcnNlUGFyZW5FeHByZXNzaW9uKCk7aWYodGhpcy5vcHRpb25zLnByZXNlcnZlUGFyZW5zKXt2YXIgVGU9dGhpcy5zdGFydE5vZGVBdChyLHMpO3JldHVybiBUZS5leHByZXNzaW9uPWEsdGhpcy5maW5pc2hOb2RlKFRlLFwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIil9ZWxzZSByZXR1cm4gYX0sei5wYXJzZVBhcmVuSXRlbT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sei5wYXJzZVBhcmVuQXJyb3dMaXN0PWZ1bmN0aW9uKGUsdCxyLHMpe3JldHVybiB0aGlzLnBhcnNlQXJyb3dFeHByZXNzaW9uKHRoaXMuc3RhcnROb2RlQXQoZSx0KSxyLCExLHMpfTt2YXIgUmE9W107ei5wYXJzZU5ldz1mdW5jdGlvbigpe3RoaXMuY29udGFpbnNFc2MmJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0aGlzLnN0YXJ0LFwiRXNjYXBlIHNlcXVlbmNlIGluIGtleXdvcmQgbmV3XCIpO3ZhciBlPXRoaXMuc3RhcnROb2RlKCksdD10aGlzLnBhcnNlSWRlbnQoITApO2lmKHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49NiYmdGhpcy5lYXQoaS5kb3QpKXtlLm1ldGE9dDt2YXIgcj10aGlzLmNvbnRhaW5zRXNjO3JldHVybiBlLnByb3BlcnR5PXRoaXMucGFyc2VJZGVudCghMCksZS5wcm9wZXJ0eS5uYW1lIT09XCJ0YXJnZXRcIiYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKGUucHJvcGVydHkuc3RhcnQsXCJUaGUgb25seSB2YWxpZCBtZXRhIHByb3BlcnR5IGZvciBuZXcgaXMgJ25ldy50YXJnZXQnXCIpLHImJnRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnN0YXJ0LFwiJ25ldy50YXJnZXQnIG11c3Qgbm90IGNvbnRhaW4gZXNjYXBlZCBjaGFyYWN0ZXJzXCIpLHRoaXMuYWxsb3dOZXdEb3RUYXJnZXR8fHRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnN0YXJ0LFwiJ25ldy50YXJnZXQnIGNhbiBvbmx5IGJlIHVzZWQgaW4gZnVuY3Rpb25zIGFuZCBjbGFzcyBzdGF0aWMgYmxvY2tcIiksdGhpcy5maW5pc2hOb2RlKGUsXCJNZXRhUHJvcGVydHlcIil9dmFyIHM9dGhpcy5zdGFydCxhPXRoaXMuc3RhcnRMb2MsaD10aGlzLnR5cGU9PT1pLl9pbXBvcnQ7cmV0dXJuIGUuY2FsbGVlPXRoaXMucGFyc2VTdWJzY3JpcHRzKHRoaXMucGFyc2VFeHByQXRvbSgpLHMsYSwhMCwhMSksaCYmZS5jYWxsZWUudHlwZT09PVwiSW1wb3J0RXhwcmVzc2lvblwiJiZ0aGlzLnJhaXNlKHMsXCJDYW5ub3QgdXNlIG5ldyB3aXRoIGltcG9ydCgpXCIpLHRoaXMuZWF0KGkucGFyZW5MKT9lLmFyZ3VtZW50cz10aGlzLnBhcnNlRXhwckxpc3QoaS5wYXJlblIsdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj04LCExKTplLmFyZ3VtZW50cz1SYSx0aGlzLmZpbmlzaE5vZGUoZSxcIk5ld0V4cHJlc3Npb25cIil9LHoucGFyc2VUZW1wbGF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pc1RhZ2dlZCxyPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMudHlwZT09PWkuaW52YWxpZFRlbXBsYXRlPyh0fHx0aGlzLnJhaXNlUmVjb3ZlcmFibGUodGhpcy5zdGFydCxcIkJhZCBlc2NhcGUgc2VxdWVuY2UgaW4gdW50YWdnZWQgdGVtcGxhdGUgbGl0ZXJhbFwiKSxyLnZhbHVlPXtyYXc6dGhpcy52YWx1ZSxjb29rZWQ6bnVsbH0pOnIudmFsdWU9e3Jhdzp0aGlzLmlucHV0LnNsaWNlKHRoaXMuc3RhcnQsdGhpcy5lbmQpLnJlcGxhY2UoL1xcclxcbj8vZyxgXG5gKSxjb29rZWQ6dGhpcy52YWx1ZX0sdGhpcy5uZXh0KCksci50YWlsPXRoaXMudHlwZT09PWkuYmFja1F1b3RlLHRoaXMuZmluaXNoTm9kZShyLFwiVGVtcGxhdGVFbGVtZW50XCIpfSx6LnBhcnNlVGVtcGxhdGU9ZnVuY3Rpb24oZSl7ZT09PXZvaWQgMCYmKGU9e30pO3ZhciB0PWUuaXNUYWdnZWQ7dD09PXZvaWQgMCYmKHQ9ITEpO3ZhciByPXRoaXMuc3RhcnROb2RlKCk7dGhpcy5uZXh0KCksci5leHByZXNzaW9ucz1bXTt2YXIgcz10aGlzLnBhcnNlVGVtcGxhdGVFbGVtZW50KHtpc1RhZ2dlZDp0fSk7Zm9yKHIucXVhc2lzPVtzXTshcy50YWlsOyl0aGlzLnR5cGU9PT1pLmVvZiYmdGhpcy5yYWlzZSh0aGlzLnBvcyxcIlVudGVybWluYXRlZCB0ZW1wbGF0ZSBsaXRlcmFsXCIpLHRoaXMuZXhwZWN0KGkuZG9sbGFyQnJhY2VMKSxyLmV4cHJlc3Npb25zLnB1c2godGhpcy5wYXJzZUV4cHJlc3Npb24oKSksdGhpcy5leHBlY3QoaS5icmFjZVIpLHIucXVhc2lzLnB1c2gocz10aGlzLnBhcnNlVGVtcGxhdGVFbGVtZW50KHtpc1RhZ2dlZDp0fSkpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmZpbmlzaE5vZGUocixcIlRlbXBsYXRlTGl0ZXJhbFwiKX0sei5pc0FzeW5jUHJvcD1mdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wdXRlZCYmZS5rZXkudHlwZT09PVwiSWRlbnRpZmllclwiJiZlLmtleS5uYW1lPT09XCJhc3luY1wiJiYodGhpcy50eXBlPT09aS5uYW1lfHx0aGlzLnR5cGU9PT1pLm51bXx8dGhpcy50eXBlPT09aS5zdHJpbmd8fHRoaXMudHlwZT09PWkuYnJhY2tldEx8fHRoaXMudHlwZS5rZXl3b3JkfHx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTkmJnRoaXMudHlwZT09PWkuc3RhcikmJiFfLnRlc3QodGhpcy5pbnB1dC5zbGljZSh0aGlzLmxhc3RUb2tFbmQsdGhpcy5zdGFydCkpfSx6LnBhcnNlT2JqPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5zdGFydE5vZGUoKSxzPSEwLGE9e307Zm9yKHIucHJvcGVydGllcz1bXSx0aGlzLm5leHQoKTshdGhpcy5lYXQoaS5icmFjZVIpOyl7aWYocylzPSExO2Vsc2UgaWYodGhpcy5leHBlY3QoaS5jb21tYSksdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj01JiZ0aGlzLmFmdGVyVHJhaWxpbmdDb21tYShpLmJyYWNlUikpYnJlYWs7dmFyIGg9dGhpcy5wYXJzZVByb3BlcnR5KGUsdCk7ZXx8dGhpcy5jaGVja1Byb3BDbGFzaChoLGEsdCksci5wcm9wZXJ0aWVzLnB1c2goaCl9cmV0dXJuIHRoaXMuZmluaXNoTm9kZShyLGU/XCJPYmplY3RQYXR0ZXJuXCI6XCJPYmplY3RFeHByZXNzaW9uXCIpfSx6LnBhcnNlUHJvcGVydHk9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnN0YXJ0Tm9kZSgpLHMsYSxoLGM7aWYodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj05JiZ0aGlzLmVhdChpLmVsbGlwc2lzKSlyZXR1cm4gZT8oci5hcmd1bWVudD10aGlzLnBhcnNlSWRlbnQoITEpLHRoaXMudHlwZT09PWkuY29tbWEmJnRoaXMucmFpc2UodGhpcy5zdGFydCxcIkNvbW1hIGlzIG5vdCBwZXJtaXR0ZWQgYWZ0ZXIgdGhlIHJlc3QgZWxlbWVudFwiKSx0aGlzLmZpbmlzaE5vZGUocixcIlJlc3RFbGVtZW50XCIpKToodGhpcy50eXBlPT09aS5wYXJlbkwmJnQmJih0LnBhcmVudGhlc2l6ZWRBc3NpZ248MCYmKHQucGFyZW50aGVzaXplZEFzc2lnbj10aGlzLnN0YXJ0KSx0LnBhcmVudGhlc2l6ZWRCaW5kPDAmJih0LnBhcmVudGhlc2l6ZWRCaW5kPXRoaXMuc3RhcnQpKSxyLmFyZ3VtZW50PXRoaXMucGFyc2VNYXliZUFzc2lnbighMSx0KSx0aGlzLnR5cGU9PT1pLmNvbW1hJiZ0JiZ0LnRyYWlsaW5nQ29tbWE8MCYmKHQudHJhaWxpbmdDb21tYT10aGlzLnN0YXJ0KSx0aGlzLmZpbmlzaE5vZGUocixcIlNwcmVhZEVsZW1lbnRcIikpO3RoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49NiYmKHIubWV0aG9kPSExLHIuc2hvcnRoYW5kPSExLChlfHx0KSYmKGg9dGhpcy5zdGFydCxjPXRoaXMuc3RhcnRMb2MpLGV8fChzPXRoaXMuZWF0KGkuc3RhcikpKTt2YXIgZD10aGlzLmNvbnRhaW5zRXNjO3JldHVybiB0aGlzLnBhcnNlUHJvcGVydHlOYW1lKHIpLCFlJiYhZCYmdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj04JiYhcyYmdGhpcy5pc0FzeW5jUHJvcChyKT8oYT0hMCxzPXRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49OSYmdGhpcy5lYXQoaS5zdGFyKSx0aGlzLnBhcnNlUHJvcGVydHlOYW1lKHIsdCkpOmE9ITEsdGhpcy5wYXJzZVByb3BlcnR5VmFsdWUocixlLHMsYSxoLGMsdCxkKSx0aGlzLmZpbmlzaE5vZGUocixcIlByb3BlcnR5XCIpfSx6LnBhcnNlUHJvcGVydHlWYWx1ZT1mdW5jdGlvbihlLHQscixzLGEsaCxjLGQpe2lmKChyfHxzKSYmdGhpcy50eXBlPT09aS5jb2xvbiYmdGhpcy51bmV4cGVjdGVkKCksdGhpcy5lYXQoaS5jb2xvbikpZS52YWx1ZT10P3RoaXMucGFyc2VNYXliZURlZmF1bHQodGhpcy5zdGFydCx0aGlzLnN0YXJ0TG9jKTp0aGlzLnBhcnNlTWF5YmVBc3NpZ24oITEsYyksZS5raW5kPVwiaW5pdFwiO2Vsc2UgaWYodGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj02JiZ0aGlzLnR5cGU9PT1pLnBhcmVuTCl0JiZ0aGlzLnVuZXhwZWN0ZWQoKSxlLmtpbmQ9XCJpbml0XCIsZS5tZXRob2Q9ITAsZS52YWx1ZT10aGlzLnBhcnNlTWV0aG9kKHIscyk7ZWxzZSBpZighdCYmIWQmJnRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49NSYmIWUuY29tcHV0ZWQmJmUua2V5LnR5cGU9PT1cIklkZW50aWZpZXJcIiYmKGUua2V5Lm5hbWU9PT1cImdldFwifHxlLmtleS5uYW1lPT09XCJzZXRcIikmJnRoaXMudHlwZSE9PWkuY29tbWEmJnRoaXMudHlwZSE9PWkuYnJhY2VSJiZ0aGlzLnR5cGUhPT1pLmVxKXsocnx8cykmJnRoaXMudW5leHBlY3RlZCgpLGUua2luZD1lLmtleS5uYW1lLHRoaXMucGFyc2VQcm9wZXJ0eU5hbWUoZSksZS52YWx1ZT10aGlzLnBhcnNlTWV0aG9kKCExKTt2YXIgeD1lLmtpbmQ9PT1cImdldFwiPzA6MTtpZihlLnZhbHVlLnBhcmFtcy5sZW5ndGghPT14KXt2YXIgVT1lLnZhbHVlLnN0YXJ0O2Uua2luZD09PVwiZ2V0XCI/dGhpcy5yYWlzZVJlY292ZXJhYmxlKFUsXCJnZXR0ZXIgc2hvdWxkIGhhdmUgbm8gcGFyYW1zXCIpOnRoaXMucmFpc2VSZWNvdmVyYWJsZShVLFwic2V0dGVyIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtXCIpfWVsc2UgZS5raW5kPT09XCJzZXRcIiYmZS52YWx1ZS5wYXJhbXNbMF0udHlwZT09PVwiUmVzdEVsZW1lbnRcIiYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKGUudmFsdWUucGFyYW1zWzBdLnN0YXJ0LFwiU2V0dGVyIGNhbm5vdCB1c2UgcmVzdCBwYXJhbXNcIil9ZWxzZSB0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTYmJiFlLmNvbXB1dGVkJiZlLmtleS50eXBlPT09XCJJZGVudGlmaWVyXCI/KChyfHxzKSYmdGhpcy51bmV4cGVjdGVkKCksdGhpcy5jaGVja1VucmVzZXJ2ZWQoZS5rZXkpLGUua2V5Lm5hbWU9PT1cImF3YWl0XCImJiF0aGlzLmF3YWl0SWRlbnRQb3MmJih0aGlzLmF3YWl0SWRlbnRQb3M9YSksZS5raW5kPVwiaW5pdFwiLHQ/ZS52YWx1ZT10aGlzLnBhcnNlTWF5YmVEZWZhdWx0KGEsaCx0aGlzLmNvcHlOb2RlKGUua2V5KSk6dGhpcy50eXBlPT09aS5lcSYmYz8oYy5zaG9ydGhhbmRBc3NpZ248MCYmKGMuc2hvcnRoYW5kQXNzaWduPXRoaXMuc3RhcnQpLGUudmFsdWU9dGhpcy5wYXJzZU1heWJlRGVmYXVsdChhLGgsdGhpcy5jb3B5Tm9kZShlLmtleSkpKTplLnZhbHVlPXRoaXMuY29weU5vZGUoZS5rZXkpLGUuc2hvcnRoYW5kPSEwKTp0aGlzLnVuZXhwZWN0ZWQoKX0sei5wYXJzZVByb3BlcnR5TmFtZT1mdW5jdGlvbihlKXtpZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTYpe2lmKHRoaXMuZWF0KGkuYnJhY2tldEwpKXJldHVybiBlLmNvbXB1dGVkPSEwLGUua2V5PXRoaXMucGFyc2VNYXliZUFzc2lnbigpLHRoaXMuZXhwZWN0KGkuYnJhY2tldFIpLGUua2V5O2UuY29tcHV0ZWQ9ITF9cmV0dXJuIGUua2V5PXRoaXMudHlwZT09PWkubnVtfHx0aGlzLnR5cGU9PT1pLnN0cmluZz90aGlzLnBhcnNlRXhwckF0b20oKTp0aGlzLnBhcnNlSWRlbnQodGhpcy5vcHRpb25zLmFsbG93UmVzZXJ2ZWQhPT1cIm5ldmVyXCIpfSx6LmluaXRGdW5jdGlvbj1mdW5jdGlvbihlKXtlLmlkPW51bGwsdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj02JiYoZS5nZW5lcmF0b3I9ZS5leHByZXNzaW9uPSExKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTgmJihlLmFzeW5jPSExKX0sei5wYXJzZU1ldGhvZD1mdW5jdGlvbihlLHQscil7dmFyIHM9dGhpcy5zdGFydE5vZGUoKSxhPXRoaXMueWllbGRQb3MsaD10aGlzLmF3YWl0UG9zLGM9dGhpcy5hd2FpdElkZW50UG9zO3JldHVybiB0aGlzLmluaXRGdW5jdGlvbihzKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTYmJihzLmdlbmVyYXRvcj1lKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTgmJihzLmFzeW5jPSEhdCksdGhpcy55aWVsZFBvcz0wLHRoaXMuYXdhaXRQb3M9MCx0aGlzLmF3YWl0SWRlbnRQb3M9MCx0aGlzLmVudGVyU2NvcGUodnQodCxzLmdlbmVyYXRvcil8ZHR8KHI/ZnI6MCkpLHRoaXMuZXhwZWN0KGkucGFyZW5MKSxzLnBhcmFtcz10aGlzLnBhcnNlQmluZGluZ0xpc3QoaS5wYXJlblIsITEsdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj04KSx0aGlzLmNoZWNrWWllbGRBd2FpdEluRGVmYXVsdFBhcmFtcygpLHRoaXMucGFyc2VGdW5jdGlvbkJvZHkocywhMSwhMCwhMSksdGhpcy55aWVsZFBvcz1hLHRoaXMuYXdhaXRQb3M9aCx0aGlzLmF3YWl0SWRlbnRQb3M9Yyx0aGlzLmZpbmlzaE5vZGUocyxcIkZ1bmN0aW9uRXhwcmVzc2lvblwiKX0sei5wYXJzZUFycm93RXhwcmVzc2lvbj1mdW5jdGlvbihlLHQscixzKXt2YXIgYT10aGlzLnlpZWxkUG9zLGg9dGhpcy5hd2FpdFBvcyxjPXRoaXMuYXdhaXRJZGVudFBvcztyZXR1cm4gdGhpcy5lbnRlclNjb3BlKHZ0KHIsITEpfGNyKSx0aGlzLmluaXRGdW5jdGlvbihlKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTgmJihlLmFzeW5jPSEhciksdGhpcy55aWVsZFBvcz0wLHRoaXMuYXdhaXRQb3M9MCx0aGlzLmF3YWl0SWRlbnRQb3M9MCxlLnBhcmFtcz10aGlzLnRvQXNzaWduYWJsZUxpc3QodCwhMCksdGhpcy5wYXJzZUZ1bmN0aW9uQm9keShlLCEwLCExLHMpLHRoaXMueWllbGRQb3M9YSx0aGlzLmF3YWl0UG9zPWgsdGhpcy5hd2FpdElkZW50UG9zPWMsdGhpcy5maW5pc2hOb2RlKGUsXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiKX0sei5wYXJzZUZ1bmN0aW9uQm9keT1mdW5jdGlvbihlLHQscixzKXt2YXIgYT10JiZ0aGlzLnR5cGUhPT1pLmJyYWNlTCxoPXRoaXMuc3RyaWN0LGM9ITE7aWYoYSllLmJvZHk9dGhpcy5wYXJzZU1heWJlQXNzaWduKHMpLGUuZXhwcmVzc2lvbj0hMCx0aGlzLmNoZWNrUGFyYW1zKGUsITEpO2Vsc2V7dmFyIGQ9dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj03JiYhdGhpcy5pc1NpbXBsZVBhcmFtTGlzdChlLnBhcmFtcyk7KCFofHxkKSYmKGM9dGhpcy5zdHJpY3REaXJlY3RpdmUodGhpcy5lbmQpLGMmJmQmJnRoaXMucmFpc2VSZWNvdmVyYWJsZShlLnN0YXJ0LFwiSWxsZWdhbCAndXNlIHN0cmljdCcgZGlyZWN0aXZlIGluIGZ1bmN0aW9uIHdpdGggbm9uLXNpbXBsZSBwYXJhbWV0ZXIgbGlzdFwiKSk7dmFyIHg9dGhpcy5sYWJlbHM7dGhpcy5sYWJlbHM9W10sYyYmKHRoaXMuc3RyaWN0PSEwKSx0aGlzLmNoZWNrUGFyYW1zKGUsIWgmJiFjJiYhdCYmIXImJnRoaXMuaXNTaW1wbGVQYXJhbUxpc3QoZS5wYXJhbXMpKSx0aGlzLnN0cmljdCYmZS5pZCYmdGhpcy5jaGVja0xWYWxTaW1wbGUoZS5pZCx2ciksZS5ib2R5PXRoaXMucGFyc2VCbG9jayghMSx2b2lkIDAsYyYmIWgpLGUuZXhwcmVzc2lvbj0hMSx0aGlzLmFkYXB0RGlyZWN0aXZlUHJvbG9ndWUoZS5ib2R5LmJvZHkpLHRoaXMubGFiZWxzPXh9dGhpcy5leGl0U2NvcGUoKX0sei5pc1NpbXBsZVBhcmFtTGlzdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWU7dDxyLmxlbmd0aDt0Kz0xKXt2YXIgcz1yW3RdO2lmKHMudHlwZSE9PVwiSWRlbnRpZmllclwiKXJldHVybiExfXJldHVybiEwfSx6LmNoZWNrUGFyYW1zPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPU9iamVjdC5jcmVhdGUobnVsbCkscz0wLGE9ZS5wYXJhbXM7czxhLmxlbmd0aDtzKz0xKXt2YXIgaD1hW3NdO3RoaXMuY2hlY2tMVmFsSW5uZXJQYXR0ZXJuKGgsZ3QsdD9udWxsOnIpfX0sei5wYXJzZUV4cHJMaXN0PWZ1bmN0aW9uKGUsdCxyLHMpe2Zvcih2YXIgYT1bXSxoPSEwOyF0aGlzLmVhdChlKTspe2lmKGgpaD0hMTtlbHNlIGlmKHRoaXMuZXhwZWN0KGkuY29tbWEpLHQmJnRoaXMuYWZ0ZXJUcmFpbGluZ0NvbW1hKGUpKWJyZWFrO3ZhciBjPXZvaWQgMDtyJiZ0aGlzLnR5cGU9PT1pLmNvbW1hP2M9bnVsbDp0aGlzLnR5cGU9PT1pLmVsbGlwc2lzPyhjPXRoaXMucGFyc2VTcHJlYWQocykscyYmdGhpcy50eXBlPT09aS5jb21tYSYmcy50cmFpbGluZ0NvbW1hPDAmJihzLnRyYWlsaW5nQ29tbWE9dGhpcy5zdGFydCkpOmM9dGhpcy5wYXJzZU1heWJlQXNzaWduKCExLHMpLGEucHVzaChjKX1yZXR1cm4gYX0sei5jaGVja1VucmVzZXJ2ZWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGFydCxyPWUuZW5kLHM9ZS5uYW1lO2lmKHRoaXMuaW5HZW5lcmF0b3ImJnM9PT1cInlpZWxkXCImJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0LFwiQ2Fubm90IHVzZSAneWllbGQnIGFzIGlkZW50aWZpZXIgaW5zaWRlIGEgZ2VuZXJhdG9yXCIpLHRoaXMuaW5Bc3luYyYmcz09PVwiYXdhaXRcIiYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKHQsXCJDYW5ub3QgdXNlICdhd2FpdCcgYXMgaWRlbnRpZmllciBpbnNpZGUgYW4gYXN5bmMgZnVuY3Rpb25cIiksdGhpcy5jdXJyZW50VGhpc1Njb3BlKCkuaW5DbGFzc0ZpZWxkSW5pdCYmcz09PVwiYXJndW1lbnRzXCImJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0LFwiQ2Fubm90IHVzZSAnYXJndW1lbnRzJyBpbiBjbGFzcyBmaWVsZCBpbml0aWFsaXplclwiKSx0aGlzLmluQ2xhc3NTdGF0aWNCbG9jayYmKHM9PT1cImFyZ3VtZW50c1wifHxzPT09XCJhd2FpdFwiKSYmdGhpcy5yYWlzZSh0LFwiQ2Fubm90IHVzZSBcIitzK1wiIGluIGNsYXNzIHN0YXRpYyBpbml0aWFsaXphdGlvbiBibG9ja1wiKSx0aGlzLmtleXdvcmRzLnRlc3QocykmJnRoaXMucmFpc2UodCxcIlVuZXhwZWN0ZWQga2V5d29yZCAnXCIrcytcIidcIiksISh0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb248NiYmdGhpcy5pbnB1dC5zbGljZSh0LHIpLmluZGV4T2YoXCJcXFxcXCIpIT09LTEpKXt2YXIgYT10aGlzLnN0cmljdD90aGlzLnJlc2VydmVkV29yZHNTdHJpY3Q6dGhpcy5yZXNlcnZlZFdvcmRzO2EudGVzdChzKSYmKCF0aGlzLmluQXN5bmMmJnM9PT1cImF3YWl0XCImJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0LFwiQ2Fubm90IHVzZSBrZXl3b3JkICdhd2FpdCcgb3V0c2lkZSBhbiBhc3luYyBmdW5jdGlvblwiKSx0aGlzLnJhaXNlUmVjb3ZlcmFibGUodCxcIlRoZSBrZXl3b3JkICdcIitzK1wiJyBpcyByZXNlcnZlZFwiKSl9fSx6LnBhcnNlSWRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLnR5cGU9PT1pLm5hbWU/ci5uYW1lPXRoaXMudmFsdWU6dGhpcy50eXBlLmtleXdvcmQ/KHIubmFtZT10aGlzLnR5cGUua2V5d29yZCwoci5uYW1lPT09XCJjbGFzc1wifHxyLm5hbWU9PT1cImZ1bmN0aW9uXCIpJiYodGhpcy5sYXN0VG9rRW5kIT09dGhpcy5sYXN0VG9rU3RhcnQrMXx8dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMubGFzdFRva1N0YXJ0KSE9PTQ2KSYmdGhpcy5jb250ZXh0LnBvcCgpKTp0aGlzLnVuZXhwZWN0ZWQoKSx0aGlzLm5leHQoISFlKSx0aGlzLmZpbmlzaE5vZGUocixcIklkZW50aWZpZXJcIiksZXx8KHRoaXMuY2hlY2tVbnJlc2VydmVkKHIpLHIubmFtZT09PVwiYXdhaXRcIiYmIXRoaXMuYXdhaXRJZGVudFBvcyYmKHRoaXMuYXdhaXRJZGVudFBvcz1yLnN0YXJ0KSkscn0sei5wYXJzZVByaXZhdGVJZGVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMudHlwZT09PWkucHJpdmF0ZUlkP2UubmFtZT10aGlzLnZhbHVlOnRoaXMudW5leHBlY3RlZCgpLHRoaXMubmV4dCgpLHRoaXMuZmluaXNoTm9kZShlLFwiUHJpdmF0ZUlkZW50aWZpZXJcIiksdGhpcy5wcml2YXRlTmFtZVN0YWNrLmxlbmd0aD09PTA/dGhpcy5yYWlzZShlLnN0YXJ0LFwiUHJpdmF0ZSBmaWVsZCAnI1wiK2UubmFtZStcIicgbXVzdCBiZSBkZWNsYXJlZCBpbiBhbiBlbmNsb3NpbmcgY2xhc3NcIik6dGhpcy5wcml2YXRlTmFtZVN0YWNrW3RoaXMucHJpdmF0ZU5hbWVTdGFjay5sZW5ndGgtMV0udXNlZC5wdXNoKGUpLGV9LHoucGFyc2VZaWVsZD1mdW5jdGlvbihlKXt0aGlzLnlpZWxkUG9zfHwodGhpcy55aWVsZFBvcz10aGlzLnN0YXJ0KTt2YXIgdD10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLnR5cGU9PT1pLnNlbWl8fHRoaXMuY2FuSW5zZXJ0U2VtaWNvbG9uKCl8fHRoaXMudHlwZSE9PWkuc3RhciYmIXRoaXMudHlwZS5zdGFydHNFeHByPyh0LmRlbGVnYXRlPSExLHQuYXJndW1lbnQ9bnVsbCk6KHQuZGVsZWdhdGU9dGhpcy5lYXQoaS5zdGFyKSx0LmFyZ3VtZW50PXRoaXMucGFyc2VNYXliZUFzc2lnbihlKSksdGhpcy5maW5pc2hOb2RlKHQsXCJZaWVsZEV4cHJlc3Npb25cIil9LHoucGFyc2VBd2FpdD1mdW5jdGlvbihlKXt0aGlzLmF3YWl0UG9zfHwodGhpcy5hd2FpdFBvcz10aGlzLnN0YXJ0KTt2YXIgdD10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSx0LmFyZ3VtZW50PXRoaXMucGFyc2VNYXliZVVuYXJ5KG51bGwsITAsITEsZSksdGhpcy5maW5pc2hOb2RlKHQsXCJBd2FpdEV4cHJlc3Npb25cIil9O3ZhciBLZT1aLnByb3RvdHlwZTtLZS5yYWlzZT1mdW5jdGlvbihlLHQpe3ZhciByPW9lKHRoaXMuaW5wdXQsZSk7dCs9XCIgKFwiK3IubGluZStcIjpcIityLmNvbHVtbitcIilcIjt2YXIgcz1uZXcgU3ludGF4RXJyb3IodCk7dGhyb3cgcy5wb3M9ZSxzLmxvYz1yLHMucmFpc2VkQXQ9dGhpcy5wb3Msc30sS2UucmFpc2VSZWNvdmVyYWJsZT1LZS5yYWlzZSxLZS5jdXJQb3NpdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5sb2NhdGlvbnMpcmV0dXJuIG5ldyBLKHRoaXMuY3VyTGluZSx0aGlzLnBvcy10aGlzLmxpbmVTdGFydCl9O3ZhciB4ZT1aLnByb3RvdHlwZSxqYT1mdW5jdGlvbih0KXt0aGlzLmZsYWdzPXQsdGhpcy52YXI9W10sdGhpcy5sZXhpY2FsPVtdLHRoaXMuZnVuY3Rpb25zPVtdLHRoaXMuaW5DbGFzc0ZpZWxkSW5pdD0hMX07eGUuZW50ZXJTY29wZT1mdW5jdGlvbihlKXt0aGlzLnNjb3BlU3RhY2sucHVzaChuZXcgamEoZSkpfSx4ZS5leGl0U2NvcGU9ZnVuY3Rpb24oKXt0aGlzLnNjb3BlU3RhY2sucG9wKCl9LHhlLnRyZWF0RnVuY3Rpb25zQXNWYXJJblNjb3BlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmZsYWdzJmdlfHwhdGhpcy5pbk1vZHVsZSYmZS5mbGFncyZFZX0seGUuZGVjbGFyZU5hbWU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBzPSExO2lmKHQ9PT1mZSl7dmFyIGE9dGhpcy5jdXJyZW50U2NvcGUoKTtzPWEubGV4aWNhbC5pbmRleE9mKGUpPi0xfHxhLmZ1bmN0aW9ucy5pbmRleE9mKGUpPi0xfHxhLnZhci5pbmRleE9mKGUpPi0xLGEubGV4aWNhbC5wdXNoKGUpLHRoaXMuaW5Nb2R1bGUmJmEuZmxhZ3MmRWUmJmRlbGV0ZSB0aGlzLnVuZGVmaW5lZEV4cG9ydHNbZV19ZWxzZSBpZih0PT09bXIpe3ZhciBoPXRoaXMuY3VycmVudFNjb3BlKCk7aC5sZXhpY2FsLnB1c2goZSl9ZWxzZSBpZih0PT09ZHIpe3ZhciBjPXRoaXMuY3VycmVudFNjb3BlKCk7dGhpcy50cmVhdEZ1bmN0aW9uc0FzVmFyP3M9Yy5sZXhpY2FsLmluZGV4T2YoZSk+LTE6cz1jLmxleGljYWwuaW5kZXhPZihlKT4tMXx8Yy52YXIuaW5kZXhPZihlKT4tMSxjLmZ1bmN0aW9ucy5wdXNoKGUpfWVsc2UgZm9yKHZhciBkPXRoaXMuc2NvcGVTdGFjay5sZW5ndGgtMTtkPj0wOy0tZCl7dmFyIHg9dGhpcy5zY29wZVN0YWNrW2RdO2lmKHgubGV4aWNhbC5pbmRleE9mKGUpPi0xJiYhKHguZmxhZ3MmcHImJngubGV4aWNhbFswXT09PWUpfHwhdGhpcy50cmVhdEZ1bmN0aW9uc0FzVmFySW5TY29wZSh4KSYmeC5mdW5jdGlvbnMuaW5kZXhPZihlKT4tMSl7cz0hMDticmVha31pZih4LnZhci5wdXNoKGUpLHRoaXMuaW5Nb2R1bGUmJnguZmxhZ3MmRWUmJmRlbGV0ZSB0aGlzLnVuZGVmaW5lZEV4cG9ydHNbZV0seC5mbGFncyZtdClicmVha31zJiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUocixcIklkZW50aWZpZXIgJ1wiK2UrXCInIGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWRcIil9LHhlLmNoZWNrTG9jYWxFeHBvcnQ9ZnVuY3Rpb24oZSl7dGhpcy5zY29wZVN0YWNrWzBdLmxleGljYWwuaW5kZXhPZihlLm5hbWUpPT09LTEmJnRoaXMuc2NvcGVTdGFja1swXS52YXIuaW5kZXhPZihlLm5hbWUpPT09LTEmJih0aGlzLnVuZGVmaW5lZEV4cG9ydHNbZS5uYW1lXT1lKX0seGUuY3VycmVudFNjb3BlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2NvcGVTdGFja1t0aGlzLnNjb3BlU3RhY2subGVuZ3RoLTFdfSx4ZS5jdXJyZW50VmFyU2NvcGU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5zY29wZVN0YWNrLmxlbmd0aC0xOztlLS0pe3ZhciB0PXRoaXMuc2NvcGVTdGFja1tlXTtpZih0LmZsYWdzJm10KXJldHVybiB0fX0seGUuY3VycmVudFRoaXNTY29wZT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnNjb3BlU3RhY2subGVuZ3RoLTE7O2UtLSl7dmFyIHQ9dGhpcy5zY29wZVN0YWNrW2VdO2lmKHQuZmxhZ3MmbXQmJiEodC5mbGFncyZjcikpcmV0dXJuIHR9fTt2YXIgVmU9ZnVuY3Rpb24odCxyLHMpe3RoaXMudHlwZT1cIlwiLHRoaXMuc3RhcnQ9cix0aGlzLmVuZD0wLHQub3B0aW9ucy5sb2NhdGlvbnMmJih0aGlzLmxvYz1uZXcgWCh0LHMpKSx0Lm9wdGlvbnMuZGlyZWN0U291cmNlRmlsZSYmKHRoaXMuc291cmNlRmlsZT10Lm9wdGlvbnMuZGlyZWN0U291cmNlRmlsZSksdC5vcHRpb25zLnJhbmdlcyYmKHRoaXMucmFuZ2U9W3IsMF0pfSxSZT1aLnByb3RvdHlwZTtSZS5zdGFydE5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZlKHRoaXMsdGhpcy5zdGFydCx0aGlzLnN0YXJ0TG9jKX0sUmUuc3RhcnROb2RlQXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFZlKHRoaXMsZSx0KX07ZnVuY3Rpb24geXIoZSx0LHIscyl7cmV0dXJuIGUudHlwZT10LGUuZW5kPXIsdGhpcy5vcHRpb25zLmxvY2F0aW9ucyYmKGUubG9jLmVuZD1zKSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYoZS5yYW5nZVsxXT1yKSxlfVJlLmZpbmlzaE5vZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4geXIuY2FsbCh0aGlzLGUsdCx0aGlzLmxhc3RUb2tFbmQsdGhpcy5sYXN0VG9rRW5kTG9jKX0sUmUuZmluaXNoTm9kZUF0PWZ1bmN0aW9uKGUsdCxyLHMpe3JldHVybiB5ci5jYWxsKHRoaXMsZSx0LHIscyl9LFJlLmNvcHlOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBWZSh0aGlzLGUuc3RhcnQsdGhpcy5zdGFydExvYyk7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdO3JldHVybiB0fTt2YXIgQXI9XCJBU0NJSSBBU0NJSV9IZXhfRGlnaXQgQUhleCBBbHBoYWJldGljIEFscGhhIEFueSBBc3NpZ25lZCBCaWRpX0NvbnRyb2wgQmlkaV9DIEJpZGlfTWlycm9yZWQgQmlkaV9NIENhc2VfSWdub3JhYmxlIENJIENhc2VkIENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkIENXQ0YgQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWQgQ1dDTSBDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZCBDV0wgQ2hhbmdlc19XaGVuX05GS0NfQ2FzZWZvbGRlZCBDV0tDRiBDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZCBDV1QgQ2hhbmdlc19XaGVuX1VwcGVyY2FzZWQgQ1dVIERhc2ggRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCBESSBEZXByZWNhdGVkIERlcCBEaWFjcml0aWMgRGlhIEVtb2ppIEVtb2ppX0NvbXBvbmVudCBFbW9qaV9Nb2RpZmllciBFbW9qaV9Nb2RpZmllcl9CYXNlIEVtb2ppX1ByZXNlbnRhdGlvbiBFeHRlbmRlciBFeHQgR3JhcGhlbWVfQmFzZSBHcl9CYXNlIEdyYXBoZW1lX0V4dGVuZCBHcl9FeHQgSGV4X0RpZ2l0IEhleCBJRFNfQmluYXJ5X09wZXJhdG9yIElEU0IgSURTX1RyaW5hcnlfT3BlcmF0b3IgSURTVCBJRF9Db250aW51ZSBJREMgSURfU3RhcnQgSURTIElkZW9ncmFwaGljIElkZW8gSm9pbl9Db250cm9sIEpvaW5fQyBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbiBMT0UgTG93ZXJjYXNlIExvd2VyIE1hdGggTm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQgTkNoYXIgUGF0dGVybl9TeW50YXggUGF0X1N5biBQYXR0ZXJuX1doaXRlX1NwYWNlIFBhdF9XUyBRdW90YXRpb25fTWFyayBRTWFyayBSYWRpY2FsIFJlZ2lvbmFsX0luZGljYXRvciBSSSBTZW50ZW5jZV9UZXJtaW5hbCBTVGVybSBTb2Z0X0RvdHRlZCBTRCBUZXJtaW5hbF9QdW5jdHVhdGlvbiBUZXJtIFVuaWZpZWRfSWRlb2dyYXBoIFVJZGVvIFVwcGVyY2FzZSBVcHBlciBWYXJpYXRpb25fU2VsZWN0b3IgVlMgV2hpdGVfU3BhY2Ugc3BhY2UgWElEX0NvbnRpbnVlIFhJREMgWElEX1N0YXJ0IFhJRFNcIixDcj1BcitcIiBFeHRlbmRlZF9QaWN0b2dyYXBoaWNcIixFcj1Dcixicj1FcitcIiBFQmFzZSBFQ29tcCBFTW9kIEVQcmVzIEV4dFBpY3RcIixxYT1icixNYT17OTpBciwxMDpDciwxMTpFciwxMjpiciwxMzpxYX0sX3I9XCJDYXNlZF9MZXR0ZXIgTEMgQ2xvc2VfUHVuY3R1YXRpb24gUGUgQ29ubmVjdG9yX1B1bmN0dWF0aW9uIFBjIENvbnRyb2wgQ2MgY250cmwgQ3VycmVuY3lfU3ltYm9sIFNjIERhc2hfUHVuY3R1YXRpb24gUGQgRGVjaW1hbF9OdW1iZXIgTmQgZGlnaXQgRW5jbG9zaW5nX01hcmsgTWUgRmluYWxfUHVuY3R1YXRpb24gUGYgRm9ybWF0IENmIEluaXRpYWxfUHVuY3R1YXRpb24gUGkgTGV0dGVyIEwgTGV0dGVyX051bWJlciBObCBMaW5lX1NlcGFyYXRvciBabCBMb3dlcmNhc2VfTGV0dGVyIExsIE1hcmsgTSBDb21iaW5pbmdfTWFyayBNYXRoX1N5bWJvbCBTbSBNb2RpZmllcl9MZXR0ZXIgTG0gTW9kaWZpZXJfU3ltYm9sIFNrIE5vbnNwYWNpbmdfTWFyayBNbiBOdW1iZXIgTiBPcGVuX1B1bmN0dWF0aW9uIFBzIE90aGVyIEMgT3RoZXJfTGV0dGVyIExvIE90aGVyX051bWJlciBObyBPdGhlcl9QdW5jdHVhdGlvbiBQbyBPdGhlcl9TeW1ib2wgU28gUGFyYWdyYXBoX1NlcGFyYXRvciBacCBQcml2YXRlX1VzZSBDbyBQdW5jdHVhdGlvbiBQIHB1bmN0IFNlcGFyYXRvciBaIFNwYWNlX1NlcGFyYXRvciBacyBTcGFjaW5nX01hcmsgTWMgU3Vycm9nYXRlIENzIFN5bWJvbCBTIFRpdGxlY2FzZV9MZXR0ZXIgTHQgVW5hc3NpZ25lZCBDbiBVcHBlcmNhc2VfTGV0dGVyIEx1XCIsU3I9XCJBZGxhbSBBZGxtIEFob20gQW5hdG9saWFuX0hpZXJvZ2x5cGhzIEhsdXcgQXJhYmljIEFyYWIgQXJtZW5pYW4gQXJtbiBBdmVzdGFuIEF2c3QgQmFsaW5lc2UgQmFsaSBCYW11bSBCYW11IEJhc3NhX1ZhaCBCYXNzIEJhdGFrIEJhdGsgQmVuZ2FsaSBCZW5nIEJoYWlrc3VraSBCaGtzIEJvcG9tb2ZvIEJvcG8gQnJhaG1pIEJyYWggQnJhaWxsZSBCcmFpIEJ1Z2luZXNlIEJ1Z2kgQnVoaWQgQnVoZCBDYW5hZGlhbl9BYm9yaWdpbmFsIENhbnMgQ2FyaWFuIENhcmkgQ2F1Y2FzaWFuX0FsYmFuaWFuIEFnaGIgQ2hha21hIENha20gQ2hhbSBDaGFtIENoZXJva2VlIENoZXIgQ29tbW9uIFp5eXkgQ29wdGljIENvcHQgUWFhYyBDdW5laWZvcm0gWHN1eCBDeXByaW90IENwcnQgQ3lyaWxsaWMgQ3lybCBEZXNlcmV0IERzcnQgRGV2YW5hZ2FyaSBEZXZhIER1cGxveWFuIER1cGwgRWd5cHRpYW5fSGllcm9nbHlwaHMgRWd5cCBFbGJhc2FuIEVsYmEgRXRoaW9waWMgRXRoaSBHZW9yZ2lhbiBHZW9yIEdsYWdvbGl0aWMgR2xhZyBHb3RoaWMgR290aCBHcmFudGhhIEdyYW4gR3JlZWsgR3JlayBHdWphcmF0aSBHdWpyIEd1cm11a2hpIEd1cnUgSGFuIEhhbmkgSGFuZ3VsIEhhbmcgSGFudW5vbyBIYW5vIEhhdHJhbiBIYXRyIEhlYnJldyBIZWJyIEhpcmFnYW5hIEhpcmEgSW1wZXJpYWxfQXJhbWFpYyBBcm1pIEluaGVyaXRlZCBaaW5oIFFhYWkgSW5zY3JpcHRpb25hbF9QYWhsYXZpIFBobGkgSW5zY3JpcHRpb25hbF9QYXJ0aGlhbiBQcnRpIEphdmFuZXNlIEphdmEgS2FpdGhpIEt0aGkgS2FubmFkYSBLbmRhIEthdGFrYW5hIEthbmEgS2F5YWhfTGkgS2FsaSBLaGFyb3NodGhpIEtoYXIgS2htZXIgS2htciBLaG9qa2kgS2hvaiBLaHVkYXdhZGkgU2luZCBMYW8gTGFvbyBMYXRpbiBMYXRuIExlcGNoYSBMZXBjIExpbWJ1IExpbWIgTGluZWFyX0EgTGluYSBMaW5lYXJfQiBMaW5iIExpc3UgTGlzdSBMeWNpYW4gTHljaSBMeWRpYW4gTHlkaSBNYWhhamFuaSBNYWhqIE1hbGF5YWxhbSBNbHltIE1hbmRhaWMgTWFuZCBNYW5pY2hhZWFuIE1hbmkgTWFyY2hlbiBNYXJjIE1hc2FyYW1fR29uZGkgR29ubSBNZWV0ZWlfTWF5ZWsgTXRlaSBNZW5kZV9LaWtha3VpIE1lbmQgTWVyb2l0aWNfQ3Vyc2l2ZSBNZXJjIE1lcm9pdGljX0hpZXJvZ2x5cGhzIE1lcm8gTWlhbyBQbHJkIE1vZGkgTW9uZ29saWFuIE1vbmcgTXJvIE1yb28gTXVsdGFuaSBNdWx0IE15YW5tYXIgTXltciBOYWJhdGFlYW4gTmJhdCBOZXdfVGFpX0x1ZSBUYWx1IE5ld2EgTmV3YSBOa28gTmtvbyBOdXNodSBOc2h1IE9naGFtIE9nYW0gT2xfQ2hpa2kgT2xjayBPbGRfSHVuZ2FyaWFuIEh1bmcgT2xkX0l0YWxpYyBJdGFsIE9sZF9Ob3J0aF9BcmFiaWFuIE5hcmIgT2xkX1Blcm1pYyBQZXJtIE9sZF9QZXJzaWFuIFhwZW8gT2xkX1NvdXRoX0FyYWJpYW4gU2FyYiBPbGRfVHVya2ljIE9ya2ggT3JpeWEgT3J5YSBPc2FnZSBPc2dlIE9zbWFueWEgT3NtYSBQYWhhd2hfSG1vbmcgSG1uZyBQYWxteXJlbmUgUGFsbSBQYXVfQ2luX0hhdSBQYXVjIFBoYWdzX1BhIFBoYWcgUGhvZW5pY2lhbiBQaG54IFBzYWx0ZXJfUGFobGF2aSBQaGxwIFJlamFuZyBSam5nIFJ1bmljIFJ1bnIgU2FtYXJpdGFuIFNhbXIgU2F1cmFzaHRyYSBTYXVyIFNoYXJhZGEgU2hyZCBTaGF2aWFuIFNoYXcgU2lkZGhhbSBTaWRkIFNpZ25Xcml0aW5nIFNnbncgU2luaGFsYSBTaW5oIFNvcmFfU29tcGVuZyBTb3JhIFNveW9tYm8gU295byBTdW5kYW5lc2UgU3VuZCBTeWxvdGlfTmFncmkgU3lsbyBTeXJpYWMgU3lyYyBUYWdhbG9nIFRnbGcgVGFnYmFud2EgVGFnYiBUYWlfTGUgVGFsZSBUYWlfVGhhbSBMYW5hIFRhaV9WaWV0IFRhdnQgVGFrcmkgVGFrciBUYW1pbCBUYW1sIFRhbmd1dCBUYW5nIFRlbHVndSBUZWx1IFRoYWFuYSBUaGFhIFRoYWkgVGhhaSBUaWJldGFuIFRpYnQgVGlmaW5hZ2ggVGZuZyBUaXJodXRhIFRpcmggVWdhcml0aWMgVWdhciBWYWkgVmFpaSBXYXJhbmdfQ2l0aSBXYXJhIFlpIFlpaWkgWmFuYWJhemFyX1NxdWFyZSBaYW5iXCIsd3I9U3IrXCIgRG9ncmEgRG9nciBHdW5qYWxhX0dvbmRpIEdvbmcgSGFuaWZpX1JvaGluZ3lhIFJvaGcgTWFrYXNhciBNYWthIE1lZGVmYWlkcmluIE1lZGYgT2xkX1NvZ2RpYW4gU29nbyBTb2dkaWFuIFNvZ2RcIixrcj13citcIiBFbHltYWljIEVseW0gTmFuZGluYWdhcmkgTmFuZCBOeWlha2VuZ19QdWFjaHVlX0htb25nIEhtbnAgV2FuY2hvIFdjaG9cIixGcj1rcitcIiBDaG9yYXNtaWFuIENocnMgRGlhayBEaXZlc19Ba3VydSBLaGl0YW5fU21hbGxfU2NyaXB0IEtpdHMgWWV6aSBZZXppZGlcIixVYT1GcitcIiBDeXByb19NaW5vYW4gQ3BtbiBPbGRfVXlnaHVyIE91Z3IgVGFuZ3NhIFRuc2EgVG90byBWaXRoa3VxaSBWaXRoXCIsemE9ezk6U3IsMTA6d3IsMTE6a3IsMTI6RnIsMTM6VWF9LEJyPXt9O2Z1bmN0aW9uIFdhKGUpe3ZhciB0PUJyW2VdPXtiaW5hcnk6ZihNYVtlXStcIiBcIitfciksbm9uQmluYXJ5OntHZW5lcmFsX0NhdGVnb3J5OmYoX3IpLFNjcmlwdDpmKHphW2VdKX19O3Qubm9uQmluYXJ5LlNjcmlwdF9FeHRlbnNpb25zPXQubm9uQmluYXJ5LlNjcmlwdCx0Lm5vbkJpbmFyeS5nYz10Lm5vbkJpbmFyeS5HZW5lcmFsX0NhdGVnb3J5LHQubm9uQmluYXJ5LnNjPXQubm9uQmluYXJ5LlNjcmlwdCx0Lm5vbkJpbmFyeS5zY3g9dC5ub25CaW5hcnkuU2NyaXB0X0V4dGVuc2lvbnN9Zm9yKHZhciBBdD0wLFRyPVs5LDEwLDExLDEyLDEzXTtBdDxUci5sZW5ndGg7QXQrPTEpe3ZhciBHYT1UcltBdF07V2EoR2EpfXZhciBPPVoucHJvdG90eXBlLGRlPWZ1bmN0aW9uKHQpe3RoaXMucGFyc2VyPXQsdGhpcy52YWxpZEZsYWdzPVwiZ2ltXCIrKHQub3B0aW9ucy5lY21hVmVyc2lvbj49Nj9cInV5XCI6XCJcIikrKHQub3B0aW9ucy5lY21hVmVyc2lvbj49OT9cInNcIjpcIlwiKSsodC5vcHRpb25zLmVjbWFWZXJzaW9uPj0xMz9cImRcIjpcIlwiKSx0aGlzLnVuaWNvZGVQcm9wZXJ0aWVzPUJyW3Qub3B0aW9ucy5lY21hVmVyc2lvbj49MTM/MTM6dC5vcHRpb25zLmVjbWFWZXJzaW9uXSx0aGlzLnNvdXJjZT1cIlwiLHRoaXMuZmxhZ3M9XCJcIix0aGlzLnN0YXJ0PTAsdGhpcy5zd2l0Y2hVPSExLHRoaXMuc3dpdGNoTj0hMSx0aGlzLnBvcz0wLHRoaXMubGFzdEludFZhbHVlPTAsdGhpcy5sYXN0U3RyaW5nVmFsdWU9XCJcIix0aGlzLmxhc3RBc3NlcnRpb25Jc1F1YW50aWZpYWJsZT0hMSx0aGlzLm51bUNhcHR1cmluZ1BhcmVucz0wLHRoaXMubWF4QmFja1JlZmVyZW5jZT0wLHRoaXMuZ3JvdXBOYW1lcz1bXSx0aGlzLmJhY2tSZWZlcmVuY2VOYW1lcz1bXX07ZGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQscixzKXt2YXIgYT1zLmluZGV4T2YoXCJ1XCIpIT09LTE7dGhpcy5zdGFydD10fDAsdGhpcy5zb3VyY2U9citcIlwiLHRoaXMuZmxhZ3M9cyx0aGlzLnN3aXRjaFU9YSYmdGhpcy5wYXJzZXIub3B0aW9ucy5lY21hVmVyc2lvbj49Nix0aGlzLnN3aXRjaE49YSYmdGhpcy5wYXJzZXIub3B0aW9ucy5lY21hVmVyc2lvbj49OX0sZGUucHJvdG90eXBlLnJhaXNlPWZ1bmN0aW9uKHQpe3RoaXMucGFyc2VyLnJhaXNlUmVjb3ZlcmFibGUodGhpcy5zdGFydCxcIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAvXCIrdGhpcy5zb3VyY2UrXCIvOiBcIit0KX0sZGUucHJvdG90eXBlLmF0PWZ1bmN0aW9uKHQscil7cj09PXZvaWQgMCYmKHI9ITEpO3ZhciBzPXRoaXMuc291cmNlLGE9cy5sZW5ndGg7aWYodD49YSlyZXR1cm4tMTt2YXIgaD1zLmNoYXJDb2RlQXQodCk7aWYoIShyfHx0aGlzLnN3aXRjaFUpfHxoPD01NTI5NXx8aD49NTczNDR8fHQrMT49YSlyZXR1cm4gaDt2YXIgYz1zLmNoYXJDb2RlQXQodCsxKTtyZXR1cm4gYz49NTYzMjAmJmM8PTU3MzQzPyhoPDwxMCkrYy01NjYxMzg4ODpofSxkZS5wcm90b3R5cGUubmV4dEluZGV4PWZ1bmN0aW9uKHQscil7cj09PXZvaWQgMCYmKHI9ITEpO3ZhciBzPXRoaXMuc291cmNlLGE9cy5sZW5ndGg7aWYodD49YSlyZXR1cm4gYTt2YXIgaD1zLmNoYXJDb2RlQXQodCksYztyZXR1cm4hKHJ8fHRoaXMuc3dpdGNoVSl8fGg8PTU1Mjk1fHxoPj01NzM0NHx8dCsxPj1hfHwoYz1zLmNoYXJDb2RlQXQodCsxKSk8NTYzMjB8fGM+NTczNDM/dCsxOnQrMn0sZGUucHJvdG90eXBlLmN1cnJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT12b2lkIDAmJih0PSExKSx0aGlzLmF0KHRoaXMucG9zLHQpfSxkZS5wcm90b3R5cGUubG9va2FoZWFkPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dm9pZCAwJiYodD0hMSksdGhpcy5hdCh0aGlzLm5leHRJbmRleCh0aGlzLnBvcyx0KSx0KX0sZGUucHJvdG90eXBlLmFkdmFuY2U9ZnVuY3Rpb24odCl7dD09PXZvaWQgMCYmKHQ9ITEpLHRoaXMucG9zPXRoaXMubmV4dEluZGV4KHRoaXMucG9zLHQpfSxkZS5wcm90b3R5cGUuZWF0PWZ1bmN0aW9uKHQscil7cmV0dXJuIHI9PT12b2lkIDAmJihyPSExKSx0aGlzLmN1cnJlbnQocik9PT10Pyh0aGlzLmFkdmFuY2UociksITApOiExfTtmdW5jdGlvbiBYZShlKXtyZXR1cm4gZTw9NjU1MzU/U3RyaW5nLmZyb21DaGFyQ29kZShlKTooZS09NjU1MzYsU3RyaW5nLmZyb21DaGFyQ29kZSgoZT4+MTApKzU1Mjk2LChlJjEwMjMpKzU2MzIwKSl9Ty52YWxpZGF0ZVJlZ0V4cEZsYWdzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnZhbGlkRmxhZ3Mscj1lLmZsYWdzLHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGE9ci5jaGFyQXQocyk7dC5pbmRleE9mKGEpPT09LTEmJnRoaXMucmFpc2UoZS5zdGFydCxcIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdcIiksci5pbmRleE9mKGEscysxKT4tMSYmdGhpcy5yYWlzZShlLnN0YXJ0LFwiRHVwbGljYXRlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFnXCIpfX0sTy52YWxpZGF0ZVJlZ0V4cFBhdHRlcm49ZnVuY3Rpb24oZSl7dGhpcy5yZWdleHBfcGF0dGVybihlKSwhZS5zd2l0Y2hOJiZ0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTkmJmUuZ3JvdXBOYW1lcy5sZW5ndGg+MCYmKGUuc3dpdGNoTj0hMCx0aGlzLnJlZ2V4cF9wYXR0ZXJuKGUpKX0sTy5yZWdleHBfcGF0dGVybj1mdW5jdGlvbihlKXtlLnBvcz0wLGUubGFzdEludFZhbHVlPTAsZS5sYXN0U3RyaW5nVmFsdWU9XCJcIixlLmxhc3RBc3NlcnRpb25Jc1F1YW50aWZpYWJsZT0hMSxlLm51bUNhcHR1cmluZ1BhcmVucz0wLGUubWF4QmFja1JlZmVyZW5jZT0wLGUuZ3JvdXBOYW1lcy5sZW5ndGg9MCxlLmJhY2tSZWZlcmVuY2VOYW1lcy5sZW5ndGg9MCx0aGlzLnJlZ2V4cF9kaXNqdW5jdGlvbihlKSxlLnBvcyE9PWUuc291cmNlLmxlbmd0aCYmKGUuZWF0KDQxKSYmZS5yYWlzZShcIlVubWF0Y2hlZCAnKSdcIiksKGUuZWF0KDkzKXx8ZS5lYXQoMTI1KSkmJmUucmFpc2UoXCJMb25lIHF1YW50aWZpZXIgYnJhY2tldHNcIikpLGUubWF4QmFja1JlZmVyZW5jZT5lLm51bUNhcHR1cmluZ1BhcmVucyYmZS5yYWlzZShcIkludmFsaWQgZXNjYXBlXCIpO2Zvcih2YXIgdD0wLHI9ZS5iYWNrUmVmZXJlbmNlTmFtZXM7dDxyLmxlbmd0aDt0Kz0xKXt2YXIgcz1yW3RdO2UuZ3JvdXBOYW1lcy5pbmRleE9mKHMpPT09LTEmJmUucmFpc2UoXCJJbnZhbGlkIG5hbWVkIGNhcHR1cmUgcmVmZXJlbmNlZFwiKX19LE8ucmVnZXhwX2Rpc2p1bmN0aW9uPWZ1bmN0aW9uKGUpe2Zvcih0aGlzLnJlZ2V4cF9hbHRlcm5hdGl2ZShlKTtlLmVhdCgxMjQpOyl0aGlzLnJlZ2V4cF9hbHRlcm5hdGl2ZShlKTt0aGlzLnJlZ2V4cF9lYXRRdWFudGlmaWVyKGUsITApJiZlLnJhaXNlKFwiTm90aGluZyB0byByZXBlYXRcIiksZS5lYXQoMTIzKSYmZS5yYWlzZShcIkxvbmUgcXVhbnRpZmllciBicmFja2V0c1wiKX0sTy5yZWdleHBfYWx0ZXJuYXRpdmU9ZnVuY3Rpb24oZSl7Zm9yKDtlLnBvczxlLnNvdXJjZS5sZW5ndGgmJnRoaXMucmVnZXhwX2VhdFRlcm0oZSk7KTt9LE8ucmVnZXhwX2VhdFRlcm09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVnZXhwX2VhdEFzc2VydGlvbihlKT8oZS5sYXN0QXNzZXJ0aW9uSXNRdWFudGlmaWFibGUmJnRoaXMucmVnZXhwX2VhdFF1YW50aWZpZXIoZSkmJmUuc3dpdGNoVSYmZS5yYWlzZShcIkludmFsaWQgcXVhbnRpZmllclwiKSwhMCk6KGUuc3dpdGNoVT90aGlzLnJlZ2V4cF9lYXRBdG9tKGUpOnRoaXMucmVnZXhwX2VhdEV4dGVuZGVkQXRvbShlKSk/KHRoaXMucmVnZXhwX2VhdFF1YW50aWZpZXIoZSksITApOiExfSxPLnJlZ2V4cF9lYXRBc3NlcnRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wb3M7aWYoZS5sYXN0QXNzZXJ0aW9uSXNRdWFudGlmaWFibGU9ITEsZS5lYXQoOTQpfHxlLmVhdCgzNikpcmV0dXJuITA7aWYoZS5lYXQoOTIpKXtpZihlLmVhdCg2Nil8fGUuZWF0KDk4KSlyZXR1cm4hMDtlLnBvcz10fWlmKGUuZWF0KDQwKSYmZS5lYXQoNjMpKXt2YXIgcj0hMTtpZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTkmJihyPWUuZWF0KDYwKSksZS5lYXQoNjEpfHxlLmVhdCgzMykpcmV0dXJuIHRoaXMucmVnZXhwX2Rpc2p1bmN0aW9uKGUpLGUuZWF0KDQxKXx8ZS5yYWlzZShcIlVudGVybWluYXRlZCBncm91cFwiKSxlLmxhc3RBc3NlcnRpb25Jc1F1YW50aWZpYWJsZT0hciwhMH1yZXR1cm4gZS5wb3M9dCwhMX0sTy5yZWdleHBfZWF0UXVhbnRpZmllcj1mdW5jdGlvbihlLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD0hMSksdGhpcy5yZWdleHBfZWF0UXVhbnRpZmllclByZWZpeChlLHQpPyhlLmVhdCg2MyksITApOiExfSxPLnJlZ2V4cF9lYXRRdWFudGlmaWVyUHJlZml4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZWF0KDQyKXx8ZS5lYXQoNDMpfHxlLmVhdCg2Myl8fHRoaXMucmVnZXhwX2VhdEJyYWNlZFF1YW50aWZpZXIoZSx0KX0sTy5yZWdleHBfZWF0QnJhY2VkUXVhbnRpZmllcj1mdW5jdGlvbihlLHQpe3ZhciByPWUucG9zO2lmKGUuZWF0KDEyMykpe3ZhciBzPTAsYT0tMTtpZih0aGlzLnJlZ2V4cF9lYXREZWNpbWFsRGlnaXRzKGUpJiYocz1lLmxhc3RJbnRWYWx1ZSxlLmVhdCg0NCkmJnRoaXMucmVnZXhwX2VhdERlY2ltYWxEaWdpdHMoZSkmJihhPWUubGFzdEludFZhbHVlKSxlLmVhdCgxMjUpKSlyZXR1cm4gYSE9PS0xJiZhPHMmJiF0JiZlLnJhaXNlKFwibnVtYmVycyBvdXQgb2Ygb3JkZXIgaW4ge30gcXVhbnRpZmllclwiKSwhMDtlLnN3aXRjaFUmJiF0JiZlLnJhaXNlKFwiSW5jb21wbGV0ZSBxdWFudGlmaWVyXCIpLGUucG9zPXJ9cmV0dXJuITF9LE8ucmVnZXhwX2VhdEF0b209ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVnZXhwX2VhdFBhdHRlcm5DaGFyYWN0ZXJzKGUpfHxlLmVhdCg0Nil8fHRoaXMucmVnZXhwX2VhdFJldmVyc2VTb2xpZHVzQXRvbUVzY2FwZShlKXx8dGhpcy5yZWdleHBfZWF0Q2hhcmFjdGVyQ2xhc3MoZSl8fHRoaXMucmVnZXhwX2VhdFVuY2FwdHVyaW5nR3JvdXAoZSl8fHRoaXMucmVnZXhwX2VhdENhcHR1cmluZ0dyb3VwKGUpfSxPLnJlZ2V4cF9lYXRSZXZlcnNlU29saWR1c0F0b21Fc2NhcGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wb3M7aWYoZS5lYXQoOTIpKXtpZih0aGlzLnJlZ2V4cF9lYXRBdG9tRXNjYXBlKGUpKXJldHVybiEwO2UucG9zPXR9cmV0dXJuITF9LE8ucmVnZXhwX2VhdFVuY2FwdHVyaW5nR3JvdXA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wb3M7aWYoZS5lYXQoNDApKXtpZihlLmVhdCg2MykmJmUuZWF0KDU4KSl7aWYodGhpcy5yZWdleHBfZGlzanVuY3Rpb24oZSksZS5lYXQoNDEpKXJldHVybiEwO2UucmFpc2UoXCJVbnRlcm1pbmF0ZWQgZ3JvdXBcIil9ZS5wb3M9dH1yZXR1cm4hMX0sTy5yZWdleHBfZWF0Q2FwdHVyaW5nR3JvdXA9ZnVuY3Rpb24oZSl7aWYoZS5lYXQoNDApKXtpZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTk/dGhpcy5yZWdleHBfZ3JvdXBTcGVjaWZpZXIoZSk6ZS5jdXJyZW50KCk9PT02MyYmZS5yYWlzZShcIkludmFsaWQgZ3JvdXBcIiksdGhpcy5yZWdleHBfZGlzanVuY3Rpb24oZSksZS5lYXQoNDEpKXJldHVybiBlLm51bUNhcHR1cmluZ1BhcmVucys9MSwhMDtlLnJhaXNlKFwiVW50ZXJtaW5hdGVkIGdyb3VwXCIpfXJldHVybiExfSxPLnJlZ2V4cF9lYXRFeHRlbmRlZEF0b209ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZWF0KDQ2KXx8dGhpcy5yZWdleHBfZWF0UmV2ZXJzZVNvbGlkdXNBdG9tRXNjYXBlKGUpfHx0aGlzLnJlZ2V4cF9lYXRDaGFyYWN0ZXJDbGFzcyhlKXx8dGhpcy5yZWdleHBfZWF0VW5jYXB0dXJpbmdHcm91cChlKXx8dGhpcy5yZWdleHBfZWF0Q2FwdHVyaW5nR3JvdXAoZSl8fHRoaXMucmVnZXhwX2VhdEludmFsaWRCcmFjZWRRdWFudGlmaWVyKGUpfHx0aGlzLnJlZ2V4cF9lYXRFeHRlbmRlZFBhdHRlcm5DaGFyYWN0ZXIoZSl9LE8ucmVnZXhwX2VhdEludmFsaWRCcmFjZWRRdWFudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlZ2V4cF9lYXRCcmFjZWRRdWFudGlmaWVyKGUsITApJiZlLnJhaXNlKFwiTm90aGluZyB0byByZXBlYXRcIiksITF9LE8ucmVnZXhwX2VhdFN5bnRheENoYXJhY3Rlcj1mdW5jdGlvbihlKXt2YXIgdD1lLmN1cnJlbnQoKTtyZXR1cm4gSXIodCk/KGUubGFzdEludFZhbHVlPXQsZS5hZHZhbmNlKCksITApOiExfTtmdW5jdGlvbiBJcihlKXtyZXR1cm4gZT09PTM2fHxlPj00MCYmZTw9NDN8fGU9PT00Nnx8ZT09PTYzfHxlPj05MSYmZTw9OTR8fGU+PTEyMyYmZTw9MTI1fU8ucmVnZXhwX2VhdFBhdHRlcm5DaGFyYWN0ZXJzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnBvcyxyPTA7KHI9ZS5jdXJyZW50KCkpIT09LTEmJiFJcihyKTspZS5hZHZhbmNlKCk7cmV0dXJuIGUucG9zIT09dH0sTy5yZWdleHBfZWF0RXh0ZW5kZWRQYXR0ZXJuQ2hhcmFjdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY3VycmVudCgpO3JldHVybiB0IT09LTEmJnQhPT0zNiYmISh0Pj00MCYmdDw9NDMpJiZ0IT09NDYmJnQhPT02MyYmdCE9PTkxJiZ0IT09OTQmJnQhPT0xMjQ/KGUuYWR2YW5jZSgpLCEwKTohMX0sTy5yZWdleHBfZ3JvdXBTcGVjaWZpZXI9ZnVuY3Rpb24oZSl7aWYoZS5lYXQoNjMpKXtpZih0aGlzLnJlZ2V4cF9lYXRHcm91cE5hbWUoZSkpe2UuZ3JvdXBOYW1lcy5pbmRleE9mKGUubGFzdFN0cmluZ1ZhbHVlKSE9PS0xJiZlLnJhaXNlKFwiRHVwbGljYXRlIGNhcHR1cmUgZ3JvdXAgbmFtZVwiKSxlLmdyb3VwTmFtZXMucHVzaChlLmxhc3RTdHJpbmdWYWx1ZSk7cmV0dXJufWUucmFpc2UoXCJJbnZhbGlkIGdyb3VwXCIpfX0sTy5yZWdleHBfZWF0R3JvdXBOYW1lPWZ1bmN0aW9uKGUpe2lmKGUubGFzdFN0cmluZ1ZhbHVlPVwiXCIsZS5lYXQoNjApKXtpZih0aGlzLnJlZ2V4cF9lYXRSZWdFeHBJZGVudGlmaWVyTmFtZShlKSYmZS5lYXQoNjIpKXJldHVybiEwO2UucmFpc2UoXCJJbnZhbGlkIGNhcHR1cmUgZ3JvdXAgbmFtZVwiKX1yZXR1cm4hMX0sTy5yZWdleHBfZWF0UmVnRXhwSWRlbnRpZmllck5hbWU9ZnVuY3Rpb24oZSl7aWYoZS5sYXN0U3RyaW5nVmFsdWU9XCJcIix0aGlzLnJlZ2V4cF9lYXRSZWdFeHBJZGVudGlmaWVyU3RhcnQoZSkpe2ZvcihlLmxhc3RTdHJpbmdWYWx1ZSs9WGUoZS5sYXN0SW50VmFsdWUpO3RoaXMucmVnZXhwX2VhdFJlZ0V4cElkZW50aWZpZXJQYXJ0KGUpOyllLmxhc3RTdHJpbmdWYWx1ZSs9WGUoZS5sYXN0SW50VmFsdWUpO3JldHVybiEwfXJldHVybiExfSxPLnJlZ2V4cF9lYXRSZWdFeHBJZGVudGlmaWVyU3RhcnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wb3Mscj10aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTExLHM9ZS5jdXJyZW50KHIpO3JldHVybiBlLmFkdmFuY2Uocikscz09PTkyJiZ0aGlzLnJlZ2V4cF9lYXRSZWdFeHBVbmljb2RlRXNjYXBlU2VxdWVuY2UoZSxyKSYmKHM9ZS5sYXN0SW50VmFsdWUpLEthKHMpPyhlLmxhc3RJbnRWYWx1ZT1zLCEwKTooZS5wb3M9dCwhMSl9O2Z1bmN0aW9uIEthKGUpe3JldHVybiB2KGUsITApfHxlPT09MzZ8fGU9PT05NX1PLnJlZ2V4cF9lYXRSZWdFeHBJZGVudGlmaWVyUGFydD1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcyxyPXRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49MTEscz1lLmN1cnJlbnQocik7cmV0dXJuIGUuYWR2YW5jZShyKSxzPT09OTImJnRoaXMucmVnZXhwX2VhdFJlZ0V4cFVuaWNvZGVFc2NhcGVTZXF1ZW5jZShlLHIpJiYocz1lLmxhc3RJbnRWYWx1ZSksWGEocyk/KGUubGFzdEludFZhbHVlPXMsITApOihlLnBvcz10LCExKX07ZnVuY3Rpb24gWGEoZSl7cmV0dXJuIHEoZSwhMCl8fGU9PT0zNnx8ZT09PTk1fHxlPT09ODIwNHx8ZT09PTgyMDV9Ty5yZWdleHBfZWF0QXRvbUVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWdleHBfZWF0QmFja1JlZmVyZW5jZShlKXx8dGhpcy5yZWdleHBfZWF0Q2hhcmFjdGVyQ2xhc3NFc2NhcGUoZSl8fHRoaXMucmVnZXhwX2VhdENoYXJhY3RlckVzY2FwZShlKXx8ZS5zd2l0Y2hOJiZ0aGlzLnJlZ2V4cF9lYXRLR3JvdXBOYW1lKGUpPyEwOihlLnN3aXRjaFUmJihlLmN1cnJlbnQoKT09PTk5JiZlLnJhaXNlKFwiSW52YWxpZCB1bmljb2RlIGVzY2FwZVwiKSxlLnJhaXNlKFwiSW52YWxpZCBlc2NhcGVcIikpLCExKX0sTy5yZWdleHBfZWF0QmFja1JlZmVyZW5jZT1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcztpZih0aGlzLnJlZ2V4cF9lYXREZWNpbWFsRXNjYXBlKGUpKXt2YXIgcj1lLmxhc3RJbnRWYWx1ZTtpZihlLnN3aXRjaFUpcmV0dXJuIHI+ZS5tYXhCYWNrUmVmZXJlbmNlJiYoZS5tYXhCYWNrUmVmZXJlbmNlPXIpLCEwO2lmKHI8PWUubnVtQ2FwdHVyaW5nUGFyZW5zKXJldHVybiEwO2UucG9zPXR9cmV0dXJuITF9LE8ucmVnZXhwX2VhdEtHcm91cE5hbWU9ZnVuY3Rpb24oZSl7aWYoZS5lYXQoMTA3KSl7aWYodGhpcy5yZWdleHBfZWF0R3JvdXBOYW1lKGUpKXJldHVybiBlLmJhY2tSZWZlcmVuY2VOYW1lcy5wdXNoKGUubGFzdFN0cmluZ1ZhbHVlKSwhMDtlLnJhaXNlKFwiSW52YWxpZCBuYW1lZCByZWZlcmVuY2VcIil9cmV0dXJuITF9LE8ucmVnZXhwX2VhdENoYXJhY3RlckVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWdleHBfZWF0Q29udHJvbEVzY2FwZShlKXx8dGhpcy5yZWdleHBfZWF0Q0NvbnRyb2xMZXR0ZXIoZSl8fHRoaXMucmVnZXhwX2VhdFplcm8oZSl8fHRoaXMucmVnZXhwX2VhdEhleEVzY2FwZVNlcXVlbmNlKGUpfHx0aGlzLnJlZ2V4cF9lYXRSZWdFeHBVbmljb2RlRXNjYXBlU2VxdWVuY2UoZSwhMSl8fCFlLnN3aXRjaFUmJnRoaXMucmVnZXhwX2VhdExlZ2FjeU9jdGFsRXNjYXBlU2VxdWVuY2UoZSl8fHRoaXMucmVnZXhwX2VhdElkZW50aXR5RXNjYXBlKGUpfSxPLnJlZ2V4cF9lYXRDQ29udHJvbExldHRlcj1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcztpZihlLmVhdCg5OSkpe2lmKHRoaXMucmVnZXhwX2VhdENvbnRyb2xMZXR0ZXIoZSkpcmV0dXJuITA7ZS5wb3M9dH1yZXR1cm4hMX0sTy5yZWdleHBfZWF0WmVybz1mdW5jdGlvbihlKXtyZXR1cm4gZS5jdXJyZW50KCk9PT00OCYmIUhlKGUubG9va2FoZWFkKCkpPyhlLmxhc3RJbnRWYWx1ZT0wLGUuYWR2YW5jZSgpLCEwKTohMX0sTy5yZWdleHBfZWF0Q29udHJvbEVzY2FwZT1mdW5jdGlvbihlKXt2YXIgdD1lLmN1cnJlbnQoKTtyZXR1cm4gdD09PTExNj8oZS5sYXN0SW50VmFsdWU9OSxlLmFkdmFuY2UoKSwhMCk6dD09PTExMD8oZS5sYXN0SW50VmFsdWU9MTAsZS5hZHZhbmNlKCksITApOnQ9PT0xMTg/KGUubGFzdEludFZhbHVlPTExLGUuYWR2YW5jZSgpLCEwKTp0PT09MTAyPyhlLmxhc3RJbnRWYWx1ZT0xMixlLmFkdmFuY2UoKSwhMCk6dD09PTExND8oZS5sYXN0SW50VmFsdWU9MTMsZS5hZHZhbmNlKCksITApOiExfSxPLnJlZ2V4cF9lYXRDb250cm9sTGV0dGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY3VycmVudCgpO3JldHVybiBQcih0KT8oZS5sYXN0SW50VmFsdWU9dCUzMixlLmFkdmFuY2UoKSwhMCk6ITF9O2Z1bmN0aW9uIFByKGUpe3JldHVybiBlPj02NSYmZTw9OTB8fGU+PTk3JiZlPD0xMjJ9Ty5yZWdleHBfZWF0UmVnRXhwVW5pY29kZUVzY2FwZVNlcXVlbmNlPWZ1bmN0aW9uKGUsdCl7dD09PXZvaWQgMCYmKHQ9ITEpO3ZhciByPWUucG9zLHM9dHx8ZS5zd2l0Y2hVO2lmKGUuZWF0KDExNykpe2lmKHRoaXMucmVnZXhwX2VhdEZpeGVkSGV4RGlnaXRzKGUsNCkpe3ZhciBhPWUubGFzdEludFZhbHVlO2lmKHMmJmE+PTU1Mjk2JiZhPD01NjMxOSl7dmFyIGg9ZS5wb3M7aWYoZS5lYXQoOTIpJiZlLmVhdCgxMTcpJiZ0aGlzLnJlZ2V4cF9lYXRGaXhlZEhleERpZ2l0cyhlLDQpKXt2YXIgYz1lLmxhc3RJbnRWYWx1ZTtpZihjPj01NjMyMCYmYzw9NTczNDMpcmV0dXJuIGUubGFzdEludFZhbHVlPShhLTU1Mjk2KSoxMDI0KyhjLTU2MzIwKSs2NTUzNiwhMH1lLnBvcz1oLGUubGFzdEludFZhbHVlPWF9cmV0dXJuITB9aWYocyYmZS5lYXQoMTIzKSYmdGhpcy5yZWdleHBfZWF0SGV4RGlnaXRzKGUpJiZlLmVhdCgxMjUpJiZIYShlLmxhc3RJbnRWYWx1ZSkpcmV0dXJuITA7cyYmZS5yYWlzZShcIkludmFsaWQgdW5pY29kZSBlc2NhcGVcIiksZS5wb3M9cn1yZXR1cm4hMX07ZnVuY3Rpb24gSGEoZSl7cmV0dXJuIGU+PTAmJmU8PTExMTQxMTF9Ty5yZWdleHBfZWF0SWRlbnRpdHlFc2NhcGU9ZnVuY3Rpb24oZSl7aWYoZS5zd2l0Y2hVKXJldHVybiB0aGlzLnJlZ2V4cF9lYXRTeW50YXhDaGFyYWN0ZXIoZSk/ITA6ZS5lYXQoNDcpPyhlLmxhc3RJbnRWYWx1ZT00NywhMCk6ITE7dmFyIHQ9ZS5jdXJyZW50KCk7cmV0dXJuIHQhPT05OSYmKCFlLnN3aXRjaE58fHQhPT0xMDcpPyhlLmxhc3RJbnRWYWx1ZT10LGUuYWR2YW5jZSgpLCEwKTohMX0sTy5yZWdleHBfZWF0RGVjaW1hbEVzY2FwZT1mdW5jdGlvbihlKXtlLmxhc3RJbnRWYWx1ZT0wO3ZhciB0PWUuY3VycmVudCgpO2lmKHQ+PTQ5JiZ0PD01Nyl7ZG8gZS5sYXN0SW50VmFsdWU9MTAqZS5sYXN0SW50VmFsdWUrKHQtNDgpLGUuYWR2YW5jZSgpO3doaWxlKCh0PWUuY3VycmVudCgpKT49NDgmJnQ8PTU3KTtyZXR1cm4hMH1yZXR1cm4hMX0sTy5yZWdleHBfZWF0Q2hhcmFjdGVyQ2xhc3NFc2NhcGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXJyZW50KCk7aWYoSmEodCkpcmV0dXJuIGUubGFzdEludFZhbHVlPS0xLGUuYWR2YW5jZSgpLCEwO2lmKGUuc3dpdGNoVSYmdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj05JiYodD09PTgwfHx0PT09MTEyKSl7aWYoZS5sYXN0SW50VmFsdWU9LTEsZS5hZHZhbmNlKCksZS5lYXQoMTIzKSYmdGhpcy5yZWdleHBfZWF0VW5pY29kZVByb3BlcnR5VmFsdWVFeHByZXNzaW9uKGUpJiZlLmVhdCgxMjUpKXJldHVybiEwO2UucmFpc2UoXCJJbnZhbGlkIHByb3BlcnR5IG5hbWVcIil9cmV0dXJuITF9O2Z1bmN0aW9uIEphKGUpe3JldHVybiBlPT09MTAwfHxlPT09Njh8fGU9PT0xMTV8fGU9PT04M3x8ZT09PTExOXx8ZT09PTg3fU8ucmVnZXhwX2VhdFVuaWNvZGVQcm9wZXJ0eVZhbHVlRXhwcmVzc2lvbj1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcztpZih0aGlzLnJlZ2V4cF9lYXRVbmljb2RlUHJvcGVydHlOYW1lKGUpJiZlLmVhdCg2MSkpe3ZhciByPWUubGFzdFN0cmluZ1ZhbHVlO2lmKHRoaXMucmVnZXhwX2VhdFVuaWNvZGVQcm9wZXJ0eVZhbHVlKGUpKXt2YXIgcz1lLmxhc3RTdHJpbmdWYWx1ZTtyZXR1cm4gdGhpcy5yZWdleHBfdmFsaWRhdGVVbmljb2RlUHJvcGVydHlOYW1lQW5kVmFsdWUoZSxyLHMpLCEwfX1pZihlLnBvcz10LHRoaXMucmVnZXhwX2VhdExvbmVVbmljb2RlUHJvcGVydHlOYW1lT3JWYWx1ZShlKSl7dmFyIGE9ZS5sYXN0U3RyaW5nVmFsdWU7cmV0dXJuIHRoaXMucmVnZXhwX3ZhbGlkYXRlVW5pY29kZVByb3BlcnR5TmFtZU9yVmFsdWUoZSxhKSwhMH1yZXR1cm4hMX0sTy5yZWdleHBfdmFsaWRhdGVVbmljb2RlUHJvcGVydHlOYW1lQW5kVmFsdWU9ZnVuY3Rpb24oZSx0LHIpe0QoZS51bmljb2RlUHJvcGVydGllcy5ub25CaW5hcnksdCl8fGUucmFpc2UoXCJJbnZhbGlkIHByb3BlcnR5IG5hbWVcIiksZS51bmljb2RlUHJvcGVydGllcy5ub25CaW5hcnlbdF0udGVzdChyKXx8ZS5yYWlzZShcIkludmFsaWQgcHJvcGVydHkgdmFsdWVcIil9LE8ucmVnZXhwX3ZhbGlkYXRlVW5pY29kZVByb3BlcnR5TmFtZU9yVmFsdWU9ZnVuY3Rpb24oZSx0KXtlLnVuaWNvZGVQcm9wZXJ0aWVzLmJpbmFyeS50ZXN0KHQpfHxlLnJhaXNlKFwiSW52YWxpZCBwcm9wZXJ0eSBuYW1lXCIpfSxPLnJlZ2V4cF9lYXRVbmljb2RlUHJvcGVydHlOYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PTA7Zm9yKGUubGFzdFN0cmluZ1ZhbHVlPVwiXCI7TnIodD1lLmN1cnJlbnQoKSk7KWUubGFzdFN0cmluZ1ZhbHVlKz1YZSh0KSxlLmFkdmFuY2UoKTtyZXR1cm4gZS5sYXN0U3RyaW5nVmFsdWUhPT1cIlwifTtmdW5jdGlvbiBOcihlKXtyZXR1cm4gUHIoZSl8fGU9PT05NX1PLnJlZ2V4cF9lYXRVbmljb2RlUHJvcGVydHlWYWx1ZT1mdW5jdGlvbihlKXt2YXIgdD0wO2ZvcihlLmxhc3RTdHJpbmdWYWx1ZT1cIlwiO1lhKHQ9ZS5jdXJyZW50KCkpOyllLmxhc3RTdHJpbmdWYWx1ZSs9WGUodCksZS5hZHZhbmNlKCk7cmV0dXJuIGUubGFzdFN0cmluZ1ZhbHVlIT09XCJcIn07ZnVuY3Rpb24gWWEoZSl7cmV0dXJuIE5yKGUpfHxIZShlKX1PLnJlZ2V4cF9lYXRMb25lVW5pY29kZVByb3BlcnR5TmFtZU9yVmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVnZXhwX2VhdFVuaWNvZGVQcm9wZXJ0eVZhbHVlKGUpfSxPLnJlZ2V4cF9lYXRDaGFyYWN0ZXJDbGFzcz1mdW5jdGlvbihlKXtpZihlLmVhdCg5MSkpe2lmKGUuZWF0KDk0KSx0aGlzLnJlZ2V4cF9jbGFzc1JhbmdlcyhlKSxlLmVhdCg5MykpcmV0dXJuITA7ZS5yYWlzZShcIlVudGVybWluYXRlZCBjaGFyYWN0ZXIgY2xhc3NcIil9cmV0dXJuITF9LE8ucmVnZXhwX2NsYXNzUmFuZ2VzPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5yZWdleHBfZWF0Q2xhc3NBdG9tKGUpOyl7dmFyIHQ9ZS5sYXN0SW50VmFsdWU7aWYoZS5lYXQoNDUpJiZ0aGlzLnJlZ2V4cF9lYXRDbGFzc0F0b20oZSkpe3ZhciByPWUubGFzdEludFZhbHVlO2Uuc3dpdGNoVSYmKHQ9PT0tMXx8cj09PS0xKSYmZS5yYWlzZShcIkludmFsaWQgY2hhcmFjdGVyIGNsYXNzXCIpLHQhPT0tMSYmciE9PS0xJiZ0PnImJmUucmFpc2UoXCJSYW5nZSBvdXQgb2Ygb3JkZXIgaW4gY2hhcmFjdGVyIGNsYXNzXCIpfX19LE8ucmVnZXhwX2VhdENsYXNzQXRvbT1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcztpZihlLmVhdCg5Mikpe2lmKHRoaXMucmVnZXhwX2VhdENsYXNzRXNjYXBlKGUpKXJldHVybiEwO2lmKGUuc3dpdGNoVSl7dmFyIHI9ZS5jdXJyZW50KCk7KHI9PT05OXx8THIocikpJiZlLnJhaXNlKFwiSW52YWxpZCBjbGFzcyBlc2NhcGVcIiksZS5yYWlzZShcIkludmFsaWQgZXNjYXBlXCIpfWUucG9zPXR9dmFyIHM9ZS5jdXJyZW50KCk7cmV0dXJuIHMhPT05Mz8oZS5sYXN0SW50VmFsdWU9cyxlLmFkdmFuY2UoKSwhMCk6ITF9LE8ucmVnZXhwX2VhdENsYXNzRXNjYXBlPWZ1bmN0aW9uKGUpe3ZhciB0PWUucG9zO2lmKGUuZWF0KDk4KSlyZXR1cm4gZS5sYXN0SW50VmFsdWU9OCwhMDtpZihlLnN3aXRjaFUmJmUuZWF0KDQ1KSlyZXR1cm4gZS5sYXN0SW50VmFsdWU9NDUsITA7aWYoIWUuc3dpdGNoVSYmZS5lYXQoOTkpKXtpZih0aGlzLnJlZ2V4cF9lYXRDbGFzc0NvbnRyb2xMZXR0ZXIoZSkpcmV0dXJuITA7ZS5wb3M9dH1yZXR1cm4gdGhpcy5yZWdleHBfZWF0Q2hhcmFjdGVyQ2xhc3NFc2NhcGUoZSl8fHRoaXMucmVnZXhwX2VhdENoYXJhY3RlckVzY2FwZShlKX0sTy5yZWdleHBfZWF0Q2xhc3NDb250cm9sTGV0dGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY3VycmVudCgpO3JldHVybiBIZSh0KXx8dD09PTk1PyhlLmxhc3RJbnRWYWx1ZT10JTMyLGUuYWR2YW5jZSgpLCEwKTohMX0sTy5yZWdleHBfZWF0SGV4RXNjYXBlU2VxdWVuY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wb3M7aWYoZS5lYXQoMTIwKSl7aWYodGhpcy5yZWdleHBfZWF0Rml4ZWRIZXhEaWdpdHMoZSwyKSlyZXR1cm4hMDtlLnN3aXRjaFUmJmUucmFpc2UoXCJJbnZhbGlkIGVzY2FwZVwiKSxlLnBvcz10fXJldHVybiExfSxPLnJlZ2V4cF9lYXREZWNpbWFsRGlnaXRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUucG9zLHI9MDtmb3IoZS5sYXN0SW50VmFsdWU9MDtIZShyPWUuY3VycmVudCgpKTspZS5sYXN0SW50VmFsdWU9MTAqZS5sYXN0SW50VmFsdWUrKHItNDgpLGUuYWR2YW5jZSgpO3JldHVybiBlLnBvcyE9PXR9O2Z1bmN0aW9uIEhlKGUpe3JldHVybiBlPj00OCYmZTw9NTd9Ty5yZWdleHBfZWF0SGV4RGlnaXRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUucG9zLHI9MDtmb3IoZS5sYXN0SW50VmFsdWU9MDtEcihyPWUuY3VycmVudCgpKTspZS5sYXN0SW50VmFsdWU9MTYqZS5sYXN0SW50VmFsdWUrT3IociksZS5hZHZhbmNlKCk7cmV0dXJuIGUucG9zIT09dH07ZnVuY3Rpb24gRHIoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIE9yKGUpe3JldHVybiBlPj02NSYmZTw9NzA/MTArKGUtNjUpOmU+PTk3JiZlPD0xMDI/MTArKGUtOTcpOmUtNDh9Ty5yZWdleHBfZWF0TGVnYWN5T2N0YWxFc2NhcGVTZXF1ZW5jZT1mdW5jdGlvbihlKXtpZih0aGlzLnJlZ2V4cF9lYXRPY3RhbERpZ2l0KGUpKXt2YXIgdD1lLmxhc3RJbnRWYWx1ZTtpZih0aGlzLnJlZ2V4cF9lYXRPY3RhbERpZ2l0KGUpKXt2YXIgcj1lLmxhc3RJbnRWYWx1ZTt0PD0zJiZ0aGlzLnJlZ2V4cF9lYXRPY3RhbERpZ2l0KGUpP2UubGFzdEludFZhbHVlPXQqNjQrcio4K2UubGFzdEludFZhbHVlOmUubGFzdEludFZhbHVlPXQqOCtyfWVsc2UgZS5sYXN0SW50VmFsdWU9dDtyZXR1cm4hMH1yZXR1cm4hMX0sTy5yZWdleHBfZWF0T2N0YWxEaWdpdD1mdW5jdGlvbihlKXt2YXIgdD1lLmN1cnJlbnQoKTtyZXR1cm4gTHIodCk/KGUubGFzdEludFZhbHVlPXQtNDgsZS5hZHZhbmNlKCksITApOihlLmxhc3RJbnRWYWx1ZT0wLCExKX07ZnVuY3Rpb24gTHIoZSl7cmV0dXJuIGU+PTQ4JiZlPD01NX1PLnJlZ2V4cF9lYXRGaXhlZEhleERpZ2l0cz1mdW5jdGlvbihlLHQpe3ZhciByPWUucG9zO2UubGFzdEludFZhbHVlPTA7Zm9yKHZhciBzPTA7czx0Oysrcyl7dmFyIGE9ZS5jdXJyZW50KCk7aWYoIURyKGEpKXJldHVybiBlLnBvcz1yLCExO2UubGFzdEludFZhbHVlPTE2KmUubGFzdEludFZhbHVlK09yKGEpLGUuYWR2YW5jZSgpfXJldHVybiEwfTt2YXIgSmU9ZnVuY3Rpb24odCl7dGhpcy50eXBlPXQudHlwZSx0aGlzLnZhbHVlPXQudmFsdWUsdGhpcy5zdGFydD10LnN0YXJ0LHRoaXMuZW5kPXQuZW5kLHQub3B0aW9ucy5sb2NhdGlvbnMmJih0aGlzLmxvYz1uZXcgWCh0LHQuc3RhcnRMb2MsdC5lbmRMb2MpKSx0Lm9wdGlvbnMucmFuZ2VzJiYodGhpcy5yYW5nZT1bdC5zdGFydCx0LmVuZF0pfSxHPVoucHJvdG90eXBlO0cubmV4dD1mdW5jdGlvbihlKXshZSYmdGhpcy50eXBlLmtleXdvcmQmJnRoaXMuY29udGFpbnNFc2MmJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0aGlzLnN0YXJ0LFwiRXNjYXBlIHNlcXVlbmNlIGluIGtleXdvcmQgXCIrdGhpcy50eXBlLmtleXdvcmQpLHRoaXMub3B0aW9ucy5vblRva2VuJiZ0aGlzLm9wdGlvbnMub25Ub2tlbihuZXcgSmUodGhpcykpLHRoaXMubGFzdFRva0VuZD10aGlzLmVuZCx0aGlzLmxhc3RUb2tTdGFydD10aGlzLnN0YXJ0LHRoaXMubGFzdFRva0VuZExvYz10aGlzLmVuZExvYyx0aGlzLmxhc3RUb2tTdGFydExvYz10aGlzLnN0YXJ0TG9jLHRoaXMubmV4dFRva2VuKCl9LEcuZ2V0VG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0KCksbmV3IEplKHRoaXMpfSx0eXBlb2YgU3ltYm9sPFwidVwiJiYoR1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm57bmV4dDpmdW5jdGlvbigpe3ZhciB0PWUuZ2V0VG9rZW4oKTtyZXR1cm57ZG9uZTp0LnR5cGU9PT1pLmVvZix2YWx1ZTp0fX19fSksRy5uZXh0VG9rZW49ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1ckNvbnRleHQoKTtpZigoIWV8fCFlLnByZXNlcnZlU3BhY2UpJiZ0aGlzLnNraXBTcGFjZSgpLHRoaXMuc3RhcnQ9dGhpcy5wb3MsdGhpcy5vcHRpb25zLmxvY2F0aW9ucyYmKHRoaXMuc3RhcnRMb2M9dGhpcy5jdXJQb3NpdGlvbigpKSx0aGlzLnBvcz49dGhpcy5pbnB1dC5sZW5ndGgpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oaS5lb2YpO2lmKGUub3ZlcnJpZGUpcmV0dXJuIGUub3ZlcnJpZGUodGhpcyk7dGhpcy5yZWFkVG9rZW4odGhpcy5mdWxsQ2hhckNvZGVBdFBvcygpKX0sRy5yZWFkVG9rZW49ZnVuY3Rpb24oZSl7cmV0dXJuIHYoZSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTYpfHxlPT09OTI/dGhpcy5yZWFkV29yZCgpOnRoaXMuZ2V0VG9rZW5Gcm9tQ29kZShlKX0sRy5mdWxsQ2hhckNvZGVBdFBvcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcyk7aWYoZTw9NTUyOTV8fGU+PTU2MzIwKXJldHVybiBlO3ZhciB0PXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysxKTtyZXR1cm4gdDw9NTYzMTl8fHQ+PTU3MzQ0P2U6KGU8PDEwKSt0LTU2NjEzODg4fSxHLnNraXBCbG9ja0NvbW1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMub25Db21tZW50JiZ0aGlzLmN1clBvc2l0aW9uKCksdD10aGlzLnBvcyxyPXRoaXMuaW5wdXQuaW5kZXhPZihcIiovXCIsdGhpcy5wb3MrPTIpO2lmKHI9PT0tMSYmdGhpcy5yYWlzZSh0aGlzLnBvcy0yLFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiksdGhpcy5wb3M9cisyLHRoaXMub3B0aW9ucy5sb2NhdGlvbnMpZm9yKHZhciBzPXZvaWQgMCxhPXQ7KHM9ZWUodGhpcy5pbnB1dCxhLHRoaXMucG9zKSk+LTE7KSsrdGhpcy5jdXJMaW5lLGE9dGhpcy5saW5lU3RhcnQ9czt0aGlzLm9wdGlvbnMub25Db21tZW50JiZ0aGlzLm9wdGlvbnMub25Db21tZW50KCEwLHRoaXMuaW5wdXQuc2xpY2UodCsyLHIpLHQsdGhpcy5wb3MsZSx0aGlzLmN1clBvc2l0aW9uKCkpfSxHLnNraXBMaW5lQ29tbWVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3Mscj10aGlzLm9wdGlvbnMub25Db21tZW50JiZ0aGlzLmN1clBvc2l0aW9uKCkscz10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrPWUpO3RoaXMucG9zPHRoaXMuaW5wdXQubGVuZ3RoJiYhTShzKTspcz10aGlzLmlucHV0LmNoYXJDb2RlQXQoKyt0aGlzLnBvcyk7dGhpcy5vcHRpb25zLm9uQ29tbWVudCYmdGhpcy5vcHRpb25zLm9uQ29tbWVudCghMSx0aGlzLmlucHV0LnNsaWNlKHQrZSx0aGlzLnBvcyksdCx0aGlzLnBvcyxyLHRoaXMuY3VyUG9zaXRpb24oKSl9LEcuc2tpcFNwYWNlPWZ1bmN0aW9uKCl7ZTpmb3IoO3RoaXMucG9zPHRoaXMuaW5wdXQubGVuZ3RoOyl7dmFyIGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtzd2l0Y2goZSl7Y2FzZSAzMjpjYXNlIDE2MDorK3RoaXMucG9zO2JyZWFrO2Nhc2UgMTM6dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzEpPT09MTAmJisrdGhpcy5wb3M7Y2FzZSAxMDpjYXNlIDgyMzI6Y2FzZSA4MjMzOisrdGhpcy5wb3MsdGhpcy5vcHRpb25zLmxvY2F0aW9ucyYmKCsrdGhpcy5jdXJMaW5lLHRoaXMubGluZVN0YXJ0PXRoaXMucG9zKTticmVhaztjYXNlIDQ3OnN3aXRjaCh0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMSkpe2Nhc2UgNDI6dGhpcy5za2lwQmxvY2tDb21tZW50KCk7YnJlYWs7Y2FzZSA0Nzp0aGlzLnNraXBMaW5lQ29tbWVudCgyKTticmVhaztkZWZhdWx0OmJyZWFrIGV9YnJlYWs7ZGVmYXVsdDppZihlPjgmJmU8MTR8fGU+PTU3NjAmJmFlLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShlKSkpKyt0aGlzLnBvcztlbHNlIGJyZWFrIGV9fX0sRy5maW5pc2hUb2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuZW5kPXRoaXMucG9zLHRoaXMub3B0aW9ucy5sb2NhdGlvbnMmJih0aGlzLmVuZExvYz10aGlzLmN1clBvc2l0aW9uKCkpO3ZhciByPXRoaXMudHlwZTt0aGlzLnR5cGU9ZSx0aGlzLnZhbHVlPXQsdGhpcy51cGRhdGVDb250ZXh0KHIpfSxHLnJlYWRUb2tlbl9kb3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMSk7aWYoZT49NDgmJmU8PTU3KXJldHVybiB0aGlzLnJlYWROdW1iZXIoITApO3ZhciB0PXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysyKTtyZXR1cm4gdGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj02JiZlPT09NDYmJnQ9PT00Nj8odGhpcy5wb3MrPTMsdGhpcy5maW5pc2hUb2tlbihpLmVsbGlwc2lzKSk6KCsrdGhpcy5wb3MsdGhpcy5maW5pc2hUb2tlbihpLmRvdCkpfSxHLnJlYWRUb2tlbl9zbGFzaD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysxKTtyZXR1cm4gdGhpcy5leHByQWxsb3dlZD8oKyt0aGlzLnBvcyx0aGlzLnJlYWRSZWdleHAoKSk6ZT09PTYxP3RoaXMuZmluaXNoT3AoaS5hc3NpZ24sMik6dGhpcy5maW5pc2hPcChpLnNsYXNoLDEpfSxHLnJlYWRUb2tlbl9tdWx0X21vZHVsb19leHA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzEpLHI9MSxzPWU9PT00Mj9pLnN0YXI6aS5tb2R1bG87cmV0dXJuIHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49NyYmZT09PTQyJiZ0PT09NDImJigrK3Iscz1pLnN0YXJzdGFyLHQ9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzIpKSx0PT09NjE/dGhpcy5maW5pc2hPcChpLmFzc2lnbixyKzEpOnRoaXMuZmluaXNoT3AocyxyKX0sRy5yZWFkVG9rZW5fcGlwZV9hbXA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzEpO2lmKHQ9PT1lKXtpZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTEyKXt2YXIgcj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMik7aWYocj09PTYxKXJldHVybiB0aGlzLmZpbmlzaE9wKGkuYXNzaWduLDMpfXJldHVybiB0aGlzLmZpbmlzaE9wKGU9PT0xMjQ/aS5sb2dpY2FsT1I6aS5sb2dpY2FsQU5ELDIpfXJldHVybiB0PT09NjE/dGhpcy5maW5pc2hPcChpLmFzc2lnbiwyKTp0aGlzLmZpbmlzaE9wKGU9PT0xMjQ/aS5iaXR3aXNlT1I6aS5iaXR3aXNlQU5ELDEpfSxHLnJlYWRUb2tlbl9jYXJldD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysxKTtyZXR1cm4gZT09PTYxP3RoaXMuZmluaXNoT3AoaS5hc3NpZ24sMik6dGhpcy5maW5pc2hPcChpLmJpdHdpc2VYT1IsMSl9LEcucmVhZFRva2VuX3BsdXNfbWluPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysxKTtyZXR1cm4gdD09PWU/dD09PTQ1JiYhdGhpcy5pbk1vZHVsZSYmdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzIpPT09NjImJih0aGlzLmxhc3RUb2tFbmQ9PT0wfHxfLnRlc3QodGhpcy5pbnB1dC5zbGljZSh0aGlzLmxhc3RUb2tFbmQsdGhpcy5wb3MpKSk/KHRoaXMuc2tpcExpbmVDb21tZW50KDMpLHRoaXMuc2tpcFNwYWNlKCksdGhpcy5uZXh0VG9rZW4oKSk6dGhpcy5maW5pc2hPcChpLmluY0RlYywyKTp0PT09NjE/dGhpcy5maW5pc2hPcChpLmFzc2lnbiwyKTp0aGlzLmZpbmlzaE9wKGkucGx1c01pbiwxKX0sRy5yZWFkVG9rZW5fbHRfZ3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzEpLHI9MTtyZXR1cm4gdD09PWU/KHI9ZT09PTYyJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMik9PT02Mj8zOjIsdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zK3IpPT09NjE/dGhpcy5maW5pc2hPcChpLmFzc2lnbixyKzEpOnRoaXMuZmluaXNoT3AoaS5iaXRTaGlmdCxyKSk6dD09PTMzJiZlPT09NjAmJiF0aGlzLmluTW9kdWxlJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMik9PT00NSYmdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzMpPT09NDU/KHRoaXMuc2tpcExpbmVDb21tZW50KDQpLHRoaXMuc2tpcFNwYWNlKCksdGhpcy5uZXh0VG9rZW4oKSk6KHQ9PT02MSYmKHI9MiksdGhpcy5maW5pc2hPcChpLnJlbGF0aW9uYWwscikpfSxHLnJlYWRUb2tlbl9lcV9leGNsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysxKTtyZXR1cm4gdD09PTYxP3RoaXMuZmluaXNoT3AoaS5lcXVhbGl0eSx0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMik9PT02MT8zOjIpOmU9PT02MSYmdD09PTYyJiZ0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTY/KHRoaXMucG9zKz0yLHRoaXMuZmluaXNoVG9rZW4oaS5hcnJvdykpOnRoaXMuZmluaXNoT3AoZT09PTYxP2kuZXE6aS5wcmVmaXgsMSl9LEcucmVhZFRva2VuX3F1ZXN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uO2lmKGU+PTExKXt2YXIgdD10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMSk7aWYodD09PTQ2KXt2YXIgcj10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MrMik7aWYocjw0OHx8cj41NylyZXR1cm4gdGhpcy5maW5pc2hPcChpLnF1ZXN0aW9uRG90LDIpfWlmKHQ9PT02Myl7aWYoZT49MTIpe3ZhciBzPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysyKTtpZihzPT09NjEpcmV0dXJuIHRoaXMuZmluaXNoT3AoaS5hc3NpZ24sMyl9cmV0dXJuIHRoaXMuZmluaXNoT3AoaS5jb2FsZXNjZSwyKX19cmV0dXJuIHRoaXMuZmluaXNoT3AoaS5xdWVzdGlvbiwxKX0sRy5yZWFkVG9rZW5fbnVtYmVyU2lnbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5lY21hVmVyc2lvbix0PTM1O2lmKGU+PTEzJiYoKyt0aGlzLnBvcyx0PXRoaXMuZnVsbENoYXJDb2RlQXRQb3MoKSx2KHQsITApfHx0PT09OTIpKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGkucHJpdmF0ZUlkLHRoaXMucmVhZFdvcmQxKCkpO3RoaXMucmFpc2UodGhpcy5wb3MsXCJVbmV4cGVjdGVkIGNoYXJhY3RlciAnXCIrWWUodCkrXCInXCIpfSxHLmdldFRva2VuRnJvbUNvZGU9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UgNDY6cmV0dXJuIHRoaXMucmVhZFRva2VuX2RvdCgpO2Nhc2UgNDA6cmV0dXJuKyt0aGlzLnBvcyx0aGlzLmZpbmlzaFRva2VuKGkucGFyZW5MKTtjYXNlIDQxOnJldHVybisrdGhpcy5wb3MsdGhpcy5maW5pc2hUb2tlbihpLnBhcmVuUik7Y2FzZSA1OTpyZXR1cm4rK3RoaXMucG9zLHRoaXMuZmluaXNoVG9rZW4oaS5zZW1pKTtjYXNlIDQ0OnJldHVybisrdGhpcy5wb3MsdGhpcy5maW5pc2hUb2tlbihpLmNvbW1hKTtjYXNlIDkxOnJldHVybisrdGhpcy5wb3MsdGhpcy5maW5pc2hUb2tlbihpLmJyYWNrZXRMKTtjYXNlIDkzOnJldHVybisrdGhpcy5wb3MsdGhpcy5maW5pc2hUb2tlbihpLmJyYWNrZXRSKTtjYXNlIDEyMzpyZXR1cm4rK3RoaXMucG9zLHRoaXMuZmluaXNoVG9rZW4oaS5icmFjZUwpO2Nhc2UgMTI1OnJldHVybisrdGhpcy5wb3MsdGhpcy5maW5pc2hUb2tlbihpLmJyYWNlUik7Y2FzZSA1ODpyZXR1cm4rK3RoaXMucG9zLHRoaXMuZmluaXNoVG9rZW4oaS5jb2xvbik7Y2FzZSA5NjppZih0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb248NilicmVhaztyZXR1cm4rK3RoaXMucG9zLHRoaXMuZmluaXNoVG9rZW4oaS5iYWNrUXVvdGUpO2Nhc2UgNDg6dmFyIHQ9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKzEpO2lmKHQ9PT0xMjB8fHQ9PT04OClyZXR1cm4gdGhpcy5yZWFkUmFkaXhOdW1iZXIoMTYpO2lmKHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49Nil7aWYodD09PTExMXx8dD09PTc5KXJldHVybiB0aGlzLnJlYWRSYWRpeE51bWJlcig4KTtpZih0PT09OTh8fHQ9PT02NilyZXR1cm4gdGhpcy5yZWFkUmFkaXhOdW1iZXIoMil9Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6cmV0dXJuIHRoaXMucmVhZE51bWJlcighMSk7Y2FzZSAzNDpjYXNlIDM5OnJldHVybiB0aGlzLnJlYWRTdHJpbmcoZSk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5yZWFkVG9rZW5fc2xhc2goKTtjYXNlIDM3OmNhc2UgNDI6cmV0dXJuIHRoaXMucmVhZFRva2VuX211bHRfbW9kdWxvX2V4cChlKTtjYXNlIDEyNDpjYXNlIDM4OnJldHVybiB0aGlzLnJlYWRUb2tlbl9waXBlX2FtcChlKTtjYXNlIDk0OnJldHVybiB0aGlzLnJlYWRUb2tlbl9jYXJldCgpO2Nhc2UgNDM6Y2FzZSA0NTpyZXR1cm4gdGhpcy5yZWFkVG9rZW5fcGx1c19taW4oZSk7Y2FzZSA2MDpjYXNlIDYyOnJldHVybiB0aGlzLnJlYWRUb2tlbl9sdF9ndChlKTtjYXNlIDYxOmNhc2UgMzM6cmV0dXJuIHRoaXMucmVhZFRva2VuX2VxX2V4Y2woZSk7Y2FzZSA2MzpyZXR1cm4gdGhpcy5yZWFkVG9rZW5fcXVlc3Rpb24oKTtjYXNlIDEyNjpyZXR1cm4gdGhpcy5maW5pc2hPcChpLnByZWZpeCwxKTtjYXNlIDM1OnJldHVybiB0aGlzLnJlYWRUb2tlbl9udW1iZXJTaWduKCl9dGhpcy5yYWlzZSh0aGlzLnBvcyxcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyICdcIitZZShlKStcIidcIil9LEcuZmluaXNoT3A9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmlucHV0LnNsaWNlKHRoaXMucG9zLHRoaXMucG9zK3QpO3JldHVybiB0aGlzLnBvcys9dCx0aGlzLmZpbmlzaFRva2VuKGUscil9LEcucmVhZFJlZ2V4cD1mdW5jdGlvbigpe2Zvcih2YXIgZSx0LHI9dGhpcy5wb3M7Oyl7dGhpcy5wb3M+PXRoaXMuaW5wdXQubGVuZ3RoJiZ0aGlzLnJhaXNlKHIsXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uXCIpO3ZhciBzPXRoaXMuaW5wdXQuY2hhckF0KHRoaXMucG9zKTtpZihfLnRlc3QocykmJnRoaXMucmFpc2UocixcIlVudGVybWluYXRlZCByZWd1bGFyIGV4cHJlc3Npb25cIiksZSllPSExO2Vsc2V7aWYocz09PVwiW1wiKXQ9ITA7ZWxzZSBpZihzPT09XCJdXCImJnQpdD0hMTtlbHNlIGlmKHM9PT1cIi9cIiYmIXQpYnJlYWs7ZT1zPT09XCJcXFxcXCJ9Kyt0aGlzLnBvc312YXIgYT10aGlzLmlucHV0LnNsaWNlKHIsdGhpcy5wb3MpOysrdGhpcy5wb3M7dmFyIGg9dGhpcy5wb3MsYz10aGlzLnJlYWRXb3JkMSgpO3RoaXMuY29udGFpbnNFc2MmJnRoaXMudW5leHBlY3RlZChoKTt2YXIgZD10aGlzLnJlZ2V4cFN0YXRlfHwodGhpcy5yZWdleHBTdGF0ZT1uZXcgZGUodGhpcykpO2QucmVzZXQocixhLGMpLHRoaXMudmFsaWRhdGVSZWdFeHBGbGFncyhkKSx0aGlzLnZhbGlkYXRlUmVnRXhwUGF0dGVybihkKTt2YXIgeD1udWxsO3RyeXt4PW5ldyBSZWdFeHAoYSxjKX1jYXRjaHt9cmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oaS5yZWdleHAse3BhdHRlcm46YSxmbGFnczpjLHZhbHVlOnh9KX0sRy5yZWFkSW50PWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIHM9dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uPj0xMiYmdD09PXZvaWQgMCxhPXImJnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcyk9PT00OCxoPXRoaXMucG9zLGM9MCxkPTAseD0wLFU9dD09bnVsbD8xLzA6dDt4PFU7Kyt4LCsrdGhpcy5wb3Mpe3ZhciBXPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcykscmU9dm9pZCAwO2lmKHMmJlc9PT05NSl7YSYmdGhpcy5yYWlzZVJlY292ZXJhYmxlKHRoaXMucG9zLFwiTnVtZXJpYyBzZXBhcmF0b3IgaXMgbm90IGFsbG93ZWQgaW4gbGVnYWN5IG9jdGFsIG51bWVyaWMgbGl0ZXJhbHNcIiksZD09PTk1JiZ0aGlzLnJhaXNlUmVjb3ZlcmFibGUodGhpcy5wb3MsXCJOdW1lcmljIHNlcGFyYXRvciBtdXN0IGJlIGV4YWN0bHkgb25lIHVuZGVyc2NvcmVcIikseD09PTAmJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0aGlzLnBvcyxcIk51bWVyaWMgc2VwYXJhdG9yIGlzIG5vdCBhbGxvd2VkIGF0IHRoZSBmaXJzdCBvZiBkaWdpdHNcIiksZD1XO2NvbnRpbnVlfWlmKFc+PTk3P3JlPVctOTcrMTA6Vz49NjU/cmU9Vy02NSsxMDpXPj00OCYmVzw9NTc/cmU9Vy00ODpyZT0xLzAscmU+PWUpYnJlYWs7ZD1XLGM9YyplK3JlfXJldHVybiBzJiZkPT09OTUmJnRoaXMucmFpc2VSZWNvdmVyYWJsZSh0aGlzLnBvcy0xLFwiTnVtZXJpYyBzZXBhcmF0b3IgaXMgbm90IGFsbG93ZWQgYXQgdGhlIGxhc3Qgb2YgZGlnaXRzXCIpLHRoaXMucG9zPT09aHx8dCE9bnVsbCYmdGhpcy5wb3MtaCE9PXQ/bnVsbDpjfTtmdW5jdGlvbiBRYShlLHQpe3JldHVybiB0P3BhcnNlSW50KGUsOCk6cGFyc2VGbG9hdChlLnJlcGxhY2UoL18vZyxcIlwiKSl9ZnVuY3Rpb24gVnIoZSl7cmV0dXJuIHR5cGVvZiBCaWdJbnQhPVwiZnVuY3Rpb25cIj9udWxsOkJpZ0ludChlLnJlcGxhY2UoL18vZyxcIlwiKSl9Ry5yZWFkUmFkaXhOdW1iZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wb3M7dGhpcy5wb3MrPTI7dmFyIHI9dGhpcy5yZWFkSW50KGUpO3JldHVybiByPT1udWxsJiZ0aGlzLnJhaXNlKHRoaXMuc3RhcnQrMixcIkV4cGVjdGVkIG51bWJlciBpbiByYWRpeCBcIitlKSx0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTExJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MpPT09MTEwPyhyPVZyKHRoaXMuaW5wdXQuc2xpY2UodCx0aGlzLnBvcykpLCsrdGhpcy5wb3MpOnYodGhpcy5mdWxsQ2hhckNvZGVBdFBvcygpKSYmdGhpcy5yYWlzZSh0aGlzLnBvcyxcIklkZW50aWZpZXIgZGlyZWN0bHkgYWZ0ZXIgbnVtYmVyXCIpLHRoaXMuZmluaXNoVG9rZW4oaS5udW0scil9LEcucmVhZE51bWJlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvczshZSYmdGhpcy5yZWFkSW50KDEwLHZvaWQgMCwhMCk9PT1udWxsJiZ0aGlzLnJhaXNlKHQsXCJJbnZhbGlkIG51bWJlclwiKTt2YXIgcj10aGlzLnBvcy10Pj0yJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodCk9PT00ODtyJiZ0aGlzLnN0cmljdCYmdGhpcy5yYWlzZSh0LFwiSW52YWxpZCBudW1iZXJcIik7dmFyIHM9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtpZighciYmIWUmJnRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49MTEmJnM9PT0xMTApe3ZhciBhPVZyKHRoaXMuaW5wdXQuc2xpY2UodCx0aGlzLnBvcykpO3JldHVybisrdGhpcy5wb3Msdih0aGlzLmZ1bGxDaGFyQ29kZUF0UG9zKCkpJiZ0aGlzLnJhaXNlKHRoaXMucG9zLFwiSWRlbnRpZmllciBkaXJlY3RseSBhZnRlciBudW1iZXJcIiksdGhpcy5maW5pc2hUb2tlbihpLm51bSxhKX1yJiYvWzg5XS8udGVzdCh0aGlzLmlucHV0LnNsaWNlKHQsdGhpcy5wb3MpKSYmKHI9ITEpLHM9PT00NiYmIXImJigrK3RoaXMucG9zLHRoaXMucmVhZEludCgxMCkscz10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MpKSwocz09PTY5fHxzPT09MTAxKSYmIXImJihzPXRoaXMuaW5wdXQuY2hhckNvZGVBdCgrK3RoaXMucG9zKSwocz09PTQzfHxzPT09NDUpJiYrK3RoaXMucG9zLHRoaXMucmVhZEludCgxMCk9PT1udWxsJiZ0aGlzLnJhaXNlKHQsXCJJbnZhbGlkIG51bWJlclwiKSksdih0aGlzLmZ1bGxDaGFyQ29kZUF0UG9zKCkpJiZ0aGlzLnJhaXNlKHRoaXMucG9zLFwiSWRlbnRpZmllciBkaXJlY3RseSBhZnRlciBudW1iZXJcIik7dmFyIGg9UWEodGhpcy5pbnB1dC5zbGljZSh0LHRoaXMucG9zKSxyKTtyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihpLm51bSxoKX0sRy5yZWFkQ29kZVBvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKSx0O2lmKGU9PT0xMjMpe3RoaXMub3B0aW9ucy5lY21hVmVyc2lvbjw2JiZ0aGlzLnVuZXhwZWN0ZWQoKTt2YXIgcj0rK3RoaXMucG9zO3Q9dGhpcy5yZWFkSGV4Q2hhcih0aGlzLmlucHV0LmluZGV4T2YoXCJ9XCIsdGhpcy5wb3MpLXRoaXMucG9zKSwrK3RoaXMucG9zLHQ+MTExNDExMSYmdGhpcy5pbnZhbGlkU3RyaW5nVG9rZW4ocixcIkNvZGUgcG9pbnQgb3V0IG9mIGJvdW5kc1wiKX1lbHNlIHQ9dGhpcy5yZWFkSGV4Q2hhcig0KTtyZXR1cm4gdH07ZnVuY3Rpb24gWWUoZSl7cmV0dXJuIGU8PTY1NTM1P1N0cmluZy5mcm9tQ2hhckNvZGUoZSk6KGUtPTY1NTM2LFN0cmluZy5mcm9tQ2hhckNvZGUoKGU+PjEwKSs1NTI5NiwoZSYxMDIzKSs1NjMyMCkpfUcucmVhZFN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9XCJcIixyPSsrdGhpcy5wb3M7Oyl7dGhpcy5wb3M+PXRoaXMuaW5wdXQubGVuZ3RoJiZ0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGNvbnN0YW50XCIpO3ZhciBzPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcyk7aWYocz09PWUpYnJlYWs7cz09PTkyPyh0Kz10aGlzLmlucHV0LnNsaWNlKHIsdGhpcy5wb3MpLHQrPXRoaXMucmVhZEVzY2FwZWRDaGFyKCExKSxyPXRoaXMucG9zKTpzPT09ODIzMnx8cz09PTgyMzM/KHRoaXMub3B0aW9ucy5lY21hVmVyc2lvbjwxMCYmdGhpcy5yYWlzZSh0aGlzLnN0YXJ0LFwiVW50ZXJtaW5hdGVkIHN0cmluZyBjb25zdGFudFwiKSwrK3RoaXMucG9zLHRoaXMub3B0aW9ucy5sb2NhdGlvbnMmJih0aGlzLmN1ckxpbmUrKyx0aGlzLmxpbmVTdGFydD10aGlzLnBvcykpOihNKHMpJiZ0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGNvbnN0YW50XCIpLCsrdGhpcy5wb3MpfXJldHVybiB0Kz10aGlzLmlucHV0LnNsaWNlKHIsdGhpcy5wb3MrKyksdGhpcy5maW5pc2hUb2tlbihpLnN0cmluZyx0KX07dmFyIFJyPXt9O0cudHJ5UmVhZFRlbXBsYXRlVG9rZW49ZnVuY3Rpb24oKXt0aGlzLmluVGVtcGxhdGVFbGVtZW50PSEwO3RyeXt0aGlzLnJlYWRUbXBsVG9rZW4oKX1jYXRjaChlKXtpZihlPT09UnIpdGhpcy5yZWFkSW52YWxpZFRlbXBsYXRlVG9rZW4oKTtlbHNlIHRocm93IGV9dGhpcy5pblRlbXBsYXRlRWxlbWVudD0hMX0sRy5pbnZhbGlkU3RyaW5nVG9rZW49ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmluVGVtcGxhdGVFbGVtZW50JiZ0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTkpdGhyb3cgUnI7dGhpcy5yYWlzZShlLHQpfSxHLnJlYWRUbXBsVG9rZW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9XCJcIix0PXRoaXMucG9zOzspe3RoaXMucG9zPj10aGlzLmlucHV0Lmxlbmd0aCYmdGhpcy5yYWlzZSh0aGlzLnN0YXJ0LFwiVW50ZXJtaW5hdGVkIHRlbXBsYXRlXCIpO3ZhciByPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcyk7aWYocj09PTk2fHxyPT09MzYmJnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysxKT09PTEyMylyZXR1cm4gdGhpcy5wb3M9PT10aGlzLnN0YXJ0JiYodGhpcy50eXBlPT09aS50ZW1wbGF0ZXx8dGhpcy50eXBlPT09aS5pbnZhbGlkVGVtcGxhdGUpP3I9PT0zNj8odGhpcy5wb3MrPTIsdGhpcy5maW5pc2hUb2tlbihpLmRvbGxhckJyYWNlTCkpOigrK3RoaXMucG9zLHRoaXMuZmluaXNoVG9rZW4oaS5iYWNrUXVvdGUpKTooZSs9dGhpcy5pbnB1dC5zbGljZSh0LHRoaXMucG9zKSx0aGlzLmZpbmlzaFRva2VuKGkudGVtcGxhdGUsZSkpO2lmKHI9PT05MillKz10aGlzLmlucHV0LnNsaWNlKHQsdGhpcy5wb3MpLGUrPXRoaXMucmVhZEVzY2FwZWRDaGFyKCEwKSx0PXRoaXMucG9zO2Vsc2UgaWYoTShyKSl7c3dpdGNoKGUrPXRoaXMuaW5wdXQuc2xpY2UodCx0aGlzLnBvcyksKyt0aGlzLnBvcyxyKXtjYXNlIDEzOnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcyk9PT0xMCYmKyt0aGlzLnBvcztjYXNlIDEwOmUrPWBcbmA7YnJlYWs7ZGVmYXVsdDplKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpO2JyZWFrfXRoaXMub3B0aW9ucy5sb2NhdGlvbnMmJigrK3RoaXMuY3VyTGluZSx0aGlzLmxpbmVTdGFydD10aGlzLnBvcyksdD10aGlzLnBvc31lbHNlKyt0aGlzLnBvc319LEcucmVhZEludmFsaWRUZW1wbGF0ZVRva2VuPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLnBvczx0aGlzLmlucHV0Lmxlbmd0aDt0aGlzLnBvcysrKXN3aXRjaCh0aGlzLmlucHV0W3RoaXMucG9zXSl7Y2FzZVwiXFxcXFwiOisrdGhpcy5wb3M7YnJlYWs7Y2FzZVwiJFwiOmlmKHRoaXMuaW5wdXRbdGhpcy5wb3MrMV0hPT1cIntcIilicmVhaztjYXNlXCJgXCI6cmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oaS5pbnZhbGlkVGVtcGxhdGUsdGhpcy5pbnB1dC5zbGljZSh0aGlzLnN0YXJ0LHRoaXMucG9zKSl9dGhpcy5yYWlzZSh0aGlzLnN0YXJ0LFwiVW50ZXJtaW5hdGVkIHRlbXBsYXRlXCIpfSxHLnJlYWRFc2NhcGVkQ2hhcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmlucHV0LmNoYXJDb2RlQXQoKyt0aGlzLnBvcyk7c3dpdGNoKCsrdGhpcy5wb3MsdCl7Y2FzZSAxMTA6cmV0dXJuYFxuYDtjYXNlIDExNDpyZXR1cm5cIlxcclwiO2Nhc2UgMTIwOnJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMucmVhZEhleENoYXIoMikpO2Nhc2UgMTE3OnJldHVybiBZZSh0aGlzLnJlYWRDb2RlUG9pbnQoKSk7Y2FzZSAxMTY6cmV0dXJuXCJcdFwiO2Nhc2UgOTg6cmV0dXJuXCJcXGJcIjtjYXNlIDExODpyZXR1cm5cIlxcdlwiO2Nhc2UgMTAyOnJldHVyblwiXFxmXCI7Y2FzZSAxMzp0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MpPT09MTAmJisrdGhpcy5wb3M7Y2FzZSAxMDpyZXR1cm4gdGhpcy5vcHRpb25zLmxvY2F0aW9ucyYmKHRoaXMubGluZVN0YXJ0PXRoaXMucG9zLCsrdGhpcy5jdXJMaW5lKSxcIlwiO2Nhc2UgNTY6Y2FzZSA1NzppZih0aGlzLnN0cmljdCYmdGhpcy5pbnZhbGlkU3RyaW5nVG9rZW4odGhpcy5wb3MtMSxcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIpLGUpe3ZhciByPXRoaXMucG9zLTE7cmV0dXJuIHRoaXMuaW52YWxpZFN0cmluZ1Rva2VuKHIsXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBpbiB0ZW1wbGF0ZSBzdHJpbmdcIiksbnVsbH1kZWZhdWx0OmlmKHQ+PTQ4JiZ0PD01NSl7dmFyIHM9dGhpcy5pbnB1dC5zdWJzdHIodGhpcy5wb3MtMSwzKS5tYXRjaCgvXlswLTddKy8pWzBdLGE9cGFyc2VJbnQocyw4KTtyZXR1cm4gYT4yNTUmJihzPXMuc2xpY2UoMCwtMSksYT1wYXJzZUludChzLDgpKSx0aGlzLnBvcys9cy5sZW5ndGgtMSx0PXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcyksKHMhPT1cIjBcInx8dD09PTU2fHx0PT09NTcpJiYodGhpcy5zdHJpY3R8fGUpJiZ0aGlzLmludmFsaWRTdHJpbmdUb2tlbih0aGlzLnBvcy0xLXMubGVuZ3RoLGU/XCJPY3RhbCBsaXRlcmFsIGluIHRlbXBsYXRlIHN0cmluZ1wiOlwiT2N0YWwgbGl0ZXJhbCBpbiBzdHJpY3QgbW9kZVwiKSxTdHJpbmcuZnJvbUNoYXJDb2RlKGEpfXJldHVybiBNKHQpP1wiXCI6U3RyaW5nLmZyb21DaGFyQ29kZSh0KX19LEcucmVhZEhleENoYXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wb3Mscj10aGlzLnJlYWRJbnQoMTYsZSk7cmV0dXJuIHI9PT1udWxsJiZ0aGlzLmludmFsaWRTdHJpbmdUb2tlbih0LFwiQmFkIGNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcIikscn0sRy5yZWFkV29yZDE9ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5zRXNjPSExO2Zvcih2YXIgZT1cIlwiLHQ9ITAscj10aGlzLnBvcyxzPXRoaXMub3B0aW9ucy5lY21hVmVyc2lvbj49Njt0aGlzLnBvczx0aGlzLmlucHV0Lmxlbmd0aDspe3ZhciBhPXRoaXMuZnVsbENoYXJDb2RlQXRQb3MoKTtpZihxKGEscykpdGhpcy5wb3MrPWE8PTY1NTM1PzE6MjtlbHNlIGlmKGE9PT05Mil7dGhpcy5jb250YWluc0VzYz0hMCxlKz10aGlzLmlucHV0LnNsaWNlKHIsdGhpcy5wb3MpO3ZhciBoPXRoaXMucG9zO3RoaXMuaW5wdXQuY2hhckNvZGVBdCgrK3RoaXMucG9zKSE9PTExNyYmdGhpcy5pbnZhbGlkU3RyaW5nVG9rZW4odGhpcy5wb3MsXCJFeHBlY3RpbmcgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UgXFxcXHVYWFhYXCIpLCsrdGhpcy5wb3M7dmFyIGM9dGhpcy5yZWFkQ29kZVBvaW50KCk7KHQ/djpxKShjLHMpfHx0aGlzLmludmFsaWRTdHJpbmdUb2tlbihoLFwiSW52YWxpZCBVbmljb2RlIGVzY2FwZVwiKSxlKz1ZZShjKSxyPXRoaXMucG9zfWVsc2UgYnJlYWs7dD0hMX1yZXR1cm4gZSt0aGlzLmlucHV0LnNsaWNlKHIsdGhpcy5wb3MpfSxHLnJlYWRXb3JkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZWFkV29yZDEoKSx0PWkubmFtZTtyZXR1cm4gdGhpcy5rZXl3b3Jkcy50ZXN0KGUpJiYodD1IW2VdKSx0aGlzLmZpbmlzaFRva2VuKHQsZSl9O3ZhciBqcj1cIjguNy4wXCI7Wi5hY29ybj17UGFyc2VyOlosdmVyc2lvbjpqcixkZWZhdWx0T3B0aW9uczptZSxQb3NpdGlvbjpLLFNvdXJjZUxvY2F0aW9uOlgsZ2V0TGluZUluZm86b2UsTm9kZTpWZSxUb2tlblR5cGU6Qix0b2tUeXBlczppLGtleXdvcmRUeXBlczpILFRva0NvbnRleHQ6bmUsdG9rQ29udGV4dHM6USxpc0lkZW50aWZpZXJDaGFyOnEsaXNJZGVudGlmaWVyU3RhcnQ6dixUb2tlbjpKZSxpc05ld0xpbmU6TSxsaW5lQnJlYWs6XyxsaW5lQnJlYWtHOlAsbm9uQVNDSUl3aGl0ZXNwYWNlOmFlfTtmdW5jdGlvbiBaYShlLHQpe3JldHVybiBaLnBhcnNlKGUsdCl9ZnVuY3Rpb24gJGEoZSx0LHIpe3JldHVybiBaLnBhcnNlRXhwcmVzc2lvbkF0KGUsdCxyKX1mdW5jdGlvbiBlbihlLHQpe3JldHVybiBaLnRva2VuaXplcihlLHQpfXUuTm9kZT1WZSx1LlBhcnNlcj1aLHUuUG9zaXRpb249Syx1LlNvdXJjZUxvY2F0aW9uPVgsdS5Ub2tDb250ZXh0PW5lLHUuVG9rZW49SmUsdS5Ub2tlblR5cGU9Qix1LmRlZmF1bHRPcHRpb25zPW1lLHUuZ2V0TGluZUluZm89b2UsdS5pc0lkZW50aWZpZXJDaGFyPXEsdS5pc0lkZW50aWZpZXJTdGFydD12LHUuaXNOZXdMaW5lPU0sdS5rZXl3b3JkVHlwZXM9SCx1LmxpbmVCcmVhaz1fLHUubGluZUJyZWFrRz1QLHUubm9uQVNDSUl3aGl0ZXNwYWNlPWFlLHUucGFyc2U9WmEsdS5wYXJzZUV4cHJlc3Npb25BdD0kYSx1LnRva0NvbnRleHRzPVEsdS50b2tUeXBlcz1pLHUudG9rZW5pemVyPWVuLHUudmVyc2lvbj1qcixPYmplY3QuZGVmaW5lUHJvcGVydHkodSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0pfX0pLFNoPVkoe1wibm9kZV9tb2R1bGVzL2Fjb3JuLWpzeC94aHRtbC5qc1wiKG4sbyl7SigpLG8uZXhwb3J0cz17cXVvdDonXCInLGFtcDpcIiZcIixhcG9zOlwiJ1wiLGx0OlwiPFwiLGd0OlwiPlwiLG5ic3A6XCJcXHhBMFwiLGlleGNsOlwiXFx4QTFcIixjZW50OlwiXFx4QTJcIixwb3VuZDpcIlxceEEzXCIsY3VycmVuOlwiXFx4QTRcIix5ZW46XCJcXHhBNVwiLGJydmJhcjpcIlxceEE2XCIsc2VjdDpcIlxceEE3XCIsdW1sOlwiXFx4QThcIixjb3B5OlwiXFx4QTlcIixvcmRmOlwiXFx4QUFcIixsYXF1bzpcIlxceEFCXCIsbm90OlwiXFx4QUNcIixzaHk6XCJcXHhBRFwiLHJlZzpcIlxceEFFXCIsbWFjcjpcIlxceEFGXCIsZGVnOlwiXFx4QjBcIixwbHVzbW46XCJcXHhCMVwiLHN1cDI6XCJcXHhCMlwiLHN1cDM6XCJcXHhCM1wiLGFjdXRlOlwiXFx4QjRcIixtaWNybzpcIlxceEI1XCIscGFyYTpcIlxceEI2XCIsbWlkZG90OlwiXFx4QjdcIixjZWRpbDpcIlxceEI4XCIsc3VwMTpcIlxceEI5XCIsb3JkbTpcIlxceEJBXCIscmFxdW86XCJcXHhCQlwiLGZyYWMxNDpcIlxceEJDXCIsZnJhYzEyOlwiXFx4QkRcIixmcmFjMzQ6XCJcXHhCRVwiLGlxdWVzdDpcIlxceEJGXCIsQWdyYXZlOlwiXFx4QzBcIixBYWN1dGU6XCJcXHhDMVwiLEFjaXJjOlwiXFx4QzJcIixBdGlsZGU6XCJcXHhDM1wiLEF1bWw6XCJcXHhDNFwiLEFyaW5nOlwiXFx4QzVcIixBRWxpZzpcIlxceEM2XCIsQ2NlZGlsOlwiXFx4QzdcIixFZ3JhdmU6XCJcXHhDOFwiLEVhY3V0ZTpcIlxceEM5XCIsRWNpcmM6XCJcXHhDQVwiLEV1bWw6XCJcXHhDQlwiLElncmF2ZTpcIlxceENDXCIsSWFjdXRlOlwiXFx4Q0RcIixJY2lyYzpcIlxceENFXCIsSXVtbDpcIlxceENGXCIsRVRIOlwiXFx4RDBcIixOdGlsZGU6XCJcXHhEMVwiLE9ncmF2ZTpcIlxceEQyXCIsT2FjdXRlOlwiXFx4RDNcIixPY2lyYzpcIlxceEQ0XCIsT3RpbGRlOlwiXFx4RDVcIixPdW1sOlwiXFx4RDZcIix0aW1lczpcIlxceEQ3XCIsT3NsYXNoOlwiXFx4RDhcIixVZ3JhdmU6XCJcXHhEOVwiLFVhY3V0ZTpcIlxceERBXCIsVWNpcmM6XCJcXHhEQlwiLFV1bWw6XCJcXHhEQ1wiLFlhY3V0ZTpcIlxceEREXCIsVEhPUk46XCJcXHhERVwiLHN6bGlnOlwiXFx4REZcIixhZ3JhdmU6XCJcXHhFMFwiLGFhY3V0ZTpcIlxceEUxXCIsYWNpcmM6XCJcXHhFMlwiLGF0aWxkZTpcIlxceEUzXCIsYXVtbDpcIlxceEU0XCIsYXJpbmc6XCJcXHhFNVwiLGFlbGlnOlwiXFx4RTZcIixjY2VkaWw6XCJcXHhFN1wiLGVncmF2ZTpcIlxceEU4XCIsZWFjdXRlOlwiXFx4RTlcIixlY2lyYzpcIlxceEVBXCIsZXVtbDpcIlxceEVCXCIsaWdyYXZlOlwiXFx4RUNcIixpYWN1dGU6XCJcXHhFRFwiLGljaXJjOlwiXFx4RUVcIixpdW1sOlwiXFx4RUZcIixldGg6XCJcXHhGMFwiLG50aWxkZTpcIlxceEYxXCIsb2dyYXZlOlwiXFx4RjJcIixvYWN1dGU6XCJcXHhGM1wiLG9jaXJjOlwiXFx4RjRcIixvdGlsZGU6XCJcXHhGNVwiLG91bWw6XCJcXHhGNlwiLGRpdmlkZTpcIlxceEY3XCIsb3NsYXNoOlwiXFx4RjhcIix1Z3JhdmU6XCJcXHhGOVwiLHVhY3V0ZTpcIlxceEZBXCIsdWNpcmM6XCJcXHhGQlwiLHV1bWw6XCJcXHhGQ1wiLHlhY3V0ZTpcIlxceEZEXCIsdGhvcm46XCJcXHhGRVwiLHl1bWw6XCJcXHhGRlwiLE9FbGlnOlwiXFx1MDE1MlwiLG9lbGlnOlwiXFx1MDE1M1wiLFNjYXJvbjpcIlxcdTAxNjBcIixzY2Fyb246XCJcXHUwMTYxXCIsWXVtbDpcIlxcdTAxNzhcIixmbm9mOlwiXFx1MDE5MlwiLGNpcmM6XCJcXHUwMkM2XCIsdGlsZGU6XCJcXHUwMkRDXCIsQWxwaGE6XCJcXHUwMzkxXCIsQmV0YTpcIlxcdTAzOTJcIixHYW1tYTpcIlxcdTAzOTNcIixEZWx0YTpcIlxcdTAzOTRcIixFcHNpbG9uOlwiXFx1MDM5NVwiLFpldGE6XCJcXHUwMzk2XCIsRXRhOlwiXFx1MDM5N1wiLFRoZXRhOlwiXFx1MDM5OFwiLElvdGE6XCJcXHUwMzk5XCIsS2FwcGE6XCJcXHUwMzlBXCIsTGFtYmRhOlwiXFx1MDM5QlwiLE11OlwiXFx1MDM5Q1wiLE51OlwiXFx1MDM5RFwiLFhpOlwiXFx1MDM5RVwiLE9taWNyb246XCJcXHUwMzlGXCIsUGk6XCJcXHUwM0EwXCIsUmhvOlwiXFx1MDNBMVwiLFNpZ21hOlwiXFx1MDNBM1wiLFRhdTpcIlxcdTAzQTRcIixVcHNpbG9uOlwiXFx1MDNBNVwiLFBoaTpcIlxcdTAzQTZcIixDaGk6XCJcXHUwM0E3XCIsUHNpOlwiXFx1MDNBOFwiLE9tZWdhOlwiXFx1MDNBOVwiLGFscGhhOlwiXFx1MDNCMVwiLGJldGE6XCJcXHUwM0IyXCIsZ2FtbWE6XCJcXHUwM0IzXCIsZGVsdGE6XCJcXHUwM0I0XCIsZXBzaWxvbjpcIlxcdTAzQjVcIix6ZXRhOlwiXFx1MDNCNlwiLGV0YTpcIlxcdTAzQjdcIix0aGV0YTpcIlxcdTAzQjhcIixpb3RhOlwiXFx1MDNCOVwiLGthcHBhOlwiXFx1MDNCQVwiLGxhbWJkYTpcIlxcdTAzQkJcIixtdTpcIlxcdTAzQkNcIixudTpcIlxcdTAzQkRcIix4aTpcIlxcdTAzQkVcIixvbWljcm9uOlwiXFx1MDNCRlwiLHBpOlwiXFx1MDNDMFwiLHJobzpcIlxcdTAzQzFcIixzaWdtYWY6XCJcXHUwM0MyXCIsc2lnbWE6XCJcXHUwM0MzXCIsdGF1OlwiXFx1MDNDNFwiLHVwc2lsb246XCJcXHUwM0M1XCIscGhpOlwiXFx1MDNDNlwiLGNoaTpcIlxcdTAzQzdcIixwc2k6XCJcXHUwM0M4XCIsb21lZ2E6XCJcXHUwM0M5XCIsdGhldGFzeW06XCJcXHUwM0QxXCIsdXBzaWg6XCJcXHUwM0QyXCIscGl2OlwiXFx1MDNENlwiLGVuc3A6XCJcXHUyMDAyXCIsZW1zcDpcIlxcdTIwMDNcIix0aGluc3A6XCJcXHUyMDA5XCIsenduajpcIlxcdTIwMENcIix6d2o6XCJcXHUyMDBEXCIsbHJtOlwiXFx1MjAwRVwiLHJsbTpcIlxcdTIwMEZcIixuZGFzaDpcIlxcdTIwMTNcIixtZGFzaDpcIlxcdTIwMTRcIixsc3F1bzpcIlxcdTIwMThcIixyc3F1bzpcIlxcdTIwMTlcIixzYnF1bzpcIlxcdTIwMUFcIixsZHF1bzpcIlxcdTIwMUNcIixyZHF1bzpcIlxcdTIwMURcIixiZHF1bzpcIlxcdTIwMUVcIixkYWdnZXI6XCJcXHUyMDIwXCIsRGFnZ2VyOlwiXFx1MjAyMVwiLGJ1bGw6XCJcXHUyMDIyXCIsaGVsbGlwOlwiXFx1MjAyNlwiLHBlcm1pbDpcIlxcdTIwMzBcIixwcmltZTpcIlxcdTIwMzJcIixQcmltZTpcIlxcdTIwMzNcIixsc2FxdW86XCJcXHUyMDM5XCIscnNhcXVvOlwiXFx1MjAzQVwiLG9saW5lOlwiXFx1MjAzRVwiLGZyYXNsOlwiXFx1MjA0NFwiLGV1cm86XCJcXHUyMEFDXCIsaW1hZ2U6XCJcXHUyMTExXCIsd2VpZXJwOlwiXFx1MjExOFwiLHJlYWw6XCJcXHUyMTFDXCIsdHJhZGU6XCJcXHUyMTIyXCIsYWxlZnN5bTpcIlxcdTIxMzVcIixsYXJyOlwiXFx1MjE5MFwiLHVhcnI6XCJcXHUyMTkxXCIscmFycjpcIlxcdTIxOTJcIixkYXJyOlwiXFx1MjE5M1wiLGhhcnI6XCJcXHUyMTk0XCIsY3JhcnI6XCJcXHUyMUI1XCIsbEFycjpcIlxcdTIxRDBcIix1QXJyOlwiXFx1MjFEMVwiLHJBcnI6XCJcXHUyMUQyXCIsZEFycjpcIlxcdTIxRDNcIixoQXJyOlwiXFx1MjFENFwiLGZvcmFsbDpcIlxcdTIyMDBcIixwYXJ0OlwiXFx1MjIwMlwiLGV4aXN0OlwiXFx1MjIwM1wiLGVtcHR5OlwiXFx1MjIwNVwiLG5hYmxhOlwiXFx1MjIwN1wiLGlzaW46XCJcXHUyMjA4XCIsbm90aW46XCJcXHUyMjA5XCIsbmk6XCJcXHUyMjBCXCIscHJvZDpcIlxcdTIyMEZcIixzdW06XCJcXHUyMjExXCIsbWludXM6XCJcXHUyMjEyXCIsbG93YXN0OlwiXFx1MjIxN1wiLHJhZGljOlwiXFx1MjIxQVwiLHByb3A6XCJcXHUyMjFEXCIsaW5maW46XCJcXHUyMjFFXCIsYW5nOlwiXFx1MjIyMFwiLGFuZDpcIlxcdTIyMjdcIixvcjpcIlxcdTIyMjhcIixjYXA6XCJcXHUyMjI5XCIsY3VwOlwiXFx1MjIyQVwiLGludDpcIlxcdTIyMkJcIix0aGVyZTQ6XCJcXHUyMjM0XCIsc2ltOlwiXFx1MjIzQ1wiLGNvbmc6XCJcXHUyMjQ1XCIsYXN5bXA6XCJcXHUyMjQ4XCIsbmU6XCJcXHUyMjYwXCIsZXF1aXY6XCJcXHUyMjYxXCIsbGU6XCJcXHUyMjY0XCIsZ2U6XCJcXHUyMjY1XCIsc3ViOlwiXFx1MjI4MlwiLHN1cDpcIlxcdTIyODNcIixuc3ViOlwiXFx1MjI4NFwiLHN1YmU6XCJcXHUyMjg2XCIsc3VwZTpcIlxcdTIyODdcIixvcGx1czpcIlxcdTIyOTVcIixvdGltZXM6XCJcXHUyMjk3XCIscGVycDpcIlxcdTIyQTVcIixzZG90OlwiXFx1MjJDNVwiLGxjZWlsOlwiXFx1MjMwOFwiLHJjZWlsOlwiXFx1MjMwOVwiLGxmbG9vcjpcIlxcdTIzMEFcIixyZmxvb3I6XCJcXHUyMzBCXCIsbGFuZzpcIlxcdTIzMjlcIixyYW5nOlwiXFx1MjMyQVwiLGxvejpcIlxcdTI1Q0FcIixzcGFkZXM6XCJcXHUyNjYwXCIsY2x1YnM6XCJcXHUyNjYzXCIsaGVhcnRzOlwiXFx1MjY2NVwiLGRpYW1zOlwiXFx1MjY2NlwifX19KSxQYT1ZKHtcIm5vZGVfbW9kdWxlcy9hY29ybi1qc3gvaW5kZXguanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTt2YXIgdT1TaCgpLGw9L15bXFxkYS1mQS1GXSskLyxtPS9eXFxkKyQvLEU9bmV3IFdlYWtNYXA7ZnVuY3Rpb24geShnKXtnPWcuUGFyc2VyLmFjb3JufHxnO2xldCBWPUUuZ2V0KGcpO2lmKCFWKXtsZXQgUj1nLnRva1R5cGVzLE49Zy5Ub2tDb250ZXh0LFQ9Zy5Ub2tlblR5cGUsdj1uZXcgTihcIjx0YWdcIiwhMSkscT1uZXcgTihcIjwvdGFnXCIsITEpLEI9bmV3IE4oXCI8dGFnPi4uLjwvdGFnPlwiLCEwLCEwKSxJPXt0Y19vVGFnOnYsdGNfY1RhZzpxLHRjX2V4cHI6Qn0saz17anN4TmFtZTpuZXcgVChcImpzeE5hbWVcIiksanN4VGV4dDpuZXcgVChcImpzeFRleHRcIix7YmVmb3JlRXhwcjohMH0pLGpzeFRhZ1N0YXJ0Om5ldyBUKFwianN4VGFnU3RhcnRcIix7c3RhcnRzRXhwcjohMH0pLGpzeFRhZ0VuZDpuZXcgVChcImpzeFRhZ0VuZFwiKX07ay5qc3hUYWdTdGFydC51cGRhdGVDb250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5jb250ZXh0LnB1c2goQiksdGhpcy5jb250ZXh0LnB1c2godiksdGhpcy5leHByQWxsb3dlZD0hMX0say5qc3hUYWdFbmQudXBkYXRlQ29udGV4dD1mdW5jdGlvbihDKXtsZXQgSD10aGlzLmNvbnRleHQucG9wKCk7SD09PXYmJkM9PT1SLnNsYXNofHxIPT09cT8odGhpcy5jb250ZXh0LnBvcCgpLHRoaXMuZXhwckFsbG93ZWQ9dGhpcy5jdXJDb250ZXh0KCk9PT1CKTp0aGlzLmV4cHJBbGxvd2VkPSEwfSxWPXt0b2tDb250ZXh0czpJLHRva1R5cGVzOmt9LEUuc2V0KGcsVil9cmV0dXJuIFZ9ZnVuY3Rpb24gQShnKXtpZighZylyZXR1cm4gZztpZihnLnR5cGU9PT1cIkpTWElkZW50aWZpZXJcIilyZXR1cm4gZy5uYW1lO2lmKGcudHlwZT09PVwiSlNYTmFtZXNwYWNlZE5hbWVcIilyZXR1cm4gZy5uYW1lc3BhY2UubmFtZStcIjpcIitnLm5hbWUubmFtZTtpZihnLnR5cGU9PT1cIkpTWE1lbWJlckV4cHJlc3Npb25cIilyZXR1cm4gQShnLm9iamVjdCkrXCIuXCIrQShnLnByb3BlcnR5KX1vLmV4cG9ydHM9ZnVuY3Rpb24oZyl7cmV0dXJuIGc9Z3x8e30sZnVuY3Rpb24oVil7cmV0dXJuIGIoe2FsbG93TmFtZXNwYWNlczpnLmFsbG93TmFtZXNwYWNlcyE9PSExLGFsbG93TmFtZXNwYWNlZE9iamVjdHM6ISFnLmFsbG93TmFtZXNwYWNlZE9iamVjdHN9LFYpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG8uZXhwb3J0cyxcInRva1R5cGVzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB5KGN0KCkpLnRva1R5cGVzfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pO2Z1bmN0aW9uIGIoZyxWKXtsZXQgUj1WLmFjb3JufHxjdCgpLE49eShSKSxUPVIudG9rVHlwZXMsdj1OLnRva1R5cGVzLHE9Ui50b2tDb250ZXh0cyxCPU4udG9rQ29udGV4dHMudGNfb1RhZyxJPU4udG9rQ29udGV4dHMudGNfY1RhZyxrPU4udG9rQ29udGV4dHMudGNfZXhwcixDPVIuaXNOZXdMaW5lLEg9Ui5pc0lkZW50aWZpZXJTdGFydCxMPVIuaXNJZGVudGlmaWVyQ2hhcjtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBWe3N0YXRpYyBnZXQgYWNvcm5Kc3goKXtyZXR1cm4gTn1qc3hfcmVhZFRva2VuKCl7bGV0IGk9XCJcIixfPXRoaXMucG9zO2Zvcig7Oyl7dGhpcy5wb3M+PXRoaXMuaW5wdXQubGVuZ3RoJiZ0aGlzLnJhaXNlKHRoaXMuc3RhcnQsXCJVbnRlcm1pbmF0ZWQgSlNYIGNvbnRlbnRzXCIpO2xldCBQPXRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcyk7c3dpdGNoKFApe2Nhc2UgNjA6Y2FzZSAxMjM6cmV0dXJuIHRoaXMucG9zPT09dGhpcy5zdGFydD9QPT09NjAmJnRoaXMuZXhwckFsbG93ZWQ/KCsrdGhpcy5wb3MsdGhpcy5maW5pc2hUb2tlbih2LmpzeFRhZ1N0YXJ0KSk6dGhpcy5nZXRUb2tlbkZyb21Db2RlKFApOihpKz10aGlzLmlucHV0LnNsaWNlKF8sdGhpcy5wb3MpLHRoaXMuZmluaXNoVG9rZW4odi5qc3hUZXh0LGkpKTtjYXNlIDM4OmkrPXRoaXMuaW5wdXQuc2xpY2UoXyx0aGlzLnBvcyksaSs9dGhpcy5qc3hfcmVhZEVudGl0eSgpLF89dGhpcy5wb3M7YnJlYWs7Y2FzZSA2MjpjYXNlIDEyNTp0aGlzLnJhaXNlKHRoaXMucG9zLFwiVW5leHBlY3RlZCB0b2tlbiBgXCIrdGhpcy5pbnB1dFt0aGlzLnBvc10rXCJgLiBEaWQgeW91IG1lYW4gYFwiKyhQPT09NjI/XCImZ3Q7XCI6XCImcmJyYWNlO1wiKSsnYCBvciBge1wiJyt0aGlzLmlucHV0W3RoaXMucG9zXSsnXCJ9YD8nKTtkZWZhdWx0OkMoUCk/KGkrPXRoaXMuaW5wdXQuc2xpY2UoXyx0aGlzLnBvcyksaSs9dGhpcy5qc3hfcmVhZE5ld0xpbmUoITApLF89dGhpcy5wb3MpOisrdGhpcy5wb3N9fX1qc3hfcmVhZE5ld0xpbmUoaSl7bGV0IF89dGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zKSxQO3JldHVybisrdGhpcy5wb3MsXz09PTEzJiZ0aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MpPT09MTA/KCsrdGhpcy5wb3MsUD1pP2BcbmA6YFxcclxuYCk6UD1TdHJpbmcuZnJvbUNoYXJDb2RlKF8pLHRoaXMub3B0aW9ucy5sb2NhdGlvbnMmJigrK3RoaXMuY3VyTGluZSx0aGlzLmxpbmVTdGFydD10aGlzLnBvcyksUH1qc3hfcmVhZFN0cmluZyhpKXtsZXQgXz1cIlwiLFA9Kyt0aGlzLnBvcztmb3IoOzspe3RoaXMucG9zPj10aGlzLmlucHV0Lmxlbmd0aCYmdGhpcy5yYWlzZSh0aGlzLnN0YXJ0LFwiVW50ZXJtaW5hdGVkIHN0cmluZyBjb25zdGFudFwiKTtsZXQgTT10aGlzLmlucHV0LmNoYXJDb2RlQXQodGhpcy5wb3MpO2lmKE09PT1pKWJyZWFrO009PT0zOD8oXys9dGhpcy5pbnB1dC5zbGljZShQLHRoaXMucG9zKSxfKz10aGlzLmpzeF9yZWFkRW50aXR5KCksUD10aGlzLnBvcyk6QyhNKT8oXys9dGhpcy5pbnB1dC5zbGljZShQLHRoaXMucG9zKSxfKz10aGlzLmpzeF9yZWFkTmV3TGluZSghMSksUD10aGlzLnBvcyk6Kyt0aGlzLnBvc31yZXR1cm4gXys9dGhpcy5pbnB1dC5zbGljZShQLHRoaXMucG9zKyspLHRoaXMuZmluaXNoVG9rZW4oVC5zdHJpbmcsXyl9anN4X3JlYWRFbnRpdHkoKXtsZXQgaT1cIlwiLF89MCxQLE09dGhpcy5pbnB1dFt0aGlzLnBvc107TSE9PVwiJlwiJiZ0aGlzLnJhaXNlKHRoaXMucG9zLFwiRW50aXR5IG11c3Qgc3RhcnQgd2l0aCBhbiBhbXBlcnNhbmRcIik7bGV0IGVlPSsrdGhpcy5wb3M7Zm9yKDt0aGlzLnBvczx0aGlzLmlucHV0Lmxlbmd0aCYmXysrPDEwOyl7aWYoTT10aGlzLmlucHV0W3RoaXMucG9zKytdLE09PT1cIjtcIil7aVswXT09PVwiI1wiP2lbMV09PT1cInhcIj8oaT1pLnN1YnN0cigyKSxsLnRlc3QoaSkmJihQPVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoaSwxNikpKSk6KGk9aS5zdWJzdHIoMSksbS50ZXN0KGkpJiYoUD1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGksMTApKSkpOlA9dVtpXTticmVha31pKz1NfXJldHVybiBQfHwodGhpcy5wb3M9ZWUsXCImXCIpfWpzeF9yZWFkV29yZCgpe2xldCBpLF89dGhpcy5wb3M7ZG8gaT10aGlzLmlucHV0LmNoYXJDb2RlQXQoKyt0aGlzLnBvcyk7d2hpbGUoTChpKXx8aT09PTQ1KTtyZXR1cm4gdGhpcy5maW5pc2hUb2tlbih2LmpzeE5hbWUsdGhpcy5pbnB1dC5zbGljZShfLHRoaXMucG9zKSl9anN4X3BhcnNlSWRlbnRpZmllcigpe2xldCBpPXRoaXMuc3RhcnROb2RlKCk7cmV0dXJuIHRoaXMudHlwZT09PXYuanN4TmFtZT9pLm5hbWU9dGhpcy52YWx1ZTp0aGlzLnR5cGUua2V5d29yZD9pLm5hbWU9dGhpcy50eXBlLmtleXdvcmQ6dGhpcy51bmV4cGVjdGVkKCksdGhpcy5uZXh0KCksdGhpcy5maW5pc2hOb2RlKGksXCJKU1hJZGVudGlmaWVyXCIpfWpzeF9wYXJzZU5hbWVzcGFjZWROYW1lKCl7bGV0IGk9dGhpcy5zdGFydCxfPXRoaXMuc3RhcnRMb2MsUD10aGlzLmpzeF9wYXJzZUlkZW50aWZpZXIoKTtpZighZy5hbGxvd05hbWVzcGFjZXN8fCF0aGlzLmVhdChULmNvbG9uKSlyZXR1cm4gUDt2YXIgTT10aGlzLnN0YXJ0Tm9kZUF0KGksXyk7cmV0dXJuIE0ubmFtZXNwYWNlPVAsTS5uYW1lPXRoaXMuanN4X3BhcnNlSWRlbnRpZmllcigpLHRoaXMuZmluaXNoTm9kZShNLFwiSlNYTmFtZXNwYWNlZE5hbWVcIil9anN4X3BhcnNlRWxlbWVudE5hbWUoKXtpZih0aGlzLnR5cGU9PT12LmpzeFRhZ0VuZClyZXR1cm5cIlwiO2xldCBpPXRoaXMuc3RhcnQsXz10aGlzLnN0YXJ0TG9jLFA9dGhpcy5qc3hfcGFyc2VOYW1lc3BhY2VkTmFtZSgpO2Zvcih0aGlzLnR5cGU9PT1ULmRvdCYmUC50eXBlPT09XCJKU1hOYW1lc3BhY2VkTmFtZVwiJiYhZy5hbGxvd05hbWVzcGFjZWRPYmplY3RzJiZ0aGlzLnVuZXhwZWN0ZWQoKTt0aGlzLmVhdChULmRvdCk7KXtsZXQgTT10aGlzLnN0YXJ0Tm9kZUF0KGksXyk7TS5vYmplY3Q9UCxNLnByb3BlcnR5PXRoaXMuanN4X3BhcnNlSWRlbnRpZmllcigpLFA9dGhpcy5maW5pc2hOb2RlKE0sXCJKU1hNZW1iZXJFeHByZXNzaW9uXCIpfXJldHVybiBQfWpzeF9wYXJzZUF0dHJpYnV0ZVZhbHVlKCl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSBULmJyYWNlTDpsZXQgaT10aGlzLmpzeF9wYXJzZUV4cHJlc3Npb25Db250YWluZXIoKTtyZXR1cm4gaS5leHByZXNzaW9uLnR5cGU9PT1cIkpTWEVtcHR5RXhwcmVzc2lvblwiJiZ0aGlzLnJhaXNlKGkuc3RhcnQsXCJKU1ggYXR0cmlidXRlcyBtdXN0IG9ubHkgYmUgYXNzaWduZWQgYSBub24tZW1wdHkgZXhwcmVzc2lvblwiKSxpO2Nhc2Ugdi5qc3hUYWdTdGFydDpjYXNlIFQuc3RyaW5nOnJldHVybiB0aGlzLnBhcnNlRXhwckF0b20oKTtkZWZhdWx0OnRoaXMucmFpc2UodGhpcy5zdGFydCxcIkpTWCB2YWx1ZSBzaG91bGQgYmUgZWl0aGVyIGFuIGV4cHJlc3Npb24gb3IgYSBxdW90ZWQgSlNYIHRleHRcIil9fWpzeF9wYXJzZUVtcHR5RXhwcmVzc2lvbigpe2xldCBpPXRoaXMuc3RhcnROb2RlQXQodGhpcy5sYXN0VG9rRW5kLHRoaXMubGFzdFRva0VuZExvYyk7cmV0dXJuIHRoaXMuZmluaXNoTm9kZUF0KGksXCJKU1hFbXB0eUV4cHJlc3Npb25cIix0aGlzLnN0YXJ0LHRoaXMuc3RhcnRMb2MpfWpzeF9wYXJzZUV4cHJlc3Npb25Db250YWluZXIoKXtsZXQgaT10aGlzLnN0YXJ0Tm9kZSgpO3JldHVybiB0aGlzLm5leHQoKSxpLmV4cHJlc3Npb249dGhpcy50eXBlPT09VC5icmFjZVI/dGhpcy5qc3hfcGFyc2VFbXB0eUV4cHJlc3Npb24oKTp0aGlzLnBhcnNlRXhwcmVzc2lvbigpLHRoaXMuZXhwZWN0KFQuYnJhY2VSKSx0aGlzLmZpbmlzaE5vZGUoaSxcIkpTWEV4cHJlc3Npb25Db250YWluZXJcIil9anN4X3BhcnNlQXR0cmlidXRlKCl7bGV0IGk9dGhpcy5zdGFydE5vZGUoKTtyZXR1cm4gdGhpcy5lYXQoVC5icmFjZUwpPyh0aGlzLmV4cGVjdChULmVsbGlwc2lzKSxpLmFyZ3VtZW50PXRoaXMucGFyc2VNYXliZUFzc2lnbigpLHRoaXMuZXhwZWN0KFQuYnJhY2VSKSx0aGlzLmZpbmlzaE5vZGUoaSxcIkpTWFNwcmVhZEF0dHJpYnV0ZVwiKSk6KGkubmFtZT10aGlzLmpzeF9wYXJzZU5hbWVzcGFjZWROYW1lKCksaS52YWx1ZT10aGlzLmVhdChULmVxKT90aGlzLmpzeF9wYXJzZUF0dHJpYnV0ZVZhbHVlKCk6bnVsbCx0aGlzLmZpbmlzaE5vZGUoaSxcIkpTWEF0dHJpYnV0ZVwiKSl9anN4X3BhcnNlT3BlbmluZ0VsZW1lbnRBdChpLF8pe2xldCBQPXRoaXMuc3RhcnROb2RlQXQoaSxfKTtQLmF0dHJpYnV0ZXM9W107bGV0IE09dGhpcy5qc3hfcGFyc2VFbGVtZW50TmFtZSgpO2ZvcihNJiYoUC5uYW1lPU0pO3RoaXMudHlwZSE9PVQuc2xhc2gmJnRoaXMudHlwZSE9PXYuanN4VGFnRW5kOylQLmF0dHJpYnV0ZXMucHVzaCh0aGlzLmpzeF9wYXJzZUF0dHJpYnV0ZSgpKTtyZXR1cm4gUC5zZWxmQ2xvc2luZz10aGlzLmVhdChULnNsYXNoKSx0aGlzLmV4cGVjdCh2LmpzeFRhZ0VuZCksdGhpcy5maW5pc2hOb2RlKFAsTT9cIkpTWE9wZW5pbmdFbGVtZW50XCI6XCJKU1hPcGVuaW5nRnJhZ21lbnRcIil9anN4X3BhcnNlQ2xvc2luZ0VsZW1lbnRBdChpLF8pe2xldCBQPXRoaXMuc3RhcnROb2RlQXQoaSxfKSxNPXRoaXMuanN4X3BhcnNlRWxlbWVudE5hbWUoKTtyZXR1cm4gTSYmKFAubmFtZT1NKSx0aGlzLmV4cGVjdCh2LmpzeFRhZ0VuZCksdGhpcy5maW5pc2hOb2RlKFAsTT9cIkpTWENsb3NpbmdFbGVtZW50XCI6XCJKU1hDbG9zaW5nRnJhZ21lbnRcIil9anN4X3BhcnNlRWxlbWVudEF0KGksXyl7bGV0IFA9dGhpcy5zdGFydE5vZGVBdChpLF8pLE09W10sZWU9dGhpcy5qc3hfcGFyc2VPcGVuaW5nRWxlbWVudEF0KGksXyksYWU9bnVsbDtpZighZWUuc2VsZkNsb3Npbmcpe2U6Zm9yKDs7KXN3aXRjaCh0aGlzLnR5cGUpe2Nhc2Ugdi5qc3hUYWdTdGFydDppZihpPXRoaXMuc3RhcnQsXz10aGlzLnN0YXJ0TG9jLHRoaXMubmV4dCgpLHRoaXMuZWF0KFQuc2xhc2gpKXthZT10aGlzLmpzeF9wYXJzZUNsb3NpbmdFbGVtZW50QXQoaSxfKTticmVhayBlfU0ucHVzaCh0aGlzLmpzeF9wYXJzZUVsZW1lbnRBdChpLF8pKTticmVhaztjYXNlIHYuanN4VGV4dDpNLnB1c2godGhpcy5wYXJzZUV4cHJBdG9tKCkpO2JyZWFrO2Nhc2UgVC5icmFjZUw6TS5wdXNoKHRoaXMuanN4X3BhcnNlRXhwcmVzc2lvbkNvbnRhaW5lcigpKTticmVhaztkZWZhdWx0OnRoaXMudW5leHBlY3RlZCgpfUEoYWUubmFtZSkhPT1BKGVlLm5hbWUpJiZ0aGlzLnJhaXNlKGFlLnN0YXJ0LFwiRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDxcIitBKGVlLm5hbWUpK1wiPlwiKX1sZXQgdGU9ZWUubmFtZT9cIkVsZW1lbnRcIjpcIkZyYWdtZW50XCI7cmV0dXJuIFBbXCJvcGVuaW5nXCIrdGVdPWVlLFBbXCJjbG9zaW5nXCIrdGVdPWFlLFAuY2hpbGRyZW49TSx0aGlzLnR5cGU9PT1ULnJlbGF0aW9uYWwmJnRoaXMudmFsdWU9PT1cIjxcIiYmdGhpcy5yYWlzZSh0aGlzLnN0YXJ0LFwiQWRqYWNlbnQgSlNYIGVsZW1lbnRzIG11c3QgYmUgd3JhcHBlZCBpbiBhbiBlbmNsb3NpbmcgdGFnXCIpLHRoaXMuZmluaXNoTm9kZShQLFwiSlNYXCIrdGUpfWpzeF9wYXJzZVRleHQoKXtsZXQgaT10aGlzLnBhcnNlTGl0ZXJhbCh0aGlzLnZhbHVlKTtyZXR1cm4gaS50eXBlPVwiSlNYVGV4dFwiLGl9anN4X3BhcnNlRWxlbWVudCgpe2xldCBpPXRoaXMuc3RhcnQsXz10aGlzLnN0YXJ0TG9jO3JldHVybiB0aGlzLm5leHQoKSx0aGlzLmpzeF9wYXJzZUVsZW1lbnRBdChpLF8pfXBhcnNlRXhwckF0b20oaSl7cmV0dXJuIHRoaXMudHlwZT09PXYuanN4VGV4dD90aGlzLmpzeF9wYXJzZVRleHQoKTp0aGlzLnR5cGU9PT12LmpzeFRhZ1N0YXJ0P3RoaXMuanN4X3BhcnNlRWxlbWVudCgpOnN1cGVyLnBhcnNlRXhwckF0b20oaSl9cmVhZFRva2VuKGkpe2xldCBfPXRoaXMuY3VyQ29udGV4dCgpO2lmKF89PT1rKXJldHVybiB0aGlzLmpzeF9yZWFkVG9rZW4oKTtpZihfPT09Qnx8Xz09PUkpe2lmKEgoaSkpcmV0dXJuIHRoaXMuanN4X3JlYWRXb3JkKCk7aWYoaT09NjIpcmV0dXJuKyt0aGlzLnBvcyx0aGlzLmZpbmlzaFRva2VuKHYuanN4VGFnRW5kKTtpZigoaT09PTM0fHxpPT09MzkpJiZfPT1CKXJldHVybiB0aGlzLmpzeF9yZWFkU3RyaW5nKGkpfXJldHVybiBpPT09NjAmJnRoaXMuZXhwckFsbG93ZWQmJnRoaXMuaW5wdXQuY2hhckNvZGVBdCh0aGlzLnBvcysxKSE9PTMzPygrK3RoaXMucG9zLHRoaXMuZmluaXNoVG9rZW4odi5qc3hUYWdTdGFydCkpOnN1cGVyLnJlYWRUb2tlbihpKX11cGRhdGVDb250ZXh0KGkpe2lmKHRoaXMudHlwZT09VC5icmFjZUwpe3ZhciBfPXRoaXMuY3VyQ29udGV4dCgpO189PUI/dGhpcy5jb250ZXh0LnB1c2gocS5iX2V4cHIpOl89PWs/dGhpcy5jb250ZXh0LnB1c2gocS5iX3RtcGwpOnN1cGVyLnVwZGF0ZUNvbnRleHQoaSksdGhpcy5leHByQWxsb3dlZD0hMH1lbHNlIGlmKHRoaXMudHlwZT09PVQuc2xhc2gmJmk9PT12LmpzeFRhZ1N0YXJ0KXRoaXMuY29udGV4dC5sZW5ndGgtPTIsdGhpcy5jb250ZXh0LnB1c2goSSksdGhpcy5leHByQWxsb3dlZD0hMTtlbHNlIHJldHVybiBzdXBlci51cGRhdGVDb250ZXh0KGkpfX19fX0pLHdoPVkoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL2Fjb3JuLmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7dmFyIHU9bHIoKSxsPWZhKCksbT1GYSgpLEU9SWEoKSx5PXtlY21hVmVyc2lvbjpcImxhdGVzdFwiLHNvdXJjZVR5cGU6XCJtb2R1bGVcIixhbGxvd1Jlc2VydmVkOiEwLGFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uOiEwLGFsbG93SW1wb3J0RXhwb3J0RXZlcnl3aGVyZTohMCxhbGxvd0F3YWl0T3V0c2lkZUZ1bmN0aW9uOiEwLGFsbG93U3VwZXJPdXRzaWRlTWV0aG9kOiEwLGFsbG93SGFzaEJhbmc6ITAsbG9jYXRpb25zOiEwLHJhbmdlczohMH07ZnVuY3Rpb24gQShOKXtsZXR7bWVzc2FnZTpULGxvYzp2fT1OO2lmKCF2KXJldHVybiBOO2xldHtsaW5lOnEsY29sdW1uOkJ9PXY7cmV0dXJuIHUoVC5yZXBsYWNlKC8gXFwoXFxkKzpcXGQrXFwpJC8sXCJcIikse3N0YXJ0OntsaW5lOnEsY29sdW1uOkIrMX19KX12YXIgYixnPSgpPT57aWYoIWIpe2xldHtQYXJzZXI6Tn09Y3QoKSxUPVBhKCk7Yj1OLmV4dGVuZChUKCkpfXJldHVybiBifTtmdW5jdGlvbiBWKE4sVCl7bGV0IHY9ZygpLHE9W10sQj1bXSxJPXYucGFyc2UoTixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30seSkse30se3NvdXJjZVR5cGU6VCxvbkNvbW1lbnQ6cSxvblRva2VuOkJ9KSk7cmV0dXJuIEkuY29tbWVudHM9cSxJLnRva2Vucz1CLEl9ZnVuY3Rpb24gUihOLFQpe2xldCB2PWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSx7cmVzdWx0OnEsZXJyb3I6Qn09bCgoKT0+VihOLFwibW9kdWxlXCIpLCgpPT5WKE4sXCJzY3JpcHRcIikpO2lmKCFxKXRocm93IEEoQik7cmV0dXJuIHYub3JpZ2luYWxUZXh0PU4sRShxLHYpfW8uZXhwb3J0cz1tKFIpfX0pLGtoPVkoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3V0aWxzL3JlcGxhY2UtaGFzaGJhbmcuanNcIihuLG8pe1widXNlIHN0cmljdFwiO0ooKTtmdW5jdGlvbiB1KGwpe3JldHVybiBsLmNoYXJBdCgwKT09PVwiI1wiJiZsLmNoYXJBdCgxKT09PVwiIVwiP1wiLy9cIitsLnNsaWNlKDIpOmx9by5leHBvcnRzPXV9fSksRmg9WSh7XCJub2RlX21vZHVsZXMvZXNwcmVlL2Rpc3QvZXNwcmVlLmNqc1wiKG4pe1widXNlIHN0cmljdFwiO0ooKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgbz1jdCgpLHU9UGEoKSxsO2Z1bmN0aW9uIG0ocCl7cmV0dXJuIHAmJnR5cGVvZiBwPT1cIm9iamVjdFwiJiZcImRlZmF1bHRcImluIHA/cDp7ZGVmYXVsdDpwfX1mdW5jdGlvbiBFKHApe2lmKHAmJnAuX19lc01vZHVsZSlyZXR1cm4gcDt2YXIgRD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBwJiZPYmplY3Qua2V5cyhwKS5mb3JFYWNoKGZ1bmN0aW9uKHcpe2lmKHchPT1cImRlZmF1bHRcIil7dmFyIGY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLHcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShELHcsZi5nZXQ/Zjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcFt3XX19KX19KSxELmRlZmF1bHQ9cCxPYmplY3QuZnJlZXplKEQpfXZhciB5PUUobyksQT1tKHUpLGI9RShsKSxnPXtCb29sZWFuOlwiQm9vbGVhblwiLEVPRjpcIjxlbmQ+XCIsSWRlbnRpZmllcjpcIklkZW50aWZpZXJcIixQcml2YXRlSWRlbnRpZmllcjpcIlByaXZhdGVJZGVudGlmaWVyXCIsS2V5d29yZDpcIktleXdvcmRcIixOdWxsOlwiTnVsbFwiLE51bWVyaWM6XCJOdW1lcmljXCIsUHVuY3R1YXRvcjpcIlB1bmN0dWF0b3JcIixTdHJpbmc6XCJTdHJpbmdcIixSZWd1bGFyRXhwcmVzc2lvbjpcIlJlZ3VsYXJFeHByZXNzaW9uXCIsVGVtcGxhdGU6XCJUZW1wbGF0ZVwiLEpTWElkZW50aWZpZXI6XCJKU1hJZGVudGlmaWVyXCIsSlNYVGV4dDpcIkpTWFRleHRcIn07ZnVuY3Rpb24gVihwLEQpe2xldCB3PXBbMF0sZj1wW3AubGVuZ3RoLTFdLEY9e3R5cGU6Zy5UZW1wbGF0ZSx2YWx1ZTpELnNsaWNlKHcuc3RhcnQsZi5lbmQpfTtyZXR1cm4gdy5sb2MmJihGLmxvYz17c3RhcnQ6dy5sb2Muc3RhcnQsZW5kOmYubG9jLmVuZH0pLHcucmFuZ2UmJihGLnN0YXJ0PXcucmFuZ2VbMF0sRi5lbmQ9Zi5yYW5nZVsxXSxGLnJhbmdlPVtGLnN0YXJ0LEYuZW5kXSksRn1mdW5jdGlvbiBSKHAsRCl7dGhpcy5fYWNvcm5Ub2tUeXBlcz1wLHRoaXMuX3Rva2Vucz1bXSx0aGlzLl9jdXJseUJyYWNlPW51bGwsdGhpcy5fY29kZT1EfVIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpSLHRyYW5zbGF0ZShwLEQpe2xldCB3PXAudHlwZSxmPXRoaXMuX2Fjb3JuVG9rVHlwZXM7aWYodz09PWYubmFtZSlwLnR5cGU9Zy5JZGVudGlmaWVyLHAudmFsdWU9PT1cInN0YXRpY1wiJiYocC50eXBlPWcuS2V5d29yZCksRC5lY21hVmVyc2lvbj41JiYocC52YWx1ZT09PVwieWllbGRcInx8cC52YWx1ZT09PVwibGV0XCIpJiYocC50eXBlPWcuS2V5d29yZCk7ZWxzZSBpZih3PT09Zi5wcml2YXRlSWQpcC50eXBlPWcuUHJpdmF0ZUlkZW50aWZpZXI7ZWxzZSBpZih3PT09Zi5zZW1pfHx3PT09Zi5jb21tYXx8dz09PWYucGFyZW5MfHx3PT09Zi5wYXJlblJ8fHc9PT1mLmJyYWNlTHx8dz09PWYuYnJhY2VSfHx3PT09Zi5kb3R8fHc9PT1mLmJyYWNrZXRMfHx3PT09Zi5jb2xvbnx8dz09PWYucXVlc3Rpb258fHc9PT1mLmJyYWNrZXRSfHx3PT09Zi5lbGxpcHNpc3x8dz09PWYuYXJyb3d8fHc9PT1mLmpzeFRhZ1N0YXJ0fHx3PT09Zi5pbmNEZWN8fHc9PT1mLnN0YXJzdGFyfHx3PT09Zi5qc3hUYWdFbmR8fHc9PT1mLnByZWZpeHx8dz09PWYucXVlc3Rpb25Eb3R8fHcuYmlub3AmJiF3LmtleXdvcmR8fHcuaXNBc3NpZ24pcC50eXBlPWcuUHVuY3R1YXRvcixwLnZhbHVlPXRoaXMuX2NvZGUuc2xpY2UocC5zdGFydCxwLmVuZCk7ZWxzZSBpZih3PT09Zi5qc3hOYW1lKXAudHlwZT1nLkpTWElkZW50aWZpZXI7ZWxzZSBpZih3LmxhYmVsPT09XCJqc3hUZXh0XCJ8fHc9PT1mLmpzeEF0dHJWYWx1ZVRva2VuKXAudHlwZT1nLkpTWFRleHQ7ZWxzZSBpZih3LmtleXdvcmQpdy5rZXl3b3JkPT09XCJ0cnVlXCJ8fHcua2V5d29yZD09PVwiZmFsc2VcIj9wLnR5cGU9Zy5Cb29sZWFuOncua2V5d29yZD09PVwibnVsbFwiP3AudHlwZT1nLk51bGw6cC50eXBlPWcuS2V5d29yZDtlbHNlIGlmKHc9PT1mLm51bSlwLnR5cGU9Zy5OdW1lcmljLHAudmFsdWU9dGhpcy5fY29kZS5zbGljZShwLnN0YXJ0LHAuZW5kKTtlbHNlIGlmKHc9PT1mLnN0cmluZylELmpzeEF0dHJWYWx1ZVRva2VuPyhELmpzeEF0dHJWYWx1ZVRva2VuPSExLHAudHlwZT1nLkpTWFRleHQpOnAudHlwZT1nLlN0cmluZyxwLnZhbHVlPXRoaXMuX2NvZGUuc2xpY2UocC5zdGFydCxwLmVuZCk7ZWxzZSBpZih3PT09Zi5yZWdleHApe3AudHlwZT1nLlJlZ3VsYXJFeHByZXNzaW9uO2xldCBGPXAudmFsdWU7cC5yZWdleD17ZmxhZ3M6Ri5mbGFncyxwYXR0ZXJuOkYucGF0dGVybn0scC52YWx1ZT1cIi9cIi5jb25jYXQoRi5wYXR0ZXJuLFwiL1wiKS5jb25jYXQoRi5mbGFncyl9cmV0dXJuIHB9LG9uVG9rZW4ocCxEKXtsZXQgdz10aGlzLGY9dGhpcy5fYWNvcm5Ub2tUeXBlcyxGPUQudG9rZW5zLEs9dGhpcy5fdG9rZW5zO2Z1bmN0aW9uIFgoKXtGLnB1c2goVih3Ll90b2tlbnMsdy5fY29kZSkpLHcuX3Rva2Vucz1bXX1pZihwLnR5cGU9PT1mLmVvZil7dGhpcy5fY3VybHlCcmFjZSYmRi5wdXNoKHRoaXMudHJhbnNsYXRlKHRoaXMuX2N1cmx5QnJhY2UsRCkpO3JldHVybn1pZihwLnR5cGU9PT1mLmJhY2tRdW90ZSl7dGhpcy5fY3VybHlCcmFjZSYmKEYucHVzaCh0aGlzLnRyYW5zbGF0ZSh0aGlzLl9jdXJseUJyYWNlLEQpKSx0aGlzLl9jdXJseUJyYWNlPW51bGwpLEsucHVzaChwKSxLLmxlbmd0aD4xJiZYKCk7cmV0dXJufWlmKHAudHlwZT09PWYuZG9sbGFyQnJhY2VMKXtLLnB1c2gocCksWCgpO3JldHVybn1pZihwLnR5cGU9PT1mLmJyYWNlUil7dGhpcy5fY3VybHlCcmFjZSYmRi5wdXNoKHRoaXMudHJhbnNsYXRlKHRoaXMuX2N1cmx5QnJhY2UsRCkpLHRoaXMuX2N1cmx5QnJhY2U9cDtyZXR1cm59aWYocC50eXBlPT09Zi50ZW1wbGF0ZXx8cC50eXBlPT09Zi5pbnZhbGlkVGVtcGxhdGUpe3RoaXMuX2N1cmx5QnJhY2UmJihLLnB1c2godGhpcy5fY3VybHlCcmFjZSksdGhpcy5fY3VybHlCcmFjZT1udWxsKSxLLnB1c2gocCk7cmV0dXJufXRoaXMuX2N1cmx5QnJhY2UmJihGLnB1c2godGhpcy50cmFuc2xhdGUodGhpcy5fY3VybHlCcmFjZSxEKSksdGhpcy5fY3VybHlCcmFjZT1udWxsKSxGLnB1c2godGhpcy50cmFuc2xhdGUocCxEKSl9fTt2YXIgTj1bMyw1LDYsNyw4LDksMTAsMTEsMTIsMTNdO2Z1bmN0aW9uIFQoKXtyZXR1cm4gTltOLmxlbmd0aC0xXX1mdW5jdGlvbiB2KCl7cmV0dXJuWy4uLk5dfWZ1bmN0aW9uIHEoKXtsZXQgcD1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06NSxEPXA9PT1cImxhdGVzdFwiP1QoKTpwO2lmKHR5cGVvZiBEIT1cIm51bWJlclwiKXRocm93IG5ldyBFcnJvcignZWNtYVZlcnNpb24gbXVzdCBiZSBhIG51bWJlciBvciBcImxhdGVzdFwiLiBSZWNlaXZlZCB2YWx1ZSBvZiB0eXBlICcuY29uY2F0KHR5cGVvZiBwLFwiIGluc3RlYWQuXCIpKTtpZihEPj0yMDE1JiYoRC09MjAwOSksIU4uaW5jbHVkZXMoRCkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBlY21hVmVyc2lvbi5cIik7cmV0dXJuIER9ZnVuY3Rpb24gQigpe2xldCBwPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpcInNjcmlwdFwiO2lmKHA9PT1cInNjcmlwdFwifHxwPT09XCJtb2R1bGVcIilyZXR1cm4gcDtpZihwPT09XCJjb21tb25qc1wiKXJldHVyblwic2NyaXB0XCI7dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzb3VyY2VUeXBlLlwiKX1mdW5jdGlvbiBJKHApe2xldCBEPXEocC5lY21hVmVyc2lvbiksdz1CKHAuc291cmNlVHlwZSksZj1wLnJhbmdlPT09ITAsRj1wLmxvYz09PSEwO2lmKEQhPT0zJiZwLmFsbG93UmVzZXJ2ZWQpdGhyb3cgbmV3IEVycm9yKFwiYGFsbG93UmVzZXJ2ZWRgIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gZWNtYVZlcnNpb24gaXMgM1wiKTtpZih0eXBlb2YgcC5hbGxvd1Jlc2VydmVkPFwidVwiJiZ0eXBlb2YgcC5hbGxvd1Jlc2VydmVkIT1cImJvb2xlYW5cIil0aHJvdyBuZXcgRXJyb3IoXCJgYWxsb3dSZXNlcnZlZGAsIHdoZW4gcHJlc2VudCwgbXVzdCBiZSBgdHJ1ZWAgb3IgYGZhbHNlYFwiKTtsZXQgSz1EPT09Mz9wLmFsbG93UmVzZXJ2ZWR8fFwibmV2ZXJcIjohMSxYPXAuZWNtYUZlYXR1cmVzfHx7fSxvZT1wLnNvdXJjZVR5cGU9PT1cImNvbW1vbmpzXCJ8fEJvb2xlYW4oWC5nbG9iYWxSZXR1cm4pO2lmKHc9PT1cIm1vZHVsZVwiJiZEPDYpdGhyb3cgbmV3IEVycm9yKFwic291cmNlVHlwZSAnbW9kdWxlJyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gZWNtYVZlcnNpb24gPCAyMDE1LiBDb25zaWRlciBhZGRpbmcgYHsgZWNtYVZlcnNpb246IDIwMTUgfWAgdG8gdGhlIHBhcnNlciBvcHRpb25zLlwiKTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxwLHtlY21hVmVyc2lvbjpELHNvdXJjZVR5cGU6dyxyYW5nZXM6Zixsb2NhdGlvbnM6RixhbGxvd1Jlc2VydmVkOkssYWxsb3dSZXR1cm5PdXRzaWRlRnVuY3Rpb246b2V9KX12YXIgaz1TeW1ib2woXCJlc3ByZWUncyBpbnRlcm5hbCBzdGF0ZVwiKSxDPVN5bWJvbChcImVzcHJlZSdzIGVzcHJpbWFGaW5pc2hOb2RlXCIpO2Z1bmN0aW9uIEgocCxELHcsZixGLEspe2xldCBYPXt0eXBlOnA/XCJCbG9ja1wiOlwiTGluZVwiLHZhbHVlOkR9O3JldHVybiB0eXBlb2Ygdz09XCJudW1iZXJcIiYmKFguc3RhcnQ9dyxYLmVuZD1mLFgucmFuZ2U9W3csZl0pLHR5cGVvZiBGPT1cIm9iamVjdFwiJiYoWC5sb2M9e3N0YXJ0OkYsZW5kOkt9KSxYfXZhciBMPSgpPT5wPT57bGV0IEQ9T2JqZWN0LmFzc2lnbih7fSxwLmFjb3JuLnRva1R5cGVzKTtyZXR1cm4gcC5hY29ybkpzeCYmT2JqZWN0LmFzc2lnbihELHAuYWNvcm5Kc3gudG9rVHlwZXMpLGNsYXNzIGV4dGVuZHMgcHtjb25zdHJ1Y3RvcihmLEYpeyh0eXBlb2YgZiE9XCJvYmplY3RcInx8Zj09PW51bGwpJiYoZj17fSksdHlwZW9mIEYhPVwic3RyaW5nXCImJiEoRiBpbnN0YW5jZW9mIFN0cmluZykmJihGPVN0cmluZyhGKSk7bGV0IEs9Zi5zb3VyY2VUeXBlLFg9SShmKSxvZT1YLmVjbWFGZWF0dXJlc3x8e30sbWU9WC50b2tlbnM9PT0hMD9uZXcgUihELEYpOm51bGw7c3VwZXIoe2VjbWFWZXJzaW9uOlguZWNtYVZlcnNpb24sc291cmNlVHlwZTpYLnNvdXJjZVR5cGUscmFuZ2VzOlgucmFuZ2VzLGxvY2F0aW9uczpYLmxvY2F0aW9ucyxhbGxvd1Jlc2VydmVkOlguYWxsb3dSZXNlcnZlZCxhbGxvd1JldHVybk91dHNpZGVGdW5jdGlvbjpYLmFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uLG9uVG9rZW46dmU9PnttZSYmbWUub25Ub2tlbih2ZSx0aGlzW2tdKSx2ZS50eXBlIT09RC5lb2YmJih0aGlzW2tdLmxhc3RUb2tlbj12ZSl9LG9uQ29tbWVudDoodmUscHQsZnQsRWUsZ2UsRGUpPT57aWYodGhpc1trXS5jb21tZW50cyl7bGV0IFVlPUgodmUscHQsZnQsRWUsZ2UsRGUpO3RoaXNba10uY29tbWVudHMucHVzaChVZSl9fX0sRiksdGhpc1trXT17b3JpZ2luYWxTb3VyY2VUeXBlOkt8fFguc291cmNlVHlwZSx0b2tlbnM6bWU/W106bnVsbCxjb21tZW50czpYLmNvbW1lbnQ9PT0hMD9bXTpudWxsLGltcGxpZWRTdHJpY3Q6b2UuaW1wbGllZFN0cmljdD09PSEwJiZ0aGlzLm9wdGlvbnMuZWNtYVZlcnNpb24+PTUsZWNtYVZlcnNpb246dGhpcy5vcHRpb25zLmVjbWFWZXJzaW9uLGpzeEF0dHJWYWx1ZVRva2VuOiExLGxhc3RUb2tlbjpudWxsLHRlbXBsYXRlRWxlbWVudHM6W119fXRva2VuaXplKCl7ZG8gdGhpcy5uZXh0KCk7d2hpbGUodGhpcy50eXBlIT09RC5lb2YpO3RoaXMubmV4dCgpO2xldCBmPXRoaXNba10sRj1mLnRva2VucztyZXR1cm4gZi5jb21tZW50cyYmKEYuY29tbWVudHM9Zi5jb21tZW50cyksRn1maW5pc2hOb2RlKCl7bGV0IGY9c3VwZXIuZmluaXNoTm9kZSguLi5hcmd1bWVudHMpO3JldHVybiB0aGlzW0NdKGYpfWZpbmlzaE5vZGVBdCgpe2xldCBmPXN1cGVyLmZpbmlzaE5vZGVBdCguLi5hcmd1bWVudHMpO3JldHVybiB0aGlzW0NdKGYpfXBhcnNlKCl7bGV0IGY9dGhpc1trXSxGPXN1cGVyLnBhcnNlKCk7aWYoRi5zb3VyY2VUeXBlPWYub3JpZ2luYWxTb3VyY2VUeXBlLGYuY29tbWVudHMmJihGLmNvbW1lbnRzPWYuY29tbWVudHMpLGYudG9rZW5zJiYoRi50b2tlbnM9Zi50b2tlbnMpLEYuYm9keS5sZW5ndGgpe2xldFtLXT1GLmJvZHk7Ri5yYW5nZSYmKEYucmFuZ2VbMF09Sy5yYW5nZVswXSksRi5sb2MmJihGLmxvYy5zdGFydD1LLmxvYy5zdGFydCksRi5zdGFydD1LLnN0YXJ0fXJldHVybiBmLmxhc3RUb2tlbiYmKEYucmFuZ2UmJihGLnJhbmdlWzFdPWYubGFzdFRva2VuLnJhbmdlWzFdKSxGLmxvYyYmKEYubG9jLmVuZD1mLmxhc3RUb2tlbi5sb2MuZW5kKSxGLmVuZD1mLmxhc3RUb2tlbi5lbmQpLHRoaXNba10udGVtcGxhdGVFbGVtZW50cy5mb3JFYWNoKEs9PntsZXQgb2U9Sy50YWlsPzE6MjtLLnN0YXJ0Kz0tMSxLLmVuZCs9b2UsSy5yYW5nZSYmKEsucmFuZ2VbMF0rPS0xLEsucmFuZ2VbMV0rPW9lKSxLLmxvYyYmKEsubG9jLnN0YXJ0LmNvbHVtbis9LTEsSy5sb2MuZW5kLmNvbHVtbis9b2UpfSksRn1wYXJzZVRvcExldmVsKGYpe3JldHVybiB0aGlzW2tdLmltcGxpZWRTdHJpY3QmJih0aGlzLnN0cmljdD0hMCksc3VwZXIucGFyc2VUb3BMZXZlbChmKX1yYWlzZShmLEYpe2xldCBLPXAuYWNvcm4uZ2V0TGluZUluZm8odGhpcy5pbnB1dCxmKSxYPW5ldyBTeW50YXhFcnJvcihGKTt0aHJvdyBYLmluZGV4PWYsWC5saW5lTnVtYmVyPUsubGluZSxYLmNvbHVtbj1LLmNvbHVtbisxLFh9cmFpc2VSZWNvdmVyYWJsZShmLEYpe3RoaXMucmFpc2UoZixGKX11bmV4cGVjdGVkKGYpe2xldCBGPVwiVW5leHBlY3RlZCB0b2tlblwiO2lmKGYhPW51bGwpe2lmKHRoaXMucG9zPWYsdGhpcy5vcHRpb25zLmxvY2F0aW9ucylmb3IoO3RoaXMucG9zPHRoaXMubGluZVN0YXJ0Oyl0aGlzLmxpbmVTdGFydD10aGlzLmlucHV0Lmxhc3RJbmRleE9mKGBcbmAsdGhpcy5saW5lU3RhcnQtMikrMSwtLXRoaXMuY3VyTGluZTt0aGlzLm5leHRUb2tlbigpfXRoaXMuZW5kPnRoaXMuc3RhcnQmJihGKz1cIiBcIi5jb25jYXQodGhpcy5pbnB1dC5zbGljZSh0aGlzLnN0YXJ0LHRoaXMuZW5kKSkpLHRoaXMucmFpc2UodGhpcy5zdGFydCxGKX1qc3hfcmVhZFN0cmluZyhmKXtsZXQgRj1zdXBlci5qc3hfcmVhZFN0cmluZyhmKTtyZXR1cm4gdGhpcy50eXBlPT09RC5zdHJpbmcmJih0aGlzW2tdLmpzeEF0dHJWYWx1ZVRva2VuPSEwKSxGfVtDXShmKXtyZXR1cm4gZi50eXBlPT09XCJUZW1wbGF0ZUVsZW1lbnRcIiYmdGhpc1trXS50ZW1wbGF0ZUVsZW1lbnRzLnB1c2goZiksZi50eXBlLmluY2x1ZGVzKFwiRnVuY3Rpb25cIikmJiFmLmdlbmVyYXRvciYmKGYuZ2VuZXJhdG9yPSExKSxmfX19LGk9XCI5LjMuMVwiLF89e19yZWd1bGFyOm51bGwsX2pzeDpudWxsLGdldCByZWd1bGFyKCl7cmV0dXJuIHRoaXMuX3JlZ3VsYXI9PT1udWxsJiYodGhpcy5fcmVndWxhcj15LlBhcnNlci5leHRlbmQoTCgpKSksdGhpcy5fcmVndWxhcn0sZ2V0IGpzeCgpe3JldHVybiB0aGlzLl9qc3g9PT1udWxsJiYodGhpcy5fanN4PXkuUGFyc2VyLmV4dGVuZChBLmRlZmF1bHQoKSxMKCkpKSx0aGlzLl9qc3h9LGdldChwKXtyZXR1cm4gQm9vbGVhbihwJiZwLmVjbWFGZWF0dXJlcyYmcC5lY21hRmVhdHVyZXMuanN4KT90aGlzLmpzeDp0aGlzLnJlZ3VsYXJ9fTtmdW5jdGlvbiBQKHAsRCl7bGV0IHc9Xy5nZXQoRCk7cmV0dXJuKCFEfHxELnRva2VucyE9PSEwKSYmKEQ9T2JqZWN0LmFzc2lnbih7fSxELHt0b2tlbnM6ITB9KSksbmV3IHcoRCxwKS50b2tlbml6ZSgpfWZ1bmN0aW9uIE0ocCxEKXtsZXQgdz1fLmdldChEKTtyZXR1cm4gbmV3IHcoRCxwKS5wYXJzZSgpfXZhciBlZT1pLGFlPWZ1bmN0aW9uKCl7cmV0dXJuIGIuS0VZU30oKSx0ZT12b2lkIDAsaWU9VCgpLE5lPXYoKTtuLlN5bnRheD10ZSxuLlZpc2l0b3JLZXlzPWFlLG4ubGF0ZXN0RWNtYVZlcnNpb249aWUsbi5wYXJzZT1NLG4uc3VwcG9ydGVkRWNtYVZlcnNpb25zPU5lLG4udG9rZW5pemU9UCxuLnZlcnNpb249ZWV9fSksQmg9WSh7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvZXNwcmVlLmpzXCIobixvKXtcInVzZSBzdHJpY3RcIjtKKCk7dmFyIHU9bHIoKSxsPWZhKCksbT1GYSgpLEU9a2goKSx5PUlhKCksQT17ZWNtYVZlcnNpb246XCJsYXRlc3RcIixyYW5nZTohMCxsb2M6ITAsY29tbWVudDohMCx0b2tlbnM6ITAsc291cmNlVHlwZTpcIm1vZHVsZVwiLGVjbWFGZWF0dXJlczp7anN4OiEwLGdsb2JhbFJldHVybjohMCxpbXBsaWVkU3RyaWN0OiExfX07ZnVuY3Rpb24gYihWKXtsZXR7bWVzc2FnZTpSLGxpbmVOdW1iZXI6Tixjb2x1bW46VH09VjtyZXR1cm4gdHlwZW9mIE4hPVwibnVtYmVyXCI/Vjp1KFIse3N0YXJ0OntsaW5lOk4sY29sdW1uOlR9fSl9ZnVuY3Rpb24gZyhWLFIpe2xldCBOPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSx7cGFyc2U6VH09RmgoKSx2PUUoVikse3Jlc3VsdDpxLGVycm9yOkJ9PWwoKCk9PlQodixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sQSkse30se3NvdXJjZVR5cGU6XCJtb2R1bGVcIn0pKSwoKT0+VCh2LE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxBKSx7fSx7c291cmNlVHlwZTpcInNjcmlwdFwifSkpKTtpZighcSl0aHJvdyBiKEIpO3JldHVybiBOLm9yaWdpbmFsVGV4dD1WLHkocSxOKX1vLmV4cG9ydHM9bShnKX19KTtKKCk7dmFyIFRoPXdoKCksSWg9QmgoKTtOYS5leHBvcnRzPXtwYXJzZXJzOnthY29ybjpUaCxlc3ByZWU6SWh9fX0pO3JldHVybiBQaCgpO30pOyIsICIoZnVuY3Rpb24oZSl7aWYodHlwZW9mIGV4cG9ydHM9PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGU9PVwib2JqZWN0XCIpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYodHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKWRlZmluZShlKTtlbHNle3ZhciBpPXR5cGVvZiBnbG9iYWxUaGlzPFwidVwiP2dsb2JhbFRoaXM6dHlwZW9mIGdsb2JhbDxcInVcIj9nbG9iYWw6dHlwZW9mIHNlbGY8XCJ1XCI/c2VsZjp0aGlzfHx7fTtpLnByZXR0aWVyUGx1Z2lucz1pLnByZXR0aWVyUGx1Z2luc3x8e30saS5wcmV0dGllclBsdWdpbnMubWVyaXlhaD1lKCl9fSkoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgRj0oZCxtKT0+KCk9PihtfHxkKChtPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxtKSxtLmV4cG9ydHMpO3ZhciBpMj1GKChFMyxDZSk9Pnt2YXIgQTE9ZnVuY3Rpb24oZCl7cmV0dXJuIGQmJmQuTWF0aD09TWF0aCYmZH07Q2UuZXhwb3J0cz1BMSh0eXBlb2YgZ2xvYmFsVGhpcz09XCJvYmplY3RcIiYmZ2xvYmFsVGhpcyl8fEExKHR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCImJndpbmRvdyl8fEExKHR5cGVvZiBzZWxmPT1cIm9iamVjdFwiJiZzZWxmKXx8QTEodHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfSk7dmFyIEwyPUYoKEQzLHdlKT0+e3dlLmV4cG9ydHM9ZnVuY3Rpb24oZCl7dHJ5e3JldHVybiEhZCgpfWNhdGNoe3JldHVybiEwfX19KTt2YXIgSjI9RigoQzMscWUpPT57dmFyIFV0PUwyKCk7cWUuZXhwb3J0cz0hVXQoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT03fSl9KTt2YXIgeDE9RigodzMsQmUpPT57dmFyIEp0PUwyKCk7QmUuZXhwb3J0cz0hSnQoZnVuY3Rpb24oKXt2YXIgZD1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiB0eXBlb2YgZCE9XCJmdW5jdGlvblwifHxkLmhhc093blByb3BlcnR5KFwicHJvdG90eXBlXCIpfSl9KTt2YXIgUDE9RigocTMsU2UpPT57dmFyIFh0PXgxKCkseTE9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7U2UuZXhwb3J0cz1YdD95MS5iaW5kKHkxKTpmdW5jdGlvbigpe3JldHVybiB5MS5hcHBseSh5MSxhcmd1bWVudHMpfX0pO3ZhciBPZT1GKExlPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIEZlPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFRlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsenQ9VGUmJiFGZS5jYWxsKHsxOjJ9LDEpO0xlLmY9enQ/ZnVuY3Rpb24obSl7dmFyIGs9VGUodGhpcyxtKTtyZXR1cm4hIWsmJmsuZW51bWVyYWJsZX06RmV9KTt2YXIgcDE9RigoUzMsSWUpPT57SWUuZXhwb3J0cz1mdW5jdGlvbihkLG0pe3JldHVybntlbnVtZXJhYmxlOiEoZCYxKSxjb25maWd1cmFibGU6IShkJjIpLHdyaXRhYmxlOiEoZCY0KSx2YWx1ZTptfX19KTt2YXIgRDI9RigoRjMsVmUpPT57dmFyIFJlPXgxKCksTmU9RnVuY3Rpb24ucHJvdG90eXBlLEh0PU5lLmJpbmQsdXU9TmUuY2FsbCxLdD1SZSYmSHQuYmluZCh1dSx1dSk7VmUuZXhwb3J0cz1SZT9mdW5jdGlvbihkKXtyZXR1cm4gZCYmS3QoZCl9OmZ1bmN0aW9uKGQpe3JldHVybiBkJiZmdW5jdGlvbigpe3JldHVybiB1dS5hcHBseShkLGFyZ3VtZW50cyl9fX0pO3ZhciBNZT1GKChUMyxfZSk9Pnt2YXIgamU9RDIoKSxXdD1qZSh7fS50b1N0cmluZyksWXQ9amUoXCJcIi5zbGljZSk7X2UuZXhwb3J0cz1mdW5jdGlvbihkKXtyZXR1cm4gWXQoV3QoZCksOCwtMSl9fSk7dmFyIEplPUYoKEwzLFVlKT0+e3ZhciAkdD1pMigpLFp0PUQyKCksUXQ9TDIoKSxHdD1NZSgpLGV1PSR0Lk9iamVjdCx4dD1adChcIlwiLnNwbGl0KTtVZS5leHBvcnRzPVF0KGZ1bmN0aW9uKCl7cmV0dXJuIWV1KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKGQpe3JldHVybiBHdChkKT09XCJTdHJpbmdcIj94dChkLFwiXCIpOmV1KGQpfTpldX0pO3ZhciBpdT1GKChPMyxYZSk9Pnt2YXIgcHQ9aTIoKSx1bz1wdC5UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihkKXtpZihkPT1udWxsKXRocm93IHVvKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIrZCk7cmV0dXJuIGR9fSk7dmFyIEUxPUYoKEkzLHplKT0+e3ZhciBlbz1KZSgpLGlvPWl1KCk7emUuZXhwb3J0cz1mdW5jdGlvbihkKXtyZXR1cm4gZW8oaW8oZCkpfX0pO3ZhciBDMj1GKChSMyxIZSk9PntIZS5leHBvcnRzPWZ1bmN0aW9uKGQpe3JldHVybiB0eXBlb2YgZD09XCJmdW5jdGlvblwifX0pO3ZhciBaMj1GKChOMyxLZSk9Pnt2YXIgbm89QzIoKTtLZS5leHBvcnRzPWZ1bmN0aW9uKGQpe3JldHVybiB0eXBlb2YgZD09XCJvYmplY3RcIj9kIT09bnVsbDpubyhkKX19KTt2YXIgRDE9RigoVjMsV2UpPT57dmFyIG51PWkyKCksdG89QzIoKSxvbz1mdW5jdGlvbihkKXtyZXR1cm4gdG8oZCk/ZDp2b2lkIDB9O1dlLmV4cG9ydHM9ZnVuY3Rpb24oZCxtKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP29vKG51W2RdKTpudVtkXSYmbnVbZF1bbV19fSk7dmFyICRlPUYoKGozLFllKT0+e3ZhciBsbz1EMigpO1llLmV4cG9ydHM9bG8oe30uaXNQcm90b3R5cGVPZil9KTt2YXIgUWU9RigoXzMsWmUpPT57dmFyIGZvPUQxKCk7WmUuZXhwb3J0cz1mbyhcIm5hdmlnYXRvclwiLFwidXNlckFnZW50XCIpfHxcIlwifSk7dmFyIG5pPUYoKE0zLGlpKT0+e3ZhciBlaT1pMigpLHR1PVFlKCksR2U9ZWkucHJvY2Vzcyx4ZT1laS5EZW5vLHBlPUdlJiZHZS52ZXJzaW9uc3x8eGUmJnhlLnZlcnNpb24sdWk9cGUmJnBlLnY4LFAyLEMxO3VpJiYoUDI9dWkuc3BsaXQoXCIuXCIpLEMxPVAyWzBdPjAmJlAyWzBdPDQ/MTorKFAyWzBdK1AyWzFdKSk7IUMxJiZ0dSYmKFAyPXR1Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyksKCFQMnx8UDJbMV0+PTc0KSYmKFAyPXR1Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKSxQMiYmKEMxPStQMlsxXSkpKTtpaS5leHBvcnRzPUMxfSk7dmFyIG91PUYoKFUzLG9pKT0+e3ZhciB0aT1uaSgpLGNvPUwyKCk7b2kuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFjbyhmdW5jdGlvbigpe3ZhciBkPVN5bWJvbCgpO3JldHVybiFTdHJpbmcoZCl8fCEoT2JqZWN0KGQpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJnRpJiZ0aTw0MX0pfSk7dmFyIGx1PUYoKEozLGxpKT0+e3ZhciBzbz1vdSgpO2xpLmV4cG9ydHM9c28mJiFTeW1ib2wuc2hhbSYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09XCJzeW1ib2xcIn0pO3ZhciBmdT1GKChYMyxmaSk9Pnt2YXIgYW89aTIoKSxnbz1EMSgpLGhvPUMyKCksbW89JGUoKSxibz1sdSgpLGtvPWFvLk9iamVjdDtmaS5leHBvcnRzPWJvP2Z1bmN0aW9uKGQpe3JldHVybiB0eXBlb2YgZD09XCJzeW1ib2xcIn06ZnVuY3Rpb24oZCl7dmFyIG09Z28oXCJTeW1ib2xcIik7cmV0dXJuIGhvKG0pJiZtbyhtLnByb3RvdHlwZSxrbyhkKSl9fSk7dmFyIHNpPUYoKHozLGNpKT0+e3ZhciBybz1pMigpLHZvPXJvLlN0cmluZztjaS5leHBvcnRzPWZ1bmN0aW9uKGQpe3RyeXtyZXR1cm4gdm8oZCl9Y2F0Y2h7cmV0dXJuXCJPYmplY3RcIn19fSk7dmFyIGRpPUYoKEgzLGFpKT0+e3ZhciBBbz1pMigpLHlvPUMyKCksUG89c2koKSxFbz1Bby5UeXBlRXJyb3I7YWkuZXhwb3J0cz1mdW5jdGlvbihkKXtpZih5byhkKSlyZXR1cm4gZDt0aHJvdyBFbyhQbyhkKStcIiBpcyBub3QgYSBmdW5jdGlvblwiKX19KTt2YXIgaGk9RigoSzMsZ2kpPT57dmFyIERvPWRpKCk7Z2kuZXhwb3J0cz1mdW5jdGlvbihkLG0pe3ZhciBrPWRbbV07cmV0dXJuIGs9PW51bGw/dm9pZCAwOkRvKGspfX0pO3ZhciBiaT1GKChXMyxtaSk9Pnt2YXIgQ289aTIoKSxjdT1QMSgpLHN1PUMyKCksYXU9WjIoKSx3bz1Dby5UeXBlRXJyb3I7bWkuZXhwb3J0cz1mdW5jdGlvbihkLG0pe3ZhciBrLGY7aWYobT09PVwic3RyaW5nXCImJnN1KGs9ZC50b1N0cmluZykmJiFhdShmPWN1KGssZCkpfHxzdShrPWQudmFsdWVPZikmJiFhdShmPWN1KGssZCkpfHxtIT09XCJzdHJpbmdcIiYmc3Uoaz1kLnRvU3RyaW5nKSYmIWF1KGY9Y3UoayxkKSkpcmV0dXJuIGY7dGhyb3cgd28oXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9fSk7dmFyIHJpPUYoKFkzLGtpKT0+e2tpLmV4cG9ydHM9ITF9KTt2YXIgdzE9RigoJDMsQWkpPT57dmFyIHZpPWkyKCkscW89T2JqZWN0LmRlZmluZVByb3BlcnR5O0FpLmV4cG9ydHM9ZnVuY3Rpb24oZCxtKXt0cnl7cW8odmksZCx7dmFsdWU6bSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaHt2aVtkXT1tfXJldHVybiBtfX0pO3ZhciBxMT1GKChaMyxQaSk9Pnt2YXIgQm89aTIoKSxTbz13MSgpLHlpPVwiX19jb3JlLWpzX3NoYXJlZF9fXCIsRm89Qm9beWldfHxTbyh5aSx7fSk7UGkuZXhwb3J0cz1Gb30pO3ZhciBkdT1GKChRMyxEaSk9Pnt2YXIgVG89cmkoKSxFaT1xMSgpOyhEaS5leHBvcnRzPWZ1bmN0aW9uKGQsbSl7cmV0dXJuIEVpW2RdfHwoRWlbZF09bSE9PXZvaWQgMD9tOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpcIjMuMjIuMlwiLG1vZGU6VG8/XCJwdXJlXCI6XCJnbG9iYWxcIixjb3B5cmlnaHQ6XCJcXHhBOSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlcIixsaWNlbnNlOlwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMi4yL0xJQ0VOU0VcIixzb3VyY2U6XCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qc1wifSl9KTt2YXIgd2k9RigoRzMsQ2kpPT57dmFyIExvPWkyKCksT289aXUoKSxJbz1Mby5PYmplY3Q7Q2kuZXhwb3J0cz1mdW5jdGlvbihkKXtyZXR1cm4gSW8oT28oZCkpfX0pO3ZhciBPMj1GKCh4MyxxaSk9Pnt2YXIgUm89RDIoKSxObz13aSgpLFZvPVJvKHt9Lmhhc093blByb3BlcnR5KTtxaS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKG0sayl7cmV0dXJuIFZvKE5vKG0pLGspfX0pO3ZhciBndT1GKChwMyxCaSk9Pnt2YXIgam89RDIoKSxfbz0wLE1vPU1hdGgucmFuZG9tKCksVW89am8oMSAudG9TdHJpbmcpO0JpLmV4cG9ydHM9ZnVuY3Rpb24oZCl7cmV0dXJuXCJTeW1ib2woXCIrKGQ9PT12b2lkIDA/XCJcIjpkKStcIilfXCIrVW8oKytfbytNbywzNil9fSk7dmFyIElpPUYoKHU2LE9pKT0+e3ZhciBKbz1pMigpLFhvPWR1KCksU2k9TzIoKSx6bz1ndSgpLEZpPW91KCksTGk9bHUoKSxRMj1YbyhcIndrc1wiKSxYMj1Kby5TeW1ib2wsVGk9WDImJlgyLmZvcixIbz1MaT9YMjpYMiYmWDIud2l0aG91dFNldHRlcnx8em87T2kuZXhwb3J0cz1mdW5jdGlvbihkKXtpZighU2koUTIsZCl8fCEoRml8fHR5cGVvZiBRMltkXT09XCJzdHJpbmdcIikpe3ZhciBtPVwiU3ltYm9sLlwiK2Q7RmkmJlNpKFgyLGQpP1EyW2RdPVgyW2RdOkxpJiZUaT9RMltkXT1UaShtKTpRMltkXT1IbyhtKX1yZXR1cm4gUTJbZF19fSk7dmFyIGppPUYoKGU2LFZpKT0+e3ZhciBLbz1pMigpLFdvPVAxKCksUmk9WjIoKSxOaT1mdSgpLFlvPWhpKCksJG89YmkoKSxabz1JaSgpLFFvPUtvLlR5cGVFcnJvcixHbz1abyhcInRvUHJpbWl0aXZlXCIpO1ZpLmV4cG9ydHM9ZnVuY3Rpb24oZCxtKXtpZighUmkoZCl8fE5pKGQpKXJldHVybiBkO3ZhciBrPVlvKGQsR28pLGY7aWYoayl7aWYobT09PXZvaWQgMCYmKG09XCJkZWZhdWx0XCIpLGY9V28oayxkLG0pLCFSaShmKXx8TmkoZikpcmV0dXJuIGY7dGhyb3cgUW8oXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9cmV0dXJuIG09PT12b2lkIDAmJihtPVwibnVtYmVyXCIpLCRvKGQsbSl9fSk7dmFyIGh1PUYoKGk2LF9pKT0+e3ZhciB4bz1qaSgpLHBvPWZ1KCk7X2kuZXhwb3J0cz1mdW5jdGlvbihkKXt2YXIgbT14byhkLFwic3RyaW5nXCIpO3JldHVybiBwbyhtKT9tOm0rXCJcIn19KTt2YXIgSmk9RigobjYsVWkpPT57dmFyIHVsPWkyKCksTWk9WjIoKSxtdT11bC5kb2N1bWVudCxlbD1NaShtdSkmJk1pKG11LmNyZWF0ZUVsZW1lbnQpO1VpLmV4cG9ydHM9ZnVuY3Rpb24oZCl7cmV0dXJuIGVsP211LmNyZWF0ZUVsZW1lbnQoZCk6e319fSk7dmFyIGJ1PUYoKHQ2LFhpKT0+e3ZhciBpbD1KMigpLG5sPUwyKCksdGw9SmkoKTtYaS5leHBvcnRzPSFpbCYmIW5sKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0bChcImRpdlwiKSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYSE9N30pfSk7dmFyIGt1PUYoSGk9Pnt2YXIgb2w9SjIoKSxsbD1QMSgpLGZsPU9lKCksY2w9cDEoKSxzbD1FMSgpLGFsPWh1KCksZGw9TzIoKSxnbD1idSgpLHppPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7SGkuZj1vbD96aTpmdW5jdGlvbihtLGspe2lmKG09c2wobSksaz1hbChrKSxnbCl0cnl7cmV0dXJuIHppKG0sayl9Y2F0Y2h7fWlmKGRsKG0saykpcmV0dXJuIGNsKCFsbChmbC5mLG0sayksbVtrXSl9fSk7dmFyIFdpPUYoKGw2LEtpKT0+e3ZhciBobD1KMigpLG1sPUwyKCk7S2kuZXhwb3J0cz1obCYmbWwoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7fSxcInByb3RvdHlwZVwiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZSE9NDJ9KX0pO3ZhciBydT1GKChmNiwkaSk9Pnt2YXIgWWk9aTIoKSxibD1aMigpLGtsPVlpLlN0cmluZyxybD1ZaS5UeXBlRXJyb3I7JGkuZXhwb3J0cz1mdW5jdGlvbihkKXtpZihibChkKSlyZXR1cm4gZDt0aHJvdyBybChrbChkKStcIiBpcyBub3QgYW4gb2JqZWN0XCIpfX0pO3ZhciBFdT1GKFFpPT57dmFyIHZsPWkyKCksQWw9SjIoKSx5bD1idSgpLFBsPVdpKCksQjE9cnUoKSxaaT1odSgpLEVsPXZsLlR5cGVFcnJvcix2dT1PYmplY3QuZGVmaW5lUHJvcGVydHksRGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixBdT1cImVudW1lcmFibGVcIix5dT1cImNvbmZpZ3VyYWJsZVwiLFB1PVwid3JpdGFibGVcIjtRaS5mPUFsP1BsP2Z1bmN0aW9uKG0sayxmKXtpZihCMShtKSxrPVppKGspLEIxKGYpLHR5cGVvZiBtPT1cImZ1bmN0aW9uXCImJms9PT1cInByb3RvdHlwZVwiJiZcInZhbHVlXCJpbiBmJiZQdSBpbiBmJiYhZltQdV0pe3ZhciBQPURsKG0sayk7UCYmUFtQdV0mJihtW2tdPWYudmFsdWUsZj17Y29uZmlndXJhYmxlOnl1IGluIGY/Zlt5dV06UFt5dV0sZW51bWVyYWJsZTpBdSBpbiBmP2ZbQXVdOlBbQXVdLHdyaXRhYmxlOiExfSl9cmV0dXJuIHZ1KG0sayxmKX06dnU6ZnVuY3Rpb24obSxrLGYpe2lmKEIxKG0pLGs9WmkoayksQjEoZikseWwpdHJ5e3JldHVybiB2dShtLGssZil9Y2F0Y2h7fWlmKFwiZ2V0XCJpbiBmfHxcInNldFwiaW4gZil0aHJvdyBFbChcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkXCIpO3JldHVyblwidmFsdWVcImluIGYmJihtW2tdPWYudmFsdWUpLG19fSk7dmFyIFMxPUYoKHM2LEdpKT0+e3ZhciBDbD1KMigpLHdsPUV1KCkscWw9cDEoKTtHaS5leHBvcnRzPUNsP2Z1bmN0aW9uKGQsbSxrKXtyZXR1cm4gd2wuZihkLG0scWwoMSxrKSl9OmZ1bmN0aW9uKGQsbSxrKXtyZXR1cm4gZFttXT1rLGR9fSk7dmFyIEN1PUYoKGE2LHhpKT0+e3ZhciBCbD1EMigpLFNsPUMyKCksRHU9cTEoKSxGbD1CbChGdW5jdGlvbi50b1N0cmluZyk7U2woRHUuaW5zcGVjdFNvdXJjZSl8fChEdS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGQpe3JldHVybiBGbChkKX0pO3hpLmV4cG9ydHM9RHUuaW5zcGVjdFNvdXJjZX0pO3ZhciBlbj1GKChkNix1bik9Pnt2YXIgVGw9aTIoKSxMbD1DMigpLE9sPUN1KCkscGk9VGwuV2Vha01hcDt1bi5leHBvcnRzPUxsKHBpKSYmL25hdGl2ZSBjb2RlLy50ZXN0KE9sKHBpKSl9KTt2YXIgb249RigoZzYsdG4pPT57dmFyIElsPWR1KCksUmw9Z3UoKSxubj1JbChcImtleXNcIik7dG4uZXhwb3J0cz1mdW5jdGlvbihkKXtyZXR1cm4gbm5bZF18fChubltkXT1SbChkKSl9fSk7dmFyIHd1PUYoKGg2LGxuKT0+e2xuLmV4cG9ydHM9e319KTt2YXIgZ249RigobTYsZG4pPT57dmFyIE5sPWVuKCksYW49aTIoKSxxdT1EMigpLFZsPVoyKCksamw9UzEoKSxCdT1PMigpLFN1PXExKCksX2w9b24oKSxNbD13dSgpLGZuPVwiT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWRcIixUdT1hbi5UeXBlRXJyb3IsVWw9YW4uV2Vha01hcCxGMSxlMSxUMSxKbD1mdW5jdGlvbihkKXtyZXR1cm4gVDEoZCk/ZTEoZCk6RjEoZCx7fSl9LFhsPWZ1bmN0aW9uKGQpe3JldHVybiBmdW5jdGlvbihtKXt2YXIgaztpZighVmwobSl8fChrPWUxKG0pKS50eXBlIT09ZCl0aHJvdyBUdShcIkluY29tcGF0aWJsZSByZWNlaXZlciwgXCIrZCtcIiByZXF1aXJlZFwiKTtyZXR1cm4ga319O05sfHxTdS5zdGF0ZT8oSTI9U3Uuc3RhdGV8fChTdS5zdGF0ZT1uZXcgVWwpLGNuPXF1KEkyLmdldCksRnU9cXUoSTIuaGFzKSxzbj1xdShJMi5zZXQpLEYxPWZ1bmN0aW9uKGQsbSl7aWYoRnUoSTIsZCkpdGhyb3cgbmV3IFR1KGZuKTtyZXR1cm4gbS5mYWNhZGU9ZCxzbihJMixkLG0pLG19LGUxPWZ1bmN0aW9uKGQpe3JldHVybiBjbihJMixkKXx8e319LFQxPWZ1bmN0aW9uKGQpe3JldHVybiBGdShJMixkKX0pOih6Mj1fbChcInN0YXRlXCIpLE1sW3oyXT0hMCxGMT1mdW5jdGlvbihkLG0pe2lmKEJ1KGQsejIpKXRocm93IG5ldyBUdShmbik7cmV0dXJuIG0uZmFjYWRlPWQsamwoZCx6MixtKSxtfSxlMT1mdW5jdGlvbihkKXtyZXR1cm4gQnUoZCx6Mik/ZFt6Ml06e319LFQxPWZ1bmN0aW9uKGQpe3JldHVybiBCdShkLHoyKX0pO3ZhciBJMixjbixGdSxzbix6Mjtkbi5leHBvcnRzPXtzZXQ6RjEsZ2V0OmUxLGhhczpUMSxlbmZvcmNlOkpsLGdldHRlckZvcjpYbH19KTt2YXIgYm49RigoYjYsbW4pPT57dmFyIEx1PUoyKCksemw9TzIoKSxobj1GdW5jdGlvbi5wcm90b3R5cGUsSGw9THUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsT3U9emwoaG4sXCJuYW1lXCIpLEtsPU91JiZmdW5jdGlvbigpe30ubmFtZT09PVwic29tZXRoaW5nXCIsV2w9T3UmJighTHV8fEx1JiZIbChobixcIm5hbWVcIikuY29uZmlndXJhYmxlKTttbi5leHBvcnRzPXtFWElTVFM6T3UsUFJPUEVSOktsLENPTkZJR1VSQUJMRTpXbH19KTt2YXIgeW49RigoazYsQW4pPT57dmFyIFlsPWkyKCksa249QzIoKSwkbD1PMigpLHJuPVMxKCksWmw9dzEoKSxRbD1DdSgpLHZuPWduKCksR2w9Ym4oKS5DT05GSUdVUkFCTEUseGw9dm4uZ2V0LHBsPXZuLmVuZm9yY2UsdTQ9U3RyaW5nKFN0cmluZykuc3BsaXQoXCJTdHJpbmdcIik7KEFuLmV4cG9ydHM9ZnVuY3Rpb24oZCxtLGssZil7dmFyIFA9Zj8hIWYudW5zYWZlOiExLFM9Zj8hIWYuZW51bWVyYWJsZTohMSxxPWY/ISFmLm5vVGFyZ2V0R2V0OiExLFQ9ZiYmZi5uYW1lIT09dm9pZCAwP2YubmFtZTptLHI7aWYoa24oaykmJihTdHJpbmcoVCkuc2xpY2UoMCw3KT09PVwiU3ltYm9sKFwiJiYoVD1cIltcIitTdHJpbmcoVCkucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLFwiJDFcIikrXCJdXCIpLCghJGwoayxcIm5hbWVcIil8fEdsJiZrLm5hbWUhPT1UKSYmcm4oayxcIm5hbWVcIixUKSxyPXBsKGspLHIuc291cmNlfHwoci5zb3VyY2U9dTQuam9pbih0eXBlb2YgVD09XCJzdHJpbmdcIj9UOlwiXCIpKSksZD09PVlsKXtTP2RbbV09azpabChtLGspO3JldHVybn1lbHNlIFA/IXEmJmRbbV0mJihTPSEwKTpkZWxldGUgZFttXTtTP2RbbV09azpybihkLG0sayl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGtuKHRoaXMpJiZ4bCh0aGlzKS5zb3VyY2V8fFFsKHRoaXMpfSl9KTt2YXIgSXU9RigocjYsUG4pPT57dmFyIGU0PU1hdGguY2VpbCxpND1NYXRoLmZsb29yO1BuLmV4cG9ydHM9ZnVuY3Rpb24oZCl7dmFyIG09K2Q7cmV0dXJuIG0hPT1tfHxtPT09MD8wOihtPjA/aTQ6ZTQpKG0pfX0pO3ZhciBEbj1GKCh2NixFbik9Pnt2YXIgbjQ9SXUoKSx0ND1NYXRoLm1heCxvND1NYXRoLm1pbjtFbi5leHBvcnRzPWZ1bmN0aW9uKGQsbSl7dmFyIGs9bjQoZCk7cmV0dXJuIGs8MD90NChrK20sMCk6bzQoayxtKX19KTt2YXIgd249RigoQTYsQ24pPT57dmFyIGw0PUl1KCksZjQ9TWF0aC5taW47Q24uZXhwb3J0cz1mdW5jdGlvbihkKXtyZXR1cm4gZD4wP2Y0KGw0KGQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSk7dmFyIEJuPUYoKHk2LHFuKT0+e3ZhciBjND13bigpO3FuLmV4cG9ydHM9ZnVuY3Rpb24oZCl7cmV0dXJuIGM0KGQubGVuZ3RoKX19KTt2YXIgVG49RigoUDYsRm4pPT57dmFyIHM0PUUxKCksYTQ9RG4oKSxkND1CbigpLFNuPWZ1bmN0aW9uKGQpe3JldHVybiBmdW5jdGlvbihtLGssZil7dmFyIFA9czQobSksUz1kNChQKSxxPWE0KGYsUyksVDtpZihkJiZrIT1rKXtmb3IoO1M+cTspaWYoVD1QW3ErK10sVCE9VClyZXR1cm4hMH1lbHNlIGZvcig7Uz5xO3ErKylpZigoZHx8cSBpbiBQKSYmUFtxXT09PWspcmV0dXJuIGR8fHF8fDA7cmV0dXJuIWQmJi0xfX07Rm4uZXhwb3J0cz17aW5jbHVkZXM6U24oITApLGluZGV4T2Y6U24oITEpfX0pO3ZhciBJbj1GKChFNixPbik9Pnt2YXIgZzQ9RDIoKSxSdT1PMigpLGg0PUUxKCksbTQ9VG4oKS5pbmRleE9mLGI0PXd1KCksTG49ZzQoW10ucHVzaCk7T24uZXhwb3J0cz1mdW5jdGlvbihkLG0pe3ZhciBrPWg0KGQpLGY9MCxQPVtdLFM7Zm9yKFMgaW4gaykhUnUoYjQsUykmJlJ1KGssUykmJkxuKFAsUyk7Zm9yKDttLmxlbmd0aD5mOylSdShrLFM9bVtmKytdKSYmKH5tNChQLFMpfHxMbihQLFMpKTtyZXR1cm4gUH19KTt2YXIgTm49RigoRDYsUm4pPT57Um4uZXhwb3J0cz1bXCJjb25zdHJ1Y3RvclwiLFwiaGFzT3duUHJvcGVydHlcIixcImlzUHJvdG90eXBlT2ZcIixcInByb3BlcnR5SXNFbnVtZXJhYmxlXCIsXCJ0b0xvY2FsZVN0cmluZ1wiLFwidG9TdHJpbmdcIixcInZhbHVlT2ZcIl19KTt2YXIgam49RihWbj0+e3ZhciBrND1JbigpLHI0PU5uKCksdjQ9cjQuY29uY2F0KFwibGVuZ3RoXCIsXCJwcm90b3R5cGVcIik7Vm4uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24obSl7cmV0dXJuIGs0KG0sdjQpfX0pO3ZhciBNbj1GKF9uPT57X24uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSk7dmFyIEpuPUYoKHE2LFVuKT0+e3ZhciBBND1EMSgpLHk0PUQyKCksUDQ9am4oKSxFND1NbigpLEQ0PXJ1KCksQzQ9eTQoW10uY29uY2F0KTtVbi5leHBvcnRzPUE0KFwiUmVmbGVjdFwiLFwib3duS2V5c1wiKXx8ZnVuY3Rpb24obSl7dmFyIGs9UDQuZihENChtKSksZj1FNC5mO3JldHVybiBmP0M0KGssZihtKSk6a319KTt2YXIgSG49RigoQjYsem4pPT57dmFyIFhuPU8yKCksdzQ9Sm4oKSxxND1rdSgpLEI0PUV1KCk7em4uZXhwb3J0cz1mdW5jdGlvbihkLG0sayl7Zm9yKHZhciBmPXc0KG0pLFA9QjQuZixTPXE0LmYscT0wO3E8Zi5sZW5ndGg7cSsrKXt2YXIgVD1mW3FdOyFYbihkLFQpJiYhKGsmJlhuKGssVCkpJiZQKGQsVCxTKG0sVCkpfX19KTt2YXIgV249RigoUzYsS24pPT57dmFyIFM0PUwyKCksRjQ9QzIoKSxUND0vI3xcXC5wcm90b3R5cGVcXC4vLGkxPWZ1bmN0aW9uKGQsbSl7dmFyIGs9TzRbTDQoZCldO3JldHVybiBrPT1SND8hMDprPT1JND8hMTpGNChtKT9TNChtKTohIW19LEw0PWkxLm5vcm1hbGl6ZT1mdW5jdGlvbihkKXtyZXR1cm4gU3RyaW5nKGQpLnJlcGxhY2UoVDQsXCIuXCIpLnRvTG93ZXJDYXNlKCl9LE80PWkxLmRhdGE9e30sSTQ9aTEuTkFUSVZFPVwiTlwiLFI0PWkxLlBPTFlGSUxMPVwiUFwiO0tuLmV4cG9ydHM9aTF9KTt2YXIgJG49RigoRjYsWW4pPT57dmFyIE51PWkyKCksTjQ9a3UoKS5mLFY0PVMxKCksajQ9eW4oKSxfND13MSgpLE00PUhuKCksVTQ9V24oKTtZbi5leHBvcnRzPWZ1bmN0aW9uKGQsbSl7dmFyIGs9ZC50YXJnZXQsZj1kLmdsb2JhbCxQPWQuc3RhdCxTLHEsVCxyLEssWTtpZihmP3E9TnU6UD9xPU51W2tdfHxfNChrLHt9KTpxPShOdVtrXXx8e30pLnByb3RvdHlwZSxxKWZvcihUIGluIG0pe2lmKEs9bVtUXSxkLm5vVGFyZ2V0R2V0PyhZPU40KHEsVCkscj1ZJiZZLnZhbHVlKTpyPXFbVF0sUz1VNChmP1Q6aysoUD9cIi5cIjpcIiNcIikrVCxkLmZvcmNlZCksIVMmJnIhPT12b2lkIDApe2lmKHR5cGVvZiBLPT10eXBlb2Ygciljb250aW51ZTtNNChLLHIpfShkLnNoYW18fHImJnIuc2hhbSkmJlY0KEssXCJzaGFtXCIsITApLGo0KHEsVCxLLGQpfX19KTt2YXIgWm49RigoKT0+e3ZhciBKND0kbigpLFg0PWkyKCk7SjQoe2dsb2JhbDohMH0se2dsb2JhbFRoaXM6WDR9KX0pO3ZhciBRbj1GKCgpPT57Wm4oKX0pO3ZhciB5Mz1GKChSNixrMCk9PntRbigpO3ZhciBNdT1PYmplY3QuZGVmaW5lUHJvcGVydHksejQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixVdT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxIND1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHhuPShkLG0pPT5mdW5jdGlvbigpe3JldHVybiBkJiYobT0oMCxkW1V1KGQpWzBdXSkoZD0wKSksbX0sbDI9KGQsbSk9PmZ1bmN0aW9uKCl7cmV0dXJuIG18fCgwLGRbVXUoZClbMF1dKSgobT17ZXhwb3J0czp7fX0pLmV4cG9ydHMsbSksbS5leHBvcnRzfSxLND0oZCxtKT0+e2Zvcih2YXIgayBpbiBtKU11KGQsayx7Z2V0Om1ba10sZW51bWVyYWJsZTohMH0pfSxXND0oZCxtLGssZik9PntpZihtJiZ0eXBlb2YgbT09XCJvYmplY3RcInx8dHlwZW9mIG09PVwiZnVuY3Rpb25cIilmb3IobGV0IFAgb2YgVXUobSkpIUg0LmNhbGwoZCxQKSYmUCE9PWsmJk11KGQsUCx7Z2V0OigpPT5tW1BdLGVudW1lcmFibGU6IShmPXo0KG0sUCkpfHxmLmVudW1lcmFibGV9KTtyZXR1cm4gZH0sWTQ9ZD0+VzQoTXUoe30sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZCksbjI9eG4oe1wiPGRlZmluZTpwcm9jZXNzPlwiKCl7fX0pLHBuPWwyKHtcInNyYy9jb21tb24vcGFyc2VyLWNyZWF0ZS1lcnJvci5qc1wiKGQsbSl7XCJ1c2Ugc3RyaWN0XCI7bjIoKTtmdW5jdGlvbiBrKGYsUCl7bGV0IFM9bmV3IFN5bnRheEVycm9yKGYrXCIgKFwiK1Auc3RhcnQubGluZStcIjpcIitQLnN0YXJ0LmNvbHVtbitcIilcIik7cmV0dXJuIFMubG9jPVAsU31tLmV4cG9ydHM9a319KSwkND1sMih7XCJzcmMvdXRpbHMvdHJ5LWNvbWJpbmF0aW9ucy5qc1wiKGQsbSl7XCJ1c2Ugc3RyaWN0XCI7bjIoKTtmdW5jdGlvbiBrKCl7bGV0IGY7Zm9yKHZhciBQPWFyZ3VtZW50cy5sZW5ndGgsUz1uZXcgQXJyYXkoUCkscT0wO3E8UDtxKyspU1txXT1hcmd1bWVudHNbcV07Zm9yKGxldFtULHJdb2YgUy5lbnRyaWVzKCkpdHJ5e3JldHVybntyZXN1bHQ6cigpfX1jYXRjaChLKXtUPT09MCYmKGY9Syl9cmV0dXJue2Vycm9yOmZ9fW0uZXhwb3J0cz1rfX0pLHUwPXt9O0s0KHUwLHtFT0w6KCk9Pl91LGFyY2g6KCk9Plo0LGNwdXM6KCk9PmYwLGRlZmF1bHQ6KCk9PmcwLGVuZGlhbm5lc3M6KCk9PmUwLGZyZWVtZW06KCk9Pm8wLGdldE5ldHdvcmtJbnRlcmZhY2VzOigpPT5kMCxob3N0bmFtZTooKT0+aTAsbG9hZGF2ZzooKT0+bjAsbmV0d29ya0ludGVyZmFjZXM6KCk9PmEwLHBsYXRmb3JtOigpPT5RNCxyZWxlYXNlOigpPT5zMCx0bXBEaXI6KCk9PlZ1LHRtcGRpcjooKT0+anUsdG90YWxtZW06KCk9PmwwLHR5cGU6KCk9PmMwLHVwdGltZTooKT0+dDB9KTtmdW5jdGlvbiBlMCgpe2lmKHR5cGVvZiBMMT5cInVcIil7dmFyIGQ9bmV3IEFycmF5QnVmZmVyKDIpLG09bmV3IFVpbnQ4QXJyYXkoZCksaz1uZXcgVWludDE2QXJyYXkoZCk7aWYobVswXT0xLG1bMV09MixrWzBdPT09MjU4KUwxPVwiQkVcIjtlbHNlIGlmKGtbMF09PT01MTMpTDE9XCJMRVwiO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwidW5hYmxlIHRvIGZpZ3VyZSBvdXQgZW5kaWFuZXNzXCIpfXJldHVybiBMMX1mdW5jdGlvbiBpMCgpe3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpcy5sb2NhdGlvbjxcInVcIj9nbG9iYWxUaGlzLmxvY2F0aW9uLmhvc3RuYW1lOlwiXCJ9ZnVuY3Rpb24gbjAoKXtyZXR1cm5bXX1mdW5jdGlvbiB0MCgpe3JldHVybiAwfWZ1bmN0aW9uIG8wKCl7cmV0dXJuIE51bWJlci5NQVhfVkFMVUV9ZnVuY3Rpb24gbDAoKXtyZXR1cm4gTnVtYmVyLk1BWF9WQUxVRX1mdW5jdGlvbiBmMCgpe3JldHVybltdfWZ1bmN0aW9uIGMwKCl7cmV0dXJuXCJCcm93c2VyXCJ9ZnVuY3Rpb24gczAoKXtyZXR1cm4gdHlwZW9mIGdsb2JhbFRoaXMubmF2aWdhdG9yPFwidVwiP2dsb2JhbFRoaXMubmF2aWdhdG9yLmFwcFZlcnNpb246XCJcIn1mdW5jdGlvbiBhMCgpe31mdW5jdGlvbiBkMCgpe31mdW5jdGlvbiBaNCgpe3JldHVyblwiamF2YXNjcmlwdFwifWZ1bmN0aW9uIFE0KCl7cmV0dXJuXCJicm93c2VyXCJ9ZnVuY3Rpb24gVnUoKXtyZXR1cm5cIi90bXBcIn12YXIgTDEsanUsX3UsZzAsRzQ9eG4oe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxsczpvc1wiKCl7bjIoKSxqdT1WdSxfdT1gXG5gLGcwPXtFT0w6X3UsdG1wZGlyOmp1LHRtcERpcjpWdSxuZXR3b3JrSW50ZXJmYWNlczphMCxnZXROZXR3b3JrSW50ZXJmYWNlczpkMCxyZWxlYXNlOnMwLHR5cGU6YzAsY3B1czpmMCx0b3RhbG1lbTpsMCxmcmVlbWVtOm8wLHVwdGltZTp0MCxsb2FkYXZnOm4wLGhvc3RuYW1lOmkwLGVuZGlhbm5lc3M6ZTB9fX0pLHg0PWwyKHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHMtY29tbW9uanM6b3NcIihkLG0pe24yKCk7dmFyIGs9KEc0KCksWTQodTApKTtpZihrJiZrLmRlZmF1bHQpe20uZXhwb3J0cz1rLmRlZmF1bHQ7Zm9yKGxldCBmIGluIGspbS5leHBvcnRzW2ZdPWtbZl19ZWxzZSBrJiYobS5leHBvcnRzPWspfX0pLHA0PWwyKHtcIm5vZGVfbW9kdWxlcy9kZXRlY3QtbmV3bGluZS9pbmRleC5qc1wiKGQsbSl7XCJ1c2Ugc3RyaWN0XCI7bjIoKTt2YXIgaz1mPT57aWYodHlwZW9mIGYhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO2xldCBQPWYubWF0Y2goLyg/Olxccj9cXG4pL2cpfHxbXTtpZihQLmxlbmd0aD09PTApcmV0dXJuO2xldCBTPVAuZmlsdGVyKFQ9PlQ9PT1gXFxyXG5gKS5sZW5ndGgscT1QLmxlbmd0aC1TO3JldHVybiBTPnE/YFxcclxuYDpgXG5gfTttLmV4cG9ydHM9ayxtLmV4cG9ydHMuZ3JhY2VmdWw9Zj0+dHlwZW9mIGY9PVwic3RyaW5nXCImJmsoZil8fGBcbmB9fSksdTM9bDIoe1wibm9kZV9tb2R1bGVzL2plc3QtZG9jYmxvY2svYnVpbGQvaW5kZXguanNcIihkKXtcInVzZSBzdHJpY3RcIjtuMigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGQuZXh0cmFjdD1aLGQucGFyc2U9dDIsZC5wYXJzZVdpdGhDb21tZW50cz1WLGQucHJpbnQ9SixkLnN0cmlwPUw7ZnVuY3Rpb24gbSgpe2xldCBJPXg0KCk7cmV0dXJuIG09ZnVuY3Rpb24oKXtyZXR1cm4gSX0sSX1mdW5jdGlvbiBrKCl7bGV0IEk9ZihwNCgpKTtyZXR1cm4gaz1mdW5jdGlvbigpe3JldHVybiBJfSxJfWZ1bmN0aW9uIGYoSSl7cmV0dXJuIEkmJkkuX19lc01vZHVsZT9JOntkZWZhdWx0Okl9fXZhciBQPS9cXCpcXC8kLyxTPS9eXFwvXFwqXFwqLyxxPS9eXFxzKihcXC9cXCpcXCo/KC58XFxyP1xcbikqP1xcKlxcLykvLFQ9LyhefFxccyspXFwvXFwvKFteXFxyXFxuXSopL2cscj0vXihcXHI/XFxuKSsvLEs9Lyg/Ol58XFxyP1xcbikgKihAW15cXHJcXG5dKj8pICpcXHI/XFxuICooPyFbXkBcXHJcXG5dKlxcL1xcL1teXSopKFteQFxcclxcblxcc11bXkBcXHJcXG5dKz8pICpcXHI/XFxuL2csWT0vKD86XnxcXHI/XFxuKSAqQChcXFMrKSAqKFteXFxyXFxuXSopL2csWD0vKFxccj9cXG58XikgKlxcKiA/L2cscD1bXTtmdW5jdGlvbiBaKEkpe2xldCB1Mj1JLm1hdGNoKHEpO3JldHVybiB1Mj91MlswXS50cmltTGVmdCgpOlwiXCJ9ZnVuY3Rpb24gTChJKXtsZXQgdTI9SS5tYXRjaChxKTtyZXR1cm4gdTImJnUyWzBdP0kuc3Vic3RyaW5nKHUyWzBdLmxlbmd0aCk6SX1mdW5jdGlvbiB0MihJKXtyZXR1cm4gVihJKS5wcmFnbWFzfWZ1bmN0aW9uIFYoSSl7bGV0IHUyPSgwLGsoKS5kZWZhdWx0KShJKXx8bSgpLkVPTDtJPUkucmVwbGFjZShTLFwiXCIpLnJlcGxhY2UoUCxcIlwiKS5yZXBsYWNlKFgsXCIkMVwiKTtsZXQgbTI9XCJcIjtmb3IoO20yIT09STspbTI9SSxJPUkucmVwbGFjZShLLFwiXCIuY29uY2F0KHUyLFwiJDEgJDJcIikuY29uY2F0KHUyKSk7ST1JLnJlcGxhY2UocixcIlwiKS50cmltUmlnaHQoKTtsZXQgYzI9T2JqZWN0LmNyZWF0ZShudWxsKSxSMj1JLnJlcGxhY2UoWSxcIlwiKS5yZXBsYWNlKHIsXCJcIikudHJpbVJpZ2h0KCksczI7Zm9yKDtzMj1ZLmV4ZWMoSSk7KXtsZXQgTjI9czJbMl0ucmVwbGFjZShULFwiXCIpO3R5cGVvZiBjMltzMlsxXV09PVwic3RyaW5nXCJ8fEFycmF5LmlzQXJyYXkoYzJbczJbMV1dKT9jMltzMlsxXV09cC5jb25jYXQoYzJbczJbMV1dLE4yKTpjMltzMlsxXV09TjJ9cmV0dXJue2NvbW1lbnRzOlIyLHByYWdtYXM6YzJ9fWZ1bmN0aW9uIEooSSl7bGV0e2NvbW1lbnRzOnUyPVwiXCIscHJhZ21hczptMj17fX09SSxjMj0oMCxrKCkuZGVmYXVsdCkodTIpfHxtKCkuRU9MLFIyPVwiLyoqXCIsczI9XCIgKlwiLE4yPVwiICovXCIsdzI9T2JqZWN0LmtleXMobTIpLE8xPXcyLm1hcChnMj0+SChnMixtMltnMl0pKS5yZWR1Y2UoKGcyLG4xKT0+ZzIuY29uY2F0KG4xKSxbXSkubWFwKGcyPT5zMitcIiBcIitnMitjMikuam9pbihcIlwiKTtpZighdTIpe2lmKHcyLmxlbmd0aD09PTApcmV0dXJuXCJcIjtpZih3Mi5sZW5ndGg9PT0xJiYhQXJyYXkuaXNBcnJheShtMlt3MlswXV0pKXtsZXQgZzI9bTJbdzJbMF1dO3JldHVyblwiXCIuY29uY2F0KFIyLFwiIFwiKS5jb25jYXQoSCh3MlswXSxnMilbMF0pLmNvbmNhdChOMil9fWxldCBJMT11Mi5zcGxpdChjMikubWFwKGcyPT5cIlwiLmNvbmNhdChzMixcIiBcIikuY29uY2F0KGcyKSkuam9pbihjMikrYzI7cmV0dXJuIFIyK2MyKyh1Mj9JMTpcIlwiKSsodTImJncyLmxlbmd0aD9zMitjMjpcIlwiKStPMStOMn1mdW5jdGlvbiBIKEksdTIpe3JldHVybiBwLmNvbmNhdCh1MikubWFwKG0yPT5cIkBcIi5jb25jYXQoSSxcIiBcIikuY29uY2F0KG0yKS50cmltKCkpfX19KSxlMz1sMih7XCJzcmMvY29tbW9uL2VuZC1vZi1saW5lLmpzXCIoZCxtKXtcInVzZSBzdHJpY3RcIjtuMigpO2Z1bmN0aW9uIGsocSl7bGV0IFQ9cS5pbmRleE9mKFwiXFxyXCIpO3JldHVybiBUPj0wP3EuY2hhckF0KFQrMSk9PT1gXG5gP1wiY3JsZlwiOlwiY3JcIjpcImxmXCJ9ZnVuY3Rpb24gZihxKXtzd2l0Y2gocSl7Y2FzZVwiY3JcIjpyZXR1cm5cIlxcclwiO2Nhc2VcImNybGZcIjpyZXR1cm5gXFxyXG5gO2RlZmF1bHQ6cmV0dXJuYFxuYH19ZnVuY3Rpb24gUChxLFQpe2xldCByO3N3aXRjaChUKXtjYXNlYFxuYDpyPS9cXG4vZzticmVhaztjYXNlXCJcXHJcIjpyPS9cXHIvZzticmVhaztjYXNlYFxcclxuYDpyPS9cXHJcXG4vZzticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBcImVvbFwiICcuY29uY2F0KEpTT04uc3RyaW5naWZ5KFQpLFwiLlwiKSl9bGV0IEs9cS5tYXRjaChyKTtyZXR1cm4gSz9LLmxlbmd0aDowfWZ1bmN0aW9uIFMocSl7cmV0dXJuIHEucmVwbGFjZSgvXFxyXFxuPy9nLGBcbmApfW0uZXhwb3J0cz17Z3Vlc3NFbmRPZkxpbmU6ayxjb252ZXJ0RW5kT2ZMaW5lVG9DaGFyczpmLGNvdW50RW5kT2ZMaW5lQ2hhcnM6UCxub3JtYWxpemVFbmRPZkxpbmU6U319fSksaTM9bDIoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2dldC1zaGViYW5nLmpzXCIoZCxtKXtcInVzZSBzdHJpY3RcIjtuMigpO2Z1bmN0aW9uIGsoZil7aWYoIWYuc3RhcnRzV2l0aChcIiMhXCIpKXJldHVyblwiXCI7bGV0IFA9Zi5pbmRleE9mKGBcbmApO3JldHVybiBQPT09LTE/ZjpmLnNsaWNlKDAsUCl9bS5leHBvcnRzPWt9fSksbjM9bDIoe1wic3JjL2xhbmd1YWdlLWpzL3ByYWdtYS5qc1wiKGQsbSl7XCJ1c2Ugc3RyaWN0XCI7bjIoKTt2YXJ7cGFyc2VXaXRoQ29tbWVudHM6ayxzdHJpcDpmLGV4dHJhY3Q6UCxwcmludDpTfT11MygpLHtub3JtYWxpemVFbmRPZkxpbmU6cX09ZTMoKSxUPWkzKCk7ZnVuY3Rpb24gcihYKXtsZXQgcD1UKFgpO3AmJihYPVguc2xpY2UocC5sZW5ndGgrMSkpO2xldCBaPVAoWCkse3ByYWdtYXM6TCxjb21tZW50czp0Mn09ayhaKTtyZXR1cm57c2hlYmFuZzpwLHRleHQ6WCxwcmFnbWFzOkwsY29tbWVudHM6dDJ9fWZ1bmN0aW9uIEsoWCl7bGV0IHA9T2JqZWN0LmtleXMocihYKS5wcmFnbWFzKTtyZXR1cm4gcC5pbmNsdWRlcyhcInByZXR0aWVyXCIpfHxwLmluY2x1ZGVzKFwiZm9ybWF0XCIpfWZ1bmN0aW9uIFkoWCl7bGV0e3NoZWJhbmc6cCx0ZXh0OloscHJhZ21hczpMLGNvbW1lbnRzOnQyfT1yKFgpLFY9ZihaKSxKPVMoe3ByYWdtYXM6T2JqZWN0LmFzc2lnbih7Zm9ybWF0OlwiXCJ9LEwpLGNvbW1lbnRzOnQyLnRyaW1TdGFydCgpfSk7cmV0dXJuKHA/XCJcIi5jb25jYXQocCxgXG5gKTpcIlwiKStxKEopKyhWLnN0YXJ0c1dpdGgoYFxuYCk/YFxuYDpgXG5cbmApK1Z9bS5leHBvcnRzPXtoYXNQcmFnbWE6SyxpbnNlcnRQcmFnbWE6WX19fSksdDM9bDIoe1wic3JjL3V0aWxzL2lzLW5vbi1lbXB0eS1hcnJheS5qc1wiKGQsbSl7XCJ1c2Ugc3RyaWN0XCI7bjIoKTtmdW5jdGlvbiBrKGYpe3JldHVybiBBcnJheS5pc0FycmF5KGYpJiZmLmxlbmd0aD4wfW0uZXhwb3J0cz1rfX0pLGgwPWwyKHtcInNyYy9sYW5ndWFnZS1qcy9sb2MuanNcIihkLG0pe1widXNlIHN0cmljdFwiO24yKCk7dmFyIGs9dDMoKTtmdW5jdGlvbiBmKHIsSyl7bGV0e2lnbm9yZURlY29yYXRvcnM6WX09S3x8e307aWYoIVkpe2xldCBYPXIuZGVjbGFyYXRpb24mJnIuZGVjbGFyYXRpb24uZGVjb3JhdG9yc3x8ci5kZWNvcmF0b3JzO2lmKGsoWCkpcmV0dXJuIGYoWFswXSl9cmV0dXJuIHIucmFuZ2U/ci5yYW5nZVswXTpyLnN0YXJ0fWZ1bmN0aW9uIFAocil7cmV0dXJuIHIucmFuZ2U/ci5yYW5nZVsxXTpyLmVuZH1mdW5jdGlvbiBTKHIsSyl7bGV0IFk9ZihyKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihZKSYmWT09PWYoSyl9ZnVuY3Rpb24gcShyLEspe2xldCBZPVAocik7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoWSkmJlk9PT1QKEspfWZ1bmN0aW9uIFQocixLKXtyZXR1cm4gUyhyLEspJiZxKHIsSyl9bS5leHBvcnRzPXtsb2NTdGFydDpmLGxvY0VuZDpQLGhhc1NhbWVMb2NTdGFydDpTLGhhc1NhbWVMb2M6VH19fSksbzM9bDIoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3V0aWxzL2NyZWF0ZS1wYXJzZXIuanNcIihkLG0pe1widXNlIHN0cmljdFwiO24yKCk7dmFye2hhc1ByYWdtYTprfT1uMygpLHtsb2NTdGFydDpmLGxvY0VuZDpQfT1oMCgpO2Z1bmN0aW9uIFMocSl7cmV0dXJuIHE9dHlwZW9mIHE9PVwiZnVuY3Rpb25cIj97cGFyc2U6cX06cSxPYmplY3QuYXNzaWduKHthc3RGb3JtYXQ6XCJlc3RyZWVcIixoYXNQcmFnbWE6ayxsb2NTdGFydDpmLGxvY0VuZDpQfSxxKX1tLmV4cG9ydHM9U319KSxsMz1sMih7XCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvaXMtdHMta2V5d29yZC10eXBlLmpzXCIoZCxtKXtcInVzZSBzdHJpY3RcIjtuMigpO2Z1bmN0aW9uIGsoZil7bGV0e3R5cGU6UH09ZjtyZXR1cm4gUC5zdGFydHNXaXRoKFwiVFNcIikmJlAuZW5kc1dpdGgoXCJLZXl3b3JkXCIpfW0uZXhwb3J0cz1rfX0pLGYzPWwyKHtcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy1ibG9jay1jb21tZW50LmpzXCIoZCxtKXtcInVzZSBzdHJpY3RcIjtuMigpO3ZhciBrPW5ldyBTZXQoW1wiQmxvY2tcIixcIkNvbW1lbnRCbG9ja1wiLFwiTXVsdGlMaW5lXCJdKSxmPVA9PmsuaGFzKFA9PW51bGw/dm9pZCAwOlAudHlwZSk7bS5leHBvcnRzPWZ9fSksYzM9bDIoe1wic3JjL2xhbmd1YWdlLWpzL3V0aWxzL2lzLXR5cGUtY2FzdC1jb21tZW50LmpzXCIoZCxtKXtcInVzZSBzdHJpY3RcIjtuMigpO3ZhciBrPWYzKCk7ZnVuY3Rpb24gZihQKXtyZXR1cm4gayhQKSYmUC52YWx1ZVswXT09PVwiKlwiJiYvQHR5cGVcXGIvLnRlc3QoUC52YWx1ZSl9bS5leHBvcnRzPWZ9fSksczM9bDIoe1wic3JjL3V0aWxzL2dldC1sYXN0LmpzXCIoZCxtKXtcInVzZSBzdHJpY3RcIjtuMigpO3ZhciBrPWY9PmZbZi5sZW5ndGgtMV07bS5leHBvcnRzPWt9fSksbTA9bDIoe1wic3JjL2xhbmd1YWdlLWpzL3BhcnNlL3Bvc3Rwcm9jZXNzL3Zpc2l0LW5vZGUuanNcIihkLG0pe1widXNlIHN0cmljdFwiO24yKCk7ZnVuY3Rpb24gayhmLFApe2lmKEFycmF5LmlzQXJyYXkoZikpe2ZvcihsZXQgUz0wO1M8Zi5sZW5ndGg7UysrKWZbU109ayhmW1NdLFApO3JldHVybiBmfWlmKGYmJnR5cGVvZiBmPT1cIm9iamVjdFwiJiZ0eXBlb2YgZi50eXBlPT1cInN0cmluZ1wiKXtsZXQgUz1PYmplY3Qua2V5cyhmKTtmb3IobGV0IHE9MDtxPFMubGVuZ3RoO3ErKylmW1NbcV1dPWsoZltTW3FdXSxQKTtyZXR1cm4gUChmKXx8Zn1yZXR1cm4gZn1tLmV4cG9ydHM9a319KSxiMD1sMih7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvdGhyb3ctc3ludGF4LWVycm9yLmpzXCIoZCxtKXtcInVzZSBzdHJpY3RcIjtuMigpO3ZhciBrPXBuKCk7ZnVuY3Rpb24gZihQLFMpe2xldHtzdGFydDpxLGVuZDpUfT1QLmxvYzt0aHJvdyBrKFMse3N0YXJ0OntsaW5lOnEubGluZSxjb2x1bW46cS5jb2x1bW4rMX0sZW5kOntsaW5lOlQubGluZSxjb2x1bW46VC5jb2x1bW4rMX19KX1tLmV4cG9ydHM9Zn19KSxhMz1sMih7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvdHlwZXNjcmlwdC5qc1wiKGQsbSl7XCJ1c2Ugc3RyaWN0XCI7bjIoKTt2YXIgaz1tMCgpLGY9YjAoKTtmdW5jdGlvbiBQKFQscixLKXtsZXQgWT1ULmRlY29yYXRvcnM7aWYoIUFycmF5LmlzQXJyYXkoWSkpcmV0dXJuO2xldCBYPXIuZGVjb3JhdG9yczsoIUFycmF5LmlzQXJyYXkoWCl8fFgubGVuZ3RoIT09WS5sZW5ndGh8fFkuc29tZShwPT57bGV0IFo9Sy5nZXQocCk7cmV0dXJuIVp8fCFYLmluY2x1ZGVzKFopfSkpJiZmKHIsXCJMZWFkaW5nIGRlY29yYXRvcnMgbXVzdCBiZSBhdHRhY2hlZCB0byBhIGNsYXNzIGRlY2xhcmF0aW9uXCIpfWZ1bmN0aW9uIFMoVCxyKXtULmtpbmQhPT0xNjd8fFQubW9kaWZpZXJzJiYhVC5tb2RpZmllcnMuc29tZShYPT5YLmtpbmQ9PT0xMjYpfHxULmluaXRpYWxpemVyJiZyLnZhbHVlPT09bnVsbCYmZihyLFwiQWJzdHJhY3QgcHJvcGVydHkgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXJcIil9ZnVuY3Rpb24gcShULHIpe2xldHtlc1RyZWVOb2RlVG9UU05vZGVNYXA6Syx0c05vZGVUb0VTVHJlZU5vZGVNYXA6WX09ci50c1BhcnNlUmVzdWx0O2soVCxYPT57bGV0IHA9Sy5nZXQoWCk7aWYoIXApcmV0dXJuO2xldCBaPVkuZ2V0KHApO1o9PT1YJiYoUChwLFosWSksUyhwLFopKX0pfW0uZXhwb3J0cz17dGhyb3dFcnJvckZvckludmFsaWROb2RlczpxfX19KSxkMz1sMih7XCJzcmMvbGFuZ3VhZ2UtanMvcGFyc2UvcG9zdHByb2Nlc3MvaW5kZXguanNcIihkLG0pe1widXNlIHN0cmljdFwiO24yKCk7dmFye2xvY1N0YXJ0OmssbG9jRW5kOmZ9PWgwKCksUD1sMygpLFM9YzMoKSxxPXMzKCksVD1tMCgpLHt0aHJvd0Vycm9yRm9ySW52YWxpZE5vZGVzOnJ9PWEzKCksSz1iMCgpO2Z1bmN0aW9uIFkoTCx0Mil7aWYodDIucGFyc2VyPT09XCJ0eXBlc2NyaXB0XCImJi9AfGFic3RyYWN0Ly50ZXN0KHQyLm9yaWdpbmFsVGV4dCkmJnIoTCx0MiksdDIucGFyc2VyIT09XCJ0eXBlc2NyaXB0XCImJnQyLnBhcnNlciE9PVwiZmxvd1wiJiZ0Mi5wYXJzZXIhPT1cImFjb3JuXCImJnQyLnBhcnNlciE9PVwiZXNwcmVlXCImJnQyLnBhcnNlciE9PVwibWVyaXlhaFwiKXtsZXQgSj1uZXcgU2V0O0w9VChMLEg9PntILmxlYWRpbmdDb21tZW50cyYmSC5sZWFkaW5nQ29tbWVudHMuc29tZShTKSYmSi5hZGQoayhIKSl9KSxMPVQoTCxIPT57aWYoSC50eXBlPT09XCJQYXJlbnRoZXNpemVkRXhwcmVzc2lvblwiKXtsZXR7ZXhwcmVzc2lvbjpJfT1IO2lmKEkudHlwZT09PVwiVHlwZUNhc3RFeHByZXNzaW9uXCIpcmV0dXJuIEkucmFuZ2U9SC5yYW5nZSxJO2xldCB1Mj1rKEgpO2lmKCFKLmhhcyh1MikpcmV0dXJuIEkuZXh0cmE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEkuZXh0cmEpLHt9LHtwYXJlbnRoZXNpemVkOiEwfSksSX19KX1yZXR1cm4gTD1UKEwsSj0+e3N3aXRjaChKLnR5cGUpe2Nhc2VcIkNoYWluRXhwcmVzc2lvblwiOnJldHVybiBYKEouZXhwcmVzc2lvbik7Y2FzZVwiTG9naWNhbEV4cHJlc3Npb25cIjp7aWYocChKKSlyZXR1cm4gWihKKTticmVha31jYXNlXCJWYXJpYWJsZURlY2xhcmF0aW9uXCI6e2xldCBIPXEoSi5kZWNsYXJhdGlvbnMpO0gmJkguaW5pdCYmVihKLEgpO2JyZWFrfWNhc2VcIlRTUGFyZW50aGVzaXplZFR5cGVcIjpyZXR1cm4gUChKLnR5cGVBbm5vdGF0aW9uKXx8Si50eXBlQW5ub3RhdGlvbi50eXBlPT09XCJUU1RoaXNUeXBlXCJ8fChKLnR5cGVBbm5vdGF0aW9uLnJhbmdlPVtrKEopLGYoSildKSxKLnR5cGVBbm5vdGF0aW9uO2Nhc2VcIlRTVHlwZVBhcmFtZXRlclwiOmlmKHR5cGVvZiBKLm5hbWU9PVwic3RyaW5nXCIpe2xldCBIPWsoSik7Si5uYW1lPXt0eXBlOlwiSWRlbnRpZmllclwiLG5hbWU6Si5uYW1lLHJhbmdlOltILEgrSi5uYW1lLmxlbmd0aF19fWJyZWFrO2Nhc2VcIk9iamVjdEV4cHJlc3Npb25cIjppZih0Mi5wYXJzZXI9PT1cInR5cGVzY3JpcHRcIil7bGV0IEg9Si5wcm9wZXJ0aWVzLmZpbmQoST0+SS50eXBlPT09XCJQcm9wZXJ0eVwiJiZJLnZhbHVlLnR5cGU9PT1cIlRTRW1wdHlCb2R5RnVuY3Rpb25FeHByZXNzaW9uXCIpO0gmJksoSC52YWx1ZSxcIlVuZXhwZWN0ZWQgdG9rZW4uXCIpfWJyZWFrO2Nhc2VcIlNlcXVlbmNlRXhwcmVzc2lvblwiOntsZXQgSD1xKEouZXhwcmVzc2lvbnMpO0oucmFuZ2U9W2soSiksTWF0aC5taW4oZihIKSxmKEopKV07YnJlYWt9Y2FzZVwiVG9waWNSZWZlcmVuY2VcIjp0Mi5fX2lzVXNpbmdIYWNrUGlwZWxpbmU9ITA7YnJlYWs7Y2FzZVwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIjp7bGV0e2V4cG9ydGVkOkh9PUo7aWYodDIucGFyc2VyPT09XCJtZXJpeWFoXCImJkgmJkgudHlwZT09PVwiSWRlbnRpZmllclwiKXtsZXQgST10Mi5vcmlnaW5hbFRleHQuc2xpY2UoayhIKSxmKEgpKTsoSS5zdGFydHNXaXRoKCdcIicpfHxJLnN0YXJ0c1dpdGgoXCInXCIpKSYmKEouZXhwb3J0ZWQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEouZXhwb3J0ZWQpLHt9LHt0eXBlOlwiTGl0ZXJhbFwiLHZhbHVlOkouZXhwb3J0ZWQubmFtZSxyYXc6SX0pKX1icmVha319fSksTDtmdW5jdGlvbiBWKEosSCl7dDIub3JpZ2luYWxUZXh0W2YoSCldIT09XCI7XCImJihKLnJhbmdlPVtrKEopLGYoSCldKX19ZnVuY3Rpb24gWChMKXtzd2l0Y2goTC50eXBlKXtjYXNlXCJDYWxsRXhwcmVzc2lvblwiOkwudHlwZT1cIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIixMLmNhbGxlZT1YKEwuY2FsbGVlKTticmVhaztjYXNlXCJNZW1iZXJFeHByZXNzaW9uXCI6TC50eXBlPVwiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCIsTC5vYmplY3Q9WChMLm9iamVjdCk7YnJlYWs7Y2FzZVwiVFNOb25OdWxsRXhwcmVzc2lvblwiOkwuZXhwcmVzc2lvbj1YKEwuZXhwcmVzc2lvbik7YnJlYWt9cmV0dXJuIEx9ZnVuY3Rpb24gcChMKXtyZXR1cm4gTC50eXBlPT09XCJMb2dpY2FsRXhwcmVzc2lvblwiJiZMLnJpZ2h0LnR5cGU9PT1cIkxvZ2ljYWxFeHByZXNzaW9uXCImJkwub3BlcmF0b3I9PT1MLnJpZ2h0Lm9wZXJhdG9yfWZ1bmN0aW9uIFooTCl7cmV0dXJuIHAoTCk/Wih7dHlwZTpcIkxvZ2ljYWxFeHByZXNzaW9uXCIsb3BlcmF0b3I6TC5vcGVyYXRvcixsZWZ0Olooe3R5cGU6XCJMb2dpY2FsRXhwcmVzc2lvblwiLG9wZXJhdG9yOkwub3BlcmF0b3IsbGVmdDpMLmxlZnQscmlnaHQ6TC5yaWdodC5sZWZ0LHJhbmdlOltrKEwubGVmdCksZihMLnJpZ2h0LmxlZnQpXX0pLHJpZ2h0OkwucmlnaHQucmlnaHQscmFuZ2U6W2soTCksZihMKV19KTpMfW0uZXhwb3J0cz1ZfX0pLGczPWwyKHtcIm5vZGVfbW9kdWxlcy9tZXJpeWFoL2Rpc3QvbWVyaXlhaC5janNcIihkKXtcInVzZSBzdHJpY3RcIjtuMigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBtPXtbMF06XCJVbmV4cGVjdGVkIHRva2VuXCIsWzI4XTpcIlVuZXhwZWN0ZWQgdG9rZW46ICclMCdcIixbMV06XCJPY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZVwiLFsyXTpcIk9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRlbXBsYXRlIHN0cmluZ3NcIixbM106XCJVbmV4cGVjdGVkIHRva2VuIGAjYFwiLFs0XTpcIklsbGVnYWwgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2VcIixbNV06XCJJbnZhbGlkIGNvZGUgcG9pbnQgJTBcIixbNl06XCJJbnZhbGlkIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiLFs4XTpcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZVwiLFs3XTpcIkRlY2ltYWwgaW50ZWdlciBsaXRlcmFscyB3aXRoIGEgbGVhZGluZyB6ZXJvIGFyZSBmb3JiaWRkZW4gaW4gc3RyaWN0IG1vZGVcIixbOV06XCJFeHBlY3RlZCBudW1iZXIgaW4gcmFkaXggJTBcIixbMTQ1XTpcIkludmFsaWQgbGVmdC1oYW5kIHNpZGUgYXNzaWdubWVudCB0byBhIGRlc3RydWN0aWJsZSByaWdodC1oYW5kIHNpZGVcIixbMTBdOlwiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3JcIixbMTFdOlwiSW52YWxpZCBCaWdJbnRMaXRlcmFsXCIsWzEyXTpcIk5vIGlkZW50aWZpZXJzIGFsbG93ZWQgZGlyZWN0bHkgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsXCIsWzEzXTpcIkVzY2FwZXMgXFxcXDggb3IgXFxcXDkgYXJlIG5vdCBzeW50YWN0aWNhbGx5IHZhbGlkIGVzY2FwZXNcIixbMTRdOlwiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsXCIsWzE1XTpcIlVudGVybWluYXRlZCB0ZW1wbGF0ZSBsaXRlcmFsXCIsWzE2XTpcIk11bHRpbGluZSBjb21tZW50IHdhcyBub3QgY2xvc2VkIHByb3Blcmx5XCIsWzE3XTpcIlRoZSBpZGVudGlmaWVyIGNvbnRhaW5lZCBkeW5hbWljIHVuaWNvZGUgZXNjYXBlIHRoYXQgd2FzIG5vdCBjbG9zZWRcIixbMThdOlwiSWxsZWdhbCBjaGFyYWN0ZXIgJyUwJ1wiLFsxOV06XCJNaXNzaW5nIGhleGFkZWNpbWFsIGRpZ2l0c1wiLFsyMF06XCJJbnZhbGlkIGltcGxpY2l0IG9jdGFsXCIsWzIxXTpcIkludmFsaWQgbGluZSBicmVhayBpbiBzdHJpbmcgbGl0ZXJhbFwiLFsyMl06XCJPbmx5IHVuaWNvZGUgZXNjYXBlcyBhcmUgbGVnYWwgaW4gaWRlbnRpZmllciBuYW1lc1wiLFsyM106XCJFeHBlY3RlZCAnJTAnXCIsWzI0XTpcIkludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gYXNzaWdubWVudFwiLFsyNV06XCJJbnZhbGlkIGxlZnQtaGFuZCBzaWRlIGluIGFzeW5jIGFycm93XCIsWzI2XTonQ2FsbHMgdG8gc3VwZXIgbXVzdCBiZSBpbiB0aGUgXCJjb25zdHJ1Y3RvclwiIG1ldGhvZCBvZiBhIGNsYXNzIGV4cHJlc3Npb24gb3IgY2xhc3MgZGVjbGFyYXRpb24gdGhhdCBoYXMgYSBzdXBlcmNsYXNzJyxbMjddOlwiTWVtYmVyIGFjY2VzcyBvbiBzdXBlciBtdXN0IGJlIGluIGEgbWV0aG9kXCIsWzI5XTpcIkF3YWl0IGV4cHJlc3Npb24gbm90IGFsbG93ZWQgaW4gZm9ybWFsIHBhcmFtZXRlclwiLFszMF06XCJZaWVsZCBleHByZXNzaW9uIG5vdCBhbGxvd2VkIGluIGZvcm1hbCBwYXJhbWV0ZXJcIixbOTJdOlwiVW5leHBlY3RlZCB0b2tlbjogJ2VzY2FwZWQga2V5d29yZCdcIixbMzFdOlwiVW5hcnkgZXhwcmVzc2lvbnMgYXMgdGhlIGxlZnQgb3BlcmFuZCBvZiBhbiBleHBvbmVudGlhdGlvbiBleHByZXNzaW9uIG11c3QgYmUgZGlzYW1iaWd1YXRlZCB3aXRoIHBhcmVudGhlc2VzXCIsWzExOV06XCJBc3luYyBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgYXQgdGhlIHRvcCBsZXZlbCBvciBpbnNpZGUgYSBibG9ja1wiLFszMl06XCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uXCIsWzMzXTpcIlVuZXhwZWN0ZWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdcIixbMzRdOlwiRHVwbGljYXRlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFnICclMCdcIixbMzVdOlwiJTAgZnVuY3Rpb25zIG11c3QgaGF2ZSBleGFjdGx5ICUxIGFyZ3VtZW50JTJcIixbMzZdOlwiU2V0dGVyIGZ1bmN0aW9uIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgcmVzdCBwYXJhbWV0ZXJcIixbMzddOlwiJTAgZGVjbGFyYXRpb24gbXVzdCBoYXZlIGEgbmFtZSBpbiB0aGlzIGNvbnRleHRcIixbMzhdOlwiRnVuY3Rpb24gbmFtZSBtYXkgbm90IGNvbnRhaW4gYW55IHJlc2VydmVkIHdvcmRzIG9yIGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlXCIsWzM5XTpcIlRoZSByZXN0IG9wZXJhdG9yIGlzIG1pc3NpbmcgYW4gYXJndW1lbnRcIixbNDBdOlwiQSBnZXR0ZXIgY2Fubm90IGJlIGEgZ2VuZXJhdG9yXCIsWzQxXTpcIkEgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgY29sb24gb3IgcGFyZW5cIixbMTMwXTpcIk9iamVjdCBsaXRlcmFsIGtleXMgdGhhdCBhcmUgc3RyaW5ncyBvciBudW1iZXJzIG11c3QgYmUgYSBtZXRob2Qgb3IgaGF2ZSBhIGNvbG9uXCIsWzQzXTpcIkZvdW5kIGAqIGFzeW5jIHgoKXt9YCBidXQgdGhpcyBzaG91bGQgYmUgYGFzeW5jICogeCgpe31gXCIsWzQyXTpcIkdldHRlcnMgYW5kIHNldHRlcnMgY2FuIG5vdCBiZSBnZW5lcmF0b3JzXCIsWzQ0XTpcIiclMCcgY2FuIG5vdCBiZSBnZW5lcmF0b3IgbWV0aG9kXCIsWzQ1XTpcIk5vIGxpbmUgYnJlYWsgaXMgYWxsb3dlZCBhZnRlciAnPT4nXCIsWzQ2XTpcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiB0aGUgYXJyb3cgY2FuIG9ubHkgYmUgZGVzdHJ1Y3RlZCB0aHJvdWdoIGFzc2lnbm1lbnRcIixbNDddOlwiVGhlIGJpbmRpbmcgZGVjbGFyYXRpb24gaXMgbm90IGRlc3RydWN0aWJsZVwiLFs0OF06XCJBc3luYyBhcnJvdyBjYW4gbm90IGJlIGZvbGxvd2VkIGJ5IG5ldyBleHByZXNzaW9uXCIsWzQ5XTpcIkNsYXNzZXMgbWF5IG5vdCBoYXZlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkICdwcm90b3R5cGUnXCIsWzUwXTpcIkNsYXNzIGNvbnN0cnVjdG9yIG1heSBub3QgYmUgYSAlMFwiLFs1MV06XCJEdXBsaWNhdGUgY29uc3RydWN0b3IgbWV0aG9kIGluIGNsYXNzXCIsWzUyXTpcIkludmFsaWQgaW5jcmVtZW50L2RlY3JlbWVudCBvcGVyYW5kXCIsWzUzXTpcIkludmFsaWQgdXNlIG9mIGBuZXdgIGtleXdvcmQgb24gYW4gaW5jcmVtZW50L2RlY3JlbWVudCBleHByZXNzaW9uXCIsWzU0XTpcImA9PmAgaXMgYW4gaW52YWxpZCBhc3NpZ25tZW50IHRhcmdldFwiLFs1NV06XCJSZXN0IGVsZW1lbnQgbWF5IG5vdCBoYXZlIGEgdHJhaWxpbmcgY29tbWFcIixbNTZdOlwiTWlzc2luZyBpbml0aWFsaXplciBpbiAlMCBkZWNsYXJhdGlvblwiLFs1N106XCInZm9yLSUwJyBsb29wIGhlYWQgZGVjbGFyYXRpb25zIGNhbiBub3QgaGF2ZSBhbiBpbml0aWFsaXplclwiLFs1OF06XCJJbnZhbGlkIGxlZnQtaGFuZCBzaWRlIGluIGZvci0lMCBsb29wOiBNdXN0IGhhdmUgYSBzaW5nbGUgYmluZGluZ1wiLFs1OV06XCJJbnZhbGlkIHNob3J0aGFuZCBwcm9wZXJ0eSBpbml0aWFsaXplclwiLFs2MF06XCJQcm9wZXJ0eSBuYW1lIF9fcHJvdG9fXyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIG9iamVjdCBsaXRlcmFsXCIsWzYxXTpcIkxldCBpcyBkaXNhbGxvd2VkIGFzIGEgbGV4aWNhbGx5IGJvdW5kIG5hbWVcIixbNjJdOlwiSW52YWxpZCB1c2Ugb2YgJyUwJyBpbnNpZGUgbmV3IGV4cHJlc3Npb25cIixbNjNdOlwiSWxsZWdhbCAndXNlIHN0cmljdCcgZGlyZWN0aXZlIGluIGZ1bmN0aW9uIHdpdGggbm9uLXNpbXBsZSBwYXJhbWV0ZXIgbGlzdFwiLFs2NF06J0lkZW50aWZpZXIgXCJsZXRcIiBkaXNhbGxvd2VkIGFzIGxlZnQtaGFuZCBzaWRlIGV4cHJlc3Npb24gaW4gc3RyaWN0IG1vZGUnLFs2NV06XCJJbGxlZ2FsIGNvbnRpbnVlIHN0YXRlbWVudFwiLFs2Nl06XCJJbGxlZ2FsIGJyZWFrIHN0YXRlbWVudFwiLFs2N106XCJDYW5ub3QgaGF2ZSBgbGV0Wy4uLl1gIGFzIGEgdmFyIG5hbWUgaW4gc3RyaWN0IG1vZGVcIixbNjhdOlwiSW52YWxpZCBkZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQgdGFyZ2V0XCIsWzY5XTpcIlJlc3QgcGFyYW1ldGVyIG1heSBub3QgaGF2ZSBhIGRlZmF1bHQgaW5pdGlhbGl6ZXJcIixbNzBdOlwiVGhlIHJlc3QgYXJndW1lbnQgbXVzdCB0aGUgYmUgbGFzdCBwYXJhbWV0ZXJcIixbNzFdOlwiSW52YWxpZCByZXN0IGFyZ3VtZW50XCIsWzczXTpcIkluIHN0cmljdCBtb2RlIGNvZGUsIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBkZWNsYXJlZCBhdCB0b3AgbGV2ZWwgb3IgaW5zaWRlIGEgYmxvY2tcIixbNzRdOlwiSW4gbm9uLXN0cmljdCBtb2RlIGNvZGUsIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBkZWNsYXJlZCBhdCB0b3AgbGV2ZWwsIGluc2lkZSBhIGJsb2NrLCBvciBhcyB0aGUgYm9keSBvZiBhbiBpZiBzdGF0ZW1lbnRcIixbNzVdOlwiV2l0aG91dCB3ZWIgY29tcGF0aWJpbGl0eSBlbmFibGVkIGZ1bmN0aW9ucyBjYW4gbm90IGJlIGRlY2xhcmVkIGF0IHRvcCBsZXZlbCwgaW5zaWRlIGEgYmxvY2ssIG9yIGFzIHRoZSBib2R5IG9mIGFuIGlmIHN0YXRlbWVudFwiLFs3Nl06XCJDbGFzcyBkZWNsYXJhdGlvbiBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0XCIsWzc3XTpcIkludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gZm9yLSUwXCIsWzc4XTpcIkludmFsaWQgYXNzaWdubWVudCBpbiBmb3ItJTBcIixbNzldOlwiZm9yIGF3YWl0ICguLi4gb2YgLi4uKSBpcyBvbmx5IHZhbGlkIGluIGFzeW5jIGZ1bmN0aW9ucyBhbmQgYXN5bmMgZ2VuZXJhdG9yc1wiLFs4MF06XCJUaGUgZmlyc3QgdG9rZW4gYWZ0ZXIgdGhlIHRlbXBsYXRlIGV4cHJlc3Npb24gc2hvdWxkIGJlIGEgY29udGludWF0aW9uIG9mIHRoZSB0ZW1wbGF0ZVwiLFs4Ml06XCJgbGV0YCBkZWNsYXJhdGlvbiBub3QgYWxsb3dlZCBoZXJlIGFuZCBgbGV0YCBjYW5ub3QgYmUgYSByZWd1bGFyIHZhciBuYW1lIGluIHN0cmljdCBtb2RlXCIsWzgxXTpcImBsZXQgXFxuIFtgIGlzIGEgcmVzdHJpY3RlZCBwcm9kdWN0aW9uIGF0IHRoZSBzdGFydCBvZiBhIHN0YXRlbWVudFwiLFs4M106XCJDYXRjaCBjbGF1c2UgcmVxdWlyZXMgZXhhY3RseSBvbmUgcGFyYW1ldGVyLCBub3QgbW9yZSAoYW5kIG5vIHRyYWlsaW5nIGNvbW1hKVwiLFs4NF06XCJDYXRjaCBjbGF1c2UgcGFyYW1ldGVyIGRvZXMgbm90IHN1cHBvcnQgZGVmYXVsdCB2YWx1ZXNcIixbODVdOlwiTWlzc2luZyBjYXRjaCBvciBmaW5hbGx5IGFmdGVyIHRyeVwiLFs4Nl06XCJNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBzdGF0ZW1lbnRcIixbODddOlwiSWxsZWdhbCBuZXdsaW5lIGFmdGVyIHRocm93XCIsWzg4XTpcIlN0cmljdCBtb2RlIGNvZGUgbWF5IG5vdCBpbmNsdWRlIGEgd2l0aCBzdGF0ZW1lbnRcIixbODldOlwiSWxsZWdhbCByZXR1cm4gc3RhdGVtZW50XCIsWzkwXTpcIlRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGUgZm9yLWhlYWRlciBiaW5kaW5nIGRlY2xhcmF0aW9uIGlzIG5vdCBkZXN0cnVjdGlibGVcIixbOTFdOlwibmV3LnRhcmdldCBvbmx5IGFsbG93ZWQgd2l0aGluIGZ1bmN0aW9uc1wiLFs5M106XCInIycgbm90IGZvbGxvd2VkIGJ5IGlkZW50aWZpZXJcIixbOTldOlwiSW52YWxpZCBrZXl3b3JkXCIsWzk4XTpcIkNhbiBub3QgdXNlICdsZXQnIGFzIGEgY2xhc3MgbmFtZVwiLFs5N106XCInQSBsZXhpY2FsIGRlY2xhcmF0aW9uIGNhbid0IGRlZmluZSBhICdsZXQnIGJpbmRpbmdcIixbOTZdOlwiQ2FuIG5vdCB1c2UgYGxldGAgYXMgdmFyaWFibGUgbmFtZSBpbiBzdHJpY3QgbW9kZVwiLFs5NF06XCInJTAnIG1heSBub3QgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGluIHRoaXMgY29udGV4dFwiLFs5NV06XCJBd2FpdCBpcyBvbmx5IHZhbGlkIGluIGFzeW5jIGZ1bmN0aW9uc1wiLFsxMDBdOlwiVGhlICUwIGtleXdvcmQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHRoZSBtb2R1bGUgZ29hbFwiLFsxMDFdOlwiVW5pY29kZSBjb2RlcG9pbnQgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDB4MTBGRkZGXCIsWzEwMl06XCIlMCBzb3VyY2UgbXVzdCBiZSBzdHJpbmdcIixbMTAzXTpcIk9ubHkgYSBpZGVudGlmaWVyIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIGFsaWFzXCIsWzEwNF06XCJPbmx5ICcqJyBvciAney4uLn0nIGNhbiBiZSBpbXBvcnRlZCBhZnRlciBkZWZhdWx0XCIsWzEwNV06XCJUcmFpbGluZyBkZWNvcmF0b3IgbWF5IGJlIGZvbGxvd2VkIGJ5IG1ldGhvZFwiLFsxMDZdOlwiRGVjb3JhdG9ycyBjYW4ndCBiZSB1c2VkIHdpdGggYSBjb25zdHJ1Y3RvclwiLFsxMDhdOlwiSFRNTCBjb21tZW50cyBhcmUgb25seSBhbGxvd2VkIHdpdGggd2ViIGNvbXBhdGliaWxpdHkgKEFubmV4IEIpXCIsWzEwOV06XCJUaGUgaWRlbnRpZmllciAnbGV0JyBtdXN0IG5vdCBiZSBpbiBleHByZXNzaW9uIHBvc2l0aW9uIGluIHN0cmljdCBtb2RlXCIsWzExMF06XCJDYW5ub3QgYXNzaWduIHRvIGBldmFsYCBhbmQgYGFyZ3VtZW50c2AgaW4gc3RyaWN0IG1vZGVcIixbMTExXTpcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhIGZvci1vZiBsb29wIG1heSBub3Qgc3RhcnQgd2l0aCAnbGV0J1wiLFsxMTJdOlwiQmxvY2sgYm9keSBhcnJvd3MgY2FuIG5vdCBiZSBpbW1lZGlhdGVseSBpbnZva2VkIHdpdGhvdXQgYSBncm91cFwiLFsxMTNdOlwiQmxvY2sgYm9keSBhcnJvd3MgY2FuIG5vdCBiZSBpbW1lZGlhdGVseSBhY2Nlc3NlZCB3aXRob3V0IGEgZ3JvdXBcIixbMTE0XTpcIlVuZXhwZWN0ZWQgc3RyaWN0IG1vZGUgcmVzZXJ2ZWQgd29yZFwiLFsxMTVdOlwiVW5leHBlY3RlZCBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZVwiLFsxMTZdOlwiRGVjb3JhdG9ycyBtdXN0IG5vdCBiZSBmb2xsb3dlZCBieSBhIHNlbWljb2xvblwiLFsxMTddOlwiQ2FsbGluZyBkZWxldGUgb24gZXhwcmVzc2lvbiBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZVwiLFsxMThdOlwiUGF0dGVybiBjYW4gbm90IGhhdmUgYSB0YWlsXCIsWzEyMF06XCJDYW4gbm90IGhhdmUgYSBgeWllbGRgIGV4cHJlc3Npb24gb24gdGhlIGxlZnQgc2lkZSBvZiBhIHRlcm5hcnlcIixbMTIxXTpcIkFuIGFycm93IGZ1bmN0aW9uIGNhbiBub3QgaGF2ZSBhIHBvc3RmaXggdXBkYXRlIG9wZXJhdG9yXCIsWzEyMl06XCJJbnZhbGlkIG9iamVjdCBsaXRlcmFsIGtleSBjaGFyYWN0ZXIgYWZ0ZXIgZ2VuZXJhdG9yIHN0YXJcIixbMTIzXTpcIlByaXZhdGUgZmllbGRzIGNhbiBub3QgYmUgZGVsZXRlZFwiLFsxMjVdOlwiQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBmaWVsZCBjYWxsZWQgY29uc3RydWN0b3JcIixbMTI0XTpcIkNsYXNzZXMgbWF5IG5vdCBoYXZlIGEgcHJpdmF0ZSBlbGVtZW50IG5hbWVkIGNvbnN0cnVjdG9yXCIsWzEyNl06XCJBIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyIG1heSBub3QgY29udGFpbiBhcmd1bWVudHNcIixbMTI3XTpcIkdlbmVyYXRvcnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgYXQgdGhlIHRvcCBsZXZlbCBvciBpbnNpZGUgYSBibG9ja1wiLFsxMjhdOlwiQXN5bmMgbWV0aG9kcyBhcmUgYSByZXN0cmljdGVkIHByb2R1Y3Rpb24gYW5kIGNhbm5vdCBoYXZlIGEgbmV3bGluZSBmb2xsb3dpbmcgaXRcIixbMTI5XTpcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIG9iamVjdCBsaXRlcmFsIHByb3BlcnR5IG5hbWVcIixbMTMxXTpcIkludmFsaWQga2V5IHRva2VuXCIsWzEzMl06XCJMYWJlbCAnJTAnIGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWRcIixbMTMzXTpcImNvbnRpbnVlIHN0YXRlbWVudCBtdXN0IGJlIG5lc3RlZCB3aXRoaW4gYW4gaXRlcmF0aW9uIHN0YXRlbWVudFwiLFsxMzRdOlwiVW5kZWZpbmVkIGxhYmVsICclMCdcIixbMTM1XTpcIlRyYWlsaW5nIGNvbW1hIGlzIGRpc2FsbG93ZWQgaW5zaWRlIGltcG9ydCguLi4pIGFyZ3VtZW50c1wiLFsxMzZdOlwiaW1wb3J0KCkgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnRcIixbMTM3XTpcIkNhbm5vdCB1c2UgbmV3IHdpdGggaW1wb3J0KC4uLilcIixbMTM4XTpcIi4uLiBpcyBub3QgYWxsb3dlZCBpbiBpbXBvcnQoKVwiLFsxMzldOlwiRXhwZWN0ZWQgJz0+J1wiLFsxNDBdOlwiRHVwbGljYXRlIGJpbmRpbmcgJyUwJ1wiLFsxNDFdOlwiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICclMCdcIixbMTQ0XTpcIkR1cGxpY2F0ZSAlMCBmb3ItYmluZGluZ1wiLFsxNDJdOlwiRXhwb3J0ZWQgYmluZGluZyAnJTAnIG5lZWRzIHRvIHJlZmVyIHRvIGEgdG9wLWxldmVsIGRlY2xhcmVkIHZhcmlhYmxlXCIsWzE0M106XCJVbmV4cGVjdGVkIHByaXZhdGUgZmllbGRcIixbMTQ3XTpcIk51bWVyaWMgc2VwYXJhdG9ycyBhcmUgbm90IGFsbG93ZWQgYXQgdGhlIGVuZCBvZiBudW1lcmljIGxpdGVyYWxzXCIsWzE0Nl06XCJPbmx5IG9uZSB1bmRlcnNjb3JlIGlzIGFsbG93ZWQgYXMgbnVtZXJpYyBzZXBhcmF0b3JcIixbMTQ4XTpcIkpTWCB2YWx1ZSBzaG91bGQgYmUgZWl0aGVyIGFuIGV4cHJlc3Npb24gb3IgYSBxdW90ZWQgSlNYIHRleHRcIixbMTQ5XTpcIkV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciAlMFwiLFsxNTBdOlwiQWRqYWNlbnQgSlNYIGVsZW1lbnRzIG11c3QgYmUgd3JhcHBlZCBpbiBhbiBlbmNsb3NpbmcgdGFnXCIsWzE1MV06XCJKU1ggYXR0cmlidXRlcyBtdXN0IG9ubHkgYmUgYXNzaWduZWQgYSBub24tZW1wdHkgJ2V4cHJlc3Npb24nXCIsWzE1Ml06XCInJTAnIGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWRcIixbMTUzXTpcIiclMCcgc2hhZG93ZWQgYSBjYXRjaCBjbGF1c2UgYmluZGluZ1wiLFsxNTRdOlwiRG90IHByb3BlcnR5IG11c3QgYmUgYW4gaWRlbnRpZmllclwiLFsxNTVdOlwiRW5jb3VudGVyZWQgaW52YWxpZCBpbnB1dCBhZnRlciBzcHJlYWQvcmVzdCBhcmd1bWVudFwiLFsxNTZdOlwiQ2F0Y2ggd2l0aG91dCB0cnlcIixbMTU3XTpcIkZpbmFsbHkgd2l0aG91dCB0cnlcIixbMTU4XTpcIkV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgY2xvc2luZyB0YWcgZm9yIEpTWCBmcmFnbWVudFwiLFsxNTldOlwiQ29hbGVzY2luZyBhbmQgbG9naWNhbCBvcGVyYXRvcnMgdXNlZCB0b2dldGhlciBpbiB0aGUgc2FtZSBleHByZXNzaW9uIG11c3QgYmUgZGlzYW1iaWd1YXRlZCB3aXRoIHBhcmVudGhlc2VzXCIsWzE2MF06XCJJbnZhbGlkIHRhZ2dlZCB0ZW1wbGF0ZSBvbiBvcHRpb25hbCBjaGFpblwiLFsxNjFdOlwiSW52YWxpZCBvcHRpb25hbCBjaGFpbiBmcm9tIHN1cGVyIHByb3BlcnR5XCIsWzE2Ml06XCJJbnZhbGlkIG9wdGlvbmFsIGNoYWluIGZyb20gbmV3IGV4cHJlc3Npb25cIixbMTYzXTonQ2Fubm90IHVzZSBcImltcG9ydC5tZXRhXCIgb3V0c2lkZSBhIG1vZHVsZScsWzE2NF06XCJMZWFkaW5nIGRlY29yYXRvcnMgbXVzdCBiZSBhdHRhY2hlZCB0byBhIGNsYXNzIGRlY2xhcmF0aW9uXCJ9LGs9Y2xhc3MgZXh0ZW5kcyBTeW50YXhFcnJvcntjb25zdHJ1Y3Rvcih1LGUsaSxuKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheSh0PjQ/dC00OjApLGw9NDtsPHQ7bCsrKW9bbC00XT1hcmd1bWVudHNbbF07bGV0IGM9XCJbXCIrZStcIjpcIitpK1wiXTogXCIrbVtuXS5yZXBsYWNlKC8lKFxcZCspL2csKHMsaCk9Pm9baF0pO3N1cGVyKFwiXCIuY29uY2F0KGMpKSx0aGlzLmluZGV4PXUsdGhpcy5saW5lPWUsdGhpcy5jb2x1bW49aSx0aGlzLmRlc2NyaXB0aW9uPWMsdGhpcy5sb2M9e2xpbmU6ZSxjb2x1bW46aX19fTtmdW5jdGlvbiBmKHUsZSl7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoaT4yP2ktMjowKSx0PTI7dDxpO3QrKyluW3QtMl09YXJndW1lbnRzW3RdO3Rocm93IG5ldyBrKHUuaW5kZXgsdS5saW5lLHUuY29sdW1uLGUsLi4ubil9ZnVuY3Rpb24gUCh1KXt0aHJvdyBuZXcgayh1LmluZGV4LHUubGluZSx1LmNvbHVtbix1LnR5cGUsdS5wYXJhbXMpfWZ1bmN0aW9uIFModSxlLGksbil7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkodD40P3QtNDowKSxsPTQ7bDx0O2wrKylvW2wtNF09YXJndW1lbnRzW2xdO3Rocm93IG5ldyBrKHUsZSxpLG4sLi4ubyl9ZnVuY3Rpb24gcSh1LGUsaSxuKXt0aHJvdyBuZXcgayh1LGUsaSxuKX12YXIgVD0oKHUsZSk9PntsZXQgaT1uZXcgVWludDMyQXJyYXkoMTA0NDQ4KSxuPTAsdD0wO2Zvcig7bjwzNTQwOyl7bGV0IG89dVtuKytdO2lmKG88MCl0LT1vO2Vsc2V7bGV0IGw9dVtuKytdO28mMiYmKGw9ZVtsXSksbyYxP2kuZmlsbChsLHQsdCs9dVtuKytdKTppW3QrK109bH19cmV0dXJuIGl9KShbLTEsMiwyNCwyLDI1LDIsNSwtMSwwLDc3NTk1NjQ4LDMsNDQsMiwzLDAsMTQsMiw1NywyLDU4LDMsMCwzLDAsMzE2ODc5NjY3MSwwLDQyOTQ5NTY5OTIsMiwxLDIsMCwyLDU5LDMsMCw0LDAsNDI5NDk2NjUyMywzLDAsNCwyLDE2LDIsNjAsMiwwLDAsNDI5NDgzNjczNSwwLDMyMjEyMjU0NzEsMCw0Mjk0OTAxOTQyLDIsNjEsMCwxMzQxNTIxOTIsMywwLDIsMCw0Mjk0OTUxOTM1LDMsMCwyLDAsMjY4MzMwNTk4MywwLDI2ODQzNTQwNDcsMiwxNywyLDAsMCw0Mjk0OTYxMTUxLDMsMCwyLDIsMTksMiwwLDAsNjA4MTc0MDc5LDIsMCwyLDEzMSwyLDYsMiw1NiwtMSwyLDM3LDAsNDI5NDQ0MzI2MywyLDEsMywwLDMsMCw0Mjk0OTAxNzExLDIsMzksMCw0MDg5ODM5MTAzLDAsMjk2MTIwOTc1OSwwLDEzNDI0MzkzNzUsMCw0Mjk0NTQzMzQyLDAsMzU0NzIwMTAyMywwLDE1NzcyMDQxMDMsMCw0MTk0MjQwLDAsNDI5NDY4ODc1MCwyLDIsMCw4MDgzMSwwLDQyNjE0NzgzNTEsMCw0Mjk0NTQ5NDg2LDIsMiwwLDI5Njc0ODQ4MzEsMCwxOTY1NTksMCwzNTk0MzczMTAwLDAsMzI4ODMxOTc2OCwwLDg0Njk5NTksMiwxOTQsMiwzLDAsMzgyNTIwNDczNSwwLDEyMzc0NzgwNywwLDY1NDg3LDAsNDI5NDgyODAxNSwwLDQwOTI1OTE2MTUsMCwxMDgwMDQ5MTE5LDAsNDU4NzAzLDIsMywyLDAsMCwyMTYzMjQ0NTExLDAsNDIyNzkyMzkxOSwwLDQyMzYyNDcwMjIsMiw2NiwwLDQyODQ0NDk5MTksMCw4NTE5MDQsMiw0LDIsMTEsMCw2NzA3NjA5NSwtMSwyLDY3LDAsMTA3Mzc0MTc0MywwLDQwOTM1OTEzOTEsLTEsMCw1MDMzMTY0OSwwLDMyNjUyNjY2ODcsMiwzMiwwLDQyOTQ4NDQ0MTUsMCw0Mjc4MTkwMDQ3LDIsMTgsMiwxMjksLTEsMywwLDIsMiwyMSwyLDAsMiw5LDIsMCwyLDE0LDIsMTUsMywwLDEwLDIsNjksMiwwLDIsNzAsMiw3MSwyLDcyLDIsMCwyLDczLDIsMCwyLDEwLDAsMjYxNjMyLDIsMjMsMywwLDIsMiwxMiwyLDQsMywwLDE4LDIsNzQsMiw1LDMsMCwyLDIsNzUsMCwyMDg4OTU5LDIsMjcsMiw4LDAsOTA5MzExLDMsMCwyLDAsODE0NzQzNTUxLDIsNDEsMCw2NzA1NzY2NCwzLDAsMiwyLDQwLDIsMCwyLDI4LDIsMCwyLDI5LDIsNywwLDI2ODM3NDAxNSwyLDI2LDIsNDksMiwwLDIsNzYsMCwxMzQxNTMyMTUsLTEsMiw2LDIsMCwyLDcsMCwyNjg0MzU0NTU5LDAsNjcwNDQzNTEsMCwzMjIxMTYwMDY0LDAsMSwtMSwzLDAsMiwyLDQyLDAsMTA0NjUyOCwzLDAsMywyLDgsMiwwLDIsNTEsMCw0Mjk0OTYwMTI3LDIsOSwyLDM4LDIsMTAsMCw0Mjk0Mzc3NDcyLDIsMTEsMywwLDcsMCw0MjI3ODU4NDMxLDMsMCw4LDIsMTIsMiwwLDIsNzgsMiw5LDIsMCwyLDc5LDIsODAsMiw4MSwtMSwyLDEyNCwwLDEwNDg1NzcsMiw4MiwyLDEzLC0xLDIsMTMsMCwxMzEwNDIsMiw4MywyLDg0LDIsODUsMiwwLDIsMzMsLTgzLDIsMCwyLDUzLDIsNywzLDAsNCwwLDEwNDY1NTksMiwwLDIsMTQsMiwwLDAsMjE0NzUxNjY3MSwyLDIwLDMsODYsMiwyLDAsLTE2LDIsODcsMCw1MjQyMjI0NjIsMiw0LDIsMCwwLDQyNjk4MDE0NzEsMiw0LDIsMCwyLDE1LDIsNzcsMiwxNiwzLDAsMiwyLDQ3LDIsMCwtMSwyLDE3LC0xNiwzLDAsMjA2LC0yLDMsMCw2NTUsMiwxOCwzLDAsMzYsMiw2OCwtMSwyLDE3LDIsOSwzLDAsOCwyLDg5LDIsMTIxLDIsMCwwLDMyMjAyNDI0MzEsMywwLDMsMiwxOSwyLDkwLDIsOTEsMywwLDIsMiw5MiwyLDAsMiw5MywyLDk0LDIsMCwwLDQzNTEsMiwwLDIsOCwzLDAsMiwwLDY3MDQzMzkxLDAsMzkwOTA5MTMyNywyLDAsMiwyMiwyLDgsMiwxOCwzLDAsMiwwLDY3MDc2MDk3LDIsNywyLDAsMiwyMCwwLDY3MDU5NzExLDAsNDIzNjI0NzAzOSwzLDAsMiwwLDkzOTUyNDEwMywwLDgxOTE5OTksMiw5NywyLDk4LDIsMTUsMiwyMSwzLDAsMywwLDY3MDU3NjYzLDMsMCwzNDksMiw5OSwyLDEwMCwyLDYsLTI2NCwzLDAsMTEsMiwyMiwzLDAsMiwyLDMxLC0xLDAsMzc3NDM0OTQzOSwyLDEwMSwyLDEwMiwzLDAsMiwyLDE5LDIsMTAzLDMsMCwxMCwyLDksMiwxNywyLDAsMiw0NSwyLDAsMiwzMCwyLDEwNCwyLDIzLDAsMTYzODM5OSwyLDE3MiwyLDEwNSwzLDAsMywyLDE4LDIsMjQsMiwyNSwyLDUsMiwyNiwyLDAsMiw3LDIsMTA2LC0xLDIsMTA3LDIsMTA4LDIsMTA5LC0xLDMsMCwzLDIsMTEsLTIsMiwwLDIsMjcsLTMsMiwxNTAsLTQsMiwxOCwyLDAsMiwzNSwwLDEsMiwwLDIsNjIsMiwyOCwyLDExLDIsOSwyLDAsMiwxMTAsLTEsMywwLDQsMiw5LDIsMjEsMiwxMTEsMiw2LDIsMCwyLDExMiwyLDAsMiw0OCwtNCwzLDAsOSwyLDIwLDIsMjksMiwzMCwtNCwyLDExMywyLDExNCwyLDI5LDIsMjAsMiw3LC0yLDIsMTE1LDIsMjksMiwzMSwtMiwyLDAsMiwxMTYsLTIsMCw0Mjc3MTM3NTE5LDAsMjI2OTExODQ2MywtMSwzLDE4LDIsLTEsMiwzMiwyLDM2LDIsMCwzLDI5LDIsMiwzNCwyLDE5LC0zLDMsMCwyLDIsMzMsLTEsMiwwLDIsMzQsMiwwLDIsMzQsMiwwLDIsNDYsLTEwLDIsMCwwLDIwMzc3NSwtMiwyLDE4LDIsNDMsMiwzNSwtMiwyLDE3LDIsMTE3LDIsMjAsMywwLDIsMiwzNiwwLDIxNDc1NDkxMjAsMiwwLDIsMTEsMiwxNywyLDEzNSwyLDAsMiwzNywyLDUyLDAsNTI0Mjg3OSwzLDAsMiwwLDQwMjY0NDUxMSwtMSwyLDEyMCwwLDEwOTA1MTkwMzksLTIsMiwxMjIsMiwzOCwyLDAsMCw2NzA0NTM3NSwyLDM5LDAsNDIyNjY3ODI3MSwwLDM3NjY1NjUyNzksMCwyMDM5NzU5LC00LDMsMCwyLDAsMzI4ODI3MDg0NywwLDMsMywwLDIsMCw2NzA0MzUxOSwtNSwyLDAsMCw0MjgyMzg0MzgzLDAsMTA1Njk2NDYwOSwtMSwzLDAsMiwwLDY3MDQzMzQ1LC0xLDIsMCwyLDQwLDIsNDEsLTEsMiwxMCwyLDQyLC02LDIsMCwyLDExLC0zLDMsMCwyLDAsMjE0NzQ4NDY3MSwyLDEyNSwwLDQxOTAxMDk2OTUsMiw1MCwtMiwyLDEyNiwwLDQyNDQ2MzU2NDcsMCwyNywyLDAsMiw3LDIsNDMsMiwwLDIsNjMsLTEsMiwwLDIsNDAsLTgsMiw1NCwyLDQ0LDAsNjcwNDMzMjksMiwxMjcsMiw0NSwwLDgzODgzNTEsLTIsMiwxMjgsMCwzMDI4Mjg3NDg3LDIsNDYsMiwxMzAsMCwzMzI1OTUxOSwyLDQxLC05LDIsMjAsLTUsMiw2NCwtMiwzLDAsMjgsMiwzMSwtMywzLDAsMywyLDQ3LDMsMCw2LDIsNDgsLTg1LDMsMCwzMywyLDQ3LC0xMjYsMywwLDE4LDIsMzYsLTI2OSwzLDAsMTcsMiw0MCwyLDcsMiw0MSwtMiwyLDE3LDIsNDksMiwwLDIsMjAsMiw1MCwyLDEzMiwyLDIzLC0yMSwzLDAsMiwtNCwzLDAsMiwwLDQyOTQ5MzY1NzUsMiwwLDAsNDI5NDkzNDc4MywtMiwwLDE5NjYzNSwzLDAsMTkxLDIsNTEsMywwLDM4LDIsMjksLTEsMiwzMywtMjc5LDMsMCw4LDIsNywtMSwyLDEzMywyLDUyLDMsMCwxMSwyLDYsLTcyLDMsMCwzLDIsMTM0LDAsMTY3NzY1NjU3NSwtMTY2LDAsNDE2MTI2NjY1NiwwLDQwNzEsMCwxNTM2MCwtNCwwLDI4LC0xMywzLDAsMiwyLDM3LDIsMCwyLDEzNiwyLDEzNywyLDU1LDIsMCwyLDEzOCwyLDEzOSwyLDE0MCwzLDAsMTAsMiwxNDEsMiwxNDIsMiwxNSwzLDM3LDIsMyw1MywyLDMsNTQsMiwwLDQyOTQ5NTQ5OTksMiwwLC0xNiwyLDAsMiw4OCwyLDAsMCwyMTA1MzQzLDAsNDE2MDc0OTU4NCwwLDY1NTM0LC00MiwwLDQxOTQzMDM4NzEsMCwyMDExLC02LDIsMCwwLDEwNzM2ODQ0NzksMCwxNzQwNywtMTEsMiwwLDIsMzEsLTQwLDMsMCw2LDAsODMyMzEwMywtMSwzLDAsMiwyLDQyLC0zNywyLDU1LDIsMTQ0LDIsMTQ1LDIsMTQ2LDIsMTQ3LDIsMTQ4LC0xMDUsMiwyNCwtMzIsMywwLDEzMzQsMiw5LC0xLDMsMCwxMjksMiwyNywzLDAsNiwyLDksMywwLDE4MCwyLDE0OSwzLDAsMjMzLDAsMSwtOTYsMywwLDE2LDIsOSwtNDcsMywwLDE1NCwyLDU2LC0yMjM4MSwzLDAsNywyLDIzLC02MTMwLDMsNSwyLC0xLDAsNjkyMDcwNDAsMyw0NCwyLDMsMCwxNCwyLDU3LDIsNTgsLTMsMCwzMTY4NzMxMTM2LDAsNDI5NDk1Njg2NCwyLDEsMiwwLDIsNTksMywwLDQsMCw0Mjk0OTY2Mjc1LDMsMCw0LDIsMTYsMiw2MCwyLDAsMiwzMywtMSwyLDE3LDIsNjEsLTEsMiwwLDIsNTYsMCw0Mjk0ODg1Mzc2LDMsMCwyLDAsMzE0NTcyNywwLDI2MTcyOTQ5NDQsMCw0Mjk0NzcwNjg4LDIsMjMsMiw2MiwzLDAsMiwwLDEzMTEzNSwyLDk1LDAsNzAyNTY2MzksMCw3MTMwMzE2NywwLDI3MiwyLDQwLDIsNTYsLTEsMiwzNywyLDMwLC0xLDIsOTYsMiw2MywwLDQyNzgyNTU2MTYsMCw0Mjk0ODM2MjI3LDAsNDI5NDU0OTQ3MywwLDYwMDE3ODE3NSwwLDI5NTI4MDY0MDAsMCwyNjg2MzIwNjcsMCw0Mjk0NTQzMzI4LDAsNTc1NDAwOTUsMCwxNTc3MDU4MzA0LDAsMTgzNTAwOCwwLDQyOTQ2ODg3MzYsMiw2NSwyLDY0LDAsMzM1NTQ0MzUsMiwxMjMsMiw2NSwyLDE1MSwwLDEzMTA3NSwwLDM1OTQzNzMwOTYsMCw2NzA5NDI5NiwyLDY0LC0xLDAsNDI5NDgyOGUzLDAsNjAzOTc5MjYzLDIsMTYwLDAsMywwLDQyOTQ4MjgwMDEsMCw2MDI5MzA2ODcsMiwxODMsMCwzOTMyMTksMCw0Mjk0ODI4MDE2LDAsNjcxMDg4NjM5LDAsMjE1NDg0MDA2NCwwLDQyMjc4NTg0MzUsMCw0MjM2MjQ3MDA4LDIsNjYsMiwzNiwtMSwyLDQsMCw5MTc1MDMsMiwzNiwtMSwyLDY3LDAsNTM3Nzg4MzM1LDAsNDAyNjUzMTkzNSwtMSwwLDEsLTEsMiwzMiwyLDY4LDAsNzkzNiwtMywyLDAsMCwyMTQ3NDg1Njk1LDAsMTAxMDc2MTcyOCwwLDQyOTI5ODQ5MzAsMCwxNjM4NywyLDAsMiwxNCwyLDE1LDMsMCwxMCwyLDY5LDIsMCwyLDcwLDIsNzEsMiw3MiwyLDAsMiw3MywyLDAsMiwxMSwtMSwyLDIzLDMsMCwyLDIsMTIsMiw0LDMsMCwxOCwyLDc0LDIsNSwzLDAsMiwyLDc1LDAsMjUzOTUxLDMsMTksMiwwLDEyMjg3OSwyLDAsMiw4LDAsMjc2ODI0MDY0LC0yLDMsMCwyLDIsNDAsMiwwLDAsNDI5NDkwMzI5NSwyLDAsMiwyOSwyLDcsLTEsMiwxNywyLDQ5LDIsMCwyLDc2LDIsNDEsLTEsMiwyMCwyLDAsMiwyNywtMiwwLDEyOCwtMiwyLDc3LDIsOCwwLDQwNjQsLTEsMiwxMTksMCw0MjI3OTA3NTg1LDIsMCwyLDExOCwyLDAsMiw0OCwyLDE3MywyLDksMiwzOCwyLDEwLC0xLDAsNzQ0NDAxOTIsMywwLDYsLTIsMywwLDgsMiwxMiwyLDAsMiw3OCwyLDksMiwwLDIsNzksMiw4MCwyLDgxLC0zLDIsODIsMiwxMywtMywyLDgzLDIsODQsMiw4NSwyLDAsMiwzMywtODMsMiwwLDIsNTMsMiw3LDMsMCw0LDAsODE3MTgzLDIsMCwyLDE0LDIsMCwwLDMzMDIzLDIsMjAsMyw4NiwyLC0xNywyLDg3LDAsNTI0MTU3OTUwLDIsNCwyLDAsMiw4OCwyLDQsMiwwLDIsMTUsMiw3NywyLDE2LDMsMCwyLDIsNDcsMiwwLC0xLDIsMTcsLTE2LDMsMCwyMDYsLTIsMywwLDY1NSwyLDE4LDMsMCwzNiwyLDY4LC0xLDIsMTcsMiw5LDMsMCw4LDIsODksMCwzMDcyLDIsMCwwLDIxNDc1MTY0MTUsMiw5LDMsMCwyLDIsMjMsMiw5MCwyLDkxLDMsMCwyLDIsOTIsMiwwLDIsOTMsMiw5NCwwLDQyOTQ5NjUxNzksMCw3LDIsMCwyLDgsMiw5MSwyLDgsLTEsMCwxNzYxMzQ1NTM2LDIsOTUsMCw0Mjk0OTAxODIzLDIsMzYsMiwxOCwyLDk2LDIsMzQsMiwxNjYsMCwyMDgwNDQwMjg3LDIsMCwyLDMzLDIsMTQzLDAsMzI5NjcyMjk0MywyLDAsMCwxMDQ2Njc1NDU1LDAsOTM5NTI0MTAxLDAsMTgzNzA1NSwyLDk3LDIsOTgsMiwxNSwyLDIxLDMsMCwzLDAsNywzLDAsMzQ5LDIsOTksMiwxMDAsMiw2LC0yNjQsMywwLDExLDIsMjIsMywwLDIsMiwzMSwtMSwwLDI3MDA2MDc2MTUsMiwxMDEsMiwxMDIsMywwLDIsMiwxOSwyLDEwMywzLDAsMTAsMiw5LDIsMTcsMiwwLDIsNDUsMiwwLDIsMzAsMiwxMDQsLTMsMiwxMDUsMywwLDMsMiwxOCwtMSwzLDUsMiwyLDI2LDIsMCwyLDcsMiwxMDYsLTEsMiwxMDcsMiwxMDgsMiwxMDksLTEsMywwLDMsMiwxMSwtMiwyLDAsMiwyNywtOCwyLDE4LDIsMCwyLDM1LC0xLDIsMCwyLDYyLDIsMjgsMiwyOSwyLDksMiwwLDIsMTEwLC0xLDMsMCw0LDIsOSwyLDE3LDIsMTExLDIsNiwyLDAsMiwxMTIsMiwwLDIsNDgsLTQsMywwLDksMiwyMCwyLDI5LDIsMzAsLTQsMiwxMTMsMiwxMTQsMiwyOSwyLDIwLDIsNywtMiwyLDExNSwyLDI5LDIsMzEsLTIsMiwwLDIsMTE2LC0yLDAsNDI3NzA3NTk2OSwyLDI5LC0xLDMsMTgsMiwtMSwyLDMyLDIsMTE3LDIsMCwzLDI5LDIsMiwzNCwyLDE5LC0zLDMsMCwyLDIsMzMsLTEsMiwwLDIsMzQsMiwwLDIsMzQsMiwwLDIsNDgsLTEwLDIsMCwwLDE5NzYzMSwtMiwyLDE4LDIsNDMsMiwxMTgsLTIsMiwxNywyLDExNywyLDIwLDIsMTE5LDIsNTEsLTIsMiwxMTksMiwyMywyLDE3LDIsMzMsMiwxMTksMiwzNiwwLDQyOTQ5MDE5MDQsMCw0NzE4NTkxLDIsMTE5LDIsMzQsMCwzMzU1NDQzNTAsLTEsMiwxMjAsMiwxMjEsLTIsMiwxMjIsMiwzOCwyLDcsLTEsMiwxMjMsMiw2NSwwLDM3NTgxNjE5MjAsMCwzLC00LDIsMCwyLDI3LDAsMjE0NzQ4NTU2OCwwLDMsMiwwLDIsMjMsMCwxNzYsLTUsMiwwLDIsNDcsMiwxODYsLTEsMiwwLDIsMjMsMiwxOTcsLTEsMiwwLDAsMTY3NzkyNjMsLTIsMiwxMSwtNywyLDAsMiwxMjEsLTMsMywwLDIsMiwxMjQsMiwxMjUsMCwyMTQ3NTQ5MTgzLDAsMiwtMiwyLDEyNiwyLDM1LDAsMTAsMCw0Mjk0OTY1MjQ5LDAsNjc2MzMxNTEsMCw0MDI2NTk3Mzc2LDIsMCwwLDUzNjg3MTkzNSwtMSwyLDAsMiw0MCwtOCwyLDU0LDIsNDcsMCwxLDIsMTI3LDIsMjMsLTMsMiwxMjgsMiwzNSwyLDEyOSwyLDEzMCwwLDE2Nzc4MjM5LC0xMCwyLDM0LC01LDIsNjQsLTIsMywwLDI4LDIsMzEsLTMsMywwLDMsMiw0NywzLDAsNiwyLDQ4LC04NSwzLDAsMzMsMiw0NywtMTI2LDMsMCwxOCwyLDM2LC0yNjksMywwLDE3LDIsNDAsMiw3LC0zLDIsMTcsMiwxMzEsMiwwLDIsMjMsMiw0OCwyLDEzMiwyLDIzLC0yMSwzLDAsMiwtNCwzLDAsMiwwLDY3NTgzLC0xLDIsMTAzLC0yLDAsMTEsMywwLDE5MSwyLDUxLDMsMCwzOCwyLDI5LC0xLDIsMzMsLTI3OSwzLDAsOCwyLDcsLTEsMiwxMzMsMiw1MiwzLDAsMTEsMiw2LC03MiwzLDAsMywyLDEzNCwyLDEzNSwtMTg3LDMsMCwyLDIsMzcsMiwwLDIsMTM2LDIsMTM3LDIsNTUsMiwwLDIsMTM4LDIsMTM5LDIsMTQwLDMsMCwxMCwyLDE0MSwyLDE0MiwyLDE1LDMsMzcsMiwzLDUzLDIsMyw1NCwyLDIsMTQzLC03MywyLDAsMCwxMDY1MzYxNDA3LDAsMTYzODQsLTExLDIsMCwyLDEyMSwtNDAsMywwLDYsMiwxMTcsLTEsMywwLDIsMCwyMDYzLC0zNywyLDU1LDIsMTQ0LDIsMTQ1LDIsMTQ2LDIsMTQ3LDIsMTQ4LC0xMzgsMywwLDEzMzQsMiw5LC0xLDMsMCwxMjksMiwyNywzLDAsNiwyLDksMywwLDE4MCwyLDE0OSwzLDAsMjMzLDAsMSwtOTYsMywwLDE2LDIsOSwtNDcsMywwLDE1NCwyLDU2LC0yODUxNywyLDAsMCwxLC0xLDIsMTI0LDIsMCwwLDgxOTMsLTIxLDIsMTkzLDAsMTAyNTUsMCw0LC0xMSwyLDY0LDIsMTcxLC0xLDAsNzE2ODAsLTEsMiwxNjEsMCw0MjkyOTAwODY0LDAsODA1MzA2NDMxLC01LDIsMTUwLC0xLDIsMTU3LC0xLDAsNjE0NCwtMiwyLDEyNywtMSwyLDE1NCwtMSwwLDIxNDc1MzI4MDAsMiwxNTEsMiwxNjUsMiwwLDIsMTY0LDAsNTI0MDMyLDAsNCwtNCwyLDE5MCwwLDIwNTEyODE5MiwwLDEzMzM3NTc1MzYsMCwyMTQ3NDgzNjk2LDAsNDIzOTUzLDAsNzQ3NzY2MjcyLDAsMjcxNzc2MzE5MiwwLDQyODY1Nzg3NTEsMCwyNzg1NDUsMiwxNTIsMCw0Mjk0ODg2NDY0LDAsMzMyOTIzMzYsMCw0MTc4MDksMiwxNTIsMCwxMzI3NDgyNDY0LDAsNDI3ODE5MDEyOCwwLDcwMDU5NDE5NSwwLDEwMDY2NDc1MjcsMCw0Mjg2NDk3MzM2LDAsNDE2MDc0OTYzMSwyLDE1MywwLDQ2OTc2MjU2MCwwLDQxNzEyMTk0ODgsMCw4MzIzMTIwLDIsMTUzLDAsMjAyMzc1NjgwLDAsMzIxNDkxODE3NiwwLDQyOTQ1MDg1OTIsMiwxNTMsLTEsMCw5ODM1ODQsMCw0OCwwLDU4NzIwMjczLDAsMzQ4OTkyMzA3MiwwLDEwNTE3Mzc2LDAsNDI5MzA2NjgxNSwwLDEsMCwyMDEzMjY1OTIwLDIsMTc3LDIsMCwwLDIwODksMCwzMjIxMjI1NTUyLDAsMjAxMzc1OTA0LDIsMCwtMiwwLDI1NiwwLDEyMjg4MCwwLDE2Nzc3MjE2LDIsMTUwLDAsNDE2MDc1Nzc2MCwyLDAsLTYsMiwxNjcsLTExLDAsMzI2MzIxODE3NiwtMSwwLDQ5NjY0LDAsMjE2MDE5NzYzMiwwLDgzODg4MDIsLTEsMCwxMjcxMzk4NCwtMSwyLDE1NCwyLDE1OSwyLDE3OCwtMiwyLDE2MiwtMjAsMCwzNzU4MDk2Mzg1LC0yLDIsMTU1LDAsNDI5Mjg3ODMzNiwyLDkwLDIsMTY5LDAsNDI5NDA1Nzk4NCwtMiwyLDE2MywyLDE1NiwyLDE3NSwtMiwyLDE1NSwtMSwyLDE4MiwtMSwyLDE3MCwyLDEyNCwwLDQwMjY1OTMyODAsMCwxNCwwLDQyOTI5MTkyOTYsLTEsMiwxNTgsMCw5Mzk1ODg2MDgsLTEsMCw4MDUzMDYzNjgsLTEsMiwxMjQsMCwxNjEwNjEyNzM2LDIsMTU2LDIsMTU3LDIsNCwyLDAsLTIsMiwxNTgsMiwxNTksLTMsMCwyNjczODY4ODAsLTEsMiwxNjAsMCw3MTY4LC0xLDAsNjUwMjQsMiwxNTQsMiwxNjEsMiwxNzksLTcsMiwxNjgsLTgsMiwxNjIsLTEsMCwxNDI2MTEyNzA0LDIsMTYzLC0xLDIsMTY0LDAsMjcxNTgxMjE2LDAsMjE0OTc3NzQwOCwyLDIzLDIsMTYxLDIsMTI0LDAsODUxOTY3LDIsMTgwLC0xLDIsMjMsMiwxODEsLTQsMiwxNTgsLTIwLDIsMTk1LDIsMTY1LC01NiwwLDMxNDU3MjgsMiwxODUsLTQsMiwxNjYsMiwxMjQsLTQsMCwzMjUwNTg1NiwtMSwyLDE2NywtMSwwLDIxNDczODUwODgsMiw5MCwxLDIxNTU5MDUxNTIsMiwtMywyLDEwMywyLDAsMiwxNjgsLTIsMiwxNjksLTYsMiwxNzAsMCw0MDI2NTk3Mzc1LDAsMSwtMSwwLDEsLTEsMiwxNzEsLTMsMiwxMTcsMiw2NCwtMiwyLDE2NiwtMiwyLDE3NiwyLDEyNCwtODc4LDIsMTU5LC0zNiwyLDE3MiwtMSwyLDIwMSwtMTAsMiwxODgsLTUsMiwxNzQsLTYsMCw0Mjk0OTY1MjUxLDIsMjcsLTEsMiwxNzMsLTEsMiwxNzQsLTIsMCw0MjI3ODc0NzUyLC0zLDAsMjE0NjQzNTA3MiwyLDE1OSwtMiwwLDEwMDY2NDkzNDQsMiwxMjQsLTEsMiw5MCwwLDIwMTM3NTc0NCwtMywwLDEzNDIxNzcyMCwyLDkwLDAsNDI4NjY3NzM3NywwLDMyODk2LC0xLDIsMTU4LC0zLDIsMTc1LC0zNDksMiwxNzYsMCwxOTIwLDIsMTc3LDMsMCwyNjQsLTExLDIsMTU3LC0yLDIsMTc4LDIsMCwwLDUyMDYxNzg1NiwwLDI2OTI3NDMxNjgsMCwzNiwtMywwLDUyNDI4NCwtMTEsMiwyMywtMSwyLDE4NywtMSwyLDE4NCwwLDMyMjEyOTEwMDcsMiwxNzgsLTEsMiwyMDIsMCwyMTU4NzIwLC0zLDIsMTU5LDAsMSwtNCwyLDEyNCwwLDM4MDg2MjU0MTEsMCwzNDg5NjI4Mjg4LDIsMjAwLDAsMTIwNzk1OTY4MCwwLDMyMjEyNzQ2MjQsMiwwLC0zLDIsMTc5LDAsMTIwLDAsNzM0MDAzMiwtMiwyLDE4MCwyLDQsMiwyMywyLDE2MywzLDAsNCwyLDE1OSwtMSwyLDE4MSwyLDE3NywtMSwwLDgxNzYsMiwxODIsMiwxNzksMiwxODMsLTEsMCw0MjkwNzczMjMyLDIsMCwtNCwyLDE2MywyLDE4OSwwLDE1NzI4NjQwLDIsMTc3LC0xLDIsMTYxLC0xLDAsNDI5NDkzNDUxMiwzLDAsNCwtOSwyLDkwLDIsMTcwLDIsMTg0LDMsMCw0LDAsNzA0LDAsMTg0OTY4ODA2NCwyLDE4NSwtMSwyLDEyNCwwLDQyOTQ5MDE4ODcsMiwwLDAsMTMwNTQ3NzEyLDAsMTg3OTA0ODE5MiwyLDE5OSwzLDAsMiwtMSwyLDE4NiwyLDE4NywtMSwwLDE3ODI5Nzc2LDAsMjAyNTg0ODgzMiwwLDQyNjE0Nzc4ODgsLTIsMiwwLC0xLDAsNDI4NjU4MDYwOCwtMSwwLDI5MzYwMTI4LDIsMTkyLDAsMTYyNTI5MjgsMCwzNzkxMzg4NjcyLDIsMzgsMywwLDIsLTIsMiwxOTYsMiwwLC0xLDIsMTAzLC0xLDAsNjY1ODQ1NzYsLTEsMiwxOTEsMywwLDksMiwxMjQsLTEsMCw0Mjk0NzU1MzI4LDMsMCwyLC0xLDIsMTYxLDIsMTc4LDMsMCwyLDIsMjMsMiwxODgsMiw5MCwtMiwwLDI0NTc2MCwwLDIxNDc0MTgxMTIsLTEsMiwxNTAsMiwyMDMsMCw0MjI3OTIzNDU2LC0xLDIsMTY0LDIsMTYxLDIsOTAsLTMsMCw0MjkyODcwMTQ1LDAsMjYyMTQ0LDIsMTI0LDMsMCwyLDAsMTA3Mzc1ODg0OCwyLDE4OSwtMSwwLDQyMjc5MjE5MjAsMiwxOTAsMCw2ODI4OTAyNCwwLDUyODQwMjAxNiwwLDQyOTI5Mjc1MzYsMywwLDQsLTIsMCwyNjg0MzU0NTYsMiw5MSwtMiwyLDE5MSwzLDAsNSwtMSwyLDE5MiwyLDE2MywyLDAsLTIsMCw0MjI3OTIzOTM2LDIsNjIsLTEsMiwxNTUsMiw5NSwyLDAsMiwxNTQsMiwxNTgsMywwLDYsLTEsMiwxNzcsMywwLDMsLTIsMCwyMTQ2OTU5MzYwLDAsOTQ0MDY0MCwwLDEwNDg1NzYwMCwwLDQyMjc5MjM4NDAsMywwLDIsMCw3NjgsMiwxOTMsMiw3NywtMiwyLDE2MSwtMiwyLDExOSwtMSwyLDE1NSwzLDAsOCwwLDUxMiwwLDgzODg2MDgsMiwxOTQsMiwxNzIsMiwxODcsMCw0Mjg2NTc4OTQ0LDMsMCwyLDAsMTE1MiwwLDEyNjY2Nzk4MDgsMiwxOTEsMCw1NzYsMCw0MjYxNzA3Nzc2LDIsOTUsMywwLDksMiwxNTUsMywwLDUsMiwxNiwtMSwwLDIxNDcyMjE1MDQsLTI4LDIsMTc4LDMsMCwzLC0zLDAsNDI5MjkwMjkxMiwtNiwyLDk2LDMsMCw4NSwtMzMsMCw0Mjk0OTM0NTI4LDMsMCwxMjYsLTE4LDIsMTk1LDMsMCwyNjksLTE3LDIsMTU1LDIsMTI0LDIsMTk4LDMsMCwyLDIsMjMsMCw0MjkwODIyMTQ0LC0yLDAsNjcxNzQzMzYsMCw1MjAwOTM3MDAsMiwxNywzLDAsMjEsLTIsMiwxNzksMywwLDMsLTIsMCwzMDcyMCwtMSwwLDMyNTEyLDMsMCwyLDAsNDI5NDc3MDY1NiwtMTkxLDIsMTc0LC0zOCwyLDE3MCwyLDAsMiwxOTYsMywwLDI3OSwtOCwyLDEyNCwyLDAsMCw0Mjk0NTA4NTQzLDAsNjUyOTUsLTExLDIsMTc3LDMsMCw3MiwtMywwLDM3NTgxNTk4NzIsMCwyMDEzOTE2MTYsMywwLDE1NSwtNywyLDE3MCwtMSwwLDM4NCwtMSwwLDEzMzY5MzQ0MCwtMywyLDE5NiwtMiwyLDI2LDMsMCw0LDIsMTY5LC0yLDIsOTAsMiwxNTUsMywwLDQsLTIsMiwxNjQsLTEsMiwxNTAsMCwzMzU1NTI5MjMsMiwxOTcsLTEsMCw1Mzg5NzQyNzIsMCwyMjE0NTkyNTEyLDAsMTMyZTMsLTEwLDAsMTkyLC04LDAsMTIyODgsLTIxLDAsMTM0MjEzNjMyLDAsNDI5NDkwMTc2MSwzLDAsNDIsMCwxMDA2NjM0MjQsMCw0Mjk0OTY1Mjg0LDMsMCw2LC0xLDAsMzIyMTI4MjgxNiwyLDE5OCwzLDAsMTEsLTEsMiwxOTksMywwLDQwLC02LDAsNDI4NjU3ODc4NCwyLDAsLTIsMCwxMDA2Njk0NDAwLDMsMCwyNCwyLDM1LC0xLDIsOTQsMywwLDIsMCwxLDIsMTYzLDMsMCw2LDIsMTk3LDAsNDExMDk0MjU2OSwwLDE0MzI5NTAxMzksMCwyNzAxNjU4MjE3LDAsNDAyNjUzMjg2NCwwLDQwMjY1MzI4ODEsMiwwLDIsNDUsMywwLDgsLTEsMiwxNTgsLTIsMiwxNjksMCw5ODMwNCwwLDY1NTM3LDIsMTcwLC01LDAsNDI5NDk1MDkxMiwyLDAsMiwxMTgsMCw2NTUyOCwyLDE3NywwLDQyOTQ3NzAxNzYsMiwyNiwzLDAsNCwtMzAsMiwxNzQsMCwzNzU4MTUzNzI4LC0zLDIsMTY5LC0yLDIsMTU1LDIsMTg4LDIsMTU4LC0xLDIsMTkxLC0xLDIsMTYxLDAsNDI5NDc1NDMwNCwzLDAsMiwtMywwLDMzNTU0NDMyLC0yLDIsMjAwLC0zLDIsMTY5LDAsNDE3NTQ3ODc4NCwyLDIwMSwwLDQyODY2NDM3MTIsMCw0Mjg2NjQ0MjE2LDIsMCwtNCwyLDIwMiwtMSwyLDE2NSwwLDQyMjc5MjM5NjcsMywwLDMyLC0xMzM0LDIsMTYzLDIsMCwtMTI5LDIsOTQsLTYsMiwxNjMsLTE4MCwyLDIwMywtMjMzLDIsNCwzLDAsOTYsLTE2LDIsMTYzLDMsMCw0NywtMTU0LDIsMTY1LDMsMCwyMjM4MSwtNywyLDE3LDMsMCw2MTI4XSxbNDI5NDk2NzI5NSw0Mjk0OTY3MjkxLDQwOTI0NjA1NDMsNDI5NDgyODAzMSw0Mjk0OTY3Mjk0LDEzNDIxNzcyNiwyNjg0MzU0NTUsMjE0NzQ4MzY0NywxMDQ4NTc1LDEwNzM3NDE4MjMsMzg5MjMxNDExMSwxMzQyMTc3MjcsMTA2MTE1ODkxMSw1MzY4MDUzNzYsNDI5NDkxMDE0Myw0MTYwNzQ5NTY3LDQyOTQ5MDE3NTksNDI5NDkwMTc2MCw1MzY4NzA5MTEsMjYyMTQzLDgzODg2MDcsNDI5NDkwMjc4Myw0Mjk0OTE4MTQzLDY1NTM1LDY3MDQzMzI4LDIyODE3MDEzNzQsNDI5NDk2NzIzMiwyMDk3MTUxLDQyOTQ5MDM4MDcsNDE5NDMwMywyNTUsNjcxMDg4NjMsNDI5NDk2NzAzOSw1MTEsNTI0Mjg3LDEzMTA3MSwxMjcsNDI5Mjg3MDE0Myw0Mjk0OTAyMjcxLDQyOTQ1NDk0ODcsMzM1NTQ0MzEsMTAyMyw2NzA0NzQyMyw0Mjk0OTAxODg4LDQyODY1Nzg2ODcsNDI5NDc3MDY4Nyw2NzA0MzU4MywzMjc2NywxNSwyMDQ3OTk5LDY3MDQzMzQzLDE2Nzc3MjE1LDQyOTQ5MDJlMyw0Mjk0OTM0NTI3LDQyOTQ5NjY3ODMsNDI5NDk2NzI3OSwyMDQ3LDI2MjA4MywyMDUxMSw0MjkwNzcyOTkxLDQxOTQzMDM5LDQ5MzU2Nyw0Mjk0OTU5MTA0LDYwMzk3OTc3NSw2NTUzNiw2MDI3OTk2MTUsODA1MDQ0MjIzLDQyOTQ5NjUyMDYsODE5MSwxMDMxNzQ5MTE5LDQyOTQ5MTc2MzEsMjEzNDc2OTY2Myw0Mjg2NTc4NDkzLDQyODIyNTMzMTEsNDI5NDk0MjcxOSwzMzU0MDA5NSw0Mjk0OTA1ODU1LDQyOTQ5NjcyNjQsMjg2ODg1NDU5MSwxNjA4NTE1NTgzLDI2NTIzMjM0OCw1MzQ1MTk4MDcsMjE0NzYxNDcyMCwxMDYwMTA5NDQ0LDQwOTM2NDAwMTYsMTczNzYsMjEzOTA2MjE0MywyMjQsNDE2OTEzODE3NSw0Mjk0OTA5OTUxLDQyODY1Nzg2ODgsNDI5NDk2NzI5Miw0Mjk0OTY1NzU5LDIwNDQsNDI5Mjg3MDE0NCw0Mjk0OTY2MjcyLDQyOTQ5NjcyODAsODI4OTkxOCw0Mjk0OTM0Mzk5LDQyOTQ5MDE3NzUsNDI5NDk2NTM3NSwxNjAyMjIzNjE1LDQyOTQ5NjcyNTksNDI5NDQ0MzAwOCwyNjgzNjk5MjAsNDI5MjgwNDYwOCw0ODYzNDE4ODQsNDI5NDk2MzE5OSwzMDg3MDA3NjE1LDEwNzM2OTI2NzEsNDEyODUyNyw0Mjc5MjM4NjU1LDQyOTQ5MDIwMTUsNDI5NDk2NjU5MSwyNDQ1Mjc5MjMxLDM2NzAwMTUsMzIzODAwMjY4NywzMSw2Myw0Mjk0OTY3Mjg4LDQyOTQ3MDUxNTEsNDA5NSwzMjIxMjA4NDQ3LDQyOTQ1NDk0NzIsMjE0NzQ4MzY0OCw0Mjg1NTI2NjU1LDQyOTQ5NjY1MjcsNDI5NDcwNTE1Miw0Mjk0OTY2MTQzLDY0LDQyOTQ5NjY3MTksMTYzODMsMzc3NDg3MzU5Miw0NTg3NTIsNTM2ODA3NDIzLDY3MDQzODM5LDM3NTgwOTYzODMsMzk1OTQxNDM3MiwzNzU1OTkzMDIzLDIwODAzNzQ3ODMsNDI5NDgzNTI5NSw0Mjk0OTY3MTAzLDQxNjA3NDk1NjUsNDA4NywxODQwMjQ3MjYsMjg2MjAxNzE1NiwxNTkzMzA5MDc4LDI2ODQzNDQzMSwyNjg0MzQ0MTQsNDI5NDkwMTc2Myw1MzY4NzA5MTIsMjk1Mjc5MDAxNiwyMDI1MDY3NTIsMTM5MjY0LDQwMjY1MzE4NCw0MjYxNDEyODY0LDQyMjc5MjI5NDQsNDkxNTIsNjE0NDAsMzc1ODA5NjM4NCwxMTc0NDA1MTIsNjUyODAsMzIzMzgwODM4NCwzMjIxMjI1NDcyLDIwOTcxNTIsNDI5NDk2NTI0OCwzMjc2OCw1NzE1Miw2NzEwODg2NCw0MjkzOTE4NzIwLDQyOTA3NzI5OTIsMjUxNjU4MjQsNTczNDQsNDIyNzkxNTc3Niw0Mjc4MTkwMDgwLDQyMjc5MDc1ODQsNjU1MjAsNDAyNjUzMTg0MCw0MjI3ODU4NDMyLDQxNjA3NDk1NjgsMzc1ODEyOTE1Miw0Mjk0ODM2MjI0LDYzNDg4LDEwNzM3NDE4MjQsNDI5NDk2NzA0MCw0MTk0MzA0LDI1MTY1ODI0MCwxOTY2MDgsNDI5NDk2MzIwMCw2NDUxMiw0MTc4MDgsNDIyNzkyMzcxMiwxMjU4MjkxMiw1MDMzMTY0OCw2NTQ3Miw0Mjk0OTY3MTY4LDQyOTQ5NjY3ODQsMTYsNDI5NDkxNzEyMCwyMDgwMzc0Nzg0LDQwOTYsNjU0MDgsNTI0Mjg4LDY1NTMyXSk7ZnVuY3Rpb24gcih1KXtyZXR1cm4gdS5jb2x1bW4rKyx1LmN1cnJlbnRDaGFyPXUuc291cmNlLmNoYXJDb2RlQXQoKyt1LmluZGV4KX1mdW5jdGlvbiBLKHUsZSl7aWYoKGUmNjQ1MTIpIT09NTUyOTYpcmV0dXJuIDA7bGV0IGk9dS5zb3VyY2UuY2hhckNvZGVBdCh1LmluZGV4KzEpO3JldHVybihpJjY0NTEyKSE9PTU2MzIwPzA6KGU9dS5jdXJyZW50Q2hhcj02NTUzNisoKGUmMTAyMyk8PDEwKSsoaSYxMDIzKSwoVFsoZT4+PjUpKzBdPj4+ZSYzMSYxKT09PTAmJmYodSwxOCxaKGUpKSx1LmluZGV4KyssdS5jb2x1bW4rKywxKX1mdW5jdGlvbiBZKHUsZSl7dS5jdXJyZW50Q2hhcj11LnNvdXJjZS5jaGFyQ29kZUF0KCsrdS5pbmRleCksdS5mbGFnc3w9MSwoZSY0KT09PTAmJih1LmNvbHVtbj0wLHUubGluZSsrKX1mdW5jdGlvbiBYKHUpe3UuZmxhZ3N8PTEsdS5jdXJyZW50Q2hhcj11LnNvdXJjZS5jaGFyQ29kZUF0KCsrdS5pbmRleCksdS5jb2x1bW49MCx1LmxpbmUrK31mdW5jdGlvbiBwKHUpe3JldHVybiB1PT09MTYwfHx1PT09NjUyNzl8fHU9PT0xMzN8fHU9PT01NzYwfHx1Pj04MTkyJiZ1PD04MjAzfHx1PT09ODIzOXx8dT09PTgyODd8fHU9PT0xMjI4OHx8dT09PTgyMDF8fHU9PT02NTUxOX1mdW5jdGlvbiBaKHUpe3JldHVybiB1PD02NTUzNT9TdHJpbmcuZnJvbUNoYXJDb2RlKHUpOlN0cmluZy5mcm9tQ2hhckNvZGUodT4+PjEwKStTdHJpbmcuZnJvbUNoYXJDb2RlKHUmMTAyMyl9ZnVuY3Rpb24gTCh1KXtyZXR1cm4gdTw2NT91LTQ4OnUtNjUrMTAmMTV9ZnVuY3Rpb24gdDIodSl7c3dpdGNoKHUpe2Nhc2UgMTM0MjgzMjY2OnJldHVyblwiTnVtZXJpY0xpdGVyYWxcIjtjYXNlIDEzNDI4MzI2NzpyZXR1cm5cIlN0cmluZ0xpdGVyYWxcIjtjYXNlIDg2MDIxOmNhc2UgODYwMjI6cmV0dXJuXCJCb29sZWFuTGl0ZXJhbFwiO2Nhc2UgODYwMjM6cmV0dXJuXCJOdWxsTGl0ZXJhbFwiO2Nhc2UgNjU1NDA6cmV0dXJuXCJSZWd1bGFyRXhwcmVzc2lvblwiO2Nhc2UgNjcxNzQ0MDg6Y2FzZSA2NzE3NDQwOTpjYXNlIDEzMjpyZXR1cm5cIlRlbXBsYXRlTGl0ZXJhbFwiO2RlZmF1bHQ6cmV0dXJuKHUmMTQzMzYwKT09PTE0MzM2MD9cIklkZW50aWZpZXJcIjoodSY0MDk2KT09PTQwOTY/XCJLZXl3b3JkXCI6XCJQdW5jdHVhdG9yXCJ9fXZhciBWPVswLDAsMCwwLDAsMCwwLDAsMCwwLDEwMzIsMCwwLDIwNTYsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgxOTIsMCwzLDAsMCw4MTkyLDAsMCwwLDI1NiwwLDMzMDI0LDAsMCwyNDIsMjQyLDExNCwxMTQsMTE0LDExNCwxMTQsMTE0LDU5NCw1OTQsMCwwLDE2Mzg0LDAsMCwwLDAsNjcsNjcsNjcsNjcsNjcsNjcsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDMsMywzLDAsMSwwLDAsNDA5OSwwLDcxLDcxLDcxLDcxLDcxLDcxLDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNywxNjM4NCwwLDAsMCwwXSxKPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMSwwLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDAsMCwwLDBdLEg9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwxLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMF07ZnVuY3Rpb24gSSh1KXtyZXR1cm4gdTw9MTI3P0pbdV06VFsodT4+PjUpKzM0ODE2XT4+PnUmMzEmMX1mdW5jdGlvbiB1Mih1KXtyZXR1cm4gdTw9MTI3P0hbdV06VFsodT4+PjUpKzBdPj4+dSYzMSYxfHx1PT09ODIwNHx8dT09PTgyMDV9dmFyIG0yPVtcIlNpbmdsZUxpbmVcIixcIk11bHRpTGluZVwiLFwiSFRNTE9wZW5cIixcIkhUTUxDbG9zZVwiLFwiSGFzaGJhbmdDb21tZW50XCJdO2Z1bmN0aW9uIGMyKHUpe2xldCBlPXUuc291cmNlO3UuY3VycmVudENoYXI9PT0zNSYmZS5jaGFyQ29kZUF0KHUuaW5kZXgrMSk9PT0zMyYmKHIodSkscih1KSxzMih1LGUsMCw0LHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSl9ZnVuY3Rpb24gUjIodSxlLGksbix0LG8sbCxjKXtyZXR1cm4gbiYyMDQ4JiZmKHUsMCksczIodSxlLGksdCxvLGwsYyl9ZnVuY3Rpb24gczIodSxlLGksbix0LG8sbCl7bGV0e2luZGV4OmN9PXU7Zm9yKHUudG9rZW5Qb3M9dS5pbmRleCx1LmxpbmVQb3M9dS5saW5lLHUuY29sUG9zPXUuY29sdW1uO3UuaW5kZXg8dS5lbmQ7KXtpZihWW3UuY3VycmVudENoYXJdJjgpe2xldCBzPXUuY3VycmVudENoYXI9PT0xMztYKHUpLHMmJnUuaW5kZXg8dS5lbmQmJnUuY3VycmVudENoYXI9PT0xMCYmKHUuY3VycmVudENoYXI9ZS5jaGFyQ29kZUF0KCsrdS5pbmRleCkpO2JyZWFrfWVsc2UgaWYoKHUuY3VycmVudENoYXJeODIzMik8PTEpe1godSk7YnJlYWt9cih1KSx1LnRva2VuUG9zPXUuaW5kZXgsdS5saW5lUG9zPXUubGluZSx1LmNvbFBvcz11LmNvbHVtbn1pZih1Lm9uQ29tbWVudCl7bGV0IHM9e3N0YXJ0OntsaW5lOm8sY29sdW1uOmx9LGVuZDp7bGluZTp1LmxpbmVQb3MsY29sdW1uOnUuY29sUG9zfX07dS5vbkNvbW1lbnQobTJbbiYyNTVdLGUuc2xpY2UoYyx1LnRva2VuUG9zKSx0LHUudG9rZW5Qb3Mscyl9cmV0dXJuIGl8MX1mdW5jdGlvbiBOMih1LGUsaSl7bGV0e2luZGV4Om59PXU7Zm9yKDt1LmluZGV4PHUuZW5kOylpZih1LmN1cnJlbnRDaGFyPDQzKXtsZXQgdD0hMTtmb3IoO3UuY3VycmVudENoYXI9PT00MjspaWYodHx8KGkmPS01LHQ9ITApLHIodSk9PT00Nyl7aWYocih1KSx1Lm9uQ29tbWVudCl7bGV0IG89e3N0YXJ0OntsaW5lOnUubGluZVBvcyxjb2x1bW46dS5jb2xQb3N9LGVuZDp7bGluZTp1LmxpbmUsY29sdW1uOnUuY29sdW1ufX07dS5vbkNvbW1lbnQobTJbMV0sZS5zbGljZShuLHUuaW5kZXgtMiksbi0yLHUuaW5kZXgsbyl9cmV0dXJuIHUudG9rZW5Qb3M9dS5pbmRleCx1LmxpbmVQb3M9dS5saW5lLHUuY29sUG9zPXUuY29sdW1uLGl9aWYodCljb250aW51ZTtWW3UuY3VycmVudENoYXJdJjg/dS5jdXJyZW50Q2hhcj09PTEzPyhpfD01LFgodSkpOihZKHUsaSksaT1pJi01fDEpOnIodSl9ZWxzZSh1LmN1cnJlbnRDaGFyXjgyMzIpPD0xPyhpPWkmLTV8MSxYKHUpKTooaSY9LTUscih1KSk7Zih1LDE2KX1mdW5jdGlvbiB3Mih1LGUpe2xldCBpPXUuaW5kZXgsbj0wO3U6Zm9yKDs7KXtsZXQgYj11LmN1cnJlbnRDaGFyO2lmKHIodSksbiYxKW4mPS0yO2Vsc2Ugc3dpdGNoKGIpe2Nhc2UgNDc6aWYobilicmVhazticmVhayB1O2Nhc2UgOTI6bnw9MTticmVhaztjYXNlIDkxOm58PTI7YnJlYWs7Y2FzZSA5MzpuJj0xO2JyZWFrO2Nhc2UgMTM6Y2FzZSAxMDpjYXNlIDgyMzI6Y2FzZSA4MjMzOmYodSwzMil9aWYodS5pbmRleD49dS5zb3VyY2UubGVuZ3RoKXJldHVybiBmKHUsMzIpfWxldCB0PXUuaW5kZXgtMSxvPTAsbD11LmN1cnJlbnRDaGFyLHtpbmRleDpjfT11O2Zvcig7dTIobCk7KXtzd2l0Y2gobCl7Y2FzZSAxMDM6byYyJiZmKHUsMzQsXCJnXCIpLG98PTI7YnJlYWs7Y2FzZSAxMDU6byYxJiZmKHUsMzQsXCJpXCIpLG98PTE7YnJlYWs7Y2FzZSAxMDk6byY0JiZmKHUsMzQsXCJtXCIpLG98PTQ7YnJlYWs7Y2FzZSAxMTc6byYxNiYmZih1LDM0LFwiZ1wiKSxvfD0xNjticmVhaztjYXNlIDEyMTpvJjgmJmYodSwzNCxcInlcIiksb3w9ODticmVhaztjYXNlIDExNTpvJjMyJiZmKHUsMzQsXCJzXCIpLG98PTMyO2JyZWFrO2RlZmF1bHQ6Zih1LDMzKX1sPXIodSl9bGV0IHM9dS5zb3VyY2Uuc2xpY2UoYyx1LmluZGV4KSxoPXUuc291cmNlLnNsaWNlKGksdCk7cmV0dXJuIHUudG9rZW5SZWdFeHA9e3BhdHRlcm46aCxmbGFnczpzfSxlJjUxMiYmKHUudG9rZW5SYXc9dS5zb3VyY2Uuc2xpY2UodS50b2tlblBvcyx1LmluZGV4KSksdS50b2tlblZhbHVlPU8xKHUsaCxzKSw2NTU0MH1mdW5jdGlvbiBPMSh1LGUsaSl7dHJ5e3JldHVybiBuZXcgUmVnRXhwKGUsaSl9Y2F0Y2h7Zih1LDMyKX19ZnVuY3Rpb24gSTEodSxlLGkpe2xldHtpbmRleDpufT11LHQ9XCJcIixvPXIodSksbD11LmluZGV4O2Zvcig7KFZbb10mOCk9PT0wOyl7aWYobz09PWkpcmV0dXJuIHQrPXUuc291cmNlLnNsaWNlKGwsdS5pbmRleCkscih1KSxlJjUxMiYmKHUudG9rZW5SYXc9dS5zb3VyY2Uuc2xpY2Uobix1LmluZGV4KSksdS50b2tlblZhbHVlPXQsMTM0MjgzMjY3O2lmKChvJjgpPT09OCYmbz09PTkyKXtpZih0Kz11LnNvdXJjZS5zbGljZShsLHUuaW5kZXgpLG89cih1KSxvPDEyN3x8bz09PTgyMzJ8fG89PT04MjMzKXtsZXQgYz1nMih1LGUsbyk7Yz49MD90Kz1aKGMpOm4xKHUsYywwKX1lbHNlIHQrPVoobyk7bD11LmluZGV4KzF9dS5pbmRleD49dS5lbmQmJmYodSwxNCksbz1yKHUpfWYodSwxNCl9ZnVuY3Rpb24gZzIodSxlLGkpe3N3aXRjaChpKXtjYXNlIDk4OnJldHVybiA4O2Nhc2UgMTAyOnJldHVybiAxMjtjYXNlIDExNDpyZXR1cm4gMTM7Y2FzZSAxMTA6cmV0dXJuIDEwO2Nhc2UgMTE2OnJldHVybiA5O2Nhc2UgMTE4OnJldHVybiAxMTtjYXNlIDEzOmlmKHUuaW5kZXg8dS5lbmQpe2xldCBuPXUuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCsxKTtuPT09MTAmJih1LmluZGV4PXUuaW5kZXgrMSx1LmN1cnJlbnRDaGFyPW4pfWNhc2UgMTA6Y2FzZSA4MjMyOmNhc2UgODIzMzpyZXR1cm4gdS5jb2x1bW49LTEsdS5saW5lKyssLTE7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTp7bGV0IG49aS00OCx0PXUuaW5kZXgrMSxvPXUuY29sdW1uKzE7aWYodDx1LmVuZCl7bGV0IGw9dS5zb3VyY2UuY2hhckNvZGVBdCh0KTtpZigoVltsXSYzMik9PT0wKXtpZigobiE9PTB8fFZbbF0mNTEyKSYmZSYxMDI0KXJldHVybi0yfWVsc2V7aWYoZSYxMDI0KXJldHVybi0yO2lmKHUuY3VycmVudENoYXI9bCxuPW48PDN8bC00OCx0KyssbysrLHQ8dS5lbmQpe2xldCBjPXUuc291cmNlLmNoYXJDb2RlQXQodCk7VltjXSYzMiYmKHUuY3VycmVudENoYXI9YyxuPW48PDN8Yy00OCx0KyssbysrKX11LmZsYWdzfD02NCx1LmluZGV4PXQtMSx1LmNvbHVtbj1vLTF9fXJldHVybiBufWNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6e2lmKGUmMTAyNClyZXR1cm4tMjtsZXQgbj1pLTQ4LHQ9dS5pbmRleCsxLG89dS5jb2x1bW4rMTtpZih0PHUuZW5kKXtsZXQgbD11LnNvdXJjZS5jaGFyQ29kZUF0KHQpO1ZbbF0mMzImJihuPW48PDN8bC00OCx1LmN1cnJlbnRDaGFyPWwsdS5pbmRleD10LHUuY29sdW1uPW8pfXJldHVybiB1LmZsYWdzfD02NCxufWNhc2UgMTIwOntsZXQgbj1yKHUpO2lmKChWW25dJjY0KT09PTApcmV0dXJuLTQ7bGV0IHQ9TChuKSxvPXIodSk7aWYoKFZbb10mNjQpPT09MClyZXR1cm4tNDtsZXQgbD1MKG8pO3JldHVybiB0PDw0fGx9Y2FzZSAxMTc6e2xldCBuPXIodSk7aWYodS5jdXJyZW50Q2hhcj09PTEyMyl7bGV0IHQ9MDtmb3IoOyhWW3IodSldJjY0KSE9PTA7KWlmKHQ9dDw8NHxMKHUuY3VycmVudENoYXIpLHQ+MTExNDExMSlyZXR1cm4tNTtyZXR1cm4gdS5jdXJyZW50Q2hhcjwxfHx1LmN1cnJlbnRDaGFyIT09MTI1Py00OnR9ZWxzZXtpZigoVltuXSY2NCk9PT0wKXJldHVybi00O2xldCB0PXUuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCsxKTtpZigoVlt0XSY2NCk9PT0wKXJldHVybi00O2xldCBvPXUuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCsyKTtpZigoVltvXSY2NCk9PT0wKXJldHVybi00O2xldCBsPXUuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCszKTtyZXR1cm4oVltsXSY2NCk9PT0wPy00Oih1LmluZGV4Kz0zLHUuY29sdW1uKz0zLHUuY3VycmVudENoYXI9dS5zb3VyY2UuY2hhckNvZGVBdCh1LmluZGV4KSxMKG4pPDwxMnxMKHQpPDw4fEwobyk8PDR8TChsKSl9fWNhc2UgNTY6Y2FzZSA1NzppZigoZSYyNTYpPT09MClyZXR1cm4tMztkZWZhdWx0OnJldHVybiBpfX1mdW5jdGlvbiBuMSh1LGUsaSl7c3dpdGNoKGUpe2Nhc2UtMTpyZXR1cm47Y2FzZS0yOmYodSxpPzI6MSk7Y2FzZS0zOmYodSwxMyk7Y2FzZS00OmYodSw2KTtjYXNlLTU6Zih1LDEwMSl9fWZ1bmN0aW9uIEp1KHUsZSl7bGV0e2luZGV4Oml9PXUsbj02NzE3NDQwOSx0PVwiXCIsbz1yKHUpO2Zvcig7byE9PTk2Oyl7aWYobz09PTM2JiZ1LnNvdXJjZS5jaGFyQ29kZUF0KHUuaW5kZXgrMSk9PT0xMjMpe3IodSksbj02NzE3NDQwODticmVha31lbHNlIGlmKChvJjgpPT09OCYmbz09PTkyKWlmKG89cih1KSxvPjEyNil0Kz1aKG8pO2Vsc2V7bGV0IGw9ZzIodSxlfDEwMjQsbyk7aWYobD49MCl0Kz1aKGwpO2Vsc2UgaWYobCE9PS0xJiZlJjY1NTM2KXt0PXZvaWQgMCxvPXIwKHUsbyksbzwwJiYobj02NzE3NDQwOCk7YnJlYWt9ZWxzZSBuMSh1LGwsMSl9ZWxzZSB1LmluZGV4PHUuZW5kJiZvPT09MTMmJnUuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCk9PT0xMCYmKHQrPVoobyksdS5jdXJyZW50Q2hhcj11LnNvdXJjZS5jaGFyQ29kZUF0KCsrdS5pbmRleCkpLCgobyY4Myk8MyYmbz09PTEwfHwob144MjMyKTw9MSkmJih1LmNvbHVtbj0tMSx1LmxpbmUrKyksdCs9WihvKTt1LmluZGV4Pj11LmVuZCYmZih1LDE1KSxvPXIodSl9cmV0dXJuIHIodSksdS50b2tlblZhbHVlPXQsdS50b2tlblJhdz11LnNvdXJjZS5zbGljZShpKzEsdS5pbmRleC0obj09PTY3MTc0NDA5PzE6MikpLG59ZnVuY3Rpb24gcjAodSxlKXtmb3IoO2UhPT05Njspe3N3aXRjaChlKXtjYXNlIDM2OntsZXQgaT11LmluZGV4KzE7aWYoaTx1LmVuZCYmdS5zb3VyY2UuY2hhckNvZGVBdChpKT09PTEyMylyZXR1cm4gdS5pbmRleD1pLHUuY29sdW1uKyssLWU7YnJlYWt9Y2FzZSAxMDpjYXNlIDgyMzI6Y2FzZSA4MjMzOnUuY29sdW1uPS0xLHUubGluZSsrfXUuaW5kZXg+PXUuZW5kJiZmKHUsMTUpLGU9cih1KX1yZXR1cm4gZX1mdW5jdGlvbiB2MCh1LGUpe3JldHVybiB1LmluZGV4Pj11LmVuZCYmZih1LDApLHUuaW5kZXgtLSx1LmNvbHVtbi0tLEp1KHUsZSl9ZnVuY3Rpb24gWHUodSxlLGkpe2xldCBuPXUuY3VycmVudENoYXIsdD0wLG89OSxsPWkmNjQ/MDoxLGM9MCxzPTA7aWYoaSY2NCl0PVwiLlwiK3QxKHUsbiksbj11LmN1cnJlbnRDaGFyLG49PT0xMTAmJmYodSwxMSk7ZWxzZXtpZihuPT09NDgpaWYobj1yKHUpLChufDMyKT09PTEyMCl7Zm9yKGk9MTM2LG49cih1KTtWW25dJjQxNjA7KXtpZihuPT09OTUpe3N8fGYodSwxNDYpLHM9MCxuPXIodSk7Y29udGludWV9cz0xLHQ9dCoxNitMKG4pLGMrKyxuPXIodSl9KGM8MXx8IXMpJiZmKHUsYzwxPzE5OjE0Nyl9ZWxzZSBpZigobnwzMik9PT0xMTEpe2ZvcihpPTEzMixuPXIodSk7VltuXSY0MTI4Oyl7aWYobj09PTk1KXtzfHxmKHUsMTQ2KSxzPTAsbj1yKHUpO2NvbnRpbnVlfXM9MSx0PXQqOCsobi00OCksYysrLG49cih1KX0oYzwxfHwhcykmJmYodSxjPDE/MDoxNDcpfWVsc2UgaWYoKG58MzIpPT09OTgpe2ZvcihpPTEzMCxuPXIodSk7VltuXSY0MjI0Oyl7aWYobj09PTk1KXtzfHxmKHUsMTQ2KSxzPTAsbj1yKHUpO2NvbnRpbnVlfXM9MSx0PXQqMisobi00OCksYysrLG49cih1KX0oYzwxfHwhcykmJmYodSxjPDE/MDoxNDcpfWVsc2UgaWYoVltuXSYzMilmb3IoZSYxMDI0JiZmKHUsMSksaT0xO1Zbbl0mMTY7KXtpZihWW25dJjUxMil7aT0zMixsPTA7YnJlYWt9dD10KjgrKG4tNDgpLG49cih1KX1lbHNlIFZbbl0mNTEyPyhlJjEwMjQmJmYodSwxKSx1LmZsYWdzfD02NCxpPTMyKTpuPT09OTUmJmYodSwwKTtpZihpJjQ4KXtpZihsKXtmb3IoO28+PTAmJlZbbl0mNDExMjspe2lmKG49PT05NSl7bj1yKHUpLChuPT09OTV8fGkmMzIpJiZxKHUuaW5kZXgsdS5saW5lLHUuaW5kZXgrMSwxNDYpLHM9MTtjb250aW51ZX1zPTAsdD0xMCp0KyhuLTQ4KSxuPXIodSksLS1vfWlmKHMmJnEodS5pbmRleCx1LmxpbmUsdS5pbmRleCsxLDE0Nyksbz49MCYmIUkobikmJm4hPT00NilyZXR1cm4gdS50b2tlblZhbHVlPXQsZSY1MTImJih1LnRva2VuUmF3PXUuc291cmNlLnNsaWNlKHUudG9rZW5Qb3MsdS5pbmRleCkpLDEzNDI4MzI2Nn10Kz10MSh1LG4pLG49dS5jdXJyZW50Q2hhcixuPT09NDYmJihyKHUpPT09OTUmJmYodSwwKSxpPTY0LHQrPVwiLlwiK3QxKHUsdS5jdXJyZW50Q2hhciksbj11LmN1cnJlbnRDaGFyKX19bGV0IGg9dS5pbmRleCxiPTA7aWYobj09PTExMCYmaSYxMjgpYj0xLG49cih1KTtlbHNlIGlmKChufDMyKT09PTEwMSl7bj1yKHUpLFZbbl0mMjU2JiYobj1yKHUpKTtsZXR7aW5kZXg6Z309dTsoVltuXSYxNik8MSYmZih1LDEwKSx0Kz11LnNvdXJjZS5zdWJzdHJpbmcoaCxnKSt0MSh1LG4pLG49dS5jdXJyZW50Q2hhcn1yZXR1cm4odS5pbmRleDx1LmVuZCYmVltuXSYxNnx8SShuKSkmJmYodSwxMiksYj8odS50b2tlblJhdz11LnNvdXJjZS5zbGljZSh1LnRva2VuUG9zLHUuaW5kZXgpLHUudG9rZW5WYWx1ZT1CaWdJbnQodCksMTM0MjgzMzg5KToodS50b2tlblZhbHVlPWkmMTU/dDppJjMyP3BhcnNlRmxvYXQodS5zb3VyY2Uuc3Vic3RyaW5nKHUudG9rZW5Qb3MsdS5pbmRleCkpOit0LGUmNTEyJiYodS50b2tlblJhdz11LnNvdXJjZS5zbGljZSh1LnRva2VuUG9zLHUuaW5kZXgpKSwxMzQyODMyNjYpfWZ1bmN0aW9uIHQxKHUsZSl7bGV0IGk9MCxuPXUuaW5kZXgsdD1cIlwiO2Zvcig7VltlXSY0MTEyOyl7aWYoZT09PTk1KXtsZXR7aW5kZXg6b309dTtlPXIodSksZT09PTk1JiZxKHUuaW5kZXgsdS5saW5lLHUuaW5kZXgrMSwxNDYpLGk9MSx0Kz11LnNvdXJjZS5zdWJzdHJpbmcobixvKSxuPXUuaW5kZXg7Y29udGludWV9aT0wLGU9cih1KX1yZXR1cm4gaSYmcSh1LmluZGV4LHUubGluZSx1LmluZGV4KzEsMTQ3KSx0K3Uuc291cmNlLnN1YnN0cmluZyhuLHUuaW5kZXgpfXZhciBHPVtcImVuZCBvZiBzb3VyY2VcIixcImlkZW50aWZpZXJcIixcIm51bWJlclwiLFwic3RyaW5nXCIsXCJyZWd1bGFyIGV4cHJlc3Npb25cIixcImZhbHNlXCIsXCJ0cnVlXCIsXCJudWxsXCIsXCJ0ZW1wbGF0ZSBjb250aW51YXRpb25cIixcInRlbXBsYXRlIHRhaWxcIixcIj0+XCIsXCIoXCIsXCJ7XCIsXCIuXCIsXCIuLi5cIixcIn1cIixcIilcIixcIjtcIixcIixcIixcIltcIixcIl1cIixcIjpcIixcIj9cIixcIidcIiwnXCInLFwiPC9cIixcIi8+XCIsXCIrK1wiLFwiLS1cIixcIj1cIixcIjw8PVwiLFwiPj49XCIsXCI+Pj49XCIsXCIqKj1cIixcIis9XCIsXCItPVwiLFwiKj1cIixcIi89XCIsXCIlPVwiLFwiXj1cIixcInw9XCIsXCImPVwiLFwifHw9XCIsXCImJj1cIixcIj8/PVwiLFwidHlwZW9mXCIsXCJkZWxldGVcIixcInZvaWRcIixcIiFcIixcIn5cIixcIitcIixcIi1cIixcImluXCIsXCJpbnN0YW5jZW9mXCIsXCIqXCIsXCIlXCIsXCIvXCIsXCIqKlwiLFwiJiZcIixcInx8XCIsXCI9PT1cIixcIiE9PVwiLFwiPT1cIixcIiE9XCIsXCI8PVwiLFwiPj1cIixcIjxcIixcIj5cIixcIjw8XCIsXCI+PlwiLFwiPj4+XCIsXCImXCIsXCJ8XCIsXCJeXCIsXCJ2YXJcIixcImxldFwiLFwiY29uc3RcIixcImJyZWFrXCIsXCJjYXNlXCIsXCJjYXRjaFwiLFwiY2xhc3NcIixcImNvbnRpbnVlXCIsXCJkZWJ1Z2dlclwiLFwiZGVmYXVsdFwiLFwiZG9cIixcImVsc2VcIixcImV4cG9ydFwiLFwiZXh0ZW5kc1wiLFwiZmluYWxseVwiLFwiZm9yXCIsXCJmdW5jdGlvblwiLFwiaWZcIixcImltcG9ydFwiLFwibmV3XCIsXCJyZXR1cm5cIixcInN1cGVyXCIsXCJzd2l0Y2hcIixcInRoaXNcIixcInRocm93XCIsXCJ0cnlcIixcIndoaWxlXCIsXCJ3aXRoXCIsXCJpbXBsZW1lbnRzXCIsXCJpbnRlcmZhY2VcIixcInBhY2thZ2VcIixcInByaXZhdGVcIixcInByb3RlY3RlZFwiLFwicHVibGljXCIsXCJzdGF0aWNcIixcInlpZWxkXCIsXCJhc1wiLFwiYXN5bmNcIixcImF3YWl0XCIsXCJjb25zdHJ1Y3RvclwiLFwiZ2V0XCIsXCJzZXRcIixcImZyb21cIixcIm9mXCIsXCJlbnVtXCIsXCJldmFsXCIsXCJhcmd1bWVudHNcIixcImVzY2FwZWQga2V5d29yZFwiLFwiZXNjYXBlZCBmdXR1cmUgcmVzZXJ2ZWQga2V5d29yZFwiLFwicmVzZXJ2ZWQgaWYgc3RyaWN0XCIsXCIjXCIsXCJCaWdJbnRMaXRlcmFsXCIsXCI/P1wiLFwiPy5cIixcIldoaXRlU3BhY2VcIixcIklsbGVnYWxcIixcIkxpbmVUZXJtaW5hdG9yXCIsXCJQcml2YXRlRmllbGRcIixcIlRlbXBsYXRlXCIsXCJAXCIsXCJ0YXJnZXRcIixcIm1ldGFcIixcIkxpbmVGZWVkXCIsXCJFc2NhcGVkXCIsXCJKU1hUZXh0XCJdLHp1PU9iamVjdC5jcmVhdGUobnVsbCx7dGhpczp7dmFsdWU6ODYxMTN9LGZ1bmN0aW9uOnt2YWx1ZTo4NjEwNn0saWY6e3ZhbHVlOjIwNTcxfSxyZXR1cm46e3ZhbHVlOjIwNTc0fSx2YXI6e3ZhbHVlOjg2MDkwfSxlbHNlOnt2YWx1ZToyMDU2NX0sZm9yOnt2YWx1ZToyMDU2OX0sbmV3Ont2YWx1ZTo4NjEwOX0saW46e3ZhbHVlOjg3Mzg4Njh9LHR5cGVvZjp7dmFsdWU6MTY4NjMyNzd9LHdoaWxlOnt2YWx1ZToyMDU4MH0sY2FzZTp7dmFsdWU6MjA1NTh9LGJyZWFrOnt2YWx1ZToyMDU1N30sdHJ5Ont2YWx1ZToyMDU3OX0sY2F0Y2g6e3ZhbHVlOjIwNTU5fSxkZWxldGU6e3ZhbHVlOjE2ODYzMjc4fSx0aHJvdzp7dmFsdWU6ODYxMTR9LHN3aXRjaDp7dmFsdWU6ODYxMTJ9LGNvbnRpbnVlOnt2YWx1ZToyMDU2MX0sZGVmYXVsdDp7dmFsdWU6MjA1NjN9LGluc3RhbmNlb2Y6e3ZhbHVlOjg0NzY3MjV9LGRvOnt2YWx1ZToyMDU2NH0sdm9pZDp7dmFsdWU6MTY4NjMyNzl9LGZpbmFsbHk6e3ZhbHVlOjIwNTY4fSxhc3luYzp7dmFsdWU6MjA5MDA3fSxhd2FpdDp7dmFsdWU6MjA5MDA4fSxjbGFzczp7dmFsdWU6ODYwOTZ9LGNvbnN0Ont2YWx1ZTo4NjA5Mn0sY29uc3RydWN0b3I6e3ZhbHVlOjEyNDAxfSxkZWJ1Z2dlcjp7dmFsdWU6MjA1NjJ9LGV4cG9ydDp7dmFsdWU6MjA1NjZ9LGV4dGVuZHM6e3ZhbHVlOjIwNTY3fSxmYWxzZTp7dmFsdWU6ODYwMjF9LGZyb206e3ZhbHVlOjEyNDA0fSxnZXQ6e3ZhbHVlOjEyNDAyfSxpbXBsZW1lbnRzOnt2YWx1ZTozNjk2Nn0saW1wb3J0Ont2YWx1ZTo4NjEwOH0saW50ZXJmYWNlOnt2YWx1ZTozNjk2N30sbGV0Ont2YWx1ZToyNDE3Mzl9LG51bGw6e3ZhbHVlOjg2MDIzfSxvZjp7dmFsdWU6Mjc0NTQ5fSxwYWNrYWdlOnt2YWx1ZTozNjk2OH0scHJpdmF0ZTp7dmFsdWU6MzY5Njl9LHByb3RlY3RlZDp7dmFsdWU6MzY5NzB9LHB1YmxpYzp7dmFsdWU6MzY5NzF9LHNldDp7dmFsdWU6MTI0MDN9LHN0YXRpYzp7dmFsdWU6MzY5NzJ9LHN1cGVyOnt2YWx1ZTo4NjExMX0sdHJ1ZTp7dmFsdWU6ODYwMjJ9LHdpdGg6e3ZhbHVlOjIwNTgxfSx5aWVsZDp7dmFsdWU6MjQxNzczfSxlbnVtOnt2YWx1ZTo4NjEzNH0sZXZhbDp7dmFsdWU6NTM3MDc5OTI3fSxhczp7dmFsdWU6Nzc5MzR9LGFyZ3VtZW50czp7dmFsdWU6NTM3MDc5OTI4fSx0YXJnZXQ6e3ZhbHVlOjE0MzQ5NH0sbWV0YTp7dmFsdWU6MTQzNDk1fX0pO2Z1bmN0aW9uIEh1KHUsZSxpKXtmb3IoO0hbcih1KV07KTtyZXR1cm4gdS50b2tlblZhbHVlPXUuc291cmNlLnNsaWNlKHUudG9rZW5Qb3MsdS5pbmRleCksdS5jdXJyZW50Q2hhciE9PTkyJiZ1LmN1cnJlbnRDaGFyPDEyNj96dVt1LnRva2VuVmFsdWVdfHwyMDg4OTc6UjEodSxlLDAsaSl9ZnVuY3Rpb24gQTAodSxlKXtsZXQgaT1LdSh1KTtyZXR1cm4gdTIoaSl8fGYodSw0KSx1LnRva2VuVmFsdWU9WihpKSxSMSh1LGUsMSxWW2ldJjQpfWZ1bmN0aW9uIFIxKHUsZSxpLG4pe2xldCB0PXUuaW5kZXg7Zm9yKDt1LmluZGV4PHUuZW5kOylpZih1LmN1cnJlbnRDaGFyPT09OTIpe3UudG9rZW5WYWx1ZSs9dS5zb3VyY2Uuc2xpY2UodCx1LmluZGV4KSxpPTE7bGV0IGw9S3UodSk7dTIobCl8fGYodSw0KSxuPW4mJlZbbF0mNCx1LnRva2VuVmFsdWUrPVoobCksdD11LmluZGV4fWVsc2UgaWYodTIodS5jdXJyZW50Q2hhcil8fEsodSx1LmN1cnJlbnRDaGFyKSlyKHUpO2Vsc2UgYnJlYWs7dS5pbmRleDw9dS5lbmQmJih1LnRva2VuVmFsdWUrPXUuc291cmNlLnNsaWNlKHQsdS5pbmRleCkpO2xldCBvPXUudG9rZW5WYWx1ZS5sZW5ndGg7aWYobiYmbz49MiYmbzw9MTEpe2xldCBsPXp1W3UudG9rZW5WYWx1ZV07cmV0dXJuIGw9PT12b2lkIDA/MjA4ODk3Omk/ZSYxMDI0P2w9PT0yMDkwMDgmJihlJjQxOTYzNTIpPT09MD9sOmw9PT0zNjk3Mnx8KGwmMzY4NjQpPT09MzY4NjQ/MTIyOjEyMTplJjEwNzM3NDE4MjQmJihlJjgxOTIpPT09MCYmKGwmMjA0ODApPT09MjA0ODA/bDpsPT09MjQxNzczP2UmMTA3Mzc0MTgyND8xNDM0ODM6ZSYyMDk3MTUyPzEyMTpsOmw9PT0yMDkwMDcmJmUmMTA3Mzc0MTgyND8xNDM0ODM6KGwmMzY4NjQpPT09MzY4NjR8fGw9PT0yMDkwMDgmJihlJjQxOTQzMDQpPT09MD9sOjEyMTpsfXJldHVybiAyMDg4OTd9ZnVuY3Rpb24geTAodSl7cmV0dXJuIEkocih1KSl8fGYodSw5MyksMTMxfWZ1bmN0aW9uIEt1KHUpe3JldHVybiB1LnNvdXJjZS5jaGFyQ29kZUF0KHUuaW5kZXgrMSkhPT0xMTcmJmYodSw0KSx1LmN1cnJlbnRDaGFyPXUuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCs9MiksUDAodSl9ZnVuY3Rpb24gUDAodSl7bGV0IGU9MCxpPXUuY3VycmVudENoYXI7aWYoaT09PTEyMyl7bGV0IGw9dS5pbmRleC0yO2Zvcig7VltyKHUpXSY2NDspZT1lPDw0fEwodS5jdXJyZW50Q2hhciksZT4xMTE0MTExJiZxKGwsdS5saW5lLHUuaW5kZXgrMSwxMDEpO3JldHVybiB1LmN1cnJlbnRDaGFyIT09MTI1JiZxKGwsdS5saW5lLHUuaW5kZXgtMSw2KSxyKHUpLGV9KFZbaV0mNjQpPT09MCYmZih1LDYpO2xldCBuPXUuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCsxKTsoVltuXSY2NCk9PT0wJiZmKHUsNik7bGV0IHQ9dS5zb3VyY2UuY2hhckNvZGVBdCh1LmluZGV4KzIpOyhWW3RdJjY0KT09PTAmJmYodSw2KTtsZXQgbz11LnNvdXJjZS5jaGFyQ29kZUF0KHUuaW5kZXgrMyk7cmV0dXJuKFZbb10mNjQpPT09MCYmZih1LDYpLGU9TChpKTw8MTJ8TChuKTw8OHxMKHQpPDw0fEwobyksdS5jdXJyZW50Q2hhcj11LnNvdXJjZS5jaGFyQ29kZUF0KHUuaW5kZXgrPTQpLGV9dmFyIFd1PVsxMjksMTI5LDEyOSwxMjksMTI5LDEyOSwxMjksMTI5LDEyOSwxMjgsMTM2LDEyOCwxMjgsMTMwLDEyOSwxMjksMTI5LDEyOSwxMjksMTI5LDEyOSwxMjksMTI5LDEyOSwxMjksMTI5LDEyOSwxMjksMTI5LDEyOSwxMjksMTI5LDEyOCwxNjg0MjgwMCwxMzQyODMyNjcsMTMxLDIwODg5Nyw4NDU3MDE1LDg0NTU3NTEsMTM0MjgzMjY3LDY3MTc0NDExLDE2LDg0NTcwMTQsMjUyMzM5NzAsMTgsMjUyMzM5NzEsNjcxMDg4NzcsODQ1NzAxNiwxMzQyODMyNjYsMTM0MjgzMjY2LDEzNDI4MzI2NiwxMzQyODMyNjYsMTM0MjgzMjY2LDEzNDI4MzI2NiwxMzQyODMyNjYsMTM0MjgzMjY2LDEzNDI4MzI2NiwxMzQyODMyNjYsMjEsMTA3NDc5MDQxNyw4NDU2MjU4LDEwNzc5MzYxNTcsODQ1NjI1OSwyMiwxMzMsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5NywyMDg4OTcsMjA4ODk3LDIwODg5Nyw2OTI3MTU3MSwxMzcsMjAsODQ1NTQ5NywyMDg4OTcsMTMyLDQwOTYsNDA5Niw0MDk2LDQwOTYsNDA5Niw0MDk2LDQwOTYsMjA4ODk3LDQwOTYsMjA4ODk3LDIwODg5Nyw0MDk2LDIwODg5Nyw0MDk2LDIwODg5Nyw0MDk2LDIwODg5Nyw0MDk2LDQwOTYsNDA5NiwyMDg4OTcsNDA5Niw0MDk2LDIwODg5Nyw0MDk2LDQwOTYsMjE2MjcwMCw4NDU1MjQwLDEwNzQ3OTA0MTUsMTY4NDI4MDEsMTI5XTtmdW5jdGlvbiBFKHUsZSl7aWYodS5mbGFncz0odS5mbGFnc3wxKV4xLHUuc3RhcnRQb3M9dS5pbmRleCx1LnN0YXJ0Q29sdW1uPXUuY29sdW1uLHUuc3RhcnRMaW5lPXUubGluZSx1LnRva2VuPVl1KHUsZSwwKSx1Lm9uVG9rZW4mJnUudG9rZW4hPT0xMDQ4NTc2KXtsZXQgaT17c3RhcnQ6e2xpbmU6dS5saW5lUG9zLGNvbHVtbjp1LmNvbFBvc30sZW5kOntsaW5lOnUubGluZSxjb2x1bW46dS5jb2x1bW59fTt1Lm9uVG9rZW4odDIodS50b2tlbiksdS50b2tlblBvcyx1LmluZGV4LGkpfX1mdW5jdGlvbiBZdSh1LGUsaSl7bGV0IG49dS5pbmRleD09PTAsdD11LnNvdXJjZSxvPXUuaW5kZXgsbD11LmxpbmUsYz11LmNvbHVtbjtmb3IoO3UuaW5kZXg8dS5lbmQ7KXt1LnRva2VuUG9zPXUuaW5kZXgsdS5jb2xQb3M9dS5jb2x1bW4sdS5saW5lUG9zPXUubGluZTtsZXQgcz11LmN1cnJlbnRDaGFyO2lmKHM8PTEyNil7bGV0IGg9V3Vbc107c3dpdGNoKGgpe2Nhc2UgNjcxNzQ0MTE6Y2FzZSAxNjpjYXNlIDIxNjI3MDA6Y2FzZSAxMDc0NzkwNDE1OmNhc2UgNjkyNzE1NzE6Y2FzZSAyMDpjYXNlIDIxOmNhc2UgMTA3NDc5MDQxNzpjYXNlIDE4OmNhc2UgMTY4NDI4MDE6Y2FzZSAxMzM6Y2FzZSAxMjk6cmV0dXJuIHIodSksaDtjYXNlIDIwODg5NzpyZXR1cm4gSHUodSxlLDApO2Nhc2UgNDA5NjpyZXR1cm4gSHUodSxlLDEpO2Nhc2UgMTM0MjgzMjY2OnJldHVybiBYdSh1LGUsMTQ0KTtjYXNlIDEzNDI4MzI2NzpyZXR1cm4gSTEodSxlLHMpO2Nhc2UgMTMyOnJldHVybiBKdSh1LGUpO2Nhc2UgMTM3OnJldHVybiBBMCh1LGUpO2Nhc2UgMTMxOnJldHVybiB5MCh1KTtjYXNlIDEyODpyKHUpO2JyZWFrO2Nhc2UgMTMwOml8PTUsWCh1KTticmVhaztjYXNlIDEzNjpZKHUsaSksaT1pJi01fDE7YnJlYWs7Y2FzZSA4NDU2MjU4OmxldCBiPXIodSk7aWYodS5pbmRleDx1LmVuZCl7aWYoYj09PTYwKXJldHVybiB1LmluZGV4PHUuZW5kJiZyKHUpPT09NjE/KHIodSksNDE5NDMzNCk6ODQ1NjUxNjtpZihiPT09NjEpcmV0dXJuIHIodSksODQ1NjI1NjtpZihiPT09MzMpe2xldCBhPXUuaW5kZXgrMTtpZihhKzE8dS5lbmQmJnQuY2hhckNvZGVBdChhKT09PTQ1JiZ0LmNoYXJDb2RlQXQoYSsxKT09NDUpe3UuY29sdW1uKz0zLHUuY3VycmVudENoYXI9dC5jaGFyQ29kZUF0KHUuaW5kZXgrPTMpLGk9UjIodSx0LGksZSwyLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSxvPXUudG9rZW5Qb3MsbD11LmxpbmVQb3MsYz11LmNvbFBvcztjb250aW51ZX1yZXR1cm4gODQ1NjI1OH1pZihiPT09NDcpe2lmKChlJjE2KTwxKXJldHVybiA4NDU2MjU4O2xldCBhPXUuaW5kZXgrMTtpZihhPHUuZW5kJiYoYj10LmNoYXJDb2RlQXQoYSksYj09PTQyfHxiPT09NDcpKWJyZWFrO3JldHVybiByKHUpLDI1fX1yZXR1cm4gODQ1NjI1ODtjYXNlIDEwNzc5MzYxNTc6e3IodSk7bGV0IGE9dS5jdXJyZW50Q2hhcjtyZXR1cm4gYT09PTYxP3IodSk9PT02MT8ocih1KSw4NDU1OTk2KTo4NDU1OTk4OmE9PT02Mj8ocih1KSwxMCk6MTA3NzkzNjE1N31jYXNlIDE2ODQyODAwOnJldHVybiByKHUpIT09NjE/MTY4NDI4MDA6cih1KSE9PTYxPzg0NTU5OTk6KHIodSksODQ1NTk5Nyk7Y2FzZSA4NDU3MDE1OnJldHVybiByKHUpIT09NjE/ODQ1NzAxNToocih1KSw0MTk0MzQyKTtjYXNlIDg0NTcwMTQ6e2lmKHIodSksdS5pbmRleD49dS5lbmQpcmV0dXJuIDg0NTcwMTQ7bGV0IGE9dS5jdXJyZW50Q2hhcjtyZXR1cm4gYT09PTYxPyhyKHUpLDQxOTQzNDApOmEhPT00Mj84NDU3MDE0OnIodSkhPT02MT84NDU3MjczOihyKHUpLDQxOTQzMzcpfWNhc2UgODQ1NTQ5NzpyZXR1cm4gcih1KSE9PTYxPzg0NTU0OTc6KHIodSksNDE5NDM0Myk7Y2FzZSAyNTIzMzk3MDp7cih1KTtsZXQgYT11LmN1cnJlbnRDaGFyO3JldHVybiBhPT09NDM/KHIodSksMzM2MTk5OTUpOmE9PT02MT8ocih1KSw0MTk0MzM4KToyNTIzMzk3MH1jYXNlIDI1MjMzOTcxOntyKHUpO2xldCBhPXUuY3VycmVudENoYXI7aWYoYT09PTQ1KXtpZihyKHUpLChpJjF8fG4pJiZ1LmN1cnJlbnRDaGFyPT09NjIpeyhlJjI1Nik9PT0wJiZmKHUsMTA4KSxyKHUpLGk9UjIodSx0LGksZSwzLG8sbCxjKSxvPXUudG9rZW5Qb3MsbD11LmxpbmVQb3MsYz11LmNvbFBvcztjb250aW51ZX1yZXR1cm4gMzM2MTk5OTZ9cmV0dXJuIGE9PT02MT8ocih1KSw0MTk0MzM5KToyNTIzMzk3MX1jYXNlIDg0NTcwMTY6e2lmKHIodSksdS5pbmRleDx1LmVuZCl7bGV0IGE9dS5jdXJyZW50Q2hhcjtpZihhPT09NDcpe3IodSksaT1zMih1LHQsaSwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSxvPXUudG9rZW5Qb3MsbD11LmxpbmVQb3MsYz11LmNvbFBvcztjb250aW51ZX1pZihhPT09NDIpe3IodSksaT1OMih1LHQsaSksbz11LnRva2VuUG9zLGw9dS5saW5lUG9zLGM9dS5jb2xQb3M7Y29udGludWV9aWYoZSYzMjc2OClyZXR1cm4gdzIodSxlKTtpZihhPT09NjEpcmV0dXJuIHIodSksNDI1OTg3N31yZXR1cm4gODQ1NzAxNn1jYXNlIDY3MTA4ODc3OmxldCBnPXIodSk7aWYoZz49NDgmJmc8PTU3KXJldHVybiBYdSh1LGUsODApO2lmKGc9PT00Nil7bGV0IGE9dS5pbmRleCsxO2lmKGE8dS5lbmQmJnQuY2hhckNvZGVBdChhKT09PTQ2KXJldHVybiB1LmNvbHVtbis9Mix1LmN1cnJlbnRDaGFyPXQuY2hhckNvZGVBdCh1LmluZGV4Kz0yKSwxNH1yZXR1cm4gNjcxMDg4Nzc7Y2FzZSA4NDU1MjQwOntyKHUpO2xldCBhPXUuY3VycmVudENoYXI7cmV0dXJuIGE9PT0xMjQ/KHIodSksdS5jdXJyZW50Q2hhcj09PTYxPyhyKHUpLDQxOTQzNDYpOjg5NzkwMDMpOmE9PT02MT8ocih1KSw0MTk0MzQ0KTo4NDU1MjQwfWNhc2UgODQ1NjI1OTp7cih1KTtsZXQgYT11LmN1cnJlbnRDaGFyO2lmKGE9PT02MSlyZXR1cm4gcih1KSw4NDU2MjU3O2lmKGEhPT02MilyZXR1cm4gODQ1NjI1OTtpZihyKHUpLHUuaW5kZXg8dS5lbmQpe2xldCBBPXUuY3VycmVudENoYXI7aWYoQT09PTYyKXJldHVybiByKHUpPT09NjE/KHIodSksNDE5NDMzNik6ODQ1NjUxODtpZihBPT09NjEpcmV0dXJuIHIodSksNDE5NDMzNX1yZXR1cm4gODQ1NjUxN31jYXNlIDg0NTU3NTE6e3IodSk7bGV0IGE9dS5jdXJyZW50Q2hhcjtyZXR1cm4gYT09PTM4PyhyKHUpLHUuY3VycmVudENoYXI9PT02MT8ocih1KSw0MTk0MzQ3KTo4OTc5MjU4KTphPT09NjE/KHIodSksNDE5NDM0NSk6ODQ1NTc1MX1jYXNlIDIyOntsZXQgYT1yKHUpO2lmKGE9PT02MylyZXR1cm4gcih1KSx1LmN1cnJlbnRDaGFyPT09NjE/KHIodSksNDE5NDM0OCk6Mjc2ODg5OTgyO2lmKGE9PT00Nil7bGV0IEE9dS5pbmRleCsxO2lmKEE8dS5lbmQmJihhPXQuY2hhckNvZGVBdChBKSwhKGE+PTQ4JiZhPD01NykpKXJldHVybiByKHUpLDY3MTA4OTkxfXJldHVybiAyMn19fWVsc2V7aWYoKHNeODIzMik8PTEpe2k9aSYtNXwxLFgodSk7Y29udGludWV9aWYoKHMmNjQ1MTIpPT09NTUyOTZ8fChUWyhzPj4+NSkrMzQ4MTZdPj4+cyYzMSYxKSE9PTApcmV0dXJuKHMmNjQ1MTIpPT09NTYzMjAmJihzPShzJjEwMjMpPDwxMHxzJjEwMjN8NjU1MzYsKFRbKHM+Pj41KSswXT4+PnMmMzEmMSk9PT0wJiZmKHUsMTgsWihzKSksdS5pbmRleCsrLHUuY3VycmVudENoYXI9cyksdS5jb2x1bW4rKyx1LnRva2VuVmFsdWU9XCJcIixSMSh1LGUsMCwwKTtpZihwKHMpKXtyKHUpO2NvbnRpbnVlfWYodSwxOCxaKHMpKX19cmV0dXJuIDEwNDg1NzZ9dmFyIEUwPXtBRWxpZzpcIlxceEM2XCIsQU1QOlwiJlwiLEFhY3V0ZTpcIlxceEMxXCIsQWJyZXZlOlwiXFx1MDEwMlwiLEFjaXJjOlwiXFx4QzJcIixBY3k6XCJcXHUwNDEwXCIsQWZyOlwiXFx1ezFENTA0fVwiLEFncmF2ZTpcIlxceEMwXCIsQWxwaGE6XCJcXHUwMzkxXCIsQW1hY3I6XCJcXHUwMTAwXCIsQW5kOlwiXFx1MkE1M1wiLEFvZ29uOlwiXFx1MDEwNFwiLEFvcGY6XCJcXHV7MUQ1Mzh9XCIsQXBwbHlGdW5jdGlvbjpcIlxcdTIwNjFcIixBcmluZzpcIlxceEM1XCIsQXNjcjpcIlxcdXsxRDQ5Q31cIixBc3NpZ246XCJcXHUyMjU0XCIsQXRpbGRlOlwiXFx4QzNcIixBdW1sOlwiXFx4QzRcIixCYWNrc2xhc2g6XCJcXHUyMjE2XCIsQmFydjpcIlxcdTJBRTdcIixCYXJ3ZWQ6XCJcXHUyMzA2XCIsQmN5OlwiXFx1MDQxMVwiLEJlY2F1c2U6XCJcXHUyMjM1XCIsQmVybm91bGxpczpcIlxcdTIxMkNcIixCZXRhOlwiXFx1MDM5MlwiLEJmcjpcIlxcdXsxRDUwNX1cIixCb3BmOlwiXFx1ezFENTM5fVwiLEJyZXZlOlwiXFx1MDJEOFwiLEJzY3I6XCJcXHUyMTJDXCIsQnVtcGVxOlwiXFx1MjI0RVwiLENIY3k6XCJcXHUwNDI3XCIsQ09QWTpcIlxceEE5XCIsQ2FjdXRlOlwiXFx1MDEwNlwiLENhcDpcIlxcdTIyRDJcIixDYXBpdGFsRGlmZmVyZW50aWFsRDpcIlxcdTIxNDVcIixDYXlsZXlzOlwiXFx1MjEyRFwiLENjYXJvbjpcIlxcdTAxMENcIixDY2VkaWw6XCJcXHhDN1wiLENjaXJjOlwiXFx1MDEwOFwiLENjb25pbnQ6XCJcXHUyMjMwXCIsQ2RvdDpcIlxcdTAxMEFcIixDZWRpbGxhOlwiXFx4QjhcIixDZW50ZXJEb3Q6XCJcXHhCN1wiLENmcjpcIlxcdTIxMkRcIixDaGk6XCJcXHUwM0E3XCIsQ2lyY2xlRG90OlwiXFx1MjI5OVwiLENpcmNsZU1pbnVzOlwiXFx1MjI5NlwiLENpcmNsZVBsdXM6XCJcXHUyMjk1XCIsQ2lyY2xlVGltZXM6XCJcXHUyMjk3XCIsQ2xvY2t3aXNlQ29udG91ckludGVncmFsOlwiXFx1MjIzMlwiLENsb3NlQ3VybHlEb3VibGVRdW90ZTpcIlxcdTIwMURcIixDbG9zZUN1cmx5UXVvdGU6XCJcXHUyMDE5XCIsQ29sb246XCJcXHUyMjM3XCIsQ29sb25lOlwiXFx1MkE3NFwiLENvbmdydWVudDpcIlxcdTIyNjFcIixDb25pbnQ6XCJcXHUyMjJGXCIsQ29udG91ckludGVncmFsOlwiXFx1MjIyRVwiLENvcGY6XCJcXHUyMTAyXCIsQ29wcm9kdWN0OlwiXFx1MjIxMFwiLENvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw6XCJcXHUyMjMzXCIsQ3Jvc3M6XCJcXHUyQTJGXCIsQ3NjcjpcIlxcdXsxRDQ5RX1cIixDdXA6XCJcXHUyMkQzXCIsQ3VwQ2FwOlwiXFx1MjI0RFwiLEREOlwiXFx1MjE0NVwiLEREb3RyYWhkOlwiXFx1MjkxMVwiLERKY3k6XCJcXHUwNDAyXCIsRFNjeTpcIlxcdTA0MDVcIixEWmN5OlwiXFx1MDQwRlwiLERhZ2dlcjpcIlxcdTIwMjFcIixEYXJyOlwiXFx1MjFBMVwiLERhc2h2OlwiXFx1MkFFNFwiLERjYXJvbjpcIlxcdTAxMEVcIixEY3k6XCJcXHUwNDE0XCIsRGVsOlwiXFx1MjIwN1wiLERlbHRhOlwiXFx1MDM5NFwiLERmcjpcIlxcdXsxRDUwN31cIixEaWFjcml0aWNhbEFjdXRlOlwiXFx4QjRcIixEaWFjcml0aWNhbERvdDpcIlxcdTAyRDlcIixEaWFjcml0aWNhbERvdWJsZUFjdXRlOlwiXFx1MDJERFwiLERpYWNyaXRpY2FsR3JhdmU6XCJgXCIsRGlhY3JpdGljYWxUaWxkZTpcIlxcdTAyRENcIixEaWFtb25kOlwiXFx1MjJDNFwiLERpZmZlcmVudGlhbEQ6XCJcXHUyMTQ2XCIsRG9wZjpcIlxcdXsxRDUzQn1cIixEb3Q6XCJcXHhBOFwiLERvdERvdDpcIlxcdTIwRENcIixEb3RFcXVhbDpcIlxcdTIyNTBcIixEb3VibGVDb250b3VySW50ZWdyYWw6XCJcXHUyMjJGXCIsRG91YmxlRG90OlwiXFx4QThcIixEb3VibGVEb3duQXJyb3c6XCJcXHUyMUQzXCIsRG91YmxlTGVmdEFycm93OlwiXFx1MjFEMFwiLERvdWJsZUxlZnRSaWdodEFycm93OlwiXFx1MjFENFwiLERvdWJsZUxlZnRUZWU6XCJcXHUyQUU0XCIsRG91YmxlTG9uZ0xlZnRBcnJvdzpcIlxcdTI3RjhcIixEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c6XCJcXHUyN0ZBXCIsRG91YmxlTG9uZ1JpZ2h0QXJyb3c6XCJcXHUyN0Y5XCIsRG91YmxlUmlnaHRBcnJvdzpcIlxcdTIxRDJcIixEb3VibGVSaWdodFRlZTpcIlxcdTIyQThcIixEb3VibGVVcEFycm93OlwiXFx1MjFEMVwiLERvdWJsZVVwRG93bkFycm93OlwiXFx1MjFENVwiLERvdWJsZVZlcnRpY2FsQmFyOlwiXFx1MjIyNVwiLERvd25BcnJvdzpcIlxcdTIxOTNcIixEb3duQXJyb3dCYXI6XCJcXHUyOTEzXCIsRG93bkFycm93VXBBcnJvdzpcIlxcdTIxRjVcIixEb3duQnJldmU6XCJcXHUwMzExXCIsRG93bkxlZnRSaWdodFZlY3RvcjpcIlxcdTI5NTBcIixEb3duTGVmdFRlZVZlY3RvcjpcIlxcdTI5NUVcIixEb3duTGVmdFZlY3RvcjpcIlxcdTIxQkRcIixEb3duTGVmdFZlY3RvckJhcjpcIlxcdTI5NTZcIixEb3duUmlnaHRUZWVWZWN0b3I6XCJcXHUyOTVGXCIsRG93blJpZ2h0VmVjdG9yOlwiXFx1MjFDMVwiLERvd25SaWdodFZlY3RvckJhcjpcIlxcdTI5NTdcIixEb3duVGVlOlwiXFx1MjJBNFwiLERvd25UZWVBcnJvdzpcIlxcdTIxQTdcIixEb3duYXJyb3c6XCJcXHUyMUQzXCIsRHNjcjpcIlxcdXsxRDQ5Rn1cIixEc3Ryb2s6XCJcXHUwMTEwXCIsRU5HOlwiXFx1MDE0QVwiLEVUSDpcIlxceEQwXCIsRWFjdXRlOlwiXFx4QzlcIixFY2Fyb246XCJcXHUwMTFBXCIsRWNpcmM6XCJcXHhDQVwiLEVjeTpcIlxcdTA0MkRcIixFZG90OlwiXFx1MDExNlwiLEVmcjpcIlxcdXsxRDUwOH1cIixFZ3JhdmU6XCJcXHhDOFwiLEVsZW1lbnQ6XCJcXHUyMjA4XCIsRW1hY3I6XCJcXHUwMTEyXCIsRW1wdHlTbWFsbFNxdWFyZTpcIlxcdTI1RkJcIixFbXB0eVZlcnlTbWFsbFNxdWFyZTpcIlxcdTI1QUJcIixFb2dvbjpcIlxcdTAxMThcIixFb3BmOlwiXFx1ezFENTNDfVwiLEVwc2lsb246XCJcXHUwMzk1XCIsRXF1YWw6XCJcXHUyQTc1XCIsRXF1YWxUaWxkZTpcIlxcdTIyNDJcIixFcXVpbGlicml1bTpcIlxcdTIxQ0NcIixFc2NyOlwiXFx1MjEzMFwiLEVzaW06XCJcXHUyQTczXCIsRXRhOlwiXFx1MDM5N1wiLEV1bWw6XCJcXHhDQlwiLEV4aXN0czpcIlxcdTIyMDNcIixFeHBvbmVudGlhbEU6XCJcXHUyMTQ3XCIsRmN5OlwiXFx1MDQyNFwiLEZmcjpcIlxcdXsxRDUwOX1cIixGaWxsZWRTbWFsbFNxdWFyZTpcIlxcdTI1RkNcIixGaWxsZWRWZXJ5U21hbGxTcXVhcmU6XCJcXHUyNUFBXCIsRm9wZjpcIlxcdXsxRDUzRH1cIixGb3JBbGw6XCJcXHUyMjAwXCIsRm91cmllcnRyZjpcIlxcdTIxMzFcIixGc2NyOlwiXFx1MjEzMVwiLEdKY3k6XCJcXHUwNDAzXCIsR1Q6XCI+XCIsR2FtbWE6XCJcXHUwMzkzXCIsR2FtbWFkOlwiXFx1MDNEQ1wiLEdicmV2ZTpcIlxcdTAxMUVcIixHY2VkaWw6XCJcXHUwMTIyXCIsR2NpcmM6XCJcXHUwMTFDXCIsR2N5OlwiXFx1MDQxM1wiLEdkb3Q6XCJcXHUwMTIwXCIsR2ZyOlwiXFx1ezFENTBBfVwiLEdnOlwiXFx1MjJEOVwiLEdvcGY6XCJcXHV7MUQ1M0V9XCIsR3JlYXRlckVxdWFsOlwiXFx1MjI2NVwiLEdyZWF0ZXJFcXVhbExlc3M6XCJcXHUyMkRCXCIsR3JlYXRlckZ1bGxFcXVhbDpcIlxcdTIyNjdcIixHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcIixHcmVhdGVyTGVzczpcIlxcdTIyNzdcIixHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcIixHcmVhdGVyVGlsZGU6XCJcXHUyMjczXCIsR3NjcjpcIlxcdXsxRDRBMn1cIixHdDpcIlxcdTIyNkJcIixIQVJEY3k6XCJcXHUwNDJBXCIsSGFjZWs6XCJcXHUwMkM3XCIsSGF0OlwiXlwiLEhjaXJjOlwiXFx1MDEyNFwiLEhmcjpcIlxcdTIxMENcIixIaWxiZXJ0U3BhY2U6XCJcXHUyMTBCXCIsSG9wZjpcIlxcdTIxMERcIixIb3Jpem9udGFsTGluZTpcIlxcdTI1MDBcIixIc2NyOlwiXFx1MjEwQlwiLEhzdHJvazpcIlxcdTAxMjZcIixIdW1wRG93bkh1bXA6XCJcXHUyMjRFXCIsSHVtcEVxdWFsOlwiXFx1MjI0RlwiLElFY3k6XCJcXHUwNDE1XCIsSUpsaWc6XCJcXHUwMTMyXCIsSU9jeTpcIlxcdTA0MDFcIixJYWN1dGU6XCJcXHhDRFwiLEljaXJjOlwiXFx4Q0VcIixJY3k6XCJcXHUwNDE4XCIsSWRvdDpcIlxcdTAxMzBcIixJZnI6XCJcXHUyMTExXCIsSWdyYXZlOlwiXFx4Q0NcIixJbTpcIlxcdTIxMTFcIixJbWFjcjpcIlxcdTAxMkFcIixJbWFnaW5hcnlJOlwiXFx1MjE0OFwiLEltcGxpZXM6XCJcXHUyMUQyXCIsSW50OlwiXFx1MjIyQ1wiLEludGVncmFsOlwiXFx1MjIyQlwiLEludGVyc2VjdGlvbjpcIlxcdTIyQzJcIixJbnZpc2libGVDb21tYTpcIlxcdTIwNjNcIixJbnZpc2libGVUaW1lczpcIlxcdTIwNjJcIixJb2dvbjpcIlxcdTAxMkVcIixJb3BmOlwiXFx1ezFENTQwfVwiLElvdGE6XCJcXHUwMzk5XCIsSXNjcjpcIlxcdTIxMTBcIixJdGlsZGU6XCJcXHUwMTI4XCIsSXVrY3k6XCJcXHUwNDA2XCIsSXVtbDpcIlxceENGXCIsSmNpcmM6XCJcXHUwMTM0XCIsSmN5OlwiXFx1MDQxOVwiLEpmcjpcIlxcdXsxRDUwRH1cIixKb3BmOlwiXFx1ezFENTQxfVwiLEpzY3I6XCJcXHV7MUQ0QTV9XCIsSnNlcmN5OlwiXFx1MDQwOFwiLEp1a2N5OlwiXFx1MDQwNFwiLEtIY3k6XCJcXHUwNDI1XCIsS0pjeTpcIlxcdTA0MENcIixLYXBwYTpcIlxcdTAzOUFcIixLY2VkaWw6XCJcXHUwMTM2XCIsS2N5OlwiXFx1MDQxQVwiLEtmcjpcIlxcdXsxRDUwRX1cIixLb3BmOlwiXFx1ezFENTQyfVwiLEtzY3I6XCJcXHV7MUQ0QTZ9XCIsTEpjeTpcIlxcdTA0MDlcIixMVDpcIjxcIixMYWN1dGU6XCJcXHUwMTM5XCIsTGFtYmRhOlwiXFx1MDM5QlwiLExhbmc6XCJcXHUyN0VBXCIsTGFwbGFjZXRyZjpcIlxcdTIxMTJcIixMYXJyOlwiXFx1MjE5RVwiLExjYXJvbjpcIlxcdTAxM0RcIixMY2VkaWw6XCJcXHUwMTNCXCIsTGN5OlwiXFx1MDQxQlwiLExlZnRBbmdsZUJyYWNrZXQ6XCJcXHUyN0U4XCIsTGVmdEFycm93OlwiXFx1MjE5MFwiLExlZnRBcnJvd0JhcjpcIlxcdTIxRTRcIixMZWZ0QXJyb3dSaWdodEFycm93OlwiXFx1MjFDNlwiLExlZnRDZWlsaW5nOlwiXFx1MjMwOFwiLExlZnREb3VibGVCcmFja2V0OlwiXFx1MjdFNlwiLExlZnREb3duVGVlVmVjdG9yOlwiXFx1Mjk2MVwiLExlZnREb3duVmVjdG9yOlwiXFx1MjFDM1wiLExlZnREb3duVmVjdG9yQmFyOlwiXFx1Mjk1OVwiLExlZnRGbG9vcjpcIlxcdTIzMEFcIixMZWZ0UmlnaHRBcnJvdzpcIlxcdTIxOTRcIixMZWZ0UmlnaHRWZWN0b3I6XCJcXHUyOTRFXCIsTGVmdFRlZTpcIlxcdTIyQTNcIixMZWZ0VGVlQXJyb3c6XCJcXHUyMUE0XCIsTGVmdFRlZVZlY3RvcjpcIlxcdTI5NUFcIixMZWZ0VHJpYW5nbGU6XCJcXHUyMkIyXCIsTGVmdFRyaWFuZ2xlQmFyOlwiXFx1MjlDRlwiLExlZnRUcmlhbmdsZUVxdWFsOlwiXFx1MjJCNFwiLExlZnRVcERvd25WZWN0b3I6XCJcXHUyOTUxXCIsTGVmdFVwVGVlVmVjdG9yOlwiXFx1Mjk2MFwiLExlZnRVcFZlY3RvcjpcIlxcdTIxQkZcIixMZWZ0VXBWZWN0b3JCYXI6XCJcXHUyOTU4XCIsTGVmdFZlY3RvcjpcIlxcdTIxQkNcIixMZWZ0VmVjdG9yQmFyOlwiXFx1Mjk1MlwiLExlZnRhcnJvdzpcIlxcdTIxRDBcIixMZWZ0cmlnaHRhcnJvdzpcIlxcdTIxRDRcIixMZXNzRXF1YWxHcmVhdGVyOlwiXFx1MjJEQVwiLExlc3NGdWxsRXF1YWw6XCJcXHUyMjY2XCIsTGVzc0dyZWF0ZXI6XCJcXHUyMjc2XCIsTGVzc0xlc3M6XCJcXHUyQUExXCIsTGVzc1NsYW50RXF1YWw6XCJcXHUyQTdEXCIsTGVzc1RpbGRlOlwiXFx1MjI3MlwiLExmcjpcIlxcdXsxRDUwRn1cIixMbDpcIlxcdTIyRDhcIixMbGVmdGFycm93OlwiXFx1MjFEQVwiLExtaWRvdDpcIlxcdTAxM0ZcIixMb25nTGVmdEFycm93OlwiXFx1MjdGNVwiLExvbmdMZWZ0UmlnaHRBcnJvdzpcIlxcdTI3RjdcIixMb25nUmlnaHRBcnJvdzpcIlxcdTI3RjZcIixMb25nbGVmdGFycm93OlwiXFx1MjdGOFwiLExvbmdsZWZ0cmlnaHRhcnJvdzpcIlxcdTI3RkFcIixMb25ncmlnaHRhcnJvdzpcIlxcdTI3RjlcIixMb3BmOlwiXFx1ezFENTQzfVwiLExvd2VyTGVmdEFycm93OlwiXFx1MjE5OVwiLExvd2VyUmlnaHRBcnJvdzpcIlxcdTIxOThcIixMc2NyOlwiXFx1MjExMlwiLExzaDpcIlxcdTIxQjBcIixMc3Ryb2s6XCJcXHUwMTQxXCIsTHQ6XCJcXHUyMjZBXCIsTWFwOlwiXFx1MjkwNVwiLE1jeTpcIlxcdTA0MUNcIixNZWRpdW1TcGFjZTpcIlxcdTIwNUZcIixNZWxsaW50cmY6XCJcXHUyMTMzXCIsTWZyOlwiXFx1ezFENTEwfVwiLE1pbnVzUGx1czpcIlxcdTIyMTNcIixNb3BmOlwiXFx1ezFENTQ0fVwiLE1zY3I6XCJcXHUyMTMzXCIsTXU6XCJcXHUwMzlDXCIsTkpjeTpcIlxcdTA0MEFcIixOYWN1dGU6XCJcXHUwMTQzXCIsTmNhcm9uOlwiXFx1MDE0N1wiLE5jZWRpbDpcIlxcdTAxNDVcIixOY3k6XCJcXHUwNDFEXCIsTmVnYXRpdmVNZWRpdW1TcGFjZTpcIlxcdTIwMEJcIixOZWdhdGl2ZVRoaWNrU3BhY2U6XCJcXHUyMDBCXCIsTmVnYXRpdmVUaGluU3BhY2U6XCJcXHUyMDBCXCIsTmVnYXRpdmVWZXJ5VGhpblNwYWNlOlwiXFx1MjAwQlwiLE5lc3RlZEdyZWF0ZXJHcmVhdGVyOlwiXFx1MjI2QlwiLE5lc3RlZExlc3NMZXNzOlwiXFx1MjI2QVwiLE5ld0xpbmU6YFxuYCxOZnI6XCJcXHV7MUQ1MTF9XCIsTm9CcmVhazpcIlxcdTIwNjBcIixOb25CcmVha2luZ1NwYWNlOlwiXFx4QTBcIixOb3BmOlwiXFx1MjExNVwiLE5vdDpcIlxcdTJBRUNcIixOb3RDb25ncnVlbnQ6XCJcXHUyMjYyXCIsTm90Q3VwQ2FwOlwiXFx1MjI2RFwiLE5vdERvdWJsZVZlcnRpY2FsQmFyOlwiXFx1MjIyNlwiLE5vdEVsZW1lbnQ6XCJcXHUyMjA5XCIsTm90RXF1YWw6XCJcXHUyMjYwXCIsTm90RXF1YWxUaWxkZTpcIlxcdTIyNDJcXHUwMzM4XCIsTm90RXhpc3RzOlwiXFx1MjIwNFwiLE5vdEdyZWF0ZXI6XCJcXHUyMjZGXCIsTm90R3JlYXRlckVxdWFsOlwiXFx1MjI3MVwiLE5vdEdyZWF0ZXJGdWxsRXF1YWw6XCJcXHUyMjY3XFx1MDMzOFwiLE5vdEdyZWF0ZXJHcmVhdGVyOlwiXFx1MjI2QlxcdTAzMzhcIixOb3RHcmVhdGVyTGVzczpcIlxcdTIyNzlcIixOb3RHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcXHUwMzM4XCIsTm90R3JlYXRlclRpbGRlOlwiXFx1MjI3NVwiLE5vdEh1bXBEb3duSHVtcDpcIlxcdTIyNEVcXHUwMzM4XCIsTm90SHVtcEVxdWFsOlwiXFx1MjI0RlxcdTAzMzhcIixOb3RMZWZ0VHJpYW5nbGU6XCJcXHUyMkVBXCIsTm90TGVmdFRyaWFuZ2xlQmFyOlwiXFx1MjlDRlxcdTAzMzhcIixOb3RMZWZ0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRUNcIixOb3RMZXNzOlwiXFx1MjI2RVwiLE5vdExlc3NFcXVhbDpcIlxcdTIyNzBcIixOb3RMZXNzR3JlYXRlcjpcIlxcdTIyNzhcIixOb3RMZXNzTGVzczpcIlxcdTIyNkFcXHUwMzM4XCIsTm90TGVzc1NsYW50RXF1YWw6XCJcXHUyQTdEXFx1MDMzOFwiLE5vdExlc3NUaWxkZTpcIlxcdTIyNzRcIixOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcXHUwMzM4XCIsTm90TmVzdGVkTGVzc0xlc3M6XCJcXHUyQUExXFx1MDMzOFwiLE5vdFByZWNlZGVzOlwiXFx1MjI4MFwiLE5vdFByZWNlZGVzRXF1YWw6XCJcXHUyQUFGXFx1MDMzOFwiLE5vdFByZWNlZGVzU2xhbnRFcXVhbDpcIlxcdTIyRTBcIixOb3RSZXZlcnNlRWxlbWVudDpcIlxcdTIyMENcIixOb3RSaWdodFRyaWFuZ2xlOlwiXFx1MjJFQlwiLE5vdFJpZ2h0VHJpYW5nbGVCYXI6XCJcXHUyOUQwXFx1MDMzOFwiLE5vdFJpZ2h0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRURcIixOb3RTcXVhcmVTdWJzZXQ6XCJcXHUyMjhGXFx1MDMzOFwiLE5vdFNxdWFyZVN1YnNldEVxdWFsOlwiXFx1MjJFMlwiLE5vdFNxdWFyZVN1cGVyc2V0OlwiXFx1MjI5MFxcdTAzMzhcIixOb3RTcXVhcmVTdXBlcnNldEVxdWFsOlwiXFx1MjJFM1wiLE5vdFN1YnNldDpcIlxcdTIyODJcXHUyMEQyXCIsTm90U3Vic2V0RXF1YWw6XCJcXHUyMjg4XCIsTm90U3VjY2VlZHM6XCJcXHUyMjgxXCIsTm90U3VjY2VlZHNFcXVhbDpcIlxcdTJBQjBcXHUwMzM4XCIsTm90U3VjY2VlZHNTbGFudEVxdWFsOlwiXFx1MjJFMVwiLE5vdFN1Y2NlZWRzVGlsZGU6XCJcXHUyMjdGXFx1MDMzOFwiLE5vdFN1cGVyc2V0OlwiXFx1MjI4M1xcdTIwRDJcIixOb3RTdXBlcnNldEVxdWFsOlwiXFx1MjI4OVwiLE5vdFRpbGRlOlwiXFx1MjI0MVwiLE5vdFRpbGRlRXF1YWw6XCJcXHUyMjQ0XCIsTm90VGlsZGVGdWxsRXF1YWw6XCJcXHUyMjQ3XCIsTm90VGlsZGVUaWxkZTpcIlxcdTIyNDlcIixOb3RWZXJ0aWNhbEJhcjpcIlxcdTIyMjRcIixOc2NyOlwiXFx1ezFENEE5fVwiLE50aWxkZTpcIlxceEQxXCIsTnU6XCJcXHUwMzlEXCIsT0VsaWc6XCJcXHUwMTUyXCIsT2FjdXRlOlwiXFx4RDNcIixPY2lyYzpcIlxceEQ0XCIsT2N5OlwiXFx1MDQxRVwiLE9kYmxhYzpcIlxcdTAxNTBcIixPZnI6XCJcXHV7MUQ1MTJ9XCIsT2dyYXZlOlwiXFx4RDJcIixPbWFjcjpcIlxcdTAxNENcIixPbWVnYTpcIlxcdTAzQTlcIixPbWljcm9uOlwiXFx1MDM5RlwiLE9vcGY6XCJcXHV7MUQ1NDZ9XCIsT3BlbkN1cmx5RG91YmxlUXVvdGU6XCJcXHUyMDFDXCIsT3BlbkN1cmx5UXVvdGU6XCJcXHUyMDE4XCIsT3I6XCJcXHUyQTU0XCIsT3NjcjpcIlxcdXsxRDRBQX1cIixPc2xhc2g6XCJcXHhEOFwiLE90aWxkZTpcIlxceEQ1XCIsT3RpbWVzOlwiXFx1MkEzN1wiLE91bWw6XCJcXHhENlwiLE92ZXJCYXI6XCJcXHUyMDNFXCIsT3ZlckJyYWNlOlwiXFx1MjNERVwiLE92ZXJCcmFja2V0OlwiXFx1MjNCNFwiLE92ZXJQYXJlbnRoZXNpczpcIlxcdTIzRENcIixQYXJ0aWFsRDpcIlxcdTIyMDJcIixQY3k6XCJcXHUwNDFGXCIsUGZyOlwiXFx1ezFENTEzfVwiLFBoaTpcIlxcdTAzQTZcIixQaTpcIlxcdTAzQTBcIixQbHVzTWludXM6XCJcXHhCMVwiLFBvaW5jYXJlcGxhbmU6XCJcXHUyMTBDXCIsUG9wZjpcIlxcdTIxMTlcIixQcjpcIlxcdTJBQkJcIixQcmVjZWRlczpcIlxcdTIyN0FcIixQcmVjZWRlc0VxdWFsOlwiXFx1MkFBRlwiLFByZWNlZGVzU2xhbnRFcXVhbDpcIlxcdTIyN0NcIixQcmVjZWRlc1RpbGRlOlwiXFx1MjI3RVwiLFByaW1lOlwiXFx1MjAzM1wiLFByb2R1Y3Q6XCJcXHUyMjBGXCIsUHJvcG9ydGlvbjpcIlxcdTIyMzdcIixQcm9wb3J0aW9uYWw6XCJcXHUyMjFEXCIsUHNjcjpcIlxcdXsxRDRBQn1cIixQc2k6XCJcXHUwM0E4XCIsUVVPVDonXCInLFFmcjpcIlxcdXsxRDUxNH1cIixRb3BmOlwiXFx1MjExQVwiLFFzY3I6XCJcXHV7MUQ0QUN9XCIsUkJhcnI6XCJcXHUyOTEwXCIsUkVHOlwiXFx4QUVcIixSYWN1dGU6XCJcXHUwMTU0XCIsUmFuZzpcIlxcdTI3RUJcIixSYXJyOlwiXFx1MjFBMFwiLFJhcnJ0bDpcIlxcdTI5MTZcIixSY2Fyb246XCJcXHUwMTU4XCIsUmNlZGlsOlwiXFx1MDE1NlwiLFJjeTpcIlxcdTA0MjBcIixSZTpcIlxcdTIxMUNcIixSZXZlcnNlRWxlbWVudDpcIlxcdTIyMEJcIixSZXZlcnNlRXF1aWxpYnJpdW06XCJcXHUyMUNCXCIsUmV2ZXJzZVVwRXF1aWxpYnJpdW06XCJcXHUyOTZGXCIsUmZyOlwiXFx1MjExQ1wiLFJobzpcIlxcdTAzQTFcIixSaWdodEFuZ2xlQnJhY2tldDpcIlxcdTI3RTlcIixSaWdodEFycm93OlwiXFx1MjE5MlwiLFJpZ2h0QXJyb3dCYXI6XCJcXHUyMUU1XCIsUmlnaHRBcnJvd0xlZnRBcnJvdzpcIlxcdTIxQzRcIixSaWdodENlaWxpbmc6XCJcXHUyMzA5XCIsUmlnaHREb3VibGVCcmFja2V0OlwiXFx1MjdFN1wiLFJpZ2h0RG93blRlZVZlY3RvcjpcIlxcdTI5NURcIixSaWdodERvd25WZWN0b3I6XCJcXHUyMUMyXCIsUmlnaHREb3duVmVjdG9yQmFyOlwiXFx1Mjk1NVwiLFJpZ2h0Rmxvb3I6XCJcXHUyMzBCXCIsUmlnaHRUZWU6XCJcXHUyMkEyXCIsUmlnaHRUZWVBcnJvdzpcIlxcdTIxQTZcIixSaWdodFRlZVZlY3RvcjpcIlxcdTI5NUJcIixSaWdodFRyaWFuZ2xlOlwiXFx1MjJCM1wiLFJpZ2h0VHJpYW5nbGVCYXI6XCJcXHUyOUQwXCIsUmlnaHRUcmlhbmdsZUVxdWFsOlwiXFx1MjJCNVwiLFJpZ2h0VXBEb3duVmVjdG9yOlwiXFx1Mjk0RlwiLFJpZ2h0VXBUZWVWZWN0b3I6XCJcXHUyOTVDXCIsUmlnaHRVcFZlY3RvcjpcIlxcdTIxQkVcIixSaWdodFVwVmVjdG9yQmFyOlwiXFx1Mjk1NFwiLFJpZ2h0VmVjdG9yOlwiXFx1MjFDMFwiLFJpZ2h0VmVjdG9yQmFyOlwiXFx1Mjk1M1wiLFJpZ2h0YXJyb3c6XCJcXHUyMUQyXCIsUm9wZjpcIlxcdTIxMURcIixSb3VuZEltcGxpZXM6XCJcXHUyOTcwXCIsUnJpZ2h0YXJyb3c6XCJcXHUyMURCXCIsUnNjcjpcIlxcdTIxMUJcIixSc2g6XCJcXHUyMUIxXCIsUnVsZURlbGF5ZWQ6XCJcXHUyOUY0XCIsU0hDSGN5OlwiXFx1MDQyOVwiLFNIY3k6XCJcXHUwNDI4XCIsU09GVGN5OlwiXFx1MDQyQ1wiLFNhY3V0ZTpcIlxcdTAxNUFcIixTYzpcIlxcdTJBQkNcIixTY2Fyb246XCJcXHUwMTYwXCIsU2NlZGlsOlwiXFx1MDE1RVwiLFNjaXJjOlwiXFx1MDE1Q1wiLFNjeTpcIlxcdTA0MjFcIixTZnI6XCJcXHV7MUQ1MTZ9XCIsU2hvcnREb3duQXJyb3c6XCJcXHUyMTkzXCIsU2hvcnRMZWZ0QXJyb3c6XCJcXHUyMTkwXCIsU2hvcnRSaWdodEFycm93OlwiXFx1MjE5MlwiLFNob3J0VXBBcnJvdzpcIlxcdTIxOTFcIixTaWdtYTpcIlxcdTAzQTNcIixTbWFsbENpcmNsZTpcIlxcdTIyMThcIixTb3BmOlwiXFx1ezFENTRBfVwiLFNxcnQ6XCJcXHUyMjFBXCIsU3F1YXJlOlwiXFx1MjVBMVwiLFNxdWFyZUludGVyc2VjdGlvbjpcIlxcdTIyOTNcIixTcXVhcmVTdWJzZXQ6XCJcXHUyMjhGXCIsU3F1YXJlU3Vic2V0RXF1YWw6XCJcXHUyMjkxXCIsU3F1YXJlU3VwZXJzZXQ6XCJcXHUyMjkwXCIsU3F1YXJlU3VwZXJzZXRFcXVhbDpcIlxcdTIyOTJcIixTcXVhcmVVbmlvbjpcIlxcdTIyOTRcIixTc2NyOlwiXFx1ezFENEFFfVwiLFN0YXI6XCJcXHUyMkM2XCIsU3ViOlwiXFx1MjJEMFwiLFN1YnNldDpcIlxcdTIyRDBcIixTdWJzZXRFcXVhbDpcIlxcdTIyODZcIixTdWNjZWVkczpcIlxcdTIyN0JcIixTdWNjZWVkc0VxdWFsOlwiXFx1MkFCMFwiLFN1Y2NlZWRzU2xhbnRFcXVhbDpcIlxcdTIyN0RcIixTdWNjZWVkc1RpbGRlOlwiXFx1MjI3RlwiLFN1Y2hUaGF0OlwiXFx1MjIwQlwiLFN1bTpcIlxcdTIyMTFcIixTdXA6XCJcXHUyMkQxXCIsU3VwZXJzZXQ6XCJcXHUyMjgzXCIsU3VwZXJzZXRFcXVhbDpcIlxcdTIyODdcIixTdXBzZXQ6XCJcXHUyMkQxXCIsVEhPUk46XCJcXHhERVwiLFRSQURFOlwiXFx1MjEyMlwiLFRTSGN5OlwiXFx1MDQwQlwiLFRTY3k6XCJcXHUwNDI2XCIsVGFiOlwiXHRcIixUYXU6XCJcXHUwM0E0XCIsVGNhcm9uOlwiXFx1MDE2NFwiLFRjZWRpbDpcIlxcdTAxNjJcIixUY3k6XCJcXHUwNDIyXCIsVGZyOlwiXFx1ezFENTE3fVwiLFRoZXJlZm9yZTpcIlxcdTIyMzRcIixUaGV0YTpcIlxcdTAzOThcIixUaGlja1NwYWNlOlwiXFx1MjA1RlxcdTIwMEFcIixUaGluU3BhY2U6XCJcXHUyMDA5XCIsVGlsZGU6XCJcXHUyMjNDXCIsVGlsZGVFcXVhbDpcIlxcdTIyNDNcIixUaWxkZUZ1bGxFcXVhbDpcIlxcdTIyNDVcIixUaWxkZVRpbGRlOlwiXFx1MjI0OFwiLFRvcGY6XCJcXHV7MUQ1NEJ9XCIsVHJpcGxlRG90OlwiXFx1MjBEQlwiLFRzY3I6XCJcXHV7MUQ0QUZ9XCIsVHN0cm9rOlwiXFx1MDE2NlwiLFVhY3V0ZTpcIlxceERBXCIsVWFycjpcIlxcdTIxOUZcIixVYXJyb2NpcjpcIlxcdTI5NDlcIixVYnJjeTpcIlxcdTA0MEVcIixVYnJldmU6XCJcXHUwMTZDXCIsVWNpcmM6XCJcXHhEQlwiLFVjeTpcIlxcdTA0MjNcIixVZGJsYWM6XCJcXHUwMTcwXCIsVWZyOlwiXFx1ezFENTE4fVwiLFVncmF2ZTpcIlxceEQ5XCIsVW1hY3I6XCJcXHUwMTZBXCIsVW5kZXJCYXI6XCJfXCIsVW5kZXJCcmFjZTpcIlxcdTIzREZcIixVbmRlckJyYWNrZXQ6XCJcXHUyM0I1XCIsVW5kZXJQYXJlbnRoZXNpczpcIlxcdTIzRERcIixVbmlvbjpcIlxcdTIyQzNcIixVbmlvblBsdXM6XCJcXHUyMjhFXCIsVW9nb246XCJcXHUwMTcyXCIsVW9wZjpcIlxcdXsxRDU0Q31cIixVcEFycm93OlwiXFx1MjE5MVwiLFVwQXJyb3dCYXI6XCJcXHUyOTEyXCIsVXBBcnJvd0Rvd25BcnJvdzpcIlxcdTIxQzVcIixVcERvd25BcnJvdzpcIlxcdTIxOTVcIixVcEVxdWlsaWJyaXVtOlwiXFx1Mjk2RVwiLFVwVGVlOlwiXFx1MjJBNVwiLFVwVGVlQXJyb3c6XCJcXHUyMUE1XCIsVXBhcnJvdzpcIlxcdTIxRDFcIixVcGRvd25hcnJvdzpcIlxcdTIxRDVcIixVcHBlckxlZnRBcnJvdzpcIlxcdTIxOTZcIixVcHBlclJpZ2h0QXJyb3c6XCJcXHUyMTk3XCIsVXBzaTpcIlxcdTAzRDJcIixVcHNpbG9uOlwiXFx1MDNBNVwiLFVyaW5nOlwiXFx1MDE2RVwiLFVzY3I6XCJcXHV7MUQ0QjB9XCIsVXRpbGRlOlwiXFx1MDE2OFwiLFV1bWw6XCJcXHhEQ1wiLFZEYXNoOlwiXFx1MjJBQlwiLFZiYXI6XCJcXHUyQUVCXCIsVmN5OlwiXFx1MDQxMlwiLFZkYXNoOlwiXFx1MjJBOVwiLFZkYXNobDpcIlxcdTJBRTZcIixWZWU6XCJcXHUyMkMxXCIsVmVyYmFyOlwiXFx1MjAxNlwiLFZlcnQ6XCJcXHUyMDE2XCIsVmVydGljYWxCYXI6XCJcXHUyMjIzXCIsVmVydGljYWxMaW5lOlwifFwiLFZlcnRpY2FsU2VwYXJhdG9yOlwiXFx1Mjc1OFwiLFZlcnRpY2FsVGlsZGU6XCJcXHUyMjQwXCIsVmVyeVRoaW5TcGFjZTpcIlxcdTIwMEFcIixWZnI6XCJcXHV7MUQ1MTl9XCIsVm9wZjpcIlxcdXsxRDU0RH1cIixWc2NyOlwiXFx1ezFENEIxfVwiLFZ2ZGFzaDpcIlxcdTIyQUFcIixXY2lyYzpcIlxcdTAxNzRcIixXZWRnZTpcIlxcdTIyQzBcIixXZnI6XCJcXHV7MUQ1MUF9XCIsV29wZjpcIlxcdXsxRDU0RX1cIixXc2NyOlwiXFx1ezFENEIyfVwiLFhmcjpcIlxcdXsxRDUxQn1cIixYaTpcIlxcdTAzOUVcIixYb3BmOlwiXFx1ezFENTRGfVwiLFhzY3I6XCJcXHV7MUQ0QjN9XCIsWUFjeTpcIlxcdTA0MkZcIixZSWN5OlwiXFx1MDQwN1wiLFlVY3k6XCJcXHUwNDJFXCIsWWFjdXRlOlwiXFx4RERcIixZY2lyYzpcIlxcdTAxNzZcIixZY3k6XCJcXHUwNDJCXCIsWWZyOlwiXFx1ezFENTFDfVwiLFlvcGY6XCJcXHV7MUQ1NTB9XCIsWXNjcjpcIlxcdXsxRDRCNH1cIixZdW1sOlwiXFx1MDE3OFwiLFpIY3k6XCJcXHUwNDE2XCIsWmFjdXRlOlwiXFx1MDE3OVwiLFpjYXJvbjpcIlxcdTAxN0RcIixaY3k6XCJcXHUwNDE3XCIsWmRvdDpcIlxcdTAxN0JcIixaZXJvV2lkdGhTcGFjZTpcIlxcdTIwMEJcIixaZXRhOlwiXFx1MDM5NlwiLFpmcjpcIlxcdTIxMjhcIixab3BmOlwiXFx1MjEyNFwiLFpzY3I6XCJcXHV7MUQ0QjV9XCIsYWFjdXRlOlwiXFx4RTFcIixhYnJldmU6XCJcXHUwMTAzXCIsYWM6XCJcXHUyMjNFXCIsYWNFOlwiXFx1MjIzRVxcdTAzMzNcIixhY2Q6XCJcXHUyMjNGXCIsYWNpcmM6XCJcXHhFMlwiLGFjdXRlOlwiXFx4QjRcIixhY3k6XCJcXHUwNDMwXCIsYWVsaWc6XCJcXHhFNlwiLGFmOlwiXFx1MjA2MVwiLGFmcjpcIlxcdXsxRDUxRX1cIixhZ3JhdmU6XCJcXHhFMFwiLGFsZWZzeW06XCJcXHUyMTM1XCIsYWxlcGg6XCJcXHUyMTM1XCIsYWxwaGE6XCJcXHUwM0IxXCIsYW1hY3I6XCJcXHUwMTAxXCIsYW1hbGc6XCJcXHUyQTNGXCIsYW1wOlwiJlwiLGFuZDpcIlxcdTIyMjdcIixhbmRhbmQ6XCJcXHUyQTU1XCIsYW5kZDpcIlxcdTJBNUNcIixhbmRzbG9wZTpcIlxcdTJBNThcIixhbmR2OlwiXFx1MkE1QVwiLGFuZzpcIlxcdTIyMjBcIixhbmdlOlwiXFx1MjlBNFwiLGFuZ2xlOlwiXFx1MjIyMFwiLGFuZ21zZDpcIlxcdTIyMjFcIixhbmdtc2RhYTpcIlxcdTI5QThcIixhbmdtc2RhYjpcIlxcdTI5QTlcIixhbmdtc2RhYzpcIlxcdTI5QUFcIixhbmdtc2RhZDpcIlxcdTI5QUJcIixhbmdtc2RhZTpcIlxcdTI5QUNcIixhbmdtc2RhZjpcIlxcdTI5QURcIixhbmdtc2RhZzpcIlxcdTI5QUVcIixhbmdtc2RhaDpcIlxcdTI5QUZcIixhbmdydDpcIlxcdTIyMUZcIixhbmdydHZiOlwiXFx1MjJCRVwiLGFuZ3J0dmJkOlwiXFx1Mjk5RFwiLGFuZ3NwaDpcIlxcdTIyMjJcIixhbmdzdDpcIlxceEM1XCIsYW5nemFycjpcIlxcdTIzN0NcIixhb2dvbjpcIlxcdTAxMDVcIixhb3BmOlwiXFx1ezFENTUyfVwiLGFwOlwiXFx1MjI0OFwiLGFwRTpcIlxcdTJBNzBcIixhcGFjaXI6XCJcXHUyQTZGXCIsYXBlOlwiXFx1MjI0QVwiLGFwaWQ6XCJcXHUyMjRCXCIsYXBvczpcIidcIixhcHByb3g6XCJcXHUyMjQ4XCIsYXBwcm94ZXE6XCJcXHUyMjRBXCIsYXJpbmc6XCJcXHhFNVwiLGFzY3I6XCJcXHV7MUQ0QjZ9XCIsYXN0OlwiKlwiLGFzeW1wOlwiXFx1MjI0OFwiLGFzeW1wZXE6XCJcXHUyMjREXCIsYXRpbGRlOlwiXFx4RTNcIixhdW1sOlwiXFx4RTRcIixhd2NvbmludDpcIlxcdTIyMzNcIixhd2ludDpcIlxcdTJBMTFcIixiTm90OlwiXFx1MkFFRFwiLGJhY2tjb25nOlwiXFx1MjI0Q1wiLGJhY2tlcHNpbG9uOlwiXFx1MDNGNlwiLGJhY2twcmltZTpcIlxcdTIwMzVcIixiYWNrc2ltOlwiXFx1MjIzRFwiLGJhY2tzaW1lcTpcIlxcdTIyQ0RcIixiYXJ2ZWU6XCJcXHUyMkJEXCIsYmFyd2VkOlwiXFx1MjMwNVwiLGJhcndlZGdlOlwiXFx1MjMwNVwiLGJicms6XCJcXHUyM0I1XCIsYmJya3Ricms6XCJcXHUyM0I2XCIsYmNvbmc6XCJcXHUyMjRDXCIsYmN5OlwiXFx1MDQzMVwiLGJkcXVvOlwiXFx1MjAxRVwiLGJlY2F1czpcIlxcdTIyMzVcIixiZWNhdXNlOlwiXFx1MjIzNVwiLGJlbXB0eXY6XCJcXHUyOUIwXCIsYmVwc2k6XCJcXHUwM0Y2XCIsYmVybm91OlwiXFx1MjEyQ1wiLGJldGE6XCJcXHUwM0IyXCIsYmV0aDpcIlxcdTIxMzZcIixiZXR3ZWVuOlwiXFx1MjI2Q1wiLGJmcjpcIlxcdXsxRDUxRn1cIixiaWdjYXA6XCJcXHUyMkMyXCIsYmlnY2lyYzpcIlxcdTI1RUZcIixiaWdjdXA6XCJcXHUyMkMzXCIsYmlnb2RvdDpcIlxcdTJBMDBcIixiaWdvcGx1czpcIlxcdTJBMDFcIixiaWdvdGltZXM6XCJcXHUyQTAyXCIsYmlnc3FjdXA6XCJcXHUyQTA2XCIsYmlnc3RhcjpcIlxcdTI2MDVcIixiaWd0cmlhbmdsZWRvd246XCJcXHUyNUJEXCIsYmlndHJpYW5nbGV1cDpcIlxcdTI1QjNcIixiaWd1cGx1czpcIlxcdTJBMDRcIixiaWd2ZWU6XCJcXHUyMkMxXCIsYmlnd2VkZ2U6XCJcXHUyMkMwXCIsYmthcm93OlwiXFx1MjkwRFwiLGJsYWNrbG96ZW5nZTpcIlxcdTI5RUJcIixibGFja3NxdWFyZTpcIlxcdTI1QUFcIixibGFja3RyaWFuZ2xlOlwiXFx1MjVCNFwiLGJsYWNrdHJpYW5nbGVkb3duOlwiXFx1MjVCRVwiLGJsYWNrdHJpYW5nbGVsZWZ0OlwiXFx1MjVDMlwiLGJsYWNrdHJpYW5nbGVyaWdodDpcIlxcdTI1QjhcIixibGFuazpcIlxcdTI0MjNcIixibGsxMjpcIlxcdTI1OTJcIixibGsxNDpcIlxcdTI1OTFcIixibGszNDpcIlxcdTI1OTNcIixibG9jazpcIlxcdTI1ODhcIixibmU6XCI9XFx1MjBFNVwiLGJuZXF1aXY6XCJcXHUyMjYxXFx1MjBFNVwiLGJub3Q6XCJcXHUyMzEwXCIsYm9wZjpcIlxcdXsxRDU1M31cIixib3Q6XCJcXHUyMkE1XCIsYm90dG9tOlwiXFx1MjJBNVwiLGJvd3RpZTpcIlxcdTIyQzhcIixib3hETDpcIlxcdTI1NTdcIixib3hEUjpcIlxcdTI1NTRcIixib3hEbDpcIlxcdTI1NTZcIixib3hEcjpcIlxcdTI1NTNcIixib3hIOlwiXFx1MjU1MFwiLGJveEhEOlwiXFx1MjU2NlwiLGJveEhVOlwiXFx1MjU2OVwiLGJveEhkOlwiXFx1MjU2NFwiLGJveEh1OlwiXFx1MjU2N1wiLGJveFVMOlwiXFx1MjU1RFwiLGJveFVSOlwiXFx1MjU1QVwiLGJveFVsOlwiXFx1MjU1Q1wiLGJveFVyOlwiXFx1MjU1OVwiLGJveFY6XCJcXHUyNTUxXCIsYm94Vkg6XCJcXHUyNTZDXCIsYm94Vkw6XCJcXHUyNTYzXCIsYm94VlI6XCJcXHUyNTYwXCIsYm94Vmg6XCJcXHUyNTZCXCIsYm94Vmw6XCJcXHUyNTYyXCIsYm94VnI6XCJcXHUyNTVGXCIsYm94Ym94OlwiXFx1MjlDOVwiLGJveGRMOlwiXFx1MjU1NVwiLGJveGRSOlwiXFx1MjU1MlwiLGJveGRsOlwiXFx1MjUxMFwiLGJveGRyOlwiXFx1MjUwQ1wiLGJveGg6XCJcXHUyNTAwXCIsYm94aEQ6XCJcXHUyNTY1XCIsYm94aFU6XCJcXHUyNTY4XCIsYm94aGQ6XCJcXHUyNTJDXCIsYm94aHU6XCJcXHUyNTM0XCIsYm94bWludXM6XCJcXHUyMjlGXCIsYm94cGx1czpcIlxcdTIyOUVcIixib3h0aW1lczpcIlxcdTIyQTBcIixib3h1TDpcIlxcdTI1NUJcIixib3h1UjpcIlxcdTI1NThcIixib3h1bDpcIlxcdTI1MThcIixib3h1cjpcIlxcdTI1MTRcIixib3h2OlwiXFx1MjUwMlwiLGJveHZIOlwiXFx1MjU2QVwiLGJveHZMOlwiXFx1MjU2MVwiLGJveHZSOlwiXFx1MjU1RVwiLGJveHZoOlwiXFx1MjUzQ1wiLGJveHZsOlwiXFx1MjUyNFwiLGJveHZyOlwiXFx1MjUxQ1wiLGJwcmltZTpcIlxcdTIwMzVcIixicmV2ZTpcIlxcdTAyRDhcIixicnZiYXI6XCJcXHhBNlwiLGJzY3I6XCJcXHV7MUQ0Qjd9XCIsYnNlbWk6XCJcXHUyMDRGXCIsYnNpbTpcIlxcdTIyM0RcIixic2ltZTpcIlxcdTIyQ0RcIixic29sOlwiXFxcXFwiLGJzb2xiOlwiXFx1MjlDNVwiLGJzb2xoc3ViOlwiXFx1MjdDOFwiLGJ1bGw6XCJcXHUyMDIyXCIsYnVsbGV0OlwiXFx1MjAyMlwiLGJ1bXA6XCJcXHUyMjRFXCIsYnVtcEU6XCJcXHUyQUFFXCIsYnVtcGU6XCJcXHUyMjRGXCIsYnVtcGVxOlwiXFx1MjI0RlwiLGNhY3V0ZTpcIlxcdTAxMDdcIixjYXA6XCJcXHUyMjI5XCIsY2FwYW5kOlwiXFx1MkE0NFwiLGNhcGJyY3VwOlwiXFx1MkE0OVwiLGNhcGNhcDpcIlxcdTJBNEJcIixjYXBjdXA6XCJcXHUyQTQ3XCIsY2FwZG90OlwiXFx1MkE0MFwiLGNhcHM6XCJcXHUyMjI5XFx1RkUwMFwiLGNhcmV0OlwiXFx1MjA0MVwiLGNhcm9uOlwiXFx1MDJDN1wiLGNjYXBzOlwiXFx1MkE0RFwiLGNjYXJvbjpcIlxcdTAxMERcIixjY2VkaWw6XCJcXHhFN1wiLGNjaXJjOlwiXFx1MDEwOVwiLGNjdXBzOlwiXFx1MkE0Q1wiLGNjdXBzc206XCJcXHUyQTUwXCIsY2RvdDpcIlxcdTAxMEJcIixjZWRpbDpcIlxceEI4XCIsY2VtcHR5djpcIlxcdTI5QjJcIixjZW50OlwiXFx4QTJcIixjZW50ZXJkb3Q6XCJcXHhCN1wiLGNmcjpcIlxcdXsxRDUyMH1cIixjaGN5OlwiXFx1MDQ0N1wiLGNoZWNrOlwiXFx1MjcxM1wiLGNoZWNrbWFyazpcIlxcdTI3MTNcIixjaGk6XCJcXHUwM0M3XCIsY2lyOlwiXFx1MjVDQlwiLGNpckU6XCJcXHUyOUMzXCIsY2lyYzpcIlxcdTAyQzZcIixjaXJjZXE6XCJcXHUyMjU3XCIsY2lyY2xlYXJyb3dsZWZ0OlwiXFx1MjFCQVwiLGNpcmNsZWFycm93cmlnaHQ6XCJcXHUyMUJCXCIsY2lyY2xlZFI6XCJcXHhBRVwiLGNpcmNsZWRTOlwiXFx1MjRDOFwiLGNpcmNsZWRhc3Q6XCJcXHUyMjlCXCIsY2lyY2xlZGNpcmM6XCJcXHUyMjlBXCIsY2lyY2xlZGRhc2g6XCJcXHUyMjlEXCIsY2lyZTpcIlxcdTIyNTdcIixjaXJmbmludDpcIlxcdTJBMTBcIixjaXJtaWQ6XCJcXHUyQUVGXCIsY2lyc2NpcjpcIlxcdTI5QzJcIixjbHViczpcIlxcdTI2NjNcIixjbHVic3VpdDpcIlxcdTI2NjNcIixjb2xvbjpcIjpcIixjb2xvbmU6XCJcXHUyMjU0XCIsY29sb25lcTpcIlxcdTIyNTRcIixjb21tYTpcIixcIixjb21tYXQ6XCJAXCIsY29tcDpcIlxcdTIyMDFcIixjb21wZm46XCJcXHUyMjE4XCIsY29tcGxlbWVudDpcIlxcdTIyMDFcIixjb21wbGV4ZXM6XCJcXHUyMTAyXCIsY29uZzpcIlxcdTIyNDVcIixjb25nZG90OlwiXFx1MkE2RFwiLGNvbmludDpcIlxcdTIyMkVcIixjb3BmOlwiXFx1ezFENTU0fVwiLGNvcHJvZDpcIlxcdTIyMTBcIixjb3B5OlwiXFx4QTlcIixjb3B5c3I6XCJcXHUyMTE3XCIsY3JhcnI6XCJcXHUyMUI1XCIsY3Jvc3M6XCJcXHUyNzE3XCIsY3NjcjpcIlxcdXsxRDRCOH1cIixjc3ViOlwiXFx1MkFDRlwiLGNzdWJlOlwiXFx1MkFEMVwiLGNzdXA6XCJcXHUyQUQwXCIsY3N1cGU6XCJcXHUyQUQyXCIsY3Rkb3Q6XCJcXHUyMkVGXCIsY3VkYXJybDpcIlxcdTI5MzhcIixjdWRhcnJyOlwiXFx1MjkzNVwiLGN1ZXByOlwiXFx1MjJERVwiLGN1ZXNjOlwiXFx1MjJERlwiLGN1bGFycjpcIlxcdTIxQjZcIixjdWxhcnJwOlwiXFx1MjkzRFwiLGN1cDpcIlxcdTIyMkFcIixjdXBicmNhcDpcIlxcdTJBNDhcIixjdXBjYXA6XCJcXHUyQTQ2XCIsY3VwY3VwOlwiXFx1MkE0QVwiLGN1cGRvdDpcIlxcdTIyOERcIixjdXBvcjpcIlxcdTJBNDVcIixjdXBzOlwiXFx1MjIyQVxcdUZFMDBcIixjdXJhcnI6XCJcXHUyMUI3XCIsY3VyYXJybTpcIlxcdTI5M0NcIixjdXJseWVxcHJlYzpcIlxcdTIyREVcIixjdXJseWVxc3VjYzpcIlxcdTIyREZcIixjdXJseXZlZTpcIlxcdTIyQ0VcIixjdXJseXdlZGdlOlwiXFx1MjJDRlwiLGN1cnJlbjpcIlxceEE0XCIsY3VydmVhcnJvd2xlZnQ6XCJcXHUyMUI2XCIsY3VydmVhcnJvd3JpZ2h0OlwiXFx1MjFCN1wiLGN1dmVlOlwiXFx1MjJDRVwiLGN1d2VkOlwiXFx1MjJDRlwiLGN3Y29uaW50OlwiXFx1MjIzMlwiLGN3aW50OlwiXFx1MjIzMVwiLGN5bGN0eTpcIlxcdTIzMkRcIixkQXJyOlwiXFx1MjFEM1wiLGRIYXI6XCJcXHUyOTY1XCIsZGFnZ2VyOlwiXFx1MjAyMFwiLGRhbGV0aDpcIlxcdTIxMzhcIixkYXJyOlwiXFx1MjE5M1wiLGRhc2g6XCJcXHUyMDEwXCIsZGFzaHY6XCJcXHUyMkEzXCIsZGJrYXJvdzpcIlxcdTI5MEZcIixkYmxhYzpcIlxcdTAyRERcIixkY2Fyb246XCJcXHUwMTBGXCIsZGN5OlwiXFx1MDQzNFwiLGRkOlwiXFx1MjE0NlwiLGRkYWdnZXI6XCJcXHUyMDIxXCIsZGRhcnI6XCJcXHUyMUNBXCIsZGRvdHNlcTpcIlxcdTJBNzdcIixkZWc6XCJcXHhCMFwiLGRlbHRhOlwiXFx1MDNCNFwiLGRlbXB0eXY6XCJcXHUyOUIxXCIsZGZpc2h0OlwiXFx1Mjk3RlwiLGRmcjpcIlxcdXsxRDUyMX1cIixkaGFybDpcIlxcdTIxQzNcIixkaGFycjpcIlxcdTIxQzJcIixkaWFtOlwiXFx1MjJDNFwiLGRpYW1vbmQ6XCJcXHUyMkM0XCIsZGlhbW9uZHN1aXQ6XCJcXHUyNjY2XCIsZGlhbXM6XCJcXHUyNjY2XCIsZGllOlwiXFx4QThcIixkaWdhbW1hOlwiXFx1MDNERFwiLGRpc2luOlwiXFx1MjJGMlwiLGRpdjpcIlxceEY3XCIsZGl2aWRlOlwiXFx4RjdcIixkaXZpZGVvbnRpbWVzOlwiXFx1MjJDN1wiLGRpdm9ueDpcIlxcdTIyQzdcIixkamN5OlwiXFx1MDQ1MlwiLGRsY29ybjpcIlxcdTIzMUVcIixkbGNyb3A6XCJcXHUyMzBEXCIsZG9sbGFyOlwiJFwiLGRvcGY6XCJcXHV7MUQ1NTV9XCIsZG90OlwiXFx1MDJEOVwiLGRvdGVxOlwiXFx1MjI1MFwiLGRvdGVxZG90OlwiXFx1MjI1MVwiLGRvdG1pbnVzOlwiXFx1MjIzOFwiLGRvdHBsdXM6XCJcXHUyMjE0XCIsZG90c3F1YXJlOlwiXFx1MjJBMVwiLGRvdWJsZWJhcndlZGdlOlwiXFx1MjMwNlwiLGRvd25hcnJvdzpcIlxcdTIxOTNcIixkb3duZG93bmFycm93czpcIlxcdTIxQ0FcIixkb3duaGFycG9vbmxlZnQ6XCJcXHUyMUMzXCIsZG93bmhhcnBvb25yaWdodDpcIlxcdTIxQzJcIixkcmJrYXJvdzpcIlxcdTI5MTBcIixkcmNvcm46XCJcXHUyMzFGXCIsZHJjcm9wOlwiXFx1MjMwQ1wiLGRzY3I6XCJcXHV7MUQ0Qjl9XCIsZHNjeTpcIlxcdTA0NTVcIixkc29sOlwiXFx1MjlGNlwiLGRzdHJvazpcIlxcdTAxMTFcIixkdGRvdDpcIlxcdTIyRjFcIixkdHJpOlwiXFx1MjVCRlwiLGR0cmlmOlwiXFx1MjVCRVwiLGR1YXJyOlwiXFx1MjFGNVwiLGR1aGFyOlwiXFx1Mjk2RlwiLGR3YW5nbGU6XCJcXHUyOUE2XCIsZHpjeTpcIlxcdTA0NUZcIixkemlncmFycjpcIlxcdTI3RkZcIixlRERvdDpcIlxcdTJBNzdcIixlRG90OlwiXFx1MjI1MVwiLGVhY3V0ZTpcIlxceEU5XCIsZWFzdGVyOlwiXFx1MkE2RVwiLGVjYXJvbjpcIlxcdTAxMUJcIixlY2lyOlwiXFx1MjI1NlwiLGVjaXJjOlwiXFx4RUFcIixlY29sb246XCJcXHUyMjU1XCIsZWN5OlwiXFx1MDQ0RFwiLGVkb3Q6XCJcXHUwMTE3XCIsZWU6XCJcXHUyMTQ3XCIsZWZEb3Q6XCJcXHUyMjUyXCIsZWZyOlwiXFx1ezFENTIyfVwiLGVnOlwiXFx1MkE5QVwiLGVncmF2ZTpcIlxceEU4XCIsZWdzOlwiXFx1MkE5NlwiLGVnc2RvdDpcIlxcdTJBOThcIixlbDpcIlxcdTJBOTlcIixlbGludGVyczpcIlxcdTIzRTdcIixlbGw6XCJcXHUyMTEzXCIsZWxzOlwiXFx1MkE5NVwiLGVsc2RvdDpcIlxcdTJBOTdcIixlbWFjcjpcIlxcdTAxMTNcIixlbXB0eTpcIlxcdTIyMDVcIixlbXB0eXNldDpcIlxcdTIyMDVcIixlbXB0eXY6XCJcXHUyMjA1XCIsZW1zcDEzOlwiXFx1MjAwNFwiLGVtc3AxNDpcIlxcdTIwMDVcIixlbXNwOlwiXFx1MjAwM1wiLGVuZzpcIlxcdTAxNEJcIixlbnNwOlwiXFx1MjAwMlwiLGVvZ29uOlwiXFx1MDExOVwiLGVvcGY6XCJcXHV7MUQ1NTZ9XCIsZXBhcjpcIlxcdTIyRDVcIixlcGFyc2w6XCJcXHUyOUUzXCIsZXBsdXM6XCJcXHUyQTcxXCIsZXBzaTpcIlxcdTAzQjVcIixlcHNpbG9uOlwiXFx1MDNCNVwiLGVwc2l2OlwiXFx1MDNGNVwiLGVxY2lyYzpcIlxcdTIyNTZcIixlcWNvbG9uOlwiXFx1MjI1NVwiLGVxc2ltOlwiXFx1MjI0MlwiLGVxc2xhbnRndHI6XCJcXHUyQTk2XCIsZXFzbGFudGxlc3M6XCJcXHUyQTk1XCIsZXF1YWxzOlwiPVwiLGVxdWVzdDpcIlxcdTIyNUZcIixlcXVpdjpcIlxcdTIyNjFcIixlcXVpdkREOlwiXFx1MkE3OFwiLGVxdnBhcnNsOlwiXFx1MjlFNVwiLGVyRG90OlwiXFx1MjI1M1wiLGVyYXJyOlwiXFx1Mjk3MVwiLGVzY3I6XCJcXHUyMTJGXCIsZXNkb3Q6XCJcXHUyMjUwXCIsZXNpbTpcIlxcdTIyNDJcIixldGE6XCJcXHUwM0I3XCIsZXRoOlwiXFx4RjBcIixldW1sOlwiXFx4RUJcIixldXJvOlwiXFx1MjBBQ1wiLGV4Y2w6XCIhXCIsZXhpc3Q6XCJcXHUyMjAzXCIsZXhwZWN0YXRpb246XCJcXHUyMTMwXCIsZXhwb25lbnRpYWxlOlwiXFx1MjE0N1wiLGZhbGxpbmdkb3RzZXE6XCJcXHUyMjUyXCIsZmN5OlwiXFx1MDQ0NFwiLGZlbWFsZTpcIlxcdTI2NDBcIixmZmlsaWc6XCJcXHVGQjAzXCIsZmZsaWc6XCJcXHVGQjAwXCIsZmZsbGlnOlwiXFx1RkIwNFwiLGZmcjpcIlxcdXsxRDUyM31cIixmaWxpZzpcIlxcdUZCMDFcIixmamxpZzpcImZqXCIsZmxhdDpcIlxcdTI2NkRcIixmbGxpZzpcIlxcdUZCMDJcIixmbHRuczpcIlxcdTI1QjFcIixmbm9mOlwiXFx1MDE5MlwiLGZvcGY6XCJcXHV7MUQ1NTd9XCIsZm9yYWxsOlwiXFx1MjIwMFwiLGZvcms6XCJcXHUyMkQ0XCIsZm9ya3Y6XCJcXHUyQUQ5XCIsZnBhcnRpbnQ6XCJcXHUyQTBEXCIsZnJhYzEyOlwiXFx4QkRcIixmcmFjMTM6XCJcXHUyMTUzXCIsZnJhYzE0OlwiXFx4QkNcIixmcmFjMTU6XCJcXHUyMTU1XCIsZnJhYzE2OlwiXFx1MjE1OVwiLGZyYWMxODpcIlxcdTIxNUJcIixmcmFjMjM6XCJcXHUyMTU0XCIsZnJhYzI1OlwiXFx1MjE1NlwiLGZyYWMzNDpcIlxceEJFXCIsZnJhYzM1OlwiXFx1MjE1N1wiLGZyYWMzODpcIlxcdTIxNUNcIixmcmFjNDU6XCJcXHUyMTU4XCIsZnJhYzU2OlwiXFx1MjE1QVwiLGZyYWM1ODpcIlxcdTIxNURcIixmcmFjNzg6XCJcXHUyMTVFXCIsZnJhc2w6XCJcXHUyMDQ0XCIsZnJvd246XCJcXHUyMzIyXCIsZnNjcjpcIlxcdXsxRDRCQn1cIixnRTpcIlxcdTIyNjdcIixnRWw6XCJcXHUyQThDXCIsZ2FjdXRlOlwiXFx1MDFGNVwiLGdhbW1hOlwiXFx1MDNCM1wiLGdhbW1hZDpcIlxcdTAzRERcIixnYXA6XCJcXHUyQTg2XCIsZ2JyZXZlOlwiXFx1MDExRlwiLGdjaXJjOlwiXFx1MDExRFwiLGdjeTpcIlxcdTA0MzNcIixnZG90OlwiXFx1MDEyMVwiLGdlOlwiXFx1MjI2NVwiLGdlbDpcIlxcdTIyREJcIixnZXE6XCJcXHUyMjY1XCIsZ2VxcTpcIlxcdTIyNjdcIixnZXFzbGFudDpcIlxcdTJBN0VcIixnZXM6XCJcXHUyQTdFXCIsZ2VzY2M6XCJcXHUyQUE5XCIsZ2VzZG90OlwiXFx1MkE4MFwiLGdlc2RvdG86XCJcXHUyQTgyXCIsZ2VzZG90b2w6XCJcXHUyQTg0XCIsZ2VzbDpcIlxcdTIyREJcXHVGRTAwXCIsZ2VzbGVzOlwiXFx1MkE5NFwiLGdmcjpcIlxcdXsxRDUyNH1cIixnZzpcIlxcdTIyNkJcIixnZ2c6XCJcXHUyMkQ5XCIsZ2ltZWw6XCJcXHUyMTM3XCIsZ2pjeTpcIlxcdTA0NTNcIixnbDpcIlxcdTIyNzdcIixnbEU6XCJcXHUyQTkyXCIsZ2xhOlwiXFx1MkFBNVwiLGdsajpcIlxcdTJBQTRcIixnbkU6XCJcXHUyMjY5XCIsZ25hcDpcIlxcdTJBOEFcIixnbmFwcHJveDpcIlxcdTJBOEFcIixnbmU6XCJcXHUyQTg4XCIsZ25lcTpcIlxcdTJBODhcIixnbmVxcTpcIlxcdTIyNjlcIixnbnNpbTpcIlxcdTIyRTdcIixnb3BmOlwiXFx1ezFENTU4fVwiLGdyYXZlOlwiYFwiLGdzY3I6XCJcXHUyMTBBXCIsZ3NpbTpcIlxcdTIyNzNcIixnc2ltZTpcIlxcdTJBOEVcIixnc2ltbDpcIlxcdTJBOTBcIixndDpcIj5cIixndGNjOlwiXFx1MkFBN1wiLGd0Y2lyOlwiXFx1MkE3QVwiLGd0ZG90OlwiXFx1MjJEN1wiLGd0bFBhcjpcIlxcdTI5OTVcIixndHF1ZXN0OlwiXFx1MkE3Q1wiLGd0cmFwcHJveDpcIlxcdTJBODZcIixndHJhcnI6XCJcXHUyOTc4XCIsZ3RyZG90OlwiXFx1MjJEN1wiLGd0cmVxbGVzczpcIlxcdTIyREJcIixndHJlcXFsZXNzOlwiXFx1MkE4Q1wiLGd0cmxlc3M6XCJcXHUyMjc3XCIsZ3Ryc2ltOlwiXFx1MjI3M1wiLGd2ZXJ0bmVxcTpcIlxcdTIyNjlcXHVGRTAwXCIsZ3ZuRTpcIlxcdTIyNjlcXHVGRTAwXCIsaEFycjpcIlxcdTIxRDRcIixoYWlyc3A6XCJcXHUyMDBBXCIsaGFsZjpcIlxceEJEXCIsaGFtaWx0OlwiXFx1MjEwQlwiLGhhcmRjeTpcIlxcdTA0NEFcIixoYXJyOlwiXFx1MjE5NFwiLGhhcnJjaXI6XCJcXHUyOTQ4XCIsaGFycnc6XCJcXHUyMUFEXCIsaGJhcjpcIlxcdTIxMEZcIixoY2lyYzpcIlxcdTAxMjVcIixoZWFydHM6XCJcXHUyNjY1XCIsaGVhcnRzdWl0OlwiXFx1MjY2NVwiLGhlbGxpcDpcIlxcdTIwMjZcIixoZXJjb246XCJcXHUyMkI5XCIsaGZyOlwiXFx1ezFENTI1fVwiLGhrc2Vhcm93OlwiXFx1MjkyNVwiLGhrc3dhcm93OlwiXFx1MjkyNlwiLGhvYXJyOlwiXFx1MjFGRlwiLGhvbXRodDpcIlxcdTIyM0JcIixob29rbGVmdGFycm93OlwiXFx1MjFBOVwiLGhvb2tyaWdodGFycm93OlwiXFx1MjFBQVwiLGhvcGY6XCJcXHV7MUQ1NTl9XCIsaG9yYmFyOlwiXFx1MjAxNVwiLGhzY3I6XCJcXHV7MUQ0QkR9XCIsaHNsYXNoOlwiXFx1MjEwRlwiLGhzdHJvazpcIlxcdTAxMjdcIixoeWJ1bGw6XCJcXHUyMDQzXCIsaHlwaGVuOlwiXFx1MjAxMFwiLGlhY3V0ZTpcIlxceEVEXCIsaWM6XCJcXHUyMDYzXCIsaWNpcmM6XCJcXHhFRVwiLGljeTpcIlxcdTA0MzhcIixpZWN5OlwiXFx1MDQzNVwiLGlleGNsOlwiXFx4QTFcIixpZmY6XCJcXHUyMUQ0XCIsaWZyOlwiXFx1ezFENTI2fVwiLGlncmF2ZTpcIlxceEVDXCIsaWk6XCJcXHUyMTQ4XCIsaWlpaW50OlwiXFx1MkEwQ1wiLGlpaW50OlwiXFx1MjIyRFwiLGlpbmZpbjpcIlxcdTI5RENcIixpaW90YTpcIlxcdTIxMjlcIixpamxpZzpcIlxcdTAxMzNcIixpbWFjcjpcIlxcdTAxMkJcIixpbWFnZTpcIlxcdTIxMTFcIixpbWFnbGluZTpcIlxcdTIxMTBcIixpbWFncGFydDpcIlxcdTIxMTFcIixpbWF0aDpcIlxcdTAxMzFcIixpbW9mOlwiXFx1MjJCN1wiLGltcGVkOlwiXFx1MDFCNVwiLGluOlwiXFx1MjIwOFwiLGluY2FyZTpcIlxcdTIxMDVcIixpbmZpbjpcIlxcdTIyMUVcIixpbmZpbnRpZTpcIlxcdTI5RERcIixpbm9kb3Q6XCJcXHUwMTMxXCIsaW50OlwiXFx1MjIyQlwiLGludGNhbDpcIlxcdTIyQkFcIixpbnRlZ2VyczpcIlxcdTIxMjRcIixpbnRlcmNhbDpcIlxcdTIyQkFcIixpbnRsYXJoazpcIlxcdTJBMTdcIixpbnRwcm9kOlwiXFx1MkEzQ1wiLGlvY3k6XCJcXHUwNDUxXCIsaW9nb246XCJcXHUwMTJGXCIsaW9wZjpcIlxcdXsxRDU1QX1cIixpb3RhOlwiXFx1MDNCOVwiLGlwcm9kOlwiXFx1MkEzQ1wiLGlxdWVzdDpcIlxceEJGXCIsaXNjcjpcIlxcdXsxRDRCRX1cIixpc2luOlwiXFx1MjIwOFwiLGlzaW5FOlwiXFx1MjJGOVwiLGlzaW5kb3Q6XCJcXHUyMkY1XCIsaXNpbnM6XCJcXHUyMkY0XCIsaXNpbnN2OlwiXFx1MjJGM1wiLGlzaW52OlwiXFx1MjIwOFwiLGl0OlwiXFx1MjA2MlwiLGl0aWxkZTpcIlxcdTAxMjlcIixpdWtjeTpcIlxcdTA0NTZcIixpdW1sOlwiXFx4RUZcIixqY2lyYzpcIlxcdTAxMzVcIixqY3k6XCJcXHUwNDM5XCIsamZyOlwiXFx1ezFENTI3fVwiLGptYXRoOlwiXFx1MDIzN1wiLGpvcGY6XCJcXHV7MUQ1NUJ9XCIsanNjcjpcIlxcdXsxRDRCRn1cIixqc2VyY3k6XCJcXHUwNDU4XCIsanVrY3k6XCJcXHUwNDU0XCIsa2FwcGE6XCJcXHUwM0JBXCIsa2FwcGF2OlwiXFx1MDNGMFwiLGtjZWRpbDpcIlxcdTAxMzdcIixrY3k6XCJcXHUwNDNBXCIsa2ZyOlwiXFx1ezFENTI4fVwiLGtncmVlbjpcIlxcdTAxMzhcIixraGN5OlwiXFx1MDQ0NVwiLGtqY3k6XCJcXHUwNDVDXCIsa29wZjpcIlxcdXsxRDU1Q31cIixrc2NyOlwiXFx1ezFENEMwfVwiLGxBYXJyOlwiXFx1MjFEQVwiLGxBcnI6XCJcXHUyMUQwXCIsbEF0YWlsOlwiXFx1MjkxQlwiLGxCYXJyOlwiXFx1MjkwRVwiLGxFOlwiXFx1MjI2NlwiLGxFZzpcIlxcdTJBOEJcIixsSGFyOlwiXFx1Mjk2MlwiLGxhY3V0ZTpcIlxcdTAxM0FcIixsYWVtcHR5djpcIlxcdTI5QjRcIixsYWdyYW46XCJcXHUyMTEyXCIsbGFtYmRhOlwiXFx1MDNCQlwiLGxhbmc6XCJcXHUyN0U4XCIsbGFuZ2Q6XCJcXHUyOTkxXCIsbGFuZ2xlOlwiXFx1MjdFOFwiLGxhcDpcIlxcdTJBODVcIixsYXF1bzpcIlxceEFCXCIsbGFycjpcIlxcdTIxOTBcIixsYXJyYjpcIlxcdTIxRTRcIixsYXJyYmZzOlwiXFx1MjkxRlwiLGxhcnJmczpcIlxcdTI5MURcIixsYXJyaGs6XCJcXHUyMUE5XCIsbGFycmxwOlwiXFx1MjFBQlwiLGxhcnJwbDpcIlxcdTI5MzlcIixsYXJyc2ltOlwiXFx1Mjk3M1wiLGxhcnJ0bDpcIlxcdTIxQTJcIixsYXQ6XCJcXHUyQUFCXCIsbGF0YWlsOlwiXFx1MjkxOVwiLGxhdGU6XCJcXHUyQUFEXCIsbGF0ZXM6XCJcXHUyQUFEXFx1RkUwMFwiLGxiYXJyOlwiXFx1MjkwQ1wiLGxiYnJrOlwiXFx1Mjc3MlwiLGxicmFjZTpcIntcIixsYnJhY2s6XCJbXCIsbGJya2U6XCJcXHUyOThCXCIsbGJya3NsZDpcIlxcdTI5OEZcIixsYnJrc2x1OlwiXFx1Mjk4RFwiLGxjYXJvbjpcIlxcdTAxM0VcIixsY2VkaWw6XCJcXHUwMTNDXCIsbGNlaWw6XCJcXHUyMzA4XCIsbGN1YjpcIntcIixsY3k6XCJcXHUwNDNCXCIsbGRjYTpcIlxcdTI5MzZcIixsZHF1bzpcIlxcdTIwMUNcIixsZHF1b3I6XCJcXHUyMDFFXCIsbGRyZGhhcjpcIlxcdTI5NjdcIixsZHJ1c2hhcjpcIlxcdTI5NEJcIixsZHNoOlwiXFx1MjFCMlwiLGxlOlwiXFx1MjI2NFwiLGxlZnRhcnJvdzpcIlxcdTIxOTBcIixsZWZ0YXJyb3d0YWlsOlwiXFx1MjFBMlwiLGxlZnRoYXJwb29uZG93bjpcIlxcdTIxQkRcIixsZWZ0aGFycG9vbnVwOlwiXFx1MjFCQ1wiLGxlZnRsZWZ0YXJyb3dzOlwiXFx1MjFDN1wiLGxlZnRyaWdodGFycm93OlwiXFx1MjE5NFwiLGxlZnRyaWdodGFycm93czpcIlxcdTIxQzZcIixsZWZ0cmlnaHRoYXJwb29uczpcIlxcdTIxQ0JcIixsZWZ0cmlnaHRzcXVpZ2Fycm93OlwiXFx1MjFBRFwiLGxlZnR0aHJlZXRpbWVzOlwiXFx1MjJDQlwiLGxlZzpcIlxcdTIyREFcIixsZXE6XCJcXHUyMjY0XCIsbGVxcTpcIlxcdTIyNjZcIixsZXFzbGFudDpcIlxcdTJBN0RcIixsZXM6XCJcXHUyQTdEXCIsbGVzY2M6XCJcXHUyQUE4XCIsbGVzZG90OlwiXFx1MkE3RlwiLGxlc2RvdG86XCJcXHUyQTgxXCIsbGVzZG90b3I6XCJcXHUyQTgzXCIsbGVzZzpcIlxcdTIyREFcXHVGRTAwXCIsbGVzZ2VzOlwiXFx1MkE5M1wiLGxlc3NhcHByb3g6XCJcXHUyQTg1XCIsbGVzc2RvdDpcIlxcdTIyRDZcIixsZXNzZXFndHI6XCJcXHUyMkRBXCIsbGVzc2VxcWd0cjpcIlxcdTJBOEJcIixsZXNzZ3RyOlwiXFx1MjI3NlwiLGxlc3NzaW06XCJcXHUyMjcyXCIsbGZpc2h0OlwiXFx1Mjk3Q1wiLGxmbG9vcjpcIlxcdTIzMEFcIixsZnI6XCJcXHV7MUQ1Mjl9XCIsbGc6XCJcXHUyMjc2XCIsbGdFOlwiXFx1MkE5MVwiLGxoYXJkOlwiXFx1MjFCRFwiLGxoYXJ1OlwiXFx1MjFCQ1wiLGxoYXJ1bDpcIlxcdTI5NkFcIixsaGJsazpcIlxcdTI1ODRcIixsamN5OlwiXFx1MDQ1OVwiLGxsOlwiXFx1MjI2QVwiLGxsYXJyOlwiXFx1MjFDN1wiLGxsY29ybmVyOlwiXFx1MjMxRVwiLGxsaGFyZDpcIlxcdTI5NkJcIixsbHRyaTpcIlxcdTI1RkFcIixsbWlkb3Q6XCJcXHUwMTQwXCIsbG1vdXN0OlwiXFx1MjNCMFwiLGxtb3VzdGFjaGU6XCJcXHUyM0IwXCIsbG5FOlwiXFx1MjI2OFwiLGxuYXA6XCJcXHUyQTg5XCIsbG5hcHByb3g6XCJcXHUyQTg5XCIsbG5lOlwiXFx1MkE4N1wiLGxuZXE6XCJcXHUyQTg3XCIsbG5lcXE6XCJcXHUyMjY4XCIsbG5zaW06XCJcXHUyMkU2XCIsbG9hbmc6XCJcXHUyN0VDXCIsbG9hcnI6XCJcXHUyMUZEXCIsbG9icms6XCJcXHUyN0U2XCIsbG9uZ2xlZnRhcnJvdzpcIlxcdTI3RjVcIixsb25nbGVmdHJpZ2h0YXJyb3c6XCJcXHUyN0Y3XCIsbG9uZ21hcHN0bzpcIlxcdTI3RkNcIixsb25ncmlnaHRhcnJvdzpcIlxcdTI3RjZcIixsb29wYXJyb3dsZWZ0OlwiXFx1MjFBQlwiLGxvb3BhcnJvd3JpZ2h0OlwiXFx1MjFBQ1wiLGxvcGFyOlwiXFx1Mjk4NVwiLGxvcGY6XCJcXHV7MUQ1NUR9XCIsbG9wbHVzOlwiXFx1MkEyRFwiLGxvdGltZXM6XCJcXHUyQTM0XCIsbG93YXN0OlwiXFx1MjIxN1wiLGxvd2JhcjpcIl9cIixsb3o6XCJcXHUyNUNBXCIsbG96ZW5nZTpcIlxcdTI1Q0FcIixsb3pmOlwiXFx1MjlFQlwiLGxwYXI6XCIoXCIsbHBhcmx0OlwiXFx1Mjk5M1wiLGxyYXJyOlwiXFx1MjFDNlwiLGxyY29ybmVyOlwiXFx1MjMxRlwiLGxyaGFyOlwiXFx1MjFDQlwiLGxyaGFyZDpcIlxcdTI5NkRcIixscm06XCJcXHUyMDBFXCIsbHJ0cmk6XCJcXHUyMkJGXCIsbHNhcXVvOlwiXFx1MjAzOVwiLGxzY3I6XCJcXHV7MUQ0QzF9XCIsbHNoOlwiXFx1MjFCMFwiLGxzaW06XCJcXHUyMjcyXCIsbHNpbWU6XCJcXHUyQThEXCIsbHNpbWc6XCJcXHUyQThGXCIsbHNxYjpcIltcIixsc3F1bzpcIlxcdTIwMThcIixsc3F1b3I6XCJcXHUyMDFBXCIsbHN0cm9rOlwiXFx1MDE0MlwiLGx0OlwiPFwiLGx0Y2M6XCJcXHUyQUE2XCIsbHRjaXI6XCJcXHUyQTc5XCIsbHRkb3Q6XCJcXHUyMkQ2XCIsbHRocmVlOlwiXFx1MjJDQlwiLGx0aW1lczpcIlxcdTIyQzlcIixsdGxhcnI6XCJcXHUyOTc2XCIsbHRxdWVzdDpcIlxcdTJBN0JcIixsdHJQYXI6XCJcXHUyOTk2XCIsbHRyaTpcIlxcdTI1QzNcIixsdHJpZTpcIlxcdTIyQjRcIixsdHJpZjpcIlxcdTI1QzJcIixsdXJkc2hhcjpcIlxcdTI5NEFcIixsdXJ1aGFyOlwiXFx1Mjk2NlwiLGx2ZXJ0bmVxcTpcIlxcdTIyNjhcXHVGRTAwXCIsbHZuRTpcIlxcdTIyNjhcXHVGRTAwXCIsbUREb3Q6XCJcXHUyMjNBXCIsbWFjcjpcIlxceEFGXCIsbWFsZTpcIlxcdTI2NDJcIixtYWx0OlwiXFx1MjcyMFwiLG1hbHRlc2U6XCJcXHUyNzIwXCIsbWFwOlwiXFx1MjFBNlwiLG1hcHN0bzpcIlxcdTIxQTZcIixtYXBzdG9kb3duOlwiXFx1MjFBN1wiLG1hcHN0b2xlZnQ6XCJcXHUyMUE0XCIsbWFwc3RvdXA6XCJcXHUyMUE1XCIsbWFya2VyOlwiXFx1MjVBRVwiLG1jb21tYTpcIlxcdTJBMjlcIixtY3k6XCJcXHUwNDNDXCIsbWRhc2g6XCJcXHUyMDE0XCIsbWVhc3VyZWRhbmdsZTpcIlxcdTIyMjFcIixtZnI6XCJcXHV7MUQ1MkF9XCIsbWhvOlwiXFx1MjEyN1wiLG1pY3JvOlwiXFx4QjVcIixtaWQ6XCJcXHUyMjIzXCIsbWlkYXN0OlwiKlwiLG1pZGNpcjpcIlxcdTJBRjBcIixtaWRkb3Q6XCJcXHhCN1wiLG1pbnVzOlwiXFx1MjIxMlwiLG1pbnVzYjpcIlxcdTIyOUZcIixtaW51c2Q6XCJcXHUyMjM4XCIsbWludXNkdTpcIlxcdTJBMkFcIixtbGNwOlwiXFx1MkFEQlwiLG1sZHI6XCJcXHUyMDI2XCIsbW5wbHVzOlwiXFx1MjIxM1wiLG1vZGVsczpcIlxcdTIyQTdcIixtb3BmOlwiXFx1ezFENTVFfVwiLG1wOlwiXFx1MjIxM1wiLG1zY3I6XCJcXHV7MUQ0QzJ9XCIsbXN0cG9zOlwiXFx1MjIzRVwiLG11OlwiXFx1MDNCQ1wiLG11bHRpbWFwOlwiXFx1MjJCOFwiLG11bWFwOlwiXFx1MjJCOFwiLG5HZzpcIlxcdTIyRDlcXHUwMzM4XCIsbkd0OlwiXFx1MjI2QlxcdTIwRDJcIixuR3R2OlwiXFx1MjI2QlxcdTAzMzhcIixuTGVmdGFycm93OlwiXFx1MjFDRFwiLG5MZWZ0cmlnaHRhcnJvdzpcIlxcdTIxQ0VcIixuTGw6XCJcXHUyMkQ4XFx1MDMzOFwiLG5MdDpcIlxcdTIyNkFcXHUyMEQyXCIsbkx0djpcIlxcdTIyNkFcXHUwMzM4XCIsblJpZ2h0YXJyb3c6XCJcXHUyMUNGXCIsblZEYXNoOlwiXFx1MjJBRlwiLG5WZGFzaDpcIlxcdTIyQUVcIixuYWJsYTpcIlxcdTIyMDdcIixuYWN1dGU6XCJcXHUwMTQ0XCIsbmFuZzpcIlxcdTIyMjBcXHUyMEQyXCIsbmFwOlwiXFx1MjI0OVwiLG5hcEU6XCJcXHUyQTcwXFx1MDMzOFwiLG5hcGlkOlwiXFx1MjI0QlxcdTAzMzhcIixuYXBvczpcIlxcdTAxNDlcIixuYXBwcm94OlwiXFx1MjI0OVwiLG5hdHVyOlwiXFx1MjY2RVwiLG5hdHVyYWw6XCJcXHUyNjZFXCIsbmF0dXJhbHM6XCJcXHUyMTE1XCIsbmJzcDpcIlxceEEwXCIsbmJ1bXA6XCJcXHUyMjRFXFx1MDMzOFwiLG5idW1wZTpcIlxcdTIyNEZcXHUwMzM4XCIsbmNhcDpcIlxcdTJBNDNcIixuY2Fyb246XCJcXHUwMTQ4XCIsbmNlZGlsOlwiXFx1MDE0NlwiLG5jb25nOlwiXFx1MjI0N1wiLG5jb25nZG90OlwiXFx1MkE2RFxcdTAzMzhcIixuY3VwOlwiXFx1MkE0MlwiLG5jeTpcIlxcdTA0M0RcIixuZGFzaDpcIlxcdTIwMTNcIixuZTpcIlxcdTIyNjBcIixuZUFycjpcIlxcdTIxRDdcIixuZWFyaGs6XCJcXHUyOTI0XCIsbmVhcnI6XCJcXHUyMTk3XCIsbmVhcnJvdzpcIlxcdTIxOTdcIixuZWRvdDpcIlxcdTIyNTBcXHUwMzM4XCIsbmVxdWl2OlwiXFx1MjI2MlwiLG5lc2VhcjpcIlxcdTI5MjhcIixuZXNpbTpcIlxcdTIyNDJcXHUwMzM4XCIsbmV4aXN0OlwiXFx1MjIwNFwiLG5leGlzdHM6XCJcXHUyMjA0XCIsbmZyOlwiXFx1ezFENTJCfVwiLG5nRTpcIlxcdTIyNjdcXHUwMzM4XCIsbmdlOlwiXFx1MjI3MVwiLG5nZXE6XCJcXHUyMjcxXCIsbmdlcXE6XCJcXHUyMjY3XFx1MDMzOFwiLG5nZXFzbGFudDpcIlxcdTJBN0VcXHUwMzM4XCIsbmdlczpcIlxcdTJBN0VcXHUwMzM4XCIsbmdzaW06XCJcXHUyMjc1XCIsbmd0OlwiXFx1MjI2RlwiLG5ndHI6XCJcXHUyMjZGXCIsbmhBcnI6XCJcXHUyMUNFXCIsbmhhcnI6XCJcXHUyMUFFXCIsbmhwYXI6XCJcXHUyQUYyXCIsbmk6XCJcXHUyMjBCXCIsbmlzOlwiXFx1MjJGQ1wiLG5pc2Q6XCJcXHUyMkZBXCIsbml2OlwiXFx1MjIwQlwiLG5qY3k6XCJcXHUwNDVBXCIsbmxBcnI6XCJcXHUyMUNEXCIsbmxFOlwiXFx1MjI2NlxcdTAzMzhcIixubGFycjpcIlxcdTIxOUFcIixubGRyOlwiXFx1MjAyNVwiLG5sZTpcIlxcdTIyNzBcIixubGVmdGFycm93OlwiXFx1MjE5QVwiLG5sZWZ0cmlnaHRhcnJvdzpcIlxcdTIxQUVcIixubGVxOlwiXFx1MjI3MFwiLG5sZXFxOlwiXFx1MjI2NlxcdTAzMzhcIixubGVxc2xhbnQ6XCJcXHUyQTdEXFx1MDMzOFwiLG5sZXM6XCJcXHUyQTdEXFx1MDMzOFwiLG5sZXNzOlwiXFx1MjI2RVwiLG5sc2ltOlwiXFx1MjI3NFwiLG5sdDpcIlxcdTIyNkVcIixubHRyaTpcIlxcdTIyRUFcIixubHRyaWU6XCJcXHUyMkVDXCIsbm1pZDpcIlxcdTIyMjRcIixub3BmOlwiXFx1ezFENTVGfVwiLG5vdDpcIlxceEFDXCIsbm90aW46XCJcXHUyMjA5XCIsbm90aW5FOlwiXFx1MjJGOVxcdTAzMzhcIixub3RpbmRvdDpcIlxcdTIyRjVcXHUwMzM4XCIsbm90aW52YTpcIlxcdTIyMDlcIixub3RpbnZiOlwiXFx1MjJGN1wiLG5vdGludmM6XCJcXHUyMkY2XCIsbm90bmk6XCJcXHUyMjBDXCIsbm90bml2YTpcIlxcdTIyMENcIixub3RuaXZiOlwiXFx1MjJGRVwiLG5vdG5pdmM6XCJcXHUyMkZEXCIsbnBhcjpcIlxcdTIyMjZcIixucGFyYWxsZWw6XCJcXHUyMjI2XCIsbnBhcnNsOlwiXFx1MkFGRFxcdTIwRTVcIixucGFydDpcIlxcdTIyMDJcXHUwMzM4XCIsbnBvbGludDpcIlxcdTJBMTRcIixucHI6XCJcXHUyMjgwXCIsbnByY3VlOlwiXFx1MjJFMFwiLG5wcmU6XCJcXHUyQUFGXFx1MDMzOFwiLG5wcmVjOlwiXFx1MjI4MFwiLG5wcmVjZXE6XCJcXHUyQUFGXFx1MDMzOFwiLG5yQXJyOlwiXFx1MjFDRlwiLG5yYXJyOlwiXFx1MjE5QlwiLG5yYXJyYzpcIlxcdTI5MzNcXHUwMzM4XCIsbnJhcnJ3OlwiXFx1MjE5RFxcdTAzMzhcIixucmlnaHRhcnJvdzpcIlxcdTIxOUJcIixucnRyaTpcIlxcdTIyRUJcIixucnRyaWU6XCJcXHUyMkVEXCIsbnNjOlwiXFx1MjI4MVwiLG5zY2N1ZTpcIlxcdTIyRTFcIixuc2NlOlwiXFx1MkFCMFxcdTAzMzhcIixuc2NyOlwiXFx1ezFENEMzfVwiLG5zaG9ydG1pZDpcIlxcdTIyMjRcIixuc2hvcnRwYXJhbGxlbDpcIlxcdTIyMjZcIixuc2ltOlwiXFx1MjI0MVwiLG5zaW1lOlwiXFx1MjI0NFwiLG5zaW1lcTpcIlxcdTIyNDRcIixuc21pZDpcIlxcdTIyMjRcIixuc3BhcjpcIlxcdTIyMjZcIixuc3FzdWJlOlwiXFx1MjJFMlwiLG5zcXN1cGU6XCJcXHUyMkUzXCIsbnN1YjpcIlxcdTIyODRcIixuc3ViRTpcIlxcdTJBQzVcXHUwMzM4XCIsbnN1YmU6XCJcXHUyMjg4XCIsbnN1YnNldDpcIlxcdTIyODJcXHUyMEQyXCIsbnN1YnNldGVxOlwiXFx1MjI4OFwiLG5zdWJzZXRlcXE6XCJcXHUyQUM1XFx1MDMzOFwiLG5zdWNjOlwiXFx1MjI4MVwiLG5zdWNjZXE6XCJcXHUyQUIwXFx1MDMzOFwiLG5zdXA6XCJcXHUyMjg1XCIsbnN1cEU6XCJcXHUyQUM2XFx1MDMzOFwiLG5zdXBlOlwiXFx1MjI4OVwiLG5zdXBzZXQ6XCJcXHUyMjgzXFx1MjBEMlwiLG5zdXBzZXRlcTpcIlxcdTIyODlcIixuc3Vwc2V0ZXFxOlwiXFx1MkFDNlxcdTAzMzhcIixudGdsOlwiXFx1MjI3OVwiLG50aWxkZTpcIlxceEYxXCIsbnRsZzpcIlxcdTIyNzhcIixudHJpYW5nbGVsZWZ0OlwiXFx1MjJFQVwiLG50cmlhbmdsZWxlZnRlcTpcIlxcdTIyRUNcIixudHJpYW5nbGVyaWdodDpcIlxcdTIyRUJcIixudHJpYW5nbGVyaWdodGVxOlwiXFx1MjJFRFwiLG51OlwiXFx1MDNCRFwiLG51bTpcIiNcIixudW1lcm86XCJcXHUyMTE2XCIsbnVtc3A6XCJcXHUyMDA3XCIsbnZEYXNoOlwiXFx1MjJBRFwiLG52SGFycjpcIlxcdTI5MDRcIixudmFwOlwiXFx1MjI0RFxcdTIwRDJcIixudmRhc2g6XCJcXHUyMkFDXCIsbnZnZTpcIlxcdTIyNjVcXHUyMEQyXCIsbnZndDpcIj5cXHUyMEQyXCIsbnZpbmZpbjpcIlxcdTI5REVcIixudmxBcnI6XCJcXHUyOTAyXCIsbnZsZTpcIlxcdTIyNjRcXHUyMEQyXCIsbnZsdDpcIjxcXHUyMEQyXCIsbnZsdHJpZTpcIlxcdTIyQjRcXHUyMEQyXCIsbnZyQXJyOlwiXFx1MjkwM1wiLG52cnRyaWU6XCJcXHUyMkI1XFx1MjBEMlwiLG52c2ltOlwiXFx1MjIzQ1xcdTIwRDJcIixud0FycjpcIlxcdTIxRDZcIixud2FyaGs6XCJcXHUyOTIzXCIsbndhcnI6XCJcXHUyMTk2XCIsbndhcnJvdzpcIlxcdTIxOTZcIixud25lYXI6XCJcXHUyOTI3XCIsb1M6XCJcXHUyNEM4XCIsb2FjdXRlOlwiXFx4RjNcIixvYXN0OlwiXFx1MjI5QlwiLG9jaXI6XCJcXHUyMjlBXCIsb2NpcmM6XCJcXHhGNFwiLG9jeTpcIlxcdTA0M0VcIixvZGFzaDpcIlxcdTIyOURcIixvZGJsYWM6XCJcXHUwMTUxXCIsb2RpdjpcIlxcdTJBMzhcIixvZG90OlwiXFx1MjI5OVwiLG9kc29sZDpcIlxcdTI5QkNcIixvZWxpZzpcIlxcdTAxNTNcIixvZmNpcjpcIlxcdTI5QkZcIixvZnI6XCJcXHV7MUQ1MkN9XCIsb2dvbjpcIlxcdTAyREJcIixvZ3JhdmU6XCJcXHhGMlwiLG9ndDpcIlxcdTI5QzFcIixvaGJhcjpcIlxcdTI5QjVcIixvaG06XCJcXHUwM0E5XCIsb2ludDpcIlxcdTIyMkVcIixvbGFycjpcIlxcdTIxQkFcIixvbGNpcjpcIlxcdTI5QkVcIixvbGNyb3NzOlwiXFx1MjlCQlwiLG9saW5lOlwiXFx1MjAzRVwiLG9sdDpcIlxcdTI5QzBcIixvbWFjcjpcIlxcdTAxNERcIixvbWVnYTpcIlxcdTAzQzlcIixvbWljcm9uOlwiXFx1MDNCRlwiLG9taWQ6XCJcXHUyOUI2XCIsb21pbnVzOlwiXFx1MjI5NlwiLG9vcGY6XCJcXHV7MUQ1NjB9XCIsb3BhcjpcIlxcdTI5QjdcIixvcGVycDpcIlxcdTI5QjlcIixvcGx1czpcIlxcdTIyOTVcIixvcjpcIlxcdTIyMjhcIixvcmFycjpcIlxcdTIxQkJcIixvcmQ6XCJcXHUyQTVEXCIsb3JkZXI6XCJcXHUyMTM0XCIsb3JkZXJvZjpcIlxcdTIxMzRcIixvcmRmOlwiXFx4QUFcIixvcmRtOlwiXFx4QkFcIixvcmlnb2Y6XCJcXHUyMkI2XCIsb3JvcjpcIlxcdTJBNTZcIixvcnNsb3BlOlwiXFx1MkE1N1wiLG9ydjpcIlxcdTJBNUJcIixvc2NyOlwiXFx1MjEzNFwiLG9zbGFzaDpcIlxceEY4XCIsb3NvbDpcIlxcdTIyOThcIixvdGlsZGU6XCJcXHhGNVwiLG90aW1lczpcIlxcdTIyOTdcIixvdGltZXNhczpcIlxcdTJBMzZcIixvdW1sOlwiXFx4RjZcIixvdmJhcjpcIlxcdTIzM0RcIixwYXI6XCJcXHUyMjI1XCIscGFyYTpcIlxceEI2XCIscGFyYWxsZWw6XCJcXHUyMjI1XCIscGFyc2ltOlwiXFx1MkFGM1wiLHBhcnNsOlwiXFx1MkFGRFwiLHBhcnQ6XCJcXHUyMjAyXCIscGN5OlwiXFx1MDQzRlwiLHBlcmNudDpcIiVcIixwZXJpb2Q6XCIuXCIscGVybWlsOlwiXFx1MjAzMFwiLHBlcnA6XCJcXHUyMkE1XCIscGVydGVuazpcIlxcdTIwMzFcIixwZnI6XCJcXHV7MUQ1MkR9XCIscGhpOlwiXFx1MDNDNlwiLHBoaXY6XCJcXHUwM0Q1XCIscGhtbWF0OlwiXFx1MjEzM1wiLHBob25lOlwiXFx1MjYwRVwiLHBpOlwiXFx1MDNDMFwiLHBpdGNoZm9yazpcIlxcdTIyRDRcIixwaXY6XCJcXHUwM0Q2XCIscGxhbmNrOlwiXFx1MjEwRlwiLHBsYW5ja2g6XCJcXHUyMTBFXCIscGxhbmt2OlwiXFx1MjEwRlwiLHBsdXM6XCIrXCIscGx1c2FjaXI6XCJcXHUyQTIzXCIscGx1c2I6XCJcXHUyMjlFXCIscGx1c2NpcjpcIlxcdTJBMjJcIixwbHVzZG86XCJcXHUyMjE0XCIscGx1c2R1OlwiXFx1MkEyNVwiLHBsdXNlOlwiXFx1MkE3MlwiLHBsdXNtbjpcIlxceEIxXCIscGx1c3NpbTpcIlxcdTJBMjZcIixwbHVzdHdvOlwiXFx1MkEyN1wiLHBtOlwiXFx4QjFcIixwb2ludGludDpcIlxcdTJBMTVcIixwb3BmOlwiXFx1ezFENTYxfVwiLHBvdW5kOlwiXFx4QTNcIixwcjpcIlxcdTIyN0FcIixwckU6XCJcXHUyQUIzXCIscHJhcDpcIlxcdTJBQjdcIixwcmN1ZTpcIlxcdTIyN0NcIixwcmU6XCJcXHUyQUFGXCIscHJlYzpcIlxcdTIyN0FcIixwcmVjYXBwcm94OlwiXFx1MkFCN1wiLHByZWNjdXJseWVxOlwiXFx1MjI3Q1wiLHByZWNlcTpcIlxcdTJBQUZcIixwcmVjbmFwcHJveDpcIlxcdTJBQjlcIixwcmVjbmVxcTpcIlxcdTJBQjVcIixwcmVjbnNpbTpcIlxcdTIyRThcIixwcmVjc2ltOlwiXFx1MjI3RVwiLHByaW1lOlwiXFx1MjAzMlwiLHByaW1lczpcIlxcdTIxMTlcIixwcm5FOlwiXFx1MkFCNVwiLHBybmFwOlwiXFx1MkFCOVwiLHBybnNpbTpcIlxcdTIyRThcIixwcm9kOlwiXFx1MjIwRlwiLHByb2ZhbGFyOlwiXFx1MjMyRVwiLHByb2ZsaW5lOlwiXFx1MjMxMlwiLHByb2ZzdXJmOlwiXFx1MjMxM1wiLHByb3A6XCJcXHUyMjFEXCIscHJvcHRvOlwiXFx1MjIxRFwiLHByc2ltOlwiXFx1MjI3RVwiLHBydXJlbDpcIlxcdTIyQjBcIixwc2NyOlwiXFx1ezFENEM1fVwiLHBzaTpcIlxcdTAzQzhcIixwdW5jc3A6XCJcXHUyMDA4XCIscWZyOlwiXFx1ezFENTJFfVwiLHFpbnQ6XCJcXHUyQTBDXCIscW9wZjpcIlxcdXsxRDU2Mn1cIixxcHJpbWU6XCJcXHUyMDU3XCIscXNjcjpcIlxcdXsxRDRDNn1cIixxdWF0ZXJuaW9uczpcIlxcdTIxMERcIixxdWF0aW50OlwiXFx1MkExNlwiLHF1ZXN0OlwiP1wiLHF1ZXN0ZXE6XCJcXHUyMjVGXCIscXVvdDonXCInLHJBYXJyOlwiXFx1MjFEQlwiLHJBcnI6XCJcXHUyMUQyXCIsckF0YWlsOlwiXFx1MjkxQ1wiLHJCYXJyOlwiXFx1MjkwRlwiLHJIYXI6XCJcXHUyOTY0XCIscmFjZTpcIlxcdTIyM0RcXHUwMzMxXCIscmFjdXRlOlwiXFx1MDE1NVwiLHJhZGljOlwiXFx1MjIxQVwiLHJhZW1wdHl2OlwiXFx1MjlCM1wiLHJhbmc6XCJcXHUyN0U5XCIscmFuZ2Q6XCJcXHUyOTkyXCIscmFuZ2U6XCJcXHUyOUE1XCIscmFuZ2xlOlwiXFx1MjdFOVwiLHJhcXVvOlwiXFx4QkJcIixyYXJyOlwiXFx1MjE5MlwiLHJhcnJhcDpcIlxcdTI5NzVcIixyYXJyYjpcIlxcdTIxRTVcIixyYXJyYmZzOlwiXFx1MjkyMFwiLHJhcnJjOlwiXFx1MjkzM1wiLHJhcnJmczpcIlxcdTI5MUVcIixyYXJyaGs6XCJcXHUyMUFBXCIscmFycmxwOlwiXFx1MjFBQ1wiLHJhcnJwbDpcIlxcdTI5NDVcIixyYXJyc2ltOlwiXFx1Mjk3NFwiLHJhcnJ0bDpcIlxcdTIxQTNcIixyYXJydzpcIlxcdTIxOURcIixyYXRhaWw6XCJcXHUyOTFBXCIscmF0aW86XCJcXHUyMjM2XCIscmF0aW9uYWxzOlwiXFx1MjExQVwiLHJiYXJyOlwiXFx1MjkwRFwiLHJiYnJrOlwiXFx1Mjc3M1wiLHJicmFjZTpcIn1cIixyYnJhY2s6XCJdXCIscmJya2U6XCJcXHUyOThDXCIscmJya3NsZDpcIlxcdTI5OEVcIixyYnJrc2x1OlwiXFx1Mjk5MFwiLHJjYXJvbjpcIlxcdTAxNTlcIixyY2VkaWw6XCJcXHUwMTU3XCIscmNlaWw6XCJcXHUyMzA5XCIscmN1YjpcIn1cIixyY3k6XCJcXHUwNDQwXCIscmRjYTpcIlxcdTI5MzdcIixyZGxkaGFyOlwiXFx1Mjk2OVwiLHJkcXVvOlwiXFx1MjAxRFwiLHJkcXVvcjpcIlxcdTIwMURcIixyZHNoOlwiXFx1MjFCM1wiLHJlYWw6XCJcXHUyMTFDXCIscmVhbGluZTpcIlxcdTIxMUJcIixyZWFscGFydDpcIlxcdTIxMUNcIixyZWFsczpcIlxcdTIxMURcIixyZWN0OlwiXFx1MjVBRFwiLHJlZzpcIlxceEFFXCIscmZpc2h0OlwiXFx1Mjk3RFwiLHJmbG9vcjpcIlxcdTIzMEJcIixyZnI6XCJcXHV7MUQ1MkZ9XCIscmhhcmQ6XCJcXHUyMUMxXCIscmhhcnU6XCJcXHUyMUMwXCIscmhhcnVsOlwiXFx1Mjk2Q1wiLHJobzpcIlxcdTAzQzFcIixyaG92OlwiXFx1MDNGMVwiLHJpZ2h0YXJyb3c6XCJcXHUyMTkyXCIscmlnaHRhcnJvd3RhaWw6XCJcXHUyMUEzXCIscmlnaHRoYXJwb29uZG93bjpcIlxcdTIxQzFcIixyaWdodGhhcnBvb251cDpcIlxcdTIxQzBcIixyaWdodGxlZnRhcnJvd3M6XCJcXHUyMUM0XCIscmlnaHRsZWZ0aGFycG9vbnM6XCJcXHUyMUNDXCIscmlnaHRyaWdodGFycm93czpcIlxcdTIxQzlcIixyaWdodHNxdWlnYXJyb3c6XCJcXHUyMTlEXCIscmlnaHR0aHJlZXRpbWVzOlwiXFx1MjJDQ1wiLHJpbmc6XCJcXHUwMkRBXCIscmlzaW5nZG90c2VxOlwiXFx1MjI1M1wiLHJsYXJyOlwiXFx1MjFDNFwiLHJsaGFyOlwiXFx1MjFDQ1wiLHJsbTpcIlxcdTIwMEZcIixybW91c3Q6XCJcXHUyM0IxXCIscm1vdXN0YWNoZTpcIlxcdTIzQjFcIixybm1pZDpcIlxcdTJBRUVcIixyb2FuZzpcIlxcdTI3RURcIixyb2FycjpcIlxcdTIxRkVcIixyb2JyazpcIlxcdTI3RTdcIixyb3BhcjpcIlxcdTI5ODZcIixyb3BmOlwiXFx1ezFENTYzfVwiLHJvcGx1czpcIlxcdTJBMkVcIixyb3RpbWVzOlwiXFx1MkEzNVwiLHJwYXI6XCIpXCIscnBhcmd0OlwiXFx1Mjk5NFwiLHJwcG9saW50OlwiXFx1MkExMlwiLHJyYXJyOlwiXFx1MjFDOVwiLHJzYXF1bzpcIlxcdTIwM0FcIixyc2NyOlwiXFx1ezFENEM3fVwiLHJzaDpcIlxcdTIxQjFcIixyc3FiOlwiXVwiLHJzcXVvOlwiXFx1MjAxOVwiLHJzcXVvcjpcIlxcdTIwMTlcIixydGhyZWU6XCJcXHUyMkNDXCIscnRpbWVzOlwiXFx1MjJDQVwiLHJ0cmk6XCJcXHUyNUI5XCIscnRyaWU6XCJcXHUyMkI1XCIscnRyaWY6XCJcXHUyNUI4XCIscnRyaWx0cmk6XCJcXHUyOUNFXCIscnVsdWhhcjpcIlxcdTI5NjhcIixyeDpcIlxcdTIxMUVcIixzYWN1dGU6XCJcXHUwMTVCXCIsc2JxdW86XCJcXHUyMDFBXCIsc2M6XCJcXHUyMjdCXCIsc2NFOlwiXFx1MkFCNFwiLHNjYXA6XCJcXHUyQUI4XCIsc2Nhcm9uOlwiXFx1MDE2MVwiLHNjY3VlOlwiXFx1MjI3RFwiLHNjZTpcIlxcdTJBQjBcIixzY2VkaWw6XCJcXHUwMTVGXCIsc2NpcmM6XCJcXHUwMTVEXCIsc2NuRTpcIlxcdTJBQjZcIixzY25hcDpcIlxcdTJBQkFcIixzY25zaW06XCJcXHUyMkU5XCIsc2Nwb2xpbnQ6XCJcXHUyQTEzXCIsc2NzaW06XCJcXHUyMjdGXCIsc2N5OlwiXFx1MDQ0MVwiLHNkb3Q6XCJcXHUyMkM1XCIsc2RvdGI6XCJcXHUyMkExXCIsc2RvdGU6XCJcXHUyQTY2XCIsc2VBcnI6XCJcXHUyMUQ4XCIsc2VhcmhrOlwiXFx1MjkyNVwiLHNlYXJyOlwiXFx1MjE5OFwiLHNlYXJyb3c6XCJcXHUyMTk4XCIsc2VjdDpcIlxceEE3XCIsc2VtaTpcIjtcIixzZXN3YXI6XCJcXHUyOTI5XCIsc2V0bWludXM6XCJcXHUyMjE2XCIsc2V0bW46XCJcXHUyMjE2XCIsc2V4dDpcIlxcdTI3MzZcIixzZnI6XCJcXHV7MUQ1MzB9XCIsc2Zyb3duOlwiXFx1MjMyMlwiLHNoYXJwOlwiXFx1MjY2RlwiLHNoY2hjeTpcIlxcdTA0NDlcIixzaGN5OlwiXFx1MDQ0OFwiLHNob3J0bWlkOlwiXFx1MjIyM1wiLHNob3J0cGFyYWxsZWw6XCJcXHUyMjI1XCIsc2h5OlwiXFx4QURcIixzaWdtYTpcIlxcdTAzQzNcIixzaWdtYWY6XCJcXHUwM0MyXCIsc2lnbWF2OlwiXFx1MDNDMlwiLHNpbTpcIlxcdTIyM0NcIixzaW1kb3Q6XCJcXHUyQTZBXCIsc2ltZTpcIlxcdTIyNDNcIixzaW1lcTpcIlxcdTIyNDNcIixzaW1nOlwiXFx1MkE5RVwiLHNpbWdFOlwiXFx1MkFBMFwiLHNpbWw6XCJcXHUyQTlEXCIsc2ltbEU6XCJcXHUyQTlGXCIsc2ltbmU6XCJcXHUyMjQ2XCIsc2ltcGx1czpcIlxcdTJBMjRcIixzaW1yYXJyOlwiXFx1Mjk3MlwiLHNsYXJyOlwiXFx1MjE5MFwiLHNtYWxsc2V0bWludXM6XCJcXHUyMjE2XCIsc21hc2hwOlwiXFx1MkEzM1wiLHNtZXBhcnNsOlwiXFx1MjlFNFwiLHNtaWQ6XCJcXHUyMjIzXCIsc21pbGU6XCJcXHUyMzIzXCIsc210OlwiXFx1MkFBQVwiLHNtdGU6XCJcXHUyQUFDXCIsc210ZXM6XCJcXHUyQUFDXFx1RkUwMFwiLHNvZnRjeTpcIlxcdTA0NENcIixzb2w6XCIvXCIsc29sYjpcIlxcdTI5QzRcIixzb2xiYXI6XCJcXHUyMzNGXCIsc29wZjpcIlxcdXsxRDU2NH1cIixzcGFkZXM6XCJcXHUyNjYwXCIsc3BhZGVzdWl0OlwiXFx1MjY2MFwiLHNwYXI6XCJcXHUyMjI1XCIsc3FjYXA6XCJcXHUyMjkzXCIsc3FjYXBzOlwiXFx1MjI5M1xcdUZFMDBcIixzcWN1cDpcIlxcdTIyOTRcIixzcWN1cHM6XCJcXHUyMjk0XFx1RkUwMFwiLHNxc3ViOlwiXFx1MjI4RlwiLHNxc3ViZTpcIlxcdTIyOTFcIixzcXN1YnNldDpcIlxcdTIyOEZcIixzcXN1YnNldGVxOlwiXFx1MjI5MVwiLHNxc3VwOlwiXFx1MjI5MFwiLHNxc3VwZTpcIlxcdTIyOTJcIixzcXN1cHNldDpcIlxcdTIyOTBcIixzcXN1cHNldGVxOlwiXFx1MjI5MlwiLHNxdTpcIlxcdTI1QTFcIixzcXVhcmU6XCJcXHUyNUExXCIsc3F1YXJmOlwiXFx1MjVBQVwiLHNxdWY6XCJcXHUyNUFBXCIsc3JhcnI6XCJcXHUyMTkyXCIsc3NjcjpcIlxcdXsxRDRDOH1cIixzc2V0bW46XCJcXHUyMjE2XCIsc3NtaWxlOlwiXFx1MjMyM1wiLHNzdGFyZjpcIlxcdTIyQzZcIixzdGFyOlwiXFx1MjYwNlwiLHN0YXJmOlwiXFx1MjYwNVwiLHN0cmFpZ2h0ZXBzaWxvbjpcIlxcdTAzRjVcIixzdHJhaWdodHBoaTpcIlxcdTAzRDVcIixzdHJuczpcIlxceEFGXCIsc3ViOlwiXFx1MjI4MlwiLHN1YkU6XCJcXHUyQUM1XCIsc3ViZG90OlwiXFx1MkFCRFwiLHN1YmU6XCJcXHUyMjg2XCIsc3ViZWRvdDpcIlxcdTJBQzNcIixzdWJtdWx0OlwiXFx1MkFDMVwiLHN1Ym5FOlwiXFx1MkFDQlwiLHN1Ym5lOlwiXFx1MjI4QVwiLHN1YnBsdXM6XCJcXHUyQUJGXCIsc3VicmFycjpcIlxcdTI5NzlcIixzdWJzZXQ6XCJcXHUyMjgyXCIsc3Vic2V0ZXE6XCJcXHUyMjg2XCIsc3Vic2V0ZXFxOlwiXFx1MkFDNVwiLHN1YnNldG5lcTpcIlxcdTIyOEFcIixzdWJzZXRuZXFxOlwiXFx1MkFDQlwiLHN1YnNpbTpcIlxcdTJBQzdcIixzdWJzdWI6XCJcXHUyQUQ1XCIsc3Vic3VwOlwiXFx1MkFEM1wiLHN1Y2M6XCJcXHUyMjdCXCIsc3VjY2FwcHJveDpcIlxcdTJBQjhcIixzdWNjY3VybHllcTpcIlxcdTIyN0RcIixzdWNjZXE6XCJcXHUyQUIwXCIsc3VjY25hcHByb3g6XCJcXHUyQUJBXCIsc3VjY25lcXE6XCJcXHUyQUI2XCIsc3VjY25zaW06XCJcXHUyMkU5XCIsc3VjY3NpbTpcIlxcdTIyN0ZcIixzdW06XCJcXHUyMjExXCIsc3VuZzpcIlxcdTI2NkFcIixzdXAxOlwiXFx4QjlcIixzdXAyOlwiXFx4QjJcIixzdXAzOlwiXFx4QjNcIixzdXA6XCJcXHUyMjgzXCIsc3VwRTpcIlxcdTJBQzZcIixzdXBkb3Q6XCJcXHUyQUJFXCIsc3VwZHN1YjpcIlxcdTJBRDhcIixzdXBlOlwiXFx1MjI4N1wiLHN1cGVkb3Q6XCJcXHUyQUM0XCIsc3VwaHNvbDpcIlxcdTI3QzlcIixzdXBoc3ViOlwiXFx1MkFEN1wiLHN1cGxhcnI6XCJcXHUyOTdCXCIsc3VwbXVsdDpcIlxcdTJBQzJcIixzdXBuRTpcIlxcdTJBQ0NcIixzdXBuZTpcIlxcdTIyOEJcIixzdXBwbHVzOlwiXFx1MkFDMFwiLHN1cHNldDpcIlxcdTIyODNcIixzdXBzZXRlcTpcIlxcdTIyODdcIixzdXBzZXRlcXE6XCJcXHUyQUM2XCIsc3Vwc2V0bmVxOlwiXFx1MjI4QlwiLHN1cHNldG5lcXE6XCJcXHUyQUNDXCIsc3Vwc2ltOlwiXFx1MkFDOFwiLHN1cHN1YjpcIlxcdTJBRDRcIixzdXBzdXA6XCJcXHUyQUQ2XCIsc3dBcnI6XCJcXHUyMUQ5XCIsc3dhcmhrOlwiXFx1MjkyNlwiLHN3YXJyOlwiXFx1MjE5OVwiLHN3YXJyb3c6XCJcXHUyMTk5XCIsc3dud2FyOlwiXFx1MjkyQVwiLHN6bGlnOlwiXFx4REZcIix0YXJnZXQ6XCJcXHUyMzE2XCIsdGF1OlwiXFx1MDNDNFwiLHRicms6XCJcXHUyM0I0XCIsdGNhcm9uOlwiXFx1MDE2NVwiLHRjZWRpbDpcIlxcdTAxNjNcIix0Y3k6XCJcXHUwNDQyXCIsdGRvdDpcIlxcdTIwREJcIix0ZWxyZWM6XCJcXHUyMzE1XCIsdGZyOlwiXFx1ezFENTMxfVwiLHRoZXJlNDpcIlxcdTIyMzRcIix0aGVyZWZvcmU6XCJcXHUyMjM0XCIsdGhldGE6XCJcXHUwM0I4XCIsdGhldGFzeW06XCJcXHUwM0QxXCIsdGhldGF2OlwiXFx1MDNEMVwiLHRoaWNrYXBwcm94OlwiXFx1MjI0OFwiLHRoaWNrc2ltOlwiXFx1MjIzQ1wiLHRoaW5zcDpcIlxcdTIwMDlcIix0aGthcDpcIlxcdTIyNDhcIix0aGtzaW06XCJcXHUyMjNDXCIsdGhvcm46XCJcXHhGRVwiLHRpbGRlOlwiXFx1MDJEQ1wiLHRpbWVzOlwiXFx4RDdcIix0aW1lc2I6XCJcXHUyMkEwXCIsdGltZXNiYXI6XCJcXHUyQTMxXCIsdGltZXNkOlwiXFx1MkEzMFwiLHRpbnQ6XCJcXHUyMjJEXCIsdG9lYTpcIlxcdTI5MjhcIix0b3A6XCJcXHUyMkE0XCIsdG9wYm90OlwiXFx1MjMzNlwiLHRvcGNpcjpcIlxcdTJBRjFcIix0b3BmOlwiXFx1ezFENTY1fVwiLHRvcGZvcms6XCJcXHUyQURBXCIsdG9zYTpcIlxcdTI5MjlcIix0cHJpbWU6XCJcXHUyMDM0XCIsdHJhZGU6XCJcXHUyMTIyXCIsdHJpYW5nbGU6XCJcXHUyNUI1XCIsdHJpYW5nbGVkb3duOlwiXFx1MjVCRlwiLHRyaWFuZ2xlbGVmdDpcIlxcdTI1QzNcIix0cmlhbmdsZWxlZnRlcTpcIlxcdTIyQjRcIix0cmlhbmdsZXE6XCJcXHUyMjVDXCIsdHJpYW5nbGVyaWdodDpcIlxcdTI1QjlcIix0cmlhbmdsZXJpZ2h0ZXE6XCJcXHUyMkI1XCIsdHJpZG90OlwiXFx1MjVFQ1wiLHRyaWU6XCJcXHUyMjVDXCIsdHJpbWludXM6XCJcXHUyQTNBXCIsdHJpcGx1czpcIlxcdTJBMzlcIix0cmlzYjpcIlxcdTI5Q0RcIix0cml0aW1lOlwiXFx1MkEzQlwiLHRycGV6aXVtOlwiXFx1MjNFMlwiLHRzY3I6XCJcXHV7MUQ0Qzl9XCIsdHNjeTpcIlxcdTA0NDZcIix0c2hjeTpcIlxcdTA0NUJcIix0c3Ryb2s6XCJcXHUwMTY3XCIsdHdpeHQ6XCJcXHUyMjZDXCIsdHdvaGVhZGxlZnRhcnJvdzpcIlxcdTIxOUVcIix0d29oZWFkcmlnaHRhcnJvdzpcIlxcdTIxQTBcIix1QXJyOlwiXFx1MjFEMVwiLHVIYXI6XCJcXHUyOTYzXCIsdWFjdXRlOlwiXFx4RkFcIix1YXJyOlwiXFx1MjE5MVwiLHVicmN5OlwiXFx1MDQ1RVwiLHVicmV2ZTpcIlxcdTAxNkRcIix1Y2lyYzpcIlxceEZCXCIsdWN5OlwiXFx1MDQ0M1wiLHVkYXJyOlwiXFx1MjFDNVwiLHVkYmxhYzpcIlxcdTAxNzFcIix1ZGhhcjpcIlxcdTI5NkVcIix1ZmlzaHQ6XCJcXHUyOTdFXCIsdWZyOlwiXFx1ezFENTMyfVwiLHVncmF2ZTpcIlxceEY5XCIsdWhhcmw6XCJcXHUyMUJGXCIsdWhhcnI6XCJcXHUyMUJFXCIsdWhibGs6XCJcXHUyNTgwXCIsdWxjb3JuOlwiXFx1MjMxQ1wiLHVsY29ybmVyOlwiXFx1MjMxQ1wiLHVsY3JvcDpcIlxcdTIzMEZcIix1bHRyaTpcIlxcdTI1RjhcIix1bWFjcjpcIlxcdTAxNkJcIix1bWw6XCJcXHhBOFwiLHVvZ29uOlwiXFx1MDE3M1wiLHVvcGY6XCJcXHV7MUQ1NjZ9XCIsdXBhcnJvdzpcIlxcdTIxOTFcIix1cGRvd25hcnJvdzpcIlxcdTIxOTVcIix1cGhhcnBvb25sZWZ0OlwiXFx1MjFCRlwiLHVwaGFycG9vbnJpZ2h0OlwiXFx1MjFCRVwiLHVwbHVzOlwiXFx1MjI4RVwiLHVwc2k6XCJcXHUwM0M1XCIsdXBzaWg6XCJcXHUwM0QyXCIsdXBzaWxvbjpcIlxcdTAzQzVcIix1cHVwYXJyb3dzOlwiXFx1MjFDOFwiLHVyY29ybjpcIlxcdTIzMURcIix1cmNvcm5lcjpcIlxcdTIzMURcIix1cmNyb3A6XCJcXHUyMzBFXCIsdXJpbmc6XCJcXHUwMTZGXCIsdXJ0cmk6XCJcXHUyNUY5XCIsdXNjcjpcIlxcdXsxRDRDQX1cIix1dGRvdDpcIlxcdTIyRjBcIix1dGlsZGU6XCJcXHUwMTY5XCIsdXRyaTpcIlxcdTI1QjVcIix1dHJpZjpcIlxcdTI1QjRcIix1dWFycjpcIlxcdTIxQzhcIix1dW1sOlwiXFx4RkNcIix1d2FuZ2xlOlwiXFx1MjlBN1wiLHZBcnI6XCJcXHUyMUQ1XCIsdkJhcjpcIlxcdTJBRThcIix2QmFydjpcIlxcdTJBRTlcIix2RGFzaDpcIlxcdTIyQThcIix2YW5ncnQ6XCJcXHUyOTlDXCIsdmFyZXBzaWxvbjpcIlxcdTAzRjVcIix2YXJrYXBwYTpcIlxcdTAzRjBcIix2YXJub3RoaW5nOlwiXFx1MjIwNVwiLHZhcnBoaTpcIlxcdTAzRDVcIix2YXJwaTpcIlxcdTAzRDZcIix2YXJwcm9wdG86XCJcXHUyMjFEXCIsdmFycjpcIlxcdTIxOTVcIix2YXJyaG86XCJcXHUwM0YxXCIsdmFyc2lnbWE6XCJcXHUwM0MyXCIsdmFyc3Vic2V0bmVxOlwiXFx1MjI4QVxcdUZFMDBcIix2YXJzdWJzZXRuZXFxOlwiXFx1MkFDQlxcdUZFMDBcIix2YXJzdXBzZXRuZXE6XCJcXHUyMjhCXFx1RkUwMFwiLHZhcnN1cHNldG5lcXE6XCJcXHUyQUNDXFx1RkUwMFwiLHZhcnRoZXRhOlwiXFx1MDNEMVwiLHZhcnRyaWFuZ2xlbGVmdDpcIlxcdTIyQjJcIix2YXJ0cmlhbmdsZXJpZ2h0OlwiXFx1MjJCM1wiLHZjeTpcIlxcdTA0MzJcIix2ZGFzaDpcIlxcdTIyQTJcIix2ZWU6XCJcXHUyMjI4XCIsdmVlYmFyOlwiXFx1MjJCQlwiLHZlZWVxOlwiXFx1MjI1QVwiLHZlbGxpcDpcIlxcdTIyRUVcIix2ZXJiYXI6XCJ8XCIsdmVydDpcInxcIix2ZnI6XCJcXHV7MUQ1MzN9XCIsdmx0cmk6XCJcXHUyMkIyXCIsdm5zdWI6XCJcXHUyMjgyXFx1MjBEMlwiLHZuc3VwOlwiXFx1MjI4M1xcdTIwRDJcIix2b3BmOlwiXFx1ezFENTY3fVwiLHZwcm9wOlwiXFx1MjIxRFwiLHZydHJpOlwiXFx1MjJCM1wiLHZzY3I6XCJcXHV7MUQ0Q0J9XCIsdnN1Ym5FOlwiXFx1MkFDQlxcdUZFMDBcIix2c3VibmU6XCJcXHUyMjhBXFx1RkUwMFwiLHZzdXBuRTpcIlxcdTJBQ0NcXHVGRTAwXCIsdnN1cG5lOlwiXFx1MjI4QlxcdUZFMDBcIix2emlnemFnOlwiXFx1Mjk5QVwiLHdjaXJjOlwiXFx1MDE3NVwiLHdlZGJhcjpcIlxcdTJBNUZcIix3ZWRnZTpcIlxcdTIyMjdcIix3ZWRnZXE6XCJcXHUyMjU5XCIsd2VpZXJwOlwiXFx1MjExOFwiLHdmcjpcIlxcdXsxRDUzNH1cIix3b3BmOlwiXFx1ezFENTY4fVwiLHdwOlwiXFx1MjExOFwiLHdyOlwiXFx1MjI0MFwiLHdyZWF0aDpcIlxcdTIyNDBcIix3c2NyOlwiXFx1ezFENENDfVwiLHhjYXA6XCJcXHUyMkMyXCIseGNpcmM6XCJcXHUyNUVGXCIseGN1cDpcIlxcdTIyQzNcIix4ZHRyaTpcIlxcdTI1QkRcIix4ZnI6XCJcXHV7MUQ1MzV9XCIseGhBcnI6XCJcXHUyN0ZBXCIseGhhcnI6XCJcXHUyN0Y3XCIseGk6XCJcXHUwM0JFXCIseGxBcnI6XCJcXHUyN0Y4XCIseGxhcnI6XCJcXHUyN0Y1XCIseG1hcDpcIlxcdTI3RkNcIix4bmlzOlwiXFx1MjJGQlwiLHhvZG90OlwiXFx1MkEwMFwiLHhvcGY6XCJcXHV7MUQ1Njl9XCIseG9wbHVzOlwiXFx1MkEwMVwiLHhvdGltZTpcIlxcdTJBMDJcIix4ckFycjpcIlxcdTI3RjlcIix4cmFycjpcIlxcdTI3RjZcIix4c2NyOlwiXFx1ezFENENEfVwiLHhzcWN1cDpcIlxcdTJBMDZcIix4dXBsdXM6XCJcXHUyQTA0XCIseHV0cmk6XCJcXHUyNUIzXCIseHZlZTpcIlxcdTIyQzFcIix4d2VkZ2U6XCJcXHUyMkMwXCIseWFjdXRlOlwiXFx4RkRcIix5YWN5OlwiXFx1MDQ0RlwiLHljaXJjOlwiXFx1MDE3N1wiLHljeTpcIlxcdTA0NEJcIix5ZW46XCJcXHhBNVwiLHlmcjpcIlxcdXsxRDUzNn1cIix5aWN5OlwiXFx1MDQ1N1wiLHlvcGY6XCJcXHV7MUQ1NkF9XCIseXNjcjpcIlxcdXsxRDRDRX1cIix5dWN5OlwiXFx1MDQ0RVwiLHl1bWw6XCJcXHhGRlwiLHphY3V0ZTpcIlxcdTAxN0FcIix6Y2Fyb246XCJcXHUwMTdFXCIsemN5OlwiXFx1MDQzN1wiLHpkb3Q6XCJcXHUwMTdDXCIsemVldHJmOlwiXFx1MjEyOFwiLHpldGE6XCJcXHUwM0I2XCIsemZyOlwiXFx1ezFENTM3fVwiLHpoY3k6XCJcXHUwNDM2XCIsemlncmFycjpcIlxcdTIxRERcIix6b3BmOlwiXFx1ezFENTZCfVwiLHpzY3I6XCJcXHV7MUQ0Q0Z9XCIsendqOlwiXFx1MjAwRFwiLHp3bmo6XCJcXHUyMDBDXCJ9LCR1PXswOjY1NTMzLDEyODo4MzY0LDEzMDo4MjE4LDEzMTo0MDIsMTMyOjgyMjIsMTMzOjgyMzAsMTM0OjgyMjQsMTM1OjgyMjUsMTM2OjcxMCwxMzc6ODI0MCwxMzg6MzUyLDEzOTo4MjQ5LDE0MDozMzgsMTQyOjM4MSwxNDU6ODIxNiwxNDY6ODIxNywxNDc6ODIyMCwxNDg6ODIyMSwxNDk6ODIyNiwxNTA6ODIxMSwxNTE6ODIxMiwxNTI6NzMyLDE1Mzo4NDgyLDE1NDozNTMsMTU1OjgyNTAsMTU2OjMzOSwxNTg6MzgyLDE1OTozNzZ9O2Z1bmN0aW9uIEQwKHUpe3JldHVybiB1LnJlcGxhY2UoLyYoPzpbYS16QS1aXSt8I1t4WF1bXFxkYS1mQS1GXSt8I1xcZCspOy9nLGU9PntpZihlLmNoYXJBdCgxKT09PVwiI1wiKXtsZXQgaT1lLmNoYXJBdCgyKSxuPWk9PT1cIlhcInx8aT09PVwieFwiP3BhcnNlSW50KGUuc2xpY2UoMyksMTYpOnBhcnNlSW50KGUuc2xpY2UoMiksMTApO3JldHVybiBDMChuKX1yZXR1cm4gRTBbZS5zbGljZSgxLC0xKV18fGV9KX1mdW5jdGlvbiBDMCh1KXtyZXR1cm4gdT49NTUyOTYmJnU8PTU3MzQzfHx1PjExMTQxMTE/XCJcXHVGRkZEXCI6KHUgaW4gJHUmJih1PSR1W3VdKSxTdHJpbmcuZnJvbUNvZGVQb2ludCh1KSl9ZnVuY3Rpb24gdzAodSxlKXtyZXR1cm4gdS5zdGFydFBvcz11LnRva2VuUG9zPXUuaW5kZXgsdS5zdGFydENvbHVtbj11LmNvbFBvcz11LmNvbHVtbix1LnN0YXJ0TGluZT11LmxpbmVQb3M9dS5saW5lLHUudG9rZW49Vlt1LmN1cnJlbnRDaGFyXSY4MTkyP3EwKHUsZSk6WXUodSxlLDApLHUudG9rZW59ZnVuY3Rpb24gcTAodSxlKXtsZXQgaT11LmN1cnJlbnRDaGFyLG49cih1KSx0PXUuaW5kZXg7Zm9yKDtuIT09aTspdS5pbmRleD49dS5lbmQmJmYodSwxNCksbj1yKHUpO3JldHVybiBuIT09aSYmZih1LDE0KSx1LnRva2VuVmFsdWU9dS5zb3VyY2Uuc2xpY2UodCx1LmluZGV4KSxyKHUpLGUmNTEyJiYodS50b2tlblJhdz11LnNvdXJjZS5zbGljZSh1LnRva2VuUG9zLHUuaW5kZXgpKSwxMzQyODMyNjd9ZnVuY3Rpb24gVjIodSxlKXtpZih1LnN0YXJ0UG9zPXUudG9rZW5Qb3M9dS5pbmRleCx1LnN0YXJ0Q29sdW1uPXUuY29sUG9zPXUuY29sdW1uLHUuc3RhcnRMaW5lPXUubGluZVBvcz11LmxpbmUsdS5pbmRleD49dS5lbmQpcmV0dXJuIHUudG9rZW49MTA0ODU3Njtzd2l0Y2goV3VbdS5zb3VyY2UuY2hhckNvZGVBdCh1LmluZGV4KV0pe2Nhc2UgODQ1NjI1ODp7cih1KSx1LmN1cnJlbnRDaGFyPT09NDc/KHIodSksdS50b2tlbj0yNSk6dS50b2tlbj04NDU2MjU4O2JyZWFrfWNhc2UgMjE2MjcwMDp7cih1KSx1LnRva2VuPTIxNjI3MDA7YnJlYWt9ZGVmYXVsdDp7bGV0IG49MDtmb3IoO3UuaW5kZXg8dS5lbmQ7KXtsZXQgbz1WW3Uuc291cmNlLmNoYXJDb2RlQXQodS5pbmRleCldO2lmKG8mMTAyND8obnw9NSxYKHUpKTpvJjIwNDg/KFkodSxuKSxuPW4mLTV8MSk6cih1KSxWW3UuY3VycmVudENoYXJdJjE2Mzg0KWJyZWFrfWxldCB0PXUuc291cmNlLnNsaWNlKHUudG9rZW5Qb3MsdS5pbmRleCk7ZSY1MTImJih1LnRva2VuUmF3PXQpLHUudG9rZW5WYWx1ZT1EMCh0KSx1LnRva2VuPTEzOH19cmV0dXJuIHUudG9rZW59ZnVuY3Rpb24gTjEodSl7aWYoKHUudG9rZW4mMTQzMzYwKT09PTE0MzM2MCl7bGV0e2luZGV4OmV9PXUsaT11LmN1cnJlbnRDaGFyO2Zvcig7VltpXSYzMjc3MDspaT1yKHUpO3UudG9rZW5WYWx1ZSs9dS5zb3VyY2Uuc2xpY2UoZSx1LmluZGV4KX1yZXR1cm4gdS50b2tlbj0yMDg4OTcsdS50b2tlbn1mdW5jdGlvbiBkMih1LGUsaSl7KHUuZmxhZ3MmMSk9PT0wJiYodS50b2tlbiYxMDQ4NTc2KSE9PTEwNDg1NzYmJiFpJiZmKHUsMjgsR1t1LnRva2VuJjI1NV0pLFUodSxlLDEwNzQ3OTA0MTcpfWZ1bmN0aW9uIFp1KHUsZSxpLG4pe3JldHVybiBlLWk8MTMmJm49PT1cInVzZSBzdHJpY3RcIiYmKCh1LnRva2VuJjEwNDg1NzYpPT09MTA0ODU3Nnx8dS5mbGFncyYxKT8xOjB9ZnVuY3Rpb24gVjEodSxlLGkpe3JldHVybiB1LnRva2VuIT09aT8wOihFKHUsZSksMSl9ZnVuY3Rpb24gVSh1LGUsaSl7cmV0dXJuIHUudG9rZW4hPT1pPyExOihFKHUsZSksITApfWZ1bmN0aW9uIHcodSxlLGkpe3UudG9rZW4hPT1pJiZmKHUsMjMsR1tpJjI1NV0pLEUodSxlKX1mdW5jdGlvbiB2Mih1LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIkFycmF5RXhwcmVzc2lvblwiOmUudHlwZT1cIkFycmF5UGF0dGVyblwiO2xldCBpPWUuZWxlbWVudHM7Zm9yKGxldCB0PTAsbz1pLmxlbmd0aDt0PG87Kyt0KXtsZXQgbD1pW3RdO2wmJnYyKHUsbCl9cmV0dXJuO2Nhc2VcIk9iamVjdEV4cHJlc3Npb25cIjplLnR5cGU9XCJPYmplY3RQYXR0ZXJuXCI7bGV0IG49ZS5wcm9wZXJ0aWVzO2ZvcihsZXQgdD0wLG89bi5sZW5ndGg7dDxvOysrdCl2Mih1LG5bdF0pO3JldHVybjtjYXNlXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiOmUudHlwZT1cIkFzc2lnbm1lbnRQYXR0ZXJuXCIsZS5vcGVyYXRvciE9PVwiPVwiJiZmKHUsNjgpLGRlbGV0ZSBlLm9wZXJhdG9yLHYyKHUsZS5sZWZ0KTtyZXR1cm47Y2FzZVwiUHJvcGVydHlcIjp2Mih1LGUudmFsdWUpO3JldHVybjtjYXNlXCJTcHJlYWRFbGVtZW50XCI6ZS50eXBlPVwiUmVzdEVsZW1lbnRcIix2Mih1LGUuYXJndW1lbnQpfX1mdW5jdGlvbiBvMSh1LGUsaSxuLHQpe2UmMTAyNCYmKChuJjM2ODY0KT09PTM2ODY0JiZmKHUsMTE0KSwhdCYmKG4mNTM3MDc5ODA4KT09PTUzNzA3OTgwOCYmZih1LDExNSkpLChuJjIwNDgwKT09PTIwNDgwJiZmKHUsOTkpLGkmMjQmJm49PT0yNDE3MzkmJmYodSw5NyksZSY0MTk2MzUyJiZuPT09MjA5MDA4JiZmKHUsOTUpLGUmMjA5ODE3NiYmbj09PTI0MTc3MyYmZih1LDk0LFwieWllbGRcIil9ZnVuY3Rpb24gUXUodSxlLGkpe2UmMTAyNCYmKChpJjM2ODY0KT09PTM2ODY0JiZmKHUsMTE0KSwoaSY1MzcwNzk4MDgpPT09NTM3MDc5ODA4JiZmKHUsMTE1KSxpPT09MTIyJiZmKHUsOTIpLGk9PT0xMjEmJmYodSw5MikpLChpJjIwNDgwKT09PTIwNDgwJiZmKHUsOTkpLGUmNDE5NjM1MiYmaT09PTIwOTAwOCYmZih1LDk1KSxlJjIwOTgxNzYmJmk9PT0yNDE3NzMmJmYodSw5NCxcInlpZWxkXCIpfWZ1bmN0aW9uIEd1KHUsZSxpKXtyZXR1cm4gaT09PTIwOTAwOCYmKGUmNDE5NjM1MiYmZih1LDk1KSx1LmRlc3RydWN0aWJsZXw9MTI4KSxpPT09MjQxNzczJiZlJjIwOTcxNTImJmYodSw5NCxcInlpZWxkXCIpLChpJjIwNDgwKT09PTIwNDgwfHwoaSYzNjg2NCk9PT0zNjg2NHx8aT09MTIyfWZ1bmN0aW9uIEIwKHUpe3JldHVybiB1LnByb3BlcnR5P3UucHJvcGVydHkudHlwZT09PVwiUHJpdmF0ZUlkZW50aWZpZXJcIjohMX1mdW5jdGlvbiB4dSh1LGUsaSxuKXtmb3IoO2U7KXtpZihlW1wiJFwiK2ldKXJldHVybiBuJiZmKHUsMTMzKSwxO24mJmUubG9vcCYmKG49MCksZT1lLiR9cmV0dXJuIDB9ZnVuY3Rpb24gUzAodSxlLGkpe2xldCBuPWU7Zm9yKDtuOyluW1wiJFwiK2ldJiZmKHUsMTMyLGkpLG49bi4kO2VbXCIkXCIraV09MX1mdW5jdGlvbiB2KHUsZSxpLG4sdCxvKXtyZXR1cm4gZSYyJiYoby5zdGFydD1pLG8uZW5kPXUuc3RhcnRQb3Msby5yYW5nZT1baSx1LnN0YXJ0UG9zXSksZSY0JiYoby5sb2M9e3N0YXJ0OntsaW5lOm4sY29sdW1uOnR9LGVuZDp7bGluZTp1LnN0YXJ0TGluZSxjb2x1bW46dS5zdGFydENvbHVtbn19LHUuc291cmNlRmlsZSYmKG8ubG9jLnNvdXJjZT11LnNvdXJjZUZpbGUpKSxvfWZ1bmN0aW9uIGwxKHUpe3N3aXRjaCh1LnR5cGUpe2Nhc2VcIkpTWElkZW50aWZpZXJcIjpyZXR1cm4gdS5uYW1lO2Nhc2VcIkpTWE5hbWVzcGFjZWROYW1lXCI6cmV0dXJuIHUubmFtZXNwYWNlK1wiOlwiK3UubmFtZTtjYXNlXCJKU1hNZW1iZXJFeHByZXNzaW9uXCI6cmV0dXJuIGwxKHUub2JqZWN0KStcIi5cIitsMSh1LnByb3BlcnR5KX19ZnVuY3Rpb24gZjEodSxlLGkpe2xldCBuPW8yKGoyKCksMTAyNCk7cmV0dXJuIEIyKHUsZSxuLGksMSwwKSxufWZ1bmN0aW9uIGoxKHUsZSl7bGV0e2luZGV4OmksbGluZTpuLGNvbHVtbjp0fT11O2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGw9bmV3IEFycmF5KG8+Mj9vLTI6MCksYz0yO2M8bztjKyspbFtjLTJdPWFyZ3VtZW50c1tjXTtyZXR1cm57dHlwZTplLHBhcmFtczpsLGluZGV4OmksbGluZTpuLGNvbHVtbjp0fX1mdW5jdGlvbiBqMigpe3JldHVybntwYXJlbnQ6dm9pZCAwLHR5cGU6Mn19ZnVuY3Rpb24gbzIodSxlKXtyZXR1cm57cGFyZW50OnUsdHlwZTplLHNjb3BlRXJyb3I6dm9pZCAwfX1mdW5jdGlvbiBxMih1LGUsaSxuLHQsbyl7dCY0P3B1KHUsZSxpLG4sdCk6QjIodSxlLGksbix0LG8pLG8mNjQmJl8yKHUsbil9ZnVuY3Rpb24gQjIodSxlLGksbix0LG8pe2xldCBsPWlbXCIjXCIrbl07bCYmKGwmMik9PT0wJiYodCYxP2kuc2NvcGVFcnJvcj1qMSh1LDE0MCxuKTplJjI1NiYmbCY2NCYmbyYyfHxmKHUsMTQwLG4pKSxpLnR5cGUmMTI4JiZpLnBhcmVudFtcIiNcIituXSYmKGkucGFyZW50W1wiI1wiK25dJjIpPT09MCYmZih1LDE0MCxuKSxpLnR5cGUmMTAyNCYmbCYmKGwmMik9PT0wJiZ0JjEmJihpLnNjb3BlRXJyb3I9ajEodSwxNDAsbikpLGkudHlwZSY2NCYmaS5wYXJlbnRbXCIjXCIrbl0mNzY4JiZmKHUsMTUzLG4pLGlbXCIjXCIrbl09dH1mdW5jdGlvbiBwdSh1LGUsaSxuLHQpe2xldCBvPWk7Zm9yKDtvJiYoby50eXBlJjI1Nik9PT0wOyl7bGV0IGw9b1tcIiNcIituXTtsJjI0OCYmKGUmMjU2JiYoZSYxMDI0KT09PTAmJih0JjEyOCYmbCY2OHx8bCYxMjgmJnQmNjgpfHxmKHUsMTQwLG4pKSxvPT09aSYmbCYxJiZ0JjEmJihvLnNjb3BlRXJyb3I9ajEodSwxNDAsbikpLGwmNzY4JiYoKGwmNTEyKT09PTB8fChlJjI1Nik9PT0wfHxlJjEwMjQpJiZmKHUsMTQwLG4pLG9bXCIjXCIrbl09dCxvPW8ucGFyZW50fX1mdW5jdGlvbiBfMih1LGUpe3UuZXhwb3J0ZWROYW1lcyE9PXZvaWQgMCYmZSE9PVwiXCImJih1LmV4cG9ydGVkTmFtZXNbXCIjXCIrZV0mJmYodSwxNDEsZSksdS5leHBvcnRlZE5hbWVzW1wiI1wiK2VdPTEpfWZ1bmN0aW9uIEYwKHUsZSl7dS5leHBvcnRlZEJpbmRpbmdzIT09dm9pZCAwJiZlIT09XCJcIiYmKHUuZXhwb3J0ZWRCaW5kaW5nc1tcIiNcIitlXT0xKX1mdW5jdGlvbiBUMCh1LGUpe3JldHVybiBmdW5jdGlvbihpLG4sdCxvLGwpe2xldCBjPXt0eXBlOmksdmFsdWU6bn07dSYyJiYoYy5zdGFydD10LGMuZW5kPW8sYy5yYW5nZT1bdCxvXSksdSY0JiYoYy5sb2M9bCksZS5wdXNoKGMpfX1mdW5jdGlvbiBMMCh1LGUpe3JldHVybiBmdW5jdGlvbihpLG4sdCxvKXtsZXQgbD17dG9rZW46aX07dSYyJiYobC5zdGFydD1uLGwuZW5kPXQsbC5yYW5nZT1bbix0XSksdSY0JiYobC5sb2M9byksZS5wdXNoKGwpfX1mdW5jdGlvbiBfMSh1LGUpe3JldHVybiB1JjIwOTgxNzY/dSYyMDQ4JiZlPT09MjA5MDA4fHx1JjIwOTcxNTImJmU9PT0yNDE3NzM/ITE6KGUmMTQzMzYwKT09PTE0MzM2MHx8KGUmMTIyODgpPT09MTIyODg6KGUmMTQzMzYwKT09PTE0MzM2MHx8KGUmMTIyODgpPT09MTIyODh8fChlJjM2ODY0KT09PTM2ODY0fWZ1bmN0aW9uIE0xKHUsZSxpLG4peyhpJjUzNzA3OTgwOCk9PT01MzcwNzk4MDgmJihlJjEwMjQmJmYodSwxMTUpLG4mJih1LmZsYWdzfD01MTIpKSxfMShlLGkpfHxmKHUsMCl9ZnVuY3Rpb24gTzAodSxlLGksbil7cmV0dXJue3NvdXJjZTp1LGZsYWdzOjAsaW5kZXg6MCxsaW5lOjEsY29sdW1uOjAsc3RhcnRQb3M6MCxlbmQ6dS5sZW5ndGgsdG9rZW5Qb3M6MCxzdGFydENvbHVtbjowLGNvbFBvczowLGxpbmVQb3M6MSxzdGFydExpbmU6MSxzb3VyY2VGaWxlOmUsdG9rZW5WYWx1ZTpcIlwiLHRva2VuOjEwNDg1NzYsdG9rZW5SYXc6XCJcIix0b2tlblJlZ0V4cDp2b2lkIDAsY3VycmVudENoYXI6dS5jaGFyQ29kZUF0KDApLGV4cG9ydGVkTmFtZXM6W10sZXhwb3J0ZWRCaW5kaW5nczpbXSxhc3NpZ25hYmxlOjEsZGVzdHJ1Y3RpYmxlOjAsb25Db21tZW50Omksb25Ub2tlbjpuLGxlYWRpbmdEZWNvcmF0b3JzOltdfX1mdW5jdGlvbiBVMSh1LGUsaSl7bGV0IG49XCJcIix0LG87ZSE9bnVsbCYmKGUubW9kdWxlJiYoaXw9MzA3MiksZS5uZXh0JiYoaXw9MSksZS5sb2MmJihpfD00KSxlLnJhbmdlcyYmKGl8PTIpLGUudW5pcXVlS2V5SW5QYXR0ZXJuJiYoaXw9LTIxNDc0ODM2NDgpLGUubGV4aWNhbCYmKGl8PTY0KSxlLndlYmNvbXBhdCYmKGl8PTI1NiksZS5kaXJlY3RpdmVzJiYoaXw9NTIwKSxlLmdsb2JhbFJldHVybiYmKGl8PTMyKSxlLnJhdyYmKGl8PTUxMiksZS5wcmVzZXJ2ZVBhcmVucyYmKGl8PTEyOCksZS5pbXBsaWVkU3RyaWN0JiYoaXw9MTAyNCksZS5qc3gmJihpfD0xNiksZS5pZGVudGlmaWVyUGF0dGVybiYmKGl8PTI2ODQzNTQ1NiksZS5zcGVjRGV2aWF0aW9uJiYoaXw9NTM2ODcwOTEyKSxlLnNvdXJjZSYmKG49ZS5zb3VyY2UpLGUub25Db21tZW50IT1udWxsJiYodD1BcnJheS5pc0FycmF5KGUub25Db21tZW50KT9UMChpLGUub25Db21tZW50KTplLm9uQ29tbWVudCksZS5vblRva2VuIT1udWxsJiYobz1BcnJheS5pc0FycmF5KGUub25Ub2tlbik/TDAoaSxlLm9uVG9rZW4pOmUub25Ub2tlbikpO2xldCBsPU8wKHUsbix0LG8pO2kmMSYmYzIobCk7bGV0IGM9aSY2ND9qMigpOnZvaWQgMCxzPVtdLGg9XCJzY3JpcHRcIjtpZihpJjIwNDgpe2lmKGg9XCJtb2R1bGVcIixzPVIwKGwsaXw4MTkyLGMpLGMpZm9yKGxldCBnIGluIGwuZXhwb3J0ZWRCaW5kaW5ncylnWzBdPT09XCIjXCImJiFjW2ddJiZmKGwsMTQyLGcuc2xpY2UoMSkpfWVsc2Ugcz1JMChsLGl8ODE5MixjKTtsZXQgYj17dHlwZTpcIlByb2dyYW1cIixzb3VyY2VUeXBlOmgsYm9keTpzfTtyZXR1cm4gaSYyJiYoYi5zdGFydD0wLGIuZW5kPXUubGVuZ3RoLGIucmFuZ2U9WzAsdS5sZW5ndGhdKSxpJjQmJihiLmxvYz17c3RhcnQ6e2xpbmU6MSxjb2x1bW46MH0sZW5kOntsaW5lOmwubGluZSxjb2x1bW46bC5jb2x1bW59fSxsLnNvdXJjZUZpbGUmJihiLmxvYy5zb3VyY2U9bikpLGJ9ZnVuY3Rpb24gSTAodSxlLGkpe0UodSxlfDMyNzY4fDEwNzM3NDE4MjQpO2xldCBuPVtdO2Zvcig7dS50b2tlbj09PTEzNDI4MzI2Nzspe2xldHtpbmRleDp0LHRva2VuUG9zOm8sdG9rZW5WYWx1ZTpsLGxpbmVQb3M6Yyxjb2xQb3M6cyx0b2tlbjpofT11LGI9YTIodSxlKTtadSh1LHQsbyxsKSYmKGV8PTEwMjQpLG4ucHVzaChYMSh1LGUsYixoLG8sYyxzKSl9Zm9yKDt1LnRva2VuIT09MTA0ODU3Njspbi5wdXNoKEcyKHUsZSxpLDQse30pKTtyZXR1cm4gbn1mdW5jdGlvbiBSMCh1LGUsaSl7RSh1LGV8MzI3NjgpO2xldCBuPVtdO2lmKGUmOClmb3IoO3UudG9rZW49PT0xMzQyODMyNjc7KXtsZXR7dG9rZW5Qb3M6dCxsaW5lUG9zOm8sY29sUG9zOmwsdG9rZW46Y309dTtuLnB1c2goWDEodSxlLGEyKHUsZSksYyx0LG8sbCkpfWZvcig7dS50b2tlbiE9PTEwNDg1NzY7KW4ucHVzaChOMCh1LGUsaSkpO3JldHVybiBufWZ1bmN0aW9uIE4wKHUsZSxpKXt1LmxlYWRpbmdEZWNvcmF0b3JzPWIxKHUsZSk7bGV0IG47c3dpdGNoKHUudG9rZW4pe2Nhc2UgMjA1NjY6bj11dCh1LGUsaSk7YnJlYWs7Y2FzZSA4NjEwODpuPXgwKHUsZSxpKTticmVhaztkZWZhdWx0Om49RzIodSxlLGksNCx7fSl9cmV0dXJuIHUubGVhZGluZ0RlY29yYXRvcnMubGVuZ3RoJiZmKHUsMTY0KSxufWZ1bmN0aW9uIEcyKHUsZSxpLG4sdCl7bGV0IG89dS50b2tlblBvcyxsPXUubGluZVBvcyxjPXUuY29sUG9zO3N3aXRjaCh1LnRva2VuKXtjYXNlIDg2MTA2OnJldHVybiBUMih1LGUsaSxuLDEsMCwwLG8sbCxjKTtjYXNlIDEzMzpjYXNlIDg2MDk2OnJldHVybiBaMSh1LGUsaSwwLG8sbCxjKTtjYXNlIDg2MDkyOnJldHVybiB6MSh1LGUsaSwxNiwwLG8sbCxjKTtjYXNlIDI0MTczOTpyZXR1cm4gUTAodSxlLGksbixvLGwsYyk7Y2FzZSAyMDU2NjpmKHUsMTAwLFwiZXhwb3J0XCIpO2Nhc2UgODYxMDg6c3dpdGNoKEUodSxlKSx1LnRva2VuKXtjYXNlIDY3MTc0NDExOnJldHVybiBjZSh1LGUsbyxsLGMpO2Nhc2UgNjcxMDg4Nzc6cmV0dXJuIGZlKHUsZSxvLGwsYyk7ZGVmYXVsdDpmKHUsMTAwLFwiaW1wb3J0XCIpfWNhc2UgMjA5MDA3OnJldHVybiB1ZSh1LGUsaSxuLHQsMSxvLGwsYyk7ZGVmYXVsdDpyZXR1cm4geDIodSxlLGksbix0LDEsbyxsLGMpfX1mdW5jdGlvbiB4Mih1LGUsaSxuLHQsbyxsLGMscyl7c3dpdGNoKHUudG9rZW4pe2Nhc2UgODYwOTA6cmV0dXJuIGllKHUsZSxpLDAsbCxjLHMpO2Nhc2UgMjA1NzQ6cmV0dXJuIGowKHUsZSxsLGMscyk7Y2FzZSAyMDU3MTpyZXR1cm4gVTAodSxlLGksdCxsLGMscyk7Y2FzZSAyMDU2OTpyZXR1cm4gRzAodSxlLGksdCxsLGMscyk7Y2FzZSAyMDU2NDpyZXR1cm4gWjAodSxlLGksdCxsLGMscyk7Y2FzZSAyMDU4MDpyZXR1cm4gWDAodSxlLGksdCxsLGMscyk7Y2FzZSA4NjExMjpyZXR1cm4gSjAodSxlLGksdCxsLGMscyk7Y2FzZSAxMDc0NzkwNDE3OnJldHVybiBfMCh1LGUsbCxjLHMpO2Nhc2UgMjE2MjcwMDpyZXR1cm4gYzEodSxlLGkmJm8yKGksMiksdCxsLGMscyk7Y2FzZSA4NjExNDpyZXR1cm4gTTAodSxlLGwsYyxzKTtjYXNlIDIwNTU3OnJldHVybiBIMCh1LGUsdCxsLGMscyk7Y2FzZSAyMDU2MTpyZXR1cm4gejAodSxlLHQsbCxjLHMpO2Nhc2UgMjA1Nzk6cmV0dXJuIFkwKHUsZSxpLHQsbCxjLHMpO2Nhc2UgMjA1ODE6cmV0dXJuIEswKHUsZSxpLHQsbCxjLHMpO2Nhc2UgMjA1NjI6cmV0dXJuIFcwKHUsZSxsLGMscyk7Y2FzZSAyMDkwMDc6cmV0dXJuIHVlKHUsZSxpLG4sdCwwLGwsYyxzKTtjYXNlIDIwNTU5OmYodSwxNTYpO2Nhc2UgMjA1Njg6Zih1LDE1Nyk7Y2FzZSA4NjEwNjpmKHUsZSYxMDI0PzczOihlJjI1Nik8MT83NTo3NCk7Y2FzZSA4NjA5NjpmKHUsNzYpO2RlZmF1bHQ6cmV0dXJuIFYwKHUsZSxpLG4sdCxvLGwsYyxzKX19ZnVuY3Rpb24gVjAodSxlLGksbix0LG8sbCxjLHMpe2xldHt0b2tlblZhbHVlOmgsdG9rZW46Yn09dSxnO3N3aXRjaChiKXtjYXNlIDI0MTczOTpnPXoodSxlLDApLGUmMTAyNCYmZih1LDgyKSx1LnRva2VuPT09NjkyNzE1NzEmJmYodSw4MSk7YnJlYWs7ZGVmYXVsdDpnPWgyKHUsZSwyLDAsMSwwLDAsMSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyl9cmV0dXJuIGImMTQzMzYwJiZ1LnRva2VuPT09MjE/SjEodSxlLGksbix0LGgsZyxiLG8sbCxjLHMpOihnPVcodSxlLGcsMCwwLGwsYyxzKSxnPXgodSxlLDAsMCxsLGMscyxnKSx1LnRva2VuPT09MTgmJihnPVMyKHUsZSwwLGwsYyxzLGcpKSxIMih1LGUsZyxsLGMscykpfWZ1bmN0aW9uIGMxKHUsZSxpLG4sdCxvLGwpe2xldCBjPVtdO2Zvcih3KHUsZXwzMjc2OCwyMTYyNzAwKTt1LnRva2VuIT09MTA3NDc5MDQxNTspYy5wdXNoKEcyKHUsZSxpLDIseyQ6bn0pKTtyZXR1cm4gdyh1LGV8MzI3NjgsMTA3NDc5MDQxNSksdih1LGUsdCxvLGwse3R5cGU6XCJCbG9ja1N0YXRlbWVudFwiLGJvZHk6Y30pfWZ1bmN0aW9uIGowKHUsZSxpLG4sdCl7KGUmMzIpPDEmJmUmODE5MiYmZih1LDg5KSxFKHUsZXwzMjc2OCk7bGV0IG89dS5mbGFncyYxfHx1LnRva2VuJjEwNDg1NzY/bnVsbDpmMih1LGUsMCwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gZDIodSxlfDMyNzY4KSx2KHUsZSxpLG4sdCx7dHlwZTpcIlJldHVyblN0YXRlbWVudFwiLGFyZ3VtZW50Om99KX1mdW5jdGlvbiBIMih1LGUsaSxuLHQsbyl7cmV0dXJuIGQyKHUsZXwzMjc2OCksdih1LGUsbix0LG8se3R5cGU6XCJFeHByZXNzaW9uU3RhdGVtZW50XCIsZXhwcmVzc2lvbjppfSl9ZnVuY3Rpb24gSjEodSxlLGksbix0LG8sbCxjLHMsaCxiLGcpe28xKHUsZSwwLGMsMSksUzAodSx0LG8pLEUodSxlfDMyNzY4KTtsZXQgYT1zJiYoZSYxMDI0KTwxJiZlJjI1NiYmdS50b2tlbj09PTg2MTA2P1QyKHUsZSxvMihpLDIpLG4sMCwwLDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpOngyKHUsZSxpLG4sdCxzLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gdih1LGUsaCxiLGcse3R5cGU6XCJMYWJlbGVkU3RhdGVtZW50XCIsbGFiZWw6bCxib2R5OmF9KX1mdW5jdGlvbiB1ZSh1LGUsaSxuLHQsbyxsLGMscyl7bGV0e3Rva2VuOmgsdG9rZW5WYWx1ZTpifT11LGc9eih1LGUsMCk7aWYodS50b2tlbj09PTIxKXJldHVybiBKMSh1LGUsaSxuLHQsYixnLGgsMSxsLGMscyk7bGV0IGE9dS5mbGFncyYxO2lmKCFhKXtpZih1LnRva2VuPT09ODYxMDYpcmV0dXJuIG98fGYodSwxMTkpLFQyKHUsZSxpLG4sMSwwLDEsbCxjLHMpO2lmKCh1LnRva2VuJjE0MzM2MCk9PT0xNDMzNjApcmV0dXJuIGc9a2UodSxlLDEsbCxjLHMpLHUudG9rZW49PT0xOCYmKGc9UzIodSxlLDAsbCxjLHMsZykpLEgyKHUsZSxnLGwsYyxzKX1yZXR1cm4gdS50b2tlbj09PTY3MTc0NDExP2c9JDEodSxlLGcsMSwxLDAsYSxsLGMscyk6KHUudG9rZW49PT0xMCYmKE0xKHUsZSxoLDEpLGc9ZzEodSxlLHUudG9rZW5WYWx1ZSxnLDAsMSwwLGwsYyxzKSksdS5hc3NpZ25hYmxlPTEpLGc9Vyh1LGUsZywwLDAsbCxjLHMpLHUudG9rZW49PT0xOCYmKGc9UzIodSxlLDAsbCxjLHMsZykpLGc9eCh1LGUsMCwwLGwsYyxzLGcpLHUuYXNzaWduYWJsZT0xLEgyKHUsZSxnLGwsYyxzKX1mdW5jdGlvbiBYMSh1LGUsaSxuLHQsbyxsKXtyZXR1cm4gbiE9PTEwNzQ3OTA0MTcmJih1LmFzc2lnbmFibGU9MixpPVcodSxlLGksMCwwLHQsbyxsKSx1LnRva2VuIT09MTA3NDc5MDQxNyYmKGk9eCh1LGUsMCwwLHQsbyxsLGkpLHUudG9rZW49PT0xOCYmKGk9UzIodSxlLDAsdCxvLGwsaSkpKSxkMih1LGV8MzI3NjgpKSxlJjgmJmkudHlwZT09PVwiTGl0ZXJhbFwiJiZ0eXBlb2YgaS52YWx1ZT09XCJzdHJpbmdcIj92KHUsZSx0LG8sbCx7dHlwZTpcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIixleHByZXNzaW9uOmksZGlyZWN0aXZlOmkucmF3LnNsaWNlKDEsLTEpfSk6dih1LGUsdCxvLGwse3R5cGU6XCJFeHByZXNzaW9uU3RhdGVtZW50XCIsZXhwcmVzc2lvbjppfSl9ZnVuY3Rpb24gXzAodSxlLGksbix0KXtyZXR1cm4gRSh1LGV8MzI3NjgpLHYodSxlLGksbix0LHt0eXBlOlwiRW1wdHlTdGF0ZW1lbnRcIn0pfWZ1bmN0aW9uIE0wKHUsZSxpLG4sdCl7RSh1LGV8MzI3NjgpLHUuZmxhZ3MmMSYmZih1LDg3KTtsZXQgbz1mMih1LGUsMCwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gZDIodSxlfDMyNzY4KSx2KHUsZSxpLG4sdCx7dHlwZTpcIlRocm93U3RhdGVtZW50XCIsYXJndW1lbnQ6b30pfWZ1bmN0aW9uIFUwKHUsZSxpLG4sdCxvLGwpe0UodSxlKSx3KHUsZXwzMjc2OCw2NzE3NDQxMSksdS5hc3NpZ25hYmxlPTE7bGV0IGM9ZjIodSxlLDAsMSx1LnRva2VuUG9zLHUubGluZSx1LmNvbFBvcyk7dyh1LGV8MzI3NjgsMTYpO2xldCBzPWVlKHUsZSxpLG4sdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpLGg9bnVsbDtyZXR1cm4gdS50b2tlbj09PTIwNTY1JiYoRSh1LGV8MzI3NjgpLGg9ZWUodSxlLGksbix1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpLHYodSxlLHQsbyxsLHt0eXBlOlwiSWZTdGF0ZW1lbnRcIix0ZXN0OmMsY29uc2VxdWVudDpzLGFsdGVybmF0ZTpofSl9ZnVuY3Rpb24gZWUodSxlLGksbix0LG8sbCl7cmV0dXJuIGUmMTAyNHx8KGUmMjU2KTwxfHx1LnRva2VuIT09ODYxMDY/eDIodSxlLGksMCx7JDpufSwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTpUMih1LGUsbzIoaSwyKSwwLDAsMCwwLHQsbyxsKX1mdW5jdGlvbiBKMCh1LGUsaSxuLHQsbyxsKXtFKHUsZSksdyh1LGV8MzI3NjgsNjcxNzQ0MTEpO2xldCBjPWYyKHUsZSwwLDEsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3codSxlLDE2KSx3KHUsZSwyMTYyNzAwKTtsZXQgcz1bXSxoPTA7Zm9yKGkmJihpPW8yKGksOCkpO3UudG9rZW4hPT0xMDc0NzkwNDE1Oyl7bGV0e3Rva2VuUG9zOmIsbGluZVBvczpnLGNvbFBvczphfT11LEE9bnVsbCxDPVtdO2ZvcihVKHUsZXwzMjc2OCwyMDU1OCk/QT1mMih1LGUsMCwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKToodyh1LGV8MzI3NjgsMjA1NjMpLGgmJmYodSw4NiksaD0xKSx3KHUsZXwzMjc2OCwyMSk7dS50b2tlbiE9PTIwNTU4JiZ1LnRva2VuIT09MTA3NDc5MDQxNSYmdS50b2tlbiE9PTIwNTYzOylDLnB1c2goRzIodSxlfDQwOTYsaSwyLHskOm59KSk7cy5wdXNoKHYodSxlLGIsZyxhLHt0eXBlOlwiU3dpdGNoQ2FzZVwiLHRlc3Q6QSxjb25zZXF1ZW50OkN9KSl9cmV0dXJuIHcodSxlfDMyNzY4LDEwNzQ3OTA0MTUpLHYodSxlLHQsbyxsLHt0eXBlOlwiU3dpdGNoU3RhdGVtZW50XCIsZGlzY3JpbWluYW50OmMsY2FzZXM6c30pfWZ1bmN0aW9uIFgwKHUsZSxpLG4sdCxvLGwpe0UodSxlKSx3KHUsZXwzMjc2OCw2NzE3NDQxMSk7bGV0IGM9ZjIodSxlLDAsMSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7dyh1LGV8MzI3NjgsMTYpO2xldCBzPXAyKHUsZSxpLG4pO3JldHVybiB2KHUsZSx0LG8sbCx7dHlwZTpcIldoaWxlU3RhdGVtZW50XCIsdGVzdDpjLGJvZHk6c30pfWZ1bmN0aW9uIHAyKHUsZSxpLG4pe3JldHVybiB4Mih1LChlfDEzNDIxNzcyOCleMTM0MjE3NzI4fDEzMTA3MixpLDAse2xvb3A6MSwkOm59LDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpfWZ1bmN0aW9uIHowKHUsZSxpLG4sdCxvKXsoZSYxMzEwNzIpPDEmJmYodSw2NSksRSh1LGUpO2xldCBsPW51bGw7aWYoKHUuZmxhZ3MmMSk8MSYmdS50b2tlbiYxNDMzNjApe2xldHt0b2tlblZhbHVlOmN9PXU7bD16KHUsZXwzMjc2OCwwKSx4dSh1LGksYywxKXx8Zih1LDEzNCxjKX1yZXR1cm4gZDIodSxlfDMyNzY4KSx2KHUsZSxuLHQsbyx7dHlwZTpcIkNvbnRpbnVlU3RhdGVtZW50XCIsbGFiZWw6bH0pfWZ1bmN0aW9uIEgwKHUsZSxpLG4sdCxvKXtFKHUsZXwzMjc2OCk7bGV0IGw9bnVsbDtpZigodS5mbGFncyYxKTwxJiZ1LnRva2VuJjE0MzM2MCl7bGV0e3Rva2VuVmFsdWU6Y309dTtsPXoodSxlfDMyNzY4LDApLHh1KHUsaSxjLDApfHxmKHUsMTM0LGMpfWVsc2UoZSYxMzUxNjgpPDEmJmYodSw2Nik7cmV0dXJuIGQyKHUsZXwzMjc2OCksdih1LGUsbix0LG8se3R5cGU6XCJCcmVha1N0YXRlbWVudFwiLGxhYmVsOmx9KX1mdW5jdGlvbiBLMCh1LGUsaSxuLHQsbyxsKXtFKHUsZSksZSYxMDI0JiZmKHUsODgpLHcodSxlfDMyNzY4LDY3MTc0NDExKTtsZXQgYz1mMih1LGUsMCwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTt3KHUsZXwzMjc2OCwxNik7bGV0IHM9eDIodSxlLGksMixuLDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB2KHUsZSx0LG8sbCx7dHlwZTpcIldpdGhTdGF0ZW1lbnRcIixvYmplY3Q6Yyxib2R5OnN9KX1mdW5jdGlvbiBXMCh1LGUsaSxuLHQpe3JldHVybiBFKHUsZXwzMjc2OCksZDIodSxlfDMyNzY4KSx2KHUsZSxpLG4sdCx7dHlwZTpcIkRlYnVnZ2VyU3RhdGVtZW50XCJ9KX1mdW5jdGlvbiBZMCh1LGUsaSxuLHQsbyxsKXtFKHUsZXwzMjc2OCk7bGV0IGM9aT9vMihpLDMyKTp2b2lkIDAscz1jMSh1LGUsYyx7JDpufSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykse3Rva2VuUG9zOmgsbGluZVBvczpiLGNvbFBvczpnfT11LGE9VSh1LGV8MzI3NjgsMjA1NTkpPyQwKHUsZSxpLG4saCxiLGcpOm51bGwsQT1udWxsO2lmKHUudG9rZW49PT0yMDU2OCl7RSh1LGV8MzI3NjgpO2xldCBDPWM/bzIoaSw0KTp2b2lkIDA7QT1jMSh1LGUsQyx7JDpufSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyl9cmV0dXJuIWEmJiFBJiZmKHUsODUpLHYodSxlLHQsbyxsLHt0eXBlOlwiVHJ5U3RhdGVtZW50XCIsYmxvY2s6cyxoYW5kbGVyOmEsZmluYWxpemVyOkF9KX1mdW5jdGlvbiAkMCh1LGUsaSxuLHQsbyxsKXtsZXQgYz1udWxsLHM9aTtVKHUsZSw2NzE3NDQxMSkmJihpJiYoaT1vMihpLDQpKSxjPUFlKHUsZSxpLCh1LnRva2VuJjIwOTcxNTIpPT09MjA5NzE1Mj8yNTY6NTEyLDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpLHUudG9rZW49PT0xOD9mKHUsODMpOnUudG9rZW49PT0xMDc3OTM2MTU3JiZmKHUsODQpLHcodSxlfDMyNzY4LDE2KSxpJiYocz1vMihpLDY0KSkpO2xldCBoPWMxKHUsZSxzLHskOm59LHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gdih1LGUsdCxvLGwse3R5cGU6XCJDYXRjaENsYXVzZVwiLHBhcmFtOmMsYm9keTpofSl9ZnVuY3Rpb24gWjAodSxlLGksbix0LG8sbCl7RSh1LGV8MzI3NjgpO2xldCBjPXAyKHUsZSxpLG4pO3codSxlLDIwNTgwKSx3KHUsZXwzMjc2OCw2NzE3NDQxMSk7bGV0IHM9ZjIodSxlLDAsMSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7cmV0dXJuIHcodSxlfDMyNzY4LDE2KSxVKHUsZSwxMDc0NzkwNDE3KSx2KHUsZSx0LG8sbCx7dHlwZTpcIkRvV2hpbGVTdGF0ZW1lbnRcIixib2R5OmMsdGVzdDpzfSl9ZnVuY3Rpb24gUTAodSxlLGksbix0LG8sbCl7bGV0e3Rva2VuOmMsdG9rZW5WYWx1ZTpzfT11LGg9eih1LGUsMCk7aWYodS50b2tlbiYyMjQwNTEyKXtsZXQgYj1LMih1LGUsaSw4LDApO3JldHVybiBkMih1LGV8MzI3NjgpLHYodSxlLHQsbyxsLHt0eXBlOlwiVmFyaWFibGVEZWNsYXJhdGlvblwiLGtpbmQ6XCJsZXRcIixkZWNsYXJhdGlvbnM6Yn0pfWlmKHUuYXNzaWduYWJsZT0xLGUmMTAyNCYmZih1LDgyKSx1LnRva2VuPT09MjEpcmV0dXJuIEoxKHUsZSxpLG4se30scyxoLGMsMCx0LG8sbCk7aWYodS50b2tlbj09PTEwKXtsZXQgYjtlJjY0JiYoYj1mMSh1LGUscykpLHUuZmxhZ3M9KHUuZmxhZ3N8MTI4KV4xMjgsaD11MSh1LGUsYixbaF0sMCx0LG8sbCl9ZWxzZSBoPVcodSxlLGgsMCwwLHQsbyxsKSxoPXgodSxlLDAsMCx0LG8sbCxoKTtyZXR1cm4gdS50b2tlbj09PTE4JiYoaD1TMih1LGUsMCx0LG8sbCxoKSksSDIodSxlLGgsdCxvLGwpfWZ1bmN0aW9uIHoxKHUsZSxpLG4sdCxvLGwsYyl7RSh1LGUpO2xldCBzPUsyKHUsZSxpLG4sdCk7cmV0dXJuIGQyKHUsZXwzMjc2OCksdih1LGUsbyxsLGMse3R5cGU6XCJWYXJpYWJsZURlY2xhcmF0aW9uXCIsa2luZDpuJjg/XCJsZXRcIjpcImNvbnN0XCIsZGVjbGFyYXRpb25zOnN9KX1mdW5jdGlvbiBpZSh1LGUsaSxuLHQsbyxsKXtFKHUsZSk7bGV0IGM9SzIodSxlLGksNCxuKTtyZXR1cm4gZDIodSxlfDMyNzY4KSx2KHUsZSx0LG8sbCx7dHlwZTpcIlZhcmlhYmxlRGVjbGFyYXRpb25cIixraW5kOlwidmFyXCIsZGVjbGFyYXRpb25zOmN9KX1mdW5jdGlvbiBLMih1LGUsaSxuLHQpe2xldCBvPTEsbD1bbmUodSxlLGksbix0KV07Zm9yKDtVKHUsZSwxOCk7KW8rKyxsLnB1c2gobmUodSxlLGksbix0KSk7cmV0dXJuIG8+MSYmdCYzMiYmdS50b2tlbiYyNjIxNDQmJmYodSw1OCxHW3UudG9rZW4mMjU1XSksbH1mdW5jdGlvbiBuZSh1LGUsaSxuLHQpe2xldHt0b2tlbjpvLHRva2VuUG9zOmwsbGluZVBvczpjLGNvbFBvczpzfT11LGg9bnVsbCxiPUFlKHUsZSxpLG4sdCxsLGMscyk7cmV0dXJuIHUudG9rZW49PT0xMDc3OTM2MTU3PyhFKHUsZXwzMjc2OCksaD1RKHUsZSwxLDAsMCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyksKHQmMzJ8fChvJjIwOTcxNTIpPDEpJiYodS50b2tlbj09PTI3NDU0OXx8dS50b2tlbj09PTg3Mzg4NjgmJihvJjIwOTcxNTJ8fChuJjQpPDF8fGUmMTAyNCkpJiZTKGwsdS5saW5lLHUuaW5kZXgtMyw1Nyx1LnRva2VuPT09Mjc0NTQ5P1wib2ZcIjpcImluXCIpKToobiYxNnx8KG8mMjA5NzE1Mik+MCkmJih1LnRva2VuJjI2MjE0NCkhPT0yNjIxNDQmJmYodSw1NixuJjE2P1wiY29uc3RcIjpcImRlc3RydWN0dXJpbmdcIiksdih1LGUsbCxjLHMse3R5cGU6XCJWYXJpYWJsZURlY2xhcmF0b3JcIixpZDpiLGluaXQ6aH0pfWZ1bmN0aW9uIEcwKHUsZSxpLG4sdCxvLGwpe0UodSxlKTtsZXQgYz0oZSY0MTk0MzA0KT4wJiZVKHUsZSwyMDkwMDgpO3codSxlfDMyNzY4LDY3MTc0NDExKSxpJiYoaT1vMihpLDEpKTtsZXQgcz1udWxsLGg9bnVsbCxiPTAsZz1udWxsLGE9dS50b2tlbj09PTg2MDkwfHx1LnRva2VuPT09MjQxNzM5fHx1LnRva2VuPT09ODYwOTIsQSx7dG9rZW46Qyx0b2tlblBvczpELGxpbmVQb3M6Qixjb2xQb3M6T309dTtpZihhP0M9PT0yNDE3Mzk/KGc9eih1LGUsMCksdS50b2tlbiYyMjQwNTEyPyh1LnRva2VuPT09ODczODg2OD9lJjEwMjQmJmYodSw2NCk6Zz12KHUsZSxELEIsTyx7dHlwZTpcIlZhcmlhYmxlRGVjbGFyYXRpb25cIixraW5kOlwibGV0XCIsZGVjbGFyYXRpb25zOksyKHUsZXwxMzQyMTc3MjgsaSw4LDMyKX0pLHUuYXNzaWduYWJsZT0xKTplJjEwMjQ/Zih1LDY0KTooYT0hMSx1LmFzc2lnbmFibGU9MSxnPVcodSxlLGcsMCwwLEQsQixPKSx1LnRva2VuPT09Mjc0NTQ5JiZmKHUsMTExKSkpOihFKHUsZSksZz12KHUsZSxELEIsTyxDPT09ODYwOTA/e3R5cGU6XCJWYXJpYWJsZURlY2xhcmF0aW9uXCIsa2luZDpcInZhclwiLGRlY2xhcmF0aW9uczpLMih1LGV8MTM0MjE3NzI4LGksNCwzMil9Ont0eXBlOlwiVmFyaWFibGVEZWNsYXJhdGlvblwiLGtpbmQ6XCJjb25zdFwiLGRlY2xhcmF0aW9uczpLMih1LGV8MTM0MjE3NzI4LGksMTYsMzIpfSksdS5hc3NpZ25hYmxlPTEpOkM9PT0xMDc0NzkwNDE3P2MmJmYodSw3OSk6KEMmMjA5NzE1Mik9PT0yMDk3MTUyPyhnPUM9PT0yMTYyNzAwP3IyKHUsZSx2b2lkIDAsMSwwLDAsMiwzMixELEIsTyk6azIodSxlLHZvaWQgMCwxLDAsMCwyLDMyLEQsQixPKSxiPXUuZGVzdHJ1Y3RpYmxlLGUmMjU2JiZiJjY0JiZmKHUsNjApLHUuYXNzaWduYWJsZT1iJjE2PzI6MSxnPVcodSxlfDEzNDIxNzcyOCxnLDAsMCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpOmc9YjIodSxlfDEzNDIxNzcyOCwxLDAsMSxELEIsTyksKHUudG9rZW4mMjYyMTQ0KT09PTI2MjE0NCl7aWYodS50b2tlbj09PTI3NDU0OSl7dS5hc3NpZ25hYmxlJjImJmYodSw3NyxjP1wiYXdhaXRcIjpcIm9mXCIpLHYyKHUsZyksRSh1LGV8MzI3NjgpLEE9USh1LGUsMSwwLDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpLHcodSxlfDMyNzY4LDE2KTtsZXQgUj1wMih1LGUsaSxuKTtyZXR1cm4gdih1LGUsdCxvLGwse3R5cGU6XCJGb3JPZlN0YXRlbWVudFwiLGxlZnQ6ZyxyaWdodDpBLGJvZHk6Uixhd2FpdDpjfSl9dS5hc3NpZ25hYmxlJjImJmYodSw3NyxcImluXCIpLHYyKHUsZyksRSh1LGV8MzI3NjgpLGMmJmYodSw3OSksQT1mMih1LGUsMCwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSx3KHUsZXwzMjc2OCwxNik7bGV0IGUyPXAyKHUsZSxpLG4pO3JldHVybiB2KHUsZSx0LG8sbCx7dHlwZTpcIkZvckluU3RhdGVtZW50XCIsYm9keTplMixsZWZ0OmcscmlnaHQ6QX0pfWMmJmYodSw3OSksYXx8KGImOCYmdS50b2tlbiE9PTEwNzc5MzYxNTcmJmYodSw3NyxcImxvb3BcIiksZz14KHUsZXwxMzQyMTc3MjgsMCwwLEQsQixPLGcpKSx1LnRva2VuPT09MTgmJihnPVMyKHUsZSwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zLGcpKSx3KHUsZXwzMjc2OCwxMDc0NzkwNDE3KSx1LnRva2VuIT09MTA3NDc5MDQxNyYmKHM9ZjIodSxlLDAsMSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpLHcodSxlfDMyNzY4LDEwNzQ3OTA0MTcpLHUudG9rZW4hPT0xNiYmKGg9ZjIodSxlLDAsMSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpLHcodSxlfDMyNzY4LDE2KTtsZXQgaj1wMih1LGUsaSxuKTtyZXR1cm4gdih1LGUsdCxvLGwse3R5cGU6XCJGb3JTdGF0ZW1lbnRcIixpbml0OmcsdGVzdDpzLHVwZGF0ZTpoLGJvZHk6an0pfWZ1bmN0aW9uIHRlKHUsZSxpKXtyZXR1cm4gXzEoZSx1LnRva2VuKXx8Zih1LDExNCksKHUudG9rZW4mNTM3MDc5ODA4KT09PTUzNzA3OTgwOCYmZih1LDExNSksaSYmQjIodSxlLGksdS50b2tlblZhbHVlLDgsMCkseih1LGUsMCl9ZnVuY3Rpb24geDAodSxlLGkpe2xldCBuPXUudG9rZW5Qb3MsdD11LmxpbmVQb3Msbz11LmNvbFBvcztFKHUsZSk7bGV0IGw9bnVsbCx7dG9rZW5Qb3M6YyxsaW5lUG9zOnMsY29sUG9zOmh9PXUsYj1bXTtpZih1LnRva2VuPT09MTM0MjgzMjY3KWw9YTIodSxlKTtlbHNle2lmKHUudG9rZW4mMTQzMzYwKXtsZXQgZz10ZSh1LGUsaSk7aWYoYj1bdih1LGUsYyxzLGgse3R5cGU6XCJJbXBvcnREZWZhdWx0U3BlY2lmaWVyXCIsbG9jYWw6Z30pXSxVKHUsZSwxOCkpc3dpdGNoKHUudG9rZW4pe2Nhc2UgODQ1NzAxNDpiLnB1c2gob2UodSxlLGkpKTticmVhaztjYXNlIDIxNjI3MDA6bGUodSxlLGksYik7YnJlYWs7ZGVmYXVsdDpmKHUsMTA0KX19ZWxzZSBzd2l0Y2godS50b2tlbil7Y2FzZSA4NDU3MDE0OmI9W29lKHUsZSxpKV07YnJlYWs7Y2FzZSAyMTYyNzAwOmxlKHUsZSxpLGIpO2JyZWFrO2Nhc2UgNjcxNzQ0MTE6cmV0dXJuIGNlKHUsZSxuLHQsbyk7Y2FzZSA2NzEwODg3NzpyZXR1cm4gZmUodSxlLG4sdCxvKTtkZWZhdWx0OmYodSwyOCxHW3UudG9rZW4mMjU1XSl9bD1wMCh1LGUpfXJldHVybiBkMih1LGV8MzI3NjgpLHYodSxlLG4sdCxvLHt0eXBlOlwiSW1wb3J0RGVjbGFyYXRpb25cIixzcGVjaWZpZXJzOmIsc291cmNlOmx9KX1mdW5jdGlvbiBvZSh1LGUsaSl7bGV0e3Rva2VuUG9zOm4sbGluZVBvczp0LGNvbFBvczpvfT11O3JldHVybiBFKHUsZSksdyh1LGUsNzc5MzQpLCh1LnRva2VuJjEzNDIxNzcyOCk9PT0xMzQyMTc3MjgmJlMobix1LmxpbmUsdS5pbmRleCwyOCxHW3UudG9rZW4mMjU1XSksdih1LGUsbix0LG8se3R5cGU6XCJJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXJcIixsb2NhbDp0ZSh1LGUsaSl9KX1mdW5jdGlvbiBwMCh1LGUpe3JldHVybiBVKHUsZSwxMjQwNCksdS50b2tlbiE9PTEzNDI4MzI2NyYmZih1LDEwMixcIkltcG9ydFwiKSxhMih1LGUpfWZ1bmN0aW9uIGxlKHUsZSxpLG4pe2ZvcihFKHUsZSk7dS50b2tlbiYxNDMzNjA7KXtsZXR7dG9rZW46dCx0b2tlblZhbHVlOm8sdG9rZW5Qb3M6bCxsaW5lUG9zOmMsY29sUG9zOnN9PXUsaD16KHUsZSwwKSxiO1UodSxlLDc3OTM0KT8oKHUudG9rZW4mMTM0MjE3NzI4KT09PTEzNDIxNzcyOHx8dS50b2tlbj09PTE4P2YodSwxMDMpOm8xKHUsZSwxNix1LnRva2VuLDApLG89dS50b2tlblZhbHVlLGI9eih1LGUsMCkpOihvMSh1LGUsMTYsdCwwKSxiPWgpLGkmJkIyKHUsZSxpLG8sOCwwKSxuLnB1c2godih1LGUsbCxjLHMse3R5cGU6XCJJbXBvcnRTcGVjaWZpZXJcIixsb2NhbDpiLGltcG9ydGVkOmh9KSksdS50b2tlbiE9PTEwNzQ3OTA0MTUmJncodSxlLDE4KX1yZXR1cm4gdyh1LGUsMTA3NDc5MDQxNSksbn1mdW5jdGlvbiBmZSh1LGUsaSxuLHQpe2xldCBvPWFlKHUsZSx2KHUsZSxpLG4sdCx7dHlwZTpcIklkZW50aWZpZXJcIixuYW1lOlwiaW1wb3J0XCJ9KSxpLG4sdCk7cmV0dXJuIG89Vyh1LGUsbywwLDAsaSxuLHQpLG89eCh1LGUsMCwwLGksbix0LG8pLEgyKHUsZSxvLGksbix0KX1mdW5jdGlvbiBjZSh1LGUsaSxuLHQpe2xldCBvPWRlKHUsZSwwLGksbix0KTtyZXR1cm4gbz1XKHUsZSxvLDAsMCxpLG4sdCksSDIodSxlLG8saSxuLHQpfWZ1bmN0aW9uIHV0KHUsZSxpKXtsZXQgbj11LnRva2VuUG9zLHQ9dS5saW5lUG9zLG89dS5jb2xQb3M7RSh1LGV8MzI3NjgpO2xldCBsPVtdLGM9bnVsbCxzPW51bGwsaDtpZihVKHUsZXwzMjc2OCwyMDU2Mykpe3N3aXRjaCh1LnRva2VuKXtjYXNlIDg2MTA2OntjPVQyKHUsZSxpLDQsMSwxLDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO2JyZWFrfWNhc2UgMTMzOmNhc2UgODYwOTY6Yz1aMSh1LGUsaSwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTticmVhaztjYXNlIDIwOTAwNzpsZXR7dG9rZW5Qb3M6YixsaW5lUG9zOmcsY29sUG9zOmF9PXU7Yz16KHUsZSwwKTtsZXR7ZmxhZ3M6QX09dTsoQSYxKTwxJiYodS50b2tlbj09PTg2MTA2P2M9VDIodSxlLGksNCwxLDEsMSxiLGcsYSk6dS50b2tlbj09PTY3MTc0NDExPyhjPSQxKHUsZSxjLDEsMSwwLEEsYixnLGEpLGM9Vyh1LGUsYywwLDAsYixnLGEpLGM9eCh1LGUsMCwwLGIsZyxhLGMpKTp1LnRva2VuJjE0MzM2MCYmKGkmJihpPWYxKHUsZSx1LnRva2VuVmFsdWUpKSxjPXoodSxlLDApLGM9dTEodSxlLGksW2NdLDEsYixnLGEpKSk7YnJlYWs7ZGVmYXVsdDpjPVEodSxlLDEsMCwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSxkMih1LGV8MzI3NjgpfXJldHVybiBpJiZfMih1LFwiZGVmYXVsdFwiKSx2KHUsZSxuLHQsbyx7dHlwZTpcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiLGRlY2xhcmF0aW9uOmN9KX1zd2l0Y2godS50b2tlbil7Y2FzZSA4NDU3MDE0OntFKHUsZSk7bGV0IEE9bnVsbDtyZXR1cm4gVSh1LGUsNzc5MzQpJiYoaSYmXzIodSx1LnRva2VuVmFsdWUpLEE9eih1LGUsMCkpLHcodSxlLDEyNDA0KSx1LnRva2VuIT09MTM0MjgzMjY3JiZmKHUsMTAyLFwiRXhwb3J0XCIpLHM9YTIodSxlKSxkMih1LGV8MzI3NjgpLHYodSxlLG4sdCxvLHt0eXBlOlwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIixzb3VyY2U6cyxleHBvcnRlZDpBfSl9Y2FzZSAyMTYyNzAwOntFKHUsZSk7bGV0IEE9W10sQz1bXTtmb3IoO3UudG9rZW4mMTQzMzYwOyl7bGV0e3Rva2VuUG9zOkQsdG9rZW5WYWx1ZTpCLGxpbmVQb3M6Tyxjb2xQb3M6an09dSxlMj16KHUsZSwwKSxSO3UudG9rZW49PT03NzkzND8oRSh1LGUpLCh1LnRva2VuJjEzNDIxNzcyOCk9PT0xMzQyMTc3MjgmJmYodSwxMDMpLGkmJihBLnB1c2godS50b2tlblZhbHVlKSxDLnB1c2goQikpLFI9eih1LGUsMCkpOihpJiYoQS5wdXNoKHUudG9rZW5WYWx1ZSksQy5wdXNoKHUudG9rZW5WYWx1ZSkpLFI9ZTIpLGwucHVzaCh2KHUsZSxELE8saix7dHlwZTpcIkV4cG9ydFNwZWNpZmllclwiLGxvY2FsOmUyLGV4cG9ydGVkOlJ9KSksdS50b2tlbiE9PTEwNzQ3OTA0MTUmJncodSxlLDE4KX1pZih3KHUsZSwxMDc0NzkwNDE1KSxVKHUsZSwxMjQwNCkpdS50b2tlbiE9PTEzNDI4MzI2NyYmZih1LDEwMixcIkV4cG9ydFwiKSxzPWEyKHUsZSk7ZWxzZSBpZihpKXtsZXQgRD0wLEI9QS5sZW5ndGg7Zm9yKDtEPEI7RCsrKV8yKHUsQVtEXSk7Zm9yKEQ9MCxCPUMubGVuZ3RoO0Q8QjtEKyspRjAodSxDW0RdKX1kMih1LGV8MzI3NjgpO2JyZWFrfWNhc2UgODYwOTY6Yz1aMSh1LGUsaSwyLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTticmVhaztjYXNlIDg2MTA2OmM9VDIodSxlLGksNCwxLDIsMCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7YnJlYWs7Y2FzZSAyNDE3Mzk6Yz16MSh1LGUsaSw4LDY0LHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTticmVhaztjYXNlIDg2MDkyOmM9ejEodSxlLGksMTYsNjQsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO2JyZWFrO2Nhc2UgODYwOTA6Yz1pZSh1LGUsaSw2NCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7YnJlYWs7Y2FzZSAyMDkwMDc6bGV0e3Rva2VuUG9zOmIsbGluZVBvczpnLGNvbFBvczphfT11O2lmKEUodSxlKSwodS5mbGFncyYxKTwxJiZ1LnRva2VuPT09ODYxMDYpe2M9VDIodSxlLGksNCwxLDIsMSxiLGcsYSksaSYmKGg9Yy5pZD9jLmlkLm5hbWU6XCJcIixfMih1LGgpKTticmVha31kZWZhdWx0OmYodSwyOCxHW3UudG9rZW4mMjU1XSl9cmV0dXJuIHYodSxlLG4sdCxvLHt0eXBlOlwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiLGRlY2xhcmF0aW9uOmMsc3BlY2lmaWVyczpsLHNvdXJjZTpzfSl9ZnVuY3Rpb24gUSh1LGUsaSxuLHQsbyxsLGMpe2xldCBzPWgyKHUsZSwyLDAsaSxuLHQsMSxvLGwsYyk7cmV0dXJuIHM9Vyh1LGUscyx0LDAsbyxsLGMpLHgodSxlLHQsMCxvLGwsYyxzKX1mdW5jdGlvbiBTMih1LGUsaSxuLHQsbyxsKXtsZXQgYz1bbF07Zm9yKDtVKHUsZXwzMjc2OCwxOCk7KWMucHVzaChRKHUsZSwxLDAsaSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpO3JldHVybiB2KHUsZSxuLHQsbyx7dHlwZTpcIlNlcXVlbmNlRXhwcmVzc2lvblwiLGV4cHJlc3Npb25zOmN9KX1mdW5jdGlvbiBmMih1LGUsaSxuLHQsbyxsKXtsZXQgYz1RKHUsZSxuLDAsaSx0LG8sbCk7cmV0dXJuIHUudG9rZW49PT0xOD9TMih1LGUsaSx0LG8sbCxjKTpjfWZ1bmN0aW9uIHgodSxlLGksbix0LG8sbCxjKXtsZXR7dG9rZW46c309dTtpZigocyY0MTk0MzA0KT09PTQxOTQzMDQpe3UuYXNzaWduYWJsZSYyJiZmKHUsMjQpLCghbiYmcz09PTEwNzc5MzYxNTcmJmMudHlwZT09PVwiQXJyYXlFeHByZXNzaW9uXCJ8fGMudHlwZT09PVwiT2JqZWN0RXhwcmVzc2lvblwiKSYmdjIodSxjKSxFKHUsZXwzMjc2OCk7bGV0IGg9USh1LGUsMSwxLGksdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB1LmFzc2lnbmFibGU9Mix2KHUsZSx0LG8sbCxuP3t0eXBlOlwiQXNzaWdubWVudFBhdHRlcm5cIixsZWZ0OmMscmlnaHQ6aH06e3R5cGU6XCJBc3NpZ25tZW50RXhwcmVzc2lvblwiLGxlZnQ6YyxvcGVyYXRvcjpHW3MmMjU1XSxyaWdodDpofSl9cmV0dXJuKHMmODQ1NDE0NCk9PT04NDU0MTQ0JiYoYz1GMih1LGUsaSx0LG8sbCw0LHMsYykpLFUodSxlfDMyNzY4LDIyKSYmKGM9TTIodSxlLGMsdCxvLGwpKSxjfWZ1bmN0aW9uIHMxKHUsZSxpLG4sdCxvLGwsYyl7bGV0e3Rva2VuOnN9PXU7RSh1LGV8MzI3NjgpO2xldCBoPVEodSxlLDEsMSxpLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gYz12KHUsZSx0LG8sbCxuP3t0eXBlOlwiQXNzaWdubWVudFBhdHRlcm5cIixsZWZ0OmMscmlnaHQ6aH06e3R5cGU6XCJBc3NpZ25tZW50RXhwcmVzc2lvblwiLGxlZnQ6YyxvcGVyYXRvcjpHW3MmMjU1XSxyaWdodDpofSksdS5hc3NpZ25hYmxlPTIsY31mdW5jdGlvbiBNMih1LGUsaSxuLHQsbyl7bGV0IGw9USh1LChlfDEzNDIxNzcyOCleMTM0MjE3NzI4LDEsMCwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTt3KHUsZXwzMjc2OCwyMSksdS5hc3NpZ25hYmxlPTE7bGV0IGM9USh1LGUsMSwwLDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB1LmFzc2lnbmFibGU9Mix2KHUsZSxuLHQsbyx7dHlwZTpcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiLHRlc3Q6aSxjb25zZXF1ZW50OmwsYWx0ZXJuYXRlOmN9KX1mdW5jdGlvbiBGMih1LGUsaSxuLHQsbyxsLGMscyl7bGV0IGg9LSgoZSYxMzQyMTc3MjgpPjApJjg3Mzg4NjgsYixnO2Zvcih1LmFzc2lnbmFibGU9Mjt1LnRva2VuJjg0NTQxNDQmJihiPXUudG9rZW4sZz1iJjM4NDAsKGImNTI0Mjg4JiZjJjI2ODQzNTQ1Nnx8YyY1MjQyODgmJmImMjY4NDM1NDU2KSYmZih1LDE1OSksIShnKygoYj09PTg0NTcyNzMpPDw4KS0oKGg9PT1iKTw8MTIpPD1sKSk7KUUodSxlfDMyNzY4KSxzPXYodSxlLG4sdCxvLHt0eXBlOmImNTI0Mjg4fHxiJjI2ODQzNTQ1Nj9cIkxvZ2ljYWxFeHByZXNzaW9uXCI6XCJCaW5hcnlFeHByZXNzaW9uXCIsbGVmdDpzLHJpZ2h0OkYyKHUsZSxpLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zLGcsYixiMih1LGUsMCxpLDEsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKSxvcGVyYXRvcjpHW2ImMjU1XX0pO3JldHVybiB1LnRva2VuPT09MTA3NzkzNjE1NyYmZih1LDI0KSxzfWZ1bmN0aW9uIGV0KHUsZSxpLG4sdCxvLGwpe2l8fGYodSwwKTtsZXQgYz11LnRva2VuO0UodSxlfDMyNzY4KTtsZXQgcz1iMih1LGUsMCxsLDEsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB1LnRva2VuPT09ODQ1NzI3MyYmZih1LDMxKSxlJjEwMjQmJmM9PT0xNjg2MzI3OCYmKHMudHlwZT09PVwiSWRlbnRpZmllclwiP2YodSwxMTcpOkIwKHMpJiZmKHUsMTIzKSksdS5hc3NpZ25hYmxlPTIsdih1LGUsbix0LG8se3R5cGU6XCJVbmFyeUV4cHJlc3Npb25cIixvcGVyYXRvcjpHW2MmMjU1XSxhcmd1bWVudDpzLHByZWZpeDohMH0pfWZ1bmN0aW9uIGl0KHUsZSxpLG4sdCxvLGwsYyxzLGgpe2xldHt0b2tlbjpifT11LGc9eih1LGUsbykse2ZsYWdzOmF9PXU7aWYoKGEmMSk8MSl7aWYodS50b2tlbj09PTg2MTA2KXJldHVybiBoZSh1LGUsMSxpLGMscyxoKTtpZigodS50b2tlbiYxNDMzNjApPT09MTQzMzYwKXJldHVybiBufHxmKHUsMCksa2UodSxlLHQsYyxzLGgpfXJldHVybiFsJiZ1LnRva2VuPT09NjcxNzQ0MTE/JDEodSxlLGcsdCwxLDAsYSxjLHMsaCk6dS50b2tlbj09PTEwPyhNMSh1LGUsYiwxKSxsJiZmKHUsNDgpLGcxKHUsZSx1LnRva2VuVmFsdWUsZyxsLHQsMCxjLHMsaCkpOmd9ZnVuY3Rpb24gbnQodSxlLGksbix0LG8sbCl7aWYoaSYmKHUuZGVzdHJ1Y3RpYmxlfD0yNTYpLGUmMjA5NzE1Mil7RSh1LGV8MzI3NjgpLGUmODM4ODYwOCYmZih1LDMwKSxufHxmKHUsMjQpLHUudG9rZW49PT0yMiYmZih1LDEyMCk7bGV0IGM9bnVsbCxzPSExO3JldHVybih1LmZsYWdzJjEpPDEmJihzPVUodSxlfDMyNzY4LDg0NTcwMTQpLCh1LnRva2VuJjc3ODI0fHxzKSYmKGM9USh1LGUsMSwwLDAsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKSksdS5hc3NpZ25hYmxlPTIsdih1LGUsdCxvLGwse3R5cGU6XCJZaWVsZEV4cHJlc3Npb25cIixhcmd1bWVudDpjLGRlbGVnYXRlOnN9KX1yZXR1cm4gZSYxMDI0JiZmKHUsOTQsXCJ5aWVsZFwiKSxZMSh1LGUsdCxvLGwpfWZ1bmN0aW9uIHR0KHUsZSxpLG4sdCxvLGwpe2lmKG4mJih1LmRlc3RydWN0aWJsZXw9MTI4KSxlJjQxOTQzMDR8fGUmMjA0OCYmZSY4MTkyKXtpJiZmKHUsMCksZSY4Mzg4NjA4JiZTKHUuaW5kZXgsdS5saW5lLHUuaW5kZXgsMjkpLEUodSxlfDMyNzY4KTtsZXQgYz1iMih1LGUsMCwwLDEsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB1LnRva2VuPT09ODQ1NzI3MyYmZih1LDMxKSx1LmFzc2lnbmFibGU9Mix2KHUsZSx0LG8sbCx7dHlwZTpcIkF3YWl0RXhwcmVzc2lvblwiLGFyZ3VtZW50OmN9KX1yZXR1cm4gZSYyMDQ4JiZmKHUsOTUpLFkxKHUsZSx0LG8sbCl9ZnVuY3Rpb24gYTEodSxlLGksbix0LG8pe2xldHt0b2tlblBvczpsLGxpbmVQb3M6Yyxjb2xQb3M6c309dTt3KHUsZXwzMjc2OCwyMTYyNzAwKTtsZXQgaD1bXSxiPWU7aWYodS50b2tlbiE9PTEwNzQ3OTA0MTUpe2Zvcig7dS50b2tlbj09PTEzNDI4MzI2Nzspe2xldHtpbmRleDpnLHRva2VuUG9zOmEsdG9rZW5WYWx1ZTpBLHRva2VuOkN9PXUsRD1hMih1LGUpO1p1KHUsZyxhLEEpJiYoZXw9MTAyNCx1LmZsYWdzJjEyOCYmUyh1LmluZGV4LHUubGluZSx1LnRva2VuUG9zLDYzKSx1LmZsYWdzJjY0JiZTKHUuaW5kZXgsdS5saW5lLHUudG9rZW5Qb3MsOCkpLGgucHVzaChYMSh1LGUsRCxDLGEsdS5saW5lUG9zLHUuY29sUG9zKSl9ZSYxMDI0JiYodCYmKCh0JjUzNzA3OTgwOCk9PT01MzcwNzk4MDgmJmYodSwxMTUpLCh0JjM2ODY0KT09PTM2ODY0JiZmKHUsMzgpKSx1LmZsYWdzJjUxMiYmZih1LDExNSksdS5mbGFncyYyNTYmJmYodSwxMTQpKSxlJjY0JiZpJiZvIT09dm9pZCAwJiYoYiYxMDI0KTwxJiYoZSY4MTkyKTwxJiZQKG8pfWZvcih1LmZsYWdzPSh1LmZsYWdzfDUxMnwyNTZ8NjQpXjgzMix1LmRlc3RydWN0aWJsZT0odS5kZXN0cnVjdGlibGV8MjU2KV4yNTY7dS50b2tlbiE9PTEwNzQ3OTA0MTU7KWgucHVzaChHMih1LGUsaSw0LHt9KSk7cmV0dXJuIHcodSxuJjI0P2V8MzI3Njg6ZSwxMDc0NzkwNDE1KSx1LmZsYWdzJj0tMTkzLHUudG9rZW49PT0xMDc3OTM2MTU3JiZmKHUsMjQpLHYodSxlLGwsYyxzLHt0eXBlOlwiQmxvY2tTdGF0ZW1lbnRcIixib2R5Omh9KX1mdW5jdGlvbiBvdCh1LGUsaSxuLHQpe3N3aXRjaChFKHUsZSksdS50b2tlbil7Y2FzZSA2NzEwODk5MTpmKHUsMTYxKTtjYXNlIDY3MTc0NDExOnsoZSY1MjQyODgpPDEmJmYodSwyNiksZSYxNjM4NCYmZih1LDI3KSx1LmFzc2lnbmFibGU9MjticmVha31jYXNlIDY5MjcxNTcxOmNhc2UgNjcxMDg4Nzc6eyhlJjI2MjE0NCk8MSYmZih1LDI3KSxlJjE2Mzg0JiZmKHUsMjcpLHUuYXNzaWduYWJsZT0xO2JyZWFrfWRlZmF1bHQ6Zih1LDI4LFwic3VwZXJcIil9cmV0dXJuIHYodSxlLGksbix0LHt0eXBlOlwiU3VwZXJcIn0pfWZ1bmN0aW9uIGIyKHUsZSxpLG4sdCxvLGwsYyl7bGV0IHM9aDIodSxlLDIsMCxpLDAsbix0LG8sbCxjKTtyZXR1cm4gVyh1LGUscyxuLDAsbyxsLGMpfWZ1bmN0aW9uIGx0KHUsZSxpLG4sdCxvKXt1LmFzc2lnbmFibGUmMiYmZih1LDUyKTtsZXR7dG9rZW46bH09dTtyZXR1cm4gRSh1LGUpLHUuYXNzaWduYWJsZT0yLHYodSxlLG4sdCxvLHt0eXBlOlwiVXBkYXRlRXhwcmVzc2lvblwiLGFyZ3VtZW50Omksb3BlcmF0b3I6R1tsJjI1NV0scHJlZml4OiExfSl9ZnVuY3Rpb24gVyh1LGUsaSxuLHQsbyxsLGMpe2lmKCh1LnRva2VuJjMzNjE5OTY4KT09PTMzNjE5OTY4JiYodS5mbGFncyYxKTwxKWk9bHQodSxlLGksbyxsLGMpO2Vsc2UgaWYoKHUudG9rZW4mNjcxMDg4NjQpPT09NjcxMDg4NjQpe3N3aXRjaChlPShlfDEzNDIxNzcyOCleMTM0MjE3NzI4LHUudG9rZW4pe2Nhc2UgNjcxMDg4Nzc6e0UodSwoZXwxMDczNzQxODI0fDgxOTIpXjgxOTIpLHUuYXNzaWduYWJsZT0xO2xldCBzPXNlKHUsZSk7aT12KHUsZSxvLGwsYyx7dHlwZTpcIk1lbWJlckV4cHJlc3Npb25cIixvYmplY3Q6aSxjb21wdXRlZDohMSxwcm9wZXJ0eTpzfSk7YnJlYWt9Y2FzZSA2OTI3MTU3MTp7bGV0IHM9ITE7KHUuZmxhZ3MmMjA0OCk9PT0yMDQ4JiYocz0hMCx1LmZsYWdzPSh1LmZsYWdzfDIwNDgpXjIwNDgpLEUodSxlfDMyNzY4KTtsZXR7dG9rZW5Qb3M6aCxsaW5lUG9zOmIsY29sUG9zOmd9PXUsYT1mMih1LGUsbiwxLGgsYixnKTt3KHUsZSwyMCksdS5hc3NpZ25hYmxlPTEsaT12KHUsZSxvLGwsYyx7dHlwZTpcIk1lbWJlckV4cHJlc3Npb25cIixvYmplY3Q6aSxjb21wdXRlZDohMCxwcm9wZXJ0eTphfSkscyYmKHUuZmxhZ3N8PTIwNDgpO2JyZWFrfWNhc2UgNjcxNzQ0MTE6e2lmKCh1LmZsYWdzJjEwMjQpPT09MTAyNClyZXR1cm4gdS5mbGFncz0odS5mbGFnc3wxMDI0KV4xMDI0LGk7bGV0IHM9ITE7KHUuZmxhZ3MmMjA0OCk9PT0yMDQ4JiYocz0hMCx1LmZsYWdzPSh1LmZsYWdzfDIwNDgpXjIwNDgpO2xldCBoPVcxKHUsZSxuKTt1LmFzc2lnbmFibGU9MixpPXYodSxlLG8sbCxjLHt0eXBlOlwiQ2FsbEV4cHJlc3Npb25cIixjYWxsZWU6aSxhcmd1bWVudHM6aH0pLHMmJih1LmZsYWdzfD0yMDQ4KTticmVha31jYXNlIDY3MTA4OTkxOntFKHUsKGV8MTA3Mzc0MTgyNHw4MTkyKV44MTkyKSx1LmZsYWdzfD0yMDQ4LHUuYXNzaWduYWJsZT0yLGk9ZnQodSxlLGksbyxsLGMpO2JyZWFrfWRlZmF1bHQ6KHUuZmxhZ3MmMjA0OCk9PT0yMDQ4JiZmKHUsMTYwKSx1LmFzc2lnbmFibGU9MixpPXYodSxlLG8sbCxjLHt0eXBlOlwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCIsdGFnOmkscXVhc2k6dS50b2tlbj09PTY3MTc0NDA4P0sxKHUsZXw2NTUzNik6SDEodSxlLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKX0pfWk9Vyh1LGUsaSwwLDEsbyxsLGMpfXJldHVybiB0PT09MCYmKHUuZmxhZ3MmMjA0OCk9PT0yMDQ4JiYodS5mbGFncz0odS5mbGFnc3wyMDQ4KV4yMDQ4LGk9dih1LGUsbyxsLGMse3R5cGU6XCJDaGFpbkV4cHJlc3Npb25cIixleHByZXNzaW9uOml9KSksaX1mdW5jdGlvbiBmdCh1LGUsaSxuLHQsbyl7bGV0IGw9ITEsYztpZigodS50b2tlbj09PTY5MjcxNTcxfHx1LnRva2VuPT09NjcxNzQ0MTEpJiYodS5mbGFncyYyMDQ4KT09PTIwNDgmJihsPSEwLHUuZmxhZ3M9KHUuZmxhZ3N8MjA0OCleMjA0OCksdS50b2tlbj09PTY5MjcxNTcxKXtFKHUsZXwzMjc2OCk7bGV0e3Rva2VuUG9zOnMsbGluZVBvczpoLGNvbFBvczpifT11LGc9ZjIodSxlLDAsMSxzLGgsYik7dyh1LGUsMjApLHUuYXNzaWduYWJsZT0yLGM9dih1LGUsbix0LG8se3R5cGU6XCJNZW1iZXJFeHByZXNzaW9uXCIsb2JqZWN0OmksY29tcHV0ZWQ6ITAsb3B0aW9uYWw6ITAscHJvcGVydHk6Z30pfWVsc2UgaWYodS50b2tlbj09PTY3MTc0NDExKXtsZXQgcz1XMSh1LGUsMCk7dS5hc3NpZ25hYmxlPTIsYz12KHUsZSxuLHQsbyx7dHlwZTpcIkNhbGxFeHByZXNzaW9uXCIsY2FsbGVlOmksYXJndW1lbnRzOnMsb3B0aW9uYWw6ITB9KX1lbHNleyh1LnRva2VuJjE0MzM2MCk8MSYmZih1LDE1NCk7bGV0IHM9eih1LGUsMCk7dS5hc3NpZ25hYmxlPTIsYz12KHUsZSxuLHQsbyx7dHlwZTpcIk1lbWJlckV4cHJlc3Npb25cIixvYmplY3Q6aSxjb21wdXRlZDohMSxvcHRpb25hbDohMCxwcm9wZXJ0eTpzfSl9cmV0dXJuIGwmJih1LmZsYWdzfD0yMDQ4KSxjfWZ1bmN0aW9uIHNlKHUsZSl7cmV0dXJuKHUudG9rZW4mMTQzMzYwKTwxJiZ1LnRva2VuIT09MTMxJiZmKHUsMTU0KSxlJjEmJnUudG9rZW49PT0xMzE/azEodSxlLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTp6KHUsZSwwKX1mdW5jdGlvbiBjdCh1LGUsaSxuLHQsbyxsKXtpJiZmKHUsNTMpLG58fGYodSwwKTtsZXR7dG9rZW46Y309dTtFKHUsZXwzMjc2OCk7bGV0IHM9YjIodSxlLDAsMCwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gdS5hc3NpZ25hYmxlJjImJmYodSw1MiksdS5hc3NpZ25hYmxlPTIsdih1LGUsdCxvLGwse3R5cGU6XCJVcGRhdGVFeHByZXNzaW9uXCIsYXJndW1lbnQ6cyxvcGVyYXRvcjpHW2MmMjU1XSxwcmVmaXg6ITB9KX1mdW5jdGlvbiBoMih1LGUsaSxuLHQsbyxsLGMscyxoLGIpe2lmKCh1LnRva2VuJjE0MzM2MCk9PT0xNDMzNjApe3N3aXRjaCh1LnRva2VuKXtjYXNlIDIwOTAwODpyZXR1cm4gdHQodSxlLG4sbCxzLGgsYik7Y2FzZSAyNDE3NzM6cmV0dXJuIG50KHUsZSxsLHQscyxoLGIpO2Nhc2UgMjA5MDA3OnJldHVybiBpdCh1LGUsbCxjLHQsbyxuLHMsaCxiKX1sZXR7dG9rZW46Zyx0b2tlblZhbHVlOmF9PXUsQT16KHUsZXw2NTUzNixvKTtyZXR1cm4gdS50b2tlbj09PTEwPyhjfHxmKHUsMCksTTEodSxlLGcsMSksZzEodSxlLGEsQSxuLHQsMCxzLGgsYikpOihlJjE2Mzg0JiZnPT09NTM3MDc5OTI4JiZmKHUsMTI2KSxnPT09MjQxNzM5JiYoZSYxMDI0JiZmKHUsMTA5KSxpJjI0JiZmKHUsOTcpKSx1LmFzc2lnbmFibGU9ZSYxMDI0JiYoZyY1MzcwNzk4MDgpPT09NTM3MDc5ODA4PzI6MSxBKX1pZigodS50b2tlbiYxMzQyMTc3MjgpPT09MTM0MjE3NzI4KXJldHVybiBhMih1LGUpO3N3aXRjaCh1LnRva2VuKXtjYXNlIDMzNjE5OTk1OmNhc2UgMzM2MTk5OTY6cmV0dXJuIGN0KHUsZSxuLGMscyxoLGIpO2Nhc2UgMTY4NjMyNzg6Y2FzZSAxNjg0MjgwMDpjYXNlIDE2ODQyODAxOmNhc2UgMjUyMzM5NzA6Y2FzZSAyNTIzMzk3MTpjYXNlIDE2ODYzMjc3OmNhc2UgMTY4NjMyNzk6cmV0dXJuIGV0KHUsZSxjLHMsaCxiLGwpO2Nhc2UgODYxMDY6cmV0dXJuIGhlKHUsZSwwLGwscyxoLGIpO2Nhc2UgMjE2MjcwMDpyZXR1cm4gbXQodSxlLHQ/MDoxLGwscyxoLGIpO2Nhc2UgNjkyNzE1NzE6cmV0dXJuIGh0KHUsZSx0PzA6MSxsLHMsaCxiKTtjYXNlIDY3MTc0NDExOnJldHVybiBrdCh1LGUsdCwxLDAscyxoLGIpO2Nhc2UgODYwMjE6Y2FzZSA4NjAyMjpjYXNlIDg2MDIzOnJldHVybiBkdCh1LGUscyxoLGIpO2Nhc2UgODYxMTM6cmV0dXJuIGd0KHUsZSk7Y2FzZSA2NTU0MDpyZXR1cm4gQXQodSxlLHMsaCxiKTtjYXNlIDEzMzpjYXNlIDg2MDk2OnJldHVybiB5dCh1LGUsbCxzLGgsYik7Y2FzZSA4NjExMTpyZXR1cm4gb3QodSxlLHMsaCxiKTtjYXNlIDY3MTc0NDA5OnJldHVybiBIMSh1LGUscyxoLGIpO2Nhc2UgNjcxNzQ0MDg6cmV0dXJuIEsxKHUsZSk7Y2FzZSA4NjEwOTpyZXR1cm4gcnQodSxlLGwscyxoLGIpO2Nhc2UgMTM0MjgzMzg5OnJldHVybiBnZSh1LGUscyxoLGIpO2Nhc2UgMTMxOnJldHVybiBrMSh1LGUscyxoLGIpO2Nhc2UgODYxMDg6cmV0dXJuIHN0KHUsZSxuLGwscyxoLGIpO2Nhc2UgODQ1NjI1ODppZihlJjE2KXJldHVybiBHMSh1LGUsMSxzLGgsYik7ZGVmYXVsdDppZihfMShlLHUudG9rZW4pKXJldHVybiBZMSh1LGUscyxoLGIpO2YodSwyOCxHW3UudG9rZW4mMjU1XSl9fWZ1bmN0aW9uIHN0KHUsZSxpLG4sdCxvLGwpe2xldCBjPXoodSxlLDApO3JldHVybiB1LnRva2VuPT09NjcxMDg4Nzc/YWUodSxlLGMsdCxvLGwpOihpJiZmKHUsMTM3KSxjPWRlKHUsZSxuLHQsbyxsKSx1LmFzc2lnbmFibGU9MixXKHUsZSxjLG4sMCx0LG8sbCkpfWZ1bmN0aW9uIGFlKHUsZSxpLG4sdCxvKXtyZXR1cm4oZSYyMDQ4KT09PTAmJmYodSwxNjMpLEUodSxlKSx1LnRva2VuIT09MTQzNDk1JiZ1LnRva2VuVmFsdWUhPT1cIm1ldGFcIiYmZih1LDI4LEdbdS50b2tlbiYyNTVdKSx1LmFzc2lnbmFibGU9Mix2KHUsZSxuLHQsbyx7dHlwZTpcIk1ldGFQcm9wZXJ0eVwiLG1ldGE6aSxwcm9wZXJ0eTp6KHUsZSwwKX0pfWZ1bmN0aW9uIGRlKHUsZSxpLG4sdCxvKXt3KHUsZXwzMjc2OCw2NzE3NDQxMSksdS50b2tlbj09PTE0JiZmKHUsMTM4KTtsZXQgbD1RKHUsZSwxLDAsaSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7cmV0dXJuIHcodSxlLDE2KSx2KHUsZSxuLHQsbyx7dHlwZTpcIkltcG9ydEV4cHJlc3Npb25cIixzb3VyY2U6bH0pfWZ1bmN0aW9uIGdlKHUsZSxpLG4sdCl7bGV0e3Rva2VuUmF3Om8sdG9rZW5WYWx1ZTpsfT11O3JldHVybiBFKHUsZSksdS5hc3NpZ25hYmxlPTIsdih1LGUsaSxuLHQsZSY1MTI/e3R5cGU6XCJMaXRlcmFsXCIsdmFsdWU6bCxiaWdpbnQ6by5zbGljZSgwLC0xKSxyYXc6b306e3R5cGU6XCJMaXRlcmFsXCIsdmFsdWU6bCxiaWdpbnQ6by5zbGljZSgwLC0xKX0pfWZ1bmN0aW9uIEgxKHUsZSxpLG4sdCl7dS5hc3NpZ25hYmxlPTI7bGV0e3Rva2VuVmFsdWU6byx0b2tlblJhdzpsLHRva2VuUG9zOmMsbGluZVBvczpzLGNvbFBvczpofT11O3codSxlLDY3MTc0NDA5KTtsZXQgYj1bZDEodSxlLG8sbCxjLHMsaCwhMCldO3JldHVybiB2KHUsZSxpLG4sdCx7dHlwZTpcIlRlbXBsYXRlTGl0ZXJhbFwiLGV4cHJlc3Npb25zOltdLHF1YXNpczpifSl9ZnVuY3Rpb24gSzEodSxlKXtlPShlfDEzNDIxNzcyOCleMTM0MjE3NzI4O2xldHt0b2tlblZhbHVlOmksdG9rZW5SYXc6bix0b2tlblBvczp0LGxpbmVQb3M6byxjb2xQb3M6bH09dTt3KHUsZXwzMjc2OCw2NzE3NDQwOCk7bGV0IGM9W2QxKHUsZSxpLG4sdCxvLGwsITEpXSxzPVtmMih1LGUsMCwxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKV07Zm9yKHUudG9rZW4hPT0xMDc0NzkwNDE1JiZmKHUsODApOyh1LnRva2VuPXYwKHUsZSkpIT09NjcxNzQ0MDk7KXtsZXR7dG9rZW5WYWx1ZTpoLHRva2VuUmF3OmIsdG9rZW5Qb3M6ZyxsaW5lUG9zOmEsY29sUG9zOkF9PXU7dyh1LGV8MzI3NjgsNjcxNzQ0MDgpLGMucHVzaChkMSh1LGUsaCxiLGcsYSxBLCExKSkscy5wdXNoKGYyKHUsZSwwLDEsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKSx1LnRva2VuIT09MTA3NDc5MDQxNSYmZih1LDgwKX17bGV0e3Rva2VuVmFsdWU6aCx0b2tlblJhdzpiLHRva2VuUG9zOmcsbGluZVBvczphLGNvbFBvczpBfT11O3codSxlLDY3MTc0NDA5KSxjLnB1c2goZDEodSxlLGgsYixnLGEsQSwhMCkpfXJldHVybiB2KHUsZSx0LG8sbCx7dHlwZTpcIlRlbXBsYXRlTGl0ZXJhbFwiLGV4cHJlc3Npb25zOnMscXVhc2lzOmN9KX1mdW5jdGlvbiBkMSh1LGUsaSxuLHQsbyxsLGMpe2xldCBzPXYodSxlLHQsbyxsLHt0eXBlOlwiVGVtcGxhdGVFbGVtZW50XCIsdmFsdWU6e2Nvb2tlZDppLHJhdzpufSx0YWlsOmN9KSxoPWM/MToyO3JldHVybiBlJjImJihzLnN0YXJ0Kz0xLHMucmFuZ2VbMF0rPTEscy5lbmQtPWgscy5yYW5nZVsxXS09aCksZSY0JiYocy5sb2Muc3RhcnQuY29sdW1uKz0xLHMubG9jLmVuZC5jb2x1bW4tPWgpLHN9ZnVuY3Rpb24gYXQodSxlLGksbix0KXtlPShlfDEzNDIxNzcyOCleMTM0MjE3NzI4LHcodSxlfDMyNzY4LDE0KTtsZXQgbz1RKHUsZSwxLDAsMCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7cmV0dXJuIHUuYXNzaWduYWJsZT0xLHYodSxlLGksbix0LHt0eXBlOlwiU3ByZWFkRWxlbWVudFwiLGFyZ3VtZW50Om99KX1mdW5jdGlvbiBXMSh1LGUsaSl7RSh1LGV8MzI3NjgpO2xldCBuPVtdO2lmKHUudG9rZW49PT0xNilyZXR1cm4gRSh1LGUpLG47Zm9yKDt1LnRva2VuIT09MTYmJih1LnRva2VuPT09MTQ/bi5wdXNoKGF0KHUsZSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpOm4ucHVzaChRKHUsZSwxLDAsaSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpLCEodS50b2tlbiE9PTE4fHwoRSh1LGV8MzI3NjgpLHUudG9rZW49PT0xNikpKTspO3JldHVybiB3KHUsZSwxNiksbn1mdW5jdGlvbiB6KHUsZSxpKXtsZXR7dG9rZW5WYWx1ZTpuLHRva2VuUG9zOnQsbGluZVBvczpvLGNvbFBvczpsfT11O3JldHVybiBFKHUsZSksdih1LGUsdCxvLGwsZSYyNjg0MzU0NTY/e3R5cGU6XCJJZGVudGlmaWVyXCIsbmFtZTpuLHBhdHRlcm46aT09PTF9Ont0eXBlOlwiSWRlbnRpZmllclwiLG5hbWU6bn0pfWZ1bmN0aW9uIGEyKHUsZSl7bGV0e3Rva2VuVmFsdWU6aSx0b2tlblJhdzpuLHRva2VuUG9zOnQsbGluZVBvczpvLGNvbFBvczpsfT11O3JldHVybiB1LnRva2VuPT09MTM0MjgzMzg5P2dlKHUsZSx0LG8sbCk6KEUodSxlKSx1LmFzc2lnbmFibGU9Mix2KHUsZSx0LG8sbCxlJjUxMj97dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTppLHJhdzpufTp7dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTppfSkpfWZ1bmN0aW9uIGR0KHUsZSxpLG4sdCl7bGV0IG89R1t1LnRva2VuJjI1NV0sbD11LnRva2VuPT09ODYwMjM/bnVsbDpvPT09XCJ0cnVlXCI7cmV0dXJuIEUodSxlKSx1LmFzc2lnbmFibGU9Mix2KHUsZSxpLG4sdCxlJjUxMj97dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTpsLHJhdzpvfTp7dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTpsfSl9ZnVuY3Rpb24gZ3QodSxlKXtsZXR7dG9rZW5Qb3M6aSxsaW5lUG9zOm4sY29sUG9zOnR9PXU7cmV0dXJuIEUodSxlKSx1LmFzc2lnbmFibGU9Mix2KHUsZSxpLG4sdCx7dHlwZTpcIlRoaXNFeHByZXNzaW9uXCJ9KX1mdW5jdGlvbiBUMih1LGUsaSxuLHQsbyxsLGMscyxoKXtFKHUsZXwzMjc2OCk7bGV0IGI9dD9WMSh1LGUsODQ1NzAxNCk6MCxnPW51bGwsYSxBPWk/ajIoKTp2b2lkIDA7aWYodS50b2tlbj09PTY3MTc0NDExKShvJjEpPDEmJmYodSwzNyxcIkZ1bmN0aW9uXCIpO2Vsc2V7bGV0IEI9biY0JiYoKGUmODE5Mik8MXx8KGUmMjA0OCk8MSk/NDo2NDtRdSh1LGV8KGUmMzA3Mik8PDExLHUudG9rZW4pLGkmJihCJjQ/cHUodSxlLGksdS50b2tlblZhbHVlLEIpOkIyKHUsZSxpLHUudG9rZW5WYWx1ZSxCLG4pLEE9bzIoQSwyNTYpLG8mJm8mMiYmXzIodSx1LnRva2VuVmFsdWUpKSxhPXUudG9rZW4sdS50b2tlbiYxNDMzNjA/Zz16KHUsZSwwKTpmKHUsMjgsR1t1LnRva2VuJjI1NV0pfWU9KGV8MzIyNDM3MTIpXjMyMjQzNzEyfDY3MTA4ODY0fGwqMitiPDwyMXwoYj8wOjEwNzM3NDE4MjQpLGkmJihBPW8yKEEsNTEyKSk7bGV0IEM9YmUodSxlfDgzODg2MDgsQSwwLDEpLEQ9YTEodSwoZXw4MTkyfDQwOTZ8MTMxMDcyKV4xNDMzNjAsaT9vMihBLDEyOCk6QSw4LGEsaT9BLnNjb3BlRXJyb3I6dm9pZCAwKTtyZXR1cm4gdih1LGUsYyxzLGgse3R5cGU6XCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIsaWQ6ZyxwYXJhbXM6Qyxib2R5OkQsYXN5bmM6bD09PTEsZ2VuZXJhdG9yOmI9PT0xfSl9ZnVuY3Rpb24gaGUodSxlLGksbix0LG8sbCl7RSh1LGV8MzI3NjgpO2xldCBjPVYxKHUsZSw4NDU3MDE0KSxzPWkqMitjPDwyMSxoPW51bGwsYixnPWUmNjQ/ajIoKTp2b2lkIDA7KHUudG9rZW4mMTc2MTI4KT4wJiYoUXUodSwoZXwzMjI0MzcxMileMzIyNDM3MTJ8cyx1LnRva2VuKSxnJiYoZz1vMihnLDI1NikpLGI9dS50b2tlbixoPXoodSxlLDApKSxlPShlfDMyMjQzNzEyKV4zMjI0MzcxMnw2NzEwODg2NHxzfChjPzA6MTA3Mzc0MTgyNCksZyYmKGc9bzIoZyw1MTIpKTtsZXQgYT1iZSh1LGV8ODM4ODYwOCxnLG4sMSksQT1hMSh1LGUmLTEzNDM3NzQ3MyxnJiZvMihnLDEyOCksMCxiLHZvaWQgMCk7cmV0dXJuIHUuYXNzaWduYWJsZT0yLHYodSxlLHQsbyxsLHt0eXBlOlwiRnVuY3Rpb25FeHByZXNzaW9uXCIsaWQ6aCxwYXJhbXM6YSxib2R5OkEsYXN5bmM6aT09PTEsZ2VuZXJhdG9yOmM9PT0xfSl9ZnVuY3Rpb24gaHQodSxlLGksbix0LG8sbCl7bGV0IGM9azIodSxlLHZvaWQgMCxpLG4sMCwyLDAsdCxvLGwpO3JldHVybiBlJjI1NiYmdS5kZXN0cnVjdGlibGUmNjQmJmYodSw2MCksdS5kZXN0cnVjdGlibGUmOCYmZih1LDU5KSxjfWZ1bmN0aW9uIGsyKHUsZSxpLG4sdCxvLGwsYyxzLGgsYil7RSh1LGV8MzI3NjgpO2xldCBnPVtdLGE9MDtmb3IoZT0oZXwxMzQyMTc3MjgpXjEzNDIxNzcyODt1LnRva2VuIT09MjA7KWlmKFUodSxlfDMyNzY4LDE4KSlnLnB1c2gobnVsbCk7ZWxzZXtsZXQgQyx7dG9rZW46RCx0b2tlblBvczpCLGxpbmVQb3M6Tyxjb2xQb3M6aix0b2tlblZhbHVlOmUyfT11O2lmKEQmMTQzMzYwKWlmKEM9aDIodSxlLGwsMCwxLDAsdCwxLEIsTyxqKSx1LnRva2VuPT09MTA3NzkzNjE1Nyl7dS5hc3NpZ25hYmxlJjImJmYodSwyNCksRSh1LGV8MzI3NjgpLGkmJnEyKHUsZSxpLGUyLGwsYyk7bGV0IFI9USh1LGUsMSwxLHQsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO0M9dih1LGUsQixPLGosbz97dHlwZTpcIkFzc2lnbm1lbnRQYXR0ZXJuXCIsbGVmdDpDLHJpZ2h0OlJ9Ont0eXBlOlwiQXNzaWdubWVudEV4cHJlc3Npb25cIixvcGVyYXRvcjpcIj1cIixsZWZ0OkMscmlnaHQ6Un0pLGF8PXUuZGVzdHJ1Y3RpYmxlJjI1Nj8yNTY6MHx1LmRlc3RydWN0aWJsZSYxMjg/MTI4OjB9ZWxzZSB1LnRva2VuPT09MTh8fHUudG9rZW49PT0yMD8odS5hc3NpZ25hYmxlJjI/YXw9MTY6aSYmcTIodSxlLGksZTIsbCxjKSxhfD11LmRlc3RydWN0aWJsZSYyNTY/MjU2OjB8dS5kZXN0cnVjdGlibGUmMTI4PzEyODowKTooYXw9bCYxPzMyOihsJjIpPDE/MTY6MCxDPVcodSxlLEMsdCwwLEIsTyxqKSx1LnRva2VuIT09MTgmJnUudG9rZW4hPT0yMD8odS50b2tlbiE9PTEwNzc5MzYxNTcmJihhfD0xNiksQz14KHUsZSx0LG8sQixPLGosQykpOnUudG9rZW4hPT0xMDc3OTM2MTU3JiYoYXw9dS5hc3NpZ25hYmxlJjI/MTY6MzIpKTtlbHNlIEQmMjA5NzE1Mj8oQz11LnRva2VuPT09MjE2MjcwMD9yMih1LGUsaSwwLHQsbyxsLGMsQixPLGopOmsyKHUsZSxpLDAsdCxvLGwsYyxCLE8saiksYXw9dS5kZXN0cnVjdGlibGUsdS5hc3NpZ25hYmxlPXUuZGVzdHJ1Y3RpYmxlJjE2PzI6MSx1LnRva2VuPT09MTh8fHUudG9rZW49PT0yMD91LmFzc2lnbmFibGUmMiYmKGF8PTE2KTp1LmRlc3RydWN0aWJsZSY4P2YodSw2OCk6KEM9Vyh1LGUsQyx0LDAsQixPLGopLGE9dS5hc3NpZ25hYmxlJjI/MTY6MCx1LnRva2VuIT09MTgmJnUudG9rZW4hPT0yMD9DPXgodSxlLHQsbyxCLE8saixDKTp1LnRva2VuIT09MTA3NzkzNjE1NyYmKGF8PXUuYXNzaWduYWJsZSYyPzE2OjMyKSkpOkQ9PT0xND8oQz1XMih1LGUsaSwyMCxsLGMsMCx0LG8sQixPLGopLGF8PXUuZGVzdHJ1Y3RpYmxlLHUudG9rZW4hPT0xOCYmdS50b2tlbiE9PTIwJiZmKHUsMjgsR1t1LnRva2VuJjI1NV0pKTooQz1iMih1LGUsMSwwLDEsQixPLGopLHUudG9rZW4hPT0xOCYmdS50b2tlbiE9PTIwPyhDPXgodSxlLHQsbyxCLE8saixDKSwobCYzKTwxJiZEPT09NjcxNzQ0MTEmJihhfD0xNikpOnUuYXNzaWduYWJsZSYyP2F8PTE2OkQ9PT02NzE3NDQxMSYmKGF8PXUuYXNzaWduYWJsZSYxJiZsJjM/MzI6MTYpKTtpZihnLnB1c2goQyksVSh1LGV8MzI3NjgsMTgpKXtpZih1LnRva2VuPT09MjApYnJlYWt9ZWxzZSBicmVha313KHUsZSwyMCk7bGV0IEE9dih1LGUscyxoLGIse3R5cGU6bz9cIkFycmF5UGF0dGVyblwiOlwiQXJyYXlFeHByZXNzaW9uXCIsZWxlbWVudHM6Z30pO3JldHVybiFuJiZ1LnRva2VuJjQxOTQzMDQ/bWUodSxlLGEsdCxvLHMsaCxiLEEpOih1LmRlc3RydWN0aWJsZT1hLEEpfWZ1bmN0aW9uIG1lKHUsZSxpLG4sdCxvLGwsYyxzKXt1LnRva2VuIT09MTA3NzkzNjE1NyYmZih1LDI0KSxFKHUsZXwzMjc2OCksaSYxNiYmZih1LDI0KSx0fHx2Mih1LHMpO2xldHt0b2tlblBvczpoLGxpbmVQb3M6Yixjb2xQb3M6Z309dSxhPVEodSxlLDEsMSxuLGgsYixnKTtyZXR1cm4gdS5kZXN0cnVjdGlibGU9KGl8NjR8OCleNzJ8KHUuZGVzdHJ1Y3RpYmxlJjEyOD8xMjg6MCl8KHUuZGVzdHJ1Y3RpYmxlJjI1Nj8yNTY6MCksdih1LGUsbyxsLGMsdD97dHlwZTpcIkFzc2lnbm1lbnRQYXR0ZXJuXCIsbGVmdDpzLHJpZ2h0OmF9Ont0eXBlOlwiQXNzaWdubWVudEV4cHJlc3Npb25cIixsZWZ0OnMsb3BlcmF0b3I6XCI9XCIscmlnaHQ6YX0pfWZ1bmN0aW9uIFcyKHUsZSxpLG4sdCxvLGwsYyxzLGgsYixnKXtFKHUsZXwzMjc2OCk7bGV0IGE9bnVsbCxBPTAse3Rva2VuOkMsdG9rZW5WYWx1ZTpELHRva2VuUG9zOkIsbGluZVBvczpPLGNvbFBvczpqfT11O2lmKEMmMTQzMzYwKXUuYXNzaWduYWJsZT0xLGE9aDIodSxlLHQsMCwxLDAsYywxLEIsTyxqKSxDPXUudG9rZW4sYT1XKHUsZSxhLGMsMCxCLE8saiksdS50b2tlbiE9PTE4JiZ1LnRva2VuIT09biYmKHUuYXNzaWduYWJsZSYyJiZ1LnRva2VuPT09MTA3NzkzNjE1NyYmZih1LDY4KSxBfD0xNixhPXgodSxlLGMscyxCLE8saixhKSksdS5hc3NpZ25hYmxlJjI/QXw9MTY6Qz09PW58fEM9PT0xOD9pJiZxMih1LGUsaSxELHQsbyk6QXw9MzIsQXw9dS5kZXN0cnVjdGlibGUmMTI4PzEyODowO2Vsc2UgaWYoQz09PW4pZih1LDM5KTtlbHNlIGlmKEMmMjA5NzE1MilhPXUudG9rZW49PT0yMTYyNzAwP3IyKHUsZSxpLDEsYyxzLHQsbyxCLE8saik6azIodSxlLGksMSxjLHMsdCxvLEIsTyxqKSxDPXUudG9rZW4sQyE9PTEwNzc5MzYxNTcmJkMhPT1uJiZDIT09MTg/KHUuZGVzdHJ1Y3RpYmxlJjgmJmYodSw2OCksYT1XKHUsZSxhLGMsMCxCLE8saiksQXw9dS5hc3NpZ25hYmxlJjI/MTY6MCwodS50b2tlbiY0MTk0MzA0KT09PTQxOTQzMDQ/KHUudG9rZW4hPT0xMDc3OTM2MTU3JiYoQXw9MTYpLGE9eCh1LGUsYyxzLEIsTyxqLGEpKTooKHUudG9rZW4mODQ1NDE0NCk9PT04NDU0MTQ0JiYoYT1GMih1LGUsMSxCLE8saiw0LEMsYSkpLFUodSxlfDMyNzY4LDIyKSYmKGE9TTIodSxlLGEsQixPLGopKSxBfD11LmFzc2lnbmFibGUmMj8xNjozMikpOkF8PW49PT0xMDc0NzkwNDE1JiZDIT09MTA3NzkzNjE1Nz8xNjp1LmRlc3RydWN0aWJsZTtlbHNle0F8PTMyLGE9YjIodSxlLDEsYywxLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtsZXR7dG9rZW46ZTIsdG9rZW5Qb3M6UixsaW5lUG9zOiQsY29sUG9zOnl9PXU7cmV0dXJuIGUyPT09MTA3NzkzNjE1NyYmZTIhPT1uJiZlMiE9PTE4Pyh1LmFzc2lnbmFibGUmMiYmZih1LDI0KSxhPXgodSxlLGMscyxSLCQseSxhKSxBfD0xNik6KGUyPT09MTg/QXw9MTY6ZTIhPT1uJiYoYT14KHUsZSxjLHMsUiwkLHksYSkpLEF8PXUuYXNzaWduYWJsZSYxPzMyOjE2KSx1LmRlc3RydWN0aWJsZT1BLHUudG9rZW4hPT1uJiZ1LnRva2VuIT09MTgmJmYodSwxNTUpLHYodSxlLGgsYixnLHt0eXBlOnM/XCJSZXN0RWxlbWVudFwiOlwiU3ByZWFkRWxlbWVudFwiLGFyZ3VtZW50OmF9KX1pZih1LnRva2VuIT09bilpZih0JjEmJihBfD1sPzE2OjMyKSxVKHUsZXwzMjc2OCwxMDc3OTM2MTU3KSl7QSYxNiYmZih1LDI0KSx2Mih1LGEpO2xldCBlMj1RKHUsZSwxLDEsYyx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7YT12KHUsZSxCLE8saixzP3t0eXBlOlwiQXNzaWdubWVudFBhdHRlcm5cIixsZWZ0OmEscmlnaHQ6ZTJ9Ont0eXBlOlwiQXNzaWdubWVudEV4cHJlc3Npb25cIixsZWZ0OmEsb3BlcmF0b3I6XCI9XCIscmlnaHQ6ZTJ9KSxBPTE2fWVsc2UgQXw9MTY7cmV0dXJuIHUuZGVzdHJ1Y3RpYmxlPUEsdih1LGUsaCxiLGcse3R5cGU6cz9cIlJlc3RFbGVtZW50XCI6XCJTcHJlYWRFbGVtZW50XCIsYXJndW1lbnQ6YX0pfWZ1bmN0aW9uIEEyKHUsZSxpLG4sdCxvLGwpe2xldCBjPShpJjY0KTwxPzMxOTgxNTY4OjE0NjgwMDY0O2U9KGV8YyleY3woaSY4OCk8PDE4fDEwMDkyNTQ0MDtsZXQgcz1lJjY0P28yKGoyKCksNTEyKTp2b2lkIDAsaD1idCh1LGV8ODM4ODYwOCxzLGksMSxuKTtzJiYocz1vMihzLDEyOCkpO2xldCBiPWExKHUsZSYtMTM0MjMwMDE3LHMsMCx2b2lkIDAsdm9pZCAwKTtyZXR1cm4gdih1LGUsdCxvLGwse3R5cGU6XCJGdW5jdGlvbkV4cHJlc3Npb25cIixwYXJhbXM6aCxib2R5OmIsYXN5bmM6KGkmMTYpPjAsZ2VuZXJhdG9yOihpJjgpPjAsaWQ6bnVsbH0pfWZ1bmN0aW9uIG10KHUsZSxpLG4sdCxvLGwpe2xldCBjPXIyKHUsZSx2b2lkIDAsaSxuLDAsMiwwLHQsbyxsKTtyZXR1cm4gZSYyNTYmJnUuZGVzdHJ1Y3RpYmxlJjY0JiZmKHUsNjApLHUuZGVzdHJ1Y3RpYmxlJjgmJmYodSw1OSksY31mdW5jdGlvbiByMih1LGUsaSxuLHQsbyxsLGMscyxoLGIpe0UodSxlKTtsZXQgZz1bXSxhPTAsQT0wO2ZvcihlPShlfDEzNDIxNzcyOCleMTM0MjE3NzI4O3UudG9rZW4hPT0xMDc0NzkwNDE1Oyl7bGV0e3Rva2VuOkQsdG9rZW5WYWx1ZTpCLGxpbmVQb3M6Tyxjb2xQb3M6aix0b2tlblBvczplMn09dTtpZihEPT09MTQpZy5wdXNoKFcyKHUsZSxpLDEwNzQ3OTA0MTUsbCxjLDAsdCxvLGUyLE8saikpO2Vsc2V7bGV0IFI9MCwkPW51bGwseSx5Mj11LnRva2VuO2lmKHUudG9rZW4mMTQzMzYwfHx1LnRva2VuPT09MTIxKWlmKCQ9eih1LGUsMCksdS50b2tlbj09PTE4fHx1LnRva2VuPT09MTA3NDc5MDQxNXx8dS50b2tlbj09PTEwNzc5MzYxNTcpaWYoUnw9NCxlJjEwMjQmJihEJjUzNzA3OTgwOCk9PT01MzcwNzk4MDg/YXw9MTY6bzEodSxlLGwsRCwwKSxpJiZxMih1LGUsaSxCLGwsYyksVSh1LGV8MzI3NjgsMTA3NzkzNjE1Nykpe2F8PTg7bGV0IE49USh1LGUsMSwxLHQsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO2F8PXUuZGVzdHJ1Y3RpYmxlJjI1Nj8yNTY6MHx1LmRlc3RydWN0aWJsZSYxMjg/MTI4OjAseT12KHUsZSxlMixPLGose3R5cGU6XCJBc3NpZ25tZW50UGF0dGVyblwiLGxlZnQ6ZSYtMjE0NzQ4MzY0OD9PYmplY3QuYXNzaWduKHt9LCQpOiQscmlnaHQ6Tn0pfWVsc2UgYXw9KEQ9PT0yMDkwMDg/MTI4OjApfChEPT09MTIxPzE2OjApLHk9ZSYtMjE0NzQ4MzY0OD9PYmplY3QuYXNzaWduKHt9LCQpOiQ7ZWxzZSBpZihVKHUsZXwzMjc2OCwyMSkpe2xldHt0b2tlblBvczpOLGxpbmVQb3M6TSxjb2xQb3M6X309dTtpZihCPT09XCJfX3Byb3RvX19cIiYmQSsrLHUudG9rZW4mMTQzMzYwKXtsZXQgVTI9dS50b2tlbiwkMj11LnRva2VuVmFsdWU7YXw9eTI9PT0xMjE/MTY6MCx5PWgyKHUsZSxsLDAsMSwwLHQsMSxOLE0sXyk7bGV0e3Rva2VuOkUyfT11O3k9Vyh1LGUseSx0LDAsTixNLF8pLHUudG9rZW49PT0xOHx8dS50b2tlbj09PTEwNzQ3OTA0MTU/RTI9PT0xMDc3OTM2MTU3fHxFMj09PTEwNzQ3OTA0MTV8fEUyPT09MTg/KGF8PXUuZGVzdHJ1Y3RpYmxlJjEyOD8xMjg6MCx1LmFzc2lnbmFibGUmMj9hfD0xNjppJiYoVTImMTQzMzYwKT09PTE0MzM2MCYmcTIodSxlLGksJDIsbCxjKSk6YXw9dS5hc3NpZ25hYmxlJjE/MzI6MTY6KHUudG9rZW4mNDE5NDMwNCk9PT00MTk0MzA0Pyh1LmFzc2lnbmFibGUmMj9hfD0xNjpFMiE9PTEwNzc5MzYxNTc/YXw9MzI6aSYmcTIodSxlLGksJDIsbCxjKSx5PXgodSxlLHQsbyxOLE0sXyx5KSk6KGF8PTE2LCh1LnRva2VuJjg0NTQxNDQpPT09ODQ1NDE0NCYmKHk9RjIodSxlLDEsTixNLF8sNCxFMix5KSksVSh1LGV8MzI3NjgsMjIpJiYoeT1NMih1LGUseSxOLE0sXykpKX1lbHNlKHUudG9rZW4mMjA5NzE1Mik9PT0yMDk3MTUyPyh5PXUudG9rZW49PT02OTI3MTU3MT9rMih1LGUsaSwwLHQsbyxsLGMsTixNLF8pOnIyKHUsZSxpLDAsdCxvLGwsYyxOLE0sXyksYT11LmRlc3RydWN0aWJsZSx1LmFzc2lnbmFibGU9YSYxNj8yOjEsdS50b2tlbj09PTE4fHx1LnRva2VuPT09MTA3NDc5MDQxNT91LmFzc2lnbmFibGUmMiYmKGF8PTE2KTp1LmRlc3RydWN0aWJsZSY4P2YodSw2OCk6KHk9Vyh1LGUseSx0LDAsTixNLF8pLGE9dS5hc3NpZ25hYmxlJjI/MTY6MCwodS50b2tlbiY0MTk0MzA0KT09PTQxOTQzMDQ/eT1zMSh1LGUsdCxvLE4sTSxfLHkpOigodS50b2tlbiY4NDU0MTQ0KT09PTg0NTQxNDQmJih5PUYyKHUsZSwxLE4sTSxfLDQsRCx5KSksVSh1LGV8MzI3NjgsMjIpJiYoeT1NMih1LGUseSxOLE0sXykpLGF8PXUuYXNzaWduYWJsZSYyPzE2OjMyKSkpOih5PWIyKHUsZSwxLHQsMSxOLE0sXyksYXw9dS5hc3NpZ25hYmxlJjE/MzI6MTYsdS50b2tlbj09PTE4fHx1LnRva2VuPT09MTA3NDc5MDQxNT91LmFzc2lnbmFibGUmMiYmKGF8PTE2KTooeT1XKHUsZSx5LHQsMCxOLE0sXyksYT11LmFzc2lnbmFibGUmMj8xNjowLHUudG9rZW4hPT0xOCYmRCE9PTEwNzQ3OTA0MTUmJih1LnRva2VuIT09MTA3NzkzNjE1NyYmKGF8PTE2KSx5PXgodSxlLHQsbyxOLE0sXyx5KSkpKX1lbHNlIHUudG9rZW49PT02OTI3MTU3MT8oYXw9MTYsRD09PTIwOTAwNyYmKFJ8PTE2KSxSfD0oRD09PTEyNDAyPzI1NjpEPT09MTI0MDM/NTEyOjEpfDIsJD1ZMih1LGUsdCksYXw9dS5hc3NpZ25hYmxlLHk9QTIodSxlLFIsdCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpOnUudG9rZW4mMTQzMzYwPyhhfD0xNixEPT09MTIxJiZmKHUsOTIpLEQ9PT0yMDkwMDcmJih1LmZsYWdzJjEmJmYodSwxMjgpLFJ8PTE2KSwkPXoodSxlLDApLFJ8PUQ9PT0xMjQwMj8yNTY6RD09PTEyNDAzPzUxMjoxLHk9QTIodSxlLFIsdCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcykpOnUudG9rZW49PT02NzE3NDQxMT8oYXw9MTYsUnw9MSx5PUEyKHUsZSxSLHQsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKTp1LnRva2VuPT09ODQ1NzAxND8oYXw9MTYsRD09PTEyNDAyfHxEPT09MTI0MDM/Zih1LDQwKTpEPT09MTQzNDgzJiZmKHUsOTIpLEUodSxlKSxSfD05fChEPT09MjA5MDA3PzE2OjApLHUudG9rZW4mMTQzMzYwPyQ9eih1LGUsMCk6KHUudG9rZW4mMTM0MjE3NzI4KT09PTEzNDIxNzcyOD8kPWEyKHUsZSk6dS50b2tlbj09PTY5MjcxNTcxPyhSfD0yLCQ9WTIodSxlLHQpLGF8PXUuYXNzaWduYWJsZSk6Zih1LDI4LEdbdS50b2tlbiYyNTVdKSx5PUEyKHUsZSxSLHQsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKToodS50b2tlbiYxMzQyMTc3MjgpPT09MTM0MjE3NzI4PyhEPT09MjA5MDA3JiYoUnw9MTYpLFJ8PUQ9PT0xMjQwMj8yNTY6RD09PTEyNDAzPzUxMjoxLGF8PTE2LCQ9YTIodSxlKSx5PUEyKHUsZSxSLHQsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKTpmKHUsMTI5KTtlbHNlIGlmKCh1LnRva2VuJjEzNDIxNzcyOCk9PT0xMzQyMTc3MjgpaWYoJD1hMih1LGUpLHUudG9rZW49PT0yMSl7dyh1LGV8MzI3NjgsMjEpO2xldHt0b2tlblBvczpOLGxpbmVQb3M6TSxjb2xQb3M6X309dTtpZihCPT09XCJfX3Byb3RvX19cIiYmQSsrLHUudG9rZW4mMTQzMzYwKXt5PWgyKHUsZSxsLDAsMSwwLHQsMSxOLE0sXyk7bGV0e3Rva2VuOlUyLHRva2VuVmFsdWU6JDJ9PXU7eT1XKHUsZSx5LHQsMCxOLE0sXyksdS50b2tlbj09PTE4fHx1LnRva2VuPT09MTA3NDc5MDQxNT9VMj09PTEwNzc5MzYxNTd8fFUyPT09MTA3NDc5MDQxNXx8VTI9PT0xOD91LmFzc2lnbmFibGUmMj9hfD0xNjppJiZxMih1LGUsaSwkMixsLGMpOmF8PXUuYXNzaWduYWJsZSYxPzMyOjE2OnUudG9rZW49PT0xMDc3OTM2MTU3Pyh1LmFzc2lnbmFibGUmMiYmKGF8PTE2KSx5PXgodSxlLHQsbyxOLE0sXyx5KSk6KGF8PTE2LHk9eCh1LGUsdCxvLE4sTSxfLHkpKX1lbHNlKHUudG9rZW4mMjA5NzE1Mik9PT0yMDk3MTUyPyh5PXUudG9rZW49PT02OTI3MTU3MT9rMih1LGUsaSwwLHQsbyxsLGMsTixNLF8pOnIyKHUsZSxpLDAsdCxvLGwsYyxOLE0sXyksYT11LmRlc3RydWN0aWJsZSx1LmFzc2lnbmFibGU9YSYxNj8yOjEsdS50b2tlbj09PTE4fHx1LnRva2VuPT09MTA3NDc5MDQxNT91LmFzc2lnbmFibGUmMiYmKGF8PTE2KToodS5kZXN0cnVjdGlibGUmOCkhPT04JiYoeT1XKHUsZSx5LHQsMCxOLE0sXyksYT11LmFzc2lnbmFibGUmMj8xNjowLCh1LnRva2VuJjQxOTQzMDQpPT09NDE5NDMwND95PXMxKHUsZSx0LG8sTixNLF8seSk6KCh1LnRva2VuJjg0NTQxNDQpPT09ODQ1NDE0NCYmKHk9RjIodSxlLDEsTixNLF8sNCxELHkpKSxVKHUsZXwzMjc2OCwyMikmJih5PU0yKHUsZSx5LE4sTSxfKSksYXw9dS5hc3NpZ25hYmxlJjI/MTY6MzIpKSk6KHk9YjIodSxlLDEsMCwxLE4sTSxfKSxhfD11LmFzc2lnbmFibGUmMT8zMjoxNix1LnRva2VuPT09MTh8fHUudG9rZW49PT0xMDc0NzkwNDE1P3UuYXNzaWduYWJsZSYyJiYoYXw9MTYpOih5PVcodSxlLHksdCwwLE4sTSxfKSxhPXUuYXNzaWduYWJsZSYxPzA6MTYsdS50b2tlbiE9PTE4JiZ1LnRva2VuIT09MTA3NDc5MDQxNSYmKHUudG9rZW4hPT0xMDc3OTM2MTU3JiYoYXw9MTYpLHk9eCh1LGUsdCxvLE4sTSxfLHkpKSkpfWVsc2UgdS50b2tlbj09PTY3MTc0NDExPyhSfD0xLHk9QTIodSxlLFIsdCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyksYT11LmFzc2lnbmFibGV8MTYpOmYodSwxMzApO2Vsc2UgaWYodS50b2tlbj09PTY5MjcxNTcxKWlmKCQ9WTIodSxlLHQpLGF8PXUuZGVzdHJ1Y3RpYmxlJjI1Nj8yNTY6MCxSfD0yLHUudG9rZW49PT0yMSl7RSh1LGV8MzI3NjgpO2xldHt0b2tlblBvczpOLGxpbmVQb3M6TSxjb2xQb3M6Xyx0b2tlblZhbHVlOlUyLHRva2VuOiQyfT11O2lmKHUudG9rZW4mMTQzMzYwKXt5PWgyKHUsZSxsLDAsMSwwLHQsMSxOLE0sXyk7bGV0e3Rva2VuOkUyfT11O3k9Vyh1LGUseSx0LDAsTixNLF8pLCh1LnRva2VuJjQxOTQzMDQpPT09NDE5NDMwND8oYXw9dS5hc3NpZ25hYmxlJjI/MTY6RTI9PT0xMDc3OTM2MTU3PzA6MzIseT1zMSh1LGUsdCxvLE4sTSxfLHkpKTp1LnRva2VuPT09MTh8fHUudG9rZW49PT0xMDc0NzkwNDE1P0UyPT09MTA3NzkzNjE1N3x8RTI9PT0xMDc0NzkwNDE1fHxFMj09PTE4P3UuYXNzaWduYWJsZSYyP2F8PTE2OmkmJigkMiYxNDMzNjApPT09MTQzMzYwJiZxMih1LGUsaSxVMixsLGMpOmF8PXUuYXNzaWduYWJsZSYxPzMyOjE2OihhfD0xNix5PXgodSxlLHQsbyxOLE0sXyx5KSl9ZWxzZSh1LnRva2VuJjIwOTcxNTIpPT09MjA5NzE1Mj8oeT11LnRva2VuPT09NjkyNzE1NzE/azIodSxlLGksMCx0LG8sbCxjLE4sTSxfKTpyMih1LGUsaSwwLHQsbyxsLGMsTixNLF8pLGE9dS5kZXN0cnVjdGlibGUsdS5hc3NpZ25hYmxlPWEmMTY/MjoxLHUudG9rZW49PT0xOHx8dS50b2tlbj09PTEwNzQ3OTA0MTU/dS5hc3NpZ25hYmxlJjImJihhfD0xNik6YSY4P2YodSw1OSk6KHk9Vyh1LGUseSx0LDAsTixNLF8pLGE9dS5hc3NpZ25hYmxlJjI/YXwxNjowLCh1LnRva2VuJjQxOTQzMDQpPT09NDE5NDMwND8odS50b2tlbiE9PTEwNzc5MzYxNTcmJihhfD0xNikseT1zMSh1LGUsdCxvLE4sTSxfLHkpKTooKHUudG9rZW4mODQ1NDE0NCk9PT04NDU0MTQ0JiYoeT1GMih1LGUsMSxOLE0sXyw0LEQseSkpLFUodSxlfDMyNzY4LDIyKSYmKHk9TTIodSxlLHksTixNLF8pKSxhfD11LmFzc2lnbmFibGUmMj8xNjozMikpKTooeT1iMih1LGUsMSwwLDEsTixNLF8pLGF8PXUuYXNzaWduYWJsZSYxPzMyOjE2LHUudG9rZW49PT0xOHx8dS50b2tlbj09PTEwNzQ3OTA0MTU/dS5hc3NpZ25hYmxlJjImJihhfD0xNik6KHk9Vyh1LGUseSx0LDAsTixNLF8pLGE9dS5hc3NpZ25hYmxlJjE/MDoxNix1LnRva2VuIT09MTgmJnUudG9rZW4hPT0xMDc0NzkwNDE1JiYodS50b2tlbiE9PTEwNzc5MzYxNTcmJihhfD0xNikseT14KHUsZSx0LG8sTixNLF8seSkpKSl9ZWxzZSB1LnRva2VuPT09NjcxNzQ0MTE/KFJ8PTEseT1BMih1LGUsUix0LHUudG9rZW5Qb3MsTyxqKSxhPTE2KTpmKHUsNDEpO2Vsc2UgaWYoRD09PTg0NTcwMTQpaWYodyh1LGV8MzI3NjgsODQ1NzAxNCksUnw9OCx1LnRva2VuJjE0MzM2MCl7bGV0e3Rva2VuOk4sbGluZTpNLGluZGV4Ol99PXU7JD16KHUsZSwwKSxSfD0xLHUudG9rZW49PT02NzE3NDQxMT8oYXw9MTYseT1BMih1LGUsUix0LHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSk6UyhfLE0sXyxOPT09MjA5MDA3PzQzOk49PT0xMjQwMnx8dS50b2tlbj09PTEyNDAzPzQyOjQ0LEdbTiYyNTVdKX1lbHNlKHUudG9rZW4mMTM0MjE3NzI4KT09PTEzNDIxNzcyOD8oYXw9MTYsJD1hMih1LGUpLFJ8PTEseT1BMih1LGUsUix0LGUyLE8saikpOnUudG9rZW49PT02OTI3MTU3MT8oYXw9MTYsUnw9MywkPVkyKHUsZSx0KSx5PUEyKHUsZSxSLHQsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKTpmKHUsMTIyKTtlbHNlIGYodSwyOCxHW0QmMjU1XSk7YXw9dS5kZXN0cnVjdGlibGUmMTI4PzEyODowLHUuZGVzdHJ1Y3RpYmxlPWEsZy5wdXNoKHYodSxlLGUyLE8saix7dHlwZTpcIlByb3BlcnR5XCIsa2V5OiQsdmFsdWU6eSxraW5kOlImNzY4P1ImNTEyP1wic2V0XCI6XCJnZXRcIjpcImluaXRcIixjb21wdXRlZDooUiYyKT4wLG1ldGhvZDooUiYxKT4wLHNob3J0aGFuZDooUiY0KT4wfSkpfWlmKGF8PXUuZGVzdHJ1Y3RpYmxlLHUudG9rZW4hPT0xOClicmVhaztFKHUsZSl9dyh1LGUsMTA3NDc5MDQxNSksQT4xJiYoYXw9NjQpO2xldCBDPXYodSxlLHMsaCxiLHt0eXBlOm8/XCJPYmplY3RQYXR0ZXJuXCI6XCJPYmplY3RFeHByZXNzaW9uXCIscHJvcGVydGllczpnfSk7cmV0dXJuIW4mJnUudG9rZW4mNDE5NDMwND9tZSh1LGUsYSx0LG8scyxoLGIsQyk6KHUuZGVzdHJ1Y3RpYmxlPWEsQyl9ZnVuY3Rpb24gYnQodSxlLGksbix0LG8pe3codSxlLDY3MTc0NDExKTtsZXQgbD1bXTtpZih1LmZsYWdzPSh1LmZsYWdzfDEyOCleMTI4LHUudG9rZW49PT0xNilyZXR1cm4gbiY1MTImJmYodSwzNSxcIlNldHRlclwiLFwib25lXCIsXCJcIiksRSh1LGUpLGw7biYyNTYmJmYodSwzNSxcIkdldHRlclwiLFwibm9cIixcInNcIiksbiY1MTImJnUudG9rZW49PT0xNCYmZih1LDM2KSxlPShlfDEzNDIxNzcyOCleMTM0MjE3NzI4O2xldCBjPTAscz0wO2Zvcig7dS50b2tlbiE9PTE4Oyl7bGV0IGg9bnVsbCx7dG9rZW5Qb3M6YixsaW5lUG9zOmcsY29sUG9zOmF9PXU7aWYodS50b2tlbiYxNDMzNjA/KChlJjEwMjQpPDEmJigodS50b2tlbiYzNjg2NCk9PT0zNjg2NCYmKHUuZmxhZ3N8PTI1NiksKHUudG9rZW4mNTM3MDc5ODA4KT09PTUzNzA3OTgwOCYmKHUuZmxhZ3N8PTUxMikpLGg9UTEodSxlLGksbnwxLDAsYixnLGEpKToodS50b2tlbj09PTIxNjI3MDA/aD1yMih1LGUsaSwxLG8sMSx0LDAsYixnLGEpOnUudG9rZW49PT02OTI3MTU3MT9oPWsyKHUsZSxpLDEsbywxLHQsMCxiLGcsYSk6dS50b2tlbj09PTE0JiYoaD1XMih1LGUsaSwxNix0LDAsMCxvLDEsYixnLGEpKSxzPTEsdS5kZXN0cnVjdGlibGUmNDgmJmYodSw0NykpLHUudG9rZW49PT0xMDc3OTM2MTU3KXtFKHUsZXwzMjc2OCkscz0xO2xldCBBPVEodSxlLDEsMSwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtoPXYodSxlLGIsZyxhLHt0eXBlOlwiQXNzaWdubWVudFBhdHRlcm5cIixsZWZ0OmgscmlnaHQ6QX0pfWlmKGMrKyxsLnB1c2goaCksIVUodSxlLDE4KXx8dS50b2tlbj09PTE2KWJyZWFrfXJldHVybiBuJjUxMiYmYyE9PTEmJmYodSwzNSxcIlNldHRlclwiLFwib25lXCIsXCJcIiksaSYmaS5zY29wZUVycm9yIT09dm9pZCAwJiZQKGkuc2NvcGVFcnJvcikscyYmKHUuZmxhZ3N8PTEyOCksdyh1LGUsMTYpLGx9ZnVuY3Rpb24gWTIodSxlLGkpe0UodSxlfDMyNzY4KTtsZXQgbj1RKHUsKGV8MTM0MjE3NzI4KV4xMzQyMTc3MjgsMSwwLGksdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB3KHUsZSwyMCksbn1mdW5jdGlvbiBrdCh1LGUsaSxuLHQsbyxsLGMpe3UuZmxhZ3M9KHUuZmxhZ3N8MTI4KV4xMjg7bGV0e3Rva2VuUG9zOnMsbGluZVBvczpoLGNvbFBvczpifT11O0UodSxlfDMyNzY4fDEwNzM3NDE4MjQpO2xldCBnPWUmNjQ/bzIoajIoKSwxMDI0KTp2b2lkIDA7aWYoZT0oZXwxMzQyMTc3MjgpXjEzNDIxNzcyOCxVKHUsZSwxNikpcmV0dXJuIGgxKHUsZSxnLFtdLGksMCxvLGwsYyk7bGV0IGE9MDt1LmRlc3RydWN0aWJsZSY9LTM4NTtsZXQgQSxDPVtdLEQ9MCxCPTAse3Rva2VuUG9zOk8sbGluZVBvczpqLGNvbFBvczplMn09dTtmb3IodS5hc3NpZ25hYmxlPTE7dS50b2tlbiE9PTE2Oyl7bGV0e3Rva2VuOlIsdG9rZW5Qb3M6JCxsaW5lUG9zOnksY29sUG9zOnkyfT11O2lmKFImMTQzMzYwKWcmJkIyKHUsZSxnLHUudG9rZW5WYWx1ZSwxLDApLEE9aDIodSxlLG4sMCwxLDAsMSwxLCQseSx5MiksdS50b2tlbj09PTE2fHx1LnRva2VuPT09MTg/dS5hc3NpZ25hYmxlJjI/KGF8PTE2LEI9MSk6KChSJjUzNzA3OTgwOCk9PT01MzcwNzk4MDh8fChSJjM2ODY0KT09PTM2ODY0KSYmKEI9MSk6KHUudG9rZW49PT0xMDc3OTM2MTU3P0I9MTphfD0xNixBPVcodSxlLEEsMSwwLCQseSx5MiksdS50b2tlbiE9PTE2JiZ1LnRva2VuIT09MTgmJihBPXgodSxlLDEsMCwkLHkseTIsQSkpKTtlbHNlIGlmKChSJjIwOTcxNTIpPT09MjA5NzE1MilBPVI9PT0yMTYyNzAwP3IyKHUsZXwxMDczNzQxODI0LGcsMCwxLDAsbix0LCQseSx5Mik6azIodSxlfDEwNzM3NDE4MjQsZywwLDEsMCxuLHQsJCx5LHkyKSxhfD11LmRlc3RydWN0aWJsZSxCPTEsdS5hc3NpZ25hYmxlPTIsdS50b2tlbiE9PTE2JiZ1LnRva2VuIT09MTgmJihhJjgmJmYodSwxMTgpLEE9Vyh1LGUsQSwwLDAsJCx5LHkyKSxhfD0xNix1LnRva2VuIT09MTYmJnUudG9rZW4hPT0xOCYmKEE9eCh1LGUsMCwwLCQseSx5MixBKSkpO2Vsc2UgaWYoUj09PTE0KXtBPVcyKHUsZSxnLDE2LG4sdCwwLDEsMCwkLHkseTIpLHUuZGVzdHJ1Y3RpYmxlJjE2JiZmKHUsNzEpLEI9MSxEJiYodS50b2tlbj09PTE2fHx1LnRva2VuPT09MTgpJiZDLnB1c2goQSksYXw9ODticmVha31lbHNle2lmKGF8PTE2LEE9USh1LGUsMSwwLDEsJCx5LHkyKSxEJiYodS50b2tlbj09PTE2fHx1LnRva2VuPT09MTgpJiZDLnB1c2goQSksdS50b2tlbj09PTE4JiYoRHx8KEQ9MSxDPVtBXSkpLEQpe2Zvcig7VSh1LGV8MzI3NjgsMTgpOylDLnB1c2goUSh1LGUsMSwwLDEsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKTt1LmFzc2lnbmFibGU9MixBPXYodSxlLE8saixlMix7dHlwZTpcIlNlcXVlbmNlRXhwcmVzc2lvblwiLGV4cHJlc3Npb25zOkN9KX1yZXR1cm4gdyh1LGUsMTYpLHUuZGVzdHJ1Y3RpYmxlPWEsQX1pZihEJiYodS50b2tlbj09PTE2fHx1LnRva2VuPT09MTgpJiZDLnB1c2goQSksIVUodSxlfDMyNzY4LDE4KSlicmVhaztpZihEfHwoRD0xLEM9W0FdKSx1LnRva2VuPT09MTYpe2F8PTg7YnJlYWt9fXJldHVybiBEJiYodS5hc3NpZ25hYmxlPTIsQT12KHUsZSxPLGosZTIse3R5cGU6XCJTZXF1ZW5jZUV4cHJlc3Npb25cIixleHByZXNzaW9uczpDfSkpLHcodSxlLDE2KSxhJjE2JiZhJjgmJmYodSwxNDUpLGF8PXUuZGVzdHJ1Y3RpYmxlJjI1Nj8yNTY6MHx1LmRlc3RydWN0aWJsZSYxMjg/MTI4OjAsdS50b2tlbj09PTEwPyhhJjQ4JiZmKHUsNDYpLGUmNDE5NjM1MiYmYSYxMjgmJmYodSwyOSksZSYyMDk4MTc2JiZhJjI1NiYmZih1LDMwKSxCJiYodS5mbGFnc3w9MTI4KSxoMSh1LGUsZyxEP0M6W0FdLGksMCxvLGwsYykpOihhJjgmJmYodSwxMzkpLHUuZGVzdHJ1Y3RpYmxlPSh1LmRlc3RydWN0aWJsZXwyNTYpXjI1NnxhLGUmMTI4P3YodSxlLHMsaCxiLHt0eXBlOlwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIixleHByZXNzaW9uOkF9KTpBKX1mdW5jdGlvbiBZMSh1LGUsaSxuLHQpe2xldHt0b2tlblZhbHVlOm99PXUsbD16KHUsZSwwKTtpZih1LmFzc2lnbmFibGU9MSx1LnRva2VuPT09MTApe2xldCBjO3JldHVybiBlJjY0JiYoYz1mMSh1LGUsbykpLHUuZmxhZ3M9KHUuZmxhZ3N8MTI4KV4xMjgsdTEodSxlLGMsW2xdLDAsaSxuLHQpfXJldHVybiBsfWZ1bmN0aW9uIGcxKHUsZSxpLG4sdCxvLGwsYyxzLGgpe298fGYodSw1NCksdCYmZih1LDQ4KSx1LmZsYWdzJj0tMTI5O2xldCBiPWUmNjQ/ZjEodSxlLGkpOnZvaWQgMDtyZXR1cm4gdTEodSxlLGIsW25dLGwsYyxzLGgpfWZ1bmN0aW9uIGgxKHUsZSxpLG4sdCxvLGwsYyxzKXt0fHxmKHUsNTQpO2ZvcihsZXQgaD0wO2g8bi5sZW5ndGg7KytoKXYyKHUsbltoXSk7cmV0dXJuIHUxKHUsZSxpLG4sbyxsLGMscyl9ZnVuY3Rpb24gdTEodSxlLGksbix0LG8sbCxjKXt1LmZsYWdzJjEmJmYodSw0NSksdyh1LGV8MzI3NjgsMTApLGU9KGV8MTU3Mjg2NDApXjE1NzI4NjQwfHQ8PDIyO2xldCBzPXUudG9rZW4hPT0yMTYyNzAwLGg7aWYoaSYmaS5zY29wZUVycm9yIT09dm9pZCAwJiZQKGkuc2NvcGVFcnJvcikscyloPVEodSxlLDEsMCwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtlbHNle3N3aXRjaChpJiYoaT1vMihpLDEyOCkpLGg9YTEodSwoZXwxMzQyMjE4MjR8ODE5MnwxNjM4NCleMTM0MjQ2NDAwLGksMTYsdm9pZCAwLHZvaWQgMCksdS50b2tlbil7Y2FzZSA2OTI3MTU3MToodS5mbGFncyYxKTwxJiZmKHUsMTEyKTticmVhaztjYXNlIDY3MTA4ODc3OmNhc2UgNjcxNzQ0MDk6Y2FzZSAyMjpmKHUsMTEzKTtjYXNlIDY3MTc0NDExOih1LmZsYWdzJjEpPDEmJmYodSwxMTIpLHUuZmxhZ3N8PTEwMjQ7YnJlYWt9KHUudG9rZW4mODQ1NDE0NCk9PT04NDU0MTQ0JiYodS5mbGFncyYxKTwxJiZmKHUsMjgsR1t1LnRva2VuJjI1NV0pLCh1LnRva2VuJjMzNjE5OTY4KT09PTMzNjE5OTY4JiZmKHUsMTIxKX1yZXR1cm4gdS5hc3NpZ25hYmxlPTIsdih1LGUsbyxsLGMse3R5cGU6XCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiLHBhcmFtczpuLGJvZHk6aCxhc3luYzp0PT09MSxleHByZXNzaW9uOnN9KX1mdW5jdGlvbiBiZSh1LGUsaSxuLHQpe3codSxlLDY3MTc0NDExKSx1LmZsYWdzPSh1LmZsYWdzfDEyOCleMTI4O2xldCBvPVtdO2lmKFUodSxlLDE2KSlyZXR1cm4gbztlPShlfDEzNDIxNzcyOCleMTM0MjE3NzI4O2xldCBsPTA7Zm9yKDt1LnRva2VuIT09MTg7KXtsZXQgYyx7dG9rZW5Qb3M6cyxsaW5lUG9zOmgsY29sUG9zOmJ9PXU7aWYodS50b2tlbiYxNDMzNjA/KChlJjEwMjQpPDEmJigodS50b2tlbiYzNjg2NCk9PT0zNjg2NCYmKHUuZmxhZ3N8PTI1NiksKHUudG9rZW4mNTM3MDc5ODA4KT09PTUzNzA3OTgwOCYmKHUuZmxhZ3N8PTUxMikpLGM9UTEodSxlLGksdHwxLDAscyxoLGIpKToodS50b2tlbj09PTIxNjI3MDA/Yz1yMih1LGUsaSwxLG4sMSx0LDAscyxoLGIpOnUudG9rZW49PT02OTI3MTU3MT9jPWsyKHUsZSxpLDEsbiwxLHQsMCxzLGgsYik6dS50b2tlbj09PTE0P2M9VzIodSxlLGksMTYsdCwwLDAsbiwxLHMsaCxiKTpmKHUsMjgsR1t1LnRva2VuJjI1NV0pLGw9MSx1LmRlc3RydWN0aWJsZSY0OCYmZih1LDQ3KSksdS50b2tlbj09PTEwNzc5MzYxNTcpe0UodSxlfDMyNzY4KSxsPTE7bGV0IGc9USh1LGUsMSwxLG4sdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO2M9dih1LGUscyxoLGIse3R5cGU6XCJBc3NpZ25tZW50UGF0dGVyblwiLGxlZnQ6YyxyaWdodDpnfSl9aWYoby5wdXNoKGMpLCFVKHUsZSwxOCl8fHUudG9rZW49PT0xNilicmVha31yZXR1cm4gbCYmKHUuZmxhZ3N8PTEyOCksaSYmKGx8fGUmMTAyNCkmJmkuc2NvcGVFcnJvciE9PXZvaWQgMCYmUChpLnNjb3BlRXJyb3IpLHcodSxlLDE2KSxvfWZ1bmN0aW9uIG0xKHUsZSxpLG4sdCxvLGwpe2xldHt0b2tlbjpjfT11O2lmKGMmNjcxMDg4NjQpe2lmKGM9PT02NzEwODg3Nyl7RSh1LGV8MTA3Mzc0MTgyNCksdS5hc3NpZ25hYmxlPTE7bGV0IHM9c2UodSxlKTtyZXR1cm4gbTEodSxlLHYodSxlLHQsbyxsLHt0eXBlOlwiTWVtYmVyRXhwcmVzc2lvblwiLG9iamVjdDppLGNvbXB1dGVkOiExLHByb3BlcnR5OnN9KSwwLHQsbyxsKX1lbHNlIGlmKGM9PT02OTI3MTU3MSl7RSh1LGV8MzI3NjgpO2xldHt0b2tlblBvczpzLGxpbmVQb3M6aCxjb2xQb3M6Yn09dSxnPWYyKHUsZSxuLDEscyxoLGIpO3JldHVybiB3KHUsZSwyMCksdS5hc3NpZ25hYmxlPTEsbTEodSxlLHYodSxlLHQsbyxsLHt0eXBlOlwiTWVtYmVyRXhwcmVzc2lvblwiLG9iamVjdDppLGNvbXB1dGVkOiEwLHByb3BlcnR5Omd9KSwwLHQsbyxsKX1lbHNlIGlmKGM9PT02NzE3NDQwOHx8Yz09PTY3MTc0NDA5KXJldHVybiB1LmFzc2lnbmFibGU9MixtMSh1LGUsdih1LGUsdCxvLGwse3R5cGU6XCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIix0YWc6aSxxdWFzaTp1LnRva2VuPT09NjcxNzQ0MDg/SzEodSxlfDY1NTM2KTpIMSh1LGUsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpfSksMCx0LG8sbCl9cmV0dXJuIGl9ZnVuY3Rpb24gcnQodSxlLGksbix0LG8pe2xldCBsPXoodSxlfDMyNzY4LDApLHt0b2tlblBvczpjLGxpbmVQb3M6cyxjb2xQb3M6aH09dTtpZihVKHUsZSw2NzEwODg3Nykpe2lmKGUmNjcxMDg4NjQmJnUudG9rZW49PT0xNDM0OTQpcmV0dXJuIHUuYXNzaWduYWJsZT0yLHZ0KHUsZSxsLG4sdCxvKTtmKHUsOTEpfXUuYXNzaWduYWJsZT0yLCh1LnRva2VuJjE2ODQyNzUyKT09PTE2ODQyNzUyJiZmKHUsNjIsR1t1LnRva2VuJjI1NV0pO2xldCBiPWgyKHUsZSwyLDEsMCwwLGksMSxjLHMsaCk7ZT0oZXwxMzQyMTc3MjgpXjEzNDIxNzcyOCx1LnRva2VuPT09NjcxMDg5OTEmJmYodSwxNjIpO2xldCBnPW0xKHUsZSxiLGksYyxzLGgpO3JldHVybiB1LmFzc2lnbmFibGU9Mix2KHUsZSxuLHQsbyx7dHlwZTpcIk5ld0V4cHJlc3Npb25cIixjYWxsZWU6Zyxhcmd1bWVudHM6dS50b2tlbj09PTY3MTc0NDExP1cxKHUsZSxpKTpbXX0pfWZ1bmN0aW9uIHZ0KHUsZSxpLG4sdCxvKXtsZXQgbD16KHUsZSwwKTtyZXR1cm4gdih1LGUsbix0LG8se3R5cGU6XCJNZXRhUHJvcGVydHlcIixtZXRhOmkscHJvcGVydHk6bH0pfWZ1bmN0aW9uIGtlKHUsZSxpLG4sdCxvKXtyZXR1cm4gdS50b2tlbj09PTIwOTAwOCYmZih1LDI5KSxlJjIwOTgxNzYmJnUudG9rZW49PT0yNDE3NzMmJmYodSwzMCksKHUudG9rZW4mNTM3MDc5ODA4KT09PTUzNzA3OTgwOCYmKHUuZmxhZ3N8PTUxMiksZzEodSxlLHUudG9rZW5WYWx1ZSx6KHUsZSwwKSwwLGksMSxuLHQsbyl9ZnVuY3Rpb24gJDEodSxlLGksbix0LG8sbCxjLHMsaCl7RSh1LGV8MzI3NjgpO2xldCBiPWUmNjQ/bzIoajIoKSwxMDI0KTp2b2lkIDA7aWYoZT0oZXwxMzQyMTc3MjgpXjEzNDIxNzcyOCxVKHUsZSwxNikpcmV0dXJuIHUudG9rZW49PT0xMD8obCYxJiZmKHUsNDUpLGgxKHUsZSxiLFtdLG4sMSxjLHMsaCkpOnYodSxlLGMscyxoLHt0eXBlOlwiQ2FsbEV4cHJlc3Npb25cIixjYWxsZWU6aSxhcmd1bWVudHM6W119KTtsZXQgZz0wLGE9bnVsbCxBPTA7dS5kZXN0cnVjdGlibGU9KHUuZGVzdHJ1Y3RpYmxlfDI1NnwxMjgpXjM4NDtsZXQgQz1bXTtmb3IoO3UudG9rZW4hPT0xNjspe2xldHt0b2tlbjpELHRva2VuUG9zOkIsbGluZVBvczpPLGNvbFBvczpqfT11O2lmKEQmMTQzMzYwKWImJkIyKHUsZSxiLHUudG9rZW5WYWx1ZSx0LDApLGE9aDIodSxlLHQsMCwxLDAsMSwxLEIsTyxqKSx1LnRva2VuPT09MTZ8fHUudG9rZW49PT0xOD91LmFzc2lnbmFibGUmMj8oZ3w9MTYsQT0xKTooRCY1MzcwNzk4MDgpPT09NTM3MDc5ODA4P3UuZmxhZ3N8PTUxMjooRCYzNjg2NCk9PT0zNjg2NCYmKHUuZmxhZ3N8PTI1Nik6KHUudG9rZW49PT0xMDc3OTM2MTU3P0E9MTpnfD0xNixhPVcodSxlLGEsMSwwLEIsTyxqKSx1LnRva2VuIT09MTYmJnUudG9rZW4hPT0xOCYmKGE9eCh1LGUsMSwwLEIsTyxqLGEpKSk7ZWxzZSBpZihEJjIwOTcxNTIpYT1EPT09MjE2MjcwMD9yMih1LGUsYiwwLDEsMCx0LG8sQixPLGopOmsyKHUsZSxiLDAsMSwwLHQsbyxCLE8saiksZ3w9dS5kZXN0cnVjdGlibGUsQT0xLHUudG9rZW4hPT0xNiYmdS50b2tlbiE9PTE4JiYoZyY4JiZmKHUsMTE4KSxhPVcodSxlLGEsMCwwLEIsTyxqKSxnfD0xNiwodS50b2tlbiY4NDU0MTQ0KT09PTg0NTQxNDQmJihhPUYyKHUsZSwxLGMscyxoLDQsRCxhKSksVSh1LGV8MzI3NjgsMjIpJiYoYT1NMih1LGUsYSxjLHMsaCkpKTtlbHNlIGlmKEQ9PT0xNClhPVcyKHUsZSxiLDE2LHQsbywxLDEsMCxCLE8saiksZ3w9KHUudG9rZW49PT0xNj8wOjE2KXx1LmRlc3RydWN0aWJsZSxBPTE7ZWxzZXtmb3IoYT1RKHUsZSwxLDAsMCxCLE8saiksZz11LmFzc2lnbmFibGUsQy5wdXNoKGEpO1UodSxlfDMyNzY4LDE4KTspQy5wdXNoKFEodSxlLDEsMCwwLEIsTyxqKSk7cmV0dXJuIGd8PXUuYXNzaWduYWJsZSx3KHUsZSwxNiksdS5kZXN0cnVjdGlibGU9Z3wxNix1LmFzc2lnbmFibGU9Mix2KHUsZSxjLHMsaCx7dHlwZTpcIkNhbGxFeHByZXNzaW9uXCIsY2FsbGVlOmksYXJndW1lbnRzOkN9KX1pZihDLnB1c2goYSksIVUodSxlfDMyNzY4LDE4KSlicmVha31yZXR1cm4gdyh1LGUsMTYpLGd8PXUuZGVzdHJ1Y3RpYmxlJjI1Nj8yNTY6MHx1LmRlc3RydWN0aWJsZSYxMjg/MTI4OjAsdS50b2tlbj09PTEwPyhnJjQ4JiZmKHUsMjUpLCh1LmZsYWdzJjF8fGwmMSkmJmYodSw0NSksZyYxMjgmJmYodSwyOSksZSYyMDk4MTc2JiZnJjI1NiYmZih1LDMwKSxBJiYodS5mbGFnc3w9MTI4KSxoMSh1LGUsYixDLG4sMSxjLHMsaCkpOihnJjgmJmYodSw1OSksdS5hc3NpZ25hYmxlPTIsdih1LGUsYyxzLGgse3R5cGU6XCJDYWxsRXhwcmVzc2lvblwiLGNhbGxlZTppLGFyZ3VtZW50czpDfSkpfWZ1bmN0aW9uIEF0KHUsZSxpLG4sdCl7bGV0e3Rva2VuUmF3Om8sdG9rZW5SZWdFeHA6bCx0b2tlblZhbHVlOmN9PXU7cmV0dXJuIEUodSxlKSx1LmFzc2lnbmFibGU9MixlJjUxMj92KHUsZSxpLG4sdCx7dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTpjLHJlZ2V4OmwscmF3Om99KTp2KHUsZSxpLG4sdCx7dHlwZTpcIkxpdGVyYWxcIix2YWx1ZTpjLHJlZ2V4Omx9KX1mdW5jdGlvbiBaMSh1LGUsaSxuLHQsbyxsKXtlPShlfDE2Nzc3MjE2fDEwMjQpXjE2Nzc3MjE2O2xldCBjPWIxKHUsZSk7Yy5sZW5ndGgmJih0PXUudG9rZW5Qb3Msbz11LmxpbmVQb3MsbD11LmNvbFBvcyksdS5sZWFkaW5nRGVjb3JhdG9ycy5sZW5ndGgmJih1LmxlYWRpbmdEZWNvcmF0b3JzLnB1c2goLi4uYyksYz11LmxlYWRpbmdEZWNvcmF0b3JzLHUubGVhZGluZ0RlY29yYXRvcnM9W10pLEUodSxlKTtsZXQgcz1udWxsLGg9bnVsbCx7dG9rZW5WYWx1ZTpifT11O3UudG9rZW4mNDA5NiYmdS50b2tlbiE9PTIwNTY3PyhHdSh1LGUsdS50b2tlbikmJmYodSwxMTQpLCh1LnRva2VuJjUzNzA3OTgwOCk9PT01MzcwNzk4MDgmJmYodSwxMTUpLGkmJihCMih1LGUsaSxiLDMyLDApLG4mJm4mMiYmXzIodSxiKSkscz16KHUsZSwwKSk6KG4mMSk8MSYmZih1LDM3LFwiQ2xhc3NcIik7bGV0IGc9ZTtVKHUsZXwzMjc2OCwyMDU2Nyk/KGg9YjIodSxlLDAsMCwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSxnfD01MjQyODgpOmc9KGd8NTI0Mjg4KV41MjQyODg7bGV0IGE9cmUodSxnLGUsaSwyLDgsMCk7cmV0dXJuIHYodSxlLHQsbyxsLGUmMT97dHlwZTpcIkNsYXNzRGVjbGFyYXRpb25cIixpZDpzLHN1cGVyQ2xhc3M6aCxkZWNvcmF0b3JzOmMsYm9keTphfTp7dHlwZTpcIkNsYXNzRGVjbGFyYXRpb25cIixpZDpzLHN1cGVyQ2xhc3M6aCxib2R5OmF9KX1mdW5jdGlvbiB5dCh1LGUsaSxuLHQsbyl7bGV0IGw9bnVsbCxjPW51bGw7ZT0oZXwxMDI0fDE2Nzc3MjE2KV4xNjc3NzIxNjtsZXQgcz1iMSh1LGUpO3MubGVuZ3RoJiYobj11LnRva2VuUG9zLHQ9dS5saW5lUG9zLG89dS5jb2xQb3MpLEUodSxlKSx1LnRva2VuJjQwOTYmJnUudG9rZW4hPT0yMDU2NyYmKEd1KHUsZSx1LnRva2VuKSYmZih1LDExNCksKHUudG9rZW4mNTM3MDc5ODA4KT09PTUzNzA3OTgwOCYmZih1LDExNSksbD16KHUsZSwwKSk7bGV0IGg9ZTtVKHUsZXwzMjc2OCwyMDU2Nyk/KGM9YjIodSxlLDAsaSwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSxofD01MjQyODgpOmg9KGh8NTI0Mjg4KV41MjQyODg7bGV0IGI9cmUodSxoLGUsdm9pZCAwLDIsMCxpKTtyZXR1cm4gdS5hc3NpZ25hYmxlPTIsdih1LGUsbix0LG8sZSYxP3t0eXBlOlwiQ2xhc3NFeHByZXNzaW9uXCIsaWQ6bCxzdXBlckNsYXNzOmMsZGVjb3JhdG9yczpzLGJvZHk6Yn06e3R5cGU6XCJDbGFzc0V4cHJlc3Npb25cIixpZDpsLHN1cGVyQ2xhc3M6Yyxib2R5OmJ9KX1mdW5jdGlvbiBiMSh1LGUpe2xldCBpPVtdO2lmKGUmMSlmb3IoO3UudG9rZW49PT0xMzM7KWkucHVzaChQdCh1LGUsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpKTtyZXR1cm4gaX1mdW5jdGlvbiBQdCh1LGUsaSxuLHQpe0UodSxlfDMyNzY4KTtsZXQgbz1oMih1LGUsMiwwLDEsMCwwLDEsaSxuLHQpO3JldHVybiBvPVcodSxlLG8sMCwwLGksbix0KSx2KHUsZSxpLG4sdCx7dHlwZTpcIkRlY29yYXRvclwiLGV4cHJlc3Npb246b30pfWZ1bmN0aW9uIHJlKHUsZSxpLG4sdCxvLGwpe2xldHt0b2tlblBvczpjLGxpbmVQb3M6cyxjb2xQb3M6aH09dTt3KHUsZXwzMjc2OCwyMTYyNzAwKSxlPShlfDEzNDIxNzcyOCleMTM0MjE3NzI4LHUuZmxhZ3M9KHUuZmxhZ3N8MzIpXjMyO2xldCBiPVtdLGc7Zm9yKDt1LnRva2VuIT09MTA3NDc5MDQxNTspe2xldCBhPTA7aWYoZz1iMSh1LGUpLGE9Zy5sZW5ndGgsYT4wJiZ1LnRva2VuVmFsdWU9PT1cImNvbnN0cnVjdG9yXCImJmYodSwxMDYpLHUudG9rZW49PT0xMDc0NzkwNDE1JiZmKHUsMTA1KSxVKHUsZSwxMDc0NzkwNDE3KSl7YT4wJiZmKHUsMTE2KTtjb250aW51ZX1iLnB1c2godmUodSxlLG4saSx0LGcsMCxsLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSl9cmV0dXJuIHcodSxvJjg/ZXwzMjc2ODplLDEwNzQ3OTA0MTUpLHYodSxlLGMscyxoLHt0eXBlOlwiQ2xhc3NCb2R5XCIsYm9keTpifSl9ZnVuY3Rpb24gdmUodSxlLGksbix0LG8sbCxjLHMsaCxiKXtsZXQgZz1sPzMyOjAsYT1udWxsLHt0b2tlbjpBLHRva2VuUG9zOkMsbGluZVBvczpELGNvbFBvczpCfT11O2lmKEEmMTc2MTI4KXN3aXRjaChhPXoodSxlLDApLEEpe2Nhc2UgMzY5NzI6aWYoIWwmJnUudG9rZW4hPT02NzE3NDQxMSlyZXR1cm4gdmUodSxlLGksbix0LG8sMSxjLHMsaCxiKTticmVhaztjYXNlIDIwOTAwNzppZih1LnRva2VuIT09NjcxNzQ0MTEmJih1LmZsYWdzJjEpPDEpe2lmKGUmMSYmKHUudG9rZW4mMTA3Mzc0MTgyNCk9PT0xMDczNzQxODI0KXJldHVybiByMSh1LGUsYSxnLG8sQyxELEIpO2d8PTE2fChWMSh1LGUsODQ1NzAxNCk/ODowKX1icmVhaztjYXNlIDEyNDAyOmlmKHUudG9rZW4hPT02NzE3NDQxMSl7aWYoZSYxJiYodS50b2tlbiYxMDczNzQxODI0KT09PTEwNzM3NDE4MjQpcmV0dXJuIHIxKHUsZSxhLGcsbyxDLEQsQik7Z3w9MjU2fWJyZWFrO2Nhc2UgMTI0MDM6aWYodS50b2tlbiE9PTY3MTc0NDExKXtpZihlJjEmJih1LnRva2VuJjEwNzM3NDE4MjQpPT09MTA3Mzc0MTgyNClyZXR1cm4gcjEodSxlLGEsZyxvLEMsRCxCKTtnfD01MTJ9YnJlYWt9ZWxzZSBBPT09NjkyNzE1NzE/KGd8PTIsYT1ZMih1LG4sYykpOihBJjEzNDIxNzcyOCk9PT0xMzQyMTc3Mjg/YT1hMih1LGUpOkE9PT04NDU3MDE0PyhnfD04LEUodSxlKSk6ZSYxJiZ1LnRva2VuPT09MTMxPyhnfD00MDk2LGE9azEodSxlfDE2Mzg0LEMsRCxCKSk6ZSYxJiYodS50b2tlbiYxMDczNzQxODI0KT09PTEwNzM3NDE4MjQ/Z3w9MTI4OkE9PT0xMjI/KGE9eih1LGUsMCksdS50b2tlbiE9PTY3MTc0NDExJiZmKHUsMjgsR1t1LnRva2VuJjI1NV0pKTpmKHUsMjgsR1t1LnRva2VuJjI1NV0pO2lmKGcmNzkyJiYodS50b2tlbiYxNDMzNjA/YT16KHUsZSwwKToodS50b2tlbiYxMzQyMTc3MjgpPT09MTM0MjE3NzI4P2E9YTIodSxlKTp1LnRva2VuPT09NjkyNzE1NzE/KGd8PTIsYT1ZMih1LGUsMCkpOnUudG9rZW49PT0xMjI/YT16KHUsZSwwKTplJjEmJnUudG9rZW49PT0xMzE/KGd8PTQwOTYsYT1rMSh1LGUsQyxELEIpKTpmKHUsMTMxKSksKGcmMik8MSYmKHUudG9rZW5WYWx1ZT09PVwiY29uc3RydWN0b3JcIj8oKHUudG9rZW4mMTA3Mzc0MTgyNCk9PT0xMDczNzQxODI0P2YodSwxMjUpOihnJjMyKTwxJiZ1LnRva2VuPT09NjcxNzQ0MTEmJihnJjkyMD9mKHUsNTAsXCJhY2Nlc3NvclwiKTooZSY1MjQyODgpPDEmJih1LmZsYWdzJjMyP2YodSw1MSk6dS5mbGFnc3w9MzIpKSxnfD02NCk6KGcmNDA5Nik8MSYmZyY4MjQmJnUudG9rZW5WYWx1ZT09PVwicHJvdG90eXBlXCImJmYodSw0OSkpLGUmMSYmdS50b2tlbiE9PTY3MTc0NDExKXJldHVybiByMSh1LGUsYSxnLG8sQyxELEIpO2xldCBPPUEyKHUsZSxnLGMsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB2KHUsZSxzLGgsYixlJjE/e3R5cGU6XCJNZXRob2REZWZpbml0aW9uXCIsa2luZDooZyYzMik8MSYmZyY2ND9cImNvbnN0cnVjdG9yXCI6ZyYyNTY/XCJnZXRcIjpnJjUxMj9cInNldFwiOlwibWV0aG9kXCIsc3RhdGljOihnJjMyKT4wLGNvbXB1dGVkOihnJjIpPjAsa2V5OmEsZGVjb3JhdG9yczpvLHZhbHVlOk99Ont0eXBlOlwiTWV0aG9kRGVmaW5pdGlvblwiLGtpbmQ6KGcmMzIpPDEmJmcmNjQ/XCJjb25zdHJ1Y3RvclwiOmcmMjU2P1wiZ2V0XCI6ZyY1MTI/XCJzZXRcIjpcIm1ldGhvZFwiLHN0YXRpYzooZyYzMik+MCxjb21wdXRlZDooZyYyKT4wLGtleTphLHZhbHVlOk99KX1mdW5jdGlvbiBrMSh1LGUsaSxuLHQpe0UodSxlKTtsZXR7dG9rZW5WYWx1ZTpvfT11O3JldHVybiBvPT09XCJjb25zdHJ1Y3RvclwiJiZmKHUsMTI0KSxFKHUsZSksdih1LGUsaSxuLHQse3R5cGU6XCJQcml2YXRlSWRlbnRpZmllclwiLG5hbWU6b30pfWZ1bmN0aW9uIHIxKHUsZSxpLG4sdCxvLGwsYyl7bGV0IHM9bnVsbDtpZihuJjgmJmYodSwwKSx1LnRva2VuPT09MTA3NzkzNjE1Nyl7RSh1LGV8MzI3NjgpO2xldHt0b2tlblBvczpoLGxpbmVQb3M6Yixjb2xQb3M6Z309dTt1LnRva2VuPT09NTM3MDc5OTI4JiZmKHUsMTE1KSxzPWgyKHUsZXwxNjM4NCwyLDAsMSwwLDAsMSxoLGIsZyksKHUudG9rZW4mMTA3Mzc0MTgyNCkhPT0xMDczNzQxODI0JiYocz1XKHUsZXwxNjM4NCxzLDAsMCxoLGIsZykscz14KHUsZXwxNjM4NCwwLDAsaCxiLGcscyksdS50b2tlbj09PTE4JiYocz1TMih1LGUsMCxvLGwsYyxzKSkpfXJldHVybiB2KHUsZSxvLGwsYyx7dHlwZTpcIlByb3BlcnR5RGVmaW5pdGlvblwiLGtleTppLHZhbHVlOnMsc3RhdGljOihuJjMyKT4wLGNvbXB1dGVkOihuJjIpPjAsZGVjb3JhdG9yczp0fSl9ZnVuY3Rpb24gQWUodSxlLGksbix0LG8sbCxjKXtpZih1LnRva2VuJjE0MzM2MClyZXR1cm4gUTEodSxlLGksbix0LG8sbCxjKTsodS50b2tlbiYyMDk3MTUyKSE9PTIwOTcxNTImJmYodSwyOCxHW3UudG9rZW4mMjU1XSk7bGV0IHM9dS50b2tlbj09PTY5MjcxNTcxP2syKHUsZSxpLDEsMCwxLG4sdCxvLGwsYyk6cjIodSxlLGksMSwwLDEsbix0LG8sbCxjKTtyZXR1cm4gdS5kZXN0cnVjdGlibGUmMTYmJmYodSw0NyksdS5kZXN0cnVjdGlibGUmMzImJmYodSw0Nyksc31mdW5jdGlvbiBRMSh1LGUsaSxuLHQsbyxsLGMpe2xldHt0b2tlblZhbHVlOnMsdG9rZW46aH09dTtyZXR1cm4gZSYxMDI0JiYoKGgmNTM3MDc5ODA4KT09PTUzNzA3OTgwOD9mKHUsMTE1KTooaCYzNjg2NCk9PT0zNjg2NCYmZih1LDExNCkpLChoJjIwNDgwKT09PTIwNDgwJiZmKHUsOTkpLGUmMjA5OTIwMCYmaD09PTI0MTc3MyYmZih1LDMwKSxoPT09MjQxNzM5JiZuJjI0JiZmKHUsOTcpLGUmNDE5NjM1MiYmaD09PTIwOTAwOCYmZih1LDk1KSxFKHUsZSksaSYmcTIodSxlLGkscyxuLHQpLHYodSxlLG8sbCxjLHt0eXBlOlwiSWRlbnRpZmllclwiLG5hbWU6c30pfWZ1bmN0aW9uIEcxKHUsZSxpLG4sdCxvKXtpZihFKHUsZSksdS50b2tlbj09PTg0NTYyNTkpcmV0dXJuIHYodSxlLG4sdCxvLHt0eXBlOlwiSlNYRnJhZ21lbnRcIixvcGVuaW5nRnJhZ21lbnQ6RXQodSxlLG4sdCxvKSxjaGlsZHJlbjp5ZSh1LGUpLGNsb3NpbmdGcmFnbWVudDpDdCh1LGUsaSx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyl9KTtsZXQgbD1udWxsLGM9W10scz1CdCh1LGUsaSxuLHQsbyk7aWYoIXMuc2VsZkNsb3Npbmcpe2M9eWUodSxlKSxsPUR0KHUsZSxpLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtsZXQgaD1sMShsLm5hbWUpO2wxKHMubmFtZSkhPT1oJiZmKHUsMTQ5LGgpfXJldHVybiB2KHUsZSxuLHQsbyx7dHlwZTpcIkpTWEVsZW1lbnRcIixjaGlsZHJlbjpjLG9wZW5pbmdFbGVtZW50OnMsY2xvc2luZ0VsZW1lbnQ6bH0pfWZ1bmN0aW9uIEV0KHUsZSxpLG4sdCl7cmV0dXJuIFYyKHUsZSksdih1LGUsaSxuLHQse3R5cGU6XCJKU1hPcGVuaW5nRnJhZ21lbnRcIn0pfWZ1bmN0aW9uIER0KHUsZSxpLG4sdCxvKXt3KHUsZSwyNSk7bGV0IGw9UGUodSxlLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gaT93KHUsZSw4NDU2MjU5KTp1LnRva2VuPVYyKHUsZSksdih1LGUsbix0LG8se3R5cGU6XCJKU1hDbG9zaW5nRWxlbWVudFwiLG5hbWU6bH0pfWZ1bmN0aW9uIEN0KHUsZSxpLG4sdCxvKXtyZXR1cm4gdyh1LGUsMjUpLHcodSxlLDg0NTYyNTkpLHYodSxlLG4sdCxvLHt0eXBlOlwiSlNYQ2xvc2luZ0ZyYWdtZW50XCJ9KX1mdW5jdGlvbiB5ZSh1LGUpe2xldCBpPVtdO2Zvcig7dS50b2tlbiE9PTI1Oyl1LmluZGV4PXUudG9rZW5Qb3M9dS5zdGFydFBvcyx1LmNvbHVtbj11LmNvbFBvcz11LnN0YXJ0Q29sdW1uLHUubGluZT11LmxpbmVQb3M9dS5zdGFydExpbmUsVjIodSxlKSxpLnB1c2god3QodSxlLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSk7cmV0dXJuIGl9ZnVuY3Rpb24gd3QodSxlLGksbix0KXtpZih1LnRva2VuPT09MTM4KXJldHVybiBxdCh1LGUsaSxuLHQpO2lmKHUudG9rZW49PT0yMTYyNzAwKXJldHVybiBEZSh1LGUsMCwwLGksbix0KTtpZih1LnRva2VuPT09ODQ1NjI1OClyZXR1cm4gRzEodSxlLDAsaSxuLHQpO2YodSwwKX1mdW5jdGlvbiBxdCh1LGUsaSxuLHQpe1YyKHUsZSk7bGV0IG89e3R5cGU6XCJKU1hUZXh0XCIsdmFsdWU6dS50b2tlblZhbHVlfTtyZXR1cm4gZSY1MTImJihvLnJhdz11LnRva2VuUmF3KSx2KHUsZSxpLG4sdCxvKX1mdW5jdGlvbiBCdCh1LGUsaSxuLHQsbyl7KHUudG9rZW4mMTQzMzYwKSE9PTE0MzM2MCYmKHUudG9rZW4mNDA5NikhPT00MDk2JiZmKHUsMCk7bGV0IGw9UGUodSxlLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSxjPUZ0KHUsZSkscz11LnRva2VuPT09ODQ1NzAxNjtyZXR1cm4gdS50b2tlbj09PTg0NTYyNTk/VjIodSxlKToodyh1LGUsODQ1NzAxNiksaT93KHUsZSw4NDU2MjU5KTpWMih1LGUpKSx2KHUsZSxuLHQsbyx7dHlwZTpcIkpTWE9wZW5pbmdFbGVtZW50XCIsbmFtZTpsLGF0dHJpYnV0ZXM6YyxzZWxmQ2xvc2luZzpzfSl9ZnVuY3Rpb24gUGUodSxlLGksbix0KXtOMSh1KTtsZXQgbz12MSh1LGUsaSxuLHQpO2lmKHUudG9rZW49PT0yMSlyZXR1cm4gRWUodSxlLG8saSxuLHQpO2Zvcig7VSh1LGUsNjcxMDg4NzcpOylOMSh1KSxvPVN0KHUsZSxvLGksbix0KTtyZXR1cm4gb31mdW5jdGlvbiBTdCh1LGUsaSxuLHQsbyl7bGV0IGw9djEodSxlLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gdih1LGUsbix0LG8se3R5cGU6XCJKU1hNZW1iZXJFeHByZXNzaW9uXCIsb2JqZWN0OmkscHJvcGVydHk6bH0pfWZ1bmN0aW9uIEZ0KHUsZSl7bGV0IGk9W107Zm9yKDt1LnRva2VuIT09ODQ1NzAxNiYmdS50b2tlbiE9PTg0NTYyNTkmJnUudG9rZW4hPT0xMDQ4NTc2OylpLnB1c2goTHQodSxlLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKSk7cmV0dXJuIGl9ZnVuY3Rpb24gVHQodSxlLGksbix0KXtFKHUsZSksdyh1LGUsMTQpO2xldCBvPVEodSxlLDEsMCwwLHUudG9rZW5Qb3MsdS5saW5lUG9zLHUuY29sUG9zKTtyZXR1cm4gdyh1LGUsMTA3NDc5MDQxNSksdih1LGUsaSxuLHQse3R5cGU6XCJKU1hTcHJlYWRBdHRyaWJ1dGVcIixhcmd1bWVudDpvfSl9ZnVuY3Rpb24gTHQodSxlLGksbix0KXtpZih1LnRva2VuPT09MjE2MjcwMClyZXR1cm4gVHQodSxlLGksbix0KTtOMSh1KTtsZXQgbz1udWxsLGw9djEodSxlLGksbix0KTtpZih1LnRva2VuPT09MjEmJihsPUVlKHUsZSxsLGksbix0KSksdS50b2tlbj09PTEwNzc5MzYxNTcpe2xldCBjPXcwKHUsZSkse3Rva2VuUG9zOnMsbGluZVBvczpoLGNvbFBvczpifT11O3N3aXRjaChjKXtjYXNlIDEzNDI4MzI2NzpvPWEyKHUsZSk7YnJlYWs7Y2FzZSA4NDU2MjU4Om89RzEodSxlLDEscyxoLGIpO2JyZWFrO2Nhc2UgMjE2MjcwMDpvPURlKHUsZSwxLDEscyxoLGIpO2JyZWFrO2RlZmF1bHQ6Zih1LDE0OCl9fXJldHVybiB2KHUsZSxpLG4sdCx7dHlwZTpcIkpTWEF0dHJpYnV0ZVwiLHZhbHVlOm8sbmFtZTpsfSl9ZnVuY3Rpb24gRWUodSxlLGksbix0LG8pe3codSxlLDIxKTtsZXQgbD12MSh1LGUsdS50b2tlblBvcyx1LmxpbmVQb3MsdS5jb2xQb3MpO3JldHVybiB2KHUsZSxuLHQsbyx7dHlwZTpcIkpTWE5hbWVzcGFjZWROYW1lXCIsbmFtZXNwYWNlOmksbmFtZTpsfSl9ZnVuY3Rpb24gRGUodSxlLGksbix0LG8sbCl7RSh1LGV8MzI3NjgpO2xldHt0b2tlblBvczpjLGxpbmVQb3M6cyxjb2xQb3M6aH09dTtpZih1LnRva2VuPT09MTQpcmV0dXJuIE90KHUsZSxjLHMsaCk7bGV0IGI9bnVsbDtyZXR1cm4gdS50b2tlbj09PTEwNzQ3OTA0MTU/KG4mJmYodSwxNTEpLGI9SXQodSxlLHUuc3RhcnRQb3MsdS5zdGFydExpbmUsdS5zdGFydENvbHVtbikpOmI9USh1LGUsMSwwLDAsYyxzLGgpLGk/dyh1LGUsMTA3NDc5MDQxNSk6VjIodSxlKSx2KHUsZSx0LG8sbCx7dHlwZTpcIkpTWEV4cHJlc3Npb25Db250YWluZXJcIixleHByZXNzaW9uOmJ9KX1mdW5jdGlvbiBPdCh1LGUsaSxuLHQpe3codSxlLDE0KTtsZXQgbz1RKHUsZSwxLDAsMCx1LnRva2VuUG9zLHUubGluZVBvcyx1LmNvbFBvcyk7cmV0dXJuIHcodSxlLDEwNzQ3OTA0MTUpLHYodSxlLGksbix0LHt0eXBlOlwiSlNYU3ByZWFkQ2hpbGRcIixleHByZXNzaW9uOm99KX1mdW5jdGlvbiBJdCh1LGUsaSxuLHQpe3JldHVybiB1LnN0YXJ0UG9zPXUudG9rZW5Qb3MsdS5zdGFydExpbmU9dS5saW5lUG9zLHUuc3RhcnRDb2x1bW49dS5jb2xQb3Msdih1LGUsaSxuLHQse3R5cGU6XCJKU1hFbXB0eUV4cHJlc3Npb25cIn0pfWZ1bmN0aW9uIHYxKHUsZSxpLG4sdCl7bGV0e3Rva2VuVmFsdWU6b309dTtyZXR1cm4gRSh1LGUpLHYodSxlLGksbix0LHt0eXBlOlwiSlNYSWRlbnRpZmllclwiLG5hbWU6b30pfXZhciBSdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbH0pLE50PVwiNC4yLjFcIixWdD1OdDtmdW5jdGlvbiBqdCh1LGUpe3JldHVybiBVMSh1LGUsMCl9ZnVuY3Rpb24gX3QodSxlKXtyZXR1cm4gVTEodSxlLDMwNzIpfWZ1bmN0aW9uIE10KHUsZSl7cmV0dXJuIFUxKHUsZSwwKX1kLkVTVHJlZT1SdCxkLnBhcnNlPU10LGQucGFyc2VNb2R1bGU9X3QsZC5wYXJzZVNjcmlwdD1qdCxkLnZlcnNpb249VnR9fSk7bjIoKTt2YXIgaDM9cG4oKSxtMz0kNCgpLGIzPW8zKCksazM9ZDMoKSxyMz17bW9kdWxlOiEwLG5leHQ6ITAscmFuZ2VzOiEwLHdlYmNvbXBhdDohMCxsb2M6ITAscmF3OiEwLGRpcmVjdGl2ZXM6ITAsZ2xvYmFsUmV0dXJuOiEwLGltcGxpZWRTdHJpY3Q6ITEscHJlc2VydmVQYXJlbnM6ITEsbGV4aWNhbDohMSxpZGVudGlmaWVyUGF0dGVybjohMSxqc3g6ITAsc3BlY0RldmlhdGlvbjohMCx1bmlxdWVLZXlJblBhdHRlcm46ITF9O2Z1bmN0aW9uIEduKGQsbSl7bGV0e3BhcnNlOmt9PWczKCksZj1bXSxQPVtdLFM9ayhkLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxyMykse30se21vZHVsZTptLG9uQ29tbWVudDpmLG9uVG9rZW46UH0pKTtyZXR1cm4gUy5jb21tZW50cz1mLFMudG9rZW5zPVAsU31mdW5jdGlvbiB2MyhkKXtsZXR7bWVzc2FnZTptLGxpbmU6ayxjb2x1bW46Zn09ZCxQPShtLm1hdGNoKC9eXFxbKD88bGluZT5cXGQrKTooPzxjb2x1bW4+XFxkKyldOiAoPzxtZXNzYWdlPi4qKSQvKXx8e30pLmdyb3VwcztyZXR1cm4gUCYmKG09UC5tZXNzYWdlLHR5cGVvZiBrIT1cIm51bWJlclwiJiYoaz1OdW1iZXIoUC5saW5lKSxmPU51bWJlcihQLmNvbHVtbikpKSx0eXBlb2YgayE9XCJudW1iZXJcIj9kOmgzKG0se3N0YXJ0OntsaW5lOmssY29sdW1uOmZ9fSl9ZnVuY3Rpb24gQTMoZCxtKXtsZXQgaz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30se3Jlc3VsdDpmLGVycm9yOlB9PW0zKCgpPT5HbihkLCEwKSwoKT0+R24oZCwhMSkpO2lmKCFmKXRocm93IHYzKFApO3JldHVybiBrLm9yaWdpbmFsVGV4dD1kLGszKGYsayl9azAuZXhwb3J0cz17cGFyc2Vyczp7bWVyaXlhaDpiMyhBMyl9fX0pO3JldHVybiB5MygpO30pOyIsICIoZnVuY3Rpb24oZSl7aWYodHlwZW9mIGV4cG9ydHM9PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGU9PVwib2JqZWN0XCIpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYodHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKWRlZmluZShlKTtlbHNle3ZhciBpPXR5cGVvZiBnbG9iYWxUaGlzPFwidVwiP2dsb2JhbFRoaXM6dHlwZW9mIGdsb2JhbDxcInVcIj9nbG9iYWw6dHlwZW9mIHNlbGY8XCJ1XCI/c2VsZjp0aGlzfHx7fTtpLnByZXR0aWVyUGx1Z2lucz1pLnByZXR0aWVyUGx1Z2luc3x8e30saS5wcmV0dGllclBsdWdpbnMucG9zdGNzcz1lKCl9fSkoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgVj0oZSxuKT0+KCk9PihufHxlKChuPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxuKSxuLmV4cG9ydHMpO3ZhciBlZT1WKChwcCxVdCk9Pnt2YXIgZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09TWF0aCYmZX07VXQuZXhwb3J0cz1lcih0eXBlb2YgZ2xvYmFsVGhpcz09XCJvYmplY3RcIiYmZ2xvYmFsVGhpcyl8fGVyKHR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCImJndpbmRvdyl8fGVyKHR5cGVvZiBzZWxmPT1cIm9iamVjdFwiJiZzZWxmKXx8ZXIodHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfSk7dmFyIGtlPVYoKGhwLFd0KT0+e1d0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoe3JldHVybiEwfX19KTt2YXIgVGU9VigoZHAsJHQpPT57dmFyIGZhPWtlKCk7JHQuZXhwb3J0cz0hZmEoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT03fSl9KTt2YXIgU3I9VigodnAsVnQpPT57dmFyIHBhPWtlKCk7VnQuZXhwb3J0cz0hcGEoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiB0eXBlb2YgZSE9XCJmdW5jdGlvblwifHxlLmhhc093blByb3BlcnR5KFwicHJvdG90eXBlXCIpfSl9KTt2YXIgdHI9VigobXAsR3QpPT57dmFyIGhhPVNyKCkscnI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7R3QuZXhwb3J0cz1oYT9yci5iaW5kKHJyKTpmdW5jdGlvbigpe3JldHVybiByci5hcHBseShycixhcmd1bWVudHMpfX0pO3ZhciBRdD1WKEt0PT57XCJ1c2Ugc3RyaWN0XCI7dmFyIEh0PXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLEp0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZGE9SnQmJiFIdC5jYWxsKHsxOjJ9LDEpO0t0LmY9ZGE/ZnVuY3Rpb24obil7dmFyIGk9SnQodGhpcyxuKTtyZXR1cm4hIWkmJmkuZW51bWVyYWJsZX06SHR9KTt2YXIgT3I9VigoeXAsWXQpPT57WXQuZXhwb3J0cz1mdW5jdGlvbihlLG4pe3JldHVybntlbnVtZXJhYmxlOiEoZSYxKSxjb25maWd1cmFibGU6IShlJjIpLHdyaXRhYmxlOiEoZSY0KSx2YWx1ZTpufX19KTt2YXIgZGU9Vigod3AsZW4pPT57dmFyIFh0PVNyKCksWnQ9RnVuY3Rpb24ucHJvdG90eXBlLHZhPVp0LmJpbmQsVHI9WnQuY2FsbCxtYT1YdCYmdmEuYmluZChUcixUcik7ZW4uZXhwb3J0cz1YdD9mdW5jdGlvbihlKXtyZXR1cm4gZSYmbWEoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZmdW5jdGlvbigpe3JldHVybiBUci5hcHBseShlLGFyZ3VtZW50cyl9fX0pO3ZhciBubj1WKChfcCx0bik9Pnt2YXIgcm49ZGUoKSxnYT1ybih7fS50b1N0cmluZykseWE9cm4oXCJcIi5zbGljZSk7dG4uZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4geWEoZ2EoZSksOCwtMSl9fSk7dmFyIG9uPVYoKGJwLHNuKT0+e3ZhciB3YT1lZSgpLF9hPWRlKCksYmE9a2UoKSx4YT1ubigpLEVyPXdhLk9iamVjdCxrYT1fYShcIlwiLnNwbGl0KTtzbi5leHBvcnRzPWJhKGZ1bmN0aW9uKCl7cmV0dXJuIUVyKFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKGUpe3JldHVybiB4YShlKT09XCJTdHJpbmdcIj9rYShlLFwiXCIpOkVyKGUpfTpFcn0pO3ZhciBxcj1WKCh4cCxhbik9Pnt2YXIgU2E9ZWUoKSxPYT1TYS5UeXBlRXJyb3I7YW4uZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlPT1udWxsKXRocm93IE9hKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIrZSk7cmV0dXJuIGV9fSk7dmFyIG5yPVYoKGtwLHVuKT0+e3ZhciBUYT1vbigpLEVhPXFyKCk7dW4uZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gVGEoRWEoZSkpfX0pO3ZhciB2ZT1WKChTcCxjbik9Pntjbi5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJmdW5jdGlvblwifX0pO3ZhciBNZT1WKChPcCxsbik9Pnt2YXIgcWE9dmUoKTtsbi5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJvYmplY3RcIj9lIT09bnVsbDpxYShlKX19KTt2YXIgaXI9VigoVHAsZm4pPT57dmFyIEFyPWVlKCksQWE9dmUoKSxQYT1mdW5jdGlvbihlKXtyZXR1cm4gQWEoZSk/ZTp2b2lkIDB9O2ZuLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP1BhKEFyW2VdKTpBcltlXSYmQXJbZV1bbl19fSk7dmFyIGhuPVYoKEVwLHBuKT0+e3ZhciBSYT1kZSgpO3BuLmV4cG9ydHM9UmEoe30uaXNQcm90b3R5cGVPZil9KTt2YXIgdm49VigocXAsZG4pPT57dmFyIElhPWlyKCk7ZG4uZXhwb3J0cz1JYShcIm5hdmlnYXRvclwiLFwidXNlckFnZW50XCIpfHxcIlwifSk7dmFyIHhuPVYoKEFwLGJuKT0+e3ZhciBfbj1lZSgpLFByPXZuKCksbW49X24ucHJvY2Vzcyxnbj1fbi5EZW5vLHluPW1uJiZtbi52ZXJzaW9uc3x8Z24mJmduLnZlcnNpb24sd249eW4mJnluLnY4LGhlLHNyO3duJiYoaGU9d24uc3BsaXQoXCIuXCIpLHNyPWhlWzBdPjAmJmhlWzBdPDQ/MTorKGhlWzBdK2hlWzFdKSk7IXNyJiZQciYmKGhlPVByLm1hdGNoKC9FZGdlXFwvKFxcZCspLyksKCFoZXx8aGVbMV0+PTc0KSYmKGhlPVByLm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKSxoZSYmKHNyPStoZVsxXSkpKTtibi5leHBvcnRzPXNyfSk7dmFyIFJyPVYoKFBwLFNuKT0+e3ZhciBrbj14bigpLENhPWtlKCk7U24uZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFDYShmdW5jdGlvbigpe3ZhciBlPVN5bWJvbCgpO3JldHVybiFTdHJpbmcoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmtuJiZrbjw0MX0pfSk7dmFyIElyPVYoKFJwLE9uKT0+e3ZhciBOYT1ScigpO09uLmV4cG9ydHM9TmEmJiFTeW1ib2wuc2hhbSYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09XCJzeW1ib2xcIn0pO3ZhciBDcj1WKChJcCxUbik9Pnt2YXIgamE9ZWUoKSxNYT1pcigpLERhPXZlKCksTGE9aG4oKSx6YT1JcigpLEJhPWphLk9iamVjdDtUbi5leHBvcnRzPXphP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJzeW1ib2xcIn06ZnVuY3Rpb24oZSl7dmFyIG49TWEoXCJTeW1ib2xcIik7cmV0dXJuIERhKG4pJiZMYShuLnByb3RvdHlwZSxCYShlKSl9fSk7dmFyIHFuPVYoKENwLEVuKT0+e3ZhciBGYT1lZSgpLFVhPUZhLlN0cmluZztFbi5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gVWEoZSl9Y2F0Y2h7cmV0dXJuXCJPYmplY3RcIn19fSk7dmFyIFBuPVYoKE5wLEFuKT0+e3ZhciBXYT1lZSgpLCRhPXZlKCksVmE9cW4oKSxHYT1XYS5UeXBlRXJyb3I7QW4uZXhwb3J0cz1mdW5jdGlvbihlKXtpZigkYShlKSlyZXR1cm4gZTt0aHJvdyBHYShWYShlKStcIiBpcyBub3QgYSBmdW5jdGlvblwiKX19KTt2YXIgSW49VigoanAsUm4pPT57dmFyIEhhPVBuKCk7Um4uZXhwb3J0cz1mdW5jdGlvbihlLG4pe3ZhciBpPWVbbl07cmV0dXJuIGk9PW51bGw/dm9pZCAwOkhhKGkpfX0pO3ZhciBObj1WKChNcCxDbik9Pnt2YXIgSmE9ZWUoKSxOcj10cigpLGpyPXZlKCksTXI9TWUoKSxLYT1KYS5UeXBlRXJyb3I7Q24uZXhwb3J0cz1mdW5jdGlvbihlLG4pe3ZhciBpLGE7aWYobj09PVwic3RyaW5nXCImJmpyKGk9ZS50b1N0cmluZykmJiFNcihhPU5yKGksZSkpfHxqcihpPWUudmFsdWVPZikmJiFNcihhPU5yKGksZSkpfHxuIT09XCJzdHJpbmdcIiYmanIoaT1lLnRvU3RyaW5nKSYmIU1yKGE9TnIoaSxlKSkpcmV0dXJuIGE7dGhyb3cgS2EoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9fSk7dmFyIE1uPVYoKERwLGpuKT0+e2puLmV4cG9ydHM9ITF9KTt2YXIgb3I9VigoTHAsTG4pPT57dmFyIERuPWVlKCksUWE9T2JqZWN0LmRlZmluZVByb3BlcnR5O0xuLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXt0cnl7UWEoRG4sZSx7dmFsdWU6bixjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaHtEbltlXT1ufXJldHVybiBufX0pO3ZhciBhcj1WKCh6cCxCbik9Pnt2YXIgWWE9ZWUoKSxYYT1vcigpLHpuPVwiX19jb3JlLWpzX3NoYXJlZF9fXCIsWmE9WWFbem5dfHxYYSh6bix7fSk7Qm4uZXhwb3J0cz1aYX0pO3ZhciBEcj1WKChCcCxVbik9Pnt2YXIgZXU9TW4oKSxGbj1hcigpOyhVbi5leHBvcnRzPWZ1bmN0aW9uKGUsbil7cmV0dXJuIEZuW2VdfHwoRm5bZV09biE9PXZvaWQgMD9uOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpcIjMuMjIuMlwiLG1vZGU6ZXU/XCJwdXJlXCI6XCJnbG9iYWxcIixjb3B5cmlnaHQ6XCJcXHhBOSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlcIixsaWNlbnNlOlwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMi4yL0xJQ0VOU0VcIixzb3VyY2U6XCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qc1wifSl9KTt2YXIgJG49VigoRnAsV24pPT57dmFyIHJ1PWVlKCksdHU9cXIoKSxudT1ydS5PYmplY3Q7V24uZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnUodHUoZSkpfX0pO3ZhciBTZT1WKChVcCxWbik9Pnt2YXIgaXU9ZGUoKSxzdT0kbigpLG91PWl1KHt9Lmhhc093blByb3BlcnR5KTtWbi5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKG4saSl7cmV0dXJuIG91KHN1KG4pLGkpfX0pO3ZhciBMcj1WKChXcCxHbik9Pnt2YXIgYXU9ZGUoKSx1dT0wLGN1PU1hdGgucmFuZG9tKCksbHU9YXUoMSAudG9TdHJpbmcpO0duLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJTeW1ib2woXCIrKGU9PT12b2lkIDA/XCJcIjplKStcIilfXCIrbHUoKyt1dStjdSwzNil9fSk7dmFyIFhuPVYoKCRwLFluKT0+e3ZhciBmdT1lZSgpLHB1PURyKCksSG49U2UoKSxodT1McigpLEpuPVJyKCksUW49SXIoKSxEZT1wdShcIndrc1wiKSxFZT1mdS5TeW1ib2wsS249RWUmJkVlLmZvcixkdT1Rbj9FZTpFZSYmRWUud2l0aG91dFNldHRlcnx8aHU7WW4uZXhwb3J0cz1mdW5jdGlvbihlKXtpZighSG4oRGUsZSl8fCEoSm58fHR5cGVvZiBEZVtlXT09XCJzdHJpbmdcIikpe3ZhciBuPVwiU3ltYm9sLlwiK2U7Sm4mJkhuKEVlLGUpP0RlW2VdPUVlW2VdOlFuJiZLbj9EZVtlXT1LbihuKTpEZVtlXT1kdShuKX1yZXR1cm4gRGVbZV19fSk7dmFyIHRpPVYoKFZwLHJpKT0+e3ZhciB2dT1lZSgpLG11PXRyKCksWm49TWUoKSxlaT1DcigpLGd1PUluKCkseXU9Tm4oKSx3dT1YbigpLF91PXZ1LlR5cGVFcnJvcixidT13dShcInRvUHJpbWl0aXZlXCIpO3JpLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXtpZighWm4oZSl8fGVpKGUpKXJldHVybiBlO3ZhciBpPWd1KGUsYnUpLGE7aWYoaSl7aWYobj09PXZvaWQgMCYmKG49XCJkZWZhdWx0XCIpLGE9bXUoaSxlLG4pLCFabihhKXx8ZWkoYSkpcmV0dXJuIGE7dGhyb3cgX3UoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9cmV0dXJuIG49PT12b2lkIDAmJihuPVwibnVtYmVyXCIpLHl1KGUsbil9fSk7dmFyIHpyPVYoKEdwLG5pKT0+e3ZhciB4dT10aSgpLGt1PUNyKCk7bmkuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgbj14dShlLFwic3RyaW5nXCIpO3JldHVybiBrdShuKT9uOm4rXCJcIn19KTt2YXIgb2k9VigoSHAsc2kpPT57dmFyIFN1PWVlKCksaWk9TWUoKSxCcj1TdS5kb2N1bWVudCxPdT1paShCcikmJmlpKEJyLmNyZWF0ZUVsZW1lbnQpO3NpLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE91P0JyLmNyZWF0ZUVsZW1lbnQoZSk6e319fSk7dmFyIEZyPVYoKEpwLGFpKT0+e3ZhciBUdT1UZSgpLEV1PWtlKCkscXU9b2koKTthaS5leHBvcnRzPSFUdSYmIUV1KGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShxdShcImRpdlwiKSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYSE9N30pfSk7dmFyIFVyPVYoY2k9Pnt2YXIgQXU9VGUoKSxQdT10cigpLFJ1PVF0KCksSXU9T3IoKSxDdT1ucigpLE51PXpyKCksanU9U2UoKSxNdT1GcigpLHVpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7Y2kuZj1BdT91aTpmdW5jdGlvbihuLGkpe2lmKG49Q3UobiksaT1OdShpKSxNdSl0cnl7cmV0dXJuIHVpKG4saSl9Y2F0Y2h7fWlmKGp1KG4saSkpcmV0dXJuIEl1KCFQdShSdS5mLG4saSksbltpXSl9fSk7dmFyIGZpPVYoKFFwLGxpKT0+e3ZhciBEdT1UZSgpLEx1PWtlKCk7bGkuZXhwb3J0cz1EdSYmTHUoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7fSxcInByb3RvdHlwZVwiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZSE9NDJ9KX0pO3ZhciBXcj1WKChZcCxoaSk9Pnt2YXIgcGk9ZWUoKSx6dT1NZSgpLEJ1PXBpLlN0cmluZyxGdT1waS5UeXBlRXJyb3I7aGkuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih6dShlKSlyZXR1cm4gZTt0aHJvdyBGdShCdShlKStcIiBpcyBub3QgYW4gb2JqZWN0XCIpfX0pO3ZhciBKcj1WKHZpPT57dmFyIFV1PWVlKCksV3U9VGUoKSwkdT1GcigpLFZ1PWZpKCksdXI9V3IoKSxkaT16cigpLEd1PVV1LlR5cGVFcnJvciwkcj1PYmplY3QuZGVmaW5lUHJvcGVydHksSHU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixWcj1cImVudW1lcmFibGVcIixHcj1cImNvbmZpZ3VyYWJsZVwiLEhyPVwid3JpdGFibGVcIjt2aS5mPVd1P1Z1P2Z1bmN0aW9uKG4saSxhKXtpZih1cihuKSxpPWRpKGkpLHVyKGEpLHR5cGVvZiBuPT1cImZ1bmN0aW9uXCImJmk9PT1cInByb3RvdHlwZVwiJiZcInZhbHVlXCJpbiBhJiZIciBpbiBhJiYhYVtIcl0pe3ZhciBvPUh1KG4saSk7byYmb1tIcl0mJihuW2ldPWEudmFsdWUsYT17Y29uZmlndXJhYmxlOkdyIGluIGE/YVtHcl06b1tHcl0sZW51bWVyYWJsZTpWciBpbiBhP2FbVnJdOm9bVnJdLHdyaXRhYmxlOiExfSl9cmV0dXJuICRyKG4saSxhKX06JHI6ZnVuY3Rpb24obixpLGEpe2lmKHVyKG4pLGk9ZGkoaSksdXIoYSksJHUpdHJ5e3JldHVybiAkcihuLGksYSl9Y2F0Y2h7fWlmKFwiZ2V0XCJpbiBhfHxcInNldFwiaW4gYSl0aHJvdyBHdShcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkXCIpO3JldHVyblwidmFsdWVcImluIGEmJihuW2ldPWEudmFsdWUpLG59fSk7dmFyIGNyPVYoKFpwLG1pKT0+e3ZhciBKdT1UZSgpLEt1PUpyKCksUXU9T3IoKTttaS5leHBvcnRzPUp1P2Z1bmN0aW9uKGUsbixpKXtyZXR1cm4gS3UuZihlLG4sUXUoMSxpKSl9OmZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gZVtuXT1pLGV9fSk7dmFyIFFyPVYoKGVoLGdpKT0+e3ZhciBZdT1kZSgpLFh1PXZlKCksS3I9YXIoKSxadT1ZdShGdW5jdGlvbi50b1N0cmluZyk7WHUoS3IuaW5zcGVjdFNvdXJjZSl8fChLci5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBadShlKX0pO2dpLmV4cG9ydHM9S3IuaW5zcGVjdFNvdXJjZX0pO3ZhciBfaT1WKChyaCx3aSk9Pnt2YXIgZWM9ZWUoKSxyYz12ZSgpLHRjPVFyKCkseWk9ZWMuV2Vha01hcDt3aS5leHBvcnRzPXJjKHlpKSYmL25hdGl2ZSBjb2RlLy50ZXN0KHRjKHlpKSl9KTt2YXIga2k9VigodGgseGkpPT57dmFyIG5jPURyKCksaWM9THIoKSxiaT1uYyhcImtleXNcIik7eGkuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYmlbZV18fChiaVtlXT1pYyhlKSl9fSk7dmFyIFlyPVYoKG5oLFNpKT0+e1NpLmV4cG9ydHM9e319KTt2YXIgUGk9VigoaWgsQWkpPT57dmFyIHNjPV9pKCkscWk9ZWUoKSxYcj1kZSgpLG9jPU1lKCksYWM9Y3IoKSxacj1TZSgpLGV0PWFyKCksdWM9a2koKSxjYz1ZcigpLE9pPVwiT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWRcIix0dD1xaS5UeXBlRXJyb3IsbGM9cWkuV2Vha01hcCxscixGZSxmcixmYz1mdW5jdGlvbihlKXtyZXR1cm4gZnIoZSk/RmUoZSk6bHIoZSx7fSl9LHBjPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgaTtpZighb2Mobil8fChpPUZlKG4pKS50eXBlIT09ZSl0aHJvdyB0dChcIkluY29tcGF0aWJsZSByZWNlaXZlciwgXCIrZStcIiByZXF1aXJlZFwiKTtyZXR1cm4gaX19O3NjfHxldC5zdGF0ZT8oT2U9ZXQuc3RhdGV8fChldC5zdGF0ZT1uZXcgbGMpLFRpPVhyKE9lLmdldCkscnQ9WHIoT2UuaGFzKSxFaT1YcihPZS5zZXQpLGxyPWZ1bmN0aW9uKGUsbil7aWYocnQoT2UsZSkpdGhyb3cgbmV3IHR0KE9pKTtyZXR1cm4gbi5mYWNhZGU9ZSxFaShPZSxlLG4pLG59LEZlPWZ1bmN0aW9uKGUpe3JldHVybiBUaShPZSxlKXx8e319LGZyPWZ1bmN0aW9uKGUpe3JldHVybiBydChPZSxlKX0pOihxZT11YyhcInN0YXRlXCIpLGNjW3FlXT0hMCxscj1mdW5jdGlvbihlLG4pe2lmKFpyKGUscWUpKXRocm93IG5ldyB0dChPaSk7cmV0dXJuIG4uZmFjYWRlPWUsYWMoZSxxZSxuKSxufSxGZT1mdW5jdGlvbihlKXtyZXR1cm4gWnIoZSxxZSk/ZVtxZV06e319LGZyPWZ1bmN0aW9uKGUpe3JldHVybiBacihlLHFlKX0pO3ZhciBPZSxUaSxydCxFaSxxZTtBaS5leHBvcnRzPXtzZXQ6bHIsZ2V0OkZlLGhhczpmcixlbmZvcmNlOmZjLGdldHRlckZvcjpwY319KTt2YXIgQ2k9Vigoc2gsSWkpPT57dmFyIG50PVRlKCksaGM9U2UoKSxSaT1GdW5jdGlvbi5wcm90b3R5cGUsZGM9bnQmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaXQ9aGMoUmksXCJuYW1lXCIpLHZjPWl0JiZmdW5jdGlvbigpe30ubmFtZT09PVwic29tZXRoaW5nXCIsbWM9aXQmJighbnR8fG50JiZkYyhSaSxcIm5hbWVcIikuY29uZmlndXJhYmxlKTtJaS5leHBvcnRzPXtFWElTVFM6aXQsUFJPUEVSOnZjLENPTkZJR1VSQUJMRTptY319KTt2YXIgTGk9Vigob2gsRGkpPT57dmFyIGdjPWVlKCksTmk9dmUoKSx5Yz1TZSgpLGppPWNyKCksd2M9b3IoKSxfYz1RcigpLE1pPVBpKCksYmM9Q2koKS5DT05GSUdVUkFCTEUseGM9TWkuZ2V0LGtjPU1pLmVuZm9yY2UsU2M9U3RyaW5nKFN0cmluZykuc3BsaXQoXCJTdHJpbmdcIik7KERpLmV4cG9ydHM9ZnVuY3Rpb24oZSxuLGksYSl7dmFyIG89YT8hIWEudW5zYWZlOiExLGY9YT8hIWEuZW51bWVyYWJsZTohMSxwPWE/ISFhLm5vVGFyZ2V0R2V0OiExLGg9YSYmYS5uYW1lIT09dm9pZCAwP2EubmFtZTpuLGc7aWYoTmkoaSkmJihTdHJpbmcoaCkuc2xpY2UoMCw3KT09PVwiU3ltYm9sKFwiJiYoaD1cIltcIitTdHJpbmcoaCkucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLFwiJDFcIikrXCJdXCIpLCgheWMoaSxcIm5hbWVcIil8fGJjJiZpLm5hbWUhPT1oKSYmamkoaSxcIm5hbWVcIixoKSxnPWtjKGkpLGcuc291cmNlfHwoZy5zb3VyY2U9U2Muam9pbih0eXBlb2YgaD09XCJzdHJpbmdcIj9oOlwiXCIpKSksZT09PWdjKXtmP2Vbbl09aTp3YyhuLGkpO3JldHVybn1lbHNlIG8/IXAmJmVbbl0mJihmPSEwKTpkZWxldGUgZVtuXTtmP2Vbbl09aTpqaShlLG4saSl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIE5pKHRoaXMpJiZ4Yyh0aGlzKS5zb3VyY2V8fF9jKHRoaXMpfSl9KTt2YXIgc3Q9VigoYWgsemkpPT57dmFyIE9jPU1hdGguY2VpbCxUYz1NYXRoLmZsb29yO3ppLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIG49K2U7cmV0dXJuIG4hPT1ufHxuPT09MD8wOihuPjA/VGM6T2MpKG4pfX0pO3ZhciBGaT1WKCh1aCxCaSk9Pnt2YXIgRWM9c3QoKSxxYz1NYXRoLm1heCxBYz1NYXRoLm1pbjtCaS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7dmFyIGk9RWMoZSk7cmV0dXJuIGk8MD9xYyhpK24sMCk6QWMoaSxuKX19KTt2YXIgV2k9VigoY2gsVWkpPT57dmFyIFBjPXN0KCksUmM9TWF0aC5taW47VWkuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP1JjKFBjKGUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSk7dmFyIFZpPVYoKGxoLCRpKT0+e3ZhciBJYz1XaSgpOyRpLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIEljKGUubGVuZ3RoKX19KTt2YXIgSmk9VigoZmgsSGkpPT57dmFyIENjPW5yKCksTmM9RmkoKSxqYz1WaSgpLEdpPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLGksYSl7dmFyIG89Q2MobiksZj1qYyhvKSxwPU5jKGEsZiksaDtpZihlJiZpIT1pKXtmb3IoO2Y+cDspaWYoaD1vW3ArK10saCE9aClyZXR1cm4hMH1lbHNlIGZvcig7Zj5wO3ArKylpZigoZXx8cCBpbiBvKSYmb1twXT09PWkpcmV0dXJuIGV8fHB8fDA7cmV0dXJuIWUmJi0xfX07SGkuZXhwb3J0cz17aW5jbHVkZXM6R2koITApLGluZGV4T2Y6R2koITEpfX0pO3ZhciBZaT1WKChwaCxRaSk9Pnt2YXIgTWM9ZGUoKSxvdD1TZSgpLERjPW5yKCksTGM9SmkoKS5pbmRleE9mLHpjPVlyKCksS2k9TWMoW10ucHVzaCk7UWkuZXhwb3J0cz1mdW5jdGlvbihlLG4pe3ZhciBpPURjKGUpLGE9MCxvPVtdLGY7Zm9yKGYgaW4gaSkhb3QoemMsZikmJm90KGksZikmJktpKG8sZik7Zm9yKDtuLmxlbmd0aD5hOylvdChpLGY9blthKytdKSYmKH5MYyhvLGYpfHxLaShvLGYpKTtyZXR1cm4gb319KTt2YXIgWmk9VigoaGgsWGkpPT57WGkuZXhwb3J0cz1bXCJjb25zdHJ1Y3RvclwiLFwiaGFzT3duUHJvcGVydHlcIixcImlzUHJvdG90eXBlT2ZcIixcInByb3BlcnR5SXNFbnVtZXJhYmxlXCIsXCJ0b0xvY2FsZVN0cmluZ1wiLFwidG9TdHJpbmdcIixcInZhbHVlT2ZcIl19KTt2YXIgcnM9Vihlcz0+e3ZhciBCYz1ZaSgpLEZjPVppKCksVWM9RmMuY29uY2F0KFwibGVuZ3RoXCIsXCJwcm90b3R5cGVcIik7ZXMuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24obil7cmV0dXJuIEJjKG4sVWMpfX0pO3ZhciBucz1WKHRzPT57dHMuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSk7dmFyIHNzPVYoKG1oLGlzKT0+e3ZhciBXYz1pcigpLCRjPWRlKCksVmM9cnMoKSxHYz1ucygpLEhjPVdyKCksSmM9JGMoW10uY29uY2F0KTtpcy5leHBvcnRzPVdjKFwiUmVmbGVjdFwiLFwib3duS2V5c1wiKXx8ZnVuY3Rpb24obil7dmFyIGk9VmMuZihIYyhuKSksYT1HYy5mO3JldHVybiBhP0pjKGksYShuKSk6aX19KTt2YXIgdXM9VigoZ2gsYXMpPT57dmFyIG9zPVNlKCksS2M9c3MoKSxRYz1VcigpLFljPUpyKCk7YXMuZXhwb3J0cz1mdW5jdGlvbihlLG4saSl7Zm9yKHZhciBhPUtjKG4pLG89WWMuZixmPVFjLmYscD0wO3A8YS5sZW5ndGg7cCsrKXt2YXIgaD1hW3BdOyFvcyhlLGgpJiYhKGkmJm9zKGksaCkpJiZvKGUsaCxmKG4saCkpfX19KTt2YXIgbHM9VigoeWgsY3MpPT57dmFyIFhjPWtlKCksWmM9dmUoKSxlbD0vI3xcXC5wcm90b3R5cGVcXC4vLFVlPWZ1bmN0aW9uKGUsbil7dmFyIGk9dGxbcmwoZSldO3JldHVybiBpPT1pbD8hMDppPT1ubD8hMTpaYyhuKT9YYyhuKTohIW59LHJsPVVlLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoZWwsXCIuXCIpLnRvTG93ZXJDYXNlKCl9LHRsPVVlLmRhdGE9e30sbmw9VWUuTkFUSVZFPVwiTlwiLGlsPVVlLlBPTFlGSUxMPVwiUFwiO2NzLmV4cG9ydHM9VWV9KTt2YXIgcHM9Vigod2gsZnMpPT57dmFyIGF0PWVlKCksc2w9VXIoKS5mLG9sPWNyKCksYWw9TGkoKSx1bD1vcigpLGNsPXVzKCksbGw9bHMoKTtmcy5leHBvcnRzPWZ1bmN0aW9uKGUsbil7dmFyIGk9ZS50YXJnZXQsYT1lLmdsb2JhbCxvPWUuc3RhdCxmLHAsaCxnLGMsdDtpZihhP3A9YXQ6bz9wPWF0W2ldfHx1bChpLHt9KTpwPShhdFtpXXx8e30pLnByb3RvdHlwZSxwKWZvcihoIGluIG4pe2lmKGM9bltoXSxlLm5vVGFyZ2V0R2V0Pyh0PXNsKHAsaCksZz10JiZ0LnZhbHVlKTpnPXBbaF0sZj1sbChhP2g6aSsobz9cIi5cIjpcIiNcIikraCxlLmZvcmNlZCksIWYmJmchPT12b2lkIDApe2lmKHR5cGVvZiBjPT10eXBlb2YgZyljb250aW51ZTtjbChjLGcpfShlLnNoYW18fGcmJmcuc2hhbSkmJm9sKGMsXCJzaGFtXCIsITApLGFsKHAsaCxjLGUpfX19KTt2YXIgaHM9VigoKT0+e3ZhciBmbD1wcygpLHBsPWVlKCk7Zmwoe2dsb2JhbDohMH0se2dsb2JhbFRoaXM6cGx9KX0pO3ZhciBkcz1WKCgpPT57aHMoKX0pO3ZhciBscD1WKChQaCxsYSk9PntkcygpO3ZhciBrdD1PYmplY3QuZGVmaW5lUHJvcGVydHksaGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixTdD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxkbD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LExlPShlLG4pPT5mdW5jdGlvbigpe3JldHVybiBlJiYobj0oMCxlW1N0KGUpWzBdXSkoZT0wKSksbn0sUj0oZSxuKT0+ZnVuY3Rpb24oKXtyZXR1cm4gbnx8KDAsZVtTdChlKVswXV0pKChuPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxuKSxuLmV4cG9ydHN9LE90PShlLG4pPT57Zm9yKHZhciBpIGluIG4pa3QoZSxpLHtnZXQ6bltpXSxlbnVtZXJhYmxlOiEwfSl9LHZsPShlLG4saSxhKT0+e2lmKG4mJnR5cGVvZiBuPT1cIm9iamVjdFwifHx0eXBlb2Ygbj09XCJmdW5jdGlvblwiKWZvcihsZXQgbyBvZiBTdChuKSkhZGwuY2FsbChlLG8pJiZvIT09aSYma3QoZSxvLHtnZXQ6KCk9Pm5bb10sZW51bWVyYWJsZTohKGE9aGwobixvKSl8fGEuZW51bWVyYWJsZX0pO3JldHVybiBlfSxUdD1lPT52bChrdCh7fSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlKSxBPUxlKHtcIjxkZWZpbmU6cHJvY2Vzcz5cIigpe319KSxtbD1SKHtcInNyYy9jb21tb24vcGFyc2VyLWNyZWF0ZS1lcnJvci5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO2Z1bmN0aW9uIGkoYSxvKXtsZXQgZj1uZXcgU3ludGF4RXJyb3IoYStcIiAoXCIrby5zdGFydC5saW5lK1wiOlwiK28uc3RhcnQuY29sdW1uK1wiKVwiKTtyZXR1cm4gZi5sb2M9byxmfW4uZXhwb3J0cz1pfX0pLENzPVIoe1wic3JjL3V0aWxzL2dldC1sYXN0LmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7dmFyIGk9YT0+YVthLmxlbmd0aC0xXTtuLmV4cG9ydHM9aX19KSxOcz1SKHtcInNyYy91dGlscy9mcm9udC1tYXR0ZXIvcGFyc2UuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1uZXcgUmVnRXhwKFwiXig/PHN0YXJ0RGVsaW1pdGVyPi17M318XFxcXCt7M30pKD88bGFuZ3VhZ2U+W15cXFxcbl0qKVxcXFxuKD86fCg/PHZhbHVlPi4qPylcXFxcbikoPzxlbmREZWxpbWl0ZXI+XFxcXGs8c3RhcnREZWxpbWl0ZXI+fFxcXFwuezN9KVteXFxcXFNcXFxcbl0qKD86XFxcXG58JClcIixcInNcIik7ZnVuY3Rpb24gYShvKXtsZXQgZj1vLm1hdGNoKGkpO2lmKCFmKXJldHVybntjb250ZW50Om99O2xldHtzdGFydERlbGltaXRlcjpwLGxhbmd1YWdlOmgsdmFsdWU6Zz1cIlwiLGVuZERlbGltaXRlcjpjfT1mLmdyb3Vwcyx0PWgudHJpbSgpfHxcInlhbWxcIjtpZihwPT09XCIrKytcIiYmKHQ9XCJ0b21sXCIpLHQhPT1cInlhbWxcIiYmcCE9PWMpcmV0dXJue2NvbnRlbnQ6b307bGV0W3JdPWY7cmV0dXJue2Zyb250TWF0dGVyOnt0eXBlOlwiZnJvbnQtbWF0dGVyXCIsbGFuZzp0LHZhbHVlOmcsc3RhcnREZWxpbWl0ZXI6cCxlbmREZWxpbWl0ZXI6YyxyYXc6ci5yZXBsYWNlKC9cXG4kLyxcIlwiKX0sY29udGVudDpyLnJlcGxhY2UoL1teXFxuXS9nLFwiIFwiKStvLnNsaWNlKHIubGVuZ3RoKX19bi5leHBvcnRzPWF9fSksanM9e307T3QoanMse0VPTDooKT0+Z3QsYXJjaDooKT0+Z2wsY3B1czooKT0+VXMsZGVmYXVsdDooKT0+SHMsZW5kaWFubmVzczooKT0+TXMsZnJlZW1lbTooKT0+QnMsZ2V0TmV0d29ya0ludGVyZmFjZXM6KCk9PkdzLGhvc3RuYW1lOigpPT5Ecyxsb2FkYXZnOigpPT5McyxuZXR3b3JrSW50ZXJmYWNlczooKT0+VnMscGxhdGZvcm06KCk9PnlsLHJlbGVhc2U6KCk9PiRzLHRtcERpcjooKT0+dnQsdG1wZGlyOigpPT5tdCx0b3RhbG1lbTooKT0+RnMsdHlwZTooKT0+V3MsdXB0aW1lOigpPT56c30pO2Z1bmN0aW9uIE1zKCl7aWYodHlwZW9mIHByPlwidVwiKXt2YXIgZT1uZXcgQXJyYXlCdWZmZXIoMiksbj1uZXcgVWludDhBcnJheShlKSxpPW5ldyBVaW50MTZBcnJheShlKTtpZihuWzBdPTEsblsxXT0yLGlbMF09PT0yNTgpcHI9XCJCRVwiO2Vsc2UgaWYoaVswXT09PTUxMylwcj1cIkxFXCI7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZmlndXJlIG91dCBlbmRpYW5lc3NcIil9cmV0dXJuIHByfWZ1bmN0aW9uIERzKCl7cmV0dXJuIHR5cGVvZiBnbG9iYWxUaGlzLmxvY2F0aW9uPFwidVwiP2dsb2JhbFRoaXMubG9jYXRpb24uaG9zdG5hbWU6XCJcIn1mdW5jdGlvbiBMcygpe3JldHVybltdfWZ1bmN0aW9uIHpzKCl7cmV0dXJuIDB9ZnVuY3Rpb24gQnMoKXtyZXR1cm4gTnVtYmVyLk1BWF9WQUxVRX1mdW5jdGlvbiBGcygpe3JldHVybiBOdW1iZXIuTUFYX1ZBTFVFfWZ1bmN0aW9uIFVzKCl7cmV0dXJuW119ZnVuY3Rpb24gV3MoKXtyZXR1cm5cIkJyb3dzZXJcIn1mdW5jdGlvbiAkcygpe3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpcy5uYXZpZ2F0b3I8XCJ1XCI/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IuYXBwVmVyc2lvbjpcIlwifWZ1bmN0aW9uIFZzKCl7fWZ1bmN0aW9uIEdzKCl7fWZ1bmN0aW9uIGdsKCl7cmV0dXJuXCJqYXZhc2NyaXB0XCJ9ZnVuY3Rpb24geWwoKXtyZXR1cm5cImJyb3dzZXJcIn1mdW5jdGlvbiB2dCgpe3JldHVyblwiL3RtcFwifXZhciBwcixtdCxndCxIcyx3bD1MZSh7XCJub2RlLW1vZHVsZXMtcG9seWZpbGxzOm9zXCIoKXtBKCksbXQ9dnQsZ3Q9YFxuYCxIcz17RU9MOmd0LHRtcGRpcjptdCx0bXBEaXI6dnQsbmV0d29ya0ludGVyZmFjZXM6VnMsZ2V0TmV0d29ya0ludGVyZmFjZXM6R3MscmVsZWFzZTokcyx0eXBlOldzLGNwdXM6VXMsdG90YWxtZW06RnMsZnJlZW1lbTpCcyx1cHRpbWU6enMsbG9hZGF2ZzpMcyxob3N0bmFtZTpEcyxlbmRpYW5uZXNzOk1zfX19KSxfbD1SKHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHMtY29tbW9uanM6b3NcIihlLG4pe0EoKTt2YXIgaT0od2woKSxUdChqcykpO2lmKGkmJmkuZGVmYXVsdCl7bi5leHBvcnRzPWkuZGVmYXVsdDtmb3IobGV0IGEgaW4gaSluLmV4cG9ydHNbYV09aVthXX1lbHNlIGkmJihuLmV4cG9ydHM9aSl9fSksYmw9Uih7XCJub2RlX21vZHVsZXMvZGV0ZWN0LW5ld2xpbmUvaW5kZXguanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1hPT57aWYodHlwZW9mIGEhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO2xldCBvPWEubWF0Y2goLyg/Olxccj9cXG4pL2cpfHxbXTtpZihvLmxlbmd0aD09PTApcmV0dXJuO2xldCBmPW8uZmlsdGVyKGg9Pmg9PT1gXFxyXG5gKS5sZW5ndGgscD1vLmxlbmd0aC1mO3JldHVybiBmPnA/YFxcclxuYDpgXG5gfTtuLmV4cG9ydHM9aSxuLmV4cG9ydHMuZ3JhY2VmdWw9YT0+dHlwZW9mIGE9PVwic3RyaW5nXCImJmkoYSl8fGBcbmB9fSkseGw9Uih7XCJub2RlX21vZHVsZXMvamVzdC1kb2NibG9jay9idWlsZC9pbmRleC5qc1wiKGUpe1widXNlIHN0cmljdFwiO0EoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLmV4dHJhY3Q9cyxlLnBhcnNlPW0sZS5wYXJzZVdpdGhDb21tZW50cz12LGUucHJpbnQ9eSxlLnN0cmlwPWw7ZnVuY3Rpb24gbigpe2xldCBkPV9sKCk7cmV0dXJuIG49ZnVuY3Rpb24oKXtyZXR1cm4gZH0sZH1mdW5jdGlvbiBpKCl7bGV0IGQ9YShibCgpKTtyZXR1cm4gaT1mdW5jdGlvbigpe3JldHVybiBkfSxkfWZ1bmN0aW9uIGEoZCl7cmV0dXJuIGQmJmQuX19lc01vZHVsZT9kOntkZWZhdWx0OmR9fXZhciBvPS9cXCpcXC8kLyxmPS9eXFwvXFwqXFwqLyxwPS9eXFxzKihcXC9cXCpcXCo/KC58XFxyP1xcbikqP1xcKlxcLykvLGg9LyhefFxccyspXFwvXFwvKFteXFxyXFxuXSopL2csZz0vXihcXHI/XFxuKSsvLGM9Lyg/Ol58XFxyP1xcbikgKihAW15cXHJcXG5dKj8pICpcXHI/XFxuICooPyFbXkBcXHJcXG5dKlxcL1xcL1teXSopKFteQFxcclxcblxcc11bXkBcXHJcXG5dKz8pICpcXHI/XFxuL2csdD0vKD86XnxcXHI/XFxuKSAqQChcXFMrKSAqKFteXFxyXFxuXSopL2cscj0vKFxccj9cXG58XikgKlxcKiA/L2csdT1bXTtmdW5jdGlvbiBzKGQpe2xldCBfPWQubWF0Y2gocCk7cmV0dXJuIF8/X1swXS50cmltTGVmdCgpOlwiXCJ9ZnVuY3Rpb24gbChkKXtsZXQgXz1kLm1hdGNoKHApO3JldHVybiBfJiZfWzBdP2Quc3Vic3RyaW5nKF9bMF0ubGVuZ3RoKTpkfWZ1bmN0aW9uIG0oZCl7cmV0dXJuIHYoZCkucHJhZ21hc31mdW5jdGlvbiB2KGQpe2xldCBfPSgwLGkoKS5kZWZhdWx0KShkKXx8bigpLkVPTDtkPWQucmVwbGFjZShmLFwiXCIpLnJlcGxhY2UobyxcIlwiKS5yZXBsYWNlKHIsXCIkMVwiKTtsZXQgUz1cIlwiO2Zvcig7UyE9PWQ7KVM9ZCxkPWQucmVwbGFjZShjLFwiXCIuY29uY2F0KF8sXCIkMSAkMlwiKS5jb25jYXQoXykpO2Q9ZC5yZXBsYWNlKGcsXCJcIikudHJpbVJpZ2h0KCk7bGV0IHg9T2JqZWN0LmNyZWF0ZShudWxsKSxOPWQucmVwbGFjZSh0LFwiXCIpLnJlcGxhY2UoZyxcIlwiKS50cmltUmlnaHQoKSxQO2Zvcig7UD10LmV4ZWMoZCk7KXtsZXQgVz1QWzJdLnJlcGxhY2UoaCxcIlwiKTt0eXBlb2YgeFtQWzFdXT09XCJzdHJpbmdcInx8QXJyYXkuaXNBcnJheSh4W1BbMV1dKT94W1BbMV1dPXUuY29uY2F0KHhbUFsxXV0sVyk6eFtQWzFdXT1XfXJldHVybntjb21tZW50czpOLHByYWdtYXM6eH19ZnVuY3Rpb24geShkKXtsZXR7Y29tbWVudHM6Xz1cIlwiLHByYWdtYXM6Uz17fX09ZCx4PSgwLGkoKS5kZWZhdWx0KShfKXx8bigpLkVPTCxOPVwiLyoqXCIsUD1cIiAqXCIsVz1cIiAqL1wiLFU9T2JqZWN0LmtleXMoUyksSD1VLm1hcCgkPT53KCQsU1skXSkpLnJlZHVjZSgoJCxCKT0+JC5jb25jYXQoQiksW10pLm1hcCgkPT5QK1wiIFwiKyQreCkuam9pbihcIlwiKTtpZighXyl7aWYoVS5sZW5ndGg9PT0wKXJldHVyblwiXCI7aWYoVS5sZW5ndGg9PT0xJiYhQXJyYXkuaXNBcnJheShTW1VbMF1dKSl7bGV0ICQ9U1tVWzBdXTtyZXR1cm5cIlwiLmNvbmNhdChOLFwiIFwiKS5jb25jYXQodyhVWzBdLCQpWzBdKS5jb25jYXQoVyl9fWxldCBEPV8uc3BsaXQoeCkubWFwKCQ9PlwiXCIuY29uY2F0KFAsXCIgXCIpLmNvbmNhdCgkKSkuam9pbih4KSt4O3JldHVybiBOK3grKF8/RDpcIlwiKSsoXyYmVS5sZW5ndGg/UCt4OlwiXCIpK0grV31mdW5jdGlvbiB3KGQsXyl7cmV0dXJuIHUuY29uY2F0KF8pLm1hcChTPT5cIkBcIi5jb25jYXQoZCxcIiBcIikuY29uY2F0KFMpLnRyaW0oKSl9fX0pLGtsPVIoe1wic3JjL2NvbW1vbi9lbmQtb2YtbGluZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO2Z1bmN0aW9uIGkocCl7bGV0IGg9cC5pbmRleE9mKFwiXFxyXCIpO3JldHVybiBoPj0wP3AuY2hhckF0KGgrMSk9PT1gXG5gP1wiY3JsZlwiOlwiY3JcIjpcImxmXCJ9ZnVuY3Rpb24gYShwKXtzd2l0Y2gocCl7Y2FzZVwiY3JcIjpyZXR1cm5cIlxcclwiO2Nhc2VcImNybGZcIjpyZXR1cm5gXFxyXG5gO2RlZmF1bHQ6cmV0dXJuYFxuYH19ZnVuY3Rpb24gbyhwLGgpe2xldCBnO3N3aXRjaChoKXtjYXNlYFxuYDpnPS9cXG4vZzticmVhaztjYXNlXCJcXHJcIjpnPS9cXHIvZzticmVhaztjYXNlYFxcclxuYDpnPS9cXHJcXG4vZzticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBcImVvbFwiICcuY29uY2F0KEpTT04uc3RyaW5naWZ5KGgpLFwiLlwiKSl9bGV0IGM9cC5tYXRjaChnKTtyZXR1cm4gYz9jLmxlbmd0aDowfWZ1bmN0aW9uIGYocCl7cmV0dXJuIHAucmVwbGFjZSgvXFxyXFxuPy9nLGBcbmApfW4uZXhwb3J0cz17Z3Vlc3NFbmRPZkxpbmU6aSxjb252ZXJ0RW5kT2ZMaW5lVG9DaGFyczphLGNvdW50RW5kT2ZMaW5lQ2hhcnM6byxub3JtYWxpemVFbmRPZkxpbmU6Zn19fSksU2w9Uih7XCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvZ2V0LXNoZWJhbmcuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTtmdW5jdGlvbiBpKGEpe2lmKCFhLnN0YXJ0c1dpdGgoXCIjIVwiKSlyZXR1cm5cIlwiO2xldCBvPWEuaW5kZXhPZihgXG5gKTtyZXR1cm4gbz09PS0xP2E6YS5zbGljZSgwLG8pfW4uZXhwb3J0cz1pfX0pLE9sPVIoe1wic3JjL2xhbmd1YWdlLWpzL3ByYWdtYS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhcntwYXJzZVdpdGhDb21tZW50czppLHN0cmlwOmEsZXh0cmFjdDpvLHByaW50OmZ9PXhsKCkse25vcm1hbGl6ZUVuZE9mTGluZTpwfT1rbCgpLGg9U2woKTtmdW5jdGlvbiBnKHIpe2xldCB1PWgocik7dSYmKHI9ci5zbGljZSh1Lmxlbmd0aCsxKSk7bGV0IHM9byhyKSx7cHJhZ21hczpsLGNvbW1lbnRzOm19PWkocyk7cmV0dXJue3NoZWJhbmc6dSx0ZXh0OnIscHJhZ21hczpsLGNvbW1lbnRzOm19fWZ1bmN0aW9uIGMocil7bGV0IHU9T2JqZWN0LmtleXMoZyhyKS5wcmFnbWFzKTtyZXR1cm4gdS5pbmNsdWRlcyhcInByZXR0aWVyXCIpfHx1LmluY2x1ZGVzKFwiZm9ybWF0XCIpfWZ1bmN0aW9uIHQocil7bGV0e3NoZWJhbmc6dSx0ZXh0OnMscHJhZ21hczpsLGNvbW1lbnRzOm19PWcociksdj1hKHMpLHk9Zih7cHJhZ21hczpPYmplY3QuYXNzaWduKHtmb3JtYXQ6XCJcIn0sbCksY29tbWVudHM6bS50cmltU3RhcnQoKX0pO3JldHVybih1P1wiXCIuY29uY2F0KHUsYFxuYCk6XCJcIikrcCh5KSsodi5zdGFydHNXaXRoKGBcbmApP2BcbmA6YFxuXG5gKSt2fW4uZXhwb3J0cz17aGFzUHJhZ21hOmMsaW5zZXJ0UHJhZ21hOnR9fX0pLFRsPVIoe1wic3JjL2xhbmd1YWdlLWNzcy9wcmFnbWEuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1PbCgpLGE9TnMoKTtmdW5jdGlvbiBvKHApe3JldHVybiBpLmhhc1ByYWdtYShhKHApLmNvbnRlbnQpfWZ1bmN0aW9uIGYocCl7bGV0e2Zyb250TWF0dGVyOmgsY29udGVudDpnfT1hKHApO3JldHVybihoP2gucmF3K2BcblxuYDpcIlwiKStpLmluc2VydFByYWdtYShnKX1uLmV4cG9ydHM9e2hhc1ByYWdtYTpvLGluc2VydFByYWdtYTpmfX19KSxFbD1SKHtcInNyYy91dGlscy90ZXh0L3NraXAuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTtmdW5jdGlvbiBpKGgpe3JldHVybihnLGMsdCk9PntsZXQgcj10JiZ0LmJhY2t3YXJkcztpZihjPT09ITEpcmV0dXJuITE7bGV0e2xlbmd0aDp1fT1nLHM9Yztmb3IoO3M+PTAmJnM8dTspe2xldCBsPWcuY2hhckF0KHMpO2lmKGggaW5zdGFuY2VvZiBSZWdFeHApe2lmKCFoLnRlc3QobCkpcmV0dXJuIHN9ZWxzZSBpZighaC5pbmNsdWRlcyhsKSlyZXR1cm4gcztyP3MtLTpzKyt9cmV0dXJuIHM9PT0tMXx8cz09PXU/czohMX19dmFyIGE9aSgvXFxzLyksbz1pKFwiIFx0XCIpLGY9aShcIiw7IFx0XCIpLHA9aSgvW15cXG5cXHJdLyk7bi5leHBvcnRzPXtza2lwV2hpdGVzcGFjZTphLHNraXBTcGFjZXM6byxza2lwVG9MaW5lRW5kOmYsc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lOnB9fX0pLHFsPVIoe1wic3JjL3V0aWxzL2xpbmUtY29sdW1uLXRvLWluZGV4LmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksbi5leHBvcnRzPWZ1bmN0aW9uKGksYSl7bGV0IG89MDtmb3IobGV0IGY9MDtmPGkubGluZS0xOysrZilvPWEuaW5kZXhPZihgXG5gLG8pKzE7cmV0dXJuIG8raS5jb2x1bW59fX0pLEpzPVIoe1wic3JjL2xhbmd1YWdlLWNzcy9sb2MuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXJ7c2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lOml9PUVsKCksYT1DcygpLG89cWwoKTtmdW5jdGlvbiBmKHMsbCl7cmV0dXJuIHR5cGVvZiBzLnNvdXJjZUluZGV4PT1cIm51bWJlclwiP3Muc291cmNlSW5kZXg6cy5zb3VyY2U/byhzLnNvdXJjZS5zdGFydCxsKS0xOm51bGx9ZnVuY3Rpb24gcChzLGwpe2lmKHMudHlwZT09PVwiY3NzLWNvbW1lbnRcIiYmcy5pbmxpbmUpcmV0dXJuIGkobCxzLnNvdXJjZS5zdGFydE9mZnNldCk7bGV0IG09cy5ub2RlcyYmYShzLm5vZGVzKTtyZXR1cm4gbSYmcy5zb3VyY2UmJiFzLnNvdXJjZS5lbmQmJihzPW0pLHMuc291cmNlJiZzLnNvdXJjZS5lbmQ/byhzLnNvdXJjZS5lbmQsbCk6bnVsbH1mdW5jdGlvbiBoKHMsbCl7cy5zb3VyY2UmJihzLnNvdXJjZS5zdGFydE9mZnNldD1mKHMsbCkscy5zb3VyY2UuZW5kT2Zmc2V0PXAocyxsKSk7Zm9yKGxldCBtIGluIHMpe2xldCB2PXNbbV07bT09PVwic291cmNlXCJ8fCF2fHx0eXBlb2YgdiE9XCJvYmplY3RcInx8KHYudHlwZT09PVwidmFsdWUtcm9vdFwifHx2LnR5cGU9PT1cInZhbHVlLXVua25vd25cIj9nKHYsYyhzKSx2LnRleHR8fHYudmFsdWUpOmgodixsKSl9fWZ1bmN0aW9uIGcocyxsLG0pe3Muc291cmNlJiYocy5zb3VyY2Uuc3RhcnRPZmZzZXQ9ZihzLG0pK2wscy5zb3VyY2UuZW5kT2Zmc2V0PXAocyxtKStsKTtmb3IobGV0IHYgaW4gcyl7bGV0IHk9c1t2XTt2PT09XCJzb3VyY2VcInx8IXl8fHR5cGVvZiB5IT1cIm9iamVjdFwifHxnKHksbCxtKX19ZnVuY3Rpb24gYyhzKXtsZXQgbD1zLnNvdXJjZS5zdGFydE9mZnNldDtyZXR1cm4gdHlwZW9mIHMucHJvcD09XCJzdHJpbmdcIiYmKGwrPXMucHJvcC5sZW5ndGgpLHMudHlwZT09PVwiY3NzLWF0cnVsZVwiJiZ0eXBlb2Ygcy5uYW1lPT1cInN0cmluZ1wiJiYobCs9MStzLm5hbWUubGVuZ3RoK3MucmF3cy5hZnRlck5hbWUubWF0Y2goL15cXHMqOj9cXHMqLylbMF0ubGVuZ3RoKSxzLnR5cGUhPT1cImNzcy1hdHJ1bGVcIiYmcy5yYXdzJiZ0eXBlb2Ygcy5yYXdzLmJldHdlZW49PVwic3RyaW5nXCImJihsKz1zLnJhd3MuYmV0d2Vlbi5sZW5ndGgpLGx9ZnVuY3Rpb24gdChzKXtsZXQgbD1cImluaXRpYWxcIixtPVwiaW5pdGlhbFwiLHYseT0hMSx3PVtdO2ZvcihsZXQgZD0wO2Q8cy5sZW5ndGg7ZCsrKXtsZXQgXz1zW2RdO3N3aXRjaChsKXtjYXNlXCJpbml0aWFsXCI6aWYoXz09PVwiJ1wiKXtsPVwic2luZ2xlLXF1b3Rlc1wiO2NvbnRpbnVlfWlmKF89PT0nXCInKXtsPVwiZG91YmxlLXF1b3Rlc1wiO2NvbnRpbnVlfWlmKChfPT09XCJ1XCJ8fF89PT1cIlVcIikmJnMuc2xpY2UoZCxkKzQpLnRvTG93ZXJDYXNlKCk9PT1cInVybChcIil7bD1cInVybFwiLGQrPTM7Y29udGludWV9aWYoXz09PVwiKlwiJiZzW2QtMV09PT1cIi9cIil7bD1cImNvbW1lbnQtYmxvY2tcIjtjb250aW51ZX1pZihfPT09XCIvXCImJnNbZC0xXT09PVwiL1wiKXtsPVwiY29tbWVudC1pbmxpbmVcIix2PWQtMTtjb250aW51ZX1jb250aW51ZTtjYXNlXCJzaW5nbGUtcXVvdGVzXCI6aWYoXz09PVwiJ1wiJiZzW2QtMV0hPT1cIlxcXFxcIiYmKGw9bSxtPVwiaW5pdGlhbFwiKSxfPT09YFxuYHx8Xz09PVwiXFxyXCIpcmV0dXJuIHM7Y29udGludWU7Y2FzZVwiZG91YmxlLXF1b3Rlc1wiOmlmKF89PT0nXCInJiZzW2QtMV0hPT1cIlxcXFxcIiYmKGw9bSxtPVwiaW5pdGlhbFwiKSxfPT09YFxuYHx8Xz09PVwiXFxyXCIpcmV0dXJuIHM7Y29udGludWU7Y2FzZVwidXJsXCI6aWYoXz09PVwiKVwiJiYobD1cImluaXRpYWxcIiksXz09PWBcbmB8fF89PT1cIlxcclwiKXJldHVybiBzO2lmKF89PT1cIidcIil7bD1cInNpbmdsZS1xdW90ZXNcIixtPVwidXJsXCI7Y29udGludWV9aWYoXz09PSdcIicpe2w9XCJkb3VibGUtcXVvdGVzXCIsbT1cInVybFwiO2NvbnRpbnVlfWNvbnRpbnVlO2Nhc2VcImNvbW1lbnQtYmxvY2tcIjpfPT09XCIvXCImJnNbZC0xXT09PVwiKlwiJiYobD1cImluaXRpYWxcIik7Y29udGludWU7Y2FzZVwiY29tbWVudC1pbmxpbmVcIjooXz09PSdcIid8fF89PT1cIidcInx8Xz09PVwiKlwiKSYmKHk9ITApLChfPT09YFxuYHx8Xz09PVwiXFxyXCIpJiYoeSYmdy5wdXNoKFt2LGRdKSxsPVwiaW5pdGlhbFwiLHk9ITEpO2NvbnRpbnVlfX1mb3IobGV0W2QsX11vZiB3KXM9cy5zbGljZSgwLGQpK3Muc2xpY2UoZCxfKS5yZXBsYWNlKC9bXCInKl0vZyxcIiBcIikrcy5zbGljZShfKTtyZXR1cm4gc31mdW5jdGlvbiByKHMpe3JldHVybiBzLnNvdXJjZS5zdGFydE9mZnNldH1mdW5jdGlvbiB1KHMpe3JldHVybiBzLnNvdXJjZS5lbmRPZmZzZXR9bi5leHBvcnRzPXtsb2NTdGFydDpyLGxvY0VuZDp1LGNhbGN1bGF0ZUxvYzpoLHJlcGxhY2VRdW90ZXNJbklubGluZUNvbW1lbnRzOnR9fX0pLEFsPVIoe1wic3JjL3V0aWxzL2lzLW5vbi1lbXB0eS1hcnJheS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO2Z1bmN0aW9uIGkoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoPjB9bi5leHBvcnRzPWl9fSksUGw9Uih7XCJzcmMvbGFuZ3VhZ2UtY3NzL3V0aWxzL2hhcy1zY3NzLWludGVycG9sYXRpb24uanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1BbCgpO2Z1bmN0aW9uIGEobyl7aWYoaShvKSl7Zm9yKGxldCBmPW8ubGVuZ3RoLTE7Zj4wO2YtLSlpZihvW2ZdLnR5cGU9PT1cIndvcmRcIiYmb1tmXS52YWx1ZT09PVwie1wiJiZvW2YtMV0udHlwZT09PVwid29yZFwiJiZvW2YtMV0udmFsdWUuZW5kc1dpdGgoXCIjXCIpKXJldHVybiEwfXJldHVybiExfW4uZXhwb3J0cz1hfX0pLFJsPVIoe1wic3JjL2xhbmd1YWdlLWNzcy91dGlscy9oYXMtc3RyaW5nLW9yLWZ1bmN0aW9uLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7ZnVuY3Rpb24gaShhKXtyZXR1cm4gYS5zb21lKG89Pm8udHlwZT09PVwic3RyaW5nXCJ8fG8udHlwZT09PVwiZnVuY1wiKX1uLmV4cG9ydHM9aX19KSxJbD1SKHtcInNyYy9sYW5ndWFnZS1jc3MvdXRpbHMvaXMtbGVzcy1wYXJzZXIuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTtmdW5jdGlvbiBpKGEpe3JldHVybiBhLnBhcnNlcj09PVwiY3NzXCJ8fGEucGFyc2VyPT09XCJsZXNzXCJ9bi5leHBvcnRzPWl9fSksQ2w9Uih7XCJzcmMvbGFuZ3VhZ2UtY3NzL3V0aWxzL2lzLXNjc3MuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTtmdW5jdGlvbiBpKGEsbyl7cmV0dXJuIGE9PT1cImxlc3NcInx8YT09PVwic2Nzc1wiP2E9PT1cInNjc3NcIjovKD86XFx3XFxzKjpcXHMqW146fV0rfCMpe3xAaW1wb3J0W15cXG5dKyg/OnVybHwsKS8udGVzdChvKX1uLmV4cG9ydHM9aX19KSxObD1SKHtcInNyYy9sYW5ndWFnZS1jc3MvdXRpbHMvaXMtc2Nzcy1uZXN0ZWQtcHJvcGVydHktbm9kZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO2Z1bmN0aW9uIGkoYSl7cmV0dXJuIGEuc2VsZWN0b3I/YS5zZWxlY3Rvci5yZXBsYWNlKC9cXC9cXCouKj9cXCpcXC8vLFwiXCIpLnJlcGxhY2UoL1xcL1xcLy4qXFxuLyxcIlwiKS50cmltKCkuZW5kc1dpdGgoXCI6XCIpOiExfW4uZXhwb3J0cz1pfX0pLGpsPVIoe1wic3JjL2xhbmd1YWdlLWNzcy91dGlscy9pcy1zY3NzLXZhcmlhYmxlLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7ZnVuY3Rpb24gaShhKXtyZXR1cm4gQm9vbGVhbigoYT09bnVsbD92b2lkIDA6YS50eXBlKT09PVwid29yZFwiJiZhLnZhbHVlLnN0YXJ0c1dpdGgoXCIkXCIpKX1uLmV4cG9ydHM9aX19KSxNbD1SKHtcInNyYy9sYW5ndWFnZS1jc3MvdXRpbHMvc3RyaW5naWZ5LW5vZGUuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTtmdW5jdGlvbiBpKGEpe3ZhciBvLGYscDtpZihhLmdyb3Vwcyl7dmFyIGgsZyxjO2xldCB5PSgoaD1hLm9wZW4pPT09bnVsbHx8aD09PXZvaWQgMD92b2lkIDA6aC52YWx1ZSl8fFwiXCIsdz1hLmdyb3Vwcy5tYXAoXz0+aShfKSkuam9pbigoKGc9YS5ncm91cHNbMF0pPT09bnVsbHx8Zz09PXZvaWQgMD92b2lkIDA6Zy50eXBlKT09PVwiY29tbWFfZ3JvdXBcIj9cIixcIjpcIlwiKSxkPSgoYz1hLmNsb3NlKT09PW51bGx8fGM9PT12b2lkIDA/dm9pZCAwOmMudmFsdWUpfHxcIlwiO3JldHVybiB5K3crZH1sZXQgdD0oKG89YS5yYXdzKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8uYmVmb3JlKXx8XCJcIixyPSgoZj1hLnJhd3MpPT09bnVsbHx8Zj09PXZvaWQgMD92b2lkIDA6Zi5xdW90ZSl8fFwiXCIsdT1hLnR5cGU9PT1cImF0d29yZFwiP1wiQFwiOlwiXCIscz1hLnZhbHVlfHxcIlwiLGw9YS51bml0fHxcIlwiLG09YS5ncm91cD9pKGEuZ3JvdXApOlwiXCIsdj0oKHA9YS5yYXdzKT09PW51bGx8fHA9PT12b2lkIDA/dm9pZCAwOnAuYWZ0ZXIpfHxcIlwiO3JldHVybiB0K3IrdStzK3IrbCttK3Z9bi5leHBvcnRzPWl9fSksRGw9Uih7XCJzcmMvbGFuZ3VhZ2UtY3NzL3V0aWxzL2lzLW1vZHVsZS1ydWxlLW5hbWUuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1uZXcgU2V0KFtcImltcG9ydFwiLFwidXNlXCIsXCJmb3J3YXJkXCJdKTtmdW5jdGlvbiBhKG8pe3JldHVybiBpLmhhcyhvKX1uLmV4cG9ydHM9YX19KSx3ZT1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL25vZGUuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1mdW5jdGlvbihhLG8pe2xldCBmPW5ldyBhLmNvbnN0cnVjdG9yO2ZvcihsZXQgcCBpbiBhKXtpZighYS5oYXNPd25Qcm9wZXJ0eShwKSljb250aW51ZTtsZXQgaD1hW3BdLGc9dHlwZW9mIGg7cD09PVwicGFyZW50XCImJmc9PT1cIm9iamVjdFwiP28mJihmW3BdPW8pOnA9PT1cInNvdXJjZVwiP2ZbcF09aDpoIGluc3RhbmNlb2YgQXJyYXk/ZltwXT1oLm1hcChjPT5pKGMsZikpOnAhPT1cImJlZm9yZVwiJiZwIT09XCJhZnRlclwiJiZwIT09XCJiZXR3ZWVuXCImJnAhPT1cInNlbWljb2xvblwiJiYoZz09PVwib2JqZWN0XCImJmghPT1udWxsJiYoaD1pKGgpKSxmW3BdPWgpfXJldHVybiBmfTtuLmV4cG9ydHM9Y2xhc3N7Y29uc3RydWN0b3Iobyl7bz1vfHx7fSx0aGlzLnJhd3M9e2JlZm9yZTpcIlwiLGFmdGVyOlwiXCJ9O2ZvcihsZXQgZiBpbiBvKXRoaXNbZl09b1tmXX1yZW1vdmUoKXtyZXR1cm4gdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpLHRoaXMucGFyZW50PXZvaWQgMCx0aGlzfXRvU3RyaW5nKCl7cmV0dXJuW3RoaXMucmF3cy5iZWZvcmUsU3RyaW5nKHRoaXMudmFsdWUpLHRoaXMucmF3cy5hZnRlcl0uam9pbihcIlwiKX1jbG9uZShvKXtvPW98fHt9O2xldCBmPWkodGhpcyk7Zm9yKGxldCBwIGluIG8pZltwXT1vW3BdO3JldHVybiBmfWNsb25lQmVmb3JlKG8pe289b3x8e307bGV0IGY9dGhpcy5jbG9uZShvKTtyZXR1cm4gdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsZiksZn1jbG9uZUFmdGVyKG8pe289b3x8e307bGV0IGY9dGhpcy5jbG9uZShvKTtyZXR1cm4gdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcyxmKSxmfXJlcGxhY2VXaXRoKCl7bGV0IG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZih0aGlzLnBhcmVudCl7Zm9yKGxldCBmIG9mIG8pdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsZik7dGhpcy5yZW1vdmUoKX1yZXR1cm4gdGhpc31tb3ZlVG8obyl7cmV0dXJuIHRoaXMuY2xlYW5SYXdzKHRoaXMucm9vdCgpPT09by5yb290KCkpLHRoaXMucmVtb3ZlKCksby5hcHBlbmQodGhpcyksdGhpc31tb3ZlQmVmb3JlKG8pe3JldHVybiB0aGlzLmNsZWFuUmF3cyh0aGlzLnJvb3QoKT09PW8ucm9vdCgpKSx0aGlzLnJlbW92ZSgpLG8ucGFyZW50Lmluc2VydEJlZm9yZShvLHRoaXMpLHRoaXN9bW92ZUFmdGVyKG8pe3JldHVybiB0aGlzLmNsZWFuUmF3cyh0aGlzLnJvb3QoKT09PW8ucm9vdCgpKSx0aGlzLnJlbW92ZSgpLG8ucGFyZW50Lmluc2VydEFmdGVyKG8sdGhpcyksdGhpc31uZXh0KCl7bGV0IG89dGhpcy5wYXJlbnQuaW5kZXgodGhpcyk7cmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW28rMV19cHJldigpe2xldCBvPXRoaXMucGFyZW50LmluZGV4KHRoaXMpO3JldHVybiB0aGlzLnBhcmVudC5ub2Rlc1tvLTFdfXRvSlNPTigpe2xldCBvPXt9O2ZvcihsZXQgZiBpbiB0aGlzKXtpZighdGhpcy5oYXNPd25Qcm9wZXJ0eShmKXx8Zj09PVwicGFyZW50XCIpY29udGludWU7bGV0IHA9dGhpc1tmXTtwIGluc3RhbmNlb2YgQXJyYXk/b1tmXT1wLm1hcChoPT50eXBlb2YgaD09XCJvYmplY3RcIiYmaC50b0pTT04/aC50b0pTT04oKTpoKTp0eXBlb2YgcD09XCJvYmplY3RcIiYmcC50b0pTT04/b1tmXT1wLnRvSlNPTigpOm9bZl09cH1yZXR1cm4gb31yb290KCl7bGV0IG89dGhpcztmb3IoO28ucGFyZW50OylvPW8ucGFyZW50O3JldHVybiBvfWNsZWFuUmF3cyhvKXtkZWxldGUgdGhpcy5yYXdzLmJlZm9yZSxkZWxldGUgdGhpcy5yYXdzLmFmdGVyLG98fGRlbGV0ZSB0aGlzLnJhd3MuYmV0d2Vlbn1wb3NpdGlvbkluc2lkZShvKXtsZXQgZj10aGlzLnRvU3RyaW5nKCkscD10aGlzLnNvdXJjZS5zdGFydC5jb2x1bW4saD10aGlzLnNvdXJjZS5zdGFydC5saW5lO2ZvcihsZXQgZz0wO2c8bztnKyspZltnXT09PWBcbmA/KHA9MSxoKz0xKTpwKz0xO3JldHVybntsaW5lOmgsY29sdW1uOnB9fXBvc2l0aW9uQnkobyl7bGV0IGY9dGhpcy5zb3VyY2Uuc3RhcnQ7aWYoT2JqZWN0KG8pLmluZGV4KWY9dGhpcy5wb3NpdGlvbkluc2lkZShvLmluZGV4KTtlbHNlIGlmKE9iamVjdChvKS53b3JkKXtsZXQgcD10aGlzLnRvU3RyaW5nKCkuaW5kZXhPZihvLndvcmQpO3AhPT0tMSYmKGY9dGhpcy5wb3NpdGlvbkluc2lkZShwKSl9cmV0dXJuIGZ9fX19KSx1ZT1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL2NvbnRhaW5lci5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXdlKCksYT1jbGFzcyBleHRlbmRzIGl7Y29uc3RydWN0b3Iobyl7c3VwZXIobyksdGhpcy5ub2Rlc3x8KHRoaXMubm9kZXM9W10pfXB1c2gobyl7cmV0dXJuIG8ucGFyZW50PXRoaXMsdGhpcy5ub2Rlcy5wdXNoKG8pLHRoaXN9ZWFjaChvKXt0aGlzLmxhc3RFYWNofHwodGhpcy5sYXN0RWFjaD0wKSx0aGlzLmluZGV4ZXN8fCh0aGlzLmluZGV4ZXM9e30pLHRoaXMubGFzdEVhY2grPTE7bGV0IGY9dGhpcy5sYXN0RWFjaCxwLGg7aWYodGhpcy5pbmRleGVzW2ZdPTAsISF0aGlzLm5vZGVzKXtmb3IoO3RoaXMuaW5kZXhlc1tmXTx0aGlzLm5vZGVzLmxlbmd0aCYmKHA9dGhpcy5pbmRleGVzW2ZdLGg9byh0aGlzLm5vZGVzW3BdLHApLGghPT0hMSk7KXRoaXMuaW5kZXhlc1tmXSs9MTtyZXR1cm4gZGVsZXRlIHRoaXMuaW5kZXhlc1tmXSxofX13YWxrKG8pe3JldHVybiB0aGlzLmVhY2goKGYscCk9PntsZXQgaD1vKGYscCk7cmV0dXJuIGghPT0hMSYmZi53YWxrJiYoaD1mLndhbGsobykpLGh9KX13YWxrVHlwZShvLGYpe2lmKCFvfHwhZil0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIHt0eXBlfSBhbmQge2NhbGxiYWNrfSBhcmUgcmVxdWlyZWQuXCIpO2xldCBwPXR5cGVvZiBvPT1cImZ1bmN0aW9uXCI7cmV0dXJuIHRoaXMud2FsaygoaCxnKT0+e2lmKHAmJmggaW5zdGFuY2VvZiBvfHwhcCYmaC50eXBlPT09bylyZXR1cm4gZi5jYWxsKHRoaXMsaCxnKX0pfWFwcGVuZChvKXtyZXR1cm4gby5wYXJlbnQ9dGhpcyx0aGlzLm5vZGVzLnB1c2gobyksdGhpc31wcmVwZW5kKG8pe3JldHVybiBvLnBhcmVudD10aGlzLHRoaXMubm9kZXMudW5zaGlmdChvKSx0aGlzfWNsZWFuUmF3cyhvKXtpZihzdXBlci5jbGVhblJhd3MobyksdGhpcy5ub2Rlcylmb3IobGV0IGYgb2YgdGhpcy5ub2RlcylmLmNsZWFuUmF3cyhvKX1pbnNlcnRBZnRlcihvLGYpe2xldCBwPXRoaXMuaW5kZXgobyksaDt0aGlzLm5vZGVzLnNwbGljZShwKzEsMCxmKTtmb3IobGV0IGcgaW4gdGhpcy5pbmRleGVzKWg9dGhpcy5pbmRleGVzW2ddLHA8PWgmJih0aGlzLmluZGV4ZXNbZ109aCt0aGlzLm5vZGVzLmxlbmd0aCk7cmV0dXJuIHRoaXN9aW5zZXJ0QmVmb3JlKG8sZil7bGV0IHA9dGhpcy5pbmRleChvKSxoO3RoaXMubm9kZXMuc3BsaWNlKHAsMCxmKTtmb3IobGV0IGcgaW4gdGhpcy5pbmRleGVzKWg9dGhpcy5pbmRleGVzW2ddLHA8PWgmJih0aGlzLmluZGV4ZXNbZ109aCt0aGlzLm5vZGVzLmxlbmd0aCk7cmV0dXJuIHRoaXN9cmVtb3ZlQ2hpbGQobyl7bz10aGlzLmluZGV4KG8pLHRoaXMubm9kZXNbb10ucGFyZW50PXZvaWQgMCx0aGlzLm5vZGVzLnNwbGljZShvLDEpO2xldCBmO2ZvcihsZXQgcCBpbiB0aGlzLmluZGV4ZXMpZj10aGlzLmluZGV4ZXNbcF0sZj49byYmKHRoaXMuaW5kZXhlc1twXT1mLTEpO3JldHVybiB0aGlzfXJlbW92ZUFsbCgpe2ZvcihsZXQgbyBvZiB0aGlzLm5vZGVzKW8ucGFyZW50PXZvaWQgMDtyZXR1cm4gdGhpcy5ub2Rlcz1bXSx0aGlzfWV2ZXJ5KG8pe3JldHVybiB0aGlzLm5vZGVzLmV2ZXJ5KG8pfXNvbWUobyl7cmV0dXJuIHRoaXMubm9kZXMuc29tZShvKX1pbmRleChvKXtyZXR1cm4gdHlwZW9mIG89PVwibnVtYmVyXCI/bzp0aGlzLm5vZGVzLmluZGV4T2Yobyl9Z2V0IGZpcnN0KCl7aWYoISF0aGlzLm5vZGVzKXJldHVybiB0aGlzLm5vZGVzWzBdfWdldCBsYXN0KCl7aWYoISF0aGlzLm5vZGVzKXJldHVybiB0aGlzLm5vZGVzW3RoaXMubm9kZXMubGVuZ3RoLTFdfXRvU3RyaW5nKCl7bGV0IG89dGhpcy5ub2Rlcy5tYXAoU3RyaW5nKS5qb2luKFwiXCIpO3JldHVybiB0aGlzLnZhbHVlJiYobz10aGlzLnZhbHVlK28pLHRoaXMucmF3cy5iZWZvcmUmJihvPXRoaXMucmF3cy5iZWZvcmUrbyksdGhpcy5yYXdzLmFmdGVyJiYobys9dGhpcy5yYXdzLmFmdGVyKSxvfX07YS5yZWdpc3RlcldhbGtlcj1vPT57bGV0IGY9XCJ3YWxrXCIrby5uYW1lO2YubGFzdEluZGV4T2YoXCJzXCIpIT09Zi5sZW5ndGgtMSYmKGYrPVwic1wiKSwhYS5wcm90b3R5cGVbZl0mJihhLnByb3RvdHlwZVtmXT1mdW5jdGlvbihwKXtyZXR1cm4gdGhpcy53YWxrVHlwZShvLHApfSl9LG4uZXhwb3J0cz1hfX0pLExsPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtdmFsdWVzLXBhcnNlci9saWIvcm9vdC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXVlKCk7bi5leHBvcnRzPWNsYXNzIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihvKXtzdXBlcihvKSx0aGlzLnR5cGU9XCJyb290XCJ9fX19KSxLcz1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL3ZhbHVlLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7dmFyIGk9dWUoKTtuLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKG8pe3N1cGVyKG8pLHRoaXMudHlwZT1cInZhbHVlXCIsdGhpcy51bmJhbGFuY2VkPTB9fX19KSxRcz1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL2F0d29yZC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXVlKCksYT1jbGFzcyBleHRlbmRzIGl7Y29uc3RydWN0b3Iobyl7c3VwZXIobyksdGhpcy50eXBlPVwiYXR3b3JkXCJ9dG9TdHJpbmcoKXtsZXQgbz10aGlzLnF1b3RlZD90aGlzLnJhd3MucXVvdGU6XCJcIjtyZXR1cm5bdGhpcy5yYXdzLmJlZm9yZSxcIkBcIixTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcy52YWx1ZSksdGhpcy5yYXdzLmFmdGVyXS5qb2luKFwiXCIpfX07aS5yZWdpc3RlcldhbGtlcihhKSxuLmV4cG9ydHM9YX19KSxZcz1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL2NvbG9uLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7dmFyIGk9dWUoKSxhPXdlKCksbz1jbGFzcyBleHRlbmRzIGF7Y29uc3RydWN0b3IoZil7c3VwZXIoZiksdGhpcy50eXBlPVwiY29sb25cIn19O2kucmVnaXN0ZXJXYWxrZXIobyksbi5leHBvcnRzPW99fSksWHM9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy12YWx1ZXMtcGFyc2VyL2xpYi9jb21tYS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXVlKCksYT13ZSgpLG89Y2xhc3MgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKGYpe3N1cGVyKGYpLHRoaXMudHlwZT1cImNvbW1hXCJ9fTtpLnJlZ2lzdGVyV2Fsa2VyKG8pLG4uZXhwb3J0cz1vfX0pLFpzPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtdmFsdWVzLXBhcnNlci9saWIvY29tbWVudC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXVlKCksYT13ZSgpLG89Y2xhc3MgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKGYpe3N1cGVyKGYpLHRoaXMudHlwZT1cImNvbW1lbnRcIix0aGlzLmlubGluZT1PYmplY3QoZikuaW5saW5lfHwhMX10b1N0cmluZygpe3JldHVyblt0aGlzLnJhd3MuYmVmb3JlLHRoaXMuaW5saW5lP1wiLy9cIjpcIi8qXCIsU3RyaW5nKHRoaXMudmFsdWUpLHRoaXMuaW5saW5lP1wiXCI6XCIqL1wiLHRoaXMucmF3cy5hZnRlcl0uam9pbihcIlwiKX19O2kucmVnaXN0ZXJXYWxrZXIobyksbi5leHBvcnRzPW99fSksZW89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy12YWx1ZXMtcGFyc2VyL2xpYi9mdW5jdGlvbi5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXVlKCksYT1jbGFzcyBleHRlbmRzIGl7Y29uc3RydWN0b3Iobyl7c3VwZXIobyksdGhpcy50eXBlPVwiZnVuY1wiLHRoaXMudW5iYWxhbmNlZD0tMX19O2kucmVnaXN0ZXJXYWxrZXIoYSksbi5leHBvcnRzPWF9fSkscm89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy12YWx1ZXMtcGFyc2VyL2xpYi9udW1iZXIuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT11ZSgpLGE9d2UoKSxvPWNsYXNzIGV4dGVuZHMgYXtjb25zdHJ1Y3RvcihmKXtzdXBlcihmKSx0aGlzLnR5cGU9XCJudW1iZXJcIix0aGlzLnVuaXQ9T2JqZWN0KGYpLnVuaXR8fFwiXCJ9dG9TdHJpbmcoKXtyZXR1cm5bdGhpcy5yYXdzLmJlZm9yZSxTdHJpbmcodGhpcy52YWx1ZSksdGhpcy51bml0LHRoaXMucmF3cy5hZnRlcl0uam9pbihcIlwiKX19O2kucmVnaXN0ZXJXYWxrZXIobyksbi5leHBvcnRzPW99fSksdG89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy12YWx1ZXMtcGFyc2VyL2xpYi9vcGVyYXRvci5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXVlKCksYT13ZSgpLG89Y2xhc3MgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKGYpe3N1cGVyKGYpLHRoaXMudHlwZT1cIm9wZXJhdG9yXCJ9fTtpLnJlZ2lzdGVyV2Fsa2VyKG8pLG4uZXhwb3J0cz1vfX0pLG5vPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtdmFsdWVzLXBhcnNlci9saWIvcGFyZW4uanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT11ZSgpLGE9d2UoKSxvPWNsYXNzIGV4dGVuZHMgYXtjb25zdHJ1Y3RvcihmKXtzdXBlcihmKSx0aGlzLnR5cGU9XCJwYXJlblwiLHRoaXMucGFyZW5UeXBlPVwiXCJ9fTtpLnJlZ2lzdGVyV2Fsa2VyKG8pLG4uZXhwb3J0cz1vfX0pLGlvPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtdmFsdWVzLXBhcnNlci9saWIvc3RyaW5nLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7dmFyIGk9dWUoKSxhPXdlKCksbz1jbGFzcyBleHRlbmRzIGF7Y29uc3RydWN0b3IoZil7c3VwZXIoZiksdGhpcy50eXBlPVwic3RyaW5nXCJ9dG9TdHJpbmcoKXtsZXQgZj10aGlzLnF1b3RlZD90aGlzLnJhd3MucXVvdGU6XCJcIjtyZXR1cm5bdGhpcy5yYXdzLmJlZm9yZSxmLHRoaXMudmFsdWUrXCJcIixmLHRoaXMucmF3cy5hZnRlcl0uam9pbihcIlwiKX19O2kucmVnaXN0ZXJXYWxrZXIobyksbi5leHBvcnRzPW99fSksc289Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy12YWx1ZXMtcGFyc2VyL2xpYi93b3JkLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7dmFyIGk9dWUoKSxhPXdlKCksbz1jbGFzcyBleHRlbmRzIGF7Y29uc3RydWN0b3IoZil7c3VwZXIoZiksdGhpcy50eXBlPVwid29yZFwifX07aS5yZWdpc3RlcldhbGtlcihvKSxuLmV4cG9ydHM9b319KSxvbz1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL3VuaWNvZGUtcmFuZ2UuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT11ZSgpLGE9d2UoKSxvPWNsYXNzIGV4dGVuZHMgYXtjb25zdHJ1Y3RvcihmKXtzdXBlcihmKSx0aGlzLnR5cGU9XCJ1bmljb2RlLXJhbmdlXCJ9fTtpLnJlZ2lzdGVyV2Fsa2VyKG8pLG4uZXhwb3J0cz1vfX0pO2Z1bmN0aW9uIGFvKCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiB1bygpe3Rocm93IG5ldyBFcnJvcihcImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBjbyhlKXtpZihiZT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoYmU9PT1hb3x8IWJlKSYmc2V0VGltZW91dClyZXR1cm4gYmU9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBiZShlLDApfWNhdGNoe3RyeXtyZXR1cm4gYmUuY2FsbChudWxsLGUsMCl9Y2F0Y2h7cmV0dXJuIGJlLmNhbGwodGhpcyxlLDApfX19ZnVuY3Rpb24gemwoZSl7aWYoeGU9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigoeGU9PT11b3x8IXhlKSYmY2xlYXJUaW1lb3V0KXJldHVybiB4ZT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtyZXR1cm4geGUoZSl9Y2F0Y2h7dHJ5e3JldHVybiB4ZS5jYWxsKG51bGwsZSl9Y2F0Y2h7cmV0dXJuIHhlLmNhbGwodGhpcyxlKX19fWZ1bmN0aW9uIEJsKCl7IU5lfHwhQ2V8fChOZT0hMSxDZS5sZW5ndGg/bWU9Q2UuY29uY2F0KG1lKTokZT0tMSxtZS5sZW5ndGgmJmxvKCkpfWZ1bmN0aW9uIGxvKCl7aWYoIU5lKXt2YXIgZT1jbyhCbCk7TmU9ITA7Zm9yKHZhciBuPW1lLmxlbmd0aDtuOyl7Zm9yKENlPW1lLG1lPVtdOysrJGU8bjspQ2UmJkNlWyRlXS5ydW4oKTskZT0tMSxuPW1lLmxlbmd0aH1DZT1udWxsLE5lPSExLHpsKGUpfX1mdW5jdGlvbiBGbChlKXt2YXIgbj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMV09YXJndW1lbnRzW2ldO21lLnB1c2gobmV3IGZvKGUsbikpLG1lLmxlbmd0aD09PTEmJiFOZSYmY28obG8pfWZ1bmN0aW9uIGZvKGUsbil7dGhpcy5mdW49ZSx0aGlzLmFycmF5PW59ZnVuY3Rpb24gQWUoKXt9ZnVuY3Rpb24gVWwoZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9ZnVuY3Rpb24gV2woKXtyZXR1cm5cIi9cIn1mdW5jdGlvbiAkbChlKXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWRcIil9ZnVuY3Rpb24gVmwoKXtyZXR1cm4gMH1mdW5jdGlvbiBHbChlKXt2YXIgbj1wby5jYWxsKFJlKSouMDAxLGk9TWF0aC5mbG9vcihuKSxhPU1hdGguZmxvb3IobiUxKjFlOSk7cmV0dXJuIGUmJihpPWktZVswXSxhPWEtZVsxXSxhPDAmJihpLS0sYSs9MWU5KSksW2ksYV19ZnVuY3Rpb24gSGwoKXt2YXIgZT1uZXcgRGF0ZSxuPWUtaG87cmV0dXJuIG4vMWUzfXZhciBiZSx4ZSxtZSxOZSxDZSwkZSx2cyxtcyxncyx5cyx3cyxfcyxicyx4cyxrcyxTcyxPcyxUcyxFcyxxcyxBcyxQcyxSZSxwbyxobyxScyxWZSxKbD1MZSh7XCJub2RlLW1vZHVsZXMtcG9seWZpbGxzOnByb2Nlc3NcIigpe0EoKSxiZT1hbyx4ZT11byx0eXBlb2YgZ2xvYmFsVGhpcy5zZXRUaW1lb3V0PT1cImZ1bmN0aW9uXCImJihiZT1zZXRUaW1lb3V0KSx0eXBlb2YgZ2xvYmFsVGhpcy5jbGVhclRpbWVvdXQ9PVwiZnVuY3Rpb25cIiYmKHhlPWNsZWFyVGltZW91dCksbWU9W10sTmU9ITEsJGU9LTEsZm8ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHZzPVwiYnJvd3NlclwiLG1zPVwiYnJvd3NlclwiLGdzPSEwLHlzPXt9LHdzPVtdLF9zPVwiXCIsYnM9e30seHM9e30sa3M9e30sU3M9QWUsT3M9QWUsVHM9QWUsRXM9QWUscXM9QWUsQXM9QWUsUHM9QWUsUmU9Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZXx8e30scG89UmUubm93fHxSZS5tb3pOb3d8fFJlLm1zTm93fHxSZS5vTm93fHxSZS53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpfSxobz1uZXcgRGF0ZSxScz17bmV4dFRpY2s6RmwsdGl0bGU6dnMsYnJvd3NlcjpncyxlbnY6eXMsYXJndjp3cyx2ZXJzaW9uOl9zLHZlcnNpb25zOmJzLG9uOlNzLGFkZExpc3RlbmVyOk9zLG9uY2U6VHMsb2ZmOkVzLHJlbW92ZUxpc3RlbmVyOnFzLHJlbW92ZUFsbExpc3RlbmVyczpBcyxlbWl0OlBzLGJpbmRpbmc6VWwsY3dkOldsLGNoZGlyOiRsLHVtYXNrOlZsLGhydGltZTpHbCxwbGF0Zm9ybTptcyxyZWxlYXNlOnhzLGNvbmZpZzprcyx1cHRpbWU6SGx9LFZlPVJzfX0pLHV0LEV0LEtsPUxlKHtcIm5vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtcG9seWZpbGxzL3BvbHlmaWxscy9pbmhlcml0cy5qc1wiKCl7QSgpLHR5cGVvZiBPYmplY3QuY3JlYXRlPT1cImZ1bmN0aW9uXCI/dXQ9ZnVuY3Rpb24obixpKXtuLnN1cGVyXz1pLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pfTp1dD1mdW5jdGlvbihuLGkpe24uc3VwZXJfPWk7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWkucHJvdG90eXBlLG4ucHJvdG90eXBlPW5ldyBhLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW59LEV0PXV0fX0pLHZvPXt9O090KHZvLHtfZXh0ZW5kOigpPT5JdCxkZWJ1Z2xvZzooKT0+bW8sZGVmYXVsdDooKT0+T28sZGVwcmVjYXRlOigpPT5xdCxmb3JtYXQ6KCk9PmdyLGluaGVyaXRzOigpPT5FdCxpbnNwZWN0OigpPT55ZSxpc0FycmF5OigpPT5BdCxpc0Jvb2xlYW46KCk9PnlyLGlzQnVmZmVyOigpPT5fbyxpc0RhdGU6KCk9PnZyLGlzRXJyb3I6KCk9PkhlLGlzRnVuY3Rpb246KCk9PkplLGlzTnVsbDooKT0+S2UsaXNOdWxsT3JVbmRlZmluZWQ6KCk9PmdvLGlzTnVtYmVyOigpPT5QdCxpc09iamVjdDooKT0+amUsaXNQcmltaXRpdmU6KCk9PndvLGlzUmVnRXhwOigpPT5HZSxpc1N0cmluZzooKT0+UWUsaXNTeW1ib2w6KCk9PnlvLGlzVW5kZWZpbmVkOigpPT5nZSxsb2c6KCk9PmJvfSk7ZnVuY3Rpb24gZ3IoZSl7aWYoIVFlKGUpKXtmb3IodmFyIG49W10saT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspbi5wdXNoKHllKGFyZ3VtZW50c1tpXSkpO3JldHVybiBuLmpvaW4oXCIgXCIpfWZvcih2YXIgaT0xLGE9YXJndW1lbnRzLG89YS5sZW5ndGgsZj1TdHJpbmcoZSkucmVwbGFjZShrbyxmdW5jdGlvbihoKXtpZihoPT09XCIlJVwiKXJldHVyblwiJVwiO2lmKGk+PW8pcmV0dXJuIGg7c3dpdGNoKGgpe2Nhc2VcIiVzXCI6cmV0dXJuIFN0cmluZyhhW2krK10pO2Nhc2VcIiVkXCI6cmV0dXJuIE51bWJlcihhW2krK10pO2Nhc2VcIiVqXCI6dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShhW2krK10pfWNhdGNoe3JldHVyblwiW0NpcmN1bGFyXVwifWRlZmF1bHQ6cmV0dXJuIGh9fSkscD1hW2ldO2k8bztwPWFbKytpXSlLZShwKXx8IWplKHApP2YrPVwiIFwiK3A6Zis9XCIgXCIreWUocCk7cmV0dXJuIGZ9ZnVuY3Rpb24gcXQoZSxuKXtpZihnZShnbG9iYWxUaGlzLnByb2Nlc3MpKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBxdChlLG4pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07aWYoVmUubm9EZXByZWNhdGlvbj09PSEwKXJldHVybiBlO3ZhciBpPSExO2Z1bmN0aW9uIGEoKXtpZighaSl7aWYoVmUudGhyb3dEZXByZWNhdGlvbil0aHJvdyBuZXcgRXJyb3Iobik7VmUudHJhY2VEZXByZWNhdGlvbj9jb25zb2xlLnRyYWNlKG4pOmNvbnNvbGUuZXJyb3IobiksaT0hMH1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGF9ZnVuY3Rpb24gbW8oZSl7aWYoZ2UoZnQpJiYoZnQ9VmUuZW52Lk5PREVfREVCVUd8fFwiXCIpLGU9ZS50b1VwcGVyQ2FzZSgpLCFXZVtlXSlpZihuZXcgUmVnRXhwKFwiXFxcXGJcIitlK1wiXFxcXGJcIixcImlcIikudGVzdChmdCkpe3ZhciBuPTA7V2VbZV09ZnVuY3Rpb24oKXt2YXIgaT1nci5hcHBseShudWxsLGFyZ3VtZW50cyk7Y29uc29sZS5lcnJvcihcIiVzICVkOiAlc1wiLGUsbixpKX19ZWxzZSBXZVtlXT1mdW5jdGlvbigpe307cmV0dXJuIFdlW2VdfWZ1bmN0aW9uIHllKGUsbil7dmFyIGk9e3NlZW46W10sc3R5bGl6ZTpZbH07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTMmJihpLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD49NCYmKGkuY29sb3JzPWFyZ3VtZW50c1szXSkseXIobik/aS5zaG93SGlkZGVuPW46biYmSXQoaSxuKSxnZShpLnNob3dIaWRkZW4pJiYoaS5zaG93SGlkZGVuPSExKSxnZShpLmRlcHRoKSYmKGkuZGVwdGg9MiksZ2UoaS5jb2xvcnMpJiYoaS5jb2xvcnM9ITEpLGdlKGkuY3VzdG9tSW5zcGVjdCkmJihpLmN1c3RvbUluc3BlY3Q9ITApLGkuY29sb3JzJiYoaS5zdHlsaXplPVFsKSxkcihpLGUsaS5kZXB0aCl9ZnVuY3Rpb24gUWwoZSxuKXt2YXIgaT15ZS5zdHlsZXNbbl07cmV0dXJuIGk/XCJcXHgxQltcIit5ZS5jb2xvcnNbaV1bMF0rXCJtXCIrZStcIlxceDFCW1wiK3llLmNvbG9yc1tpXVsxXStcIm1cIjplfWZ1bmN0aW9uIFlsKGUsbil7cmV0dXJuIGV9ZnVuY3Rpb24gWGwoZSl7dmFyIG49e307cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihpLGEpe25baV09ITB9KSxufWZ1bmN0aW9uIGRyKGUsbixpKXtpZihlLmN1c3RvbUluc3BlY3QmJm4mJkplKG4uaW5zcGVjdCkmJm4uaW5zcGVjdCE9PXllJiYhKG4uY29uc3RydWN0b3ImJm4uY29uc3RydWN0b3IucHJvdG90eXBlPT09bikpe3ZhciBhPW4uaW5zcGVjdChpLGUpO3JldHVybiBRZShhKXx8KGE9ZHIoZSxhLGkpKSxhfXZhciBvPVpsKGUsbik7aWYobylyZXR1cm4gbzt2YXIgZj1PYmplY3Qua2V5cyhuKSxwPVhsKGYpO2lmKGUuc2hvd0hpZGRlbiYmKGY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikpLEhlKG4pJiYoZi5pbmRleE9mKFwibWVzc2FnZVwiKT49MHx8Zi5pbmRleE9mKFwiZGVzY3JpcHRpb25cIik+PTApKXJldHVybiBjdChuKTtpZihmLmxlbmd0aD09PTApe2lmKEplKG4pKXt2YXIgaD1uLm5hbWU/XCI6IFwiK24ubmFtZTpcIlwiO3JldHVybiBlLnN0eWxpemUoXCJbRnVuY3Rpb25cIitoK1wiXVwiLFwic3BlY2lhbFwiKX1pZihHZShuKSlyZXR1cm4gZS5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSxcInJlZ2V4cFwiKTtpZih2cihuKSlyZXR1cm4gZS5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobiksXCJkYXRlXCIpO2lmKEhlKG4pKXJldHVybiBjdChuKX12YXIgZz1cIlwiLGM9ITEsdD1bXCJ7XCIsXCJ9XCJdO2lmKEF0KG4pJiYoYz0hMCx0PVtcIltcIixcIl1cIl0pLEplKG4pKXt2YXIgcj1uLm5hbWU/XCI6IFwiK24ubmFtZTpcIlwiO2c9XCIgW0Z1bmN0aW9uXCIrcitcIl1cIn1pZihHZShuKSYmKGc9XCIgXCIrUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pKSx2cihuKSYmKGc9XCIgXCIrRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2FsbChuKSksSGUobikmJihnPVwiIFwiK2N0KG4pKSxmLmxlbmd0aD09PTAmJighY3x8bi5sZW5ndGg9PTApKXJldHVybiB0WzBdK2crdFsxXTtpZihpPDApcmV0dXJuIEdlKG4pP2Uuc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobiksXCJyZWdleHBcIik6ZS5zdHlsaXplKFwiW09iamVjdF1cIixcInNwZWNpYWxcIik7ZS5zZWVuLnB1c2gobik7dmFyIHU7cmV0dXJuIGM/dT1lZihlLG4saSxwLGYpOnU9Zi5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHl0KGUsbixpLHAscyxjKX0pLGUuc2Vlbi5wb3AoKSxyZih1LGcsdCl9ZnVuY3Rpb24gWmwoZSxuKXtpZihnZShuKSlyZXR1cm4gZS5zdHlsaXplKFwidW5kZWZpbmVkXCIsXCJ1bmRlZmluZWRcIik7aWYoUWUobikpe3ZhciBpPVwiJ1wiK0pTT04uc3RyaW5naWZ5KG4pLnJlcGxhY2UoL15cInxcIiQvZyxcIlwiKS5yZXBsYWNlKC8nL2csXCJcXFxcJ1wiKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKStcIidcIjtyZXR1cm4gZS5zdHlsaXplKGksXCJzdHJpbmdcIil9aWYoUHQobikpcmV0dXJuIGUuc3R5bGl6ZShcIlwiK24sXCJudW1iZXJcIik7aWYoeXIobikpcmV0dXJuIGUuc3R5bGl6ZShcIlwiK24sXCJib29sZWFuXCIpO2lmKEtlKG4pKXJldHVybiBlLnN0eWxpemUoXCJudWxsXCIsXCJudWxsXCIpfWZ1bmN0aW9uIGN0KGUpe3JldHVyblwiW1wiK0Vycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpK1wiXVwifWZ1bmN0aW9uIGVmKGUsbixpLGEsbyl7Zm9yKHZhciBmPVtdLHA9MCxoPW4ubGVuZ3RoO3A8aDsrK3ApeG8obixTdHJpbmcocCkpP2YucHVzaCh5dChlLG4saSxhLFN0cmluZyhwKSwhMCkpOmYucHVzaChcIlwiKTtyZXR1cm4gby5mb3JFYWNoKGZ1bmN0aW9uKGcpe2cubWF0Y2goL15cXGQrJC8pfHxmLnB1c2goeXQoZSxuLGksYSxnLCEwKSl9KSxmfWZ1bmN0aW9uIHl0KGUsbixpLGEsbyxmKXt2YXIgcCxoLGc7aWYoZz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sbyl8fHt2YWx1ZTpuW29dfSxnLmdldD9nLnNldD9oPWUuc3R5bGl6ZShcIltHZXR0ZXIvU2V0dGVyXVwiLFwic3BlY2lhbFwiKTpoPWUuc3R5bGl6ZShcIltHZXR0ZXJdXCIsXCJzcGVjaWFsXCIpOmcuc2V0JiYoaD1lLnN0eWxpemUoXCJbU2V0dGVyXVwiLFwic3BlY2lhbFwiKSkseG8oYSxvKXx8KHA9XCJbXCIrbytcIl1cIiksaHx8KGUuc2Vlbi5pbmRleE9mKGcudmFsdWUpPDA/KEtlKGkpP2g9ZHIoZSxnLnZhbHVlLG51bGwpOmg9ZHIoZSxnLnZhbHVlLGktMSksaC5pbmRleE9mKGBcbmApPi0xJiYoZj9oPWguc3BsaXQoYFxuYCkubWFwKGZ1bmN0aW9uKGMpe3JldHVyblwiICBcIitjfSkuam9pbihgXG5gKS5zdWJzdHIoMik6aD1gXG5gK2guc3BsaXQoYFxuYCkubWFwKGZ1bmN0aW9uKGMpe3JldHVyblwiICAgXCIrY30pLmpvaW4oYFxuYCkpKTpoPWUuc3R5bGl6ZShcIltDaXJjdWxhcl1cIixcInNwZWNpYWxcIikpLGdlKHApKXtpZihmJiZvLm1hdGNoKC9eXFxkKyQvKSlyZXR1cm4gaDtwPUpTT04uc3RyaW5naWZ5KFwiXCIrbykscC5tYXRjaCgvXlwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXCIkLyk/KHA9cC5zdWJzdHIoMSxwLmxlbmd0aC0yKSxwPWUuc3R5bGl6ZShwLFwibmFtZVwiKSk6KHA9cC5yZXBsYWNlKC8nL2csXCJcXFxcJ1wiKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKS5yZXBsYWNlKC8oXlwifFwiJCkvZyxcIidcIikscD1lLnN0eWxpemUocCxcInN0cmluZ1wiKSl9cmV0dXJuIHArXCI6IFwiK2h9ZnVuY3Rpb24gcmYoZSxuLGkpe3ZhciBhPTAsbz1lLnJlZHVjZShmdW5jdGlvbihmLHApe3JldHVybiBhKysscC5pbmRleE9mKGBcbmApPj0wJiZhKyssZitwLnJlcGxhY2UoL1xcdTAwMWJcXFtcXGRcXGQ/bS9nLFwiXCIpLmxlbmd0aCsxfSwwKTtyZXR1cm4gbz42MD9pWzBdKyhuPT09XCJcIj9cIlwiOm4rYFxuIGApK1wiIFwiK2Uuam9pbihgLFxuICBgKStcIiBcIitpWzFdOmlbMF0rbitcIiBcIitlLmpvaW4oXCIsIFwiKStcIiBcIitpWzFdfWZ1bmN0aW9uIEF0KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIHlyKGUpe3JldHVybiB0eXBlb2YgZT09XCJib29sZWFuXCJ9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGU9PT1udWxsfWZ1bmN0aW9uIGdvKGUpe3JldHVybiBlPT1udWxsfWZ1bmN0aW9uIFB0KGUpe3JldHVybiB0eXBlb2YgZT09XCJudW1iZXJcIn1mdW5jdGlvbiBRZShlKXtyZXR1cm4gdHlwZW9mIGU9PVwic3RyaW5nXCJ9ZnVuY3Rpb24geW8oZSl7cmV0dXJuIHR5cGVvZiBlPT1cInN5bWJvbFwifWZ1bmN0aW9uIGdlKGUpe3JldHVybiBlPT09dm9pZCAwfWZ1bmN0aW9uIEdlKGUpe3JldHVybiBqZShlKSYmUnQoZSk9PT1cIltvYmplY3QgUmVnRXhwXVwifWZ1bmN0aW9uIGplKGUpe3JldHVybiB0eXBlb2YgZT09XCJvYmplY3RcIiYmZSE9PW51bGx9ZnVuY3Rpb24gdnIoZSl7cmV0dXJuIGplKGUpJiZSdChlKT09PVwiW29iamVjdCBEYXRlXVwifWZ1bmN0aW9uIEhlKGUpe3JldHVybiBqZShlKSYmKFJ0KGUpPT09XCJbb2JqZWN0IEVycm9yXVwifHxlIGluc3RhbmNlb2YgRXJyb3IpfWZ1bmN0aW9uIEplKGUpe3JldHVybiB0eXBlb2YgZT09XCJmdW5jdGlvblwifWZ1bmN0aW9uIHdvKGUpe3JldHVybiBlPT09bnVsbHx8dHlwZW9mIGU9PVwiYm9vbGVhblwifHx0eXBlb2YgZT09XCJudW1iZXJcInx8dHlwZW9mIGU9PVwic3RyaW5nXCJ8fHR5cGVvZiBlPT1cInN5bWJvbFwifHx0eXBlb2YgZT5cInVcIn1mdW5jdGlvbiBfbyhlKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGUpfWZ1bmN0aW9uIFJ0KGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gbHQoZSl7cmV0dXJuIGU8MTA/XCIwXCIrZS50b1N0cmluZygxMCk6ZS50b1N0cmluZygxMCl9ZnVuY3Rpb24gdGYoKXt2YXIgZT1uZXcgRGF0ZSxuPVtsdChlLmdldEhvdXJzKCkpLGx0KGUuZ2V0TWludXRlcygpKSxsdChlLmdldFNlY29uZHMoKSldLmpvaW4oXCI6XCIpO3JldHVybltlLmdldERhdGUoKSxTb1tlLmdldE1vbnRoKCldLG5dLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIGJvKCl7Y29uc29sZS5sb2coXCIlcyAtICVzXCIsdGYoKSxnci5hcHBseShudWxsLGFyZ3VtZW50cykpfWZ1bmN0aW9uIEl0KGUsbil7aWYoIW58fCFqZShuKSlyZXR1cm4gZTtmb3IodmFyIGk9T2JqZWN0LmtleXMobiksYT1pLmxlbmd0aDthLS07KWVbaVthXV09bltpW2FdXTtyZXR1cm4gZX1mdW5jdGlvbiB4byhlLG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKX12YXIga28sV2UsZnQsU28sT28sbmY9TGUoe1wibm9kZS1tb2R1bGVzLXBvbHlmaWxsczp1dGlsXCIoKXtBKCksSmwoKSxLbCgpLGtvPS8lW3NkaiVdL2csV2U9e30seWUuY29sb3JzPXtib2xkOlsxLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0saW52ZXJzZTpbNywyN10sd2hpdGU6WzM3LDM5XSxncmV5Ols5MCwzOV0sYmxhY2s6WzMwLDM5XSxibHVlOlszNCwzOV0sY3lhbjpbMzYsMzldLGdyZWVuOlszMiwzOV0sbWFnZW50YTpbMzUsMzldLHJlZDpbMzEsMzldLHllbGxvdzpbMzMsMzldfSx5ZS5zdHlsZXM9e3NwZWNpYWw6XCJjeWFuXCIsbnVtYmVyOlwieWVsbG93XCIsYm9vbGVhbjpcInllbGxvd1wiLHVuZGVmaW5lZDpcImdyZXlcIixudWxsOlwiYm9sZFwiLHN0cmluZzpcImdyZWVuXCIsZGF0ZTpcIm1hZ2VudGFcIixyZWdleHA6XCJyZWRcIn0sU289W1wiSmFuXCIsXCJGZWJcIixcIk1hclwiLFwiQXByXCIsXCJNYXlcIixcIkp1blwiLFwiSnVsXCIsXCJBdWdcIixcIlNlcFwiLFwiT2N0XCIsXCJOb3ZcIixcIkRlY1wiXSxPbz17aW5oZXJpdHM6RXQsX2V4dGVuZDpJdCxsb2c6Ym8saXNCdWZmZXI6X28saXNQcmltaXRpdmU6d28saXNGdW5jdGlvbjpKZSxpc0Vycm9yOkhlLGlzRGF0ZTp2cixpc09iamVjdDpqZSxpc1JlZ0V4cDpHZSxpc1VuZGVmaW5lZDpnZSxpc1N5bWJvbDp5byxpc1N0cmluZzpRZSxpc051bWJlcjpQdCxpc051bGxPclVuZGVmaW5lZDpnbyxpc051bGw6S2UsaXNCb29sZWFuOnlyLGlzQXJyYXk6QXQsaW5zcGVjdDp5ZSxkZXByZWNhdGU6cXQsZm9ybWF0OmdyLGRlYnVnbG9nOm1vfX19KSxzZj1SKHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHMtY29tbW9uanM6dXRpbFwiKGUsbil7QSgpO3ZhciBpPShuZigpLFR0KHZvKSk7aWYoaSYmaS5kZWZhdWx0KXtuLmV4cG9ydHM9aS5kZWZhdWx0O2ZvcihsZXQgYSBpbiBpKW4uZXhwb3J0c1thXT1pW2FdfWVsc2UgaSYmKG4uZXhwb3J0cz1pKX19KSxvZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL2Vycm9ycy9Ub2tlbml6ZUVycm9yLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7dmFyIGk9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihhKXtzdXBlcihhKSx0aGlzLm5hbWU9dGhpcy5jb25zdHJ1Y3Rvci5uYW1lLHRoaXMubWVzc2FnZT1hfHxcIkFuIGVycm9yIG9jdXJyZWQgd2hpbGUgdG9remVuaXppbmcuXCIsdHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlPT1cImZ1bmN0aW9uXCI/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcihhKS5zdGFja319O24uZXhwb3J0cz1pfX0pLGFmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtdmFsdWVzLXBhcnNlci9saWIvdG9rZW5pemUuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1cIntcIi5jaGFyQ29kZUF0KDApLGE9XCJ9XCIuY2hhckNvZGVBdCgwKSxvPVwiKFwiLmNoYXJDb2RlQXQoMCksZj1cIilcIi5jaGFyQ29kZUF0KDApLHA9XCInXCIuY2hhckNvZGVBdCgwKSxoPSdcIicuY2hhckNvZGVBdCgwKSxnPVwiXFxcXFwiLmNoYXJDb2RlQXQoMCksYz1cIi9cIi5jaGFyQ29kZUF0KDApLHQ9XCIuXCIuY2hhckNvZGVBdCgwKSxyPVwiLFwiLmNoYXJDb2RlQXQoMCksdT1cIjpcIi5jaGFyQ29kZUF0KDApLHM9XCIqXCIuY2hhckNvZGVBdCgwKSxsPVwiLVwiLmNoYXJDb2RlQXQoMCksbT1cIitcIi5jaGFyQ29kZUF0KDApLHY9XCIjXCIuY2hhckNvZGVBdCgwKSx5PWBcbmAuY2hhckNvZGVBdCgwKSx3PVwiIFwiLmNoYXJDb2RlQXQoMCksZD1cIlxcZlwiLmNoYXJDb2RlQXQoMCksXz1cIlx0XCIuY2hhckNvZGVBdCgwKSxTPVwiXFxyXCIuY2hhckNvZGVBdCgwKSx4PVwiQFwiLmNoYXJDb2RlQXQoMCksTj1cImVcIi5jaGFyQ29kZUF0KDApLFA9XCJFXCIuY2hhckNvZGVBdCgwKSxXPVwiMFwiLmNoYXJDb2RlQXQoMCksVT1cIjlcIi5jaGFyQ29kZUF0KDApLEg9XCJ1XCIuY2hhckNvZGVBdCgwKSxEPVwiVVwiLmNoYXJDb2RlQXQoMCksJD0vWyBcXG5cXHRcXHJcXHtcXChcXCknXCJcXFxcOywvXS9nLEI9L1sgXFxuXFx0XFxyXFwoXFwpXFx7XFx9XFwqOjtAISYnXCJcXCtcXHx+PixcXFtcXF1cXFxcXXxcXC8oPz1cXCopL2csTz0vWyBcXG5cXHRcXHJcXChcXClcXHtcXH1cXCo6O0AhJidcIlxcLVxcK1xcfH4+LFxcW1xcXVxcXFxdfFxcLy9nLGo9L15bYS16MC05XS9pLEM9L15bYS1mMC05P1xcLV0vaSxJPXNmKCksWD1vZigpO24uZXhwb3J0cz1mdW5jdGlvbihRLEspe0s9S3x8e307bGV0IEo9W10sTT1RLnZhbHVlT2YoKSxZPU0ubGVuZ3RoLEc9LTEsRT0xLGs9MCxiPTAsTD1udWxsLHEsVCxGLHoscmUsbmUsY2UsZmUsdGUsaWUsYWUsc2U7ZnVuY3Rpb24gbGUoWmUpe2xldCBfZT1JLmZvcm1hdChcIlVuY2xvc2VkICVzIGF0IGxpbmU6ICVkLCBjb2x1bW46ICVkLCB0b2tlbjogJWRcIixaZSxFLGstRyxrKTt0aHJvdyBuZXcgWChfZSl9ZnVuY3Rpb24gcGUoKXtsZXQgWmU9SS5mb3JtYXQoXCJTeW50YXggZXJyb3IgYXQgbGluZTogJWQsIGNvbHVtbjogJWQsIHRva2VuOiAlZFwiLEUsay1HLGspO3Rocm93IG5ldyBYKFplKX1mb3IoO2s8WTspe3N3aXRjaChxPU0uY2hhckNvZGVBdChrKSxxPT09eSYmKEc9ayxFKz0xKSxxKXtjYXNlIHk6Y2FzZSB3OmNhc2UgXzpjYXNlIFM6Y2FzZSBkOlQ9aztkbyBUKz0xLHE9TS5jaGFyQ29kZUF0KFQpLHE9PT15JiYoRz1ULEUrPTEpO3doaWxlKHE9PT13fHxxPT09eXx8cT09PV98fHE9PT1TfHxxPT09ZCk7Si5wdXNoKFtcInNwYWNlXCIsTS5zbGljZShrLFQpLEUsay1HLEUsVC1HLGtdKSxrPVQtMTticmVhaztjYXNlIHU6VD1rKzEsSi5wdXNoKFtcImNvbG9uXCIsTS5zbGljZShrLFQpLEUsay1HLEUsVC1HLGtdKSxrPVQtMTticmVhaztjYXNlIHI6VD1rKzEsSi5wdXNoKFtcImNvbW1hXCIsTS5zbGljZShrLFQpLEUsay1HLEUsVC1HLGtdKSxrPVQtMTticmVhaztjYXNlIGk6Si5wdXNoKFtcIntcIixcIntcIixFLGstRyxFLFQtRyxrXSk7YnJlYWs7Y2FzZSBhOkoucHVzaChbXCJ9XCIsXCJ9XCIsRSxrLUcsRSxULUcsa10pO2JyZWFrO2Nhc2UgbzpiKyssTD0hTCYmYj09PTEmJkoubGVuZ3RoPjAmJkpbSi5sZW5ndGgtMV1bMF09PT1cIndvcmRcIiYmSltKLmxlbmd0aC0xXVsxXT09PVwidXJsXCIsSi5wdXNoKFtcIihcIixcIihcIixFLGstRyxFLFQtRyxrXSk7YnJlYWs7Y2FzZSBmOmItLSxMPUwmJmI+MCxKLnB1c2goW1wiKVwiLFwiKVwiLEUsay1HLEUsVC1HLGtdKTticmVhaztjYXNlIHA6Y2FzZSBoOkY9cT09PXA/XCInXCI6J1wiJyxUPWs7ZG8gZm9yKGllPSExLFQ9TS5pbmRleE9mKEYsVCsxKSxUPT09LTEmJmxlKFwicXVvdGVcIixGKSxhZT1UO00uY2hhckNvZGVBdChhZS0xKT09PWc7KWFlLT0xLGllPSFpZTt3aGlsZShpZSk7Si5wdXNoKFtcInN0cmluZ1wiLE0uc2xpY2UoayxUKzEpLEUsay1HLEUsVC1HLGtdKSxrPVQ7YnJlYWs7Y2FzZSB4OiQubGFzdEluZGV4PWsrMSwkLnRlc3QoTSksJC5sYXN0SW5kZXg9PT0wP1Q9TS5sZW5ndGgtMTpUPSQubGFzdEluZGV4LTIsSi5wdXNoKFtcImF0d29yZFwiLE0uc2xpY2UoayxUKzEpLEUsay1HLEUsVC1HLGtdKSxrPVQ7YnJlYWs7Y2FzZSBnOlQ9ayxxPU0uY2hhckNvZGVBdChUKzEpLGNlJiZxIT09YyYmcSE9PXcmJnEhPT15JiZxIT09XyYmcSE9PVMmJnEhPT1kJiYoVCs9MSksSi5wdXNoKFtcIndvcmRcIixNLnNsaWNlKGssVCsxKSxFLGstRyxFLFQtRyxrXSksaz1UO2JyZWFrO2Nhc2UgbTpjYXNlIGw6Y2FzZSBzOlQ9aysxLHNlPU0uc2xpY2UoaysxLFQrMSk7bGV0IFplPU0uc2xpY2Uoay0xLGspO2lmKHE9PT1sJiZzZS5jaGFyQ29kZUF0KDApPT09bCl7VCsrLEoucHVzaChbXCJ3b3JkXCIsTS5zbGljZShrLFQpLEUsay1HLEUsVC1HLGtdKSxrPVQtMTticmVha31KLnB1c2goW1wib3BlcmF0b3JcIixNLnNsaWNlKGssVCksRSxrLUcsRSxULUcsa10pLGs9VC0xO2JyZWFrO2RlZmF1bHQ6aWYocT09PWMmJihNLmNoYXJDb2RlQXQoaysxKT09PXN8fEsubG9vc2UmJiFMJiZNLmNoYXJDb2RlQXQoaysxKT09PWMpKXtpZihNLmNoYXJDb2RlQXQoaysxKT09PXMpVD1NLmluZGV4T2YoXCIqL1wiLGsrMikrMSxUPT09MCYmbGUoXCJjb21tZW50XCIsXCIqL1wiKTtlbHNle2xldCBCZT1NLmluZGV4T2YoYFxuYCxrKzIpO1Q9QmUhPT0tMT9CZS0xOll9bmU9TS5zbGljZShrLFQrMSksej1uZS5zcGxpdChgXG5gKSxyZT16Lmxlbmd0aC0xLHJlPjA/KGZlPUUrcmUsdGU9VC16W3JlXS5sZW5ndGgpOihmZT1FLHRlPUcpLEoucHVzaChbXCJjb21tZW50XCIsbmUsRSxrLUcsZmUsVC10ZSxrXSksRz10ZSxFPWZlLGs9VH1lbHNlIGlmKHE9PT12JiYhai50ZXN0KE0uc2xpY2UoaysxLGsrMikpKVQ9aysxLEoucHVzaChbXCIjXCIsTS5zbGljZShrLFQpLEUsay1HLEUsVC1HLGtdKSxrPVQtMTtlbHNlIGlmKChxPT09SHx8cT09PUQpJiZNLmNoYXJDb2RlQXQoaysxKT09PW0pe1Q9aysyO2RvIFQrPTEscT1NLmNoYXJDb2RlQXQoVCk7d2hpbGUoVDxZJiZDLnRlc3QoTS5zbGljZShULFQrMSkpKTtKLnB1c2goW1widW5pY29kZXJhbmdlXCIsTS5zbGljZShrLFQpLEUsay1HLEUsVC1HLGtdKSxrPVQtMX1lbHNlIGlmKHE9PT1jKVQ9aysxLEoucHVzaChbXCJvcGVyYXRvclwiLE0uc2xpY2UoayxUKSxFLGstRyxFLFQtRyxrXSksaz1ULTE7ZWxzZXtsZXQgX2U9QjtpZihxPj1XJiZxPD1VJiYoX2U9TyksX2UubGFzdEluZGV4PWsrMSxfZS50ZXN0KE0pLF9lLmxhc3RJbmRleD09PTA/VD1NLmxlbmd0aC0xOlQ9X2UubGFzdEluZGV4LTIsX2U9PT1PfHxxPT09dCl7bGV0IEJlPU0uY2hhckNvZGVBdChUKSxCdD1NLmNoYXJDb2RlQXQoVCsxKSxGdD1NLmNoYXJDb2RlQXQoVCsyKTsoQmU9PT1OfHxCZT09PVApJiYoQnQ9PT1sfHxCdD09PW0pJiZGdD49VyYmRnQ8PVUmJihPLmxhc3RJbmRleD1UKzIsTy50ZXN0KE0pLE8ubGFzdEluZGV4PT09MD9UPU0ubGVuZ3RoLTE6VD1PLmxhc3RJbmRleC0yKX1KLnB1c2goW1wid29yZFwiLE0uc2xpY2UoayxUKzEpLEUsay1HLEUsVC1HLGtdKSxrPVR9YnJlYWt9aysrfXJldHVybiBKfX19KSxUbz1SKHtcIm5vZGVfbW9kdWxlcy9mbGF0dGVuL2luZGV4LmpzXCIoZSxuKXtBKCksbi5leHBvcnRzPWZ1bmN0aW9uKGEsbyl7aWYobz10eXBlb2Ygbz09XCJudW1iZXJcIj9vOjEvMCwhbylyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcH0pOmE7cmV0dXJuIGYoYSwxKTtmdW5jdGlvbiBmKHAsaCl7cmV0dXJuIHAucmVkdWNlKGZ1bmN0aW9uKGcsYyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYykmJmg8bz9nLmNvbmNhdChmKGMsaCsxKSk6Zy5jb25jYXQoYyl9LFtdKX19fX0pLEVvPVIoe1wibm9kZV9tb2R1bGVzL2luZGV4ZXMtb2YvaW5kZXguanNcIihlLG4pe0EoKSxuLmV4cG9ydHM9ZnVuY3Rpb24oaSxhKXtmb3IodmFyIG89LTEsZj1bXTsobz1pLmluZGV4T2YoYSxvKzEpKSE9PS0xOylmLnB1c2gobyk7cmV0dXJuIGZ9fX0pLHFvPVIoe1wibm9kZV9tb2R1bGVzL3VuaXEvdW5pcS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO2Z1bmN0aW9uIGkoZixwKXtmb3IodmFyIGg9MSxnPWYubGVuZ3RoLGM9ZlswXSx0PWZbMF0scj0xO3I8ZzsrK3IpaWYodD1jLGM9ZltyXSxwKGMsdCkpe2lmKHI9PT1oKXtoKys7Y29udGludWV9ZltoKytdPWN9cmV0dXJuIGYubGVuZ3RoPWgsZn1mdW5jdGlvbiBhKGYpe2Zvcih2YXIgcD0xLGg9Zi5sZW5ndGgsZz1mWzBdLGM9ZlswXSx0PTE7dDxoOysrdCxjPWcpaWYoYz1nLGc9Zlt0XSxnIT09Yyl7aWYodD09PXApe3ArKztjb250aW51ZX1mW3ArK109Z31yZXR1cm4gZi5sZW5ndGg9cCxmfWZ1bmN0aW9uIG8oZixwLGgpe3JldHVybiBmLmxlbmd0aD09PTA/ZjpwPyhofHxmLnNvcnQocCksaShmLHApKTooaHx8Zi5zb3J0KCksYShmKSl9bi5leHBvcnRzPW99fSksdWY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy12YWx1ZXMtcGFyc2VyL2xpYi9lcnJvcnMvUGFyc2VyRXJyb3IuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTt2YXIgaT1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpLHRoaXMubmFtZT10aGlzLmNvbnN0cnVjdG9yLm5hbWUsdGhpcy5tZXNzYWdlPWF8fFwiQW4gZXJyb3Igb2N1cnJlZCB3aGlsZSBwYXJzaW5nLlwiLHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT09XCJmdW5jdGlvblwiP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGhpcy5jb25zdHJ1Y3Rvcik6dGhpcy5zdGFjaz1uZXcgRXJyb3IoYSkuc3RhY2t9fTtuLmV4cG9ydHM9aX19KSxjZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL3BhcnNlci5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPUxsKCksYT1LcygpLG89UXMoKSxmPVlzKCkscD1YcygpLGg9WnMoKSxnPWVvKCksYz1ybygpLHQ9dG8oKSxyPW5vKCksdT1pbygpLHM9c28oKSxsPW9vKCksbT1hZigpLHY9VG8oKSx5PUVvKCksdz1xbygpLGQ9dWYoKTtmdW5jdGlvbiBfKFMpe3JldHVybiBTLnNvcnQoKHgsTik9PngtTil9bi5leHBvcnRzPWNsYXNze2NvbnN0cnVjdG9yKHgsTil7bGV0IFA9e2xvb3NlOiExfTt0aGlzLmNhY2hlPVtdLHRoaXMuaW5wdXQ9eCx0aGlzLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSxQLE4pLHRoaXMucG9zaXRpb249MCx0aGlzLnVuYmFsYW5jZWQ9MCx0aGlzLnJvb3Q9bmV3IGk7bGV0IFc9bmV3IGE7dGhpcy5yb290LmFwcGVuZChXKSx0aGlzLmN1cnJlbnQ9Vyx0aGlzLnRva2Vucz1tKHgsdGhpcy5vcHRpb25zKX1wYXJzZSgpe3JldHVybiB0aGlzLmxvb3AoKX1jb2xvbigpe2xldCB4PXRoaXMuY3VyclRva2VuO3RoaXMubmV3Tm9kZShuZXcgZih7dmFsdWU6eFsxXSxzb3VyY2U6e3N0YXJ0OntsaW5lOnhbMl0sY29sdW1uOnhbM119LGVuZDp7bGluZTp4WzRdLGNvbHVtbjp4WzVdfX0sc291cmNlSW5kZXg6eFs2XX0pKSx0aGlzLnBvc2l0aW9uKyt9Y29tbWEoKXtsZXQgeD10aGlzLmN1cnJUb2tlbjt0aGlzLm5ld05vZGUobmV3IHAoe3ZhbHVlOnhbMV0sc291cmNlOntzdGFydDp7bGluZTp4WzJdLGNvbHVtbjp4WzNdfSxlbmQ6e2xpbmU6eFs0XSxjb2x1bW46eFs1XX19LHNvdXJjZUluZGV4OnhbNl19KSksdGhpcy5wb3NpdGlvbisrfWNvbW1lbnQoKXtsZXQgeD0hMSxOPXRoaXMuY3VyclRva2VuWzFdLnJlcGxhY2UoL1xcL1xcKnxcXCpcXC8vZyxcIlwiKSxQO3RoaXMub3B0aW9ucy5sb29zZSYmTi5zdGFydHNXaXRoKFwiLy9cIikmJihOPU4uc3Vic3RyaW5nKDIpLHg9ITApLFA9bmV3IGgoe3ZhbHVlOk4saW5saW5lOngsc291cmNlOntzdGFydDp7bGluZTp0aGlzLmN1cnJUb2tlblsyXSxjb2x1bW46dGhpcy5jdXJyVG9rZW5bM119LGVuZDp7bGluZTp0aGlzLmN1cnJUb2tlbls0XSxjb2x1bW46dGhpcy5jdXJyVG9rZW5bNV19fSxzb3VyY2VJbmRleDp0aGlzLmN1cnJUb2tlbls2XX0pLHRoaXMubmV3Tm9kZShQKSx0aGlzLnBvc2l0aW9uKyt9ZXJyb3IoeCxOKXt0aHJvdyBuZXcgZCh4K1wiIGF0IGxpbmU6IFwiLmNvbmNhdChOWzJdLFwiLCBjb2x1bW4gXCIpLmNvbmNhdChOWzNdKSl9bG9vcCgpe2Zvcig7dGhpcy5wb3NpdGlvbjx0aGlzLnRva2Vucy5sZW5ndGg7KXRoaXMucGFyc2VUb2tlbnMoKTtyZXR1cm4hdGhpcy5jdXJyZW50Lmxhc3QmJnRoaXMuc3BhY2VzP3RoaXMuY3VycmVudC5yYXdzLmJlZm9yZSs9dGhpcy5zcGFjZXM6dGhpcy5zcGFjZXMmJih0aGlzLmN1cnJlbnQubGFzdC5yYXdzLmFmdGVyKz10aGlzLnNwYWNlcyksdGhpcy5zcGFjZXM9XCJcIix0aGlzLnJvb3R9b3BlcmF0b3IoKXtsZXQgeD10aGlzLmN1cnJUb2tlblsxXSxOO2lmKHg9PT1cIitcInx8eD09PVwiLVwiKXtpZih0aGlzLm9wdGlvbnMubG9vc2V8fHRoaXMucG9zaXRpb24+MCYmKHRoaXMuY3VycmVudC50eXBlPT09XCJmdW5jXCImJnRoaXMuY3VycmVudC52YWx1ZT09PVwiY2FsY1wiP3RoaXMucHJldlRva2VuWzBdIT09XCJzcGFjZVwiJiZ0aGlzLnByZXZUb2tlblswXSE9PVwiKFwiP3RoaXMuZXJyb3IoXCJTeW50YXggRXJyb3JcIix0aGlzLmN1cnJUb2tlbik6dGhpcy5uZXh0VG9rZW5bMF0hPT1cInNwYWNlXCImJnRoaXMubmV4dFRva2VuWzBdIT09XCJ3b3JkXCI/dGhpcy5lcnJvcihcIlN5bnRheCBFcnJvclwiLHRoaXMuY3VyclRva2VuKTp0aGlzLm5leHRUb2tlblswXT09PVwid29yZFwiJiZ0aGlzLmN1cnJlbnQubGFzdC50eXBlIT09XCJvcGVyYXRvclwiJiZ0aGlzLmN1cnJlbnQubGFzdC52YWx1ZSE9PVwiKFwiJiZ0aGlzLmVycm9yKFwiU3ludGF4IEVycm9yXCIsdGhpcy5jdXJyVG9rZW4pOih0aGlzLm5leHRUb2tlblswXT09PVwic3BhY2VcInx8dGhpcy5uZXh0VG9rZW5bMF09PT1cIm9wZXJhdG9yXCJ8fHRoaXMucHJldlRva2VuWzBdPT09XCJvcGVyYXRvclwiKSYmdGhpcy5lcnJvcihcIlN5bnRheCBFcnJvclwiLHRoaXMuY3VyclRva2VuKSksdGhpcy5vcHRpb25zLmxvb3NlKXtpZigoIXRoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGh8fHRoaXMuY3VycmVudC5sYXN0JiZ0aGlzLmN1cnJlbnQubGFzdC50eXBlPT09XCJvcGVyYXRvclwiKSYmdGhpcy5uZXh0VG9rZW5bMF09PT1cIndvcmRcIilyZXR1cm4gdGhpcy53b3JkKCl9ZWxzZSBpZih0aGlzLm5leHRUb2tlblswXT09PVwid29yZFwiKXJldHVybiB0aGlzLndvcmQoKX1yZXR1cm4gTj1uZXcgdCh7dmFsdWU6dGhpcy5jdXJyVG9rZW5bMV0sc291cmNlOntzdGFydDp7bGluZTp0aGlzLmN1cnJUb2tlblsyXSxjb2x1bW46dGhpcy5jdXJyVG9rZW5bM119LGVuZDp7bGluZTp0aGlzLmN1cnJUb2tlblsyXSxjb2x1bW46dGhpcy5jdXJyVG9rZW5bM119fSxzb3VyY2VJbmRleDp0aGlzLmN1cnJUb2tlbls0XX0pLHRoaXMucG9zaXRpb24rKyx0aGlzLm5ld05vZGUoTil9cGFyc2VUb2tlbnMoKXtzd2l0Y2godGhpcy5jdXJyVG9rZW5bMF0pe2Nhc2VcInNwYWNlXCI6dGhpcy5zcGFjZSgpO2JyZWFrO2Nhc2VcImNvbG9uXCI6dGhpcy5jb2xvbigpO2JyZWFrO2Nhc2VcImNvbW1hXCI6dGhpcy5jb21tYSgpO2JyZWFrO2Nhc2VcImNvbW1lbnRcIjp0aGlzLmNvbW1lbnQoKTticmVhaztjYXNlXCIoXCI6dGhpcy5wYXJlbk9wZW4oKTticmVhaztjYXNlXCIpXCI6dGhpcy5wYXJlbkNsb3NlKCk7YnJlYWs7Y2FzZVwiYXR3b3JkXCI6Y2FzZVwid29yZFwiOnRoaXMud29yZCgpO2JyZWFrO2Nhc2VcIm9wZXJhdG9yXCI6dGhpcy5vcGVyYXRvcigpO2JyZWFrO2Nhc2VcInN0cmluZ1wiOnRoaXMuc3RyaW5nKCk7YnJlYWs7Y2FzZVwidW5pY29kZXJhbmdlXCI6dGhpcy51bmljb2RlUmFuZ2UoKTticmVhaztkZWZhdWx0OnRoaXMud29yZCgpO2JyZWFrfX1wYXJlbk9wZW4oKXtsZXQgeD0xLE49dGhpcy5wb3NpdGlvbisxLFA9dGhpcy5jdXJyVG9rZW4sVztmb3IoO048dGhpcy50b2tlbnMubGVuZ3RoJiZ4Oyl7bGV0IFU9dGhpcy50b2tlbnNbTl07VVswXT09PVwiKFwiJiZ4KyssVVswXT09PVwiKVwiJiZ4LS0sTisrfWlmKHgmJnRoaXMuZXJyb3IoXCJFeHBlY3RlZCBjbG9zaW5nIHBhcmVudGhlc2lzXCIsUCksVz10aGlzLmN1cnJlbnQubGFzdCxXJiZXLnR5cGU9PT1cImZ1bmNcIiYmVy51bmJhbGFuY2VkPDAmJihXLnVuYmFsYW5jZWQ9MCx0aGlzLmN1cnJlbnQ9VyksdGhpcy5jdXJyZW50LnVuYmFsYW5jZWQrKyx0aGlzLm5ld05vZGUobmV3IHIoe3ZhbHVlOlBbMV0sc291cmNlOntzdGFydDp7bGluZTpQWzJdLGNvbHVtbjpQWzNdfSxlbmQ6e2xpbmU6UFs0XSxjb2x1bW46UFs1XX19LHNvdXJjZUluZGV4OlBbNl19KSksdGhpcy5wb3NpdGlvbisrLHRoaXMuY3VycmVudC50eXBlPT09XCJmdW5jXCImJnRoaXMuY3VycmVudC51bmJhbGFuY2VkJiZ0aGlzLmN1cnJlbnQudmFsdWU9PT1cInVybFwiJiZ0aGlzLmN1cnJUb2tlblswXSE9PVwic3RyaW5nXCImJnRoaXMuY3VyclRva2VuWzBdIT09XCIpXCImJiF0aGlzLm9wdGlvbnMubG9vc2Upe2xldCBVPXRoaXMubmV4dFRva2VuLEg9dGhpcy5jdXJyVG9rZW5bMV0sRD17bGluZTp0aGlzLmN1cnJUb2tlblsyXSxjb2x1bW46dGhpcy5jdXJyVG9rZW5bM119O2Zvcig7VSYmVVswXSE9PVwiKVwiJiZ0aGlzLmN1cnJlbnQudW5iYWxhbmNlZDspdGhpcy5wb3NpdGlvbisrLEgrPXRoaXMuY3VyclRva2VuWzFdLFU9dGhpcy5uZXh0VG9rZW47dGhpcy5wb3NpdGlvbiE9PXRoaXMudG9rZW5zLmxlbmd0aC0xJiYodGhpcy5wb3NpdGlvbisrLHRoaXMubmV3Tm9kZShuZXcgcyh7dmFsdWU6SCxzb3VyY2U6e3N0YXJ0OkQsZW5kOntsaW5lOnRoaXMuY3VyclRva2VuWzRdLGNvbHVtbjp0aGlzLmN1cnJUb2tlbls1XX19LHNvdXJjZUluZGV4OnRoaXMuY3VyclRva2VuWzZdfSkpKX19cGFyZW5DbG9zZSgpe2xldCB4PXRoaXMuY3VyclRva2VuO3RoaXMubmV3Tm9kZShuZXcgcih7dmFsdWU6eFsxXSxzb3VyY2U6e3N0YXJ0OntsaW5lOnhbMl0sY29sdW1uOnhbM119LGVuZDp7bGluZTp4WzRdLGNvbHVtbjp4WzVdfX0sc291cmNlSW5kZXg6eFs2XX0pKSx0aGlzLnBvc2l0aW9uKyssISh0aGlzLnBvc2l0aW9uPj10aGlzLnRva2Vucy5sZW5ndGgtMSYmIXRoaXMuY3VycmVudC51bmJhbGFuY2VkKSYmKHRoaXMuY3VycmVudC51bmJhbGFuY2VkLS0sdGhpcy5jdXJyZW50LnVuYmFsYW5jZWQ8MCYmdGhpcy5lcnJvcihcIkV4cGVjdGVkIG9wZW5pbmcgcGFyZW50aGVzaXNcIix4KSwhdGhpcy5jdXJyZW50LnVuYmFsYW5jZWQmJnRoaXMuY2FjaGUubGVuZ3RoJiYodGhpcy5jdXJyZW50PXRoaXMuY2FjaGUucG9wKCkpKX1zcGFjZSgpe2xldCB4PXRoaXMuY3VyclRva2VuO3RoaXMucG9zaXRpb249PT10aGlzLnRva2Vucy5sZW5ndGgtMXx8dGhpcy5uZXh0VG9rZW5bMF09PT1cIixcInx8dGhpcy5uZXh0VG9rZW5bMF09PT1cIilcIj8odGhpcy5jdXJyZW50Lmxhc3QucmF3cy5hZnRlcis9eFsxXSx0aGlzLnBvc2l0aW9uKyspOih0aGlzLnNwYWNlcz14WzFdLHRoaXMucG9zaXRpb24rKyl9dW5pY29kZVJhbmdlKCl7bGV0IHg9dGhpcy5jdXJyVG9rZW47dGhpcy5uZXdOb2RlKG5ldyBsKHt2YWx1ZTp4WzFdLHNvdXJjZTp7c3RhcnQ6e2xpbmU6eFsyXSxjb2x1bW46eFszXX0sZW5kOntsaW5lOnhbNF0sY29sdW1uOnhbNV19fSxzb3VyY2VJbmRleDp4WzZdfSkpLHRoaXMucG9zaXRpb24rK31zcGxpdFdvcmQoKXtsZXQgeD10aGlzLm5leHRUb2tlbixOPXRoaXMuY3VyclRva2VuWzFdLFA9L15bXFwrXFwtXT8oKFxcZCsoXFwuXFxkKik/KXwoXFwuXFxkKykpKFtlRV1bXFwrXFwtXT9cXGQrKT8vLFc9L14oPyFcXCMoW2EtejAtOV0rKSlbXFwjXFx7XFx9XS9naSxVLEg7aWYoIVcudGVzdChOKSlmb3IoO3gmJnhbMF09PT1cIndvcmRcIjspdGhpcy5wb3NpdGlvbisrLE4rPXRoaXMuY3VyclRva2VuWzFdLHg9dGhpcy5uZXh0VG9rZW47VT15KE4sXCJAXCIpLEg9Xyh3KHYoW1swXSxVXSkpKSxILmZvckVhY2goKEQsJCk9PntsZXQgQj1IWyQrMV18fE4ubGVuZ3RoLE89Ti5zbGljZShELEIpLGo7aWYoflUuaW5kZXhPZihEKSlqPW5ldyBvKHt2YWx1ZTpPLnNsaWNlKDEpLHNvdXJjZTp7c3RhcnQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdK0R9LGVuZDp7bGluZTp0aGlzLmN1cnJUb2tlbls0XSxjb2x1bW46dGhpcy5jdXJyVG9rZW5bM10rKEItMSl9fSxzb3VyY2VJbmRleDp0aGlzLmN1cnJUb2tlbls2XStIWyRdfSk7ZWxzZSBpZihQLnRlc3QodGhpcy5jdXJyVG9rZW5bMV0pKXtsZXQgQz1PLnJlcGxhY2UoUCxcIlwiKTtqPW5ldyBjKHt2YWx1ZTpPLnJlcGxhY2UoQyxcIlwiKSxzb3VyY2U6e3N0YXJ0OntsaW5lOnRoaXMuY3VyclRva2VuWzJdLGNvbHVtbjp0aGlzLmN1cnJUb2tlblszXStEfSxlbmQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bNF0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdKyhCLTEpfX0sc291cmNlSW5kZXg6dGhpcy5jdXJyVG9rZW5bNl0rSFskXSx1bml0OkN9KX1lbHNlIGo9bmV3KHgmJnhbMF09PT1cIihcIj9nOnMpKHt2YWx1ZTpPLHNvdXJjZTp7c3RhcnQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdK0R9LGVuZDp7bGluZTp0aGlzLmN1cnJUb2tlbls0XSxjb2x1bW46dGhpcy5jdXJyVG9rZW5bM10rKEItMSl9fSxzb3VyY2VJbmRleDp0aGlzLmN1cnJUb2tlbls2XStIWyRdfSksai50eXBlPT09XCJ3b3JkXCI/KGouaXNIZXg9L14jKC4rKS8udGVzdChPKSxqLmlzQ29sb3I9L14jKFswLTlhLWZdezN9fFswLTlhLWZdezR9fFswLTlhLWZdezZ9fFswLTlhLWZdezh9KSQvaS50ZXN0KE8pKTp0aGlzLmNhY2hlLnB1c2godGhpcy5jdXJyZW50KTt0aGlzLm5ld05vZGUoail9KSx0aGlzLnBvc2l0aW9uKyt9c3RyaW5nKCl7bGV0IHg9dGhpcy5jdXJyVG9rZW4sTj10aGlzLmN1cnJUb2tlblsxXSxQPS9eKFxcXCJ8XFwnKS8sVz1QLnRlc3QoTiksVT1cIlwiLEg7VyYmKFU9Ti5tYXRjaChQKVswXSxOPU4uc2xpY2UoMSxOLmxlbmd0aC0xKSksSD1uZXcgdSh7dmFsdWU6Tixzb3VyY2U6e3N0YXJ0OntsaW5lOnhbMl0sY29sdW1uOnhbM119LGVuZDp7bGluZTp4WzRdLGNvbHVtbjp4WzVdfX0sc291cmNlSW5kZXg6eFs2XSxxdW90ZWQ6V30pLEgucmF3cy5xdW90ZT1VLHRoaXMubmV3Tm9kZShIKSx0aGlzLnBvc2l0aW9uKyt9d29yZCgpe3JldHVybiB0aGlzLnNwbGl0V29yZCgpfW5ld05vZGUoeCl7cmV0dXJuIHRoaXMuc3BhY2VzJiYoeC5yYXdzLmJlZm9yZSs9dGhpcy5zcGFjZXMsdGhpcy5zcGFjZXM9XCJcIiksdGhpcy5jdXJyZW50LmFwcGVuZCh4KX1nZXQgY3VyclRva2VuKCl7cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMucG9zaXRpb25dfWdldCBuZXh0VG9rZW4oKXtyZXR1cm4gdGhpcy50b2tlbnNbdGhpcy5wb3NpdGlvbisxXX1nZXQgcHJldlRva2VuKCl7cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMucG9zaXRpb24tMV19fX19KSxsZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXZhbHVlcy1wYXJzZXIvbGliL2luZGV4LmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7dmFyIGk9Y2YoKSxhPVFzKCksbz1ZcygpLGY9WHMoKSxwPVpzKCksaD1lbygpLGc9cm8oKSxjPXRvKCksdD1ubygpLHI9aW8oKSx1PW9vKCkscz1LcygpLGw9c28oKSxtPWZ1bmN0aW9uKHYseSl7cmV0dXJuIG5ldyBpKHYseSl9O20uYXR3b3JkPWZ1bmN0aW9uKHYpe3JldHVybiBuZXcgYSh2KX0sbS5jb2xvbj1mdW5jdGlvbih2KXtyZXR1cm4gbmV3IG8oT2JqZWN0LmFzc2lnbih7dmFsdWU6XCI6XCJ9LHYpKX0sbS5jb21tYT1mdW5jdGlvbih2KXtyZXR1cm4gbmV3IGYoT2JqZWN0LmFzc2lnbih7dmFsdWU6XCIsXCJ9LHYpKX0sbS5jb21tZW50PWZ1bmN0aW9uKHYpe3JldHVybiBuZXcgcCh2KX0sbS5mdW5jPWZ1bmN0aW9uKHYpe3JldHVybiBuZXcgaCh2KX0sbS5udW1iZXI9ZnVuY3Rpb24odil7cmV0dXJuIG5ldyBnKHYpfSxtLm9wZXJhdG9yPWZ1bmN0aW9uKHYpe3JldHVybiBuZXcgYyh2KX0sbS5wYXJlbj1mdW5jdGlvbih2KXtyZXR1cm4gbmV3IHQoT2JqZWN0LmFzc2lnbih7dmFsdWU6XCIoXCJ9LHYpKX0sbS5zdHJpbmc9ZnVuY3Rpb24odil7cmV0dXJuIG5ldyByKE9iamVjdC5hc3NpZ24oe3F1b3RlOlwiJ1wifSx2KSl9LG0udmFsdWU9ZnVuY3Rpb24odil7cmV0dXJuIG5ldyBzKHYpfSxtLndvcmQ9ZnVuY3Rpb24odil7cmV0dXJuIG5ldyBsKHYpfSxtLnVuaWNvZGVSYW5nZT1mdW5jdGlvbih2KXtyZXR1cm4gbmV3IHUodil9LG4uZXhwb3J0cz1tfX0pLHplPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL25vZGUuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITA7dmFyIGk9dHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1cInN5bWJvbFwiP2Z1bmN0aW9uKHApe3JldHVybiB0eXBlb2YgcH06ZnVuY3Rpb24ocCl7cmV0dXJuIHAmJnR5cGVvZiBTeW1ib2w9PVwiZnVuY3Rpb25cIiYmcC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmcCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgcH07ZnVuY3Rpb24gYShwLGgpe2lmKCEocCBpbnN0YW5jZW9mIGgpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9dmFyIG89ZnVuY3Rpb24gcChoLGcpe2lmKCh0eXBlb2YgaD5cInVcIj9cInVuZGVmaW5lZFwiOmkoaCkpIT09XCJvYmplY3RcIilyZXR1cm4gaDt2YXIgYz1uZXcgaC5jb25zdHJ1Y3Rvcjtmb3IodmFyIHQgaW4gaClpZighIWguaGFzT3duUHJvcGVydHkodCkpe3ZhciByPWhbdF0sdT10eXBlb2Ygcj5cInVcIj9cInVuZGVmaW5lZFwiOmkocik7dD09PVwicGFyZW50XCImJnU9PT1cIm9iamVjdFwiP2cmJihjW3RdPWcpOnIgaW5zdGFuY2VvZiBBcnJheT9jW3RdPXIubWFwKGZ1bmN0aW9uKHMpe3JldHVybiBwKHMsYyl9KTpjW3RdPXAocixjKX1yZXR1cm4gY30sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307YSh0aGlzLHApO2Zvcih2YXIgZyBpbiBoKXRoaXNbZ109aFtnXTt2YXIgYz1oLnNwYWNlcztjPWM9PT12b2lkIDA/e306Yzt2YXIgdD1jLmJlZm9yZSxyPXQ9PT12b2lkIDA/XCJcIjp0LHU9Yy5hZnRlcixzPXU9PT12b2lkIDA/XCJcIjp1O3RoaXMuc3BhY2VzPXtiZWZvcmU6cixhZnRlcjpzfX1yZXR1cm4gcC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKSx0aGlzLnBhcmVudD12b2lkIDAsdGhpc30scC5wcm90b3R5cGUucmVwbGFjZVdpdGg9ZnVuY3Rpb24oKXtpZih0aGlzLnBhcmVudCl7Zm9yKHZhciBnIGluIGFyZ3VtZW50cyl0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcyxhcmd1bWVudHNbZ10pO3RoaXMucmVtb3ZlKCl9cmV0dXJuIHRoaXN9LHAucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQuYXQodGhpcy5wYXJlbnQuaW5kZXgodGhpcykrMSl9LHAucHJvdG90eXBlLnByZXY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQuYXQodGhpcy5wYXJlbnQuaW5kZXgodGhpcyktMSl9LHAucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LGM9byh0aGlzKTtmb3IodmFyIHQgaW4gZyljW3RdPWdbdF07cmV0dXJuIGN9LHAucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuc3BhY2VzLmJlZm9yZSxTdHJpbmcodGhpcy52YWx1ZSksdGhpcy5zcGFjZXMuYWZ0ZXJdLmpvaW4oXCJcIil9LHB9KCk7ZS5kZWZhdWx0PWYsbi5leHBvcnRzPWUuZGVmYXVsdH19KSxvZT1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXNlbGVjdG9yLXBhcnNlci9kaXN0L3NlbGVjdG9ycy90eXBlcy5qc1wiKGUpe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITA7dmFyIG49ZS5UQUc9XCJ0YWdcIixpPWUuU1RSSU5HPVwic3RyaW5nXCIsYT1lLlNFTEVDVE9SPVwic2VsZWN0b3JcIixvPWUuUk9PVD1cInJvb3RcIixmPWUuUFNFVURPPVwicHNldWRvXCIscD1lLk5FU1RJTkc9XCJuZXN0aW5nXCIsaD1lLklEPVwiaWRcIixnPWUuQ09NTUVOVD1cImNvbW1lbnRcIixjPWUuQ09NQklOQVRPUj1cImNvbWJpbmF0b3JcIix0PWUuQ0xBU1M9XCJjbGFzc1wiLHI9ZS5BVFRSSUJVVEU9XCJhdHRyaWJ1dGVcIix1PWUuVU5JVkVSU0FMPVwidW5pdmVyc2FsXCJ9fSksQ3Q9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXIvZGlzdC9zZWxlY3RvcnMvY29udGFpbmVyLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcyhsLG0pe2Zvcih2YXIgdj0wO3Y8bS5sZW5ndGg7disrKXt2YXIgeT1tW3ZdO3kuZW51bWVyYWJsZT15LmVudW1lcmFibGV8fCExLHkuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHkmJih5LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCx5LmtleSx5KX19cmV0dXJuIGZ1bmN0aW9uKGwsbSx2KXtyZXR1cm4gbSYmcyhsLnByb3RvdHlwZSxtKSx2JiZzKGwsdiksbH19KCksYT16ZSgpLG89ZyhhKSxmPW9lKCkscD1oKGYpO2Z1bmN0aW9uIGgocyl7aWYocyYmcy5fX2VzTW9kdWxlKXJldHVybiBzO3ZhciBsPXt9O2lmKHMhPW51bGwpZm9yKHZhciBtIGluIHMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsbSkmJihsW21dPXNbbV0pO3JldHVybiBsLmRlZmF1bHQ9cyxsfWZ1bmN0aW9uIGcocyl7cmV0dXJuIHMmJnMuX19lc01vZHVsZT9zOntkZWZhdWx0OnN9fWZ1bmN0aW9uIGMocyxsKXtpZighKHMgaW5zdGFuY2VvZiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHQocyxsKXtpZighcyl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGwmJih0eXBlb2YgbD09XCJvYmplY3RcInx8dHlwZW9mIGw9PVwiZnVuY3Rpb25cIik/bDpzfWZ1bmN0aW9uIHIocyxsKXtpZih0eXBlb2YgbCE9XCJmdW5jdGlvblwiJiZsIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgbCk7cy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShsJiZsLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnMsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksbCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YocyxsKTpzLl9fcHJvdG9fXz1sKX12YXIgdT1mdW5jdGlvbihzKXtyKGwscyk7ZnVuY3Rpb24gbChtKXtjKHRoaXMsbCk7dmFyIHY9dCh0aGlzLHMuY2FsbCh0aGlzLG0pKTtyZXR1cm4gdi5ub2Rlc3x8KHYubm9kZXM9W10pLHZ9cmV0dXJuIGwucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbih2KXtyZXR1cm4gdi5wYXJlbnQ9dGhpcyx0aGlzLm5vZGVzLnB1c2godiksdGhpc30sbC5wcm90b3R5cGUucHJlcGVuZD1mdW5jdGlvbih2KXtyZXR1cm4gdi5wYXJlbnQ9dGhpcyx0aGlzLm5vZGVzLnVuc2hpZnQodiksdGhpc30sbC5wcm90b3R5cGUuYXQ9ZnVuY3Rpb24odil7cmV0dXJuIHRoaXMubm9kZXNbdl19LGwucHJvdG90eXBlLmluZGV4PWZ1bmN0aW9uKHYpe3JldHVybiB0eXBlb2Ygdj09XCJudW1iZXJcIj92OnRoaXMubm9kZXMuaW5kZXhPZih2KX0sbC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odil7dj10aGlzLmluZGV4KHYpLHRoaXMuYXQodikucGFyZW50PXZvaWQgMCx0aGlzLm5vZGVzLnNwbGljZSh2LDEpO3ZhciB5PXZvaWQgMDtmb3IodmFyIHcgaW4gdGhpcy5pbmRleGVzKXk9dGhpcy5pbmRleGVzW3ddLHk+PXYmJih0aGlzLmluZGV4ZXNbd109eS0xKTtyZXR1cm4gdGhpc30sbC5wcm90b3R5cGUucmVtb3ZlQWxsPWZ1bmN0aW9uKCl7Zm9yKHZhciB3PXRoaXMubm9kZXMsdj1BcnJheS5pc0FycmF5KHcpLHk9MCx3PXY/dzp3W1N5bWJvbC5pdGVyYXRvcl0oKTs7KXt2YXIgZDtpZih2KXtpZih5Pj13Lmxlbmd0aClicmVhaztkPXdbeSsrXX1lbHNle2lmKHk9dy5uZXh0KCkseS5kb25lKWJyZWFrO2Q9eS52YWx1ZX12YXIgXz1kO18ucGFyZW50PXZvaWQgMH1yZXR1cm4gdGhpcy5ub2Rlcz1bXSx0aGlzfSxsLnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbW92ZUFsbCgpfSxsLnByb3RvdHlwZS5pbnNlcnRBZnRlcj1mdW5jdGlvbih2LHkpe3ZhciB3PXRoaXMuaW5kZXgodik7dGhpcy5ub2Rlcy5zcGxpY2UodysxLDAseSk7dmFyIGQ9dm9pZCAwO2Zvcih2YXIgXyBpbiB0aGlzLmluZGV4ZXMpZD10aGlzLmluZGV4ZXNbX10sdzw9ZCYmKHRoaXMuaW5kZXhlc1tfXT1kK3RoaXMubm9kZXMubGVuZ3RoKTtyZXR1cm4gdGhpc30sbC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHYseSl7dmFyIHc9dGhpcy5pbmRleCh2KTt0aGlzLm5vZGVzLnNwbGljZSh3LDAseSk7dmFyIGQ9dm9pZCAwO2Zvcih2YXIgXyBpbiB0aGlzLmluZGV4ZXMpZD10aGlzLmluZGV4ZXNbX10sdzw9ZCYmKHRoaXMuaW5kZXhlc1tfXT1kK3RoaXMubm9kZXMubGVuZ3RoKTtyZXR1cm4gdGhpc30sbC5wcm90b3R5cGUuZWFjaD1mdW5jdGlvbih2KXt0aGlzLmxhc3RFYWNofHwodGhpcy5sYXN0RWFjaD0wKSx0aGlzLmluZGV4ZXN8fCh0aGlzLmluZGV4ZXM9e30pLHRoaXMubGFzdEVhY2grKzt2YXIgeT10aGlzLmxhc3RFYWNoO2lmKHRoaXMuaW5kZXhlc1t5XT0wLCEhdGhpcy5sZW5ndGgpe2Zvcih2YXIgdz12b2lkIDAsZD12b2lkIDA7dGhpcy5pbmRleGVzW3ldPHRoaXMubGVuZ3RoJiYodz10aGlzLmluZGV4ZXNbeV0sZD12KHRoaXMuYXQodyksdyksZCE9PSExKTspdGhpcy5pbmRleGVzW3ldKz0xO2lmKGRlbGV0ZSB0aGlzLmluZGV4ZXNbeV0sZD09PSExKXJldHVybiExfX0sbC5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHksdyl7dmFyIGQ9dih5LHcpO2lmKGQhPT0hMSYmeS5sZW5ndGgmJihkPXkud2Fsayh2KSksZD09PSExKXJldHVybiExfSl9LGwucHJvdG90eXBlLndhbGtBdHRyaWJ1dGVzPWZ1bmN0aW9uKHYpe3ZhciB5PXRoaXM7cmV0dXJuIHRoaXMud2FsayhmdW5jdGlvbih3KXtpZih3LnR5cGU9PT1wLkFUVFJJQlVURSlyZXR1cm4gdi5jYWxsKHksdyl9KX0sbC5wcm90b3R5cGUud2Fsa0NsYXNzZXM9ZnVuY3Rpb24odil7dmFyIHk9dGhpcztyZXR1cm4gdGhpcy53YWxrKGZ1bmN0aW9uKHcpe2lmKHcudHlwZT09PXAuQ0xBU1MpcmV0dXJuIHYuY2FsbCh5LHcpfSl9LGwucHJvdG90eXBlLndhbGtDb21iaW5hdG9ycz1mdW5jdGlvbih2KXt2YXIgeT10aGlzO3JldHVybiB0aGlzLndhbGsoZnVuY3Rpb24odyl7aWYody50eXBlPT09cC5DT01CSU5BVE9SKXJldHVybiB2LmNhbGwoeSx3KX0pfSxsLnByb3RvdHlwZS53YWxrQ29tbWVudHM9ZnVuY3Rpb24odil7dmFyIHk9dGhpcztyZXR1cm4gdGhpcy53YWxrKGZ1bmN0aW9uKHcpe2lmKHcudHlwZT09PXAuQ09NTUVOVClyZXR1cm4gdi5jYWxsKHksdyl9KX0sbC5wcm90b3R5cGUud2Fsa0lkcz1mdW5jdGlvbih2KXt2YXIgeT10aGlzO3JldHVybiB0aGlzLndhbGsoZnVuY3Rpb24odyl7aWYody50eXBlPT09cC5JRClyZXR1cm4gdi5jYWxsKHksdyl9KX0sbC5wcm90b3R5cGUud2Fsa05lc3Rpbmc9ZnVuY3Rpb24odil7dmFyIHk9dGhpcztyZXR1cm4gdGhpcy53YWxrKGZ1bmN0aW9uKHcpe2lmKHcudHlwZT09PXAuTkVTVElORylyZXR1cm4gdi5jYWxsKHksdyl9KX0sbC5wcm90b3R5cGUud2Fsa1BzZXVkb3M9ZnVuY3Rpb24odil7dmFyIHk9dGhpcztyZXR1cm4gdGhpcy53YWxrKGZ1bmN0aW9uKHcpe2lmKHcudHlwZT09PXAuUFNFVURPKXJldHVybiB2LmNhbGwoeSx3KX0pfSxsLnByb3RvdHlwZS53YWxrVGFncz1mdW5jdGlvbih2KXt2YXIgeT10aGlzO3JldHVybiB0aGlzLndhbGsoZnVuY3Rpb24odyl7aWYody50eXBlPT09cC5UQUcpcmV0dXJuIHYuY2FsbCh5LHcpfSl9LGwucHJvdG90eXBlLndhbGtVbml2ZXJzYWxzPWZ1bmN0aW9uKHYpe3ZhciB5PXRoaXM7cmV0dXJuIHRoaXMud2FsayhmdW5jdGlvbih3KXtpZih3LnR5cGU9PT1wLlVOSVZFUlNBTClyZXR1cm4gdi5jYWxsKHksdyl9KX0sbC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24odil7dmFyIHk9dGhpcyx3PVtdO3JldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbihkLF8sUyl7dmFyIHg9di5jYWxsKHksXyk7cmV0dXJuIHcucHVzaChfKSx4PyhkLnB1c2godyksdz1bXSk6Uz09PXkubGVuZ3RoLTEmJmQucHVzaCh3KSxkfSxbXSl9LGwucHJvdG90eXBlLm1hcD1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5ub2Rlcy5tYXAodil9LGwucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbih2LHkpe3JldHVybiB0aGlzLm5vZGVzLnJlZHVjZSh2LHkpfSxsLnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5ub2Rlcy5ldmVyeSh2KX0sbC5wcm90b3R5cGUuc29tZT1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5ub2Rlcy5zb21lKHYpfSxsLnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24odil7cmV0dXJuIHRoaXMubm9kZXMuZmlsdGVyKHYpfSxsLnByb3RvdHlwZS5zb3J0PWZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLm5vZGVzLnNvcnQodil9LGwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKFN0cmluZykuam9pbihcIlwiKX0saShsLFt7a2V5OlwiZmlyc3RcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdCgwKX19LHtrZXk6XCJsYXN0XCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXQodGhpcy5sZW5ndGgtMSl9fSx7a2V5OlwibGVuZ3RoXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZXMubGVuZ3RofX1dKSxsfShvLmRlZmF1bHQpO2UuZGVmYXVsdD11LG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksQW89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXIvZGlzdC9zZWxlY3RvcnMvcm9vdC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT1DdCgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5ST09ULHN9cmV0dXJuIHIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5yZWR1Y2UoZnVuY3Rpb24obCxtKXt2YXIgdj1TdHJpbmcobSk7cmV0dXJuIHY/bCt2K1wiLFwiOlwiXCJ9LFwiXCIpLnNsaWNlKDAsLTEpO3JldHVybiB0aGlzLnRyYWlsaW5nQ29tbWE/cytcIixcIjpzfSxyfShhLmRlZmF1bHQpO2UuZGVmYXVsdD1jLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksUG89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXIvZGlzdC9zZWxlY3RvcnMvc2VsZWN0b3IuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITA7dmFyIGk9Q3QoKSxhPWYoaSksbz1vZSgpO2Z1bmN0aW9uIGYodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWZ1bmN0aW9uIHAodCxyKXtpZighKHQgaW5zdGFuY2VvZiByKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGgodCxyKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIHImJih0eXBlb2Ygcj09XCJvYmplY3RcInx8dHlwZW9mIHI9PVwiZnVuY3Rpb25cIik/cjp0fWZ1bmN0aW9uIGcodCxyKXtpZih0eXBlb2YgciE9XCJmdW5jdGlvblwiJiZyIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2Ygcik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyJiZyLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksciYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxyKTp0Ll9fcHJvdG9fXz1yKX12YXIgYz1mdW5jdGlvbih0KXtnKHIsdCk7ZnVuY3Rpb24gcih1KXtwKHRoaXMscik7dmFyIHM9aCh0aGlzLHQuY2FsbCh0aGlzLHUpKTtyZXR1cm4gcy50eXBlPW8uU0VMRUNUT1Isc31yZXR1cm4gcn0oYS5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLFllPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL25hbWVzcGFjZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQocix1KXtmb3IodmFyIHM9MDtzPHUubGVuZ3RoO3MrKyl7dmFyIGw9dVtzXTtsLmVudW1lcmFibGU9bC5lbnVtZXJhYmxlfHwhMSxsLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBsJiYobC53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbC5rZXksbCl9fXJldHVybiBmdW5jdGlvbihyLHUscyl7cmV0dXJuIHUmJnQoci5wcm90b3R5cGUsdSkscyYmdChyLHMpLHJ9fSgpLGE9emUoKSxvPWYoYSk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKCl7cmV0dXJuIHAodGhpcyxyKSxoKHRoaXMsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiByLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblt0aGlzLnNwYWNlcy5iZWZvcmUsdGhpcy5ucyxTdHJpbmcodGhpcy52YWx1ZSksdGhpcy5zcGFjZXMuYWZ0ZXJdLmpvaW4oXCJcIil9LGkocixbe2tleTpcIm5zXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5uYW1lc3BhY2U7cmV0dXJuIHM/KHR5cGVvZiBzPT1cInN0cmluZ1wiP3M6XCJcIikrXCJ8XCI6XCJcIn19XSkscn0oby5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLFJvPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL2NsYXNzTmFtZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT1ZZSgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5DTEFTUyxzfXJldHVybiByLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblt0aGlzLnNwYWNlcy5iZWZvcmUsdGhpcy5ucyxTdHJpbmcoXCIuXCIrdGhpcy52YWx1ZSksdGhpcy5zcGFjZXMuYWZ0ZXJdLmpvaW4oXCJcIil9LHJ9KGEuZGVmYXVsdCk7ZS5kZWZhdWx0PWMsbi5leHBvcnRzPWUuZGVmYXVsdH19KSxJbz1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXNlbGVjdG9yLXBhcnNlci9kaXN0L3NlbGVjdG9ycy9jb21tZW50LmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwO3ZhciBpPXplKCksYT1mKGkpLG89b2UoKTtmdW5jdGlvbiBmKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBwKHQscil7aWYoISh0IGluc3RhbmNlb2YgcikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBoKHQscil7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiByJiYodHlwZW9mIHI9PVwib2JqZWN0XCJ8fHR5cGVvZiByPT1cImZ1bmN0aW9uXCIpP3I6dH1mdW5jdGlvbiBnKHQscil7aWYodHlwZW9mIHIhPVwiZnVuY3Rpb25cIiYmciE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUociYmci5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHImJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQscik6dC5fX3Byb3RvX189cil9dmFyIGM9ZnVuY3Rpb24odCl7ZyhyLHQpO2Z1bmN0aW9uIHIodSl7cCh0aGlzLHIpO3ZhciBzPWgodGhpcyx0LmNhbGwodGhpcyx1KSk7cmV0dXJuIHMudHlwZT1vLkNPTU1FTlQsc31yZXR1cm4gcn0oYS5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLENvPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL2lkLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwO3ZhciBpPVllKCksYT1mKGkpLG89b2UoKTtmdW5jdGlvbiBmKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBwKHQscil7aWYoISh0IGluc3RhbmNlb2YgcikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBoKHQscil7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiByJiYodHlwZW9mIHI9PVwib2JqZWN0XCJ8fHR5cGVvZiByPT1cImZ1bmN0aW9uXCIpP3I6dH1mdW5jdGlvbiBnKHQscil7aWYodHlwZW9mIHIhPVwiZnVuY3Rpb25cIiYmciE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUociYmci5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHImJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQscik6dC5fX3Byb3RvX189cil9dmFyIGM9ZnVuY3Rpb24odCl7ZyhyLHQpO2Z1bmN0aW9uIHIodSl7cCh0aGlzLHIpO3ZhciBzPWgodGhpcyx0LmNhbGwodGhpcyx1KSk7cmV0dXJuIHMudHlwZT1vLklELHN9cmV0dXJuIHIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuc3BhY2VzLmJlZm9yZSx0aGlzLm5zLFN0cmluZyhcIiNcIit0aGlzLnZhbHVlKSx0aGlzLnNwYWNlcy5hZnRlcl0uam9pbihcIlwiKX0scn0oYS5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLE5vPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL3RhZy5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT1ZZSgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5UQUcsc31yZXR1cm4gcn0oYS5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLGpvPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL3N0cmluZy5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT16ZSgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5TVFJJTkcsc31yZXR1cm4gcn0oYS5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLE1vPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL3BzZXVkby5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT1DdCgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5QU0VVRE8sc31yZXR1cm4gci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgcz10aGlzLmxlbmd0aD9cIihcIit0aGlzLm1hcChTdHJpbmcpLmpvaW4oXCIsXCIpK1wiKVwiOlwiXCI7cmV0dXJuW3RoaXMuc3BhY2VzLmJlZm9yZSxTdHJpbmcodGhpcy52YWx1ZSkscyx0aGlzLnNwYWNlcy5hZnRlcl0uam9pbihcIlwiKX0scn0oYS5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLERvPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL2F0dHJpYnV0ZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT1ZZSgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5BVFRSSUJVVEUscy5yYXdzPXt9LHN9cmV0dXJuIHIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHM9W3RoaXMuc3BhY2VzLmJlZm9yZSxcIltcIix0aGlzLm5zLHRoaXMuYXR0cmlidXRlXTtyZXR1cm4gdGhpcy5vcGVyYXRvciYmcy5wdXNoKHRoaXMub3BlcmF0b3IpLHRoaXMudmFsdWUmJnMucHVzaCh0aGlzLnZhbHVlKSx0aGlzLnJhd3MuaW5zZW5zaXRpdmU/cy5wdXNoKHRoaXMucmF3cy5pbnNlbnNpdGl2ZSk6dGhpcy5pbnNlbnNpdGl2ZSYmcy5wdXNoKFwiIGlcIikscy5wdXNoKFwiXVwiKSxzLmNvbmNhdCh0aGlzLnNwYWNlcy5hZnRlcikuam9pbihcIlwiKX0scn0oYS5kZWZhdWx0KTtlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLExvPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3Qvc2VsZWN0b3JzL3VuaXZlcnNhbC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT1ZZSgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5VTklWRVJTQUwscy52YWx1ZT1cIipcIixzfXJldHVybiByfShhLmRlZmF1bHQpO2UuZGVmYXVsdD1jLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksem89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXIvZGlzdC9zZWxlY3RvcnMvY29tYmluYXRvci5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMDt2YXIgaT16ZSgpLGE9ZihpKSxvPW9lKCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gcCh0LHIpe2lmKCEodCBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaCh0LHIpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gciYmKHR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKT9yOnR9ZnVuY3Rpb24gZyh0LHIpe2lmKHR5cGVvZiByIT1cImZ1bmN0aW9uXCImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiByKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHImJnIucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHIpOnQuX19wcm90b19fPXIpfXZhciBjPWZ1bmN0aW9uKHQpe2cocix0KTtmdW5jdGlvbiByKHUpe3AodGhpcyxyKTt2YXIgcz1oKHRoaXMsdC5jYWxsKHRoaXMsdSkpO3JldHVybiBzLnR5cGU9by5DT01CSU5BVE9SLHN9cmV0dXJuIHJ9KGEuZGVmYXVsdCk7ZS5kZWZhdWx0PWMsbi5leHBvcnRzPWUuZGVmYXVsdH19KSxCbz1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXNlbGVjdG9yLXBhcnNlci9kaXN0L3NlbGVjdG9ycy9uZXN0aW5nLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwO3ZhciBpPXplKCksYT1mKGkpLG89b2UoKTtmdW5jdGlvbiBmKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBwKHQscil7aWYoISh0IGluc3RhbmNlb2YgcikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBoKHQscil7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiByJiYodHlwZW9mIHI9PVwib2JqZWN0XCJ8fHR5cGVvZiByPT1cImZ1bmN0aW9uXCIpP3I6dH1mdW5jdGlvbiBnKHQscil7aWYodHlwZW9mIHIhPVwiZnVuY3Rpb25cIiYmciE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUociYmci5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHImJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQscik6dC5fX3Byb3RvX189cil9dmFyIGM9ZnVuY3Rpb24odCl7ZyhyLHQpO2Z1bmN0aW9uIHIodSl7cCh0aGlzLHIpO3ZhciBzPWgodGhpcyx0LmNhbGwodGhpcyx1KSk7cmV0dXJuIHMudHlwZT1vLk5FU1RJTkcscy52YWx1ZT1cIiZcIixzfXJldHVybiByfShhLmRlZmF1bHQpO2UuZGVmYXVsdD1jLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksZmY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXIvZGlzdC9zb3J0QXNjZW5kaW5nLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwLGUuZGVmYXVsdD1pO2Z1bmN0aW9uIGkoYSl7cmV0dXJuIGEuc29ydChmdW5jdGlvbihvLGYpe3JldHVybiBvLWZ9KX1uLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLHBmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3QvdG9rZW5pemUuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITAsZS5kZWZhdWx0PUg7dmFyIGk9MzksYT0zNCxvPTkyLGY9NDcscD0xMCxoPTMyLGc9MTIsYz05LHQ9MTMscj00Myx1PTYyLHM9MTI2LGw9MTI0LG09NDQsdj00MCx5PTQxLHc9OTEsZD05MyxfPTU5LFM9NDIseD01OCxOPTM4LFA9NjQsVz0vWyBcXG5cXHRcXHJcXHtcXChcXCknXCJcXFxcOy9dL2csVT0vWyBcXG5cXHRcXHJcXChcXClcXCo6O0AhJidcIlxcK1xcfH4+LFxcW1xcXVxcXFxdfFxcLyg/PVxcKikvZztmdW5jdGlvbiBIKEQpe2Zvcih2YXIgJD1bXSxCPUQuY3NzLnZhbHVlT2YoKSxPPXZvaWQgMCxqPXZvaWQgMCxDPXZvaWQgMCxJPXZvaWQgMCxYPXZvaWQgMCxaPXZvaWQgMCxRPXZvaWQgMCxLPXZvaWQgMCxKPXZvaWQgMCxNPXZvaWQgMCxZPXZvaWQgMCxHPUIubGVuZ3RoLEU9LTEsaz0xLGI9MCxMPWZ1bmN0aW9uKFQsRil7aWYoRC5zYWZlKUIrPUYsaj1CLmxlbmd0aC0xO2Vsc2UgdGhyb3cgRC5lcnJvcihcIlVuY2xvc2VkIFwiK1QsayxiLUUsYil9O2I8Rzspe3N3aXRjaChPPUIuY2hhckNvZGVBdChiKSxPPT09cCYmKEU9YixrKz0xKSxPKXtjYXNlIHA6Y2FzZSBoOmNhc2UgYzpjYXNlIHQ6Y2FzZSBnOmo9YjtkbyBqKz0xLE89Qi5jaGFyQ29kZUF0KGopLE89PT1wJiYoRT1qLGsrPTEpO3doaWxlKE89PT1ofHxPPT09cHx8Tz09PWN8fE89PT10fHxPPT09Zyk7JC5wdXNoKFtcInNwYWNlXCIsQi5zbGljZShiLGopLGssYi1FLGJdKSxiPWotMTticmVhaztjYXNlIHI6Y2FzZSB1OmNhc2UgczpjYXNlIGw6aj1iO2RvIGorPTEsTz1CLmNoYXJDb2RlQXQoaik7d2hpbGUoTz09PXJ8fE89PT11fHxPPT09c3x8Tz09PWwpOyQucHVzaChbXCJjb21iaW5hdG9yXCIsQi5zbGljZShiLGopLGssYi1FLGJdKSxiPWotMTticmVhaztjYXNlIFM6JC5wdXNoKFtcIipcIixcIipcIixrLGItRSxiXSk7YnJlYWs7Y2FzZSBOOiQucHVzaChbXCImXCIsXCImXCIsayxiLUUsYl0pO2JyZWFrO2Nhc2UgbTokLnB1c2goW1wiLFwiLFwiLFwiLGssYi1FLGJdKTticmVhaztjYXNlIHc6JC5wdXNoKFtcIltcIixcIltcIixrLGItRSxiXSk7YnJlYWs7Y2FzZSBkOiQucHVzaChbXCJdXCIsXCJdXCIsayxiLUUsYl0pO2JyZWFrO2Nhc2UgeDokLnB1c2goW1wiOlwiLFwiOlwiLGssYi1FLGJdKTticmVhaztjYXNlIF86JC5wdXNoKFtcIjtcIixcIjtcIixrLGItRSxiXSk7YnJlYWs7Y2FzZSB2OiQucHVzaChbXCIoXCIsXCIoXCIsayxiLUUsYl0pO2JyZWFrO2Nhc2UgeTokLnB1c2goW1wiKVwiLFwiKVwiLGssYi1FLGJdKTticmVhaztjYXNlIGk6Y2FzZSBhOkM9Tz09PWk/XCInXCI6J1wiJyxqPWI7ZG8gZm9yKE09ITEsaj1CLmluZGV4T2YoQyxqKzEpLGo9PT0tMSYmTChcInF1b3RlXCIsQyksWT1qO0IuY2hhckNvZGVBdChZLTEpPT09bzspWS09MSxNPSFNO3doaWxlKE0pOyQucHVzaChbXCJzdHJpbmdcIixCLnNsaWNlKGIsaisxKSxrLGItRSxrLGotRSxiXSksYj1qO2JyZWFrO2Nhc2UgUDpXLmxhc3RJbmRleD1iKzEsVy50ZXN0KEIpLFcubGFzdEluZGV4PT09MD9qPUIubGVuZ3RoLTE6aj1XLmxhc3RJbmRleC0yLCQucHVzaChbXCJhdC13b3JkXCIsQi5zbGljZShiLGorMSksayxiLUUsayxqLUUsYl0pLGI9ajticmVhaztjYXNlIG86Zm9yKGo9YixRPSEwO0IuY2hhckNvZGVBdChqKzEpPT09bzspais9MSxRPSFRO089Qi5jaGFyQ29kZUF0KGorMSksUSYmTyE9PWYmJk8hPT1oJiZPIT09cCYmTyE9PWMmJk8hPT10JiZPIT09ZyYmKGorPTEpLCQucHVzaChbXCJ3b3JkXCIsQi5zbGljZShiLGorMSksayxiLUUsayxqLUUsYl0pLGI9ajticmVhaztkZWZhdWx0Ok89PT1mJiZCLmNoYXJDb2RlQXQoYisxKT09PVM/KGo9Qi5pbmRleE9mKFwiKi9cIixiKzIpKzEsaj09PTAmJkwoXCJjb21tZW50XCIsXCIqL1wiKSxaPUIuc2xpY2UoYixqKzEpLEk9Wi5zcGxpdChgXG5gKSxYPUkubGVuZ3RoLTEsWD4wPyhLPWsrWCxKPWotSVtYXS5sZW5ndGgpOihLPWssSj1FKSwkLnB1c2goW1wiY29tbWVudFwiLFosayxiLUUsSyxqLUosYl0pLEU9SixrPUssYj1qKTooVS5sYXN0SW5kZXg9YisxLFUudGVzdChCKSxVLmxhc3RJbmRleD09PTA/aj1CLmxlbmd0aC0xOmo9VS5sYXN0SW5kZXgtMiwkLnB1c2goW1wid29yZFwiLEIuc2xpY2UoYixqKzEpLGssYi1FLGssai1FLGJdKSxiPWopO2JyZWFrfWIrK31yZXR1cm4gJH1uLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLGhmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3QvcGFyc2VyLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRShrLGIpe2Zvcih2YXIgTD0wO0w8Yi5sZW5ndGg7TCsrKXt2YXIgcT1iW0xdO3EuZW51bWVyYWJsZT1xLmVudW1lcmFibGV8fCExLHEuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHEmJihxLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoayxxLmtleSxxKX19cmV0dXJuIGZ1bmN0aW9uKGssYixMKXtyZXR1cm4gYiYmRShrLnByb3RvdHlwZSxiKSxMJiZFKGssTCksa319KCksYT1UbygpLG89TShhKSxmPUVvKCkscD1NKGYpLGg9cW8oKSxnPU0oaCksYz1BbygpLHQ9TShjKSxyPVBvKCksdT1NKHIpLHM9Um8oKSxsPU0ocyksbT1JbygpLHY9TShtKSx5PUNvKCksdz1NKHkpLGQ9Tm8oKSxfPU0oZCksUz1qbygpLHg9TShTKSxOPU1vKCksUD1NKE4pLFc9RG8oKSxVPU0oVyksSD1MbygpLEQ9TShIKSwkPXpvKCksQj1NKCQpLE89Qm8oKSxqPU0oTyksQz1mZigpLEk9TShDKSxYPXBmKCksWj1NKFgpLFE9b2UoKSxLPUooUSk7ZnVuY3Rpb24gSihFKXtpZihFJiZFLl9fZXNNb2R1bGUpcmV0dXJuIEU7dmFyIGs9e307aWYoRSE9bnVsbClmb3IodmFyIGIgaW4gRSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRSxiKSYmKGtbYl09RVtiXSk7cmV0dXJuIGsuZGVmYXVsdD1FLGt9ZnVuY3Rpb24gTShFKXtyZXR1cm4gRSYmRS5fX2VzTW9kdWxlP0U6e2RlZmF1bHQ6RX19ZnVuY3Rpb24gWShFLGspe2lmKCEoRSBpbnN0YW5jZW9mIGspKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9dmFyIEc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBFKGspe1kodGhpcyxFKSx0aGlzLmlucHV0PWssdGhpcy5sb3NzeT1rLm9wdGlvbnMubG9zc2xlc3M9PT0hMSx0aGlzLnBvc2l0aW9uPTAsdGhpcy5yb290PW5ldyB0LmRlZmF1bHQ7dmFyIGI9bmV3IHUuZGVmYXVsdDtyZXR1cm4gdGhpcy5yb290LmFwcGVuZChiKSx0aGlzLmN1cnJlbnQ9Yix0aGlzLmxvc3N5P3RoaXMudG9rZW5zPSgwLFouZGVmYXVsdCkoe3NhZmU6ay5zYWZlLGNzczprLmNzcy50cmltKCl9KTp0aGlzLnRva2Vucz0oMCxaLmRlZmF1bHQpKGspLHRoaXMubG9vcCgpfXJldHVybiBFLnByb3RvdHlwZS5hdHRyaWJ1dGU9ZnVuY3Rpb24oKXt2YXIgYj1cIlwiLEw9dm9pZCAwLHE9dGhpcy5jdXJyVG9rZW47Zm9yKHRoaXMucG9zaXRpb24rKzt0aGlzLnBvc2l0aW9uPHRoaXMudG9rZW5zLmxlbmd0aCYmdGhpcy5jdXJyVG9rZW5bMF0hPT1cIl1cIjspYis9dGhpcy50b2tlbnNbdGhpcy5wb3NpdGlvbl1bMV0sdGhpcy5wb3NpdGlvbisrO3RoaXMucG9zaXRpb249PT10aGlzLnRva2Vucy5sZW5ndGgmJiF+Yi5pbmRleE9mKFwiXVwiKSYmdGhpcy5lcnJvcihcIkV4cGVjdGVkIGEgY2xvc2luZyBzcXVhcmUgYnJhY2tldC5cIik7dmFyIFQ9Yi5zcGxpdCgvKCg/Olsqfl4kfF0/PSkpKFteXSopLyksRj1UWzBdLnNwbGl0KC8oXFx8KS9nKSx6PXtvcGVyYXRvcjpUWzFdLHZhbHVlOlRbMl0sc291cmNlOntzdGFydDp7bGluZTpxWzJdLGNvbHVtbjpxWzNdfSxlbmQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdfX0sc291cmNlSW5kZXg6cVs0XX07aWYoRi5sZW5ndGg+MT8oRlswXT09PVwiXCImJihGWzBdPSEwKSx6LmF0dHJpYnV0ZT10aGlzLnBhcnNlVmFsdWUoRlsyXSksei5uYW1lc3BhY2U9dGhpcy5wYXJzZU5hbWVzcGFjZShGWzBdKSk6ei5hdHRyaWJ1dGU9dGhpcy5wYXJzZVZhbHVlKFRbMF0pLEw9bmV3IFUuZGVmYXVsdCh6KSxUWzJdKXt2YXIgcmU9VFsyXS5zcGxpdCgvKFxccytpXFxzKj8pJC8pLG5lPXJlWzBdLnRyaW0oKTtMLnZhbHVlPXRoaXMubG9zc3k/bmU6cmVbMF0scmVbMV0mJihMLmluc2Vuc2l0aXZlPSEwLHRoaXMubG9zc3l8fChMLnJhd3MuaW5zZW5zaXRpdmU9cmVbMV0pKSxMLnF1b3RlZD1uZVswXT09PVwiJ1wifHxuZVswXT09PSdcIicsTC5yYXdzLnVucXVvdGVkPUwucXVvdGVkP25lLnNsaWNlKDEsLTEpOm5lfXRoaXMubmV3Tm9kZShMKSx0aGlzLnBvc2l0aW9uKyt9LEUucHJvdG90eXBlLmNvbWJpbmF0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLmN1cnJUb2tlblsxXT09PVwifFwiKXJldHVybiB0aGlzLm5hbWVzcGFjZSgpO2Zvcih2YXIgYj1uZXcgQi5kZWZhdWx0KHt2YWx1ZTpcIlwiLHNvdXJjZTp7c3RhcnQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdfSxlbmQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdfX0sc291cmNlSW5kZXg6dGhpcy5jdXJyVG9rZW5bNF19KTt0aGlzLnBvc2l0aW9uPHRoaXMudG9rZW5zLmxlbmd0aCYmdGhpcy5jdXJyVG9rZW4mJih0aGlzLmN1cnJUb2tlblswXT09PVwic3BhY2VcInx8dGhpcy5jdXJyVG9rZW5bMF09PT1cImNvbWJpbmF0b3JcIik7KXRoaXMubmV4dFRva2VuJiZ0aGlzLm5leHRUb2tlblswXT09PVwiY29tYmluYXRvclwiPyhiLnNwYWNlcy5iZWZvcmU9dGhpcy5wYXJzZVNwYWNlKHRoaXMuY3VyclRva2VuWzFdKSxiLnNvdXJjZS5zdGFydC5saW5lPXRoaXMubmV4dFRva2VuWzJdLGIuc291cmNlLnN0YXJ0LmNvbHVtbj10aGlzLm5leHRUb2tlblszXSxiLnNvdXJjZS5lbmQuY29sdW1uPXRoaXMubmV4dFRva2VuWzNdLGIuc291cmNlLmVuZC5saW5lPXRoaXMubmV4dFRva2VuWzJdLGIuc291cmNlSW5kZXg9dGhpcy5uZXh0VG9rZW5bNF0pOnRoaXMucHJldlRva2VuJiZ0aGlzLnByZXZUb2tlblswXT09PVwiY29tYmluYXRvclwiP2Iuc3BhY2VzLmFmdGVyPXRoaXMucGFyc2VTcGFjZSh0aGlzLmN1cnJUb2tlblsxXSk6dGhpcy5jdXJyVG9rZW5bMF09PT1cImNvbWJpbmF0b3JcIj9iLnZhbHVlPXRoaXMuY3VyclRva2VuWzFdOnRoaXMuY3VyclRva2VuWzBdPT09XCJzcGFjZVwiJiYoYi52YWx1ZT10aGlzLnBhcnNlU3BhY2UodGhpcy5jdXJyVG9rZW5bMV0sXCIgXCIpKSx0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMubmV3Tm9kZShiKX0sRS5wcm90b3R5cGUuY29tbWE9ZnVuY3Rpb24oKXtpZih0aGlzLnBvc2l0aW9uPT09dGhpcy50b2tlbnMubGVuZ3RoLTEpe3RoaXMucm9vdC50cmFpbGluZ0NvbW1hPSEwLHRoaXMucG9zaXRpb24rKztyZXR1cm59dmFyIGI9bmV3IHUuZGVmYXVsdDt0aGlzLmN1cnJlbnQucGFyZW50LmFwcGVuZChiKSx0aGlzLmN1cnJlbnQ9Yix0aGlzLnBvc2l0aW9uKyt9LEUucHJvdG90eXBlLmNvbW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgdi5kZWZhdWx0KHt2YWx1ZTp0aGlzLmN1cnJUb2tlblsxXSxzb3VyY2U6e3N0YXJ0OntsaW5lOnRoaXMuY3VyclRva2VuWzJdLGNvbHVtbjp0aGlzLmN1cnJUb2tlblszXX0sZW5kOntsaW5lOnRoaXMuY3VyclRva2VuWzRdLGNvbHVtbjp0aGlzLmN1cnJUb2tlbls1XX19LHNvdXJjZUluZGV4OnRoaXMuY3VyclRva2VuWzZdfSk7dGhpcy5uZXdOb2RlKGIpLHRoaXMucG9zaXRpb24rK30sRS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oYil7dGhyb3cgbmV3IHRoaXMuaW5wdXQuZXJyb3IoYil9LEUucHJvdG90eXBlLm1pc3NpbmdCYWNrc2xhc2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcihcIkV4cGVjdGVkIGEgYmFja3NsYXNoIHByZWNlZGluZyB0aGUgc2VtaWNvbG9uLlwiKX0sRS5wcm90b3R5cGUubWlzc2luZ1BhcmVudGhlc2lzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3IoXCJFeHBlY3RlZCBvcGVuaW5nIHBhcmVudGhlc2lzLlwiKX0sRS5wcm90b3R5cGUubWlzc2luZ1NxdWFyZUJyYWNrZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcihcIkV4cGVjdGVkIG9wZW5pbmcgc3F1YXJlIGJyYWNrZXQuXCIpfSxFLnByb3RvdHlwZS5uYW1lc3BhY2U9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnByZXZUb2tlbiYmdGhpcy5wcmV2VG9rZW5bMV18fCEwO2lmKHRoaXMubmV4dFRva2VuWzBdPT09XCJ3b3JkXCIpcmV0dXJuIHRoaXMucG9zaXRpb24rKyx0aGlzLndvcmQoYik7aWYodGhpcy5uZXh0VG9rZW5bMF09PT1cIipcIilyZXR1cm4gdGhpcy5wb3NpdGlvbisrLHRoaXMudW5pdmVyc2FsKGIpfSxFLnByb3RvdHlwZS5uZXN0aW5nPWZ1bmN0aW9uKCl7dGhpcy5uZXdOb2RlKG5ldyBqLmRlZmF1bHQoe3ZhbHVlOnRoaXMuY3VyclRva2VuWzFdLHNvdXJjZTp7c3RhcnQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdfSxlbmQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdfX0sc291cmNlSW5kZXg6dGhpcy5jdXJyVG9rZW5bNF19KSksdGhpcy5wb3NpdGlvbisrfSxFLnByb3RvdHlwZS5wYXJlbnRoZXNlcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY3VycmVudC5sYXN0O2lmKGImJmIudHlwZT09PUsuUFNFVURPKXt2YXIgTD1uZXcgdS5kZWZhdWx0LHE9dGhpcy5jdXJyZW50O2IuYXBwZW5kKEwpLHRoaXMuY3VycmVudD1MO3ZhciBUPTE7Zm9yKHRoaXMucG9zaXRpb24rKzt0aGlzLnBvc2l0aW9uPHRoaXMudG9rZW5zLmxlbmd0aCYmVDspdGhpcy5jdXJyVG9rZW5bMF09PT1cIihcIiYmVCsrLHRoaXMuY3VyclRva2VuWzBdPT09XCIpXCImJlQtLSxUP3RoaXMucGFyc2UoKTooTC5wYXJlbnQuc291cmNlLmVuZC5saW5lPXRoaXMuY3VyclRva2VuWzJdLEwucGFyZW50LnNvdXJjZS5lbmQuY29sdW1uPXRoaXMuY3VyclRva2VuWzNdLHRoaXMucG9zaXRpb24rKyk7VCYmdGhpcy5lcnJvcihcIkV4cGVjdGVkIGNsb3NpbmcgcGFyZW50aGVzaXMuXCIpLHRoaXMuY3VycmVudD1xfWVsc2V7dmFyIEY9MTtmb3IodGhpcy5wb3NpdGlvbisrLGIudmFsdWUrPVwiKFwiO3RoaXMucG9zaXRpb248dGhpcy50b2tlbnMubGVuZ3RoJiZGOyl0aGlzLmN1cnJUb2tlblswXT09PVwiKFwiJiZGKyssdGhpcy5jdXJyVG9rZW5bMF09PT1cIilcIiYmRi0tLGIudmFsdWUrPXRoaXMucGFyc2VQYXJlbnRoZXNpc1Rva2VuKHRoaXMuY3VyclRva2VuKSx0aGlzLnBvc2l0aW9uKys7RiYmdGhpcy5lcnJvcihcIkV4cGVjdGVkIGNsb3NpbmcgcGFyZW50aGVzaXMuXCIpfX0sRS5wcm90b3R5cGUucHNldWRvPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPXRoaXMsTD1cIlwiLHE9dGhpcy5jdXJyVG9rZW47dGhpcy5jdXJyVG9rZW4mJnRoaXMuY3VyclRva2VuWzBdPT09XCI6XCI7KUwrPXRoaXMuY3VyclRva2VuWzFdLHRoaXMucG9zaXRpb24rKztpZighdGhpcy5jdXJyVG9rZW4pcmV0dXJuIHRoaXMuZXJyb3IoXCJFeHBlY3RlZCBwc2V1ZG8tY2xhc3Mgb3IgcHNldWRvLWVsZW1lbnRcIik7aWYodGhpcy5jdXJyVG9rZW5bMF09PT1cIndvcmRcIil7dmFyIFQ9dm9pZCAwO3RoaXMuc3BsaXRXb3JkKCExLGZ1bmN0aW9uKEYseil7TCs9RixUPW5ldyBQLmRlZmF1bHQoe3ZhbHVlOkwsc291cmNlOntzdGFydDp7bGluZTpxWzJdLGNvbHVtbjpxWzNdfSxlbmQ6e2xpbmU6Yi5jdXJyVG9rZW5bNF0sY29sdW1uOmIuY3VyclRva2VuWzVdfX0sc291cmNlSW5kZXg6cVs0XX0pLGIubmV3Tm9kZShUKSx6PjEmJmIubmV4dFRva2VuJiZiLm5leHRUb2tlblswXT09PVwiKFwiJiZiLmVycm9yKFwiTWlzcGxhY2VkIHBhcmVudGhlc2lzLlwiKX0pfWVsc2UgdGhpcy5lcnJvcignVW5leHBlY3RlZCBcIicrdGhpcy5jdXJyVG9rZW5bMF0rJ1wiIGZvdW5kLicpfSxFLnByb3RvdHlwZS5zcGFjZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY3VyclRva2VuO3RoaXMucG9zaXRpb249PT0wfHx0aGlzLnByZXZUb2tlblswXT09PVwiLFwifHx0aGlzLnByZXZUb2tlblswXT09PVwiKFwiPyh0aGlzLnNwYWNlcz10aGlzLnBhcnNlU3BhY2UoYlsxXSksdGhpcy5wb3NpdGlvbisrKTp0aGlzLnBvc2l0aW9uPT09dGhpcy50b2tlbnMubGVuZ3RoLTF8fHRoaXMubmV4dFRva2VuWzBdPT09XCIsXCJ8fHRoaXMubmV4dFRva2VuWzBdPT09XCIpXCI/KHRoaXMuY3VycmVudC5sYXN0LnNwYWNlcy5hZnRlcj10aGlzLnBhcnNlU3BhY2UoYlsxXSksdGhpcy5wb3NpdGlvbisrKTp0aGlzLmNvbWJpbmF0b3IoKX0sRS5wcm90b3R5cGUuc3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jdXJyVG9rZW47dGhpcy5uZXdOb2RlKG5ldyB4LmRlZmF1bHQoe3ZhbHVlOnRoaXMuY3VyclRva2VuWzFdLHNvdXJjZTp7c3RhcnQ6e2xpbmU6YlsyXSxjb2x1bW46YlszXX0sZW5kOntsaW5lOmJbNF0sY29sdW1uOmJbNV19fSxzb3VyY2VJbmRleDpiWzZdfSkpLHRoaXMucG9zaXRpb24rK30sRS5wcm90b3R5cGUudW5pdmVyc2FsPWZ1bmN0aW9uKGIpe3ZhciBMPXRoaXMubmV4dFRva2VuO2lmKEwmJkxbMV09PT1cInxcIilyZXR1cm4gdGhpcy5wb3NpdGlvbisrLHRoaXMubmFtZXNwYWNlKCk7dGhpcy5uZXdOb2RlKG5ldyBELmRlZmF1bHQoe3ZhbHVlOnRoaXMuY3VyclRva2VuWzFdLHNvdXJjZTp7c3RhcnQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdfSxlbmQ6e2xpbmU6dGhpcy5jdXJyVG9rZW5bMl0sY29sdW1uOnRoaXMuY3VyclRva2VuWzNdfX0sc291cmNlSW5kZXg6dGhpcy5jdXJyVG9rZW5bNF19KSxiKSx0aGlzLnBvc2l0aW9uKyt9LEUucHJvdG90eXBlLnNwbGl0V29yZD1mdW5jdGlvbihiLEwpe2Zvcih2YXIgcT10aGlzLFQ9dGhpcy5uZXh0VG9rZW4sRj10aGlzLmN1cnJUb2tlblsxXTtUJiZUWzBdPT09XCJ3b3JkXCI7KXt0aGlzLnBvc2l0aW9uKys7dmFyIHo9dGhpcy5jdXJyVG9rZW5bMV07aWYoRis9eix6Lmxhc3RJbmRleE9mKFwiXFxcXFwiKT09PXoubGVuZ3RoLTEpe3ZhciByZT10aGlzLm5leHRUb2tlbjtyZSYmcmVbMF09PT1cInNwYWNlXCImJihGKz10aGlzLnBhcnNlU3BhY2UocmVbMV0sXCIgXCIpLHRoaXMucG9zaXRpb24rKyl9VD10aGlzLm5leHRUb2tlbn12YXIgbmU9KDAscC5kZWZhdWx0KShGLFwiLlwiKSxjZT0oMCxwLmRlZmF1bHQpKEYsXCIjXCIpLGZlPSgwLHAuZGVmYXVsdCkoRixcIiN7XCIpO2ZlLmxlbmd0aCYmKGNlPWNlLmZpbHRlcihmdW5jdGlvbihpZSl7cmV0dXJuIX5mZS5pbmRleE9mKGllKX0pKTt2YXIgdGU9KDAsSS5kZWZhdWx0KSgoMCxnLmRlZmF1bHQpKCgwLG8uZGVmYXVsdCkoW1swXSxuZSxjZV0pKSk7dGUuZm9yRWFjaChmdW5jdGlvbihpZSxhZSl7dmFyIHNlPXRlW2FlKzFdfHxGLmxlbmd0aCxsZT1GLnNsaWNlKGllLHNlKTtpZihhZT09PTAmJkwpcmV0dXJuIEwuY2FsbChxLGxlLHRlLmxlbmd0aCk7dmFyIHBlPXZvaWQgMDt+bmUuaW5kZXhPZihpZSk/cGU9bmV3IGwuZGVmYXVsdCh7dmFsdWU6bGUuc2xpY2UoMSksc291cmNlOntzdGFydDp7bGluZTpxLmN1cnJUb2tlblsyXSxjb2x1bW46cS5jdXJyVG9rZW5bM10raWV9LGVuZDp7bGluZTpxLmN1cnJUb2tlbls0XSxjb2x1bW46cS5jdXJyVG9rZW5bM10rKHNlLTEpfX0sc291cmNlSW5kZXg6cS5jdXJyVG9rZW5bNl0rdGVbYWVdfSk6fmNlLmluZGV4T2YoaWUpP3BlPW5ldyB3LmRlZmF1bHQoe3ZhbHVlOmxlLnNsaWNlKDEpLHNvdXJjZTp7c3RhcnQ6e2xpbmU6cS5jdXJyVG9rZW5bMl0sY29sdW1uOnEuY3VyclRva2VuWzNdK2llfSxlbmQ6e2xpbmU6cS5jdXJyVG9rZW5bNF0sY29sdW1uOnEuY3VyclRva2VuWzNdKyhzZS0xKX19LHNvdXJjZUluZGV4OnEuY3VyclRva2VuWzZdK3RlW2FlXX0pOnBlPW5ldyBfLmRlZmF1bHQoe3ZhbHVlOmxlLHNvdXJjZTp7c3RhcnQ6e2xpbmU6cS5jdXJyVG9rZW5bMl0sY29sdW1uOnEuY3VyclRva2VuWzNdK2llfSxlbmQ6e2xpbmU6cS5jdXJyVG9rZW5bNF0sY29sdW1uOnEuY3VyclRva2VuWzNdKyhzZS0xKX19LHNvdXJjZUluZGV4OnEuY3VyclRva2VuWzZdK3RlW2FlXX0pLHEubmV3Tm9kZShwZSxiKX0pLHRoaXMucG9zaXRpb24rK30sRS5wcm90b3R5cGUud29yZD1mdW5jdGlvbihiKXt2YXIgTD10aGlzLm5leHRUb2tlbjtyZXR1cm4gTCYmTFsxXT09PVwifFwiPyh0aGlzLnBvc2l0aW9uKyssdGhpcy5uYW1lc3BhY2UoKSk6dGhpcy5zcGxpdFdvcmQoYil9LEUucHJvdG90eXBlLmxvb3A9ZnVuY3Rpb24oKXtmb3IoO3RoaXMucG9zaXRpb248dGhpcy50b2tlbnMubGVuZ3RoOyl0aGlzLnBhcnNlKCEwKTtyZXR1cm4gdGhpcy5yb290fSxFLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihiKXtzd2l0Y2godGhpcy5jdXJyVG9rZW5bMF0pe2Nhc2VcInNwYWNlXCI6dGhpcy5zcGFjZSgpO2JyZWFrO2Nhc2VcImNvbW1lbnRcIjp0aGlzLmNvbW1lbnQoKTticmVhaztjYXNlXCIoXCI6dGhpcy5wYXJlbnRoZXNlcygpO2JyZWFrO2Nhc2VcIilcIjpiJiZ0aGlzLm1pc3NpbmdQYXJlbnRoZXNpcygpO2JyZWFrO2Nhc2VcIltcIjp0aGlzLmF0dHJpYnV0ZSgpO2JyZWFrO2Nhc2VcIl1cIjp0aGlzLm1pc3NpbmdTcXVhcmVCcmFja2V0KCk7YnJlYWs7Y2FzZVwiYXQtd29yZFwiOmNhc2VcIndvcmRcIjp0aGlzLndvcmQoKTticmVhaztjYXNlXCI6XCI6dGhpcy5wc2V1ZG8oKTticmVhaztjYXNlXCI7XCI6dGhpcy5taXNzaW5nQmFja3NsYXNoKCk7YnJlYWs7Y2FzZVwiLFwiOnRoaXMuY29tbWEoKTticmVhaztjYXNlXCIqXCI6dGhpcy51bml2ZXJzYWwoKTticmVhaztjYXNlXCImXCI6dGhpcy5uZXN0aW5nKCk7YnJlYWs7Y2FzZVwiY29tYmluYXRvclwiOnRoaXMuY29tYmluYXRvcigpO2JyZWFrO2Nhc2VcInN0cmluZ1wiOnRoaXMuc3RyaW5nKCk7YnJlYWt9fSxFLnByb3RvdHlwZS5wYXJzZU5hbWVzcGFjZT1mdW5jdGlvbihiKXtpZih0aGlzLmxvc3N5JiZ0eXBlb2YgYj09XCJzdHJpbmdcIil7dmFyIEw9Yi50cmltKCk7cmV0dXJuIEwubGVuZ3RoP0w6ITB9cmV0dXJuIGJ9LEUucHJvdG90eXBlLnBhcnNlU3BhY2U9ZnVuY3Rpb24oYixMKXtyZXR1cm4gdGhpcy5sb3NzeT9MfHxcIlwiOmJ9LEUucHJvdG90eXBlLnBhcnNlVmFsdWU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubG9zc3kmJmImJnR5cGVvZiBiPT1cInN0cmluZ1wiP2IudHJpbSgpOmJ9LEUucHJvdG90eXBlLnBhcnNlUGFyZW50aGVzaXNUb2tlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sb3NzeT9iWzBdPT09XCJzcGFjZVwiP3RoaXMucGFyc2VTcGFjZShiWzFdLFwiIFwiKTp0aGlzLnBhcnNlVmFsdWUoYlsxXSk6YlsxXX0sRS5wcm90b3R5cGUubmV3Tm9kZT1mdW5jdGlvbihiLEwpe3JldHVybiBMJiYoYi5uYW1lc3BhY2U9dGhpcy5wYXJzZU5hbWVzcGFjZShMKSksdGhpcy5zcGFjZXMmJihiLnNwYWNlcy5iZWZvcmU9dGhpcy5zcGFjZXMsdGhpcy5zcGFjZXM9XCJcIiksdGhpcy5jdXJyZW50LmFwcGVuZChiKX0saShFLFt7a2V5OlwiY3VyclRva2VuXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMucG9zaXRpb25dfX0se2tleTpcIm5leHRUb2tlblwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vuc1t0aGlzLnBvc2l0aW9uKzFdfX0se2tleTpcInByZXZUb2tlblwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vuc1t0aGlzLnBvc2l0aW9uLTFdfX1dKSxFfSgpO2UuZGVmYXVsdD1HLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksZGY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXIvZGlzdC9wcm9jZXNzb3IuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITA7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGMsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciB1PXRbcl07dS5lbnVtZXJhYmxlPXUuZW51bWVyYWJsZXx8ITEsdS5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gdSYmKHUud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLHUua2V5LHUpfX1yZXR1cm4gZnVuY3Rpb24oYyx0LHIpe3JldHVybiB0JiZnKGMucHJvdG90eXBlLHQpLHImJmcoYyxyKSxjfX0oKSxhPWhmKCksbz1mKGEpO2Z1bmN0aW9uIGYoZyl7cmV0dXJuIGcmJmcuX19lc01vZHVsZT9nOntkZWZhdWx0Omd9fWZ1bmN0aW9uIHAoZyxjKXtpZighKGcgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXZhciBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhjKXtyZXR1cm4gcCh0aGlzLGcpLHRoaXMuZnVuYz1jfHxmdW5jdGlvbigpe30sdGhpc31yZXR1cm4gZy5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sdT1uZXcgby5kZWZhdWx0KHtjc3M6dCxlcnJvcjpmdW5jdGlvbihsKXt0aHJvdyBuZXcgRXJyb3IobCl9LG9wdGlvbnM6cn0pO3JldHVybiB0aGlzLnJlcz11LHRoaXMuZnVuYyh1KSx0aGlzfSxpKGcsW3trZXk6XCJyZXN1bHRcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMucmVzKX19XSksZ30oKTtlLmRlZmF1bHQ9aCxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLHZmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyL2Rpc3QvaW5kZXguanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITA7dmFyIGk9ZGYoKSxhPU8oaSksbz1EbygpLGY9TyhvKSxwPVJvKCksaD1PKHApLGc9em8oKSxjPU8oZyksdD1JbygpLHI9Tyh0KSx1PUNvKCkscz1PKHUpLGw9Qm8oKSxtPU8obCksdj1NbygpLHk9Tyh2KSx3PUFvKCksZD1PKHcpLF89UG8oKSxTPU8oXykseD1qbygpLE49Tyh4KSxQPU5vKCksVz1PKFApLFU9TG8oKSxIPU8oVSksRD1vZSgpLCQ9QihEKTtmdW5jdGlvbiBCKEMpe2lmKEMmJkMuX19lc01vZHVsZSlyZXR1cm4gQzt2YXIgST17fTtpZihDIT1udWxsKWZvcih2YXIgWCBpbiBDKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChDLFgpJiYoSVtYXT1DW1hdKTtyZXR1cm4gSS5kZWZhdWx0PUMsSX1mdW5jdGlvbiBPKEMpe3JldHVybiBDJiZDLl9fZXNNb2R1bGU/Qzp7ZGVmYXVsdDpDfX12YXIgaj1mdW5jdGlvbihJKXtyZXR1cm4gbmV3IGEuZGVmYXVsdChJKX07ai5hdHRyaWJ1dGU9ZnVuY3Rpb24oQyl7cmV0dXJuIG5ldyBmLmRlZmF1bHQoQyl9LGouY2xhc3NOYW1lPWZ1bmN0aW9uKEMpe3JldHVybiBuZXcgaC5kZWZhdWx0KEMpfSxqLmNvbWJpbmF0b3I9ZnVuY3Rpb24oQyl7cmV0dXJuIG5ldyBjLmRlZmF1bHQoQyl9LGouY29tbWVudD1mdW5jdGlvbihDKXtyZXR1cm4gbmV3IHIuZGVmYXVsdChDKX0sai5pZD1mdW5jdGlvbihDKXtyZXR1cm4gbmV3IHMuZGVmYXVsdChDKX0sai5uZXN0aW5nPWZ1bmN0aW9uKEMpe3JldHVybiBuZXcgbS5kZWZhdWx0KEMpfSxqLnBzZXVkbz1mdW5jdGlvbihDKXtyZXR1cm4gbmV3IHkuZGVmYXVsdChDKX0sai5yb290PWZ1bmN0aW9uKEMpe3JldHVybiBuZXcgZC5kZWZhdWx0KEMpfSxqLnNlbGVjdG9yPWZ1bmN0aW9uKEMpe3JldHVybiBuZXcgUy5kZWZhdWx0KEMpfSxqLnN0cmluZz1mdW5jdGlvbihDKXtyZXR1cm4gbmV3IE4uZGVmYXVsdChDKX0sai50YWc9ZnVuY3Rpb24oQyl7cmV0dXJuIG5ldyBXLmRlZmF1bHQoQyl9LGoudW5pdmVyc2FsPWZ1bmN0aW9uKEMpe3JldHVybiBuZXcgSC5kZWZhdWx0KEMpfSxPYmplY3Qua2V5cygkKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe0MhPT1cIl9fZXNNb2R1bGVcIiYmKGpbQ109JFtDXSl9KSxlLmRlZmF1bHQ9aixuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLEZvPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbWVkaWEtcXVlcnktcGFyc2VyL2Rpc3Qvbm9kZXMvTm9kZS5qc1wiKGUpe1widXNlIHN0cmljdFwiO0EoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBuKGkpe3RoaXMuYWZ0ZXI9aS5hZnRlcix0aGlzLmJlZm9yZT1pLmJlZm9yZSx0aGlzLnR5cGU9aS50eXBlLHRoaXMudmFsdWU9aS52YWx1ZSx0aGlzLnNvdXJjZUluZGV4PWkuc291cmNlSW5kZXh9ZS5kZWZhdWx0PW59fSksVW89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1tZWRpYS1xdWVyeS1wYXJzZXIvZGlzdC9ub2Rlcy9Db250YWluZXIuanNcIihlKXtcInVzZSBzdHJpY3RcIjtBKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG49Rm8oKSxpPWEobik7ZnVuY3Rpb24gYShmKXtyZXR1cm4gZiYmZi5fX2VzTW9kdWxlP2Y6e2RlZmF1bHQ6Zn19ZnVuY3Rpb24gbyhmKXt2YXIgcD10aGlzO3RoaXMuY29uc3RydWN0b3IoZiksdGhpcy5ub2Rlcz1mLm5vZGVzLHRoaXMuYWZ0ZXI9PT12b2lkIDAmJih0aGlzLmFmdGVyPXRoaXMubm9kZXMubGVuZ3RoPjA/dGhpcy5ub2Rlc1t0aGlzLm5vZGVzLmxlbmd0aC0xXS5hZnRlcjpcIlwiKSx0aGlzLmJlZm9yZT09PXZvaWQgMCYmKHRoaXMuYmVmb3JlPXRoaXMubm9kZXMubGVuZ3RoPjA/dGhpcy5ub2Rlc1swXS5iZWZvcmU6XCJcIiksdGhpcy5zb3VyY2VJbmRleD09PXZvaWQgMCYmKHRoaXMuc291cmNlSW5kZXg9dGhpcy5iZWZvcmUubGVuZ3RoKSx0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oaCl7aC5wYXJlbnQ9cH0pfW8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaS5kZWZhdWx0LnByb3RvdHlwZSksby5jb25zdHJ1Y3Rvcj1pLmRlZmF1bHQsby5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihwLGgpe2Zvcih2YXIgZz10eXBlb2YgcD09XCJzdHJpbmdcInx8cCBpbnN0YW5jZW9mIFJlZ0V4cCxjPWc/aDpwLHQ9dHlwZW9mIHA9PVwic3RyaW5nXCI/bmV3IFJlZ0V4cChwKTpwLHI9MDtyPHRoaXMubm9kZXMubGVuZ3RoO3IrKyl7dmFyIHU9dGhpcy5ub2Rlc1tyXSxzPWc/dC50ZXN0KHUudHlwZSk6ITA7aWYocyYmYyYmYyh1LHIsdGhpcy5ub2Rlcyk9PT0hMXx8dS5ub2RlcyYmdS53YWxrKHAsaCk9PT0hMSlyZXR1cm4hMX1yZXR1cm4hMH0sby5wcm90b3R5cGUuZWFjaD1mdW5jdGlvbigpe2Zvcih2YXIgcD1hcmd1bWVudHMubGVuZ3RoPD0wfHxhcmd1bWVudHNbMF09PT12b2lkIDA/ZnVuY3Rpb24oKXt9OmFyZ3VtZW50c1swXSxoPTA7aDx0aGlzLm5vZGVzLmxlbmd0aDtoKyspe3ZhciBnPXRoaXMubm9kZXNbaF07aWYocChnLGgsdGhpcy5ub2Rlcyk9PT0hMSlyZXR1cm4hMX1yZXR1cm4hMH0sZS5kZWZhdWx0PW99fSksbWY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1tZWRpYS1xdWVyeS1wYXJzZXIvZGlzdC9wYXJzZXJzLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7QSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUucGFyc2VNZWRpYUZlYXR1cmU9cCxlLnBhcnNlTWVkaWFRdWVyeT1oLGUucGFyc2VNZWRpYUxpc3Q9Zzt2YXIgbj1GbygpLGk9ZihuKSxhPVVvKCksbz1mKGEpO2Z1bmN0aW9uIGYoYyl7cmV0dXJuIGMmJmMuX19lc01vZHVsZT9jOntkZWZhdWx0OmN9fWZ1bmN0aW9uIHAoYyl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8YXJndW1lbnRzWzFdPT09dm9pZCAwPzA6YXJndW1lbnRzWzFdLHI9W3ttb2RlOlwibm9ybWFsXCIsY2hhcmFjdGVyOm51bGx9XSx1PVtdLHM9MCxsPVwiXCIsbT1udWxsLHY9bnVsbCx5PXQsdz1jO2NbMF09PT1cIihcIiYmY1tjLmxlbmd0aC0xXT09PVwiKVwiJiYodz1jLnN1YnN0cmluZygxLGMubGVuZ3RoLTEpLHkrKyk7Zm9yKHZhciBkPTA7ZDx3Lmxlbmd0aDtkKyspe3ZhciBfPXdbZF07aWYoKF89PT1cIidcInx8Xz09PSdcIicpJiYocltzXS5pc0NhbGN1bGF0aW9uRW5hYmxlZD09PSEwPyhyLnB1c2goe21vZGU6XCJzdHJpbmdcIixpc0NhbGN1bGF0aW9uRW5hYmxlZDohMSxjaGFyYWN0ZXI6X30pLHMrKyk6cltzXS5tb2RlPT09XCJzdHJpbmdcIiYmcltzXS5jaGFyYWN0ZXI9PT1fJiZ3W2QtMV0hPT1cIlxcXFxcIiYmKHIucG9wKCkscy0tKSksXz09PVwie1wiPyhyLnB1c2goe21vZGU6XCJpbnRlcnBvbGF0aW9uXCIsaXNDYWxjdWxhdGlvbkVuYWJsZWQ6ITB9KSxzKyspOl89PT1cIn1cIiYmKHIucG9wKCkscy0tKSxyW3NdLm1vZGU9PT1cIm5vcm1hbFwiJiZfPT09XCI6XCIpe3ZhciBTPXcuc3Vic3RyaW5nKGQrMSk7dj17dHlwZTpcInZhbHVlXCIsYmVmb3JlOi9eKFxccyopLy5leGVjKFMpWzFdLGFmdGVyOi8oXFxzKikkLy5leGVjKFMpWzFdLHZhbHVlOlMudHJpbSgpfSx2LnNvdXJjZUluZGV4PXYuYmVmb3JlLmxlbmd0aCtkKzEreSxtPXt0eXBlOlwiY29sb25cIixzb3VyY2VJbmRleDpkK3ksYWZ0ZXI6di5iZWZvcmUsdmFsdWU6XCI6XCJ9O2JyZWFrfWwrPV99cmV0dXJuIGw9e3R5cGU6XCJtZWRpYS1mZWF0dXJlXCIsYmVmb3JlOi9eKFxccyopLy5leGVjKGwpWzFdLGFmdGVyOi8oXFxzKikkLy5leGVjKGwpWzFdLHZhbHVlOmwudHJpbSgpfSxsLnNvdXJjZUluZGV4PWwuYmVmb3JlLmxlbmd0aCt5LHUucHVzaChsKSxtIT09bnVsbCYmKG0uYmVmb3JlPWwuYWZ0ZXIsdS5wdXNoKG0pKSx2IT09bnVsbCYmdS5wdXNoKHYpLHV9ZnVuY3Rpb24gaChjKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0xfHxhcmd1bWVudHNbMV09PT12b2lkIDA/MDphcmd1bWVudHNbMV0scj1bXSx1PTAscz0hMSxsPXZvaWQgMDtmdW5jdGlvbiBtKCl7cmV0dXJue2JlZm9yZTpcIlwiLGFmdGVyOlwiXCIsdmFsdWU6XCJcIn19bD1tKCk7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3ZhciB5PWNbdl07cz8obC52YWx1ZSs9eSwoeT09PVwie1wifHx5PT09XCIoXCIpJiZ1KyssKHk9PT1cIilcInx8eT09PVwifVwiKSYmdS0tKTp5LnNlYXJjaCgvXFxzLykhPT0tMT9sLmJlZm9yZSs9eTooeT09PVwiKFwiJiYobC50eXBlPVwibWVkaWEtZmVhdHVyZS1leHByZXNzaW9uXCIsdSsrKSxsLnZhbHVlPXksbC5zb3VyY2VJbmRleD10K3Yscz0hMCkscyYmdT09PTAmJih5PT09XCIpXCJ8fHY9PT1jLmxlbmd0aC0xfHxjW3YrMV0uc2VhcmNoKC9cXHMvKSE9PS0xKSYmKFtcIm5vdFwiLFwib25seVwiLFwiYW5kXCJdLmluZGV4T2YobC52YWx1ZSkhPT0tMSYmKGwudHlwZT1cImtleXdvcmRcIiksbC50eXBlPT09XCJtZWRpYS1mZWF0dXJlLWV4cHJlc3Npb25cIiYmKGwubm9kZXM9cChsLnZhbHVlLGwuc291cmNlSW5kZXgpKSxyLnB1c2goQXJyYXkuaXNBcnJheShsLm5vZGVzKT9uZXcgby5kZWZhdWx0KGwpOm5ldyBpLmRlZmF1bHQobCkpLGw9bSgpLHM9ITEpfWZvcih2YXIgdz0wO3c8ci5sZW5ndGg7dysrKWlmKGw9clt3XSx3PjAmJihyW3ctMV0uYWZ0ZXI9bC5iZWZvcmUpLGwudHlwZT09PXZvaWQgMCl7aWYodz4wKXtpZihyW3ctMV0udHlwZT09PVwibWVkaWEtZmVhdHVyZS1leHByZXNzaW9uXCIpe2wudHlwZT1cImtleXdvcmRcIjtjb250aW51ZX1pZihyW3ctMV0udmFsdWU9PT1cIm5vdFwifHxyW3ctMV0udmFsdWU9PT1cIm9ubHlcIil7bC50eXBlPVwibWVkaWEtdHlwZVwiO2NvbnRpbnVlfWlmKHJbdy0xXS52YWx1ZT09PVwiYW5kXCIpe2wudHlwZT1cIm1lZGlhLWZlYXR1cmUtZXhwcmVzc2lvblwiO2NvbnRpbnVlfXJbdy0xXS50eXBlPT09XCJtZWRpYS10eXBlXCImJihyW3crMV0/bC50eXBlPXJbdysxXS50eXBlPT09XCJtZWRpYS1mZWF0dXJlLWV4cHJlc3Npb25cIj9cImtleXdvcmRcIjpcIm1lZGlhLWZlYXR1cmUtZXhwcmVzc2lvblwiOmwudHlwZT1cIm1lZGlhLWZlYXR1cmUtZXhwcmVzc2lvblwiKX1pZih3PT09MCl7aWYoIXJbdysxXSl7bC50eXBlPVwibWVkaWEtdHlwZVwiO2NvbnRpbnVlfWlmKHJbdysxXSYmKHJbdysxXS50eXBlPT09XCJtZWRpYS1mZWF0dXJlLWV4cHJlc3Npb25cInx8clt3KzFdLnR5cGU9PT1cImtleXdvcmRcIikpe2wudHlwZT1cIm1lZGlhLXR5cGVcIjtjb250aW51ZX1pZihyW3crMl0pe2lmKHJbdysyXS50eXBlPT09XCJtZWRpYS1mZWF0dXJlLWV4cHJlc3Npb25cIil7bC50eXBlPVwibWVkaWEtdHlwZVwiLHJbdysxXS50eXBlPVwia2V5d29yZFwiO2NvbnRpbnVlfWlmKHJbdysyXS50eXBlPT09XCJrZXl3b3JkXCIpe2wudHlwZT1cImtleXdvcmRcIixyW3crMV0udHlwZT1cIm1lZGlhLXR5cGVcIjtjb250aW51ZX19aWYoclt3KzNdJiZyW3crM10udHlwZT09PVwibWVkaWEtZmVhdHVyZS1leHByZXNzaW9uXCIpe2wudHlwZT1cImtleXdvcmRcIixyW3crMV0udHlwZT1cIm1lZGlhLXR5cGVcIixyW3crMl0udHlwZT1cImtleXdvcmRcIjtjb250aW51ZX19fXJldHVybiByfWZ1bmN0aW9uIGcoYyl7dmFyIHQ9W10scj0wLHU9MCxzPS9eKFxccyopdXJsXFxzKlxcKC8uZXhlYyhjKTtpZihzIT09bnVsbCl7Zm9yKHZhciBsPXNbMF0ubGVuZ3RoLG09MTttPjA7KXt2YXIgdj1jW2xdO3Y9PT1cIihcIiYmbSsrLHY9PT1cIilcIiYmbS0tLGwrK310LnVuc2hpZnQobmV3IGkuZGVmYXVsdCh7dHlwZTpcInVybFwiLHZhbHVlOmMuc3Vic3RyaW5nKDAsbCkudHJpbSgpLHNvdXJjZUluZGV4OnNbMV0ubGVuZ3RoLGJlZm9yZTpzWzFdLGFmdGVyOi9eKFxccyopLy5leGVjKGMuc3Vic3RyaW5nKGwpKVsxXX0pKSxyPWx9Zm9yKHZhciB5PXI7eTxjLmxlbmd0aDt5Kyspe3ZhciB3PWNbeV07aWYodz09PVwiKFwiJiZ1Kyssdz09PVwiKVwiJiZ1LS0sdT09PTAmJnc9PT1cIixcIil7dmFyIGQ9Yy5zdWJzdHJpbmcocix5KSxfPS9eKFxccyopLy5leGVjKGQpWzFdO3QucHVzaChuZXcgby5kZWZhdWx0KHt0eXBlOlwibWVkaWEtcXVlcnlcIix2YWx1ZTpkLnRyaW0oKSxzb3VyY2VJbmRleDpyK18ubGVuZ3RoLG5vZGVzOmgoZCxyKSxiZWZvcmU6XyxhZnRlcjovKFxccyopJC8uZXhlYyhkKVsxXX0pKSxyPXkrMX19dmFyIFM9Yy5zdWJzdHJpbmcocikseD0vXihcXHMqKS8uZXhlYyhTKVsxXTtyZXR1cm4gdC5wdXNoKG5ldyBvLmRlZmF1bHQoe3R5cGU6XCJtZWRpYS1xdWVyeVwiLHZhbHVlOlMudHJpbSgpLHNvdXJjZUluZGV4OnIreC5sZW5ndGgsbm9kZXM6aChTLHIpLGJlZm9yZTp4LGFmdGVyOi8oXFxzKikkLy5leGVjKFMpWzFdfSkpLHR9fX0pLGdmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbWVkaWEtcXVlcnktcGFyc2VyL2Rpc3QvaW5kZXguanNcIihlKXtcInVzZSBzdHJpY3RcIjtBKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5kZWZhdWx0PWY7dmFyIG49VW8oKSxpPW8obiksYT1tZigpO2Z1bmN0aW9uIG8ocCl7cmV0dXJuIHAmJnAuX19lc01vZHVsZT9wOntkZWZhdWx0OnB9fWZ1bmN0aW9uIGYocCl7cmV0dXJuIG5ldyBpLmRlZmF1bHQoe25vZGVzOigwLGEucGFyc2VNZWRpYUxpc3QpKHApLHR5cGU6XCJtZWRpYS1xdWVyeS1saXN0XCIsdmFsdWU6cC50cmltKCl9KX19fSksV289e307T3QoV28se2Jhc2VuYW1lOigpPT5KbyxkZWZhdWx0OigpPT5RbyxkZWxpbWl0ZXI6KCk9Pl90LGRpcm5hbWU6KCk9PkhvLGV4dG5hbWU6KCk9PktvLGlzQWJzb2x1dGU6KCk9Pmp0LGpvaW46KCk9PlZvLG5vcm1hbGl6ZTooKT0+TnQscmVsYXRpdmU6KCk9PkdvLHJlc29sdmU6KCk9Pm1yLHNlcDooKT0+d3R9KTtmdW5jdGlvbiAkbyhlLG4pe2Zvcih2YXIgaT0wLGE9ZS5sZW5ndGgtMTthPj0wO2EtLSl7dmFyIG89ZVthXTtvPT09XCIuXCI/ZS5zcGxpY2UoYSwxKTpvPT09XCIuLlwiPyhlLnNwbGljZShhLDEpLGkrKyk6aSYmKGUuc3BsaWNlKGEsMSksaS0tKX1pZihuKWZvcig7aS0tO2kpZS51bnNoaWZ0KFwiLi5cIik7cmV0dXJuIGV9ZnVuY3Rpb24gbXIoKXtmb3IodmFyIGU9XCJcIixuPSExLGk9YXJndW1lbnRzLmxlbmd0aC0xO2k+PS0xJiYhbjtpLS0pe3ZhciBhPWk+PTA/YXJndW1lbnRzW2ldOlwiL1wiO2lmKHR5cGVvZiBhIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5nc1wiKTtpZighYSljb250aW51ZTtlPWErXCIvXCIrZSxuPWEuY2hhckF0KDApPT09XCIvXCJ9cmV0dXJuIGU9JG8oTXQoZS5zcGxpdChcIi9cIiksZnVuY3Rpb24obyl7cmV0dXJuISFvfSksIW4pLmpvaW4oXCIvXCIpLChuP1wiL1wiOlwiXCIpK2V8fFwiLlwifWZ1bmN0aW9uIE50KGUpe3ZhciBuPWp0KGUpLGk9WW8oZSwtMSk9PT1cIi9cIjtyZXR1cm4gZT0kbyhNdChlLnNwbGl0KFwiL1wiKSxmdW5jdGlvbihhKXtyZXR1cm4hIWF9KSwhbikuam9pbihcIi9cIiksIWUmJiFuJiYoZT1cIi5cIiksZSYmaSYmKGUrPVwiL1wiKSwobj9cIi9cIjpcIlwiKStlfWZ1bmN0aW9uIGp0KGUpe3JldHVybiBlLmNoYXJBdCgwKT09PVwiL1wifWZ1bmN0aW9uIFZvKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBOdChNdChlLGZ1bmN0aW9uKG4saSl7aWYodHlwZW9mIG4hPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzXCIpO3JldHVybiBufSkuam9pbihcIi9cIikpfWZ1bmN0aW9uIEdvKGUsbil7ZT1tcihlKS5zdWJzdHIoMSksbj1tcihuKS5zdWJzdHIoMSk7ZnVuY3Rpb24gaShjKXtmb3IodmFyIHQ9MDt0PGMubGVuZ3RoJiZjW3RdPT09XCJcIjt0KyspO2Zvcih2YXIgcj1jLmxlbmd0aC0xO3I+PTAmJmNbcl09PT1cIlwiO3ItLSk7cmV0dXJuIHQ+cj9bXTpjLnNsaWNlKHQsci10KzEpfWZvcih2YXIgYT1pKGUuc3BsaXQoXCIvXCIpKSxvPWkobi5zcGxpdChcIi9cIikpLGY9TWF0aC5taW4oYS5sZW5ndGgsby5sZW5ndGgpLHA9ZixoPTA7aDxmO2grKylpZihhW2hdIT09b1toXSl7cD1oO2JyZWFrfWZvcih2YXIgZz1bXSxoPXA7aDxhLmxlbmd0aDtoKyspZy5wdXNoKFwiLi5cIik7cmV0dXJuIGc9Zy5jb25jYXQoby5zbGljZShwKSksZy5qb2luKFwiL1wiKX1mdW5jdGlvbiBIbyhlKXt2YXIgbj13cihlKSxpPW5bMF0sYT1uWzFdO3JldHVybiFpJiYhYT9cIi5cIjooYSYmKGE9YS5zdWJzdHIoMCxhLmxlbmd0aC0xKSksaSthKX1mdW5jdGlvbiBKbyhlLG4pe3ZhciBpPXdyKGUpWzJdO3JldHVybiBuJiZpLnN1YnN0cigtMSpuLmxlbmd0aCk9PT1uJiYoaT1pLnN1YnN0cigwLGkubGVuZ3RoLW4ubGVuZ3RoKSksaX1mdW5jdGlvbiBLbyhlKXtyZXR1cm4gd3IoZSlbM119ZnVuY3Rpb24gTXQoZSxuKXtpZihlLmZpbHRlcilyZXR1cm4gZS5maWx0ZXIobik7Zm9yKHZhciBpPVtdLGE9MDthPGUubGVuZ3RoO2ErKyluKGVbYV0sYSxlKSYmaS5wdXNoKGVbYV0pO3JldHVybiBpfXZhciBJcyx3cix3dCxfdCxRbyxZbyx5Zj1MZSh7XCJub2RlLW1vZHVsZXMtcG9seWZpbGxzOnBhdGhcIigpe0EoKSxJcz0vXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLyx3cj1mdW5jdGlvbihlKXtyZXR1cm4gSXMuZXhlYyhlKS5zbGljZSgxKX0sd3Q9XCIvXCIsX3Q9XCI6XCIsUW89e2V4dG5hbWU6S28sYmFzZW5hbWU6Sm8sZGlybmFtZTpIbyxzZXA6d3QsZGVsaW1pdGVyOl90LHJlbGF0aXZlOkdvLGpvaW46Vm8saXNBYnNvbHV0ZTpqdCxub3JtYWxpemU6TnQscmVzb2x2ZTptcn0sWW89XCJhYlwiLnN1YnN0cigtMSk9PT1cImJcIj9mdW5jdGlvbihlLG4saSl7cmV0dXJuIGUuc3Vic3RyKG4saSl9OmZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbjwwJiYobj1lLmxlbmd0aCtuKSxlLnN1YnN0cihuLGkpfX19KSx3Zj1SKHtcIm5vZGUtbW9kdWxlcy1wb2x5ZmlsbHMtY29tbW9uanM6cGF0aFwiKGUsbil7QSgpO3ZhciBpPSh5ZigpLFR0KFdvKSk7aWYoaSYmaS5kZWZhdWx0KXtuLmV4cG9ydHM9aS5kZWZhdWx0O2ZvcihsZXQgYSBpbiBpKW4uZXhwb3J0c1thXT1pW2FdfWVsc2UgaSYmKG4uZXhwb3J0cz1pKX19KSxfZj1SKHtcIm5vZGVfbW9kdWxlcy9waWNvY29sb3JzL3BpY29jb2xvcnMuYnJvd3Nlci5qc1wiKGUsbil7QSgpO3ZhciBpPVN0cmluZyxhPWZ1bmN0aW9uKCl7cmV0dXJue2lzQ29sb3JTdXBwb3J0ZWQ6ITEscmVzZXQ6aSxib2xkOmksZGltOmksaXRhbGljOmksdW5kZXJsaW5lOmksaW52ZXJzZTppLGhpZGRlbjppLHN0cmlrZXRocm91Z2g6aSxibGFjazppLHJlZDppLGdyZWVuOmkseWVsbG93OmksYmx1ZTppLG1hZ2VudGE6aSxjeWFuOmksd2hpdGU6aSxncmF5OmksYmdCbGFjazppLGJnUmVkOmksYmdHcmVlbjppLGJnWWVsbG93OmksYmdCbHVlOmksYmdNYWdlbnRhOmksYmdDeWFuOmksYmdXaGl0ZTppfX07bi5leHBvcnRzPWEoKSxuLmV4cG9ydHMuY3JlYXRlQ29sb3JzPWF9fSksYmY9Uih7XCIoZGlzYWJsZWQpOm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi90ZXJtaW5hbC1oaWdobGlnaHRcIigpe0EoKX19KSxYbz1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi9jc3Mtc3ludGF4LWVycm9yLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwLGUuZGVmYXVsdD12b2lkIDA7dmFyIGk9byhfZigpKSxhPW8oYmYoKSk7ZnVuY3Rpb24gbyhtKXtyZXR1cm4gbSYmbS5fX2VzTW9kdWxlP206e2RlZmF1bHQ6bX19ZnVuY3Rpb24gZihtKXtpZihtPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gbX1mdW5jdGlvbiBwKG0sdil7bS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2LnByb3RvdHlwZSksbS5wcm90b3R5cGUuY29uc3RydWN0b3I9bSxtLl9fcHJvdG9fXz12fWZ1bmN0aW9uIGgobSl7dmFyIHY9dHlwZW9mIE1hcD09XCJmdW5jdGlvblwiP25ldyBNYXA6dm9pZCAwO3JldHVybiBoPWZ1bmN0aW9uKHcpe2lmKHc9PT1udWxsfHwhdCh3KSlyZXR1cm4gdztpZih0eXBlb2YgdyE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtpZih0eXBlb2YgdjxcInVcIil7aWYodi5oYXModykpcmV0dXJuIHYuZ2V0KHcpO3Yuc2V0KHcsZCl9ZnVuY3Rpb24gZCgpe3JldHVybiBnKHcsYXJndW1lbnRzLHUodGhpcykuY29uc3RydWN0b3IpfXJldHVybiBkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxyKGQsdyl9LGgobSl9ZnVuY3Rpb24gZyhtLHYseSl7cmV0dXJuIGMoKT9nPVJlZmxlY3QuY29uc3RydWN0Omc9ZnVuY3Rpb24oZCxfLFMpe3ZhciB4PVtudWxsXTt4LnB1c2guYXBwbHkoeCxfKTt2YXIgTj1GdW5jdGlvbi5iaW5kLmFwcGx5KGQseCksUD1uZXcgTjtyZXR1cm4gUyYmcihQLFMucHJvdG90eXBlKSxQfSxnLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBjKCl7aWYodHlwZW9mIFJlZmxlY3Q+XCJ1XCJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZih0eXBlb2YgUHJveHk9PVwiZnVuY3Rpb25cIilyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gdChtKXtyZXR1cm4gRnVuY3Rpb24udG9TdHJpbmcuY2FsbChtKS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKSE9PS0xfWZ1bmN0aW9uIHIobSx2KXtyZXR1cm4gcj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHcsZCl7cmV0dXJuIHcuX19wcm90b19fPWQsd30scihtLHYpfWZ1bmN0aW9uIHUobSl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih5KXtyZXR1cm4geS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih5KX0sdShtKX12YXIgcz1mdW5jdGlvbihtKXtwKHYsbSk7ZnVuY3Rpb24gdih3LGQsXyxTLHgsTil7dmFyIFA7cmV0dXJuIFA9bS5jYWxsKHRoaXMsdyl8fHRoaXMsUC5uYW1lPVwiQ3NzU3ludGF4RXJyb3JcIixQLnJlYXNvbj13LHgmJihQLmZpbGU9eCksUyYmKFAuc291cmNlPVMpLE4mJihQLnBsdWdpbj1OKSx0eXBlb2YgZDxcInVcIiYmdHlwZW9mIF88XCJ1XCImJihQLmxpbmU9ZCxQLmNvbHVtbj1fKSxQLnNldE1lc3NhZ2UoKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZihQKSx2KSxQfXZhciB5PXYucHJvdG90eXBlO3JldHVybiB5LnNldE1lc3NhZ2U9ZnVuY3Rpb24oKXt0aGlzLm1lc3NhZ2U9dGhpcy5wbHVnaW4/dGhpcy5wbHVnaW4rXCI6IFwiOlwiXCIsdGhpcy5tZXNzYWdlKz10aGlzLmZpbGU/dGhpcy5maWxlOlwiPGNzcyBpbnB1dD5cIix0eXBlb2YgdGhpcy5saW5lPFwidVwiJiYodGhpcy5tZXNzYWdlKz1cIjpcIit0aGlzLmxpbmUrXCI6XCIrdGhpcy5jb2x1bW4pLHRoaXMubWVzc2FnZSs9XCI6IFwiK3RoaXMucmVhc29ufSx5LnNob3dTb3VyY2VDb2RlPWZ1bmN0aW9uKGQpe3ZhciBfPXRoaXM7aWYoIXRoaXMuc291cmNlKXJldHVyblwiXCI7dmFyIFM9dGhpcy5zb3VyY2U7YS5kZWZhdWx0JiYodHlwZW9mIGQ+XCJ1XCImJihkPWkuZGVmYXVsdC5pc0NvbG9yU3VwcG9ydGVkKSxkJiYoUz0oMCxhLmRlZmF1bHQpKFMpKSk7dmFyIHg9Uy5zcGxpdCgvXFxyP1xcbi8pLE49TWF0aC5tYXgodGhpcy5saW5lLTMsMCksUD1NYXRoLm1pbih0aGlzLmxpbmUrMix4Lmxlbmd0aCksVz1TdHJpbmcoUCkubGVuZ3RoO2Z1bmN0aW9uIFUoRCl7cmV0dXJuIGQmJmkuZGVmYXVsdC5yZWQ/aS5kZWZhdWx0LnJlZChpLmRlZmF1bHQuYm9sZChEKSk6RH1mdW5jdGlvbiBIKEQpe3JldHVybiBkJiZpLmRlZmF1bHQuZ3JheT9pLmRlZmF1bHQuZ3JheShEKTpEfXJldHVybiB4LnNsaWNlKE4sUCkubWFwKGZ1bmN0aW9uKEQsJCl7dmFyIEI9TisxKyQsTz1cIiBcIisoXCIgXCIrQikuc2xpY2UoLVcpK1wiIHwgXCI7aWYoQj09PV8ubGluZSl7dmFyIGo9SChPLnJlcGxhY2UoL1xcZC9nLFwiIFwiKSkrRC5zbGljZSgwLF8uY29sdW1uLTEpLnJlcGxhY2UoL1teXFx0XS9nLFwiIFwiKTtyZXR1cm4gVShcIj5cIikrSChPKStEK2BcbiBgK2orVShcIl5cIil9cmV0dXJuXCIgXCIrSChPKStEfSkuam9pbihgXG5gKX0seS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBkPXRoaXMuc2hvd1NvdXJjZUNvZGUoKTtyZXR1cm4gZCYmKGQ9YFxuXG5gK2QrYFxuYCksdGhpcy5uYW1lK1wiOiBcIit0aGlzLm1lc3NhZ2UrZH0sdn0oaChFcnJvcikpLGw9cztlLmRlZmF1bHQ9bCxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLHhmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MvbGliL3ByZXZpb3VzLW1hcC5qc1wiKGUsbil7QSgpLG4uZXhwb3J0cz1jbGFzc3t9fX0pLF9yPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MvbGliL2lucHV0LmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwLGUuZGVmYXVsdD12b2lkIDA7dmFyIGk9Zih3ZigpKSxhPWYoWG8oKSksbz1mKHhmKCkpO2Z1bmN0aW9uIGYocil7cmV0dXJuIHImJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9fWZ1bmN0aW9uIHAocix1KXtmb3IodmFyIHM9MDtzPHUubGVuZ3RoO3MrKyl7dmFyIGw9dVtzXTtsLmVudW1lcmFibGU9bC5lbnVtZXJhYmxlfHwhMSxsLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBsJiYobC53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbC5rZXksbCl9fWZ1bmN0aW9uIGgocix1LHMpe3JldHVybiB1JiZwKHIucHJvdG90eXBlLHUpLHMmJnAocixzKSxyfXZhciBnPTAsYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHIocyxsKXtpZihsPT09dm9pZCAwJiYobD17fSkscz09PW51bGx8fHR5cGVvZiBzPlwidVwifHx0eXBlb2Ygcz09XCJvYmplY3RcIiYmIXMudG9TdHJpbmcpdGhyb3cgbmV3IEVycm9yKFwiUG9zdENTUyByZWNlaXZlZCBcIitzK1wiIGluc3RlYWQgb2YgQ1NTIHN0cmluZ1wiKTt0aGlzLmNzcz1zLnRvU3RyaW5nKCksdGhpcy5jc3NbMF09PT1cIlxcdUZFRkZcInx8dGhpcy5jc3NbMF09PT1cIlxcdUZGRkVcIj8odGhpcy5oYXNCT009ITAsdGhpcy5jc3M9dGhpcy5jc3Muc2xpY2UoMSkpOnRoaXMuaGFzQk9NPSExLGwuZnJvbSYmKC9eXFx3KzpcXC9cXC8vLnRlc3QobC5mcm9tKXx8aS5kZWZhdWx0LmlzQWJzb2x1dGUobC5mcm9tKT90aGlzLmZpbGU9bC5mcm9tOnRoaXMuZmlsZT1pLmRlZmF1bHQucmVzb2x2ZShsLmZyb20pKTt2YXIgbT1uZXcgby5kZWZhdWx0KHRoaXMuY3NzLGwpO2lmKG0udGV4dCl7dGhpcy5tYXA9bTt2YXIgdj1tLmNvbnN1bWVyKCkuZmlsZTshdGhpcy5maWxlJiZ2JiYodGhpcy5maWxlPXRoaXMubWFwUmVzb2x2ZSh2KSl9dGhpcy5maWxlfHwoZys9MSx0aGlzLmlkPVwiPGlucHV0IGNzcyBcIitnK1wiPlwiKSx0aGlzLm1hcCYmKHRoaXMubWFwLmZpbGU9dGhpcy5mcm9tKX12YXIgdT1yLnByb3RvdHlwZTtyZXR1cm4gdS5lcnJvcj1mdW5jdGlvbihsLG0sdix5KXt5PT09dm9pZCAwJiYoeT17fSk7dmFyIHcsZD10aGlzLm9yaWdpbihtLHYpO3JldHVybiBkP3c9bmV3IGEuZGVmYXVsdChsLGQubGluZSxkLmNvbHVtbixkLnNvdXJjZSxkLmZpbGUseS5wbHVnaW4pOnc9bmV3IGEuZGVmYXVsdChsLG0sdix0aGlzLmNzcyx0aGlzLmZpbGUseS5wbHVnaW4pLHcuaW5wdXQ9e2xpbmU6bSxjb2x1bW46dixzb3VyY2U6dGhpcy5jc3N9LHRoaXMuZmlsZSYmKHcuaW5wdXQuZmlsZT10aGlzLmZpbGUpLHd9LHUub3JpZ2luPWZ1bmN0aW9uKGwsbSl7aWYoIXRoaXMubWFwKXJldHVybiExO3ZhciB2PXRoaXMubWFwLmNvbnN1bWVyKCkseT12Lm9yaWdpbmFsUG9zaXRpb25Gb3Ioe2xpbmU6bCxjb2x1bW46bX0pO2lmKCF5LnNvdXJjZSlyZXR1cm4hMTt2YXIgdz17ZmlsZTp0aGlzLm1hcFJlc29sdmUoeS5zb3VyY2UpLGxpbmU6eS5saW5lLGNvbHVtbjp5LmNvbHVtbn0sZD12LnNvdXJjZUNvbnRlbnRGb3IoeS5zb3VyY2UpO3JldHVybiBkJiYody5zb3VyY2U9ZCksd30sdS5tYXBSZXNvbHZlPWZ1bmN0aW9uKGwpe3JldHVybi9eXFx3KzpcXC9cXC8vLnRlc3QobCk/bDppLmRlZmF1bHQucmVzb2x2ZSh0aGlzLm1hcC5jb25zdW1lcigpLnNvdXJjZVJvb3R8fFwiLlwiLGwpfSxoKHIsW3trZXk6XCJmcm9tXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsZXx8dGhpcy5pZH19XSkscn0oKSx0PWM7ZS5kZWZhdWx0PXQsbi5leHBvcnRzPWUuZGVmYXVsdH19KSxicj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi9zdHJpbmdpZmllci5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPXtjb2xvbjpcIjogXCIsaW5kZW50OlwiICAgIFwiLGJlZm9yZURlY2w6YFxuYCxiZWZvcmVSdWxlOmBcbmAsYmVmb3JlT3BlbjpcIiBcIixiZWZvcmVDbG9zZTpgXG5gLGJlZm9yZUNvbW1lbnQ6YFxuYCxhZnRlcjpgXG5gLGVtcHR5Qm9keTpcIlwiLGNvbW1lbnRMZWZ0OlwiIFwiLGNvbW1lbnRSaWdodDpcIiBcIixzZW1pY29sb246ITF9O2Z1bmN0aW9uIGEocCl7cmV0dXJuIHBbMF0udG9VcHBlckNhc2UoKStwLnNsaWNlKDEpfXZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChnKXt0aGlzLmJ1aWxkZXI9Z312YXIgaD1wLnByb3RvdHlwZTtyZXR1cm4gaC5zdHJpbmdpZnk9ZnVuY3Rpb24oYyx0KXt0aGlzW2MudHlwZV0oYyx0KX0saC5yb290PWZ1bmN0aW9uKGMpe3RoaXMuYm9keShjKSxjLnJhd3MuYWZ0ZXImJnRoaXMuYnVpbGRlcihjLnJhd3MuYWZ0ZXIpfSxoLmNvbW1lbnQ9ZnVuY3Rpb24oYyl7dmFyIHQ9dGhpcy5yYXcoYyxcImxlZnRcIixcImNvbW1lbnRMZWZ0XCIpLHI9dGhpcy5yYXcoYyxcInJpZ2h0XCIsXCJjb21tZW50UmlnaHRcIik7dGhpcy5idWlsZGVyKFwiLypcIit0K2MudGV4dCtyK1wiKi9cIixjKX0saC5kZWNsPWZ1bmN0aW9uKGMsdCl7dmFyIHI9dGhpcy5yYXcoYyxcImJldHdlZW5cIixcImNvbG9uXCIpLHU9Yy5wcm9wK3IrdGhpcy5yYXdWYWx1ZShjLFwidmFsdWVcIik7Yy5pbXBvcnRhbnQmJih1Kz1jLnJhd3MuaW1wb3J0YW50fHxcIiAhaW1wb3J0YW50XCIpLHQmJih1Kz1cIjtcIiksdGhpcy5idWlsZGVyKHUsYyl9LGgucnVsZT1mdW5jdGlvbihjKXt0aGlzLmJsb2NrKGMsdGhpcy5yYXdWYWx1ZShjLFwic2VsZWN0b3JcIikpLGMucmF3cy5vd25TZW1pY29sb24mJnRoaXMuYnVpbGRlcihjLnJhd3Mub3duU2VtaWNvbG9uLGMsXCJlbmRcIil9LGguYXRydWxlPWZ1bmN0aW9uKGMsdCl7dmFyIHI9XCJAXCIrYy5uYW1lLHU9Yy5wYXJhbXM/dGhpcy5yYXdWYWx1ZShjLFwicGFyYW1zXCIpOlwiXCI7aWYodHlwZW9mIGMucmF3cy5hZnRlck5hbWU8XCJ1XCI/cis9Yy5yYXdzLmFmdGVyTmFtZTp1JiYocis9XCIgXCIpLGMubm9kZXMpdGhpcy5ibG9jayhjLHIrdSk7ZWxzZXt2YXIgcz0oYy5yYXdzLmJldHdlZW58fFwiXCIpKyh0P1wiO1wiOlwiXCIpO3RoaXMuYnVpbGRlcihyK3UrcyxjKX19LGguYm9keT1mdW5jdGlvbihjKXtmb3IodmFyIHQ9Yy5ub2Rlcy5sZW5ndGgtMTt0PjAmJmMubm9kZXNbdF0udHlwZT09PVwiY29tbWVudFwiOyl0LT0xO2Zvcih2YXIgcj10aGlzLnJhdyhjLFwic2VtaWNvbG9uXCIpLHU9MDt1PGMubm9kZXMubGVuZ3RoO3UrKyl7dmFyIHM9Yy5ub2Rlc1t1XSxsPXRoaXMucmF3KHMsXCJiZWZvcmVcIik7bCYmdGhpcy5idWlsZGVyKGwpLHRoaXMuc3RyaW5naWZ5KHMsdCE9PXV8fHIpfX0saC5ibG9jaz1mdW5jdGlvbihjLHQpe3ZhciByPXRoaXMucmF3KGMsXCJiZXR3ZWVuXCIsXCJiZWZvcmVPcGVuXCIpO3RoaXMuYnVpbGRlcih0K3IrXCJ7XCIsYyxcInN0YXJ0XCIpO3ZhciB1O2Mubm9kZXMmJmMubm9kZXMubGVuZ3RoPyh0aGlzLmJvZHkoYyksdT10aGlzLnJhdyhjLFwiYWZ0ZXJcIikpOnU9dGhpcy5yYXcoYyxcImFmdGVyXCIsXCJlbXB0eUJvZHlcIiksdSYmdGhpcy5idWlsZGVyKHUpLHRoaXMuYnVpbGRlcihcIn1cIixjLFwiZW5kXCIpfSxoLnJhdz1mdW5jdGlvbihjLHQscil7dmFyIHU7aWYocnx8KHI9dCksdCYmKHU9Yy5yYXdzW3RdLHR5cGVvZiB1PFwidVwiKSlyZXR1cm4gdTt2YXIgcz1jLnBhcmVudDtpZihyPT09XCJiZWZvcmVcIiYmKCFzfHxzLnR5cGU9PT1cInJvb3RcIiYmcy5maXJzdD09PWMpKXJldHVyblwiXCI7aWYoIXMpcmV0dXJuIGlbcl07dmFyIGw9Yy5yb290KCk7aWYobC5yYXdDYWNoZXx8KGwucmF3Q2FjaGU9e30pLHR5cGVvZiBsLnJhd0NhY2hlW3JdPFwidVwiKXJldHVybiBsLnJhd0NhY2hlW3JdO2lmKHI9PT1cImJlZm9yZVwifHxyPT09XCJhZnRlclwiKXJldHVybiB0aGlzLmJlZm9yZUFmdGVyKGMscik7dmFyIG09XCJyYXdcIithKHIpO3JldHVybiB0aGlzW21dP3U9dGhpc1ttXShsLGMpOmwud2FsayhmdW5jdGlvbih2KXtpZih1PXYucmF3c1t0XSx0eXBlb2YgdTxcInVcIilyZXR1cm4hMX0pLHR5cGVvZiB1PlwidVwiJiYodT1pW3JdKSxsLnJhd0NhY2hlW3JdPXUsdX0saC5yYXdTZW1pY29sb249ZnVuY3Rpb24oYyl7dmFyIHQ7cmV0dXJuIGMud2FsayhmdW5jdGlvbihyKXtpZihyLm5vZGVzJiZyLm5vZGVzLmxlbmd0aCYmci5sYXN0LnR5cGU9PT1cImRlY2xcIiYmKHQ9ci5yYXdzLnNlbWljb2xvbix0eXBlb2YgdDxcInVcIikpcmV0dXJuITF9KSx0fSxoLnJhd0VtcHR5Qm9keT1mdW5jdGlvbihjKXt2YXIgdDtyZXR1cm4gYy53YWxrKGZ1bmN0aW9uKHIpe2lmKHIubm9kZXMmJnIubm9kZXMubGVuZ3RoPT09MCYmKHQ9ci5yYXdzLmFmdGVyLHR5cGVvZiB0PFwidVwiKSlyZXR1cm4hMX0pLHR9LGgucmF3SW5kZW50PWZ1bmN0aW9uKGMpe2lmKGMucmF3cy5pbmRlbnQpcmV0dXJuIGMucmF3cy5pbmRlbnQ7dmFyIHQ7cmV0dXJuIGMud2FsayhmdW5jdGlvbihyKXt2YXIgdT1yLnBhcmVudDtpZih1JiZ1IT09YyYmdS5wYXJlbnQmJnUucGFyZW50PT09YyYmdHlwZW9mIHIucmF3cy5iZWZvcmU8XCJ1XCIpe3ZhciBzPXIucmF3cy5iZWZvcmUuc3BsaXQoYFxuYCk7cmV0dXJuIHQ9c1tzLmxlbmd0aC0xXSx0PXQucmVwbGFjZSgvW15cXHNdL2csXCJcIiksITF9fSksdH0saC5yYXdCZWZvcmVDb21tZW50PWZ1bmN0aW9uKGMsdCl7dmFyIHI7cmV0dXJuIGMud2Fsa0NvbW1lbnRzKGZ1bmN0aW9uKHUpe2lmKHR5cGVvZiB1LnJhd3MuYmVmb3JlPFwidVwiKXJldHVybiByPXUucmF3cy5iZWZvcmUsci5pbmRleE9mKGBcbmApIT09LTEmJihyPXIucmVwbGFjZSgvW15cXG5dKyQvLFwiXCIpKSwhMX0pLHR5cGVvZiByPlwidVwiP3I9dGhpcy5yYXcodCxudWxsLFwiYmVmb3JlRGVjbFwiKTpyJiYocj1yLnJlcGxhY2UoL1teXFxzXS9nLFwiXCIpKSxyfSxoLnJhd0JlZm9yZURlY2w9ZnVuY3Rpb24oYyx0KXt2YXIgcjtyZXR1cm4gYy53YWxrRGVjbHMoZnVuY3Rpb24odSl7aWYodHlwZW9mIHUucmF3cy5iZWZvcmU8XCJ1XCIpcmV0dXJuIHI9dS5yYXdzLmJlZm9yZSxyLmluZGV4T2YoYFxuYCkhPT0tMSYmKHI9ci5yZXBsYWNlKC9bXlxcbl0rJC8sXCJcIikpLCExfSksdHlwZW9mIHI+XCJ1XCI/cj10aGlzLnJhdyh0LG51bGwsXCJiZWZvcmVSdWxlXCIpOnImJihyPXIucmVwbGFjZSgvW15cXHNdL2csXCJcIikpLHJ9LGgucmF3QmVmb3JlUnVsZT1mdW5jdGlvbihjKXt2YXIgdDtyZXR1cm4gYy53YWxrKGZ1bmN0aW9uKHIpe2lmKHIubm9kZXMmJihyLnBhcmVudCE9PWN8fGMuZmlyc3QhPT1yKSYmdHlwZW9mIHIucmF3cy5iZWZvcmU8XCJ1XCIpcmV0dXJuIHQ9ci5yYXdzLmJlZm9yZSx0LmluZGV4T2YoYFxuYCkhPT0tMSYmKHQ9dC5yZXBsYWNlKC9bXlxcbl0rJC8sXCJcIikpLCExfSksdCYmKHQ9dC5yZXBsYWNlKC9bXlxcc10vZyxcIlwiKSksdH0saC5yYXdCZWZvcmVDbG9zZT1mdW5jdGlvbihjKXt2YXIgdDtyZXR1cm4gYy53YWxrKGZ1bmN0aW9uKHIpe2lmKHIubm9kZXMmJnIubm9kZXMubGVuZ3RoPjAmJnR5cGVvZiByLnJhd3MuYWZ0ZXI8XCJ1XCIpcmV0dXJuIHQ9ci5yYXdzLmFmdGVyLHQuaW5kZXhPZihgXG5gKSE9PS0xJiYodD10LnJlcGxhY2UoL1teXFxuXSskLyxcIlwiKSksITF9KSx0JiYodD10LnJlcGxhY2UoL1teXFxzXS9nLFwiXCIpKSx0fSxoLnJhd0JlZm9yZU9wZW49ZnVuY3Rpb24oYyl7dmFyIHQ7cmV0dXJuIGMud2FsayhmdW5jdGlvbihyKXtpZihyLnR5cGUhPT1cImRlY2xcIiYmKHQ9ci5yYXdzLmJldHdlZW4sdHlwZW9mIHQ8XCJ1XCIpKXJldHVybiExfSksdH0saC5yYXdDb2xvbj1mdW5jdGlvbihjKXt2YXIgdDtyZXR1cm4gYy53YWxrRGVjbHMoZnVuY3Rpb24ocil7aWYodHlwZW9mIHIucmF3cy5iZXR3ZWVuPFwidVwiKXJldHVybiB0PXIucmF3cy5iZXR3ZWVuLnJlcGxhY2UoL1teXFxzOl0vZyxcIlwiKSwhMX0pLHR9LGguYmVmb3JlQWZ0ZXI9ZnVuY3Rpb24oYyx0KXt2YXIgcjtjLnR5cGU9PT1cImRlY2xcIj9yPXRoaXMucmF3KGMsbnVsbCxcImJlZm9yZURlY2xcIik6Yy50eXBlPT09XCJjb21tZW50XCI/cj10aGlzLnJhdyhjLG51bGwsXCJiZWZvcmVDb21tZW50XCIpOnQ9PT1cImJlZm9yZVwiP3I9dGhpcy5yYXcoYyxudWxsLFwiYmVmb3JlUnVsZVwiKTpyPXRoaXMucmF3KGMsbnVsbCxcImJlZm9yZUNsb3NlXCIpO2Zvcih2YXIgdT1jLnBhcmVudCxzPTA7dSYmdS50eXBlIT09XCJyb290XCI7KXMrPTEsdT11LnBhcmVudDtpZihyLmluZGV4T2YoYFxuYCkhPT0tMSl7dmFyIGw9dGhpcy5yYXcoYyxudWxsLFwiaW5kZW50XCIpO2lmKGwubGVuZ3RoKWZvcih2YXIgbT0wO208czttKyspcis9bH1yZXR1cm4gcn0saC5yYXdWYWx1ZT1mdW5jdGlvbihjLHQpe3ZhciByPWNbdF0sdT1jLnJhd3NbdF07cmV0dXJuIHUmJnUudmFsdWU9PT1yP3UucmF3OnJ9LHB9KCksZj1vO2UuZGVmYXVsdD1mLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksWm89Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvc3RyaW5naWZ5LmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwLGUuZGVmYXVsdD12b2lkIDA7dmFyIGk9YShicigpKTtmdW5jdGlvbiBhKHApe3JldHVybiBwJiZwLl9fZXNNb2R1bGU/cDp7ZGVmYXVsdDpwfX1mdW5jdGlvbiBvKHAsaCl7dmFyIGc9bmV3IGkuZGVmYXVsdChoKTtnLnN0cmluZ2lmeShwKX12YXIgZj1vO2UuZGVmYXVsdD1mLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksRHQ9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvbm9kZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPWYoWG8oKSksYT1mKGJyKCkpLG89ZihabygpKTtmdW5jdGlvbiBmKGMpe3JldHVybiBjJiZjLl9fZXNNb2R1bGU/Yzp7ZGVmYXVsdDpjfX1mdW5jdGlvbiBwKGMsdCl7dmFyIHI9bmV3IGMuY29uc3RydWN0b3I7Zm9yKHZhciB1IGluIGMpaWYoISFjLmhhc093blByb3BlcnR5KHUpKXt2YXIgcz1jW3VdLGw9dHlwZW9mIHM7dT09PVwicGFyZW50XCImJmw9PT1cIm9iamVjdFwiP3QmJihyW3VdPXQpOnU9PT1cInNvdXJjZVwiP3JbdV09czpzIGluc3RhbmNlb2YgQXJyYXk/clt1XT1zLm1hcChmdW5jdGlvbihtKXtyZXR1cm4gcChtLHIpfSk6KGw9PT1cIm9iamVjdFwiJiZzIT09bnVsbCYmKHM9cChzKSksclt1XT1zKX1yZXR1cm4gcn12YXIgaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMocil7cj09PXZvaWQgMCYmKHI9e30pLHRoaXMucmF3cz17fTtmb3IodmFyIHUgaW4gcil0aGlzW3VdPXJbdV19dmFyIHQ9Yy5wcm90b3R5cGU7cmV0dXJuIHQuZXJyb3I9ZnVuY3Rpb24odSxzKXtpZihzPT09dm9pZCAwJiYocz17fSksdGhpcy5zb3VyY2Upe3ZhciBsPXRoaXMucG9zaXRpb25CeShzKTtyZXR1cm4gdGhpcy5zb3VyY2UuaW5wdXQuZXJyb3IodSxsLmxpbmUsbC5jb2x1bW4scyl9cmV0dXJuIG5ldyBpLmRlZmF1bHQodSl9LHQud2Fybj1mdW5jdGlvbih1LHMsbCl7dmFyIG09e25vZGU6dGhpc307Zm9yKHZhciB2IGluIGwpbVt2XT1sW3ZdO3JldHVybiB1Lndhcm4ocyxtKX0sdC5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpLHRoaXMucGFyZW50PXZvaWQgMCx0aGlzfSx0LnRvU3RyaW5nPWZ1bmN0aW9uKHUpe3U9PT12b2lkIDAmJih1PW8uZGVmYXVsdCksdS5zdHJpbmdpZnkmJih1PXUuc3RyaW5naWZ5KTt2YXIgcz1cIlwiO3JldHVybiB1KHRoaXMsZnVuY3Rpb24obCl7cys9bH0pLHN9LHQuY2xvbmU9ZnVuY3Rpb24odSl7dT09PXZvaWQgMCYmKHU9e30pO3ZhciBzPXAodGhpcyk7Zm9yKHZhciBsIGluIHUpc1tsXT11W2xdO3JldHVybiBzfSx0LmNsb25lQmVmb3JlPWZ1bmN0aW9uKHUpe3U9PT12b2lkIDAmJih1PXt9KTt2YXIgcz10aGlzLmNsb25lKHUpO3JldHVybiB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcyxzKSxzfSx0LmNsb25lQWZ0ZXI9ZnVuY3Rpb24odSl7dT09PXZvaWQgMCYmKHU9e30pO3ZhciBzPXRoaXMuY2xvbmUodSk7cmV0dXJuIHRoaXMucGFyZW50Lmluc2VydEFmdGVyKHRoaXMscyksc30sdC5yZXBsYWNlV2l0aD1mdW5jdGlvbigpe2lmKHRoaXMucGFyZW50KXtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPW5ldyBBcnJheSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3VtZW50c1tsXTtmb3IodmFyIG09MCx2PXM7bTx2Lmxlbmd0aDttKyspe3ZhciB5PXZbbV07dGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMseSl9dGhpcy5yZW1vdmUoKX1yZXR1cm4gdGhpc30sdC5uZXh0PWZ1bmN0aW9uKCl7aWYoISF0aGlzLnBhcmVudCl7dmFyIHU9dGhpcy5wYXJlbnQuaW5kZXgodGhpcyk7cmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW3UrMV19fSx0LnByZXY9ZnVuY3Rpb24oKXtpZighIXRoaXMucGFyZW50KXt2YXIgdT10aGlzLnBhcmVudC5pbmRleCh0aGlzKTtyZXR1cm4gdGhpcy5wYXJlbnQubm9kZXNbdS0xXX19LHQuYmVmb3JlPWZ1bmN0aW9uKHUpe3JldHVybiB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcyx1KSx0aGlzfSx0LmFmdGVyPWZ1bmN0aW9uKHUpe3JldHVybiB0aGlzLnBhcmVudC5pbnNlcnRBZnRlcih0aGlzLHUpLHRoaXN9LHQudG9KU09OPWZ1bmN0aW9uKCl7dmFyIHU9e307Zm9yKHZhciBzIGluIHRoaXMpaWYoISF0aGlzLmhhc093blByb3BlcnR5KHMpJiZzIT09XCJwYXJlbnRcIil7dmFyIGw9dGhpc1tzXTtsIGluc3RhbmNlb2YgQXJyYXk/dVtzXT1sLm1hcChmdW5jdGlvbihtKXtyZXR1cm4gdHlwZW9mIG09PVwib2JqZWN0XCImJm0udG9KU09OP20udG9KU09OKCk6bX0pOnR5cGVvZiBsPT1cIm9iamVjdFwiJiZsLnRvSlNPTj91W3NdPWwudG9KU09OKCk6dVtzXT1sfXJldHVybiB1fSx0LnJhdz1mdW5jdGlvbih1LHMpe3ZhciBsPW5ldyBhLmRlZmF1bHQ7cmV0dXJuIGwucmF3KHRoaXMsdSxzKX0sdC5yb290PWZ1bmN0aW9uKCl7Zm9yKHZhciB1PXRoaXM7dS5wYXJlbnQ7KXU9dS5wYXJlbnQ7cmV0dXJuIHV9LHQuY2xlYW5SYXdzPWZ1bmN0aW9uKHUpe2RlbGV0ZSB0aGlzLnJhd3MuYmVmb3JlLGRlbGV0ZSB0aGlzLnJhd3MuYWZ0ZXIsdXx8ZGVsZXRlIHRoaXMucmF3cy5iZXR3ZWVufSx0LnBvc2l0aW9uSW5zaWRlPWZ1bmN0aW9uKHUpe2Zvcih2YXIgcz10aGlzLnRvU3RyaW5nKCksbD10aGlzLnNvdXJjZS5zdGFydC5jb2x1bW4sbT10aGlzLnNvdXJjZS5zdGFydC5saW5lLHY9MDt2PHU7disrKXNbdl09PT1gXG5gPyhsPTEsbSs9MSk6bCs9MTtyZXR1cm57bGluZTptLGNvbHVtbjpsfX0sdC5wb3NpdGlvbkJ5PWZ1bmN0aW9uKHUpe3ZhciBzPXRoaXMuc291cmNlLnN0YXJ0O2lmKHUuaW5kZXgpcz10aGlzLnBvc2l0aW9uSW5zaWRlKHUuaW5kZXgpO2Vsc2UgaWYodS53b3JkKXt2YXIgbD10aGlzLnRvU3RyaW5nKCkuaW5kZXhPZih1LndvcmQpO2whPT0tMSYmKHM9dGhpcy5wb3NpdGlvbkluc2lkZShsKSl9cmV0dXJuIHN9LGN9KCksZz1oO2UuZGVmYXVsdD1nLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSkseHI9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvY29tbWVudC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPWEoRHQoKSk7ZnVuY3Rpb24gYShoKXtyZXR1cm4gaCYmaC5fX2VzTW9kdWxlP2g6e2RlZmF1bHQ6aH19ZnVuY3Rpb24gbyhoLGcpe2gucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpLGgucHJvdG90eXBlLmNvbnN0cnVjdG9yPWgsaC5fX3Byb3RvX189Z312YXIgZj1mdW5jdGlvbihoKXtvKGcsaCk7ZnVuY3Rpb24gZyhjKXt2YXIgdDtyZXR1cm4gdD1oLmNhbGwodGhpcyxjKXx8dGhpcyx0LnR5cGU9XCJjb21tZW50XCIsdH1yZXR1cm4gZ30oaS5kZWZhdWx0KSxwPWY7ZS5kZWZhdWx0PXAsbi5leHBvcnRzPWUuZGVmYXVsdH19KSxlYT1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi9kZWNsYXJhdGlvbi5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPWEoRHQoKSk7ZnVuY3Rpb24gYShoKXtyZXR1cm4gaCYmaC5fX2VzTW9kdWxlP2g6e2RlZmF1bHQ6aH19ZnVuY3Rpb24gbyhoLGcpe2gucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUpLGgucHJvdG90eXBlLmNvbnN0cnVjdG9yPWgsaC5fX3Byb3RvX189Z312YXIgZj1mdW5jdGlvbihoKXtvKGcsaCk7ZnVuY3Rpb24gZyhjKXt2YXIgdDtyZXR1cm4gdD1oLmNhbGwodGhpcyxjKXx8dGhpcyx0LnR5cGU9XCJkZWNsXCIsdH1yZXR1cm4gZ30oaS5kZWZhdWx0KSxwPWY7ZS5kZWZhdWx0PXAsbi5leHBvcnRzPWUuZGVmYXVsdH19KSxMdD1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi90b2tlbml6ZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9Vzt2YXIgaT1cIidcIi5jaGFyQ29kZUF0KDApLGE9J1wiJy5jaGFyQ29kZUF0KDApLG89XCJcXFxcXCIuY2hhckNvZGVBdCgwKSxmPVwiL1wiLmNoYXJDb2RlQXQoMCkscD1gXG5gLmNoYXJDb2RlQXQoMCksaD1cIiBcIi5jaGFyQ29kZUF0KDApLGc9XCJcXGZcIi5jaGFyQ29kZUF0KDApLGM9XCJcdFwiLmNoYXJDb2RlQXQoMCksdD1cIlxcclwiLmNoYXJDb2RlQXQoMCkscj1cIltcIi5jaGFyQ29kZUF0KDApLHU9XCJdXCIuY2hhckNvZGVBdCgwKSxzPVwiKFwiLmNoYXJDb2RlQXQoMCksbD1cIilcIi5jaGFyQ29kZUF0KDApLG09XCJ7XCIuY2hhckNvZGVBdCgwKSx2PVwifVwiLmNoYXJDb2RlQXQoMCkseT1cIjtcIi5jaGFyQ29kZUF0KDApLHc9XCIqXCIuY2hhckNvZGVBdCgwKSxkPVwiOlwiLmNoYXJDb2RlQXQoMCksXz1cIkBcIi5jaGFyQ29kZUF0KDApLFM9L1sgXFxuXFx0XFxyXFxme30oKSdcIlxcXFw7L1tcXF0jXS9nLHg9L1sgXFxuXFx0XFxyXFxmKCl7fTo7QCEnXCJcXFxcXFxdWyNdfFxcLyg/PVxcKikvZyxOPS8uW1xcXFwvKFwiJ1xcbl0vLFA9L1thLWYwLTldL2k7ZnVuY3Rpb24gVyhVLEgpe0g9PT12b2lkIDAmJihIPXt9KTt2YXIgRD1VLmNzcy52YWx1ZU9mKCksJD1ILmlnbm9yZUVycm9ycyxCLE8saixDLEksWCxaLFEsSyxKLE0sWSxHLEUsaz1ELmxlbmd0aCxiPS0xLEw9MSxxPTAsVD1bXSxGPVtdO2Z1bmN0aW9uIHooKXtyZXR1cm4gcX1mdW5jdGlvbiByZSh0ZSl7dGhyb3cgVS5lcnJvcihcIlVuY2xvc2VkIFwiK3RlLEwscS1iKX1mdW5jdGlvbiBuZSgpe3JldHVybiBGLmxlbmd0aD09PTAmJnE+PWt9ZnVuY3Rpb24gY2UodGUpe2lmKEYubGVuZ3RoKXJldHVybiBGLnBvcCgpO2lmKCEocT49aykpe3ZhciBpZT10ZT90ZS5pZ25vcmVVbmNsb3NlZDohMTtzd2l0Y2goQj1ELmNoYXJDb2RlQXQocSksKEI9PT1wfHxCPT09Z3x8Qj09PXQmJkQuY2hhckNvZGVBdChxKzEpIT09cCkmJihiPXEsTCs9MSksQil7Y2FzZSBwOmNhc2UgaDpjYXNlIGM6Y2FzZSB0OmNhc2UgZzpPPXE7ZG8gTys9MSxCPUQuY2hhckNvZGVBdChPKSxCPT09cCYmKGI9TyxMKz0xKTt3aGlsZShCPT09aHx8Qj09PXB8fEI9PT1jfHxCPT09dHx8Qj09PWcpO0U9W1wic3BhY2VcIixELnNsaWNlKHEsTyldLHE9Ty0xO2JyZWFrO2Nhc2UgcjpjYXNlIHU6Y2FzZSBtOmNhc2UgdjpjYXNlIGQ6Y2FzZSB5OmNhc2UgbDp2YXIgYWU9U3RyaW5nLmZyb21DaGFyQ29kZShCKTtFPVthZSxhZSxMLHEtYl07YnJlYWs7Y2FzZSBzOmlmKFk9VC5sZW5ndGg/VC5wb3AoKVsxXTpcIlwiLEc9RC5jaGFyQ29kZUF0KHErMSksWT09PVwidXJsXCImJkchPT1pJiZHIT09YSYmRyE9PWgmJkchPT1wJiZHIT09YyYmRyE9PWcmJkchPT10KXtPPXE7ZG97aWYoSj0hMSxPPUQuaW5kZXhPZihcIilcIixPKzEpLE89PT0tMSlpZigkfHxpZSl7Tz1xO2JyZWFrfWVsc2UgcmUoXCJicmFja2V0XCIpO2ZvcihNPU87RC5jaGFyQ29kZUF0KE0tMSk9PT1vOylNLT0xLEo9IUp9d2hpbGUoSik7RT1bXCJicmFja2V0c1wiLEQuc2xpY2UocSxPKzEpLEwscS1iLEwsTy1iXSxxPU99ZWxzZSBPPUQuaW5kZXhPZihcIilcIixxKzEpLFg9RC5zbGljZShxLE8rMSksTz09PS0xfHxOLnRlc3QoWCk/RT1bXCIoXCIsXCIoXCIsTCxxLWJdOihFPVtcImJyYWNrZXRzXCIsWCxMLHEtYixMLE8tYl0scT1PKTticmVhaztjYXNlIGk6Y2FzZSBhOmo9Qj09PWk/XCInXCI6J1wiJyxPPXE7ZG97aWYoSj0hMSxPPUQuaW5kZXhPZihqLE8rMSksTz09PS0xKWlmKCR8fGllKXtPPXErMTticmVha31lbHNlIHJlKFwic3RyaW5nXCIpO2ZvcihNPU87RC5jaGFyQ29kZUF0KE0tMSk9PT1vOylNLT0xLEo9IUp9d2hpbGUoSik7WD1ELnNsaWNlKHEsTysxKSxDPVguc3BsaXQoYFxuYCksST1DLmxlbmd0aC0xLEk+MD8oUT1MK0ksSz1PLUNbSV0ubGVuZ3RoKTooUT1MLEs9YiksRT1bXCJzdHJpbmdcIixELnNsaWNlKHEsTysxKSxMLHEtYixRLE8tS10sYj1LLEw9USxxPU87YnJlYWs7Y2FzZSBfOlMubGFzdEluZGV4PXErMSxTLnRlc3QoRCksUy5sYXN0SW5kZXg9PT0wP089RC5sZW5ndGgtMTpPPVMubGFzdEluZGV4LTIsRT1bXCJhdC13b3JkXCIsRC5zbGljZShxLE8rMSksTCxxLWIsTCxPLWJdLHE9TzticmVhaztjYXNlIG86Zm9yKE89cSxaPSEwO0QuY2hhckNvZGVBdChPKzEpPT09bzspTys9MSxaPSFaO2lmKEI9RC5jaGFyQ29kZUF0KE8rMSksWiYmQiE9PWYmJkIhPT1oJiZCIT09cCYmQiE9PWMmJkIhPT10JiZCIT09ZyYmKE8rPTEsUC50ZXN0KEQuY2hhckF0KE8pKSkpe2Zvcig7UC50ZXN0KEQuY2hhckF0KE8rMSkpOylPKz0xO0QuY2hhckNvZGVBdChPKzEpPT09aCYmKE8rPTEpfUU9W1wid29yZFwiLEQuc2xpY2UocSxPKzEpLEwscS1iLEwsTy1iXSxxPU87YnJlYWs7ZGVmYXVsdDpCPT09ZiYmRC5jaGFyQ29kZUF0KHErMSk9PT13PyhPPUQuaW5kZXhPZihcIiovXCIscSsyKSsxLE89PT0wJiYoJHx8aWU/Tz1ELmxlbmd0aDpyZShcImNvbW1lbnRcIikpLFg9RC5zbGljZShxLE8rMSksQz1YLnNwbGl0KGBcbmApLEk9Qy5sZW5ndGgtMSxJPjA/KFE9TCtJLEs9Ty1DW0ldLmxlbmd0aCk6KFE9TCxLPWIpLEU9W1wiY29tbWVudFwiLFgsTCxxLWIsUSxPLUtdLGI9SyxMPVEscT1PKTooeC5sYXN0SW5kZXg9cSsxLHgudGVzdChEKSx4Lmxhc3RJbmRleD09PTA/Tz1ELmxlbmd0aC0xOk89eC5sYXN0SW5kZXgtMixFPVtcIndvcmRcIixELnNsaWNlKHEsTysxKSxMLHEtYixMLE8tYl0sVC5wdXNoKEUpLHE9Tyk7YnJlYWt9cmV0dXJuIHErKyxFfX1mdW5jdGlvbiBmZSh0ZSl7Ri5wdXNoKHRlKX1yZXR1cm57YmFjazpmZSxuZXh0VG9rZW46Y2UsZW5kT2ZGaWxlOm5lLHBvc2l0aW9uOnp9fW4uZXhwb3J0cz1lLmRlZmF1bHR9fSkscmE9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvcGFyc2UuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITAsZS5kZWZhdWx0PXZvaWQgMDt2YXIgaT1vKHp0KCkpLGE9byhfcigpKTtmdW5jdGlvbiBvKGgpe3JldHVybiBoJiZoLl9fZXNNb2R1bGU/aDp7ZGVmYXVsdDpofX1mdW5jdGlvbiBmKGgsZyl7dmFyIGM9bmV3IGEuZGVmYXVsdChoLGcpLHQ9bmV3IGkuZGVmYXVsdChjKTt0cnl7dC5wYXJzZSgpfWNhdGNoKHIpe3Rocm93IHJ9cmV0dXJuIHQucm9vdH12YXIgcD1mO2UuZGVmYXVsdD1wLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksa2Y9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvbGlzdC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPXtzcGxpdDpmdW5jdGlvbihmLHAsaCl7Zm9yKHZhciBnPVtdLGM9XCJcIix0PSExLHI9MCx1PSExLHM9ITEsbD0wO2w8Zi5sZW5ndGg7bCsrKXt2YXIgbT1mW2xdO3U/cz9zPSExOm09PT1cIlxcXFxcIj9zPSEwOm09PT11JiYodT0hMSk6bT09PSdcIid8fG09PT1cIidcIj91PW06bT09PVwiKFwiP3IrPTE6bT09PVwiKVwiP3I+MCYmKHItPTEpOnI9PT0wJiZwLmluZGV4T2YobSkhPT0tMSYmKHQ9ITApLHQ/KGMhPT1cIlwiJiZnLnB1c2goYy50cmltKCkpLGM9XCJcIix0PSExKTpjKz1tfXJldHVybihofHxjIT09XCJcIikmJmcucHVzaChjLnRyaW0oKSksZ30sc3BhY2U6ZnVuY3Rpb24oZil7dmFyIHA9W1wiIFwiLGBcbmAsXCJcdFwiXTtyZXR1cm4gaS5zcGxpdChmLHApfSxjb21tYTpmdW5jdGlvbihmKXtyZXR1cm4gaS5zcGxpdChmLFtcIixcIl0sITApfX0sYT1pO2UuZGVmYXVsdD1hLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksdGE9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvcnVsZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPW8oa3IoKSksYT1vKGtmKCkpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWZ1bmN0aW9uIGYodCxyKXtmb3IodmFyIHU9MDt1PHIubGVuZ3RoO3UrKyl7dmFyIHM9clt1XTtzLmVudW1lcmFibGU9cy5lbnVtZXJhYmxlfHwhMSxzLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBzJiYocy53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscy5rZXkscyl9fWZ1bmN0aW9uIHAodCxyLHUpe3JldHVybiByJiZmKHQucHJvdG90eXBlLHIpLHUmJmYodCx1KSx0fWZ1bmN0aW9uIGgodCxyKXt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPXJ9dmFyIGc9ZnVuY3Rpb24odCl7aChyLHQpO2Z1bmN0aW9uIHIodSl7dmFyIHM7cmV0dXJuIHM9dC5jYWxsKHRoaXMsdSl8fHRoaXMscy50eXBlPVwicnVsZVwiLHMubm9kZXN8fChzLm5vZGVzPVtdKSxzfXJldHVybiBwKHIsW3trZXk6XCJzZWxlY3RvcnNcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5kZWZhdWx0LmNvbW1hKHRoaXMuc2VsZWN0b3IpfSxzZXQ6ZnVuY3Rpb24ocyl7dmFyIGw9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yLm1hdGNoKC8sXFxzKi8pOm51bGwsbT1sP2xbMF06XCIsXCIrdGhpcy5yYXcoXCJiZXR3ZWVuXCIsXCJiZWZvcmVPcGVuXCIpO3RoaXMuc2VsZWN0b3I9cy5qb2luKG0pfX1dKSxyfShpLmRlZmF1bHQpLGM9ZztlLmRlZmF1bHQ9YyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLGtyPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MvbGliL2NvbnRhaW5lci5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPWYoZWEoKSksYT1mKHhyKCkpLG89ZihEdCgpKTtmdW5jdGlvbiBmKG0pe3JldHVybiBtJiZtLl9fZXNNb2R1bGU/bTp7ZGVmYXVsdDptfX1mdW5jdGlvbiBwKG0sdil7dmFyIHk7aWYodHlwZW9mIFN5bWJvbD5cInVcInx8bVtTeW1ib2wuaXRlcmF0b3JdPT1udWxsKXtpZihBcnJheS5pc0FycmF5KG0pfHwoeT1oKG0pKXx8diYmbSYmdHlwZW9mIG0ubGVuZ3RoPT1cIm51bWJlclwiKXt5JiYobT15KTt2YXIgdz0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB3Pj1tLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6bVt3KytdfX19dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfXJldHVybiB5PW1bU3ltYm9sLml0ZXJhdG9yXSgpLHkubmV4dC5iaW5kKHkpfWZ1bmN0aW9uIGgobSx2KXtpZighIW0pe2lmKHR5cGVvZiBtPT1cInN0cmluZ1wiKXJldHVybiBnKG0sdik7dmFyIHk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG0pLnNsaWNlKDgsLTEpO2lmKHk9PT1cIk9iamVjdFwiJiZtLmNvbnN0cnVjdG9yJiYoeT1tLmNvbnN0cnVjdG9yLm5hbWUpLHk9PT1cIk1hcFwifHx5PT09XCJTZXRcIilyZXR1cm4gQXJyYXkuZnJvbShtKTtpZih5PT09XCJBcmd1bWVudHNcInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoeSkpcmV0dXJuIGcobSx2KX19ZnVuY3Rpb24gZyhtLHYpeyh2PT1udWxsfHx2Pm0ubGVuZ3RoKSYmKHY9bS5sZW5ndGgpO2Zvcih2YXIgeT0wLHc9bmV3IEFycmF5KHYpO3k8djt5Kyspd1t5XT1tW3ldO3JldHVybiB3fWZ1bmN0aW9uIGMobSx2KXtmb3IodmFyIHk9MDt5PHYubGVuZ3RoO3krKyl7dmFyIHc9dlt5XTt3LmVudW1lcmFibGU9dy5lbnVtZXJhYmxlfHwhMSx3LmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiB3JiYody53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG0sdy5rZXksdyl9fWZ1bmN0aW9uIHQobSx2LHkpe3JldHVybiB2JiZjKG0ucHJvdG90eXBlLHYpLHkmJmMobSx5KSxtfWZ1bmN0aW9uIHIobSx2KXttLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHYucHJvdG90eXBlKSxtLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1tLG0uX19wcm90b19fPXZ9ZnVuY3Rpb24gdShtKXtyZXR1cm4gbS5tYXAoZnVuY3Rpb24odil7cmV0dXJuIHYubm9kZXMmJih2Lm5vZGVzPXUodi5ub2RlcykpLGRlbGV0ZSB2LnNvdXJjZSx2fSl9dmFyIHM9ZnVuY3Rpb24obSl7cih2LG0pO2Z1bmN0aW9uIHYoKXtyZXR1cm4gbS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9dmFyIHk9di5wcm90b3R5cGU7cmV0dXJuIHkucHVzaD1mdW5jdGlvbihkKXtyZXR1cm4gZC5wYXJlbnQ9dGhpcyx0aGlzLm5vZGVzLnB1c2goZCksdGhpc30seS5lYWNoPWZ1bmN0aW9uKGQpe3RoaXMubGFzdEVhY2h8fCh0aGlzLmxhc3RFYWNoPTApLHRoaXMuaW5kZXhlc3x8KHRoaXMuaW5kZXhlcz17fSksdGhpcy5sYXN0RWFjaCs9MTt2YXIgXz10aGlzLmxhc3RFYWNoO2lmKHRoaXMuaW5kZXhlc1tfXT0wLCEhdGhpcy5ub2Rlcyl7Zm9yKHZhciBTLHg7dGhpcy5pbmRleGVzW19dPHRoaXMubm9kZXMubGVuZ3RoJiYoUz10aGlzLmluZGV4ZXNbX10seD1kKHRoaXMubm9kZXNbU10sUykseCE9PSExKTspdGhpcy5pbmRleGVzW19dKz0xO3JldHVybiBkZWxldGUgdGhpcy5pbmRleGVzW19dLHh9fSx5LndhbGs9ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihfLFMpe3ZhciB4O3RyeXt4PWQoXyxTKX1jYXRjaChQKXtpZihQLnBvc3Rjc3NOb2RlPV8sUC5zdGFjayYmXy5zb3VyY2UmJi9cXG5cXHN7NH1hdCAvLnRlc3QoUC5zdGFjaykpe3ZhciBOPV8uc291cmNlO1Auc3RhY2s9UC5zdGFjay5yZXBsYWNlKC9cXG5cXHN7NH1hdCAvLFwiJCZcIitOLmlucHV0LmZyb20rXCI6XCIrTi5zdGFydC5saW5lK1wiOlwiK04uc3RhcnQuY29sdW1uK1wiJCZcIil9dGhyb3cgUH1yZXR1cm4geCE9PSExJiZfLndhbGsmJih4PV8ud2FsayhkKSkseH0pfSx5LndhbGtEZWNscz1mdW5jdGlvbihkLF8pe3JldHVybiBfP2QgaW5zdGFuY2VvZiBSZWdFeHA/dGhpcy53YWxrKGZ1bmN0aW9uKFMseCl7aWYoUy50eXBlPT09XCJkZWNsXCImJmQudGVzdChTLnByb3ApKXJldHVybiBfKFMseCl9KTp0aGlzLndhbGsoZnVuY3Rpb24oUyx4KXtpZihTLnR5cGU9PT1cImRlY2xcIiYmUy5wcm9wPT09ZClyZXR1cm4gXyhTLHgpfSk6KF89ZCx0aGlzLndhbGsoZnVuY3Rpb24oUyx4KXtpZihTLnR5cGU9PT1cImRlY2xcIilyZXR1cm4gXyhTLHgpfSkpfSx5LndhbGtSdWxlcz1mdW5jdGlvbihkLF8pe3JldHVybiBfP2QgaW5zdGFuY2VvZiBSZWdFeHA/dGhpcy53YWxrKGZ1bmN0aW9uKFMseCl7aWYoUy50eXBlPT09XCJydWxlXCImJmQudGVzdChTLnNlbGVjdG9yKSlyZXR1cm4gXyhTLHgpfSk6dGhpcy53YWxrKGZ1bmN0aW9uKFMseCl7aWYoUy50eXBlPT09XCJydWxlXCImJlMuc2VsZWN0b3I9PT1kKXJldHVybiBfKFMseCl9KTooXz1kLHRoaXMud2FsayhmdW5jdGlvbihTLHgpe2lmKFMudHlwZT09PVwicnVsZVwiKXJldHVybiBfKFMseCl9KSl9LHkud2Fsa0F0UnVsZXM9ZnVuY3Rpb24oZCxfKXtyZXR1cm4gXz9kIGluc3RhbmNlb2YgUmVnRXhwP3RoaXMud2FsayhmdW5jdGlvbihTLHgpe2lmKFMudHlwZT09PVwiYXRydWxlXCImJmQudGVzdChTLm5hbWUpKXJldHVybiBfKFMseCl9KTp0aGlzLndhbGsoZnVuY3Rpb24oUyx4KXtpZihTLnR5cGU9PT1cImF0cnVsZVwiJiZTLm5hbWU9PT1kKXJldHVybiBfKFMseCl9KTooXz1kLHRoaXMud2FsayhmdW5jdGlvbihTLHgpe2lmKFMudHlwZT09PVwiYXRydWxlXCIpcmV0dXJuIF8oUyx4KX0pKX0seS53YWxrQ29tbWVudHM9ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMud2FsayhmdW5jdGlvbihfLFMpe2lmKF8udHlwZT09PVwiY29tbWVudFwiKXJldHVybiBkKF8sUyl9KX0seS5hcHBlbmQ9ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheShkKSxTPTA7UzxkO1MrKylfW1NdPWFyZ3VtZW50c1tTXTtmb3IodmFyIHg9MCxOPV87eDxOLmxlbmd0aDt4KyspZm9yKHZhciBQPU5beF0sVz10aGlzLm5vcm1hbGl6ZShQLHRoaXMubGFzdCksVT1wKFcpLEg7IShIPVUoKSkuZG9uZTspe3ZhciBEPUgudmFsdWU7dGhpcy5ub2Rlcy5wdXNoKEQpfXJldHVybiB0aGlzfSx5LnByZXBlbmQ9ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheShkKSxTPTA7UzxkO1MrKylfW1NdPWFyZ3VtZW50c1tTXTtfPV8ucmV2ZXJzZSgpO2Zvcih2YXIgeD1wKF8pLE47IShOPXgoKSkuZG9uZTspe2Zvcih2YXIgUD1OLnZhbHVlLFc9dGhpcy5ub3JtYWxpemUoUCx0aGlzLmZpcnN0LFwicHJlcGVuZFwiKS5yZXZlcnNlKCksVT1wKFcpLEg7IShIPVUoKSkuZG9uZTspe3ZhciBEPUgudmFsdWU7dGhpcy5ub2Rlcy51bnNoaWZ0KEQpfWZvcih2YXIgJCBpbiB0aGlzLmluZGV4ZXMpdGhpcy5pbmRleGVzWyRdPXRoaXMuaW5kZXhlc1skXStXLmxlbmd0aH1yZXR1cm4gdGhpc30seS5jbGVhblJhd3M9ZnVuY3Rpb24oZCl7aWYobS5wcm90b3R5cGUuY2xlYW5SYXdzLmNhbGwodGhpcyxkKSx0aGlzLm5vZGVzKWZvcih2YXIgXz1wKHRoaXMubm9kZXMpLFM7IShTPV8oKSkuZG9uZTspe3ZhciB4PVMudmFsdWU7eC5jbGVhblJhd3MoZCl9fSx5Lmluc2VydEJlZm9yZT1mdW5jdGlvbihkLF8pe2Q9dGhpcy5pbmRleChkKTtmb3IodmFyIFM9ZD09PTA/XCJwcmVwZW5kXCI6ITEseD10aGlzLm5vcm1hbGl6ZShfLHRoaXMubm9kZXNbZF0sUykucmV2ZXJzZSgpLE49cCh4KSxQOyEoUD1OKCkpLmRvbmU7KXt2YXIgVz1QLnZhbHVlO3RoaXMubm9kZXMuc3BsaWNlKGQsMCxXKX12YXIgVTtmb3IodmFyIEggaW4gdGhpcy5pbmRleGVzKVU9dGhpcy5pbmRleGVzW0hdLGQ8PVUmJih0aGlzLmluZGV4ZXNbSF09VSt4Lmxlbmd0aCk7cmV0dXJuIHRoaXN9LHkuaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24oZCxfKXtkPXRoaXMuaW5kZXgoZCk7Zm9yKHZhciBTPXRoaXMubm9ybWFsaXplKF8sdGhpcy5ub2Rlc1tkXSkucmV2ZXJzZSgpLHg9cChTKSxOOyEoTj14KCkpLmRvbmU7KXt2YXIgUD1OLnZhbHVlO3RoaXMubm9kZXMuc3BsaWNlKGQrMSwwLFApfXZhciBXO2Zvcih2YXIgVSBpbiB0aGlzLmluZGV4ZXMpVz10aGlzLmluZGV4ZXNbVV0sZDxXJiYodGhpcy5pbmRleGVzW1VdPVcrUy5sZW5ndGgpO3JldHVybiB0aGlzfSx5LnJlbW92ZUNoaWxkPWZ1bmN0aW9uKGQpe2Q9dGhpcy5pbmRleChkKSx0aGlzLm5vZGVzW2RdLnBhcmVudD12b2lkIDAsdGhpcy5ub2Rlcy5zcGxpY2UoZCwxKTt2YXIgXztmb3IodmFyIFMgaW4gdGhpcy5pbmRleGVzKV89dGhpcy5pbmRleGVzW1NdLF8+PWQmJih0aGlzLmluZGV4ZXNbU109Xy0xKTtyZXR1cm4gdGhpc30seS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtmb3IodmFyIGQ9cCh0aGlzLm5vZGVzKSxfOyEoXz1kKCkpLmRvbmU7KXt2YXIgUz1fLnZhbHVlO1MucGFyZW50PXZvaWQgMH1yZXR1cm4gdGhpcy5ub2Rlcz1bXSx0aGlzfSx5LnJlcGxhY2VWYWx1ZXM9ZnVuY3Rpb24oZCxfLFMpe3JldHVybiBTfHwoUz1fLF89e30pLHRoaXMud2Fsa0RlY2xzKGZ1bmN0aW9uKHgpe18ucHJvcHMmJl8ucHJvcHMuaW5kZXhPZih4LnByb3ApPT09LTF8fF8uZmFzdCYmeC52YWx1ZS5pbmRleE9mKF8uZmFzdCk9PT0tMXx8KHgudmFsdWU9eC52YWx1ZS5yZXBsYWNlKGQsUykpfSksdGhpc30seS5ldmVyeT1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5ub2Rlcy5ldmVyeShkKX0seS5zb21lPWZ1bmN0aW9uKGQpe3JldHVybiB0aGlzLm5vZGVzLnNvbWUoZCl9LHkuaW5kZXg9ZnVuY3Rpb24oZCl7cmV0dXJuIHR5cGVvZiBkPT1cIm51bWJlclwiP2Q6dGhpcy5ub2Rlcy5pbmRleE9mKGQpfSx5Lm5vcm1hbGl6ZT1mdW5jdGlvbihkLF8pe3ZhciBTPXRoaXM7aWYodHlwZW9mIGQ9PVwic3RyaW5nXCIpe3ZhciB4PXJhKCk7ZD11KHgoZCkubm9kZXMpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShkKSl7ZD1kLnNsaWNlKDApO2Zvcih2YXIgTj1wKGQpLFA7IShQPU4oKSkuZG9uZTspe3ZhciBXPVAudmFsdWU7Vy5wYXJlbnQmJlcucGFyZW50LnJlbW92ZUNoaWxkKFcsXCJpZ25vcmVcIil9fWVsc2UgaWYoZC50eXBlPT09XCJyb290XCIpe2Q9ZC5ub2Rlcy5zbGljZSgwKTtmb3IodmFyIFU9cChkKSxIOyEoSD1VKCkpLmRvbmU7KXt2YXIgRD1ILnZhbHVlO0QucGFyZW50JiZELnBhcmVudC5yZW1vdmVDaGlsZChELFwiaWdub3JlXCIpfX1lbHNlIGlmKGQudHlwZSlkPVtkXTtlbHNlIGlmKGQucHJvcCl7aWYodHlwZW9mIGQudmFsdWU+XCJ1XCIpdGhyb3cgbmV3IEVycm9yKFwiVmFsdWUgZmllbGQgaXMgbWlzc2VkIGluIG5vZGUgY3JlYXRpb25cIik7dHlwZW9mIGQudmFsdWUhPVwic3RyaW5nXCImJihkLnZhbHVlPVN0cmluZyhkLnZhbHVlKSksZD1bbmV3IGkuZGVmYXVsdChkKV19ZWxzZSBpZihkLnNlbGVjdG9yKXt2YXIgJD10YSgpO2Q9W25ldyAkKGQpXX1lbHNlIGlmKGQubmFtZSl7dmFyIEI9bmEoKTtkPVtuZXcgQihkKV19ZWxzZSBpZihkLnRleHQpZD1bbmV3IGEuZGVmYXVsdChkKV07ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIG5vZGUgdHlwZSBpbiBub2RlIGNyZWF0aW9uXCIpO3ZhciBPPWQubWFwKGZ1bmN0aW9uKGope3JldHVybiBqLnBhcmVudCYmai5wYXJlbnQucmVtb3ZlQ2hpbGQoaiksdHlwZW9mIGoucmF3cy5iZWZvcmU+XCJ1XCImJl8mJnR5cGVvZiBfLnJhd3MuYmVmb3JlPFwidVwiJiYoai5yYXdzLmJlZm9yZT1fLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxzXS9nLFwiXCIpKSxqLnBhcmVudD1TLGp9KTtyZXR1cm4gT30sdCh2LFt7a2V5OlwiZmlyc3RcIixnZXQ6ZnVuY3Rpb24oKXtpZighIXRoaXMubm9kZXMpcmV0dXJuIHRoaXMubm9kZXNbMF19fSx7a2V5OlwibGFzdFwiLGdldDpmdW5jdGlvbigpe2lmKCEhdGhpcy5ub2RlcylyZXR1cm4gdGhpcy5ub2Rlc1t0aGlzLm5vZGVzLmxlbmd0aC0xXX19XSksdn0oby5kZWZhdWx0KSxsPXM7ZS5kZWZhdWx0PWwsbi5leHBvcnRzPWUuZGVmYXVsdH19KSxuYT1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi9hdC1ydWxlLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwLGUuZGVmYXVsdD12b2lkIDA7dmFyIGk9YShrcigpKTtmdW5jdGlvbiBhKGgpe3JldHVybiBoJiZoLl9fZXNNb2R1bGU/aDp7ZGVmYXVsdDpofX1mdW5jdGlvbiBvKGgsZyl7aC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSksaC5wcm90b3R5cGUuY29uc3RydWN0b3I9aCxoLl9fcHJvdG9fXz1nfXZhciBmPWZ1bmN0aW9uKGgpe28oZyxoKTtmdW5jdGlvbiBnKHQpe3ZhciByO3JldHVybiByPWguY2FsbCh0aGlzLHQpfHx0aGlzLHIudHlwZT1cImF0cnVsZVwiLHJ9dmFyIGM9Zy5wcm90b3R5cGU7cmV0dXJuIGMuYXBwZW5kPWZ1bmN0aW9uKCl7dmFyIHI7dGhpcy5ub2Rlc3x8KHRoaXMubm9kZXM9W10pO2Zvcih2YXIgdT1hcmd1bWVudHMubGVuZ3RoLHM9bmV3IEFycmF5KHUpLGw9MDtsPHU7bCsrKXNbbF09YXJndW1lbnRzW2xdO3JldHVybihyPWgucHJvdG90eXBlLmFwcGVuZCkuY2FsbC5hcHBseShyLFt0aGlzXS5jb25jYXQocykpfSxjLnByZXBlbmQ9ZnVuY3Rpb24oKXt2YXIgcjt0aGlzLm5vZGVzfHwodGhpcy5ub2Rlcz1bXSk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkodSksbD0wO2w8dTtsKyspc1tsXT1hcmd1bWVudHNbbF07cmV0dXJuKHI9aC5wcm90b3R5cGUucHJlcGVuZCkuY2FsbC5hcHBseShyLFt0aGlzXS5jb25jYXQocykpfSxnfShpLmRlZmF1bHQpLHA9ZjtlLmRlZmF1bHQ9cCxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLFNmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MvbGliL21hcC1nZW5lcmF0b3IuanNcIihlLG4pe0EoKSxuLmV4cG9ydHM9Y2xhc3N7Z2VuZXJhdGUoKXt9fX19KSxPZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi93YXJuLW9uY2UuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITAsZS5kZWZhdWx0PWE7dmFyIGk9e307ZnVuY3Rpb24gYShvKXtpW29dfHwoaVtvXT0hMCx0eXBlb2YgY29uc29sZTxcInVcIiYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4obykpfW4uZXhwb3J0cz1lLmRlZmF1bHR9fSksVGY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvd2FybmluZy5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbyhwLGgpe2lmKGg9PT12b2lkIDAmJihoPXt9KSx0aGlzLnR5cGU9XCJ3YXJuaW5nXCIsdGhpcy50ZXh0PXAsaC5ub2RlJiZoLm5vZGUuc291cmNlKXt2YXIgZz1oLm5vZGUucG9zaXRpb25CeShoKTt0aGlzLmxpbmU9Zy5saW5lLHRoaXMuY29sdW1uPWcuY29sdW1ufWZvcih2YXIgYyBpbiBoKXRoaXNbY109aFtjXX12YXIgZj1vLnByb3RvdHlwZTtyZXR1cm4gZi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGU/dGhpcy5ub2RlLmVycm9yKHRoaXMudGV4dCx7cGx1Z2luOnRoaXMucGx1Z2luLGluZGV4OnRoaXMuaW5kZXgsd29yZDp0aGlzLndvcmR9KS5tZXNzYWdlOnRoaXMucGx1Z2luP3RoaXMucGx1Z2luK1wiOiBcIit0aGlzLnRleHQ6dGhpcy50ZXh0fSxvfSgpLGE9aTtlLmRlZmF1bHQ9YSxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLEVmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MvbGliL3Jlc3VsdC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpLGUuX19lc01vZHVsZT0hMCxlLmRlZmF1bHQ9dm9pZCAwO3ZhciBpPWEoVGYoKSk7ZnVuY3Rpb24gYShnKXtyZXR1cm4gZyYmZy5fX2VzTW9kdWxlP2c6e2RlZmF1bHQ6Z319ZnVuY3Rpb24gbyhnLGMpe2Zvcih2YXIgdD0wO3Q8Yy5sZW5ndGg7dCsrKXt2YXIgcj1jW3RdO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZyxyLmtleSxyKX19ZnVuY3Rpb24gZihnLGMsdCl7cmV0dXJuIGMmJm8oZy5wcm90b3R5cGUsYyksdCYmbyhnLHQpLGd9dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKHQscix1KXt0aGlzLnByb2Nlc3Nvcj10LHRoaXMubWVzc2FnZXM9W10sdGhpcy5yb290PXIsdGhpcy5vcHRzPXUsdGhpcy5jc3M9dm9pZCAwLHRoaXMubWFwPXZvaWQgMH12YXIgYz1nLnByb3RvdHlwZTtyZXR1cm4gYy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNzc30sYy53YXJuPWZ1bmN0aW9uKHIsdSl7dT09PXZvaWQgMCYmKHU9e30pLHUucGx1Z2lufHx0aGlzLmxhc3RQbHVnaW4mJnRoaXMubGFzdFBsdWdpbi5wb3N0Y3NzUGx1Z2luJiYodS5wbHVnaW49dGhpcy5sYXN0UGx1Z2luLnBvc3Rjc3NQbHVnaW4pO3ZhciBzPW5ldyBpLmRlZmF1bHQocix1KTtyZXR1cm4gdGhpcy5tZXNzYWdlcy5wdXNoKHMpLHN9LGMud2FybmluZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlcy5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIHIudHlwZT09PVwid2FybmluZ1wifSl9LGYoZyxbe2tleTpcImNvbnRlbnRcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jc3N9fV0pLGd9KCksaD1wO2UuZGVmYXVsdD1oLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksaWE9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvbGF6eS1yZXN1bHQuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITAsZS5kZWZhdWx0PXZvaWQgMDt2YXIgaT1oKFNmKCkpLGE9aChabygpKSxvPWgoT2YoKSksZj1oKEVmKCkpLHA9aChyYSgpKTtmdW5jdGlvbiBoKHYpe3JldHVybiB2JiZ2Ll9fZXNNb2R1bGU/djp7ZGVmYXVsdDp2fX1mdW5jdGlvbiBnKHYseSl7dmFyIHc7aWYodHlwZW9mIFN5bWJvbD5cInVcInx8dltTeW1ib2wuaXRlcmF0b3JdPT1udWxsKXtpZihBcnJheS5pc0FycmF5KHYpfHwodz1jKHYpKXx8eSYmdiYmdHlwZW9mIHYubGVuZ3RoPT1cIm51bWJlclwiKXt3JiYodj13KTt2YXIgZD0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBkPj12Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dltkKytdfX19dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfXJldHVybiB3PXZbU3ltYm9sLml0ZXJhdG9yXSgpLHcubmV4dC5iaW5kKHcpfWZ1bmN0aW9uIGModix5KXtpZighIXYpe2lmKHR5cGVvZiB2PT1cInN0cmluZ1wiKXJldHVybiB0KHYseSk7dmFyIHc9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHYpLnNsaWNlKDgsLTEpO2lmKHc9PT1cIk9iamVjdFwiJiZ2LmNvbnN0cnVjdG9yJiYodz12LmNvbnN0cnVjdG9yLm5hbWUpLHc9PT1cIk1hcFwifHx3PT09XCJTZXRcIilyZXR1cm4gQXJyYXkuZnJvbSh2KTtpZih3PT09XCJBcmd1bWVudHNcInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodykpcmV0dXJuIHQodix5KX19ZnVuY3Rpb24gdCh2LHkpeyh5PT1udWxsfHx5PnYubGVuZ3RoKSYmKHk9di5sZW5ndGgpO2Zvcih2YXIgdz0wLGQ9bmV3IEFycmF5KHkpO3c8eTt3KyspZFt3XT12W3ddO3JldHVybiBkfWZ1bmN0aW9uIHIodix5KXtmb3IodmFyIHc9MDt3PHkubGVuZ3RoO3crKyl7dmFyIGQ9eVt3XTtkLmVudW1lcmFibGU9ZC5lbnVtZXJhYmxlfHwhMSxkLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBkJiYoZC53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsZC5rZXksZCl9fWZ1bmN0aW9uIHUodix5LHcpe3JldHVybiB5JiZyKHYucHJvdG90eXBlLHkpLHcmJnIodix3KSx2fWZ1bmN0aW9uIHModil7cmV0dXJuIHR5cGVvZiB2PT1cIm9iamVjdFwiJiZ0eXBlb2Ygdi50aGVuPT1cImZ1bmN0aW9uXCJ9dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHcsZCxfKXt0aGlzLnN0cmluZ2lmaWVkPSExLHRoaXMucHJvY2Vzc2VkPSExO3ZhciBTO2lmKHR5cGVvZiBkPT1cIm9iamVjdFwiJiZkIT09bnVsbCYmZC50eXBlPT09XCJyb290XCIpUz1kO2Vsc2UgaWYoZCBpbnN0YW5jZW9mIHZ8fGQgaW5zdGFuY2VvZiBmLmRlZmF1bHQpUz1kLnJvb3QsZC5tYXAmJih0eXBlb2YgXy5tYXA+XCJ1XCImJihfLm1hcD17fSksXy5tYXAuaW5saW5lfHwoXy5tYXAuaW5saW5lPSExKSxfLm1hcC5wcmV2PWQubWFwKTtlbHNle3ZhciB4PXAuZGVmYXVsdDtfLnN5bnRheCYmKHg9Xy5zeW50YXgucGFyc2UpLF8ucGFyc2VyJiYoeD1fLnBhcnNlcikseC5wYXJzZSYmKHg9eC5wYXJzZSk7dHJ5e1M9eChkLF8pfWNhdGNoKE4pe3RoaXMuZXJyb3I9Tn19dGhpcy5yZXN1bHQ9bmV3IGYuZGVmYXVsdCh3LFMsXyl9dmFyIHk9di5wcm90b3R5cGU7cmV0dXJuIHkud2FybmluZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zeW5jKCkud2FybmluZ3MoKX0seS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNzc30seS50aGVuPWZ1bmN0aW9uKGQsXyl7cmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKGQsXyl9LHkuY2F0Y2g9ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuYXN5bmMoKS5jYXRjaChkKX0seS5maW5hbGx5PWZ1bmN0aW9uKGQpe3JldHVybiB0aGlzLmFzeW5jKCkudGhlbihkLGQpfSx5LmhhbmRsZUVycm9yPWZ1bmN0aW9uKGQsXyl7dHJ5e2lmKHRoaXMuZXJyb3I9ZCxkLm5hbWU9PT1cIkNzc1N5bnRheEVycm9yXCImJiFkLnBsdWdpbilkLnBsdWdpbj1fLnBvc3Rjc3NQbHVnaW4sZC5zZXRNZXNzYWdlKCk7ZWxzZSBpZihfLnBvc3Rjc3NWZXJzaW9uJiYhMSl2YXIgUyx4LE4sUCxXfWNhdGNoKFUpe2NvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoVSl9fSx5LmFzeW5jVGljaz1mdW5jdGlvbihkLF8pe3ZhciBTPXRoaXM7aWYodGhpcy5wbHVnaW4+PXRoaXMucHJvY2Vzc29yLnBsdWdpbnMubGVuZ3RoKXJldHVybiB0aGlzLnByb2Nlc3NlZD0hMCxkKCk7dHJ5e3ZhciB4PXRoaXMucHJvY2Vzc29yLnBsdWdpbnNbdGhpcy5wbHVnaW5dLE49dGhpcy5ydW4oeCk7dGhpcy5wbHVnaW4rPTEscyhOKT9OLnRoZW4oZnVuY3Rpb24oKXtTLmFzeW5jVGljayhkLF8pfSkuY2F0Y2goZnVuY3Rpb24oUCl7Uy5oYW5kbGVFcnJvcihQLHgpLFMucHJvY2Vzc2VkPSEwLF8oUCl9KTp0aGlzLmFzeW5jVGljayhkLF8pfWNhdGNoKFApe3RoaXMucHJvY2Vzc2VkPSEwLF8oUCl9fSx5LmFzeW5jPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztyZXR1cm4gdGhpcy5wcm9jZXNzZWQ/bmV3IFByb21pc2UoZnVuY3Rpb24oXyxTKXtkLmVycm9yP1MoZC5lcnJvcik6XyhkLnN0cmluZ2lmeSgpKX0pOnRoaXMucHJvY2Vzc2luZz90aGlzLnByb2Nlc3Npbmc6KHRoaXMucHJvY2Vzc2luZz1uZXcgUHJvbWlzZShmdW5jdGlvbihfLFMpe2lmKGQuZXJyb3IpcmV0dXJuIFMoZC5lcnJvcik7ZC5wbHVnaW49MCxkLmFzeW5jVGljayhfLFMpfSkudGhlbihmdW5jdGlvbigpe3JldHVybiBkLnByb2Nlc3NlZD0hMCxkLnN0cmluZ2lmeSgpfSksdGhpcy5wcm9jZXNzaW5nKX0seS5zeW5jPWZ1bmN0aW9uKCl7aWYodGhpcy5wcm9jZXNzZWQpcmV0dXJuIHRoaXMucmVzdWx0O2lmKHRoaXMucHJvY2Vzc2VkPSEwLHRoaXMucHJvY2Vzc2luZyl0aHJvdyBuZXcgRXJyb3IoXCJVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zXCIpO2lmKHRoaXMuZXJyb3IpdGhyb3cgdGhpcy5lcnJvcjtmb3IodmFyIGQ9Zyh0aGlzLnJlc3VsdC5wcm9jZXNzb3IucGx1Z2lucyksXzshKF89ZCgpKS5kb25lOyl7dmFyIFM9Xy52YWx1ZSx4PXRoaXMucnVuKFMpO2lmKHMoeCkpdGhyb3cgbmV3IEVycm9yKFwiVXNlIHByb2Nlc3MoY3NzKS50aGVuKGNiKSB0byB3b3JrIHdpdGggYXN5bmMgcGx1Z2luc1wiKX1yZXR1cm4gdGhpcy5yZXN1bHR9LHkucnVuPWZ1bmN0aW9uKGQpe3RoaXMucmVzdWx0Lmxhc3RQbHVnaW49ZDt0cnl7cmV0dXJuIGQodGhpcy5yZXN1bHQucm9vdCx0aGlzLnJlc3VsdCl9Y2F0Y2goXyl7dGhyb3cgdGhpcy5oYW5kbGVFcnJvcihfLGQpLF99fSx5LnN0cmluZ2lmeT1mdW5jdGlvbigpe2lmKHRoaXMuc3RyaW5naWZpZWQpcmV0dXJuIHRoaXMucmVzdWx0O3RoaXMuc3RyaW5naWZpZWQ9ITAsdGhpcy5zeW5jKCk7dmFyIGQ9dGhpcy5yZXN1bHQub3B0cyxfPWEuZGVmYXVsdDtkLnN5bnRheCYmKF89ZC5zeW50YXguc3RyaW5naWZ5KSxkLnN0cmluZ2lmaWVyJiYoXz1kLnN0cmluZ2lmaWVyKSxfLnN0cmluZ2lmeSYmKF89Xy5zdHJpbmdpZnkpO3ZhciBTPW5ldyBpLmRlZmF1bHQoXyx0aGlzLnJlc3VsdC5yb290LHRoaXMucmVzdWx0Lm9wdHMpLHg9Uy5nZW5lcmF0ZSgpO3JldHVybiB0aGlzLnJlc3VsdC5jc3M9eFswXSx0aGlzLnJlc3VsdC5tYXA9eFsxXSx0aGlzLnJlc3VsdH0sdSh2LFt7a2V5OlwicHJvY2Vzc29yXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0LnByb2Nlc3Nvcn19LHtrZXk6XCJvcHRzXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0Lm9wdHN9fSx7a2V5OlwiY3NzXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY3NzfX0se2tleTpcImNvbnRlbnRcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5jb250ZW50fX0se2tleTpcIm1hcFwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmluZ2lmeSgpLm1hcH19LHtrZXk6XCJyb290XCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3luYygpLnJvb3R9fSx7a2V5OlwibWVzc2FnZXNcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zeW5jKCkubWVzc2FnZXN9fV0pLHZ9KCksbT1sO2UuZGVmYXVsdD1tLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSkscWY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy9saWIvcHJvY2Vzc29yLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCksZS5fX2VzTW9kdWxlPSEwLGUuZGVmYXVsdD12b2lkIDA7dmFyIGk9YShpYSgpKTtmdW5jdGlvbiBhKGMpe3JldHVybiBjJiZjLl9fZXNNb2R1bGU/Yzp7ZGVmYXVsdDpjfX1mdW5jdGlvbiBvKGMsdCl7dmFyIHI7aWYodHlwZW9mIFN5bWJvbD5cInVcInx8Y1tTeW1ib2wuaXRlcmF0b3JdPT1udWxsKXtpZihBcnJheS5pc0FycmF5KGMpfHwocj1mKGMpKXx8dCYmYyYmdHlwZW9mIGMubGVuZ3RoPT1cIm51bWJlclwiKXtyJiYoYz1yKTt2YXIgdT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB1Pj1jLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6Y1t1KytdfX19dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfXJldHVybiByPWNbU3ltYm9sLml0ZXJhdG9yXSgpLHIubmV4dC5iaW5kKHIpfWZ1bmN0aW9uIGYoYyx0KXtpZighIWMpe2lmKHR5cGVvZiBjPT1cInN0cmluZ1wiKXJldHVybiBwKGMsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGMpLnNsaWNlKDgsLTEpO2lmKHI9PT1cIk9iamVjdFwiJiZjLmNvbnN0cnVjdG9yJiYocj1jLmNvbnN0cnVjdG9yLm5hbWUpLHI9PT1cIk1hcFwifHxyPT09XCJTZXRcIilyZXR1cm4gQXJyYXkuZnJvbShjKTtpZihyPT09XCJBcmd1bWVudHNcInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIHAoYyx0KX19ZnVuY3Rpb24gcChjLHQpeyh0PT1udWxsfHx0PmMubGVuZ3RoKSYmKHQ9Yy5sZW5ndGgpO2Zvcih2YXIgcj0wLHU9bmV3IEFycmF5KHQpO3I8dDtyKyspdVtyXT1jW3JdO3JldHVybiB1fXZhciBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhyKXtyPT09dm9pZCAwJiYocj1bXSksdGhpcy52ZXJzaW9uPVwiNy4wLjM5XCIsdGhpcy5wbHVnaW5zPXRoaXMubm9ybWFsaXplKHIpfXZhciB0PWMucHJvdG90eXBlO3JldHVybiB0LnVzZT1mdW5jdGlvbih1KXtyZXR1cm4gdGhpcy5wbHVnaW5zPXRoaXMucGx1Z2lucy5jb25jYXQodGhpcy5ub3JtYWxpemUoW3VdKSksdGhpc30sdC5wcm9jZXNzPWZ1bmN0aW9uKHIpe2Z1bmN0aW9uIHUocyl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB1LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHIudG9TdHJpbmcoKX0sdX0oZnVuY3Rpb24ocix1KXtyZXR1cm4gdT09PXZvaWQgMCYmKHU9e30pLHRoaXMucGx1Z2lucy5sZW5ndGg9PT0wJiYodS5wYXJzZXIsdS5zdHJpbmdpZmllciksbmV3IGkuZGVmYXVsdCh0aGlzLHIsdSl9KSx0Lm5vcm1hbGl6ZT1mdW5jdGlvbih1KXtmb3IodmFyIHM9W10sbD1vKHUpLG07IShtPWwoKSkuZG9uZTspe3ZhciB2PW0udmFsdWU7aWYodi5wb3N0Y3NzPT09ITApe3ZhciB5PXYoKTt0aHJvdyBuZXcgRXJyb3IoXCJQb3N0Q1NTIHBsdWdpbiBcIit5LnBvc3Rjc3NQbHVnaW4rYCByZXF1aXJlcyBQb3N0Q1NTIDguXG5NaWdyYXRpb24gZ3VpZGUgZm9yIGVuZC11c2Vyczpcbmh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL3Bvc3Rjc3Mvd2lraS9Qb3N0Q1NTLTgtZm9yLWVuZC11c2Vyc2ApfWlmKHYucG9zdGNzcyYmKHY9di5wb3N0Y3NzKSx0eXBlb2Ygdj09XCJvYmplY3RcIiYmQXJyYXkuaXNBcnJheSh2LnBsdWdpbnMpKXM9cy5jb25jYXQodi5wbHVnaW5zKTtlbHNlIGlmKHR5cGVvZiB2PT1cImZ1bmN0aW9uXCIpcy5wdXNoKHYpO2Vsc2UgaWYoISh0eXBlb2Ygdj09XCJvYmplY3RcIiYmKHYucGFyc2V8fHYuc3RyaW5naWZ5KSkpdGhyb3cgdHlwZW9mIHY9PVwib2JqZWN0XCImJnYucG9zdGNzc1BsdWdpbj9uZXcgRXJyb3IoXCJQb3N0Q1NTIHBsdWdpbiBcIit2LnBvc3Rjc3NQbHVnaW4rYCByZXF1aXJlcyBQb3N0Q1NTIDguXG5NaWdyYXRpb24gZ3VpZGUgZm9yIGVuZC11c2Vyczpcbmh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL3Bvc3Rjc3Mvd2lraS9Qb3N0Q1NTLTgtZm9yLWVuZC11c2Vyc2ApOm5ldyBFcnJvcih2K1wiIGlzIG5vdCBhIFBvc3RDU1MgcGx1Z2luXCIpfXJldHVybiBzfSxjfSgpLGc9aDtlLmRlZmF1bHQ9ZyxuLmV4cG9ydHM9ZS5kZWZhdWx0fX0pLEFmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MvbGliL3Jvb3QuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITAsZS5kZWZhdWx0PXZvaWQgMDt2YXIgaT1hKGtyKCkpO2Z1bmN0aW9uIGEodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWZ1bmN0aW9uIG8odCxyKXt2YXIgdTtpZih0eXBlb2YgU3ltYm9sPlwidVwifHx0W1N5bWJvbC5pdGVyYXRvcl09PW51bGwpe2lmKEFycmF5LmlzQXJyYXkodCl8fCh1PWYodCkpfHxyJiZ0JiZ0eXBlb2YgdC5sZW5ndGg9PVwibnVtYmVyXCIpe3UmJih0PXUpO3ZhciBzPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHM+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W3MrK119fX10aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9cmV0dXJuIHU9dFtTeW1ib2wuaXRlcmF0b3JdKCksdS5uZXh0LmJpbmQodSl9ZnVuY3Rpb24gZih0LHIpe2lmKCEhdCl7aWYodHlwZW9mIHQ9PVwic3RyaW5nXCIpcmV0dXJuIHAodCxyKTt2YXIgdT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7aWYodT09PVwiT2JqZWN0XCImJnQuY29uc3RydWN0b3ImJih1PXQuY29uc3RydWN0b3IubmFtZSksdT09PVwiTWFwXCJ8fHU9PT1cIlNldFwiKXJldHVybiBBcnJheS5mcm9tKHQpO2lmKHU9PT1cIkFyZ3VtZW50c1wifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh1KSlyZXR1cm4gcCh0LHIpfX1mdW5jdGlvbiBwKHQscil7KHI9PW51bGx8fHI+dC5sZW5ndGgpJiYocj10Lmxlbmd0aCk7Zm9yKHZhciB1PTAscz1uZXcgQXJyYXkocik7dTxyO3UrKylzW3VdPXRbdV07cmV0dXJuIHN9ZnVuY3Rpb24gaCh0LHIpe3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189cn12YXIgZz1mdW5jdGlvbih0KXtoKHIsdCk7ZnVuY3Rpb24gcihzKXt2YXIgbDtyZXR1cm4gbD10LmNhbGwodGhpcyxzKXx8dGhpcyxsLnR5cGU9XCJyb290XCIsbC5ub2Rlc3x8KGwubm9kZXM9W10pLGx9dmFyIHU9ci5wcm90b3R5cGU7cmV0dXJuIHUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24obCxtKXt2YXIgdj10aGlzLmluZGV4KGwpO3JldHVybiFtJiZ2PT09MCYmdGhpcy5ub2Rlcy5sZW5ndGg+MSYmKHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmU9dGhpcy5ub2Rlc1t2XS5yYXdzLmJlZm9yZSksdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQuY2FsbCh0aGlzLGwpfSx1Lm5vcm1hbGl6ZT1mdW5jdGlvbihsLG0sdil7dmFyIHk9dC5wcm90b3R5cGUubm9ybWFsaXplLmNhbGwodGhpcyxsKTtpZihtKXtpZih2PT09XCJwcmVwZW5kXCIpdGhpcy5ub2Rlcy5sZW5ndGg+MT9tLnJhd3MuYmVmb3JlPXRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmU6ZGVsZXRlIG0ucmF3cy5iZWZvcmU7ZWxzZSBpZih0aGlzLmZpcnN0IT09bSlmb3IodmFyIHc9byh5KSxkOyEoZD13KCkpLmRvbmU7KXt2YXIgXz1kLnZhbHVlO18ucmF3cy5iZWZvcmU9bS5yYXdzLmJlZm9yZX19cmV0dXJuIHl9LHUudG9SZXN1bHQ9ZnVuY3Rpb24obCl7bD09PXZvaWQgMCYmKGw9e30pO3ZhciBtPWlhKCksdj1xZigpLHk9bmV3IG0obmV3IHYsdGhpcyxsKTtyZXR1cm4geS5zdHJpbmdpZnkoKX0scn0oaS5kZWZhdWx0KSxjPWc7ZS5kZWZhdWx0PWMsbi5leHBvcnRzPWUuZGVmYXVsdH19KSx6dD1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzL2xpYi9wYXJzZXIuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKSxlLl9fZXNNb2R1bGU9ITAsZS5kZWZhdWx0PXZvaWQgMDt2YXIgaT1nKGVhKCkpLGE9ZyhMdCgpKSxvPWcoeHIoKSksZj1nKG5hKCkpLHA9ZyhBZigpKSxoPWcodGEoKSk7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHUpe3RoaXMuaW5wdXQ9dSx0aGlzLnJvb3Q9bmV3IHAuZGVmYXVsdCx0aGlzLmN1cnJlbnQ9dGhpcy5yb290LHRoaXMuc3BhY2VzPVwiXCIsdGhpcy5zZW1pY29sb249ITEsdGhpcy5jcmVhdGVUb2tlbml6ZXIoKSx0aGlzLnJvb3Quc291cmNlPXtpbnB1dDp1LHN0YXJ0OntsaW5lOjEsY29sdW1uOjF9fX12YXIgcj10LnByb3RvdHlwZTtyZXR1cm4gci5jcmVhdGVUb2tlbml6ZXI9ZnVuY3Rpb24oKXt0aGlzLnRva2VuaXplcj0oMCxhLmRlZmF1bHQpKHRoaXMuaW5wdXQpfSxyLnBhcnNlPWZ1bmN0aW9uKCl7Zm9yKHZhciBzOyF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKTspc3dpdGNoKHM9dGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCksc1swXSl7Y2FzZVwic3BhY2VcIjp0aGlzLnNwYWNlcys9c1sxXTticmVhaztjYXNlXCI7XCI6dGhpcy5mcmVlU2VtaWNvbG9uKHMpO2JyZWFrO2Nhc2VcIn1cIjp0aGlzLmVuZChzKTticmVhaztjYXNlXCJjb21tZW50XCI6dGhpcy5jb21tZW50KHMpO2JyZWFrO2Nhc2VcImF0LXdvcmRcIjp0aGlzLmF0cnVsZShzKTticmVhaztjYXNlXCJ7XCI6dGhpcy5lbXB0eVJ1bGUocyk7YnJlYWs7ZGVmYXVsdDp0aGlzLm90aGVyKHMpO2JyZWFrfXRoaXMuZW5kRmlsZSgpfSxyLmNvbW1lbnQ9ZnVuY3Rpb24ocyl7dmFyIGw9bmV3IG8uZGVmYXVsdDt0aGlzLmluaXQobCxzWzJdLHNbM10pLGwuc291cmNlLmVuZD17bGluZTpzWzRdLGNvbHVtbjpzWzVdfTt2YXIgbT1zWzFdLnNsaWNlKDIsLTIpO2lmKC9eXFxzKiQvLnRlc3QobSkpbC50ZXh0PVwiXCIsbC5yYXdzLmxlZnQ9bSxsLnJhd3MucmlnaHQ9XCJcIjtlbHNle3ZhciB2PW0ubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKikkLyk7bC50ZXh0PXZbMl0sbC5yYXdzLmxlZnQ9dlsxXSxsLnJhd3MucmlnaHQ9dlszXX19LHIuZW1wdHlSdWxlPWZ1bmN0aW9uKHMpe3ZhciBsPW5ldyBoLmRlZmF1bHQ7dGhpcy5pbml0KGwsc1syXSxzWzNdKSxsLnNlbGVjdG9yPVwiXCIsbC5yYXdzLmJldHdlZW49XCJcIix0aGlzLmN1cnJlbnQ9bH0sci5vdGhlcj1mdW5jdGlvbihzKXtmb3IodmFyIGw9ITEsbT1udWxsLHY9ITEseT1udWxsLHc9W10sZD1bXSxfPXM7Xzspe2lmKG09X1swXSxkLnB1c2goXyksbT09PVwiKFwifHxtPT09XCJbXCIpeXx8KHk9Xyksdy5wdXNoKG09PT1cIihcIj9cIilcIjpcIl1cIik7ZWxzZSBpZih3Lmxlbmd0aD09PTApaWYobT09PVwiO1wiKWlmKHYpe3RoaXMuZGVjbChkKTtyZXR1cm59ZWxzZSBicmVhaztlbHNlIGlmKG09PT1cIntcIil7dGhpcy5ydWxlKGQpO3JldHVybn1lbHNlIGlmKG09PT1cIn1cIil7dGhpcy50b2tlbml6ZXIuYmFjayhkLnBvcCgpKSxsPSEwO2JyZWFrfWVsc2UgbT09PVwiOlwiJiYodj0hMCk7ZWxzZSBtPT09d1t3Lmxlbmd0aC0xXSYmKHcucG9wKCksdy5sZW5ndGg9PT0wJiYoeT1udWxsKSk7Xz10aGlzLnRva2VuaXplci5uZXh0VG9rZW4oKX1pZih0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSYmKGw9ITApLHcubGVuZ3RoPjAmJnRoaXMudW5jbG9zZWRCcmFja2V0KHkpLGwmJnYpe2Zvcig7ZC5sZW5ndGgmJihfPWRbZC5sZW5ndGgtMV1bMF0sIShfIT09XCJzcGFjZVwiJiZfIT09XCJjb21tZW50XCIpKTspdGhpcy50b2tlbml6ZXIuYmFjayhkLnBvcCgpKTt0aGlzLmRlY2woZCl9ZWxzZSB0aGlzLnVua25vd25Xb3JkKGQpfSxyLnJ1bGU9ZnVuY3Rpb24ocyl7cy5wb3AoKTt2YXIgbD1uZXcgaC5kZWZhdWx0O3RoaXMuaW5pdChsLHNbMF1bMl0sc1swXVszXSksbC5yYXdzLmJldHdlZW49dGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21FbmQocyksdGhpcy5yYXcobCxcInNlbGVjdG9yXCIscyksdGhpcy5jdXJyZW50PWx9LHIuZGVjbD1mdW5jdGlvbihzKXt2YXIgbD1uZXcgaS5kZWZhdWx0O3RoaXMuaW5pdChsKTt2YXIgbT1zW3MubGVuZ3RoLTFdO2ZvcihtWzBdPT09XCI7XCImJih0aGlzLnNlbWljb2xvbj0hMCxzLnBvcCgpKSxtWzRdP2wuc291cmNlLmVuZD17bGluZTptWzRdLGNvbHVtbjptWzVdfTpsLnNvdXJjZS5lbmQ9e2xpbmU6bVsyXSxjb2x1bW46bVszXX07c1swXVswXSE9PVwid29yZFwiOylzLmxlbmd0aD09PTEmJnRoaXMudW5rbm93bldvcmQocyksbC5yYXdzLmJlZm9yZSs9cy5zaGlmdCgpWzFdO2ZvcihsLnNvdXJjZS5zdGFydD17bGluZTpzWzBdWzJdLGNvbHVtbjpzWzBdWzNdfSxsLnByb3A9XCJcIjtzLmxlbmd0aDspe3ZhciB2PXNbMF1bMF07aWYodj09PVwiOlwifHx2PT09XCJzcGFjZVwifHx2PT09XCJjb21tZW50XCIpYnJlYWs7bC5wcm9wKz1zLnNoaWZ0KClbMV19bC5yYXdzLmJldHdlZW49XCJcIjtmb3IodmFyIHk7cy5sZW5ndGg7KWlmKHk9cy5zaGlmdCgpLHlbMF09PT1cIjpcIil7bC5yYXdzLmJldHdlZW4rPXlbMV07YnJlYWt9ZWxzZSB5WzBdPT09XCJ3b3JkXCImJi9cXHcvLnRlc3QoeVsxXSkmJnRoaXMudW5rbm93bldvcmQoW3ldKSxsLnJhd3MuYmV0d2Vlbis9eVsxXTsobC5wcm9wWzBdPT09XCJfXCJ8fGwucHJvcFswXT09PVwiKlwiKSYmKGwucmF3cy5iZWZvcmUrPWwucHJvcFswXSxsLnByb3A9bC5wcm9wLnNsaWNlKDEpKSxsLnJhd3MuYmV0d2Vlbis9dGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydChzKSx0aGlzLnByZWNoZWNrTWlzc2VkU2VtaWNvbG9uKHMpO2Zvcih2YXIgdz1zLmxlbmd0aC0xO3c+MDt3LS0pe2lmKHk9c1t3XSx5WzFdLnRvTG93ZXJDYXNlKCk9PT1cIiFpbXBvcnRhbnRcIil7bC5pbXBvcnRhbnQ9ITA7dmFyIGQ9dGhpcy5zdHJpbmdGcm9tKHMsdyk7ZD10aGlzLnNwYWNlc0Zyb21FbmQocykrZCxkIT09XCIgIWltcG9ydGFudFwiJiYobC5yYXdzLmltcG9ydGFudD1kKTticmVha31lbHNlIGlmKHlbMV0udG9Mb3dlckNhc2UoKT09PVwiaW1wb3J0YW50XCIpe2Zvcih2YXIgXz1zLnNsaWNlKDApLFM9XCJcIix4PXc7eD4wO3gtLSl7dmFyIE49X1t4XVswXTtpZihTLnRyaW0oKS5pbmRleE9mKFwiIVwiKT09PTAmJk4hPT1cInNwYWNlXCIpYnJlYWs7Uz1fLnBvcCgpWzFdK1N9Uy50cmltKCkuaW5kZXhPZihcIiFcIik9PT0wJiYobC5pbXBvcnRhbnQ9ITAsbC5yYXdzLmltcG9ydGFudD1TLHM9Xyl9aWYoeVswXSE9PVwic3BhY2VcIiYmeVswXSE9PVwiY29tbWVudFwiKWJyZWFrfXRoaXMucmF3KGwsXCJ2YWx1ZVwiLHMpLGwudmFsdWUuaW5kZXhPZihcIjpcIikhPT0tMSYmdGhpcy5jaGVja01pc3NlZFNlbWljb2xvbihzKX0sci5hdHJ1bGU9ZnVuY3Rpb24ocyl7dmFyIGw9bmV3IGYuZGVmYXVsdDtsLm5hbWU9c1sxXS5zbGljZSgxKSxsLm5hbWU9PT1cIlwiJiZ0aGlzLnVubmFtZWRBdHJ1bGUobCxzKSx0aGlzLmluaXQobCxzWzJdLHNbM10pO2Zvcih2YXIgbSx2LHk9ITEsdz0hMSxkPVtdOyF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKTspe2lmKHM9dGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCksc1swXT09PVwiO1wiKXtsLnNvdXJjZS5lbmQ9e2xpbmU6c1syXSxjb2x1bW46c1szXX0sdGhpcy5zZW1pY29sb249ITA7YnJlYWt9ZWxzZSBpZihzWzBdPT09XCJ7XCIpe3c9ITA7YnJlYWt9ZWxzZSBpZihzWzBdPT09XCJ9XCIpe2lmKGQubGVuZ3RoPjApe2Zvcih2PWQubGVuZ3RoLTEsbT1kW3ZdO20mJm1bMF09PT1cInNwYWNlXCI7KW09ZFstLXZdO20mJihsLnNvdXJjZS5lbmQ9e2xpbmU6bVs0XSxjb2x1bW46bVs1XX0pfXRoaXMuZW5kKHMpO2JyZWFrfWVsc2UgZC5wdXNoKHMpO2lmKHRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKXt5PSEwO2JyZWFrfX1sLnJhd3MuYmV0d2Vlbj10aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZChkKSxkLmxlbmd0aD8obC5yYXdzLmFmdGVyTmFtZT10aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KGQpLHRoaXMucmF3KGwsXCJwYXJhbXNcIixkKSx5JiYocz1kW2QubGVuZ3RoLTFdLGwuc291cmNlLmVuZD17bGluZTpzWzRdLGNvbHVtbjpzWzVdfSx0aGlzLnNwYWNlcz1sLnJhd3MuYmV0d2VlbixsLnJhd3MuYmV0d2Vlbj1cIlwiKSk6KGwucmF3cy5hZnRlck5hbWU9XCJcIixsLnBhcmFtcz1cIlwiKSx3JiYobC5ub2Rlcz1bXSx0aGlzLmN1cnJlbnQ9bCl9LHIuZW5kPWZ1bmN0aW9uKHMpe3RoaXMuY3VycmVudC5ub2RlcyYmdGhpcy5jdXJyZW50Lm5vZGVzLmxlbmd0aCYmKHRoaXMuY3VycmVudC5yYXdzLnNlbWljb2xvbj10aGlzLnNlbWljb2xvbiksdGhpcy5zZW1pY29sb249ITEsdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXI9KHRoaXMuY3VycmVudC5yYXdzLmFmdGVyfHxcIlwiKSt0aGlzLnNwYWNlcyx0aGlzLnNwYWNlcz1cIlwiLHRoaXMuY3VycmVudC5wYXJlbnQ/KHRoaXMuY3VycmVudC5zb3VyY2UuZW5kPXtsaW5lOnNbMl0sY29sdW1uOnNbM119LHRoaXMuY3VycmVudD10aGlzLmN1cnJlbnQucGFyZW50KTp0aGlzLnVuZXhwZWN0ZWRDbG9zZShzKX0sci5lbmRGaWxlPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50LnBhcmVudCYmdGhpcy51bmNsb3NlZEJsb2NrKCksdGhpcy5jdXJyZW50Lm5vZGVzJiZ0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoJiYodGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uPXRoaXMuc2VtaWNvbG9uKSx0aGlzLmN1cnJlbnQucmF3cy5hZnRlcj0odGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXJ8fFwiXCIpK3RoaXMuc3BhY2VzfSxyLmZyZWVTZW1pY29sb249ZnVuY3Rpb24ocyl7aWYodGhpcy5zcGFjZXMrPXNbMV0sdGhpcy5jdXJyZW50Lm5vZGVzKXt2YXIgbD10aGlzLmN1cnJlbnQubm9kZXNbdGhpcy5jdXJyZW50Lm5vZGVzLmxlbmd0aC0xXTtsJiZsLnR5cGU9PT1cInJ1bGVcIiYmIWwucmF3cy5vd25TZW1pY29sb24mJihsLnJhd3Mub3duU2VtaWNvbG9uPXRoaXMuc3BhY2VzLHRoaXMuc3BhY2VzPVwiXCIpfX0sci5pbml0PWZ1bmN0aW9uKHMsbCxtKXt0aGlzLmN1cnJlbnQucHVzaChzKSxzLnNvdXJjZT17c3RhcnQ6e2xpbmU6bCxjb2x1bW46bX0saW5wdXQ6dGhpcy5pbnB1dH0scy5yYXdzLmJlZm9yZT10aGlzLnNwYWNlcyx0aGlzLnNwYWNlcz1cIlwiLHMudHlwZSE9PVwiY29tbWVudFwiJiYodGhpcy5zZW1pY29sb249ITEpfSxyLnJhdz1mdW5jdGlvbihzLGwsbSl7Zm9yKHZhciB2LHksdz1tLmxlbmd0aCxkPVwiXCIsXz0hMCxTLHgsTj0vXihbLnwjXSk/KFtcXHddKSsvaSxQPTA7UDx3O1ArPTEpe2lmKHY9bVtQXSx5PXZbMF0seT09PVwiY29tbWVudFwiJiZzLnR5cGU9PT1cInJ1bGVcIil7eD1tW1AtMV0sUz1tW1ArMV0seFswXSE9PVwic3BhY2VcIiYmU1swXSE9PVwic3BhY2VcIiYmTi50ZXN0KHhbMV0pJiZOLnRlc3QoU1sxXSk/ZCs9dlsxXTpfPSExO2NvbnRpbnVlfXk9PT1cImNvbW1lbnRcInx8eT09PVwic3BhY2VcIiYmUD09PXctMT9fPSExOmQrPXZbMV19aWYoIV8pe3ZhciBXPW0ucmVkdWNlKGZ1bmN0aW9uKFUsSCl7cmV0dXJuIFUrSFsxXX0sXCJcIik7cy5yYXdzW2xdPXt2YWx1ZTpkLHJhdzpXfX1zW2xdPWR9LHIuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kPWZ1bmN0aW9uKHMpe2Zvcih2YXIgbCxtPVwiXCI7cy5sZW5ndGgmJihsPXNbcy5sZW5ndGgtMV1bMF0sIShsIT09XCJzcGFjZVwiJiZsIT09XCJjb21tZW50XCIpKTspbT1zLnBvcCgpWzFdK207cmV0dXJuIG19LHIuc3BhY2VzQW5kQ29tbWVudHNGcm9tU3RhcnQ9ZnVuY3Rpb24ocyl7Zm9yKHZhciBsLG09XCJcIjtzLmxlbmd0aCYmKGw9c1swXVswXSwhKGwhPT1cInNwYWNlXCImJmwhPT1cImNvbW1lbnRcIikpOyltKz1zLnNoaWZ0KClbMV07cmV0dXJuIG19LHIuc3BhY2VzRnJvbUVuZD1mdW5jdGlvbihzKXtmb3IodmFyIGwsbT1cIlwiO3MubGVuZ3RoJiYobD1zW3MubGVuZ3RoLTFdWzBdLGw9PT1cInNwYWNlXCIpOyltPXMucG9wKClbMV0rbTtyZXR1cm4gbX0sci5zdHJpbmdGcm9tPWZ1bmN0aW9uKHMsbCl7Zm9yKHZhciBtPVwiXCIsdj1sO3Y8cy5sZW5ndGg7disrKW0rPXNbdl1bMV07cmV0dXJuIHMuc3BsaWNlKGwscy5sZW5ndGgtbCksbX0sci5jb2xvbj1mdW5jdGlvbihzKXtmb3IodmFyIGw9MCxtLHYseSx3PTA7dzxzLmxlbmd0aDt3Kyspe2lmKG09c1t3XSx2PW1bMF0sdj09PVwiKFwiJiYobCs9MSksdj09PVwiKVwiJiYobC09MSksbD09PTAmJnY9PT1cIjpcIilpZigheSl0aGlzLmRvdWJsZUNvbG9uKG0pO2Vsc2V7aWYoeVswXT09PVwid29yZFwiJiZ5WzFdPT09XCJwcm9naWRcIiljb250aW51ZTtyZXR1cm4gd315PW19cmV0dXJuITF9LHIudW5jbG9zZWRCcmFja2V0PWZ1bmN0aW9uKHMpe3Rocm93IHRoaXMuaW5wdXQuZXJyb3IoXCJVbmNsb3NlZCBicmFja2V0XCIsc1syXSxzWzNdKX0sci51bmtub3duV29yZD1mdW5jdGlvbihzKXt0aHJvdyB0aGlzLmlucHV0LmVycm9yKFwiVW5rbm93biB3b3JkXCIsc1swXVsyXSxzWzBdWzNdKX0sci51bmV4cGVjdGVkQ2xvc2U9ZnVuY3Rpb24ocyl7dGhyb3cgdGhpcy5pbnB1dC5lcnJvcihcIlVuZXhwZWN0ZWQgfVwiLHNbMl0sc1szXSl9LHIudW5jbG9zZWRCbG9jaz1mdW5jdGlvbigpe3ZhciBzPXRoaXMuY3VycmVudC5zb3VyY2Uuc3RhcnQ7dGhyb3cgdGhpcy5pbnB1dC5lcnJvcihcIlVuY2xvc2VkIGJsb2NrXCIscy5saW5lLHMuY29sdW1uKX0sci5kb3VibGVDb2xvbj1mdW5jdGlvbihzKXt0aHJvdyB0aGlzLmlucHV0LmVycm9yKFwiRG91YmxlIGNvbG9uXCIsc1syXSxzWzNdKX0sci51bm5hbWVkQXRydWxlPWZ1bmN0aW9uKHMsbCl7dGhyb3cgdGhpcy5pbnB1dC5lcnJvcihcIkF0LXJ1bGUgd2l0aG91dCBuYW1lXCIsbFsyXSxsWzNdKX0sci5wcmVjaGVja01pc3NlZFNlbWljb2xvbj1mdW5jdGlvbigpe30sci5jaGVja01pc3NlZFNlbWljb2xvbj1mdW5jdGlvbihzKXt2YXIgbD10aGlzLmNvbG9uKHMpO2lmKGwhPT0hMSl7Zm9yKHZhciBtPTAsdix5PWwtMTt5Pj0wJiYodj1zW3ldLCEodlswXSE9PVwic3BhY2VcIiYmKG0rPTEsbT09PTIpKSk7eS0tKTt0aHJvdyB0aGlzLmlucHV0LmVycm9yKFwiTWlzc2VkIHNlbWljb2xvblwiLHZbMl0sdlszXSl9fSx0fSgpO2UuZGVmYXVsdD1jLG4uZXhwb3J0cz1lLmRlZmF1bHR9fSksUGY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1sZXNzL2xpYi9ub2Rlcy9pbmxpbmUtY29tbWVudC5qc1wiKGUsbil7QSgpO3ZhciBpPUx0KCksYT1fcigpO24uZXhwb3J0cz17aXNJbmxpbmVDb21tZW50KG8pe2lmKG9bMF09PT1cIndvcmRcIiYmb1sxXS5zbGljZSgwLDIpPT09XCIvL1wiKXtsZXQgZj1vLHA9W10saDtmb3IoO287KXtpZigvXFxyP1xcbi8udGVzdChvWzFdKSl7aWYoL1snXCJdLipcXHI/XFxuLy50ZXN0KG9bMV0pKXtwLnB1c2gob1sxXS5zdWJzdHJpbmcoMCxvWzFdLmluZGV4T2YoYFxuYCkpKTtsZXQgYz1vWzFdLnN1YnN0cmluZyhvWzFdLmluZGV4T2YoYFxuYCkpO2MrPXRoaXMuaW5wdXQuY3NzLnZhbHVlT2YoKS5zdWJzdHJpbmcodGhpcy50b2tlbml6ZXIucG9zaXRpb24oKSksdGhpcy5pbnB1dD1uZXcgYShjKSx0aGlzLnRva2VuaXplcj1pKHRoaXMuaW5wdXQpfWVsc2UgdGhpcy50b2tlbml6ZXIuYmFjayhvKTticmVha31wLnB1c2gob1sxXSksaD1vLG89dGhpcy50b2tlbml6ZXIubmV4dFRva2VuKHtpZ25vcmVVbmNsb3NlZDohMH0pfWxldCBnPVtcImNvbW1lbnRcIixwLmpvaW4oXCJcIiksZlsyXSxmWzNdLGhbMl0saFszXV07cmV0dXJuIHRoaXMuaW5saW5lQ29tbWVudChnKSwhMH1lbHNlIGlmKG9bMV09PT1cIi9cIil7bGV0IGY9dGhpcy50b2tlbml6ZXIubmV4dFRva2VuKHtpZ25vcmVVbmNsb3NlZDohMH0pO2lmKGZbMF09PT1cImNvbW1lbnRcIiYmL15cXC9cXCovLnRlc3QoZlsxXSkpcmV0dXJuIGZbMF09XCJ3b3JkXCIsZlsxXT1mWzFdLnNsaWNlKDEpLG9bMV09XCIvL1wiLHRoaXMudG9rZW5pemVyLmJhY2soZiksbi5leHBvcnRzLmlzSW5saW5lQ29tbWVudC5iaW5kKHRoaXMpKG8pfXJldHVybiExfX19fSksUmY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1sZXNzL2xpYi9ub2Rlcy9pbnRlcnBvbGF0aW9uLmpzXCIoZSxuKXtBKCksbi5leHBvcnRzPXtpbnRlcnBvbGF0aW9uKGkpe2xldCBhPWksbz1baV0sZj1bXCJ3b3JkXCIsXCJ7XCIsXCJ9XCJdO2lmKGk9dGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCksYVsxXS5sZW5ndGg+MXx8aVswXSE9PVwie1wiKXJldHVybiB0aGlzLnRva2VuaXplci5iYWNrKGkpLCExO2Zvcig7aSYmZi5pbmNsdWRlcyhpWzBdKTspby5wdXNoKGkpLGk9dGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCk7bGV0IHA9by5tYXAocj0+clsxXSk7W2FdPW87bGV0IGg9by5wb3AoKSxnPVthWzJdLGFbM11dLGM9W2hbNF18fGhbMl0saFs1XXx8aFszXV0sdD1bXCJ3b3JkXCIscC5qb2luKFwiXCIpXS5jb25jYXQoZyxjKTtyZXR1cm4gdGhpcy50b2tlbml6ZXIuYmFjayhpKSx0aGlzLnRva2VuaXplci5iYWNrKHQpLCEwfX19fSksSWY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1sZXNzL2xpYi9ub2Rlcy9taXhpbi5qc1wiKGUsbil7QSgpO3ZhciBpPS9eI1swLTlhLWZBLUZdezZ9JHxeI1swLTlhLWZBLUZdezN9JC8sYT0vXFwuWzAtOV0vLG89Zj0+e2xldFsscF09ZixbaF09cDtyZXR1cm4oaD09PVwiLlwifHxoPT09XCIjXCIpJiZpLnRlc3QocCk9PT0hMSYmYS50ZXN0KHApPT09ITF9O24uZXhwb3J0cz17aXNNaXhpblRva2VuOm99fX0pLENmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbGVzcy9saWIvbm9kZXMvaW1wb3J0LmpzXCIoZSxuKXtBKCk7dmFyIGk9THQoKSxhPS9edXJsXFwoKC4rKVxcKS87bi5leHBvcnRzPW89PntsZXR7bmFtZTpmLHBhcmFtczpwPVwiXCJ9PW87aWYoZj09PVwiaW1wb3J0XCImJnAubGVuZ3RoKXtvLmltcG9ydD0hMDtsZXQgaD1pKHtjc3M6cH0pO2ZvcihvLmZpbGVuYW1lPXAucmVwbGFjZShhLFwiJDFcIik7IWguZW5kT2ZGaWxlKCk7KXtsZXRbZyxjXT1oLm5leHRUb2tlbigpO2lmKGc9PT1cIndvcmRcIiYmYz09PVwidXJsXCIpcmV0dXJuO2lmKGc9PT1cImJyYWNrZXRzXCIpe28ub3B0aW9ucz1jLG8uZmlsZW5hbWU9cC5yZXBsYWNlKGMsXCJcIikudHJpbSgpO2JyZWFrfX19fX19KSxOZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLWxlc3MvbGliL25vZGVzL3ZhcmlhYmxlLmpzXCIoZSxuKXtBKCk7dmFyIGk9LzokLyxhPS9eOihcXHMrKT8vO24uZXhwb3J0cz1vPT57bGV0e25hbWU6ZixwYXJhbXM6cD1cIlwifT1vO2lmKG8ubmFtZS5zbGljZSgtMSk9PT1cIjpcIil7aWYoaS50ZXN0KGYpKXtsZXRbaF09Zi5tYXRjaChpKTtvLm5hbWU9Zi5yZXBsYWNlKGgsXCJcIiksby5yYXdzLmFmdGVyTmFtZT1oKyhvLnJhd3MuYWZ0ZXJOYW1lfHxcIlwiKSxvLnZhcmlhYmxlPSEwLG8udmFsdWU9by5wYXJhbXN9aWYoYS50ZXN0KHApKXtsZXRbaF09cC5tYXRjaChhKTtvLnZhbHVlPXAucmVwbGFjZShoLFwiXCIpLG8ucmF3cy5hZnRlck5hbWU9KG8ucmF3cy5hZnRlck5hbWV8fFwiXCIpK2gsby52YXJpYWJsZT0hMH19fX19KSxqZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLWxlc3MvbGliL0xlc3NQYXJzZXIuanNcIihlLG4pe0EoKTt2YXIgaT14cigpLGE9enQoKSx7aXNJbmxpbmVDb21tZW50Om99PVBmKCkse2ludGVycG9sYXRpb246Zn09UmYoKSx7aXNNaXhpblRva2VuOnB9PUlmKCksaD1DZigpLGc9TmYoKSxjPS8oIVxccyppbXBvcnRhbnQpJC9pO24uZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubGFzdE5vZGU9bnVsbH1hdHJ1bGUocil7Zi5iaW5kKHRoaXMpKHIpfHwoc3VwZXIuYXRydWxlKHIpLGgodGhpcy5sYXN0Tm9kZSksZyh0aGlzLmxhc3ROb2RlKSl9ZGVjbCgpe3N1cGVyLmRlY2woLi4uYXJndW1lbnRzKSwvZXh0ZW5kXFwoLitcXCkvaS50ZXN0KHRoaXMubGFzdE5vZGUudmFsdWUpJiYodGhpcy5sYXN0Tm9kZS5leHRlbmQ9ITApfWVhY2gocil7clswXVsxXT1cIiBcIi5jb25jYXQoclswXVsxXSk7bGV0IHU9ci5maW5kSW5kZXgoeT0+eVswXT09PVwiKFwiKSxzPXIucmV2ZXJzZSgpLmZpbmQoeT0+eVswXT09PVwiKVwiKSxsPXIucmV2ZXJzZSgpLmluZGV4T2Yocyksdj1yLnNwbGljZSh1LGwpLm1hcCh5PT55WzFdKS5qb2luKFwiXCIpO2ZvcihsZXQgeSBvZiByLnJldmVyc2UoKSl0aGlzLnRva2VuaXplci5iYWNrKHkpO3RoaXMuYXRydWxlKHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpKSx0aGlzLmxhc3ROb2RlLmZ1bmN0aW9uPSEwLHRoaXMubGFzdE5vZGUucGFyYW1zPXZ9aW5pdChyLHUscyl7c3VwZXIuaW5pdChyLHUscyksdGhpcy5sYXN0Tm9kZT1yfWlubGluZUNvbW1lbnQocil7bGV0IHU9bmV3IGkscz1yWzFdLnNsaWNlKDIpO2lmKHRoaXMuaW5pdCh1LHJbMl0sclszXSksdS5zb3VyY2UuZW5kPXtsaW5lOnJbNF0sY29sdW1uOnJbNV19LHUuaW5saW5lPSEwLHUucmF3cy5iZWdpbj1cIi8vXCIsL15cXHMqJC8udGVzdChzKSl1LnRleHQ9XCJcIix1LnJhd3MubGVmdD1zLHUucmF3cy5yaWdodD1cIlwiO2Vsc2V7bGV0IGw9cy5tYXRjaCgvXihcXHMqKShbXl0qW15cXHNdKShcXHMqKSQvKTtbLHUucmF3cy5sZWZ0LHUudGV4dCx1LnJhd3MucmlnaHRdPWx9fW1peGluKHIpe2xldFt1XT1yLHM9dVsxXS5zbGljZSgwLDEpLGw9ci5maW5kSW5kZXgoZD0+ZFswXT09PVwiYnJhY2tldHNcIiksbT1yLmZpbmRJbmRleChkPT5kWzBdPT09XCIoXCIpLHY9XCJcIjtpZigobDwwfHxsPjMpJiZtPjApe2xldCBkPXIucmVkdWNlKCgkLEIsTyk9PkJbMF09PT1cIilcIj9POiQpLFM9ci5zbGljZShtLGQrbSkubWFwKCQ9PiRbMV0pLmpvaW4oXCJcIiksW3hdPXIuc2xpY2UobSksTj1beFsyXSx4WzNdXSxbUF09ci5zbGljZShkLGQrMSksVz1bUFsyXSxQWzNdXSxVPVtcImJyYWNrZXRzXCIsU10uY29uY2F0KE4sVyksSD1yLnNsaWNlKDAsbSksRD1yLnNsaWNlKGQrMSk7cj1ILHIucHVzaChVKSxyPXIuY29uY2F0KEQpfWxldCB5PVtdO2ZvcihsZXQgZCBvZiByKWlmKChkWzFdPT09XCIhXCJ8fHkubGVuZ3RoKSYmeS5wdXNoKGQpLGRbMV09PT1cImltcG9ydGFudFwiKWJyZWFrO2lmKHkubGVuZ3RoKXtsZXRbZF09eSxfPXIuaW5kZXhPZihkKSxTPXlbeS5sZW5ndGgtMV0seD1bZFsyXSxkWzNdXSxOPVtTWzRdLFNbNV1dLFA9eS5tYXAoVT0+VVsxXSkuam9pbihcIlwiKSxXPVtcIndvcmRcIixQXS5jb25jYXQoeCxOKTtyLnNwbGljZShfLHkubGVuZ3RoLFcpfWxldCB3PXIuZmluZEluZGV4KGQ9PmMudGVzdChkWzFdKSk7dz4wJiYoWyx2XT1yW3ddLHIuc3BsaWNlKHcsMSkpO2ZvcihsZXQgZCBvZiByLnJldmVyc2UoKSl0aGlzLnRva2VuaXplci5iYWNrKGQpO3RoaXMuYXRydWxlKHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpKSx0aGlzLmxhc3ROb2RlLm1peGluPSEwLHRoaXMubGFzdE5vZGUucmF3cy5pZGVudGlmaWVyPXMsdiYmKHRoaXMubGFzdE5vZGUuaW1wb3J0YW50PSEwLHRoaXMubGFzdE5vZGUucmF3cy5pbXBvcnRhbnQ9dil9b3RoZXIocil7by5iaW5kKHRoaXMpKHIpfHxzdXBlci5vdGhlcihyKX1ydWxlKHIpe2xldCB1PXJbci5sZW5ndGgtMV0scz1yW3IubGVuZ3RoLTJdO2lmKHNbMF09PT1cImF0LXdvcmRcIiYmdVswXT09PVwie1wiJiYodGhpcy50b2tlbml6ZXIuYmFjayh1KSxmLmJpbmQodGhpcykocykpKXtsZXQgbT10aGlzLnRva2VuaXplci5uZXh0VG9rZW4oKTtyPXIuc2xpY2UoMCxyLmxlbmd0aC0yKS5jb25jYXQoW21dKTtmb3IobGV0IHYgb2Ygci5yZXZlcnNlKCkpdGhpcy50b2tlbml6ZXIuYmFjayh2KTtyZXR1cm59c3VwZXIucnVsZShyKSwvOmV4dGVuZFxcKC4rXFwpL2kudGVzdCh0aGlzLmxhc3ROb2RlLnNlbGVjdG9yKSYmKHRoaXMubGFzdE5vZGUuZXh0ZW5kPSEwKX11bmtub3duV29yZChyKXtsZXRbdV09cjtpZihyWzBdWzFdPT09XCJlYWNoXCImJnJbMV1bMF09PT1cIihcIil7dGhpcy5lYWNoKHIpO3JldHVybn1pZihwKHUpKXt0aGlzLm1peGluKHIpO3JldHVybn1zdXBlci51bmtub3duV29yZChyKX19fX0pLE1mPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbGVzcy9saWIvTGVzc1N0cmluZ2lmaWVyLmpzXCIoZSxuKXtBKCk7dmFyIGk9YnIoKTtuLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBpe2F0cnVsZShvLGYpe2lmKCFvLm1peGluJiYhby52YXJpYWJsZSYmIW8uZnVuY3Rpb24pe3N1cGVyLmF0cnVsZShvLGYpO3JldHVybn1sZXQgcD1vLmZ1bmN0aW9uP1wiXCI6by5yYXdzLmlkZW50aWZpZXJ8fFwiQFwiLGg9XCJcIi5jb25jYXQocCkuY29uY2F0KG8ubmFtZSksZz1vLnBhcmFtcz90aGlzLnJhd1ZhbHVlKG8sXCJwYXJhbXNcIik6XCJcIixjPW8ucmF3cy5pbXBvcnRhbnR8fFwiXCI7aWYoby52YXJpYWJsZSYmKGc9by52YWx1ZSksdHlwZW9mIG8ucmF3cy5hZnRlck5hbWU8XCJ1XCI/aCs9by5yYXdzLmFmdGVyTmFtZTpnJiYoaCs9XCIgXCIpLG8ubm9kZXMpdGhpcy5ibG9jayhvLGgrZytjKTtlbHNle2xldCB0PShvLnJhd3MuYmV0d2Vlbnx8XCJcIikrYysoZj9cIjtcIjpcIlwiKTt0aGlzLmJ1aWxkZXIoaCtnK3Qsbyl9fWNvbW1lbnQobyl7aWYoby5pbmxpbmUpe2xldCBmPXRoaXMucmF3KG8sXCJsZWZ0XCIsXCJjb21tZW50TGVmdFwiKSxwPXRoaXMucmF3KG8sXCJyaWdodFwiLFwiY29tbWVudFJpZ2h0XCIpO3RoaXMuYnVpbGRlcihcIi8vXCIuY29uY2F0KGYpLmNvbmNhdChvLnRleHQpLmNvbmNhdChwKSxvKX1lbHNlIHN1cGVyLmNvbW1lbnQobyl9fX19KSxEZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLWxlc3MvbGliL2luZGV4LmpzXCIoZSxuKXtBKCk7dmFyIGk9X3IoKSxhPWpmKCksbz1NZigpO24uZXhwb3J0cz17cGFyc2UoZixwKXtsZXQgaD1uZXcgaShmLHApLGc9bmV3IGEoaCk7cmV0dXJuIGcucGFyc2UoKSxnLnJvb3R9LHN0cmluZ2lmeShmLHApe25ldyBvKHApLnN0cmluZ2lmeShmKX0sbm9kZVRvU3RyaW5nKGYpe2xldCBwPVwiXCI7cmV0dXJuIG4uZXhwb3J0cy5zdHJpbmdpZnkoZixoPT57cCs9aH0pLHB9fX19KSxMZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXNjc3MvbGliL3Njc3Mtc3RyaW5naWZpZXIuanNcIihlLG4pe1widXNlIHN0cmljdFwiO0EoKTtmdW5jdGlvbiBpKGYscCl7Zi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwLnByb3RvdHlwZSksZi5wcm90b3R5cGUuY29uc3RydWN0b3I9ZixmLl9fcHJvdG9fXz1wfXZhciBhPWJyKCksbz1mdW5jdGlvbihmKXtpKHAsZik7ZnVuY3Rpb24gcCgpe3JldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc312YXIgaD1wLnByb3RvdHlwZTtyZXR1cm4gaC5jb21tZW50PWZ1bmN0aW9uKGMpe3ZhciB0PXRoaXMucmF3KGMsXCJsZWZ0XCIsXCJjb21tZW50TGVmdFwiKSxyPXRoaXMucmF3KGMsXCJyaWdodFwiLFwiY29tbWVudFJpZ2h0XCIpO2lmKGMucmF3cy5pbmxpbmUpe3ZhciB1PWMucmF3cy50ZXh0fHxjLnRleHQ7dGhpcy5idWlsZGVyKFwiLy9cIit0K3UrcixjKX1lbHNlIHRoaXMuYnVpbGRlcihcIi8qXCIrdCtjLnRleHQrcitcIiovXCIsYyl9LGguZGVjbD1mdW5jdGlvbihjLHQpe2lmKCFjLmlzTmVzdGVkKWYucHJvdG90eXBlLmRlY2wuY2FsbCh0aGlzLGMsdCk7ZWxzZXt2YXIgcj10aGlzLnJhdyhjLFwiYmV0d2VlblwiLFwiY29sb25cIiksdT1jLnByb3Arcit0aGlzLnJhd1ZhbHVlKGMsXCJ2YWx1ZVwiKTtjLmltcG9ydGFudCYmKHUrPWMucmF3cy5pbXBvcnRhbnR8fFwiICFpbXBvcnRhbnRcIiksdGhpcy5idWlsZGVyKHUrXCJ7XCIsYyxcInN0YXJ0XCIpO3ZhciBzO2Mubm9kZXMmJmMubm9kZXMubGVuZ3RoPyh0aGlzLmJvZHkoYykscz10aGlzLnJhdyhjLFwiYWZ0ZXJcIikpOnM9dGhpcy5yYXcoYyxcImFmdGVyXCIsXCJlbXB0eUJvZHlcIikscyYmdGhpcy5idWlsZGVyKHMpLHRoaXMuYnVpbGRlcihcIn1cIixjLFwiZW5kXCIpfX0saC5yYXdWYWx1ZT1mdW5jdGlvbihjLHQpe3ZhciByPWNbdF0sdT1jLnJhd3NbdF07cmV0dXJuIHUmJnUudmFsdWU9PT1yP3Uuc2Nzcz91LnNjc3M6dS5yYXc6cn0scH0oYSk7bi5leHBvcnRzPW99fSksemY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zY3NzL2xpYi9zY3NzLXN0cmluZ2lmeS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPUxmKCk7bi5leHBvcnRzPWZ1bmN0aW9uKG8sZil7dmFyIHA9bmV3IGkoZik7cC5zdHJpbmdpZnkobyl9fX0pLEJmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2Nzcy9saWIvbmVzdGVkLWRlY2xhcmF0aW9uLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7ZnVuY3Rpb24gaShmLHApe2YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocC5wcm90b3R5cGUpLGYucHJvdG90eXBlLmNvbnN0cnVjdG9yPWYsZi5fX3Byb3RvX189cH12YXIgYT1rcigpLG89ZnVuY3Rpb24oZil7aShwLGYpO2Z1bmN0aW9uIHAoaCl7dmFyIGc7cmV0dXJuIGc9Zi5jYWxsKHRoaXMsaCl8fHRoaXMsZy50eXBlPVwiZGVjbFwiLGcuaXNOZXN0ZWQ9ITAsZy5ub2Rlc3x8KGcubm9kZXM9W10pLGd9cmV0dXJuIHB9KGEpO24uZXhwb3J0cz1vfX0pLEZmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2Nzcy9saWIvc2Nzcy10b2tlbml6ZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPVwiJ1wiLmNoYXJDb2RlQXQoMCksYT0nXCInLmNoYXJDb2RlQXQoMCksbz1cIlxcXFxcIi5jaGFyQ29kZUF0KDApLGY9XCIvXCIuY2hhckNvZGVBdCgwKSxwPWBcbmAuY2hhckNvZGVBdCgwKSxoPVwiIFwiLmNoYXJDb2RlQXQoMCksZz1cIlxcZlwiLmNoYXJDb2RlQXQoMCksYz1cIlx0XCIuY2hhckNvZGVBdCgwKSx0PVwiXFxyXCIuY2hhckNvZGVBdCgwKSxyPVwiW1wiLmNoYXJDb2RlQXQoMCksdT1cIl1cIi5jaGFyQ29kZUF0KDApLHM9XCIoXCIuY2hhckNvZGVBdCgwKSxsPVwiKVwiLmNoYXJDb2RlQXQoMCksbT1cIntcIi5jaGFyQ29kZUF0KDApLHY9XCJ9XCIuY2hhckNvZGVBdCgwKSx5PVwiO1wiLmNoYXJDb2RlQXQoMCksdz1cIipcIi5jaGFyQ29kZUF0KDApLGQ9XCI6XCIuY2hhckNvZGVBdCgwKSxfPVwiQFwiLmNoYXJDb2RlQXQoMCksUz1cIixcIi5jaGFyQ29kZUF0KDApLHg9XCIjXCIuY2hhckNvZGVBdCgwKSxOPS9bIFxcblxcdFxcclxcZnt9KCknXCJcXFxcOy9bXFxdI10vZyxQPS9bIFxcblxcdFxcclxcZigpe306O0AhJ1wiXFxcXFxcXVsjXXxcXC8oPz1cXCopL2csVz0vLltcXFxcLyhcIidcXG5dLyxVPS9bYS1mMC05XS9pLEg9L1tcXHJcXGZcXG5dL2c7bi5leHBvcnRzPWZ1bmN0aW9uKCQsQil7Qj09PXZvaWQgMCYmKEI9e30pO3ZhciBPPSQuY3NzLnZhbHVlT2YoKSxqPUIuaWdub3JlRXJyb3JzLEMsSSxYLFosUSxLLEosTSxZLEcsRSxrLGIsTCxxPU8ubGVuZ3RoLFQ9LTEsRj0xLHo9MCxyZT1bXSxuZT1bXTtmdW5jdGlvbiBjZShzZSl7dGhyb3cgJC5lcnJvcihcIlVuY2xvc2VkIFwiK3NlLEYsei1UKX1mdW5jdGlvbiBmZSgpe3JldHVybiBuZS5sZW5ndGg9PT0wJiZ6Pj1xfWZ1bmN0aW9uIHRlKCl7Zm9yKHZhciBzZT0xLGxlPSExLHBlPSExO3NlPjA7KUkrPTEsTy5sZW5ndGg8PUkmJmNlKFwiaW50ZXJwb2xhdGlvblwiKSxDPU8uY2hhckNvZGVBdChJKSxrPU8uY2hhckNvZGVBdChJKzEpLGxlPyFwZSYmQz09PWxlPyhsZT0hMSxwZT0hMSk6Qz09PW8/cGU9IUc6cGUmJihwZT0hMSk6Qz09PWl8fEM9PT1hP2xlPUM6Qz09PXY/c2UtPTE6Qz09PXgmJms9PT1tJiYoc2UrPTEpfWZ1bmN0aW9uIGllKCl7aWYobmUubGVuZ3RoKXJldHVybiBuZS5wb3AoKTtpZighKHo+PXEpKXtzd2l0Y2goQz1PLmNoYXJDb2RlQXQoeiksKEM9PT1wfHxDPT09Z3x8Qz09PXQmJk8uY2hhckNvZGVBdCh6KzEpIT09cCkmJihUPXosRis9MSksQyl7Y2FzZSBwOmNhc2UgaDpjYXNlIGM6Y2FzZSB0OmNhc2UgZzpJPXo7ZG8gSSs9MSxDPU8uY2hhckNvZGVBdChJKSxDPT09cCYmKFQ9SSxGKz0xKTt3aGlsZShDPT09aHx8Qz09PXB8fEM9PT1jfHxDPT09dHx8Qz09PWcpO2I9W1wic3BhY2VcIixPLnNsaWNlKHosSSldLHo9SS0xO2JyZWFrO2Nhc2UgcjpiPVtcIltcIixcIltcIixGLHotVF07YnJlYWs7Y2FzZSB1OmI9W1wiXVwiLFwiXVwiLEYsei1UXTticmVhaztjYXNlIG06Yj1bXCJ7XCIsXCJ7XCIsRix6LVRdO2JyZWFrO2Nhc2UgdjpiPVtcIn1cIixcIn1cIixGLHotVF07YnJlYWs7Y2FzZSBTOmI9W1wid29yZFwiLFwiLFwiLEYsei1ULEYsei1UKzFdO2JyZWFrO2Nhc2UgZDpiPVtcIjpcIixcIjpcIixGLHotVF07YnJlYWs7Y2FzZSB5OmI9W1wiO1wiLFwiO1wiLEYsei1UXTticmVhaztjYXNlIHM6aWYoRT1yZS5sZW5ndGg/cmUucG9wKClbMV06XCJcIixrPU8uY2hhckNvZGVBdCh6KzEpLEU9PT1cInVybFwiJiZrIT09aSYmayE9PWEpe2ZvcihMPTEsRz0hMSxJPXorMTtJPD1PLmxlbmd0aC0xOyl7aWYoaz1PLmNoYXJDb2RlQXQoSSksaz09PW8pRz0hRztlbHNlIGlmKGs9PT1zKUwrPTE7ZWxzZSBpZihrPT09bCYmKEwtPTEsTD09PTApKWJyZWFrO0krPTF9Sz1PLnNsaWNlKHosSSsxKSxaPUsuc3BsaXQoYFxuYCksUT1aLmxlbmd0aC0xLFE+MD8oTT1GK1EsWT1JLVpbUV0ubGVuZ3RoKTooTT1GLFk9VCksYj1bXCJicmFja2V0c1wiLEssRix6LVQsTSxJLVldLFQ9WSxGPU0sej1JfWVsc2UgST1PLmluZGV4T2YoXCIpXCIseisxKSxLPU8uc2xpY2UoeixJKzEpLEk9PT0tMXx8Vy50ZXN0KEspP2I9W1wiKFwiLFwiKFwiLEYsei1UXTooYj1bXCJicmFja2V0c1wiLEssRix6LVQsRixJLVRdLHo9SSk7YnJlYWs7Y2FzZSBsOmI9W1wiKVwiLFwiKVwiLEYsei1UXTticmVhaztjYXNlIGk6Y2FzZSBhOmZvcihYPUMsST16LEc9ITE7STxxJiYoSSsrLEk9PT1xJiZjZShcInN0cmluZ1wiKSxDPU8uY2hhckNvZGVBdChJKSxrPU8uY2hhckNvZGVBdChJKzEpLCEoIUcmJkM9PT1YKSk7KUM9PT1vP0c9IUc6Rz9HPSExOkM9PT14JiZrPT09bSYmdGUoKTtLPU8uc2xpY2UoeixJKzEpLFo9Sy5zcGxpdChgXG5gKSxRPVoubGVuZ3RoLTEsUT4wPyhNPUYrUSxZPUktWltRXS5sZW5ndGgpOihNPUYsWT1UKSxiPVtcInN0cmluZ1wiLE8uc2xpY2UoeixJKzEpLEYsei1ULE0sSS1ZXSxUPVksRj1NLHo9STticmVhaztjYXNlIF86Ti5sYXN0SW5kZXg9eisxLE4udGVzdChPKSxOLmxhc3RJbmRleD09PTA/ST1PLmxlbmd0aC0xOkk9Ti5sYXN0SW5kZXgtMixiPVtcImF0LXdvcmRcIixPLnNsaWNlKHosSSsxKSxGLHotVCxGLEktVF0sej1JO2JyZWFrO2Nhc2Ugbzpmb3IoST16LEo9ITA7Ty5jaGFyQ29kZUF0KEkrMSk9PT1vOylJKz0xLEo9IUo7aWYoQz1PLmNoYXJDb2RlQXQoSSsxKSxKJiZDIT09ZiYmQyE9PWgmJkMhPT1wJiZDIT09YyYmQyE9PXQmJkMhPT1nJiYoSSs9MSxVLnRlc3QoTy5jaGFyQXQoSSkpKSl7Zm9yKDtVLnRlc3QoTy5jaGFyQXQoSSsxKSk7KUkrPTE7Ty5jaGFyQ29kZUF0KEkrMSk9PT1oJiYoSSs9MSl9Yj1bXCJ3b3JkXCIsTy5zbGljZSh6LEkrMSksRix6LVQsRixJLVRdLHo9STticmVhaztkZWZhdWx0Oms9Ty5jaGFyQ29kZUF0KHorMSksQz09PXgmJms9PT1tPyhJPXosdGUoKSxLPU8uc2xpY2UoeixJKzEpLFo9Sy5zcGxpdChgXG5gKSxRPVoubGVuZ3RoLTEsUT4wPyhNPUYrUSxZPUktWltRXS5sZW5ndGgpOihNPUYsWT1UKSxiPVtcIndvcmRcIixLLEYsei1ULE0sSS1ZXSxUPVksRj1NLHo9SSk6Qz09PWYmJms9PT13PyhJPU8uaW5kZXhPZihcIiovXCIseisyKSsxLEk9PT0wJiYoaj9JPU8ubGVuZ3RoOmNlKFwiY29tbWVudFwiKSksSz1PLnNsaWNlKHosSSsxKSxaPUsuc3BsaXQoYFxuYCksUT1aLmxlbmd0aC0xLFE+MD8oTT1GK1EsWT1JLVpbUV0ubGVuZ3RoKTooTT1GLFk9VCksYj1bXCJjb21tZW50XCIsSyxGLHotVCxNLEktWV0sVD1ZLEY9TSx6PUkpOkM9PT1mJiZrPT09Zj8oSC5sYXN0SW5kZXg9eisxLEgudGVzdChPKSxILmxhc3RJbmRleD09PTA/ST1PLmxlbmd0aC0xOkk9SC5sYXN0SW5kZXgtMixLPU8uc2xpY2UoeixJKzEpLGI9W1wiY29tbWVudFwiLEssRix6LVQsRixJLVQsXCJpbmxpbmVcIl0sej1JKTooUC5sYXN0SW5kZXg9eisxLFAudGVzdChPKSxQLmxhc3RJbmRleD09PTA/ST1PLmxlbmd0aC0xOkk9UC5sYXN0SW5kZXgtMixiPVtcIndvcmRcIixPLnNsaWNlKHosSSsxKSxGLHotVCxGLEktVF0scmUucHVzaChiKSx6PUkpO2JyZWFrfXJldHVybiB6KyssYn19ZnVuY3Rpb24gYWUoc2Upe25lLnB1c2goc2UpfXJldHVybntiYWNrOmFlLG5leHRUb2tlbjppZSxlbmRPZkZpbGU6ZmV9fX19KSxVZj1SKHtcIm5vZGVfbW9kdWxlcy9wb3N0Y3NzLXNjc3MvbGliL3Njc3MtcGFyc2VyLmpzXCIoZSxuKXtcInVzZSBzdHJpY3RcIjtBKCk7ZnVuY3Rpb24gaShnLGMpe2cucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYy5wcm90b3R5cGUpLGcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWcsZy5fX3Byb3RvX189Y312YXIgYT14cigpLG89enQoKSxmPUJmKCkscD1GZigpLGg9ZnVuY3Rpb24oZyl7aShjLGcpO2Z1bmN0aW9uIGMoKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9dmFyIHQ9Yy5wcm90b3R5cGU7cmV0dXJuIHQuY3JlYXRlVG9rZW5pemVyPWZ1bmN0aW9uKCl7dGhpcy50b2tlbml6ZXI9cCh0aGlzLmlucHV0KX0sdC5ydWxlPWZ1bmN0aW9uKHUpe2Zvcih2YXIgcz0hMSxsPTAsbT1cIlwiLHc9dSx2PUFycmF5LmlzQXJyYXkodykseT0wLHc9dj93OndbU3ltYm9sLml0ZXJhdG9yXSgpOzspe3ZhciBkO2lmKHYpe2lmKHk+PXcubGVuZ3RoKWJyZWFrO2Q9d1t5KytdfWVsc2V7aWYoeT13Lm5leHQoKSx5LmRvbmUpYnJlYWs7ZD15LnZhbHVlfXZhciBfPWQ7aWYocylfWzBdIT09XCJjb21tZW50XCImJl9bMF0hPT1cIntcIiYmKG0rPV9bMV0pO2Vsc2V7aWYoX1swXT09PVwic3BhY2VcIiYmX1sxXS5pbmRleE9mKGBcbmApIT09LTEpYnJlYWs7X1swXT09PVwiKFwiP2wrPTE6X1swXT09PVwiKVwiP2wtPTE6bD09PTAmJl9bMF09PT1cIjpcIiYmKHM9ITApfX1pZighc3x8bS50cmltKCk9PT1cIlwifHwvXlthLXpBLVotOiNdLy50ZXN0KG0pKWcucHJvdG90eXBlLnJ1bGUuY2FsbCh0aGlzLHUpO2Vsc2V7dS5wb3AoKTt2YXIgUz1uZXcgZjt0aGlzLmluaXQoUyk7dmFyIHg9dVt1Lmxlbmd0aC0xXTtmb3IoeFs0XT9TLnNvdXJjZS5lbmQ9e2xpbmU6eFs0XSxjb2x1bW46eFs1XX06Uy5zb3VyY2UuZW5kPXtsaW5lOnhbMl0sY29sdW1uOnhbM119O3VbMF1bMF0hPT1cIndvcmRcIjspUy5yYXdzLmJlZm9yZSs9dS5zaGlmdCgpWzFdO2ZvcihTLnNvdXJjZS5zdGFydD17bGluZTp1WzBdWzJdLGNvbHVtbjp1WzBdWzNdfSxTLnByb3A9XCJcIjt1Lmxlbmd0aDspe3ZhciBOPXVbMF1bMF07aWYoTj09PVwiOlwifHxOPT09XCJzcGFjZVwifHxOPT09XCJjb21tZW50XCIpYnJlYWs7Uy5wcm9wKz11LnNoaWZ0KClbMV19Uy5yYXdzLmJldHdlZW49XCJcIjtmb3IodmFyIFA7dS5sZW5ndGg7KWlmKFA9dS5zaGlmdCgpLFBbMF09PT1cIjpcIil7Uy5yYXdzLmJldHdlZW4rPVBbMV07YnJlYWt9ZWxzZSBTLnJhd3MuYmV0d2Vlbis9UFsxXTsoUy5wcm9wWzBdPT09XCJfXCJ8fFMucHJvcFswXT09PVwiKlwiKSYmKFMucmF3cy5iZWZvcmUrPVMucHJvcFswXSxTLnByb3A9Uy5wcm9wLnNsaWNlKDEpKSxTLnJhd3MuYmV0d2Vlbis9dGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh1KSx0aGlzLnByZWNoZWNrTWlzc2VkU2VtaWNvbG9uKHUpO2Zvcih2YXIgVz11Lmxlbmd0aC0xO1c+MDtXLS0pe2lmKFA9dVtXXSxQWzFdPT09XCIhaW1wb3J0YW50XCIpe1MuaW1wb3J0YW50PSEwO3ZhciBVPXRoaXMuc3RyaW5nRnJvbSh1LFcpO1U9dGhpcy5zcGFjZXNGcm9tRW5kKHUpK1UsVSE9PVwiICFpbXBvcnRhbnRcIiYmKFMucmF3cy5pbXBvcnRhbnQ9VSk7YnJlYWt9ZWxzZSBpZihQWzFdPT09XCJpbXBvcnRhbnRcIil7Zm9yKHZhciBIPXUuc2xpY2UoMCksRD1cIlwiLCQ9VzskPjA7JC0tKXt2YXIgQj1IWyRdWzBdO2lmKEQudHJpbSgpLmluZGV4T2YoXCIhXCIpPT09MCYmQiE9PVwic3BhY2VcIilicmVhaztEPUgucG9wKClbMV0rRH1ELnRyaW0oKS5pbmRleE9mKFwiIVwiKT09PTAmJihTLmltcG9ydGFudD0hMCxTLnJhd3MuaW1wb3J0YW50PUQsdT1IKX1pZihQWzBdIT09XCJzcGFjZVwiJiZQWzBdIT09XCJjb21tZW50XCIpYnJlYWt9dGhpcy5yYXcoUyxcInZhbHVlXCIsdSksUy52YWx1ZS5pbmRleE9mKFwiOlwiKSE9PS0xJiZ0aGlzLmNoZWNrTWlzc2VkU2VtaWNvbG9uKHUpLHRoaXMuY3VycmVudD1TfX0sdC5jb21tZW50PWZ1bmN0aW9uKHUpe2lmKHVbNl09PT1cImlubGluZVwiKXt2YXIgcz1uZXcgYTt0aGlzLmluaXQocyx1WzJdLHVbM10pLHMucmF3cy5pbmxpbmU9ITAscy5zb3VyY2UuZW5kPXtsaW5lOnVbNF0sY29sdW1uOnVbNV19O3ZhciBsPXVbMV0uc2xpY2UoMik7aWYoL15cXHMqJC8udGVzdChsKSlzLnRleHQ9XCJcIixzLnJhd3MubGVmdD1sLHMucmF3cy5yaWdodD1cIlwiO2Vsc2V7dmFyIG09bC5tYXRjaCgvXihcXHMqKShbXl0qW15cXHNdKShcXHMqKSQvKSx2PW1bMl0ucmVwbGFjZSgvKFxcKlxcL3xcXC9cXCopL2csXCIqLy8qXCIpO3MudGV4dD12LHMucmF3cy5sZWZ0PW1bMV0scy5yYXdzLnJpZ2h0PW1bM10scy5yYXdzLnRleHQ9bVsyXX19ZWxzZSBnLnByb3RvdHlwZS5jb21tZW50LmNhbGwodGhpcyx1KX0sdC5yYXc9ZnVuY3Rpb24odSxzLGwpe2lmKGcucHJvdG90eXBlLnJhdy5jYWxsKHRoaXMsdSxzLGwpLHUucmF3c1tzXSl7dmFyIG09dS5yYXdzW3NdLnJhdzt1LnJhd3Nbc10ucmF3PWwucmVkdWNlKGZ1bmN0aW9uKHYseSl7aWYoeVswXT09PVwiY29tbWVudFwiJiZ5WzZdPT09XCJpbmxpbmVcIil7dmFyIHc9eVsxXS5zbGljZSgyKS5yZXBsYWNlKC8oXFwqXFwvfFxcL1xcKikvZyxcIiovLypcIik7cmV0dXJuIHYrXCIvKlwiK3crXCIqL1wifWVsc2UgcmV0dXJuIHYreVsxXX0sXCJcIiksbSE9PXUucmF3c1tzXS5yYXcmJih1LnJhd3Nbc10uc2Nzcz1tKX19LGN9KG8pO24uZXhwb3J0cz1ofX0pLFdmPVIoe1wibm9kZV9tb2R1bGVzL3Bvc3Rjc3Mtc2Nzcy9saWIvc2Nzcy1wYXJzZS5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPV9yKCksYT1VZigpO24uZXhwb3J0cz1mdW5jdGlvbihmLHApe3ZhciBoPW5ldyBpKGYscCksZz1uZXcgYShoKTtyZXR1cm4gZy5wYXJzZSgpLGcucm9vdH19fSksJGY9Uih7XCJub2RlX21vZHVsZXMvcG9zdGNzcy1zY3NzL2xpYi9zY3NzLXN5bnRheC5qc1wiKGUsbil7XCJ1c2Ugc3RyaWN0XCI7QSgpO3ZhciBpPXpmKCksYT1XZigpO24uZXhwb3J0cz17cGFyc2U6YSxzdHJpbmdpZnk6aX19fSk7QSgpO3ZhciBWZj1tbCgpLHB0PUNzKCksR2Y9TnMoKSx7aGFzUHJhZ21hOkhmfT1UbCgpLHtsb2NTdGFydDpKZixsb2NFbmQ6S2Z9PUpzKCkse2NhbGN1bGF0ZUxvYzpRZixyZXBsYWNlUXVvdGVzSW5JbmxpbmVDb21tZW50czpZZn09SnMoKSxYZj1QbCgpLFpmPVJsKCksaHQ9SWwoKSxzYT1DbCgpLGVwPU5sKCkscnA9amwoKSx0cD1NbCgpLG5wPURsKCksaXA9ZT0+e2Zvcig7ZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9O2Z1bmN0aW9uIHNwKGUsbil7bGV0e25vZGVzOml9PWUsYT17b3BlbjpudWxsLGNsb3NlOm51bGwsZ3JvdXBzOltdLHR5cGU6XCJwYXJlbl9ncm91cFwifSxvPVthXSxmPWEscD17Z3JvdXBzOltdLHR5cGU6XCJjb21tYV9ncm91cFwifSxoPVtwXTtmb3IobGV0IGc9MDtnPGkubGVuZ3RoOysrZyl7bGV0IGM9aVtnXTtpZihzYShuLnBhcnNlcixjLnZhbHVlKSYmYy50eXBlPT09XCJudW1iZXJcIiYmYy51bml0PT09XCIuLlwiJiZwdChjLnZhbHVlKT09PVwiLlwiJiYoYy52YWx1ZT1jLnZhbHVlLnNsaWNlKDAsLTEpLGMudW5pdD1cIi4uLlwiKSxjLnR5cGU9PT1cImZ1bmNcIiYmYy52YWx1ZT09PVwic2VsZWN0b3JcIiYmKGMuZ3JvdXAuZ3JvdXBzPVtJZShpcChlKS50ZXh0LnNsaWNlKGMuZ3JvdXAub3Blbi5zb3VyY2VJbmRleCsxLGMuZ3JvdXAuY2xvc2Uuc291cmNlSW5kZXgpKV0pLGMudHlwZT09PVwiZnVuY1wiJiZjLnZhbHVlPT09XCJ1cmxcIil7bGV0IHQ9Yy5ncm91cCYmYy5ncm91cC5ncm91cHN8fFtdLHI9W107Zm9yKGxldCB1PTA7dTx0Lmxlbmd0aDt1Kyspe2xldCBzPXRbdV07cy50eXBlPT09XCJjb21tYV9ncm91cFwiP3I9Wy4uLnIsLi4ucy5ncm91cHNdOnIucHVzaChzKX1pZihYZihyKXx8IVpmKHIpJiYhcnAoclswXSkpe2xldCB1PXRwKHtncm91cHM6Yy5ncm91cC5ncm91cHN9KTtjLmdyb3VwLmdyb3Vwcz1bdS50cmltKCldfX1pZihjLnR5cGU9PT1cInBhcmVuXCImJmMudmFsdWU9PT1cIihcIilhPXtvcGVuOmMsY2xvc2U6bnVsbCxncm91cHM6W10sdHlwZTpcInBhcmVuX2dyb3VwXCJ9LG8ucHVzaChhKSxwPXtncm91cHM6W10sdHlwZTpcImNvbW1hX2dyb3VwXCJ9LGgucHVzaChwKTtlbHNlIGlmKGMudHlwZT09PVwicGFyZW5cIiYmYy52YWx1ZT09PVwiKVwiKXtpZihwLmdyb3Vwcy5sZW5ndGg+MCYmYS5ncm91cHMucHVzaChwKSxhLmNsb3NlPWMsaC5sZW5ndGg9PT0xKXRocm93IG5ldyBFcnJvcihcIlVuYmFsYW5jZWQgcGFyZW50aGVzaXNcIik7aC5wb3AoKSxwPXB0KGgpLHAuZ3JvdXBzLnB1c2goYSksby5wb3AoKSxhPXB0KG8pfWVsc2UgYy50eXBlPT09XCJjb21tYVwiPyhhLmdyb3Vwcy5wdXNoKHApLHA9e2dyb3VwczpbXSx0eXBlOlwiY29tbWFfZ3JvdXBcIn0saFtoLmxlbmd0aC0xXT1wKTpwLmdyb3Vwcy5wdXNoKGMpfXJldHVybiBwLmdyb3Vwcy5sZW5ndGg+MCYmYS5ncm91cHMucHVzaChwKSxmfWZ1bmN0aW9uIGhyKGUpe3JldHVybiBlLnR5cGU9PT1cInBhcmVuX2dyb3VwXCImJiFlLm9wZW4mJiFlLmNsb3NlJiZlLmdyb3Vwcy5sZW5ndGg9PT0xfHxlLnR5cGU9PT1cImNvbW1hX2dyb3VwXCImJmUuZ3JvdXBzLmxlbmd0aD09PTE/aHIoZS5ncm91cHNbMF0pOmUudHlwZT09PVwicGFyZW5fZ3JvdXBcInx8ZS50eXBlPT09XCJjb21tYV9ncm91cFwiP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7fSx7Z3JvdXBzOmUuZ3JvdXBzLm1hcChocil9KTplfWZ1bmN0aW9uIFhlKGUsbixpKXtpZihlJiZ0eXBlb2YgZT09XCJvYmplY3RcIil7ZGVsZXRlIGUucGFyZW50O2ZvcihsZXQgYSBpbiBlKVhlKGVbYV0sbixpKSxhPT09XCJ0eXBlXCImJnR5cGVvZiBlW2FdPT1cInN0cmluZ1wiJiYhZVthXS5zdGFydHNXaXRoKG4pJiYoIWl8fCFpLnRlc3QoZVthXSkpJiYoZVthXT1uK2VbYV0pfXJldHVybiBlfWZ1bmN0aW9uIG9hKGUpe2lmKGUmJnR5cGVvZiBlPT1cIm9iamVjdFwiKXtkZWxldGUgZS5wYXJlbnQ7Zm9yKGxldCBuIGluIGUpb2EoZVtuXSk7IUFycmF5LmlzQXJyYXkoZSkmJmUudmFsdWUmJiFlLnR5cGUmJihlLnR5cGU9XCJ1bmtub3duXCIpfXJldHVybiBlfWZ1bmN0aW9uIGFhKGUsbil7aWYoZSYmdHlwZW9mIGU9PVwib2JqZWN0XCIpe2ZvcihsZXQgaSBpbiBlKWkhPT1cInBhcmVudFwiJiYoYWEoZVtpXSxuKSxpPT09XCJub2Rlc1wiJiYoZS5ncm91cD1ocihzcChlLG4pKSxkZWxldGUgZVtpXSkpO2RlbGV0ZSBlLnBhcmVudH1yZXR1cm4gZX1mdW5jdGlvbiBQZShlLG4pe2xldCBpPWxmKCksYT1udWxsO3RyeXthPWkoZSx7bG9vc2U6ITB9KS5wYXJzZSgpfWNhdGNoe3JldHVybnt0eXBlOlwidmFsdWUtdW5rbm93blwiLHZhbHVlOmV9fWEudGV4dD1lO2xldCBvPWFhKGEsbik7cmV0dXJuIFhlKG8sXCJ2YWx1ZS1cIiwvXnNlbGVjdG9yLS8pfWZ1bmN0aW9uIEllKGUpe2lmKC9cXC9cXC98XFwvXFwqLy50ZXN0KGUpKXJldHVybnt0eXBlOlwic2VsZWN0b3ItdW5rbm93blwiLHZhbHVlOmUudHJpbSgpfTtsZXQgbj12ZigpLGk9bnVsbDt0cnl7bihhPT57aT1hfSkucHJvY2VzcyhlKX1jYXRjaHtyZXR1cm57dHlwZTpcInNlbGVjdG9yLXVua25vd25cIix2YWx1ZTplfX1yZXR1cm4gWGUoaSxcInNlbGVjdG9yLVwiKX1mdW5jdGlvbiBvcChlKXtsZXQgbj1nZigpLmRlZmF1bHQsaT1udWxsO3RyeXtpPW4oZSl9Y2F0Y2h7cmV0dXJue3R5cGU6XCJzZWxlY3Rvci11bmtub3duXCIsdmFsdWU6ZX19cmV0dXJuIFhlKG9hKGkpLFwibWVkaWEtXCIpfXZhciBhcD0vKFxccyopKCFkZWZhdWx0KS4qJC8sdXA9LyhcXHMqKSghZ2xvYmFsKS4qJC87ZnVuY3Rpb24gdWEoZSxuKXtpZihlJiZ0eXBlb2YgZT09XCJvYmplY3RcIil7ZGVsZXRlIGUucGFyZW50O2ZvcihsZXQgZiBpbiBlKXVhKGVbZl0sbik7aWYoIWUudHlwZSlyZXR1cm4gZTtlLnJhd3N8fChlLnJhd3M9e30pO2xldCBpPVwiXCI7dHlwZW9mIGUuc2VsZWN0b3I9PVwic3RyaW5nXCImJihpPWUucmF3cy5zZWxlY3Rvcj9lLnJhd3Muc2VsZWN0b3Iuc2Nzcz9lLnJhd3Muc2VsZWN0b3Iuc2NzczplLnJhd3Muc2VsZWN0b3IucmF3OmUuc2VsZWN0b3IsZS5yYXdzLmJldHdlZW4mJmUucmF3cy5iZXR3ZWVuLnRyaW0oKS5sZW5ndGg+MCYmKGkrPWUucmF3cy5iZXR3ZWVuKSxlLnJhd3Muc2VsZWN0b3I9aSk7bGV0IGE9XCJcIjt0eXBlb2YgZS52YWx1ZT09XCJzdHJpbmdcIiYmKGE9ZS5yYXdzLnZhbHVlP2UucmF3cy52YWx1ZS5zY3NzP2UucmF3cy52YWx1ZS5zY3NzOmUucmF3cy52YWx1ZS5yYXc6ZS52YWx1ZSxhPWEudHJpbSgpLGUucmF3cy52YWx1ZT1hKTtsZXQgbz1cIlwiO2lmKHR5cGVvZiBlLnBhcmFtcz09XCJzdHJpbmdcIiYmKG89ZS5yYXdzLnBhcmFtcz9lLnJhd3MucGFyYW1zLnNjc3M/ZS5yYXdzLnBhcmFtcy5zY3NzOmUucmF3cy5wYXJhbXMucmF3OmUucGFyYW1zLGUucmF3cy5hZnRlck5hbWUmJmUucmF3cy5hZnRlck5hbWUudHJpbSgpLmxlbmd0aD4wJiYobz1lLnJhd3MuYWZ0ZXJOYW1lK28pLGUucmF3cy5iZXR3ZWVuJiZlLnJhd3MuYmV0d2Vlbi50cmltKCkubGVuZ3RoPjAmJihvPW8rZS5yYXdzLmJldHdlZW4pLG89by50cmltKCksZS5yYXdzLnBhcmFtcz1vKSxpLnRyaW0oKS5sZW5ndGg+MClyZXR1cm4gaS5zdGFydHNXaXRoKFwiQFwiKSYmaS5lbmRzV2l0aChcIjpcIik/ZTplLm1peGluPyhlLnNlbGVjdG9yPVBlKGksbiksZSk6KGVwKGUpJiYoZS5pc1NDU1NOZXN0ZXJQcm9wZXJ0eT0hMCksZS5zZWxlY3Rvcj1JZShpKSxlKTtpZihhLmxlbmd0aD4wKXtsZXQgZj1hLm1hdGNoKGFwKTtmJiYoYT1hLnNsaWNlKDAsZi5pbmRleCksZS5zY3NzRGVmYXVsdD0hMCxmWzBdLnRyaW0oKSE9PVwiIWRlZmF1bHRcIiYmKGUucmF3cy5zY3NzRGVmYXVsdD1mWzBdKSk7bGV0IHA9YS5tYXRjaCh1cCk7aWYocCYmKGE9YS5zbGljZSgwLHAuaW5kZXgpLGUuc2Nzc0dsb2JhbD0hMCxwWzBdLnRyaW0oKSE9PVwiIWdsb2JhbFwiJiYoZS5yYXdzLnNjc3NHbG9iYWw9cFswXSkpLGEuc3RhcnRzV2l0aChcInByb2dpZDpcIikpcmV0dXJue3R5cGU6XCJ2YWx1ZS11bmtub3duXCIsdmFsdWU6YX07ZS52YWx1ZT1QZShhLG4pfWlmKGh0KG4pJiZlLnR5cGU9PT1cImNzcy1kZWNsXCImJmEuc3RhcnRzV2l0aChcImV4dGVuZChcIikmJihlLmV4dGVuZHx8KGUuZXh0ZW5kPWUucmF3cy5iZXR3ZWVuPT09XCI6XCIpLGUuZXh0ZW5kJiYhZS5zZWxlY3RvciYmKGRlbGV0ZSBlLnZhbHVlLGUuc2VsZWN0b3I9SWUoYS5zbGljZSg3LC0xKSkpKSxlLnR5cGU9PT1cImNzcy1hdHJ1bGVcIil7aWYoaHQobikpe2lmKGUubWl4aW4pe2xldCBmPWUucmF3cy5pZGVudGlmaWVyK2UubmFtZStlLnJhd3MuYWZ0ZXJOYW1lK2UucmF3cy5wYXJhbXM7cmV0dXJuIGUuc2VsZWN0b3I9SWUoZiksZGVsZXRlIGUucGFyYW1zLGV9aWYoZS5mdW5jdGlvbilyZXR1cm4gZX1pZihuLnBhcnNlcj09PVwiY3NzXCImJmUubmFtZT09PVwiY3VzdG9tLXNlbGVjdG9yXCIpe2xldCBmPWUucGFyYW1zLm1hdGNoKC86LS1cXFMrXFxzKy8pWzBdLnRyaW0oKTtyZXR1cm4gZS5jdXN0b21TZWxlY3Rvcj1mLGUuc2VsZWN0b3I9SWUoZS5wYXJhbXMuc2xpY2UoZi5sZW5ndGgpLnRyaW0oKSksZGVsZXRlIGUucGFyYW1zLGV9aWYoaHQobikpe2lmKGUubmFtZS5pbmNsdWRlcyhcIjpcIikmJiFlLnBhcmFtcyl7ZS52YXJpYWJsZT0hMDtsZXQgZj1lLm5hbWUuc3BsaXQoXCI6XCIpO2UubmFtZT1mWzBdLGUudmFsdWU9UGUoZi5zbGljZSgxKS5qb2luKFwiOlwiKSxuKX1pZighW1wicGFnZVwiLFwibmVzdFwiLFwia2V5ZnJhbWVzXCJdLmluY2x1ZGVzKGUubmFtZSkmJmUucGFyYW1zJiZlLnBhcmFtc1swXT09PVwiOlwiJiYoZS52YXJpYWJsZT0hMCxlLnZhbHVlPVBlKGUucGFyYW1zLnNsaWNlKDEpLG4pLGUucmF3cy5hZnRlck5hbWUrPVwiOlwiKSxlLnZhcmlhYmxlKXJldHVybiBkZWxldGUgZS5wYXJhbXMsZX19aWYoZS50eXBlPT09XCJjc3MtYXRydWxlXCImJm8ubGVuZ3RoPjApe2xldHtuYW1lOmZ9PWUscD1lLm5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gZj09PVwid2FyblwifHxmPT09XCJlcnJvclwiPyhlLnBhcmFtcz17dHlwZTpcIm1lZGlhLXVua25vd25cIix2YWx1ZTpvfSxlKTpmPT09XCJleHRlbmRcInx8Zj09PVwibmVzdFwiPyhlLnNlbGVjdG9yPUllKG8pLGRlbGV0ZSBlLnBhcmFtcyxlKTpmPT09XCJhdC1yb290XCI/KC9eXFwoXFxzKig/OndpdGhvdXR8d2l0aClcXHMqOi4rXFwpJC9zLnRlc3Qobyk/ZS5wYXJhbXM9UGUobyxuKTooZS5zZWxlY3Rvcj1JZShvKSxkZWxldGUgZS5wYXJhbXMpLGUpOm5wKHApPyhlLmltcG9ydD0hMCxkZWxldGUgZS5maWxlbmFtZSxlLnBhcmFtcz1QZShvLG4pLGUpOltcIm5hbWVzcGFjZVwiLFwic3VwcG9ydHNcIixcImlmXCIsXCJlbHNlXCIsXCJmb3JcIixcImVhY2hcIixcIndoaWxlXCIsXCJkZWJ1Z1wiLFwibWl4aW5cIixcImluY2x1ZGVcIixcImZ1bmN0aW9uXCIsXCJyZXR1cm5cIixcImRlZmluZS1taXhpblwiLFwiYWRkLW1peGluXCJdLmluY2x1ZGVzKGYpPyhvPW8ucmVwbGFjZSgvKFxcJFxcUys/KShcXHMrKT9cXC57M30vLFwiJDEuLi4kMlwiKSxvPW8ucmVwbGFjZSgvXig/IWlmKShcXFMrKShcXHMrKVxcKC8sXCIkMSgkMlwiKSxlLnZhbHVlPVBlKG8sbiksZGVsZXRlIGUucGFyYW1zLGUpOltcIm1lZGlhXCIsXCJjdXN0b20tbWVkaWFcIl0uaW5jbHVkZXMocCk/by5pbmNsdWRlcyhcIiN7XCIpP3t0eXBlOlwibWVkaWEtdW5rbm93blwiLHZhbHVlOm99OihlLnBhcmFtcz1vcChvKSxlKTooZS5wYXJhbXM9byxlKX19cmV0dXJuIGV9ZnVuY3Rpb24gY2EoZSxuLGkpe2xldCBhPUdmKG4pLHtmcm9udE1hdHRlcjpvfT1hO249YS5jb250ZW50O2xldCBmO3RyeXtmPWUobil9Y2F0Y2gocCl7bGV0e25hbWU6aCxyZWFzb246ZyxsaW5lOmMsY29sdW1uOnR9PXA7dGhyb3cgdHlwZW9mIGMhPVwibnVtYmVyXCI/cDpWZihcIlwiLmNvbmNhdChoLFwiOiBcIikuY29uY2F0KGcpLHtzdGFydDp7bGluZTpjLGNvbHVtbjp0fX0pfXJldHVybiBmPXVhKFhlKGYsXCJjc3MtXCIpLGkpLFFmKGYsbiksbyYmKG8uc291cmNlPXtzdGFydE9mZnNldDowLGVuZE9mZnNldDpvLnJhdy5sZW5ndGh9LGYubm9kZXMudW5zaGlmdChvKSksZn1mdW5jdGlvbiBjcChlLG4pe2xldCBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSxvPXNhKGkucGFyc2VyLGUpP1t4dCxidF06W2J0LHh0XSxmO2ZvcihsZXQgcCBvZiBvKXRyeXtyZXR1cm4gcChlLG4saSl9Y2F0Y2goaCl7Zj1mfHxofWlmKGYpdGhyb3cgZn1mdW5jdGlvbiBidChlLG4pe2xldCBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSxhPURmKCk7cmV0dXJuIGNhKG89PmEucGFyc2UoWWYobykpLGUsaSl9ZnVuY3Rpb24geHQoZSxuKXtsZXQgaT1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30se3BhcnNlOmF9PSRmKCk7cmV0dXJuIGNhKGEsZSxpKX12YXIgZHQ9e2FzdEZvcm1hdDpcInBvc3Rjc3NcIixoYXNQcmFnbWE6SGYsbG9jU3RhcnQ6SmYsbG9jRW5kOktmfTtsYS5leHBvcnRzPXtwYXJzZXJzOntjc3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGR0KSx7fSx7cGFyc2U6Y3B9KSxsZXNzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkdCkse30se3BhcnNlOmJ0fSksc2NzczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZHQpLHt9LHtwYXJzZTp4dH0pfX19KTtyZXR1cm4gbHAoKTt9KTsiLCAiKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlPT1cIm9iamVjdFwiKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKHR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZClkZWZpbmUoZSk7ZWxzZXt2YXIgaT10eXBlb2YgZ2xvYmFsVGhpczxcInVcIj9nbG9iYWxUaGlzOnR5cGVvZiBnbG9iYWw8XCJ1XCI/Z2xvYmFsOnR5cGVvZiBzZWxmPFwidVwiP3NlbGY6dGhpc3x8e307aS5wcmV0dGllclBsdWdpbnM9aS5wcmV0dGllclBsdWdpbnN8fHt9LGkucHJldHRpZXJQbHVnaW5zLmdsaW1tZXI9ZSgpfX0pKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGl0PSh0LGYpPT4oKT0+KGZ8fHQoKGY9e2V4cG9ydHM6e319KS5leHBvcnRzLGYpLGYuZXhwb3J0cyk7dmFyIFp0PWl0KChuciwkZSk9Pnt2YXIgeGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsYXQ9KHQsZik9PmZ1bmN0aW9uKCl7cmV0dXJuIHQmJihmPSgwLHRbeGUodClbMF1dKSh0PTApKSxmfSxJPSh0LGYpPT5mdW5jdGlvbigpe3JldHVybiBmfHwoMCx0W3hlKHQpWzBdXSkoKGY9e2V4cG9ydHM6e319KS5leHBvcnRzLGYpLGYuZXhwb3J0c30sRj1hdCh7XCI8ZGVmaW5lOnByb2Nlc3M+XCIoKXt9fSksc3Q9SSh7XCJub2RlX21vZHVsZXMvbGluZXMtYW5kLWNvbHVtbnMvYnVpbGQvaW5kZXguY2pzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLHQuX19lc01vZHVsZT0hMCx0LkxpbmVzQW5kQ29sdW1ucz12b2lkIDA7dmFyIGY9YFxuYCxoPVwiXFxyXCIsZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMobyl7dGhpcy5sZW5ndGg9by5sZW5ndGg7Zm9yKHZhciBlPVswXSxyPTA7cjxvLmxlbmd0aDspc3dpdGNoKG9bcl0pe2Nhc2UgZjpyKz1mLmxlbmd0aCxlLnB1c2gocik7YnJlYWs7Y2FzZSBoOnIrPWgubGVuZ3RoLG9bcl09PT1mJiYocis9Zi5sZW5ndGgpLGUucHVzaChyKTticmVhaztkZWZhdWx0OnIrKzticmVha310aGlzLm9mZnNldHM9ZX1yZXR1cm4gYy5wcm90b3R5cGUubG9jYXRpb25Gb3JJbmRleD1mdW5jdGlvbihvKXtpZihvPDB8fG8+dGhpcy5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKHZhciBlPTAscj10aGlzLm9mZnNldHM7cltlKzFdPD1vOyllKys7dmFyIHM9by1yW2VdO3JldHVybntsaW5lOmUsY29sdW1uOnN9fSxjLnByb3RvdHlwZS5pbmRleEZvckxvY2F0aW9uPWZ1bmN0aW9uKG8pe3ZhciBlPW8ubGluZSxyPW8uY29sdW1uO3JldHVybiBlPDB8fGU+PXRoaXMub2Zmc2V0cy5sZW5ndGh8fHI8MHx8cj50aGlzLmxlbmd0aE9mTGluZShlKT9udWxsOnRoaXMub2Zmc2V0c1tlXStyfSxjLnByb3RvdHlwZS5sZW5ndGhPZkxpbmU9ZnVuY3Rpb24obyl7dmFyIGU9dGhpcy5vZmZzZXRzW29dLHI9bz09PXRoaXMub2Zmc2V0cy5sZW5ndGgtMT90aGlzLmxlbmd0aDp0aGlzLm9mZnNldHNbbysxXTtyZXR1cm4gci1lfSxjfSgpO3QuTGluZXNBbmRDb2x1bW5zPWR9fSksdXQ9SSh7XCJzcmMvY29tbW9uL3BhcnNlci1jcmVhdGUtZXJyb3IuanNcIih0LGYpe1widXNlIHN0cmljdFwiO0YoKTtmdW5jdGlvbiBoKGQsYyl7bGV0IG89bmV3IFN5bnRheEVycm9yKGQrXCIgKFwiK2Muc3RhcnQubGluZStcIjpcIitjLnN0YXJ0LmNvbHVtbitcIilcIik7cmV0dXJuIG8ubG9jPWMsb31mLmV4cG9ydHM9aH19KSxvdD1JKHtcInNyYy9sYW5ndWFnZS1oYW5kbGViYXJzL2xvYy5qc1wiKHQsZil7XCJ1c2Ugc3RyaWN0XCI7RigpO2Z1bmN0aW9uIGgoYyl7cmV0dXJuIGMubG9jLnN0YXJ0Lm9mZnNldH1mdW5jdGlvbiBkKGMpe3JldHVybiBjLmxvYy5lbmQub2Zmc2V0fWYuZXhwb3J0cz17bG9jU3RhcnQ6aCxsb2NFbmQ6ZH19fSksZmU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvZW52L2Rpc3QvY29tbW9uanMvZXM1L2luZGV4LmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPXQuREVCVUc9ITEsaD10LkNJPSExfX0pLGx0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL2FycmF5LXV0aWxzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZW1wdHlBcnJheT1oLHQuaXNFbXB0eUFycmF5PW8sdC5FTVBUWV9OVU1CRVJfQVJSQVk9dC5FTVBUWV9TVFJJTkdfQVJSQVk9dC5FTVBUWV9BUlJBWT12b2lkIDA7dmFyIGY9T2JqZWN0LmZyZWV6ZShbXSk7dC5FTVBUWV9BUlJBWT1mO2Z1bmN0aW9uIGgoKXtyZXR1cm4gZn12YXIgZD1oKCk7dC5FTVBUWV9TVFJJTkdfQVJSQVk9ZDt2YXIgYz1oKCk7dC5FTVBUWV9OVU1CRVJfQVJSQVk9YztmdW5jdGlvbiBvKGUpe3JldHVybiBlPT09Zn19fSksUGU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvdXRpbC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvYXNzZXJ0LmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVidWdBc3NlcnQ9aCx0LnByb2RBc3NlcnQ9ZCx0LmRlcHJlY2F0ZT1jLHQuZGVmYXVsdD12b2lkIDA7dmFyIGY9WCgpO2Z1bmN0aW9uIGgoZSxyKXtpZighZSl0aHJvdyBuZXcgRXJyb3Iocnx8XCJhc3NlcnRpb24gZmFpbHVyZVwiKX1mdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIGMoZSl7Zi5MT0NBTF9MT0dHRVIud2FybihcIkRFUFJFQ0FUSU9OOiBcIi5jb25jYXQoZSkpfXZhciBvPWg7dC5kZWZhdWx0PW99fSksY3Q9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvdXRpbC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvY29sbGVjdGlvbnMuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kaWN0PWYsdC5pc0RpY3Q9aCx0LmlzT2JqZWN0PWQsdC5TdGFja0ltcGw9dm9pZCAwO2Z1bmN0aW9uIGYoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKX1mdW5jdGlvbiBoKG8pe3JldHVybiBvIT1udWxsfWZ1bmN0aW9uIGQobyl7cmV0dXJuIHR5cGVvZiBvPT1cImZ1bmN0aW9uXCJ8fHR5cGVvZiBvPT1cIm9iamVjdFwiJiZvIT09bnVsbH12YXIgYz1jbGFzc3tjb25zdHJ1Y3Rvcigpe2xldCBvPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpbXTt0aGlzLmN1cnJlbnQ9bnVsbCx0aGlzLnN0YWNrPW99Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5zdGFjay5sZW5ndGh9cHVzaChvKXt0aGlzLmN1cnJlbnQ9byx0aGlzLnN0YWNrLnB1c2gobyl9cG9wKCl7bGV0IG89dGhpcy5zdGFjay5wb3AoKSxlPXRoaXMuc3RhY2subGVuZ3RoO3JldHVybiB0aGlzLmN1cnJlbnQ9ZT09PTA/bnVsbDp0aGlzLnN0YWNrW2UtMV0sbz09PXZvaWQgMD9udWxsOm99bnRoKG8pe2xldCBlPXRoaXMuc3RhY2subGVuZ3RoO3JldHVybiBlPG8/bnVsbDp0aGlzLnN0YWNrW2Utb119aXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YWNrLmxlbmd0aD09PTB9dG9BcnJheSgpe3JldHVybiB0aGlzLnN0YWNrfX07dC5TdGFja0ltcGw9Y319KSxodD1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci91dGlsL2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9kb20uanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jbGVhckVsZW1lbnQ9ZjtmdW5jdGlvbiBmKGgpe2xldCBkPWguZmlyc3RDaGlsZDtmb3IoO2Q7KXtsZXQgYz1kLm5leHRTaWJsaW5nO2gucmVtb3ZlQ2hpbGQoZCksZD1jfX19fSksZHQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvdXRpbC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvaXMtc2VyaWFsaXphdGlvbi1maXJzdC1ub2RlLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNTZXJpYWxpemF0aW9uRmlyc3ROb2RlPWgsdC5TRVJJQUxJWkFUSU9OX0ZJUlNUX05PREVfU1RSSU5HPXZvaWQgMDt2YXIgZj1cIiUrYjowJVwiO3QuU0VSSUFMSVpBVElPTl9GSVJTVF9OT0RFX1NUUklORz1mO2Z1bmN0aW9uIGgoZCl7cmV0dXJuIGQubm9kZVZhbHVlPT09Zn19fSkscHQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvdXRpbC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvb2JqZWN0LXV0aWxzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZmlsbE51bGxzPWgsdC52YWx1ZXM9ZCx0LmFzc2lnbj12b2lkIDA7dmFyIGY9T2JqZWN0LmFzc2lnbjt0LmFzc2lnbj1mO2Z1bmN0aW9uIGgoYyl7bGV0IG89bmV3IEFycmF5KGMpO2ZvcihsZXQgZT0wO2U8YztlKyspb1tlXT1udWxsO3JldHVybiBvfWZ1bmN0aW9uIGQoYyl7bGV0IG89W107Zm9yKGxldCBlIGluIGMpby5wdXNoKGNbZV0pO3JldHVybiBvfX19KSxqZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci91dGlsL2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9pbnRlcm4uanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWY7ZnVuY3Rpb24gZihoKXtsZXQgZD17fTtkW2hdPTE7Zm9yKGxldCBjIGluIGQpaWYoYz09PWgpcmV0dXJuIGM7cmV0dXJuIGh9fX0pLG1lPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3BsYXRmb3JtLXV0aWxzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQua2V5cz1vLHQudW53cmFwPWUsdC5leHBlY3Q9cix0LnVucmVhY2hhYmxlPXMsdC5leGhhdXN0ZWQ9cCx0LmVudW1lcmFibGVTeW1ib2w9YSx0LnN5bWJvbD10LnR1cGxlPXQuSEFTX05BVElWRV9TWU1CT0w9dC5IQVNfTkFUSVZFX1BST1hZPXZvaWQgMDt2YXIgZj1oKGplKCkpO2Z1bmN0aW9uIGgoaSl7cmV0dXJuIGkmJmkuX19lc01vZHVsZT9pOntkZWZhdWx0Oml9fXZhciBkPXR5cGVvZiBQcm94eT09XCJmdW5jdGlvblwiO3QuSEFTX05BVElWRV9QUk9YWT1kO3ZhciBjPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBTeW1ib2whPVwiZnVuY3Rpb25cIj8hMTp0eXBlb2YgU3ltYm9sKCk9PVwic3ltYm9sXCJ9KCk7dC5IQVNfTkFUSVZFX1NZTUJPTD1jO2Z1bmN0aW9uIG8oaSl7cmV0dXJuIE9iamVjdC5rZXlzKGkpfWZ1bmN0aW9uIGUoaSl7aWYoaT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCB2YWx1ZSB0byBiZSBwcmVzZW50XCIpO3JldHVybiBpfWZ1bmN0aW9uIHIoaSxsKXtpZihpPT1udWxsKXRocm93IG5ldyBFcnJvcihsKTtyZXR1cm4gaX1mdW5jdGlvbiBzKCl7bGV0IGk9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOlwidW5yZWFjaGFibGVcIjtyZXR1cm4gbmV3IEVycm9yKGkpfWZ1bmN0aW9uIHAoaSl7dGhyb3cgbmV3IEVycm9yKFwiRXhoYXVzdGVkIFwiLmNvbmNhdChpKSl9dmFyIG49ZnVuY3Rpb24oKXtmb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aCxsPW5ldyBBcnJheShpKSxiPTA7YjxpO2IrKylsW2JdPWFyZ3VtZW50c1tiXTtyZXR1cm4gbH07dC50dXBsZT1uO2Z1bmN0aW9uIGEoaSl7cmV0dXJuKDAsZi5kZWZhdWx0KShcIl9fXCIuY29uY2F0KGkpLmNvbmNhdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqRGF0ZS5ub3coKSksXCJfX1wiKSl9dmFyIHU9Yz9TeW1ib2w6YTt0LnN5bWJvbD11fX0pLGZ0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3N0cmluZy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnN0cmlwPWY7ZnVuY3Rpb24gZihoKXtsZXQgZD1cIlwiO2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KGM+MT9jLTE6MCksZT0xO2U8YztlKyspb1tlLTFdPWFyZ3VtZW50c1tlXTtmb3IobGV0IG49MDtuPGgubGVuZ3RoO24rKyl7bGV0IGE9aFtuXSx1PW9bbl0hPT12b2lkIDA/U3RyaW5nKG9bbl0pOlwiXCI7ZCs9XCJcIi5jb25jYXQoYSkuY29uY2F0KHUpfWxldCByPWQuc3BsaXQoYFxuYCk7Zm9yKDtyLmxlbmd0aCYmclswXS5tYXRjaCgvXlxccyokLyk7KXIuc2hpZnQoKTtmb3IoO3IubGVuZ3RoJiZyW3IubGVuZ3RoLTFdLm1hdGNoKC9eXFxzKiQvKTspci5wb3AoKTtsZXQgcz0xLzA7Zm9yKGxldCBuIG9mIHIpe2xldCBhPW4ubWF0Y2goL15cXHMqLylbMF0ubGVuZ3RoO3M9TWF0aC5taW4ocyxhKX1sZXQgcD1bXTtmb3IobGV0IG4gb2YgcilwLnB1c2gobi5zbGljZShzKSk7cmV0dXJuIHAuam9pbihgXG5gKX19fSksbXQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvdXRpbC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvaW1tZWRpYXRlLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNIYW5kbGU9aCx0LmlzTm9uUHJpbWl0aXZlSGFuZGxlPWQsdC5jb25zdGFudHM9Yyx0LmlzU21hbGxJbnQ9byx0LmVuY29kZU5lZ2F0aXZlPWUsdC5kZWNvZGVOZWdhdGl2ZT1yLHQuZW5jb2RlUG9zaXRpdmU9cyx0LmRlY29kZVBvc2l0aXZlPXAsdC5lbmNvZGVIYW5kbGU9bix0LmRlY29kZUhhbmRsZT1hLHQuZW5jb2RlSW1tZWRpYXRlPXUsdC5kZWNvZGVJbW1lZGlhdGU9aTt2YXIgZj1QZSgpO2Z1bmN0aW9uIGgobCl7cmV0dXJuIGw+PTB9ZnVuY3Rpb24gZChsKXtyZXR1cm4gbD4zfWZ1bmN0aW9uIGMoKXtmb3IodmFyIGw9YXJndW1lbnRzLmxlbmd0aCxiPW5ldyBBcnJheShsKSxQPTA7UDxsO1ArKyliW1BdPWFyZ3VtZW50c1tQXTtyZXR1cm5bITEsITAsbnVsbCx2b2lkIDAsLi4uYl19ZnVuY3Rpb24gbyhsKXtyZXR1cm4gbCUxPT09MCYmbDw9NTM2ODcwOTExJiZsPj0tNTM2ODcwOTEyfWZ1bmN0aW9uIGUobCl7cmV0dXJuIGwmLTUzNjg3MDkxM31mdW5jdGlvbiByKGwpe3JldHVybiBsfDUzNjg3MDkxMn1mdW5jdGlvbiBzKGwpe3JldHVybn5sfWZ1bmN0aW9uIHAobCl7cmV0dXJufmx9ZnVuY3Rpb24gbihsKXtyZXR1cm4gbH1mdW5jdGlvbiBhKGwpe3JldHVybiBsfWZ1bmN0aW9uIHUobCl7cmV0dXJuIGx8PTAsbDwwP2UobCk6cyhsKX1mdW5jdGlvbiBpKGwpe3JldHVybiBsfD0wLGw+LTUzNjg3MDkxMz9wKGwpOnIobCl9WzEsMiwzXS5mb3JFYWNoKGw9PmwpLFsxLC0xXS5mb3JFYWNoKGw9PmkodShsKSkpfX0pLGd0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3RlbXBsYXRlLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudW53cmFwSGFuZGxlPWYsdC51bndyYXBUZW1wbGF0ZT1oLHQuZXh0cmFjdEhhbmRsZT1kLHQuaXNPa0hhbmRsZT1jLHQuaXNFcnJIYW5kbGU9bztmdW5jdGlvbiBmKGUpe2lmKHR5cGVvZiBlPT1cIm51bWJlclwiKXJldHVybiBlO3tsZXQgcj1lLmVycm9yc1swXTt0aHJvdyBuZXcgRXJyb3IoXCJDb21waWxlIEVycm9yOiBcIi5jb25jYXQoci5wcm9ibGVtLFwiIEAgXCIpLmNvbmNhdChyLnNwYW4uc3RhcnQsXCIuLlwiKS5jb25jYXQoci5zcGFuLmVuZCkpfX1mdW5jdGlvbiBoKGUpe2lmKGUucmVzdWx0PT09XCJlcnJvclwiKXRocm93IG5ldyBFcnJvcihcIkNvbXBpbGUgRXJyb3I6IFwiLmNvbmNhdChlLnByb2JsZW0sXCIgQCBcIikuY29uY2F0KGUuc3Bhbi5zdGFydCxcIi4uXCIpLmNvbmNhdChlLnNwYW4uZW5kKSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXtyZXR1cm4gdHlwZW9mIGU9PVwibnVtYmVyXCI/ZTplLmhhbmRsZX1mdW5jdGlvbiBjKGUpe3JldHVybiB0eXBlb2YgZT09XCJudW1iZXJcIn1mdW5jdGlvbiBvKGUpe3JldHVybiB0eXBlb2YgZT09XCJudW1iZXJcIn19fSksYnQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvdXRpbC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvd2Vhay1zZXQuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgZj10eXBlb2YgV2Vha1NldD09XCJmdW5jdGlvblwiP1dlYWtTZXQ6Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXB9YWRkKGQpe3JldHVybiB0aGlzLl9tYXAuc2V0KGQsITApLHRoaXN9ZGVsZXRlKGQpe3JldHVybiB0aGlzLl9tYXAuZGVsZXRlKGQpfWhhcyhkKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhkKX19O3QuZGVmYXVsdD1mfX0pLHZ0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3NpbXBsZS1jYXN0LmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY2FzdFRvU2ltcGxlPWgsdC5jYXN0VG9Ccm93c2VyPWQsdC5jaGVja05vZGU9cjt2YXIgZj1tZSgpO2Z1bmN0aW9uIGgocCl7cmV0dXJuIG8ocCl8fGUocCkscH1mdW5jdGlvbiBkKHAsbil7aWYocD09bnVsbClyZXR1cm4gbnVsbDtpZih0eXBlb2YgZG9jdW1lbnQ9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGNhc3QgdG8gYSBicm93c2VyIG5vZGUgaW4gYSBub24tYnJvd3NlciBjb250ZXh0XCIpO2lmKG8ocCkpcmV0dXJuIHA7aWYocC5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGNhc3QgdG8gYSBicm93c2VyIG5vZGUgd2l0aCBhIG5vZGUgdGhhdCB3YXMgbm90IGNyZWF0ZWQgZnJvbSB0aGlzIGRvY3VtZW50XCIpO3JldHVybiByKHAsbil9ZnVuY3Rpb24gYyhwLG4pe3JldHVybiBuZXcgRXJyb3IoXCJjYW5ub3QgY2FzdCBhIFwiLmNvbmNhdChwLFwiIGludG8gXCIpLmNvbmNhdChuKSl9ZnVuY3Rpb24gbyhwKXtyZXR1cm4gcC5ub2RlVHlwZT09PTl9ZnVuY3Rpb24gZShwKXtyZXR1cm4gcC5ub2RlVHlwZT09PTF9ZnVuY3Rpb24gcihwLG4pe2xldCBhPSExO2lmKHAhPT1udWxsKWlmKHR5cGVvZiBuPT1cInN0cmluZ1wiKWE9cyhwLG4pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShuKSlhPW4uc29tZSh1PT5zKHAsdSkpO2Vsc2UgdGhyb3coMCxmLnVucmVhY2hhYmxlKSgpO2lmKGEpcmV0dXJuIHA7dGhyb3cgYyhcIlNpbXBsZUVsZW1lbnQoXCIuY29uY2F0KHAsXCIpXCIpLG4pfWZ1bmN0aW9uIHMocCxuKXtzd2l0Y2gobil7Y2FzZVwiTk9ERVwiOnJldHVybiEwO2Nhc2VcIkhUTUxcIjpyZXR1cm4gcCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O2Nhc2VcIlNWR1wiOnJldHVybiBwIGluc3RhbmNlb2YgU1ZHRWxlbWVudDtjYXNlXCJFTEVNRU5UXCI6cmV0dXJuIHAgaW5zdGFuY2VvZiBFbGVtZW50O2RlZmF1bHQ6aWYobi50b1VwcGVyQ2FzZSgpPT09bil0aHJvdyBuZXcgRXJyb3IoXCJCVUc6IHRoaXMgY29kZSBpcyBtaXNzaW5nIGhhbmRsaW5nIGZvciBhIGdlbmVyaWMgbm9kZSB0eXBlXCIpO3JldHVybiBwIGluc3RhbmNlb2YgRWxlbWVudCYmcC50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT1ufX19fSkseXQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvdXRpbC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvcHJlc2VudC5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzUHJlc2VudD1mLHQuaWZQcmVzZW50PWgsdC50b1ByZXNlbnRPcHRpb249ZCx0LmFzc2VydFByZXNlbnQ9Yyx0Lm1hcFByZXNlbnQ9bztmdW5jdGlvbiBmKGUpe3JldHVybiBlLmxlbmd0aD4wfWZ1bmN0aW9uIGgoZSxyLHMpe3JldHVybiBmKGUpP3IoZSk6cygpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGYoZSk/ZTpudWxsfWZ1bmN0aW9uIGMoZSl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOlwidW5leHBlY3RlZCBlbXB0eSBsaXN0XCI7aWYoIWYoZSkpdGhyb3cgbmV3IEVycm9yKHIpfWZ1bmN0aW9uIG8oZSxyKXtpZihlPT09bnVsbClyZXR1cm4gbnVsbDtsZXQgcz1bXTtmb3IobGV0IHAgb2YgZSlzLnB1c2gocihwKSk7cmV0dXJuIHN9fX0pLEF0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3VudG91Y2hhYmxlLXRoaXMuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWQ7dmFyIGY9ZmUoKSxoPW1lKCk7ZnVuY3Rpb24gZChjKXtsZXQgbz1udWxsO2lmKGYuREVCVUcmJmguSEFTX05BVElWRV9QUk9YWSl7bGV0IGU9cj0+e3Rocm93IG5ldyBFcnJvcihcIllvdSBhY2Nlc3NlZCBgdGhpcy5cIi5jb25jYXQoU3RyaW5nKHIpLFwiYCBmcm9tIGEgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBcIikuY29uY2F0KGMsXCIsIGJ1dCB0aGUgZnVuY3Rpb24gaXRzZWxmIHdhcyBub3QgYm91bmQgdG8gYSB2YWxpZCBgdGhpc2AgY29udGV4dC4gQ29uc2lkZXIgdXBkYXRpbmcgdG8gdXNlIGEgYm91bmQgZnVuY3Rpb24gKGZvciBpbnN0YW5jZSwgdXNlIGFuIGFycm93IGZ1bmN0aW9uLCBgKCkgPT4ge31gKS5cIikpfTtvPW5ldyBQcm94eSh7fSx7Z2V0KHIscyl7ZShzKX0sc2V0KHIscyl7cmV0dXJuIGUocyksITF9LGhhcyhyLHMpe3JldHVybiBlKHMpLCExfX0pfXJldHVybiBvfX19KSxFdD1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci91dGlsL2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9kZWJ1Zy10by1zdHJpbmcuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgZj1mZSgpLGg7aWYoZi5ERUJVRyl7bGV0IGM9cj0+e2xldCBzPXIubmFtZTtpZihzPT09dm9pZCAwKXtsZXQgcD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKS5tYXRjaCgvZnVuY3Rpb24gKFxcdyspXFxzKlxcKC8pO3M9cCYmcFsxXXx8XCJcIn1yZXR1cm4gcy5yZXBsYWNlKC9eYm91bmQgLyxcIlwiKX0sbz1yPT57bGV0IHMscDtyZXR1cm4gci5jb25zdHJ1Y3RvciYmdHlwZW9mIHIuY29uc3RydWN0b3I9PVwiZnVuY3Rpb25cIiYmKHA9YyhyLmNvbnN0cnVjdG9yKSksXCJ0b1N0cmluZ1wiaW4gciYmci50b1N0cmluZyE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcmJnIudG9TdHJpbmchPT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcmJihzPXIudG9TdHJpbmcoKSkscyYmcy5tYXRjaCgvPC4qOmVtYmVyXFxkKz4vKSYmcCYmcFswXSE9PVwiX1wiJiZwLmxlbmd0aD4yJiZwIT09XCJDbGFzc1wiP3MucmVwbGFjZSgvPC4qOi8sXCI8XCIuY29uY2F0KHAsXCI6XCIpKTpzfHxwfSxlPXI9PlN0cmluZyhyKTtoPXI9PnR5cGVvZiByPT1cImZ1bmN0aW9uXCI/YyhyKXx8XCIodW5rbm93biBmdW5jdGlvbilcIjp0eXBlb2Ygcj09XCJvYmplY3RcIiYmciE9PW51bGw/byhyKXx8XCIodW5rbm93biBvYmplY3QpXCI6ZShyKX12YXIgZD1oO3QuZGVmYXVsdD1kfX0pLF90PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL2RlYnVnLXN0ZXBzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQubG9nU3RlcD10LnZlcmlmeVN0ZXBzPXQuZW5kVGVzdFN0ZXBzPXQuYmVnaW5UZXN0U3RlcHM9dm9pZCAwO3ZhciBmPWQoUGUoKSksaD1tZSgpO2Z1bmN0aW9uIGQocyl7cmV0dXJuIHMmJnMuX19lc01vZHVsZT9zOntkZWZhdWx0OnN9fXZhciBjO3QuYmVnaW5UZXN0U3RlcHM9Yzt2YXIgbzt0LmVuZFRlc3RTdGVwcz1vO3ZhciBlO3QudmVyaWZ5U3RlcHM9ZTt2YXIgcjt0LmxvZ1N0ZXA9cn19KSxYPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3V0aWwvZGlzdC9jb21tb25qcy9lczIwMTcvaW5kZXguanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGY9e0xPQ0FMX0xPR0dFUjohMCxMT0dHRVI6ITAsYXNzZXJ0TmV2ZXI6ITAsYXNzZXJ0OiEwLGRlcHJlY2F0ZTohMCxkaWN0OiEwLGlzRGljdDohMCxpc09iamVjdDohMCxTdGFjazohMCxpc1NlcmlhbGl6YXRpb25GaXJzdE5vZGU6ITAsU0VSSUFMSVpBVElPTl9GSVJTVF9OT0RFX1NUUklORzohMCxhc3NpZ246ITAsZmlsbE51bGxzOiEwLHZhbHVlczohMCxfV2Vha1NldDohMCxjYXN0VG9TaW1wbGU6ITAsY2FzdFRvQnJvd3NlcjohMCxjaGVja05vZGU6ITAsaW50ZXJuOiEwLGJ1aWxkVW50b3VjaGFibGVUaGlzOiEwLGRlYnVnVG9TdHJpbmc6ITAsYmVnaW5UZXN0U3RlcHM6ITAsZW5kVGVzdFN0ZXBzOiEwLGxvZ1N0ZXA6ITAsdmVyaWZ5U3RlcHM6ITB9O3QuYXNzZXJ0TmV2ZXI9eCxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImFzc2VydFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkZXByZWNhdGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5kZXByZWNhdGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJkaWN0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuZGljdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImlzRGljdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBjLmlzRGljdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImlzT2JqZWN0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuaXNPYmplY3R9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJTdGFja1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBjLlN0YWNrSW1wbH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImlzU2VyaWFsaXphdGlvbkZpcnN0Tm9kZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmlzU2VyaWFsaXphdGlvbkZpcnN0Tm9kZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIlNFUklBTElaQVRJT05fRklSU1RfTk9ERV9TVFJJTkdcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5TRVJJQUxJWkFUSU9OX0ZJUlNUX05PREVfU1RSSU5HfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYXNzaWduXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuYXNzaWdufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZmlsbE51bGxzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuZmlsbE51bGxzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwidmFsdWVzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIudmFsdWVzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX1dlYWtTZXRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiY2FzdFRvU2ltcGxlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuY2FzdFRvU2ltcGxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiY2FzdFRvQnJvd3NlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmNhc3RUb0Jyb3dzZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjaGVja05vZGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jaGVja05vZGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJpbnRlcm5cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYnVpbGRVbnRvdWNoYWJsZVRoaXNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZGVidWdUb1N0cmluZ1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBFLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJiZWdpblRlc3RTdGVwc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2LmJlZ2luVGVzdFN0ZXBzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZW5kVGVzdFN0ZXBzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuZW5kVGVzdFN0ZXBzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwibG9nU3RlcFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2LmxvZ1N0ZXB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ2ZXJpZnlTdGVwc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2LnZlcmlmeVN0ZXBzfX0pLHQuTE9HR0VSPXQuTE9DQUxfTE9HR0VSPXZvaWQgMDt2YXIgaD1sdCgpO09iamVjdC5rZXlzKGgpLmZvckVhY2goZnVuY3Rpb24odyl7dz09PVwiZGVmYXVsdFwifHx3PT09XCJfX2VzTW9kdWxlXCJ8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLHcpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCx3LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoW3ddfX0pfSk7dmFyIGQ9ZyhQZSgpKSxjPWN0KCksbz1odCgpO09iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24odyl7dz09PVwiZGVmYXVsdFwifHx3PT09XCJfX2VzTW9kdWxlXCJ8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLHcpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCx3LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvW3ddfX0pfSk7dmFyIGU9ZHQoKSxyPXB0KCkscz1tZSgpO09iamVjdC5rZXlzKHMpLmZvckVhY2goZnVuY3Rpb24odyl7dz09PVwiZGVmYXVsdFwifHx3PT09XCJfX2VzTW9kdWxlXCJ8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLHcpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCx3LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzW3ddfX0pfSk7dmFyIHA9ZnQoKTtPYmplY3Qua2V5cyhwKS5mb3JFYWNoKGZ1bmN0aW9uKHcpe3c9PT1cImRlZmF1bHRcInx8dz09PVwiX19lc01vZHVsZVwifHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZix3KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsdyx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcFt3XX19KX0pO3ZhciBuPW10KCk7T2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbih3KXt3PT09XCJkZWZhdWx0XCJ8fHc9PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsdyl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHcse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5bd119fSl9KTt2YXIgYT1ndCgpO09iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24odyl7dz09PVwiZGVmYXVsdFwifHx3PT09XCJfX2VzTW9kdWxlXCJ8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLHcpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCx3LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhW3ddfX0pfSk7dmFyIHU9XyhidCgpKSxpPXZ0KCksbD15dCgpO09iamVjdC5rZXlzKGwpLmZvckVhY2goZnVuY3Rpb24odyl7dz09PVwiZGVmYXVsdFwifHx3PT09XCJfX2VzTW9kdWxlXCJ8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLHcpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCx3LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsW3ddfX0pfSk7dmFyIGI9XyhqZSgpKSxQPV8oQXQoKSksRT1fKEV0KCkpLHY9X3QoKTtmdW5jdGlvbiBfKHcpe3JldHVybiB3JiZ3Ll9fZXNNb2R1bGU/dzp7ZGVmYXVsdDp3fX1mdW5jdGlvbiB5KCl7aWYodHlwZW9mIFdlYWtNYXAhPVwiZnVuY3Rpb25cIilyZXR1cm4gbnVsbDt2YXIgdz1uZXcgV2Vha01hcDtyZXR1cm4geT1mdW5jdGlvbigpe3JldHVybiB3fSx3fWZ1bmN0aW9uIGcodyl7aWYodyYmdy5fX2VzTW9kdWxlKXJldHVybiB3O2lmKHc9PT1udWxsfHx0eXBlb2YgdyE9XCJvYmplY3RcIiYmdHlwZW9mIHchPVwiZnVuY3Rpb25cIilyZXR1cm57ZGVmYXVsdDp3fTt2YXIgSD15KCk7aWYoSCYmSC5oYXModykpcmV0dXJuIEguZ2V0KHcpO3ZhciBtPXt9LEM9T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2Zvcih2YXIgUyBpbiB3KWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3LFMpKXt2YXIgUj1DP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodyxTKTpudWxsO1ImJihSLmdldHx8Ui5zZXQpP09iamVjdC5kZWZpbmVQcm9wZXJ0eShtLFMsUik6bVtTXT13W1NdfXJldHVybiBtLmRlZmF1bHQ9dyxIJiZILnNldCh3LG0pLG19dmFyIEw9Y29uc29sZTt0LkxPQ0FMX0xPR0dFUj1MO3ZhciBqPWNvbnNvbGU7dC5MT0dHRVI9ajtmdW5jdGlvbiB4KHcpe2xldCBIPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpcInVuZXhwZWN0ZWQgdW5yZWFjaGFibGUgYnJhbmNoXCI7dGhyb3cgai5sb2coXCJ1bnJlYWNoYWJsZVwiLHcpLGoubG9nKFwiXCIuY29uY2F0KEgsXCIgOjogXCIpLmNvbmNhdChKU09OLnN0cmluZ2lmeSh3KSxcIiAoXCIpLmNvbmNhdCh3LFwiKVwiKSksbmV3IEVycm9yKFwiY29kZSByZWFjaGVkIHVucmVhY2hhYmxlXCIpfX19KSxnZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3NvdXJjZS9sb2NhdGlvbi5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzTG9jYXRlZFdpdGhQb3NpdGlvbnNBcnJheT1zLHQuaXNMb2NhdGVkV2l0aFBvc2l0aW9ucz1wLHQuQlJPS0VOX0xPQ0FUSU9OPXQuTk9OX0VYSVNURU5UX0xPQ0FUSU9OPXQuVEVNUE9SQVJZX0xPQ0FUSU9OPXQuU1lOVEhFVElDPXQuU1lOVEhFVElDX0xPQ0FUSU9OPXQuVU5LTk9XTl9QT1NJVElPTj12b2lkIDA7dmFyIGY9WCgpLGg9T2JqZWN0LmZyZWV6ZSh7bGluZToxLGNvbHVtbjowfSk7dC5VTktOT1dOX1BPU0lUSU9OPWg7dmFyIGQ9T2JqZWN0LmZyZWV6ZSh7c291cmNlOlwiKHN5bnRoZXRpYylcIixzdGFydDpoLGVuZDpofSk7dC5TWU5USEVUSUNfTE9DQVRJT049ZDt2YXIgYz1kO3QuU1lOVEhFVElDPWM7dmFyIG89T2JqZWN0LmZyZWV6ZSh7c291cmNlOlwiKHRlbXBvcmFyeSlcIixzdGFydDpoLGVuZDpofSk7dC5URU1QT1JBUllfTE9DQVRJT049bzt2YXIgZT1PYmplY3QuZnJlZXplKHtzb3VyY2U6XCIobm9uZXhpc3RlbnQpXCIsc3RhcnQ6aCxlbmQ6aH0pO3QuTk9OX0VYSVNURU5UX0xPQ0FUSU9OPWU7dmFyIHI9T2JqZWN0LmZyZWV6ZSh7c291cmNlOlwiKGJyb2tlbilcIixzdGFydDpoLGVuZDpofSk7dC5CUk9LRU5fTE9DQVRJT049cjtmdW5jdGlvbiBzKG4pe3JldHVybigwLGYuaXNQcmVzZW50KShuKSYmbi5ldmVyeShwKX1mdW5jdGlvbiBwKG4pe3JldHVybiBuLmxvYyE9PXZvaWQgMH19fSksbGU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9zb3VyY2Uvc2xpY2UuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Tb3VyY2VTbGljZT12b2lkIDA7dmFyIGY9dWUoKSxoPWNsYXNze2NvbnN0cnVjdG9yKGQpe3RoaXMubG9jPWQubG9jLHRoaXMuY2hhcnM9ZC5jaGFyc31zdGF0aWMgc3ludGhldGljKGQpe2xldCBjPWYuU291cmNlU3Bhbi5zeW50aGV0aWMoZCk7cmV0dXJuIG5ldyBoKHtsb2M6YyxjaGFyczpkfSl9c3RhdGljIGxvYWQoZCxjKXtyZXR1cm4gbmV3IGgoe2xvYzpmLlNvdXJjZVNwYW4ubG9hZChkLGNbMV0pLGNoYXJzOmNbMF19KX1nZXRTdHJpbmcoKXtyZXR1cm4gdGhpcy5jaGFyc31zZXJpYWxpemUoKXtyZXR1cm5bdGhpcy5jaGFycyx0aGlzLmxvYy5zZXJpYWxpemUoKV19fTt0LlNvdXJjZVNsaWNlPWh9fSksTWU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9zb3VyY2UvbG9jL21hdGNoLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQubWF0Y2g9ZSx0LklzSW52aXNpYmxlPXQuTWF0Y2hBbnk9dm9pZCAwO3ZhciBmPVgoKSxoPVwiTUFUQ0hfQU5ZXCI7dC5NYXRjaEFueT1oO3ZhciBkPVwiSVNfSU5WSVNJQkxFXCI7dC5Jc0ludmlzaWJsZT1kO3ZhciBjPWNsYXNze2NvbnN0cnVjdG9yKHApe3RoaXMuX3doZW5zPXB9Zmlyc3QocCl7Zm9yKGxldCBuIG9mIHRoaXMuX3doZW5zKXtsZXQgYT1uLm1hdGNoKHApO2lmKCgwLGYuaXNQcmVzZW50KShhKSlyZXR1cm4gYVswXX1yZXR1cm4gbnVsbH19LG89Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQocCxuKXtsZXQgYT10aGlzLl9tYXAuZ2V0KHApO3JldHVybiBhfHwoYT1uKCksdGhpcy5fbWFwLnNldChwLGEpLGEpfWFkZChwLG4pe3RoaXMuX21hcC5zZXQocCxuKX1tYXRjaChwKXtsZXQgbj1zKHApLGE9W10sdT10aGlzLl9tYXAuZ2V0KG4pLGk9dGhpcy5fbWFwLmdldChoKTtyZXR1cm4gdSYmYS5wdXNoKHUpLGkmJmEucHVzaChpKSxhfX07ZnVuY3Rpb24gZShwKXtyZXR1cm4gcChuZXcgcikuY2hlY2soKX12YXIgcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3doZW5zPW5ldyBvfWNoZWNrKCl7cmV0dXJuKHAsbik9PnRoaXMubWF0Y2hGb3IocC5raW5kLG4ua2luZCkocCxuKX1tYXRjaEZvcihwLG4pe2xldCBhPXRoaXMuX3doZW5zLm1hdGNoKHApO3JldHVybiBuZXcgYyhhKS5maXJzdChuKX13aGVuKHAsbixhKXtyZXR1cm4gdGhpcy5fd2hlbnMuZ2V0KHAsKCk9Pm5ldyBvKS5hZGQobixhKSx0aGlzfX07ZnVuY3Rpb24gcyhwKXtzd2l0Y2gocCl7Y2FzZVwiQnJva2VuXCI6Y2FzZVwiSW50ZXJuYWxzU3ludGhldGljXCI6Y2FzZVwiTm9uRXhpc3RlbnRcIjpyZXR1cm4gZDtkZWZhdWx0OnJldHVybiBwfX19fSksSGU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9zb3VyY2UvbG9jL29mZnNldC5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkludmlzaWJsZVBvc2l0aW9uPXQuSGJzUG9zaXRpb249dC5DaGFyUG9zaXRpb249dC5Tb3VyY2VPZmZzZXQ9dC5CUk9LRU49dm9pZCAwO3ZhciBmPWdlKCksaD1NZSgpLGQ9VmUoKSxjPVwiQlJPS0VOXCI7dC5CUk9LRU49Yzt2YXIgbz1jbGFzc3tjb25zdHJ1Y3RvcihuKXt0aGlzLmRhdGE9bn1zdGF0aWMgZm9ySGJzUG9zKG4sYSl7cmV0dXJuIG5ldyByKG4sYSxudWxsKS53cmFwKCl9c3RhdGljIGJyb2tlbigpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpmLlVOS05PV05fUE9TSVRJT047cmV0dXJuIG5ldyBzKFwiQnJva2VuXCIsbikud3JhcCgpfWdldCBvZmZzZXQoKXtsZXQgbj10aGlzLmRhdGEudG9DaGFyUG9zKCk7cmV0dXJuIG49PT1udWxsP251bGw6bi5vZmZzZXR9ZXFsKG4pe3JldHVybiBwKHRoaXMuZGF0YSxuLmRhdGEpfXVudGlsKG4pe3JldHVybigwLGQuc3BhbikodGhpcy5kYXRhLG4uZGF0YSl9bW92ZShuKXtsZXQgYT10aGlzLmRhdGEudG9DaGFyUG9zKCk7aWYoYT09PW51bGwpcmV0dXJuIG8uYnJva2VuKCk7e2xldCB1PWEub2Zmc2V0K247cmV0dXJuIGEuc291cmNlLmNoZWNrKHUpP25ldyBlKGEuc291cmNlLHUpLndyYXAoKTpvLmJyb2tlbigpfX1jb2xsYXBzZWQoKXtyZXR1cm4oMCxkLnNwYW4pKHRoaXMuZGF0YSx0aGlzLmRhdGEpfXRvSlNPTigpe3JldHVybiB0aGlzLmRhdGEudG9KU09OKCl9fTt0LlNvdXJjZU9mZnNldD1vO3ZhciBlPWNsYXNze2NvbnN0cnVjdG9yKG4sYSl7dGhpcy5zb3VyY2U9bix0aGlzLmNoYXJQb3M9YSx0aGlzLmtpbmQ9XCJDaGFyUG9zaXRpb25cIix0aGlzLl9sb2NQb3M9bnVsbH10b0NoYXJQb3MoKXtyZXR1cm4gdGhpc310b0pTT04oKXtsZXQgbj10aGlzLnRvSGJzUG9zKCk7cmV0dXJuIG49PT1udWxsP2YuVU5LTk9XTl9QT1NJVElPTjpuLnRvSlNPTigpfXdyYXAoKXtyZXR1cm4gbmV3IG8odGhpcyl9Z2V0IG9mZnNldCgpe3JldHVybiB0aGlzLmNoYXJQb3N9dG9IYnNQb3MoKXtsZXQgbj10aGlzLl9sb2NQb3M7aWYobj09PW51bGwpe2xldCBhPXRoaXMuc291cmNlLmhic1Bvc0Zvcih0aGlzLmNoYXJQb3MpO2E9PT1udWxsP3RoaXMuX2xvY1Bvcz1uPWM6dGhpcy5fbG9jUG9zPW49bmV3IHIodGhpcy5zb3VyY2UsYSx0aGlzLmNoYXJQb3MpfXJldHVybiBuPT09Yz9udWxsOm59fTt0LkNoYXJQb3NpdGlvbj1lO3ZhciByPWNsYXNze2NvbnN0cnVjdG9yKG4sYSl7bGV0IHU9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGw7dGhpcy5zb3VyY2U9bix0aGlzLmhic1Bvcz1hLHRoaXMua2luZD1cIkhic1Bvc2l0aW9uXCIsdGhpcy5fY2hhclBvcz11PT09bnVsbD9udWxsOm5ldyBlKG4sdSl9dG9DaGFyUG9zKCl7bGV0IG49dGhpcy5fY2hhclBvcztpZihuPT09bnVsbCl7bGV0IGE9dGhpcy5zb3VyY2UuY2hhclBvc0Zvcih0aGlzLmhic1Bvcyk7YT09PW51bGw/dGhpcy5fY2hhclBvcz1uPWM6dGhpcy5fY2hhclBvcz1uPW5ldyBlKHRoaXMuc291cmNlLGEpfXJldHVybiBuPT09Yz9udWxsOm59dG9KU09OKCl7cmV0dXJuIHRoaXMuaGJzUG9zfXdyYXAoKXtyZXR1cm4gbmV3IG8odGhpcyl9dG9IYnNQb3MoKXtyZXR1cm4gdGhpc319O3QuSGJzUG9zaXRpb249cjt2YXIgcz1jbGFzc3tjb25zdHJ1Y3RvcihuLGEpe3RoaXMua2luZD1uLHRoaXMucG9zPWF9dG9DaGFyUG9zKCl7cmV0dXJuIG51bGx9dG9KU09OKCl7cmV0dXJuIHRoaXMucG9zfXdyYXAoKXtyZXR1cm4gbmV3IG8odGhpcyl9Z2V0IG9mZnNldCgpe3JldHVybiBudWxsfX07dC5JbnZpc2libGVQb3NpdGlvbj1zO3ZhciBwPSgwLGgubWF0Y2gpKG49Pm4ud2hlbihcIkhic1Bvc2l0aW9uXCIsXCJIYnNQb3NpdGlvblwiLChhLHUpPT57bGV0e2hic1BvczppfT1hLHtoYnNQb3M6bH09dTtyZXR1cm4gaS5jb2x1bW49PT1sLmNvbHVtbiYmaS5saW5lPT09bC5saW5lfSkud2hlbihcIkNoYXJQb3NpdGlvblwiLFwiQ2hhclBvc2l0aW9uXCIsKGEsdSk9PntsZXR7Y2hhclBvczppfT1hLHtjaGFyUG9zOmx9PXU7cmV0dXJuIGk9PT1sfSkud2hlbihcIkNoYXJQb3NpdGlvblwiLFwiSGJzUG9zaXRpb25cIiwoYSx1KT0+e2xldHtvZmZzZXQ6aX09YTt2YXIgbDtyZXR1cm4gaT09PSgobD11LnRvQ2hhclBvcygpKT09PW51bGx8fGw9PT12b2lkIDA/dm9pZCAwOmwub2Zmc2V0KX0pLndoZW4oXCJIYnNQb3NpdGlvblwiLFwiQ2hhclBvc2l0aW9uXCIsKGEsdSk9PntsZXR7b2Zmc2V0Oml9PXU7dmFyIGw7cmV0dXJuKChsPWEudG9DaGFyUG9zKCkpPT09bnVsbHx8bD09PXZvaWQgMD92b2lkIDA6bC5vZmZzZXQpPT09aX0pLndoZW4oaC5NYXRjaEFueSxoLk1hdGNoQW55LCgpPT4hMSkpfX0pLFZlPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvc291cmNlL2xvYy9zcGFuLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuc3Bhbj10Lkhic1NwYW49dC5Tb3VyY2VTcGFuPXZvaWQgMDt2YXIgZj1mZSgpLGg9WCgpLGQ9Z2UoKSxjPWxlKCksbz1NZSgpLGU9SGUoKSxyPWNsYXNze2NvbnN0cnVjdG9yKHUpe3RoaXMuZGF0YT11LHRoaXMuaXNJbnZpc2libGU9dS5raW5kIT09XCJDaGFyUG9zaXRpb25cIiYmdS5raW5kIT09XCJIYnNQb3NpdGlvblwifXN0YXRpYyBnZXQgTk9OX0VYSVNURU5UKCl7cmV0dXJuIG5ldyBuKFwiTm9uRXhpc3RlbnRcIixkLk5PTl9FWElTVEVOVF9MT0NBVElPTikud3JhcCgpfXN0YXRpYyBsb2FkKHUsaSl7aWYodHlwZW9mIGk9PVwibnVtYmVyXCIpcmV0dXJuIHIuZm9yQ2hhclBvc2l0aW9ucyh1LGksaSk7aWYodHlwZW9mIGk9PVwic3RyaW5nXCIpcmV0dXJuIHIuc3ludGhldGljKGkpO2lmKEFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIHIuZm9yQ2hhclBvc2l0aW9ucyh1LGlbMF0saVsxXSk7aWYoaT09PVwiTm9uRXhpc3RlbnRcIilyZXR1cm4gci5OT05fRVhJU1RFTlQ7aWYoaT09PVwiQnJva2VuXCIpcmV0dXJuIHIuYnJva2VuKGQuQlJPS0VOX0xPQ0FUSU9OKTsoMCxoLmFzc2VydE5ldmVyKShpKX1zdGF0aWMgZm9ySGJzTG9jKHUsaSl7bGV0IGw9bmV3IGUuSGJzUG9zaXRpb24odSxpLnN0YXJ0KSxiPW5ldyBlLkhic1Bvc2l0aW9uKHUsaS5lbmQpO3JldHVybiBuZXcgcCh1LHtzdGFydDpsLGVuZDpifSxpKS53cmFwKCl9c3RhdGljIGZvckNoYXJQb3NpdGlvbnModSxpLGwpe2xldCBiPW5ldyBlLkNoYXJQb3NpdGlvbih1LGkpLFA9bmV3IGUuQ2hhclBvc2l0aW9uKHUsbCk7cmV0dXJuIG5ldyBzKHUse3N0YXJ0OmIsZW5kOlB9KS53cmFwKCl9c3RhdGljIHN5bnRoZXRpYyh1KXtyZXR1cm4gbmV3IG4oXCJJbnRlcm5hbHNTeW50aGV0aWNcIixkLk5PTl9FWElTVEVOVF9MT0NBVElPTix1KS53cmFwKCl9c3RhdGljIGJyb2tlbigpe2xldCB1PWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpkLkJST0tFTl9MT0NBVElPTjtyZXR1cm4gbmV3IG4oXCJCcm9rZW5cIix1KS53cmFwKCl9Z2V0U3RhcnQoKXtyZXR1cm4gdGhpcy5kYXRhLmdldFN0YXJ0KCkud3JhcCgpfWdldEVuZCgpe3JldHVybiB0aGlzLmRhdGEuZ2V0RW5kKCkud3JhcCgpfWdldCBsb2MoKXtsZXQgdT10aGlzLmRhdGEudG9IYnNTcGFuKCk7cmV0dXJuIHU9PT1udWxsP2QuQlJPS0VOX0xPQ0FUSU9OOnUudG9IYnNMb2MoKX1nZXQgbW9kdWxlKCl7cmV0dXJuIHRoaXMuZGF0YS5nZXRNb2R1bGUoKX1nZXQgc3RhcnRQb3NpdGlvbigpe3JldHVybiB0aGlzLmxvYy5zdGFydH1nZXQgZW5kUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5sb2MuZW5kfXRvSlNPTigpe3JldHVybiB0aGlzLmxvY313aXRoU3RhcnQodSl7cmV0dXJuIGEodS5kYXRhLHRoaXMuZGF0YS5nZXRFbmQoKSl9d2l0aEVuZCh1KXtyZXR1cm4gYSh0aGlzLmRhdGEuZ2V0U3RhcnQoKSx1LmRhdGEpfWFzU3RyaW5nKCl7cmV0dXJuIHRoaXMuZGF0YS5hc1N0cmluZygpfXRvU2xpY2UodSl7bGV0IGk9dGhpcy5kYXRhLmFzU3RyaW5nKCk7cmV0dXJuIGYuREVCVUcmJnUhPT12b2lkIDAmJmkhPT11JiZjb25zb2xlLndhcm4oXCJ1bmV4cGVjdGVkbHkgZm91bmQgXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KGkpLFwiIHdoZW4gc2xpY2luZyBzb3VyY2UsIGJ1dCBleHBlY3RlZCBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KHUpKSksbmV3IGMuU291cmNlU2xpY2Uoe2xvYzp0aGlzLGNoYXJzOnV8fGl9KX1nZXQgc3RhcnQoKXtyZXR1cm4gdGhpcy5sb2Muc3RhcnR9c2V0IHN0YXJ0KHUpe3RoaXMuZGF0YS5sb2NEaWRVcGRhdGUoe3N0YXJ0OnV9KX1nZXQgZW5kKCl7cmV0dXJuIHRoaXMubG9jLmVuZH1zZXQgZW5kKHUpe3RoaXMuZGF0YS5sb2NEaWRVcGRhdGUoe2VuZDp1fSl9Z2V0IHNvdXJjZSgpe3JldHVybiB0aGlzLm1vZHVsZX1jb2xsYXBzZSh1KXtzd2l0Y2godSl7Y2FzZVwic3RhcnRcIjpyZXR1cm4gdGhpcy5nZXRTdGFydCgpLmNvbGxhcHNlZCgpO2Nhc2VcImVuZFwiOnJldHVybiB0aGlzLmdldEVuZCgpLmNvbGxhcHNlZCgpfX1leHRlbmQodSl7cmV0dXJuIGEodGhpcy5kYXRhLmdldFN0YXJ0KCksdS5kYXRhLmdldEVuZCgpKX1zZXJpYWxpemUoKXtyZXR1cm4gdGhpcy5kYXRhLnNlcmlhbGl6ZSgpfXNsaWNlKHUpe2xldHtza2lwU3RhcnQ6aT0wLHNraXBFbmQ6bD0wfT11O3JldHVybiBhKHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKGkpLmRhdGEsdGhpcy5nZXRFbmQoKS5tb3ZlKC1sKS5kYXRhKX1zbGljZVN0YXJ0Q2hhcnModSl7bGV0e3NraXBTdGFydDppPTAsY2hhcnM6bH09dTtyZXR1cm4gYSh0aGlzLmdldFN0YXJ0KCkubW92ZShpKS5kYXRhLHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKGkrbCkuZGF0YSl9c2xpY2VFbmRDaGFycyh1KXtsZXR7c2tpcEVuZDppPTAsY2hhcnM6bH09dTtyZXR1cm4gYSh0aGlzLmdldEVuZCgpLm1vdmUoaS1sKS5kYXRhLHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKC1pKS5kYXRhKX19O3QuU291cmNlU3Bhbj1yO3ZhciBzPWNsYXNze2NvbnN0cnVjdG9yKHUsaSl7dGhpcy5zb3VyY2U9dSx0aGlzLmNoYXJQb3NpdGlvbnM9aSx0aGlzLmtpbmQ9XCJDaGFyUG9zaXRpb25cIix0aGlzLl9sb2NQb3NTcGFuPW51bGx9d3JhcCgpe3JldHVybiBuZXcgcih0aGlzKX1hc1N0cmluZygpe3JldHVybiB0aGlzLnNvdXJjZS5zbGljZSh0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQuY2hhclBvcyx0aGlzLmNoYXJQb3NpdGlvbnMuZW5kLmNoYXJQb3MpfWdldE1vZHVsZSgpe3JldHVybiB0aGlzLnNvdXJjZS5tb2R1bGV9Z2V0U3RhcnQoKXtyZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0fWdldEVuZCgpe3JldHVybiB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kfWxvY0RpZFVwZGF0ZSgpe310b0hic1NwYW4oKXtsZXQgdT10aGlzLl9sb2NQb3NTcGFuO2lmKHU9PT1udWxsKXtsZXQgaT10aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQudG9IYnNQb3MoKSxsPXRoaXMuY2hhclBvc2l0aW9ucy5lbmQudG9IYnNQb3MoKTtpPT09bnVsbHx8bD09PW51bGw/dT10aGlzLl9sb2NQb3NTcGFuPWUuQlJPS0VOOnU9dGhpcy5fbG9jUG9zU3Bhbj1uZXcgcCh0aGlzLnNvdXJjZSx7c3RhcnQ6aSxlbmQ6bH0pfXJldHVybiB1PT09ZS5CUk9LRU4/bnVsbDp1fXNlcmlhbGl6ZSgpe2xldHtzdGFydDp7Y2hhclBvczp1fSxlbmQ6e2NoYXJQb3M6aX19PXRoaXMuY2hhclBvc2l0aW9ucztyZXR1cm4gdT09PWk/dTpbdSxpXX10b0NoYXJQb3NTcGFuKCl7cmV0dXJuIHRoaXN9fSxwPWNsYXNze2NvbnN0cnVjdG9yKHUsaSl7bGV0IGw9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGw7dGhpcy5zb3VyY2U9dSx0aGlzLmhic1Bvc2l0aW9ucz1pLHRoaXMua2luZD1cIkhic1Bvc2l0aW9uXCIsdGhpcy5fY2hhclBvc1NwYW49bnVsbCx0aGlzLl9wcm92aWRlZEhic0xvYz1sfXNlcmlhbGl6ZSgpe2xldCB1PXRoaXMudG9DaGFyUG9zU3BhbigpO3JldHVybiB1PT09bnVsbD9cIkJyb2tlblwiOnUud3JhcCgpLnNlcmlhbGl6ZSgpfXdyYXAoKXtyZXR1cm4gbmV3IHIodGhpcyl9dXBkYXRlUHJvdmlkZWQodSxpKXt0aGlzLl9wcm92aWRlZEhic0xvYyYmKHRoaXMuX3Byb3ZpZGVkSGJzTG9jW2ldPXUpLHRoaXMuX2NoYXJQb3NTcGFuPW51bGwsdGhpcy5fcHJvdmlkZWRIYnNMb2M9e3N0YXJ0OnUsZW5kOnV9fWxvY0RpZFVwZGF0ZSh1KXtsZXR7c3RhcnQ6aSxlbmQ6bH09dTtpIT09dm9pZCAwJiYodGhpcy51cGRhdGVQcm92aWRlZChpLFwic3RhcnRcIiksdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQ9bmV3IGUuSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsaSxudWxsKSksbCE9PXZvaWQgMCYmKHRoaXMudXBkYXRlUHJvdmlkZWQobCxcImVuZFwiKSx0aGlzLmhic1Bvc2l0aW9ucy5lbmQ9bmV3IGUuSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsbCxudWxsKSl9YXNTdHJpbmcoKXtsZXQgdT10aGlzLnRvQ2hhclBvc1NwYW4oKTtyZXR1cm4gdT09PW51bGw/XCJcIjp1LmFzU3RyaW5nKCl9Z2V0TW9kdWxlKCl7cmV0dXJuIHRoaXMuc291cmNlLm1vZHVsZX1nZXRTdGFydCgpe3JldHVybiB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydH1nZXRFbmQoKXtyZXR1cm4gdGhpcy5oYnNQb3NpdGlvbnMuZW5kfXRvSGJzTG9jKCl7cmV0dXJue3N0YXJ0OnRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0Lmhic1BvcyxlbmQ6dGhpcy5oYnNQb3NpdGlvbnMuZW5kLmhic1Bvc319dG9IYnNTcGFuKCl7cmV0dXJuIHRoaXN9dG9DaGFyUG9zU3Bhbigpe2xldCB1PXRoaXMuX2NoYXJQb3NTcGFuO2lmKHU9PT1udWxsKXtsZXQgaT10aGlzLmhic1Bvc2l0aW9ucy5zdGFydC50b0NoYXJQb3MoKSxsPXRoaXMuaGJzUG9zaXRpb25zLmVuZC50b0NoYXJQb3MoKTtpZihpJiZsKXU9dGhpcy5fY2hhclBvc1NwYW49bmV3IHModGhpcy5zb3VyY2Use3N0YXJ0OmksZW5kOmx9KTtlbHNlIHJldHVybiB1PXRoaXMuX2NoYXJQb3NTcGFuPWUuQlJPS0VOLG51bGx9cmV0dXJuIHU9PT1lLkJST0tFTj9udWxsOnV9fTt0Lkhic1NwYW49cDt2YXIgbj1jbGFzc3tjb25zdHJ1Y3Rvcih1LGkpe2xldCBsPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTpudWxsO3RoaXMua2luZD11LHRoaXMubG9jPWksdGhpcy5zdHJpbmc9bH1zZXJpYWxpemUoKXtzd2l0Y2godGhpcy5raW5kKXtjYXNlXCJCcm9rZW5cIjpjYXNlXCJOb25FeGlzdGVudFwiOnJldHVybiB0aGlzLmtpbmQ7Y2FzZVwiSW50ZXJuYWxzU3ludGhldGljXCI6cmV0dXJuIHRoaXMuc3RyaW5nfHxcIlwifX13cmFwKCl7cmV0dXJuIG5ldyByKHRoaXMpfWFzU3RyaW5nKCl7cmV0dXJuIHRoaXMuc3RyaW5nfHxcIlwifWxvY0RpZFVwZGF0ZSh1KXtsZXR7c3RhcnQ6aSxlbmQ6bH09dTtpIT09dm9pZCAwJiYodGhpcy5sb2Muc3RhcnQ9aSksbCE9PXZvaWQgMCYmKHRoaXMubG9jLmVuZD1sKX1nZXRNb2R1bGUoKXtyZXR1cm5cImFuIHVua25vd24gbW9kdWxlXCJ9Z2V0U3RhcnQoKXtyZXR1cm4gbmV3IGUuSW52aXNpYmxlUG9zaXRpb24odGhpcy5raW5kLHRoaXMubG9jLnN0YXJ0KX1nZXRFbmQoKXtyZXR1cm4gbmV3IGUuSW52aXNpYmxlUG9zaXRpb24odGhpcy5raW5kLHRoaXMubG9jLmVuZCl9dG9DaGFyUG9zU3Bhbigpe3JldHVybiB0aGlzfXRvSGJzU3Bhbigpe3JldHVybiBudWxsfXRvSGJzTG9jKCl7cmV0dXJuIGQuQlJPS0VOX0xPQ0FUSU9OfX0sYT0oMCxvLm1hdGNoKSh1PT51LndoZW4oXCJIYnNQb3NpdGlvblwiLFwiSGJzUG9zaXRpb25cIiwoaSxsKT0+bmV3IHAoaS5zb3VyY2Use3N0YXJ0OmksZW5kOmx9KS53cmFwKCkpLndoZW4oXCJDaGFyUG9zaXRpb25cIixcIkNoYXJQb3NpdGlvblwiLChpLGwpPT5uZXcgcyhpLnNvdXJjZSx7c3RhcnQ6aSxlbmQ6bH0pLndyYXAoKSkud2hlbihcIkNoYXJQb3NpdGlvblwiLFwiSGJzUG9zaXRpb25cIiwoaSxsKT0+e2xldCBiPWwudG9DaGFyUG9zKCk7cmV0dXJuIGI9PT1udWxsP25ldyBuKFwiQnJva2VuXCIsZC5CUk9LRU5fTE9DQVRJT04pLndyYXAoKTphKGksYil9KS53aGVuKFwiSGJzUG9zaXRpb25cIixcIkNoYXJQb3NpdGlvblwiLChpLGwpPT57bGV0IGI9aS50b0NoYXJQb3MoKTtyZXR1cm4gYj09PW51bGw/bmV3IG4oXCJCcm9rZW5cIixkLkJST0tFTl9MT0NBVElPTikud3JhcCgpOmEoYixsKX0pLndoZW4oby5Jc0ludmlzaWJsZSxvLk1hdGNoQW55LGk9Pm5ldyBuKGkua2luZCxkLkJST0tFTl9MT0NBVElPTikud3JhcCgpKS53aGVuKG8uTWF0Y2hBbnksby5Jc0ludmlzaWJsZSwoaSxsKT0+bmV3IG4obC5raW5kLGQuQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCkpKTt0LnNwYW49YX19KSx1ZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3NvdXJjZS9zcGFuLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiU291cmNlU3BhblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmLlNvdXJjZVNwYW59fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJTb3VyY2VPZmZzZXRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5Tb3VyY2VPZmZzZXR9fSk7dmFyIGY9VmUoKSxoPUhlKCl9fSksRGU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9zb3VyY2Uvc291cmNlLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU291cmNlPXZvaWQgMDt2YXIgZj1mZSgpLGg9WCgpLGQ9dWUoKSxjPWNsYXNze2NvbnN0cnVjdG9yKG8pe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpcImFuIHVua25vd24gbW9kdWxlXCI7dGhpcy5zb3VyY2U9byx0aGlzLm1vZHVsZT1lfWNoZWNrKG8pe3JldHVybiBvPj0wJiZvPD10aGlzLnNvdXJjZS5sZW5ndGh9c2xpY2UobyxlKXtyZXR1cm4gdGhpcy5zb3VyY2Uuc2xpY2UobyxlKX1vZmZzZXRGb3IobyxlKXtyZXR1cm4gZC5Tb3VyY2VPZmZzZXQuZm9ySGJzUG9zKHRoaXMse2xpbmU6byxjb2x1bW46ZX0pfXNwYW5Gb3Iobyl7bGV0e3N0YXJ0OmUsZW5kOnJ9PW87cmV0dXJuIGQuU291cmNlU3Bhbi5mb3JIYnNMb2ModGhpcyx7c3RhcnQ6e2xpbmU6ZS5saW5lLGNvbHVtbjplLmNvbHVtbn0sZW5kOntsaW5lOnIubGluZSxjb2x1bW46ci5jb2x1bW59fSl9aGJzUG9zRm9yKG8pe2xldCBlPTAscj0wO2lmKG8+dGhpcy5zb3VyY2UubGVuZ3RoKXJldHVybiBudWxsO2Zvcig7Oyl7bGV0IHM9dGhpcy5zb3VyY2UuaW5kZXhPZihgXG5gLHIpO2lmKG88PXN8fHM9PT0tMSlyZXR1cm57bGluZTplKzEsY29sdW1uOm8tcn07ZSs9MSxyPXMrMX19Y2hhclBvc0ZvcihvKXtsZXR7bGluZTplLGNvbHVtbjpyfT1vLHA9dGhpcy5zb3VyY2UubGVuZ3RoLG49MCxhPTA7Zm9yKDs7KXtpZihhPj1wKXJldHVybiBwO2xldCB1PXRoaXMuc291cmNlLmluZGV4T2YoYFxuYCxhKTtpZih1PT09LTEmJih1PXRoaXMuc291cmNlLmxlbmd0aCksbj09PWUtMSl7aWYoYStyPnUpcmV0dXJuIHU7aWYoZi5ERUJVRyl7bGV0IGk9dGhpcy5oYnNQb3NGb3IoYStyKX1yZXR1cm4gYStyfWVsc2V7aWYodT09PS0xKXJldHVybiAwO24rPTEsYT11KzF9fX19O3QuU291cmNlPWN9fSksd2U9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi92MS9sZWdhY3ktaW50ZXJvcC5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlBhdGhFeHByZXNzaW9uSW1wbFYxPXZvaWQgMDt2YXIgZj1oKGtlKCkpO2Z1bmN0aW9uIGgoYyl7cmV0dXJuIGMmJmMuX19lc01vZHVsZT9jOntkZWZhdWx0OmN9fXZhciBkPWNsYXNze2NvbnN0cnVjdG9yKGMsbyxlLHIpe3RoaXMub3JpZ2luYWw9Yyx0aGlzLmxvYz1yLHRoaXMudHlwZT1cIlBhdGhFeHByZXNzaW9uXCIsdGhpcy50aGlzPSExLHRoaXMuZGF0YT0hMSx0aGlzLl9oZWFkPXZvaWQgMDtsZXQgcz1lLnNsaWNlKCk7by50eXBlPT09XCJUaGlzSGVhZFwiP3RoaXMudGhpcz0hMDpvLnR5cGU9PT1cIkF0SGVhZFwiPyh0aGlzLmRhdGE9ITAscy51bnNoaWZ0KG8ubmFtZS5zbGljZSgxKSkpOnMudW5zaGlmdChvLm5hbWUpLHRoaXMucGFydHM9c31nZXQgaGVhZCgpe2lmKHRoaXMuX2hlYWQpcmV0dXJuIHRoaXMuX2hlYWQ7bGV0IGM7dGhpcy50aGlzP2M9XCJ0aGlzXCI6dGhpcy5kYXRhP2M9XCJAXCIuY29uY2F0KHRoaXMucGFydHNbMF0pOmM9dGhpcy5wYXJ0c1swXTtsZXQgbz10aGlzLmxvYy5jb2xsYXBzZShcInN0YXJ0XCIpLnNsaWNlU3RhcnRDaGFycyh7Y2hhcnM6Yy5sZW5ndGh9KS5sb2M7cmV0dXJuIHRoaXMuX2hlYWQ9Zi5kZWZhdWx0LmhlYWQoYyxvKX1nZXQgdGFpbCgpe3JldHVybiB0aGlzLnRoaXM/dGhpcy5wYXJ0czp0aGlzLnBhcnRzLnNsaWNlKDEpfX07dC5QYXRoRXhwcmVzc2lvbkltcGxWMT1kfX0pLGtlPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdjEvcHVibGljLWJ1aWxkZXJzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIGY9WCgpLGg9Z2UoKSxkPURlKCksYz11ZSgpLG89d2UoKSxlO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZXx8KGU9bmV3IGQuU291cmNlKFwiXCIsXCIoc3ludGhldGljKVwiKSksZX1mdW5jdGlvbiBzKFQsTixrLEIsTyxxKXtyZXR1cm4gdHlwZW9mIFQ9PVwic3RyaW5nXCImJihUPW0oVCkpLHt0eXBlOlwiTXVzdGFjaGVTdGF0ZW1lbnRcIixwYXRoOlQscGFyYW1zOk58fFtdLGhhc2g6a3x8UyhbXSksZXNjYXBlZDohQix0cnVzdGluZzohIUIsbG9jOlUoT3x8bnVsbCksc3RyaXA6cXx8e29wZW46ITEsY2xvc2U6ITF9fX1mdW5jdGlvbiBwKFQsTixrLEIsTyxxLHosQSxRKXtsZXQgRCwkO3JldHVybiBCLnR5cGU9PT1cIlRlbXBsYXRlXCI/RD0oMCxmLmFzc2lnbikoe30sQix7dHlwZTpcIkJsb2NrXCJ9KTpEPUIsTyE9bnVsbCYmTy50eXBlPT09XCJUZW1wbGF0ZVwiPyQ9KDAsZi5hc3NpZ24pKHt9LE8se3R5cGU6XCJCbG9ja1wifSk6JD1PLHt0eXBlOlwiQmxvY2tTdGF0ZW1lbnRcIixwYXRoOm0oVCkscGFyYW1zOk58fFtdLGhhc2g6a3x8UyhbXSkscHJvZ3JhbTpEfHxudWxsLGludmVyc2U6JHx8bnVsbCxsb2M6VShxfHxudWxsKSxvcGVuU3RyaXA6enx8e29wZW46ITEsY2xvc2U6ITF9LGludmVyc2VTdHJpcDpBfHx7b3BlbjohMSxjbG9zZTohMX0sY2xvc2VTdHJpcDpRfHx7b3BlbjohMSxjbG9zZTohMX19fWZ1bmN0aW9uIG4oVCxOLGssQil7cmV0dXJue3R5cGU6XCJFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnRcIixwYXRoOm0oVCkscGFyYW1zOk58fFtdLGhhc2g6a3x8UyhbXSksbG9jOlUoQnx8bnVsbCl9fWZ1bmN0aW9uIGEoVCxOLGssQixPKXtyZXR1cm57dHlwZTpcIlBhcnRpYWxTdGF0ZW1lbnRcIixuYW1lOlQscGFyYW1zOk58fFtdLGhhc2g6a3x8UyhbXSksaW5kZW50OkJ8fFwiXCIsc3RyaXA6e29wZW46ITEsY2xvc2U6ITF9LGxvYzpVKE98fG51bGwpfX1mdW5jdGlvbiB1KFQsTil7cmV0dXJue3R5cGU6XCJDb21tZW50U3RhdGVtZW50XCIsdmFsdWU6VCxsb2M6VShOfHxudWxsKX19ZnVuY3Rpb24gaShULE4pe3JldHVybnt0eXBlOlwiTXVzdGFjaGVDb21tZW50U3RhdGVtZW50XCIsdmFsdWU6VCxsb2M6VShOfHxudWxsKX19ZnVuY3Rpb24gbChULE4pe2lmKCEoMCxmLmlzUHJlc2VudCkoVCkpdGhyb3cgbmV3IEVycm9yKFwiYi5jb25jYXQgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcnRcIik7cmV0dXJue3R5cGU6XCJDb25jYXRTdGF0ZW1lbnRcIixwYXJ0czpUfHxbXSxsb2M6VShOfHxudWxsKX19ZnVuY3Rpb24gYihUKXtsZXQgTj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30se2F0dHJzOmssYmxvY2tQYXJhbXM6Qixtb2RpZmllcnM6Tyxjb21tZW50czpxLGNoaWxkcmVuOnosbG9jOkF9PU4sUSxEPSExO3JldHVybiB0eXBlb2YgVD09XCJvYmplY3RcIj8oRD1ULnNlbGZDbG9zaW5nLFE9VC5uYW1lKTpULnNsaWNlKC0xKT09PVwiL1wiPyhRPVQuc2xpY2UoMCwtMSksRD0hMCk6UT1ULHt0eXBlOlwiRWxlbWVudE5vZGVcIix0YWc6USxzZWxmQ2xvc2luZzpELGF0dHJpYnV0ZXM6a3x8W10sYmxvY2tQYXJhbXM6Qnx8W10sbW9kaWZpZXJzOk98fFtdLGNvbW1lbnRzOnF8fFtdLGNoaWxkcmVuOnp8fFtdLGxvYzpVKEF8fG51bGwpfX1mdW5jdGlvbiBQKFQsTixrKXtyZXR1cm57dHlwZTpcIkF0dHJOb2RlXCIsbmFtZTpULHZhbHVlOk4sbG9jOlUoa3x8bnVsbCl9fWZ1bmN0aW9uIEUoVCxOKXtyZXR1cm57dHlwZTpcIlRleHROb2RlXCIsY2hhcnM6VHx8XCJcIixsb2M6VShOfHxudWxsKX19ZnVuY3Rpb24gdihULE4sayxCKXtyZXR1cm57dHlwZTpcIlN1YkV4cHJlc3Npb25cIixwYXRoOm0oVCkscGFyYW1zOk58fFtdLGhhc2g6a3x8UyhbXSksbG9jOlUoQnx8bnVsbCl9fWZ1bmN0aW9uIF8oVCl7c3dpdGNoKFQudHlwZSl7Y2FzZVwiQXRIZWFkXCI6cmV0dXJue29yaWdpbmFsOlQubmFtZSxwYXJ0czpbVC5uYW1lXX07Y2FzZVwiVGhpc0hlYWRcIjpyZXR1cm57b3JpZ2luYWw6XCJ0aGlzXCIscGFydHM6W119O2Nhc2VcIlZhckhlYWRcIjpyZXR1cm57b3JpZ2luYWw6VC5uYW1lLHBhcnRzOltULm5hbWVdfX19ZnVuY3Rpb24geShULE4pe2xldFtrLC4uLkJdPVQuc3BsaXQoXCIuXCIpLE87cmV0dXJuIGs9PT1cInRoaXNcIj9PPXt0eXBlOlwiVGhpc0hlYWRcIixsb2M6VShOfHxudWxsKX06a1swXT09PVwiQFwiP089e3R5cGU6XCJBdEhlYWRcIixuYW1lOmssbG9jOlUoTnx8bnVsbCl9Ok89e3R5cGU6XCJWYXJIZWFkXCIsbmFtZTprLGxvYzpVKE58fG51bGwpfSx7aGVhZDpPLHRhaWw6Qn19ZnVuY3Rpb24gZyhUKXtyZXR1cm57dHlwZTpcIlRoaXNIZWFkXCIsbG9jOlUoVHx8bnVsbCl9fWZ1bmN0aW9uIEwoVCxOKXtyZXR1cm57dHlwZTpcIkF0SGVhZFwiLG5hbWU6VCxsb2M6VShOfHxudWxsKX19ZnVuY3Rpb24gaihULE4pe3JldHVybnt0eXBlOlwiVmFySGVhZFwiLG5hbWU6VCxsb2M6VShOfHxudWxsKX19ZnVuY3Rpb24geChULE4pe3JldHVybiBUWzBdPT09XCJAXCI/TChULE4pOlQ9PT1cInRoaXNcIj9nKE4pOmooVCxOKX1mdW5jdGlvbiB3KFQsTil7cmV0dXJue3R5cGU6XCJOYW1lZEJsb2NrTmFtZVwiLG5hbWU6VCxsb2M6VShOfHxudWxsKX19ZnVuY3Rpb24gSChULE4sayl7bGV0e29yaWdpbmFsOkIscGFydHM6T309XyhUKSxxPVsuLi5PLC4uLk5dLHo9Wy4uLkIsLi4ucV0uam9pbihcIi5cIik7cmV0dXJuIG5ldyBvLlBhdGhFeHByZXNzaW9uSW1wbFYxKHosVCxOLFUoa3x8bnVsbCkpfWZ1bmN0aW9uIG0oVCxOKXtpZih0eXBlb2YgVCE9XCJzdHJpbmdcIil7aWYoXCJ0eXBlXCJpbiBUKXJldHVybiBUO3tsZXR7aGVhZDpPLHRhaWw6cX09eShULmhlYWQsYy5Tb3VyY2VTcGFuLmJyb2tlbigpKSx7b3JpZ2luYWw6en09XyhPKTtyZXR1cm4gbmV3IG8uUGF0aEV4cHJlc3Npb25JbXBsVjEoW3osLi4ucV0uam9pbihcIi5cIiksTyxxLFUoTnx8bnVsbCkpfX1sZXR7aGVhZDprLHRhaWw6Qn09eShULGMuU291cmNlU3Bhbi5icm9rZW4oKSk7cmV0dXJuIG5ldyBvLlBhdGhFeHByZXNzaW9uSW1wbFYxKFQsayxCLFUoTnx8bnVsbCkpfWZ1bmN0aW9uIEMoVCxOLGspe3JldHVybnt0eXBlOlQsdmFsdWU6TixvcmlnaW5hbDpOLGxvYzpVKGt8fG51bGwpfX1mdW5jdGlvbiBTKFQsTil7cmV0dXJue3R5cGU6XCJIYXNoXCIscGFpcnM6VHx8W10sbG9jOlUoTnx8bnVsbCl9fWZ1bmN0aW9uIFIoVCxOLGspe3JldHVybnt0eXBlOlwiSGFzaFBhaXJcIixrZXk6VCx2YWx1ZTpOLGxvYzpVKGt8fG51bGwpfX1mdW5jdGlvbiBNKFQsTixrKXtyZXR1cm57dHlwZTpcIlRlbXBsYXRlXCIsYm9keTpUfHxbXSxibG9ja1BhcmFtczpOfHxbXSxsb2M6VShrfHxudWxsKX19ZnVuY3Rpb24gVihULE4pe2xldCBrPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMSxCPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwO3JldHVybnt0eXBlOlwiQmxvY2tcIixib2R5OlR8fFtdLGJsb2NrUGFyYW1zOk58fFtdLGNoYWluZWQ6ayxsb2M6VShCfHxudWxsKX19ZnVuY3Rpb24gRyhULE4sayl7cmV0dXJue3R5cGU6XCJUZW1wbGF0ZVwiLGJvZHk6VHx8W10sYmxvY2tQYXJhbXM6Tnx8W10sbG9jOlUoa3x8bnVsbCl9fWZ1bmN0aW9uIEsoVCxOKXtyZXR1cm57bGluZTpULGNvbHVtbjpOfX1mdW5jdGlvbiBVKCl7Zm9yKHZhciBUPWFyZ3VtZW50cy5sZW5ndGgsTj1uZXcgQXJyYXkoVCksaz0wO2s8VDtrKyspTltrXT1hcmd1bWVudHNba107aWYoTi5sZW5ndGg9PT0xKXtsZXQgQj1OWzBdO3JldHVybiBCJiZ0eXBlb2YgQj09XCJvYmplY3RcIj9jLlNvdXJjZVNwYW4uZm9ySGJzTG9jKHIoKSxCKTpjLlNvdXJjZVNwYW4uZm9ySGJzTG9jKHIoKSxoLlNZTlRIRVRJQ19MT0NBVElPTil9ZWxzZXtsZXRbQixPLHEseixBXT1OLFE9QT9uZXcgZC5Tb3VyY2UoXCJcIixBKTpyKCk7cmV0dXJuIGMuU291cmNlU3Bhbi5mb3JIYnNMb2MoUSx7c3RhcnQ6e2xpbmU6Qixjb2x1bW46T30sZW5kOntsaW5lOnEsY29sdW1uOnp9fSl9fXZhciBaPXttdXN0YWNoZTpzLGJsb2NrOnAscGFydGlhbDphLGNvbW1lbnQ6dSxtdXN0YWNoZUNvbW1lbnQ6aSxlbGVtZW50OmIsZWxlbWVudE1vZGlmaWVyOm4sYXR0cjpQLHRleHQ6RSxzZXhwcjp2LGNvbmNhdDpsLGhhc2g6UyxwYWlyOlIsbGl0ZXJhbDpDLHByb2dyYW06TSxibG9ja0l0c2VsZjpWLHRlbXBsYXRlOkcsbG9jOlUscG9zOksscGF0aDptLGZ1bGxQYXRoOkgsaGVhZDp4LGF0OkwsdmFyOmosdGhpczpnLGJsb2NrTmFtZTp3LHN0cmluZzpXKFwiU3RyaW5nTGl0ZXJhbFwiKSxib29sZWFuOlcoXCJCb29sZWFuTGl0ZXJhbFwiKSxudW1iZXI6VyhcIk51bWJlckxpdGVyYWxcIiksdW5kZWZpbmVkKCl7cmV0dXJuIEMoXCJVbmRlZmluZWRMaXRlcmFsXCIsdm9pZCAwKX0sbnVsbCgpe3JldHVybiBDKFwiTnVsbExpdGVyYWxcIixudWxsKX19O3QuZGVmYXVsdD1aO2Z1bmN0aW9uIFcoVCl7cmV0dXJuIGZ1bmN0aW9uKE4sayl7cmV0dXJuIEMoVCxOLGspfX19fSksU3Q9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi92MS9ub2Rlcy12MS5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX19KSxDdD1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3YxL2FwaS5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZj1TdCgpO09iamVjdC5rZXlzKGYpLmZvckVhY2goZnVuY3Rpb24oaCl7aD09PVwiZGVmYXVsdFwifHxoPT09XCJfX2VzTW9kdWxlXCJ8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGgse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZbaF19fSl9KX19KSxQdD1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3YyLWEvb2JqZWN0cy9yZXNvbHV0aW9uLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQubG9hZFJlc29sdXRpb249byx0LkFSR1VNRU5UX1JFU09MVVRJT049dC5Mb29zZU1vZGVSZXNvbHV0aW9uPXQuU1RSSUNUX1JFU09MVVRJT049dC5TdHJpY3RSZXNvbHV0aW9uPXZvaWQgMDt2YXIgZj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaXNBbmdsZUJyYWNrZXQ9ITF9cmVzb2x1dGlvbigpe3JldHVybiAzMX1zZXJpYWxpemUoKXtyZXR1cm5cIlN0cmljdFwifX07dC5TdHJpY3RSZXNvbHV0aW9uPWY7dmFyIGg9bmV3IGY7dC5TVFJJQ1RfUkVTT0xVVElPTj1oO3ZhciBkPWNsYXNze2NvbnN0cnVjdG9yKGUpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMTt0aGlzLmFtYmlndWl0eT1lLHRoaXMuaXNBbmdsZUJyYWNrZXQ9cn1zdGF0aWMgbmFtZXNwYWNlZChlKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06ITE7cmV0dXJuIG5ldyBkKHtuYW1lc3BhY2VzOltlXSxmYWxsYmFjazohMX0scil9c3RhdGljIGZhbGxiYWNrKCl7cmV0dXJuIG5ldyBkKHtuYW1lc3BhY2VzOltdLGZhbGxiYWNrOiEwfSl9c3RhdGljIGFwcGVuZChlKXtsZXR7aW52b2tlOnJ9PWU7cmV0dXJuIG5ldyBkKHtuYW1lc3BhY2VzOltcIkNvbXBvbmVudFwiLFwiSGVscGVyXCJdLGZhbGxiYWNrOiFyfSl9c3RhdGljIHRydXN0aW5nQXBwZW5kKGUpe2xldHtpbnZva2U6cn09ZTtyZXR1cm4gbmV3IGQoe25hbWVzcGFjZXM6W1wiSGVscGVyXCJdLGZhbGxiYWNrOiFyfSl9c3RhdGljIGF0dHIoKXtyZXR1cm4gbmV3IGQoe25hbWVzcGFjZXM6W1wiSGVscGVyXCJdLGZhbGxiYWNrOiEwfSl9cmVzb2x1dGlvbigpe2lmKHRoaXMuYW1iaWd1aXR5Lm5hbWVzcGFjZXMubGVuZ3RoPT09MClyZXR1cm4gMzE7aWYodGhpcy5hbWJpZ3VpdHkubmFtZXNwYWNlcy5sZW5ndGg9PT0xKXtpZih0aGlzLmFtYmlndWl0eS5mYWxsYmFjaylyZXR1cm4gMzY7c3dpdGNoKHRoaXMuYW1iaWd1aXR5Lm5hbWVzcGFjZXNbMF0pe2Nhc2VcIkhlbHBlclwiOnJldHVybiAzNztjYXNlXCJNb2RpZmllclwiOnJldHVybiAzODtjYXNlXCJDb21wb25lbnRcIjpyZXR1cm4gMzl9fWVsc2UgcmV0dXJuIHRoaXMuYW1iaWd1aXR5LmZhbGxiYWNrPzM0OjM1fXNlcmlhbGl6ZSgpe3JldHVybiB0aGlzLmFtYmlndWl0eS5uYW1lc3BhY2VzLmxlbmd0aD09PTA/XCJMb29zZVwiOnRoaXMuYW1iaWd1aXR5Lm5hbWVzcGFjZXMubGVuZ3RoPT09MT90aGlzLmFtYmlndWl0eS5mYWxsYmFjaz9bXCJhbWJpZ3VvdXNcIixcIkF0dHJcIl06W1wibnNcIix0aGlzLmFtYmlndWl0eS5uYW1lc3BhY2VzWzBdXTp0aGlzLmFtYmlndWl0eS5mYWxsYmFjaz9bXCJhbWJpZ3VvdXNcIixcIkFwcGVuZFwiXTpbXCJhbWJpZ3VvdXNcIixcIkludm9rZVwiXX19O3QuTG9vc2VNb2RlUmVzb2x1dGlvbj1kO3ZhciBjPWQuZmFsbGJhY2soKTt0LkFSR1VNRU5UX1JFU09MVVRJT049YztmdW5jdGlvbiBvKGUpe2lmKHR5cGVvZiBlPT1cInN0cmluZ1wiKXN3aXRjaChlKXtjYXNlXCJMb29zZVwiOnJldHVybiBkLmZhbGxiYWNrKCk7Y2FzZVwiU3RyaWN0XCI6cmV0dXJuIGh9c3dpdGNoKGVbMF0pe2Nhc2VcImFtYmlndW91c1wiOnN3aXRjaChlWzFdKXtjYXNlXCJBcHBlbmRcIjpyZXR1cm4gZC5hcHBlbmQoe2ludm9rZTohMX0pO2Nhc2VcIkF0dHJcIjpyZXR1cm4gZC5hdHRyKCk7Y2FzZVwiSW52b2tlXCI6cmV0dXJuIGQuYXBwZW5kKHtpbnZva2U6ITB9KX1jYXNlXCJuc1wiOnJldHVybiBkLm5hbWVzcGFjZWQoZVsxXSl9fX19KSxuZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3YyLWEvb2JqZWN0cy9ub2RlLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQubm9kZT1oO3ZhciBmPVgoKTtmdW5jdGlvbiBoKGQpe2lmKGQhPT12b2lkIDApe2xldCBjPWQ7cmV0dXJue2ZpZWxkcygpe3JldHVybiBjbGFzc3tjb25zdHJ1Y3RvcihvKXt0aGlzLnR5cGU9YywoMCxmLmFzc2lnbikodGhpcyxvKX19fX19ZWxzZSByZXR1cm57ZmllbGRzKCl7cmV0dXJuIGNsYXNze2NvbnN0cnVjdG9yKGMpeygwLGYuYXNzaWduKSh0aGlzLGMpfX19fX19fSksYmU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi92Mi1hL29iamVjdHMvYXJncy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk5hbWVkQXJndW1lbnQ9dC5OYW1lZEFyZ3VtZW50cz10LlBvc2l0aW9uYWxBcmd1bWVudHM9dC5BcmdzPXZvaWQgMDt2YXIgZj1uZSgpLGg9Y2xhc3MgZXh0ZW5kcygwLGYubm9kZSkoKS5maWVsZHMoKXtzdGF0aWMgZW1wdHkoZSl7cmV0dXJuIG5ldyBoKHtsb2M6ZSxwb3NpdGlvbmFsOmQuZW1wdHkoZSksbmFtZWQ6Yy5lbXB0eShlKX0pfXN0YXRpYyBuYW1lZChlKXtyZXR1cm4gbmV3IGgoe2xvYzplLmxvYyxwb3NpdGlvbmFsOmQuZW1wdHkoZS5sb2MuY29sbGFwc2UoXCJlbmRcIikpLG5hbWVkOmV9KX1udGgoZSl7cmV0dXJuIHRoaXMucG9zaXRpb25hbC5udGgoZSl9Z2V0KGUpe3JldHVybiB0aGlzLm5hbWVkLmdldChlKX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMucG9zaXRpb25hbC5pc0VtcHR5KCkmJnRoaXMubmFtZWQuaXNFbXB0eSgpfX07dC5BcmdzPWg7dmFyIGQ9Y2xhc3MgZXh0ZW5kcygwLGYubm9kZSkoKS5maWVsZHMoKXtzdGF0aWMgZW1wdHkoZSl7cmV0dXJuIG5ldyBkKHtsb2M6ZSxleHByczpbXX0pfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuZXhwcnMubGVuZ3RofW50aChlKXtyZXR1cm4gdGhpcy5leHByc1tlXXx8bnVsbH1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuZXhwcnMubGVuZ3RoPT09MH19O3QuUG9zaXRpb25hbEFyZ3VtZW50cz1kO3ZhciBjPWNsYXNzIGV4dGVuZHMoMCxmLm5vZGUpKCkuZmllbGRzKCl7c3RhdGljIGVtcHR5KGUpe3JldHVybiBuZXcgYyh7bG9jOmUsZW50cmllczpbXX0pfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuZW50cmllcy5sZW5ndGh9Z2V0KGUpe2xldCByPXRoaXMuZW50cmllcy5maWx0ZXIocz0+cy5uYW1lLmNoYXJzPT09ZSlbMF07cmV0dXJuIHI/ci52YWx1ZTpudWxsfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5lbnRyaWVzLmxlbmd0aD09PTB9fTt0Lk5hbWVkQXJndW1lbnRzPWM7dmFyIG89Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5sb2M9ZS5uYW1lLmxvYy5leHRlbmQoZS52YWx1ZS5sb2MpLHRoaXMubmFtZT1lLm5hbWUsdGhpcy52YWx1ZT1lLnZhbHVlfX07dC5OYW1lZEFyZ3VtZW50PW99fSksRHQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi92Mi1hL29iamVjdHMvYXR0ci1ibG9jay5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkVsZW1lbnRNb2RpZmllcj10LkNvbXBvbmVudEFyZz10LlNwbGF0QXR0cj10Lkh0bWxBdHRyPXZvaWQgMDt2YXIgZj1iZSgpLGg9bmUoKSxkPWNsYXNzIGV4dGVuZHMoMCxoLm5vZGUpKFwiSHRtbEF0dHJcIikuZmllbGRzKCl7fTt0Lkh0bWxBdHRyPWQ7dmFyIGM9Y2xhc3MgZXh0ZW5kcygwLGgubm9kZSkoXCJTcGxhdEF0dHJcIikuZmllbGRzKCl7fTt0LlNwbGF0QXR0cj1jO3ZhciBvPWNsYXNzIGV4dGVuZHMoMCxoLm5vZGUpKCkuZmllbGRzKCl7dG9OYW1lZEFyZ3VtZW50KCl7cmV0dXJuIG5ldyBmLk5hbWVkQXJndW1lbnQoe25hbWU6dGhpcy5uYW1lLHZhbHVlOnRoaXMudmFsdWV9KX19O3QuQ29tcG9uZW50QXJnPW87dmFyIGU9Y2xhc3MgZXh0ZW5kcygwLGgubm9kZSkoXCJFbGVtZW50TW9kaWZpZXJcIikuZmllbGRzKCl7fTt0LkVsZW1lbnRNb2RpZmllcj1lfX0pLHd0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdjItYS9vYmplY3RzL2Jhc2UuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9fSksY2U9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9zb3VyY2Uvc3Bhbi1saXN0LmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQubG9jPWQsdC5oYXNTcGFuPWMsdC5tYXliZUxvYz1vLHQuU3Bhbkxpc3Q9dm9pZCAwO3ZhciBmPXVlKCksaD1jbGFzc3tjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpbXTt0aGlzLl9zcGFuPWV9c3RhdGljIHJhbmdlKGUpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpmLlNvdXJjZVNwYW4uTk9OX0VYSVNURU5UO3JldHVybiBuZXcgaChlLm1hcChkKSkuZ2V0UmFuZ2VPZmZzZXQocil9YWRkKGUpe3RoaXMuX3NwYW4ucHVzaChlKX1nZXRSYW5nZU9mZnNldChlKXtpZih0aGlzLl9zcGFuLmxlbmd0aD09PTApcmV0dXJuIGU7e2xldCByPXRoaXMuX3NwYW5bMF0scz10aGlzLl9zcGFuW3RoaXMuX3NwYW4ubGVuZ3RoLTFdO3JldHVybiByLmV4dGVuZChzKX19fTt0LlNwYW5MaXN0PWg7ZnVuY3Rpb24gZChlKXtpZihBcnJheS5pc0FycmF5KGUpKXtsZXQgcj1lWzBdLHM9ZVtlLmxlbmd0aC0xXTtyZXR1cm4gZChyKS5leHRlbmQoZChzKSl9ZWxzZSByZXR1cm4gZSBpbnN0YW5jZW9mIGYuU291cmNlU3Bhbj9lOmUubG9jfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIShBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTApfWZ1bmN0aW9uIG8oZSxyKXtyZXR1cm4gYyhlKT9kKGUpOnJ9fX0pLGt0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdjItYS9vYmplY3RzL2NvbnRlbnQuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TaW1wbGVFbGVtZW50PXQuSW52b2tlQ29tcG9uZW50PXQuSW52b2tlQmxvY2s9dC5BcHBlbmRDb250ZW50PXQuSHRtbENvbW1lbnQ9dC5IdG1sVGV4dD10LkdsaW1tZXJDb21tZW50PXZvaWQgMDt2YXIgZj1jZSgpLGg9YmUoKSxkPW5lKCksYz1jbGFzcyBleHRlbmRzKDAsZC5ub2RlKShcIkdsaW1tZXJDb21tZW50XCIpLmZpZWxkcygpe307dC5HbGltbWVyQ29tbWVudD1jO3ZhciBvPWNsYXNzIGV4dGVuZHMoMCxkLm5vZGUpKFwiSHRtbFRleHRcIikuZmllbGRzKCl7fTt0Lkh0bWxUZXh0PW87dmFyIGU9Y2xhc3MgZXh0ZW5kcygwLGQubm9kZSkoXCJIdG1sQ29tbWVudFwiKS5maWVsZHMoKXt9O3QuSHRtbENvbW1lbnQ9ZTt2YXIgcj1jbGFzcyBleHRlbmRzKDAsZC5ub2RlKShcIkFwcGVuZENvbnRlbnRcIikuZmllbGRzKCl7Z2V0IGNhbGxlZSgpe3JldHVybiB0aGlzLnZhbHVlLnR5cGU9PT1cIkNhbGxcIj90aGlzLnZhbHVlLmNhbGxlZTp0aGlzLnZhbHVlfWdldCBhcmdzKCl7cmV0dXJuIHRoaXMudmFsdWUudHlwZT09PVwiQ2FsbFwiP3RoaXMudmFsdWUuYXJnczpoLkFyZ3MuZW1wdHkodGhpcy52YWx1ZS5sb2MuY29sbGFwc2UoXCJlbmRcIikpfX07dC5BcHBlbmRDb250ZW50PXI7dmFyIHM9Y2xhc3MgZXh0ZW5kcygwLGQubm9kZSkoXCJJbnZva2VCbG9ja1wiKS5maWVsZHMoKXt9O3QuSW52b2tlQmxvY2s9czt2YXIgcD1jbGFzcyBleHRlbmRzKDAsZC5ub2RlKShcIkludm9rZUNvbXBvbmVudFwiKS5maWVsZHMoKXtnZXQgYXJncygpe2xldCBhPXRoaXMuY29tcG9uZW50QXJncy5tYXAodT0+dS50b05hbWVkQXJndW1lbnQoKSk7cmV0dXJuIGguQXJncy5uYW1lZChuZXcgaC5OYW1lZEFyZ3VtZW50cyh7bG9jOmYuU3Bhbkxpc3QucmFuZ2UoYSx0aGlzLmNhbGxlZS5sb2MuY29sbGFwc2UoXCJlbmRcIikpLGVudHJpZXM6YX0pKX19O3QuSW52b2tlQ29tcG9uZW50PXA7dmFyIG49Y2xhc3MgZXh0ZW5kcygwLGQubm9kZSkoXCJTaW1wbGVFbGVtZW50XCIpLmZpZWxkcygpe2dldCBhcmdzKCl7bGV0IGE9dGhpcy5jb21wb25lbnRBcmdzLm1hcCh1PT51LnRvTmFtZWRBcmd1bWVudCgpKTtyZXR1cm4gaC5BcmdzLm5hbWVkKG5ldyBoLk5hbWVkQXJndW1lbnRzKHtsb2M6Zi5TcGFuTGlzdC5yYW5nZShhLHRoaXMudGFnLmxvYy5jb2xsYXBzZShcImVuZFwiKSksZW50cmllczphfSkpfX07dC5TaW1wbGVFbGVtZW50PW59fSksVHQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi92Mi1hL29iamVjdHMvZXhwci5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzTGl0ZXJhbD1jLHQuSW50ZXJwb2xhdGVFeHByZXNzaW9uPXQuRGVwcmVjYXRlZENhbGxFeHByZXNzaW9uPXQuQ2FsbEV4cHJlc3Npb249dC5QYXRoRXhwcmVzc2lvbj10LkxpdGVyYWxFeHByZXNzaW9uPXZvaWQgMDt2YXIgZj1sZSgpLGg9bmUoKSxkPWNsYXNzIGV4dGVuZHMoMCxoLm5vZGUpKFwiTGl0ZXJhbFwiKS5maWVsZHMoKXt0b1NsaWNlKCl7cmV0dXJuIG5ldyBmLlNvdXJjZVNsaWNlKHtsb2M6dGhpcy5sb2MsY2hhcnM6dGhpcy52YWx1ZX0pfX07dC5MaXRlcmFsRXhwcmVzc2lvbj1kO2Z1bmN0aW9uIGMocCxuKXtyZXR1cm4gcC50eXBlPT09XCJMaXRlcmFsXCI/bj09PXZvaWQgMD8hMDpuPT09XCJudWxsXCI/cC52YWx1ZT09PW51bGw6dHlwZW9mIHAudmFsdWU9PT1uOiExfXZhciBvPWNsYXNzIGV4dGVuZHMoMCxoLm5vZGUpKFwiUGF0aFwiKS5maWVsZHMoKXt9O3QuUGF0aEV4cHJlc3Npb249bzt2YXIgZT1jbGFzcyBleHRlbmRzKDAsaC5ub2RlKShcIkNhbGxcIikuZmllbGRzKCl7fTt0LkNhbGxFeHByZXNzaW9uPWU7dmFyIHI9Y2xhc3MgZXh0ZW5kcygwLGgubm9kZSkoXCJEZXByZWNhdGVkQ2FsbFwiKS5maWVsZHMoKXt9O3QuRGVwcmVjYXRlZENhbGxFeHByZXNzaW9uPXI7dmFyIHM9Y2xhc3MgZXh0ZW5kcygwLGgubm9kZSkoXCJJbnRlcnBvbGF0ZVwiKS5maWVsZHMoKXt9O3QuSW50ZXJwb2xhdGVFeHByZXNzaW9uPXN9fSksQnQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi92Mi1hL29iamVjdHMvcmVmcy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkZyZWVWYXJSZWZlcmVuY2U9dC5Mb2NhbFZhclJlZmVyZW5jZT10LkFyZ1JlZmVyZW5jZT10LlRoaXNSZWZlcmVuY2U9dm9pZCAwO3ZhciBmPW5lKCksaD1jbGFzcyBleHRlbmRzKDAsZi5ub2RlKShcIlRoaXNcIikuZmllbGRzKCl7fTt0LlRoaXNSZWZlcmVuY2U9aDt2YXIgZD1jbGFzcyBleHRlbmRzKDAsZi5ub2RlKShcIkFyZ1wiKS5maWVsZHMoKXt9O3QuQXJnUmVmZXJlbmNlPWQ7dmFyIGM9Y2xhc3MgZXh0ZW5kcygwLGYubm9kZSkoXCJMb2NhbFwiKS5maWVsZHMoKXt9O3QuTG9jYWxWYXJSZWZlcmVuY2U9Yzt2YXIgbz1jbGFzcyBleHRlbmRzKDAsZi5ub2RlKShcIkZyZWVcIikuZmllbGRzKCl7fTt0LkZyZWVWYXJSZWZlcmVuY2U9b319KSxPdD1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3YyLWEvb2JqZWN0cy9pbnRlcm5hbC1ub2RlLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuTmFtZWRCbG9jaz10Lk5hbWVkQmxvY2tzPXQuQmxvY2s9dC5UZW1wbGF0ZT12b2lkIDA7dmFyIGY9Y2UoKSxoPWJlKCksZD1uZSgpLGM9Y2xhc3MgZXh0ZW5kcygwLGQubm9kZSkoKS5maWVsZHMoKXt9O3QuVGVtcGxhdGU9Yzt2YXIgbz1jbGFzcyBleHRlbmRzKDAsZC5ub2RlKSgpLmZpZWxkcygpe307dC5CbG9jaz1vO3ZhciBlPWNsYXNzIGV4dGVuZHMoMCxkLm5vZGUpKCkuZmllbGRzKCl7Z2V0KHMpe3JldHVybiB0aGlzLmJsb2Nrcy5maWx0ZXIocD0+cC5uYW1lLmNoYXJzPT09cylbMF18fG51bGx9fTt0Lk5hbWVkQmxvY2tzPWU7dmFyIHI9Y2xhc3MgZXh0ZW5kcygwLGQubm9kZSkoKS5maWVsZHMoKXtnZXQgYXJncygpe2xldCBzPXRoaXMuY29tcG9uZW50QXJncy5tYXAocD0+cC50b05hbWVkQXJndW1lbnQoKSk7cmV0dXJuIGguQXJncy5uYW1lZChuZXcgaC5OYW1lZEFyZ3VtZW50cyh7bG9jOmYuU3Bhbkxpc3QucmFuZ2Uocyx0aGlzLm5hbWUubG9jLmNvbGxhcHNlKFwiZW5kXCIpKSxlbnRyaWVzOnN9KSl9fTt0Lk5hbWVkQmxvY2s9cn19KSx2ZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3YyLWEvYXBpLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPVB0KCk7T2JqZWN0LmtleXMoZikuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZltuXX19KX0pO3ZhciBoPW5lKCk7T2JqZWN0LmtleXMoaCkuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaFtuXX19KX0pO3ZhciBkPWJlKCk7T2JqZWN0LmtleXMoZCkuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZFtuXX19KX0pO3ZhciBjPUR0KCk7T2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY1tuXX19KX0pO3ZhciBvPXd0KCk7T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb1tuXX19KX0pO3ZhciBlPWt0KCk7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtuXX19KX0pO3ZhciByPVR0KCk7T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcltuXX19KX0pO3ZhciBzPUJ0KCk7T2JqZWN0LmtleXMocykuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc1tuXX19KX0pO3ZhciBwPU90KCk7T2JqZWN0LmtleXMocCkuZm9yRWFjaChmdW5jdGlvbihuKXtuPT09XCJkZWZhdWx0XCJ8fG49PT1cIl9fZXNNb2R1bGVcInx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcFtuXX19KX0pfX0pLFVlPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvZ2VuZXJhdGlvbi91dGlsLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZXNjYXBlQXR0clZhbHVlPXIsdC5lc2NhcGVUZXh0PXMsdC5zb3J0QnlMb2M9cDt2YXIgZj0vW1xceEEwXCImXS8saD1uZXcgUmVnRXhwKGYuc291cmNlLFwiZ1wiKSxkPS9bXFx4QTAmPD5dLyxjPW5ldyBSZWdFeHAoZC5zb3VyY2UsXCJnXCIpO2Z1bmN0aW9uIG8obil7c3dpdGNoKG4uY2hhckNvZGVBdCgwKSl7Y2FzZSAxNjA6cmV0dXJuXCImbmJzcDtcIjtjYXNlIDM0OnJldHVyblwiJnF1b3Q7XCI7Y2FzZSAzODpyZXR1cm5cIiZhbXA7XCI7ZGVmYXVsdDpyZXR1cm4gbn19ZnVuY3Rpb24gZShuKXtzd2l0Y2gobi5jaGFyQ29kZUF0KDApKXtjYXNlIDE2MDpyZXR1cm5cIiZuYnNwO1wiO2Nhc2UgMzg6cmV0dXJuXCImYW1wO1wiO2Nhc2UgNjA6cmV0dXJuXCImbHQ7XCI7Y2FzZSA2MjpyZXR1cm5cIiZndDtcIjtkZWZhdWx0OnJldHVybiBufX1mdW5jdGlvbiByKG4pe3JldHVybiBmLnRlc3Qobik/bi5yZXBsYWNlKGgsbyk6bn1mdW5jdGlvbiBzKG4pe3JldHVybiBkLnRlc3Qobik/bi5yZXBsYWNlKGMsZSk6bn1mdW5jdGlvbiBwKG4sYSl7cmV0dXJuIG4ubG9jLmlzSW52aXNpYmxlfHxhLmxvYy5pc0ludmlzaWJsZT8wOm4ubG9jLnN0YXJ0UG9zaXRpb24ubGluZTxhLmxvYy5zdGFydFBvc2l0aW9uLmxpbmV8fG4ubG9jLnN0YXJ0UG9zaXRpb24ubGluZT09PWEubG9jLnN0YXJ0UG9zaXRpb24ubGluZSYmbi5sb2Muc3RhcnRQb3NpdGlvbi5jb2x1bW48YS5sb2Muc3RhcnRQb3NpdGlvbi5jb2x1bW4/LTE6bi5sb2Muc3RhcnRQb3NpdGlvbi5saW5lPT09YS5sb2Muc3RhcnRQb3NpdGlvbi5saW5lJiZuLmxvYy5zdGFydFBvc2l0aW9uLmNvbHVtbj09PWEubG9jLnN0YXJ0UG9zaXRpb24uY29sdW1uPzA6MX19fSksVGU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9nZW5lcmF0aW9uL3ByaW50ZXIuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXQudm9pZE1hcD12b2lkIDA7dmFyIGY9VWUoKSxoPU9iamVjdC5jcmVhdGUobnVsbCk7dC52b2lkTWFwPWg7dmFyIGQ9XCJhcmVhIGJhc2UgYnIgY29sIGNvbW1hbmQgZW1iZWQgaHIgaW1nIGlucHV0IGtleWdlbiBsaW5rIG1ldGEgcGFyYW0gc291cmNlIHRyYWNrIHdiclwiO2Quc3BsaXQoXCIgXCIpLmZvckVhY2goZT0+e2hbZV09ITB9KTt2YXIgYz0vXFxTLyxvPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPVwiXCIsdGhpcy5vcHRpb25zPWV9aGFuZGxlZEJ5T3ZlcnJpZGUoZSl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOiExO2lmKHRoaXMub3B0aW9ucy5vdmVycmlkZSE9PXZvaWQgMCl7bGV0IHM9dGhpcy5vcHRpb25zLm92ZXJyaWRlKGUsdGhpcy5vcHRpb25zKTtpZih0eXBlb2Ygcz09XCJzdHJpbmdcIilyZXR1cm4gciYmcyE9PVwiXCImJmMudGVzdChzWzBdKSYmKHM9XCIgXCIuY29uY2F0KHMpKSx0aGlzLmJ1ZmZlcis9cywhMH1yZXR1cm4hMX1Ob2RlKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIk11c3RhY2hlU3RhdGVtZW50XCI6Y2FzZVwiQmxvY2tTdGF0ZW1lbnRcIjpjYXNlXCJQYXJ0aWFsU3RhdGVtZW50XCI6Y2FzZVwiTXVzdGFjaGVDb21tZW50U3RhdGVtZW50XCI6Y2FzZVwiQ29tbWVudFN0YXRlbWVudFwiOmNhc2VcIlRleHROb2RlXCI6Y2FzZVwiRWxlbWVudE5vZGVcIjpjYXNlXCJBdHRyTm9kZVwiOmNhc2VcIkJsb2NrXCI6Y2FzZVwiVGVtcGxhdGVcIjpyZXR1cm4gdGhpcy5Ub3BMZXZlbFN0YXRlbWVudChlKTtjYXNlXCJTdHJpbmdMaXRlcmFsXCI6Y2FzZVwiQm9vbGVhbkxpdGVyYWxcIjpjYXNlXCJOdW1iZXJMaXRlcmFsXCI6Y2FzZVwiVW5kZWZpbmVkTGl0ZXJhbFwiOmNhc2VcIk51bGxMaXRlcmFsXCI6Y2FzZVwiUGF0aEV4cHJlc3Npb25cIjpjYXNlXCJTdWJFeHByZXNzaW9uXCI6cmV0dXJuIHRoaXMuRXhwcmVzc2lvbihlKTtjYXNlXCJQcm9ncmFtXCI6cmV0dXJuIHRoaXMuQmxvY2soZSk7Y2FzZVwiQ29uY2F0U3RhdGVtZW50XCI6cmV0dXJuIHRoaXMuQ29uY2F0U3RhdGVtZW50KGUpO2Nhc2VcIkhhc2hcIjpyZXR1cm4gdGhpcy5IYXNoKGUpO2Nhc2VcIkhhc2hQYWlyXCI6cmV0dXJuIHRoaXMuSGFzaFBhaXIoZSk7Y2FzZVwiRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50XCI6cmV0dXJuIHRoaXMuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KGUpfX1FeHByZXNzaW9uKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIlN0cmluZ0xpdGVyYWxcIjpjYXNlXCJCb29sZWFuTGl0ZXJhbFwiOmNhc2VcIk51bWJlckxpdGVyYWxcIjpjYXNlXCJVbmRlZmluZWRMaXRlcmFsXCI6Y2FzZVwiTnVsbExpdGVyYWxcIjpyZXR1cm4gdGhpcy5MaXRlcmFsKGUpO2Nhc2VcIlBhdGhFeHByZXNzaW9uXCI6cmV0dXJuIHRoaXMuUGF0aEV4cHJlc3Npb24oZSk7Y2FzZVwiU3ViRXhwcmVzc2lvblwiOnJldHVybiB0aGlzLlN1YkV4cHJlc3Npb24oZSl9fUxpdGVyYWwoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiU3RyaW5nTGl0ZXJhbFwiOnJldHVybiB0aGlzLlN0cmluZ0xpdGVyYWwoZSk7Y2FzZVwiQm9vbGVhbkxpdGVyYWxcIjpyZXR1cm4gdGhpcy5Cb29sZWFuTGl0ZXJhbChlKTtjYXNlXCJOdW1iZXJMaXRlcmFsXCI6cmV0dXJuIHRoaXMuTnVtYmVyTGl0ZXJhbChlKTtjYXNlXCJVbmRlZmluZWRMaXRlcmFsXCI6cmV0dXJuIHRoaXMuVW5kZWZpbmVkTGl0ZXJhbChlKTtjYXNlXCJOdWxsTGl0ZXJhbFwiOnJldHVybiB0aGlzLk51bGxMaXRlcmFsKGUpfX1Ub3BMZXZlbFN0YXRlbWVudChlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJNdXN0YWNoZVN0YXRlbWVudFwiOnJldHVybiB0aGlzLk11c3RhY2hlU3RhdGVtZW50KGUpO2Nhc2VcIkJsb2NrU3RhdGVtZW50XCI6cmV0dXJuIHRoaXMuQmxvY2tTdGF0ZW1lbnQoZSk7Y2FzZVwiUGFydGlhbFN0YXRlbWVudFwiOnJldHVybiB0aGlzLlBhcnRpYWxTdGF0ZW1lbnQoZSk7Y2FzZVwiTXVzdGFjaGVDb21tZW50U3RhdGVtZW50XCI6cmV0dXJuIHRoaXMuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KGUpO2Nhc2VcIkNvbW1lbnRTdGF0ZW1lbnRcIjpyZXR1cm4gdGhpcy5Db21tZW50U3RhdGVtZW50KGUpO2Nhc2VcIlRleHROb2RlXCI6cmV0dXJuIHRoaXMuVGV4dE5vZGUoZSk7Y2FzZVwiRWxlbWVudE5vZGVcIjpyZXR1cm4gdGhpcy5FbGVtZW50Tm9kZShlKTtjYXNlXCJCbG9ja1wiOmNhc2VcIlRlbXBsYXRlXCI6cmV0dXJuIHRoaXMuQmxvY2soZSk7Y2FzZVwiQXR0ck5vZGVcIjpyZXR1cm4gdGhpcy5BdHRyTm9kZShlKX19QmxvY2soZSl7aWYoZS5jaGFpbmVkKXtsZXQgcj1lLmJvZHlbMF07ci5jaGFpbmVkPSEwfXRoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZSl8fHRoaXMuVG9wTGV2ZWxTdGF0ZW1lbnRzKGUuYm9keSl9VG9wTGV2ZWxTdGF0ZW1lbnRzKGUpe2UuZm9yRWFjaChyPT50aGlzLlRvcExldmVsU3RhdGVtZW50KHIpKX1FbGVtZW50Tm9kZShlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwodGhpcy5PcGVuRWxlbWVudE5vZGUoZSksdGhpcy5Ub3BMZXZlbFN0YXRlbWVudHMoZS5jaGlsZHJlbiksdGhpcy5DbG9zZUVsZW1lbnROb2RlKGUpKX1PcGVuRWxlbWVudE5vZGUoZSl7dGhpcy5idWZmZXIrPVwiPFwiLmNvbmNhdChlLnRhZyk7bGV0IHI9Wy4uLmUuYXR0cmlidXRlcywuLi5lLm1vZGlmaWVycywuLi5lLmNvbW1lbnRzXS5zb3J0KGYuc29ydEJ5TG9jKTtmb3IobGV0IHMgb2Ygcilzd2l0Y2godGhpcy5idWZmZXIrPVwiIFwiLHMudHlwZSl7Y2FzZVwiQXR0ck5vZGVcIjp0aGlzLkF0dHJOb2RlKHMpO2JyZWFrO2Nhc2VcIkVsZW1lbnRNb2RpZmllclN0YXRlbWVudFwiOnRoaXMuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KHMpO2JyZWFrO2Nhc2VcIk11c3RhY2hlQ29tbWVudFN0YXRlbWVudFwiOnRoaXMuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KHMpO2JyZWFrfWUuYmxvY2tQYXJhbXMubGVuZ3RoJiZ0aGlzLkJsb2NrUGFyYW1zKGUuYmxvY2tQYXJhbXMpLGUuc2VsZkNsb3NpbmcmJih0aGlzLmJ1ZmZlcis9XCIgL1wiKSx0aGlzLmJ1ZmZlcis9XCI+XCJ9Q2xvc2VFbGVtZW50Tm9kZShlKXtlLnNlbGZDbG9zaW5nfHxoW2UudGFnLnRvTG93ZXJDYXNlKCldfHwodGhpcy5idWZmZXIrPVwiPC9cIi5jb25jYXQoZS50YWcsXCI+XCIpKX1BdHRyTm9kZShlKXtpZih0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpKXJldHVybjtsZXR7bmFtZTpyLHZhbHVlOnN9PWU7dGhpcy5idWZmZXIrPXIsKHMudHlwZSE9PVwiVGV4dE5vZGVcInx8cy5jaGFycy5sZW5ndGg+MCkmJih0aGlzLmJ1ZmZlcis9XCI9XCIsdGhpcy5BdHRyTm9kZVZhbHVlKHMpKX1BdHRyTm9kZVZhbHVlKGUpe2UudHlwZT09PVwiVGV4dE5vZGVcIj8odGhpcy5idWZmZXIrPSdcIicsdGhpcy5UZXh0Tm9kZShlLCEwKSx0aGlzLmJ1ZmZlcis9J1wiJyk6dGhpcy5Ob2RlKGUpfVRleHROb2RlKGUscil7dGhpcy5oYW5kbGVkQnlPdmVycmlkZShlKXx8KHRoaXMub3B0aW9ucy5lbnRpdHlFbmNvZGluZz09PVwicmF3XCI/dGhpcy5idWZmZXIrPWUuY2hhcnM6cj90aGlzLmJ1ZmZlcis9KDAsZi5lc2NhcGVBdHRyVmFsdWUpKGUuY2hhcnMpOnRoaXMuYnVmZmVyKz0oMCxmLmVzY2FwZVRleHQpKGUuY2hhcnMpKX1NdXN0YWNoZVN0YXRlbWVudChlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwodGhpcy5idWZmZXIrPWUuZXNjYXBlZD9cInt7XCI6XCJ7e3tcIixlLnN0cmlwLm9wZW4mJih0aGlzLmJ1ZmZlcis9XCJ+XCIpLHRoaXMuRXhwcmVzc2lvbihlLnBhdGgpLHRoaXMuUGFyYW1zKGUucGFyYW1zKSx0aGlzLkhhc2goZS5oYXNoKSxlLnN0cmlwLmNsb3NlJiYodGhpcy5idWZmZXIrPVwiflwiKSx0aGlzLmJ1ZmZlcis9ZS5lc2NhcGVkP1wifX1cIjpcIn19fVwiKX1CbG9ja1N0YXRlbWVudChlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwoZS5jaGFpbmVkPyh0aGlzLmJ1ZmZlcis9ZS5pbnZlcnNlU3RyaXAub3Blbj9cInt7flwiOlwie3tcIix0aGlzLmJ1ZmZlcis9XCJlbHNlIFwiKTp0aGlzLmJ1ZmZlcis9ZS5vcGVuU3RyaXAub3Blbj9cInt7fiNcIjpcInt7I1wiLHRoaXMuRXhwcmVzc2lvbihlLnBhdGgpLHRoaXMuUGFyYW1zKGUucGFyYW1zKSx0aGlzLkhhc2goZS5oYXNoKSxlLnByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoJiZ0aGlzLkJsb2NrUGFyYW1zKGUucHJvZ3JhbS5ibG9ja1BhcmFtcyksZS5jaGFpbmVkP3RoaXMuYnVmZmVyKz1lLmludmVyc2VTdHJpcC5jbG9zZT9cIn59fVwiOlwifX1cIjp0aGlzLmJ1ZmZlcis9ZS5vcGVuU3RyaXAuY2xvc2U/XCJ+fX1cIjpcIn19XCIsdGhpcy5CbG9jayhlLnByb2dyYW0pLGUuaW52ZXJzZSYmKGUuaW52ZXJzZS5jaGFpbmVkfHwodGhpcy5idWZmZXIrPWUuaW52ZXJzZVN0cmlwLm9wZW4/XCJ7e35cIjpcInt7XCIsdGhpcy5idWZmZXIrPVwiZWxzZVwiLHRoaXMuYnVmZmVyKz1lLmludmVyc2VTdHJpcC5jbG9zZT9cIn59fVwiOlwifX1cIiksdGhpcy5CbG9jayhlLmludmVyc2UpKSxlLmNoYWluZWR8fCh0aGlzLmJ1ZmZlcis9ZS5jbG9zZVN0cmlwLm9wZW4/XCJ7e34vXCI6XCJ7ey9cIix0aGlzLkV4cHJlc3Npb24oZS5wYXRoKSx0aGlzLmJ1ZmZlcis9ZS5jbG9zZVN0cmlwLmNsb3NlP1wifn19XCI6XCJ9fVwiKSl9QmxvY2tQYXJhbXMoZSl7dGhpcy5idWZmZXIrPVwiIGFzIHxcIi5jb25jYXQoZS5qb2luKFwiIFwiKSxcInxcIil9UGFydGlhbFN0YXRlbWVudChlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwodGhpcy5idWZmZXIrPVwie3s+XCIsdGhpcy5FeHByZXNzaW9uKGUubmFtZSksdGhpcy5QYXJhbXMoZS5wYXJhbXMpLHRoaXMuSGFzaChlLmhhc2gpLHRoaXMuYnVmZmVyKz1cIn19XCIpfUNvbmNhdFN0YXRlbWVudChlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwodGhpcy5idWZmZXIrPSdcIicsZS5wYXJ0cy5mb3JFYWNoKHI9PntyLnR5cGU9PT1cIlRleHROb2RlXCI/dGhpcy5UZXh0Tm9kZShyLCEwKTp0aGlzLk5vZGUocil9KSx0aGlzLmJ1ZmZlcis9J1wiJyl9TXVzdGFjaGVDb21tZW50U3RhdGVtZW50KGUpe3RoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZSl8fCh0aGlzLmJ1ZmZlcis9XCJ7eyEtLVwiLmNvbmNhdChlLnZhbHVlLFwiLS19fVwiKSl9RWxlbWVudE1vZGlmaWVyU3RhdGVtZW50KGUpe3RoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZSl8fCh0aGlzLmJ1ZmZlcis9XCJ7e1wiLHRoaXMuRXhwcmVzc2lvbihlLnBhdGgpLHRoaXMuUGFyYW1zKGUucGFyYW1zKSx0aGlzLkhhc2goZS5oYXNoKSx0aGlzLmJ1ZmZlcis9XCJ9fVwiKX1Db21tZW50U3RhdGVtZW50KGUpe3RoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZSl8fCh0aGlzLmJ1ZmZlcis9XCI8IS0tXCIuY29uY2F0KGUudmFsdWUsXCItLT5cIikpfVBhdGhFeHByZXNzaW9uKGUpe3RoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZSl8fCh0aGlzLmJ1ZmZlcis9ZS5vcmlnaW5hbCl9U3ViRXhwcmVzc2lvbihlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwodGhpcy5idWZmZXIrPVwiKFwiLHRoaXMuRXhwcmVzc2lvbihlLnBhdGgpLHRoaXMuUGFyYW1zKGUucGFyYW1zKSx0aGlzLkhhc2goZS5oYXNoKSx0aGlzLmJ1ZmZlcis9XCIpXCIpfVBhcmFtcyhlKXtlLmxlbmd0aCYmZS5mb3JFYWNoKHI9Pnt0aGlzLmJ1ZmZlcis9XCIgXCIsdGhpcy5FeHByZXNzaW9uKHIpfSl9SGFzaChlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUsITApfHxlLnBhaXJzLmZvckVhY2gocj0+e3RoaXMuYnVmZmVyKz1cIiBcIix0aGlzLkhhc2hQYWlyKHIpfSl9SGFzaFBhaXIoZSl7dGhpcy5oYW5kbGVkQnlPdmVycmlkZShlKXx8KHRoaXMuYnVmZmVyKz1lLmtleSx0aGlzLmJ1ZmZlcis9XCI9XCIsdGhpcy5Ob2RlKGUudmFsdWUpKX1TdHJpbmdMaXRlcmFsKGUpe3RoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZSl8fCh0aGlzLmJ1ZmZlcis9SlNPTi5zdHJpbmdpZnkoZS52YWx1ZSkpfUJvb2xlYW5MaXRlcmFsKGUpe3RoaXMuaGFuZGxlZEJ5T3ZlcnJpZGUoZSl8fCh0aGlzLmJ1ZmZlcis9ZS52YWx1ZSl9TnVtYmVyTGl0ZXJhbChlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwodGhpcy5idWZmZXIrPWUudmFsdWUpfVVuZGVmaW5lZExpdGVyYWwoZSl7dGhpcy5oYW5kbGVkQnlPdmVycmlkZShlKXx8KHRoaXMuYnVmZmVyKz1cInVuZGVmaW5lZFwiKX1OdWxsTGl0ZXJhbChlKXt0aGlzLmhhbmRsZWRCeU92ZXJyaWRlKGUpfHwodGhpcy5idWZmZXIrPVwibnVsbFwiKX1wcmludChlKXtsZXR7b3B0aW9uczpyfT10aGlzO2lmKHIub3ZlcnJpZGUpe2xldCBzPXIub3ZlcnJpZGUoZSxyKTtpZihzIT09dm9pZCAwKXJldHVybiBzfXJldHVybiB0aGlzLmJ1ZmZlcj1cIlwiLHRoaXMuTm9kZShlKSx0aGlzLmJ1ZmZlcn19O3QuZGVmYXVsdD1vfX0pLEJlPUkoe1wibm9kZV9tb2R1bGVzL0BoYW5kbGViYXJzL3BhcnNlci9kaXN0L2Nqcy9leGNlcHRpb24uanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGY9W1wiZGVzY3JpcHRpb25cIixcImZpbGVOYW1lXCIsXCJsaW5lTnVtYmVyXCIsXCJlbmRMaW5lTnVtYmVyXCIsXCJtZXNzYWdlXCIsXCJuYW1lXCIsXCJudW1iZXJcIixcInN0YWNrXCJdO2Z1bmN0aW9uIGgoZCxjKXt2YXIgbz1jJiZjLmxvYyxlLHIscyxwO28mJihlPW8uc3RhcnQubGluZSxyPW8uZW5kLmxpbmUscz1vLnN0YXJ0LmNvbHVtbixwPW8uZW5kLmNvbHVtbixkKz1cIiAtIFwiK2UrXCI6XCIrcyk7Zm9yKHZhciBuPUVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsZCksYT0wO2E8Zi5sZW5ndGg7YSsrKXRoaXNbZlthXV09bltmW2FdXTtFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyxoKTt0cnl7byYmKHRoaXMubGluZU51bWJlcj1lLHRoaXMuZW5kTGluZU51bWJlcj1yLE9iamVjdC5kZWZpbmVQcm9wZXJ0eT8oT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJjb2x1bW5cIix7dmFsdWU6cyxlbnVtZXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJlbmRDb2x1bW5cIix7dmFsdWU6cCxlbnVtZXJhYmxlOiEwfSkpOih0aGlzLmNvbHVtbj1zLHRoaXMuZW5kQ29sdW1uPXApKX1jYXRjaHt9fWgucHJvdG90eXBlPW5ldyBFcnJvcix0LmRlZmF1bHQ9aH19KSxPZT1JKHtcIm5vZGVfbW9kdWxlcy9AaGFuZGxlYmFycy9wYXJzZXIvZGlzdC9janMvdmlzaXRvci5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKTt2YXIgZj10JiZ0Ll9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24ocil7cmV0dXJuIHImJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgaD1mKEJlKCkpO2Z1bmN0aW9uIGQoKXt0aGlzLnBhcmVudHM9W119ZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQsbXV0YXRpbmc6ITEsYWNjZXB0S2V5OmZ1bmN0aW9uKHIscyl7dmFyIHA9dGhpcy5hY2NlcHQocltzXSk7aWYodGhpcy5tdXRhdGluZyl7aWYocCYmIWQucHJvdG90eXBlW3AudHlwZV0pdGhyb3cgbmV3IGguZGVmYXVsdCgnVW5leHBlY3RlZCBub2RlIHR5cGUgXCInK3AudHlwZSsnXCIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJytzK1wiIG9uIFwiK3IudHlwZSk7cltzXT1wfX0sYWNjZXB0UmVxdWlyZWQ6ZnVuY3Rpb24ocixzKXtpZih0aGlzLmFjY2VwdEtleShyLHMpLCFyW3NdKXRocm93IG5ldyBoLmRlZmF1bHQoci50eXBlK1wiIHJlcXVpcmVzIFwiK3MpfSxhY2NlcHRBcnJheTpmdW5jdGlvbihyKXtmb3IodmFyIHM9MCxwPXIubGVuZ3RoO3M8cDtzKyspdGhpcy5hY2NlcHRLZXkocixzKSxyW3NdfHwoci5zcGxpY2UocywxKSxzLS0scC0tKX0sYWNjZXB0OmZ1bmN0aW9uKHIpe2lmKCEhcil7aWYoIXRoaXNbci50eXBlXSl0aHJvdyBuZXcgaC5kZWZhdWx0KFwiVW5rbm93biB0eXBlOiBcIityLnR5cGUscik7dGhpcy5jdXJyZW50JiZ0aGlzLnBhcmVudHMudW5zaGlmdCh0aGlzLmN1cnJlbnQpLHRoaXMuY3VycmVudD1yO3ZhciBzPXRoaXNbci50eXBlXShyKTtpZih0aGlzLmN1cnJlbnQ9dGhpcy5wYXJlbnRzLnNoaWZ0KCksIXRoaXMubXV0YXRpbmd8fHMpcmV0dXJuIHM7aWYocyE9PSExKXJldHVybiByfX0sUHJvZ3JhbTpmdW5jdGlvbihyKXt0aGlzLmFjY2VwdEFycmF5KHIuYm9keSl9LE11c3RhY2hlU3RhdGVtZW50OmMsRGVjb3JhdG9yOmMsQmxvY2tTdGF0ZW1lbnQ6byxEZWNvcmF0b3JCbG9jazpvLFBhcnRpYWxTdGF0ZW1lbnQ6ZSxQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6ZnVuY3Rpb24ocil7ZS5jYWxsKHRoaXMsciksdGhpcy5hY2NlcHRLZXkocixcInByb2dyYW1cIil9LENvbnRlbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LENvbW1lbnRTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt9LFN1YkV4cHJlc3Npb246YyxQYXRoRXhwcmVzc2lvbjpmdW5jdGlvbigpe30sU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbigpe30sTnVtYmVyTGl0ZXJhbDpmdW5jdGlvbigpe30sQm9vbGVhbkxpdGVyYWw6ZnVuY3Rpb24oKXt9LFVuZGVmaW5lZExpdGVyYWw6ZnVuY3Rpb24oKXt9LE51bGxMaXRlcmFsOmZ1bmN0aW9uKCl7fSxIYXNoOmZ1bmN0aW9uKHIpe3RoaXMuYWNjZXB0QXJyYXkoci5wYWlycyl9LEhhc2hQYWlyOmZ1bmN0aW9uKHIpe3RoaXMuYWNjZXB0UmVxdWlyZWQocixcInZhbHVlXCIpfX07ZnVuY3Rpb24gYyhyKXt0aGlzLmFjY2VwdFJlcXVpcmVkKHIsXCJwYXRoXCIpLHRoaXMuYWNjZXB0QXJyYXkoci5wYXJhbXMpLHRoaXMuYWNjZXB0S2V5KHIsXCJoYXNoXCIpfWZ1bmN0aW9uIG8ocil7Yy5jYWxsKHRoaXMsciksdGhpcy5hY2NlcHRLZXkocixcInByb2dyYW1cIiksdGhpcy5hY2NlcHRLZXkocixcImludmVyc2VcIil9ZnVuY3Rpb24gZShyKXt0aGlzLmFjY2VwdFJlcXVpcmVkKHIsXCJuYW1lXCIpLHRoaXMuYWNjZXB0QXJyYXkoci5wYXJhbXMpLHRoaXMuYWNjZXB0S2V5KHIsXCJoYXNoXCIpfXQuZGVmYXVsdD1kfX0pLHplPUkoe1wibm9kZV9tb2R1bGVzL0BoYW5kbGViYXJzL3BhcnNlci9kaXN0L2Nqcy93aGl0ZXNwYWNlLWNvbnRyb2wuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCk7dmFyIGY9dCYmdC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKHMpe3JldHVybiBzJiZzLl9fZXNNb2R1bGU/czp7ZGVmYXVsdDpzfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGg9ZihPZSgpKTtmdW5jdGlvbiBkKHMpe3M9PT12b2lkIDAmJihzPXt9KSx0aGlzLm9wdGlvbnM9c31kLnByb3RvdHlwZT1uZXcgaC5kZWZhdWx0LGQucHJvdG90eXBlLlByb2dyYW09ZnVuY3Rpb24ocyl7dmFyIHA9IXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lLG49IXRoaXMuaXNSb290U2Vlbjt0aGlzLmlzUm9vdFNlZW49ITA7Zm9yKHZhciBhPXMuYm9keSx1PTAsaT1hLmxlbmd0aDt1PGk7dSsrKXt2YXIgbD1hW3VdLGI9dGhpcy5hY2NlcHQobCk7aWYoISFiKXt2YXIgUD1jKGEsdSxuKSxFPW8oYSx1LG4pLHY9Yi5vcGVuU3RhbmRhbG9uZSYmUCxfPWIuY2xvc2VTdGFuZGFsb25lJiZFLHk9Yi5pbmxpbmVTdGFuZGFsb25lJiZQJiZFO2IuY2xvc2UmJmUoYSx1LCEwKSxiLm9wZW4mJnIoYSx1LCEwKSxwJiZ5JiYoZShhLHUpLHIoYSx1KSYmbC50eXBlPT09XCJQYXJ0aWFsU3RhdGVtZW50XCImJihsLmluZGVudD0vKFsgXFx0XSskKS8uZXhlYyhhW3UtMV0ub3JpZ2luYWwpWzFdKSkscCYmdiYmKGUoKGwucHJvZ3JhbXx8bC5pbnZlcnNlKS5ib2R5KSxyKGEsdSkpLHAmJl8mJihlKGEsdSkscigobC5pbnZlcnNlfHxsLnByb2dyYW0pLmJvZHkpKX19cmV0dXJuIHN9LGQucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50PWQucHJvdG90eXBlLkRlY29yYXRvckJsb2NrPWQucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudD1mdW5jdGlvbihzKXt0aGlzLmFjY2VwdChzLnByb2dyYW0pLHRoaXMuYWNjZXB0KHMuaW52ZXJzZSk7dmFyIHA9cy5wcm9ncmFtfHxzLmludmVyc2Usbj1zLnByb2dyYW0mJnMuaW52ZXJzZSxhPW4sdT1uO2lmKG4mJm4uY2hhaW5lZClmb3IoYT1uLmJvZHlbMF0ucHJvZ3JhbTt1LmNoYWluZWQ7KXU9dS5ib2R5W3UuYm9keS5sZW5ndGgtMV0ucHJvZ3JhbTt2YXIgaT17b3BlbjpzLm9wZW5TdHJpcC5vcGVuLGNsb3NlOnMuY2xvc2VTdHJpcC5jbG9zZSxvcGVuU3RhbmRhbG9uZTpvKHAuYm9keSksY2xvc2VTdGFuZGFsb25lOmMoKGF8fHApLmJvZHkpfTtpZihzLm9wZW5TdHJpcC5jbG9zZSYmZShwLmJvZHksbnVsbCwhMCksbil7dmFyIGw9cy5pbnZlcnNlU3RyaXA7bC5vcGVuJiZyKHAuYm9keSxudWxsLCEwKSxsLmNsb3NlJiZlKGEuYm9keSxudWxsLCEwKSxzLmNsb3NlU3RyaXAub3BlbiYmcih1LmJvZHksbnVsbCwhMCksIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lJiZjKHAuYm9keSkmJm8oYS5ib2R5KSYmKHIocC5ib2R5KSxlKGEuYm9keSkpfWVsc2Ugcy5jbG9zZVN0cmlwLm9wZW4mJnIocC5ib2R5LG51bGwsITApO3JldHVybiBpfSxkLnByb3RvdHlwZS5EZWNvcmF0b3I9ZC5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQ9ZnVuY3Rpb24ocyl7cmV0dXJuIHMuc3RyaXB9LGQucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQ9ZC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudD1mdW5jdGlvbihzKXt2YXIgcD1zLnN0cmlwfHx7fTtyZXR1cm57aW5saW5lU3RhbmRhbG9uZTohMCxvcGVuOnAub3BlbixjbG9zZTpwLmNsb3NlfX07ZnVuY3Rpb24gYyhzLHAsbil7cD09PXZvaWQgMCYmKHA9cy5sZW5ndGgpO3ZhciBhPXNbcC0xXSx1PXNbcC0yXTtpZighYSlyZXR1cm4gbjtpZihhLnR5cGU9PT1cIkNvbnRlbnRTdGF0ZW1lbnRcIilyZXR1cm4odXx8IW4/L1xccj9cXG5cXHMqPyQvOi8oXnxcXHI/XFxuKVxccyo/JC8pLnRlc3QoYS5vcmlnaW5hbCl9ZnVuY3Rpb24gbyhzLHAsbil7cD09PXZvaWQgMCYmKHA9LTEpO3ZhciBhPXNbcCsxXSx1PXNbcCsyXTtpZighYSlyZXR1cm4gbjtpZihhLnR5cGU9PT1cIkNvbnRlbnRTdGF0ZW1lbnRcIilyZXR1cm4odXx8IW4/L15cXHMqP1xccj9cXG4vOi9eXFxzKj8oXFxyP1xcbnwkKS8pLnRlc3QoYS5vcmlnaW5hbCl9ZnVuY3Rpb24gZShzLHAsbil7dmFyIGE9c1twPT1udWxsPzA6cCsxXTtpZighKCFhfHxhLnR5cGUhPT1cIkNvbnRlbnRTdGF0ZW1lbnRcInx8IW4mJmEucmlnaHRTdHJpcHBlZCkpe3ZhciB1PWEudmFsdWU7YS52YWx1ZT1hLnZhbHVlLnJlcGxhY2Uobj8vXlxccysvOi9eWyBcXHRdKlxccj9cXG4/LyxcIlwiKSxhLnJpZ2h0U3RyaXBwZWQ9YS52YWx1ZSE9PXV9fWZ1bmN0aW9uIHIocyxwLG4pe3ZhciBhPXNbcD09bnVsbD9zLmxlbmd0aC0xOnAtMV07aWYoISghYXx8YS50eXBlIT09XCJDb250ZW50U3RhdGVtZW50XCJ8fCFuJiZhLmxlZnRTdHJpcHBlZCkpe3ZhciB1PWEudmFsdWU7cmV0dXJuIGEudmFsdWU9YS52YWx1ZS5yZXBsYWNlKG4/L1xccyskLzovWyBcXHRdKyQvLFwiXCIpLGEubGVmdFN0cmlwcGVkPWEudmFsdWUhPT11LGEubGVmdFN0cmlwcGVkfX10LmRlZmF1bHQ9ZH19KSxHZT1JKHtcIm5vZGVfbW9kdWxlcy9AaGFuZGxlYmFycy9wYXJzZXIvZGlzdC9janMvcGFyc2VyLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPWZ1bmN0aW9uKCl7dmFyIGg9ZnVuY3Rpb24oTixrLEIsTyl7Zm9yKEI9Qnx8e30sTz1OLmxlbmd0aDtPLS07QltOW09dXT1rKTtyZXR1cm4gQn0sZD1bMiw0NF0sYz1bMSwyMF0sbz1bNSwxNCwxNSwxOSwyOSwzNCwzOSw0NCw0Nyw0OCw1Miw1Niw2MF0sZT1bMSwzNV0scj1bMSwzOF0scz1bMSwzMF0scD1bMSwzMV0sbj1bMSwzMl0sYT1bMSwzM10sdT1bMSwzNF0saT1bMSwzN10sbD1bMTQsMTUsMTksMjksMzQsMzksNDQsNDcsNDgsNTIsNTYsNjBdLGI9WzE0LDE1LDE5LDI5LDM0LDQ0LDQ3LDQ4LDUyLDU2LDYwXSxQPVsxNSwxOF0sRT1bMTQsMTUsMTksMjksMzQsNDcsNDgsNTIsNTYsNjBdLHY9WzMzLDY0LDcxLDc5LDgwLDgxLDgyLDgzLDg0XSxfPVsyMywzMyw1NSw2NCw2Nyw3MSw3NCw3OSw4MCw4MSw4Miw4Myw4NF0seT1bMSw1MV0sZz1bMjMsMzMsNTUsNjQsNjcsNzEsNzQsNzksODAsODEsODIsODMsODQsODZdLEw9WzIsNDNdLGo9WzU1LDY0LDcxLDc5LDgwLDgxLDgyLDgzLDg0XSx4PVsxLDU4XSx3PVsxLDU5XSxIPVsxLDY2XSxtPVszMyw2NCw3MSw3NCw3OSw4MCw4MSw4Miw4Myw4NF0sQz1bMjMsNjQsNzEsNzksODAsODEsODIsODMsODRdLFM9WzEsNzZdLFI9WzY0LDY3LDcxLDc5LDgwLDgxLDgyLDgzLDg0XSxNPVszMyw3NF0sVj1bMjMsMzMsNTUsNjcsNzEsNzRdLEc9WzEsMTA2XSxLPVsxLDExOF0sVT1bNzEsNzZdLFo9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6Mixyb290OjMscHJvZ3JhbTo0LEVPRjo1LHByb2dyYW1fcmVwZXRpdGlvbjA6NixzdGF0ZW1lbnQ6NyxtdXN0YWNoZTo4LGJsb2NrOjkscmF3QmxvY2s6MTAscGFydGlhbDoxMSxwYXJ0aWFsQmxvY2s6MTIsY29udGVudDoxMyxDT01NRU5UOjE0LENPTlRFTlQ6MTUsb3BlblJhd0Jsb2NrOjE2LHJhd0Jsb2NrX3JlcGV0aXRpb24wOjE3LEVORF9SQVdfQkxPQ0s6MTgsT1BFTl9SQVdfQkxPQ0s6MTksaGVscGVyTmFtZToyMCxvcGVuUmF3QmxvY2tfcmVwZXRpdGlvbjA6MjEsb3BlblJhd0Jsb2NrX29wdGlvbjA6MjIsQ0xPU0VfUkFXX0JMT0NLOjIzLG9wZW5CbG9jazoyNCxibG9ja19vcHRpb24wOjI1LGNsb3NlQmxvY2s6MjYsb3BlbkludmVyc2U6MjcsYmxvY2tfb3B0aW9uMToyOCxPUEVOX0JMT0NLOjI5LG9wZW5CbG9ja19yZXBldGl0aW9uMDozMCxvcGVuQmxvY2tfb3B0aW9uMDozMSxvcGVuQmxvY2tfb3B0aW9uMTozMixDTE9TRTozMyxPUEVOX0lOVkVSU0U6MzQsb3BlbkludmVyc2VfcmVwZXRpdGlvbjA6MzUsb3BlbkludmVyc2Vfb3B0aW9uMDozNixvcGVuSW52ZXJzZV9vcHRpb24xOjM3LG9wZW5JbnZlcnNlQ2hhaW46MzgsT1BFTl9JTlZFUlNFX0NIQUlOOjM5LG9wZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjA6NDAsb3BlbkludmVyc2VDaGFpbl9vcHRpb24wOjQxLG9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMTo0MixpbnZlcnNlQW5kUHJvZ3JhbTo0MyxJTlZFUlNFOjQ0LGludmVyc2VDaGFpbjo0NSxpbnZlcnNlQ2hhaW5fb3B0aW9uMDo0NixPUEVOX0VOREJMT0NLOjQ3LE9QRU46NDgsZXhwcjo0OSxtdXN0YWNoZV9yZXBldGl0aW9uMDo1MCxtdXN0YWNoZV9vcHRpb24wOjUxLE9QRU5fVU5FU0NBUEVEOjUyLG11c3RhY2hlX3JlcGV0aXRpb24xOjUzLG11c3RhY2hlX29wdGlvbjE6NTQsQ0xPU0VfVU5FU0NBUEVEOjU1LE9QRU5fUEFSVElBTDo1NixwYXJ0aWFsX3JlcGV0aXRpb24wOjU3LHBhcnRpYWxfb3B0aW9uMDo1OCxvcGVuUGFydGlhbEJsb2NrOjU5LE9QRU5fUEFSVElBTF9CTE9DSzo2MCxvcGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wOjYxLG9wZW5QYXJ0aWFsQmxvY2tfb3B0aW9uMDo2MixzZXhwcjo2MyxPUEVOX1NFWFBSOjY0LHNleHByX3JlcGV0aXRpb24wOjY1LHNleHByX29wdGlvbjA6NjYsQ0xPU0VfU0VYUFI6NjcsaGFzaDo2OCxoYXNoX3JlcGV0aXRpb25fcGx1czA6NjksaGFzaFNlZ21lbnQ6NzAsSUQ6NzEsRVFVQUxTOjcyLGJsb2NrUGFyYW1zOjczLE9QRU5fQkxPQ0tfUEFSQU1TOjc0LGJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czA6NzUsQ0xPU0VfQkxPQ0tfUEFSQU1TOjc2LHBhdGg6NzcsZGF0YU5hbWU6NzgsU1RSSU5HOjc5LE5VTUJFUjo4MCxCT09MRUFOOjgxLFVOREVGSU5FRDo4MixOVUxMOjgzLERBVEE6ODQscGF0aFNlZ21lbnRzOjg1LFNFUDo4NiwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOlwiZXJyb3JcIiw1OlwiRU9GXCIsMTQ6XCJDT01NRU5UXCIsMTU6XCJDT05URU5UXCIsMTg6XCJFTkRfUkFXX0JMT0NLXCIsMTk6XCJPUEVOX1JBV19CTE9DS1wiLDIzOlwiQ0xPU0VfUkFXX0JMT0NLXCIsMjk6XCJPUEVOX0JMT0NLXCIsMzM6XCJDTE9TRVwiLDM0OlwiT1BFTl9JTlZFUlNFXCIsMzk6XCJPUEVOX0lOVkVSU0VfQ0hBSU5cIiw0NDpcIklOVkVSU0VcIiw0NzpcIk9QRU5fRU5EQkxPQ0tcIiw0ODpcIk9QRU5cIiw1MjpcIk9QRU5fVU5FU0NBUEVEXCIsNTU6XCJDTE9TRV9VTkVTQ0FQRURcIiw1NjpcIk9QRU5fUEFSVElBTFwiLDYwOlwiT1BFTl9QQVJUSUFMX0JMT0NLXCIsNjQ6XCJPUEVOX1NFWFBSXCIsNjc6XCJDTE9TRV9TRVhQUlwiLDcxOlwiSURcIiw3MjpcIkVRVUFMU1wiLDc0OlwiT1BFTl9CTE9DS19QQVJBTVNcIiw3NjpcIkNMT1NFX0JMT0NLX1BBUkFNU1wiLDc5OlwiU1RSSU5HXCIsODA6XCJOVU1CRVJcIiw4MTpcIkJPT0xFQU5cIiw4MjpcIlVOREVGSU5FRFwiLDgzOlwiTlVMTFwiLDg0OlwiREFUQVwiLDg2OlwiU0VQXCJ9LHByb2R1Y3Rpb25zXzpbMCxbMywyXSxbNCwxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbMTMsMV0sWzEwLDNdLFsxNiw1XSxbOSw0XSxbOSw0XSxbMjQsNl0sWzI3LDZdLFszOCw2XSxbNDMsMl0sWzQ1LDNdLFs0NSwxXSxbMjYsM10sWzgsNV0sWzgsNV0sWzExLDVdLFsxMiwzXSxbNTksNV0sWzQ5LDFdLFs0OSwxXSxbNjMsNV0sWzY4LDFdLFs3MCwzXSxbNzMsM10sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFs3OCwyXSxbNzcsMV0sWzg1LDNdLFs4NSwxXSxbNiwwXSxbNiwyXSxbMTcsMF0sWzE3LDJdLFsyMSwwXSxbMjEsMl0sWzIyLDBdLFsyMiwxXSxbMjUsMF0sWzI1LDFdLFsyOCwwXSxbMjgsMV0sWzMwLDBdLFszMCwyXSxbMzEsMF0sWzMxLDFdLFszMiwwXSxbMzIsMV0sWzM1LDBdLFszNSwyXSxbMzYsMF0sWzM2LDFdLFszNywwXSxbMzcsMV0sWzQwLDBdLFs0MCwyXSxbNDEsMF0sWzQxLDFdLFs0MiwwXSxbNDIsMV0sWzQ2LDBdLFs0NiwxXSxbNTAsMF0sWzUwLDJdLFs1MSwwXSxbNTEsMV0sWzUzLDBdLFs1MywyXSxbNTQsMF0sWzU0LDFdLFs1NywwXSxbNTcsMl0sWzU4LDBdLFs1OCwxXSxbNjEsMF0sWzYxLDJdLFs2MiwwXSxbNjIsMV0sWzY1LDBdLFs2NSwyXSxbNjYsMF0sWzY2LDFdLFs2OSwxXSxbNjksMl0sWzc1LDFdLFs3NSwyXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihrLEIsTyxxLHosQSxRKXt2YXIgRD1BLmxlbmd0aC0xO3N3aXRjaCh6KXtjYXNlIDE6cmV0dXJuIEFbRC0xXTtjYXNlIDI6dGhpcy4kPXEucHJlcGFyZVByb2dyYW0oQVtEXSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDpjYXNlIDU6Y2FzZSA2OmNhc2UgNzpjYXNlIDg6Y2FzZSAyMDpjYXNlIDI3OmNhc2UgMjg6Y2FzZSAzMzpjYXNlIDM0OnRoaXMuJD1BW0RdO2JyZWFrO2Nhc2UgOTp0aGlzLiQ9e3R5cGU6XCJDb21tZW50U3RhdGVtZW50XCIsdmFsdWU6cS5zdHJpcENvbW1lbnQoQVtEXSksc3RyaXA6cS5zdHJpcEZsYWdzKEFbRF0sQVtEXSksbG9jOnEubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9e3R5cGU6XCJDb250ZW50U3RhdGVtZW50XCIsb3JpZ2luYWw6QVtEXSx2YWx1ZTpBW0RdLGxvYzpxLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMTE6dGhpcy4kPXEucHJlcGFyZVJhd0Jsb2NrKEFbRC0yXSxBW0QtMV0sQVtEXSx0aGlzLl8kKTticmVhaztjYXNlIDEyOnRoaXMuJD17cGF0aDpBW0QtM10scGFyYW1zOkFbRC0yXSxoYXNoOkFbRC0xXX07YnJlYWs7Y2FzZSAxMzp0aGlzLiQ9cS5wcmVwYXJlQmxvY2soQVtELTNdLEFbRC0yXSxBW0QtMV0sQVtEXSwhMSx0aGlzLl8kKTticmVhaztjYXNlIDE0OnRoaXMuJD1xLnByZXBhcmVCbG9jayhBW0QtM10sQVtELTJdLEFbRC0xXSxBW0RdLCEwLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMTU6dGhpcy4kPXtvcGVuOkFbRC01XSxwYXRoOkFbRC00XSxwYXJhbXM6QVtELTNdLGhhc2g6QVtELTJdLGJsb2NrUGFyYW1zOkFbRC0xXSxzdHJpcDpxLnN0cmlwRmxhZ3MoQVtELTVdLEFbRF0pfTticmVhaztjYXNlIDE2OmNhc2UgMTc6dGhpcy4kPXtwYXRoOkFbRC00XSxwYXJhbXM6QVtELTNdLGhhc2g6QVtELTJdLGJsb2NrUGFyYW1zOkFbRC0xXSxzdHJpcDpxLnN0cmlwRmxhZ3MoQVtELTVdLEFbRF0pfTticmVhaztjYXNlIDE4OnRoaXMuJD17c3RyaXA6cS5zdHJpcEZsYWdzKEFbRC0xXSxBW0QtMV0pLHByb2dyYW06QVtEXX07YnJlYWs7Y2FzZSAxOTp2YXIgJD1xLnByZXBhcmVCbG9jayhBW0QtMl0sQVtELTFdLEFbRF0sQVtEXSwhMSx0aGlzLl8kKSxvZT1xLnByZXBhcmVQcm9ncmFtKFskXSxBW0QtMV0ubG9jKTtvZS5jaGFpbmVkPSEwLHRoaXMuJD17c3RyaXA6QVtELTJdLnN0cmlwLHByb2dyYW06b2UsY2hhaW46ITB9O2JyZWFrO2Nhc2UgMjE6dGhpcy4kPXtwYXRoOkFbRC0xXSxzdHJpcDpxLnN0cmlwRmxhZ3MoQVtELTJdLEFbRF0pfTticmVhaztjYXNlIDIyOmNhc2UgMjM6dGhpcy4kPXEucHJlcGFyZU11c3RhY2hlKEFbRC0zXSxBW0QtMl0sQVtELTFdLEFbRC00XSxxLnN0cmlwRmxhZ3MoQVtELTRdLEFbRF0pLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjQ6dGhpcy4kPXt0eXBlOlwiUGFydGlhbFN0YXRlbWVudFwiLG5hbWU6QVtELTNdLHBhcmFtczpBW0QtMl0saGFzaDpBW0QtMV0saW5kZW50OlwiXCIsc3RyaXA6cS5zdHJpcEZsYWdzKEFbRC00XSxBW0RdKSxsb2M6cS5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDI1OnRoaXMuJD1xLnByZXBhcmVQYXJ0aWFsQmxvY2soQVtELTJdLEFbRC0xXSxBW0RdLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjY6dGhpcy4kPXtwYXRoOkFbRC0zXSxwYXJhbXM6QVtELTJdLGhhc2g6QVtELTFdLHN0cmlwOnEuc3RyaXBGbGFncyhBW0QtNF0sQVtEXSl9O2JyZWFrO2Nhc2UgMjk6dGhpcy4kPXt0eXBlOlwiU3ViRXhwcmVzc2lvblwiLHBhdGg6QVtELTNdLHBhcmFtczpBW0QtMl0saGFzaDpBW0QtMV0sbG9jOnEubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzMDp0aGlzLiQ9e3R5cGU6XCJIYXNoXCIscGFpcnM6QVtEXSxsb2M6cS5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDMxOnRoaXMuJD17dHlwZTpcIkhhc2hQYWlyXCIsa2V5OnEuaWQoQVtELTJdKSx2YWx1ZTpBW0RdLGxvYzpxLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzI6dGhpcy4kPXEuaWQoQVtELTFdKTticmVhaztjYXNlIDM1OnRoaXMuJD17dHlwZTpcIlN0cmluZ0xpdGVyYWxcIix2YWx1ZTpBW0RdLG9yaWdpbmFsOkFbRF0sbG9jOnEubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzNjp0aGlzLiQ9e3R5cGU6XCJOdW1iZXJMaXRlcmFsXCIsdmFsdWU6TnVtYmVyKEFbRF0pLG9yaWdpbmFsOk51bWJlcihBW0RdKSxsb2M6cS5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM3OnRoaXMuJD17dHlwZTpcIkJvb2xlYW5MaXRlcmFsXCIsdmFsdWU6QVtEXT09PVwidHJ1ZVwiLG9yaWdpbmFsOkFbRF09PT1cInRydWVcIixsb2M6cS5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDM4OnRoaXMuJD17dHlwZTpcIlVuZGVmaW5lZExpdGVyYWxcIixvcmlnaW5hbDp2b2lkIDAsdmFsdWU6dm9pZCAwLGxvYzpxLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMzk6dGhpcy4kPXt0eXBlOlwiTnVsbExpdGVyYWxcIixvcmlnaW5hbDpudWxsLHZhbHVlOm51bGwsbG9jOnEubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSA0MDp0aGlzLiQ9cS5wcmVwYXJlUGF0aCghMCxBW0RdLHRoaXMuXyQpO2JyZWFrO2Nhc2UgNDE6dGhpcy4kPXEucHJlcGFyZVBhdGgoITEsQVtEXSx0aGlzLl8kKTticmVhaztjYXNlIDQyOkFbRC0yXS5wdXNoKHtwYXJ0OnEuaWQoQVtEXSksb3JpZ2luYWw6QVtEXSxzZXBhcmF0b3I6QVtELTFdfSksdGhpcy4kPUFbRC0yXTticmVhaztjYXNlIDQzOnRoaXMuJD1be3BhcnQ6cS5pZChBW0RdKSxvcmlnaW5hbDpBW0RdfV07YnJlYWs7Y2FzZSA0NDpjYXNlIDQ2OmNhc2UgNDg6Y2FzZSA1NjpjYXNlIDYyOmNhc2UgNjg6Y2FzZSA3NjpjYXNlIDgwOmNhc2UgODQ6Y2FzZSA4ODpjYXNlIDkyOnRoaXMuJD1bXTticmVhaztjYXNlIDQ1OmNhc2UgNDc6Y2FzZSA0OTpjYXNlIDU3OmNhc2UgNjM6Y2FzZSA2OTpjYXNlIDc3OmNhc2UgODE6Y2FzZSA4NTpjYXNlIDg5OmNhc2UgOTM6Y2FzZSA5NzpjYXNlIDk5OkFbRC0xXS5wdXNoKEFbRF0pO2JyZWFrO2Nhc2UgOTY6Y2FzZSA5ODp0aGlzLiQ9W0FbRF1dO2JyZWFrfX0sdGFibGU6W2goWzUsMTQsMTUsMTksMjksMzQsNDgsNTIsNTYsNjBdLGQsezM6MSw0OjIsNjozfSksezE6WzNdfSx7NTpbMSw0XX0saChbNSwzOSw0NCw0N10sWzIsMl0sezc6NSw4OjYsOTo3LDEwOjgsMTE6OSwxMjoxMCwxMzoxMSwyNDoxNSwyNzoxNiwxNjoxNyw1OToxOSwxNDpbMSwxMl0sMTU6YywxOTpbMSwyM10sMjk6WzEsMjFdLDM0OlsxLDIyXSw0ODpbMSwxM10sNTI6WzEsMTRdLDU2OlsxLDE4XSw2MDpbMSwyNF19KSx7MTpbMiwxXX0saChvLFsyLDQ1XSksaChvLFsyLDNdKSxoKG8sWzIsNF0pLGgobyxbMiw1XSksaChvLFsyLDZdKSxoKG8sWzIsN10pLGgobyxbMiw4XSksaChvLFsyLDldKSx7MjA6MjYsNDk6MjUsNjM6MjcsNjQ6ZSw3MTpyLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSx7MjA6MjYsNDk6MzksNjM6MjcsNjQ6ZSw3MTpyLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSxoKGwsZCx7NjozLDQ6NDB9KSxoKGIsZCx7NjozLDQ6NDF9KSxoKFAsWzIsNDZdLHsxNzo0Mn0pLHsyMDoyNiw0OTo0Myw2MzoyNyw2NDplLDcxOnIsNzc6MjgsNzg6MjksNzk6cyw4MDpwLDgxOm4sODI6YSw4Mzp1LDg0OmksODU6MzZ9LGgoRSxkLHs2OjMsNDo0NH0pLGgoWzUsMTQsMTUsMTgsMTksMjksMzQsMzksNDQsNDcsNDgsNTIsNTYsNjBdLFsyLDEwXSksezIwOjQ1LDcxOnIsNzc6MjgsNzg6MjksNzk6cyw4MDpwLDgxOm4sODI6YSw4Mzp1LDg0OmksODU6MzZ9LHsyMDo0Niw3MTpyLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSx7MjA6NDcsNzE6ciw3NzoyOCw3ODoyOSw3OTpzLDgwOnAsODE6biw4MjphLDgzOnUsODQ6aSw4NTozNn0sezIwOjI2LDQ5OjQ4LDYzOjI3LDY0OmUsNzE6ciw3NzoyOCw3ODoyOSw3OTpzLDgwOnAsODE6biw4MjphLDgzOnUsODQ6aSw4NTozNn0saCh2LFsyLDc2XSx7NTA6NDl9KSxoKF8sWzIsMjddKSxoKF8sWzIsMjhdKSxoKF8sWzIsMzNdKSxoKF8sWzIsMzRdKSxoKF8sWzIsMzVdKSxoKF8sWzIsMzZdKSxoKF8sWzIsMzddKSxoKF8sWzIsMzhdKSxoKF8sWzIsMzldKSx7MjA6MjYsNDk6NTAsNjM6MjcsNjQ6ZSw3MTpyLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSxoKF8sWzIsNDFdLHs4Njp5fSksezcxOnIsODU6NTJ9LGgoZyxMKSxoKGosWzIsODBdLHs1Mzo1M30pLHsyNTo1NCwzODo1NiwzOTp4LDQzOjU3LDQ0OncsNDU6NTUsNDc6WzIsNTJdfSx7Mjg6NjAsNDM6NjEsNDQ6dyw0NzpbMiw1NF19LHsxMzo2MywxNTpjLDE4OlsxLDYyXX0saCh2LFsyLDg0XSx7NTc6NjR9KSx7MjY6NjUsNDc6SH0saChtLFsyLDU2XSx7MzA6Njd9KSxoKG0sWzIsNjJdLHszNTo2OH0pLGgoQyxbMiw0OF0sezIxOjY5fSksaCh2LFsyLDg4XSx7NjE6NzB9KSx7MjA6MjYsMzM6WzIsNzhdLDQ5OjcyLDUxOjcxLDYzOjI3LDY0OmUsNjg6NzMsNjk6NzQsNzA6NzUsNzE6Uyw3NzoyOCw3ODoyOSw3OTpzLDgwOnAsODE6biw4MjphLDgzOnUsODQ6aSw4NTozNn0saChSLFsyLDkyXSx7NjU6Nzd9KSx7NzE6WzEsNzhdfSxoKF8sWzIsNDBdLHs4Njp5fSksezIwOjI2LDQ5OjgwLDU0Ojc5LDU1OlsyLDgyXSw2MzoyNyw2NDplLDY4OjgxLDY5Ojc0LDcwOjc1LDcxOlMsNzc6MjgsNzg6MjksNzk6cyw4MDpwLDgxOm4sODI6YSw4Mzp1LDg0OmksODU6MzZ9LHsyNjo4Miw0NzpIfSx7NDc6WzIsNTNdfSxoKGwsZCx7NjozLDQ6ODN9KSx7NDc6WzIsMjBdfSx7MjA6ODQsNzE6ciw3NzoyOCw3ODoyOSw3OTpzLDgwOnAsODE6biw4MjphLDgzOnUsODQ6aSw4NTozNn0saChFLGQsezY6Myw0Ojg1fSksezI2Ojg2LDQ3Okh9LHs0NzpbMiw1NV19LGgobyxbMiwxMV0pLGgoUCxbMiw0N10pLHsyMDoyNiwzMzpbMiw4Nl0sNDk6ODgsNTg6ODcsNjM6MjcsNjQ6ZSw2ODo4OSw2OTo3NCw3MDo3NSw3MTpTLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSxoKG8sWzIsMjVdKSx7MjA6OTAsNzE6ciw3NzoyOCw3ODoyOSw3OTpzLDgwOnAsODE6biw4MjphLDgzOnUsODQ6aSw4NTozNn0saChNLFsyLDU4XSx7MjA6MjYsNjM6MjcsNzc6MjgsNzg6MjksODU6MzYsNjk6NzQsNzA6NzUsMzE6OTEsNDk6OTIsNjg6OTMsNjQ6ZSw3MTpTLDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppfSksaChNLFsyLDY0XSx7MjA6MjYsNjM6MjcsNzc6MjgsNzg6MjksODU6MzYsNjk6NzQsNzA6NzUsMzY6OTQsNDk6OTUsNjg6OTYsNjQ6ZSw3MTpTLDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppfSksezIwOjI2LDIyOjk3LDIzOlsyLDUwXSw0OTo5OCw2MzoyNyw2NDplLDY4Ojk5LDY5Ojc0LDcwOjc1LDcxOlMsNzc6MjgsNzg6MjksNzk6cyw4MDpwLDgxOm4sODI6YSw4Mzp1LDg0OmksODU6MzZ9LHsyMDoyNiwzMzpbMiw5MF0sNDk6MTAxLDYyOjEwMCw2MzoyNyw2NDplLDY4OjEwMiw2OTo3NCw3MDo3NSw3MTpTLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSx7MzM6WzEsMTAzXX0saCh2LFsyLDc3XSksezMzOlsyLDc5XX0saChbMjMsMzMsNTUsNjcsNzRdLFsyLDMwXSx7NzA6MTA0LDcxOlsxLDEwNV19KSxoKFYsWzIsOTZdKSxoKGcsTCx7NzI6R30pLHsyMDoyNiw0OToxMDgsNjM6MjcsNjQ6ZSw2NjoxMDcsNjc6WzIsOTRdLDY4OjEwOSw2OTo3NCw3MDo3NSw3MTpTLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSxoKGcsWzIsNDJdKSx7NTU6WzEsMTEwXX0saChqLFsyLDgxXSksezU1OlsyLDgzXX0saChvLFsyLDEzXSksezM4OjU2LDM5OngsNDM6NTcsNDQ6dyw0NToxMTIsNDY6MTExLDQ3OlsyLDc0XX0saChtLFsyLDY4XSx7NDA6MTEzfSksezQ3OlsyLDE4XX0saChvLFsyLDE0XSksezMzOlsxLDExNF19LGgodixbMiw4NV0pLHszMzpbMiw4N119LHszMzpbMSwxMTVdfSx7MzI6MTE2LDMzOlsyLDYwXSw3MzoxMTcsNzQ6S30saChtLFsyLDU3XSksaChNLFsyLDU5XSksezMzOlsyLDY2XSwzNzoxMTksNzM6MTIwLDc0Okt9LGgobSxbMiw2M10pLGgoTSxbMiw2NV0pLHsyMzpbMSwxMjFdfSxoKEMsWzIsNDldKSx7MjM6WzIsNTFdfSx7MzM6WzEsMTIyXX0saCh2LFsyLDg5XSksezMzOlsyLDkxXX0saChvLFsyLDIyXSksaChWLFsyLDk3XSksezcyOkd9LHsyMDoyNiw0OToxMjMsNjM6MjcsNjQ6ZSw3MTpyLDc3OjI4LDc4OjI5LDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppLDg1OjM2fSx7Njc6WzEsMTI0XX0saChSLFsyLDkzXSksezY3OlsyLDk1XX0saChvLFsyLDIzXSksezQ3OlsyLDE5XX0sezQ3OlsyLDc1XX0saChNLFsyLDcwXSx7MjA6MjYsNjM6MjcsNzc6MjgsNzg6MjksODU6MzYsNjk6NzQsNzA6NzUsNDE6MTI1LDQ5OjEyNiw2ODoxMjcsNjQ6ZSw3MTpTLDc5OnMsODA6cCw4MTpuLDgyOmEsODM6dSw4NDppfSksaChvLFsyLDI0XSksaChvLFsyLDIxXSksezMzOlsxLDEyOF19LHszMzpbMiw2MV19LHs3MTpbMSwxMzBdLDc1OjEyOX0sezMzOlsxLDEzMV19LHszMzpbMiw2N119LGgoUCxbMiwxMl0pLGgoRSxbMiwyNl0pLGgoVixbMiwzMV0pLGgoXyxbMiwyOV0pLHszMzpbMiw3Ml0sNDI6MTMyLDczOjEzMyw3NDpLfSxoKG0sWzIsNjldKSxoKE0sWzIsNzFdKSxoKGwsWzIsMTVdKSx7NzE6WzEsMTM1XSw3NjpbMSwxMzRdfSxoKFUsWzIsOThdKSxoKGIsWzIsMTZdKSx7MzM6WzEsMTM2XX0sezMzOlsyLDczXX0sezMzOlsyLDMyXX0saChVLFsyLDk5XSksaChsLFsyLDE3XSldLGRlZmF1bHRBY3Rpb25zOns0OlsyLDFdLDU1OlsyLDUzXSw1NzpbMiwyMF0sNjE6WzIsNTVdLDczOlsyLDc5XSw4MTpbMiw4M10sODU6WzIsMThdLDg5OlsyLDg3XSw5OTpbMiw1MV0sMTAyOlsyLDkxXSwxMDk6WzIsOTVdLDExMTpbMiwxOV0sMTEyOlsyLDc1XSwxMTc6WzIsNjFdLDEyMDpbMiw2N10sMTMzOlsyLDczXSwxMzQ6WzIsMzJdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKGssQil7aWYoQi5yZWNvdmVyYWJsZSl0aGlzLnRyYWNlKGspO2Vsc2V7dmFyIE89bmV3IEVycm9yKGspO3Rocm93IE8uaGFzaD1CLE99fSxwYXJzZTpmdW5jdGlvbihrKXt2YXIgQj10aGlzLE89WzBdLHE9W10sej1bbnVsbF0sQT1bXSxRPXRoaXMudGFibGUsRD1cIlwiLCQ9MCxvZT0wLEllPTAsZXQ9MixSZT0xLHR0PUEuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksWT1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLGllPXt5eTp7fX07Zm9yKHZhciBBZSBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LEFlKSYmKGllLnl5W0FlXT10aGlzLnl5W0FlXSk7WS5zZXRJbnB1dChrLGllLnl5KSxpZS55eS5sZXhlcj1ZLGllLnl5LnBhcnNlcj10aGlzLHR5cGVvZiBZLnl5bGxvYz5cInVcIiYmKFkueXlsbG9jPXt9KTt2YXIgRWU9WS55eWxsb2M7QS5wdXNoKEVlKTt2YXIgcnQ9WS5vcHRpb25zJiZZLm9wdGlvbnMucmFuZ2VzO3R5cGVvZiBpZS55eS5wYXJzZUVycm9yPT1cImZ1bmN0aW9uXCI/dGhpcy5wYXJzZUVycm9yPWllLnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Z1bmN0aW9uICR0KHRlKXtPLmxlbmd0aD1PLmxlbmd0aC0yKnRlLHoubGVuZ3RoPXoubGVuZ3RoLXRlLEEubGVuZ3RoPUEubGVuZ3RoLXRlfWU6dmFyIG50PWZ1bmN0aW9uKCl7dmFyIHRlO3JldHVybiB0ZT1ZLmxleCgpfHxSZSx0eXBlb2YgdGUhPVwibnVtYmVyXCImJih0ZT1CLnN5bWJvbHNfW3RlXXx8dGUpLHRlfTtmb3IodmFyIEosX2UsYWUsZWUsZXIsU2Usc2U9e30sZGUscmUscWUscGU7Oyl7aWYoYWU9T1tPLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW2FlXT9lZT10aGlzLmRlZmF1bHRBY3Rpb25zW2FlXTooKEo9PT1udWxsfHx0eXBlb2YgSj5cInVcIikmJihKPW50KCkpLGVlPVFbYWVdJiZRW2FlXVtKXSksdHlwZW9mIGVlPlwidVwifHwhZWUubGVuZ3RofHwhZWVbMF0pe3ZhciBDZT1cIlwiO3BlPVtdO2ZvcihkZSBpbiBRW2FlXSl0aGlzLnRlcm1pbmFsc19bZGVdJiZkZT5ldCYmcGUucHVzaChcIidcIit0aGlzLnRlcm1pbmFsc19bZGVdK1wiJ1wiKTtZLnNob3dQb3NpdGlvbj9DZT1cIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIrKCQrMSkrYDpcbmArWS5zaG93UG9zaXRpb24oKStgXG5FeHBlY3RpbmcgYCtwZS5qb2luKFwiLCBcIikrXCIsIGdvdCAnXCIrKHRoaXMudGVybWluYWxzX1tKXXx8SikrXCInXCI6Q2U9XCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiKygkKzEpK1wiOiBVbmV4cGVjdGVkIFwiKyhKPT1SZT9cImVuZCBvZiBpbnB1dFwiOlwiJ1wiKyh0aGlzLnRlcm1pbmFsc19bSl18fEopK1wiJ1wiKSx0aGlzLnBhcnNlRXJyb3IoQ2Use3RleHQ6WS5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bSl18fEosbGluZTpZLnl5bGluZW5vLGxvYzpFZSxleHBlY3RlZDpwZX0pfWlmKGVlWzBdaW5zdGFuY2VvZiBBcnJheSYmZWUubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6IFwiK2FlK1wiLCB0b2tlbjogXCIrSik7c3dpdGNoKGVlWzBdKXtjYXNlIDE6Ty5wdXNoKEopLHoucHVzaChZLnl5dGV4dCksQS5wdXNoKFkueXlsbG9jKSxPLnB1c2goZWVbMV0pLEo9bnVsbCxfZT8oSj1fZSxfZT1udWxsKToob2U9WS55eWxlbmcsRD1ZLnl5dGV4dCwkPVkueXlsaW5lbm8sRWU9WS55eWxsb2MsSWU+MCYmSWUtLSk7YnJlYWs7Y2FzZSAyOmlmKHJlPXRoaXMucHJvZHVjdGlvbnNfW2VlWzFdXVsxXSxzZS4kPXpbei5sZW5ndGgtcmVdLHNlLl8kPXtmaXJzdF9saW5lOkFbQS5sZW5ndGgtKHJlfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6QVtBLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOkFbQS5sZW5ndGgtKHJlfHwxKV0uZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOkFbQS5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LHJ0JiYoc2UuXyQucmFuZ2U9W0FbQS5sZW5ndGgtKHJlfHwxKV0ucmFuZ2VbMF0sQVtBLmxlbmd0aC0xXS5yYW5nZVsxXV0pLFNlPXRoaXMucGVyZm9ybUFjdGlvbi5hcHBseShzZSxbRCxvZSwkLGllLnl5LGVlWzFdLHosQV0uY29uY2F0KHR0KSksdHlwZW9mIFNlPFwidVwiKXJldHVybiBTZTtyZSYmKE89Ty5zbGljZSgwLC0xKnJlKjIpLHo9ei5zbGljZSgwLC0xKnJlKSxBPUEuc2xpY2UoMCwtMSpyZSkpLE8ucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1tlZVsxXV1bMF0pLHoucHVzaChzZS4kKSxBLnB1c2goc2UuXyQpLHFlPVFbT1tPLmxlbmd0aC0yXV1bT1tPLmxlbmd0aC0xXV0sTy5wdXNoKHFlKTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX0sVz1mdW5jdGlvbigpe3ZhciBOPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKEIsTyl7aWYodGhpcy55eS5wYXJzZXIpdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihCLE8pO2Vsc2UgdGhyb3cgbmV3IEVycm9yKEIpfSxzZXRJbnB1dDpmdW5jdGlvbihrLEIpe3JldHVybiB0aGlzLnl5PUJ8fHRoaXMueXl8fHt9LHRoaXMuX2lucHV0PWssdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD1cIlwiLHRoaXMuY29uZGl0aW9uU3RhY2s9W1wiSU5JVElBTFwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciBrPXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0Kz1rLHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz1rLHRoaXMubWF0Y2hlZCs9azt2YXIgQj1rLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtyZXR1cm4gQj8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksa30sdW5wdXQ6ZnVuY3Rpb24oayl7dmFyIEI9ay5sZW5ndGgsTz1rLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7dGhpcy5faW5wdXQ9ayt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtQiksdGhpcy5vZmZzZXQtPUI7dmFyIHE9dGhpcy5tYXRjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksTy5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPU8ubGVuZ3RoLTEpO3ZhciB6PXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpPPyhPLmxlbmd0aD09PXEubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStxW3EubGVuZ3RoLU8ubGVuZ3RoXS5sZW5ndGgtT1swXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLUJ9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1belswXSx6WzBdK3RoaXMueXlsZW5nLUJdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpdGhpcy5fYmFja3RyYWNrPSEwO2Vsc2UgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIisodGhpcy55eWxpbmVubysxKStgLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXG5gK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6XCJcIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pO3JldHVybiB0aGlzfSxsZXNzOmZ1bmN0aW9uKGspe3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShrKSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciBrPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4oay5sZW5ndGg+MjA/XCIuLi5cIjpcIlwiKStrLnN1YnN0cigtMjApLnJlcGxhY2UoL1xcbi9nLFwiXCIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIGs9dGhpcy5tYXRjaDtyZXR1cm4gay5sZW5ndGg8MjAmJihrKz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC1rLmxlbmd0aCkpLChrLnN1YnN0cigwLDIwKSsoay5sZW5ndGg+MjA/XCIuLi5cIjpcIlwiKSkucmVwbGFjZSgvXFxuL2csXCJcIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBrPXRoaXMucGFzdElucHV0KCksQj1uZXcgQXJyYXkoay5sZW5ndGgrMSkuam9pbihcIi1cIik7cmV0dXJuIGsrdGhpcy51cGNvbWluZ0lucHV0KCkrYFxuYCtCK1wiXlwifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKGssQil7dmFyIE8scSx6O2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJih6PXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHoueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSkscT1rWzBdLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKSxxJiYodGhpcy55eWxpbmVubys9cS5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpxP3FbcS5sZW5ndGgtMV0ubGVuZ3RoLXFbcS5sZW5ndGgtMV0ubWF0Y2goL1xccj9cXG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK2tbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9a1swXSx0aGlzLm1hdGNoKz1rWzBdLHRoaXMubWF0Y2hlcz1rLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKGtbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPWtbMF0sTz10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxCLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLE8pcmV0dXJuIE87aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIEEgaW4geil0aGlzW0FdPXpbQV07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKTt2YXIgayxCLE8scTt0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9XCJcIix0aGlzLm1hdGNoPVwiXCIpO2Zvcih2YXIgej10aGlzLl9jdXJyZW50UnVsZXMoKSxBPTA7QTx6Lmxlbmd0aDtBKyspaWYoTz10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3pbQV1dKSxPJiYoIUJ8fE9bMF0ubGVuZ3RoPkJbMF0ubGVuZ3RoKSl7aWYoQj1PLHE9QSx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZihrPXRoaXMudGVzdF9tYXRjaChPLHpbQV0pLGshPT0hMSlyZXR1cm4gaztpZih0aGlzLl9iYWNrdHJhY2spe0I9ITE7Y29udGludWV9ZWxzZSByZXR1cm4hMX1lbHNlIGlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gQj8oaz10aGlzLnRlc3RfbWF0Y2goQix6W3FdKSxrIT09ITE/azohMSk6dGhpcy5faW5wdXQ9PT1cIlwiP3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIisodGhpcy55eWxpbmVubysxKStgLiBVbnJlY29nbml6ZWQgdGV4dC5cbmArdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDpcIlwiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciBCPXRoaXMubmV4dCgpO3JldHVybiBCfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbihCKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goQil9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIEI9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gQj4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKEIpe3JldHVybiBCPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnMoQnx8MCksQj49MD90aGlzLmNvbmRpdGlvblN0YWNrW0JdOlwiSU5JVElBTFwifSxwdXNoU3RhdGU6ZnVuY3Rpb24oQil7dGhpcy5iZWdpbihCKX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6e30scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihCLE8scSx6KXtmdW5jdGlvbiBBKEQsJCl7cmV0dXJuIE8ueXl0ZXh0PU8ueXl0ZXh0LnN1YnN0cmluZyhELE8ueXlsZW5nLSQrRCl9dmFyIFE9ejtzd2l0Y2gocSl7Y2FzZSAwOmlmKE8ueXl0ZXh0LnNsaWNlKC0yKT09PVwiXFxcXFxcXFxcIj8oQSgwLDEpLHRoaXMuYmVnaW4oXCJtdVwiKSk6Ty55eXRleHQuc2xpY2UoLTEpPT09XCJcXFxcXCI/KEEoMCwxKSx0aGlzLmJlZ2luKFwiZW11XCIpKTp0aGlzLmJlZ2luKFwibXVcIiksTy55eXRleHQpcmV0dXJuIDE1O2JyZWFrO2Nhc2UgMTpyZXR1cm4gMTU7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTU7YnJlYWs7Y2FzZSAzOnJldHVybiB0aGlzLmJlZ2luKFwicmF3XCIpLDE1O2JyZWFrO2Nhc2UgNDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV09PT1cInJhd1wiPzE1OihBKDUsOSksMTgpO2Nhc2UgNTpyZXR1cm4gMTU7Y2FzZSA2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTQ7YnJlYWs7Y2FzZSA3OnJldHVybiA2NDtjYXNlIDg6cmV0dXJuIDY3O2Nhc2UgOTpyZXR1cm4gMTk7Y2FzZSAxMDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oXCJyYXdcIiksMjM7YnJlYWs7Y2FzZSAxMTpyZXR1cm4gNTY7Y2FzZSAxMjpyZXR1cm4gNjA7Y2FzZSAxMzpyZXR1cm4gMjk7Y2FzZSAxNDpyZXR1cm4gNDc7Y2FzZSAxNTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDQ0O2JyZWFrO2Nhc2UgMTY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw0NDticmVhaztjYXNlIDE3OnJldHVybiAzNDtjYXNlIDE4OnJldHVybiAzOTtjYXNlIDE5OnJldHVybiA1MjtjYXNlIDIwOnJldHVybiA0ODtjYXNlIDIxOnRoaXMudW5wdXQoTy55eXRleHQpLHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKFwiY29tXCIpO2JyZWFrO2Nhc2UgMjI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwxNDticmVhaztjYXNlIDIzOnJldHVybiA0ODtjYXNlIDI0OnJldHVybiA3MjtjYXNlIDI1OnJldHVybiA3MTtjYXNlIDI2OnJldHVybiA3MTtjYXNlIDI3OnJldHVybiA4NjtjYXNlIDI4OmJyZWFrO2Nhc2UgMjk6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw1NTticmVhaztjYXNlIDMwOnJldHVybiB0aGlzLnBvcFN0YXRlKCksMzM7YnJlYWs7Y2FzZSAzMTpyZXR1cm4gTy55eXRleHQ9QSgxLDIpLnJlcGxhY2UoL1xcXFxcIi9nLCdcIicpLDc5O2JyZWFrO2Nhc2UgMzI6cmV0dXJuIE8ueXl0ZXh0PUEoMSwyKS5yZXBsYWNlKC9cXFxcJy9nLFwiJ1wiKSw3OTticmVhaztjYXNlIDMzOnJldHVybiA4NDtjYXNlIDM0OnJldHVybiA4MTtjYXNlIDM1OnJldHVybiA4MTtjYXNlIDM2OnJldHVybiA4MjtjYXNlIDM3OnJldHVybiA4MztjYXNlIDM4OnJldHVybiA4MDtjYXNlIDM5OnJldHVybiA3NDtjYXNlIDQwOnJldHVybiA3NjtjYXNlIDQxOnJldHVybiA3MTtjYXNlIDQyOnJldHVybiBPLnl5dGV4dD1PLnl5dGV4dC5yZXBsYWNlKC9cXFxcKFtcXFxcXFxdXSkvZyxcIiQxXCIpLDcxO2JyZWFrO2Nhc2UgNDM6cmV0dXJuXCJJTlZBTElEXCI7Y2FzZSA0NDpyZXR1cm4gNX19LHJ1bGVzOlsvXig/OlteXFx4MDBdKj8oPz0oXFx7XFx7KSkpLywvXig/OlteXFx4MDBdKykvLC9eKD86W15cXHgwMF17Mix9Pyg/PShcXHtcXHt8XFxcXFxce1xce3xcXFxcXFxcXFxce1xce3wkKSkpLywvXig/Olxce1xce1xce1xceyg/PVteL10pKS8sL14oPzpcXHtcXHtcXHtcXHtcXC9bXlxccyFcIiMlLSxcXC5cXC87LT5AXFxbLVxcXmBcXHstfl0rKD89Wz19XFxzXFwvLl0pXFx9XFx9XFx9XFx9KS8sL14oPzpbXlxceDAwXSs/KD89KFxce1xce1xce1xceykpKS8sL14oPzpbXFxzXFxTXSo/LS0ofik/XFx9XFx9KS8sL14oPzpcXCgpLywvXig/OlxcKSkvLC9eKD86XFx7XFx7XFx7XFx7KS8sL14oPzpcXH1cXH1cXH1cXH0pLywvXig/Olxce1xceyh+KT8+KS8sL14oPzpcXHtcXHsofik/Iz4pLywvXig/Olxce1xceyh+KT8jXFwqPykvLC9eKD86XFx7XFx7KH4pP1xcLykvLC9eKD86XFx7XFx7KH4pP1xcXlxccyoofik/XFx9XFx9KS8sL14oPzpcXHtcXHsofik/XFxzKmVsc2VcXHMqKH4pP1xcfVxcfSkvLC9eKD86XFx7XFx7KH4pP1xcXikvLC9eKD86XFx7XFx7KH4pP1xccyplbHNlXFxiKS8sL14oPzpcXHtcXHsofik/XFx7KS8sL14oPzpcXHtcXHsofik/JikvLC9eKD86XFx7XFx7KH4pPyEtLSkvLC9eKD86XFx7XFx7KH4pPyFbXFxzXFxTXSo/XFx9XFx9KS8sL14oPzpcXHtcXHsofik/XFwqPykvLC9eKD86PSkvLC9eKD86XFwuXFwuKS8sL14oPzpcXC4oPz0oWz1+fVxcc1xcLy4pfF0pKSkvLC9eKD86W1xcLy5dKS8sL14oPzpcXHMrKS8sL14oPzpcXH0ofik/XFx9XFx9KS8sL14oPzoofik/XFx9XFx9KS8sL14oPzpcIihcXFxcW1wiXXxbXlwiXSkqXCIpLywvXig/OicoXFxcXFsnXXxbXiddKSonKS8sL14oPzpAKS8sL14oPzp0cnVlKD89KFt+fVxccyldKSkpLywvXig/OmZhbHNlKD89KFt+fVxccyldKSkpLywvXig/OnVuZGVmaW5lZCg/PShbfn1cXHMpXSkpKS8sL14oPzpudWxsKD89KFt+fVxccyldKSkpLywvXig/Oi0/WzAtOV0rKD86XFwuWzAtOV0rKT8oPz0oW359XFxzKV0pKSkvLC9eKD86YXNcXHMrXFx8KS8sL14oPzpcXHwpLywvXig/OihbXlxccyFcIiMlLSxcXC5cXC87LT5AXFxbLVxcXmBcXHstfl0rKD89KFs9fn1cXHNcXC8uKXxdKSkpKS8sL14oPzpcXFsoXFxcXFxcXXxbXlxcXV0pKlxcXSkvLC9eKD86LikvLC9eKD86JCkvXSxjb25kaXRpb25zOnttdTp7cnVsZXM6WzcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0XSxpbmNsdXNpdmU6ITF9LGVtdTp7cnVsZXM6WzJdLGluY2x1c2l2ZTohMX0sY29tOntydWxlczpbNl0saW5jbHVzaXZlOiExfSxyYXc6e3J1bGVzOlszLDQsNV0saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCwxLDQ0XSxpbmNsdXNpdmU6ITB9fX07cmV0dXJuIE59KCk7Wi5sZXhlcj1XO2Z1bmN0aW9uIFQoKXt0aGlzLnl5PXt9fXJldHVybiBULnByb3RvdHlwZT1aLFouUGFyc2VyPVQsbmV3IFR9KCk7dC5kZWZhdWx0PWZ9fSksTnQ9SSh7XCJub2RlX21vZHVsZXMvQGhhbmRsZWJhcnMvcGFyc2VyL2Rpc3QvY2pzL3ByaW50ZXIuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCk7dmFyIGY9dCYmdC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKG8pe3JldHVybiBvJiZvLl9fZXNNb2R1bGU/bzp7ZGVmYXVsdDpvfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QcmludFZpc2l0b3I9dC5wcmludD12b2lkIDA7dmFyIGg9ZihPZSgpKTtmdW5jdGlvbiBkKG8pe3JldHVybiBuZXcgYygpLmFjY2VwdChvKX10LnByaW50PWQ7ZnVuY3Rpb24gYygpe3RoaXMucGFkZGluZz0wfXQuUHJpbnRWaXNpdG9yPWMsYy5wcm90b3R5cGU9bmV3IGguZGVmYXVsdCxjLnByb3RvdHlwZS5wYWQ9ZnVuY3Rpb24obyl7Zm9yKHZhciBlPVwiXCIscj0wLHM9dGhpcy5wYWRkaW5nO3I8cztyKyspZSs9XCIgIFwiO3JldHVybiBlKz1vK2BcbmAsZX0sYy5wcm90b3R5cGUuUHJvZ3JhbT1mdW5jdGlvbihvKXt2YXIgZT1cIlwiLHI9by5ib2R5LHMscDtpZihvLmJsb2NrUGFyYW1zKXt2YXIgbj1cIkJMT0NLIFBBUkFNUzogW1wiO2ZvcihzPTAscD1vLmJsb2NrUGFyYW1zLmxlbmd0aDtzPHA7cysrKW4rPVwiIFwiK28uYmxvY2tQYXJhbXNbc107bis9XCIgXVwiLGUrPXRoaXMucGFkKG4pfWZvcihzPTAscD1yLmxlbmd0aDtzPHA7cysrKWUrPXRoaXMuYWNjZXB0KHJbc10pO3JldHVybiB0aGlzLnBhZGRpbmctLSxlfSxjLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudD1mdW5jdGlvbihvKXtyZXR1cm4gdGhpcy5wYWQoXCJ7eyBcIit0aGlzLlN1YkV4cHJlc3Npb24obykrXCIgfX1cIil9LGMucHJvdG90eXBlLkRlY29yYXRvcj1mdW5jdGlvbihvKXtyZXR1cm4gdGhpcy5wYWQoXCJ7eyBESVJFQ1RJVkUgXCIrdGhpcy5TdWJFeHByZXNzaW9uKG8pK1wiIH19XCIpfSxjLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudD1jLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jaz1mdW5jdGlvbihvKXt2YXIgZT1cIlwiO3JldHVybiBlKz10aGlzLnBhZCgoby50eXBlPT09XCJEZWNvcmF0b3JCbG9ja1wiP1wiRElSRUNUSVZFIFwiOlwiXCIpK1wiQkxPQ0s6XCIpLHRoaXMucGFkZGluZysrLGUrPXRoaXMucGFkKHRoaXMuU3ViRXhwcmVzc2lvbihvKSksby5wcm9ncmFtJiYoZSs9dGhpcy5wYWQoXCJQUk9HUkFNOlwiKSx0aGlzLnBhZGRpbmcrKyxlKz10aGlzLmFjY2VwdChvLnByb2dyYW0pLHRoaXMucGFkZGluZy0tKSxvLmludmVyc2UmJihvLnByb2dyYW0mJnRoaXMucGFkZGluZysrLGUrPXRoaXMucGFkKFwie3tefX1cIiksdGhpcy5wYWRkaW5nKyssZSs9dGhpcy5hY2NlcHQoby5pbnZlcnNlKSx0aGlzLnBhZGRpbmctLSxvLnByb2dyYW0mJnRoaXMucGFkZGluZy0tKSx0aGlzLnBhZGRpbmctLSxlfSxjLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50PWZ1bmN0aW9uKG8pe3ZhciBlPVwiUEFSVElBTDpcIitvLm5hbWUub3JpZ2luYWw7cmV0dXJuIG8ucGFyYW1zWzBdJiYoZSs9XCIgXCIrdGhpcy5hY2NlcHQoby5wYXJhbXNbMF0pKSxvLmhhc2gmJihlKz1cIiBcIit0aGlzLmFjY2VwdChvLmhhc2gpKSx0aGlzLnBhZChcInt7PiBcIitlK1wiIH19XCIpfSxjLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ9ZnVuY3Rpb24obyl7dmFyIGU9XCJQQVJUSUFMIEJMT0NLOlwiK28ubmFtZS5vcmlnaW5hbDtyZXR1cm4gby5wYXJhbXNbMF0mJihlKz1cIiBcIit0aGlzLmFjY2VwdChvLnBhcmFtc1swXSkpLG8uaGFzaCYmKGUrPVwiIFwiK3RoaXMuYWNjZXB0KG8uaGFzaCkpLGUrPVwiIFwiK3RoaXMucGFkKFwiUFJPR1JBTTpcIiksdGhpcy5wYWRkaW5nKyssZSs9dGhpcy5hY2NlcHQoby5wcm9ncmFtKSx0aGlzLnBhZGRpbmctLSx0aGlzLnBhZChcInt7PiBcIitlK1wiIH19XCIpfSxjLnByb3RvdHlwZS5Db250ZW50U3RhdGVtZW50PWZ1bmN0aW9uKG8pe3JldHVybiB0aGlzLnBhZChcIkNPTlRFTlRbICdcIitvLnZhbHVlK1wiJyBdXCIpfSxjLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50PWZ1bmN0aW9uKG8pe3JldHVybiB0aGlzLnBhZChcInt7ISAnXCIrby52YWx1ZStcIicgfX1cIil9LGMucHJvdG90eXBlLlN1YkV4cHJlc3Npb249ZnVuY3Rpb24obyl7Zm9yKHZhciBlPW8ucGFyYW1zLHI9W10scyxwPTAsbj1lLmxlbmd0aDtwPG47cCsrKXIucHVzaCh0aGlzLmFjY2VwdChlW3BdKSk7cmV0dXJuIGU9XCJbXCIrci5qb2luKFwiLCBcIikrXCJdXCIscz1vLmhhc2g/XCIgXCIrdGhpcy5hY2NlcHQoby5oYXNoKTpcIlwiLHRoaXMuYWNjZXB0KG8ucGF0aCkrXCIgXCIrZStzfSxjLnByb3RvdHlwZS5QYXRoRXhwcmVzc2lvbj1mdW5jdGlvbihvKXt2YXIgZT1vLnBhcnRzLmpvaW4oXCIvXCIpO3JldHVybihvLmRhdGE/XCJAXCI6XCJcIikrXCJQQVRIOlwiK2V9LGMucHJvdG90eXBlLlN0cmluZ0xpdGVyYWw9ZnVuY3Rpb24obyl7cmV0dXJuJ1wiJytvLnZhbHVlKydcIid9LGMucHJvdG90eXBlLk51bWJlckxpdGVyYWw9ZnVuY3Rpb24obyl7cmV0dXJuXCJOVU1CRVJ7XCIrby52YWx1ZStcIn1cIn0sYy5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWw9ZnVuY3Rpb24obyl7cmV0dXJuXCJCT09MRUFOe1wiK28udmFsdWUrXCJ9XCJ9LGMucHJvdG90eXBlLlVuZGVmaW5lZExpdGVyYWw9ZnVuY3Rpb24oKXtyZXR1cm5cIlVOREVGSU5FRFwifSxjLnByb3RvdHlwZS5OdWxsTGl0ZXJhbD1mdW5jdGlvbigpe3JldHVyblwiTlVMTFwifSxjLnByb3RvdHlwZS5IYXNoPWZ1bmN0aW9uKG8pe2Zvcih2YXIgZT1vLnBhaXJzLHI9W10scz0wLHA9ZS5sZW5ndGg7czxwO3MrKylyLnB1c2godGhpcy5hY2NlcHQoZVtzXSkpO3JldHVyblwiSEFTSHtcIityLmpvaW4oXCIsIFwiKStcIn1cIn0sYy5wcm90b3R5cGUuSGFzaFBhaXI9ZnVuY3Rpb24obyl7cmV0dXJuIG8ua2V5K1wiPVwiK3RoaXMuYWNjZXB0KG8udmFsdWUpfX19KSxMdD1JKHtcIm5vZGVfbW9kdWxlcy9AaGFuZGxlYmFycy9wYXJzZXIvZGlzdC9janMvaGVscGVycy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKTt2YXIgZj10JiZ0Ll9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24obCl7cmV0dXJuIGwmJmwuX19lc01vZHVsZT9sOntkZWZhdWx0Omx9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnByZXBhcmVQYXJ0aWFsQmxvY2s9dC5wcmVwYXJlUHJvZ3JhbT10LnByZXBhcmVCbG9jaz10LnByZXBhcmVSYXdCbG9jaz10LnByZXBhcmVNdXN0YWNoZT10LnByZXBhcmVQYXRoPXQuc3RyaXBDb21tZW50PXQuc3RyaXBGbGFncz10LmlkPXQuU291cmNlTG9jYXRpb249dm9pZCAwO3ZhciBoPWYoQmUoKSk7ZnVuY3Rpb24gZChsLGIpe2lmKGI9Yi5wYXRoP2IucGF0aC5vcmlnaW5hbDpiLGwucGF0aC5vcmlnaW5hbCE9PWIpe3ZhciBQPXtsb2M6bC5wYXRoLmxvY307dGhyb3cgbmV3IGguZGVmYXVsdChsLnBhdGgub3JpZ2luYWwrXCIgZG9lc24ndCBtYXRjaCBcIitiLFApfX1mdW5jdGlvbiBjKGwsYil7dGhpcy5zb3VyY2U9bCx0aGlzLnN0YXJ0PXtsaW5lOmIuZmlyc3RfbGluZSxjb2x1bW46Yi5maXJzdF9jb2x1bW59LHRoaXMuZW5kPXtsaW5lOmIubGFzdF9saW5lLGNvbHVtbjpiLmxhc3RfY29sdW1ufX10LlNvdXJjZUxvY2F0aW9uPWM7ZnVuY3Rpb24gbyhsKXtyZXR1cm4vXlxcWy4qXFxdJC8udGVzdChsKT9sLnN1YnN0cmluZygxLGwubGVuZ3RoLTEpOmx9dC5pZD1vO2Z1bmN0aW9uIGUobCxiKXtyZXR1cm57b3BlbjpsLmNoYXJBdCgyKT09PVwiflwiLGNsb3NlOmIuY2hhckF0KGIubGVuZ3RoLTMpPT09XCJ+XCJ9fXQuc3RyaXBGbGFncz1lO2Z1bmN0aW9uIHIobCl7cmV0dXJuIGwucmVwbGFjZSgvXlxce1xce34/IS0/LT8vLFwiXCIpLnJlcGxhY2UoLy0/LT9+P1xcfVxcfSQvLFwiXCIpfXQuc3RyaXBDb21tZW50PXI7ZnVuY3Rpb24gcyhsLGIsUCl7UD10aGlzLmxvY0luZm8oUCk7Zm9yKHZhciBFPWw/XCJAXCI6XCJcIix2PVtdLF89MCx5PTAsZz1iLmxlbmd0aDt5PGc7eSsrKXt2YXIgTD1iW3ldLnBhcnQsaj1iW3ldLm9yaWdpbmFsIT09TDtpZihFKz0oYlt5XS5zZXBhcmF0b3J8fFwiXCIpK0wsIWomJihMPT09XCIuLlwifHxMPT09XCIuXCJ8fEw9PT1cInRoaXNcIikpe2lmKHYubGVuZ3RoPjApdGhyb3cgbmV3IGguZGVmYXVsdChcIkludmFsaWQgcGF0aDogXCIrRSx7bG9jOlB9KTtMPT09XCIuLlwiJiZfKyt9ZWxzZSB2LnB1c2goTCl9cmV0dXJue3R5cGU6XCJQYXRoRXhwcmVzc2lvblwiLGRhdGE6bCxkZXB0aDpfLHBhcnRzOnYsb3JpZ2luYWw6RSxsb2M6UH19dC5wcmVwYXJlUGF0aD1zO2Z1bmN0aW9uIHAobCxiLFAsRSx2LF8pe3ZhciB5PUUuY2hhckF0KDMpfHxFLmNoYXJBdCgyKSxnPXkhPT1cIntcIiYmeSE9PVwiJlwiLEw9L1xcKi8udGVzdChFKTtyZXR1cm57dHlwZTpMP1wiRGVjb3JhdG9yXCI6XCJNdXN0YWNoZVN0YXRlbWVudFwiLHBhdGg6bCxwYXJhbXM6YixoYXNoOlAsZXNjYXBlZDpnLHN0cmlwOnYsbG9jOnRoaXMubG9jSW5mbyhfKX19dC5wcmVwYXJlTXVzdGFjaGU9cDtmdW5jdGlvbiBuKGwsYixQLEUpe2QobCxQKSxFPXRoaXMubG9jSW5mbyhFKTt2YXIgdj17dHlwZTpcIlByb2dyYW1cIixib2R5OmIsc3RyaXA6e30sbG9jOkV9O3JldHVybnt0eXBlOlwiQmxvY2tTdGF0ZW1lbnRcIixwYXRoOmwucGF0aCxwYXJhbXM6bC5wYXJhbXMsaGFzaDpsLmhhc2gscHJvZ3JhbTp2LG9wZW5TdHJpcDp7fSxpbnZlcnNlU3RyaXA6e30sY2xvc2VTdHJpcDp7fSxsb2M6RX19dC5wcmVwYXJlUmF3QmxvY2s9bjtmdW5jdGlvbiBhKGwsYixQLEUsdixfKXtFJiZFLnBhdGgmJmQobCxFKTt2YXIgeT0vXFwqLy50ZXN0KGwub3Blbik7Yi5ibG9ja1BhcmFtcz1sLmJsb2NrUGFyYW1zO3ZhciBnLEw7aWYoUCl7aWYoeSl0aHJvdyBuZXcgaC5kZWZhdWx0KFwiVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvclwiLFApO1AuY2hhaW4mJihQLnByb2dyYW0uYm9keVswXS5jbG9zZVN0cmlwPUUuc3RyaXApLEw9UC5zdHJpcCxnPVAucHJvZ3JhbX1yZXR1cm4gdiYmKHY9ZyxnPWIsYj12KSx7dHlwZTp5P1wiRGVjb3JhdG9yQmxvY2tcIjpcIkJsb2NrU3RhdGVtZW50XCIscGF0aDpsLnBhdGgscGFyYW1zOmwucGFyYW1zLGhhc2g6bC5oYXNoLHByb2dyYW06YixpbnZlcnNlOmcsb3BlblN0cmlwOmwuc3RyaXAsaW52ZXJzZVN0cmlwOkwsY2xvc2VTdHJpcDpFJiZFLnN0cmlwLGxvYzp0aGlzLmxvY0luZm8oXyl9fXQucHJlcGFyZUJsb2NrPWE7ZnVuY3Rpb24gdShsLGIpe2lmKCFiJiZsLmxlbmd0aCl7dmFyIFA9bFswXS5sb2MsRT1sW2wubGVuZ3RoLTFdLmxvYztQJiZFJiYoYj17c291cmNlOlAuc291cmNlLHN0YXJ0OntsaW5lOlAuc3RhcnQubGluZSxjb2x1bW46UC5zdGFydC5jb2x1bW59LGVuZDp7bGluZTpFLmVuZC5saW5lLGNvbHVtbjpFLmVuZC5jb2x1bW59fSl9cmV0dXJue3R5cGU6XCJQcm9ncmFtXCIsYm9keTpsLHN0cmlwOnt9LGxvYzpifX10LnByZXBhcmVQcm9ncmFtPXU7ZnVuY3Rpb24gaShsLGIsUCxFKXtyZXR1cm4gZChsLFApLHt0eXBlOlwiUGFydGlhbEJsb2NrU3RhdGVtZW50XCIsbmFtZTpsLnBhdGgscGFyYW1zOmwucGFyYW1zLGhhc2g6bC5oYXNoLHByb2dyYW06YixvcGVuU3RyaXA6bC5zdHJpcCxjbG9zZVN0cmlwOlAmJlAuc3RyaXAsbG9jOnRoaXMubG9jSW5mbyhFKX19dC5wcmVwYXJlUGFydGlhbEJsb2NrPWl9fSksRnQ9SSh7XCJub2RlX21vZHVsZXMvQGhhbmRsZWJhcnMvcGFyc2VyL2Rpc3QvY2pzL3BhcnNlLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpO3ZhciBmPXQmJnQuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbih1LGksbCxiKXtiPT09dm9pZCAwJiYoYj1sKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodSxiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpW2xdfX0pfTpmdW5jdGlvbih1LGksbCxiKXtiPT09dm9pZCAwJiYoYj1sKSx1W2JdPWlbbF19KSxoPXQmJnQuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbih1LGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOml9KX06ZnVuY3Rpb24odSxpKXt1LmRlZmF1bHQ9aX0pLGQ9dCYmdC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHUpe2lmKHUmJnUuX19lc01vZHVsZSlyZXR1cm4gdTt2YXIgaT17fTtpZih1IT1udWxsKWZvcih2YXIgbCBpbiB1KWwhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUsbCkmJmYoaSx1LGwpO3JldHVybiBoKGksdSksaX0sYz10JiZ0Ll9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24odSl7cmV0dXJuIHUmJnUuX19lc01vZHVsZT91OntkZWZhdWx0OnV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnBhcnNlPXQucGFyc2VXaXRob3V0UHJvY2Vzc2luZz12b2lkIDA7dmFyIG89YyhHZSgpKSxlPWMoemUoKSkscj1kKEx0KCkpLHM9e307Zm9yKHAgaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixwKSYmKHNbcF09cltwXSk7dmFyIHA7ZnVuY3Rpb24gbih1LGkpe2lmKHUudHlwZT09PVwiUHJvZ3JhbVwiKXJldHVybiB1O28uZGVmYXVsdC55eT1zLG8uZGVmYXVsdC55eS5sb2NJbmZvPWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgci5Tb3VyY2VMb2NhdGlvbihpJiZpLnNyY05hbWUsYil9O3ZhciBsPW8uZGVmYXVsdC5wYXJzZSh1KTtyZXR1cm4gbH10LnBhcnNlV2l0aG91dFByb2Nlc3Npbmc9bjtmdW5jdGlvbiBhKHUsaSl7dmFyIGw9bih1LGkpLGI9bmV3IGUuZGVmYXVsdChpKTtyZXR1cm4gYi5hY2NlcHQobCl9dC5wYXJzZT1hfX0pLEl0PUkoe1wibm9kZV9tb2R1bGVzL0BoYW5kbGViYXJzL3BhcnNlci9kaXN0L2Nqcy9pbmRleC5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKTt2YXIgZj10JiZ0Ll9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24ocyl7cmV0dXJuIHMmJnMuX19lc01vZHVsZT9zOntkZWZhdWx0OnN9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnBhcnNlV2l0aG91dFByb2Nlc3Npbmc9dC5wYXJzZT10LlByaW50VmlzaXRvcj10LnByaW50PXQuRXhjZXB0aW9uPXQucGFyc2VyPXQuV2hpdGVzcGFjZUNvbnRyb2w9dC5WaXNpdG9yPXZvaWQgMDt2YXIgaD1PZSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiVmlzaXRvclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmKGgpLmRlZmF1bHR9fSk7dmFyIGQ9emUoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIldoaXRlc3BhY2VDb250cm9sXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYoZCkuZGVmYXVsdH19KTt2YXIgYz1HZSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicGFyc2VyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYoYykuZGVmYXVsdH19KTt2YXIgbz1CZSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiRXhjZXB0aW9uXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYobykuZGVmYXVsdH19KTt2YXIgZT1OdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJpbnRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5wcmludH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIlByaW50VmlzaXRvclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlByaW50VmlzaXRvcn19KTt2YXIgcj1GdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicGFyc2VcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInBhcnNlV2l0aG91dFByb2Nlc3NpbmdcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJzZVdpdGhvdXRQcm9jZXNzaW5nfX0pfX0pLEtlPUkoe1wibm9kZV9tb2R1bGVzL3NpbXBsZS1odG1sLXRva2VuaXplci9kaXN0L3NpbXBsZS1odG1sLXRva2VuaXplci5qc1wiKHQsZil7RigpLGZ1bmN0aW9uKGgsZCl7dHlwZW9mIHQ9PVwib2JqZWN0XCImJnR5cGVvZiBmPFwidVwiP2QodCk6dHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kP2RlZmluZShbXCJleHBvcnRzXCJdLGQpOmQoaC5IVE1MNVRva2VuaXplcj17fSl9KHQsZnVuY3Rpb24oaCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGQ9e0FhY3V0ZTpcIlxceEMxXCIsYWFjdXRlOlwiXFx4RTFcIixBYnJldmU6XCJcXHUwMTAyXCIsYWJyZXZlOlwiXFx1MDEwM1wiLGFjOlwiXFx1MjIzRVwiLGFjZDpcIlxcdTIyM0ZcIixhY0U6XCJcXHUyMjNFXFx1MDMzM1wiLEFjaXJjOlwiXFx4QzJcIixhY2lyYzpcIlxceEUyXCIsYWN1dGU6XCJcXHhCNFwiLEFjeTpcIlxcdTA0MTBcIixhY3k6XCJcXHUwNDMwXCIsQUVsaWc6XCJcXHhDNlwiLGFlbGlnOlwiXFx4RTZcIixhZjpcIlxcdTIwNjFcIixBZnI6XCJcXHV7MUQ1MDR9XCIsYWZyOlwiXFx1ezFENTFFfVwiLEFncmF2ZTpcIlxceEMwXCIsYWdyYXZlOlwiXFx4RTBcIixhbGVmc3ltOlwiXFx1MjEzNVwiLGFsZXBoOlwiXFx1MjEzNVwiLEFscGhhOlwiXFx1MDM5MVwiLGFscGhhOlwiXFx1MDNCMVwiLEFtYWNyOlwiXFx1MDEwMFwiLGFtYWNyOlwiXFx1MDEwMVwiLGFtYWxnOlwiXFx1MkEzRlwiLGFtcDpcIiZcIixBTVA6XCImXCIsYW5kYW5kOlwiXFx1MkE1NVwiLEFuZDpcIlxcdTJBNTNcIixhbmQ6XCJcXHUyMjI3XCIsYW5kZDpcIlxcdTJBNUNcIixhbmRzbG9wZTpcIlxcdTJBNThcIixhbmR2OlwiXFx1MkE1QVwiLGFuZzpcIlxcdTIyMjBcIixhbmdlOlwiXFx1MjlBNFwiLGFuZ2xlOlwiXFx1MjIyMFwiLGFuZ21zZGFhOlwiXFx1MjlBOFwiLGFuZ21zZGFiOlwiXFx1MjlBOVwiLGFuZ21zZGFjOlwiXFx1MjlBQVwiLGFuZ21zZGFkOlwiXFx1MjlBQlwiLGFuZ21zZGFlOlwiXFx1MjlBQ1wiLGFuZ21zZGFmOlwiXFx1MjlBRFwiLGFuZ21zZGFnOlwiXFx1MjlBRVwiLGFuZ21zZGFoOlwiXFx1MjlBRlwiLGFuZ21zZDpcIlxcdTIyMjFcIixhbmdydDpcIlxcdTIyMUZcIixhbmdydHZiOlwiXFx1MjJCRVwiLGFuZ3J0dmJkOlwiXFx1Mjk5RFwiLGFuZ3NwaDpcIlxcdTIyMjJcIixhbmdzdDpcIlxceEM1XCIsYW5nemFycjpcIlxcdTIzN0NcIixBb2dvbjpcIlxcdTAxMDRcIixhb2dvbjpcIlxcdTAxMDVcIixBb3BmOlwiXFx1ezFENTM4fVwiLGFvcGY6XCJcXHV7MUQ1NTJ9XCIsYXBhY2lyOlwiXFx1MkE2RlwiLGFwOlwiXFx1MjI0OFwiLGFwRTpcIlxcdTJBNzBcIixhcGU6XCJcXHUyMjRBXCIsYXBpZDpcIlxcdTIyNEJcIixhcG9zOlwiJ1wiLEFwcGx5RnVuY3Rpb246XCJcXHUyMDYxXCIsYXBwcm94OlwiXFx1MjI0OFwiLGFwcHJveGVxOlwiXFx1MjI0QVwiLEFyaW5nOlwiXFx4QzVcIixhcmluZzpcIlxceEU1XCIsQXNjcjpcIlxcdXsxRDQ5Q31cIixhc2NyOlwiXFx1ezFENEI2fVwiLEFzc2lnbjpcIlxcdTIyNTRcIixhc3Q6XCIqXCIsYXN5bXA6XCJcXHUyMjQ4XCIsYXN5bXBlcTpcIlxcdTIyNERcIixBdGlsZGU6XCJcXHhDM1wiLGF0aWxkZTpcIlxceEUzXCIsQXVtbDpcIlxceEM0XCIsYXVtbDpcIlxceEU0XCIsYXdjb25pbnQ6XCJcXHUyMjMzXCIsYXdpbnQ6XCJcXHUyQTExXCIsYmFja2Nvbmc6XCJcXHUyMjRDXCIsYmFja2Vwc2lsb246XCJcXHUwM0Y2XCIsYmFja3ByaW1lOlwiXFx1MjAzNVwiLGJhY2tzaW06XCJcXHUyMjNEXCIsYmFja3NpbWVxOlwiXFx1MjJDRFwiLEJhY2tzbGFzaDpcIlxcdTIyMTZcIixCYXJ2OlwiXFx1MkFFN1wiLGJhcnZlZTpcIlxcdTIyQkRcIixiYXJ3ZWQ6XCJcXHUyMzA1XCIsQmFyd2VkOlwiXFx1MjMwNlwiLGJhcndlZGdlOlwiXFx1MjMwNVwiLGJicms6XCJcXHUyM0I1XCIsYmJya3Ricms6XCJcXHUyM0I2XCIsYmNvbmc6XCJcXHUyMjRDXCIsQmN5OlwiXFx1MDQxMVwiLGJjeTpcIlxcdTA0MzFcIixiZHF1bzpcIlxcdTIwMUVcIixiZWNhdXM6XCJcXHUyMjM1XCIsYmVjYXVzZTpcIlxcdTIyMzVcIixCZWNhdXNlOlwiXFx1MjIzNVwiLGJlbXB0eXY6XCJcXHUyOUIwXCIsYmVwc2k6XCJcXHUwM0Y2XCIsYmVybm91OlwiXFx1MjEyQ1wiLEJlcm5vdWxsaXM6XCJcXHUyMTJDXCIsQmV0YTpcIlxcdTAzOTJcIixiZXRhOlwiXFx1MDNCMlwiLGJldGg6XCJcXHUyMTM2XCIsYmV0d2VlbjpcIlxcdTIyNkNcIixCZnI6XCJcXHV7MUQ1MDV9XCIsYmZyOlwiXFx1ezFENTFGfVwiLGJpZ2NhcDpcIlxcdTIyQzJcIixiaWdjaXJjOlwiXFx1MjVFRlwiLGJpZ2N1cDpcIlxcdTIyQzNcIixiaWdvZG90OlwiXFx1MkEwMFwiLGJpZ29wbHVzOlwiXFx1MkEwMVwiLGJpZ290aW1lczpcIlxcdTJBMDJcIixiaWdzcWN1cDpcIlxcdTJBMDZcIixiaWdzdGFyOlwiXFx1MjYwNVwiLGJpZ3RyaWFuZ2xlZG93bjpcIlxcdTI1QkRcIixiaWd0cmlhbmdsZXVwOlwiXFx1MjVCM1wiLGJpZ3VwbHVzOlwiXFx1MkEwNFwiLGJpZ3ZlZTpcIlxcdTIyQzFcIixiaWd3ZWRnZTpcIlxcdTIyQzBcIixia2Fyb3c6XCJcXHUyOTBEXCIsYmxhY2tsb3plbmdlOlwiXFx1MjlFQlwiLGJsYWNrc3F1YXJlOlwiXFx1MjVBQVwiLGJsYWNrdHJpYW5nbGU6XCJcXHUyNUI0XCIsYmxhY2t0cmlhbmdsZWRvd246XCJcXHUyNUJFXCIsYmxhY2t0cmlhbmdsZWxlZnQ6XCJcXHUyNUMyXCIsYmxhY2t0cmlhbmdsZXJpZ2h0OlwiXFx1MjVCOFwiLGJsYW5rOlwiXFx1MjQyM1wiLGJsazEyOlwiXFx1MjU5MlwiLGJsazE0OlwiXFx1MjU5MVwiLGJsazM0OlwiXFx1MjU5M1wiLGJsb2NrOlwiXFx1MjU4OFwiLGJuZTpcIj1cXHUyMEU1XCIsYm5lcXVpdjpcIlxcdTIyNjFcXHUyMEU1XCIsYk5vdDpcIlxcdTJBRURcIixibm90OlwiXFx1MjMxMFwiLEJvcGY6XCJcXHV7MUQ1Mzl9XCIsYm9wZjpcIlxcdXsxRDU1M31cIixib3Q6XCJcXHUyMkE1XCIsYm90dG9tOlwiXFx1MjJBNVwiLGJvd3RpZTpcIlxcdTIyQzhcIixib3hib3g6XCJcXHUyOUM5XCIsYm94ZGw6XCJcXHUyNTEwXCIsYm94ZEw6XCJcXHUyNTU1XCIsYm94RGw6XCJcXHUyNTU2XCIsYm94REw6XCJcXHUyNTU3XCIsYm94ZHI6XCJcXHUyNTBDXCIsYm94ZFI6XCJcXHUyNTUyXCIsYm94RHI6XCJcXHUyNTUzXCIsYm94RFI6XCJcXHUyNTU0XCIsYm94aDpcIlxcdTI1MDBcIixib3hIOlwiXFx1MjU1MFwiLGJveGhkOlwiXFx1MjUyQ1wiLGJveEhkOlwiXFx1MjU2NFwiLGJveGhEOlwiXFx1MjU2NVwiLGJveEhEOlwiXFx1MjU2NlwiLGJveGh1OlwiXFx1MjUzNFwiLGJveEh1OlwiXFx1MjU2N1wiLGJveGhVOlwiXFx1MjU2OFwiLGJveEhVOlwiXFx1MjU2OVwiLGJveG1pbnVzOlwiXFx1MjI5RlwiLGJveHBsdXM6XCJcXHUyMjlFXCIsYm94dGltZXM6XCJcXHUyMkEwXCIsYm94dWw6XCJcXHUyNTE4XCIsYm94dUw6XCJcXHUyNTVCXCIsYm94VWw6XCJcXHUyNTVDXCIsYm94VUw6XCJcXHUyNTVEXCIsYm94dXI6XCJcXHUyNTE0XCIsYm94dVI6XCJcXHUyNTU4XCIsYm94VXI6XCJcXHUyNTU5XCIsYm94VVI6XCJcXHUyNTVBXCIsYm94djpcIlxcdTI1MDJcIixib3hWOlwiXFx1MjU1MVwiLGJveHZoOlwiXFx1MjUzQ1wiLGJveHZIOlwiXFx1MjU2QVwiLGJveFZoOlwiXFx1MjU2QlwiLGJveFZIOlwiXFx1MjU2Q1wiLGJveHZsOlwiXFx1MjUyNFwiLGJveHZMOlwiXFx1MjU2MVwiLGJveFZsOlwiXFx1MjU2MlwiLGJveFZMOlwiXFx1MjU2M1wiLGJveHZyOlwiXFx1MjUxQ1wiLGJveHZSOlwiXFx1MjU1RVwiLGJveFZyOlwiXFx1MjU1RlwiLGJveFZSOlwiXFx1MjU2MFwiLGJwcmltZTpcIlxcdTIwMzVcIixicmV2ZTpcIlxcdTAyRDhcIixCcmV2ZTpcIlxcdTAyRDhcIixicnZiYXI6XCJcXHhBNlwiLGJzY3I6XCJcXHV7MUQ0Qjd9XCIsQnNjcjpcIlxcdTIxMkNcIixic2VtaTpcIlxcdTIwNEZcIixic2ltOlwiXFx1MjIzRFwiLGJzaW1lOlwiXFx1MjJDRFwiLGJzb2xiOlwiXFx1MjlDNVwiLGJzb2w6XCJcXFxcXCIsYnNvbGhzdWI6XCJcXHUyN0M4XCIsYnVsbDpcIlxcdTIwMjJcIixidWxsZXQ6XCJcXHUyMDIyXCIsYnVtcDpcIlxcdTIyNEVcIixidW1wRTpcIlxcdTJBQUVcIixidW1wZTpcIlxcdTIyNEZcIixCdW1wZXE6XCJcXHUyMjRFXCIsYnVtcGVxOlwiXFx1MjI0RlwiLENhY3V0ZTpcIlxcdTAxMDZcIixjYWN1dGU6XCJcXHUwMTA3XCIsY2FwYW5kOlwiXFx1MkE0NFwiLGNhcGJyY3VwOlwiXFx1MkE0OVwiLGNhcGNhcDpcIlxcdTJBNEJcIixjYXA6XCJcXHUyMjI5XCIsQ2FwOlwiXFx1MjJEMlwiLGNhcGN1cDpcIlxcdTJBNDdcIixjYXBkb3Q6XCJcXHUyQTQwXCIsQ2FwaXRhbERpZmZlcmVudGlhbEQ6XCJcXHUyMTQ1XCIsY2FwczpcIlxcdTIyMjlcXHVGRTAwXCIsY2FyZXQ6XCJcXHUyMDQxXCIsY2Fyb246XCJcXHUwMkM3XCIsQ2F5bGV5czpcIlxcdTIxMkRcIixjY2FwczpcIlxcdTJBNERcIixDY2Fyb246XCJcXHUwMTBDXCIsY2Nhcm9uOlwiXFx1MDEwRFwiLENjZWRpbDpcIlxceEM3XCIsY2NlZGlsOlwiXFx4RTdcIixDY2lyYzpcIlxcdTAxMDhcIixjY2lyYzpcIlxcdTAxMDlcIixDY29uaW50OlwiXFx1MjIzMFwiLGNjdXBzOlwiXFx1MkE0Q1wiLGNjdXBzc206XCJcXHUyQTUwXCIsQ2RvdDpcIlxcdTAxMEFcIixjZG90OlwiXFx1MDEwQlwiLGNlZGlsOlwiXFx4QjhcIixDZWRpbGxhOlwiXFx4QjhcIixjZW1wdHl2OlwiXFx1MjlCMlwiLGNlbnQ6XCJcXHhBMlwiLGNlbnRlcmRvdDpcIlxceEI3XCIsQ2VudGVyRG90OlwiXFx4QjdcIixjZnI6XCJcXHV7MUQ1MjB9XCIsQ2ZyOlwiXFx1MjEyRFwiLENIY3k6XCJcXHUwNDI3XCIsY2hjeTpcIlxcdTA0NDdcIixjaGVjazpcIlxcdTI3MTNcIixjaGVja21hcms6XCJcXHUyNzEzXCIsQ2hpOlwiXFx1MDNBN1wiLGNoaTpcIlxcdTAzQzdcIixjaXJjOlwiXFx1MDJDNlwiLGNpcmNlcTpcIlxcdTIyNTdcIixjaXJjbGVhcnJvd2xlZnQ6XCJcXHUyMUJBXCIsY2lyY2xlYXJyb3dyaWdodDpcIlxcdTIxQkJcIixjaXJjbGVkYXN0OlwiXFx1MjI5QlwiLGNpcmNsZWRjaXJjOlwiXFx1MjI5QVwiLGNpcmNsZWRkYXNoOlwiXFx1MjI5RFwiLENpcmNsZURvdDpcIlxcdTIyOTlcIixjaXJjbGVkUjpcIlxceEFFXCIsY2lyY2xlZFM6XCJcXHUyNEM4XCIsQ2lyY2xlTWludXM6XCJcXHUyMjk2XCIsQ2lyY2xlUGx1czpcIlxcdTIyOTVcIixDaXJjbGVUaW1lczpcIlxcdTIyOTdcIixjaXI6XCJcXHUyNUNCXCIsY2lyRTpcIlxcdTI5QzNcIixjaXJlOlwiXFx1MjI1N1wiLGNpcmZuaW50OlwiXFx1MkExMFwiLGNpcm1pZDpcIlxcdTJBRUZcIixjaXJzY2lyOlwiXFx1MjlDMlwiLENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMzJcIixDbG9zZUN1cmx5RG91YmxlUXVvdGU6XCJcXHUyMDFEXCIsQ2xvc2VDdXJseVF1b3RlOlwiXFx1MjAxOVwiLGNsdWJzOlwiXFx1MjY2M1wiLGNsdWJzdWl0OlwiXFx1MjY2M1wiLGNvbG9uOlwiOlwiLENvbG9uOlwiXFx1MjIzN1wiLENvbG9uZTpcIlxcdTJBNzRcIixjb2xvbmU6XCJcXHUyMjU0XCIsY29sb25lcTpcIlxcdTIyNTRcIixjb21tYTpcIixcIixjb21tYXQ6XCJAXCIsY29tcDpcIlxcdTIyMDFcIixjb21wZm46XCJcXHUyMjE4XCIsY29tcGxlbWVudDpcIlxcdTIyMDFcIixjb21wbGV4ZXM6XCJcXHUyMTAyXCIsY29uZzpcIlxcdTIyNDVcIixjb25nZG90OlwiXFx1MkE2RFwiLENvbmdydWVudDpcIlxcdTIyNjFcIixjb25pbnQ6XCJcXHUyMjJFXCIsQ29uaW50OlwiXFx1MjIyRlwiLENvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMkVcIixjb3BmOlwiXFx1ezFENTU0fVwiLENvcGY6XCJcXHUyMTAyXCIsY29wcm9kOlwiXFx1MjIxMFwiLENvcHJvZHVjdDpcIlxcdTIyMTBcIixjb3B5OlwiXFx4QTlcIixDT1BZOlwiXFx4QTlcIixjb3B5c3I6XCJcXHUyMTE3XCIsQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMzNcIixjcmFycjpcIlxcdTIxQjVcIixjcm9zczpcIlxcdTI3MTdcIixDcm9zczpcIlxcdTJBMkZcIixDc2NyOlwiXFx1ezFENDlFfVwiLGNzY3I6XCJcXHV7MUQ0Qjh9XCIsY3N1YjpcIlxcdTJBQ0ZcIixjc3ViZTpcIlxcdTJBRDFcIixjc3VwOlwiXFx1MkFEMFwiLGNzdXBlOlwiXFx1MkFEMlwiLGN0ZG90OlwiXFx1MjJFRlwiLGN1ZGFycmw6XCJcXHUyOTM4XCIsY3VkYXJycjpcIlxcdTI5MzVcIixjdWVwcjpcIlxcdTIyREVcIixjdWVzYzpcIlxcdTIyREZcIixjdWxhcnI6XCJcXHUyMUI2XCIsY3VsYXJycDpcIlxcdTI5M0RcIixjdXBicmNhcDpcIlxcdTJBNDhcIixjdXBjYXA6XCJcXHUyQTQ2XCIsQ3VwQ2FwOlwiXFx1MjI0RFwiLGN1cDpcIlxcdTIyMkFcIixDdXA6XCJcXHUyMkQzXCIsY3VwY3VwOlwiXFx1MkE0QVwiLGN1cGRvdDpcIlxcdTIyOERcIixjdXBvcjpcIlxcdTJBNDVcIixjdXBzOlwiXFx1MjIyQVxcdUZFMDBcIixjdXJhcnI6XCJcXHUyMUI3XCIsY3VyYXJybTpcIlxcdTI5M0NcIixjdXJseWVxcHJlYzpcIlxcdTIyREVcIixjdXJseWVxc3VjYzpcIlxcdTIyREZcIixjdXJseXZlZTpcIlxcdTIyQ0VcIixjdXJseXdlZGdlOlwiXFx1MjJDRlwiLGN1cnJlbjpcIlxceEE0XCIsY3VydmVhcnJvd2xlZnQ6XCJcXHUyMUI2XCIsY3VydmVhcnJvd3JpZ2h0OlwiXFx1MjFCN1wiLGN1dmVlOlwiXFx1MjJDRVwiLGN1d2VkOlwiXFx1MjJDRlwiLGN3Y29uaW50OlwiXFx1MjIzMlwiLGN3aW50OlwiXFx1MjIzMVwiLGN5bGN0eTpcIlxcdTIzMkRcIixkYWdnZXI6XCJcXHUyMDIwXCIsRGFnZ2VyOlwiXFx1MjAyMVwiLGRhbGV0aDpcIlxcdTIxMzhcIixkYXJyOlwiXFx1MjE5M1wiLERhcnI6XCJcXHUyMUExXCIsZEFycjpcIlxcdTIxRDNcIixkYXNoOlwiXFx1MjAxMFwiLERhc2h2OlwiXFx1MkFFNFwiLGRhc2h2OlwiXFx1MjJBM1wiLGRia2Fyb3c6XCJcXHUyOTBGXCIsZGJsYWM6XCJcXHUwMkREXCIsRGNhcm9uOlwiXFx1MDEwRVwiLGRjYXJvbjpcIlxcdTAxMEZcIixEY3k6XCJcXHUwNDE0XCIsZGN5OlwiXFx1MDQzNFwiLGRkYWdnZXI6XCJcXHUyMDIxXCIsZGRhcnI6XCJcXHUyMUNBXCIsREQ6XCJcXHUyMTQ1XCIsZGQ6XCJcXHUyMTQ2XCIsRERvdHJhaGQ6XCJcXHUyOTExXCIsZGRvdHNlcTpcIlxcdTJBNzdcIixkZWc6XCJcXHhCMFwiLERlbDpcIlxcdTIyMDdcIixEZWx0YTpcIlxcdTAzOTRcIixkZWx0YTpcIlxcdTAzQjRcIixkZW1wdHl2OlwiXFx1MjlCMVwiLGRmaXNodDpcIlxcdTI5N0ZcIixEZnI6XCJcXHV7MUQ1MDd9XCIsZGZyOlwiXFx1ezFENTIxfVwiLGRIYXI6XCJcXHUyOTY1XCIsZGhhcmw6XCJcXHUyMUMzXCIsZGhhcnI6XCJcXHUyMUMyXCIsRGlhY3JpdGljYWxBY3V0ZTpcIlxceEI0XCIsRGlhY3JpdGljYWxEb3Q6XCJcXHUwMkQ5XCIsRGlhY3JpdGljYWxEb3VibGVBY3V0ZTpcIlxcdTAyRERcIixEaWFjcml0aWNhbEdyYXZlOlwiYFwiLERpYWNyaXRpY2FsVGlsZGU6XCJcXHUwMkRDXCIsZGlhbTpcIlxcdTIyQzRcIixkaWFtb25kOlwiXFx1MjJDNFwiLERpYW1vbmQ6XCJcXHUyMkM0XCIsZGlhbW9uZHN1aXQ6XCJcXHUyNjY2XCIsZGlhbXM6XCJcXHUyNjY2XCIsZGllOlwiXFx4QThcIixEaWZmZXJlbnRpYWxEOlwiXFx1MjE0NlwiLGRpZ2FtbWE6XCJcXHUwM0REXCIsZGlzaW46XCJcXHUyMkYyXCIsZGl2OlwiXFx4RjdcIixkaXZpZGU6XCJcXHhGN1wiLGRpdmlkZW9udGltZXM6XCJcXHUyMkM3XCIsZGl2b254OlwiXFx1MjJDN1wiLERKY3k6XCJcXHUwNDAyXCIsZGpjeTpcIlxcdTA0NTJcIixkbGNvcm46XCJcXHUyMzFFXCIsZGxjcm9wOlwiXFx1MjMwRFwiLGRvbGxhcjpcIiRcIixEb3BmOlwiXFx1ezFENTNCfVwiLGRvcGY6XCJcXHV7MUQ1NTV9XCIsRG90OlwiXFx4QThcIixkb3Q6XCJcXHUwMkQ5XCIsRG90RG90OlwiXFx1MjBEQ1wiLGRvdGVxOlwiXFx1MjI1MFwiLGRvdGVxZG90OlwiXFx1MjI1MVwiLERvdEVxdWFsOlwiXFx1MjI1MFwiLGRvdG1pbnVzOlwiXFx1MjIzOFwiLGRvdHBsdXM6XCJcXHUyMjE0XCIsZG90c3F1YXJlOlwiXFx1MjJBMVwiLGRvdWJsZWJhcndlZGdlOlwiXFx1MjMwNlwiLERvdWJsZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMkZcIixEb3VibGVEb3Q6XCJcXHhBOFwiLERvdWJsZURvd25BcnJvdzpcIlxcdTIxRDNcIixEb3VibGVMZWZ0QXJyb3c6XCJcXHUyMUQwXCIsRG91YmxlTGVmdFJpZ2h0QXJyb3c6XCJcXHUyMUQ0XCIsRG91YmxlTGVmdFRlZTpcIlxcdTJBRTRcIixEb3VibGVMb25nTGVmdEFycm93OlwiXFx1MjdGOFwiLERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzpcIlxcdTI3RkFcIixEb3VibGVMb25nUmlnaHRBcnJvdzpcIlxcdTI3RjlcIixEb3VibGVSaWdodEFycm93OlwiXFx1MjFEMlwiLERvdWJsZVJpZ2h0VGVlOlwiXFx1MjJBOFwiLERvdWJsZVVwQXJyb3c6XCJcXHUyMUQxXCIsRG91YmxlVXBEb3duQXJyb3c6XCJcXHUyMUQ1XCIsRG91YmxlVmVydGljYWxCYXI6XCJcXHUyMjI1XCIsRG93bkFycm93QmFyOlwiXFx1MjkxM1wiLGRvd25hcnJvdzpcIlxcdTIxOTNcIixEb3duQXJyb3c6XCJcXHUyMTkzXCIsRG93bmFycm93OlwiXFx1MjFEM1wiLERvd25BcnJvd1VwQXJyb3c6XCJcXHUyMUY1XCIsRG93bkJyZXZlOlwiXFx1MDMxMVwiLGRvd25kb3duYXJyb3dzOlwiXFx1MjFDQVwiLGRvd25oYXJwb29ubGVmdDpcIlxcdTIxQzNcIixkb3duaGFycG9vbnJpZ2h0OlwiXFx1MjFDMlwiLERvd25MZWZ0UmlnaHRWZWN0b3I6XCJcXHUyOTUwXCIsRG93bkxlZnRUZWVWZWN0b3I6XCJcXHUyOTVFXCIsRG93bkxlZnRWZWN0b3JCYXI6XCJcXHUyOTU2XCIsRG93bkxlZnRWZWN0b3I6XCJcXHUyMUJEXCIsRG93blJpZ2h0VGVlVmVjdG9yOlwiXFx1Mjk1RlwiLERvd25SaWdodFZlY3RvckJhcjpcIlxcdTI5NTdcIixEb3duUmlnaHRWZWN0b3I6XCJcXHUyMUMxXCIsRG93blRlZUFycm93OlwiXFx1MjFBN1wiLERvd25UZWU6XCJcXHUyMkE0XCIsZHJia2Fyb3c6XCJcXHUyOTEwXCIsZHJjb3JuOlwiXFx1MjMxRlwiLGRyY3JvcDpcIlxcdTIzMENcIixEc2NyOlwiXFx1ezFENDlGfVwiLGRzY3I6XCJcXHV7MUQ0Qjl9XCIsRFNjeTpcIlxcdTA0MDVcIixkc2N5OlwiXFx1MDQ1NVwiLGRzb2w6XCJcXHUyOUY2XCIsRHN0cm9rOlwiXFx1MDExMFwiLGRzdHJvazpcIlxcdTAxMTFcIixkdGRvdDpcIlxcdTIyRjFcIixkdHJpOlwiXFx1MjVCRlwiLGR0cmlmOlwiXFx1MjVCRVwiLGR1YXJyOlwiXFx1MjFGNVwiLGR1aGFyOlwiXFx1Mjk2RlwiLGR3YW5nbGU6XCJcXHUyOUE2XCIsRFpjeTpcIlxcdTA0MEZcIixkemN5OlwiXFx1MDQ1RlwiLGR6aWdyYXJyOlwiXFx1MjdGRlwiLEVhY3V0ZTpcIlxceEM5XCIsZWFjdXRlOlwiXFx4RTlcIixlYXN0ZXI6XCJcXHUyQTZFXCIsRWNhcm9uOlwiXFx1MDExQVwiLGVjYXJvbjpcIlxcdTAxMUJcIixFY2lyYzpcIlxceENBXCIsZWNpcmM6XCJcXHhFQVwiLGVjaXI6XCJcXHUyMjU2XCIsZWNvbG9uOlwiXFx1MjI1NVwiLEVjeTpcIlxcdTA0MkRcIixlY3k6XCJcXHUwNDREXCIsZUREb3Q6XCJcXHUyQTc3XCIsRWRvdDpcIlxcdTAxMTZcIixlZG90OlwiXFx1MDExN1wiLGVEb3Q6XCJcXHUyMjUxXCIsZWU6XCJcXHUyMTQ3XCIsZWZEb3Q6XCJcXHUyMjUyXCIsRWZyOlwiXFx1ezFENTA4fVwiLGVmcjpcIlxcdXsxRDUyMn1cIixlZzpcIlxcdTJBOUFcIixFZ3JhdmU6XCJcXHhDOFwiLGVncmF2ZTpcIlxceEU4XCIsZWdzOlwiXFx1MkE5NlwiLGVnc2RvdDpcIlxcdTJBOThcIixlbDpcIlxcdTJBOTlcIixFbGVtZW50OlwiXFx1MjIwOFwiLGVsaW50ZXJzOlwiXFx1MjNFN1wiLGVsbDpcIlxcdTIxMTNcIixlbHM6XCJcXHUyQTk1XCIsZWxzZG90OlwiXFx1MkE5N1wiLEVtYWNyOlwiXFx1MDExMlwiLGVtYWNyOlwiXFx1MDExM1wiLGVtcHR5OlwiXFx1MjIwNVwiLGVtcHR5c2V0OlwiXFx1MjIwNVwiLEVtcHR5U21hbGxTcXVhcmU6XCJcXHUyNUZCXCIsZW1wdHl2OlwiXFx1MjIwNVwiLEVtcHR5VmVyeVNtYWxsU3F1YXJlOlwiXFx1MjVBQlwiLGVtc3AxMzpcIlxcdTIwMDRcIixlbXNwMTQ6XCJcXHUyMDA1XCIsZW1zcDpcIlxcdTIwMDNcIixFTkc6XCJcXHUwMTRBXCIsZW5nOlwiXFx1MDE0QlwiLGVuc3A6XCJcXHUyMDAyXCIsRW9nb246XCJcXHUwMTE4XCIsZW9nb246XCJcXHUwMTE5XCIsRW9wZjpcIlxcdXsxRDUzQ31cIixlb3BmOlwiXFx1ezFENTU2fVwiLGVwYXI6XCJcXHUyMkQ1XCIsZXBhcnNsOlwiXFx1MjlFM1wiLGVwbHVzOlwiXFx1MkE3MVwiLGVwc2k6XCJcXHUwM0I1XCIsRXBzaWxvbjpcIlxcdTAzOTVcIixlcHNpbG9uOlwiXFx1MDNCNVwiLGVwc2l2OlwiXFx1MDNGNVwiLGVxY2lyYzpcIlxcdTIyNTZcIixlcWNvbG9uOlwiXFx1MjI1NVwiLGVxc2ltOlwiXFx1MjI0MlwiLGVxc2xhbnRndHI6XCJcXHUyQTk2XCIsZXFzbGFudGxlc3M6XCJcXHUyQTk1XCIsRXF1YWw6XCJcXHUyQTc1XCIsZXF1YWxzOlwiPVwiLEVxdWFsVGlsZGU6XCJcXHUyMjQyXCIsZXF1ZXN0OlwiXFx1MjI1RlwiLEVxdWlsaWJyaXVtOlwiXFx1MjFDQ1wiLGVxdWl2OlwiXFx1MjI2MVwiLGVxdWl2REQ6XCJcXHUyQTc4XCIsZXF2cGFyc2w6XCJcXHUyOUU1XCIsZXJhcnI6XCJcXHUyOTcxXCIsZXJEb3Q6XCJcXHUyMjUzXCIsZXNjcjpcIlxcdTIxMkZcIixFc2NyOlwiXFx1MjEzMFwiLGVzZG90OlwiXFx1MjI1MFwiLEVzaW06XCJcXHUyQTczXCIsZXNpbTpcIlxcdTIyNDJcIixFdGE6XCJcXHUwMzk3XCIsZXRhOlwiXFx1MDNCN1wiLEVUSDpcIlxceEQwXCIsZXRoOlwiXFx4RjBcIixFdW1sOlwiXFx4Q0JcIixldW1sOlwiXFx4RUJcIixldXJvOlwiXFx1MjBBQ1wiLGV4Y2w6XCIhXCIsZXhpc3Q6XCJcXHUyMjAzXCIsRXhpc3RzOlwiXFx1MjIwM1wiLGV4cGVjdGF0aW9uOlwiXFx1MjEzMFwiLGV4cG9uZW50aWFsZTpcIlxcdTIxNDdcIixFeHBvbmVudGlhbEU6XCJcXHUyMTQ3XCIsZmFsbGluZ2RvdHNlcTpcIlxcdTIyNTJcIixGY3k6XCJcXHUwNDI0XCIsZmN5OlwiXFx1MDQ0NFwiLGZlbWFsZTpcIlxcdTI2NDBcIixmZmlsaWc6XCJcXHVGQjAzXCIsZmZsaWc6XCJcXHVGQjAwXCIsZmZsbGlnOlwiXFx1RkIwNFwiLEZmcjpcIlxcdXsxRDUwOX1cIixmZnI6XCJcXHV7MUQ1MjN9XCIsZmlsaWc6XCJcXHVGQjAxXCIsRmlsbGVkU21hbGxTcXVhcmU6XCJcXHUyNUZDXCIsRmlsbGVkVmVyeVNtYWxsU3F1YXJlOlwiXFx1MjVBQVwiLGZqbGlnOlwiZmpcIixmbGF0OlwiXFx1MjY2RFwiLGZsbGlnOlwiXFx1RkIwMlwiLGZsdG5zOlwiXFx1MjVCMVwiLGZub2Y6XCJcXHUwMTkyXCIsRm9wZjpcIlxcdXsxRDUzRH1cIixmb3BmOlwiXFx1ezFENTU3fVwiLGZvcmFsbDpcIlxcdTIyMDBcIixGb3JBbGw6XCJcXHUyMjAwXCIsZm9yazpcIlxcdTIyRDRcIixmb3JrdjpcIlxcdTJBRDlcIixGb3VyaWVydHJmOlwiXFx1MjEzMVwiLGZwYXJ0aW50OlwiXFx1MkEwRFwiLGZyYWMxMjpcIlxceEJEXCIsZnJhYzEzOlwiXFx1MjE1M1wiLGZyYWMxNDpcIlxceEJDXCIsZnJhYzE1OlwiXFx1MjE1NVwiLGZyYWMxNjpcIlxcdTIxNTlcIixmcmFjMTg6XCJcXHUyMTVCXCIsZnJhYzIzOlwiXFx1MjE1NFwiLGZyYWMyNTpcIlxcdTIxNTZcIixmcmFjMzQ6XCJcXHhCRVwiLGZyYWMzNTpcIlxcdTIxNTdcIixmcmFjMzg6XCJcXHUyMTVDXCIsZnJhYzQ1OlwiXFx1MjE1OFwiLGZyYWM1NjpcIlxcdTIxNUFcIixmcmFjNTg6XCJcXHUyMTVEXCIsZnJhYzc4OlwiXFx1MjE1RVwiLGZyYXNsOlwiXFx1MjA0NFwiLGZyb3duOlwiXFx1MjMyMlwiLGZzY3I6XCJcXHV7MUQ0QkJ9XCIsRnNjcjpcIlxcdTIxMzFcIixnYWN1dGU6XCJcXHUwMUY1XCIsR2FtbWE6XCJcXHUwMzkzXCIsZ2FtbWE6XCJcXHUwM0IzXCIsR2FtbWFkOlwiXFx1MDNEQ1wiLGdhbW1hZDpcIlxcdTAzRERcIixnYXA6XCJcXHUyQTg2XCIsR2JyZXZlOlwiXFx1MDExRVwiLGdicmV2ZTpcIlxcdTAxMUZcIixHY2VkaWw6XCJcXHUwMTIyXCIsR2NpcmM6XCJcXHUwMTFDXCIsZ2NpcmM6XCJcXHUwMTFEXCIsR2N5OlwiXFx1MDQxM1wiLGdjeTpcIlxcdTA0MzNcIixHZG90OlwiXFx1MDEyMFwiLGdkb3Q6XCJcXHUwMTIxXCIsZ2U6XCJcXHUyMjY1XCIsZ0U6XCJcXHUyMjY3XCIsZ0VsOlwiXFx1MkE4Q1wiLGdlbDpcIlxcdTIyREJcIixnZXE6XCJcXHUyMjY1XCIsZ2VxcTpcIlxcdTIyNjdcIixnZXFzbGFudDpcIlxcdTJBN0VcIixnZXNjYzpcIlxcdTJBQTlcIixnZXM6XCJcXHUyQTdFXCIsZ2VzZG90OlwiXFx1MkE4MFwiLGdlc2RvdG86XCJcXHUyQTgyXCIsZ2VzZG90b2w6XCJcXHUyQTg0XCIsZ2VzbDpcIlxcdTIyREJcXHVGRTAwXCIsZ2VzbGVzOlwiXFx1MkE5NFwiLEdmcjpcIlxcdXsxRDUwQX1cIixnZnI6XCJcXHV7MUQ1MjR9XCIsZ2c6XCJcXHUyMjZCXCIsR2c6XCJcXHUyMkQ5XCIsZ2dnOlwiXFx1MjJEOVwiLGdpbWVsOlwiXFx1MjEzN1wiLEdKY3k6XCJcXHUwNDAzXCIsZ2pjeTpcIlxcdTA0NTNcIixnbGE6XCJcXHUyQUE1XCIsZ2w6XCJcXHUyMjc3XCIsZ2xFOlwiXFx1MkE5MlwiLGdsajpcIlxcdTJBQTRcIixnbmFwOlwiXFx1MkE4QVwiLGduYXBwcm94OlwiXFx1MkE4QVwiLGduZTpcIlxcdTJBODhcIixnbkU6XCJcXHUyMjY5XCIsZ25lcTpcIlxcdTJBODhcIixnbmVxcTpcIlxcdTIyNjlcIixnbnNpbTpcIlxcdTIyRTdcIixHb3BmOlwiXFx1ezFENTNFfVwiLGdvcGY6XCJcXHV7MUQ1NTh9XCIsZ3JhdmU6XCJgXCIsR3JlYXRlckVxdWFsOlwiXFx1MjI2NVwiLEdyZWF0ZXJFcXVhbExlc3M6XCJcXHUyMkRCXCIsR3JlYXRlckZ1bGxFcXVhbDpcIlxcdTIyNjdcIixHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcIixHcmVhdGVyTGVzczpcIlxcdTIyNzdcIixHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcIixHcmVhdGVyVGlsZGU6XCJcXHUyMjczXCIsR3NjcjpcIlxcdXsxRDRBMn1cIixnc2NyOlwiXFx1MjEwQVwiLGdzaW06XCJcXHUyMjczXCIsZ3NpbWU6XCJcXHUyQThFXCIsZ3NpbWw6XCJcXHUyQTkwXCIsZ3RjYzpcIlxcdTJBQTdcIixndGNpcjpcIlxcdTJBN0FcIixndDpcIj5cIixHVDpcIj5cIixHdDpcIlxcdTIyNkJcIixndGRvdDpcIlxcdTIyRDdcIixndGxQYXI6XCJcXHUyOTk1XCIsZ3RxdWVzdDpcIlxcdTJBN0NcIixndHJhcHByb3g6XCJcXHUyQTg2XCIsZ3RyYXJyOlwiXFx1Mjk3OFwiLGd0cmRvdDpcIlxcdTIyRDdcIixndHJlcWxlc3M6XCJcXHUyMkRCXCIsZ3RyZXFxbGVzczpcIlxcdTJBOENcIixndHJsZXNzOlwiXFx1MjI3N1wiLGd0cnNpbTpcIlxcdTIyNzNcIixndmVydG5lcXE6XCJcXHUyMjY5XFx1RkUwMFwiLGd2bkU6XCJcXHUyMjY5XFx1RkUwMFwiLEhhY2VrOlwiXFx1MDJDN1wiLGhhaXJzcDpcIlxcdTIwMEFcIixoYWxmOlwiXFx4QkRcIixoYW1pbHQ6XCJcXHUyMTBCXCIsSEFSRGN5OlwiXFx1MDQyQVwiLGhhcmRjeTpcIlxcdTA0NEFcIixoYXJyY2lyOlwiXFx1Mjk0OFwiLGhhcnI6XCJcXHUyMTk0XCIsaEFycjpcIlxcdTIxRDRcIixoYXJydzpcIlxcdTIxQURcIixIYXQ6XCJeXCIsaGJhcjpcIlxcdTIxMEZcIixIY2lyYzpcIlxcdTAxMjRcIixoY2lyYzpcIlxcdTAxMjVcIixoZWFydHM6XCJcXHUyNjY1XCIsaGVhcnRzdWl0OlwiXFx1MjY2NVwiLGhlbGxpcDpcIlxcdTIwMjZcIixoZXJjb246XCJcXHUyMkI5XCIsaGZyOlwiXFx1ezFENTI1fVwiLEhmcjpcIlxcdTIxMENcIixIaWxiZXJ0U3BhY2U6XCJcXHUyMTBCXCIsaGtzZWFyb3c6XCJcXHUyOTI1XCIsaGtzd2Fyb3c6XCJcXHUyOTI2XCIsaG9hcnI6XCJcXHUyMUZGXCIsaG9tdGh0OlwiXFx1MjIzQlwiLGhvb2tsZWZ0YXJyb3c6XCJcXHUyMUE5XCIsaG9va3JpZ2h0YXJyb3c6XCJcXHUyMUFBXCIsaG9wZjpcIlxcdXsxRDU1OX1cIixIb3BmOlwiXFx1MjEwRFwiLGhvcmJhcjpcIlxcdTIwMTVcIixIb3Jpem9udGFsTGluZTpcIlxcdTI1MDBcIixoc2NyOlwiXFx1ezFENEJEfVwiLEhzY3I6XCJcXHUyMTBCXCIsaHNsYXNoOlwiXFx1MjEwRlwiLEhzdHJvazpcIlxcdTAxMjZcIixoc3Ryb2s6XCJcXHUwMTI3XCIsSHVtcERvd25IdW1wOlwiXFx1MjI0RVwiLEh1bXBFcXVhbDpcIlxcdTIyNEZcIixoeWJ1bGw6XCJcXHUyMDQzXCIsaHlwaGVuOlwiXFx1MjAxMFwiLElhY3V0ZTpcIlxceENEXCIsaWFjdXRlOlwiXFx4RURcIixpYzpcIlxcdTIwNjNcIixJY2lyYzpcIlxceENFXCIsaWNpcmM6XCJcXHhFRVwiLEljeTpcIlxcdTA0MThcIixpY3k6XCJcXHUwNDM4XCIsSWRvdDpcIlxcdTAxMzBcIixJRWN5OlwiXFx1MDQxNVwiLGllY3k6XCJcXHUwNDM1XCIsaWV4Y2w6XCJcXHhBMVwiLGlmZjpcIlxcdTIxRDRcIixpZnI6XCJcXHV7MUQ1MjZ9XCIsSWZyOlwiXFx1MjExMVwiLElncmF2ZTpcIlxceENDXCIsaWdyYXZlOlwiXFx4RUNcIixpaTpcIlxcdTIxNDhcIixpaWlpbnQ6XCJcXHUyQTBDXCIsaWlpbnQ6XCJcXHUyMjJEXCIsaWluZmluOlwiXFx1MjlEQ1wiLGlpb3RhOlwiXFx1MjEyOVwiLElKbGlnOlwiXFx1MDEzMlwiLGlqbGlnOlwiXFx1MDEzM1wiLEltYWNyOlwiXFx1MDEyQVwiLGltYWNyOlwiXFx1MDEyQlwiLGltYWdlOlwiXFx1MjExMVwiLEltYWdpbmFyeUk6XCJcXHUyMTQ4XCIsaW1hZ2xpbmU6XCJcXHUyMTEwXCIsaW1hZ3BhcnQ6XCJcXHUyMTExXCIsaW1hdGg6XCJcXHUwMTMxXCIsSW06XCJcXHUyMTExXCIsaW1vZjpcIlxcdTIyQjdcIixpbXBlZDpcIlxcdTAxQjVcIixJbXBsaWVzOlwiXFx1MjFEMlwiLGluY2FyZTpcIlxcdTIxMDVcIixpbjpcIlxcdTIyMDhcIixpbmZpbjpcIlxcdTIyMUVcIixpbmZpbnRpZTpcIlxcdTI5RERcIixpbm9kb3Q6XCJcXHUwMTMxXCIsaW50Y2FsOlwiXFx1MjJCQVwiLGludDpcIlxcdTIyMkJcIixJbnQ6XCJcXHUyMjJDXCIsaW50ZWdlcnM6XCJcXHUyMTI0XCIsSW50ZWdyYWw6XCJcXHUyMjJCXCIsaW50ZXJjYWw6XCJcXHUyMkJBXCIsSW50ZXJzZWN0aW9uOlwiXFx1MjJDMlwiLGludGxhcmhrOlwiXFx1MkExN1wiLGludHByb2Q6XCJcXHUyQTNDXCIsSW52aXNpYmxlQ29tbWE6XCJcXHUyMDYzXCIsSW52aXNpYmxlVGltZXM6XCJcXHUyMDYyXCIsSU9jeTpcIlxcdTA0MDFcIixpb2N5OlwiXFx1MDQ1MVwiLElvZ29uOlwiXFx1MDEyRVwiLGlvZ29uOlwiXFx1MDEyRlwiLElvcGY6XCJcXHV7MUQ1NDB9XCIsaW9wZjpcIlxcdXsxRDU1QX1cIixJb3RhOlwiXFx1MDM5OVwiLGlvdGE6XCJcXHUwM0I5XCIsaXByb2Q6XCJcXHUyQTNDXCIsaXF1ZXN0OlwiXFx4QkZcIixpc2NyOlwiXFx1ezFENEJFfVwiLElzY3I6XCJcXHUyMTEwXCIsaXNpbjpcIlxcdTIyMDhcIixpc2luZG90OlwiXFx1MjJGNVwiLGlzaW5FOlwiXFx1MjJGOVwiLGlzaW5zOlwiXFx1MjJGNFwiLGlzaW5zdjpcIlxcdTIyRjNcIixpc2ludjpcIlxcdTIyMDhcIixpdDpcIlxcdTIwNjJcIixJdGlsZGU6XCJcXHUwMTI4XCIsaXRpbGRlOlwiXFx1MDEyOVwiLEl1a2N5OlwiXFx1MDQwNlwiLGl1a2N5OlwiXFx1MDQ1NlwiLEl1bWw6XCJcXHhDRlwiLGl1bWw6XCJcXHhFRlwiLEpjaXJjOlwiXFx1MDEzNFwiLGpjaXJjOlwiXFx1MDEzNVwiLEpjeTpcIlxcdTA0MTlcIixqY3k6XCJcXHUwNDM5XCIsSmZyOlwiXFx1ezFENTBEfVwiLGpmcjpcIlxcdXsxRDUyN31cIixqbWF0aDpcIlxcdTAyMzdcIixKb3BmOlwiXFx1ezFENTQxfVwiLGpvcGY6XCJcXHV7MUQ1NUJ9XCIsSnNjcjpcIlxcdXsxRDRBNX1cIixqc2NyOlwiXFx1ezFENEJGfVwiLEpzZXJjeTpcIlxcdTA0MDhcIixqc2VyY3k6XCJcXHUwNDU4XCIsSnVrY3k6XCJcXHUwNDA0XCIsanVrY3k6XCJcXHUwNDU0XCIsS2FwcGE6XCJcXHUwMzlBXCIsa2FwcGE6XCJcXHUwM0JBXCIsa2FwcGF2OlwiXFx1MDNGMFwiLEtjZWRpbDpcIlxcdTAxMzZcIixrY2VkaWw6XCJcXHUwMTM3XCIsS2N5OlwiXFx1MDQxQVwiLGtjeTpcIlxcdTA0M0FcIixLZnI6XCJcXHV7MUQ1MEV9XCIsa2ZyOlwiXFx1ezFENTI4fVwiLGtncmVlbjpcIlxcdTAxMzhcIixLSGN5OlwiXFx1MDQyNVwiLGtoY3k6XCJcXHUwNDQ1XCIsS0pjeTpcIlxcdTA0MENcIixramN5OlwiXFx1MDQ1Q1wiLEtvcGY6XCJcXHV7MUQ1NDJ9XCIsa29wZjpcIlxcdXsxRDU1Q31cIixLc2NyOlwiXFx1ezFENEE2fVwiLGtzY3I6XCJcXHV7MUQ0QzB9XCIsbEFhcnI6XCJcXHUyMURBXCIsTGFjdXRlOlwiXFx1MDEzOVwiLGxhY3V0ZTpcIlxcdTAxM0FcIixsYWVtcHR5djpcIlxcdTI5QjRcIixsYWdyYW46XCJcXHUyMTEyXCIsTGFtYmRhOlwiXFx1MDM5QlwiLGxhbWJkYTpcIlxcdTAzQkJcIixsYW5nOlwiXFx1MjdFOFwiLExhbmc6XCJcXHUyN0VBXCIsbGFuZ2Q6XCJcXHUyOTkxXCIsbGFuZ2xlOlwiXFx1MjdFOFwiLGxhcDpcIlxcdTJBODVcIixMYXBsYWNldHJmOlwiXFx1MjExMlwiLGxhcXVvOlwiXFx4QUJcIixsYXJyYjpcIlxcdTIxRTRcIixsYXJyYmZzOlwiXFx1MjkxRlwiLGxhcnI6XCJcXHUyMTkwXCIsTGFycjpcIlxcdTIxOUVcIixsQXJyOlwiXFx1MjFEMFwiLGxhcnJmczpcIlxcdTI5MURcIixsYXJyaGs6XCJcXHUyMUE5XCIsbGFycmxwOlwiXFx1MjFBQlwiLGxhcnJwbDpcIlxcdTI5MzlcIixsYXJyc2ltOlwiXFx1Mjk3M1wiLGxhcnJ0bDpcIlxcdTIxQTJcIixsYXRhaWw6XCJcXHUyOTE5XCIsbEF0YWlsOlwiXFx1MjkxQlwiLGxhdDpcIlxcdTJBQUJcIixsYXRlOlwiXFx1MkFBRFwiLGxhdGVzOlwiXFx1MkFBRFxcdUZFMDBcIixsYmFycjpcIlxcdTI5MENcIixsQmFycjpcIlxcdTI5MEVcIixsYmJyazpcIlxcdTI3NzJcIixsYnJhY2U6XCJ7XCIsbGJyYWNrOlwiW1wiLGxicmtlOlwiXFx1Mjk4QlwiLGxicmtzbGQ6XCJcXHUyOThGXCIsbGJya3NsdTpcIlxcdTI5OERcIixMY2Fyb246XCJcXHUwMTNEXCIsbGNhcm9uOlwiXFx1MDEzRVwiLExjZWRpbDpcIlxcdTAxM0JcIixsY2VkaWw6XCJcXHUwMTNDXCIsbGNlaWw6XCJcXHUyMzA4XCIsbGN1YjpcIntcIixMY3k6XCJcXHUwNDFCXCIsbGN5OlwiXFx1MDQzQlwiLGxkY2E6XCJcXHUyOTM2XCIsbGRxdW86XCJcXHUyMDFDXCIsbGRxdW9yOlwiXFx1MjAxRVwiLGxkcmRoYXI6XCJcXHUyOTY3XCIsbGRydXNoYXI6XCJcXHUyOTRCXCIsbGRzaDpcIlxcdTIxQjJcIixsZTpcIlxcdTIyNjRcIixsRTpcIlxcdTIyNjZcIixMZWZ0QW5nbGVCcmFja2V0OlwiXFx1MjdFOFwiLExlZnRBcnJvd0JhcjpcIlxcdTIxRTRcIixsZWZ0YXJyb3c6XCJcXHUyMTkwXCIsTGVmdEFycm93OlwiXFx1MjE5MFwiLExlZnRhcnJvdzpcIlxcdTIxRDBcIixMZWZ0QXJyb3dSaWdodEFycm93OlwiXFx1MjFDNlwiLGxlZnRhcnJvd3RhaWw6XCJcXHUyMUEyXCIsTGVmdENlaWxpbmc6XCJcXHUyMzA4XCIsTGVmdERvdWJsZUJyYWNrZXQ6XCJcXHUyN0U2XCIsTGVmdERvd25UZWVWZWN0b3I6XCJcXHUyOTYxXCIsTGVmdERvd25WZWN0b3JCYXI6XCJcXHUyOTU5XCIsTGVmdERvd25WZWN0b3I6XCJcXHUyMUMzXCIsTGVmdEZsb29yOlwiXFx1MjMwQVwiLGxlZnRoYXJwb29uZG93bjpcIlxcdTIxQkRcIixsZWZ0aGFycG9vbnVwOlwiXFx1MjFCQ1wiLGxlZnRsZWZ0YXJyb3dzOlwiXFx1MjFDN1wiLGxlZnRyaWdodGFycm93OlwiXFx1MjE5NFwiLExlZnRSaWdodEFycm93OlwiXFx1MjE5NFwiLExlZnRyaWdodGFycm93OlwiXFx1MjFENFwiLGxlZnRyaWdodGFycm93czpcIlxcdTIxQzZcIixsZWZ0cmlnaHRoYXJwb29uczpcIlxcdTIxQ0JcIixsZWZ0cmlnaHRzcXVpZ2Fycm93OlwiXFx1MjFBRFwiLExlZnRSaWdodFZlY3RvcjpcIlxcdTI5NEVcIixMZWZ0VGVlQXJyb3c6XCJcXHUyMUE0XCIsTGVmdFRlZTpcIlxcdTIyQTNcIixMZWZ0VGVlVmVjdG9yOlwiXFx1Mjk1QVwiLGxlZnR0aHJlZXRpbWVzOlwiXFx1MjJDQlwiLExlZnRUcmlhbmdsZUJhcjpcIlxcdTI5Q0ZcIixMZWZ0VHJpYW5nbGU6XCJcXHUyMkIyXCIsTGVmdFRyaWFuZ2xlRXF1YWw6XCJcXHUyMkI0XCIsTGVmdFVwRG93blZlY3RvcjpcIlxcdTI5NTFcIixMZWZ0VXBUZWVWZWN0b3I6XCJcXHUyOTYwXCIsTGVmdFVwVmVjdG9yQmFyOlwiXFx1Mjk1OFwiLExlZnRVcFZlY3RvcjpcIlxcdTIxQkZcIixMZWZ0VmVjdG9yQmFyOlwiXFx1Mjk1MlwiLExlZnRWZWN0b3I6XCJcXHUyMUJDXCIsbEVnOlwiXFx1MkE4QlwiLGxlZzpcIlxcdTIyREFcIixsZXE6XCJcXHUyMjY0XCIsbGVxcTpcIlxcdTIyNjZcIixsZXFzbGFudDpcIlxcdTJBN0RcIixsZXNjYzpcIlxcdTJBQThcIixsZXM6XCJcXHUyQTdEXCIsbGVzZG90OlwiXFx1MkE3RlwiLGxlc2RvdG86XCJcXHUyQTgxXCIsbGVzZG90b3I6XCJcXHUyQTgzXCIsbGVzZzpcIlxcdTIyREFcXHVGRTAwXCIsbGVzZ2VzOlwiXFx1MkE5M1wiLGxlc3NhcHByb3g6XCJcXHUyQTg1XCIsbGVzc2RvdDpcIlxcdTIyRDZcIixsZXNzZXFndHI6XCJcXHUyMkRBXCIsbGVzc2VxcWd0cjpcIlxcdTJBOEJcIixMZXNzRXF1YWxHcmVhdGVyOlwiXFx1MjJEQVwiLExlc3NGdWxsRXF1YWw6XCJcXHUyMjY2XCIsTGVzc0dyZWF0ZXI6XCJcXHUyMjc2XCIsbGVzc2d0cjpcIlxcdTIyNzZcIixMZXNzTGVzczpcIlxcdTJBQTFcIixsZXNzc2ltOlwiXFx1MjI3MlwiLExlc3NTbGFudEVxdWFsOlwiXFx1MkE3RFwiLExlc3NUaWxkZTpcIlxcdTIyNzJcIixsZmlzaHQ6XCJcXHUyOTdDXCIsbGZsb29yOlwiXFx1MjMwQVwiLExmcjpcIlxcdXsxRDUwRn1cIixsZnI6XCJcXHV7MUQ1Mjl9XCIsbGc6XCJcXHUyMjc2XCIsbGdFOlwiXFx1MkE5MVwiLGxIYXI6XCJcXHUyOTYyXCIsbGhhcmQ6XCJcXHUyMUJEXCIsbGhhcnU6XCJcXHUyMUJDXCIsbGhhcnVsOlwiXFx1Mjk2QVwiLGxoYmxrOlwiXFx1MjU4NFwiLExKY3k6XCJcXHUwNDA5XCIsbGpjeTpcIlxcdTA0NTlcIixsbGFycjpcIlxcdTIxQzdcIixsbDpcIlxcdTIyNkFcIixMbDpcIlxcdTIyRDhcIixsbGNvcm5lcjpcIlxcdTIzMUVcIixMbGVmdGFycm93OlwiXFx1MjFEQVwiLGxsaGFyZDpcIlxcdTI5NkJcIixsbHRyaTpcIlxcdTI1RkFcIixMbWlkb3Q6XCJcXHUwMTNGXCIsbG1pZG90OlwiXFx1MDE0MFwiLGxtb3VzdGFjaGU6XCJcXHUyM0IwXCIsbG1vdXN0OlwiXFx1MjNCMFwiLGxuYXA6XCJcXHUyQTg5XCIsbG5hcHByb3g6XCJcXHUyQTg5XCIsbG5lOlwiXFx1MkE4N1wiLGxuRTpcIlxcdTIyNjhcIixsbmVxOlwiXFx1MkE4N1wiLGxuZXFxOlwiXFx1MjI2OFwiLGxuc2ltOlwiXFx1MjJFNlwiLGxvYW5nOlwiXFx1MjdFQ1wiLGxvYXJyOlwiXFx1MjFGRFwiLGxvYnJrOlwiXFx1MjdFNlwiLGxvbmdsZWZ0YXJyb3c6XCJcXHUyN0Y1XCIsTG9uZ0xlZnRBcnJvdzpcIlxcdTI3RjVcIixMb25nbGVmdGFycm93OlwiXFx1MjdGOFwiLGxvbmdsZWZ0cmlnaHRhcnJvdzpcIlxcdTI3RjdcIixMb25nTGVmdFJpZ2h0QXJyb3c6XCJcXHUyN0Y3XCIsTG9uZ2xlZnRyaWdodGFycm93OlwiXFx1MjdGQVwiLGxvbmdtYXBzdG86XCJcXHUyN0ZDXCIsbG9uZ3JpZ2h0YXJyb3c6XCJcXHUyN0Y2XCIsTG9uZ1JpZ2h0QXJyb3c6XCJcXHUyN0Y2XCIsTG9uZ3JpZ2h0YXJyb3c6XCJcXHUyN0Y5XCIsbG9vcGFycm93bGVmdDpcIlxcdTIxQUJcIixsb29wYXJyb3dyaWdodDpcIlxcdTIxQUNcIixsb3BhcjpcIlxcdTI5ODVcIixMb3BmOlwiXFx1ezFENTQzfVwiLGxvcGY6XCJcXHV7MUQ1NUR9XCIsbG9wbHVzOlwiXFx1MkEyRFwiLGxvdGltZXM6XCJcXHUyQTM0XCIsbG93YXN0OlwiXFx1MjIxN1wiLGxvd2JhcjpcIl9cIixMb3dlckxlZnRBcnJvdzpcIlxcdTIxOTlcIixMb3dlclJpZ2h0QXJyb3c6XCJcXHUyMTk4XCIsbG96OlwiXFx1MjVDQVwiLGxvemVuZ2U6XCJcXHUyNUNBXCIsbG96ZjpcIlxcdTI5RUJcIixscGFyOlwiKFwiLGxwYXJsdDpcIlxcdTI5OTNcIixscmFycjpcIlxcdTIxQzZcIixscmNvcm5lcjpcIlxcdTIzMUZcIixscmhhcjpcIlxcdTIxQ0JcIixscmhhcmQ6XCJcXHUyOTZEXCIsbHJtOlwiXFx1MjAwRVwiLGxydHJpOlwiXFx1MjJCRlwiLGxzYXF1bzpcIlxcdTIwMzlcIixsc2NyOlwiXFx1ezFENEMxfVwiLExzY3I6XCJcXHUyMTEyXCIsbHNoOlwiXFx1MjFCMFwiLExzaDpcIlxcdTIxQjBcIixsc2ltOlwiXFx1MjI3MlwiLGxzaW1lOlwiXFx1MkE4RFwiLGxzaW1nOlwiXFx1MkE4RlwiLGxzcWI6XCJbXCIsbHNxdW86XCJcXHUyMDE4XCIsbHNxdW9yOlwiXFx1MjAxQVwiLExzdHJvazpcIlxcdTAxNDFcIixsc3Ryb2s6XCJcXHUwMTQyXCIsbHRjYzpcIlxcdTJBQTZcIixsdGNpcjpcIlxcdTJBNzlcIixsdDpcIjxcIixMVDpcIjxcIixMdDpcIlxcdTIyNkFcIixsdGRvdDpcIlxcdTIyRDZcIixsdGhyZWU6XCJcXHUyMkNCXCIsbHRpbWVzOlwiXFx1MjJDOVwiLGx0bGFycjpcIlxcdTI5NzZcIixsdHF1ZXN0OlwiXFx1MkE3QlwiLGx0cmk6XCJcXHUyNUMzXCIsbHRyaWU6XCJcXHUyMkI0XCIsbHRyaWY6XCJcXHUyNUMyXCIsbHRyUGFyOlwiXFx1Mjk5NlwiLGx1cmRzaGFyOlwiXFx1Mjk0QVwiLGx1cnVoYXI6XCJcXHUyOTY2XCIsbHZlcnRuZXFxOlwiXFx1MjI2OFxcdUZFMDBcIixsdm5FOlwiXFx1MjI2OFxcdUZFMDBcIixtYWNyOlwiXFx4QUZcIixtYWxlOlwiXFx1MjY0MlwiLG1hbHQ6XCJcXHUyNzIwXCIsbWFsdGVzZTpcIlxcdTI3MjBcIixNYXA6XCJcXHUyOTA1XCIsbWFwOlwiXFx1MjFBNlwiLG1hcHN0bzpcIlxcdTIxQTZcIixtYXBzdG9kb3duOlwiXFx1MjFBN1wiLG1hcHN0b2xlZnQ6XCJcXHUyMUE0XCIsbWFwc3RvdXA6XCJcXHUyMUE1XCIsbWFya2VyOlwiXFx1MjVBRVwiLG1jb21tYTpcIlxcdTJBMjlcIixNY3k6XCJcXHUwNDFDXCIsbWN5OlwiXFx1MDQzQ1wiLG1kYXNoOlwiXFx1MjAxNFwiLG1ERG90OlwiXFx1MjIzQVwiLG1lYXN1cmVkYW5nbGU6XCJcXHUyMjIxXCIsTWVkaXVtU3BhY2U6XCJcXHUyMDVGXCIsTWVsbGludHJmOlwiXFx1MjEzM1wiLE1mcjpcIlxcdXsxRDUxMH1cIixtZnI6XCJcXHV7MUQ1MkF9XCIsbWhvOlwiXFx1MjEyN1wiLG1pY3JvOlwiXFx4QjVcIixtaWRhc3Q6XCIqXCIsbWlkY2lyOlwiXFx1MkFGMFwiLG1pZDpcIlxcdTIyMjNcIixtaWRkb3Q6XCJcXHhCN1wiLG1pbnVzYjpcIlxcdTIyOUZcIixtaW51czpcIlxcdTIyMTJcIixtaW51c2Q6XCJcXHUyMjM4XCIsbWludXNkdTpcIlxcdTJBMkFcIixNaW51c1BsdXM6XCJcXHUyMjEzXCIsbWxjcDpcIlxcdTJBREJcIixtbGRyOlwiXFx1MjAyNlwiLG1ucGx1czpcIlxcdTIyMTNcIixtb2RlbHM6XCJcXHUyMkE3XCIsTW9wZjpcIlxcdXsxRDU0NH1cIixtb3BmOlwiXFx1ezFENTVFfVwiLG1wOlwiXFx1MjIxM1wiLG1zY3I6XCJcXHV7MUQ0QzJ9XCIsTXNjcjpcIlxcdTIxMzNcIixtc3Rwb3M6XCJcXHUyMjNFXCIsTXU6XCJcXHUwMzlDXCIsbXU6XCJcXHUwM0JDXCIsbXVsdGltYXA6XCJcXHUyMkI4XCIsbXVtYXA6XCJcXHUyMkI4XCIsbmFibGE6XCJcXHUyMjA3XCIsTmFjdXRlOlwiXFx1MDE0M1wiLG5hY3V0ZTpcIlxcdTAxNDRcIixuYW5nOlwiXFx1MjIyMFxcdTIwRDJcIixuYXA6XCJcXHUyMjQ5XCIsbmFwRTpcIlxcdTJBNzBcXHUwMzM4XCIsbmFwaWQ6XCJcXHUyMjRCXFx1MDMzOFwiLG5hcG9zOlwiXFx1MDE0OVwiLG5hcHByb3g6XCJcXHUyMjQ5XCIsbmF0dXJhbDpcIlxcdTI2NkVcIixuYXR1cmFsczpcIlxcdTIxMTVcIixuYXR1cjpcIlxcdTI2NkVcIixuYnNwOlwiXFx4QTBcIixuYnVtcDpcIlxcdTIyNEVcXHUwMzM4XCIsbmJ1bXBlOlwiXFx1MjI0RlxcdTAzMzhcIixuY2FwOlwiXFx1MkE0M1wiLE5jYXJvbjpcIlxcdTAxNDdcIixuY2Fyb246XCJcXHUwMTQ4XCIsTmNlZGlsOlwiXFx1MDE0NVwiLG5jZWRpbDpcIlxcdTAxNDZcIixuY29uZzpcIlxcdTIyNDdcIixuY29uZ2RvdDpcIlxcdTJBNkRcXHUwMzM4XCIsbmN1cDpcIlxcdTJBNDJcIixOY3k6XCJcXHUwNDFEXCIsbmN5OlwiXFx1MDQzRFwiLG5kYXNoOlwiXFx1MjAxM1wiLG5lYXJoazpcIlxcdTI5MjRcIixuZWFycjpcIlxcdTIxOTdcIixuZUFycjpcIlxcdTIxRDdcIixuZWFycm93OlwiXFx1MjE5N1wiLG5lOlwiXFx1MjI2MFwiLG5lZG90OlwiXFx1MjI1MFxcdTAzMzhcIixOZWdhdGl2ZU1lZGl1bVNwYWNlOlwiXFx1MjAwQlwiLE5lZ2F0aXZlVGhpY2tTcGFjZTpcIlxcdTIwMEJcIixOZWdhdGl2ZVRoaW5TcGFjZTpcIlxcdTIwMEJcIixOZWdhdGl2ZVZlcnlUaGluU3BhY2U6XCJcXHUyMDBCXCIsbmVxdWl2OlwiXFx1MjI2MlwiLG5lc2VhcjpcIlxcdTI5MjhcIixuZXNpbTpcIlxcdTIyNDJcXHUwMzM4XCIsTmVzdGVkR3JlYXRlckdyZWF0ZXI6XCJcXHUyMjZCXCIsTmVzdGVkTGVzc0xlc3M6XCJcXHUyMjZBXCIsTmV3TGluZTpgXG5gLG5leGlzdDpcIlxcdTIyMDRcIixuZXhpc3RzOlwiXFx1MjIwNFwiLE5mcjpcIlxcdXsxRDUxMX1cIixuZnI6XCJcXHV7MUQ1MkJ9XCIsbmdFOlwiXFx1MjI2N1xcdTAzMzhcIixuZ2U6XCJcXHUyMjcxXCIsbmdlcTpcIlxcdTIyNzFcIixuZ2VxcTpcIlxcdTIyNjdcXHUwMzM4XCIsbmdlcXNsYW50OlwiXFx1MkE3RVxcdTAzMzhcIixuZ2VzOlwiXFx1MkE3RVxcdTAzMzhcIixuR2c6XCJcXHUyMkQ5XFx1MDMzOFwiLG5nc2ltOlwiXFx1MjI3NVwiLG5HdDpcIlxcdTIyNkJcXHUyMEQyXCIsbmd0OlwiXFx1MjI2RlwiLG5ndHI6XCJcXHUyMjZGXCIsbkd0djpcIlxcdTIyNkJcXHUwMzM4XCIsbmhhcnI6XCJcXHUyMUFFXCIsbmhBcnI6XCJcXHUyMUNFXCIsbmhwYXI6XCJcXHUyQUYyXCIsbmk6XCJcXHUyMjBCXCIsbmlzOlwiXFx1MjJGQ1wiLG5pc2Q6XCJcXHUyMkZBXCIsbml2OlwiXFx1MjIwQlwiLE5KY3k6XCJcXHUwNDBBXCIsbmpjeTpcIlxcdTA0NUFcIixubGFycjpcIlxcdTIxOUFcIixubEFycjpcIlxcdTIxQ0RcIixubGRyOlwiXFx1MjAyNVwiLG5sRTpcIlxcdTIyNjZcXHUwMzM4XCIsbmxlOlwiXFx1MjI3MFwiLG5sZWZ0YXJyb3c6XCJcXHUyMTlBXCIsbkxlZnRhcnJvdzpcIlxcdTIxQ0RcIixubGVmdHJpZ2h0YXJyb3c6XCJcXHUyMUFFXCIsbkxlZnRyaWdodGFycm93OlwiXFx1MjFDRVwiLG5sZXE6XCJcXHUyMjcwXCIsbmxlcXE6XCJcXHUyMjY2XFx1MDMzOFwiLG5sZXFzbGFudDpcIlxcdTJBN0RcXHUwMzM4XCIsbmxlczpcIlxcdTJBN0RcXHUwMzM4XCIsbmxlc3M6XCJcXHUyMjZFXCIsbkxsOlwiXFx1MjJEOFxcdTAzMzhcIixubHNpbTpcIlxcdTIyNzRcIixuTHQ6XCJcXHUyMjZBXFx1MjBEMlwiLG5sdDpcIlxcdTIyNkVcIixubHRyaTpcIlxcdTIyRUFcIixubHRyaWU6XCJcXHUyMkVDXCIsbkx0djpcIlxcdTIyNkFcXHUwMzM4XCIsbm1pZDpcIlxcdTIyMjRcIixOb0JyZWFrOlwiXFx1MjA2MFwiLE5vbkJyZWFraW5nU3BhY2U6XCJcXHhBMFwiLG5vcGY6XCJcXHV7MUQ1NUZ9XCIsTm9wZjpcIlxcdTIxMTVcIixOb3Q6XCJcXHUyQUVDXCIsbm90OlwiXFx4QUNcIixOb3RDb25ncnVlbnQ6XCJcXHUyMjYyXCIsTm90Q3VwQ2FwOlwiXFx1MjI2RFwiLE5vdERvdWJsZVZlcnRpY2FsQmFyOlwiXFx1MjIyNlwiLE5vdEVsZW1lbnQ6XCJcXHUyMjA5XCIsTm90RXF1YWw6XCJcXHUyMjYwXCIsTm90RXF1YWxUaWxkZTpcIlxcdTIyNDJcXHUwMzM4XCIsTm90RXhpc3RzOlwiXFx1MjIwNFwiLE5vdEdyZWF0ZXI6XCJcXHUyMjZGXCIsTm90R3JlYXRlckVxdWFsOlwiXFx1MjI3MVwiLE5vdEdyZWF0ZXJGdWxsRXF1YWw6XCJcXHUyMjY3XFx1MDMzOFwiLE5vdEdyZWF0ZXJHcmVhdGVyOlwiXFx1MjI2QlxcdTAzMzhcIixOb3RHcmVhdGVyTGVzczpcIlxcdTIyNzlcIixOb3RHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcXHUwMzM4XCIsTm90R3JlYXRlclRpbGRlOlwiXFx1MjI3NVwiLE5vdEh1bXBEb3duSHVtcDpcIlxcdTIyNEVcXHUwMzM4XCIsTm90SHVtcEVxdWFsOlwiXFx1MjI0RlxcdTAzMzhcIixub3RpbjpcIlxcdTIyMDlcIixub3RpbmRvdDpcIlxcdTIyRjVcXHUwMzM4XCIsbm90aW5FOlwiXFx1MjJGOVxcdTAzMzhcIixub3RpbnZhOlwiXFx1MjIwOVwiLG5vdGludmI6XCJcXHUyMkY3XCIsbm90aW52YzpcIlxcdTIyRjZcIixOb3RMZWZ0VHJpYW5nbGVCYXI6XCJcXHUyOUNGXFx1MDMzOFwiLE5vdExlZnRUcmlhbmdsZTpcIlxcdTIyRUFcIixOb3RMZWZ0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRUNcIixOb3RMZXNzOlwiXFx1MjI2RVwiLE5vdExlc3NFcXVhbDpcIlxcdTIyNzBcIixOb3RMZXNzR3JlYXRlcjpcIlxcdTIyNzhcIixOb3RMZXNzTGVzczpcIlxcdTIyNkFcXHUwMzM4XCIsTm90TGVzc1NsYW50RXF1YWw6XCJcXHUyQTdEXFx1MDMzOFwiLE5vdExlc3NUaWxkZTpcIlxcdTIyNzRcIixOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcXHUwMzM4XCIsTm90TmVzdGVkTGVzc0xlc3M6XCJcXHUyQUExXFx1MDMzOFwiLG5vdG5pOlwiXFx1MjIwQ1wiLG5vdG5pdmE6XCJcXHUyMjBDXCIsbm90bml2YjpcIlxcdTIyRkVcIixub3RuaXZjOlwiXFx1MjJGRFwiLE5vdFByZWNlZGVzOlwiXFx1MjI4MFwiLE5vdFByZWNlZGVzRXF1YWw6XCJcXHUyQUFGXFx1MDMzOFwiLE5vdFByZWNlZGVzU2xhbnRFcXVhbDpcIlxcdTIyRTBcIixOb3RSZXZlcnNlRWxlbWVudDpcIlxcdTIyMENcIixOb3RSaWdodFRyaWFuZ2xlQmFyOlwiXFx1MjlEMFxcdTAzMzhcIixOb3RSaWdodFRyaWFuZ2xlOlwiXFx1MjJFQlwiLE5vdFJpZ2h0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRURcIixOb3RTcXVhcmVTdWJzZXQ6XCJcXHUyMjhGXFx1MDMzOFwiLE5vdFNxdWFyZVN1YnNldEVxdWFsOlwiXFx1MjJFMlwiLE5vdFNxdWFyZVN1cGVyc2V0OlwiXFx1MjI5MFxcdTAzMzhcIixOb3RTcXVhcmVTdXBlcnNldEVxdWFsOlwiXFx1MjJFM1wiLE5vdFN1YnNldDpcIlxcdTIyODJcXHUyMEQyXCIsTm90U3Vic2V0RXF1YWw6XCJcXHUyMjg4XCIsTm90U3VjY2VlZHM6XCJcXHUyMjgxXCIsTm90U3VjY2VlZHNFcXVhbDpcIlxcdTJBQjBcXHUwMzM4XCIsTm90U3VjY2VlZHNTbGFudEVxdWFsOlwiXFx1MjJFMVwiLE5vdFN1Y2NlZWRzVGlsZGU6XCJcXHUyMjdGXFx1MDMzOFwiLE5vdFN1cGVyc2V0OlwiXFx1MjI4M1xcdTIwRDJcIixOb3RTdXBlcnNldEVxdWFsOlwiXFx1MjI4OVwiLE5vdFRpbGRlOlwiXFx1MjI0MVwiLE5vdFRpbGRlRXF1YWw6XCJcXHUyMjQ0XCIsTm90VGlsZGVGdWxsRXF1YWw6XCJcXHUyMjQ3XCIsTm90VGlsZGVUaWxkZTpcIlxcdTIyNDlcIixOb3RWZXJ0aWNhbEJhcjpcIlxcdTIyMjRcIixucGFyYWxsZWw6XCJcXHUyMjI2XCIsbnBhcjpcIlxcdTIyMjZcIixucGFyc2w6XCJcXHUyQUZEXFx1MjBFNVwiLG5wYXJ0OlwiXFx1MjIwMlxcdTAzMzhcIixucG9saW50OlwiXFx1MkExNFwiLG5wcjpcIlxcdTIyODBcIixucHJjdWU6XCJcXHUyMkUwXCIsbnByZWM6XCJcXHUyMjgwXCIsbnByZWNlcTpcIlxcdTJBQUZcXHUwMzM4XCIsbnByZTpcIlxcdTJBQUZcXHUwMzM4XCIsbnJhcnJjOlwiXFx1MjkzM1xcdTAzMzhcIixucmFycjpcIlxcdTIxOUJcIixuckFycjpcIlxcdTIxQ0ZcIixucmFycnc6XCJcXHUyMTlEXFx1MDMzOFwiLG5yaWdodGFycm93OlwiXFx1MjE5QlwiLG5SaWdodGFycm93OlwiXFx1MjFDRlwiLG5ydHJpOlwiXFx1MjJFQlwiLG5ydHJpZTpcIlxcdTIyRURcIixuc2M6XCJcXHUyMjgxXCIsbnNjY3VlOlwiXFx1MjJFMVwiLG5zY2U6XCJcXHUyQUIwXFx1MDMzOFwiLE5zY3I6XCJcXHV7MUQ0QTl9XCIsbnNjcjpcIlxcdXsxRDRDM31cIixuc2hvcnRtaWQ6XCJcXHUyMjI0XCIsbnNob3J0cGFyYWxsZWw6XCJcXHUyMjI2XCIsbnNpbTpcIlxcdTIyNDFcIixuc2ltZTpcIlxcdTIyNDRcIixuc2ltZXE6XCJcXHUyMjQ0XCIsbnNtaWQ6XCJcXHUyMjI0XCIsbnNwYXI6XCJcXHUyMjI2XCIsbnNxc3ViZTpcIlxcdTIyRTJcIixuc3FzdXBlOlwiXFx1MjJFM1wiLG5zdWI6XCJcXHUyMjg0XCIsbnN1YkU6XCJcXHUyQUM1XFx1MDMzOFwiLG5zdWJlOlwiXFx1MjI4OFwiLG5zdWJzZXQ6XCJcXHUyMjgyXFx1MjBEMlwiLG5zdWJzZXRlcTpcIlxcdTIyODhcIixuc3Vic2V0ZXFxOlwiXFx1MkFDNVxcdTAzMzhcIixuc3VjYzpcIlxcdTIyODFcIixuc3VjY2VxOlwiXFx1MkFCMFxcdTAzMzhcIixuc3VwOlwiXFx1MjI4NVwiLG5zdXBFOlwiXFx1MkFDNlxcdTAzMzhcIixuc3VwZTpcIlxcdTIyODlcIixuc3Vwc2V0OlwiXFx1MjI4M1xcdTIwRDJcIixuc3Vwc2V0ZXE6XCJcXHUyMjg5XCIsbnN1cHNldGVxcTpcIlxcdTJBQzZcXHUwMzM4XCIsbnRnbDpcIlxcdTIyNzlcIixOdGlsZGU6XCJcXHhEMVwiLG50aWxkZTpcIlxceEYxXCIsbnRsZzpcIlxcdTIyNzhcIixudHJpYW5nbGVsZWZ0OlwiXFx1MjJFQVwiLG50cmlhbmdsZWxlZnRlcTpcIlxcdTIyRUNcIixudHJpYW5nbGVyaWdodDpcIlxcdTIyRUJcIixudHJpYW5nbGVyaWdodGVxOlwiXFx1MjJFRFwiLE51OlwiXFx1MDM5RFwiLG51OlwiXFx1MDNCRFwiLG51bTpcIiNcIixudW1lcm86XCJcXHUyMTE2XCIsbnVtc3A6XCJcXHUyMDA3XCIsbnZhcDpcIlxcdTIyNERcXHUyMEQyXCIsbnZkYXNoOlwiXFx1MjJBQ1wiLG52RGFzaDpcIlxcdTIyQURcIixuVmRhc2g6XCJcXHUyMkFFXCIsblZEYXNoOlwiXFx1MjJBRlwiLG52Z2U6XCJcXHUyMjY1XFx1MjBEMlwiLG52Z3Q6XCI+XFx1MjBEMlwiLG52SGFycjpcIlxcdTI5MDRcIixudmluZmluOlwiXFx1MjlERVwiLG52bEFycjpcIlxcdTI5MDJcIixudmxlOlwiXFx1MjI2NFxcdTIwRDJcIixudmx0OlwiPFxcdTIwRDJcIixudmx0cmllOlwiXFx1MjJCNFxcdTIwRDJcIixudnJBcnI6XCJcXHUyOTAzXCIsbnZydHJpZTpcIlxcdTIyQjVcXHUyMEQyXCIsbnZzaW06XCJcXHUyMjNDXFx1MjBEMlwiLG53YXJoazpcIlxcdTI5MjNcIixud2FycjpcIlxcdTIxOTZcIixud0FycjpcIlxcdTIxRDZcIixud2Fycm93OlwiXFx1MjE5NlwiLG53bmVhcjpcIlxcdTI5MjdcIixPYWN1dGU6XCJcXHhEM1wiLG9hY3V0ZTpcIlxceEYzXCIsb2FzdDpcIlxcdTIyOUJcIixPY2lyYzpcIlxceEQ0XCIsb2NpcmM6XCJcXHhGNFwiLG9jaXI6XCJcXHUyMjlBXCIsT2N5OlwiXFx1MDQxRVwiLG9jeTpcIlxcdTA0M0VcIixvZGFzaDpcIlxcdTIyOURcIixPZGJsYWM6XCJcXHUwMTUwXCIsb2RibGFjOlwiXFx1MDE1MVwiLG9kaXY6XCJcXHUyQTM4XCIsb2RvdDpcIlxcdTIyOTlcIixvZHNvbGQ6XCJcXHUyOUJDXCIsT0VsaWc6XCJcXHUwMTUyXCIsb2VsaWc6XCJcXHUwMTUzXCIsb2ZjaXI6XCJcXHUyOUJGXCIsT2ZyOlwiXFx1ezFENTEyfVwiLG9mcjpcIlxcdXsxRDUyQ31cIixvZ29uOlwiXFx1MDJEQlwiLE9ncmF2ZTpcIlxceEQyXCIsb2dyYXZlOlwiXFx4RjJcIixvZ3Q6XCJcXHUyOUMxXCIsb2hiYXI6XCJcXHUyOUI1XCIsb2htOlwiXFx1MDNBOVwiLG9pbnQ6XCJcXHUyMjJFXCIsb2xhcnI6XCJcXHUyMUJBXCIsb2xjaXI6XCJcXHUyOUJFXCIsb2xjcm9zczpcIlxcdTI5QkJcIixvbGluZTpcIlxcdTIwM0VcIixvbHQ6XCJcXHUyOUMwXCIsT21hY3I6XCJcXHUwMTRDXCIsb21hY3I6XCJcXHUwMTREXCIsT21lZ2E6XCJcXHUwM0E5XCIsb21lZ2E6XCJcXHUwM0M5XCIsT21pY3JvbjpcIlxcdTAzOUZcIixvbWljcm9uOlwiXFx1MDNCRlwiLG9taWQ6XCJcXHUyOUI2XCIsb21pbnVzOlwiXFx1MjI5NlwiLE9vcGY6XCJcXHV7MUQ1NDZ9XCIsb29wZjpcIlxcdXsxRDU2MH1cIixvcGFyOlwiXFx1MjlCN1wiLE9wZW5DdXJseURvdWJsZVF1b3RlOlwiXFx1MjAxQ1wiLE9wZW5DdXJseVF1b3RlOlwiXFx1MjAxOFwiLG9wZXJwOlwiXFx1MjlCOVwiLG9wbHVzOlwiXFx1MjI5NVwiLG9yYXJyOlwiXFx1MjFCQlwiLE9yOlwiXFx1MkE1NFwiLG9yOlwiXFx1MjIyOFwiLG9yZDpcIlxcdTJBNURcIixvcmRlcjpcIlxcdTIxMzRcIixvcmRlcm9mOlwiXFx1MjEzNFwiLG9yZGY6XCJcXHhBQVwiLG9yZG06XCJcXHhCQVwiLG9yaWdvZjpcIlxcdTIyQjZcIixvcm9yOlwiXFx1MkE1NlwiLG9yc2xvcGU6XCJcXHUyQTU3XCIsb3J2OlwiXFx1MkE1QlwiLG9TOlwiXFx1MjRDOFwiLE9zY3I6XCJcXHV7MUQ0QUF9XCIsb3NjcjpcIlxcdTIxMzRcIixPc2xhc2g6XCJcXHhEOFwiLG9zbGFzaDpcIlxceEY4XCIsb3NvbDpcIlxcdTIyOThcIixPdGlsZGU6XCJcXHhENVwiLG90aWxkZTpcIlxceEY1XCIsb3RpbWVzYXM6XCJcXHUyQTM2XCIsT3RpbWVzOlwiXFx1MkEzN1wiLG90aW1lczpcIlxcdTIyOTdcIixPdW1sOlwiXFx4RDZcIixvdW1sOlwiXFx4RjZcIixvdmJhcjpcIlxcdTIzM0RcIixPdmVyQmFyOlwiXFx1MjAzRVwiLE92ZXJCcmFjZTpcIlxcdTIzREVcIixPdmVyQnJhY2tldDpcIlxcdTIzQjRcIixPdmVyUGFyZW50aGVzaXM6XCJcXHUyM0RDXCIscGFyYTpcIlxceEI2XCIscGFyYWxsZWw6XCJcXHUyMjI1XCIscGFyOlwiXFx1MjIyNVwiLHBhcnNpbTpcIlxcdTJBRjNcIixwYXJzbDpcIlxcdTJBRkRcIixwYXJ0OlwiXFx1MjIwMlwiLFBhcnRpYWxEOlwiXFx1MjIwMlwiLFBjeTpcIlxcdTA0MUZcIixwY3k6XCJcXHUwNDNGXCIscGVyY250OlwiJVwiLHBlcmlvZDpcIi5cIixwZXJtaWw6XCJcXHUyMDMwXCIscGVycDpcIlxcdTIyQTVcIixwZXJ0ZW5rOlwiXFx1MjAzMVwiLFBmcjpcIlxcdXsxRDUxM31cIixwZnI6XCJcXHV7MUQ1MkR9XCIsUGhpOlwiXFx1MDNBNlwiLHBoaTpcIlxcdTAzQzZcIixwaGl2OlwiXFx1MDNENVwiLHBobW1hdDpcIlxcdTIxMzNcIixwaG9uZTpcIlxcdTI2MEVcIixQaTpcIlxcdTAzQTBcIixwaTpcIlxcdTAzQzBcIixwaXRjaGZvcms6XCJcXHUyMkQ0XCIscGl2OlwiXFx1MDNENlwiLHBsYW5jazpcIlxcdTIxMEZcIixwbGFuY2toOlwiXFx1MjEwRVwiLHBsYW5rdjpcIlxcdTIxMEZcIixwbHVzYWNpcjpcIlxcdTJBMjNcIixwbHVzYjpcIlxcdTIyOUVcIixwbHVzY2lyOlwiXFx1MkEyMlwiLHBsdXM6XCIrXCIscGx1c2RvOlwiXFx1MjIxNFwiLHBsdXNkdTpcIlxcdTJBMjVcIixwbHVzZTpcIlxcdTJBNzJcIixQbHVzTWludXM6XCJcXHhCMVwiLHBsdXNtbjpcIlxceEIxXCIscGx1c3NpbTpcIlxcdTJBMjZcIixwbHVzdHdvOlwiXFx1MkEyN1wiLHBtOlwiXFx4QjFcIixQb2luY2FyZXBsYW5lOlwiXFx1MjEwQ1wiLHBvaW50aW50OlwiXFx1MkExNVwiLHBvcGY6XCJcXHV7MUQ1NjF9XCIsUG9wZjpcIlxcdTIxMTlcIixwb3VuZDpcIlxceEEzXCIscHJhcDpcIlxcdTJBQjdcIixQcjpcIlxcdTJBQkJcIixwcjpcIlxcdTIyN0FcIixwcmN1ZTpcIlxcdTIyN0NcIixwcmVjYXBwcm94OlwiXFx1MkFCN1wiLHByZWM6XCJcXHUyMjdBXCIscHJlY2N1cmx5ZXE6XCJcXHUyMjdDXCIsUHJlY2VkZXM6XCJcXHUyMjdBXCIsUHJlY2VkZXNFcXVhbDpcIlxcdTJBQUZcIixQcmVjZWRlc1NsYW50RXF1YWw6XCJcXHUyMjdDXCIsUHJlY2VkZXNUaWxkZTpcIlxcdTIyN0VcIixwcmVjZXE6XCJcXHUyQUFGXCIscHJlY25hcHByb3g6XCJcXHUyQUI5XCIscHJlY25lcXE6XCJcXHUyQUI1XCIscHJlY25zaW06XCJcXHUyMkU4XCIscHJlOlwiXFx1MkFBRlwiLHByRTpcIlxcdTJBQjNcIixwcmVjc2ltOlwiXFx1MjI3RVwiLHByaW1lOlwiXFx1MjAzMlwiLFByaW1lOlwiXFx1MjAzM1wiLHByaW1lczpcIlxcdTIxMTlcIixwcm5hcDpcIlxcdTJBQjlcIixwcm5FOlwiXFx1MkFCNVwiLHBybnNpbTpcIlxcdTIyRThcIixwcm9kOlwiXFx1MjIwRlwiLFByb2R1Y3Q6XCJcXHUyMjBGXCIscHJvZmFsYXI6XCJcXHUyMzJFXCIscHJvZmxpbmU6XCJcXHUyMzEyXCIscHJvZnN1cmY6XCJcXHUyMzEzXCIscHJvcDpcIlxcdTIyMURcIixQcm9wb3J0aW9uYWw6XCJcXHUyMjFEXCIsUHJvcG9ydGlvbjpcIlxcdTIyMzdcIixwcm9wdG86XCJcXHUyMjFEXCIscHJzaW06XCJcXHUyMjdFXCIscHJ1cmVsOlwiXFx1MjJCMFwiLFBzY3I6XCJcXHV7MUQ0QUJ9XCIscHNjcjpcIlxcdXsxRDRDNX1cIixQc2k6XCJcXHUwM0E4XCIscHNpOlwiXFx1MDNDOFwiLHB1bmNzcDpcIlxcdTIwMDhcIixRZnI6XCJcXHV7MUQ1MTR9XCIscWZyOlwiXFx1ezFENTJFfVwiLHFpbnQ6XCJcXHUyQTBDXCIscW9wZjpcIlxcdXsxRDU2Mn1cIixRb3BmOlwiXFx1MjExQVwiLHFwcmltZTpcIlxcdTIwNTdcIixRc2NyOlwiXFx1ezFENEFDfVwiLHFzY3I6XCJcXHV7MUQ0QzZ9XCIscXVhdGVybmlvbnM6XCJcXHUyMTBEXCIscXVhdGludDpcIlxcdTJBMTZcIixxdWVzdDpcIj9cIixxdWVzdGVxOlwiXFx1MjI1RlwiLHF1b3Q6J1wiJyxRVU9UOidcIicsckFhcnI6XCJcXHUyMURCXCIscmFjZTpcIlxcdTIyM0RcXHUwMzMxXCIsUmFjdXRlOlwiXFx1MDE1NFwiLHJhY3V0ZTpcIlxcdTAxNTVcIixyYWRpYzpcIlxcdTIyMUFcIixyYWVtcHR5djpcIlxcdTI5QjNcIixyYW5nOlwiXFx1MjdFOVwiLFJhbmc6XCJcXHUyN0VCXCIscmFuZ2Q6XCJcXHUyOTkyXCIscmFuZ2U6XCJcXHUyOUE1XCIscmFuZ2xlOlwiXFx1MjdFOVwiLHJhcXVvOlwiXFx4QkJcIixyYXJyYXA6XCJcXHUyOTc1XCIscmFycmI6XCJcXHUyMUU1XCIscmFycmJmczpcIlxcdTI5MjBcIixyYXJyYzpcIlxcdTI5MzNcIixyYXJyOlwiXFx1MjE5MlwiLFJhcnI6XCJcXHUyMUEwXCIsckFycjpcIlxcdTIxRDJcIixyYXJyZnM6XCJcXHUyOTFFXCIscmFycmhrOlwiXFx1MjFBQVwiLHJhcnJscDpcIlxcdTIxQUNcIixyYXJycGw6XCJcXHUyOTQ1XCIscmFycnNpbTpcIlxcdTI5NzRcIixSYXJydGw6XCJcXHUyOTE2XCIscmFycnRsOlwiXFx1MjFBM1wiLHJhcnJ3OlwiXFx1MjE5RFwiLHJhdGFpbDpcIlxcdTI5MUFcIixyQXRhaWw6XCJcXHUyOTFDXCIscmF0aW86XCJcXHUyMjM2XCIscmF0aW9uYWxzOlwiXFx1MjExQVwiLHJiYXJyOlwiXFx1MjkwRFwiLHJCYXJyOlwiXFx1MjkwRlwiLFJCYXJyOlwiXFx1MjkxMFwiLHJiYnJrOlwiXFx1Mjc3M1wiLHJicmFjZTpcIn1cIixyYnJhY2s6XCJdXCIscmJya2U6XCJcXHUyOThDXCIscmJya3NsZDpcIlxcdTI5OEVcIixyYnJrc2x1OlwiXFx1Mjk5MFwiLFJjYXJvbjpcIlxcdTAxNThcIixyY2Fyb246XCJcXHUwMTU5XCIsUmNlZGlsOlwiXFx1MDE1NlwiLHJjZWRpbDpcIlxcdTAxNTdcIixyY2VpbDpcIlxcdTIzMDlcIixyY3ViOlwifVwiLFJjeTpcIlxcdTA0MjBcIixyY3k6XCJcXHUwNDQwXCIscmRjYTpcIlxcdTI5MzdcIixyZGxkaGFyOlwiXFx1Mjk2OVwiLHJkcXVvOlwiXFx1MjAxRFwiLHJkcXVvcjpcIlxcdTIwMURcIixyZHNoOlwiXFx1MjFCM1wiLHJlYWw6XCJcXHUyMTFDXCIscmVhbGluZTpcIlxcdTIxMUJcIixyZWFscGFydDpcIlxcdTIxMUNcIixyZWFsczpcIlxcdTIxMURcIixSZTpcIlxcdTIxMUNcIixyZWN0OlwiXFx1MjVBRFwiLHJlZzpcIlxceEFFXCIsUkVHOlwiXFx4QUVcIixSZXZlcnNlRWxlbWVudDpcIlxcdTIyMEJcIixSZXZlcnNlRXF1aWxpYnJpdW06XCJcXHUyMUNCXCIsUmV2ZXJzZVVwRXF1aWxpYnJpdW06XCJcXHUyOTZGXCIscmZpc2h0OlwiXFx1Mjk3RFwiLHJmbG9vcjpcIlxcdTIzMEJcIixyZnI6XCJcXHV7MUQ1MkZ9XCIsUmZyOlwiXFx1MjExQ1wiLHJIYXI6XCJcXHUyOTY0XCIscmhhcmQ6XCJcXHUyMUMxXCIscmhhcnU6XCJcXHUyMUMwXCIscmhhcnVsOlwiXFx1Mjk2Q1wiLFJobzpcIlxcdTAzQTFcIixyaG86XCJcXHUwM0MxXCIscmhvdjpcIlxcdTAzRjFcIixSaWdodEFuZ2xlQnJhY2tldDpcIlxcdTI3RTlcIixSaWdodEFycm93QmFyOlwiXFx1MjFFNVwiLHJpZ2h0YXJyb3c6XCJcXHUyMTkyXCIsUmlnaHRBcnJvdzpcIlxcdTIxOTJcIixSaWdodGFycm93OlwiXFx1MjFEMlwiLFJpZ2h0QXJyb3dMZWZ0QXJyb3c6XCJcXHUyMUM0XCIscmlnaHRhcnJvd3RhaWw6XCJcXHUyMUEzXCIsUmlnaHRDZWlsaW5nOlwiXFx1MjMwOVwiLFJpZ2h0RG91YmxlQnJhY2tldDpcIlxcdTI3RTdcIixSaWdodERvd25UZWVWZWN0b3I6XCJcXHUyOTVEXCIsUmlnaHREb3duVmVjdG9yQmFyOlwiXFx1Mjk1NVwiLFJpZ2h0RG93blZlY3RvcjpcIlxcdTIxQzJcIixSaWdodEZsb29yOlwiXFx1MjMwQlwiLHJpZ2h0aGFycG9vbmRvd246XCJcXHUyMUMxXCIscmlnaHRoYXJwb29udXA6XCJcXHUyMUMwXCIscmlnaHRsZWZ0YXJyb3dzOlwiXFx1MjFDNFwiLHJpZ2h0bGVmdGhhcnBvb25zOlwiXFx1MjFDQ1wiLHJpZ2h0cmlnaHRhcnJvd3M6XCJcXHUyMUM5XCIscmlnaHRzcXVpZ2Fycm93OlwiXFx1MjE5RFwiLFJpZ2h0VGVlQXJyb3c6XCJcXHUyMUE2XCIsUmlnaHRUZWU6XCJcXHUyMkEyXCIsUmlnaHRUZWVWZWN0b3I6XCJcXHUyOTVCXCIscmlnaHR0aHJlZXRpbWVzOlwiXFx1MjJDQ1wiLFJpZ2h0VHJpYW5nbGVCYXI6XCJcXHUyOUQwXCIsUmlnaHRUcmlhbmdsZTpcIlxcdTIyQjNcIixSaWdodFRyaWFuZ2xlRXF1YWw6XCJcXHUyMkI1XCIsUmlnaHRVcERvd25WZWN0b3I6XCJcXHUyOTRGXCIsUmlnaHRVcFRlZVZlY3RvcjpcIlxcdTI5NUNcIixSaWdodFVwVmVjdG9yQmFyOlwiXFx1Mjk1NFwiLFJpZ2h0VXBWZWN0b3I6XCJcXHUyMUJFXCIsUmlnaHRWZWN0b3JCYXI6XCJcXHUyOTUzXCIsUmlnaHRWZWN0b3I6XCJcXHUyMUMwXCIscmluZzpcIlxcdTAyREFcIixyaXNpbmdkb3RzZXE6XCJcXHUyMjUzXCIscmxhcnI6XCJcXHUyMUM0XCIscmxoYXI6XCJcXHUyMUNDXCIscmxtOlwiXFx1MjAwRlwiLHJtb3VzdGFjaGU6XCJcXHUyM0IxXCIscm1vdXN0OlwiXFx1MjNCMVwiLHJubWlkOlwiXFx1MkFFRVwiLHJvYW5nOlwiXFx1MjdFRFwiLHJvYXJyOlwiXFx1MjFGRVwiLHJvYnJrOlwiXFx1MjdFN1wiLHJvcGFyOlwiXFx1Mjk4NlwiLHJvcGY6XCJcXHV7MUQ1NjN9XCIsUm9wZjpcIlxcdTIxMURcIixyb3BsdXM6XCJcXHUyQTJFXCIscm90aW1lczpcIlxcdTJBMzVcIixSb3VuZEltcGxpZXM6XCJcXHUyOTcwXCIscnBhcjpcIilcIixycGFyZ3Q6XCJcXHUyOTk0XCIscnBwb2xpbnQ6XCJcXHUyQTEyXCIscnJhcnI6XCJcXHUyMUM5XCIsUnJpZ2h0YXJyb3c6XCJcXHUyMURCXCIscnNhcXVvOlwiXFx1MjAzQVwiLHJzY3I6XCJcXHV7MUQ0Qzd9XCIsUnNjcjpcIlxcdTIxMUJcIixyc2g6XCJcXHUyMUIxXCIsUnNoOlwiXFx1MjFCMVwiLHJzcWI6XCJdXCIscnNxdW86XCJcXHUyMDE5XCIscnNxdW9yOlwiXFx1MjAxOVwiLHJ0aHJlZTpcIlxcdTIyQ0NcIixydGltZXM6XCJcXHUyMkNBXCIscnRyaTpcIlxcdTI1QjlcIixydHJpZTpcIlxcdTIyQjVcIixydHJpZjpcIlxcdTI1QjhcIixydHJpbHRyaTpcIlxcdTI5Q0VcIixSdWxlRGVsYXllZDpcIlxcdTI5RjRcIixydWx1aGFyOlwiXFx1Mjk2OFwiLHJ4OlwiXFx1MjExRVwiLFNhY3V0ZTpcIlxcdTAxNUFcIixzYWN1dGU6XCJcXHUwMTVCXCIsc2JxdW86XCJcXHUyMDFBXCIsc2NhcDpcIlxcdTJBQjhcIixTY2Fyb246XCJcXHUwMTYwXCIsc2Nhcm9uOlwiXFx1MDE2MVwiLFNjOlwiXFx1MkFCQ1wiLHNjOlwiXFx1MjI3QlwiLHNjY3VlOlwiXFx1MjI3RFwiLHNjZTpcIlxcdTJBQjBcIixzY0U6XCJcXHUyQUI0XCIsU2NlZGlsOlwiXFx1MDE1RVwiLHNjZWRpbDpcIlxcdTAxNUZcIixTY2lyYzpcIlxcdTAxNUNcIixzY2lyYzpcIlxcdTAxNURcIixzY25hcDpcIlxcdTJBQkFcIixzY25FOlwiXFx1MkFCNlwiLHNjbnNpbTpcIlxcdTIyRTlcIixzY3BvbGludDpcIlxcdTJBMTNcIixzY3NpbTpcIlxcdTIyN0ZcIixTY3k6XCJcXHUwNDIxXCIsc2N5OlwiXFx1MDQ0MVwiLHNkb3RiOlwiXFx1MjJBMVwiLHNkb3Q6XCJcXHUyMkM1XCIsc2RvdGU6XCJcXHUyQTY2XCIsc2VhcmhrOlwiXFx1MjkyNVwiLHNlYXJyOlwiXFx1MjE5OFwiLHNlQXJyOlwiXFx1MjFEOFwiLHNlYXJyb3c6XCJcXHUyMTk4XCIsc2VjdDpcIlxceEE3XCIsc2VtaTpcIjtcIixzZXN3YXI6XCJcXHUyOTI5XCIsc2V0bWludXM6XCJcXHUyMjE2XCIsc2V0bW46XCJcXHUyMjE2XCIsc2V4dDpcIlxcdTI3MzZcIixTZnI6XCJcXHV7MUQ1MTZ9XCIsc2ZyOlwiXFx1ezFENTMwfVwiLHNmcm93bjpcIlxcdTIzMjJcIixzaGFycDpcIlxcdTI2NkZcIixTSENIY3k6XCJcXHUwNDI5XCIsc2hjaGN5OlwiXFx1MDQ0OVwiLFNIY3k6XCJcXHUwNDI4XCIsc2hjeTpcIlxcdTA0NDhcIixTaG9ydERvd25BcnJvdzpcIlxcdTIxOTNcIixTaG9ydExlZnRBcnJvdzpcIlxcdTIxOTBcIixzaG9ydG1pZDpcIlxcdTIyMjNcIixzaG9ydHBhcmFsbGVsOlwiXFx1MjIyNVwiLFNob3J0UmlnaHRBcnJvdzpcIlxcdTIxOTJcIixTaG9ydFVwQXJyb3c6XCJcXHUyMTkxXCIsc2h5OlwiXFx4QURcIixTaWdtYTpcIlxcdTAzQTNcIixzaWdtYTpcIlxcdTAzQzNcIixzaWdtYWY6XCJcXHUwM0MyXCIsc2lnbWF2OlwiXFx1MDNDMlwiLHNpbTpcIlxcdTIyM0NcIixzaW1kb3Q6XCJcXHUyQTZBXCIsc2ltZTpcIlxcdTIyNDNcIixzaW1lcTpcIlxcdTIyNDNcIixzaW1nOlwiXFx1MkE5RVwiLHNpbWdFOlwiXFx1MkFBMFwiLHNpbWw6XCJcXHUyQTlEXCIsc2ltbEU6XCJcXHUyQTlGXCIsc2ltbmU6XCJcXHUyMjQ2XCIsc2ltcGx1czpcIlxcdTJBMjRcIixzaW1yYXJyOlwiXFx1Mjk3MlwiLHNsYXJyOlwiXFx1MjE5MFwiLFNtYWxsQ2lyY2xlOlwiXFx1MjIxOFwiLHNtYWxsc2V0bWludXM6XCJcXHUyMjE2XCIsc21hc2hwOlwiXFx1MkEzM1wiLHNtZXBhcnNsOlwiXFx1MjlFNFwiLHNtaWQ6XCJcXHUyMjIzXCIsc21pbGU6XCJcXHUyMzIzXCIsc210OlwiXFx1MkFBQVwiLHNtdGU6XCJcXHUyQUFDXCIsc210ZXM6XCJcXHUyQUFDXFx1RkUwMFwiLFNPRlRjeTpcIlxcdTA0MkNcIixzb2Z0Y3k6XCJcXHUwNDRDXCIsc29sYmFyOlwiXFx1MjMzRlwiLHNvbGI6XCJcXHUyOUM0XCIsc29sOlwiL1wiLFNvcGY6XCJcXHV7MUQ1NEF9XCIsc29wZjpcIlxcdXsxRDU2NH1cIixzcGFkZXM6XCJcXHUyNjYwXCIsc3BhZGVzdWl0OlwiXFx1MjY2MFwiLHNwYXI6XCJcXHUyMjI1XCIsc3FjYXA6XCJcXHUyMjkzXCIsc3FjYXBzOlwiXFx1MjI5M1xcdUZFMDBcIixzcWN1cDpcIlxcdTIyOTRcIixzcWN1cHM6XCJcXHUyMjk0XFx1RkUwMFwiLFNxcnQ6XCJcXHUyMjFBXCIsc3FzdWI6XCJcXHUyMjhGXCIsc3FzdWJlOlwiXFx1MjI5MVwiLHNxc3Vic2V0OlwiXFx1MjI4RlwiLHNxc3Vic2V0ZXE6XCJcXHUyMjkxXCIsc3FzdXA6XCJcXHUyMjkwXCIsc3FzdXBlOlwiXFx1MjI5MlwiLHNxc3Vwc2V0OlwiXFx1MjI5MFwiLHNxc3Vwc2V0ZXE6XCJcXHUyMjkyXCIsc3F1YXJlOlwiXFx1MjVBMVwiLFNxdWFyZTpcIlxcdTI1QTFcIixTcXVhcmVJbnRlcnNlY3Rpb246XCJcXHUyMjkzXCIsU3F1YXJlU3Vic2V0OlwiXFx1MjI4RlwiLFNxdWFyZVN1YnNldEVxdWFsOlwiXFx1MjI5MVwiLFNxdWFyZVN1cGVyc2V0OlwiXFx1MjI5MFwiLFNxdWFyZVN1cGVyc2V0RXF1YWw6XCJcXHUyMjkyXCIsU3F1YXJlVW5pb246XCJcXHUyMjk0XCIsc3F1YXJmOlwiXFx1MjVBQVwiLHNxdTpcIlxcdTI1QTFcIixzcXVmOlwiXFx1MjVBQVwiLHNyYXJyOlwiXFx1MjE5MlwiLFNzY3I6XCJcXHV7MUQ0QUV9XCIsc3NjcjpcIlxcdXsxRDRDOH1cIixzc2V0bW46XCJcXHUyMjE2XCIsc3NtaWxlOlwiXFx1MjMyM1wiLHNzdGFyZjpcIlxcdTIyQzZcIixTdGFyOlwiXFx1MjJDNlwiLHN0YXI6XCJcXHUyNjA2XCIsc3RhcmY6XCJcXHUyNjA1XCIsc3RyYWlnaHRlcHNpbG9uOlwiXFx1MDNGNVwiLHN0cmFpZ2h0cGhpOlwiXFx1MDNENVwiLHN0cm5zOlwiXFx4QUZcIixzdWI6XCJcXHUyMjgyXCIsU3ViOlwiXFx1MjJEMFwiLHN1YmRvdDpcIlxcdTJBQkRcIixzdWJFOlwiXFx1MkFDNVwiLHN1YmU6XCJcXHUyMjg2XCIsc3ViZWRvdDpcIlxcdTJBQzNcIixzdWJtdWx0OlwiXFx1MkFDMVwiLHN1Ym5FOlwiXFx1MkFDQlwiLHN1Ym5lOlwiXFx1MjI4QVwiLHN1YnBsdXM6XCJcXHUyQUJGXCIsc3VicmFycjpcIlxcdTI5NzlcIixzdWJzZXQ6XCJcXHUyMjgyXCIsU3Vic2V0OlwiXFx1MjJEMFwiLHN1YnNldGVxOlwiXFx1MjI4NlwiLHN1YnNldGVxcTpcIlxcdTJBQzVcIixTdWJzZXRFcXVhbDpcIlxcdTIyODZcIixzdWJzZXRuZXE6XCJcXHUyMjhBXCIsc3Vic2V0bmVxcTpcIlxcdTJBQ0JcIixzdWJzaW06XCJcXHUyQUM3XCIsc3Vic3ViOlwiXFx1MkFENVwiLHN1YnN1cDpcIlxcdTJBRDNcIixzdWNjYXBwcm94OlwiXFx1MkFCOFwiLHN1Y2M6XCJcXHUyMjdCXCIsc3VjY2N1cmx5ZXE6XCJcXHUyMjdEXCIsU3VjY2VlZHM6XCJcXHUyMjdCXCIsU3VjY2VlZHNFcXVhbDpcIlxcdTJBQjBcIixTdWNjZWVkc1NsYW50RXF1YWw6XCJcXHUyMjdEXCIsU3VjY2VlZHNUaWxkZTpcIlxcdTIyN0ZcIixzdWNjZXE6XCJcXHUyQUIwXCIsc3VjY25hcHByb3g6XCJcXHUyQUJBXCIsc3VjY25lcXE6XCJcXHUyQUI2XCIsc3VjY25zaW06XCJcXHUyMkU5XCIsc3VjY3NpbTpcIlxcdTIyN0ZcIixTdWNoVGhhdDpcIlxcdTIyMEJcIixzdW06XCJcXHUyMjExXCIsU3VtOlwiXFx1MjIxMVwiLHN1bmc6XCJcXHUyNjZBXCIsc3VwMTpcIlxceEI5XCIsc3VwMjpcIlxceEIyXCIsc3VwMzpcIlxceEIzXCIsc3VwOlwiXFx1MjI4M1wiLFN1cDpcIlxcdTIyRDFcIixzdXBkb3Q6XCJcXHUyQUJFXCIsc3VwZHN1YjpcIlxcdTJBRDhcIixzdXBFOlwiXFx1MkFDNlwiLHN1cGU6XCJcXHUyMjg3XCIsc3VwZWRvdDpcIlxcdTJBQzRcIixTdXBlcnNldDpcIlxcdTIyODNcIixTdXBlcnNldEVxdWFsOlwiXFx1MjI4N1wiLHN1cGhzb2w6XCJcXHUyN0M5XCIsc3VwaHN1YjpcIlxcdTJBRDdcIixzdXBsYXJyOlwiXFx1Mjk3QlwiLHN1cG11bHQ6XCJcXHUyQUMyXCIsc3VwbkU6XCJcXHUyQUNDXCIsc3VwbmU6XCJcXHUyMjhCXCIsc3VwcGx1czpcIlxcdTJBQzBcIixzdXBzZXQ6XCJcXHUyMjgzXCIsU3Vwc2V0OlwiXFx1MjJEMVwiLHN1cHNldGVxOlwiXFx1MjI4N1wiLHN1cHNldGVxcTpcIlxcdTJBQzZcIixzdXBzZXRuZXE6XCJcXHUyMjhCXCIsc3Vwc2V0bmVxcTpcIlxcdTJBQ0NcIixzdXBzaW06XCJcXHUyQUM4XCIsc3Vwc3ViOlwiXFx1MkFENFwiLHN1cHN1cDpcIlxcdTJBRDZcIixzd2FyaGs6XCJcXHUyOTI2XCIsc3dhcnI6XCJcXHUyMTk5XCIsc3dBcnI6XCJcXHUyMUQ5XCIsc3dhcnJvdzpcIlxcdTIxOTlcIixzd253YXI6XCJcXHUyOTJBXCIsc3psaWc6XCJcXHhERlwiLFRhYjpcIlx0XCIsdGFyZ2V0OlwiXFx1MjMxNlwiLFRhdTpcIlxcdTAzQTRcIix0YXU6XCJcXHUwM0M0XCIsdGJyazpcIlxcdTIzQjRcIixUY2Fyb246XCJcXHUwMTY0XCIsdGNhcm9uOlwiXFx1MDE2NVwiLFRjZWRpbDpcIlxcdTAxNjJcIix0Y2VkaWw6XCJcXHUwMTYzXCIsVGN5OlwiXFx1MDQyMlwiLHRjeTpcIlxcdTA0NDJcIix0ZG90OlwiXFx1MjBEQlwiLHRlbHJlYzpcIlxcdTIzMTVcIixUZnI6XCJcXHV7MUQ1MTd9XCIsdGZyOlwiXFx1ezFENTMxfVwiLHRoZXJlNDpcIlxcdTIyMzRcIix0aGVyZWZvcmU6XCJcXHUyMjM0XCIsVGhlcmVmb3JlOlwiXFx1MjIzNFwiLFRoZXRhOlwiXFx1MDM5OFwiLHRoZXRhOlwiXFx1MDNCOFwiLHRoZXRhc3ltOlwiXFx1MDNEMVwiLHRoZXRhdjpcIlxcdTAzRDFcIix0aGlja2FwcHJveDpcIlxcdTIyNDhcIix0aGlja3NpbTpcIlxcdTIyM0NcIixUaGlja1NwYWNlOlwiXFx1MjA1RlxcdTIwMEFcIixUaGluU3BhY2U6XCJcXHUyMDA5XCIsdGhpbnNwOlwiXFx1MjAwOVwiLHRoa2FwOlwiXFx1MjI0OFwiLHRoa3NpbTpcIlxcdTIyM0NcIixUSE9STjpcIlxceERFXCIsdGhvcm46XCJcXHhGRVwiLHRpbGRlOlwiXFx1MDJEQ1wiLFRpbGRlOlwiXFx1MjIzQ1wiLFRpbGRlRXF1YWw6XCJcXHUyMjQzXCIsVGlsZGVGdWxsRXF1YWw6XCJcXHUyMjQ1XCIsVGlsZGVUaWxkZTpcIlxcdTIyNDhcIix0aW1lc2JhcjpcIlxcdTJBMzFcIix0aW1lc2I6XCJcXHUyMkEwXCIsdGltZXM6XCJcXHhEN1wiLHRpbWVzZDpcIlxcdTJBMzBcIix0aW50OlwiXFx1MjIyRFwiLHRvZWE6XCJcXHUyOTI4XCIsdG9wYm90OlwiXFx1MjMzNlwiLHRvcGNpcjpcIlxcdTJBRjFcIix0b3A6XCJcXHUyMkE0XCIsVG9wZjpcIlxcdXsxRDU0Qn1cIix0b3BmOlwiXFx1ezFENTY1fVwiLHRvcGZvcms6XCJcXHUyQURBXCIsdG9zYTpcIlxcdTI5MjlcIix0cHJpbWU6XCJcXHUyMDM0XCIsdHJhZGU6XCJcXHUyMTIyXCIsVFJBREU6XCJcXHUyMTIyXCIsdHJpYW5nbGU6XCJcXHUyNUI1XCIsdHJpYW5nbGVkb3duOlwiXFx1MjVCRlwiLHRyaWFuZ2xlbGVmdDpcIlxcdTI1QzNcIix0cmlhbmdsZWxlZnRlcTpcIlxcdTIyQjRcIix0cmlhbmdsZXE6XCJcXHUyMjVDXCIsdHJpYW5nbGVyaWdodDpcIlxcdTI1QjlcIix0cmlhbmdsZXJpZ2h0ZXE6XCJcXHUyMkI1XCIsdHJpZG90OlwiXFx1MjVFQ1wiLHRyaWU6XCJcXHUyMjVDXCIsdHJpbWludXM6XCJcXHUyQTNBXCIsVHJpcGxlRG90OlwiXFx1MjBEQlwiLHRyaXBsdXM6XCJcXHUyQTM5XCIsdHJpc2I6XCJcXHUyOUNEXCIsdHJpdGltZTpcIlxcdTJBM0JcIix0cnBleml1bTpcIlxcdTIzRTJcIixUc2NyOlwiXFx1ezFENEFGfVwiLHRzY3I6XCJcXHV7MUQ0Qzl9XCIsVFNjeTpcIlxcdTA0MjZcIix0c2N5OlwiXFx1MDQ0NlwiLFRTSGN5OlwiXFx1MDQwQlwiLHRzaGN5OlwiXFx1MDQ1QlwiLFRzdHJvazpcIlxcdTAxNjZcIix0c3Ryb2s6XCJcXHUwMTY3XCIsdHdpeHQ6XCJcXHUyMjZDXCIsdHdvaGVhZGxlZnRhcnJvdzpcIlxcdTIxOUVcIix0d29oZWFkcmlnaHRhcnJvdzpcIlxcdTIxQTBcIixVYWN1dGU6XCJcXHhEQVwiLHVhY3V0ZTpcIlxceEZBXCIsdWFycjpcIlxcdTIxOTFcIixVYXJyOlwiXFx1MjE5RlwiLHVBcnI6XCJcXHUyMUQxXCIsVWFycm9jaXI6XCJcXHUyOTQ5XCIsVWJyY3k6XCJcXHUwNDBFXCIsdWJyY3k6XCJcXHUwNDVFXCIsVWJyZXZlOlwiXFx1MDE2Q1wiLHVicmV2ZTpcIlxcdTAxNkRcIixVY2lyYzpcIlxceERCXCIsdWNpcmM6XCJcXHhGQlwiLFVjeTpcIlxcdTA0MjNcIix1Y3k6XCJcXHUwNDQzXCIsdWRhcnI6XCJcXHUyMUM1XCIsVWRibGFjOlwiXFx1MDE3MFwiLHVkYmxhYzpcIlxcdTAxNzFcIix1ZGhhcjpcIlxcdTI5NkVcIix1ZmlzaHQ6XCJcXHUyOTdFXCIsVWZyOlwiXFx1ezFENTE4fVwiLHVmcjpcIlxcdXsxRDUzMn1cIixVZ3JhdmU6XCJcXHhEOVwiLHVncmF2ZTpcIlxceEY5XCIsdUhhcjpcIlxcdTI5NjNcIix1aGFybDpcIlxcdTIxQkZcIix1aGFycjpcIlxcdTIxQkVcIix1aGJsazpcIlxcdTI1ODBcIix1bGNvcm46XCJcXHUyMzFDXCIsdWxjb3JuZXI6XCJcXHUyMzFDXCIsdWxjcm9wOlwiXFx1MjMwRlwiLHVsdHJpOlwiXFx1MjVGOFwiLFVtYWNyOlwiXFx1MDE2QVwiLHVtYWNyOlwiXFx1MDE2QlwiLHVtbDpcIlxceEE4XCIsVW5kZXJCYXI6XCJfXCIsVW5kZXJCcmFjZTpcIlxcdTIzREZcIixVbmRlckJyYWNrZXQ6XCJcXHUyM0I1XCIsVW5kZXJQYXJlbnRoZXNpczpcIlxcdTIzRERcIixVbmlvbjpcIlxcdTIyQzNcIixVbmlvblBsdXM6XCJcXHUyMjhFXCIsVW9nb246XCJcXHUwMTcyXCIsdW9nb246XCJcXHUwMTczXCIsVW9wZjpcIlxcdXsxRDU0Q31cIix1b3BmOlwiXFx1ezFENTY2fVwiLFVwQXJyb3dCYXI6XCJcXHUyOTEyXCIsdXBhcnJvdzpcIlxcdTIxOTFcIixVcEFycm93OlwiXFx1MjE5MVwiLFVwYXJyb3c6XCJcXHUyMUQxXCIsVXBBcnJvd0Rvd25BcnJvdzpcIlxcdTIxQzVcIix1cGRvd25hcnJvdzpcIlxcdTIxOTVcIixVcERvd25BcnJvdzpcIlxcdTIxOTVcIixVcGRvd25hcnJvdzpcIlxcdTIxRDVcIixVcEVxdWlsaWJyaXVtOlwiXFx1Mjk2RVwiLHVwaGFycG9vbmxlZnQ6XCJcXHUyMUJGXCIsdXBoYXJwb29ucmlnaHQ6XCJcXHUyMUJFXCIsdXBsdXM6XCJcXHUyMjhFXCIsVXBwZXJMZWZ0QXJyb3c6XCJcXHUyMTk2XCIsVXBwZXJSaWdodEFycm93OlwiXFx1MjE5N1wiLHVwc2k6XCJcXHUwM0M1XCIsVXBzaTpcIlxcdTAzRDJcIix1cHNpaDpcIlxcdTAzRDJcIixVcHNpbG9uOlwiXFx1MDNBNVwiLHVwc2lsb246XCJcXHUwM0M1XCIsVXBUZWVBcnJvdzpcIlxcdTIxQTVcIixVcFRlZTpcIlxcdTIyQTVcIix1cHVwYXJyb3dzOlwiXFx1MjFDOFwiLHVyY29ybjpcIlxcdTIzMURcIix1cmNvcm5lcjpcIlxcdTIzMURcIix1cmNyb3A6XCJcXHUyMzBFXCIsVXJpbmc6XCJcXHUwMTZFXCIsdXJpbmc6XCJcXHUwMTZGXCIsdXJ0cmk6XCJcXHUyNUY5XCIsVXNjcjpcIlxcdXsxRDRCMH1cIix1c2NyOlwiXFx1ezFENENBfVwiLHV0ZG90OlwiXFx1MjJGMFwiLFV0aWxkZTpcIlxcdTAxNjhcIix1dGlsZGU6XCJcXHUwMTY5XCIsdXRyaTpcIlxcdTI1QjVcIix1dHJpZjpcIlxcdTI1QjRcIix1dWFycjpcIlxcdTIxQzhcIixVdW1sOlwiXFx4RENcIix1dW1sOlwiXFx4RkNcIix1d2FuZ2xlOlwiXFx1MjlBN1wiLHZhbmdydDpcIlxcdTI5OUNcIix2YXJlcHNpbG9uOlwiXFx1MDNGNVwiLHZhcmthcHBhOlwiXFx1MDNGMFwiLHZhcm5vdGhpbmc6XCJcXHUyMjA1XCIsdmFycGhpOlwiXFx1MDNENVwiLHZhcnBpOlwiXFx1MDNENlwiLHZhcnByb3B0bzpcIlxcdTIyMURcIix2YXJyOlwiXFx1MjE5NVwiLHZBcnI6XCJcXHUyMUQ1XCIsdmFycmhvOlwiXFx1MDNGMVwiLHZhcnNpZ21hOlwiXFx1MDNDMlwiLHZhcnN1YnNldG5lcTpcIlxcdTIyOEFcXHVGRTAwXCIsdmFyc3Vic2V0bmVxcTpcIlxcdTJBQ0JcXHVGRTAwXCIsdmFyc3Vwc2V0bmVxOlwiXFx1MjI4QlxcdUZFMDBcIix2YXJzdXBzZXRuZXFxOlwiXFx1MkFDQ1xcdUZFMDBcIix2YXJ0aGV0YTpcIlxcdTAzRDFcIix2YXJ0cmlhbmdsZWxlZnQ6XCJcXHUyMkIyXCIsdmFydHJpYW5nbGVyaWdodDpcIlxcdTIyQjNcIix2QmFyOlwiXFx1MkFFOFwiLFZiYXI6XCJcXHUyQUVCXCIsdkJhcnY6XCJcXHUyQUU5XCIsVmN5OlwiXFx1MDQxMlwiLHZjeTpcIlxcdTA0MzJcIix2ZGFzaDpcIlxcdTIyQTJcIix2RGFzaDpcIlxcdTIyQThcIixWZGFzaDpcIlxcdTIyQTlcIixWRGFzaDpcIlxcdTIyQUJcIixWZGFzaGw6XCJcXHUyQUU2XCIsdmVlYmFyOlwiXFx1MjJCQlwiLHZlZTpcIlxcdTIyMjhcIixWZWU6XCJcXHUyMkMxXCIsdmVlZXE6XCJcXHUyMjVBXCIsdmVsbGlwOlwiXFx1MjJFRVwiLHZlcmJhcjpcInxcIixWZXJiYXI6XCJcXHUyMDE2XCIsdmVydDpcInxcIixWZXJ0OlwiXFx1MjAxNlwiLFZlcnRpY2FsQmFyOlwiXFx1MjIyM1wiLFZlcnRpY2FsTGluZTpcInxcIixWZXJ0aWNhbFNlcGFyYXRvcjpcIlxcdTI3NThcIixWZXJ0aWNhbFRpbGRlOlwiXFx1MjI0MFwiLFZlcnlUaGluU3BhY2U6XCJcXHUyMDBBXCIsVmZyOlwiXFx1ezFENTE5fVwiLHZmcjpcIlxcdXsxRDUzM31cIix2bHRyaTpcIlxcdTIyQjJcIix2bnN1YjpcIlxcdTIyODJcXHUyMEQyXCIsdm5zdXA6XCJcXHUyMjgzXFx1MjBEMlwiLFZvcGY6XCJcXHV7MUQ1NER9XCIsdm9wZjpcIlxcdXsxRDU2N31cIix2cHJvcDpcIlxcdTIyMURcIix2cnRyaTpcIlxcdTIyQjNcIixWc2NyOlwiXFx1ezFENEIxfVwiLHZzY3I6XCJcXHV7MUQ0Q0J9XCIsdnN1Ym5FOlwiXFx1MkFDQlxcdUZFMDBcIix2c3VibmU6XCJcXHUyMjhBXFx1RkUwMFwiLHZzdXBuRTpcIlxcdTJBQ0NcXHVGRTAwXCIsdnN1cG5lOlwiXFx1MjI4QlxcdUZFMDBcIixWdmRhc2g6XCJcXHUyMkFBXCIsdnppZ3phZzpcIlxcdTI5OUFcIixXY2lyYzpcIlxcdTAxNzRcIix3Y2lyYzpcIlxcdTAxNzVcIix3ZWRiYXI6XCJcXHUyQTVGXCIsd2VkZ2U6XCJcXHUyMjI3XCIsV2VkZ2U6XCJcXHUyMkMwXCIsd2VkZ2VxOlwiXFx1MjI1OVwiLHdlaWVycDpcIlxcdTIxMThcIixXZnI6XCJcXHV7MUQ1MUF9XCIsd2ZyOlwiXFx1ezFENTM0fVwiLFdvcGY6XCJcXHV7MUQ1NEV9XCIsd29wZjpcIlxcdXsxRDU2OH1cIix3cDpcIlxcdTIxMThcIix3cjpcIlxcdTIyNDBcIix3cmVhdGg6XCJcXHUyMjQwXCIsV3NjcjpcIlxcdXsxRDRCMn1cIix3c2NyOlwiXFx1ezFENENDfVwiLHhjYXA6XCJcXHUyMkMyXCIseGNpcmM6XCJcXHUyNUVGXCIseGN1cDpcIlxcdTIyQzNcIix4ZHRyaTpcIlxcdTI1QkRcIixYZnI6XCJcXHV7MUQ1MUJ9XCIseGZyOlwiXFx1ezFENTM1fVwiLHhoYXJyOlwiXFx1MjdGN1wiLHhoQXJyOlwiXFx1MjdGQVwiLFhpOlwiXFx1MDM5RVwiLHhpOlwiXFx1MDNCRVwiLHhsYXJyOlwiXFx1MjdGNVwiLHhsQXJyOlwiXFx1MjdGOFwiLHhtYXA6XCJcXHUyN0ZDXCIseG5pczpcIlxcdTIyRkJcIix4b2RvdDpcIlxcdTJBMDBcIixYb3BmOlwiXFx1ezFENTRGfVwiLHhvcGY6XCJcXHV7MUQ1Njl9XCIseG9wbHVzOlwiXFx1MkEwMVwiLHhvdGltZTpcIlxcdTJBMDJcIix4cmFycjpcIlxcdTI3RjZcIix4ckFycjpcIlxcdTI3RjlcIixYc2NyOlwiXFx1ezFENEIzfVwiLHhzY3I6XCJcXHV7MUQ0Q0R9XCIseHNxY3VwOlwiXFx1MkEwNlwiLHh1cGx1czpcIlxcdTJBMDRcIix4dXRyaTpcIlxcdTI1QjNcIix4dmVlOlwiXFx1MjJDMVwiLHh3ZWRnZTpcIlxcdTIyQzBcIixZYWN1dGU6XCJcXHhERFwiLHlhY3V0ZTpcIlxceEZEXCIsWUFjeTpcIlxcdTA0MkZcIix5YWN5OlwiXFx1MDQ0RlwiLFljaXJjOlwiXFx1MDE3NlwiLHljaXJjOlwiXFx1MDE3N1wiLFljeTpcIlxcdTA0MkJcIix5Y3k6XCJcXHUwNDRCXCIseWVuOlwiXFx4QTVcIixZZnI6XCJcXHV7MUQ1MUN9XCIseWZyOlwiXFx1ezFENTM2fVwiLFlJY3k6XCJcXHUwNDA3XCIseWljeTpcIlxcdTA0NTdcIixZb3BmOlwiXFx1ezFENTUwfVwiLHlvcGY6XCJcXHV7MUQ1NkF9XCIsWXNjcjpcIlxcdXsxRDRCNH1cIix5c2NyOlwiXFx1ezFENENFfVwiLFlVY3k6XCJcXHUwNDJFXCIseXVjeTpcIlxcdTA0NEVcIix5dW1sOlwiXFx4RkZcIixZdW1sOlwiXFx1MDE3OFwiLFphY3V0ZTpcIlxcdTAxNzlcIix6YWN1dGU6XCJcXHUwMTdBXCIsWmNhcm9uOlwiXFx1MDE3RFwiLHpjYXJvbjpcIlxcdTAxN0VcIixaY3k6XCJcXHUwNDE3XCIsemN5OlwiXFx1MDQzN1wiLFpkb3Q6XCJcXHUwMTdCXCIsemRvdDpcIlxcdTAxN0NcIix6ZWV0cmY6XCJcXHUyMTI4XCIsWmVyb1dpZHRoU3BhY2U6XCJcXHUyMDBCXCIsWmV0YTpcIlxcdTAzOTZcIix6ZXRhOlwiXFx1MDNCNlwiLHpmcjpcIlxcdXsxRDUzN31cIixaZnI6XCJcXHUyMTI4XCIsWkhjeTpcIlxcdTA0MTZcIix6aGN5OlwiXFx1MDQzNlwiLHppZ3JhcnI6XCJcXHUyMUREXCIsem9wZjpcIlxcdXsxRDU2Qn1cIixab3BmOlwiXFx1MjEyNFwiLFpzY3I6XCJcXHV7MUQ0QjV9XCIsenNjcjpcIlxcdXsxRDRDRn1cIix6d2o6XCJcXHUyMDBEXCIsenduajpcIlxcdTIwMENcIn0sYz0vXiNbeFhdKFtBLUZhLWYwLTldKykkLyxvPS9eIyhbMC05XSspJC8sZT0vXihbQS1aYS16MC05XSspJC8scj1mdW5jdGlvbigpe2Z1bmN0aW9uIEUodil7dGhpcy5uYW1lZD12fXJldHVybiBFLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih2KXtpZighIXYpe3ZhciBfPXYubWF0Y2goYyk7aWYoXylyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChfWzFdLDE2KSk7aWYoXz12Lm1hdGNoKG8pLF8pcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoX1sxXSwxMCkpO2lmKF89di5tYXRjaChlKSxfKXJldHVybiB0aGlzLm5hbWVkW19bMV1dfX0sRX0oKSxzPS9bXFx0XFxuXFxmIF0vLHA9L1tBLVphLXpdLyxuPS9cXHJcXG4/L2c7ZnVuY3Rpb24gYShFKXtyZXR1cm4gcy50ZXN0KEUpfWZ1bmN0aW9uIHUoRSl7cmV0dXJuIHAudGVzdChFKX1mdW5jdGlvbiBpKEUpe3JldHVybiBFLnJlcGxhY2UobixgXG5gKX12YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIEUodixfLHkpe3k9PT12b2lkIDAmJih5PVwicHJlY29tcGlsZVwiKSx0aGlzLmRlbGVnYXRlPXYsdGhpcy5lbnRpdHlQYXJzZXI9Xyx0aGlzLm1vZGU9eSx0aGlzLnN0YXRlPVwiYmVmb3JlRGF0YVwiLHRoaXMubGluZT0tMSx0aGlzLmNvbHVtbj0tMSx0aGlzLmlucHV0PVwiXCIsdGhpcy5pbmRleD0tMSx0aGlzLnRhZ05hbWVCdWZmZXI9XCJcIix0aGlzLnN0YXRlcz17YmVmb3JlRGF0YTpmdW5jdGlvbigpe3ZhciBnPXRoaXMucGVlaygpO2lmKGc9PT1cIjxcIiYmIXRoaXMuaXNJZ25vcmVkRW5kVGFnKCkpdGhpcy50cmFuc2l0aW9uVG8oXCJ0YWdPcGVuXCIpLHRoaXMubWFya1RhZ1N0YXJ0KCksdGhpcy5jb25zdW1lKCk7ZWxzZXtpZih0aGlzLm1vZGU9PT1cInByZWNvbXBpbGVcIiYmZz09PWBcbmApe3ZhciBMPXRoaXMudGFnTmFtZUJ1ZmZlci50b0xvd2VyQ2FzZSgpOyhMPT09XCJwcmVcInx8TD09PVwidGV4dGFyZWFcIikmJnRoaXMuY29uc3VtZSgpfXRoaXMudHJhbnNpdGlvblRvKFwiZGF0YVwiKSx0aGlzLmRlbGVnYXRlLmJlZ2luRGF0YSgpfX0sZGF0YTpmdW5jdGlvbigpe3ZhciBnPXRoaXMucGVlaygpLEw9dGhpcy50YWdOYW1lQnVmZmVyO2c9PT1cIjxcIiYmIXRoaXMuaXNJZ25vcmVkRW5kVGFnKCk/KHRoaXMuZGVsZWdhdGUuZmluaXNoRGF0YSgpLHRoaXMudHJhbnNpdGlvblRvKFwidGFnT3BlblwiKSx0aGlzLm1hcmtUYWdTdGFydCgpLHRoaXMuY29uc3VtZSgpKTpnPT09XCImXCImJkwhPT1cInNjcmlwdFwiJiZMIT09XCJzdHlsZVwiPyh0aGlzLmNvbnN1bWUoKSx0aGlzLmRlbGVnYXRlLmFwcGVuZFRvRGF0YSh0aGlzLmNvbnN1bWVDaGFyUmVmKCl8fFwiJlwiKSk6KHRoaXMuY29uc3VtZSgpLHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9EYXRhKGcpKX0sdGFnT3BlbjpmdW5jdGlvbigpe3ZhciBnPXRoaXMuY29uc3VtZSgpO2c9PT1cIiFcIj90aGlzLnRyYW5zaXRpb25UbyhcIm1hcmt1cERlY2xhcmF0aW9uT3BlblwiKTpnPT09XCIvXCI/dGhpcy50cmFuc2l0aW9uVG8oXCJlbmRUYWdPcGVuXCIpOihnPT09XCJAXCJ8fGc9PT1cIjpcInx8dShnKSkmJih0aGlzLnRyYW5zaXRpb25UbyhcInRhZ05hbWVcIiksdGhpcy50YWdOYW1lQnVmZmVyPVwiXCIsdGhpcy5kZWxlZ2F0ZS5iZWdpblN0YXJ0VGFnKCksdGhpcy5hcHBlbmRUb1RhZ05hbWUoZykpfSxtYXJrdXBEZWNsYXJhdGlvbk9wZW46ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmNvbnN1bWUoKTtpZihnPT09XCItXCImJnRoaXMucGVlaygpPT09XCItXCIpdGhpcy5jb25zdW1lKCksdGhpcy50cmFuc2l0aW9uVG8oXCJjb21tZW50U3RhcnRcIiksdGhpcy5kZWxlZ2F0ZS5iZWdpbkNvbW1lbnQoKTtlbHNle3ZhciBMPWcudG9VcHBlckNhc2UoKSt0aGlzLmlucHV0LnN1YnN0cmluZyh0aGlzLmluZGV4LHRoaXMuaW5kZXgrNikudG9VcHBlckNhc2UoKTtMPT09XCJET0NUWVBFXCImJih0aGlzLmNvbnN1bWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImRvY3R5cGVcIiksdGhpcy5kZWxlZ2F0ZS5iZWdpbkRvY3R5cGUmJnRoaXMuZGVsZWdhdGUuYmVnaW5Eb2N0eXBlKCkpfX0sZG9jdHlwZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMuY29uc3VtZSgpO2EoZykmJnRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRG9jdHlwZU5hbWVcIil9LGJlZm9yZURvY3R5cGVOYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7YShnKXx8KHRoaXMudHJhbnNpdGlvblRvKFwiZG9jdHlwZU5hbWVcIiksdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RvY3R5cGVOYW1lJiZ0aGlzLmRlbGVnYXRlLmFwcGVuZFRvRG9jdHlwZU5hbWUoZy50b0xvd2VyQ2FzZSgpKSl9LGRvY3R5cGVOYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7YShnKT90aGlzLnRyYW5zaXRpb25UbyhcImFmdGVyRG9jdHlwZU5hbWVcIik6Zz09PVwiPlwiPyh0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUmJnRoaXMuZGVsZWdhdGUuZW5kRG9jdHlwZSgpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSk6dGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RvY3R5cGVOYW1lJiZ0aGlzLmRlbGVnYXRlLmFwcGVuZFRvRG9jdHlwZU5hbWUoZy50b0xvd2VyQ2FzZSgpKX0sYWZ0ZXJEb2N0eXBlTmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMuY29uc3VtZSgpO2lmKCFhKGcpKWlmKGc9PT1cIj5cIil0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUmJnRoaXMuZGVsZWdhdGUuZW5kRG9jdHlwZSgpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKTtlbHNle3ZhciBMPWcudG9VcHBlckNhc2UoKSt0aGlzLmlucHV0LnN1YnN0cmluZyh0aGlzLmluZGV4LHRoaXMuaW5kZXgrNSkudG9VcHBlckNhc2UoKSxqPUwudG9VcHBlckNhc2UoKT09PVwiUFVCTElDXCIseD1MLnRvVXBwZXJDYXNlKCk9PT1cIlNZU1RFTVwiOyhqfHx4KSYmKHRoaXMuY29uc3VtZSgpLHRoaXMuY29uc3VtZSgpLHRoaXMuY29uc3VtZSgpLHRoaXMuY29uc3VtZSgpLHRoaXMuY29uc3VtZSgpLHRoaXMuY29uc3VtZSgpKSxqP3RoaXMudHJhbnNpdGlvblRvKFwiYWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZFwiKTp4JiZ0aGlzLnRyYW5zaXRpb25UbyhcImFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmRcIil9fSxhZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5wZWVrKCk7YShnKT8odGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllclwiKSx0aGlzLmNvbnN1bWUoKSk6Zz09PSdcIic/KHRoaXMudHJhbnNpdGlvblRvKFwiZG9jdHlwZVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRcIiksdGhpcy5jb25zdW1lKCkpOmc9PT1cIidcIj8odGhpcy50cmFuc2l0aW9uVG8oXCJkb2N0eXBlUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFwiKSx0aGlzLmNvbnN1bWUoKSk6Zz09PVwiPlwiJiYodGhpcy5jb25zdW1lKCksdGhpcy5kZWxlZ2F0ZS5lbmREb2N0eXBlJiZ0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpfSxkb2N0eXBlUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZDpmdW5jdGlvbigpe3ZhciBnPXRoaXMuY29uc3VtZSgpO2c9PT0nXCInP3RoaXMudHJhbnNpdGlvblRvKFwiYWZ0ZXJEb2N0eXBlUHVibGljSWRlbnRpZmllclwiKTpnPT09XCI+XCI/KHRoaXMuZGVsZWdhdGUuZW5kRG9jdHlwZSYmdGhpcy5kZWxlZ2F0ZS5lbmREb2N0eXBlKCksdGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVEYXRhXCIpKTp0aGlzLmRlbGVnYXRlLmFwcGVuZFRvRG9jdHlwZVB1YmxpY0lkZW50aWZpZXImJnRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Eb2N0eXBlUHVibGljSWRlbnRpZmllcihnKX0sZG9jdHlwZVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWQ6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmNvbnN1bWUoKTtnPT09XCInXCI/dGhpcy50cmFuc2l0aW9uVG8oXCJhZnRlckRvY3R5cGVQdWJsaWNJZGVudGlmaWVyXCIpOmc9PT1cIj5cIj8odGhpcy5kZWxlZ2F0ZS5lbmREb2N0eXBlJiZ0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpOnRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Eb2N0eXBlUHVibGljSWRlbnRpZmllciYmdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGcpfSxhZnRlckRvY3R5cGVQdWJsaWNJZGVudGlmaWVyOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7YShnKT90aGlzLnRyYW5zaXRpb25UbyhcImJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNcIik6Zz09PVwiPlwiPyh0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUmJnRoaXMuZGVsZWdhdGUuZW5kRG9jdHlwZSgpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSk6Zz09PSdcIic/dGhpcy50cmFuc2l0aW9uVG8oXCJkb2N0eXBlU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFwiKTpnPT09XCInXCImJnRoaXMudHJhbnNpdGlvblRvKFwiZG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRcIil9LGJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnM6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmNvbnN1bWUoKTthKGcpfHwoZz09PVwiPlwiPyh0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUmJnRoaXMuZGVsZWdhdGUuZW5kRG9jdHlwZSgpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSk6Zz09PSdcIic/dGhpcy50cmFuc2l0aW9uVG8oXCJkb2N0eXBlU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFwiKTpnPT09XCInXCImJnRoaXMudHJhbnNpdGlvblRvKFwiZG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRcIikpfSxkb2N0eXBlU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZDpmdW5jdGlvbigpe3ZhciBnPXRoaXMuY29uc3VtZSgpO2c9PT0nXCInP3RoaXMudHJhbnNpdGlvblRvKFwiYWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllclwiKTpnPT09XCI+XCI/KHRoaXMuZGVsZWdhdGUuZW5kRG9jdHlwZSYmdGhpcy5kZWxlZ2F0ZS5lbmREb2N0eXBlKCksdGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVEYXRhXCIpKTp0aGlzLmRlbGVnYXRlLmFwcGVuZFRvRG9jdHlwZVN5c3RlbUlkZW50aWZpZXImJnRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Eb2N0eXBlU3lzdGVtSWRlbnRpZmllcihnKX0sZG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWQ6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmNvbnN1bWUoKTtnPT09XCInXCI/dGhpcy50cmFuc2l0aW9uVG8oXCJhZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyXCIpOmc9PT1cIj5cIj8odGhpcy5kZWxlZ2F0ZS5lbmREb2N0eXBlJiZ0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpOnRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Eb2N0eXBlU3lzdGVtSWRlbnRpZmllciYmdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKGcpfSxhZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7YShnKXx8Zz09PVwiPlwiJiYodGhpcy5kZWxlZ2F0ZS5lbmREb2N0eXBlJiZ0aGlzLmRlbGVnYXRlLmVuZERvY3R5cGUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpfSxjb21tZW50U3RhcnQ6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmNvbnN1bWUoKTtnPT09XCItXCI/dGhpcy50cmFuc2l0aW9uVG8oXCJjb21tZW50U3RhcnREYXNoXCIpOmc9PT1cIj5cIj8odGhpcy5kZWxlZ2F0ZS5maW5pc2hDb21tZW50KCksdGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVEYXRhXCIpKToodGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKGcpLHRoaXMudHJhbnNpdGlvblRvKFwiY29tbWVudFwiKSl9LGNvbW1lbnRTdGFydERhc2g6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmNvbnN1bWUoKTtnPT09XCItXCI/dGhpcy50cmFuc2l0aW9uVG8oXCJjb21tZW50RW5kXCIpOmc9PT1cIj5cIj8odGhpcy5kZWxlZ2F0ZS5maW5pc2hDb21tZW50KCksdGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVEYXRhXCIpKToodGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKFwiLVwiKSx0aGlzLnRyYW5zaXRpb25UbyhcImNvbW1lbnRcIikpfSxjb21tZW50OmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7Zz09PVwiLVwiP3RoaXMudHJhbnNpdGlvblRvKFwiY29tbWVudEVuZERhc2hcIik6dGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKGcpfSxjb21tZW50RW5kRGFzaDpmdW5jdGlvbigpe3ZhciBnPXRoaXMuY29uc3VtZSgpO2c9PT1cIi1cIj90aGlzLnRyYW5zaXRpb25UbyhcImNvbW1lbnRFbmRcIik6KHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Db21tZW50RGF0YShcIi1cIitnKSx0aGlzLnRyYW5zaXRpb25UbyhcImNvbW1lbnRcIikpfSxjb21tZW50RW5kOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7Zz09PVwiPlwiPyh0aGlzLmRlbGVnYXRlLmZpbmlzaENvbW1lbnQoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpOih0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQ29tbWVudERhdGEoXCItLVwiK2cpLHRoaXMudHJhbnNpdGlvblRvKFwiY29tbWVudFwiKSl9LHRhZ05hbWU6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmNvbnN1bWUoKTthKGcpP3RoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlQXR0cmlidXRlTmFtZVwiKTpnPT09XCIvXCI/dGhpcy50cmFuc2l0aW9uVG8oXCJzZWxmQ2xvc2luZ1N0YXJ0VGFnXCIpOmc9PT1cIj5cIj8odGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpOnRoaXMuYXBwZW5kVG9UYWdOYW1lKGcpfSxlbmRUYWdOYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7YShnKT8odGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCIpLHRoaXMudGFnTmFtZUJ1ZmZlcj1cIlwiKTpnPT09XCIvXCI/KHRoaXMudHJhbnNpdGlvblRvKFwic2VsZkNsb3NpbmdTdGFydFRhZ1wiKSx0aGlzLnRhZ05hbWVCdWZmZXI9XCJcIik6Zz09PVwiPlwiPyh0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSx0aGlzLnRhZ05hbWVCdWZmZXI9XCJcIik6dGhpcy5hcHBlbmRUb1RhZ05hbWUoZyl9LGJlZm9yZUF0dHJpYnV0ZU5hbWU6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnBlZWsoKTtpZihhKGcpKXt0aGlzLmNvbnN1bWUoKTtyZXR1cm59ZWxzZSBnPT09XCIvXCI/KHRoaXMudHJhbnNpdGlvblRvKFwic2VsZkNsb3NpbmdTdGFydFRhZ1wiKSx0aGlzLmNvbnN1bWUoKSk6Zz09PVwiPlwiPyh0aGlzLmNvbnN1bWUoKSx0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSk6Zz09PVwiPVwiPyh0aGlzLmRlbGVnYXRlLnJlcG9ydFN5bnRheEVycm9yKFwiYXR0cmlidXRlIG5hbWUgY2Fubm90IHN0YXJ0IHdpdGggZXF1YWxzIHNpZ25cIiksdGhpcy50cmFuc2l0aW9uVG8oXCJhdHRyaWJ1dGVOYW1lXCIpLHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlTmFtZShnKSk6KHRoaXMudHJhbnNpdGlvblRvKFwiYXR0cmlidXRlTmFtZVwiKSx0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlKCkpfSxhdHRyaWJ1dGVOYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5wZWVrKCk7YShnKT8odGhpcy50cmFuc2l0aW9uVG8oXCJhZnRlckF0dHJpYnV0ZU5hbWVcIiksdGhpcy5jb25zdW1lKCkpOmc9PT1cIi9cIj8odGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKCExKSx0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCksdGhpcy5jb25zdW1lKCksdGhpcy50cmFuc2l0aW9uVG8oXCJzZWxmQ2xvc2luZ1N0YXJ0VGFnXCIpKTpnPT09XCI9XCI/KHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlQXR0cmlidXRlVmFsdWVcIiksdGhpcy5jb25zdW1lKCkpOmc9PT1cIj5cIj8odGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKCExKSx0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCksdGhpcy5jb25zdW1lKCksdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpOmc9PT0nXCInfHxnPT09XCInXCJ8fGc9PT1cIjxcIj8odGhpcy5kZWxlZ2F0ZS5yZXBvcnRTeW50YXhFcnJvcihnK1wiIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlciB3aXRoaW4gYXR0cmlidXRlIG5hbWVzXCIpLHRoaXMuY29uc3VtZSgpLHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGcpKToodGhpcy5jb25zdW1lKCksdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoZykpfSxhZnRlckF0dHJpYnV0ZU5hbWU6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnBlZWsoKTtpZihhKGcpKXt0aGlzLmNvbnN1bWUoKTtyZXR1cm59ZWxzZSBnPT09XCIvXCI/KHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZSghMSksdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpLHRoaXMuY29uc3VtZSgpLHRoaXMudHJhbnNpdGlvblRvKFwic2VsZkNsb3NpbmdTdGFydFRhZ1wiKSk6Zz09PVwiPVwiPyh0aGlzLmNvbnN1bWUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZUF0dHJpYnV0ZVZhbHVlXCIpKTpnPT09XCI+XCI/KHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZSghMSksdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpLHRoaXMuY29uc3VtZSgpLHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCksdGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVEYXRhXCIpKToodGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKCExKSx0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCksdGhpcy50cmFuc2l0aW9uVG8oXCJhdHRyaWJ1dGVOYW1lXCIpLHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlTmFtZShnKSl9LGJlZm9yZUF0dHJpYnV0ZVZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5wZWVrKCk7YShnKT90aGlzLmNvbnN1bWUoKTpnPT09J1wiJz8odGhpcy50cmFuc2l0aW9uVG8oXCJhdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFwiKSx0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoITApLHRoaXMuY29uc3VtZSgpKTpnPT09XCInXCI/KHRoaXMudHJhbnNpdGlvblRvKFwiYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRcIiksdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKCEwKSx0aGlzLmNvbnN1bWUoKSk6Zz09PVwiPlwiPyh0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoITEpLHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSk6KHRoaXMudHJhbnNpdGlvblRvKFwiYXR0cmlidXRlVmFsdWVVbnF1b3RlZFwiKSx0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoITEpLHRoaXMuY29uc3VtZSgpLHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShnKSl9LGF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7Zz09PSdcIic/KHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRcIikpOmc9PT1cIiZcIj90aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodGhpcy5jb25zdW1lQ2hhclJlZigpfHxcIiZcIik6dGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGcpfSxhdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZDpmdW5jdGlvbigpe3ZhciBnPXRoaXMuY29uc3VtZSgpO2c9PT1cIidcIj8odGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpLHRoaXMudHJhbnNpdGlvblRvKFwiYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFwiKSk6Zz09PVwiJlwiP3RoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh0aGlzLmNvbnN1bWVDaGFyUmVmKCl8fFwiJlwiKTp0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoZyl9LGF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnBlZWsoKTthKGcpPyh0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCksdGhpcy5jb25zdW1lKCksdGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCIpKTpnPT09XCIvXCI/KHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLnRyYW5zaXRpb25UbyhcInNlbGZDbG9zaW5nU3RhcnRUYWdcIikpOmc9PT1cIiZcIj8odGhpcy5jb25zdW1lKCksdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHRoaXMuY29uc3VtZUNoYXJSZWYoKXx8XCImXCIpKTpnPT09XCI+XCI/KHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKSx0aGlzLmNvbnN1bWUoKSx0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSk6KHRoaXMuY29uc3VtZSgpLHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShnKSl9LGFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQ6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnBlZWsoKTthKGcpPyh0aGlzLmNvbnN1bWUoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIikpOmc9PT1cIi9cIj8odGhpcy5jb25zdW1lKCksdGhpcy50cmFuc2l0aW9uVG8oXCJzZWxmQ2xvc2luZ1N0YXJ0VGFnXCIpKTpnPT09XCI+XCI/KHRoaXMuY29uc3VtZSgpLHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCksdGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVEYXRhXCIpKTp0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIil9LHNlbGZDbG9zaW5nU3RhcnRUYWc6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnBlZWsoKTtnPT09XCI+XCI/KHRoaXMuY29uc3VtZSgpLHRoaXMuZGVsZWdhdGUubWFya1RhZ0FzU2VsZkNsb3NpbmcoKSx0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpLHRoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSk6dGhpcy50cmFuc2l0aW9uVG8oXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCIpfSxlbmRUYWdPcGVuOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jb25zdW1lKCk7KGc9PT1cIkBcInx8Zz09PVwiOlwifHx1KGcpKSYmKHRoaXMudHJhbnNpdGlvblRvKFwiZW5kVGFnTmFtZVwiKSx0aGlzLnRhZ05hbWVCdWZmZXI9XCJcIix0aGlzLmRlbGVnYXRlLmJlZ2luRW5kVGFnKCksdGhpcy5hcHBlbmRUb1RhZ05hbWUoZykpfX0sdGhpcy5yZXNldCgpfXJldHVybiBFLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvblRvKFwiYmVmb3JlRGF0YVwiKSx0aGlzLmlucHV0PVwiXCIsdGhpcy50YWdOYW1lQnVmZmVyPVwiXCIsdGhpcy5pbmRleD0wLHRoaXMubGluZT0xLHRoaXMuY29sdW1uPTAsdGhpcy5kZWxlZ2F0ZS5yZXNldCgpfSxFLnByb3RvdHlwZS50cmFuc2l0aW9uVG89ZnVuY3Rpb24odil7dGhpcy5zdGF0ZT12fSxFLnByb3RvdHlwZS50b2tlbml6ZT1mdW5jdGlvbih2KXt0aGlzLnJlc2V0KCksdGhpcy50b2tlbml6ZVBhcnQodiksdGhpcy50b2tlbml6ZUVPRigpfSxFLnByb3RvdHlwZS50b2tlbml6ZVBhcnQ9ZnVuY3Rpb24odil7Zm9yKHRoaXMuaW5wdXQrPWkodik7dGhpcy5pbmRleDx0aGlzLmlucHV0Lmxlbmd0aDspe3ZhciBfPXRoaXMuc3RhdGVzW3RoaXMuc3RhdGVdO2lmKF8hPT12b2lkIDApXy5jYWxsKHRoaXMpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwidW5oYW5kbGVkIHN0YXRlIFwiK3RoaXMuc3RhdGUpfX0sRS5wcm90b3R5cGUudG9rZW5pemVFT0Y9ZnVuY3Rpb24oKXt0aGlzLmZsdXNoRGF0YSgpfSxFLnByb3RvdHlwZS5mbHVzaERhdGE9ZnVuY3Rpb24oKXt0aGlzLnN0YXRlPT09XCJkYXRhXCImJih0aGlzLmRlbGVnYXRlLmZpbmlzaERhdGEoKSx0aGlzLnRyYW5zaXRpb25UbyhcImJlZm9yZURhdGFcIikpfSxFLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuY2hhckF0KHRoaXMuaW5kZXgpfSxFLnByb3RvdHlwZS5jb25zdW1lPWZ1bmN0aW9uKCl7dmFyIHY9dGhpcy5wZWVrKCk7cmV0dXJuIHRoaXMuaW5kZXgrKyx2PT09YFxuYD8odGhpcy5saW5lKyssdGhpcy5jb2x1bW49MCk6dGhpcy5jb2x1bW4rKyx2fSxFLnByb3RvdHlwZS5jb25zdW1lQ2hhclJlZj1mdW5jdGlvbigpe3ZhciB2PXRoaXMuaW5wdXQuaW5kZXhPZihcIjtcIix0aGlzLmluZGV4KTtpZih2IT09LTEpe3ZhciBfPXRoaXMuaW5wdXQuc2xpY2UodGhpcy5pbmRleCx2KSx5PXRoaXMuZW50aXR5UGFyc2VyLnBhcnNlKF8pO2lmKHkpe2Zvcih2YXIgZz1fLmxlbmd0aDtnOyl0aGlzLmNvbnN1bWUoKSxnLS07cmV0dXJuIHRoaXMuY29uc3VtZSgpLHl9fX0sRS5wcm90b3R5cGUubWFya1RhZ1N0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5kZWxlZ2F0ZS50YWdPcGVuKCl9LEUucHJvdG90eXBlLmFwcGVuZFRvVGFnTmFtZT1mdW5jdGlvbih2KXt0aGlzLnRhZ05hbWVCdWZmZXIrPXYsdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb1RhZ05hbWUodil9LEUucHJvdG90eXBlLmlzSWdub3JlZEVuZFRhZz1mdW5jdGlvbigpe3ZhciB2PXRoaXMudGFnTmFtZUJ1ZmZlcjtyZXR1cm4gdj09PVwidGl0bGVcIiYmdGhpcy5pbnB1dC5zdWJzdHJpbmcodGhpcy5pbmRleCx0aGlzLmluZGV4KzgpIT09XCI8L3RpdGxlPlwifHx2PT09XCJzdHlsZVwiJiZ0aGlzLmlucHV0LnN1YnN0cmluZyh0aGlzLmluZGV4LHRoaXMuaW5kZXgrOCkhPT1cIjwvc3R5bGU+XCJ8fHY9PT1cInNjcmlwdFwiJiZ0aGlzLmlucHV0LnN1YnN0cmluZyh0aGlzLmluZGV4LHRoaXMuaW5kZXgrOSkhPT1cIjxcXC9zY3JpcHQ+XCJ9LEV9KCksYj1mdW5jdGlvbigpe2Z1bmN0aW9uIEUodixfKXtfPT09dm9pZCAwJiYoXz17fSksdGhpcy5vcHRpb25zPV8sdGhpcy50b2tlbj1udWxsLHRoaXMuc3RhcnRMaW5lPTEsdGhpcy5zdGFydENvbHVtbj0wLHRoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5pemVyPW5ldyBsKHRoaXMsdixfLm1vZGUpLHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGU9dm9pZCAwfXJldHVybiBFLnByb3RvdHlwZS50b2tlbml6ZT1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy50b2tlbnM9W10sdGhpcy50b2tlbml6ZXIudG9rZW5pemUodiksdGhpcy50b2tlbnN9LEUucHJvdG90eXBlLnRva2VuaXplUGFydD1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy50b2tlbnM9W10sdGhpcy50b2tlbml6ZXIudG9rZW5pemVQYXJ0KHYpLHRoaXMudG9rZW5zfSxFLnByb3RvdHlwZS50b2tlbml6ZUVPRj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vucz1bXSx0aGlzLnRva2VuaXplci50b2tlbml6ZUVPRigpLHRoaXMudG9rZW5zWzBdfSxFLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMudG9rZW49bnVsbCx0aGlzLnN0YXJ0TGluZT0xLHRoaXMuc3RhcnRDb2x1bW49MH0sRS5wcm90b3R5cGUuY3VycmVudD1mdW5jdGlvbigpe3ZhciB2PXRoaXMudG9rZW47aWYodj09PW51bGwpdGhyb3cgbmV3IEVycm9yKFwidG9rZW4gd2FzIHVuZXhwZWN0ZWRseSBudWxsXCIpO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiB2O2Zvcih2YXIgXz0wO188YXJndW1lbnRzLmxlbmd0aDtfKyspaWYodi50eXBlPT09YXJndW1lbnRzW19dKXJldHVybiB2O3Rocm93IG5ldyBFcnJvcihcInRva2VuIHR5cGUgd2FzIHVuZXhwZWN0ZWRseSBcIit2LnR5cGUpfSxFLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHYpe3RoaXMudG9rZW49dix0aGlzLnRva2Vucy5wdXNoKHYpfSxFLnByb3RvdHlwZS5jdXJyZW50QXR0cmlidXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGV9LEUucHJvdG90eXBlLmFkZExvY0luZm89ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMubG9jJiYodGhpcy5jdXJyZW50KCkubG9jPXtzdGFydDp7bGluZTp0aGlzLnN0YXJ0TGluZSxjb2x1bW46dGhpcy5zdGFydENvbHVtbn0sZW5kOntsaW5lOnRoaXMudG9rZW5pemVyLmxpbmUsY29sdW1uOnRoaXMudG9rZW5pemVyLmNvbHVtbn19KSx0aGlzLnN0YXJ0TGluZT10aGlzLnRva2VuaXplci5saW5lLHRoaXMuc3RhcnRDb2x1bW49dGhpcy50b2tlbml6ZXIuY29sdW1ufSxFLnByb3RvdHlwZS5iZWdpbkRvY3R5cGU9ZnVuY3Rpb24oKXt0aGlzLnB1c2goe3R5cGU6XCJEb2N0eXBlXCIsbmFtZTpcIlwifSl9LEUucHJvdG90eXBlLmFwcGVuZFRvRG9jdHlwZU5hbWU9ZnVuY3Rpb24odil7dGhpcy5jdXJyZW50KFwiRG9jdHlwZVwiKS5uYW1lKz12fSxFLnByb3RvdHlwZS5hcHBlbmRUb0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyPWZ1bmN0aW9uKHYpe3ZhciBfPXRoaXMuY3VycmVudChcIkRvY3R5cGVcIik7Xy5wdWJsaWNJZGVudGlmaWVyPT09dm9pZCAwP18ucHVibGljSWRlbnRpZmllcj12Ol8ucHVibGljSWRlbnRpZmllcis9dn0sRS5wcm90b3R5cGUuYXBwZW5kVG9Eb2N0eXBlU3lzdGVtSWRlbnRpZmllcj1mdW5jdGlvbih2KXt2YXIgXz10aGlzLmN1cnJlbnQoXCJEb2N0eXBlXCIpO18uc3lzdGVtSWRlbnRpZmllcj09PXZvaWQgMD9fLnN5c3RlbUlkZW50aWZpZXI9djpfLnN5c3RlbUlkZW50aWZpZXIrPXZ9LEUucHJvdG90eXBlLmVuZERvY3R5cGU9ZnVuY3Rpb24oKXt0aGlzLmFkZExvY0luZm8oKX0sRS5wcm90b3R5cGUuYmVnaW5EYXRhPWZ1bmN0aW9uKCl7dGhpcy5wdXNoKHt0eXBlOlwiQ2hhcnNcIixjaGFyczpcIlwifSl9LEUucHJvdG90eXBlLmFwcGVuZFRvRGF0YT1mdW5jdGlvbih2KXt0aGlzLmN1cnJlbnQoXCJDaGFyc1wiKS5jaGFycys9dn0sRS5wcm90b3R5cGUuZmluaXNoRGF0YT1mdW5jdGlvbigpe3RoaXMuYWRkTG9jSW5mbygpfSxFLnByb3RvdHlwZS5iZWdpbkNvbW1lbnQ9ZnVuY3Rpb24oKXt0aGlzLnB1c2goe3R5cGU6XCJDb21tZW50XCIsY2hhcnM6XCJcIn0pfSxFLnByb3RvdHlwZS5hcHBlbmRUb0NvbW1lbnREYXRhPWZ1bmN0aW9uKHYpe3RoaXMuY3VycmVudChcIkNvbW1lbnRcIikuY2hhcnMrPXZ9LEUucHJvdG90eXBlLmZpbmlzaENvbW1lbnQ9ZnVuY3Rpb24oKXt0aGlzLmFkZExvY0luZm8oKX0sRS5wcm90b3R5cGUudGFnT3Blbj1mdW5jdGlvbigpe30sRS5wcm90b3R5cGUuYmVnaW5TdGFydFRhZz1mdW5jdGlvbigpe3RoaXMucHVzaCh7dHlwZTpcIlN0YXJ0VGFnXCIsdGFnTmFtZTpcIlwiLGF0dHJpYnV0ZXM6W10sc2VsZkNsb3Npbmc6ITF9KX0sRS5wcm90b3R5cGUuYmVnaW5FbmRUYWc9ZnVuY3Rpb24oKXt0aGlzLnB1c2goe3R5cGU6XCJFbmRUYWdcIix0YWdOYW1lOlwiXCJ9KX0sRS5wcm90b3R5cGUuZmluaXNoVGFnPWZ1bmN0aW9uKCl7dGhpcy5hZGRMb2NJbmZvKCl9LEUucHJvdG90eXBlLm1hcmtUYWdBc1NlbGZDbG9zaW5nPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50KFwiU3RhcnRUYWdcIikuc2VsZkNsb3Npbmc9ITB9LEUucHJvdG90eXBlLmFwcGVuZFRvVGFnTmFtZT1mdW5jdGlvbih2KXt0aGlzLmN1cnJlbnQoXCJTdGFydFRhZ1wiLFwiRW5kVGFnXCIpLnRhZ05hbWUrPXZ9LEUucHJvdG90eXBlLmJlZ2luQXR0cmlidXRlPWZ1bmN0aW9uKCl7dGhpcy5fY3VycmVudEF0dHJpYnV0ZT1bXCJcIixcIlwiLCExXX0sRS5wcm90b3R5cGUuYXBwZW5kVG9BdHRyaWJ1dGVOYW1lPWZ1bmN0aW9uKHYpe3RoaXMuY3VycmVudEF0dHJpYnV0ZSgpWzBdKz12fSxFLnByb3RvdHlwZS5iZWdpbkF0dHJpYnV0ZVZhbHVlPWZ1bmN0aW9uKHYpe3RoaXMuY3VycmVudEF0dHJpYnV0ZSgpWzJdPXZ9LEUucHJvdG90eXBlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWU9ZnVuY3Rpb24odil7dGhpcy5jdXJyZW50QXR0cmlidXRlKClbMV0rPXZ9LEUucHJvdG90eXBlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50KFwiU3RhcnRUYWdcIikuYXR0cmlidXRlcy5wdXNoKHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGUpfSxFLnByb3RvdHlwZS5yZXBvcnRTeW50YXhFcnJvcj1mdW5jdGlvbih2KXt0aGlzLmN1cnJlbnQoKS5zeW50YXhFcnJvcj12fSxFfSgpO2Z1bmN0aW9uIFAoRSx2KXt2YXIgXz1uZXcgYihuZXcgcihkKSx2KTtyZXR1cm4gXy50b2tlbml6ZShFKX1oLkhUTUw1TmFtZWRDaGFyUmVmcz1kLGguRW50aXR5UGFyc2VyPXIsaC5FdmVudGVkVG9rZW5pemVyPWwsaC5Ub2tlbml6ZXI9YixoLnRva2VuaXplPVAsT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9KX19KSxXZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL2dlbmVyYXRpb24vcHJpbnQuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWQ7dmFyIGY9aChUZSgpKTtmdW5jdGlvbiBoKGMpe3JldHVybiBjJiZjLl9fZXNNb2R1bGU/Yzp7ZGVmYXVsdDpjfX1mdW5jdGlvbiBkKGMpe2xldCBvPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7ZW50aXR5RW5jb2Rpbmc6XCJ0cmFuc2Zvcm1lZFwifTtyZXR1cm4gYz9uZXcgZi5kZWZhdWx0KG8pLnByaW50KGMpOlwiXCJ9fX0pLGhlPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvc3ludGF4LWVycm9yLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2VuZXJhdGVTeW50YXhFcnJvcj1mO2Z1bmN0aW9uIGYoaCxkKXtsZXR7bW9kdWxlOmMsbG9jOm99PWQse2xpbmU6ZSxjb2x1bW46cn09by5zdGFydCxzPWQuYXNTdHJpbmcoKSxwPXM/YFxuXG58XG58ICBgLmNvbmNhdChzLnNwbGl0KGBcbmApLmpvaW4oYFxufCAgYCksYFxufFxuXG5gKTpcIlwiLG49bmV3IEVycm9yKFwiXCIuY29uY2F0KGgsXCI6IFwiKS5jb25jYXQocCxcIihlcnJvciBvY2N1cnJlZCBpbiAnXCIpLmNvbmNhdChjLFwiJyBAIGxpbmUgXCIpLmNvbmNhdChlLFwiIDogY29sdW1uIFwiKS5jb25jYXQocixcIilcIikpO3JldHVybiBuLm5hbWU9XCJTeW50YXhFcnJvclwiLG4ubG9jYXRpb249ZCxuLmNvZGU9cyxufX19KSxSdD1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3YxL3Zpc2l0b3Ita2V5cy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBmPVgoKSxoPXtQcm9ncmFtOigwLGYudHVwbGUpKFwiYm9keVwiKSxUZW1wbGF0ZTooMCxmLnR1cGxlKShcImJvZHlcIiksQmxvY2s6KDAsZi50dXBsZSkoXCJib2R5XCIpLE11c3RhY2hlU3RhdGVtZW50OigwLGYudHVwbGUpKFwicGF0aFwiLFwicGFyYW1zXCIsXCJoYXNoXCIpLEJsb2NrU3RhdGVtZW50OigwLGYudHVwbGUpKFwicGF0aFwiLFwicGFyYW1zXCIsXCJoYXNoXCIsXCJwcm9ncmFtXCIsXCJpbnZlcnNlXCIpLEVsZW1lbnRNb2RpZmllclN0YXRlbWVudDooMCxmLnR1cGxlKShcInBhdGhcIixcInBhcmFtc1wiLFwiaGFzaFwiKSxQYXJ0aWFsU3RhdGVtZW50OigwLGYudHVwbGUpKFwibmFtZVwiLFwicGFyYW1zXCIsXCJoYXNoXCIpLENvbW1lbnRTdGF0ZW1lbnQ6KDAsZi50dXBsZSkoKSxNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQ6KDAsZi50dXBsZSkoKSxFbGVtZW50Tm9kZTooMCxmLnR1cGxlKShcImF0dHJpYnV0ZXNcIixcIm1vZGlmaWVyc1wiLFwiY2hpbGRyZW5cIixcImNvbW1lbnRzXCIpLEF0dHJOb2RlOigwLGYudHVwbGUpKFwidmFsdWVcIiksVGV4dE5vZGU6KDAsZi50dXBsZSkoKSxDb25jYXRTdGF0ZW1lbnQ6KDAsZi50dXBsZSkoXCJwYXJ0c1wiKSxTdWJFeHByZXNzaW9uOigwLGYudHVwbGUpKFwicGF0aFwiLFwicGFyYW1zXCIsXCJoYXNoXCIpLFBhdGhFeHByZXNzaW9uOigwLGYudHVwbGUpKCksUGF0aEhlYWQ6KDAsZi50dXBsZSkoKSxTdHJpbmdMaXRlcmFsOigwLGYudHVwbGUpKCksQm9vbGVhbkxpdGVyYWw6KDAsZi50dXBsZSkoKSxOdW1iZXJMaXRlcmFsOigwLGYudHVwbGUpKCksTnVsbExpdGVyYWw6KDAsZi50dXBsZSkoKSxVbmRlZmluZWRMaXRlcmFsOigwLGYudHVwbGUpKCksSGFzaDooMCxmLnR1cGxlKShcInBhaXJzXCIpLEhhc2hQYWlyOigwLGYudHVwbGUpKFwidmFsdWVcIiksTmFtZWRCbG9jazooMCxmLnR1cGxlKShcImF0dHJpYnV0ZXNcIixcIm1vZGlmaWVyc1wiLFwiY2hpbGRyZW5cIixcImNvbW1lbnRzXCIpLFNpbXBsZUVsZW1lbnQ6KDAsZi50dXBsZSkoXCJhdHRyaWJ1dGVzXCIsXCJtb2RpZmllcnNcIixcImNoaWxkcmVuXCIsXCJjb21tZW50c1wiKSxDb21wb25lbnQ6KDAsZi50dXBsZSkoXCJoZWFkXCIsXCJhdHRyaWJ1dGVzXCIsXCJtb2RpZmllcnNcIixcImNoaWxkcmVuXCIsXCJjb21tZW50c1wiKX0sZD1oO3QuZGVmYXVsdD1kfX0pLFllPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdHJhdmVyc2FsL2Vycm9ycy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNhbm5vdFJlbW92ZU5vZGU9ZCx0LmNhbm5vdFJlcGxhY2VOb2RlPWMsdC5jYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQ9byx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBmPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7ZnVuY3Rpb24gZShyLHMscCxuKXtsZXQgYT1FcnJvci5jYWxsKHRoaXMscik7dGhpcy5rZXk9bix0aGlzLm1lc3NhZ2U9cix0aGlzLm5vZGU9cyx0aGlzLnBhcmVudD1wLHRoaXMuc3RhY2s9YS5zdGFja31yZXR1cm4gZX0oKSxoPWY7dC5kZWZhdWx0PWg7ZnVuY3Rpb24gZChlLHIscyl7cmV0dXJuIG5ldyBmKFwiQ2Fubm90IHJlbW92ZSBhIG5vZGUgdW5sZXNzIGl0IGlzIHBhcnQgb2YgYW4gYXJyYXlcIixlLHIscyl9ZnVuY3Rpb24gYyhlLHIscyl7cmV0dXJuIG5ldyBmKFwiQ2Fubm90IHJlcGxhY2UgYSBub2RlIHdpdGggbXVsdGlwbGUgbm9kZXMgdW5sZXNzIGl0IGlzIHBhcnQgb2YgYW4gYXJyYXlcIixlLHIscyl9ZnVuY3Rpb24gbyhlLHIpe3JldHVybiBuZXcgZihcIlJlcGxhY2luZyBhbmQgcmVtb3ZpbmcgaW4ga2V5IGhhbmRsZXJzIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLlwiLGUsbnVsbCxyKX19fSksUWU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi90cmF2ZXJzYWwvcGF0aC5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciBmPWNsYXNze2NvbnN0cnVjdG9yKGQpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsLG89YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGw7dGhpcy5ub2RlPWQsdGhpcy5wYXJlbnQ9Yyx0aGlzLnBhcmVudEtleT1vfWdldCBwYXJlbnROb2RlKCl7cmV0dXJuIHRoaXMucGFyZW50P3RoaXMucGFyZW50Lm5vZGU6bnVsbH1wYXJlbnRzKCl7cmV0dXJue1tTeW1ib2wuaXRlcmF0b3JdOigpPT5uZXcgaCh0aGlzKX19fTt0LmRlZmF1bHQ9Zjt2YXIgaD1jbGFzc3tjb25zdHJ1Y3RvcihkKXt0aGlzLnBhdGg9ZH1uZXh0KCl7cmV0dXJuIHRoaXMucGF0aC5wYXJlbnQ/KHRoaXMucGF0aD10aGlzLnBhdGgucGFyZW50LHtkb25lOiExLHZhbHVlOnRoaXMucGF0aH0pOntkb25lOiEwLHZhbHVlOm51bGx9fX19fSksTmU9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PUU7dmFyIGY9WCgpLGg9byhSdCgpKSxkPVllKCksYz1vKFFlKCkpO2Z1bmN0aW9uIG8odil7cmV0dXJuIHYmJnYuX19lc01vZHVsZT92OntkZWZhdWx0OnZ9fWZ1bmN0aW9uIGUodil7cmV0dXJuIHR5cGVvZiB2PT1cImZ1bmN0aW9uXCI/djp2LmVudGVyfWZ1bmN0aW9uIHIodil7aWYodHlwZW9mIHYhPVwiZnVuY3Rpb25cIilyZXR1cm4gdi5leGl0fWZ1bmN0aW9uIHModixfKXtsZXQgeT10eXBlb2YgdiE9XCJmdW5jdGlvblwiP3Yua2V5czp2b2lkIDA7aWYoeT09PXZvaWQgMClyZXR1cm47bGV0IGc9eVtfXTtyZXR1cm4gZyE9PXZvaWQgMD9nOnkuQWxsfWZ1bmN0aW9uIHAodixfKXtpZigoXz09PVwiVGVtcGxhdGVcInx8Xz09PVwiQmxvY2tcIikmJnYuUHJvZ3JhbSlyZXR1cm4gdi5Qcm9ncmFtO2xldCB5PXZbX107cmV0dXJuIHkhPT12b2lkIDA/eTp2LkFsbH1mdW5jdGlvbiBuKHYsXyl7bGV0e25vZGU6eSxwYXJlbnQ6ZyxwYXJlbnRLZXk6TH09XyxqPXAodix5LnR5cGUpLHgsdztqIT09dm9pZCAwJiYoeD1lKGopLHc9cihqKSk7bGV0IEg7aWYoeCE9PXZvaWQgMCYmKEg9eCh5LF8pKSxIIT1udWxsKWlmKEpTT04uc3RyaW5naWZ5KHkpPT09SlNPTi5zdHJpbmdpZnkoSCkpSD12b2lkIDA7ZWxzZXtpZihBcnJheS5pc0FycmF5KEgpKXJldHVybiBsKHYsSCxnLEwpLEg7e2xldCBtPW5ldyBjLmRlZmF1bHQoSCxnLEwpO3JldHVybiBuKHYsbSl8fEh9fWlmKEg9PT12b2lkIDApe2xldCBtPWguZGVmYXVsdFt5LnR5cGVdO2ZvcihsZXQgQz0wO0M8bS5sZW5ndGg7QysrKXtsZXQgUz1tW0NdO2kodixqLF8sUyl9dyE9PXZvaWQgMCYmKEg9dyh5LF8pKX1yZXR1cm4gSH1mdW5jdGlvbiBhKHYsXyl7cmV0dXJuIHZbX119ZnVuY3Rpb24gdSh2LF8seSl7dltfXT15fWZ1bmN0aW9uIGkodixfLHksZyl7bGV0e25vZGU6TH09eSxqPWEoTCxnKTtpZighailyZXR1cm47bGV0IHgsdztpZihfIT09dm9pZCAwKXtsZXQgSD1zKF8sZyk7SCE9PXZvaWQgMCYmKHg9ZShIKSx3PXIoSCkpfWlmKHghPT12b2lkIDAmJngoTCxnKSE9PXZvaWQgMCl0aHJvdygwLGQuY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KShMLGcpO2lmKEFycmF5LmlzQXJyYXkoaikpbCh2LGoseSxnKTtlbHNle2xldCBIPW5ldyBjLmRlZmF1bHQoaix5LGcpLG09bih2LEgpO20hPT12b2lkIDAmJmIoTCxnLGosbSl9aWYodyE9PXZvaWQgMCYmdyhMLGcpIT09dm9pZCAwKXRocm93KDAsZC5jYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQpKEwsZyl9ZnVuY3Rpb24gbCh2LF8seSxnKXtmb3IobGV0IEw9MDtMPF8ubGVuZ3RoO0wrKyl7bGV0IGo9X1tMXSx4PW5ldyBjLmRlZmF1bHQoaix5LGcpLHc9bih2LHgpO3chPT12b2lkIDAmJihMKz1QKF8sTCx3KS0xKX19ZnVuY3Rpb24gYih2LF8seSxnKXtpZihnPT09bnVsbCl0aHJvdygwLGQuY2Fubm90UmVtb3ZlTm9kZSkoeSx2LF8pO2lmKEFycmF5LmlzQXJyYXkoZykpaWYoZy5sZW5ndGg9PT0xKXUodixfLGdbMF0pO2Vsc2UgdGhyb3cgZy5sZW5ndGg9PT0wPygwLGQuY2Fubm90UmVtb3ZlTm9kZSkoeSx2LF8pOigwLGQuY2Fubm90UmVwbGFjZU5vZGUpKHksdixfKTtlbHNlIHUodixfLGcpfWZ1bmN0aW9uIFAodixfLHkpe3JldHVybiB5PT09bnVsbD8odi5zcGxpY2UoXywxKSwwKTpBcnJheS5pc0FycmF5KHkpPyh2LnNwbGljZShfLDEsLi4ueSkseS5sZW5ndGgpOih2LnNwbGljZShfLDEseSksMSl9ZnVuY3Rpb24gRSh2LF8pe2xldCB5PW5ldyBjLmRlZmF1bHQodik7bihfLHkpfX19KSxKZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3RyYXZlcnNhbC93YWxrZXIuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXZvaWQgMDt2YXIgZj1jbGFzc3tjb25zdHJ1Y3RvcihkKXt0aGlzLm9yZGVyPWQsdGhpcy5zdGFjaz1bXX12aXNpdChkLGMpeyFkfHwodGhpcy5zdGFjay5wdXNoKGQpLHRoaXMub3JkZXI9PT1cInBvc3RcIj8odGhpcy5jaGlsZHJlbihkLGMpLGMoZCx0aGlzKSk6KGMoZCx0aGlzKSx0aGlzLmNoaWxkcmVuKGQsYykpLHRoaXMuc3RhY2sucG9wKCkpfWNoaWxkcmVuKGQsYyl7c3dpdGNoKGQudHlwZSl7Y2FzZVwiQmxvY2tcIjpjYXNlXCJUZW1wbGF0ZVwiOnJldHVybiBoLlByb2dyYW0odGhpcyxkLGMpO2Nhc2VcIkVsZW1lbnROb2RlXCI6cmV0dXJuIGguRWxlbWVudE5vZGUodGhpcyxkLGMpO2Nhc2VcIkJsb2NrU3RhdGVtZW50XCI6cmV0dXJuIGguQmxvY2tTdGF0ZW1lbnQodGhpcyxkLGMpO2RlZmF1bHQ6cmV0dXJufX19O3QuZGVmYXVsdD1mO3ZhciBoPXtQcm9ncmFtKGQsYyxvKXtmb3IobGV0IGU9MDtlPGMuYm9keS5sZW5ndGg7ZSsrKWQudmlzaXQoYy5ib2R5W2VdLG8pfSxUZW1wbGF0ZShkLGMsbyl7Zm9yKGxldCBlPTA7ZTxjLmJvZHkubGVuZ3RoO2UrKylkLnZpc2l0KGMuYm9keVtlXSxvKX0sQmxvY2soZCxjLG8pe2ZvcihsZXQgZT0wO2U8Yy5ib2R5Lmxlbmd0aDtlKyspZC52aXNpdChjLmJvZHlbZV0sbyl9LEVsZW1lbnROb2RlKGQsYyxvKXtmb3IobGV0IGU9MDtlPGMuY2hpbGRyZW4ubGVuZ3RoO2UrKylkLnZpc2l0KGMuY2hpbGRyZW5bZV0sbyl9LEJsb2NrU3RhdGVtZW50KGQsYyxvKXtkLnZpc2l0KGMucHJvZ3JhbSxvKSxkLnZpc2l0KGMuaW52ZXJzZXx8bnVsbCxvKX19fX0pLHllPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdXRpbHMuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5wYXJzZUVsZW1lbnRCbG9ja1BhcmFtcz1kLHQuY2hpbGRyZW5Gb3I9byx0LmFwcGVuZENoaWxkPWUsdC5pc0hCU0xpdGVyYWw9cix0LnByaW50TGl0ZXJhbD1zLHQuaXNVcHBlckNhc2U9cCx0LmlzTG93ZXJDYXNlPW47dmFyIGY9aGUoKSxoPS9bIVwiIyUtLFxcLlxcLzstPkBcXFstXFxeYFxcey1+XS87ZnVuY3Rpb24gZChhKXtsZXQgdT1jKGEpO3UmJihhLmJsb2NrUGFyYW1zPXUpfWZ1bmN0aW9uIGMoYSl7bGV0IHU9YS5hdHRyaWJ1dGVzLmxlbmd0aCxpPVtdO2ZvcihsZXQgYj0wO2I8dTtiKyspaS5wdXNoKGEuYXR0cmlidXRlc1tiXS5uYW1lKTtsZXQgbD1pLmluZGV4T2YoXCJhc1wiKTtpZihsPT09LTEmJmkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0uY2hhckF0KDApPT09XCJ8XCIpdGhyb3coMCxmLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiQmxvY2sgcGFyYW1ldGVycyBtdXN0IGJlIHByZWNlZGVkIGJ5IHRoZSBgYXNgIGtleXdvcmQsIGRldGVjdGVkIGJsb2NrIHBhcmFtZXRlcnMgd2l0aG91dCBgYXNgXCIsYS5sb2MpO2lmKGwhPT0tMSYmdT5sJiZpW2wrMV0uY2hhckF0KDApPT09XCJ8XCIpe2xldCBiPWkuc2xpY2UobCkuam9pbihcIiBcIik7aWYoYi5jaGFyQXQoYi5sZW5ndGgtMSkhPT1cInxcInx8Yi5tYXRjaCgvXFx8L2cpLmxlbmd0aCE9PTIpdGhyb3coMCxmLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiSW52YWxpZCBibG9jayBwYXJhbWV0ZXJzIHN5bnRheCwgJ1wiK2IrXCInXCIsYS5sb2MpO2xldCBQPVtdO2ZvcihsZXQgRT1sKzE7RTx1O0UrKyl7bGV0IHY9aVtFXS5yZXBsYWNlKC9cXHwvZyxcIlwiKTtpZih2IT09XCJcIil7aWYoaC50ZXN0KHYpKXRocm93KDAsZi5nZW5lcmF0ZVN5bnRheEVycm9yKShcIkludmFsaWQgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVycywgJ1wiK3YrXCInXCIsYS5sb2MpO1AucHVzaCh2KX19aWYoUC5sZW5ndGg9PT0wKXRocm93KDAsZi5nZW5lcmF0ZVN5bnRheEVycm9yKShcIkNhbm5vdCB1c2UgemVybyBibG9jayBwYXJhbWV0ZXJzXCIsYS5sb2MpO3JldHVybiBhLmF0dHJpYnV0ZXM9YS5hdHRyaWJ1dGVzLnNsaWNlKDAsbCksUH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBvKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2VcIkJsb2NrXCI6Y2FzZVwiVGVtcGxhdGVcIjpyZXR1cm4gYS5ib2R5O2Nhc2VcIkVsZW1lbnROb2RlXCI6cmV0dXJuIGEuY2hpbGRyZW59fWZ1bmN0aW9uIGUoYSx1KXtvKGEpLnB1c2godSl9ZnVuY3Rpb24gcihhKXtyZXR1cm4gYS50eXBlPT09XCJTdHJpbmdMaXRlcmFsXCJ8fGEudHlwZT09PVwiQm9vbGVhbkxpdGVyYWxcInx8YS50eXBlPT09XCJOdW1iZXJMaXRlcmFsXCJ8fGEudHlwZT09PVwiTnVsbExpdGVyYWxcInx8YS50eXBlPT09XCJVbmRlZmluZWRMaXRlcmFsXCJ9ZnVuY3Rpb24gcyhhKXtyZXR1cm4gYS50eXBlPT09XCJVbmRlZmluZWRMaXRlcmFsXCI/XCJ1bmRlZmluZWRcIjpKU09OLnN0cmluZ2lmeShhLnZhbHVlKX1mdW5jdGlvbiBwKGEpe3JldHVybiBhWzBdPT09YVswXS50b1VwcGVyQ2FzZSgpJiZhWzBdIT09YVswXS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIGFbMF09PT1hWzBdLnRvTG93ZXJDYXNlKCkmJmFbMF0hPT1hWzBdLnRvVXBwZXJDYXNlKCl9fX0pLExlPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdjEvcGFyc2VyLWJ1aWxkZXJzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIGY9WCgpLGg9d2UoKSxkPXtjbG9zZTohMSxvcGVuOiExfSxjPWNsYXNze3BvcyhyLHMpe3JldHVybntsaW5lOnIsY29sdW1uOnN9fWJsb2NrSXRzZWxmKHIpe2xldHtib2R5OnMsYmxvY2tQYXJhbXM6cCxjaGFpbmVkOm49ITEsbG9jOmF9PXI7cmV0dXJue3R5cGU6XCJCbG9ja1wiLGJvZHk6c3x8W10sYmxvY2tQYXJhbXM6cHx8W10sY2hhaW5lZDpuLGxvYzphfX10ZW1wbGF0ZShyKXtsZXR7Ym9keTpzLGJsb2NrUGFyYW1zOnAsbG9jOm59PXI7cmV0dXJue3R5cGU6XCJUZW1wbGF0ZVwiLGJvZHk6c3x8W10sYmxvY2tQYXJhbXM6cHx8W10sbG9jOm59fW11c3RhY2hlKHIpe2xldHtwYXRoOnMscGFyYW1zOnAsaGFzaDpuLHRydXN0aW5nOmEsbG9jOnUsc3RyaXA6aT1kfT1yO3JldHVybnt0eXBlOlwiTXVzdGFjaGVTdGF0ZW1lbnRcIixwYXRoOnMscGFyYW1zOnAsaGFzaDpuLGVzY2FwZWQ6IWEsdHJ1c3Rpbmc6YSxsb2M6dSxzdHJpcDppfHx7b3BlbjohMSxjbG9zZTohMX19fWJsb2NrKHIpe2xldHtwYXRoOnMscGFyYW1zOnAsaGFzaDpuLGRlZmF1bHRCbG9jazphLGVsc2VCbG9jazp1PW51bGwsbG9jOmksb3BlblN0cmlwOmw9ZCxpbnZlcnNlU3RyaXA6Yj1kLGNsb3NlU3RyaXA6UD1kfT1yO3JldHVybnt0eXBlOlwiQmxvY2tTdGF0ZW1lbnRcIixwYXRoOnMscGFyYW1zOnAsaGFzaDpuLHByb2dyYW06YSxpbnZlcnNlOnUsbG9jOmksb3BlblN0cmlwOmwsaW52ZXJzZVN0cmlwOmIsY2xvc2VTdHJpcDpQfX1jb21tZW50KHIscyl7cmV0dXJue3R5cGU6XCJDb21tZW50U3RhdGVtZW50XCIsdmFsdWU6cixsb2M6c319bXVzdGFjaGVDb21tZW50KHIscyl7cmV0dXJue3R5cGU6XCJNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnRcIix2YWx1ZTpyLGxvYzpzfX1jb25jYXQocixzKXtyZXR1cm57dHlwZTpcIkNvbmNhdFN0YXRlbWVudFwiLHBhcnRzOnIsbG9jOnN9fWVsZW1lbnQocil7bGV0e3RhZzpzLHNlbGZDbG9zaW5nOnAsYXR0cnM6bixibG9ja1BhcmFtczphLG1vZGlmaWVyczp1LGNvbW1lbnRzOmksY2hpbGRyZW46bCxsb2M6Yn09cjtyZXR1cm57dHlwZTpcIkVsZW1lbnROb2RlXCIsdGFnOnMsc2VsZkNsb3Npbmc6cCxhdHRyaWJ1dGVzOm58fFtdLGJsb2NrUGFyYW1zOmF8fFtdLG1vZGlmaWVyczp1fHxbXSxjb21tZW50czppfHxbXSxjaGlsZHJlbjpsfHxbXSxsb2M6Yn19ZWxlbWVudE1vZGlmaWVyKHIpe2xldHtwYXRoOnMscGFyYW1zOnAsaGFzaDpuLGxvYzphfT1yO3JldHVybnt0eXBlOlwiRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50XCIscGF0aDpzLHBhcmFtczpwLGhhc2g6bixsb2M6YX19YXR0cihyKXtsZXR7bmFtZTpzLHZhbHVlOnAsbG9jOm59PXI7cmV0dXJue3R5cGU6XCJBdHRyTm9kZVwiLG5hbWU6cyx2YWx1ZTpwLGxvYzpufX10ZXh0KHIpe2xldHtjaGFyczpzLGxvYzpwfT1yO3JldHVybnt0eXBlOlwiVGV4dE5vZGVcIixjaGFyczpzLGxvYzpwfX1zZXhwcihyKXtsZXR7cGF0aDpzLHBhcmFtczpwLGhhc2g6bixsb2M6YX09cjtyZXR1cm57dHlwZTpcIlN1YkV4cHJlc3Npb25cIixwYXRoOnMscGFyYW1zOnAsaGFzaDpuLGxvYzphfX1wYXRoKHIpe2xldHtoZWFkOnMsdGFpbDpwLGxvYzpufT1yLHtvcmlnaW5hbDphfT1vKHMpLHU9Wy4uLmEsLi4ucF0uam9pbihcIi5cIik7cmV0dXJuIG5ldyBoLlBhdGhFeHByZXNzaW9uSW1wbFYxKHUscyxwLG4pfWhlYWQocixzKXtyZXR1cm4gclswXT09PVwiQFwiP3RoaXMuYXROYW1lKHIscyk6cj09PVwidGhpc1wiP3RoaXMudGhpcyhzKTp0aGlzLnZhcihyLHMpfXRoaXMocil7cmV0dXJue3R5cGU6XCJUaGlzSGVhZFwiLGxvYzpyfX1hdE5hbWUocixzKXtyZXR1cm57dHlwZTpcIkF0SGVhZFwiLG5hbWU6cixsb2M6c319dmFyKHIscyl7cmV0dXJue3R5cGU6XCJWYXJIZWFkXCIsbmFtZTpyLGxvYzpzfX1oYXNoKHIscyl7cmV0dXJue3R5cGU6XCJIYXNoXCIscGFpcnM6cnx8W10sbG9jOnN9fXBhaXIocil7bGV0e2tleTpzLHZhbHVlOnAsbG9jOm59PXI7cmV0dXJue3R5cGU6XCJIYXNoUGFpclwiLGtleTpzLHZhbHVlOnAsbG9jOm59fWxpdGVyYWwocil7bGV0e3R5cGU6cyx2YWx1ZTpwLGxvYzpufT1yO3JldHVybnt0eXBlOnMsdmFsdWU6cCxvcmlnaW5hbDpwLGxvYzpufX11bmRlZmluZWQoKXtyZXR1cm4gdGhpcy5saXRlcmFsKHt0eXBlOlwiVW5kZWZpbmVkTGl0ZXJhbFwiLHZhbHVlOnZvaWQgMH0pfW51bGwoKXtyZXR1cm4gdGhpcy5saXRlcmFsKHt0eXBlOlwiTnVsbExpdGVyYWxcIix2YWx1ZTpudWxsfSl9c3RyaW5nKHIscyl7cmV0dXJuIHRoaXMubGl0ZXJhbCh7dHlwZTpcIlN0cmluZ0xpdGVyYWxcIix2YWx1ZTpyLGxvYzpzfSl9Ym9vbGVhbihyLHMpe3JldHVybiB0aGlzLmxpdGVyYWwoe3R5cGU6XCJCb29sZWFuTGl0ZXJhbFwiLHZhbHVlOnIsbG9jOnN9KX1udW1iZXIocixzKXtyZXR1cm4gdGhpcy5saXRlcmFsKHt0eXBlOlwiTnVtYmVyTGl0ZXJhbFwiLHZhbHVlOnIsbG9jOnN9KX19O2Z1bmN0aW9uIG8ocil7c3dpdGNoKHIudHlwZSl7Y2FzZVwiQXRIZWFkXCI6cmV0dXJue29yaWdpbmFsOnIubmFtZSxwYXJ0czpbci5uYW1lXX07Y2FzZVwiVGhpc0hlYWRcIjpyZXR1cm57b3JpZ2luYWw6XCJ0aGlzXCIscGFydHM6W119O2Nhc2VcIlZhckhlYWRcIjpyZXR1cm57b3JpZ2luYWw6ci5uYW1lLHBhcnRzOltyLm5hbWVdfX19dmFyIGU9bmV3IGM7dC5kZWZhdWx0PWV9fSkscXQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9wYXJzZXIuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5QYXJzZXI9dm9pZCAwO3ZhciBmPVgoKSxoPUtlKCksZD1jbGFzc3tjb25zdHJ1Y3RvcihjKXtsZXQgbz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06bmV3IGguRW50aXR5UGFyc2VyKGguSFRNTDVOYW1lZENoYXJSZWZzKSxlPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTpcInByZWNvbXBpbGVcIjt0aGlzLmVsZW1lbnRTdGFjaz1bXSx0aGlzLmN1cnJlbnRBdHRyaWJ1dGU9bnVsbCx0aGlzLmN1cnJlbnROb2RlPW51bGwsdGhpcy5zb3VyY2U9Yyx0aGlzLmxpbmVzPWMuc291cmNlLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyksdGhpcy50b2tlbml6ZXI9bmV3IGguRXZlbnRlZFRva2VuaXplcih0aGlzLG8sZSl9b2Zmc2V0KCl7bGV0e2xpbmU6Yyxjb2x1bW46b309dGhpcy50b2tlbml6ZXI7cmV0dXJuIHRoaXMuc291cmNlLm9mZnNldEZvcihjLG8pfXBvcyhjKXtsZXR7bGluZTpvLGNvbHVtbjplfT1jO3JldHVybiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IobyxlKX1maW5pc2goYyl7cmV0dXJuKDAsZi5hc3NpZ24pKHt9LGMse2xvYzpjLmxvYy51bnRpbCh0aGlzLm9mZnNldCgpKX0pfWdldCBjdXJyZW50QXR0cigpe3JldHVybiB0aGlzLmN1cnJlbnRBdHRyaWJ1dGV9Z2V0IGN1cnJlbnRUYWcoKXtyZXR1cm4gdGhpcy5jdXJyZW50Tm9kZX1nZXQgY3VycmVudFN0YXJ0VGFnKCl7cmV0dXJuIHRoaXMuY3VycmVudE5vZGV9Z2V0IGN1cnJlbnRFbmRUYWcoKXtyZXR1cm4gdGhpcy5jdXJyZW50Tm9kZX1nZXQgY3VycmVudENvbW1lbnQoKXtyZXR1cm4gdGhpcy5jdXJyZW50Tm9kZX1nZXQgY3VycmVudERhdGEoKXtyZXR1cm4gdGhpcy5jdXJyZW50Tm9kZX1hY2NlcHRUZW1wbGF0ZShjKXtyZXR1cm4gdGhpc1tjLnR5cGVdKGMpfWFjY2VwdE5vZGUoYyl7cmV0dXJuIHRoaXNbYy50eXBlXShjKX1jdXJyZW50RWxlbWVudCgpe3JldHVybiB0aGlzLmVsZW1lbnRTdGFja1t0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGgtMV19c291cmNlRm9yTm9kZShjLG8pe2xldCBlPWMubG9jLnN0YXJ0LmxpbmUtMSxyPWUtMSxzPWMubG9jLnN0YXJ0LmNvbHVtbixwPVtdLG4sYSx1O2ZvcihvPyhhPW8ubG9jLmVuZC5saW5lLTEsdT1vLmxvYy5lbmQuY29sdW1uKTooYT1jLmxvYy5lbmQubGluZS0xLHU9Yy5sb2MuZW5kLmNvbHVtbik7cjxhOylyKyssbj10aGlzLmxpbmVzW3JdLHI9PT1lP2U9PT1hP3AucHVzaChuLnNsaWNlKHMsdSkpOnAucHVzaChuLnNsaWNlKHMpKTpyPT09YT9wLnB1c2gobi5zbGljZSgwLHUpKTpwLnB1c2gobik7cmV0dXJuIHAuam9pbihgXG5gKX19O3QuUGFyc2VyPWR9fSkseHQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi9wYXJzZXIvaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSGFuZGxlYmFyc05vZGVWaXNpdG9ycz12b2lkIDA7dmFyIGY9cXQoKSxoPWdlKCksZD1oZSgpLGM9eWUoKSxvPXdlKCksZT1yKExlKCkpO2Z1bmN0aW9uIHIoaSl7cmV0dXJuIGkmJmkuX19lc01vZHVsZT9pOntkZWZhdWx0Oml9fXZhciBzPWNsYXNzIGV4dGVuZHMgZi5QYXJzZXJ7Z2V0IGlzVG9wTGV2ZWwoKXtyZXR1cm4gdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoPT09MH1Qcm9ncmFtKGkpe2xldCBsPVtdLGI7dGhpcy5pc1RvcExldmVsP2I9ZS5kZWZhdWx0LnRlbXBsYXRlKHtib2R5OmwsYmxvY2tQYXJhbXM6aS5ibG9ja1BhcmFtcyxsb2M6dGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYyl9KTpiPWUuZGVmYXVsdC5ibG9ja0l0c2VsZih7Ym9keTpsLGJsb2NrUGFyYW1zOmkuYmxvY2tQYXJhbXMsY2hhaW5lZDppLmNoYWluZWQsbG9jOnRoaXMuc291cmNlLnNwYW5Gb3IoaS5sb2MpfSk7bGV0IFAsRT1pLmJvZHkubGVuZ3RoO2lmKHRoaXMuZWxlbWVudFN0YWNrLnB1c2goYiksRT09PTApcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO2ZvcihQPTA7UDxFO1ArKyl0aGlzLmFjY2VwdE5vZGUoaS5ib2R5W1BdKTtsZXQgdj10aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtpZih2IT09Yil7bGV0IF89djt0aHJvdygwLGQuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJVbmNsb3NlZCBlbGVtZW50IGBcIi5jb25jYXQoXy50YWcsXCJgXCIpLF8ubG9jKX1yZXR1cm4gYn1CbG9ja1N0YXRlbWVudChpKXtpZih0aGlzLnRva2VuaXplci5zdGF0ZT09PVwiY29tbWVudFwiKXt0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEodGhpcy5zb3VyY2VGb3JOb2RlKGkpKTtyZXR1cm59aWYodGhpcy50b2tlbml6ZXIuc3RhdGUhPT1cImRhdGFcIiYmdGhpcy50b2tlbml6ZXIuc3RhdGUhPT1cImJlZm9yZURhdGFcIil0aHJvdygwLGQuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJBIGJsb2NrIG1heSBvbmx5IGJlIHVzZWQgaW5zaWRlIGFuIEhUTUwgZWxlbWVudCBvciBhbm90aGVyIGJsb2NrLlwiLHRoaXMuc291cmNlLnNwYW5Gb3IoaS5sb2MpKTtsZXR7cGF0aDpsLHBhcmFtczpiLGhhc2g6UH09YSh0aGlzLGkpO2kucHJvZ3JhbS5sb2N8fChpLnByb2dyYW0ubG9jPWguTk9OX0VYSVNURU5UX0xPQ0FUSU9OKSxpLmludmVyc2UmJiFpLmludmVyc2UubG9jJiYoaS5pbnZlcnNlLmxvYz1oLk5PTl9FWElTVEVOVF9MT0NBVElPTik7bGV0IEU9dGhpcy5Qcm9ncmFtKGkucHJvZ3JhbSksdj1pLmludmVyc2U/dGhpcy5Qcm9ncmFtKGkuaW52ZXJzZSk6bnVsbCxfPWUuZGVmYXVsdC5ibG9jayh7cGF0aDpsLHBhcmFtczpiLGhhc2g6UCxkZWZhdWx0QmxvY2s6RSxlbHNlQmxvY2s6dixsb2M6dGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYyksb3BlblN0cmlwOmkub3BlblN0cmlwLGludmVyc2VTdHJpcDppLmludmVyc2VTdHJpcCxjbG9zZVN0cmlwOmkuY2xvc2VTdHJpcH0pLHk9dGhpcy5jdXJyZW50RWxlbWVudCgpOygwLGMuYXBwZW5kQ2hpbGQpKHksXyl9TXVzdGFjaGVTdGF0ZW1lbnQoaSl7bGV0e3Rva2VuaXplcjpsfT10aGlzO2lmKGwuc3RhdGU9PT1cImNvbW1lbnRcIil7dGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShpKSk7cmV0dXJufWxldCBiLHtlc2NhcGVkOlAsbG9jOkUsc3RyaXA6dn09aTtpZigoMCxjLmlzSEJTTGl0ZXJhbCkoaS5wYXRoKSliPWUuZGVmYXVsdC5tdXN0YWNoZSh7cGF0aDp0aGlzLmFjY2VwdE5vZGUoaS5wYXRoKSxwYXJhbXM6W10saGFzaDplLmRlZmF1bHQuaGFzaChbXSx0aGlzLnNvdXJjZS5zcGFuRm9yKGkucGF0aC5sb2MpLmNvbGxhcHNlKFwiZW5kXCIpKSx0cnVzdGluZzohUCxsb2M6dGhpcy5zb3VyY2Uuc3BhbkZvcihFKSxzdHJpcDp2fSk7ZWxzZXtsZXR7cGF0aDpfLHBhcmFtczp5LGhhc2g6Z309YSh0aGlzLGkpO2I9ZS5kZWZhdWx0Lm11c3RhY2hlKHtwYXRoOl8scGFyYW1zOnksaGFzaDpnLHRydXN0aW5nOiFQLGxvYzp0aGlzLnNvdXJjZS5zcGFuRm9yKEUpLHN0cmlwOnZ9KX1zd2l0Y2gobC5zdGF0ZSl7Y2FzZVwidGFnT3BlblwiOmNhc2VcInRhZ05hbWVcIjp0aHJvdygwLGQuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJDYW5ub3QgdXNlIG11c3RhY2hlcyBpbiBhbiBlbGVtZW50cyB0YWduYW1lXCIsYi5sb2MpO2Nhc2VcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjp1KHRoaXMuY3VycmVudFN0YXJ0VGFnLGIpO2JyZWFrO2Nhc2VcImF0dHJpYnV0ZU5hbWVcIjpjYXNlXCJhZnRlckF0dHJpYnV0ZU5hbWVcIjp0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoITEpLHRoaXMuZmluaXNoQXR0cmlidXRlVmFsdWUoKSx1KHRoaXMuY3VycmVudFN0YXJ0VGFnLGIpLGwudHJhbnNpdGlvblRvKFwiYmVmb3JlQXR0cmlidXRlTmFtZVwiKTticmVhaztjYXNlXCJhZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkXCI6dSh0aGlzLmN1cnJlbnRTdGFydFRhZyxiKSxsLnRyYW5zaXRpb25UbyhcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIik7YnJlYWs7Y2FzZVwiYmVmb3JlQXR0cmlidXRlVmFsdWVcIjp0aGlzLmJlZ2luQXR0cmlidXRlVmFsdWUoITEpLHRoaXMuYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChiKSxsLnRyYW5zaXRpb25UbyhcImF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRcIik7YnJlYWs7Y2FzZVwiYXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRcIjpjYXNlXCJhdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFwiOmNhc2VcImF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRcIjp0aGlzLmFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQoYik7YnJlYWs7ZGVmYXVsdDooMCxjLmFwcGVuZENoaWxkKSh0aGlzLmN1cnJlbnRFbGVtZW50KCksYil9cmV0dXJuIGJ9YXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChpKXt0aGlzLmZpbmFsaXplVGV4dFBhcnQoKTtsZXQgbD10aGlzLmN1cnJlbnRBdHRyO2wuaXNEeW5hbWljPSEwLGwucGFydHMucHVzaChpKX1maW5hbGl6ZVRleHRQYXJ0KCl7bGV0IGw9dGhpcy5jdXJyZW50QXR0ci5jdXJyZW50UGFydDtsIT09bnVsbCYmKHRoaXMuY3VycmVudEF0dHIucGFydHMucHVzaChsKSx0aGlzLnN0YXJ0VGV4dFBhcnQoKSl9c3RhcnRUZXh0UGFydCgpe3RoaXMuY3VycmVudEF0dHIuY3VycmVudFBhcnQ9bnVsbH1Db250ZW50U3RhdGVtZW50KGkpe24odGhpcy50b2tlbml6ZXIsaSksdGhpcy50b2tlbml6ZXIudG9rZW5pemVQYXJ0KGkudmFsdWUpLHRoaXMudG9rZW5pemVyLmZsdXNoRGF0YSgpfUNvbW1lbnRTdGF0ZW1lbnQoaSl7bGV0e3Rva2VuaXplcjpsfT10aGlzO2lmKGwuc3RhdGU9PT1cImNvbW1lbnRcIilyZXR1cm4gdGhpcy5hcHBlbmRUb0NvbW1lbnREYXRhKHRoaXMuc291cmNlRm9yTm9kZShpKSksbnVsbDtsZXR7dmFsdWU6Yixsb2M6UH09aSxFPWUuZGVmYXVsdC5tdXN0YWNoZUNvbW1lbnQoYix0aGlzLnNvdXJjZS5zcGFuRm9yKFApKTtzd2l0Y2gobC5zdGF0ZSl7Y2FzZVwiYmVmb3JlQXR0cmlidXRlTmFtZVwiOmNhc2VcImFmdGVyQXR0cmlidXRlTmFtZVwiOnRoaXMuY3VycmVudFN0YXJ0VGFnLmNvbW1lbnRzLnB1c2goRSk7YnJlYWs7Y2FzZVwiYmVmb3JlRGF0YVwiOmNhc2VcImRhdGFcIjooMCxjLmFwcGVuZENoaWxkKSh0aGlzLmN1cnJlbnRFbGVtZW50KCksRSk7YnJlYWs7ZGVmYXVsdDp0aHJvdygwLGQuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJVc2luZyBhIEhhbmRsZWJhcnMgY29tbWVudCB3aGVuIGluIHRoZSBgXCIuY29uY2F0KGwuc3RhdGUsXCJgIHN0YXRlIGlzIG5vdCBzdXBwb3J0ZWRcIiksdGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYykpfXJldHVybiBFfVBhcnRpYWxTdGF0ZW1lbnQoaSl7dGhyb3coMCxkLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiSGFuZGxlYmFycyBwYXJ0aWFscyBhcmUgbm90IHN1cHBvcnRlZFwiLHRoaXMuc291cmNlLnNwYW5Gb3IoaS5sb2MpKX1QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQoaSl7dGhyb3coMCxkLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiSGFuZGxlYmFycyBwYXJ0aWFsIGJsb2NrcyBhcmUgbm90IHN1cHBvcnRlZFwiLHRoaXMuc291cmNlLnNwYW5Gb3IoaS5sb2MpKX1EZWNvcmF0b3IoaSl7dGhyb3coMCxkLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiSGFuZGxlYmFycyBkZWNvcmF0b3JzIGFyZSBub3Qgc3VwcG9ydGVkXCIsdGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYykpfURlY29yYXRvckJsb2NrKGkpe3Rocm93KDAsZC5nZW5lcmF0ZVN5bnRheEVycm9yKShcIkhhbmRsZWJhcnMgZGVjb3JhdG9yIGJsb2NrcyBhcmUgbm90IHN1cHBvcnRlZFwiLHRoaXMuc291cmNlLnNwYW5Gb3IoaS5sb2MpKX1TdWJFeHByZXNzaW9uKGkpe2xldHtwYXRoOmwscGFyYW1zOmIsaGFzaDpQfT1hKHRoaXMsaSk7cmV0dXJuIGUuZGVmYXVsdC5zZXhwcih7cGF0aDpsLHBhcmFtczpiLGhhc2g6UCxsb2M6dGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYyl9KX1QYXRoRXhwcmVzc2lvbihpKXtsZXR7b3JpZ2luYWw6bH09aSxiO2lmKGwuaW5kZXhPZihcIi9cIikhPT0tMSl7aWYobC5zbGljZSgwLDIpPT09XCIuL1wiKXRocm93KDAsZC5nZW5lcmF0ZVN5bnRheEVycm9yKSgnVXNpbmcgXCIuL1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lciBhbmQgdW5uZWNlc3NhcnknLHRoaXMuc291cmNlLnNwYW5Gb3IoaS5sb2MpKTtpZihsLnNsaWNlKDAsMyk9PT1cIi4uL1wiKXRocm93KDAsZC5nZW5lcmF0ZVN5bnRheEVycm9yKSgnQ2hhbmdpbmcgY29udGV4dCB1c2luZyBcIi4uL1wiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gR2xpbW1lcicsdGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYykpO2lmKGwuaW5kZXhPZihcIi5cIikhPT0tMSl0aHJvdygwLGQuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJNaXhpbmcgJy4nIGFuZCAnLycgaW4gcGF0aHMgaXMgbm90IHN1cHBvcnRlZCBpbiBHbGltbWVyOyB1c2Ugb25seSAnLicgdG8gc2VwYXJhdGUgcHJvcGVydHkgcGF0aHNcIix0aGlzLnNvdXJjZS5zcGFuRm9yKGkubG9jKSk7Yj1baS5wYXJ0cy5qb2luKFwiL1wiKV19ZWxzZXtpZihsPT09XCIuXCIpdGhyb3coMCxkLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiJy4nIGlzIG5vdCBhIHN1cHBvcnRlZCBwYXRoIGluIEdsaW1tZXI7IGNoZWNrIGZvciBhIHBhdGggd2l0aCBhIHRyYWlsaW5nICcuJ1wiLHRoaXMuc291cmNlLnNwYW5Gb3IoaS5sb2MpKTtiPWkucGFydHN9bGV0IFA9ITE7bC5tYXRjaCgvXnRoaXMoXFwuLispPyQvKSYmKFA9ITApO2xldCBFO2lmKFApRT17dHlwZTpcIlRoaXNIZWFkXCIsbG9jOntzdGFydDppLmxvYy5zdGFydCxlbmQ6e2xpbmU6aS5sb2Muc3RhcnQubGluZSxjb2x1bW46aS5sb2Muc3RhcnQuY29sdW1uKzR9fX07ZWxzZSBpZihpLmRhdGEpe2xldCB2PWIuc2hpZnQoKTtpZih2PT09dm9pZCAwKXRocm93KDAsZC5nZW5lcmF0ZVN5bnRheEVycm9yKShcIkF0dGVtcHRlZCB0byBwYXJzZSBhIHBhdGggZXhwcmVzc2lvbiwgYnV0IGl0IHdhcyBub3QgdmFsaWQuIFBhdGhzIGJlZ2lubmluZyB3aXRoIEAgbXVzdCBzdGFydCB3aXRoIGEtei5cIix0aGlzLnNvdXJjZS5zcGFuRm9yKGkubG9jKSk7RT17dHlwZTpcIkF0SGVhZFwiLG5hbWU6XCJAXCIuY29uY2F0KHYpLGxvYzp7c3RhcnQ6aS5sb2Muc3RhcnQsZW5kOntsaW5lOmkubG9jLnN0YXJ0LmxpbmUsY29sdW1uOmkubG9jLnN0YXJ0LmNvbHVtbit2Lmxlbmd0aCsxfX19fWVsc2V7bGV0IHY9Yi5zaGlmdCgpO2lmKHY9PT12b2lkIDApdGhyb3coMCxkLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiQXR0ZW1wdGVkIHRvIHBhcnNlIGEgcGF0aCBleHByZXNzaW9uLCBidXQgaXQgd2FzIG5vdCB2YWxpZC4gUGF0aHMgbXVzdCBzdGFydCB3aXRoIGEteiBvciBBLVouXCIsdGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYykpO0U9e3R5cGU6XCJWYXJIZWFkXCIsbmFtZTp2LGxvYzp7c3RhcnQ6aS5sb2Muc3RhcnQsZW5kOntsaW5lOmkubG9jLnN0YXJ0LmxpbmUsY29sdW1uOmkubG9jLnN0YXJ0LmNvbHVtbit2Lmxlbmd0aH19fX1yZXR1cm4gbmV3IG8uUGF0aEV4cHJlc3Npb25JbXBsVjEoaS5vcmlnaW5hbCxFLGIsdGhpcy5zb3VyY2Uuc3BhbkZvcihpLmxvYykpfUhhc2goaSl7bGV0IGw9W107Zm9yKGxldCBiPTA7YjxpLnBhaXJzLmxlbmd0aDtiKyspe2xldCBQPWkucGFpcnNbYl07bC5wdXNoKGUuZGVmYXVsdC5wYWlyKHtrZXk6UC5rZXksdmFsdWU6dGhpcy5hY2NlcHROb2RlKFAudmFsdWUpLGxvYzp0aGlzLnNvdXJjZS5zcGFuRm9yKFAubG9jKX0pKX1yZXR1cm4gZS5kZWZhdWx0Lmhhc2gobCx0aGlzLnNvdXJjZS5zcGFuRm9yKGkubG9jKSl9U3RyaW5nTGl0ZXJhbChpKXtyZXR1cm4gZS5kZWZhdWx0LmxpdGVyYWwoe3R5cGU6XCJTdHJpbmdMaXRlcmFsXCIsdmFsdWU6aS52YWx1ZSxsb2M6aS5sb2N9KX1Cb29sZWFuTGl0ZXJhbChpKXtyZXR1cm4gZS5kZWZhdWx0LmxpdGVyYWwoe3R5cGU6XCJCb29sZWFuTGl0ZXJhbFwiLHZhbHVlOmkudmFsdWUsbG9jOmkubG9jfSl9TnVtYmVyTGl0ZXJhbChpKXtyZXR1cm4gZS5kZWZhdWx0LmxpdGVyYWwoe3R5cGU6XCJOdW1iZXJMaXRlcmFsXCIsdmFsdWU6aS52YWx1ZSxsb2M6aS5sb2N9KX1VbmRlZmluZWRMaXRlcmFsKGkpe3JldHVybiBlLmRlZmF1bHQubGl0ZXJhbCh7dHlwZTpcIlVuZGVmaW5lZExpdGVyYWxcIix2YWx1ZTp2b2lkIDAsbG9jOmkubG9jfSl9TnVsbExpdGVyYWwoaSl7cmV0dXJuIGUuZGVmYXVsdC5saXRlcmFsKHt0eXBlOlwiTnVsbExpdGVyYWxcIix2YWx1ZTpudWxsLGxvYzppLmxvY30pfX07dC5IYW5kbGViYXJzTm9kZVZpc2l0b3JzPXM7ZnVuY3Rpb24gcChpLGwpe2lmKGw9PT1cIlwiKXJldHVybntsaW5lczppLnNwbGl0KGBcbmApLmxlbmd0aC0xLGNvbHVtbnM6MH07bGV0IFA9aS5zcGxpdChsKVswXS5zcGxpdCgvXFxuLyksRT1QLmxlbmd0aC0xO3JldHVybntsaW5lczpFLGNvbHVtbnM6UFtFXS5sZW5ndGh9fWZ1bmN0aW9uIG4oaSxsKXtsZXQgYj1sLmxvYy5zdGFydC5saW5lLFA9bC5sb2Muc3RhcnQuY29sdW1uLEU9cChsLm9yaWdpbmFsLGwudmFsdWUpO2I9YitFLmxpbmVzLEUubGluZXM/UD1FLmNvbHVtbnM6UD1QK0UuY29sdW1ucyxpLmxpbmU9YixpLmNvbHVtbj1QfWZ1bmN0aW9uIGEoaSxsKXtpZihsLnBhdGgudHlwZS5lbmRzV2l0aChcIkxpdGVyYWxcIikpe2xldCBfPWwucGF0aCx5PVwiXCI7dGhyb3cgXy50eXBlPT09XCJCb29sZWFuTGl0ZXJhbFwiP3k9Xy5vcmlnaW5hbC50b1N0cmluZygpOl8udHlwZT09PVwiU3RyaW5nTGl0ZXJhbFwiP3k9J1wiJy5jb25jYXQoXy5vcmlnaW5hbCwnXCInKTpfLnR5cGU9PT1cIk51bGxMaXRlcmFsXCI/eT1cIm51bGxcIjpfLnR5cGU9PT1cIk51bWJlckxpdGVyYWxcIj95PV8udmFsdWUudG9TdHJpbmcoKTp5PVwidW5kZWZpbmVkXCIsKDAsZC5nZW5lcmF0ZVN5bnRheEVycm9yKShcIlwiLmNvbmNhdChfLnR5cGUsJyBcIicpLmNvbmNhdChfLnR5cGU9PT1cIlN0cmluZ0xpdGVyYWxcIj9fLm9yaWdpbmFsOnksJ1wiIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBzdWItZXhwcmVzc2lvbiwgcmVwbGFjZSAoJykuY29uY2F0KHksXCIpIHdpdGggXCIpLmNvbmNhdCh5KSxpLnNvdXJjZS5zcGFuRm9yKF8ubG9jKSl9bGV0IGI9bC5wYXRoLnR5cGU9PT1cIlBhdGhFeHByZXNzaW9uXCI/aS5QYXRoRXhwcmVzc2lvbihsLnBhdGgpOmkuU3ViRXhwcmVzc2lvbihsLnBhdGgpLFA9bC5wYXJhbXM/bC5wYXJhbXMubWFwKF89PmkuYWNjZXB0Tm9kZShfKSk6W10sRT1QLmxlbmd0aD4wP1BbUC5sZW5ndGgtMV0ubG9jOmIubG9jLHY9bC5oYXNoP2kuSGFzaChsLmhhc2gpOnt0eXBlOlwiSGFzaFwiLHBhaXJzOltdLGxvYzppLnNvdXJjZS5zcGFuRm9yKEUpLmNvbGxhcHNlKFwiZW5kXCIpfTtyZXR1cm57cGF0aDpiLHBhcmFtczpQLGhhc2g6dn19ZnVuY3Rpb24gdShpLGwpe2xldHtwYXRoOmIscGFyYW1zOlAsaGFzaDpFLGxvYzp2fT1sO2lmKCgwLGMuaXNIQlNMaXRlcmFsKShiKSl7bGV0IHk9XCJ7e1wiLmNvbmNhdCgoMCxjLnByaW50TGl0ZXJhbCkoYiksXCJ9fVwiKSxnPVwiPFwiLmNvbmNhdChpLm5hbWUsXCIgLi4uIFwiKS5jb25jYXQoeSxcIiAuLi5cIik7dGhyb3coMCxkLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiSW4gXCIuY29uY2F0KGcsXCIsIFwiKS5jb25jYXQoeSxcIiBpcyBub3QgYSB2YWxpZCBtb2RpZmllclwiKSxsLmxvYyl9bGV0IF89ZS5kZWZhdWx0LmVsZW1lbnRNb2RpZmllcih7cGF0aDpiLHBhcmFtczpQLGhhc2g6RSxsb2M6dn0pO2kubW9kaWZpZXJzLnB1c2goXyl9fX0pLEZlPUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVycy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnByZXByb2Nlc3M9Xyx0LlRva2VuaXplckV2ZW50SGFuZGxlcnM9dm9pZCAwO3ZhciBmPVgoKSxoPUl0KCksZD1LZSgpLGM9YihXZSgpKSxvPVRlKCksZT1EZSgpLHI9dWUoKSxzPWhlKCkscD1iKE5lKCkpLG49YihKZSgpKSxhPXllKCksdT1iKExlKCkpLGk9YihrZSgpKSxsPXh0KCk7ZnVuY3Rpb24gYih5KXtyZXR1cm4geSYmeS5fX2VzTW9kdWxlP3k6e2RlZmF1bHQ6eX19dmFyIFA9Y2xhc3MgZXh0ZW5kcyBsLkhhbmRsZWJhcnNOb2RlVmlzaXRvcnN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudGFnT3BlbkxpbmU9MCx0aGlzLnRhZ09wZW5Db2x1bW49MH1yZXNldCgpe3RoaXMuY3VycmVudE5vZGU9bnVsbH1iZWdpbkNvbW1lbnQoKXt0aGlzLmN1cnJlbnROb2RlPXUuZGVmYXVsdC5jb21tZW50KFwiXCIsdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsdGhpcy50YWdPcGVuQ29sdW1uKSl9YXBwZW5kVG9Db21tZW50RGF0YSh5KXt0aGlzLmN1cnJlbnRDb21tZW50LnZhbHVlKz15fWZpbmlzaENvbW1lbnQoKXsoMCxhLmFwcGVuZENoaWxkKSh0aGlzLmN1cnJlbnRFbGVtZW50KCksdGhpcy5maW5pc2godGhpcy5jdXJyZW50Q29tbWVudCkpfWJlZ2luRGF0YSgpe3RoaXMuY3VycmVudE5vZGU9dS5kZWZhdWx0LnRleHQoe2NoYXJzOlwiXCIsbG9jOnRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCl9KX1hcHBlbmRUb0RhdGEoeSl7dGhpcy5jdXJyZW50RGF0YS5jaGFycys9eX1maW5pc2hEYXRhKCl7dGhpcy5jdXJyZW50RGF0YS5sb2M9dGhpcy5jdXJyZW50RGF0YS5sb2Mud2l0aEVuZCh0aGlzLm9mZnNldCgpKSwoMCxhLmFwcGVuZENoaWxkKSh0aGlzLmN1cnJlbnRFbGVtZW50KCksdGhpcy5jdXJyZW50RGF0YSl9dGFnT3Blbigpe3RoaXMudGFnT3BlbkxpbmU9dGhpcy50b2tlbml6ZXIubGluZSx0aGlzLnRhZ09wZW5Db2x1bW49dGhpcy50b2tlbml6ZXIuY29sdW1ufWJlZ2luU3RhcnRUYWcoKXt0aGlzLmN1cnJlbnROb2RlPXt0eXBlOlwiU3RhcnRUYWdcIixuYW1lOlwiXCIsYXR0cmlidXRlczpbXSxtb2RpZmllcnM6W10sY29tbWVudHM6W10sc2VsZkNsb3Npbmc6ITEsbG9jOnRoaXMuc291cmNlLm9mZnNldEZvcih0aGlzLnRhZ09wZW5MaW5lLHRoaXMudGFnT3BlbkNvbHVtbil9fWJlZ2luRW5kVGFnKCl7dGhpcy5jdXJyZW50Tm9kZT17dHlwZTpcIkVuZFRhZ1wiLG5hbWU6XCJcIixhdHRyaWJ1dGVzOltdLG1vZGlmaWVyczpbXSxjb21tZW50czpbXSxzZWxmQ2xvc2luZzohMSxsb2M6dGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKHRoaXMudGFnT3BlbkxpbmUsdGhpcy50YWdPcGVuQ29sdW1uKX19ZmluaXNoVGFnKCl7bGV0IHk9dGhpcy5maW5pc2godGhpcy5jdXJyZW50VGFnKTtpZih5LnR5cGU9PT1cIlN0YXJ0VGFnXCIpe2lmKHRoaXMuZmluaXNoU3RhcnRUYWcoKSx5Lm5hbWU9PT1cIjpcIil0aHJvdygwLHMuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJJbnZhbGlkIG5hbWVkIGJsb2NrIG5hbWVkIGRldGVjdGVkLCB5b3UgbWF5IGhhdmUgY3JlYXRlZCBhIG5hbWVkIGJsb2NrIHdpdGhvdXQgYSBuYW1lLCBvciB5b3UgbWF5IGhhdmUgYmVnYW4geW91ciBuYW1lIHdpdGggYSBudW1iZXIuIE5hbWVkIGJsb2NrcyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBhcmUgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBsb25nLCBhbmQgYmVnaW4gd2l0aCBhIGxvd2VyIGNhc2UgbGV0dGVyXCIsdGhpcy5zb3VyY2Uuc3BhbkZvcih7c3RhcnQ6dGhpcy5jdXJyZW50VGFnLmxvYy50b0pTT04oKSxlbmQ6dGhpcy5vZmZzZXQoKS50b0pTT04oKX0pKTsoby52b2lkTWFwW3kubmFtZV18fHkuc2VsZkNsb3NpbmcpJiZ0aGlzLmZpbmlzaEVuZFRhZyghMCl9ZWxzZSB5LnR5cGU9PT1cIkVuZFRhZ1wiJiZ0aGlzLmZpbmlzaEVuZFRhZyghMSl9ZmluaXNoU3RhcnRUYWcoKXtsZXR7bmFtZTp5LGF0dHJpYnV0ZXM6Zyxtb2RpZmllcnM6TCxjb21tZW50czpqLHNlbGZDbG9zaW5nOngsbG9jOnd9PXRoaXMuZmluaXNoKHRoaXMuY3VycmVudFN0YXJ0VGFnKSxIPXUuZGVmYXVsdC5lbGVtZW50KHt0YWc6eSxzZWxmQ2xvc2luZzp4LGF0dHJzOmcsbW9kaWZpZXJzOkwsY29tbWVudHM6aixjaGlsZHJlbjpbXSxibG9ja1BhcmFtczpbXSxsb2M6d30pO3RoaXMuZWxlbWVudFN0YWNrLnB1c2goSCl9ZmluaXNoRW5kVGFnKHkpe2xldCBnPXRoaXMuZmluaXNoKHRoaXMuY3VycmVudFRhZyksTD10aGlzLmVsZW1lbnRTdGFjay5wb3AoKSxqPXRoaXMuY3VycmVudEVsZW1lbnQoKTt0aGlzLnZhbGlkYXRlRW5kVGFnKGcsTCx5KSxMLmxvYz1MLmxvYy53aXRoRW5kKHRoaXMub2Zmc2V0KCkpLCgwLGEucGFyc2VFbGVtZW50QmxvY2tQYXJhbXMpKEwpLCgwLGEuYXBwZW5kQ2hpbGQpKGosTCl9bWFya1RhZ0FzU2VsZkNsb3NpbmcoKXt0aGlzLmN1cnJlbnRUYWcuc2VsZkNsb3Npbmc9ITB9YXBwZW5kVG9UYWdOYW1lKHkpe3RoaXMuY3VycmVudFRhZy5uYW1lKz15fWJlZ2luQXR0cmlidXRlKCl7bGV0IHk9dGhpcy5vZmZzZXQoKTt0aGlzLmN1cnJlbnRBdHRyaWJ1dGU9e25hbWU6XCJcIixwYXJ0czpbXSxjdXJyZW50UGFydDpudWxsLGlzUXVvdGVkOiExLGlzRHluYW1pYzohMSxzdGFydDp5LHZhbHVlU3Bhbjp5LmNvbGxhcHNlZCgpfX1hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoeSl7dGhpcy5jdXJyZW50QXR0ci5uYW1lKz15fWJlZ2luQXR0cmlidXRlVmFsdWUoeSl7dGhpcy5jdXJyZW50QXR0ci5pc1F1b3RlZD15LHRoaXMuc3RhcnRUZXh0UGFydCgpLHRoaXMuY3VycmVudEF0dHIudmFsdWVTcGFuPXRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCl9YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh5KXtsZXQgZz10aGlzLmN1cnJlbnRBdHRyLnBhcnRzLEw9Z1tnLmxlbmd0aC0xXSxqPXRoaXMuY3VycmVudEF0dHIuY3VycmVudFBhcnQ7aWYoailqLmNoYXJzKz15LGoubG9jPWoubG9jLndpdGhFbmQodGhpcy5vZmZzZXQoKSk7ZWxzZXtsZXQgeD10aGlzLm9mZnNldCgpO3k9PT1gXG5gP3g9TD9MLmxvYy5nZXRFbmQoKTp0aGlzLmN1cnJlbnRBdHRyLnZhbHVlU3Bhbi5nZXRTdGFydCgpOng9eC5tb3ZlKC0xKSx0aGlzLmN1cnJlbnRBdHRyLmN1cnJlbnRQYXJ0PXUuZGVmYXVsdC50ZXh0KHtjaGFyczp5LGxvYzp4LmNvbGxhcHNlZCgpfSl9fWZpbmlzaEF0dHJpYnV0ZVZhbHVlKCl7dGhpcy5maW5hbGl6ZVRleHRQYXJ0KCk7bGV0IHk9dGhpcy5jdXJyZW50VGFnLGc9dGhpcy5vZmZzZXQoKTtpZih5LnR5cGU9PT1cIkVuZFRhZ1wiKXRocm93KDAscy5nZW5lcmF0ZVN5bnRheEVycm9yKShcIkludmFsaWQgZW5kIHRhZzogY2xvc2luZyB0YWcgbXVzdCBub3QgaGF2ZSBhdHRyaWJ1dGVzXCIsdGhpcy5zb3VyY2Uuc3BhbkZvcih7c3RhcnQ6eS5sb2MudG9KU09OKCksZW5kOmcudG9KU09OKCl9KSk7bGV0e25hbWU6TCxwYXJ0czpqLHN0YXJ0OngsaXNRdW90ZWQ6dyxpc0R5bmFtaWM6SCx2YWx1ZVNwYW46bX09dGhpcy5jdXJyZW50QXR0cixDPXRoaXMuYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShqLHcsSCx4LnVudGlsKGcpKTtDLmxvYz1tLndpdGhFbmQoZyk7bGV0IFM9dS5kZWZhdWx0LmF0dHIoe25hbWU6TCx2YWx1ZTpDLGxvYzp4LnVudGlsKGcpfSk7dGhpcy5jdXJyZW50U3RhcnRUYWcuYXR0cmlidXRlcy5wdXNoKFMpfXJlcG9ydFN5bnRheEVycm9yKHkpe3Rocm93KDAscy5nZW5lcmF0ZVN5bnRheEVycm9yKSh5LHRoaXMub2Zmc2V0KCkuY29sbGFwc2VkKCkpfWFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUoeSl7Zm9yKGxldCBqPTA7ajx5Lmxlbmd0aDtqKyspe2xldCB4PXlbal07aWYoeC50eXBlIT09XCJNdXN0YWNoZVN0YXRlbWVudFwiJiZ4LnR5cGUhPT1cIlRleHROb2RlXCIpdGhyb3coMCxzLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiVW5zdXBwb3J0ZWQgbm9kZSBpbiBxdW90ZWQgYXR0cmlidXRlIHZhbHVlOiBcIit4LnR5cGUseC5sb2MpfSgwLGYuYXNzZXJ0UHJlc2VudCkoeSxcInRoZSBjb25jYXRlbmF0aW9uIHBhcnRzIG9mIGFuIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBlbXB0eVwiKTtsZXQgZz15WzBdLEw9eVt5Lmxlbmd0aC0xXTtyZXR1cm4gdS5kZWZhdWx0LmNvbmNhdCh5LHRoaXMuc291cmNlLnNwYW5Gb3IoZy5sb2MpLmV4dGVuZCh0aGlzLnNvdXJjZS5zcGFuRm9yKEwubG9jKSkpfXZhbGlkYXRlRW5kVGFnKHksZyxMKXtsZXQgajtpZihvLnZvaWRNYXBbeS5uYW1lXSYmIUw/aj1cIjxcIi5jb25jYXQoeS5uYW1lLFwiPiBlbGVtZW50cyBkbyBub3QgbmVlZCBlbmQgdGFncy4gWW91IHNob3VsZCByZW1vdmUgaXRcIik6Zy50YWc9PT12b2lkIDA/aj1cIkNsb3NpbmcgdGFnIDwvXCIuY29uY2F0KHkubmFtZSxcIj4gd2l0aG91dCBhbiBvcGVuIHRhZ1wiKTpnLnRhZyE9PXkubmFtZSYmKGo9XCJDbG9zaW5nIHRhZyA8L1wiLmNvbmNhdCh5Lm5hbWUsXCI+IGRpZCBub3QgbWF0Y2ggbGFzdCBvcGVuIHRhZyA8XCIpLmNvbmNhdChnLnRhZyxcIj4gKG9uIGxpbmUgXCIpLmNvbmNhdChnLmxvYy5zdGFydFBvc2l0aW9uLmxpbmUsXCIpXCIpKSxqKXRocm93KDAscy5nZW5lcmF0ZVN5bnRheEVycm9yKShqLHkubG9jKX1hc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHksZyxMLGope2lmKEwpe2lmKGcpcmV0dXJuIHRoaXMuYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZSh5KTtpZih5Lmxlbmd0aD09PTF8fHkubGVuZ3RoPT09MiYmeVsxXS50eXBlPT09XCJUZXh0Tm9kZVwiJiZ5WzFdLmNoYXJzPT09XCIvXCIpcmV0dXJuIHlbMF07dGhyb3coMCxzLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiQW4gdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBtdXN0YWNoZSwgcHJlY2VkZWQgYnkgd2hpdGVzcGFjZSBvciBhICc9JyBjaGFyYWN0ZXIsIGFuZCBmb2xsb3dlZCBieSB3aGl0ZXNwYWNlLCBhICc+JyBjaGFyYWN0ZXIsIG9yICcvPidcIixqKX1lbHNlIHJldHVybiB5Lmxlbmd0aD4wP3lbMF06dS5kZWZhdWx0LnRleHQoe2NoYXJzOlwiXCIsbG9jOmp9KX19O3QuVG9rZW5pemVyRXZlbnRIYW5kbGVycz1QO3ZhciBFPXtwYXJzZTpfLGJ1aWxkZXJzOmkuZGVmYXVsdCxwcmludDpjLmRlZmF1bHQsdHJhdmVyc2U6cC5kZWZhdWx0LFdhbGtlcjpuLmRlZmF1bHR9LHY9Y2xhc3MgZXh0ZW5kcyBkLkVudGl0eVBhcnNlcntjb25zdHJ1Y3Rvcigpe3N1cGVyKHt9KX1wYXJzZSgpe319O2Z1bmN0aW9uIF8oeSl7bGV0IGc9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O3ZhciBMLGoseDtsZXQgdz1nLm1vZGV8fFwicHJlY29tcGlsZVwiLEgsbTt0eXBlb2YgeT09XCJzdHJpbmdcIj8oSD1uZXcgZS5Tb3VyY2UoeSwoTD1nLm1ldGEpPT09bnVsbHx8TD09PXZvaWQgMD92b2lkIDA6TC5tb2R1bGVOYW1lKSx3PT09XCJjb2RlbW9kXCI/bT0oMCxoLnBhcnNlV2l0aG91dFByb2Nlc3NpbmcpKHksZy5wYXJzZU9wdGlvbnMpOm09KDAsaC5wYXJzZSkoeSxnLnBhcnNlT3B0aW9ucykpOnkgaW5zdGFuY2VvZiBlLlNvdXJjZT8oSD15LHc9PT1cImNvZGVtb2RcIj9tPSgwLGgucGFyc2VXaXRob3V0UHJvY2Vzc2luZykoeS5zb3VyY2UsZy5wYXJzZU9wdGlvbnMpOm09KDAsaC5wYXJzZSkoeS5zb3VyY2UsZy5wYXJzZU9wdGlvbnMpKTooSD1uZXcgZS5Tb3VyY2UoXCJcIiwoaj1nLm1ldGEpPT09bnVsbHx8aj09PXZvaWQgMD92b2lkIDA6ai5tb2R1bGVOYW1lKSxtPXkpO2xldCBDO3c9PT1cImNvZGVtb2RcIiYmKEM9bmV3IHYpO2xldCBTPXIuU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKEgsMCxILnNvdXJjZS5sZW5ndGgpO20ubG9jPXtzb3VyY2U6XCIocHJvZ3JhbSlcIixzdGFydDpTLnN0YXJ0UG9zaXRpb24sZW5kOlMuZW5kUG9zaXRpb259O2xldCBSPW5ldyBQKEgsQyx3KS5hY2NlcHRUZW1wbGF0ZShtKTtpZihnLnN0cmljdE1vZGUmJihSLmJsb2NrUGFyYW1zPSh4PWcubG9jYWxzKSE9PW51bGwmJnghPT12b2lkIDA/eDpbXSksZyYmZy5wbHVnaW5zJiZnLnBsdWdpbnMuYXN0KWZvcihsZXQgTT0wLFY9Zy5wbHVnaW5zLmFzdC5sZW5ndGg7TTxWO00rKyl7bGV0IEc9Zy5wbHVnaW5zLmFzdFtNXSxLPSgwLGYuYXNzaWduKSh7fSxnLHtzeW50YXg6RX0se3BsdWdpbnM6dm9pZCAwfSksVT1HKEspOygwLHAuZGVmYXVsdCkoUixVLnZpc2l0b3IpfXJldHVybiBSfX19KSxYZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL3N5bWJvbC10YWJsZS5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJsb2NrU3ltYm9sVGFibGU9dC5Qcm9ncmFtU3ltYm9sVGFibGU9dC5TeW1ib2xUYWJsZT12b2lkIDA7dmFyIGY9WCgpLGg9eWUoKSxkPWNsYXNze3N0YXRpYyB0b3AoZSxyKXtyZXR1cm4gbmV3IGMoZSxyKX1jaGlsZChlKXtsZXQgcj1lLm1hcChzPT50aGlzLmFsbG9jYXRlKHMpKTtyZXR1cm4gbmV3IG8odGhpcyxlLHIpfX07dC5TeW1ib2xUYWJsZT1kO3ZhciBjPWNsYXNzIGV4dGVuZHMgZHtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKCksdGhpcy50ZW1wbGF0ZUxvY2Fscz1lLHRoaXMuY3VzdG9taXplQ29tcG9uZW50TmFtZT1yLHRoaXMuc3ltYm9scz1bXSx0aGlzLnVwdmFycz1bXSx0aGlzLnNpemU9MSx0aGlzLm5hbWVkPSgwLGYuZGljdCkoKSx0aGlzLmJsb2Nrcz0oMCxmLmRpY3QpKCksdGhpcy51c2VkVGVtcGxhdGVMb2NhbHM9W10sdGhpcy5faGFzRXZhbD0hMX1nZXRVc2VkVGVtcGxhdGVMb2NhbHMoKXtyZXR1cm4gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHN9c2V0SGFzRXZhbCgpe3RoaXMuX2hhc0V2YWw9ITB9Z2V0IGhhc0V2YWwoKXtyZXR1cm4gdGhpcy5faGFzRXZhbH1oYXMoZSl7cmV0dXJuIHRoaXMudGVtcGxhdGVMb2NhbHMuaW5kZXhPZihlKSE9PS0xfWdldChlKXtsZXQgcj10aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5pbmRleE9mKGUpO3JldHVybiByIT09LTE/W3IsITBdOihyPXRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLmxlbmd0aCx0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5wdXNoKGUpLFtyLCEwXSl9Z2V0TG9jYWxzTWFwKCl7cmV0dXJuKDAsZi5kaWN0KSgpfWdldEV2YWxJbmZvKCl7bGV0IGU9dGhpcy5nZXRMb2NhbHNNYXAoKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKHI9PmVbcl0pfWFsbG9jYXRlRnJlZShlLHIpe3IucmVzb2x1dGlvbigpPT09MzkmJnIuaXNBbmdsZUJyYWNrZXQmJigwLGguaXNVcHBlckNhc2UpKGUpJiYoZT10aGlzLmN1c3RvbWl6ZUNvbXBvbmVudE5hbWUoZSkpO2xldCBzPXRoaXMudXB2YXJzLmluZGV4T2YoZSk7cmV0dXJuIHMhPT0tMXx8KHM9dGhpcy51cHZhcnMubGVuZ3RoLHRoaXMudXB2YXJzLnB1c2goZSkpLHN9YWxsb2NhdGVOYW1lZChlKXtsZXQgcj10aGlzLm5hbWVkW2VdO3JldHVybiByfHwocj10aGlzLm5hbWVkW2VdPXRoaXMuYWxsb2NhdGUoZSkpLHJ9YWxsb2NhdGVCbG9jayhlKXtlPT09XCJpbnZlcnNlXCImJihlPVwiZWxzZVwiKTtsZXQgcj10aGlzLmJsb2Nrc1tlXTtyZXR1cm4gcnx8KHI9dGhpcy5ibG9ja3NbZV09dGhpcy5hbGxvY2F0ZShcIiZcIi5jb25jYXQoZSkpKSxyfWFsbG9jYXRlKGUpe3JldHVybiB0aGlzLnN5bWJvbHMucHVzaChlKSx0aGlzLnNpemUrK319O3QuUHJvZ3JhbVN5bWJvbFRhYmxlPWM7dmFyIG89Y2xhc3MgZXh0ZW5kcyBke2NvbnN0cnVjdG9yKGUscixzKXtzdXBlcigpLHRoaXMucGFyZW50PWUsdGhpcy5zeW1ib2xzPXIsdGhpcy5zbG90cz1zfWdldCBsb2NhbHMoKXtyZXR1cm4gdGhpcy5zeW1ib2xzfWhhcyhlKXtyZXR1cm4gdGhpcy5zeW1ib2xzLmluZGV4T2YoZSkhPT0tMXx8dGhpcy5wYXJlbnQuaGFzKGUpfWdldChlKXtsZXQgcj10aGlzLnN5bWJvbHMuaW5kZXhPZihlKTtyZXR1cm4gcj09PS0xP3RoaXMucGFyZW50LmdldChlKTpbdGhpcy5zbG90c1tyXSwhMV19Z2V0TG9jYWxzTWFwKCl7bGV0IGU9dGhpcy5wYXJlbnQuZ2V0TG9jYWxzTWFwKCk7cmV0dXJuIHRoaXMuc3ltYm9scy5mb3JFYWNoKHI9PmVbcl09dGhpcy5nZXQocilbMF0pLGV9Z2V0RXZhbEluZm8oKXtsZXQgZT10aGlzLmdldExvY2Fsc01hcCgpO3JldHVybiBPYmplY3Qua2V5cyhlKS5tYXAocj0+ZVtyXSl9c2V0SGFzRXZhbCgpe3RoaXMucGFyZW50LnNldEhhc0V2YWwoKX1hbGxvY2F0ZUZyZWUoZSxyKXtyZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVGcmVlKGUscil9YWxsb2NhdGVOYW1lZChlKXtyZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVOYW1lZChlKX1hbGxvY2F0ZUJsb2NrKGUpe3JldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZUJsb2NrKGUpfWFsbG9jYXRlKGUpe3JldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZShlKX19O3QuQmxvY2tTeW1ib2xUYWJsZT1vfX0pLGp0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdjItYS9idWlsZGVycy5qc1wiKHQpe1widXNlIHN0cmljdFwiO0YoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1aWxkRWxlbWVudD10LkJ1aWxkZXI9dm9pZCAwO3ZhciBmPVgoKSxoPWxlKCksZD1jZSgpLGM9ZSh2ZSgpKTtmdW5jdGlvbiBvKCl7aWYodHlwZW9mIFdlYWtNYXAhPVwiZnVuY3Rpb25cIilyZXR1cm4gbnVsbDt2YXIgbj1uZXcgV2Vha01hcDtyZXR1cm4gbz1mdW5jdGlvbigpe3JldHVybiBufSxufWZ1bmN0aW9uIGUobil7aWYobiYmbi5fX2VzTW9kdWxlKXJldHVybiBuO2lmKG49PT1udWxsfHx0eXBlb2YgbiE9XCJvYmplY3RcIiYmdHlwZW9mIG4hPVwiZnVuY3Rpb25cIilyZXR1cm57ZGVmYXVsdDpufTt2YXIgYT1vKCk7aWYoYSYmYS5oYXMobikpcmV0dXJuIGEuZ2V0KG4pO3ZhciB1PXt9LGk9T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2Zvcih2YXIgbCBpbiBuKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLGwpKXt2YXIgYj1pP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixsKTpudWxsO2ImJihiLmdldHx8Yi5zZXQpP09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LGwsYik6dVtsXT1uW2xdfXJldHVybiB1LmRlZmF1bHQ9bixhJiZhLnNldChuLHUpLHV9dmFyIHI9ZnVuY3Rpb24obixhKXt2YXIgdT17fTtmb3IodmFyIGkgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixpKSYmYS5pbmRleE9mKGkpPDAmJih1W2ldPW5baV0pO2lmKG4hPW51bGwmJnR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzPT1cImZ1bmN0aW9uXCIpZm9yKHZhciBsPTAsaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pO2w8aS5sZW5ndGg7bCsrKWEuaW5kZXhPZihpW2xdKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwobixpW2xdKSYmKHVbaVtsXV09bltpW2xdXSk7cmV0dXJuIHV9LHM9Y2xhc3N7dGVtcGxhdGUobixhLHUpe3JldHVybiBuZXcgYy5UZW1wbGF0ZSh7dGFibGU6bixib2R5OmEsbG9jOnV9KX1ibG9jayhuLGEsdSl7cmV0dXJuIG5ldyBjLkJsb2NrKHtzY29wZTpuLGJvZHk6YSxsb2M6dX0pfW5hbWVkQmxvY2sobixhLHUpe3JldHVybiBuZXcgYy5OYW1lZEJsb2NrKHtuYW1lOm4sYmxvY2s6YSxhdHRyczpbXSxjb21wb25lbnRBcmdzOltdLG1vZGlmaWVyczpbXSxsb2M6dX0pfXNpbXBsZU5hbWVkQmxvY2sobixhLHUpe3JldHVybiBuZXcgcCh7c2VsZkNsb3Npbmc6ITEsYXR0cnM6W10sY29tcG9uZW50QXJnczpbXSxtb2RpZmllcnM6W10sY29tbWVudHM6W119KS5uYW1lZChuLGEsdSl9c2xpY2UobixhKXtyZXR1cm4gbmV3IGguU291cmNlU2xpY2Uoe2xvYzphLGNoYXJzOm59KX1hcmdzKG4sYSx1KXtyZXR1cm4gbmV3IGMuQXJncyh7bG9jOnUscG9zaXRpb25hbDpuLG5hbWVkOmF9KX1wb3NpdGlvbmFsKG4sYSl7cmV0dXJuIG5ldyBjLlBvc2l0aW9uYWxBcmd1bWVudHMoe2xvYzphLGV4cHJzOm59KX1uYW1lZEFyZ3VtZW50KG4sYSl7cmV0dXJuIG5ldyBjLk5hbWVkQXJndW1lbnQoe25hbWU6bix2YWx1ZTphfSl9bmFtZWQobixhKXtyZXR1cm4gbmV3IGMuTmFtZWRBcmd1bWVudHMoe2xvYzphLGVudHJpZXM6bn0pfWF0dHIobixhKXtsZXR7bmFtZTp1LHZhbHVlOmksdHJ1c3Rpbmc6bH09bjtyZXR1cm4gbmV3IGMuSHRtbEF0dHIoe2xvYzphLG5hbWU6dSx2YWx1ZTppLHRydXN0aW5nOmx9KX1zcGxhdEF0dHIobixhKXtyZXR1cm4gbmV3IGMuU3BsYXRBdHRyKHtzeW1ib2w6bixsb2M6YX0pfWFyZyhuLGEpe2xldHtuYW1lOnUsdmFsdWU6aSx0cnVzdGluZzpsfT1uO3JldHVybiBuZXcgYy5Db21wb25lbnRBcmcoe25hbWU6dSx2YWx1ZTppLHRydXN0aW5nOmwsbG9jOmF9KX1wYXRoKG4sYSx1KXtyZXR1cm4gbmV3IGMuUGF0aEV4cHJlc3Npb24oe2xvYzp1LHJlZjpuLHRhaWw6YX0pfXNlbGYobil7cmV0dXJuIG5ldyBjLlRoaXNSZWZlcmVuY2Uoe2xvYzpufSl9YXQobixhLHUpe3JldHVybiBuZXcgYy5BcmdSZWZlcmVuY2Uoe2xvYzp1LG5hbWU6bmV3IGguU291cmNlU2xpY2Uoe2xvYzp1LGNoYXJzOm59KSxzeW1ib2w6YX0pfWZyZWVWYXIobil7bGV0e25hbWU6YSxjb250ZXh0OnUsc3ltYm9sOmksbG9jOmx9PW47cmV0dXJuIG5ldyBjLkZyZWVWYXJSZWZlcmVuY2Uoe25hbWU6YSxyZXNvbHV0aW9uOnUsc3ltYm9sOmksbG9jOmx9KX1sb2NhbFZhcihuLGEsdSxpKXtyZXR1cm4gbmV3IGMuTG9jYWxWYXJSZWZlcmVuY2Uoe2xvYzppLG5hbWU6bixpc1RlbXBsYXRlTG9jYWw6dSxzeW1ib2w6YX0pfXNleHAobixhKXtyZXR1cm4gbmV3IGMuQ2FsbEV4cHJlc3Npb24oe2xvYzphLGNhbGxlZTpuLmNhbGxlZSxhcmdzOm4uYXJnc30pfWRlcHJlY2F0ZWRDYWxsKG4sYSx1KXtyZXR1cm4gbmV3IGMuRGVwcmVjYXRlZENhbGxFeHByZXNzaW9uKHtsb2M6dSxhcmc6bixjYWxsZWU6YX0pfWludGVycG9sYXRlKG4sYSl7cmV0dXJuKDAsZi5hc3NlcnRQcmVzZW50KShuKSxuZXcgYy5JbnRlcnBvbGF0ZUV4cHJlc3Npb24oe2xvYzphLHBhcnRzOm59KX1saXRlcmFsKG4sYSl7cmV0dXJuIG5ldyBjLkxpdGVyYWxFeHByZXNzaW9uKHtsb2M6YSx2YWx1ZTpufSl9YXBwZW5kKG4sYSl7bGV0e3RhYmxlOnUsdHJ1c3Rpbmc6aSx2YWx1ZTpsfT1uO3JldHVybiBuZXcgYy5BcHBlbmRDb250ZW50KHt0YWJsZTp1LHRydXN0aW5nOmksdmFsdWU6bCxsb2M6YX0pfW1vZGlmaWVyKG4sYSl7bGV0e2NhbGxlZTp1LGFyZ3M6aX09bjtyZXR1cm4gbmV3IGMuRWxlbWVudE1vZGlmaWVyKHtsb2M6YSxjYWxsZWU6dSxhcmdzOml9KX1uYW1lZEJsb2NrcyhuLGEpe3JldHVybiBuZXcgYy5OYW1lZEJsb2Nrcyh7bG9jOmEsYmxvY2tzOm59KX1ibG9ja1N0YXRlbWVudChuLGEpe3ZhcntzeW1ib2xzOnUscHJvZ3JhbTppLGludmVyc2U6bD1udWxsfT1uLGI9cihuLFtcInN5bWJvbHNcIixcInByb2dyYW1cIixcImludmVyc2VcIl0pO2xldCBQPWkubG9jLEU9W3RoaXMubmFtZWRCbG9jayhoLlNvdXJjZVNsaWNlLnN5bnRoZXRpYyhcImRlZmF1bHRcIiksaSxpLmxvYyldO3JldHVybiBsJiYoUD1QLmV4dGVuZChsLmxvYyksRS5wdXNoKHRoaXMubmFtZWRCbG9jayhoLlNvdXJjZVNsaWNlLnN5bnRoZXRpYyhcImVsc2VcIiksbCxsLmxvYykpKSxuZXcgYy5JbnZva2VCbG9jayh7bG9jOmEsYmxvY2tzOnRoaXMubmFtZWRCbG9ja3MoRSxQKSxjYWxsZWU6Yi5jYWxsZWUsYXJnczpiLmFyZ3N9KX1lbGVtZW50KG4pe3JldHVybiBuZXcgcChuKX19O3QuQnVpbGRlcj1zO3ZhciBwPWNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuYmFzZT1uLHRoaXMuYnVpbGRlcj1uZXcgc31zaW1wbGUobixhLHUpe3JldHVybiBuZXcgYy5TaW1wbGVFbGVtZW50KCgwLGYuYXNzaWduKSh7dGFnOm4sYm9keTphLGNvbXBvbmVudEFyZ3M6W10sbG9jOnV9LHRoaXMuYmFzZSkpfW5hbWVkKG4sYSx1KXtyZXR1cm4gbmV3IGMuTmFtZWRCbG9jaygoMCxmLmFzc2lnbikoe25hbWU6bixibG9jazphLGNvbXBvbmVudEFyZ3M6W10sbG9jOnV9LHRoaXMuYmFzZSkpfXNlbGZDbG9zaW5nQ29tcG9uZW50KG4sYSl7cmV0dXJuIG5ldyBjLkludm9rZUNvbXBvbmVudCgoMCxmLmFzc2lnbikoe2xvYzphLGNhbGxlZTpuLGJsb2NrczpuZXcgYy5OYW1lZEJsb2Nrcyh7YmxvY2tzOltdLGxvYzphLnNsaWNlRW5kQ2hhcnMoe3NraXBFbmQ6MSxjaGFyczoxfSl9KX0sdGhpcy5iYXNlKSl9Y29tcG9uZW50V2l0aERlZmF1bHRCbG9jayhuLGEsdSxpKXtsZXQgbD10aGlzLmJ1aWxkZXIuYmxvY2sodSxhLGkpLGI9dGhpcy5idWlsZGVyLm5hbWVkQmxvY2soaC5Tb3VyY2VTbGljZS5zeW50aGV0aWMoXCJkZWZhdWx0XCIpLGwsaSk7cmV0dXJuIG5ldyBjLkludm9rZUNvbXBvbmVudCgoMCxmLmFzc2lnbikoe2xvYzppLGNhbGxlZTpuLGJsb2Nrczp0aGlzLmJ1aWxkZXIubmFtZWRCbG9ja3MoW2JdLGIubG9jKX0sdGhpcy5iYXNlKSl9Y29tcG9uZW50V2l0aE5hbWVkQmxvY2tzKG4sYSx1KXtyZXR1cm4gbmV3IGMuSW52b2tlQ29tcG9uZW50KCgwLGYuYXNzaWduKSh7bG9jOnUsY2FsbGVlOm4sYmxvY2tzOnRoaXMuYnVpbGRlci5uYW1lZEJsb2NrcyhhLGQuU3Bhbkxpc3QucmFuZ2UoYSkpfSx0aGlzLmJhc2UpKX19O3QuQnVpbGRFbGVtZW50PXB9fSksTXQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2xpYi92Mi1hL2xvb3NlLXJlc29sdXRpb24uanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TZXhwU3ludGF4Q29udGV4dD1jLHQuTW9kaWZpZXJTeW50YXhDb250ZXh0PW8sdC5CbG9ja1N5bnRheENvbnRleHQ9ZSx0LkNvbXBvbmVudFN5bnRheENvbnRleHQ9cix0LkF0dHJWYWx1ZVN5bnRheENvbnRleHQ9cyx0LkFwcGVuZFN5bnRheENvbnRleHQ9cDt2YXIgZj1kKHZlKCkpO2Z1bmN0aW9uIGgoKXtpZih0eXBlb2YgV2Vha01hcCE9XCJmdW5jdGlvblwiKXJldHVybiBudWxsO3ZhciBpPW5ldyBXZWFrTWFwO3JldHVybiBoPWZ1bmN0aW9uKCl7cmV0dXJuIGl9LGl9ZnVuY3Rpb24gZChpKXtpZihpJiZpLl9fZXNNb2R1bGUpcmV0dXJuIGk7aWYoaT09PW51bGx8fHR5cGVvZiBpIT1cIm9iamVjdFwiJiZ0eXBlb2YgaSE9XCJmdW5jdGlvblwiKXJldHVybntkZWZhdWx0Oml9O3ZhciBsPWgoKTtpZihsJiZsLmhhcyhpKSlyZXR1cm4gbC5nZXQoaSk7dmFyIGI9e30sUD1PYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7Zm9yKHZhciBFIGluIGkpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksRSkpe3ZhciB2PVA/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLEUpOm51bGw7diYmKHYuZ2V0fHx2LnNldCk/T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsRSx2KTpiW0VdPWlbRV19cmV0dXJuIGIuZGVmYXVsdD1pLGwmJmwuc2V0KGksYiksYn1mdW5jdGlvbiBjKGkpe3JldHVybiBuKGkpP2YuTG9vc2VNb2RlUmVzb2x1dGlvbi5uYW1lc3BhY2VkKFwiSGVscGVyXCIpOm51bGx9ZnVuY3Rpb24gbyhpKXtyZXR1cm4gbihpKT9mLkxvb3NlTW9kZVJlc29sdXRpb24ubmFtZXNwYWNlZChcIk1vZGlmaWVyXCIpOm51bGx9ZnVuY3Rpb24gZShpKXtyZXR1cm4gbihpKT9mLkxvb3NlTW9kZVJlc29sdXRpb24ubmFtZXNwYWNlZChcIkNvbXBvbmVudFwiKTpmLkxvb3NlTW9kZVJlc29sdXRpb24uZmFsbGJhY2soKX1mdW5jdGlvbiByKGkpe3JldHVybiBhKGkpP2YuTG9vc2VNb2RlUmVzb2x1dGlvbi5uYW1lc3BhY2VkKFwiQ29tcG9uZW50XCIsITApOm51bGx9ZnVuY3Rpb24gcyhpKXtsZXQgbD1uKGkpLGI9dShpKTtyZXR1cm4gbD9iP2YuTG9vc2VNb2RlUmVzb2x1dGlvbi5uYW1lc3BhY2VkKFwiSGVscGVyXCIpOmYuTG9vc2VNb2RlUmVzb2x1dGlvbi5hdHRyKCk6Yj9mLlNUUklDVF9SRVNPTFVUSU9OOmYuTG9vc2VNb2RlUmVzb2x1dGlvbi5mYWxsYmFjaygpfWZ1bmN0aW9uIHAoaSl7bGV0IGw9bihpKSxiPXUoaSksUD1pLnRydXN0aW5nO3JldHVybiBsP1A/Zi5Mb29zZU1vZGVSZXNvbHV0aW9uLnRydXN0aW5nQXBwZW5kKHtpbnZva2U6Yn0pOmYuTG9vc2VNb2RlUmVzb2x1dGlvbi5hcHBlbmQoe2ludm9rZTpifSk6Zi5Mb29zZU1vZGVSZXNvbHV0aW9uLmZhbGxiYWNrKCl9ZnVuY3Rpb24gbihpKXtsZXQgbD1pLnBhdGg7cmV0dXJuIGEobCl9ZnVuY3Rpb24gYShpKXtyZXR1cm4gaS50eXBlPT09XCJQYXRoRXhwcmVzc2lvblwiJiZpLmhlYWQudHlwZT09PVwiVmFySGVhZFwiP2kudGFpbC5sZW5ndGg9PT0wOiExfWZ1bmN0aW9uIHUoaSl7cmV0dXJuIGkucGFyYW1zLmxlbmd0aD4wfHxpLmhhc2gucGFpcnMubGVuZ3RoPjB9fX0pLEh0PUkoe1wibm9kZV9tb2R1bGVzL0BnbGltbWVyL3N5bnRheC9kaXN0L2NvbW1vbmpzL2VzMjAxNy9saWIvdjItYS9ub3JtYWxpemUuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5ub3JtYWxpemU9UCx0LkJsb2NrQ29udGV4dD12b2lkIDA7dmFyIGY9WCgpLGg9YihUZSgpKSxkPUZlKCksYz1sZSgpLG89Y2UoKSxlPVhlKCkscj1oZSgpLHM9eWUoKSxwPWIoTGUoKSksbj1sKHZlKCkpLGE9anQoKSx1PU10KCk7ZnVuY3Rpb24gaSgpe2lmKHR5cGVvZiBXZWFrTWFwIT1cImZ1bmN0aW9uXCIpcmV0dXJuIG51bGw7dmFyIG09bmV3IFdlYWtNYXA7cmV0dXJuIGk9ZnVuY3Rpb24oKXtyZXR1cm4gbX0sbX1mdW5jdGlvbiBsKG0pe2lmKG0mJm0uX19lc01vZHVsZSlyZXR1cm4gbTtpZihtPT09bnVsbHx8dHlwZW9mIG0hPVwib2JqZWN0XCImJnR5cGVvZiBtIT1cImZ1bmN0aW9uXCIpcmV0dXJue2RlZmF1bHQ6bX07dmFyIEM9aSgpO2lmKEMmJkMuaGFzKG0pKXJldHVybiBDLmdldChtKTt2YXIgUz17fSxSPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtmb3IodmFyIE0gaW4gbSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobSxNKSl7dmFyIFY9Uj9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sTSk6bnVsbDtWJiYoVi5nZXR8fFYuc2V0KT9PYmplY3QuZGVmaW5lUHJvcGVydHkoUyxNLFYpOlNbTV09bVtNXX1yZXR1cm4gUy5kZWZhdWx0PW0sQyYmQy5zZXQobSxTKSxTfWZ1bmN0aW9uIGIobSl7cmV0dXJuIG0mJm0uX19lc01vZHVsZT9tOntkZWZhdWx0Om19fWZ1bmN0aW9uIFAobSl7bGV0IEM9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O3ZhciBTO2xldCBSPSgwLGQucHJlcHJvY2VzcykobSxDKSxNPSgwLGYuYXNzaWduKSh7c3RyaWN0TW9kZTohMSxsb2NhbHM6W119LEMpLFY9ZS5TeW1ib2xUYWJsZS50b3AoTS5sb2NhbHMsKFM9Qy5jdXN0b21pemVDb21wb25lbnROYW1lKSE9PW51bGwmJlMhPT12b2lkIDA/UzpXPT5XKSxHPW5ldyBFKG0sTSxWKSxLPW5ldyBfKEcpLFU9bmV3IEwoRy5sb2MoUi5sb2MpLFIuYm9keS5tYXAoVz0+Sy5ub3JtYWxpemUoVykpLEcpLmFzc2VydFRlbXBsYXRlKFYpLFo9Vi5nZXRVc2VkVGVtcGxhdGVMb2NhbHMoKTtyZXR1cm5bVSxaXX12YXIgRT1jbGFzc3tjb25zdHJ1Y3RvcihtLEMsUyl7dGhpcy5zb3VyY2U9bSx0aGlzLm9wdGlvbnM9Qyx0aGlzLnRhYmxlPVMsdGhpcy5idWlsZGVyPW5ldyBhLkJ1aWxkZXJ9Z2V0IHN0cmljdCgpe3JldHVybiB0aGlzLm9wdGlvbnMuc3RyaWN0TW9kZXx8ITF9bG9jKG0pe3JldHVybiB0aGlzLnNvdXJjZS5zcGFuRm9yKG0pfXJlc29sdXRpb25Gb3IobSxDKXtpZih0aGlzLnN0cmljdClyZXR1cm57cmVzb2x1dGlvbjpuLlNUUklDVF9SRVNPTFVUSU9OfTtpZih0aGlzLmlzRnJlZVZhcihtKSl7bGV0IFM9QyhtKTtyZXR1cm4gUz09PW51bGw/e3Jlc29sdXRpb246XCJlcnJvclwiLHBhdGg6dyhtKSxoZWFkOkgobSl9OntyZXNvbHV0aW9uOlN9fWVsc2UgcmV0dXJue3Jlc29sdXRpb246bi5TVFJJQ1RfUkVTT0xVVElPTn19aXNGcmVlVmFyKG0pe3JldHVybiBtLnR5cGU9PT1cIlBhdGhFeHByZXNzaW9uXCI/bS5oZWFkLnR5cGUhPT1cIlZhckhlYWRcIj8hMTohdGhpcy50YWJsZS5oYXMobS5oZWFkLm5hbWUpOm0ucGF0aC50eXBlPT09XCJQYXRoRXhwcmVzc2lvblwiP3RoaXMuaXNGcmVlVmFyKG0ucGF0aCk6ITF9aGFzQmluZGluZyhtKXtyZXR1cm4gdGhpcy50YWJsZS5oYXMobSl9Y2hpbGQobSl7cmV0dXJuIG5ldyBFKHRoaXMuc291cmNlLHRoaXMub3B0aW9ucyx0aGlzLnRhYmxlLmNoaWxkKG0pKX1jdXN0b21pemVDb21wb25lbnROYW1lKG0pe3JldHVybiB0aGlzLm9wdGlvbnMuY3VzdG9taXplQ29tcG9uZW50TmFtZT90aGlzLm9wdGlvbnMuY3VzdG9taXplQ29tcG9uZW50TmFtZShtKTptfX07dC5CbG9ja0NvbnRleHQ9RTt2YXIgdj1jbGFzc3tjb25zdHJ1Y3RvcihtKXt0aGlzLmJsb2NrPW19bm9ybWFsaXplKG0sQyl7c3dpdGNoKG0udHlwZSl7Y2FzZVwiTnVsbExpdGVyYWxcIjpjYXNlXCJCb29sZWFuTGl0ZXJhbFwiOmNhc2VcIk51bWJlckxpdGVyYWxcIjpjYXNlXCJTdHJpbmdMaXRlcmFsXCI6Y2FzZVwiVW5kZWZpbmVkTGl0ZXJhbFwiOnJldHVybiB0aGlzLmJsb2NrLmJ1aWxkZXIubGl0ZXJhbChtLnZhbHVlLHRoaXMuYmxvY2subG9jKG0ubG9jKSk7Y2FzZVwiUGF0aEV4cHJlc3Npb25cIjpyZXR1cm4gdGhpcy5wYXRoKG0sQyk7Y2FzZVwiU3ViRXhwcmVzc2lvblwiOntsZXQgUz10aGlzLmJsb2NrLnJlc29sdXRpb25Gb3IobSx1LlNleHBTeW50YXhDb250ZXh0KTtpZihTLnJlc29sdXRpb249PT1cImVycm9yXCIpdGhyb3coMCxyLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiWW91IGF0dGVtcHRlZCB0byBpbnZva2UgYSBwYXRoIChgXCIuY29uY2F0KFMucGF0aCxcImApIGJ1dCBcIikuY29uY2F0KFMuaGVhZCxcIiB3YXMgbm90IGluIHNjb3BlXCIpLG0ubG9jKTtyZXR1cm4gdGhpcy5ibG9jay5idWlsZGVyLnNleHAodGhpcy5jYWxsUGFydHMobSxTLnJlc29sdXRpb24pLHRoaXMuYmxvY2subG9jKG0ubG9jKSl9fX1wYXRoKG0sQyl7bGV0IFM9dGhpcy5ibG9jay5sb2MobS5oZWFkLmxvYyksUj1bXSxNPVM7Zm9yKGxldCBWIG9mIG0udGFpbClNPU0uc2xpY2VTdGFydENoYXJzKHtjaGFyczpWLmxlbmd0aCxza2lwU3RhcnQ6MX0pLFIucHVzaChuZXcgYy5Tb3VyY2VTbGljZSh7bG9jOk0sY2hhcnM6Vn0pKTtyZXR1cm4gdGhpcy5ibG9jay5idWlsZGVyLnBhdGgodGhpcy5yZWYobS5oZWFkLEMpLFIsdGhpcy5ibG9jay5sb2MobS5sb2MpKX1jYWxsUGFydHMobSxDKXtsZXR7cGF0aDpTLHBhcmFtczpSLGhhc2g6TX09bSxWPXRoaXMubm9ybWFsaXplKFMsQyksRz1SLm1hcChOPT50aGlzLm5vcm1hbGl6ZShOLG4uQVJHVU1FTlRfUkVTT0xVVElPTikpLEs9by5TcGFuTGlzdC5yYW5nZShHLFYubG9jLmNvbGxhcHNlKFwiZW5kXCIpKSxVPXRoaXMuYmxvY2subG9jKE0ubG9jKSxaPW8uU3Bhbkxpc3QucmFuZ2UoW0ssVV0pLFc9dGhpcy5ibG9jay5idWlsZGVyLnBvc2l0aW9uYWwoUi5tYXAoTj0+dGhpcy5ub3JtYWxpemUoTixuLkFSR1VNRU5UX1JFU09MVVRJT04pKSxLKSxUPXRoaXMuYmxvY2suYnVpbGRlci5uYW1lZChNLnBhaXJzLm1hcChOPT50aGlzLm5hbWVkQXJndW1lbnQoTikpLHRoaXMuYmxvY2subG9jKE0ubG9jKSk7cmV0dXJue2NhbGxlZTpWLGFyZ3M6dGhpcy5ibG9jay5idWlsZGVyLmFyZ3MoVyxULFopfX1uYW1lZEFyZ3VtZW50KG0pe2xldCBTPXRoaXMuYmxvY2subG9jKG0ubG9jKS5zbGljZVN0YXJ0Q2hhcnMoe2NoYXJzOm0ua2V5Lmxlbmd0aH0pO3JldHVybiB0aGlzLmJsb2NrLmJ1aWxkZXIubmFtZWRBcmd1bWVudChuZXcgYy5Tb3VyY2VTbGljZSh7Y2hhcnM6bS5rZXksbG9jOlN9KSx0aGlzLm5vcm1hbGl6ZShtLnZhbHVlLG4uQVJHVU1FTlRfUkVTT0xVVElPTikpfXJlZihtLEMpe2xldHtibG9jazpTfT10aGlzLHtidWlsZGVyOlIsdGFibGU6TX09UyxWPVMubG9jKG0ubG9jKTtzd2l0Y2gobS50eXBlKXtjYXNlXCJUaGlzSGVhZFwiOnJldHVybiBSLnNlbGYoVik7Y2FzZVwiQXRIZWFkXCI6e2xldCBHPU0uYWxsb2NhdGVOYW1lZChtLm5hbWUpO3JldHVybiBSLmF0KG0ubmFtZSxHLFYpfWNhc2VcIlZhckhlYWRcIjppZihTLmhhc0JpbmRpbmcobS5uYW1lKSl7bGV0W0csS109TS5nZXQobS5uYW1lKTtyZXR1cm4gUy5idWlsZGVyLmxvY2FsVmFyKG0ubmFtZSxHLEssVil9ZWxzZXtsZXQgRz1TLnN0cmljdD9uLlNUUklDVF9SRVNPTFVUSU9OOkMsSz1TLnRhYmxlLmFsbG9jYXRlRnJlZShtLm5hbWUsRyk7cmV0dXJuIFMuYnVpbGRlci5mcmVlVmFyKHtuYW1lOm0ubmFtZSxjb250ZXh0Okcsc3ltYm9sOkssbG9jOlZ9KX19fX0sXz1jbGFzc3tjb25zdHJ1Y3RvcihtKXt0aGlzLmJsb2NrPW19bm9ybWFsaXplKG0pe3N3aXRjaChtLnR5cGUpe2Nhc2VcIlBhcnRpYWxTdGF0ZW1lbnRcIjp0aHJvdyBuZXcgRXJyb3IoXCJIYW5kbGViYXJzIHBhcnRpYWwgc3ludGF4ICh7ez4gLi4ufX0pIGlzIG5vdCBhbGxvd2VkIGluIEdsaW1tZXJcIik7Y2FzZVwiQmxvY2tTdGF0ZW1lbnRcIjpyZXR1cm4gdGhpcy5CbG9ja1N0YXRlbWVudChtKTtjYXNlXCJFbGVtZW50Tm9kZVwiOnJldHVybiBuZXcgeSh0aGlzLmJsb2NrKS5FbGVtZW50Tm9kZShtKTtjYXNlXCJNdXN0YWNoZVN0YXRlbWVudFwiOnJldHVybiB0aGlzLk11c3RhY2hlU3RhdGVtZW50KG0pO2Nhc2VcIk11c3RhY2hlQ29tbWVudFN0YXRlbWVudFwiOnJldHVybiB0aGlzLk11c3RhY2hlQ29tbWVudFN0YXRlbWVudChtKTtjYXNlXCJDb21tZW50U3RhdGVtZW50XCI6e2xldCBDPXRoaXMuYmxvY2subG9jKG0ubG9jKTtyZXR1cm4gbmV3IG4uSHRtbENvbW1lbnQoe2xvYzpDLHRleHQ6Qy5zbGljZSh7c2tpcFN0YXJ0OjQsc2tpcEVuZDozfSkudG9TbGljZShtLnZhbHVlKX0pfWNhc2VcIlRleHROb2RlXCI6cmV0dXJuIG5ldyBuLkh0bWxUZXh0KHtsb2M6dGhpcy5ibG9jay5sb2MobS5sb2MpLGNoYXJzOm0uY2hhcnN9KX19TXVzdGFjaGVDb21tZW50U3RhdGVtZW50KG0pe2xldCBDPXRoaXMuYmxvY2subG9jKG0ubG9jKSxTO3JldHVybiBDLmFzU3RyaW5nKCkuc2xpY2UoMCw1KT09PVwie3shLS1cIj9TPUMuc2xpY2Uoe3NraXBTdGFydDo1LHNraXBFbmQ6NH0pOlM9Qy5zbGljZSh7c2tpcFN0YXJ0OjMsc2tpcEVuZDoyfSksbmV3IG4uR2xpbW1lckNvbW1lbnQoe2xvYzpDLHRleHQ6Uy50b1NsaWNlKG0udmFsdWUpfSl9TXVzdGFjaGVTdGF0ZW1lbnQobSl7bGV0e2VzY2FwZWQ6Q309bSxTPXRoaXMuYmxvY2subG9jKG0ubG9jKSxSPXRoaXMuZXhwci5jYWxsUGFydHMoe3BhdGg6bS5wYXRoLHBhcmFtczptLnBhcmFtcyxoYXNoOm0uaGFzaH0sKDAsdS5BcHBlbmRTeW50YXhDb250ZXh0KShtKSksTT1SLmFyZ3MuaXNFbXB0eSgpP1IuY2FsbGVlOnRoaXMuYmxvY2suYnVpbGRlci5zZXhwKFIsUyk7cmV0dXJuIHRoaXMuYmxvY2suYnVpbGRlci5hcHBlbmQoe3RhYmxlOnRoaXMuYmxvY2sudGFibGUsdHJ1c3Rpbmc6IUMsdmFsdWU6TX0sUyl9QmxvY2tTdGF0ZW1lbnQobSl7bGV0e3Byb2dyYW06QyxpbnZlcnNlOlN9PW0sUj10aGlzLmJsb2NrLmxvYyhtLmxvYyksTT10aGlzLmJsb2NrLnJlc29sdXRpb25Gb3IobSx1LkJsb2NrU3ludGF4Q29udGV4dCk7aWYoTS5yZXNvbHV0aW9uPT09XCJlcnJvclwiKXRocm93KDAsci5nZW5lcmF0ZVN5bnRheEVycm9yKShcIllvdSBhdHRlbXB0ZWQgdG8gaW52b2tlIGEgcGF0aCAoYHt7I1wiLmNvbmNhdChNLnBhdGgsXCJ9fWApIGJ1dCBcIikuY29uY2F0KE0uaGVhZCxcIiB3YXMgbm90IGluIHNjb3BlXCIpLFIpO2xldCBWPXRoaXMuZXhwci5jYWxsUGFydHMobSxNLnJlc29sdXRpb24pO3JldHVybiB0aGlzLmJsb2NrLmJ1aWxkZXIuYmxvY2tTdGF0ZW1lbnQoKDAsZi5hc3NpZ24pKHtzeW1ib2xzOnRoaXMuYmxvY2sudGFibGUscHJvZ3JhbTp0aGlzLkJsb2NrKEMpLGludmVyc2U6Uz90aGlzLkJsb2NrKFMpOm51bGx9LFYpLFIpfUJsb2NrKG0pe2xldHtib2R5OkMsbG9jOlMsYmxvY2tQYXJhbXM6Un09bSxNPXRoaXMuYmxvY2suY2hpbGQoUiksVj1uZXcgXyhNKTtyZXR1cm4gbmV3IGoodGhpcy5ibG9jay5sb2MoUyksQy5tYXAoRz0+Vi5ub3JtYWxpemUoRykpLHRoaXMuYmxvY2spLmFzc2VydEJsb2NrKE0udGFibGUpfWdldCBleHByKCl7cmV0dXJuIG5ldyB2KHRoaXMuYmxvY2spfX0seT1jbGFzc3tjb25zdHJ1Y3RvcihtKXt0aGlzLmN0eD1tfUVsZW1lbnROb2RlKG0pe2xldHt0YWc6QyxzZWxmQ2xvc2luZzpTLGNvbW1lbnRzOlJ9PW0sTT10aGlzLmN0eC5sb2MobS5sb2MpLFtWLC4uLkddPUMuc3BsaXQoXCIuXCIpLEs9dGhpcy5jbGFzc2lmeVRhZyhWLEcsbS5sb2MpLFU9bS5hdHRyaWJ1dGVzLmZpbHRlcihBPT5BLm5hbWVbMF0hPT1cIkBcIikubWFwKEE9PnRoaXMuYXR0cihBKSksWj1tLmF0dHJpYnV0ZXMuZmlsdGVyKEE9PkEubmFtZVswXT09PVwiQFwiKS5tYXAoQT0+dGhpcy5hcmcoQSkpLFc9bS5tb2RpZmllcnMubWFwKEE9PnRoaXMubW9kaWZpZXIoQSkpLFQ9dGhpcy5jdHguY2hpbGQobS5ibG9ja1BhcmFtcyksTj1uZXcgXyhUKSxrPW0uY2hpbGRyZW4ubWFwKEE9Pk4ubm9ybWFsaXplKEEpKSxCPXRoaXMuY3R4LmJ1aWxkZXIuZWxlbWVudCh7c2VsZkNsb3Npbmc6UyxhdHRyczpVLGNvbXBvbmVudEFyZ3M6Wixtb2RpZmllcnM6Vyxjb21tZW50czpSLm1hcChBPT5uZXcgXyh0aGlzLmN0eCkuTXVzdGFjaGVDb21tZW50U3RhdGVtZW50KEEpKX0pLE89bmV3IHgoQixNLGssdGhpcy5jdHgpLHo9dGhpcy5jdHgubG9jKG0ubG9jKS5zbGljZVN0YXJ0Q2hhcnMoe2NoYXJzOkMubGVuZ3RoLHNraXBTdGFydDoxfSk7aWYoSz09PVwiRWxlbWVudEhlYWRcIilyZXR1cm4gQ1swXT09PVwiOlwiP08uYXNzZXJ0TmFtZWRCbG9jayh6LnNsaWNlKHtza2lwU3RhcnQ6MX0pLnRvU2xpY2UoQy5zbGljZSgxKSksVC50YWJsZSk6Ty5hc3NlcnRFbGVtZW50KHoudG9TbGljZShDKSxtLmJsb2NrUGFyYW1zLmxlbmd0aD4wKTtpZihtLnNlbGZDbG9zaW5nKXJldHVybiBCLnNlbGZDbG9zaW5nQ29tcG9uZW50KEssTSk7e2xldCBBPU8uYXNzZXJ0Q29tcG9uZW50KEMsVC50YWJsZSxtLmJsb2NrUGFyYW1zLmxlbmd0aD4wKTtyZXR1cm4gQi5jb21wb25lbnRXaXRoTmFtZWRCbG9ja3MoSyxBLE0pfX1tb2RpZmllcihtKXtsZXQgQz10aGlzLmN0eC5yZXNvbHV0aW9uRm9yKG0sdS5Nb2RpZmllclN5bnRheENvbnRleHQpO2lmKEMucmVzb2x1dGlvbj09PVwiZXJyb3JcIil0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJZb3UgYXR0ZW1wdGVkIHRvIGludm9rZSBhIHBhdGggKGB7eyNcIi5jb25jYXQoQy5wYXRoLFwifX1gKSBhcyBhIG1vZGlmaWVyLCBidXQgXCIpLmNvbmNhdChDLmhlYWQsXCIgd2FzIG5vdCBpbiBzY29wZS4gVHJ5IGFkZGluZyBgdGhpc2AgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aFwiKSxtLmxvYyk7bGV0IFM9dGhpcy5leHByLmNhbGxQYXJ0cyhtLEMucmVzb2x1dGlvbik7cmV0dXJuIHRoaXMuY3R4LmJ1aWxkZXIubW9kaWZpZXIoUyx0aGlzLmN0eC5sb2MobS5sb2MpKX1tdXN0YWNoZUF0dHIobSl7bGV0IEM9dGhpcy5jdHguYnVpbGRlci5zZXhwKHRoaXMuZXhwci5jYWxsUGFydHMobSwoMCx1LkF0dHJWYWx1ZVN5bnRheENvbnRleHQpKG0pKSx0aGlzLmN0eC5sb2MobS5sb2MpKTtyZXR1cm4gQy5hcmdzLmlzRW1wdHkoKT9DLmNhbGxlZTpDfWF0dHJQYXJ0KG0pe3N3aXRjaChtLnR5cGUpe2Nhc2VcIk11c3RhY2hlU3RhdGVtZW50XCI6cmV0dXJue2V4cHI6dGhpcy5tdXN0YWNoZUF0dHIobSksdHJ1c3Rpbmc6IW0uZXNjYXBlZH07Y2FzZVwiVGV4dE5vZGVcIjpyZXR1cm57ZXhwcjp0aGlzLmN0eC5idWlsZGVyLmxpdGVyYWwobS5jaGFycyx0aGlzLmN0eC5sb2MobS5sb2MpKSx0cnVzdGluZzohMH19fWF0dHJWYWx1ZShtKXtzd2l0Y2gobS50eXBlKXtjYXNlXCJDb25jYXRTdGF0ZW1lbnRcIjp7bGV0IEM9bS5wYXJ0cy5tYXAoUz0+dGhpcy5hdHRyUGFydChTKS5leHByKTtyZXR1cm57ZXhwcjp0aGlzLmN0eC5idWlsZGVyLmludGVycG9sYXRlKEMsdGhpcy5jdHgubG9jKG0ubG9jKSksdHJ1c3Rpbmc6ITF9fWRlZmF1bHQ6cmV0dXJuIHRoaXMuYXR0clBhcnQobSl9fWF0dHIobSl7aWYobS5uYW1lPT09XCIuLi5hdHRyaWJ1dGVzXCIpcmV0dXJuIHRoaXMuY3R4LmJ1aWxkZXIuc3BsYXRBdHRyKHRoaXMuY3R4LnRhYmxlLmFsbG9jYXRlQmxvY2soXCJhdHRyc1wiKSx0aGlzLmN0eC5sb2MobS5sb2MpKTtsZXQgQz10aGlzLmN0eC5sb2MobS5sb2MpLFM9Qy5zbGljZVN0YXJ0Q2hhcnMoe2NoYXJzOm0ubmFtZS5sZW5ndGh9KS50b1NsaWNlKG0ubmFtZSksUj10aGlzLmF0dHJWYWx1ZShtLnZhbHVlKTtyZXR1cm4gdGhpcy5jdHguYnVpbGRlci5hdHRyKHtuYW1lOlMsdmFsdWU6Ui5leHByLHRydXN0aW5nOlIudHJ1c3Rpbmd9LEMpfW1heWJlRGVwcmVjYXRlZENhbGwobSxDKXtpZih0aGlzLmN0eC5zdHJpY3R8fEMudHlwZSE9PVwiTXVzdGFjaGVTdGF0ZW1lbnRcIilyZXR1cm4gbnVsbDtsZXR7cGF0aDpTfT1DO2lmKFMudHlwZSE9PVwiUGF0aEV4cHJlc3Npb25cInx8Uy5oZWFkLnR5cGUhPT1cIlZhckhlYWRcIilyZXR1cm4gbnVsbDtsZXR7bmFtZTpSfT1TLmhlYWQ7aWYoUj09PVwiaGFzLWJsb2NrXCJ8fFI9PT1cImhhcy1ibG9jay1wYXJhbXNcInx8dGhpcy5jdHguaGFzQmluZGluZyhSKXx8Uy50YWlsLmxlbmd0aCE9PTB8fEMucGFyYW1zLmxlbmd0aCE9PTB8fEMuaGFzaC5wYWlycy5sZW5ndGghPT0wKXJldHVybiBudWxsO2xldCBNPW4uTG9vc2VNb2RlUmVzb2x1dGlvbi5hdHRyKCksVj10aGlzLmN0eC5idWlsZGVyLmZyZWVWYXIoe25hbWU6Uixjb250ZXh0Ok0sc3ltYm9sOnRoaXMuY3R4LnRhYmxlLmFsbG9jYXRlRnJlZShSLE0pLGxvYzpTLmxvY30pO3JldHVybntleHByOnRoaXMuY3R4LmJ1aWxkZXIuZGVwcmVjYXRlZENhbGwobSxWLEMubG9jKSx0cnVzdGluZzohMX19YXJnKG0pe2xldCBDPXRoaXMuY3R4LmxvYyhtLmxvYyksUz1DLnNsaWNlU3RhcnRDaGFycyh7Y2hhcnM6bS5uYW1lLmxlbmd0aH0pLnRvU2xpY2UobS5uYW1lKSxSPXRoaXMubWF5YmVEZXByZWNhdGVkQ2FsbChTLG0udmFsdWUpfHx0aGlzLmF0dHJWYWx1ZShtLnZhbHVlKTtyZXR1cm4gdGhpcy5jdHguYnVpbGRlci5hcmcoe25hbWU6Uyx2YWx1ZTpSLmV4cHIsdHJ1c3Rpbmc6Ui50cnVzdGluZ30sQyl9Y2xhc3NpZnlUYWcobSxDLFMpe2xldCBSPSgwLHMuaXNVcHBlckNhc2UpKG0pLE09bVswXT09PVwiQFwifHxtPT09XCJ0aGlzXCJ8fHRoaXMuY3R4Lmhhc0JpbmRpbmcobSk7aWYodGhpcy5jdHguc3RyaWN0JiYhTSl7aWYoUil0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJBdHRlbXB0ZWQgdG8gaW52b2tlIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBpbiBzY29wZSBpbiBhIHN0cmljdCBtb2RlIHRlbXBsYXRlLCBgPFwiLmNvbmNhdChtLFwiPmAuIElmIHlvdSB3YW50ZWQgdG8gY3JlYXRlIGFuIGVsZW1lbnQgd2l0aCB0aGF0IG5hbWUsIGNvbnZlcnQgaXQgdG8gbG93ZXJjYXNlIC0gYDxcIikuY29uY2F0KG0udG9Mb3dlckNhc2UoKSxcIj5gXCIpLFMpO3JldHVyblwiRWxlbWVudEhlYWRcIn1sZXQgVj1NfHxSLEc9Uy5zbGljZVN0YXJ0Q2hhcnMoe3NraXBTdGFydDoxLGNoYXJzOm0ubGVuZ3RofSksSz1DLnJlZHVjZSgoVyxUKT0+VysxK1QubGVuZ3RoLDApLFU9Ry5nZXRFbmQoKS5tb3ZlKEspLFo9Ry53aXRoRW5kKFUpO2lmKFYpe2xldCBXPXAuZGVmYXVsdC5wYXRoKHtoZWFkOnAuZGVmYXVsdC5oZWFkKG0sRyksdGFpbDpDLGxvYzpafSksVD10aGlzLmN0eC5yZXNvbHV0aW9uRm9yKFcsdS5Db21wb25lbnRTeW50YXhDb250ZXh0KTtpZihULnJlc29sdXRpb249PT1cImVycm9yXCIpdGhyb3coMCxyLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiWW91IGF0dGVtcHRlZCB0byBpbnZva2UgYSBwYXRoIChgPFwiLmNvbmNhdChULnBhdGgsXCI+YCkgYnV0IFwiKS5jb25jYXQoVC5oZWFkLFwiIHdhcyBub3QgaW4gc2NvcGVcIiksUyk7cmV0dXJuIG5ldyB2KHRoaXMuY3R4KS5ub3JtYWxpemUoVyxULnJlc29sdXRpb24pfWlmKEMubGVuZ3RoPjApdGhyb3coMCxyLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiWW91IHVzZWQgXCIuY29uY2F0KG0sXCIuXCIpLmNvbmNhdChDLmpvaW4oXCIuXCIpLFwiIGFzIGEgdGFnIG5hbWUsIGJ1dCBcIikuY29uY2F0KG0sXCIgaXMgbm90IGluIHNjb3BlXCIpLFMpO3JldHVyblwiRWxlbWVudEhlYWRcIn1nZXQgZXhwcigpe3JldHVybiBuZXcgdih0aGlzLmN0eCl9fSxnPWNsYXNze2NvbnN0cnVjdG9yKG0sQyxTKXt0aGlzLmxvYz1tLHRoaXMuY2hpbGRyZW49Qyx0aGlzLmJsb2NrPVMsdGhpcy5uYW1lZEJsb2Nrcz1DLmZpbHRlcihSPT5SIGluc3RhbmNlb2Ygbi5OYW1lZEJsb2NrKSx0aGlzLmhhc1NlbWFudGljQ29udGVudD1Cb29sZWFuKEMuZmlsdGVyKFI9PntpZihSIGluc3RhbmNlb2Ygbi5OYW1lZEJsb2NrKXJldHVybiExO3N3aXRjaChSLnR5cGUpe2Nhc2VcIkdsaW1tZXJDb21tZW50XCI6Y2FzZVwiSHRtbENvbW1lbnRcIjpyZXR1cm4hMTtjYXNlXCJIdG1sVGV4dFwiOnJldHVybiEvXlxccyokLy5leGVjKFIuY2hhcnMpO2RlZmF1bHQ6cmV0dXJuITB9fSkubGVuZ3RoKSx0aGlzLm5vbkJsb2NrQ2hpbGRyZW49Qy5maWx0ZXIoUj0+IShSIGluc3RhbmNlb2Ygbi5OYW1lZEJsb2NrKSl9fSxMPWNsYXNzIGV4dGVuZHMgZ3thc3NlcnRUZW1wbGF0ZShtKXtpZigoMCxmLmlzUHJlc2VudCkodGhpcy5uYW1lZEJsb2NrcykpdGhyb3coMCxyLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiVW5leHBlY3RlZCBuYW1lZCBibG9jayBhdCB0aGUgdG9wLWxldmVsIG9mIGEgdGVtcGxhdGVcIix0aGlzLmxvYyk7cmV0dXJuIHRoaXMuYmxvY2suYnVpbGRlci50ZW1wbGF0ZShtLHRoaXMubm9uQmxvY2tDaGlsZHJlbix0aGlzLmJsb2NrLmxvYyh0aGlzLmxvYykpfX0saj1jbGFzcyBleHRlbmRzIGd7YXNzZXJ0QmxvY2sobSl7aWYoKDAsZi5pc1ByZXNlbnQpKHRoaXMubmFtZWRCbG9ja3MpKXRocm93KDAsci5nZW5lcmF0ZVN5bnRheEVycm9yKShcIlVuZXhwZWN0ZWQgbmFtZWQgYmxvY2sgbmVzdGVkIGluIGEgbm9ybWFsIGJsb2NrXCIsdGhpcy5sb2MpO3JldHVybiB0aGlzLmJsb2NrLmJ1aWxkZXIuYmxvY2sobSx0aGlzLm5vbkJsb2NrQ2hpbGRyZW4sdGhpcy5sb2MpfX0seD1jbGFzcyBleHRlbmRzIGd7Y29uc3RydWN0b3IobSxDLFMsUil7c3VwZXIoQyxTLFIpLHRoaXMuZWw9bX1hc3NlcnROYW1lZEJsb2NrKG0sQyl7aWYodGhpcy5lbC5iYXNlLnNlbGZDbG9zaW5nKXRocm93KDAsci5nZW5lcmF0ZVN5bnRheEVycm9yKShcIjw6XCIuY29uY2F0KG0uY2hhcnMsXCIvPiBpcyBub3QgYSB2YWxpZCBuYW1lZCBibG9jazogbmFtZWQgYmxvY2tzIGNhbm5vdCBiZSBzZWxmLWNsb3NpbmdcIiksdGhpcy5sb2MpO2lmKCgwLGYuaXNQcmVzZW50KSh0aGlzLm5hbWVkQmxvY2tzKSl0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJVbmV4cGVjdGVkIG5hbWVkIGJsb2NrIGluc2lkZSA8OlwiLmNvbmNhdChtLmNoYXJzLFwiPiBuYW1lZCBibG9jazogbmFtZWQgYmxvY2tzIGNhbm5vdCBjb250YWluIG5lc3RlZCBuYW1lZCBibG9ja3NcIiksdGhpcy5sb2MpO2lmKCEoMCxzLmlzTG93ZXJDYXNlKShtLmNoYXJzKSl0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCI8OlwiLmNvbmNhdChtLmNoYXJzLFwiPiBpcyBub3QgYSB2YWxpZCBuYW1lZCBibG9jaywgYW5kIG5hbWVkIGJsb2NrcyBtdXN0IGJlZ2luIHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyXCIpLHRoaXMubG9jKTtpZih0aGlzLmVsLmJhc2UuYXR0cnMubGVuZ3RoPjB8fHRoaXMuZWwuYmFzZS5jb21wb25lbnRBcmdzLmxlbmd0aD4wfHx0aGlzLmVsLmJhc2UubW9kaWZpZXJzLmxlbmd0aD4wKXRocm93KDAsci5nZW5lcmF0ZVN5bnRheEVycm9yKShcIm5hbWVkIGJsb2NrIDw6XCIuY29uY2F0KG0uY2hhcnMsXCI+IGNhbm5vdCBoYXZlIGF0dHJpYnV0ZXMsIGFyZ3VtZW50cywgb3IgbW9kaWZpZXJzXCIpLHRoaXMubG9jKTtsZXQgUz1vLlNwYW5MaXN0LnJhbmdlKHRoaXMubm9uQmxvY2tDaGlsZHJlbix0aGlzLmxvYyk7cmV0dXJuIHRoaXMuYmxvY2suYnVpbGRlci5uYW1lZEJsb2NrKG0sdGhpcy5ibG9jay5idWlsZGVyLmJsb2NrKEMsdGhpcy5ub25CbG9ja0NoaWxkcmVuLFMpLHRoaXMubG9jKX1hc3NlcnRFbGVtZW50KG0sQyl7aWYoQyl0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJVbmV4cGVjdGVkIGJsb2NrIHBhcmFtcyBpbiA8XCIuY29uY2F0KG0sXCI+OiBzaW1wbGUgZWxlbWVudHMgY2Fubm90IGhhdmUgYmxvY2sgcGFyYW1zXCIpLHRoaXMubG9jKTtpZigoMCxmLmlzUHJlc2VudCkodGhpcy5uYW1lZEJsb2Nrcykpe2xldCBTPXRoaXMubmFtZWRCbG9ja3MubWFwKFI9PlIubmFtZSk7aWYoUy5sZW5ndGg9PT0xKXRocm93KDAsci5nZW5lcmF0ZVN5bnRheEVycm9yKShcIlVuZXhwZWN0ZWQgbmFtZWQgYmxvY2sgPDpmb28+IGluc2lkZSA8XCIuY29uY2F0KG0uY2hhcnMsXCI+IEhUTUwgZWxlbWVudFwiKSx0aGlzLmxvYyk7e2xldCBSPVMubWFwKE09PlwiPDpcIi5jb25jYXQoTS5jaGFycyxcIj5cIikpLmpvaW4oXCIsIFwiKTt0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJVbmV4cGVjdGVkIG5hbWVkIGJsb2NrcyBpbnNpZGUgPFwiLmNvbmNhdChtLmNoYXJzLFwiPiBIVE1MIGVsZW1lbnQgKFwiKS5jb25jYXQoUixcIilcIiksdGhpcy5sb2MpfX1yZXR1cm4gdGhpcy5lbC5zaW1wbGUobSx0aGlzLm5vbkJsb2NrQ2hpbGRyZW4sdGhpcy5sb2MpfWFzc2VydENvbXBvbmVudChtLEMsUyl7aWYoKDAsZi5pc1ByZXNlbnQpKHRoaXMubmFtZWRCbG9ja3MpJiZ0aGlzLmhhc1NlbWFudGljQ29udGVudCl0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJVbmV4cGVjdGVkIGNvbnRlbnQgaW5zaWRlIDxcIi5jb25jYXQobSxcIj4gY29tcG9uZW50IGludm9jYXRpb246IHdoZW4gdXNpbmcgbmFtZWQgYmxvY2tzLCB0aGUgdGFnIGNhbm5vdCBjb250YWluIG90aGVyIGNvbnRlbnRcIiksdGhpcy5sb2MpO2lmKCgwLGYuaXNQcmVzZW50KSh0aGlzLm5hbWVkQmxvY2tzKSl7aWYoUyl0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJVbmV4cGVjdGVkIGJsb2NrIHBhcmFtcyBsaXN0IG9uIDxcIi5jb25jYXQobSxcIj4gY29tcG9uZW50IGludm9jYXRpb246IHdoZW4gcGFzc2luZyBuYW1lZCBibG9ja3MsIHRoZSBpbnZvY2F0aW9uIHRhZyBjYW5ub3QgdGFrZSBibG9jayBwYXJhbXNcIiksdGhpcy5sb2MpO2xldCBSPW5ldyBTZXQ7Zm9yKGxldCBNIG9mIHRoaXMubmFtZWRCbG9ja3Mpe2xldCBWPU0ubmFtZS5jaGFycztpZihSLmhhcyhWKSl0aHJvdygwLHIuZ2VuZXJhdGVTeW50YXhFcnJvcikoXCJDb21wb25lbnQgaGFkIHR3byBuYW1lZCBibG9ja3Mgd2l0aCB0aGUgc2FtZSBuYW1lLCBgPDpcIi5jb25jYXQoVixcIj5gLiBPbmx5IG9uZSBibG9jayB3aXRoIGEgZ2l2ZW4gbmFtZSBtYXkgYmUgcGFzc2VkXCIpLHRoaXMubG9jKTtpZihWPT09XCJpbnZlcnNlXCImJlIuaGFzKFwiZWxzZVwiKXx8Vj09PVwiZWxzZVwiJiZSLmhhcyhcImludmVyc2VcIikpdGhyb3coMCxyLmdlbmVyYXRlU3ludGF4RXJyb3IpKFwiQ29tcG9uZW50IGhhcyBib3RoIDw6ZWxzZT4gYW5kIDw6aW52ZXJzZT4gYmxvY2suIDw6aW52ZXJzZT4gaXMgYW4gYWxpYXMgZm9yIDw6ZWxzZT5cIix0aGlzLmxvYyk7Ui5hZGQoVil9cmV0dXJuIHRoaXMubmFtZWRCbG9ja3N9ZWxzZSByZXR1cm5bdGhpcy5ibG9jay5idWlsZGVyLm5hbWVkQmxvY2soYy5Tb3VyY2VTbGljZS5zeW50aGV0aWMoXCJkZWZhdWx0XCIpLHRoaXMuYmxvY2suYnVpbGRlci5ibG9jayhDLHRoaXMubm9uQmxvY2tDaGlsZHJlbix0aGlzLmxvYyksdGhpcy5sb2MpXX19O2Z1bmN0aW9uIHcobSl7cmV0dXJuIG0udHlwZSE9PVwiUGF0aEV4cHJlc3Npb25cIiYmbS5wYXRoLnR5cGU9PT1cIlBhdGhFeHByZXNzaW9uXCI/dyhtLnBhdGgpOm5ldyBoLmRlZmF1bHQoe2VudGl0eUVuY29kaW5nOlwicmF3XCJ9KS5wcmludChtKX1mdW5jdGlvbiBIKG0pe2lmKG0udHlwZT09PVwiUGF0aEV4cHJlc3Npb25cIilzd2l0Y2gobS5oZWFkLnR5cGUpe2Nhc2VcIkF0SGVhZFwiOmNhc2VcIlZhckhlYWRcIjpyZXR1cm4gbS5oZWFkLm5hbWU7Y2FzZVwiVGhpc0hlYWRcIjpyZXR1cm5cInRoaXNcIn1lbHNlIHJldHVybiBtLnBhdGgudHlwZT09PVwiUGF0aEV4cHJlc3Npb25cIj9IKG0ucGF0aCk6bmV3IGguZGVmYXVsdCh7ZW50aXR5RW5jb2Rpbmc6XCJyYXdcIn0pLnByaW50KG0pfX19KSxaZT1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL2tleXdvcmRzLmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNLZXl3b3JkPWYsdC5LRVlXT1JEU19UWVBFUz12b2lkIDA7ZnVuY3Rpb24gZihkKXtyZXR1cm4gZCBpbiBofXZhciBoPXtjb21wb25lbnQ6W1wiQ2FsbFwiLFwiQXBwZW5kXCIsXCJCbG9ja1wiXSxkZWJ1Z2dlcjpbXCJBcHBlbmRcIl0sXCJlYWNoLWluXCI6W1wiQmxvY2tcIl0sZWFjaDpbXCJCbG9ja1wiXSxcImhhcy1ibG9jay1wYXJhbXNcIjpbXCJDYWxsXCIsXCJBcHBlbmRcIl0sXCJoYXMtYmxvY2tcIjpbXCJDYWxsXCIsXCJBcHBlbmRcIl0saGVscGVyOltcIkNhbGxcIixcIkFwcGVuZFwiXSxpZjpbXCJDYWxsXCIsXCJBcHBlbmRcIixcIkJsb2NrXCJdLFwiaW4tZWxlbWVudFwiOltcIkJsb2NrXCJdLGxldDpbXCJCbG9ja1wiXSxcImxpbmstdG9cIjpbXCJBcHBlbmRcIixcIkJsb2NrXCJdLGxvZzpbXCJDYWxsXCIsXCJBcHBlbmRcIl0sbW9kaWZpZXI6W1wiQ2FsbFwiXSxtb3VudDpbXCJBcHBlbmRcIl0sbXV0OltcIkNhbGxcIixcIkFwcGVuZFwiXSxvdXRsZXQ6W1wiQXBwZW5kXCJdLFwicXVlcnktcGFyYW1zXCI6W1wiQ2FsbFwiXSxyZWFkb25seTpbXCJDYWxsXCIsXCJBcHBlbmRcIl0sdW5ib3VuZDpbXCJDYWxsXCIsXCJBcHBlbmRcIl0sdW5sZXNzOltcIkNhbGxcIixcIkFwcGVuZFwiLFwiQmxvY2tcIl0sd2l0aDpbXCJCbG9ja1wiXSx5aWVsZDpbXCJBcHBlbmRcIl19O3QuS0VZV09SRFNfVFlQRVM9aH19KSxWdD1JKHtcIm5vZGVfbW9kdWxlcy9AZ2xpbW1lci9zeW50YXgvZGlzdC9jb21tb25qcy9lczIwMTcvbGliL2dldC10ZW1wbGF0ZS1sb2NhbHMuanNcIih0KXtcInVzZSBzdHJpY3RcIjtGKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRUZW1wbGF0ZUxvY2Fscz1yO3ZhciBmPVplKCksaD1GZSgpLGQ9YyhOZSgpKTtmdW5jdGlvbiBjKHMpe3JldHVybiBzJiZzLl9fZXNNb2R1bGU/czp7ZGVmYXVsdDpzfX1mdW5jdGlvbiBvKHMscCxuKXtpZihzLnR5cGU9PT1cIlBhdGhFeHByZXNzaW9uXCIpe2lmKHMuaGVhZC50eXBlPT09XCJBdEhlYWRcInx8cy5oZWFkLnR5cGU9PT1cIlRoaXNIZWFkXCIpcmV0dXJuO2xldCBhPXMuaGVhZC5uYW1lO2lmKHAuaW5kZXhPZihhKT09PS0xKXJldHVybiBhfWVsc2UgaWYocy50eXBlPT09XCJFbGVtZW50Tm9kZVwiKXtsZXR7dGFnOmF9PXMsdT1hLmNoYXJBdCgwKTtyZXR1cm4gdT09PVwiOlwifHx1PT09XCJAXCJ8fCFuLmluY2x1ZGVIdG1sRWxlbWVudHMmJmEuaW5kZXhPZihcIi5cIik9PT0tMSYmYS50b0xvd2VyQ2FzZSgpPT09YXx8YS5zdWJzdHIoMCw1KT09PVwidGhpcy5cInx8cC5pbmRleE9mKGEpIT09LTE/dm9pZCAwOmF9fWZ1bmN0aW9uIGUocyxwLG4sYSl7bGV0IHU9byhwLG4sYSk7KEFycmF5LmlzQXJyYXkodSk/dTpbdV0pLmZvckVhY2goaT0+e2khPT12b2lkIDAmJmlbMF0hPT1cIkBcIiYmcy5hZGQoaS5zcGxpdChcIi5cIilbMF0pfSl9ZnVuY3Rpb24gcihzKXtsZXQgcD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e2luY2x1ZGVIdG1sRWxlbWVudHM6ITEsaW5jbHVkZUtleXdvcmRzOiExfSxuPSgwLGgucHJlcHJvY2VzcykocyksYT1uZXcgU2V0LHU9W107KDAsZC5kZWZhdWx0KShuLHtCbG9jazp7ZW50ZXIobCl7bGV0e2Jsb2NrUGFyYW1zOmJ9PWw7Yi5mb3JFYWNoKFA9Pnt1LnB1c2goUCl9KX0sZXhpdChsKXtsZXR7YmxvY2tQYXJhbXM6Yn09bDtiLmZvckVhY2goKCk9Pnt1LnBvcCgpfSl9fSxFbGVtZW50Tm9kZTp7ZW50ZXIobCl7bC5ibG9ja1BhcmFtcy5mb3JFYWNoKGI9Pnt1LnB1c2goYil9KSxlKGEsbCx1LHApfSxleGl0KGwpe2xldHtibG9ja1BhcmFtczpifT1sO2IuZm9yRWFjaCgoKT0+e3UucG9wKCl9KX19LFBhdGhFeHByZXNzaW9uKGwpe2UoYSxsLHUscCl9fSk7bGV0IGk9W107cmV0dXJuIGEuZm9yRWFjaChsPT5pLnB1c2gobCkpLHAhPW51bGwmJnAuaW5jbHVkZUtleXdvcmRzfHwoaT1pLmZpbHRlcihsPT4hKDAsZi5pc0tleXdvcmQpKGwpKSksaX19fSksVXQ9SSh7XCJub2RlX21vZHVsZXMvQGdsaW1tZXIvc3ludGF4L2Rpc3QvY29tbW9uanMvZXMyMDE3L2luZGV4LmpzXCIodCl7XCJ1c2Ugc3RyaWN0XCI7RigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiU291cmNlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYuU291cmNlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYnVpbGRlcnNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwibm9ybWFsaXplXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8ubm9ybWFsaXplfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiU3ltYm9sVGFibGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5TeW1ib2xUYWJsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIkJsb2NrU3ltYm9sVGFibGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5CbG9ja1N5bWJvbFRhYmxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiUHJvZ3JhbVN5bWJvbFRhYmxlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuUHJvZ3JhbVN5bWJvbFRhYmxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZ2VuZXJhdGVTeW50YXhFcnJvclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmdlbmVyYXRlU3ludGF4RXJyb3J9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcmVwcm9jZXNzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMucHJlcHJvY2Vzc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInByaW50XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInNvcnRCeUxvY1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnNvcnRCeUxvY319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIldhbGtlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJQYXRoXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInRyYXZlcnNlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNhbm5vdFJlbW92ZU5vZGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jYW5ub3RSZW1vdmVOb2RlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiY2Fubm90UmVwbGFjZU5vZGVcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jYW5ub3RSZXBsYWNlTm9kZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIldhbGtlclBhdGhcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiaXNLZXl3b3JkXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuaXNLZXl3b3JkfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiS0VZV09SRFNfVFlQRVNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi5LRVlXT1JEU19UWVBFU319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImdldFRlbXBsYXRlTG9jYWxzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFAuZ2V0VGVtcGxhdGVMb2NhbHN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJTb3VyY2VTbGljZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBFLlNvdXJjZVNsaWNlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiU291cmNlU3BhblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2LlNvdXJjZVNwYW59fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJTcGFuTGlzdFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBfLlNwYW5MaXN0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwibWF5YmVMb2NcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gXy5tYXliZUxvY319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImxvY1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBfLmxvY319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImhhc1NwYW5cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gXy5oYXNTcGFufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwibm9kZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB5Lm5vZGV9fSksdC5BU1R2Mj10LkFTVD10LkFTVHYxPXZvaWQgMDt2YXIgZj1EZSgpLGg9aihrZSgpKSxkPUwoQ3QoKSk7dC5BU1R2MT1kLHQuQVNUPWQ7dmFyIGM9TCh2ZSgpKTt0LkFTVHYyPWM7dmFyIG89SHQoKSxlPVhlKCkscj1oZSgpLHM9RmUoKSxwPWooV2UoKSksbj1VZSgpLGE9aihKZSgpKSx1PWooTmUoKSksaT1ZZSgpLGw9aihRZSgpKSxiPVplKCksUD1WdCgpLEU9bGUoKSx2PXVlKCksXz1jZSgpLHk9bmUoKTtmdW5jdGlvbiBnKCl7aWYodHlwZW9mIFdlYWtNYXAhPVwiZnVuY3Rpb25cIilyZXR1cm4gbnVsbDt2YXIgeD1uZXcgV2Vha01hcDtyZXR1cm4gZz1mdW5jdGlvbigpe3JldHVybiB4fSx4fWZ1bmN0aW9uIEwoeCl7aWYoeCYmeC5fX2VzTW9kdWxlKXJldHVybiB4O2lmKHg9PT1udWxsfHx0eXBlb2YgeCE9XCJvYmplY3RcIiYmdHlwZW9mIHghPVwiZnVuY3Rpb25cIilyZXR1cm57ZGVmYXVsdDp4fTt2YXIgdz1nKCk7aWYodyYmdy5oYXMoeCkpcmV0dXJuIHcuZ2V0KHgpO3ZhciBIPXt9LG09T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2Zvcih2YXIgQyBpbiB4KWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh4LEMpKXt2YXIgUz1tP09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeCxDKTpudWxsO1MmJihTLmdldHx8Uy5zZXQpP09iamVjdC5kZWZpbmVQcm9wZXJ0eShILEMsUyk6SFtDXT14W0NdfXJldHVybiBILmRlZmF1bHQ9eCx3JiZ3LnNldCh4LEgpLEh9ZnVuY3Rpb24gaih4KXtyZXR1cm4geCYmeC5fX2VzTW9kdWxlP3g6e2RlZmF1bHQ6eH19fX0pO0YoKTt2YXJ7TGluZXNBbmRDb2x1bW5zOnp0fT1zdCgpLEd0PXV0KCkse2xvY1N0YXJ0Okt0LGxvY0VuZDpXdH09b3QoKTtmdW5jdGlvbiBZdCgpe3JldHVybntuYW1lOlwiYWRkQmFja3NsYXNoXCIsdmlzaXRvcjp7QWxsKHQpe3ZhciBmO2xldCBoPShmPXQuY2hpbGRyZW4pIT09bnVsbCYmZiE9PXZvaWQgMD9mOnQuYm9keTtpZihoKWZvcihsZXQgZD0wO2Q8aC5sZW5ndGgtMTtkKyspaFtkXS50eXBlPT09XCJUZXh0Tm9kZVwiJiZoW2QrMV0udHlwZT09PVwiTXVzdGFjaGVTdGF0ZW1lbnRcIiYmKGhbZF0uY2hhcnM9aFtkXS5jaGFycy5yZXBsYWNlKC9cXFxcJC8sXCJcXFxcXFxcXFwiKSl9fX19ZnVuY3Rpb24gUXQodCl7bGV0IGY9bmV3IHp0KHQpLGg9ZD0+e2xldHtsaW5lOmMsY29sdW1uOm99PWQ7cmV0dXJuIGYuaW5kZXhGb3JMb2NhdGlvbih7bGluZTpjLTEsY29sdW1uOm99KX07cmV0dXJuKCk9Pih7bmFtZTpcImFkZE9mZnNldFwiLHZpc2l0b3I6e0FsbChkKXtsZXR7c3RhcnQ6YyxlbmQ6b309ZC5sb2M7Yy5vZmZzZXQ9aChjKSxvLm9mZnNldD1oKG8pfX19KX1mdW5jdGlvbiBKdCh0KXtsZXR7cHJlcHJvY2VzczpmfT1VdCgpLGg7dHJ5e2g9Zih0LHttb2RlOlwiY29kZW1vZFwiLHBsdWdpbnM6e2FzdDpbWXQsUXQodCldfX0pfWNhdGNoKGQpe2xldCBjPVh0KGQpO3Rocm93IGM/R3QoZC5tZXNzYWdlLGMpOmR9cmV0dXJuIGh9ZnVuY3Rpb24gWHQodCl7bGV0e2xvY2F0aW9uOmYsaGFzaDpofT10O2lmKGYpe2xldHtzdGFydDpkLGVuZDpjfT1mO3JldHVybiB0eXBlb2YgYy5saW5lIT1cIm51bWJlclwiP3tzdGFydDpkfTpmfWlmKGgpe2xldHtsb2M6e2xhc3RfbGluZTpkLGxhc3RfY29sdW1uOmN9fT1oO3JldHVybntzdGFydDp7bGluZTpkLGNvbHVtbjpjKzF9fX19JGUuZXhwb3J0cz17cGFyc2Vyczp7Z2xpbW1lcjp7cGFyc2U6SnQsYXN0Rm9ybWF0OlwiZ2xpbW1lclwiLGxvY1N0YXJ0Okt0LGxvY0VuZDpXdH19fX0pO3JldHVybiBadCgpO30pOyIsICIoZnVuY3Rpb24oZSl7aWYodHlwZW9mIGV4cG9ydHM9PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGU9PVwib2JqZWN0XCIpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYodHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKWRlZmluZShlKTtlbHNle3ZhciBpPXR5cGVvZiBnbG9iYWxUaGlzPFwidVwiP2dsb2JhbFRoaXM6dHlwZW9mIGdsb2JhbDxcInVcIj9nbG9iYWw6dHlwZW9mIHNlbGY8XCJ1XCI/c2VsZjp0aGlzfHx7fTtpLnByZXR0aWVyUGx1Z2lucz1pLnByZXR0aWVyUGx1Z2luc3x8e30saS5wcmV0dGllclBsdWdpbnMuZ3JhcGhxbD1lKCl9fSkoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgb2U9KGEsZCk9PigpPT4oZHx8YSgoZD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsZCksZC5leHBvcnRzKTt2YXIgYmU9b2UoKENlLGFlKT0+e3ZhciBIPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLHNlPShhLGQpPT5mdW5jdGlvbigpe3JldHVybiBhJiYoZD0oMCxhW0goYSlbMF1dKShhPTApKSxkfSxMPShhLGQpPT5mdW5jdGlvbigpe3JldHVybiBkfHwoMCxhW0goYSlbMF1dKSgoZD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsZCksZC5leHBvcnRzfSxLPXNlKHtcIjxkZWZpbmU6cHJvY2Vzcz5cIigpe319KSxjZT1MKHtcInNyYy9jb21tb24vcGFyc2VyLWNyZWF0ZS1lcnJvci5qc1wiKGEsZCl7XCJ1c2Ugc3RyaWN0XCI7SygpO2Z1bmN0aW9uIGkoYyxyKXtsZXQgXz1uZXcgU3ludGF4RXJyb3IoYytcIiAoXCIrci5zdGFydC5saW5lK1wiOlwiK3Iuc3RhcnQuY29sdW1uK1wiKVwiKTtyZXR1cm4gXy5sb2M9cixffWQuZXhwb3J0cz1pfX0pLHVlPUwoe1wic3JjL3V0aWxzL3RyeS1jb21iaW5hdGlvbnMuanNcIihhLGQpe1widXNlIHN0cmljdFwiO0soKTtmdW5jdGlvbiBpKCl7bGV0IGM7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsXz1uZXcgQXJyYXkociksRT0wO0U8cjtFKyspX1tFXT1hcmd1bWVudHNbRV07Zm9yKGxldFtrLE9db2YgXy5lbnRyaWVzKCkpdHJ5e3JldHVybntyZXN1bHQ6TygpfX1jYXRjaChBKXtrPT09MCYmKGM9QSl9cmV0dXJue2Vycm9yOmN9fWQuZXhwb3J0cz1pfX0pLGxlPUwoe1wic3JjL2xhbmd1YWdlLWdyYXBocWwvcHJhZ21hLmpzXCIoYSxkKXtcInVzZSBzdHJpY3RcIjtLKCk7ZnVuY3Rpb24gaShyKXtyZXR1cm4vXlxccyojW15cXFNcXG5dKkAoPzpmb3JtYXR8cHJldHRpZXIpXFxzKig/OlxcbnwkKS8udGVzdChyKX1mdW5jdGlvbiBjKHIpe3JldHVybmAjIEBmb3JtYXRcblxuYCtyfWQuZXhwb3J0cz17aGFzUHJhZ21hOmksaW5zZXJ0UHJhZ21hOmN9fX0pLHBlPUwoe1wic3JjL2xhbmd1YWdlLWdyYXBocWwvbG9jLmpzXCIoYSxkKXtcInVzZSBzdHJpY3RcIjtLKCk7ZnVuY3Rpb24gaShyKXtyZXR1cm4gdHlwZW9mIHIuc3RhcnQ9PVwibnVtYmVyXCI/ci5zdGFydDpyLmxvYyYmci5sb2Muc3RhcnR9ZnVuY3Rpb24gYyhyKXtyZXR1cm4gdHlwZW9mIHIuZW5kPT1cIm51bWJlclwiP3IuZW5kOnIubG9jJiZyLmxvYy5lbmR9ZC5leHBvcnRzPXtsb2NTdGFydDppLGxvY0VuZDpjfX19KSxmZT1MKHtcIm5vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaXNPYmplY3RMaWtlLmpzXCIoYSl7XCJ1c2Ugc3RyaWN0XCI7SygpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD1pO2Z1bmN0aW9uIGQoYyl7cmV0dXJuIHR5cGVvZiBTeW1ib2w9PVwiZnVuY3Rpb25cIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09XCJzeW1ib2xcIj9kPWZ1bmN0aW9uKF8pe3JldHVybiB0eXBlb2YgX306ZD1mdW5jdGlvbihfKXtyZXR1cm4gXyYmdHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZfLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZfIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBffSxkKGMpfWZ1bmN0aW9uIGkoYyl7cmV0dXJuIGQoYyk9PVwib2JqZWN0XCImJmMhPT1udWxsfX19KSx6PUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL3N5bWJvbHMuanNcIihhKXtcInVzZSBzdHJpY3RcIjtLKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5TWU1CT0xfVE9fU1RSSU5HX1RBRz1hLlNZTUJPTF9BU1lOQ19JVEVSQVRPUj1hLlNZTUJPTF9JVEVSQVRPUj12b2lkIDA7dmFyIGQ9dHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZTeW1ib2wuaXRlcmF0b3IhPW51bGw/U3ltYm9sLml0ZXJhdG9yOlwiQEBpdGVyYXRvclwiO2EuU1lNQk9MX0lURVJBVE9SPWQ7dmFyIGk9dHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZTeW1ib2wuYXN5bmNJdGVyYXRvciE9bnVsbD9TeW1ib2wuYXN5bmNJdGVyYXRvcjpcIkBAYXN5bmNJdGVyYXRvclwiO2EuU1lNQk9MX0FTWU5DX0lURVJBVE9SPWk7dmFyIGM9dHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZTeW1ib2wudG9TdHJpbmdUYWchPW51bGw/U3ltYm9sLnRvU3RyaW5nVGFnOlwiQEB0b1N0cmluZ1RhZ1wiO2EuU1lNQk9MX1RPX1NUUklOR19UQUc9Y319KSwkPUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbG9jYXRpb24uanNcIihhKXtcInVzZSBzdHJpY3RcIjtLKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5nZXRMb2NhdGlvbj1kO2Z1bmN0aW9uIGQoaSxjKXtmb3IodmFyIHI9L1xcclxcbnxbXFxuXFxyXS9nLF89MSxFPWMrMSxrOyhrPXIuZXhlYyhpLmJvZHkpKSYmay5pbmRleDxjOylfKz0xLEU9YysxLShrLmluZGV4K2tbMF0ubGVuZ3RoKTtyZXR1cm57bGluZTpfLGNvbHVtbjpFfX19fSksZGU9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludExvY2F0aW9uLmpzXCIoYSl7XCJ1c2Ugc3RyaWN0XCI7SygpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEucHJpbnRMb2NhdGlvbj1pLGEucHJpbnRTb3VyY2VMb2NhdGlvbj1jO3ZhciBkPSQoKTtmdW5jdGlvbiBpKGspe3JldHVybiBjKGsuc291cmNlLCgwLGQuZ2V0TG9jYXRpb24pKGsuc291cmNlLGsuc3RhcnQpKX1mdW5jdGlvbiBjKGssTyl7dmFyIEE9ay5sb2NhdGlvbk9mZnNldC5jb2x1bW4tMSxOPV8oQSkray5ib2R5LGc9Ty5saW5lLTEsRD1rLmxvY2F0aW9uT2Zmc2V0LmxpbmUtMSx2PU8ubGluZStELEk9Ty5saW5lPT09MT9BOjAscz1PLmNvbHVtbitJLHA9XCJcIi5jb25jYXQoay5uYW1lLFwiOlwiKS5jb25jYXQodixcIjpcIikuY29uY2F0KHMsYFxuYCksZT1OLnNwbGl0KC9cXHJcXG58W1xcblxccl0vZyksbj1lW2ddO2lmKG4ubGVuZ3RoPjEyMCl7Zm9yKHZhciB0PU1hdGguZmxvb3Iocy84MCksdT1zJTgwLHk9W10sZj0wO2Y8bi5sZW5ndGg7Zis9ODApeS5wdXNoKG4uc2xpY2UoZixmKzgwKSk7cmV0dXJuIHArcihbW1wiXCIuY29uY2F0KHYpLHlbMF1dXS5jb25jYXQoeS5zbGljZSgxLHQrMSkubWFwKGZ1bmN0aW9uKG0pe3JldHVybltcIlwiLG1dfSksW1tcIiBcIixfKHUtMSkrXCJeXCJdLFtcIlwiLHlbdCsxXV1dKSl9cmV0dXJuIHArcihbW1wiXCIuY29uY2F0KHYtMSksZVtnLTFdXSxbXCJcIi5jb25jYXQodiksbl0sW1wiXCIsXyhzLTEpK1wiXlwiXSxbXCJcIi5jb25jYXQodisxKSxlW2crMV1dXSl9ZnVuY3Rpb24gcihrKXt2YXIgTz1rLmZpbHRlcihmdW5jdGlvbihOKXt2YXIgZz1OWzBdLEQ9TlsxXTtyZXR1cm4gRCE9PXZvaWQgMH0pLEE9TWF0aC5tYXguYXBwbHkoTWF0aCxPLm1hcChmdW5jdGlvbihOKXt2YXIgZz1OWzBdO3JldHVybiBnLmxlbmd0aH0pKTtyZXR1cm4gTy5tYXAoZnVuY3Rpb24oTil7dmFyIGc9TlswXSxEPU5bMV07cmV0dXJuIEUoQSxnKSsoRD9cIiB8IFwiK0Q6XCIgfFwiKX0pLmpvaW4oYFxuYCl9ZnVuY3Rpb24gXyhrKXtyZXR1cm4gQXJyYXkoaysxKS5qb2luKFwiIFwiKX1mdW5jdGlvbiBFKGssTyl7cmV0dXJuIF8oay1PLmxlbmd0aCkrT319fSksVz1MKHtcIm5vZGVfbW9kdWxlcy9ncmFwaHFsL2Vycm9yL0dyYXBoUUxFcnJvci5qc1wiKGEpe1widXNlIHN0cmljdFwiO0soKTtmdW5jdGlvbiBkKGYpe3JldHVybiB0eXBlb2YgU3ltYm9sPT1cImZ1bmN0aW9uXCImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PVwic3ltYm9sXCI/ZD1mdW5jdGlvbihvKXtyZXR1cm4gdHlwZW9mIG99OmQ9ZnVuY3Rpb24obyl7cmV0dXJuIG8mJnR5cGVvZiBTeW1ib2w9PVwiZnVuY3Rpb25cIiYmby5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmbyE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2Ygb30sZChmKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLnByaW50RXJyb3I9eSxhLkdyYXBoUUxFcnJvcj12b2lkIDA7dmFyIGk9RShmZSgpKSxjPXooKSxyPSQoKSxfPWRlKCk7ZnVuY3Rpb24gRShmKXtyZXR1cm4gZiYmZi5fX2VzTW9kdWxlP2Y6e2RlZmF1bHQ6Zn19ZnVuY3Rpb24gayhmLG0pe2lmKCEoZiBpbnN0YW5jZW9mIG0pKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gTyhmLG0pe2Zvcih2YXIgbz0wO288bS5sZW5ndGg7bysrKXt2YXIgaD1tW29dO2guZW51bWVyYWJsZT1oLmVudW1lcmFibGV8fCExLGguY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIGgmJihoLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZixoLmtleSxoKX19ZnVuY3Rpb24gQShmLG0sbyl7cmV0dXJuIG0mJk8oZi5wcm90b3R5cGUsbSksbyYmTyhmLG8pLGZ9ZnVuY3Rpb24gTihmLG0pe2lmKHR5cGVvZiBtIT1cImZ1bmN0aW9uXCImJm0hPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtmLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG0mJm0ucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6Zix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksbSYmbihmLG0pfWZ1bmN0aW9uIGcoZil7dmFyIG09cCgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBoPXQoZiksbDtpZihtKXt2YXIgVD10KHRoaXMpLmNvbnN0cnVjdG9yO2w9UmVmbGVjdC5jb25zdHJ1Y3QoaCxhcmd1bWVudHMsVCl9ZWxzZSBsPWguYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBEKHRoaXMsbCl9fWZ1bmN0aW9uIEQoZixtKXtyZXR1cm4gbSYmKGQobSk9PT1cIm9iamVjdFwifHx0eXBlb2YgbT09XCJmdW5jdGlvblwiKT9tOnYoZil9ZnVuY3Rpb24gdihmKXtpZihmPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZn1mdW5jdGlvbiBJKGYpe3ZhciBtPXR5cGVvZiBNYXA9PVwiZnVuY3Rpb25cIj9uZXcgTWFwOnZvaWQgMDtyZXR1cm4gST1mdW5jdGlvbihoKXtpZihoPT09bnVsbHx8IWUoaCkpcmV0dXJuIGg7aWYodHlwZW9mIGghPVwiZnVuY3Rpb25cIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7aWYodHlwZW9mIG08XCJ1XCIpe2lmKG0uaGFzKGgpKXJldHVybiBtLmdldChoKTttLnNldChoLGwpfWZ1bmN0aW9uIGwoKXtyZXR1cm4gcyhoLGFyZ3VtZW50cyx0KHRoaXMpLmNvbnN0cnVjdG9yKX1yZXR1cm4gbC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShoLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksbihsLGgpfSxJKGYpfWZ1bmN0aW9uIHMoZixtLG8pe3JldHVybiBwKCk/cz1SZWZsZWN0LmNvbnN0cnVjdDpzPWZ1bmN0aW9uKGwsVCxTKXt2YXIgeD1bbnVsbF07eC5wdXNoLmFwcGx5KHgsVCk7dmFyIGI9RnVuY3Rpb24uYmluZC5hcHBseShsLHgpLE09bmV3IGI7cmV0dXJuIFMmJm4oTSxTLnByb3RvdHlwZSksTX0scy5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcCgpe2lmKHR5cGVvZiBSZWZsZWN0PlwidVwifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT1cImZ1bmN0aW9uXCIpcmV0dXJuITA7dHJ5e3JldHVybiBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIGUoZil7cmV0dXJuIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoZikuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIikhPT0tMX1mdW5jdGlvbiBuKGYsbSl7cmV0dXJuIG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihoLGwpe3JldHVybiBoLl9fcHJvdG9fXz1sLGh9LG4oZixtKX1mdW5jdGlvbiB0KGYpe3JldHVybiB0PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24obyl7cmV0dXJuIG8uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyl9LHQoZil9dmFyIHU9ZnVuY3Rpb24oZil7TihvLGYpO3ZhciBtPWcobyk7ZnVuY3Rpb24gbyhoLGwsVCxTLHgsYixNKXt2YXIgVSxWLHEsRyxDO2sodGhpcyxvKSxDPW0uY2FsbCh0aGlzLGgpO3ZhciBSPUFycmF5LmlzQXJyYXkobCk/bC5sZW5ndGghPT0wP2w6dm9pZCAwOmw/W2xdOnZvaWQgMCxZPVQ7aWYoIVkmJlIpe3ZhciBKO1k9KEo9UlswXS5sb2MpPT09bnVsbHx8Sj09PXZvaWQgMD92b2lkIDA6Si5zb3VyY2V9dmFyIEY9UzshRiYmUiYmKEY9Ui5yZWR1Y2UoZnVuY3Rpb24odyxQKXtyZXR1cm4gUC5sb2MmJncucHVzaChQLmxvYy5zdGFydCksd30sW10pKSxGJiZGLmxlbmd0aD09PTAmJihGPXZvaWQgMCk7dmFyIEI7UyYmVD9CPVMubWFwKGZ1bmN0aW9uKHcpe3JldHVybigwLHIuZ2V0TG9jYXRpb24pKFQsdyl9KTpSJiYoQj1SLnJlZHVjZShmdW5jdGlvbih3LFApe3JldHVybiBQLmxvYyYmdy5wdXNoKCgwLHIuZ2V0TG9jYXRpb24pKFAubG9jLnNvdXJjZSxQLmxvYy5zdGFydCkpLHd9LFtdKSk7dmFyIGo9TTtpZihqPT1udWxsJiZiIT1udWxsKXt2YXIgUT1iLmV4dGVuc2lvbnM7KDAsaS5kZWZhdWx0KShRKSYmKGo9USl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHYoQykse25hbWU6e3ZhbHVlOlwiR3JhcGhRTEVycm9yXCJ9LG1lc3NhZ2U6e3ZhbHVlOmgsZW51bWVyYWJsZTohMCx3cml0YWJsZTohMH0sbG9jYXRpb25zOnt2YWx1ZTooVT1CKSE9PW51bGwmJlUhPT12b2lkIDA/VTp2b2lkIDAsZW51bWVyYWJsZTpCIT1udWxsfSxwYXRoOnt2YWx1ZTp4IT1udWxsP3g6dm9pZCAwLGVudW1lcmFibGU6eCE9bnVsbH0sbm9kZXM6e3ZhbHVlOlIhPW51bGw/Ujp2b2lkIDB9LHNvdXJjZTp7dmFsdWU6KFY9WSkhPT1udWxsJiZWIT09dm9pZCAwP1Y6dm9pZCAwfSxwb3NpdGlvbnM6e3ZhbHVlOihxPUYpIT09bnVsbCYmcSE9PXZvaWQgMD9xOnZvaWQgMH0sb3JpZ2luYWxFcnJvcjp7dmFsdWU6Yn0sZXh0ZW5zaW9uczp7dmFsdWU6KEc9aikhPT1udWxsJiZHIT09dm9pZCAwP0c6dm9pZCAwLGVudW1lcmFibGU6aiE9bnVsbH19KSxiIT1udWxsJiZiLnN0YWNrPyhPYmplY3QuZGVmaW5lUHJvcGVydHkodihDKSxcInN0YWNrXCIse3ZhbHVlOmIuc3RhY2ssd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksRChDKSk6KEVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHYoQyksbyk6T2JqZWN0LmRlZmluZVByb3BlcnR5KHYoQyksXCJzdGFja1wiLHt2YWx1ZTpFcnJvcigpLnN0YWNrLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLEMpfXJldHVybiBBKG8sW3trZXk6XCJ0b1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcyl9fSx7a2V5OmMuU1lNQk9MX1RPX1NUUklOR19UQUcsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCJPYmplY3RcIn19XSksb30oSShFcnJvcikpO2EuR3JhcGhRTEVycm9yPXU7ZnVuY3Rpb24geShmKXt2YXIgbT1mLm1lc3NhZ2U7aWYoZi5ub2Rlcylmb3IodmFyIG89MCxoPWYubm9kZXM7bzxoLmxlbmd0aDtvKyspe3ZhciBsPWhbb107bC5sb2MmJihtKz1gXG5cbmArKDAsXy5wcmludExvY2F0aW9uKShsLmxvYykpfWVsc2UgaWYoZi5zb3VyY2UmJmYubG9jYXRpb25zKWZvcih2YXIgVD0wLFM9Zi5sb2NhdGlvbnM7VDxTLmxlbmd0aDtUKyspe3ZhciB4PVNbVF07bSs9YFxuXG5gKygwLF8ucHJpbnRTb3VyY2VMb2NhdGlvbikoZi5zb3VyY2UseCl9cmV0dXJuIG19fX0pLFo9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9zeW50YXhFcnJvci5qc1wiKGEpe1widXNlIHN0cmljdFwiO0soKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLnN5bnRheEVycm9yPWk7dmFyIGQ9VygpO2Z1bmN0aW9uIGkoYyxyLF8pe3JldHVybiBuZXcgZC5HcmFwaFFMRXJyb3IoXCJTeW50YXggRXJyb3I6IFwiLmNvbmNhdChfKSx2b2lkIDAsYyxbcl0pfX19KSxoZT1MKHtcIm5vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL2tpbmRzLmpzXCIoYSl7XCJ1c2Ugc3RyaWN0XCI7SygpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuS2luZD12b2lkIDA7dmFyIGQ9T2JqZWN0LmZyZWV6ZSh7TkFNRTpcIk5hbWVcIixET0NVTUVOVDpcIkRvY3VtZW50XCIsT1BFUkFUSU9OX0RFRklOSVRJT046XCJPcGVyYXRpb25EZWZpbml0aW9uXCIsVkFSSUFCTEVfREVGSU5JVElPTjpcIlZhcmlhYmxlRGVmaW5pdGlvblwiLFNFTEVDVElPTl9TRVQ6XCJTZWxlY3Rpb25TZXRcIixGSUVMRDpcIkZpZWxkXCIsQVJHVU1FTlQ6XCJBcmd1bWVudFwiLEZSQUdNRU5UX1NQUkVBRDpcIkZyYWdtZW50U3ByZWFkXCIsSU5MSU5FX0ZSQUdNRU5UOlwiSW5saW5lRnJhZ21lbnRcIixGUkFHTUVOVF9ERUZJTklUSU9OOlwiRnJhZ21lbnREZWZpbml0aW9uXCIsVkFSSUFCTEU6XCJWYXJpYWJsZVwiLElOVDpcIkludFZhbHVlXCIsRkxPQVQ6XCJGbG9hdFZhbHVlXCIsU1RSSU5HOlwiU3RyaW5nVmFsdWVcIixCT09MRUFOOlwiQm9vbGVhblZhbHVlXCIsTlVMTDpcIk51bGxWYWx1ZVwiLEVOVU06XCJFbnVtVmFsdWVcIixMSVNUOlwiTGlzdFZhbHVlXCIsT0JKRUNUOlwiT2JqZWN0VmFsdWVcIixPQkpFQ1RfRklFTEQ6XCJPYmplY3RGaWVsZFwiLERJUkVDVElWRTpcIkRpcmVjdGl2ZVwiLE5BTUVEX1RZUEU6XCJOYW1lZFR5cGVcIixMSVNUX1RZUEU6XCJMaXN0VHlwZVwiLE5PTl9OVUxMX1RZUEU6XCJOb25OdWxsVHlwZVwiLFNDSEVNQV9ERUZJTklUSU9OOlwiU2NoZW1hRGVmaW5pdGlvblwiLE9QRVJBVElPTl9UWVBFX0RFRklOSVRJT046XCJPcGVyYXRpb25UeXBlRGVmaW5pdGlvblwiLFNDQUxBUl9UWVBFX0RFRklOSVRJT046XCJTY2FsYXJUeXBlRGVmaW5pdGlvblwiLE9CSkVDVF9UWVBFX0RFRklOSVRJT046XCJPYmplY3RUeXBlRGVmaW5pdGlvblwiLEZJRUxEX0RFRklOSVRJT046XCJGaWVsZERlZmluaXRpb25cIixJTlBVVF9WQUxVRV9ERUZJTklUSU9OOlwiSW5wdXRWYWx1ZURlZmluaXRpb25cIixJTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OOlwiSW50ZXJmYWNlVHlwZURlZmluaXRpb25cIixVTklPTl9UWVBFX0RFRklOSVRJT046XCJVbmlvblR5cGVEZWZpbml0aW9uXCIsRU5VTV9UWVBFX0RFRklOSVRJT046XCJFbnVtVHlwZURlZmluaXRpb25cIixFTlVNX1ZBTFVFX0RFRklOSVRJT046XCJFbnVtVmFsdWVEZWZpbml0aW9uXCIsSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTjpcIklucHV0T2JqZWN0VHlwZURlZmluaXRpb25cIixESVJFQ1RJVkVfREVGSU5JVElPTjpcIkRpcmVjdGl2ZURlZmluaXRpb25cIixTQ0hFTUFfRVhURU5TSU9OOlwiU2NoZW1hRXh0ZW5zaW9uXCIsU0NBTEFSX1RZUEVfRVhURU5TSU9OOlwiU2NhbGFyVHlwZUV4dGVuc2lvblwiLE9CSkVDVF9UWVBFX0VYVEVOU0lPTjpcIk9iamVjdFR5cGVFeHRlbnNpb25cIixJTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT046XCJJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uXCIsVU5JT05fVFlQRV9FWFRFTlNJT046XCJVbmlvblR5cGVFeHRlbnNpb25cIixFTlVNX1RZUEVfRVhURU5TSU9OOlwiRW51bVR5cGVFeHRlbnNpb25cIixJTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT046XCJJbnB1dE9iamVjdFR5cGVFeHRlbnNpb25cIn0pO2EuS2luZD1kfX0pLHZlPUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnZhcmlhbnQuanNcIihhKXtcInVzZSBzdHJpY3RcIjtLKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5kZWZhdWx0PWQ7ZnVuY3Rpb24gZChpLGMpe3ZhciByPUJvb2xlYW4oaSk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKGMhPW51bGw/YzpcIlVuZXhwZWN0ZWQgaW52YXJpYW50IHRyaWdnZXJlZC5cIil9fX0pLGVlPUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9ub2RlanNDdXN0b21JbnNwZWN0U3ltYm9sLmpzXCIoYSl7XCJ1c2Ugc3RyaWN0XCI7SygpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD12b2lkIDA7dmFyIGQ9dHlwZW9mIFN5bWJvbD09XCJmdW5jdGlvblwiJiZ0eXBlb2YgU3ltYm9sLmZvcj09XCJmdW5jdGlvblwiP1N5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKTp2b2lkIDAsaT1kO2EuZGVmYXVsdD1pfX0pLFRlPUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZWZpbmVJbnNwZWN0LmpzXCIoYSl7XCJ1c2Ugc3RyaWN0XCI7SygpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD1yO3ZhciBkPWModmUoKSksaT1jKGVlKCkpO2Z1bmN0aW9uIGMoXyl7cmV0dXJuIF8mJl8uX19lc01vZHVsZT9fOntkZWZhdWx0Ol99fWZ1bmN0aW9uIHIoXyl7dmFyIEU9Xy5wcm90b3R5cGUudG9KU09OO3R5cGVvZiBFPT1cImZ1bmN0aW9uXCJ8fCgwLGQuZGVmYXVsdCkoMCksXy5wcm90b3R5cGUuaW5zcGVjdD1FLGkuZGVmYXVsdCYmKF8ucHJvdG90eXBlW2kuZGVmYXVsdF09RSl9fX0pLHRlPUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYXN0LmpzXCIoYSl7XCJ1c2Ugc3RyaWN0XCI7SygpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuaXNOb2RlPV8sYS5Ub2tlbj1hLkxvY2F0aW9uPXZvaWQgMDt2YXIgZD1pKFRlKCkpO2Z1bmN0aW9uIGkoRSl7cmV0dXJuIEUmJkUuX19lc01vZHVsZT9FOntkZWZhdWx0OkV9fXZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRShPLEEsTil7dGhpcy5zdGFydD1PLnN0YXJ0LHRoaXMuZW5kPUEuZW5kLHRoaXMuc3RhcnRUb2tlbj1PLHRoaXMuZW5kVG9rZW49QSx0aGlzLnNvdXJjZT1OfXZhciBrPUUucHJvdG90eXBlO3JldHVybiBrLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybntzdGFydDp0aGlzLnN0YXJ0LGVuZDp0aGlzLmVuZH19LEV9KCk7YS5Mb2NhdGlvbj1jLCgwLGQuZGVmYXVsdCkoYyk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBFKE8sQSxOLGcsRCx2LEkpe3RoaXMua2luZD1PLHRoaXMuc3RhcnQ9QSx0aGlzLmVuZD1OLHRoaXMubGluZT1nLHRoaXMuY29sdW1uPUQsdGhpcy52YWx1ZT1JLHRoaXMucHJldj12LHRoaXMubmV4dD1udWxsfXZhciBrPUUucHJvdG90eXBlO3JldHVybiBrLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybntraW5kOnRoaXMua2luZCx2YWx1ZTp0aGlzLnZhbHVlLGxpbmU6dGhpcy5saW5lLGNvbHVtbjp0aGlzLmNvbHVtbn19LEV9KCk7YS5Ub2tlbj1yLCgwLGQuZGVmYXVsdCkocik7ZnVuY3Rpb24gXyhFKXtyZXR1cm4gRSE9bnVsbCYmdHlwZW9mIEUua2luZD09XCJzdHJpbmdcIn19fSksbmU9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS90b2tlbktpbmQuanNcIihhKXtcInVzZSBzdHJpY3RcIjtLKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5Ub2tlbktpbmQ9dm9pZCAwO3ZhciBkPU9iamVjdC5mcmVlemUoe1NPRjpcIjxTT0Y+XCIsRU9GOlwiPEVPRj5cIixCQU5HOlwiIVwiLERPTExBUjpcIiRcIixBTVA6XCImXCIsUEFSRU5fTDpcIihcIixQQVJFTl9SOlwiKVwiLFNQUkVBRDpcIi4uLlwiLENPTE9OOlwiOlwiLEVRVUFMUzpcIj1cIixBVDpcIkBcIixCUkFDS0VUX0w6XCJbXCIsQlJBQ0tFVF9SOlwiXVwiLEJSQUNFX0w6XCJ7XCIsUElQRTpcInxcIixCUkFDRV9SOlwifVwiLE5BTUU6XCJOYW1lXCIsSU5UOlwiSW50XCIsRkxPQVQ6XCJGbG9hdFwiLFNUUklORzpcIlN0cmluZ1wiLEJMT0NLX1NUUklORzpcIkJsb2NrU3RyaW5nXCIsQ09NTUVOVDpcIkNvbW1lbnRcIn0pO2EuVG9rZW5LaW5kPWR9fSkscmU9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2luc3BlY3QuanNcIihhKXtcInVzZSBzdHJpY3RcIjtLKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5kZWZhdWx0PUU7dmFyIGQ9aShlZSgpKTtmdW5jdGlvbiBpKHYpe3JldHVybiB2JiZ2Ll9fZXNNb2R1bGU/djp7ZGVmYXVsdDp2fX1mdW5jdGlvbiBjKHYpe3JldHVybiB0eXBlb2YgU3ltYm9sPT1cImZ1bmN0aW9uXCImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PVwic3ltYm9sXCI/Yz1mdW5jdGlvbihzKXtyZXR1cm4gdHlwZW9mIHN9OmM9ZnVuY3Rpb24ocyl7cmV0dXJuIHMmJnR5cGVvZiBTeW1ib2w9PVwiZnVuY3Rpb25cIiYmcy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmcyE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2Ygc30sYyh2KX12YXIgcj0xMCxfPTI7ZnVuY3Rpb24gRSh2KXtyZXR1cm4gayh2LFtdKX1mdW5jdGlvbiBrKHYsSSl7c3dpdGNoKGModikpe2Nhc2VcInN0cmluZ1wiOnJldHVybiBKU09OLnN0cmluZ2lmeSh2KTtjYXNlXCJmdW5jdGlvblwiOnJldHVybiB2Lm5hbWU/XCJbZnVuY3Rpb24gXCIuY29uY2F0KHYubmFtZSxcIl1cIik6XCJbZnVuY3Rpb25dXCI7Y2FzZVwib2JqZWN0XCI6cmV0dXJuIHY9PT1udWxsP1wibnVsbFwiOk8odixJKTtkZWZhdWx0OnJldHVybiBTdHJpbmcodil9fWZ1bmN0aW9uIE8odixJKXtpZihJLmluZGV4T2YodikhPT0tMSlyZXR1cm5cIltDaXJjdWxhcl1cIjt2YXIgcz1bXS5jb25jYXQoSSxbdl0pLHA9Zyh2KTtpZihwIT09dm9pZCAwKXt2YXIgZT1wLmNhbGwodik7aWYoZSE9PXYpcmV0dXJuIHR5cGVvZiBlPT1cInN0cmluZ1wiP2U6ayhlLHMpfWVsc2UgaWYoQXJyYXkuaXNBcnJheSh2KSlyZXR1cm4gTih2LHMpO3JldHVybiBBKHYscyl9ZnVuY3Rpb24gQSh2LEkpe3ZhciBzPU9iamVjdC5rZXlzKHYpO2lmKHMubGVuZ3RoPT09MClyZXR1cm5cInt9XCI7aWYoSS5sZW5ndGg+XylyZXR1cm5cIltcIitEKHYpK1wiXVwiO3ZhciBwPXMubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPWsodltlXSxJKTtyZXR1cm4gZStcIjogXCIrbn0pO3JldHVyblwieyBcIitwLmpvaW4oXCIsIFwiKStcIiB9XCJ9ZnVuY3Rpb24gTih2LEkpe2lmKHYubGVuZ3RoPT09MClyZXR1cm5cIltdXCI7aWYoSS5sZW5ndGg+XylyZXR1cm5cIltBcnJheV1cIjtmb3IodmFyIHM9TWF0aC5taW4ocix2Lmxlbmd0aCkscD12Lmxlbmd0aC1zLGU9W10sbj0wO248czsrK24pZS5wdXNoKGsodltuXSxJKSk7cmV0dXJuIHA9PT0xP2UucHVzaChcIi4uLiAxIG1vcmUgaXRlbVwiKTpwPjEmJmUucHVzaChcIi4uLiBcIi5jb25jYXQocCxcIiBtb3JlIGl0ZW1zXCIpKSxcIltcIitlLmpvaW4oXCIsIFwiKStcIl1cIn1mdW5jdGlvbiBnKHYpe3ZhciBJPXZbU3RyaW5nKGQuZGVmYXVsdCldO2lmKHR5cGVvZiBJPT1cImZ1bmN0aW9uXCIpcmV0dXJuIEk7aWYodHlwZW9mIHYuaW5zcGVjdD09XCJmdW5jdGlvblwiKXJldHVybiB2Lmluc3BlY3R9ZnVuY3Rpb24gRCh2KXt2YXIgST1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodikucmVwbGFjZSgvXlxcW29iamVjdCAvLFwiXCIpLnJlcGxhY2UoL10kLyxcIlwiKTtpZihJPT09XCJPYmplY3RcIiYmdHlwZW9mIHYuY29uc3RydWN0b3I9PVwiZnVuY3Rpb25cIil7dmFyIHM9di5jb25zdHJ1Y3Rvci5uYW1lO2lmKHR5cGVvZiBzPT1cInN0cmluZ1wiJiZzIT09XCJcIilyZXR1cm4gc31yZXR1cm4gSX19fSksX2U9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2RldkFzc2VydC5qc1wiKGEpe1widXNlIHN0cmljdFwiO0soKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZmF1bHQ9ZDtmdW5jdGlvbiBkKGksYyl7dmFyIHI9Qm9vbGVhbihpKTtpZighcil0aHJvdyBuZXcgRXJyb3IoYyl9fX0pLEVlPUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnN0YW5jZU9mLmpzXCIoYSl7XCJ1c2Ugc3RyaWN0XCI7SygpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGEuZGVmYXVsdD12b2lkIDA7dmFyIGQ9aShyZSgpKTtmdW5jdGlvbiBpKHIpe3JldHVybiByJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfX12YXIgYz1mdW5jdGlvbihfLEUpe3JldHVybiBfIGluc3RhbmNlb2YgRX07YS5kZWZhdWx0PWN9fSksbWU9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9zb3VyY2UuanNcIihhKXtcInVzZSBzdHJpY3RcIjtLKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5pc1NvdXJjZT1BLGEuU291cmNlPXZvaWQgMDt2YXIgZD16KCksaT1fKHJlKCkpLGM9XyhfZSgpKSxyPV8oRWUoKSk7ZnVuY3Rpb24gXyhOKXtyZXR1cm4gTiYmTi5fX2VzTW9kdWxlP046e2RlZmF1bHQ6Tn19ZnVuY3Rpb24gRShOLGcpe2Zvcih2YXIgRD0wO0Q8Zy5sZW5ndGg7RCsrKXt2YXIgdj1nW0RdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTix2LmtleSx2KX19ZnVuY3Rpb24gayhOLGcsRCl7cmV0dXJuIGcmJkUoTi5wcm90b3R5cGUsZyksRCYmRShOLEQpLE59dmFyIE89ZnVuY3Rpb24oKXtmdW5jdGlvbiBOKGcpe3ZhciBEPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpcIkdyYXBoUUwgcmVxdWVzdFwiLHY9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOntsaW5lOjEsY29sdW1uOjF9O3R5cGVvZiBnPT1cInN0cmluZ1wifHwoMCxjLmRlZmF1bHQpKDAsXCJCb2R5IG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkOiBcIi5jb25jYXQoKDAsaS5kZWZhdWx0KShnKSxcIi5cIikpLHRoaXMuYm9keT1nLHRoaXMubmFtZT1ELHRoaXMubG9jYXRpb25PZmZzZXQ9dix0aGlzLmxvY2F0aW9uT2Zmc2V0LmxpbmU+MHx8KDAsYy5kZWZhdWx0KSgwLFwibGluZSBpbiBsb2NhdGlvbk9mZnNldCBpcyAxLWluZGV4ZWQgYW5kIG11c3QgYmUgcG9zaXRpdmUuXCIpLHRoaXMubG9jYXRpb25PZmZzZXQuY29sdW1uPjB8fCgwLGMuZGVmYXVsdCkoMCxcImNvbHVtbiBpbiBsb2NhdGlvbk9mZnNldCBpcyAxLWluZGV4ZWQgYW5kIG11c3QgYmUgcG9zaXRpdmUuXCIpfXJldHVybiBrKE4sW3trZXk6ZC5TWU1CT0xfVE9fU1RSSU5HX1RBRyxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cIlNvdXJjZVwifX1dKSxOfSgpO2EuU291cmNlPU87ZnVuY3Rpb24gQShOKXtyZXR1cm4oMCxyLmRlZmF1bHQpKE4sTyl9fX0pLHllPUwoe1wibm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24uanNcIihhKXtcInVzZSBzdHJpY3RcIjtLKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksYS5EaXJlY3RpdmVMb2NhdGlvbj12b2lkIDA7dmFyIGQ9T2JqZWN0LmZyZWV6ZSh7UVVFUlk6XCJRVUVSWVwiLE1VVEFUSU9OOlwiTVVUQVRJT05cIixTVUJTQ1JJUFRJT046XCJTVUJTQ1JJUFRJT05cIixGSUVMRDpcIkZJRUxEXCIsRlJBR01FTlRfREVGSU5JVElPTjpcIkZSQUdNRU5UX0RFRklOSVRJT05cIixGUkFHTUVOVF9TUFJFQUQ6XCJGUkFHTUVOVF9TUFJFQURcIixJTkxJTkVfRlJBR01FTlQ6XCJJTkxJTkVfRlJBR01FTlRcIixWQVJJQUJMRV9ERUZJTklUSU9OOlwiVkFSSUFCTEVfREVGSU5JVElPTlwiLFNDSEVNQTpcIlNDSEVNQVwiLFNDQUxBUjpcIlNDQUxBUlwiLE9CSkVDVDpcIk9CSkVDVFwiLEZJRUxEX0RFRklOSVRJT046XCJGSUVMRF9ERUZJTklUSU9OXCIsQVJHVU1FTlRfREVGSU5JVElPTjpcIkFSR1VNRU5UX0RFRklOSVRJT05cIixJTlRFUkZBQ0U6XCJJTlRFUkZBQ0VcIixVTklPTjpcIlVOSU9OXCIsRU5VTTpcIkVOVU1cIixFTlVNX1ZBTFVFOlwiRU5VTV9WQUxVRVwiLElOUFVUX09CSkVDVDpcIklOUFVUX09CSkVDVFwiLElOUFVUX0ZJRUxEX0RFRklOSVRJT046XCJJTlBVVF9GSUVMRF9ERUZJTklUSU9OXCJ9KTthLkRpcmVjdGl2ZUxvY2F0aW9uPWR9fSksa2U9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9ibG9ja1N0cmluZy5qc1wiKGEpe1widXNlIHN0cmljdFwiO0soKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmRlZGVudEJsb2NrU3RyaW5nVmFsdWU9ZCxhLmdldEJsb2NrU3RyaW5nSW5kZW50YXRpb249YyxhLnByaW50QmxvY2tTdHJpbmc9cjtmdW5jdGlvbiBkKF8pe3ZhciBFPV8uc3BsaXQoL1xcclxcbnxbXFxuXFxyXS9nKSxrPWMoXyk7aWYoayE9PTApZm9yKHZhciBPPTE7TzxFLmxlbmd0aDtPKyspRVtPXT1FW09dLnNsaWNlKGspO2Zvcih2YXIgQT0wO0E8RS5sZW5ndGgmJmkoRVtBXSk7KSsrQTtmb3IodmFyIE49RS5sZW5ndGg7Tj5BJiZpKEVbTi0xXSk7KS0tTjtyZXR1cm4gRS5zbGljZShBLE4pLmpvaW4oYFxuYCl9ZnVuY3Rpb24gaShfKXtmb3IodmFyIEU9MDtFPF8ubGVuZ3RoOysrRSlpZihfW0VdIT09XCIgXCImJl9bRV0hPT1cIlx0XCIpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYyhfKXtmb3IodmFyIEUsaz0hMCxPPSEwLEE9MCxOPW51bGwsZz0wO2c8Xy5sZW5ndGg7KytnKXN3aXRjaChfLmNoYXJDb2RlQXQoZykpe2Nhc2UgMTM6Xy5jaGFyQ29kZUF0KGcrMSk9PT0xMCYmKytnO2Nhc2UgMTA6az0hMSxPPSEwLEE9MDticmVhaztjYXNlIDk6Y2FzZSAzMjorK0E7YnJlYWs7ZGVmYXVsdDpPJiYhayYmKE49PT1udWxsfHxBPE4pJiYoTj1BKSxPPSExfXJldHVybihFPU4pIT09bnVsbCYmRSE9PXZvaWQgMD9FOjB9ZnVuY3Rpb24gcihfKXt2YXIgRT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06XCJcIixrPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMSxPPV8uaW5kZXhPZihgXG5gKT09PS0xLEE9X1swXT09PVwiIFwifHxfWzBdPT09XCJcdFwiLE49X1tfLmxlbmd0aC0xXT09PSdcIicsZz1fW18ubGVuZ3RoLTFdPT09XCJcXFxcXCIsRD0hT3x8Tnx8Z3x8ayx2PVwiXCI7cmV0dXJuIEQmJiEoTyYmQSkmJih2Kz1gXG5gK0UpLHYrPUU/Xy5yZXBsYWNlKC9cXG4vZyxgXG5gK0UpOl8sRCYmKHYrPWBcbmApLCdcIlwiXCInK3YucmVwbGFjZSgvXCJcIlwiL2csJ1xcXFxcIlwiXCInKSsnXCJcIlwiJ319fSksTmU9TCh7XCJub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9sZXhlci5qc1wiKGEpe1widXNlIHN0cmljdFwiO0soKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLmlzUHVuY3R1YXRvclRva2VuS2luZD1FLGEuTGV4ZXI9dm9pZCAwO3ZhciBkPVooKSxpPXRlKCksYz1uZSgpLHI9a2UoKSxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh5KXt2YXIgZj1uZXcgaS5Ub2tlbihjLlRva2VuS2luZC5TT0YsMCwwLDAsMCxudWxsKTt0aGlzLnNvdXJjZT15LHRoaXMubGFzdFRva2VuPWYsdGhpcy50b2tlbj1mLHRoaXMubGluZT0xLHRoaXMubGluZVN0YXJ0PTB9dmFyIHU9dC5wcm90b3R5cGU7cmV0dXJuIHUuYWR2YW5jZT1mdW5jdGlvbigpe3RoaXMubGFzdFRva2VuPXRoaXMudG9rZW47dmFyIGY9dGhpcy50b2tlbj10aGlzLmxvb2thaGVhZCgpO3JldHVybiBmfSx1Lmxvb2thaGVhZD1mdW5jdGlvbigpe3ZhciBmPXRoaXMudG9rZW47aWYoZi5raW5kIT09Yy5Ub2tlbktpbmQuRU9GKWRve3ZhciBtO2Y9KG09Zi5uZXh0KSE9PW51bGwmJm0hPT12b2lkIDA/bTpmLm5leHQ9Tyh0aGlzLGYpfXdoaWxlKGYua2luZD09PWMuVG9rZW5LaW5kLkNPTU1FTlQpO3JldHVybiBmfSx0fSgpO2EuTGV4ZXI9XztmdW5jdGlvbiBFKHQpe3JldHVybiB0PT09Yy5Ub2tlbktpbmQuQkFOR3x8dD09PWMuVG9rZW5LaW5kLkRPTExBUnx8dD09PWMuVG9rZW5LaW5kLkFNUHx8dD09PWMuVG9rZW5LaW5kLlBBUkVOX0x8fHQ9PT1jLlRva2VuS2luZC5QQVJFTl9SfHx0PT09Yy5Ub2tlbktpbmQuU1BSRUFEfHx0PT09Yy5Ub2tlbktpbmQuQ09MT058fHQ9PT1jLlRva2VuS2luZC5FUVVBTFN8fHQ9PT1jLlRva2VuS2luZC5BVHx8dD09PWMuVG9rZW5LaW5kLkJSQUNLRVRfTHx8dD09PWMuVG9rZW5LaW5kLkJSQUNLRVRfUnx8dD09PWMuVG9rZW5LaW5kLkJSQUNFX0x8fHQ9PT1jLlRva2VuS2luZC5QSVBFfHx0PT09Yy5Ub2tlbktpbmQuQlJBQ0VfUn1mdW5jdGlvbiBrKHQpe3JldHVybiBpc05hTih0KT9jLlRva2VuS2luZC5FT0Y6dDwxMjc/SlNPTi5zdHJpbmdpZnkoU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6J1wiXFxcXHUnLmNvbmNhdCgoXCIwMFwiK3QudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkpLnNsaWNlKC00KSwnXCInKX1mdW5jdGlvbiBPKHQsdSl7Zm9yKHZhciB5PXQuc291cmNlLGY9eS5ib2R5LG09Zi5sZW5ndGgsbz11LmVuZDtvPG07KXt2YXIgaD1mLmNoYXJDb2RlQXQobyksbD10LmxpbmUsVD0xK28tdC5saW5lU3RhcnQ7c3dpdGNoKGgpe2Nhc2UgNjUyNzk6Y2FzZSA5OmNhc2UgMzI6Y2FzZSA0NDorK287Y29udGludWU7Y2FzZSAxMDorK28sKyt0LmxpbmUsdC5saW5lU3RhcnQ9bztjb250aW51ZTtjYXNlIDEzOmYuY2hhckNvZGVBdChvKzEpPT09MTA/bys9MjorK28sKyt0LmxpbmUsdC5saW5lU3RhcnQ9bztjb250aW51ZTtjYXNlIDMzOnJldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5CQU5HLG8sbysxLGwsVCx1KTtjYXNlIDM1OnJldHVybiBOKHksbyxsLFQsdSk7Y2FzZSAzNjpyZXR1cm4gbmV3IGkuVG9rZW4oYy5Ub2tlbktpbmQuRE9MTEFSLG8sbysxLGwsVCx1KTtjYXNlIDM4OnJldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5BTVAsbyxvKzEsbCxULHUpO2Nhc2UgNDA6cmV0dXJuIG5ldyBpLlRva2VuKGMuVG9rZW5LaW5kLlBBUkVOX0wsbyxvKzEsbCxULHUpO2Nhc2UgNDE6cmV0dXJuIG5ldyBpLlRva2VuKGMuVG9rZW5LaW5kLlBBUkVOX1IsbyxvKzEsbCxULHUpO2Nhc2UgNDY6aWYoZi5jaGFyQ29kZUF0KG8rMSk9PT00NiYmZi5jaGFyQ29kZUF0KG8rMik9PT00NilyZXR1cm4gbmV3IGkuVG9rZW4oYy5Ub2tlbktpbmQuU1BSRUFELG8sbyszLGwsVCx1KTticmVhaztjYXNlIDU4OnJldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5DT0xPTixvLG8rMSxsLFQsdSk7Y2FzZSA2MTpyZXR1cm4gbmV3IGkuVG9rZW4oYy5Ub2tlbktpbmQuRVFVQUxTLG8sbysxLGwsVCx1KTtjYXNlIDY0OnJldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5BVCxvLG8rMSxsLFQsdSk7Y2FzZSA5MTpyZXR1cm4gbmV3IGkuVG9rZW4oYy5Ub2tlbktpbmQuQlJBQ0tFVF9MLG8sbysxLGwsVCx1KTtjYXNlIDkzOnJldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5CUkFDS0VUX1IsbyxvKzEsbCxULHUpO2Nhc2UgMTIzOnJldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5CUkFDRV9MLG8sbysxLGwsVCx1KTtjYXNlIDEyNDpyZXR1cm4gbmV3IGkuVG9rZW4oYy5Ub2tlbktpbmQuUElQRSxvLG8rMSxsLFQsdSk7Y2FzZSAxMjU6cmV0dXJuIG5ldyBpLlRva2VuKGMuVG9rZW5LaW5kLkJSQUNFX1IsbyxvKzEsbCxULHUpO2Nhc2UgMzQ6cmV0dXJuIGYuY2hhckNvZGVBdChvKzEpPT09MzQmJmYuY2hhckNvZGVBdChvKzIpPT09MzQ/SSh5LG8sbCxULHUsdCk6dih5LG8sbCxULHUpO2Nhc2UgNDU6Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpyZXR1cm4gZyh5LG8saCxsLFQsdSk7Y2FzZSA2NTpjYXNlIDY2OmNhc2UgNjc6Y2FzZSA2ODpjYXNlIDY5OmNhc2UgNzA6Y2FzZSA3MTpjYXNlIDcyOmNhc2UgNzM6Y2FzZSA3NDpjYXNlIDc1OmNhc2UgNzY6Y2FzZSA3NzpjYXNlIDc4OmNhc2UgNzk6Y2FzZSA4MDpjYXNlIDgxOmNhc2UgODI6Y2FzZSA4MzpjYXNlIDg0OmNhc2UgODU6Y2FzZSA4NjpjYXNlIDg3OmNhc2UgODg6Y2FzZSA4OTpjYXNlIDkwOmNhc2UgOTU6Y2FzZSA5NzpjYXNlIDk4OmNhc2UgOTk6Y2FzZSAxMDA6Y2FzZSAxMDE6Y2FzZSAxMDI6Y2FzZSAxMDM6Y2FzZSAxMDQ6Y2FzZSAxMDU6Y2FzZSAxMDY6Y2FzZSAxMDc6Y2FzZSAxMDg6Y2FzZSAxMDk6Y2FzZSAxMTA6Y2FzZSAxMTE6Y2FzZSAxMTI6Y2FzZSAxMTM6Y2FzZSAxMTQ6Y2FzZSAxMTU6Y2FzZSAxMTY6Y2FzZSAxMTc6Y2FzZSAxMTg6Y2FzZSAxMTk6Y2FzZSAxMjA6Y2FzZSAxMjE6Y2FzZSAxMjI6cmV0dXJuIGUoeSxvLGwsVCx1KX10aHJvdygwLGQuc3ludGF4RXJyb3IpKHksbyxBKGgpKX12YXIgUz10LmxpbmUseD0xK28tdC5saW5lU3RhcnQ7cmV0dXJuIG5ldyBpLlRva2VuKGMuVG9rZW5LaW5kLkVPRixtLG0sUyx4LHUpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIHQ8MzImJnQhPT05JiZ0IT09MTAmJnQhPT0xMz9cIkNhbm5vdCBjb250YWluIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBcIi5jb25jYXQoayh0KSxcIi5cIik6dD09PTM5P2BVbmV4cGVjdGVkIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXIgKCcpLCBkaWQgeW91IG1lYW4gdG8gdXNlIGEgZG91YmxlIHF1b3RlIChcIik/YDpcIkNhbm5vdCBwYXJzZSB0aGUgdW5leHBlY3RlZCBjaGFyYWN0ZXIgXCIuY29uY2F0KGsodCksXCIuXCIpfWZ1bmN0aW9uIE4odCx1LHksZixtKXt2YXIgbz10LmJvZHksaCxsPXU7ZG8gaD1vLmNoYXJDb2RlQXQoKytsKTt3aGlsZSghaXNOYU4oaCkmJihoPjMxfHxoPT09OSkpO3JldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5DT01NRU5ULHUsbCx5LGYsbSxvLnNsaWNlKHUrMSxsKSl9ZnVuY3Rpb24gZyh0LHUseSxmLG0sbyl7dmFyIGg9dC5ib2R5LGw9eSxUPXUsUz0hMTtpZihsPT09NDUmJihsPWguY2hhckNvZGVBdCgrK1QpKSxsPT09NDgpe2lmKGw9aC5jaGFyQ29kZUF0KCsrVCksbD49NDgmJmw8PTU3KXRocm93KDAsZC5zeW50YXhFcnJvcikodCxULFwiSW52YWxpZCBudW1iZXIsIHVuZXhwZWN0ZWQgZGlnaXQgYWZ0ZXIgMDogXCIuY29uY2F0KGsobCksXCIuXCIpKX1lbHNlIFQ9RCh0LFQsbCksbD1oLmNoYXJDb2RlQXQoVCk7aWYobD09PTQ2JiYoUz0hMCxsPWguY2hhckNvZGVBdCgrK1QpLFQ9RCh0LFQsbCksbD1oLmNoYXJDb2RlQXQoVCkpLChsPT09Njl8fGw9PT0xMDEpJiYoUz0hMCxsPWguY2hhckNvZGVBdCgrK1QpLChsPT09NDN8fGw9PT00NSkmJihsPWguY2hhckNvZGVBdCgrK1QpKSxUPUQodCxULGwpLGw9aC5jaGFyQ29kZUF0KFQpKSxsPT09NDZ8fG4obCkpdGhyb3coMCxkLnN5bnRheEVycm9yKSh0LFQsXCJJbnZhbGlkIG51bWJlciwgZXhwZWN0ZWQgZGlnaXQgYnV0IGdvdDogXCIuY29uY2F0KGsobCksXCIuXCIpKTtyZXR1cm4gbmV3IGkuVG9rZW4oUz9jLlRva2VuS2luZC5GTE9BVDpjLlRva2VuS2luZC5JTlQsdSxULGYsbSxvLGguc2xpY2UodSxUKSl9ZnVuY3Rpb24gRCh0LHUseSl7dmFyIGY9dC5ib2R5LG09dSxvPXk7aWYobz49NDgmJm88PTU3KXtkbyBvPWYuY2hhckNvZGVBdCgrK20pO3doaWxlKG8+PTQ4JiZvPD01Nyk7cmV0dXJuIG19dGhyb3coMCxkLnN5bnRheEVycm9yKSh0LG0sXCJJbnZhbGlkIG51bWJlciwgZXhwZWN0ZWQgZGlnaXQgYnV0IGdvdDogXCIuY29uY2F0KGsobyksXCIuXCIpKX1mdW5jdGlvbiB2KHQsdSx5LGYsbSl7Zm9yKHZhciBvPXQuYm9keSxoPXUrMSxsPWgsVD0wLFM9XCJcIjtoPG8ubGVuZ3RoJiYhaXNOYU4oVD1vLmNoYXJDb2RlQXQoaCkpJiZUIT09MTAmJlQhPT0xMzspe2lmKFQ9PT0zNClyZXR1cm4gUys9by5zbGljZShsLGgpLG5ldyBpLlRva2VuKGMuVG9rZW5LaW5kLlNUUklORyx1LGgrMSx5LGYsbSxTKTtpZihUPDMyJiZUIT09OSl0aHJvdygwLGQuc3ludGF4RXJyb3IpKHQsaCxcIkludmFsaWQgY2hhcmFjdGVyIHdpdGhpbiBTdHJpbmc6IFwiLmNvbmNhdChrKFQpLFwiLlwiKSk7aWYoKytoLFQ9PT05Mil7c3dpdGNoKFMrPW8uc2xpY2UobCxoLTEpLFQ9by5jaGFyQ29kZUF0KGgpLFQpe2Nhc2UgMzQ6Uys9J1wiJzticmVhaztjYXNlIDQ3OlMrPVwiL1wiO2JyZWFrO2Nhc2UgOTI6Uys9XCJcXFxcXCI7YnJlYWs7Y2FzZSA5ODpTKz1cIlxcYlwiO2JyZWFrO2Nhc2UgMTAyOlMrPVwiXFxmXCI7YnJlYWs7Y2FzZSAxMTA6Uys9YFxuYDticmVhaztjYXNlIDExNDpTKz1cIlxcclwiO2JyZWFrO2Nhc2UgMTE2OlMrPVwiXHRcIjticmVhaztjYXNlIDExNzp7dmFyIHg9cyhvLmNoYXJDb2RlQXQoaCsxKSxvLmNoYXJDb2RlQXQoaCsyKSxvLmNoYXJDb2RlQXQoaCszKSxvLmNoYXJDb2RlQXQoaCs0KSk7aWYoeDwwKXt2YXIgYj1vLnNsaWNlKGgrMSxoKzUpO3Rocm93KDAsZC5zeW50YXhFcnJvcikodCxoLFwiSW52YWxpZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlOiBcXFxcdVwiLmNvbmNhdChiLFwiLlwiKSl9Uys9U3RyaW5nLmZyb21DaGFyQ29kZSh4KSxoKz00O2JyZWFrfWRlZmF1bHQ6dGhyb3coMCxkLnN5bnRheEVycm9yKSh0LGgsXCJJbnZhbGlkIGNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2U6IFxcXFxcIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShUKSxcIi5cIikpfSsraCxsPWh9fXRocm93KDAsZC5zeW50YXhFcnJvcikodCxoLFwiVW50ZXJtaW5hdGVkIHN0cmluZy5cIil9ZnVuY3Rpb24gSSh0LHUseSxmLG0sbyl7Zm9yKHZhciBoPXQuYm9keSxsPXUrMyxUPWwsUz0wLHg9XCJcIjtsPGgubGVuZ3RoJiYhaXNOYU4oUz1oLmNoYXJDb2RlQXQobCkpOyl7aWYoUz09PTM0JiZoLmNoYXJDb2RlQXQobCsxKT09PTM0JiZoLmNoYXJDb2RlQXQobCsyKT09PTM0KXJldHVybiB4Kz1oLnNsaWNlKFQsbCksbmV3IGkuVG9rZW4oYy5Ub2tlbktpbmQuQkxPQ0tfU1RSSU5HLHUsbCszLHksZixtLCgwLHIuZGVkZW50QmxvY2tTdHJpbmdWYWx1ZSkoeCkpO2lmKFM8MzImJlMhPT05JiZTIT09MTAmJlMhPT0xMyl0aHJvdygwLGQuc3ludGF4RXJyb3IpKHQsbCxcIkludmFsaWQgY2hhcmFjdGVyIHdpdGhpbiBTdHJpbmc6IFwiLmNvbmNhdChrKFMpLFwiLlwiKSk7Uz09PTEwPygrK2wsKytvLmxpbmUsby5saW5lU3RhcnQ9bCk6Uz09PTEzPyhoLmNoYXJDb2RlQXQobCsxKT09PTEwP2wrPTI6KytsLCsrby5saW5lLG8ubGluZVN0YXJ0PWwpOlM9PT05MiYmaC5jaGFyQ29kZUF0KGwrMSk9PT0zNCYmaC5jaGFyQ29kZUF0KGwrMik9PT0zNCYmaC5jaGFyQ29kZUF0KGwrMyk9PT0zND8oeCs9aC5zbGljZShULGwpKydcIlwiXCInLGwrPTQsVD1sKTorK2x9dGhyb3coMCxkLnN5bnRheEVycm9yKSh0LGwsXCJVbnRlcm1pbmF0ZWQgc3RyaW5nLlwiKX1mdW5jdGlvbiBzKHQsdSx5LGYpe3JldHVybiBwKHQpPDwxMnxwKHUpPDw4fHAoeSk8PDR8cChmKX1mdW5jdGlvbiBwKHQpe3JldHVybiB0Pj00OCYmdDw9NTc/dC00ODp0Pj02NSYmdDw9NzA/dC01NTp0Pj05NyYmdDw9MTAyP3QtODc6LTF9ZnVuY3Rpb24gZSh0LHUseSxmLG0pe2Zvcih2YXIgbz10LmJvZHksaD1vLmxlbmd0aCxsPXUrMSxUPTA7bCE9PWgmJiFpc05hTihUPW8uY2hhckNvZGVBdChsKSkmJihUPT09OTV8fFQ+PTQ4JiZUPD01N3x8VD49NjUmJlQ8PTkwfHxUPj05NyYmVDw9MTIyKTspKytsO3JldHVybiBuZXcgaS5Ub2tlbihjLlRva2VuS2luZC5OQU1FLHUsbCx5LGYsbSxvLnNsaWNlKHUsbCkpfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHQ9PT05NXx8dD49NjUmJnQ8PTkwfHx0Pj05NyYmdDw9MTIyfX19KSxPZT1MKHtcIm5vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3BhcnNlci5qc1wiKGEpe1widXNlIHN0cmljdFwiO0soKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxhLnBhcnNlPU8sYS5wYXJzZVZhbHVlPUEsYS5wYXJzZVR5cGU9TixhLlBhcnNlcj12b2lkIDA7dmFyIGQ9WigpLGk9aGUoKSxjPXRlKCkscj1uZSgpLF89bWUoKSxFPXllKCksaz1OZSgpO2Z1bmN0aW9uIE8oSSxzKXt2YXIgcD1uZXcgZyhJLHMpO3JldHVybiBwLnBhcnNlRG9jdW1lbnQoKX1mdW5jdGlvbiBBKEkscyl7dmFyIHA9bmV3IGcoSSxzKTtwLmV4cGVjdFRva2VuKHIuVG9rZW5LaW5kLlNPRik7dmFyIGU9cC5wYXJzZVZhbHVlTGl0ZXJhbCghMSk7cmV0dXJuIHAuZXhwZWN0VG9rZW4oci5Ub2tlbktpbmQuRU9GKSxlfWZ1bmN0aW9uIE4oSSxzKXt2YXIgcD1uZXcgZyhJLHMpO3AuZXhwZWN0VG9rZW4oci5Ub2tlbktpbmQuU09GKTt2YXIgZT1wLnBhcnNlVHlwZVJlZmVyZW5jZSgpO3JldHVybiBwLmV4cGVjdFRva2VuKHIuVG9rZW5LaW5kLkVPRiksZX12YXIgZz1mdW5jdGlvbigpe2Z1bmN0aW9uIEkocCxlKXt2YXIgbj0oMCxfLmlzU291cmNlKShwKT9wOm5ldyBfLlNvdXJjZShwKTt0aGlzLl9sZXhlcj1uZXcgay5MZXhlcihuKSx0aGlzLl9vcHRpb25zPWV9dmFyIHM9SS5wcm90b3R5cGU7cmV0dXJuIHMucGFyc2VOYW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5leHBlY3RUb2tlbihyLlRva2VuS2luZC5OQU1FKTtyZXR1cm57a2luZDppLktpbmQuTkFNRSx2YWx1ZTplLnZhbHVlLGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VEb2N1bWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3JldHVybntraW5kOmkuS2luZC5ET0NVTUVOVCxkZWZpbml0aW9uczp0aGlzLm1hbnkoci5Ub2tlbktpbmQuU09GLHRoaXMucGFyc2VEZWZpbml0aW9uLHIuVG9rZW5LaW5kLkVPRiksbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZURlZmluaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWsoci5Ub2tlbktpbmQuTkFNRSkpc3dpdGNoKHRoaXMuX2xleGVyLnRva2VuLnZhbHVlKXtjYXNlXCJxdWVyeVwiOmNhc2VcIm11dGF0aW9uXCI6Y2FzZVwic3Vic2NyaXB0aW9uXCI6cmV0dXJuIHRoaXMucGFyc2VPcGVyYXRpb25EZWZpbml0aW9uKCk7Y2FzZVwiZnJhZ21lbnRcIjpyZXR1cm4gdGhpcy5wYXJzZUZyYWdtZW50RGVmaW5pdGlvbigpO2Nhc2VcInNjaGVtYVwiOmNhc2VcInNjYWxhclwiOmNhc2VcInR5cGVcIjpjYXNlXCJpbnRlcmZhY2VcIjpjYXNlXCJ1bmlvblwiOmNhc2VcImVudW1cIjpjYXNlXCJpbnB1dFwiOmNhc2VcImRpcmVjdGl2ZVwiOnJldHVybiB0aGlzLnBhcnNlVHlwZVN5c3RlbURlZmluaXRpb24oKTtjYXNlXCJleHRlbmRcIjpyZXR1cm4gdGhpcy5wYXJzZVR5cGVTeXN0ZW1FeHRlbnNpb24oKX1lbHNle2lmKHRoaXMucGVlayhyLlRva2VuS2luZC5CUkFDRV9MKSlyZXR1cm4gdGhpcy5wYXJzZU9wZXJhdGlvbkRlZmluaXRpb24oKTtpZih0aGlzLnBlZWtEZXNjcmlwdGlvbigpKXJldHVybiB0aGlzLnBhcnNlVHlwZVN5c3RlbURlZmluaXRpb24oKX10aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKX0scy5wYXJzZU9wZXJhdGlvbkRlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjtpZih0aGlzLnBlZWsoci5Ub2tlbktpbmQuQlJBQ0VfTCkpcmV0dXJue2tpbmQ6aS5LaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OLG9wZXJhdGlvbjpcInF1ZXJ5XCIsbmFtZTp2b2lkIDAsdmFyaWFibGVEZWZpbml0aW9uczpbXSxkaXJlY3RpdmVzOltdLHNlbGVjdGlvblNldDp0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksbG9jOnRoaXMubG9jKGUpfTt2YXIgbj10aGlzLnBhcnNlT3BlcmF0aW9uVHlwZSgpLHQ7cmV0dXJuIHRoaXMucGVlayhyLlRva2VuS2luZC5OQU1FKSYmKHQ9dGhpcy5wYXJzZU5hbWUoKSkse2tpbmQ6aS5LaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OLG9wZXJhdGlvbjpuLG5hbWU6dCx2YXJpYWJsZURlZmluaXRpb25zOnRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb25zKCksZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMSksc2VsZWN0aW9uU2V0OnRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlT3BlcmF0aW9uVHlwZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZXhwZWN0VG9rZW4oci5Ub2tlbktpbmQuTkFNRSk7c3dpdGNoKGUudmFsdWUpe2Nhc2VcInF1ZXJ5XCI6cmV0dXJuXCJxdWVyeVwiO2Nhc2VcIm11dGF0aW9uXCI6cmV0dXJuXCJtdXRhdGlvblwiO2Nhc2VcInN1YnNjcmlwdGlvblwiOnJldHVyblwic3Vic2NyaXB0aW9uXCJ9dGhyb3cgdGhpcy51bmV4cGVjdGVkKGUpfSxzLnBhcnNlVmFyaWFibGVEZWZpbml0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbmFsTWFueShyLlRva2VuS2luZC5QQVJFTl9MLHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb24sci5Ub2tlbktpbmQuUEFSRU5fUil9LHMucGFyc2VWYXJpYWJsZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjtyZXR1cm57a2luZDppLktpbmQuVkFSSUFCTEVfREVGSU5JVElPTix2YXJpYWJsZTp0aGlzLnBhcnNlVmFyaWFibGUoKSx0eXBlOih0aGlzLmV4cGVjdFRva2VuKHIuVG9rZW5LaW5kLkNPTE9OKSx0aGlzLnBhcnNlVHlwZVJlZmVyZW5jZSgpKSxkZWZhdWx0VmFsdWU6dGhpcy5leHBlY3RPcHRpb25hbFRva2VuKHIuVG9rZW5LaW5kLkVRVUFMUyk/dGhpcy5wYXJzZVZhbHVlTGl0ZXJhbCghMCk6dm9pZCAwLGRpcmVjdGl2ZXM6dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VWYXJpYWJsZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3JldHVybiB0aGlzLmV4cGVjdFRva2VuKHIuVG9rZW5LaW5kLkRPTExBUikse2tpbmQ6aS5LaW5kLlZBUklBQkxFLG5hbWU6dGhpcy5wYXJzZU5hbWUoKSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlU2VsZWN0aW9uU2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJue2tpbmQ6aS5LaW5kLlNFTEVDVElPTl9TRVQsc2VsZWN0aW9uczp0aGlzLm1hbnkoci5Ub2tlbktpbmQuQlJBQ0VfTCx0aGlzLnBhcnNlU2VsZWN0aW9uLHIuVG9rZW5LaW5kLkJSQUNFX1IpLGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrKHIuVG9rZW5LaW5kLlNQUkVBRCk/dGhpcy5wYXJzZUZyYWdtZW50KCk6dGhpcy5wYXJzZUZpZWxkKCl9LHMucGFyc2VGaWVsZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLG49dGhpcy5wYXJzZU5hbWUoKSx0LHU7cmV0dXJuIHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihyLlRva2VuS2luZC5DT0xPTik/KHQ9bix1PXRoaXMucGFyc2VOYW1lKCkpOnU9bix7a2luZDppLktpbmQuRklFTEQsYWxpYXM6dCxuYW1lOnUsYXJndW1lbnRzOnRoaXMucGFyc2VBcmd1bWVudHMoITEpLGRpcmVjdGl2ZXM6dGhpcy5wYXJzZURpcmVjdGl2ZXMoITEpLHNlbGVjdGlvblNldDp0aGlzLnBlZWsoci5Ub2tlbktpbmQuQlJBQ0VfTCk/dGhpcy5wYXJzZVNlbGVjdGlvblNldCgpOnZvaWQgMCxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlQXJndW1lbnRzPWZ1bmN0aW9uKGUpe3ZhciBuPWU/dGhpcy5wYXJzZUNvbnN0QXJndW1lbnQ6dGhpcy5wYXJzZUFyZ3VtZW50O3JldHVybiB0aGlzLm9wdGlvbmFsTWFueShyLlRva2VuS2luZC5QQVJFTl9MLG4sci5Ub2tlbktpbmQuUEFSRU5fUil9LHMucGFyc2VBcmd1bWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLG49dGhpcy5wYXJzZU5hbWUoKTtyZXR1cm4gdGhpcy5leHBlY3RUb2tlbihyLlRva2VuS2luZC5DT0xPTikse2tpbmQ6aS5LaW5kLkFSR1VNRU5ULG5hbWU6bix2YWx1ZTp0aGlzLnBhcnNlVmFsdWVMaXRlcmFsKCExKSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlQ29uc3RBcmd1bWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3JldHVybntraW5kOmkuS2luZC5BUkdVTUVOVCxuYW1lOnRoaXMucGFyc2VOYW1lKCksdmFsdWU6KHRoaXMuZXhwZWN0VG9rZW4oci5Ub2tlbktpbmQuQ09MT04pLHRoaXMucGFyc2VWYWx1ZUxpdGVyYWwoITApKSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlRnJhZ21lbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjt0aGlzLmV4cGVjdFRva2VuKHIuVG9rZW5LaW5kLlNQUkVBRCk7dmFyIG49dGhpcy5leHBlY3RPcHRpb25hbEtleXdvcmQoXCJvblwiKTtyZXR1cm4hbiYmdGhpcy5wZWVrKHIuVG9rZW5LaW5kLk5BTUUpP3traW5kOmkuS2luZC5GUkFHTUVOVF9TUFJFQUQsbmFtZTp0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMSksbG9jOnRoaXMubG9jKGUpfTp7a2luZDppLktpbmQuSU5MSU5FX0ZSQUdNRU5ULHR5cGVDb25kaXRpb246bj90aGlzLnBhcnNlTmFtZWRUeXBlKCk6dm9pZCAwLGRpcmVjdGl2ZXM6dGhpcy5wYXJzZURpcmVjdGl2ZXMoITEpLHNlbGVjdGlvblNldDp0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZUZyYWdtZW50RGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlLG49dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJuIHRoaXMuZXhwZWN0S2V5d29yZChcImZyYWdtZW50XCIpLCgoZT10aGlzLl9vcHRpb25zKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUuZXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXMpPT09ITA/e2tpbmQ6aS5LaW5kLkZSQUdNRU5UX0RFRklOSVRJT04sbmFtZTp0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksdmFyaWFibGVEZWZpbml0aW9uczp0aGlzLnBhcnNlVmFyaWFibGVEZWZpbml0aW9ucygpLHR5cGVDb25kaXRpb246KHRoaXMuZXhwZWN0S2V5d29yZChcIm9uXCIpLHRoaXMucGFyc2VOYW1lZFR5cGUoKSksZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMSksc2VsZWN0aW9uU2V0OnRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxsb2M6dGhpcy5sb2Mobil9OntraW5kOmkuS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OLG5hbWU6dGhpcy5wYXJzZUZyYWdtZW50TmFtZSgpLHR5cGVDb25kaXRpb246KHRoaXMuZXhwZWN0S2V5d29yZChcIm9uXCIpLHRoaXMucGFyc2VOYW1lZFR5cGUoKSksZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMSksc2VsZWN0aW9uU2V0OnRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxsb2M6dGhpcy5sb2Mobil9fSxzLnBhcnNlRnJhZ21lbnROYW1lPWZ1bmN0aW9uKCl7aWYodGhpcy5fbGV4ZXIudG9rZW4udmFsdWU9PT1cIm9uXCIpdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7cmV0dXJuIHRoaXMucGFyc2VOYW1lKCl9LHMucGFyc2VWYWx1ZUxpdGVyYWw9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5fbGV4ZXIudG9rZW47c3dpdGNoKG4ua2luZCl7Y2FzZSByLlRva2VuS2luZC5CUkFDS0VUX0w6cmV0dXJuIHRoaXMucGFyc2VMaXN0KGUpO2Nhc2Ugci5Ub2tlbktpbmQuQlJBQ0VfTDpyZXR1cm4gdGhpcy5wYXJzZU9iamVjdChlKTtjYXNlIHIuVG9rZW5LaW5kLklOVDpyZXR1cm4gdGhpcy5fbGV4ZXIuYWR2YW5jZSgpLHtraW5kOmkuS2luZC5JTlQsdmFsdWU6bi52YWx1ZSxsb2M6dGhpcy5sb2Mobil9O2Nhc2Ugci5Ub2tlbktpbmQuRkxPQVQ6cmV0dXJuIHRoaXMuX2xleGVyLmFkdmFuY2UoKSx7a2luZDppLktpbmQuRkxPQVQsdmFsdWU6bi52YWx1ZSxsb2M6dGhpcy5sb2Mobil9O2Nhc2Ugci5Ub2tlbktpbmQuU1RSSU5HOmNhc2Ugci5Ub2tlbktpbmQuQkxPQ0tfU1RSSU5HOnJldHVybiB0aGlzLnBhcnNlU3RyaW5nTGl0ZXJhbCgpO2Nhc2Ugci5Ub2tlbktpbmQuTkFNRTpzd2l0Y2godGhpcy5fbGV4ZXIuYWR2YW5jZSgpLG4udmFsdWUpe2Nhc2VcInRydWVcIjpyZXR1cm57a2luZDppLktpbmQuQk9PTEVBTix2YWx1ZTohMCxsb2M6dGhpcy5sb2Mobil9O2Nhc2VcImZhbHNlXCI6cmV0dXJue2tpbmQ6aS5LaW5kLkJPT0xFQU4sdmFsdWU6ITEsbG9jOnRoaXMubG9jKG4pfTtjYXNlXCJudWxsXCI6cmV0dXJue2tpbmQ6aS5LaW5kLk5VTEwsbG9jOnRoaXMubG9jKG4pfTtkZWZhdWx0OnJldHVybntraW5kOmkuS2luZC5FTlVNLHZhbHVlOm4udmFsdWUsbG9jOnRoaXMubG9jKG4pfX1jYXNlIHIuVG9rZW5LaW5kLkRPTExBUjppZighZSlyZXR1cm4gdGhpcy5wYXJzZVZhcmlhYmxlKCk7YnJlYWt9dGhyb3cgdGhpcy51bmV4cGVjdGVkKCl9LHMucGFyc2VTdHJpbmdMaXRlcmFsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJuIHRoaXMuX2xleGVyLmFkdmFuY2UoKSx7a2luZDppLktpbmQuU1RSSU5HLHZhbHVlOmUudmFsdWUsYmxvY2s6ZS5raW5kPT09ci5Ub2tlbktpbmQuQkxPQ0tfU1RSSU5HLGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VMaXN0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsdD10aGlzLl9sZXhlci50b2tlbix1PWZ1bmN0aW9uKCl7cmV0dXJuIG4ucGFyc2VWYWx1ZUxpdGVyYWwoZSl9O3JldHVybntraW5kOmkuS2luZC5MSVNULHZhbHVlczp0aGlzLmFueShyLlRva2VuS2luZC5CUkFDS0VUX0wsdSxyLlRva2VuS2luZC5CUkFDS0VUX1IpLGxvYzp0aGlzLmxvYyh0KX19LHMucGFyc2VPYmplY3Q9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyx0PXRoaXMuX2xleGVyLnRva2VuLHU9ZnVuY3Rpb24oKXtyZXR1cm4gbi5wYXJzZU9iamVjdEZpZWxkKGUpfTtyZXR1cm57a2luZDppLktpbmQuT0JKRUNULGZpZWxkczp0aGlzLmFueShyLlRva2VuS2luZC5CUkFDRV9MLHUsci5Ub2tlbktpbmQuQlJBQ0VfUiksbG9jOnRoaXMubG9jKHQpfX0scy5wYXJzZU9iamVjdEZpZWxkPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuX2xleGVyLnRva2VuLHQ9dGhpcy5wYXJzZU5hbWUoKTtyZXR1cm4gdGhpcy5leHBlY3RUb2tlbihyLlRva2VuS2luZC5DT0xPTikse2tpbmQ6aS5LaW5kLk9CSkVDVF9GSUVMRCxuYW1lOnQsdmFsdWU6dGhpcy5wYXJzZVZhbHVlTGl0ZXJhbChlKSxsb2M6dGhpcy5sb2Mobil9fSxzLnBhcnNlRGlyZWN0aXZlcz1mdW5jdGlvbihlKXtmb3IodmFyIG49W107dGhpcy5wZWVrKHIuVG9rZW5LaW5kLkFUKTspbi5wdXNoKHRoaXMucGFyc2VEaXJlY3RpdmUoZSkpO3JldHVybiBufSxzLnBhcnNlRGlyZWN0aXZlPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuX2xleGVyLnRva2VuO3JldHVybiB0aGlzLmV4cGVjdFRva2VuKHIuVG9rZW5LaW5kLkFUKSx7a2luZDppLktpbmQuRElSRUNUSVZFLG5hbWU6dGhpcy5wYXJzZU5hbWUoKSxhcmd1bWVudHM6dGhpcy5wYXJzZUFyZ3VtZW50cyhlKSxsb2M6dGhpcy5sb2Mobil9fSxzLnBhcnNlVHlwZVJlZmVyZW5jZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLG47cmV0dXJuIHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihyLlRva2VuS2luZC5CUkFDS0VUX0wpPyhuPXRoaXMucGFyc2VUeXBlUmVmZXJlbmNlKCksdGhpcy5leHBlY3RUb2tlbihyLlRva2VuS2luZC5CUkFDS0VUX1IpLG49e2tpbmQ6aS5LaW5kLkxJU1RfVFlQRSx0eXBlOm4sbG9jOnRoaXMubG9jKGUpfSk6bj10aGlzLnBhcnNlTmFtZWRUeXBlKCksdGhpcy5leHBlY3RPcHRpb25hbFRva2VuKHIuVG9rZW5LaW5kLkJBTkcpP3traW5kOmkuS2luZC5OT05fTlVMTF9UWVBFLHR5cGU6bixsb2M6dGhpcy5sb2MoZSl9Om59LHMucGFyc2VOYW1lZFR5cGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjtyZXR1cm57a2luZDppLktpbmQuTkFNRURfVFlQRSxuYW1lOnRoaXMucGFyc2VOYW1lKCksbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZVR5cGVTeXN0ZW1EZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wZWVrRGVzY3JpcHRpb24oKT90aGlzLl9sZXhlci5sb29rYWhlYWQoKTp0aGlzLl9sZXhlci50b2tlbjtpZihlLmtpbmQ9PT1yLlRva2VuS2luZC5OQU1FKXN3aXRjaChlLnZhbHVlKXtjYXNlXCJzY2hlbWFcIjpyZXR1cm4gdGhpcy5wYXJzZVNjaGVtYURlZmluaXRpb24oKTtjYXNlXCJzY2FsYXJcIjpyZXR1cm4gdGhpcy5wYXJzZVNjYWxhclR5cGVEZWZpbml0aW9uKCk7Y2FzZVwidHlwZVwiOnJldHVybiB0aGlzLnBhcnNlT2JqZWN0VHlwZURlZmluaXRpb24oKTtjYXNlXCJpbnRlcmZhY2VcIjpyZXR1cm4gdGhpcy5wYXJzZUludGVyZmFjZVR5cGVEZWZpbml0aW9uKCk7Y2FzZVwidW5pb25cIjpyZXR1cm4gdGhpcy5wYXJzZVVuaW9uVHlwZURlZmluaXRpb24oKTtjYXNlXCJlbnVtXCI6cmV0dXJuIHRoaXMucGFyc2VFbnVtVHlwZURlZmluaXRpb24oKTtjYXNlXCJpbnB1dFwiOnJldHVybiB0aGlzLnBhcnNlSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbigpO2Nhc2VcImRpcmVjdGl2ZVwiOnJldHVybiB0aGlzLnBhcnNlRGlyZWN0aXZlRGVmaW5pdGlvbigpfXRocm93IHRoaXMudW5leHBlY3RlZChlKX0scy5wZWVrRGVzY3JpcHRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrKHIuVG9rZW5LaW5kLlNUUklORyl8fHRoaXMucGVlayhyLlRva2VuS2luZC5CTE9DS19TVFJJTkcpfSxzLnBhcnNlRGVzY3JpcHRpb249ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZXNjcmlwdGlvbigpKXJldHVybiB0aGlzLnBhcnNlU3RyaW5nTGl0ZXJhbCgpfSxzLnBhcnNlU2NoZW1hRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLG49dGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7dGhpcy5leHBlY3RLZXl3b3JkKFwic2NoZW1hXCIpO3ZhciB0PXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKSx1PXRoaXMubWFueShyLlRva2VuS2luZC5CUkFDRV9MLHRoaXMucGFyc2VPcGVyYXRpb25UeXBlRGVmaW5pdGlvbixyLlRva2VuS2luZC5CUkFDRV9SKTtyZXR1cm57a2luZDppLktpbmQuU0NIRU1BX0RFRklOSVRJT04sZGVzY3JpcHRpb246bixkaXJlY3RpdmVzOnQsb3BlcmF0aW9uVHlwZXM6dSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlT3BlcmF0aW9uVHlwZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbixuPXRoaXMucGFyc2VPcGVyYXRpb25UeXBlKCk7dGhpcy5leHBlY3RUb2tlbihyLlRva2VuS2luZC5DT0xPTik7dmFyIHQ9dGhpcy5wYXJzZU5hbWVkVHlwZSgpO3JldHVybntraW5kOmkuS2luZC5PUEVSQVRJT05fVFlQRV9ERUZJTklUSU9OLG9wZXJhdGlvbjpuLHR5cGU6dCxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlU2NhbGFyVHlwZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbixuPXRoaXMucGFyc2VEZXNjcmlwdGlvbigpO3RoaXMuZXhwZWN0S2V5d29yZChcInNjYWxhclwiKTt2YXIgdD10aGlzLnBhcnNlTmFtZSgpLHU9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApO3JldHVybntraW5kOmkuS2luZC5TQ0FMQVJfVFlQRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOm4sbmFtZTp0LGRpcmVjdGl2ZXM6dSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlT2JqZWN0VHlwZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbixuPXRoaXMucGFyc2VEZXNjcmlwdGlvbigpO3RoaXMuZXhwZWN0S2V5d29yZChcInR5cGVcIik7dmFyIHQ9dGhpcy5wYXJzZU5hbWUoKSx1PXRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpLHk9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLGY9dGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtyZXR1cm57a2luZDppLktpbmQuT0JKRUNUX1RZUEVfREVGSU5JVElPTixkZXNjcmlwdGlvbjpuLG5hbWU6dCxpbnRlcmZhY2VzOnUsZGlyZWN0aXZlczp5LGZpZWxkczpmLGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcz1mdW5jdGlvbigpe3ZhciBlO2lmKCF0aGlzLmV4cGVjdE9wdGlvbmFsS2V5d29yZChcImltcGxlbWVudHNcIikpcmV0dXJuW107aWYoKChlPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5hbGxvd0xlZ2FjeVNETEltcGxlbWVudHNJbnRlcmZhY2VzKT09PSEwKXt2YXIgbj1bXTt0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oci5Ub2tlbktpbmQuQU1QKTtkbyBuLnB1c2godGhpcy5wYXJzZU5hbWVkVHlwZSgpKTt3aGlsZSh0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oci5Ub2tlbktpbmQuQU1QKXx8dGhpcy5wZWVrKHIuVG9rZW5LaW5kLk5BTUUpKTtyZXR1cm4gbn1yZXR1cm4gdGhpcy5kZWxpbWl0ZWRNYW55KHIuVG9rZW5LaW5kLkFNUCx0aGlzLnBhcnNlTmFtZWRUeXBlKX0scy5wYXJzZUZpZWxkc0RlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4oKGU9dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLmFsbG93TGVnYWN5U0RMRW1wdHlGaWVsZHMpPT09ITAmJnRoaXMucGVlayhyLlRva2VuS2luZC5CUkFDRV9MKSYmdGhpcy5fbGV4ZXIubG9va2FoZWFkKCkua2luZD09PXIuVG9rZW5LaW5kLkJSQUNFX1I/KHRoaXMuX2xleGVyLmFkdmFuY2UoKSx0aGlzLl9sZXhlci5hZHZhbmNlKCksW10pOnRoaXMub3B0aW9uYWxNYW55KHIuVG9rZW5LaW5kLkJSQUNFX0wsdGhpcy5wYXJzZUZpZWxkRGVmaW5pdGlvbixyLlRva2VuS2luZC5CUkFDRV9SKX0scy5wYXJzZUZpZWxkRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLG49dGhpcy5wYXJzZURlc2NyaXB0aW9uKCksdD10aGlzLnBhcnNlTmFtZSgpLHU9dGhpcy5wYXJzZUFyZ3VtZW50RGVmcygpO3RoaXMuZXhwZWN0VG9rZW4oci5Ub2tlbktpbmQuQ09MT04pO3ZhciB5PXRoaXMucGFyc2VUeXBlUmVmZXJlbmNlKCksZj10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCk7cmV0dXJue2tpbmQ6aS5LaW5kLkZJRUxEX0RFRklOSVRJT04sZGVzY3JpcHRpb246bixuYW1lOnQsYXJndW1lbnRzOnUsdHlwZTp5LGRpcmVjdGl2ZXM6Zixsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlQXJndW1lbnREZWZzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KHIuVG9rZW5LaW5kLlBBUkVOX0wsdGhpcy5wYXJzZUlucHV0VmFsdWVEZWYsci5Ub2tlbktpbmQuUEFSRU5fUil9LHMucGFyc2VJbnB1dFZhbHVlRGVmPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sbj10aGlzLnBhcnNlRGVzY3JpcHRpb24oKSx0PXRoaXMucGFyc2VOYW1lKCk7dGhpcy5leHBlY3RUb2tlbihyLlRva2VuS2luZC5DT0xPTik7dmFyIHU9dGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKSx5O3RoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihyLlRva2VuS2luZC5FUVVBTFMpJiYoeT10aGlzLnBhcnNlVmFsdWVMaXRlcmFsKCEwKSk7dmFyIGY9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApO3JldHVybntraW5kOmkuS2luZC5JTlBVVF9WQUxVRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOm4sbmFtZTp0LHR5cGU6dSxkZWZhdWx0VmFsdWU6eSxkaXJlY3RpdmVzOmYsbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZUludGVyZmFjZVR5cGVEZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sbj10aGlzLnBhcnNlRGVzY3JpcHRpb24oKTt0aGlzLmV4cGVjdEtleXdvcmQoXCJpbnRlcmZhY2VcIik7dmFyIHQ9dGhpcy5wYXJzZU5hbWUoKSx1PXRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpLHk9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLGY9dGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtyZXR1cm57a2luZDppLktpbmQuSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTixkZXNjcmlwdGlvbjpuLG5hbWU6dCxpbnRlcmZhY2VzOnUsZGlyZWN0aXZlczp5LGZpZWxkczpmLGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VVbmlvblR5cGVEZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sbj10aGlzLnBhcnNlRGVzY3JpcHRpb24oKTt0aGlzLmV4cGVjdEtleXdvcmQoXCJ1bmlvblwiKTt2YXIgdD10aGlzLnBhcnNlTmFtZSgpLHU9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLHk9dGhpcy5wYXJzZVVuaW9uTWVtYmVyVHlwZXMoKTtyZXR1cm57a2luZDppLktpbmQuVU5JT05fVFlQRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOm4sbmFtZTp0LGRpcmVjdGl2ZXM6dSx0eXBlczp5LGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VVbmlvbk1lbWJlclR5cGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihyLlRva2VuS2luZC5FUVVBTFMpP3RoaXMuZGVsaW1pdGVkTWFueShyLlRva2VuS2luZC5QSVBFLHRoaXMucGFyc2VOYW1lZFR5cGUpOltdfSxzLnBhcnNlRW51bVR5cGVEZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sbj10aGlzLnBhcnNlRGVzY3JpcHRpb24oKTt0aGlzLmV4cGVjdEtleXdvcmQoXCJlbnVtXCIpO3ZhciB0PXRoaXMucGFyc2VOYW1lKCksdT10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCkseT10aGlzLnBhcnNlRW51bVZhbHVlc0RlZmluaXRpb24oKTtyZXR1cm57a2luZDppLktpbmQuRU5VTV9UWVBFX0RFRklOSVRJT04sZGVzY3JpcHRpb246bixuYW1lOnQsZGlyZWN0aXZlczp1LHZhbHVlczp5LGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VFbnVtVmFsdWVzRGVmaW5pdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbmFsTWFueShyLlRva2VuS2luZC5CUkFDRV9MLHRoaXMucGFyc2VFbnVtVmFsdWVEZWZpbml0aW9uLHIuVG9rZW5LaW5kLkJSQUNFX1IpfSxzLnBhcnNlRW51bVZhbHVlRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLG49dGhpcy5wYXJzZURlc2NyaXB0aW9uKCksdD10aGlzLnBhcnNlTmFtZSgpLHU9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApO3JldHVybntraW5kOmkuS2luZC5FTlVNX1ZBTFVFX0RFRklOSVRJT04sZGVzY3JpcHRpb246bixuYW1lOnQsZGlyZWN0aXZlczp1LGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sbj10aGlzLnBhcnNlRGVzY3JpcHRpb24oKTt0aGlzLmV4cGVjdEtleXdvcmQoXCJpbnB1dFwiKTt2YXIgdD10aGlzLnBhcnNlTmFtZSgpLHU9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLHk9dGhpcy5wYXJzZUlucHV0RmllbGRzRGVmaW5pdGlvbigpO3JldHVybntraW5kOmkuS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOm4sbmFtZTp0LGRpcmVjdGl2ZXM6dSxmaWVsZHM6eSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlSW5wdXRGaWVsZHNEZWZpbml0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KHIuVG9rZW5LaW5kLkJSQUNFX0wsdGhpcy5wYXJzZUlucHV0VmFsdWVEZWYsci5Ub2tlbktpbmQuQlJBQ0VfUil9LHMucGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIubG9va2FoZWFkKCk7aWYoZS5raW5kPT09ci5Ub2tlbktpbmQuTkFNRSlzd2l0Y2goZS52YWx1ZSl7Y2FzZVwic2NoZW1hXCI6cmV0dXJuIHRoaXMucGFyc2VTY2hlbWFFeHRlbnNpb24oKTtjYXNlXCJzY2FsYXJcIjpyZXR1cm4gdGhpcy5wYXJzZVNjYWxhclR5cGVFeHRlbnNpb24oKTtjYXNlXCJ0eXBlXCI6cmV0dXJuIHRoaXMucGFyc2VPYmplY3RUeXBlRXh0ZW5zaW9uKCk7Y2FzZVwiaW50ZXJmYWNlXCI6cmV0dXJuIHRoaXMucGFyc2VJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uKCk7Y2FzZVwidW5pb25cIjpyZXR1cm4gdGhpcy5wYXJzZVVuaW9uVHlwZUV4dGVuc2lvbigpO2Nhc2VcImVudW1cIjpyZXR1cm4gdGhpcy5wYXJzZUVudW1UeXBlRXh0ZW5zaW9uKCk7Y2FzZVwiaW5wdXRcIjpyZXR1cm4gdGhpcy5wYXJzZUlucHV0T2JqZWN0VHlwZUV4dGVuc2lvbigpfXRocm93IHRoaXMudW5leHBlY3RlZChlKX0scy5wYXJzZVNjaGVtYUV4dGVuc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3RoaXMuZXhwZWN0S2V5d29yZChcImV4dGVuZFwiKSx0aGlzLmV4cGVjdEtleXdvcmQoXCJzY2hlbWFcIik7dmFyIG49dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLHQ9dGhpcy5vcHRpb25hbE1hbnkoci5Ub2tlbktpbmQuQlJBQ0VfTCx0aGlzLnBhcnNlT3BlcmF0aW9uVHlwZURlZmluaXRpb24sci5Ub2tlbktpbmQuQlJBQ0VfUik7aWYobi5sZW5ndGg9PT0wJiZ0Lmxlbmd0aD09PTApdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7cmV0dXJue2tpbmQ6aS5LaW5kLlNDSEVNQV9FWFRFTlNJT04sZGlyZWN0aXZlczpuLG9wZXJhdGlvblR5cGVzOnQsbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZVNjYWxhclR5cGVFeHRlbnNpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjt0aGlzLmV4cGVjdEtleXdvcmQoXCJleHRlbmRcIiksdGhpcy5leHBlY3RLZXl3b3JkKFwic2NhbGFyXCIpO3ZhciBuPXRoaXMucGFyc2VOYW1lKCksdD10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCk7aWYodC5sZW5ndGg9PT0wKXRocm93IHRoaXMudW5leHBlY3RlZCgpO3JldHVybntraW5kOmkuS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT04sbmFtZTpuLGRpcmVjdGl2ZXM6dCxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlT2JqZWN0VHlwZUV4dGVuc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3RoaXMuZXhwZWN0S2V5d29yZChcImV4dGVuZFwiKSx0aGlzLmV4cGVjdEtleXdvcmQoXCJ0eXBlXCIpO3ZhciBuPXRoaXMucGFyc2VOYW1lKCksdD10aGlzLnBhcnNlSW1wbGVtZW50c0ludGVyZmFjZXMoKSx1PXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKSx5PXRoaXMucGFyc2VGaWVsZHNEZWZpbml0aW9uKCk7aWYodC5sZW5ndGg9PT0wJiZ1Lmxlbmd0aD09PTAmJnkubGVuZ3RoPT09MCl0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtyZXR1cm57a2luZDppLktpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OLG5hbWU6bixpbnRlcmZhY2VzOnQsZGlyZWN0aXZlczp1LGZpZWxkczp5LGxvYzp0aGlzLmxvYyhlKX19LHMucGFyc2VJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47dGhpcy5leHBlY3RLZXl3b3JkKFwiZXh0ZW5kXCIpLHRoaXMuZXhwZWN0S2V5d29yZChcImludGVyZmFjZVwiKTt2YXIgbj10aGlzLnBhcnNlTmFtZSgpLHQ9dGhpcy5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzKCksdT10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCkseT10aGlzLnBhcnNlRmllbGRzRGVmaW5pdGlvbigpO2lmKHQubGVuZ3RoPT09MCYmdS5sZW5ndGg9PT0wJiZ5Lmxlbmd0aD09PTApdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7cmV0dXJue2tpbmQ6aS5LaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTixuYW1lOm4saW50ZXJmYWNlczp0LGRpcmVjdGl2ZXM6dSxmaWVsZHM6eSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlVW5pb25UeXBlRXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47dGhpcy5leHBlY3RLZXl3b3JkKFwiZXh0ZW5kXCIpLHRoaXMuZXhwZWN0S2V5d29yZChcInVuaW9uXCIpO3ZhciBuPXRoaXMucGFyc2VOYW1lKCksdD10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCksdT10aGlzLnBhcnNlVW5pb25NZW1iZXJUeXBlcygpO2lmKHQubGVuZ3RoPT09MCYmdS5sZW5ndGg9PT0wKXRocm93IHRoaXMudW5leHBlY3RlZCgpO3JldHVybntraW5kOmkuS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTixuYW1lOm4sZGlyZWN0aXZlczp0LHR5cGVzOnUsbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZUVudW1UeXBlRXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47dGhpcy5leHBlY3RLZXl3b3JkKFwiZXh0ZW5kXCIpLHRoaXMuZXhwZWN0S2V5d29yZChcImVudW1cIik7dmFyIG49dGhpcy5wYXJzZU5hbWUoKSx0PXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKSx1PXRoaXMucGFyc2VFbnVtVmFsdWVzRGVmaW5pdGlvbigpO2lmKHQubGVuZ3RoPT09MCYmdS5sZW5ndGg9PT0wKXRocm93IHRoaXMudW5leHBlY3RlZCgpO3JldHVybntraW5kOmkuS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OLG5hbWU6bixkaXJlY3RpdmVzOnQsdmFsdWVzOnUsbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZUlucHV0T2JqZWN0VHlwZUV4dGVuc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3RoaXMuZXhwZWN0S2V5d29yZChcImV4dGVuZFwiKSx0aGlzLmV4cGVjdEtleXdvcmQoXCJpbnB1dFwiKTt2YXIgbj10aGlzLnBhcnNlTmFtZSgpLHQ9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLHU9dGhpcy5wYXJzZUlucHV0RmllbGRzRGVmaW5pdGlvbigpO2lmKHQubGVuZ3RoPT09MCYmdS5sZW5ndGg9PT0wKXRocm93IHRoaXMudW5leHBlY3RlZCgpO3JldHVybntraW5kOmkuS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT04sbmFtZTpuLGRpcmVjdGl2ZXM6dCxmaWVsZHM6dSxsb2M6dGhpcy5sb2MoZSl9fSxzLnBhcnNlRGlyZWN0aXZlRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLG49dGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7dGhpcy5leHBlY3RLZXl3b3JkKFwiZGlyZWN0aXZlXCIpLHRoaXMuZXhwZWN0VG9rZW4oci5Ub2tlbktpbmQuQVQpO3ZhciB0PXRoaXMucGFyc2VOYW1lKCksdT10aGlzLnBhcnNlQXJndW1lbnREZWZzKCkseT10aGlzLmV4cGVjdE9wdGlvbmFsS2V5d29yZChcInJlcGVhdGFibGVcIik7dGhpcy5leHBlY3RLZXl3b3JkKFwib25cIik7dmFyIGY9dGhpcy5wYXJzZURpcmVjdGl2ZUxvY2F0aW9ucygpO3JldHVybntraW5kOmkuS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTixkZXNjcmlwdGlvbjpuLG5hbWU6dCxhcmd1bWVudHM6dSxyZXBlYXRhYmxlOnksbG9jYXRpb25zOmYsbG9jOnRoaXMubG9jKGUpfX0scy5wYXJzZURpcmVjdGl2ZUxvY2F0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlbGltaXRlZE1hbnkoci5Ub2tlbktpbmQuUElQRSx0aGlzLnBhcnNlRGlyZWN0aXZlTG9jYXRpb24pfSxzLnBhcnNlRGlyZWN0aXZlTG9jYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbixuPXRoaXMucGFyc2VOYW1lKCk7aWYoRS5EaXJlY3RpdmVMb2NhdGlvbltuLnZhbHVlXSE9PXZvaWQgMClyZXR1cm4gbjt0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoZSl9LHMubG9jPWZ1bmN0aW9uKGUpe3ZhciBuO2lmKCgobj10aGlzLl9vcHRpb25zKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4ubm9Mb2NhdGlvbikhPT0hMClyZXR1cm4gbmV3IGMuTG9jYXRpb24oZSx0aGlzLl9sZXhlci5sYXN0VG9rZW4sdGhpcy5fbGV4ZXIuc291cmNlKX0scy5wZWVrPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9sZXhlci50b2tlbi5raW5kPT09ZX0scy5leHBlY3RUb2tlbj1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl9sZXhlci50b2tlbjtpZihuLmtpbmQ9PT1lKXJldHVybiB0aGlzLl9sZXhlci5hZHZhbmNlKCksbjt0aHJvdygwLGQuc3ludGF4RXJyb3IpKHRoaXMuX2xleGVyLnNvdXJjZSxuLnN0YXJ0LFwiRXhwZWN0ZWQgXCIuY29uY2F0KHYoZSksXCIsIGZvdW5kIFwiKS5jb25jYXQoRChuKSxcIi5cIikpfSxzLmV4cGVjdE9wdGlvbmFsVG9rZW49ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5fbGV4ZXIudG9rZW47aWYobi5raW5kPT09ZSlyZXR1cm4gdGhpcy5fbGV4ZXIuYWR2YW5jZSgpLG59LHMuZXhwZWN0S2V5d29yZD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl9sZXhlci50b2tlbjtpZihuLmtpbmQ9PT1yLlRva2VuS2luZC5OQU1FJiZuLnZhbHVlPT09ZSl0aGlzLl9sZXhlci5hZHZhbmNlKCk7ZWxzZSB0aHJvdygwLGQuc3ludGF4RXJyb3IpKHRoaXMuX2xleGVyLnNvdXJjZSxuLnN0YXJ0LCdFeHBlY3RlZCBcIicuY29uY2F0KGUsJ1wiLCBmb3VuZCAnKS5jb25jYXQoRChuKSxcIi5cIikpfSxzLmV4cGVjdE9wdGlvbmFsS2V5d29yZD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl9sZXhlci50b2tlbjtyZXR1cm4gbi5raW5kPT09ci5Ub2tlbktpbmQuTkFNRSYmbi52YWx1ZT09PWU/KHRoaXMuX2xleGVyLmFkdmFuY2UoKSwhMCk6ITF9LHMudW5leHBlY3RlZD1mdW5jdGlvbihlKXt2YXIgbj1lIT1udWxsP2U6dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJuKDAsZC5zeW50YXhFcnJvcikodGhpcy5fbGV4ZXIuc291cmNlLG4uc3RhcnQsXCJVbmV4cGVjdGVkIFwiLmNvbmNhdChEKG4pLFwiLlwiKSl9LHMuYW55PWZ1bmN0aW9uKGUsbix0KXt0aGlzLmV4cGVjdFRva2VuKGUpO2Zvcih2YXIgdT1bXTshdGhpcy5leHBlY3RPcHRpb25hbFRva2VuKHQpOyl1LnB1c2gobi5jYWxsKHRoaXMpKTtyZXR1cm4gdX0scy5vcHRpb25hbE1hbnk9ZnVuY3Rpb24oZSxuLHQpe2lmKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihlKSl7dmFyIHU9W107ZG8gdS5wdXNoKG4uY2FsbCh0aGlzKSk7d2hpbGUoIXRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbih0KSk7cmV0dXJuIHV9cmV0dXJuW119LHMubWFueT1mdW5jdGlvbihlLG4sdCl7dGhpcy5leHBlY3RUb2tlbihlKTt2YXIgdT1bXTtkbyB1LnB1c2gobi5jYWxsKHRoaXMpKTt3aGlsZSghdGhpcy5leHBlY3RPcHRpb25hbFRva2VuKHQpKTtyZXR1cm4gdX0scy5kZWxpbWl0ZWRNYW55PWZ1bmN0aW9uKGUsbil7dGhpcy5leHBlY3RPcHRpb25hbFRva2VuKGUpO3ZhciB0PVtdO2RvIHQucHVzaChuLmNhbGwodGhpcykpO3doaWxlKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihlKSk7cmV0dXJuIHR9LEl9KCk7YS5QYXJzZXI9ZztmdW5jdGlvbiBEKEkpe3ZhciBzPUkudmFsdWU7cmV0dXJuIHYoSS5raW5kKSsocyE9bnVsbD8nIFwiJy5jb25jYXQocywnXCInKTpcIlwiKX1mdW5jdGlvbiB2KEkpe3JldHVybigwLGsuaXNQdW5jdHVhdG9yVG9rZW5LaW5kKShJKT8nXCInLmNvbmNhdChJLCdcIicpOkl9fX0pO0soKTt2YXIgSWU9Y2UoKSxnZT11ZSgpLHtoYXNQcmFnbWE6U2V9PWxlKCkse2xvY1N0YXJ0OkFlLGxvY0VuZDpEZX09cGUoKTtmdW5jdGlvbiBLZShhKXtsZXQgZD1bXSx7c3RhcnRUb2tlbjppfT1hLmxvYyx7bmV4dDpjfT1pO2Zvcig7Yy5raW5kIT09XCI8RU9GPlwiOyljLmtpbmQ9PT1cIkNvbW1lbnRcIiYmKE9iamVjdC5hc3NpZ24oYyx7Y29sdW1uOmMuY29sdW1uLTF9KSxkLnB1c2goYykpLGM9Yy5uZXh0O3JldHVybiBkfWZ1bmN0aW9uIGllKGEpe2lmKGEmJnR5cGVvZiBhPT1cIm9iamVjdFwiKXtkZWxldGUgYS5zdGFydFRva2VuLGRlbGV0ZSBhLmVuZFRva2VuLGRlbGV0ZSBhLnByZXYsZGVsZXRlIGEubmV4dDtmb3IobGV0IGQgaW4gYSlpZShhW2RdKX1yZXR1cm4gYX12YXIgWD17YWxsb3dMZWdhY3lTRExJbXBsZW1lbnRzSW50ZXJmYWNlczohMSxleHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlczohMH07ZnVuY3Rpb24gTGUoYSl7bGV0e0dyYXBoUUxFcnJvcjpkfT1XKCk7aWYoYSBpbnN0YW5jZW9mIGQpe2xldHttZXNzYWdlOmksbG9jYXRpb25zOltjXX09YTtyZXR1cm4gSWUoaSx7c3RhcnQ6Y30pfXJldHVybiBhfWZ1bmN0aW9uIHhlKGEpe2xldHtwYXJzZTpkfT1PZSgpLHtyZXN1bHQ6aSxlcnJvcjpjfT1nZSgoKT0+ZChhLE9iamVjdC5hc3NpZ24oe30sWCkpLCgpPT5kKGEsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LFgpLHt9LHthbGxvd0xlZ2FjeVNETEltcGxlbWVudHNJbnRlcmZhY2VzOiEwfSkpKTtpZighaSl0aHJvdyBMZShjKTtyZXR1cm4gaS5jb21tZW50cz1LZShpKSxpZShpKSxpfWFlLmV4cG9ydHM9e3BhcnNlcnM6e2dyYXBocWw6e3BhcnNlOnhlLGFzdEZvcm1hdDpcImdyYXBocWxcIixoYXNQcmFnbWE6U2UsbG9jU3RhcnQ6QWUsbG9jRW5kOkRlfX19fSk7cmV0dXJuIGJlKCk7fSk7IiwgIihmdW5jdGlvbihlKXtpZih0eXBlb2YgZXhwb3J0cz09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZT09XCJvYmplY3RcIiltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpZGVmaW5lKGUpO2Vsc2V7dmFyIGk9dHlwZW9mIGdsb2JhbFRoaXM8XCJ1XCI/Z2xvYmFsVGhpczp0eXBlb2YgZ2xvYmFsPFwidVwiP2dsb2JhbDp0eXBlb2Ygc2VsZjxcInVcIj9zZWxmOnRoaXN8fHt9O2kucHJldHRpZXJQbHVnaW5zPWkucHJldHRpZXJQbHVnaW5zfHx7fSxpLnByZXR0aWVyUGx1Z2lucy5tYXJrZG93bj1lKCl9fSkoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgSD0oZSxyKT0+KCk9PihyfHxlKChyPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxyKSxyLmV4cG9ydHMpO3ZhciB1ZT1IKCh1ZixBdSk9Pnt2YXIgdXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09TWF0aCYmZX07QXUuZXhwb3J0cz11cih0eXBlb2YgZ2xvYmFsVGhpcz09XCJvYmplY3RcIiYmZ2xvYmFsVGhpcyl8fHVyKHR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCImJndpbmRvdyl8fHVyKHR5cGVvZiBzZWxmPT1cIm9iamVjdFwiJiZzZWxmKXx8dXIodHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfSk7dmFyIEFlPUgoKHRmLHh1KT0+e3h1LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoe3JldHVybiEwfX19KTt2YXIgX2U9SCgobmYsYnUpPT57dmFyIGNhPUFlKCk7YnUuZXhwb3J0cz0hY2EoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT03fSl9KTt2YXIgdHI9SCgoYWYseXUpPT57dmFyIGxhPUFlKCk7eXUuZXhwb3J0cz0hbGEoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiB0eXBlb2YgZSE9XCJmdW5jdGlvblwifHxlLmhhc093blByb3BlcnR5KFwicHJvdG90eXBlXCIpfSl9KTt2YXIgT2U9SCgob2YsQnUpPT57dmFyIERhPXRyKCksbnI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7QnUuZXhwb3J0cz1EYT9uci5iaW5kKG5yKTpmdW5jdGlvbigpe3JldHVybiBuci5hcHBseShucixhcmd1bWVudHMpfX0pO3ZhciBfdT1IKHF1PT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHd1PXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGt1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZmE9a3UmJiF3dS5jYWxsKHsxOjJ9LDEpO3F1LmY9ZmE/ZnVuY3Rpb24ocil7dmFyIHU9a3UodGhpcyxyKTtyZXR1cm4hIXUmJnUuZW51bWVyYWJsZX06d3V9KTt2YXIgaXI9SCgoY2YsT3UpPT57T3UuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3JldHVybntlbnVtZXJhYmxlOiEoZSYxKSxjb25maWd1cmFibGU6IShlJjIpLHdyaXRhYmxlOiEoZSY0KSx2YWx1ZTpyfX19KTt2YXIgdmU9SCgobGYsVHUpPT57dmFyIEl1PXRyKCksU3U9RnVuY3Rpb24ucHJvdG90eXBlLHBhPVN1LmJpbmQsQnI9U3UuY2FsbCxkYT1JdSYmcGEuYmluZChCcixCcik7VHUuZXhwb3J0cz1JdT9mdW5jdGlvbihlKXtyZXR1cm4gZSYmZGEoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZmdW5jdGlvbigpe3JldHVybiBCci5hcHBseShlLGFyZ3VtZW50cyl9fX0pO3ZhciBhcj1IKChEZixMdSk9Pnt2YXIgTnU9dmUoKSxoYT1OdSh7fS50b1N0cmluZyksdmE9TnUoXCJcIi5zbGljZSk7THUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdmEoaGEoZSksOCwtMSl9fSk7dmFyIGp1PUgoKGZmLFJ1KT0+e3ZhciBtYT11ZSgpLEVhPXZlKCksQ2E9QWUoKSxnYT1hcigpLHdyPW1hLk9iamVjdCxGYT1FYShcIlwiLnNwbGl0KTtSdS5leHBvcnRzPUNhKGZ1bmN0aW9uKCl7cmV0dXJuIXdyKFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKGUpe3JldHVybiBnYShlKT09XCJTdHJpbmdcIj9GYShlLFwiXCIpOndyKGUpfTp3cn0pO3ZhciBrcj1IKChwZixQdSk9Pnt2YXIgQWE9dWUoKSx4YT1BYS5UeXBlRXJyb3I7UHUuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlPT1udWxsKXRocm93IHhhKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIrZSk7cmV0dXJuIGV9fSk7dmFyIG9yPUgoKGRmLE11KT0+e3ZhciBiYT1qdSgpLHlhPWtyKCk7TXUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYmEoeWEoZSkpfX0pO3ZhciBtZT1IKChoZix6dSk9Pnt6dS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJmdW5jdGlvblwifX0pO3ZhciBJZT1IKCh2ZixHdSk9Pnt2YXIgQmE9bWUoKTtHdS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJvYmplY3RcIj9lIT09bnVsbDpCYShlKX19KTt2YXIgSGU9SCgobWYsVXUpPT57dmFyIHFyPXVlKCksd2E9bWUoKSxrYT1mdW5jdGlvbihlKXtyZXR1cm4gd2EoZSk/ZTp2b2lkIDB9O1V1LmV4cG9ydHM9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP2thKHFyW2VdKTpxcltlXSYmcXJbZV1bcl19fSk7dmFyIF9yPUgoKEVmLFZ1KT0+e3ZhciBxYT12ZSgpO1Z1LmV4cG9ydHM9cWEoe30uaXNQcm90b3R5cGVPZil9KTt2YXIgSHU9SCgoQ2YsJHUpPT57dmFyIF9hPUhlKCk7JHUuZXhwb3J0cz1fYShcIm5hdmlnYXRvclwiLFwidXNlckFnZW50XCIpfHxcIlwifSk7dmFyIFF1PUgoKGdmLFp1KT0+e3ZhciBKdT11ZSgpLE9yPUh1KCksWHU9SnUucHJvY2VzcyxXdT1KdS5EZW5vLEt1PVh1JiZYdS52ZXJzaW9uc3x8V3UmJld1LnZlcnNpb24sWXU9S3UmJkt1LnY4LEVlLHNyO1l1JiYoRWU9WXUuc3BsaXQoXCIuXCIpLHNyPUVlWzBdPjAmJkVlWzBdPDQ/MTorKEVlWzBdK0VlWzFdKSk7IXNyJiZPciYmKEVlPU9yLm1hdGNoKC9FZGdlXFwvKFxcZCspLyksKCFFZXx8RWVbMV0+PTc0KSYmKEVlPU9yLm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKSxFZSYmKHNyPStFZVsxXSkpKTtadS5leHBvcnRzPXNyfSk7dmFyIElyPUgoKEZmLHJ0KT0+e3ZhciBldD1RdSgpLE9hPUFlKCk7cnQuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFPYShmdW5jdGlvbigpe3ZhciBlPVN5bWJvbCgpO3JldHVybiFTdHJpbmcoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmV0JiZldDw0MX0pfSk7dmFyIFNyPUgoKEFmLHV0KT0+e3ZhciBJYT1JcigpO3V0LmV4cG9ydHM9SWEmJiFTeW1ib2wuc2hhbSYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09XCJzeW1ib2xcIn0pO3ZhciBUcj1IKCh4Zix0dCk9Pnt2YXIgU2E9dWUoKSxUYT1IZSgpLE5hPW1lKCksTGE9X3IoKSxSYT1TcigpLGphPVNhLk9iamVjdDt0dC5leHBvcnRzPVJhP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJzeW1ib2xcIn06ZnVuY3Rpb24oZSl7dmFyIHI9VGEoXCJTeW1ib2xcIik7cmV0dXJuIE5hKHIpJiZMYShyLnByb3RvdHlwZSxqYShlKSl9fSk7dmFyIGNyPUgoKGJmLG50KT0+e3ZhciBQYT11ZSgpLE1hPVBhLlN0cmluZztudC5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gTWEoZSl9Y2F0Y2h7cmV0dXJuXCJPYmplY3RcIn19fSk7dmFyIFhlPUgoKHlmLGl0KT0+e3ZhciB6YT11ZSgpLEdhPW1lKCksVWE9Y3IoKSxWYT16YS5UeXBlRXJyb3I7aXQuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihHYShlKSlyZXR1cm4gZTt0aHJvdyBWYShVYShlKStcIiBpcyBub3QgYSBmdW5jdGlvblwiKX19KTt2YXIgbHI9SCgoQmYsYXQpPT57dmFyICRhPVhlKCk7YXQuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3ZhciB1PWVbcl07cmV0dXJuIHU9PW51bGw/dm9pZCAwOiRhKHUpfX0pO3ZhciBzdD1IKCh3ZixvdCk9Pnt2YXIgSGE9dWUoKSxOcj1PZSgpLExyPW1lKCksUnI9SWUoKSxYYT1IYS5UeXBlRXJyb3I7b3QuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3ZhciB1LHQ7aWYocj09PVwic3RyaW5nXCImJkxyKHU9ZS50b1N0cmluZykmJiFScih0PU5yKHUsZSkpfHxMcih1PWUudmFsdWVPZikmJiFScih0PU5yKHUsZSkpfHxyIT09XCJzdHJpbmdcIiYmTHIodT1lLnRvU3RyaW5nKSYmIVJyKHQ9TnIodSxlKSkpcmV0dXJuIHQ7dGhyb3cgWGEoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9fSk7dmFyIGx0PUgoKGtmLGN0KT0+e2N0LmV4cG9ydHM9ITF9KTt2YXIgRHI9SCgocWYsZnQpPT57dmFyIER0PXVlKCksV2E9T2JqZWN0LmRlZmluZVByb3BlcnR5O2Z0LmV4cG9ydHM9ZnVuY3Rpb24oZSxyKXt0cnl7V2EoRHQsZSx7dmFsdWU6cixjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaHtEdFtlXT1yfXJldHVybiByfX0pO3ZhciBmcj1IKChfZixkdCk9Pnt2YXIgS2E9dWUoKSxZYT1EcigpLHB0PVwiX19jb3JlLWpzX3NoYXJlZF9fXCIsSmE9S2FbcHRdfHxZYShwdCx7fSk7ZHQuZXhwb3J0cz1KYX0pO3ZhciBqcj1IKChPZix2dCk9Pnt2YXIgWmE9bHQoKSxodD1mcigpOyh2dC5leHBvcnRzPWZ1bmN0aW9uKGUscil7cmV0dXJuIGh0W2VdfHwoaHRbZV09ciE9PXZvaWQgMD9yOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpcIjMuMjIuMlwiLG1vZGU6WmE/XCJwdXJlXCI6XCJnbG9iYWxcIixjb3B5cmlnaHQ6XCJcXHhBOSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlcIixsaWNlbnNlOlwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMi4yL0xJQ0VOU0VcIixzb3VyY2U6XCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qc1wifSl9KTt2YXIgUHI9SCgoSWYsbXQpPT57dmFyIFFhPXVlKCksZW89a3IoKSxybz1RYS5PYmplY3Q7bXQuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcm8oZW8oZSkpfX0pO3ZhciBCZT1IKChTZixFdCk9Pnt2YXIgdW89dmUoKSx0bz1QcigpLG5vPXVvKHt9Lmhhc093blByb3BlcnR5KTtFdC5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKHIsdSl7cmV0dXJuIG5vKHRvKHIpLHUpfX0pO3ZhciBNcj1IKChUZixDdCk9Pnt2YXIgaW89dmUoKSxhbz0wLG9vPU1hdGgucmFuZG9tKCksc289aW8oMSAudG9TdHJpbmcpO0N0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJTeW1ib2woXCIrKGU9PT12b2lkIDA/XCJcIjplKStcIilfXCIrc28oKythbytvbywzNil9fSk7dmFyIFRlPUgoKE5mLGJ0KT0+e3ZhciBjbz11ZSgpLGxvPWpyKCksZ3Q9QmUoKSxEbz1NcigpLEZ0PUlyKCkseHQ9U3IoKSxMZT1sbyhcIndrc1wiKSxTZT1jby5TeW1ib2wsQXQ9U2UmJlNlLmZvcixmbz14dD9TZTpTZSYmU2Uud2l0aG91dFNldHRlcnx8RG87YnQuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighZ3QoTGUsZSl8fCEoRnR8fHR5cGVvZiBMZVtlXT09XCJzdHJpbmdcIikpe3ZhciByPVwiU3ltYm9sLlwiK2U7RnQmJmd0KFNlLGUpP0xlW2VdPVNlW2VdOnh0JiZBdD9MZVtlXT1BdChyKTpMZVtlXT1mbyhyKX1yZXR1cm4gTGVbZV19fSk7dmFyIGt0PUgoKExmLHd0KT0+e3ZhciBwbz11ZSgpLGhvPU9lKCkseXQ9SWUoKSxCdD1UcigpLHZvPWxyKCksbW89c3QoKSxFbz1UZSgpLENvPXBvLlR5cGVFcnJvcixnbz1FbyhcInRvUHJpbWl0aXZlXCIpO3d0LmV4cG9ydHM9ZnVuY3Rpb24oZSxyKXtpZigheXQoZSl8fEJ0KGUpKXJldHVybiBlO3ZhciB1PXZvKGUsZ28pLHQ7aWYodSl7aWYocj09PXZvaWQgMCYmKHI9XCJkZWZhdWx0XCIpLHQ9aG8odSxlLHIpLCF5dCh0KXx8QnQodCkpcmV0dXJuIHQ7dGhyb3cgQ28oXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9cmV0dXJuIHI9PT12b2lkIDAmJihyPVwibnVtYmVyXCIpLG1vKGUscil9fSk7dmFyIHByPUgoKFJmLHF0KT0+e3ZhciBGbz1rdCgpLEFvPVRyKCk7cXQuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcj1GbyhlLFwic3RyaW5nXCIpO3JldHVybiBBbyhyKT9yOnIrXCJcIn19KTt2YXIgSXQ9SCgoamYsT3QpPT57dmFyIHhvPXVlKCksX3Q9SWUoKSx6cj14by5kb2N1bWVudCxibz1fdCh6cikmJl90KHpyLmNyZWF0ZUVsZW1lbnQpO090LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGJvP3pyLmNyZWF0ZUVsZW1lbnQoZSk6e319fSk7dmFyIEdyPUgoKFBmLFN0KT0+e3ZhciB5bz1fZSgpLEJvPUFlKCksd289SXQoKTtTdC5leHBvcnRzPSF5byYmIUJvKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3byhcImRpdlwiKSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYSE9N30pfSk7dmFyIFVyPUgoTnQ9Pnt2YXIga289X2UoKSxxbz1PZSgpLF9vPV91KCksT289aXIoKSxJbz1vcigpLFNvPXByKCksVG89QmUoKSxObz1HcigpLFR0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7TnQuZj1rbz9UdDpmdW5jdGlvbihyLHUpe2lmKHI9SW8ociksdT1Tbyh1KSxObyl0cnl7cmV0dXJuIFR0KHIsdSl9Y2F0Y2h7fWlmKFRvKHIsdSkpcmV0dXJuIE9vKCFxbyhfby5mLHIsdSksclt1XSl9fSk7dmFyIFJ0PUgoKHpmLEx0KT0+e3ZhciBMbz1fZSgpLFJvPUFlKCk7THQuZXhwb3J0cz1MbyYmUm8oZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7fSxcInByb3RvdHlwZVwiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZSE9NDJ9KX0pO3ZhciBSZT1IKChHZixQdCk9Pnt2YXIganQ9dWUoKSxqbz1JZSgpLFBvPWp0LlN0cmluZyxNbz1qdC5UeXBlRXJyb3I7UHQuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihqbyhlKSlyZXR1cm4gZTt0aHJvdyBNbyhQbyhlKStcIiBpcyBub3QgYW4gb2JqZWN0XCIpfX0pO3ZhciBocj1IKHp0PT57dmFyIHpvPXVlKCksR289X2UoKSxVbz1HcigpLFZvPVJ0KCksZHI9UmUoKSxNdD1wcigpLCRvPXpvLlR5cGVFcnJvcixWcj1PYmplY3QuZGVmaW5lUHJvcGVydHksSG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwkcj1cImVudW1lcmFibGVcIixIcj1cImNvbmZpZ3VyYWJsZVwiLFhyPVwid3JpdGFibGVcIjt6dC5mPUdvP1ZvP2Z1bmN0aW9uKHIsdSx0KXtpZihkcihyKSx1PU10KHUpLGRyKHQpLHR5cGVvZiByPT1cImZ1bmN0aW9uXCImJnU9PT1cInByb3RvdHlwZVwiJiZcInZhbHVlXCJpbiB0JiZYciBpbiB0JiYhdFtYcl0pe3ZhciBvPUhvKHIsdSk7byYmb1tYcl0mJihyW3VdPXQudmFsdWUsdD17Y29uZmlndXJhYmxlOkhyIGluIHQ/dFtIcl06b1tIcl0sZW51bWVyYWJsZTokciBpbiB0P3RbJHJdOm9bJHJdLHdyaXRhYmxlOiExfSl9cmV0dXJuIFZyKHIsdSx0KX06VnI6ZnVuY3Rpb24ocix1LHQpe2lmKGRyKHIpLHU9TXQodSksZHIodCksVW8pdHJ5e3JldHVybiBWcihyLHUsdCl9Y2F0Y2h7fWlmKFwiZ2V0XCJpbiB0fHxcInNldFwiaW4gdCl0aHJvdyAkbyhcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkXCIpO3JldHVyblwidmFsdWVcImluIHQmJihyW3VdPXQudmFsdWUpLHJ9fSk7dmFyIHZyPUgoKFZmLEd0KT0+e3ZhciBYbz1fZSgpLFdvPWhyKCksS289aXIoKTtHdC5leHBvcnRzPVhvP2Z1bmN0aW9uKGUscix1KXtyZXR1cm4gV28uZihlLHIsS28oMSx1KSl9OmZ1bmN0aW9uKGUscix1KXtyZXR1cm4gZVtyXT11LGV9fSk7dmFyIG1yPUgoKCRmLFV0KT0+e3ZhciBZbz12ZSgpLEpvPW1lKCksV3I9ZnIoKSxabz1ZbyhGdW5jdGlvbi50b1N0cmluZyk7Sm8oV3IuaW5zcGVjdFNvdXJjZSl8fChXci5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBabyhlKX0pO1V0LmV4cG9ydHM9V3IuaW5zcGVjdFNvdXJjZX0pO3ZhciBIdD1IKChIZiwkdCk9Pnt2YXIgUW89dWUoKSxlcz1tZSgpLHJzPW1yKCksVnQ9UW8uV2Vha01hcDskdC5leHBvcnRzPWVzKFZ0KSYmL25hdGl2ZSBjb2RlLy50ZXN0KHJzKFZ0KSl9KTt2YXIgS3Q9SCgoWGYsV3QpPT57dmFyIHVzPWpyKCksdHM9TXIoKSxYdD11cyhcImtleXNcIik7V3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gWHRbZV18fChYdFtlXT10cyhlKSl9fSk7dmFyIEtyPUgoKFdmLFl0KT0+e1l0LmV4cG9ydHM9e319KTt2YXIgdW49SCgoS2Yscm4pPT57dmFyIG5zPUh0KCksZW49dWUoKSxZcj12ZSgpLGlzPUllKCksYXM9dnIoKSxKcj1CZSgpLFpyPWZyKCksb3M9S3QoKSxzcz1LcigpLEp0PVwiT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWRcIixldT1lbi5UeXBlRXJyb3IsY3M9ZW4uV2Vha01hcCxFcixXZSxDcixscz1mdW5jdGlvbihlKXtyZXR1cm4gQ3IoZSk/V2UoZSk6RXIoZSx7fSl9LERzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgdTtpZighaXMocil8fCh1PVdlKHIpKS50eXBlIT09ZSl0aHJvdyBldShcIkluY29tcGF0aWJsZSByZWNlaXZlciwgXCIrZStcIiByZXF1aXJlZFwiKTtyZXR1cm4gdX19O25zfHxaci5zdGF0ZT8od2U9WnIuc3RhdGV8fChaci5zdGF0ZT1uZXcgY3MpLFp0PVlyKHdlLmdldCksUXI9WXIod2UuaGFzKSxRdD1Zcih3ZS5zZXQpLEVyPWZ1bmN0aW9uKGUscil7aWYoUXIod2UsZSkpdGhyb3cgbmV3IGV1KEp0KTtyZXR1cm4gci5mYWNhZGU9ZSxRdCh3ZSxlLHIpLHJ9LFdlPWZ1bmN0aW9uKGUpe3JldHVybiBadCh3ZSxlKXx8e319LENyPWZ1bmN0aW9uKGUpe3JldHVybiBRcih3ZSxlKX0pOihOZT1vcyhcInN0YXRlXCIpLHNzW05lXT0hMCxFcj1mdW5jdGlvbihlLHIpe2lmKEpyKGUsTmUpKXRocm93IG5ldyBldShKdCk7cmV0dXJuIHIuZmFjYWRlPWUsYXMoZSxOZSxyKSxyfSxXZT1mdW5jdGlvbihlKXtyZXR1cm4gSnIoZSxOZSk/ZVtOZV06e319LENyPWZ1bmN0aW9uKGUpe3JldHVybiBKcihlLE5lKX0pO3ZhciB3ZSxadCxRcixRdCxOZTtybi5leHBvcnRzPXtzZXQ6RXIsZ2V0OldlLGhhczpDcixlbmZvcmNlOmxzLGdldHRlckZvcjpEc319KTt2YXIgYW49SCgoWWYsbm4pPT57dmFyIHJ1PV9lKCksZnM9QmUoKSx0bj1GdW5jdGlvbi5wcm90b3R5cGUscHM9cnUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdXU9ZnModG4sXCJuYW1lXCIpLGRzPXV1JiZmdW5jdGlvbigpe30ubmFtZT09PVwic29tZXRoaW5nXCIsaHM9dXUmJighcnV8fHJ1JiZwcyh0bixcIm5hbWVcIikuY29uZmlndXJhYmxlKTtubi5leHBvcnRzPXtFWElTVFM6dXUsUFJPUEVSOmRzLENPTkZJR1VSQUJMRTpoc319KTt2YXIgRG49SCgoSmYsbG4pPT57dmFyIHZzPXVlKCksb249bWUoKSxtcz1CZSgpLHNuPXZyKCksRXM9RHIoKSxDcz1tcigpLGNuPXVuKCksZ3M9YW4oKS5DT05GSUdVUkFCTEUsRnM9Y24uZ2V0LEFzPWNuLmVuZm9yY2UseHM9U3RyaW5nKFN0cmluZykuc3BsaXQoXCJTdHJpbmdcIik7KGxuLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHUsdCl7dmFyIG89dD8hIXQudW5zYWZlOiExLG49dD8hIXQuZW51bWVyYWJsZTohMSxzPXQ/ISF0Lm5vVGFyZ2V0R2V0OiExLGM9dCYmdC5uYW1lIT09dm9pZCAwP3QubmFtZTpyLGk7aWYob24odSkmJihTdHJpbmcoYykuc2xpY2UoMCw3KT09PVwiU3ltYm9sKFwiJiYoYz1cIltcIitTdHJpbmcoYykucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLFwiJDFcIikrXCJdXCIpLCghbXModSxcIm5hbWVcIil8fGdzJiZ1Lm5hbWUhPT1jKSYmc24odSxcIm5hbWVcIixjKSxpPUFzKHUpLGkuc291cmNlfHwoaS5zb3VyY2U9eHMuam9pbih0eXBlb2YgYz09XCJzdHJpbmdcIj9jOlwiXCIpKSksZT09PXZzKXtuP2Vbcl09dTpFcyhyLHUpO3JldHVybn1lbHNlIG8/IXMmJmVbcl0mJihuPSEwKTpkZWxldGUgZVtyXTtuP2Vbcl09dTpzbihlLHIsdSl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIG9uKHRoaXMpJiZGcyh0aGlzKS5zb3VyY2V8fENzKHRoaXMpfSl9KTt2YXIgdHU9SCgoWmYsZm4pPT57dmFyIGJzPU1hdGguY2VpbCx5cz1NYXRoLmZsb29yO2ZuLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHI9K2U7cmV0dXJuIHIhPT1yfHxyPT09MD8wOihyPjA/eXM6YnMpKHIpfX0pO3ZhciBkbj1IKChRZixwbik9Pnt2YXIgQnM9dHUoKSx3cz1NYXRoLm1heCxrcz1NYXRoLm1pbjtwbi5leHBvcnRzPWZ1bmN0aW9uKGUscil7dmFyIHU9QnMoZSk7cmV0dXJuIHU8MD93cyh1K3IsMCk6a3ModSxyKX19KTt2YXIgdm49SCgoZXAsaG4pPT57dmFyIHFzPXR1KCksX3M9TWF0aC5taW47aG4uZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP19zKHFzKGUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSk7dmFyIEtlPUgoKHJwLG1uKT0+e3ZhciBPcz12bigpO21uLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9zKGUubGVuZ3RoKX19KTt2YXIgZ249SCgodXAsQ24pPT57dmFyIElzPW9yKCksU3M9ZG4oKSxUcz1LZSgpLEVuPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihyLHUsdCl7dmFyIG89SXMociksbj1UcyhvKSxzPVNzKHQsbiksYztpZihlJiZ1IT11KXtmb3IoO24+czspaWYoYz1vW3MrK10sYyE9YylyZXR1cm4hMH1lbHNlIGZvcig7bj5zO3MrKylpZigoZXx8cyBpbiBvKSYmb1tzXT09PXUpcmV0dXJuIGV8fHN8fDA7cmV0dXJuIWUmJi0xfX07Q24uZXhwb3J0cz17aW5jbHVkZXM6RW4oITApLGluZGV4T2Y6RW4oITEpfX0pO3ZhciB4bj1IKCh0cCxBbik9Pnt2YXIgTnM9dmUoKSxudT1CZSgpLExzPW9yKCksUnM9Z24oKS5pbmRleE9mLGpzPUtyKCksRm49TnMoW10ucHVzaCk7QW4uZXhwb3J0cz1mdW5jdGlvbihlLHIpe3ZhciB1PUxzKGUpLHQ9MCxvPVtdLG47Zm9yKG4gaW4gdSkhbnUoanMsbikmJm51KHUsbikmJkZuKG8sbik7Zm9yKDtyLmxlbmd0aD50OyludSh1LG49clt0KytdKSYmKH5ScyhvLG4pfHxGbihvLG4pKTtyZXR1cm4gb319KTt2YXIgeW49SCgobnAsYm4pPT57Ym4uZXhwb3J0cz1bXCJjb25zdHJ1Y3RvclwiLFwiaGFzT3duUHJvcGVydHlcIixcImlzUHJvdG90eXBlT2ZcIixcInByb3BlcnR5SXNFbnVtZXJhYmxlXCIsXCJ0b0xvY2FsZVN0cmluZ1wiLFwidG9TdHJpbmdcIixcInZhbHVlT2ZcIl19KTt2YXIgd249SChCbj0+e3ZhciBQcz14bigpLE1zPXluKCksenM9TXMuY29uY2F0KFwibGVuZ3RoXCIsXCJwcm90b3R5cGVcIik7Qm4uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24ocil7cmV0dXJuIFBzKHIsenMpfX0pO3ZhciBxbj1IKGtuPT57a24uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSk7dmFyIE9uPUgoKG9wLF9uKT0+e3ZhciBHcz1IZSgpLFVzPXZlKCksVnM9d24oKSwkcz1xbigpLEhzPVJlKCksWHM9VXMoW10uY29uY2F0KTtfbi5leHBvcnRzPUdzKFwiUmVmbGVjdFwiLFwib3duS2V5c1wiKXx8ZnVuY3Rpb24ocil7dmFyIHU9VnMuZihIcyhyKSksdD0kcy5mO3JldHVybiB0P1hzKHUsdChyKSk6dX19KTt2YXIgVG49SCgoc3AsU24pPT57dmFyIEluPUJlKCksV3M9T24oKSxLcz1VcigpLFlzPWhyKCk7U24uZXhwb3J0cz1mdW5jdGlvbihlLHIsdSl7Zm9yKHZhciB0PVdzKHIpLG89WXMuZixuPUtzLmYscz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgYz10W3NdOyFJbihlLGMpJiYhKHUmJkluKHUsYykpJiZvKGUsYyxuKHIsYykpfX19KTt2YXIgTG49SCgoY3AsTm4pPT57dmFyIEpzPUFlKCksWnM9bWUoKSxRcz0vI3xcXC5wcm90b3R5cGVcXC4vLFllPWZ1bmN0aW9uKGUscil7dmFyIHU9cmNbZWMoZSldO3JldHVybiB1PT10Yz8hMDp1PT11Yz8hMTpacyhyKT9KcyhyKTohIXJ9LGVjPVllLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoUXMsXCIuXCIpLnRvTG93ZXJDYXNlKCl9LHJjPVllLmRhdGE9e30sdWM9WWUuTkFUSVZFPVwiTlwiLHRjPVllLlBPTFlGSUxMPVwiUFwiO05uLmV4cG9ydHM9WWV9KTt2YXIgYXU9SCgobHAsUm4pPT57dmFyIGl1PXVlKCksbmM9VXIoKS5mLGljPXZyKCksYWM9RG4oKSxvYz1EcigpLHNjPVRuKCksY2M9TG4oKTtSbi5leHBvcnRzPWZ1bmN0aW9uKGUscil7dmFyIHU9ZS50YXJnZXQsdD1lLmdsb2JhbCxvPWUuc3RhdCxuLHMsYyxpLEQsYTtpZih0P3M9aXU6bz9zPWl1W3VdfHxvYyh1LHt9KTpzPShpdVt1XXx8e30pLnByb3RvdHlwZSxzKWZvcihjIGluIHIpe2lmKEQ9cltjXSxlLm5vVGFyZ2V0R2V0PyhhPW5jKHMsYyksaT1hJiZhLnZhbHVlKTppPXNbY10sbj1jYyh0P2M6dSsobz9cIi5cIjpcIiNcIikrYyxlLmZvcmNlZCksIW4mJmkhPT12b2lkIDApe2lmKHR5cGVvZiBEPT10eXBlb2YgaSljb250aW51ZTtzYyhELGkpfShlLnNoYW18fGkmJmkuc2hhbSkmJmljKEQsXCJzaGFtXCIsITApLGFjKHMsYyxELGUpfX19KTt2YXIgb3U9SCgoRHAsam4pPT57dmFyIGxjPWFyKCk7am4uZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihyKXtyZXR1cm4gbGMocik9PVwiQXJyYXlcIn19KTt2YXIgc3U9SCgoZnAsTW4pPT57dmFyIFBuPXZlKCksRGM9WGUoKSxmYz10cigpLHBjPVBuKFBuLmJpbmQpO01uLmV4cG9ydHM9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gRGMoZSkscj09PXZvaWQgMD9lOmZjP3BjKGUscik6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShyLGFyZ3VtZW50cyl9fX0pO3ZhciBVbj1IKChwcCxHbik9PntcInVzZSBzdHJpY3RcIjt2YXIgZGM9dWUoKSxoYz1vdSgpLHZjPUtlKCksbWM9c3UoKSxFYz1kYy5UeXBlRXJyb3Isem49ZnVuY3Rpb24oZSxyLHUsdCxvLG4scyxjKXtmb3IodmFyIGk9byxEPTAsYT1zP21jKHMsYyk6ITEsbCxwO0Q8dDspe2lmKEQgaW4gdSl7aWYobD1hP2EodVtEXSxELHIpOnVbRF0sbj4wJiZoYyhsKSlwPXZjKGwpLGk9em4oZSxyLGwscCxpLG4tMSktMTtlbHNle2lmKGk+PTkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgRWMoXCJFeGNlZWQgdGhlIGFjY2VwdGFibGUgYXJyYXkgbGVuZ3RoXCIpO2VbaV09bH1pKyt9RCsrfXJldHVybiBpfTtHbi5leHBvcnRzPXpufSk7dmFyIEhuPUgoKGRwLCRuKT0+e3ZhciBDYz1UZSgpLGdjPUNjKFwidG9TdHJpbmdUYWdcIiksVm49e307Vm5bZ2NdPVwielwiOyRuLmV4cG9ydHM9U3RyaW5nKFZuKT09PVwiW29iamVjdCB6XVwifSk7dmFyIGN1PUgoKGhwLFhuKT0+e3ZhciBGYz11ZSgpLEFjPUhuKCkseGM9bWUoKSxncj1hcigpLGJjPVRlKCkseWM9YmMoXCJ0b1N0cmluZ1RhZ1wiKSxCYz1GYy5PYmplY3Qsd2M9Z3IoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT09XCJBcmd1bWVudHNcIixrYz1mdW5jdGlvbihlLHIpe3RyeXtyZXR1cm4gZVtyXX1jYXRjaHt9fTtYbi5leHBvcnRzPUFjP2dyOmZ1bmN0aW9uKGUpe3ZhciByLHUsdDtyZXR1cm4gZT09PXZvaWQgMD9cIlVuZGVmaW5lZFwiOmU9PT1udWxsP1wiTnVsbFwiOnR5cGVvZih1PWtjKHI9QmMoZSkseWMpKT09XCJzdHJpbmdcIj91OndjP2dyKHIpOih0PWdyKHIpKT09XCJPYmplY3RcIiYmeGMoci5jYWxsZWUpP1wiQXJndW1lbnRzXCI6dH19KTt2YXIgUW49SCgodnAsWm4pPT57dmFyIHFjPXZlKCksX2M9QWUoKSxXbj1tZSgpLE9jPWN1KCksSWM9SGUoKSxTYz1tcigpLEtuPWZ1bmN0aW9uKCl7fSxUYz1bXSxZbj1JYyhcIlJlZmxlY3RcIixcImNvbnN0cnVjdFwiKSxsdT0vXlxccyooPzpjbGFzc3xmdW5jdGlvbilcXGIvLE5jPXFjKGx1LmV4ZWMpLExjPSFsdS5leGVjKEtuKSxKZT1mdW5jdGlvbihyKXtpZighV24ocikpcmV0dXJuITE7dHJ5e3JldHVybiBZbihLbixUYyxyKSwhMH1jYXRjaHtyZXR1cm4hMX19LEpuPWZ1bmN0aW9uKHIpe2lmKCFXbihyKSlyZXR1cm4hMTtzd2l0Y2goT2Mocikpe2Nhc2VcIkFzeW5jRnVuY3Rpb25cIjpjYXNlXCJHZW5lcmF0b3JGdW5jdGlvblwiOmNhc2VcIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25cIjpyZXR1cm4hMX10cnl7cmV0dXJuIExjfHwhIU5jKGx1LFNjKHIpKX1jYXRjaHtyZXR1cm4hMH19O0puLnNoYW09ITA7Wm4uZXhwb3J0cz0hWW58fF9jKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIEplKEplLmNhbGwpfHwhSmUoT2JqZWN0KXx8IUplKGZ1bmN0aW9uKCl7ZT0hMH0pfHxlfSk/Sm46SmV9KTt2YXIgdGk9SCgobXAsdWkpPT57dmFyIFJjPXVlKCksZWk9b3UoKSxqYz1RbigpLFBjPUllKCksTWM9VGUoKSx6Yz1NYyhcInNwZWNpZXNcIikscmk9UmMuQXJyYXk7dWkuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcjtyZXR1cm4gZWkoZSkmJihyPWUuY29uc3RydWN0b3IsamMocikmJihyPT09cml8fGVpKHIucHJvdG90eXBlKSk/cj12b2lkIDA6UGMocikmJihyPXJbemNdLHI9PT1udWxsJiYocj12b2lkIDApKSkscj09PXZvaWQgMD9yaTpyfX0pO3ZhciBpaT1IKChFcCxuaSk9Pnt2YXIgR2M9dGkoKTtuaS5leHBvcnRzPWZ1bmN0aW9uKGUscil7cmV0dXJuIG5ldyhHYyhlKSkocj09PTA/MDpyKX19KTt2YXIgYWk9SCgoKT0+e1widXNlIHN0cmljdFwiO3ZhciBVYz1hdSgpLFZjPVVuKCksJGM9WGUoKSxIYz1QcigpLFhjPUtlKCksV2M9aWkoKTtVYyh7dGFyZ2V0OlwiQXJyYXlcIixwcm90bzohMH0se2ZsYXRNYXA6ZnVuY3Rpb24ocil7dmFyIHU9SGModGhpcyksdD1YYyh1KSxvO3JldHVybiAkYyhyKSxvPVdjKHUsMCksby5sZW5ndGg9VmMobyx1LHUsdCwwLDEscixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksb319KX0pO3ZhciBEdT1IKChGcCxvaSk9PntvaS5leHBvcnRzPXt9fSk7dmFyIGNpPUgoKEFwLHNpKT0+e3ZhciBLYz1UZSgpLFljPUR1KCksSmM9S2MoXCJpdGVyYXRvclwiKSxaYz1BcnJheS5wcm90b3R5cGU7c2kuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZSE9PXZvaWQgMCYmKFljLkFycmF5PT09ZXx8WmNbSmNdPT09ZSl9fSk7dmFyIGZ1PUgoKHhwLERpKT0+e3ZhciBRYz1jdSgpLGxpPWxyKCksZWw9RHUoKSxybD1UZSgpLHVsPXJsKFwiaXRlcmF0b3JcIik7RGkuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlIT1udWxsKXJldHVybiBsaShlLHVsKXx8bGkoZSxcIkBAaXRlcmF0b3JcIil8fGVsW1FjKGUpXX19KTt2YXIgcGk9SCgoYnAsZmkpPT57dmFyIHRsPXVlKCksbmw9T2UoKSxpbD1YZSgpLGFsPVJlKCksb2w9Y3IoKSxzbD1mdSgpLGNsPXRsLlR5cGVFcnJvcjtmaS5leHBvcnRzPWZ1bmN0aW9uKGUscil7dmFyIHU9YXJndW1lbnRzLmxlbmd0aDwyP3NsKGUpOnI7aWYoaWwodSkpcmV0dXJuIGFsKG5sKHUsZSkpO3Rocm93IGNsKG9sKGUpK1wiIGlzIG5vdCBpdGVyYWJsZVwiKX19KTt2YXIgdmk9SCgoeXAsaGkpPT57dmFyIGxsPU9lKCksZGk9UmUoKSxEbD1scigpO2hpLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHUpe3ZhciB0LG87ZGkoZSk7dHJ5e2lmKHQ9RGwoZSxcInJldHVyblwiKSwhdCl7aWYocj09PVwidGhyb3dcIil0aHJvdyB1O3JldHVybiB1fXQ9bGwodCxlKX1jYXRjaChuKXtvPSEwLHQ9bn1pZihyPT09XCJ0aHJvd1wiKXRocm93IHU7aWYobyl0aHJvdyB0O3JldHVybiBkaSh0KSx1fX0pO3ZhciBGaT1IKChCcCxnaSk9Pnt2YXIgZmw9dWUoKSxwbD1zdSgpLGRsPU9lKCksaGw9UmUoKSx2bD1jcigpLG1sPWNpKCksRWw9S2UoKSxtaT1fcigpLENsPXBpKCksZ2w9ZnUoKSxFaT12aSgpLEZsPWZsLlR5cGVFcnJvcixGcj1mdW5jdGlvbihlLHIpe3RoaXMuc3RvcHBlZD1lLHRoaXMucmVzdWx0PXJ9LENpPUZyLnByb3RvdHlwZTtnaS5leHBvcnRzPWZ1bmN0aW9uKGUscix1KXt2YXIgdD11JiZ1LnRoYXQsbz0hISh1JiZ1LkFTX0VOVFJJRVMpLG49ISEodSYmdS5JU19JVEVSQVRPUikscz0hISh1JiZ1LklOVEVSUlVQVEVEKSxjPXBsKHIsdCksaSxELGEsbCxwLGQsZyxGPWZ1bmN0aW9uKHgpe3JldHVybiBpJiZFaShpLFwibm9ybWFsXCIseCksbmV3IEZyKCEwLHgpfSxFPWZ1bmN0aW9uKHgpe3JldHVybiBvPyhobCh4KSxzP2MoeFswXSx4WzFdLEYpOmMoeFswXSx4WzFdKSk6cz9jKHgsRik6Yyh4KX07aWYobilpPWU7ZWxzZXtpZihEPWdsKGUpLCFEKXRocm93IEZsKHZsKGUpK1wiIGlzIG5vdCBpdGVyYWJsZVwiKTtpZihtbChEKSl7Zm9yKGE9MCxsPUVsKGUpO2w+YTthKyspaWYocD1FKGVbYV0pLHAmJm1pKENpLHApKXJldHVybiBwO3JldHVybiBuZXcgRnIoITEpfWk9Q2woZSxEKX1mb3IoZD1pLm5leHQ7IShnPWRsKGQsaSkpLmRvbmU7KXt0cnl7cD1FKGcudmFsdWUpfWNhdGNoKHgpe0VpKGksXCJ0aHJvd1wiLHgpfWlmKHR5cGVvZiBwPT1cIm9iamVjdFwiJiZwJiZtaShDaSxwKSlyZXR1cm4gcH1yZXR1cm4gbmV3IEZyKCExKX19KTt2YXIgeGk9SCgod3AsQWkpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIEFsPXByKCkseGw9aHIoKSxibD1pcigpO0FpLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHUpe3ZhciB0PUFsKHIpO3QgaW4gZT94bC5mKGUsdCxibCgwLHUpKTplW3RdPXV9fSk7dmFyIGJpPUgoKCk9Pnt2YXIgeWw9YXUoKSxCbD1GaSgpLHdsPXhpKCk7eWwoe3RhcmdldDpcIk9iamVjdFwiLHN0YXQ6ITB9LHtmcm9tRW50cmllczpmdW5jdGlvbihyKXt2YXIgdT17fTtyZXR1cm4gQmwocixmdW5jdGlvbih0LG8pe3dsKHUsdCxvKX0se0FTX0VOVFJJRVM6ITB9KSx1fX0pfSk7dmFyIGVmPUgoKF9wLG9hKT0+e3ZhciBrbD1bXCJjbGlOYW1lXCIsXCJjbGlDYXRlZ29yeVwiLFwiY2xpRGVzY3JpcHRpb25cIl0seWksQmksd2ksa2kscWksX2k7ZnVuY3Rpb24gcWwoZSxyKXtpZihlPT1udWxsKXJldHVybnt9O3ZhciB1PV9sKGUsciksdCxvO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKG89MDtvPG4ubGVuZ3RoO28rKyl0PW5bb10sIShyLmluZGV4T2YodCk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHQpfHwodVt0XT1lW3RdKSl9cmV0dXJuIHV9ZnVuY3Rpb24gX2woZSxyKXtpZihlPT1udWxsKXJldHVybnt9O3ZhciB1PXt9LHQ9T2JqZWN0LmtleXMoZSksbyxuO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspbz10W25dLCEoci5pbmRleE9mKG8pPj0wKSYmKHVbb109ZVtvXSk7cmV0dXJuIHV9YWkoKTtiaSgpO2Z1bmN0aW9uIGplKGUscil7cmV0dXJuIHJ8fChyPWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHIpfX0pKX12YXIgT2w9T2JqZWN0LmNyZWF0ZSxBcj1PYmplY3QuZGVmaW5lUHJvcGVydHksSWw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixwdT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxTbD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsVGw9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxQZT0oZSxyKT0+ZnVuY3Rpb24oKXtyZXR1cm4gZSYmKHI9KDAsZVtwdShlKVswXV0pKGU9MCkpLHJ9LFM9KGUscik9PmZ1bmN0aW9uKCl7cmV0dXJuIHJ8fCgwLGVbcHUoZSlbMF1dKSgocj17ZXhwb3J0czp7fX0pLmV4cG9ydHMsciksci5leHBvcnRzfSxMaT0oZSxyKT0+e2Zvcih2YXIgdSBpbiByKUFyKGUsdSx7Z2V0OnJbdV0sZW51bWVyYWJsZTohMH0pfSxSaT0oZSxyLHUsdCk9PntpZihyJiZ0eXBlb2Ygcj09XCJvYmplY3RcInx8dHlwZW9mIHI9PVwiZnVuY3Rpb25cIilmb3IobGV0IG8gb2YgcHUocikpIVRsLmNhbGwoZSxvKSYmbyE9PXUmJkFyKGUsbyx7Z2V0OigpPT5yW29dLGVudW1lcmFibGU6ISh0PUlsKHIsbykpfHx0LmVudW1lcmFibGV9KTtyZXR1cm4gZX0sTmw9KGUscix1KT0+KHU9ZSE9bnVsbD9PbChTbChlKSk6e30sUmkocnx8IWV8fCFlLl9fZXNNb2R1bGU/QXIodSxcImRlZmF1bHRcIix7dmFsdWU6ZSxlbnVtZXJhYmxlOiEwfSk6dSxlKSksamk9ZT0+UmkoQXIoe30sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZSksT2ksSWksWmUsST1QZSh7XCI8ZGVmaW5lOnByb2Nlc3M+XCIoKXtPaT17fSxJaT1bXSxaZT17ZW52Ok9pLGFyZ3Y6SWl9fX0pLE1lPVMoe1wibm9kZV9tb2R1bGVzL3h0ZW5kL2ltbXV0YWJsZS5qc1wiKGUscil7SSgpLHIuZXhwb3J0cz10O3ZhciB1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gdCgpe2Zvcih2YXIgbz17fSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHM9YXJndW1lbnRzW25dO2Zvcih2YXIgYyBpbiBzKXUuY2FsbChzLGMpJiYob1tjXT1zW2NdKX1yZXR1cm4gb319fSksTGw9Uyh7XCJub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qc1wiKGUscil7SSgpLHR5cGVvZiBPYmplY3QuY3JlYXRlPT1cImZ1bmN0aW9uXCI/ci5leHBvcnRzPWZ1bmN0aW9uKHQsbyl7byYmKHQuc3VwZXJfPW8sdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSkpfTpyLmV4cG9ydHM9ZnVuY3Rpb24odCxvKXtpZihvKXt0LnN1cGVyXz1vO3ZhciBuPWZ1bmN0aW9uKCl7fTtuLnByb3RvdHlwZT1vLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgbix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fX19fSksUmw9Uyh7XCJub2RlX21vZHVsZXMvdW5oZXJpdC9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PU1lKCksdD1MbCgpO3IuZXhwb3J0cz1vO2Z1bmN0aW9uIG8obil7dmFyIHMsYyxpO3QoYSxuKSx0KEQsYSkscz1hLnByb3RvdHlwZTtmb3IoYyBpbiBzKWk9c1tjXSxpJiZ0eXBlb2YgaT09XCJvYmplY3RcIiYmKHNbY109XCJjb25jYXRcImluIGk/aS5jb25jYXQoKTp1KGkpKTtyZXR1cm4gYTtmdW5jdGlvbiBEKGwpe3JldHVybiBuLmFwcGx5KHRoaXMsbCl9ZnVuY3Rpb24gYSgpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYT9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuZXcgRChhcmd1bWVudHMpfX19fSksamw9Uyh7XCJub2RlX21vZHVsZXMvc3RhdGUtdG9nZ2xlL2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXU7ZnVuY3Rpb24gdSh0LG8sbil7cmV0dXJuIHM7ZnVuY3Rpb24gcygpe3ZhciBjPW58fHRoaXMsaT1jW3RdO3JldHVybiBjW3RdPSFvLEQ7ZnVuY3Rpb24gRCgpe2NbdF09aX19fX19KSxQbD1TKHtcIm5vZGVfbW9kdWxlcy92ZmlsZS1sb2NhdGlvbi9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz11O2Z1bmN0aW9uIHUodCl7Zm9yKHZhciBvPVN0cmluZyh0KSxuPVtdLHM9L1xccj9cXG58XFxyL2c7cy5leGVjKG8pOyluLnB1c2gocy5sYXN0SW5kZXgpO3JldHVybiBuLnB1c2goby5sZW5ndGgrMSkse3RvUG9pbnQ6Yyx0b1Bvc2l0aW9uOmMsdG9PZmZzZXQ6aX07ZnVuY3Rpb24gYyhEKXt2YXIgYT0tMTtpZihEPi0xJiZEPG5bbi5sZW5ndGgtMV0pe2Zvcig7KythPG4ubGVuZ3RoOylpZihuW2FdPkQpcmV0dXJue2xpbmU6YSsxLGNvbHVtbjpELShuW2EtMV18fDApKzEsb2Zmc2V0OkR9fXJldHVybnt9fWZ1bmN0aW9uIGkoRCl7dmFyIGE9RCYmRC5saW5lLGw9RCYmRC5jb2x1bW4scDtyZXR1cm4haXNOYU4oYSkmJiFpc05hTihsKSYmYS0xIGluIG4mJihwPShuW2EtMl18fDApK2wtMXx8MCkscD4tMSYmcDxuW24ubGVuZ3RoLTFdP3A6LTF9fX19KSxNbD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3VuZXNjYXBlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXQ7dmFyIHU9XCJcXFxcXCI7ZnVuY3Rpb24gdChvLG4pe3JldHVybiBzO2Z1bmN0aW9uIHMoYyl7Zm9yKHZhciBpPTAsRD1jLmluZGV4T2YodSksYT1vW25dLGw9W10scDtEIT09LTE7KWwucHVzaChjLnNsaWNlKGksRCkpLGk9RCsxLHA9Yy5jaGFyQXQoaSksKCFwfHxhLmluZGV4T2YocCk9PT0tMSkmJmwucHVzaCh1KSxEPWMuaW5kZXhPZih1LGkrMSk7cmV0dXJuIGwucHVzaChjLnNsaWNlKGkpKSxsLmpvaW4oXCJcIil9fX19KSx6bD1TKHtcIm5vZGVfbW9kdWxlcy9jaGFyYWN0ZXItZW50aXRpZXMtbGVnYWN5L2luZGV4Lmpzb25cIihlLHIpe3IuZXhwb3J0cz17QUVsaWc6XCJcXHhDNlwiLEFNUDpcIiZcIixBYWN1dGU6XCJcXHhDMVwiLEFjaXJjOlwiXFx4QzJcIixBZ3JhdmU6XCJcXHhDMFwiLEFyaW5nOlwiXFx4QzVcIixBdGlsZGU6XCJcXHhDM1wiLEF1bWw6XCJcXHhDNFwiLENPUFk6XCJcXHhBOVwiLENjZWRpbDpcIlxceEM3XCIsRVRIOlwiXFx4RDBcIixFYWN1dGU6XCJcXHhDOVwiLEVjaXJjOlwiXFx4Q0FcIixFZ3JhdmU6XCJcXHhDOFwiLEV1bWw6XCJcXHhDQlwiLEdUOlwiPlwiLElhY3V0ZTpcIlxceENEXCIsSWNpcmM6XCJcXHhDRVwiLElncmF2ZTpcIlxceENDXCIsSXVtbDpcIlxceENGXCIsTFQ6XCI8XCIsTnRpbGRlOlwiXFx4RDFcIixPYWN1dGU6XCJcXHhEM1wiLE9jaXJjOlwiXFx4RDRcIixPZ3JhdmU6XCJcXHhEMlwiLE9zbGFzaDpcIlxceEQ4XCIsT3RpbGRlOlwiXFx4RDVcIixPdW1sOlwiXFx4RDZcIixRVU9UOidcIicsUkVHOlwiXFx4QUVcIixUSE9STjpcIlxceERFXCIsVWFjdXRlOlwiXFx4REFcIixVY2lyYzpcIlxceERCXCIsVWdyYXZlOlwiXFx4RDlcIixVdW1sOlwiXFx4RENcIixZYWN1dGU6XCJcXHhERFwiLGFhY3V0ZTpcIlxceEUxXCIsYWNpcmM6XCJcXHhFMlwiLGFjdXRlOlwiXFx4QjRcIixhZWxpZzpcIlxceEU2XCIsYWdyYXZlOlwiXFx4RTBcIixhbXA6XCImXCIsYXJpbmc6XCJcXHhFNVwiLGF0aWxkZTpcIlxceEUzXCIsYXVtbDpcIlxceEU0XCIsYnJ2YmFyOlwiXFx4QTZcIixjY2VkaWw6XCJcXHhFN1wiLGNlZGlsOlwiXFx4QjhcIixjZW50OlwiXFx4QTJcIixjb3B5OlwiXFx4QTlcIixjdXJyZW46XCJcXHhBNFwiLGRlZzpcIlxceEIwXCIsZGl2aWRlOlwiXFx4RjdcIixlYWN1dGU6XCJcXHhFOVwiLGVjaXJjOlwiXFx4RUFcIixlZ3JhdmU6XCJcXHhFOFwiLGV0aDpcIlxceEYwXCIsZXVtbDpcIlxceEVCXCIsZnJhYzEyOlwiXFx4QkRcIixmcmFjMTQ6XCJcXHhCQ1wiLGZyYWMzNDpcIlxceEJFXCIsZ3Q6XCI+XCIsaWFjdXRlOlwiXFx4RURcIixpY2lyYzpcIlxceEVFXCIsaWV4Y2w6XCJcXHhBMVwiLGlncmF2ZTpcIlxceEVDXCIsaXF1ZXN0OlwiXFx4QkZcIixpdW1sOlwiXFx4RUZcIixsYXF1bzpcIlxceEFCXCIsbHQ6XCI8XCIsbWFjcjpcIlxceEFGXCIsbWljcm86XCJcXHhCNVwiLG1pZGRvdDpcIlxceEI3XCIsbmJzcDpcIlxceEEwXCIsbm90OlwiXFx4QUNcIixudGlsZGU6XCJcXHhGMVwiLG9hY3V0ZTpcIlxceEYzXCIsb2NpcmM6XCJcXHhGNFwiLG9ncmF2ZTpcIlxceEYyXCIsb3JkZjpcIlxceEFBXCIsb3JkbTpcIlxceEJBXCIsb3NsYXNoOlwiXFx4RjhcIixvdGlsZGU6XCJcXHhGNVwiLG91bWw6XCJcXHhGNlwiLHBhcmE6XCJcXHhCNlwiLHBsdXNtbjpcIlxceEIxXCIscG91bmQ6XCJcXHhBM1wiLHF1b3Q6J1wiJyxyYXF1bzpcIlxceEJCXCIscmVnOlwiXFx4QUVcIixzZWN0OlwiXFx4QTdcIixzaHk6XCJcXHhBRFwiLHN1cDE6XCJcXHhCOVwiLHN1cDI6XCJcXHhCMlwiLHN1cDM6XCJcXHhCM1wiLHN6bGlnOlwiXFx4REZcIix0aG9ybjpcIlxceEZFXCIsdGltZXM6XCJcXHhEN1wiLHVhY3V0ZTpcIlxceEZBXCIsdWNpcmM6XCJcXHhGQlwiLHVncmF2ZTpcIlxceEY5XCIsdW1sOlwiXFx4QThcIix1dW1sOlwiXFx4RkNcIix5YWN1dGU6XCJcXHhGRFwiLHllbjpcIlxceEE1XCIseXVtbDpcIlxceEZGXCJ9fX0pLEdsPVMoe1wibm9kZV9tb2R1bGVzL2NoYXJhY3Rlci1yZWZlcmVuY2UtaW52YWxpZC9pbmRleC5qc29uXCIoZSxyKXtyLmV4cG9ydHM9ezA6XCJcXHVGRkZEXCIsMTI4OlwiXFx1MjBBQ1wiLDEzMDpcIlxcdTIwMUFcIiwxMzE6XCJcXHUwMTkyXCIsMTMyOlwiXFx1MjAxRVwiLDEzMzpcIlxcdTIwMjZcIiwxMzQ6XCJcXHUyMDIwXCIsMTM1OlwiXFx1MjAyMVwiLDEzNjpcIlxcdTAyQzZcIiwxMzc6XCJcXHUyMDMwXCIsMTM4OlwiXFx1MDE2MFwiLDEzOTpcIlxcdTIwMzlcIiwxNDA6XCJcXHUwMTUyXCIsMTQyOlwiXFx1MDE3RFwiLDE0NTpcIlxcdTIwMThcIiwxNDY6XCJcXHUyMDE5XCIsMTQ3OlwiXFx1MjAxQ1wiLDE0ODpcIlxcdTIwMURcIiwxNDk6XCJcXHUyMDIyXCIsMTUwOlwiXFx1MjAxM1wiLDE1MTpcIlxcdTIwMTRcIiwxNTI6XCJcXHUwMkRDXCIsMTUzOlwiXFx1MjEyMlwiLDE1NDpcIlxcdTAxNjFcIiwxNTU6XCJcXHUyMDNBXCIsMTU2OlwiXFx1MDE1M1wiLDE1ODpcIlxcdTAxN0VcIiwxNTk6XCJcXHUwMTc4XCJ9fX0pLHplPVMoe1wibm9kZV9tb2R1bGVzL2lzLWRlY2ltYWwvaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQpe3ZhciBvPXR5cGVvZiB0PT1cInN0cmluZ1wiP3QuY2hhckNvZGVBdCgwKTp0O3JldHVybiBvPj00OCYmbzw9NTd9fX0pLFVsPVMoe1wibm9kZV9tb2R1bGVzL2lzLWhleGFkZWNpbWFsL2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXU7ZnVuY3Rpb24gdSh0KXt2YXIgbz10eXBlb2YgdD09XCJzdHJpbmdcIj90LmNoYXJDb2RlQXQoMCk6dDtyZXR1cm4gbz49OTcmJm88PTEwMnx8bz49NjUmJm88PTcwfHxvPj00OCYmbzw9NTd9fX0pLFFlPVMoe1wibm9kZV9tb2R1bGVzL2lzLWFscGhhYmV0aWNhbC9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz11O2Z1bmN0aW9uIHUodCl7dmFyIG89dHlwZW9mIHQ9PVwic3RyaW5nXCI/dC5jaGFyQ29kZUF0KDApOnQ7cmV0dXJuIG8+PTk3JiZvPD0xMjJ8fG8+PTY1JiZvPD05MH19fSksVmw9Uyh7XCJub2RlX21vZHVsZXMvaXMtYWxwaGFudW1lcmljYWwvaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1RZSgpLHQ9emUoKTtyLmV4cG9ydHM9bztmdW5jdGlvbiBvKG4pe3JldHVybiB1KG4pfHx0KG4pfX19KSwkbD1TKHtcIm5vZGVfbW9kdWxlcy9jaGFyYWN0ZXItZW50aXRpZXMvaW5kZXguanNvblwiKGUscil7ci5leHBvcnRzPXtBRWxpOlwiXFx4QzZcIixBRWxpZzpcIlxceEM2XCIsQU06XCImXCIsQU1QOlwiJlwiLEFhY3V0OlwiXFx4QzFcIixBYWN1dGU6XCJcXHhDMVwiLEFicmV2ZTpcIlxcdTAxMDJcIixBY2lyOlwiXFx4QzJcIixBY2lyYzpcIlxceEMyXCIsQWN5OlwiXFx1MDQxMFwiLEFmcjpcIlxcdXsxRDUwNH1cIixBZ3JhdjpcIlxceEMwXCIsQWdyYXZlOlwiXFx4QzBcIixBbHBoYTpcIlxcdTAzOTFcIixBbWFjcjpcIlxcdTAxMDBcIixBbmQ6XCJcXHUyQTUzXCIsQW9nb246XCJcXHUwMTA0XCIsQW9wZjpcIlxcdXsxRDUzOH1cIixBcHBseUZ1bmN0aW9uOlwiXFx1MjA2MVwiLEFyaW46XCJcXHhDNVwiLEFyaW5nOlwiXFx4QzVcIixBc2NyOlwiXFx1ezFENDlDfVwiLEFzc2lnbjpcIlxcdTIyNTRcIixBdGlsZDpcIlxceEMzXCIsQXRpbGRlOlwiXFx4QzNcIixBdW06XCJcXHhDNFwiLEF1bWw6XCJcXHhDNFwiLEJhY2tzbGFzaDpcIlxcdTIyMTZcIixCYXJ2OlwiXFx1MkFFN1wiLEJhcndlZDpcIlxcdTIzMDZcIixCY3k6XCJcXHUwNDExXCIsQmVjYXVzZTpcIlxcdTIyMzVcIixCZXJub3VsbGlzOlwiXFx1MjEyQ1wiLEJldGE6XCJcXHUwMzkyXCIsQmZyOlwiXFx1ezFENTA1fVwiLEJvcGY6XCJcXHV7MUQ1Mzl9XCIsQnJldmU6XCJcXHUwMkQ4XCIsQnNjcjpcIlxcdTIxMkNcIixCdW1wZXE6XCJcXHUyMjRFXCIsQ0hjeTpcIlxcdTA0MjdcIixDT1A6XCJcXHhBOVwiLENPUFk6XCJcXHhBOVwiLENhY3V0ZTpcIlxcdTAxMDZcIixDYXA6XCJcXHUyMkQyXCIsQ2FwaXRhbERpZmZlcmVudGlhbEQ6XCJcXHUyMTQ1XCIsQ2F5bGV5czpcIlxcdTIxMkRcIixDY2Fyb246XCJcXHUwMTBDXCIsQ2NlZGk6XCJcXHhDN1wiLENjZWRpbDpcIlxceEM3XCIsQ2NpcmM6XCJcXHUwMTA4XCIsQ2NvbmludDpcIlxcdTIyMzBcIixDZG90OlwiXFx1MDEwQVwiLENlZGlsbGE6XCJcXHhCOFwiLENlbnRlckRvdDpcIlxceEI3XCIsQ2ZyOlwiXFx1MjEyRFwiLENoaTpcIlxcdTAzQTdcIixDaXJjbGVEb3Q6XCJcXHUyMjk5XCIsQ2lyY2xlTWludXM6XCJcXHUyMjk2XCIsQ2lyY2xlUGx1czpcIlxcdTIyOTVcIixDaXJjbGVUaW1lczpcIlxcdTIyOTdcIixDbG9ja3dpc2VDb250b3VySW50ZWdyYWw6XCJcXHUyMjMyXCIsQ2xvc2VDdXJseURvdWJsZVF1b3RlOlwiXFx1MjAxRFwiLENsb3NlQ3VybHlRdW90ZTpcIlxcdTIwMTlcIixDb2xvbjpcIlxcdTIyMzdcIixDb2xvbmU6XCJcXHUyQTc0XCIsQ29uZ3J1ZW50OlwiXFx1MjI2MVwiLENvbmludDpcIlxcdTIyMkZcIixDb250b3VySW50ZWdyYWw6XCJcXHUyMjJFXCIsQ29wZjpcIlxcdTIxMDJcIixDb3Byb2R1Y3Q6XCJcXHUyMjEwXCIsQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMzNcIixDcm9zczpcIlxcdTJBMkZcIixDc2NyOlwiXFx1ezFENDlFfVwiLEN1cDpcIlxcdTIyRDNcIixDdXBDYXA6XCJcXHUyMjREXCIsREQ6XCJcXHUyMTQ1XCIsRERvdHJhaGQ6XCJcXHUyOTExXCIsREpjeTpcIlxcdTA0MDJcIixEU2N5OlwiXFx1MDQwNVwiLERaY3k6XCJcXHUwNDBGXCIsRGFnZ2VyOlwiXFx1MjAyMVwiLERhcnI6XCJcXHUyMUExXCIsRGFzaHY6XCJcXHUyQUU0XCIsRGNhcm9uOlwiXFx1MDEwRVwiLERjeTpcIlxcdTA0MTRcIixEZWw6XCJcXHUyMjA3XCIsRGVsdGE6XCJcXHUwMzk0XCIsRGZyOlwiXFx1ezFENTA3fVwiLERpYWNyaXRpY2FsQWN1dGU6XCJcXHhCNFwiLERpYWNyaXRpY2FsRG90OlwiXFx1MDJEOVwiLERpYWNyaXRpY2FsRG91YmxlQWN1dGU6XCJcXHUwMkREXCIsRGlhY3JpdGljYWxHcmF2ZTpcImBcIixEaWFjcml0aWNhbFRpbGRlOlwiXFx1MDJEQ1wiLERpYW1vbmQ6XCJcXHUyMkM0XCIsRGlmZmVyZW50aWFsRDpcIlxcdTIxNDZcIixEb3BmOlwiXFx1ezFENTNCfVwiLERvdDpcIlxceEE4XCIsRG90RG90OlwiXFx1MjBEQ1wiLERvdEVxdWFsOlwiXFx1MjI1MFwiLERvdWJsZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMkZcIixEb3VibGVEb3Q6XCJcXHhBOFwiLERvdWJsZURvd25BcnJvdzpcIlxcdTIxRDNcIixEb3VibGVMZWZ0QXJyb3c6XCJcXHUyMUQwXCIsRG91YmxlTGVmdFJpZ2h0QXJyb3c6XCJcXHUyMUQ0XCIsRG91YmxlTGVmdFRlZTpcIlxcdTJBRTRcIixEb3VibGVMb25nTGVmdEFycm93OlwiXFx1MjdGOFwiLERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzpcIlxcdTI3RkFcIixEb3VibGVMb25nUmlnaHRBcnJvdzpcIlxcdTI3RjlcIixEb3VibGVSaWdodEFycm93OlwiXFx1MjFEMlwiLERvdWJsZVJpZ2h0VGVlOlwiXFx1MjJBOFwiLERvdWJsZVVwQXJyb3c6XCJcXHUyMUQxXCIsRG91YmxlVXBEb3duQXJyb3c6XCJcXHUyMUQ1XCIsRG91YmxlVmVydGljYWxCYXI6XCJcXHUyMjI1XCIsRG93bkFycm93OlwiXFx1MjE5M1wiLERvd25BcnJvd0JhcjpcIlxcdTI5MTNcIixEb3duQXJyb3dVcEFycm93OlwiXFx1MjFGNVwiLERvd25CcmV2ZTpcIlxcdTAzMTFcIixEb3duTGVmdFJpZ2h0VmVjdG9yOlwiXFx1Mjk1MFwiLERvd25MZWZ0VGVlVmVjdG9yOlwiXFx1Mjk1RVwiLERvd25MZWZ0VmVjdG9yOlwiXFx1MjFCRFwiLERvd25MZWZ0VmVjdG9yQmFyOlwiXFx1Mjk1NlwiLERvd25SaWdodFRlZVZlY3RvcjpcIlxcdTI5NUZcIixEb3duUmlnaHRWZWN0b3I6XCJcXHUyMUMxXCIsRG93blJpZ2h0VmVjdG9yQmFyOlwiXFx1Mjk1N1wiLERvd25UZWU6XCJcXHUyMkE0XCIsRG93blRlZUFycm93OlwiXFx1MjFBN1wiLERvd25hcnJvdzpcIlxcdTIxRDNcIixEc2NyOlwiXFx1ezFENDlGfVwiLERzdHJvazpcIlxcdTAxMTBcIixFTkc6XCJcXHUwMTRBXCIsRVQ6XCJcXHhEMFwiLEVUSDpcIlxceEQwXCIsRWFjdXQ6XCJcXHhDOVwiLEVhY3V0ZTpcIlxceEM5XCIsRWNhcm9uOlwiXFx1MDExQVwiLEVjaXI6XCJcXHhDQVwiLEVjaXJjOlwiXFx4Q0FcIixFY3k6XCJcXHUwNDJEXCIsRWRvdDpcIlxcdTAxMTZcIixFZnI6XCJcXHV7MUQ1MDh9XCIsRWdyYXY6XCJcXHhDOFwiLEVncmF2ZTpcIlxceEM4XCIsRWxlbWVudDpcIlxcdTIyMDhcIixFbWFjcjpcIlxcdTAxMTJcIixFbXB0eVNtYWxsU3F1YXJlOlwiXFx1MjVGQlwiLEVtcHR5VmVyeVNtYWxsU3F1YXJlOlwiXFx1MjVBQlwiLEVvZ29uOlwiXFx1MDExOFwiLEVvcGY6XCJcXHV7MUQ1M0N9XCIsRXBzaWxvbjpcIlxcdTAzOTVcIixFcXVhbDpcIlxcdTJBNzVcIixFcXVhbFRpbGRlOlwiXFx1MjI0MlwiLEVxdWlsaWJyaXVtOlwiXFx1MjFDQ1wiLEVzY3I6XCJcXHUyMTMwXCIsRXNpbTpcIlxcdTJBNzNcIixFdGE6XCJcXHUwMzk3XCIsRXVtOlwiXFx4Q0JcIixFdW1sOlwiXFx4Q0JcIixFeGlzdHM6XCJcXHUyMjAzXCIsRXhwb25lbnRpYWxFOlwiXFx1MjE0N1wiLEZjeTpcIlxcdTA0MjRcIixGZnI6XCJcXHV7MUQ1MDl9XCIsRmlsbGVkU21hbGxTcXVhcmU6XCJcXHUyNUZDXCIsRmlsbGVkVmVyeVNtYWxsU3F1YXJlOlwiXFx1MjVBQVwiLEZvcGY6XCJcXHV7MUQ1M0R9XCIsRm9yQWxsOlwiXFx1MjIwMFwiLEZvdXJpZXJ0cmY6XCJcXHUyMTMxXCIsRnNjcjpcIlxcdTIxMzFcIixHSmN5OlwiXFx1MDQwM1wiLEc6XCI+XCIsR1Q6XCI+XCIsR2FtbWE6XCJcXHUwMzkzXCIsR2FtbWFkOlwiXFx1MDNEQ1wiLEdicmV2ZTpcIlxcdTAxMUVcIixHY2VkaWw6XCJcXHUwMTIyXCIsR2NpcmM6XCJcXHUwMTFDXCIsR2N5OlwiXFx1MDQxM1wiLEdkb3Q6XCJcXHUwMTIwXCIsR2ZyOlwiXFx1ezFENTBBfVwiLEdnOlwiXFx1MjJEOVwiLEdvcGY6XCJcXHV7MUQ1M0V9XCIsR3JlYXRlckVxdWFsOlwiXFx1MjI2NVwiLEdyZWF0ZXJFcXVhbExlc3M6XCJcXHUyMkRCXCIsR3JlYXRlckZ1bGxFcXVhbDpcIlxcdTIyNjdcIixHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcIixHcmVhdGVyTGVzczpcIlxcdTIyNzdcIixHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcIixHcmVhdGVyVGlsZGU6XCJcXHUyMjczXCIsR3NjcjpcIlxcdXsxRDRBMn1cIixHdDpcIlxcdTIyNkJcIixIQVJEY3k6XCJcXHUwNDJBXCIsSGFjZWs6XCJcXHUwMkM3XCIsSGF0OlwiXlwiLEhjaXJjOlwiXFx1MDEyNFwiLEhmcjpcIlxcdTIxMENcIixIaWxiZXJ0U3BhY2U6XCJcXHUyMTBCXCIsSG9wZjpcIlxcdTIxMERcIixIb3Jpem9udGFsTGluZTpcIlxcdTI1MDBcIixIc2NyOlwiXFx1MjEwQlwiLEhzdHJvazpcIlxcdTAxMjZcIixIdW1wRG93bkh1bXA6XCJcXHUyMjRFXCIsSHVtcEVxdWFsOlwiXFx1MjI0RlwiLElFY3k6XCJcXHUwNDE1XCIsSUpsaWc6XCJcXHUwMTMyXCIsSU9jeTpcIlxcdTA0MDFcIixJYWN1dDpcIlxceENEXCIsSWFjdXRlOlwiXFx4Q0RcIixJY2lyOlwiXFx4Q0VcIixJY2lyYzpcIlxceENFXCIsSWN5OlwiXFx1MDQxOFwiLElkb3Q6XCJcXHUwMTMwXCIsSWZyOlwiXFx1MjExMVwiLElncmF2OlwiXFx4Q0NcIixJZ3JhdmU6XCJcXHhDQ1wiLEltOlwiXFx1MjExMVwiLEltYWNyOlwiXFx1MDEyQVwiLEltYWdpbmFyeUk6XCJcXHUyMTQ4XCIsSW1wbGllczpcIlxcdTIxRDJcIixJbnQ6XCJcXHUyMjJDXCIsSW50ZWdyYWw6XCJcXHUyMjJCXCIsSW50ZXJzZWN0aW9uOlwiXFx1MjJDMlwiLEludmlzaWJsZUNvbW1hOlwiXFx1MjA2M1wiLEludmlzaWJsZVRpbWVzOlwiXFx1MjA2MlwiLElvZ29uOlwiXFx1MDEyRVwiLElvcGY6XCJcXHV7MUQ1NDB9XCIsSW90YTpcIlxcdTAzOTlcIixJc2NyOlwiXFx1MjExMFwiLEl0aWxkZTpcIlxcdTAxMjhcIixJdWtjeTpcIlxcdTA0MDZcIixJdW06XCJcXHhDRlwiLEl1bWw6XCJcXHhDRlwiLEpjaXJjOlwiXFx1MDEzNFwiLEpjeTpcIlxcdTA0MTlcIixKZnI6XCJcXHV7MUQ1MER9XCIsSm9wZjpcIlxcdXsxRDU0MX1cIixKc2NyOlwiXFx1ezFENEE1fVwiLEpzZXJjeTpcIlxcdTA0MDhcIixKdWtjeTpcIlxcdTA0MDRcIixLSGN5OlwiXFx1MDQyNVwiLEtKY3k6XCJcXHUwNDBDXCIsS2FwcGE6XCJcXHUwMzlBXCIsS2NlZGlsOlwiXFx1MDEzNlwiLEtjeTpcIlxcdTA0MUFcIixLZnI6XCJcXHV7MUQ1MEV9XCIsS29wZjpcIlxcdXsxRDU0Mn1cIixLc2NyOlwiXFx1ezFENEE2fVwiLExKY3k6XCJcXHUwNDA5XCIsTDpcIjxcIixMVDpcIjxcIixMYWN1dGU6XCJcXHUwMTM5XCIsTGFtYmRhOlwiXFx1MDM5QlwiLExhbmc6XCJcXHUyN0VBXCIsTGFwbGFjZXRyZjpcIlxcdTIxMTJcIixMYXJyOlwiXFx1MjE5RVwiLExjYXJvbjpcIlxcdTAxM0RcIixMY2VkaWw6XCJcXHUwMTNCXCIsTGN5OlwiXFx1MDQxQlwiLExlZnRBbmdsZUJyYWNrZXQ6XCJcXHUyN0U4XCIsTGVmdEFycm93OlwiXFx1MjE5MFwiLExlZnRBcnJvd0JhcjpcIlxcdTIxRTRcIixMZWZ0QXJyb3dSaWdodEFycm93OlwiXFx1MjFDNlwiLExlZnRDZWlsaW5nOlwiXFx1MjMwOFwiLExlZnREb3VibGVCcmFja2V0OlwiXFx1MjdFNlwiLExlZnREb3duVGVlVmVjdG9yOlwiXFx1Mjk2MVwiLExlZnREb3duVmVjdG9yOlwiXFx1MjFDM1wiLExlZnREb3duVmVjdG9yQmFyOlwiXFx1Mjk1OVwiLExlZnRGbG9vcjpcIlxcdTIzMEFcIixMZWZ0UmlnaHRBcnJvdzpcIlxcdTIxOTRcIixMZWZ0UmlnaHRWZWN0b3I6XCJcXHUyOTRFXCIsTGVmdFRlZTpcIlxcdTIyQTNcIixMZWZ0VGVlQXJyb3c6XCJcXHUyMUE0XCIsTGVmdFRlZVZlY3RvcjpcIlxcdTI5NUFcIixMZWZ0VHJpYW5nbGU6XCJcXHUyMkIyXCIsTGVmdFRyaWFuZ2xlQmFyOlwiXFx1MjlDRlwiLExlZnRUcmlhbmdsZUVxdWFsOlwiXFx1MjJCNFwiLExlZnRVcERvd25WZWN0b3I6XCJcXHUyOTUxXCIsTGVmdFVwVGVlVmVjdG9yOlwiXFx1Mjk2MFwiLExlZnRVcFZlY3RvcjpcIlxcdTIxQkZcIixMZWZ0VXBWZWN0b3JCYXI6XCJcXHUyOTU4XCIsTGVmdFZlY3RvcjpcIlxcdTIxQkNcIixMZWZ0VmVjdG9yQmFyOlwiXFx1Mjk1MlwiLExlZnRhcnJvdzpcIlxcdTIxRDBcIixMZWZ0cmlnaHRhcnJvdzpcIlxcdTIxRDRcIixMZXNzRXF1YWxHcmVhdGVyOlwiXFx1MjJEQVwiLExlc3NGdWxsRXF1YWw6XCJcXHUyMjY2XCIsTGVzc0dyZWF0ZXI6XCJcXHUyMjc2XCIsTGVzc0xlc3M6XCJcXHUyQUExXCIsTGVzc1NsYW50RXF1YWw6XCJcXHUyQTdEXCIsTGVzc1RpbGRlOlwiXFx1MjI3MlwiLExmcjpcIlxcdXsxRDUwRn1cIixMbDpcIlxcdTIyRDhcIixMbGVmdGFycm93OlwiXFx1MjFEQVwiLExtaWRvdDpcIlxcdTAxM0ZcIixMb25nTGVmdEFycm93OlwiXFx1MjdGNVwiLExvbmdMZWZ0UmlnaHRBcnJvdzpcIlxcdTI3RjdcIixMb25nUmlnaHRBcnJvdzpcIlxcdTI3RjZcIixMb25nbGVmdGFycm93OlwiXFx1MjdGOFwiLExvbmdsZWZ0cmlnaHRhcnJvdzpcIlxcdTI3RkFcIixMb25ncmlnaHRhcnJvdzpcIlxcdTI3RjlcIixMb3BmOlwiXFx1ezFENTQzfVwiLExvd2VyTGVmdEFycm93OlwiXFx1MjE5OVwiLExvd2VyUmlnaHRBcnJvdzpcIlxcdTIxOThcIixMc2NyOlwiXFx1MjExMlwiLExzaDpcIlxcdTIxQjBcIixMc3Ryb2s6XCJcXHUwMTQxXCIsTHQ6XCJcXHUyMjZBXCIsTWFwOlwiXFx1MjkwNVwiLE1jeTpcIlxcdTA0MUNcIixNZWRpdW1TcGFjZTpcIlxcdTIwNUZcIixNZWxsaW50cmY6XCJcXHUyMTMzXCIsTWZyOlwiXFx1ezFENTEwfVwiLE1pbnVzUGx1czpcIlxcdTIyMTNcIixNb3BmOlwiXFx1ezFENTQ0fVwiLE1zY3I6XCJcXHUyMTMzXCIsTXU6XCJcXHUwMzlDXCIsTkpjeTpcIlxcdTA0MEFcIixOYWN1dGU6XCJcXHUwMTQzXCIsTmNhcm9uOlwiXFx1MDE0N1wiLE5jZWRpbDpcIlxcdTAxNDVcIixOY3k6XCJcXHUwNDFEXCIsTmVnYXRpdmVNZWRpdW1TcGFjZTpcIlxcdTIwMEJcIixOZWdhdGl2ZVRoaWNrU3BhY2U6XCJcXHUyMDBCXCIsTmVnYXRpdmVUaGluU3BhY2U6XCJcXHUyMDBCXCIsTmVnYXRpdmVWZXJ5VGhpblNwYWNlOlwiXFx1MjAwQlwiLE5lc3RlZEdyZWF0ZXJHcmVhdGVyOlwiXFx1MjI2QlwiLE5lc3RlZExlc3NMZXNzOlwiXFx1MjI2QVwiLE5ld0xpbmU6YFxuYCxOZnI6XCJcXHV7MUQ1MTF9XCIsTm9CcmVhazpcIlxcdTIwNjBcIixOb25CcmVha2luZ1NwYWNlOlwiXFx4QTBcIixOb3BmOlwiXFx1MjExNVwiLE5vdDpcIlxcdTJBRUNcIixOb3RDb25ncnVlbnQ6XCJcXHUyMjYyXCIsTm90Q3VwQ2FwOlwiXFx1MjI2RFwiLE5vdERvdWJsZVZlcnRpY2FsQmFyOlwiXFx1MjIyNlwiLE5vdEVsZW1lbnQ6XCJcXHUyMjA5XCIsTm90RXF1YWw6XCJcXHUyMjYwXCIsTm90RXF1YWxUaWxkZTpcIlxcdTIyNDJcXHUwMzM4XCIsTm90RXhpc3RzOlwiXFx1MjIwNFwiLE5vdEdyZWF0ZXI6XCJcXHUyMjZGXCIsTm90R3JlYXRlckVxdWFsOlwiXFx1MjI3MVwiLE5vdEdyZWF0ZXJGdWxsRXF1YWw6XCJcXHUyMjY3XFx1MDMzOFwiLE5vdEdyZWF0ZXJHcmVhdGVyOlwiXFx1MjI2QlxcdTAzMzhcIixOb3RHcmVhdGVyTGVzczpcIlxcdTIyNzlcIixOb3RHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcXHUwMzM4XCIsTm90R3JlYXRlclRpbGRlOlwiXFx1MjI3NVwiLE5vdEh1bXBEb3duSHVtcDpcIlxcdTIyNEVcXHUwMzM4XCIsTm90SHVtcEVxdWFsOlwiXFx1MjI0RlxcdTAzMzhcIixOb3RMZWZ0VHJpYW5nbGU6XCJcXHUyMkVBXCIsTm90TGVmdFRyaWFuZ2xlQmFyOlwiXFx1MjlDRlxcdTAzMzhcIixOb3RMZWZ0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRUNcIixOb3RMZXNzOlwiXFx1MjI2RVwiLE5vdExlc3NFcXVhbDpcIlxcdTIyNzBcIixOb3RMZXNzR3JlYXRlcjpcIlxcdTIyNzhcIixOb3RMZXNzTGVzczpcIlxcdTIyNkFcXHUwMzM4XCIsTm90TGVzc1NsYW50RXF1YWw6XCJcXHUyQTdEXFx1MDMzOFwiLE5vdExlc3NUaWxkZTpcIlxcdTIyNzRcIixOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcXHUwMzM4XCIsTm90TmVzdGVkTGVzc0xlc3M6XCJcXHUyQUExXFx1MDMzOFwiLE5vdFByZWNlZGVzOlwiXFx1MjI4MFwiLE5vdFByZWNlZGVzRXF1YWw6XCJcXHUyQUFGXFx1MDMzOFwiLE5vdFByZWNlZGVzU2xhbnRFcXVhbDpcIlxcdTIyRTBcIixOb3RSZXZlcnNlRWxlbWVudDpcIlxcdTIyMENcIixOb3RSaWdodFRyaWFuZ2xlOlwiXFx1MjJFQlwiLE5vdFJpZ2h0VHJpYW5nbGVCYXI6XCJcXHUyOUQwXFx1MDMzOFwiLE5vdFJpZ2h0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRURcIixOb3RTcXVhcmVTdWJzZXQ6XCJcXHUyMjhGXFx1MDMzOFwiLE5vdFNxdWFyZVN1YnNldEVxdWFsOlwiXFx1MjJFMlwiLE5vdFNxdWFyZVN1cGVyc2V0OlwiXFx1MjI5MFxcdTAzMzhcIixOb3RTcXVhcmVTdXBlcnNldEVxdWFsOlwiXFx1MjJFM1wiLE5vdFN1YnNldDpcIlxcdTIyODJcXHUyMEQyXCIsTm90U3Vic2V0RXF1YWw6XCJcXHUyMjg4XCIsTm90U3VjY2VlZHM6XCJcXHUyMjgxXCIsTm90U3VjY2VlZHNFcXVhbDpcIlxcdTJBQjBcXHUwMzM4XCIsTm90U3VjY2VlZHNTbGFudEVxdWFsOlwiXFx1MjJFMVwiLE5vdFN1Y2NlZWRzVGlsZGU6XCJcXHUyMjdGXFx1MDMzOFwiLE5vdFN1cGVyc2V0OlwiXFx1MjI4M1xcdTIwRDJcIixOb3RTdXBlcnNldEVxdWFsOlwiXFx1MjI4OVwiLE5vdFRpbGRlOlwiXFx1MjI0MVwiLE5vdFRpbGRlRXF1YWw6XCJcXHUyMjQ0XCIsTm90VGlsZGVGdWxsRXF1YWw6XCJcXHUyMjQ3XCIsTm90VGlsZGVUaWxkZTpcIlxcdTIyNDlcIixOb3RWZXJ0aWNhbEJhcjpcIlxcdTIyMjRcIixOc2NyOlwiXFx1ezFENEE5fVwiLE50aWxkOlwiXFx4RDFcIixOdGlsZGU6XCJcXHhEMVwiLE51OlwiXFx1MDM5RFwiLE9FbGlnOlwiXFx1MDE1MlwiLE9hY3V0OlwiXFx4RDNcIixPYWN1dGU6XCJcXHhEM1wiLE9jaXI6XCJcXHhENFwiLE9jaXJjOlwiXFx4RDRcIixPY3k6XCJcXHUwNDFFXCIsT2RibGFjOlwiXFx1MDE1MFwiLE9mcjpcIlxcdXsxRDUxMn1cIixPZ3JhdjpcIlxceEQyXCIsT2dyYXZlOlwiXFx4RDJcIixPbWFjcjpcIlxcdTAxNENcIixPbWVnYTpcIlxcdTAzQTlcIixPbWljcm9uOlwiXFx1MDM5RlwiLE9vcGY6XCJcXHV7MUQ1NDZ9XCIsT3BlbkN1cmx5RG91YmxlUXVvdGU6XCJcXHUyMDFDXCIsT3BlbkN1cmx5UXVvdGU6XCJcXHUyMDE4XCIsT3I6XCJcXHUyQTU0XCIsT3NjcjpcIlxcdXsxRDRBQX1cIixPc2xhczpcIlxceEQ4XCIsT3NsYXNoOlwiXFx4RDhcIixPdGlsZDpcIlxceEQ1XCIsT3RpbGRlOlwiXFx4RDVcIixPdGltZXM6XCJcXHUyQTM3XCIsT3VtOlwiXFx4RDZcIixPdW1sOlwiXFx4RDZcIixPdmVyQmFyOlwiXFx1MjAzRVwiLE92ZXJCcmFjZTpcIlxcdTIzREVcIixPdmVyQnJhY2tldDpcIlxcdTIzQjRcIixPdmVyUGFyZW50aGVzaXM6XCJcXHUyM0RDXCIsUGFydGlhbEQ6XCJcXHUyMjAyXCIsUGN5OlwiXFx1MDQxRlwiLFBmcjpcIlxcdXsxRDUxM31cIixQaGk6XCJcXHUwM0E2XCIsUGk6XCJcXHUwM0EwXCIsUGx1c01pbnVzOlwiXFx4QjFcIixQb2luY2FyZXBsYW5lOlwiXFx1MjEwQ1wiLFBvcGY6XCJcXHUyMTE5XCIsUHI6XCJcXHUyQUJCXCIsUHJlY2VkZXM6XCJcXHUyMjdBXCIsUHJlY2VkZXNFcXVhbDpcIlxcdTJBQUZcIixQcmVjZWRlc1NsYW50RXF1YWw6XCJcXHUyMjdDXCIsUHJlY2VkZXNUaWxkZTpcIlxcdTIyN0VcIixQcmltZTpcIlxcdTIwMzNcIixQcm9kdWN0OlwiXFx1MjIwRlwiLFByb3BvcnRpb246XCJcXHUyMjM3XCIsUHJvcG9ydGlvbmFsOlwiXFx1MjIxRFwiLFBzY3I6XCJcXHV7MUQ0QUJ9XCIsUHNpOlwiXFx1MDNBOFwiLFFVTzonXCInLFFVT1Q6J1wiJyxRZnI6XCJcXHV7MUQ1MTR9XCIsUW9wZjpcIlxcdTIxMUFcIixRc2NyOlwiXFx1ezFENEFDfVwiLFJCYXJyOlwiXFx1MjkxMFwiLFJFOlwiXFx4QUVcIixSRUc6XCJcXHhBRVwiLFJhY3V0ZTpcIlxcdTAxNTRcIixSYW5nOlwiXFx1MjdFQlwiLFJhcnI6XCJcXHUyMUEwXCIsUmFycnRsOlwiXFx1MjkxNlwiLFJjYXJvbjpcIlxcdTAxNThcIixSY2VkaWw6XCJcXHUwMTU2XCIsUmN5OlwiXFx1MDQyMFwiLFJlOlwiXFx1MjExQ1wiLFJldmVyc2VFbGVtZW50OlwiXFx1MjIwQlwiLFJldmVyc2VFcXVpbGlicml1bTpcIlxcdTIxQ0JcIixSZXZlcnNlVXBFcXVpbGlicml1bTpcIlxcdTI5NkZcIixSZnI6XCJcXHUyMTFDXCIsUmhvOlwiXFx1MDNBMVwiLFJpZ2h0QW5nbGVCcmFja2V0OlwiXFx1MjdFOVwiLFJpZ2h0QXJyb3c6XCJcXHUyMTkyXCIsUmlnaHRBcnJvd0JhcjpcIlxcdTIxRTVcIixSaWdodEFycm93TGVmdEFycm93OlwiXFx1MjFDNFwiLFJpZ2h0Q2VpbGluZzpcIlxcdTIzMDlcIixSaWdodERvdWJsZUJyYWNrZXQ6XCJcXHUyN0U3XCIsUmlnaHREb3duVGVlVmVjdG9yOlwiXFx1Mjk1RFwiLFJpZ2h0RG93blZlY3RvcjpcIlxcdTIxQzJcIixSaWdodERvd25WZWN0b3JCYXI6XCJcXHUyOTU1XCIsUmlnaHRGbG9vcjpcIlxcdTIzMEJcIixSaWdodFRlZTpcIlxcdTIyQTJcIixSaWdodFRlZUFycm93OlwiXFx1MjFBNlwiLFJpZ2h0VGVlVmVjdG9yOlwiXFx1Mjk1QlwiLFJpZ2h0VHJpYW5nbGU6XCJcXHUyMkIzXCIsUmlnaHRUcmlhbmdsZUJhcjpcIlxcdTI5RDBcIixSaWdodFRyaWFuZ2xlRXF1YWw6XCJcXHUyMkI1XCIsUmlnaHRVcERvd25WZWN0b3I6XCJcXHUyOTRGXCIsUmlnaHRVcFRlZVZlY3RvcjpcIlxcdTI5NUNcIixSaWdodFVwVmVjdG9yOlwiXFx1MjFCRVwiLFJpZ2h0VXBWZWN0b3JCYXI6XCJcXHUyOTU0XCIsUmlnaHRWZWN0b3I6XCJcXHUyMUMwXCIsUmlnaHRWZWN0b3JCYXI6XCJcXHUyOTUzXCIsUmlnaHRhcnJvdzpcIlxcdTIxRDJcIixSb3BmOlwiXFx1MjExRFwiLFJvdW5kSW1wbGllczpcIlxcdTI5NzBcIixScmlnaHRhcnJvdzpcIlxcdTIxREJcIixSc2NyOlwiXFx1MjExQlwiLFJzaDpcIlxcdTIxQjFcIixSdWxlRGVsYXllZDpcIlxcdTI5RjRcIixTSENIY3k6XCJcXHUwNDI5XCIsU0hjeTpcIlxcdTA0MjhcIixTT0ZUY3k6XCJcXHUwNDJDXCIsU2FjdXRlOlwiXFx1MDE1QVwiLFNjOlwiXFx1MkFCQ1wiLFNjYXJvbjpcIlxcdTAxNjBcIixTY2VkaWw6XCJcXHUwMTVFXCIsU2NpcmM6XCJcXHUwMTVDXCIsU2N5OlwiXFx1MDQyMVwiLFNmcjpcIlxcdXsxRDUxNn1cIixTaG9ydERvd25BcnJvdzpcIlxcdTIxOTNcIixTaG9ydExlZnRBcnJvdzpcIlxcdTIxOTBcIixTaG9ydFJpZ2h0QXJyb3c6XCJcXHUyMTkyXCIsU2hvcnRVcEFycm93OlwiXFx1MjE5MVwiLFNpZ21hOlwiXFx1MDNBM1wiLFNtYWxsQ2lyY2xlOlwiXFx1MjIxOFwiLFNvcGY6XCJcXHV7MUQ1NEF9XCIsU3FydDpcIlxcdTIyMUFcIixTcXVhcmU6XCJcXHUyNUExXCIsU3F1YXJlSW50ZXJzZWN0aW9uOlwiXFx1MjI5M1wiLFNxdWFyZVN1YnNldDpcIlxcdTIyOEZcIixTcXVhcmVTdWJzZXRFcXVhbDpcIlxcdTIyOTFcIixTcXVhcmVTdXBlcnNldDpcIlxcdTIyOTBcIixTcXVhcmVTdXBlcnNldEVxdWFsOlwiXFx1MjI5MlwiLFNxdWFyZVVuaW9uOlwiXFx1MjI5NFwiLFNzY3I6XCJcXHV7MUQ0QUV9XCIsU3RhcjpcIlxcdTIyQzZcIixTdWI6XCJcXHUyMkQwXCIsU3Vic2V0OlwiXFx1MjJEMFwiLFN1YnNldEVxdWFsOlwiXFx1MjI4NlwiLFN1Y2NlZWRzOlwiXFx1MjI3QlwiLFN1Y2NlZWRzRXF1YWw6XCJcXHUyQUIwXCIsU3VjY2VlZHNTbGFudEVxdWFsOlwiXFx1MjI3RFwiLFN1Y2NlZWRzVGlsZGU6XCJcXHUyMjdGXCIsU3VjaFRoYXQ6XCJcXHUyMjBCXCIsU3VtOlwiXFx1MjIxMVwiLFN1cDpcIlxcdTIyRDFcIixTdXBlcnNldDpcIlxcdTIyODNcIixTdXBlcnNldEVxdWFsOlwiXFx1MjI4N1wiLFN1cHNldDpcIlxcdTIyRDFcIixUSE9SOlwiXFx4REVcIixUSE9STjpcIlxceERFXCIsVFJBREU6XCJcXHUyMTIyXCIsVFNIY3k6XCJcXHUwNDBCXCIsVFNjeTpcIlxcdTA0MjZcIixUYWI6XCJcdFwiLFRhdTpcIlxcdTAzQTRcIixUY2Fyb246XCJcXHUwMTY0XCIsVGNlZGlsOlwiXFx1MDE2MlwiLFRjeTpcIlxcdTA0MjJcIixUZnI6XCJcXHV7MUQ1MTd9XCIsVGhlcmVmb3JlOlwiXFx1MjIzNFwiLFRoZXRhOlwiXFx1MDM5OFwiLFRoaWNrU3BhY2U6XCJcXHUyMDVGXFx1MjAwQVwiLFRoaW5TcGFjZTpcIlxcdTIwMDlcIixUaWxkZTpcIlxcdTIyM0NcIixUaWxkZUVxdWFsOlwiXFx1MjI0M1wiLFRpbGRlRnVsbEVxdWFsOlwiXFx1MjI0NVwiLFRpbGRlVGlsZGU6XCJcXHUyMjQ4XCIsVG9wZjpcIlxcdXsxRDU0Qn1cIixUcmlwbGVEb3Q6XCJcXHUyMERCXCIsVHNjcjpcIlxcdXsxRDRBRn1cIixUc3Ryb2s6XCJcXHUwMTY2XCIsVWFjdXQ6XCJcXHhEQVwiLFVhY3V0ZTpcIlxceERBXCIsVWFycjpcIlxcdTIxOUZcIixVYXJyb2NpcjpcIlxcdTI5NDlcIixVYnJjeTpcIlxcdTA0MEVcIixVYnJldmU6XCJcXHUwMTZDXCIsVWNpcjpcIlxceERCXCIsVWNpcmM6XCJcXHhEQlwiLFVjeTpcIlxcdTA0MjNcIixVZGJsYWM6XCJcXHUwMTcwXCIsVWZyOlwiXFx1ezFENTE4fVwiLFVncmF2OlwiXFx4RDlcIixVZ3JhdmU6XCJcXHhEOVwiLFVtYWNyOlwiXFx1MDE2QVwiLFVuZGVyQmFyOlwiX1wiLFVuZGVyQnJhY2U6XCJcXHUyM0RGXCIsVW5kZXJCcmFja2V0OlwiXFx1MjNCNVwiLFVuZGVyUGFyZW50aGVzaXM6XCJcXHUyM0REXCIsVW5pb246XCJcXHUyMkMzXCIsVW5pb25QbHVzOlwiXFx1MjI4RVwiLFVvZ29uOlwiXFx1MDE3MlwiLFVvcGY6XCJcXHV7MUQ1NEN9XCIsVXBBcnJvdzpcIlxcdTIxOTFcIixVcEFycm93QmFyOlwiXFx1MjkxMlwiLFVwQXJyb3dEb3duQXJyb3c6XCJcXHUyMUM1XCIsVXBEb3duQXJyb3c6XCJcXHUyMTk1XCIsVXBFcXVpbGlicml1bTpcIlxcdTI5NkVcIixVcFRlZTpcIlxcdTIyQTVcIixVcFRlZUFycm93OlwiXFx1MjFBNVwiLFVwYXJyb3c6XCJcXHUyMUQxXCIsVXBkb3duYXJyb3c6XCJcXHUyMUQ1XCIsVXBwZXJMZWZ0QXJyb3c6XCJcXHUyMTk2XCIsVXBwZXJSaWdodEFycm93OlwiXFx1MjE5N1wiLFVwc2k6XCJcXHUwM0QyXCIsVXBzaWxvbjpcIlxcdTAzQTVcIixVcmluZzpcIlxcdTAxNkVcIixVc2NyOlwiXFx1ezFENEIwfVwiLFV0aWxkZTpcIlxcdTAxNjhcIixVdW06XCJcXHhEQ1wiLFV1bWw6XCJcXHhEQ1wiLFZEYXNoOlwiXFx1MjJBQlwiLFZiYXI6XCJcXHUyQUVCXCIsVmN5OlwiXFx1MDQxMlwiLFZkYXNoOlwiXFx1MjJBOVwiLFZkYXNobDpcIlxcdTJBRTZcIixWZWU6XCJcXHUyMkMxXCIsVmVyYmFyOlwiXFx1MjAxNlwiLFZlcnQ6XCJcXHUyMDE2XCIsVmVydGljYWxCYXI6XCJcXHUyMjIzXCIsVmVydGljYWxMaW5lOlwifFwiLFZlcnRpY2FsU2VwYXJhdG9yOlwiXFx1Mjc1OFwiLFZlcnRpY2FsVGlsZGU6XCJcXHUyMjQwXCIsVmVyeVRoaW5TcGFjZTpcIlxcdTIwMEFcIixWZnI6XCJcXHV7MUQ1MTl9XCIsVm9wZjpcIlxcdXsxRDU0RH1cIixWc2NyOlwiXFx1ezFENEIxfVwiLFZ2ZGFzaDpcIlxcdTIyQUFcIixXY2lyYzpcIlxcdTAxNzRcIixXZWRnZTpcIlxcdTIyQzBcIixXZnI6XCJcXHV7MUQ1MUF9XCIsV29wZjpcIlxcdXsxRDU0RX1cIixXc2NyOlwiXFx1ezFENEIyfVwiLFhmcjpcIlxcdXsxRDUxQn1cIixYaTpcIlxcdTAzOUVcIixYb3BmOlwiXFx1ezFENTRGfVwiLFhzY3I6XCJcXHV7MUQ0QjN9XCIsWUFjeTpcIlxcdTA0MkZcIixZSWN5OlwiXFx1MDQwN1wiLFlVY3k6XCJcXHUwNDJFXCIsWWFjdXQ6XCJcXHhERFwiLFlhY3V0ZTpcIlxceEREXCIsWWNpcmM6XCJcXHUwMTc2XCIsWWN5OlwiXFx1MDQyQlwiLFlmcjpcIlxcdXsxRDUxQ31cIixZb3BmOlwiXFx1ezFENTUwfVwiLFlzY3I6XCJcXHV7MUQ0QjR9XCIsWXVtbDpcIlxcdTAxNzhcIixaSGN5OlwiXFx1MDQxNlwiLFphY3V0ZTpcIlxcdTAxNzlcIixaY2Fyb246XCJcXHUwMTdEXCIsWmN5OlwiXFx1MDQxN1wiLFpkb3Q6XCJcXHUwMTdCXCIsWmVyb1dpZHRoU3BhY2U6XCJcXHUyMDBCXCIsWmV0YTpcIlxcdTAzOTZcIixaZnI6XCJcXHUyMTI4XCIsWm9wZjpcIlxcdTIxMjRcIixac2NyOlwiXFx1ezFENEI1fVwiLGFhY3V0OlwiXFx4RTFcIixhYWN1dGU6XCJcXHhFMVwiLGFicmV2ZTpcIlxcdTAxMDNcIixhYzpcIlxcdTIyM0VcIixhY0U6XCJcXHUyMjNFXFx1MDMzM1wiLGFjZDpcIlxcdTIyM0ZcIixhY2lyOlwiXFx4RTJcIixhY2lyYzpcIlxceEUyXCIsYWN1dDpcIlxceEI0XCIsYWN1dGU6XCJcXHhCNFwiLGFjeTpcIlxcdTA0MzBcIixhZWxpOlwiXFx4RTZcIixhZWxpZzpcIlxceEU2XCIsYWY6XCJcXHUyMDYxXCIsYWZyOlwiXFx1ezFENTFFfVwiLGFncmF2OlwiXFx4RTBcIixhZ3JhdmU6XCJcXHhFMFwiLGFsZWZzeW06XCJcXHUyMTM1XCIsYWxlcGg6XCJcXHUyMTM1XCIsYWxwaGE6XCJcXHUwM0IxXCIsYW1hY3I6XCJcXHUwMTAxXCIsYW1hbGc6XCJcXHUyQTNGXCIsYW06XCImXCIsYW1wOlwiJlwiLGFuZDpcIlxcdTIyMjdcIixhbmRhbmQ6XCJcXHUyQTU1XCIsYW5kZDpcIlxcdTJBNUNcIixhbmRzbG9wZTpcIlxcdTJBNThcIixhbmR2OlwiXFx1MkE1QVwiLGFuZzpcIlxcdTIyMjBcIixhbmdlOlwiXFx1MjlBNFwiLGFuZ2xlOlwiXFx1MjIyMFwiLGFuZ21zZDpcIlxcdTIyMjFcIixhbmdtc2RhYTpcIlxcdTI5QThcIixhbmdtc2RhYjpcIlxcdTI5QTlcIixhbmdtc2RhYzpcIlxcdTI5QUFcIixhbmdtc2RhZDpcIlxcdTI5QUJcIixhbmdtc2RhZTpcIlxcdTI5QUNcIixhbmdtc2RhZjpcIlxcdTI5QURcIixhbmdtc2RhZzpcIlxcdTI5QUVcIixhbmdtc2RhaDpcIlxcdTI5QUZcIixhbmdydDpcIlxcdTIyMUZcIixhbmdydHZiOlwiXFx1MjJCRVwiLGFuZ3J0dmJkOlwiXFx1Mjk5RFwiLGFuZ3NwaDpcIlxcdTIyMjJcIixhbmdzdDpcIlxceEM1XCIsYW5nemFycjpcIlxcdTIzN0NcIixhb2dvbjpcIlxcdTAxMDVcIixhb3BmOlwiXFx1ezFENTUyfVwiLGFwOlwiXFx1MjI0OFwiLGFwRTpcIlxcdTJBNzBcIixhcGFjaXI6XCJcXHUyQTZGXCIsYXBlOlwiXFx1MjI0QVwiLGFwaWQ6XCJcXHUyMjRCXCIsYXBvczpcIidcIixhcHByb3g6XCJcXHUyMjQ4XCIsYXBwcm94ZXE6XCJcXHUyMjRBXCIsYXJpbjpcIlxceEU1XCIsYXJpbmc6XCJcXHhFNVwiLGFzY3I6XCJcXHV7MUQ0QjZ9XCIsYXN0OlwiKlwiLGFzeW1wOlwiXFx1MjI0OFwiLGFzeW1wZXE6XCJcXHUyMjREXCIsYXRpbGQ6XCJcXHhFM1wiLGF0aWxkZTpcIlxceEUzXCIsYXVtOlwiXFx4RTRcIixhdW1sOlwiXFx4RTRcIixhd2NvbmludDpcIlxcdTIyMzNcIixhd2ludDpcIlxcdTJBMTFcIixiTm90OlwiXFx1MkFFRFwiLGJhY2tjb25nOlwiXFx1MjI0Q1wiLGJhY2tlcHNpbG9uOlwiXFx1MDNGNlwiLGJhY2twcmltZTpcIlxcdTIwMzVcIixiYWNrc2ltOlwiXFx1MjIzRFwiLGJhY2tzaW1lcTpcIlxcdTIyQ0RcIixiYXJ2ZWU6XCJcXHUyMkJEXCIsYmFyd2VkOlwiXFx1MjMwNVwiLGJhcndlZGdlOlwiXFx1MjMwNVwiLGJicms6XCJcXHUyM0I1XCIsYmJya3Ricms6XCJcXHUyM0I2XCIsYmNvbmc6XCJcXHUyMjRDXCIsYmN5OlwiXFx1MDQzMVwiLGJkcXVvOlwiXFx1MjAxRVwiLGJlY2F1czpcIlxcdTIyMzVcIixiZWNhdXNlOlwiXFx1MjIzNVwiLGJlbXB0eXY6XCJcXHUyOUIwXCIsYmVwc2k6XCJcXHUwM0Y2XCIsYmVybm91OlwiXFx1MjEyQ1wiLGJldGE6XCJcXHUwM0IyXCIsYmV0aDpcIlxcdTIxMzZcIixiZXR3ZWVuOlwiXFx1MjI2Q1wiLGJmcjpcIlxcdXsxRDUxRn1cIixiaWdjYXA6XCJcXHUyMkMyXCIsYmlnY2lyYzpcIlxcdTI1RUZcIixiaWdjdXA6XCJcXHUyMkMzXCIsYmlnb2RvdDpcIlxcdTJBMDBcIixiaWdvcGx1czpcIlxcdTJBMDFcIixiaWdvdGltZXM6XCJcXHUyQTAyXCIsYmlnc3FjdXA6XCJcXHUyQTA2XCIsYmlnc3RhcjpcIlxcdTI2MDVcIixiaWd0cmlhbmdsZWRvd246XCJcXHUyNUJEXCIsYmlndHJpYW5nbGV1cDpcIlxcdTI1QjNcIixiaWd1cGx1czpcIlxcdTJBMDRcIixiaWd2ZWU6XCJcXHUyMkMxXCIsYmlnd2VkZ2U6XCJcXHUyMkMwXCIsYmthcm93OlwiXFx1MjkwRFwiLGJsYWNrbG96ZW5nZTpcIlxcdTI5RUJcIixibGFja3NxdWFyZTpcIlxcdTI1QUFcIixibGFja3RyaWFuZ2xlOlwiXFx1MjVCNFwiLGJsYWNrdHJpYW5nbGVkb3duOlwiXFx1MjVCRVwiLGJsYWNrdHJpYW5nbGVsZWZ0OlwiXFx1MjVDMlwiLGJsYWNrdHJpYW5nbGVyaWdodDpcIlxcdTI1QjhcIixibGFuazpcIlxcdTI0MjNcIixibGsxMjpcIlxcdTI1OTJcIixibGsxNDpcIlxcdTI1OTFcIixibGszNDpcIlxcdTI1OTNcIixibG9jazpcIlxcdTI1ODhcIixibmU6XCI9XFx1MjBFNVwiLGJuZXF1aXY6XCJcXHUyMjYxXFx1MjBFNVwiLGJub3Q6XCJcXHUyMzEwXCIsYm9wZjpcIlxcdXsxRDU1M31cIixib3Q6XCJcXHUyMkE1XCIsYm90dG9tOlwiXFx1MjJBNVwiLGJvd3RpZTpcIlxcdTIyQzhcIixib3hETDpcIlxcdTI1NTdcIixib3hEUjpcIlxcdTI1NTRcIixib3hEbDpcIlxcdTI1NTZcIixib3hEcjpcIlxcdTI1NTNcIixib3hIOlwiXFx1MjU1MFwiLGJveEhEOlwiXFx1MjU2NlwiLGJveEhVOlwiXFx1MjU2OVwiLGJveEhkOlwiXFx1MjU2NFwiLGJveEh1OlwiXFx1MjU2N1wiLGJveFVMOlwiXFx1MjU1RFwiLGJveFVSOlwiXFx1MjU1QVwiLGJveFVsOlwiXFx1MjU1Q1wiLGJveFVyOlwiXFx1MjU1OVwiLGJveFY6XCJcXHUyNTUxXCIsYm94Vkg6XCJcXHUyNTZDXCIsYm94Vkw6XCJcXHUyNTYzXCIsYm94VlI6XCJcXHUyNTYwXCIsYm94Vmg6XCJcXHUyNTZCXCIsYm94Vmw6XCJcXHUyNTYyXCIsYm94VnI6XCJcXHUyNTVGXCIsYm94Ym94OlwiXFx1MjlDOVwiLGJveGRMOlwiXFx1MjU1NVwiLGJveGRSOlwiXFx1MjU1MlwiLGJveGRsOlwiXFx1MjUxMFwiLGJveGRyOlwiXFx1MjUwQ1wiLGJveGg6XCJcXHUyNTAwXCIsYm94aEQ6XCJcXHUyNTY1XCIsYm94aFU6XCJcXHUyNTY4XCIsYm94aGQ6XCJcXHUyNTJDXCIsYm94aHU6XCJcXHUyNTM0XCIsYm94bWludXM6XCJcXHUyMjlGXCIsYm94cGx1czpcIlxcdTIyOUVcIixib3h0aW1lczpcIlxcdTIyQTBcIixib3h1TDpcIlxcdTI1NUJcIixib3h1UjpcIlxcdTI1NThcIixib3h1bDpcIlxcdTI1MThcIixib3h1cjpcIlxcdTI1MTRcIixib3h2OlwiXFx1MjUwMlwiLGJveHZIOlwiXFx1MjU2QVwiLGJveHZMOlwiXFx1MjU2MVwiLGJveHZSOlwiXFx1MjU1RVwiLGJveHZoOlwiXFx1MjUzQ1wiLGJveHZsOlwiXFx1MjUyNFwiLGJveHZyOlwiXFx1MjUxQ1wiLGJwcmltZTpcIlxcdTIwMzVcIixicmV2ZTpcIlxcdTAyRDhcIixicnZiYTpcIlxceEE2XCIsYnJ2YmFyOlwiXFx4QTZcIixic2NyOlwiXFx1ezFENEI3fVwiLGJzZW1pOlwiXFx1MjA0RlwiLGJzaW06XCJcXHUyMjNEXCIsYnNpbWU6XCJcXHUyMkNEXCIsYnNvbDpcIlxcXFxcIixic29sYjpcIlxcdTI5QzVcIixic29saHN1YjpcIlxcdTI3QzhcIixidWxsOlwiXFx1MjAyMlwiLGJ1bGxldDpcIlxcdTIwMjJcIixidW1wOlwiXFx1MjI0RVwiLGJ1bXBFOlwiXFx1MkFBRVwiLGJ1bXBlOlwiXFx1MjI0RlwiLGJ1bXBlcTpcIlxcdTIyNEZcIixjYWN1dGU6XCJcXHUwMTA3XCIsY2FwOlwiXFx1MjIyOVwiLGNhcGFuZDpcIlxcdTJBNDRcIixjYXBicmN1cDpcIlxcdTJBNDlcIixjYXBjYXA6XCJcXHUyQTRCXCIsY2FwY3VwOlwiXFx1MkE0N1wiLGNhcGRvdDpcIlxcdTJBNDBcIixjYXBzOlwiXFx1MjIyOVxcdUZFMDBcIixjYXJldDpcIlxcdTIwNDFcIixjYXJvbjpcIlxcdTAyQzdcIixjY2FwczpcIlxcdTJBNERcIixjY2Fyb246XCJcXHUwMTBEXCIsY2NlZGk6XCJcXHhFN1wiLGNjZWRpbDpcIlxceEU3XCIsY2NpcmM6XCJcXHUwMTA5XCIsY2N1cHM6XCJcXHUyQTRDXCIsY2N1cHNzbTpcIlxcdTJBNTBcIixjZG90OlwiXFx1MDEwQlwiLGNlZGk6XCJcXHhCOFwiLGNlZGlsOlwiXFx4QjhcIixjZW1wdHl2OlwiXFx1MjlCMlwiLGNlbjpcIlxceEEyXCIsY2VudDpcIlxceEEyXCIsY2VudGVyZG90OlwiXFx4QjdcIixjZnI6XCJcXHV7MUQ1MjB9XCIsY2hjeTpcIlxcdTA0NDdcIixjaGVjazpcIlxcdTI3MTNcIixjaGVja21hcms6XCJcXHUyNzEzXCIsY2hpOlwiXFx1MDNDN1wiLGNpcjpcIlxcdTI1Q0JcIixjaXJFOlwiXFx1MjlDM1wiLGNpcmM6XCJcXHUwMkM2XCIsY2lyY2VxOlwiXFx1MjI1N1wiLGNpcmNsZWFycm93bGVmdDpcIlxcdTIxQkFcIixjaXJjbGVhcnJvd3JpZ2h0OlwiXFx1MjFCQlwiLGNpcmNsZWRSOlwiXFx4QUVcIixjaXJjbGVkUzpcIlxcdTI0QzhcIixjaXJjbGVkYXN0OlwiXFx1MjI5QlwiLGNpcmNsZWRjaXJjOlwiXFx1MjI5QVwiLGNpcmNsZWRkYXNoOlwiXFx1MjI5RFwiLGNpcmU6XCJcXHUyMjU3XCIsY2lyZm5pbnQ6XCJcXHUyQTEwXCIsY2lybWlkOlwiXFx1MkFFRlwiLGNpcnNjaXI6XCJcXHUyOUMyXCIsY2x1YnM6XCJcXHUyNjYzXCIsY2x1YnN1aXQ6XCJcXHUyNjYzXCIsY29sb246XCI6XCIsY29sb25lOlwiXFx1MjI1NFwiLGNvbG9uZXE6XCJcXHUyMjU0XCIsY29tbWE6XCIsXCIsY29tbWF0OlwiQFwiLGNvbXA6XCJcXHUyMjAxXCIsY29tcGZuOlwiXFx1MjIxOFwiLGNvbXBsZW1lbnQ6XCJcXHUyMjAxXCIsY29tcGxleGVzOlwiXFx1MjEwMlwiLGNvbmc6XCJcXHUyMjQ1XCIsY29uZ2RvdDpcIlxcdTJBNkRcIixjb25pbnQ6XCJcXHUyMjJFXCIsY29wZjpcIlxcdXsxRDU1NH1cIixjb3Byb2Q6XCJcXHUyMjEwXCIsY29wOlwiXFx4QTlcIixjb3B5OlwiXFx4QTlcIixjb3B5c3I6XCJcXHUyMTE3XCIsY3JhcnI6XCJcXHUyMUI1XCIsY3Jvc3M6XCJcXHUyNzE3XCIsY3NjcjpcIlxcdXsxRDRCOH1cIixjc3ViOlwiXFx1MkFDRlwiLGNzdWJlOlwiXFx1MkFEMVwiLGNzdXA6XCJcXHUyQUQwXCIsY3N1cGU6XCJcXHUyQUQyXCIsY3Rkb3Q6XCJcXHUyMkVGXCIsY3VkYXJybDpcIlxcdTI5MzhcIixjdWRhcnJyOlwiXFx1MjkzNVwiLGN1ZXByOlwiXFx1MjJERVwiLGN1ZXNjOlwiXFx1MjJERlwiLGN1bGFycjpcIlxcdTIxQjZcIixjdWxhcnJwOlwiXFx1MjkzRFwiLGN1cDpcIlxcdTIyMkFcIixjdXBicmNhcDpcIlxcdTJBNDhcIixjdXBjYXA6XCJcXHUyQTQ2XCIsY3VwY3VwOlwiXFx1MkE0QVwiLGN1cGRvdDpcIlxcdTIyOERcIixjdXBvcjpcIlxcdTJBNDVcIixjdXBzOlwiXFx1MjIyQVxcdUZFMDBcIixjdXJhcnI6XCJcXHUyMUI3XCIsY3VyYXJybTpcIlxcdTI5M0NcIixjdXJseWVxcHJlYzpcIlxcdTIyREVcIixjdXJseWVxc3VjYzpcIlxcdTIyREZcIixjdXJseXZlZTpcIlxcdTIyQ0VcIixjdXJseXdlZGdlOlwiXFx1MjJDRlwiLGN1cnJlOlwiXFx4QTRcIixjdXJyZW46XCJcXHhBNFwiLGN1cnZlYXJyb3dsZWZ0OlwiXFx1MjFCNlwiLGN1cnZlYXJyb3dyaWdodDpcIlxcdTIxQjdcIixjdXZlZTpcIlxcdTIyQ0VcIixjdXdlZDpcIlxcdTIyQ0ZcIixjd2NvbmludDpcIlxcdTIyMzJcIixjd2ludDpcIlxcdTIyMzFcIixjeWxjdHk6XCJcXHUyMzJEXCIsZEFycjpcIlxcdTIxRDNcIixkSGFyOlwiXFx1Mjk2NVwiLGRhZ2dlcjpcIlxcdTIwMjBcIixkYWxldGg6XCJcXHUyMTM4XCIsZGFycjpcIlxcdTIxOTNcIixkYXNoOlwiXFx1MjAxMFwiLGRhc2h2OlwiXFx1MjJBM1wiLGRia2Fyb3c6XCJcXHUyOTBGXCIsZGJsYWM6XCJcXHUwMkREXCIsZGNhcm9uOlwiXFx1MDEwRlwiLGRjeTpcIlxcdTA0MzRcIixkZDpcIlxcdTIxNDZcIixkZGFnZ2VyOlwiXFx1MjAyMVwiLGRkYXJyOlwiXFx1MjFDQVwiLGRkb3RzZXE6XCJcXHUyQTc3XCIsZGU6XCJcXHhCMFwiLGRlZzpcIlxceEIwXCIsZGVsdGE6XCJcXHUwM0I0XCIsZGVtcHR5djpcIlxcdTI5QjFcIixkZmlzaHQ6XCJcXHUyOTdGXCIsZGZyOlwiXFx1ezFENTIxfVwiLGRoYXJsOlwiXFx1MjFDM1wiLGRoYXJyOlwiXFx1MjFDMlwiLGRpYW06XCJcXHUyMkM0XCIsZGlhbW9uZDpcIlxcdTIyQzRcIixkaWFtb25kc3VpdDpcIlxcdTI2NjZcIixkaWFtczpcIlxcdTI2NjZcIixkaWU6XCJcXHhBOFwiLGRpZ2FtbWE6XCJcXHUwM0REXCIsZGlzaW46XCJcXHUyMkYyXCIsZGl2OlwiXFx4RjdcIixkaXZpZDpcIlxceEY3XCIsZGl2aWRlOlwiXFx4RjdcIixkaXZpZGVvbnRpbWVzOlwiXFx1MjJDN1wiLGRpdm9ueDpcIlxcdTIyQzdcIixkamN5OlwiXFx1MDQ1MlwiLGRsY29ybjpcIlxcdTIzMUVcIixkbGNyb3A6XCJcXHUyMzBEXCIsZG9sbGFyOlwiJFwiLGRvcGY6XCJcXHV7MUQ1NTV9XCIsZG90OlwiXFx1MDJEOVwiLGRvdGVxOlwiXFx1MjI1MFwiLGRvdGVxZG90OlwiXFx1MjI1MVwiLGRvdG1pbnVzOlwiXFx1MjIzOFwiLGRvdHBsdXM6XCJcXHUyMjE0XCIsZG90c3F1YXJlOlwiXFx1MjJBMVwiLGRvdWJsZWJhcndlZGdlOlwiXFx1MjMwNlwiLGRvd25hcnJvdzpcIlxcdTIxOTNcIixkb3duZG93bmFycm93czpcIlxcdTIxQ0FcIixkb3duaGFycG9vbmxlZnQ6XCJcXHUyMUMzXCIsZG93bmhhcnBvb25yaWdodDpcIlxcdTIxQzJcIixkcmJrYXJvdzpcIlxcdTI5MTBcIixkcmNvcm46XCJcXHUyMzFGXCIsZHJjcm9wOlwiXFx1MjMwQ1wiLGRzY3I6XCJcXHV7MUQ0Qjl9XCIsZHNjeTpcIlxcdTA0NTVcIixkc29sOlwiXFx1MjlGNlwiLGRzdHJvazpcIlxcdTAxMTFcIixkdGRvdDpcIlxcdTIyRjFcIixkdHJpOlwiXFx1MjVCRlwiLGR0cmlmOlwiXFx1MjVCRVwiLGR1YXJyOlwiXFx1MjFGNVwiLGR1aGFyOlwiXFx1Mjk2RlwiLGR3YW5nbGU6XCJcXHUyOUE2XCIsZHpjeTpcIlxcdTA0NUZcIixkemlncmFycjpcIlxcdTI3RkZcIixlRERvdDpcIlxcdTJBNzdcIixlRG90OlwiXFx1MjI1MVwiLGVhY3V0OlwiXFx4RTlcIixlYWN1dGU6XCJcXHhFOVwiLGVhc3RlcjpcIlxcdTJBNkVcIixlY2Fyb246XCJcXHUwMTFCXCIsZWNpcjpcIlxceEVBXCIsZWNpcmM6XCJcXHhFQVwiLGVjb2xvbjpcIlxcdTIyNTVcIixlY3k6XCJcXHUwNDREXCIsZWRvdDpcIlxcdTAxMTdcIixlZTpcIlxcdTIxNDdcIixlZkRvdDpcIlxcdTIyNTJcIixlZnI6XCJcXHV7MUQ1MjJ9XCIsZWc6XCJcXHUyQTlBXCIsZWdyYXY6XCJcXHhFOFwiLGVncmF2ZTpcIlxceEU4XCIsZWdzOlwiXFx1MkE5NlwiLGVnc2RvdDpcIlxcdTJBOThcIixlbDpcIlxcdTJBOTlcIixlbGludGVyczpcIlxcdTIzRTdcIixlbGw6XCJcXHUyMTEzXCIsZWxzOlwiXFx1MkE5NVwiLGVsc2RvdDpcIlxcdTJBOTdcIixlbWFjcjpcIlxcdTAxMTNcIixlbXB0eTpcIlxcdTIyMDVcIixlbXB0eXNldDpcIlxcdTIyMDVcIixlbXB0eXY6XCJcXHUyMjA1XCIsZW1zcDEzOlwiXFx1MjAwNFwiLGVtc3AxNDpcIlxcdTIwMDVcIixlbXNwOlwiXFx1MjAwM1wiLGVuZzpcIlxcdTAxNEJcIixlbnNwOlwiXFx1MjAwMlwiLGVvZ29uOlwiXFx1MDExOVwiLGVvcGY6XCJcXHV7MUQ1NTZ9XCIsZXBhcjpcIlxcdTIyRDVcIixlcGFyc2w6XCJcXHUyOUUzXCIsZXBsdXM6XCJcXHUyQTcxXCIsZXBzaTpcIlxcdTAzQjVcIixlcHNpbG9uOlwiXFx1MDNCNVwiLGVwc2l2OlwiXFx1MDNGNVwiLGVxY2lyYzpcIlxcdTIyNTZcIixlcWNvbG9uOlwiXFx1MjI1NVwiLGVxc2ltOlwiXFx1MjI0MlwiLGVxc2xhbnRndHI6XCJcXHUyQTk2XCIsZXFzbGFudGxlc3M6XCJcXHUyQTk1XCIsZXF1YWxzOlwiPVwiLGVxdWVzdDpcIlxcdTIyNUZcIixlcXVpdjpcIlxcdTIyNjFcIixlcXVpdkREOlwiXFx1MkE3OFwiLGVxdnBhcnNsOlwiXFx1MjlFNVwiLGVyRG90OlwiXFx1MjI1M1wiLGVyYXJyOlwiXFx1Mjk3MVwiLGVzY3I6XCJcXHUyMTJGXCIsZXNkb3Q6XCJcXHUyMjUwXCIsZXNpbTpcIlxcdTIyNDJcIixldGE6XCJcXHUwM0I3XCIsZXQ6XCJcXHhGMFwiLGV0aDpcIlxceEYwXCIsZXVtOlwiXFx4RUJcIixldW1sOlwiXFx4RUJcIixldXJvOlwiXFx1MjBBQ1wiLGV4Y2w6XCIhXCIsZXhpc3Q6XCJcXHUyMjAzXCIsZXhwZWN0YXRpb246XCJcXHUyMTMwXCIsZXhwb25lbnRpYWxlOlwiXFx1MjE0N1wiLGZhbGxpbmdkb3RzZXE6XCJcXHUyMjUyXCIsZmN5OlwiXFx1MDQ0NFwiLGZlbWFsZTpcIlxcdTI2NDBcIixmZmlsaWc6XCJcXHVGQjAzXCIsZmZsaWc6XCJcXHVGQjAwXCIsZmZsbGlnOlwiXFx1RkIwNFwiLGZmcjpcIlxcdXsxRDUyM31cIixmaWxpZzpcIlxcdUZCMDFcIixmamxpZzpcImZqXCIsZmxhdDpcIlxcdTI2NkRcIixmbGxpZzpcIlxcdUZCMDJcIixmbHRuczpcIlxcdTI1QjFcIixmbm9mOlwiXFx1MDE5MlwiLGZvcGY6XCJcXHV7MUQ1NTd9XCIsZm9yYWxsOlwiXFx1MjIwMFwiLGZvcms6XCJcXHUyMkQ0XCIsZm9ya3Y6XCJcXHUyQUQ5XCIsZnBhcnRpbnQ6XCJcXHUyQTBEXCIsZnJhYzE6XCJcXHhCQ1wiLGZyYWMxMjpcIlxceEJEXCIsZnJhYzEzOlwiXFx1MjE1M1wiLGZyYWMxNDpcIlxceEJDXCIsZnJhYzE1OlwiXFx1MjE1NVwiLGZyYWMxNjpcIlxcdTIxNTlcIixmcmFjMTg6XCJcXHUyMTVCXCIsZnJhYzIzOlwiXFx1MjE1NFwiLGZyYWMyNTpcIlxcdTIxNTZcIixmcmFjMzpcIlxceEJFXCIsZnJhYzM0OlwiXFx4QkVcIixmcmFjMzU6XCJcXHUyMTU3XCIsZnJhYzM4OlwiXFx1MjE1Q1wiLGZyYWM0NTpcIlxcdTIxNThcIixmcmFjNTY6XCJcXHUyMTVBXCIsZnJhYzU4OlwiXFx1MjE1RFwiLGZyYWM3ODpcIlxcdTIxNUVcIixmcmFzbDpcIlxcdTIwNDRcIixmcm93bjpcIlxcdTIzMjJcIixmc2NyOlwiXFx1ezFENEJCfVwiLGdFOlwiXFx1MjI2N1wiLGdFbDpcIlxcdTJBOENcIixnYWN1dGU6XCJcXHUwMUY1XCIsZ2FtbWE6XCJcXHUwM0IzXCIsZ2FtbWFkOlwiXFx1MDNERFwiLGdhcDpcIlxcdTJBODZcIixnYnJldmU6XCJcXHUwMTFGXCIsZ2NpcmM6XCJcXHUwMTFEXCIsZ2N5OlwiXFx1MDQzM1wiLGdkb3Q6XCJcXHUwMTIxXCIsZ2U6XCJcXHUyMjY1XCIsZ2VsOlwiXFx1MjJEQlwiLGdlcTpcIlxcdTIyNjVcIixnZXFxOlwiXFx1MjI2N1wiLGdlcXNsYW50OlwiXFx1MkE3RVwiLGdlczpcIlxcdTJBN0VcIixnZXNjYzpcIlxcdTJBQTlcIixnZXNkb3Q6XCJcXHUyQTgwXCIsZ2VzZG90bzpcIlxcdTJBODJcIixnZXNkb3RvbDpcIlxcdTJBODRcIixnZXNsOlwiXFx1MjJEQlxcdUZFMDBcIixnZXNsZXM6XCJcXHUyQTk0XCIsZ2ZyOlwiXFx1ezFENTI0fVwiLGdnOlwiXFx1MjI2QlwiLGdnZzpcIlxcdTIyRDlcIixnaW1lbDpcIlxcdTIxMzdcIixnamN5OlwiXFx1MDQ1M1wiLGdsOlwiXFx1MjI3N1wiLGdsRTpcIlxcdTJBOTJcIixnbGE6XCJcXHUyQUE1XCIsZ2xqOlwiXFx1MkFBNFwiLGduRTpcIlxcdTIyNjlcIixnbmFwOlwiXFx1MkE4QVwiLGduYXBwcm94OlwiXFx1MkE4QVwiLGduZTpcIlxcdTJBODhcIixnbmVxOlwiXFx1MkE4OFwiLGduZXFxOlwiXFx1MjI2OVwiLGduc2ltOlwiXFx1MjJFN1wiLGdvcGY6XCJcXHV7MUQ1NTh9XCIsZ3JhdmU6XCJgXCIsZ3NjcjpcIlxcdTIxMEFcIixnc2ltOlwiXFx1MjI3M1wiLGdzaW1lOlwiXFx1MkE4RVwiLGdzaW1sOlwiXFx1MkE5MFwiLGc6XCI+XCIsZ3Q6XCI+XCIsZ3RjYzpcIlxcdTJBQTdcIixndGNpcjpcIlxcdTJBN0FcIixndGRvdDpcIlxcdTIyRDdcIixndGxQYXI6XCJcXHUyOTk1XCIsZ3RxdWVzdDpcIlxcdTJBN0NcIixndHJhcHByb3g6XCJcXHUyQTg2XCIsZ3RyYXJyOlwiXFx1Mjk3OFwiLGd0cmRvdDpcIlxcdTIyRDdcIixndHJlcWxlc3M6XCJcXHUyMkRCXCIsZ3RyZXFxbGVzczpcIlxcdTJBOENcIixndHJsZXNzOlwiXFx1MjI3N1wiLGd0cnNpbTpcIlxcdTIyNzNcIixndmVydG5lcXE6XCJcXHUyMjY5XFx1RkUwMFwiLGd2bkU6XCJcXHUyMjY5XFx1RkUwMFwiLGhBcnI6XCJcXHUyMUQ0XCIsaGFpcnNwOlwiXFx1MjAwQVwiLGhhbGY6XCJcXHhCRFwiLGhhbWlsdDpcIlxcdTIxMEJcIixoYXJkY3k6XCJcXHUwNDRBXCIsaGFycjpcIlxcdTIxOTRcIixoYXJyY2lyOlwiXFx1Mjk0OFwiLGhhcnJ3OlwiXFx1MjFBRFwiLGhiYXI6XCJcXHUyMTBGXCIsaGNpcmM6XCJcXHUwMTI1XCIsaGVhcnRzOlwiXFx1MjY2NVwiLGhlYXJ0c3VpdDpcIlxcdTI2NjVcIixoZWxsaXA6XCJcXHUyMDI2XCIsaGVyY29uOlwiXFx1MjJCOVwiLGhmcjpcIlxcdXsxRDUyNX1cIixoa3NlYXJvdzpcIlxcdTI5MjVcIixoa3N3YXJvdzpcIlxcdTI5MjZcIixob2FycjpcIlxcdTIxRkZcIixob210aHQ6XCJcXHUyMjNCXCIsaG9va2xlZnRhcnJvdzpcIlxcdTIxQTlcIixob29rcmlnaHRhcnJvdzpcIlxcdTIxQUFcIixob3BmOlwiXFx1ezFENTU5fVwiLGhvcmJhcjpcIlxcdTIwMTVcIixoc2NyOlwiXFx1ezFENEJEfVwiLGhzbGFzaDpcIlxcdTIxMEZcIixoc3Ryb2s6XCJcXHUwMTI3XCIsaHlidWxsOlwiXFx1MjA0M1wiLGh5cGhlbjpcIlxcdTIwMTBcIixpYWN1dDpcIlxceEVEXCIsaWFjdXRlOlwiXFx4RURcIixpYzpcIlxcdTIwNjNcIixpY2lyOlwiXFx4RUVcIixpY2lyYzpcIlxceEVFXCIsaWN5OlwiXFx1MDQzOFwiLGllY3k6XCJcXHUwNDM1XCIsaWV4YzpcIlxceEExXCIsaWV4Y2w6XCJcXHhBMVwiLGlmZjpcIlxcdTIxRDRcIixpZnI6XCJcXHV7MUQ1MjZ9XCIsaWdyYXY6XCJcXHhFQ1wiLGlncmF2ZTpcIlxceEVDXCIsaWk6XCJcXHUyMTQ4XCIsaWlpaW50OlwiXFx1MkEwQ1wiLGlpaW50OlwiXFx1MjIyRFwiLGlpbmZpbjpcIlxcdTI5RENcIixpaW90YTpcIlxcdTIxMjlcIixpamxpZzpcIlxcdTAxMzNcIixpbWFjcjpcIlxcdTAxMkJcIixpbWFnZTpcIlxcdTIxMTFcIixpbWFnbGluZTpcIlxcdTIxMTBcIixpbWFncGFydDpcIlxcdTIxMTFcIixpbWF0aDpcIlxcdTAxMzFcIixpbW9mOlwiXFx1MjJCN1wiLGltcGVkOlwiXFx1MDFCNVwiLGluOlwiXFx1MjIwOFwiLGluY2FyZTpcIlxcdTIxMDVcIixpbmZpbjpcIlxcdTIyMUVcIixpbmZpbnRpZTpcIlxcdTI5RERcIixpbm9kb3Q6XCJcXHUwMTMxXCIsaW50OlwiXFx1MjIyQlwiLGludGNhbDpcIlxcdTIyQkFcIixpbnRlZ2VyczpcIlxcdTIxMjRcIixpbnRlcmNhbDpcIlxcdTIyQkFcIixpbnRsYXJoazpcIlxcdTJBMTdcIixpbnRwcm9kOlwiXFx1MkEzQ1wiLGlvY3k6XCJcXHUwNDUxXCIsaW9nb246XCJcXHUwMTJGXCIsaW9wZjpcIlxcdXsxRDU1QX1cIixpb3RhOlwiXFx1MDNCOVwiLGlwcm9kOlwiXFx1MkEzQ1wiLGlxdWVzOlwiXFx4QkZcIixpcXVlc3Q6XCJcXHhCRlwiLGlzY3I6XCJcXHV7MUQ0QkV9XCIsaXNpbjpcIlxcdTIyMDhcIixpc2luRTpcIlxcdTIyRjlcIixpc2luZG90OlwiXFx1MjJGNVwiLGlzaW5zOlwiXFx1MjJGNFwiLGlzaW5zdjpcIlxcdTIyRjNcIixpc2ludjpcIlxcdTIyMDhcIixpdDpcIlxcdTIwNjJcIixpdGlsZGU6XCJcXHUwMTI5XCIsaXVrY3k6XCJcXHUwNDU2XCIsaXVtOlwiXFx4RUZcIixpdW1sOlwiXFx4RUZcIixqY2lyYzpcIlxcdTAxMzVcIixqY3k6XCJcXHUwNDM5XCIsamZyOlwiXFx1ezFENTI3fVwiLGptYXRoOlwiXFx1MDIzN1wiLGpvcGY6XCJcXHV7MUQ1NUJ9XCIsanNjcjpcIlxcdXsxRDRCRn1cIixqc2VyY3k6XCJcXHUwNDU4XCIsanVrY3k6XCJcXHUwNDU0XCIsa2FwcGE6XCJcXHUwM0JBXCIsa2FwcGF2OlwiXFx1MDNGMFwiLGtjZWRpbDpcIlxcdTAxMzdcIixrY3k6XCJcXHUwNDNBXCIsa2ZyOlwiXFx1ezFENTI4fVwiLGtncmVlbjpcIlxcdTAxMzhcIixraGN5OlwiXFx1MDQ0NVwiLGtqY3k6XCJcXHUwNDVDXCIsa29wZjpcIlxcdXsxRDU1Q31cIixrc2NyOlwiXFx1ezFENEMwfVwiLGxBYXJyOlwiXFx1MjFEQVwiLGxBcnI6XCJcXHUyMUQwXCIsbEF0YWlsOlwiXFx1MjkxQlwiLGxCYXJyOlwiXFx1MjkwRVwiLGxFOlwiXFx1MjI2NlwiLGxFZzpcIlxcdTJBOEJcIixsSGFyOlwiXFx1Mjk2MlwiLGxhY3V0ZTpcIlxcdTAxM0FcIixsYWVtcHR5djpcIlxcdTI5QjRcIixsYWdyYW46XCJcXHUyMTEyXCIsbGFtYmRhOlwiXFx1MDNCQlwiLGxhbmc6XCJcXHUyN0U4XCIsbGFuZ2Q6XCJcXHUyOTkxXCIsbGFuZ2xlOlwiXFx1MjdFOFwiLGxhcDpcIlxcdTJBODVcIixsYXF1OlwiXFx4QUJcIixsYXF1bzpcIlxceEFCXCIsbGFycjpcIlxcdTIxOTBcIixsYXJyYjpcIlxcdTIxRTRcIixsYXJyYmZzOlwiXFx1MjkxRlwiLGxhcnJmczpcIlxcdTI5MURcIixsYXJyaGs6XCJcXHUyMUE5XCIsbGFycmxwOlwiXFx1MjFBQlwiLGxhcnJwbDpcIlxcdTI5MzlcIixsYXJyc2ltOlwiXFx1Mjk3M1wiLGxhcnJ0bDpcIlxcdTIxQTJcIixsYXQ6XCJcXHUyQUFCXCIsbGF0YWlsOlwiXFx1MjkxOVwiLGxhdGU6XCJcXHUyQUFEXCIsbGF0ZXM6XCJcXHUyQUFEXFx1RkUwMFwiLGxiYXJyOlwiXFx1MjkwQ1wiLGxiYnJrOlwiXFx1Mjc3MlwiLGxicmFjZTpcIntcIixsYnJhY2s6XCJbXCIsbGJya2U6XCJcXHUyOThCXCIsbGJya3NsZDpcIlxcdTI5OEZcIixsYnJrc2x1OlwiXFx1Mjk4RFwiLGxjYXJvbjpcIlxcdTAxM0VcIixsY2VkaWw6XCJcXHUwMTNDXCIsbGNlaWw6XCJcXHUyMzA4XCIsbGN1YjpcIntcIixsY3k6XCJcXHUwNDNCXCIsbGRjYTpcIlxcdTI5MzZcIixsZHF1bzpcIlxcdTIwMUNcIixsZHF1b3I6XCJcXHUyMDFFXCIsbGRyZGhhcjpcIlxcdTI5NjdcIixsZHJ1c2hhcjpcIlxcdTI5NEJcIixsZHNoOlwiXFx1MjFCMlwiLGxlOlwiXFx1MjI2NFwiLGxlZnRhcnJvdzpcIlxcdTIxOTBcIixsZWZ0YXJyb3d0YWlsOlwiXFx1MjFBMlwiLGxlZnRoYXJwb29uZG93bjpcIlxcdTIxQkRcIixsZWZ0aGFycG9vbnVwOlwiXFx1MjFCQ1wiLGxlZnRsZWZ0YXJyb3dzOlwiXFx1MjFDN1wiLGxlZnRyaWdodGFycm93OlwiXFx1MjE5NFwiLGxlZnRyaWdodGFycm93czpcIlxcdTIxQzZcIixsZWZ0cmlnaHRoYXJwb29uczpcIlxcdTIxQ0JcIixsZWZ0cmlnaHRzcXVpZ2Fycm93OlwiXFx1MjFBRFwiLGxlZnR0aHJlZXRpbWVzOlwiXFx1MjJDQlwiLGxlZzpcIlxcdTIyREFcIixsZXE6XCJcXHUyMjY0XCIsbGVxcTpcIlxcdTIyNjZcIixsZXFzbGFudDpcIlxcdTJBN0RcIixsZXM6XCJcXHUyQTdEXCIsbGVzY2M6XCJcXHUyQUE4XCIsbGVzZG90OlwiXFx1MkE3RlwiLGxlc2RvdG86XCJcXHUyQTgxXCIsbGVzZG90b3I6XCJcXHUyQTgzXCIsbGVzZzpcIlxcdTIyREFcXHVGRTAwXCIsbGVzZ2VzOlwiXFx1MkE5M1wiLGxlc3NhcHByb3g6XCJcXHUyQTg1XCIsbGVzc2RvdDpcIlxcdTIyRDZcIixsZXNzZXFndHI6XCJcXHUyMkRBXCIsbGVzc2VxcWd0cjpcIlxcdTJBOEJcIixsZXNzZ3RyOlwiXFx1MjI3NlwiLGxlc3NzaW06XCJcXHUyMjcyXCIsbGZpc2h0OlwiXFx1Mjk3Q1wiLGxmbG9vcjpcIlxcdTIzMEFcIixsZnI6XCJcXHV7MUQ1Mjl9XCIsbGc6XCJcXHUyMjc2XCIsbGdFOlwiXFx1MkE5MVwiLGxoYXJkOlwiXFx1MjFCRFwiLGxoYXJ1OlwiXFx1MjFCQ1wiLGxoYXJ1bDpcIlxcdTI5NkFcIixsaGJsazpcIlxcdTI1ODRcIixsamN5OlwiXFx1MDQ1OVwiLGxsOlwiXFx1MjI2QVwiLGxsYXJyOlwiXFx1MjFDN1wiLGxsY29ybmVyOlwiXFx1MjMxRVwiLGxsaGFyZDpcIlxcdTI5NkJcIixsbHRyaTpcIlxcdTI1RkFcIixsbWlkb3Q6XCJcXHUwMTQwXCIsbG1vdXN0OlwiXFx1MjNCMFwiLGxtb3VzdGFjaGU6XCJcXHUyM0IwXCIsbG5FOlwiXFx1MjI2OFwiLGxuYXA6XCJcXHUyQTg5XCIsbG5hcHByb3g6XCJcXHUyQTg5XCIsbG5lOlwiXFx1MkE4N1wiLGxuZXE6XCJcXHUyQTg3XCIsbG5lcXE6XCJcXHUyMjY4XCIsbG5zaW06XCJcXHUyMkU2XCIsbG9hbmc6XCJcXHUyN0VDXCIsbG9hcnI6XCJcXHUyMUZEXCIsbG9icms6XCJcXHUyN0U2XCIsbG9uZ2xlZnRhcnJvdzpcIlxcdTI3RjVcIixsb25nbGVmdHJpZ2h0YXJyb3c6XCJcXHUyN0Y3XCIsbG9uZ21hcHN0bzpcIlxcdTI3RkNcIixsb25ncmlnaHRhcnJvdzpcIlxcdTI3RjZcIixsb29wYXJyb3dsZWZ0OlwiXFx1MjFBQlwiLGxvb3BhcnJvd3JpZ2h0OlwiXFx1MjFBQ1wiLGxvcGFyOlwiXFx1Mjk4NVwiLGxvcGY6XCJcXHV7MUQ1NUR9XCIsbG9wbHVzOlwiXFx1MkEyRFwiLGxvdGltZXM6XCJcXHUyQTM0XCIsbG93YXN0OlwiXFx1MjIxN1wiLGxvd2JhcjpcIl9cIixsb3o6XCJcXHUyNUNBXCIsbG96ZW5nZTpcIlxcdTI1Q0FcIixsb3pmOlwiXFx1MjlFQlwiLGxwYXI6XCIoXCIsbHBhcmx0OlwiXFx1Mjk5M1wiLGxyYXJyOlwiXFx1MjFDNlwiLGxyY29ybmVyOlwiXFx1MjMxRlwiLGxyaGFyOlwiXFx1MjFDQlwiLGxyaGFyZDpcIlxcdTI5NkRcIixscm06XCJcXHUyMDBFXCIsbHJ0cmk6XCJcXHUyMkJGXCIsbHNhcXVvOlwiXFx1MjAzOVwiLGxzY3I6XCJcXHV7MUQ0QzF9XCIsbHNoOlwiXFx1MjFCMFwiLGxzaW06XCJcXHUyMjcyXCIsbHNpbWU6XCJcXHUyQThEXCIsbHNpbWc6XCJcXHUyQThGXCIsbHNxYjpcIltcIixsc3F1bzpcIlxcdTIwMThcIixsc3F1b3I6XCJcXHUyMDFBXCIsbHN0cm9rOlwiXFx1MDE0MlwiLGw6XCI8XCIsbHQ6XCI8XCIsbHRjYzpcIlxcdTJBQTZcIixsdGNpcjpcIlxcdTJBNzlcIixsdGRvdDpcIlxcdTIyRDZcIixsdGhyZWU6XCJcXHUyMkNCXCIsbHRpbWVzOlwiXFx1MjJDOVwiLGx0bGFycjpcIlxcdTI5NzZcIixsdHF1ZXN0OlwiXFx1MkE3QlwiLGx0clBhcjpcIlxcdTI5OTZcIixsdHJpOlwiXFx1MjVDM1wiLGx0cmllOlwiXFx1MjJCNFwiLGx0cmlmOlwiXFx1MjVDMlwiLGx1cmRzaGFyOlwiXFx1Mjk0QVwiLGx1cnVoYXI6XCJcXHUyOTY2XCIsbHZlcnRuZXFxOlwiXFx1MjI2OFxcdUZFMDBcIixsdm5FOlwiXFx1MjI2OFxcdUZFMDBcIixtRERvdDpcIlxcdTIyM0FcIixtYWM6XCJcXHhBRlwiLG1hY3I6XCJcXHhBRlwiLG1hbGU6XCJcXHUyNjQyXCIsbWFsdDpcIlxcdTI3MjBcIixtYWx0ZXNlOlwiXFx1MjcyMFwiLG1hcDpcIlxcdTIxQTZcIixtYXBzdG86XCJcXHUyMUE2XCIsbWFwc3RvZG93bjpcIlxcdTIxQTdcIixtYXBzdG9sZWZ0OlwiXFx1MjFBNFwiLG1hcHN0b3VwOlwiXFx1MjFBNVwiLG1hcmtlcjpcIlxcdTI1QUVcIixtY29tbWE6XCJcXHUyQTI5XCIsbWN5OlwiXFx1MDQzQ1wiLG1kYXNoOlwiXFx1MjAxNFwiLG1lYXN1cmVkYW5nbGU6XCJcXHUyMjIxXCIsbWZyOlwiXFx1ezFENTJBfVwiLG1obzpcIlxcdTIxMjdcIixtaWNyOlwiXFx4QjVcIixtaWNybzpcIlxceEI1XCIsbWlkOlwiXFx1MjIyM1wiLG1pZGFzdDpcIipcIixtaWRjaXI6XCJcXHUyQUYwXCIsbWlkZG86XCJcXHhCN1wiLG1pZGRvdDpcIlxceEI3XCIsbWludXM6XCJcXHUyMjEyXCIsbWludXNiOlwiXFx1MjI5RlwiLG1pbnVzZDpcIlxcdTIyMzhcIixtaW51c2R1OlwiXFx1MkEyQVwiLG1sY3A6XCJcXHUyQURCXCIsbWxkcjpcIlxcdTIwMjZcIixtbnBsdXM6XCJcXHUyMjEzXCIsbW9kZWxzOlwiXFx1MjJBN1wiLG1vcGY6XCJcXHV7MUQ1NUV9XCIsbXA6XCJcXHUyMjEzXCIsbXNjcjpcIlxcdXsxRDRDMn1cIixtc3Rwb3M6XCJcXHUyMjNFXCIsbXU6XCJcXHUwM0JDXCIsbXVsdGltYXA6XCJcXHUyMkI4XCIsbXVtYXA6XCJcXHUyMkI4XCIsbkdnOlwiXFx1MjJEOVxcdTAzMzhcIixuR3Q6XCJcXHUyMjZCXFx1MjBEMlwiLG5HdHY6XCJcXHUyMjZCXFx1MDMzOFwiLG5MZWZ0YXJyb3c6XCJcXHUyMUNEXCIsbkxlZnRyaWdodGFycm93OlwiXFx1MjFDRVwiLG5MbDpcIlxcdTIyRDhcXHUwMzM4XCIsbkx0OlwiXFx1MjI2QVxcdTIwRDJcIixuTHR2OlwiXFx1MjI2QVxcdTAzMzhcIixuUmlnaHRhcnJvdzpcIlxcdTIxQ0ZcIixuVkRhc2g6XCJcXHUyMkFGXCIsblZkYXNoOlwiXFx1MjJBRVwiLG5hYmxhOlwiXFx1MjIwN1wiLG5hY3V0ZTpcIlxcdTAxNDRcIixuYW5nOlwiXFx1MjIyMFxcdTIwRDJcIixuYXA6XCJcXHUyMjQ5XCIsbmFwRTpcIlxcdTJBNzBcXHUwMzM4XCIsbmFwaWQ6XCJcXHUyMjRCXFx1MDMzOFwiLG5hcG9zOlwiXFx1MDE0OVwiLG5hcHByb3g6XCJcXHUyMjQ5XCIsbmF0dXI6XCJcXHUyNjZFXCIsbmF0dXJhbDpcIlxcdTI2NkVcIixuYXR1cmFsczpcIlxcdTIxMTVcIixuYnM6XCJcXHhBMFwiLG5ic3A6XCJcXHhBMFwiLG5idW1wOlwiXFx1MjI0RVxcdTAzMzhcIixuYnVtcGU6XCJcXHUyMjRGXFx1MDMzOFwiLG5jYXA6XCJcXHUyQTQzXCIsbmNhcm9uOlwiXFx1MDE0OFwiLG5jZWRpbDpcIlxcdTAxNDZcIixuY29uZzpcIlxcdTIyNDdcIixuY29uZ2RvdDpcIlxcdTJBNkRcXHUwMzM4XCIsbmN1cDpcIlxcdTJBNDJcIixuY3k6XCJcXHUwNDNEXCIsbmRhc2g6XCJcXHUyMDEzXCIsbmU6XCJcXHUyMjYwXCIsbmVBcnI6XCJcXHUyMUQ3XCIsbmVhcmhrOlwiXFx1MjkyNFwiLG5lYXJyOlwiXFx1MjE5N1wiLG5lYXJyb3c6XCJcXHUyMTk3XCIsbmVkb3Q6XCJcXHUyMjUwXFx1MDMzOFwiLG5lcXVpdjpcIlxcdTIyNjJcIixuZXNlYXI6XCJcXHUyOTI4XCIsbmVzaW06XCJcXHUyMjQyXFx1MDMzOFwiLG5leGlzdDpcIlxcdTIyMDRcIixuZXhpc3RzOlwiXFx1MjIwNFwiLG5mcjpcIlxcdXsxRDUyQn1cIixuZ0U6XCJcXHUyMjY3XFx1MDMzOFwiLG5nZTpcIlxcdTIyNzFcIixuZ2VxOlwiXFx1MjI3MVwiLG5nZXFxOlwiXFx1MjI2N1xcdTAzMzhcIixuZ2Vxc2xhbnQ6XCJcXHUyQTdFXFx1MDMzOFwiLG5nZXM6XCJcXHUyQTdFXFx1MDMzOFwiLG5nc2ltOlwiXFx1MjI3NVwiLG5ndDpcIlxcdTIyNkZcIixuZ3RyOlwiXFx1MjI2RlwiLG5oQXJyOlwiXFx1MjFDRVwiLG5oYXJyOlwiXFx1MjFBRVwiLG5ocGFyOlwiXFx1MkFGMlwiLG5pOlwiXFx1MjIwQlwiLG5pczpcIlxcdTIyRkNcIixuaXNkOlwiXFx1MjJGQVwiLG5pdjpcIlxcdTIyMEJcIixuamN5OlwiXFx1MDQ1QVwiLG5sQXJyOlwiXFx1MjFDRFwiLG5sRTpcIlxcdTIyNjZcXHUwMzM4XCIsbmxhcnI6XCJcXHUyMTlBXCIsbmxkcjpcIlxcdTIwMjVcIixubGU6XCJcXHUyMjcwXCIsbmxlZnRhcnJvdzpcIlxcdTIxOUFcIixubGVmdHJpZ2h0YXJyb3c6XCJcXHUyMUFFXCIsbmxlcTpcIlxcdTIyNzBcIixubGVxcTpcIlxcdTIyNjZcXHUwMzM4XCIsbmxlcXNsYW50OlwiXFx1MkE3RFxcdTAzMzhcIixubGVzOlwiXFx1MkE3RFxcdTAzMzhcIixubGVzczpcIlxcdTIyNkVcIixubHNpbTpcIlxcdTIyNzRcIixubHQ6XCJcXHUyMjZFXCIsbmx0cmk6XCJcXHUyMkVBXCIsbmx0cmllOlwiXFx1MjJFQ1wiLG5taWQ6XCJcXHUyMjI0XCIsbm9wZjpcIlxcdXsxRDU1Rn1cIixubzpcIlxceEFDXCIsbm90OlwiXFx4QUNcIixub3RpbjpcIlxcdTIyMDlcIixub3RpbkU6XCJcXHUyMkY5XFx1MDMzOFwiLG5vdGluZG90OlwiXFx1MjJGNVxcdTAzMzhcIixub3RpbnZhOlwiXFx1MjIwOVwiLG5vdGludmI6XCJcXHUyMkY3XCIsbm90aW52YzpcIlxcdTIyRjZcIixub3RuaTpcIlxcdTIyMENcIixub3RuaXZhOlwiXFx1MjIwQ1wiLG5vdG5pdmI6XCJcXHUyMkZFXCIsbm90bml2YzpcIlxcdTIyRkRcIixucGFyOlwiXFx1MjIyNlwiLG5wYXJhbGxlbDpcIlxcdTIyMjZcIixucGFyc2w6XCJcXHUyQUZEXFx1MjBFNVwiLG5wYXJ0OlwiXFx1MjIwMlxcdTAzMzhcIixucG9saW50OlwiXFx1MkExNFwiLG5wcjpcIlxcdTIyODBcIixucHJjdWU6XCJcXHUyMkUwXCIsbnByZTpcIlxcdTJBQUZcXHUwMzM4XCIsbnByZWM6XCJcXHUyMjgwXCIsbnByZWNlcTpcIlxcdTJBQUZcXHUwMzM4XCIsbnJBcnI6XCJcXHUyMUNGXCIsbnJhcnI6XCJcXHUyMTlCXCIsbnJhcnJjOlwiXFx1MjkzM1xcdTAzMzhcIixucmFycnc6XCJcXHUyMTlEXFx1MDMzOFwiLG5yaWdodGFycm93OlwiXFx1MjE5QlwiLG5ydHJpOlwiXFx1MjJFQlwiLG5ydHJpZTpcIlxcdTIyRURcIixuc2M6XCJcXHUyMjgxXCIsbnNjY3VlOlwiXFx1MjJFMVwiLG5zY2U6XCJcXHUyQUIwXFx1MDMzOFwiLG5zY3I6XCJcXHV7MUQ0QzN9XCIsbnNob3J0bWlkOlwiXFx1MjIyNFwiLG5zaG9ydHBhcmFsbGVsOlwiXFx1MjIyNlwiLG5zaW06XCJcXHUyMjQxXCIsbnNpbWU6XCJcXHUyMjQ0XCIsbnNpbWVxOlwiXFx1MjI0NFwiLG5zbWlkOlwiXFx1MjIyNFwiLG5zcGFyOlwiXFx1MjIyNlwiLG5zcXN1YmU6XCJcXHUyMkUyXCIsbnNxc3VwZTpcIlxcdTIyRTNcIixuc3ViOlwiXFx1MjI4NFwiLG5zdWJFOlwiXFx1MkFDNVxcdTAzMzhcIixuc3ViZTpcIlxcdTIyODhcIixuc3Vic2V0OlwiXFx1MjI4MlxcdTIwRDJcIixuc3Vic2V0ZXE6XCJcXHUyMjg4XCIsbnN1YnNldGVxcTpcIlxcdTJBQzVcXHUwMzM4XCIsbnN1Y2M6XCJcXHUyMjgxXCIsbnN1Y2NlcTpcIlxcdTJBQjBcXHUwMzM4XCIsbnN1cDpcIlxcdTIyODVcIixuc3VwRTpcIlxcdTJBQzZcXHUwMzM4XCIsbnN1cGU6XCJcXHUyMjg5XCIsbnN1cHNldDpcIlxcdTIyODNcXHUyMEQyXCIsbnN1cHNldGVxOlwiXFx1MjI4OVwiLG5zdXBzZXRlcXE6XCJcXHUyQUM2XFx1MDMzOFwiLG50Z2w6XCJcXHUyMjc5XCIsbnRpbGQ6XCJcXHhGMVwiLG50aWxkZTpcIlxceEYxXCIsbnRsZzpcIlxcdTIyNzhcIixudHJpYW5nbGVsZWZ0OlwiXFx1MjJFQVwiLG50cmlhbmdsZWxlZnRlcTpcIlxcdTIyRUNcIixudHJpYW5nbGVyaWdodDpcIlxcdTIyRUJcIixudHJpYW5nbGVyaWdodGVxOlwiXFx1MjJFRFwiLG51OlwiXFx1MDNCRFwiLG51bTpcIiNcIixudW1lcm86XCJcXHUyMTE2XCIsbnVtc3A6XCJcXHUyMDA3XCIsbnZEYXNoOlwiXFx1MjJBRFwiLG52SGFycjpcIlxcdTI5MDRcIixudmFwOlwiXFx1MjI0RFxcdTIwRDJcIixudmRhc2g6XCJcXHUyMkFDXCIsbnZnZTpcIlxcdTIyNjVcXHUyMEQyXCIsbnZndDpcIj5cXHUyMEQyXCIsbnZpbmZpbjpcIlxcdTI5REVcIixudmxBcnI6XCJcXHUyOTAyXCIsbnZsZTpcIlxcdTIyNjRcXHUyMEQyXCIsbnZsdDpcIjxcXHUyMEQyXCIsbnZsdHJpZTpcIlxcdTIyQjRcXHUyMEQyXCIsbnZyQXJyOlwiXFx1MjkwM1wiLG52cnRyaWU6XCJcXHUyMkI1XFx1MjBEMlwiLG52c2ltOlwiXFx1MjIzQ1xcdTIwRDJcIixud0FycjpcIlxcdTIxRDZcIixud2FyaGs6XCJcXHUyOTIzXCIsbndhcnI6XCJcXHUyMTk2XCIsbndhcnJvdzpcIlxcdTIxOTZcIixud25lYXI6XCJcXHUyOTI3XCIsb1M6XCJcXHUyNEM4XCIsb2FjdXQ6XCJcXHhGM1wiLG9hY3V0ZTpcIlxceEYzXCIsb2FzdDpcIlxcdTIyOUJcIixvY2lyOlwiXFx4RjRcIixvY2lyYzpcIlxceEY0XCIsb2N5OlwiXFx1MDQzRVwiLG9kYXNoOlwiXFx1MjI5RFwiLG9kYmxhYzpcIlxcdTAxNTFcIixvZGl2OlwiXFx1MkEzOFwiLG9kb3Q6XCJcXHUyMjk5XCIsb2Rzb2xkOlwiXFx1MjlCQ1wiLG9lbGlnOlwiXFx1MDE1M1wiLG9mY2lyOlwiXFx1MjlCRlwiLG9mcjpcIlxcdXsxRDUyQ31cIixvZ29uOlwiXFx1MDJEQlwiLG9ncmF2OlwiXFx4RjJcIixvZ3JhdmU6XCJcXHhGMlwiLG9ndDpcIlxcdTI5QzFcIixvaGJhcjpcIlxcdTI5QjVcIixvaG06XCJcXHUwM0E5XCIsb2ludDpcIlxcdTIyMkVcIixvbGFycjpcIlxcdTIxQkFcIixvbGNpcjpcIlxcdTI5QkVcIixvbGNyb3NzOlwiXFx1MjlCQlwiLG9saW5lOlwiXFx1MjAzRVwiLG9sdDpcIlxcdTI5QzBcIixvbWFjcjpcIlxcdTAxNERcIixvbWVnYTpcIlxcdTAzQzlcIixvbWljcm9uOlwiXFx1MDNCRlwiLG9taWQ6XCJcXHUyOUI2XCIsb21pbnVzOlwiXFx1MjI5NlwiLG9vcGY6XCJcXHV7MUQ1NjB9XCIsb3BhcjpcIlxcdTI5QjdcIixvcGVycDpcIlxcdTI5QjlcIixvcGx1czpcIlxcdTIyOTVcIixvcjpcIlxcdTIyMjhcIixvcmFycjpcIlxcdTIxQkJcIixvcmQ6XCJcXHhCQVwiLG9yZGVyOlwiXFx1MjEzNFwiLG9yZGVyb2Y6XCJcXHUyMTM0XCIsb3JkZjpcIlxceEFBXCIsb3JkbTpcIlxceEJBXCIsb3JpZ29mOlwiXFx1MjJCNlwiLG9yb3I6XCJcXHUyQTU2XCIsb3JzbG9wZTpcIlxcdTJBNTdcIixvcnY6XCJcXHUyQTVCXCIsb3NjcjpcIlxcdTIxMzRcIixvc2xhczpcIlxceEY4XCIsb3NsYXNoOlwiXFx4RjhcIixvc29sOlwiXFx1MjI5OFwiLG90aWxkOlwiXFx4RjVcIixvdGlsZGU6XCJcXHhGNVwiLG90aW1lczpcIlxcdTIyOTdcIixvdGltZXNhczpcIlxcdTJBMzZcIixvdW06XCJcXHhGNlwiLG91bWw6XCJcXHhGNlwiLG92YmFyOlwiXFx1MjMzRFwiLHBhcjpcIlxceEI2XCIscGFyYTpcIlxceEI2XCIscGFyYWxsZWw6XCJcXHUyMjI1XCIscGFyc2ltOlwiXFx1MkFGM1wiLHBhcnNsOlwiXFx1MkFGRFwiLHBhcnQ6XCJcXHUyMjAyXCIscGN5OlwiXFx1MDQzRlwiLHBlcmNudDpcIiVcIixwZXJpb2Q6XCIuXCIscGVybWlsOlwiXFx1MjAzMFwiLHBlcnA6XCJcXHUyMkE1XCIscGVydGVuazpcIlxcdTIwMzFcIixwZnI6XCJcXHV7MUQ1MkR9XCIscGhpOlwiXFx1MDNDNlwiLHBoaXY6XCJcXHUwM0Q1XCIscGhtbWF0OlwiXFx1MjEzM1wiLHBob25lOlwiXFx1MjYwRVwiLHBpOlwiXFx1MDNDMFwiLHBpdGNoZm9yazpcIlxcdTIyRDRcIixwaXY6XCJcXHUwM0Q2XCIscGxhbmNrOlwiXFx1MjEwRlwiLHBsYW5ja2g6XCJcXHUyMTBFXCIscGxhbmt2OlwiXFx1MjEwRlwiLHBsdXM6XCIrXCIscGx1c2FjaXI6XCJcXHUyQTIzXCIscGx1c2I6XCJcXHUyMjlFXCIscGx1c2NpcjpcIlxcdTJBMjJcIixwbHVzZG86XCJcXHUyMjE0XCIscGx1c2R1OlwiXFx1MkEyNVwiLHBsdXNlOlwiXFx1MkE3MlwiLHBsdXNtOlwiXFx4QjFcIixwbHVzbW46XCJcXHhCMVwiLHBsdXNzaW06XCJcXHUyQTI2XCIscGx1c3R3bzpcIlxcdTJBMjdcIixwbTpcIlxceEIxXCIscG9pbnRpbnQ6XCJcXHUyQTE1XCIscG9wZjpcIlxcdXsxRDU2MX1cIixwb3VuOlwiXFx4QTNcIixwb3VuZDpcIlxceEEzXCIscHI6XCJcXHUyMjdBXCIscHJFOlwiXFx1MkFCM1wiLHByYXA6XCJcXHUyQUI3XCIscHJjdWU6XCJcXHUyMjdDXCIscHJlOlwiXFx1MkFBRlwiLHByZWM6XCJcXHUyMjdBXCIscHJlY2FwcHJveDpcIlxcdTJBQjdcIixwcmVjY3VybHllcTpcIlxcdTIyN0NcIixwcmVjZXE6XCJcXHUyQUFGXCIscHJlY25hcHByb3g6XCJcXHUyQUI5XCIscHJlY25lcXE6XCJcXHUyQUI1XCIscHJlY25zaW06XCJcXHUyMkU4XCIscHJlY3NpbTpcIlxcdTIyN0VcIixwcmltZTpcIlxcdTIwMzJcIixwcmltZXM6XCJcXHUyMTE5XCIscHJuRTpcIlxcdTJBQjVcIixwcm5hcDpcIlxcdTJBQjlcIixwcm5zaW06XCJcXHUyMkU4XCIscHJvZDpcIlxcdTIyMEZcIixwcm9mYWxhcjpcIlxcdTIzMkVcIixwcm9mbGluZTpcIlxcdTIzMTJcIixwcm9mc3VyZjpcIlxcdTIzMTNcIixwcm9wOlwiXFx1MjIxRFwiLHByb3B0bzpcIlxcdTIyMURcIixwcnNpbTpcIlxcdTIyN0VcIixwcnVyZWw6XCJcXHUyMkIwXCIscHNjcjpcIlxcdXsxRDRDNX1cIixwc2k6XCJcXHUwM0M4XCIscHVuY3NwOlwiXFx1MjAwOFwiLHFmcjpcIlxcdXsxRDUyRX1cIixxaW50OlwiXFx1MkEwQ1wiLHFvcGY6XCJcXHV7MUQ1NjJ9XCIscXByaW1lOlwiXFx1MjA1N1wiLHFzY3I6XCJcXHV7MUQ0QzZ9XCIscXVhdGVybmlvbnM6XCJcXHUyMTBEXCIscXVhdGludDpcIlxcdTJBMTZcIixxdWVzdDpcIj9cIixxdWVzdGVxOlwiXFx1MjI1RlwiLHF1bzonXCInLHF1b3Q6J1wiJyxyQWFycjpcIlxcdTIxREJcIixyQXJyOlwiXFx1MjFEMlwiLHJBdGFpbDpcIlxcdTI5MUNcIixyQmFycjpcIlxcdTI5MEZcIixySGFyOlwiXFx1Mjk2NFwiLHJhY2U6XCJcXHUyMjNEXFx1MDMzMVwiLHJhY3V0ZTpcIlxcdTAxNTVcIixyYWRpYzpcIlxcdTIyMUFcIixyYWVtcHR5djpcIlxcdTI5QjNcIixyYW5nOlwiXFx1MjdFOVwiLHJhbmdkOlwiXFx1Mjk5MlwiLHJhbmdlOlwiXFx1MjlBNVwiLHJhbmdsZTpcIlxcdTI3RTlcIixyYXF1OlwiXFx4QkJcIixyYXF1bzpcIlxceEJCXCIscmFycjpcIlxcdTIxOTJcIixyYXJyYXA6XCJcXHUyOTc1XCIscmFycmI6XCJcXHUyMUU1XCIscmFycmJmczpcIlxcdTI5MjBcIixyYXJyYzpcIlxcdTI5MzNcIixyYXJyZnM6XCJcXHUyOTFFXCIscmFycmhrOlwiXFx1MjFBQVwiLHJhcnJscDpcIlxcdTIxQUNcIixyYXJycGw6XCJcXHUyOTQ1XCIscmFycnNpbTpcIlxcdTI5NzRcIixyYXJydGw6XCJcXHUyMUEzXCIscmFycnc6XCJcXHUyMTlEXCIscmF0YWlsOlwiXFx1MjkxQVwiLHJhdGlvOlwiXFx1MjIzNlwiLHJhdGlvbmFsczpcIlxcdTIxMUFcIixyYmFycjpcIlxcdTI5MERcIixyYmJyazpcIlxcdTI3NzNcIixyYnJhY2U6XCJ9XCIscmJyYWNrOlwiXVwiLHJicmtlOlwiXFx1Mjk4Q1wiLHJicmtzbGQ6XCJcXHUyOThFXCIscmJya3NsdTpcIlxcdTI5OTBcIixyY2Fyb246XCJcXHUwMTU5XCIscmNlZGlsOlwiXFx1MDE1N1wiLHJjZWlsOlwiXFx1MjMwOVwiLHJjdWI6XCJ9XCIscmN5OlwiXFx1MDQ0MFwiLHJkY2E6XCJcXHUyOTM3XCIscmRsZGhhcjpcIlxcdTI5NjlcIixyZHF1bzpcIlxcdTIwMURcIixyZHF1b3I6XCJcXHUyMDFEXCIscmRzaDpcIlxcdTIxQjNcIixyZWFsOlwiXFx1MjExQ1wiLHJlYWxpbmU6XCJcXHUyMTFCXCIscmVhbHBhcnQ6XCJcXHUyMTFDXCIscmVhbHM6XCJcXHUyMTFEXCIscmVjdDpcIlxcdTI1QURcIixyZTpcIlxceEFFXCIscmVnOlwiXFx4QUVcIixyZmlzaHQ6XCJcXHUyOTdEXCIscmZsb29yOlwiXFx1MjMwQlwiLHJmcjpcIlxcdXsxRDUyRn1cIixyaGFyZDpcIlxcdTIxQzFcIixyaGFydTpcIlxcdTIxQzBcIixyaGFydWw6XCJcXHUyOTZDXCIscmhvOlwiXFx1MDNDMVwiLHJob3Y6XCJcXHUwM0YxXCIscmlnaHRhcnJvdzpcIlxcdTIxOTJcIixyaWdodGFycm93dGFpbDpcIlxcdTIxQTNcIixyaWdodGhhcnBvb25kb3duOlwiXFx1MjFDMVwiLHJpZ2h0aGFycG9vbnVwOlwiXFx1MjFDMFwiLHJpZ2h0bGVmdGFycm93czpcIlxcdTIxQzRcIixyaWdodGxlZnRoYXJwb29uczpcIlxcdTIxQ0NcIixyaWdodHJpZ2h0YXJyb3dzOlwiXFx1MjFDOVwiLHJpZ2h0c3F1aWdhcnJvdzpcIlxcdTIxOURcIixyaWdodHRocmVldGltZXM6XCJcXHUyMkNDXCIscmluZzpcIlxcdTAyREFcIixyaXNpbmdkb3RzZXE6XCJcXHUyMjUzXCIscmxhcnI6XCJcXHUyMUM0XCIscmxoYXI6XCJcXHUyMUNDXCIscmxtOlwiXFx1MjAwRlwiLHJtb3VzdDpcIlxcdTIzQjFcIixybW91c3RhY2hlOlwiXFx1MjNCMVwiLHJubWlkOlwiXFx1MkFFRVwiLHJvYW5nOlwiXFx1MjdFRFwiLHJvYXJyOlwiXFx1MjFGRVwiLHJvYnJrOlwiXFx1MjdFN1wiLHJvcGFyOlwiXFx1Mjk4NlwiLHJvcGY6XCJcXHV7MUQ1NjN9XCIscm9wbHVzOlwiXFx1MkEyRVwiLHJvdGltZXM6XCJcXHUyQTM1XCIscnBhcjpcIilcIixycGFyZ3Q6XCJcXHUyOTk0XCIscnBwb2xpbnQ6XCJcXHUyQTEyXCIscnJhcnI6XCJcXHUyMUM5XCIscnNhcXVvOlwiXFx1MjAzQVwiLHJzY3I6XCJcXHV7MUQ0Qzd9XCIscnNoOlwiXFx1MjFCMVwiLHJzcWI6XCJdXCIscnNxdW86XCJcXHUyMDE5XCIscnNxdW9yOlwiXFx1MjAxOVwiLHJ0aHJlZTpcIlxcdTIyQ0NcIixydGltZXM6XCJcXHUyMkNBXCIscnRyaTpcIlxcdTI1QjlcIixydHJpZTpcIlxcdTIyQjVcIixydHJpZjpcIlxcdTI1QjhcIixydHJpbHRyaTpcIlxcdTI5Q0VcIixydWx1aGFyOlwiXFx1Mjk2OFwiLHJ4OlwiXFx1MjExRVwiLHNhY3V0ZTpcIlxcdTAxNUJcIixzYnF1bzpcIlxcdTIwMUFcIixzYzpcIlxcdTIyN0JcIixzY0U6XCJcXHUyQUI0XCIsc2NhcDpcIlxcdTJBQjhcIixzY2Fyb246XCJcXHUwMTYxXCIsc2NjdWU6XCJcXHUyMjdEXCIsc2NlOlwiXFx1MkFCMFwiLHNjZWRpbDpcIlxcdTAxNUZcIixzY2lyYzpcIlxcdTAxNURcIixzY25FOlwiXFx1MkFCNlwiLHNjbmFwOlwiXFx1MkFCQVwiLHNjbnNpbTpcIlxcdTIyRTlcIixzY3BvbGludDpcIlxcdTJBMTNcIixzY3NpbTpcIlxcdTIyN0ZcIixzY3k6XCJcXHUwNDQxXCIsc2RvdDpcIlxcdTIyQzVcIixzZG90YjpcIlxcdTIyQTFcIixzZG90ZTpcIlxcdTJBNjZcIixzZUFycjpcIlxcdTIxRDhcIixzZWFyaGs6XCJcXHUyOTI1XCIsc2VhcnI6XCJcXHUyMTk4XCIsc2VhcnJvdzpcIlxcdTIxOThcIixzZWM6XCJcXHhBN1wiLHNlY3Q6XCJcXHhBN1wiLHNlbWk6XCI7XCIsc2Vzd2FyOlwiXFx1MjkyOVwiLHNldG1pbnVzOlwiXFx1MjIxNlwiLHNldG1uOlwiXFx1MjIxNlwiLHNleHQ6XCJcXHUyNzM2XCIsc2ZyOlwiXFx1ezFENTMwfVwiLHNmcm93bjpcIlxcdTIzMjJcIixzaGFycDpcIlxcdTI2NkZcIixzaGNoY3k6XCJcXHUwNDQ5XCIsc2hjeTpcIlxcdTA0NDhcIixzaG9ydG1pZDpcIlxcdTIyMjNcIixzaG9ydHBhcmFsbGVsOlwiXFx1MjIyNVwiLHNoOlwiXFx4QURcIixzaHk6XCJcXHhBRFwiLHNpZ21hOlwiXFx1MDNDM1wiLHNpZ21hZjpcIlxcdTAzQzJcIixzaWdtYXY6XCJcXHUwM0MyXCIsc2ltOlwiXFx1MjIzQ1wiLHNpbWRvdDpcIlxcdTJBNkFcIixzaW1lOlwiXFx1MjI0M1wiLHNpbWVxOlwiXFx1MjI0M1wiLHNpbWc6XCJcXHUyQTlFXCIsc2ltZ0U6XCJcXHUyQUEwXCIsc2ltbDpcIlxcdTJBOURcIixzaW1sRTpcIlxcdTJBOUZcIixzaW1uZTpcIlxcdTIyNDZcIixzaW1wbHVzOlwiXFx1MkEyNFwiLHNpbXJhcnI6XCJcXHUyOTcyXCIsc2xhcnI6XCJcXHUyMTkwXCIsc21hbGxzZXRtaW51czpcIlxcdTIyMTZcIixzbWFzaHA6XCJcXHUyQTMzXCIsc21lcGFyc2w6XCJcXHUyOUU0XCIsc21pZDpcIlxcdTIyMjNcIixzbWlsZTpcIlxcdTIzMjNcIixzbXQ6XCJcXHUyQUFBXCIsc210ZTpcIlxcdTJBQUNcIixzbXRlczpcIlxcdTJBQUNcXHVGRTAwXCIsc29mdGN5OlwiXFx1MDQ0Q1wiLHNvbDpcIi9cIixzb2xiOlwiXFx1MjlDNFwiLHNvbGJhcjpcIlxcdTIzM0ZcIixzb3BmOlwiXFx1ezFENTY0fVwiLHNwYWRlczpcIlxcdTI2NjBcIixzcGFkZXN1aXQ6XCJcXHUyNjYwXCIsc3BhcjpcIlxcdTIyMjVcIixzcWNhcDpcIlxcdTIyOTNcIixzcWNhcHM6XCJcXHUyMjkzXFx1RkUwMFwiLHNxY3VwOlwiXFx1MjI5NFwiLHNxY3VwczpcIlxcdTIyOTRcXHVGRTAwXCIsc3FzdWI6XCJcXHUyMjhGXCIsc3FzdWJlOlwiXFx1MjI5MVwiLHNxc3Vic2V0OlwiXFx1MjI4RlwiLHNxc3Vic2V0ZXE6XCJcXHUyMjkxXCIsc3FzdXA6XCJcXHUyMjkwXCIsc3FzdXBlOlwiXFx1MjI5MlwiLHNxc3Vwc2V0OlwiXFx1MjI5MFwiLHNxc3Vwc2V0ZXE6XCJcXHUyMjkyXCIsc3F1OlwiXFx1MjVBMVwiLHNxdWFyZTpcIlxcdTI1QTFcIixzcXVhcmY6XCJcXHUyNUFBXCIsc3F1ZjpcIlxcdTI1QUFcIixzcmFycjpcIlxcdTIxOTJcIixzc2NyOlwiXFx1ezFENEM4fVwiLHNzZXRtbjpcIlxcdTIyMTZcIixzc21pbGU6XCJcXHUyMzIzXCIsc3N0YXJmOlwiXFx1MjJDNlwiLHN0YXI6XCJcXHUyNjA2XCIsc3RhcmY6XCJcXHUyNjA1XCIsc3RyYWlnaHRlcHNpbG9uOlwiXFx1MDNGNVwiLHN0cmFpZ2h0cGhpOlwiXFx1MDNENVwiLHN0cm5zOlwiXFx4QUZcIixzdWI6XCJcXHUyMjgyXCIsc3ViRTpcIlxcdTJBQzVcIixzdWJkb3Q6XCJcXHUyQUJEXCIsc3ViZTpcIlxcdTIyODZcIixzdWJlZG90OlwiXFx1MkFDM1wiLHN1Ym11bHQ6XCJcXHUyQUMxXCIsc3VibkU6XCJcXHUyQUNCXCIsc3VibmU6XCJcXHUyMjhBXCIsc3VicGx1czpcIlxcdTJBQkZcIixzdWJyYXJyOlwiXFx1Mjk3OVwiLHN1YnNldDpcIlxcdTIyODJcIixzdWJzZXRlcTpcIlxcdTIyODZcIixzdWJzZXRlcXE6XCJcXHUyQUM1XCIsc3Vic2V0bmVxOlwiXFx1MjI4QVwiLHN1YnNldG5lcXE6XCJcXHUyQUNCXCIsc3Vic2ltOlwiXFx1MkFDN1wiLHN1YnN1YjpcIlxcdTJBRDVcIixzdWJzdXA6XCJcXHUyQUQzXCIsc3VjYzpcIlxcdTIyN0JcIixzdWNjYXBwcm94OlwiXFx1MkFCOFwiLHN1Y2NjdXJseWVxOlwiXFx1MjI3RFwiLHN1Y2NlcTpcIlxcdTJBQjBcIixzdWNjbmFwcHJveDpcIlxcdTJBQkFcIixzdWNjbmVxcTpcIlxcdTJBQjZcIixzdWNjbnNpbTpcIlxcdTIyRTlcIixzdWNjc2ltOlwiXFx1MjI3RlwiLHN1bTpcIlxcdTIyMTFcIixzdW5nOlwiXFx1MjY2QVwiLHN1cDpcIlxcdTIyODNcIixzdXAxOlwiXFx4QjlcIixzdXAyOlwiXFx4QjJcIixzdXAzOlwiXFx4QjNcIixzdXBFOlwiXFx1MkFDNlwiLHN1cGRvdDpcIlxcdTJBQkVcIixzdXBkc3ViOlwiXFx1MkFEOFwiLHN1cGU6XCJcXHUyMjg3XCIsc3VwZWRvdDpcIlxcdTJBQzRcIixzdXBoc29sOlwiXFx1MjdDOVwiLHN1cGhzdWI6XCJcXHUyQUQ3XCIsc3VwbGFycjpcIlxcdTI5N0JcIixzdXBtdWx0OlwiXFx1MkFDMlwiLHN1cG5FOlwiXFx1MkFDQ1wiLHN1cG5lOlwiXFx1MjI4QlwiLHN1cHBsdXM6XCJcXHUyQUMwXCIsc3Vwc2V0OlwiXFx1MjI4M1wiLHN1cHNldGVxOlwiXFx1MjI4N1wiLHN1cHNldGVxcTpcIlxcdTJBQzZcIixzdXBzZXRuZXE6XCJcXHUyMjhCXCIsc3Vwc2V0bmVxcTpcIlxcdTJBQ0NcIixzdXBzaW06XCJcXHUyQUM4XCIsc3Vwc3ViOlwiXFx1MkFENFwiLHN1cHN1cDpcIlxcdTJBRDZcIixzd0FycjpcIlxcdTIxRDlcIixzd2FyaGs6XCJcXHUyOTI2XCIsc3dhcnI6XCJcXHUyMTk5XCIsc3dhcnJvdzpcIlxcdTIxOTlcIixzd253YXI6XCJcXHUyOTJBXCIsc3psaTpcIlxceERGXCIsc3psaWc6XCJcXHhERlwiLHRhcmdldDpcIlxcdTIzMTZcIix0YXU6XCJcXHUwM0M0XCIsdGJyazpcIlxcdTIzQjRcIix0Y2Fyb246XCJcXHUwMTY1XCIsdGNlZGlsOlwiXFx1MDE2M1wiLHRjeTpcIlxcdTA0NDJcIix0ZG90OlwiXFx1MjBEQlwiLHRlbHJlYzpcIlxcdTIzMTVcIix0ZnI6XCJcXHV7MUQ1MzF9XCIsdGhlcmU0OlwiXFx1MjIzNFwiLHRoZXJlZm9yZTpcIlxcdTIyMzRcIix0aGV0YTpcIlxcdTAzQjhcIix0aGV0YXN5bTpcIlxcdTAzRDFcIix0aGV0YXY6XCJcXHUwM0QxXCIsdGhpY2thcHByb3g6XCJcXHUyMjQ4XCIsdGhpY2tzaW06XCJcXHUyMjNDXCIsdGhpbnNwOlwiXFx1MjAwOVwiLHRoa2FwOlwiXFx1MjI0OFwiLHRoa3NpbTpcIlxcdTIyM0NcIix0aG9yOlwiXFx4RkVcIix0aG9ybjpcIlxceEZFXCIsdGlsZGU6XCJcXHUwMkRDXCIsdGltZTpcIlxceEQ3XCIsdGltZXM6XCJcXHhEN1wiLHRpbWVzYjpcIlxcdTIyQTBcIix0aW1lc2JhcjpcIlxcdTJBMzFcIix0aW1lc2Q6XCJcXHUyQTMwXCIsdGludDpcIlxcdTIyMkRcIix0b2VhOlwiXFx1MjkyOFwiLHRvcDpcIlxcdTIyQTRcIix0b3Bib3Q6XCJcXHUyMzM2XCIsdG9wY2lyOlwiXFx1MkFGMVwiLHRvcGY6XCJcXHV7MUQ1NjV9XCIsdG9wZm9yazpcIlxcdTJBREFcIix0b3NhOlwiXFx1MjkyOVwiLHRwcmltZTpcIlxcdTIwMzRcIix0cmFkZTpcIlxcdTIxMjJcIix0cmlhbmdsZTpcIlxcdTI1QjVcIix0cmlhbmdsZWRvd246XCJcXHUyNUJGXCIsdHJpYW5nbGVsZWZ0OlwiXFx1MjVDM1wiLHRyaWFuZ2xlbGVmdGVxOlwiXFx1MjJCNFwiLHRyaWFuZ2xlcTpcIlxcdTIyNUNcIix0cmlhbmdsZXJpZ2h0OlwiXFx1MjVCOVwiLHRyaWFuZ2xlcmlnaHRlcTpcIlxcdTIyQjVcIix0cmlkb3Q6XCJcXHUyNUVDXCIsdHJpZTpcIlxcdTIyNUNcIix0cmltaW51czpcIlxcdTJBM0FcIix0cmlwbHVzOlwiXFx1MkEzOVwiLHRyaXNiOlwiXFx1MjlDRFwiLHRyaXRpbWU6XCJcXHUyQTNCXCIsdHJwZXppdW06XCJcXHUyM0UyXCIsdHNjcjpcIlxcdXsxRDRDOX1cIix0c2N5OlwiXFx1MDQ0NlwiLHRzaGN5OlwiXFx1MDQ1QlwiLHRzdHJvazpcIlxcdTAxNjdcIix0d2l4dDpcIlxcdTIyNkNcIix0d29oZWFkbGVmdGFycm93OlwiXFx1MjE5RVwiLHR3b2hlYWRyaWdodGFycm93OlwiXFx1MjFBMFwiLHVBcnI6XCJcXHUyMUQxXCIsdUhhcjpcIlxcdTI5NjNcIix1YWN1dDpcIlxceEZBXCIsdWFjdXRlOlwiXFx4RkFcIix1YXJyOlwiXFx1MjE5MVwiLHVicmN5OlwiXFx1MDQ1RVwiLHVicmV2ZTpcIlxcdTAxNkRcIix1Y2lyOlwiXFx4RkJcIix1Y2lyYzpcIlxceEZCXCIsdWN5OlwiXFx1MDQ0M1wiLHVkYXJyOlwiXFx1MjFDNVwiLHVkYmxhYzpcIlxcdTAxNzFcIix1ZGhhcjpcIlxcdTI5NkVcIix1ZmlzaHQ6XCJcXHUyOTdFXCIsdWZyOlwiXFx1ezFENTMyfVwiLHVncmF2OlwiXFx4RjlcIix1Z3JhdmU6XCJcXHhGOVwiLHVoYXJsOlwiXFx1MjFCRlwiLHVoYXJyOlwiXFx1MjFCRVwiLHVoYmxrOlwiXFx1MjU4MFwiLHVsY29ybjpcIlxcdTIzMUNcIix1bGNvcm5lcjpcIlxcdTIzMUNcIix1bGNyb3A6XCJcXHUyMzBGXCIsdWx0cmk6XCJcXHUyNUY4XCIsdW1hY3I6XCJcXHUwMTZCXCIsdW06XCJcXHhBOFwiLHVtbDpcIlxceEE4XCIsdW9nb246XCJcXHUwMTczXCIsdW9wZjpcIlxcdXsxRDU2Nn1cIix1cGFycm93OlwiXFx1MjE5MVwiLHVwZG93bmFycm93OlwiXFx1MjE5NVwiLHVwaGFycG9vbmxlZnQ6XCJcXHUyMUJGXCIsdXBoYXJwb29ucmlnaHQ6XCJcXHUyMUJFXCIsdXBsdXM6XCJcXHUyMjhFXCIsdXBzaTpcIlxcdTAzQzVcIix1cHNpaDpcIlxcdTAzRDJcIix1cHNpbG9uOlwiXFx1MDNDNVwiLHVwdXBhcnJvd3M6XCJcXHUyMUM4XCIsdXJjb3JuOlwiXFx1MjMxRFwiLHVyY29ybmVyOlwiXFx1MjMxRFwiLHVyY3JvcDpcIlxcdTIzMEVcIix1cmluZzpcIlxcdTAxNkZcIix1cnRyaTpcIlxcdTI1RjlcIix1c2NyOlwiXFx1ezFENENBfVwiLHV0ZG90OlwiXFx1MjJGMFwiLHV0aWxkZTpcIlxcdTAxNjlcIix1dHJpOlwiXFx1MjVCNVwiLHV0cmlmOlwiXFx1MjVCNFwiLHV1YXJyOlwiXFx1MjFDOFwiLHV1bTpcIlxceEZDXCIsdXVtbDpcIlxceEZDXCIsdXdhbmdsZTpcIlxcdTI5QTdcIix2QXJyOlwiXFx1MjFENVwiLHZCYXI6XCJcXHUyQUU4XCIsdkJhcnY6XCJcXHUyQUU5XCIsdkRhc2g6XCJcXHUyMkE4XCIsdmFuZ3J0OlwiXFx1Mjk5Q1wiLHZhcmVwc2lsb246XCJcXHUwM0Y1XCIsdmFya2FwcGE6XCJcXHUwM0YwXCIsdmFybm90aGluZzpcIlxcdTIyMDVcIix2YXJwaGk6XCJcXHUwM0Q1XCIsdmFycGk6XCJcXHUwM0Q2XCIsdmFycHJvcHRvOlwiXFx1MjIxRFwiLHZhcnI6XCJcXHUyMTk1XCIsdmFycmhvOlwiXFx1MDNGMVwiLHZhcnNpZ21hOlwiXFx1MDNDMlwiLHZhcnN1YnNldG5lcTpcIlxcdTIyOEFcXHVGRTAwXCIsdmFyc3Vic2V0bmVxcTpcIlxcdTJBQ0JcXHVGRTAwXCIsdmFyc3Vwc2V0bmVxOlwiXFx1MjI4QlxcdUZFMDBcIix2YXJzdXBzZXRuZXFxOlwiXFx1MkFDQ1xcdUZFMDBcIix2YXJ0aGV0YTpcIlxcdTAzRDFcIix2YXJ0cmlhbmdsZWxlZnQ6XCJcXHUyMkIyXCIsdmFydHJpYW5nbGVyaWdodDpcIlxcdTIyQjNcIix2Y3k6XCJcXHUwNDMyXCIsdmRhc2g6XCJcXHUyMkEyXCIsdmVlOlwiXFx1MjIyOFwiLHZlZWJhcjpcIlxcdTIyQkJcIix2ZWVlcTpcIlxcdTIyNUFcIix2ZWxsaXA6XCJcXHUyMkVFXCIsdmVyYmFyOlwifFwiLHZlcnQ6XCJ8XCIsdmZyOlwiXFx1ezFENTMzfVwiLHZsdHJpOlwiXFx1MjJCMlwiLHZuc3ViOlwiXFx1MjI4MlxcdTIwRDJcIix2bnN1cDpcIlxcdTIyODNcXHUyMEQyXCIsdm9wZjpcIlxcdXsxRDU2N31cIix2cHJvcDpcIlxcdTIyMURcIix2cnRyaTpcIlxcdTIyQjNcIix2c2NyOlwiXFx1ezFENENCfVwiLHZzdWJuRTpcIlxcdTJBQ0JcXHVGRTAwXCIsdnN1Ym5lOlwiXFx1MjI4QVxcdUZFMDBcIix2c3VwbkU6XCJcXHUyQUNDXFx1RkUwMFwiLHZzdXBuZTpcIlxcdTIyOEJcXHVGRTAwXCIsdnppZ3phZzpcIlxcdTI5OUFcIix3Y2lyYzpcIlxcdTAxNzVcIix3ZWRiYXI6XCJcXHUyQTVGXCIsd2VkZ2U6XCJcXHUyMjI3XCIsd2VkZ2VxOlwiXFx1MjI1OVwiLHdlaWVycDpcIlxcdTIxMThcIix3ZnI6XCJcXHV7MUQ1MzR9XCIsd29wZjpcIlxcdXsxRDU2OH1cIix3cDpcIlxcdTIxMThcIix3cjpcIlxcdTIyNDBcIix3cmVhdGg6XCJcXHUyMjQwXCIsd3NjcjpcIlxcdXsxRDRDQ31cIix4Y2FwOlwiXFx1MjJDMlwiLHhjaXJjOlwiXFx1MjVFRlwiLHhjdXA6XCJcXHUyMkMzXCIseGR0cmk6XCJcXHUyNUJEXCIseGZyOlwiXFx1ezFENTM1fVwiLHhoQXJyOlwiXFx1MjdGQVwiLHhoYXJyOlwiXFx1MjdGN1wiLHhpOlwiXFx1MDNCRVwiLHhsQXJyOlwiXFx1MjdGOFwiLHhsYXJyOlwiXFx1MjdGNVwiLHhtYXA6XCJcXHUyN0ZDXCIseG5pczpcIlxcdTIyRkJcIix4b2RvdDpcIlxcdTJBMDBcIix4b3BmOlwiXFx1ezFENTY5fVwiLHhvcGx1czpcIlxcdTJBMDFcIix4b3RpbWU6XCJcXHUyQTAyXCIseHJBcnI6XCJcXHUyN0Y5XCIseHJhcnI6XCJcXHUyN0Y2XCIseHNjcjpcIlxcdXsxRDRDRH1cIix4c3FjdXA6XCJcXHUyQTA2XCIseHVwbHVzOlwiXFx1MkEwNFwiLHh1dHJpOlwiXFx1MjVCM1wiLHh2ZWU6XCJcXHUyMkMxXCIseHdlZGdlOlwiXFx1MjJDMFwiLHlhY3V0OlwiXFx4RkRcIix5YWN1dGU6XCJcXHhGRFwiLHlhY3k6XCJcXHUwNDRGXCIseWNpcmM6XCJcXHUwMTc3XCIseWN5OlwiXFx1MDQ0QlwiLHllOlwiXFx4QTVcIix5ZW46XCJcXHhBNVwiLHlmcjpcIlxcdXsxRDUzNn1cIix5aWN5OlwiXFx1MDQ1N1wiLHlvcGY6XCJcXHV7MUQ1NkF9XCIseXNjcjpcIlxcdXsxRDRDRX1cIix5dWN5OlwiXFx1MDQ0RVwiLHl1bTpcIlxceEZGXCIseXVtbDpcIlxceEZGXCIsemFjdXRlOlwiXFx1MDE3QVwiLHpjYXJvbjpcIlxcdTAxN0VcIix6Y3k6XCJcXHUwNDM3XCIsemRvdDpcIlxcdTAxN0NcIix6ZWV0cmY6XCJcXHUyMTI4XCIsemV0YTpcIlxcdTAzQjZcIix6ZnI6XCJcXHV7MUQ1Mzd9XCIsemhjeTpcIlxcdTA0MzZcIix6aWdyYXJyOlwiXFx1MjFERFwiLHpvcGY6XCJcXHV7MUQ1NkJ9XCIsenNjcjpcIlxcdXsxRDRDRn1cIix6d2o6XCJcXHUyMDBEXCIsenduajpcIlxcdTIwMENcIn19fSksSGw9Uyh7XCJub2RlX21vZHVsZXMvcGFyc2UtZW50aXRpZXMvZGVjb2RlLWVudGl0eS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PSRsKCk7ci5leHBvcnRzPW87dmFyIHQ9e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbyhuKXtyZXR1cm4gdC5jYWxsKHUsbik/dVtuXTohMX19fSkseHI9Uyh7XCJub2RlX21vZHVsZXMvcGFyc2UtZW50aXRpZXMvaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT16bCgpLHQ9R2woKSxvPXplKCksbj1VbCgpLHM9VmwoKSxjPUhsKCk7ci5leHBvcnRzPUo7dmFyIGk9e30uaGFzT3duUHJvcGVydHksRD1TdHJpbmcuZnJvbUNoYXJDb2RlLGE9RnVuY3Rpb24ucHJvdG90eXBlLGw9e3dhcm5pbmc6bnVsbCxyZWZlcmVuY2U6bnVsbCx0ZXh0Om51bGwsd2FybmluZ0NvbnRleHQ6bnVsbCxyZWZlcmVuY2VDb250ZXh0Om51bGwsdGV4dENvbnRleHQ6bnVsbCxwb3NpdGlvbjp7fSxhZGRpdGlvbmFsOm51bGwsYXR0cmlidXRlOiExLG5vblRlcm1pbmF0ZWQ6ITB9LHA9OSxkPTEwLGc9MTIsRj0zMixFPTM4LHg9NTksZj02MCxiPTYxLHY9MzUsaD04OCxtPTEyMCxDPTY1NTMzLEI9XCJuYW1lZFwiLHE9XCJoZXhhZGVjaW1hbFwiLEw9XCJkZWNpbWFsXCIsdz17fTt3W3FdPTE2LHdbTF09MTA7dmFyIE89e307T1tCXT1zLE9bTF09byxPW3FdPW47dmFyIFQ9MSxQPTIsQT0zLGo9NCwkPTUsVT02LFg9NyxSPXt9O1JbVF09XCJOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb25cIixSW1BdPVwiTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgYSBzZW1pY29sb25cIixSW0FdPVwiTmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGVtcHR5XCIsUltqXT1cIk51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGVtcHR5XCIsUlskXT1cIk5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIG11c3QgYmUga25vd25cIixSW1VdPVwiTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBjYW5ub3QgYmUgZGlzYWxsb3dlZFwiLFJbWF09XCJOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSBVbmljb2RlIHJhbmdlXCI7ZnVuY3Rpb24gSihrLHkpe3ZhciBfPXt9LE4sVjt5fHwoeT17fSk7Zm9yKFYgaW4gbClOPXlbVl0sX1tWXT1OPT1udWxsP2xbVl06TjtyZXR1cm4oXy5wb3NpdGlvbi5pbmRlbnR8fF8ucG9zaXRpb24uc3RhcnQpJiYoXy5pbmRlbnQ9Xy5wb3NpdGlvbi5pbmRlbnR8fFtdLF8ucG9zaXRpb249Xy5wb3NpdGlvbi5zdGFydCkseihrLF8pfWZ1bmN0aW9uIHooayx5KXt2YXIgXz15LmFkZGl0aW9uYWwsTj15Lm5vblRlcm1pbmF0ZWQsVj15LnRleHQsVz15LnJlZmVyZW5jZSxLPXkud2FybmluZyxlZT15LnRleHRDb250ZXh0LFk9eS5yZWZlcmVuY2VDb250ZXh0LHRlPXkud2FybmluZ0NvbnRleHQsRGU9eS5wb3NpdGlvbixsZT15LmluZGVudHx8W10sbmU9ay5sZW5ndGgsWj0wLFE9LTEsZmU9RGUuY29sdW1ufHwxLGJlPURlLmxpbmV8fDEscGU9XCJcIixoZT1bXSxvZSxkZSxpZSxyZSx5ZSxzZSxhZSxDZSxlcixicixrZSxVZSxxZSxGZSxFdSxWZSxycixnZSxjZTtmb3IodHlwZW9mIF89PVwic3RyaW5nXCImJihfPV8uY2hhckNvZGVBdCgwKSksVmU9JGUoKSxDZT1LP3NhOmEsWi0tLG5lKys7KytaPG5lOylpZih5ZT09PWQmJihmZT1sZVtRXXx8MSkseWU9ay5jaGFyQ29kZUF0KFopLHllPT09RSl7aWYoYWU9ay5jaGFyQ29kZUF0KForMSksYWU9PT1wfHxhZT09PWR8fGFlPT09Z3x8YWU9PT1GfHxhZT09PUV8fGFlPT09Znx8YWUhPT1hZXx8XyYmYWU9PT1fKXtwZSs9RCh5ZSksZmUrKztjb250aW51ZX1mb3IocWU9WisxLFVlPXFlLGNlPXFlLGFlPT09dj8oY2U9KytVZSxhZT1rLmNoYXJDb2RlQXQoY2UpLGFlPT09aHx8YWU9PT1tPyhGZT1xLGNlPSsrVWUpOkZlPUwpOkZlPUIsb2U9XCJcIixrZT1cIlwiLHJlPVwiXCIsRXU9T1tGZV0sY2UtLTsrK2NlPG5lJiYoYWU9ay5jaGFyQ29kZUF0KGNlKSwhIUV1KGFlKSk7KXJlKz1EKGFlKSxGZT09PUImJmkuY2FsbCh1LHJlKSYmKG9lPXJlLGtlPXVbcmVdKTtpZT1rLmNoYXJDb2RlQXQoY2UpPT09eCxpZSYmKGNlKyssZGU9RmU9PT1CP2MocmUpOiExLGRlJiYob2U9cmUsa2U9ZGUpKSxnZT0xK2NlLXFlLCFpZSYmIU58fChyZT9GZT09PUI/KGllJiYha2U/Q2UoJCwxKToob2UhPT1yZSYmKGNlPVVlK29lLmxlbmd0aCxnZT0xK2NlLVVlLGllPSExKSxpZXx8KGVyPW9lP1Q6QSx5LmF0dHJpYnV0ZT8oYWU9ay5jaGFyQ29kZUF0KGNlKSxhZT09PWI/KENlKGVyLGdlKSxrZT1udWxsKTpzKGFlKT9rZT1udWxsOkNlKGVyLGdlKSk6Q2UoZXIsZ2UpKSksc2U9a2UpOihpZXx8Q2UoUCxnZSksc2U9cGFyc2VJbnQocmUsd1tGZV0pLE0oc2UpPyhDZShYLGdlKSxzZT1EKEMpKTpzZSBpbiB0PyhDZShVLGdlKSxzZT10W3NlXSk6KGJyPVwiXCIsRyhzZSkmJkNlKFUsZ2UpLHNlPjY1NTM1JiYoc2UtPTY1NTM2LGJyKz1EKHNlPj4+MTB8NTUyOTYpLHNlPTU2MzIwfHNlJjEwMjMpLHNlPWJyK0Qoc2UpKSk6RmUhPT1CJiZDZShqLGdlKSksc2U/KEN1KCksVmU9JGUoKSxaPWNlLTEsZmUrPWNlLXFlKzEsaGUucHVzaChzZSkscnI9JGUoKSxyci5vZmZzZXQrKyxXJiZXLmNhbGwoWSxzZSx7c3RhcnQ6VmUsZW5kOnJyfSxrLnNsaWNlKHFlLTEsY2UpKSxWZT1ycik6KHJlPWsuc2xpY2UocWUtMSxjZSkscGUrPXJlLGZlKz1yZS5sZW5ndGgsWj1jZS0xKX1lbHNlIHllPT09MTAmJihiZSsrLFErKyxmZT0wKSx5ZT09PXllPyhwZSs9RCh5ZSksZmUrKyk6Q3UoKTtyZXR1cm4gaGUuam9pbihcIlwiKTtmdW5jdGlvbiAkZSgpe3JldHVybntsaW5lOmJlLGNvbHVtbjpmZSxvZmZzZXQ6WisoRGUub2Zmc2V0fHwwKX19ZnVuY3Rpb24gc2EoZ3UsRnUpe3ZhciB5cj0kZSgpO3lyLmNvbHVtbis9RnUseXIub2Zmc2V0Kz1GdSxLLmNhbGwodGUsUltndV0seXIsZ3UpfWZ1bmN0aW9uIEN1KCl7cGUmJihoZS5wdXNoKHBlKSxWJiZWLmNhbGwoZWUscGUse3N0YXJ0OlZlLGVuZDokZSgpfSkscGU9XCJcIil9fWZ1bmN0aW9uIE0oayl7cmV0dXJuIGs+PTU1Mjk2JiZrPD01NzM0M3x8az4xMTE0MTExfWZ1bmN0aW9uIEcoayl7cmV0dXJuIGs+PTEmJms8PTh8fGs9PT0xMXx8az49MTMmJms8PTMxfHxrPj0xMjcmJms8PTE1OXx8az49NjQ5NzYmJms8PTY1MDA3fHwoayY2NTUzNSk9PT02NTUzNXx8KGsmNjU1MzUpPT09NjU1MzR9fX0pLFhsPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvZGVjb2RlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9TWUoKSx0PXhyKCk7ci5leHBvcnRzPW87ZnVuY3Rpb24gbyhuKXtyZXR1cm4gYy5yYXc9aSxjO2Z1bmN0aW9uIHMoYSl7Zm9yKHZhciBsPW4ub2Zmc2V0LHA9YS5saW5lLGQ9W107KytwJiZwIGluIGw7KWQucHVzaCgobFtwXXx8MCkrMSk7cmV0dXJue3N0YXJ0OmEsaW5kZW50OmR9fWZ1bmN0aW9uIGMoYSxsLHApe3QoYSx7cG9zaXRpb246cyhsKSx3YXJuaW5nOkQsdGV4dDpwLHJlZmVyZW5jZTpwLHRleHRDb250ZXh0Om4scmVmZXJlbmNlQ29udGV4dDpufSl9ZnVuY3Rpb24gaShhLGwscCl7cmV0dXJuIHQoYSx1KHAse3Bvc2l0aW9uOnMobCksd2FybmluZzpEfSkpfWZ1bmN0aW9uIEQoYSxsLHApe3AhPT0zJiZuLmZpbGUubWVzc2FnZShhLGwpfX19fSksV2w9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZXIuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHMpe3JldHVybiBjO2Z1bmN0aW9uIGMoaSxEKXt2YXIgYT10aGlzLGw9YS5vZmZzZXQscD1bXSxkPWFbcytcIk1ldGhvZHNcIl0sZz1hW3MrXCJUb2tlbml6ZXJzXCJdLEY9RC5saW5lLEU9RC5jb2x1bW4seCxmLGIsdixoLG07aWYoIWkpcmV0dXJuIHA7Zm9yKFAubm93PXEsUC5maWxlPWEuZmlsZSxDKFwiXCIpO2k7KXtmb3IoeD0tMSxmPWQubGVuZ3RoLGg9ITE7Kyt4PGYmJih2PWRbeF0sYj1nW3ZdLCEoYiYmKCFiLm9ubHlBdFN0YXJ0fHxhLmF0U3RhcnQpJiYoIWIubm90SW5MaXN0fHwhYS5pbkxpc3QpJiYoIWIubm90SW5CbG9ja3x8IWEuaW5CbG9jaykmJighYi5ub3RJbkxpbmt8fCFhLmluTGluaykmJihtPWkubGVuZ3RoLGIuYXBwbHkoYSxbUCxpXSksaD1tIT09aS5sZW5ndGgsaCkpKTspO2h8fGEuZmlsZS5mYWlsKG5ldyBFcnJvcihcIkluZmluaXRlIGxvb3BcIiksUC5ub3coKSl9cmV0dXJuIGEuZW9mPXEoKSxwO2Z1bmN0aW9uIEMoQSl7Zm9yKHZhciBqPS0xLCQ9QS5pbmRleE9mKGBcbmApOyQhPT0tMTspRisrLGo9JCwkPUEuaW5kZXhPZihgXG5gLCQrMSk7aj09PS0xP0UrPUEubGVuZ3RoOkU9QS5sZW5ndGgtaixGIGluIGwmJihqIT09LTE/RSs9bFtGXTpFPD1sW0ZdJiYoRT1sW0ZdKzEpKX1mdW5jdGlvbiBCKCl7dmFyIEE9W10saj1GKzE7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciAkPUYrMTtqPCQ7KUEucHVzaCgobFtqXXx8MCkrMSksaisrO3JldHVybiBBfX1mdW5jdGlvbiBxKCl7dmFyIEE9e2xpbmU6Rixjb2x1bW46RX07cmV0dXJuIEEub2Zmc2V0PWEudG9PZmZzZXQoQSksQX1mdW5jdGlvbiBMKEEpe3RoaXMuc3RhcnQ9QSx0aGlzLmVuZD1xKCl9ZnVuY3Rpb24gdyhBKXtpLnNsaWNlKDAsQS5sZW5ndGgpIT09QSYmYS5maWxlLmZhaWwobmV3IEVycm9yKFwiSW5jb3JyZWN0bHkgZWF0ZW4gdmFsdWU6IHBsZWFzZSByZXBvcnQgdGhpcyB3YXJuaW5nIG9uIGh0dHBzOi8vZ2l0LmlvL3ZnNUZ0XCIpLHEoKSl9ZnVuY3Rpb24gTygpe3ZhciBBPXEoKTtyZXR1cm4gajtmdW5jdGlvbiBqKCQsVSl7dmFyIFg9JC5wb3NpdGlvbixSPVg/WC5zdGFydDpBLEo9W10sej1YJiZYLmVuZC5saW5lLE09QS5saW5lO2lmKCQucG9zaXRpb249bmV3IEwoUiksWCYmVSYmWC5pbmRlbnQpe2lmKEo9WC5pbmRlbnQsejxNKXtmb3IoOysrejxNOylKLnB1c2goKGxbel18fDApKzEpO0oucHVzaChBLmNvbHVtbil9VT1KLmNvbmNhdChVKX1yZXR1cm4gJC5wb3NpdGlvbi5pbmRlbnQ9VXx8W10sJH19ZnVuY3Rpb24gVChBLGope3ZhciAkPWo/ai5jaGlsZHJlbjpwLFU9JFskLmxlbmd0aC0xXSxYO3JldHVybiBVJiZBLnR5cGU9PT1VLnR5cGUmJihBLnR5cGU9PT1cInRleHRcInx8QS50eXBlPT09XCJibG9ja3F1b3RlXCIpJiZ0KFUpJiZ0KEEpJiYoWD1BLnR5cGU9PT1cInRleHRcIj9vOm4sQT1YLmNhbGwoYSxVLEEpKSxBIT09VSYmJC5wdXNoKEEpLGEuYXRTdGFydCYmcC5sZW5ndGghPT0wJiZhLmV4aXRTdGFydCgpLEF9ZnVuY3Rpb24gUChBKXt2YXIgaj1CKCksJD1PKCksVT1xKCk7cmV0dXJuIHcoQSksWC5yZXNldD1SLFIudGVzdD1KLFgudGVzdD1KLGk9aS5zbGljZShBLmxlbmd0aCksQyhBKSxqPWooKSxYO2Z1bmN0aW9uIFgoeixNKXtyZXR1cm4gJChUKCQoeiksTSksail9ZnVuY3Rpb24gUigpe3ZhciB6PVguYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiBGPVUubGluZSxFPVUuY29sdW1uLGk9QStpLHp9ZnVuY3Rpb24gSigpe3ZhciB6PSQoe30pO3JldHVybiBGPVUubGluZSxFPVUuY29sdW1uLGk9QStpLHoucG9zaXRpb259fX19ZnVuY3Rpb24gdChzKXt2YXIgYyxpO3JldHVybiBzLnR5cGUhPT1cInRleHRcInx8IXMucG9zaXRpb24/ITA6KGM9cy5wb3NpdGlvbi5zdGFydCxpPXMucG9zaXRpb24uZW5kLGMubGluZSE9PWkubGluZXx8aS5jb2x1bW4tYy5jb2x1bW49PT1zLnZhbHVlLmxlbmd0aCl9ZnVuY3Rpb24gbyhzLGMpe3JldHVybiBzLnZhbHVlKz1jLnZhbHVlLHN9ZnVuY3Rpb24gbihzLGMpe3JldHVybiB0aGlzLm9wdGlvbnMuY29tbW9ubWFya3x8dGhpcy5vcHRpb25zLmdmbT9jOihzLmNoaWxkcmVuPXMuY2hpbGRyZW4uY29uY2F0KGMuY2hpbGRyZW4pLHMpfX19KSxLbD1TKHtcIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1lc2NhcGVzL2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPW47dmFyIHU9W1wiXFxcXFwiLFwiYFwiLFwiKlwiLFwie1wiLFwifVwiLFwiW1wiLFwiXVwiLFwiKFwiLFwiKVwiLFwiI1wiLFwiK1wiLFwiLVwiLFwiLlwiLFwiIVwiLFwiX1wiLFwiPlwiXSx0PXUuY29uY2F0KFtcIn5cIixcInxcIl0pLG89dC5jb25jYXQoW2BcbmAsJ1wiJyxcIiRcIixcIiVcIixcIiZcIixcIidcIixcIixcIixcIi9cIixcIjpcIixcIjtcIixcIjxcIixcIj1cIixcIj9cIixcIkBcIixcIl5cIl0pO24uZGVmYXVsdD11LG4uZ2ZtPXQsbi5jb21tb25tYXJrPW87ZnVuY3Rpb24gbihzKXt2YXIgYz1zfHx7fTtyZXR1cm4gYy5jb21tb25tYXJrP286Yy5nZm0/dDp1fX19KSxZbD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2Jsb2NrLWVsZW1lbnRzLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPVtcImFkZHJlc3NcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJiYXNlXCIsXCJiYXNlZm9udFwiLFwiYmxvY2txdW90ZVwiLFwiYm9keVwiLFwiY2FwdGlvblwiLFwiY2VudGVyXCIsXCJjb2xcIixcImNvbGdyb3VwXCIsXCJkZFwiLFwiZGV0YWlsc1wiLFwiZGlhbG9nXCIsXCJkaXJcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJmaWVsZHNldFwiLFwiZmlnY2FwdGlvblwiLFwiZmlndXJlXCIsXCJmb290ZXJcIixcImZvcm1cIixcImZyYW1lXCIsXCJmcmFtZXNldFwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZFwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJodG1sXCIsXCJpZnJhbWVcIixcImxlZ2VuZFwiLFwibGlcIixcImxpbmtcIixcIm1haW5cIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJuYXZcIixcIm5vZnJhbWVzXCIsXCJvbFwiLFwib3B0Z3JvdXBcIixcIm9wdGlvblwiLFwicFwiLFwicGFyYW1cIixcInByZVwiLFwic2VjdGlvblwiLFwic291cmNlXCIsXCJ0aXRsZVwiLFwic3VtbWFyeVwiLFwidGFibGVcIixcInRib2R5XCIsXCJ0ZFwiLFwidGZvb3RcIixcInRoXCIsXCJ0aGVhZFwiLFwidGl0bGVcIixcInRyXCIsXCJ0cmFja1wiLFwidWxcIl19fSksUGk9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9kZWZhdWx0cy5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz17cG9zaXRpb246ITAsZ2ZtOiEwLGNvbW1vbm1hcms6ITEscGVkYW50aWM6ITEsYmxvY2tzOllsKCl9fX0pLEpsPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvc2V0LW9wdGlvbnMuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1NZSgpLHQ9S2woKSxvPVBpKCk7ci5leHBvcnRzPW47ZnVuY3Rpb24gbihzKXt2YXIgYz10aGlzLGk9Yy5vcHRpb25zLEQsYTtpZihzPT1udWxsKXM9e307ZWxzZSBpZih0eXBlb2Ygcz09XCJvYmplY3RcIilzPXUocyk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZhbHVlIGBcIitzK1wiYCBmb3Igc2V0dGluZyBgb3B0aW9uc2BcIik7Zm9yKEQgaW4gbyl7aWYoYT1zW0RdLGE9PW51bGwmJihhPWlbRF0pLEQhPT1cImJsb2Nrc1wiJiZ0eXBlb2YgYSE9XCJib29sZWFuXCJ8fEQ9PT1cImJsb2Nrc1wiJiZ0eXBlb2YgYSE9XCJvYmplY3RcIil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZhbHVlIGBcIithK1wiYCBmb3Igc2V0dGluZyBgb3B0aW9ucy5cIitEK1wiYFwiKTtzW0RdPWF9cmV0dXJuIGMub3B0aW9ucz1zLGMuZXNjYXBlPXQocyksY319fSksWmw9Uyh7XCJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9jb252ZXJ0LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXU7ZnVuY3Rpb24gdShjKXtpZihjPT1udWxsKXJldHVybiBzO2lmKHR5cGVvZiBjPT1cInN0cmluZ1wiKXJldHVybiBuKGMpO2lmKHR5cGVvZiBjPT1cIm9iamVjdFwiKXJldHVyblwibGVuZ3RoXCJpbiBjP28oYyk6dChjKTtpZih0eXBlb2YgYz09XCJmdW5jdGlvblwiKXJldHVybiBjO3Rocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0XCIpfWZ1bmN0aW9uIHQoYyl7cmV0dXJuIGk7ZnVuY3Rpb24gaShEKXt2YXIgYTtmb3IoYSBpbiBjKWlmKERbYV0hPT1jW2FdKXJldHVybiExO3JldHVybiEwfX1mdW5jdGlvbiBvKGMpe2Zvcih2YXIgaT1bXSxEPS0xOysrRDxjLmxlbmd0aDspaVtEXT11KGNbRF0pO3JldHVybiBhO2Z1bmN0aW9uIGEoKXtmb3IodmFyIGw9LTE7KytsPGkubGVuZ3RoOylpZihpW2xdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19ZnVuY3Rpb24gbihjKXtyZXR1cm4gaTtmdW5jdGlvbiBpKEQpe3JldHVybiBCb29sZWFuKEQmJkQudHlwZT09PWMpfX1mdW5jdGlvbiBzKCl7cmV0dXJuITB9fX0pLFFsPVMoe1wibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9jb2xvci5icm93c2VyLmpzXCIoZSxyKXtJKCksci5leHBvcnRzPXU7ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdH19fSksZUQ9Uyh7XCJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC12aXNpdC1wYXJlbnRzL2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPWM7dmFyIHU9WmwoKSx0PVFsKCksbz0hMCxuPVwic2tpcFwiLHM9ITE7Yy5DT05USU5VRT1vLGMuU0tJUD1uLGMuRVhJVD1zO2Z1bmN0aW9uIGMoRCxhLGwscCl7dmFyIGQsZzt0eXBlb2YgYT09XCJmdW5jdGlvblwiJiZ0eXBlb2YgbCE9XCJmdW5jdGlvblwiJiYocD1sLGw9YSxhPW51bGwpLGc9dShhKSxkPXA/LTE6MSxGKEQsbnVsbCxbXSkoKTtmdW5jdGlvbiBGKEUseCxmKXt2YXIgYj10eXBlb2YgRT09XCJvYmplY3RcIiYmRSE9PW51bGw/RTp7fSx2O3JldHVybiB0eXBlb2YgYi50eXBlPT1cInN0cmluZ1wiJiYodj10eXBlb2YgYi50YWdOYW1lPT1cInN0cmluZ1wiP2IudGFnTmFtZTp0eXBlb2YgYi5uYW1lPT1cInN0cmluZ1wiP2IubmFtZTp2b2lkIDAsaC5kaXNwbGF5TmFtZT1cIm5vZGUgKFwiK3QoYi50eXBlKyh2P1wiPFwiK3YrXCI+XCI6XCJcIikpK1wiKVwiKSxoO2Z1bmN0aW9uIGgoKXt2YXIgbT1mLmNvbmNhdChFKSxDPVtdLEIscTtpZigoIWF8fGcoRSx4LGZbZi5sZW5ndGgtMV18fG51bGwpKSYmKEM9aShsKEUsZikpLENbMF09PT1zKSlyZXR1cm4gQztpZihFLmNoaWxkcmVuJiZDWzBdIT09bilmb3IocT0ocD9FLmNoaWxkcmVuLmxlbmd0aDotMSkrZDtxPi0xJiZxPEUuY2hpbGRyZW4ubGVuZ3RoOyl7aWYoQj1GKEUuY2hpbGRyZW5bcV0scSxtKSgpLEJbMF09PT1zKXJldHVybiBCO3E9dHlwZW9mIEJbMV09PVwibnVtYmVyXCI/QlsxXTpxK2R9cmV0dXJuIEN9fX1mdW5jdGlvbiBpKEQpe3JldHVybiBEIT09bnVsbCYmdHlwZW9mIEQ9PVwib2JqZWN0XCImJlwibGVuZ3RoXCJpbiBEP0Q6dHlwZW9mIEQ9PVwibnVtYmVyXCI/W28sRF06W0RdfX19KSxyRD1TKHtcIm5vZGVfbW9kdWxlcy91bmlzdC11dGlsLXZpc2l0L2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXM7dmFyIHU9ZUQoKSx0PXUuQ09OVElOVUUsbz11LlNLSVAsbj11LkVYSVQ7cy5DT05USU5VRT10LHMuU0tJUD1vLHMuRVhJVD1uO2Z1bmN0aW9uIHMoYyxpLEQsYSl7dHlwZW9mIGk9PVwiZnVuY3Rpb25cIiYmdHlwZW9mIEQhPVwiZnVuY3Rpb25cIiYmKGE9RCxEPWksaT1udWxsKSx1KGMsaSxsLGEpO2Z1bmN0aW9uIGwocCxkKXt2YXIgZz1kW2QubGVuZ3RoLTFdLEY9Zz9nLmNoaWxkcmVuLmluZGV4T2YocCk6bnVsbDtyZXR1cm4gRChwLEYsZyl9fX19KSx1RD1TKHtcIm5vZGVfbW9kdWxlcy91bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbi9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PXJEKCk7ci5leHBvcnRzPXQ7ZnVuY3Rpb24gdChzLGMpe3JldHVybiB1KHMsYz9vOm4pLHN9ZnVuY3Rpb24gbyhzKXtkZWxldGUgcy5wb3NpdGlvbn1mdW5jdGlvbiBuKHMpe3MucG9zaXRpb249dm9pZCAwfX19KSx0RD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3BhcnNlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9TWUoKSx0PXVEKCk7ci5leHBvcnRzPXM7dmFyIG89YFxuYCxuPS9cXHJcXG58XFxyL2c7ZnVuY3Rpb24gcygpe3ZhciBjPXRoaXMsaT1TdHJpbmcoYy5maWxlKSxEPXtsaW5lOjEsY29sdW1uOjEsb2Zmc2V0OjB9LGE9dShEKSxsO3JldHVybiBpPWkucmVwbGFjZShuLG8pLGkuY2hhckNvZGVBdCgwKT09PTY1Mjc5JiYoaT1pLnNsaWNlKDEpLGEuY29sdW1uKyssYS5vZmZzZXQrKyksbD17dHlwZTpcInJvb3RcIixjaGlsZHJlbjpjLnRva2VuaXplQmxvY2soaSxhKSxwb3NpdGlvbjp7c3RhcnQ6RCxlbmQ6Yy5lb2Z8fHUoRCl9fSxjLm9wdGlvbnMucG9zaXRpb258fHQobCwhMCksbH19fSksbkQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9ibGFuay1saW5lLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9L15bIFxcdF0qKFxcbnwkKS87ci5leHBvcnRzPXQ7ZnVuY3Rpb24gdChvLG4scyl7Zm9yKHZhciBjLGk9XCJcIixEPTAsYT1uLmxlbmd0aDtEPGEmJihjPXUuZXhlYyhuLnNsaWNlKEQpKSxjIT1udWxsKTspRCs9Y1swXS5sZW5ndGgsaSs9Y1swXTtpZihpIT09XCJcIil7aWYocylyZXR1cm4hMDtvKGkpfX19fSksZHU9Uyh7XCJub2RlX21vZHVsZXMvcmVwZWF0LXN0cmluZy9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PVwiXCIsdDtyLmV4cG9ydHM9bztmdW5jdGlvbiBvKG4scyl7aWYodHlwZW9mIG4hPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImV4cGVjdGVkIGEgc3RyaW5nXCIpO2lmKHM9PT0xKXJldHVybiBuO2lmKHM9PT0yKXJldHVybiBuK247dmFyIGM9bi5sZW5ndGgqcztpZih0IT09bnx8dHlwZW9mIHQ+XCJ1XCIpdD1uLHU9XCJcIjtlbHNlIGlmKHUubGVuZ3RoPj1jKXJldHVybiB1LnN1YnN0cigwLGMpO2Zvcig7Yz51Lmxlbmd0aCYmcz4xOylzJjEmJih1Kz1uKSxzPj49MSxuKz1uO3JldHVybiB1Kz1uLHU9dS5zdWJzdHIoMCxjKSx1fX19KSxNaT1TKHtcIm5vZGVfbW9kdWxlcy90cmltLXRyYWlsaW5nLWxpbmVzL2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXU7ZnVuY3Rpb24gdSh0KXtyZXR1cm4gU3RyaW5nKHQpLnJlcGxhY2UoL1xcbiskLyxcIlwiKX19fSksaUQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9jb2RlLWluZGVudGVkLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9ZHUoKSx0PU1pKCk7ci5leHBvcnRzPUQ7dmFyIG89YFxuYCxuPVwiXHRcIixzPVwiIFwiLGM9NCxpPXUocyxjKTtmdW5jdGlvbiBEKGEsbCxwKXtmb3IodmFyIGQ9LTEsZz1sLmxlbmd0aCxGPVwiXCIsRT1cIlwiLHg9XCJcIixmPVwiXCIsYix2LGg7KytkPGc7KWlmKGI9bC5jaGFyQXQoZCksaClpZihoPSExLEYrPXgsRSs9Zix4PVwiXCIsZj1cIlwiLGI9PT1vKXg9YixmPWI7ZWxzZSBmb3IoRis9YixFKz1iOysrZDxnOyl7aWYoYj1sLmNoYXJBdChkKSwhYnx8Yj09PW8pe2Y9Yix4PWI7YnJlYWt9Ris9YixFKz1ifWVsc2UgaWYoYj09PXMmJmwuY2hhckF0KGQrMSk9PT1iJiZsLmNoYXJBdChkKzIpPT09YiYmbC5jaGFyQXQoZCszKT09PWIpeCs9aSxkKz0zLGg9ITA7ZWxzZSBpZihiPT09bil4Kz1iLGg9ITA7ZWxzZXtmb3Iodj1cIlwiO2I9PT1ufHxiPT09czspdis9YixiPWwuY2hhckF0KCsrZCk7aWYoYiE9PW8pYnJlYWs7eCs9ditiLGYrPWJ9aWYoRSlyZXR1cm4gcD8hMDphKEYpKHt0eXBlOlwiY29kZVwiLGxhbmc6bnVsbCxtZXRhOm51bGwsdmFsdWU6dChFKX0pfX19KSxhRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2NvZGUtZmVuY2VkLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPUQ7dmFyIHU9YFxuYCx0PVwiXHRcIixvPVwiIFwiLG49XCJ+XCIscz1cImBcIixjPTMsaT00O2Z1bmN0aW9uIEQoYSxsLHApe3ZhciBkPXRoaXMsZz1kLm9wdGlvbnMuZ2ZtLEY9bC5sZW5ndGgrMSxFPTAseD1cIlwiLGYsYix2LGgsbSxDLEIscSxMLHcsTyxULFA7aWYoISFnKXtmb3IoO0U8RiYmKHY9bC5jaGFyQXQoRSksISh2IT09byYmdiE9PXQpKTspeCs9dixFKys7aWYoVD1FLHY9bC5jaGFyQXQoRSksISh2IT09biYmdiE9PXMpKXtmb3IoRSsrLGI9dixmPTEseCs9djtFPEYmJih2PWwuY2hhckF0KEUpLHY9PT1iKTspeCs9dixmKyssRSsrO2lmKCEoZjxjKSl7Zm9yKDtFPEYmJih2PWwuY2hhckF0KEUpLCEodiE9PW8mJnYhPT10KSk7KXgrPXYsRSsrO2ZvcihoPVwiXCIsQj1cIlwiO0U8RiYmKHY9bC5jaGFyQXQoRSksISh2PT09dXx8Yj09PXMmJnY9PT1iKSk7KXY9PT1vfHx2PT09dD9CKz12OihoKz1CK3YsQj1cIlwiKSxFKys7aWYodj1sLmNoYXJBdChFKSwhKHYmJnYhPT11KSl7aWYocClyZXR1cm4hMDtQPWEubm93KCksUC5jb2x1bW4rPXgubGVuZ3RoLFAub2Zmc2V0Kz14Lmxlbmd0aCx4Kz1oLGg9ZC5kZWNvZGUucmF3KGQudW5lc2NhcGUoaCksUCksQiYmKHgrPUIpLEI9XCJcIix3PVwiXCIsTz1cIlwiLHE9XCJcIixMPVwiXCI7Zm9yKHZhciBBPSEwO0U8Rjspe2lmKHY9bC5jaGFyQXQoRSkscSs9dyxMKz1PLHc9XCJcIixPPVwiXCIsdiE9PXUpe3ErPXYsTys9dixFKys7Y29udGludWV9Zm9yKEE/KHgrPXYsQT0hMSk6KHcrPXYsTys9diksQj1cIlwiLEUrKztFPEYmJih2PWwuY2hhckF0KEUpLHY9PT1vKTspQis9dixFKys7aWYodys9QixPKz1CLnNsaWNlKFQpLCEoQi5sZW5ndGg+PWkpKXtmb3IoQj1cIlwiO0U8RiYmKHY9bC5jaGFyQXQoRSksdj09PWIpOylCKz12LEUrKztpZih3Kz1CLE8rPUIsIShCLmxlbmd0aDxmKSl7Zm9yKEI9XCJcIjtFPEYmJih2PWwuY2hhckF0KEUpLCEodiE9PW8mJnYhPT10KSk7KXcrPXYsTys9dixFKys7aWYoIXZ8fHY9PT11KWJyZWFrfX19Zm9yKHgrPXErdyxFPS0xLEY9aC5sZW5ndGg7KytFPEY7KWlmKHY9aC5jaGFyQXQoRSksdj09PW98fHY9PT10KW18fChtPWguc2xpY2UoMCxFKSk7ZWxzZSBpZihtKXtDPWguc2xpY2UoRSk7YnJlYWt9cmV0dXJuIGEoeCkoe3R5cGU6XCJjb2RlXCIsbGFuZzptfHxofHxudWxsLG1ldGE6Q3x8bnVsbCx2YWx1ZTpMfSl9fX19fX19KSxHZT1TKHtcIm5vZGVfbW9kdWxlcy90cmltL2luZGV4LmpzXCIoZSxyKXtJKCksZT1yLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQpe3JldHVybiB0LnJlcGxhY2UoL15cXHMqfFxccyokL2csXCJcIil9ZS5sZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL15cXHMqLyxcIlwiKX0sZS5yaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cXHMqJC8sXCJcIil9fX0pLGh1PVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9pbnRlcnJ1cHQuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQsbyxuLHMpe2Zvcih2YXIgYz10Lmxlbmd0aCxpPS0xLEQsYTsrK2k8YzspaWYoRD10W2ldLGE9RFsxXXx8e30sIShhLnBlZGFudGljIT09dm9pZCAwJiZhLnBlZGFudGljIT09bi5vcHRpb25zLnBlZGFudGljKSYmIShhLmNvbW1vbm1hcmshPT12b2lkIDAmJmEuY29tbW9ubWFyayE9PW4ub3B0aW9ucy5jb21tb25tYXJrKSYmb1tEWzBdXS5hcHBseShuLHMpKXJldHVybiEwO3JldHVybiExfX19KSxvRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2Jsb2NrcXVvdGUuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1HZSgpLHQ9aHUoKTtyLmV4cG9ydHM9aTt2YXIgbz1gXG5gLG49XCJcdFwiLHM9XCIgXCIsYz1cIj5cIjtmdW5jdGlvbiBpKEQsYSxsKXtmb3IodmFyIHA9dGhpcyxkPXAub2Zmc2V0LGc9cC5ibG9ja1Rva2VuaXplcnMsRj1wLmludGVycnVwdEJsb2NrcXVvdGUsRT1ELm5vdygpLHg9RS5saW5lLGY9YS5sZW5ndGgsYj1bXSx2PVtdLGg9W10sbSxDPTAsQixxLEwsdyxPLFQsUCxBO0M8ZiYmKEI9YS5jaGFyQXQoQyksIShCIT09cyYmQiE9PW4pKTspQysrO2lmKGEuY2hhckF0KEMpPT09Yyl7aWYobClyZXR1cm4hMDtmb3IoQz0wO0M8Zjspe2ZvcihMPWEuaW5kZXhPZihvLEMpLFQ9QyxQPSExLEw9PT0tMSYmKEw9Zik7QzxmJiYoQj1hLmNoYXJBdChDKSwhKEIhPT1zJiZCIT09bikpOylDKys7aWYoYS5jaGFyQXQoQyk9PT1jPyhDKyssUD0hMCxhLmNoYXJBdChDKT09PXMmJkMrKyk6Qz1ULHc9YS5zbGljZShDLEwpLCFQJiYhdSh3KSl7Qz1UO2JyZWFrfWlmKCFQJiYocT1hLnNsaWNlKEMpLHQoRixnLHAsW0QscSwhMF0pKSlicmVhaztPPVQ9PT1DP3c6YS5zbGljZShULEwpLGgucHVzaChDLVQpLGIucHVzaChPKSx2LnB1c2godyksQz1MKzF9Zm9yKEM9LTEsZj1oLmxlbmd0aCxtPUQoYi5qb2luKG8pKTsrK0M8ZjspZFt4XT0oZFt4XXx8MCkraFtDXSx4Kys7cmV0dXJuIEE9cC5lbnRlckJsb2NrKCksdj1wLnRva2VuaXplQmxvY2sodi5qb2luKG8pLEUpLEEoKSxtKHt0eXBlOlwiYmxvY2txdW90ZVwiLGNoaWxkcmVuOnZ9KX19fX0pLHNEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1hdHguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9Yzt2YXIgdT1gXG5gLHQ9XCJcdFwiLG89XCIgXCIsbj1cIiNcIixzPTY7ZnVuY3Rpb24gYyhpLEQsYSl7Zm9yKHZhciBsPXRoaXMscD1sLm9wdGlvbnMucGVkYW50aWMsZD1ELmxlbmd0aCsxLGc9LTEsRj1pLm5vdygpLEU9XCJcIix4PVwiXCIsZixiLHY7KytnPGQ7KXtpZihmPUQuY2hhckF0KGcpLGYhPT1vJiZmIT09dCl7Zy0tO2JyZWFrfUUrPWZ9Zm9yKHY9MDsrK2c8PWQ7KXtpZihmPUQuY2hhckF0KGcpLGYhPT1uKXtnLS07YnJlYWt9RSs9Zix2Kyt9aWYoISh2PnMpJiYhKCF2fHwhcCYmRC5jaGFyQXQoZysxKT09PW4pKXtmb3IoZD1ELmxlbmd0aCsxLGI9XCJcIjsrK2c8ZDspe2lmKGY9RC5jaGFyQXQoZyksZiE9PW8mJmYhPT10KXtnLS07YnJlYWt9Yis9Zn1pZighKCFwJiZiLmxlbmd0aD09PTAmJmYmJmYhPT11KSl7aWYoYSlyZXR1cm4hMDtmb3IoRSs9YixiPVwiXCIseD1cIlwiOysrZzxkJiYoZj1ELmNoYXJBdChnKSwhKCFmfHxmPT09dSkpOyl7aWYoZiE9PW8mJmYhPT10JiZmIT09bil7eCs9YitmLGI9XCJcIjtjb250aW51ZX1mb3IoO2Y9PT1vfHxmPT09dDspYis9ZixmPUQuY2hhckF0KCsrZyk7aWYoIXAmJngmJiFiJiZmPT09bil7eCs9Zjtjb250aW51ZX1mb3IoO2Y9PT1uOyliKz1mLGY9RC5jaGFyQXQoKytnKTtmb3IoO2Y9PT1vfHxmPT09dDspYis9ZixmPUQuY2hhckF0KCsrZyk7Zy0tfXJldHVybiBGLmNvbHVtbis9RS5sZW5ndGgsRi5vZmZzZXQrPUUubGVuZ3RoLEUrPXgrYixpKEUpKHt0eXBlOlwiaGVhZGluZ1wiLGRlcHRoOnYsY2hpbGRyZW46bC50b2tlbml6ZUlubGluZSh4LEYpfSl9fX19fSksY0Q9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS90aGVtYXRpYy1icmVhay5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz1EO3ZhciB1PVwiXHRcIix0PWBcbmAsbz1cIiBcIixuPVwiKlwiLHM9XCItXCIsYz1cIl9cIixpPTM7ZnVuY3Rpb24gRChhLGwscCl7Zm9yKHZhciBkPS0xLGc9bC5sZW5ndGgrMSxGPVwiXCIsRSx4LGYsYjsrK2Q8ZyYmKEU9bC5jaGFyQXQoZCksIShFIT09dSYmRSE9PW8pKTspRis9RTtpZighKEUhPT1uJiZFIT09cyYmRSE9PWMpKWZvcih4PUUsRis9RSxmPTEsYj1cIlwiOysrZDxnOylpZihFPWwuY2hhckF0KGQpLEU9PT14KWYrKyxGKz1iK3gsYj1cIlwiO2Vsc2UgaWYoRT09PW8pYis9RTtlbHNlIHJldHVybiBmPj1pJiYoIUV8fEU9PT10KT8oRis9YixwPyEwOmEoRikoe3R5cGU6XCJ0aGVtYXRpY0JyZWFrXCJ9KSk6dm9pZCAwfX19KSx6aT1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvZ2V0LWluZGVudGF0aW9uLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXM7dmFyIHU9XCJcdFwiLHQ9XCIgXCIsbz0xLG49NDtmdW5jdGlvbiBzKGMpe2Zvcih2YXIgaT0wLEQ9MCxhPWMuY2hhckF0KGkpLGw9e30scCxkPTA7YT09PXV8fGE9PT10Oyl7Zm9yKHA9YT09PXU/bjpvLEQrPXAscD4xJiYoRD1NYXRoLmZsb29yKEQvcCkqcCk7ZDxEOylsWysrZF09aTthPWMuY2hhckF0KCsraSl9cmV0dXJue2luZGVudDpELHN0b3BzOmx9fX19KSxsRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvcmVtb3ZlLWluZGVudGF0aW9uLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9R2UoKSx0PWR1KCksbz16aSgpO3IuZXhwb3J0cz1pO3ZhciBuPWBcbmAscz1cIiBcIixjPVwiIVwiO2Z1bmN0aW9uIGkoRCxhKXt2YXIgbD1ELnNwbGl0KG4pLHA9bC5sZW5ndGgrMSxkPTEvMCxnPVtdLEYsRSx4O2ZvcihsLnVuc2hpZnQodChzLGEpK2MpO3AtLTspaWYoRT1vKGxbcF0pLGdbcF09RS5zdG9wcyx1KGxbcF0pLmxlbmd0aCE9PTApaWYoRS5pbmRlbnQpRS5pbmRlbnQ+MCYmRS5pbmRlbnQ8ZCYmKGQ9RS5pbmRlbnQpO2Vsc2V7ZD0xLzA7YnJlYWt9aWYoZCE9PTEvMClmb3IocD1sLmxlbmd0aDtwLS07KXtmb3IoeD1nW3BdLEY9ZDtGJiYhKEYgaW4geCk7KUYtLTtsW3BdPWxbcF0uc2xpY2UoeFtGXSsxKX1yZXR1cm4gbC5zaGlmdCgpLGwuam9pbihuKX19fSksREQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9saXN0LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9R2UoKSx0PWR1KCksbz16ZSgpLG49emkoKSxzPWxEKCksYz1odSgpO3IuZXhwb3J0cz1CO3ZhciBpPVwiKlwiLEQ9XCJfXCIsYT1cIitcIixsPVwiLVwiLHA9XCIuXCIsZD1cIiBcIixnPWBcbmAsRj1cIlx0XCIsRT1cIilcIix4PVwieFwiLGY9NCxiPS9cXG5cXG4oPyFcXHMqJCkvLHY9L15cXFsoWyBYXFx0eF0pXVsgXFx0XS8saD0vXihbIFxcdF0qKShbKistXXxcXGQrWy4pXSkoIHsxLDR9KD8hICl8IHxcXHR8JHwoPz1cXG4pKShbXlxcbl0qKS8sbT0vXihbIFxcdF0qKShbKistXXxcXGQrWy4pXSkoWyBcXHRdKykvLEM9L14oIHsxLDR9fFxcdCk/L2dtO2Z1bmN0aW9uIEIoTyxULFApe2Zvcih2YXIgQT10aGlzLGo9QS5vcHRpb25zLmNvbW1vbm1hcmssJD1BLm9wdGlvbnMucGVkYW50aWMsVT1BLmJsb2NrVG9rZW5pemVycyxYPUEuaW50ZXJydXB0TGlzdCxSPTAsSj1ULmxlbmd0aCx6PW51bGwsTSxHLGsseSxfLE4sVixXLEssZWUsWSx0ZSxEZSxsZSxuZSxaLFEsZmUsYmUscGU9ITEsaGUsb2UsZGUsaWU7UjxKJiYoeT1ULmNoYXJBdChSKSwhKHkhPT1GJiZ5IT09ZCkpOylSKys7aWYoeT1ULmNoYXJBdChSKSx5PT09aXx8eT09PWF8fHk9PT1sKV89eSxrPSExO2Vsc2V7Zm9yKGs9ITAsRz1cIlwiO1I8SiYmKHk9VC5jaGFyQXQoUiksISFvKHkpKTspRys9eSxSKys7aWYoeT1ULmNoYXJBdChSKSwhR3x8ISh5PT09cHx8aiYmeT09PUUpfHxQJiZHIT09XCIxXCIpcmV0dXJuO3o9cGFyc2VJbnQoRywxMCksXz15fWlmKHk9VC5jaGFyQXQoKytSKSwhKHkhPT1kJiZ5IT09RiYmKCR8fHkhPT1nJiZ5IT09XCJcIikpKXtpZihQKXJldHVybiEwO2ZvcihSPTAsbGU9W10sbmU9W10sWj1bXTtSPEo7KXtmb3IoTj1ULmluZGV4T2YoZyxSKSxWPVIsVz0hMSxpZT0hMSxOPT09LTEmJihOPUopLE09MDtSPEo7KXtpZih5PVQuY2hhckF0KFIpLHk9PT1GKU0rPWYtTSVmO2Vsc2UgaWYoeT09PWQpTSsrO2Vsc2UgYnJlYWs7UisrfWlmKFEmJk0+PVEuaW5kZW50JiYoaWU9ITApLHk9VC5jaGFyQXQoUiksSz1udWxsLCFpZSl7aWYoeT09PWl8fHk9PT1hfHx5PT09bClLPXksUisrLE0rKztlbHNle2ZvcihHPVwiXCI7UjxKJiYoeT1ULmNoYXJBdChSKSwhIW8oeSkpOylHKz15LFIrKzt5PVQuY2hhckF0KFIpLFIrKyxHJiYoeT09PXB8fGomJnk9PT1FKSYmKEs9eSxNKz1HLmxlbmd0aCsxKX1pZihLKWlmKHk9VC5jaGFyQXQoUikseT09PUYpTSs9Zi1NJWYsUisrO2Vsc2UgaWYoeT09PWQpe2ZvcihkZT1SK2Y7UjxkZSYmVC5jaGFyQXQoUik9PT1kOylSKyssTSsrO1I9PT1kZSYmVC5jaGFyQXQoUik9PT1kJiYoUi09Zi0xLE0tPWYtMSl9ZWxzZSB5IT09ZyYmeSE9PVwiXCImJihLPW51bGwpfWlmKEspe2lmKCEkJiZfIT09SylicmVhaztXPSEwfWVsc2UhaiYmIWllJiZULmNoYXJBdChWKT09PWQ/aWU9ITA6aiYmUSYmKGllPU0+PVEuaW5kZW50fHxNPmYpLFc9ITEsUj1WO2lmKFk9VC5zbGljZShWLE4pLGVlPVY9PT1SP1k6VC5zbGljZShSLE4pLChLPT09aXx8Sz09PUR8fEs9PT1sKSYmVS50aGVtYXRpY0JyZWFrLmNhbGwoQSxPLFksITApKWJyZWFrO2lmKHRlPURlLERlPSFXJiYhdShlZSkubGVuZ3RoLGllJiZRKVEudmFsdWU9US52YWx1ZS5jb25jYXQoWixZKSxuZT1uZS5jb25jYXQoWixZKSxaPVtdO2Vsc2UgaWYoVylaLmxlbmd0aCE9PTAmJihwZT0hMCxRLnZhbHVlLnB1c2goXCJcIiksUS50cmFpbD1aLmNvbmNhdCgpKSxRPXt2YWx1ZTpbWV0saW5kZW50Ok0sdHJhaWw6W119LGxlLnB1c2goUSksbmU9bmUuY29uY2F0KFosWSksWj1bXTtlbHNlIGlmKERlKXtpZih0ZSYmIWopYnJlYWs7Wi5wdXNoKFkpfWVsc2V7aWYodGV8fGMoWCxVLEEsW08sWSwhMF0pKWJyZWFrO1EudmFsdWU9US52YWx1ZS5jb25jYXQoWixZKSxuZT1uZS5jb25jYXQoWixZKSxaPVtdfVI9TisxfWZvcihoZT1PKG5lLmpvaW4oZykpLnJlc2V0KHt0eXBlOlwibGlzdFwiLG9yZGVyZWQ6ayxzdGFydDp6LHNwcmVhZDpwZSxjaGlsZHJlbjpbXX0pLGZlPUEuZW50ZXJMaXN0KCksYmU9QS5lbnRlckJsb2NrKCksUj0tMSxKPWxlLmxlbmd0aDsrK1I8SjspUT1sZVtSXS52YWx1ZS5qb2luKGcpLG9lPU8ubm93KCksTyhRKShxKEEsUSxvZSksaGUpLFE9bGVbUl0udHJhaWwuam9pbihnKSxSIT09Si0xJiYoUSs9ZyksTyhRKTtyZXR1cm4gZmUoKSxiZSgpLGhlfX1mdW5jdGlvbiBxKE8sVCxQKXt2YXIgQT1PLm9mZnNldCxqPU8ub3B0aW9ucy5wZWRhbnRpYz9MOncsJD1udWxsLFUsWDtyZXR1cm4gVD1qLmFwcGx5KG51bGwsYXJndW1lbnRzKSxPLm9wdGlvbnMuZ2ZtJiYoVT1ULm1hdGNoKHYpLFUmJihYPVVbMF0ubGVuZ3RoLCQ9VVsxXS50b0xvd2VyQ2FzZSgpPT09eCxBW1AubGluZV0rPVgsVD1ULnNsaWNlKFgpKSkse3R5cGU6XCJsaXN0SXRlbVwiLHNwcmVhZDpiLnRlc3QoVCksY2hlY2tlZDokLGNoaWxkcmVuOk8udG9rZW5pemVCbG9jayhULFApfX1mdW5jdGlvbiBMKE8sVCxQKXt2YXIgQT1PLm9mZnNldCxqPVAubGluZTtyZXR1cm4gVD1ULnJlcGxhY2UobSwkKSxqPVAubGluZSxULnJlcGxhY2UoQywkKTtmdW5jdGlvbiAkKFUpe3JldHVybiBBW2pdPShBW2pdfHwwKStVLmxlbmd0aCxqKyssXCJcIn19ZnVuY3Rpb24gdyhPLFQsUCl7dmFyIEE9Ty5vZmZzZXQsaj1QLmxpbmUsJCxVLFgsUixKLHosTTtmb3IoVD1ULnJlcGxhY2UoaCxHKSxSPVQuc3BsaXQoZyksSj1zKFQsbigkKS5pbmRlbnQpLnNwbGl0KGcpLEpbMF09WCxBW2pdPShBW2pdfHwwKStVLmxlbmd0aCxqKyssej0wLE09Ui5sZW5ndGg7Kyt6PE07KUFbal09KEFbal18fDApK1Jbel0ubGVuZ3RoLUpbel0ubGVuZ3RoLGorKztyZXR1cm4gSi5qb2luKGcpO2Z1bmN0aW9uIEcoayx5LF8sTixWKXtyZXR1cm4gVT15K18rTixYPVYsTnVtYmVyKF8pPDEwJiZVLmxlbmd0aCUyPT09MSYmKF89ZCtfKSwkPXkrdChkLF8ubGVuZ3RoKStOLCQrWH19fX0pLGZEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1zZXRleHQuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9YTt2YXIgdT1gXG5gLHQ9XCJcdFwiLG89XCIgXCIsbj1cIj1cIixzPVwiLVwiLGM9MyxpPTEsRD0yO2Z1bmN0aW9uIGEobCxwLGQpe2Zvcih2YXIgZz10aGlzLEY9bC5ub3coKSxFPXAubGVuZ3RoLHg9LTEsZj1cIlwiLGIsdixoLG0sQzsrK3g8RTspe2lmKGg9cC5jaGFyQXQoeCksaCE9PW98fHg+PWMpe3gtLTticmVha31mKz1ofWZvcihiPVwiXCIsdj1cIlwiOysreDxFOyl7aWYoaD1wLmNoYXJBdCh4KSxoPT09dSl7eC0tO2JyZWFrfWg9PT1vfHxoPT09dD92Kz1oOihiKz12K2gsdj1cIlwiKX1pZihGLmNvbHVtbis9Zi5sZW5ndGgsRi5vZmZzZXQrPWYubGVuZ3RoLGYrPWIrdixoPXAuY2hhckF0KCsreCksbT1wLmNoYXJBdCgrK3gpLCEoaCE9PXV8fG0hPT1uJiZtIT09cykpe2ZvcihmKz1oLHY9bSxDPW09PT1uP2k6RDsrK3g8RTspe2lmKGg9cC5jaGFyQXQoeCksaCE9PW0pe2lmKGghPT11KXJldHVybjt4LS07YnJlYWt9dis9aH1yZXR1cm4gZD8hMDpsKGYrdikoe3R5cGU6XCJoZWFkaW5nXCIsZGVwdGg6QyxjaGlsZHJlbjpnLnRva2VuaXplSW5saW5lKGIsRil9KX19fX0pLEdpPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdXRpbC9odG1sLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciByPVwiW2EtekEtWl86XVthLXpBLVowLTk6Ll8tXSpcIix1PVwiW15cXFwiJz08PmBcXFxcdTAwMDAtXFxcXHUwMDIwXStcIix0PVwiJ1teJ10qJ1wiLG89J1wiW15cIl0qXCInLG49XCIoPzpcIit1K1wifFwiK3QrXCJ8XCIrbytcIilcIixzPVwiKD86XFxcXHMrXCIrcitcIig/OlxcXFxzKj1cXFxccypcIituK1wiKT8pXCIsYz1cIjxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qXCIrcytcIipcXFxccypcXFxcLz8+XCIsaT1cIjxcXFxcL1tBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcXFxccyo+XCIsRD1cIjwhLS0tLT58PCEtLSg/Oi0/W14+LV0pKD86LT9bXi1dKSotLT5cIixhPVwiPFs/XS4qP1s/XT5cIixsPVwiPCFbQS1aYS16XStcXFxccytbXj5dKj5cIixwPVwiPCFcXFxcW0NEQVRBXFxcXFtbXFxcXHNcXFxcU10qP1xcXFxdXFxcXF0+XCI7ZS5vcGVuQ2xvc2VUYWc9bmV3IFJlZ0V4cChcIl4oPzpcIitjK1wifFwiK2krXCIpXCIpLGUudGFnPW5ldyBSZWdFeHAoXCJeKD86XCIrYytcInxcIitpK1wifFwiK0QrXCJ8XCIrYStcInxcIitsK1wifFwiK3ArXCIpXCIpfX0pLHBEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaHRtbC1ibG9jay5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PUdpKCkub3BlbkNsb3NlVGFnO3IuZXhwb3J0cz1iO3ZhciB0PVwiXHRcIixvPVwiIFwiLG49YFxuYCxzPVwiPFwiLGM9L148KHNjcmlwdHxwcmV8c3R5bGUpKD89KFxcc3w+fCQpKS9pLGk9LzxcXC8oc2NyaXB0fHByZXxzdHlsZSk+L2ksRD0vXjwhLS0vLGE9Ly0tPi8sbD0vXjxcXD8vLHA9L1xcPz4vLGQ9L148IVtBLVphLXpdLyxnPS8+LyxGPS9ePCFcXFtDREFUQVxcWy8sRT0vXV0+Lyx4PS9eJC8sZj1uZXcgUmVnRXhwKHUuc291cmNlK1wiXFxcXHMqJFwiKTtmdW5jdGlvbiBiKHYsaCxtKXtmb3IodmFyIEM9dGhpcyxCPUMub3B0aW9ucy5ibG9ja3Muam9pbihcInxcIikscT1uZXcgUmVnRXhwKFwiXjwvPyhcIitCK1wiKSg/PShcXFxcc3wvPz58JCkpXCIsXCJpXCIpLEw9aC5sZW5ndGgsdz0wLE8sVCxQLEEsaiwkLFUsWD1bW2MsaSwhMF0sW0QsYSwhMF0sW2wscCwhMF0sW2QsZywhMF0sW0YsRSwhMF0sW3EseCwhMF0sW2YseCwhMV1dO3c8TCYmKEE9aC5jaGFyQXQodyksIShBIT09dCYmQSE9PW8pKTspdysrO2lmKGguY2hhckF0KHcpPT09cyl7Zm9yKE89aC5pbmRleE9mKG4sdysxKSxPPU89PT0tMT9MOk8sVD1oLnNsaWNlKHcsTyksUD0tMSxqPVgubGVuZ3RoOysrUDxqOylpZihYW1BdWzBdLnRlc3QoVCkpeyQ9WFtQXTticmVha31pZighISQpe2lmKG0pcmV0dXJuICRbMl07aWYodz1PLCEkWzFdLnRlc3QoVCkpZm9yKDt3PEw7KXtpZihPPWguaW5kZXhPZihuLHcrMSksTz1PPT09LTE/TDpPLFQ9aC5zbGljZSh3KzEsTyksJFsxXS50ZXN0KFQpKXtUJiYodz1PKTticmVha313PU99cmV0dXJuIFU9aC5zbGljZSgwLHcpLHYoVSkoe3R5cGU6XCJodG1sXCIsdmFsdWU6VX0pfX19fX0pLHhlPVMoe1wibm9kZV9tb2R1bGVzL2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyL2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPW87dmFyIHU9U3RyaW5nLmZyb21DaGFyQ29kZSx0PS9cXHMvO2Z1bmN0aW9uIG8obil7cmV0dXJuIHQudGVzdCh0eXBlb2Ygbj09XCJudW1iZXJcIj91KG4pOm4uY2hhckF0KDApKX19fSksZEQ9Uyh7XCJub2RlX21vZHVsZXMvY29sbGFwc2Utd2hpdGUtc3BhY2UvaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZSgvXFxzKy9nLFwiIFwiKX19fSksVWk9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL25vcm1hbGl6ZS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PWREKCk7ci5leHBvcnRzPXQ7ZnVuY3Rpb24gdChvKXtyZXR1cm4gdShvKS50b0xvd2VyQ2FzZSgpfX19KSxoRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2RlZmluaXRpb24uanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT14ZSgpLHQ9VWkoKTtyLmV4cG9ydHM9eDt2YXIgbz0nXCInLG49XCInXCIscz1cIlxcXFxcIixjPWBcbmAsaT1cIlx0XCIsRD1cIiBcIixhPVwiW1wiLGw9XCJdXCIscD1cIihcIixkPVwiKVwiLGc9XCI6XCIsRj1cIjxcIixFPVwiPlwiO2Z1bmN0aW9uIHgodixoLG0pe2Zvcih2YXIgQz10aGlzLEI9Qy5vcHRpb25zLmNvbW1vbm1hcmsscT0wLEw9aC5sZW5ndGgsdz1cIlwiLE8sVCxQLEEsaiwkLFUsWDtxPEwmJihBPWguY2hhckF0KHEpLCEoQSE9PUQmJkEhPT1pKSk7KXcrPUEscSsrO2lmKEE9aC5jaGFyQXQocSksQT09PWEpe2ZvcihxKyssdys9QSxQPVwiXCI7cTxMJiYoQT1oLmNoYXJBdChxKSxBIT09bCk7KUE9PT1zJiYoUCs9QSxxKyssQT1oLmNoYXJBdChxKSksUCs9QSxxKys7aWYoISghUHx8aC5jaGFyQXQocSkhPT1sfHxoLmNoYXJBdChxKzEpIT09Zykpe2ZvcigkPVAsdys9UCtsK2cscT13Lmxlbmd0aCxQPVwiXCI7cTxMJiYoQT1oLmNoYXJBdChxKSwhKEEhPT1pJiZBIT09RCYmQSE9PWMpKTspdys9QSxxKys7aWYoQT1oLmNoYXJBdChxKSxQPVwiXCIsTz13LEE9PT1GKXtmb3IocSsrO3E8TCYmKEE9aC5jaGFyQXQocSksISFmKEEpKTspUCs9QSxxKys7aWYoQT1oLmNoYXJBdChxKSxBPT09Zi5kZWxpbWl0ZXIpdys9RitQK0EscSsrO2Vsc2V7aWYoQilyZXR1cm47cS09UC5sZW5ndGgrMSxQPVwiXCJ9fWlmKCFQKXtmb3IoO3E8TCYmKEE9aC5jaGFyQXQocSksISFiKEEpKTspUCs9QSxxKys7dys9UH1pZighIVApe2ZvcihVPVAsUD1cIlwiO3E8TCYmKEE9aC5jaGFyQXQocSksIShBIT09aSYmQSE9PUQmJkEhPT1jKSk7KVArPUEscSsrO2lmKEE9aC5jaGFyQXQocSksaj1udWxsLEE9PT1vP2o9bzpBPT09bj9qPW46QT09PXAmJihqPWQpLCFqKVA9XCJcIixxPXcubGVuZ3RoO2Vsc2UgaWYoUCl7Zm9yKHcrPVArQSxxPXcubGVuZ3RoLFA9XCJcIjtxPEwmJihBPWguY2hhckF0KHEpLEEhPT1qKTspe2lmKEE9PT1jKXtpZihxKyssQT1oLmNoYXJBdChxKSxBPT09Y3x8QT09PWopcmV0dXJuO1ArPWN9UCs9QSxxKyt9aWYoQT1oLmNoYXJBdChxKSxBIT09ailyZXR1cm47VD13LHcrPVArQSxxKyssWD1QLFA9XCJcIn1lbHNlIHJldHVybjtmb3IoO3E8TCYmKEE9aC5jaGFyQXQocSksIShBIT09aSYmQSE9PUQpKTspdys9QSxxKys7aWYoQT1oLmNoYXJBdChxKSwhQXx8QT09PWMpcmV0dXJuIG0/ITA6KE89dihPKS50ZXN0KCkuZW5kLFU9Qy5kZWNvZGUucmF3KEMudW5lc2NhcGUoVSksTyx7bm9uVGVybWluYXRlZDohMX0pLFgmJihUPXYoVCkudGVzdCgpLmVuZCxYPUMuZGVjb2RlLnJhdyhDLnVuZXNjYXBlKFgpLFQpKSx2KHcpKHt0eXBlOlwiZGVmaW5pdGlvblwiLGlkZW50aWZpZXI6dCgkKSxsYWJlbDokLHRpdGxlOlh8fG51bGwsdXJsOlV9KSl9fX19ZnVuY3Rpb24gZih2KXtyZXR1cm4gdiE9PUUmJnYhPT1hJiZ2IT09bH1mLmRlbGltaXRlcj1FO2Z1bmN0aW9uIGIodil7cmV0dXJuIHYhPT1hJiZ2IT09bCYmIXUodil9fX0pLHZEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdGFibGUuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT14ZSgpO3IuZXhwb3J0cz1GO3ZhciB0PVwiXHRcIixvPWBcbmAsbj1cIiBcIixzPVwiLVwiLGM9XCI6XCIsaT1cIlxcXFxcIixEPVwifFwiLGE9MSxsPTIscD1cImxlZnRcIixkPVwiY2VudGVyXCIsZz1cInJpZ2h0XCI7ZnVuY3Rpb24gRihFLHgsZil7dmFyIGI9dGhpcyx2LGgsbSxDLEIscSxMLHcsTyxULFAsQSxqLCQsVSxYLFIsSix6LE0sRyxrO2lmKCEhYi5vcHRpb25zLmdmbSl7Zm9yKHY9MCxYPTAscT14Lmxlbmd0aCsxLEw9W107djxxOyl7aWYoTT14LmluZGV4T2Yobyx2KSxHPXguaW5kZXhPZihELHYrMSksTT09PS0xJiYoTT14Lmxlbmd0aCksRz09PS0xfHxHPk0pe2lmKFg8bClyZXR1cm47YnJlYWt9TC5wdXNoKHguc2xpY2UodixNKSksWCsrLHY9TSsxfWZvcihDPUwuam9pbihvKSxoPUwuc3BsaWNlKDEsMSlbMF18fFtdLHY9MCxxPWgubGVuZ3RoLFgtLSxtPSExLFA9W107djxxOyl7aWYoTz1oLmNoYXJBdCh2KSxPPT09RCl7aWYoVD1udWxsLG09PT0hMSl7aWYoaz09PSExKXJldHVybn1lbHNlIFAucHVzaChtKSxtPSExO2s9ITF9ZWxzZSBpZihPPT09cylUPSEwLG09bXx8bnVsbDtlbHNlIGlmKE89PT1jKW09PT1wP209ZDpUJiZtPT09bnVsbD9tPWc6bT1wO2Vsc2UgaWYoIXUoTykpcmV0dXJuO3YrK31pZihtIT09ITEmJlAucHVzaChtKSwhKFAubGVuZ3RoPGEpKXtpZihmKXJldHVybiEwO2ZvcihVPS0xLEo9W10sej1FKEMpLnJlc2V0KHt0eXBlOlwidGFibGVcIixhbGlnbjpQLGNoaWxkcmVuOkp9KTsrK1U8WDspe2ZvcihSPUxbVV0sQj17dHlwZTpcInRhYmxlUm93XCIsY2hpbGRyZW46W119LFUmJkUobyksRShSKS5yZXNldChCLHopLHE9Ui5sZW5ndGgrMSx2PTAsdz1cIlwiLEE9XCJcIixqPSEwO3Y8cTspe2lmKE89Ui5jaGFyQXQodiksTz09PXR8fE89PT1uKXtBP3crPU86RShPKSx2Kys7Y29udGludWV9Tz09PVwiXCJ8fE89PT1EP2o/RShPKTooKEF8fE8pJiYhaiYmKEM9QSx3Lmxlbmd0aD4xJiYoTz8oQys9dy5zbGljZSgwLC0xKSx3PXcuY2hhckF0KHcubGVuZ3RoLTEpKTooQys9dyx3PVwiXCIpKSwkPUUubm93KCksRShDKSh7dHlwZTpcInRhYmxlQ2VsbFwiLGNoaWxkcmVuOmIudG9rZW5pemVJbmxpbmUoQSwkKX0sQikpLEUodytPKSx3PVwiXCIsQT1cIlwiKToodyYmKEErPXcsdz1cIlwiKSxBKz1PLE89PT1pJiZ2IT09cS0yJiYoQSs9Ui5jaGFyQXQodisxKSx2KyspKSxqPSExLHYrK31VfHxFKG8raCl9cmV0dXJuIHp9fX19fSksbUQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9wYXJhZ3JhcGguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1HZSgpLHQ9TWkoKSxvPWh1KCk7ci5leHBvcnRzPUQ7dmFyIG49XCJcdFwiLHM9YFxuYCxjPVwiIFwiLGk9NDtmdW5jdGlvbiBEKGEsbCxwKXtmb3IodmFyIGQ9dGhpcyxnPWQub3B0aW9ucyxGPWcuY29tbW9ubWFyayxFPWQuYmxvY2tUb2tlbml6ZXJzLHg9ZC5pbnRlcnJ1cHRQYXJhZ3JhcGgsZj1sLmluZGV4T2YocyksYj1sLmxlbmd0aCx2LGgsbSxDLEI7ZjxiOyl7aWYoZj09PS0xKXtmPWI7YnJlYWt9aWYobC5jaGFyQXQoZisxKT09PXMpYnJlYWs7aWYoRil7Zm9yKEM9MCx2PWYrMTt2PGI7KXtpZihtPWwuY2hhckF0KHYpLG09PT1uKXtDPWk7YnJlYWt9ZWxzZSBpZihtPT09YylDKys7ZWxzZSBicmVhazt2Kyt9aWYoQz49aSYmbSE9PXMpe2Y9bC5pbmRleE9mKHMsZisxKTtjb250aW51ZX19aWYoaD1sLnNsaWNlKGYrMSksbyh4LEUsZCxbYSxoLCEwXSkpYnJlYWs7aWYodj1mLGY9bC5pbmRleE9mKHMsZisxKSxmIT09LTEmJnUobC5zbGljZSh2LGYpKT09PVwiXCIpe2Y9djticmVha319cmV0dXJuIGg9bC5zbGljZSgwLGYpLHA/ITA6KEI9YS5ub3coKSxoPXQoaCksYShoKSh7dHlwZTpcInBhcmFncmFwaFwiLGNoaWxkcmVuOmQudG9rZW5pemVJbmxpbmUoaCxCKX0pKX19fSksRUQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvZXNjYXBlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXU7ZnVuY3Rpb24gdSh0LG8pe3JldHVybiB0LmluZGV4T2YoXCJcXFxcXCIsbyl9fX0pLENEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvZXNjYXBlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9RUQoKTtyLmV4cG9ydHM9bixuLmxvY2F0b3I9dTt2YXIgdD1gXG5gLG89XCJcXFxcXCI7ZnVuY3Rpb24gbihzLGMsaSl7dmFyIEQ9dGhpcyxhLGw7aWYoYy5jaGFyQXQoMCk9PT1vJiYoYT1jLmNoYXJBdCgxKSxELmVzY2FwZS5pbmRleE9mKGEpIT09LTEpKXJldHVybiBpPyEwOihhPT09dD9sPXt0eXBlOlwiYnJlYWtcIn06bD17dHlwZTpcInRleHRcIix2YWx1ZTphfSxzKG8rYSkobCkpfX19KSxWaT1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS90YWcuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQsbyl7cmV0dXJuIHQuaW5kZXhPZihcIjxcIixvKX19fSksZ0Q9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9hdXRvLWxpbmsuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT14ZSgpLHQ9eHIoKSxvPVZpKCk7ci5leHBvcnRzPWwsbC5sb2NhdG9yPW8sbC5ub3RJbkxpbms9ITA7dmFyIG49XCI8XCIscz1cIj5cIixjPVwiQFwiLGk9XCIvXCIsRD1cIm1haWx0bzpcIixhPUQubGVuZ3RoO2Z1bmN0aW9uIGwocCxkLGcpe3ZhciBGPXRoaXMsRT1cIlwiLHg9ZC5sZW5ndGgsZj0wLGI9XCJcIix2PSExLGg9XCJcIixtLEMsQixxLEw7aWYoZC5jaGFyQXQoMCk9PT1uKXtmb3IoZisrLEU9bjtmPHgmJihtPWQuY2hhckF0KGYpLCEodShtKXx8bT09PXN8fG09PT1jfHxtPT09XCI6XCImJmQuY2hhckF0KGYrMSk9PT1pKSk7KWIrPW0sZisrO2lmKCEhYil7aWYoaCs9YixiPVwiXCIsbT1kLmNoYXJBdChmKSxoKz1tLGYrKyxtPT09Yyl2PSEwO2Vsc2V7aWYobSE9PVwiOlwifHxkLmNoYXJBdChmKzEpIT09aSlyZXR1cm47aCs9aSxmKyt9Zm9yKDtmPHgmJihtPWQuY2hhckF0KGYpLCEodShtKXx8bT09PXMpKTspYis9bSxmKys7aWYobT1kLmNoYXJBdChmKSwhKCFifHxtIT09cykpcmV0dXJuIGc/ITA6KGgrPWIsQj1oLEUrPWgrbSxDPXAubm93KCksQy5jb2x1bW4rKyxDLm9mZnNldCsrLHYmJihoLnNsaWNlKDAsYSkudG9Mb3dlckNhc2UoKT09PUQ/KEI9Qi5zbGljZShhKSxDLmNvbHVtbis9YSxDLm9mZnNldCs9YSk6aD1EK2gpLHE9Ri5pbmxpbmVUb2tlbml6ZXJzLEYuaW5saW5lVG9rZW5pemVycz17dGV4dDpxLnRleHR9LEw9Ri5lbnRlckxpbmsoKSxCPUYudG9rZW5pemVJbmxpbmUoQixDKSxGLmlubGluZVRva2VuaXplcnM9cSxMKCkscChFKSh7dHlwZTpcImxpbmtcIix0aXRsZTpudWxsLHVybDp0KGgse25vblRlcm1pbmF0ZWQ6ITF9KSxjaGlsZHJlbjpCfSkpfX19fX0pLEZEPVMoe1wibm9kZV9tb2R1bGVzL2Njb3VudC9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz11O2Z1bmN0aW9uIHUodCxvKXt2YXIgbj1TdHJpbmcodCkscz0wLGM7aWYodHlwZW9mIG8hPVwic3RyaW5nXCIpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgY2hhcmFjdGVyXCIpO2ZvcihjPW4uaW5kZXhPZihvKTtjIT09LTE7KXMrKyxjPW4uaW5kZXhPZihvLGMrby5sZW5ndGgpO3JldHVybiBzfX19KSxBRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS91cmwuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dDt2YXIgdT1bXCJ3d3cuXCIsXCJodHRwOi8vXCIsXCJodHRwczovL1wiXTtmdW5jdGlvbiB0KG8sbil7dmFyIHM9LTEsYyxpLEQ7aWYoIXRoaXMub3B0aW9ucy5nZm0pcmV0dXJuIHM7Zm9yKGk9dS5sZW5ndGgsYz0tMTsrK2M8aTspRD1vLmluZGV4T2YodVtjXSxuKSxEIT09LTEmJihzPT09LTF8fEQ8cykmJihzPUQpO3JldHVybiBzfX19KSx4RD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3VybC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PUZEKCksdD14cigpLG89emUoKSxuPVFlKCkscz14ZSgpLGM9QUQoKTtyLmV4cG9ydHM9QyxDLmxvY2F0b3I9YyxDLm5vdEluTGluaz0hMDt2YXIgaT0zMyxEPTM4LGE9NDEsbD00MixwPTQ0LGQ9NDUsZz00NixGPTU4LEU9NTkseD02MyxmPTYwLGI9OTUsdj0xMjYsaD1cIihcIixtPVwiKVwiO2Z1bmN0aW9uIEMoQixxLEwpe3ZhciB3PXRoaXMsTz13Lm9wdGlvbnMuZ2ZtLFQ9dy5pbmxpbmVUb2tlbml6ZXJzLFA9cS5sZW5ndGgsQT0tMSxqPSExLCQsVSxYLFIsSix6LE0sRyxrLHksXyxOLFYsVztpZighIU8pe2lmKHEuc2xpY2UoMCw0KT09PVwid3d3LlwiKWo9ITAsUj00O2Vsc2UgaWYocS5zbGljZSgwLDcpLnRvTG93ZXJDYXNlKCk9PT1cImh0dHA6Ly9cIilSPTc7ZWxzZSBpZihxLnNsaWNlKDAsOCkudG9Mb3dlckNhc2UoKT09PVwiaHR0cHM6Ly9cIilSPTg7ZWxzZSByZXR1cm47Zm9yKEE9Ui0xLFg9UiwkPVtdO1I8UDspe2lmKE09cS5jaGFyQ29kZUF0KFIpLE09PT1nKXtpZihBPT09Ui0xKWJyZWFrOyQucHVzaChSKSxBPVIsUisrO2NvbnRpbnVlfWlmKG8oTSl8fG4oTSl8fE09PT1kfHxNPT09Yil7UisrO2NvbnRpbnVlfWJyZWFrfWlmKE09PT1nJiYoJC5wb3AoKSxSLS0pLCRbMF0hPT12b2lkIDAmJihVPSQubGVuZ3RoPDI/WDokWyQubGVuZ3RoLTJdKzEscS5zbGljZShVLFIpLmluZGV4T2YoXCJfXCIpPT09LTEpKXtpZihMKXJldHVybiEwO2ZvcihHPVIsSj1SO1I8UCYmKE09cS5jaGFyQ29kZUF0KFIpLCEocyhNKXx8TT09PWYpKTspUisrLE09PT1pfHxNPT09bHx8TT09PXB8fE09PT1nfHxNPT09Rnx8TT09PXh8fE09PT1ifHxNPT09dnx8KEc9Uik7aWYoUj1HLHEuY2hhckNvZGVBdChSLTEpPT09YSlmb3Ioej1xLnNsaWNlKEosUiksaz11KHosaCkseT11KHosbSk7eT5rOylSPUorei5sYXN0SW5kZXhPZihtKSx6PXEuc2xpY2UoSixSKSx5LS07aWYocS5jaGFyQ29kZUF0KFItMSk9PT1FJiYoUi0tLG4ocS5jaGFyQ29kZUF0KFItMSkpKSl7Zm9yKEc9Ui0yO24ocS5jaGFyQ29kZUF0KEcpKTspRy0tO3EuY2hhckNvZGVBdChHKT09PUQmJihSPUcpfXJldHVybiBfPXEuc2xpY2UoMCxSKSxWPXQoXyx7bm9uVGVybWluYXRlZDohMX0pLGomJihWPVwiaHR0cDovL1wiK1YpLFc9dy5lbnRlckxpbmsoKSx3LmlubGluZVRva2VuaXplcnM9e3RleHQ6VC50ZXh0fSxOPXcudG9rZW5pemVJbmxpbmUoXyxCLm5vdygpKSx3LmlubGluZVRva2VuaXplcnM9VCxXKCksQihfKSh7dHlwZTpcImxpbmtcIix0aXRsZTpudWxsLHVybDpWLGNoaWxkcmVuOk59KX19fX19KSxiRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS9lbWFpbC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PXplKCksdD1RZSgpLG89NDMsbj00NSxzPTQ2LGM9OTU7ci5leHBvcnRzPWk7ZnVuY3Rpb24gaShhLGwpe3ZhciBwPXRoaXMsZCxnO2lmKCF0aGlzLm9wdGlvbnMuZ2ZtfHwoZD1hLmluZGV4T2YoXCJAXCIsbCksZD09PS0xKSlyZXR1cm4tMTtpZihnPWQsZz09PWx8fCFEKGEuY2hhckNvZGVBdChnLTEpKSlyZXR1cm4gaS5jYWxsKHAsYSxkKzEpO2Zvcig7Zz5sJiZEKGEuY2hhckNvZGVBdChnLTEpKTspZy0tO3JldHVybiBnfWZ1bmN0aW9uIEQoYSl7cmV0dXJuIHUoYSl8fHQoYSl8fGE9PT1vfHxhPT09bnx8YT09PXN8fGE9PT1jfX19KSx5RD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2VtYWlsLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9eHIoKSx0PXplKCksbz1RZSgpLG49YkQoKTtyLmV4cG9ydHM9bCxsLmxvY2F0b3I9bixsLm5vdEluTGluaz0hMDt2YXIgcz00MyxjPTQ1LGk9NDYsRD02NCxhPTk1O2Z1bmN0aW9uIGwocCxkLGcpe3ZhciBGPXRoaXMsRT1GLm9wdGlvbnMuZ2ZtLHg9Ri5pbmxpbmVUb2tlbml6ZXJzLGY9MCxiPWQubGVuZ3RoLHY9LTEsaCxtLEMsQjtpZighIUUpe2ZvcihoPWQuY2hhckNvZGVBdChmKTt0KGgpfHxvKGgpfHxoPT09c3x8aD09PWN8fGg9PT1pfHxoPT09YTspaD1kLmNoYXJDb2RlQXQoKytmKTtpZihmIT09MCYmaD09PUQpe2ZvcihmKys7ZjxiOyl7aWYoaD1kLmNoYXJDb2RlQXQoZiksdChoKXx8byhoKXx8aD09PWN8fGg9PT1pfHxoPT09YSl7ZisrLHY9PT0tMSYmaD09PWkmJih2PWYpO2NvbnRpbnVlfWJyZWFrfWlmKCEodj09PS0xfHx2PT09Znx8aD09PWN8fGg9PT1hKSlyZXR1cm4gaD09PWkmJmYtLSxtPWQuc2xpY2UoMCxmKSxnPyEwOihCPUYuZW50ZXJMaW5rKCksRi5pbmxpbmVUb2tlbml6ZXJzPXt0ZXh0OngudGV4dH0sQz1GLnRva2VuaXplSW5saW5lKG0scC5ub3coKSksRi5pbmxpbmVUb2tlbml6ZXJzPXgsQigpLHAobSkoe3R5cGU6XCJsaW5rXCIsdGl0bGU6bnVsbCx1cmw6XCJtYWlsdG86XCIrdShtLHtub25UZXJtaW5hdGVkOiExfSksY2hpbGRyZW46Q30pKX19fX19KSxCRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2h0bWwtaW5saW5lLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9UWUoKSx0PVZpKCksbz1HaSgpLnRhZztyLmV4cG9ydHM9bCxsLmxvY2F0b3I9dDt2YXIgbj1cIjxcIixzPVwiP1wiLGM9XCIhXCIsaT1cIi9cIixEPS9ePGEgL2ksYT0vXjxcXC9hPi9pO2Z1bmN0aW9uIGwocCxkLGcpe3ZhciBGPXRoaXMsRT1kLmxlbmd0aCx4LGY7aWYoIShkLmNoYXJBdCgwKSE9PW58fEU8MykmJih4PWQuY2hhckF0KDEpLCEoIXUoeCkmJnghPT1zJiZ4IT09YyYmeCE9PWkpJiYoZj1kLm1hdGNoKG8pLCEhZikpKXJldHVybiBnPyEwOihmPWZbMF0sIUYuaW5MaW5rJiZELnRlc3QoZik/Ri5pbkxpbms9ITA6Ri5pbkxpbmsmJmEudGVzdChmKSYmKEYuaW5MaW5rPSExKSxwKGYpKHt0eXBlOlwiaHRtbFwiLHZhbHVlOmZ9KSl9fX0pLCRpPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2xpbmsuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQsbyl7dmFyIG49dC5pbmRleE9mKFwiW1wiLG8pLHM9dC5pbmRleE9mKFwiIVtcIixvKTtyZXR1cm4gcz09PS0xfHxuPHM/bjpzfX19KSx3RD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2xpbmsuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT14ZSgpLHQ9JGkoKTtyLmV4cG9ydHM9RSxFLmxvY2F0b3I9dDt2YXIgbz1gXG5gLG49XCIhXCIscz0nXCInLGM9XCInXCIsaT1cIihcIixEPVwiKVwiLGE9XCI8XCIsbD1cIj5cIixwPVwiW1wiLGQ9XCJcXFxcXCIsZz1cIl1cIixGPVwiYFwiO2Z1bmN0aW9uIEUoeCxmLGIpe3ZhciB2PXRoaXMsaD1cIlwiLG09MCxDPWYuY2hhckF0KDApLEI9di5vcHRpb25zLnBlZGFudGljLHE9di5vcHRpb25zLmNvbW1vbm1hcmssTD12Lm9wdGlvbnMuZ2ZtLHcsTyxULFAsQSxqLCQsVSxYLFIsSix6LE0sRyxrLHksXyxOO2lmKEM9PT1uJiYoVT0hMCxoPUMsQz1mLmNoYXJBdCgrK20pKSxDPT09cCYmISghVSYmdi5pbkxpbmspKXtmb3IoaCs9QyxHPVwiXCIsbSsrLEo9Zi5sZW5ndGgseT14Lm5vdygpLE09MCx5LmNvbHVtbis9bSx5Lm9mZnNldCs9bTttPEo7KXtpZihDPWYuY2hhckF0KG0pLGo9QyxDPT09Ril7Zm9yKE89MTtmLmNoYXJBdChtKzEpPT09Rjspais9QyxtKyssTysrO1Q/Tz49VCYmKFQ9MCk6VD1PfWVsc2UgaWYoQz09PWQpbSsrLGorPWYuY2hhckF0KG0pO2Vsc2UgaWYoKCFUfHxMKSYmQz09PXApTSsrO2Vsc2UgaWYoKCFUfHxMKSYmQz09PWcpaWYoTSlNLS07ZWxzZXtpZihmLmNoYXJBdChtKzEpIT09aSlyZXR1cm47ais9aSx3PSEwLG0rKzticmVha31HKz1qLGo9XCJcIixtKyt9aWYoISF3KXtmb3IoWD1HLGgrPUcraixtKys7bTxKJiYoQz1mLmNoYXJBdChtKSwhIXUoQykpOyloKz1DLG0rKztpZihDPWYuY2hhckF0KG0pLEc9XCJcIixQPWgsQz09PWEpe2ZvcihtKyssUCs9YTttPEomJihDPWYuY2hhckF0KG0pLEMhPT1sKTspe2lmKHEmJkM9PT1vKXJldHVybjtHKz1DLG0rK31pZihmLmNoYXJBdChtKSE9PWwpcmV0dXJuO2grPWErRytsLGs9RyxtKyt9ZWxzZXtmb3IoQz1udWxsLGo9XCJcIjttPEomJihDPWYuY2hhckF0KG0pLCEoaiYmKEM9PT1zfHxDPT09Y3x8cSYmQz09PWkpKSk7KXtpZih1KEMpKXtpZighQilicmVhaztqKz1DfWVsc2V7aWYoQz09PWkpTSsrO2Vsc2UgaWYoQz09PUQpe2lmKE09PT0wKWJyZWFrO00tLX1HKz1qLGo9XCJcIixDPT09ZCYmKEcrPWQsQz1mLmNoYXJBdCgrK20pKSxHKz1DfW0rK31oKz1HLGs9RyxtPWgubGVuZ3RofWZvcihHPVwiXCI7bTxKJiYoQz1mLmNoYXJBdChtKSwhIXUoQykpOylHKz1DLG0rKztpZihDPWYuY2hhckF0KG0pLGgrPUcsRyYmKEM9PT1zfHxDPT09Y3x8cSYmQz09PWkpKWlmKG0rKyxoKz1DLEc9XCJcIixSPUM9PT1pP0Q6QyxBPWgscSl7Zm9yKDttPEomJihDPWYuY2hhckF0KG0pLEMhPT1SKTspQz09PWQmJihHKz1kLEM9Zi5jaGFyQXQoKyttKSksbSsrLEcrPUM7aWYoQz1mLmNoYXJBdChtKSxDIT09UilyZXR1cm47Zm9yKHo9RyxoKz1HK0MsbSsrO208SiYmKEM9Zi5jaGFyQXQobSksISF1KEMpKTspaCs9QyxtKyt9ZWxzZSBmb3Ioaj1cIlwiO208Sjspe2lmKEM9Zi5jaGFyQXQobSksQz09PVIpJCYmKEcrPVIraixqPVwiXCIpLCQ9ITA7ZWxzZSBpZighJClHKz1DO2Vsc2UgaWYoQz09PUQpe2grPUcrUitqLHo9RzticmVha31lbHNlIHUoQyk/ais9QzooRys9UitqK0Msaj1cIlwiLCQ9ITEpO20rK31pZihmLmNoYXJBdChtKT09PUQpcmV0dXJuIGI/ITA6KGgrPUQsaz12LmRlY29kZS5yYXcodi51bmVzY2FwZShrKSx4KFApLnRlc3QoKS5lbmQse25vblRlcm1pbmF0ZWQ6ITF9KSx6JiYoQT14KEEpLnRlc3QoKS5lbmQsej12LmRlY29kZS5yYXcodi51bmVzY2FwZSh6KSxBKSksTj17dHlwZTpVP1wiaW1hZ2VcIjpcImxpbmtcIix0aXRsZTp6fHxudWxsLHVybDprfSxVP04uYWx0PXYuZGVjb2RlLnJhdyh2LnVuZXNjYXBlKFgpLHkpfHxudWxsOihfPXYuZW50ZXJMaW5rKCksTi5jaGlsZHJlbj12LnRva2VuaXplSW5saW5lKFgseSksXygpKSx4KGgpKE4pKX19fX19KSxrRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3JlZmVyZW5jZS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PXhlKCksdD0kaSgpLG89VWkoKTtyLmV4cG9ydHM9ZyxnLmxvY2F0b3I9dDt2YXIgbj1cImxpbmtcIixzPVwiaW1hZ2VcIixjPVwic2hvcnRjdXRcIixpPVwiY29sbGFwc2VkXCIsRD1cImZ1bGxcIixhPVwiIVwiLGw9XCJbXCIscD1cIlxcXFxcIixkPVwiXVwiO2Z1bmN0aW9uIGcoRixFLHgpe3ZhciBmPXRoaXMsYj1mLm9wdGlvbnMuY29tbW9ubWFyayx2PUUuY2hhckF0KDApLGg9MCxtPUUubGVuZ3RoLEM9XCJcIixCPVwiXCIscT1uLEw9Yyx3LE8sVCxQLEEsaiwkLFU7aWYodj09PWEmJihxPXMsQj12LHY9RS5jaGFyQXQoKytoKSksdj09PWwpe2ZvcihoKyssQis9dixqPVwiXCIsVT0wO2g8bTspe2lmKHY9RS5jaGFyQXQoaCksdj09PWwpJD0hMCxVKys7ZWxzZSBpZih2PT09ZCl7aWYoIVUpYnJlYWs7VS0tfXY9PT1wJiYoais9cCx2PUUuY2hhckF0KCsraCkpLGorPXYsaCsrfWlmKEM9aix3PWosdj1FLmNoYXJBdChoKSx2PT09ZCl7aWYoaCsrLEMrPXYsaj1cIlwiLCFiKWZvcig7aDxtJiYodj1FLmNoYXJBdChoKSwhIXUodikpOylqKz12LGgrKztpZih2PUUuY2hhckF0KGgpLHY9PT1sKXtmb3IoTz1cIlwiLGorPXYsaCsrO2g8bSYmKHY9RS5jaGFyQXQoaCksISh2PT09bHx8dj09PWQpKTspdj09PXAmJihPKz1wLHY9RS5jaGFyQXQoKytoKSksTys9dixoKys7dj1FLmNoYXJBdChoKSx2PT09ZD8oTD1PP0Q6aSxqKz1PK3YsaCsrKTpPPVwiXCIsQys9aixqPVwiXCJ9ZWxzZXtpZighdylyZXR1cm47Tz13fWlmKCEoTCE9PUQmJiQpKXJldHVybiBDPUIrQyxxPT09biYmZi5pbkxpbms/bnVsbDp4PyEwOihUPUYubm93KCksVC5jb2x1bW4rPUIubGVuZ3RoLFQub2Zmc2V0Kz1CLmxlbmd0aCxPPUw9PT1EP086dyxQPXt0eXBlOnErXCJSZWZlcmVuY2VcIixpZGVudGlmaWVyOm8oTyksbGFiZWw6TyxyZWZlcmVuY2VUeXBlOkx9LHE9PT1uPyhBPWYuZW50ZXJMaW5rKCksUC5jaGlsZHJlbj1mLnRva2VuaXplSW5saW5lKHcsVCksQSgpKTpQLmFsdD1mLmRlY29kZS5yYXcoZi51bmVzY2FwZSh3KSxUKXx8bnVsbCxGKEMpKFApKX19fX19KSxxRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS9zdHJvbmcuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQsbyl7dmFyIG49dC5pbmRleE9mKFwiKipcIixvKSxzPXQuaW5kZXhPZihcIl9fXCIsbyk7cmV0dXJuIHM9PT0tMT9uOm49PT0tMXx8czxuP3M6bn19fSksX0Q9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9zdHJvbmcuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1HZSgpLHQ9eGUoKSxvPXFEKCk7ci5leHBvcnRzPWksaS5sb2NhdG9yPW87dmFyIG49XCJcXFxcXCIscz1cIipcIixjPVwiX1wiO2Z1bmN0aW9uIGkoRCxhLGwpe3ZhciBwPXRoaXMsZD0wLGc9YS5jaGFyQXQoZCksRixFLHgsZixiLHYsaDtpZighKGchPT1zJiZnIT09Y3x8YS5jaGFyQXQoKytkKSE9PWcpJiYoRT1wLm9wdGlvbnMucGVkYW50aWMseD1nLGI9eCt4LHY9YS5sZW5ndGgsZCsrLGY9XCJcIixnPVwiXCIsIShFJiZ0KGEuY2hhckF0KGQpKSkpKWZvcig7ZDx2Oyl7aWYoaD1nLGc9YS5jaGFyQXQoZCksZz09PXgmJmEuY2hhckF0KGQrMSk9PT14JiYoIUV8fCF0KGgpKSYmKGc9YS5jaGFyQXQoZCsyKSxnIT09eCkpcmV0dXJuIHUoZik/bD8hMDooRj1ELm5vdygpLEYuY29sdW1uKz0yLEYub2Zmc2V0Kz0yLEQoYitmK2IpKHt0eXBlOlwic3Ryb25nXCIsY2hpbGRyZW46cC50b2tlbml6ZUlubGluZShmLEYpfSkpOnZvaWQgMDshRSYmZz09PW4mJihmKz1nLGc9YS5jaGFyQXQoKytkKSksZis9ZyxkKyt9fX19KSxPRD1TKHtcIm5vZGVfbW9kdWxlcy9pcy13b3JkLWNoYXJhY3Rlci9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz1vO3ZhciB1PVN0cmluZy5mcm9tQ2hhckNvZGUsdD0vXFx3LztmdW5jdGlvbiBvKG4pe3JldHVybiB0LnRlc3QodHlwZW9mIG49PVwibnVtYmVyXCI/dShuKTpuLmNoYXJBdCgwKSl9fX0pLElEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VtcGhhc2lzLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPXU7ZnVuY3Rpb24gdSh0LG8pe3ZhciBuPXQuaW5kZXhPZihcIipcIixvKSxzPXQuaW5kZXhPZihcIl9cIixvKTtyZXR1cm4gcz09PS0xP246bj09PS0xfHxzPG4/czpufX19KSxTRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2VtcGhhc2lzLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9R2UoKSx0PU9EKCksbz14ZSgpLG49SUQoKTtyLmV4cG9ydHM9RCxELmxvY2F0b3I9bjt2YXIgcz1cIipcIixjPVwiX1wiLGk9XCJcXFxcXCI7ZnVuY3Rpb24gRChhLGwscCl7dmFyIGQ9dGhpcyxnPTAsRj1sLmNoYXJBdChnKSxFLHgsZixiLHYsaCxtO2lmKCEoRiE9PXMmJkYhPT1jKSYmKHg9ZC5vcHRpb25zLnBlZGFudGljLHY9RixmPUYsaD1sLmxlbmd0aCxnKyssYj1cIlwiLEY9XCJcIiwhKHgmJm8obC5jaGFyQXQoZykpKSkpZm9yKDtnPGg7KXtpZihtPUYsRj1sLmNoYXJBdChnKSxGPT09ZiYmKCF4fHwhbyhtKSkpe2lmKEY9bC5jaGFyQXQoKytnKSxGIT09Zil7aWYoIXUoYil8fG09PT1mKXJldHVybjtpZigheCYmZj09PWMmJnQoRikpe2IrPWY7Y29udGludWV9cmV0dXJuIHA/ITA6KEU9YS5ub3coKSxFLmNvbHVtbisrLEUub2Zmc2V0KyssYSh2K2IrZikoe3R5cGU6XCJlbXBoYXNpc1wiLGNoaWxkcmVuOmQudG9rZW5pemVJbmxpbmUoYixFKX0pKX1iKz1mfSF4JiZGPT09aSYmKGIrPUYsRj1sLmNoYXJBdCgrK2cpKSxiKz1GLGcrK319fX0pLFREPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2RlbGV0ZS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz11O2Z1bmN0aW9uIHUodCxvKXtyZXR1cm4gdC5pbmRleE9mKFwifn5cIixvKX19fSksTkQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9kZWxldGUuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT14ZSgpLHQ9VEQoKTtyLmV4cG9ydHM9cyxzLmxvY2F0b3I9dDt2YXIgbz1cIn5cIixuPVwifn5cIjtmdW5jdGlvbiBzKGMsaSxEKXt2YXIgYT10aGlzLGw9XCJcIixwPVwiXCIsZD1cIlwiLGc9XCJcIixGLEUseDtpZighKCFhLm9wdGlvbnMuZ2ZtfHxpLmNoYXJBdCgwKSE9PW98fGkuY2hhckF0KDEpIT09b3x8dShpLmNoYXJBdCgyKSkpKWZvcihGPTEsRT1pLmxlbmd0aCx4PWMubm93KCkseC5jb2x1bW4rPTIseC5vZmZzZXQrPTI7KytGPEU7KXtpZihsPWkuY2hhckF0KEYpLGw9PT1vJiZwPT09byYmKCFkfHwhdShkKSkpcmV0dXJuIEQ/ITA6YyhuK2crbikoe3R5cGU6XCJkZWxldGVcIixjaGlsZHJlbjphLnRva2VuaXplSW5saW5lKGcseCl9KTtnKz1wLGQ9cCxwPWx9fX19KSxMRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS9jb2RlLWlubGluZS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz11O2Z1bmN0aW9uIHUodCxvKXtyZXR1cm4gdC5pbmRleE9mKFwiYFwiLG8pfX19KSxSRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2NvZGUtaW5saW5lLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9TEQoKTtyLmV4cG9ydHM9cyxzLmxvY2F0b3I9dTt2YXIgdD0xMCxvPTMyLG49OTY7ZnVuY3Rpb24gcyhjLGksRCl7Zm9yKHZhciBhPWkubGVuZ3RoLGw9MCxwLGQsZyxGLEUseDtsPGEmJmkuY2hhckNvZGVBdChsKT09PW47KWwrKztpZighKGw9PT0wfHxsPT09YSkpe2ZvcihwPWwsRT1pLmNoYXJDb2RlQXQobCk7bDxhOyl7aWYoRj1FLEU9aS5jaGFyQ29kZUF0KGwrMSksRj09PW4pe2lmKGQ9PT12b2lkIDAmJihkPWwpLGc9bCsxLEUhPT1uJiZnLWQ9PT1wKXt4PSEwO2JyZWFrfX1lbHNlIGQhPT12b2lkIDAmJihkPXZvaWQgMCxnPXZvaWQgMCk7bCsrfWlmKCEheCl7aWYoRClyZXR1cm4hMDtpZihsPXAsYT1kLEY9aS5jaGFyQ29kZUF0KGwpLEU9aS5jaGFyQ29kZUF0KGEtMSkseD0hMSxhLWw+MiYmKEY9PT1vfHxGPT09dCkmJihFPT09b3x8RT09PXQpKXtmb3IobCsrLGEtLTtsPGE7KXtpZihGPWkuY2hhckNvZGVBdChsKSxGIT09byYmRiE9PXQpe3g9ITA7YnJlYWt9bCsrfXg9PT0hMCYmKHArKyxkLS0pfXJldHVybiBjKGkuc2xpY2UoMCxnKSkoe3R5cGU6XCJpbmxpbmVDb2RlXCIsdmFsdWU6aS5zbGljZShwLGQpfSl9fX19fSksakQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvYnJlYWsuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQsbyl7Zm9yKHZhciBuPXQuaW5kZXhPZihgXG5gLG8pO24+byYmdC5jaGFyQXQobi0xKT09PVwiIFwiOyluLS07cmV0dXJuIG59fX0pLFBEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvYnJlYWsuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1qRCgpO3IuZXhwb3J0cz1zLHMubG9jYXRvcj11O3ZhciB0PVwiIFwiLG89YFxuYCxuPTI7ZnVuY3Rpb24gcyhjLGksRCl7Zm9yKHZhciBhPWkubGVuZ3RoLGw9LTEscD1cIlwiLGQ7KytsPGE7KXtpZihkPWkuY2hhckF0KGwpLGQ9PT1vKXJldHVybiBsPG4/dm9pZCAwOkQ/ITA6KHArPWQsYyhwKSh7dHlwZTpcImJyZWFrXCJ9KSk7aWYoZCE9PXQpcmV0dXJuO3ArPWR9fX19KSxNRD1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3RleHQuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKSxyLmV4cG9ydHM9dTtmdW5jdGlvbiB1KHQsbyxuKXt2YXIgcz10aGlzLGMsaSxELGEsbCxwLGQsZyxGLEU7aWYobilyZXR1cm4hMDtmb3IoYz1zLmlubGluZU1ldGhvZHMsYT1jLmxlbmd0aCxpPXMuaW5saW5lVG9rZW5pemVycyxEPS0xLEY9by5sZW5ndGg7KytEPGE7KWc9Y1tEXSwhKGc9PT1cInRleHRcInx8IWlbZ10pJiYoZD1pW2ddLmxvY2F0b3IsZHx8dC5maWxlLmZhaWwoXCJNaXNzaW5nIGxvY2F0b3I6IGBcIitnK1wiYFwiKSxwPWQuY2FsbChzLG8sMSkscCE9PS0xJiZwPEYmJihGPXApKTtsPW8uc2xpY2UoMCxGKSxFPXQubm93KCkscy5kZWNvZGUobCxFLHgpO2Z1bmN0aW9uIHgoZixiLHYpe3Qodnx8Zikoe3R5cGU6XCJ0ZXh0XCIsdmFsdWU6Zn0pfX19fSksekQ9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9wYXJzZXIuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1NZSgpLHQ9amwoKSxvPVBsKCksbj1NbCgpLHM9WGwoKSxjPVdsKCk7ci5leHBvcnRzPWk7ZnVuY3Rpb24gaShsLHApe3RoaXMuZmlsZT1wLHRoaXMub2Zmc2V0PXt9LHRoaXMub3B0aW9ucz11KHRoaXMub3B0aW9ucyksdGhpcy5zZXRPcHRpb25zKHt9KSx0aGlzLmluTGlzdD0hMSx0aGlzLmluQmxvY2s9ITEsdGhpcy5pbkxpbms9ITEsdGhpcy5hdFN0YXJ0PSEwLHRoaXMudG9PZmZzZXQ9byhwKS50b09mZnNldCx0aGlzLnVuZXNjYXBlPW4odGhpcyxcImVzY2FwZVwiKSx0aGlzLmRlY29kZT1zKHRoaXMpfXZhciBEPWkucHJvdG90eXBlO0Quc2V0T3B0aW9ucz1KbCgpLEQucGFyc2U9dEQoKSxELm9wdGlvbnM9UGkoKSxELmV4aXRTdGFydD10KFwiYXRTdGFydFwiLCEwKSxELmVudGVyTGlzdD10KFwiaW5MaXN0XCIsITEpLEQuZW50ZXJMaW5rPXQoXCJpbkxpbmtcIiwhMSksRC5lbnRlckJsb2NrPXQoXCJpbkJsb2NrXCIsITEpLEQuaW50ZXJydXB0UGFyYWdyYXBoPVtbXCJ0aGVtYXRpY0JyZWFrXCJdLFtcImxpc3RcIl0sW1wiYXR4SGVhZGluZ1wiXSxbXCJmZW5jZWRDb2RlXCJdLFtcImJsb2NrcXVvdGVcIl0sW1wiaHRtbFwiXSxbXCJzZXRleHRIZWFkaW5nXCIse2NvbW1vbm1hcms6ITF9XSxbXCJkZWZpbml0aW9uXCIse2NvbW1vbm1hcms6ITF9XV0sRC5pbnRlcnJ1cHRMaXN0PVtbXCJhdHhIZWFkaW5nXCIse3BlZGFudGljOiExfV0sW1wiZmVuY2VkQ29kZVwiLHtwZWRhbnRpYzohMX1dLFtcInRoZW1hdGljQnJlYWtcIix7cGVkYW50aWM6ITF9XSxbXCJkZWZpbml0aW9uXCIse2NvbW1vbm1hcms6ITF9XV0sRC5pbnRlcnJ1cHRCbG9ja3F1b3RlPVtbXCJpbmRlbnRlZENvZGVcIix7Y29tbW9ubWFyazohMH1dLFtcImZlbmNlZENvZGVcIix7Y29tbW9ubWFyazohMH1dLFtcImF0eEhlYWRpbmdcIix7Y29tbW9ubWFyazohMH1dLFtcInNldGV4dEhlYWRpbmdcIix7Y29tbW9ubWFyazohMH1dLFtcInRoZW1hdGljQnJlYWtcIix7Y29tbW9ubWFyazohMH1dLFtcImh0bWxcIix7Y29tbW9ubWFyazohMH1dLFtcImxpc3RcIix7Y29tbW9ubWFyazohMH1dLFtcImRlZmluaXRpb25cIix7Y29tbW9ubWFyazohMX1dXSxELmJsb2NrVG9rZW5pemVycz17YmxhbmtMaW5lOm5EKCksaW5kZW50ZWRDb2RlOmlEKCksZmVuY2VkQ29kZTphRCgpLGJsb2NrcXVvdGU6b0QoKSxhdHhIZWFkaW5nOnNEKCksdGhlbWF0aWNCcmVhazpjRCgpLGxpc3Q6REQoKSxzZXRleHRIZWFkaW5nOmZEKCksaHRtbDpwRCgpLGRlZmluaXRpb246aEQoKSx0YWJsZTp2RCgpLHBhcmFncmFwaDptRCgpfSxELmlubGluZVRva2VuaXplcnM9e2VzY2FwZTpDRCgpLGF1dG9MaW5rOmdEKCksdXJsOnhEKCksZW1haWw6eUQoKSxodG1sOkJEKCksbGluazp3RCgpLHJlZmVyZW5jZTprRCgpLHN0cm9uZzpfRCgpLGVtcGhhc2lzOlNEKCksZGVsZXRpb246TkQoKSxjb2RlOlJEKCksYnJlYWs6UEQoKSx0ZXh0Ok1EKCl9LEQuYmxvY2tNZXRob2RzPWEoRC5ibG9ja1Rva2VuaXplcnMpLEQuaW5saW5lTWV0aG9kcz1hKEQuaW5saW5lVG9rZW5pemVycyksRC50b2tlbml6ZUJsb2NrPWMoXCJibG9ja1wiKSxELnRva2VuaXplSW5saW5lPWMoXCJpbmxpbmVcIiksRC50b2tlbml6ZUZhY3Rvcnk9YztmdW5jdGlvbiBhKGwpe3ZhciBwPVtdLGQ7Zm9yKGQgaW4gbClwLnB1c2goZCk7cmV0dXJuIHB9fX0pLEdEPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PVJsKCksdD1NZSgpLG89ekQoKTtyLmV4cG9ydHM9bixuLlBhcnNlcj1vO2Z1bmN0aW9uIG4ocyl7dmFyIGM9dGhpcy5kYXRhKFwic2V0dGluZ3NcIiksaT11KG8pO2kucHJvdG90eXBlLm9wdGlvbnM9dChpLnByb3RvdHlwZS5vcHRpb25zLGMscyksdGhpcy5QYXJzZXI9aX19fSksVUQ9Uyh7XCJub2RlX21vZHVsZXMvYmFpbC9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz11O2Z1bmN0aW9uIHUodCl7aWYodCl0aHJvdyB0fX19KSxIaT1TKHtcIm5vZGVfbW9kdWxlcy9pcy1idWZmZXIvaW5kZXguanNcIihlLHIpe0koKSxyLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQhPW51bGwmJnQuY29uc3RydWN0b3IhPW51bGwmJnR5cGVvZiB0LmNvbnN0cnVjdG9yLmlzQnVmZmVyPT1cImZ1bmN0aW9uXCImJnQuY29uc3RydWN0b3IuaXNCdWZmZXIodCl9fX0pLFZEPVMoe1wibm9kZV9tb2R1bGVzL2V4dGVuZC9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLG89T2JqZWN0LmRlZmluZVByb3BlcnR5LG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixzPWZ1bmN0aW9uKGwpe3JldHVybiB0eXBlb2YgQXJyYXkuaXNBcnJheT09XCJmdW5jdGlvblwiP0FycmF5LmlzQXJyYXkobCk6dC5jYWxsKGwpPT09XCJbb2JqZWN0IEFycmF5XVwifSxjPWZ1bmN0aW9uKGwpe2lmKCFsfHx0LmNhbGwobCkhPT1cIltvYmplY3QgT2JqZWN0XVwiKXJldHVybiExO3ZhciBwPXUuY2FsbChsLFwiY29uc3RydWN0b3JcIiksZD1sLmNvbnN0cnVjdG9yJiZsLmNvbnN0cnVjdG9yLnByb3RvdHlwZSYmdS5jYWxsKGwuY29uc3RydWN0b3IucHJvdG90eXBlLFwiaXNQcm90b3R5cGVPZlwiKTtpZihsLmNvbnN0cnVjdG9yJiYhcCYmIWQpcmV0dXJuITE7dmFyIGc7Zm9yKGcgaW4gbCk7cmV0dXJuIHR5cGVvZiBnPlwidVwifHx1LmNhbGwobCxnKX0saT1mdW5jdGlvbihsLHApe28mJnAubmFtZT09PVwiX19wcm90b19fXCI/byhsLHAubmFtZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6cC5uZXdWYWx1ZSx3cml0YWJsZTohMH0pOmxbcC5uYW1lXT1wLm5ld1ZhbHVlfSxEPWZ1bmN0aW9uKGwscCl7aWYocD09PVwiX19wcm90b19fXCIpaWYodS5jYWxsKGwscCkpe2lmKG4pcmV0dXJuIG4obCxwKS52YWx1ZX1lbHNlIHJldHVybjtyZXR1cm4gbFtwXX07ci5leHBvcnRzPWZ1bmN0aW9uIGEoKXt2YXIgbCxwLGQsZyxGLEUseD1hcmd1bWVudHNbMF0sZj0xLGI9YXJndW1lbnRzLmxlbmd0aCx2PSExO2Zvcih0eXBlb2YgeD09XCJib29sZWFuXCImJih2PXgseD1hcmd1bWVudHNbMV18fHt9LGY9MiksKHg9PW51bGx8fHR5cGVvZiB4IT1cIm9iamVjdFwiJiZ0eXBlb2YgeCE9XCJmdW5jdGlvblwiKSYmKHg9e30pO2Y8YjsrK2YpaWYobD1hcmd1bWVudHNbZl0sbCE9bnVsbClmb3IocCBpbiBsKWQ9RCh4LHApLGc9RChsLHApLHghPT1nJiYodiYmZyYmKGMoZyl8fChGPXMoZykpKT8oRj8oRj0hMSxFPWQmJnMoZCk/ZDpbXSk6RT1kJiZjKGQpP2Q6e30saSh4LHtuYW1lOnAsbmV3VmFsdWU6YSh2LEUsZyl9KSk6dHlwZW9mIGc8XCJ1XCImJmkoeCx7bmFtZTpwLG5ld1ZhbHVlOmd9KSk7cmV0dXJuIHh9fX0pLCREPVMoe1wibm9kZV9tb2R1bGVzL2lzLXBsYWluLW9iai9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz11PT57aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHUpIT09XCJbb2JqZWN0IE9iamVjdF1cIilyZXR1cm4hMTtsZXQgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodSk7cmV0dXJuIHQ9PT1udWxsfHx0PT09T2JqZWN0LnByb3RvdHlwZX19fSksSEQ9Uyh7XCJub2RlX21vZHVsZXMvdHJvdWdoL3dyYXAuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1bXS5zbGljZTtyLmV4cG9ydHM9dDtmdW5jdGlvbiB0KG8sbil7dmFyIHM7cmV0dXJuIGM7ZnVuY3Rpb24gYygpe3ZhciBhPXUuY2FsbChhcmd1bWVudHMsMCksbD1vLmxlbmd0aD5hLmxlbmd0aCxwO2wmJmEucHVzaChpKTt0cnl7cD1vLmFwcGx5KG51bGwsYSl9Y2F0Y2goZCl7aWYobCYmcyl0aHJvdyBkO3JldHVybiBpKGQpfWx8fChwJiZ0eXBlb2YgcC50aGVuPT1cImZ1bmN0aW9uXCI/cC50aGVuKEQsaSk6cCBpbnN0YW5jZW9mIEVycm9yP2kocCk6RChwKSl9ZnVuY3Rpb24gaSgpe3N8fChzPSEwLG4uYXBwbHkobnVsbCxhcmd1bWVudHMpKX1mdW5jdGlvbiBEKGEpe2kobnVsbCxhKX19fX0pLFhEPVMoe1wibm9kZV9tb2R1bGVzL3Ryb3VnaC9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PUhEKCk7ci5leHBvcnRzPW8sby53cmFwPXU7dmFyIHQ9W10uc2xpY2U7ZnVuY3Rpb24gbygpe3ZhciBuPVtdLHM9e307cmV0dXJuIHMucnVuPWMscy51c2U9aSxzO2Z1bmN0aW9uIGMoKXt2YXIgRD0tMSxhPXQuY2FsbChhcmd1bWVudHMsMCwtMSksbD1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtpZih0eXBlb2YgbCE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGZ1bmN0aW9uIGFzIGxhc3QgYXJndW1lbnQsIG5vdCBcIitsKTtwLmFwcGx5KG51bGwsW251bGxdLmNvbmNhdChhKSk7ZnVuY3Rpb24gcChkKXt2YXIgZz1uWysrRF0sRj10LmNhbGwoYXJndW1lbnRzLDApLEU9Ri5zbGljZSgxKSx4PWEubGVuZ3RoLGY9LTE7aWYoZCl7bChkKTtyZXR1cm59Zm9yKDsrK2Y8eDspKEVbZl09PT1udWxsfHxFW2ZdPT09dm9pZCAwKSYmKEVbZl09YVtmXSk7YT1FLGc/dShnLHApLmFwcGx5KG51bGwsYSk6bC5hcHBseShudWxsLFtudWxsXS5jb25jYXQoYSkpfX1mdW5jdGlvbiBpKEQpe2lmKHR5cGVvZiBEIT1cImZ1bmN0aW9uXCIpdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYGZuYCB0byBiZSBhIGZ1bmN0aW9uLCBub3QgXCIrRCk7cmV0dXJuIG4ucHVzaChEKSxzfX19fSksV0Q9Uyh7XCJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT17fS5oYXNPd25Qcm9wZXJ0eTtyLmV4cG9ydHM9dDtmdW5jdGlvbiB0KGMpe3JldHVybiFjfHx0eXBlb2YgYyE9XCJvYmplY3RcIj9cIlwiOnUuY2FsbChjLFwicG9zaXRpb25cIil8fHUuY2FsbChjLFwidHlwZVwiKT9uKGMucG9zaXRpb24pOnUuY2FsbChjLFwic3RhcnRcIil8fHUuY2FsbChjLFwiZW5kXCIpP24oYyk6dS5jYWxsKGMsXCJsaW5lXCIpfHx1LmNhbGwoYyxcImNvbHVtblwiKT9vKGMpOlwiXCJ9ZnVuY3Rpb24gbyhjKXtyZXR1cm4oIWN8fHR5cGVvZiBjIT1cIm9iamVjdFwiKSYmKGM9e30pLHMoYy5saW5lKStcIjpcIitzKGMuY29sdW1uKX1mdW5jdGlvbiBuKGMpe3JldHVybighY3x8dHlwZW9mIGMhPVwib2JqZWN0XCIpJiYoYz17fSksbyhjLnN0YXJ0KStcIi1cIitvKGMuZW5kKX1mdW5jdGlvbiBzKGMpe3JldHVybiBjJiZ0eXBlb2YgYz09XCJudW1iZXJcIj9jOjF9fX0pLEtEPVMoe1wibm9kZV9tb2R1bGVzL3ZmaWxlLW1lc3NhZ2UvaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1XRCgpO3IuZXhwb3J0cz1uO2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLG4ucHJvdG90eXBlPW5ldyB0O3ZhciBvPW4ucHJvdG90eXBlO28uZmlsZT1cIlwiLG8ubmFtZT1cIlwiLG8ucmVhc29uPVwiXCIsby5tZXNzYWdlPVwiXCIsby5zdGFjaz1cIlwiLG8uZmF0YWw9bnVsbCxvLmNvbHVtbj1udWxsLG8ubGluZT1udWxsO2Z1bmN0aW9uIG4oYyxpLEQpe3ZhciBhLGwscDt0eXBlb2YgaT09XCJzdHJpbmdcIiYmKEQ9aSxpPW51bGwpLGE9cyhEKSxsPXUoaSl8fFwiMToxXCIscD17c3RhcnQ6e2xpbmU6bnVsbCxjb2x1bW46bnVsbH0sZW5kOntsaW5lOm51bGwsY29sdW1uOm51bGx9fSxpJiZpLnBvc2l0aW9uJiYoaT1pLnBvc2l0aW9uKSxpJiYoaS5zdGFydD8ocD1pLGk9aS5zdGFydCk6cC5zdGFydD1pKSxjLnN0YWNrJiYodGhpcy5zdGFjaz1jLnN0YWNrLGM9Yy5tZXNzYWdlKSx0aGlzLm1lc3NhZ2U9Yyx0aGlzLm5hbWU9bCx0aGlzLnJlYXNvbj1jLHRoaXMubGluZT1pP2kubGluZTpudWxsLHRoaXMuY29sdW1uPWk/aS5jb2x1bW46bnVsbCx0aGlzLmxvY2F0aW9uPXAsdGhpcy5zb3VyY2U9YVswXSx0aGlzLnJ1bGVJZD1hWzFdfWZ1bmN0aW9uIHMoYyl7dmFyIGk9W251bGwsbnVsbF0sRDtyZXR1cm4gdHlwZW9mIGM9PVwic3RyaW5nXCImJihEPWMuaW5kZXhPZihcIjpcIiksRD09PS0xP2lbMV09YzooaVswXT1jLnNsaWNlKDAsRCksaVsxXT1jLnNsaWNlKEQrMSkpKSxpfX19KSxZRD1TKHtcIm5vZGVfbW9kdWxlcy92ZmlsZS9saWIvbWlucGF0aC5icm93c2VyLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7SSgpLGUuYmFzZW5hbWU9cixlLmRpcm5hbWU9dSxlLmV4dG5hbWU9dCxlLmpvaW49byxlLnNlcD1cIi9cIjtmdW5jdGlvbiByKGksRCl7dmFyIGE9MCxsPS0xLHAsZCxnLEY7aWYoRCE9PXZvaWQgMCYmdHlwZW9mIEQhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7aWYoYyhpKSxwPWkubGVuZ3RoLEQ9PT12b2lkIDB8fCFELmxlbmd0aHx8RC5sZW5ndGg+aS5sZW5ndGgpe2Zvcig7cC0tOylpZihpLmNoYXJDb2RlQXQocCk9PT00Nyl7aWYoZyl7YT1wKzE7YnJlYWt9fWVsc2UgbDwwJiYoZz0hMCxsPXArMSk7cmV0dXJuIGw8MD9cIlwiOmkuc2xpY2UoYSxsKX1pZihEPT09aSlyZXR1cm5cIlwiO2ZvcihkPS0xLEY9RC5sZW5ndGgtMTtwLS07KWlmKGkuY2hhckNvZGVBdChwKT09PTQ3KXtpZihnKXthPXArMTticmVha319ZWxzZSBkPDAmJihnPSEwLGQ9cCsxKSxGPi0xJiYoaS5jaGFyQ29kZUF0KHApPT09RC5jaGFyQ29kZUF0KEYtLSk/RjwwJiYobD1wKTooRj0tMSxsPWQpKTtyZXR1cm4gYT09PWw/bD1kOmw8MCYmKGw9aS5sZW5ndGgpLGkuc2xpY2UoYSxsKX1mdW5jdGlvbiB1KGkpe3ZhciBELGEsbDtpZihjKGkpLCFpLmxlbmd0aClyZXR1cm5cIi5cIjtmb3IoRD0tMSxsPWkubGVuZ3RoOy0tbDspaWYoaS5jaGFyQ29kZUF0KGwpPT09NDcpe2lmKGEpe0Q9bDticmVha319ZWxzZSBhfHwoYT0hMCk7cmV0dXJuIEQ8MD9pLmNoYXJDb2RlQXQoMCk9PT00Nz9cIi9cIjpcIi5cIjpEPT09MSYmaS5jaGFyQ29kZUF0KDApPT09NDc/XCIvL1wiOmkuc2xpY2UoMCxEKX1mdW5jdGlvbiB0KGkpe3ZhciBEPS0xLGE9MCxsPS0xLHA9MCxkLGcsRjtmb3IoYyhpKSxGPWkubGVuZ3RoO0YtLTspe2lmKGc9aS5jaGFyQ29kZUF0KEYpLGc9PT00Nyl7aWYoZCl7YT1GKzE7YnJlYWt9Y29udGludWV9bDwwJiYoZD0hMCxsPUYrMSksZz09PTQ2P0Q8MD9EPUY6cCE9PTEmJihwPTEpOkQ+LTEmJihwPS0xKX1yZXR1cm4gRDwwfHxsPDB8fHA9PT0wfHxwPT09MSYmRD09PWwtMSYmRD09PWErMT9cIlwiOmkuc2xpY2UoRCxsKX1mdW5jdGlvbiBvKCl7Zm9yKHZhciBpPS0xLEQ7KytpPGFyZ3VtZW50cy5sZW5ndGg7KWMoYXJndW1lbnRzW2ldKSxhcmd1bWVudHNbaV0mJihEPUQ9PT12b2lkIDA/YXJndW1lbnRzW2ldOkQrXCIvXCIrYXJndW1lbnRzW2ldKTtyZXR1cm4gRD09PXZvaWQgMD9cIi5cIjpuKEQpfWZ1bmN0aW9uIG4oaSl7dmFyIEQsYTtyZXR1cm4gYyhpKSxEPWkuY2hhckNvZGVBdCgwKT09PTQ3LGE9cyhpLCFEKSwhYS5sZW5ndGgmJiFEJiYoYT1cIi5cIiksYS5sZW5ndGgmJmkuY2hhckNvZGVBdChpLmxlbmd0aC0xKT09PTQ3JiYoYSs9XCIvXCIpLEQ/XCIvXCIrYTphfWZ1bmN0aW9uIHMoaSxEKXtmb3IodmFyIGE9XCJcIixsPTAscD0tMSxkPTAsZz0tMSxGLEU7KytnPD1pLmxlbmd0aDspe2lmKGc8aS5sZW5ndGgpRj1pLmNoYXJDb2RlQXQoZyk7ZWxzZXtpZihGPT09NDcpYnJlYWs7Rj00N31pZihGPT09NDcpe2lmKCEocD09PWctMXx8ZD09PTEpKWlmKHAhPT1nLTEmJmQ9PT0yKXtpZihhLmxlbmd0aDwyfHxsIT09Mnx8YS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpIT09NDZ8fGEuY2hhckNvZGVBdChhLmxlbmd0aC0yKSE9PTQ2KXtpZihhLmxlbmd0aD4yKXtpZihFPWEubGFzdEluZGV4T2YoXCIvXCIpLEUhPT1hLmxlbmd0aC0xKXtFPDA/KGE9XCJcIixsPTApOihhPWEuc2xpY2UoMCxFKSxsPWEubGVuZ3RoLTEtYS5sYXN0SW5kZXhPZihcIi9cIikpLHA9ZyxkPTA7Y29udGludWV9fWVsc2UgaWYoYS5sZW5ndGgpe2E9XCJcIixsPTAscD1nLGQ9MDtjb250aW51ZX19RCYmKGE9YS5sZW5ndGg/YStcIi8uLlwiOlwiLi5cIixsPTIpfWVsc2UgYS5sZW5ndGg/YSs9XCIvXCIraS5zbGljZShwKzEsZyk6YT1pLnNsaWNlKHArMSxnKSxsPWctcC0xO3A9ZyxkPTB9ZWxzZSBGPT09NDYmJmQ+LTE/ZCsrOmQ9LTF9cmV0dXJuIGF9ZnVuY3Rpb24gYyhpKXtpZih0eXBlb2YgaSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCBcIitKU09OLnN0cmluZ2lmeShpKSl9fX0pLEpEPVMoe1wibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9taW5wcm9jLmJyb3dzZXIuanNcIihlKXtcInVzZSBzdHJpY3RcIjtJKCksZS5jd2Q9cjtmdW5jdGlvbiByKCl7cmV0dXJuXCIvXCJ9fX0pLFpEPVMoe1wibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9jb3JlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9WUQoKSx0PUpEKCksbz1IaSgpO3IuZXhwb3J0cz1jO3ZhciBuPXt9Lmhhc093blByb3BlcnR5LHM9W1wiaGlzdG9yeVwiLFwicGF0aFwiLFwiYmFzZW5hbWVcIixcInN0ZW1cIixcImV4dG5hbWVcIixcImRpcm5hbWVcIl07Yy5wcm90b3R5cGUudG9TdHJpbmc9ZixPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsXCJwYXRoXCIse2dldDppLHNldDpEfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLFwiZGlybmFtZVwiLHtnZXQ6YSxzZXQ6bH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcImJhc2VuYW1lXCIse2dldDpwLHNldDpkfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLFwiZXh0bmFtZVwiLHtnZXQ6ZyxzZXQ6Rn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcInN0ZW1cIix7Z2V0OkUsc2V0Onh9KTtmdW5jdGlvbiBjKG0pe3ZhciBDLEI7aWYoIW0pbT17fTtlbHNlIGlmKHR5cGVvZiBtPT1cInN0cmluZ1wifHxvKG0pKW09e2NvbnRlbnRzOm19O2Vsc2UgaWYoXCJtZXNzYWdlXCJpbiBtJiZcIm1lc3NhZ2VzXCJpbiBtKXJldHVybiBtO2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyhtKTtmb3IodGhpcy5kYXRhPXt9LHRoaXMubWVzc2FnZXM9W10sdGhpcy5oaXN0b3J5PVtdLHRoaXMuY3dkPXQuY3dkKCksQj0tMTsrK0I8cy5sZW5ndGg7KUM9c1tCXSxuLmNhbGwobSxDKSYmKHRoaXNbQ109bVtDXSk7Zm9yKEMgaW4gbSlzLmluZGV4T2YoQyk8MCYmKHRoaXNbQ109bVtDXSl9ZnVuY3Rpb24gaSgpe3JldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aC0xXX1mdW5jdGlvbiBEKG0pe3YobSxcInBhdGhcIiksdGhpcy5wYXRoIT09bSYmdGhpcy5oaXN0b3J5LnB1c2gobSl9ZnVuY3Rpb24gYSgpe3JldHVybiB0eXBlb2YgdGhpcy5wYXRoPT1cInN0cmluZ1wiP3UuZGlybmFtZSh0aGlzLnBhdGgpOnZvaWQgMH1mdW5jdGlvbiBsKG0pe2godGhpcy5wYXRoLFwiZGlybmFtZVwiKSx0aGlzLnBhdGg9dS5qb2luKG18fFwiXCIsdGhpcy5iYXNlbmFtZSl9ZnVuY3Rpb24gcCgpe3JldHVybiB0eXBlb2YgdGhpcy5wYXRoPT1cInN0cmluZ1wiP3UuYmFzZW5hbWUodGhpcy5wYXRoKTp2b2lkIDB9ZnVuY3Rpb24gZChtKXt2KG0sXCJiYXNlbmFtZVwiKSxiKG0sXCJiYXNlbmFtZVwiKSx0aGlzLnBhdGg9dS5qb2luKHRoaXMuZGlybmFtZXx8XCJcIixtKX1mdW5jdGlvbiBnKCl7cmV0dXJuIHR5cGVvZiB0aGlzLnBhdGg9PVwic3RyaW5nXCI/dS5leHRuYW1lKHRoaXMucGF0aCk6dm9pZCAwfWZ1bmN0aW9uIEYobSl7aWYoYihtLFwiZXh0bmFtZVwiKSxoKHRoaXMucGF0aCxcImV4dG5hbWVcIiksbSl7aWYobS5jaGFyQ29kZUF0KDApIT09NDYpdGhyb3cgbmV3IEVycm9yKFwiYGV4dG5hbWVgIG11c3Qgc3RhcnQgd2l0aCBgLmBcIik7aWYobS5pbmRleE9mKFwiLlwiLDEpPi0xKXRocm93IG5ldyBFcnJvcihcImBleHRuYW1lYCBjYW5ub3QgY29udGFpbiBtdWx0aXBsZSBkb3RzXCIpfXRoaXMucGF0aD11LmpvaW4odGhpcy5kaXJuYW1lLHRoaXMuc3RlbSsobXx8XCJcIikpfWZ1bmN0aW9uIEUoKXtyZXR1cm4gdHlwZW9mIHRoaXMucGF0aD09XCJzdHJpbmdcIj91LmJhc2VuYW1lKHRoaXMucGF0aCx0aGlzLmV4dG5hbWUpOnZvaWQgMH1mdW5jdGlvbiB4KG0pe3YobSxcInN0ZW1cIiksYihtLFwic3RlbVwiKSx0aGlzLnBhdGg9dS5qb2luKHRoaXMuZGlybmFtZXx8XCJcIixtKyh0aGlzLmV4dG5hbWV8fFwiXCIpKX1mdW5jdGlvbiBmKG0pe3JldHVybih0aGlzLmNvbnRlbnRzfHxcIlwiKS50b1N0cmluZyhtKX1mdW5jdGlvbiBiKG0sQyl7aWYobSYmbS5pbmRleE9mKHUuc2VwKT4tMSl0aHJvdyBuZXcgRXJyb3IoXCJgXCIrQytcImAgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYFwiK3Uuc2VwK1wiYFwiKX1mdW5jdGlvbiB2KG0sQyl7aWYoIW0pdGhyb3cgbmV3IEVycm9yKFwiYFwiK0MrXCJgIGNhbm5vdCBiZSBlbXB0eVwiKX1mdW5jdGlvbiBoKG0sQyl7aWYoIW0pdGhyb3cgbmV3IEVycm9yKFwiU2V0dGluZyBgXCIrQytcImAgcmVxdWlyZXMgYHBhdGhgIHRvIGJlIHNldCB0b29cIil9fX0pLFFEPVMoe1wibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PUtEKCksdD1aRCgpO3IuZXhwb3J0cz10LHQucHJvdG90eXBlLm1lc3NhZ2U9byx0LnByb3RvdHlwZS5pbmZvPXMsdC5wcm90b3R5cGUuZmFpbD1uO2Z1bmN0aW9uIG8oYyxpLEQpe3ZhciBhPW5ldyB1KGMsaSxEKTtyZXR1cm4gdGhpcy5wYXRoJiYoYS5uYW1lPXRoaXMucGF0aCtcIjpcIithLm5hbWUsYS5maWxlPXRoaXMucGF0aCksYS5mYXRhbD0hMSx0aGlzLm1lc3NhZ2VzLnB1c2goYSksYX1mdW5jdGlvbiBuKCl7dmFyIGM9dGhpcy5tZXNzYWdlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aHJvdyBjLmZhdGFsPSEwLGN9ZnVuY3Rpb24gcygpe3ZhciBjPXRoaXMubWVzc2FnZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGMuZmF0YWw9bnVsbCxjfX19KSxlMj1TKHtcIm5vZGVfbW9kdWxlcy92ZmlsZS9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz1RRCgpfX0pLHIyPVMoe1wibm9kZV9tb2R1bGVzL3VuaWZpZWQvaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1VRCgpLHQ9SGkoKSxvPVZEKCksbj0kRCgpLHM9WEQoKSxjPWUyKCk7ci5leHBvcnRzPWcoKS5mcmVlemUoKTt2YXIgaT1bXS5zbGljZSxEPXt9Lmhhc093blByb3BlcnR5LGE9cygpLnVzZShsKS51c2UocCkudXNlKGQpO2Z1bmN0aW9uIGwobSxDKXtDLnRyZWU9bS5wYXJzZShDLmZpbGUpfWZ1bmN0aW9uIHAobSxDLEIpe20ucnVuKEMudHJlZSxDLmZpbGUscSk7ZnVuY3Rpb24gcShMLHcsTyl7TD9CKEwpOihDLnRyZWU9dyxDLmZpbGU9TyxCKCkpfX1mdW5jdGlvbiBkKG0sQyl7dmFyIEI9bS5zdHJpbmdpZnkoQy50cmVlLEMuZmlsZSk7Qj09bnVsbHx8KHR5cGVvZiBCPT1cInN0cmluZ1wifHx0KEIpP0MuZmlsZS5jb250ZW50cz1COkMuZmlsZS5yZXN1bHQ9Qil9ZnVuY3Rpb24gZygpe3ZhciBtPVtdLEM9cygpLEI9e30scT0tMSxMO3JldHVybiB3LmRhdGE9VCx3LmZyZWV6ZT1PLHcuYXR0YWNoZXJzPW0sdy51c2U9UCx3LnBhcnNlPWosdy5zdHJpbmdpZnk9WCx3LnJ1bj0kLHcucnVuU3luYz1VLHcucHJvY2Vzcz1SLHcucHJvY2Vzc1N5bmM9Six3O2Z1bmN0aW9uIHcoKXtmb3IodmFyIHo9ZygpLE09LTE7KytNPG0ubGVuZ3RoOyl6LnVzZS5hcHBseShudWxsLG1bTV0pO3JldHVybiB6LmRhdGEobyghMCx7fSxCKSksen1mdW5jdGlvbiBPKCl7dmFyIHosTTtpZihMKXJldHVybiB3O2Zvcig7KytxPG0ubGVuZ3RoOyl6PW1bcV0selsxXSE9PSExJiYoelsxXT09PSEwJiYoelsxXT12b2lkIDApLE09elswXS5hcHBseSh3LHouc2xpY2UoMSkpLHR5cGVvZiBNPT1cImZ1bmN0aW9uXCImJkMudXNlKE0pKTtyZXR1cm4gTD0hMCxxPTEvMCx3fWZ1bmN0aW9uIFQoeixNKXtyZXR1cm4gdHlwZW9mIHo9PVwic3RyaW5nXCI/YXJndW1lbnRzLmxlbmd0aD09PTI/KGIoXCJkYXRhXCIsTCksQlt6XT1NLHcpOkQuY2FsbChCLHopJiZCW3pdfHxudWxsOno/KGIoXCJkYXRhXCIsTCksQj16LHcpOkJ9ZnVuY3Rpb24gUCh6KXt2YXIgTTtpZihiKFwidXNlXCIsTCkseiE9bnVsbClpZih0eXBlb2Ygej09XCJmdW5jdGlvblwiKV8uYXBwbHkobnVsbCxhcmd1bWVudHMpO2Vsc2UgaWYodHlwZW9mIHo9PVwib2JqZWN0XCIpXCJsZW5ndGhcImluIHo/eSh6KTpHKHopO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYFwiK3orXCJgXCIpO3JldHVybiBNJiYoQi5zZXR0aW5ncz1vKEIuc2V0dGluZ3N8fHt9LE0pKSx3O2Z1bmN0aW9uIEcoTil7eShOLnBsdWdpbnMpLE4uc2V0dGluZ3MmJihNPW8oTXx8e30sTi5zZXR0aW5ncykpfWZ1bmN0aW9uIGsoTil7aWYodHlwZW9mIE49PVwiZnVuY3Rpb25cIilfKE4pO2Vsc2UgaWYodHlwZW9mIE49PVwib2JqZWN0XCIpXCJsZW5ndGhcImluIE4/Xy5hcHBseShudWxsLE4pOkcoTik7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgXCIrTitcImBcIil9ZnVuY3Rpb24geShOKXt2YXIgVj0tMTtpZihOIT1udWxsKWlmKHR5cGVvZiBOPT1cIm9iamVjdFwiJiZcImxlbmd0aFwiaW4gTilmb3IoOysrVjxOLmxlbmd0aDspayhOW1ZdKTtlbHNlIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGEgbGlzdCBvZiBwbHVnaW5zLCBub3QgYFwiK04rXCJgXCIpfWZ1bmN0aW9uIF8oTixWKXt2YXIgVz1BKE4pO1c/KG4oV1sxXSkmJm4oVikmJihWPW8oITAsV1sxXSxWKSksV1sxXT1WKTptLnB1c2goaS5jYWxsKGFyZ3VtZW50cykpfX1mdW5jdGlvbiBBKHope2Zvcih2YXIgTT0tMTsrK008bS5sZW5ndGg7KWlmKG1bTV1bMF09PT16KXJldHVybiBtW01dfWZ1bmN0aW9uIGooeil7dmFyIE09Yyh6KSxHO3JldHVybiBPKCksRz13LlBhcnNlcix4KFwicGFyc2VcIixHKSxGKEcsXCJwYXJzZVwiKT9uZXcgRyhTdHJpbmcoTSksTSkucGFyc2UoKTpHKFN0cmluZyhNKSxNKX1mdW5jdGlvbiAkKHosTSxHKXtpZih2KHopLE8oKSwhRyYmdHlwZW9mIE09PVwiZnVuY3Rpb25cIiYmKEc9TSxNPW51bGwpLCFHKXJldHVybiBuZXcgUHJvbWlzZShrKTtrKG51bGwsRyk7ZnVuY3Rpb24gayh5LF8pe0MucnVuKHosYyhNKSxOKTtmdW5jdGlvbiBOKFYsVyxLKXtXPVd8fHosVj9fKFYpOnk/eShXKTpHKG51bGwsVyxLKX19fWZ1bmN0aW9uIFUoeixNKXt2YXIgRyxrO3JldHVybiAkKHosTSx5KSxoKFwicnVuU3luY1wiLFwicnVuXCIsayksRztmdW5jdGlvbiB5KF8sTil7az0hMCxHPU4sdShfKX19ZnVuY3Rpb24gWCh6LE0pe3ZhciBHPWMoTSksaztyZXR1cm4gTygpLGs9dy5Db21waWxlcixmKFwic3RyaW5naWZ5XCIsayksdih6KSxGKGssXCJjb21waWxlXCIpP25ldyBrKHosRykuY29tcGlsZSgpOmsoeixHKX1mdW5jdGlvbiBSKHosTSl7aWYoTygpLHgoXCJwcm9jZXNzXCIsdy5QYXJzZXIpLGYoXCJwcm9jZXNzXCIsdy5Db21waWxlciksIU0pcmV0dXJuIG5ldyBQcm9taXNlKEcpO0cobnVsbCxNKTtmdW5jdGlvbiBHKGsseSl7dmFyIF89Yyh6KTthLnJ1bih3LHtmaWxlOl99LE4pO2Z1bmN0aW9uIE4oVil7Vj95KFYpOms/ayhfKTpNKG51bGwsXyl9fX1mdW5jdGlvbiBKKHope3ZhciBNLEc7cmV0dXJuIE8oKSx4KFwicHJvY2Vzc1N5bmNcIix3LlBhcnNlciksZihcInByb2Nlc3NTeW5jXCIsdy5Db21waWxlciksTT1jKHopLFIoTSxrKSxoKFwicHJvY2Vzc1N5bmNcIixcInByb2Nlc3NcIixHKSxNO2Z1bmN0aW9uIGsoeSl7Rz0hMCx1KHkpfX19ZnVuY3Rpb24gRihtLEMpe3JldHVybiB0eXBlb2YgbT09XCJmdW5jdGlvblwiJiZtLnByb3RvdHlwZSYmKEUobS5wcm90b3R5cGUpfHxDIGluIG0ucHJvdG90eXBlKX1mdW5jdGlvbiBFKG0pe3ZhciBDO2ZvcihDIGluIG0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24geChtLEMpe2lmKHR5cGVvZiBDIT1cImZ1bmN0aW9uXCIpdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGBcIittK1wiYCB3aXRob3V0IGBQYXJzZXJgXCIpfWZ1bmN0aW9uIGYobSxDKXtpZih0eXBlb2YgQyE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBgXCIrbStcImAgd2l0aG91dCBgQ29tcGlsZXJgXCIpfWZ1bmN0aW9uIGIobSxDKXtpZihDKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBpbnZva2UgYFwiK20rXCJgIG9uIGEgZnJvemVuIHByb2Nlc3Nvci5cXG5DcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGZpcnN0LCBieSBpbnZva2luZyBpdDogdXNlIGBwcm9jZXNzb3IoKWAgaW5zdGVhZCBvZiBgcHJvY2Vzc29yYC5cIil9ZnVuY3Rpb24gdihtKXtpZighbXx8dHlwZW9mIG0udHlwZSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub2RlLCBnb3QgYFwiK20rXCJgXCIpfWZ1bmN0aW9uIGgobSxDLEIpe2lmKCFCKXRocm93IG5ldyBFcnJvcihcImBcIittK1wiYCBmaW5pc2hlZCBhc3luYy4gVXNlIGBcIitDK1wiYCBpbnN0ZWFkXCIpfX19KSxYaT1TKHtcIm5vZGVfbW9kdWxlcy9yZW1hcmstbWF0aC91dGlsLmpzXCIoZSl7SSgpLGUuaXNSZW1hcmtQYXJzZXI9cixlLmlzUmVtYXJrQ29tcGlsZXI9dTtmdW5jdGlvbiByKHQpe3JldHVybiBCb29sZWFuKHQmJnQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5ibG9ja1Rva2VuaXplcnMpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIEJvb2xlYW4odCYmdC5wcm90b3R5cGUmJnQucHJvdG90eXBlLnZpc2l0b3JzKX19fSksdTI9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLW1hdGgvaW5saW5lLmpzXCIoZSxyKXtJKCk7dmFyIHU9WGkoKTtyLmV4cG9ydHM9bDt2YXIgdD05LG89MzIsbj0zNixzPTQ4LGM9NTcsaT05MixEPVtcIm1hdGhcIixcIm1hdGgtaW5saW5lXCJdLGE9XCJtYXRoLWRpc3BsYXlcIjtmdW5jdGlvbiBsKGcpe2xldCBGPXRoaXMuUGFyc2VyLEU9dGhpcy5Db21waWxlcjt1LmlzUmVtYXJrUGFyc2VyKEYpJiZwKEYsZyksdS5pc1JlbWFya0NvbXBpbGVyKEUpJiZkKEUsZyl9ZnVuY3Rpb24gcChnLEYpe2xldCBFPWcucHJvdG90eXBlLHg9RS5pbmxpbmVNZXRob2RzO2IubG9jYXRvcj1mLEUuaW5saW5lVG9rZW5pemVycy5tYXRoPWIseC5zcGxpY2UoeC5pbmRleE9mKFwidGV4dFwiKSwwLFwibWF0aFwiKTtmdW5jdGlvbiBmKHYsaCl7cmV0dXJuIHYuaW5kZXhPZihcIiRcIixoKX1mdW5jdGlvbiBiKHYsaCxtKXtsZXQgQz1oLmxlbmd0aCxCPSExLHE9ITEsTD0wLHcsTyxULFAsQSxqLCQ7aWYoaC5jaGFyQ29kZUF0KEwpPT09aSYmKHE9ITAsTCsrKSxoLmNoYXJDb2RlQXQoTCk9PT1uKXtpZihMKysscSlyZXR1cm4gbT8hMDp2KGguc2xpY2UoMCxMKSkoe3R5cGU6XCJ0ZXh0XCIsdmFsdWU6XCIkXCJ9KTtpZihoLmNoYXJDb2RlQXQoTCk9PT1uJiYoQj0hMCxMKyspLFQ9aC5jaGFyQ29kZUF0KEwpLCEoVD09PW98fFQ9PT10KSl7Zm9yKFA9TDtMPEM7KXtpZihPPVQsVD1oLmNoYXJDb2RlQXQoTCsxKSxPPT09bil7aWYodz1oLmNoYXJDb2RlQXQoTC0xKSx3IT09byYmdyE9PXQmJihUIT09VHx8VDxzfHxUPmMpJiYoIUJ8fFQ9PT1uKSl7QT1MLTEsTCsrLEImJkwrKyxqPUw7YnJlYWt9fWVsc2UgTz09PWkmJihMKyssVD1oLmNoYXJDb2RlQXQoTCsxKSk7TCsrfWlmKGohPT12b2lkIDApcmV0dXJuIG0/ITA6KCQ9aC5zbGljZShQLEErMSksdihoLnNsaWNlKDAsaikpKHt0eXBlOlwiaW5saW5lTWF0aFwiLHZhbHVlOiQsZGF0YTp7aE5hbWU6XCJzcGFuXCIsaFByb3BlcnRpZXM6e2NsYXNzTmFtZTpELmNvbmNhdChCJiZGLmlubGluZU1hdGhEb3VibGU/W2FdOltdKX0saENoaWxkcmVuOlt7dHlwZTpcInRleHRcIix2YWx1ZTokfV19fSkpfX19fWZ1bmN0aW9uIGQoZyl7bGV0IEY9Zy5wcm90b3R5cGU7Ri52aXNpdG9ycy5pbmxpbmVNYXRoPUU7ZnVuY3Rpb24gRSh4KXtsZXQgZj1cIiRcIjtyZXR1cm4oeC5kYXRhJiZ4LmRhdGEuaFByb3BlcnRpZXMmJnguZGF0YS5oUHJvcGVydGllcy5jbGFzc05hbWV8fFtdKS5pbmNsdWRlcyhhKSYmKGY9XCIkJFwiKSxmK3gudmFsdWUrZn19fX0pLHQyPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1tYXRoL2Jsb2NrLmpzXCIoZSxyKXtJKCk7dmFyIHU9WGkoKTtyLmV4cG9ydHM9YTt2YXIgdD0xMCxvPTMyLG49MzYscz1gXG5gLGM9XCIkXCIsaT0yLEQ9W1wibWF0aFwiLFwibWF0aC1kaXNwbGF5XCJdO2Z1bmN0aW9uIGEoKXtsZXQgZD10aGlzLlBhcnNlcixnPXRoaXMuQ29tcGlsZXI7dS5pc1JlbWFya1BhcnNlcihkKSYmbChkKSx1LmlzUmVtYXJrQ29tcGlsZXIoZykmJnAoZyl9ZnVuY3Rpb24gbChkKXtsZXQgZz1kLnByb3RvdHlwZSxGPWcuYmxvY2tNZXRob2RzLEU9Zy5pbnRlcnJ1cHRQYXJhZ3JhcGgseD1nLmludGVycnVwdExpc3QsZj1nLmludGVycnVwdEJsb2NrcXVvdGU7Zy5ibG9ja1Rva2VuaXplcnMubWF0aD1iLEYuc3BsaWNlKEYuaW5kZXhPZihcImZlbmNlZENvZGVcIikrMSwwLFwibWF0aFwiKSxFLnNwbGljZShFLmluZGV4T2YoXCJmZW5jZWRDb2RlXCIpKzEsMCxbXCJtYXRoXCJdKSx4LnNwbGljZSh4LmluZGV4T2YoXCJmZW5jZWRDb2RlXCIpKzEsMCxbXCJtYXRoXCJdKSxmLnNwbGljZShmLmluZGV4T2YoXCJmZW5jZWRDb2RlXCIpKzEsMCxbXCJtYXRoXCJdKTtmdW5jdGlvbiBiKHYsaCxtKXt2YXIgQz1oLmxlbmd0aCxCPTA7bGV0IHEsTCx3LE8sVCxQLEEsaiwkLFUsWDtmb3IoO0I8QyYmaC5jaGFyQ29kZUF0KEIpPT09bzspQisrO2ZvcihUPUI7QjxDJiZoLmNoYXJDb2RlQXQoQik9PT1uOylCKys7aWYoUD1CLVQsIShQPGkpKXtmb3IoO0I8QyYmaC5jaGFyQ29kZUF0KEIpPT09bzspQisrO2ZvcihBPUI7QjxDOyl7aWYocT1oLmNoYXJDb2RlQXQoQikscT09PW4pcmV0dXJuO2lmKHE9PT10KWJyZWFrO0IrK31pZihoLmNoYXJDb2RlQXQoQik9PT10KXtpZihtKXJldHVybiEwO2ZvcihMPVtdLEEhPT1CJiZMLnB1c2goaC5zbGljZShBLEIpKSxCKyssdz1oLmluZGV4T2YocyxCKzEpLHc9dz09PS0xP0M6dztCPEM7KXtmb3Ioaj0hMSxVPUIsWD13LE89dywkPTA7Tz5VJiZoLmNoYXJDb2RlQXQoTy0xKT09PW87KU8tLTtmb3IoO08+VSYmaC5jaGFyQ29kZUF0KE8tMSk9PT1uOykkKyssTy0tO2ZvcihQPD0kJiZoLmluZGV4T2YoYyxVKT09PU8mJihqPSEwLFg9Tyk7VTw9WCYmVS1CPFQmJmguY2hhckNvZGVBdChVKT09PW87KVUrKztpZihqKWZvcig7WD5VJiZoLmNoYXJDb2RlQXQoWC0xKT09PW87KVgtLTtpZigoIWp8fFUhPT1YKSYmTC5wdXNoKGguc2xpY2UoVSxYKSksailicmVhaztCPXcrMSx3PWguaW5kZXhPZihzLEIrMSksdz13PT09LTE/Qzp3fXJldHVybiBMPUwuam9pbihgXG5gKSx2KGguc2xpY2UoMCx3KSkoe3R5cGU6XCJtYXRoXCIsdmFsdWU6TCxkYXRhOntoTmFtZTpcImRpdlwiLGhQcm9wZXJ0aWVzOntjbGFzc05hbWU6RC5jb25jYXQoKX0saENoaWxkcmVuOlt7dHlwZTpcInRleHRcIix2YWx1ZTpMfV19fSl9fX19ZnVuY3Rpb24gcChkKXtsZXQgZz1kLnByb3RvdHlwZTtnLnZpc2l0b3JzLm1hdGg9RjtmdW5jdGlvbiBGKEUpe3JldHVybmAkJFxuYCtFLnZhbHVlK2BcbiQkYH19fX0pLG4yPVMoe1wibm9kZV9tb2R1bGVzL3JlbWFyay1tYXRoL2luZGV4LmpzXCIoZSxyKXtJKCk7dmFyIHU9dTIoKSx0PXQyKCk7ci5leHBvcnRzPW87ZnVuY3Rpb24gbyhuKXt2YXIgcz1ufHx7fTt0LmNhbGwodGhpcyxzKSx1LmNhbGwodGhpcyxzKX19fSksaTI9Uyh7XCJub2RlX21vZHVsZXMvcmVtYXJrLWZvb3Rub3Rlcy9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLHIuZXhwb3J0cz1nO3ZhciB1PTksdD0xMCxvPTMyLG49MzMscz01OCxjPTkxLGk9OTIsRD05MyxhPTk0LGw9OTYscD00LGQ9MTAyNDtmdW5jdGlvbiBnKGgpe3ZhciBtPXRoaXMuUGFyc2VyLEM9dGhpcy5Db21waWxlcjtGKG0pJiZ4KG0saCksRShDKSYmZihDKX1mdW5jdGlvbiBGKGgpe3JldHVybiBCb29sZWFuKGgmJmgucHJvdG90eXBlJiZoLnByb3RvdHlwZS5ibG9ja1Rva2VuaXplcnMpfWZ1bmN0aW9uIEUoaCl7cmV0dXJuIEJvb2xlYW4oaCYmaC5wcm90b3R5cGUmJmgucHJvdG90eXBlLnZpc2l0b3JzKX1mdW5jdGlvbiB4KGgsbSl7Zm9yKHZhciBDPW18fHt9LEI9aC5wcm90b3R5cGUscT1CLmJsb2NrVG9rZW5pemVycyxMPUIuaW5saW5lVG9rZW5pemVycyx3PUIuYmxvY2tNZXRob2RzLE89Qi5pbmxpbmVNZXRob2RzLFQ9cS5kZWZpbml0aW9uLFA9TC5yZWZlcmVuY2UsQT1bXSxqPS0xLCQ9dy5sZW5ndGgsVTsrK2o8JDspVT13W2pdLCEoVT09PVwibmV3bGluZVwifHxVPT09XCJpbmRlbnRlZENvZGVcInx8VT09PVwicGFyYWdyYXBoXCJ8fFU9PT1cImZvb3Rub3RlRGVmaW5pdGlvblwiKSYmQS5wdXNoKFtVXSk7QS5wdXNoKFtcImZvb3Rub3RlRGVmaW5pdGlvblwiXSksQy5pbmxpbmVOb3RlcyYmKGIoTyxcInJlZmVyZW5jZVwiLFwiaW5saW5lTm90ZVwiKSxMLmlubGluZU5vdGU9SiksYih3LFwiZGVmaW5pdGlvblwiLFwiZm9vdG5vdGVEZWZpbml0aW9uXCIpLGIoTyxcInJlZmVyZW5jZVwiLFwiZm9vdG5vdGVDYWxsXCIpLHEuZGVmaW5pdGlvbj1NLHEuZm9vdG5vdGVEZWZpbml0aW9uPVgsTC5mb290bm90ZUNhbGw9UixMLnJlZmVyZW5jZT16LEIuaW50ZXJydXB0Rm9vdG5vdGVEZWZpbml0aW9uPUEsei5sb2NhdG9yPVAubG9jYXRvcixSLmxvY2F0b3I9RyxKLmxvY2F0b3I9aztmdW5jdGlvbiBYKHksXyxOKXtmb3IodmFyIFY9dGhpcyxXPVYuaW50ZXJydXB0Rm9vdG5vdGVEZWZpbml0aW9uLEs9Vi5vZmZzZXQsZWU9Xy5sZW5ndGgrMSxZPTAsdGU9W10sRGUsbGUsbmUsWixRLGZlLGJlLHBlLGhlLG9lLGRlLGllLHJlO1k8ZWUmJihaPV8uY2hhckNvZGVBdChZKSwhKFohPT11JiZaIT09bykpOylZKys7aWYoXy5jaGFyQ29kZUF0KFkrKyk9PT1jJiZfLmNoYXJDb2RlQXQoWSsrKT09PWEpe2ZvcihsZT1ZO1k8ZWU7KXtpZihaPV8uY2hhckNvZGVBdChZKSxaIT09Wnx8Wj09PXR8fFo9PT11fHxaPT09bylyZXR1cm47aWYoWj09PUQpe25lPVksWSsrO2JyZWFrfVkrK31pZighKG5lPT09dm9pZCAwfHxsZT09PW5lfHxfLmNoYXJDb2RlQXQoWSsrKSE9PXMpKXtpZihOKXJldHVybiEwO2ZvcihEZT1fLnNsaWNlKGxlLG5lKSxRPXkubm93KCksaGU9MCxvZT0wLGRlPVksaWU9W107WTxlZTspe2lmKFo9Xy5jaGFyQ29kZUF0KFkpLFohPT1afHxaPT09dClyZT17c3RhcnQ6aGUsY29udGVudFN0YXJ0OmRlfHxZLGNvbnRlbnRFbmQ6WSxlbmQ6WX0saWUucHVzaChyZSksWj09PXQmJihoZT1ZKzEsb2U9MCxkZT12b2lkIDAscmUuZW5kPWhlKTtlbHNlIGlmKG9lIT09dm9pZCAwKWlmKFo9PT1vfHxaPT09dSlvZSs9Wj09PW8/MTpwLW9lJXAsb2U+cCYmKG9lPXZvaWQgMCxkZT1ZKTtlbHNle2lmKG9lPHAmJnJlJiYocmUuY29udGVudFN0YXJ0PT09cmUuY29udGVudEVuZHx8dihXLHEsVixbeSxfLnNsaWNlKFksZCksITBdKSkpYnJlYWs7b2U9dm9pZCAwLGRlPVl9WSsrfWZvcihZPS0xLGVlPWllLmxlbmd0aDtlZT4wJiYocmU9aWVbZWUtMV0scmUuY29udGVudFN0YXJ0PT09cmUuY29udGVudEVuZCk7KWVlLS07Zm9yKGZlPXkoXy5zbGljZSgwLHJlLmNvbnRlbnRFbmQpKTsrK1k8ZWU7KXJlPWllW1ldLEtbUS5saW5lK1ldPShLW1EubGluZStZXXx8MCkrKHJlLmNvbnRlbnRTdGFydC1yZS5zdGFydCksdGUucHVzaChfLnNsaWNlKHJlLmNvbnRlbnRTdGFydCxyZS5lbmQpKTtyZXR1cm4gYmU9Vi5lbnRlckJsb2NrKCkscGU9Vi50b2tlbml6ZUJsb2NrKHRlLmpvaW4oXCJcIiksUSksYmUoKSxmZSh7dHlwZTpcImZvb3Rub3RlRGVmaW5pdGlvblwiLGlkZW50aWZpZXI6RGUudG9Mb3dlckNhc2UoKSxsYWJlbDpEZSxjaGlsZHJlbjpwZX0pfX19ZnVuY3Rpb24gUih5LF8sTil7dmFyIFY9Xy5sZW5ndGgrMSxXPTAsSyxlZSxZLHRlO2lmKF8uY2hhckNvZGVBdChXKyspPT09YyYmXy5jaGFyQ29kZUF0KFcrKyk9PT1hKXtmb3IoZWU9VztXPFY7KXtpZih0ZT1fLmNoYXJDb2RlQXQoVyksdGUhPT10ZXx8dGU9PT10fHx0ZT09PXV8fHRlPT09bylyZXR1cm47aWYodGU9PT1EKXtZPVcsVysrO2JyZWFrfVcrK31pZighKFk9PT12b2lkIDB8fGVlPT09WSkpcmV0dXJuIE4/ITA6KEs9Xy5zbGljZShlZSxZKSx5KF8uc2xpY2UoMCxXKSkoe3R5cGU6XCJmb290bm90ZVJlZmVyZW5jZVwiLGlkZW50aWZpZXI6Sy50b0xvd2VyQ2FzZSgpLGxhYmVsOkt9KSl9fWZ1bmN0aW9uIEooeSxfLE4pe3ZhciBWPXRoaXMsVz1fLmxlbmd0aCsxLEs9MCxlZT0wLFksdGUsRGUsbGUsbmUsWixRO2lmKF8uY2hhckNvZGVBdChLKyspPT09YSYmXy5jaGFyQ29kZUF0KEsrKyk9PT1jKXtmb3IoRGU9SztLPFc7KXtpZih0ZT1fLmNoYXJDb2RlQXQoSyksdGUhPT10ZSlyZXR1cm47aWYoWj09PXZvaWQgMClpZih0ZT09PWkpSys9MjtlbHNlIGlmKHRlPT09YyllZSsrLEsrKztlbHNlIGlmKHRlPT09RClpZihlZT09PTApe2xlPUssSysrO2JyZWFrfWVsc2UgZWUtLSxLKys7ZWxzZSBpZih0ZT09PWwpe2ZvcihuZT1LLFo9MTtfLmNoYXJDb2RlQXQobmUrWik9PT1sOylaKys7Sys9Wn1lbHNlIEsrKztlbHNlIGlmKHRlPT09bCl7Zm9yKG5lPUssUT0xO18uY2hhckNvZGVBdChuZStRKT09PWw7KVErKztLKz1RLFo9PT1RJiYoWj12b2lkIDApLFE9dm9pZCAwfWVsc2UgSysrfWlmKGxlIT09dm9pZCAwKXJldHVybiBOPyEwOihZPXkubm93KCksWS5jb2x1bW4rPTIsWS5vZmZzZXQrPTIseShfLnNsaWNlKDAsSykpKHt0eXBlOlwiZm9vdG5vdGVcIixjaGlsZHJlbjpWLnRva2VuaXplSW5saW5lKF8uc2xpY2UoRGUsbGUpLFkpfSkpfX1mdW5jdGlvbiB6KHksXyxOKXt2YXIgVj0wO2lmKF8uY2hhckNvZGVBdChWKT09PW4mJlYrKyxfLmNoYXJDb2RlQXQoVik9PT1jJiZfLmNoYXJDb2RlQXQoVisxKSE9PWEpcmV0dXJuIFAuY2FsbCh0aGlzLHksXyxOKX1mdW5jdGlvbiBNKHksXyxOKXtmb3IodmFyIFY9MCxXPV8uY2hhckNvZGVBdChWKTtXPT09b3x8Vz09PXU7KVc9Xy5jaGFyQ29kZUF0KCsrVik7aWYoVz09PWMmJl8uY2hhckNvZGVBdChWKzEpIT09YSlyZXR1cm4gVC5jYWxsKHRoaXMseSxfLE4pfWZ1bmN0aW9uIEcoeSxfKXtyZXR1cm4geS5pbmRleE9mKFwiW1wiLF8pfWZ1bmN0aW9uIGsoeSxfKXtyZXR1cm4geS5pbmRleE9mKFwiXltcIixfKX19ZnVuY3Rpb24gZihoKXt2YXIgbT1oLnByb3RvdHlwZS52aXNpdG9ycyxDPVwiICAgIFwiO20uZm9vdG5vdGU9QixtLmZvb3Rub3RlUmVmZXJlbmNlPXEsbS5mb290bm90ZURlZmluaXRpb249TDtmdW5jdGlvbiBCKHcpe3JldHVyblwiXltcIit0aGlzLmFsbCh3KS5qb2luKFwiXCIpK1wiXVwifWZ1bmN0aW9uIHEodyl7cmV0dXJuXCJbXlwiKyh3LmxhYmVsfHx3LmlkZW50aWZpZXIpK1wiXVwifWZ1bmN0aW9uIEwodyl7Zm9yKHZhciBPPXRoaXMuYWxsKHcpLmpvaW4oYFxuXG5gKS5zcGxpdChgXG5gKSxUPTAsUD1PLmxlbmd0aCxBOysrVDxQOylBPU9bVF0sQSE9PVwiXCImJihPW1RdPUMrQSk7cmV0dXJuXCJbXlwiKyh3LmxhYmVsfHx3LmlkZW50aWZpZXIpK1wiXTogXCIrTy5qb2luKGBcbmApfX1mdW5jdGlvbiBiKGgsbSxDKXtoLnNwbGljZShoLmluZGV4T2YobSksMCxDKX1mdW5jdGlvbiB2KGgsbSxDLEIpe2Zvcih2YXIgcT1oLmxlbmd0aCxMPS0xOysrTDxxOylpZihtW2hbTF1bMF1dLmFwcGx5KEMsQikpcmV0dXJuITA7cmV0dXJuITF9fX0pLFdpPVMoe1wic3JjL3V0aWxzL2Zyb250LW1hdHRlci9wYXJzZS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PW5ldyBSZWdFeHAoXCJeKD88c3RhcnREZWxpbWl0ZXI+LXszfXxcXFxcK3szfSkoPzxsYW5ndWFnZT5bXlxcXFxuXSopXFxcXG4oPzp8KD88dmFsdWU+Lio/KVxcXFxuKSg/PGVuZERlbGltaXRlcj5cXFxcazxzdGFydERlbGltaXRlcj58XFxcXC57M30pW15cXFxcU1xcXFxuXSooPzpcXFxcbnwkKVwiLFwic1wiKTtmdW5jdGlvbiB0KG8pe2xldCBuPW8ubWF0Y2godSk7aWYoIW4pcmV0dXJue2NvbnRlbnQ6b307bGV0e3N0YXJ0RGVsaW1pdGVyOnMsbGFuZ3VhZ2U6Yyx2YWx1ZTppPVwiXCIsZW5kRGVsaW1pdGVyOkR9PW4uZ3JvdXBzLGE9Yy50cmltKCl8fFwieWFtbFwiO2lmKHM9PT1cIisrK1wiJiYoYT1cInRvbWxcIiksYSE9PVwieWFtbFwiJiZzIT09RClyZXR1cm57Y29udGVudDpvfTtsZXRbbF09bjtyZXR1cm57ZnJvbnRNYXR0ZXI6e3R5cGU6XCJmcm9udC1tYXR0ZXJcIixsYW5nOmEsdmFsdWU6aSxzdGFydERlbGltaXRlcjpzLGVuZERlbGltaXRlcjpELHJhdzpsLnJlcGxhY2UoL1xcbiQvLFwiXCIpfSxjb250ZW50OmwucmVwbGFjZSgvW15cXG5dL2csXCIgXCIpK28uc2xpY2UobC5sZW5ndGgpfX1yLmV4cG9ydHM9dH19KSxhMj1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi9wcmFnbWEuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1XaSgpLHQ9W1wiZm9ybWF0XCIsXCJwcmV0dGllclwiXTtmdW5jdGlvbiBvKG4pe2xldCBzPVwiQChcIi5jb25jYXQodC5qb2luKFwifFwiKSxcIilcIiksYz1uZXcgUmVnRXhwKFtcIjwhLS1cXFxccypcIi5jb25jYXQocyxcIlxcXFxzKi0tPlwiKSxcIntcXFxccypcXFxcL1xcXFwqXFxcXHMqXCIuY29uY2F0KHMsXCJcXFxccypcXFxcKlxcXFwvXFxcXHMqfVwiKSxgPCEtLS4qXFxyP1xuW1xcXFxzXFxcXFNdKihefFxuKVteXFxcXFNcbl0qYC5jb25jYXQocyxgW15cXFxcU1xuXSooJHxcbilbXFxcXHNcXFxcU10qXG4uKi0tPmApXS5qb2luKFwifFwiKSxcIm1cIiksaT1uLm1hdGNoKGMpO3JldHVybihpPT1udWxsP3ZvaWQgMDppLmluZGV4KT09PTB9ci5leHBvcnRzPXtzdGFydFdpdGhQcmFnbWE6byxoYXNQcmFnbWE6bj0+byh1KG4pLmNvbnRlbnQudHJpbVN0YXJ0KCkpLGluc2VydFByYWdtYTpuPT57bGV0IHM9dShuKSxjPVwiPCEtLSBAXCIuY29uY2F0KHRbMF0sXCIgLS0+XCIpO3JldHVybiBzLmZyb250TWF0dGVyP1wiXCIuY29uY2F0KHMuZnJvbnRNYXR0ZXIucmF3LGBcblxuYCkuY29uY2F0KGMsYFxuXG5gKS5jb25jYXQocy5jb250ZW50KTpcIlwiLmNvbmNhdChjLGBcblxuYCkuY29uY2F0KHMuY29udGVudCl9fX19KSxLaT1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi9sb2MuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTtmdW5jdGlvbiB1KG8pe3JldHVybiBvLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldH1mdW5jdGlvbiB0KG8pe3JldHVybiBvLnBvc2l0aW9uLmVuZC5vZmZzZXR9ci5leHBvcnRzPXtsb2NTdGFydDp1LGxvY0VuZDp0fX19KSxZaT1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi9tZHguanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT0vXmltcG9ydFxccy8sdD0vXmV4cG9ydFxccy8sbz1cIlthLXpdW2EtejAtOV0qKFxcXFwuW2Etel1bYS16MC05XSopKnxcIixuPS88IS0tLS0+fDwhLS0tP1tePi1dKD86LT9bXi1dKSotLT4vLHM9L157XFxzKlxcL1xcKiguKilcXCpcXC9cXHMqfS8sYz1gXG5cbmAsaT1kPT51LnRlc3QoZCksRD1kPT50LnRlc3QoZCksYT0oZCxnKT0+e2xldCBGPWcuaW5kZXhPZihjKSxFPWcuc2xpY2UoMCxGKTtpZihEKEUpfHxpKEUpKXJldHVybiBkKEUpKHt0eXBlOkQoRSk/XCJleHBvcnRcIjpcImltcG9ydFwiLHZhbHVlOkV9KX0sbD0oZCxnKT0+e2xldCBGPXMuZXhlYyhnKTtpZihGKXJldHVybiBkKEZbMF0pKHt0eXBlOlwiZXNDb21tZW50XCIsdmFsdWU6RlsxXS50cmltKCl9KX07YS5sb2NhdG9yPWQ9PkQoZCl8fGkoZCk/LTE6MSxsLmxvY2F0b3I9KGQsZyk9PmQuaW5kZXhPZihcIntcIixnKTtmdW5jdGlvbiBwKCl7bGV0e1BhcnNlcjpkfT10aGlzLHtibG9ja1Rva2VuaXplcnM6ZyxibG9ja01ldGhvZHM6RixpbmxpbmVUb2tlbml6ZXJzOkUsaW5saW5lTWV0aG9kczp4fT1kLnByb3RvdHlwZTtnLmVzU3ludGF4PWEsRS5lc0NvbW1lbnQ9bCxGLnNwbGljZShGLmluZGV4T2YoXCJwYXJhZ3JhcGhcIiksMCxcImVzU3ludGF4XCIpLHguc3BsaWNlKHguaW5kZXhPZihcInRleHRcIiksMCxcImVzQ29tbWVudFwiKX1yLmV4cG9ydHM9e2VzU3ludGF4OnAsQkxPQ0tTX1JFR0VYOm8sQ09NTUVOVF9SRUdFWDpufX19KSxKaT17fTtMaShKaSx7ZGVmYXVsdDooKT0+bzJ9KTtmdW5jdGlvbiBvMihlKXtpZih0eXBlb2YgZSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBzdHJpbmdcIik7cmV0dXJuIGUucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCsqPy5dL2csXCJcXFxcJCZcIikucmVwbGFjZSgvLS9nLFwiXFxcXHgyZFwiKX12YXIgczI9UGUoe1wibm9kZV9tb2R1bGVzL2VzY2FwZS1zdHJpbmctcmVnZXhwL2luZGV4LmpzXCIoKXtJKCl9fSksYzI9Uyh7XCJzcmMvdXRpbHMvZ2V0LWxhc3QuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT10PT50W3QubGVuZ3RoLTFdO3IuZXhwb3J0cz11fX0pLFppPVMoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9kZWJ1Zy5qc1wiKGUscil7SSgpO3ZhciB1PXR5cGVvZiBaZT09XCJvYmplY3RcIiYmWmUuZW52JiZaZS5lbnYuTk9ERV9ERUJVRyYmL1xcYnNlbXZlclxcYi9pLnRlc3QoWmUuZW52Lk5PREVfREVCVUcpP2Z1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkodCksbj0wO248dDtuKyspb1tuXT1hcmd1bWVudHNbbl07cmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJTRU1WRVJcIiwuLi5vKX06KCk9Pnt9O3IuZXhwb3J0cz11fX0pLFFpPVMoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9jb25zdGFudHMuanNcIihlLHIpe0koKTt2YXIgdT1cIjIuMC4wXCIsdD0yNTYsbz1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUnx8OTAwNzE5OTI1NDc0MDk5MSxuPTE2O3IuZXhwb3J0cz17U0VNVkVSX1NQRUNfVkVSU0lPTjp1LE1BWF9MRU5HVEg6dCxNQVhfU0FGRV9JTlRFR0VSOm8sTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSDpufX19KSxsMj1TKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvcmUuanNcIihlLHIpe0koKTt2YXJ7TUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSDp1fT1RaSgpLHQ9WmkoKTtlPXIuZXhwb3J0cz17fTt2YXIgbz1lLnJlPVtdLG49ZS5zcmM9W10scz1lLnQ9e30sYz0wLGk9KEQsYSxsKT0+e2xldCBwPWMrKzt0KEQscCxhKSxzW0RdPXAsbltwXT1hLG9bcF09bmV3IFJlZ0V4cChhLGw/XCJnXCI6dm9pZCAwKX07aShcIk5VTUVSSUNJREVOVElGSUVSXCIsXCIwfFsxLTldXFxcXGQqXCIpLGkoXCJOVU1FUklDSURFTlRJRklFUkxPT1NFXCIsXCJbMC05XStcIiksaShcIk5PTk5VTUVSSUNJREVOVElGSUVSXCIsXCJcXFxcZCpbYS16QS1aLV1bYS16QS1aMC05LV0qXCIpLGkoXCJNQUlOVkVSU0lPTlwiLFwiKFwiLmNvbmNhdChuW3MuTlVNRVJJQ0lERU5USUZJRVJdLFwiKVxcXFwuKFwiKS5jb25jYXQobltzLk5VTUVSSUNJREVOVElGSUVSXSxcIilcXFxcLihcIikuY29uY2F0KG5bcy5OVU1FUklDSURFTlRJRklFUl0sXCIpXCIpKSxpKFwiTUFJTlZFUlNJT05MT09TRVwiLFwiKFwiLmNvbmNhdChuW3MuTlVNRVJJQ0lERU5USUZJRVJMT09TRV0sXCIpXFxcXC4oXCIpLmNvbmNhdChuW3MuTlVNRVJJQ0lERU5USUZJRVJMT09TRV0sXCIpXFxcXC4oXCIpLmNvbmNhdChuW3MuTlVNRVJJQ0lERU5USUZJRVJMT09TRV0sXCIpXCIpKSxpKFwiUFJFUkVMRUFTRUlERU5USUZJRVJcIixcIig/OlwiLmNvbmNhdChuW3MuTlVNRVJJQ0lERU5USUZJRVJdLFwifFwiKS5jb25jYXQobltzLk5PTk5VTUVSSUNJREVOVElGSUVSXSxcIilcIikpLGkoXCJQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXCIsXCIoPzpcIi5jb25jYXQobltzLk5VTUVSSUNJREVOVElGSUVSTE9PU0VdLFwifFwiKS5jb25jYXQobltzLk5PTk5VTUVSSUNJREVOVElGSUVSXSxcIilcIikpLGkoXCJQUkVSRUxFQVNFXCIsXCIoPzotKFwiLmNvbmNhdChuW3MuUFJFUkVMRUFTRUlERU5USUZJRVJdLFwiKD86XFxcXC5cIikuY29uY2F0KG5bcy5QUkVSRUxFQVNFSURFTlRJRklFUl0sXCIpKikpXCIpKSxpKFwiUFJFUkVMRUFTRUxPT1NFXCIsXCIoPzotPyhcIi5jb25jYXQobltzLlBSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdLFwiKD86XFxcXC5cIikuY29uY2F0KG5bcy5QUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXSxcIikqKSlcIikpLGkoXCJCVUlMRElERU5USUZJRVJcIixcIlswLTlBLVphLXotXStcIiksaShcIkJVSUxEXCIsXCIoPzpcXFxcKyhcIi5jb25jYXQobltzLkJVSUxESURFTlRJRklFUl0sXCIoPzpcXFxcLlwiKS5jb25jYXQobltzLkJVSUxESURFTlRJRklFUl0sXCIpKikpXCIpKSxpKFwiRlVMTFBMQUlOXCIsXCJ2P1wiLmNvbmNhdChuW3MuTUFJTlZFUlNJT05dKS5jb25jYXQobltzLlBSRVJFTEVBU0VdLFwiP1wiKS5jb25jYXQobltzLkJVSUxEXSxcIj9cIikpLGkoXCJGVUxMXCIsXCJeXCIuY29uY2F0KG5bcy5GVUxMUExBSU5dLFwiJFwiKSksaShcIkxPT1NFUExBSU5cIixcIlt2PVxcXFxzXSpcIi5jb25jYXQobltzLk1BSU5WRVJTSU9OTE9PU0VdKS5jb25jYXQobltzLlBSRVJFTEVBU0VMT09TRV0sXCI/XCIpLmNvbmNhdChuW3MuQlVJTERdLFwiP1wiKSksaShcIkxPT1NFXCIsXCJeXCIuY29uY2F0KG5bcy5MT09TRVBMQUlOXSxcIiRcIikpLGkoXCJHVExUXCIsXCIoKD86PHw+KT89PylcIiksaShcIlhSQU5HRUlERU5USUZJRVJMT09TRVwiLFwiXCIuY29uY2F0KG5bcy5OVU1FUklDSURFTlRJRklFUkxPT1NFXSxcInx4fFh8XFxcXCpcIikpLGkoXCJYUkFOR0VJREVOVElGSUVSXCIsXCJcIi5jb25jYXQobltzLk5VTUVSSUNJREVOVElGSUVSXSxcInx4fFh8XFxcXCpcIikpLGkoXCJYUkFOR0VQTEFJTlwiLFwiW3Y9XFxcXHNdKihcIi5jb25jYXQobltzLlhSQU5HRUlERU5USUZJRVJdLFwiKSg/OlxcXFwuKFwiKS5jb25jYXQobltzLlhSQU5HRUlERU5USUZJRVJdLFwiKSg/OlxcXFwuKFwiKS5jb25jYXQobltzLlhSQU5HRUlERU5USUZJRVJdLFwiKSg/OlwiKS5jb25jYXQobltzLlBSRVJFTEVBU0VdLFwiKT9cIikuY29uY2F0KG5bcy5CVUlMRF0sXCI/KT8pP1wiKSksaShcIlhSQU5HRVBMQUlOTE9PU0VcIixcIlt2PVxcXFxzXSooXCIuY29uY2F0KG5bcy5YUkFOR0VJREVOVElGSUVSTE9PU0VdLFwiKSg/OlxcXFwuKFwiKS5jb25jYXQobltzLlhSQU5HRUlERU5USUZJRVJMT09TRV0sXCIpKD86XFxcXC4oXCIpLmNvbmNhdChuW3MuWFJBTkdFSURFTlRJRklFUkxPT1NFXSxcIikoPzpcIikuY29uY2F0KG5bcy5QUkVSRUxFQVNFTE9PU0VdLFwiKT9cIikuY29uY2F0KG5bcy5CVUlMRF0sXCI/KT8pP1wiKSksaShcIlhSQU5HRVwiLFwiXlwiLmNvbmNhdChuW3MuR1RMVF0sXCJcXFxccypcIikuY29uY2F0KG5bcy5YUkFOR0VQTEFJTl0sXCIkXCIpKSxpKFwiWFJBTkdFTE9PU0VcIixcIl5cIi5jb25jYXQobltzLkdUTFRdLFwiXFxcXHMqXCIpLmNvbmNhdChuW3MuWFJBTkdFUExBSU5MT09TRV0sXCIkXCIpKSxpKFwiQ09FUkNFXCIsXCIoXnxbXlxcXFxkXSkoXFxcXGR7MSxcIi5jb25jYXQodSxcIn0pKD86XFxcXC4oXFxcXGR7MSxcIikuY29uY2F0KHUsXCJ9KSk/KD86XFxcXC4oXFxcXGR7MSxcIikuY29uY2F0KHUsXCJ9KSk/KD86JHxbXlxcXFxkXSlcIikpLGkoXCJDT0VSQ0VSVExcIixuW3MuQ09FUkNFXSwhMCksaShcIkxPTkVUSUxERVwiLFwiKD86fj4/KVwiKSxpKFwiVElMREVUUklNXCIsXCIoXFxcXHMqKVwiLmNvbmNhdChuW3MuTE9ORVRJTERFXSxcIlxcXFxzK1wiKSwhMCksZS50aWxkZVRyaW1SZXBsYWNlPVwiJDF+XCIsaShcIlRJTERFXCIsXCJeXCIuY29uY2F0KG5bcy5MT05FVElMREVdKS5jb25jYXQobltzLlhSQU5HRVBMQUlOXSxcIiRcIikpLGkoXCJUSUxERUxPT1NFXCIsXCJeXCIuY29uY2F0KG5bcy5MT05FVElMREVdKS5jb25jYXQobltzLlhSQU5HRVBMQUlOTE9PU0VdLFwiJFwiKSksaShcIkxPTkVDQVJFVFwiLFwiKD86XFxcXF4pXCIpLGkoXCJDQVJFVFRSSU1cIixcIihcXFxccyopXCIuY29uY2F0KG5bcy5MT05FQ0FSRVRdLFwiXFxcXHMrXCIpLCEwKSxlLmNhcmV0VHJpbVJlcGxhY2U9XCIkMV5cIixpKFwiQ0FSRVRcIixcIl5cIi5jb25jYXQobltzLkxPTkVDQVJFVF0pLmNvbmNhdChuW3MuWFJBTkdFUExBSU5dLFwiJFwiKSksaShcIkNBUkVUTE9PU0VcIixcIl5cIi5jb25jYXQobltzLkxPTkVDQVJFVF0pLmNvbmNhdChuW3MuWFJBTkdFUExBSU5MT09TRV0sXCIkXCIpKSxpKFwiQ09NUEFSQVRPUkxPT1NFXCIsXCJeXCIuY29uY2F0KG5bcy5HVExUXSxcIlxcXFxzKihcIikuY29uY2F0KG5bcy5MT09TRVBMQUlOXSxcIikkfF4kXCIpKSxpKFwiQ09NUEFSQVRPUlwiLFwiXlwiLmNvbmNhdChuW3MuR1RMVF0sXCJcXFxccyooXCIpLmNvbmNhdChuW3MuRlVMTFBMQUlOXSxcIikkfF4kXCIpKSxpKFwiQ09NUEFSQVRPUlRSSU1cIixcIihcXFxccyopXCIuY29uY2F0KG5bcy5HVExUXSxcIlxcXFxzKihcIikuY29uY2F0KG5bcy5MT09TRVBMQUlOXSxcInxcIikuY29uY2F0KG5bcy5YUkFOR0VQTEFJTl0sXCIpXCIpLCEwKSxlLmNvbXBhcmF0b3JUcmltUmVwbGFjZT1cIiQxJDIkM1wiLGkoXCJIWVBIRU5SQU5HRVwiLFwiXlxcXFxzKihcIi5jb25jYXQobltzLlhSQU5HRVBMQUlOXSxcIilcXFxccystXFxcXHMrKFwiKS5jb25jYXQobltzLlhSQU5HRVBMQUlOXSxcIilcXFxccyokXCIpKSxpKFwiSFlQSEVOUkFOR0VMT09TRVwiLFwiXlxcXFxzKihcIi5jb25jYXQobltzLlhSQU5HRVBMQUlOTE9PU0VdLFwiKVxcXFxzKy1cXFxccysoXCIpLmNvbmNhdChuW3MuWFJBTkdFUExBSU5MT09TRV0sXCIpXFxcXHMqJFwiKSksaShcIlNUQVJcIixcIig8fD4pPz0/XFxcXHMqXFxcXCpcIiksaShcIkdURTBcIixcIl5cXFxccyo+PVxcXFxzKjBcXFxcLjBcXFxcLjBcXFxccyokXCIpLGkoXCJHVEUwUFJFXCIsXCJeXFxcXHMqPj1cXFxccyowXFxcXC4wXFxcXC4wLTBcXFxccyokXCIpfX0pLEQyPVMoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9wYXJzZS1vcHRpb25zLmpzXCIoZSxyKXtJKCk7dmFyIHU9W1wiaW5jbHVkZVByZXJlbGVhc2VcIixcImxvb3NlXCIsXCJydGxcIl0sdD1vPT5vP3R5cGVvZiBvIT1cIm9iamVjdFwiP3tsb29zZTohMH06dS5maWx0ZXIobj0+b1tuXSkucmVkdWNlKChuLHMpPT4obltzXT0hMCxuKSx7fSk6e307ci5leHBvcnRzPXR9fSksZjI9Uyh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2lkZW50aWZpZXJzLmpzXCIoZSxyKXtJKCk7dmFyIHU9L15bMC05XSskLyx0PShuLHMpPT57bGV0IGM9dS50ZXN0KG4pLGk9dS50ZXN0KHMpO3JldHVybiBjJiZpJiYobj0rbixzPStzKSxuPT09cz8wOmMmJiFpPy0xOmkmJiFjPzE6bjxzPy0xOjF9LG89KG4scyk9PnQocyxuKTtyLmV4cG9ydHM9e2NvbXBhcmVJZGVudGlmaWVyczp0LHJjb21wYXJlSWRlbnRpZmllcnM6b319fSkscDI9Uyh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2NsYXNzZXMvc2VtdmVyLmpzXCIoZSxyKXtJKCk7dmFyIHU9WmkoKSx7TUFYX0xFTkdUSDp0LE1BWF9TQUZFX0lOVEVHRVI6b309UWkoKSx7cmU6bix0OnN9PWwyKCksYz1EMigpLHtjb21wYXJlSWRlbnRpZmllcnM6aX09ZjIoKSxEPWNsYXNze2NvbnN0cnVjdG9yKGEsbCl7aWYobD1jKGwpLGEgaW5zdGFuY2VvZiBEKXtpZihhLmxvb3NlPT09ISFsLmxvb3NlJiZhLmluY2x1ZGVQcmVyZWxlYXNlPT09ISFsLmluY2x1ZGVQcmVyZWxlYXNlKXJldHVybiBhO2E9YS52ZXJzaW9ufWVsc2UgaWYodHlwZW9mIGEhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgVmVyc2lvbjogXCIuY29uY2F0KGEpKTtpZihhLmxlbmd0aD50KXRocm93IG5ldyBUeXBlRXJyb3IoXCJ2ZXJzaW9uIGlzIGxvbmdlciB0aGFuIFwiLmNvbmNhdCh0LFwiIGNoYXJhY3RlcnNcIikpO3UoXCJTZW1WZXJcIixhLGwpLHRoaXMub3B0aW9ucz1sLHRoaXMubG9vc2U9ISFsLmxvb3NlLHRoaXMuaW5jbHVkZVByZXJlbGVhc2U9ISFsLmluY2x1ZGVQcmVyZWxlYXNlO2xldCBwPWEudHJpbSgpLm1hdGNoKGwubG9vc2U/bltzLkxPT1NFXTpuW3MuRlVMTF0pO2lmKCFwKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIFZlcnNpb246IFwiLmNvbmNhdChhKSk7aWYodGhpcy5yYXc9YSx0aGlzLm1ham9yPStwWzFdLHRoaXMubWlub3I9K3BbMl0sdGhpcy5wYXRjaD0rcFszXSx0aGlzLm1ham9yPm98fHRoaXMubWFqb3I8MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBtYWpvciB2ZXJzaW9uXCIpO2lmKHRoaXMubWlub3I+b3x8dGhpcy5taW5vcjwwKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIG1pbm9yIHZlcnNpb25cIik7aWYodGhpcy5wYXRjaD5vfHx0aGlzLnBhdGNoPDApdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgcGF0Y2ggdmVyc2lvblwiKTtwWzRdP3RoaXMucHJlcmVsZWFzZT1wWzRdLnNwbGl0KFwiLlwiKS5tYXAoZD0+e2lmKC9eWzAtOV0rJC8udGVzdChkKSl7bGV0IGc9K2Q7aWYoZz49MCYmZzxvKXJldHVybiBnfXJldHVybiBkfSk6dGhpcy5wcmVyZWxlYXNlPVtdLHRoaXMuYnVpbGQ9cFs1XT9wWzVdLnNwbGl0KFwiLlwiKTpbXSx0aGlzLmZvcm1hdCgpfWZvcm1hdCgpe3JldHVybiB0aGlzLnZlcnNpb249XCJcIi5jb25jYXQodGhpcy5tYWpvcixcIi5cIikuY29uY2F0KHRoaXMubWlub3IsXCIuXCIpLmNvbmNhdCh0aGlzLnBhdGNoKSx0aGlzLnByZXJlbGVhc2UubGVuZ3RoJiYodGhpcy52ZXJzaW9uKz1cIi1cIi5jb25jYXQodGhpcy5wcmVyZWxlYXNlLmpvaW4oXCIuXCIpKSksdGhpcy52ZXJzaW9ufXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudmVyc2lvbn1jb21wYXJlKGEpe2lmKHUoXCJTZW1WZXIuY29tcGFyZVwiLHRoaXMudmVyc2lvbix0aGlzLm9wdGlvbnMsYSksIShhIGluc3RhbmNlb2YgRCkpe2lmKHR5cGVvZiBhPT1cInN0cmluZ1wiJiZhPT09dGhpcy52ZXJzaW9uKXJldHVybiAwO2E9bmV3IEQoYSx0aGlzLm9wdGlvbnMpfXJldHVybiBhLnZlcnNpb249PT10aGlzLnZlcnNpb24/MDp0aGlzLmNvbXBhcmVNYWluKGEpfHx0aGlzLmNvbXBhcmVQcmUoYSl9Y29tcGFyZU1haW4oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBEfHwoYT1uZXcgRChhLHRoaXMub3B0aW9ucykpLGkodGhpcy5tYWpvcixhLm1ham9yKXx8aSh0aGlzLm1pbm9yLGEubWlub3IpfHxpKHRoaXMucGF0Y2gsYS5wYXRjaCl9Y29tcGFyZVByZShhKXtpZihhIGluc3RhbmNlb2YgRHx8KGE9bmV3IEQoYSx0aGlzLm9wdGlvbnMpKSx0aGlzLnByZXJlbGVhc2UubGVuZ3RoJiYhYS5wcmVyZWxlYXNlLmxlbmd0aClyZXR1cm4tMTtpZighdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCYmYS5wcmVyZWxlYXNlLmxlbmd0aClyZXR1cm4gMTtpZighdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCYmIWEucHJlcmVsZWFzZS5sZW5ndGgpcmV0dXJuIDA7bGV0IGw9MDtkb3tsZXQgcD10aGlzLnByZXJlbGVhc2VbbF0sZD1hLnByZXJlbGVhc2VbbF07aWYodShcInByZXJlbGVhc2UgY29tcGFyZVwiLGwscCxkKSxwPT09dm9pZCAwJiZkPT09dm9pZCAwKXJldHVybiAwO2lmKGQ9PT12b2lkIDApcmV0dXJuIDE7aWYocD09PXZvaWQgMClyZXR1cm4tMTtpZihwPT09ZCljb250aW51ZTtyZXR1cm4gaShwLGQpfXdoaWxlKCsrbCl9Y29tcGFyZUJ1aWxkKGEpe2EgaW5zdGFuY2VvZiBEfHwoYT1uZXcgRChhLHRoaXMub3B0aW9ucykpO2xldCBsPTA7ZG97bGV0IHA9dGhpcy5idWlsZFtsXSxkPWEuYnVpbGRbbF07aWYodShcInByZXJlbGVhc2UgY29tcGFyZVwiLGwscCxkKSxwPT09dm9pZCAwJiZkPT09dm9pZCAwKXJldHVybiAwO2lmKGQ9PT12b2lkIDApcmV0dXJuIDE7aWYocD09PXZvaWQgMClyZXR1cm4tMTtpZihwPT09ZCljb250aW51ZTtyZXR1cm4gaShwLGQpfXdoaWxlKCsrbCl9aW5jKGEsbCl7c3dpdGNoKGEpe2Nhc2VcInByZW1ham9yXCI6dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD0wLHRoaXMucGF0Y2g9MCx0aGlzLm1pbm9yPTAsdGhpcy5tYWpvcisrLHRoaXMuaW5jKFwicHJlXCIsbCk7YnJlYWs7Y2FzZVwicHJlbWlub3JcIjp0aGlzLnByZXJlbGVhc2UubGVuZ3RoPTAsdGhpcy5wYXRjaD0wLHRoaXMubWlub3IrKyx0aGlzLmluYyhcInByZVwiLGwpO2JyZWFrO2Nhc2VcInByZXBhdGNoXCI6dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD0wLHRoaXMuaW5jKFwicGF0Y2hcIixsKSx0aGlzLmluYyhcInByZVwiLGwpO2JyZWFrO2Nhc2VcInByZXJlbGVhc2VcIjp0aGlzLnByZXJlbGVhc2UubGVuZ3RoPT09MCYmdGhpcy5pbmMoXCJwYXRjaFwiLGwpLHRoaXMuaW5jKFwicHJlXCIsbCk7YnJlYWs7Y2FzZVwibWFqb3JcIjoodGhpcy5taW5vciE9PTB8fHRoaXMucGF0Y2ghPT0wfHx0aGlzLnByZXJlbGVhc2UubGVuZ3RoPT09MCkmJnRoaXMubWFqb3IrKyx0aGlzLm1pbm9yPTAsdGhpcy5wYXRjaD0wLHRoaXMucHJlcmVsZWFzZT1bXTticmVhaztjYXNlXCJtaW5vclwiOih0aGlzLnBhdGNoIT09MHx8dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD09PTApJiZ0aGlzLm1pbm9yKyssdGhpcy5wYXRjaD0wLHRoaXMucHJlcmVsZWFzZT1bXTticmVhaztjYXNlXCJwYXRjaFwiOnRoaXMucHJlcmVsZWFzZS5sZW5ndGg9PT0wJiZ0aGlzLnBhdGNoKyssdGhpcy5wcmVyZWxlYXNlPVtdO2JyZWFrO2Nhc2VcInByZVwiOmlmKHRoaXMucHJlcmVsZWFzZS5sZW5ndGg9PT0wKXRoaXMucHJlcmVsZWFzZT1bMF07ZWxzZXtsZXQgcD10aGlzLnByZXJlbGVhc2UubGVuZ3RoO2Zvcig7LS1wPj0wOyl0eXBlb2YgdGhpcy5wcmVyZWxlYXNlW3BdPT1cIm51bWJlclwiJiYodGhpcy5wcmVyZWxlYXNlW3BdKysscD0tMik7cD09PS0xJiZ0aGlzLnByZXJlbGVhc2UucHVzaCgwKX1sJiYoaSh0aGlzLnByZXJlbGVhc2VbMF0sbCk9PT0wP2lzTmFOKHRoaXMucHJlcmVsZWFzZVsxXSkmJih0aGlzLnByZXJlbGVhc2U9W2wsMF0pOnRoaXMucHJlcmVsZWFzZT1bbCwwXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGluY3JlbWVudCBhcmd1bWVudDogXCIuY29uY2F0KGEpKX1yZXR1cm4gdGhpcy5mb3JtYXQoKSx0aGlzLnJhdz10aGlzLnZlcnNpb24sdGhpc319O3IuZXhwb3J0cz1EfX0pLHZ1PVMoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29tcGFyZS5qc1wiKGUscil7SSgpO3ZhciB1PXAyKCksdD0obyxuLHMpPT5uZXcgdShvLHMpLmNvbXBhcmUobmV3IHUobixzKSk7ci5leHBvcnRzPXR9fSksZDI9Uyh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdC5qc1wiKGUscil7SSgpO3ZhciB1PXZ1KCksdD0obyxuLHMpPT51KG8sbixzKTwwO3IuZXhwb3J0cz10fX0pLGgyPVMoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvZ3RlLmpzXCIoZSxyKXtJKCk7dmFyIHU9dnUoKSx0PShvLG4scyk9PnUobyxuLHMpPj0wO3IuZXhwb3J0cz10fX0pLHYyPVMoe1wic3JjL3V0aWxzL2FycmF5aWZ5LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPSh1LHQpPT5PYmplY3QuZW50cmllcyh1KS5tYXAobz0+e2xldFtuLHNdPW87cmV0dXJuIE9iamVjdC5hc3NpZ24oe1t0XTpufSxzKX0pfX0pLG0yPVMoe1wicGFja2FnZS5qc29uXCIoZSxyKXtyLmV4cG9ydHM9e3ZlcnNpb246XCIyLjcuMVwifX19KSxFMj1TKHtcIm5vZGVfbW9kdWxlcy9vdXRkZW50L2xpYi9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUub3V0ZGVudD12b2lkIDA7ZnVuY3Rpb24gdSgpe2Zvcih2YXIgZj1bXSxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylmW2JdPWFyZ3VtZW50c1tiXX1mdW5jdGlvbiB0KCl7cmV0dXJuIHR5cGVvZiBXZWFrTWFwPFwidVwiP25ldyBXZWFrTWFwOm8oKX1mdW5jdGlvbiBvKCl7cmV0dXJue2FkZDp1LGRlbGV0ZTp1LGdldDp1LHNldDp1LGhhczpmdW5jdGlvbihmKXtyZXR1cm4hMX19fXZhciBuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscz1mdW5jdGlvbihmLGIpe3JldHVybiBuLmNhbGwoZixiKX07ZnVuY3Rpb24gYyhmLGIpe2Zvcih2YXIgdiBpbiBiKXMoYix2KSYmKGZbdl09Ylt2XSk7cmV0dXJuIGZ9dmFyIGk9L15bIFxcdF0qKD86XFxyXFxufFxccnxcXG4pLyxEPS8oPzpcXHJcXG58XFxyfFxcbilbIFxcdF0qJC8sYT0vXig/OltcXHJcXG5dfCQpLyxsPS8oPzpcXHJcXG58XFxyfFxcbikoWyBcXHRdKikoPzpbXiBcXHRcXHJcXG5dfCQpLyxwPS9eWyBcXHRdKltcXHJcXG5dWyBcXHRcXHJcXG5dKiQvO2Z1bmN0aW9uIGQoZixiLHYpe3ZhciBoPTAsbT1mWzBdLm1hdGNoKGwpO20mJihoPW1bMV0ubGVuZ3RoKTt2YXIgQz1cIihcXFxcclxcXFxufFxcXFxyfFxcXFxuKS57MCxcIitoK1wifVwiLEI9bmV3IFJlZ0V4cChDLFwiZ1wiKTtiJiYoZj1mLnNsaWNlKDEpKTt2YXIgcT12Lm5ld2xpbmUsTD12LnRyaW1MZWFkaW5nTmV3bGluZSx3PXYudHJpbVRyYWlsaW5nTmV3bGluZSxPPXR5cGVvZiBxPT1cInN0cmluZ1wiLFQ9Zi5sZW5ndGgsUD1mLm1hcChmdW5jdGlvbihBLGope3JldHVybiBBPUEucmVwbGFjZShCLFwiJDFcIiksaj09PTAmJkwmJihBPUEucmVwbGFjZShpLFwiXCIpKSxqPT09VC0xJiZ3JiYoQT1BLnJlcGxhY2UoRCxcIlwiKSksTyYmKEE9QS5yZXBsYWNlKC9cXHJcXG58XFxufFxcci9nLGZ1bmN0aW9uKCQpe3JldHVybiBxfSkpLEF9KTtyZXR1cm4gUH1mdW5jdGlvbiBnKGYsYil7Zm9yKHZhciB2PVwiXCIsaD0wLG09Zi5sZW5ndGg7aDxtO2grKyl2Kz1mW2hdLGg8bS0xJiYodis9YltoXSk7cmV0dXJuIHZ9ZnVuY3Rpb24gRihmKXtyZXR1cm4gcyhmLFwicmF3XCIpJiZzKGYsXCJsZW5ndGhcIil9ZnVuY3Rpb24gRShmKXt2YXIgYj10KCksdj10KCk7ZnVuY3Rpb24gaChDKXtmb3IodmFyIEI9W10scT0xO3E8YXJndW1lbnRzLmxlbmd0aDtxKyspQltxLTFdPWFyZ3VtZW50c1txXTtpZihGKEMpKXt2YXIgTD1DLHc9KEJbMF09PT1ofHxCWzBdPT09eCkmJnAudGVzdChMWzBdKSYmYS50ZXN0KExbMV0pLE89dz92OmIsVD1PLmdldChMKTtpZihUfHwoVD1kKEwsdyxmKSxPLnNldChMLFQpKSxCLmxlbmd0aD09PTApcmV0dXJuIFRbMF07dmFyIFA9ZyhULHc/Qi5zbGljZSgxKTpCKTtyZXR1cm4gUH1lbHNlIHJldHVybiBFKGMoYyh7fSxmKSxDfHx7fSkpfXZhciBtPWMoaCx7c3RyaW5nOmZ1bmN0aW9uKEMpe3JldHVybiBkKFtDXSwhMSxmKVswXX19KTtyZXR1cm4gbX12YXIgeD1FKHt0cmltTGVhZGluZ05ld2xpbmU6ITAsdHJpbVRyYWlsaW5nTmV3bGluZTohMH0pO2lmKGUub3V0ZGVudD14LGUuZGVmYXVsdD14LHR5cGVvZiByPFwidVwiKXRyeXtyLmV4cG9ydHM9eCxPYmplY3QuZGVmaW5lUHJvcGVydHkoeCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx4LmRlZmF1bHQ9eCx4Lm91dGRlbnQ9eH1jYXRjaHt9fX0pLEMyPVMoe1wic3JjL21haW4vY29yZS1vcHRpb25zLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFye291dGRlbnQ6dX09RTIoKSx0PVwiQ29uZmlnXCIsbz1cIkVkaXRvclwiLG49XCJGb3JtYXRcIixzPVwiT3RoZXJcIixjPVwiT3V0cHV0XCIsaT1cIkdsb2JhbFwiLEQ9XCJTcGVjaWFsXCIsYT17Y3Vyc29yT2Zmc2V0OntzaW5jZTpcIjEuNC4wXCIsY2F0ZWdvcnk6RCx0eXBlOlwiaW50XCIsZGVmYXVsdDotMSxyYW5nZTp7c3RhcnQ6LTEsZW5kOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzdGVwOjF9LGRlc2NyaXB0aW9uOnUoeWl8fCh5aT1qZShbYFxuICAgICAgUHJpbnQgKHRvIHN0ZGVycikgd2hlcmUgYSBjdXJzb3IgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIHdvdWxkIG1vdmUgdG8gYWZ0ZXIgZm9ybWF0dGluZy5cbiAgICAgIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1yYW5nZS1zdGFydCBhbmQgLS1yYW5nZS1lbmQuXG4gICAgYF0pKSksY2xpQ2F0ZWdvcnk6b30sZW5kT2ZMaW5lOntzaW5jZTpcIjEuMTUuMFwiLGNhdGVnb3J5OmksdHlwZTpcImNob2ljZVwiLGRlZmF1bHQ6W3tzaW5jZTpcIjEuMTUuMFwiLHZhbHVlOlwiYXV0b1wifSx7c2luY2U6XCIyLjAuMFwiLHZhbHVlOlwibGZcIn1dLGRlc2NyaXB0aW9uOlwiV2hpY2ggZW5kIG9mIGxpbmUgY2hhcmFjdGVycyB0byBhcHBseS5cIixjaG9pY2VzOlt7dmFsdWU6XCJsZlwiLGRlc2NyaXB0aW9uOlwiTGluZSBGZWVkIG9ubHkgKFxcXFxuKSwgY29tbW9uIG9uIExpbnV4IGFuZCBtYWNPUyBhcyB3ZWxsIGFzIGluc2lkZSBnaXQgcmVwb3NcIn0se3ZhbHVlOlwiY3JsZlwiLGRlc2NyaXB0aW9uOlwiQ2FycmlhZ2UgUmV0dXJuICsgTGluZSBGZWVkIGNoYXJhY3RlcnMgKFxcXFxyXFxcXG4pLCBjb21tb24gb24gV2luZG93c1wifSx7dmFsdWU6XCJjclwiLGRlc2NyaXB0aW9uOlwiQ2FycmlhZ2UgUmV0dXJuIGNoYXJhY3RlciBvbmx5IChcXFxcciksIHVzZWQgdmVyeSByYXJlbHlcIn0se3ZhbHVlOlwiYXV0b1wiLGRlc2NyaXB0aW9uOnUoQml8fChCaT1qZShbYFxuICAgICAgICAgIE1haW50YWluIGV4aXN0aW5nXG4gICAgICAgICAgKG1peGVkIHZhbHVlcyB3aXRoaW4gb25lIGZpbGUgYXJlIG5vcm1hbGlzZWQgYnkgbG9va2luZyBhdCB3aGF0J3MgdXNlZCBhZnRlciB0aGUgZmlyc3QgbGluZSlcbiAgICAgICAgYF0pKSl9XX0sZmlsZXBhdGg6e3NpbmNlOlwiMS40LjBcIixjYXRlZ29yeTpELHR5cGU6XCJwYXRoXCIsZGVzY3JpcHRpb246XCJTcGVjaWZ5IHRoZSBpbnB1dCBmaWxlcGF0aC4gVGhpcyB3aWxsIGJlIHVzZWQgdG8gZG8gcGFyc2VyIGluZmVyZW5jZS5cIixjbGlOYW1lOlwic3RkaW4tZmlsZXBhdGhcIixjbGlDYXRlZ29yeTpzLGNsaURlc2NyaXB0aW9uOlwiUGF0aCB0byB0aGUgZmlsZSB0byBwcmV0ZW5kIHRoYXQgc3RkaW4gY29tZXMgZnJvbS5cIn0saW5zZXJ0UHJhZ21hOntzaW5jZTpcIjEuOC4wXCIsY2F0ZWdvcnk6RCx0eXBlOlwiYm9vbGVhblwiLGRlZmF1bHQ6ITEsZGVzY3JpcHRpb246XCJJbnNlcnQgQGZvcm1hdCBwcmFnbWEgaW50byBmaWxlJ3MgZmlyc3QgZG9jYmxvY2sgY29tbWVudC5cIixjbGlDYXRlZ29yeTpzfSxwYXJzZXI6e3NpbmNlOlwiMC4wLjEwXCIsY2F0ZWdvcnk6aSx0eXBlOlwiY2hvaWNlXCIsZGVmYXVsdDpbe3NpbmNlOlwiMC4wLjEwXCIsdmFsdWU6XCJiYWJ5bG9uXCJ9LHtzaW5jZTpcIjEuMTMuMFwiLHZhbHVlOnZvaWQgMH1dLGRlc2NyaXB0aW9uOlwiV2hpY2ggcGFyc2VyIHRvIHVzZS5cIixleGNlcHRpb246bD0+dHlwZW9mIGw9PVwic3RyaW5nXCJ8fHR5cGVvZiBsPT1cImZ1bmN0aW9uXCIsY2hvaWNlczpbe3ZhbHVlOlwiZmxvd1wiLGRlc2NyaXB0aW9uOlwiRmxvd1wifSx7dmFsdWU6XCJiYWJlbFwiLHNpbmNlOlwiMS4xNi4wXCIsZGVzY3JpcHRpb246XCJKYXZhU2NyaXB0XCJ9LHt2YWx1ZTpcImJhYmVsLWZsb3dcIixzaW5jZTpcIjEuMTYuMFwiLGRlc2NyaXB0aW9uOlwiRmxvd1wifSx7dmFsdWU6XCJiYWJlbC10c1wiLHNpbmNlOlwiMi4wLjBcIixkZXNjcmlwdGlvbjpcIlR5cGVTY3JpcHRcIn0se3ZhbHVlOlwidHlwZXNjcmlwdFwiLHNpbmNlOlwiMS40LjBcIixkZXNjcmlwdGlvbjpcIlR5cGVTY3JpcHRcIn0se3ZhbHVlOlwiYWNvcm5cIixzaW5jZTpcIjIuNi4wXCIsZGVzY3JpcHRpb246XCJKYXZhU2NyaXB0XCJ9LHt2YWx1ZTpcImVzcHJlZVwiLHNpbmNlOlwiMi4yLjBcIixkZXNjcmlwdGlvbjpcIkphdmFTY3JpcHRcIn0se3ZhbHVlOlwibWVyaXlhaFwiLHNpbmNlOlwiMi4yLjBcIixkZXNjcmlwdGlvbjpcIkphdmFTY3JpcHRcIn0se3ZhbHVlOlwiY3NzXCIsc2luY2U6XCIxLjcuMVwiLGRlc2NyaXB0aW9uOlwiQ1NTXCJ9LHt2YWx1ZTpcImxlc3NcIixzaW5jZTpcIjEuNy4xXCIsZGVzY3JpcHRpb246XCJMZXNzXCJ9LHt2YWx1ZTpcInNjc3NcIixzaW5jZTpcIjEuNy4xXCIsZGVzY3JpcHRpb246XCJTQ1NTXCJ9LHt2YWx1ZTpcImpzb25cIixzaW5jZTpcIjEuNS4wXCIsZGVzY3JpcHRpb246XCJKU09OXCJ9LHt2YWx1ZTpcImpzb241XCIsc2luY2U6XCIxLjEzLjBcIixkZXNjcmlwdGlvbjpcIkpTT041XCJ9LHt2YWx1ZTpcImpzb24tc3RyaW5naWZ5XCIsc2luY2U6XCIxLjEzLjBcIixkZXNjcmlwdGlvbjpcIkpTT04uc3RyaW5naWZ5XCJ9LHt2YWx1ZTpcImdyYXBocWxcIixzaW5jZTpcIjEuNS4wXCIsZGVzY3JpcHRpb246XCJHcmFwaFFMXCJ9LHt2YWx1ZTpcIm1hcmtkb3duXCIsc2luY2U6XCIxLjguMFwiLGRlc2NyaXB0aW9uOlwiTWFya2Rvd25cIn0se3ZhbHVlOlwibWR4XCIsc2luY2U6XCIxLjE1LjBcIixkZXNjcmlwdGlvbjpcIk1EWFwifSx7dmFsdWU6XCJ2dWVcIixzaW5jZTpcIjEuMTAuMFwiLGRlc2NyaXB0aW9uOlwiVnVlXCJ9LHt2YWx1ZTpcInlhbWxcIixzaW5jZTpcIjEuMTQuMFwiLGRlc2NyaXB0aW9uOlwiWUFNTFwifSx7dmFsdWU6XCJnbGltbWVyXCIsc2luY2U6XCIyLjMuMFwiLGRlc2NyaXB0aW9uOlwiRW1iZXIgLyBIYW5kbGViYXJzXCJ9LHt2YWx1ZTpcImh0bWxcIixzaW5jZTpcIjEuMTUuMFwiLGRlc2NyaXB0aW9uOlwiSFRNTFwifSx7dmFsdWU6XCJhbmd1bGFyXCIsc2luY2U6XCIxLjE1LjBcIixkZXNjcmlwdGlvbjpcIkFuZ3VsYXJcIn0se3ZhbHVlOlwibHdjXCIsc2luY2U6XCIxLjE3LjBcIixkZXNjcmlwdGlvbjpcIkxpZ2h0bmluZyBXZWIgQ29tcG9uZW50c1wifV19LHBsdWdpbnM6e3NpbmNlOlwiMS4xMC4wXCIsdHlwZTpcInBhdGhcIixhcnJheTohMCxkZWZhdWx0Olt7dmFsdWU6W119XSxjYXRlZ29yeTppLGRlc2NyaXB0aW9uOlwiQWRkIGEgcGx1Z2luLiBNdWx0aXBsZSBwbHVnaW5zIGNhbiBiZSBwYXNzZWQgYXMgc2VwYXJhdGUgYC0tcGx1Z2luYHMuXCIsZXhjZXB0aW9uOmw9PnR5cGVvZiBsPT1cInN0cmluZ1wifHx0eXBlb2YgbD09XCJvYmplY3RcIixjbGlOYW1lOlwicGx1Z2luXCIsY2xpQ2F0ZWdvcnk6dH0scGx1Z2luU2VhcmNoRGlyczp7c2luY2U6XCIxLjEzLjBcIix0eXBlOlwicGF0aFwiLGFycmF5OiEwLGRlZmF1bHQ6W3t2YWx1ZTpbXX1dLGNhdGVnb3J5OmksZGVzY3JpcHRpb246dSh3aXx8KHdpPWplKFtgXG4gICAgICBDdXN0b20gZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgcHJldHRpZXIgcGx1Z2lucyBpbiBub2RlX21vZHVsZXMgc3ViZGlyZWN0b3J5LlxuICAgICAgT3ZlcnJpZGVzIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiBwbHVnaW5zIGFyZSBzZWFyY2hlZCByZWxhdGl2ZWx5IHRvIHRoZSBsb2NhdGlvbiBvZiBQcmV0dGllci5cbiAgICAgIE11bHRpcGxlIHZhbHVlcyBhcmUgYWNjZXB0ZWQuXG4gICAgYF0pKSksZXhjZXB0aW9uOmw9PnR5cGVvZiBsPT1cInN0cmluZ1wifHx0eXBlb2YgbD09XCJvYmplY3RcIixjbGlOYW1lOlwicGx1Z2luLXNlYXJjaC1kaXJcIixjbGlDYXRlZ29yeTp0fSxwcmludFdpZHRoOntzaW5jZTpcIjAuMC4wXCIsY2F0ZWdvcnk6aSx0eXBlOlwiaW50XCIsZGVmYXVsdDo4MCxkZXNjcmlwdGlvbjpcIlRoZSBsaW5lIGxlbmd0aCB3aGVyZSBQcmV0dGllciB3aWxsIHRyeSB3cmFwLlwiLHJhbmdlOntzdGFydDowLGVuZDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksc3RlcDoxfX0scmFuZ2VFbmQ6e3NpbmNlOlwiMS40LjBcIixjYXRlZ29yeTpELHR5cGU6XCJpbnRcIixkZWZhdWx0Ok51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyYW5nZTp7c3RhcnQ6MCxlbmQ6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHN0ZXA6MX0sZGVzY3JpcHRpb246dShraXx8KGtpPWplKFtgXG4gICAgICBGb3JtYXQgY29kZSBlbmRpbmcgYXQgYSBnaXZlbiBjaGFyYWN0ZXIgb2Zmc2V0IChleGNsdXNpdmUpLlxuICAgICAgVGhlIHJhbmdlIHdpbGwgZXh0ZW5kIGZvcndhcmRzIHRvIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGVkIHN0YXRlbWVudC5cbiAgICAgIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1jdXJzb3Itb2Zmc2V0LlxuICAgIGBdKSkpLGNsaUNhdGVnb3J5Om99LHJhbmdlU3RhcnQ6e3NpbmNlOlwiMS40LjBcIixjYXRlZ29yeTpELHR5cGU6XCJpbnRcIixkZWZhdWx0OjAscmFuZ2U6e3N0YXJ0OjAsZW5kOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzdGVwOjF9LGRlc2NyaXB0aW9uOnUocWl8fChxaT1qZShbYFxuICAgICAgRm9ybWF0IGNvZGUgc3RhcnRpbmcgYXQgYSBnaXZlbiBjaGFyYWN0ZXIgb2Zmc2V0LlxuICAgICAgVGhlIHJhbmdlIHdpbGwgZXh0ZW5kIGJhY2t3YXJkcyB0byB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IGxpbmUgY29udGFpbmluZyB0aGUgc2VsZWN0ZWQgc3RhdGVtZW50LlxuICAgICAgVGhpcyBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCAtLWN1cnNvci1vZmZzZXQuXG4gICAgYF0pKSksY2xpQ2F0ZWdvcnk6b30scmVxdWlyZVByYWdtYTp7c2luY2U6XCIxLjcuMFwiLGNhdGVnb3J5OkQsdHlwZTpcImJvb2xlYW5cIixkZWZhdWx0OiExLGRlc2NyaXB0aW9uOnUoX2l8fChfaT1qZShbYFxuICAgICAgUmVxdWlyZSBlaXRoZXIgJ0BwcmV0dGllcicgb3IgJ0Bmb3JtYXQnIHRvIGJlIHByZXNlbnQgaW4gdGhlIGZpbGUncyBmaXJzdCBkb2NibG9jayBjb21tZW50XG4gICAgICBpbiBvcmRlciBmb3IgaXQgdG8gYmUgZm9ybWF0dGVkLlxuICAgIGBdKSkpLGNsaUNhdGVnb3J5OnN9LHRhYldpZHRoOnt0eXBlOlwiaW50XCIsY2F0ZWdvcnk6aSxkZWZhdWx0OjIsZGVzY3JpcHRpb246XCJOdW1iZXIgb2Ygc3BhY2VzIHBlciBpbmRlbnRhdGlvbiBsZXZlbC5cIixyYW5nZTp7c3RhcnQ6MCxlbmQ6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHN0ZXA6MX19LHVzZVRhYnM6e3NpbmNlOlwiMS4wLjBcIixjYXRlZ29yeTppLHR5cGU6XCJib29sZWFuXCIsZGVmYXVsdDohMSxkZXNjcmlwdGlvbjpcIkluZGVudCB3aXRoIHRhYnMgaW5zdGVhZCBvZiBzcGFjZXMuXCJ9LGVtYmVkZGVkTGFuZ3VhZ2VGb3JtYXR0aW5nOntzaW5jZTpcIjIuMS4wXCIsY2F0ZWdvcnk6aSx0eXBlOlwiY2hvaWNlXCIsZGVmYXVsdDpbe3NpbmNlOlwiMi4xLjBcIix2YWx1ZTpcImF1dG9cIn1dLGRlc2NyaXB0aW9uOlwiQ29udHJvbCBob3cgUHJldHRpZXIgZm9ybWF0cyBxdW90ZWQgY29kZSBlbWJlZGRlZCBpbiB0aGUgZmlsZS5cIixjaG9pY2VzOlt7dmFsdWU6XCJhdXRvXCIsZGVzY3JpcHRpb246XCJGb3JtYXQgZW1iZWRkZWQgY29kZSBpZiBQcmV0dGllciBjYW4gYXV0b21hdGljYWxseSBpZGVudGlmeSBpdC5cIn0se3ZhbHVlOlwib2ZmXCIsZGVzY3JpcHRpb246XCJOZXZlciBhdXRvbWF0aWNhbGx5IGZvcm1hdCBlbWJlZGRlZCBjb2RlLlwifV19fTtyLmV4cG9ydHM9e0NBVEVHT1JZX0NPTkZJRzp0LENBVEVHT1JZX0VESVRPUjpvLENBVEVHT1JZX0ZPUk1BVDpuLENBVEVHT1JZX09USEVSOnMsQ0FURUdPUllfT1VUUFVUOmMsQ0FURUdPUllfR0xPQkFMOmksQ0FURUdPUllfU1BFQ0lBTDpELG9wdGlvbnM6YX19fSksZzI9Uyh7XCJzcmMvbWFpbi9zdXBwb3J0LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9e2NvbXBhcmU6dnUoKSxsdDpkMigpLGd0ZTpoMigpfSx0PXYyKCksbz1tMigpLnZlcnNpb24sbj1DMigpLm9wdGlvbnM7ZnVuY3Rpb24gcygpe2xldHtwbHVnaW5zOmk9W10sc2hvd1VucmVsZWFzZWQ6RD0hMSxzaG93RGVwcmVjYXRlZDphPSExLHNob3dJbnRlcm5hbDpsPSExfT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30scD1vLnNwbGl0KFwiLVwiLDEpWzBdLGQ9aS5mbGF0TWFwKGY9PmYubGFuZ3VhZ2VzfHxbXSkuZmlsdGVyKEYpLGc9dChPYmplY3QuYXNzaWduKHt9LC4uLmkubWFwKGY9PntsZXR7b3B0aW9uczpifT1mO3JldHVybiBifSksbiksXCJuYW1lXCIpLmZpbHRlcihmPT5GKGYpJiZFKGYpKS5zb3J0KChmLGIpPT5mLm5hbWU9PT1iLm5hbWU/MDpmLm5hbWU8Yi5uYW1lPy0xOjEpLm1hcCh4KS5tYXAoZj0+e2Y9T2JqZWN0LmFzc2lnbih7fSxmKSxBcnJheS5pc0FycmF5KGYuZGVmYXVsdCkmJihmLmRlZmF1bHQ9Zi5kZWZhdWx0Lmxlbmd0aD09PTE/Zi5kZWZhdWx0WzBdLnZhbHVlOmYuZGVmYXVsdC5maWx0ZXIoRikuc29ydCgodixoKT0+dS5jb21wYXJlKGguc2luY2Usdi5zaW5jZSkpWzBdLnZhbHVlKSxBcnJheS5pc0FycmF5KGYuY2hvaWNlcykmJihmLmNob2ljZXM9Zi5jaG9pY2VzLmZpbHRlcih2PT5GKHYpJiZFKHYpKSxmLm5hbWU9PT1cInBhcnNlclwiJiZjKGYsZCxpKSk7bGV0IGI9T2JqZWN0LmZyb21FbnRyaWVzKGkuZmlsdGVyKHY9PnYuZGVmYXVsdE9wdGlvbnMmJnYuZGVmYXVsdE9wdGlvbnNbZi5uYW1lXSE9PXZvaWQgMCkubWFwKHY9Plt2Lm5hbWUsdi5kZWZhdWx0T3B0aW9uc1tmLm5hbWVdXSkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZikse30se3BsdWdpbkRlZmF1bHRzOmJ9KX0pO3JldHVybntsYW5ndWFnZXM6ZCxvcHRpb25zOmd9O2Z1bmN0aW9uIEYoZil7cmV0dXJuIER8fCEoXCJzaW5jZVwiaW4gZil8fGYuc2luY2UmJnUuZ3RlKHAsZi5zaW5jZSl9ZnVuY3Rpb24gRShmKXtyZXR1cm4gYXx8IShcImRlcHJlY2F0ZWRcImluIGYpfHxmLmRlcHJlY2F0ZWQmJnUubHQocCxmLmRlcHJlY2F0ZWQpfWZ1bmN0aW9uIHgoZil7aWYobClyZXR1cm4gZjtsZXR7Y2xpTmFtZTpiLGNsaUNhdGVnb3J5OnYsY2xpRGVzY3JpcHRpb246aH09ZjtyZXR1cm4gcWwoZixrbCl9fWZ1bmN0aW9uIGMoaSxELGEpe2xldCBsPW5ldyBTZXQoaS5jaG9pY2VzLm1hcChwPT5wLnZhbHVlKSk7Zm9yKGxldCBwIG9mIEQpaWYocC5wYXJzZXJzKXtmb3IobGV0IGQgb2YgcC5wYXJzZXJzKWlmKCFsLmhhcyhkKSl7bC5hZGQoZCk7bGV0IGc9YS5maW5kKEU9PkUucGFyc2VycyYmRS5wYXJzZXJzW2RdKSxGPXAubmFtZTtnJiZnLm5hbWUmJihGKz1cIiAocGx1Z2luOiBcIi5jb25jYXQoZy5uYW1lLFwiKVwiKSksaS5jaG9pY2VzLnB1c2goe3ZhbHVlOmQsZGVzY3JpcHRpb246Rn0pfX19ci5leHBvcnRzPXtnZXRTdXBwb3J0SW5mbzpzfX19KSxGMj1TKHtcInNyYy91dGlscy9pcy1ub24tZW1wdHktYXJyYXkuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTtmdW5jdGlvbiB1KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD4wfXIuZXhwb3J0cz11fX0pO2Z1bmN0aW9uIEEyKCl7bGV0e29ubHlGaXJzdDplPSExfT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30scj1bXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiXS5qb2luKFwifFwiKTtyZXR1cm4gbmV3IFJlZ0V4cChyLGU/dm9pZCAwOlwiZ1wiKX12YXIgeDI9UGUoe1wibm9kZV9tb2R1bGVzL3N0cmlwLWFuc2kvbm9kZV9tb2R1bGVzL2Fuc2ktcmVnZXgvaW5kZXguanNcIigpe0koKX19KTtmdW5jdGlvbiBiMihlKXtpZih0eXBlb2YgZSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBgc3RyaW5nYCwgZ290IGBcIi5jb25jYXQodHlwZW9mIGUsXCJgXCIpKTtyZXR1cm4gZS5yZXBsYWNlKEEyKCksXCJcIil9dmFyIHkyPVBlKHtcIm5vZGVfbW9kdWxlcy9zdHJpcC1hbnNpL2luZGV4LmpzXCIoKXtJKCkseDIoKX19KTtmdW5jdGlvbiBCMihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT9lPj00MzUyJiYoZTw9NDQ0N3x8ZT09PTkwMDF8fGU9PT05MDAyfHwxMTkwNDw9ZSYmZTw9MTI4NzEmJmUhPT0xMjM1MXx8MTI4ODA8PWUmJmU8PTE5OTAzfHwxOTk2ODw9ZSYmZTw9NDIxODJ8fDQzMzYwPD1lJiZlPD00MzM4OHx8NDQwMzI8PWUmJmU8PTU1MjAzfHw2Mzc0NDw9ZSYmZTw9NjQyNTV8fDY1MDQwPD1lJiZlPD02NTA0OXx8NjUwNzI8PWUmJmU8PTY1MTMxfHw2NTI4MTw9ZSYmZTw9NjUzNzZ8fDY1NTA0PD1lJiZlPD02NTUxMHx8MTEwNTkyPD1lJiZlPD0xMTA1OTN8fDEyNzQ4ODw9ZSYmZTw9MTI3NTY5fHwxMzEwNzI8PWUmJmU8PTI2MjE0MSk6ITF9dmFyIHcyPVBlKHtcIm5vZGVfbW9kdWxlcy9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC9pbmRleC5qc1wiKCl7SSgpfX0pLGsyPVMoe1wibm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCksci5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ319fSksZWE9e307TGkoZWEse2RlZmF1bHQ6KCk9PnEyfSk7ZnVuY3Rpb24gcTIoZSl7aWYodHlwZW9mIGUhPVwic3RyaW5nXCJ8fGUubGVuZ3RoPT09MHx8KGU9YjIoZSksZS5sZW5ndGg9PT0wKSlyZXR1cm4gMDtlPWUucmVwbGFjZSgoMCxyYS5kZWZhdWx0KSgpLFwiICBcIik7bGV0IHI9MDtmb3IobGV0IHU9MDt1PGUubGVuZ3RoO3UrKyl7bGV0IHQ9ZS5jb2RlUG9pbnRBdCh1KTt0PD0zMXx8dD49MTI3JiZ0PD0xNTl8fHQ+PTc2OCYmdDw9ODc5fHwodD42NTUzNSYmdSsrLHIrPUIyKHQpPzI6MSl9cmV0dXJuIHJ9dmFyIHJhLF8yPVBlKHtcIm5vZGVfbW9kdWxlcy9zdHJpbmctd2lkdGgvaW5kZXguanNcIigpe0koKSx5MigpLHcyKCkscmE9TmwoazIoKSl9fSksTzI9Uyh7XCJzcmMvdXRpbHMvZ2V0LXN0cmluZy13aWR0aC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PShfMigpLGppKGVhKSkuZGVmYXVsdCx0PS9bXlxceDIwLVxceDdGXS87ZnVuY3Rpb24gbyhuKXtyZXR1cm4gbj90LnRlc3Qobik/dShuKTpuLmxlbmd0aDowfXIuZXhwb3J0cz1vfX0pLG11PVMoe1wic3JjL3V0aWxzL3RleHQvc2tpcC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO2Z1bmN0aW9uIHUoYyl7cmV0dXJuKGksRCxhKT0+e2xldCBsPWEmJmEuYmFja3dhcmRzO2lmKEQ9PT0hMSlyZXR1cm4hMTtsZXR7bGVuZ3RoOnB9PWksZD1EO2Zvcig7ZD49MCYmZDxwOyl7bGV0IGc9aS5jaGFyQXQoZCk7aWYoYyBpbnN0YW5jZW9mIFJlZ0V4cCl7aWYoIWMudGVzdChnKSlyZXR1cm4gZH1lbHNlIGlmKCFjLmluY2x1ZGVzKGcpKXJldHVybiBkO2w/ZC0tOmQrK31yZXR1cm4gZD09PS0xfHxkPT09cD9kOiExfX12YXIgdD11KC9cXHMvKSxvPXUoXCIgXHRcIiksbj11KFwiLDsgXHRcIikscz11KC9bXlxcblxccl0vKTtyLmV4cG9ydHM9e3NraXBXaGl0ZXNwYWNlOnQsc2tpcFNwYWNlczpvLHNraXBUb0xpbmVFbmQ6bixza2lwRXZlcnl0aGluZ0J1dE5ld0xpbmU6c319fSksdWE9Uyh7XCJzcmMvdXRpbHMvdGV4dC9za2lwLWlubGluZS1jb21tZW50LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7ZnVuY3Rpb24gdSh0LG8pe2lmKG89PT0hMSlyZXR1cm4hMTtpZih0LmNoYXJBdChvKT09PVwiL1wiJiZ0LmNoYXJBdChvKzEpPT09XCIqXCIpe2ZvcihsZXQgbj1vKzI7bjx0Lmxlbmd0aDsrK24paWYodC5jaGFyQXQobik9PT1cIipcIiYmdC5jaGFyQXQobisxKT09PVwiL1wiKXJldHVybiBuKzJ9cmV0dXJuIG99ci5leHBvcnRzPXV9fSksdGE9Uyh7XCJzcmMvdXRpbHMvdGV4dC9za2lwLXRyYWlsaW5nLWNvbW1lbnQuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXJ7c2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lOnV9PW11KCk7ZnVuY3Rpb24gdChvLG4pe3JldHVybiBuPT09ITE/ITE6by5jaGFyQXQobik9PT1cIi9cIiYmby5jaGFyQXQobisxKT09PVwiL1wiP3UobyxuKTpufXIuZXhwb3J0cz10fX0pLG5hPVMoe1wic3JjL3V0aWxzL3RleHQvc2tpcC1uZXdsaW5lLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7ZnVuY3Rpb24gdSh0LG8sbil7bGV0IHM9biYmbi5iYWNrd2FyZHM7aWYobz09PSExKXJldHVybiExO2xldCBjPXQuY2hhckF0KG8pO2lmKHMpe2lmKHQuY2hhckF0KG8tMSk9PT1cIlxcclwiJiZjPT09YFxuYClyZXR1cm4gby0yO2lmKGM9PT1gXG5gfHxjPT09XCJcXHJcInx8Yz09PVwiXFx1MjAyOFwifHxjPT09XCJcXHUyMDI5XCIpcmV0dXJuIG8tMX1lbHNle2lmKGM9PT1cIlxcclwiJiZ0LmNoYXJBdChvKzEpPT09YFxuYClyZXR1cm4gbysyO2lmKGM9PT1gXG5gfHxjPT09XCJcXHJcInx8Yz09PVwiXFx1MjAyOFwifHxjPT09XCJcXHUyMDI5XCIpcmV0dXJuIG8rMX1yZXR1cm4gb31yLmV4cG9ydHM9dX19KSxJMj1TKHtcInNyYy91dGlscy90ZXh0L2dldC1uZXh0LW5vbi1zcGFjZS1ub24tY29tbWVudC1jaGFyYWN0ZXItaW5kZXgtd2l0aC1zdGFydC1pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhciB1PXVhKCksdD1uYSgpLG89dGEoKSx7c2tpcFNwYWNlczpufT1tdSgpO2Z1bmN0aW9uIHMoYyxpKXtsZXQgRD1udWxsLGE9aTtmb3IoO2EhPT1EOylEPWEsYT1uKGMsYSksYT11KGMsYSksYT1vKGMsYSksYT10KGMsYSk7cmV0dXJuIGF9ci5leHBvcnRzPXN9fSksUzI9Uyh7XCJzcmMvY29tbW9uL3V0aWwuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXJ7ZGVmYXVsdDp1fT0oczIoKSxqaShKaSkpLHQ9YzIoKSx7Z2V0U3VwcG9ydEluZm86b309ZzIoKSxuPUYyKCkscz1PMigpLHtza2lwV2hpdGVzcGFjZTpjLHNraXBTcGFjZXM6aSxza2lwVG9MaW5lRW5kOkQsc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lOmF9PW11KCksbD11YSgpLHA9dGEoKSxkPW5hKCksZz1JMigpLEY9az0+a1trLmxlbmd0aC0yXTtmdW5jdGlvbiBFKGspe3JldHVybih5LF8sTik9PntsZXQgVj1OJiZOLmJhY2t3YXJkcztpZihfPT09ITEpcmV0dXJuITE7bGV0e2xlbmd0aDpXfT15LEs9Xztmb3IoO0s+PTAmJks8Vzspe2xldCBlZT15LmNoYXJBdChLKTtpZihrIGluc3RhbmNlb2YgUmVnRXhwKXtpZighay50ZXN0KGVlKSlyZXR1cm4gS31lbHNlIGlmKCFrLmluY2x1ZGVzKGVlKSlyZXR1cm4gSztWP0stLTpLKyt9cmV0dXJuIEs9PT0tMXx8Sz09PVc/SzohMX19ZnVuY3Rpb24geChrLHkpe2xldCBfPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fSxOPWkoayxfLmJhY2t3YXJkcz95LTE6eSxfKSxWPWQoayxOLF8pO3JldHVybiBOIT09Vn1mdW5jdGlvbiBmKGsseSxfKXtmb3IobGV0IE49eTtOPF87KytOKWlmKGsuY2hhckF0KE4pPT09YFxuYClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBiKGsseSxfKXtsZXQgTj1fKHkpLTE7Tj1pKGssTix7YmFja3dhcmRzOiEwfSksTj1kKGssTix7YmFja3dhcmRzOiEwfSksTj1pKGssTix7YmFja3dhcmRzOiEwfSk7bGV0IFY9ZChrLE4se2JhY2t3YXJkczohMH0pO3JldHVybiBOIT09Vn1mdW5jdGlvbiB2KGsseSl7bGV0IF89bnVsbCxOPXk7Zm9yKDtOIT09XzspXz1OLE49RChrLE4pLE49bChrLE4pLE49aShrLE4pO3JldHVybiBOPXAoayxOKSxOPWQoayxOKSxOIT09ITEmJngoayxOKX1mdW5jdGlvbiBoKGsseSxfKXtyZXR1cm4gdihrLF8oeSkpfWZ1bmN0aW9uIG0oayx5LF8pe3JldHVybiBnKGssXyh5KSl9ZnVuY3Rpb24gQyhrLHksXyl7cmV0dXJuIGsuY2hhckF0KG0oayx5LF8pKX1mdW5jdGlvbiBCKGsseSl7bGV0IF89YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9O3JldHVybiBpKGssXy5iYWNrd2FyZHM/eS0xOnksXykhPT15fWZ1bmN0aW9uIHEoayx5KXtsZXQgXz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06MCxOPTA7Zm9yKGxldCBWPV87VjxrLmxlbmd0aDsrK1Ypa1tWXT09PVwiXHRcIj9OPU4reS1OJXk6TisrO3JldHVybiBOfWZ1bmN0aW9uIEwoayx5KXtsZXQgXz1rLmxhc3RJbmRleE9mKGBcbmApO3JldHVybiBfPT09LTE/MDpxKGsuc2xpY2UoXysxKS5tYXRjaCgvXltcXHQgXSovKVswXSx5KX1mdW5jdGlvbiB3KGsseSl7bGV0IF89e3F1b3RlOidcIicscmVnZXg6L1wiL2csZXNjYXBlZDpcIiZxdW90O1wifSxOPXtxdW90ZTpcIidcIixyZWdleDovJy9nLGVzY2FwZWQ6XCImYXBvcztcIn0sVj15PT09XCInXCI/TjpfLFc9Vj09PU4/XzpOLEs9VjtpZihrLmluY2x1ZGVzKFYucXVvdGUpfHxrLmluY2x1ZGVzKFcucXVvdGUpKXtsZXQgZWU9KGsubWF0Y2goVi5yZWdleCl8fFtdKS5sZW5ndGgsWT0oay5tYXRjaChXLnJlZ2V4KXx8W10pLmxlbmd0aDtLPWVlPlk/VzpWfXJldHVybiBLfWZ1bmN0aW9uIE8oayx5KXtsZXQgXz1rLnNsaWNlKDEsLTEpLE49eS5wYXJzZXI9PT1cImpzb25cInx8eS5wYXJzZXI9PT1cImpzb241XCImJnkucXVvdGVQcm9wcz09PVwicHJlc2VydmVcIiYmIXkuc2luZ2xlUXVvdGU/J1wiJzp5Ll9faXNJbkh0bWxBdHRyaWJ1dGU/XCInXCI6dyhfLHkuc2luZ2xlUXVvdGU/XCInXCI6J1wiJykucXVvdGU7cmV0dXJuIFQoXyxOLCEoeS5wYXJzZXI9PT1cImNzc1wifHx5LnBhcnNlcj09PVwibGVzc1wifHx5LnBhcnNlcj09PVwic2Nzc1wifHx5Ll9fZW1iZWRkZWRJbkh0bWwpKX1mdW5jdGlvbiBUKGsseSxfKXtsZXQgTj15PT09J1wiJz9cIidcIjonXCInLFY9L1xcXFwoLil8KFtcIiddKS9ncyxXPWsucmVwbGFjZShWLChLLGVlLFkpPT5lZT09PU4/ZWU6WT09PXk/XCJcXFxcXCIrWTpZfHwoXyYmL15bXlxcblxcclwiJzAtN1xcXFxiZm5ydC12eFxcdTIwMjhcXHUyMDI5XSQvLnRlc3QoZWUpP2VlOlwiXFxcXFwiK2VlKSk7cmV0dXJuIHkrVyt5fWZ1bmN0aW9uIFAoayl7cmV0dXJuIGsudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eKFsrLV0/W1xcZC5dK2UpKD86XFwrfCgtKSk/MCooXFxkKS8sXCIkMSQyJDNcIikucmVwbGFjZSgvXihbKy1dP1tcXGQuXSspZVsrLV0/MCskLyxcIiQxXCIpLnJlcGxhY2UoL14oWystXSk/XFwuLyxcIiQxMC5cIikucmVwbGFjZSgvKFxcLlxcZCs/KTArKD89ZXwkKS8sXCIkMVwiKS5yZXBsYWNlKC9cXC4oPz1lfCQpLyxcIlwiKX1mdW5jdGlvbiBBKGsseSl7bGV0IF89ay5tYXRjaChuZXcgUmVnRXhwKFwiKFwiLmNvbmNhdCh1KHkpLFwiKStcIiksXCJnXCIpKTtyZXR1cm4gXz09PW51bGw/MDpfLnJlZHVjZSgoTixWKT0+TWF0aC5tYXgoTixWLmxlbmd0aC95Lmxlbmd0aCksMCl9ZnVuY3Rpb24gaihrLHkpe2xldCBfPWsubWF0Y2gobmV3IFJlZ0V4cChcIihcIi5jb25jYXQodSh5KSxcIikrXCIpLFwiZ1wiKSk7aWYoXz09PW51bGwpcmV0dXJuIDA7bGV0IE49bmV3IE1hcCxWPTA7Zm9yKGxldCBXIG9mIF8pe2xldCBLPVcubGVuZ3RoL3kubGVuZ3RoO04uc2V0KEssITApLEs+ViYmKFY9Syl9Zm9yKGxldCBXPTE7VzxWO1crKylpZighTi5nZXQoVykpcmV0dXJuIFc7cmV0dXJuIFYrMX1mdW5jdGlvbiAkKGsseSl7KGsuY29tbWVudHN8fChrLmNvbW1lbnRzPVtdKSkucHVzaCh5KSx5LnByaW50ZWQ9ITEseS5ub2RlRGVzY3JpcHRpb249RyhrKX1mdW5jdGlvbiBVKGsseSl7eS5sZWFkaW5nPSEwLHkudHJhaWxpbmc9ITEsJChrLHkpfWZ1bmN0aW9uIFgoayx5LF8pe3kubGVhZGluZz0hMSx5LnRyYWlsaW5nPSExLF8mJih5Lm1hcmtlcj1fKSwkKGsseSl9ZnVuY3Rpb24gUihrLHkpe3kubGVhZGluZz0hMSx5LnRyYWlsaW5nPSEwLCQoayx5KX1mdW5jdGlvbiBKKGsseSl7bGV0e2xhbmd1YWdlczpffT1vKHtwbHVnaW5zOnkucGx1Z2luc30pLE49Xy5maW5kKFY9PntsZXR7bmFtZTpXfT1WO3JldHVybiBXLnRvTG93ZXJDYXNlKCk9PT1rfSl8fF8uZmluZChWPT57bGV0e2FsaWFzZXM6V309VjtyZXR1cm4gQXJyYXkuaXNBcnJheShXKSYmVy5pbmNsdWRlcyhrKX0pfHxfLmZpbmQoVj0+e2xldHtleHRlbnNpb25zOld9PVY7cmV0dXJuIEFycmF5LmlzQXJyYXkoVykmJlcuaW5jbHVkZXMoXCIuXCIuY29uY2F0KGspKX0pO3JldHVybiBOJiZOLnBhcnNlcnNbMF19ZnVuY3Rpb24geihrKXtyZXR1cm4gayYmay50eXBlPT09XCJmcm9udC1tYXR0ZXJcIn1mdW5jdGlvbiBNKGspe2xldCB5PW5ldyBXZWFrTWFwO3JldHVybiBmdW5jdGlvbihfKXtyZXR1cm4geS5oYXMoXyl8fHkuc2V0KF8sU3ltYm9sKGspKSx5LmdldChfKX19ZnVuY3Rpb24gRyhrKXtsZXQgeT1rLnR5cGV8fGsua2luZHx8XCIodW5rbm93biB0eXBlKVwiLF89U3RyaW5nKGsubmFtZXx8ay5pZCYmKHR5cGVvZiBrLmlkPT1cIm9iamVjdFwiP2suaWQubmFtZTprLmlkKXx8ay5rZXkmJih0eXBlb2Ygay5rZXk9PVwib2JqZWN0XCI/ay5rZXkubmFtZTprLmtleSl8fGsudmFsdWUmJih0eXBlb2Ygay52YWx1ZT09XCJvYmplY3RcIj9cIlwiOlN0cmluZyhrLnZhbHVlKSl8fGsub3BlcmF0b3J8fFwiXCIpO3JldHVybiBfLmxlbmd0aD4yMCYmKF89Xy5zbGljZSgwLDE5KStcIlxcdTIwMjZcIikseSsoXz9cIiBcIitfOlwiXCIpfXIuZXhwb3J0cz17aW5mZXJQYXJzZXJCeUxhbmd1YWdlOkosZ2V0U3RyaW5nV2lkdGg6cyxnZXRNYXhDb250aW51b3VzQ291bnQ6QSxnZXRNaW5Ob3RQcmVzZW50Q29udGludW91c0NvdW50OmosZ2V0UGVudWx0aW1hdGU6RixnZXRMYXN0OnQsZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4V2l0aFN0YXJ0SW5kZXg6ZyxnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXg6bSxnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVyOkMsc2tpcDpFLHNraXBXaGl0ZXNwYWNlOmMsc2tpcFNwYWNlczppLHNraXBUb0xpbmVFbmQ6RCxza2lwRXZlcnl0aGluZ0J1dE5ld0xpbmU6YSxza2lwSW5saW5lQ29tbWVudDpsLHNraXBUcmFpbGluZ0NvbW1lbnQ6cCxza2lwTmV3bGluZTpkLGlzTmV4dExpbmVFbXB0eUFmdGVySW5kZXg6dixpc05leHRMaW5lRW1wdHk6aCxpc1ByZXZpb3VzTGluZUVtcHR5OmIsaGFzTmV3bGluZTp4LGhhc05ld2xpbmVJblJhbmdlOmYsaGFzU3BhY2VzOkIsZ2V0QWxpZ25tZW50U2l6ZTpxLGdldEluZGVudFNpemU6TCxnZXRQcmVmZXJyZWRRdW90ZTp3LHByaW50U3RyaW5nOk8scHJpbnROdW1iZXI6UCxtYWtlU3RyaW5nOlQsYWRkTGVhZGluZ0NvbW1lbnQ6VSxhZGREYW5nbGluZ0NvbW1lbnQ6WCxhZGRUcmFpbGluZ0NvbW1lbnQ6Uixpc0Zyb250TWF0dGVyTm9kZTp6LGlzTm9uRW1wdHlBcnJheTpuLGNyZWF0ZUdyb3VwSWRNYXBwZXI6TX19fSksVDI9Uyh7XCJzcmMvbGFuZ3VhZ2UtbWFya2Rvd24vY29uc3RhbnRzLmV2YWx1YXRlLmpzXCIoZSxyKXtyLmV4cG9ydHM9e2Nqa1BhdHRlcm46XCIoPzpbXFxcXHUwMmVhLVxcXFx1MDJlYlxcXFx1MTEwMC1cXFxcdTExZmZcXFxcdTJlODAtXFxcXHUyZTk5XFxcXHUyZTliLVxcXFx1MmVmM1xcXFx1MmYwMC1cXFxcdTJmZDVcXFxcdTJmZjAtXFxcXHUzMDNmXFxcXHUzMDQxLVxcXFx1MzA5NlxcXFx1MzA5OS1cXFxcdTMwOWZcXFxcdTMwYTEtXFxcXHUzMGZhXFxcXHUzMGZjLVxcXFx1MzBmZlxcXFx1MzEwNS1cXFxcdTMxMmZcXFxcdTMxMzEtXFxcXHUzMThlXFxcXHUzMTkwLVxcXFx1MzE5MVxcXFx1MzE5Ni1cXFxcdTMxYmFcXFxcdTMxYzAtXFxcXHUzMWUzXFxcXHUzMWYwLVxcXFx1MzIxZVxcXFx1MzIyYS1cXFxcdTMyNDdcXFxcdTMyNjAtXFxcXHUzMjdlXFxcXHUzMjhhLVxcXFx1MzJiMFxcXFx1MzJjMC1cXFxcdTMyY2JcXFxcdTMyZDAtXFxcXHUzMzcwXFxcXHUzMzdiLVxcXFx1MzM3ZlxcXFx1MzNlMC1cXFxcdTMzZmVcXFxcdTM0MDAtXFxcXHU0ZGI1XFxcXHU0ZTAwLVxcXFx1OWZlZlxcXFx1YTk2MC1cXFxcdWE5N2NcXFxcdWFjMDAtXFxcXHVkN2EzXFxcXHVkN2IwLVxcXFx1ZDdjNlxcXFx1ZDdjYi1cXFxcdWQ3ZmJcXFxcdWY5MDAtXFxcXHVmYTZkXFxcXHVmYTcwLVxcXFx1ZmFkOVxcXFx1ZmUxMC1cXFxcdWZlMWZcXFxcdWZlMzAtXFxcXHVmZTZmXFxcXHVmZjAwLVxcXFx1ZmZlZl18W1xcXFx1ZDg0MC1cXFxcdWQ4NjhcXFxcdWQ4NmEtXFxcXHVkODZjXFxcXHVkODZmLVxcXFx1ZDg3MlxcXFx1ZDg3NC1cXFxcdWQ4NzldW1xcXFx1ZGMwMC1cXFxcdWRmZmZdfFxcXFx1ZDgyY1tcXFxcdWRjMDAtXFxcXHVkZDFlXFxcXHVkZDUwLVxcXFx1ZGQ1MlxcXFx1ZGQ2NC1cXFxcdWRkNjddfFxcXFx1ZDgzY1tcXFxcdWRlMDBcXFxcdWRlNTAtXFxcXHVkZTUxXXxcXFxcdWQ4NjlbXFxcXHVkYzAwLVxcXFx1ZGVkNlxcXFx1ZGYwMC1cXFxcdWRmZmZdfFxcXFx1ZDg2ZFtcXFxcdWRjMDAtXFxcXHVkZjM0XFxcXHVkZjQwLVxcXFx1ZGZmZl18XFxcXHVkODZlW1xcXFx1ZGMwMC1cXFxcdWRjMWRcXFxcdWRjMjAtXFxcXHVkZmZmXXxcXFxcdWQ4NzNbXFxcXHVkYzAwLVxcXFx1ZGVhMVxcXFx1ZGViMC1cXFxcdWRmZmZdfFxcXFx1ZDg3YVtcXFxcdWRjMDAtXFxcXHVkZmUwXXxcXFxcdWQ4N2VbXFxcXHVkYzAwLVxcXFx1ZGUxZF0pKD86W1xcXFx1ZmUwMC1cXFxcdWZlMGZdfFxcXFx1ZGI0MFtcXFxcdWRkMDAtXFxcXHVkZGVmXSk/XCIsa1BhdHRlcm46XCJbXFxcXHUxMTAwLVxcXFx1MTFmZlxcXFx1MzAwMS1cXFxcdTMwMDNcXFxcdTMwMDgtXFxcXHUzMDExXFxcXHUzMDEzLVxcXFx1MzAxZlxcXFx1MzAyZS1cXFxcdTMwMzBcXFxcdTMwMzdcXFxcdTMwZmJcXFxcdTMxMzEtXFxcXHUzMThlXFxcXHUzMjAwLVxcXFx1MzIxZVxcXFx1MzI2MC1cXFxcdTMyN2VcXFxcdWE5NjAtXFxcXHVhOTdjXFxcXHVhYzAwLVxcXFx1ZDdhM1xcXFx1ZDdiMC1cXFxcdWQ3YzZcXFxcdWQ3Y2ItXFxcXHVkN2ZiXFxcXHVmZTQ1LVxcXFx1ZmU0NlxcXFx1ZmY2MS1cXFxcdWZmNjVcXFxcdWZmYTAtXFxcXHVmZmJlXFxcXHVmZmMyLVxcXFx1ZmZjN1xcXFx1ZmZjYS1cXFxcdWZmY2ZcXFxcdWZmZDItXFxcXHVmZmQ3XFxcXHVmZmRhLVxcXFx1ZmZkY11cIixwdW5jdHVhdGlvblBhdHRlcm46XCJbXFxcXHUwMDIxLVxcXFx1MDAyZlxcXFx1MDAzYS1cXFxcdTAwNDBcXFxcdTAwNWItXFxcXHUwMDYwXFxcXHUwMDdiLVxcXFx1MDA3ZVxcXFx1MDBhMVxcXFx1MDBhN1xcXFx1MDBhYlxcXFx1MDBiNi1cXFxcdTAwYjdcXFxcdTAwYmJcXFxcdTAwYmZcXFxcdTAzN2VcXFxcdTAzODdcXFxcdTA1NWEtXFxcXHUwNTVmXFxcXHUwNTg5LVxcXFx1MDU4YVxcXFx1MDViZVxcXFx1MDVjMFxcXFx1MDVjM1xcXFx1MDVjNlxcXFx1MDVmMy1cXFxcdTA1ZjRcXFxcdTA2MDktXFxcXHUwNjBhXFxcXHUwNjBjLVxcXFx1MDYwZFxcXFx1MDYxYlxcXFx1MDYxZS1cXFxcdTA2MWZcXFxcdTA2NmEtXFxcXHUwNjZkXFxcXHUwNmQ0XFxcXHUwNzAwLVxcXFx1MDcwZFxcXFx1MDdmNy1cXFxcdTA3ZjlcXFxcdTA4MzAtXFxcXHUwODNlXFxcXHUwODVlXFxcXHUwOTY0LVxcXFx1MDk2NVxcXFx1MDk3MFxcXFx1MDlmZFxcXFx1MGE3NlxcXFx1MGFmMFxcXFx1MGM3N1xcXFx1MGM4NFxcXFx1MGRmNFxcXFx1MGU0ZlxcXFx1MGU1YS1cXFxcdTBlNWJcXFxcdTBmMDQtXFxcXHUwZjEyXFxcXHUwZjE0XFxcXHUwZjNhLVxcXFx1MGYzZFxcXFx1MGY4NVxcXFx1MGZkMC1cXFxcdTBmZDRcXFxcdTBmZDktXFxcXHUwZmRhXFxcXHUxMDRhLVxcXFx1MTA0ZlxcXFx1MTBmYlxcXFx1MTM2MC1cXFxcdTEzNjhcXFxcdTE0MDBcXFxcdTE2NmVcXFxcdTE2OWItXFxcXHUxNjljXFxcXHUxNmViLVxcXFx1MTZlZFxcXFx1MTczNS1cXFxcdTE3MzZcXFxcdTE3ZDQtXFxcXHUxN2Q2XFxcXHUxN2Q4LVxcXFx1MTdkYVxcXFx1MTgwMC1cXFxcdTE4MGFcXFxcdTE5NDQtXFxcXHUxOTQ1XFxcXHUxYTFlLVxcXFx1MWExZlxcXFx1MWFhMC1cXFxcdTFhYTZcXFxcdTFhYTgtXFxcXHUxYWFkXFxcXHUxYjVhLVxcXFx1MWI2MFxcXFx1MWJmYy1cXFxcdTFiZmZcXFxcdTFjM2ItXFxcXHUxYzNmXFxcXHUxYzdlLVxcXFx1MWM3ZlxcXFx1MWNjMC1cXFxcdTFjYzdcXFxcdTFjZDNcXFxcdTIwMTAtXFxcXHUyMDI3XFxcXHUyMDMwLVxcXFx1MjA0M1xcXFx1MjA0NS1cXFxcdTIwNTFcXFxcdTIwNTMtXFxcXHUyMDVlXFxcXHUyMDdkLVxcXFx1MjA3ZVxcXFx1MjA4ZC1cXFxcdTIwOGVcXFxcdTIzMDgtXFxcXHUyMzBiXFxcXHUyMzI5LVxcXFx1MjMyYVxcXFx1Mjc2OC1cXFxcdTI3NzVcXFxcdTI3YzUtXFxcXHUyN2M2XFxcXHUyN2U2LVxcXFx1MjdlZlxcXFx1Mjk4My1cXFxcdTI5OThcXFxcdTI5ZDgtXFxcXHUyOWRiXFxcXHUyOWZjLVxcXFx1MjlmZFxcXFx1MmNmOS1cXFxcdTJjZmNcXFxcdTJjZmUtXFxcXHUyY2ZmXFxcXHUyZDcwXFxcXHUyZTAwLVxcXFx1MmUyZVxcXFx1MmUzMC1cXFxcdTJlNGZcXFxcdTMwMDEtXFxcXHUzMDAzXFxcXHUzMDA4LVxcXFx1MzAxMVxcXFx1MzAxNC1cXFxcdTMwMWZcXFxcdTMwMzBcXFxcdTMwM2RcXFxcdTMwYTBcXFxcdTMwZmJcXFxcdWE0ZmUtXFxcXHVhNGZmXFxcXHVhNjBkLVxcXFx1YTYwZlxcXFx1YTY3M1xcXFx1YTY3ZVxcXFx1YTZmMi1cXFxcdWE2ZjdcXFxcdWE4NzQtXFxcXHVhODc3XFxcXHVhOGNlLVxcXFx1YThjZlxcXFx1YThmOC1cXFxcdWE4ZmFcXFxcdWE4ZmNcXFxcdWE5MmUtXFxcXHVhOTJmXFxcXHVhOTVmXFxcXHVhOWMxLVxcXFx1YTljZFxcXFx1YTlkZS1cXFxcdWE5ZGZcXFxcdWFhNWMtXFxcXHVhYTVmXFxcXHVhYWRlLVxcXFx1YWFkZlxcXFx1YWFmMC1cXFxcdWFhZjFcXFxcdWFiZWJcXFxcdWZkM2UtXFxcXHVmZDNmXFxcXHVmZTEwLVxcXFx1ZmUxOVxcXFx1ZmUzMC1cXFxcdWZlNTJcXFxcdWZlNTQtXFxcXHVmZTYxXFxcXHVmZTYzXFxcXHVmZTY4XFxcXHVmZTZhLVxcXFx1ZmU2YlxcXFx1ZmYwMS1cXFxcdWZmMDNcXFxcdWZmMDUtXFxcXHVmZjBhXFxcXHVmZjBjLVxcXFx1ZmYwZlxcXFx1ZmYxYS1cXFxcdWZmMWJcXFxcdWZmMWYtXFxcXHVmZjIwXFxcXHVmZjNiLVxcXFx1ZmYzZFxcXFx1ZmYzZlxcXFx1ZmY1YlxcXFx1ZmY1ZFxcXFx1ZmY1Zi1cXFxcdWZmNjVdfFxcXFx1ZDgwMFtcXFxcdWRkMDAtXFxcXHVkZDAyXFxcXHVkZjlmXFxcXHVkZmQwXXxcXFxcdWQ4MDFbXFxcXHVkZDZmXXxcXFxcdWQ4MDJbXFxcXHVkYzU3XFxcXHVkZDFmXFxcXHVkZDNmXFxcXHVkZTUwLVxcXFx1ZGU1OFxcXFx1ZGU3ZlxcXFx1ZGVmMC1cXFxcdWRlZjZcXFxcdWRmMzktXFxcXHVkZjNmXFxcXHVkZjk5LVxcXFx1ZGY5Y118XFxcXHVkODAzW1xcXFx1ZGY1NS1cXFxcdWRmNTldfFxcXFx1ZDgwNFtcXFxcdWRjNDctXFxcXHVkYzRkXFxcXHVkY2JiLVxcXFx1ZGNiY1xcXFx1ZGNiZS1cXFxcdWRjYzFcXFxcdWRkNDAtXFxcXHVkZDQzXFxcXHVkZDc0LVxcXFx1ZGQ3NVxcXFx1ZGRjNS1cXFxcdWRkYzhcXFxcdWRkY2RcXFxcdWRkZGJcXFxcdWRkZGQtXFxcXHVkZGRmXFxcXHVkZTM4LVxcXFx1ZGUzZFxcXFx1ZGVhOV18XFxcXHVkODA1W1xcXFx1ZGM0Yi1cXFxcdWRjNGZcXFxcdWRjNWJcXFxcdWRjNWRcXFxcdWRjYzZcXFxcdWRkYzEtXFxcXHVkZGQ3XFxcXHVkZTQxLVxcXFx1ZGU0M1xcXFx1ZGU2MC1cXFxcdWRlNmNcXFxcdWRmM2MtXFxcXHVkZjNlXXxcXFxcdWQ4MDZbXFxcXHVkYzNiXFxcXHVkZGUyXFxcXHVkZTNmLVxcXFx1ZGU0NlxcXFx1ZGU5YS1cXFxcdWRlOWNcXFxcdWRlOWUtXFxcXHVkZWEyXXxcXFxcdWQ4MDdbXFxcXHVkYzQxLVxcXFx1ZGM0NVxcXFx1ZGM3MC1cXFxcdWRjNzFcXFxcdWRlZjctXFxcXHVkZWY4XFxcXHVkZmZmXXxcXFxcdWQ4MDlbXFxcXHVkYzcwLVxcXFx1ZGM3NF18XFxcXHVkODFhW1xcXFx1ZGU2ZS1cXFxcdWRlNmZcXFxcdWRlZjVcXFxcdWRmMzctXFxcXHVkZjNiXFxcXHVkZjQ0XXxcXFxcdWQ4MWJbXFxcXHVkZTk3LVxcXFx1ZGU5YVxcXFx1ZGZlMl18XFxcXHVkODJmW1xcXFx1ZGM5Zl18XFxcXHVkODM2W1xcXFx1ZGU4Ny1cXFxcdWRlOGJdfFxcXFx1ZDgzYVtcXFxcdWRkNWUtXFxcXHVkZDVmXVwifX19KSxOMj1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi91dGlscy5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO3ZhcntnZXRMYXN0OnV9PVMyKCkse2xvY1N0YXJ0OnQsbG9jRW5kOm99PUtpKCkse2Nqa1BhdHRlcm46bixrUGF0dGVybjpzLHB1bmN0dWF0aW9uUGF0dGVybjpjfT1UMigpLGk9W1wibGlxdWlkTm9kZVwiLFwiaW5saW5lQ29kZVwiLFwiZW1waGFzaXNcIixcImVzQ29tbWVudFwiLFwic3Ryb25nXCIsXCJkZWxldGVcIixcIndpa2lMaW5rXCIsXCJsaW5rXCIsXCJsaW5rUmVmZXJlbmNlXCIsXCJpbWFnZVwiLFwiaW1hZ2VSZWZlcmVuY2VcIixcImZvb3Rub3RlXCIsXCJmb290bm90ZVJlZmVyZW5jZVwiLFwic2VudGVuY2VcIixcIndoaXRlc3BhY2VcIixcIndvcmRcIixcImJyZWFrXCIsXCJpbmxpbmVNYXRoXCJdLEQ9Wy4uLmksXCJ0YWJsZUNlbGxcIixcInBhcmFncmFwaFwiLFwiaGVhZGluZ1wiXSxhPW5ldyBSZWdFeHAocyksbD1uZXcgUmVnRXhwKGMpO2Z1bmN0aW9uIHAoZixiKXtsZXQgdj1cIm5vbi1jamtcIixoPVwiY2otbGV0dGVyXCIsbT1cImstbGV0dGVyXCIsQz1cImNqay1wdW5jdHVhdGlvblwiLEI9W10scT0oYi5wcm9zZVdyYXA9PT1cInByZXNlcnZlXCI/ZjpmLnJlcGxhY2UobmV3IFJlZ0V4cChcIihcIi5jb25jYXQobixgKVxuKGApLmNvbmNhdChuLFwiKVwiKSxcImdcIiksXCIkMSQyXCIpKS5zcGxpdCgvKFtcXHRcXG4gXSspLyk7Zm9yKGxldFt3LE9db2YgcS5lbnRyaWVzKCkpe2lmKHclMj09PTEpe0IucHVzaCh7dHlwZTpcIndoaXRlc3BhY2VcIix2YWx1ZTovXFxuLy50ZXN0KE8pP2BcbmA6XCIgXCJ9KTtjb250aW51ZX1pZigodz09PTB8fHc9PT1xLmxlbmd0aC0xKSYmTz09PVwiXCIpY29udGludWU7bGV0IFQ9Ty5zcGxpdChuZXcgUmVnRXhwKFwiKFwiLmNvbmNhdChuLFwiKVwiKSkpO2ZvcihsZXRbUCxBXW9mIFQuZW50cmllcygpKWlmKCEoKFA9PT0wfHxQPT09VC5sZW5ndGgtMSkmJkE9PT1cIlwiKSl7aWYoUCUyPT09MCl7QSE9PVwiXCImJkwoe3R5cGU6XCJ3b3JkXCIsdmFsdWU6QSxraW5kOnYsaGFzTGVhZGluZ1B1bmN0dWF0aW9uOmwudGVzdChBWzBdKSxoYXNUcmFpbGluZ1B1bmN0dWF0aW9uOmwudGVzdCh1KEEpKX0pO2NvbnRpbnVlfUwobC50ZXN0KEEpP3t0eXBlOlwid29yZFwiLHZhbHVlOkEsa2luZDpDLGhhc0xlYWRpbmdQdW5jdHVhdGlvbjohMCxoYXNUcmFpbGluZ1B1bmN0dWF0aW9uOiEwfTp7dHlwZTpcIndvcmRcIix2YWx1ZTpBLGtpbmQ6YS50ZXN0KEEpP206aCxoYXNMZWFkaW5nUHVuY3R1YXRpb246ITEsaGFzVHJhaWxpbmdQdW5jdHVhdGlvbjohMX0pfX1yZXR1cm4gQjtmdW5jdGlvbiBMKHcpe2xldCBPPXUoQik7TyYmTy50eXBlPT09XCJ3b3JkXCImJihPLmtpbmQ9PT12JiZ3LmtpbmQ9PT1oJiYhTy5oYXNUcmFpbGluZ1B1bmN0dWF0aW9ufHxPLmtpbmQ9PT1oJiZ3LmtpbmQ9PT12JiYhdy5oYXNMZWFkaW5nUHVuY3R1YXRpb24/Qi5wdXNoKHt0eXBlOlwid2hpdGVzcGFjZVwiLHZhbHVlOlwiIFwifSk6IVQodixDKSYmIVtPLnZhbHVlLHcudmFsdWVdLnNvbWUoUD0+L1xcdTMwMDAvLnRlc3QoUCkpJiZCLnB1c2goe3R5cGU6XCJ3aGl0ZXNwYWNlXCIsdmFsdWU6XCJcIn0pKSxCLnB1c2godyk7ZnVuY3Rpb24gVChQLEEpe3JldHVybiBPLmtpbmQ9PT1QJiZ3LmtpbmQ9PT1BfHxPLmtpbmQ9PT1BJiZ3LmtpbmQ9PT1QfX19ZnVuY3Rpb24gZChmLGIpe2xldFssdixoLG1dPWIuc2xpY2UoZi5wb3NpdGlvbi5zdGFydC5vZmZzZXQsZi5wb3NpdGlvbi5lbmQub2Zmc2V0KS5tYXRjaCgvXlxccyooXFxkKykoXFwufFxcKSkoXFxzKikvKTtyZXR1cm57bnVtYmVyVGV4dDp2LG1hcmtlcjpoLGxlYWRpbmdTcGFjZXM6bX19ZnVuY3Rpb24gZyhmLGIpe2lmKCFmLm9yZGVyZWR8fGYuY2hpbGRyZW4ubGVuZ3RoPDIpcmV0dXJuITE7bGV0IHY9TnVtYmVyKGQoZi5jaGlsZHJlblswXSxiLm9yaWdpbmFsVGV4dCkubnVtYmVyVGV4dCksaD1OdW1iZXIoZChmLmNoaWxkcmVuWzFdLGIub3JpZ2luYWxUZXh0KS5udW1iZXJUZXh0KTtpZih2PT09MCYmZi5jaGlsZHJlbi5sZW5ndGg+Mil7bGV0IG09TnVtYmVyKGQoZi5jaGlsZHJlblsyXSxiLm9yaWdpbmFsVGV4dCkubnVtYmVyVGV4dCk7cmV0dXJuIGg9PT0xJiZtPT09MX1yZXR1cm4gaD09PTF9ZnVuY3Rpb24gRihmLGIpe2xldHt2YWx1ZTp2fT1mO3JldHVybiBmLnBvc2l0aW9uLmVuZC5vZmZzZXQ9PT1iLmxlbmd0aCYmdi5lbmRzV2l0aChgXG5gKSYmYi5lbmRzV2l0aChgXG5gKT92LnNsaWNlKDAsLTEpOnZ9ZnVuY3Rpb24gRShmLGIpe3JldHVybiBmdW5jdGlvbiB2KGgsbSxDKXtsZXQgQj1PYmplY3QuYXNzaWduKHt9LGIoaCxtLEMpKTtyZXR1cm4gQi5jaGlsZHJlbiYmKEIuY2hpbGRyZW49Qi5jaGlsZHJlbi5tYXAoKHEsTCk9PnYocSxMLFtCLC4uLkNdKSkpLEJ9KGYsbnVsbCxbXSl9ZnVuY3Rpb24geChmKXtpZigoZj09bnVsbD92b2lkIDA6Zi50eXBlKSE9PVwibGlua1wifHxmLmNoaWxkcmVuLmxlbmd0aCE9PTEpcmV0dXJuITE7bGV0W2JdPWYuY2hpbGRyZW47cmV0dXJuIHQoZik9PT10KGIpJiZvKGYpPT09byhiKX1yLmV4cG9ydHM9e21hcEFzdDpFLHNwbGl0VGV4dDpwLHB1bmN0dWF0aW9uUGF0dGVybjpjLGdldEZlbmNlZENvZGVCbG9ja1ZhbHVlOkYsZ2V0T3JkZXJlZExpc3RJdGVtSW5mbzpkLGhhc0dpdERpZmZGcmllbmRseU9yZGVyZWRMaXN0OmcsSU5MSU5FX05PREVfVFlQRVM6aSxJTkxJTkVfTk9ERV9XUkFQUEVSX1RZUEVTOkQsaXNBdXRvbGluazp4fX19KSxMMj1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi91bmlmaWVkLXBsdWdpbnMvaHRtbC10by1qc3guanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTt2YXIgdT1ZaSgpLHttYXBBc3Q6dCxJTkxJTkVfTk9ERV9XUkFQUEVSX1RZUEVTOm99PU4yKCk7ZnVuY3Rpb24gbigpe3JldHVybiBzPT50KHMsKGMsaSxEKT0+e2xldFthXT1EO3JldHVybiBjLnR5cGUhPT1cImh0bWxcInx8dS5DT01NRU5UX1JFR0VYLnRlc3QoYy52YWx1ZSl8fG8uaW5jbHVkZXMoYS50eXBlKT9jOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7fSx7dHlwZTpcImpzeFwifSl9KX1yLmV4cG9ydHM9bn19KSxSMj1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi91bmlmaWVkLXBsdWdpbnMvZnJvbnQtbWF0dGVyLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7dmFyIHU9V2koKTtmdW5jdGlvbiB0KCl7bGV0IG89dGhpcy5QYXJzZXIucHJvdG90eXBlO28uYmxvY2tNZXRob2RzPVtcImZyb250TWF0dGVyXCIsLi4uby5ibG9ja01ldGhvZHNdLG8uYmxvY2tUb2tlbml6ZXJzLmZyb250TWF0dGVyPW47ZnVuY3Rpb24gbihzLGMpe2xldCBpPXUoYyk7aWYoaS5mcm9udE1hdHRlcilyZXR1cm4gcyhpLmZyb250TWF0dGVyLnJhdykoaS5mcm9udE1hdHRlcil9bi5vbmx5QXRTdGFydD0hMH1yLmV4cG9ydHM9dH19KSxqMj1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi91bmlmaWVkLXBsdWdpbnMvbGlxdWlkLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtJKCk7ZnVuY3Rpb24gdSgpe2xldCB0PXRoaXMuUGFyc2VyLnByb3RvdHlwZSxvPXQuaW5saW5lTWV0aG9kcztvLnNwbGljZShvLmluZGV4T2YoXCJ0ZXh0XCIpLDAsXCJsaXF1aWRcIiksdC5pbmxpbmVUb2tlbml6ZXJzLmxpcXVpZD1uO2Z1bmN0aW9uIG4ocyxjKXtsZXQgaT1jLm1hdGNoKC9eKHslLio/JX18e3suKj99fSkvcyk7aWYoaSlyZXR1cm4gcyhpWzBdKSh7dHlwZTpcImxpcXVpZE5vZGVcIix2YWx1ZTppWzBdfSl9bi5sb2NhdG9yPWZ1bmN0aW9uKHMsYyl7cmV0dXJuIHMuaW5kZXhPZihcIntcIixjKX19ci5leHBvcnRzPXV9fSksUDI9Uyh7XCJzcmMvbGFuZ3VhZ2UtbWFya2Rvd24vdW5pZmllZC1wbHVnaW5zL3dpa2ktbGluay5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7SSgpO2Z1bmN0aW9uIHUoKXtsZXQgdD1cIndpa2lMaW5rXCIsbz0vXlxcW1xcWyg/PGxpbmtDb250ZW50cz4uKz8pXV0vcyxuPXRoaXMuUGFyc2VyLnByb3RvdHlwZSxzPW4uaW5saW5lTWV0aG9kcztzLnNwbGljZShzLmluZGV4T2YoXCJsaW5rXCIpLDAsdCksbi5pbmxpbmVUb2tlbml6ZXJzLndpa2lMaW5rPWM7ZnVuY3Rpb24gYyhpLEQpe2xldCBhPW8uZXhlYyhEKTtpZihhKXtsZXQgbD1hLmdyb3Vwcy5saW5rQ29udGVudHMudHJpbSgpO3JldHVybiBpKGFbMF0pKHt0eXBlOnQsdmFsdWU6bH0pfX1jLmxvY2F0b3I9ZnVuY3Rpb24oaSxEKXtyZXR1cm4gaS5pbmRleE9mKFwiW1wiLEQpfX1yLmV4cG9ydHM9dX19KSxNMj1TKHtcInNyYy9sYW5ndWFnZS1tYXJrZG93bi91bmlmaWVkLXBsdWdpbnMvbG9vc2UtaXRlbXMuanNcIihlLHIpe1widXNlIHN0cmljdFwiO0koKTtmdW5jdGlvbiB1KCl7bGV0IHQ9dGhpcy5QYXJzZXIucHJvdG90eXBlLG89dC5ibG9ja1Rva2VuaXplcnMubGlzdDtmdW5jdGlvbiBuKHMsYyxpKXtyZXR1cm4gYy50eXBlPT09XCJsaXN0SXRlbVwiJiYoYy5sb29zZT1jLnNwcmVhZHx8cy5jaGFyQXQocy5sZW5ndGgtMSk9PT1gXG5gLGMubG9vc2UmJihpLmxvb3NlPSEwKSksY310LmJsb2NrVG9rZW5pemVycy5saXN0PWZ1bmN0aW9uKGMsaSxEKXtmdW5jdGlvbiBhKGwpe2xldCBwPWMobCk7ZnVuY3Rpb24gZChnLEYpe3JldHVybiBwKG4obCxnLEYpLEYpfXJldHVybiBkLnJlc2V0PWZ1bmN0aW9uKGcsRil7cmV0dXJuIHAucmVzZXQobihsLGcsRiksRil9LGR9cmV0dXJuIGEubm93PWMubm93LG8uY2FsbCh0aGlzLGEsaSxEKX19ci5leHBvcnRzPXV9fSk7SSgpO3ZhciB6Mj1HRCgpLEcyPXIyKCksVTI9bjIoKSxWMj1pMigpLCQyPWEyKCkse2xvY1N0YXJ0OkgyLGxvY0VuZDpYMn09S2koKSxTaT1ZaSgpLFcyPUwyKCksSzI9UjIoKSxZMj1qMigpLEoyPVAyKCksWjI9TTIoKTtmdW5jdGlvbiBpYShlKXtsZXR7aXNNRFg6cn09ZTtyZXR1cm4gdT0+e2xldCB0PUcyKCkudXNlKHoyLE9iamVjdC5hc3NpZ24oe2NvbW1vbm1hcms6ITB9LHImJntibG9ja3M6W1NpLkJMT0NLU19SRUdFWF19KSkudXNlKFYyKS51c2UoSzIpLnVzZShVMikudXNlKHI/U2kuZXNTeW50YXg6VGkpLnVzZShZMikudXNlKHI/VzI6VGkpLnVzZShKMikudXNlKFoyKTtyZXR1cm4gdC5ydW5TeW5jKHQucGFyc2UodSkpfX1mdW5jdGlvbiBUaShlKXtyZXR1cm4gZX12YXIgYWE9e2FzdEZvcm1hdDpcIm1kYXN0XCIsaGFzUHJhZ21hOiQyLmhhc1ByYWdtYSxsb2NTdGFydDpIMixsb2NFbmQ6WDJ9LE5pPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhYSkse30se3BhcnNlOmlhKHtpc01EWDohMX0pfSksUTI9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGFhKSx7fSx7cGFyc2U6aWEoe2lzTURYOiEwfSl9KTtvYS5leHBvcnRzPXtwYXJzZXJzOntyZW1hcms6TmksbWFya2Rvd246TmksbWR4OlEyfX19KTtyZXR1cm4gZWYoKTt9KTsiLCAiKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlPT1cIm9iamVjdFwiKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKHR5cGVvZiBkZWZpbmU9PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZClkZWZpbmUoZSk7ZWxzZXt2YXIgaT10eXBlb2YgZ2xvYmFsVGhpczxcInVcIj9nbG9iYWxUaGlzOnR5cGVvZiBnbG9iYWw8XCJ1XCI/Z2xvYmFsOnR5cGVvZiBzZWxmPFwidVwiP3NlbGY6dGhpc3x8e307aS5wcmV0dGllclBsdWdpbnM9aS5wcmV0dGllclBsdWdpbnN8fHt9LGkucHJldHRpZXJQbHVnaW5zLmh0bWw9ZSgpfX0pKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHk9KGUscik9PigpPT4ocnx8ZSgocj17ZXhwb3J0czp7fX0pLmV4cG9ydHMsciksci5leHBvcnRzKTt2YXIgRz15KChjbCx6cik9Pnt2YXIgd2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09TWF0aCYmZX07enIuZXhwb3J0cz13ZSh0eXBlb2YgZ2xvYmFsVGhpcz09XCJvYmplY3RcIiYmZ2xvYmFsVGhpcyl8fHdlKHR5cGVvZiB3aW5kb3c9PVwib2JqZWN0XCImJndpbmRvdyl8fHdlKHR5cGVvZiBzZWxmPT1cIm9iamVjdFwiJiZzZWxmKXx8d2UodHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfSk7dmFyIHNlPXkoKERsLFdyKT0+e1dyLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoe3JldHVybiEwfX19KTt2YXIgb2U9eSgobGwsWXIpPT57dmFyIGJzPXNlKCk7WXIuZXhwb3J0cz0hYnMoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT03fSl9KTt2YXIgTmU9eSgoaGwsUXIpPT57dmFyIHdzPXNlKCk7UXIuZXhwb3J0cz0hd3MoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiB0eXBlb2YgZSE9XCJmdW5jdGlvblwifHxlLmhhc093blByb3BlcnR5KFwicHJvdG90eXBlXCIpfSl9KTt2YXIgY2U9eSgocGwsS3IpPT57dmFyIE5zPU5lKCksT2U9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7S3IuZXhwb3J0cz1Ocz9PZS5iaW5kKE9lKTpmdW5jdGlvbigpe3JldHVybiBPZS5hcHBseShPZSxhcmd1bWVudHMpfX0pO3ZhciBydD15KGV0PT57XCJ1c2Ugc3RyaWN0XCI7dmFyIEpyPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFpyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsT3M9WnImJiFKci5jYWxsKHsxOjJ9LDEpO2V0LmY9T3M/ZnVuY3Rpb24ocil7dmFyIHQ9WnIodGhpcyxyKTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06SnJ9KTt2YXIgcWU9eSgoZGwsdHQpPT57dHQuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3JldHVybntlbnVtZXJhYmxlOiEoZSYxKSxjb25maWd1cmFibGU6IShlJjIpLHdyaXRhYmxlOiEoZSY0KSx2YWx1ZTpyfX19KTt2YXIgUT15KChFbCxzdCk9Pnt2YXIgdXQ9TmUoKSxudD1GdW5jdGlvbi5wcm90b3R5cGUscXM9bnQuYmluZCxlcj1udC5jYWxsLElzPXV0JiZxcy5iaW5kKGVyLGVyKTtzdC5leHBvcnRzPXV0P2Z1bmN0aW9uKGUpe3JldHVybiBlJiZJcyhlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmZ1bmN0aW9uKCl7cmV0dXJuIGVyLmFwcGx5KGUsYXJndW1lbnRzKX19fSk7dmFyIEllPXkoKENsLGl0KT0+e3ZhciBhdD1RKCksUnM9YXQoe30udG9TdHJpbmcpLHhzPWF0KFwiXCIuc2xpY2UpO2l0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHhzKFJzKGUpLDgsLTEpfX0pO3ZhciBjdD15KChtbCxvdCk9Pnt2YXIgUHM9RygpLGtzPVEoKSxMcz1zZSgpLE1zPUllKCkscnI9UHMuT2JqZWN0LGpzPWtzKFwiXCIuc3BsaXQpO290LmV4cG9ydHM9THMoZnVuY3Rpb24oKXtyZXR1cm4hcnIoXCJ6XCIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIE1zKGUpPT1cIlN0cmluZ1wiP2pzKGUsXCJcIik6cnIoZSl9OnJyfSk7dmFyIHRyPXkoKGdsLER0KT0+e3ZhciAkcz1HKCksVXM9JHMuVHlwZUVycm9yO0R0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT09bnVsbCl0aHJvdyBVcyhcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiK2UpO3JldHVybiBlfX0pO3ZhciBSZT15KChGbCxsdCk9Pnt2YXIgR3M9Y3QoKSxWcz10cigpO2x0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIEdzKFZzKGUpKX19KTt2YXIgSz15KChBbCxodCk9PntodC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09XCJmdW5jdGlvblwifX0pO3ZhciBEZT15KCh2bCxwdCk9Pnt2YXIgWHM9SygpO3B0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1cIm9iamVjdFwiP2UhPT1udWxsOlhzKGUpfX0pO3ZhciBnZT15KChfbCxmdCk9Pnt2YXIgdXI9RygpLEhzPUsoKSx6cz1mdW5jdGlvbihlKXtyZXR1cm4gSHMoZSk/ZTp2b2lkIDB9O2Z0LmV4cG9ydHM9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3pzKHVyW2VdKTp1cltlXSYmdXJbZV1bcl19fSk7dmFyIG5yPXkoKFNsLGR0KT0+e3ZhciBXcz1RKCk7ZHQuZXhwb3J0cz1Xcyh7fS5pc1Byb3RvdHlwZU9mKX0pO3ZhciBDdD15KCh5bCxFdCk9Pnt2YXIgWXM9Z2UoKTtFdC5leHBvcnRzPVlzKFwibmF2aWdhdG9yXCIsXCJ1c2VyQWdlbnRcIil8fFwiXCJ9KTt2YXIgU3Q9eSgoVGwsX3QpPT57dmFyIHZ0PUcoKSxzcj1DdCgpLG10PXZ0LnByb2Nlc3MsZ3Q9dnQuRGVubyxGdD1tdCYmbXQudmVyc2lvbnN8fGd0JiZndC52ZXJzaW9uLEF0PUZ0JiZGdC52OCx0ZSx4ZTtBdCYmKHRlPUF0LnNwbGl0KFwiLlwiKSx4ZT10ZVswXT4wJiZ0ZVswXTw0PzE6Kyh0ZVswXSt0ZVsxXSkpOyF4ZSYmc3ImJih0ZT1zci5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pLCghdGV8fHRlWzFdPj03NCkmJih0ZT1zci5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyksdGUmJih4ZT0rdGVbMV0pKSk7X3QuZXhwb3J0cz14ZX0pO3ZhciBhcj15KChCbCxUdCk9Pnt2YXIgeXQ9U3QoKSxRcz1zZSgpO1R0LmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhUXMoZnVuY3Rpb24oKXt2YXIgZT1TeW1ib2woKTtyZXR1cm4hU3RyaW5nKGUpfHwhKE9iamVjdChlKWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZ5dCYmeXQ8NDF9KX0pO3ZhciBpcj15KChibCxCdCk9Pnt2YXIgS3M9YXIoKTtCdC5leHBvcnRzPUtzJiYhU3ltYm9sLnNoYW0mJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PVwic3ltYm9sXCJ9KTt2YXIgb3I9eSgod2wsYnQpPT57dmFyIEpzPUcoKSxacz1nZSgpLGVhPUsoKSxyYT1ucigpLHRhPWlyKCksdWE9SnMuT2JqZWN0O2J0LmV4cG9ydHM9dGE/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1cInN5bWJvbFwifTpmdW5jdGlvbihlKXt2YXIgcj1acyhcIlN5bWJvbFwiKTtyZXR1cm4gZWEocikmJnJhKHIucHJvdG90eXBlLHVhKGUpKX19KTt2YXIgUGU9eSgoTmwsd3QpPT57dmFyIG5hPUcoKSxzYT1uYS5TdHJpbmc7d3QuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIHNhKGUpfWNhdGNoe3JldHVyblwiT2JqZWN0XCJ9fX0pO3ZhciBGZT15KChPbCxOdCk9Pnt2YXIgYWE9RygpLGlhPUsoKSxvYT1QZSgpLGNhPWFhLlR5cGVFcnJvcjtOdC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGlhKGUpKXJldHVybiBlO3Rocm93IGNhKG9hKGUpK1wiIGlzIG5vdCBhIGZ1bmN0aW9uXCIpfX0pO3ZhciBrZT15KChxbCxPdCk9Pnt2YXIgRGE9RmUoKTtPdC5leHBvcnRzPWZ1bmN0aW9uKGUscil7dmFyIHQ9ZVtyXTtyZXR1cm4gdD09bnVsbD92b2lkIDA6RGEodCl9fSk7dmFyIEl0PXkoKElsLHF0KT0+e3ZhciBsYT1HKCksY3I9Y2UoKSxEcj1LKCksbHI9RGUoKSxoYT1sYS5UeXBlRXJyb3I7cXQuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3ZhciB0LHM7aWYocj09PVwic3RyaW5nXCImJkRyKHQ9ZS50b1N0cmluZykmJiFscihzPWNyKHQsZSkpfHxEcih0PWUudmFsdWVPZikmJiFscihzPWNyKHQsZSkpfHxyIT09XCJzdHJpbmdcIiYmRHIodD1lLnRvU3RyaW5nKSYmIWxyKHM9Y3IodCxlKSkpcmV0dXJuIHM7dGhyb3cgaGEoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9fSk7dmFyIHh0PXkoKFJsLFJ0KT0+e1J0LmV4cG9ydHM9ITF9KTt2YXIgTGU9eSgoeGwsa3QpPT57dmFyIFB0PUcoKSxwYT1PYmplY3QuZGVmaW5lUHJvcGVydHk7a3QuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3RyeXtwYShQdCxlLHt2YWx1ZTpyLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoe1B0W2VdPXJ9cmV0dXJuIHJ9fSk7dmFyIE1lPXkoKFBsLE10KT0+e3ZhciBmYT1HKCksZGE9TGUoKSxMdD1cIl9fY29yZS1qc19zaGFyZWRfX1wiLEVhPWZhW0x0XXx8ZGEoTHQse30pO010LmV4cG9ydHM9RWF9KTt2YXIgaHI9eSgoa2wsJHQpPT57dmFyIENhPXh0KCksanQ9TWUoKTsoJHQuZXhwb3J0cz1mdW5jdGlvbihlLHIpe3JldHVybiBqdFtlXXx8KGp0W2VdPXIhPT12b2lkIDA/cjp7fSl9KShcInZlcnNpb25zXCIsW10pLnB1c2goe3ZlcnNpb246XCIzLjIyLjJcIixtb2RlOkNhP1wicHVyZVwiOlwiZ2xvYmFsXCIsY29weXJpZ2h0OlwiXFx4QTkgMjAxNC0yMDIyIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpXCIsbGljZW5zZTpcImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMjIuMi9MSUNFTlNFXCIsc291cmNlOlwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanNcIn0pfSk7dmFyIHByPXkoKExsLFV0KT0+e3ZhciBtYT1HKCksZ2E9dHIoKSxGYT1tYS5PYmplY3Q7VXQuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gRmEoZ2EoZSkpfX0pO3ZhciBhZT15KChNbCxHdCk9Pnt2YXIgQWE9USgpLHZhPXByKCksX2E9QWEoe30uaGFzT3duUHJvcGVydHkpO0d0LmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24ocix0KXtyZXR1cm4gX2EodmEociksdCl9fSk7dmFyIGZyPXkoKGpsLFZ0KT0+e3ZhciBTYT1RKCkseWE9MCxUYT1NYXRoLnJhbmRvbSgpLEJhPVNhKDEgLnRvU3RyaW5nKTtWdC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVyblwiU3ltYm9sKFwiKyhlPT09dm9pZCAwP1wiXCI6ZSkrXCIpX1wiK0JhKCsreWErVGEsMzYpfX0pO3ZhciBoZT15KCgkbCxZdCk9Pnt2YXIgYmE9RygpLHdhPWhyKCksWHQ9YWUoKSxOYT1mcigpLEh0PWFyKCksV3Q9aXIoKSxmZT13YShcIndrc1wiKSxsZT1iYS5TeW1ib2wsenQ9bGUmJmxlLmZvcixPYT1XdD9sZTpsZSYmbGUud2l0aG91dFNldHRlcnx8TmE7WXQuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighWHQoZmUsZSl8fCEoSHR8fHR5cGVvZiBmZVtlXT09XCJzdHJpbmdcIikpe3ZhciByPVwiU3ltYm9sLlwiK2U7SHQmJlh0KGxlLGUpP2ZlW2VdPWxlW2VdOld0JiZ6dD9mZVtlXT16dChyKTpmZVtlXT1PYShyKX1yZXR1cm4gZmVbZV19fSk7dmFyIFp0PXkoKFVsLEp0KT0+e3ZhciBxYT1HKCksSWE9Y2UoKSxRdD1EZSgpLEt0PW9yKCksUmE9a2UoKSx4YT1JdCgpLFBhPWhlKCksa2E9cWEuVHlwZUVycm9yLExhPVBhKFwidG9QcmltaXRpdmVcIik7SnQuZXhwb3J0cz1mdW5jdGlvbihlLHIpe2lmKCFRdChlKXx8S3QoZSkpcmV0dXJuIGU7dmFyIHQ9UmEoZSxMYSkscztpZih0KXtpZihyPT09dm9pZCAwJiYocj1cImRlZmF1bHRcIikscz1JYSh0LGUsciksIVF0KHMpfHxLdChzKSlyZXR1cm4gczt0aHJvdyBrYShcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX1yZXR1cm4gcj09PXZvaWQgMCYmKHI9XCJudW1iZXJcIikseGEoZSxyKX19KTt2YXIgamU9eSgoR2wsZXUpPT57dmFyIE1hPVp0KCksamE9b3IoKTtldS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciByPU1hKGUsXCJzdHJpbmdcIik7cmV0dXJuIGphKHIpP3I6citcIlwifX0pO3ZhciB1dT15KChWbCx0dSk9Pnt2YXIgJGE9RygpLHJ1PURlKCksZHI9JGEuZG9jdW1lbnQsVWE9cnUoZHIpJiZydShkci5jcmVhdGVFbGVtZW50KTt0dS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBVYT9kci5jcmVhdGVFbGVtZW50KGUpOnt9fX0pO3ZhciBFcj15KChYbCxudSk9Pnt2YXIgR2E9b2UoKSxWYT1zZSgpLFhhPXV1KCk7bnUuZXhwb3J0cz0hR2EmJiFWYShmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoWGEoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmEhPTd9KX0pO3ZhciBDcj15KGF1PT57dmFyIEhhPW9lKCksemE9Y2UoKSxXYT1ydCgpLFlhPXFlKCksUWE9UmUoKSxLYT1qZSgpLEphPWFlKCksWmE9RXIoKSxzdT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2F1LmY9SGE/c3U6ZnVuY3Rpb24ocix0KXtpZihyPVFhKHIpLHQ9S2EodCksWmEpdHJ5e3JldHVybiBzdShyLHQpfWNhdGNoe31pZihKYShyLHQpKXJldHVybiBZYSghemEoV2EuZixyLHQpLHJbdF0pfX0pO3ZhciBvdT15KCh6bCxpdSk9Pnt2YXIgZWk9b2UoKSxyaT1zZSgpO2l1LmV4cG9ydHM9ZWkmJnJpKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sXCJwcm90b3R5cGVcIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGUhPTQyfSl9KTt2YXIgZGU9eSgoV2wsRHUpPT57dmFyIGN1PUcoKSx0aT1EZSgpLHVpPWN1LlN0cmluZyxuaT1jdS5UeXBlRXJyb3I7RHUuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih0aShlKSlyZXR1cm4gZTt0aHJvdyBuaSh1aShlKStcIiBpcyBub3QgYW4gb2JqZWN0XCIpfX0pO3ZhciBVZT15KGh1PT57dmFyIHNpPUcoKSxhaT1vZSgpLGlpPUVyKCksb2k9b3UoKSwkZT1kZSgpLGx1PWplKCksY2k9c2kuVHlwZUVycm9yLG1yPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxEaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGdyPVwiZW51bWVyYWJsZVwiLEZyPVwiY29uZmlndXJhYmxlXCIsQXI9XCJ3cml0YWJsZVwiO2h1LmY9YWk/b2k/ZnVuY3Rpb24ocix0LHMpe2lmKCRlKHIpLHQ9bHUodCksJGUocyksdHlwZW9mIHI9PVwiZnVuY3Rpb25cIiYmdD09PVwicHJvdG90eXBlXCImJlwidmFsdWVcImluIHMmJkFyIGluIHMmJiFzW0FyXSl7dmFyIGM9RGkocix0KTtjJiZjW0FyXSYmKHJbdF09cy52YWx1ZSxzPXtjb25maWd1cmFibGU6RnIgaW4gcz9zW0ZyXTpjW0ZyXSxlbnVtZXJhYmxlOmdyIGluIHM/c1tncl06Y1tncl0sd3JpdGFibGU6ITF9KX1yZXR1cm4gbXIocix0LHMpfTptcjpmdW5jdGlvbihyLHQscyl7aWYoJGUociksdD1sdSh0KSwkZShzKSxpaSl0cnl7cmV0dXJuIG1yKHIsdCxzKX1jYXRjaHt9aWYoXCJnZXRcImluIHN8fFwic2V0XCJpbiBzKXRocm93IGNpKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWRcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gcyYmKHJbdF09cy52YWx1ZSkscn19KTt2YXIgR2U9eSgoUWwscHUpPT57dmFyIGxpPW9lKCksaGk9VWUoKSxwaT1xZSgpO3B1LmV4cG9ydHM9bGk/ZnVuY3Rpb24oZSxyLHQpe3JldHVybiBoaS5mKGUscixwaSgxLHQpKX06ZnVuY3Rpb24oZSxyLHQpe3JldHVybiBlW3JdPXQsZX19KTt2YXIgVmU9eSgoS2wsZnUpPT57dmFyIGZpPVEoKSxkaT1LKCksdnI9TWUoKSxFaT1maShGdW5jdGlvbi50b1N0cmluZyk7ZGkodnIuaW5zcGVjdFNvdXJjZSl8fCh2ci5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBFaShlKX0pO2Z1LmV4cG9ydHM9dnIuaW5zcGVjdFNvdXJjZX0pO3ZhciBDdT15KChKbCxFdSk9Pnt2YXIgQ2k9RygpLG1pPUsoKSxnaT1WZSgpLGR1PUNpLldlYWtNYXA7RXUuZXhwb3J0cz1taShkdSkmJi9uYXRpdmUgY29kZS8udGVzdChnaShkdSkpfSk7dmFyIEZ1PXkoKFpsLGd1KT0+e3ZhciBGaT1ocigpLEFpPWZyKCksbXU9RmkoXCJrZXlzXCIpO2d1LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG11W2VdfHwobXVbZV09QWkoZSkpfX0pO3ZhciBfcj15KChlMixBdSk9PntBdS5leHBvcnRzPXt9fSk7dmFyIEJ1PXkoKHIyLFR1KT0+e3ZhciB2aT1DdSgpLHl1PUcoKSxTcj1RKCksX2k9RGUoKSxTaT1HZSgpLHlyPWFlKCksVHI9TWUoKSx5aT1GdSgpLFRpPV9yKCksdnU9XCJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZFwiLGJyPXl1LlR5cGVFcnJvcixCaT15dS5XZWFrTWFwLFhlLEFlLEhlLGJpPWZ1bmN0aW9uKGUpe3JldHVybiBIZShlKT9BZShlKTpYZShlLHt9KX0sd2k9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciB0O2lmKCFfaShyKXx8KHQ9QWUocikpLnR5cGUhPT1lKXRocm93IGJyKFwiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBcIitlK1wiIHJlcXVpcmVkXCIpO3JldHVybiB0fX07dml8fFRyLnN0YXRlPyhpZT1Uci5zdGF0ZXx8KFRyLnN0YXRlPW5ldyBCaSksX3U9U3IoaWUuZ2V0KSxCcj1TcihpZS5oYXMpLFN1PVNyKGllLnNldCksWGU9ZnVuY3Rpb24oZSxyKXtpZihCcihpZSxlKSl0aHJvdyBuZXcgYnIodnUpO3JldHVybiByLmZhY2FkZT1lLFN1KGllLGUscikscn0sQWU9ZnVuY3Rpb24oZSl7cmV0dXJuIF91KGllLGUpfHx7fX0sSGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEJyKGllLGUpfSk6KHBlPXlpKFwic3RhdGVcIiksVGlbcGVdPSEwLFhlPWZ1bmN0aW9uKGUscil7aWYoeXIoZSxwZSkpdGhyb3cgbmV3IGJyKHZ1KTtyZXR1cm4gci5mYWNhZGU9ZSxTaShlLHBlLHIpLHJ9LEFlPWZ1bmN0aW9uKGUpe3JldHVybiB5cihlLHBlKT9lW3BlXTp7fX0sSGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHlyKGUscGUpfSk7dmFyIGllLF91LEJyLFN1LHBlO1R1LmV4cG9ydHM9e3NldDpYZSxnZXQ6QWUsaGFzOkhlLGVuZm9yY2U6YmksZ2V0dGVyRm9yOndpfX0pO3ZhciBOdT15KCh0Mix3dSk9Pnt2YXIgd3I9b2UoKSxOaT1hZSgpLGJ1PUZ1bmN0aW9uLnByb3RvdHlwZSxPaT13ciYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixOcj1OaShidSxcIm5hbWVcIikscWk9TnImJmZ1bmN0aW9uKCl7fS5uYW1lPT09XCJzb21ldGhpbmdcIixJaT1OciYmKCF3cnx8d3ImJk9pKGJ1LFwibmFtZVwiKS5jb25maWd1cmFibGUpO3d1LmV4cG9ydHM9e0VYSVNUUzpOcixQUk9QRVI6cWksQ09ORklHVVJBQkxFOklpfX0pO3ZhciB4dT15KCh1MixSdSk9Pnt2YXIgUmk9RygpLE91PUsoKSx4aT1hZSgpLHF1PUdlKCksUGk9TGUoKSxraT1WZSgpLEl1PUJ1KCksTGk9TnUoKS5DT05GSUdVUkFCTEUsTWk9SXUuZ2V0LGppPUl1LmVuZm9yY2UsJGk9U3RyaW5nKFN0cmluZykuc3BsaXQoXCJTdHJpbmdcIik7KFJ1LmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHQscyl7dmFyIGM9cz8hIXMudW5zYWZlOiExLG49cz8hIXMuZW51bWVyYWJsZTohMSxhPXM/ISFzLm5vVGFyZ2V0R2V0OiExLHA9cyYmcy5uYW1lIT09dm9pZCAwP3MubmFtZTpyLEQ7aWYoT3UodCkmJihTdHJpbmcocCkuc2xpY2UoMCw3KT09PVwiU3ltYm9sKFwiJiYocD1cIltcIitTdHJpbmcocCkucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLFwiJDFcIikrXCJdXCIpLCgheGkodCxcIm5hbWVcIil8fExpJiZ0Lm5hbWUhPT1wKSYmcXUodCxcIm5hbWVcIixwKSxEPWppKHQpLEQuc291cmNlfHwoRC5zb3VyY2U9JGkuam9pbih0eXBlb2YgcD09XCJzdHJpbmdcIj9wOlwiXCIpKSksZT09PVJpKXtuP2Vbcl09dDpQaShyLHQpO3JldHVybn1lbHNlIGM/IWEmJmVbcl0mJihuPSEwKTpkZWxldGUgZVtyXTtuP2Vbcl09dDpxdShlLHIsdCl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIE91KHRoaXMpJiZNaSh0aGlzKS5zb3VyY2V8fGtpKHRoaXMpfSl9KTt2YXIgT3I9eSgobjIsUHUpPT57dmFyIFVpPU1hdGguY2VpbCxHaT1NYXRoLmZsb29yO1B1LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHI9K2U7cmV0dXJuIHIhPT1yfHxyPT09MD8wOihyPjA/R2k6VWkpKHIpfX0pO3ZhciBMdT15KChzMixrdSk9Pnt2YXIgVmk9T3IoKSxYaT1NYXRoLm1heCxIaT1NYXRoLm1pbjtrdS5leHBvcnRzPWZ1bmN0aW9uKGUscil7dmFyIHQ9VmkoZSk7cmV0dXJuIHQ8MD9YaSh0K3IsMCk6SGkodCxyKX19KTt2YXIganU9eSgoYTIsTXUpPT57dmFyIHppPU9yKCksV2k9TWF0aC5taW47TXUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP1dpKHppKGUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSk7dmFyIHZlPXkoKGkyLCR1KT0+e3ZhciBZaT1qdSgpOyR1LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIFlpKGUubGVuZ3RoKX19KTt2YXIgVnU9eSgobzIsR3UpPT57dmFyIFFpPVJlKCksS2k9THUoKSxKaT12ZSgpLFV1PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihyLHQscyl7dmFyIGM9UWkociksbj1KaShjKSxhPUtpKHMsbikscDtpZihlJiZ0IT10KXtmb3IoO24+YTspaWYocD1jW2ErK10scCE9cClyZXR1cm4hMH1lbHNlIGZvcig7bj5hO2ErKylpZigoZXx8YSBpbiBjKSYmY1thXT09PXQpcmV0dXJuIGV8fGF8fDA7cmV0dXJuIWUmJi0xfX07R3UuZXhwb3J0cz17aW5jbHVkZXM6VXUoITApLGluZGV4T2Y6VXUoITEpfX0pO3ZhciB6dT15KChjMixIdSk9Pnt2YXIgWmk9USgpLHFyPWFlKCksZW89UmUoKSxybz1WdSgpLmluZGV4T2YsdG89X3IoKSxYdT1aaShbXS5wdXNoKTtIdS5leHBvcnRzPWZ1bmN0aW9uKGUscil7dmFyIHQ9ZW8oZSkscz0wLGM9W10sbjtmb3IobiBpbiB0KSFxcih0byxuKSYmcXIodCxuKSYmWHUoYyxuKTtmb3IoO3IubGVuZ3RoPnM7KXFyKHQsbj1yW3MrK10pJiYofnJvKGMsbil8fFh1KGMsbikpO3JldHVybiBjfX0pO3ZhciBZdT15KChEMixXdSk9PntXdS5leHBvcnRzPVtcImNvbnN0cnVjdG9yXCIsXCJoYXNPd25Qcm9wZXJ0eVwiLFwiaXNQcm90b3R5cGVPZlwiLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcInRvTG9jYWxlU3RyaW5nXCIsXCJ0b1N0cmluZ1wiLFwidmFsdWVPZlwiXX0pO3ZhciBLdT15KFF1PT57dmFyIHVvPXp1KCksbm89WXUoKSxzbz1uby5jb25jYXQoXCJsZW5ndGhcIixcInByb3RvdHlwZVwiKTtRdS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihyKXtyZXR1cm4gdW8ocixzbyl9fSk7dmFyIFp1PXkoSnU9PntKdS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9KTt2YXIgcm49eSgocDIsZW4pPT57dmFyIGFvPWdlKCksaW89USgpLG9vPUt1KCksY289WnUoKSxEbz1kZSgpLGxvPWlvKFtdLmNvbmNhdCk7ZW4uZXhwb3J0cz1hbyhcIlJlZmxlY3RcIixcIm93bktleXNcIil8fGZ1bmN0aW9uKHIpe3ZhciB0PW9vLmYoRG8ocikpLHM9Y28uZjtyZXR1cm4gcz9sbyh0LHMocikpOnR9fSk7dmFyIG5uPXkoKGYyLHVuKT0+e3ZhciB0bj1hZSgpLGhvPXJuKCkscG89Q3IoKSxmbz1VZSgpO3VuLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHQpe2Zvcih2YXIgcz1obyhyKSxjPWZvLmYsbj1wby5mLGE9MDthPHMubGVuZ3RoO2ErKyl7dmFyIHA9c1thXTshdG4oZSxwKSYmISh0JiZ0bih0LHApKSYmYyhlLHAsbihyLHApKX19fSk7dmFyIGFuPXkoKGQyLHNuKT0+e3ZhciBFbz1zZSgpLENvPUsoKSxtbz0vI3xcXC5wcm90b3R5cGVcXC4vLF9lPWZ1bmN0aW9uKGUscil7dmFyIHQ9Rm9bZ28oZSldO3JldHVybiB0PT12bz8hMDp0PT1Bbz8hMTpDbyhyKT9FbyhyKTohIXJ9LGdvPV9lLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UobW8sXCIuXCIpLnRvTG93ZXJDYXNlKCl9LEZvPV9lLmRhdGE9e30sQW89X2UuTkFUSVZFPVwiTlwiLHZvPV9lLlBPTFlGSUxMPVwiUFwiO3NuLmV4cG9ydHM9X2V9KTt2YXIgemU9eSgoRTIsb24pPT57dmFyIElyPUcoKSxfbz1DcigpLmYsU289R2UoKSx5bz14dSgpLFRvPUxlKCksQm89bm4oKSxibz1hbigpO29uLmV4cG9ydHM9ZnVuY3Rpb24oZSxyKXt2YXIgdD1lLnRhcmdldCxzPWUuZ2xvYmFsLGM9ZS5zdGF0LG4sYSxwLEQsZyxpO2lmKHM/YT1JcjpjP2E9SXJbdF18fFRvKHQse30pOmE9KElyW3RdfHx7fSkucHJvdG90eXBlLGEpZm9yKHAgaW4gcil7aWYoZz1yW3BdLGUubm9UYXJnZXRHZXQ/KGk9X28oYSxwKSxEPWkmJmkudmFsdWUpOkQ9YVtwXSxuPWJvKHM/cDp0KyhjP1wiLlwiOlwiI1wiKStwLGUuZm9yY2VkKSwhbiYmRCE9PXZvaWQgMCl7aWYodHlwZW9mIGc9PXR5cGVvZiBEKWNvbnRpbnVlO0JvKGcsRCl9KGUuc2hhbXx8RCYmRC5zaGFtKSYmU28oZyxcInNoYW1cIiwhMCkseW8oYSxwLGcsZSl9fX0pO3ZhciBjbj15KCgpPT57dmFyIHdvPXplKCksTm89RygpO3dvKHtnbG9iYWw6ITB9LHtnbG9iYWxUaGlzOk5vfSl9KTt2YXIgRG49eSgoKT0+e2NuKCl9KTt2YXIgUnI9eSgoQTIsbG4pPT57dmFyIE9vPUllKCk7bG4uZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihyKXtyZXR1cm4gT28ocik9PVwiQXJyYXlcIn19KTt2YXIgeHI9eSgodjIscG4pPT57dmFyIGhuPVEoKSxxbz1GZSgpLElvPU5lKCksUm89aG4oaG4uYmluZCk7cG4uZXhwb3J0cz1mdW5jdGlvbihlLHIpe3JldHVybiBxbyhlKSxyPT09dm9pZCAwP2U6SW8/Um8oZSxyKTpmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHIsYXJndW1lbnRzKX19fSk7dmFyIEVuPXkoKF8yLGRuKT0+e1widXNlIHN0cmljdFwiO3ZhciB4bz1HKCksUG89UnIoKSxrbz12ZSgpLExvPXhyKCksTW89eG8uVHlwZUVycm9yLGZuPWZ1bmN0aW9uKGUscix0LHMsYyxuLGEscCl7Zm9yKHZhciBEPWMsZz0wLGk9YT9MbyhhLHApOiExLGwsaDtnPHM7KXtpZihnIGluIHQpe2lmKGw9aT9pKHRbZ10sZyxyKTp0W2ddLG4+MCYmUG8obCkpaD1rbyhsKSxEPWZuKGUscixsLGgsRCxuLTEpLTE7ZWxzZXtpZihEPj05MDA3MTk5MjU0NzQwOTkxKXRocm93IE1vKFwiRXhjZWVkIHRoZSBhY2NlcHRhYmxlIGFycmF5IGxlbmd0aFwiKTtlW0RdPWx9RCsrfWcrK31yZXR1cm4gRH07ZG4uZXhwb3J0cz1mbn0pO3ZhciBnbj15KChTMixtbik9Pnt2YXIgam89aGUoKSwkbz1qbyhcInRvU3RyaW5nVGFnXCIpLENuPXt9O0NuWyRvXT1cInpcIjttbi5leHBvcnRzPVN0cmluZyhDbik9PT1cIltvYmplY3Qgel1cIn0pO3ZhciBQcj15KCh5MixGbik9Pnt2YXIgVW89RygpLEdvPWduKCksVm89SygpLFdlPUllKCksWG89aGUoKSxIbz1YbyhcInRvU3RyaW5nVGFnXCIpLHpvPVVvLk9iamVjdCxXbz1XZShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpPT1cIkFyZ3VtZW50c1wiLFlvPWZ1bmN0aW9uKGUscil7dHJ5e3JldHVybiBlW3JdfWNhdGNoe319O0ZuLmV4cG9ydHM9R28/V2U6ZnVuY3Rpb24oZSl7dmFyIHIsdCxzO3JldHVybiBlPT09dm9pZCAwP1wiVW5kZWZpbmVkXCI6ZT09PW51bGw/XCJOdWxsXCI6dHlwZW9mKHQ9WW8ocj16byhlKSxIbykpPT1cInN0cmluZ1wiP3Q6V28/V2Uocik6KHM9V2UocikpPT1cIk9iamVjdFwiJiZWbyhyLmNhbGxlZSk/XCJBcmd1bWVudHNcIjpzfX0pO3ZhciBUbj15KChUMix5bik9Pnt2YXIgUW89USgpLEtvPXNlKCksQW49SygpLEpvPVByKCksWm89Z2UoKSxlYz1WZSgpLHZuPWZ1bmN0aW9uKCl7fSxyYz1bXSxfbj1abyhcIlJlZmxlY3RcIixcImNvbnN0cnVjdFwiKSxrcj0vXlxccyooPzpjbGFzc3xmdW5jdGlvbilcXGIvLHRjPVFvKGtyLmV4ZWMpLHVjPSFrci5leGVjKHZuKSxTZT1mdW5jdGlvbihyKXtpZighQW4ocikpcmV0dXJuITE7dHJ5e3JldHVybiBfbih2bixyYyxyKSwhMH1jYXRjaHtyZXR1cm4hMX19LFNuPWZ1bmN0aW9uKHIpe2lmKCFBbihyKSlyZXR1cm4hMTtzd2l0Y2goSm8ocikpe2Nhc2VcIkFzeW5jRnVuY3Rpb25cIjpjYXNlXCJHZW5lcmF0b3JGdW5jdGlvblwiOmNhc2VcIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25cIjpyZXR1cm4hMX10cnl7cmV0dXJuIHVjfHwhIXRjKGtyLGVjKHIpKX1jYXRjaHtyZXR1cm4hMH19O1NuLnNoYW09ITA7eW4uZXhwb3J0cz0hX258fEtvKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIFNlKFNlLmNhbGwpfHwhU2UoT2JqZWN0KXx8IVNlKGZ1bmN0aW9uKCl7ZT0hMH0pfHxlfSk/U246U2V9KTt2YXIgTm49eSgoQjIsd24pPT57dmFyIG5jPUcoKSxCbj1ScigpLHNjPVRuKCksYWM9RGUoKSxpYz1oZSgpLG9jPWljKFwic3BlY2llc1wiKSxibj1uYy5BcnJheTt3bi5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciByO3JldHVybiBCbihlKSYmKHI9ZS5jb25zdHJ1Y3RvcixzYyhyKSYmKHI9PT1ibnx8Qm4oci5wcm90b3R5cGUpKT9yPXZvaWQgMDphYyhyKSYmKHI9cltvY10scj09PW51bGwmJihyPXZvaWQgMCkpKSxyPT09dm9pZCAwP2JuOnJ9fSk7dmFyIHFuPXkoKGIyLE9uKT0+e3ZhciBjYz1ObigpO09uLmV4cG9ydHM9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbmV3KGNjKGUpKShyPT09MD8wOnIpfX0pO3ZhciBJbj15KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIERjPXplKCksbGM9RW4oKSxoYz1GZSgpLHBjPXByKCksZmM9dmUoKSxkYz1xbigpO0RjKHt0YXJnZXQ6XCJBcnJheVwiLHByb3RvOiEwfSx7ZmxhdE1hcDpmdW5jdGlvbihyKXt2YXIgdD1wYyh0aGlzKSxzPWZjKHQpLGM7cmV0dXJuIGhjKHIpLGM9ZGModCwwKSxjLmxlbmd0aD1sYyhjLHQsdCxzLDAsMSxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSxjfX0pfSk7dmFyIExyPXkoKE8yLFJuKT0+e1JuLmV4cG9ydHM9e319KTt2YXIgUG49eSgocTIseG4pPT57dmFyIEVjPWhlKCksQ2M9THIoKSxtYz1FYyhcIml0ZXJhdG9yXCIpLGdjPUFycmF5LnByb3RvdHlwZTt4bi5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlIT09dm9pZCAwJiYoQ2MuQXJyYXk9PT1lfHxnY1ttY109PT1lKX19KTt2YXIgTXI9eSgoSTIsTG4pPT57dmFyIEZjPVByKCksa249a2UoKSxBYz1McigpLHZjPWhlKCksX2M9dmMoXCJpdGVyYXRvclwiKTtMbi5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUhPW51bGwpcmV0dXJuIGtuKGUsX2MpfHxrbihlLFwiQEBpdGVyYXRvclwiKXx8QWNbRmMoZSldfX0pO3ZhciBqbj15KChSMixNbik9Pnt2YXIgU2M9RygpLHljPWNlKCksVGM9RmUoKSxCYz1kZSgpLGJjPVBlKCksd2M9TXIoKSxOYz1TYy5UeXBlRXJyb3I7TW4uZXhwb3J0cz1mdW5jdGlvbihlLHIpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8Mj93YyhlKTpyO2lmKFRjKHQpKXJldHVybiBCYyh5Yyh0LGUpKTt0aHJvdyBOYyhiYyhlKStcIiBpcyBub3QgaXRlcmFibGVcIil9fSk7dmFyIEduPXkoKHgyLFVuKT0+e3ZhciBPYz1jZSgpLCRuPWRlKCkscWM9a2UoKTtVbi5leHBvcnRzPWZ1bmN0aW9uKGUscix0KXt2YXIgcyxjOyRuKGUpO3RyeXtpZihzPXFjKGUsXCJyZXR1cm5cIiksIXMpe2lmKHI9PT1cInRocm93XCIpdGhyb3cgdDtyZXR1cm4gdH1zPU9jKHMsZSl9Y2F0Y2gobil7Yz0hMCxzPW59aWYocj09PVwidGhyb3dcIil0aHJvdyB0O2lmKGMpdGhyb3cgcztyZXR1cm4gJG4ocyksdH19KTt2YXIgV249eSgoUDIsem4pPT57dmFyIEljPUcoKSxSYz14cigpLHhjPWNlKCksUGM9ZGUoKSxrYz1QZSgpLExjPVBuKCksTWM9dmUoKSxWbj1ucigpLGpjPWpuKCksJGM9TXIoKSxYbj1HbigpLFVjPUljLlR5cGVFcnJvcixZZT1mdW5jdGlvbihlLHIpe3RoaXMuc3RvcHBlZD1lLHRoaXMucmVzdWx0PXJ9LEhuPVllLnByb3RvdHlwZTt6bi5leHBvcnRzPWZ1bmN0aW9uKGUscix0KXt2YXIgcz10JiZ0LnRoYXQsYz0hISh0JiZ0LkFTX0VOVFJJRVMpLG49ISEodCYmdC5JU19JVEVSQVRPUiksYT0hISh0JiZ0LklOVEVSUlVQVEVEKSxwPVJjKHIscyksRCxnLGksbCxoLEMsZCxtPWZ1bmN0aW9uKEIpe3JldHVybiBEJiZYbihELFwibm9ybWFsXCIsQiksbmV3IFllKCEwLEIpfSxUPWZ1bmN0aW9uKEIpe3JldHVybiBjPyhQYyhCKSxhP3AoQlswXSxCWzFdLG0pOnAoQlswXSxCWzFdKSk6YT9wKEIsbSk6cChCKX07aWYobilEPWU7ZWxzZXtpZihnPSRjKGUpLCFnKXRocm93IFVjKGtjKGUpK1wiIGlzIG5vdCBpdGVyYWJsZVwiKTtpZihMYyhnKSl7Zm9yKGk9MCxsPU1jKGUpO2w+aTtpKyspaWYoaD1UKGVbaV0pLGgmJlZuKEhuLGgpKXJldHVybiBoO3JldHVybiBuZXcgWWUoITEpfUQ9amMoZSxnKX1mb3IoQz1ELm5leHQ7IShkPXhjKEMsRCkpLmRvbmU7KXt0cnl7aD1UKGQudmFsdWUpfWNhdGNoKEIpe1huKEQsXCJ0aHJvd1wiLEIpfWlmKHR5cGVvZiBoPT1cIm9iamVjdFwiJiZoJiZWbihIbixoKSlyZXR1cm4gaH1yZXR1cm4gbmV3IFllKCExKX19KTt2YXIgUW49eSgoazIsWW4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIEdjPWplKCksVmM9VWUoKSxYYz1xZSgpO1luLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLHQpe3ZhciBzPUdjKHIpO3MgaW4gZT9WYy5mKGUscyxYYygwLHQpKTplW3NdPXR9fSk7dmFyIEtuPXkoKCk9Pnt2YXIgSGM9emUoKSx6Yz1XbigpLFdjPVFuKCk7SGMoe3RhcmdldDpcIk9iamVjdFwiLHN0YXQ6ITB9LHtmcm9tRW50cmllczpmdW5jdGlvbihyKXt2YXIgdD17fTtyZXR1cm4gemMocixmdW5jdGlvbihzLGMpe1djKHQscyxjKX0se0FTX0VOVFJJRVM6ITB9KSx0fX0pfSk7dmFyIGlsPXkoKGoyLEJzKT0+e3ZhciBZYz1bXCJjbGlOYW1lXCIsXCJjbGlDYXRlZ29yeVwiLFwiY2xpRGVzY3JpcHRpb25cIl0sSm4sWm4sZXMscnMsdHMsdXM7ZnVuY3Rpb24gUWMoZSxyKXtpZihlPT1udWxsKXJldHVybnt9O3ZhciB0PUtjKGUscikscyxjO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKGM9MDtjPG4ubGVuZ3RoO2MrKylzPW5bY10sIShyLmluZGV4T2Yocyk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHMpfHwodFtzXT1lW3NdKSl9cmV0dXJuIHR9ZnVuY3Rpb24gS2MoZSxyKXtpZihlPT1udWxsKXJldHVybnt9O3ZhciB0PXt9LHM9T2JqZWN0LmtleXMoZSksYyxuO2ZvcihuPTA7bjxzLmxlbmd0aDtuKyspYz1zW25dLCEoci5pbmRleE9mKGMpPj0wKSYmKHRbY109ZVtjXSk7cmV0dXJuIHR9ZnVuY3Rpb24gRWUoZSxyKXtyZXR1cm4gcnx8KHI9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUocil9fSkpfURuKCk7SW4oKTtLbigpO3ZhciBKYz1PYmplY3QuY3JlYXRlLEplPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxaYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCRyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLGVEPU9iamVjdC5nZXRQcm90b3R5cGVPZixyRD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LENlPShlLHIpPT5mdW5jdGlvbigpe3JldHVybiBlJiYocj0oMCxlWyRyKGUpWzBdXSkoZT0wKSkscn0sST0oZSxyKT0+ZnVuY3Rpb24oKXtyZXR1cm4gcnx8KDAsZVskcihlKVswXV0pKChyPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxyKSxyLmV4cG9ydHN9LGNzPShlLHIpPT57Zm9yKHZhciB0IGluIHIpSmUoZSx0LHtnZXQ6clt0XSxlbnVtZXJhYmxlOiEwfSl9LERzPShlLHIsdCxzKT0+e2lmKHImJnR5cGVvZiByPT1cIm9iamVjdFwifHx0eXBlb2Ygcj09XCJmdW5jdGlvblwiKWZvcihsZXQgYyBvZiAkcihyKSkhckQuY2FsbChlLGMpJiZjIT09dCYmSmUoZSxjLHtnZXQ6KCk9PnJbY10sZW51bWVyYWJsZTohKHM9WmMocixjKSl8fHMuZW51bWVyYWJsZX0pO3JldHVybiBlfSx0RD0oZSxyLHQpPT4odD1lIT1udWxsP0pjKGVEKGUpKTp7fSxEcyhyfHwhZXx8IWUuX19lc01vZHVsZT9KZSh0LFwiZGVmYXVsdFwiLHt2YWx1ZTplLGVudW1lcmFibGU6ITB9KTp0LGUpKSxscz1lPT5EcyhKZSh7fSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlKSxucyxzcyx5ZSxxPUNlKHtcIjxkZWZpbmU6cHJvY2Vzcz5cIigpe25zPXt9LHNzPVtdLHllPXtlbnY6bnMsYXJndjpzc319fSksaHM9SSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1odG1sLXBhcnNlci9saWIvY29tcGlsZXIvc3JjL2NoYXJzLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7cSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuJEVPRj0wLGUuJEJTUEFDRT04LGUuJFRBQj05LGUuJExGPTEwLGUuJFZUQUI9MTEsZS4kRkY9MTIsZS4kQ1I9MTMsZS4kU1BBQ0U9MzIsZS4kQkFORz0zMyxlLiREUT0zNCxlLiRIQVNIPTM1LGUuJCQ9MzYsZS4kUEVSQ0VOVD0zNyxlLiRBTVBFUlNBTkQ9MzgsZS4kU1E9MzksZS4kTFBBUkVOPTQwLGUuJFJQQVJFTj00MSxlLiRTVEFSPTQyLGUuJFBMVVM9NDMsZS4kQ09NTUE9NDQsZS4kTUlOVVM9NDUsZS4kUEVSSU9EPTQ2LGUuJFNMQVNIPTQ3LGUuJENPTE9OPTU4LGUuJFNFTUlDT0xPTj01OSxlLiRMVD02MCxlLiRFUT02MSxlLiRHVD02MixlLiRRVUVTVElPTj02MyxlLiQwPTQ4LGUuJDc9NTUsZS4kOT01NyxlLiRBPTY1LGUuJEU9NjksZS4kRj03MCxlLiRYPTg4LGUuJFo9OTAsZS4kTEJSQUNLRVQ9OTEsZS4kQkFDS1NMQVNIPTkyLGUuJFJCUkFDS0VUPTkzLGUuJENBUkVUPTk0LGUuJF89OTUsZS4kYT05NyxlLiRiPTk4LGUuJGU9MTAxLGUuJGY9MTAyLGUuJG49MTEwLGUuJHI9MTE0LGUuJHQ9MTE2LGUuJHU9MTE3LGUuJHY9MTE4LGUuJHg9MTIwLGUuJHo9MTIyLGUuJExCUkFDRT0xMjMsZS4kQkFSPTEyNCxlLiRSQlJBQ0U9MTI1LGUuJE5CU1A9MTYwLGUuJFBJUEU9MTI0LGUuJFRJTERBPTEyNixlLiRBVD02NCxlLiRCVD05NjtmdW5jdGlvbiByKHApe3JldHVybiBwPj1lLiRUQUImJnA8PWUuJFNQQUNFfHxwPT1lLiROQlNQfWUuaXNXaGl0ZXNwYWNlPXI7ZnVuY3Rpb24gdChwKXtyZXR1cm4gZS4kMDw9cCYmcDw9ZS4kOX1lLmlzRGlnaXQ9dDtmdW5jdGlvbiBzKHApe3JldHVybiBwPj1lLiRhJiZwPD1lLiR6fHxwPj1lLiRBJiZwPD1lLiRafWUuaXNBc2NpaUxldHRlcj1zO2Z1bmN0aW9uIGMocCl7cmV0dXJuIHA+PWUuJGEmJnA8PWUuJGZ8fHA+PWUuJEEmJnA8PWUuJEZ8fHQocCl9ZS5pc0FzY2lpSGV4RGlnaXQ9YztmdW5jdGlvbiBuKHApe3JldHVybiBwPT09ZS4kTEZ8fHA9PT1lLiRDUn1lLmlzTmV3TGluZT1uO2Z1bmN0aW9uIGEocCl7cmV0dXJuIGUuJDA8PXAmJnA8PWUuJDd9ZS5pc09jdGFsRGlnaXQ9YX19KSx1RD1JKHtcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWh0bWwtcGFyc2VyL2xpYi9jb21waWxlci9zcmMvYW90L3N0YXRpY19zeW1ib2wuanNcIihlKXtcInVzZSBzdHJpY3RcIjtxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9Y2xhc3N7Y29uc3RydWN0b3IocyxjLG4pe3RoaXMuZmlsZVBhdGg9cyx0aGlzLm5hbWU9Yyx0aGlzLm1lbWJlcnM9bn1hc3NlcnROb01lbWJlcnMoKXtpZih0aGlzLm1lbWJlcnMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgc3RhdGU6IHN5bWJvbCB3aXRob3V0IG1lbWJlcnMgZXhwZWN0ZWQsIGJ1dCBnb3QgXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHRoaXMpLFwiLlwiKSl9fTtlLlN0YXRpY1N5bWJvbD1yO3ZhciB0PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jYWNoZT1uZXcgTWFwfWdldChzLGMsbil7bj1ufHxbXTtsZXQgYT1uLmxlbmd0aD9cIi5cIi5jb25jYXQobi5qb2luKFwiLlwiKSk6XCJcIixwPSdcIicuY29uY2F0KHMsJ1wiLicpLmNvbmNhdChjKS5jb25jYXQoYSksRD10aGlzLmNhY2hlLmdldChwKTtyZXR1cm4gRHx8KEQ9bmV3IHIocyxjLG4pLHRoaXMuY2FjaGUuc2V0KHAsRCkpLER9fTtlLlN0YXRpY1N5bWJvbENhY2hlPXR9fSksbkQ9SSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1odG1sLXBhcnNlci9saWIvY29tcGlsZXIvc3JjL3V0aWwuanNcIihlKXtcInVzZSBzdHJpY3RcIjtxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9Ly0rKFthLXowLTldKS9nO2Z1bmN0aW9uIHQobyl7cmV0dXJuIG8ucmVwbGFjZShyLGZ1bmN0aW9uKCl7Zm9yKHZhciBFPWFyZ3VtZW50cy5sZW5ndGgsZj1uZXcgQXJyYXkoRSksRj0wO0Y8RTtGKyspZltGXT1hcmd1bWVudHNbRl07cmV0dXJuIGZbMV0udG9VcHBlckNhc2UoKX0pfWUuZGFzaENhc2VUb0NhbWVsQ2FzZT10O2Z1bmN0aW9uIHMobyxFKXtyZXR1cm4gbihvLFwiOlwiLEUpfWUuc3BsaXRBdENvbG9uPXM7ZnVuY3Rpb24gYyhvLEUpe3JldHVybiBuKG8sXCIuXCIsRSl9ZS5zcGxpdEF0UGVyaW9kPWM7ZnVuY3Rpb24gbihvLEUsZil7bGV0IEY9by5pbmRleE9mKEUpO3JldHVybiBGPT0tMT9mOltvLnNsaWNlKDAsRikudHJpbSgpLG8uc2xpY2UoRisxKS50cmltKCldfWZ1bmN0aW9uIGEobyxFLGYpe3JldHVybiBBcnJheS5pc0FycmF5KG8pP0UudmlzaXRBcnJheShvLGYpOkEobyk/RS52aXNpdFN0cmluZ01hcChvLGYpOm89PW51bGx8fHR5cGVvZiBvPT1cInN0cmluZ1wifHx0eXBlb2Ygbz09XCJudW1iZXJcInx8dHlwZW9mIG89PVwiYm9vbGVhblwiP0UudmlzaXRQcmltaXRpdmUobyxmKTpFLnZpc2l0T3RoZXIobyxmKX1lLnZpc2l0VmFsdWU9YTtmdW5jdGlvbiBwKG8pe3JldHVybiBvIT1udWxsfWUuaXNEZWZpbmVkPXA7ZnVuY3Rpb24gRChvKXtyZXR1cm4gbz09PXZvaWQgMD9udWxsOm99ZS5ub1VuZGVmaW5lZD1EO3ZhciBnPWNsYXNze3Zpc2l0QXJyYXkobyxFKXtyZXR1cm4gby5tYXAoZj0+YShmLHRoaXMsRSkpfXZpc2l0U3RyaW5nTWFwKG8sRSl7bGV0IGY9e307cmV0dXJuIE9iamVjdC5rZXlzKG8pLmZvckVhY2goRj0+e2ZbRl09YShvW0ZdLHRoaXMsRSl9KSxmfXZpc2l0UHJpbWl0aXZlKG8sRSl7cmV0dXJuIG99dmlzaXRPdGhlcihvLEUpe3JldHVybiBvfX07ZS5WYWx1ZVRyYW5zZm9ybWVyPWcsZS5TeW5jQXN5bmM9e2Fzc2VydFN5bmM6bz0+e2lmKF8obykpdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBzdGF0ZTogdmFsdWUgY2Fubm90IGJlIGEgcHJvbWlzZVwiKTtyZXR1cm4gb30sdGhlbjoobyxFKT0+XyhvKT9vLnRoZW4oRSk6RShvKSxhbGw6bz0+by5zb21lKF8pP1Byb21pc2UuYWxsKG8pOm99O2Z1bmN0aW9uIGkobyl7dGhyb3cgbmV3IEVycm9yKFwiSW50ZXJuYWwgRXJyb3I6IFwiLmNvbmNhdChvKSl9ZS5lcnJvcj1pO2Z1bmN0aW9uIGwobyxFKXtsZXQgZj1FcnJvcihvKTtyZXR1cm4gZltoXT0hMCxFJiYoZltDXT1FKSxmfWUuc3ludGF4RXJyb3I9bDt2YXIgaD1cIm5nU3ludGF4RXJyb3JcIixDPVwibmdQYXJzZUVycm9yc1wiO2Z1bmN0aW9uIGQobyl7cmV0dXJuIG9baF19ZS5pc1N5bnRheEVycm9yPWQ7ZnVuY3Rpb24gbShvKXtyZXR1cm4gb1tDXXx8W119ZS5nZXRQYXJzZUVycm9ycz1tO2Z1bmN0aW9uIFQobyl7cmV0dXJuIG8ucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXF1cXC9cXFxcXSkvZyxcIlxcXFwkMVwiKX1lLmVzY2FwZVJlZ0V4cD1UO3ZhciBCPU9iamVjdC5nZXRQcm90b3R5cGVPZih7fSk7ZnVuY3Rpb24gQShvKXtyZXR1cm4gdHlwZW9mIG89PVwib2JqZWN0XCImJm8hPT1udWxsJiZPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk9PT1CfWZ1bmN0aW9uIE4obyl7bGV0IEU9XCJcIjtmb3IobGV0IGY9MDtmPG8ubGVuZ3RoO2YrKyl7bGV0IEY9by5jaGFyQ29kZUF0KGYpO2lmKEY+PTU1Mjk2JiZGPD01NjMxOSYmby5sZW5ndGg+ZisxKXtsZXQgUD1vLmNoYXJDb2RlQXQoZisxKTtQPj01NjMyMCYmUDw9NTczNDMmJihmKyssRj0oRi01NTI5Njw8MTApK1AtNTYzMjArNjU1MzYpfUY8PTEyNz9FKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEYpOkY8PTIwNDc/RSs9U3RyaW5nLmZyb21DaGFyQ29kZShGPj42JjMxfDE5MixGJjYzfDEyOCk6Rjw9NjU1MzU/RSs9U3RyaW5nLmZyb21DaGFyQ29kZShGPj4xMnwyMjQsRj4+NiY2M3wxMjgsRiY2M3wxMjgpOkY8PTIwOTcxNTEmJihFKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEY+PjE4Jjd8MjQwLEY+PjEyJjYzfDEyOCxGPj42JjYzfDEyOCxGJjYzfDEyOCkpfXJldHVybiBFfWUudXRmOEVuY29kZT1OO2Z1bmN0aW9uIFIobyl7aWYodHlwZW9mIG89PVwic3RyaW5nXCIpcmV0dXJuIG87aWYobyBpbnN0YW5jZW9mIEFycmF5KXJldHVyblwiW1wiK28ubWFwKFIpLmpvaW4oXCIsIFwiKStcIl1cIjtpZihvPT1udWxsKXJldHVyblwiXCIrbztpZihvLm92ZXJyaWRkZW5OYW1lKXJldHVyblwiXCIuY29uY2F0KG8ub3ZlcnJpZGRlbk5hbWUpO2lmKG8ubmFtZSlyZXR1cm5cIlwiLmNvbmNhdChvLm5hbWUpO2lmKCFvLnRvU3RyaW5nKXJldHVyblwib2JqZWN0XCI7bGV0IEU9by50b1N0cmluZygpO2lmKEU9PW51bGwpcmV0dXJuXCJcIitFO2xldCBmPUUuaW5kZXhPZihgXG5gKTtyZXR1cm4gZj09PS0xP0U6RS5zdWJzdHJpbmcoMCxmKX1lLnN0cmluZ2lmeT1SO2Z1bmN0aW9uICQobyl7cmV0dXJuIHR5cGVvZiBvPT1cImZ1bmN0aW9uXCImJm8uaGFzT3duUHJvcGVydHkoXCJfX2ZvcndhcmRfcmVmX19cIik/bygpOm99ZS5yZXNvbHZlRm9yd2FyZFJlZj0kO2Z1bmN0aW9uIF8obyl7cmV0dXJuISFvJiZ0eXBlb2Ygby50aGVuPT1cImZ1bmN0aW9uXCJ9ZS5pc1Byb21pc2U9Xzt2YXIgTz1jbGFzc3tjb25zdHJ1Y3RvcihvKXt0aGlzLmZ1bGw9bztsZXQgRT1vLnNwbGl0KFwiLlwiKTt0aGlzLm1ham9yPUVbMF0sdGhpcy5taW5vcj1FWzFdLHRoaXMucGF0Y2g9RS5zbGljZSgyKS5qb2luKFwiLlwiKX19O2UuVmVyc2lvbj1PO3ZhciB4PXR5cGVvZiB3aW5kb3c8XCJ1XCImJndpbmRvdyxrPXR5cGVvZiBzZWxmPFwidVwiJiZ0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8XCJ1XCImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZixNPXR5cGVvZiBnbG9iYWxUaGlzPFwidVwiJiZnbG9iYWxUaGlzLHU9TXx8eHx8aztlLmdsb2JhbD11fX0pLHNEPUkoe1wibm9kZV9tb2R1bGVzL2FuZ3VsYXItaHRtbC1wYXJzZXIvbGliL2NvbXBpbGVyL3NyYy9jb21waWxlX21ldGFkYXRhLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7cSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPXVEKCksdD1uRCgpLHM9L14oPzooPzpcXFsoW15cXF1dKylcXF0pfCg/OlxcKChbXlxcKV0rKVxcKSkpfChcXEBbLVxcd10rKSQvO2Z1bmN0aW9uIGMoZil7cmV0dXJuIGYucmVwbGFjZSgvXFxXL2csXCJfXCIpfWUuc2FuaXRpemVJZGVudGlmaWVyPWM7dmFyIG49MDtmdW5jdGlvbiBhKGYpe2lmKCFmfHwhZi5yZWZlcmVuY2UpcmV0dXJuIG51bGw7bGV0IEY9Zi5yZWZlcmVuY2U7aWYoRiBpbnN0YW5jZW9mIHIuU3RhdGljU3ltYm9sKXJldHVybiBGLm5hbWU7aWYoRi5fX2Fub255bW91c1R5cGUpcmV0dXJuIEYuX19hbm9ueW1vdXNUeXBlO2xldCBQPXQuc3RyaW5naWZ5KEYpO3JldHVybiBQLmluZGV4T2YoXCIoXCIpPj0wPyhQPVwiYW5vbnltb3VzX1wiLmNvbmNhdChuKyspLEYuX19hbm9ueW1vdXNUeXBlPVApOlA9YyhQKSxQfWUuaWRlbnRpZmllck5hbWU9YTtmdW5jdGlvbiBwKGYpe2xldCBGPWYucmVmZXJlbmNlO3JldHVybiBGIGluc3RhbmNlb2Ygci5TdGF0aWNTeW1ib2w/Ri5maWxlUGF0aDpcIi4vXCIuY29uY2F0KHQuc3RyaW5naWZ5KEYpKX1lLmlkZW50aWZpZXJNb2R1bGVVcmw9cDtmdW5jdGlvbiBEKGYsRil7cmV0dXJuXCJWaWV3X1wiLmNvbmNhdChhKHtyZWZlcmVuY2U6Zn0pLFwiX1wiKS5jb25jYXQoRil9ZS52aWV3Q2xhc3NOYW1lPUQ7ZnVuY3Rpb24gZyhmKXtyZXR1cm5cIlJlbmRlclR5cGVfXCIuY29uY2F0KGEoe3JlZmVyZW5jZTpmfSkpfWUucmVuZGVyZXJUeXBlTmFtZT1nO2Z1bmN0aW9uIGkoZil7cmV0dXJuXCJIb3N0Vmlld19cIi5jb25jYXQoYSh7cmVmZXJlbmNlOmZ9KSl9ZS5ob3N0Vmlld0NsYXNzTmFtZT1pO2Z1bmN0aW9uIGwoZil7cmV0dXJuXCJcIi5jb25jYXQoYSh7cmVmZXJlbmNlOmZ9KSxcIk5nRmFjdG9yeVwiKX1lLmNvbXBvbmVudEZhY3RvcnlOYW1lPWw7dmFyIGg7KGZ1bmN0aW9uKGYpe2ZbZi5QaXBlPTBdPVwiUGlwZVwiLGZbZi5EaXJlY3RpdmU9MV09XCJEaXJlY3RpdmVcIixmW2YuTmdNb2R1bGU9Ml09XCJOZ01vZHVsZVwiLGZbZi5JbmplY3RhYmxlPTNdPVwiSW5qZWN0YWJsZVwifSkoaD1lLkNvbXBpbGVTdW1tYXJ5S2luZHx8KGUuQ29tcGlsZVN1bW1hcnlLaW5kPXt9KSk7ZnVuY3Rpb24gQyhmKXtyZXR1cm4gZi52YWx1ZSE9bnVsbD9jKGYudmFsdWUpOmEoZi5pZGVudGlmaWVyKX1lLnRva2VuTmFtZT1DO2Z1bmN0aW9uIGQoZil7cmV0dXJuIGYuaWRlbnRpZmllciE9bnVsbD9mLmlkZW50aWZpZXIucmVmZXJlbmNlOmYudmFsdWV9ZS50b2tlblJlZmVyZW5jZT1kO3ZhciBtPWNsYXNze2NvbnN0cnVjdG9yKCl7bGV0e21vZHVsZVVybDpmLHN0eWxlczpGLHN0eWxlVXJsczpQfT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307dGhpcy5tb2R1bGVVcmw9Znx8bnVsbCx0aGlzLnN0eWxlcz1fKEYpLHRoaXMuc3R5bGVVcmxzPV8oUCl9fTtlLkNvbXBpbGVTdHlsZXNoZWV0TWV0YWRhdGE9bTt2YXIgVD1jbGFzc3tjb25zdHJ1Y3RvcihmKXtsZXR7ZW5jYXBzdWxhdGlvbjpGLHRlbXBsYXRlOlAsdGVtcGxhdGVVcmw6aixodG1sQXN0Olcsc3R5bGVzOlgsc3R5bGVVcmxzOkgsZXh0ZXJuYWxTdHlsZXNoZWV0czp6LGFuaW1hdGlvbnM6SixuZ0NvbnRlbnRTZWxlY3RvcnM6WixpbnRlcnBvbGF0aW9uOmVlLGlzSW5saW5lOnYscHJlc2VydmVXaGl0ZXNwYWNlczpTfT1mO2lmKHRoaXMuZW5jYXBzdWxhdGlvbj1GLHRoaXMudGVtcGxhdGU9UCx0aGlzLnRlbXBsYXRlVXJsPWosdGhpcy5odG1sQXN0PVcsdGhpcy5zdHlsZXM9XyhYKSx0aGlzLnN0eWxlVXJscz1fKEgpLHRoaXMuZXh0ZXJuYWxTdHlsZXNoZWV0cz1fKHopLHRoaXMuYW5pbWF0aW9ucz1KP3goSik6W10sdGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnM9Wnx8W10sZWUmJmVlLmxlbmd0aCE9Mil0aHJvdyBuZXcgRXJyb3IoXCInaW50ZXJwb2xhdGlvbicgc2hvdWxkIGhhdmUgYSBzdGFydCBhbmQgYW4gZW5kIHN5bWJvbC5cIik7dGhpcy5pbnRlcnBvbGF0aW9uPWVlLHRoaXMuaXNJbmxpbmU9dix0aGlzLnByZXNlcnZlV2hpdGVzcGFjZXM9U310b1N1bW1hcnkoKXtyZXR1cm57bmdDb250ZW50U2VsZWN0b3JzOnRoaXMubmdDb250ZW50U2VsZWN0b3JzLGVuY2Fwc3VsYXRpb246dGhpcy5lbmNhcHN1bGF0aW9uLHN0eWxlczp0aGlzLnN0eWxlcyxhbmltYXRpb25zOnRoaXMuYW5pbWF0aW9uc319fTtlLkNvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhPVQ7dmFyIEI9Y2xhc3N7c3RhdGljIGNyZWF0ZShmKXtsZXR7aXNIb3N0OkYsdHlwZTpQLGlzQ29tcG9uZW50Omosc2VsZWN0b3I6VyxleHBvcnRBczpYLGNoYW5nZURldGVjdGlvbjpILGlucHV0czp6LG91dHB1dHM6Sixob3N0OloscHJvdmlkZXJzOmVlLHZpZXdQcm92aWRlcnM6dixxdWVyaWVzOlMsZ3VhcmRzOmIsdmlld1F1ZXJpZXM6dyxlbnRyeUNvbXBvbmVudHM6TCx0ZW1wbGF0ZTpVLGNvbXBvbmVudFZpZXdUeXBlOlYscmVuZGVyZXJUeXBlOlksY29tcG9uZW50RmFjdG9yeTp1ZX09ZixCZT17fSxiZT17fSxWcj17fTtaIT1udWxsJiZPYmplY3Qua2V5cyhaKS5mb3JFYWNoKHJlPT57bGV0IG5lPVpbcmVdLG1lPXJlLm1hdGNoKHMpO21lPT09bnVsbD9WcltyZV09bmU6bWVbMV0hPW51bGw/YmVbbWVbMV1dPW5lOm1lWzJdIT1udWxsJiYoQmVbbWVbMl1dPW5lKX0pO2xldCBYcj17fTt6IT1udWxsJiZ6LmZvckVhY2gocmU9PntsZXQgbmU9dC5zcGxpdEF0Q29sb24ocmUsW3JlLHJlXSk7WHJbbmVbMF1dPW5lWzFdfSk7bGV0IEhyPXt9O3JldHVybiBKIT1udWxsJiZKLmZvckVhY2gocmU9PntsZXQgbmU9dC5zcGxpdEF0Q29sb24ocmUsW3JlLHJlXSk7SHJbbmVbMF1dPW5lWzFdfSksbmV3IEIoe2lzSG9zdDpGLHR5cGU6UCxpc0NvbXBvbmVudDohIWosc2VsZWN0b3I6VyxleHBvcnRBczpYLGNoYW5nZURldGVjdGlvbjpILGlucHV0czpYcixvdXRwdXRzOkhyLGhvc3RMaXN0ZW5lcnM6QmUsaG9zdFByb3BlcnRpZXM6YmUsaG9zdEF0dHJpYnV0ZXM6VnIscHJvdmlkZXJzOmVlLHZpZXdQcm92aWRlcnM6dixxdWVyaWVzOlMsZ3VhcmRzOmIsdmlld1F1ZXJpZXM6dyxlbnRyeUNvbXBvbmVudHM6TCx0ZW1wbGF0ZTpVLGNvbXBvbmVudFZpZXdUeXBlOlYscmVuZGVyZXJUeXBlOlksY29tcG9uZW50RmFjdG9yeTp1ZX0pfWNvbnN0cnVjdG9yKGYpe2xldHtpc0hvc3Q6Rix0eXBlOlAsaXNDb21wb25lbnQ6aixzZWxlY3RvcjpXLGV4cG9ydEFzOlgsY2hhbmdlRGV0ZWN0aW9uOkgsaW5wdXRzOnosb3V0cHV0czpKLGhvc3RMaXN0ZW5lcnM6Wixob3N0UHJvcGVydGllczplZSxob3N0QXR0cmlidXRlczp2LHByb3ZpZGVyczpTLHZpZXdQcm92aWRlcnM6YixxdWVyaWVzOncsZ3VhcmRzOkwsdmlld1F1ZXJpZXM6VSxlbnRyeUNvbXBvbmVudHM6Vix0ZW1wbGF0ZTpZLGNvbXBvbmVudFZpZXdUeXBlOnVlLHJlbmRlcmVyVHlwZTpCZSxjb21wb25lbnRGYWN0b3J5OmJlfT1mO3RoaXMuaXNIb3N0PSEhRix0aGlzLnR5cGU9UCx0aGlzLmlzQ29tcG9uZW50PWosdGhpcy5zZWxlY3Rvcj1XLHRoaXMuZXhwb3J0QXM9WCx0aGlzLmNoYW5nZURldGVjdGlvbj1ILHRoaXMuaW5wdXRzPXosdGhpcy5vdXRwdXRzPUosdGhpcy5ob3N0TGlzdGVuZXJzPVosdGhpcy5ob3N0UHJvcGVydGllcz1lZSx0aGlzLmhvc3RBdHRyaWJ1dGVzPXYsdGhpcy5wcm92aWRlcnM9XyhTKSx0aGlzLnZpZXdQcm92aWRlcnM9XyhiKSx0aGlzLnF1ZXJpZXM9Xyh3KSx0aGlzLmd1YXJkcz1MLHRoaXMudmlld1F1ZXJpZXM9XyhVKSx0aGlzLmVudHJ5Q29tcG9uZW50cz1fKFYpLHRoaXMudGVtcGxhdGU9WSx0aGlzLmNvbXBvbmVudFZpZXdUeXBlPXVlLHRoaXMucmVuZGVyZXJUeXBlPUJlLHRoaXMuY29tcG9uZW50RmFjdG9yeT1iZX10b1N1bW1hcnkoKXtyZXR1cm57c3VtbWFyeUtpbmQ6aC5EaXJlY3RpdmUsdHlwZTp0aGlzLnR5cGUsaXNDb21wb25lbnQ6dGhpcy5pc0NvbXBvbmVudCxzZWxlY3Rvcjp0aGlzLnNlbGVjdG9yLGV4cG9ydEFzOnRoaXMuZXhwb3J0QXMsaW5wdXRzOnRoaXMuaW5wdXRzLG91dHB1dHM6dGhpcy5vdXRwdXRzLGhvc3RMaXN0ZW5lcnM6dGhpcy5ob3N0TGlzdGVuZXJzLGhvc3RQcm9wZXJ0aWVzOnRoaXMuaG9zdFByb3BlcnRpZXMsaG9zdEF0dHJpYnV0ZXM6dGhpcy5ob3N0QXR0cmlidXRlcyxwcm92aWRlcnM6dGhpcy5wcm92aWRlcnMsdmlld1Byb3ZpZGVyczp0aGlzLnZpZXdQcm92aWRlcnMscXVlcmllczp0aGlzLnF1ZXJpZXMsZ3VhcmRzOnRoaXMuZ3VhcmRzLHZpZXdRdWVyaWVzOnRoaXMudmlld1F1ZXJpZXMsZW50cnlDb21wb25lbnRzOnRoaXMuZW50cnlDb21wb25lbnRzLGNoYW5nZURldGVjdGlvbjp0aGlzLmNoYW5nZURldGVjdGlvbix0ZW1wbGF0ZTp0aGlzLnRlbXBsYXRlJiZ0aGlzLnRlbXBsYXRlLnRvU3VtbWFyeSgpLGNvbXBvbmVudFZpZXdUeXBlOnRoaXMuY29tcG9uZW50Vmlld1R5cGUscmVuZGVyZXJUeXBlOnRoaXMucmVuZGVyZXJUeXBlLGNvbXBvbmVudEZhY3Rvcnk6dGhpcy5jb21wb25lbnRGYWN0b3J5fX19O2UuQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhPUI7dmFyIEE9Y2xhc3N7Y29uc3RydWN0b3IoZil7bGV0e3R5cGU6RixuYW1lOlAscHVyZTpqfT1mO3RoaXMudHlwZT1GLHRoaXMubmFtZT1QLHRoaXMucHVyZT0hIWp9dG9TdW1tYXJ5KCl7cmV0dXJue3N1bW1hcnlLaW5kOmguUGlwZSx0eXBlOnRoaXMudHlwZSxuYW1lOnRoaXMubmFtZSxwdXJlOnRoaXMucHVyZX19fTtlLkNvbXBpbGVQaXBlTWV0YWRhdGE9QTt2YXIgTj1jbGFzc3t9O2UuQ29tcGlsZVNoYWxsb3dNb2R1bGVNZXRhZGF0YT1OO3ZhciBSPWNsYXNze2NvbnN0cnVjdG9yKGYpe2xldHt0eXBlOkYscHJvdmlkZXJzOlAsZGVjbGFyZWREaXJlY3RpdmVzOmosZXhwb3J0ZWREaXJlY3RpdmVzOlcsZGVjbGFyZWRQaXBlczpYLGV4cG9ydGVkUGlwZXM6SCxlbnRyeUNvbXBvbmVudHM6eixib290c3RyYXBDb21wb25lbnRzOkosaW1wb3J0ZWRNb2R1bGVzOlosZXhwb3J0ZWRNb2R1bGVzOmVlLHNjaGVtYXM6dix0cmFuc2l0aXZlTW9kdWxlOlMsaWQ6Yn09Zjt0aGlzLnR5cGU9Rnx8bnVsbCx0aGlzLmRlY2xhcmVkRGlyZWN0aXZlcz1fKGopLHRoaXMuZXhwb3J0ZWREaXJlY3RpdmVzPV8oVyksdGhpcy5kZWNsYXJlZFBpcGVzPV8oWCksdGhpcy5leHBvcnRlZFBpcGVzPV8oSCksdGhpcy5wcm92aWRlcnM9XyhQKSx0aGlzLmVudHJ5Q29tcG9uZW50cz1fKHopLHRoaXMuYm9vdHN0cmFwQ29tcG9uZW50cz1fKEopLHRoaXMuaW1wb3J0ZWRNb2R1bGVzPV8oWiksdGhpcy5leHBvcnRlZE1vZHVsZXM9XyhlZSksdGhpcy5zY2hlbWFzPV8odiksdGhpcy5pZD1ifHxudWxsLHRoaXMudHJhbnNpdGl2ZU1vZHVsZT1TfHxudWxsfXRvU3VtbWFyeSgpe2xldCBmPXRoaXMudHJhbnNpdGl2ZU1vZHVsZTtyZXR1cm57c3VtbWFyeUtpbmQ6aC5OZ01vZHVsZSx0eXBlOnRoaXMudHlwZSxlbnRyeUNvbXBvbmVudHM6Zi5lbnRyeUNvbXBvbmVudHMscHJvdmlkZXJzOmYucHJvdmlkZXJzLG1vZHVsZXM6Zi5tb2R1bGVzLGV4cG9ydGVkRGlyZWN0aXZlczpmLmV4cG9ydGVkRGlyZWN0aXZlcyxleHBvcnRlZFBpcGVzOmYuZXhwb3J0ZWRQaXBlc319fTtlLkNvbXBpbGVOZ01vZHVsZU1ldGFkYXRhPVI7dmFyICQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmRpcmVjdGl2ZXNTZXQ9bmV3IFNldCx0aGlzLmRpcmVjdGl2ZXM9W10sdGhpcy5leHBvcnRlZERpcmVjdGl2ZXNTZXQ9bmV3IFNldCx0aGlzLmV4cG9ydGVkRGlyZWN0aXZlcz1bXSx0aGlzLnBpcGVzU2V0PW5ldyBTZXQsdGhpcy5waXBlcz1bXSx0aGlzLmV4cG9ydGVkUGlwZXNTZXQ9bmV3IFNldCx0aGlzLmV4cG9ydGVkUGlwZXM9W10sdGhpcy5tb2R1bGVzU2V0PW5ldyBTZXQsdGhpcy5tb2R1bGVzPVtdLHRoaXMuZW50cnlDb21wb25lbnRzU2V0PW5ldyBTZXQsdGhpcy5lbnRyeUNvbXBvbmVudHM9W10sdGhpcy5wcm92aWRlcnM9W119YWRkUHJvdmlkZXIoZixGKXt0aGlzLnByb3ZpZGVycy5wdXNoKHtwcm92aWRlcjpmLG1vZHVsZTpGfSl9YWRkRGlyZWN0aXZlKGYpe3RoaXMuZGlyZWN0aXZlc1NldC5oYXMoZi5yZWZlcmVuY2UpfHwodGhpcy5kaXJlY3RpdmVzU2V0LmFkZChmLnJlZmVyZW5jZSksdGhpcy5kaXJlY3RpdmVzLnB1c2goZikpfWFkZEV4cG9ydGVkRGlyZWN0aXZlKGYpe3RoaXMuZXhwb3J0ZWREaXJlY3RpdmVzU2V0LmhhcyhmLnJlZmVyZW5jZSl8fCh0aGlzLmV4cG9ydGVkRGlyZWN0aXZlc1NldC5hZGQoZi5yZWZlcmVuY2UpLHRoaXMuZXhwb3J0ZWREaXJlY3RpdmVzLnB1c2goZikpfWFkZFBpcGUoZil7dGhpcy5waXBlc1NldC5oYXMoZi5yZWZlcmVuY2UpfHwodGhpcy5waXBlc1NldC5hZGQoZi5yZWZlcmVuY2UpLHRoaXMucGlwZXMucHVzaChmKSl9YWRkRXhwb3J0ZWRQaXBlKGYpe3RoaXMuZXhwb3J0ZWRQaXBlc1NldC5oYXMoZi5yZWZlcmVuY2UpfHwodGhpcy5leHBvcnRlZFBpcGVzU2V0LmFkZChmLnJlZmVyZW5jZSksdGhpcy5leHBvcnRlZFBpcGVzLnB1c2goZikpfWFkZE1vZHVsZShmKXt0aGlzLm1vZHVsZXNTZXQuaGFzKGYucmVmZXJlbmNlKXx8KHRoaXMubW9kdWxlc1NldC5hZGQoZi5yZWZlcmVuY2UpLHRoaXMubW9kdWxlcy5wdXNoKGYpKX1hZGRFbnRyeUNvbXBvbmVudChmKXt0aGlzLmVudHJ5Q29tcG9uZW50c1NldC5oYXMoZi5jb21wb25lbnRUeXBlKXx8KHRoaXMuZW50cnlDb21wb25lbnRzU2V0LmFkZChmLmNvbXBvbmVudFR5cGUpLHRoaXMuZW50cnlDb21wb25lbnRzLnB1c2goZikpfX07ZS5UcmFuc2l0aXZlQ29tcGlsZU5nTW9kdWxlTWV0YWRhdGE9JDtmdW5jdGlvbiBfKGYpe3JldHVybiBmfHxbXX12YXIgTz1jbGFzc3tjb25zdHJ1Y3RvcihmLEYpe2xldHt1c2VDbGFzczpQLHVzZVZhbHVlOmosdXNlRXhpc3Rpbmc6Vyx1c2VGYWN0b3J5OlgsZGVwczpILG11bHRpOnp9PUY7dGhpcy50b2tlbj1mLHRoaXMudXNlQ2xhc3M9UHx8bnVsbCx0aGlzLnVzZVZhbHVlPWosdGhpcy51c2VFeGlzdGluZz1XLHRoaXMudXNlRmFjdG9yeT1YfHxudWxsLHRoaXMuZGVwZW5kZW5jaWVzPUh8fG51bGwsdGhpcy5tdWx0aT0hIXp9fTtlLlByb3ZpZGVyTWV0YT1PO2Z1bmN0aW9uIHgoZil7cmV0dXJuIGYucmVkdWNlKChGLFApPT57bGV0IGo9QXJyYXkuaXNBcnJheShQKT94KFApOlA7cmV0dXJuIEYuY29uY2F0KGopfSxbXSl9ZS5mbGF0dGVuPXg7ZnVuY3Rpb24gayhmKXtyZXR1cm4gZi5yZXBsYWNlKC8oXFx3KzpcXC9cXC9bXFx3Oi1dKyk/KFxcLyspPy8sXCJuZzovLy9cIil9ZnVuY3Rpb24gTShmLEYsUCl7bGV0IGo7cmV0dXJuIFAuaXNJbmxpbmU/Ri50eXBlLnJlZmVyZW5jZSBpbnN0YW5jZW9mIHIuU3RhdGljU3ltYm9sP2o9XCJcIi5jb25jYXQoRi50eXBlLnJlZmVyZW5jZS5maWxlUGF0aCxcIi5cIikuY29uY2F0KEYudHlwZS5yZWZlcmVuY2UubmFtZSxcIi5odG1sXCIpOmo9XCJcIi5jb25jYXQoYShmKSxcIi9cIikuY29uY2F0KGEoRi50eXBlKSxcIi5odG1sXCIpOmo9UC50ZW1wbGF0ZVVybCxGLnR5cGUucmVmZXJlbmNlIGluc3RhbmNlb2Ygci5TdGF0aWNTeW1ib2w/ajprKGopfWUudGVtcGxhdGVTb3VyY2VVcmw9TTtmdW5jdGlvbiB1KGYsRil7bGV0IFA9Zi5tb2R1bGVVcmwuc3BsaXQoL1xcL1xcXFwvZyksaj1QW1AubGVuZ3RoLTFdO3JldHVybiBrKFwiY3NzL1wiLmNvbmNhdChGKS5jb25jYXQoaixcIi5uZ3N0eWxlLmpzXCIpKX1lLnNoYXJlZFN0eWxlc2hlZXRKaXRVcmw9dTtmdW5jdGlvbiBvKGYpe3JldHVybiBrKFwiXCIuY29uY2F0KGEoZi50eXBlKSxcIi9tb2R1bGUubmdmYWN0b3J5LmpzXCIpKX1lLm5nTW9kdWxlSml0VXJsPW87ZnVuY3Rpb24gRShmLEYpe3JldHVybiBrKFwiXCIuY29uY2F0KGEoZiksXCIvXCIpLmNvbmNhdChhKEYudHlwZSksXCIubmdmYWN0b3J5LmpzXCIpKX1lLnRlbXBsYXRlSml0VXJsPUV9fSksVGU9SSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1odG1sLXBhcnNlci9saWIvY29tcGlsZXIvc3JjL3BhcnNlX3V0aWwuanNcIihlKXtcInVzZSBzdHJpY3RcIjtxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9aHMoKSx0PXNEKCkscz1jbGFzc3tjb25zdHJ1Y3RvcihpLGwsaCxDKXt0aGlzLmZpbGU9aSx0aGlzLm9mZnNldD1sLHRoaXMubGluZT1oLHRoaXMuY29sPUN9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5vZmZzZXQhPW51bGw/XCJcIi5jb25jYXQodGhpcy5maWxlLnVybCxcIkBcIikuY29uY2F0KHRoaXMubGluZSxcIjpcIikuY29uY2F0KHRoaXMuY29sKTp0aGlzLmZpbGUudXJsfW1vdmVCeShpKXtsZXQgbD10aGlzLmZpbGUuY29udGVudCxoPWwubGVuZ3RoLEM9dGhpcy5vZmZzZXQsZD10aGlzLmxpbmUsbT10aGlzLmNvbDtmb3IoO0M+MCYmaTwwOylpZihDLS0saSsrLGwuY2hhckNvZGVBdChDKT09ci4kTEYpe2QtLTtsZXQgQj1sLnN1YnN0cigwLEMtMSkubGFzdEluZGV4T2YoU3RyaW5nLmZyb21DaGFyQ29kZShyLiRMRikpO209Qj4wP0MtQjpDfWVsc2UgbS0tO2Zvcig7QzxoJiZpPjA7KXtsZXQgVD1sLmNoYXJDb2RlQXQoQyk7QysrLGktLSxUPT1yLiRMRj8oZCsrLG09MCk6bSsrfXJldHVybiBuZXcgcyh0aGlzLmZpbGUsQyxkLG0pfWdldENvbnRleHQoaSxsKXtsZXQgaD10aGlzLmZpbGUuY29udGVudCxDPXRoaXMub2Zmc2V0O2lmKEMhPW51bGwpe0M+aC5sZW5ndGgtMSYmKEM9aC5sZW5ndGgtMSk7bGV0IGQ9QyxtPTAsVD0wO2Zvcig7bTxpJiZDPjAmJihDLS0sbSsrLCEoaFtDXT09YFxuYCYmKytUPT1sKSk7KTtmb3IobT0wLFQ9MDttPGkmJmQ8aC5sZW5ndGgtMSYmKGQrKyxtKyssIShoW2RdPT1gXG5gJiYrK1Q9PWwpKTspO3JldHVybntiZWZvcmU6aC5zdWJzdHJpbmcoQyx0aGlzLm9mZnNldCksYWZ0ZXI6aC5zdWJzdHJpbmcodGhpcy5vZmZzZXQsZCsxKX19cmV0dXJuIG51bGx9fTtlLlBhcnNlTG9jYXRpb249czt2YXIgYz1jbGFzc3tjb25zdHJ1Y3RvcihpLGwpe3RoaXMuY29udGVudD1pLHRoaXMudXJsPWx9fTtlLlBhcnNlU291cmNlRmlsZT1jO3ZhciBuPWNsYXNze2NvbnN0cnVjdG9yKGksbCl7bGV0IGg9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGw7dGhpcy5zdGFydD1pLHRoaXMuZW5kPWwsdGhpcy5kZXRhaWxzPWh9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5zdGFydC5maWxlLmNvbnRlbnQuc3Vic3RyaW5nKHRoaXMuc3RhcnQub2Zmc2V0LHRoaXMuZW5kLm9mZnNldCl9fTtlLlBhcnNlU291cmNlU3Bhbj1uLGUuRU1QVFlfUEFSU0VfTE9DQVRJT049bmV3IHMobmV3IGMoXCJcIixcIlwiKSwwLDAsMCksZS5FTVBUWV9TT1VSQ0VfU1BBTj1uZXcgbihlLkVNUFRZX1BBUlNFX0xPQ0FUSU9OLGUuRU1QVFlfUEFSU0VfTE9DQVRJT04pO3ZhciBhOyhmdW5jdGlvbihpKXtpW2kuV0FSTklORz0wXT1cIldBUk5JTkdcIixpW2kuRVJST1I9MV09XCJFUlJPUlwifSkoYT1lLlBhcnNlRXJyb3JMZXZlbHx8KGUuUGFyc2VFcnJvckxldmVsPXt9KSk7dmFyIHA9Y2xhc3N7Y29uc3RydWN0b3IoaSxsKXtsZXQgaD1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06YS5FUlJPUjt0aGlzLnNwYW49aSx0aGlzLm1zZz1sLHRoaXMubGV2ZWw9aH1jb250ZXh0dWFsTWVzc2FnZSgpe2xldCBpPXRoaXMuc3Bhbi5zdGFydC5nZXRDb250ZXh0KDEwMCwzKTtyZXR1cm4gaT9cIlwiLmNvbmNhdCh0aGlzLm1zZywnIChcIicpLmNvbmNhdChpLmJlZm9yZSxcIltcIikuY29uY2F0KGFbdGhpcy5sZXZlbF0sXCIgLT5dXCIpLmNvbmNhdChpLmFmdGVyLCdcIiknKTp0aGlzLm1zZ310b1N0cmluZygpe2xldCBpPXRoaXMuc3Bhbi5kZXRhaWxzP1wiLCBcIi5jb25jYXQodGhpcy5zcGFuLmRldGFpbHMpOlwiXCI7cmV0dXJuXCJcIi5jb25jYXQodGhpcy5jb250ZXh0dWFsTWVzc2FnZSgpLFwiOiBcIikuY29uY2F0KHRoaXMuc3Bhbi5zdGFydCkuY29uY2F0KGkpfX07ZS5QYXJzZUVycm9yPXA7ZnVuY3Rpb24gRChpLGwpe2xldCBoPXQuaWRlbnRpZmllck1vZHVsZVVybChsKSxDPWghPW51bGw/XCJpbiBcIi5jb25jYXQoaSxcIiBcIikuY29uY2F0KHQuaWRlbnRpZmllck5hbWUobCksXCIgaW4gXCIpLmNvbmNhdChoKTpcImluIFwiLmNvbmNhdChpLFwiIFwiKS5jb25jYXQodC5pZGVudGlmaWVyTmFtZShsKSksZD1uZXcgYyhcIlwiLEMpO3JldHVybiBuZXcgbihuZXcgcyhkLC0xLC0xLC0xKSxuZXcgcyhkLC0xLC0xLC0xKSl9ZS50eXBlU291cmNlU3Bhbj1EO2Z1bmN0aW9uIGcoaSxsLGgpe2xldCBDPVwiaW4gXCIuY29uY2F0KGksXCIgXCIpLmNvbmNhdChsLFwiIGluIFwiKS5jb25jYXQoaCksZD1uZXcgYyhcIlwiLEMpO3JldHVybiBuZXcgbihuZXcgcyhkLC0xLC0xLC0xKSxuZXcgcyhkLC0xLC0xLC0xKSl9ZS5yM0ppdFR5cGVTb3VyY2VTcGFuPWd9fSksYUQ9SSh7XCJzcmMvdXRpbHMvZnJvbnQtbWF0dGVyL3BhcnNlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7dmFyIHQ9bmV3IFJlZ0V4cChcIl4oPzxzdGFydERlbGltaXRlcj4tezN9fFxcXFwrezN9KSg/PGxhbmd1YWdlPlteXFxcXG5dKilcXFxcbig/OnwoPzx2YWx1ZT4uKj8pXFxcXG4pKD88ZW5kRGVsaW1pdGVyPlxcXFxrPHN0YXJ0RGVsaW1pdGVyPnxcXFxcLnszfSlbXlxcXFxTXFxcXG5dKig/OlxcXFxufCQpXCIsXCJzXCIpO2Z1bmN0aW9uIHMoYyl7bGV0IG49Yy5tYXRjaCh0KTtpZighbilyZXR1cm57Y29udGVudDpjfTtsZXR7c3RhcnREZWxpbWl0ZXI6YSxsYW5ndWFnZTpwLHZhbHVlOkQ9XCJcIixlbmREZWxpbWl0ZXI6Z309bi5ncm91cHMsaT1wLnRyaW0oKXx8XCJ5YW1sXCI7aWYoYT09PVwiKysrXCImJihpPVwidG9tbFwiKSxpIT09XCJ5YW1sXCImJmEhPT1nKXJldHVybntjb250ZW50OmN9O2xldFtsXT1uO3JldHVybntmcm9udE1hdHRlcjp7dHlwZTpcImZyb250LW1hdHRlclwiLGxhbmc6aSx2YWx1ZTpELHN0YXJ0RGVsaW1pdGVyOmEsZW5kRGVsaW1pdGVyOmcscmF3OmwucmVwbGFjZSgvXFxuJC8sXCJcIil9LGNvbnRlbnQ6bC5yZXBsYWNlKC9bXlxcbl0vZyxcIiBcIikrYy5zbGljZShsLmxlbmd0aCl9fXIuZXhwb3J0cz1zfX0pLHBzPUkoe1wic3JjL3V0aWxzL2dldC1sYXN0LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7dmFyIHQ9cz0+c1tzLmxlbmd0aC0xXTtyLmV4cG9ydHM9dH19KSxpRD1JKHtcInNyYy9jb21tb24vcGFyc2VyLWNyZWF0ZS1lcnJvci5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO2Z1bmN0aW9uIHQocyxjKXtsZXQgbj1uZXcgU3ludGF4RXJyb3IocytcIiAoXCIrYy5zdGFydC5saW5lK1wiOlwiK2Muc3RhcnQuY29sdW1uK1wiKVwiKTtyZXR1cm4gbi5sb2M9YyxufXIuZXhwb3J0cz10fX0pLGZzPXt9O2NzKGZzLHtkZWZhdWx0OigpPT5vRH0pO2Z1bmN0aW9uIG9EKGUpe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIHN0cmluZ1wiKTtyZXR1cm4gZS5yZXBsYWNlKC9bfFxcXFx7fSgpW1xcXV4kKyo/Ll0vZyxcIlxcXFwkJlwiKS5yZXBsYWNlKC8tL2csXCJcXFxceDJkXCIpfXZhciBjRD1DZSh7XCJub2RlX21vZHVsZXMvZXNjYXBlLXN0cmluZy1yZWdleHAvaW5kZXguanNcIigpe3EoKX19KSxkcz1JKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvZGVidWcuanNcIihlLHIpe3EoKTt2YXIgdD10eXBlb2YgeWU9PVwib2JqZWN0XCImJnllLmVudiYmeWUuZW52Lk5PREVfREVCVUcmJi9cXGJzZW12ZXJcXGIvaS50ZXN0KHllLmVudi5OT0RFX0RFQlVHKT9mdW5jdGlvbigpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGM9bmV3IEFycmF5KHMpLG49MDtuPHM7bisrKWNbbl09YXJndW1lbnRzW25dO3JldHVybiBjb25zb2xlLmVycm9yKFwiU0VNVkVSXCIsLi4uYyl9OigpPT57fTtyLmV4cG9ydHM9dH19KSxFcz1JKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvY29uc3RhbnRzLmpzXCIoZSxyKXtxKCk7dmFyIHQ9XCIyLjAuMFwiLHM9MjU2LGM9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ8fDkwMDcxOTkyNTQ3NDA5OTEsbj0xNjtyLmV4cG9ydHM9e1NFTVZFUl9TUEVDX1ZFUlNJT046dCxNQVhfTEVOR1RIOnMsTUFYX1NBRkVfSU5URUdFUjpjLE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEg6bn19fSksREQ9SSh7XCJub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3JlLmpzXCIoZSxyKXtxKCk7dmFye01BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEg6dH09RXMoKSxzPWRzKCk7ZT1yLmV4cG9ydHM9e307dmFyIGM9ZS5yZT1bXSxuPWUuc3JjPVtdLGE9ZS50PXt9LHA9MCxEPShnLGksbCk9PntsZXQgaD1wKys7cyhnLGgsaSksYVtnXT1oLG5baF09aSxjW2hdPW5ldyBSZWdFeHAoaSxsP1wiZ1wiOnZvaWQgMCl9O0QoXCJOVU1FUklDSURFTlRJRklFUlwiLFwiMHxbMS05XVxcXFxkKlwiKSxEKFwiTlVNRVJJQ0lERU5USUZJRVJMT09TRVwiLFwiWzAtOV0rXCIpLEQoXCJOT05OVU1FUklDSURFTlRJRklFUlwiLFwiXFxcXGQqW2EtekEtWi1dW2EtekEtWjAtOS1dKlwiKSxEKFwiTUFJTlZFUlNJT05cIixcIihcIi5jb25jYXQoblthLk5VTUVSSUNJREVOVElGSUVSXSxcIilcXFxcLihcIikuY29uY2F0KG5bYS5OVU1FUklDSURFTlRJRklFUl0sXCIpXFxcXC4oXCIpLmNvbmNhdChuW2EuTlVNRVJJQ0lERU5USUZJRVJdLFwiKVwiKSksRChcIk1BSU5WRVJTSU9OTE9PU0VcIixcIihcIi5jb25jYXQoblthLk5VTUVSSUNJREVOVElGSUVSTE9PU0VdLFwiKVxcXFwuKFwiKS5jb25jYXQoblthLk5VTUVSSUNJREVOVElGSUVSTE9PU0VdLFwiKVxcXFwuKFwiKS5jb25jYXQoblthLk5VTUVSSUNJREVOVElGSUVSTE9PU0VdLFwiKVwiKSksRChcIlBSRVJFTEVBU0VJREVOVElGSUVSXCIsXCIoPzpcIi5jb25jYXQoblthLk5VTUVSSUNJREVOVElGSUVSXSxcInxcIikuY29uY2F0KG5bYS5OT05OVU1FUklDSURFTlRJRklFUl0sXCIpXCIpKSxEKFwiUFJFUkVMRUFTRUlERU5USUZJRVJMT09TRVwiLFwiKD86XCIuY29uY2F0KG5bYS5OVU1FUklDSURFTlRJRklFUkxPT1NFXSxcInxcIikuY29uY2F0KG5bYS5OT05OVU1FUklDSURFTlRJRklFUl0sXCIpXCIpKSxEKFwiUFJFUkVMRUFTRVwiLFwiKD86LShcIi5jb25jYXQoblthLlBSRVJFTEVBU0VJREVOVElGSUVSXSxcIig/OlxcXFwuXCIpLmNvbmNhdChuW2EuUFJFUkVMRUFTRUlERU5USUZJRVJdLFwiKSopKVwiKSksRChcIlBSRVJFTEVBU0VMT09TRVwiLFwiKD86LT8oXCIuY29uY2F0KG5bYS5QUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXSxcIig/OlxcXFwuXCIpLmNvbmNhdChuW2EuUFJFUkVMRUFTRUlERU5USUZJRVJMT09TRV0sXCIpKikpXCIpKSxEKFwiQlVJTERJREVOVElGSUVSXCIsXCJbMC05QS1aYS16LV0rXCIpLEQoXCJCVUlMRFwiLFwiKD86XFxcXCsoXCIuY29uY2F0KG5bYS5CVUlMRElERU5USUZJRVJdLFwiKD86XFxcXC5cIikuY29uY2F0KG5bYS5CVUlMRElERU5USUZJRVJdLFwiKSopKVwiKSksRChcIkZVTExQTEFJTlwiLFwidj9cIi5jb25jYXQoblthLk1BSU5WRVJTSU9OXSkuY29uY2F0KG5bYS5QUkVSRUxFQVNFXSxcIj9cIikuY29uY2F0KG5bYS5CVUlMRF0sXCI/XCIpKSxEKFwiRlVMTFwiLFwiXlwiLmNvbmNhdChuW2EuRlVMTFBMQUlOXSxcIiRcIikpLEQoXCJMT09TRVBMQUlOXCIsXCJbdj1cXFxcc10qXCIuY29uY2F0KG5bYS5NQUlOVkVSU0lPTkxPT1NFXSkuY29uY2F0KG5bYS5QUkVSRUxFQVNFTE9PU0VdLFwiP1wiKS5jb25jYXQoblthLkJVSUxEXSxcIj9cIikpLEQoXCJMT09TRVwiLFwiXlwiLmNvbmNhdChuW2EuTE9PU0VQTEFJTl0sXCIkXCIpKSxEKFwiR1RMVFwiLFwiKCg/Ojx8Pik/PT8pXCIpLEQoXCJYUkFOR0VJREVOVElGSUVSTE9PU0VcIixcIlwiLmNvbmNhdChuW2EuTlVNRVJJQ0lERU5USUZJRVJMT09TRV0sXCJ8eHxYfFxcXFwqXCIpKSxEKFwiWFJBTkdFSURFTlRJRklFUlwiLFwiXCIuY29uY2F0KG5bYS5OVU1FUklDSURFTlRJRklFUl0sXCJ8eHxYfFxcXFwqXCIpKSxEKFwiWFJBTkdFUExBSU5cIixcIlt2PVxcXFxzXSooXCIuY29uY2F0KG5bYS5YUkFOR0VJREVOVElGSUVSXSxcIikoPzpcXFxcLihcIikuY29uY2F0KG5bYS5YUkFOR0VJREVOVElGSUVSXSxcIikoPzpcXFxcLihcIikuY29uY2F0KG5bYS5YUkFOR0VJREVOVElGSUVSXSxcIikoPzpcIikuY29uY2F0KG5bYS5QUkVSRUxFQVNFXSxcIik/XCIpLmNvbmNhdChuW2EuQlVJTERdLFwiPyk/KT9cIikpLEQoXCJYUkFOR0VQTEFJTkxPT1NFXCIsXCJbdj1cXFxcc10qKFwiLmNvbmNhdChuW2EuWFJBTkdFSURFTlRJRklFUkxPT1NFXSxcIikoPzpcXFxcLihcIikuY29uY2F0KG5bYS5YUkFOR0VJREVOVElGSUVSTE9PU0VdLFwiKSg/OlxcXFwuKFwiKS5jb25jYXQoblthLlhSQU5HRUlERU5USUZJRVJMT09TRV0sXCIpKD86XCIpLmNvbmNhdChuW2EuUFJFUkVMRUFTRUxPT1NFXSxcIik/XCIpLmNvbmNhdChuW2EuQlVJTERdLFwiPyk/KT9cIikpLEQoXCJYUkFOR0VcIixcIl5cIi5jb25jYXQoblthLkdUTFRdLFwiXFxcXHMqXCIpLmNvbmNhdChuW2EuWFJBTkdFUExBSU5dLFwiJFwiKSksRChcIlhSQU5HRUxPT1NFXCIsXCJeXCIuY29uY2F0KG5bYS5HVExUXSxcIlxcXFxzKlwiKS5jb25jYXQoblthLlhSQU5HRVBMQUlOTE9PU0VdLFwiJFwiKSksRChcIkNPRVJDRVwiLFwiKF58W15cXFxcZF0pKFxcXFxkezEsXCIuY29uY2F0KHQsXCJ9KSg/OlxcXFwuKFxcXFxkezEsXCIpLmNvbmNhdCh0LFwifSkpPyg/OlxcXFwuKFxcXFxkezEsXCIpLmNvbmNhdCh0LFwifSkpPyg/OiR8W15cXFxcZF0pXCIpKSxEKFwiQ09FUkNFUlRMXCIsblthLkNPRVJDRV0sITApLEQoXCJMT05FVElMREVcIixcIig/On4+PylcIiksRChcIlRJTERFVFJJTVwiLFwiKFxcXFxzKilcIi5jb25jYXQoblthLkxPTkVUSUxERV0sXCJcXFxccytcIiksITApLGUudGlsZGVUcmltUmVwbGFjZT1cIiQxflwiLEQoXCJUSUxERVwiLFwiXlwiLmNvbmNhdChuW2EuTE9ORVRJTERFXSkuY29uY2F0KG5bYS5YUkFOR0VQTEFJTl0sXCIkXCIpKSxEKFwiVElMREVMT09TRVwiLFwiXlwiLmNvbmNhdChuW2EuTE9ORVRJTERFXSkuY29uY2F0KG5bYS5YUkFOR0VQTEFJTkxPT1NFXSxcIiRcIikpLEQoXCJMT05FQ0FSRVRcIixcIig/OlxcXFxeKVwiKSxEKFwiQ0FSRVRUUklNXCIsXCIoXFxcXHMqKVwiLmNvbmNhdChuW2EuTE9ORUNBUkVUXSxcIlxcXFxzK1wiKSwhMCksZS5jYXJldFRyaW1SZXBsYWNlPVwiJDFeXCIsRChcIkNBUkVUXCIsXCJeXCIuY29uY2F0KG5bYS5MT05FQ0FSRVRdKS5jb25jYXQoblthLlhSQU5HRVBMQUlOXSxcIiRcIikpLEQoXCJDQVJFVExPT1NFXCIsXCJeXCIuY29uY2F0KG5bYS5MT05FQ0FSRVRdKS5jb25jYXQoblthLlhSQU5HRVBMQUlOTE9PU0VdLFwiJFwiKSksRChcIkNPTVBBUkFUT1JMT09TRVwiLFwiXlwiLmNvbmNhdChuW2EuR1RMVF0sXCJcXFxccyooXCIpLmNvbmNhdChuW2EuTE9PU0VQTEFJTl0sXCIpJHxeJFwiKSksRChcIkNPTVBBUkFUT1JcIixcIl5cIi5jb25jYXQoblthLkdUTFRdLFwiXFxcXHMqKFwiKS5jb25jYXQoblthLkZVTExQTEFJTl0sXCIpJHxeJFwiKSksRChcIkNPTVBBUkFUT1JUUklNXCIsXCIoXFxcXHMqKVwiLmNvbmNhdChuW2EuR1RMVF0sXCJcXFxccyooXCIpLmNvbmNhdChuW2EuTE9PU0VQTEFJTl0sXCJ8XCIpLmNvbmNhdChuW2EuWFJBTkdFUExBSU5dLFwiKVwiKSwhMCksZS5jb21wYXJhdG9yVHJpbVJlcGxhY2U9XCIkMSQyJDNcIixEKFwiSFlQSEVOUkFOR0VcIixcIl5cXFxccyooXCIuY29uY2F0KG5bYS5YUkFOR0VQTEFJTl0sXCIpXFxcXHMrLVxcXFxzKyhcIikuY29uY2F0KG5bYS5YUkFOR0VQTEFJTl0sXCIpXFxcXHMqJFwiKSksRChcIkhZUEhFTlJBTkdFTE9PU0VcIixcIl5cXFxccyooXCIuY29uY2F0KG5bYS5YUkFOR0VQTEFJTkxPT1NFXSxcIilcXFxccystXFxcXHMrKFwiKS5jb25jYXQoblthLlhSQU5HRVBMQUlOTE9PU0VdLFwiKVxcXFxzKiRcIikpLEQoXCJTVEFSXCIsXCIoPHw+KT89P1xcXFxzKlxcXFwqXCIpLEQoXCJHVEUwXCIsXCJeXFxcXHMqPj1cXFxccyowXFxcXC4wXFxcXC4wXFxcXHMqJFwiKSxEKFwiR1RFMFBSRVwiLFwiXlxcXFxzKj49XFxcXHMqMFxcXFwuMFxcXFwuMC0wXFxcXHMqJFwiKX19KSxsRD1JKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvcGFyc2Utb3B0aW9ucy5qc1wiKGUscil7cSgpO3ZhciB0PVtcImluY2x1ZGVQcmVyZWxlYXNlXCIsXCJsb29zZVwiLFwicnRsXCJdLHM9Yz0+Yz90eXBlb2YgYyE9XCJvYmplY3RcIj97bG9vc2U6ITB9OnQuZmlsdGVyKG49PmNbbl0pLnJlZHVjZSgobixhKT0+KG5bYV09ITAsbikse30pOnt9O3IuZXhwb3J0cz1zfX0pLGhEPUkoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9pZGVudGlmaWVycy5qc1wiKGUscil7cSgpO3ZhciB0PS9eWzAtOV0rJC8scz0obixhKT0+e2xldCBwPXQudGVzdChuKSxEPXQudGVzdChhKTtyZXR1cm4gcCYmRCYmKG49K24sYT0rYSksbj09PWE/MDpwJiYhRD8tMTpEJiYhcD8xOm48YT8tMToxfSxjPShuLGEpPT5zKGEsbik7ci5leHBvcnRzPXtjb21wYXJlSWRlbnRpZmllcnM6cyxyY29tcGFyZUlkZW50aWZpZXJzOmN9fX0pLHBEPUkoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9jbGFzc2VzL3NlbXZlci5qc1wiKGUscil7cSgpO3ZhciB0PWRzKCkse01BWF9MRU5HVEg6cyxNQVhfU0FGRV9JTlRFR0VSOmN9PUVzKCkse3JlOm4sdDphfT1ERCgpLHA9bEQoKSx7Y29tcGFyZUlkZW50aWZpZXJzOkR9PWhEKCksZz1jbGFzc3tjb25zdHJ1Y3RvcihpLGwpe2lmKGw9cChsKSxpIGluc3RhbmNlb2YgZyl7aWYoaS5sb29zZT09PSEhbC5sb29zZSYmaS5pbmNsdWRlUHJlcmVsZWFzZT09PSEhbC5pbmNsdWRlUHJlcmVsZWFzZSlyZXR1cm4gaTtpPWkudmVyc2lvbn1lbHNlIGlmKHR5cGVvZiBpIT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIFZlcnNpb246IFwiLmNvbmNhdChpKSk7aWYoaS5sZW5ndGg+cyl0aHJvdyBuZXcgVHlwZUVycm9yKFwidmVyc2lvbiBpcyBsb25nZXIgdGhhbiBcIi5jb25jYXQocyxcIiBjaGFyYWN0ZXJzXCIpKTt0KFwiU2VtVmVyXCIsaSxsKSx0aGlzLm9wdGlvbnM9bCx0aGlzLmxvb3NlPSEhbC5sb29zZSx0aGlzLmluY2x1ZGVQcmVyZWxlYXNlPSEhbC5pbmNsdWRlUHJlcmVsZWFzZTtsZXQgaD1pLnRyaW0oKS5tYXRjaChsLmxvb3NlP25bYS5MT09TRV06blthLkZVTExdKTtpZighaCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBWZXJzaW9uOiBcIi5jb25jYXQoaSkpO2lmKHRoaXMucmF3PWksdGhpcy5tYWpvcj0raFsxXSx0aGlzLm1pbm9yPStoWzJdLHRoaXMucGF0Y2g9K2hbM10sdGhpcy5tYWpvcj5jfHx0aGlzLm1ham9yPDApdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgbWFqb3IgdmVyc2lvblwiKTtpZih0aGlzLm1pbm9yPmN8fHRoaXMubWlub3I8MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBtaW5vciB2ZXJzaW9uXCIpO2lmKHRoaXMucGF0Y2g+Y3x8dGhpcy5wYXRjaDwwKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIHBhdGNoIHZlcnNpb25cIik7aFs0XT90aGlzLnByZXJlbGVhc2U9aFs0XS5zcGxpdChcIi5cIikubWFwKEM9PntpZigvXlswLTldKyQvLnRlc3QoQykpe2xldCBkPStDO2lmKGQ+PTAmJmQ8YylyZXR1cm4gZH1yZXR1cm4gQ30pOnRoaXMucHJlcmVsZWFzZT1bXSx0aGlzLmJ1aWxkPWhbNV0/aFs1XS5zcGxpdChcIi5cIik6W10sdGhpcy5mb3JtYXQoKX1mb3JtYXQoKXtyZXR1cm4gdGhpcy52ZXJzaW9uPVwiXCIuY29uY2F0KHRoaXMubWFqb3IsXCIuXCIpLmNvbmNhdCh0aGlzLm1pbm9yLFwiLlwiKS5jb25jYXQodGhpcy5wYXRjaCksdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCYmKHRoaXMudmVyc2lvbis9XCItXCIuY29uY2F0KHRoaXMucHJlcmVsZWFzZS5qb2luKFwiLlwiKSkpLHRoaXMudmVyc2lvbn10b1N0cmluZygpe3JldHVybiB0aGlzLnZlcnNpb259Y29tcGFyZShpKXtpZih0KFwiU2VtVmVyLmNvbXBhcmVcIix0aGlzLnZlcnNpb24sdGhpcy5vcHRpb25zLGkpLCEoaSBpbnN0YW5jZW9mIGcpKXtpZih0eXBlb2YgaT09XCJzdHJpbmdcIiYmaT09PXRoaXMudmVyc2lvbilyZXR1cm4gMDtpPW5ldyBnKGksdGhpcy5vcHRpb25zKX1yZXR1cm4gaS52ZXJzaW9uPT09dGhpcy52ZXJzaW9uPzA6dGhpcy5jb21wYXJlTWFpbihpKXx8dGhpcy5jb21wYXJlUHJlKGkpfWNvbXBhcmVNYWluKGkpe3JldHVybiBpIGluc3RhbmNlb2YgZ3x8KGk9bmV3IGcoaSx0aGlzLm9wdGlvbnMpKSxEKHRoaXMubWFqb3IsaS5tYWpvcil8fEQodGhpcy5taW5vcixpLm1pbm9yKXx8RCh0aGlzLnBhdGNoLGkucGF0Y2gpfWNvbXBhcmVQcmUoaSl7aWYoaSBpbnN0YW5jZW9mIGd8fChpPW5ldyBnKGksdGhpcy5vcHRpb25zKSksdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCYmIWkucHJlcmVsZWFzZS5sZW5ndGgpcmV0dXJuLTE7aWYoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGgmJmkucHJlcmVsZWFzZS5sZW5ndGgpcmV0dXJuIDE7aWYoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGgmJiFpLnByZXJlbGVhc2UubGVuZ3RoKXJldHVybiAwO2xldCBsPTA7ZG97bGV0IGg9dGhpcy5wcmVyZWxlYXNlW2xdLEM9aS5wcmVyZWxlYXNlW2xdO2lmKHQoXCJwcmVyZWxlYXNlIGNvbXBhcmVcIixsLGgsQyksaD09PXZvaWQgMCYmQz09PXZvaWQgMClyZXR1cm4gMDtpZihDPT09dm9pZCAwKXJldHVybiAxO2lmKGg9PT12b2lkIDApcmV0dXJuLTE7aWYoaD09PUMpY29udGludWU7cmV0dXJuIEQoaCxDKX13aGlsZSgrK2wpfWNvbXBhcmVCdWlsZChpKXtpIGluc3RhbmNlb2YgZ3x8KGk9bmV3IGcoaSx0aGlzLm9wdGlvbnMpKTtsZXQgbD0wO2Rve2xldCBoPXRoaXMuYnVpbGRbbF0sQz1pLmJ1aWxkW2xdO2lmKHQoXCJwcmVyZWxlYXNlIGNvbXBhcmVcIixsLGgsQyksaD09PXZvaWQgMCYmQz09PXZvaWQgMClyZXR1cm4gMDtpZihDPT09dm9pZCAwKXJldHVybiAxO2lmKGg9PT12b2lkIDApcmV0dXJuLTE7aWYoaD09PUMpY29udGludWU7cmV0dXJuIEQoaCxDKX13aGlsZSgrK2wpfWluYyhpLGwpe3N3aXRjaChpKXtjYXNlXCJwcmVtYWpvclwiOnRoaXMucHJlcmVsZWFzZS5sZW5ndGg9MCx0aGlzLnBhdGNoPTAsdGhpcy5taW5vcj0wLHRoaXMubWFqb3IrKyx0aGlzLmluYyhcInByZVwiLGwpO2JyZWFrO2Nhc2VcInByZW1pbm9yXCI6dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD0wLHRoaXMucGF0Y2g9MCx0aGlzLm1pbm9yKyssdGhpcy5pbmMoXCJwcmVcIixsKTticmVhaztjYXNlXCJwcmVwYXRjaFwiOnRoaXMucHJlcmVsZWFzZS5sZW5ndGg9MCx0aGlzLmluYyhcInBhdGNoXCIsbCksdGhpcy5pbmMoXCJwcmVcIixsKTticmVhaztjYXNlXCJwcmVyZWxlYXNlXCI6dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD09PTAmJnRoaXMuaW5jKFwicGF0Y2hcIixsKSx0aGlzLmluYyhcInByZVwiLGwpO2JyZWFrO2Nhc2VcIm1ham9yXCI6KHRoaXMubWlub3IhPT0wfHx0aGlzLnBhdGNoIT09MHx8dGhpcy5wcmVyZWxlYXNlLmxlbmd0aD09PTApJiZ0aGlzLm1ham9yKyssdGhpcy5taW5vcj0wLHRoaXMucGF0Y2g9MCx0aGlzLnByZXJlbGVhc2U9W107YnJlYWs7Y2FzZVwibWlub3JcIjoodGhpcy5wYXRjaCE9PTB8fHRoaXMucHJlcmVsZWFzZS5sZW5ndGg9PT0wKSYmdGhpcy5taW5vcisrLHRoaXMucGF0Y2g9MCx0aGlzLnByZXJlbGVhc2U9W107YnJlYWs7Y2FzZVwicGF0Y2hcIjp0aGlzLnByZXJlbGVhc2UubGVuZ3RoPT09MCYmdGhpcy5wYXRjaCsrLHRoaXMucHJlcmVsZWFzZT1bXTticmVhaztjYXNlXCJwcmVcIjppZih0aGlzLnByZXJlbGVhc2UubGVuZ3RoPT09MCl0aGlzLnByZXJlbGVhc2U9WzBdO2Vsc2V7bGV0IGg9dGhpcy5wcmVyZWxlYXNlLmxlbmd0aDtmb3IoOy0taD49MDspdHlwZW9mIHRoaXMucHJlcmVsZWFzZVtoXT09XCJudW1iZXJcIiYmKHRoaXMucHJlcmVsZWFzZVtoXSsrLGg9LTIpO2g9PT0tMSYmdGhpcy5wcmVyZWxlYXNlLnB1c2goMCl9bCYmKEQodGhpcy5wcmVyZWxlYXNlWzBdLGwpPT09MD9pc05hTih0aGlzLnByZXJlbGVhc2VbMV0pJiYodGhpcy5wcmVyZWxlYXNlPVtsLDBdKTp0aGlzLnByZXJlbGVhc2U9W2wsMF0pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBpbmNyZW1lbnQgYXJndW1lbnQ6IFwiLmNvbmNhdChpKSl9cmV0dXJuIHRoaXMuZm9ybWF0KCksdGhpcy5yYXc9dGhpcy52ZXJzaW9uLHRoaXN9fTtyLmV4cG9ydHM9Z319KSxVcj1JKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUuanNcIihlLHIpe3EoKTt2YXIgdD1wRCgpLHM9KGMsbixhKT0+bmV3IHQoYyxhKS5jb21wYXJlKG5ldyB0KG4sYSkpO3IuZXhwb3J0cz1zfX0pLGZEPUkoe1wibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbHQuanNcIihlLHIpe3EoKTt2YXIgdD1VcigpLHM9KGMsbixhKT0+dChjLG4sYSk8MDtyLmV4cG9ydHM9c319KSxkRD1JKHtcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2d0ZS5qc1wiKGUscil7cSgpO3ZhciB0PVVyKCkscz0oYyxuLGEpPT50KGMsbixhKT49MDtyLmV4cG9ydHM9c319KSxFRD1JKHtcInNyYy91dGlscy9hcnJheWlmeS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpLHIuZXhwb3J0cz0odCxzKT0+T2JqZWN0LmVudHJpZXModCkubWFwKGM9PntsZXRbbixhXT1jO3JldHVybiBPYmplY3QuYXNzaWduKHtbc106bn0sYSl9KX19KSxDRD1JKHtcInBhY2thZ2UuanNvblwiKGUscil7ci5leHBvcnRzPXt2ZXJzaW9uOlwiMi43LjFcIn19fSksbUQ9SSh7XCJub2RlX21vZHVsZXMvb3V0ZGVudC9saWIvaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO3EoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLm91dGRlbnQ9dm9pZCAwO2Z1bmN0aW9uIHQoKXtmb3IodmFyIEE9W10sTj0wO048YXJndW1lbnRzLmxlbmd0aDtOKyspQVtOXT1hcmd1bWVudHNbTl19ZnVuY3Rpb24gcygpe3JldHVybiB0eXBlb2YgV2Vha01hcDxcInVcIj9uZXcgV2Vha01hcDpjKCl9ZnVuY3Rpb24gYygpe3JldHVybnthZGQ6dCxkZWxldGU6dCxnZXQ6dCxzZXQ6dCxoYXM6ZnVuY3Rpb24oQSl7cmV0dXJuITF9fX12YXIgbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGE9ZnVuY3Rpb24oQSxOKXtyZXR1cm4gbi5jYWxsKEEsTil9O2Z1bmN0aW9uIHAoQSxOKXtmb3IodmFyIFIgaW4gTilhKE4sUikmJihBW1JdPU5bUl0pO3JldHVybiBBfXZhciBEPS9eWyBcXHRdKig/OlxcclxcbnxcXHJ8XFxuKS8sZz0vKD86XFxyXFxufFxccnxcXG4pWyBcXHRdKiQvLGk9L14oPzpbXFxyXFxuXXwkKS8sbD0vKD86XFxyXFxufFxccnxcXG4pKFsgXFx0XSopKD86W14gXFx0XFxyXFxuXXwkKS8saD0vXlsgXFx0XSpbXFxyXFxuXVsgXFx0XFxyXFxuXSokLztmdW5jdGlvbiBDKEEsTixSKXt2YXIgJD0wLF89QVswXS5tYXRjaChsKTtfJiYoJD1fWzFdLmxlbmd0aCk7dmFyIE89XCIoXFxcXHJcXFxcbnxcXFxccnxcXFxcbikuezAsXCIrJCtcIn1cIix4PW5ldyBSZWdFeHAoTyxcImdcIik7TiYmKEE9QS5zbGljZSgxKSk7dmFyIGs9Ui5uZXdsaW5lLE09Ui50cmltTGVhZGluZ05ld2xpbmUsdT1SLnRyaW1UcmFpbGluZ05ld2xpbmUsbz10eXBlb2Ygaz09XCJzdHJpbmdcIixFPUEubGVuZ3RoLGY9QS5tYXAoZnVuY3Rpb24oRixQKXtyZXR1cm4gRj1GLnJlcGxhY2UoeCxcIiQxXCIpLFA9PT0wJiZNJiYoRj1GLnJlcGxhY2UoRCxcIlwiKSksUD09PUUtMSYmdSYmKEY9Ri5yZXBsYWNlKGcsXCJcIikpLG8mJihGPUYucmVwbGFjZSgvXFxyXFxufFxcbnxcXHIvZyxmdW5jdGlvbihqKXtyZXR1cm4ga30pKSxGfSk7cmV0dXJuIGZ9ZnVuY3Rpb24gZChBLE4pe2Zvcih2YXIgUj1cIlwiLCQ9MCxfPUEubGVuZ3RoOyQ8XzskKyspUis9QVskXSwkPF8tMSYmKFIrPU5bJF0pO3JldHVybiBSfWZ1bmN0aW9uIG0oQSl7cmV0dXJuIGEoQSxcInJhd1wiKSYmYShBLFwibGVuZ3RoXCIpfWZ1bmN0aW9uIFQoQSl7dmFyIE49cygpLFI9cygpO2Z1bmN0aW9uICQoTyl7Zm9yKHZhciB4PVtdLGs9MTtrPGFyZ3VtZW50cy5sZW5ndGg7aysrKXhbay0xXT1hcmd1bWVudHNba107aWYobShPKSl7dmFyIE09Tyx1PSh4WzBdPT09JHx8eFswXT09PUIpJiZoLnRlc3QoTVswXSkmJmkudGVzdChNWzFdKSxvPXU/UjpOLEU9by5nZXQoTSk7aWYoRXx8KEU9QyhNLHUsQSksby5zZXQoTSxFKSkseC5sZW5ndGg9PT0wKXJldHVybiBFWzBdO3ZhciBmPWQoRSx1P3guc2xpY2UoMSk6eCk7cmV0dXJuIGZ9ZWxzZSByZXR1cm4gVChwKHAoe30sQSksT3x8e30pKX12YXIgXz1wKCQse3N0cmluZzpmdW5jdGlvbihPKXtyZXR1cm4gQyhbT10sITEsQSlbMF19fSk7cmV0dXJuIF99dmFyIEI9VCh7dHJpbUxlYWRpbmdOZXdsaW5lOiEwLHRyaW1UcmFpbGluZ05ld2xpbmU6ITB9KTtpZihlLm91dGRlbnQ9QixlLmRlZmF1bHQ9Qix0eXBlb2YgcjxcInVcIil0cnl7ci5leHBvcnRzPUIsT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksQi5kZWZhdWx0PUIsQi5vdXRkZW50PUJ9Y2F0Y2h7fX19KSxnRD1JKHtcInNyYy9tYWluL2NvcmUtb3B0aW9ucy5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO3ZhcntvdXRkZW50OnR9PW1EKCkscz1cIkNvbmZpZ1wiLGM9XCJFZGl0b3JcIixuPVwiRm9ybWF0XCIsYT1cIk90aGVyXCIscD1cIk91dHB1dFwiLEQ9XCJHbG9iYWxcIixnPVwiU3BlY2lhbFwiLGk9e2N1cnNvck9mZnNldDp7c2luY2U6XCIxLjQuMFwiLGNhdGVnb3J5OmcsdHlwZTpcImludFwiLGRlZmF1bHQ6LTEscmFuZ2U6e3N0YXJ0Oi0xLGVuZDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksc3RlcDoxfSxkZXNjcmlwdGlvbjp0KEpufHwoSm49RWUoW2BcbiAgICAgIFByaW50ICh0byBzdGRlcnIpIHdoZXJlIGEgY3Vyc29yIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiB3b3VsZCBtb3ZlIHRvIGFmdGVyIGZvcm1hdHRpbmcuXG4gICAgICBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tcmFuZ2Utc3RhcnQgYW5kIC0tcmFuZ2UtZW5kLlxuICAgIGBdKSkpLGNsaUNhdGVnb3J5OmN9LGVuZE9mTGluZTp7c2luY2U6XCIxLjE1LjBcIixjYXRlZ29yeTpELHR5cGU6XCJjaG9pY2VcIixkZWZhdWx0Olt7c2luY2U6XCIxLjE1LjBcIix2YWx1ZTpcImF1dG9cIn0se3NpbmNlOlwiMi4wLjBcIix2YWx1ZTpcImxmXCJ9XSxkZXNjcmlwdGlvbjpcIldoaWNoIGVuZCBvZiBsaW5lIGNoYXJhY3RlcnMgdG8gYXBwbHkuXCIsY2hvaWNlczpbe3ZhbHVlOlwibGZcIixkZXNjcmlwdGlvbjpcIkxpbmUgRmVlZCBvbmx5IChcXFxcbiksIGNvbW1vbiBvbiBMaW51eCBhbmQgbWFjT1MgYXMgd2VsbCBhcyBpbnNpZGUgZ2l0IHJlcG9zXCJ9LHt2YWx1ZTpcImNybGZcIixkZXNjcmlwdGlvbjpcIkNhcnJpYWdlIFJldHVybiArIExpbmUgRmVlZCBjaGFyYWN0ZXJzIChcXFxcclxcXFxuKSwgY29tbW9uIG9uIFdpbmRvd3NcIn0se3ZhbHVlOlwiY3JcIixkZXNjcmlwdGlvbjpcIkNhcnJpYWdlIFJldHVybiBjaGFyYWN0ZXIgb25seSAoXFxcXHIpLCB1c2VkIHZlcnkgcmFyZWx5XCJ9LHt2YWx1ZTpcImF1dG9cIixkZXNjcmlwdGlvbjp0KFpufHwoWm49RWUoW2BcbiAgICAgICAgICBNYWludGFpbiBleGlzdGluZ1xuICAgICAgICAgIChtaXhlZCB2YWx1ZXMgd2l0aGluIG9uZSBmaWxlIGFyZSBub3JtYWxpc2VkIGJ5IGxvb2tpbmcgYXQgd2hhdCdzIHVzZWQgYWZ0ZXIgdGhlIGZpcnN0IGxpbmUpXG4gICAgICAgIGBdKSkpfV19LGZpbGVwYXRoOntzaW5jZTpcIjEuNC4wXCIsY2F0ZWdvcnk6Zyx0eXBlOlwicGF0aFwiLGRlc2NyaXB0aW9uOlwiU3BlY2lmeSB0aGUgaW5wdXQgZmlsZXBhdGguIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGRvIHBhcnNlciBpbmZlcmVuY2UuXCIsY2xpTmFtZTpcInN0ZGluLWZpbGVwYXRoXCIsY2xpQ2F0ZWdvcnk6YSxjbGlEZXNjcmlwdGlvbjpcIlBhdGggdG8gdGhlIGZpbGUgdG8gcHJldGVuZCB0aGF0IHN0ZGluIGNvbWVzIGZyb20uXCJ9LGluc2VydFByYWdtYTp7c2luY2U6XCIxLjguMFwiLGNhdGVnb3J5OmcsdHlwZTpcImJvb2xlYW5cIixkZWZhdWx0OiExLGRlc2NyaXB0aW9uOlwiSW5zZXJ0IEBmb3JtYXQgcHJhZ21hIGludG8gZmlsZSdzIGZpcnN0IGRvY2Jsb2NrIGNvbW1lbnQuXCIsY2xpQ2F0ZWdvcnk6YX0scGFyc2VyOntzaW5jZTpcIjAuMC4xMFwiLGNhdGVnb3J5OkQsdHlwZTpcImNob2ljZVwiLGRlZmF1bHQ6W3tzaW5jZTpcIjAuMC4xMFwiLHZhbHVlOlwiYmFieWxvblwifSx7c2luY2U6XCIxLjEzLjBcIix2YWx1ZTp2b2lkIDB9XSxkZXNjcmlwdGlvbjpcIldoaWNoIHBhcnNlciB0byB1c2UuXCIsZXhjZXB0aW9uOmw9PnR5cGVvZiBsPT1cInN0cmluZ1wifHx0eXBlb2YgbD09XCJmdW5jdGlvblwiLGNob2ljZXM6W3t2YWx1ZTpcImZsb3dcIixkZXNjcmlwdGlvbjpcIkZsb3dcIn0se3ZhbHVlOlwiYmFiZWxcIixzaW5jZTpcIjEuMTYuMFwiLGRlc2NyaXB0aW9uOlwiSmF2YVNjcmlwdFwifSx7dmFsdWU6XCJiYWJlbC1mbG93XCIsc2luY2U6XCIxLjE2LjBcIixkZXNjcmlwdGlvbjpcIkZsb3dcIn0se3ZhbHVlOlwiYmFiZWwtdHNcIixzaW5jZTpcIjIuMC4wXCIsZGVzY3JpcHRpb246XCJUeXBlU2NyaXB0XCJ9LHt2YWx1ZTpcInR5cGVzY3JpcHRcIixzaW5jZTpcIjEuNC4wXCIsZGVzY3JpcHRpb246XCJUeXBlU2NyaXB0XCJ9LHt2YWx1ZTpcImFjb3JuXCIsc2luY2U6XCIyLjYuMFwiLGRlc2NyaXB0aW9uOlwiSmF2YVNjcmlwdFwifSx7dmFsdWU6XCJlc3ByZWVcIixzaW5jZTpcIjIuMi4wXCIsZGVzY3JpcHRpb246XCJKYXZhU2NyaXB0XCJ9LHt2YWx1ZTpcIm1lcml5YWhcIixzaW5jZTpcIjIuMi4wXCIsZGVzY3JpcHRpb246XCJKYXZhU2NyaXB0XCJ9LHt2YWx1ZTpcImNzc1wiLHNpbmNlOlwiMS43LjFcIixkZXNjcmlwdGlvbjpcIkNTU1wifSx7dmFsdWU6XCJsZXNzXCIsc2luY2U6XCIxLjcuMVwiLGRlc2NyaXB0aW9uOlwiTGVzc1wifSx7dmFsdWU6XCJzY3NzXCIsc2luY2U6XCIxLjcuMVwiLGRlc2NyaXB0aW9uOlwiU0NTU1wifSx7dmFsdWU6XCJqc29uXCIsc2luY2U6XCIxLjUuMFwiLGRlc2NyaXB0aW9uOlwiSlNPTlwifSx7dmFsdWU6XCJqc29uNVwiLHNpbmNlOlwiMS4xMy4wXCIsZGVzY3JpcHRpb246XCJKU09ONVwifSx7dmFsdWU6XCJqc29uLXN0cmluZ2lmeVwiLHNpbmNlOlwiMS4xMy4wXCIsZGVzY3JpcHRpb246XCJKU09OLnN0cmluZ2lmeVwifSx7dmFsdWU6XCJncmFwaHFsXCIsc2luY2U6XCIxLjUuMFwiLGRlc2NyaXB0aW9uOlwiR3JhcGhRTFwifSx7dmFsdWU6XCJtYXJrZG93blwiLHNpbmNlOlwiMS44LjBcIixkZXNjcmlwdGlvbjpcIk1hcmtkb3duXCJ9LHt2YWx1ZTpcIm1keFwiLHNpbmNlOlwiMS4xNS4wXCIsZGVzY3JpcHRpb246XCJNRFhcIn0se3ZhbHVlOlwidnVlXCIsc2luY2U6XCIxLjEwLjBcIixkZXNjcmlwdGlvbjpcIlZ1ZVwifSx7dmFsdWU6XCJ5YW1sXCIsc2luY2U6XCIxLjE0LjBcIixkZXNjcmlwdGlvbjpcIllBTUxcIn0se3ZhbHVlOlwiZ2xpbW1lclwiLHNpbmNlOlwiMi4zLjBcIixkZXNjcmlwdGlvbjpcIkVtYmVyIC8gSGFuZGxlYmFyc1wifSx7dmFsdWU6XCJodG1sXCIsc2luY2U6XCIxLjE1LjBcIixkZXNjcmlwdGlvbjpcIkhUTUxcIn0se3ZhbHVlOlwiYW5ndWxhclwiLHNpbmNlOlwiMS4xNS4wXCIsZGVzY3JpcHRpb246XCJBbmd1bGFyXCJ9LHt2YWx1ZTpcImx3Y1wiLHNpbmNlOlwiMS4xNy4wXCIsZGVzY3JpcHRpb246XCJMaWdodG5pbmcgV2ViIENvbXBvbmVudHNcIn1dfSxwbHVnaW5zOntzaW5jZTpcIjEuMTAuMFwiLHR5cGU6XCJwYXRoXCIsYXJyYXk6ITAsZGVmYXVsdDpbe3ZhbHVlOltdfV0sY2F0ZWdvcnk6RCxkZXNjcmlwdGlvbjpcIkFkZCBhIHBsdWdpbi4gTXVsdGlwbGUgcGx1Z2lucyBjYW4gYmUgcGFzc2VkIGFzIHNlcGFyYXRlIGAtLXBsdWdpbmBzLlwiLGV4Y2VwdGlvbjpsPT50eXBlb2YgbD09XCJzdHJpbmdcInx8dHlwZW9mIGw9PVwib2JqZWN0XCIsY2xpTmFtZTpcInBsdWdpblwiLGNsaUNhdGVnb3J5OnN9LHBsdWdpblNlYXJjaERpcnM6e3NpbmNlOlwiMS4xMy4wXCIsdHlwZTpcInBhdGhcIixhcnJheTohMCxkZWZhdWx0Olt7dmFsdWU6W119XSxjYXRlZ29yeTpELGRlc2NyaXB0aW9uOnQoZXN8fChlcz1FZShbYFxuICAgICAgQ3VzdG9tIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHByZXR0aWVyIHBsdWdpbnMgaW4gbm9kZV9tb2R1bGVzIHN1YmRpcmVjdG9yeS5cbiAgICAgIE92ZXJyaWRlcyBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gcGx1Z2lucyBhcmUgc2VhcmNoZWQgcmVsYXRpdmVseSB0byB0aGUgbG9jYXRpb24gb2YgUHJldHRpZXIuXG4gICAgICBNdWx0aXBsZSB2YWx1ZXMgYXJlIGFjY2VwdGVkLlxuICAgIGBdKSkpLGV4Y2VwdGlvbjpsPT50eXBlb2YgbD09XCJzdHJpbmdcInx8dHlwZW9mIGw9PVwib2JqZWN0XCIsY2xpTmFtZTpcInBsdWdpbi1zZWFyY2gtZGlyXCIsY2xpQ2F0ZWdvcnk6c30scHJpbnRXaWR0aDp7c2luY2U6XCIwLjAuMFwiLGNhdGVnb3J5OkQsdHlwZTpcImludFwiLGRlZmF1bHQ6ODAsZGVzY3JpcHRpb246XCJUaGUgbGluZSBsZW5ndGggd2hlcmUgUHJldHRpZXIgd2lsbCB0cnkgd3JhcC5cIixyYW5nZTp7c3RhcnQ6MCxlbmQ6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHN0ZXA6MX19LHJhbmdlRW5kOntzaW5jZTpcIjEuNC4wXCIsY2F0ZWdvcnk6Zyx0eXBlOlwiaW50XCIsZGVmYXVsdDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkscmFuZ2U6e3N0YXJ0OjAsZW5kOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzdGVwOjF9LGRlc2NyaXB0aW9uOnQocnN8fChycz1FZShbYFxuICAgICAgRm9ybWF0IGNvZGUgZW5kaW5nIGF0IGEgZ2l2ZW4gY2hhcmFjdGVyIG9mZnNldCAoZXhjbHVzaXZlKS5cbiAgICAgIFRoZSByYW5nZSB3aWxsIGV4dGVuZCBmb3J3YXJkcyB0byB0aGUgZW5kIG9mIHRoZSBzZWxlY3RlZCBzdGF0ZW1lbnQuXG4gICAgICBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tY3Vyc29yLW9mZnNldC5cbiAgICBgXSkpKSxjbGlDYXRlZ29yeTpjfSxyYW5nZVN0YXJ0OntzaW5jZTpcIjEuNC4wXCIsY2F0ZWdvcnk6Zyx0eXBlOlwiaW50XCIsZGVmYXVsdDowLHJhbmdlOntzdGFydDowLGVuZDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksc3RlcDoxfSxkZXNjcmlwdGlvbjp0KHRzfHwodHM9RWUoW2BcbiAgICAgIEZvcm1hdCBjb2RlIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4gY2hhcmFjdGVyIG9mZnNldC5cbiAgICAgIFRoZSByYW5nZSB3aWxsIGV4dGVuZCBiYWNrd2FyZHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBsaW5lIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIHN0YXRlbWVudC5cbiAgICAgIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1jdXJzb3Itb2Zmc2V0LlxuICAgIGBdKSkpLGNsaUNhdGVnb3J5OmN9LHJlcXVpcmVQcmFnbWE6e3NpbmNlOlwiMS43LjBcIixjYXRlZ29yeTpnLHR5cGU6XCJib29sZWFuXCIsZGVmYXVsdDohMSxkZXNjcmlwdGlvbjp0KHVzfHwodXM9RWUoW2BcbiAgICAgIFJlcXVpcmUgZWl0aGVyICdAcHJldHRpZXInIG9yICdAZm9ybWF0JyB0byBiZSBwcmVzZW50IGluIHRoZSBmaWxlJ3MgZmlyc3QgZG9jYmxvY2sgY29tbWVudFxuICAgICAgaW4gb3JkZXIgZm9yIGl0IHRvIGJlIGZvcm1hdHRlZC5cbiAgICBgXSkpKSxjbGlDYXRlZ29yeTphfSx0YWJXaWR0aDp7dHlwZTpcImludFwiLGNhdGVnb3J5OkQsZGVmYXVsdDoyLGRlc2NyaXB0aW9uOlwiTnVtYmVyIG9mIHNwYWNlcyBwZXIgaW5kZW50YXRpb24gbGV2ZWwuXCIscmFuZ2U6e3N0YXJ0OjAsZW5kOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzdGVwOjF9fSx1c2VUYWJzOntzaW5jZTpcIjEuMC4wXCIsY2F0ZWdvcnk6RCx0eXBlOlwiYm9vbGVhblwiLGRlZmF1bHQ6ITEsZGVzY3JpcHRpb246XCJJbmRlbnQgd2l0aCB0YWJzIGluc3RlYWQgb2Ygc3BhY2VzLlwifSxlbWJlZGRlZExhbmd1YWdlRm9ybWF0dGluZzp7c2luY2U6XCIyLjEuMFwiLGNhdGVnb3J5OkQsdHlwZTpcImNob2ljZVwiLGRlZmF1bHQ6W3tzaW5jZTpcIjIuMS4wXCIsdmFsdWU6XCJhdXRvXCJ9XSxkZXNjcmlwdGlvbjpcIkNvbnRyb2wgaG93IFByZXR0aWVyIGZvcm1hdHMgcXVvdGVkIGNvZGUgZW1iZWRkZWQgaW4gdGhlIGZpbGUuXCIsY2hvaWNlczpbe3ZhbHVlOlwiYXV0b1wiLGRlc2NyaXB0aW9uOlwiRm9ybWF0IGVtYmVkZGVkIGNvZGUgaWYgUHJldHRpZXIgY2FuIGF1dG9tYXRpY2FsbHkgaWRlbnRpZnkgaXQuXCJ9LHt2YWx1ZTpcIm9mZlwiLGRlc2NyaXB0aW9uOlwiTmV2ZXIgYXV0b21hdGljYWxseSBmb3JtYXQgZW1iZWRkZWQgY29kZS5cIn1dfX07ci5leHBvcnRzPXtDQVRFR09SWV9DT05GSUc6cyxDQVRFR09SWV9FRElUT1I6YyxDQVRFR09SWV9GT1JNQVQ6bixDQVRFR09SWV9PVEhFUjphLENBVEVHT1JZX09VVFBVVDpwLENBVEVHT1JZX0dMT0JBTDpELENBVEVHT1JZX1NQRUNJQUw6ZyxvcHRpb25zOml9fX0pLEZEPUkoe1wic3JjL21haW4vc3VwcG9ydC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO3ZhciB0PXtjb21wYXJlOlVyKCksbHQ6ZkQoKSxndGU6ZEQoKX0scz1FRCgpLGM9Q0QoKS52ZXJzaW9uLG49Z0QoKS5vcHRpb25zO2Z1bmN0aW9uIGEoKXtsZXR7cGx1Z2luczpEPVtdLHNob3dVbnJlbGVhc2VkOmc9ITEsc2hvd0RlcHJlY2F0ZWQ6aT0hMSxzaG93SW50ZXJuYWw6bD0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LGg9Yy5zcGxpdChcIi1cIiwxKVswXSxDPUQuZmxhdE1hcChBPT5BLmxhbmd1YWdlc3x8W10pLmZpbHRlcihtKSxkPXMoT2JqZWN0LmFzc2lnbih7fSwuLi5ELm1hcChBPT57bGV0e29wdGlvbnM6Tn09QTtyZXR1cm4gTn0pLG4pLFwibmFtZVwiKS5maWx0ZXIoQT0+bShBKSYmVChBKSkuc29ydCgoQSxOKT0+QS5uYW1lPT09Ti5uYW1lPzA6QS5uYW1lPE4ubmFtZT8tMToxKS5tYXAoQikubWFwKEE9PntBPU9iamVjdC5hc3NpZ24oe30sQSksQXJyYXkuaXNBcnJheShBLmRlZmF1bHQpJiYoQS5kZWZhdWx0PUEuZGVmYXVsdC5sZW5ndGg9PT0xP0EuZGVmYXVsdFswXS52YWx1ZTpBLmRlZmF1bHQuZmlsdGVyKG0pLnNvcnQoKFIsJCk9PnQuY29tcGFyZSgkLnNpbmNlLFIuc2luY2UpKVswXS52YWx1ZSksQXJyYXkuaXNBcnJheShBLmNob2ljZXMpJiYoQS5jaG9pY2VzPUEuY2hvaWNlcy5maWx0ZXIoUj0+bShSKSYmVChSKSksQS5uYW1lPT09XCJwYXJzZXJcIiYmcChBLEMsRCkpO2xldCBOPU9iamVjdC5mcm9tRW50cmllcyhELmZpbHRlcihSPT5SLmRlZmF1bHRPcHRpb25zJiZSLmRlZmF1bHRPcHRpb25zW0EubmFtZV0hPT12b2lkIDApLm1hcChSPT5bUi5uYW1lLFIuZGVmYXVsdE9wdGlvbnNbQS5uYW1lXV0pKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEEpLHt9LHtwbHVnaW5EZWZhdWx0czpOfSl9KTtyZXR1cm57bGFuZ3VhZ2VzOkMsb3B0aW9uczpkfTtmdW5jdGlvbiBtKEEpe3JldHVybiBnfHwhKFwic2luY2VcImluIEEpfHxBLnNpbmNlJiZ0Lmd0ZShoLEEuc2luY2UpfWZ1bmN0aW9uIFQoQSl7cmV0dXJuIGl8fCEoXCJkZXByZWNhdGVkXCJpbiBBKXx8QS5kZXByZWNhdGVkJiZ0Lmx0KGgsQS5kZXByZWNhdGVkKX1mdW5jdGlvbiBCKEEpe2lmKGwpcmV0dXJuIEE7bGV0e2NsaU5hbWU6TixjbGlDYXRlZ29yeTpSLGNsaURlc2NyaXB0aW9uOiR9PUE7cmV0dXJuIFFjKEEsWWMpfX1mdW5jdGlvbiBwKEQsZyxpKXtsZXQgbD1uZXcgU2V0KEQuY2hvaWNlcy5tYXAoaD0+aC52YWx1ZSkpO2ZvcihsZXQgaCBvZiBnKWlmKGgucGFyc2Vycyl7Zm9yKGxldCBDIG9mIGgucGFyc2VycylpZighbC5oYXMoQykpe2wuYWRkKEMpO2xldCBkPWkuZmluZChUPT5ULnBhcnNlcnMmJlQucGFyc2Vyc1tDXSksbT1oLm5hbWU7ZCYmZC5uYW1lJiYobSs9XCIgKHBsdWdpbjogXCIuY29uY2F0KGQubmFtZSxcIilcIikpLEQuY2hvaWNlcy5wdXNoKHt2YWx1ZTpDLGRlc2NyaXB0aW9uOm19KX19fXIuZXhwb3J0cz17Z2V0U3VwcG9ydEluZm86YX19fSksQUQ9SSh7XCJzcmMvdXRpbHMvaXMtbm9uLWVtcHR5LWFycmF5LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7ZnVuY3Rpb24gdChzKXtyZXR1cm4gQXJyYXkuaXNBcnJheShzKSYmcy5sZW5ndGg+MH1yLmV4cG9ydHM9dH19KTtmdW5jdGlvbiB2RCgpe2xldHtvbmx5Rmlyc3Q6ZT0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LHI9W1wiW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KVwiLFwiKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSlcIl0uam9pbihcInxcIik7cmV0dXJuIG5ldyBSZWdFeHAocixlP3ZvaWQgMDpcImdcIil9dmFyIF9EPUNlKHtcIm5vZGVfbW9kdWxlcy9zdHJpcC1hbnNpL25vZGVfbW9kdWxlcy9hbnNpLXJlZ2V4L2luZGV4LmpzXCIoKXtxKCl9fSk7ZnVuY3Rpb24gU0QoZSl7aWYodHlwZW9mIGUhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgYHN0cmluZ2AsIGdvdCBgXCIuY29uY2F0KHR5cGVvZiBlLFwiYFwiKSk7cmV0dXJuIGUucmVwbGFjZSh2RCgpLFwiXCIpfXZhciB5RD1DZSh7XCJub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9pbmRleC5qc1wiKCl7cSgpLF9EKCl9fSk7ZnVuY3Rpb24gVEQoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSk/ZT49NDM1MiYmKGU8PTQ0NDd8fGU9PT05MDAxfHxlPT09OTAwMnx8MTE5MDQ8PWUmJmU8PTEyODcxJiZlIT09MTIzNTF8fDEyODgwPD1lJiZlPD0xOTkwM3x8MTk5Njg8PWUmJmU8PTQyMTgyfHw0MzM2MDw9ZSYmZTw9NDMzODh8fDQ0MDMyPD1lJiZlPD01NTIwM3x8NjM3NDQ8PWUmJmU8PTY0MjU1fHw2NTA0MDw9ZSYmZTw9NjUwNDl8fDY1MDcyPD1lJiZlPD02NTEzMXx8NjUyODE8PWUmJmU8PTY1Mzc2fHw2NTUwNDw9ZSYmZTw9NjU1MTB8fDExMDU5Mjw9ZSYmZTw9MTEwNTkzfHwxMjc0ODg8PWUmJmU8PTEyNzU2OXx8MTMxMDcyPD1lJiZlPD0yNjIxNDEpOiExfXZhciBCRD1DZSh7XCJub2RlX21vZHVsZXMvaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQvaW5kZXguanNcIigpe3EoKX19KSxiRD1JKHtcIm5vZGVfbW9kdWxlcy9lbW9qaS1yZWdleC9pbmRleC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpLHIuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybi9cXHVEODNDXFx1REZGNFxcdURCNDBcXHVEQzY3XFx1REI0MFxcdURDNjIoPzpcXHVEQjQwXFx1REM3N1xcdURCNDBcXHVEQzZDXFx1REI0MFxcdURDNzN8XFx1REI0MFxcdURDNzNcXHVEQjQwXFx1REM2M1xcdURCNDBcXHVEQzc0fFxcdURCNDBcXHVEQzY1XFx1REI0MFxcdURDNkVcXHVEQjQwXFx1REM2NylcXHVEQjQwXFx1REM3RnwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRlxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRVxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGRFxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkRcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZDXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGQlxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NcXHVERkZCKD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpfFxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKXxbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEZ8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKSk/fCg/OlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSlcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRFxcdURDNjh8KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzY2XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVEQzY3XFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKSl8XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkZcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkVcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8KD86XFx1RDgzQ1xcdURGRkZcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1RDgzQ1xcdURGRkVcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1RDgzQ1xcdURGRkRcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1RDgzQ1xcdURGRkNcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdKVxcdUZFMEZ8XFx1MjAwRCg/Oig/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfFxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDKT98KD86XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGQlxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pfCg/OlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSlcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pfFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSl8XFx1RDgzRVxcdURERDEoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxKSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2OSg/OlxcdTIwMEQoPzpcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkZcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkNcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNFXFx1REREMSg/OlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRFxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjlcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3XFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXwoPzpcXHVEODNEXFx1REM0MVxcdUZFMEZcXHUyMDBEXFx1RDgzRFxcdURERTh8XFx1RDgzRVxcdURERDEoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVEQzY5KD86XFx1RDgzQ1xcdURGRkZcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1RDgzQ1xcdURGRkVcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1RDgzQ1xcdURGRkRcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1RDgzQ1xcdURGRkNcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1RDgzQ1xcdURGRkJcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF18XFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdKXxcXHVEODNEXFx1REUzNlxcdTIwMERcXHVEODNDXFx1REYyQnxcXHVEODNDXFx1REZGM1xcdUZFMEZcXHUyMDBEXFx1MjZBN3xcXHVEODNEXFx1REMzQlxcdTIwMERcXHUyNzQ0fCg/Oig/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2RnxcXHVEODNFW1xcdUREM0NcXHVERERFXFx1RERERl0pXFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml18KD86XFx1MjZGOXxcXHVEODNDW1xcdURGQ0JcXHVERkNDXXxcXHVEODNEXFx1REQ3NSkoPzpcXHVGRTBGfFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxcXHVEODNDXFx1REZGNFxcdTIwMERcXHUyNjIwfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pXFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml18W1xceEE5XFx4QUVcXHUyMDNDXFx1MjA0OVxcdTIxMjJcXHUyMTM5XFx1MjE5NC1cXHUyMTk5XFx1MjFBOVxcdTIxQUFcXHUyMzI4XFx1MjNDRlxcdTIzRUQtXFx1MjNFRlxcdTIzRjFcXHUyM0YyXFx1MjNGOC1cXHUyM0ZBXFx1MjRDMlxcdTI1QUFcXHUyNUFCXFx1MjVCNlxcdTI1QzBcXHUyNUZCXFx1MjVGQ1xcdTI2MDAtXFx1MjYwNFxcdTI2MEVcXHUyNjExXFx1MjYxOFxcdTI2MjBcXHUyNjIyXFx1MjYyM1xcdTI2MjZcXHUyNjJBXFx1MjYyRVxcdTI2MkZcXHUyNjM4LVxcdTI2M0FcXHUyNjQwXFx1MjY0MlxcdTI2NUZcXHUyNjYwXFx1MjY2M1xcdTI2NjVcXHUyNjY2XFx1MjY2OFxcdTI2N0JcXHUyNjdFXFx1MjY5MlxcdTI2OTQtXFx1MjY5N1xcdTI2OTlcXHUyNjlCXFx1MjY5Q1xcdTI2QTBcXHUyNkE3XFx1MjZCMFxcdTI2QjFcXHUyNkM4XFx1MjZDRlxcdTI2RDFcXHUyNkQzXFx1MjZFOVxcdTI2RjBcXHUyNkYxXFx1MjZGNFxcdTI2RjdcXHUyNkY4XFx1MjcwMlxcdTI3MDhcXHUyNzA5XFx1MjcwRlxcdTI3MTJcXHUyNzE0XFx1MjcxNlxcdTI3MURcXHUyNzIxXFx1MjczM1xcdTI3MzRcXHUyNzQ0XFx1Mjc0N1xcdTI3NjNcXHUyN0ExXFx1MjkzNFxcdTI5MzVcXHUyQjA1LVxcdTJCMDdcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURENzBcXHVERDcxXFx1REQ3RVxcdUREN0ZcXHVERTAyXFx1REUzN1xcdURGMjFcXHVERjI0LVxcdURGMkNcXHVERjM2XFx1REY3RFxcdURGOTZcXHVERjk3XFx1REY5OS1cXHVERjlCXFx1REY5RVxcdURGOUZcXHVERkNEXFx1REZDRVxcdURGRDQtXFx1REZERlxcdURGRjVcXHVERkY3XXxcXHVEODNEW1xcdURDM0ZcXHVEQ0ZEXFx1REQ0OVxcdURENEFcXHVERDZGXFx1REQ3MFxcdURENzNcXHVERDc2LVxcdURENzlcXHVERDg3XFx1REQ4QS1cXHVERDhEXFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkFcXHVERUNCXFx1REVDRC1cXHVERUNGXFx1REVFMC1cXHVERUU1XFx1REVFOVxcdURFRjBcXHVERUYzXSlcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHVEODNDXFx1REYwOHxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2N3xcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REUzNVxcdTIwMERcXHVEODNEXFx1RENBQnxcXHVEODNEXFx1REUyRVxcdTIwMERcXHVEODNEXFx1RENBOHxcXHVEODNEXFx1REMxNVxcdTIwMERcXHVEODNFXFx1RERCQXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRnxcXHVEODNDXFx1REZGRXxcXHVEODNDXFx1REZGRHxcXHVEODNDXFx1REZGQ3xcXHVEODNDXFx1REZGQik/fFxcdUQ4M0NcXHVEREZEXFx1RDgzQ1xcdURERjB8XFx1RDgzQ1xcdURERjZcXHVEODNDXFx1RERFNnxcXHVEODNDXFx1RERGNFxcdUQ4M0NcXHVEREYyfFxcdUQ4M0RcXHVEQzA4XFx1MjAwRFxcdTJCMUJ8XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdUREMjV8XFx1RDgzRVxcdURFNzkpfFxcdUQ4M0RcXHVEQzQxXFx1RkUwRnxcXHVEODNDXFx1REZGM1xcdUZFMEZ8XFx1RDgzQ1xcdURERkYoPzpcXHVEODNDW1xcdURERTZcXHVEREYyXFx1RERGQ10pfFxcdUQ4M0NcXHVEREZFKD86XFx1RDgzQ1tcXHVEREVBXFx1RERGOV0pfFxcdUQ4M0NcXHVEREZDKD86XFx1RDgzQ1tcXHVEREVCXFx1RERGOF0pfFxcdUQ4M0NcXHVEREZCKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRVxcdURERjNcXHVEREZBXSl8XFx1RDgzQ1xcdURERkEoPzpcXHVEODNDW1xcdURERTZcXHVEREVDXFx1RERGMlxcdURERjNcXHVEREY4XFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERGOSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVEXFx1RERFRi1cXHVEREY0XFx1RERGN1xcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkZdKXxcXHVEODNDXFx1RERGOCg/OlxcdUQ4M0NbXFx1RERFNi1cXHVEREVBXFx1RERFQy1cXHVEREY0XFx1RERGNy1cXHVEREY5XFx1RERGQlxcdURERkQtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY3KD86XFx1RDgzQ1tcXHVEREVBXFx1RERGNFxcdURERjhcXHVEREZBXFx1RERGQ10pfFxcdUQ4M0NcXHVEREY1KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFQS1cXHVEREVEXFx1RERGMC1cXHVEREYzXFx1RERGNy1cXHVEREY5XFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERGMyg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBLVxcdURERUNcXHVEREVFXFx1RERGMVxcdURERjRcXHVEREY1XFx1RERGN1xcdURERkFcXHVEREZGXSl8XFx1RDgzQ1xcdURERjIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4LVxcdURERURcXHVEREYwLVxcdURERkZdKXxcXHVEODNDXFx1RERGMSg/OlxcdUQ4M0NbXFx1RERFNi1cXHVEREU4XFx1RERFRVxcdURERjBcXHVEREY3LVxcdURERkJcXHVEREZFXSl8XFx1RDgzQ1xcdURERjAoPzpcXHVEODNDW1xcdURERUFcXHVEREVDLVxcdURERUVcXHVEREYyXFx1RERGM1xcdURERjVcXHVEREY3XFx1RERGQ1xcdURERkVcXHVEREZGXSl8XFx1RDgzQ1xcdURERUYoPzpcXHVEODNDW1xcdURERUFcXHVEREYyXFx1RERGNFxcdURERjVdKXxcXHVEODNDXFx1RERFRSg/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVBXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XSl8XFx1RDgzQ1xcdURERUQoPzpcXHVEODNDW1xcdURERjBcXHVEREYyXFx1RERGM1xcdURERjdcXHVEREY5XFx1RERGQV0pfFxcdUQ4M0NcXHVEREVDKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRVxcdURERjEtXFx1RERGM1xcdURERjUtXFx1RERGQVxcdURERkNcXHVEREZFXSl8XFx1RDgzQ1xcdURERUIoPzpcXHVEODNDW1xcdURERUUtXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGN10pfFxcdUQ4M0NcXHVEREVBKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRFxcdURERjctXFx1RERGQV0pfFxcdUQ4M0NcXHVEREU5KD86XFx1RDgzQ1tcXHVEREVBXFx1RERFQ1xcdURERUZcXHVEREYwXFx1RERGMlxcdURERjRcXHVEREZGXSl8XFx1RDgzQ1xcdURERTgoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFOVxcdURERUItXFx1RERFRVxcdURERjAtXFx1RERGNVxcdURERjdcXHVEREZBLVxcdURERkZdKXxcXHVEODNDXFx1RERFNyg/OlxcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUZcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkVcXHVEREZGXSl8XFx1RDgzQ1xcdURERTYoPzpcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdKXxbI1xcKjAtOV1cXHVGRTBGXFx1MjBFM3xcXHUyNzY0XFx1RkUwRnwoPzpcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdKSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8KD86XFx1MjZGOXxcXHVEODNDW1xcdURGQ0JcXHVERkNDXXxcXHVEODNEXFx1REQ3NSkoPzpcXHVGRTBGfFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzQ1xcdURGRjR8KD86W1xcdTI3MEFcXHUyNzBCXXxcXHVEODNDW1xcdURGODVcXHVERkMyXFx1REZDN118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjZcXHVEQzY3XFx1REM2Qi1cXHVEQzZEXFx1REM3MlxcdURDNzQtXFx1REM3NlxcdURDNzhcXHVEQzdDXFx1REM4M1xcdURDODVcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDdBXFx1REQ5NVxcdUREOTZcXHVERTRDXFx1REU0RlxcdURFQzBcXHVERUNDXXxcXHVEODNFW1xcdUREMENcXHVERDBGXFx1REQxOC1cXHVERDFDXFx1REQxRVxcdUREMUZcXHVERDMwLVxcdUREMzRcXHVERDM2XFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCQlxcdURERDJcXHVEREQzXFx1RERENV0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpbXFx1MjYxRFxcdTI3MENcXHUyNzBEXXxcXHVEODNEW1xcdURENzRcXHVERDkwXSkoPzpcXHVGRTBGfFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8W1xcdTI3MEFcXHUyNzBCXXxcXHVEODNDW1xcdURGODVcXHVERkMyXFx1REZDN118XFx1RDgzRFtcXHVEQzA4XFx1REMxNVxcdURDM0JcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjZcXHVEQzY3XFx1REM2Qi1cXHVEQzZEXFx1REM3MlxcdURDNzQtXFx1REM3NlxcdURDNzhcXHVEQzdDXFx1REM4M1xcdURDODVcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDdBXFx1REQ5NVxcdUREOTZcXHVERTJFXFx1REUzNVxcdURFMzZcXHVERTRDXFx1REU0RlxcdURFQzBcXHVERUNDXXxcXHVEODNFW1xcdUREMENcXHVERDBGXFx1REQxOC1cXHVERDFDXFx1REQxRVxcdUREMUZcXHVERDMwLVxcdUREMzRcXHVERDM2XFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCQlxcdURERDJcXHVEREQzXFx1RERENV18XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXXxcXHVEODNEXFx1REM2RnxcXHVEODNFW1xcdUREM0NcXHVERERFXFx1RERERl18W1xcdTIzMUFcXHUyMzFCXFx1MjNFOS1cXHUyM0VDXFx1MjNGMFxcdTIzRjNcXHUyNUZEXFx1MjVGRVxcdTI2MTRcXHUyNjE1XFx1MjY0OC1cXHUyNjUzXFx1MjY3RlxcdTI2OTNcXHUyNkExXFx1MjZBQVxcdTI2QUJcXHUyNkJEXFx1MjZCRVxcdTI2QzRcXHUyNkM1XFx1MjZDRVxcdTI2RDRcXHUyNkVBXFx1MjZGMlxcdTI2RjNcXHUyNkY1XFx1MjZGQVxcdTI2RkRcXHUyNzA1XFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY4NFxcdURGODYtXFx1REY5M1xcdURGQTAtXFx1REZDMVxcdURGQzVcXHVERkM2XFx1REZDOFxcdURGQzlcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzA3XFx1REMwOS1cXHVEQzE0XFx1REMxNi1cXHVEQzNBXFx1REMzQy1cXHVEQzNFXFx1REM0MFxcdURDNDRcXHVEQzQ1XFx1REM1MS1cXHVEQzY1XFx1REM2QVxcdURDNzktXFx1REM3QlxcdURDN0QtXFx1REM4MFxcdURDODRcXHVEQzg4LVxcdURDOEVcXHVEQzkwXFx1REM5Mi1cXHVEQ0E5XFx1RENBQi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1RERBNFxcdURERkItXFx1REUyRFxcdURFMkYtXFx1REUzNFxcdURFMzctXFx1REU0NFxcdURFNDgtXFx1REU0QVxcdURFODAtXFx1REVBMlxcdURFQTQtXFx1REVCM1xcdURFQjctXFx1REVCRlxcdURFQzEtXFx1REVDNVxcdURFRDAtXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRUJcXHVERUVDXFx1REVGNC1cXHVERUZDXFx1REZFMC1cXHVERkVCXXxcXHVEODNFW1xcdUREMERcXHVERDBFXFx1REQxMC1cXHVERDE3XFx1REQxRFxcdUREMjAtXFx1REQyNVxcdUREMjctXFx1REQyRlxcdUREM0FcXHVERDNGLVxcdURENDVcXHVERDQ3LVxcdURENzZcXHVERDc4XFx1REQ3QS1cXHVEREI0XFx1RERCN1xcdUREQkFcXHVEREJDLVxcdUREQ0JcXHVEREQwXFx1RERFMC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XXwoPzpbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzBBXFx1MjcwQlxcdTI3MjhcXHUyNzRDXFx1Mjc0RVxcdTI3NTMtXFx1Mjc1NVxcdTI3NTdcXHUyNzk1LVxcdTI3OTdcXHUyN0IwXFx1MjdCRlxcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVdfFxcdUQ4M0NbXFx1REMwNFxcdURDQ0ZcXHVERDhFXFx1REQ5MS1cXHVERDlBXFx1RERFNi1cXHVEREZGXFx1REUwMVxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTM2XFx1REUzOC1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjBcXHVERjJELVxcdURGMzVcXHVERjM3LVxcdURGN0NcXHVERjdFLVxcdURGOTNcXHVERkEwLVxcdURGQ0FcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY0XFx1REZGOC1cXHVERkZGXXxcXHVEODNEW1xcdURDMDAtXFx1REMzRVxcdURDNDBcXHVEQzQyLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDdBXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERGQi1cXHVERTRGXFx1REU4MC1cXHVERUM1XFx1REVDQ1xcdURFRDAtXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRUJcXHVERUVDXFx1REVGNC1cXHVERUZDXFx1REZFMC1cXHVERkVCXXxcXHVEODNFW1xcdUREMEMtXFx1REQzQVxcdUREM0MtXFx1REQ0NVxcdURENDctXFx1REQ3OFxcdUREN0EtXFx1RERDQlxcdUREQ0QtXFx1RERGRlxcdURFNzAtXFx1REU3NFxcdURFNzgtXFx1REU3QVxcdURFODAtXFx1REU4NlxcdURFOTAtXFx1REVBOFxcdURFQjAtXFx1REVCNlxcdURFQzAtXFx1REVDMlxcdURFRDAtXFx1REVENl0pfCg/OlsjXFwqMC05XFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMUFcXHUyMzFCXFx1MjMyOFxcdTIzQ0ZcXHUyM0U5LVxcdTIzRjNcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkItXFx1MjVGRVxcdTI2MDAtXFx1MjYwNFxcdTI2MEVcXHUyNjExXFx1MjYxNFxcdTI2MTVcXHUyNjE4XFx1MjYxRFxcdTI2MjBcXHUyNjIyXFx1MjYyM1xcdTI2MjZcXHUyNjJBXFx1MjYyRVxcdTI2MkZcXHUyNjM4LVxcdTI2M0FcXHUyNjQwXFx1MjY0MlxcdTI2NDgtXFx1MjY1M1xcdTI2NUZcXHUyNjYwXFx1MjY2M1xcdTI2NjVcXHUyNjY2XFx1MjY2OFxcdTI2N0JcXHUyNjdFXFx1MjY3RlxcdTI2OTItXFx1MjY5N1xcdTI2OTlcXHUyNjlCXFx1MjY5Q1xcdTI2QTBcXHUyNkExXFx1MjZBN1xcdTI2QUFcXHUyNkFCXFx1MjZCMFxcdTI2QjFcXHUyNkJEXFx1MjZCRVxcdTI2QzRcXHUyNkM1XFx1MjZDOFxcdTI2Q0VcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkQ0XFx1MjZFOVxcdTI2RUFcXHUyNkYwLVxcdTI2RjVcXHUyNkY3LVxcdTI2RkFcXHUyNkZEXFx1MjcwMlxcdTI3MDVcXHUyNzA4LVxcdTI3MERcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzI4XFx1MjczM1xcdTI3MzRcXHUyNzQ0XFx1Mjc0N1xcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3NjNcXHUyNzY0XFx1Mjc5NS1cXHUyNzk3XFx1MjdBMVxcdTI3QjBcXHUyN0JGXFx1MjkzNFxcdTI5MzVcXHUyQjA1LVxcdTJCMDdcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XFx1MzAzMFxcdTMwM0RcXHUzMjk3XFx1MzI5OV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdURENzBcXHVERDcxXFx1REQ3RVxcdUREN0ZcXHVERDhFXFx1REQ5MS1cXHVERDlBXFx1RERFNi1cXHVEREZGXFx1REUwMVxcdURFMDJcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIxXFx1REYyNC1cXHVERjkzXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFLVxcdURGRjBcXHVERkYzLVxcdURGRjVcXHVERkY3LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQ0ZEXFx1RENGRi1cXHVERDNEXFx1REQ0OS1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1REQ2RlxcdURENzBcXHVERDczLVxcdUREN0FcXHVERDg3XFx1REQ4QS1cXHVERDhEXFx1REQ5MFxcdUREOTVcXHVERDk2XFx1RERBNFxcdUREQTVcXHVEREE4XFx1RERCMVxcdUREQjJcXHVEREJDXFx1RERDMi1cXHVEREM0XFx1REREMS1cXHVEREQzXFx1REREQy1cXHVERERFXFx1RERFMVxcdURERTNcXHVEREU4XFx1RERFRlxcdURERjNcXHVEREZBLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNCLVxcdURFRDJcXHVERUQ1LVxcdURFRDdcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVFQlxcdURFRUNcXHVERUYwXFx1REVGMy1cXHVERUZDXFx1REZFMC1cXHVERkVCXXxcXHVEODNFW1xcdUREMEMtXFx1REQzQVxcdUREM0MtXFx1REQ0NVxcdURENDctXFx1REQ3OFxcdUREN0EtXFx1RERDQlxcdUREQ0QtXFx1RERGRlxcdURFNzAtXFx1REU3NFxcdURFNzgtXFx1REU3QVxcdURFODAtXFx1REU4NlxcdURFOTAtXFx1REVBOFxcdURFQjAtXFx1REVCNlxcdURFQzAtXFx1REVDMlxcdURFRDAtXFx1REVENl0pXFx1RkUwRnwoPzpbXFx1MjYxRFxcdTI2RjlcXHUyNzBBLVxcdTI3MERdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzItXFx1REZDNFxcdURGQzdcXHVERkNBLVxcdURGQ0NdfFxcdUQ4M0RbXFx1REM0MlxcdURDNDNcXHVEQzQ2LVxcdURDNTBcXHVEQzY2LVxcdURDNzhcXHVEQzdDXFx1REM4MS1cXHVEQzgzXFx1REM4NS1cXHVEQzg3XFx1REM4RlxcdURDOTFcXHVEQ0FBXFx1REQ3NFxcdURENzVcXHVERDdBXFx1REQ5MFxcdUREOTVcXHVERDk2XFx1REU0NS1cXHVERTQ3XFx1REU0Qi1cXHVERTRGXFx1REVBM1xcdURFQjQtXFx1REVCNlxcdURFQzBcXHVERUNDXXxcXHVEODNFW1xcdUREMENcXHVERDBGXFx1REQxOC1cXHVERDFGXFx1REQyNlxcdUREMzAtXFx1REQzOVxcdUREM0MtXFx1REQzRVxcdURENzdcXHVEREI1XFx1RERCNlxcdUREQjhcXHVEREI5XFx1RERCQlxcdUREQ0QtXFx1RERDRlxcdURERDEtXFx1RERERF0pL2d9fX0pLENzPXt9O2NzKENzLHtkZWZhdWx0OigpPT53RH0pO2Z1bmN0aW9uIHdEKGUpe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxlLmxlbmd0aD09PTB8fChlPVNEKGUpLGUubGVuZ3RoPT09MCkpcmV0dXJuIDA7ZT1lLnJlcGxhY2UoKDAsbXMuZGVmYXVsdCkoKSxcIiAgXCIpO2xldCByPTA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2xldCBzPWUuY29kZVBvaW50QXQodCk7czw9MzF8fHM+PTEyNyYmczw9MTU5fHxzPj03NjgmJnM8PTg3OXx8KHM+NjU1MzUmJnQrKyxyKz1URChzKT8yOjEpfXJldHVybiByfXZhciBtcyxORD1DZSh7XCJub2RlX21vZHVsZXMvc3RyaW5nLXdpZHRoL2luZGV4LmpzXCIoKXtxKCkseUQoKSxCRCgpLG1zPXREKGJEKCkpfX0pLE9EPUkoe1wic3JjL3V0aWxzL2dldC1zdHJpbmctd2lkdGguanNcIihlLHIpe1widXNlIHN0cmljdFwiO3EoKTt2YXIgdD0oTkQoKSxscyhDcykpLmRlZmF1bHQscz0vW15cXHgyMC1cXHg3Rl0vO2Z1bmN0aW9uIGMobil7cmV0dXJuIG4/cy50ZXN0KG4pP3Qobik6bi5sZW5ndGg6MH1yLmV4cG9ydHM9Y319KSxHcj1JKHtcInNyYy91dGlscy90ZXh0L3NraXAuanNcIihlLHIpe1widXNlIHN0cmljdFwiO3EoKTtmdW5jdGlvbiB0KHApe3JldHVybihELGcsaSk9PntsZXQgbD1pJiZpLmJhY2t3YXJkcztpZihnPT09ITEpcmV0dXJuITE7bGV0e2xlbmd0aDpofT1ELEM9Zztmb3IoO0M+PTAmJkM8aDspe2xldCBkPUQuY2hhckF0KEMpO2lmKHAgaW5zdGFuY2VvZiBSZWdFeHApe2lmKCFwLnRlc3QoZCkpcmV0dXJuIEN9ZWxzZSBpZighcC5pbmNsdWRlcyhkKSlyZXR1cm4gQztsP0MtLTpDKyt9cmV0dXJuIEM9PT0tMXx8Qz09PWg/QzohMX19dmFyIHM9dCgvXFxzLyksYz10KFwiIFx0XCIpLG49dChcIiw7IFx0XCIpLGE9dCgvW15cXG5cXHJdLyk7ci5leHBvcnRzPXtza2lwV2hpdGVzcGFjZTpzLHNraXBTcGFjZXM6Yyxza2lwVG9MaW5lRW5kOm4sc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lOmF9fX0pLGdzPUkoe1wic3JjL3V0aWxzL3RleHQvc2tpcC1pbmxpbmUtY29tbWVudC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO2Z1bmN0aW9uIHQocyxjKXtpZihjPT09ITEpcmV0dXJuITE7aWYocy5jaGFyQXQoYyk9PT1cIi9cIiYmcy5jaGFyQXQoYysxKT09PVwiKlwiKXtmb3IobGV0IG49YysyO248cy5sZW5ndGg7KytuKWlmKHMuY2hhckF0KG4pPT09XCIqXCImJnMuY2hhckF0KG4rMSk9PT1cIi9cIilyZXR1cm4gbisyfXJldHVybiBjfXIuZXhwb3J0cz10fX0pLEZzPUkoe1wic3JjL3V0aWxzL3RleHQvc2tpcC10cmFpbGluZy1jb21tZW50LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7dmFye3NraXBFdmVyeXRoaW5nQnV0TmV3TGluZTp0fT1HcigpO2Z1bmN0aW9uIHMoYyxuKXtyZXR1cm4gbj09PSExPyExOmMuY2hhckF0KG4pPT09XCIvXCImJmMuY2hhckF0KG4rMSk9PT1cIi9cIj90KGMsbik6bn1yLmV4cG9ydHM9c319KSxBcz1JKHtcInNyYy91dGlscy90ZXh0L3NraXAtbmV3bGluZS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO2Z1bmN0aW9uIHQocyxjLG4pe2xldCBhPW4mJm4uYmFja3dhcmRzO2lmKGM9PT0hMSlyZXR1cm4hMTtsZXQgcD1zLmNoYXJBdChjKTtpZihhKXtpZihzLmNoYXJBdChjLTEpPT09XCJcXHJcIiYmcD09PWBcbmApcmV0dXJuIGMtMjtpZihwPT09YFxuYHx8cD09PVwiXFxyXCJ8fHA9PT1cIlxcdTIwMjhcInx8cD09PVwiXFx1MjAyOVwiKXJldHVybiBjLTF9ZWxzZXtpZihwPT09XCJcXHJcIiYmcy5jaGFyQXQoYysxKT09PWBcbmApcmV0dXJuIGMrMjtpZihwPT09YFxuYHx8cD09PVwiXFxyXCJ8fHA9PT1cIlxcdTIwMjhcInx8cD09PVwiXFx1MjAyOVwiKXJldHVybiBjKzF9cmV0dXJuIGN9ci5leHBvcnRzPXR9fSkscUQ9SSh7XCJzcmMvdXRpbHMvdGV4dC9nZXQtbmV4dC1ub24tc3BhY2Utbm9uLWNvbW1lbnQtY2hhcmFjdGVyLWluZGV4LXdpdGgtc3RhcnQtaW5kZXguanNcIihlLHIpe1widXNlIHN0cmljdFwiO3EoKTt2YXIgdD1ncygpLHM9QXMoKSxjPUZzKCkse3NraXBTcGFjZXM6bn09R3IoKTtmdW5jdGlvbiBhKHAsRCl7bGV0IGc9bnVsbCxpPUQ7Zm9yKDtpIT09ZzspZz1pLGk9bihwLGkpLGk9dChwLGkpLGk9YyhwLGkpLGk9cyhwLGkpO3JldHVybiBpfXIuZXhwb3J0cz1hfX0pLElEPUkoe1wic3JjL2NvbW1vbi91dGlsLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7dmFye2RlZmF1bHQ6dH09KGNEKCksbHMoZnMpKSxzPXBzKCkse2dldFN1cHBvcnRJbmZvOmN9PUZEKCksbj1BRCgpLGE9T0QoKSx7c2tpcFdoaXRlc3BhY2U6cCxza2lwU3BhY2VzOkQsc2tpcFRvTGluZUVuZDpnLHNraXBFdmVyeXRoaW5nQnV0TmV3TGluZTppfT1HcigpLGw9Z3MoKSxoPUZzKCksQz1BcygpLGQ9cUQoKSxtPXY9PnZbdi5sZW5ndGgtMl07ZnVuY3Rpb24gVCh2KXtyZXR1cm4oUyxiLHcpPT57bGV0IEw9dyYmdy5iYWNrd2FyZHM7aWYoYj09PSExKXJldHVybiExO2xldHtsZW5ndGg6VX09UyxWPWI7Zm9yKDtWPj0wJiZWPFU7KXtsZXQgWT1TLmNoYXJBdChWKTtpZih2IGluc3RhbmNlb2YgUmVnRXhwKXtpZighdi50ZXN0KFkpKXJldHVybiBWfWVsc2UgaWYoIXYuaW5jbHVkZXMoWSkpcmV0dXJuIFY7TD9WLS06VisrfXJldHVybiBWPT09LTF8fFY9PT1VP1Y6ITF9fWZ1bmN0aW9uIEIodixTKXtsZXQgYj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30sdz1EKHYsYi5iYWNrd2FyZHM/Uy0xOlMsYiksTD1DKHYsdyxiKTtyZXR1cm4gdyE9PUx9ZnVuY3Rpb24gQSh2LFMsYil7Zm9yKGxldCB3PVM7dzxiOysrdylpZih2LmNoYXJBdCh3KT09PWBcbmApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gTih2LFMsYil7bGV0IHc9YihTKS0xO3c9RCh2LHcse2JhY2t3YXJkczohMH0pLHc9Qyh2LHcse2JhY2t3YXJkczohMH0pLHc9RCh2LHcse2JhY2t3YXJkczohMH0pO2xldCBMPUModix3LHtiYWNrd2FyZHM6ITB9KTtyZXR1cm4gdyE9PUx9ZnVuY3Rpb24gUih2LFMpe2xldCBiPW51bGwsdz1TO2Zvcig7dyE9PWI7KWI9dyx3PWcodix3KSx3PWwodix3KSx3PUQodix3KTtyZXR1cm4gdz1oKHYsdyksdz1DKHYsdyksdyE9PSExJiZCKHYsdyl9ZnVuY3Rpb24gJCh2LFMsYil7cmV0dXJuIFIodixiKFMpKX1mdW5jdGlvbiBfKHYsUyxiKXtyZXR1cm4gZCh2LGIoUykpfWZ1bmN0aW9uIE8odixTLGIpe3JldHVybiB2LmNoYXJBdChfKHYsUyxiKSl9ZnVuY3Rpb24geCh2LFMpe2xldCBiPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4gRCh2LGIuYmFja3dhcmRzP1MtMTpTLGIpIT09U31mdW5jdGlvbiBrKHYsUyl7bGV0IGI9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOjAsdz0wO2ZvcihsZXQgTD1iO0w8di5sZW5ndGg7KytMKXZbTF09PT1cIlx0XCI/dz13K1MtdyVTOncrKztyZXR1cm4gd31mdW5jdGlvbiBNKHYsUyl7bGV0IGI9di5sYXN0SW5kZXhPZihgXG5gKTtyZXR1cm4gYj09PS0xPzA6ayh2LnNsaWNlKGIrMSkubWF0Y2goL15bXFx0IF0qLylbMF0sUyl9ZnVuY3Rpb24gdSh2LFMpe2xldCBiPXtxdW90ZTonXCInLHJlZ2V4Oi9cIi9nLGVzY2FwZWQ6XCImcXVvdDtcIn0sdz17cXVvdGU6XCInXCIscmVnZXg6LycvZyxlc2NhcGVkOlwiJmFwb3M7XCJ9LEw9Uz09PVwiJ1wiP3c6YixVPUw9PT13P2I6dyxWPUw7aWYodi5pbmNsdWRlcyhMLnF1b3RlKXx8di5pbmNsdWRlcyhVLnF1b3RlKSl7bGV0IFk9KHYubWF0Y2goTC5yZWdleCl8fFtdKS5sZW5ndGgsdWU9KHYubWF0Y2goVS5yZWdleCl8fFtdKS5sZW5ndGg7Vj1ZPnVlP1U6TH1yZXR1cm4gVn1mdW5jdGlvbiBvKHYsUyl7bGV0IGI9di5zbGljZSgxLC0xKSx3PVMucGFyc2VyPT09XCJqc29uXCJ8fFMucGFyc2VyPT09XCJqc29uNVwiJiZTLnF1b3RlUHJvcHM9PT1cInByZXNlcnZlXCImJiFTLnNpbmdsZVF1b3RlPydcIic6Uy5fX2lzSW5IdG1sQXR0cmlidXRlP1wiJ1wiOnUoYixTLnNpbmdsZVF1b3RlP1wiJ1wiOidcIicpLnF1b3RlO3JldHVybiBFKGIsdywhKFMucGFyc2VyPT09XCJjc3NcInx8Uy5wYXJzZXI9PT1cImxlc3NcInx8Uy5wYXJzZXI9PT1cInNjc3NcInx8Uy5fX2VtYmVkZGVkSW5IdG1sKSl9ZnVuY3Rpb24gRSh2LFMsYil7bGV0IHc9Uz09PSdcIic/XCInXCI6J1wiJyxMPS9cXFxcKC4pfChbXCInXSkvZ3MsVT12LnJlcGxhY2UoTCwoVixZLHVlKT0+WT09PXc/WTp1ZT09PVM/XCJcXFxcXCIrdWU6dWV8fChiJiYvXlteXFxuXFxyXCInMC03XFxcXGJmbnJ0LXZ4XFx1MjAyOFxcdTIwMjldJC8udGVzdChZKT9ZOlwiXFxcXFwiK1kpKTtyZXR1cm4gUytVK1N9ZnVuY3Rpb24gZih2KXtyZXR1cm4gdi50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL14oWystXT9bXFxkLl0rZSkoPzpcXCt8KC0pKT8wKihcXGQpLyxcIiQxJDIkM1wiKS5yZXBsYWNlKC9eKFsrLV0/W1xcZC5dKyllWystXT8wKyQvLFwiJDFcIikucmVwbGFjZSgvXihbKy1dKT9cXC4vLFwiJDEwLlwiKS5yZXBsYWNlKC8oXFwuXFxkKz8pMCsoPz1lfCQpLyxcIiQxXCIpLnJlcGxhY2UoL1xcLig/PWV8JCkvLFwiXCIpfWZ1bmN0aW9uIEYodixTKXtsZXQgYj12Lm1hdGNoKG5ldyBSZWdFeHAoXCIoXCIuY29uY2F0KHQoUyksXCIpK1wiKSxcImdcIikpO3JldHVybiBiPT09bnVsbD8wOmIucmVkdWNlKCh3LEwpPT5NYXRoLm1heCh3LEwubGVuZ3RoL1MubGVuZ3RoKSwwKX1mdW5jdGlvbiBQKHYsUyl7bGV0IGI9di5tYXRjaChuZXcgUmVnRXhwKFwiKFwiLmNvbmNhdCh0KFMpLFwiKStcIiksXCJnXCIpKTtpZihiPT09bnVsbClyZXR1cm4gMDtsZXQgdz1uZXcgTWFwLEw9MDtmb3IobGV0IFUgb2YgYil7bGV0IFY9VS5sZW5ndGgvUy5sZW5ndGg7dy5zZXQoViwhMCksVj5MJiYoTD1WKX1mb3IobGV0IFU9MTtVPEw7VSsrKWlmKCF3LmdldChVKSlyZXR1cm4gVTtyZXR1cm4gTCsxfWZ1bmN0aW9uIGoodixTKXsodi5jb21tZW50c3x8KHYuY29tbWVudHM9W10pKS5wdXNoKFMpLFMucHJpbnRlZD0hMSxTLm5vZGVEZXNjcmlwdGlvbj1lZSh2KX1mdW5jdGlvbiBXKHYsUyl7Uy5sZWFkaW5nPSEwLFMudHJhaWxpbmc9ITEsaih2LFMpfWZ1bmN0aW9uIFgodixTLGIpe1MubGVhZGluZz0hMSxTLnRyYWlsaW5nPSExLGImJihTLm1hcmtlcj1iKSxqKHYsUyl9ZnVuY3Rpb24gSCh2LFMpe1MubGVhZGluZz0hMSxTLnRyYWlsaW5nPSEwLGoodixTKX1mdW5jdGlvbiB6KHYsUyl7bGV0e2xhbmd1YWdlczpifT1jKHtwbHVnaW5zOlMucGx1Z2luc30pLHc9Yi5maW5kKEw9PntsZXR7bmFtZTpVfT1MO3JldHVybiBVLnRvTG93ZXJDYXNlKCk9PT12fSl8fGIuZmluZChMPT57bGV0e2FsaWFzZXM6VX09TDtyZXR1cm4gQXJyYXkuaXNBcnJheShVKSYmVS5pbmNsdWRlcyh2KX0pfHxiLmZpbmQoTD0+e2xldHtleHRlbnNpb25zOlV9PUw7cmV0dXJuIEFycmF5LmlzQXJyYXkoVSkmJlUuaW5jbHVkZXMoXCIuXCIuY29uY2F0KHYpKX0pO3JldHVybiB3JiZ3LnBhcnNlcnNbMF19ZnVuY3Rpb24gSih2KXtyZXR1cm4gdiYmdi50eXBlPT09XCJmcm9udC1tYXR0ZXJcIn1mdW5jdGlvbiBaKHYpe2xldCBTPW5ldyBXZWFrTWFwO3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gUy5oYXMoYil8fFMuc2V0KGIsU3ltYm9sKHYpKSxTLmdldChiKX19ZnVuY3Rpb24gZWUodil7bGV0IFM9di50eXBlfHx2LmtpbmR8fFwiKHVua25vd24gdHlwZSlcIixiPVN0cmluZyh2Lm5hbWV8fHYuaWQmJih0eXBlb2Ygdi5pZD09XCJvYmplY3RcIj92LmlkLm5hbWU6di5pZCl8fHYua2V5JiYodHlwZW9mIHYua2V5PT1cIm9iamVjdFwiP3Yua2V5Lm5hbWU6di5rZXkpfHx2LnZhbHVlJiYodHlwZW9mIHYudmFsdWU9PVwib2JqZWN0XCI/XCJcIjpTdHJpbmcodi52YWx1ZSkpfHx2Lm9wZXJhdG9yfHxcIlwiKTtyZXR1cm4gYi5sZW5ndGg+MjAmJihiPWIuc2xpY2UoMCwxOSkrXCJcXHUyMDI2XCIpLFMrKGI/XCIgXCIrYjpcIlwiKX1yLmV4cG9ydHM9e2luZmVyUGFyc2VyQnlMYW5ndWFnZTp6LGdldFN0cmluZ1dpZHRoOmEsZ2V0TWF4Q29udGludW91c0NvdW50OkYsZ2V0TWluTm90UHJlc2VudENvbnRpbnVvdXNDb3VudDpQLGdldFBlbnVsdGltYXRlOm0sZ2V0TGFzdDpzLGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXJJbmRleFdpdGhTdGFydEluZGV4OmQsZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4Ol8sZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlcjpPLHNraXA6VCxza2lwV2hpdGVzcGFjZTpwLHNraXBTcGFjZXM6RCxza2lwVG9MaW5lRW5kOmcsc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lOmksc2tpcElubGluZUNvbW1lbnQ6bCxza2lwVHJhaWxpbmdDb21tZW50Omgsc2tpcE5ld2xpbmU6Qyxpc05leHRMaW5lRW1wdHlBZnRlckluZGV4OlIsaXNOZXh0TGluZUVtcHR5OiQsaXNQcmV2aW91c0xpbmVFbXB0eTpOLGhhc05ld2xpbmU6QixoYXNOZXdsaW5lSW5SYW5nZTpBLGhhc1NwYWNlczp4LGdldEFsaWdubWVudFNpemU6ayxnZXRJbmRlbnRTaXplOk0sZ2V0UHJlZmVycmVkUXVvdGU6dSxwcmludFN0cmluZzpvLHByaW50TnVtYmVyOmYsbWFrZVN0cmluZzpFLGFkZExlYWRpbmdDb21tZW50OlcsYWRkRGFuZ2xpbmdDb21tZW50OlgsYWRkVHJhaWxpbmdDb21tZW50OkgsaXNGcm9udE1hdHRlck5vZGU6Sixpc05vbkVtcHR5QXJyYXk6bixjcmVhdGVHcm91cElkTWFwcGVyOlp9fX0pLFJEPUkoe1widmVuZG9ycy9odG1sLXRhZy1uYW1lcy5qc29uXCIoZSxyKXtyLmV4cG9ydHM9e2h0bWxUYWdOYW1lczpbXCJhXCIsXCJhYmJyXCIsXCJhY3JvbnltXCIsXCJhZGRyZXNzXCIsXCJhcHBsZXRcIixcImFyZWFcIixcImFydGljbGVcIixcImFzaWRlXCIsXCJhdWRpb1wiLFwiYlwiLFwiYmFzZVwiLFwiYmFzZWZvbnRcIixcImJkaVwiLFwiYmRvXCIsXCJiZ3NvdW5kXCIsXCJiaWdcIixcImJsaW5rXCIsXCJibG9ja3F1b3RlXCIsXCJib2R5XCIsXCJiclwiLFwiYnV0dG9uXCIsXCJjYW52YXNcIixcImNhcHRpb25cIixcImNlbnRlclwiLFwiY2l0ZVwiLFwiY29kZVwiLFwiY29sXCIsXCJjb2xncm91cFwiLFwiY29tbWFuZFwiLFwiY29udGVudFwiLFwiZGF0YVwiLFwiZGF0YWxpc3RcIixcImRkXCIsXCJkZWxcIixcImRldGFpbHNcIixcImRmblwiLFwiZGlhbG9nXCIsXCJkaXJcIixcImRpdlwiLFwiZGxcIixcImR0XCIsXCJlbGVtZW50XCIsXCJlbVwiLFwiZW1iZWRcIixcImZpZWxkc2V0XCIsXCJmaWdjYXB0aW9uXCIsXCJmaWd1cmVcIixcImZvbnRcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiZnJhbWVcIixcImZyYW1lc2V0XCIsXCJoMVwiLFwiaDJcIixcImgzXCIsXCJoNFwiLFwiaDVcIixcImg2XCIsXCJoZWFkXCIsXCJoZWFkZXJcIixcImhncm91cFwiLFwiaHJcIixcImh0bWxcIixcImlcIixcImlmcmFtZVwiLFwiaW1hZ2VcIixcImltZ1wiLFwiaW5wdXRcIixcImluc1wiLFwiaXNpbmRleFwiLFwia2JkXCIsXCJrZXlnZW5cIixcImxhYmVsXCIsXCJsZWdlbmRcIixcImxpXCIsXCJsaW5rXCIsXCJsaXN0aW5nXCIsXCJtYWluXCIsXCJtYXBcIixcIm1hcmtcIixcIm1hcnF1ZWVcIixcIm1hdGhcIixcIm1lbnVcIixcIm1lbnVpdGVtXCIsXCJtZXRhXCIsXCJtZXRlclwiLFwibXVsdGljb2xcIixcIm5hdlwiLFwibmV4dGlkXCIsXCJub2JyXCIsXCJub2VtYmVkXCIsXCJub2ZyYW1lc1wiLFwibm9zY3JpcHRcIixcIm9iamVjdFwiLFwib2xcIixcIm9wdGdyb3VwXCIsXCJvcHRpb25cIixcIm91dHB1dFwiLFwicFwiLFwicGFyYW1cIixcInBpY3R1cmVcIixcInBsYWludGV4dFwiLFwicHJlXCIsXCJwcm9ncmVzc1wiLFwicVwiLFwicmJcIixcInJiY1wiLFwicnBcIixcInJ0XCIsXCJydGNcIixcInJ1YnlcIixcInNcIixcInNhbXBcIixcInNjcmlwdFwiLFwic2VjdGlvblwiLFwic2VsZWN0XCIsXCJzaGFkb3dcIixcInNsb3RcIixcInNtYWxsXCIsXCJzb3VyY2VcIixcInNwYWNlclwiLFwic3BhblwiLFwic3RyaWtlXCIsXCJzdHJvbmdcIixcInN0eWxlXCIsXCJzdWJcIixcInN1bW1hcnlcIixcInN1cFwiLFwic3ZnXCIsXCJ0YWJsZVwiLFwidGJvZHlcIixcInRkXCIsXCJ0ZW1wbGF0ZVwiLFwidGV4dGFyZWFcIixcInRmb290XCIsXCJ0aFwiLFwidGhlYWRcIixcInRpbWVcIixcInRpdGxlXCIsXCJ0clwiLFwidHJhY2tcIixcInR0XCIsXCJ1XCIsXCJ1bFwiLFwidmFyXCIsXCJ2aWRlb1wiLFwid2JyXCIsXCJ4bXBcIl19fX0pLHZzPUkoe1wic3JjL2xhbmd1YWdlLWh0bWwvdXRpbHMvYXJyYXktdG8tbWFwLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7ZnVuY3Rpb24gdChzKXtsZXQgYz1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgbiBvZiBzKWNbbl09ITA7cmV0dXJuIGN9ci5leHBvcnRzPXR9fSkseEQ9SSh7XCJzcmMvbGFuZ3VhZ2UtaHRtbC91dGlscy9odG1sLXRhZy1uYW1lcy5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO3ZhcntodG1sVGFnTmFtZXM6dH09UkQoKSxzPXZzKCksYz1zKHQpO3IuZXhwb3J0cz1jfX0pLFBEPUkoe1widmVuZG9ycy9odG1sLWVsZW1lbnQtYXR0cmlidXRlcy5qc29uXCIoZSxyKXtyLmV4cG9ydHM9e2h0bWxFbGVtZW50QXR0cmlidXRlczp7XCIqXCI6W1wiYWNjZXNza2V5XCIsXCJhdXRvY2FwaXRhbGl6ZVwiLFwiYXV0b2ZvY3VzXCIsXCJjbGFzc1wiLFwiY29udGVudGVkaXRhYmxlXCIsXCJkaXJcIixcImRyYWdnYWJsZVwiLFwiZW50ZXJrZXloaW50XCIsXCJoaWRkZW5cIixcImlkXCIsXCJpbnB1dG1vZGVcIixcImlzXCIsXCJpdGVtaWRcIixcIml0ZW1wcm9wXCIsXCJpdGVtcmVmXCIsXCJpdGVtc2NvcGVcIixcIml0ZW10eXBlXCIsXCJsYW5nXCIsXCJub25jZVwiLFwic2xvdFwiLFwic3BlbGxjaGVja1wiLFwic3R5bGVcIixcInRhYmluZGV4XCIsXCJ0aXRsZVwiLFwidHJhbnNsYXRlXCJdLGE6W1wiY2hhcnNldFwiLFwiY29vcmRzXCIsXCJkb3dubG9hZFwiLFwiaHJlZlwiLFwiaHJlZmxhbmdcIixcIm5hbWVcIixcInBpbmdcIixcInJlZmVycmVycG9saWN5XCIsXCJyZWxcIixcInJldlwiLFwic2hhcGVcIixcInRhcmdldFwiLFwidHlwZVwiXSxhcHBsZXQ6W1wiYWxpZ25cIixcImFsdFwiLFwiYXJjaGl2ZVwiLFwiY29kZVwiLFwiY29kZWJhc2VcIixcImhlaWdodFwiLFwiaHNwYWNlXCIsXCJuYW1lXCIsXCJvYmplY3RcIixcInZzcGFjZVwiLFwid2lkdGhcIl0sYXJlYTpbXCJhbHRcIixcImNvb3Jkc1wiLFwiZG93bmxvYWRcIixcImhyZWZcIixcImhyZWZsYW5nXCIsXCJub2hyZWZcIixcInBpbmdcIixcInJlZmVycmVycG9saWN5XCIsXCJyZWxcIixcInNoYXBlXCIsXCJ0YXJnZXRcIixcInR5cGVcIl0sYXVkaW86W1wiYXV0b3BsYXlcIixcImNvbnRyb2xzXCIsXCJjcm9zc29yaWdpblwiLFwibG9vcFwiLFwibXV0ZWRcIixcInByZWxvYWRcIixcInNyY1wiXSxiYXNlOltcImhyZWZcIixcInRhcmdldFwiXSxiYXNlZm9udDpbXCJjb2xvclwiLFwiZmFjZVwiLFwic2l6ZVwiXSxibG9ja3F1b3RlOltcImNpdGVcIl0sYm9keTpbXCJhbGlua1wiLFwiYmFja2dyb3VuZFwiLFwiYmdjb2xvclwiLFwibGlua1wiLFwidGV4dFwiLFwidmxpbmtcIl0sYnI6W1wiY2xlYXJcIl0sYnV0dG9uOltcImRpc2FibGVkXCIsXCJmb3JtXCIsXCJmb3JtYWN0aW9uXCIsXCJmb3JtZW5jdHlwZVwiLFwiZm9ybW1ldGhvZFwiLFwiZm9ybW5vdmFsaWRhdGVcIixcImZvcm10YXJnZXRcIixcIm5hbWVcIixcInR5cGVcIixcInZhbHVlXCJdLGNhbnZhczpbXCJoZWlnaHRcIixcIndpZHRoXCJdLGNhcHRpb246W1wiYWxpZ25cIl0sY29sOltcImFsaWduXCIsXCJjaGFyXCIsXCJjaGFyb2ZmXCIsXCJzcGFuXCIsXCJ2YWxpZ25cIixcIndpZHRoXCJdLGNvbGdyb3VwOltcImFsaWduXCIsXCJjaGFyXCIsXCJjaGFyb2ZmXCIsXCJzcGFuXCIsXCJ2YWxpZ25cIixcIndpZHRoXCJdLGRhdGE6W1widmFsdWVcIl0sZGVsOltcImNpdGVcIixcImRhdGV0aW1lXCJdLGRldGFpbHM6W1wib3BlblwiXSxkaWFsb2c6W1wib3BlblwiXSxkaXI6W1wiY29tcGFjdFwiXSxkaXY6W1wiYWxpZ25cIl0sZGw6W1wiY29tcGFjdFwiXSxlbWJlZDpbXCJoZWlnaHRcIixcInNyY1wiLFwidHlwZVwiLFwid2lkdGhcIl0sZmllbGRzZXQ6W1wiZGlzYWJsZWRcIixcImZvcm1cIixcIm5hbWVcIl0sZm9udDpbXCJjb2xvclwiLFwiZmFjZVwiLFwic2l6ZVwiXSxmb3JtOltcImFjY2VwdFwiLFwiYWNjZXB0LWNoYXJzZXRcIixcImFjdGlvblwiLFwiYXV0b2NvbXBsZXRlXCIsXCJlbmN0eXBlXCIsXCJtZXRob2RcIixcIm5hbWVcIixcIm5vdmFsaWRhdGVcIixcInRhcmdldFwiXSxmcmFtZTpbXCJmcmFtZWJvcmRlclwiLFwibG9uZ2Rlc2NcIixcIm1hcmdpbmhlaWdodFwiLFwibWFyZ2lud2lkdGhcIixcIm5hbWVcIixcIm5vcmVzaXplXCIsXCJzY3JvbGxpbmdcIixcInNyY1wiXSxmcmFtZXNldDpbXCJjb2xzXCIsXCJyb3dzXCJdLGgxOltcImFsaWduXCJdLGgyOltcImFsaWduXCJdLGgzOltcImFsaWduXCJdLGg0OltcImFsaWduXCJdLGg1OltcImFsaWduXCJdLGg2OltcImFsaWduXCJdLGhlYWQ6W1wicHJvZmlsZVwiXSxocjpbXCJhbGlnblwiLFwibm9zaGFkZVwiLFwic2l6ZVwiLFwid2lkdGhcIl0saHRtbDpbXCJtYW5pZmVzdFwiLFwidmVyc2lvblwiXSxpZnJhbWU6W1wiYWxpZ25cIixcImFsbG93XCIsXCJhbGxvd2Z1bGxzY3JlZW5cIixcImFsbG93cGF5bWVudHJlcXVlc3RcIixcImFsbG93dXNlcm1lZGlhXCIsXCJmcmFtZWJvcmRlclwiLFwiaGVpZ2h0XCIsXCJsb2FkaW5nXCIsXCJsb25nZGVzY1wiLFwibWFyZ2luaGVpZ2h0XCIsXCJtYXJnaW53aWR0aFwiLFwibmFtZVwiLFwicmVmZXJyZXJwb2xpY3lcIixcInNhbmRib3hcIixcInNjcm9sbGluZ1wiLFwic3JjXCIsXCJzcmNkb2NcIixcIndpZHRoXCJdLGltZzpbXCJhbGlnblwiLFwiYWx0XCIsXCJib3JkZXJcIixcImNyb3Nzb3JpZ2luXCIsXCJkZWNvZGluZ1wiLFwiaGVpZ2h0XCIsXCJoc3BhY2VcIixcImlzbWFwXCIsXCJsb2FkaW5nXCIsXCJsb25nZGVzY1wiLFwibmFtZVwiLFwicmVmZXJyZXJwb2xpY3lcIixcInNpemVzXCIsXCJzcmNcIixcInNyY3NldFwiLFwidXNlbWFwXCIsXCJ2c3BhY2VcIixcIndpZHRoXCJdLGlucHV0OltcImFjY2VwdFwiLFwiYWxpZ25cIixcImFsdFwiLFwiYXV0b2NvbXBsZXRlXCIsXCJjaGVja2VkXCIsXCJkaXJuYW1lXCIsXCJkaXNhYmxlZFwiLFwiZm9ybVwiLFwiZm9ybWFjdGlvblwiLFwiZm9ybWVuY3R5cGVcIixcImZvcm1tZXRob2RcIixcImZvcm1ub3ZhbGlkYXRlXCIsXCJmb3JtdGFyZ2V0XCIsXCJoZWlnaHRcIixcImlzbWFwXCIsXCJsaXN0XCIsXCJtYXhcIixcIm1heGxlbmd0aFwiLFwibWluXCIsXCJtaW5sZW5ndGhcIixcIm11bHRpcGxlXCIsXCJuYW1lXCIsXCJwYXR0ZXJuXCIsXCJwbGFjZWhvbGRlclwiLFwicmVhZG9ubHlcIixcInJlcXVpcmVkXCIsXCJzaXplXCIsXCJzcmNcIixcInN0ZXBcIixcInR5cGVcIixcInVzZW1hcFwiLFwidmFsdWVcIixcIndpZHRoXCJdLGluczpbXCJjaXRlXCIsXCJkYXRldGltZVwiXSxpc2luZGV4OltcInByb21wdFwiXSxsYWJlbDpbXCJmb3JcIixcImZvcm1cIl0sbGVnZW5kOltcImFsaWduXCJdLGxpOltcInR5cGVcIixcInZhbHVlXCJdLGxpbms6W1wiYXNcIixcImNoYXJzZXRcIixcImNvbG9yXCIsXCJjcm9zc29yaWdpblwiLFwiZGlzYWJsZWRcIixcImhyZWZcIixcImhyZWZsYW5nXCIsXCJpbWFnZXNpemVzXCIsXCJpbWFnZXNyY3NldFwiLFwiaW50ZWdyaXR5XCIsXCJtZWRpYVwiLFwicmVmZXJyZXJwb2xpY3lcIixcInJlbFwiLFwicmV2XCIsXCJzaXplc1wiLFwidGFyZ2V0XCIsXCJ0eXBlXCJdLG1hcDpbXCJuYW1lXCJdLG1lbnU6W1wiY29tcGFjdFwiXSxtZXRhOltcImNoYXJzZXRcIixcImNvbnRlbnRcIixcImh0dHAtZXF1aXZcIixcIm1lZGlhXCIsXCJuYW1lXCIsXCJzY2hlbWVcIl0sbWV0ZXI6W1wiaGlnaFwiLFwibG93XCIsXCJtYXhcIixcIm1pblwiLFwib3B0aW11bVwiLFwidmFsdWVcIl0sb2JqZWN0OltcImFsaWduXCIsXCJhcmNoaXZlXCIsXCJib3JkZXJcIixcImNsYXNzaWRcIixcImNvZGViYXNlXCIsXCJjb2RldHlwZVwiLFwiZGF0YVwiLFwiZGVjbGFyZVwiLFwiZm9ybVwiLFwiaGVpZ2h0XCIsXCJoc3BhY2VcIixcIm5hbWVcIixcInN0YW5kYnlcIixcInR5cGVcIixcInR5cGVtdXN0bWF0Y2hcIixcInVzZW1hcFwiLFwidnNwYWNlXCIsXCJ3aWR0aFwiXSxvbDpbXCJjb21wYWN0XCIsXCJyZXZlcnNlZFwiLFwic3RhcnRcIixcInR5cGVcIl0sb3B0Z3JvdXA6W1wiZGlzYWJsZWRcIixcImxhYmVsXCJdLG9wdGlvbjpbXCJkaXNhYmxlZFwiLFwibGFiZWxcIixcInNlbGVjdGVkXCIsXCJ2YWx1ZVwiXSxvdXRwdXQ6W1wiZm9yXCIsXCJmb3JtXCIsXCJuYW1lXCJdLHA6W1wiYWxpZ25cIl0scGFyYW06W1wibmFtZVwiLFwidHlwZVwiLFwidmFsdWVcIixcInZhbHVldHlwZVwiXSxwcmU6W1wid2lkdGhcIl0scHJvZ3Jlc3M6W1wibWF4XCIsXCJ2YWx1ZVwiXSxxOltcImNpdGVcIl0sc2NyaXB0OltcImFzeW5jXCIsXCJjaGFyc2V0XCIsXCJjcm9zc29yaWdpblwiLFwiZGVmZXJcIixcImludGVncml0eVwiLFwibGFuZ3VhZ2VcIixcIm5vbW9kdWxlXCIsXCJyZWZlcnJlcnBvbGljeVwiLFwic3JjXCIsXCJ0eXBlXCJdLHNlbGVjdDpbXCJhdXRvY29tcGxldGVcIixcImRpc2FibGVkXCIsXCJmb3JtXCIsXCJtdWx0aXBsZVwiLFwibmFtZVwiLFwicmVxdWlyZWRcIixcInNpemVcIl0sc2xvdDpbXCJuYW1lXCJdLHNvdXJjZTpbXCJoZWlnaHRcIixcIm1lZGlhXCIsXCJzaXplc1wiLFwic3JjXCIsXCJzcmNzZXRcIixcInR5cGVcIixcIndpZHRoXCJdLHN0eWxlOltcIm1lZGlhXCIsXCJ0eXBlXCJdLHRhYmxlOltcImFsaWduXCIsXCJiZ2NvbG9yXCIsXCJib3JkZXJcIixcImNlbGxwYWRkaW5nXCIsXCJjZWxsc3BhY2luZ1wiLFwiZnJhbWVcIixcInJ1bGVzXCIsXCJzdW1tYXJ5XCIsXCJ3aWR0aFwiXSx0Ym9keTpbXCJhbGlnblwiLFwiY2hhclwiLFwiY2hhcm9mZlwiLFwidmFsaWduXCJdLHRkOltcImFiYnJcIixcImFsaWduXCIsXCJheGlzXCIsXCJiZ2NvbG9yXCIsXCJjaGFyXCIsXCJjaGFyb2ZmXCIsXCJjb2xzcGFuXCIsXCJoZWFkZXJzXCIsXCJoZWlnaHRcIixcIm5vd3JhcFwiLFwicm93c3BhblwiLFwic2NvcGVcIixcInZhbGlnblwiLFwid2lkdGhcIl0sdGV4dGFyZWE6W1wiYXV0b2NvbXBsZXRlXCIsXCJjb2xzXCIsXCJkaXJuYW1lXCIsXCJkaXNhYmxlZFwiLFwiZm9ybVwiLFwibWF4bGVuZ3RoXCIsXCJtaW5sZW5ndGhcIixcIm5hbWVcIixcInBsYWNlaG9sZGVyXCIsXCJyZWFkb25seVwiLFwicmVxdWlyZWRcIixcInJvd3NcIixcIndyYXBcIl0sdGZvb3Q6W1wiYWxpZ25cIixcImNoYXJcIixcImNoYXJvZmZcIixcInZhbGlnblwiXSx0aDpbXCJhYmJyXCIsXCJhbGlnblwiLFwiYXhpc1wiLFwiYmdjb2xvclwiLFwiY2hhclwiLFwiY2hhcm9mZlwiLFwiY29sc3BhblwiLFwiaGVhZGVyc1wiLFwiaGVpZ2h0XCIsXCJub3dyYXBcIixcInJvd3NwYW5cIixcInNjb3BlXCIsXCJ2YWxpZ25cIixcIndpZHRoXCJdLHRoZWFkOltcImFsaWduXCIsXCJjaGFyXCIsXCJjaGFyb2ZmXCIsXCJ2YWxpZ25cIl0sdGltZTpbXCJkYXRldGltZVwiXSx0cjpbXCJhbGlnblwiLFwiYmdjb2xvclwiLFwiY2hhclwiLFwiY2hhcm9mZlwiLFwidmFsaWduXCJdLHRyYWNrOltcImRlZmF1bHRcIixcImtpbmRcIixcImxhYmVsXCIsXCJzcmNcIixcInNyY2xhbmdcIl0sdWw6W1wiY29tcGFjdFwiLFwidHlwZVwiXSx2aWRlbzpbXCJhdXRvcGxheVwiLFwiY29udHJvbHNcIixcImNyb3Nzb3JpZ2luXCIsXCJoZWlnaHRcIixcImxvb3BcIixcIm11dGVkXCIsXCJwbGF5c2lubGluZVwiLFwicG9zdGVyXCIsXCJwcmVsb2FkXCIsXCJzcmNcIixcIndpZHRoXCJdfX19fSksa0Q9SSh7XCJzcmMvbGFuZ3VhZ2UtaHRtbC91dGlscy9tYXAtb2JqZWN0LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7ZnVuY3Rpb24gdChzLGMpe2xldCBuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldFthLHBdb2YgT2JqZWN0LmVudHJpZXMocykpblthXT1jKHAsYSk7cmV0dXJuIG59ci5leHBvcnRzPXR9fSksTEQ9SSh7XCJzcmMvbGFuZ3VhZ2UtaHRtbC91dGlscy9odG1sLWVsZW1lbnRzLWF0dHJpYnV0ZXMuanNcIihlLHIpe1widXNlIHN0cmljdFwiO3EoKTt2YXJ7aHRtbEVsZW1lbnRBdHRyaWJ1dGVzOnR9PVBEKCkscz1rRCgpLGM9dnMoKSxuPXModCxjKTtyLmV4cG9ydHM9bn19KSxNRD1JKHtcInNyYy9sYW5ndWFnZS1odG1sL3V0aWxzL2lzLXVua25vd24tbmFtZXNwYWNlLmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7ZnVuY3Rpb24gdChzKXtyZXR1cm4gcy50eXBlPT09XCJlbGVtZW50XCImJiFzLmhhc0V4cGxpY2l0TmFtZXNwYWNlJiYhW1wiaHRtbFwiLFwic3ZnXCJdLmluY2x1ZGVzKHMubmFtZXNwYWNlKX1yLmV4cG9ydHM9dH19KSxqRD1JKHtcInNyYy9sYW5ndWFnZS1odG1sL3ByYWdtYS5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO2Z1bmN0aW9uIHQoYyl7cmV0dXJuL15cXHMqPCEtLVxccypAKD86Zm9ybWF0fHByZXR0aWVyKVxccyotLT4vLnRlc3QoYyl9ZnVuY3Rpb24gcyhjKXtyZXR1cm5gPCEtLSBAZm9ybWF0IC0tPlxuXG5gK2MucmVwbGFjZSgvXlxccypcXG4vLFwiXCIpfXIuZXhwb3J0cz17aGFzUHJhZ21hOnQsaW5zZXJ0UHJhZ21hOnN9fX0pLCREPUkoe1wic3JjL2xhbmd1YWdlLWh0bWwvYXN0LmpzXCIoZSxyKXtcInVzZSBzdHJpY3RcIjtxKCk7dmFyIHQ9e2F0dHJzOiEwLGNoaWxkcmVuOiEwfSxzPW5ldyBTZXQoW1wicGFyZW50XCJdKSxjPWNsYXNze2NvbnN0cnVjdG9yKCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O2ZvcihsZXQgcCBvZiBuZXcgU2V0KFsuLi5zLC4uLk9iamVjdC5rZXlzKGEpXSkpdGhpcy5zZXRQcm9wZXJ0eShwLGFbcF0pfXNldFByb3BlcnR5KGEscCl7aWYodGhpc1thXSE9PXApe2lmKGEgaW4gdCYmKHA9cC5tYXAoRD0+dGhpcy5jcmVhdGVDaGlsZChEKSkpLCFzLmhhcyhhKSl7dGhpc1thXT1wO3JldHVybn1PYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxhLHt2YWx1ZTpwLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9fW1hcChhKXtsZXQgcDtmb3IobGV0IEQgaW4gdCl7bGV0IGc9dGhpc1tEXTtpZihnKXtsZXQgaT1uKGcsbD0+bC5tYXAoYSkpO3AhPT1nJiYocHx8KHA9bmV3IGMoe3BhcmVudDp0aGlzLnBhcmVudH0pKSxwLnNldFByb3BlcnR5KEQsaSkpfX1pZihwKWZvcihsZXQgRCBpbiB0aGlzKUQgaW4gdHx8KHBbRF09dGhpc1tEXSk7cmV0dXJuIGEocHx8dGhpcyl9d2FsayhhKXtmb3IobGV0IHAgaW4gdCl7bGV0IEQ9dGhpc1twXTtpZihEKWZvcihsZXQgZz0wO2c8RC5sZW5ndGg7ZysrKURbZ10ud2FsayhhKX1hKHRoaXMpfWNyZWF0ZUNoaWxkKGEpe2xldCBwPWEgaW5zdGFuY2VvZiBjP2EuY2xvbmUoKTpuZXcgYyhhKTtyZXR1cm4gcC5zZXRQcm9wZXJ0eShcInBhcmVudFwiLHRoaXMpLHB9aW5zZXJ0Q2hpbGRCZWZvcmUoYSxwKXt0aGlzLmNoaWxkcmVuLnNwbGljZSh0aGlzLmNoaWxkcmVuLmluZGV4T2YoYSksMCx0aGlzLmNyZWF0ZUNoaWxkKHApKX1yZW1vdmVDaGlsZChhKXt0aGlzLmNoaWxkcmVuLnNwbGljZSh0aGlzLmNoaWxkcmVuLmluZGV4T2YoYSksMSl9cmVwbGFjZUNoaWxkKGEscCl7dGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmluZGV4T2YoYSldPXRoaXMuY3JlYXRlQ2hpbGQocCl9Y2xvbmUoKXtyZXR1cm4gbmV3IGModGhpcyl9Z2V0IGZpcnN0Q2hpbGQoKXt2YXIgYTtyZXR1cm4oYT10aGlzLmNoaWxkcmVuKT09PW51bGx8fGE9PT12b2lkIDA/dm9pZCAwOmFbMF19Z2V0IGxhc3RDaGlsZCgpe3ZhciBhO3JldHVybihhPXRoaXMuY2hpbGRyZW4pPT09bnVsbHx8YT09PXZvaWQgMD92b2lkIDA6YVt0aGlzLmNoaWxkcmVuLmxlbmd0aC0xXX1nZXQgcHJldigpe3ZhciBhO3JldHVybihhPXRoaXMucGFyZW50KT09PW51bGx8fGE9PT12b2lkIDA/dm9pZCAwOmEuY2hpbGRyZW5bdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzKS0xXX1nZXQgbmV4dCgpe3ZhciBhO3JldHVybihhPXRoaXMucGFyZW50KT09PW51bGx8fGE9PT12b2lkIDA/dm9pZCAwOmEuY2hpbGRyZW5bdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzKSsxXX1nZXQgcmF3TmFtZSgpe3JldHVybiB0aGlzLmhhc0V4cGxpY2l0TmFtZXNwYWNlP3RoaXMuZnVsbE5hbWU6dGhpcy5uYW1lfWdldCBmdWxsTmFtZSgpe3JldHVybiB0aGlzLm5hbWVzcGFjZT90aGlzLm5hbWVzcGFjZStcIjpcIit0aGlzLm5hbWU6dGhpcy5uYW1lfWdldCBhdHRyTWFwKCl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmF0dHJzLm1hcChhPT5bYS5mdWxsTmFtZSxhLnZhbHVlXSkpfX07ZnVuY3Rpb24gbihhLHApe2xldCBEPWEubWFwKHApO3JldHVybiBELnNvbWUoKGcsaSk9PmchPT1hW2ldKT9EOmF9ci5leHBvcnRzPXtOb2RlOmN9fX0pLFVEPUkoe1wic3JjL2xhbmd1YWdlLWh0bWwvY29uZGl0aW9uYWwtY29tbWVudC5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO3ZhcntQYXJzZVNvdXJjZVNwYW46dH09VGUoKSxzPVt7cmVnZXg6L14oXFxbaWYoW15cXF1dKildPikoLio/KTwhXFxzKlxcW2VuZGlmXSQvcyxwYXJzZTpufSx7cmVnZXg6L15cXFtpZihbXlxcXV0qKV0+PCEkLyxwYXJzZTphfSx7cmVnZXg6L148IVxccypcXFtlbmRpZl0kLyxwYXJzZTpwfV07ZnVuY3Rpb24gYyhELGcpe2lmKEQudmFsdWUpZm9yKGxldHtyZWdleDppLHBhcnNlOmx9b2Ygcyl7bGV0IGg9RC52YWx1ZS5tYXRjaChpKTtpZihoKXJldHVybiBsKEQsZyxoKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBuKEQsZyxpKXtsZXRbLGwsaCxDXT1pLGQ9NCtsLmxlbmd0aCxtPUQuc291cmNlU3Bhbi5zdGFydC5tb3ZlQnkoZCksVD1tLm1vdmVCeShDLmxlbmd0aCksW0IsQV09KCgpPT57dHJ5e3JldHVyblshMCxnKEMsbSkuY2hpbGRyZW5dfWNhdGNoe2xldCBOPXt0eXBlOlwidGV4dFwiLHZhbHVlOkMsc291cmNlU3BhbjpuZXcgdChtLFQpfTtyZXR1cm5bITEsW05dXX19KSgpO3JldHVybnt0eXBlOlwiaWVDb25kaXRpb25hbENvbW1lbnRcIixjb21wbGV0ZTpCLGNoaWxkcmVuOkEsY29uZGl0aW9uOmgudHJpbSgpLnJlcGxhY2UoL1xccysvZyxcIiBcIiksc291cmNlU3BhbjpELnNvdXJjZVNwYW4sc3RhcnRTb3VyY2VTcGFuOm5ldyB0KEQuc291cmNlU3Bhbi5zdGFydCxtKSxlbmRTb3VyY2VTcGFuOm5ldyB0KFQsRC5zb3VyY2VTcGFuLmVuZCl9fWZ1bmN0aW9uIGEoRCxnLGkpe2xldFssbF09aTtyZXR1cm57dHlwZTpcImllQ29uZGl0aW9uYWxTdGFydENvbW1lbnRcIixjb25kaXRpb246bC50cmltKCkucmVwbGFjZSgvXFxzKy9nLFwiIFwiKSxzb3VyY2VTcGFuOkQuc291cmNlU3Bhbn19ZnVuY3Rpb24gcChEKXtyZXR1cm57dHlwZTpcImllQ29uZGl0aW9uYWxFbmRDb21tZW50XCIsc291cmNlU3BhbjpELnNvdXJjZVNwYW59fXIuZXhwb3J0cz17cGFyc2VJZUNvbmRpdGlvbmFsQ29tbWVudDpjfX19KSxHRD1JKHtcInNyYy9sYW5ndWFnZS1odG1sL2xvYy5qc1wiKGUscil7XCJ1c2Ugc3RyaWN0XCI7cSgpO2Z1bmN0aW9uIHQoYyl7cmV0dXJuIGMuc291cmNlU3Bhbi5zdGFydC5vZmZzZXR9ZnVuY3Rpb24gcyhjKXtyZXR1cm4gYy5zb3VyY2VTcGFuLmVuZC5vZmZzZXR9ci5leHBvcnRzPXtsb2NTdGFydDp0LGxvY0VuZDpzfX19KSxaZT1JKHtcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWh0bWwtcGFyc2VyL2xpYi9jb21waWxlci9zcmMvbWxfcGFyc2VyL3RhZ3MuanNcIihlKXtcInVzZSBzdHJpY3RcIjtxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI7KGZ1bmN0aW9uKEQpe0RbRC5SQVdfVEVYVD0wXT1cIlJBV19URVhUXCIsRFtELkVTQ0FQQUJMRV9SQVdfVEVYVD0xXT1cIkVTQ0FQQUJMRV9SQVdfVEVYVFwiLERbRC5QQVJTQUJMRV9EQVRBPTJdPVwiUEFSU0FCTEVfREFUQVwifSkocj1lLlRhZ0NvbnRlbnRUeXBlfHwoZS5UYWdDb250ZW50VHlwZT17fSkpO2Z1bmN0aW9uIHQoRCl7aWYoRFswXSE9XCI6XCIpcmV0dXJuW251bGwsRF07bGV0IGc9RC5pbmRleE9mKFwiOlwiLDEpO2lmKGc9PS0xKXRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZm9ybWF0IFwiJy5jb25jYXQoRCwnXCIgZXhwZWN0aW5nIFwiOm5hbWVzcGFjZTpuYW1lXCInKSk7cmV0dXJuW0Quc2xpY2UoMSxnKSxELnNsaWNlKGcrMSldfWUuc3BsaXROc05hbWU9dDtmdW5jdGlvbiBzKEQpe3JldHVybiB0KEQpWzFdPT09XCJuZy1jb250YWluZXJcIn1lLmlzTmdDb250YWluZXI9cztmdW5jdGlvbiBjKEQpe3JldHVybiB0KEQpWzFdPT09XCJuZy1jb250ZW50XCJ9ZS5pc05nQ29udGVudD1jO2Z1bmN0aW9uIG4oRCl7cmV0dXJuIHQoRClbMV09PT1cIm5nLXRlbXBsYXRlXCJ9ZS5pc05nVGVtcGxhdGU9bjtmdW5jdGlvbiBhKEQpe3JldHVybiBEPT09bnVsbD9udWxsOnQoRClbMF19ZS5nZXROc1ByZWZpeD1hO2Z1bmN0aW9uIHAoRCxnKXtyZXR1cm4gRD9cIjpcIi5jb25jYXQoRCxcIjpcIikuY29uY2F0KGcpOmd9ZS5tZXJnZU5zQW5kTmFtZT1wLGUuTkFNRURfRU5USVRJRVM9e0FhY3V0ZTpcIlxceEMxXCIsYWFjdXRlOlwiXFx4RTFcIixBYnJldmU6XCJcXHUwMTAyXCIsYWJyZXZlOlwiXFx1MDEwM1wiLGFjOlwiXFx1MjIzRVwiLGFjZDpcIlxcdTIyM0ZcIixhY0U6XCJcXHUyMjNFXFx1MDMzM1wiLEFjaXJjOlwiXFx4QzJcIixhY2lyYzpcIlxceEUyXCIsYWN1dGU6XCJcXHhCNFwiLEFjeTpcIlxcdTA0MTBcIixhY3k6XCJcXHUwNDMwXCIsQUVsaWc6XCJcXHhDNlwiLGFlbGlnOlwiXFx4RTZcIixhZjpcIlxcdTIwNjFcIixBZnI6XCJcXHV7MUQ1MDR9XCIsYWZyOlwiXFx1ezFENTFFfVwiLEFncmF2ZTpcIlxceEMwXCIsYWdyYXZlOlwiXFx4RTBcIixhbGVmc3ltOlwiXFx1MjEzNVwiLGFsZXBoOlwiXFx1MjEzNVwiLEFscGhhOlwiXFx1MDM5MVwiLGFscGhhOlwiXFx1MDNCMVwiLEFtYWNyOlwiXFx1MDEwMFwiLGFtYWNyOlwiXFx1MDEwMVwiLGFtYWxnOlwiXFx1MkEzRlwiLEFNUDpcIiZcIixhbXA6XCImXCIsQW5kOlwiXFx1MkE1M1wiLGFuZDpcIlxcdTIyMjdcIixhbmRhbmQ6XCJcXHUyQTU1XCIsYW5kZDpcIlxcdTJBNUNcIixhbmRzbG9wZTpcIlxcdTJBNThcIixhbmR2OlwiXFx1MkE1QVwiLGFuZzpcIlxcdTIyMjBcIixhbmdlOlwiXFx1MjlBNFwiLGFuZ2xlOlwiXFx1MjIyMFwiLGFuZ21zZDpcIlxcdTIyMjFcIixhbmdtc2RhYTpcIlxcdTI5QThcIixhbmdtc2RhYjpcIlxcdTI5QTlcIixhbmdtc2RhYzpcIlxcdTI5QUFcIixhbmdtc2RhZDpcIlxcdTI5QUJcIixhbmdtc2RhZTpcIlxcdTI5QUNcIixhbmdtc2RhZjpcIlxcdTI5QURcIixhbmdtc2RhZzpcIlxcdTI5QUVcIixhbmdtc2RhaDpcIlxcdTI5QUZcIixhbmdydDpcIlxcdTIyMUZcIixhbmdydHZiOlwiXFx1MjJCRVwiLGFuZ3J0dmJkOlwiXFx1Mjk5RFwiLGFuZ3NwaDpcIlxcdTIyMjJcIixhbmdzdDpcIlxceEM1XCIsYW5nemFycjpcIlxcdTIzN0NcIixBb2dvbjpcIlxcdTAxMDRcIixhb2dvbjpcIlxcdTAxMDVcIixBb3BmOlwiXFx1ezFENTM4fVwiLGFvcGY6XCJcXHV7MUQ1NTJ9XCIsYXA6XCJcXHUyMjQ4XCIsYXBhY2lyOlwiXFx1MkE2RlwiLGFwRTpcIlxcdTJBNzBcIixhcGU6XCJcXHUyMjRBXCIsYXBpZDpcIlxcdTIyNEJcIixhcG9zOlwiJ1wiLEFwcGx5RnVuY3Rpb246XCJcXHUyMDYxXCIsYXBwcm94OlwiXFx1MjI0OFwiLGFwcHJveGVxOlwiXFx1MjI0QVwiLEFyaW5nOlwiXFx4QzVcIixhcmluZzpcIlxceEU1XCIsQXNjcjpcIlxcdXsxRDQ5Q31cIixhc2NyOlwiXFx1ezFENEI2fVwiLEFzc2lnbjpcIlxcdTIyNTRcIixhc3Q6XCIqXCIsYXN5bXA6XCJcXHUyMjQ4XCIsYXN5bXBlcTpcIlxcdTIyNERcIixBdGlsZGU6XCJcXHhDM1wiLGF0aWxkZTpcIlxceEUzXCIsQXVtbDpcIlxceEM0XCIsYXVtbDpcIlxceEU0XCIsYXdjb25pbnQ6XCJcXHUyMjMzXCIsYXdpbnQ6XCJcXHUyQTExXCIsYmFja2Nvbmc6XCJcXHUyMjRDXCIsYmFja2Vwc2lsb246XCJcXHUwM0Y2XCIsYmFja3ByaW1lOlwiXFx1MjAzNVwiLGJhY2tzaW06XCJcXHUyMjNEXCIsYmFja3NpbWVxOlwiXFx1MjJDRFwiLEJhY2tzbGFzaDpcIlxcdTIyMTZcIixCYXJ2OlwiXFx1MkFFN1wiLGJhcnZlZTpcIlxcdTIyQkRcIixCYXJ3ZWQ6XCJcXHUyMzA2XCIsYmFyd2VkOlwiXFx1MjMwNVwiLGJhcndlZGdlOlwiXFx1MjMwNVwiLGJicms6XCJcXHUyM0I1XCIsYmJya3Ricms6XCJcXHUyM0I2XCIsYmNvbmc6XCJcXHUyMjRDXCIsQmN5OlwiXFx1MDQxMVwiLGJjeTpcIlxcdTA0MzFcIixiZHF1bzpcIlxcdTIwMUVcIixiZWNhdXM6XCJcXHUyMjM1XCIsQmVjYXVzZTpcIlxcdTIyMzVcIixiZWNhdXNlOlwiXFx1MjIzNVwiLGJlbXB0eXY6XCJcXHUyOUIwXCIsYmVwc2k6XCJcXHUwM0Y2XCIsYmVybm91OlwiXFx1MjEyQ1wiLEJlcm5vdWxsaXM6XCJcXHUyMTJDXCIsQmV0YTpcIlxcdTAzOTJcIixiZXRhOlwiXFx1MDNCMlwiLGJldGg6XCJcXHUyMTM2XCIsYmV0d2VlbjpcIlxcdTIyNkNcIixCZnI6XCJcXHV7MUQ1MDV9XCIsYmZyOlwiXFx1ezFENTFGfVwiLGJpZ2NhcDpcIlxcdTIyQzJcIixiaWdjaXJjOlwiXFx1MjVFRlwiLGJpZ2N1cDpcIlxcdTIyQzNcIixiaWdvZG90OlwiXFx1MkEwMFwiLGJpZ29wbHVzOlwiXFx1MkEwMVwiLGJpZ290aW1lczpcIlxcdTJBMDJcIixiaWdzcWN1cDpcIlxcdTJBMDZcIixiaWdzdGFyOlwiXFx1MjYwNVwiLGJpZ3RyaWFuZ2xlZG93bjpcIlxcdTI1QkRcIixiaWd0cmlhbmdsZXVwOlwiXFx1MjVCM1wiLGJpZ3VwbHVzOlwiXFx1MkEwNFwiLGJpZ3ZlZTpcIlxcdTIyQzFcIixiaWd3ZWRnZTpcIlxcdTIyQzBcIixia2Fyb3c6XCJcXHUyOTBEXCIsYmxhY2tsb3plbmdlOlwiXFx1MjlFQlwiLGJsYWNrc3F1YXJlOlwiXFx1MjVBQVwiLGJsYWNrdHJpYW5nbGU6XCJcXHUyNUI0XCIsYmxhY2t0cmlhbmdsZWRvd246XCJcXHUyNUJFXCIsYmxhY2t0cmlhbmdsZWxlZnQ6XCJcXHUyNUMyXCIsYmxhY2t0cmlhbmdsZXJpZ2h0OlwiXFx1MjVCOFwiLGJsYW5rOlwiXFx1MjQyM1wiLGJsazEyOlwiXFx1MjU5MlwiLGJsazE0OlwiXFx1MjU5MVwiLGJsazM0OlwiXFx1MjU5M1wiLGJsb2NrOlwiXFx1MjU4OFwiLGJuZTpcIj1cXHUyMEU1XCIsYm5lcXVpdjpcIlxcdTIyNjFcXHUyMEU1XCIsYk5vdDpcIlxcdTJBRURcIixibm90OlwiXFx1MjMxMFwiLEJvcGY6XCJcXHV7MUQ1Mzl9XCIsYm9wZjpcIlxcdXsxRDU1M31cIixib3Q6XCJcXHUyMkE1XCIsYm90dG9tOlwiXFx1MjJBNVwiLGJvd3RpZTpcIlxcdTIyQzhcIixib3hib3g6XCJcXHUyOUM5XCIsYm94REw6XCJcXHUyNTU3XCIsYm94RGw6XCJcXHUyNTU2XCIsYm94ZEw6XCJcXHUyNTU1XCIsYm94ZGw6XCJcXHUyNTEwXCIsYm94RFI6XCJcXHUyNTU0XCIsYm94RHI6XCJcXHUyNTUzXCIsYm94ZFI6XCJcXHUyNTUyXCIsYm94ZHI6XCJcXHUyNTBDXCIsYm94SDpcIlxcdTI1NTBcIixib3hoOlwiXFx1MjUwMFwiLGJveEhEOlwiXFx1MjU2NlwiLGJveEhkOlwiXFx1MjU2NFwiLGJveGhEOlwiXFx1MjU2NVwiLGJveGhkOlwiXFx1MjUyQ1wiLGJveEhVOlwiXFx1MjU2OVwiLGJveEh1OlwiXFx1MjU2N1wiLGJveGhVOlwiXFx1MjU2OFwiLGJveGh1OlwiXFx1MjUzNFwiLGJveG1pbnVzOlwiXFx1MjI5RlwiLGJveHBsdXM6XCJcXHUyMjlFXCIsYm94dGltZXM6XCJcXHUyMkEwXCIsYm94VUw6XCJcXHUyNTVEXCIsYm94VWw6XCJcXHUyNTVDXCIsYm94dUw6XCJcXHUyNTVCXCIsYm94dWw6XCJcXHUyNTE4XCIsYm94VVI6XCJcXHUyNTVBXCIsYm94VXI6XCJcXHUyNTU5XCIsYm94dVI6XCJcXHUyNTU4XCIsYm94dXI6XCJcXHUyNTE0XCIsYm94VjpcIlxcdTI1NTFcIixib3h2OlwiXFx1MjUwMlwiLGJveFZIOlwiXFx1MjU2Q1wiLGJveFZoOlwiXFx1MjU2QlwiLGJveHZIOlwiXFx1MjU2QVwiLGJveHZoOlwiXFx1MjUzQ1wiLGJveFZMOlwiXFx1MjU2M1wiLGJveFZsOlwiXFx1MjU2MlwiLGJveHZMOlwiXFx1MjU2MVwiLGJveHZsOlwiXFx1MjUyNFwiLGJveFZSOlwiXFx1MjU2MFwiLGJveFZyOlwiXFx1MjU1RlwiLGJveHZSOlwiXFx1MjU1RVwiLGJveHZyOlwiXFx1MjUxQ1wiLGJwcmltZTpcIlxcdTIwMzVcIixCcmV2ZTpcIlxcdTAyRDhcIixicmV2ZTpcIlxcdTAyRDhcIixicnZiYXI6XCJcXHhBNlwiLEJzY3I6XCJcXHUyMTJDXCIsYnNjcjpcIlxcdXsxRDRCN31cIixic2VtaTpcIlxcdTIwNEZcIixic2ltOlwiXFx1MjIzRFwiLGJzaW1lOlwiXFx1MjJDRFwiLGJzb2w6XCJcXFxcXCIsYnNvbGI6XCJcXHUyOUM1XCIsYnNvbGhzdWI6XCJcXHUyN0M4XCIsYnVsbDpcIlxcdTIwMjJcIixidWxsZXQ6XCJcXHUyMDIyXCIsYnVtcDpcIlxcdTIyNEVcIixidW1wRTpcIlxcdTJBQUVcIixidW1wZTpcIlxcdTIyNEZcIixCdW1wZXE6XCJcXHUyMjRFXCIsYnVtcGVxOlwiXFx1MjI0RlwiLENhY3V0ZTpcIlxcdTAxMDZcIixjYWN1dGU6XCJcXHUwMTA3XCIsQ2FwOlwiXFx1MjJEMlwiLGNhcDpcIlxcdTIyMjlcIixjYXBhbmQ6XCJcXHUyQTQ0XCIsY2FwYnJjdXA6XCJcXHUyQTQ5XCIsY2FwY2FwOlwiXFx1MkE0QlwiLGNhcGN1cDpcIlxcdTJBNDdcIixjYXBkb3Q6XCJcXHUyQTQwXCIsQ2FwaXRhbERpZmZlcmVudGlhbEQ6XCJcXHUyMTQ1XCIsY2FwczpcIlxcdTIyMjlcXHVGRTAwXCIsY2FyZXQ6XCJcXHUyMDQxXCIsY2Fyb246XCJcXHUwMkM3XCIsQ2F5bGV5czpcIlxcdTIxMkRcIixjY2FwczpcIlxcdTJBNERcIixDY2Fyb246XCJcXHUwMTBDXCIsY2Nhcm9uOlwiXFx1MDEwRFwiLENjZWRpbDpcIlxceEM3XCIsY2NlZGlsOlwiXFx4RTdcIixDY2lyYzpcIlxcdTAxMDhcIixjY2lyYzpcIlxcdTAxMDlcIixDY29uaW50OlwiXFx1MjIzMFwiLGNjdXBzOlwiXFx1MkE0Q1wiLGNjdXBzc206XCJcXHUyQTUwXCIsQ2RvdDpcIlxcdTAxMEFcIixjZG90OlwiXFx1MDEwQlwiLGNlZGlsOlwiXFx4QjhcIixDZWRpbGxhOlwiXFx4QjhcIixjZW1wdHl2OlwiXFx1MjlCMlwiLGNlbnQ6XCJcXHhBMlwiLENlbnRlckRvdDpcIlxceEI3XCIsY2VudGVyZG90OlwiXFx4QjdcIixDZnI6XCJcXHUyMTJEXCIsY2ZyOlwiXFx1ezFENTIwfVwiLENIY3k6XCJcXHUwNDI3XCIsY2hjeTpcIlxcdTA0NDdcIixjaGVjazpcIlxcdTI3MTNcIixjaGVja21hcms6XCJcXHUyNzEzXCIsQ2hpOlwiXFx1MDNBN1wiLGNoaTpcIlxcdTAzQzdcIixjaXI6XCJcXHUyNUNCXCIsY2lyYzpcIlxcdTAyQzZcIixjaXJjZXE6XCJcXHUyMjU3XCIsY2lyY2xlYXJyb3dsZWZ0OlwiXFx1MjFCQVwiLGNpcmNsZWFycm93cmlnaHQ6XCJcXHUyMUJCXCIsY2lyY2xlZGFzdDpcIlxcdTIyOUJcIixjaXJjbGVkY2lyYzpcIlxcdTIyOUFcIixjaXJjbGVkZGFzaDpcIlxcdTIyOURcIixDaXJjbGVEb3Q6XCJcXHUyMjk5XCIsY2lyY2xlZFI6XCJcXHhBRVwiLGNpcmNsZWRTOlwiXFx1MjRDOFwiLENpcmNsZU1pbnVzOlwiXFx1MjI5NlwiLENpcmNsZVBsdXM6XCJcXHUyMjk1XCIsQ2lyY2xlVGltZXM6XCJcXHUyMjk3XCIsY2lyRTpcIlxcdTI5QzNcIixjaXJlOlwiXFx1MjI1N1wiLGNpcmZuaW50OlwiXFx1MkExMFwiLGNpcm1pZDpcIlxcdTJBRUZcIixjaXJzY2lyOlwiXFx1MjlDMlwiLENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMzJcIixDbG9zZUN1cmx5RG91YmxlUXVvdGU6XCJcXHUyMDFEXCIsQ2xvc2VDdXJseVF1b3RlOlwiXFx1MjAxOVwiLGNsdWJzOlwiXFx1MjY2M1wiLGNsdWJzdWl0OlwiXFx1MjY2M1wiLENvbG9uOlwiXFx1MjIzN1wiLGNvbG9uOlwiOlwiLENvbG9uZTpcIlxcdTJBNzRcIixjb2xvbmU6XCJcXHUyMjU0XCIsY29sb25lcTpcIlxcdTIyNTRcIixjb21tYTpcIixcIixjb21tYXQ6XCJAXCIsY29tcDpcIlxcdTIyMDFcIixjb21wZm46XCJcXHUyMjE4XCIsY29tcGxlbWVudDpcIlxcdTIyMDFcIixjb21wbGV4ZXM6XCJcXHUyMTAyXCIsY29uZzpcIlxcdTIyNDVcIixjb25nZG90OlwiXFx1MkE2RFwiLENvbmdydWVudDpcIlxcdTIyNjFcIixDb25pbnQ6XCJcXHUyMjJGXCIsY29uaW50OlwiXFx1MjIyRVwiLENvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMkVcIixDb3BmOlwiXFx1MjEwMlwiLGNvcGY6XCJcXHV7MUQ1NTR9XCIsY29wcm9kOlwiXFx1MjIxMFwiLENvcHJvZHVjdDpcIlxcdTIyMTBcIixDT1BZOlwiXFx4QTlcIixjb3B5OlwiXFx4QTlcIixjb3B5c3I6XCJcXHUyMTE3XCIsQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMzNcIixjcmFycjpcIlxcdTIxQjVcIixDcm9zczpcIlxcdTJBMkZcIixjcm9zczpcIlxcdTI3MTdcIixDc2NyOlwiXFx1ezFENDlFfVwiLGNzY3I6XCJcXHV7MUQ0Qjh9XCIsY3N1YjpcIlxcdTJBQ0ZcIixjc3ViZTpcIlxcdTJBRDFcIixjc3VwOlwiXFx1MkFEMFwiLGNzdXBlOlwiXFx1MkFEMlwiLGN0ZG90OlwiXFx1MjJFRlwiLGN1ZGFycmw6XCJcXHUyOTM4XCIsY3VkYXJycjpcIlxcdTI5MzVcIixjdWVwcjpcIlxcdTIyREVcIixjdWVzYzpcIlxcdTIyREZcIixjdWxhcnI6XCJcXHUyMUI2XCIsY3VsYXJycDpcIlxcdTI5M0RcIixDdXA6XCJcXHUyMkQzXCIsY3VwOlwiXFx1MjIyQVwiLGN1cGJyY2FwOlwiXFx1MkE0OFwiLEN1cENhcDpcIlxcdTIyNERcIixjdXBjYXA6XCJcXHUyQTQ2XCIsY3VwY3VwOlwiXFx1MkE0QVwiLGN1cGRvdDpcIlxcdTIyOERcIixjdXBvcjpcIlxcdTJBNDVcIixjdXBzOlwiXFx1MjIyQVxcdUZFMDBcIixjdXJhcnI6XCJcXHUyMUI3XCIsY3VyYXJybTpcIlxcdTI5M0NcIixjdXJseWVxcHJlYzpcIlxcdTIyREVcIixjdXJseWVxc3VjYzpcIlxcdTIyREZcIixjdXJseXZlZTpcIlxcdTIyQ0VcIixjdXJseXdlZGdlOlwiXFx1MjJDRlwiLGN1cnJlbjpcIlxceEE0XCIsY3VydmVhcnJvd2xlZnQ6XCJcXHUyMUI2XCIsY3VydmVhcnJvd3JpZ2h0OlwiXFx1MjFCN1wiLGN1dmVlOlwiXFx1MjJDRVwiLGN1d2VkOlwiXFx1MjJDRlwiLGN3Y29uaW50OlwiXFx1MjIzMlwiLGN3aW50OlwiXFx1MjIzMVwiLGN5bGN0eTpcIlxcdTIzMkRcIixEYWdnZXI6XCJcXHUyMDIxXCIsZGFnZ2VyOlwiXFx1MjAyMFwiLGRhbGV0aDpcIlxcdTIxMzhcIixEYXJyOlwiXFx1MjFBMVwiLGRBcnI6XCJcXHUyMUQzXCIsZGFycjpcIlxcdTIxOTNcIixkYXNoOlwiXFx1MjAxMFwiLERhc2h2OlwiXFx1MkFFNFwiLGRhc2h2OlwiXFx1MjJBM1wiLGRia2Fyb3c6XCJcXHUyOTBGXCIsZGJsYWM6XCJcXHUwMkREXCIsRGNhcm9uOlwiXFx1MDEwRVwiLGRjYXJvbjpcIlxcdTAxMEZcIixEY3k6XCJcXHUwNDE0XCIsZGN5OlwiXFx1MDQzNFwiLEREOlwiXFx1MjE0NVwiLGRkOlwiXFx1MjE0NlwiLGRkYWdnZXI6XCJcXHUyMDIxXCIsZGRhcnI6XCJcXHUyMUNBXCIsRERvdHJhaGQ6XCJcXHUyOTExXCIsZGRvdHNlcTpcIlxcdTJBNzdcIixkZWc6XCJcXHhCMFwiLERlbDpcIlxcdTIyMDdcIixEZWx0YTpcIlxcdTAzOTRcIixkZWx0YTpcIlxcdTAzQjRcIixkZW1wdHl2OlwiXFx1MjlCMVwiLGRmaXNodDpcIlxcdTI5N0ZcIixEZnI6XCJcXHV7MUQ1MDd9XCIsZGZyOlwiXFx1ezFENTIxfVwiLGRIYXI6XCJcXHUyOTY1XCIsZGhhcmw6XCJcXHUyMUMzXCIsZGhhcnI6XCJcXHUyMUMyXCIsRGlhY3JpdGljYWxBY3V0ZTpcIlxceEI0XCIsRGlhY3JpdGljYWxEb3Q6XCJcXHUwMkQ5XCIsRGlhY3JpdGljYWxEb3VibGVBY3V0ZTpcIlxcdTAyRERcIixEaWFjcml0aWNhbEdyYXZlOlwiYFwiLERpYWNyaXRpY2FsVGlsZGU6XCJcXHUwMkRDXCIsZGlhbTpcIlxcdTIyQzRcIixEaWFtb25kOlwiXFx1MjJDNFwiLGRpYW1vbmQ6XCJcXHUyMkM0XCIsZGlhbW9uZHN1aXQ6XCJcXHUyNjY2XCIsZGlhbXM6XCJcXHUyNjY2XCIsZGllOlwiXFx4QThcIixEaWZmZXJlbnRpYWxEOlwiXFx1MjE0NlwiLGRpZ2FtbWE6XCJcXHUwM0REXCIsZGlzaW46XCJcXHUyMkYyXCIsZGl2OlwiXFx4RjdcIixkaXZpZGU6XCJcXHhGN1wiLGRpdmlkZW9udGltZXM6XCJcXHUyMkM3XCIsZGl2b254OlwiXFx1MjJDN1wiLERKY3k6XCJcXHUwNDAyXCIsZGpjeTpcIlxcdTA0NTJcIixkbGNvcm46XCJcXHUyMzFFXCIsZGxjcm9wOlwiXFx1MjMwRFwiLGRvbGxhcjpcIiRcIixEb3BmOlwiXFx1ezFENTNCfVwiLGRvcGY6XCJcXHV7MUQ1NTV9XCIsRG90OlwiXFx4QThcIixkb3Q6XCJcXHUwMkQ5XCIsRG90RG90OlwiXFx1MjBEQ1wiLGRvdGVxOlwiXFx1MjI1MFwiLGRvdGVxZG90OlwiXFx1MjI1MVwiLERvdEVxdWFsOlwiXFx1MjI1MFwiLGRvdG1pbnVzOlwiXFx1MjIzOFwiLGRvdHBsdXM6XCJcXHUyMjE0XCIsZG90c3F1YXJlOlwiXFx1MjJBMVwiLGRvdWJsZWJhcndlZGdlOlwiXFx1MjMwNlwiLERvdWJsZUNvbnRvdXJJbnRlZ3JhbDpcIlxcdTIyMkZcIixEb3VibGVEb3Q6XCJcXHhBOFwiLERvdWJsZURvd25BcnJvdzpcIlxcdTIxRDNcIixEb3VibGVMZWZ0QXJyb3c6XCJcXHUyMUQwXCIsRG91YmxlTGVmdFJpZ2h0QXJyb3c6XCJcXHUyMUQ0XCIsRG91YmxlTGVmdFRlZTpcIlxcdTJBRTRcIixEb3VibGVMb25nTGVmdEFycm93OlwiXFx1MjdGOFwiLERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzpcIlxcdTI3RkFcIixEb3VibGVMb25nUmlnaHRBcnJvdzpcIlxcdTI3RjlcIixEb3VibGVSaWdodEFycm93OlwiXFx1MjFEMlwiLERvdWJsZVJpZ2h0VGVlOlwiXFx1MjJBOFwiLERvdWJsZVVwQXJyb3c6XCJcXHUyMUQxXCIsRG91YmxlVXBEb3duQXJyb3c6XCJcXHUyMUQ1XCIsRG91YmxlVmVydGljYWxCYXI6XCJcXHUyMjI1XCIsRG93bkFycm93OlwiXFx1MjE5M1wiLERvd25hcnJvdzpcIlxcdTIxRDNcIixkb3duYXJyb3c6XCJcXHUyMTkzXCIsRG93bkFycm93QmFyOlwiXFx1MjkxM1wiLERvd25BcnJvd1VwQXJyb3c6XCJcXHUyMUY1XCIsRG93bkJyZXZlOlwiXFx1MDMxMVwiLGRvd25kb3duYXJyb3dzOlwiXFx1MjFDQVwiLGRvd25oYXJwb29ubGVmdDpcIlxcdTIxQzNcIixkb3duaGFycG9vbnJpZ2h0OlwiXFx1MjFDMlwiLERvd25MZWZ0UmlnaHRWZWN0b3I6XCJcXHUyOTUwXCIsRG93bkxlZnRUZWVWZWN0b3I6XCJcXHUyOTVFXCIsRG93bkxlZnRWZWN0b3I6XCJcXHUyMUJEXCIsRG93bkxlZnRWZWN0b3JCYXI6XCJcXHUyOTU2XCIsRG93blJpZ2h0VGVlVmVjdG9yOlwiXFx1Mjk1RlwiLERvd25SaWdodFZlY3RvcjpcIlxcdTIxQzFcIixEb3duUmlnaHRWZWN0b3JCYXI6XCJcXHUyOTU3XCIsRG93blRlZTpcIlxcdTIyQTRcIixEb3duVGVlQXJyb3c6XCJcXHUyMUE3XCIsZHJia2Fyb3c6XCJcXHUyOTEwXCIsZHJjb3JuOlwiXFx1MjMxRlwiLGRyY3JvcDpcIlxcdTIzMENcIixEc2NyOlwiXFx1ezFENDlGfVwiLGRzY3I6XCJcXHV7MUQ0Qjl9XCIsRFNjeTpcIlxcdTA0MDVcIixkc2N5OlwiXFx1MDQ1NVwiLGRzb2w6XCJcXHUyOUY2XCIsRHN0cm9rOlwiXFx1MDExMFwiLGRzdHJvazpcIlxcdTAxMTFcIixkdGRvdDpcIlxcdTIyRjFcIixkdHJpOlwiXFx1MjVCRlwiLGR0cmlmOlwiXFx1MjVCRVwiLGR1YXJyOlwiXFx1MjFGNVwiLGR1aGFyOlwiXFx1Mjk2RlwiLGR3YW5nbGU6XCJcXHUyOUE2XCIsRFpjeTpcIlxcdTA0MEZcIixkemN5OlwiXFx1MDQ1RlwiLGR6aWdyYXJyOlwiXFx1MjdGRlwiLEVhY3V0ZTpcIlxceEM5XCIsZWFjdXRlOlwiXFx4RTlcIixlYXN0ZXI6XCJcXHUyQTZFXCIsRWNhcm9uOlwiXFx1MDExQVwiLGVjYXJvbjpcIlxcdTAxMUJcIixlY2lyOlwiXFx1MjI1NlwiLEVjaXJjOlwiXFx4Q0FcIixlY2lyYzpcIlxceEVBXCIsZWNvbG9uOlwiXFx1MjI1NVwiLEVjeTpcIlxcdTA0MkRcIixlY3k6XCJcXHUwNDREXCIsZUREb3Q6XCJcXHUyQTc3XCIsRWRvdDpcIlxcdTAxMTZcIixlRG90OlwiXFx1MjI1MVwiLGVkb3Q6XCJcXHUwMTE3XCIsZWU6XCJcXHUyMTQ3XCIsZWZEb3Q6XCJcXHUyMjUyXCIsRWZyOlwiXFx1ezFENTA4fVwiLGVmcjpcIlxcdXsxRDUyMn1cIixlZzpcIlxcdTJBOUFcIixFZ3JhdmU6XCJcXHhDOFwiLGVncmF2ZTpcIlxceEU4XCIsZWdzOlwiXFx1MkE5NlwiLGVnc2RvdDpcIlxcdTJBOThcIixlbDpcIlxcdTJBOTlcIixFbGVtZW50OlwiXFx1MjIwOFwiLGVsaW50ZXJzOlwiXFx1MjNFN1wiLGVsbDpcIlxcdTIxMTNcIixlbHM6XCJcXHUyQTk1XCIsZWxzZG90OlwiXFx1MkE5N1wiLEVtYWNyOlwiXFx1MDExMlwiLGVtYWNyOlwiXFx1MDExM1wiLGVtcHR5OlwiXFx1MjIwNVwiLGVtcHR5c2V0OlwiXFx1MjIwNVwiLEVtcHR5U21hbGxTcXVhcmU6XCJcXHUyNUZCXCIsZW1wdHl2OlwiXFx1MjIwNVwiLEVtcHR5VmVyeVNtYWxsU3F1YXJlOlwiXFx1MjVBQlwiLGVtc3A6XCJcXHUyMDAzXCIsZW1zcDEzOlwiXFx1MjAwNFwiLGVtc3AxNDpcIlxcdTIwMDVcIixFTkc6XCJcXHUwMTRBXCIsZW5nOlwiXFx1MDE0QlwiLGVuc3A6XCJcXHUyMDAyXCIsRW9nb246XCJcXHUwMTE4XCIsZW9nb246XCJcXHUwMTE5XCIsRW9wZjpcIlxcdXsxRDUzQ31cIixlb3BmOlwiXFx1ezFENTU2fVwiLGVwYXI6XCJcXHUyMkQ1XCIsZXBhcnNsOlwiXFx1MjlFM1wiLGVwbHVzOlwiXFx1MkE3MVwiLGVwc2k6XCJcXHUwM0I1XCIsRXBzaWxvbjpcIlxcdTAzOTVcIixlcHNpbG9uOlwiXFx1MDNCNVwiLGVwc2l2OlwiXFx1MDNGNVwiLGVxY2lyYzpcIlxcdTIyNTZcIixlcWNvbG9uOlwiXFx1MjI1NVwiLGVxc2ltOlwiXFx1MjI0MlwiLGVxc2xhbnRndHI6XCJcXHUyQTk2XCIsZXFzbGFudGxlc3M6XCJcXHUyQTk1XCIsRXF1YWw6XCJcXHUyQTc1XCIsZXF1YWxzOlwiPVwiLEVxdWFsVGlsZGU6XCJcXHUyMjQyXCIsZXF1ZXN0OlwiXFx1MjI1RlwiLEVxdWlsaWJyaXVtOlwiXFx1MjFDQ1wiLGVxdWl2OlwiXFx1MjI2MVwiLGVxdWl2REQ6XCJcXHUyQTc4XCIsZXF2cGFyc2w6XCJcXHUyOUU1XCIsZXJhcnI6XCJcXHUyOTcxXCIsZXJEb3Q6XCJcXHUyMjUzXCIsRXNjcjpcIlxcdTIxMzBcIixlc2NyOlwiXFx1MjEyRlwiLGVzZG90OlwiXFx1MjI1MFwiLEVzaW06XCJcXHUyQTczXCIsZXNpbTpcIlxcdTIyNDJcIixFdGE6XCJcXHUwMzk3XCIsZXRhOlwiXFx1MDNCN1wiLEVUSDpcIlxceEQwXCIsZXRoOlwiXFx4RjBcIixFdW1sOlwiXFx4Q0JcIixldW1sOlwiXFx4RUJcIixldXJvOlwiXFx1MjBBQ1wiLGV4Y2w6XCIhXCIsZXhpc3Q6XCJcXHUyMjAzXCIsRXhpc3RzOlwiXFx1MjIwM1wiLGV4cGVjdGF0aW9uOlwiXFx1MjEzMFwiLEV4cG9uZW50aWFsRTpcIlxcdTIxNDdcIixleHBvbmVudGlhbGU6XCJcXHUyMTQ3XCIsZmFsbGluZ2RvdHNlcTpcIlxcdTIyNTJcIixGY3k6XCJcXHUwNDI0XCIsZmN5OlwiXFx1MDQ0NFwiLGZlbWFsZTpcIlxcdTI2NDBcIixmZmlsaWc6XCJcXHVGQjAzXCIsZmZsaWc6XCJcXHVGQjAwXCIsZmZsbGlnOlwiXFx1RkIwNFwiLEZmcjpcIlxcdXsxRDUwOX1cIixmZnI6XCJcXHV7MUQ1MjN9XCIsZmlsaWc6XCJcXHVGQjAxXCIsRmlsbGVkU21hbGxTcXVhcmU6XCJcXHUyNUZDXCIsRmlsbGVkVmVyeVNtYWxsU3F1YXJlOlwiXFx1MjVBQVwiLGZqbGlnOlwiZmpcIixmbGF0OlwiXFx1MjY2RFwiLGZsbGlnOlwiXFx1RkIwMlwiLGZsdG5zOlwiXFx1MjVCMVwiLGZub2Y6XCJcXHUwMTkyXCIsRm9wZjpcIlxcdXsxRDUzRH1cIixmb3BmOlwiXFx1ezFENTU3fVwiLEZvckFsbDpcIlxcdTIyMDBcIixmb3JhbGw6XCJcXHUyMjAwXCIsZm9yazpcIlxcdTIyRDRcIixmb3JrdjpcIlxcdTJBRDlcIixGb3VyaWVydHJmOlwiXFx1MjEzMVwiLGZwYXJ0aW50OlwiXFx1MkEwRFwiLGZyYWMxMjpcIlxceEJEXCIsZnJhYzEzOlwiXFx1MjE1M1wiLGZyYWMxNDpcIlxceEJDXCIsZnJhYzE1OlwiXFx1MjE1NVwiLGZyYWMxNjpcIlxcdTIxNTlcIixmcmFjMTg6XCJcXHUyMTVCXCIsZnJhYzIzOlwiXFx1MjE1NFwiLGZyYWMyNTpcIlxcdTIxNTZcIixmcmFjMzQ6XCJcXHhCRVwiLGZyYWMzNTpcIlxcdTIxNTdcIixmcmFjMzg6XCJcXHUyMTVDXCIsZnJhYzQ1OlwiXFx1MjE1OFwiLGZyYWM1NjpcIlxcdTIxNUFcIixmcmFjNTg6XCJcXHUyMTVEXCIsZnJhYzc4OlwiXFx1MjE1RVwiLGZyYXNsOlwiXFx1MjA0NFwiLGZyb3duOlwiXFx1MjMyMlwiLEZzY3I6XCJcXHUyMTMxXCIsZnNjcjpcIlxcdXsxRDRCQn1cIixnYWN1dGU6XCJcXHUwMUY1XCIsR2FtbWE6XCJcXHUwMzkzXCIsZ2FtbWE6XCJcXHUwM0IzXCIsR2FtbWFkOlwiXFx1MDNEQ1wiLGdhbW1hZDpcIlxcdTAzRERcIixnYXA6XCJcXHUyQTg2XCIsR2JyZXZlOlwiXFx1MDExRVwiLGdicmV2ZTpcIlxcdTAxMUZcIixHY2VkaWw6XCJcXHUwMTIyXCIsR2NpcmM6XCJcXHUwMTFDXCIsZ2NpcmM6XCJcXHUwMTFEXCIsR2N5OlwiXFx1MDQxM1wiLGdjeTpcIlxcdTA0MzNcIixHZG90OlwiXFx1MDEyMFwiLGdkb3Q6XCJcXHUwMTIxXCIsZ0U6XCJcXHUyMjY3XCIsZ2U6XCJcXHUyMjY1XCIsZ0VsOlwiXFx1MkE4Q1wiLGdlbDpcIlxcdTIyREJcIixnZXE6XCJcXHUyMjY1XCIsZ2VxcTpcIlxcdTIyNjdcIixnZXFzbGFudDpcIlxcdTJBN0VcIixnZXM6XCJcXHUyQTdFXCIsZ2VzY2M6XCJcXHUyQUE5XCIsZ2VzZG90OlwiXFx1MkE4MFwiLGdlc2RvdG86XCJcXHUyQTgyXCIsZ2VzZG90b2w6XCJcXHUyQTg0XCIsZ2VzbDpcIlxcdTIyREJcXHVGRTAwXCIsZ2VzbGVzOlwiXFx1MkE5NFwiLEdmcjpcIlxcdXsxRDUwQX1cIixnZnI6XCJcXHV7MUQ1MjR9XCIsR2c6XCJcXHUyMkQ5XCIsZ2c6XCJcXHUyMjZCXCIsZ2dnOlwiXFx1MjJEOVwiLGdpbWVsOlwiXFx1MjEzN1wiLEdKY3k6XCJcXHUwNDAzXCIsZ2pjeTpcIlxcdTA0NTNcIixnbDpcIlxcdTIyNzdcIixnbGE6XCJcXHUyQUE1XCIsZ2xFOlwiXFx1MkE5MlwiLGdsajpcIlxcdTJBQTRcIixnbmFwOlwiXFx1MkE4QVwiLGduYXBwcm94OlwiXFx1MkE4QVwiLGduRTpcIlxcdTIyNjlcIixnbmU6XCJcXHUyQTg4XCIsZ25lcTpcIlxcdTJBODhcIixnbmVxcTpcIlxcdTIyNjlcIixnbnNpbTpcIlxcdTIyRTdcIixHb3BmOlwiXFx1ezFENTNFfVwiLGdvcGY6XCJcXHV7MUQ1NTh9XCIsZ3JhdmU6XCJgXCIsR3JlYXRlckVxdWFsOlwiXFx1MjI2NVwiLEdyZWF0ZXJFcXVhbExlc3M6XCJcXHUyMkRCXCIsR3JlYXRlckZ1bGxFcXVhbDpcIlxcdTIyNjdcIixHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcIixHcmVhdGVyTGVzczpcIlxcdTIyNzdcIixHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcIixHcmVhdGVyVGlsZGU6XCJcXHUyMjczXCIsR3NjcjpcIlxcdXsxRDRBMn1cIixnc2NyOlwiXFx1MjEwQVwiLGdzaW06XCJcXHUyMjczXCIsZ3NpbWU6XCJcXHUyQThFXCIsZ3NpbWw6XCJcXHUyQTkwXCIsR1Q6XCI+XCIsR3Q6XCJcXHUyMjZCXCIsZ3Q6XCI+XCIsZ3RjYzpcIlxcdTJBQTdcIixndGNpcjpcIlxcdTJBN0FcIixndGRvdDpcIlxcdTIyRDdcIixndGxQYXI6XCJcXHUyOTk1XCIsZ3RxdWVzdDpcIlxcdTJBN0NcIixndHJhcHByb3g6XCJcXHUyQTg2XCIsZ3RyYXJyOlwiXFx1Mjk3OFwiLGd0cmRvdDpcIlxcdTIyRDdcIixndHJlcWxlc3M6XCJcXHUyMkRCXCIsZ3RyZXFxbGVzczpcIlxcdTJBOENcIixndHJsZXNzOlwiXFx1MjI3N1wiLGd0cnNpbTpcIlxcdTIyNzNcIixndmVydG5lcXE6XCJcXHUyMjY5XFx1RkUwMFwiLGd2bkU6XCJcXHUyMjY5XFx1RkUwMFwiLEhhY2VrOlwiXFx1MDJDN1wiLGhhaXJzcDpcIlxcdTIwMEFcIixoYWxmOlwiXFx4QkRcIixoYW1pbHQ6XCJcXHUyMTBCXCIsSEFSRGN5OlwiXFx1MDQyQVwiLGhhcmRjeTpcIlxcdTA0NEFcIixoQXJyOlwiXFx1MjFENFwiLGhhcnI6XCJcXHUyMTk0XCIsaGFycmNpcjpcIlxcdTI5NDhcIixoYXJydzpcIlxcdTIxQURcIixIYXQ6XCJeXCIsaGJhcjpcIlxcdTIxMEZcIixIY2lyYzpcIlxcdTAxMjRcIixoY2lyYzpcIlxcdTAxMjVcIixoZWFydHM6XCJcXHUyNjY1XCIsaGVhcnRzdWl0OlwiXFx1MjY2NVwiLGhlbGxpcDpcIlxcdTIwMjZcIixoZXJjb246XCJcXHUyMkI5XCIsSGZyOlwiXFx1MjEwQ1wiLGhmcjpcIlxcdXsxRDUyNX1cIixIaWxiZXJ0U3BhY2U6XCJcXHUyMTBCXCIsaGtzZWFyb3c6XCJcXHUyOTI1XCIsaGtzd2Fyb3c6XCJcXHUyOTI2XCIsaG9hcnI6XCJcXHUyMUZGXCIsaG9tdGh0OlwiXFx1MjIzQlwiLGhvb2tsZWZ0YXJyb3c6XCJcXHUyMUE5XCIsaG9va3JpZ2h0YXJyb3c6XCJcXHUyMUFBXCIsSG9wZjpcIlxcdTIxMERcIixob3BmOlwiXFx1ezFENTU5fVwiLGhvcmJhcjpcIlxcdTIwMTVcIixIb3Jpem9udGFsTGluZTpcIlxcdTI1MDBcIixIc2NyOlwiXFx1MjEwQlwiLGhzY3I6XCJcXHV7MUQ0QkR9XCIsaHNsYXNoOlwiXFx1MjEwRlwiLEhzdHJvazpcIlxcdTAxMjZcIixoc3Ryb2s6XCJcXHUwMTI3XCIsSHVtcERvd25IdW1wOlwiXFx1MjI0RVwiLEh1bXBFcXVhbDpcIlxcdTIyNEZcIixoeWJ1bGw6XCJcXHUyMDQzXCIsaHlwaGVuOlwiXFx1MjAxMFwiLElhY3V0ZTpcIlxceENEXCIsaWFjdXRlOlwiXFx4RURcIixpYzpcIlxcdTIwNjNcIixJY2lyYzpcIlxceENFXCIsaWNpcmM6XCJcXHhFRVwiLEljeTpcIlxcdTA0MThcIixpY3k6XCJcXHUwNDM4XCIsSWRvdDpcIlxcdTAxMzBcIixJRWN5OlwiXFx1MDQxNVwiLGllY3k6XCJcXHUwNDM1XCIsaWV4Y2w6XCJcXHhBMVwiLGlmZjpcIlxcdTIxRDRcIixJZnI6XCJcXHUyMTExXCIsaWZyOlwiXFx1ezFENTI2fVwiLElncmF2ZTpcIlxceENDXCIsaWdyYXZlOlwiXFx4RUNcIixpaTpcIlxcdTIxNDhcIixpaWlpbnQ6XCJcXHUyQTBDXCIsaWlpbnQ6XCJcXHUyMjJEXCIsaWluZmluOlwiXFx1MjlEQ1wiLGlpb3RhOlwiXFx1MjEyOVwiLElKbGlnOlwiXFx1MDEzMlwiLGlqbGlnOlwiXFx1MDEzM1wiLEltOlwiXFx1MjExMVwiLEltYWNyOlwiXFx1MDEyQVwiLGltYWNyOlwiXFx1MDEyQlwiLGltYWdlOlwiXFx1MjExMVwiLEltYWdpbmFyeUk6XCJcXHUyMTQ4XCIsaW1hZ2xpbmU6XCJcXHUyMTEwXCIsaW1hZ3BhcnQ6XCJcXHUyMTExXCIsaW1hdGg6XCJcXHUwMTMxXCIsaW1vZjpcIlxcdTIyQjdcIixpbXBlZDpcIlxcdTAxQjVcIixJbXBsaWVzOlwiXFx1MjFEMlwiLGluOlwiXFx1MjIwOFwiLGluY2FyZTpcIlxcdTIxMDVcIixpbmZpbjpcIlxcdTIyMUVcIixpbmZpbnRpZTpcIlxcdTI5RERcIixpbm9kb3Q6XCJcXHUwMTMxXCIsSW50OlwiXFx1MjIyQ1wiLGludDpcIlxcdTIyMkJcIixpbnRjYWw6XCJcXHUyMkJBXCIsaW50ZWdlcnM6XCJcXHUyMTI0XCIsSW50ZWdyYWw6XCJcXHUyMjJCXCIsaW50ZXJjYWw6XCJcXHUyMkJBXCIsSW50ZXJzZWN0aW9uOlwiXFx1MjJDMlwiLGludGxhcmhrOlwiXFx1MkExN1wiLGludHByb2Q6XCJcXHUyQTNDXCIsSW52aXNpYmxlQ29tbWE6XCJcXHUyMDYzXCIsSW52aXNpYmxlVGltZXM6XCJcXHUyMDYyXCIsSU9jeTpcIlxcdTA0MDFcIixpb2N5OlwiXFx1MDQ1MVwiLElvZ29uOlwiXFx1MDEyRVwiLGlvZ29uOlwiXFx1MDEyRlwiLElvcGY6XCJcXHV7MUQ1NDB9XCIsaW9wZjpcIlxcdXsxRDU1QX1cIixJb3RhOlwiXFx1MDM5OVwiLGlvdGE6XCJcXHUwM0I5XCIsaXByb2Q6XCJcXHUyQTNDXCIsaXF1ZXN0OlwiXFx4QkZcIixJc2NyOlwiXFx1MjExMFwiLGlzY3I6XCJcXHV7MUQ0QkV9XCIsaXNpbjpcIlxcdTIyMDhcIixpc2luZG90OlwiXFx1MjJGNVwiLGlzaW5FOlwiXFx1MjJGOVwiLGlzaW5zOlwiXFx1MjJGNFwiLGlzaW5zdjpcIlxcdTIyRjNcIixpc2ludjpcIlxcdTIyMDhcIixpdDpcIlxcdTIwNjJcIixJdGlsZGU6XCJcXHUwMTI4XCIsaXRpbGRlOlwiXFx1MDEyOVwiLEl1a2N5OlwiXFx1MDQwNlwiLGl1a2N5OlwiXFx1MDQ1NlwiLEl1bWw6XCJcXHhDRlwiLGl1bWw6XCJcXHhFRlwiLEpjaXJjOlwiXFx1MDEzNFwiLGpjaXJjOlwiXFx1MDEzNVwiLEpjeTpcIlxcdTA0MTlcIixqY3k6XCJcXHUwNDM5XCIsSmZyOlwiXFx1ezFENTBEfVwiLGpmcjpcIlxcdXsxRDUyN31cIixqbWF0aDpcIlxcdTAyMzdcIixKb3BmOlwiXFx1ezFENTQxfVwiLGpvcGY6XCJcXHV7MUQ1NUJ9XCIsSnNjcjpcIlxcdXsxRDRBNX1cIixqc2NyOlwiXFx1ezFENEJGfVwiLEpzZXJjeTpcIlxcdTA0MDhcIixqc2VyY3k6XCJcXHUwNDU4XCIsSnVrY3k6XCJcXHUwNDA0XCIsanVrY3k6XCJcXHUwNDU0XCIsS2FwcGE6XCJcXHUwMzlBXCIsa2FwcGE6XCJcXHUwM0JBXCIsa2FwcGF2OlwiXFx1MDNGMFwiLEtjZWRpbDpcIlxcdTAxMzZcIixrY2VkaWw6XCJcXHUwMTM3XCIsS2N5OlwiXFx1MDQxQVwiLGtjeTpcIlxcdTA0M0FcIixLZnI6XCJcXHV7MUQ1MEV9XCIsa2ZyOlwiXFx1ezFENTI4fVwiLGtncmVlbjpcIlxcdTAxMzhcIixLSGN5OlwiXFx1MDQyNVwiLGtoY3k6XCJcXHUwNDQ1XCIsS0pjeTpcIlxcdTA0MENcIixramN5OlwiXFx1MDQ1Q1wiLEtvcGY6XCJcXHV7MUQ1NDJ9XCIsa29wZjpcIlxcdXsxRDU1Q31cIixLc2NyOlwiXFx1ezFENEE2fVwiLGtzY3I6XCJcXHV7MUQ0QzB9XCIsbEFhcnI6XCJcXHUyMURBXCIsTGFjdXRlOlwiXFx1MDEzOVwiLGxhY3V0ZTpcIlxcdTAxM0FcIixsYWVtcHR5djpcIlxcdTI5QjRcIixsYWdyYW46XCJcXHUyMTEyXCIsTGFtYmRhOlwiXFx1MDM5QlwiLGxhbWJkYTpcIlxcdTAzQkJcIixMYW5nOlwiXFx1MjdFQVwiLGxhbmc6XCJcXHUyN0U4XCIsbGFuZ2Q6XCJcXHUyOTkxXCIsbGFuZ2xlOlwiXFx1MjdFOFwiLGxhcDpcIlxcdTJBODVcIixMYXBsYWNldHJmOlwiXFx1MjExMlwiLGxhcXVvOlwiXFx4QUJcIixMYXJyOlwiXFx1MjE5RVwiLGxBcnI6XCJcXHUyMUQwXCIsbGFycjpcIlxcdTIxOTBcIixsYXJyYjpcIlxcdTIxRTRcIixsYXJyYmZzOlwiXFx1MjkxRlwiLGxhcnJmczpcIlxcdTI5MURcIixsYXJyaGs6XCJcXHUyMUE5XCIsbGFycmxwOlwiXFx1MjFBQlwiLGxhcnJwbDpcIlxcdTI5MzlcIixsYXJyc2ltOlwiXFx1Mjk3M1wiLGxhcnJ0bDpcIlxcdTIxQTJcIixsYXQ6XCJcXHUyQUFCXCIsbEF0YWlsOlwiXFx1MjkxQlwiLGxhdGFpbDpcIlxcdTI5MTlcIixsYXRlOlwiXFx1MkFBRFwiLGxhdGVzOlwiXFx1MkFBRFxcdUZFMDBcIixsQmFycjpcIlxcdTI5MEVcIixsYmFycjpcIlxcdTI5MENcIixsYmJyazpcIlxcdTI3NzJcIixsYnJhY2U6XCJ7XCIsbGJyYWNrOlwiW1wiLGxicmtlOlwiXFx1Mjk4QlwiLGxicmtzbGQ6XCJcXHUyOThGXCIsbGJya3NsdTpcIlxcdTI5OERcIixMY2Fyb246XCJcXHUwMTNEXCIsbGNhcm9uOlwiXFx1MDEzRVwiLExjZWRpbDpcIlxcdTAxM0JcIixsY2VkaWw6XCJcXHUwMTNDXCIsbGNlaWw6XCJcXHUyMzA4XCIsbGN1YjpcIntcIixMY3k6XCJcXHUwNDFCXCIsbGN5OlwiXFx1MDQzQlwiLGxkY2E6XCJcXHUyOTM2XCIsbGRxdW86XCJcXHUyMDFDXCIsbGRxdW9yOlwiXFx1MjAxRVwiLGxkcmRoYXI6XCJcXHUyOTY3XCIsbGRydXNoYXI6XCJcXHUyOTRCXCIsbGRzaDpcIlxcdTIxQjJcIixsRTpcIlxcdTIyNjZcIixsZTpcIlxcdTIyNjRcIixMZWZ0QW5nbGVCcmFja2V0OlwiXFx1MjdFOFwiLExlZnRBcnJvdzpcIlxcdTIxOTBcIixMZWZ0YXJyb3c6XCJcXHUyMUQwXCIsbGVmdGFycm93OlwiXFx1MjE5MFwiLExlZnRBcnJvd0JhcjpcIlxcdTIxRTRcIixMZWZ0QXJyb3dSaWdodEFycm93OlwiXFx1MjFDNlwiLGxlZnRhcnJvd3RhaWw6XCJcXHUyMUEyXCIsTGVmdENlaWxpbmc6XCJcXHUyMzA4XCIsTGVmdERvdWJsZUJyYWNrZXQ6XCJcXHUyN0U2XCIsTGVmdERvd25UZWVWZWN0b3I6XCJcXHUyOTYxXCIsTGVmdERvd25WZWN0b3I6XCJcXHUyMUMzXCIsTGVmdERvd25WZWN0b3JCYXI6XCJcXHUyOTU5XCIsTGVmdEZsb29yOlwiXFx1MjMwQVwiLGxlZnRoYXJwb29uZG93bjpcIlxcdTIxQkRcIixsZWZ0aGFycG9vbnVwOlwiXFx1MjFCQ1wiLGxlZnRsZWZ0YXJyb3dzOlwiXFx1MjFDN1wiLExlZnRSaWdodEFycm93OlwiXFx1MjE5NFwiLExlZnRyaWdodGFycm93OlwiXFx1MjFENFwiLGxlZnRyaWdodGFycm93OlwiXFx1MjE5NFwiLGxlZnRyaWdodGFycm93czpcIlxcdTIxQzZcIixsZWZ0cmlnaHRoYXJwb29uczpcIlxcdTIxQ0JcIixsZWZ0cmlnaHRzcXVpZ2Fycm93OlwiXFx1MjFBRFwiLExlZnRSaWdodFZlY3RvcjpcIlxcdTI5NEVcIixMZWZ0VGVlOlwiXFx1MjJBM1wiLExlZnRUZWVBcnJvdzpcIlxcdTIxQTRcIixMZWZ0VGVlVmVjdG9yOlwiXFx1Mjk1QVwiLGxlZnR0aHJlZXRpbWVzOlwiXFx1MjJDQlwiLExlZnRUcmlhbmdsZTpcIlxcdTIyQjJcIixMZWZ0VHJpYW5nbGVCYXI6XCJcXHUyOUNGXCIsTGVmdFRyaWFuZ2xlRXF1YWw6XCJcXHUyMkI0XCIsTGVmdFVwRG93blZlY3RvcjpcIlxcdTI5NTFcIixMZWZ0VXBUZWVWZWN0b3I6XCJcXHUyOTYwXCIsTGVmdFVwVmVjdG9yOlwiXFx1MjFCRlwiLExlZnRVcFZlY3RvckJhcjpcIlxcdTI5NThcIixMZWZ0VmVjdG9yOlwiXFx1MjFCQ1wiLExlZnRWZWN0b3JCYXI6XCJcXHUyOTUyXCIsbEVnOlwiXFx1MkE4QlwiLGxlZzpcIlxcdTIyREFcIixsZXE6XCJcXHUyMjY0XCIsbGVxcTpcIlxcdTIyNjZcIixsZXFzbGFudDpcIlxcdTJBN0RcIixsZXM6XCJcXHUyQTdEXCIsbGVzY2M6XCJcXHUyQUE4XCIsbGVzZG90OlwiXFx1MkE3RlwiLGxlc2RvdG86XCJcXHUyQTgxXCIsbGVzZG90b3I6XCJcXHUyQTgzXCIsbGVzZzpcIlxcdTIyREFcXHVGRTAwXCIsbGVzZ2VzOlwiXFx1MkE5M1wiLGxlc3NhcHByb3g6XCJcXHUyQTg1XCIsbGVzc2RvdDpcIlxcdTIyRDZcIixsZXNzZXFndHI6XCJcXHUyMkRBXCIsbGVzc2VxcWd0cjpcIlxcdTJBOEJcIixMZXNzRXF1YWxHcmVhdGVyOlwiXFx1MjJEQVwiLExlc3NGdWxsRXF1YWw6XCJcXHUyMjY2XCIsTGVzc0dyZWF0ZXI6XCJcXHUyMjc2XCIsbGVzc2d0cjpcIlxcdTIyNzZcIixMZXNzTGVzczpcIlxcdTJBQTFcIixsZXNzc2ltOlwiXFx1MjI3MlwiLExlc3NTbGFudEVxdWFsOlwiXFx1MkE3RFwiLExlc3NUaWxkZTpcIlxcdTIyNzJcIixsZmlzaHQ6XCJcXHUyOTdDXCIsbGZsb29yOlwiXFx1MjMwQVwiLExmcjpcIlxcdXsxRDUwRn1cIixsZnI6XCJcXHV7MUQ1Mjl9XCIsbGc6XCJcXHUyMjc2XCIsbGdFOlwiXFx1MkE5MVwiLGxIYXI6XCJcXHUyOTYyXCIsbGhhcmQ6XCJcXHUyMUJEXCIsbGhhcnU6XCJcXHUyMUJDXCIsbGhhcnVsOlwiXFx1Mjk2QVwiLGxoYmxrOlwiXFx1MjU4NFwiLExKY3k6XCJcXHUwNDA5XCIsbGpjeTpcIlxcdTA0NTlcIixMbDpcIlxcdTIyRDhcIixsbDpcIlxcdTIyNkFcIixsbGFycjpcIlxcdTIxQzdcIixsbGNvcm5lcjpcIlxcdTIzMUVcIixMbGVmdGFycm93OlwiXFx1MjFEQVwiLGxsaGFyZDpcIlxcdTI5NkJcIixsbHRyaTpcIlxcdTI1RkFcIixMbWlkb3Q6XCJcXHUwMTNGXCIsbG1pZG90OlwiXFx1MDE0MFwiLGxtb3VzdDpcIlxcdTIzQjBcIixsbW91c3RhY2hlOlwiXFx1MjNCMFwiLGxuYXA6XCJcXHUyQTg5XCIsbG5hcHByb3g6XCJcXHUyQTg5XCIsbG5FOlwiXFx1MjI2OFwiLGxuZTpcIlxcdTJBODdcIixsbmVxOlwiXFx1MkE4N1wiLGxuZXFxOlwiXFx1MjI2OFwiLGxuc2ltOlwiXFx1MjJFNlwiLGxvYW5nOlwiXFx1MjdFQ1wiLGxvYXJyOlwiXFx1MjFGRFwiLGxvYnJrOlwiXFx1MjdFNlwiLExvbmdMZWZ0QXJyb3c6XCJcXHUyN0Y1XCIsTG9uZ2xlZnRhcnJvdzpcIlxcdTI3RjhcIixsb25nbGVmdGFycm93OlwiXFx1MjdGNVwiLExvbmdMZWZ0UmlnaHRBcnJvdzpcIlxcdTI3RjdcIixMb25nbGVmdHJpZ2h0YXJyb3c6XCJcXHUyN0ZBXCIsbG9uZ2xlZnRyaWdodGFycm93OlwiXFx1MjdGN1wiLGxvbmdtYXBzdG86XCJcXHUyN0ZDXCIsTG9uZ1JpZ2h0QXJyb3c6XCJcXHUyN0Y2XCIsTG9uZ3JpZ2h0YXJyb3c6XCJcXHUyN0Y5XCIsbG9uZ3JpZ2h0YXJyb3c6XCJcXHUyN0Y2XCIsbG9vcGFycm93bGVmdDpcIlxcdTIxQUJcIixsb29wYXJyb3dyaWdodDpcIlxcdTIxQUNcIixsb3BhcjpcIlxcdTI5ODVcIixMb3BmOlwiXFx1ezFENTQzfVwiLGxvcGY6XCJcXHV7MUQ1NUR9XCIsbG9wbHVzOlwiXFx1MkEyRFwiLGxvdGltZXM6XCJcXHUyQTM0XCIsbG93YXN0OlwiXFx1MjIxN1wiLGxvd2JhcjpcIl9cIixMb3dlckxlZnRBcnJvdzpcIlxcdTIxOTlcIixMb3dlclJpZ2h0QXJyb3c6XCJcXHUyMTk4XCIsbG96OlwiXFx1MjVDQVwiLGxvemVuZ2U6XCJcXHUyNUNBXCIsbG96ZjpcIlxcdTI5RUJcIixscGFyOlwiKFwiLGxwYXJsdDpcIlxcdTI5OTNcIixscmFycjpcIlxcdTIxQzZcIixscmNvcm5lcjpcIlxcdTIzMUZcIixscmhhcjpcIlxcdTIxQ0JcIixscmhhcmQ6XCJcXHUyOTZEXCIsbHJtOlwiXFx1MjAwRVwiLGxydHJpOlwiXFx1MjJCRlwiLGxzYXF1bzpcIlxcdTIwMzlcIixMc2NyOlwiXFx1MjExMlwiLGxzY3I6XCJcXHV7MUQ0QzF9XCIsTHNoOlwiXFx1MjFCMFwiLGxzaDpcIlxcdTIxQjBcIixsc2ltOlwiXFx1MjI3MlwiLGxzaW1lOlwiXFx1MkE4RFwiLGxzaW1nOlwiXFx1MkE4RlwiLGxzcWI6XCJbXCIsbHNxdW86XCJcXHUyMDE4XCIsbHNxdW9yOlwiXFx1MjAxQVwiLExzdHJvazpcIlxcdTAxNDFcIixsc3Ryb2s6XCJcXHUwMTQyXCIsTFQ6XCI8XCIsTHQ6XCJcXHUyMjZBXCIsbHQ6XCI8XCIsbHRjYzpcIlxcdTJBQTZcIixsdGNpcjpcIlxcdTJBNzlcIixsdGRvdDpcIlxcdTIyRDZcIixsdGhyZWU6XCJcXHUyMkNCXCIsbHRpbWVzOlwiXFx1MjJDOVwiLGx0bGFycjpcIlxcdTI5NzZcIixsdHF1ZXN0OlwiXFx1MkE3QlwiLGx0cmk6XCJcXHUyNUMzXCIsbHRyaWU6XCJcXHUyMkI0XCIsbHRyaWY6XCJcXHUyNUMyXCIsbHRyUGFyOlwiXFx1Mjk5NlwiLGx1cmRzaGFyOlwiXFx1Mjk0QVwiLGx1cnVoYXI6XCJcXHUyOTY2XCIsbHZlcnRuZXFxOlwiXFx1MjI2OFxcdUZFMDBcIixsdm5FOlwiXFx1MjI2OFxcdUZFMDBcIixtYWNyOlwiXFx4QUZcIixtYWxlOlwiXFx1MjY0MlwiLG1hbHQ6XCJcXHUyNzIwXCIsbWFsdGVzZTpcIlxcdTI3MjBcIixNYXA6XCJcXHUyOTA1XCIsbWFwOlwiXFx1MjFBNlwiLG1hcHN0bzpcIlxcdTIxQTZcIixtYXBzdG9kb3duOlwiXFx1MjFBN1wiLG1hcHN0b2xlZnQ6XCJcXHUyMUE0XCIsbWFwc3RvdXA6XCJcXHUyMUE1XCIsbWFya2VyOlwiXFx1MjVBRVwiLG1jb21tYTpcIlxcdTJBMjlcIixNY3k6XCJcXHUwNDFDXCIsbWN5OlwiXFx1MDQzQ1wiLG1kYXNoOlwiXFx1MjAxNFwiLG1ERG90OlwiXFx1MjIzQVwiLG1lYXN1cmVkYW5nbGU6XCJcXHUyMjIxXCIsTWVkaXVtU3BhY2U6XCJcXHUyMDVGXCIsTWVsbGludHJmOlwiXFx1MjEzM1wiLE1mcjpcIlxcdXsxRDUxMH1cIixtZnI6XCJcXHV7MUQ1MkF9XCIsbWhvOlwiXFx1MjEyN1wiLG1pY3JvOlwiXFx4QjVcIixtaWQ6XCJcXHUyMjIzXCIsbWlkYXN0OlwiKlwiLG1pZGNpcjpcIlxcdTJBRjBcIixtaWRkb3Q6XCJcXHhCN1wiLG1pbnVzOlwiXFx1MjIxMlwiLG1pbnVzYjpcIlxcdTIyOUZcIixtaW51c2Q6XCJcXHUyMjM4XCIsbWludXNkdTpcIlxcdTJBMkFcIixNaW51c1BsdXM6XCJcXHUyMjEzXCIsbWxjcDpcIlxcdTJBREJcIixtbGRyOlwiXFx1MjAyNlwiLG1ucGx1czpcIlxcdTIyMTNcIixtb2RlbHM6XCJcXHUyMkE3XCIsTW9wZjpcIlxcdXsxRDU0NH1cIixtb3BmOlwiXFx1ezFENTVFfVwiLG1wOlwiXFx1MjIxM1wiLE1zY3I6XCJcXHUyMTMzXCIsbXNjcjpcIlxcdXsxRDRDMn1cIixtc3Rwb3M6XCJcXHUyMjNFXCIsTXU6XCJcXHUwMzlDXCIsbXU6XCJcXHUwM0JDXCIsbXVsdGltYXA6XCJcXHUyMkI4XCIsbXVtYXA6XCJcXHUyMkI4XCIsbmFibGE6XCJcXHUyMjA3XCIsTmFjdXRlOlwiXFx1MDE0M1wiLG5hY3V0ZTpcIlxcdTAxNDRcIixuYW5nOlwiXFx1MjIyMFxcdTIwRDJcIixuYXA6XCJcXHUyMjQ5XCIsbmFwRTpcIlxcdTJBNzBcXHUwMzM4XCIsbmFwaWQ6XCJcXHUyMjRCXFx1MDMzOFwiLG5hcG9zOlwiXFx1MDE0OVwiLG5hcHByb3g6XCJcXHUyMjQ5XCIsbmF0dXI6XCJcXHUyNjZFXCIsbmF0dXJhbDpcIlxcdTI2NkVcIixuYXR1cmFsczpcIlxcdTIxMTVcIixuYnNwOlwiXFx4QTBcIixuYnVtcDpcIlxcdTIyNEVcXHUwMzM4XCIsbmJ1bXBlOlwiXFx1MjI0RlxcdTAzMzhcIixuY2FwOlwiXFx1MkE0M1wiLE5jYXJvbjpcIlxcdTAxNDdcIixuY2Fyb246XCJcXHUwMTQ4XCIsTmNlZGlsOlwiXFx1MDE0NVwiLG5jZWRpbDpcIlxcdTAxNDZcIixuY29uZzpcIlxcdTIyNDdcIixuY29uZ2RvdDpcIlxcdTJBNkRcXHUwMzM4XCIsbmN1cDpcIlxcdTJBNDJcIixOY3k6XCJcXHUwNDFEXCIsbmN5OlwiXFx1MDQzRFwiLG5kYXNoOlwiXFx1MjAxM1wiLG5lOlwiXFx1MjI2MFwiLG5lYXJoazpcIlxcdTI5MjRcIixuZUFycjpcIlxcdTIxRDdcIixuZWFycjpcIlxcdTIxOTdcIixuZWFycm93OlwiXFx1MjE5N1wiLG5lZG90OlwiXFx1MjI1MFxcdTAzMzhcIixOZWdhdGl2ZU1lZGl1bVNwYWNlOlwiXFx1MjAwQlwiLE5lZ2F0aXZlVGhpY2tTcGFjZTpcIlxcdTIwMEJcIixOZWdhdGl2ZVRoaW5TcGFjZTpcIlxcdTIwMEJcIixOZWdhdGl2ZVZlcnlUaGluU3BhY2U6XCJcXHUyMDBCXCIsbmVxdWl2OlwiXFx1MjI2MlwiLG5lc2VhcjpcIlxcdTI5MjhcIixuZXNpbTpcIlxcdTIyNDJcXHUwMzM4XCIsTmVzdGVkR3JlYXRlckdyZWF0ZXI6XCJcXHUyMjZCXCIsTmVzdGVkTGVzc0xlc3M6XCJcXHUyMjZBXCIsTmV3TGluZTpgXG5gLG5leGlzdDpcIlxcdTIyMDRcIixuZXhpc3RzOlwiXFx1MjIwNFwiLE5mcjpcIlxcdXsxRDUxMX1cIixuZnI6XCJcXHV7MUQ1MkJ9XCIsbmdFOlwiXFx1MjI2N1xcdTAzMzhcIixuZ2U6XCJcXHUyMjcxXCIsbmdlcTpcIlxcdTIyNzFcIixuZ2VxcTpcIlxcdTIyNjdcXHUwMzM4XCIsbmdlcXNsYW50OlwiXFx1MkE3RVxcdTAzMzhcIixuZ2VzOlwiXFx1MkE3RVxcdTAzMzhcIixuR2c6XCJcXHUyMkQ5XFx1MDMzOFwiLG5nc2ltOlwiXFx1MjI3NVwiLG5HdDpcIlxcdTIyNkJcXHUyMEQyXCIsbmd0OlwiXFx1MjI2RlwiLG5ndHI6XCJcXHUyMjZGXCIsbkd0djpcIlxcdTIyNkJcXHUwMzM4XCIsbmhBcnI6XCJcXHUyMUNFXCIsbmhhcnI6XCJcXHUyMUFFXCIsbmhwYXI6XCJcXHUyQUYyXCIsbmk6XCJcXHUyMjBCXCIsbmlzOlwiXFx1MjJGQ1wiLG5pc2Q6XCJcXHUyMkZBXCIsbml2OlwiXFx1MjIwQlwiLE5KY3k6XCJcXHUwNDBBXCIsbmpjeTpcIlxcdTA0NUFcIixubEFycjpcIlxcdTIxQ0RcIixubGFycjpcIlxcdTIxOUFcIixubGRyOlwiXFx1MjAyNVwiLG5sRTpcIlxcdTIyNjZcXHUwMzM4XCIsbmxlOlwiXFx1MjI3MFwiLG5MZWZ0YXJyb3c6XCJcXHUyMUNEXCIsbmxlZnRhcnJvdzpcIlxcdTIxOUFcIixuTGVmdHJpZ2h0YXJyb3c6XCJcXHUyMUNFXCIsbmxlZnRyaWdodGFycm93OlwiXFx1MjFBRVwiLG5sZXE6XCJcXHUyMjcwXCIsbmxlcXE6XCJcXHUyMjY2XFx1MDMzOFwiLG5sZXFzbGFudDpcIlxcdTJBN0RcXHUwMzM4XCIsbmxlczpcIlxcdTJBN0RcXHUwMzM4XCIsbmxlc3M6XCJcXHUyMjZFXCIsbkxsOlwiXFx1MjJEOFxcdTAzMzhcIixubHNpbTpcIlxcdTIyNzRcIixuTHQ6XCJcXHUyMjZBXFx1MjBEMlwiLG5sdDpcIlxcdTIyNkVcIixubHRyaTpcIlxcdTIyRUFcIixubHRyaWU6XCJcXHUyMkVDXCIsbkx0djpcIlxcdTIyNkFcXHUwMzM4XCIsbm1pZDpcIlxcdTIyMjRcIixOb0JyZWFrOlwiXFx1MjA2MFwiLE5vbkJyZWFraW5nU3BhY2U6XCJcXHhBMFwiLE5vcGY6XCJcXHUyMTE1XCIsbm9wZjpcIlxcdXsxRDU1Rn1cIixOb3Q6XCJcXHUyQUVDXCIsbm90OlwiXFx4QUNcIixOb3RDb25ncnVlbnQ6XCJcXHUyMjYyXCIsTm90Q3VwQ2FwOlwiXFx1MjI2RFwiLE5vdERvdWJsZVZlcnRpY2FsQmFyOlwiXFx1MjIyNlwiLE5vdEVsZW1lbnQ6XCJcXHUyMjA5XCIsTm90RXF1YWw6XCJcXHUyMjYwXCIsTm90RXF1YWxUaWxkZTpcIlxcdTIyNDJcXHUwMzM4XCIsTm90RXhpc3RzOlwiXFx1MjIwNFwiLE5vdEdyZWF0ZXI6XCJcXHUyMjZGXCIsTm90R3JlYXRlckVxdWFsOlwiXFx1MjI3MVwiLE5vdEdyZWF0ZXJGdWxsRXF1YWw6XCJcXHUyMjY3XFx1MDMzOFwiLE5vdEdyZWF0ZXJHcmVhdGVyOlwiXFx1MjI2QlxcdTAzMzhcIixOb3RHcmVhdGVyTGVzczpcIlxcdTIyNzlcIixOb3RHcmVhdGVyU2xhbnRFcXVhbDpcIlxcdTJBN0VcXHUwMzM4XCIsTm90R3JlYXRlclRpbGRlOlwiXFx1MjI3NVwiLE5vdEh1bXBEb3duSHVtcDpcIlxcdTIyNEVcXHUwMzM4XCIsTm90SHVtcEVxdWFsOlwiXFx1MjI0RlxcdTAzMzhcIixub3RpbjpcIlxcdTIyMDlcIixub3RpbmRvdDpcIlxcdTIyRjVcXHUwMzM4XCIsbm90aW5FOlwiXFx1MjJGOVxcdTAzMzhcIixub3RpbnZhOlwiXFx1MjIwOVwiLG5vdGludmI6XCJcXHUyMkY3XCIsbm90aW52YzpcIlxcdTIyRjZcIixOb3RMZWZ0VHJpYW5nbGU6XCJcXHUyMkVBXCIsTm90TGVmdFRyaWFuZ2xlQmFyOlwiXFx1MjlDRlxcdTAzMzhcIixOb3RMZWZ0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRUNcIixOb3RMZXNzOlwiXFx1MjI2RVwiLE5vdExlc3NFcXVhbDpcIlxcdTIyNzBcIixOb3RMZXNzR3JlYXRlcjpcIlxcdTIyNzhcIixOb3RMZXNzTGVzczpcIlxcdTIyNkFcXHUwMzM4XCIsTm90TGVzc1NsYW50RXF1YWw6XCJcXHUyQTdEXFx1MDMzOFwiLE5vdExlc3NUaWxkZTpcIlxcdTIyNzRcIixOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjpcIlxcdTJBQTJcXHUwMzM4XCIsTm90TmVzdGVkTGVzc0xlc3M6XCJcXHUyQUExXFx1MDMzOFwiLG5vdG5pOlwiXFx1MjIwQ1wiLG5vdG5pdmE6XCJcXHUyMjBDXCIsbm90bml2YjpcIlxcdTIyRkVcIixub3RuaXZjOlwiXFx1MjJGRFwiLE5vdFByZWNlZGVzOlwiXFx1MjI4MFwiLE5vdFByZWNlZGVzRXF1YWw6XCJcXHUyQUFGXFx1MDMzOFwiLE5vdFByZWNlZGVzU2xhbnRFcXVhbDpcIlxcdTIyRTBcIixOb3RSZXZlcnNlRWxlbWVudDpcIlxcdTIyMENcIixOb3RSaWdodFRyaWFuZ2xlOlwiXFx1MjJFQlwiLE5vdFJpZ2h0VHJpYW5nbGVCYXI6XCJcXHUyOUQwXFx1MDMzOFwiLE5vdFJpZ2h0VHJpYW5nbGVFcXVhbDpcIlxcdTIyRURcIixOb3RTcXVhcmVTdWJzZXQ6XCJcXHUyMjhGXFx1MDMzOFwiLE5vdFNxdWFyZVN1YnNldEVxdWFsOlwiXFx1MjJFMlwiLE5vdFNxdWFyZVN1cGVyc2V0OlwiXFx1MjI5MFxcdTAzMzhcIixOb3RTcXVhcmVTdXBlcnNldEVxdWFsOlwiXFx1MjJFM1wiLE5vdFN1YnNldDpcIlxcdTIyODJcXHUyMEQyXCIsTm90U3Vic2V0RXF1YWw6XCJcXHUyMjg4XCIsTm90U3VjY2VlZHM6XCJcXHUyMjgxXCIsTm90U3VjY2VlZHNFcXVhbDpcIlxcdTJBQjBcXHUwMzM4XCIsTm90U3VjY2VlZHNTbGFudEVxdWFsOlwiXFx1MjJFMVwiLE5vdFN1Y2NlZWRzVGlsZGU6XCJcXHUyMjdGXFx1MDMzOFwiLE5vdFN1cGVyc2V0OlwiXFx1MjI4M1xcdTIwRDJcIixOb3RTdXBlcnNldEVxdWFsOlwiXFx1MjI4OVwiLE5vdFRpbGRlOlwiXFx1MjI0MVwiLE5vdFRpbGRlRXF1YWw6XCJcXHUyMjQ0XCIsTm90VGlsZGVGdWxsRXF1YWw6XCJcXHUyMjQ3XCIsTm90VGlsZGVUaWxkZTpcIlxcdTIyNDlcIixOb3RWZXJ0aWNhbEJhcjpcIlxcdTIyMjRcIixucGFyOlwiXFx1MjIyNlwiLG5wYXJhbGxlbDpcIlxcdTIyMjZcIixucGFyc2w6XCJcXHUyQUZEXFx1MjBFNVwiLG5wYXJ0OlwiXFx1MjIwMlxcdTAzMzhcIixucG9saW50OlwiXFx1MkExNFwiLG5wcjpcIlxcdTIyODBcIixucHJjdWU6XCJcXHUyMkUwXCIsbnByZTpcIlxcdTJBQUZcXHUwMzM4XCIsbnByZWM6XCJcXHUyMjgwXCIsbnByZWNlcTpcIlxcdTJBQUZcXHUwMzM4XCIsbnJBcnI6XCJcXHUyMUNGXCIsbnJhcnI6XCJcXHUyMTlCXCIsbnJhcnJjOlwiXFx1MjkzM1xcdTAzMzhcIixucmFycnc6XCJcXHUyMTlEXFx1MDMzOFwiLG5SaWdodGFycm93OlwiXFx1MjFDRlwiLG5yaWdodGFycm93OlwiXFx1MjE5QlwiLG5ydHJpOlwiXFx1MjJFQlwiLG5ydHJpZTpcIlxcdTIyRURcIixuc2M6XCJcXHUyMjgxXCIsbnNjY3VlOlwiXFx1MjJFMVwiLG5zY2U6XCJcXHUyQUIwXFx1MDMzOFwiLE5zY3I6XCJcXHV7MUQ0QTl9XCIsbnNjcjpcIlxcdXsxRDRDM31cIixuc2hvcnRtaWQ6XCJcXHUyMjI0XCIsbnNob3J0cGFyYWxsZWw6XCJcXHUyMjI2XCIsbnNpbTpcIlxcdTIyNDFcIixuc2ltZTpcIlxcdTIyNDRcIixuc2ltZXE6XCJcXHUyMjQ0XCIsbnNtaWQ6XCJcXHUyMjI0XCIsbnNwYXI6XCJcXHUyMjI2XCIsbnNxc3ViZTpcIlxcdTIyRTJcIixuc3FzdXBlOlwiXFx1MjJFM1wiLG5zdWI6XCJcXHUyMjg0XCIsbnN1YkU6XCJcXHUyQUM1XFx1MDMzOFwiLG5zdWJlOlwiXFx1MjI4OFwiLG5zdWJzZXQ6XCJcXHUyMjgyXFx1MjBEMlwiLG5zdWJzZXRlcTpcIlxcdTIyODhcIixuc3Vic2V0ZXFxOlwiXFx1MkFDNVxcdTAzMzhcIixuc3VjYzpcIlxcdTIyODFcIixuc3VjY2VxOlwiXFx1MkFCMFxcdTAzMzhcIixuc3VwOlwiXFx1MjI4NVwiLG5zdXBFOlwiXFx1MkFDNlxcdTAzMzhcIixuc3VwZTpcIlxcdTIyODlcIixuc3Vwc2V0OlwiXFx1MjI4M1xcdTIwRDJcIixuc3Vwc2V0ZXE6XCJcXHUyMjg5XCIsbnN1cHNldGVxcTpcIlxcdTJBQzZcXHUwMzM4XCIsbnRnbDpcIlxcdTIyNzlcIixOdGlsZGU6XCJcXHhEMVwiLG50aWxkZTpcIlxceEYxXCIsbnRsZzpcIlxcdTIyNzhcIixudHJpYW5nbGVsZWZ0OlwiXFx1MjJFQVwiLG50cmlhbmdsZWxlZnRlcTpcIlxcdTIyRUNcIixudHJpYW5nbGVyaWdodDpcIlxcdTIyRUJcIixudHJpYW5nbGVyaWdodGVxOlwiXFx1MjJFRFwiLE51OlwiXFx1MDM5RFwiLG51OlwiXFx1MDNCRFwiLG51bTpcIiNcIixudW1lcm86XCJcXHUyMTE2XCIsbnVtc3A6XCJcXHUyMDA3XCIsbnZhcDpcIlxcdTIyNERcXHUyMEQyXCIsblZEYXNoOlwiXFx1MjJBRlwiLG5WZGFzaDpcIlxcdTIyQUVcIixudkRhc2g6XCJcXHUyMkFEXCIsbnZkYXNoOlwiXFx1MjJBQ1wiLG52Z2U6XCJcXHUyMjY1XFx1MjBEMlwiLG52Z3Q6XCI+XFx1MjBEMlwiLG52SGFycjpcIlxcdTI5MDRcIixudmluZmluOlwiXFx1MjlERVwiLG52bEFycjpcIlxcdTI5MDJcIixudmxlOlwiXFx1MjI2NFxcdTIwRDJcIixudmx0OlwiPFxcdTIwRDJcIixudmx0cmllOlwiXFx1MjJCNFxcdTIwRDJcIixudnJBcnI6XCJcXHUyOTAzXCIsbnZydHJpZTpcIlxcdTIyQjVcXHUyMEQyXCIsbnZzaW06XCJcXHUyMjNDXFx1MjBEMlwiLG53YXJoazpcIlxcdTI5MjNcIixud0FycjpcIlxcdTIxRDZcIixud2FycjpcIlxcdTIxOTZcIixud2Fycm93OlwiXFx1MjE5NlwiLG53bmVhcjpcIlxcdTI5MjdcIixPYWN1dGU6XCJcXHhEM1wiLG9hY3V0ZTpcIlxceEYzXCIsb2FzdDpcIlxcdTIyOUJcIixvY2lyOlwiXFx1MjI5QVwiLE9jaXJjOlwiXFx4RDRcIixvY2lyYzpcIlxceEY0XCIsT2N5OlwiXFx1MDQxRVwiLG9jeTpcIlxcdTA0M0VcIixvZGFzaDpcIlxcdTIyOURcIixPZGJsYWM6XCJcXHUwMTUwXCIsb2RibGFjOlwiXFx1MDE1MVwiLG9kaXY6XCJcXHUyQTM4XCIsb2RvdDpcIlxcdTIyOTlcIixvZHNvbGQ6XCJcXHUyOUJDXCIsT0VsaWc6XCJcXHUwMTUyXCIsb2VsaWc6XCJcXHUwMTUzXCIsb2ZjaXI6XCJcXHUyOUJGXCIsT2ZyOlwiXFx1ezFENTEyfVwiLG9mcjpcIlxcdXsxRDUyQ31cIixvZ29uOlwiXFx1MDJEQlwiLE9ncmF2ZTpcIlxceEQyXCIsb2dyYXZlOlwiXFx4RjJcIixvZ3Q6XCJcXHUyOUMxXCIsb2hiYXI6XCJcXHUyOUI1XCIsb2htOlwiXFx1MDNBOVwiLG9pbnQ6XCJcXHUyMjJFXCIsb2xhcnI6XCJcXHUyMUJBXCIsb2xjaXI6XCJcXHUyOUJFXCIsb2xjcm9zczpcIlxcdTI5QkJcIixvbGluZTpcIlxcdTIwM0VcIixvbHQ6XCJcXHUyOUMwXCIsT21hY3I6XCJcXHUwMTRDXCIsb21hY3I6XCJcXHUwMTREXCIsT21lZ2E6XCJcXHUwM0E5XCIsb21lZ2E6XCJcXHUwM0M5XCIsT21pY3JvbjpcIlxcdTAzOUZcIixvbWljcm9uOlwiXFx1MDNCRlwiLG9taWQ6XCJcXHUyOUI2XCIsb21pbnVzOlwiXFx1MjI5NlwiLE9vcGY6XCJcXHV7MUQ1NDZ9XCIsb29wZjpcIlxcdXsxRDU2MH1cIixvcGFyOlwiXFx1MjlCN1wiLE9wZW5DdXJseURvdWJsZVF1b3RlOlwiXFx1MjAxQ1wiLE9wZW5DdXJseVF1b3RlOlwiXFx1MjAxOFwiLG9wZXJwOlwiXFx1MjlCOVwiLG9wbHVzOlwiXFx1MjI5NVwiLE9yOlwiXFx1MkE1NFwiLG9yOlwiXFx1MjIyOFwiLG9yYXJyOlwiXFx1MjFCQlwiLG9yZDpcIlxcdTJBNURcIixvcmRlcjpcIlxcdTIxMzRcIixvcmRlcm9mOlwiXFx1MjEzNFwiLG9yZGY6XCJcXHhBQVwiLG9yZG06XCJcXHhCQVwiLG9yaWdvZjpcIlxcdTIyQjZcIixvcm9yOlwiXFx1MkE1NlwiLG9yc2xvcGU6XCJcXHUyQTU3XCIsb3J2OlwiXFx1MkE1QlwiLG9TOlwiXFx1MjRDOFwiLE9zY3I6XCJcXHV7MUQ0QUF9XCIsb3NjcjpcIlxcdTIxMzRcIixPc2xhc2g6XCJcXHhEOFwiLG9zbGFzaDpcIlxceEY4XCIsb3NvbDpcIlxcdTIyOThcIixPdGlsZGU6XCJcXHhENVwiLG90aWxkZTpcIlxceEY1XCIsT3RpbWVzOlwiXFx1MkEzN1wiLG90aW1lczpcIlxcdTIyOTdcIixvdGltZXNhczpcIlxcdTJBMzZcIixPdW1sOlwiXFx4RDZcIixvdW1sOlwiXFx4RjZcIixvdmJhcjpcIlxcdTIzM0RcIixPdmVyQmFyOlwiXFx1MjAzRVwiLE92ZXJCcmFjZTpcIlxcdTIzREVcIixPdmVyQnJhY2tldDpcIlxcdTIzQjRcIixPdmVyUGFyZW50aGVzaXM6XCJcXHUyM0RDXCIscGFyOlwiXFx1MjIyNVwiLHBhcmE6XCJcXHhCNlwiLHBhcmFsbGVsOlwiXFx1MjIyNVwiLHBhcnNpbTpcIlxcdTJBRjNcIixwYXJzbDpcIlxcdTJBRkRcIixwYXJ0OlwiXFx1MjIwMlwiLFBhcnRpYWxEOlwiXFx1MjIwMlwiLFBjeTpcIlxcdTA0MUZcIixwY3k6XCJcXHUwNDNGXCIscGVyY250OlwiJVwiLHBlcmlvZDpcIi5cIixwZXJtaWw6XCJcXHUyMDMwXCIscGVycDpcIlxcdTIyQTVcIixwZXJ0ZW5rOlwiXFx1MjAzMVwiLFBmcjpcIlxcdXsxRDUxM31cIixwZnI6XCJcXHV7MUQ1MkR9XCIsUGhpOlwiXFx1MDNBNlwiLHBoaTpcIlxcdTAzQzZcIixwaGl2OlwiXFx1MDNENVwiLHBobW1hdDpcIlxcdTIxMzNcIixwaG9uZTpcIlxcdTI2MEVcIixQaTpcIlxcdTAzQTBcIixwaTpcIlxcdTAzQzBcIixwaXRjaGZvcms6XCJcXHUyMkQ0XCIscGl2OlwiXFx1MDNENlwiLHBsYW5jazpcIlxcdTIxMEZcIixwbGFuY2toOlwiXFx1MjEwRVwiLHBsYW5rdjpcIlxcdTIxMEZcIixwbHVzOlwiK1wiLHBsdXNhY2lyOlwiXFx1MkEyM1wiLHBsdXNiOlwiXFx1MjI5RVwiLHBsdXNjaXI6XCJcXHUyQTIyXCIscGx1c2RvOlwiXFx1MjIxNFwiLHBsdXNkdTpcIlxcdTJBMjVcIixwbHVzZTpcIlxcdTJBNzJcIixQbHVzTWludXM6XCJcXHhCMVwiLHBsdXNtbjpcIlxceEIxXCIscGx1c3NpbTpcIlxcdTJBMjZcIixwbHVzdHdvOlwiXFx1MkEyN1wiLHBtOlwiXFx4QjFcIixQb2luY2FyZXBsYW5lOlwiXFx1MjEwQ1wiLHBvaW50aW50OlwiXFx1MkExNVwiLFBvcGY6XCJcXHUyMTE5XCIscG9wZjpcIlxcdXsxRDU2MX1cIixwb3VuZDpcIlxceEEzXCIsUHI6XCJcXHUyQUJCXCIscHI6XCJcXHUyMjdBXCIscHJhcDpcIlxcdTJBQjdcIixwcmN1ZTpcIlxcdTIyN0NcIixwckU6XCJcXHUyQUIzXCIscHJlOlwiXFx1MkFBRlwiLHByZWM6XCJcXHUyMjdBXCIscHJlY2FwcHJveDpcIlxcdTJBQjdcIixwcmVjY3VybHllcTpcIlxcdTIyN0NcIixQcmVjZWRlczpcIlxcdTIyN0FcIixQcmVjZWRlc0VxdWFsOlwiXFx1MkFBRlwiLFByZWNlZGVzU2xhbnRFcXVhbDpcIlxcdTIyN0NcIixQcmVjZWRlc1RpbGRlOlwiXFx1MjI3RVwiLHByZWNlcTpcIlxcdTJBQUZcIixwcmVjbmFwcHJveDpcIlxcdTJBQjlcIixwcmVjbmVxcTpcIlxcdTJBQjVcIixwcmVjbnNpbTpcIlxcdTIyRThcIixwcmVjc2ltOlwiXFx1MjI3RVwiLFByaW1lOlwiXFx1MjAzM1wiLHByaW1lOlwiXFx1MjAzMlwiLHByaW1lczpcIlxcdTIxMTlcIixwcm5hcDpcIlxcdTJBQjlcIixwcm5FOlwiXFx1MkFCNVwiLHBybnNpbTpcIlxcdTIyRThcIixwcm9kOlwiXFx1MjIwRlwiLFByb2R1Y3Q6XCJcXHUyMjBGXCIscHJvZmFsYXI6XCJcXHUyMzJFXCIscHJvZmxpbmU6XCJcXHUyMzEyXCIscHJvZnN1cmY6XCJcXHUyMzEzXCIscHJvcDpcIlxcdTIyMURcIixQcm9wb3J0aW9uOlwiXFx1MjIzN1wiLFByb3BvcnRpb25hbDpcIlxcdTIyMURcIixwcm9wdG86XCJcXHUyMjFEXCIscHJzaW06XCJcXHUyMjdFXCIscHJ1cmVsOlwiXFx1MjJCMFwiLFBzY3I6XCJcXHV7MUQ0QUJ9XCIscHNjcjpcIlxcdXsxRDRDNX1cIixQc2k6XCJcXHUwM0E4XCIscHNpOlwiXFx1MDNDOFwiLHB1bmNzcDpcIlxcdTIwMDhcIixRZnI6XCJcXHV7MUQ1MTR9XCIscWZyOlwiXFx1ezFENTJFfVwiLHFpbnQ6XCJcXHUyQTBDXCIsUW9wZjpcIlxcdTIxMUFcIixxb3BmOlwiXFx1ezFENTYyfVwiLHFwcmltZTpcIlxcdTIwNTdcIixRc2NyOlwiXFx1ezFENEFDfVwiLHFzY3I6XCJcXHV7MUQ0QzZ9XCIscXVhdGVybmlvbnM6XCJcXHUyMTBEXCIscXVhdGludDpcIlxcdTJBMTZcIixxdWVzdDpcIj9cIixxdWVzdGVxOlwiXFx1MjI1RlwiLFFVT1Q6J1wiJyxxdW90OidcIicsckFhcnI6XCJcXHUyMURCXCIscmFjZTpcIlxcdTIyM0RcXHUwMzMxXCIsUmFjdXRlOlwiXFx1MDE1NFwiLHJhY3V0ZTpcIlxcdTAxNTVcIixyYWRpYzpcIlxcdTIyMUFcIixyYWVtcHR5djpcIlxcdTI5QjNcIixSYW5nOlwiXFx1MjdFQlwiLHJhbmc6XCJcXHUyN0U5XCIscmFuZ2Q6XCJcXHUyOTkyXCIscmFuZ2U6XCJcXHUyOUE1XCIscmFuZ2xlOlwiXFx1MjdFOVwiLHJhcXVvOlwiXFx4QkJcIixSYXJyOlwiXFx1MjFBMFwiLHJBcnI6XCJcXHUyMUQyXCIscmFycjpcIlxcdTIxOTJcIixyYXJyYXA6XCJcXHUyOTc1XCIscmFycmI6XCJcXHUyMUU1XCIscmFycmJmczpcIlxcdTI5MjBcIixyYXJyYzpcIlxcdTI5MzNcIixyYXJyZnM6XCJcXHUyOTFFXCIscmFycmhrOlwiXFx1MjFBQVwiLHJhcnJscDpcIlxcdTIxQUNcIixyYXJycGw6XCJcXHUyOTQ1XCIscmFycnNpbTpcIlxcdTI5NzRcIixSYXJydGw6XCJcXHUyOTE2XCIscmFycnRsOlwiXFx1MjFBM1wiLHJhcnJ3OlwiXFx1MjE5RFwiLHJBdGFpbDpcIlxcdTI5MUNcIixyYXRhaWw6XCJcXHUyOTFBXCIscmF0aW86XCJcXHUyMjM2XCIscmF0aW9uYWxzOlwiXFx1MjExQVwiLFJCYXJyOlwiXFx1MjkxMFwiLHJCYXJyOlwiXFx1MjkwRlwiLHJiYXJyOlwiXFx1MjkwRFwiLHJiYnJrOlwiXFx1Mjc3M1wiLHJicmFjZTpcIn1cIixyYnJhY2s6XCJdXCIscmJya2U6XCJcXHUyOThDXCIscmJya3NsZDpcIlxcdTI5OEVcIixyYnJrc2x1OlwiXFx1Mjk5MFwiLFJjYXJvbjpcIlxcdTAxNThcIixyY2Fyb246XCJcXHUwMTU5XCIsUmNlZGlsOlwiXFx1MDE1NlwiLHJjZWRpbDpcIlxcdTAxNTdcIixyY2VpbDpcIlxcdTIzMDlcIixyY3ViOlwifVwiLFJjeTpcIlxcdTA0MjBcIixyY3k6XCJcXHUwNDQwXCIscmRjYTpcIlxcdTI5MzdcIixyZGxkaGFyOlwiXFx1Mjk2OVwiLHJkcXVvOlwiXFx1MjAxRFwiLHJkcXVvcjpcIlxcdTIwMURcIixyZHNoOlwiXFx1MjFCM1wiLFJlOlwiXFx1MjExQ1wiLHJlYWw6XCJcXHUyMTFDXCIscmVhbGluZTpcIlxcdTIxMUJcIixyZWFscGFydDpcIlxcdTIxMUNcIixyZWFsczpcIlxcdTIxMURcIixyZWN0OlwiXFx1MjVBRFwiLFJFRzpcIlxceEFFXCIscmVnOlwiXFx4QUVcIixSZXZlcnNlRWxlbWVudDpcIlxcdTIyMEJcIixSZXZlcnNlRXF1aWxpYnJpdW06XCJcXHUyMUNCXCIsUmV2ZXJzZVVwRXF1aWxpYnJpdW06XCJcXHUyOTZGXCIscmZpc2h0OlwiXFx1Mjk3RFwiLHJmbG9vcjpcIlxcdTIzMEJcIixSZnI6XCJcXHUyMTFDXCIscmZyOlwiXFx1ezFENTJGfVwiLHJIYXI6XCJcXHUyOTY0XCIscmhhcmQ6XCJcXHUyMUMxXCIscmhhcnU6XCJcXHUyMUMwXCIscmhhcnVsOlwiXFx1Mjk2Q1wiLFJobzpcIlxcdTAzQTFcIixyaG86XCJcXHUwM0MxXCIscmhvdjpcIlxcdTAzRjFcIixSaWdodEFuZ2xlQnJhY2tldDpcIlxcdTI3RTlcIixSaWdodEFycm93OlwiXFx1MjE5MlwiLFJpZ2h0YXJyb3c6XCJcXHUyMUQyXCIscmlnaHRhcnJvdzpcIlxcdTIxOTJcIixSaWdodEFycm93QmFyOlwiXFx1MjFFNVwiLFJpZ2h0QXJyb3dMZWZ0QXJyb3c6XCJcXHUyMUM0XCIscmlnaHRhcnJvd3RhaWw6XCJcXHUyMUEzXCIsUmlnaHRDZWlsaW5nOlwiXFx1MjMwOVwiLFJpZ2h0RG91YmxlQnJhY2tldDpcIlxcdTI3RTdcIixSaWdodERvd25UZWVWZWN0b3I6XCJcXHUyOTVEXCIsUmlnaHREb3duVmVjdG9yOlwiXFx1MjFDMlwiLFJpZ2h0RG93blZlY3RvckJhcjpcIlxcdTI5NTVcIixSaWdodEZsb29yOlwiXFx1MjMwQlwiLHJpZ2h0aGFycG9vbmRvd246XCJcXHUyMUMxXCIscmlnaHRoYXJwb29udXA6XCJcXHUyMUMwXCIscmlnaHRsZWZ0YXJyb3dzOlwiXFx1MjFDNFwiLHJpZ2h0bGVmdGhhcnBvb25zOlwiXFx1MjFDQ1wiLHJpZ2h0cmlnaHRhcnJvd3M6XCJcXHUyMUM5XCIscmlnaHRzcXVpZ2Fycm93OlwiXFx1MjE5RFwiLFJpZ2h0VGVlOlwiXFx1MjJBMlwiLFJpZ2h0VGVlQXJyb3c6XCJcXHUyMUE2XCIsUmlnaHRUZWVWZWN0b3I6XCJcXHUyOTVCXCIscmlnaHR0aHJlZXRpbWVzOlwiXFx1MjJDQ1wiLFJpZ2h0VHJpYW5nbGU6XCJcXHUyMkIzXCIsUmlnaHRUcmlhbmdsZUJhcjpcIlxcdTI5RDBcIixSaWdodFRyaWFuZ2xlRXF1YWw6XCJcXHUyMkI1XCIsUmlnaHRVcERvd25WZWN0b3I6XCJcXHUyOTRGXCIsUmlnaHRVcFRlZVZlY3RvcjpcIlxcdTI5NUNcIixSaWdodFVwVmVjdG9yOlwiXFx1MjFCRVwiLFJpZ2h0VXBWZWN0b3JCYXI6XCJcXHUyOTU0XCIsUmlnaHRWZWN0b3I6XCJcXHUyMUMwXCIsUmlnaHRWZWN0b3JCYXI6XCJcXHUyOTUzXCIscmluZzpcIlxcdTAyREFcIixyaXNpbmdkb3RzZXE6XCJcXHUyMjUzXCIscmxhcnI6XCJcXHUyMUM0XCIscmxoYXI6XCJcXHUyMUNDXCIscmxtOlwiXFx1MjAwRlwiLHJtb3VzdDpcIlxcdTIzQjFcIixybW91c3RhY2hlOlwiXFx1MjNCMVwiLHJubWlkOlwiXFx1MkFFRVwiLHJvYW5nOlwiXFx1MjdFRFwiLHJvYXJyOlwiXFx1MjFGRVwiLHJvYnJrOlwiXFx1MjdFN1wiLHJvcGFyOlwiXFx1Mjk4NlwiLFJvcGY6XCJcXHUyMTFEXCIscm9wZjpcIlxcdXsxRDU2M31cIixyb3BsdXM6XCJcXHUyQTJFXCIscm90aW1lczpcIlxcdTJBMzVcIixSb3VuZEltcGxpZXM6XCJcXHUyOTcwXCIscnBhcjpcIilcIixycGFyZ3Q6XCJcXHUyOTk0XCIscnBwb2xpbnQ6XCJcXHUyQTEyXCIscnJhcnI6XCJcXHUyMUM5XCIsUnJpZ2h0YXJyb3c6XCJcXHUyMURCXCIscnNhcXVvOlwiXFx1MjAzQVwiLFJzY3I6XCJcXHUyMTFCXCIscnNjcjpcIlxcdXsxRDRDN31cIixSc2g6XCJcXHUyMUIxXCIscnNoOlwiXFx1MjFCMVwiLHJzcWI6XCJdXCIscnNxdW86XCJcXHUyMDE5XCIscnNxdW9yOlwiXFx1MjAxOVwiLHJ0aHJlZTpcIlxcdTIyQ0NcIixydGltZXM6XCJcXHUyMkNBXCIscnRyaTpcIlxcdTI1QjlcIixydHJpZTpcIlxcdTIyQjVcIixydHJpZjpcIlxcdTI1QjhcIixydHJpbHRyaTpcIlxcdTI5Q0VcIixSdWxlRGVsYXllZDpcIlxcdTI5RjRcIixydWx1aGFyOlwiXFx1Mjk2OFwiLHJ4OlwiXFx1MjExRVwiLFNhY3V0ZTpcIlxcdTAxNUFcIixzYWN1dGU6XCJcXHUwMTVCXCIsc2JxdW86XCJcXHUyMDFBXCIsU2M6XCJcXHUyQUJDXCIsc2M6XCJcXHUyMjdCXCIsc2NhcDpcIlxcdTJBQjhcIixTY2Fyb246XCJcXHUwMTYwXCIsc2Nhcm9uOlwiXFx1MDE2MVwiLHNjY3VlOlwiXFx1MjI3RFwiLHNjRTpcIlxcdTJBQjRcIixzY2U6XCJcXHUyQUIwXCIsU2NlZGlsOlwiXFx1MDE1RVwiLHNjZWRpbDpcIlxcdTAxNUZcIixTY2lyYzpcIlxcdTAxNUNcIixzY2lyYzpcIlxcdTAxNURcIixzY25hcDpcIlxcdTJBQkFcIixzY25FOlwiXFx1MkFCNlwiLHNjbnNpbTpcIlxcdTIyRTlcIixzY3BvbGludDpcIlxcdTJBMTNcIixzY3NpbTpcIlxcdTIyN0ZcIixTY3k6XCJcXHUwNDIxXCIsc2N5OlwiXFx1MDQ0MVwiLHNkb3Q6XCJcXHUyMkM1XCIsc2RvdGI6XCJcXHUyMkExXCIsc2RvdGU6XCJcXHUyQTY2XCIsc2VhcmhrOlwiXFx1MjkyNVwiLHNlQXJyOlwiXFx1MjFEOFwiLHNlYXJyOlwiXFx1MjE5OFwiLHNlYXJyb3c6XCJcXHUyMTk4XCIsc2VjdDpcIlxceEE3XCIsc2VtaTpcIjtcIixzZXN3YXI6XCJcXHUyOTI5XCIsc2V0bWludXM6XCJcXHUyMjE2XCIsc2V0bW46XCJcXHUyMjE2XCIsc2V4dDpcIlxcdTI3MzZcIixTZnI6XCJcXHV7MUQ1MTZ9XCIsc2ZyOlwiXFx1ezFENTMwfVwiLHNmcm93bjpcIlxcdTIzMjJcIixzaGFycDpcIlxcdTI2NkZcIixTSENIY3k6XCJcXHUwNDI5XCIsc2hjaGN5OlwiXFx1MDQ0OVwiLFNIY3k6XCJcXHUwNDI4XCIsc2hjeTpcIlxcdTA0NDhcIixTaG9ydERvd25BcnJvdzpcIlxcdTIxOTNcIixTaG9ydExlZnRBcnJvdzpcIlxcdTIxOTBcIixzaG9ydG1pZDpcIlxcdTIyMjNcIixzaG9ydHBhcmFsbGVsOlwiXFx1MjIyNVwiLFNob3J0UmlnaHRBcnJvdzpcIlxcdTIxOTJcIixTaG9ydFVwQXJyb3c6XCJcXHUyMTkxXCIsc2h5OlwiXFx4QURcIixTaWdtYTpcIlxcdTAzQTNcIixzaWdtYTpcIlxcdTAzQzNcIixzaWdtYWY6XCJcXHUwM0MyXCIsc2lnbWF2OlwiXFx1MDNDMlwiLHNpbTpcIlxcdTIyM0NcIixzaW1kb3Q6XCJcXHUyQTZBXCIsc2ltZTpcIlxcdTIyNDNcIixzaW1lcTpcIlxcdTIyNDNcIixzaW1nOlwiXFx1MkE5RVwiLHNpbWdFOlwiXFx1MkFBMFwiLHNpbWw6XCJcXHUyQTlEXCIsc2ltbEU6XCJcXHUyQTlGXCIsc2ltbmU6XCJcXHUyMjQ2XCIsc2ltcGx1czpcIlxcdTJBMjRcIixzaW1yYXJyOlwiXFx1Mjk3MlwiLHNsYXJyOlwiXFx1MjE5MFwiLFNtYWxsQ2lyY2xlOlwiXFx1MjIxOFwiLHNtYWxsc2V0bWludXM6XCJcXHUyMjE2XCIsc21hc2hwOlwiXFx1MkEzM1wiLHNtZXBhcnNsOlwiXFx1MjlFNFwiLHNtaWQ6XCJcXHUyMjIzXCIsc21pbGU6XCJcXHUyMzIzXCIsc210OlwiXFx1MkFBQVwiLHNtdGU6XCJcXHUyQUFDXCIsc210ZXM6XCJcXHUyQUFDXFx1RkUwMFwiLFNPRlRjeTpcIlxcdTA0MkNcIixzb2Z0Y3k6XCJcXHUwNDRDXCIsc29sOlwiL1wiLHNvbGI6XCJcXHUyOUM0XCIsc29sYmFyOlwiXFx1MjMzRlwiLFNvcGY6XCJcXHV7MUQ1NEF9XCIsc29wZjpcIlxcdXsxRDU2NH1cIixzcGFkZXM6XCJcXHUyNjYwXCIsc3BhZGVzdWl0OlwiXFx1MjY2MFwiLHNwYXI6XCJcXHUyMjI1XCIsc3FjYXA6XCJcXHUyMjkzXCIsc3FjYXBzOlwiXFx1MjI5M1xcdUZFMDBcIixzcWN1cDpcIlxcdTIyOTRcIixzcWN1cHM6XCJcXHUyMjk0XFx1RkUwMFwiLFNxcnQ6XCJcXHUyMjFBXCIsc3FzdWI6XCJcXHUyMjhGXCIsc3FzdWJlOlwiXFx1MjI5MVwiLHNxc3Vic2V0OlwiXFx1MjI4RlwiLHNxc3Vic2V0ZXE6XCJcXHUyMjkxXCIsc3FzdXA6XCJcXHUyMjkwXCIsc3FzdXBlOlwiXFx1MjI5MlwiLHNxc3Vwc2V0OlwiXFx1MjI5MFwiLHNxc3Vwc2V0ZXE6XCJcXHUyMjkyXCIsc3F1OlwiXFx1MjVBMVwiLFNxdWFyZTpcIlxcdTI1QTFcIixzcXVhcmU6XCJcXHUyNUExXCIsU3F1YXJlSW50ZXJzZWN0aW9uOlwiXFx1MjI5M1wiLFNxdWFyZVN1YnNldDpcIlxcdTIyOEZcIixTcXVhcmVTdWJzZXRFcXVhbDpcIlxcdTIyOTFcIixTcXVhcmVTdXBlcnNldDpcIlxcdTIyOTBcIixTcXVhcmVTdXBlcnNldEVxdWFsOlwiXFx1MjI5MlwiLFNxdWFyZVVuaW9uOlwiXFx1MjI5NFwiLHNxdWFyZjpcIlxcdTI1QUFcIixzcXVmOlwiXFx1MjVBQVwiLHNyYXJyOlwiXFx1MjE5MlwiLFNzY3I6XCJcXHV7MUQ0QUV9XCIsc3NjcjpcIlxcdXsxRDRDOH1cIixzc2V0bW46XCJcXHUyMjE2XCIsc3NtaWxlOlwiXFx1MjMyM1wiLHNzdGFyZjpcIlxcdTIyQzZcIixTdGFyOlwiXFx1MjJDNlwiLHN0YXI6XCJcXHUyNjA2XCIsc3RhcmY6XCJcXHUyNjA1XCIsc3RyYWlnaHRlcHNpbG9uOlwiXFx1MDNGNVwiLHN0cmFpZ2h0cGhpOlwiXFx1MDNENVwiLHN0cm5zOlwiXFx4QUZcIixTdWI6XCJcXHUyMkQwXCIsc3ViOlwiXFx1MjI4MlwiLHN1YmRvdDpcIlxcdTJBQkRcIixzdWJFOlwiXFx1MkFDNVwiLHN1YmU6XCJcXHUyMjg2XCIsc3ViZWRvdDpcIlxcdTJBQzNcIixzdWJtdWx0OlwiXFx1MkFDMVwiLHN1Ym5FOlwiXFx1MkFDQlwiLHN1Ym5lOlwiXFx1MjI4QVwiLHN1YnBsdXM6XCJcXHUyQUJGXCIsc3VicmFycjpcIlxcdTI5NzlcIixTdWJzZXQ6XCJcXHUyMkQwXCIsc3Vic2V0OlwiXFx1MjI4MlwiLHN1YnNldGVxOlwiXFx1MjI4NlwiLHN1YnNldGVxcTpcIlxcdTJBQzVcIixTdWJzZXRFcXVhbDpcIlxcdTIyODZcIixzdWJzZXRuZXE6XCJcXHUyMjhBXCIsc3Vic2V0bmVxcTpcIlxcdTJBQ0JcIixzdWJzaW06XCJcXHUyQUM3XCIsc3Vic3ViOlwiXFx1MkFENVwiLHN1YnN1cDpcIlxcdTJBRDNcIixzdWNjOlwiXFx1MjI3QlwiLHN1Y2NhcHByb3g6XCJcXHUyQUI4XCIsc3VjY2N1cmx5ZXE6XCJcXHUyMjdEXCIsU3VjY2VlZHM6XCJcXHUyMjdCXCIsU3VjY2VlZHNFcXVhbDpcIlxcdTJBQjBcIixTdWNjZWVkc1NsYW50RXF1YWw6XCJcXHUyMjdEXCIsU3VjY2VlZHNUaWxkZTpcIlxcdTIyN0ZcIixzdWNjZXE6XCJcXHUyQUIwXCIsc3VjY25hcHByb3g6XCJcXHUyQUJBXCIsc3VjY25lcXE6XCJcXHUyQUI2XCIsc3VjY25zaW06XCJcXHUyMkU5XCIsc3VjY3NpbTpcIlxcdTIyN0ZcIixTdWNoVGhhdDpcIlxcdTIyMEJcIixTdW06XCJcXHUyMjExXCIsc3VtOlwiXFx1MjIxMVwiLHN1bmc6XCJcXHUyNjZBXCIsU3VwOlwiXFx1MjJEMVwiLHN1cDpcIlxcdTIyODNcIixzdXAxOlwiXFx4QjlcIixzdXAyOlwiXFx4QjJcIixzdXAzOlwiXFx4QjNcIixzdXBkb3Q6XCJcXHUyQUJFXCIsc3VwZHN1YjpcIlxcdTJBRDhcIixzdXBFOlwiXFx1MkFDNlwiLHN1cGU6XCJcXHUyMjg3XCIsc3VwZWRvdDpcIlxcdTJBQzRcIixTdXBlcnNldDpcIlxcdTIyODNcIixTdXBlcnNldEVxdWFsOlwiXFx1MjI4N1wiLHN1cGhzb2w6XCJcXHUyN0M5XCIsc3VwaHN1YjpcIlxcdTJBRDdcIixzdXBsYXJyOlwiXFx1Mjk3QlwiLHN1cG11bHQ6XCJcXHUyQUMyXCIsc3VwbkU6XCJcXHUyQUNDXCIsc3VwbmU6XCJcXHUyMjhCXCIsc3VwcGx1czpcIlxcdTJBQzBcIixTdXBzZXQ6XCJcXHUyMkQxXCIsc3Vwc2V0OlwiXFx1MjI4M1wiLHN1cHNldGVxOlwiXFx1MjI4N1wiLHN1cHNldGVxcTpcIlxcdTJBQzZcIixzdXBzZXRuZXE6XCJcXHUyMjhCXCIsc3Vwc2V0bmVxcTpcIlxcdTJBQ0NcIixzdXBzaW06XCJcXHUyQUM4XCIsc3Vwc3ViOlwiXFx1MkFENFwiLHN1cHN1cDpcIlxcdTJBRDZcIixzd2FyaGs6XCJcXHUyOTI2XCIsc3dBcnI6XCJcXHUyMUQ5XCIsc3dhcnI6XCJcXHUyMTk5XCIsc3dhcnJvdzpcIlxcdTIxOTlcIixzd253YXI6XCJcXHUyOTJBXCIsc3psaWc6XCJcXHhERlwiLFRhYjpcIlx0XCIsdGFyZ2V0OlwiXFx1MjMxNlwiLFRhdTpcIlxcdTAzQTRcIix0YXU6XCJcXHUwM0M0XCIsdGJyazpcIlxcdTIzQjRcIixUY2Fyb246XCJcXHUwMTY0XCIsdGNhcm9uOlwiXFx1MDE2NVwiLFRjZWRpbDpcIlxcdTAxNjJcIix0Y2VkaWw6XCJcXHUwMTYzXCIsVGN5OlwiXFx1MDQyMlwiLHRjeTpcIlxcdTA0NDJcIix0ZG90OlwiXFx1MjBEQlwiLHRlbHJlYzpcIlxcdTIzMTVcIixUZnI6XCJcXHV7MUQ1MTd9XCIsdGZyOlwiXFx1ezFENTMxfVwiLHRoZXJlNDpcIlxcdTIyMzRcIixUaGVyZWZvcmU6XCJcXHUyMjM0XCIsdGhlcmVmb3JlOlwiXFx1MjIzNFwiLFRoZXRhOlwiXFx1MDM5OFwiLHRoZXRhOlwiXFx1MDNCOFwiLHRoZXRhc3ltOlwiXFx1MDNEMVwiLHRoZXRhdjpcIlxcdTAzRDFcIix0aGlja2FwcHJveDpcIlxcdTIyNDhcIix0aGlja3NpbTpcIlxcdTIyM0NcIixUaGlja1NwYWNlOlwiXFx1MjA1RlxcdTIwMEFcIix0aGluc3A6XCJcXHUyMDA5XCIsVGhpblNwYWNlOlwiXFx1MjAwOVwiLHRoa2FwOlwiXFx1MjI0OFwiLHRoa3NpbTpcIlxcdTIyM0NcIixUSE9STjpcIlxceERFXCIsdGhvcm46XCJcXHhGRVwiLFRpbGRlOlwiXFx1MjIzQ1wiLHRpbGRlOlwiXFx1MDJEQ1wiLFRpbGRlRXF1YWw6XCJcXHUyMjQzXCIsVGlsZGVGdWxsRXF1YWw6XCJcXHUyMjQ1XCIsVGlsZGVUaWxkZTpcIlxcdTIyNDhcIix0aW1lczpcIlxceEQ3XCIsdGltZXNiOlwiXFx1MjJBMFwiLHRpbWVzYmFyOlwiXFx1MkEzMVwiLHRpbWVzZDpcIlxcdTJBMzBcIix0aW50OlwiXFx1MjIyRFwiLHRvZWE6XCJcXHUyOTI4XCIsdG9wOlwiXFx1MjJBNFwiLHRvcGJvdDpcIlxcdTIzMzZcIix0b3BjaXI6XCJcXHUyQUYxXCIsVG9wZjpcIlxcdXsxRDU0Qn1cIix0b3BmOlwiXFx1ezFENTY1fVwiLHRvcGZvcms6XCJcXHUyQURBXCIsdG9zYTpcIlxcdTI5MjlcIix0cHJpbWU6XCJcXHUyMDM0XCIsVFJBREU6XCJcXHUyMTIyXCIsdHJhZGU6XCJcXHUyMTIyXCIsdHJpYW5nbGU6XCJcXHUyNUI1XCIsdHJpYW5nbGVkb3duOlwiXFx1MjVCRlwiLHRyaWFuZ2xlbGVmdDpcIlxcdTI1QzNcIix0cmlhbmdsZWxlZnRlcTpcIlxcdTIyQjRcIix0cmlhbmdsZXE6XCJcXHUyMjVDXCIsdHJpYW5nbGVyaWdodDpcIlxcdTI1QjlcIix0cmlhbmdsZXJpZ2h0ZXE6XCJcXHUyMkI1XCIsdHJpZG90OlwiXFx1MjVFQ1wiLHRyaWU6XCJcXHUyMjVDXCIsdHJpbWludXM6XCJcXHUyQTNBXCIsVHJpcGxlRG90OlwiXFx1MjBEQlwiLHRyaXBsdXM6XCJcXHUyQTM5XCIsdHJpc2I6XCJcXHUyOUNEXCIsdHJpdGltZTpcIlxcdTJBM0JcIix0cnBleml1bTpcIlxcdTIzRTJcIixUc2NyOlwiXFx1ezFENEFGfVwiLHRzY3I6XCJcXHV7MUQ0Qzl9XCIsVFNjeTpcIlxcdTA0MjZcIix0c2N5OlwiXFx1MDQ0NlwiLFRTSGN5OlwiXFx1MDQwQlwiLHRzaGN5OlwiXFx1MDQ1QlwiLFRzdHJvazpcIlxcdTAxNjZcIix0c3Ryb2s6XCJcXHUwMTY3XCIsdHdpeHQ6XCJcXHUyMjZDXCIsdHdvaGVhZGxlZnRhcnJvdzpcIlxcdTIxOUVcIix0d29oZWFkcmlnaHRhcnJvdzpcIlxcdTIxQTBcIixVYWN1dGU6XCJcXHhEQVwiLHVhY3V0ZTpcIlxceEZBXCIsVWFycjpcIlxcdTIxOUZcIix1QXJyOlwiXFx1MjFEMVwiLHVhcnI6XCJcXHUyMTkxXCIsVWFycm9jaXI6XCJcXHUyOTQ5XCIsVWJyY3k6XCJcXHUwNDBFXCIsdWJyY3k6XCJcXHUwNDVFXCIsVWJyZXZlOlwiXFx1MDE2Q1wiLHVicmV2ZTpcIlxcdTAxNkRcIixVY2lyYzpcIlxceERCXCIsdWNpcmM6XCJcXHhGQlwiLFVjeTpcIlxcdTA0MjNcIix1Y3k6XCJcXHUwNDQzXCIsdWRhcnI6XCJcXHUyMUM1XCIsVWRibGFjOlwiXFx1MDE3MFwiLHVkYmxhYzpcIlxcdTAxNzFcIix1ZGhhcjpcIlxcdTI5NkVcIix1ZmlzaHQ6XCJcXHUyOTdFXCIsVWZyOlwiXFx1ezFENTE4fVwiLHVmcjpcIlxcdXsxRDUzMn1cIixVZ3JhdmU6XCJcXHhEOVwiLHVncmF2ZTpcIlxceEY5XCIsdUhhcjpcIlxcdTI5NjNcIix1aGFybDpcIlxcdTIxQkZcIix1aGFycjpcIlxcdTIxQkVcIix1aGJsazpcIlxcdTI1ODBcIix1bGNvcm46XCJcXHUyMzFDXCIsdWxjb3JuZXI6XCJcXHUyMzFDXCIsdWxjcm9wOlwiXFx1MjMwRlwiLHVsdHJpOlwiXFx1MjVGOFwiLFVtYWNyOlwiXFx1MDE2QVwiLHVtYWNyOlwiXFx1MDE2QlwiLHVtbDpcIlxceEE4XCIsVW5kZXJCYXI6XCJfXCIsVW5kZXJCcmFjZTpcIlxcdTIzREZcIixVbmRlckJyYWNrZXQ6XCJcXHUyM0I1XCIsVW5kZXJQYXJlbnRoZXNpczpcIlxcdTIzRERcIixVbmlvbjpcIlxcdTIyQzNcIixVbmlvblBsdXM6XCJcXHUyMjhFXCIsVW9nb246XCJcXHUwMTcyXCIsdW9nb246XCJcXHUwMTczXCIsVW9wZjpcIlxcdXsxRDU0Q31cIix1b3BmOlwiXFx1ezFENTY2fVwiLFVwQXJyb3c6XCJcXHUyMTkxXCIsVXBhcnJvdzpcIlxcdTIxRDFcIix1cGFycm93OlwiXFx1MjE5MVwiLFVwQXJyb3dCYXI6XCJcXHUyOTEyXCIsVXBBcnJvd0Rvd25BcnJvdzpcIlxcdTIxQzVcIixVcERvd25BcnJvdzpcIlxcdTIxOTVcIixVcGRvd25hcnJvdzpcIlxcdTIxRDVcIix1cGRvd25hcnJvdzpcIlxcdTIxOTVcIixVcEVxdWlsaWJyaXVtOlwiXFx1Mjk2RVwiLHVwaGFycG9vbmxlZnQ6XCJcXHUyMUJGXCIsdXBoYXJwb29ucmlnaHQ6XCJcXHUyMUJFXCIsdXBsdXM6XCJcXHUyMjhFXCIsVXBwZXJMZWZ0QXJyb3c6XCJcXHUyMTk2XCIsVXBwZXJSaWdodEFycm93OlwiXFx1MjE5N1wiLFVwc2k6XCJcXHUwM0QyXCIsdXBzaTpcIlxcdTAzQzVcIix1cHNpaDpcIlxcdTAzRDJcIixVcHNpbG9uOlwiXFx1MDNBNVwiLHVwc2lsb246XCJcXHUwM0M1XCIsVXBUZWU6XCJcXHUyMkE1XCIsVXBUZWVBcnJvdzpcIlxcdTIxQTVcIix1cHVwYXJyb3dzOlwiXFx1MjFDOFwiLHVyY29ybjpcIlxcdTIzMURcIix1cmNvcm5lcjpcIlxcdTIzMURcIix1cmNyb3A6XCJcXHUyMzBFXCIsVXJpbmc6XCJcXHUwMTZFXCIsdXJpbmc6XCJcXHUwMTZGXCIsdXJ0cmk6XCJcXHUyNUY5XCIsVXNjcjpcIlxcdXsxRDRCMH1cIix1c2NyOlwiXFx1ezFENENBfVwiLHV0ZG90OlwiXFx1MjJGMFwiLFV0aWxkZTpcIlxcdTAxNjhcIix1dGlsZGU6XCJcXHUwMTY5XCIsdXRyaTpcIlxcdTI1QjVcIix1dHJpZjpcIlxcdTI1QjRcIix1dWFycjpcIlxcdTIxQzhcIixVdW1sOlwiXFx4RENcIix1dW1sOlwiXFx4RkNcIix1d2FuZ2xlOlwiXFx1MjlBN1wiLHZhbmdydDpcIlxcdTI5OUNcIix2YXJlcHNpbG9uOlwiXFx1MDNGNVwiLHZhcmthcHBhOlwiXFx1MDNGMFwiLHZhcm5vdGhpbmc6XCJcXHUyMjA1XCIsdmFycGhpOlwiXFx1MDNENVwiLHZhcnBpOlwiXFx1MDNENlwiLHZhcnByb3B0bzpcIlxcdTIyMURcIix2QXJyOlwiXFx1MjFENVwiLHZhcnI6XCJcXHUyMTk1XCIsdmFycmhvOlwiXFx1MDNGMVwiLHZhcnNpZ21hOlwiXFx1MDNDMlwiLHZhcnN1YnNldG5lcTpcIlxcdTIyOEFcXHVGRTAwXCIsdmFyc3Vic2V0bmVxcTpcIlxcdTJBQ0JcXHVGRTAwXCIsdmFyc3Vwc2V0bmVxOlwiXFx1MjI4QlxcdUZFMDBcIix2YXJzdXBzZXRuZXFxOlwiXFx1MkFDQ1xcdUZFMDBcIix2YXJ0aGV0YTpcIlxcdTAzRDFcIix2YXJ0cmlhbmdsZWxlZnQ6XCJcXHUyMkIyXCIsdmFydHJpYW5nbGVyaWdodDpcIlxcdTIyQjNcIixWYmFyOlwiXFx1MkFFQlwiLHZCYXI6XCJcXHUyQUU4XCIsdkJhcnY6XCJcXHUyQUU5XCIsVmN5OlwiXFx1MDQxMlwiLHZjeTpcIlxcdTA0MzJcIixWRGFzaDpcIlxcdTIyQUJcIixWZGFzaDpcIlxcdTIyQTlcIix2RGFzaDpcIlxcdTIyQThcIix2ZGFzaDpcIlxcdTIyQTJcIixWZGFzaGw6XCJcXHUyQUU2XCIsVmVlOlwiXFx1MjJDMVwiLHZlZTpcIlxcdTIyMjhcIix2ZWViYXI6XCJcXHUyMkJCXCIsdmVlZXE6XCJcXHUyMjVBXCIsdmVsbGlwOlwiXFx1MjJFRVwiLFZlcmJhcjpcIlxcdTIwMTZcIix2ZXJiYXI6XCJ8XCIsVmVydDpcIlxcdTIwMTZcIix2ZXJ0OlwifFwiLFZlcnRpY2FsQmFyOlwiXFx1MjIyM1wiLFZlcnRpY2FsTGluZTpcInxcIixWZXJ0aWNhbFNlcGFyYXRvcjpcIlxcdTI3NThcIixWZXJ0aWNhbFRpbGRlOlwiXFx1MjI0MFwiLFZlcnlUaGluU3BhY2U6XCJcXHUyMDBBXCIsVmZyOlwiXFx1ezFENTE5fVwiLHZmcjpcIlxcdXsxRDUzM31cIix2bHRyaTpcIlxcdTIyQjJcIix2bnN1YjpcIlxcdTIyODJcXHUyMEQyXCIsdm5zdXA6XCJcXHUyMjgzXFx1MjBEMlwiLFZvcGY6XCJcXHV7MUQ1NER9XCIsdm9wZjpcIlxcdXsxRDU2N31cIix2cHJvcDpcIlxcdTIyMURcIix2cnRyaTpcIlxcdTIyQjNcIixWc2NyOlwiXFx1ezFENEIxfVwiLHZzY3I6XCJcXHV7MUQ0Q0J9XCIsdnN1Ym5FOlwiXFx1MkFDQlxcdUZFMDBcIix2c3VibmU6XCJcXHUyMjhBXFx1RkUwMFwiLHZzdXBuRTpcIlxcdTJBQ0NcXHVGRTAwXCIsdnN1cG5lOlwiXFx1MjI4QlxcdUZFMDBcIixWdmRhc2g6XCJcXHUyMkFBXCIsdnppZ3phZzpcIlxcdTI5OUFcIixXY2lyYzpcIlxcdTAxNzRcIix3Y2lyYzpcIlxcdTAxNzVcIix3ZWRiYXI6XCJcXHUyQTVGXCIsV2VkZ2U6XCJcXHUyMkMwXCIsd2VkZ2U6XCJcXHUyMjI3XCIsd2VkZ2VxOlwiXFx1MjI1OVwiLHdlaWVycDpcIlxcdTIxMThcIixXZnI6XCJcXHV7MUQ1MUF9XCIsd2ZyOlwiXFx1ezFENTM0fVwiLFdvcGY6XCJcXHV7MUQ1NEV9XCIsd29wZjpcIlxcdXsxRDU2OH1cIix3cDpcIlxcdTIxMThcIix3cjpcIlxcdTIyNDBcIix3cmVhdGg6XCJcXHUyMjQwXCIsV3NjcjpcIlxcdXsxRDRCMn1cIix3c2NyOlwiXFx1ezFENENDfVwiLHhjYXA6XCJcXHUyMkMyXCIseGNpcmM6XCJcXHUyNUVGXCIseGN1cDpcIlxcdTIyQzNcIix4ZHRyaTpcIlxcdTI1QkRcIixYZnI6XCJcXHV7MUQ1MUJ9XCIseGZyOlwiXFx1ezFENTM1fVwiLHhoQXJyOlwiXFx1MjdGQVwiLHhoYXJyOlwiXFx1MjdGN1wiLFhpOlwiXFx1MDM5RVwiLHhpOlwiXFx1MDNCRVwiLHhsQXJyOlwiXFx1MjdGOFwiLHhsYXJyOlwiXFx1MjdGNVwiLHhtYXA6XCJcXHUyN0ZDXCIseG5pczpcIlxcdTIyRkJcIix4b2RvdDpcIlxcdTJBMDBcIixYb3BmOlwiXFx1ezFENTRGfVwiLHhvcGY6XCJcXHV7MUQ1Njl9XCIseG9wbHVzOlwiXFx1MkEwMVwiLHhvdGltZTpcIlxcdTJBMDJcIix4ckFycjpcIlxcdTI3RjlcIix4cmFycjpcIlxcdTI3RjZcIixYc2NyOlwiXFx1ezFENEIzfVwiLHhzY3I6XCJcXHV7MUQ0Q0R9XCIseHNxY3VwOlwiXFx1MkEwNlwiLHh1cGx1czpcIlxcdTJBMDRcIix4dXRyaTpcIlxcdTI1QjNcIix4dmVlOlwiXFx1MjJDMVwiLHh3ZWRnZTpcIlxcdTIyQzBcIixZYWN1dGU6XCJcXHhERFwiLHlhY3V0ZTpcIlxceEZEXCIsWUFjeTpcIlxcdTA0MkZcIix5YWN5OlwiXFx1MDQ0RlwiLFljaXJjOlwiXFx1MDE3NlwiLHljaXJjOlwiXFx1MDE3N1wiLFljeTpcIlxcdTA0MkJcIix5Y3k6XCJcXHUwNDRCXCIseWVuOlwiXFx4QTVcIixZZnI6XCJcXHV7MUQ1MUN9XCIseWZyOlwiXFx1ezFENTM2fVwiLFlJY3k6XCJcXHUwNDA3XCIseWljeTpcIlxcdTA0NTdcIixZb3BmOlwiXFx1ezFENTUwfVwiLHlvcGY6XCJcXHV7MUQ1NkF9XCIsWXNjcjpcIlxcdXsxRDRCNH1cIix5c2NyOlwiXFx1ezFENENFfVwiLFlVY3k6XCJcXHUwNDJFXCIseXVjeTpcIlxcdTA0NEVcIixZdW1sOlwiXFx1MDE3OFwiLHl1bWw6XCJcXHhGRlwiLFphY3V0ZTpcIlxcdTAxNzlcIix6YWN1dGU6XCJcXHUwMTdBXCIsWmNhcm9uOlwiXFx1MDE3RFwiLHpjYXJvbjpcIlxcdTAxN0VcIixaY3k6XCJcXHUwNDE3XCIsemN5OlwiXFx1MDQzN1wiLFpkb3Q6XCJcXHUwMTdCXCIsemRvdDpcIlxcdTAxN0NcIix6ZWV0cmY6XCJcXHUyMTI4XCIsWmVyb1dpZHRoU3BhY2U6XCJcXHUyMDBCXCIsWmV0YTpcIlxcdTAzOTZcIix6ZXRhOlwiXFx1MDNCNlwiLFpmcjpcIlxcdTIxMjhcIix6ZnI6XCJcXHV7MUQ1Mzd9XCIsWkhjeTpcIlxcdTA0MTZcIix6aGN5OlwiXFx1MDQzNlwiLHppZ3JhcnI6XCJcXHUyMUREXCIsWm9wZjpcIlxcdTIxMjRcIix6b3BmOlwiXFx1ezFENTZCfVwiLFpzY3I6XCJcXHV7MUQ0QjV9XCIsenNjcjpcIlxcdXsxRDRDRn1cIix6d2o6XCJcXHUyMDBEXCIsenduajpcIlxcdTIwMENcIn0sZS5OR1NQX1VOSUNPREU9XCJcXHVFNTAwXCIsZS5OQU1FRF9FTlRJVElFUy5uZ3NwPWUuTkdTUF9VTklDT0RFfX0pLF9zPUkoe1wibm9kZV9tb2R1bGVzL2FuZ3VsYXItaHRtbC1wYXJzZXIvbGliL2NvbXBpbGVyL3NyYy9tbF9wYXJzZXIvaHRtbF90YWdzLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7cSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPVplKCksdD1jbGFzc3tjb25zdHJ1Y3Rvcigpe2xldHtjbG9zZWRCeUNoaWxkcmVuOmEsaW1wbGljaXROYW1lc3BhY2VQcmVmaXg6cCxjb250ZW50VHlwZTpEPXIuVGFnQ29udGVudFR5cGUuUEFSU0FCTEVfREFUQSxjbG9zZWRCeVBhcmVudDpnPSExLGlzVm9pZDppPSExLGlnbm9yZUZpcnN0TGY6bD0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O3RoaXMuY2xvc2VkQnlDaGlsZHJlbj17fSx0aGlzLmNsb3NlZEJ5UGFyZW50PSExLHRoaXMuY2FuU2VsZkNsb3NlPSExLGEmJmEubGVuZ3RoPjAmJmEuZm9yRWFjaChoPT50aGlzLmNsb3NlZEJ5Q2hpbGRyZW5baF09ITApLHRoaXMuaXNWb2lkPWksdGhpcy5jbG9zZWRCeVBhcmVudD1nfHxpLHRoaXMuaW1wbGljaXROYW1lc3BhY2VQcmVmaXg9cHx8bnVsbCx0aGlzLmNvbnRlbnRUeXBlPUQsdGhpcy5pZ25vcmVGaXJzdExmPWx9aXNDbG9zZWRCeUNoaWxkKGEpe3JldHVybiB0aGlzLmlzVm9pZHx8YS50b0xvd2VyQ2FzZSgpaW4gdGhpcy5jbG9zZWRCeUNoaWxkcmVufX07ZS5IdG1sVGFnRGVmaW5pdGlvbj10O3ZhciBzLGM7ZnVuY3Rpb24gbihhKXtyZXR1cm4gY3x8KHM9bmV3IHQsYz17YmFzZTpuZXcgdCh7aXNWb2lkOiEwfSksbWV0YTpuZXcgdCh7aXNWb2lkOiEwfSksYXJlYTpuZXcgdCh7aXNWb2lkOiEwfSksZW1iZWQ6bmV3IHQoe2lzVm9pZDohMH0pLGxpbms6bmV3IHQoe2lzVm9pZDohMH0pLGltZzpuZXcgdCh7aXNWb2lkOiEwfSksaW5wdXQ6bmV3IHQoe2lzVm9pZDohMH0pLHBhcmFtOm5ldyB0KHtpc1ZvaWQ6ITB9KSxocjpuZXcgdCh7aXNWb2lkOiEwfSksYnI6bmV3IHQoe2lzVm9pZDohMH0pLHNvdXJjZTpuZXcgdCh7aXNWb2lkOiEwfSksdHJhY2s6bmV3IHQoe2lzVm9pZDohMH0pLHdicjpuZXcgdCh7aXNWb2lkOiEwfSkscDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJhZGRyZXNzXCIsXCJhcnRpY2xlXCIsXCJhc2lkZVwiLFwiYmxvY2txdW90ZVwiLFwiZGl2XCIsXCJkbFwiLFwiZmllbGRzZXRcIixcImZvb3RlclwiLFwiZm9ybVwiLFwiaDFcIixcImgyXCIsXCJoM1wiLFwiaDRcIixcImg1XCIsXCJoNlwiLFwiaGVhZGVyXCIsXCJoZ3JvdXBcIixcImhyXCIsXCJtYWluXCIsXCJuYXZcIixcIm9sXCIsXCJwXCIsXCJwcmVcIixcInNlY3Rpb25cIixcInRhYmxlXCIsXCJ1bFwiXSxjbG9zZWRCeVBhcmVudDohMH0pLHRoZWFkOm5ldyB0KHtjbG9zZWRCeUNoaWxkcmVuOltcInRib2R5XCIsXCJ0Zm9vdFwiXX0pLHRib2R5Om5ldyB0KHtjbG9zZWRCeUNoaWxkcmVuOltcInRib2R5XCIsXCJ0Zm9vdFwiXSxjbG9zZWRCeVBhcmVudDohMH0pLHRmb290Om5ldyB0KHtjbG9zZWRCeUNoaWxkcmVuOltcInRib2R5XCJdLGNsb3NlZEJ5UGFyZW50OiEwfSksdHI6bmV3IHQoe2Nsb3NlZEJ5Q2hpbGRyZW46W1widHJcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSx0ZDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJ0ZFwiLFwidGhcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSx0aDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJ0ZFwiLFwidGhcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSxjb2w6bmV3IHQoe2lzVm9pZDohMH0pLHN2ZzpuZXcgdCh7aW1wbGljaXROYW1lc3BhY2VQcmVmaXg6XCJzdmdcIn0pLG1hdGg6bmV3IHQoe2ltcGxpY2l0TmFtZXNwYWNlUHJlZml4OlwibWF0aFwifSksbGk6bmV3IHQoe2Nsb3NlZEJ5Q2hpbGRyZW46W1wibGlcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSxkdDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJkdFwiLFwiZGRcIl19KSxkZDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJkdFwiLFwiZGRcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSxyYjpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJyYlwiLFwicnRcIixcInJ0Y1wiLFwicnBcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSxydDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJyYlwiLFwicnRcIixcInJ0Y1wiLFwicnBcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSxydGM6bmV3IHQoe2Nsb3NlZEJ5Q2hpbGRyZW46W1wicmJcIixcInJ0Y1wiLFwicnBcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSxycDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJyYlwiLFwicnRcIixcInJ0Y1wiLFwicnBcIl0sY2xvc2VkQnlQYXJlbnQ6ITB9KSxvcHRncm91cDpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJvcHRncm91cFwiXSxjbG9zZWRCeVBhcmVudDohMH0pLG9wdGlvbjpuZXcgdCh7Y2xvc2VkQnlDaGlsZHJlbjpbXCJvcHRpb25cIixcIm9wdGdyb3VwXCJdLGNsb3NlZEJ5UGFyZW50OiEwfSkscHJlOm5ldyB0KHtpZ25vcmVGaXJzdExmOiEwfSksbGlzdGluZzpuZXcgdCh7aWdub3JlRmlyc3RMZjohMH0pLHN0eWxlOm5ldyB0KHtjb250ZW50VHlwZTpyLlRhZ0NvbnRlbnRUeXBlLlJBV19URVhUfSksc2NyaXB0Om5ldyB0KHtjb250ZW50VHlwZTpyLlRhZ0NvbnRlbnRUeXBlLlJBV19URVhUfSksdGl0bGU6bmV3IHQoe2NvbnRlbnRUeXBlOnIuVGFnQ29udGVudFR5cGUuRVNDQVBBQkxFX1JBV19URVhUfSksdGV4dGFyZWE6bmV3IHQoe2NvbnRlbnRUeXBlOnIuVGFnQ29udGVudFR5cGUuRVNDQVBBQkxFX1JBV19URVhULGlnbm9yZUZpcnN0TGY6ITB9KX0pLGNbYV18fHN9ZS5nZXRIdG1sVGFnRGVmaW5pdGlvbj1ufX0pLFZEPUkoe1wibm9kZV9tb2R1bGVzL2FuZ3VsYXItaHRtbC1wYXJzZXIvbGliL2NvbXBpbGVyL3NyYy9hc3RfcGF0aC5qc1wiKGUpe1widXNlIHN0cmljdFwiO3EoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXtsZXQgcz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06LTE7dGhpcy5wYXRoPXQsdGhpcy5wb3NpdGlvbj1zfWdldCBlbXB0eSgpe3JldHVybiF0aGlzLnBhdGh8fCF0aGlzLnBhdGgubGVuZ3RofWdldCBoZWFkKCl7cmV0dXJuIHRoaXMucGF0aFswXX1nZXQgdGFpbCgpe3JldHVybiB0aGlzLnBhdGhbdGhpcy5wYXRoLmxlbmd0aC0xXX1wYXJlbnRPZih0KXtyZXR1cm4gdCYmdGhpcy5wYXRoW3RoaXMucGF0aC5pbmRleE9mKHQpLTFdfWNoaWxkT2YodCl7cmV0dXJuIHRoaXMucGF0aFt0aGlzLnBhdGguaW5kZXhPZih0KSsxXX1maXJzdCh0KXtmb3IobGV0IHM9dGhpcy5wYXRoLmxlbmd0aC0xO3M+PTA7cy0tKXtsZXQgYz10aGlzLnBhdGhbc107aWYoYyBpbnN0YW5jZW9mIHQpcmV0dXJuIGN9fXB1c2godCl7dGhpcy5wYXRoLnB1c2godCl9cG9wKCl7cmV0dXJuIHRoaXMucGF0aC5wb3AoKX19O2UuQXN0UGF0aD1yfX0pLFNzPUkoe1wibm9kZV9tb2R1bGVzL2FuZ3VsYXItaHRtbC1wYXJzZXIvbGliL2NvbXBpbGVyL3NyYy9tbF9wYXJzZXIvYXN0LmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7cSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPVZEKCksdD1jbGFzc3tjb25zdHJ1Y3RvcihkLG0sVCl7dGhpcy52YWx1ZT1kLHRoaXMuc291cmNlU3Bhbj1tLHRoaXMuaTE4bj1ULHRoaXMudHlwZT1cInRleHRcIn12aXNpdChkLG0pe3JldHVybiBkLnZpc2l0VGV4dCh0aGlzLG0pfX07ZS5UZXh0PXQ7dmFyIHM9Y2xhc3N7Y29uc3RydWN0b3IoZCxtKXt0aGlzLnZhbHVlPWQsdGhpcy5zb3VyY2VTcGFuPW0sdGhpcy50eXBlPVwiY2RhdGFcIn12aXNpdChkLG0pe3JldHVybiBkLnZpc2l0Q2RhdGEodGhpcyxtKX19O2UuQ0RBVEE9czt2YXIgYz1jbGFzc3tjb25zdHJ1Y3RvcihkLG0sVCxCLEEsTil7dGhpcy5zd2l0Y2hWYWx1ZT1kLHRoaXMudHlwZT1tLHRoaXMuY2FzZXM9VCx0aGlzLnNvdXJjZVNwYW49Qix0aGlzLnN3aXRjaFZhbHVlU291cmNlU3Bhbj1BLHRoaXMuaTE4bj1OfXZpc2l0KGQsbSl7cmV0dXJuIGQudmlzaXRFeHBhbnNpb24odGhpcyxtKX19O2UuRXhwYW5zaW9uPWM7dmFyIG49Y2xhc3N7Y29uc3RydWN0b3IoZCxtLFQsQixBKXt0aGlzLnZhbHVlPWQsdGhpcy5leHByZXNzaW9uPW0sdGhpcy5zb3VyY2VTcGFuPVQsdGhpcy52YWx1ZVNvdXJjZVNwYW49Qix0aGlzLmV4cFNvdXJjZVNwYW49QX12aXNpdChkLG0pe3JldHVybiBkLnZpc2l0RXhwYW5zaW9uQ2FzZSh0aGlzLG0pfX07ZS5FeHBhbnNpb25DYXNlPW47dmFyIGE9Y2xhc3N7Y29uc3RydWN0b3IoZCxtLFQpe2xldCBCPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTpudWxsLEE9YXJndW1lbnRzLmxlbmd0aD40JiZhcmd1bWVudHNbNF0hPT12b2lkIDA/YXJndW1lbnRzWzRdOm51bGwsTj1hcmd1bWVudHMubGVuZ3RoPjUmJmFyZ3VtZW50c1s1XSE9PXZvaWQgMD9hcmd1bWVudHNbNV06bnVsbDt0aGlzLm5hbWU9ZCx0aGlzLnZhbHVlPW0sdGhpcy5zb3VyY2VTcGFuPVQsdGhpcy52YWx1ZVNwYW49Qix0aGlzLm5hbWVTcGFuPUEsdGhpcy5pMThuPU4sdGhpcy50eXBlPVwiYXR0cmlidXRlXCJ9dmlzaXQoZCxtKXtyZXR1cm4gZC52aXNpdEF0dHJpYnV0ZSh0aGlzLG0pfX07ZS5BdHRyaWJ1dGU9YTt2YXIgcD1jbGFzc3tjb25zdHJ1Y3RvcihkLG0sVCxCKXtsZXQgQT1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06bnVsbCxOPWFyZ3VtZW50cy5sZW5ndGg+NSYmYXJndW1lbnRzWzVdIT09dm9pZCAwP2FyZ3VtZW50c1s1XTpudWxsLFI9YXJndW1lbnRzLmxlbmd0aD42JiZhcmd1bWVudHNbNl0hPT12b2lkIDA/YXJndW1lbnRzWzZdOm51bGwsJD1hcmd1bWVudHMubGVuZ3RoPjcmJmFyZ3VtZW50c1s3XSE9PXZvaWQgMD9hcmd1bWVudHNbN106bnVsbDt0aGlzLm5hbWU9ZCx0aGlzLmF0dHJzPW0sdGhpcy5jaGlsZHJlbj1ULHRoaXMuc291cmNlU3Bhbj1CLHRoaXMuc3RhcnRTb3VyY2VTcGFuPUEsdGhpcy5lbmRTb3VyY2VTcGFuPU4sdGhpcy5uYW1lU3Bhbj1SLHRoaXMuaTE4bj0kLHRoaXMudHlwZT1cImVsZW1lbnRcIn12aXNpdChkLG0pe3JldHVybiBkLnZpc2l0RWxlbWVudCh0aGlzLG0pfX07ZS5FbGVtZW50PXA7dmFyIEQ9Y2xhc3N7Y29uc3RydWN0b3IoZCxtKXt0aGlzLnZhbHVlPWQsdGhpcy5zb3VyY2VTcGFuPW0sdGhpcy50eXBlPVwiY29tbWVudFwifXZpc2l0KGQsbSl7cmV0dXJuIGQudmlzaXRDb21tZW50KHRoaXMsbSl9fTtlLkNvbW1lbnQ9RDt2YXIgZz1jbGFzc3tjb25zdHJ1Y3RvcihkLG0pe3RoaXMudmFsdWU9ZCx0aGlzLnNvdXJjZVNwYW49bSx0aGlzLnR5cGU9XCJkb2NUeXBlXCJ9dmlzaXQoZCxtKXtyZXR1cm4gZC52aXNpdERvY1R5cGUodGhpcyxtKX19O2UuRG9jVHlwZT1nO2Z1bmN0aW9uIGkoZCxtKXtsZXQgVD1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06bnVsbCxCPVtdLEE9ZC52aXNpdD9OPT5kLnZpc2l0KE4sVCl8fE4udmlzaXQoZCxUKTpOPT5OLnZpc2l0KGQsVCk7cmV0dXJuIG0uZm9yRWFjaChOPT57bGV0IFI9QShOKTtSJiZCLnB1c2goUil9KSxCfWUudmlzaXRBbGw9aTt2YXIgbD1jbGFzc3tjb25zdHJ1Y3Rvcigpe312aXNpdEVsZW1lbnQoZCxtKXt0aGlzLnZpc2l0Q2hpbGRyZW4obSxUPT57VChkLmF0dHJzKSxUKGQuY2hpbGRyZW4pfSl9dmlzaXRBdHRyaWJ1dGUoZCxtKXt9dmlzaXRUZXh0KGQsbSl7fXZpc2l0Q2RhdGEoZCxtKXt9dmlzaXRDb21tZW50KGQsbSl7fXZpc2l0RG9jVHlwZShkLG0pe312aXNpdEV4cGFuc2lvbihkLG0pe3JldHVybiB0aGlzLnZpc2l0Q2hpbGRyZW4obSxUPT57VChkLmNhc2VzKX0pfXZpc2l0RXhwYW5zaW9uQ2FzZShkLG0pe312aXNpdENoaWxkcmVuKGQsbSl7bGV0IFQ9W10sQj10aGlzO2Z1bmN0aW9uIEEoTil7TiYmVC5wdXNoKGkoQixOLGQpKX1yZXR1cm4gbShBKSxBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLFQpfX07ZS5SZWN1cnNpdmVWaXNpdG9yPWw7ZnVuY3Rpb24gaChkKXtsZXQgbT1kLnNvdXJjZVNwYW4uc3RhcnQub2Zmc2V0LFQ9ZC5zb3VyY2VTcGFuLmVuZC5vZmZzZXQ7cmV0dXJuIGQgaW5zdGFuY2VvZiBwJiYoZC5lbmRTb3VyY2VTcGFuP1Q9ZC5lbmRTb3VyY2VTcGFuLmVuZC5vZmZzZXQ6ZC5jaGlsZHJlbiYmZC5jaGlsZHJlbi5sZW5ndGgmJihUPWgoZC5jaGlsZHJlbltkLmNoaWxkcmVuLmxlbmd0aC0xXSkuZW5kKSkse3N0YXJ0Om0sZW5kOlR9fWZ1bmN0aW9uIEMoZCxtKXtsZXQgVD1bXSxCPW5ldyBjbGFzcyBleHRlbmRzIGx7dmlzaXQoQSxOKXtsZXQgUj1oKEEpO2lmKFIuc3RhcnQ8PW0mJm08Ui5lbmQpVC5wdXNoKEEpO2Vsc2UgcmV0dXJuITB9fTtyZXR1cm4gaShCLGQpLG5ldyByLkFzdFBhdGgoVCxtKX1lLmZpbmROb2RlPUN9fSksWEQ9SSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1odG1sLXBhcnNlci9saWIvY29tcGlsZXIvc3JjL2Fzc2VydGlvbnMuanNcIihlKXtcInVzZSBzdHJpY3RcIjtxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7ZnVuY3Rpb24gcihjLG4pe2lmKG4hPW51bGwpe2lmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkICdcIi5jb25jYXQoYyxcIicgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cIikpO2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSs9MSlpZih0eXBlb2YgblthXSE9XCJzdHJpbmdcIil0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCAnXCIuY29uY2F0KGMsXCInIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MuXCIpKX19ZS5hc3NlcnRBcnJheU9mU3RyaW5ncz1yO3ZhciB0PVsvXlxccyokLywvWzw+XS8sL15be31dJC8sLyYoI3xbYS16XSkvaSwvXlxcL1xcLy9dO2Z1bmN0aW9uIHMoYyxuKXtpZihuIT1udWxsJiYhKEFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoPT0yKSl0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCAnXCIuY29uY2F0KGMsXCInIHRvIGJlIGFuIGFycmF5LCBbc3RhcnQsIGVuZF0uXCIpKTtpZihuIT1udWxsKXtsZXQgYT1uWzBdLHA9blsxXTt0LmZvckVhY2goRD0+e2lmKEQudGVzdChhKXx8RC50ZXN0KHApKXRocm93IG5ldyBFcnJvcihcIlsnXCIuY29uY2F0KGEsXCInLCAnXCIpLmNvbmNhdChwLFwiJ10gY29udGFpbnMgdW51c2FibGUgaW50ZXJwb2xhdGlvbiBzeW1ib2wuXCIpKX0pfX1lLmFzc2VydEludGVycG9sYXRpb25TeW1ib2xzPXN9fSksSEQ9SSh7XCJub2RlX21vZHVsZXMvYW5ndWxhci1odG1sLXBhcnNlci9saWIvY29tcGlsZXIvc3JjL21sX3BhcnNlci9pbnRlcnBvbGF0aW9uX2NvbmZpZy5qc1wiKGUpe1widXNlIHN0cmljdFwiO3EoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1YRCgpLHQ9Y2xhc3N7Y29uc3RydWN0b3IocyxjKXt0aGlzLnN0YXJ0PXMsdGhpcy5lbmQ9Y31zdGF0aWMgZnJvbUFycmF5KHMpe3JldHVybiBzPyhyLmFzc2VydEludGVycG9sYXRpb25TeW1ib2xzKFwiaW50ZXJwb2xhdGlvblwiLHMpLG5ldyB0KHNbMF0sc1sxXSkpOmUuREVGQVVMVF9JTlRFUlBPTEFUSU9OX0NPTkZJR319O2UuSW50ZXJwb2xhdGlvbkNvbmZpZz10LGUuREVGQVVMVF9JTlRFUlBPTEFUSU9OX0NPTkZJRz1uZXcgdChcInt7XCIsXCJ9fVwiKX19KSx6RD1JKHtcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWh0bWwtcGFyc2VyL2xpYi9jb21waWxlci9zcmMvbWxfcGFyc2VyL2xleGVyLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7cSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPWhzKCksdD1UZSgpLHM9SEQoKSxjPVplKCksbjsoZnVuY3Rpb24odSl7dVt1LlRBR19PUEVOX1NUQVJUPTBdPVwiVEFHX09QRU5fU1RBUlRcIix1W3UuVEFHX09QRU5fRU5EPTFdPVwiVEFHX09QRU5fRU5EXCIsdVt1LlRBR19PUEVOX0VORF9WT0lEPTJdPVwiVEFHX09QRU5fRU5EX1ZPSURcIix1W3UuVEFHX0NMT1NFPTNdPVwiVEFHX0NMT1NFXCIsdVt1LlRFWFQ9NF09XCJURVhUXCIsdVt1LkVTQ0FQQUJMRV9SQVdfVEVYVD01XT1cIkVTQ0FQQUJMRV9SQVdfVEVYVFwiLHVbdS5SQVdfVEVYVD02XT1cIlJBV19URVhUXCIsdVt1LkNPTU1FTlRfU1RBUlQ9N109XCJDT01NRU5UX1NUQVJUXCIsdVt1LkNPTU1FTlRfRU5EPThdPVwiQ09NTUVOVF9FTkRcIix1W3UuQ0RBVEFfU1RBUlQ9OV09XCJDREFUQV9TVEFSVFwiLHVbdS5DREFUQV9FTkQ9MTBdPVwiQ0RBVEFfRU5EXCIsdVt1LkFUVFJfTkFNRT0xMV09XCJBVFRSX05BTUVcIix1W3UuQVRUUl9RVU9URT0xMl09XCJBVFRSX1FVT1RFXCIsdVt1LkFUVFJfVkFMVUU9MTNdPVwiQVRUUl9WQUxVRVwiLHVbdS5ET0NfVFlQRV9TVEFSVD0xNF09XCJET0NfVFlQRV9TVEFSVFwiLHVbdS5ET0NfVFlQRV9FTkQ9MTVdPVwiRE9DX1RZUEVfRU5EXCIsdVt1LkVYUEFOU0lPTl9GT1JNX1NUQVJUPTE2XT1cIkVYUEFOU0lPTl9GT1JNX1NUQVJUXCIsdVt1LkVYUEFOU0lPTl9DQVNFX1ZBTFVFPTE3XT1cIkVYUEFOU0lPTl9DQVNFX1ZBTFVFXCIsdVt1LkVYUEFOU0lPTl9DQVNFX0VYUF9TVEFSVD0xOF09XCJFWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlRcIix1W3UuRVhQQU5TSU9OX0NBU0VfRVhQX0VORD0xOV09XCJFWFBBTlNJT05fQ0FTRV9FWFBfRU5EXCIsdVt1LkVYUEFOU0lPTl9GT1JNX0VORD0yMF09XCJFWFBBTlNJT05fRk9STV9FTkRcIix1W3UuRU9GPTIxXT1cIkVPRlwifSkobj1lLlRva2VuVHlwZXx8KGUuVG9rZW5UeXBlPXt9KSk7dmFyIGE9Y2xhc3N7Y29uc3RydWN0b3IodSxvLEUpe3RoaXMudHlwZT11LHRoaXMucGFydHM9byx0aGlzLnNvdXJjZVNwYW49RX19O2UuVG9rZW49YTt2YXIgcD1jbGFzcyBleHRlbmRzIHQuUGFyc2VFcnJvcntjb25zdHJ1Y3Rvcih1LG8sRSl7c3VwZXIoRSx1KSx0aGlzLnRva2VuVHlwZT1vfX07ZS5Ub2tlbkVycm9yPXA7dmFyIEQ9Y2xhc3N7Y29uc3RydWN0b3IodSxvKXt0aGlzLnRva2Vucz11LHRoaXMuZXJyb3JzPW99fTtlLlRva2VuaXplUmVzdWx0PUQ7ZnVuY3Rpb24gZyh1LG8sRSl7bGV0IGY9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOnt9O3JldHVybiBuZXcgZChuZXcgdC5QYXJzZVNvdXJjZUZpbGUodSxvKSxFLGYpLnRva2VuaXplKCl9ZS50b2tlbml6ZT1nO3ZhciBpPS9cXHJcXG4/L2c7ZnVuY3Rpb24gbCh1KXtsZXQgbz11PT09ci4kRU9GP1wiRU9GXCI6U3RyaW5nLmZyb21DaGFyQ29kZSh1KTtyZXR1cm4nVW5leHBlY3RlZCBjaGFyYWN0ZXIgXCInLmNvbmNhdChvLCdcIicpfWZ1bmN0aW9uIGgodSl7cmV0dXJuJ1Vua25vd24gZW50aXR5IFwiJy5jb25jYXQodSwnXCIgLSB1c2UgdGhlIFwiJiM8ZGVjaW1hbD47XCIgb3IgIFwiJiN4PGhleD47XCIgc3ludGF4Jyl9dmFyIEM9Y2xhc3N7Y29uc3RydWN0b3IodSl7dGhpcy5lcnJvcj11fX0sZD1jbGFzc3tjb25zdHJ1Y3Rvcih1LG8sRSl7dGhpcy5fZ2V0VGFnQ29udGVudFR5cGU9byx0aGlzLl9jdXJyZW50VG9rZW5TdGFydD1udWxsLHRoaXMuX2N1cnJlbnRUb2tlblR5cGU9bnVsbCx0aGlzLl9leHBhbnNpb25DYXNlU3RhY2s9W10sdGhpcy5faW5JbnRlcnBvbGF0aW9uPSExLHRoaXMuX2Z1bGxOYW1lU3RhY2s9W10sdGhpcy50b2tlbnM9W10sdGhpcy5lcnJvcnM9W10sdGhpcy5fdG9rZW5pemVJY3U9RS50b2tlbml6ZUV4cGFuc2lvbkZvcm1zfHwhMSx0aGlzLl9pbnRlcnBvbGF0aW9uQ29uZmlnPUUuaW50ZXJwb2xhdGlvbkNvbmZpZ3x8cy5ERUZBVUxUX0lOVEVSUE9MQVRJT05fQ09ORklHLHRoaXMuX2xlYWRpbmdUcml2aWFDb2RlUG9pbnRzPUUubGVhZGluZ1RyaXZpYUNoYXJzJiZFLmxlYWRpbmdUcml2aWFDaGFycy5tYXAoRj0+Ri5jb2RlUG9pbnRBdCgwKXx8MCksdGhpcy5fY2FuU2VsZkNsb3NlPUUuY2FuU2VsZkNsb3NlfHwhMSx0aGlzLl9hbGxvd0h0bUNvbXBvbmVudENsb3NpbmdUYWdzPUUuYWxsb3dIdG1Db21wb25lbnRDbG9zaW5nVGFnc3x8ITE7bGV0IGY9RS5yYW5nZXx8e2VuZFBvczp1LmNvbnRlbnQubGVuZ3RoLHN0YXJ0UG9zOjAsc3RhcnRMaW5lOjAsc3RhcnRDb2w6MH07dGhpcy5fY3Vyc29yPUUuZXNjYXBlZFN0cmluZz9uZXcgayh1LGYpOm5ldyB4KHUsZik7dHJ5e3RoaXMuX2N1cnNvci5pbml0KCl9Y2F0Y2goRil7dGhpcy5oYW5kbGVFcnJvcihGKX19X3Byb2Nlc3NDYXJyaWFnZVJldHVybnModSl7cmV0dXJuIHUucmVwbGFjZShpLGBcbmApfXRva2VuaXplKCl7Zm9yKDt0aGlzLl9jdXJzb3IucGVlaygpIT09ci4kRU9GOyl7bGV0IHU9dGhpcy5fY3Vyc29yLmNsb25lKCk7dHJ5e2lmKHRoaXMuX2F0dGVtcHRDaGFyQ29kZShyLiRMVCkpaWYodGhpcy5fYXR0ZW1wdENoYXJDb2RlKHIuJEJBTkcpKXRoaXMuX2F0dGVtcHRTdHIoXCJbQ0RBVEFbXCIpP3RoaXMuX2NvbnN1bWVDZGF0YSh1KTp0aGlzLl9hdHRlbXB0U3RyKFwiLS1cIik/dGhpcy5fY29uc3VtZUNvbW1lbnQodSk6dGhpcy5fYXR0ZW1wdFN0ckNhc2VJbnNlbnNpdGl2ZShcImRvY3R5cGVcIik/dGhpcy5fY29uc3VtZURvY1R5cGUodSk6dGhpcy5fY29uc3VtZUJvZ3VzQ29tbWVudCh1KTtlbHNlIGlmKHRoaXMuX2F0dGVtcHRDaGFyQ29kZShyLiRTTEFTSCkpdGhpcy5fY29uc3VtZVRhZ0Nsb3NlKHUpO2Vsc2V7bGV0IG89dGhpcy5fY3Vyc29yLmNsb25lKCk7dGhpcy5fYXR0ZW1wdENoYXJDb2RlKHIuJFFVRVNUSU9OKT8odGhpcy5fY3Vyc29yPW8sdGhpcy5fY29uc3VtZUJvZ3VzQ29tbWVudCh1KSk6dGhpcy5fY29uc3VtZVRhZ09wZW4odSl9ZWxzZSB0aGlzLl90b2tlbml6ZUljdSYmdGhpcy5fdG9rZW5pemVFeHBhbnNpb25Gb3JtKCl8fHRoaXMuX2NvbnN1bWVUZXh0KCl9Y2F0Y2gobyl7dGhpcy5oYW5kbGVFcnJvcihvKX19cmV0dXJuIHRoaXMuX2JlZ2luVG9rZW4obi5FT0YpLHRoaXMuX2VuZFRva2VuKFtdKSxuZXcgRChPKHRoaXMudG9rZW5zKSx0aGlzLmVycm9ycyl9X3Rva2VuaXplRXhwYW5zaW9uRm9ybSgpe2lmKHRoaXMuaXNFeHBhbnNpb25Gb3JtU3RhcnQoKSlyZXR1cm4gdGhpcy5fY29uc3VtZUV4cGFuc2lvbkZvcm1TdGFydCgpLCEwO2lmKFIodGhpcy5fY3Vyc29yLnBlZWsoKSkmJnRoaXMuX2lzSW5FeHBhbnNpb25Gb3JtKCkpcmV0dXJuIHRoaXMuX2NvbnN1bWVFeHBhbnNpb25DYXNlU3RhcnQoKSwhMDtpZih0aGlzLl9jdXJzb3IucGVlaygpPT09ci4kUkJSQUNFKXtpZih0aGlzLl9pc0luRXhwYW5zaW9uQ2FzZSgpKXJldHVybiB0aGlzLl9jb25zdW1lRXhwYW5zaW9uQ2FzZUVuZCgpLCEwO2lmKHRoaXMuX2lzSW5FeHBhbnNpb25Gb3JtKCkpcmV0dXJuIHRoaXMuX2NvbnN1bWVFeHBhbnNpb25Gb3JtRW5kKCksITB9cmV0dXJuITF9X2JlZ2luVG9rZW4odSl7bGV0IG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnRoaXMuX2N1cnNvci5jbG9uZSgpO3RoaXMuX2N1cnJlbnRUb2tlblN0YXJ0PW8sdGhpcy5fY3VycmVudFRva2VuVHlwZT11fV9lbmRUb2tlbih1KXtsZXQgbz1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06dGhpcy5fY3Vyc29yLmNsb25lKCk7aWYodGhpcy5fY3VycmVudFRva2VuU3RhcnQ9PT1udWxsKXRocm93IG5ldyBwKFwiUHJvZ3JhbW1pbmcgZXJyb3IgLSBhdHRlbXB0ZWQgdG8gZW5kIGEgdG9rZW4gd2hlbiB0aGVyZSB3YXMgbm8gc3RhcnQgdG8gdGhlIHRva2VuXCIsdGhpcy5fY3VycmVudFRva2VuVHlwZSx0aGlzLl9jdXJzb3IuZ2V0U3BhbihvKSk7aWYodGhpcy5fY3VycmVudFRva2VuVHlwZT09PW51bGwpdGhyb3cgbmV3IHAoXCJQcm9ncmFtbWluZyBlcnJvciAtIGF0dGVtcHRlZCB0byBlbmQgYSB0b2tlbiB3aGljaCBoYXMgbm8gdG9rZW4gdHlwZVwiLG51bGwsdGhpcy5fY3Vyc29yLmdldFNwYW4odGhpcy5fY3VycmVudFRva2VuU3RhcnQpKTtsZXQgRT1uZXcgYSh0aGlzLl9jdXJyZW50VG9rZW5UeXBlLHUsdGhpcy5fY3Vyc29yLmdldFNwYW4odGhpcy5fY3VycmVudFRva2VuU3RhcnQsdGhpcy5fbGVhZGluZ1RyaXZpYUNvZGVQb2ludHMpKTtyZXR1cm4gdGhpcy50b2tlbnMucHVzaChFKSx0aGlzLl9jdXJyZW50VG9rZW5TdGFydD1udWxsLHRoaXMuX2N1cnJlbnRUb2tlblR5cGU9bnVsbCxFfV9jcmVhdGVFcnJvcih1LG8pe3RoaXMuX2lzSW5FeHBhbnNpb25Gb3JtKCkmJih1Kz1gIChEbyB5b3UgaGF2ZSBhbiB1bmVzY2FwZWQgXCJ7XCIgaW4geW91ciB0ZW1wbGF0ZT8gVXNlIFwie3sgJ3snIH19XCIpIHRvIGVzY2FwZSBpdC4pYCk7bGV0IEU9bmV3IHAodSx0aGlzLl9jdXJyZW50VG9rZW5UeXBlLG8pO3JldHVybiB0aGlzLl9jdXJyZW50VG9rZW5TdGFydD1udWxsLHRoaXMuX2N1cnJlbnRUb2tlblR5cGU9bnVsbCxuZXcgQyhFKX1oYW5kbGVFcnJvcih1KXtpZih1IGluc3RhbmNlb2YgTSYmKHU9dGhpcy5fY3JlYXRlRXJyb3IodS5tc2csdGhpcy5fY3Vyc29yLmdldFNwYW4odS5jdXJzb3IpKSksdSBpbnN0YW5jZW9mIEMpdGhpcy5lcnJvcnMucHVzaCh1LmVycm9yKTtlbHNlIHRocm93IHV9X2F0dGVtcHRDaGFyQ29kZSh1KXtyZXR1cm4gdGhpcy5fY3Vyc29yLnBlZWsoKT09PXU/KHRoaXMuX2N1cnNvci5hZHZhbmNlKCksITApOiExfV9hdHRlbXB0Q2hhckNvZGVDYXNlSW5zZW5zaXRpdmUodSl7cmV0dXJuICQodGhpcy5fY3Vyc29yLnBlZWsoKSx1KT8odGhpcy5fY3Vyc29yLmFkdmFuY2UoKSwhMCk6ITF9X3JlcXVpcmVDaGFyQ29kZSh1KXtsZXQgbz10aGlzLl9jdXJzb3IuY2xvbmUoKTtpZighdGhpcy5fYXR0ZW1wdENoYXJDb2RlKHUpKXRocm93IHRoaXMuX2NyZWF0ZUVycm9yKGwodGhpcy5fY3Vyc29yLnBlZWsoKSksdGhpcy5fY3Vyc29yLmdldFNwYW4obykpfV9hdHRlbXB0U3RyKHUpe2xldCBvPXUubGVuZ3RoO2lmKHRoaXMuX2N1cnNvci5jaGFyc0xlZnQoKTxvKXJldHVybiExO2xldCBFPXRoaXMuX2N1cnNvci5jbG9uZSgpO2ZvcihsZXQgZj0wO2Y8bztmKyspaWYoIXRoaXMuX2F0dGVtcHRDaGFyQ29kZSh1LmNoYXJDb2RlQXQoZikpKXJldHVybiB0aGlzLl9jdXJzb3I9RSwhMTtyZXR1cm4hMH1fYXR0ZW1wdFN0ckNhc2VJbnNlbnNpdGl2ZSh1KXtmb3IobGV0IG89MDtvPHUubGVuZ3RoO28rKylpZighdGhpcy5fYXR0ZW1wdENoYXJDb2RlQ2FzZUluc2Vuc2l0aXZlKHUuY2hhckNvZGVBdChvKSkpcmV0dXJuITE7cmV0dXJuITB9X3JlcXVpcmVTdHIodSl7bGV0IG89dGhpcy5fY3Vyc29yLmNsb25lKCk7aWYoIXRoaXMuX2F0dGVtcHRTdHIodSkpdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IobCh0aGlzLl9jdXJzb3IucGVlaygpKSx0aGlzLl9jdXJzb3IuZ2V0U3BhbihvKSl9X3JlcXVpcmVTdHJDYXNlSW5zZW5zaXRpdmUodSl7bGV0IG89dGhpcy5fY3Vyc29yLmNsb25lKCk7aWYoIXRoaXMuX2F0dGVtcHRTdHJDYXNlSW5zZW5zaXRpdmUodSkpdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IobCh0aGlzLl9jdXJzb3IucGVlaygpKSx0aGlzLl9jdXJzb3IuZ2V0U3BhbihvKSl9X2F0dGVtcHRDaGFyQ29kZVVudGlsRm4odSl7Zm9yKDshdSh0aGlzLl9jdXJzb3IucGVlaygpKTspdGhpcy5fY3Vyc29yLmFkdmFuY2UoKX1fcmVxdWlyZUNoYXJDb2RlVW50aWxGbih1LG8pe2xldCBFPXRoaXMuX2N1cnNvci5jbG9uZSgpO2lmKHRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4odSksdGhpcy5fY3Vyc29yLmNsb25lKCkuZGlmZihFKTxvKXRocm93IHRoaXMuX2NyZWF0ZUVycm9yKGwodGhpcy5fY3Vyc29yLnBlZWsoKSksdGhpcy5fY3Vyc29yLmdldFNwYW4oRSkpfV9hdHRlbXB0VW50aWxDaGFyKHUpe2Zvcig7dGhpcy5fY3Vyc29yLnBlZWsoKSE9PXU7KXRoaXMuX2N1cnNvci5hZHZhbmNlKCl9X3JlYWRDaGFyKHUpe2lmKHUmJnRoaXMuX2N1cnNvci5wZWVrKCk9PT1yLiRBTVBFUlNBTkQpcmV0dXJuIHRoaXMuX2RlY29kZUVudGl0eSgpO3tsZXQgbz1TdHJpbmcuZnJvbUNvZGVQb2ludCh0aGlzLl9jdXJzb3IucGVlaygpKTtyZXR1cm4gdGhpcy5fY3Vyc29yLmFkdmFuY2UoKSxvfX1fZGVjb2RlRW50aXR5KCl7bGV0IHU9dGhpcy5fY3Vyc29yLmNsb25lKCk7aWYodGhpcy5fY3Vyc29yLmFkdmFuY2UoKSx0aGlzLl9hdHRlbXB0Q2hhckNvZGUoci4kSEFTSCkpe2xldCBvPXRoaXMuX2F0dGVtcHRDaGFyQ29kZShyLiR4KXx8dGhpcy5fYXR0ZW1wdENoYXJDb2RlKHIuJFgpLEU9dGhpcy5fY3Vyc29yLmNsb25lKCk7aWYodGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihBKSx0aGlzLl9jdXJzb3IucGVlaygpIT1yLiRTRU1JQ09MT04pdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IobCh0aGlzLl9jdXJzb3IucGVlaygpKSx0aGlzLl9jdXJzb3IuZ2V0U3BhbigpKTtsZXQgZj10aGlzLl9jdXJzb3IuZ2V0Q2hhcnMoRSk7dGhpcy5fY3Vyc29yLmFkdmFuY2UoKTt0cnl7bGV0IEY9cGFyc2VJbnQoZixvPzE2OjEwKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShGKX1jYXRjaHt0aHJvdyB0aGlzLl9jcmVhdGVFcnJvcihoKHRoaXMuX2N1cnNvci5nZXRDaGFycyh1KSksdGhpcy5fY3Vyc29yLmdldFNwYW4oKSl9fWVsc2V7bGV0IG89dGhpcy5fY3Vyc29yLmNsb25lKCk7aWYodGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihOKSx0aGlzLl9jdXJzb3IucGVlaygpIT1yLiRTRU1JQ09MT04pcmV0dXJuIHRoaXMuX2N1cnNvcj1vLFwiJlwiO2xldCBFPXRoaXMuX2N1cnNvci5nZXRDaGFycyhvKTt0aGlzLl9jdXJzb3IuYWR2YW5jZSgpO2xldCBmPWMuTkFNRURfRU5USVRJRVNbRV07aWYoIWYpdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IoaChFKSx0aGlzLl9jdXJzb3IuZ2V0U3Bhbih1KSk7cmV0dXJuIGZ9fV9jb25zdW1lUmF3VGV4dCh1LG8pe3RoaXMuX2JlZ2luVG9rZW4odT9uLkVTQ0FQQUJMRV9SQVdfVEVYVDpuLlJBV19URVhUKTtsZXQgRT1bXTtmb3IoOzspe2xldCBmPXRoaXMuX2N1cnNvci5jbG9uZSgpLEY9bygpO2lmKHRoaXMuX2N1cnNvcj1mLEYpYnJlYWs7RS5wdXNoKHRoaXMuX3JlYWRDaGFyKHUpKX1yZXR1cm4gdGhpcy5fZW5kVG9rZW4oW3RoaXMuX3Byb2Nlc3NDYXJyaWFnZVJldHVybnMoRS5qb2luKFwiXCIpKV0pfV9jb25zdW1lQ29tbWVudCh1KXt0aGlzLl9iZWdpblRva2VuKG4uQ09NTUVOVF9TVEFSVCx1KSx0aGlzLl9lbmRUb2tlbihbXSksdGhpcy5fY29uc3VtZVJhd1RleHQoITEsKCk9PnRoaXMuX2F0dGVtcHRTdHIoXCItLT5cIikpLHRoaXMuX2JlZ2luVG9rZW4obi5DT01NRU5UX0VORCksdGhpcy5fcmVxdWlyZVN0cihcIi0tPlwiKSx0aGlzLl9lbmRUb2tlbihbXSl9X2NvbnN1bWVCb2d1c0NvbW1lbnQodSl7dGhpcy5fYmVnaW5Ub2tlbihuLkNPTU1FTlRfU1RBUlQsdSksdGhpcy5fZW5kVG9rZW4oW10pLHRoaXMuX2NvbnN1bWVSYXdUZXh0KCExLCgpPT50aGlzLl9jdXJzb3IucGVlaygpPT09ci4kR1QpLHRoaXMuX2JlZ2luVG9rZW4obi5DT01NRU5UX0VORCksdGhpcy5fY3Vyc29yLmFkdmFuY2UoKSx0aGlzLl9lbmRUb2tlbihbXSl9X2NvbnN1bWVDZGF0YSh1KXt0aGlzLl9iZWdpblRva2VuKG4uQ0RBVEFfU1RBUlQsdSksdGhpcy5fZW5kVG9rZW4oW10pLHRoaXMuX2NvbnN1bWVSYXdUZXh0KCExLCgpPT50aGlzLl9hdHRlbXB0U3RyKFwiXV0+XCIpKSx0aGlzLl9iZWdpblRva2VuKG4uQ0RBVEFfRU5EKSx0aGlzLl9yZXF1aXJlU3RyKFwiXV0+XCIpLHRoaXMuX2VuZFRva2VuKFtdKX1fY29uc3VtZURvY1R5cGUodSl7dGhpcy5fYmVnaW5Ub2tlbihuLkRPQ19UWVBFX1NUQVJULHUpLHRoaXMuX2VuZFRva2VuKFtdKSx0aGlzLl9jb25zdW1lUmF3VGV4dCghMSwoKT0+dGhpcy5fY3Vyc29yLnBlZWsoKT09PXIuJEdUKSx0aGlzLl9iZWdpblRva2VuKG4uRE9DX1RZUEVfRU5EKSx0aGlzLl9jdXJzb3IuYWR2YW5jZSgpLHRoaXMuX2VuZFRva2VuKFtdKX1fY29uc3VtZVByZWZpeEFuZE5hbWUoKXtsZXQgdT10aGlzLl9jdXJzb3IuY2xvbmUoKSxvPVwiXCI7Zm9yKDt0aGlzLl9jdXJzb3IucGVlaygpIT09ci4kQ09MT04mJiFCKHRoaXMuX2N1cnNvci5wZWVrKCkpOyl0aGlzLl9jdXJzb3IuYWR2YW5jZSgpO2xldCBFO3RoaXMuX2N1cnNvci5wZWVrKCk9PT1yLiRDT0xPTj8obz10aGlzLl9jdXJzb3IuZ2V0Q2hhcnModSksdGhpcy5fY3Vyc29yLmFkdmFuY2UoKSxFPXRoaXMuX2N1cnNvci5jbG9uZSgpKTpFPXUsdGhpcy5fcmVxdWlyZUNoYXJDb2RlVW50aWxGbihULG89PT1cIlwiPzA6MSk7bGV0IGY9dGhpcy5fY3Vyc29yLmdldENoYXJzKEUpO3JldHVybltvLGZdfV9jb25zdW1lVGFnT3Blbih1KXtsZXQgbyxFLGYsRj10aGlzLnRva2Vucy5sZW5ndGgsUD10aGlzLl9jdXJzb3IuY2xvbmUoKSxqPVtdO3RyeXtpZighci5pc0FzY2lpTGV0dGVyKHRoaXMuX2N1cnNvci5wZWVrKCkpKXRocm93IHRoaXMuX2NyZWF0ZUVycm9yKGwodGhpcy5fY3Vyc29yLnBlZWsoKSksdGhpcy5fY3Vyc29yLmdldFNwYW4odSkpO2ZvcihmPXRoaXMuX2NvbnN1bWVUYWdPcGVuU3RhcnQodSksRT1mLnBhcnRzWzBdLG89Zi5wYXJ0c1sxXSx0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKG0pO3RoaXMuX2N1cnNvci5wZWVrKCkhPT1yLiRTTEFTSCYmdGhpcy5fY3Vyc29yLnBlZWsoKSE9PXIuJEdUOyl7bGV0W1gsSF09dGhpcy5fY29uc3VtZUF0dHJpYnV0ZU5hbWUoKTtpZih0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKG0pLHRoaXMuX2F0dGVtcHRDaGFyQ29kZShyLiRFUSkpe3RoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4obSk7bGV0IHo9dGhpcy5fY29uc3VtZUF0dHJpYnV0ZVZhbHVlKCk7ai5wdXNoKHtwcmVmaXg6WCxuYW1lOkgsdmFsdWU6en0pfWVsc2Ugai5wdXNoKHtwcmVmaXg6WCxuYW1lOkh9KTt0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKG0pfXRoaXMuX2NvbnN1bWVUYWdPcGVuRW5kKCl9Y2F0Y2goWCl7aWYoWCBpbnN0YW5jZW9mIEMpe3RoaXMuX2N1cnNvcj1QLGYmJih0aGlzLnRva2Vucy5sZW5ndGg9RiksdGhpcy5fYmVnaW5Ub2tlbihuLlRFWFQsdSksdGhpcy5fZW5kVG9rZW4oW1wiPFwiXSk7cmV0dXJufXRocm93IFh9aWYodGhpcy5fY2FuU2VsZkNsb3NlJiZ0aGlzLnRva2Vuc1t0aGlzLnRva2Vucy5sZW5ndGgtMV0udHlwZT09PW4uVEFHX09QRU5fRU5EX1ZPSUQpcmV0dXJuO2xldCBXPXRoaXMuX2dldFRhZ0NvbnRlbnRUeXBlKG8sRSx0aGlzLl9mdWxsTmFtZVN0YWNrLmxlbmd0aD4wLGopO3RoaXMuX2hhbmRsZUZ1bGxOYW1lU3RhY2tGb3JUYWdPcGVuKEUsbyksVz09PWMuVGFnQ29udGVudFR5cGUuUkFXX1RFWFQ/dGhpcy5fY29uc3VtZVJhd1RleHRXaXRoVGFnQ2xvc2UoRSxvLCExKTpXPT09Yy5UYWdDb250ZW50VHlwZS5FU0NBUEFCTEVfUkFXX1RFWFQmJnRoaXMuX2NvbnN1bWVSYXdUZXh0V2l0aFRhZ0Nsb3NlKEUsbywhMCl9X2NvbnN1bWVSYXdUZXh0V2l0aFRhZ0Nsb3NlKHUsbyxFKXtsZXQgZj10aGlzLl9jb25zdW1lUmF3VGV4dChFLCgpPT4hdGhpcy5fYXR0ZW1wdENoYXJDb2RlKHIuJExUKXx8IXRoaXMuX2F0dGVtcHRDaGFyQ29kZShyLiRTTEFTSCl8fCh0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKG0pLCF0aGlzLl9hdHRlbXB0U3RyQ2FzZUluc2Vuc2l0aXZlKHU/XCJcIi5jb25jYXQodSxcIjpcIikuY29uY2F0KG8pOm8pKT8hMToodGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihtKSx0aGlzLl9hdHRlbXB0Q2hhckNvZGUoci4kR1QpKSk7dGhpcy5fYmVnaW5Ub2tlbihuLlRBR19DTE9TRSksdGhpcy5fcmVxdWlyZUNoYXJDb2RlVW50aWxGbihGPT5GPT09ci4kR1QsMyksdGhpcy5fY3Vyc29yLmFkdmFuY2UoKSx0aGlzLl9lbmRUb2tlbihbdSxvXSksdGhpcy5faGFuZGxlRnVsbE5hbWVTdGFja0ZvclRhZ0Nsb3NlKHUsbyl9X2NvbnN1bWVUYWdPcGVuU3RhcnQodSl7dGhpcy5fYmVnaW5Ub2tlbihuLlRBR19PUEVOX1NUQVJULHUpO2xldCBvPXRoaXMuX2NvbnN1bWVQcmVmaXhBbmROYW1lKCk7cmV0dXJuIHRoaXMuX2VuZFRva2VuKG8pfV9jb25zdW1lQXR0cmlidXRlTmFtZSgpe2xldCB1PXRoaXMuX2N1cnNvci5wZWVrKCk7aWYodT09PXIuJFNRfHx1PT09ci4kRFEpdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IobCh1KSx0aGlzLl9jdXJzb3IuZ2V0U3BhbigpKTt0aGlzLl9iZWdpblRva2VuKG4uQVRUUl9OQU1FKTtsZXQgbz10aGlzLl9jb25zdW1lUHJlZml4QW5kTmFtZSgpO3JldHVybiB0aGlzLl9lbmRUb2tlbihvKSxvfV9jb25zdW1lQXR0cmlidXRlVmFsdWUoKXtsZXQgdTtpZih0aGlzLl9jdXJzb3IucGVlaygpPT09ci4kU1F8fHRoaXMuX2N1cnNvci5wZWVrKCk9PT1yLiREUSl7dGhpcy5fYmVnaW5Ub2tlbihuLkFUVFJfUVVPVEUpO2xldCBvPXRoaXMuX2N1cnNvci5wZWVrKCk7dGhpcy5fY3Vyc29yLmFkdmFuY2UoKSx0aGlzLl9lbmRUb2tlbihbU3RyaW5nLmZyb21Db2RlUG9pbnQobyldKSx0aGlzLl9iZWdpblRva2VuKG4uQVRUUl9WQUxVRSk7bGV0IEU9W107Zm9yKDt0aGlzLl9jdXJzb3IucGVlaygpIT09bzspRS5wdXNoKHRoaXMuX3JlYWRDaGFyKCEwKSk7dT10aGlzLl9wcm9jZXNzQ2FycmlhZ2VSZXR1cm5zKEUuam9pbihcIlwiKSksdGhpcy5fZW5kVG9rZW4oW3VdKSx0aGlzLl9iZWdpblRva2VuKG4uQVRUUl9RVU9URSksdGhpcy5fY3Vyc29yLmFkdmFuY2UoKSx0aGlzLl9lbmRUb2tlbihbU3RyaW5nLmZyb21Db2RlUG9pbnQobyldKX1lbHNle3RoaXMuX2JlZ2luVG9rZW4obi5BVFRSX1ZBTFVFKTtsZXQgbz10aGlzLl9jdXJzb3IuY2xvbmUoKTt0aGlzLl9yZXF1aXJlQ2hhckNvZGVVbnRpbEZuKFQsMSksdT10aGlzLl9wcm9jZXNzQ2FycmlhZ2VSZXR1cm5zKHRoaXMuX2N1cnNvci5nZXRDaGFycyhvKSksdGhpcy5fZW5kVG9rZW4oW3VdKX1yZXR1cm4gdX1fY29uc3VtZVRhZ09wZW5FbmQoKXtsZXQgdT10aGlzLl9hdHRlbXB0Q2hhckNvZGUoci4kU0xBU0gpP24uVEFHX09QRU5fRU5EX1ZPSUQ6bi5UQUdfT1BFTl9FTkQ7dGhpcy5fYmVnaW5Ub2tlbih1KSx0aGlzLl9yZXF1aXJlQ2hhckNvZGUoci4kR1QpLHRoaXMuX2VuZFRva2VuKFtdKX1fY29uc3VtZVRhZ0Nsb3NlKHUpe2lmKHRoaXMuX2JlZ2luVG9rZW4obi5UQUdfQ0xPU0UsdSksdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihtKSx0aGlzLl9hbGxvd0h0bUNvbXBvbmVudENsb3NpbmdUYWdzJiZ0aGlzLl9hdHRlbXB0Q2hhckNvZGUoci4kU0xBU0gpKXRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4obSksdGhpcy5fcmVxdWlyZUNoYXJDb2RlKHIuJEdUKSx0aGlzLl9lbmRUb2tlbihbXSk7ZWxzZXtsZXRbbyxFXT10aGlzLl9jb25zdW1lUHJlZml4QW5kTmFtZSgpO3RoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4obSksdGhpcy5fcmVxdWlyZUNoYXJDb2RlKHIuJEdUKSx0aGlzLl9lbmRUb2tlbihbbyxFXSksdGhpcy5faGFuZGxlRnVsbE5hbWVTdGFja0ZvclRhZ0Nsb3NlKG8sRSl9fV9jb25zdW1lRXhwYW5zaW9uRm9ybVN0YXJ0KCl7dGhpcy5fYmVnaW5Ub2tlbihuLkVYUEFOU0lPTl9GT1JNX1NUQVJUKSx0aGlzLl9yZXF1aXJlQ2hhckNvZGUoci4kTEJSQUNFKSx0aGlzLl9lbmRUb2tlbihbXSksdGhpcy5fZXhwYW5zaW9uQ2FzZVN0YWNrLnB1c2gobi5FWFBBTlNJT05fRk9STV9TVEFSVCksdGhpcy5fYmVnaW5Ub2tlbihuLlJBV19URVhUKTtsZXQgdT10aGlzLl9yZWFkVW50aWwoci4kQ09NTUEpO3RoaXMuX2VuZFRva2VuKFt1XSksdGhpcy5fcmVxdWlyZUNoYXJDb2RlKHIuJENPTU1BKSx0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKG0pLHRoaXMuX2JlZ2luVG9rZW4obi5SQVdfVEVYVCk7bGV0IG89dGhpcy5fcmVhZFVudGlsKHIuJENPTU1BKTt0aGlzLl9lbmRUb2tlbihbb10pLHRoaXMuX3JlcXVpcmVDaGFyQ29kZShyLiRDT01NQSksdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihtKX1fY29uc3VtZUV4cGFuc2lvbkNhc2VTdGFydCgpe3RoaXMuX2JlZ2luVG9rZW4obi5FWFBBTlNJT05fQ0FTRV9WQUxVRSk7bGV0IHU9dGhpcy5fcmVhZFVudGlsKHIuJExCUkFDRSkudHJpbSgpO3RoaXMuX2VuZFRva2VuKFt1XSksdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihtKSx0aGlzLl9iZWdpblRva2VuKG4uRVhQQU5TSU9OX0NBU0VfRVhQX1NUQVJUKSx0aGlzLl9yZXF1aXJlQ2hhckNvZGUoci4kTEJSQUNFKSx0aGlzLl9lbmRUb2tlbihbXSksdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihtKSx0aGlzLl9leHBhbnNpb25DYXNlU3RhY2sucHVzaChuLkVYUEFOU0lPTl9DQVNFX0VYUF9TVEFSVCl9X2NvbnN1bWVFeHBhbnNpb25DYXNlRW5kKCl7dGhpcy5fYmVnaW5Ub2tlbihuLkVYUEFOU0lPTl9DQVNFX0VYUF9FTkQpLHRoaXMuX3JlcXVpcmVDaGFyQ29kZShyLiRSQlJBQ0UpLHRoaXMuX2VuZFRva2VuKFtdKSx0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKG0pLHRoaXMuX2V4cGFuc2lvbkNhc2VTdGFjay5wb3AoKX1fY29uc3VtZUV4cGFuc2lvbkZvcm1FbmQoKXt0aGlzLl9iZWdpblRva2VuKG4uRVhQQU5TSU9OX0ZPUk1fRU5EKSx0aGlzLl9yZXF1aXJlQ2hhckNvZGUoci4kUkJSQUNFKSx0aGlzLl9lbmRUb2tlbihbXSksdGhpcy5fZXhwYW5zaW9uQ2FzZVN0YWNrLnBvcCgpfV9jb25zdW1lVGV4dCgpe2xldCB1PXRoaXMuX2N1cnNvci5jbG9uZSgpO3RoaXMuX2JlZ2luVG9rZW4obi5URVhULHUpO2xldCBvPVtdO2RvIHRoaXMuX2ludGVycG9sYXRpb25Db25maWcmJnRoaXMuX2F0dGVtcHRTdHIodGhpcy5faW50ZXJwb2xhdGlvbkNvbmZpZy5zdGFydCk/KG8ucHVzaCh0aGlzLl9pbnRlcnBvbGF0aW9uQ29uZmlnLnN0YXJ0KSx0aGlzLl9pbkludGVycG9sYXRpb249ITApOnRoaXMuX2ludGVycG9sYXRpb25Db25maWcmJnRoaXMuX2luSW50ZXJwb2xhdGlvbiYmdGhpcy5fYXR0ZW1wdFN0cih0aGlzLl9pbnRlcnBvbGF0aW9uQ29uZmlnLmVuZCk/KG8ucHVzaCh0aGlzLl9pbnRlcnBvbGF0aW9uQ29uZmlnLmVuZCksdGhpcy5faW5JbnRlcnBvbGF0aW9uPSExKTpvLnB1c2godGhpcy5fcmVhZENoYXIoITApKTt3aGlsZSghdGhpcy5faXNUZXh0RW5kKCkpO3RoaXMuX2VuZFRva2VuKFt0aGlzLl9wcm9jZXNzQ2FycmlhZ2VSZXR1cm5zKG8uam9pbihcIlwiKSldKX1faXNUZXh0RW5kKCl7cmV0dXJuISEodGhpcy5fY3Vyc29yLnBlZWsoKT09PXIuJExUfHx0aGlzLl9jdXJzb3IucGVlaygpPT09ci4kRU9GfHx0aGlzLl90b2tlbml6ZUljdSYmIXRoaXMuX2luSW50ZXJwb2xhdGlvbiYmKHRoaXMuaXNFeHBhbnNpb25Gb3JtU3RhcnQoKXx8dGhpcy5fY3Vyc29yLnBlZWsoKT09PXIuJFJCUkFDRSYmdGhpcy5faXNJbkV4cGFuc2lvbkNhc2UoKSkpfV9yZWFkVW50aWwodSl7bGV0IG89dGhpcy5fY3Vyc29yLmNsb25lKCk7cmV0dXJuIHRoaXMuX2F0dGVtcHRVbnRpbENoYXIodSksdGhpcy5fY3Vyc29yLmdldENoYXJzKG8pfV9pc0luRXhwYW5zaW9uQ2FzZSgpe3JldHVybiB0aGlzLl9leHBhbnNpb25DYXNlU3RhY2subGVuZ3RoPjAmJnRoaXMuX2V4cGFuc2lvbkNhc2VTdGFja1t0aGlzLl9leHBhbnNpb25DYXNlU3RhY2subGVuZ3RoLTFdPT09bi5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlR9X2lzSW5FeHBhbnNpb25Gb3JtKCl7cmV0dXJuIHRoaXMuX2V4cGFuc2lvbkNhc2VTdGFjay5sZW5ndGg+MCYmdGhpcy5fZXhwYW5zaW9uQ2FzZVN0YWNrW3RoaXMuX2V4cGFuc2lvbkNhc2VTdGFjay5sZW5ndGgtMV09PT1uLkVYUEFOU0lPTl9GT1JNX1NUQVJUfWlzRXhwYW5zaW9uRm9ybVN0YXJ0KCl7aWYodGhpcy5fY3Vyc29yLnBlZWsoKSE9PXIuJExCUkFDRSlyZXR1cm4hMTtpZih0aGlzLl9pbnRlcnBvbGF0aW9uQ29uZmlnKXtsZXQgdT10aGlzLl9jdXJzb3IuY2xvbmUoKSxvPXRoaXMuX2F0dGVtcHRTdHIodGhpcy5faW50ZXJwb2xhdGlvbkNvbmZpZy5zdGFydCk7cmV0dXJuIHRoaXMuX2N1cnNvcj11LCFvfXJldHVybiEwfV9oYW5kbGVGdWxsTmFtZVN0YWNrRm9yVGFnT3Blbih1LG8pe2xldCBFPWMubWVyZ2VOc0FuZE5hbWUodSxvKTsodGhpcy5fZnVsbE5hbWVTdGFjay5sZW5ndGg9PT0wfHx0aGlzLl9mdWxsTmFtZVN0YWNrW3RoaXMuX2Z1bGxOYW1lU3RhY2subGVuZ3RoLTFdPT09RSkmJnRoaXMuX2Z1bGxOYW1lU3RhY2sucHVzaChFKX1faGFuZGxlRnVsbE5hbWVTdGFja0ZvclRhZ0Nsb3NlKHUsbyl7bGV0IEU9Yy5tZXJnZU5zQW5kTmFtZSh1LG8pO3RoaXMuX2Z1bGxOYW1lU3RhY2subGVuZ3RoIT09MCYmdGhpcy5fZnVsbE5hbWVTdGFja1t0aGlzLl9mdWxsTmFtZVN0YWNrLmxlbmd0aC0xXT09PUUmJnRoaXMuX2Z1bGxOYW1lU3RhY2sucG9wKCl9fTtmdW5jdGlvbiBtKHUpe3JldHVybiFyLmlzV2hpdGVzcGFjZSh1KXx8dT09PXIuJEVPRn1mdW5jdGlvbiBUKHUpe3JldHVybiByLmlzV2hpdGVzcGFjZSh1KXx8dT09PXIuJEdUfHx1PT09ci4kU0xBU0h8fHU9PT1yLiRTUXx8dT09PXIuJERRfHx1PT09ci4kRVF9ZnVuY3Rpb24gQih1KXtyZXR1cm4odTxyLiRhfHxyLiR6PHUpJiYodTxyLiRBfHxyLiRaPHUpJiYodTxyLiQwfHx1PnIuJDkpfWZ1bmN0aW9uIEEodSl7cmV0dXJuIHU9PXIuJFNFTUlDT0xPTnx8dT09ci4kRU9GfHwhci5pc0FzY2lpSGV4RGlnaXQodSl9ZnVuY3Rpb24gTih1KXtyZXR1cm4gdT09ci4kU0VNSUNPTE9OfHx1PT1yLiRFT0Z8fCFyLmlzQXNjaWlMZXR0ZXIodSl9ZnVuY3Rpb24gUih1KXtyZXR1cm4gdT09PXIuJEVRfHxyLmlzQXNjaWlMZXR0ZXIodSl8fHIuaXNEaWdpdCh1KX1mdW5jdGlvbiAkKHUsbyl7cmV0dXJuIF8odSk9PV8obyl9ZnVuY3Rpb24gXyh1KXtyZXR1cm4gdT49ci4kYSYmdTw9ci4kej91LXIuJGErci4kQTp1fWZ1bmN0aW9uIE8odSl7bGV0IG89W10sRTtmb3IobGV0IGY9MDtmPHUubGVuZ3RoO2YrKyl7bGV0IEY9dVtmXTtFJiZFLnR5cGU9PW4uVEVYVCYmRi50eXBlPT1uLlRFWFQ/KEUucGFydHNbMF0rPUYucGFydHNbMF0sRS5zb3VyY2VTcGFuLmVuZD1GLnNvdXJjZVNwYW4uZW5kKTooRT1GLG8ucHVzaChFKSl9cmV0dXJuIG99dmFyIHg9Y2xhc3N7Y29uc3RydWN0b3IodSxvKXtpZih1IGluc3RhbmNlb2YgeCl0aGlzLmZpbGU9dS5maWxlLHRoaXMuaW5wdXQ9dS5pbnB1dCx0aGlzLmVuZD11LmVuZCx0aGlzLnN0YXRlPU9iamVjdC5hc3NpZ24oe30sdS5zdGF0ZSk7ZWxzZXtpZighbyl0aHJvdyBuZXcgRXJyb3IoXCJQcm9ncmFtbWluZyBlcnJvcjogdGhlIHJhbmdlIGFyZ3VtZW50IG11c3QgYmUgcHJvdmlkZWQgd2l0aCBhIGZpbGUgYXJndW1lbnQuXCIpO3RoaXMuZmlsZT11LHRoaXMuaW5wdXQ9dS5jb250ZW50LHRoaXMuZW5kPW8uZW5kUG9zLHRoaXMuc3RhdGU9e3BlZWs6LTEsb2Zmc2V0Om8uc3RhcnRQb3MsbGluZTpvLnN0YXJ0TGluZSxjb2x1bW46by5zdGFydENvbH19fWNsb25lKCl7cmV0dXJuIG5ldyB4KHRoaXMpfXBlZWsoKXtyZXR1cm4gdGhpcy5zdGF0ZS5wZWVrfWNoYXJzTGVmdCgpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXRlLm9mZnNldH1kaWZmKHUpe3JldHVybiB0aGlzLnN0YXRlLm9mZnNldC11LnN0YXRlLm9mZnNldH1hZHZhbmNlKCl7dGhpcy5hZHZhbmNlU3RhdGUodGhpcy5zdGF0ZSl9aW5pdCgpe3RoaXMudXBkYXRlUGVlayh0aGlzLnN0YXRlKX1nZXRTcGFuKHUsbyl7aWYodT11fHx0aGlzLG8pZm9yKHU9dS5jbG9uZSgpO3RoaXMuZGlmZih1KT4wJiZvLmluZGV4T2YodS5wZWVrKCkpIT09LTE7KXUuYWR2YW5jZSgpO3JldHVybiBuZXcgdC5QYXJzZVNvdXJjZVNwYW4obmV3IHQuUGFyc2VMb2NhdGlvbih1LmZpbGUsdS5zdGF0ZS5vZmZzZXQsdS5zdGF0ZS5saW5lLHUuc3RhdGUuY29sdW1uKSxuZXcgdC5QYXJzZUxvY2F0aW9uKHRoaXMuZmlsZSx0aGlzLnN0YXRlLm9mZnNldCx0aGlzLnN0YXRlLmxpbmUsdGhpcy5zdGF0ZS5jb2x1bW4pKX1nZXRDaGFycyh1KXtyZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcodS5zdGF0ZS5vZmZzZXQsdGhpcy5zdGF0ZS5vZmZzZXQpfWNoYXJBdCh1KXtyZXR1cm4gdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHUpfWFkdmFuY2VTdGF0ZSh1KXtpZih1Lm9mZnNldD49dGhpcy5lbmQpdGhyb3cgdGhpcy5zdGF0ZT11LG5ldyBNKCdVbmV4cGVjdGVkIGNoYXJhY3RlciBcIkVPRlwiJyx0aGlzKTtsZXQgbz10aGlzLmNoYXJBdCh1Lm9mZnNldCk7bz09PXIuJExGPyh1LmxpbmUrKyx1LmNvbHVtbj0wKTpyLmlzTmV3TGluZShvKXx8dS5jb2x1bW4rKyx1Lm9mZnNldCsrLHRoaXMudXBkYXRlUGVlayh1KX11cGRhdGVQZWVrKHUpe3UucGVlaz11Lm9mZnNldD49dGhpcy5lbmQ/ci4kRU9GOnRoaXMuY2hhckF0KHUub2Zmc2V0KX19LGs9Y2xhc3MgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHUsbyl7dSBpbnN0YW5jZW9mIGs/KHN1cGVyKHUpLHRoaXMuaW50ZXJuYWxTdGF0ZT1PYmplY3QuYXNzaWduKHt9LHUuaW50ZXJuYWxTdGF0ZSkpOihzdXBlcih1LG8pLHRoaXMuaW50ZXJuYWxTdGF0ZT10aGlzLnN0YXRlKX1hZHZhbmNlKCl7dGhpcy5zdGF0ZT10aGlzLmludGVybmFsU3RhdGUsc3VwZXIuYWR2YW5jZSgpLHRoaXMucHJvY2Vzc0VzY2FwZVNlcXVlbmNlKCl9aW5pdCgpe3N1cGVyLmluaXQoKSx0aGlzLnByb2Nlc3NFc2NhcGVTZXF1ZW5jZSgpfWNsb25lKCl7cmV0dXJuIG5ldyBrKHRoaXMpfWdldENoYXJzKHUpe2xldCBvPXUuY2xvbmUoKSxFPVwiXCI7Zm9yKDtvLmludGVybmFsU3RhdGUub2Zmc2V0PHRoaXMuaW50ZXJuYWxTdGF0ZS5vZmZzZXQ7KUUrPVN0cmluZy5mcm9tQ29kZVBvaW50KG8ucGVlaygpKSxvLmFkdmFuY2UoKTtyZXR1cm4gRX1wcm9jZXNzRXNjYXBlU2VxdWVuY2UoKXtsZXQgdT0oKT0+dGhpcy5pbnRlcm5hbFN0YXRlLnBlZWs7aWYodSgpPT09ci4kQkFDS1NMQVNIKWlmKHRoaXMuaW50ZXJuYWxTdGF0ZT1PYmplY3QuYXNzaWduKHt9LHRoaXMuc3RhdGUpLHRoaXMuYWR2YW5jZVN0YXRlKHRoaXMuaW50ZXJuYWxTdGF0ZSksdSgpPT09ci4kbil0aGlzLnN0YXRlLnBlZWs9ci4kTEY7ZWxzZSBpZih1KCk9PT1yLiRyKXRoaXMuc3RhdGUucGVlaz1yLiRDUjtlbHNlIGlmKHUoKT09PXIuJHYpdGhpcy5zdGF0ZS5wZWVrPXIuJFZUQUI7ZWxzZSBpZih1KCk9PT1yLiR0KXRoaXMuc3RhdGUucGVlaz1yLiRUQUI7ZWxzZSBpZih1KCk9PT1yLiRiKXRoaXMuc3RhdGUucGVlaz1yLiRCU1BBQ0U7ZWxzZSBpZih1KCk9PT1yLiRmKXRoaXMuc3RhdGUucGVlaz1yLiRGRjtlbHNlIGlmKHUoKT09PXIuJHUpaWYodGhpcy5hZHZhbmNlU3RhdGUodGhpcy5pbnRlcm5hbFN0YXRlKSx1KCk9PT1yLiRMQlJBQ0Upe3RoaXMuYWR2YW5jZVN0YXRlKHRoaXMuaW50ZXJuYWxTdGF0ZSk7bGV0IG89dGhpcy5jbG9uZSgpLEU9MDtmb3IoO3UoKSE9PXIuJFJCUkFDRTspdGhpcy5hZHZhbmNlU3RhdGUodGhpcy5pbnRlcm5hbFN0YXRlKSxFKys7dGhpcy5zdGF0ZS5wZWVrPXRoaXMuZGVjb2RlSGV4RGlnaXRzKG8sRSl9ZWxzZXtsZXQgbz10aGlzLmNsb25lKCk7dGhpcy5hZHZhbmNlU3RhdGUodGhpcy5pbnRlcm5hbFN0YXRlKSx0aGlzLmFkdmFuY2VTdGF0ZSh0aGlzLmludGVybmFsU3RhdGUpLHRoaXMuYWR2YW5jZVN0YXRlKHRoaXMuaW50ZXJuYWxTdGF0ZSksdGhpcy5zdGF0ZS5wZWVrPXRoaXMuZGVjb2RlSGV4RGlnaXRzKG8sNCl9ZWxzZSBpZih1KCk9PT1yLiR4KXt0aGlzLmFkdmFuY2VTdGF0ZSh0aGlzLmludGVybmFsU3RhdGUpO2xldCBvPXRoaXMuY2xvbmUoKTt0aGlzLmFkdmFuY2VTdGF0ZSh0aGlzLmludGVybmFsU3RhdGUpLHRoaXMuc3RhdGUucGVlaz10aGlzLmRlY29kZUhleERpZ2l0cyhvLDIpfWVsc2UgaWYoci5pc09jdGFsRGlnaXQodSgpKSl7bGV0IG89XCJcIixFPTAsZj10aGlzLmNsb25lKCk7Zm9yKDtyLmlzT2N0YWxEaWdpdCh1KCkpJiZFPDM7KWY9dGhpcy5jbG9uZSgpLG8rPVN0cmluZy5mcm9tQ29kZVBvaW50KHUoKSksdGhpcy5hZHZhbmNlU3RhdGUodGhpcy5pbnRlcm5hbFN0YXRlKSxFKys7dGhpcy5zdGF0ZS5wZWVrPXBhcnNlSW50KG8sOCksdGhpcy5pbnRlcm5hbFN0YXRlPWYuaW50ZXJuYWxTdGF0ZX1lbHNlIHIuaXNOZXdMaW5lKHRoaXMuaW50ZXJuYWxTdGF0ZS5wZWVrKT8odGhpcy5hZHZhbmNlU3RhdGUodGhpcy5pbnRlcm5hbFN0YXRlKSx0aGlzLnN0YXRlPXRoaXMuaW50ZXJuYWxTdGF0ZSk6dGhpcy5zdGF0ZS5wZWVrPXRoaXMuaW50ZXJuYWxTdGF0ZS5wZWVrfWRlY29kZUhleERpZ2l0cyh1LG8pe2xldCBFPXRoaXMuaW5wdXQuc3Vic3RyKHUuaW50ZXJuYWxTdGF0ZS5vZmZzZXQsbyksZj1wYXJzZUludChFLDE2KTtpZihpc05hTihmKSl0aHJvdyB1LnN0YXRlPXUuaW50ZXJuYWxTdGF0ZSxuZXcgTShcIkludmFsaWQgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCIsdSk7cmV0dXJuIGZ9fSxNPWNsYXNze2NvbnN0cnVjdG9yKHUsbyl7dGhpcy5tc2c9dSx0aGlzLmN1cnNvcj1vfX07ZS5DdXJzb3JFcnJvcj1NfX0pLGFzPUkoe1wibm9kZV9tb2R1bGVzL2FuZ3VsYXItaHRtbC1wYXJzZXIvbGliL2NvbXBpbGVyL3NyYy9tbF9wYXJzZXIvcGFyc2VyLmpzXCIoZSl7XCJ1c2Ugc3RyaWN0XCI7cSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPVRlKCksdD1TcygpLHM9ekQoKSxjPVplKCksbj1jbGFzcyBleHRlbmRzIHIuUGFyc2VFcnJvcntjb25zdHJ1Y3RvcihpLGwsaCl7c3VwZXIobCxoKSx0aGlzLmVsZW1lbnROYW1lPWl9c3RhdGljIGNyZWF0ZShpLGwsaCl7cmV0dXJuIG5ldyBuKGksbCxoKX19O2UuVHJlZUVycm9yPW47dmFyIGE9Y2xhc3N7Y29uc3RydWN0b3IoaSxsKXt0aGlzLnJvb3ROb2Rlcz1pLHRoaXMuZXJyb3JzPWx9fTtlLlBhcnNlVHJlZVJlc3VsdD1hO3ZhciBwPWNsYXNze2NvbnN0cnVjdG9yKGkpe3RoaXMuZ2V0VGFnRGVmaW5pdGlvbj1pfXBhcnNlKGksbCxoKXtsZXQgQz1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106ITEsZD1hcmd1bWVudHMubGVuZ3RoPjQ/YXJndW1lbnRzWzRdOnZvaWQgMCxtPXg9PmZ1bmN0aW9uKGspe2Zvcih2YXIgTT1hcmd1bWVudHMubGVuZ3RoLHU9bmV3IEFycmF5KE0+MT9NLTE6MCksbz0xO288TTtvKyspdVtvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4geChrLnRvTG93ZXJDYXNlKCksLi4udSl9LFQ9Qz90aGlzLmdldFRhZ0RlZmluaXRpb246bSh0aGlzLmdldFRhZ0RlZmluaXRpb24pLEI9eD0+VCh4KS5jb250ZW50VHlwZSxBPUM/ZDptKGQpLE49ZD8oeCxrLE0sdSk9PntsZXQgbz1BKHgsayxNLHUpO3JldHVybiBvIT09dm9pZCAwP286Qih4KX06QixSPXMudG9rZW5pemUoaSxsLE4saCksJD1oJiZoLmNhblNlbGZDbG9zZXx8ITEsXz1oJiZoLmFsbG93SHRtQ29tcG9uZW50Q2xvc2luZ1RhZ3N8fCExLE89bmV3IEQoUi50b2tlbnMsVCwkLF8sQykuYnVpbGQoKTtyZXR1cm4gbmV3IGEoTy5yb290Tm9kZXMsUi5lcnJvcnMuY29uY2F0KE8uZXJyb3JzKSl9fTtlLlBhcnNlcj1wO3ZhciBEPWNsYXNze2NvbnN0cnVjdG9yKGksbCxoLEMsZCl7dGhpcy50b2tlbnM9aSx0aGlzLmdldFRhZ0RlZmluaXRpb249bCx0aGlzLmNhblNlbGZDbG9zZT1oLHRoaXMuYWxsb3dIdG1Db21wb25lbnRDbG9zaW5nVGFncz1DLHRoaXMuaXNUYWdOYW1lQ2FzZVNlbnNpdGl2ZT1kLHRoaXMuX2luZGV4PS0xLHRoaXMuX3Jvb3ROb2Rlcz1bXSx0aGlzLl9lcnJvcnM9W10sdGhpcy5fZWxlbWVudFN0YWNrPVtdLHRoaXMuX2FkdmFuY2UoKX1idWlsZCgpe2Zvcig7dGhpcy5fcGVlay50eXBlIT09cy5Ub2tlblR5cGUuRU9GOyl0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5UQUdfT1BFTl9TVEFSVD90aGlzLl9jb25zdW1lU3RhcnRUYWcodGhpcy5fYWR2YW5jZSgpKTp0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5UQUdfQ0xPU0U/KHRoaXMuX2Nsb3NlVm9pZEVsZW1lbnQoKSx0aGlzLl9jb25zdW1lRW5kVGFnKHRoaXMuX2FkdmFuY2UoKSkpOnRoaXMuX3BlZWsudHlwZT09PXMuVG9rZW5UeXBlLkNEQVRBX1NUQVJUPyh0aGlzLl9jbG9zZVZvaWRFbGVtZW50KCksdGhpcy5fY29uc3VtZUNkYXRhKHRoaXMuX2FkdmFuY2UoKSkpOnRoaXMuX3BlZWsudHlwZT09PXMuVG9rZW5UeXBlLkNPTU1FTlRfU1RBUlQ/KHRoaXMuX2Nsb3NlVm9pZEVsZW1lbnQoKSx0aGlzLl9jb25zdW1lQ29tbWVudCh0aGlzLl9hZHZhbmNlKCkpKTp0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5URVhUfHx0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5SQVdfVEVYVHx8dGhpcy5fcGVlay50eXBlPT09cy5Ub2tlblR5cGUuRVNDQVBBQkxFX1JBV19URVhUPyh0aGlzLl9jbG9zZVZvaWRFbGVtZW50KCksdGhpcy5fY29uc3VtZVRleHQodGhpcy5fYWR2YW5jZSgpKSk6dGhpcy5fcGVlay50eXBlPT09cy5Ub2tlblR5cGUuRVhQQU5TSU9OX0ZPUk1fU1RBUlQ/dGhpcy5fY29uc3VtZUV4cGFuc2lvbih0aGlzLl9hZHZhbmNlKCkpOnRoaXMuX3BlZWsudHlwZT09PXMuVG9rZW5UeXBlLkRPQ19UWVBFX1NUQVJUP3RoaXMuX2NvbnN1bWVEb2NUeXBlKHRoaXMuX2FkdmFuY2UoKSk6dGhpcy5fYWR2YW5jZSgpO3JldHVybiBuZXcgYSh0aGlzLl9yb290Tm9kZXMsdGhpcy5fZXJyb3JzKX1fYWR2YW5jZSgpe2xldCBpPXRoaXMuX3BlZWs7cmV0dXJuIHRoaXMuX2luZGV4PHRoaXMudG9rZW5zLmxlbmd0aC0xJiZ0aGlzLl9pbmRleCsrLHRoaXMuX3BlZWs9dGhpcy50b2tlbnNbdGhpcy5faW5kZXhdLGl9X2FkdmFuY2VJZihpKXtyZXR1cm4gdGhpcy5fcGVlay50eXBlPT09aT90aGlzLl9hZHZhbmNlKCk6bnVsbH1fY29uc3VtZUNkYXRhKGkpe2xldCBsPXRoaXMuX2FkdmFuY2UoKSxoPXRoaXMuX2dldFRleHQobCksQz10aGlzLl9hZHZhbmNlSWYocy5Ub2tlblR5cGUuQ0RBVEFfRU5EKTt0aGlzLl9hZGRUb1BhcmVudChuZXcgdC5DREFUQShoLG5ldyByLlBhcnNlU291cmNlU3BhbihpLnNvdXJjZVNwYW4uc3RhcnQsKEN8fGwpLnNvdXJjZVNwYW4uZW5kKSkpfV9jb25zdW1lQ29tbWVudChpKXtsZXQgbD10aGlzLl9hZHZhbmNlSWYocy5Ub2tlblR5cGUuUkFXX1RFWFQpLGg9dGhpcy5fYWR2YW5jZUlmKHMuVG9rZW5UeXBlLkNPTU1FTlRfRU5EKSxDPWwhPW51bGw/bC5wYXJ0c1swXS50cmltKCk6bnVsbCxkPW5ldyByLlBhcnNlU291cmNlU3BhbihpLnNvdXJjZVNwYW4uc3RhcnQsKGh8fGx8fGkpLnNvdXJjZVNwYW4uZW5kKTt0aGlzLl9hZGRUb1BhcmVudChuZXcgdC5Db21tZW50KEMsZCkpfV9jb25zdW1lRG9jVHlwZShpKXtsZXQgbD10aGlzLl9hZHZhbmNlSWYocy5Ub2tlblR5cGUuUkFXX1RFWFQpLGg9dGhpcy5fYWR2YW5jZUlmKHMuVG9rZW5UeXBlLkRPQ19UWVBFX0VORCksQz1sIT1udWxsP2wucGFydHNbMF0udHJpbSgpOm51bGwsZD1uZXcgci5QYXJzZVNvdXJjZVNwYW4oaS5zb3VyY2VTcGFuLnN0YXJ0LChofHxsfHxpKS5zb3VyY2VTcGFuLmVuZCk7dGhpcy5fYWRkVG9QYXJlbnQobmV3IHQuRG9jVHlwZShDLGQpKX1fY29uc3VtZUV4cGFuc2lvbihpKXtsZXQgbD10aGlzLl9hZHZhbmNlKCksaD10aGlzLl9hZHZhbmNlKCksQz1bXTtmb3IoO3RoaXMuX3BlZWsudHlwZT09PXMuVG9rZW5UeXBlLkVYUEFOU0lPTl9DQVNFX1ZBTFVFOyl7bGV0IG09dGhpcy5fcGFyc2VFeHBhbnNpb25DYXNlKCk7aWYoIW0pcmV0dXJuO0MucHVzaChtKX1pZih0aGlzLl9wZWVrLnR5cGUhPT1zLlRva2VuVHlwZS5FWFBBTlNJT05fRk9STV9FTkQpe3RoaXMuX2Vycm9ycy5wdXNoKG4uY3JlYXRlKG51bGwsdGhpcy5fcGVlay5zb3VyY2VTcGFuLFwiSW52YWxpZCBJQ1UgbWVzc2FnZS4gTWlzc2luZyAnfScuXCIpKTtyZXR1cm59bGV0IGQ9bmV3IHIuUGFyc2VTb3VyY2VTcGFuKGkuc291cmNlU3Bhbi5zdGFydCx0aGlzLl9wZWVrLnNvdXJjZVNwYW4uZW5kKTt0aGlzLl9hZGRUb1BhcmVudChuZXcgdC5FeHBhbnNpb24obC5wYXJ0c1swXSxoLnBhcnRzWzBdLEMsZCxsLnNvdXJjZVNwYW4pKSx0aGlzLl9hZHZhbmNlKCl9X3BhcnNlRXhwYW5zaW9uQ2FzZSgpe2xldCBpPXRoaXMuX2FkdmFuY2UoKTtpZih0aGlzLl9wZWVrLnR5cGUhPT1zLlRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlQpcmV0dXJuIHRoaXMuX2Vycm9ycy5wdXNoKG4uY3JlYXRlKG51bGwsdGhpcy5fcGVlay5zb3VyY2VTcGFuLFwiSW52YWxpZCBJQ1UgbWVzc2FnZS4gTWlzc2luZyAneycuXCIpKSxudWxsO2xldCBsPXRoaXMuX2FkdmFuY2UoKSxoPXRoaXMuX2NvbGxlY3RFeHBhbnNpb25FeHBUb2tlbnMobCk7aWYoIWgpcmV0dXJuIG51bGw7bGV0IEM9dGhpcy5fYWR2YW5jZSgpO2gucHVzaChuZXcgcy5Ub2tlbihzLlRva2VuVHlwZS5FT0YsW10sQy5zb3VyY2VTcGFuKSk7bGV0IGQ9bmV3IEQoaCx0aGlzLmdldFRhZ0RlZmluaXRpb24sdGhpcy5jYW5TZWxmQ2xvc2UsdGhpcy5hbGxvd0h0bUNvbXBvbmVudENsb3NpbmdUYWdzLHRoaXMuaXNUYWdOYW1lQ2FzZVNlbnNpdGl2ZSkuYnVpbGQoKTtpZihkLmVycm9ycy5sZW5ndGg+MClyZXR1cm4gdGhpcy5fZXJyb3JzPXRoaXMuX2Vycm9ycy5jb25jYXQoZC5lcnJvcnMpLG51bGw7bGV0IG09bmV3IHIuUGFyc2VTb3VyY2VTcGFuKGkuc291cmNlU3Bhbi5zdGFydCxDLnNvdXJjZVNwYW4uZW5kKSxUPW5ldyByLlBhcnNlU291cmNlU3BhbihsLnNvdXJjZVNwYW4uc3RhcnQsQy5zb3VyY2VTcGFuLmVuZCk7cmV0dXJuIG5ldyB0LkV4cGFuc2lvbkNhc2UoaS5wYXJ0c1swXSxkLnJvb3ROb2RlcyxtLGkuc291cmNlU3BhbixUKX1fY29sbGVjdEV4cGFuc2lvbkV4cFRva2VucyhpKXtsZXQgbD1bXSxoPVtzLlRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlRdO2Zvcig7Oyl7aWYoKHRoaXMuX3BlZWsudHlwZT09PXMuVG9rZW5UeXBlLkVYUEFOU0lPTl9GT1JNX1NUQVJUfHx0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlQpJiZoLnB1c2godGhpcy5fcGVlay50eXBlKSx0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfRU5EKWlmKGcoaCxzLlRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlQpKXtpZihoLnBvcCgpLGgubGVuZ3RoPT0wKXJldHVybiBsfWVsc2UgcmV0dXJuIHRoaXMuX2Vycm9ycy5wdXNoKG4uY3JlYXRlKG51bGwsaS5zb3VyY2VTcGFuLFwiSW52YWxpZCBJQ1UgbWVzc2FnZS4gTWlzc2luZyAnfScuXCIpKSxudWxsO2lmKHRoaXMuX3BlZWsudHlwZT09PXMuVG9rZW5UeXBlLkVYUEFOU0lPTl9GT1JNX0VORClpZihnKGgscy5Ub2tlblR5cGUuRVhQQU5TSU9OX0ZPUk1fU1RBUlQpKWgucG9wKCk7ZWxzZSByZXR1cm4gdGhpcy5fZXJyb3JzLnB1c2gobi5jcmVhdGUobnVsbCxpLnNvdXJjZVNwYW4sXCJJbnZhbGlkIElDVSBtZXNzYWdlLiBNaXNzaW5nICd9Jy5cIikpLG51bGw7aWYodGhpcy5fcGVlay50eXBlPT09cy5Ub2tlblR5cGUuRU9GKXJldHVybiB0aGlzLl9lcnJvcnMucHVzaChuLmNyZWF0ZShudWxsLGkuc291cmNlU3BhbixcIkludmFsaWQgSUNVIG1lc3NhZ2UuIE1pc3NpbmcgJ30nLlwiKSksbnVsbDtsLnB1c2godGhpcy5fYWR2YW5jZSgpKX19X2dldFRleHQoaSl7bGV0IGw9aS5wYXJ0c1swXTtpZihsLmxlbmd0aD4wJiZsWzBdPT1gXG5gKXtsZXQgaD10aGlzLl9nZXRQYXJlbnRFbGVtZW50KCk7aCE9bnVsbCYmaC5jaGlsZHJlbi5sZW5ndGg9PTAmJnRoaXMuZ2V0VGFnRGVmaW5pdGlvbihoLm5hbWUpLmlnbm9yZUZpcnN0TGYmJihsPWwuc3Vic3RyaW5nKDEpKX1yZXR1cm4gbH1fY29uc3VtZVRleHQoaSl7bGV0IGw9dGhpcy5fZ2V0VGV4dChpKTtsLmxlbmd0aD4wJiZ0aGlzLl9hZGRUb1BhcmVudChuZXcgdC5UZXh0KGwsaS5zb3VyY2VTcGFuKSl9X2Nsb3NlVm9pZEVsZW1lbnQoKXtsZXQgaT10aGlzLl9nZXRQYXJlbnRFbGVtZW50KCk7aSYmdGhpcy5nZXRUYWdEZWZpbml0aW9uKGkubmFtZSkuaXNWb2lkJiZ0aGlzLl9lbGVtZW50U3RhY2sucG9wKCl9X2NvbnN1bWVTdGFydFRhZyhpKXtsZXQgbD1pLnBhcnRzWzBdLGg9aS5wYXJ0c1sxXSxDPVtdO2Zvcig7dGhpcy5fcGVlay50eXBlPT09cy5Ub2tlblR5cGUuQVRUUl9OQU1FOylDLnB1c2godGhpcy5fY29uc3VtZUF0dHIodGhpcy5fYWR2YW5jZSgpKSk7bGV0IGQ9dGhpcy5fZ2V0RWxlbWVudEZ1bGxOYW1lKGwsaCx0aGlzLl9nZXRQYXJlbnRFbGVtZW50KCkpLG09ITE7aWYodGhpcy5fcGVlay50eXBlPT09cy5Ub2tlblR5cGUuVEFHX09QRU5fRU5EX1ZPSUQpe3RoaXMuX2FkdmFuY2UoKSxtPSEwO2xldCBSPXRoaXMuZ2V0VGFnRGVmaW5pdGlvbihkKTt0aGlzLmNhblNlbGZDbG9zZXx8Ui5jYW5TZWxmQ2xvc2V8fGMuZ2V0TnNQcmVmaXgoZCkhPT1udWxsfHxSLmlzVm9pZHx8dGhpcy5fZXJyb3JzLnB1c2gobi5jcmVhdGUoZCxpLnNvdXJjZVNwYW4sJ09ubHkgdm9pZCBhbmQgZm9yZWlnbiBlbGVtZW50cyBjYW4gYmUgc2VsZiBjbG9zZWQgXCInLmNvbmNhdChpLnBhcnRzWzFdLCdcIicpKSl9ZWxzZSB0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5UQUdfT1BFTl9FTkQmJih0aGlzLl9hZHZhbmNlKCksbT0hMSk7bGV0IFQ9dGhpcy5fcGVlay5zb3VyY2VTcGFuLnN0YXJ0LEI9bmV3IHIuUGFyc2VTb3VyY2VTcGFuKGkuc291cmNlU3Bhbi5zdGFydCxUKSxBPW5ldyByLlBhcnNlU291cmNlU3BhbihpLnNvdXJjZVNwYW4uc3RhcnQubW92ZUJ5KDEpLGkuc291cmNlU3Bhbi5lbmQpLE49bmV3IHQuRWxlbWVudChkLEMsW10sQixCLHZvaWQgMCxBKTt0aGlzLl9wdXNoRWxlbWVudChOKSxtJiYodGhpcy5fcG9wRWxlbWVudChkKSxOLmVuZFNvdXJjZVNwYW49Qil9X3B1c2hFbGVtZW50KGkpe2xldCBsPXRoaXMuX2dldFBhcmVudEVsZW1lbnQoKTtsJiZ0aGlzLmdldFRhZ0RlZmluaXRpb24obC5uYW1lKS5pc0Nsb3NlZEJ5Q2hpbGQoaS5uYW1lKSYmdGhpcy5fZWxlbWVudFN0YWNrLnBvcCgpLHRoaXMuX2FkZFRvUGFyZW50KGkpLHRoaXMuX2VsZW1lbnRTdGFjay5wdXNoKGkpfV9jb25zdW1lRW5kVGFnKGkpe2xldCBsPXRoaXMuYWxsb3dIdG1Db21wb25lbnRDbG9zaW5nVGFncyYmaS5wYXJ0cy5sZW5ndGg9PT0wP251bGw6dGhpcy5fZ2V0RWxlbWVudEZ1bGxOYW1lKGkucGFydHNbMF0saS5wYXJ0c1sxXSx0aGlzLl9nZXRQYXJlbnRFbGVtZW50KCkpO2lmKHRoaXMuX2dldFBhcmVudEVsZW1lbnQoKSYmKHRoaXMuX2dldFBhcmVudEVsZW1lbnQoKS5lbmRTb3VyY2VTcGFuPWkuc291cmNlU3BhbiksbCYmdGhpcy5nZXRUYWdEZWZpbml0aW9uKGwpLmlzVm9pZCl0aGlzLl9lcnJvcnMucHVzaChuLmNyZWF0ZShsLGkuc291cmNlU3BhbiwnVm9pZCBlbGVtZW50cyBkbyBub3QgaGF2ZSBlbmQgdGFncyBcIicuY29uY2F0KGkucGFydHNbMV0sJ1wiJykpKTtlbHNlIGlmKCF0aGlzLl9wb3BFbGVtZW50KGwpKXtsZXQgaD0nVW5leHBlY3RlZCBjbG9zaW5nIHRhZyBcIicuY29uY2F0KGwsJ1wiLiBJdCBtYXkgaGFwcGVuIHdoZW4gdGhlIHRhZyBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZCBieSBhbm90aGVyIHRhZy4gRm9yIG1vcmUgaW5mbyBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI2Nsb3NpbmctZWxlbWVudHMtdGhhdC1oYXZlLWltcGxpZWQtZW5kLXRhZ3MnKTt0aGlzLl9lcnJvcnMucHVzaChuLmNyZWF0ZShsLGkuc291cmNlU3BhbixoKSl9fV9wb3BFbGVtZW50KGkpe2ZvcihsZXQgbD10aGlzLl9lbGVtZW50U3RhY2subGVuZ3RoLTE7bD49MDtsLS0pe2xldCBoPXRoaXMuX2VsZW1lbnRTdGFja1tsXTtpZighaXx8KGMuZ2V0TnNQcmVmaXgoaC5uYW1lKT9oLm5hbWU9PWk6aC5uYW1lLnRvTG93ZXJDYXNlKCk9PWkudG9Mb3dlckNhc2UoKSkpcmV0dXJuIHRoaXMuX2VsZW1lbnRTdGFjay5zcGxpY2UobCx0aGlzLl9lbGVtZW50U3RhY2subGVuZ3RoLWwpLCEwO2lmKCF0aGlzLmdldFRhZ0RlZmluaXRpb24oaC5uYW1lKS5jbG9zZWRCeVBhcmVudClyZXR1cm4hMX1yZXR1cm4hMX1fY29uc3VtZUF0dHIoaSl7bGV0IGw9Yy5tZXJnZU5zQW5kTmFtZShpLnBhcnRzWzBdLGkucGFydHNbMV0pLGg9aS5zb3VyY2VTcGFuLmVuZCxDPVwiXCIsZCxtO2lmKHRoaXMuX3BlZWsudHlwZT09PXMuVG9rZW5UeXBlLkFUVFJfUVVPVEUmJihtPXRoaXMuX2FkdmFuY2UoKS5zb3VyY2VTcGFuLnN0YXJ0KSx0aGlzLl9wZWVrLnR5cGU9PT1zLlRva2VuVHlwZS5BVFRSX1ZBTFVFKXtsZXQgVD10aGlzLl9hZHZhbmNlKCk7Qz1ULnBhcnRzWzBdLGg9VC5zb3VyY2VTcGFuLmVuZCxkPVQuc291cmNlU3Bhbn1yZXR1cm4gdGhpcy5fcGVlay50eXBlPT09cy5Ub2tlblR5cGUuQVRUUl9RVU9URSYmKGg9dGhpcy5fYWR2YW5jZSgpLnNvdXJjZVNwYW4uZW5kLGQ9bmV3IHIuUGFyc2VTb3VyY2VTcGFuKG0saCkpLG5ldyB0LkF0dHJpYnV0ZShsLEMsbmV3IHIuUGFyc2VTb3VyY2VTcGFuKGkuc291cmNlU3Bhbi5zdGFydCxoKSxkLGkuc291cmNlU3Bhbil9X2dldFBhcmVudEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudFN0YWNrLmxlbmd0aD4wP3RoaXMuX2VsZW1lbnRTdGFja1t0aGlzLl9lbGVtZW50U3RhY2subGVuZ3RoLTFdOm51bGx9X2dldFBhcmVudEVsZW1lbnRTa2lwcGluZ0NvbnRhaW5lcnMoKXtsZXQgaT1udWxsO2ZvcihsZXQgbD10aGlzLl9lbGVtZW50U3RhY2subGVuZ3RoLTE7bD49MDtsLS0pe2lmKCFjLmlzTmdDb250YWluZXIodGhpcy5fZWxlbWVudFN0YWNrW2xdLm5hbWUpKXJldHVybntwYXJlbnQ6dGhpcy5fZWxlbWVudFN0YWNrW2xdLGNvbnRhaW5lcjppfTtpPXRoaXMuX2VsZW1lbnRTdGFja1tsXX1yZXR1cm57cGFyZW50Om51bGwsY29udGFpbmVyOml9fV9hZGRUb1BhcmVudChpKXtsZXQgbD10aGlzLl9nZXRQYXJlbnRFbGVtZW50KCk7bCE9bnVsbD9sLmNoaWxkcmVuLnB1c2goaSk6dGhpcy5fcm9vdE5vZGVzLnB1c2goaSl9X2luc2VydEJlZm9yZUNvbnRhaW5lcihpLGwsaCl7aWYoIWwpdGhpcy5fYWRkVG9QYXJlbnQoaCksdGhpcy5fZWxlbWVudFN0YWNrLnB1c2goaCk7ZWxzZXtpZihpKXtsZXQgQz1pLmNoaWxkcmVuLmluZGV4T2YobCk7aS5jaGlsZHJlbltDXT1ofWVsc2UgdGhpcy5fcm9vdE5vZGVzLnB1c2goaCk7aC5jaGlsZHJlbi5wdXNoKGwpLHRoaXMuX2VsZW1lbnRTdGFjay5zcGxpY2UodGhpcy5fZWxlbWVudFN0YWNrLmluZGV4T2YobCksMCxoKX19X2dldEVsZW1lbnRGdWxsTmFtZShpLGwsaCl7cmV0dXJuIGk9PT1cIlwiJiYoaT10aGlzLmdldFRhZ0RlZmluaXRpb24obCkuaW1wbGljaXROYW1lc3BhY2VQcmVmaXh8fFwiXCIsaT09PVwiXCImJmghPW51bGwmJihpPWMuZ2V0TnNQcmVmaXgoaC5uYW1lKSkpLGMubWVyZ2VOc0FuZE5hbWUoaSxsKX19O2Z1bmN0aW9uIGcoaSxsKXtyZXR1cm4gaS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXT09PWx9fX0pLFdEPUkoe1wibm9kZV9tb2R1bGVzL2FuZ3VsYXItaHRtbC1wYXJzZXIvbGliL2NvbXBpbGVyL3NyYy9tbF9wYXJzZXIvaHRtbF9wYXJzZXIuanNcIihlKXtcInVzZSBzdHJpY3RcIjtxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHI9X3MoKSx0PWFzKCkscz1hcygpO2UuUGFyc2VUcmVlUmVzdWx0PXMuUGFyc2VUcmVlUmVzdWx0LGUuVHJlZUVycm9yPXMuVHJlZUVycm9yO3ZhciBjPWNsYXNzIGV4dGVuZHMgdC5QYXJzZXJ7Y29uc3RydWN0b3IoKXtzdXBlcihyLmdldEh0bWxUYWdEZWZpbml0aW9uKX1wYXJzZShuLGEscCl7bGV0IEQ9YXJndW1lbnRzLmxlbmd0aD4zJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOiExLGc9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDA7cmV0dXJuIHN1cGVyLnBhcnNlKG4sYSxwLEQsZyl9fTtlLkh0bWxQYXJzZXI9Y319KSx5cz1JKHtcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWh0bWwtcGFyc2VyL2xpYi9hbmd1bGFyLWh0bWwtcGFyc2VyL3NyYy9pbmRleC5qc1wiKGUpe1widXNlIHN0cmljdFwiO3EoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1XRCgpLHQ9WmUoKTtlLlRhZ0NvbnRlbnRUeXBlPXQuVGFnQ29udGVudFR5cGU7dmFyIHM9bnVsbCxjPSgpPT4oc3x8KHM9bmV3IHIuSHRtbFBhcnNlcikscyk7ZnVuY3Rpb24gbihhKXtsZXQgcD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30se2NhblNlbGZDbG9zZTpEPSExLGFsbG93SHRtQ29tcG9uZW50Q2xvc2luZ1RhZ3M6Zz0hMSxpc1RhZ05hbWVDYXNlU2Vuc2l0aXZlOmk9ITEsZ2V0VGFnQ29udGVudFR5cGU6bH09cDtyZXR1cm4gYygpLnBhcnNlKGEsXCJhbmd1bGFyLWh0bWwtcGFyc2VyXCIse3Rva2VuaXplRXhwYW5zaW9uRm9ybXM6ITEsaW50ZXJwb2xhdGlvbkNvbmZpZzp2b2lkIDAsY2FuU2VsZkNsb3NlOkQsYWxsb3dIdG1Db21wb25lbnRDbG9zaW5nVGFnczpnfSxpLGwpfWUucGFyc2U9bn19KTtxKCk7dmFye1BhcnNlU291cmNlU3BhbjpRZSxQYXJzZUxvY2F0aW9uOmlzLFBhcnNlU291cmNlRmlsZTpZRH09VGUoKSxRRD1hRCgpLEtEPXBzKCksSkQ9aUQoKSx7aW5mZXJQYXJzZXJCeUxhbmd1YWdlOlpEfT1JRCgpLGVsPXhEKCksanI9TEQoKSxvcz1NRCgpLHtoYXNQcmFnbWE6cmx9PWpEKCkse05vZGU6dGx9PSREKCkse3BhcnNlSWVDb25kaXRpb25hbENvbW1lbnQ6dWx9PVVEKCkse2xvY1N0YXJ0Om5sLGxvY0VuZDpzbH09R0QoKTtmdW5jdGlvbiBhbChlLHIsdCl7bGV0e3JlY29nbml6ZVNlbGZDbG9zaW5nOnMsbm9ybWFsaXplVGFnTmFtZTpjLG5vcm1hbGl6ZUF0dHJpYnV0ZU5hbWU6bixhbGxvd0h0bUNvbXBvbmVudENsb3NpbmdUYWdzOmEsaXNUYWdOYW1lQ2FzZVNlbnNpdGl2ZTpwLGdldFRhZ0NvbnRlbnRUeXBlOkR9PXIsZz15cygpLHtSZWN1cnNpdmVWaXNpdG9yOmksdmlzaXRBbGw6bH09U3MoKSx7UGFyc2VTb3VyY2VTcGFuOmh9PVRlKCkse2dldEh0bWxUYWdEZWZpbml0aW9uOkN9PV9zKCkse3Jvb3ROb2RlczpkLGVycm9yczptfT1nLnBhcnNlKGUse2NhblNlbGZDbG9zZTpzLGFsbG93SHRtQ29tcG9uZW50Q2xvc2luZ1RhZ3M6YSxpc1RhZ05hbWVDYXNlU2Vuc2l0aXZlOnAsZ2V0VGFnQ29udGVudFR5cGU6RH0pO2lmKHQucGFyc2VyPT09XCJ2dWVcIilpZihkLnNvbWUoTz0+Ty50eXBlPT09XCJkb2NUeXBlXCImJk8udmFsdWU9PT1cImh0bWxcInx8Ty50eXBlPT09XCJlbGVtZW50XCImJk8ubmFtZS50b0xvd2VyQ2FzZSgpPT09XCJodG1sXCIpKXtzPSEwLGM9ITAsbj0hMCxhPSEwLHA9ITE7bGV0IE89Zy5wYXJzZShlLHtjYW5TZWxmQ2xvc2U6cyxhbGxvd0h0bUNvbXBvbmVudENsb3NpbmdUYWdzOmEsaXNUYWdOYW1lQ2FzZVNlbnNpdGl2ZTpwfSk7ZD1PLnJvb3ROb2RlcyxtPU8uZXJyb3JzfWVsc2V7bGV0IE89eD0+e2lmKCF4fHx4LnR5cGUhPT1cImVsZW1lbnRcInx8eC5uYW1lIT09XCJ0ZW1wbGF0ZVwiKXJldHVybiExO2xldCBrPXguYXR0cnMuZmluZCh1PT51Lm5hbWU9PT1cImxhbmdcIiksTT1rJiZrLnZhbHVlO3JldHVybiFNfHxaRChNLHQpPT09XCJodG1sXCJ9O2lmKGQuc29tZShPKSl7bGV0IHgsaz0oKT0+Zy5wYXJzZShlLHtjYW5TZWxmQ2xvc2U6cyxhbGxvd0h0bUNvbXBvbmVudENsb3NpbmdUYWdzOmEsaXNUYWdOYW1lQ2FzZVNlbnNpdGl2ZTpwfSksTT0oKT0+eHx8KHg9aygpKSx1PW89Pk0oKS5yb290Tm9kZXMuZmluZChFPT57bGV0e3N0YXJ0U291cmNlU3BhbjpmfT1FO3JldHVybiBmJiZmLnN0YXJ0Lm9mZnNldD09PW8uc3RhcnRTb3VyY2VTcGFuLnN0YXJ0Lm9mZnNldH0pO2ZvcihsZXQgbz0wO288ZC5sZW5ndGg7bysrKXtsZXQgRT1kW29dLHtlbmRTb3VyY2VTcGFuOmYsc3RhcnRTb3VyY2VTcGFuOkZ9PUU7aWYoZj09PW51bGwpbT1NKCkuZXJyb3JzLGRbb109dShFKXx8RTtlbHNlIGlmKE8oRSkpe2xldCBqPU0oKSxXPUYuZW5kLm9mZnNldCxYPWYuc3RhcnQub2Zmc2V0O2ZvcihsZXQgSCBvZiBqLmVycm9ycyl7bGV0e29mZnNldDp6fT1ILnNwYW4uc3RhcnQ7aWYoVzx6JiZ6PFgpe209W0hdO2JyZWFrfX1kW29dPXUoRSl8fEV9fX19aWYobS5sZW5ndGg+MCl7bGV0e21zZzpfLHNwYW46e3N0YXJ0Ok8sZW5kOnh9fT1tWzBdO3Rocm93IEpEKF8se3N0YXJ0OntsaW5lOk8ubGluZSsxLGNvbHVtbjpPLmNvbCsxfSxlbmQ6e2xpbmU6eC5saW5lKzEsY29sdW1uOnguY29sKzF9fSl9bGV0IFQ9Xz0+e2xldCBPPV8ubmFtZS5zdGFydHNXaXRoKFwiOlwiKT9fLm5hbWUuc2xpY2UoMSkuc3BsaXQoXCI6XCIpWzBdOm51bGwseD1fLm5hbWVTcGFuLnRvU3RyaW5nKCksaz1PIT09bnVsbCYmeC5zdGFydHNXaXRoKFwiXCIuY29uY2F0KE8sXCI6XCIpKSxNPWs/eC5zbGljZShPLmxlbmd0aCsxKTp4O18ubmFtZT1NLF8ubmFtZXNwYWNlPU8sXy5oYXNFeHBsaWNpdE5hbWVzcGFjZT1rfSxCPV89Pntzd2l0Y2goXy50eXBlKXtjYXNlXCJlbGVtZW50XCI6VChfKTtmb3IobGV0IE8gb2YgXy5hdHRycylUKE8pLE8udmFsdWVTcGFuPyhPLnZhbHVlPU8udmFsdWVTcGFuLnRvU3RyaW5nKCksL1tcIiddLy50ZXN0KE8udmFsdWVbMF0pJiYoTy52YWx1ZT1PLnZhbHVlLnNsaWNlKDEsLTEpKSk6Ty52YWx1ZT1udWxsO2JyZWFrO2Nhc2VcImNvbW1lbnRcIjpfLnZhbHVlPV8uc291cmNlU3Bhbi50b1N0cmluZygpLnNsaWNlKDQsLTMpO2JyZWFrO2Nhc2VcInRleHRcIjpfLnZhbHVlPV8uc291cmNlU3Bhbi50b1N0cmluZygpO2JyZWFrfX0sQT0oXyxPKT0+e2xldCB4PV8udG9Mb3dlckNhc2UoKTtyZXR1cm4gTyh4KT94Ol99LE49Xz0+e2lmKF8udHlwZT09PVwiZWxlbWVudFwiJiYoYyYmKCFfLm5hbWVzcGFjZXx8Xy5uYW1lc3BhY2U9PT1fLnRhZ0RlZmluaXRpb24uaW1wbGljaXROYW1lc3BhY2VQcmVmaXh8fG9zKF8pKSYmKF8ubmFtZT1BKF8ubmFtZSxPPT5PIGluIGVsKSksbikpe2xldCBPPWpyW18ubmFtZV18fE9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB4IG9mIF8uYXR0cnMpeC5uYW1lc3BhY2V8fCh4Lm5hbWU9QSh4Lm5hbWUsaz0+Xy5uYW1lIGluIGpyJiYoayBpbiBqcltcIipcIl18fGsgaW4gTykpKX19LFI9Xz0+e18uc291cmNlU3BhbiYmXy5lbmRTb3VyY2VTcGFuJiYoXy5zb3VyY2VTcGFuPW5ldyBoKF8uc291cmNlU3Bhbi5zdGFydCxfLmVuZFNvdXJjZVNwYW4uZW5kKSl9LCQ9Xz0+e2lmKF8udHlwZT09PVwiZWxlbWVudFwiKXtsZXQgTz1DKHA/Xy5uYW1lOl8ubmFtZS50b0xvd2VyQ2FzZSgpKTshXy5uYW1lc3BhY2V8fF8ubmFtZXNwYWNlPT09Ty5pbXBsaWNpdE5hbWVzcGFjZVByZWZpeHx8b3MoXyk/Xy50YWdEZWZpbml0aW9uPU86Xy50YWdEZWZpbml0aW9uPUMoXCJcIil9fTtyZXR1cm4gbChuZXcgY2xhc3MgZXh0ZW5kcyBpe3Zpc2l0KF8pe0IoXyksJChfKSxOKF8pLFIoXyl9fSxkKSxkfWZ1bmN0aW9uIFRzKGUscix0KXtsZXQgcz1hcmd1bWVudHMubGVuZ3RoPjMmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106ITAse2Zyb250TWF0dGVyOmMsY29udGVudDpufT1zP1FEKGUpOntmcm9udE1hdHRlcjpudWxsLGNvbnRlbnQ6ZX0sYT1uZXcgWUQoZSxyLmZpbGVwYXRoKSxwPW5ldyBpcyhhLDAsMCwwKSxEPXAubW92ZUJ5KGUubGVuZ3RoKSxnPXt0eXBlOlwicm9vdFwiLHNvdXJjZVNwYW46bmV3IFFlKHAsRCksY2hpbGRyZW46YWwobix0LHIpfTtpZihjKXtsZXQgaD1uZXcgaXMoYSwwLDAsMCksQz1oLm1vdmVCeShjLnJhdy5sZW5ndGgpO2Muc291cmNlU3Bhbj1uZXcgUWUoaCxDKSxnLmNoaWxkcmVuLnVuc2hpZnQoYyl9bGV0IGk9bmV3IHRsKGcpLGw9KGgsQyk9PntsZXR7b2Zmc2V0OmR9PUMsbT1lLnNsaWNlKDAsZCkucmVwbGFjZSgvW15cXG5cXHJdL2csXCIgXCIpLEI9VHMobStoLHIsdCwhMSk7Qi5zb3VyY2VTcGFuPW5ldyBRZShDLEtEKEIuY2hpbGRyZW4pLnNvdXJjZVNwYW4uZW5kKTtsZXQgQT1CLmNoaWxkcmVuWzBdO3JldHVybiBBLmxlbmd0aD09PWQ/Qi5jaGlsZHJlbi5zaGlmdCgpOihBLnNvdXJjZVNwYW49bmV3IFFlKEEuc291cmNlU3Bhbi5zdGFydC5tb3ZlQnkoZCksQS5zb3VyY2VTcGFuLmVuZCksQS52YWx1ZT1BLnZhbHVlLnNsaWNlKGQpKSxCfTtyZXR1cm4gaS53YWxrKGg9PntpZihoLnR5cGU9PT1cImNvbW1lbnRcIil7bGV0IEM9dWwoaCxsKTtDJiZoLnBhcmVudC5yZXBsYWNlQ2hpbGQoaCxDKX19KSxpfWZ1bmN0aW9uIEtlKCl7bGV0e25hbWU6ZSxyZWNvZ25pemVTZWxmQ2xvc2luZzpyPSExLG5vcm1hbGl6ZVRhZ05hbWU6dD0hMSxub3JtYWxpemVBdHRyaWJ1dGVOYW1lOnM9ITEsYWxsb3dIdG1Db21wb25lbnRDbG9zaW5nVGFnczpjPSExLGlzVGFnTmFtZUNhc2VTZW5zaXRpdmU6bj0hMSxnZXRUYWdDb250ZW50VHlwZTphfT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307cmV0dXJue3BhcnNlOihwLEQsZyk9PlRzKHAsT2JqZWN0LmFzc2lnbih7cGFyc2VyOmV9LGcpLHtyZWNvZ25pemVTZWxmQ2xvc2luZzpyLG5vcm1hbGl6ZVRhZ05hbWU6dCxub3JtYWxpemVBdHRyaWJ1dGVOYW1lOnMsYWxsb3dIdG1Db21wb25lbnRDbG9zaW5nVGFnczpjLGlzVGFnTmFtZUNhc2VTZW5zaXRpdmU6bixnZXRUYWdDb250ZW50VHlwZTphfSksaGFzUHJhZ21hOnJsLGFzdEZvcm1hdDpcImh0bWxcIixsb2NTdGFydDpubCxsb2NFbmQ6c2x9fUJzLmV4cG9ydHM9e3BhcnNlcnM6e2h0bWw6S2Uoe25hbWU6XCJodG1sXCIscmVjb2duaXplU2VsZkNsb3Npbmc6ITAsbm9ybWFsaXplVGFnTmFtZTohMCxub3JtYWxpemVBdHRyaWJ1dGVOYW1lOiEwLGFsbG93SHRtQ29tcG9uZW50Q2xvc2luZ1RhZ3M6ITB9KSxhbmd1bGFyOktlKHtuYW1lOlwiYW5ndWxhclwifSksdnVlOktlKHtuYW1lOlwidnVlXCIscmVjb2duaXplU2VsZkNsb3Npbmc6ITAsaXNUYWdOYW1lQ2FzZVNlbnNpdGl2ZTohMCxnZXRUYWdDb250ZW50VHlwZTooZSxyLHQscyk9PntpZihlLnRvTG93ZXJDYXNlKCkhPT1cImh0bWxcIiYmIXQmJihlIT09XCJ0ZW1wbGF0ZVwifHxzLnNvbWUoYz0+e2xldHtuYW1lOm4sdmFsdWU6YX09YztyZXR1cm4gbj09PVwibGFuZ1wiJiZhIT09XCJodG1sXCImJmEhPT1cIlwiJiZhIT09dm9pZCAwfSkpKXJldHVybiB5cygpLlRhZ0NvbnRlbnRUeXBlLlJBV19URVhUfX0pLGx3YzpLZSh7bmFtZTpcImx3Y1wifSl9fX0pO3JldHVybiBpbCgpO30pOyIsICIoZnVuY3Rpb24oZSl7aWYodHlwZW9mIGV4cG9ydHM9PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGU9PVwib2JqZWN0XCIpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYodHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKWRlZmluZShlKTtlbHNle3ZhciBpPXR5cGVvZiBnbG9iYWxUaGlzPFwidVwiP2dsb2JhbFRoaXM6dHlwZW9mIGdsb2JhbDxcInVcIj9nbG9iYWw6dHlwZW9mIHNlbGY8XCJ1XCI/c2VsZjp0aGlzfHx7fTtpLnByZXR0aWVyUGx1Z2lucz1pLnByZXR0aWVyUGx1Z2luc3x8e30saS5wcmV0dGllclBsdWdpbnMueWFtbD1lKCl9fSkoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgd3Q9KHIsZSk9PigpPT4oZXx8cigoZT17ZXhwb3J0czp7fX0pLmV4cG9ydHMsZSksZS5leHBvcnRzKTt2YXIgdXI9d3QoKG1yLGx0KT0+e3ZhciBEZT1PYmplY3QuZGVmaW5lUHJvcGVydHksU3Q9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixGZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxFdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHhlPShyLGUpPT5mdW5jdGlvbigpe3JldHVybiByJiYoZT0oMCxyW0ZlKHIpWzBdXSkocj0wKSksZX0sRj0ocixlKT0+ZnVuY3Rpb24oKXtyZXR1cm4gZXx8KDAscltGZShyKVswXV0pKChlPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxlKSxlLmV4cG9ydHN9LE10PShyLGUpPT57Zm9yKHZhciBuIGluIGUpRGUocixuLHtnZXQ6ZVtuXSxlbnVtZXJhYmxlOiEwfSl9LE90PShyLGUsbixjKT0+e2lmKGUmJnR5cGVvZiBlPT1cIm9iamVjdFwifHx0eXBlb2YgZT09XCJmdW5jdGlvblwiKWZvcihsZXQgaCBvZiBGZShlKSkhRXQuY2FsbChyLGgpJiZoIT09biYmRGUocixoLHtnZXQ6KCk9PmVbaF0sZW51bWVyYWJsZTohKGM9U3QoZSxoKSl8fGMuZW51bWVyYWJsZX0pO3JldHVybiByfSxzZT1yPT5PdChEZSh7fSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxyKSxLZSwkZSxUZSxEPXhlKHtcIjxkZWZpbmU6cHJvY2Vzcz5cIigpe0tlPXt9LCRlPVtdLFRlPXtlbnY6S2UsYXJndjokZX19fSksTHQ9Rih7XCJzcmMvY29tbW9uL3BhcnNlci1jcmVhdGUtZXJyb3IuanNcIihyLGUpe1widXNlIHN0cmljdFwiO0QoKTtmdW5jdGlvbiBuKGMsaCl7bGV0IGQ9bmV3IFN5bnRheEVycm9yKGMrXCIgKFwiK2guc3RhcnQubGluZStcIjpcIitoLnN0YXJ0LmNvbHVtbitcIilcIik7cmV0dXJuIGQubG9jPWgsZH1lLmV4cG9ydHM9bn19KSxBdD1GKHtcInNyYy9sYW5ndWFnZS15YW1sL3ByYWdtYS5qc1wiKHIsZSl7XCJ1c2Ugc3RyaWN0XCI7RCgpO2Z1bmN0aW9uIG4oZCl7cmV0dXJuL15cXHMqQCg/OnByZXR0aWVyfGZvcm1hdClcXHMqJC8udGVzdChkKX1mdW5jdGlvbiBjKGQpe3JldHVybi9eXFxzKiNbXlxcU1xcbl0qQCg/OnByZXR0aWVyfGZvcm1hdClcXHMqPyg/OlxcbnwkKS8udGVzdChkKX1mdW5jdGlvbiBoKGQpe3JldHVybmAjIEBmb3JtYXRcblxuYC5jb25jYXQoZCl9ZS5leHBvcnRzPXtpc1ByYWdtYTpuLGhhc1ByYWdtYTpjLGluc2VydFByYWdtYTpofX19KSxOdD1GKHtcInNyYy9sYW5ndWFnZS15YW1sL2xvYy5qc1wiKHIsZSl7XCJ1c2Ugc3RyaWN0XCI7RCgpO2Z1bmN0aW9uIG4oaCl7cmV0dXJuIGgucG9zaXRpb24uc3RhcnQub2Zmc2V0fWZ1bmN0aW9uIGMoaCl7cmV0dXJuIGgucG9zaXRpb24uZW5kLm9mZnNldH1lLmV4cG9ydHM9e2xvY1N0YXJ0Om4sbG9jRW5kOmN9fX0pLHRlPXt9O010KHRlLHtfX2Fzc2lnbjooKT0+cWUsX19hc3luY0RlbGVnYXRvcjooKT0+V3QsX19hc3luY0dlbmVyYXRvcjooKT0+RnQsX19hc3luY1ZhbHVlczooKT0+VnQsX19hd2FpdDooKT0+Q2UsX19hd2FpdGVyOigpPT5SdCxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OigpPT4kdCxfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OigpPT5KdCxfX2NyZWF0ZUJpbmRpbmc6KCk9PkJ0LF9fZGVjb3JhdGU6KCk9Pmt0LF9fZXhwb3J0U3RhcjooKT0+anQsX19leHRlbmRzOigpPT5UdCxfX2dlbmVyYXRvcjooKT0+cXQsX19pbXBvcnREZWZhdWx0OigpPT5LdCxfX2ltcG9ydFN0YXI6KCk9PlV0LF9fbWFrZVRlbXBsYXRlT2JqZWN0OigpPT5RdCxfX21ldGFkYXRhOigpPT5JdCxfX3BhcmFtOigpPT5QdCxfX3JlYWQ6KCk9PkhlLF9fcmVzdDooKT0+Q3QsX19zcHJlYWQ6KCk9Pll0LF9fc3ByZWFkQXJyYXlzOigpPT5EdCxfX3ZhbHVlczooKT0+WWV9KTtmdW5jdGlvbiBUdChyLGUpe1JlKHIsZSk7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9cn1yLnByb3RvdHlwZT1lPT09bnVsbD9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9ZnVuY3Rpb24gQ3QocixlKXt2YXIgbj17fTtmb3IodmFyIGMgaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixjKSYmZS5pbmRleE9mKGMpPDAmJihuW2NdPXJbY10pO2lmKHIhPW51bGwmJnR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzPT1cImZ1bmN0aW9uXCIpZm9yKHZhciBoPTAsYz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHIpO2g8Yy5sZW5ndGg7aCsrKWUuaW5kZXhPZihjW2hdKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocixjW2hdKSYmKG5bY1toXV09cltjW2hdXSk7cmV0dXJuIG59ZnVuY3Rpb24ga3QocixlLG4sYyl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aCxkPWg8Mz9lOmM9PT1udWxsP2M9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOmMseTtpZih0eXBlb2YgUmVmbGVjdD09XCJvYmplY3RcIiYmdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGU9PVwiZnVuY3Rpb25cIilkPVJlZmxlY3QuZGVjb3JhdGUocixlLG4sYyk7ZWxzZSBmb3IodmFyIEU9ci5sZW5ndGgtMTtFPj0wO0UtLSkoeT1yW0VdKSYmKGQ9KGg8Mz95KGQpOmg+Mz95KGUsbixkKTp5KGUsbikpfHxkKTtyZXR1cm4gaD4zJiZkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGQpLGR9ZnVuY3Rpb24gUHQocixlKXtyZXR1cm4gZnVuY3Rpb24obixjKXtlKG4sYyxyKX19ZnVuY3Rpb24gSXQocixlKXtpZih0eXBlb2YgUmVmbGVjdD09XCJvYmplY3RcIiYmdHlwZW9mIFJlZmxlY3QubWV0YWRhdGE9PVwiZnVuY3Rpb25cIilyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShyLGUpfWZ1bmN0aW9uIFJ0KHIsZSxuLGMpe2Z1bmN0aW9uIGgoZCl7cmV0dXJuIGQgaW5zdGFuY2VvZiBuP2Q6bmV3IG4oZnVuY3Rpb24oeSl7eShkKX0pfXJldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKGZ1bmN0aW9uKGQseSl7ZnVuY3Rpb24gRShNKXt0cnl7UyhjLm5leHQoTSkpfWNhdGNoKFQpe3koVCl9fWZ1bmN0aW9uIEkoTSl7dHJ5e1MoYy50aHJvdyhNKSl9Y2F0Y2goVCl7eShUKX19ZnVuY3Rpb24gUyhNKXtNLmRvbmU/ZChNLnZhbHVlKTpoKE0udmFsdWUpLnRoZW4oRSxJKX1TKChjPWMuYXBwbHkocixlfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBxdChyLGUpe3ZhciBuPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZihkWzBdJjEpdGhyb3cgZFsxXTtyZXR1cm4gZFsxXX0sdHJ5czpbXSxvcHM6W119LGMsaCxkLHk7cmV0dXJuIHk9e25leHQ6RSgwKSx0aHJvdzpFKDEpLHJldHVybjpFKDIpfSx0eXBlb2YgU3ltYm9sPT1cImZ1bmN0aW9uXCImJih5W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHk7ZnVuY3Rpb24gRShTKXtyZXR1cm4gZnVuY3Rpb24oTSl7cmV0dXJuIEkoW1MsTV0pfX1mdW5jdGlvbiBJKFMpe2lmKGMpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtuOyl0cnl7aWYoYz0xLGgmJihkPVNbMF0mMj9oLnJldHVybjpTWzBdP2gudGhyb3d8fCgoZD1oLnJldHVybikmJmQuY2FsbChoKSwwKTpoLm5leHQpJiYhKGQ9ZC5jYWxsKGgsU1sxXSkpLmRvbmUpcmV0dXJuIGQ7c3dpdGNoKGg9MCxkJiYoUz1bU1swXSYyLGQudmFsdWVdKSxTWzBdKXtjYXNlIDA6Y2FzZSAxOmQ9UzticmVhaztjYXNlIDQ6cmV0dXJuIG4ubGFiZWwrKyx7dmFsdWU6U1sxXSxkb25lOiExfTtjYXNlIDU6bi5sYWJlbCsrLGg9U1sxXSxTPVswXTtjb250aW51ZTtjYXNlIDc6Uz1uLm9wcy5wb3AoKSxuLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZihkPW4udHJ5cywhKGQ9ZC5sZW5ndGg+MCYmZFtkLmxlbmd0aC0xXSkmJihTWzBdPT09Nnx8U1swXT09PTIpKXtuPTA7Y29udGludWV9aWYoU1swXT09PTMmJighZHx8U1sxXT5kWzBdJiZTWzFdPGRbM10pKXtuLmxhYmVsPVNbMV07YnJlYWt9aWYoU1swXT09PTYmJm4ubGFiZWw8ZFsxXSl7bi5sYWJlbD1kWzFdLGQ9UzticmVha31pZihkJiZuLmxhYmVsPGRbMl0pe24ubGFiZWw9ZFsyXSxuLm9wcy5wdXNoKFMpO2JyZWFrfWRbMl0mJm4ub3BzLnBvcCgpLG4udHJ5cy5wb3AoKTtjb250aW51ZX1TPWUuY2FsbChyLG4pfWNhdGNoKE0pe1M9WzYsTV0saD0wfWZpbmFsbHl7Yz1kPTB9aWYoU1swXSY1KXRocm93IFNbMV07cmV0dXJue3ZhbHVlOlNbMF0/U1sxXTp2b2lkIDAsZG9uZTohMH19fWZ1bmN0aW9uIEJ0KHIsZSxuLGMpe2M9PT12b2lkIDAmJihjPW4pLHJbY109ZVtuXX1mdW5jdGlvbiBqdChyLGUpe2Zvcih2YXIgbiBpbiByKW4hPT1cImRlZmF1bHRcIiYmIWUuaGFzT3duUHJvcGVydHkobikmJihlW25dPXJbbl0pfWZ1bmN0aW9uIFllKHIpe3ZhciBlPXR5cGVvZiBTeW1ib2w9PVwiZnVuY3Rpb25cIiYmU3ltYm9sLml0ZXJhdG9yLG49ZSYmcltlXSxjPTA7aWYobilyZXR1cm4gbi5jYWxsKHIpO2lmKHImJnR5cGVvZiByLmxlbmd0aD09XCJudW1iZXJcIilyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiByJiZjPj1yLmxlbmd0aCYmKHI9dm9pZCAwKSx7dmFsdWU6ciYmcltjKytdLGRvbmU6IXJ9fX07dGhyb3cgbmV3IFR5cGVFcnJvcihlP1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9ZnVuY3Rpb24gSGUocixlKXt2YXIgbj10eXBlb2YgU3ltYm9sPT1cImZ1bmN0aW9uXCImJnJbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gcjt2YXIgYz1uLmNhbGwociksaCxkPVtdLHk7dHJ5e2Zvcig7KGU9PT12b2lkIDB8fGUtLSA+MCkmJiEoaD1jLm5leHQoKSkuZG9uZTspZC5wdXNoKGgudmFsdWUpfWNhdGNoKEUpe3k9e2Vycm9yOkV9fWZpbmFsbHl7dHJ5e2gmJiFoLmRvbmUmJihuPWMucmV0dXJuKSYmbi5jYWxsKGMpfWZpbmFsbHl7aWYoeSl0aHJvdyB5LmVycm9yfX1yZXR1cm4gZH1mdW5jdGlvbiBZdCgpe2Zvcih2YXIgcj1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylyPXIuY29uY2F0KEhlKGFyZ3VtZW50c1tlXSkpO3JldHVybiByfWZ1bmN0aW9uIER0KCl7Zm9yKHZhciByPTAsZT0wLG49YXJndW1lbnRzLmxlbmd0aDtlPG47ZSsrKXIrPWFyZ3VtZW50c1tlXS5sZW5ndGg7Zm9yKHZhciBjPUFycmF5KHIpLGg9MCxlPTA7ZTxuO2UrKylmb3IodmFyIGQ9YXJndW1lbnRzW2VdLHk9MCxFPWQubGVuZ3RoO3k8RTt5KyssaCsrKWNbaF09ZFt5XTtyZXR1cm4gY31mdW5jdGlvbiBDZShyKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIENlPyh0aGlzLnY9cix0aGlzKTpuZXcgQ2Uocil9ZnVuY3Rpb24gRnQocixlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO3ZhciBjPW4uYXBwbHkocixlfHxbXSksaCxkPVtdO3JldHVybiBoPXt9LHkoXCJuZXh0XCIpLHkoXCJ0aHJvd1wiKSx5KFwicmV0dXJuXCIpLGhbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGg7ZnVuY3Rpb24geShQKXtjW1BdJiYoaFtQXT1mdW5jdGlvbihDKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocSxSKXtkLnB1c2goW1AsQyxxLFJdKT4xfHxFKFAsQyl9KX0pfWZ1bmN0aW9uIEUoUCxDKXt0cnl7SShjW1BdKEMpKX1jYXRjaChxKXtUKGRbMF1bM10scSl9fWZ1bmN0aW9uIEkoUCl7UC52YWx1ZSBpbnN0YW5jZW9mIENlP1Byb21pc2UucmVzb2x2ZShQLnZhbHVlLnYpLnRoZW4oUyxNKTpUKGRbMF1bMl0sUCl9ZnVuY3Rpb24gUyhQKXtFKFwibmV4dFwiLFApfWZ1bmN0aW9uIE0oUCl7RShcInRocm93XCIsUCl9ZnVuY3Rpb24gVChQLEMpe1AoQyksZC5zaGlmdCgpLGQubGVuZ3RoJiZFKGRbMF1bMF0sZFswXVsxXSl9fWZ1bmN0aW9uIFd0KHIpe3ZhciBlLG47cmV0dXJuIGU9e30sYyhcIm5leHRcIiksYyhcInRocm93XCIsZnVuY3Rpb24oaCl7dGhyb3cgaH0pLGMoXCJyZXR1cm5cIiksZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGU7ZnVuY3Rpb24gYyhoLGQpe2VbaF09cltoXT9mdW5jdGlvbih5KXtyZXR1cm4obj0hbik/e3ZhbHVlOkNlKHJbaF0oeSkpLGRvbmU6aD09PVwicmV0dXJuXCJ9OmQ/ZCh5KTp5fTpkfX1mdW5jdGlvbiBWdChyKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgZT1yW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSxuO3JldHVybiBlP2UuY2FsbChyKToocj10eXBlb2YgWWU9PVwiZnVuY3Rpb25cIj9ZZShyKTpyW1N5bWJvbC5pdGVyYXRvcl0oKSxuPXt9LGMoXCJuZXh0XCIpLGMoXCJ0aHJvd1wiKSxjKFwicmV0dXJuXCIpLG5bU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG4pO2Z1bmN0aW9uIGMoZCl7bltkXT1yW2RdJiZmdW5jdGlvbih5KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oRSxJKXt5PXJbZF0oeSksaChFLEkseS5kb25lLHkudmFsdWUpfSl9fWZ1bmN0aW9uIGgoZCx5LEUsSSl7UHJvbWlzZS5yZXNvbHZlKEkpLnRoZW4oZnVuY3Rpb24oUyl7ZCh7dmFsdWU6Uyxkb25lOkV9KX0seSl9fWZ1bmN0aW9uIFF0KHIsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkocixcInJhd1wiLHt2YWx1ZTplfSk6ci5yYXc9ZSxyfWZ1bmN0aW9uIFV0KHIpe2lmKHImJnIuX19lc01vZHVsZSlyZXR1cm4gcjt2YXIgZT17fTtpZihyIT1udWxsKWZvcih2YXIgbiBpbiByKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pO3JldHVybiBlLmRlZmF1bHQ9cixlfWZ1bmN0aW9uIEt0KHIpe3JldHVybiByJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfX1mdW5jdGlvbiAkdChyLGUpe2lmKCFlLmhhcyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtyZXR1cm4gZS5nZXQocil9ZnVuY3Rpb24gSnQocixlLG4pe2lmKCFlLmhhcyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIHNldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtyZXR1cm4gZS5zZXQocixuKSxufXZhciBSZSxxZSxhZT14ZSh7XCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzXCIoKXtEKCksUmU9ZnVuY3Rpb24ocixlKXtyZXR1cm4gUmU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKG4sYyl7bi5fX3Byb3RvX189Y318fGZ1bmN0aW9uKG4sYyl7Zm9yKHZhciBoIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShoKSYmKG5baF09Y1toXSl9LFJlKHIsZSl9LHFlPWZ1bmN0aW9uKCl7cmV0dXJuIHFlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgbixjPTEsaD1hcmd1bWVudHMubGVuZ3RoO2M8aDtjKyspe249YXJndW1lbnRzW2NdO2Zvcih2YXIgZCBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLGQpJiYoZVtkXT1uW2RdKX1yZXR1cm4gZX0scWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19KSx4dD1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9ub2RlX21vZHVsZXMvbGluZXMtYW5kLWNvbHVtbnMvYnVpbGQvaW5kZXguanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwLHIuTGluZXNBbmRDb2x1bW5zPXZvaWQgMDt2YXIgZT1gXG5gLG49XCJcXHJcIixjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChkKXt0aGlzLnN0cmluZz1kO2Zvcih2YXIgeT1bMF0sRT0wO0U8ZC5sZW5ndGg7KXN3aXRjaChkW0VdKXtjYXNlIGU6RSs9ZS5sZW5ndGgseS5wdXNoKEUpO2JyZWFrO2Nhc2UgbjpFKz1uLmxlbmd0aCxkW0VdPT09ZSYmKEUrPWUubGVuZ3RoKSx5LnB1c2goRSk7YnJlYWs7ZGVmYXVsdDpFKys7YnJlYWt9dGhpcy5vZmZzZXRzPXl9cmV0dXJuIGgucHJvdG90eXBlLmxvY2F0aW9uRm9ySW5kZXg9ZnVuY3Rpb24oZCl7aWYoZDwwfHxkPnRoaXMuc3RyaW5nLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IodmFyIHk9MCxFPXRoaXMub2Zmc2V0cztFW3krMV08PWQ7KXkrKzt2YXIgST1kLUVbeV07cmV0dXJue2xpbmU6eSxjb2x1bW46SX19LGgucHJvdG90eXBlLmluZGV4Rm9yTG9jYXRpb249ZnVuY3Rpb24oZCl7dmFyIHk9ZC5saW5lLEU9ZC5jb2x1bW47cmV0dXJuIHk8MHx8eT49dGhpcy5vZmZzZXRzLmxlbmd0aHx8RTwwfHxFPnRoaXMubGVuZ3RoT2ZMaW5lKHkpP251bGw6dGhpcy5vZmZzZXRzW3ldK0V9LGgucHJvdG90eXBlLmxlbmd0aE9mTGluZT1mdW5jdGlvbihkKXt2YXIgeT10aGlzLm9mZnNldHNbZF0sRT1kPT09dGhpcy5vZmZzZXRzLmxlbmd0aC0xP3RoaXMuc3RyaW5nLmxlbmd0aDp0aGlzLm9mZnNldHNbZCsxXTtyZXR1cm4gRS15fSxofSgpO3IuTGluZXNBbmRDb2x1bW5zPWMsci5kZWZhdWx0PWN9fSksSHQ9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3V0aWxzL2RlZmluZS1wYXJlbnRzLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKG4sYyl7Yz09PXZvaWQgMCYmKGM9bnVsbCksXCJjaGlsZHJlblwiaW4gbiYmbi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBlKGgsbil9KSxcImFuY2hvclwiaW4gbiYmbi5hbmNob3ImJmUobi5hbmNob3IsbiksXCJ0YWdcImluIG4mJm4udGFnJiZlKG4udGFnLG4pLFwibGVhZGluZ0NvbW1lbnRzXCJpbiBuJiZuLmxlYWRpbmdDb21tZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBlKGgsbil9KSxcIm1pZGRsZUNvbW1lbnRzXCJpbiBuJiZuLm1pZGRsZUNvbW1lbnRzLmZvckVhY2goZnVuY3Rpb24oaCl7cmV0dXJuIGUoaCxuKX0pLFwiaW5kaWNhdG9yQ29tbWVudFwiaW4gbiYmbi5pbmRpY2F0b3JDb21tZW50JiZlKG4uaW5kaWNhdG9yQ29tbWVudCxuKSxcInRyYWlsaW5nQ29tbWVudFwiaW4gbiYmbi50cmFpbGluZ0NvbW1lbnQmJmUobi50cmFpbGluZ0NvbW1lbnQsbiksXCJlbmRDb21tZW50c1wiaW4gbiYmbi5lbmRDb21tZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBlKGgsbil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9wYXJlbnRcIix7dmFsdWU6YyxlbnVtZXJhYmxlOiExfSl9ci5kZWZpbmVQYXJlbnRzPWV9fSksV2U9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3V0aWxzL2dldC1wb2ludC10ZXh0LmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKG4pe3JldHVybiBuLmxpbmUrXCI6XCIrbi5jb2x1bW59ci5nZXRQb2ludFRleHQ9ZX19KSxHdD1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvYXR0YWNoLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1IdCgpLG49V2UoKTtmdW5jdGlvbiBjKFMpe2UuZGVmaW5lUGFyZW50cyhTKTt2YXIgTT1oKFMpLFQ9Uy5jaGlsZHJlbi5zbGljZSgpO1MuY29tbWVudHMuc29ydChmdW5jdGlvbihQLEMpe3JldHVybiBQLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldC1DLnBvc2l0aW9uLmVuZC5vZmZzZXR9KS5maWx0ZXIoZnVuY3Rpb24oUCl7cmV0dXJuIVAuX3BhcmVudH0pLmZvckVhY2goZnVuY3Rpb24oUCl7Zm9yKDtULmxlbmd0aD4xJiZQLnBvc2l0aW9uLnN0YXJ0LmxpbmU+VFswXS5wb3NpdGlvbi5lbmQubGluZTspVC5zaGlmdCgpO3koUCxNLFRbMF0pfSl9ci5hdHRhY2hDb21tZW50cz1jO2Z1bmN0aW9uIGgoUyl7Zm9yKHZhciBNPUFycmF5LmZyb20obmV3IEFycmF5KFMucG9zaXRpb24uZW5kLmxpbmUpLGZ1bmN0aW9uKCl7cmV0dXJue319KSxUPTAsUD1TLmNvbW1lbnRzO1Q8UC5sZW5ndGg7VCsrKXt2YXIgQz1QW1RdO01bQy5wb3NpdGlvbi5zdGFydC5saW5lLTFdLmNvbW1lbnQ9Q31yZXR1cm4gZChNLFMpLE19ZnVuY3Rpb24gZChTLE0pe2lmKE0ucG9zaXRpb24uc3RhcnQub2Zmc2V0IT09TS5wb3NpdGlvbi5lbmQub2Zmc2V0KXtpZihcImxlYWRpbmdDb21tZW50c1wiaW4gTSl7dmFyIFQ9TS5wb3NpdGlvbi5zdGFydCxQPVNbVC5saW5lLTFdLmxlYWRpbmdBdHRhY2hhYmxlTm9kZTsoIVB8fFQuY29sdW1uPFAucG9zaXRpb24uc3RhcnQuY29sdW1uKSYmKFNbVC5saW5lLTFdLmxlYWRpbmdBdHRhY2hhYmxlTm9kZT1NKX1pZihcInRyYWlsaW5nQ29tbWVudFwiaW4gTSYmTS5wb3NpdGlvbi5lbmQuY29sdW1uPjEmJk0udHlwZSE9PVwiZG9jdW1lbnRcIiYmTS50eXBlIT09XCJkb2N1bWVudEhlYWRcIil7dmFyIEM9TS5wb3NpdGlvbi5lbmQscT1TW0MubGluZS0xXS50cmFpbGluZ0F0dGFjaGFibGVOb2RlOyghcXx8Qy5jb2x1bW4+PXEucG9zaXRpb24uZW5kLmNvbHVtbikmJihTW0MubGluZS0xXS50cmFpbGluZ0F0dGFjaGFibGVOb2RlPU0pfWlmKE0udHlwZSE9PVwicm9vdFwiJiZNLnR5cGUhPT1cImRvY3VtZW50XCImJk0udHlwZSE9PVwiZG9jdW1lbnRIZWFkXCImJk0udHlwZSE9PVwiZG9jdW1lbnRCb2R5XCIpZm9yKHZhciBSPU0ucG9zaXRpb24sVD1SLnN0YXJ0LEM9Ui5lbmQsaj1bQy5saW5lXS5jb25jYXQoVC5saW5lPT09Qy5saW5lP1tdOlQubGluZSksSz0wLG09ajtLPG0ubGVuZ3RoO0srKyl7dmFyIGE9bVtLXSx0PVNbYS0xXS50cmFpbGluZ05vZGU7KCF0fHxDLmNvbHVtbj49dC5wb3NpdGlvbi5lbmQuY29sdW1uKSYmKFNbYS0xXS50cmFpbGluZ05vZGU9TSl9XCJjaGlsZHJlblwiaW4gTSYmTS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKHMpe2QoUyxzKX0pfX1mdW5jdGlvbiB5KFMsTSxUKXt2YXIgUD1TLnBvc2l0aW9uLnN0YXJ0LmxpbmUsQz1NW1AtMV0udHJhaWxpbmdBdHRhY2hhYmxlTm9kZTtpZihDKXtpZihDLnRyYWlsaW5nQ29tbWVudCl0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIG11bHRpcGxlIHRyYWlsaW5nIGNvbW1lbnQgYXQgXCIrbi5nZXRQb2ludFRleHQoUy5wb3NpdGlvbi5zdGFydCkpO2UuZGVmaW5lUGFyZW50cyhTLEMpLEMudHJhaWxpbmdDb21tZW50PVM7cmV0dXJufWZvcih2YXIgcT1QO3E+PVQucG9zaXRpb24uc3RhcnQubGluZTtxLS0pe3ZhciBSPU1bcS0xXS50cmFpbGluZ05vZGUsaj12b2lkIDA7aWYoUilqPVI7ZWxzZSBpZihxIT09UCYmTVtxLTFdLmNvbW1lbnQpaj1NW3EtMV0uY29tbWVudC5fcGFyZW50O2Vsc2UgY29udGludWU7aWYoKGoudHlwZT09PVwic2VxdWVuY2VcInx8ai50eXBlPT09XCJtYXBwaW5nXCIpJiYoaj1qLmNoaWxkcmVuWzBdKSxqLnR5cGU9PT1cIm1hcHBpbmdJdGVtXCIpe3ZhciBLPWouY2hpbGRyZW4sbT1LWzBdLGE9S1sxXTtqPUkobSk/bTphfWZvcig7Oyl7aWYoRShqLFMpKXtlLmRlZmluZVBhcmVudHMoUyxqKSxqLmVuZENvbW1lbnRzLnB1c2goUyk7cmV0dXJufWlmKCFqLl9wYXJlbnQpYnJlYWs7aj1qLl9wYXJlbnR9YnJlYWt9Zm9yKHZhciBxPVArMTtxPD1ULnBvc2l0aW9uLmVuZC5saW5lO3ErKyl7dmFyIHQ9TVtxLTFdLmxlYWRpbmdBdHRhY2hhYmxlTm9kZTtpZih0KXtlLmRlZmluZVBhcmVudHMoUyx0KSx0LmxlYWRpbmdDb21tZW50cy5wdXNoKFMpO3JldHVybn19dmFyIHM9VC5jaGlsZHJlblsxXTtlLmRlZmluZVBhcmVudHMoUyxzKSxzLmVuZENvbW1lbnRzLnB1c2goUyl9ZnVuY3Rpb24gRShTLE0pe2lmKFMucG9zaXRpb24uc3RhcnQub2Zmc2V0PE0ucG9zaXRpb24uc3RhcnQub2Zmc2V0JiZTLnBvc2l0aW9uLmVuZC5vZmZzZXQ+TS5wb3NpdGlvbi5lbmQub2Zmc2V0KXN3aXRjaChTLnR5cGUpe2Nhc2VcImZsb3dNYXBwaW5nXCI6Y2FzZVwiZmxvd1NlcXVlbmNlXCI6cmV0dXJuIFMuY2hpbGRyZW4ubGVuZ3RoPT09MHx8TS5wb3NpdGlvbi5zdGFydC5saW5lPlMuY2hpbGRyZW5bUy5jaGlsZHJlbi5sZW5ndGgtMV0ucG9zaXRpb24uZW5kLmxpbmV9aWYoTS5wb3NpdGlvbi5lbmQub2Zmc2V0PFMucG9zaXRpb24uZW5kLm9mZnNldClyZXR1cm4hMTtzd2l0Y2goUy50eXBlKXtjYXNlXCJzZXF1ZW5jZUl0ZW1cIjpyZXR1cm4gTS5wb3NpdGlvbi5zdGFydC5jb2x1bW4+Uy5wb3NpdGlvbi5zdGFydC5jb2x1bW47Y2FzZVwibWFwcGluZ0tleVwiOmNhc2VcIm1hcHBpbmdWYWx1ZVwiOnJldHVybiBNLnBvc2l0aW9uLnN0YXJ0LmNvbHVtbj5TLl9wYXJlbnQucG9zaXRpb24uc3RhcnQuY29sdW1uJiYoUy5jaGlsZHJlbi5sZW5ndGg9PT0wfHxTLmNoaWxkcmVuLmxlbmd0aD09PTEmJlMuY2hpbGRyZW5bMF0udHlwZSE9PVwiYmxvY2tGb2xkZWRcIiYmUy5jaGlsZHJlblswXS50eXBlIT09XCJibG9ja0xpdGVyYWxcIikmJihTLnR5cGU9PT1cIm1hcHBpbmdWYWx1ZVwifHxJKFMpKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBJKFMpe3JldHVybiBTLnBvc2l0aW9uLnN0YXJ0IT09Uy5wb3NpdGlvbi5lbmQmJihTLmNoaWxkcmVuLmxlbmd0aD09PTB8fFMucG9zaXRpb24uc3RhcnQub2Zmc2V0IT09Uy5jaGlsZHJlblswXS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpfX19KSxtZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL25vZGUuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO2Z1bmN0aW9uIGUobixjKXtyZXR1cm57dHlwZTpuLHBvc2l0aW9uOmN9fXIuY3JlYXRlTm9kZT1lfX0pLHp0PUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvcm9vdC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPW1lKCk7ZnVuY3Rpb24gYyhoLGQseSl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxuLmNyZWF0ZU5vZGUoXCJyb290XCIsaCkpLHtjaGlsZHJlbjpkLGNvbW1lbnRzOnl9KX1yLmNyZWF0ZVJvb3Q9Y319KSxadD1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvcHJlcHJvY2Vzcy5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7ZnVuY3Rpb24gZShuKXtzd2l0Y2gobi50eXBlKXtjYXNlXCJET0NVTUVOVFwiOmZvcih2YXIgYz1uLmNvbnRlbnRzLmxlbmd0aC0xO2M+PTA7Yy0tKW4uY29udGVudHNbY10udHlwZT09PVwiQkxBTktfTElORVwiP24uY29udGVudHMuc3BsaWNlKGMsMSk6ZShuLmNvbnRlbnRzW2NdKTtmb3IodmFyIGM9bi5kaXJlY3RpdmVzLmxlbmd0aC0xO2M+PTA7Yy0tKW4uZGlyZWN0aXZlc1tjXS50eXBlPT09XCJCTEFOS19MSU5FXCImJm4uZGlyZWN0aXZlcy5zcGxpY2UoYywxKTticmVhaztjYXNlXCJGTE9XX01BUFwiOmNhc2VcIkZMT1dfU0VRXCI6Y2FzZVwiTUFQXCI6Y2FzZVwiU0VRXCI6Zm9yKHZhciBjPW4uaXRlbXMubGVuZ3RoLTE7Yz49MDtjLS0pe3ZhciBoPW4uaXRlbXNbY107XCJjaGFyXCJpbiBofHwoaC50eXBlPT09XCJCTEFOS19MSU5FXCI/bi5pdGVtcy5zcGxpY2UoYywxKTplKGgpKX1icmVhaztjYXNlXCJNQVBfS0VZXCI6Y2FzZVwiTUFQX1ZBTFVFXCI6Y2FzZVwiU0VRX0lURU1cIjpuLm5vZGUmJmUobi5ub2RlKTticmVhaztjYXNlXCJBTElBU1wiOmNhc2VcIkJMQU5LX0xJTkVcIjpjYXNlXCJCTE9DS19GT0xERURcIjpjYXNlXCJCTE9DS19MSVRFUkFMXCI6Y2FzZVwiQ09NTUVOVFwiOmNhc2VcIkRJUkVDVElWRVwiOmNhc2VcIlBMQUlOXCI6Y2FzZVwiUVVPVEVfRE9VQkxFXCI6Y2FzZVwiUVVPVEVfU0lOR0xFXCI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIG5vZGUgdHlwZSBcIitKU09OLnN0cmluZ2lmeShuLnR5cGUpKX19ci5yZW1vdmVDc3RCbGFua0xpbmU9ZX19KSxPZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2xlYWRpbmctY29tbWVudC1hdHRhY2hhYmxlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKCl7cmV0dXJue2xlYWRpbmdDb21tZW50czpbXX19ci5jcmVhdGVMZWFkaW5nQ29tbWVudEF0dGFjaGFibGU9ZX19KSxCZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL3RyYWlsaW5nLWNvbW1lbnQtYXR0YWNoYWJsZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7ZnVuY3Rpb24gZShuKXtyZXR1cm4gbj09PXZvaWQgMCYmKG49bnVsbCkse3RyYWlsaW5nQ29tbWVudDpufX1yLmNyZWF0ZVRyYWlsaW5nQ29tbWVudEF0dGFjaGFibGU9ZX19KSxTZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2NvbW1lbnQtYXR0YWNoYWJsZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPU9lKCksYz1CZSgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LG4uY3JlYXRlTGVhZGluZ0NvbW1lbnRBdHRhY2hhYmxlKCkpLGMuY3JlYXRlVHJhaWxpbmdDb21tZW50QXR0YWNoYWJsZSgpKX1yLmNyZWF0ZUNvbW1lbnRBdHRhY2hhYmxlPWh9fSksWHQ9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL2ZhY3Rvcmllcy9hbGlhcy5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPVNlKCksYz1tZSgpO2Z1bmN0aW9uIGgoZCx5LEUpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LGMuY3JlYXRlTm9kZShcImFsaWFzXCIsZCkpLG4uY3JlYXRlQ29tbWVudEF0dGFjaGFibGUoKSkseSkse3ZhbHVlOkV9KX1yLmNyZWF0ZUFsaWFzPWh9fSksZW49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybXMvYWxpYXMuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPVh0KCk7ZnVuY3Rpb24gbihjLGgpe3ZhciBkPWMuY3N0Tm9kZTtyZXR1cm4gZS5jcmVhdGVBbGlhcyhoLnRyYW5zZm9ybVJhbmdlKHtvcmlnU3RhcnQ6ZC52YWx1ZVJhbmdlLm9yaWdTdGFydC0xLG9yaWdFbmQ6ZC52YWx1ZVJhbmdlLm9yaWdFbmR9KSxoLnRyYW5zZm9ybUNvbnRlbnQoYyksZC5yYXdWYWx1ZSl9ci50cmFuc2Zvcm1BbGlhcz1ufX0pLHRuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvYmxvY2stZm9sZGVkLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpO2Z1bmN0aW9uIG4oYyl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxjKSx7dHlwZTpcImJsb2NrRm9sZGVkXCJ9KX1yLmNyZWF0ZUJsb2NrRm9sZGVkPW59fSksbm49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL2ZhY3Rvcmllcy9ibG9jay12YWx1ZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPU9lKCksYz1tZSgpO2Z1bmN0aW9uIGgoZCx5LEUsSSxTLE0pe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LGMuY3JlYXRlTm9kZShcImJsb2NrVmFsdWVcIixkKSksbi5jcmVhdGVMZWFkaW5nQ29tbWVudEF0dGFjaGFibGUoKSkseSkse2Nob21waW5nOkUsaW5kZW50OkksdmFsdWU6UyxpbmRpY2F0b3JDb21tZW50Ok19KX1yLmNyZWF0ZUJsb2NrVmFsdWU9aH19KSxHZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvY29uc3RhbnRzLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZTsoZnVuY3Rpb24obil7bi5UYWc9XCIhXCIsbi5BbmNob3I9XCImXCIsbi5Db21tZW50PVwiI1wifSkoZT1yLlByb3BMZWFkaW5nQ2hhcmFjdGVyfHwoci5Qcm9wTGVhZGluZ0NoYXJhY3Rlcj17fSkpfX0pLHJuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvYW5jaG9yLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49bWUoKTtmdW5jdGlvbiBjKGgsZCl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxuLmNyZWF0ZU5vZGUoXCJhbmNob3JcIixoKSkse3ZhbHVlOmR9KX1yLmNyZWF0ZUFuY2hvcj1jfX0pLFZlPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvY29tbWVudC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPW1lKCk7ZnVuY3Rpb24gYyhoLGQpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sbi5jcmVhdGVOb2RlKFwiY29tbWVudFwiLGgpKSx7dmFsdWU6ZH0pfXIuY3JlYXRlQ29tbWVudD1jfX0pLHNuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvY29udGVudC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7ZnVuY3Rpb24gZShuLGMsaCl7cmV0dXJue2FuY2hvcjpjLHRhZzpuLG1pZGRsZUNvbW1lbnRzOmh9fXIuY3JlYXRlQ29udGVudD1lfX0pLGFuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvdGFnLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49bWUoKTtmdW5jdGlvbiBjKGgsZCl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxuLmNyZWF0ZU5vZGUoXCJ0YWdcIixoKSkse3ZhbHVlOmR9KX1yLmNyZWF0ZVRhZz1jfX0pLHplPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi90cmFuc2Zvcm1zL2NvbnRlbnQuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPUdlKCksbj1ybigpLGM9VmUoKSxoPXNuKCksZD1hbigpO2Z1bmN0aW9uIHkoRSxJLFMpe1M9PT12b2lkIDAmJihTPWZ1bmN0aW9uKCl7cmV0dXJuITF9KTtmb3IodmFyIE09RS5jc3ROb2RlLFQ9W10sUD1udWxsLEM9bnVsbCxxPW51bGwsUj0wLGo9TS5wcm9wcztSPGoubGVuZ3RoO1IrKyl7dmFyIEs9altSXSxtPUkudGV4dFtLLm9yaWdTdGFydF07c3dpdGNoKG0pe2Nhc2UgZS5Qcm9wTGVhZGluZ0NoYXJhY3Rlci5UYWc6UD1QfHxLLEM9ZC5jcmVhdGVUYWcoSS50cmFuc2Zvcm1SYW5nZShLKSxFLnRhZyk7YnJlYWs7Y2FzZSBlLlByb3BMZWFkaW5nQ2hhcmFjdGVyLkFuY2hvcjpQPVB8fEsscT1uLmNyZWF0ZUFuY2hvcihJLnRyYW5zZm9ybVJhbmdlKEspLE0uYW5jaG9yKTticmVhaztjYXNlIGUuUHJvcExlYWRpbmdDaGFyYWN0ZXIuQ29tbWVudDp7dmFyIGE9Yy5jcmVhdGVDb21tZW50KEkudHJhbnNmb3JtUmFuZ2UoSyksSS50ZXh0LnNsaWNlKEsub3JpZ1N0YXJ0KzEsSy5vcmlnRW5kKSk7SS5jb21tZW50cy5wdXNoKGEpLCFTKGEpJiZQJiZQLm9yaWdFbmQ8PUsub3JpZ1N0YXJ0JiZLLm9yaWdFbmQ8PU0udmFsdWVSYW5nZS5vcmlnU3RhcnQmJlQucHVzaChhKTticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgbGVhZGluZyBjaGFyYWN0ZXIgXCIrSlNPTi5zdHJpbmdpZnkobSkpfX1yZXR1cm4gaC5jcmVhdGVDb250ZW50KEMscSxUKX1yLnRyYW5zZm9ybUNvbnRlbnQ9eX19KSxaZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9ibG9jay12YWx1ZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9bm4oKSxuPVdlKCksYz16ZSgpLGg7KGZ1bmN0aW9uKHkpe3kuQ0xJUD1cImNsaXBcIix5LlNUUklQPVwic3RyaXBcIix5LktFRVA9XCJrZWVwXCJ9KShofHwoaD17fSkpO2Z1bmN0aW9uIGQoeSxFKXt2YXIgST15LmNzdE5vZGUsUz0xLE09SS5jaG9tcGluZz09PVwiQ0xJUFwiPzA6MSxUPUkuaGVhZGVyLm9yaWdFbmQtSS5oZWFkZXIub3JpZ1N0YXJ0LFA9VC1TLU0hPT0wLEM9RS50cmFuc2Zvcm1SYW5nZSh7b3JpZ1N0YXJ0OkkuaGVhZGVyLm9yaWdTdGFydCxvcmlnRW5kOkkudmFsdWVSYW5nZS5vcmlnRW5kfSkscT1udWxsLFI9Yy50cmFuc2Zvcm1Db250ZW50KHksRSxmdW5jdGlvbihqKXt2YXIgSz1DLnN0YXJ0Lm9mZnNldDxqLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCYmai5wb3NpdGlvbi5lbmQub2Zmc2V0PEMuZW5kLm9mZnNldDtpZighSylyZXR1cm4hMTtpZihxKXRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgbXVsdGlwbGUgaW5kaWNhdG9yIGNvbW1lbnRzIGF0IFwiK24uZ2V0UG9pbnRUZXh0KGoucG9zaXRpb24uc3RhcnQpKTtyZXR1cm4gcT1qLCEwfSk7cmV0dXJuIGUuY3JlYXRlQmxvY2tWYWx1ZShDLFIsaFtJLmNob21waW5nXSxQP0kuYmxvY2tJbmRlbnQ6bnVsbCxJLnN0clZhbHVlLHEpfXIudHJhbnNmb3JtQXN0QmxvY2tWYWx1ZT1kfX0pLG9uPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi90cmFuc2Zvcm1zL2Jsb2NrLWZvbGRlZC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9dG4oKSxuPVplKCk7ZnVuY3Rpb24gYyhoLGQpe3JldHVybiBlLmNyZWF0ZUJsb2NrRm9sZGVkKG4udHJhbnNmb3JtQXN0QmxvY2tWYWx1ZShoLGQpKX1yLnRyYW5zZm9ybUJsb2NrRm9sZGVkPWN9fSksbG49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL2ZhY3Rvcmllcy9ibG9jay1saXRlcmFsLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpO2Z1bmN0aW9uIG4oYyl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxjKSx7dHlwZTpcImJsb2NrTGl0ZXJhbFwifSl9ci5jcmVhdGVCbG9ja0xpdGVyYWw9bn19KSxjbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9ibG9jay1saXRlcmFsLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1sbigpLG49WmUoKTtmdW5jdGlvbiBjKGgsZCl7cmV0dXJuIGUuY3JlYXRlQmxvY2tMaXRlcmFsKG4udHJhbnNmb3JtQXN0QmxvY2tWYWx1ZShoLGQpKX1yLnRyYW5zZm9ybUJsb2NrTGl0ZXJhbD1jfX0pLHVuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi90cmFuc2Zvcm1zL2NvbW1lbnQuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPVZlKCk7ZnVuY3Rpb24gbihjLGgpe3JldHVybiBlLmNyZWF0ZUNvbW1lbnQoaC50cmFuc2Zvcm1SYW5nZShjLnJhbmdlKSxjLmNvbW1lbnQpfXIudHJhbnNmb3JtQ29tbWVudD1ufX0pLGZuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvZGlyZWN0aXZlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49U2UoKSxjPW1lKCk7ZnVuY3Rpb24gaChkLHksRSl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LGMuY3JlYXRlTm9kZShcImRpcmVjdGl2ZVwiLGQpKSxuLmNyZWF0ZUNvbW1lbnRBdHRhY2hhYmxlKCkpLHtuYW1lOnkscGFyYW1ldGVyczpFfSl9ci5jcmVhdGVEaXJlY3RpdmU9aH19KSxRZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdXRpbHMvZXh0cmFjdC1wcm9wLWNvbW1lbnRzLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1HZSgpLG49VmUoKTtmdW5jdGlvbiBjKGgsZCl7Zm9yKHZhciB5PTAsRT1oLnByb3BzO3k8RS5sZW5ndGg7eSsrKXt2YXIgST1FW3ldLFM9ZC50ZXh0W0kub3JpZ1N0YXJ0XTtzd2l0Y2goUyl7Y2FzZSBlLlByb3BMZWFkaW5nQ2hhcmFjdGVyLkNvbW1lbnQ6ZC5jb21tZW50cy5wdXNoKG4uY3JlYXRlQ29tbWVudChkLnRyYW5zZm9ybVJhbmdlKEkpLGQudGV4dC5zbGljZShJLm9yaWdTdGFydCsxLEkub3JpZ0VuZCkpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgbGVhZGluZyBjaGFyYWN0ZXIgXCIrSlNPTi5zdHJpbmdpZnkoUykpfX19ci5leHRyYWN0UHJvcENvbW1lbnRzPWN9fSksbW49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybXMvZGlyZWN0aXZlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1mbigpLG49UWUoKTtmdW5jdGlvbiBjKGgsZCl7cmV0dXJuIG4uZXh0cmFjdFByb3BDb21tZW50cyhoLGQpLGUuY3JlYXRlRGlyZWN0aXZlKGQudHJhbnNmb3JtUmFuZ2UoaC5yYW5nZSksaC5uYW1lLGgucGFyYW1ldGVycyl9ci50cmFuc2Zvcm1EaXJlY3RpdmU9Y319KSxkbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2RvY3VtZW50LmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49bWUoKSxjPUJlKCk7ZnVuY3Rpb24gaChkLHksRSxJKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sbi5jcmVhdGVOb2RlKFwiZG9jdW1lbnRcIixkKSksYy5jcmVhdGVUcmFpbGluZ0NvbW1lbnRBdHRhY2hhYmxlKEkpKSx7Y2hpbGRyZW46W3ksRV19KX1yLmNyZWF0ZURvY3VtZW50PWh9fSksTGU9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL2ZhY3Rvcmllcy9wb3NpdGlvbi5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7ZnVuY3Rpb24gZShjLGgpe3JldHVybntzdGFydDpjLGVuZDpofX1yLmNyZWF0ZVBvc2l0aW9uPWU7ZnVuY3Rpb24gbihjKXtyZXR1cm57c3RhcnQ6YyxlbmQ6Y319ci5jcmVhdGVFbXB0eVBvc2l0aW9uPW59fSksRWU9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL2ZhY3Rvcmllcy9lbmQtY29tbWVudC1hdHRhY2hhYmxlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKG4pe3JldHVybiBuPT09dm9pZCAwJiYobj1bXSkse2VuZENvbW1lbnRzOm59fXIuY3JlYXRlRW5kQ29tbWVudEF0dGFjaGFibGU9ZX19KSxobj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2RvY3VtZW50LWJvZHkuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1FZSgpLGM9bWUoKTtmdW5jdGlvbiBoKGQseSxFKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sYy5jcmVhdGVOb2RlKFwiZG9jdW1lbnRCb2R5XCIsZCkpLG4uY3JlYXRlRW5kQ29tbWVudEF0dGFjaGFibGUoRSkpLHtjaGlsZHJlbjp5P1t5XTpbXX0pfXIuY3JlYXRlRG9jdW1lbnRCb2R5PWh9fSksQWU9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3V0aWxzL2dldC1sYXN0LmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKG4pe3JldHVybiBuW24ubGVuZ3RoLTFdfXIuZ2V0TGFzdD1lfX0pLFhlPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi91dGlscy9nZXQtbWF0Y2gtaW5kZXguanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO2Z1bmN0aW9uIGUobixjKXt2YXIgaD1uLm1hdGNoKGMpO3JldHVybiBoP2guaW5kZXg6LTF9ci5nZXRNYXRjaEluZGV4PWV9fSksZ249Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybXMvZG9jdW1lbnQtYm9keS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPWhuKCksYz1BZSgpLGg9WGUoKSxkPVdlKCk7ZnVuY3Rpb24geShTLE0sVCl7dmFyIFAsQz1TLmNzdE5vZGUscT1FKEMsTSxUKSxSPXEuY29tbWVudHMsaj1xLmVuZENvbW1lbnRzLEs9cS5kb2N1bWVudFRyYWlsaW5nQ29tbWVudCxtPXEuZG9jdW1lbnRIZWFkVHJhaWxpbmdDb21tZW50LGE9TS50cmFuc2Zvcm1Ob2RlKFMuY29udGVudHMpLHQ9SShDLGEsTSkscz10LnBvc2l0aW9uLGk9dC5kb2N1bWVudEVuZFBvaW50O3JldHVybihQPU0uY29tbWVudHMpLnB1c2guYXBwbHkoUCxlLl9fc3ByZWFkQXJyYXlzKFIsaikpLHtkb2N1bWVudEJvZHk6bi5jcmVhdGVEb2N1bWVudEJvZHkocyxhLGopLGRvY3VtZW50RW5kUG9pbnQ6aSxkb2N1bWVudFRyYWlsaW5nQ29tbWVudDpLLGRvY3VtZW50SGVhZFRyYWlsaW5nQ29tbWVudDptfX1yLnRyYW5zZm9ybURvY3VtZW50Qm9keT15O2Z1bmN0aW9uIEUoUyxNLFQpe2Zvcih2YXIgUD1bXSxDPVtdLHE9W10sUj1bXSxqPSExLEs9Uy5jb250ZW50cy5sZW5ndGgtMTtLPj0wO0stLSl7dmFyIG09Uy5jb250ZW50c1tLXTtpZihtLnR5cGU9PT1cIkNPTU1FTlRcIil7dmFyIGE9TS50cmFuc2Zvcm1Ob2RlKG0pO1QmJlQubGluZT09PWEucG9zaXRpb24uc3RhcnQubGluZT9SLnVuc2hpZnQoYSk6aj9QLnVuc2hpZnQoYSk6YS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ+PVMudmFsdWVSYW5nZS5vcmlnRW5kP3EudW5zaGlmdChhKTpQLnVuc2hpZnQoYSl9ZWxzZSBqPSEwfWlmKHEubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBtdWx0aXBsZSBkb2N1bWVudCB0cmFpbGluZyBjb21tZW50cyBhdCBcIitkLmdldFBvaW50VGV4dChxWzFdLnBvc2l0aW9uLnN0YXJ0KSk7aWYoUi5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIG11bHRpcGxlIGRvY3VtZW50SGVhZCB0cmFpbGluZyBjb21tZW50cyBhdCBcIitkLmdldFBvaW50VGV4dChSWzFdLnBvc2l0aW9uLnN0YXJ0KSk7cmV0dXJue2NvbW1lbnRzOlAsZW5kQ29tbWVudHM6Qyxkb2N1bWVudFRyYWlsaW5nQ29tbWVudDpjLmdldExhc3QocSl8fG51bGwsZG9jdW1lbnRIZWFkVHJhaWxpbmdDb21tZW50OmMuZ2V0TGFzdChSKXx8bnVsbH19ZnVuY3Rpb24gSShTLE0sVCl7dmFyIFA9aC5nZXRNYXRjaEluZGV4KFQudGV4dC5zbGljZShTLnZhbHVlUmFuZ2Uub3JpZ0VuZCksL15cXC5cXC5cXC4vKSxDPVA9PT0tMT9TLnZhbHVlUmFuZ2Uub3JpZ0VuZDpNYXRoLm1heCgwLFMudmFsdWVSYW5nZS5vcmlnRW5kLTEpO1QudGV4dFtDLTFdPT09XCJcXHJcIiYmQy0tO3ZhciBxPVQudHJhbnNmb3JtUmFuZ2Uoe29yaWdTdGFydDpNIT09bnVsbD9NLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDpDLG9yaWdFbmQ6Q30pLFI9UD09PS0xP3EuZW5kOlQudHJhbnNmb3JtT2Zmc2V0KFMudmFsdWVSYW5nZS5vcmlnRW5kKzMpO3JldHVybntwb3NpdGlvbjpxLGRvY3VtZW50RW5kUG9pbnQ6Un19fX0pLHBuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvZG9jdW1lbnQtaGVhZC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPUVlKCksYz1tZSgpLGg9QmUoKTtmdW5jdGlvbiBkKHksRSxJLFMpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LGMuY3JlYXRlTm9kZShcImRvY3VtZW50SGVhZFwiLHkpKSxuLmNyZWF0ZUVuZENvbW1lbnRBdHRhY2hhYmxlKEkpKSxoLmNyZWF0ZVRyYWlsaW5nQ29tbWVudEF0dGFjaGFibGUoUykpLHtjaGlsZHJlbjpFfSl9ci5jcmVhdGVEb2N1bWVudEhlYWQ9ZH19KSxfbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9kb2N1bWVudC1oZWFkLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49cG4oKSxjPVhlKCk7ZnVuY3Rpb24gaChFLEkpe3ZhciBTLE09RS5jc3ROb2RlLFQ9ZChNLEkpLFA9VC5kaXJlY3RpdmVzLEM9VC5jb21tZW50cyxxPVQuZW5kQ29tbWVudHMsUj15KE0sUCxJKSxqPVIucG9zaXRpb24sSz1SLmVuZE1hcmtlclBvaW50OyhTPUkuY29tbWVudHMpLnB1c2guYXBwbHkoUyxlLl9fc3ByZWFkQXJyYXlzKEMscSkpO3ZhciBtPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZJLmNvbW1lbnRzLnB1c2goYSksbi5jcmVhdGVEb2N1bWVudEhlYWQoaixQLHEsYSl9O3JldHVybntjcmVhdGVEb2N1bWVudEhlYWRXaXRoVHJhaWxpbmdDb21tZW50Om0sZG9jdW1lbnRIZWFkRW5kTWFya2VyUG9pbnQ6S319ci50cmFuc2Zvcm1Eb2N1bWVudEhlYWQ9aDtmdW5jdGlvbiBkKEUsSSl7Zm9yKHZhciBTPVtdLE09W10sVD1bXSxQPSExLEM9RS5kaXJlY3RpdmVzLmxlbmd0aC0xO0M+PTA7Qy0tKXt2YXIgcT1JLnRyYW5zZm9ybU5vZGUoRS5kaXJlY3RpdmVzW0NdKTtxLnR5cGU9PT1cImNvbW1lbnRcIj9QP00udW5zaGlmdChxKTpULnVuc2hpZnQocSk6KFA9ITAsUy51bnNoaWZ0KHEpKX1yZXR1cm57ZGlyZWN0aXZlczpTLGNvbW1lbnRzOk0sZW5kQ29tbWVudHM6VH19ZnVuY3Rpb24geShFLEksUyl7dmFyIE09Yy5nZXRNYXRjaEluZGV4KFMudGV4dC5zbGljZSgwLEUudmFsdWVSYW5nZS5vcmlnU3RhcnQpLC8tLS1cXHMqJC8pO00+MCYmIS9bXFxyXFxuXS8udGVzdChTLnRleHRbTS0xXSkmJihNPS0xKTt2YXIgVD1NPT09LTE/e29yaWdTdGFydDpFLnZhbHVlUmFuZ2Uub3JpZ1N0YXJ0LG9yaWdFbmQ6RS52YWx1ZVJhbmdlLm9yaWdTdGFydH06e29yaWdTdGFydDpNLG9yaWdFbmQ6TSszfTtyZXR1cm4gSS5sZW5ndGghPT0wJiYoVC5vcmlnU3RhcnQ9SVswXS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpLHtwb3NpdGlvbjpTLnRyYW5zZm9ybVJhbmdlKFQpLGVuZE1hcmtlclBvaW50Ok09PT0tMT9udWxsOlMudHJhbnNmb3JtT2Zmc2V0KE0pfX19fSksdm49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybXMvZG9jdW1lbnQuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPWRuKCksbj1MZSgpLGM9Z24oKSxoPV9uKCk7ZnVuY3Rpb24gZCh5LEUpe3ZhciBJPWgudHJhbnNmb3JtRG9jdW1lbnRIZWFkKHksRSksUz1JLmNyZWF0ZURvY3VtZW50SGVhZFdpdGhUcmFpbGluZ0NvbW1lbnQsTT1JLmRvY3VtZW50SGVhZEVuZE1hcmtlclBvaW50LFQ9Yy50cmFuc2Zvcm1Eb2N1bWVudEJvZHkoeSxFLE0pLFA9VC5kb2N1bWVudEJvZHksQz1ULmRvY3VtZW50RW5kUG9pbnQscT1ULmRvY3VtZW50VHJhaWxpbmdDb21tZW50LFI9VC5kb2N1bWVudEhlYWRUcmFpbGluZ0NvbW1lbnQsaj1TKFIpO3JldHVybiBxJiZFLmNvbW1lbnRzLnB1c2gocSksZS5jcmVhdGVEb2N1bWVudChuLmNyZWF0ZVBvc2l0aW9uKGoucG9zaXRpb24uc3RhcnQsQyksaixQLHEpfXIudHJhbnNmb3JtRG9jdW1lbnQ9ZH19KSxldD1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2Zsb3ctY29sbGVjdGlvbi5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPVNlKCksYz1FZSgpLGg9bWUoKTtmdW5jdGlvbiBkKHksRSxJKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LGguY3JlYXRlTm9kZShcImZsb3dDb2xsZWN0aW9uXCIseSkpLG4uY3JlYXRlQ29tbWVudEF0dGFjaGFibGUoKSksYy5jcmVhdGVFbmRDb21tZW50QXR0YWNoYWJsZSgpKSxFKSx7Y2hpbGRyZW46SX0pfXIuY3JlYXRlRmxvd0NvbGxlY3Rpb249ZH19KSx5bj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2Zsb3ctbWFwcGluZy5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPWV0KCk7ZnVuY3Rpb24gYyhoLGQseSl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxuLmNyZWF0ZUZsb3dDb2xsZWN0aW9uKGgsZCx5KSkse3R5cGU6XCJmbG93TWFwcGluZ1wifSl9ci5jcmVhdGVGbG93TWFwcGluZz1jfX0pLHR0PUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvZmxvdy1tYXBwaW5nLWl0ZW0uanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1PZSgpLGM9bWUoKTtmdW5jdGlvbiBoKGQseSxFKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sYy5jcmVhdGVOb2RlKFwiZmxvd01hcHBpbmdJdGVtXCIsZCkpLG4uY3JlYXRlTGVhZGluZ0NvbW1lbnRBdHRhY2hhYmxlKCkpLHtjaGlsZHJlbjpbeSxFXX0pfXIuY3JlYXRlRmxvd01hcHBpbmdJdGVtPWh9fSksamU9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3V0aWxzL2V4dHJhY3QtY29tbWVudHMuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO2Z1bmN0aW9uIGUobixjKXtmb3IodmFyIGg9W10sZD0wLHk9bjtkPHkubGVuZ3RoO2QrKyl7dmFyIEU9eVtkXTtFJiZcInR5cGVcImluIEUmJkUudHlwZT09PVwiQ09NTUVOVFwiP2MuY29tbWVudHMucHVzaChjLnRyYW5zZm9ybU5vZGUoRSkpOmgucHVzaChFKX1yZXR1cm4gaH1yLmV4dHJhY3RDb21tZW50cz1lfX0pLG50PUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi91dGlscy9nZXQtZmxvdy1tYXAtaXRlbS1hZGRpdGlvbmFsLXJhbmdlcy5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7ZnVuY3Rpb24gZShuKXt2YXIgYz1bXCI/XCIsXCI6XCJdLm1hcChmdW5jdGlvbih5KXt2YXIgRT1uLmZpbmQoZnVuY3Rpb24oSSl7cmV0dXJuXCJjaGFyXCJpbiBJJiZJLmNoYXI9PT15fSk7cmV0dXJuIEU/e29yaWdTdGFydDpFLm9yaWdPZmZzZXQsb3JpZ0VuZDpFLm9yaWdPZmZzZXQrMX06bnVsbH0pLGg9Y1swXSxkPWNbMV07cmV0dXJue2FkZGl0aW9uYWxLZXlSYW5nZTpoLGFkZGl0aW9uYWxWYWx1ZVJhbmdlOmR9fXIuZ2V0Rmxvd01hcEl0ZW1BZGRpdGlvbmFsUmFuZ2VzPWV9fSkscnQ9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3V0aWxzL2NyZWF0ZS1zbGljZXIuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO2Z1bmN0aW9uIGUobixjKXt2YXIgaD1jO3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gbi5zbGljZShoLGg9ZCl9fXIuY3JlYXRlU2xpY2VyPWV9fSksc3Q9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3V0aWxzL2dyb3VwLWNzdC1mbG93LWNvbGxlY3Rpb24taXRlbXMuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPXJ0KCk7ZnVuY3Rpb24gbihjKXtmb3IodmFyIGg9W10sZD1lLmNyZWF0ZVNsaWNlcihjLDEpLHk9ITEsRT0xO0U8Yy5sZW5ndGgtMTtFKyspe3ZhciBJPWNbRV07aWYoXCJjaGFyXCJpbiBJJiZJLmNoYXI9PT1cIixcIil7aC5wdXNoKGQoRSkpLGQoRSsxKSx5PSExO2NvbnRpbnVlfXk9ITB9cmV0dXJuIHkmJmgucHVzaChkKGMubGVuZ3RoLTEpKSxofXIuZ3JvdXBDc3RGbG93Q29sbGVjdGlvbkl0ZW1zPW59fSksYm49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL2ZhY3Rvcmllcy9tYXBwaW5nLWtleS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKSxuPUVlKCksYz1tZSgpLGg9QmUoKTtmdW5jdGlvbiBkKHksRSl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sYy5jcmVhdGVOb2RlKFwibWFwcGluZ0tleVwiLHkpKSxoLmNyZWF0ZVRyYWlsaW5nQ29tbWVudEF0dGFjaGFibGUoKSksbi5jcmVhdGVFbmRDb21tZW50QXR0YWNoYWJsZSgpKSx7Y2hpbGRyZW46RT9bRV06W119KX1yLmNyZWF0ZU1hcHBpbmdLZXk9ZH19KSx3bj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL21hcHBpbmctdmFsdWUuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1TZSgpLGM9RWUoKSxoPW1lKCk7ZnVuY3Rpb24gZCh5LEUpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LGguY3JlYXRlTm9kZShcIm1hcHBpbmdWYWx1ZVwiLHkpKSxuLmNyZWF0ZUNvbW1lbnRBdHRhY2hhYmxlKCkpLGMuY3JlYXRlRW5kQ29tbWVudEF0dGFjaGFibGUoKSkse2NoaWxkcmVuOkU/W0VdOltdfSl9ci5jcmVhdGVNYXBwaW5nVmFsdWU9ZH19KSxVZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9wYWlyLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1ibigpLG49d24oKSxjPUxlKCk7ZnVuY3Rpb24gaChkLHksRSxJLFMpe3ZhciBNPXkudHJhbnNmb3JtTm9kZShkLmtleSksVD15LnRyYW5zZm9ybU5vZGUoZC52YWx1ZSksUD1NfHxJP2UuY3JlYXRlTWFwcGluZ0tleSh5LnRyYW5zZm9ybVJhbmdlKHtvcmlnU3RhcnQ6ST9JLm9yaWdTdGFydDpNLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCxvcmlnRW5kOk0/TS5wb3NpdGlvbi5lbmQub2Zmc2V0Okkub3JpZ1N0YXJ0KzF9KSxNKTpudWxsLEM9VHx8Uz9uLmNyZWF0ZU1hcHBpbmdWYWx1ZSh5LnRyYW5zZm9ybVJhbmdlKHtvcmlnU3RhcnQ6Uz9TLm9yaWdTdGFydDpULnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCxvcmlnRW5kOlQ/VC5wb3NpdGlvbi5lbmQub2Zmc2V0OlMub3JpZ1N0YXJ0KzF9KSxUKTpudWxsO3JldHVybiBFKGMuY3JlYXRlUG9zaXRpb24oUD9QLnBvc2l0aW9uLnN0YXJ0OkMucG9zaXRpb24uc3RhcnQsQz9DLnBvc2l0aW9uLmVuZDpQLnBvc2l0aW9uLmVuZCksUHx8ZS5jcmVhdGVNYXBwaW5nS2V5KGMuY3JlYXRlRW1wdHlQb3NpdGlvbihDLnBvc2l0aW9uLnN0YXJ0KSxudWxsKSxDfHxuLmNyZWF0ZU1hcHBpbmdWYWx1ZShjLmNyZWF0ZUVtcHR5UG9zaXRpb24oUC5wb3NpdGlvbi5lbmQpLG51bGwpKX1yLnRyYW5zZm9ybUFzdFBhaXI9aH19KSxTbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9mbG93LW1hcC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9eW4oKSxuPXR0KCksYz1qZSgpLGg9bnQoKSxkPUFlKCkseT1zdCgpLEU9VWUoKTtmdW5jdGlvbiBJKFMsTSl7dmFyIFQ9Yy5leHRyYWN0Q29tbWVudHMoUy5jc3ROb2RlLml0ZW1zLE0pLFA9eS5ncm91cENzdEZsb3dDb2xsZWN0aW9uSXRlbXMoVCksQz1TLml0ZW1zLm1hcChmdW5jdGlvbihqLEspe3ZhciBtPVBbS10sYT1oLmdldEZsb3dNYXBJdGVtQWRkaXRpb25hbFJhbmdlcyhtKSx0PWEuYWRkaXRpb25hbEtleVJhbmdlLHM9YS5hZGRpdGlvbmFsVmFsdWVSYW5nZTtyZXR1cm4gRS50cmFuc2Zvcm1Bc3RQYWlyKGosTSxuLmNyZWF0ZUZsb3dNYXBwaW5nSXRlbSx0LHMpfSkscT1UWzBdLFI9ZC5nZXRMYXN0KFQpO3JldHVybiBlLmNyZWF0ZUZsb3dNYXBwaW5nKE0udHJhbnNmb3JtUmFuZ2Uoe29yaWdTdGFydDpxLm9yaWdPZmZzZXQsb3JpZ0VuZDpSLm9yaWdPZmZzZXQrMX0pLE0udHJhbnNmb3JtQ29udGVudChTKSxDKX1yLnRyYW5zZm9ybUZsb3dNYXA9SX19KSxFbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2Zsb3ctc2VxdWVuY2UuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1ldCgpO2Z1bmN0aW9uIGMoaCxkLHkpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sbi5jcmVhdGVGbG93Q29sbGVjdGlvbihoLGQseSkpLHt0eXBlOlwiZmxvd1NlcXVlbmNlXCJ9KX1yLmNyZWF0ZUZsb3dTZXF1ZW5jZT1jfX0pLE1uPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvZmxvdy1zZXF1ZW5jZS1pdGVtLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49bWUoKTtmdW5jdGlvbiBjKGgsZCl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxuLmNyZWF0ZU5vZGUoXCJmbG93U2VxdWVuY2VJdGVtXCIsaCkpLHtjaGlsZHJlbjpbZF19KX1yLmNyZWF0ZUZsb3dTZXF1ZW5jZUl0ZW09Y319KSxPbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9mbG93LXNlcS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9dHQoKSxuPUVuKCksYz1NbigpLGg9TGUoKSxkPWplKCkseT1udCgpLEU9QWUoKSxJPXN0KCksUz1VZSgpO2Z1bmN0aW9uIE0oVCxQKXt2YXIgQz1kLmV4dHJhY3RDb21tZW50cyhULmNzdE5vZGUuaXRlbXMsUCkscT1JLmdyb3VwQ3N0Rmxvd0NvbGxlY3Rpb25JdGVtcyhDKSxSPVQuaXRlbXMubWFwKGZ1bmN0aW9uKG0sYSl7aWYobS50eXBlIT09XCJQQUlSXCIpe3ZhciB0PVAudHJhbnNmb3JtTm9kZShtKTtyZXR1cm4gYy5jcmVhdGVGbG93U2VxdWVuY2VJdGVtKGguY3JlYXRlUG9zaXRpb24odC5wb3NpdGlvbi5zdGFydCx0LnBvc2l0aW9uLmVuZCksdCl9ZWxzZXt2YXIgcz1xW2FdLGk9eS5nZXRGbG93TWFwSXRlbUFkZGl0aW9uYWxSYW5nZXMocyksZj1pLmFkZGl0aW9uYWxLZXlSYW5nZSxnPWkuYWRkaXRpb25hbFZhbHVlUmFuZ2U7cmV0dXJuIFMudHJhbnNmb3JtQXN0UGFpcihtLFAsZS5jcmVhdGVGbG93TWFwcGluZ0l0ZW0sZixnKX19KSxqPUNbMF0sSz1FLmdldExhc3QoQyk7cmV0dXJuIG4uY3JlYXRlRmxvd1NlcXVlbmNlKFAudHJhbnNmb3JtUmFuZ2Uoe29yaWdTdGFydDpqLm9yaWdPZmZzZXQsb3JpZ0VuZDpLLm9yaWdPZmZzZXQrMX0pLFAudHJhbnNmb3JtQ29udGVudChUKSxSKX1yLnRyYW5zZm9ybUZsb3dTZXE9TX19KSxMbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL21hcHBpbmcuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1PZSgpLGM9bWUoKTtmdW5jdGlvbiBoKGQseSxFKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxjLmNyZWF0ZU5vZGUoXCJtYXBwaW5nXCIsZCkpLG4uY3JlYXRlTGVhZGluZ0NvbW1lbnRBdHRhY2hhYmxlKCkpLHkpLHtjaGlsZHJlbjpFfSl9ci5jcmVhdGVNYXBwaW5nPWh9fSksQW49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL2ZhY3Rvcmllcy9tYXBwaW5nLWl0ZW0uanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1PZSgpLGM9bWUoKTtmdW5jdGlvbiBoKGQseSxFKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sYy5jcmVhdGVOb2RlKFwibWFwcGluZ0l0ZW1cIixkKSksbi5jcmVhdGVMZWFkaW5nQ29tbWVudEF0dGFjaGFibGUoKSkse2NoaWxkcmVuOlt5LEVdfSl9ci5jcmVhdGVNYXBwaW5nSXRlbT1ofX0pLE5uPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi90cmFuc2Zvcm1zL21hcC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9TG4oKSxuPUFuKCksYz1MZSgpLGg9cnQoKSxkPWplKCkseT1RZSgpLEU9QWUoKSxJPVVlKCk7ZnVuY3Rpb24gUyhULFApe3ZhciBDPVQuY3N0Tm9kZTtDLml0ZW1zLmZpbHRlcihmdW5jdGlvbihLKXtyZXR1cm4gSy50eXBlPT09XCJNQVBfS0VZXCJ8fEsudHlwZT09PVwiTUFQX1ZBTFVFXCJ9KS5mb3JFYWNoKGZ1bmN0aW9uKEspe3JldHVybiB5LmV4dHJhY3RQcm9wQ29tbWVudHMoSyxQKX0pO3ZhciBxPWQuZXh0cmFjdENvbW1lbnRzKEMuaXRlbXMsUCksUj1NKHEpLGo9VC5pdGVtcy5tYXAoZnVuY3Rpb24oSyxtKXt2YXIgYT1SW21dLHQ9YVswXS50eXBlPT09XCJNQVBfVkFMVUVcIj9bbnVsbCxhWzBdLnJhbmdlXTpbYVswXS5yYW5nZSxhLmxlbmd0aD09PTE/bnVsbDphWzFdLnJhbmdlXSxzPXRbMF0saT10WzFdO3JldHVybiBJLnRyYW5zZm9ybUFzdFBhaXIoSyxQLG4uY3JlYXRlTWFwcGluZ0l0ZW0scyxpKX0pO3JldHVybiBlLmNyZWF0ZU1hcHBpbmcoYy5jcmVhdGVQb3NpdGlvbihqWzBdLnBvc2l0aW9uLnN0YXJ0LEUuZ2V0TGFzdChqKS5wb3NpdGlvbi5lbmQpLFAudHJhbnNmb3JtQ29udGVudChUKSxqKX1yLnRyYW5zZm9ybU1hcD1TO2Z1bmN0aW9uIE0oVCl7Zm9yKHZhciBQPVtdLEM9aC5jcmVhdGVTbGljZXIoVCwwKSxxPSExLFI9MDtSPFQubGVuZ3RoO1IrKyl7dmFyIGo9VFtSXTtpZihqLnR5cGU9PT1cIk1BUF9WQUxVRVwiKXtQLnB1c2goQyhSKzEpKSxxPSExO2NvbnRpbnVlfXEmJlAucHVzaChDKFIpKSxxPSEwfXJldHVybiBxJiZQLnB1c2goQygxLzApKSxQfX19KSxUbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL3BsYWluLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49U2UoKSxjPW1lKCk7ZnVuY3Rpb24gaChkLHksRSl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sYy5jcmVhdGVOb2RlKFwicGxhaW5cIixkKSksbi5jcmVhdGVDb21tZW50QXR0YWNoYWJsZSgpKSx5KSx7dmFsdWU6RX0pfXIuY3JlYXRlUGxhaW49aH19KSxDbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdXRpbHMvZmluZC1sYXN0LWNoYXItaW5kZXguanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO2Z1bmN0aW9uIGUobixjLGgpe2Zvcih2YXIgZD1jO2Q+PTA7ZC0tKWlmKGgudGVzdChuW2RdKSlyZXR1cm4gZDtyZXR1cm4tMX1yLmZpbmRMYXN0Q2hhckluZGV4PWV9fSksa249Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybXMvcGxhaW4uanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPVRuKCksbj1DbigpO2Z1bmN0aW9uIGMoaCxkKXt2YXIgeT1oLmNzdE5vZGU7cmV0dXJuIGUuY3JlYXRlUGxhaW4oZC50cmFuc2Zvcm1SYW5nZSh7b3JpZ1N0YXJ0OnkudmFsdWVSYW5nZS5vcmlnU3RhcnQsb3JpZ0VuZDpuLmZpbmRMYXN0Q2hhckluZGV4KGQudGV4dCx5LnZhbHVlUmFuZ2Uub3JpZ0VuZC0xLC9cXFMvKSsxfSksZC50cmFuc2Zvcm1Db250ZW50KGgpLHkuc3RyVmFsdWUpfXIudHJhbnNmb3JtUGxhaW49Y319KSxQbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL3F1b3RlLWRvdWJsZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKTtmdW5jdGlvbiBuKGMpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oe30sYykse3R5cGU6XCJxdW90ZURvdWJsZVwifSl9ci5jcmVhdGVRdW90ZURvdWJsZT1ufX0pLEluPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvcXVvdGUtdmFsdWUuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1TZSgpLGM9bWUoKTtmdW5jdGlvbiBoKGQseSxFKXtyZXR1cm4gZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxjLmNyZWF0ZU5vZGUoXCJxdW90ZVZhbHVlXCIsZCkpLHkpLG4uY3JlYXRlQ29tbWVudEF0dGFjaGFibGUoKSkse3ZhbHVlOkV9KX1yLmNyZWF0ZVF1b3RlVmFsdWU9aH19KSxhdD1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9xdW90ZS12YWx1ZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9SW4oKTtmdW5jdGlvbiBuKGMsaCl7dmFyIGQ9Yy5jc3ROb2RlO3JldHVybiBlLmNyZWF0ZVF1b3RlVmFsdWUoaC50cmFuc2Zvcm1SYW5nZShkLnZhbHVlUmFuZ2UpLGgudHJhbnNmb3JtQ29udGVudChjKSxkLnN0clZhbHVlKX1yLnRyYW5zZm9ybUFzdFF1b3RlVmFsdWU9bn19KSxSbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9xdW90ZS1kb3VibGUuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPVBuKCksbj1hdCgpO2Z1bmN0aW9uIGMoaCxkKXtyZXR1cm4gZS5jcmVhdGVRdW90ZURvdWJsZShuLnRyYW5zZm9ybUFzdFF1b3RlVmFsdWUoaCxkKSl9ci50cmFuc2Zvcm1RdW90ZURvdWJsZT1jfX0pLHFuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9mYWN0b3JpZXMvcXVvdGUtc2luZ2xlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpO2Z1bmN0aW9uIG4oYyl7cmV0dXJuIGUuX19hc3NpZ24oZS5fX2Fzc2lnbih7fSxjKSx7dHlwZTpcInF1b3RlU2luZ2xlXCJ9KX1yLmNyZWF0ZVF1b3RlU2luZ2xlPW59fSksQm49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybXMvcXVvdGUtc2luZ2xlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1xbigpLG49YXQoKTtmdW5jdGlvbiBjKGgsZCl7cmV0dXJuIGUuY3JlYXRlUXVvdGVTaW5nbGUobi50cmFuc2Zvcm1Bc3RRdW90ZVZhbHVlKGgsZCkpfXIudHJhbnNmb3JtUXVvdGVTaW5nbGU9Y319KSxqbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL3NlcXVlbmNlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT0oYWUoKSxzZSh0ZSkpLG49RWUoKSxjPU9lKCksaD1tZSgpO2Z1bmN0aW9uIGQoeSxFLEkpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKGUuX19hc3NpZ24oe30saC5jcmVhdGVOb2RlKFwic2VxdWVuY2VcIix5KSksYy5jcmVhdGVMZWFkaW5nQ29tbWVudEF0dGFjaGFibGUoKSksbi5jcmVhdGVFbmRDb21tZW50QXR0YWNoYWJsZSgpKSxFKSx7Y2hpbGRyZW46SX0pfXIuY3JlYXRlU2VxdWVuY2U9ZH19KSxZbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL3NlcXVlbmNlLWl0ZW0uanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPShhZSgpLHNlKHRlKSksbj1TZSgpLGM9RWUoKSxoPW1lKCk7ZnVuY3Rpb24gZCh5LEUpe3JldHVybiBlLl9fYXNzaWduKGUuX19hc3NpZ24oZS5fX2Fzc2lnbihlLl9fYXNzaWduKHt9LGguY3JlYXRlTm9kZShcInNlcXVlbmNlSXRlbVwiLHkpKSxuLmNyZWF0ZUNvbW1lbnRBdHRhY2hhYmxlKCkpLGMuY3JlYXRlRW5kQ29tbWVudEF0dGFjaGFibGUoKSkse2NoaWxkcmVuOkU/W0VdOltdfSl9ci5jcmVhdGVTZXF1ZW5jZUl0ZW09ZH19KSxEbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdHJhbnNmb3Jtcy9zZXEuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPUxlKCksbj1qbigpLGM9WW4oKSxoPWplKCksZD1RZSgpLHk9QWUoKTtmdW5jdGlvbiBFKEksUyl7dmFyIE09aC5leHRyYWN0Q29tbWVudHMoSS5jc3ROb2RlLml0ZW1zLFMpLFQ9TS5tYXAoZnVuY3Rpb24oUCxDKXtkLmV4dHJhY3RQcm9wQ29tbWVudHMoUCxTKTt2YXIgcT1TLnRyYW5zZm9ybU5vZGUoSS5pdGVtc1tDXSk7cmV0dXJuIGMuY3JlYXRlU2VxdWVuY2VJdGVtKGUuY3JlYXRlUG9zaXRpb24oUy50cmFuc2Zvcm1PZmZzZXQoUC52YWx1ZVJhbmdlLm9yaWdTdGFydCkscT09PW51bGw/Uy50cmFuc2Zvcm1PZmZzZXQoUC52YWx1ZVJhbmdlLm9yaWdTdGFydCsxKTpxLnBvc2l0aW9uLmVuZCkscSl9KTtyZXR1cm4gbi5jcmVhdGVTZXF1ZW5jZShlLmNyZWF0ZVBvc2l0aW9uKFRbMF0ucG9zaXRpb24uc3RhcnQseS5nZXRMYXN0KFQpLnBvc2l0aW9uLmVuZCksUy50cmFuc2Zvcm1Db250ZW50KEkpLFQpfXIudHJhbnNmb3JtU2VxPUV9fSksRm49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9ZW4oKSxuPW9uKCksYz1jbigpLGg9dW4oKSxkPW1uKCkseT12bigpLEU9U24oKSxJPU9uKCksUz1ObigpLE09a24oKSxUPVJuKCksUD1CbigpLEM9RG4oKTtmdW5jdGlvbiBxKFIsail7aWYoUj09PW51bGx8fFIudHlwZT09PXZvaWQgMCYmUi52YWx1ZT09PW51bGwpcmV0dXJuIG51bGw7c3dpdGNoKFIudHlwZSl7Y2FzZVwiQUxJQVNcIjpyZXR1cm4gZS50cmFuc2Zvcm1BbGlhcyhSLGopO2Nhc2VcIkJMT0NLX0ZPTERFRFwiOnJldHVybiBuLnRyYW5zZm9ybUJsb2NrRm9sZGVkKFIsaik7Y2FzZVwiQkxPQ0tfTElURVJBTFwiOnJldHVybiBjLnRyYW5zZm9ybUJsb2NrTGl0ZXJhbChSLGopO2Nhc2VcIkNPTU1FTlRcIjpyZXR1cm4gaC50cmFuc2Zvcm1Db21tZW50KFIsaik7Y2FzZVwiRElSRUNUSVZFXCI6cmV0dXJuIGQudHJhbnNmb3JtRGlyZWN0aXZlKFIsaik7Y2FzZVwiRE9DVU1FTlRcIjpyZXR1cm4geS50cmFuc2Zvcm1Eb2N1bWVudChSLGopO2Nhc2VcIkZMT1dfTUFQXCI6cmV0dXJuIEUudHJhbnNmb3JtRmxvd01hcChSLGopO2Nhc2VcIkZMT1dfU0VRXCI6cmV0dXJuIEkudHJhbnNmb3JtRmxvd1NlcShSLGopO2Nhc2VcIk1BUFwiOnJldHVybiBTLnRyYW5zZm9ybU1hcChSLGopO2Nhc2VcIlBMQUlOXCI6cmV0dXJuIE0udHJhbnNmb3JtUGxhaW4oUixqKTtjYXNlXCJRVU9URV9ET1VCTEVcIjpyZXR1cm4gVC50cmFuc2Zvcm1RdW90ZURvdWJsZShSLGopO2Nhc2VcIlFVT1RFX1NJTkdMRVwiOnJldHVybiBQLnRyYW5zZm9ybVF1b3RlU2luZ2xlKFIsaik7Y2FzZVwiU0VRXCI6cmV0dXJuIEMudHJhbnNmb3JtU2VxKFIsaik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIG5vZGUgdHlwZSBcIitSLnR5cGUpfX1yLnRyYW5zZm9ybU5vZGU9cX19KSxXbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL2Vycm9yLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKG4sYyxoKXt2YXIgZD1uZXcgU3ludGF4RXJyb3Iobik7cmV0dXJuIGQubmFtZT1cIllBTUxTeW50YXhFcnJvclwiLGQuc291cmNlPWMsZC5wb3NpdGlvbj1oLGR9ci5jcmVhdGVFcnJvcj1lfX0pLFZuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi90cmFuc2Zvcm1zL2Vycm9yLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1XbigpO2Z1bmN0aW9uIG4oYyxoKXt2YXIgZD1jLnNvdXJjZS5yYW5nZXx8Yy5zb3VyY2UudmFsdWVSYW5nZTtyZXR1cm4gZS5jcmVhdGVFcnJvcihjLm1lc3NhZ2UsaC50ZXh0LGgudHJhbnNmb3JtUmFuZ2UoZCkpfXIudHJhbnNmb3JtRXJyb3I9bn19KSxRbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvZmFjdG9yaWVzL3BvaW50LmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKG4sYyxoKXtyZXR1cm57b2Zmc2V0Om4sbGluZTpjLGNvbHVtbjpofX1yLmNyZWF0ZVBvaW50PWV9fSksVW49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3RyYW5zZm9ybXMvb2Zmc2V0LmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1RbigpO2Z1bmN0aW9uIG4oYyxoKXtjPDA/Yz0wOmM+aC50ZXh0Lmxlbmd0aCYmKGM9aC50ZXh0Lmxlbmd0aCk7dmFyIGQ9aC5sb2NhdG9yLmxvY2F0aW9uRm9ySW5kZXgoYyk7cmV0dXJuIGUuY3JlYXRlUG9pbnQoYyxkLmxpbmUrMSxkLmNvbHVtbisxKX1yLnRyYW5zZm9ybU9mZnNldD1ufX0pLEtuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi90cmFuc2Zvcm1zL3JhbmdlLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDt2YXIgZT1MZSgpO2Z1bmN0aW9uIG4oYyxoKXtyZXR1cm4gZS5jcmVhdGVQb3NpdGlvbihoLnRyYW5zZm9ybU9mZnNldChjLm9yaWdTdGFydCksaC50cmFuc2Zvcm1PZmZzZXQoYy5vcmlnRW5kKSl9ci50cmFuc2Zvcm1SYW5nZT1ufX0pLCRuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi91dGlscy9hZGQtb3JpZy1yYW5nZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9ITA7ZnVuY3Rpb24gbih5KXtpZigheS5zZXRPcmlnUmFuZ2VzKCkpe3ZhciBFPWZ1bmN0aW9uKEkpe2lmKGgoSSkpcmV0dXJuIEkub3JpZ1N0YXJ0PUkuc3RhcnQsSS5vcmlnRW5kPUkuZW5kLGU7aWYoZChJKSlyZXR1cm4gSS5vcmlnT2Zmc2V0PUkub2Zmc2V0LGV9O3kuZm9yRWFjaChmdW5jdGlvbihJKXtyZXR1cm4gYyhJLEUpfSl9fXIuYWRkT3JpZ1JhbmdlPW47ZnVuY3Rpb24gYyh5LEUpe2lmKCEoIXl8fHR5cGVvZiB5IT1cIm9iamVjdFwiKSYmRSh5KSE9PWUpZm9yKHZhciBJPTAsUz1PYmplY3Qua2V5cyh5KTtJPFMubGVuZ3RoO0krKyl7dmFyIE09U1tJXTtpZighKE09PT1cImNvbnRleHRcInx8TT09PVwiZXJyb3JcIikpe3ZhciBUPXlbTV07QXJyYXkuaXNBcnJheShUKT9ULmZvckVhY2goZnVuY3Rpb24oUCl7cmV0dXJuIGMoUCxFKX0pOmMoVCxFKX19fWZ1bmN0aW9uIGgoeSl7cmV0dXJuIHR5cGVvZiB5LnN0YXJ0PT1cIm51bWJlclwifWZ1bmN0aW9uIGQoeSl7cmV0dXJuIHR5cGVvZiB5Lm9mZnNldD09XCJudW1iZXJcIn19fSksSm49Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3V0aWxzL3JlbW92ZS1mYWtlLW5vZGVzLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpLHIuX19lc01vZHVsZT0hMDtmdW5jdGlvbiBlKG4pe2lmKFwiY2hpbGRyZW5cImluIG4pe2lmKG4uY2hpbGRyZW4ubGVuZ3RoPT09MSl7dmFyIGM9bi5jaGlsZHJlblswXTtpZihjLnR5cGU9PT1cInBsYWluXCImJmMudGFnPT09bnVsbCYmYy5hbmNob3I9PT1udWxsJiZjLnZhbHVlPT09XCJcIilyZXR1cm4gbi5jaGlsZHJlbi5zcGxpY2UoMCwxKSxufW4uY2hpbGRyZW4uZm9yRWFjaChlKX1yZXR1cm4gbn1yLnJlbW92ZUZha2VOb2Rlcz1lfX0pLHhuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi91dGlscy9jcmVhdGUtdXBkYXRlci5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7ZnVuY3Rpb24gZShuLGMsaCxkKXt2YXIgeT1jKG4pO3JldHVybiBmdW5jdGlvbihFKXtkKHksRSkmJmgobix5PUUpfX1yLmNyZWF0ZVVwZGF0ZXI9ZX19KSxIbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sLXVuaXN0LXBhcnNlci9saWIvdXRpbHMvdXBkYXRlLXBvc2l0aW9ucy5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9eG4oKSxuPUFlKCk7ZnVuY3Rpb24gYyhNKXtpZighKE09PT1udWxsfHwhKFwiY2hpbGRyZW5cImluIE0pKSl7dmFyIFQ9TS5jaGlsZHJlbjtpZihULmZvckVhY2goYyksTS50eXBlPT09XCJkb2N1bWVudFwiKXt2YXIgUD1NLmNoaWxkcmVuLEM9UFswXSxxPVBbMV07Qy5wb3NpdGlvbi5zdGFydC5vZmZzZXQ9PT1DLnBvc2l0aW9uLmVuZC5vZmZzZXQ/Qy5wb3NpdGlvbi5zdGFydD1DLnBvc2l0aW9uLmVuZD1xLnBvc2l0aW9uLnN0YXJ0OnEucG9zaXRpb24uc3RhcnQub2Zmc2V0PT09cS5wb3NpdGlvbi5lbmQub2Zmc2V0JiYocS5wb3NpdGlvbi5zdGFydD1xLnBvc2l0aW9uLmVuZD1DLnBvc2l0aW9uLmVuZCl9dmFyIFI9ZS5jcmVhdGVVcGRhdGVyKE0ucG9zaXRpb24saCxkLEkpLGo9ZS5jcmVhdGVVcGRhdGVyKE0ucG9zaXRpb24seSxFLFMpO1wiZW5kQ29tbWVudHNcImluIE0mJk0uZW5kQ29tbWVudHMubGVuZ3RoIT09MCYmKFIoTS5lbmRDb21tZW50c1swXS5wb3NpdGlvbi5zdGFydCksaihuLmdldExhc3QoTS5lbmRDb21tZW50cykucG9zaXRpb24uZW5kKSk7dmFyIEs9VC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1udWxsfSk7aWYoSy5sZW5ndGghPT0wKXt2YXIgbT1LWzBdLGE9bi5nZXRMYXN0KEspO1IobS5wb3NpdGlvbi5zdGFydCksaihhLnBvc2l0aW9uLmVuZCksXCJsZWFkaW5nQ29tbWVudHNcImluIG0mJm0ubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCE9PTAmJlIobS5sZWFkaW5nQ29tbWVudHNbMF0ucG9zaXRpb24uc3RhcnQpLFwidGFnXCJpbiBtJiZtLnRhZyYmUihtLnRhZy5wb3NpdGlvbi5zdGFydCksXCJhbmNob3JcImluIG0mJm0uYW5jaG9yJiZSKG0uYW5jaG9yLnBvc2l0aW9uLnN0YXJ0KSxcInRyYWlsaW5nQ29tbWVudFwiaW4gYSYmYS50cmFpbGluZ0NvbW1lbnQmJmooYS50cmFpbGluZ0NvbW1lbnQucG9zaXRpb24uZW5kKX19fXIudXBkYXRlUG9zaXRpb25zPWM7ZnVuY3Rpb24gaChNKXtyZXR1cm4gTS5zdGFydH1mdW5jdGlvbiBkKE0sVCl7TS5zdGFydD1UfWZ1bmN0aW9uIHkoTSl7cmV0dXJuIE0uZW5kfWZ1bmN0aW9uIEUoTSxUKXtNLmVuZD1UfWZ1bmN0aW9uIEkoTSxUKXtyZXR1cm4gVC5vZmZzZXQ8TS5vZmZzZXR9ZnVuY3Rpb24gUyhNLFQpe3JldHVybiBULm9mZnNldD5NLm9mZnNldH19fSksTWU9Rih7XCJub2RlX21vZHVsZXMveWFtbC9kaXN0L1BsYWluVmFsdWUtZWM4ZTU4OGUuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCk7dmFyIGU9e0FOQ0hPUjpcIiZcIixDT01NRU5UOlwiI1wiLFRBRzpcIiFcIixESVJFQ1RJVkVTX0VORDpcIi1cIixET0NVTUVOVF9FTkQ6XCIuXCJ9LG49e0FMSUFTOlwiQUxJQVNcIixCTEFOS19MSU5FOlwiQkxBTktfTElORVwiLEJMT0NLX0ZPTERFRDpcIkJMT0NLX0ZPTERFRFwiLEJMT0NLX0xJVEVSQUw6XCJCTE9DS19MSVRFUkFMXCIsQ09NTUVOVDpcIkNPTU1FTlRcIixESVJFQ1RJVkU6XCJESVJFQ1RJVkVcIixET0NVTUVOVDpcIkRPQ1VNRU5UXCIsRkxPV19NQVA6XCJGTE9XX01BUFwiLEZMT1dfU0VROlwiRkxPV19TRVFcIixNQVA6XCJNQVBcIixNQVBfS0VZOlwiTUFQX0tFWVwiLE1BUF9WQUxVRTpcIk1BUF9WQUxVRVwiLFBMQUlOOlwiUExBSU5cIixRVU9URV9ET1VCTEU6XCJRVU9URV9ET1VCTEVcIixRVU9URV9TSU5HTEU6XCJRVU9URV9TSU5HTEVcIixTRVE6XCJTRVFcIixTRVFfSVRFTTpcIlNFUV9JVEVNXCJ9LGM9XCJ0YWc6eWFtbC5vcmcsMjAwMjpcIixoPXtNQVA6XCJ0YWc6eWFtbC5vcmcsMjAwMjptYXBcIixTRVE6XCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXFcIixTVFI6XCJ0YWc6eWFtbC5vcmcsMjAwMjpzdHJcIn07ZnVuY3Rpb24gZChhKXtsZXQgdD1bMF0scz1hLmluZGV4T2YoYFxuYCk7Zm9yKDtzIT09LTE7KXMrPTEsdC5wdXNoKHMpLHM9YS5pbmRleE9mKGBcbmAscyk7cmV0dXJuIHR9ZnVuY3Rpb24geShhKXtsZXQgdCxzO3JldHVybiB0eXBlb2YgYT09XCJzdHJpbmdcIj8odD1kKGEpLHM9YSk6KEFycmF5LmlzQXJyYXkoYSkmJihhPWFbMF0pLGEmJmEuY29udGV4dCYmKGEubGluZVN0YXJ0c3x8KGEubGluZVN0YXJ0cz1kKGEuY29udGV4dC5zcmMpKSx0PWEubGluZVN0YXJ0cyxzPWEuY29udGV4dC5zcmMpKSx7bGluZVN0YXJ0czp0LHNyYzpzfX1mdW5jdGlvbiBFKGEsdCl7aWYodHlwZW9mIGEhPVwibnVtYmVyXCJ8fGE8MClyZXR1cm4gbnVsbDtsZXR7bGluZVN0YXJ0czpzLHNyYzppfT15KHQpO2lmKCFzfHwhaXx8YT5pLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IGc9MDtnPHMubGVuZ3RoOysrZyl7bGV0IHU9c1tnXTtpZihhPHUpcmV0dXJue2xpbmU6Zyxjb2w6YS1zW2ctMV0rMX07aWYoYT09PXUpcmV0dXJue2xpbmU6ZysxLGNvbDoxfX1sZXQgZj1zLmxlbmd0aDtyZXR1cm57bGluZTpmLGNvbDphLXNbZi0xXSsxfX1mdW5jdGlvbiBJKGEsdCl7bGV0e2xpbmVTdGFydHM6cyxzcmM6aX09eSh0KTtpZighc3x8IShhPj0xKXx8YT5zLmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgZj1zW2EtMV0sZz1zW2FdO2Zvcig7ZyYmZz5mJiZpW2ctMV09PT1gXG5gOyktLWc7cmV0dXJuIGkuc2xpY2UoZixnKX1mdW5jdGlvbiBTKGEsdCl7bGV0e3N0YXJ0OnMsZW5kOml9PWEsZj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ODAsZz1JKHMubGluZSx0KTtpZighZylyZXR1cm4gbnVsbDtsZXR7Y29sOnV9PXM7aWYoZy5sZW5ndGg+ZilpZih1PD1mLTEwKWc9Zy5zdWJzdHIoMCxmLTEpK1wiXFx1MjAyNlwiO2Vsc2V7bGV0ICQ9TWF0aC5yb3VuZChmLzIpO2cubGVuZ3RoPnUrJCYmKGc9Zy5zdWJzdHIoMCx1KyQtMSkrXCJcXHUyMDI2XCIpLHUtPWcubGVuZ3RoLWYsZz1cIlxcdTIwMjZcIitnLnN1YnN0cigxLWYpfWxldCBwPTEsTD1cIlwiO2kmJihpLmxpbmU9PT1zLmxpbmUmJnUrKGkuY29sLXMuY29sKTw9ZisxP3A9aS5jb2wtcy5jb2w6KHA9TWF0aC5taW4oZy5sZW5ndGgrMSxmKS11LEw9XCJcXHUyMDI2XCIpKTtsZXQgaz11PjE/XCIgXCIucmVwZWF0KHUtMSk6XCJcIixCPVwiXlwiLnJlcGVhdChwKTtyZXR1cm5cIlwiLmNvbmNhdChnLGBcbmApLmNvbmNhdChrKS5jb25jYXQoQikuY29uY2F0KEwpfXZhciBNPWNsYXNze3N0YXRpYyBjb3B5KGEpe3JldHVybiBuZXcgTShhLnN0YXJ0LGEuZW5kKX1jb25zdHJ1Y3RvcihhLHQpe3RoaXMuc3RhcnQ9YSx0aGlzLmVuZD10fHxhfWlzRW1wdHkoKXtyZXR1cm4gdHlwZW9mIHRoaXMuc3RhcnQhPVwibnVtYmVyXCJ8fCF0aGlzLmVuZHx8dGhpcy5lbmQ8PXRoaXMuc3RhcnR9c2V0T3JpZ1JhbmdlKGEsdCl7bGV0e3N0YXJ0OnMsZW5kOml9PXRoaXM7aWYoYS5sZW5ndGg9PT0wfHxpPD1hWzBdKXJldHVybiB0aGlzLm9yaWdTdGFydD1zLHRoaXMub3JpZ0VuZD1pLHQ7bGV0IGY9dDtmb3IoO2Y8YS5sZW5ndGgmJiEoYVtmXT5zKTspKytmO3RoaXMub3JpZ1N0YXJ0PXMrZjtsZXQgZz1mO2Zvcig7ZjxhLmxlbmd0aCYmIShhW2ZdPj1pKTspKytmO3JldHVybiB0aGlzLm9yaWdFbmQ9aStmLGd9fSxUPWNsYXNze3N0YXRpYyBhZGRTdHJpbmdUZXJtaW5hdG9yKGEsdCxzKXtpZihzW3MubGVuZ3RoLTFdPT09YFxuYClyZXR1cm4gcztsZXQgaT1ULmVuZE9mV2hpdGVTcGFjZShhLHQpO3JldHVybiBpPj1hLmxlbmd0aHx8YVtpXT09PWBcbmA/cytgXG5gOnN9c3RhdGljIGF0RG9jdW1lbnRCb3VuZGFyeShhLHQscyl7bGV0IGk9YVt0XTtpZighaSlyZXR1cm4hMDtsZXQgZj1hW3QtMV07aWYoZiYmZiE9PWBcbmApcmV0dXJuITE7aWYocyl7aWYoaSE9PXMpcmV0dXJuITF9ZWxzZSBpZihpIT09ZS5ESVJFQ1RJVkVTX0VORCYmaSE9PWUuRE9DVU1FTlRfRU5EKXJldHVybiExO2xldCBnPWFbdCsxXSx1PWFbdCsyXTtpZihnIT09aXx8dSE9PWkpcmV0dXJuITE7bGV0IHA9YVt0KzNdO3JldHVybiFwfHxwPT09YFxuYHx8cD09PVwiXHRcInx8cD09PVwiIFwifXN0YXRpYyBlbmRPZklkZW50aWZpZXIoYSx0KXtsZXQgcz1hW3RdLGk9cz09PVwiPFwiLGY9aT9bYFxuYCxcIlx0XCIsXCIgXCIsXCI+XCJdOltgXG5gLFwiXHRcIixcIiBcIixcIltcIixcIl1cIixcIntcIixcIn1cIixcIixcIl07Zm9yKDtzJiZmLmluZGV4T2Yocyk9PT0tMTspcz1hW3QrPTFdO3JldHVybiBpJiZzPT09XCI+XCImJih0Kz0xKSx0fXN0YXRpYyBlbmRPZkluZGVudChhLHQpe2xldCBzPWFbdF07Zm9yKDtzPT09XCIgXCI7KXM9YVt0Kz0xXTtyZXR1cm4gdH1zdGF0aWMgZW5kT2ZMaW5lKGEsdCl7bGV0IHM9YVt0XTtmb3IoO3MmJnMhPT1gXG5gOylzPWFbdCs9MV07cmV0dXJuIHR9c3RhdGljIGVuZE9mV2hpdGVTcGFjZShhLHQpe2xldCBzPWFbdF07Zm9yKDtzPT09XCJcdFwifHxzPT09XCIgXCI7KXM9YVt0Kz0xXTtyZXR1cm4gdH1zdGF0aWMgc3RhcnRPZkxpbmUoYSx0KXtsZXQgcz1hW3QtMV07aWYocz09PWBcbmApcmV0dXJuIHQ7Zm9yKDtzJiZzIT09YFxuYDspcz1hW3QtPTFdO3JldHVybiB0KzF9c3RhdGljIGVuZE9mQmxvY2tJbmRlbnQoYSx0LHMpe2xldCBpPVQuZW5kT2ZJbmRlbnQoYSxzKTtpZihpPnMrdClyZXR1cm4gaTt7bGV0IGY9VC5lbmRPZldoaXRlU3BhY2UoYSxpKSxnPWFbZl07aWYoIWd8fGc9PT1gXG5gKXJldHVybiBmfXJldHVybiBudWxsfXN0YXRpYyBhdEJsYW5rKGEsdCxzKXtsZXQgaT1hW3RdO3JldHVybiBpPT09YFxuYHx8aT09PVwiXHRcInx8aT09PVwiIFwifHxzJiYhaX1zdGF0aWMgbmV4dE5vZGVJc0luZGVudGVkKGEsdCxzKXtyZXR1cm4hYXx8dDwwPyExOnQ+MD8hMDpzJiZhPT09XCItXCJ9c3RhdGljIG5vcm1hbGl6ZU9mZnNldChhLHQpe2xldCBzPWFbdF07cmV0dXJuIHM/cyE9PWBcbmAmJmFbdC0xXT09PWBcbmA/dC0xOlQuZW5kT2ZXaGl0ZVNwYWNlKGEsdCk6dH1zdGF0aWMgZm9sZE5ld2xpbmUoYSx0LHMpe2xldCBpPTAsZj0hMSxnPVwiXCIsdT1hW3QrMV07Zm9yKDt1PT09XCIgXCJ8fHU9PT1cIlx0XCJ8fHU9PT1gXG5gOyl7c3dpdGNoKHUpe2Nhc2VgXG5gOmk9MCx0Kz0xLGcrPWBcbmA7YnJlYWs7Y2FzZVwiXHRcIjppPD1zJiYoZj0hMCksdD1ULmVuZE9mV2hpdGVTcGFjZShhLHQrMiktMTticmVhaztjYXNlXCIgXCI6aSs9MSx0Kz0xO2JyZWFrfXU9YVt0KzFdfXJldHVybiBnfHwoZz1cIiBcIiksdSYmaTw9cyYmKGY9ITApLHtmb2xkOmcsb2Zmc2V0OnQsZXJyb3I6Zn19Y29uc3RydWN0b3IoYSx0LHMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwiY29udGV4dFwiLHt2YWx1ZTpzfHxudWxsLHdyaXRhYmxlOiEwfSksdGhpcy5lcnJvcj1udWxsLHRoaXMucmFuZ2U9bnVsbCx0aGlzLnZhbHVlUmFuZ2U9bnVsbCx0aGlzLnByb3BzPXR8fFtdLHRoaXMudHlwZT1hLHRoaXMudmFsdWU9bnVsbH1nZXRQcm9wVmFsdWUoYSx0LHMpe2lmKCF0aGlzLmNvbnRleHQpcmV0dXJuIG51bGw7bGV0e3NyYzppfT10aGlzLmNvbnRleHQsZj10aGlzLnByb3BzW2FdO3JldHVybiBmJiZpW2Yuc3RhcnRdPT09dD9pLnNsaWNlKGYuc3RhcnQrKHM/MTowKSxmLmVuZCk6bnVsbH1nZXQgYW5jaG9yKCl7Zm9yKGxldCBhPTA7YTx0aGlzLnByb3BzLmxlbmd0aDsrK2Epe2xldCB0PXRoaXMuZ2V0UHJvcFZhbHVlKGEsZS5BTkNIT1IsITApO2lmKHQhPW51bGwpcmV0dXJuIHR9cmV0dXJuIG51bGx9Z2V0IGNvbW1lbnQoKXtsZXQgYT1bXTtmb3IobGV0IHQ9MDt0PHRoaXMucHJvcHMubGVuZ3RoOysrdCl7bGV0IHM9dGhpcy5nZXRQcm9wVmFsdWUodCxlLkNPTU1FTlQsITApO3MhPW51bGwmJmEucHVzaChzKX1yZXR1cm4gYS5sZW5ndGg+MD9hLmpvaW4oYFxuYCk6bnVsbH1jb21tZW50SGFzUmVxdWlyZWRXaGl0ZXNwYWNlKGEpe2xldHtzcmM6dH09dGhpcy5jb250ZXh0O2lmKHRoaXMuaGVhZGVyJiZhPT09dGhpcy5oZWFkZXIuZW5kfHwhdGhpcy52YWx1ZVJhbmdlKXJldHVybiExO2xldHtlbmQ6c309dGhpcy52YWx1ZVJhbmdlO3JldHVybiBhIT09c3x8VC5hdEJsYW5rKHQscy0xKX1nZXQgaGFzQ29tbWVudCgpe2lmKHRoaXMuY29udGV4dCl7bGV0e3NyYzphfT10aGlzLmNvbnRleHQ7Zm9yKGxldCB0PTA7dDx0aGlzLnByb3BzLmxlbmd0aDsrK3QpaWYoYVt0aGlzLnByb3BzW3RdLnN0YXJ0XT09PWUuQ09NTUVOVClyZXR1cm4hMH1yZXR1cm4hMX1nZXQgaGFzUHJvcHMoKXtpZih0aGlzLmNvbnRleHQpe2xldHtzcmM6YX09dGhpcy5jb250ZXh0O2ZvcihsZXQgdD0wO3Q8dGhpcy5wcm9wcy5sZW5ndGg7Kyt0KWlmKGFbdGhpcy5wcm9wc1t0XS5zdGFydF0hPT1lLkNPTU1FTlQpcmV0dXJuITB9cmV0dXJuITF9Z2V0IGluY2x1ZGVzVHJhaWxpbmdMaW5lcygpe3JldHVybiExfWdldCBqc29uTGlrZSgpe3JldHVybltuLkZMT1dfTUFQLG4uRkxPV19TRVEsbi5RVU9URV9ET1VCTEUsbi5RVU9URV9TSU5HTEVdLmluZGV4T2YodGhpcy50eXBlKSE9PS0xfWdldCByYW5nZUFzTGluZVBvcygpe2lmKCF0aGlzLnJhbmdlfHwhdGhpcy5jb250ZXh0KXJldHVybjtsZXQgYT1FKHRoaXMucmFuZ2Uuc3RhcnQsdGhpcy5jb250ZXh0LnJvb3QpO2lmKCFhKXJldHVybjtsZXQgdD1FKHRoaXMucmFuZ2UuZW5kLHRoaXMuY29udGV4dC5yb290KTtyZXR1cm57c3RhcnQ6YSxlbmQ6dH19Z2V0IHJhd1ZhbHVlKCl7aWYoIXRoaXMudmFsdWVSYW5nZXx8IXRoaXMuY29udGV4dClyZXR1cm4gbnVsbDtsZXR7c3RhcnQ6YSxlbmQ6dH09dGhpcy52YWx1ZVJhbmdlO3JldHVybiB0aGlzLmNvbnRleHQuc3JjLnNsaWNlKGEsdCl9Z2V0IHRhZygpe2ZvcihsZXQgYT0wO2E8dGhpcy5wcm9wcy5sZW5ndGg7KythKXtsZXQgdD10aGlzLmdldFByb3BWYWx1ZShhLGUuVEFHLCExKTtpZih0IT1udWxsKXtpZih0WzFdPT09XCI8XCIpcmV0dXJue3ZlcmJhdGltOnQuc2xpY2UoMiwtMSl9O3tsZXRbcyxpLGZdPXQubWF0Y2goL14oLiohKShbXiFdKikkLyk7cmV0dXJue2hhbmRsZTppLHN1ZmZpeDpmfX19fXJldHVybiBudWxsfWdldCB2YWx1ZVJhbmdlQ29udGFpbnNOZXdsaW5lKCl7aWYoIXRoaXMudmFsdWVSYW5nZXx8IXRoaXMuY29udGV4dClyZXR1cm4hMTtsZXR7c3RhcnQ6YSxlbmQ6dH09dGhpcy52YWx1ZVJhbmdlLHtzcmM6c309dGhpcy5jb250ZXh0O2ZvcihsZXQgaT1hO2k8dDsrK2kpaWYoc1tpXT09PWBcbmApcmV0dXJuITA7cmV0dXJuITF9cGFyc2VDb21tZW50KGEpe2xldHtzcmM6dH09dGhpcy5jb250ZXh0O2lmKHRbYV09PT1lLkNPTU1FTlQpe2xldCBzPVQuZW5kT2ZMaW5lKHQsYSsxKSxpPW5ldyBNKGEscyk7cmV0dXJuIHRoaXMucHJvcHMucHVzaChpKSxzfXJldHVybiBhfXNldE9yaWdSYW5nZXMoYSx0KXtyZXR1cm4gdGhpcy5yYW5nZSYmKHQ9dGhpcy5yYW5nZS5zZXRPcmlnUmFuZ2UoYSx0KSksdGhpcy52YWx1ZVJhbmdlJiZ0aGlzLnZhbHVlUmFuZ2Uuc2V0T3JpZ1JhbmdlKGEsdCksdGhpcy5wcm9wcy5mb3JFYWNoKHM9PnMuc2V0T3JpZ1JhbmdlKGEsdCkpLHR9dG9TdHJpbmcoKXtsZXR7Y29udGV4dDp7c3JjOmF9LHJhbmdlOnQsdmFsdWU6c309dGhpcztpZihzIT1udWxsKXJldHVybiBzO2xldCBpPWEuc2xpY2UodC5zdGFydCx0LmVuZCk7cmV0dXJuIFQuYWRkU3RyaW5nVGVybWluYXRvcihhLHQuZW5kLGkpfX0sUD1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGEsdCxzKXtpZighc3x8ISh0IGluc3RhbmNlb2YgVCkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMgZm9yIG5ldyBcIi5jb25jYXQoYSkpO3N1cGVyKCksdGhpcy5uYW1lPWEsdGhpcy5tZXNzYWdlPXMsdGhpcy5zb3VyY2U9dH1tYWtlUHJldHR5KCl7aWYoIXRoaXMuc291cmNlKXJldHVybjt0aGlzLm5vZGVUeXBlPXRoaXMuc291cmNlLnR5cGU7bGV0IGE9dGhpcy5zb3VyY2UuY29udGV4dCYmdGhpcy5zb3VyY2UuY29udGV4dC5yb290O2lmKHR5cGVvZiB0aGlzLm9mZnNldD09XCJudW1iZXJcIil7dGhpcy5yYW5nZT1uZXcgTSh0aGlzLm9mZnNldCx0aGlzLm9mZnNldCsxKTtsZXQgdD1hJiZFKHRoaXMub2Zmc2V0LGEpO2lmKHQpe2xldCBzPXtsaW5lOnQubGluZSxjb2w6dC5jb2wrMX07dGhpcy5saW5lUG9zPXtzdGFydDp0LGVuZDpzfX1kZWxldGUgdGhpcy5vZmZzZXR9ZWxzZSB0aGlzLnJhbmdlPXRoaXMuc291cmNlLnJhbmdlLHRoaXMubGluZVBvcz10aGlzLnNvdXJjZS5yYW5nZUFzTGluZVBvcztpZih0aGlzLmxpbmVQb3Mpe2xldHtsaW5lOnQsY29sOnN9PXRoaXMubGluZVBvcy5zdGFydDt0aGlzLm1lc3NhZ2UrPVwiIGF0IGxpbmUgXCIuY29uY2F0KHQsXCIsIGNvbHVtbiBcIikuY29uY2F0KHMpO2xldCBpPWEmJlModGhpcy5saW5lUG9zLGEpO2kmJih0aGlzLm1lc3NhZ2UrPWA6XG5cbmAuY29uY2F0KGksYFxuYCkpfWRlbGV0ZSB0aGlzLnNvdXJjZX19LEM9Y2xhc3MgZXh0ZW5kcyBQe2NvbnN0cnVjdG9yKGEsdCl7c3VwZXIoXCJZQU1MUmVmZXJlbmNlRXJyb3JcIixhLHQpfX0scT1jbGFzcyBleHRlbmRzIFB7Y29uc3RydWN0b3IoYSx0KXtzdXBlcihcIllBTUxTZW1hbnRpY0Vycm9yXCIsYSx0KX19LFI9Y2xhc3MgZXh0ZW5kcyBQe2NvbnN0cnVjdG9yKGEsdCl7c3VwZXIoXCJZQU1MU3ludGF4RXJyb3JcIixhLHQpfX0saj1jbGFzcyBleHRlbmRzIFB7Y29uc3RydWN0b3IoYSx0KXtzdXBlcihcIllBTUxXYXJuaW5nXCIsYSx0KX19O2Z1bmN0aW9uIEsoYSx0LHMpe3JldHVybiB0IGluIGE/T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdCx7dmFsdWU6cyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmFbdF09cyxhfXZhciBtPWNsYXNzIGV4dGVuZHMgVHtzdGF0aWMgZW5kT2ZMaW5lKGEsdCxzKXtsZXQgaT1hW3RdLGY9dDtmb3IoO2kmJmkhPT1gXG5gJiYhKHMmJihpPT09XCJbXCJ8fGk9PT1cIl1cInx8aT09PVwie1wifHxpPT09XCJ9XCJ8fGk9PT1cIixcIikpOyl7bGV0IGc9YVtmKzFdO2lmKGk9PT1cIjpcIiYmKCFnfHxnPT09YFxuYHx8Zz09PVwiXHRcInx8Zz09PVwiIFwifHxzJiZnPT09XCIsXCIpfHwoaT09PVwiIFwifHxpPT09XCJcdFwiKSYmZz09PVwiI1wiKWJyZWFrO2YrPTEsaT1nfXJldHVybiBmfWdldCBzdHJWYWx1ZSgpe2lmKCF0aGlzLnZhbHVlUmFuZ2V8fCF0aGlzLmNvbnRleHQpcmV0dXJuIG51bGw7bGV0e3N0YXJ0OmEsZW5kOnR9PXRoaXMudmFsdWVSYW5nZSx7c3JjOnN9PXRoaXMuY29udGV4dCxpPXNbdC0xXTtmb3IoO2E8dCYmKGk9PT1gXG5gfHxpPT09XCJcdFwifHxpPT09XCIgXCIpOylpPXNbLS10LTFdO2xldCBmPVwiXCI7Zm9yKGxldCB1PWE7dTx0OysrdSl7bGV0IHA9c1t1XTtpZihwPT09YFxuYCl7bGV0e2ZvbGQ6TCxvZmZzZXQ6a309VC5mb2xkTmV3bGluZShzLHUsLTEpO2YrPUwsdT1rfWVsc2UgaWYocD09PVwiIFwifHxwPT09XCJcdFwiKXtsZXQgTD11LGs9c1t1KzFdO2Zvcig7dTx0JiYoaz09PVwiIFwifHxrPT09XCJcdFwiKTspdSs9MSxrPXNbdSsxXTtrIT09YFxuYCYmKGYrPXU+TD9zLnNsaWNlKEwsdSsxKTpwKX1lbHNlIGYrPXB9bGV0IGc9c1thXTtzd2l0Y2goZyl7Y2FzZVwiXHRcIjp7bGV0IHU9XCJQbGFpbiB2YWx1ZSBjYW5ub3Qgc3RhcnQgd2l0aCBhIHRhYiBjaGFyYWN0ZXJcIjtyZXR1cm57ZXJyb3JzOltuZXcgcSh0aGlzLHUpXSxzdHI6Zn19Y2FzZVwiQFwiOmNhc2VcImBcIjp7bGV0IHU9XCJQbGFpbiB2YWx1ZSBjYW5ub3Qgc3RhcnQgd2l0aCByZXNlcnZlZCBjaGFyYWN0ZXIgXCIuY29uY2F0KGcpO3JldHVybntlcnJvcnM6W25ldyBxKHRoaXMsdSldLHN0cjpmfX1kZWZhdWx0OnJldHVybiBmfX1wYXJzZUJsb2NrVmFsdWUoYSl7bGV0e2luZGVudDp0LGluRmxvdzpzLHNyYzppfT10aGlzLmNvbnRleHQsZj1hLGc9YTtmb3IobGV0IHU9aVtmXTt1PT09YFxuYCYmIVQuYXREb2N1bWVudEJvdW5kYXJ5KGksZisxKTt1PWlbZl0pe2xldCBwPVQuZW5kT2ZCbG9ja0luZGVudChpLHQsZisxKTtpZihwPT09bnVsbHx8aVtwXT09PVwiI1wiKWJyZWFrO2lbcF09PT1gXG5gP2Y9cDooZz1tLmVuZE9mTGluZShpLHAscyksZj1nKX1yZXR1cm4gdGhpcy52YWx1ZVJhbmdlLmlzRW1wdHkoKSYmKHRoaXMudmFsdWVSYW5nZS5zdGFydD1hKSx0aGlzLnZhbHVlUmFuZ2UuZW5kPWcsZ31wYXJzZShhLHQpe3RoaXMuY29udGV4dD1hO2xldHtpbkZsb3c6cyxzcmM6aX09YSxmPXQsZz1pW2ZdO3JldHVybiBnJiZnIT09XCIjXCImJmchPT1gXG5gJiYoZj1tLmVuZE9mTGluZShpLHQscykpLHRoaXMudmFsdWVSYW5nZT1uZXcgTSh0LGYpLGY9VC5lbmRPZldoaXRlU3BhY2UoaSxmKSxmPXRoaXMucGFyc2VDb21tZW50KGYpLCghdGhpcy5oYXNDb21tZW50fHx0aGlzLnZhbHVlUmFuZ2UuaXNFbXB0eSgpKSYmKGY9dGhpcy5wYXJzZUJsb2NrVmFsdWUoZikpLGZ9fTtyLkNoYXI9ZSxyLk5vZGU9VCxyLlBsYWluVmFsdWU9bSxyLlJhbmdlPU0sci5UeXBlPW4sci5ZQU1MRXJyb3I9UCxyLllBTUxSZWZlcmVuY2VFcnJvcj1DLHIuWUFNTFNlbWFudGljRXJyb3I9cSxyLllBTUxTeW50YXhFcnJvcj1SLHIuWUFNTFdhcm5pbmc9aixyLl9kZWZpbmVQcm9wZXJ0eT1LLHIuZGVmYXVsdFRhZ1ByZWZpeD1jLHIuZGVmYXVsdFRhZ3M9aH19KSxHbj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sL2Rpc3QvcGFyc2UtY3N0LmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpO3ZhciBlPU1lKCksbj1jbGFzcyBleHRlbmRzIGUuTm9kZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKGUuVHlwZS5CTEFOS19MSU5FKX1nZXQgaW5jbHVkZXNUcmFpbGluZ0xpbmVzKCl7cmV0dXJuITB9cGFyc2UobSxhKXtyZXR1cm4gdGhpcy5jb250ZXh0PW0sdGhpcy5yYW5nZT1uZXcgZS5SYW5nZShhLGErMSksYSsxfX0sYz1jbGFzcyBleHRlbmRzIGUuTm9kZXtjb25zdHJ1Y3RvcihtLGEpe3N1cGVyKG0sYSksdGhpcy5ub2RlPW51bGx9Z2V0IGluY2x1ZGVzVHJhaWxpbmdMaW5lcygpe3JldHVybiEhdGhpcy5ub2RlJiZ0aGlzLm5vZGUuaW5jbHVkZXNUcmFpbGluZ0xpbmVzfXBhcnNlKG0sYSl7dGhpcy5jb250ZXh0PW07bGV0e3BhcnNlTm9kZTp0LHNyYzpzfT1tLHthdExpbmVTdGFydDppLGxpbmVTdGFydDpmfT1tOyFpJiZ0aGlzLnR5cGU9PT1lLlR5cGUuU0VRX0lURU0mJih0aGlzLmVycm9yPW5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKHRoaXMsXCJTZXF1ZW5jZSBpdGVtcyBtdXN0IG5vdCBoYXZlIHByZWNlZGluZyBjb250ZW50IG9uIHRoZSBzYW1lIGxpbmVcIikpO2xldCBnPWk/YS1mOm0uaW5kZW50LHU9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzLGErMSkscD1zW3VdLEw9cD09PVwiI1wiLGs9W10sQj1udWxsO2Zvcig7cD09PWBcbmB8fHA9PT1cIiNcIjspe2lmKHA9PT1cIiNcIil7bGV0IFE9ZS5Ob2RlLmVuZE9mTGluZShzLHUrMSk7ay5wdXNoKG5ldyBlLlJhbmdlKHUsUSkpLHU9UX1lbHNle2k9ITAsZj11KzE7bGV0IFE9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzLGYpO3NbUV09PT1gXG5gJiZrLmxlbmd0aD09PTAmJihCPW5ldyBuLGY9Qi5wYXJzZSh7c3JjOnN9LGYpKSx1PWUuTm9kZS5lbmRPZkluZGVudChzLGYpfXA9c1t1XX1pZihlLk5vZGUubmV4dE5vZGVJc0luZGVudGVkKHAsdS0oZitnKSx0aGlzLnR5cGUhPT1lLlR5cGUuU0VRX0lURU0pP3RoaXMubm9kZT10KHthdExpbmVTdGFydDppLGluQ29sbGVjdGlvbjohMSxpbmRlbnQ6ZyxsaW5lU3RhcnQ6ZixwYXJlbnQ6dGhpc30sdSk6cCYmZj5hKzEmJih1PWYtMSksdGhpcy5ub2RlKXtpZihCKXtsZXQgUT1tLnBhcmVudC5pdGVtc3x8bS5wYXJlbnQuY29udGVudHM7USYmUS5wdXNoKEIpfWsubGVuZ3RoJiZBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLnByb3BzLGspLHU9dGhpcy5ub2RlLnJhbmdlLmVuZH1lbHNlIGlmKEwpe2xldCBRPWtbMF07dGhpcy5wcm9wcy5wdXNoKFEpLHU9US5lbmR9ZWxzZSB1PWUuTm9kZS5lbmRPZkxpbmUocyxhKzEpO2xldCAkPXRoaXMubm9kZT90aGlzLm5vZGUudmFsdWVSYW5nZS5lbmQ6dTtyZXR1cm4gdGhpcy52YWx1ZVJhbmdlPW5ldyBlLlJhbmdlKGEsJCksdX1zZXRPcmlnUmFuZ2VzKG0sYSl7cmV0dXJuIGE9c3VwZXIuc2V0T3JpZ1JhbmdlcyhtLGEpLHRoaXMubm9kZT90aGlzLm5vZGUuc2V0T3JpZ1JhbmdlcyhtLGEpOmF9dG9TdHJpbmcoKXtsZXR7Y29udGV4dDp7c3JjOm19LG5vZGU6YSxyYW5nZTp0LHZhbHVlOnN9PXRoaXM7aWYocyE9bnVsbClyZXR1cm4gcztsZXQgaT1hP20uc2xpY2UodC5zdGFydCxhLnJhbmdlLnN0YXJ0KStTdHJpbmcoYSk6bS5zbGljZSh0LnN0YXJ0LHQuZW5kKTtyZXR1cm4gZS5Ob2RlLmFkZFN0cmluZ1Rlcm1pbmF0b3IobSx0LmVuZCxpKX19LGg9Y2xhc3MgZXh0ZW5kcyBlLk5vZGV7Y29uc3RydWN0b3IoKXtzdXBlcihlLlR5cGUuQ09NTUVOVCl9cGFyc2UobSxhKXt0aGlzLmNvbnRleHQ9bTtsZXQgdD10aGlzLnBhcnNlQ29tbWVudChhKTtyZXR1cm4gdGhpcy5yYW5nZT1uZXcgZS5SYW5nZShhLHQpLHR9fTtmdW5jdGlvbiBkKG0pe2xldCBhPW07Zm9yKDthIGluc3RhbmNlb2YgYzspYT1hLm5vZGU7aWYoIShhIGluc3RhbmNlb2YgeSkpcmV0dXJuIG51bGw7bGV0IHQ9YS5pdGVtcy5sZW5ndGgscz0tMTtmb3IobGV0IGc9dC0xO2c+PTA7LS1nKXtsZXQgdT1hLml0ZW1zW2ddO2lmKHUudHlwZT09PWUuVHlwZS5DT01NRU5UKXtsZXR7aW5kZW50OnAsbGluZVN0YXJ0Okx9PXUuY29udGV4dDtpZihwPjAmJnUucmFuZ2Uuc3RhcnQ+PUwrcClicmVhaztzPWd9ZWxzZSBpZih1LnR5cGU9PT1lLlR5cGUuQkxBTktfTElORSlzPWc7ZWxzZSBicmVha31pZihzPT09LTEpcmV0dXJuIG51bGw7bGV0IGk9YS5pdGVtcy5zcGxpY2Uocyx0LXMpLGY9aVswXS5yYW5nZS5zdGFydDtmb3IoO2EucmFuZ2UuZW5kPWYsYS52YWx1ZVJhbmdlJiZhLnZhbHVlUmFuZ2UuZW5kPmYmJihhLnZhbHVlUmFuZ2UuZW5kPWYpLGEhPT1tOylhPWEuY29udGV4dC5wYXJlbnQ7cmV0dXJuIGl9dmFyIHk9Y2xhc3MgZXh0ZW5kcyBlLk5vZGV7c3RhdGljIG5leHRDb250ZW50SGFzSW5kZW50KG0sYSx0KXtsZXQgcz1lLk5vZGUuZW5kT2ZMaW5lKG0sYSkrMTthPWUuTm9kZS5lbmRPZldoaXRlU3BhY2UobSxzKTtsZXQgaT1tW2FdO3JldHVybiBpP2E+PXMrdD8hMDppIT09XCIjXCImJmkhPT1gXG5gPyExOnkubmV4dENvbnRlbnRIYXNJbmRlbnQobSxhLHQpOiExfWNvbnN0cnVjdG9yKG0pe3N1cGVyKG0udHlwZT09PWUuVHlwZS5TRVFfSVRFTT9lLlR5cGUuU0VROmUuVHlwZS5NQVApO2ZvcihsZXQgdD1tLnByb3BzLmxlbmd0aC0xO3Q+PTA7LS10KWlmKG0ucHJvcHNbdF0uc3RhcnQ8bS5jb250ZXh0LmxpbmVTdGFydCl7dGhpcy5wcm9wcz1tLnByb3BzLnNsaWNlKDAsdCsxKSxtLnByb3BzPW0ucHJvcHMuc2xpY2UodCsxKTtsZXQgcz1tLnByb3BzWzBdfHxtLnZhbHVlUmFuZ2U7bS5yYW5nZS5zdGFydD1zLnN0YXJ0O2JyZWFrfXRoaXMuaXRlbXM9W21dO2xldCBhPWQobSk7YSYmQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5pdGVtcyxhKX1nZXQgaW5jbHVkZXNUcmFpbGluZ0xpbmVzKCl7cmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoPjB9cGFyc2UobSxhKXt0aGlzLmNvbnRleHQ9bTtsZXR7cGFyc2VOb2RlOnQsc3JjOnN9PW0saT1lLk5vZGUuc3RhcnRPZkxpbmUocyxhKSxmPXRoaXMuaXRlbXNbMF07Zi5jb250ZXh0LnBhcmVudD10aGlzLHRoaXMudmFsdWVSYW5nZT1lLlJhbmdlLmNvcHkoZi52YWx1ZVJhbmdlKTtsZXQgZz1mLnJhbmdlLnN0YXJ0LWYuY29udGV4dC5saW5lU3RhcnQsdT1hO3U9ZS5Ob2RlLm5vcm1hbGl6ZU9mZnNldChzLHUpO2xldCBwPXNbdV0sTD1lLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHMsaSk9PT11LGs9ITE7Zm9yKDtwOyl7Zm9yKDtwPT09YFxuYHx8cD09PVwiI1wiOyl7aWYoTCYmcD09PWBcbmAmJiFrKXtsZXQgUT1uZXcgbjtpZih1PVEucGFyc2Uoe3NyYzpzfSx1KSx0aGlzLnZhbHVlUmFuZ2UuZW5kPXUsdT49cy5sZW5ndGgpe3A9bnVsbDticmVha310aGlzLml0ZW1zLnB1c2goUSksdS09MX1lbHNlIGlmKHA9PT1cIiNcIil7aWYodTxpK2cmJiF5Lm5leHRDb250ZW50SGFzSW5kZW50KHMsdSxnKSlyZXR1cm4gdTtsZXQgUT1uZXcgaDtpZih1PVEucGFyc2Uoe2luZGVudDpnLGxpbmVTdGFydDppLHNyYzpzfSx1KSx0aGlzLml0ZW1zLnB1c2goUSksdGhpcy52YWx1ZVJhbmdlLmVuZD11LHU+PXMubGVuZ3RoKXtwPW51bGw7YnJlYWt9fWlmKGk9dSsxLHU9ZS5Ob2RlLmVuZE9mSW5kZW50KHMsaSksZS5Ob2RlLmF0Qmxhbmsocyx1KSl7bGV0IFE9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzLHUpLHo9c1tRXTsoIXp8fHo9PT1gXG5gfHx6PT09XCIjXCIpJiYodT1RKX1wPXNbdV0sTD0hMH1pZighcClicmVhaztpZih1IT09aStnJiYoTHx8cCE9PVwiOlwiKSl7aWYodTxpK2cpe2k+YSYmKHU9aSk7YnJlYWt9ZWxzZSBpZighdGhpcy5lcnJvcil7bGV0IFE9XCJBbGwgY29sbGVjdGlvbiBpdGVtcyBtdXN0IHN0YXJ0IGF0IHRoZSBzYW1lIGNvbHVtblwiO3RoaXMuZXJyb3I9bmV3IGUuWUFNTFN5bnRheEVycm9yKHRoaXMsUSl9fWlmKGYudHlwZT09PWUuVHlwZS5TRVFfSVRFTSl7aWYocCE9PVwiLVwiKXtpPmEmJih1PWkpO2JyZWFrfX1lbHNlIGlmKHA9PT1cIi1cIiYmIXRoaXMuZXJyb3Ipe2xldCBRPXNbdSsxXTtpZighUXx8UT09PWBcbmB8fFE9PT1cIlx0XCJ8fFE9PT1cIiBcIil7bGV0IHo9XCJBIGNvbGxlY3Rpb24gY2Fubm90IGJlIGJvdGggYSBtYXBwaW5nIGFuZCBhIHNlcXVlbmNlXCI7dGhpcy5lcnJvcj1uZXcgZS5ZQU1MU3ludGF4RXJyb3IodGhpcyx6KX19bGV0IEI9dCh7YXRMaW5lU3RhcnQ6TCxpbkNvbGxlY3Rpb246ITAsaW5kZW50OmcsbGluZVN0YXJ0OmkscGFyZW50OnRoaXN9LHUpO2lmKCFCKXJldHVybiB1O2lmKHRoaXMuaXRlbXMucHVzaChCKSx0aGlzLnZhbHVlUmFuZ2UuZW5kPUIudmFsdWVSYW5nZS5lbmQsdT1lLk5vZGUubm9ybWFsaXplT2Zmc2V0KHMsQi5yYW5nZS5lbmQpLHA9c1t1XSxMPSExLGs9Qi5pbmNsdWRlc1RyYWlsaW5nTGluZXMscCl7bGV0IFE9dS0xLHo9c1tRXTtmb3IoO3o9PT1cIiBcInx8ej09PVwiXHRcIjspej1zWy0tUV07ej09PWBcbmAmJihpPVErMSxMPSEwKX1sZXQgJD1kKEIpOyQmJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMuaXRlbXMsJCl9cmV0dXJuIHV9c2V0T3JpZ1JhbmdlcyhtLGEpe3JldHVybiBhPXN1cGVyLnNldE9yaWdSYW5nZXMobSxhKSx0aGlzLml0ZW1zLmZvckVhY2godD0+e2E9dC5zZXRPcmlnUmFuZ2VzKG0sYSl9KSxhfXRvU3RyaW5nKCl7bGV0e2NvbnRleHQ6e3NyYzptfSxpdGVtczphLHJhbmdlOnQsdmFsdWU6c309dGhpcztpZihzIT1udWxsKXJldHVybiBzO2xldCBpPW0uc2xpY2UodC5zdGFydCxhWzBdLnJhbmdlLnN0YXJ0KStTdHJpbmcoYVswXSk7Zm9yKGxldCBmPTE7ZjxhLmxlbmd0aDsrK2Ype2xldCBnPWFbZl0se2F0TGluZVN0YXJ0OnUsaW5kZW50OnB9PWcuY29udGV4dDtpZih1KWZvcihsZXQgTD0wO0w8cDsrK0wpaSs9XCIgXCI7aSs9U3RyaW5nKGcpfXJldHVybiBlLk5vZGUuYWRkU3RyaW5nVGVybWluYXRvcihtLHQuZW5kLGkpfX0sRT1jbGFzcyBleHRlbmRzIGUuTm9kZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKGUuVHlwZS5ESVJFQ1RJVkUpLHRoaXMubmFtZT1udWxsfWdldCBwYXJhbWV0ZXJzKCl7bGV0IG09dGhpcy5yYXdWYWx1ZTtyZXR1cm4gbT9tLnRyaW0oKS5zcGxpdCgvWyBcXHRdKy8pOltdfXBhcnNlTmFtZShtKXtsZXR7c3JjOmF9PXRoaXMuY29udGV4dCx0PW0scz1hW3RdO2Zvcig7cyYmcyE9PWBcbmAmJnMhPT1cIlx0XCImJnMhPT1cIiBcIjspcz1hW3QrPTFdO3JldHVybiB0aGlzLm5hbWU9YS5zbGljZShtLHQpLHR9cGFyc2VQYXJhbWV0ZXJzKG0pe2xldHtzcmM6YX09dGhpcy5jb250ZXh0LHQ9bSxzPWFbdF07Zm9yKDtzJiZzIT09YFxuYCYmcyE9PVwiI1wiOylzPWFbdCs9MV07cmV0dXJuIHRoaXMudmFsdWVSYW5nZT1uZXcgZS5SYW5nZShtLHQpLHR9cGFyc2UobSxhKXt0aGlzLmNvbnRleHQ9bTtsZXQgdD10aGlzLnBhcnNlTmFtZShhKzEpO3JldHVybiB0PXRoaXMucGFyc2VQYXJhbWV0ZXJzKHQpLHQ9dGhpcy5wYXJzZUNvbW1lbnQodCksdGhpcy5yYW5nZT1uZXcgZS5SYW5nZShhLHQpLHR9fSxJPWNsYXNzIGV4dGVuZHMgZS5Ob2Rle3N0YXRpYyBzdGFydENvbW1lbnRPckVuZEJsYW5rTGluZShtLGEpe2xldCB0PWUuTm9kZS5lbmRPZldoaXRlU3BhY2UobSxhKSxzPW1bdF07cmV0dXJuIHM9PT1cIiNcInx8cz09PWBcbmA/dDphfWNvbnN0cnVjdG9yKCl7c3VwZXIoZS5UeXBlLkRPQ1VNRU5UKSx0aGlzLmRpcmVjdGl2ZXM9bnVsbCx0aGlzLmNvbnRlbnRzPW51bGwsdGhpcy5kaXJlY3RpdmVzRW5kTWFya2VyPW51bGwsdGhpcy5kb2N1bWVudEVuZE1hcmtlcj1udWxsfXBhcnNlRGlyZWN0aXZlcyhtKXtsZXR7c3JjOmF9PXRoaXMuY29udGV4dDt0aGlzLmRpcmVjdGl2ZXM9W107bGV0IHQ9ITAscz0hMSxpPW07Zm9yKDshZS5Ob2RlLmF0RG9jdW1lbnRCb3VuZGFyeShhLGksZS5DaGFyLkRJUkVDVElWRVNfRU5EKTspc3dpdGNoKGk9SS5zdGFydENvbW1lbnRPckVuZEJsYW5rTGluZShhLGkpLGFbaV0pe2Nhc2VgXG5gOmlmKHQpe2xldCBmPW5ldyBuO2k9Zi5wYXJzZSh7c3JjOmF9LGkpLGk8YS5sZW5ndGgmJnRoaXMuZGlyZWN0aXZlcy5wdXNoKGYpfWVsc2UgaSs9MSx0PSEwO2JyZWFrO2Nhc2VcIiNcIjp7bGV0IGY9bmV3IGg7aT1mLnBhcnNlKHtzcmM6YX0saSksdGhpcy5kaXJlY3RpdmVzLnB1c2goZiksdD0hMX1icmVhaztjYXNlXCIlXCI6e2xldCBmPW5ldyBFO2k9Zi5wYXJzZSh7cGFyZW50OnRoaXMsc3JjOmF9LGkpLHRoaXMuZGlyZWN0aXZlcy5wdXNoKGYpLHM9ITAsdD0hMX1icmVhaztkZWZhdWx0OnJldHVybiBzP3RoaXMuZXJyb3I9bmV3IGUuWUFNTFNlbWFudGljRXJyb3IodGhpcyxcIk1pc3NpbmcgZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yIGxpbmVcIik6dGhpcy5kaXJlY3RpdmVzLmxlbmd0aD4wJiYodGhpcy5jb250ZW50cz10aGlzLmRpcmVjdGl2ZXMsdGhpcy5kaXJlY3RpdmVzPVtdKSxpfXJldHVybiBhW2ldPyh0aGlzLmRpcmVjdGl2ZXNFbmRNYXJrZXI9bmV3IGUuUmFuZ2UoaSxpKzMpLGkrMyk6KHM/dGhpcy5lcnJvcj1uZXcgZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLFwiTWlzc2luZyBkaXJlY3RpdmVzLWVuZCBpbmRpY2F0b3IgbGluZVwiKTp0aGlzLmRpcmVjdGl2ZXMubGVuZ3RoPjAmJih0aGlzLmNvbnRlbnRzPXRoaXMuZGlyZWN0aXZlcyx0aGlzLmRpcmVjdGl2ZXM9W10pLGkpfXBhcnNlQ29udGVudHMobSl7bGV0e3BhcnNlTm9kZTphLHNyYzp0fT10aGlzLmNvbnRleHQ7dGhpcy5jb250ZW50c3x8KHRoaXMuY29udGVudHM9W10pO2xldCBzPW07Zm9yKDt0W3MtMV09PT1cIi1cIjspcy09MTtsZXQgaT1lLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHQsbSksZj1zPT09bTtmb3IodGhpcy52YWx1ZVJhbmdlPW5ldyBlLlJhbmdlKGkpOyFlLk5vZGUuYXREb2N1bWVudEJvdW5kYXJ5KHQsaSxlLkNoYXIuRE9DVU1FTlRfRU5EKTspe3N3aXRjaCh0W2ldKXtjYXNlYFxuYDppZihmKXtsZXQgZz1uZXcgbjtpPWcucGFyc2Uoe3NyYzp0fSxpKSxpPHQubGVuZ3RoJiZ0aGlzLmNvbnRlbnRzLnB1c2goZyl9ZWxzZSBpKz0xLGY9ITA7cz1pO2JyZWFrO2Nhc2VcIiNcIjp7bGV0IGc9bmV3IGg7aT1nLnBhcnNlKHtzcmM6dH0saSksdGhpcy5jb250ZW50cy5wdXNoKGcpLGY9ITF9YnJlYWs7ZGVmYXVsdDp7bGV0IGc9ZS5Ob2RlLmVuZE9mSW5kZW50KHQsaSkscD1hKHthdExpbmVTdGFydDpmLGluZGVudDotMSxpbkZsb3c6ITEsaW5Db2xsZWN0aW9uOiExLGxpbmVTdGFydDpzLHBhcmVudDp0aGlzfSxnKTtpZighcClyZXR1cm4gdGhpcy52YWx1ZVJhbmdlLmVuZD1nO3RoaXMuY29udGVudHMucHVzaChwKSxpPXAucmFuZ2UuZW5kLGY9ITE7bGV0IEw9ZChwKTtMJiZBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLmNvbnRlbnRzLEwpfX1pPUkuc3RhcnRDb21tZW50T3JFbmRCbGFua0xpbmUodCxpKX1pZih0aGlzLnZhbHVlUmFuZ2UuZW5kPWksdFtpXSYmKHRoaXMuZG9jdW1lbnRFbmRNYXJrZXI9bmV3IGUuUmFuZ2UoaSxpKzMpLGkrPTMsdFtpXSkpe2lmKGk9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZSh0LGkpLHRbaV09PT1cIiNcIil7bGV0IGc9bmV3IGg7aT1nLnBhcnNlKHtzcmM6dH0saSksdGhpcy5jb250ZW50cy5wdXNoKGcpfXN3aXRjaCh0W2ldKXtjYXNlYFxuYDppKz0xO2JyZWFrO2Nhc2Ugdm9pZCAwOmJyZWFrO2RlZmF1bHQ6dGhpcy5lcnJvcj1uZXcgZS5ZQU1MU3ludGF4RXJyb3IodGhpcyxcIkRvY3VtZW50IGVuZCBtYXJrZXIgbGluZSBjYW5ub3QgaGF2ZSBhIG5vbi1jb21tZW50IHN1ZmZpeFwiKX19cmV0dXJuIGl9cGFyc2UobSxhKXttLnJvb3Q9dGhpcyx0aGlzLmNvbnRleHQ9bTtsZXR7c3JjOnR9PW0scz10LmNoYXJDb2RlQXQoYSk9PT02NTI3OT9hKzE6YTtyZXR1cm4gcz10aGlzLnBhcnNlRGlyZWN0aXZlcyhzKSxzPXRoaXMucGFyc2VDb250ZW50cyhzKSxzfXNldE9yaWdSYW5nZXMobSxhKXtyZXR1cm4gYT1zdXBlci5zZXRPcmlnUmFuZ2VzKG0sYSksdGhpcy5kaXJlY3RpdmVzLmZvckVhY2godD0+e2E9dC5zZXRPcmlnUmFuZ2VzKG0sYSl9KSx0aGlzLmRpcmVjdGl2ZXNFbmRNYXJrZXImJihhPXRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlci5zZXRPcmlnUmFuZ2UobSxhKSksdGhpcy5jb250ZW50cy5mb3JFYWNoKHQ9PnthPXQuc2V0T3JpZ1JhbmdlcyhtLGEpfSksdGhpcy5kb2N1bWVudEVuZE1hcmtlciYmKGE9dGhpcy5kb2N1bWVudEVuZE1hcmtlci5zZXRPcmlnUmFuZ2UobSxhKSksYX10b1N0cmluZygpe2xldHtjb250ZW50czptLGRpcmVjdGl2ZXM6YSx2YWx1ZTp0fT10aGlzO2lmKHQhPW51bGwpcmV0dXJuIHQ7bGV0IHM9YS5qb2luKFwiXCIpO3JldHVybiBtLmxlbmd0aD4wJiYoKGEubGVuZ3RoPjB8fG1bMF0udHlwZT09PWUuVHlwZS5DT01NRU5UKSYmKHMrPWAtLS1cbmApLHMrPW0uam9pbihcIlwiKSksc1tzLmxlbmd0aC0xXSE9PWBcbmAmJihzKz1gXG5gKSxzfX0sUz1jbGFzcyBleHRlbmRzIGUuTm9kZXtwYXJzZShtLGEpe3RoaXMuY29udGV4dD1tO2xldHtzcmM6dH09bSxzPWUuTm9kZS5lbmRPZklkZW50aWZpZXIodCxhKzEpO3JldHVybiB0aGlzLnZhbHVlUmFuZ2U9bmV3IGUuUmFuZ2UoYSsxLHMpLHM9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZSh0LHMpLHM9dGhpcy5wYXJzZUNvbW1lbnQocyksc319LE09e0NMSVA6XCJDTElQXCIsS0VFUDpcIktFRVBcIixTVFJJUDpcIlNUUklQXCJ9LFQ9Y2xhc3MgZXh0ZW5kcyBlLk5vZGV7Y29uc3RydWN0b3IobSxhKXtzdXBlcihtLGEpLHRoaXMuYmxvY2tJbmRlbnQ9bnVsbCx0aGlzLmNob21waW5nPU0uQ0xJUCx0aGlzLmhlYWRlcj1udWxsfWdldCBpbmNsdWRlc1RyYWlsaW5nTGluZXMoKXtyZXR1cm4gdGhpcy5jaG9tcGluZz09PU0uS0VFUH1nZXQgc3RyVmFsdWUoKXtpZighdGhpcy52YWx1ZVJhbmdlfHwhdGhpcy5jb250ZXh0KXJldHVybiBudWxsO2xldHtzdGFydDptLGVuZDphfT10aGlzLnZhbHVlUmFuZ2Use2luZGVudDp0LHNyYzpzfT10aGlzLmNvbnRleHQ7aWYodGhpcy52YWx1ZVJhbmdlLmlzRW1wdHkoKSlyZXR1cm5cIlwiO2xldCBpPW51bGwsZj1zW2EtMV07Zm9yKDtmPT09YFxuYHx8Zj09PVwiXHRcInx8Zj09PVwiIFwiOyl7aWYoYS09MSxhPD1tKXtpZih0aGlzLmNob21waW5nPT09TS5LRUVQKWJyZWFrO3JldHVyblwiXCJ9Zj09PWBcbmAmJihpPWEpLGY9c1thLTFdfWxldCBnPWErMTtpJiYodGhpcy5jaG9tcGluZz09PU0uS0VFUD8oZz1pLGE9dGhpcy52YWx1ZVJhbmdlLmVuZCk6YT1pKTtsZXQgdT10K3RoaXMuYmxvY2tJbmRlbnQscD10aGlzLnR5cGU9PT1lLlR5cGUuQkxPQ0tfRk9MREVELEw9ITAsaz1cIlwiLEI9XCJcIiwkPSExO2ZvcihsZXQgUT1tO1E8YTsrK1Epe2ZvcihsZXQgaWU9MDtpZTx1JiZzW1FdPT09XCIgXCI7KytpZSlRKz0xO2xldCB6PXNbUV07aWYoej09PWBcbmApQj09PWBcbmA/ays9YFxuYDpCPWBcbmA7ZWxzZXtsZXQgaWU9ZS5Ob2RlLmVuZE9mTGluZShzLFEpLHVlPXMuc2xpY2UoUSxpZSk7UT1pZSxwJiYoej09PVwiIFwifHx6PT09XCJcdFwiKSYmUTxnPyhCPT09XCIgXCI/Qj1gXG5gOiEkJiYhTCYmQj09PWBcbmAmJihCPWBcblxuYCksays9Qit1ZSxCPWllPGEmJnNbaWVdfHxcIlwiLCQ9ITApOihrKz1CK3VlLEI9cCYmUTxnP1wiIFwiOmBcbmAsJD0hMSksTCYmdWUhPT1cIlwiJiYoTD0hMSl9fXJldHVybiB0aGlzLmNob21waW5nPT09TS5TVFJJUD9rOmsrYFxuYH1wYXJzZUJsb2NrSGVhZGVyKG0pe2xldHtzcmM6YX09dGhpcy5jb250ZXh0LHQ9bSsxLHM9XCJcIjtmb3IoOzspe2xldCBpPWFbdF07c3dpdGNoKGkpe2Nhc2VcIi1cIjp0aGlzLmNob21waW5nPU0uU1RSSVA7YnJlYWs7Y2FzZVwiK1wiOnRoaXMuY2hvbXBpbmc9TS5LRUVQO2JyZWFrO2Nhc2VcIjBcIjpjYXNlXCIxXCI6Y2FzZVwiMlwiOmNhc2VcIjNcIjpjYXNlXCI0XCI6Y2FzZVwiNVwiOmNhc2VcIjZcIjpjYXNlXCI3XCI6Y2FzZVwiOFwiOmNhc2VcIjlcIjpzKz1pO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMuYmxvY2tJbmRlbnQ9TnVtYmVyKHMpfHxudWxsLHRoaXMuaGVhZGVyPW5ldyBlLlJhbmdlKG0sdCksdH10Kz0xfX1wYXJzZUJsb2NrVmFsdWUobSl7bGV0e2luZGVudDphLHNyYzp0fT10aGlzLmNvbnRleHQscz0hIXRoaXMuYmxvY2tJbmRlbnQsaT1tLGY9bSxnPTE7Zm9yKGxldCB1PXRbaV07dT09PWBcbmAmJihpKz0xLCFlLk5vZGUuYXREb2N1bWVudEJvdW5kYXJ5KHQsaSkpO3U9dFtpXSl7bGV0IHA9ZS5Ob2RlLmVuZE9mQmxvY2tJbmRlbnQodCxhLGkpO2lmKHA9PT1udWxsKWJyZWFrO2xldCBMPXRbcF0saz1wLShpK2EpO2lmKHRoaXMuYmxvY2tJbmRlbnQpe2lmKEwmJkwhPT1gXG5gJiZrPHRoaXMuYmxvY2tJbmRlbnQpe2lmKHRbcF09PT1cIiNcIilicmVhaztpZighdGhpcy5lcnJvcil7bGV0IEI9cz9cImV4cGxpY2l0IGluZGVudGF0aW9uIGluZGljYXRvclwiOlwiZmlyc3QgbGluZVwiLCQ9XCJCbG9jayBzY2FsYXJzIG11c3Qgbm90IGJlIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGVpciBcIi5jb25jYXQoQik7dGhpcy5lcnJvcj1uZXcgZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLCQpfX19ZWxzZSBpZih0W3BdIT09YFxuYCl7aWYoazxnKXtsZXQgQj1cIkJsb2NrIHNjYWxhcnMgd2l0aCBtb3JlLWluZGVudGVkIGxlYWRpbmcgZW1wdHkgbGluZXMgbXVzdCB1c2UgYW4gZXhwbGljaXQgaW5kZW50YXRpb24gaW5kaWNhdG9yXCI7dGhpcy5lcnJvcj1uZXcgZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLEIpfXRoaXMuYmxvY2tJbmRlbnQ9a31lbHNlIGs+ZyYmKGc9ayk7dFtwXT09PWBcbmA/aT1wOmk9Zj1lLk5vZGUuZW5kT2ZMaW5lKHQscCl9cmV0dXJuIHRoaXMuY2hvbXBpbmchPT1NLktFRVAmJihpPXRbZl0/ZisxOmYpLHRoaXMudmFsdWVSYW5nZT1uZXcgZS5SYW5nZShtKzEsaSksaX1wYXJzZShtLGEpe3RoaXMuY29udGV4dD1tO2xldHtzcmM6dH09bSxzPXRoaXMucGFyc2VCbG9ja0hlYWRlcihhKTtyZXR1cm4gcz1lLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHQscykscz10aGlzLnBhcnNlQ29tbWVudChzKSxzPXRoaXMucGFyc2VCbG9ja1ZhbHVlKHMpLHN9c2V0T3JpZ1JhbmdlcyhtLGEpe3JldHVybiBhPXN1cGVyLnNldE9yaWdSYW5nZXMobSxhKSx0aGlzLmhlYWRlcj90aGlzLmhlYWRlci5zZXRPcmlnUmFuZ2UobSxhKTphfX0sUD1jbGFzcyBleHRlbmRzIGUuTm9kZXtjb25zdHJ1Y3RvcihtLGEpe3N1cGVyKG0sYSksdGhpcy5pdGVtcz1udWxsfXByZXZOb2RlSXNKc29uTGlrZSgpe2xldCBtPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp0aGlzLml0ZW1zLmxlbmd0aCxhPXRoaXMuaXRlbXNbbS0xXTtyZXR1cm4hIWEmJihhLmpzb25MaWtlfHxhLnR5cGU9PT1lLlR5cGUuQ09NTUVOVCYmdGhpcy5wcmV2Tm9kZUlzSnNvbkxpa2UobS0xKSl9cGFyc2UobSxhKXt0aGlzLmNvbnRleHQ9bTtsZXR7cGFyc2VOb2RlOnQsc3JjOnN9PW0se2luZGVudDppLGxpbmVTdGFydDpmfT1tLGc9c1thXTt0aGlzLml0ZW1zPVt7Y2hhcjpnLG9mZnNldDphfV07bGV0IHU9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzLGErMSk7Zm9yKGc9c1t1XTtnJiZnIT09XCJdXCImJmchPT1cIn1cIjspe3N3aXRjaChnKXtjYXNlYFxuYDp7Zj11KzE7bGV0IHA9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzLGYpO2lmKHNbcF09PT1gXG5gKXtsZXQgTD1uZXcgbjtmPUwucGFyc2Uoe3NyYzpzfSxmKSx0aGlzLml0ZW1zLnB1c2goTCl9aWYodT1lLk5vZGUuZW5kT2ZJbmRlbnQocyxmKSx1PD1mK2kmJihnPXNbdV0sdTxmK2l8fGchPT1cIl1cIiYmZyE9PVwifVwiKSl7bGV0IEw9XCJJbnN1ZmZpY2llbnQgaW5kZW50YXRpb24gaW4gZmxvdyBjb2xsZWN0aW9uXCI7dGhpcy5lcnJvcj1uZXcgZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLEwpfX1icmVhaztjYXNlXCIsXCI6dGhpcy5pdGVtcy5wdXNoKHtjaGFyOmcsb2Zmc2V0OnV9KSx1Kz0xO2JyZWFrO2Nhc2VcIiNcIjp7bGV0IHA9bmV3IGg7dT1wLnBhcnNlKHtzcmM6c30sdSksdGhpcy5pdGVtcy5wdXNoKHApfWJyZWFrO2Nhc2VcIj9cIjpjYXNlXCI6XCI6e2xldCBwPXNbdSsxXTtpZihwPT09YFxuYHx8cD09PVwiXHRcInx8cD09PVwiIFwifHxwPT09XCIsXCJ8fGc9PT1cIjpcIiYmdGhpcy5wcmV2Tm9kZUlzSnNvbkxpa2UoKSl7dGhpcy5pdGVtcy5wdXNoKHtjaGFyOmcsb2Zmc2V0OnV9KSx1Kz0xO2JyZWFrfX1kZWZhdWx0OntsZXQgcD10KHthdExpbmVTdGFydDohMSxpbkNvbGxlY3Rpb246ITEsaW5GbG93OiEwLGluZGVudDotMSxsaW5lU3RhcnQ6ZixwYXJlbnQ6dGhpc30sdSk7aWYoIXApcmV0dXJuIHRoaXMudmFsdWVSYW5nZT1uZXcgZS5SYW5nZShhLHUpLHU7dGhpcy5pdGVtcy5wdXNoKHApLHU9ZS5Ob2RlLm5vcm1hbGl6ZU9mZnNldChzLHAucmFuZ2UuZW5kKX19dT1lLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHMsdSksZz1zW3VdfXJldHVybiB0aGlzLnZhbHVlUmFuZ2U9bmV3IGUuUmFuZ2UoYSx1KzEpLGcmJih0aGlzLml0ZW1zLnB1c2goe2NoYXI6ZyxvZmZzZXQ6dX0pLHU9ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzLHUrMSksdT10aGlzLnBhcnNlQ29tbWVudCh1KSksdX1zZXRPcmlnUmFuZ2VzKG0sYSl7cmV0dXJuIGE9c3VwZXIuc2V0T3JpZ1JhbmdlcyhtLGEpLHRoaXMuaXRlbXMuZm9yRWFjaCh0PT57aWYodCBpbnN0YW5jZW9mIGUuTm9kZSlhPXQuc2V0T3JpZ1JhbmdlcyhtLGEpO2Vsc2UgaWYobS5sZW5ndGg9PT0wKXQub3JpZ09mZnNldD10Lm9mZnNldDtlbHNle2xldCBzPWE7Zm9yKDtzPG0ubGVuZ3RoJiYhKG1bc10+dC5vZmZzZXQpOykrK3M7dC5vcmlnT2Zmc2V0PXQub2Zmc2V0K3MsYT1zfX0pLGF9dG9TdHJpbmcoKXtsZXR7Y29udGV4dDp7c3JjOm19LGl0ZW1zOmEscmFuZ2U6dCx2YWx1ZTpzfT10aGlzO2lmKHMhPW51bGwpcmV0dXJuIHM7bGV0IGk9YS5maWx0ZXIodT0+dSBpbnN0YW5jZW9mIGUuTm9kZSksZj1cIlwiLGc9dC5zdGFydDtyZXR1cm4gaS5mb3JFYWNoKHU9PntsZXQgcD1tLnNsaWNlKGcsdS5yYW5nZS5zdGFydCk7Zz11LnJhbmdlLmVuZCxmKz1wK1N0cmluZyh1KSxmW2YubGVuZ3RoLTFdPT09YFxuYCYmbVtnLTFdIT09YFxuYCYmbVtnXT09PWBcbmAmJihnKz0xKX0pLGYrPW0uc2xpY2UoZyx0LmVuZCksZS5Ob2RlLmFkZFN0cmluZ1Rlcm1pbmF0b3IobSx0LmVuZCxmKX19LEM9Y2xhc3MgZXh0ZW5kcyBlLk5vZGV7c3RhdGljIGVuZE9mUXVvdGUobSxhKXtsZXQgdD1tW2FdO2Zvcig7dCYmdCE9PSdcIic7KWErPXQ9PT1cIlxcXFxcIj8yOjEsdD1tW2FdO3JldHVybiBhKzF9Z2V0IHN0clZhbHVlKCl7aWYoIXRoaXMudmFsdWVSYW5nZXx8IXRoaXMuY29udGV4dClyZXR1cm4gbnVsbDtsZXQgbT1bXSx7c3RhcnQ6YSxlbmQ6dH09dGhpcy52YWx1ZVJhbmdlLHtpbmRlbnQ6cyxzcmM6aX09dGhpcy5jb250ZXh0O2lbdC0xXSE9PSdcIicmJm0ucHVzaChuZXcgZS5ZQU1MU3ludGF4RXJyb3IodGhpcywnTWlzc2luZyBjbG9zaW5nIFwicXVvdGUnKSk7bGV0IGY9XCJcIjtmb3IobGV0IGc9YSsxO2c8dC0xOysrZyl7bGV0IHU9aVtnXTtpZih1PT09YFxuYCl7ZS5Ob2RlLmF0RG9jdW1lbnRCb3VuZGFyeShpLGcrMSkmJm0ucHVzaChuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLFwiRG9jdW1lbnQgYm91bmRhcnkgaW5kaWNhdG9ycyBhcmUgbm90IGFsbG93ZWQgd2l0aGluIHN0cmluZyB2YWx1ZXNcIikpO2xldHtmb2xkOnAsb2Zmc2V0OkwsZXJyb3I6a309ZS5Ob2RlLmZvbGROZXdsaW5lKGksZyxzKTtmKz1wLGc9TCxrJiZtLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IodGhpcyxcIk11bHRpLWxpbmUgZG91YmxlLXF1b3RlZCBzdHJpbmcgbmVlZHMgdG8gYmUgc3VmZmljaWVudGx5IGluZGVudGVkXCIpKX1lbHNlIGlmKHU9PT1cIlxcXFxcIilzd2l0Y2goZys9MSxpW2ddKXtjYXNlXCIwXCI6Zis9XCJcXDBcIjticmVhaztjYXNlXCJhXCI6Zis9XCJcXHgwN1wiO2JyZWFrO2Nhc2VcImJcIjpmKz1cIlxcYlwiO2JyZWFrO2Nhc2VcImVcIjpmKz1cIlxceDFCXCI7YnJlYWs7Y2FzZVwiZlwiOmYrPVwiXFxmXCI7YnJlYWs7Y2FzZVwiblwiOmYrPWBcbmA7YnJlYWs7Y2FzZVwiclwiOmYrPVwiXFxyXCI7YnJlYWs7Y2FzZVwidFwiOmYrPVwiXHRcIjticmVhaztjYXNlXCJ2XCI6Zis9XCJcXHZcIjticmVhaztjYXNlXCJOXCI6Zis9XCJcXHg4NVwiO2JyZWFrO2Nhc2VcIl9cIjpmKz1cIlxceEEwXCI7YnJlYWs7Y2FzZVwiTFwiOmYrPVwiXFx1MjAyOFwiO2JyZWFrO2Nhc2VcIlBcIjpmKz1cIlxcdTIwMjlcIjticmVhaztjYXNlXCIgXCI6Zis9XCIgXCI7YnJlYWs7Y2FzZSdcIic6Zis9J1wiJzticmVhaztjYXNlXCIvXCI6Zis9XCIvXCI7YnJlYWs7Y2FzZVwiXFxcXFwiOmYrPVwiXFxcXFwiO2JyZWFrO2Nhc2VcIlx0XCI6Zis9XCJcdFwiO2JyZWFrO2Nhc2VcInhcIjpmKz10aGlzLnBhcnNlQ2hhckNvZGUoZysxLDIsbSksZys9MjticmVhaztjYXNlXCJ1XCI6Zis9dGhpcy5wYXJzZUNoYXJDb2RlKGcrMSw0LG0pLGcrPTQ7YnJlYWs7Y2FzZVwiVVwiOmYrPXRoaXMucGFyc2VDaGFyQ29kZShnKzEsOCxtKSxnKz04O2JyZWFrO2Nhc2VgXG5gOmZvcig7aVtnKzFdPT09XCIgXCJ8fGlbZysxXT09PVwiXHRcIjspZys9MTticmVhaztkZWZhdWx0Om0ucHVzaChuZXcgZS5ZQU1MU3ludGF4RXJyb3IodGhpcyxcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlIFwiLmNvbmNhdChpLnN1YnN0cihnLTEsMikpKSksZis9XCJcXFxcXCIraVtnXX1lbHNlIGlmKHU9PT1cIiBcInx8dT09PVwiXHRcIil7bGV0IHA9ZyxMPWlbZysxXTtmb3IoO0w9PT1cIiBcInx8TD09PVwiXHRcIjspZys9MSxMPWlbZysxXTtMIT09YFxuYCYmKGYrPWc+cD9pLnNsaWNlKHAsZysxKTp1KX1lbHNlIGYrPXV9cmV0dXJuIG0ubGVuZ3RoPjA/e2Vycm9yczptLHN0cjpmfTpmfXBhcnNlQ2hhckNvZGUobSxhLHQpe2xldHtzcmM6c309dGhpcy5jb250ZXh0LGk9cy5zdWJzdHIobSxhKSxnPWkubGVuZ3RoPT09YSYmL15bMC05YS1mQS1GXSskLy50ZXN0KGkpP3BhcnNlSW50KGksMTYpOk5hTjtyZXR1cm4gaXNOYU4oZyk/KHQucHVzaChuZXcgZS5ZQU1MU3ludGF4RXJyb3IodGhpcyxcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlIFwiLmNvbmNhdChzLnN1YnN0cihtLTIsYSsyKSkpKSxzLnN1YnN0cihtLTIsYSsyKSk6U3RyaW5nLmZyb21Db2RlUG9pbnQoZyl9cGFyc2UobSxhKXt0aGlzLmNvbnRleHQ9bTtsZXR7c3JjOnR9PW0scz1DLmVuZE9mUXVvdGUodCxhKzEpO3JldHVybiB0aGlzLnZhbHVlUmFuZ2U9bmV3IGUuUmFuZ2UoYSxzKSxzPWUuTm9kZS5lbmRPZldoaXRlU3BhY2UodCxzKSxzPXRoaXMucGFyc2VDb21tZW50KHMpLHN9fSxxPWNsYXNzIGV4dGVuZHMgZS5Ob2Rle3N0YXRpYyBlbmRPZlF1b3RlKG0sYSl7bGV0IHQ9bVthXTtmb3IoO3Q7KWlmKHQ9PT1cIidcIil7aWYobVthKzFdIT09XCInXCIpYnJlYWs7dD1tW2ErPTJdfWVsc2UgdD1tW2ErPTFdO3JldHVybiBhKzF9Z2V0IHN0clZhbHVlKCl7aWYoIXRoaXMudmFsdWVSYW5nZXx8IXRoaXMuY29udGV4dClyZXR1cm4gbnVsbDtsZXQgbT1bXSx7c3RhcnQ6YSxlbmQ6dH09dGhpcy52YWx1ZVJhbmdlLHtpbmRlbnQ6cyxzcmM6aX09dGhpcy5jb250ZXh0O2lbdC0xXSE9PVwiJ1wiJiZtLnB1c2gobmV3IGUuWUFNTFN5bnRheEVycm9yKHRoaXMsXCJNaXNzaW5nIGNsb3NpbmcgJ3F1b3RlXCIpKTtsZXQgZj1cIlwiO2ZvcihsZXQgZz1hKzE7Zzx0LTE7KytnKXtsZXQgdT1pW2ddO2lmKHU9PT1gXG5gKXtlLk5vZGUuYXREb2N1bWVudEJvdW5kYXJ5KGksZysxKSYmbS5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKHRoaXMsXCJEb2N1bWVudCBib3VuZGFyeSBpbmRpY2F0b3JzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gc3RyaW5nIHZhbHVlc1wiKSk7bGV0e2ZvbGQ6cCxvZmZzZXQ6TCxlcnJvcjprfT1lLk5vZGUuZm9sZE5ld2xpbmUoaSxnLHMpO2YrPXAsZz1MLGsmJm0ucHVzaChuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcih0aGlzLFwiTXVsdGktbGluZSBzaW5nbGUtcXVvdGVkIHN0cmluZyBuZWVkcyB0byBiZSBzdWZmaWNpZW50bHkgaW5kZW50ZWRcIikpfWVsc2UgaWYodT09PVwiJ1wiKWYrPXUsZys9MSxpW2ddIT09XCInXCImJm0ucHVzaChuZXcgZS5ZQU1MU3ludGF4RXJyb3IodGhpcyxcIlVuZXNjYXBlZCBzaW5nbGUgcXVvdGU/IFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uXCIpKTtlbHNlIGlmKHU9PT1cIiBcInx8dT09PVwiXHRcIil7bGV0IHA9ZyxMPWlbZysxXTtmb3IoO0w9PT1cIiBcInx8TD09PVwiXHRcIjspZys9MSxMPWlbZysxXTtMIT09YFxuYCYmKGYrPWc+cD9pLnNsaWNlKHAsZysxKTp1KX1lbHNlIGYrPXV9cmV0dXJuIG0ubGVuZ3RoPjA/e2Vycm9yczptLHN0cjpmfTpmfXBhcnNlKG0sYSl7dGhpcy5jb250ZXh0PW07bGV0e3NyYzp0fT1tLHM9cS5lbmRPZlF1b3RlKHQsYSsxKTtyZXR1cm4gdGhpcy52YWx1ZVJhbmdlPW5ldyBlLlJhbmdlKGEscykscz1lLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHQscykscz10aGlzLnBhcnNlQ29tbWVudChzKSxzfX07ZnVuY3Rpb24gUihtLGEpe3N3aXRjaChtKXtjYXNlIGUuVHlwZS5BTElBUzpyZXR1cm4gbmV3IFMobSxhKTtjYXNlIGUuVHlwZS5CTE9DS19GT0xERUQ6Y2FzZSBlLlR5cGUuQkxPQ0tfTElURVJBTDpyZXR1cm4gbmV3IFQobSxhKTtjYXNlIGUuVHlwZS5GTE9XX01BUDpjYXNlIGUuVHlwZS5GTE9XX1NFUTpyZXR1cm4gbmV3IFAobSxhKTtjYXNlIGUuVHlwZS5NQVBfS0VZOmNhc2UgZS5UeXBlLk1BUF9WQUxVRTpjYXNlIGUuVHlwZS5TRVFfSVRFTTpyZXR1cm4gbmV3IGMobSxhKTtjYXNlIGUuVHlwZS5DT01NRU5UOmNhc2UgZS5UeXBlLlBMQUlOOnJldHVybiBuZXcgZS5QbGFpblZhbHVlKG0sYSk7Y2FzZSBlLlR5cGUuUVVPVEVfRE9VQkxFOnJldHVybiBuZXcgQyhtLGEpO2Nhc2UgZS5UeXBlLlFVT1RFX1NJTkdMRTpyZXR1cm4gbmV3IHEobSxhKTtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgaj1jbGFzc3tzdGF0aWMgcGFyc2VUeXBlKG0sYSx0KXtzd2l0Y2gobVthXSl7Y2FzZVwiKlwiOnJldHVybiBlLlR5cGUuQUxJQVM7Y2FzZVwiPlwiOnJldHVybiBlLlR5cGUuQkxPQ0tfRk9MREVEO2Nhc2VcInxcIjpyZXR1cm4gZS5UeXBlLkJMT0NLX0xJVEVSQUw7Y2FzZVwie1wiOnJldHVybiBlLlR5cGUuRkxPV19NQVA7Y2FzZVwiW1wiOnJldHVybiBlLlR5cGUuRkxPV19TRVE7Y2FzZVwiP1wiOnJldHVybiF0JiZlLk5vZGUuYXRCbGFuayhtLGErMSwhMCk/ZS5UeXBlLk1BUF9LRVk6ZS5UeXBlLlBMQUlOO2Nhc2VcIjpcIjpyZXR1cm4hdCYmZS5Ob2RlLmF0QmxhbmsobSxhKzEsITApP2UuVHlwZS5NQVBfVkFMVUU6ZS5UeXBlLlBMQUlOO2Nhc2VcIi1cIjpyZXR1cm4hdCYmZS5Ob2RlLmF0QmxhbmsobSxhKzEsITApP2UuVHlwZS5TRVFfSVRFTTplLlR5cGUuUExBSU47Y2FzZSdcIic6cmV0dXJuIGUuVHlwZS5RVU9URV9ET1VCTEU7Y2FzZVwiJ1wiOnJldHVybiBlLlR5cGUuUVVPVEVfU0lOR0xFO2RlZmF1bHQ6cmV0dXJuIGUuVHlwZS5QTEFJTn19Y29uc3RydWN0b3IoKXtsZXQgbT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30se2F0TGluZVN0YXJ0OmEsaW5Db2xsZWN0aW9uOnQsaW5GbG93OnMsaW5kZW50OmksbGluZVN0YXJ0OmYscGFyZW50Omd9PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtlLl9kZWZpbmVQcm9wZXJ0eSh0aGlzLFwicGFyc2VOb2RlXCIsKHUscCk9PntpZihlLk5vZGUuYXREb2N1bWVudEJvdW5kYXJ5KHRoaXMuc3JjLHApKXJldHVybiBudWxsO2xldCBMPW5ldyBqKHRoaXMsdSkse3Byb3BzOmssdHlwZTpCLHZhbHVlU3RhcnQ6JH09TC5wYXJzZVByb3BzKHApLFE9UihCLGspLHo9US5wYXJzZShMLCQpO2lmKFEucmFuZ2U9bmV3IGUuUmFuZ2UocCx6KSx6PD1wJiYoUS5lcnJvcj1uZXcgRXJyb3IoXCJOb2RlI3BhcnNlIGNvbnN1bWVkIG5vIGNoYXJhY3RlcnNcIiksUS5lcnJvci5wYXJzZUVuZD16LFEuZXJyb3Iuc291cmNlPVEsUS5yYW5nZS5lbmQ9cCsxKSxMLm5vZGVTdGFydHNDb2xsZWN0aW9uKFEpKXshUS5lcnJvciYmIUwuYXRMaW5lU3RhcnQmJkwucGFyZW50LnR5cGU9PT1lLlR5cGUuRE9DVU1FTlQmJihRLmVycm9yPW5ldyBlLllBTUxTeW50YXhFcnJvcihRLFwiQmxvY2sgY29sbGVjdGlvbiBtdXN0IG5vdCBoYXZlIHByZWNlZGluZyBjb250ZW50IGhlcmUgKGUuZy4gZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yKVwiKSk7bGV0IGllPW5ldyB5KFEpO3JldHVybiB6PWllLnBhcnNlKG5ldyBqKEwpLHopLGllLnJhbmdlPW5ldyBlLlJhbmdlKHAseiksaWV9cmV0dXJuIFF9KSx0aGlzLmF0TGluZVN0YXJ0PWEhPW51bGw/YTptLmF0TGluZVN0YXJ0fHwhMSx0aGlzLmluQ29sbGVjdGlvbj10IT1udWxsP3Q6bS5pbkNvbGxlY3Rpb258fCExLHRoaXMuaW5GbG93PXMhPW51bGw/czptLmluRmxvd3x8ITEsdGhpcy5pbmRlbnQ9aSE9bnVsbD9pOm0uaW5kZW50LHRoaXMubGluZVN0YXJ0PWYhPW51bGw/ZjptLmxpbmVTdGFydCx0aGlzLnBhcmVudD1nIT1udWxsP2c6bS5wYXJlbnR8fHt9LHRoaXMucm9vdD1tLnJvb3QsdGhpcy5zcmM9bS5zcmN9bm9kZVN0YXJ0c0NvbGxlY3Rpb24obSl7bGV0e2luQ29sbGVjdGlvbjphLGluRmxvdzp0LHNyYzpzfT10aGlzO2lmKGF8fHQpcmV0dXJuITE7aWYobSBpbnN0YW5jZW9mIGMpcmV0dXJuITA7bGV0IGk9bS5yYW5nZS5lbmQ7cmV0dXJuIHNbaV09PT1gXG5gfHxzW2ktMV09PT1gXG5gPyExOihpPWUuTm9kZS5lbmRPZldoaXRlU3BhY2UocyxpKSxzW2ldPT09XCI6XCIpfXBhcnNlUHJvcHMobSl7bGV0e2luRmxvdzphLHBhcmVudDp0LHNyYzpzfT10aGlzLGk9W10sZj0hMTttPXRoaXMuYXRMaW5lU3RhcnQ/ZS5Ob2RlLmVuZE9mSW5kZW50KHMsbSk6ZS5Ob2RlLmVuZE9mV2hpdGVTcGFjZShzLG0pO2xldCBnPXNbbV07Zm9yKDtnPT09ZS5DaGFyLkFOQ0hPUnx8Zz09PWUuQ2hhci5DT01NRU5UfHxnPT09ZS5DaGFyLlRBR3x8Zz09PWBcbmA7KXtpZihnPT09YFxuYCl7bGV0IHA9bSxMO2RvIEw9cCsxLHA9ZS5Ob2RlLmVuZE9mSW5kZW50KHMsTCk7d2hpbGUoc1twXT09PWBcbmApO2xldCBrPXAtKEwrdGhpcy5pbmRlbnQpLEI9dC50eXBlPT09ZS5UeXBlLlNFUV9JVEVNJiZ0LmNvbnRleHQuYXRMaW5lU3RhcnQ7aWYoc1twXSE9PVwiI1wiJiYhZS5Ob2RlLm5leHROb2RlSXNJbmRlbnRlZChzW3BdLGssIUIpKWJyZWFrO3RoaXMuYXRMaW5lU3RhcnQ9ITAsdGhpcy5saW5lU3RhcnQ9TCxmPSExLG09cH1lbHNlIGlmKGc9PT1lLkNoYXIuQ09NTUVOVCl7bGV0IHA9ZS5Ob2RlLmVuZE9mTGluZShzLG0rMSk7aS5wdXNoKG5ldyBlLlJhbmdlKG0scCkpLG09cH1lbHNle2xldCBwPWUuTm9kZS5lbmRPZklkZW50aWZpZXIocyxtKzEpO2c9PT1lLkNoYXIuVEFHJiZzW3BdPT09XCIsXCImJi9eW2EtekEtWjAtOS1dK1xcLlthLXpBLVowLTktXSssXFxkXFxkXFxkXFxkKC1cXGRcXGQpezAsMn1cXC9cXFMvLnRlc3Qocy5zbGljZShtKzEscCsxMykpJiYocD1lLk5vZGUuZW5kT2ZJZGVudGlmaWVyKHMscCs1KSksaS5wdXNoKG5ldyBlLlJhbmdlKG0scCkpLGY9ITAsbT1lLk5vZGUuZW5kT2ZXaGl0ZVNwYWNlKHMscCl9Zz1zW21dfWYmJmc9PT1cIjpcIiYmZS5Ob2RlLmF0QmxhbmsocyxtKzEsITApJiYobS09MSk7bGV0IHU9ai5wYXJzZVR5cGUocyxtLGEpO3JldHVybntwcm9wczppLHR5cGU6dSx2YWx1ZVN0YXJ0Om19fX07ZnVuY3Rpb24gSyhtKXtsZXQgYT1bXTttLmluZGV4T2YoXCJcXHJcIikhPT0tMSYmKG09bS5yZXBsYWNlKC9cXHJcXG4/L2csKGksZik9PihpLmxlbmd0aD4xJiZhLnB1c2goZiksYFxuYCkpKTtsZXQgdD1bXSxzPTA7ZG97bGV0IGk9bmV3IEksZj1uZXcgaih7c3JjOm19KTtzPWkucGFyc2UoZixzKSx0LnB1c2goaSl9d2hpbGUoczxtLmxlbmd0aCk7cmV0dXJuIHQuc2V0T3JpZ1Jhbmdlcz0oKT0+e2lmKGEubGVuZ3RoPT09MClyZXR1cm4hMTtmb3IobGV0IGY9MTtmPGEubGVuZ3RoOysrZilhW2ZdLT1mO2xldCBpPTA7Zm9yKGxldCBmPTA7Zjx0Lmxlbmd0aDsrK2YpaT10W2ZdLnNldE9yaWdSYW5nZXMoYSxpKTtyZXR1cm4gYS5zcGxpY2UoMCxhLmxlbmd0aCksITB9LHQudG9TdHJpbmc9KCk9PnQuam9pbihgLi4uXG5gKSx0fXIucGFyc2U9S319KSxrZT1GKHtcIm5vZGVfbW9kdWxlcy95YW1sL2Rpc3QvcmVzb2x2ZVNlcS1kMDNjYjAzNy5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKTt2YXIgZT1NZSgpO2Z1bmN0aW9uIG4obyxsLF8pe2lmKCFfKXJldHVybiBvO2xldCB2PV8ucmVwbGFjZSgvW1xcc1xcU11eL2dtLFwiJCZcIi5jb25jYXQobCxcIiNcIikpO3JldHVyblwiI1wiLmNvbmNhdCh2LGBcbmApLmNvbmNhdChsKS5jb25jYXQobyl9ZnVuY3Rpb24gYyhvLGwsXyl7cmV0dXJuIF8/Xy5pbmRleE9mKGBcbmApPT09LTE/XCJcIi5jb25jYXQobyxcIiAjXCIpLmNvbmNhdChfKTpcIlwiLmNvbmNhdChvLGBcbmApK18ucmVwbGFjZSgvXi9nbSxcIlwiLmNvbmNhdChsfHxcIlwiLFwiI1wiKSk6b312YXIgaD1jbGFzc3t9O2Z1bmN0aW9uIGQobyxsLF8pe2lmKEFycmF5LmlzQXJyYXkobykpcmV0dXJuIG8ubWFwKCh2LGIpPT5kKHYsU3RyaW5nKGIpLF8pKTtpZihvJiZ0eXBlb2Ygby50b0pTT049PVwiZnVuY3Rpb25cIil7bGV0IHY9XyYmXy5hbmNob3JzJiZfLmFuY2hvcnMuZ2V0KG8pO3YmJihfLm9uQ3JlYXRlPXc9Pnt2LnJlcz13LGRlbGV0ZSBfLm9uQ3JlYXRlfSk7bGV0IGI9by50b0pTT04obCxfKTtyZXR1cm4gdiYmXy5vbkNyZWF0ZSYmXy5vbkNyZWF0ZShiKSxifXJldHVybighX3x8IV8ua2VlcCkmJnR5cGVvZiBvPT1cImJpZ2ludFwiP051bWJlcihvKTpvfXZhciB5PWNsYXNzIGV4dGVuZHMgaHtjb25zdHJ1Y3RvcihvKXtzdXBlcigpLHRoaXMudmFsdWU9b310b0pTT04obyxsKXtyZXR1cm4gbCYmbC5rZWVwP3RoaXMudmFsdWU6ZCh0aGlzLnZhbHVlLG8sbCl9dG9TdHJpbmcoKXtyZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpfX07ZnVuY3Rpb24gRShvLGwsXyl7bGV0IHY9Xztmb3IobGV0IGI9bC5sZW5ndGgtMTtiPj0wOy0tYil7bGV0IHc9bFtiXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHcpJiZ3Pj0wKXtsZXQgQT1bXTtBW3ddPXYsdj1BfWVsc2V7bGV0IEE9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsdyx7dmFsdWU6dix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHY9QX19cmV0dXJuIG8uY3JlYXRlTm9kZSh2LCExKX12YXIgST1vPT5vPT1udWxsfHx0eXBlb2Ygbz09XCJvYmplY3RcIiYmb1tTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmUsUz1jbGFzcyBleHRlbmRzIGh7Y29uc3RydWN0b3Iobyl7c3VwZXIoKSxlLl9kZWZpbmVQcm9wZXJ0eSh0aGlzLFwiaXRlbXNcIixbXSksdGhpcy5zY2hlbWE9b31hZGRJbihvLGwpe2lmKEkobykpdGhpcy5hZGQobCk7ZWxzZXtsZXRbXywuLi52XT1vLGI9dGhpcy5nZXQoXywhMCk7aWYoYiBpbnN0YW5jZW9mIFMpYi5hZGRJbih2LGwpO2Vsc2UgaWYoYj09PXZvaWQgMCYmdGhpcy5zY2hlbWEpdGhpcy5zZXQoXyxFKHRoaXMuc2NoZW1hLHYsbCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgWUFNTCBjb2xsZWN0aW9uIGF0IFwiLmNvbmNhdChfLFwiLiBSZW1haW5pbmcgcGF0aDogXCIpLmNvbmNhdCh2KSl9fWRlbGV0ZUluKG8pe2xldFtsLC4uLl9dPW87aWYoXy5sZW5ndGg9PT0wKXJldHVybiB0aGlzLmRlbGV0ZShsKTtsZXQgdj10aGlzLmdldChsLCEwKTtpZih2IGluc3RhbmNlb2YgUylyZXR1cm4gdi5kZWxldGVJbihfKTt0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgXCIuY29uY2F0KGwsXCIuIFJlbWFpbmluZyBwYXRoOiBcIikuY29uY2F0KF8pKX1nZXRJbihvLGwpe2xldFtfLC4uLnZdPW8sYj10aGlzLmdldChfLCEwKTtyZXR1cm4gdi5sZW5ndGg9PT0wPyFsJiZiIGluc3RhbmNlb2YgeT9iLnZhbHVlOmI6YiBpbnN0YW5jZW9mIFM/Yi5nZXRJbih2LGwpOnZvaWQgMH1oYXNBbGxOdWxsVmFsdWVzKCl7cmV0dXJuIHRoaXMuaXRlbXMuZXZlcnkobz0+e2lmKCFvfHxvLnR5cGUhPT1cIlBBSVJcIilyZXR1cm4hMTtsZXQgbD1vLnZhbHVlO3JldHVybiBsPT1udWxsfHxsIGluc3RhbmNlb2YgeSYmbC52YWx1ZT09bnVsbCYmIWwuY29tbWVudEJlZm9yZSYmIWwuY29tbWVudCYmIWwudGFnfSl9aGFzSW4obyl7bGV0W2wsLi4uX109bztpZihfLmxlbmd0aD09PTApcmV0dXJuIHRoaXMuaGFzKGwpO2xldCB2PXRoaXMuZ2V0KGwsITApO3JldHVybiB2IGluc3RhbmNlb2YgUz92Lmhhc0luKF8pOiExfXNldEluKG8sbCl7bGV0W18sLi4udl09bztpZih2Lmxlbmd0aD09PTApdGhpcy5zZXQoXyxsKTtlbHNle2xldCBiPXRoaXMuZ2V0KF8sITApO2lmKGIgaW5zdGFuY2VvZiBTKWIuc2V0SW4odixsKTtlbHNlIGlmKGI9PT12b2lkIDAmJnRoaXMuc2NoZW1hKXRoaXMuc2V0KF8sRSh0aGlzLnNjaGVtYSx2LGwpKTtlbHNlIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFlBTUwgY29sbGVjdGlvbiBhdCBcIi5jb25jYXQoXyxcIi4gUmVtYWluaW5nIHBhdGg6IFwiKS5jb25jYXQodikpfX10b0pTT04oKXtyZXR1cm4gbnVsbH10b1N0cmluZyhvLGwsXyx2KXtsZXR7YmxvY2tJdGVtOmIsZmxvd0NoYXJzOncsaXNNYXA6QSxpdGVtSW5kZW50Ok59PWwse2luZGVudDpZLGluZGVudFN0ZXA6VyxzdHJpbmdpZnk6VX09byxIPXRoaXMudHlwZT09PWUuVHlwZS5GTE9XX01BUHx8dGhpcy50eXBlPT09ZS5UeXBlLkZMT1dfU0VRfHxvLmluRmxvdztIJiYoTis9Vyk7bGV0IG9lPUEmJnRoaXMuaGFzQWxsTnVsbFZhbHVlcygpO289T2JqZWN0LmFzc2lnbih7fSxvLHthbGxOdWxsVmFsdWVzOm9lLGluZGVudDpOLGluRmxvdzpILHR5cGU6bnVsbH0pO2xldCBsZT0hMSxaPSExLGVlPXRoaXMuaXRlbXMucmVkdWNlKChkZSxyZSxoZSk9PntsZXQgY2U7cmUmJighbGUmJnJlLnNwYWNlQmVmb3JlJiZkZS5wdXNoKHt0eXBlOlwiY29tbWVudFwiLHN0cjpcIlwifSkscmUuY29tbWVudEJlZm9yZSYmcmUuY29tbWVudEJlZm9yZS5tYXRjaCgvXi4qJC9nbSkuZm9yRWFjaChJZT0+e2RlLnB1c2goe3R5cGU6XCJjb21tZW50XCIsc3RyOlwiI1wiLmNvbmNhdChJZSl9KX0pLHJlLmNvbW1lbnQmJihjZT1yZS5jb21tZW50KSxIJiYoIWxlJiZyZS5zcGFjZUJlZm9yZXx8cmUuY29tbWVudEJlZm9yZXx8cmUuY29tbWVudHx8cmUua2V5JiYocmUua2V5LmNvbW1lbnRCZWZvcmV8fHJlLmtleS5jb21tZW50KXx8cmUudmFsdWUmJihyZS52YWx1ZS5jb21tZW50QmVmb3JlfHxyZS52YWx1ZS5jb21tZW50KSkmJihaPSEwKSksbGU9ITE7bGV0IGZlPVUocmUsbywoKT0+Y2U9bnVsbCwoKT0+bGU9ITApO3JldHVybiBIJiYhWiYmZmUuaW5jbHVkZXMoYFxuYCkmJihaPSEwKSxIJiZoZTx0aGlzLml0ZW1zLmxlbmd0aC0xJiYoZmUrPVwiLFwiKSxmZT1jKGZlLE4sY2UpLGxlJiYoY2V8fEgpJiYobGU9ITEpLGRlLnB1c2goe3R5cGU6XCJpdGVtXCIsc3RyOmZlfSksZGV9LFtdKSxYO2lmKGVlLmxlbmd0aD09PTApWD13LnN0YXJ0K3cuZW5kO2Vsc2UgaWYoSCl7bGV0e3N0YXJ0OmRlLGVuZDpyZX09dyxoZT1lZS5tYXAoY2U9PmNlLnN0cik7aWYoWnx8aGUucmVkdWNlKChjZSxmZSk9PmNlK2ZlLmxlbmd0aCsyLDIpPlMubWF4Rmxvd1N0cmluZ1NpbmdsZUxpbmVMZW5ndGgpe1g9ZGU7Zm9yKGxldCBjZSBvZiBoZSlYKz1jZT9gXG5gLmNvbmNhdChXKS5jb25jYXQoWSkuY29uY2F0KGNlKTpgXG5gO1grPWBcbmAuY29uY2F0KFkpLmNvbmNhdChyZSl9ZWxzZSBYPVwiXCIuY29uY2F0KGRlLFwiIFwiKS5jb25jYXQoaGUuam9pbihcIiBcIiksXCIgXCIpLmNvbmNhdChyZSl9ZWxzZXtsZXQgZGU9ZWUubWFwKGIpO1g9ZGUuc2hpZnQoKTtmb3IobGV0IHJlIG9mIGRlKVgrPXJlP2BcbmAuY29uY2F0KFkpLmNvbmNhdChyZSk6YFxuYH1yZXR1cm4gdGhpcy5jb21tZW50PyhYKz1gXG5gK3RoaXMuY29tbWVudC5yZXBsYWNlKC9eL2dtLFwiXCIuY29uY2F0KFksXCIjXCIpKSxfJiZfKCkpOmxlJiZ2JiZ2KCksWH19O2UuX2RlZmluZVByb3BlcnR5KFMsXCJtYXhGbG93U3RyaW5nU2luZ2xlTGluZUxlbmd0aFwiLDYwKTtmdW5jdGlvbiBNKG8pe2xldCBsPW8gaW5zdGFuY2VvZiB5P28udmFsdWU6bztyZXR1cm4gbCYmdHlwZW9mIGw9PVwic3RyaW5nXCImJihsPU51bWJlcihsKSksTnVtYmVyLmlzSW50ZWdlcihsKSYmbD49MD9sOm51bGx9dmFyIFQ9Y2xhc3MgZXh0ZW5kcyBTe2FkZChvKXt0aGlzLml0ZW1zLnB1c2gobyl9ZGVsZXRlKG8pe2xldCBsPU0obyk7cmV0dXJuIHR5cGVvZiBsIT1cIm51bWJlclwiPyExOnRoaXMuaXRlbXMuc3BsaWNlKGwsMSkubGVuZ3RoPjB9Z2V0KG8sbCl7bGV0IF89TShvKTtpZih0eXBlb2YgXyE9XCJudW1iZXJcIilyZXR1cm47bGV0IHY9dGhpcy5pdGVtc1tfXTtyZXR1cm4hbCYmdiBpbnN0YW5jZW9mIHk/di52YWx1ZTp2fWhhcyhvKXtsZXQgbD1NKG8pO3JldHVybiB0eXBlb2YgbD09XCJudW1iZXJcIiYmbDx0aGlzLml0ZW1zLmxlbmd0aH1zZXQobyxsKXtsZXQgXz1NKG8pO2lmKHR5cGVvZiBfIT1cIm51bWJlclwiKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGEgdmFsaWQgaW5kZXgsIG5vdCBcIi5jb25jYXQobyxcIi5cIikpO3RoaXMuaXRlbXNbX109bH10b0pTT04obyxsKXtsZXQgXz1bXTtsJiZsLm9uQ3JlYXRlJiZsLm9uQ3JlYXRlKF8pO2xldCB2PTA7Zm9yKGxldCBiIG9mIHRoaXMuaXRlbXMpXy5wdXNoKGQoYixTdHJpbmcodisrKSxsKSk7cmV0dXJuIF99dG9TdHJpbmcobyxsLF8pe3JldHVybiBvP3N1cGVyLnRvU3RyaW5nKG8se2Jsb2NrSXRlbTp2PT52LnR5cGU9PT1cImNvbW1lbnRcIj92LnN0cjpcIi0gXCIuY29uY2F0KHYuc3RyKSxmbG93Q2hhcnM6e3N0YXJ0OlwiW1wiLGVuZDpcIl1cIn0saXNNYXA6ITEsaXRlbUluZGVudDooby5pbmRlbnR8fFwiXCIpK1wiICBcIn0sbCxfKTpKU09OLnN0cmluZ2lmeSh0aGlzKX19LFA9KG8sbCxfKT0+bD09PW51bGw/XCJcIjp0eXBlb2YgbCE9XCJvYmplY3RcIj9TdHJpbmcobCk6byBpbnN0YW5jZW9mIGgmJl8mJl8uZG9jP28udG9TdHJpbmcoe2FuY2hvcnM6T2JqZWN0LmNyZWF0ZShudWxsKSxkb2M6Xy5kb2MsaW5kZW50OlwiXCIsaW5kZW50U3RlcDpfLmluZGVudFN0ZXAsaW5GbG93OiEwLGluU3RyaW5naWZ5S2V5OiEwLHN0cmluZ2lmeTpfLnN0cmluZ2lmeX0pOkpTT04uc3RyaW5naWZ5KGwpLEM9Y2xhc3MgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKG8pe2xldCBsPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3N1cGVyKCksdGhpcy5rZXk9byx0aGlzLnZhbHVlPWwsdGhpcy50eXBlPUMuVHlwZS5QQUlSfWdldCBjb21tZW50QmVmb3JlKCl7cmV0dXJuIHRoaXMua2V5IGluc3RhbmNlb2YgaD90aGlzLmtleS5jb21tZW50QmVmb3JlOnZvaWQgMH1zZXQgY29tbWVudEJlZm9yZShvKXtpZih0aGlzLmtleT09bnVsbCYmKHRoaXMua2V5PW5ldyB5KG51bGwpKSx0aGlzLmtleSBpbnN0YW5jZW9mIGgpdGhpcy5rZXkuY29tbWVudEJlZm9yZT1vO2Vsc2V7bGV0IGw9XCJQYWlyLmNvbW1lbnRCZWZvcmUgaXMgYW4gYWxpYXMgZm9yIFBhaXIua2V5LmNvbW1lbnRCZWZvcmUuIFRvIHNldCBpdCwgdGhlIGtleSBtdXN0IGJlIGEgTm9kZS5cIjt0aHJvdyBuZXcgRXJyb3IobCl9fWFkZFRvSlNNYXAobyxsKXtsZXQgXz1kKHRoaXMua2V5LFwiXCIsbyk7aWYobCBpbnN0YW5jZW9mIE1hcCl7bGV0IHY9ZCh0aGlzLnZhbHVlLF8sbyk7bC5zZXQoXyx2KX1lbHNlIGlmKGwgaW5zdGFuY2VvZiBTZXQpbC5hZGQoXyk7ZWxzZXtsZXQgdj1QKHRoaXMua2V5LF8sbyksYj1kKHRoaXMudmFsdWUsdixvKTt2IGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsdix7dmFsdWU6Yix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmxbdl09Yn1yZXR1cm4gbH10b0pTT04obyxsKXtsZXQgXz1sJiZsLm1hcEFzTWFwP25ldyBNYXA6e307cmV0dXJuIHRoaXMuYWRkVG9KU01hcChsLF8pfXRvU3RyaW5nKG8sbCxfKXtpZighb3x8IW8uZG9jKXJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtsZXR7aW5kZW50OnYsaW5kZW50U2VxOmIsc2ltcGxlS2V5czp3fT1vLmRvYy5vcHRpb25zLHtrZXk6QSx2YWx1ZTpOfT10aGlzLFk9QSBpbnN0YW5jZW9mIGgmJkEuY29tbWVudDtpZih3KXtpZihZKXRocm93IG5ldyBFcnJvcihcIldpdGggc2ltcGxlIGtleXMsIGtleSBub2RlcyBjYW5ub3QgaGF2ZSBjb21tZW50c1wiKTtpZihBIGluc3RhbmNlb2YgUyl7bGV0IGNlPVwiV2l0aCBzaW1wbGUga2V5cywgY29sbGVjdGlvbiBjYW5ub3QgYmUgdXNlZCBhcyBhIGtleSB2YWx1ZVwiO3Rocm93IG5ldyBFcnJvcihjZSl9fWxldCBXPSF3JiYoIUF8fFl8fChBIGluc3RhbmNlb2YgaD9BIGluc3RhbmNlb2YgU3x8QS50eXBlPT09ZS5UeXBlLkJMT0NLX0ZPTERFRHx8QS50eXBlPT09ZS5UeXBlLkJMT0NLX0xJVEVSQUw6dHlwZW9mIEE9PVwib2JqZWN0XCIpKSx7ZG9jOlUsaW5kZW50OkgsaW5kZW50U3RlcDpvZSxzdHJpbmdpZnk6bGV9PW87bz1PYmplY3QuYXNzaWduKHt9LG8se2ltcGxpY2l0S2V5OiFXLGluZGVudDpIK29lfSk7bGV0IFo9ITEsZWU9bGUoQSxvLCgpPT5ZPW51bGwsKCk9Plo9ITApO2lmKGVlPWMoZWUsby5pbmRlbnQsWSksIVcmJmVlLmxlbmd0aD4xMDI0KXtpZih3KXRocm93IG5ldyBFcnJvcihcIldpdGggc2ltcGxlIGtleXMsIHNpbmdsZSBsaW5lIHNjYWxhciBtdXN0IG5vdCBzcGFuIG1vcmUgdGhhbiAxMDI0IGNoYXJhY3RlcnNcIik7Vz0hMH1pZihvLmFsbE51bGxWYWx1ZXMmJiF3KXJldHVybiB0aGlzLmNvbW1lbnQ/KGVlPWMoZWUsby5pbmRlbnQsdGhpcy5jb21tZW50KSxsJiZsKCkpOlomJiFZJiZfJiZfKCksby5pbkZsb3cmJiFXP2VlOlwiPyBcIi5jb25jYXQoZWUpO2VlPVc/XCI/IFwiLmNvbmNhdChlZSxgXG5gKS5jb25jYXQoSCxcIjpcIik6XCJcIi5jb25jYXQoZWUsXCI6XCIpLHRoaXMuY29tbWVudCYmKGVlPWMoZWUsby5pbmRlbnQsdGhpcy5jb21tZW50KSxsJiZsKCkpO2xldCBYPVwiXCIsZGU9bnVsbDtpZihOIGluc3RhbmNlb2YgaCl7aWYoTi5zcGFjZUJlZm9yZSYmKFg9YFxuYCksTi5jb21tZW50QmVmb3JlKXtsZXQgY2U9Ti5jb21tZW50QmVmb3JlLnJlcGxhY2UoL14vZ20sXCJcIi5jb25jYXQoby5pbmRlbnQsXCIjXCIpKTtYKz1gXG5gLmNvbmNhdChjZSl9ZGU9Ti5jb21tZW50fWVsc2UgTiYmdHlwZW9mIE49PVwib2JqZWN0XCImJihOPVUuc2NoZW1hLmNyZWF0ZU5vZGUoTiwhMCkpO28uaW1wbGljaXRLZXk9ITEsIVcmJiF0aGlzLmNvbW1lbnQmJk4gaW5zdGFuY2VvZiB5JiYoby5pbmRlbnRBdFN0YXJ0PWVlLmxlbmd0aCsxKSxaPSExLCFiJiZ2Pj0yJiYhby5pbkZsb3cmJiFXJiZOIGluc3RhbmNlb2YgVCYmTi50eXBlIT09ZS5UeXBlLkZMT1dfU0VRJiYhTi50YWcmJiFVLmFuY2hvcnMuZ2V0TmFtZShOKSYmKG8uaW5kZW50PW8uaW5kZW50LnN1YnN0cigyKSk7bGV0IHJlPWxlKE4sbywoKT0+ZGU9bnVsbCwoKT0+Wj0hMCksaGU9XCIgXCI7cmV0dXJuIFh8fHRoaXMuY29tbWVudD9oZT1cIlwiLmNvbmNhdChYLGBcbmApLmNvbmNhdChvLmluZGVudCk6IVcmJk4gaW5zdGFuY2VvZiBTPyghKHJlWzBdPT09XCJbXCJ8fHJlWzBdPT09XCJ7XCIpfHxyZS5pbmNsdWRlcyhgXG5gKSkmJihoZT1gXG5gLmNvbmNhdChvLmluZGVudCkpOnJlWzBdPT09YFxuYCYmKGhlPVwiXCIpLFomJiFkZSYmXyYmXygpLGMoZWUraGUrcmUsby5pbmRlbnQsZGUpfX07ZS5fZGVmaW5lUHJvcGVydHkoQyxcIlR5cGVcIix7UEFJUjpcIlBBSVJcIixNRVJHRV9QQUlSOlwiTUVSR0VfUEFJUlwifSk7dmFyIHE9KG8sbCk9PntpZihvIGluc3RhbmNlb2YgUil7bGV0IF89bC5nZXQoby5zb3VyY2UpO3JldHVybiBfLmNvdW50Kl8uYWxpYXNDb3VudH1lbHNlIGlmKG8gaW5zdGFuY2VvZiBTKXtsZXQgXz0wO2ZvcihsZXQgdiBvZiBvLml0ZW1zKXtsZXQgYj1xKHYsbCk7Yj5fJiYoXz1iKX1yZXR1cm4gX31lbHNlIGlmKG8gaW5zdGFuY2VvZiBDKXtsZXQgXz1xKG8ua2V5LGwpLHY9cShvLnZhbHVlLGwpO3JldHVybiBNYXRoLm1heChfLHYpfXJldHVybiAxfSxSPWNsYXNzIGV4dGVuZHMgaHtzdGF0aWMgc3RyaW5naWZ5KG8sbCl7bGV0e3JhbmdlOl8sc291cmNlOnZ9PW8se2FuY2hvcnM6Yixkb2M6dyxpbXBsaWNpdEtleTpBLGluU3RyaW5naWZ5S2V5Ok59PWwsWT1PYmplY3Qua2V5cyhiKS5maW5kKFU9PmJbVV09PT12KTtpZighWSYmTiYmKFk9dy5hbmNob3JzLmdldE5hbWUodil8fHcuYW5jaG9ycy5uZXdOYW1lKCkpLFkpcmV0dXJuXCIqXCIuY29uY2F0KFkpLmNvbmNhdChBP1wiIFwiOlwiXCIpO2xldCBXPXcuYW5jaG9ycy5nZXROYW1lKHYpP1wiQWxpYXMgbm9kZSBtdXN0IGJlIGFmdGVyIHNvdXJjZSBub2RlXCI6XCJTb3VyY2Ugbm9kZSBub3QgZm91bmQgZm9yIGFsaWFzIG5vZGVcIjt0aHJvdyBuZXcgRXJyb3IoXCJcIi5jb25jYXQoVyxcIiBbXCIpLmNvbmNhdChfLFwiXVwiKSl9Y29uc3RydWN0b3Iobyl7c3VwZXIoKSx0aGlzLnNvdXJjZT1vLHRoaXMudHlwZT1lLlR5cGUuQUxJQVN9c2V0IHRhZyhvKXt0aHJvdyBuZXcgRXJyb3IoXCJBbGlhcyBub2RlcyBjYW5ub3QgaGF2ZSB0YWdzXCIpfXRvSlNPTihvLGwpe2lmKCFsKXJldHVybiBkKHRoaXMuc291cmNlLG8sbCk7bGV0e2FuY2hvcnM6XyxtYXhBbGlhc0NvdW50OnZ9PWwsYj1fLmdldCh0aGlzLnNvdXJjZSk7aWYoIWJ8fGIucmVzPT09dm9pZCAwKXtsZXQgdz1cIlRoaXMgc2hvdWxkIG5vdCBoYXBwZW46IEFsaWFzIGFuY2hvciB3YXMgbm90IHJlc29sdmVkP1wiO3Rocm93IHRoaXMuY3N0Tm9kZT9uZXcgZS5ZQU1MUmVmZXJlbmNlRXJyb3IodGhpcy5jc3ROb2RlLHcpOm5ldyBSZWZlcmVuY2VFcnJvcih3KX1pZih2Pj0wJiYoYi5jb3VudCs9MSxiLmFsaWFzQ291bnQ9PT0wJiYoYi5hbGlhc0NvdW50PXEodGhpcy5zb3VyY2UsXykpLGIuY291bnQqYi5hbGlhc0NvdW50PnYpKXtsZXQgdz1cIkV4Y2Vzc2l2ZSBhbGlhcyBjb3VudCBpbmRpY2F0ZXMgYSByZXNvdXJjZSBleGhhdXN0aW9uIGF0dGFja1wiO3Rocm93IHRoaXMuY3N0Tm9kZT9uZXcgZS5ZQU1MUmVmZXJlbmNlRXJyb3IodGhpcy5jc3ROb2RlLHcpOm5ldyBSZWZlcmVuY2VFcnJvcih3KX1yZXR1cm4gYi5yZXN9dG9TdHJpbmcobyl7cmV0dXJuIFIuc3RyaW5naWZ5KHRoaXMsbyl9fTtlLl9kZWZpbmVQcm9wZXJ0eShSLFwiZGVmYXVsdFwiLCEwKTtmdW5jdGlvbiBqKG8sbCl7bGV0IF89bCBpbnN0YW5jZW9mIHk/bC52YWx1ZTpsO2ZvcihsZXQgdiBvZiBvKWlmKHYgaW5zdGFuY2VvZiBDJiYodi5rZXk9PT1sfHx2LmtleT09PV98fHYua2V5JiZ2LmtleS52YWx1ZT09PV8pKXJldHVybiB2fXZhciBLPWNsYXNzIGV4dGVuZHMgU3thZGQobyxsKXtvP28gaW5zdGFuY2VvZiBDfHwobz1uZXcgQyhvLmtleXx8byxvLnZhbHVlKSk6bz1uZXcgQyhvKTtsZXQgXz1qKHRoaXMuaXRlbXMsby5rZXkpLHY9dGhpcy5zY2hlbWEmJnRoaXMuc2NoZW1hLnNvcnRNYXBFbnRyaWVzO2lmKF8paWYobClfLnZhbHVlPW8udmFsdWU7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJLZXkgXCIuY29uY2F0KG8ua2V5LFwiIGFscmVhZHkgc2V0XCIpKTtlbHNlIGlmKHYpe2xldCBiPXRoaXMuaXRlbXMuZmluZEluZGV4KHc9PnYobyx3KTwwKTtiPT09LTE/dGhpcy5pdGVtcy5wdXNoKG8pOnRoaXMuaXRlbXMuc3BsaWNlKGIsMCxvKX1lbHNlIHRoaXMuaXRlbXMucHVzaChvKX1kZWxldGUobyl7bGV0IGw9aih0aGlzLml0ZW1zLG8pO3JldHVybiBsP3RoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihsKSwxKS5sZW5ndGg+MDohMX1nZXQobyxsKXtsZXQgXz1qKHRoaXMuaXRlbXMsbyksdj1fJiZfLnZhbHVlO3JldHVybiFsJiZ2IGluc3RhbmNlb2YgeT92LnZhbHVlOnZ9aGFzKG8pe3JldHVybiEhaih0aGlzLml0ZW1zLG8pfXNldChvLGwpe3RoaXMuYWRkKG5ldyBDKG8sbCksITApfXRvSlNPTihvLGwsXyl7bGV0IHY9Xz9uZXcgXzpsJiZsLm1hcEFzTWFwP25ldyBNYXA6e307bCYmbC5vbkNyZWF0ZSYmbC5vbkNyZWF0ZSh2KTtmb3IobGV0IGIgb2YgdGhpcy5pdGVtcyliLmFkZFRvSlNNYXAobCx2KTtyZXR1cm4gdn10b1N0cmluZyhvLGwsXyl7aWYoIW8pcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO2ZvcihsZXQgdiBvZiB0aGlzLml0ZW1zKWlmKCEodiBpbnN0YW5jZW9mIEMpKXRocm93IG5ldyBFcnJvcihcIk1hcCBpdGVtcyBtdXN0IGFsbCBiZSBwYWlyczsgZm91bmQgXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHYpLFwiIGluc3RlYWRcIikpO3JldHVybiBzdXBlci50b1N0cmluZyhvLHtibG9ja0l0ZW06dj0+di5zdHIsZmxvd0NoYXJzOntzdGFydDpcIntcIixlbmQ6XCJ9XCJ9LGlzTWFwOiEwLGl0ZW1JbmRlbnQ6by5pbmRlbnR8fFwiXCJ9LGwsXyl9fSxtPVwiPDxcIixhPWNsYXNzIGV4dGVuZHMgQ3tjb25zdHJ1Y3RvcihvKXtpZihvIGluc3RhbmNlb2YgQyl7bGV0IGw9by52YWx1ZTtsIGluc3RhbmNlb2YgVHx8KGw9bmV3IFQsbC5pdGVtcy5wdXNoKG8udmFsdWUpLGwucmFuZ2U9by52YWx1ZS5yYW5nZSksc3VwZXIoby5rZXksbCksdGhpcy5yYW5nZT1vLnJhbmdlfWVsc2Ugc3VwZXIobmV3IHkobSksbmV3IFQpO3RoaXMudHlwZT1DLlR5cGUuTUVSR0VfUEFJUn1hZGRUb0pTTWFwKG8sbCl7Zm9yKGxldHtzb3VyY2U6X31vZiB0aGlzLnZhbHVlLml0ZW1zKXtpZighKF8gaW5zdGFuY2VvZiBLKSl0aHJvdyBuZXcgRXJyb3IoXCJNZXJnZSBzb3VyY2VzIG11c3QgYmUgbWFwc1wiKTtsZXQgdj1fLnRvSlNPTihudWxsLG8sTWFwKTtmb3IobGV0W2Isd11vZiB2KWwgaW5zdGFuY2VvZiBNYXA/bC5oYXMoYil8fGwuc2V0KGIsdyk6bCBpbnN0YW5jZW9mIFNldD9sLmFkZChiKTpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYix7dmFsdWU6dyx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfXJldHVybiBsfXRvU3RyaW5nKG8sbCl7bGV0IF89dGhpcy52YWx1ZTtpZihfLml0ZW1zLmxlbmd0aD4xKXJldHVybiBzdXBlci50b1N0cmluZyhvLGwpO3RoaXMudmFsdWU9Xy5pdGVtc1swXTtsZXQgdj1zdXBlci50b1N0cmluZyhvLGwpO3JldHVybiB0aGlzLnZhbHVlPV8sdn19LHQ9e2RlZmF1bHRUeXBlOmUuVHlwZS5CTE9DS19MSVRFUkFMLGxpbmVXaWR0aDo3Nn0scz17dHJ1ZVN0cjpcInRydWVcIixmYWxzZVN0cjpcImZhbHNlXCJ9LGk9e2FzQmlnSW50OiExfSxmPXtudWxsU3RyOlwibnVsbFwifSxnPXtkZWZhdWx0VHlwZTplLlR5cGUuUExBSU4sZG91YmxlUXVvdGVkOntqc29uRW5jb2Rpbmc6ITEsbWluTXVsdGlMaW5lTGVuZ3RoOjQwfSxmb2xkOntsaW5lV2lkdGg6ODAsbWluQ29udGVudFdpZHRoOjIwfX07ZnVuY3Rpb24gdShvLGwsXyl7Zm9yKGxldHtmb3JtYXQ6dix0ZXN0OmIscmVzb2x2ZTp3fW9mIGwpaWYoYil7bGV0IEE9by5tYXRjaChiKTtpZihBKXtsZXQgTj13LmFwcGx5KG51bGwsQSk7cmV0dXJuIE4gaW5zdGFuY2VvZiB5fHwoTj1uZXcgeShOKSksdiYmKE4uZm9ybWF0PXYpLE59fXJldHVybiBfJiYobz1fKG8pKSxuZXcgeShvKX12YXIgcD1cImZsb3dcIixMPVwiYmxvY2tcIixrPVwicXVvdGVkXCIsQj0obyxsKT0+e2xldCBfPW9bbCsxXTtmb3IoO189PT1cIiBcInx8Xz09PVwiXHRcIjspe2RvIF89b1tsKz0xXTt3aGlsZShfJiZfIT09YFxuYCk7Xz1vW2wrMV19cmV0dXJuIGx9O2Z1bmN0aW9uICQobyxsLF8sdil7bGV0e2luZGVudEF0U3RhcnQ6YixsaW5lV2lkdGg6dz04MCxtaW5Db250ZW50V2lkdGg6QT0yMCxvbkZvbGQ6Tixvbk92ZXJmbG93Oll9PXY7aWYoIXd8fHc8MClyZXR1cm4gbztsZXQgVz1NYXRoLm1heCgxK0EsMSt3LWwubGVuZ3RoKTtpZihvLmxlbmd0aDw9VylyZXR1cm4gbztsZXQgVT1bXSxIPXt9LG9lPXctbC5sZW5ndGg7dHlwZW9mIGI9PVwibnVtYmVyXCImJihiPnctTWF0aC5tYXgoMixBKT9VLnB1c2goMCk6b2U9dy1iKTtsZXQgbGUsWixlZT0hMSxYPS0xLGRlPS0xLHJlPS0xO189PT1MJiYoWD1CKG8sWCksWCE9PS0xJiYob2U9WCtXKSk7Zm9yKGxldCBjZTtjZT1vW1grPTFdOyl7aWYoXz09PWsmJmNlPT09XCJcXFxcXCIpe3N3aXRjaChkZT1YLG9bWCsxXSl7Y2FzZVwieFwiOlgrPTM7YnJlYWs7Y2FzZVwidVwiOlgrPTU7YnJlYWs7Y2FzZVwiVVwiOlgrPTk7YnJlYWs7ZGVmYXVsdDpYKz0xfXJlPVh9aWYoY2U9PT1gXG5gKV89PT1MJiYoWD1CKG8sWCkpLG9lPVgrVyxsZT12b2lkIDA7ZWxzZXtpZihjZT09PVwiIFwiJiZaJiZaIT09XCIgXCImJlohPT1gXG5gJiZaIT09XCJcdFwiKXtsZXQgZmU9b1tYKzFdO2ZlJiZmZSE9PVwiIFwiJiZmZSE9PWBcbmAmJmZlIT09XCJcdFwiJiYobGU9WCl9aWYoWD49b2UpaWYobGUpVS5wdXNoKGxlKSxvZT1sZStXLGxlPXZvaWQgMDtlbHNlIGlmKF89PT1rKXtmb3IoO1o9PT1cIiBcInx8Wj09PVwiXHRcIjspWj1jZSxjZT1vW1grPTFdLGVlPSEwO2xldCBmZT1YPnJlKzE/WC0yOmRlLTE7aWYoSFtmZV0pcmV0dXJuIG87VS5wdXNoKGZlKSxIW2ZlXT0hMCxvZT1mZStXLGxlPXZvaWQgMH1lbHNlIGVlPSEwfVo9Y2V9aWYoZWUmJlkmJlkoKSxVLmxlbmd0aD09PTApcmV0dXJuIG87TiYmTigpO2xldCBoZT1vLnNsaWNlKDAsVVswXSk7Zm9yKGxldCBjZT0wO2NlPFUubGVuZ3RoOysrY2Upe2xldCBmZT1VW2NlXSxJZT1VW2NlKzFdfHxvLmxlbmd0aDtmZT09PTA/aGU9YFxuYC5jb25jYXQobCkuY29uY2F0KG8uc2xpY2UoMCxJZSkpOihfPT09ayYmSFtmZV0mJihoZSs9XCJcIi5jb25jYXQob1tmZV0sXCJcXFxcXCIpKSxoZSs9YFxuYC5jb25jYXQobCkuY29uY2F0KG8uc2xpY2UoZmUrMSxJZSkpKX1yZXR1cm4gaGV9dmFyIFE9bz0+e2xldHtpbmRlbnRBdFN0YXJ0Omx9PW87cmV0dXJuIGw/T2JqZWN0LmFzc2lnbih7aW5kZW50QXRTdGFydDpsfSxnLmZvbGQpOmcuZm9sZH0sej1vPT4vXiglfC0tLXxcXC5cXC5cXC4pL20udGVzdChvKTtmdW5jdGlvbiBpZShvLGwsXyl7aWYoIWx8fGw8MClyZXR1cm4hMTtsZXQgdj1sLV8sYj1vLmxlbmd0aDtpZihiPD12KXJldHVybiExO2ZvcihsZXQgdz0wLEE9MDt3PGI7Kyt3KWlmKG9bd109PT1gXG5gKXtpZih3LUE+dilyZXR1cm4hMDtpZihBPXcrMSxiLUE8PXYpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdWUobyxsKXtsZXR7aW1wbGljaXRLZXk6X309bCx7anNvbkVuY29kaW5nOnYsbWluTXVsdGlMaW5lTGVuZ3RoOmJ9PWcuZG91YmxlUXVvdGVkLHc9SlNPTi5zdHJpbmdpZnkobyk7aWYodilyZXR1cm4gdztsZXQgQT1sLmluZGVudHx8KHoobyk/XCIgIFwiOlwiXCIpLE49XCJcIixZPTA7Zm9yKGxldCBXPTAsVT13W1ddO1U7VT13WysrV10paWYoVT09PVwiIFwiJiZ3W1crMV09PT1cIlxcXFxcIiYmd1tXKzJdPT09XCJuXCImJihOKz13LnNsaWNlKFksVykrXCJcXFxcIFwiLFcrPTEsWT1XLFU9XCJcXFxcXCIpLFU9PT1cIlxcXFxcIilzd2l0Y2god1tXKzFdKXtjYXNlXCJ1XCI6e04rPXcuc2xpY2UoWSxXKTtsZXQgSD13LnN1YnN0cihXKzIsNCk7c3dpdGNoKEgpe2Nhc2VcIjAwMDBcIjpOKz1cIlxcXFwwXCI7YnJlYWs7Y2FzZVwiMDAwN1wiOk4rPVwiXFxcXGFcIjticmVhaztjYXNlXCIwMDBiXCI6Tis9XCJcXFxcdlwiO2JyZWFrO2Nhc2VcIjAwMWJcIjpOKz1cIlxcXFxlXCI7YnJlYWs7Y2FzZVwiMDA4NVwiOk4rPVwiXFxcXE5cIjticmVhaztjYXNlXCIwMGEwXCI6Tis9XCJcXFxcX1wiO2JyZWFrO2Nhc2VcIjIwMjhcIjpOKz1cIlxcXFxMXCI7YnJlYWs7Y2FzZVwiMjAyOVwiOk4rPVwiXFxcXFBcIjticmVhaztkZWZhdWx0Okguc3Vic3RyKDAsMik9PT1cIjAwXCI/Tis9XCJcXFxceFwiK0guc3Vic3RyKDIpOk4rPXcuc3Vic3RyKFcsNil9Vys9NSxZPVcrMX1icmVhaztjYXNlXCJuXCI6aWYoX3x8d1tXKzJdPT09J1wiJ3x8dy5sZW5ndGg8YilXKz0xO2Vsc2V7Zm9yKE4rPXcuc2xpY2UoWSxXKStgXG5cbmA7d1tXKzJdPT09XCJcXFxcXCImJndbVyszXT09PVwiblwiJiZ3W1crNF0hPT0nXCInOylOKz1gXG5gLFcrPTI7Tis9QSx3W1crMl09PT1cIiBcIiYmKE4rPVwiXFxcXFwiKSxXKz0xLFk9VysxfWJyZWFrO2RlZmF1bHQ6Vys9MX1yZXR1cm4gTj1ZP04rdy5zbGljZShZKTp3LF8/TjokKE4sQSxrLFEobCkpfWZ1bmN0aW9uIHBlKG8sbCl7aWYobC5pbXBsaWNpdEtleSl7aWYoL1xcbi8udGVzdChvKSlyZXR1cm4gdWUobyxsKX1lbHNlIGlmKC9bIFxcdF1cXG58XFxuWyBcXHRdLy50ZXN0KG8pKXJldHVybiB1ZShvLGwpO2xldCBfPWwuaW5kZW50fHwoeihvKT9cIiAgXCI6XCJcIiksdj1cIidcIitvLnJlcGxhY2UoLycvZyxcIicnXCIpLnJlcGxhY2UoL1xcbisvZyxgJCZcbmAuY29uY2F0KF8pKStcIidcIjtyZXR1cm4gbC5pbXBsaWNpdEtleT92OiQodixfLHAsUShsKSl9ZnVuY3Rpb24gZ2UobyxsLF8sdil7bGV0e2NvbW1lbnQ6Yix0eXBlOncsdmFsdWU6QX09bztpZigvXFxuW1xcdCBdKyQvLnRlc3QoQSl8fC9eXFxzKiQvLnRlc3QoQSkpcmV0dXJuIHVlKEEsbCk7bGV0IE49bC5pbmRlbnR8fChsLmZvcmNlQmxvY2tJbmRlbnR8fHooQSk/XCIgIFwiOlwiXCIpLFk9Tj9cIjJcIjpcIjFcIixXPXc9PT1lLlR5cGUuQkxPQ0tfRk9MREVEPyExOnc9PT1lLlR5cGUuQkxPQ0tfTElURVJBTD8hMDohaWUoQSxnLmZvbGQubGluZVdpZHRoLE4ubGVuZ3RoKSxVPVc/XCJ8XCI6XCI+XCI7aWYoIUEpcmV0dXJuIFUrYFxuYDtsZXQgSD1cIlwiLG9lPVwiXCI7aWYoQT1BLnJlcGxhY2UoL1tcXG5cXHQgXSokLyxaPT57bGV0IGVlPVouaW5kZXhPZihgXG5gKTtyZXR1cm4gZWU9PT0tMT9VKz1cIi1cIjooQT09PVp8fGVlIT09Wi5sZW5ndGgtMSkmJihVKz1cIitcIix2JiZ2KCkpLG9lPVoucmVwbGFjZSgvXFxuJC8sXCJcIiksXCJcIn0pLnJlcGxhY2UoL15bXFxuIF0qLyxaPT57Wi5pbmRleE9mKFwiIFwiKSE9PS0xJiYoVSs9WSk7bGV0IGVlPVoubWF0Y2goLyArJC8pO3JldHVybiBlZT8oSD1aLnNsaWNlKDAsLWVlWzBdLmxlbmd0aCksZWVbMF0pOihIPVosXCJcIil9KSxvZSYmKG9lPW9lLnJlcGxhY2UoL1xcbisoPyFcXG58JCkvZyxcIiQmXCIuY29uY2F0KE4pKSksSCYmKEg9SC5yZXBsYWNlKC9cXG4rL2csXCIkJlwiLmNvbmNhdChOKSkpLGImJihVKz1cIiAjXCIrYi5yZXBsYWNlKC8gP1tcXHJcXG5dKy9nLFwiIFwiKSxfJiZfKCkpLCFBKXJldHVyblwiXCIuY29uY2F0KFUpLmNvbmNhdChZLGBcbmApLmNvbmNhdChOKS5jb25jYXQob2UpO2lmKFcpcmV0dXJuIEE9QS5yZXBsYWNlKC9cXG4rL2csXCIkJlwiLmNvbmNhdChOKSksXCJcIi5jb25jYXQoVSxgXG5gKS5jb25jYXQoTikuY29uY2F0KEgpLmNvbmNhdChBKS5jb25jYXQob2UpO0E9QS5yZXBsYWNlKC9cXG4rL2csYFxuJCZgKS5yZXBsYWNlKC8oPzpefFxcbikoW1xcdCBdLiopKD86KFtcXG5cXHQgXSopXFxuKD8hW1xcblxcdCBdKSk/L2csXCIkMSQyXCIpLnJlcGxhY2UoL1xcbisvZyxcIiQmXCIuY29uY2F0KE4pKTtsZXQgbGU9JChcIlwiLmNvbmNhdChIKS5jb25jYXQoQSkuY29uY2F0KG9lKSxOLEwsZy5mb2xkKTtyZXR1cm5cIlwiLmNvbmNhdChVLGBcbmApLmNvbmNhdChOKS5jb25jYXQobGUpfWZ1bmN0aW9uIE8obyxsLF8sdil7bGV0e2NvbW1lbnQ6Yix0eXBlOncsdmFsdWU6QX09byx7YWN0dWFsU3RyaW5nOk4saW1wbGljaXRLZXk6WSxpbmRlbnQ6VyxpbkZsb3c6VX09bDtpZihZJiYvW1xcbltcXF17fSxdLy50ZXN0KEEpfHxVJiYvW1tcXF17fSxdLy50ZXN0KEEpKXJldHVybiB1ZShBLGwpO2lmKCFBfHwvXltcXG5cXHQgLFtcXF17fSMmKiF8PidcIiVAYF18Xls/LV0kfF5bPy1dWyBcXHRdfFtcXG46XVsgXFx0XXxbIFxcdF1cXG58W1xcblxcdCBdI3xbXFxuXFx0IDpdJC8udGVzdChBKSlyZXR1cm4gWXx8VXx8QS5pbmRleE9mKGBcbmApPT09LTE/QS5pbmRleE9mKCdcIicpIT09LTEmJkEuaW5kZXhPZihcIidcIik9PT0tMT9wZShBLGwpOnVlKEEsbCk6Z2UobyxsLF8sdik7aWYoIVkmJiFVJiZ3IT09ZS5UeXBlLlBMQUlOJiZBLmluZGV4T2YoYFxuYCkhPT0tMSlyZXR1cm4gZ2UobyxsLF8sdik7aWYoVz09PVwiXCImJnooQSkpcmV0dXJuIGwuZm9yY2VCbG9ja0luZGVudD0hMCxnZShvLGwsXyx2KTtsZXQgSD1BLnJlcGxhY2UoL1xcbisvZyxgJCZcbmAuY29uY2F0KFcpKTtpZihOKXtsZXR7dGFnczpsZX09bC5kb2Muc2NoZW1hO2lmKHR5cGVvZiB1KEgsbGUsbGUuc2NhbGFyRmFsbGJhY2spLnZhbHVlIT1cInN0cmluZ1wiKXJldHVybiB1ZShBLGwpfWxldCBvZT1ZP0g6JChILFcscCxRKGwpKTtyZXR1cm4gYiYmIVUmJihvZS5pbmRleE9mKGBcbmApIT09LTF8fGIuaW5kZXhPZihgXG5gKSE9PS0xKT8oXyYmXygpLG4ob2UsVyxiKSk6b2V9ZnVuY3Rpb24gVihvLGwsXyx2KXtsZXR7ZGVmYXVsdFR5cGU6Yn09Zyx7aW1wbGljaXRLZXk6dyxpbkZsb3c6QX09bCx7dHlwZTpOLHZhbHVlOll9PW87dHlwZW9mIFkhPVwic3RyaW5nXCImJihZPVN0cmluZyhZKSxvPU9iamVjdC5hc3NpZ24oe30sbyx7dmFsdWU6WX0pKTtsZXQgVz1IPT57c3dpdGNoKEgpe2Nhc2UgZS5UeXBlLkJMT0NLX0ZPTERFRDpjYXNlIGUuVHlwZS5CTE9DS19MSVRFUkFMOnJldHVybiBnZShvLGwsXyx2KTtjYXNlIGUuVHlwZS5RVU9URV9ET1VCTEU6cmV0dXJuIHVlKFksbCk7Y2FzZSBlLlR5cGUuUVVPVEVfU0lOR0xFOnJldHVybiBwZShZLGwpO2Nhc2UgZS5UeXBlLlBMQUlOOnJldHVybiBPKG8sbCxfLHYpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fTsoTiE9PWUuVHlwZS5RVU9URV9ET1VCTEUmJi9bXFx4MDAtXFx4MDhcXHgwYi1cXHgxZlxceDdmLVxceDlmXS8udGVzdChZKXx8KHd8fEEpJiYoTj09PWUuVHlwZS5CTE9DS19GT0xERUR8fE49PT1lLlR5cGUuQkxPQ0tfTElURVJBTCkpJiYoTj1lLlR5cGUuUVVPVEVfRE9VQkxFKTtsZXQgVT1XKE4pO2lmKFU9PT1udWxsJiYoVT1XKGIpLFU9PT1udWxsKSl0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBkZWZhdWx0IHN0cmluZyB0eXBlIFwiLmNvbmNhdChiKSk7cmV0dXJuIFV9ZnVuY3Rpb24gSihvKXtsZXR7Zm9ybWF0OmwsbWluRnJhY3Rpb25EaWdpdHM6Xyx0YWc6dix2YWx1ZTpifT1vO2lmKHR5cGVvZiBiPT1cImJpZ2ludFwiKXJldHVybiBTdHJpbmcoYik7aWYoIWlzRmluaXRlKGIpKXJldHVybiBpc05hTihiKT9cIi5uYW5cIjpiPDA/XCItLmluZlwiOlwiLmluZlwiO2xldCB3PUpTT04uc3RyaW5naWZ5KGIpO2lmKCFsJiZfJiYoIXZ8fHY9PT1cInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIpJiYvXlxcZC8udGVzdCh3KSl7bGV0IEE9dy5pbmRleE9mKFwiLlwiKTtBPDAmJihBPXcubGVuZ3RoLHcrPVwiLlwiKTtsZXQgTj1fLSh3Lmxlbmd0aC1BLTEpO2Zvcig7Ti0tID4wOyl3Kz1cIjBcIn1yZXR1cm4gd31mdW5jdGlvbiB4KG8sbCl7bGV0IF8sdjtzd2l0Y2gobC50eXBlKXtjYXNlIGUuVHlwZS5GTE9XX01BUDpfPVwifVwiLHY9XCJmbG93IG1hcFwiO2JyZWFrO2Nhc2UgZS5UeXBlLkZMT1dfU0VROl89XCJdXCIsdj1cImZsb3cgc2VxdWVuY2VcIjticmVhaztkZWZhdWx0Om8ucHVzaChuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihsLFwiTm90IGEgZmxvdyBjb2xsZWN0aW9uIT9cIikpO3JldHVybn1sZXQgYjtmb3IobGV0IHc9bC5pdGVtcy5sZW5ndGgtMTt3Pj0wOy0tdyl7bGV0IEE9bC5pdGVtc1t3XTtpZighQXx8QS50eXBlIT09ZS5UeXBlLkNPTU1FTlQpe2I9QTticmVha319aWYoYiYmYi5jaGFyIT09Xyl7bGV0IHc9XCJFeHBlY3RlZCBcIi5jb25jYXQodixcIiB0byBlbmQgd2l0aCBcIikuY29uY2F0KF8pLEE7dHlwZW9mIGIub2Zmc2V0PT1cIm51bWJlclwiPyhBPW5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKGwsdyksQS5vZmZzZXQ9Yi5vZmZzZXQrMSk6KEE9bmV3IGUuWUFNTFNlbWFudGljRXJyb3IoYix3KSxiLnJhbmdlJiZiLnJhbmdlLmVuZCYmKEEub2Zmc2V0PWIucmFuZ2UuZW5kLWIucmFuZ2Uuc3RhcnQpKSxvLnB1c2goQSl9fWZ1bmN0aW9uIEcobyxsKXtsZXQgXz1sLmNvbnRleHQuc3JjW2wucmFuZ2Uuc3RhcnQtMV07aWYoXyE9PWBcbmAmJl8hPT1cIlx0XCImJl8hPT1cIiBcIil7bGV0IHY9XCJDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzXCI7by5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKGwsdikpfX1mdW5jdGlvbiBuZShvLGwpe2xldCBfPVN0cmluZyhsKSx2PV8uc3Vic3RyKDAsOCkrXCIuLi5cIitfLnN1YnN0cigtOCk7cmV0dXJuIG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKG8sJ1RoZSBcIicuY29uY2F0KHYsJ1wiIGtleSBpcyB0b28gbG9uZycpKX1mdW5jdGlvbiBfZShvLGwpe2ZvcihsZXR7YWZ0ZXJLZXk6XyxiZWZvcmU6dixjb21tZW50OmJ9b2YgbCl7bGV0IHc9by5pdGVtc1t2XTt3PyhfJiZ3LnZhbHVlJiYodz13LnZhbHVlKSxiPT09dm9pZCAwPyhffHwhdy5jb21tZW50QmVmb3JlKSYmKHcuc3BhY2VCZWZvcmU9ITApOncuY29tbWVudEJlZm9yZT93LmNvbW1lbnRCZWZvcmUrPWBcbmArYjp3LmNvbW1lbnRCZWZvcmU9Yik6YiE9PXZvaWQgMCYmKG8uY29tbWVudD9vLmNvbW1lbnQrPWBcbmArYjpvLmNvbW1lbnQ9Yil9fWZ1bmN0aW9uIHllKG8sbCl7bGV0IF89bC5zdHJWYWx1ZTtyZXR1cm4gXz90eXBlb2YgXz09XCJzdHJpbmdcIj9fOihfLmVycm9ycy5mb3JFYWNoKHY9Pnt2LnNvdXJjZXx8KHYuc291cmNlPWwpLG8uZXJyb3JzLnB1c2godil9KSxfLnN0cik6XCJcIn1mdW5jdGlvbiBiZShvLGwpe2xldHtoYW5kbGU6XyxzdWZmaXg6dn09bC50YWcsYj1vLnRhZ1ByZWZpeGVzLmZpbmQodz0+dy5oYW5kbGU9PT1fKTtpZighYil7bGV0IHc9by5nZXREZWZhdWx0cygpLnRhZ1ByZWZpeGVzO2lmKHcmJihiPXcuZmluZChBPT5BLmhhbmRsZT09PV8pKSwhYil0aHJvdyBuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihsLFwiVGhlIFwiLmNvbmNhdChfLFwiIHRhZyBoYW5kbGUgaXMgbm9uLWRlZmF1bHQgYW5kIHdhcyBub3QgZGVjbGFyZWQuXCIpKX1pZighdil0aHJvdyBuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihsLFwiVGhlIFwiLmNvbmNhdChfLFwiIHRhZyBoYXMgbm8gc3VmZml4LlwiKSk7aWYoXz09PVwiIVwiJiYoby52ZXJzaW9ufHxvLm9wdGlvbnMudmVyc2lvbik9PT1cIjEuMFwiKXtpZih2WzBdPT09XCJeXCIpcmV0dXJuIG8ud2FybmluZ3MucHVzaChuZXcgZS5ZQU1MV2FybmluZyhsLFwiWUFNTCAxLjAgXiB0YWcgZXhwYW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWRcIikpLHY7aWYoL1s6L10vLnRlc3Qodikpe2xldCB3PXYubWF0Y2goL14oW2EtejAtOS1dKylcXC8oLiopL2kpO3JldHVybiB3P1widGFnOlwiLmNvbmNhdCh3WzFdLFwiLnlhbWwub3JnLDIwMDI6XCIpLmNvbmNhdCh3WzJdKTpcInRhZzpcIi5jb25jYXQodil9fXJldHVybiBiLnByZWZpeCtkZWNvZGVVUklDb21wb25lbnQodil9ZnVuY3Rpb24gdmUobyxsKXtsZXR7dGFnOl8sdHlwZTp2fT1sLGI9ITE7aWYoXyl7bGV0e2hhbmRsZTp3LHN1ZmZpeDpBLHZlcmJhdGltOk59PV87aWYoTil7aWYoTiE9PVwiIVwiJiZOIT09XCIhIVwiKXJldHVybiBOO2xldCBZPVwiVmVyYmF0aW0gdGFncyBhcmVuJ3QgcmVzb2x2ZWQsIHNvIFwiLmNvbmNhdChOLFwiIGlzIGludmFsaWQuXCIpO28uZXJyb3JzLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IobCxZKSl9ZWxzZSBpZih3PT09XCIhXCImJiFBKWI9ITA7ZWxzZSB0cnl7cmV0dXJuIGJlKG8sbCl9Y2F0Y2goWSl7by5lcnJvcnMucHVzaChZKX19c3dpdGNoKHYpe2Nhc2UgZS5UeXBlLkJMT0NLX0ZPTERFRDpjYXNlIGUuVHlwZS5CTE9DS19MSVRFUkFMOmNhc2UgZS5UeXBlLlFVT1RFX0RPVUJMRTpjYXNlIGUuVHlwZS5RVU9URV9TSU5HTEU6cmV0dXJuIGUuZGVmYXVsdFRhZ3MuU1RSO2Nhc2UgZS5UeXBlLkZMT1dfTUFQOmNhc2UgZS5UeXBlLk1BUDpyZXR1cm4gZS5kZWZhdWx0VGFncy5NQVA7Y2FzZSBlLlR5cGUuRkxPV19TRVE6Y2FzZSBlLlR5cGUuU0VROnJldHVybiBlLmRlZmF1bHRUYWdzLlNFUTtjYXNlIGUuVHlwZS5QTEFJTjpyZXR1cm4gYj9lLmRlZmF1bHRUYWdzLlNUUjpudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIE5lKG8sbCxfKXtsZXR7dGFnczp2fT1vLnNjaGVtYSxiPVtdO2ZvcihsZXQgQSBvZiB2KWlmKEEudGFnPT09XylpZihBLnRlc3QpYi5wdXNoKEEpO2Vsc2V7bGV0IE49QS5yZXNvbHZlKG8sbCk7cmV0dXJuIE4gaW5zdGFuY2VvZiBTP046bmV3IHkoTil9bGV0IHc9eWUobyxsKTtyZXR1cm4gdHlwZW9mIHc9PVwic3RyaW5nXCImJmIubGVuZ3RoPjA/dSh3LGIsdi5zY2FsYXJGYWxsYmFjayk6bnVsbH1mdW5jdGlvbiBQZShvKXtsZXR7dHlwZTpsfT1vO3N3aXRjaChsKXtjYXNlIGUuVHlwZS5GTE9XX01BUDpjYXNlIGUuVHlwZS5NQVA6cmV0dXJuIGUuZGVmYXVsdFRhZ3MuTUFQO2Nhc2UgZS5UeXBlLkZMT1dfU0VROmNhc2UgZS5UeXBlLlNFUTpyZXR1cm4gZS5kZWZhdWx0VGFncy5TRVE7ZGVmYXVsdDpyZXR1cm4gZS5kZWZhdWx0VGFncy5TVFJ9fWZ1bmN0aW9uIGN0KG8sbCxfKXt0cnl7bGV0IHY9TmUobyxsLF8pO2lmKHYpcmV0dXJuIF8mJmwudGFnJiYodi50YWc9Xyksdn1jYXRjaCh2KXtyZXR1cm4gdi5zb3VyY2V8fCh2LnNvdXJjZT1sKSxvLmVycm9ycy5wdXNoKHYpLG51bGx9dHJ5e2xldCB2PVBlKGwpO2lmKCF2KXRocm93IG5ldyBFcnJvcihcIlRoZSB0YWcgXCIuY29uY2F0KF8sXCIgaXMgdW5hdmFpbGFibGVcIikpO2xldCBiPVwiVGhlIHRhZyBcIi5jb25jYXQoXyxcIiBpcyB1bmF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIFwiKS5jb25jYXQodik7by53YXJuaW5ncy5wdXNoKG5ldyBlLllBTUxXYXJuaW5nKGwsYikpO2xldCB3PU5lKG8sbCx2KTtyZXR1cm4gdy50YWc9Xyx3fWNhdGNoKHYpe2xldCBiPW5ldyBlLllBTUxSZWZlcmVuY2VFcnJvcihsLHYubWVzc2FnZSk7cmV0dXJuIGIuc3RhY2s9di5zdGFjayxvLmVycm9ycy5wdXNoKGIpLG51bGx9fXZhciB1dD1vPT57aWYoIW8pcmV0dXJuITE7bGV0e3R5cGU6bH09bztyZXR1cm4gbD09PWUuVHlwZS5NQVBfS0VZfHxsPT09ZS5UeXBlLk1BUF9WQUxVRXx8bD09PWUuVHlwZS5TRVFfSVRFTX07ZnVuY3Rpb24gZnQobyxsKXtsZXQgXz17YmVmb3JlOltdLGFmdGVyOltdfSx2PSExLGI9ITEsdz11dChsLmNvbnRleHQucGFyZW50KT9sLmNvbnRleHQucGFyZW50LnByb3BzLmNvbmNhdChsLnByb3BzKTpsLnByb3BzO2ZvcihsZXR7c3RhcnQ6QSxlbmQ6Tn1vZiB3KXN3aXRjaChsLmNvbnRleHQuc3JjW0FdKXtjYXNlIGUuQ2hhci5DT01NRU5UOntpZighbC5jb21tZW50SGFzUmVxdWlyZWRXaGl0ZXNwYWNlKEEpKXtsZXQgSD1cIkNvbW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gb3RoZXIgdG9rZW5zIGJ5IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnNcIjtvLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IobCxIKSl9bGV0e2hlYWRlcjpZLHZhbHVlUmFuZ2U6V309bDsoVyYmKEE+Vy5zdGFydHx8WSYmQT5ZLnN0YXJ0KT9fLmFmdGVyOl8uYmVmb3JlKS5wdXNoKGwuY29udGV4dC5zcmMuc2xpY2UoQSsxLE4pKTticmVha31jYXNlIGUuQ2hhci5BTkNIT1I6aWYodil7bGV0IFk9XCJBIG5vZGUgY2FuIGhhdmUgYXQgbW9zdCBvbmUgYW5jaG9yXCI7by5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKGwsWSkpfXY9ITA7YnJlYWs7Y2FzZSBlLkNoYXIuVEFHOmlmKGIpe2xldCBZPVwiQSBub2RlIGNhbiBoYXZlIGF0IG1vc3Qgb25lIHRhZ1wiO28ucHVzaChuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihsLFkpKX1iPSEwO2JyZWFrfXJldHVybntjb21tZW50czpfLGhhc0FuY2hvcjp2LGhhc1RhZzpifX1mdW5jdGlvbiBtdChvLGwpe2xldHthbmNob3JzOl8sZXJyb3JzOnYsc2NoZW1hOmJ9PW87aWYobC50eXBlPT09ZS5UeXBlLkFMSUFTKXtsZXQgQT1sLnJhd1ZhbHVlLE49Xy5nZXROb2RlKEEpO2lmKCFOKXtsZXQgVz1cIkFsaWFzZWQgYW5jaG9yIG5vdCBmb3VuZDogXCIuY29uY2F0KEEpO3JldHVybiB2LnB1c2gobmV3IGUuWUFNTFJlZmVyZW5jZUVycm9yKGwsVykpLG51bGx9bGV0IFk9bmV3IFIoTik7cmV0dXJuIF8uX2NzdEFsaWFzZXMucHVzaChZKSxZfWxldCB3PXZlKG8sbCk7aWYodylyZXR1cm4gY3QobyxsLHcpO2lmKGwudHlwZSE9PWUuVHlwZS5QTEFJTil7bGV0IEE9XCJGYWlsZWQgdG8gcmVzb2x2ZSBcIi5jb25jYXQobC50eXBlLFwiIG5vZGUgaGVyZVwiKTtyZXR1cm4gdi5wdXNoKG5ldyBlLllBTUxTeW50YXhFcnJvcihsLEEpKSxudWxsfXRyeXtsZXQgQT15ZShvLGwpO3JldHVybiB1KEEsYi50YWdzLGIudGFncy5zY2FsYXJGYWxsYmFjayl9Y2F0Y2goQSl7cmV0dXJuIEEuc291cmNlfHwoQS5zb3VyY2U9bCksdi5wdXNoKEEpLG51bGx9fWZ1bmN0aW9uIHdlKG8sbCl7aWYoIWwpcmV0dXJuIG51bGw7bC5lcnJvciYmby5lcnJvcnMucHVzaChsLmVycm9yKTtsZXR7Y29tbWVudHM6XyxoYXNBbmNob3I6dixoYXNUYWc6Yn09ZnQoby5lcnJvcnMsbCk7aWYodil7bGV0e2FuY2hvcnM6QX09byxOPWwuYW5jaG9yLFk9QS5nZXROb2RlKE4pO1kmJihBLm1hcFtBLm5ld05hbWUoTildPVkpLEEubWFwW05dPWx9aWYobC50eXBlPT09ZS5UeXBlLkFMSUFTJiYodnx8Yikpe2xldCBBPVwiQW4gYWxpYXMgbm9kZSBtdXN0IG5vdCBzcGVjaWZ5IGFueSBwcm9wZXJ0aWVzXCI7by5lcnJvcnMucHVzaChuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihsLEEpKX1sZXQgdz1tdChvLGwpO2lmKHcpe3cucmFuZ2U9W2wucmFuZ2Uuc3RhcnQsbC5yYW5nZS5lbmRdLG8ub3B0aW9ucy5rZWVwQ3N0Tm9kZXMmJih3LmNzdE5vZGU9bCksby5vcHRpb25zLmtlZXBOb2RlVHlwZXMmJih3LnR5cGU9bC50eXBlKTtsZXQgQT1fLmJlZm9yZS5qb2luKGBcbmApO0EmJih3LmNvbW1lbnRCZWZvcmU9dy5jb21tZW50QmVmb3JlP1wiXCIuY29uY2F0KHcuY29tbWVudEJlZm9yZSxgXG5gKS5jb25jYXQoQSk6QSk7bGV0IE49Xy5hZnRlci5qb2luKGBcbmApO04mJih3LmNvbW1lbnQ9dy5jb21tZW50P1wiXCIuY29uY2F0KHcuY29tbWVudCxgXG5gKS5jb25jYXQoTik6Til9cmV0dXJuIGwucmVzb2x2ZWQ9d31mdW5jdGlvbiBkdChvLGwpe2lmKGwudHlwZSE9PWUuVHlwZS5NQVAmJmwudHlwZSE9PWUuVHlwZS5GTE9XX01BUCl7bGV0IEE9XCJBIFwiLmNvbmNhdChsLnR5cGUsXCIgbm9kZSBjYW5ub3QgYmUgcmVzb2x2ZWQgYXMgYSBtYXBwaW5nXCIpO3JldHVybiBvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTeW50YXhFcnJvcihsLEEpKSxudWxsfWxldHtjb21tZW50czpfLGl0ZW1zOnZ9PWwudHlwZT09PWUuVHlwZS5GTE9XX01BUD9fdChvLGwpOnB0KG8sbCksYj1uZXcgSztiLml0ZW1zPXYsX2UoYixfKTtsZXQgdz0hMTtmb3IobGV0IEE9MDtBPHYubGVuZ3RoOysrQSl7bGV0e2tleTpOfT12W0FdO2lmKE4gaW5zdGFuY2VvZiBTJiYodz0hMCksby5zY2hlbWEubWVyZ2UmJk4mJk4udmFsdWU9PT1tKXt2W0FdPW5ldyBhKHZbQV0pO2xldCBZPXZbQV0udmFsdWUuaXRlbXMsVz1udWxsO1kuc29tZShVPT57aWYoVSBpbnN0YW5jZW9mIFIpe2xldHt0eXBlOkh9PVUuc291cmNlO3JldHVybiBIPT09ZS5UeXBlLk1BUHx8SD09PWUuVHlwZS5GTE9XX01BUD8hMTpXPVwiTWVyZ2Ugbm9kZXMgYWxpYXNlcyBjYW4gb25seSBwb2ludCB0byBtYXBzXCJ9cmV0dXJuIFc9XCJNZXJnZSBub2RlcyBjYW4gb25seSBoYXZlIEFsaWFzIG5vZGVzIGFzIHZhbHVlc1wifSksVyYmby5lcnJvcnMucHVzaChuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihsLFcpKX1lbHNlIGZvcihsZXQgWT1BKzE7WTx2Lmxlbmd0aDsrK1kpe2xldHtrZXk6V309dltZXTtpZihOPT09V3x8TiYmVyYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKE4sXCJ2YWx1ZVwiKSYmTi52YWx1ZT09PVcudmFsdWUpe2xldCBVPSdNYXAga2V5cyBtdXN0IGJlIHVuaXF1ZTsgXCInLmNvbmNhdChOLCdcIiBpcyByZXBlYXRlZCcpO28uZXJyb3JzLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IobCxVKSk7YnJlYWt9fX1pZih3JiYhby5vcHRpb25zLm1hcEFzTWFwKXtsZXQgQT1cIktleXMgd2l0aCBjb2xsZWN0aW9uIHZhbHVlcyB3aWxsIGJlIHN0cmluZ2lmaWVkIGFzIFlBTUwgZHVlIHRvIEpTIE9iamVjdCByZXN0cmljdGlvbnMuIFVzZSBtYXBBc01hcDogdHJ1ZSB0byBhdm9pZCB0aGlzLlwiO28ud2FybmluZ3MucHVzaChuZXcgZS5ZQU1MV2FybmluZyhsLEEpKX1yZXR1cm4gbC5yZXNvbHZlZD1iLGJ9dmFyIGh0PW89PntsZXR7Y29udGV4dDp7bGluZVN0YXJ0Omwsbm9kZTpfLHNyYzp2fSxwcm9wczpifT1vO2lmKGIubGVuZ3RoPT09MClyZXR1cm4hMTtsZXR7c3RhcnQ6d309YlswXTtpZihfJiZ3Pl8udmFsdWVSYW5nZS5zdGFydHx8dlt3XSE9PWUuQ2hhci5DT01NRU5UKXJldHVybiExO2ZvcihsZXQgQT1sO0E8dzsrK0EpaWYodltBXT09PWBcbmApcmV0dXJuITE7cmV0dXJuITB9O2Z1bmN0aW9uIGd0KG8sbCl7aWYoIWh0KG8pKXJldHVybjtsZXQgXz1vLmdldFByb3BWYWx1ZSgwLGUuQ2hhci5DT01NRU5ULCEwKSx2PSExLGI9bC52YWx1ZS5jb21tZW50QmVmb3JlO2lmKGImJmIuc3RhcnRzV2l0aChfKSlsLnZhbHVlLmNvbW1lbnRCZWZvcmU9Yi5zdWJzdHIoXy5sZW5ndGgrMSksdj0hMDtlbHNle2xldCB3PWwudmFsdWUuY29tbWVudDshby5ub2RlJiZ3JiZ3LnN0YXJ0c1dpdGgoXykmJihsLnZhbHVlLmNvbW1lbnQ9dy5zdWJzdHIoXy5sZW5ndGgrMSksdj0hMCl9diYmKGwuY29tbWVudD1fKX1mdW5jdGlvbiBwdChvLGwpe2xldCBfPVtdLHY9W10sYix3PW51bGw7Zm9yKGxldCBBPTA7QTxsLml0ZW1zLmxlbmd0aDsrK0Epe2xldCBOPWwuaXRlbXNbQV07c3dpdGNoKE4udHlwZSl7Y2FzZSBlLlR5cGUuQkxBTktfTElORTpfLnB1c2goe2FmdGVyS2V5OiEhYixiZWZvcmU6di5sZW5ndGh9KTticmVhaztjYXNlIGUuVHlwZS5DT01NRU5UOl8ucHVzaCh7YWZ0ZXJLZXk6ISFiLGJlZm9yZTp2Lmxlbmd0aCxjb21tZW50Ok4uY29tbWVudH0pO2JyZWFrO2Nhc2UgZS5UeXBlLk1BUF9LRVk6YiE9PXZvaWQgMCYmdi5wdXNoKG5ldyBDKGIpKSxOLmVycm9yJiZvLmVycm9ycy5wdXNoKE4uZXJyb3IpLGI9d2UobyxOLm5vZGUpLHc9bnVsbDticmVhaztjYXNlIGUuVHlwZS5NQVBfVkFMVUU6e2lmKGI9PT12b2lkIDAmJihiPW51bGwpLE4uZXJyb3ImJm8uZXJyb3JzLnB1c2goTi5lcnJvciksIU4uY29udGV4dC5hdExpbmVTdGFydCYmTi5ub2RlJiZOLm5vZGUudHlwZT09PWUuVHlwZS5NQVAmJiFOLm5vZGUuY29udGV4dC5hdExpbmVTdGFydCl7bGV0IFU9XCJOZXN0ZWQgbWFwcGluZ3MgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBhY3QgbWFwcGluZ3NcIjtvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKE4ubm9kZSxVKSl9bGV0IFk9Ti5ub2RlO2lmKCFZJiZOLnByb3BzLmxlbmd0aD4wKXtZPW5ldyBlLlBsYWluVmFsdWUoZS5UeXBlLlBMQUlOLFtdKSxZLmNvbnRleHQ9e3BhcmVudDpOLHNyYzpOLmNvbnRleHQuc3JjfTtsZXQgVT1OLnJhbmdlLnN0YXJ0KzE7aWYoWS5yYW5nZT17c3RhcnQ6VSxlbmQ6VX0sWS52YWx1ZVJhbmdlPXtzdGFydDpVLGVuZDpVfSx0eXBlb2YgTi5yYW5nZS5vcmlnU3RhcnQ9PVwibnVtYmVyXCIpe2xldCBIPU4ucmFuZ2Uub3JpZ1N0YXJ0KzE7WS5yYW5nZS5vcmlnU3RhcnQ9WS5yYW5nZS5vcmlnRW5kPUgsWS52YWx1ZVJhbmdlLm9yaWdTdGFydD1ZLnZhbHVlUmFuZ2Uub3JpZ0VuZD1IfX1sZXQgVz1uZXcgQyhiLHdlKG8sWSkpO2d0KE4sVyksdi5wdXNoKFcpLGImJnR5cGVvZiB3PT1cIm51bWJlclwiJiZOLnJhbmdlLnN0YXJ0PncrMTAyNCYmby5lcnJvcnMucHVzaChuZShsLGIpKSxiPXZvaWQgMCx3PW51bGx9YnJlYWs7ZGVmYXVsdDpiIT09dm9pZCAwJiZ2LnB1c2gobmV3IEMoYikpLGI9d2UobyxOKSx3PU4ucmFuZ2Uuc3RhcnQsTi5lcnJvciYmby5lcnJvcnMucHVzaChOLmVycm9yKTtlOmZvcihsZXQgWT1BKzE7OysrWSl7bGV0IFc9bC5pdGVtc1tZXTtzd2l0Y2goVyYmVy50eXBlKXtjYXNlIGUuVHlwZS5CTEFOS19MSU5FOmNhc2UgZS5UeXBlLkNPTU1FTlQ6Y29udGludWUgZTtjYXNlIGUuVHlwZS5NQVBfVkFMVUU6YnJlYWsgZTtkZWZhdWx0OntsZXQgVT1cIkltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgZm9sbG93ZWQgYnkgbWFwIHZhbHVlc1wiO28uZXJyb3JzLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IoTixVKSk7YnJlYWsgZX19fWlmKE4udmFsdWVSYW5nZUNvbnRhaW5zTmV3bGluZSl7bGV0IFk9XCJJbXBsaWNpdCBtYXAga2V5cyBuZWVkIHRvIGJlIG9uIGEgc2luZ2xlIGxpbmVcIjtvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKE4sWSkpfX19cmV0dXJuIGIhPT12b2lkIDAmJnYucHVzaChuZXcgQyhiKSkse2NvbW1lbnRzOl8saXRlbXM6dn19ZnVuY3Rpb24gX3QobyxsKXtsZXQgXz1bXSx2PVtdLGIsdz0hMSxBPVwie1wiO2ZvcihsZXQgTj0wO048bC5pdGVtcy5sZW5ndGg7KytOKXtsZXQgWT1sLml0ZW1zW05dO2lmKHR5cGVvZiBZLmNoYXI9PVwic3RyaW5nXCIpe2xldHtjaGFyOlcsb2Zmc2V0OlV9PVk7aWYoVz09PVwiP1wiJiZiPT09dm9pZCAwJiYhdyl7dz0hMCxBPVwiOlwiO2NvbnRpbnVlfWlmKFc9PT1cIjpcIil7aWYoYj09PXZvaWQgMCYmKGI9bnVsbCksQT09PVwiOlwiKXtBPVwiLFwiO2NvbnRpbnVlfX1lbHNlIGlmKHcmJihiPT09dm9pZCAwJiZXIT09XCIsXCImJihiPW51bGwpLHc9ITEpLGIhPT12b2lkIDAmJih2LnB1c2gobmV3IEMoYikpLGI9dm9pZCAwLFc9PT1cIixcIikpe0E9XCI6XCI7Y29udGludWV9aWYoVz09PVwifVwiKXtpZihOPT09bC5pdGVtcy5sZW5ndGgtMSljb250aW51ZX1lbHNlIGlmKFc9PT1BKXtBPVwiOlwiO2NvbnRpbnVlfWxldCBIPVwiRmxvdyBtYXAgY29udGFpbnMgYW4gdW5leHBlY3RlZCBcIi5jb25jYXQoVyksb2U9bmV3IGUuWUFNTFN5bnRheEVycm9yKGwsSCk7b2Uub2Zmc2V0PVUsby5lcnJvcnMucHVzaChvZSl9ZWxzZSBZLnR5cGU9PT1lLlR5cGUuQkxBTktfTElORT9fLnB1c2goe2FmdGVyS2V5OiEhYixiZWZvcmU6di5sZW5ndGh9KTpZLnR5cGU9PT1lLlR5cGUuQ09NTUVOVD8oRyhvLmVycm9ycyxZKSxfLnB1c2goe2FmdGVyS2V5OiEhYixiZWZvcmU6di5sZW5ndGgsY29tbWVudDpZLmNvbW1lbnR9KSk6Yj09PXZvaWQgMD8oQT09PVwiLFwiJiZvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKFksXCJTZXBhcmF0b3IgLCBtaXNzaW5nIGluIGZsb3cgbWFwXCIpKSxiPXdlKG8sWSkpOihBIT09XCIsXCImJm8uZXJyb3JzLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IoWSxcIkluZGljYXRvciA6IG1pc3NpbmcgaW4gZmxvdyBtYXAgZW50cnlcIikpLHYucHVzaChuZXcgQyhiLHdlKG8sWSkpKSxiPXZvaWQgMCx3PSExKX1yZXR1cm4geChvLmVycm9ycyxsKSxiIT09dm9pZCAwJiZ2LnB1c2gobmV3IEMoYikpLHtjb21tZW50czpfLGl0ZW1zOnZ9fWZ1bmN0aW9uIHZ0KG8sbCl7aWYobC50eXBlIT09ZS5UeXBlLlNFUSYmbC50eXBlIT09ZS5UeXBlLkZMT1dfU0VRKXtsZXQgdz1cIkEgXCIuY29uY2F0KGwudHlwZSxcIiBub2RlIGNhbm5vdCBiZSByZXNvbHZlZCBhcyBhIHNlcXVlbmNlXCIpO3JldHVybiBvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTeW50YXhFcnJvcihsLHcpKSxudWxsfWxldHtjb21tZW50czpfLGl0ZW1zOnZ9PWwudHlwZT09PWUuVHlwZS5GTE9XX1NFUT9idChvLGwpOnl0KG8sbCksYj1uZXcgVDtpZihiLml0ZW1zPXYsX2UoYixfKSwhby5vcHRpb25zLm1hcEFzTWFwJiZ2LnNvbWUodz0+dyBpbnN0YW5jZW9mIEMmJncua2V5IGluc3RhbmNlb2YgUykpe2xldCB3PVwiS2V5cyB3aXRoIGNvbGxlY3Rpb24gdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWQgYXMgWUFNTCBkdWUgdG8gSlMgT2JqZWN0IHJlc3RyaWN0aW9ucy4gVXNlIG1hcEFzTWFwOiB0cnVlIHRvIGF2b2lkIHRoaXMuXCI7by53YXJuaW5ncy5wdXNoKG5ldyBlLllBTUxXYXJuaW5nKGwsdykpfXJldHVybiBsLnJlc29sdmVkPWIsYn1mdW5jdGlvbiB5dChvLGwpe2xldCBfPVtdLHY9W107Zm9yKGxldCBiPTA7YjxsLml0ZW1zLmxlbmd0aDsrK2Ipe2xldCB3PWwuaXRlbXNbYl07c3dpdGNoKHcudHlwZSl7Y2FzZSBlLlR5cGUuQkxBTktfTElORTpfLnB1c2goe2JlZm9yZTp2Lmxlbmd0aH0pO2JyZWFrO2Nhc2UgZS5UeXBlLkNPTU1FTlQ6Xy5wdXNoKHtjb21tZW50OncuY29tbWVudCxiZWZvcmU6di5sZW5ndGh9KTticmVhaztjYXNlIGUuVHlwZS5TRVFfSVRFTTppZih3LmVycm9yJiZvLmVycm9ycy5wdXNoKHcuZXJyb3IpLHYucHVzaCh3ZShvLHcubm9kZSkpLHcuaGFzUHJvcHMpe2xldCBBPVwiU2VxdWVuY2UgaXRlbXMgY2Fubm90IGhhdmUgdGFncyBvciBhbmNob3JzIGJlZm9yZSB0aGUgLSBpbmRpY2F0b3JcIjtvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKHcsQSkpfWJyZWFrO2RlZmF1bHQ6dy5lcnJvciYmby5lcnJvcnMucHVzaCh3LmVycm9yKSxvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTeW50YXhFcnJvcih3LFwiVW5leHBlY3RlZCBcIi5jb25jYXQody50eXBlLFwiIG5vZGUgaW4gc2VxdWVuY2VcIikpKX19cmV0dXJue2NvbW1lbnRzOl8saXRlbXM6dn19ZnVuY3Rpb24gYnQobyxsKXtsZXQgXz1bXSx2PVtdLGI9ITEsdyxBPW51bGwsTj1cIltcIixZPW51bGw7Zm9yKGxldCBXPTA7VzxsLml0ZW1zLmxlbmd0aDsrK1cpe2xldCBVPWwuaXRlbXNbV107aWYodHlwZW9mIFUuY2hhcj09XCJzdHJpbmdcIil7bGV0e2NoYXI6SCxvZmZzZXQ6b2V9PVU7aWYoSCE9PVwiOlwiJiYoYnx8dyE9PXZvaWQgMCkmJihiJiZ3PT09dm9pZCAwJiYodz1OP3YucG9wKCk6bnVsbCksdi5wdXNoKG5ldyBDKHcpKSxiPSExLHc9dm9pZCAwLEE9bnVsbCksSD09PU4pTj1udWxsO2Vsc2UgaWYoIU4mJkg9PT1cIj9cIiliPSEwO2Vsc2UgaWYoTiE9PVwiW1wiJiZIPT09XCI6XCImJnc9PT12b2lkIDApe2lmKE49PT1cIixcIil7aWYodz12LnBvcCgpLHcgaW5zdGFuY2VvZiBDKXtsZXQgbGU9XCJDaGFpbmluZyBmbG93IHNlcXVlbmNlIHBhaXJzIGlzIGludmFsaWRcIixaPW5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKGwsbGUpO1oub2Zmc2V0PW9lLG8uZXJyb3JzLnB1c2goWil9aWYoIWImJnR5cGVvZiBBPT1cIm51bWJlclwiKXtsZXQgbGU9VS5yYW5nZT9VLnJhbmdlLnN0YXJ0OlUub2Zmc2V0O2xlPkErMTAyNCYmby5lcnJvcnMucHVzaChuZShsLHcpKTtsZXR7c3JjOlp9PVkuY29udGV4dDtmb3IobGV0IGVlPUE7ZWU8bGU7KytlZSlpZihaW2VlXT09PWBcbmApe2xldCBYPVwiSW1wbGljaXQga2V5cyBvZiBmbG93IHNlcXVlbmNlIHBhaXJzIG5lZWQgdG8gYmUgb24gYSBzaW5nbGUgbGluZVwiO28uZXJyb3JzLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IoWSxYKSk7YnJlYWt9fX1lbHNlIHc9bnVsbDtBPW51bGwsYj0hMSxOPW51bGx9ZWxzZSBpZihOPT09XCJbXCJ8fEghPT1cIl1cInx8VzxsLml0ZW1zLmxlbmd0aC0xKXtsZXQgbGU9XCJGbG93IHNlcXVlbmNlIGNvbnRhaW5zIGFuIHVuZXhwZWN0ZWQgXCIuY29uY2F0KEgpLFo9bmV3IGUuWUFNTFN5bnRheEVycm9yKGwsbGUpO1oub2Zmc2V0PW9lLG8uZXJyb3JzLnB1c2goWil9fWVsc2UgaWYoVS50eXBlPT09ZS5UeXBlLkJMQU5LX0xJTkUpXy5wdXNoKHtiZWZvcmU6di5sZW5ndGh9KTtlbHNlIGlmKFUudHlwZT09PWUuVHlwZS5DT01NRU5UKUcoby5lcnJvcnMsVSksXy5wdXNoKHtjb21tZW50OlUuY29tbWVudCxiZWZvcmU6di5sZW5ndGh9KTtlbHNle2lmKE4pe2xldCBvZT1cIkV4cGVjdGVkIGEgXCIuY29uY2F0KE4sXCIgaW4gZmxvdyBzZXF1ZW5jZVwiKTtvLmVycm9ycy5wdXNoKG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKFUsb2UpKX1sZXQgSD13ZShvLFUpO3c9PT12b2lkIDA/KHYucHVzaChIKSxZPVUpOih2LnB1c2gobmV3IEModyxIKSksdz12b2lkIDApLEE9VS5yYW5nZS5zdGFydCxOPVwiLFwifX1yZXR1cm4geChvLmVycm9ycyxsKSx3IT09dm9pZCAwJiZ2LnB1c2gobmV3IEModykpLHtjb21tZW50czpfLGl0ZW1zOnZ9fXIuQWxpYXM9UixyLkNvbGxlY3Rpb249UyxyLk1lcmdlPWEsci5Ob2RlPWgsci5QYWlyPUMsci5TY2FsYXI9eSxyLllBTUxNYXA9SyxyLllBTUxTZXE9VCxyLmFkZENvbW1lbnQ9YyxyLmJpbmFyeU9wdGlvbnM9dCxyLmJvb2xPcHRpb25zPXMsci5maW5kUGFpcj1qLHIuaW50T3B0aW9ucz1pLHIuaXNFbXB0eVBhdGg9SSxyLm51bGxPcHRpb25zPWYsci5yZXNvbHZlTWFwPWR0LHIucmVzb2x2ZU5vZGU9d2Usci5yZXNvbHZlU2VxPXZ0LHIucmVzb2x2ZVN0cmluZz15ZSxyLnN0ck9wdGlvbnM9ZyxyLnN0cmluZ2lmeU51bWJlcj1KLHIuc3RyaW5naWZ5U3RyaW5nPVYsci50b0pTT049ZH19KSxpdD1GKHtcIm5vZGVfbW9kdWxlcy95YW1sL2Rpc3Qvd2FybmluZ3MtMTAwMGEzNzIuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCk7dmFyIGU9TWUoKSxuPWtlKCksYz17aWRlbnRpZnk6dT0+dSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksZGVmYXVsdDohMSx0YWc6XCJ0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnlcIixyZXNvbHZlOih1LHApPT57bGV0IEw9bi5yZXNvbHZlU3RyaW5nKHUscCk7aWYodHlwZW9mIEJ1ZmZlcj09XCJmdW5jdGlvblwiKXJldHVybiBCdWZmZXIuZnJvbShMLFwiYmFzZTY0XCIpO2lmKHR5cGVvZiBhdG9iPT1cImZ1bmN0aW9uXCIpe2xldCBrPWF0b2IoTC5yZXBsYWNlKC9bXFxuXFxyXS9nLFwiXCIpKSxCPW5ldyBVaW50OEFycmF5KGsubGVuZ3RoKTtmb3IobGV0ICQ9MDskPGsubGVuZ3RoOysrJClCWyRdPWsuY2hhckNvZGVBdCgkKTtyZXR1cm4gQn1lbHNle2xldCBrPVwiVGhpcyBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgYmluYXJ5IHRhZ3M7IGVpdGhlciBCdWZmZXIgb3IgYXRvYiBpcyByZXF1aXJlZFwiO3JldHVybiB1LmVycm9ycy5wdXNoKG5ldyBlLllBTUxSZWZlcmVuY2VFcnJvcihwLGspKSxudWxsfX0sb3B0aW9uczpuLmJpbmFyeU9wdGlvbnMsc3RyaW5naWZ5Oih1LHAsTCxrKT0+e2xldHtjb21tZW50OkIsdHlwZTokLHZhbHVlOlF9PXUsejtpZih0eXBlb2YgQnVmZmVyPT1cImZ1bmN0aW9uXCIpej1RIGluc3RhbmNlb2YgQnVmZmVyP1EudG9TdHJpbmcoXCJiYXNlNjRcIik6QnVmZmVyLmZyb20oUS5idWZmZXIpLnRvU3RyaW5nKFwiYmFzZTY0XCIpO2Vsc2UgaWYodHlwZW9mIGJ0b2E9PVwiZnVuY3Rpb25cIil7bGV0IGllPVwiXCI7Zm9yKGxldCB1ZT0wO3VlPFEubGVuZ3RoOysrdWUpaWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoUVt1ZV0pO3o9YnRvYShpZSl9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgd3JpdGluZyBiaW5hcnkgdGFnczsgZWl0aGVyIEJ1ZmZlciBvciBidG9hIGlzIHJlcXVpcmVkXCIpO2lmKCR8fCgkPW4uYmluYXJ5T3B0aW9ucy5kZWZhdWx0VHlwZSksJD09PWUuVHlwZS5RVU9URV9ET1VCTEUpUT16O2Vsc2V7bGV0e2xpbmVXaWR0aDppZX09bi5iaW5hcnlPcHRpb25zLHVlPU1hdGguY2VpbCh6Lmxlbmd0aC9pZSkscGU9bmV3IEFycmF5KHVlKTtmb3IobGV0IGdlPTAsTz0wO2dlPHVlOysrZ2UsTys9aWUpcGVbZ2VdPXouc3Vic3RyKE8saWUpO1E9cGUuam9pbigkPT09ZS5UeXBlLkJMT0NLX0xJVEVSQUw/YFxuYDpcIiBcIil9cmV0dXJuIG4uc3RyaW5naWZ5U3RyaW5nKHtjb21tZW50OkIsdHlwZTokLHZhbHVlOlF9LHAsTCxrKX19O2Z1bmN0aW9uIGgodSxwKXtsZXQgTD1uLnJlc29sdmVTZXEodSxwKTtmb3IobGV0IGs9MDtrPEwuaXRlbXMubGVuZ3RoOysrayl7bGV0IEI9TC5pdGVtc1trXTtpZighKEIgaW5zdGFuY2VvZiBuLlBhaXIpKXtpZihCIGluc3RhbmNlb2Ygbi5ZQU1MTWFwKXtpZihCLml0ZW1zLmxlbmd0aD4xKXtsZXQgUT1cIkVhY2ggcGFpciBtdXN0IGhhdmUgaXRzIG93biBzZXF1ZW5jZSBpbmRpY2F0b3JcIjt0aHJvdyBuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihwLFEpfWxldCAkPUIuaXRlbXNbMF18fG5ldyBuLlBhaXI7Qi5jb21tZW50QmVmb3JlJiYoJC5jb21tZW50QmVmb3JlPSQuY29tbWVudEJlZm9yZT9cIlwiLmNvbmNhdChCLmNvbW1lbnRCZWZvcmUsYFxuYCkuY29uY2F0KCQuY29tbWVudEJlZm9yZSk6Qi5jb21tZW50QmVmb3JlKSxCLmNvbW1lbnQmJigkLmNvbW1lbnQ9JC5jb21tZW50P1wiXCIuY29uY2F0KEIuY29tbWVudCxgXG5gKS5jb25jYXQoJC5jb21tZW50KTpCLmNvbW1lbnQpLEI9JH1MLml0ZW1zW2tdPUIgaW5zdGFuY2VvZiBuLlBhaXI/QjpuZXcgbi5QYWlyKEIpfX1yZXR1cm4gTH1mdW5jdGlvbiBkKHUscCxMKXtsZXQgaz1uZXcgbi5ZQU1MU2VxKHUpO2sudGFnPVwidGFnOnlhbWwub3JnLDIwMDI6cGFpcnNcIjtmb3IobGV0IEIgb2YgcCl7bGV0ICQsUTtpZihBcnJheS5pc0FycmF5KEIpKWlmKEIubGVuZ3RoPT09MikkPUJbMF0sUT1CWzFdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIFtrZXksIHZhbHVlXSB0dXBsZTogXCIuY29uY2F0KEIpKTtlbHNlIGlmKEImJkIgaW5zdGFuY2VvZiBPYmplY3Qpe2xldCBpZT1PYmplY3Qua2V5cyhCKTtpZihpZS5sZW5ndGg9PT0xKSQ9aWVbMF0sUT1CWyRdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIHsga2V5OiB2YWx1ZSB9IHR1cGxlOiBcIi5jb25jYXQoQikpfWVsc2UgJD1CO2xldCB6PXUuY3JlYXRlUGFpcigkLFEsTCk7ay5pdGVtcy5wdXNoKHopfXJldHVybiBrfXZhciB5PXtkZWZhdWx0OiExLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOnBhaXJzXCIscmVzb2x2ZTpoLGNyZWF0ZU5vZGU6ZH0sRT1jbGFzcyBleHRlbmRzIG4uWUFNTFNlcXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksZS5fZGVmaW5lUHJvcGVydHkodGhpcyxcImFkZFwiLG4uWUFNTE1hcC5wcm90b3R5cGUuYWRkLmJpbmQodGhpcykpLGUuX2RlZmluZVByb3BlcnR5KHRoaXMsXCJkZWxldGVcIixuLllBTUxNYXAucHJvdG90eXBlLmRlbGV0ZS5iaW5kKHRoaXMpKSxlLl9kZWZpbmVQcm9wZXJ0eSh0aGlzLFwiZ2V0XCIsbi5ZQU1MTWFwLnByb3RvdHlwZS5nZXQuYmluZCh0aGlzKSksZS5fZGVmaW5lUHJvcGVydHkodGhpcyxcImhhc1wiLG4uWUFNTE1hcC5wcm90b3R5cGUuaGFzLmJpbmQodGhpcykpLGUuX2RlZmluZVByb3BlcnR5KHRoaXMsXCJzZXRcIixuLllBTUxNYXAucHJvdG90eXBlLnNldC5iaW5kKHRoaXMpKSx0aGlzLnRhZz1FLnRhZ310b0pTT04odSxwKXtsZXQgTD1uZXcgTWFwO3AmJnAub25DcmVhdGUmJnAub25DcmVhdGUoTCk7Zm9yKGxldCBrIG9mIHRoaXMuaXRlbXMpe2xldCBCLCQ7aWYoayBpbnN0YW5jZW9mIG4uUGFpcj8oQj1uLnRvSlNPTihrLmtleSxcIlwiLHApLCQ9bi50b0pTT04oay52YWx1ZSxCLHApKTpCPW4udG9KU09OKGssXCJcIixwKSxMLmhhcyhCKSl0aHJvdyBuZXcgRXJyb3IoXCJPcmRlcmVkIG1hcHMgbXVzdCBub3QgaW5jbHVkZSBkdXBsaWNhdGUga2V5c1wiKTtMLnNldChCLCQpfXJldHVybiBMfX07ZS5fZGVmaW5lUHJvcGVydHkoRSxcInRhZ1wiLFwidGFnOnlhbWwub3JnLDIwMDI6b21hcFwiKTtmdW5jdGlvbiBJKHUscCl7bGV0IEw9aCh1LHApLGs9W107Zm9yKGxldHtrZXk6Qn1vZiBMLml0ZW1zKWlmKEIgaW5zdGFuY2VvZiBuLlNjYWxhcilpZihrLmluY2x1ZGVzKEIudmFsdWUpKXtsZXQgJD1cIk9yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzXCI7dGhyb3cgbmV3IGUuWUFNTFNlbWFudGljRXJyb3IocCwkKX1lbHNlIGsucHVzaChCLnZhbHVlKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgRSxMKX1mdW5jdGlvbiBTKHUscCxMKXtsZXQgaz1kKHUscCxMKSxCPW5ldyBFO3JldHVybiBCLml0ZW1zPWsuaXRlbXMsQn12YXIgTT17aWRlbnRpZnk6dT0+dSBpbnN0YW5jZW9mIE1hcCxub2RlQ2xhc3M6RSxkZWZhdWx0OiExLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOm9tYXBcIixyZXNvbHZlOkksY3JlYXRlTm9kZTpTfSxUPWNsYXNzIGV4dGVuZHMgbi5ZQU1MTWFwe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnRhZz1ULnRhZ31hZGQodSl7bGV0IHA9dSBpbnN0YW5jZW9mIG4uUGFpcj91Om5ldyBuLlBhaXIodSk7bi5maW5kUGFpcih0aGlzLml0ZW1zLHAua2V5KXx8dGhpcy5pdGVtcy5wdXNoKHApfWdldCh1LHApe2xldCBMPW4uZmluZFBhaXIodGhpcy5pdGVtcyx1KTtyZXR1cm4hcCYmTCBpbnN0YW5jZW9mIG4uUGFpcj9MLmtleSBpbnN0YW5jZW9mIG4uU2NhbGFyP0wua2V5LnZhbHVlOkwua2V5Okx9c2V0KHUscCl7aWYodHlwZW9mIHAhPVwiYm9vbGVhblwiKXRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGJvb2xlYW4gdmFsdWUgZm9yIHNldChrZXksIHZhbHVlKSBpbiBhIFlBTUwgc2V0LCBub3QgXCIuY29uY2F0KHR5cGVvZiBwKSk7bGV0IEw9bi5maW5kUGFpcih0aGlzLml0ZW1zLHUpO0wmJiFwP3RoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihMKSwxKTohTCYmcCYmdGhpcy5pdGVtcy5wdXNoKG5ldyBuLlBhaXIodSkpfXRvSlNPTih1LHApe3JldHVybiBzdXBlci50b0pTT04odSxwLFNldCl9dG9TdHJpbmcodSxwLEwpe2lmKCF1KXJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtpZih0aGlzLmhhc0FsbE51bGxWYWx1ZXMoKSlyZXR1cm4gc3VwZXIudG9TdHJpbmcodSxwLEwpO3Rocm93IG5ldyBFcnJvcihcIlNldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzXCIpfX07ZS5fZGVmaW5lUHJvcGVydHkoVCxcInRhZ1wiLFwidGFnOnlhbWwub3JnLDIwMDI6c2V0XCIpO2Z1bmN0aW9uIFAodSxwKXtsZXQgTD1uLnJlc29sdmVNYXAodSxwKTtpZighTC5oYXNBbGxOdWxsVmFsdWVzKCkpdGhyb3cgbmV3IGUuWUFNTFNlbWFudGljRXJyb3IocCxcIlNldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzXCIpO3JldHVybiBPYmplY3QuYXNzaWduKG5ldyBULEwpfWZ1bmN0aW9uIEModSxwLEwpe2xldCBrPW5ldyBUO2ZvcihsZXQgQiBvZiBwKWsuaXRlbXMucHVzaCh1LmNyZWF0ZVBhaXIoQixudWxsLEwpKTtyZXR1cm4ga312YXIgcT17aWRlbnRpZnk6dT0+dSBpbnN0YW5jZW9mIFNldCxub2RlQ2xhc3M6VCxkZWZhdWx0OiExLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOnNldFwiLHJlc29sdmU6UCxjcmVhdGVOb2RlOkN9LFI9KHUscCk9PntsZXQgTD1wLnNwbGl0KFwiOlwiKS5yZWR1Y2UoKGssQik9PmsqNjArTnVtYmVyKEIpLDApO3JldHVybiB1PT09XCItXCI/LUw6TH0saj11PT57bGV0e3ZhbHVlOnB9PXU7aWYoaXNOYU4ocCl8fCFpc0Zpbml0ZShwKSlyZXR1cm4gbi5zdHJpbmdpZnlOdW1iZXIocCk7bGV0IEw9XCJcIjtwPDAmJihMPVwiLVwiLHA9TWF0aC5hYnMocCkpO2xldCBrPVtwJTYwXTtyZXR1cm4gcDw2MD9rLnVuc2hpZnQoMCk6KHA9TWF0aC5yb3VuZCgocC1rWzBdKS82MCksay51bnNoaWZ0KHAlNjApLHA+PTYwJiYocD1NYXRoLnJvdW5kKChwLWtbMF0pLzYwKSxrLnVuc2hpZnQocCkpKSxMK2subWFwKEI9PkI8MTA/XCIwXCIrU3RyaW5nKEIpOlN0cmluZyhCKSkuam9pbihcIjpcIikucmVwbGFjZSgvMDAwMDAwXFxkKiQvLFwiXCIpfSxLPXtpZGVudGlmeTp1PT50eXBlb2YgdT09XCJudW1iZXJcIixkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLGZvcm1hdDpcIlRJTUVcIix0ZXN0Oi9eKFstK10/KShbMC05XVswLTlfXSooPzo6WzAtNV0/WzAtOV0pKykkLyxyZXNvbHZlOih1LHAsTCk9PlIocCxMLnJlcGxhY2UoL18vZyxcIlwiKSksc3RyaW5naWZ5Omp9LG09e2lkZW50aWZ5OnU9PnR5cGVvZiB1PT1cIm51bWJlclwiLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIixmb3JtYXQ6XCJUSU1FXCIsdGVzdDovXihbLStdPykoWzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKStcXC5bMC05X10qKSQvLHJlc29sdmU6KHUscCxMKT0+UihwLEwucmVwbGFjZSgvXy9nLFwiXCIpKSxzdHJpbmdpZnk6an0sYT17aWRlbnRpZnk6dT0+dSBpbnN0YW5jZW9mIERhdGUsZGVmYXVsdDohMCx0YWc6XCJ0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXBcIix0ZXN0OlJlZ0V4cChcIl4oPzooWzAtOV17NH0pLShbMC05XXsxLDJ9KS0oWzAtOV17MSwyfSkoPzooPzp0fFR8WyBcXFxcdF0rKShbMC05XXsxLDJ9KTooWzAtOV17MSwyfSk6KFswLTldezEsMn0oXFxcXC5bMC05XSspPykoPzpbIFxcXFx0XSooWnxbLStdWzAxMl0/WzAtOV0oPzo6WzAtOV17Mn0pPykpPyk/KSRcIikscmVzb2x2ZToodSxwLEwsayxCLCQsUSx6LGllKT0+e3omJih6PSh6K1wiMDBcIikuc3Vic3RyKDEsMykpO2xldCB1ZT1EYXRlLlVUQyhwLEwtMSxrLEJ8fDAsJHx8MCxRfHwwLHp8fDApO2lmKGllJiZpZSE9PVwiWlwiKXtsZXQgcGU9UihpZVswXSxpZS5zbGljZSgxKSk7TWF0aC5hYnMocGUpPDMwJiYocGUqPTYwKSx1ZS09NmU0KnBlfXJldHVybiBuZXcgRGF0ZSh1ZSl9LHN0cmluZ2lmeTp1PT57bGV0e3ZhbHVlOnB9PXU7cmV0dXJuIHAudG9JU09TdHJpbmcoKS5yZXBsYWNlKC8oKFQwMDowMCk/OjAwKT9cXC4wMDBaJC8sXCJcIil9fTtmdW5jdGlvbiB0KHUpe2xldCBwPXR5cGVvZiBUZTxcInVcIiYmVGUuZW52fHx7fTtyZXR1cm4gdT90eXBlb2YgWUFNTF9TSUxFTkNFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTPFwidVwiPyFZQU1MX1NJTEVOQ0VfREVQUkVDQVRJT05fV0FSTklOR1M6IXAuWUFNTF9TSUxFTkNFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTOnR5cGVvZiBZQU1MX1NJTEVOQ0VfV0FSTklOR1M8XCJ1XCI/IVlBTUxfU0lMRU5DRV9XQVJOSU5HUzohcC5ZQU1MX1NJTEVOQ0VfV0FSTklOR1N9ZnVuY3Rpb24gcyh1LHApe2lmKHQoITEpKXtsZXQgTD10eXBlb2YgVGU8XCJ1XCImJlRlLmVtaXRXYXJuaW5nO0w/TCh1LHApOmNvbnNvbGUud2FybihwP1wiXCIuY29uY2F0KHAsXCI6IFwiKS5jb25jYXQodSk6dSl9fWZ1bmN0aW9uIGkodSl7aWYodCghMCkpe2xldCBwPXUucmVwbGFjZSgvLip5YW1sWy9cXFxcXS9pLFwiXCIpLnJlcGxhY2UoL1xcLmpzJC8sXCJcIikucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTtzKFwiVGhlIGVuZHBvaW50ICd5YW1sL1wiLmNvbmNhdChwLFwiJyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIiksXCJEZXByZWNhdGlvbldhcm5pbmdcIil9fXZhciBmPXt9O2Z1bmN0aW9uIGcodSxwKXtpZighZlt1XSYmdCghMCkpe2ZbdV09ITA7bGV0IEw9XCJUaGUgb3B0aW9uICdcIi5jb25jYXQodSxcIicgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2VcIik7TCs9cD9cIiwgdXNlICdcIi5jb25jYXQocCxcIicgaW5zdGVhZC5cIik6XCIuXCIscyhMLFwiRGVwcmVjYXRpb25XYXJuaW5nXCIpfX1yLmJpbmFyeT1jLHIuZmxvYXRUaW1lPW0sci5pbnRUaW1lPUssci5vbWFwPU0sci5wYWlycz15LHIuc2V0PXEsci50aW1lc3RhbXA9YSxyLndhcm49cyxyLndhcm5GaWxlRGVwcmVjYXRpb249aSxyLndhcm5PcHRpb25EZXByZWNhdGlvbj1nfX0pLG90PUYoe1wibm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9TY2hlbWEtODhlMzIzYTcuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCk7dmFyIGU9TWUoKSxuPWtlKCksYz1pdCgpO2Z1bmN0aW9uIGgoTyxWLEope2xldCB4PW5ldyBuLllBTUxNYXAoTyk7aWYoViBpbnN0YW5jZW9mIE1hcClmb3IobGV0W0csbmVdb2YgVil4Lml0ZW1zLnB1c2goTy5jcmVhdGVQYWlyKEcsbmUsSikpO2Vsc2UgaWYoViYmdHlwZW9mIFY9PVwib2JqZWN0XCIpZm9yKGxldCBHIG9mIE9iamVjdC5rZXlzKFYpKXguaXRlbXMucHVzaChPLmNyZWF0ZVBhaXIoRyxWW0ddLEopKTtyZXR1cm4gdHlwZW9mIE8uc29ydE1hcEVudHJpZXM9PVwiZnVuY3Rpb25cIiYmeC5pdGVtcy5zb3J0KE8uc29ydE1hcEVudHJpZXMpLHh9dmFyIGQ9e2NyZWF0ZU5vZGU6aCxkZWZhdWx0OiEwLG5vZGVDbGFzczpuLllBTUxNYXAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6bWFwXCIscmVzb2x2ZTpuLnJlc29sdmVNYXB9O2Z1bmN0aW9uIHkoTyxWLEope2xldCB4PW5ldyBuLllBTUxTZXEoTyk7aWYoViYmVltTeW1ib2wuaXRlcmF0b3JdKWZvcihsZXQgRyBvZiBWKXtsZXQgbmU9Ty5jcmVhdGVOb2RlKEcsSi53cmFwU2NhbGFycyxudWxsLEopO3guaXRlbXMucHVzaChuZSl9cmV0dXJuIHh9dmFyIEU9e2NyZWF0ZU5vZGU6eSxkZWZhdWx0OiEwLG5vZGVDbGFzczpuLllBTUxTZXEsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6c2VxXCIscmVzb2x2ZTpuLnJlc29sdmVTZXF9LEk9e2lkZW50aWZ5Ok89PnR5cGVvZiBPPT1cInN0cmluZ1wiLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6c3RyXCIscmVzb2x2ZTpuLnJlc29sdmVTdHJpbmcsc3RyaW5naWZ5KE8sVixKLHgpe3JldHVybiBWPU9iamVjdC5hc3NpZ24oe2FjdHVhbFN0cmluZzohMH0sViksbi5zdHJpbmdpZnlTdHJpbmcoTyxWLEoseCl9LG9wdGlvbnM6bi5zdHJPcHRpb25zfSxTPVtkLEUsSV0sTT1PPT50eXBlb2YgTz09XCJiaWdpbnRcInx8TnVtYmVyLmlzSW50ZWdlcihPKSxUPShPLFYsSik9Pm4uaW50T3B0aW9ucy5hc0JpZ0ludD9CaWdJbnQoTyk6cGFyc2VJbnQoVixKKTtmdW5jdGlvbiBQKE8sVixKKXtsZXR7dmFsdWU6eH09TztyZXR1cm4gTSh4KSYmeD49MD9KK3gudG9TdHJpbmcoVik6bi5zdHJpbmdpZnlOdW1iZXIoTyl9dmFyIEM9e2lkZW50aWZ5Ok89Pk89PW51bGwsY3JlYXRlTm9kZTooTyxWLEopPT5KLndyYXBTY2FsYXJzP25ldyBuLlNjYWxhcihudWxsKTpudWxsLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6bnVsbFwiLHRlc3Q6L14oPzp+fFtObl11bGx8TlVMTCk/JC8scmVzb2x2ZTooKT0+bnVsbCxvcHRpb25zOm4ubnVsbE9wdGlvbnMsc3RyaW5naWZ5OigpPT5uLm51bGxPcHRpb25zLm51bGxTdHJ9LHE9e2lkZW50aWZ5Ok89PnR5cGVvZiBPPT1cImJvb2xlYW5cIixkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmJvb2xcIix0ZXN0Oi9eKD86W1R0XXJ1ZXxUUlVFfFtGZl1hbHNlfEZBTFNFKSQvLHJlc29sdmU6Tz0+T1swXT09PVwidFwifHxPWzBdPT09XCJUXCIsb3B0aW9uczpuLmJvb2xPcHRpb25zLHN0cmluZ2lmeTpPPT57bGV0e3ZhbHVlOlZ9PU87cmV0dXJuIFY/bi5ib29sT3B0aW9ucy50cnVlU3RyOm4uYm9vbE9wdGlvbnMuZmFsc2VTdHJ9fSxSPXtpZGVudGlmeTpPPT5NKE8pJiZPPj0wLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsZm9ybWF0OlwiT0NUXCIsdGVzdDovXjBvKFswLTddKykkLyxyZXNvbHZlOihPLFYpPT5UKE8sViw4KSxvcHRpb25zOm4uaW50T3B0aW9ucyxzdHJpbmdpZnk6Tz0+UChPLDgsXCIwb1wiKX0saj17aWRlbnRpZnk6TSxkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLHRlc3Q6L15bLStdP1swLTldKyQvLHJlc29sdmU6Tz0+VChPLE8sMTApLG9wdGlvbnM6bi5pbnRPcHRpb25zLHN0cmluZ2lmeTpuLnN0cmluZ2lmeU51bWJlcn0sSz17aWRlbnRpZnk6Tz0+TShPKSYmTz49MCxkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLGZvcm1hdDpcIkhFWFwiLHRlc3Q6L14weChbMC05YS1mQS1GXSspJC8scmVzb2x2ZTooTyxWKT0+VChPLFYsMTYpLG9wdGlvbnM6bi5pbnRPcHRpb25zLHN0cmluZ2lmeTpPPT5QKE8sMTYsXCIweFwiKX0sbT17aWRlbnRpZnk6Tz0+dHlwZW9mIE89PVwibnVtYmVyXCIsZGVmYXVsdDohMCx0YWc6XCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLHRlc3Q6L14oPzpbLStdP1xcLmluZnwoXFwubmFuKSkkL2kscmVzb2x2ZTooTyxWKT0+Vj9OYU46T1swXT09PVwiLVwiP051bWJlci5ORUdBVElWRV9JTkZJTklUWTpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksc3RyaW5naWZ5Om4uc3RyaW5naWZ5TnVtYmVyfSxhPXtpZGVudGlmeTpPPT50eXBlb2YgTz09XCJudW1iZXJcIixkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsZm9ybWF0OlwiRVhQXCIsdGVzdDovXlstK10/KD86XFwuWzAtOV0rfFswLTldKyg/OlxcLlswLTldKik/KVtlRV1bLStdP1swLTldKyQvLHJlc29sdmU6Tz0+cGFyc2VGbG9hdChPKSxzdHJpbmdpZnk6Tz0+e2xldHt2YWx1ZTpWfT1PO3JldHVybiBOdW1iZXIoVikudG9FeHBvbmVudGlhbCgpfX0sdD17aWRlbnRpZnk6Tz0+dHlwZW9mIE89PVwibnVtYmVyXCIsZGVmYXVsdDohMCx0YWc6XCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLHRlc3Q6L15bLStdPyg/OlxcLihbMC05XSspfFswLTldK1xcLihbMC05XSopKSQvLHJlc29sdmUoTyxWLEope2xldCB4PVZ8fEosRz1uZXcgbi5TY2FsYXIocGFyc2VGbG9hdChPKSk7cmV0dXJuIHgmJnhbeC5sZW5ndGgtMV09PT1cIjBcIiYmKEcubWluRnJhY3Rpb25EaWdpdHM9eC5sZW5ndGgpLEd9LHN0cmluZ2lmeTpuLnN0cmluZ2lmeU51bWJlcn0scz1TLmNvbmNhdChbQyxxLFIsaixLLG0sYSx0XSksaT1PPT50eXBlb2YgTz09XCJiaWdpbnRcInx8TnVtYmVyLmlzSW50ZWdlcihPKSxmPU89PntsZXR7dmFsdWU6Vn09TztyZXR1cm4gSlNPTi5zdHJpbmdpZnkoVil9LGc9W2QsRSx7aWRlbnRpZnk6Tz0+dHlwZW9mIE89PVwic3RyaW5nXCIsZGVmYXVsdDohMCx0YWc6XCJ0YWc6eWFtbC5vcmcsMjAwMjpzdHJcIixyZXNvbHZlOm4ucmVzb2x2ZVN0cmluZyxzdHJpbmdpZnk6Zn0se2lkZW50aWZ5Ok89Pk89PW51bGwsY3JlYXRlTm9kZTooTyxWLEopPT5KLndyYXBTY2FsYXJzP25ldyBuLlNjYWxhcihudWxsKTpudWxsLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6bnVsbFwiLHRlc3Q6L15udWxsJC8scmVzb2x2ZTooKT0+bnVsbCxzdHJpbmdpZnk6Zn0se2lkZW50aWZ5Ok89PnR5cGVvZiBPPT1cImJvb2xlYW5cIixkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmJvb2xcIix0ZXN0Oi9edHJ1ZXxmYWxzZSQvLHJlc29sdmU6Tz0+Tz09PVwidHJ1ZVwiLHN0cmluZ2lmeTpmfSx7aWRlbnRpZnk6aSxkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLHRlc3Q6L14tPyg/OjB8WzEtOV1bMC05XSopJC8scmVzb2x2ZTpPPT5uLmludE9wdGlvbnMuYXNCaWdJbnQ/QmlnSW50KE8pOnBhcnNlSW50KE8sMTApLHN0cmluZ2lmeTpPPT57bGV0e3ZhbHVlOlZ9PU87cmV0dXJuIGkoVik/Vi50b1N0cmluZygpOkpTT04uc3RyaW5naWZ5KFYpfX0se2lkZW50aWZ5Ok89PnR5cGVvZiBPPT1cIm51bWJlclwiLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIix0ZXN0Oi9eLT8oPzowfFsxLTldWzAtOV0qKSg/OlxcLlswLTldKik/KD86W2VFXVstK10/WzAtOV0rKT8kLyxyZXNvbHZlOk89PnBhcnNlRmxvYXQoTyksc3RyaW5naWZ5OmZ9XTtnLnNjYWxhckZhbGxiYWNrPU89Pnt0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJVbnJlc29sdmVkIHBsYWluIHNjYWxhciBcIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkoTykpKX07dmFyIHU9Tz0+e2xldHt2YWx1ZTpWfT1PO3JldHVybiBWP24uYm9vbE9wdGlvbnMudHJ1ZVN0cjpuLmJvb2xPcHRpb25zLmZhbHNlU3RyfSxwPU89PnR5cGVvZiBPPT1cImJpZ2ludFwifHxOdW1iZXIuaXNJbnRlZ2VyKE8pO2Z1bmN0aW9uIEwoTyxWLEope2xldCB4PVYucmVwbGFjZSgvXy9nLFwiXCIpO2lmKG4uaW50T3B0aW9ucy5hc0JpZ0ludCl7c3dpdGNoKEope2Nhc2UgMjp4PVwiMGJcIi5jb25jYXQoeCk7YnJlYWs7Y2FzZSA4Ong9XCIwb1wiLmNvbmNhdCh4KTticmVhaztjYXNlIDE2Ong9XCIweFwiLmNvbmNhdCh4KTticmVha31sZXQgbmU9QmlnSW50KHgpO3JldHVybiBPPT09XCItXCI/QmlnSW50KC0xKSpuZTpuZX1sZXQgRz1wYXJzZUludCh4LEopO3JldHVybiBPPT09XCItXCI/LTEqRzpHfWZ1bmN0aW9uIGsoTyxWLEope2xldHt2YWx1ZTp4fT1PO2lmKHAoeCkpe2xldCBHPXgudG9TdHJpbmcoVik7cmV0dXJuIHg8MD9cIi1cIitKK0cuc3Vic3RyKDEpOkorR31yZXR1cm4gbi5zdHJpbmdpZnlOdW1iZXIoTyl9dmFyIEI9Uy5jb25jYXQoW3tpZGVudGlmeTpPPT5PPT1udWxsLGNyZWF0ZU5vZGU6KE8sVixKKT0+Si53cmFwU2NhbGFycz9uZXcgbi5TY2FsYXIobnVsbCk6bnVsbCxkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOm51bGxcIix0ZXN0Oi9eKD86fnxbTm5ddWxsfE5VTEwpPyQvLHJlc29sdmU6KCk9Pm51bGwsb3B0aW9uczpuLm51bGxPcHRpb25zLHN0cmluZ2lmeTooKT0+bi5udWxsT3B0aW9ucy5udWxsU3RyfSx7aWRlbnRpZnk6Tz0+dHlwZW9mIE89PVwiYm9vbGVhblwiLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6Ym9vbFwiLHRlc3Q6L14oPzpZfHl8W1l5XWVzfFlFU3xbVHRdcnVlfFRSVUV8W09vXW58T04pJC8scmVzb2x2ZTooKT0+ITAsb3B0aW9uczpuLmJvb2xPcHRpb25zLHN0cmluZ2lmeTp1fSx7aWRlbnRpZnk6Tz0+dHlwZW9mIE89PVwiYm9vbGVhblwiLGRlZmF1bHQ6ITAsdGFnOlwidGFnOnlhbWwub3JnLDIwMDI6Ym9vbFwiLHRlc3Q6L14oPzpOfG58W05uXW98Tk98W0ZmXWFsc2V8RkFMU0V8W09vXWZmfE9GRikkL2kscmVzb2x2ZTooKT0+ITEsb3B0aW9uczpuLmJvb2xPcHRpb25zLHN0cmluZ2lmeTp1fSx7aWRlbnRpZnk6cCxkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLGZvcm1hdDpcIkJJTlwiLHRlc3Q6L14oWy0rXT8pMGIoWzAtMV9dKykkLyxyZXNvbHZlOihPLFYsSik9PkwoVixKLDIpLHN0cmluZ2lmeTpPPT5rKE8sMixcIjBiXCIpfSx7aWRlbnRpZnk6cCxkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLGZvcm1hdDpcIk9DVFwiLHRlc3Q6L14oWy0rXT8pMChbMC03X10rKSQvLHJlc29sdmU6KE8sVixKKT0+TChWLEosOCksc3RyaW5naWZ5Ok89PmsoTyw4LFwiMFwiKX0se2lkZW50aWZ5OnAsZGVmYXVsdDohMCx0YWc6XCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcIix0ZXN0Oi9eKFstK10/KShbMC05XVswLTlfXSopJC8scmVzb2x2ZTooTyxWLEopPT5MKFYsSiwxMCksc3RyaW5naWZ5Om4uc3RyaW5naWZ5TnVtYmVyfSx7aWRlbnRpZnk6cCxkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLGZvcm1hdDpcIkhFWFwiLHRlc3Q6L14oWy0rXT8pMHgoWzAtOWEtZkEtRl9dKykkLyxyZXNvbHZlOihPLFYsSik9PkwoVixKLDE2KSxzdHJpbmdpZnk6Tz0+ayhPLDE2LFwiMHhcIil9LHtpZGVudGlmeTpPPT50eXBlb2YgTz09XCJudW1iZXJcIixkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsdGVzdDovXig/OlstK10/XFwuaW5mfChcXC5uYW4pKSQvaSxyZXNvbHZlOihPLFYpPT5WP05hTjpPWzBdPT09XCItXCI/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzdHJpbmdpZnk6bi5zdHJpbmdpZnlOdW1iZXJ9LHtpZGVudGlmeTpPPT50eXBlb2YgTz09XCJudW1iZXJcIixkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsZm9ybWF0OlwiRVhQXCIsdGVzdDovXlstK10/KFswLTldWzAtOV9dKik/KFxcLlswLTlfXSopP1tlRV1bLStdP1swLTldKyQvLHJlc29sdmU6Tz0+cGFyc2VGbG9hdChPLnJlcGxhY2UoL18vZyxcIlwiKSksc3RyaW5naWZ5Ok89PntsZXR7dmFsdWU6Vn09TztyZXR1cm4gTnVtYmVyKFYpLnRvRXhwb25lbnRpYWwoKX19LHtpZGVudGlmeTpPPT50eXBlb2YgTz09XCJudW1iZXJcIixkZWZhdWx0OiEwLHRhZzpcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsdGVzdDovXlstK10/KD86WzAtOV1bMC05X10qKT9cXC4oWzAtOV9dKikkLyxyZXNvbHZlKE8sVil7bGV0IEo9bmV3IG4uU2NhbGFyKHBhcnNlRmxvYXQoTy5yZXBsYWNlKC9fL2csXCJcIikpKTtpZihWKXtsZXQgeD1WLnJlcGxhY2UoL18vZyxcIlwiKTt4W3gubGVuZ3RoLTFdPT09XCIwXCImJihKLm1pbkZyYWN0aW9uRGlnaXRzPXgubGVuZ3RoKX1yZXR1cm4gSn0sc3RyaW5naWZ5Om4uc3RyaW5naWZ5TnVtYmVyfV0sYy5iaW5hcnksYy5vbWFwLGMucGFpcnMsYy5zZXQsYy5pbnRUaW1lLGMuZmxvYXRUaW1lLGMudGltZXN0YW1wKSwkPXtjb3JlOnMsZmFpbHNhZmU6Uyxqc29uOmcseWFtbDExOkJ9LFE9e2JpbmFyeTpjLmJpbmFyeSxib29sOnEsZmxvYXQ6dCxmbG9hdEV4cDphLGZsb2F0TmFOOm0sZmxvYXRUaW1lOmMuZmxvYXRUaW1lLGludDpqLGludEhleDpLLGludE9jdDpSLGludFRpbWU6Yy5pbnRUaW1lLG1hcDpkLG51bGw6QyxvbWFwOmMub21hcCxwYWlyczpjLnBhaXJzLHNlcTpFLHNldDpjLnNldCx0aW1lc3RhbXA6Yy50aW1lc3RhbXB9O2Z1bmN0aW9uIHooTyxWLEope2lmKFYpe2xldCB4PUouZmlsdGVyKG5lPT5uZS50YWc9PT1WKSxHPXguZmluZChuZT0+IW5lLmZvcm1hdCl8fHhbMF07aWYoIUcpdGhyb3cgbmV3IEVycm9yKFwiVGFnIFwiLmNvbmNhdChWLFwiIG5vdCBmb3VuZFwiKSk7cmV0dXJuIEd9cmV0dXJuIEouZmluZCh4PT4oeC5pZGVudGlmeSYmeC5pZGVudGlmeShPKXx8eC5jbGFzcyYmTyBpbnN0YW5jZW9mIHguY2xhc3MpJiYheC5mb3JtYXQpfWZ1bmN0aW9uIGllKE8sVixKKXtpZihPIGluc3RhbmNlb2Ygbi5Ob2RlKXJldHVybiBPO2xldHtkZWZhdWx0UHJlZml4Ongsb25UYWdPYmo6RyxwcmV2T2JqZWN0czpuZSxzY2hlbWE6X2Usd3JhcFNjYWxhcnM6eWV9PUo7ViYmVi5zdGFydHNXaXRoKFwiISFcIikmJihWPXgrVi5zbGljZSgyKSk7bGV0IGJlPXooTyxWLF9lLnRhZ3MpO2lmKCFiZSl7aWYodHlwZW9mIE8udG9KU09OPT1cImZ1bmN0aW9uXCImJihPPU8udG9KU09OKCkpLCFPfHx0eXBlb2YgTyE9XCJvYmplY3RcIilyZXR1cm4geWU/bmV3IG4uU2NhbGFyKE8pOk87YmU9TyBpbnN0YW5jZW9mIE1hcD9kOk9bU3ltYm9sLml0ZXJhdG9yXT9FOmR9RyYmKEcoYmUpLGRlbGV0ZSBKLm9uVGFnT2JqKTtsZXQgdmU9e3ZhbHVlOnZvaWQgMCxub2RlOnZvaWQgMH07aWYoTyYmdHlwZW9mIE89PVwib2JqZWN0XCImJm5lKXtsZXQgTmU9bmUuZ2V0KE8pO2lmKE5lKXtsZXQgUGU9bmV3IG4uQWxpYXMoTmUpO3JldHVybiBKLmFsaWFzTm9kZXMucHVzaChQZSksUGV9dmUudmFsdWU9TyxuZS5zZXQoTyx2ZSl9cmV0dXJuIHZlLm5vZGU9YmUuY3JlYXRlTm9kZT9iZS5jcmVhdGVOb2RlKEouc2NoZW1hLE8sSik6eWU/bmV3IG4uU2NhbGFyKE8pOk8sViYmdmUubm9kZSBpbnN0YW5jZW9mIG4uTm9kZSYmKHZlLm5vZGUudGFnPVYpLHZlLm5vZGV9ZnVuY3Rpb24gdWUoTyxWLEoseCl7bGV0IEc9T1t4LnJlcGxhY2UoL1xcVy9nLFwiXCIpXTtpZighRyl7bGV0IG5lPU9iamVjdC5rZXlzKE8pLm1hcChfZT0+SlNPTi5zdHJpbmdpZnkoX2UpKS5qb2luKFwiLCBcIik7dGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHNjaGVtYSBcIicuY29uY2F0KHgsJ1wiOyB1c2Ugb25lIG9mICcpLmNvbmNhdChuZSkpfWlmKEFycmF5LmlzQXJyYXkoSikpZm9yKGxldCBuZSBvZiBKKUc9Ry5jb25jYXQobmUpO2Vsc2UgdHlwZW9mIEo9PVwiZnVuY3Rpb25cIiYmKEc9SihHLnNsaWNlKCkpKTtmb3IobGV0IG5lPTA7bmU8Ry5sZW5ndGg7KytuZSl7bGV0IF9lPUdbbmVdO2lmKHR5cGVvZiBfZT09XCJzdHJpbmdcIil7bGV0IHllPVZbX2VdO2lmKCF5ZSl7bGV0IGJlPU9iamVjdC5rZXlzKFYpLm1hcCh2ZT0+SlNPTi5zdHJpbmdpZnkodmUpKS5qb2luKFwiLCBcIik7dGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGN1c3RvbSB0YWcgXCInLmNvbmNhdChfZSwnXCI7IHVzZSBvbmUgb2YgJykuY29uY2F0KGJlKSl9R1tuZV09eWV9fXJldHVybiBHfXZhciBwZT0oTyxWKT0+Ty5rZXk8Vi5rZXk/LTE6Ty5rZXk+Vi5rZXk/MTowLGdlPWNsYXNze2NvbnN0cnVjdG9yKE8pe2xldHtjdXN0b21UYWdzOlYsbWVyZ2U6SixzY2hlbWE6eCxzb3J0TWFwRW50cmllczpHLHRhZ3M6bmV9PU87dGhpcy5tZXJnZT0hIUosdGhpcy5uYW1lPXgsdGhpcy5zb3J0TWFwRW50cmllcz1HPT09ITA/cGU6R3x8bnVsbCwhViYmbmUmJmMud2Fybk9wdGlvbkRlcHJlY2F0aW9uKFwidGFnc1wiLFwiY3VzdG9tVGFnc1wiKSx0aGlzLnRhZ3M9dWUoJCxRLFZ8fG5lLHgpfWNyZWF0ZU5vZGUoTyxWLEoseCl7bGV0IEc9e2RlZmF1bHRQcmVmaXg6Z2UuZGVmYXVsdFByZWZpeCxzY2hlbWE6dGhpcyx3cmFwU2NhbGFyczpWfSxuZT14P09iamVjdC5hc3NpZ24oeCxHKTpHO3JldHVybiBpZShPLEosbmUpfWNyZWF0ZVBhaXIoTyxWLEope0p8fChKPXt3cmFwU2NhbGFyczohMH0pO2xldCB4PXRoaXMuY3JlYXRlTm9kZShPLEoud3JhcFNjYWxhcnMsbnVsbCxKKSxHPXRoaXMuY3JlYXRlTm9kZShWLEoud3JhcFNjYWxhcnMsbnVsbCxKKTtyZXR1cm4gbmV3IG4uUGFpcih4LEcpfX07ZS5fZGVmaW5lUHJvcGVydHkoZ2UsXCJkZWZhdWx0UHJlZml4XCIsZS5kZWZhdWx0VGFnUHJlZml4KSxlLl9kZWZpbmVQcm9wZXJ0eShnZSxcImRlZmF1bHRUYWdzXCIsZS5kZWZhdWx0VGFncyksci5TY2hlbWE9Z2V9fSksem49Rih7XCJub2RlX21vZHVsZXMveWFtbC9kaXN0L0RvY3VtZW50LTliNDU2MGExLmpzXCIocil7XCJ1c2Ugc3RyaWN0XCI7RCgpO3ZhciBlPU1lKCksbj1rZSgpLGM9b3QoKSxoPXthbmNob3JQcmVmaXg6XCJhXCIsY3VzdG9tVGFnczpudWxsLGluZGVudDoyLGluZGVudFNlcTohMCxrZWVwQ3N0Tm9kZXM6ITEsa2VlcE5vZGVUeXBlczohMCxrZWVwQmxvYnNJbkpTT046ITAsbWFwQXNNYXA6ITEsbWF4QWxpYXNDb3VudDoxMDAscHJldHR5RXJyb3JzOiExLHNpbXBsZUtleXM6ITEsdmVyc2lvbjpcIjEuMlwifSxkPXtnZXQgYmluYXJ5KCl7cmV0dXJuIG4uYmluYXJ5T3B0aW9uc30sc2V0IGJpbmFyeSh0KXtPYmplY3QuYXNzaWduKG4uYmluYXJ5T3B0aW9ucyx0KX0sZ2V0IGJvb2woKXtyZXR1cm4gbi5ib29sT3B0aW9uc30sc2V0IGJvb2wodCl7T2JqZWN0LmFzc2lnbihuLmJvb2xPcHRpb25zLHQpfSxnZXQgaW50KCl7cmV0dXJuIG4uaW50T3B0aW9uc30sc2V0IGludCh0KXtPYmplY3QuYXNzaWduKG4uaW50T3B0aW9ucyx0KX0sZ2V0IG51bGwoKXtyZXR1cm4gbi5udWxsT3B0aW9uc30sc2V0IG51bGwodCl7T2JqZWN0LmFzc2lnbihuLm51bGxPcHRpb25zLHQpfSxnZXQgc3RyKCl7cmV0dXJuIG4uc3RyT3B0aW9uc30sc2V0IHN0cih0KXtPYmplY3QuYXNzaWduKG4uc3RyT3B0aW9ucyx0KX19LHk9e1wiMS4wXCI6e3NjaGVtYTpcInlhbWwtMS4xXCIsbWVyZ2U6ITAsdGFnUHJlZml4ZXM6W3toYW5kbGU6XCIhXCIscHJlZml4OmUuZGVmYXVsdFRhZ1ByZWZpeH0se2hhbmRsZTpcIiEhXCIscHJlZml4OlwidGFnOnByaXZhdGUueWFtbC5vcmcsMjAwMjpcIn1dfSwxLjE6e3NjaGVtYTpcInlhbWwtMS4xXCIsbWVyZ2U6ITAsdGFnUHJlZml4ZXM6W3toYW5kbGU6XCIhXCIscHJlZml4OlwiIVwifSx7aGFuZGxlOlwiISFcIixwcmVmaXg6ZS5kZWZhdWx0VGFnUHJlZml4fV19LDEuMjp7c2NoZW1hOlwiY29yZVwiLG1lcmdlOiExLHRhZ1ByZWZpeGVzOlt7aGFuZGxlOlwiIVwiLHByZWZpeDpcIiFcIn0se2hhbmRsZTpcIiEhXCIscHJlZml4OmUuZGVmYXVsdFRhZ1ByZWZpeH1dfX07ZnVuY3Rpb24gRSh0LHMpe2lmKCh0LnZlcnNpb258fHQub3B0aW9ucy52ZXJzaW9uKT09PVwiMS4wXCIpe2xldCBnPXMubWF0Y2goL150YWc6cHJpdmF0ZVxcLnlhbWxcXC5vcmcsMjAwMjooW146L10rKSQvKTtpZihnKXJldHVyblwiIVwiK2dbMV07bGV0IHU9cy5tYXRjaCgvXnRhZzooW2EtekEtWjAtOS1dKylcXC55YW1sXFwub3JnLDIwMDI6KC4qKS8pO3JldHVybiB1P1wiIVwiLmNvbmNhdCh1WzFdLFwiL1wiKS5jb25jYXQodVsyXSk6XCIhXCIuY29uY2F0KHMucmVwbGFjZSgvXnRhZzovLFwiXCIpKX1sZXQgaT10LnRhZ1ByZWZpeGVzLmZpbmQoZz0+cy5pbmRleE9mKGcucHJlZml4KT09PTApO2lmKCFpKXtsZXQgZz10LmdldERlZmF1bHRzKCkudGFnUHJlZml4ZXM7aT1nJiZnLmZpbmQodT0+cy5pbmRleE9mKHUucHJlZml4KT09PTApfWlmKCFpKXJldHVybiBzWzBdPT09XCIhXCI/czpcIiE8XCIuY29uY2F0KHMsXCI+XCIpO2xldCBmPXMuc3Vic3RyKGkucHJlZml4Lmxlbmd0aCkucmVwbGFjZSgvWyEsW1xcXXt9XS9nLGc9Pih7XCIhXCI6XCIlMjFcIixcIixcIjpcIiUyQ1wiLFwiW1wiOlwiJTVCXCIsXCJdXCI6XCIlNURcIixcIntcIjpcIiU3QlwiLFwifVwiOlwiJTdEXCJ9KVtnXSk7cmV0dXJuIGkuaGFuZGxlK2Z9ZnVuY3Rpb24gSSh0LHMpe2lmKHMgaW5zdGFuY2VvZiBuLkFsaWFzKXJldHVybiBuLkFsaWFzO2lmKHMudGFnKXtsZXQgZz10LmZpbHRlcih1PT51LnRhZz09PXMudGFnKTtpZihnLmxlbmd0aD4wKXJldHVybiBnLmZpbmQodT0+dS5mb3JtYXQ9PT1zLmZvcm1hdCl8fGdbMF19bGV0IGksZjtpZihzIGluc3RhbmNlb2Ygbi5TY2FsYXIpe2Y9cy52YWx1ZTtsZXQgZz10LmZpbHRlcih1PT51LmlkZW50aWZ5JiZ1LmlkZW50aWZ5KGYpfHx1LmNsYXNzJiZmIGluc3RhbmNlb2YgdS5jbGFzcyk7aT1nLmZpbmQodT0+dS5mb3JtYXQ9PT1zLmZvcm1hdCl8fGcuZmluZCh1PT4hdS5mb3JtYXQpfWVsc2UgZj1zLGk9dC5maW5kKGc9Pmcubm9kZUNsYXNzJiZmIGluc3RhbmNlb2YgZy5ub2RlQ2xhc3MpO2lmKCFpKXtsZXQgZz1mJiZmLmNvbnN0cnVjdG9yP2YuY29uc3RydWN0b3IubmFtZTp0eXBlb2YgZjt0aHJvdyBuZXcgRXJyb3IoXCJUYWcgbm90IHJlc29sdmVkIGZvciBcIi5jb25jYXQoZyxcIiB2YWx1ZVwiKSl9cmV0dXJuIGl9ZnVuY3Rpb24gUyh0LHMsaSl7bGV0e2FuY2hvcnM6Zixkb2M6Z309aSx1PVtdLHA9Zy5hbmNob3JzLmdldE5hbWUodCk7cmV0dXJuIHAmJihmW3BdPXQsdS5wdXNoKFwiJlwiLmNvbmNhdChwKSkpLHQudGFnP3UucHVzaChFKGcsdC50YWcpKTpzLmRlZmF1bHR8fHUucHVzaChFKGcscy50YWcpKSx1LmpvaW4oXCIgXCIpfWZ1bmN0aW9uIE0odCxzLGksZil7bGV0e2FuY2hvcnM6ZyxzY2hlbWE6dX09cy5kb2MscDtpZighKHQgaW5zdGFuY2VvZiBuLk5vZGUpKXtsZXQgQj17YWxpYXNOb2RlczpbXSxvblRhZ09iajokPT5wPSQscHJldk9iamVjdHM6bmV3IE1hcH07dD11LmNyZWF0ZU5vZGUodCwhMCxudWxsLEIpO2ZvcihsZXQgJCBvZiBCLmFsaWFzTm9kZXMpeyQuc291cmNlPSQuc291cmNlLm5vZGU7bGV0IFE9Zy5nZXROYW1lKCQuc291cmNlKTtRfHwoUT1nLm5ld05hbWUoKSxnLm1hcFtRXT0kLnNvdXJjZSl9fWlmKHQgaW5zdGFuY2VvZiBuLlBhaXIpcmV0dXJuIHQudG9TdHJpbmcocyxpLGYpO3B8fChwPUkodS50YWdzLHQpKTtsZXQgTD1TKHQscCxzKTtMLmxlbmd0aD4wJiYocy5pbmRlbnRBdFN0YXJ0PShzLmluZGVudEF0U3RhcnR8fDApK0wubGVuZ3RoKzEpO2xldCBrPXR5cGVvZiBwLnN0cmluZ2lmeT09XCJmdW5jdGlvblwiP3Auc3RyaW5naWZ5KHQscyxpLGYpOnQgaW5zdGFuY2VvZiBuLlNjYWxhcj9uLnN0cmluZ2lmeVN0cmluZyh0LHMsaSxmKTp0LnRvU3RyaW5nKHMsaSxmKTtyZXR1cm4gTD90IGluc3RhbmNlb2Ygbi5TY2FsYXJ8fGtbMF09PT1cIntcInx8a1swXT09PVwiW1wiP1wiXCIuY29uY2F0KEwsXCIgXCIpLmNvbmNhdChrKTpcIlwiLmNvbmNhdChMLGBcbmApLmNvbmNhdChzLmluZGVudCkuY29uY2F0KGspOmt9dmFyIFQ9Y2xhc3N7c3RhdGljIHZhbGlkQW5jaG9yTm9kZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIG4uU2NhbGFyfHx0IGluc3RhbmNlb2Ygbi5ZQU1MU2VxfHx0IGluc3RhbmNlb2Ygbi5ZQU1MTWFwfWNvbnN0cnVjdG9yKHQpe2UuX2RlZmluZVByb3BlcnR5KHRoaXMsXCJtYXBcIixPYmplY3QuY3JlYXRlKG51bGwpKSx0aGlzLnByZWZpeD10fWNyZWF0ZUFsaWFzKHQscyl7cmV0dXJuIHRoaXMuc2V0QW5jaG9yKHQscyksbmV3IG4uQWxpYXModCl9Y3JlYXRlTWVyZ2VQYWlyKCl7bGV0IHQ9bmV3IG4uTWVyZ2U7Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkocyksZj0wO2Y8cztmKyspaVtmXT1hcmd1bWVudHNbZl07cmV0dXJuIHQudmFsdWUuaXRlbXM9aS5tYXAoZz0+e2lmKGcgaW5zdGFuY2VvZiBuLkFsaWFzKXtpZihnLnNvdXJjZSBpbnN0YW5jZW9mIG4uWUFNTE1hcClyZXR1cm4gZ31lbHNlIGlmKGcgaW5zdGFuY2VvZiBuLllBTUxNYXApcmV0dXJuIHRoaXMuY3JlYXRlQWxpYXMoZyk7dGhyb3cgbmV3IEVycm9yKFwiTWVyZ2Ugc291cmNlcyBtdXN0IGJlIE1hcCBub2RlcyBvciB0aGVpciBBbGlhc2VzXCIpfSksdH1nZXROYW1lKHQpe2xldHttYXA6c309dGhpcztyZXR1cm4gT2JqZWN0LmtleXMocykuZmluZChpPT5zW2ldPT09dCl9Z2V0TmFtZXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5tYXApfWdldE5vZGUodCl7cmV0dXJuIHRoaXMubWFwW3RdfW5ld05hbWUodCl7dHx8KHQ9dGhpcy5wcmVmaXgpO2xldCBzPU9iamVjdC5rZXlzKHRoaXMubWFwKTtmb3IobGV0IGk9MTs7KytpKXtsZXQgZj1cIlwiLmNvbmNhdCh0KS5jb25jYXQoaSk7aWYoIXMuaW5jbHVkZXMoZikpcmV0dXJuIGZ9fXJlc29sdmVOb2Rlcygpe2xldHttYXA6dCxfY3N0QWxpYXNlczpzfT10aGlzO09iamVjdC5rZXlzKHQpLmZvckVhY2goaT0+e3RbaV09dFtpXS5yZXNvbHZlZH0pLHMuZm9yRWFjaChpPT57aS5zb3VyY2U9aS5zb3VyY2UucmVzb2x2ZWR9KSxkZWxldGUgdGhpcy5fY3N0QWxpYXNlc31zZXRBbmNob3IodCxzKXtpZih0IT1udWxsJiYhVC52YWxpZEFuY2hvck5vZGUodCkpdGhyb3cgbmV3IEVycm9yKFwiQW5jaG9ycyBtYXkgb25seSBiZSBzZXQgZm9yIFNjYWxhciwgU2VxIGFuZCBNYXAgbm9kZXNcIik7aWYocyYmL1tcXHgwMC1cXHgxOVxccyxbXFxde31dLy50ZXN0KHMpKXRocm93IG5ldyBFcnJvcihcIkFuY2hvciBuYW1lcyBtdXN0IG5vdCBjb250YWluIHdoaXRlc3BhY2Ugb3IgY29udHJvbCBjaGFyYWN0ZXJzXCIpO2xldHttYXA6aX09dGhpcyxmPXQmJk9iamVjdC5rZXlzKGkpLmZpbmQoZz0+aVtnXT09PXQpO2lmKGYpaWYocylmIT09cyYmKGRlbGV0ZSBpW2ZdLGlbc109dCk7ZWxzZSByZXR1cm4gZjtlbHNle2lmKCFzKXtpZighdClyZXR1cm4gbnVsbDtzPXRoaXMubmV3TmFtZSgpfWlbc109dH1yZXR1cm4gc319LFA9KHQscyk9PntpZih0JiZ0eXBlb2YgdD09XCJvYmplY3RcIil7bGV0e3RhZzppfT10O3QgaW5zdGFuY2VvZiBuLkNvbGxlY3Rpb24/KGkmJihzW2ldPSEwKSx0Lml0ZW1zLmZvckVhY2goZj0+UChmLHMpKSk6dCBpbnN0YW5jZW9mIG4uUGFpcj8oUCh0LmtleSxzKSxQKHQudmFsdWUscykpOnQgaW5zdGFuY2VvZiBuLlNjYWxhciYmaSYmKHNbaV09ITApfXJldHVybiBzfSxDPXQ9Pk9iamVjdC5rZXlzKFAodCx7fSkpO2Z1bmN0aW9uIHEodCxzKXtsZXQgaT17YmVmb3JlOltdLGFmdGVyOltdfSxmLGc9ITE7Zm9yKGxldCB1IG9mIHMpaWYodS52YWx1ZVJhbmdlKXtpZihmIT09dm9pZCAwKXtsZXQgTD1cIkRvY3VtZW50IGNvbnRhaW5zIHRyYWlsaW5nIGNvbnRlbnQgbm90IHNlcGFyYXRlZCBieSBhIC4uLiBvciAtLS0gbGluZVwiO3QuZXJyb3JzLnB1c2gobmV3IGUuWUFNTFN5bnRheEVycm9yKHUsTCkpO2JyZWFrfWxldCBwPW4ucmVzb2x2ZU5vZGUodCx1KTtnJiYocC5zcGFjZUJlZm9yZT0hMCxnPSExKSxmPXB9ZWxzZSB1LmNvbW1lbnQhPT1udWxsPyhmPT09dm9pZCAwP2kuYmVmb3JlOmkuYWZ0ZXIpLnB1c2godS5jb21tZW50KTp1LnR5cGU9PT1lLlR5cGUuQkxBTktfTElORSYmKGc9ITAsZj09PXZvaWQgMCYmaS5iZWZvcmUubGVuZ3RoPjAmJiF0LmNvbW1lbnRCZWZvcmUmJih0LmNvbW1lbnRCZWZvcmU9aS5iZWZvcmUuam9pbihgXG5gKSxpLmJlZm9yZT1bXSkpO2lmKHQuY29udGVudHM9Znx8bnVsbCwhZil0LmNvbW1lbnQ9aS5iZWZvcmUuY29uY2F0KGkuYWZ0ZXIpLmpvaW4oYFxuYCl8fG51bGw7ZWxzZXtsZXQgdT1pLmJlZm9yZS5qb2luKGBcbmApO2lmKHUpe2xldCBwPWYgaW5zdGFuY2VvZiBuLkNvbGxlY3Rpb24mJmYuaXRlbXNbMF0/Zi5pdGVtc1swXTpmO3AuY29tbWVudEJlZm9yZT1wLmNvbW1lbnRCZWZvcmU/XCJcIi5jb25jYXQodSxgXG5gKS5jb25jYXQocC5jb21tZW50QmVmb3JlKTp1fXQuY29tbWVudD1pLmFmdGVyLmpvaW4oYFxuYCl8fG51bGx9fWZ1bmN0aW9uIFIodCxzKXtsZXR7dGFnUHJlZml4ZXM6aX09dCxbZixnXT1zLnBhcmFtZXRlcnM7aWYoIWZ8fCFnKXtsZXQgdT1cIkluc3VmZmljaWVudCBwYXJhbWV0ZXJzIGdpdmVuIGZvciAlVEFHIGRpcmVjdGl2ZVwiO3Rocm93IG5ldyBlLllBTUxTZW1hbnRpY0Vycm9yKHMsdSl9aWYoaS5zb21lKHU9PnUuaGFuZGxlPT09Zikpe2xldCB1PVwiVGhlICVUQUcgZGlyZWN0aXZlIG11c3Qgb25seSBiZSBnaXZlbiBhdCBtb3N0IG9uY2UgcGVyIGhhbmRsZSBpbiB0aGUgc2FtZSBkb2N1bWVudC5cIjt0aHJvdyBuZXcgZS5ZQU1MU2VtYW50aWNFcnJvcihzLHUpfXJldHVybntoYW5kbGU6ZixwcmVmaXg6Z319ZnVuY3Rpb24gaih0LHMpe2xldFtpXT1zLnBhcmFtZXRlcnM7aWYocy5uYW1lPT09XCJZQU1MOjEuMFwiJiYoaT1cIjEuMFwiKSwhaSl7bGV0IGY9XCJJbnN1ZmZpY2llbnQgcGFyYW1ldGVycyBnaXZlbiBmb3IgJVlBTUwgZGlyZWN0aXZlXCI7dGhyb3cgbmV3IGUuWUFNTFNlbWFudGljRXJyb3IocyxmKX1pZigheVtpXSl7bGV0IGY9dC52ZXJzaW9ufHx0Lm9wdGlvbnMudmVyc2lvbixnPVwiRG9jdW1lbnQgd2lsbCBiZSBwYXJzZWQgYXMgWUFNTCBcIi5jb25jYXQoZixcIiByYXRoZXIgdGhhbiBZQU1MIFwiKS5jb25jYXQoaSk7dC53YXJuaW5ncy5wdXNoKG5ldyBlLllBTUxXYXJuaW5nKHMsZykpfXJldHVybiBpfWZ1bmN0aW9uIEsodCxzLGkpe2xldCBmPVtdLGc9ITE7Zm9yKGxldCB1IG9mIHMpe2xldHtjb21tZW50OnAsbmFtZTpMfT11O3N3aXRjaChMKXtjYXNlXCJUQUdcIjp0cnl7dC50YWdQcmVmaXhlcy5wdXNoKFIodCx1KSl9Y2F0Y2goayl7dC5lcnJvcnMucHVzaChrKX1nPSEwO2JyZWFrO2Nhc2VcIllBTUxcIjpjYXNlXCJZQU1MOjEuMFwiOmlmKHQudmVyc2lvbil7bGV0IGs9XCJUaGUgJVlBTUwgZGlyZWN0aXZlIG11c3Qgb25seSBiZSBnaXZlbiBhdCBtb3N0IG9uY2UgcGVyIGRvY3VtZW50LlwiO3QuZXJyb3JzLnB1c2gobmV3IGUuWUFNTFNlbWFudGljRXJyb3IodSxrKSl9dHJ5e3QudmVyc2lvbj1qKHQsdSl9Y2F0Y2goayl7dC5lcnJvcnMucHVzaChrKX1nPSEwO2JyZWFrO2RlZmF1bHQ6aWYoTCl7bGV0IGs9XCJZQU1MIG9ubHkgc3VwcG9ydHMgJVRBRyBhbmQgJVlBTUwgZGlyZWN0aXZlcywgYW5kIG5vdCAlXCIuY29uY2F0KEwpO3Qud2FybmluZ3MucHVzaChuZXcgZS5ZQU1MV2FybmluZyh1LGspKX19cCYmZi5wdXNoKHApfWlmKGkmJiFnJiYodC52ZXJzaW9ufHxpLnZlcnNpb258fHQub3B0aW9ucy52ZXJzaW9uKT09PVwiMS4xXCIpe2xldCB1PXA9PntsZXR7aGFuZGxlOkwscHJlZml4Omt9PXA7cmV0dXJue2hhbmRsZTpMLHByZWZpeDprfX07dC50YWdQcmVmaXhlcz1pLnRhZ1ByZWZpeGVzLm1hcCh1KSx0LnZlcnNpb249aS52ZXJzaW9ufXQuY29tbWVudEJlZm9yZT1mLmpvaW4oYFxuYCl8fG51bGx9ZnVuY3Rpb24gbSh0KXtpZih0IGluc3RhbmNlb2Ygbi5Db2xsZWN0aW9uKXJldHVybiEwO3Rocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGEgWUFNTCBjb2xsZWN0aW9uIGFzIGRvY3VtZW50IGNvbnRlbnRzXCIpfXZhciBhPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuYW5jaG9ycz1uZXcgVCh0LmFuY2hvclByZWZpeCksdGhpcy5jb21tZW50QmVmb3JlPW51bGwsdGhpcy5jb21tZW50PW51bGwsdGhpcy5jb250ZW50cz1udWxsLHRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlcj1udWxsLHRoaXMuZXJyb3JzPVtdLHRoaXMub3B0aW9ucz10LHRoaXMuc2NoZW1hPW51bGwsdGhpcy50YWdQcmVmaXhlcz1bXSx0aGlzLnZlcnNpb249bnVsbCx0aGlzLndhcm5pbmdzPVtdfWFkZCh0KXtyZXR1cm4gbSh0aGlzLmNvbnRlbnRzKSx0aGlzLmNvbnRlbnRzLmFkZCh0KX1hZGRJbih0LHMpe20odGhpcy5jb250ZW50cyksdGhpcy5jb250ZW50cy5hZGRJbih0LHMpfWRlbGV0ZSh0KXtyZXR1cm4gbSh0aGlzLmNvbnRlbnRzKSx0aGlzLmNvbnRlbnRzLmRlbGV0ZSh0KX1kZWxldGVJbih0KXtyZXR1cm4gbi5pc0VtcHR5UGF0aCh0KT90aGlzLmNvbnRlbnRzPT1udWxsPyExOih0aGlzLmNvbnRlbnRzPW51bGwsITApOihtKHRoaXMuY29udGVudHMpLHRoaXMuY29udGVudHMuZGVsZXRlSW4odCkpfWdldERlZmF1bHRzKCl7cmV0dXJuIGEuZGVmYXVsdHNbdGhpcy52ZXJzaW9uXXx8YS5kZWZhdWx0c1t0aGlzLm9wdGlvbnMudmVyc2lvbl18fHt9fWdldCh0LHMpe3JldHVybiB0aGlzLmNvbnRlbnRzIGluc3RhbmNlb2Ygbi5Db2xsZWN0aW9uP3RoaXMuY29udGVudHMuZ2V0KHQscyk6dm9pZCAwfWdldEluKHQscyl7cmV0dXJuIG4uaXNFbXB0eVBhdGgodCk/IXMmJnRoaXMuY29udGVudHMgaW5zdGFuY2VvZiBuLlNjYWxhcj90aGlzLmNvbnRlbnRzLnZhbHVlOnRoaXMuY29udGVudHM6dGhpcy5jb250ZW50cyBpbnN0YW5jZW9mIG4uQ29sbGVjdGlvbj90aGlzLmNvbnRlbnRzLmdldEluKHQscyk6dm9pZCAwfWhhcyh0KXtyZXR1cm4gdGhpcy5jb250ZW50cyBpbnN0YW5jZW9mIG4uQ29sbGVjdGlvbj90aGlzLmNvbnRlbnRzLmhhcyh0KTohMX1oYXNJbih0KXtyZXR1cm4gbi5pc0VtcHR5UGF0aCh0KT90aGlzLmNvbnRlbnRzIT09dm9pZCAwOnRoaXMuY29udGVudHMgaW5zdGFuY2VvZiBuLkNvbGxlY3Rpb24/dGhpcy5jb250ZW50cy5oYXNJbih0KTohMX1zZXQodCxzKXttKHRoaXMuY29udGVudHMpLHRoaXMuY29udGVudHMuc2V0KHQscyl9c2V0SW4odCxzKXtuLmlzRW1wdHlQYXRoKHQpP3RoaXMuY29udGVudHM9czoobSh0aGlzLmNvbnRlbnRzKSx0aGlzLmNvbnRlbnRzLnNldEluKHQscykpfXNldFNjaGVtYSh0LHMpe2lmKCF0JiYhcyYmdGhpcy5zY2hlbWEpcmV0dXJuO3R5cGVvZiB0PT1cIm51bWJlclwiJiYodD10LnRvRml4ZWQoMSkpLHQ9PT1cIjEuMFwifHx0PT09XCIxLjFcInx8dD09PVwiMS4yXCI/KHRoaXMudmVyc2lvbj90aGlzLnZlcnNpb249dDp0aGlzLm9wdGlvbnMudmVyc2lvbj10LGRlbGV0ZSB0aGlzLm9wdGlvbnMuc2NoZW1hKTp0JiZ0eXBlb2YgdD09XCJzdHJpbmdcIiYmKHRoaXMub3B0aW9ucy5zY2hlbWE9dCksQXJyYXkuaXNBcnJheShzKSYmKHRoaXMub3B0aW9ucy5jdXN0b21UYWdzPXMpO2xldCBpPU9iamVjdC5hc3NpZ24oe30sdGhpcy5nZXREZWZhdWx0cygpLHRoaXMub3B0aW9ucyk7dGhpcy5zY2hlbWE9bmV3IGMuU2NoZW1hKGkpfXBhcnNlKHQscyl7dGhpcy5vcHRpb25zLmtlZXBDc3ROb2RlcyYmKHRoaXMuY3N0Tm9kZT10KSx0aGlzLm9wdGlvbnMua2VlcE5vZGVUeXBlcyYmKHRoaXMudHlwZT1cIkRPQ1VNRU5UXCIpO2xldHtkaXJlY3RpdmVzOmk9W10sY29udGVudHM6Zj1bXSxkaXJlY3RpdmVzRW5kTWFya2VyOmcsZXJyb3I6dSx2YWx1ZVJhbmdlOnB9PXQ7aWYodSYmKHUuc291cmNlfHwodS5zb3VyY2U9dGhpcyksdGhpcy5lcnJvcnMucHVzaCh1KSksSyh0aGlzLGkscyksZyYmKHRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlcj0hMCksdGhpcy5yYW5nZT1wP1twLnN0YXJ0LHAuZW5kXTpudWxsLHRoaXMuc2V0U2NoZW1hKCksdGhpcy5hbmNob3JzLl9jc3RBbGlhc2VzPVtdLHEodGhpcyxmKSx0aGlzLmFuY2hvcnMucmVzb2x2ZU5vZGVzKCksdGhpcy5vcHRpb25zLnByZXR0eUVycm9ycyl7Zm9yKGxldCBMIG9mIHRoaXMuZXJyb3JzKUwgaW5zdGFuY2VvZiBlLllBTUxFcnJvciYmTC5tYWtlUHJldHR5KCk7Zm9yKGxldCBMIG9mIHRoaXMud2FybmluZ3MpTCBpbnN0YW5jZW9mIGUuWUFNTEVycm9yJiZMLm1ha2VQcmV0dHkoKX1yZXR1cm4gdGhpc31saXN0Tm9uRGVmYXVsdFRhZ3MoKXtyZXR1cm4gQyh0aGlzLmNvbnRlbnRzKS5maWx0ZXIodD0+dC5pbmRleE9mKGMuU2NoZW1hLmRlZmF1bHRQcmVmaXgpIT09MCl9c2V0VGFnUHJlZml4KHQscyl7aWYodFswXSE9PVwiIVwifHx0W3QubGVuZ3RoLTFdIT09XCIhXCIpdGhyb3cgbmV3IEVycm9yKFwiSGFuZGxlIG11c3Qgc3RhcnQgYW5kIGVuZCB3aXRoICFcIik7aWYocyl7bGV0IGk9dGhpcy50YWdQcmVmaXhlcy5maW5kKGY9PmYuaGFuZGxlPT09dCk7aT9pLnByZWZpeD1zOnRoaXMudGFnUHJlZml4ZXMucHVzaCh7aGFuZGxlOnQscHJlZml4OnN9KX1lbHNlIHRoaXMudGFnUHJlZml4ZXM9dGhpcy50YWdQcmVmaXhlcy5maWx0ZXIoaT0+aS5oYW5kbGUhPT10KX10b0pTT04odCxzKXtsZXR7a2VlcEJsb2JzSW5KU09OOmksbWFwQXNNYXA6ZixtYXhBbGlhc0NvdW50Omd9PXRoaXMub3B0aW9ucyx1PWkmJih0eXBlb2YgdCE9XCJzdHJpbmdcInx8ISh0aGlzLmNvbnRlbnRzIGluc3RhbmNlb2Ygbi5TY2FsYXIpKSxwPXtkb2M6dGhpcyxpbmRlbnRTdGVwOlwiICBcIixrZWVwOnUsbWFwQXNNYXA6dSYmISFmLG1heEFsaWFzQ291bnQ6ZyxzdHJpbmdpZnk6TX0sTD1PYmplY3Qua2V5cyh0aGlzLmFuY2hvcnMubWFwKTtMLmxlbmd0aD4wJiYocC5hbmNob3JzPW5ldyBNYXAoTC5tYXAoQj0+W3RoaXMuYW5jaG9ycy5tYXBbQl0se2FsaWFzOltdLGFsaWFzQ291bnQ6MCxjb3VudDoxfV0pKSk7bGV0IGs9bi50b0pTT04odGhpcy5jb250ZW50cyx0LHApO2lmKHR5cGVvZiBzPT1cImZ1bmN0aW9uXCImJnAuYW5jaG9ycylmb3IobGV0e2NvdW50OkIscmVzOiR9b2YgcC5hbmNob3JzLnZhbHVlcygpKXMoJCxCKTtyZXR1cm4ga310b1N0cmluZygpe2lmKHRoaXMuZXJyb3JzLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcihcIkRvY3VtZW50IHdpdGggZXJyb3JzIGNhbm5vdCBiZSBzdHJpbmdpZmllZFwiKTtsZXQgdD10aGlzLm9wdGlvbnMuaW5kZW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PD0wKXtsZXQgTD1KU09OLnN0cmluZ2lmeSh0KTt0aHJvdyBuZXcgRXJyb3IoJ1wiaW5kZW50XCIgb3B0aW9uIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBub3QgJy5jb25jYXQoTCkpfXRoaXMuc2V0U2NoZW1hKCk7bGV0IHM9W10saT0hMTtpZih0aGlzLnZlcnNpb24pe2xldCBMPVwiJVlBTUwgMS4yXCI7dGhpcy5zY2hlbWEubmFtZT09PVwieWFtbC0xLjFcIiYmKHRoaXMudmVyc2lvbj09PVwiMS4wXCI/TD1cIiVZQU1MOjEuMFwiOnRoaXMudmVyc2lvbj09PVwiMS4xXCImJihMPVwiJVlBTUwgMS4xXCIpKSxzLnB1c2goTCksaT0hMH1sZXQgZj10aGlzLmxpc3ROb25EZWZhdWx0VGFncygpO3RoaXMudGFnUHJlZml4ZXMuZm9yRWFjaChMPT57bGV0e2hhbmRsZTprLHByZWZpeDpCfT1MO2Yuc29tZSgkPT4kLmluZGV4T2YoQik9PT0wKSYmKHMucHVzaChcIiVUQUcgXCIuY29uY2F0KGssXCIgXCIpLmNvbmNhdChCKSksaT0hMCl9KSwoaXx8dGhpcy5kaXJlY3RpdmVzRW5kTWFya2VyKSYmcy5wdXNoKFwiLS0tXCIpLHRoaXMuY29tbWVudEJlZm9yZSYmKChpfHwhdGhpcy5kaXJlY3RpdmVzRW5kTWFya2VyKSYmcy51bnNoaWZ0KFwiXCIpLHMudW5zaGlmdCh0aGlzLmNvbW1lbnRCZWZvcmUucmVwbGFjZSgvXi9nbSxcIiNcIikpKTtsZXQgZz17YW5jaG9yczpPYmplY3QuY3JlYXRlKG51bGwpLGRvYzp0aGlzLGluZGVudDpcIlwiLGluZGVudFN0ZXA6XCIgXCIucmVwZWF0KHQpLHN0cmluZ2lmeTpNfSx1PSExLHA9bnVsbDtpZih0aGlzLmNvbnRlbnRzKXt0aGlzLmNvbnRlbnRzIGluc3RhbmNlb2Ygbi5Ob2RlJiYodGhpcy5jb250ZW50cy5zcGFjZUJlZm9yZSYmKGl8fHRoaXMuZGlyZWN0aXZlc0VuZE1hcmtlcikmJnMucHVzaChcIlwiKSx0aGlzLmNvbnRlbnRzLmNvbW1lbnRCZWZvcmUmJnMucHVzaCh0aGlzLmNvbnRlbnRzLmNvbW1lbnRCZWZvcmUucmVwbGFjZSgvXi9nbSxcIiNcIikpLGcuZm9yY2VCbG9ja0luZGVudD0hIXRoaXMuY29tbWVudCxwPXRoaXMuY29udGVudHMuY29tbWVudCk7bGV0IEw9cD9udWxsOigpPT51PSEwLGs9TSh0aGlzLmNvbnRlbnRzLGcsKCk9PnA9bnVsbCxMKTtzLnB1c2gobi5hZGRDb21tZW50KGssXCJcIixwKSl9ZWxzZSB0aGlzLmNvbnRlbnRzIT09dm9pZCAwJiZzLnB1c2goTSh0aGlzLmNvbnRlbnRzLGcpKTtyZXR1cm4gdGhpcy5jb21tZW50JiYoKCF1fHxwKSYmc1tzLmxlbmd0aC0xXSE9PVwiXCImJnMucHVzaChcIlwiKSxzLnB1c2godGhpcy5jb21tZW50LnJlcGxhY2UoL14vZ20sXCIjXCIpKSkscy5qb2luKGBcbmApK2BcbmB9fTtlLl9kZWZpbmVQcm9wZXJ0eShhLFwiZGVmYXVsdHNcIix5KSxyLkRvY3VtZW50PWEsci5kZWZhdWx0T3B0aW9ucz1oLHIuc2NhbGFyT3B0aW9ucz1kfX0pLFpuPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9pbmRleC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKTt2YXIgZT1HbigpLG49em4oKSxjPW90KCksaD1NZSgpLGQ9aXQoKTtrZSgpO2Z1bmN0aW9uIHkoQyl7bGV0IHE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOiEwLFI9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7Uj09PXZvaWQgMCYmdHlwZW9mIHE9PVwic3RyaW5nXCImJihSPXEscT0hMCk7bGV0IGo9T2JqZWN0LmFzc2lnbih7fSxuLkRvY3VtZW50LmRlZmF1bHRzW24uZGVmYXVsdE9wdGlvbnMudmVyc2lvbl0sbi5kZWZhdWx0T3B0aW9ucyk7cmV0dXJuIG5ldyBjLlNjaGVtYShqKS5jcmVhdGVOb2RlKEMscSxSKX12YXIgRT1jbGFzcyBleHRlbmRzIG4uRG9jdW1lbnR7Y29uc3RydWN0b3IoQyl7c3VwZXIoT2JqZWN0LmFzc2lnbih7fSxuLmRlZmF1bHRPcHRpb25zLEMpKX19O2Z1bmN0aW9uIEkoQyxxKXtsZXQgUj1bXSxqO2ZvcihsZXQgSyBvZiBlLnBhcnNlKEMpKXtsZXQgbT1uZXcgRShxKTttLnBhcnNlKEssaiksUi5wdXNoKG0pLGo9bX1yZXR1cm4gUn1mdW5jdGlvbiBTKEMscSl7bGV0IFI9ZS5wYXJzZShDKSxqPW5ldyBFKHEpLnBhcnNlKFJbMF0pO2lmKFIubGVuZ3RoPjEpe2xldCBLPVwiU291cmNlIGNvbnRhaW5zIG11bHRpcGxlIGRvY3VtZW50czsgcGxlYXNlIHVzZSBZQU1MLnBhcnNlQWxsRG9jdW1lbnRzKClcIjtqLmVycm9ycy51bnNoaWZ0KG5ldyBoLllBTUxTZW1hbnRpY0Vycm9yKFJbMV0sSykpfXJldHVybiBqfWZ1bmN0aW9uIE0oQyxxKXtsZXQgUj1TKEMscSk7aWYoUi53YXJuaW5ncy5mb3JFYWNoKGo9PmQud2FybihqKSksUi5lcnJvcnMubGVuZ3RoPjApdGhyb3cgUi5lcnJvcnNbMF07cmV0dXJuIFIudG9KU09OKCl9ZnVuY3Rpb24gVChDLHEpe2xldCBSPW5ldyBFKHEpO3JldHVybiBSLmNvbnRlbnRzPUMsU3RyaW5nKFIpfXZhciBQPXtjcmVhdGVOb2RlOnksZGVmYXVsdE9wdGlvbnM6bi5kZWZhdWx0T3B0aW9ucyxEb2N1bWVudDpFLHBhcnNlOk0scGFyc2VBbGxEb2N1bWVudHM6SSxwYXJzZUNTVDplLnBhcnNlLHBhcnNlRG9jdW1lbnQ6UyxzY2FsYXJPcHRpb25zOm4uc2NhbGFyT3B0aW9ucyxzdHJpbmdpZnk6VH07ci5ZQU1MPVB9fSksSmU9Rih7XCJub2RlX21vZHVsZXMveWFtbC9pbmRleC5qc1wiKHIsZSl7RCgpLGUuZXhwb3J0cz1abigpLllBTUx9fSksWG49Rih7XCJub2RlX21vZHVsZXMveWFtbC9kaXN0L3V0aWwuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCk7dmFyIGU9a2UoKSxuPU1lKCk7ci5maW5kUGFpcj1lLmZpbmRQYWlyLHIucGFyc2VNYXA9ZS5yZXNvbHZlTWFwLHIucGFyc2VTZXE9ZS5yZXNvbHZlU2VxLHIuc3RyaW5naWZ5TnVtYmVyPWUuc3RyaW5naWZ5TnVtYmVyLHIuc3RyaW5naWZ5U3RyaW5nPWUuc3RyaW5naWZ5U3RyaW5nLHIudG9KU09OPWUudG9KU09OLHIuVHlwZT1uLlR5cGUsci5ZQU1MRXJyb3I9bi5ZQU1MRXJyb3Isci5ZQU1MUmVmZXJlbmNlRXJyb3I9bi5ZQU1MUmVmZXJlbmNlRXJyb3Isci5ZQU1MU2VtYW50aWNFcnJvcj1uLllBTUxTZW1hbnRpY0Vycm9yLHIuWUFNTFN5bnRheEVycm9yPW4uWUFNTFN5bnRheEVycm9yLHIuWUFNTFdhcm5pbmc9bi5ZQU1MV2FybmluZ319KSxlcj1GKHtcIm5vZGVfbW9kdWxlcy95YW1sL3V0aWwuanNcIihyKXtEKCk7dmFyIGU9WG4oKTtyLmZpbmRQYWlyPWUuZmluZFBhaXIsci50b0pTT049ZS50b0pTT04sci5wYXJzZU1hcD1lLnBhcnNlTWFwLHIucGFyc2VTZXE9ZS5wYXJzZVNlcSxyLnN0cmluZ2lmeU51bWJlcj1lLnN0cmluZ2lmeU51bWJlcixyLnN0cmluZ2lmeVN0cmluZz1lLnN0cmluZ2lmeVN0cmluZyxyLlR5cGU9ZS5UeXBlLHIuWUFNTEVycm9yPWUuWUFNTEVycm9yLHIuWUFNTFJlZmVyZW5jZUVycm9yPWUuWUFNTFJlZmVyZW5jZUVycm9yLHIuWUFNTFNlbWFudGljRXJyb3I9ZS5ZQU1MU2VtYW50aWNFcnJvcixyLllBTUxTeW50YXhFcnJvcj1lLllBTUxTeW50YXhFcnJvcixyLllBTUxXYXJuaW5nPWUuWUFNTFdhcm5pbmd9fSksdHI9Rih7XCJub2RlX21vZHVsZXMveWFtbC11bmlzdC1wYXJzZXIvbGliL3lhbWwuanNcIihyKXtcInVzZSBzdHJpY3RcIjtEKCksci5fX2VzTW9kdWxlPSEwO3ZhciBlPUplKCk7ci5Eb2N1bWVudD1lLkRvY3VtZW50O3ZhciBuPUplKCk7ci5wYXJzZUNTVD1uLnBhcnNlQ1NUO3ZhciBjPWVyKCk7ci5ZQU1MRXJyb3I9Yy5ZQU1MRXJyb3Isci5ZQU1MU3ludGF4RXJyb3I9Yy5ZQU1MU3ludGF4RXJyb3Isci5ZQU1MU2VtYW50aWNFcnJvcj1jLllBTUxTZW1hbnRpY0Vycm9yfX0pLG5yPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9wYXJzZS5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9eHQoKSxuPUd0KCksYz16dCgpLGg9WnQoKSxkPUZuKCkseT16ZSgpLEU9Vm4oKSxJPVVuKCksUz1LbigpLE09JG4oKSxUPUpuKCksUD1IbigpLEM9dHIoKTtmdW5jdGlvbiBxKFIpe3ZhciBqPUMucGFyc2VDU1QoUik7TS5hZGRPcmlnUmFuZ2Uoaik7Zm9yKHZhciBLPWoubWFwKGZ1bmN0aW9uKGspe3JldHVybiBuZXcgQy5Eb2N1bWVudCh7bWVyZ2U6ITEsa2VlcENzdE5vZGVzOiEwfSkucGFyc2Uoayl9KSxtPW5ldyBlLmRlZmF1bHQoUiksYT1bXSx0PXt0ZXh0OlIsbG9jYXRvcjptLGNvbW1lbnRzOmEsdHJhbnNmb3JtT2Zmc2V0OmZ1bmN0aW9uKGspe3JldHVybiBJLnRyYW5zZm9ybU9mZnNldChrLHQpfSx0cmFuc2Zvcm1SYW5nZTpmdW5jdGlvbihrKXtyZXR1cm4gUy50cmFuc2Zvcm1SYW5nZShrLHQpfSx0cmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGspe3JldHVybiBkLnRyYW5zZm9ybU5vZGUoayx0KX0sdHJhbnNmb3JtQ29udGVudDpmdW5jdGlvbihrKXtyZXR1cm4geS50cmFuc2Zvcm1Db250ZW50KGssdCl9fSxzPTAsaT1LO3M8aS5sZW5ndGg7cysrKWZvcih2YXIgZj1pW3NdLGc9MCx1PWYuZXJyb3JzO2c8dS5sZW5ndGg7ZysrKXt2YXIgcD11W2ddO2lmKCEocCBpbnN0YW5jZW9mIEMuWUFNTFNlbWFudGljRXJyb3ImJnAubWVzc2FnZT09PSdNYXAga2V5cyBtdXN0IGJlIHVuaXF1ZTsgXCI8PFwiIGlzIHJlcGVhdGVkJykpdGhyb3cgRS50cmFuc2Zvcm1FcnJvcihwLHQpfUsuZm9yRWFjaChmdW5jdGlvbihrKXtyZXR1cm4gaC5yZW1vdmVDc3RCbGFua0xpbmUoay5jc3ROb2RlKX0pO3ZhciBMPWMuY3JlYXRlUm9vdCh0LnRyYW5zZm9ybVJhbmdlKHtvcmlnU3RhcnQ6MCxvcmlnRW5kOnQudGV4dC5sZW5ndGh9KSxLLm1hcCh0LnRyYW5zZm9ybU5vZGUpLGEpO3JldHVybiBuLmF0dGFjaENvbW1lbnRzKEwpLFAudXBkYXRlUG9zaXRpb25zKEwpLFQucmVtb3ZlRmFrZU5vZGVzKEwpLEx9ci5wYXJzZT1xfX0pLHJyPUYoe1wibm9kZV9tb2R1bGVzL3lhbWwtdW5pc3QtcGFyc2VyL2xpYi9pbmRleC5qc1wiKHIpe1widXNlIHN0cmljdFwiO0QoKSxyLl9fZXNNb2R1bGU9ITA7dmFyIGU9KGFlKCksc2UodGUpKTtlLl9fZXhwb3J0U3RhcihucigpLHIpfX0pO0QoKTt2YXIgc3I9THQoKSx7aGFzUHJhZ21hOmFyfT1BdCgpLHtsb2NTdGFydDppcixsb2NFbmQ6b3J9PU50KCk7ZnVuY3Rpb24gbHIocil7bGV0e3BhcnNlOmV9PXJyKCk7dHJ5e2xldCBuPWUocik7cmV0dXJuIGRlbGV0ZSBuLmNvbW1lbnRzLG59Y2F0Y2gobil7dGhyb3cgbiE9bnVsbCYmbi5wb3NpdGlvbj9zcihuLm1lc3NhZ2Usbi5wb3NpdGlvbik6bn19dmFyIGNyPXthc3RGb3JtYXQ6XCJ5YW1sXCIscGFyc2U6bHIsaGFzUHJhZ21hOmFyLGxvY1N0YXJ0OmlyLGxvY0VuZDpvcn07bHQuZXhwb3J0cz17cGFyc2Vyczp7eWFtbDpjcn19fSk7cmV0dXJuIHVyKCk7fSk7IiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZ2V0T3duUHJvcE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgX19jb21tb25KUyA9IChjYiwgbW9kKSA9PiBmdW5jdGlvbiBfX3JlcXVpcmUoKSB7XG4gIHJldHVybiBtb2QgfHwgKDAsIGNiW19fZ2V0T3duUHJvcE5hbWVzKGNiKVswXV0pKChtb2QgPSB7IGV4cG9ydHM6IHt9IH0pLmV4cG9ydHMsIG1vZCksIG1vZC5leHBvcnRzO1xufTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1xudmFyIHJlcXVpcmVfZ2xvYmFsID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGNoZWNrID0gZnVuY3Rpb24oaXQpIHtcbiAgICAgIHJldHVybiBpdCAmJiBpdC5NYXRoID09IE1hdGggJiYgaXQ7XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSBcIm9iamVjdFwiICYmIGdsb2JhbFRoaXMpIHx8IGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gXCJvYmplY3RcIiAmJiB3aW5kb3cpIHx8IGNoZWNrKHR5cGVvZiBzZWxmID09IFwib2JqZWN0XCIgJiYgc2VsZikgfHwgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSBcIm9iamVjdFwiICYmIGdsb2JhbCkgfHwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9KCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXG52YXIgcmVxdWlyZV9mYWlscyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oZXhlYykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuICEhZXhlYygpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1xudmFyIHJlcXVpcmVfZGVzY3JpcHRvcnMgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBmYWlscyA9IHJlcXVpcmVfZmFpbHMoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiA3O1xuICAgICAgfSB9KVsxXSAhPSA3O1xuICAgIH0pO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzXG52YXIgcmVxdWlyZV9mdW5jdGlvbl9iaW5kX25hdGl2ZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGZhaWxzID0gcmVxdWlyZV9mYWlscygpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ZXN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICB9LmJpbmQoKTtcbiAgICAgIHJldHVybiB0eXBlb2YgdGVzdCAhPSBcImZ1bmN0aW9uXCIgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eShcInByb3RvdHlwZVwiKTtcbiAgICB9KTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXG52YXIgcmVxdWlyZV9mdW5jdGlvbl9jYWxsID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBOQVRJVkVfQklORCA9IHJlcXVpcmVfZnVuY3Rpb25fYmluZF9uYXRpdmUoKTtcbiAgICB2YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanNcbnZhciByZXF1aXJlX29iamVjdF9wcm9wZXJ0eV9pc19lbnVtZXJhYmxlID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4gICAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgdmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG4gICAgZXhwb3J0czIuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gICAgICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbiAgICB9IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXG52YXIgcmVxdWlyZV9jcmVhdGVfcHJvcGVydHlfZGVzY3JpcHRvciA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oYml0bWFwLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICAgICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgICAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICAgICAgdmFsdWVcbiAgICAgIH07XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcbnZhciByZXF1aXJlX2Z1bmN0aW9uX3VuY3VycnlfdGhpcyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBOQVRJVkVfQklORCA9IHJlcXVpcmVfZnVuY3Rpb25fYmluZF9uYXRpdmUoKTtcbiAgICB2YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gICAgdmFyIGJpbmQgPSBGdW5jdGlvblByb3RvdHlwZS5iaW5kO1xuICAgIHZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbiAgICB2YXIgdW5jdXJyeVRoaXMgPSBOQVRJVkVfQklORCAmJiBiaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBmdW5jdGlvbihmbikge1xuICAgICAgcmV0dXJuIGZuICYmIHVuY3VycnlUaGlzKGZuKTtcbiAgICB9IDogZnVuY3Rpb24oZm4pIHtcbiAgICAgIHJldHVybiBmbiAmJiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcbnZhciByZXF1aXJlX2NsYXNzb2ZfcmF3ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlX2Z1bmN0aW9uX3VuY3VycnlfdGhpcygpO1xuICAgIHZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbiAgICB2YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcyhcIlwiLnNsaWNlKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihpdCkge1xuICAgICAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanNcbnZhciByZXF1aXJlX2luZGV4ZWRfb2JqZWN0ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZV9mdW5jdGlvbl91bmN1cnJ5X3RoaXMoKTtcbiAgICB2YXIgZmFpbHMgPSByZXF1aXJlX2ZhaWxzKCk7XG4gICAgdmFyIGNsYXNzb2YgPSByZXF1aXJlX2NsYXNzb2ZfcmF3KCk7XG4gICAgdmFyIE9iamVjdDIgPSBnbG9iYWwyLk9iamVjdDtcbiAgICB2YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcyhcIlwiLnNwbGl0KTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAhT2JqZWN0MihcInpcIikucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG4gICAgfSkgPyBmdW5jdGlvbihpdCkge1xuICAgICAgcmV0dXJuIGNsYXNzb2YoaXQpID09IFwiU3RyaW5nXCIgPyBzcGxpdChpdCwgXCJcIikgOiBPYmplY3QyKGl0KTtcbiAgICB9IDogT2JqZWN0MjtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcbnZhciByZXF1aXJlX3JlcXVpcmVfb2JqZWN0X2NvZXJjaWJsZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgVHlwZUVycm9yMiA9IGdsb2JhbDIuVHlwZUVycm9yO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KSB7XG4gICAgICBpZiAoaXQgPT0gdm9pZCAwKVxuICAgICAgICB0aHJvdyBUeXBlRXJyb3IyKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gICAgICByZXR1cm4gaXQ7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qc1xudmFyIHJlcXVpcmVfdG9faW5kZXhlZF9vYmplY3QgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZV9pbmRleGVkX29iamVjdCgpO1xuICAgIHZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZV9yZXF1aXJlX29iamVjdF9jb2VyY2libGUoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihpdCkge1xuICAgICAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcbnZhciByZXF1aXJlX2lzX2NhbGxhYmxlID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihhcmd1bWVudCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSBcImZ1bmN0aW9uXCI7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcbnZhciByZXF1aXJlX2lzX29iamVjdCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBpc0NhbGxhYmxlID0gcmVxdWlyZV9pc19jYWxsYWJsZSgpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGl0ID09IFwib2JqZWN0XCIgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzXG52YXIgcmVxdWlyZV9nZXRfYnVpbHRfaW4gPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlX2lzX2NhbGxhYmxlKCk7XG4gICAgdmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uKGFyZ3VtZW50KSB7XG4gICAgICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHZvaWQgMDtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsMltuYW1lc3BhY2VdKSA6IGdsb2JhbDJbbmFtZXNwYWNlXSAmJiBnbG9iYWwyW25hbWVzcGFjZV1bbWV0aG9kXTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanNcbnZhciByZXF1aXJlX29iamVjdF9pc19wcm90b3R5cGVfb2YgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZV9mdW5jdGlvbl91bmN1cnJ5X3RoaXMoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qc1xudmFyIHJlcXVpcmVfZW5naW5lX3VzZXJfYWdlbnQgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBnZXRCdWlsdEluID0gcmVxdWlyZV9nZXRfYnVpbHRfaW4oKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBnZXRCdWlsdEluKFwibmF2aWdhdG9yXCIsIFwidXNlckFnZW50XCIpIHx8IFwiXCI7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanNcbnZhciByZXF1aXJlX2VuZ2luZV92OF92ZXJzaW9uID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIHVzZXJBZ2VudCA9IHJlcXVpcmVfZW5naW5lX3VzZXJfYWdlbnQoKTtcbiAgICB2YXIgcHJvY2VzczIgPSBnbG9iYWwyLnByb2Nlc3M7XG4gICAgdmFyIERlbm8gPSBnbG9iYWwyLkRlbm87XG4gICAgdmFyIHZlcnNpb25zID0gcHJvY2VzczIgJiYgcHJvY2VzczIudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG4gICAgdmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG4gICAgdmFyIG1hdGNoO1xuICAgIHZhciB2ZXJzaW9uMjtcbiAgICBpZiAodjgpIHtcbiAgICAgIG1hdGNoID0gdjguc3BsaXQoXCIuXCIpO1xuICAgICAgdmVyc2lvbjIgPSBtYXRjaFswXSA+IDAgJiYgbWF0Y2hbMF0gPCA0ID8gMSA6ICsobWF0Y2hbMF0gKyBtYXRjaFsxXSk7XG4gICAgfVxuICAgIGlmICghdmVyc2lvbjIgJiYgdXNlckFnZW50KSB7XG4gICAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICAgICAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgICAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgICAgIGlmIChtYXRjaClcbiAgICAgICAgICB2ZXJzaW9uMiA9ICttYXRjaFsxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gdmVyc2lvbjI7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qc1xudmFyIHJlcXVpcmVfbmF0aXZlX3N5bWJvbCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmVfZW5naW5lX3Y4X3ZlcnNpb24oKTtcbiAgICB2YXIgZmFpbHMgPSByZXF1aXJlX2ZhaWxzKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzeW1ib2wgPSBTeW1ib2woKTtcbiAgICAgIHJldHVybiAhU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHwgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xuICAgIH0pO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzXG52YXIgcmVxdWlyZV91c2Vfc3ltYm9sX2FzX3VpZCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlX25hdGl2ZV9zeW1ib2woKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MICYmICFTeW1ib2wuc2hhbSAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09IFwic3ltYm9sXCI7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzXG52YXIgcmVxdWlyZV9pc19zeW1ib2wgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlX2dldF9idWlsdF9pbigpO1xuICAgIHZhciBpc0NhbGxhYmxlID0gcmVxdWlyZV9pc19jYWxsYWJsZSgpO1xuICAgIHZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZV9vYmplY3RfaXNfcHJvdG90eXBlX29mKCk7XG4gICAgdmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZV91c2Vfc3ltYm9sX2FzX3VpZCgpO1xuICAgIHZhciBPYmplY3QyID0gZ2xvYmFsMi5PYmplY3Q7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbihpdCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBpdCA9PSBcInN5bWJvbFwiO1xuICAgIH0gOiBmdW5jdGlvbihpdCkge1xuICAgICAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKFwiU3ltYm9sXCIpO1xuICAgICAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgT2JqZWN0MihpdCkpO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qc1xudmFyIHJlcXVpcmVfdHJ5X3RvX3N0cmluZyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIFN0cmluZzIgPSBnbG9iYWwyLlN0cmluZztcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihhcmd1bWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFN0cmluZzIoYXJndW1lbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFwiT2JqZWN0XCI7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzXG52YXIgcmVxdWlyZV9hX2NhbGxhYmxlID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmVfaXNfY2FsbGFibGUoKTtcbiAgICB2YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlX3RyeV90b19zdHJpbmcoKTtcbiAgICB2YXIgVHlwZUVycm9yMiA9IGdsb2JhbDIuVHlwZUVycm9yO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyZ3VtZW50KSB7XG4gICAgICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpXG4gICAgICAgIHJldHVybiBhcmd1bWVudDtcbiAgICAgIHRocm93IFR5cGVFcnJvcjIodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgXCIgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzXG52YXIgcmVxdWlyZV9nZXRfbWV0aG9kID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBhQ2FsbGFibGUgPSByZXF1aXJlX2FfY2FsbGFibGUoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihWLCBQKSB7XG4gICAgICB2YXIgZnVuYyA9IFZbUF07XG4gICAgICByZXR1cm4gZnVuYyA9PSBudWxsID8gdm9pZCAwIDogYUNhbGxhYmxlKGZ1bmMpO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzXG52YXIgcmVxdWlyZV9vcmRpbmFyeV90b19wcmltaXRpdmUgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIGNhbGwgPSByZXF1aXJlX2Z1bmN0aW9uX2NhbGwoKTtcbiAgICB2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmVfaXNfY2FsbGFibGUoKTtcbiAgICB2YXIgaXNPYmplY3QgPSByZXF1aXJlX2lzX29iamVjdCgpO1xuICAgIHZhciBUeXBlRXJyb3IyID0gZ2xvYmFsMi5UeXBlRXJyb3I7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oaW5wdXQsIHByZWYpIHtcbiAgICAgIHZhciBmbiwgdmFsO1xuICAgICAgaWYgKHByZWYgPT09IFwic3RyaW5nXCIgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSlcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICBpZiAocHJlZiAhPT0gXCJzdHJpbmdcIiAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKVxuICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgdGhyb3cgVHlwZUVycm9yMihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanNcbnZhciByZXF1aXJlX2lzX3B1cmUgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZmFsc2U7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qc1xudmFyIHJlcXVpcmVfc2V0X2dsb2JhbCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtZ2xvYmFsLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbDIsIGtleSwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGdsb2JhbDJba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzXG52YXIgcmVxdWlyZV9zaGFyZWRfc3RvcmUgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIHNldEdsb2JhbCA9IHJlcXVpcmVfc2V0X2dsb2JhbCgpO1xuICAgIHZhciBTSEFSRUQgPSBcIl9fY29yZS1qc19zaGFyZWRfX1wiO1xuICAgIHZhciBzdG9yZSA9IGdsb2JhbDJbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gc3RvcmU7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzXG52YXIgcmVxdWlyZV9zaGFyZWQgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgSVNfUFVSRSA9IHJlcXVpcmVfaXNfcHVyZSgpO1xuICAgIHZhciBzdG9yZSA9IHJlcXVpcmVfc2hhcmVkX3N0b3JlKCk7XG4gICAgKG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDoge30pO1xuICAgIH0pKFwidmVyc2lvbnNcIiwgW10pLnB1c2goe1xuICAgICAgdmVyc2lvbjogXCIzLjIyLjJcIixcbiAgICAgIG1vZGU6IElTX1BVUkUgPyBcInB1cmVcIiA6IFwiZ2xvYmFsXCIsXG4gICAgICBjb3B5cmlnaHQ6IFwiXFx4QTkgMjAxNC0yMDIyIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpXCIsXG4gICAgICBsaWNlbnNlOiBcImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMjIuMi9MSUNFTlNFXCIsXG4gICAgICBzb3VyY2U6IFwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanNcIlxuICAgIH0pO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1xudmFyIHJlcXVpcmVfdG9fb2JqZWN0ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGdsb2JhbDIgPSByZXF1aXJlX2dsb2JhbCgpO1xuICAgIHZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZV9yZXF1aXJlX29iamVjdF9jb2VyY2libGUoKTtcbiAgICB2YXIgT2JqZWN0MiA9IGdsb2JhbDIuT2JqZWN0O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyZ3VtZW50KSB7XG4gICAgICByZXR1cm4gT2JqZWN0MihyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzXG52YXIgcmVxdWlyZV9oYXNfb3duX3Byb3BlcnR5ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmVfZnVuY3Rpb25fdW5jdXJyeV90aGlzKCk7XG4gICAgdmFyIHRvT2JqZWN0ID0gcmVxdWlyZV90b19vYmplY3QoKTtcbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICAgICAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qc1xudmFyIHJlcXVpcmVfdWlkID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZV9mdW5jdGlvbl91bmN1cnJ5X3RoaXMoKTtcbiAgICB2YXIgaWQgPSAwO1xuICAgIHZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbiAgICB2YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcygxIC50b1N0cmluZyk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gXCJTeW1ib2woXCIgKyAoa2V5ID09PSB2b2lkIDAgPyBcIlwiIDoga2V5KSArIFwiKV9cIiArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1xudmFyIHJlcXVpcmVfd2VsbF9rbm93bl9zeW1ib2wgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgc2hhcmVkID0gcmVxdWlyZV9zaGFyZWQoKTtcbiAgICB2YXIgaGFzT3duID0gcmVxdWlyZV9oYXNfb3duX3Byb3BlcnR5KCk7XG4gICAgdmFyIHVpZCA9IHJlcXVpcmVfdWlkKCk7XG4gICAgdmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlX25hdGl2ZV9zeW1ib2woKTtcbiAgICB2YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlX3VzZV9zeW1ib2xfYXNfdWlkKCk7XG4gICAgdmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZChcIndrc1wiKTtcbiAgICB2YXIgU3ltYm9sMiA9IGdsb2JhbDIuU3ltYm9sO1xuICAgIHZhciBzeW1ib2xGb3IgPSBTeW1ib2wyICYmIFN5bWJvbDJbXCJmb3JcIl07XG4gICAgdmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sMiA6IFN5bWJvbDIgJiYgU3ltYm9sMi53aXRob3V0U2V0dGVyIHx8IHVpZDtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpIHx8ICEoTkFUSVZFX1NZTUJPTCB8fCB0eXBlb2YgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID09IFwic3RyaW5nXCIpKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IFwiU3ltYm9sLlwiICsgbmFtZTtcbiAgICAgICAgaWYgKE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbDIsIG5hbWUpKSB7XG4gICAgICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sMltuYW1lXTtcbiAgICAgICAgfSBlbHNlIGlmIChVU0VfU1lNQk9MX0FTX1VJRCAmJiBzeW1ib2xGb3IpIHtcbiAgICAgICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBzeW1ib2xGb3IoZGVzY3JpcHRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IGNyZWF0ZVdlbGxLbm93blN5bWJvbChkZXNjcmlwdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanNcbnZhciByZXF1aXJlX3RvX3ByaW1pdGl2ZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgY2FsbCA9IHJlcXVpcmVfZnVuY3Rpb25fY2FsbCgpO1xuICAgIHZhciBpc09iamVjdCA9IHJlcXVpcmVfaXNfb2JqZWN0KCk7XG4gICAgdmFyIGlzU3ltYm9sID0gcmVxdWlyZV9pc19zeW1ib2woKTtcbiAgICB2YXIgZ2V0TWV0aG9kID0gcmVxdWlyZV9nZXRfbWV0aG9kKCk7XG4gICAgdmFyIG9yZGluYXJ5VG9QcmltaXRpdmUgPSByZXF1aXJlX29yZGluYXJ5X3RvX3ByaW1pdGl2ZSgpO1xuICAgIHZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlX3dlbGxfa25vd25fc3ltYm9sKCk7XG4gICAgdmFyIFR5cGVFcnJvcjIgPSBnbG9iYWwyLlR5cGVFcnJvcjtcbiAgICB2YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKFwidG9QcmltaXRpdmVcIik7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oaW5wdXQsIHByZWYpIHtcbiAgICAgIGlmICghaXNPYmplY3QoaW5wdXQpIHx8IGlzU3ltYm9sKGlucHV0KSlcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICBpZiAoZXhvdGljVG9QcmltKSB7XG4gICAgICAgIGlmIChwcmVmID09PSB2b2lkIDApXG4gICAgICAgICAgcHJlZiA9IFwiZGVmYXVsdFwiO1xuICAgICAgICByZXN1bHQgPSBjYWxsKGV4b3RpY1RvUHJpbSwgaW5wdXQsIHByZWYpO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSlcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IyKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHByZWYgPT09IHZvaWQgMClcbiAgICAgICAgcHJlZiA9IFwibnVtYmVyXCI7XG4gICAgICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanNcbnZhciByZXF1aXJlX3RvX3Byb3BlcnR5X2tleSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmVfdG9fcHJpbWl0aXZlKCk7XG4gICAgdmFyIGlzU3ltYm9sID0gcmVxdWlyZV9pc19zeW1ib2woKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihhcmd1bWVudCkge1xuICAgICAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCBcInN0cmluZ1wiKTtcbiAgICAgIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgXCJcIjtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzXG52YXIgcmVxdWlyZV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGdsb2JhbDIgPSByZXF1aXJlX2dsb2JhbCgpO1xuICAgIHZhciBpc09iamVjdCA9IHJlcXVpcmVfaXNfb2JqZWN0KCk7XG4gICAgdmFyIGRvY3VtZW50ID0gZ2xvYmFsMi5kb2N1bWVudDtcbiAgICB2YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KSB7XG4gICAgICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzXG52YXIgcmVxdWlyZV9pZThfZG9tX2RlZmluZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZV9kZXNjcmlwdG9ycygpO1xuICAgIHZhciBmYWlscyA9IHJlcXVpcmVfZmFpbHMoKTtcbiAgICB2YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmVfZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KFwiZGl2XCIpLCBcImFcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiA3O1xuICAgICAgICB9XG4gICAgICB9KS5hICE9IDc7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1xudmFyIHJlcXVpcmVfb2JqZWN0X2dldF9vd25fcHJvcGVydHlfZGVzY3JpcHRvciA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIoZXhwb3J0czIpIHtcbiAgICB2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlX2Rlc2NyaXB0b3JzKCk7XG4gICAgdmFyIGNhbGwgPSByZXF1aXJlX2Z1bmN0aW9uX2NhbGwoKTtcbiAgICB2YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlX29iamVjdF9wcm9wZXJ0eV9pc19lbnVtZXJhYmxlKCk7XG4gICAgdmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmVfY3JlYXRlX3Byb3BlcnR5X2Rlc2NyaXB0b3IoKTtcbiAgICB2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZV90b19pbmRleGVkX29iamVjdCgpO1xuICAgIHZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZV90b19wcm9wZXJ0eV9rZXkoKTtcbiAgICB2YXIgaGFzT3duID0gcmVxdWlyZV9oYXNfb3duX3Byb3BlcnR5KCk7XG4gICAgdmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZV9pZThfZG9tX2RlZmluZSgpO1xuICAgIHZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBleHBvcnRzMi5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgICAgIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gICAgICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgICAgIGlmIChJRThfRE9NX0RFRklORSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgfVxuICAgICAgaWYgKGhhc093bihPLCBQKSlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLCBPLCBQKSwgT1tQXSk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qc1xudmFyIHJlcXVpcmVfdjhfcHJvdG90eXBlX2RlZmluZV9idWcgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBERVNDUklQVE9SUyA9IHJlcXVpcmVfZGVzY3JpcHRvcnMoKTtcbiAgICB2YXIgZmFpbHMgPSByZXF1aXJlX2ZhaWxzKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCkge1xuICAgICAgfSwgXCJwcm90b3R5cGVcIiwge1xuICAgICAgICB2YWx1ZTogNDIsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfSkucHJvdG90eXBlICE9IDQyO1xuICAgIH0pO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1xudmFyIHJlcXVpcmVfYW5fb2JqZWN0ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGdsb2JhbDIgPSByZXF1aXJlX2dsb2JhbCgpO1xuICAgIHZhciBpc09iamVjdCA9IHJlcXVpcmVfaXNfb2JqZWN0KCk7XG4gICAgdmFyIFN0cmluZzIgPSBnbG9iYWwyLlN0cmluZztcbiAgICB2YXIgVHlwZUVycm9yMiA9IGdsb2JhbDIuVHlwZUVycm9yO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyZ3VtZW50KSB7XG4gICAgICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKVxuICAgICAgICByZXR1cm4gYXJndW1lbnQ7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IyKFN0cmluZzIoYXJndW1lbnQpICsgXCIgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcbnZhciByZXF1aXJlX29iamVjdF9kZWZpbmVfcHJvcGVydHkgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgdmFyIGdsb2JhbDIgPSByZXF1aXJlX2dsb2JhbCgpO1xuICAgIHZhciBERVNDUklQVE9SUyA9IHJlcXVpcmVfZGVzY3JpcHRvcnMoKTtcbiAgICB2YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlX2llOF9kb21fZGVmaW5lKCk7XG4gICAgdmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZV92OF9wcm90b3R5cGVfZGVmaW5lX2J1ZygpO1xuICAgIHZhciBhbk9iamVjdCA9IHJlcXVpcmVfYW5fb2JqZWN0KCk7XG4gICAgdmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlX3RvX3Byb3BlcnR5X2tleSgpO1xuICAgIHZhciBUeXBlRXJyb3IyID0gZ2xvYmFsMi5UeXBlRXJyb3I7XG4gICAgdmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbiAgICB2YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgdmFyIEVOVU1FUkFCTEUgPSBcImVudW1lcmFibGVcIjtcbiAgICB2YXIgQ09ORklHVVJBQkxFID0gXCJjb25maWd1cmFibGVcIjtcbiAgICB2YXIgV1JJVEFCTEUgPSBcIndyaXRhYmxlXCI7XG4gICAgZXhwb3J0czIuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gICAgICBhbk9iamVjdChPKTtcbiAgICAgIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICAgICAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gICAgICBpZiAodHlwZW9mIE8gPT09IFwiZnVuY3Rpb25cIiAmJiBQID09PSBcInByb3RvdHlwZVwiICYmIFwidmFsdWVcIiBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgICB9IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICAgICAgYW5PYmplY3QoTyk7XG4gICAgICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgICAgIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICAgICAgaWYgKElFOF9ET01fREVGSU5FKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIH1cbiAgICAgIGlmIChcImdldFwiIGluIEF0dHJpYnV0ZXMgfHwgXCJzZXRcIiBpbiBBdHRyaWJ1dGVzKVxuICAgICAgICB0aHJvdyBUeXBlRXJyb3IyKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIEF0dHJpYnV0ZXMpXG4gICAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgcmV0dXJuIE87XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcbnZhciByZXF1aXJlX2NyZWF0ZV9ub25fZW51bWVyYWJsZV9wcm9wZXJ0eSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBERVNDUklQVE9SUyA9IHJlcXVpcmVfZGVzY3JpcHRvcnMoKTtcbiAgICB2YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlX29iamVjdF9kZWZpbmVfcHJvcGVydHkoKTtcbiAgICB2YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZV9jcmVhdGVfcHJvcGVydHlfZGVzY3JpcHRvcigpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24ob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG4gICAgfSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZS5qc1xudmFyIHJlcXVpcmVfaW5zcGVjdF9zb3VyY2UgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmVfZnVuY3Rpb25fdW5jdXJyeV90aGlzKCk7XG4gICAgdmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlX2lzX2NhbGxhYmxlKCk7XG4gICAgdmFyIHN0b3JlID0gcmVxdWlyZV9zaGFyZWRfc3RvcmUoKTtcbiAgICB2YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiAgICBpZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgICAgIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbihpdCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gICAgICB9O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qc1xudmFyIHJlcXVpcmVfbmF0aXZlX3dlYWtfbWFwID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGdsb2JhbDIgPSByZXF1aXJlX2dsb2JhbCgpO1xuICAgIHZhciBpc0NhbGxhYmxlID0gcmVxdWlyZV9pc19jYWxsYWJsZSgpO1xuICAgIHZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZV9pbnNwZWN0X3NvdXJjZSgpO1xuICAgIHZhciBXZWFrTWFwMiA9IGdsb2JhbDIuV2Vha01hcDtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXAyKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoaW5zcGVjdFNvdXJjZShXZWFrTWFwMikpO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanNcbnZhciByZXF1aXJlX3NoYXJlZF9rZXkgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHNoYXJlZCA9IHJlcXVpcmVfc2hhcmVkKCk7XG4gICAgdmFyIHVpZCA9IHJlcXVpcmVfdWlkKCk7XG4gICAgdmFyIGtleXMgPSBzaGFyZWQoXCJrZXlzXCIpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanNcbnZhciByZXF1aXJlX2hpZGRlbl9rZXlzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7fTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1xudmFyIHJlcXVpcmVfaW50ZXJuYWxfc3RhdGUgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlX25hdGl2ZV93ZWFrX21hcCgpO1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlX2Z1bmN0aW9uX3VuY3VycnlfdGhpcygpO1xuICAgIHZhciBpc09iamVjdCA9IHJlcXVpcmVfaXNfb2JqZWN0KCk7XG4gICAgdmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmVfY3JlYXRlX25vbl9lbnVtZXJhYmxlX3Byb3BlcnR5KCk7XG4gICAgdmFyIGhhc093biA9IHJlcXVpcmVfaGFzX293bl9wcm9wZXJ0eSgpO1xuICAgIHZhciBzaGFyZWQgPSByZXF1aXJlX3NoYXJlZF9zdG9yZSgpO1xuICAgIHZhciBzaGFyZWRLZXkgPSByZXF1aXJlX3NoYXJlZF9rZXkoKTtcbiAgICB2YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmVfaGlkZGVuX2tleXMoKTtcbiAgICB2YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSBcIk9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkXCI7XG4gICAgdmFyIFR5cGVFcnJvcjIgPSBnbG9iYWwyLlR5cGVFcnJvcjtcbiAgICB2YXIgV2Vha01hcDIgPSBnbG9iYWwyLldlYWtNYXA7XG4gICAgdmFyIHNldDtcbiAgICB2YXIgZ2V0O1xuICAgIHZhciBoYXM7XG4gICAgdmFyIGVuZm9yY2UgPSBmdW5jdGlvbihpdCkge1xuICAgICAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG4gICAgfTtcbiAgICB2YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24oVFlQRSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGl0KSB7XG4gICAgICAgIHZhciBzdGF0ZTtcbiAgICAgICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgICAgIHRocm93IFR5cGVFcnJvcjIoXCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFwiICsgVFlQRSArIFwiIHJlcXVpcmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBpZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICAgICAgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwMigpKTtcbiAgICAgIHdtZ2V0ID0gdW5jdXJyeVRoaXMoc3RvcmUuZ2V0KTtcbiAgICAgIHdtaGFzID0gdW5jdXJyeVRoaXMoc3RvcmUuaGFzKTtcbiAgICAgIHdtc2V0ID0gdW5jdXJyeVRoaXMoc3RvcmUuc2V0KTtcbiAgICAgIHNldCA9IGZ1bmN0aW9uKGl0LCBtZXRhZGF0YSkge1xuICAgICAgICBpZiAod21oYXMoc3RvcmUsIGl0KSlcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yMihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgICAgICB3bXNldChzdG9yZSwgaXQsIG1ldGFkYXRhKTtcbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhO1xuICAgICAgfTtcbiAgICAgIGdldCA9IGZ1bmN0aW9uKGl0KSB7XG4gICAgICAgIHJldHVybiB3bWdldChzdG9yZSwgaXQpIHx8IHt9O1xuICAgICAgfTtcbiAgICAgIGhhcyA9IGZ1bmN0aW9uKGl0KSB7XG4gICAgICAgIHJldHVybiB3bWhhcyhzdG9yZSwgaXQpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgU1RBVEUgPSBzaGFyZWRLZXkoXCJzdGF0ZVwiKTtcbiAgICAgIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgICAgIHNldCA9IGZ1bmN0aW9uKGl0LCBtZXRhZGF0YSkge1xuICAgICAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcjIoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgICAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgICAgICByZXR1cm4gbWV0YWRhdGE7XG4gICAgICB9O1xuICAgICAgZ2V0ID0gZnVuY3Rpb24oaXQpIHtcbiAgICAgICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gICAgICB9O1xuICAgICAgaGFzID0gZnVuY3Rpb24oaXQpIHtcbiAgICAgICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHN0b3JlO1xuICAgIHZhciB3bWdldDtcbiAgICB2YXIgd21oYXM7XG4gICAgdmFyIHdtc2V0O1xuICAgIHZhciBTVEFURTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBzZXQsXG4gICAgICBnZXQsXG4gICAgICBoYXMsXG4gICAgICBlbmZvcmNlLFxuICAgICAgZ2V0dGVyRm9yXG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzXG52YXIgcmVxdWlyZV9mdW5jdGlvbl9uYW1lID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBERVNDUklQVE9SUyA9IHJlcXVpcmVfZGVzY3JpcHRvcnMoKTtcbiAgICB2YXIgaGFzT3duID0gcmVxdWlyZV9oYXNfb3duX3Byb3BlcnR5KCk7XG4gICAgdmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICAgIHZhciBnZXREZXNjcmlwdG9yID0gREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICB2YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCBcIm5hbWVcIik7XG4gICAgdmFyIFBST1BFUiA9IEVYSVNUUyAmJiBmdW5jdGlvbiBzb21ldGhpbmcoKSB7XG4gICAgfS5uYW1lID09PSBcInNvbWV0aGluZ1wiO1xuICAgIHZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCBERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCBcIm5hbWVcIikuY29uZmlndXJhYmxlKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBFWElTVFMsXG4gICAgICBQUk9QRVIsXG4gICAgICBDT05GSUdVUkFCTEVcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLmpzXG52YXIgcmVxdWlyZV9yZWRlZmluZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGdsb2JhbDIgPSByZXF1aXJlX2dsb2JhbCgpO1xuICAgIHZhciBpc0NhbGxhYmxlID0gcmVxdWlyZV9pc19jYWxsYWJsZSgpO1xuICAgIHZhciBoYXNPd24gPSByZXF1aXJlX2hhc19vd25fcHJvcGVydHkoKTtcbiAgICB2YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZV9jcmVhdGVfbm9uX2VudW1lcmFibGVfcHJvcGVydHkoKTtcbiAgICB2YXIgc2V0R2xvYmFsID0gcmVxdWlyZV9zZXRfZ2xvYmFsKCk7XG4gICAgdmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlX2luc3BlY3Rfc291cmNlKCk7XG4gICAgdmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlX2ludGVybmFsX3N0YXRlKCk7XG4gICAgdmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZV9mdW5jdGlvbl9uYW1lKCkuQ09ORklHVVJBQkxFO1xuICAgIHZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG4gICAgdmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xuICAgIHZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KFwiU3RyaW5nXCIpO1xuICAgIChtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgICAgIHZhciBzaW1wbGUgPSBvcHRpb25zID8gISFvcHRpb25zLmVudW1lcmFibGUgOiBmYWxzZTtcbiAgICAgIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgICAgIHZhciBuYW1lID0gb3B0aW9ucyAmJiBvcHRpb25zLm5hbWUgIT09IHZvaWQgMCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgICAgIHZhciBzdGF0ZTtcbiAgICAgIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkge1xuICAgICAgICBpZiAoU3RyaW5nKG5hbWUpLnNsaWNlKDAsIDcpID09PSBcIlN5bWJvbChcIikge1xuICAgICAgICAgIG5hbWUgPSBcIltcIiArIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9eU3ltYm9sXFwoKFteKV0qKVxcKS8sIFwiJDFcIikgKyBcIl1cIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc093bih2YWx1ZSwgXCJuYW1lXCIpIHx8IENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpIHtcbiAgICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodmFsdWUsIFwibmFtZVwiLCBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgICAgICAgaWYgKCFzdGF0ZS5zb3VyY2UpIHtcbiAgICAgICAgICBzdGF0ZS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIgPyBuYW1lIDogXCJcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChPID09PSBnbG9iYWwyKSB7XG4gICAgICAgIGlmIChzaW1wbGUpXG4gICAgICAgICAgT1trZXldID0gdmFsdWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgICAgICBkZWxldGUgT1trZXldO1xuICAgICAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgICAgIHNpbXBsZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoc2ltcGxlKVxuICAgICAgICBPW2tleV0gPSB2YWx1ZTtcbiAgICAgIGVsc2VcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sIGtleSwgdmFsdWUpO1xuICAgIH0pKEZ1bmN0aW9uLnByb3RvdHlwZSwgXCJ0b1N0cmluZ1wiLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG4gICAgfSk7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qc1xudmFyIHJlcXVpcmVfdG9faW50ZWdlcl9vcl9pbmZpbml0eSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgY2VpbCA9IE1hdGguY2VpbDtcbiAgICB2YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyZ3VtZW50KSB7XG4gICAgICB2YXIgbnVtYmVyID0gK2FyZ3VtZW50O1xuICAgICAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiAobnVtYmVyID4gMCA/IGZsb29yIDogY2VpbCkobnVtYmVyKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzXG52YXIgcmVxdWlyZV90b19hYnNvbHV0ZV9pbmRleCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlX3RvX2ludGVnZXJfb3JfaW5maW5pdHkoKTtcbiAgICB2YXIgbWF4ID0gTWF0aC5tYXg7XG4gICAgdmFyIG1pbiA9IE1hdGgubWluO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGluZGV4LCBsZW5ndGgpIHtcbiAgICAgIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gICAgICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1xudmFyIHJlcXVpcmVfdG9fbGVuZ3RoID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlX3RvX2ludGVnZXJfb3JfaW5maW5pdHkoKTtcbiAgICB2YXIgbWluID0gTWF0aC5taW47XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oYXJndW1lbnQpIHtcbiAgICAgIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudCksIDkwMDcxOTkyNTQ3NDA5OTEpIDogMDtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXG52YXIgcmVxdWlyZV9sZW5ndGhfb2ZfYXJyYXlfbGlrZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHRvTGVuZ3RoID0gcmVxdWlyZV90b19sZW5ndGgoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzXG52YXIgcmVxdWlyZV9hcnJheV9pbmNsdWRlcyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmVfdG9faW5kZXhlZF9vYmplY3QoKTtcbiAgICB2YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZV90b19hYnNvbHV0ZV9pbmRleCgpO1xuICAgIHZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmVfbGVuZ3RoX29mX2FycmF5X2xpa2UoKTtcbiAgICB2YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24oSVNfSU5DTFVERVMpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgICAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICAgICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpXG4gICAgICAgICAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICAgICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZvciAoOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpXG4gICAgICAgICAgICAgIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAgICAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbnZhciByZXF1aXJlX29iamVjdF9rZXlzX2ludGVybmFsID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlX2Z1bmN0aW9uX3VuY3VycnlfdGhpcygpO1xuICAgIHZhciBoYXNPd24gPSByZXF1aXJlX2hhc19vd25fcHJvcGVydHkoKTtcbiAgICB2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZV90b19pbmRleGVkX29iamVjdCgpO1xuICAgIHZhciBpbmRleE9mID0gcmVxdWlyZV9hcnJheV9pbmNsdWRlcygpLmluZGV4T2Y7XG4gICAgdmFyIGhpZGRlbktleXMgPSByZXF1aXJlX2hpZGRlbl9rZXlzKCk7XG4gICAgdmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIG5hbWVzKSB7XG4gICAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgdmFyIGtleTtcbiAgICAgIGZvciAoa2V5IGluIE8pXG4gICAgICAgICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSAmJiBoYXNPd24oTywga2V5KSAmJiBwdXNoKHJlc3VsdCwga2V5KTtcbiAgICAgIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKVxuICAgICAgICBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgICAgICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICAgICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qc1xudmFyIHJlcXVpcmVfZW51bV9idWdfa2V5cyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBbXG4gICAgICBcImNvbnN0cnVjdG9yXCIsXG4gICAgICBcImhhc093blByb3BlcnR5XCIsXG4gICAgICBcImlzUHJvdG90eXBlT2ZcIixcbiAgICAgIFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcbiAgICAgIFwidG9Mb2NhbGVTdHJpbmdcIixcbiAgICAgIFwidG9TdHJpbmdcIixcbiAgICAgIFwidmFsdWVPZlwiXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qc1xudmFyIHJlcXVpcmVfb2JqZWN0X2dldF9vd25fcHJvcGVydHlfbmFtZXMgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanNcIihleHBvcnRzMikge1xuICAgIHZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlX29iamVjdF9rZXlzX2ludGVybmFsKCk7XG4gICAgdmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZV9lbnVtX2J1Z19rZXlzKCk7XG4gICAgdmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoXCJsZW5ndGhcIiwgXCJwcm90b3R5cGVcIik7XG4gICAgZXhwb3J0czIuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICAgICAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanNcbnZhciByZXF1aXJlX29iamVjdF9nZXRfb3duX3Byb3BlcnR5X3N5bWJvbHMgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgZXhwb3J0czIuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanNcbnZhciByZXF1aXJlX293bl9rZXlzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmVfZ2V0X2J1aWx0X2luKCk7XG4gICAgdmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZV9mdW5jdGlvbl91bmN1cnJ5X3RoaXMoKTtcbiAgICB2YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmVfb2JqZWN0X2dldF9vd25fcHJvcGVydHlfbmFtZXMoKTtcbiAgICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZV9vYmplY3RfZ2V0X293bl9wcm9wZXJ0eV9zeW1ib2xzKCk7XG4gICAgdmFyIGFuT2JqZWN0ID0gcmVxdWlyZV9hbl9vYmplY3QoKTtcbiAgICB2YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBnZXRCdWlsdEluKFwiUmVmbGVjdFwiLCBcIm93bktleXNcIikgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICAgICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgICAgIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzXG52YXIgcmVxdWlyZV9jb3B5X2NvbnN0cnVjdG9yX3Byb3BlcnRpZXMgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgaGFzT3duID0gcmVxdWlyZV9oYXNfb3duX3Byb3BlcnR5KCk7XG4gICAgdmFyIG93bktleXMgPSByZXF1aXJlX293bl9rZXlzKCk7XG4gICAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmVfb2JqZWN0X2dldF9vd25fcHJvcGVydHlfZGVzY3JpcHRvcigpO1xuICAgIHZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmVfb2JqZWN0X2RlZmluZV9wcm9wZXJ0eSgpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gICAgICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgICAgIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gICAgICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanNcbnZhciByZXF1aXJlX2lzX2ZvcmNlZCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBmYWlscyA9IHJlcXVpcmVfZmFpbHMoKTtcbiAgICB2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmVfaXNfY2FsbGFibGUoKTtcbiAgICB2YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuICAgIHZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICAgICAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICAgICAgcmV0dXJuIHZhbHVlID09IFBPTFlGSUxMID8gdHJ1ZSA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKSA6ICEhZGV0ZWN0aW9uO1xuICAgIH07XG4gICAgdmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsIFwiLlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgIH07XG4gICAgdmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG4gICAgdmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9IFwiTlwiO1xuICAgIHZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gXCJQXCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gaXNGb3JjZWQ7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXG52YXIgcmVxdWlyZV9leHBvcnQgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmVfb2JqZWN0X2dldF9vd25fcHJvcGVydHlfZGVzY3JpcHRvcigpLmY7XG4gICAgdmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmVfY3JlYXRlX25vbl9lbnVtZXJhYmxlX3Byb3BlcnR5KCk7XG4gICAgdmFyIHJlZGVmaW5lID0gcmVxdWlyZV9yZWRlZmluZSgpO1xuICAgIHZhciBzZXRHbG9iYWwgPSByZXF1aXJlX3NldF9nbG9iYWwoKTtcbiAgICB2YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmVfY29weV9jb25zdHJ1Y3Rvcl9wcm9wZXJ0aWVzKCk7XG4gICAgdmFyIGlzRm9yY2VkID0gcmVxdWlyZV9pc19mb3JjZWQoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zLCBzb3VyY2UpIHtcbiAgICAgIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgICAgIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgICAgIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gICAgICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICAgICAgaWYgKEdMT0JBTCkge1xuICAgICAgICB0YXJnZXQgPSBnbG9iYWwyO1xuICAgICAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICAgICAgdGFyZ2V0ID0gZ2xvYmFsMltUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldCA9IChnbG9iYWwyW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXQpXG4gICAgICAgIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgICAgICAgaWYgKG9wdGlvbnMubm9UYXJnZXRHZXQpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgICAgICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyBcIi5cIiA6IFwiI1wiKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgICAgICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KVxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2hhbSB8fCB0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSB7XG4gICAgICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksIFwic2hhbVwiLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanNcbnZhciByZXF1aXJlX2lzX2FycmF5ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgY2xhc3NvZiA9IHJlcXVpcmVfY2xhc3NvZl9yYXcoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJndW1lbnQpIHtcbiAgICAgIHJldHVybiBjbGFzc29mKGFyZ3VtZW50KSA9PSBcIkFycmF5XCI7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcbnZhciByZXF1aXJlX2Z1bmN0aW9uX2JpbmRfY29udGV4dCA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmVfZnVuY3Rpb25fdW5jdXJyeV90aGlzKCk7XG4gICAgdmFyIGFDYWxsYWJsZSA9IHJlcXVpcmVfYV9jYWxsYWJsZSgpO1xuICAgIHZhciBOQVRJVkVfQklORCA9IHJlcXVpcmVfZnVuY3Rpb25fYmluZF9uYXRpdmUoKTtcbiAgICB2YXIgYmluZCA9IHVuY3VycnlUaGlzKHVuY3VycnlUaGlzLmJpbmQpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCB0aGF0KSB7XG4gICAgICBhQ2FsbGFibGUoZm4pO1xuICAgICAgcmV0dXJuIHRoYXQgPT09IHZvaWQgMCA/IGZuIDogTkFUSVZFX0JJTkQgPyBiaW5kKGZuLCB0aGF0KSA6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mbGF0dGVuLWludG8tYXJyYXkuanNcbnZhciByZXF1aXJlX2ZsYXR0ZW5faW50b19hcnJheSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mbGF0dGVuLWludG8tYXJyYXkuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgaXNBcnJheSA9IHJlcXVpcmVfaXNfYXJyYXkoKTtcbiAgICB2YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlX2xlbmd0aF9vZl9hcnJheV9saWtlKCk7XG4gICAgdmFyIGJpbmQgPSByZXF1aXJlX2Z1bmN0aW9uX2JpbmRfY29udGV4dCgpO1xuICAgIHZhciBUeXBlRXJyb3IyID0gZ2xvYmFsMi5UeXBlRXJyb3I7XG4gICAgdmFyIGZsYXR0ZW5JbnRvQXJyYXkgPSBmdW5jdGlvbih0YXJnZXQsIG9yaWdpbmFsLCBzb3VyY2UsIHNvdXJjZUxlbiwgc3RhcnQsIGRlcHRoLCBtYXBwZXIsIHRoaXNBcmcpIHtcbiAgICAgIHZhciB0YXJnZXRJbmRleCA9IHN0YXJ0O1xuICAgICAgdmFyIHNvdXJjZUluZGV4ID0gMDtcbiAgICAgIHZhciBtYXBGbiA9IG1hcHBlciA/IGJpbmQobWFwcGVyLCB0aGlzQXJnKSA6IGZhbHNlO1xuICAgICAgdmFyIGVsZW1lbnQsIGVsZW1lbnRMZW47XG4gICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBzb3VyY2VMZW4pIHtcbiAgICAgICAgaWYgKHNvdXJjZUluZGV4IGluIHNvdXJjZSkge1xuICAgICAgICAgIGVsZW1lbnQgPSBtYXBGbiA/IG1hcEZuKHNvdXJjZVtzb3VyY2VJbmRleF0sIHNvdXJjZUluZGV4LCBvcmlnaW5hbCkgOiBzb3VyY2Vbc291cmNlSW5kZXhdO1xuICAgICAgICAgIGlmIChkZXB0aCA+IDAgJiYgaXNBcnJheShlbGVtZW50KSkge1xuICAgICAgICAgICAgZWxlbWVudExlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKGVsZW1lbnQpO1xuICAgICAgICAgICAgdGFyZ2V0SW5kZXggPSBmbGF0dGVuSW50b0FycmF5KHRhcmdldCwgb3JpZ2luYWwsIGVsZW1lbnQsIGVsZW1lbnRMZW4sIHRhcmdldEluZGV4LCBkZXB0aCAtIDEpIC0gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRhcmdldEluZGV4ID49IDkwMDcxOTkyNTQ3NDA5OTEpXG4gICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcjIoXCJFeGNlZWQgdGhlIGFjY2VwdGFibGUgYXJyYXkgbGVuZ3RoXCIpO1xuICAgICAgICAgICAgdGFyZ2V0W3RhcmdldEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldEluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgc291cmNlSW5kZXgrKztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRJbmRleDtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZsYXR0ZW5JbnRvQXJyYXk7XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzXG52YXIgcmVxdWlyZV90b19zdHJpbmdfdGFnX3N1cHBvcnQgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZV93ZWxsX2tub3duX3N5bWJvbCgpO1xuICAgIHZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKFwidG9TdHJpbmdUYWdcIik7XG4gICAgdmFyIHRlc3QgPSB7fTtcbiAgICB0ZXN0W1RPX1NUUklOR19UQUddID0gXCJ6XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSBcIltvYmplY3Qgel1cIjtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzXG52YXIgcmVxdWlyZV9jbGFzc29mID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZV90b19zdHJpbmdfdGFnX3N1cHBvcnQoKTtcbiAgICB2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmVfaXNfY2FsbGFibGUoKTtcbiAgICB2YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmVfY2xhc3NvZl9yYXcoKTtcbiAgICB2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZV93ZWxsX2tub3duX3N5bWJvbCgpO1xuICAgIHZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKFwidG9TdHJpbmdUYWdcIik7XG4gICAgdmFyIE9iamVjdDIgPSBnbG9iYWwyLk9iamVjdDtcbiAgICB2YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cztcbiAgICB9KCkpID09IFwiQXJndW1lbnRzXCI7XG4gICAgdmFyIHRyeUdldCA9IGZ1bmN0aW9uKGl0LCBrZXkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBpdFtrZXldO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIH1cbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbihpdCkge1xuICAgICAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICAgICAgcmV0dXJuIGl0ID09PSB2b2lkIDAgPyBcIlVuZGVmaW5lZFwiIDogaXQgPT09IG51bGwgPyBcIk51bGxcIiA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QyKGl0KSwgVE9fU1RSSU5HX1RBRykpID09IFwic3RyaW5nXCIgPyB0YWcgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTykgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gXCJPYmplY3RcIiAmJiBpc0NhbGxhYmxlKE8uY2FsbGVlKSA/IFwiQXJndW1lbnRzXCIgOiByZXN1bHQ7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jb25zdHJ1Y3Rvci5qc1xudmFyIHJlcXVpcmVfaXNfY29uc3RydWN0b3IgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3IuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmVfZnVuY3Rpb25fdW5jdXJyeV90aGlzKCk7XG4gICAgdmFyIGZhaWxzID0gcmVxdWlyZV9mYWlscygpO1xuICAgIHZhciBpc0NhbGxhYmxlID0gcmVxdWlyZV9pc19jYWxsYWJsZSgpO1xuICAgIHZhciBjbGFzc29mID0gcmVxdWlyZV9jbGFzc29mKCk7XG4gICAgdmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlX2dldF9idWlsdF9pbigpO1xuICAgIHZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZV9pbnNwZWN0X3NvdXJjZSgpO1xuICAgIHZhciBub29wID0gZnVuY3Rpb24oKSB7XG4gICAgfTtcbiAgICB2YXIgZW1wdHkgPSBbXTtcbiAgICB2YXIgY29uc3RydWN0ID0gZ2V0QnVpbHRJbihcIlJlZmxlY3RcIiwgXCJjb25zdHJ1Y3RcIik7XG4gICAgdmFyIGNvbnN0cnVjdG9yUmVnRXhwID0gL15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLztcbiAgICB2YXIgZXhlYyA9IHVuY3VycnlUaGlzKGNvbnN0cnVjdG9yUmVnRXhwLmV4ZWMpO1xuICAgIHZhciBJTkNPUlJFQ1RfVE9fU1RSSU5HID0gIWNvbnN0cnVjdG9yUmVnRXhwLmV4ZWMobm9vcCk7XG4gICAgdmFyIGlzQ29uc3RydWN0b3JNb2Rlcm4gPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gICAgICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdHJ1Y3Qobm9vcCwgZW1wdHksIGFyZ3VtZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgaXNDb25zdHJ1Y3RvckxlZ2FjeSA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgICAgIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIHN3aXRjaCAoY2xhc3NvZihhcmd1bWVudCkpIHtcbiAgICAgICAgY2FzZSBcIkFzeW5jRnVuY3Rpb25cIjpcbiAgICAgICAgY2FzZSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJBc3luY0dlbmVyYXRvckZ1bmN0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIElOQ09SUkVDVF9UT19TVFJJTkcgfHwgISFleGVjKGNvbnN0cnVjdG9yUmVnRXhwLCBpbnNwZWN0U291cmNlKGFyZ3VtZW50KSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlzQ29uc3RydWN0b3JMZWdhY3kuc2hhbSA9IHRydWU7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gIWNvbnN0cnVjdCB8fCBmYWlscyhmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjYWxsZWQ7XG4gICAgICByZXR1cm4gaXNDb25zdHJ1Y3Rvck1vZGVybihpc0NvbnN0cnVjdG9yTW9kZXJuLmNhbGwpIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKE9iamVjdCkgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oZnVuY3Rpb24oKSB7XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICB9KSB8fCBjYWxsZWQ7XG4gICAgfSkgPyBpc0NvbnN0cnVjdG9yTGVnYWN5IDogaXNDb25zdHJ1Y3Rvck1vZGVybjtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG52YXIgcmVxdWlyZV9hcnJheV9zcGVjaWVzX2NvbnN0cnVjdG9yID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3IuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBnbG9iYWwyID0gcmVxdWlyZV9nbG9iYWwoKTtcbiAgICB2YXIgaXNBcnJheSA9IHJlcXVpcmVfaXNfYXJyYXkoKTtcbiAgICB2YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmVfaXNfY29uc3RydWN0b3IoKTtcbiAgICB2YXIgaXNPYmplY3QgPSByZXF1aXJlX2lzX29iamVjdCgpO1xuICAgIHZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlX3dlbGxfa25vd25fc3ltYm9sKCk7XG4gICAgdmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woXCJzcGVjaWVzXCIpO1xuICAgIHZhciBBcnJheTIgPSBnbG9iYWwyLkFycmF5O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKG9yaWdpbmFsQXJyYXkpIHtcbiAgICAgIHZhciBDO1xuICAgICAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICAgICAgQyA9IG9yaWdpbmFsQXJyYXkuY29uc3RydWN0b3I7XG4gICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKEMpICYmIChDID09PSBBcnJheTIgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKVxuICAgICAgICAgIEMgPSB2b2lkIDA7XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICAgICAgaWYgKEMgPT09IG51bGwpXG4gICAgICAgICAgICBDID0gdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gQyA9PT0gdm9pZCAwID8gQXJyYXkyIDogQztcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzXG52YXIgcmVxdWlyZV9hcnJheV9zcGVjaWVzX2NyZWF0ZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZV9hcnJheV9zcGVjaWVzX2NvbnN0cnVjdG9yKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24ob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IChhcnJheVNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbEFycmF5KSkobGVuZ3RoID09PSAwID8gMCA6IGxlbmd0aCk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmxhdC1tYXAuanNcbnZhciByZXF1aXJlX2VzX2FycmF5X2ZsYXRfbWFwID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mbGF0LW1hcC5qc1wiKCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciAkID0gcmVxdWlyZV9leHBvcnQoKTtcbiAgICB2YXIgZmxhdHRlbkludG9BcnJheSA9IHJlcXVpcmVfZmxhdHRlbl9pbnRvX2FycmF5KCk7XG4gICAgdmFyIGFDYWxsYWJsZSA9IHJlcXVpcmVfYV9jYWxsYWJsZSgpO1xuICAgIHZhciB0b09iamVjdCA9IHJlcXVpcmVfdG9fb2JqZWN0KCk7XG4gICAgdmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZV9sZW5ndGhfb2ZfYXJyYXlfbGlrZSgpO1xuICAgIHZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlX2FycmF5X3NwZWNpZXNfY3JlYXRlKCk7XG4gICAgJCh7IHRhcmdldDogXCJBcnJheVwiLCBwcm90bzogdHJ1ZSB9LCB7XG4gICAgICBmbGF0TWFwOiBmdW5jdGlvbiBmbGF0TWFwKGNhbGxiYWNrZm4pIHtcbiAgICAgICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICAgICAgdmFyIHNvdXJjZUxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgICAgICB2YXIgQTtcbiAgICAgICAgYUNhbGxhYmxlKGNhbGxiYWNrZm4pO1xuICAgICAgICBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgICAgICBBLmxlbmd0aCA9IGZsYXR0ZW5JbnRvQXJyYXkoQSwgTywgTywgc291cmNlTGVuLCAwLCAxLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCk7XG4gICAgICAgIHJldHVybiBBO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1xudmFyIHJlcXVpcmVfaXRlcmF0b3JzID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge307XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzXG52YXIgcmVxdWlyZV9pc19hcnJheV9pdGVyYXRvcl9tZXRob2QgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZV93ZWxsX2tub3duX3N5bWJvbCgpO1xuICAgIHZhciBJdGVyYXRvcnMgPSByZXF1aXJlX2l0ZXJhdG9ycygpO1xuICAgIHZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbChcIml0ZXJhdG9yXCIpO1xuICAgIHZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihpdCkge1xuICAgICAgcmV0dXJuIGl0ICE9PSB2b2lkIDAgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdID09PSBpdCk7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzXG52YXIgcmVxdWlyZV9nZXRfaXRlcmF0b3JfbWV0aG9kID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBjbGFzc29mID0gcmVxdWlyZV9jbGFzc29mKCk7XG4gICAgdmFyIGdldE1ldGhvZCA9IHJlcXVpcmVfZ2V0X21ldGhvZCgpO1xuICAgIHZhciBJdGVyYXRvcnMgPSByZXF1aXJlX2l0ZXJhdG9ycygpO1xuICAgIHZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlX3dlbGxfa25vd25fc3ltYm9sKCk7XG4gICAgdmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKFwiaXRlcmF0b3JcIik7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oaXQpIHtcbiAgICAgIGlmIChpdCAhPSB2b2lkIDApXG4gICAgICAgIHJldHVybiBnZXRNZXRob2QoaXQsIElURVJBVE9SKSB8fCBnZXRNZXRob2QoaXQsIFwiQEBpdGVyYXRvclwiKSB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLmpzXG52YXIgcmVxdWlyZV9nZXRfaXRlcmF0b3IgPSBfX2NvbW1vbkpTKHtcbiAgXCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIGNhbGwgPSByZXF1aXJlX2Z1bmN0aW9uX2NhbGwoKTtcbiAgICB2YXIgYUNhbGxhYmxlID0gcmVxdWlyZV9hX2NhbGxhYmxlKCk7XG4gICAgdmFyIGFuT2JqZWN0ID0gcmVxdWlyZV9hbl9vYmplY3QoKTtcbiAgICB2YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlX3RyeV90b19zdHJpbmcoKTtcbiAgICB2YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlX2dldF9pdGVyYXRvcl9tZXRob2QoKTtcbiAgICB2YXIgVHlwZUVycm9yMiA9IGdsb2JhbDIuVHlwZUVycm9yO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyZ3VtZW50LCB1c2luZ0l0ZXJhdG9yKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGdldEl0ZXJhdG9yTWV0aG9kKGFyZ3VtZW50KSA6IHVzaW5nSXRlcmF0b3I7XG4gICAgICBpZiAoYUNhbGxhYmxlKGl0ZXJhdG9yTWV0aG9kKSlcbiAgICAgICAgcmV0dXJuIGFuT2JqZWN0KGNhbGwoaXRlcmF0b3JNZXRob2QsIGFyZ3VtZW50KSk7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IyKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArIFwiIGlzIG5vdCBpdGVyYWJsZVwiKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlLmpzXG52YXIgcmVxdWlyZV9pdGVyYXRvcl9jbG9zZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGNhbGwgPSByZXF1aXJlX2Z1bmN0aW9uX2NhbGwoKTtcbiAgICB2YXIgYW5PYmplY3QgPSByZXF1aXJlX2FuX29iamVjdCgpO1xuICAgIHZhciBnZXRNZXRob2QgPSByZXF1aXJlX2dldF9tZXRob2QoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihpdGVyYXRvciwga2luZCwgdmFsdWUpIHtcbiAgICAgIHZhciBpbm5lclJlc3VsdCwgaW5uZXJFcnJvcjtcbiAgICAgIGFuT2JqZWN0KGl0ZXJhdG9yKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlubmVyUmVzdWx0ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCBcInJldHVyblwiKTtcbiAgICAgICAgaWYgKCFpbm5lclJlc3VsdCkge1xuICAgICAgICAgIGlmIChraW5kID09PSBcInRocm93XCIpXG4gICAgICAgICAgICB0aHJvdyB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5uZXJSZXN1bHQgPSBjYWxsKGlubmVyUmVzdWx0LCBpdGVyYXRvcik7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpbm5lckVycm9yID0gdHJ1ZTtcbiAgICAgICAgaW5uZXJSZXN1bHQgPSBlcnJvcjtcbiAgICAgIH1cbiAgICAgIGlmIChraW5kID09PSBcInRocm93XCIpXG4gICAgICAgIHRocm93IHZhbHVlO1xuICAgICAgaWYgKGlubmVyRXJyb3IpXG4gICAgICAgIHRocm93IGlubmVyUmVzdWx0O1xuICAgICAgYW5PYmplY3QoaW5uZXJSZXN1bHQpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0ZS5qc1xudmFyIHJlcXVpcmVfaXRlcmF0ZSA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZ2xvYmFsMiA9IHJlcXVpcmVfZ2xvYmFsKCk7XG4gICAgdmFyIGJpbmQgPSByZXF1aXJlX2Z1bmN0aW9uX2JpbmRfY29udGV4dCgpO1xuICAgIHZhciBjYWxsID0gcmVxdWlyZV9mdW5jdGlvbl9jYWxsKCk7XG4gICAgdmFyIGFuT2JqZWN0ID0gcmVxdWlyZV9hbl9vYmplY3QoKTtcbiAgICB2YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlX3RyeV90b19zdHJpbmcoKTtcbiAgICB2YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZV9pc19hcnJheV9pdGVyYXRvcl9tZXRob2QoKTtcbiAgICB2YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlX2xlbmd0aF9vZl9hcnJheV9saWtlKCk7XG4gICAgdmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlX29iamVjdF9pc19wcm90b3R5cGVfb2YoKTtcbiAgICB2YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlX2dldF9pdGVyYXRvcigpO1xuICAgIHZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmVfZ2V0X2l0ZXJhdG9yX21ldGhvZCgpO1xuICAgIHZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZV9pdGVyYXRvcl9jbG9zZSgpO1xuICAgIHZhciBUeXBlRXJyb3IyID0gZ2xvYmFsMi5UeXBlRXJyb3I7XG4gICAgdmFyIFJlc3VsdCA9IGZ1bmN0aW9uKHN0b3BwZWQsIHJlc3VsdCkge1xuICAgICAgdGhpcy5zdG9wcGVkID0gc3RvcHBlZDtcbiAgICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgIH07XG4gICAgdmFyIFJlc3VsdFByb3RvdHlwZSA9IFJlc3VsdC5wcm90b3R5cGU7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmFibGUsIHVuYm91bmRGdW5jdGlvbiwgb3B0aW9ucykge1xuICAgICAgdmFyIHRoYXQgPSBvcHRpb25zICYmIG9wdGlvbnMudGhhdDtcbiAgICAgIHZhciBBU19FTlRSSUVTID0gISEob3B0aW9ucyAmJiBvcHRpb25zLkFTX0VOVFJJRVMpO1xuICAgICAgdmFyIElTX0lURVJBVE9SID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklTX0lURVJBVE9SKTtcbiAgICAgIHZhciBJTlRFUlJVUFRFRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JTlRFUlJVUFRFRCk7XG4gICAgICB2YXIgZm4gPSBiaW5kKHVuYm91bmRGdW5jdGlvbiwgdGhhdCk7XG4gICAgICB2YXIgaXRlcmF0b3IsIGl0ZXJGbiwgaW5kZXgsIGxlbmd0aCwgcmVzdWx0LCBuZXh0LCBzdGVwO1xuICAgICAgdmFyIHN0b3AgPSBmdW5jdGlvbihjb25kaXRpb24pIHtcbiAgICAgICAgaWYgKGl0ZXJhdG9yKVxuICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIFwibm9ybWFsXCIsIGNvbmRpdGlvbik7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KHRydWUsIGNvbmRpdGlvbik7XG4gICAgICB9O1xuICAgICAgdmFyIGNhbGxGbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIGlmIChBU19FTlRSSUVTKSB7XG4gICAgICAgICAgYW5PYmplY3QodmFsdWUpO1xuICAgICAgICAgIHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSwgc3RvcCkgOiBmbih2YWx1ZVswXSwgdmFsdWVbMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlLCBzdG9wKSA6IGZuKHZhbHVlKTtcbiAgICAgIH07XG4gICAgICBpZiAoSVNfSVRFUkFUT1IpIHtcbiAgICAgICAgaXRlcmF0b3IgPSBpdGVyYWJsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJGbiA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0ZXJhYmxlKTtcbiAgICAgICAgaWYgKCFpdGVyRm4pXG4gICAgICAgICAgdGhyb3cgVHlwZUVycm9yMih0cnlUb1N0cmluZyhpdGVyYWJsZSkgKyBcIiBpcyBub3QgaXRlcmFibGVcIik7XG4gICAgICAgIGlmIChpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlckZuKSkge1xuICAgICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShpdGVyYWJsZSk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBjYWxsRm4oaXRlcmFibGVbaW5kZXhdKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgaXNQcm90b3R5cGVPZihSZXN1bHRQcm90b3R5cGUsIHJlc3VsdCkpXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGl0ZXJhYmxlLCBpdGVyRm4pO1xuICAgICAgfVxuICAgICAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7XG4gICAgICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXN1bHQgPSBjYWxsRm4oc3RlcC52YWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgXCJ0aHJvd1wiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT0gXCJvYmplY3RcIiAmJiByZXN1bHQgJiYgaXNQcm90b3R5cGVPZihSZXN1bHRQcm90b3R5cGUsIHJlc3VsdCkpXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KGZhbHNlKTtcbiAgICB9O1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qc1xudmFyIHJlcXVpcmVfY3JlYXRlX3Byb3BlcnR5ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlX3RvX3Byb3BlcnR5X2tleSgpO1xuICAgIHZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmVfb2JqZWN0X2RlZmluZV9wcm9wZXJ0eSgpO1xuICAgIHZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlX2NyZWF0ZV9wcm9wZXJ0eV9kZXNjcmlwdG9yKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24ob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgcHJvcGVydHlLZXkgPSB0b1Byb3BlcnR5S2V5KGtleSk7XG4gICAgICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KVxuICAgICAgICBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICAgICAgZWxzZVxuICAgICAgICBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmZyb20tZW50cmllcy5qc1xudmFyIHJlcXVpcmVfZXNfb2JqZWN0X2Zyb21fZW50cmllcyA9IF9fY29tbW9uSlMoe1xuICBcIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmZyb20tZW50cmllcy5qc1wiKCkge1xuICAgIHZhciAkID0gcmVxdWlyZV9leHBvcnQoKTtcbiAgICB2YXIgaXRlcmF0ZSA9IHJlcXVpcmVfaXRlcmF0ZSgpO1xuICAgIHZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmVfY3JlYXRlX3Byb3BlcnR5KCk7XG4gICAgJCh7IHRhcmdldDogXCJPYmplY3RcIiwgc3RhdDogdHJ1ZSB9LCB7XG4gICAgICBmcm9tRW50cmllczogZnVuY3Rpb24gZnJvbUVudHJpZXMoaXRlcmFibGUpIHtcbiAgICAgICAgdmFyIG9iaiA9IHt9O1xuICAgICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbihrLCB2KSB7XG4gICAgICAgICAgY3JlYXRlUHJvcGVydHkob2JqLCBrLCB2KTtcbiAgICAgICAgfSwgeyBBU19FTlRSSUVTOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59KTtcblxuLy8gbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mbGF0LmpzXG52YXIgcmVxdWlyZV9lc19hcnJheV9mbGF0ID0gX19jb21tb25KUyh7XG4gIFwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mbGF0LmpzXCIoKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyICQgPSByZXF1aXJlX2V4cG9ydCgpO1xuICAgIHZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZV9mbGF0dGVuX2ludG9fYXJyYXkoKTtcbiAgICB2YXIgdG9PYmplY3QgPSByZXF1aXJlX3RvX29iamVjdCgpO1xuICAgIHZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmVfbGVuZ3RoX29mX2FycmF5X2xpa2UoKTtcbiAgICB2YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmVfdG9faW50ZWdlcl9vcl9pbmZpbml0eSgpO1xuICAgIHZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlX2FycmF5X3NwZWNpZXNfY3JlYXRlKCk7XG4gICAgJCh7IHRhcmdldDogXCJBcnJheVwiLCBwcm90bzogdHJ1ZSB9LCB7XG4gICAgICBmbGF0OiBmdW5jdGlvbiBmbGF0KCkge1xuICAgICAgICB2YXIgZGVwdGhBcmcgPSBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdm9pZCAwO1xuICAgICAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgICAgICB2YXIgc291cmNlTGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgICAgIHZhciBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgICAgICBBLmxlbmd0aCA9IGZsYXR0ZW5JbnRvQXJyYXkoQSwgTywgTywgc291cmNlTGVuLCAwLCBkZXB0aEFyZyA9PT0gdm9pZCAwID8gMSA6IHRvSW50ZWdlck9ySW5maW5pdHkoZGVwdGhBcmcpKTtcbiAgICAgICAgcmV0dXJuIEE7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0pO1xuXG4vLyBkaXN0L19pbmRleC5qcy5janMuanNcbnZhciBfZXhjbHVkZWQgPSBbXCJjbGlOYW1lXCIsIFwiY2xpQ2F0ZWdvcnlcIiwgXCJjbGlEZXNjcmlwdGlvblwiXTtcbnZhciBfZXhjbHVkZWQyID0gW1wiX1wiXTtcbnZhciBfZXhjbHVkZWQzID0gW1wib3ZlcnJpZGVzXCJdO1xudmFyIF9leGNsdWRlZDQgPSBbXCJsYW5ndWFnZUlkXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKVxuICAgIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpXG4gICAgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMClcbiAgICAgIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cbnJlcXVpcmVfZXNfYXJyYXlfZmxhdF9tYXAoKTtcbnJlcXVpcmVfZXNfb2JqZWN0X2Zyb21fZW50cmllcygpO1xucmVxdWlyZV9lc19hcnJheV9mbGF0KCk7XG52YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lczIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBfX2dldFByb3RvT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX2VzbSA9IChmbiwgcmVzKSA9PiBmdW5jdGlvbiBfX2luaXQoKSB7XG4gIHJldHVybiBmbiAmJiAocmVzID0gKDAsIGZuW19fZ2V0T3duUHJvcE5hbWVzMihmbilbMF1dKShmbiA9IDApKSwgcmVzO1xufTtcbnZhciBfX2NvbW1vbkpTMiA9IChjYiwgbW9kKSA9PiBmdW5jdGlvbiBfX3JlcXVpcmUoKSB7XG4gIHJldHVybiBtb2QgfHwgKDAsIGNiW19fZ2V0T3duUHJvcE5hbWVzMihjYilbMF1dKSgobW9kID0ge1xuICAgIGV4cG9ydHM6IHt9XG4gIH0pLmV4cG9ydHMsIG1vZCksIG1vZC5leHBvcnRzO1xufTtcbnZhciBfX2V4cG9ydCA9ICh0YXJnZXQsIGFsbCkgPT4ge1xuICBmb3IgKHZhciBuYW1lIGluIGFsbClcbiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7XG4gICAgICBnZXQ6IGFsbFtuYW1lXSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzMihmcm9tKSlcbiAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodG8sIGtleSkgJiYga2V5ICE9PSBleGNlcHQpXG4gICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7XG4gICAgICAgICAgZ2V0OiAoKSA9PiBmcm9tW2tleV0sXG4gICAgICAgICAgZW51bWVyYWJsZTogIShkZXNjID0gX19nZXRPd25Qcm9wRGVzYyhmcm9tLCBrZXkpKSB8fCBkZXNjLmVudW1lcmFibGVcbiAgICAgICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRvO1xufTtcbnZhciBfX3RvRVNNID0gKG1vZCwgaXNOb2RlTW9kZSwgdGFyZ2V0KSA9PiAodGFyZ2V0ID0gbW9kICE9IG51bGwgPyBfX2NyZWF0ZShfX2dldFByb3RvT2YobW9kKSkgOiB7fSwgX19jb3B5UHJvcHMoaXNOb2RlTW9kZSB8fCAhbW9kIHx8ICFtb2QuX19lc01vZHVsZSA/IF9fZGVmUHJvcCh0YXJnZXQsIFwiZGVmYXVsdFwiLCB7XG4gIHZhbHVlOiBtb2QsXG4gIGVudW1lcmFibGU6IHRydWVcbn0pIDogdGFyZ2V0LCBtb2QpKTtcbnZhciBfX3RvQ29tbW9uSlMgPSAobW9kKSA9PiBfX2NvcHlQcm9wcyhfX2RlZlByb3Aoe30sIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KSwgbW9kKTtcbnZhciByZXF1aXJlX2Jhc2UgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2RpZmYvbGliL2RpZmYvYmFzZS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMltcImRlZmF1bHRcIl0gPSBEaWZmO1xuICAgIGZ1bmN0aW9uIERpZmYoKSB7XG4gICAgfVxuICAgIERpZmYucHJvdG90eXBlID0ge1xuICAgICAgZGlmZjogZnVuY3Rpb24gZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZykge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdm9pZCAwID8gYXJndW1lbnRzWzJdIDoge307XG4gICAgICAgIHZhciBjYWxsYmFjayA9IG9wdGlvbnMuY2FsbGJhY2s7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB2YXIgc2VsZjIgPSB0aGlzO1xuICAgICAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBjYWxsYmFjayh2b2lkIDAsIHZhbHVlKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb2xkU3RyaW5nID0gdGhpcy5jYXN0SW5wdXQob2xkU3RyaW5nKTtcbiAgICAgICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcbiAgICAgICAgb2xkU3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG9sZFN0cmluZykpO1xuICAgICAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG4gICAgICAgIHZhciBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLCBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoO1xuICAgICAgICB2YXIgZWRpdExlbmd0aCA9IDE7XG4gICAgICAgIHZhciBtYXhFZGl0TGVuZ3RoID0gbmV3TGVuICsgb2xkTGVuO1xuICAgICAgICB2YXIgYmVzdFBhdGggPSBbe1xuICAgICAgICAgIG5ld1BvczogLTEsXG4gICAgICAgICAgY29tcG9uZW50czogW11cbiAgICAgICAgfV07XG4gICAgICAgIHZhciBvbGRQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICAgICAgaWYgKGJlc3RQYXRoWzBdLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGRvbmUoW3tcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmpvaW4obmV3U3RyaW5nKSxcbiAgICAgICAgICAgIGNvdW50OiBuZXdTdHJpbmcubGVuZ3RoXG4gICAgICAgICAgfV0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGV4ZWNFZGl0TGVuZ3RoKCkge1xuICAgICAgICAgIGZvciAodmFyIGRpYWdvbmFsUGF0aCA9IC0xICogZWRpdExlbmd0aDsgZGlhZ29uYWxQYXRoIDw9IGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYmFzZVBhdGggPSB2b2lkIDA7XG4gICAgICAgICAgICB2YXIgYWRkUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdLCByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV0sIF9vbGRQb3MgPSAocmVtb3ZlUGF0aCA/IHJlbW92ZVBhdGgubmV3UG9zIDogMCkgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHZvaWQgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYW5BZGQgPSBhZGRQYXRoICYmIGFkZFBhdGgubmV3UG9zICsgMSA8IG5ld0xlbiwgY2FuUmVtb3ZlID0gcmVtb3ZlUGF0aCAmJiAwIDw9IF9vbGRQb3MgJiYgX29sZFBvcyA8IG9sZExlbjtcbiAgICAgICAgICAgIGlmICghY2FuQWRkICYmICFjYW5SZW1vdmUpIHtcbiAgICAgICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoXSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNhbkFkZCB8fCBjYW5SZW1vdmUgJiYgYWRkUGF0aC5uZXdQb3MgPCByZW1vdmVQYXRoLm5ld1Bvcykge1xuICAgICAgICAgICAgICBiYXNlUGF0aCA9IGNsb25lUGF0aChyZW1vdmVQYXRoKTtcbiAgICAgICAgICAgICAgc2VsZjIucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25lbnRzLCB2b2lkIDAsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzZVBhdGggPSBhZGRQYXRoO1xuICAgICAgICAgICAgICBiYXNlUGF0aC5uZXdQb3MrKztcbiAgICAgICAgICAgICAgc2VsZjIucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25lbnRzLCB0cnVlLCB2b2lkIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX29sZFBvcyA9IHNlbGYyLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuICAgICAgICAgICAgaWYgKGJhc2VQYXRoLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIF9vbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgICAgICByZXR1cm4gZG9uZShidWlsZFZhbHVlcyhzZWxmMiwgYmFzZVBhdGguY29tcG9uZW50cywgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHNlbGYyLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoXSA9IGJhc2VQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlZGl0TGVuZ3RoKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBpZiAoZWRpdExlbmd0aCA+IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWV4ZWNFZGl0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH0pKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2hpbGUgKGVkaXRMZW5ndGggPD0gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgdmFyIHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHVzaENvbXBvbmVudDogZnVuY3Rpb24gcHVzaENvbXBvbmVudChjb21wb25lbnRzLCBhZGRlZCwgcmVtb3ZlZCkge1xuICAgICAgICB2YXIgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3QgJiYgbGFzdC5hZGRlZCA9PT0gYWRkZWQgJiYgbGFzdC5yZW1vdmVkID09PSByZW1vdmVkKSB7XG4gICAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdID0ge1xuICAgICAgICAgICAgY291bnQ6IGxhc3QuY291bnQgKyAxLFxuICAgICAgICAgICAgYWRkZWQsXG4gICAgICAgICAgICByZW1vdmVkXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21wb25lbnRzLnB1c2goe1xuICAgICAgICAgICAgY291bnQ6IDEsXG4gICAgICAgICAgICBhZGRlZCxcbiAgICAgICAgICAgIHJlbW92ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGV4dHJhY3RDb21tb246IGZ1bmN0aW9uIGV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpIHtcbiAgICAgICAgdmFyIG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGgsIG5ld1BvcyA9IGJhc2VQYXRoLm5ld1Bvcywgb2xkUG9zID0gbmV3UG9zIC0gZGlhZ29uYWxQYXRoLCBjb21tb25Db3VudCA9IDA7XG4gICAgICAgIHdoaWxlIChuZXdQb3MgKyAxIDwgbmV3TGVuICYmIG9sZFBvcyArIDEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMobmV3U3RyaW5nW25ld1BvcyArIDFdLCBvbGRTdHJpbmdbb2xkUG9zICsgMV0pKSB7XG4gICAgICAgICAgbmV3UG9zKys7XG4gICAgICAgICAgb2xkUG9zKys7XG4gICAgICAgICAgY29tbW9uQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tbW9uQ291bnQpIHtcbiAgICAgICAgICBiYXNlUGF0aC5jb21wb25lbnRzLnB1c2goe1xuICAgICAgICAgICAgY291bnQ6IGNvbW1vbkNvdW50XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYmFzZVBhdGgubmV3UG9zID0gbmV3UG9zO1xuICAgICAgICByZXR1cm4gb2xkUG9zO1xuICAgICAgfSxcbiAgICAgIGVxdWFsczogZnVuY3Rpb24gZXF1YWxzKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGFyYXRvcikge1xuICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29tcGFyYXRvcihsZWZ0LCByaWdodCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8IHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlbW92ZUVtcHR5OiBmdW5jdGlvbiByZW1vdmVFbXB0eShhcnJheSkge1xuICAgICAgICB2YXIgcmV0ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJyYXlbaV0pIHtcbiAgICAgICAgICAgIHJldC5wdXNoKGFycmF5W2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0sXG4gICAgICBjYXN0SW5wdXQ6IGZ1bmN0aW9uIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9LFxuICAgICAgdG9rZW5pemU6IGZ1bmN0aW9uIHRva2VuaXplKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zcGxpdChcIlwiKTtcbiAgICAgIH0sXG4gICAgICBqb2luOiBmdW5jdGlvbiBqb2luKGNoYXJzKSB7XG4gICAgICAgIHJldHVybiBjaGFycy5qb2luKFwiXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gYnVpbGRWYWx1ZXMoZGlmZiwgY29tcG9uZW50cywgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgdmFyIGNvbXBvbmVudFBvcyA9IDAsIGNvbXBvbmVudExlbiA9IGNvbXBvbmVudHMubGVuZ3RoLCBuZXdQb3MgPSAwLCBvbGRQb3MgPSAwO1xuICAgICAgZm9yICg7IGNvbXBvbmVudFBvcyA8IGNvbXBvbmVudExlbjsgY29tcG9uZW50UG9zKyspIHtcbiAgICAgICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICAgICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgICAgIGlmICghY29tcG9uZW50LmFkZGVkICYmIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gbmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlMiwgaSkge1xuICAgICAgICAgICAgICB2YXIgb2xkVmFsdWUgPSBvbGRTdHJpbmdbb2xkUG9zICsgaV07XG4gICAgICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZTIubGVuZ3RoID8gb2xkVmFsdWUgOiB2YWx1ZTI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbih2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3UG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCkge1xuICAgICAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG9sZFN0cmluZy5zbGljZShvbGRQb3MsIG9sZFBvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG4gICAgICAgICAgaWYgKGNvbXBvbmVudFBvcyAmJiBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdLmFkZGVkKSB7XG4gICAgICAgICAgICB2YXIgdG1wID0gY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXTtcbiAgICAgICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvc10gPSB0bXA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgbGFzdENvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50TGVuIC0gMV07XG4gICAgICBpZiAoY29tcG9uZW50TGVuID4gMSAmJiB0eXBlb2YgbGFzdENvbXBvbmVudC52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAobGFzdENvbXBvbmVudC5hZGRlZCB8fCBsYXN0Q29tcG9uZW50LnJlbW92ZWQpICYmIGRpZmYuZXF1YWxzKFwiXCIsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50TGVuIC0gMl0udmFsdWUgKz0gbGFzdENvbXBvbmVudC52YWx1ZTtcbiAgICAgICAgY29tcG9uZW50cy5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21wb25lbnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjbG9uZVBhdGgocGF0aCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV3UG9zOiBwYXRoLm5ld1BvcyxcbiAgICAgICAgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApXG4gICAgICB9O1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9hcnJheSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZGlmZi9saWIvZGlmZi9hcnJheS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5kaWZmQXJyYXlzID0gZGlmZkFycmF5cztcbiAgICBleHBvcnRzMi5hcnJheURpZmYgPSB2b2lkIDA7XG4gICAgdmFyIF9iYXNlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlX2Jhc2UoKSk7XG4gICAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIFwiZGVmYXVsdFwiOiBvYmpcbiAgICAgIH07XG4gICAgfVxuICAgIHZhciBhcnJheURpZmYgPSBuZXcgX2Jhc2VbXCJkZWZhdWx0XCJdKCk7XG4gICAgZXhwb3J0czIuYXJyYXlEaWZmID0gYXJyYXlEaWZmO1xuICAgIGFycmF5RGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbiAgICB9O1xuICAgIGFycmF5RGlmZi5qb2luID0gYXJyYXlEaWZmLnJlbW92ZUVtcHR5ID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGRpZmZBcnJheXMob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH1cbn0pO1xudmFyIGVzY2FwZV9zdHJpbmdfcmVnZXhwX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KGVzY2FwZV9zdHJpbmdfcmVnZXhwX2V4cG9ydHMsIHtcbiAgZGVmYXVsdDogKCkgPT4gZXNjYXBlU3RyaW5nUmVnZXhwXG59KTtcbmZ1bmN0aW9uIGVzY2FwZVN0cmluZ1JlZ2V4cChzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBzdHJpbmdcIik7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bfFxcXFx7fSgpW1xcXV4kKyo/Ll0vZywgXCJcXFxcJCZcIikucmVwbGFjZSgvLS9nLCBcIlxcXFx4MmRcIik7XG59XG52YXIgaW5pdF9lc2NhcGVfc3RyaW5nX3JlZ2V4cCA9IF9fZXNtKHtcbiAgXCJub2RlX21vZHVsZXMvZXNjYXBlLXN0cmluZy1yZWdleHAvaW5kZXguanNcIigpIHtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9nZXRfbGFzdCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvdXRpbHMvZ2V0LWxhc3QuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBnZXRMYXN0ID0gKGFycikgPT4gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBnZXRMYXN0O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2RlYnVnID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvZGVidWcuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBkZWJ1ZyA9IHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfREVCVUcgJiYgL1xcYnNlbXZlclxcYi9pLnRlc3QocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRykgPyAoLi4uYXJncykgPT4gY29uc29sZS5lcnJvcihcIlNFTVZFUlwiLCAuLi5hcmdzKSA6ICgpID0+IHtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGRlYnVnO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NvbnN0YW50cyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2NvbnN0YW50cy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIFNFTVZFUl9TUEVDX1ZFUlNJT04gPSBcIjIuMC4wXCI7XG4gICAgdmFyIE1BWF9MRU5HVEggPSAyNTY7XG4gICAgdmFyIE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCA5MDA3MTk5MjU0NzQwOTkxO1xuICAgIHZhciBNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIID0gMTY7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgU0VNVkVSX1NQRUNfVkVSU0lPTixcbiAgICAgIE1BWF9MRU5HVEgsXG4gICAgICBNQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcmUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9yZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIHtcbiAgICAgIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEhcbiAgICB9ID0gcmVxdWlyZV9jb25zdGFudHMoKTtcbiAgICB2YXIgZGVidWcgPSByZXF1aXJlX2RlYnVnKCk7XG4gICAgZXhwb3J0czIgPSBtb2R1bGUyLmV4cG9ydHMgPSB7fTtcbiAgICB2YXIgcmUgPSBleHBvcnRzMi5yZSA9IFtdO1xuICAgIHZhciBzcmMgPSBleHBvcnRzMi5zcmMgPSBbXTtcbiAgICB2YXIgdCA9IGV4cG9ydHMyLnQgPSB7fTtcbiAgICB2YXIgUiA9IDA7XG4gICAgdmFyIGNyZWF0ZVRva2VuID0gKG5hbWUsIHZhbHVlLCBpc0dsb2JhbCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBSKys7XG4gICAgICBkZWJ1ZyhuYW1lLCBpbmRleCwgdmFsdWUpO1xuICAgICAgdFtuYW1lXSA9IGluZGV4O1xuICAgICAgc3JjW2luZGV4XSA9IHZhbHVlO1xuICAgICAgcmVbaW5kZXhdID0gbmV3IFJlZ0V4cCh2YWx1ZSwgaXNHbG9iYWwgPyBcImdcIiA6IHZvaWQgMCk7XG4gICAgfTtcbiAgICBjcmVhdGVUb2tlbihcIk5VTUVSSUNJREVOVElGSUVSXCIsIFwiMHxbMS05XVxcXFxkKlwiKTtcbiAgICBjcmVhdGVUb2tlbihcIk5VTUVSSUNJREVOVElGSUVSTE9PU0VcIiwgXCJbMC05XStcIik7XG4gICAgY3JlYXRlVG9rZW4oXCJOT05OVU1FUklDSURFTlRJRklFUlwiLCBcIlxcXFxkKlthLXpBLVotXVthLXpBLVowLTktXSpcIik7XG4gICAgY3JlYXRlVG9rZW4oXCJNQUlOVkVSU0lPTlwiLCBgKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdfSlcXFxcLigke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSXX0pXFxcXC4oJHtzcmNbdC5OVU1FUklDSURFTlRJRklFUl19KWApO1xuICAgIGNyZWF0ZVRva2VuKFwiTUFJTlZFUlNJT05MT09TRVwiLCBgKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJMT09TRV19KVxcXFwuKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJMT09TRV19KVxcXFwuKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJMT09TRV19KWApO1xuICAgIGNyZWF0ZVRva2VuKFwiUFJFUkVMRUFTRUlERU5USUZJRVJcIiwgYCg/OiR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdfXwke3NyY1t0Lk5PTk5VTUVSSUNJREVOVElGSUVSXX0pYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJQUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXCIsIGAoPzoke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSTE9PU0VdfXwke3NyY1t0Lk5PTk5VTUVSSUNJREVOVElGSUVSXX0pYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJQUkVSRUxFQVNFXCIsIGAoPzotKCR7c3JjW3QuUFJFUkVMRUFTRUlERU5USUZJRVJdfSg/OlxcXFwuJHtzcmNbdC5QUkVSRUxFQVNFSURFTlRJRklFUl19KSopKWApO1xuICAgIGNyZWF0ZVRva2VuKFwiUFJFUkVMRUFTRUxPT1NFXCIsIGAoPzotPygke3NyY1t0LlBSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdfSg/OlxcXFwuJHtzcmNbdC5QUkVSRUxFQVNFSURFTlRJRklFUkxPT1NFXX0pKikpYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJCVUlMRElERU5USUZJRVJcIiwgXCJbMC05QS1aYS16LV0rXCIpO1xuICAgIGNyZWF0ZVRva2VuKFwiQlVJTERcIiwgYCg/OlxcXFwrKCR7c3JjW3QuQlVJTERJREVOVElGSUVSXX0oPzpcXFxcLiR7c3JjW3QuQlVJTERJREVOVElGSUVSXX0pKikpYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJGVUxMUExBSU5cIiwgYHY/JHtzcmNbdC5NQUlOVkVSU0lPTl19JHtzcmNbdC5QUkVSRUxFQVNFXX0/JHtzcmNbdC5CVUlMRF19P2ApO1xuICAgIGNyZWF0ZVRva2VuKFwiRlVMTFwiLCBgXiR7c3JjW3QuRlVMTFBMQUlOXX0kYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJMT09TRVBMQUlOXCIsIGBbdj1cXFxcc10qJHtzcmNbdC5NQUlOVkVSU0lPTkxPT1NFXX0ke3NyY1t0LlBSRVJFTEVBU0VMT09TRV19PyR7c3JjW3QuQlVJTERdfT9gKTtcbiAgICBjcmVhdGVUb2tlbihcIkxPT1NFXCIsIGBeJHtzcmNbdC5MT09TRVBMQUlOXX0kYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJHVExUXCIsIFwiKCg/Ojx8Pik/PT8pXCIpO1xuICAgIGNyZWF0ZVRva2VuKFwiWFJBTkdFSURFTlRJRklFUkxPT1NFXCIsIGAke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSTE9PU0VdfXx4fFh8XFxcXCpgKTtcbiAgICBjcmVhdGVUb2tlbihcIlhSQU5HRUlERU5USUZJRVJcIiwgYCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdfXx4fFh8XFxcXCpgKTtcbiAgICBjcmVhdGVUb2tlbihcIlhSQU5HRVBMQUlOXCIsIGBbdj1cXFxcc10qKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUl19KSg/OlxcXFwuKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUl19KSg/OlxcXFwuKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUl19KSg/OiR7c3JjW3QuUFJFUkVMRUFTRV19KT8ke3NyY1t0LkJVSUxEXX0/KT8pP2ApO1xuICAgIGNyZWF0ZVRva2VuKFwiWFJBTkdFUExBSU5MT09TRVwiLCBgW3Y9XFxcXHNdKigke3NyY1t0LlhSQU5HRUlERU5USUZJRVJMT09TRV19KSg/OlxcXFwuKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUkxPT1NFXX0pKD86XFxcXC4oJHtzcmNbdC5YUkFOR0VJREVOVElGSUVSTE9PU0VdfSkoPzoke3NyY1t0LlBSRVJFTEVBU0VMT09TRV19KT8ke3NyY1t0LkJVSUxEXX0/KT8pP2ApO1xuICAgIGNyZWF0ZVRva2VuKFwiWFJBTkdFXCIsIGBeJHtzcmNbdC5HVExUXX1cXFxccyoke3NyY1t0LlhSQU5HRVBMQUlOXX0kYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJYUkFOR0VMT09TRVwiLCBgXiR7c3JjW3QuR1RMVF19XFxcXHMqJHtzcmNbdC5YUkFOR0VQTEFJTkxPT1NFXX0kYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJDT0VSQ0VcIiwgYCR7XCIoXnxbXlxcXFxkXSkoXFxcXGR7MSxcIn0ke01BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEh9fSkoPzpcXFxcLihcXFxcZHsxLCR7TUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSH19KSk/KD86XFxcXC4oXFxcXGR7MSwke01BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEh9fSkpPyg/OiR8W15cXFxcZF0pYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJDT0VSQ0VSVExcIiwgc3JjW3QuQ09FUkNFXSwgdHJ1ZSk7XG4gICAgY3JlYXRlVG9rZW4oXCJMT05FVElMREVcIiwgXCIoPzp+Pj8pXCIpO1xuICAgIGNyZWF0ZVRva2VuKFwiVElMREVUUklNXCIsIGAoXFxcXHMqKSR7c3JjW3QuTE9ORVRJTERFXX1cXFxccytgLCB0cnVlKTtcbiAgICBleHBvcnRzMi50aWxkZVRyaW1SZXBsYWNlID0gXCIkMX5cIjtcbiAgICBjcmVhdGVUb2tlbihcIlRJTERFXCIsIGBeJHtzcmNbdC5MT05FVElMREVdfSR7c3JjW3QuWFJBTkdFUExBSU5dfSRgKTtcbiAgICBjcmVhdGVUb2tlbihcIlRJTERFTE9PU0VcIiwgYF4ke3NyY1t0LkxPTkVUSUxERV19JHtzcmNbdC5YUkFOR0VQTEFJTkxPT1NFXX0kYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJMT05FQ0FSRVRcIiwgXCIoPzpcXFxcXilcIik7XG4gICAgY3JlYXRlVG9rZW4oXCJDQVJFVFRSSU1cIiwgYChcXFxccyopJHtzcmNbdC5MT05FQ0FSRVRdfVxcXFxzK2AsIHRydWUpO1xuICAgIGV4cG9ydHMyLmNhcmV0VHJpbVJlcGxhY2UgPSBcIiQxXlwiO1xuICAgIGNyZWF0ZVRva2VuKFwiQ0FSRVRcIiwgYF4ke3NyY1t0LkxPTkVDQVJFVF19JHtzcmNbdC5YUkFOR0VQTEFJTl19JGApO1xuICAgIGNyZWF0ZVRva2VuKFwiQ0FSRVRMT09TRVwiLCBgXiR7c3JjW3QuTE9ORUNBUkVUXX0ke3NyY1t0LlhSQU5HRVBMQUlOTE9PU0VdfSRgKTtcbiAgICBjcmVhdGVUb2tlbihcIkNPTVBBUkFUT1JMT09TRVwiLCBgXiR7c3JjW3QuR1RMVF19XFxcXHMqKCR7c3JjW3QuTE9PU0VQTEFJTl19KSR8XiRgKTtcbiAgICBjcmVhdGVUb2tlbihcIkNPTVBBUkFUT1JcIiwgYF4ke3NyY1t0LkdUTFRdfVxcXFxzKigke3NyY1t0LkZVTExQTEFJTl19KSR8XiRgKTtcbiAgICBjcmVhdGVUb2tlbihcIkNPTVBBUkFUT1JUUklNXCIsIGAoXFxcXHMqKSR7c3JjW3QuR1RMVF19XFxcXHMqKCR7c3JjW3QuTE9PU0VQTEFJTl19fCR7c3JjW3QuWFJBTkdFUExBSU5dfSlgLCB0cnVlKTtcbiAgICBleHBvcnRzMi5jb21wYXJhdG9yVHJpbVJlcGxhY2UgPSBcIiQxJDIkM1wiO1xuICAgIGNyZWF0ZVRva2VuKFwiSFlQSEVOUkFOR0VcIiwgYF5cXFxccyooJHtzcmNbdC5YUkFOR0VQTEFJTl19KVxcXFxzKy1cXFxccysoJHtzcmNbdC5YUkFOR0VQTEFJTl19KVxcXFxzKiRgKTtcbiAgICBjcmVhdGVUb2tlbihcIkhZUEhFTlJBTkdFTE9PU0VcIiwgYF5cXFxccyooJHtzcmNbdC5YUkFOR0VQTEFJTkxPT1NFXX0pXFxcXHMrLVxcXFxzKygke3NyY1t0LlhSQU5HRVBMQUlOTE9PU0VdfSlcXFxccyokYCk7XG4gICAgY3JlYXRlVG9rZW4oXCJTVEFSXCIsIFwiKDx8Pik/PT9cXFxccypcXFxcKlwiKTtcbiAgICBjcmVhdGVUb2tlbihcIkdURTBcIiwgXCJeXFxcXHMqPj1cXFxccyowXFxcXC4wXFxcXC4wXFxcXHMqJFwiKTtcbiAgICBjcmVhdGVUb2tlbihcIkdURTBQUkVcIiwgXCJeXFxcXHMqPj1cXFxccyowXFxcXC4wXFxcXC4wLTBcXFxccyokXCIpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlX29wdGlvbnMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9wYXJzZS1vcHRpb25zLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgb3B0cyA9IFtcImluY2x1ZGVQcmVyZWxlYXNlXCIsIFwibG9vc2VcIiwgXCJydGxcIl07XG4gICAgdmFyIHBhcnNlT3B0aW9ucyA9IChvcHRpb25zKSA9PiAhb3B0aW9ucyA/IHt9IDogdHlwZW9mIG9wdGlvbnMgIT09IFwib2JqZWN0XCIgPyB7XG4gICAgICBsb29zZTogdHJ1ZVxuICAgIH0gOiBvcHRzLmZpbHRlcigoaykgPT4gb3B0aW9uc1trXSkucmVkdWNlKChvLCBrKSA9PiB7XG4gICAgICBvW2tdID0gdHJ1ZTtcbiAgICAgIHJldHVybiBvO1xuICAgIH0sIHt9KTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwYXJzZU9wdGlvbnM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaWRlbnRpZmllcnMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9pZGVudGlmaWVycy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIG51bWVyaWMgPSAvXlswLTldKyQvO1xuICAgIHZhciBjb21wYXJlSWRlbnRpZmllcnMgPSAoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYW51bSA9IG51bWVyaWMudGVzdChhKTtcbiAgICAgIGNvbnN0IGJudW0gPSBudW1lcmljLnRlc3QoYik7XG4gICAgICBpZiAoYW51bSAmJiBibnVtKSB7XG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYW51bSAmJiAhYm51bSA/IC0xIDogYm51bSAmJiAhYW51bSA/IDEgOiBhIDwgYiA/IC0xIDogMTtcbiAgICB9O1xuICAgIHZhciByY29tcGFyZUlkZW50aWZpZXJzID0gKGEsIGIpID0+IGNvbXBhcmVJZGVudGlmaWVycyhiLCBhKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBjb21wYXJlSWRlbnRpZmllcnMsXG4gICAgICByY29tcGFyZUlkZW50aWZpZXJzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zZW12ZXIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3NlbXZlci9jbGFzc2VzL3NlbXZlci5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGRlYnVnID0gcmVxdWlyZV9kZWJ1ZygpO1xuICAgIHZhciB7XG4gICAgICBNQVhfTEVOR1RILFxuICAgICAgTUFYX1NBRkVfSU5URUdFUlxuICAgIH0gPSByZXF1aXJlX2NvbnN0YW50cygpO1xuICAgIHZhciB7XG4gICAgICByZSxcbiAgICAgIHRcbiAgICB9ID0gcmVxdWlyZV9yZSgpO1xuICAgIHZhciBwYXJzZU9wdGlvbnMgPSByZXF1aXJlX3BhcnNlX29wdGlvbnMoKTtcbiAgICB2YXIge1xuICAgICAgY29tcGFyZUlkZW50aWZpZXJzXG4gICAgfSA9IHJlcXVpcmVfaWRlbnRpZmllcnMoKTtcbiAgICB2YXIgU2VtVmVyID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IodmVyc2lvbjIsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgaWYgKHZlcnNpb24yIGluc3RhbmNlb2YgU2VtVmVyKSB7XG4gICAgICAgICAgaWYgKHZlcnNpb24yLmxvb3NlID09PSAhIW9wdGlvbnMubG9vc2UgJiYgdmVyc2lvbjIuaW5jbHVkZVByZXJlbGVhc2UgPT09ICEhb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb24yO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzaW9uMiA9IHZlcnNpb24yLnZlcnNpb247XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ZXJzaW9uMiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgVmVyc2lvbjogJHt2ZXJzaW9uMn1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmVyc2lvbjIubGVuZ3RoID4gTUFYX0xFTkdUSCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHZlcnNpb24gaXMgbG9uZ2VyIHRoYW4gJHtNQVhfTEVOR1RIfSBjaGFyYWN0ZXJzYCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVidWcoXCJTZW1WZXJcIiwgdmVyc2lvbjIsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmxvb3NlID0gISFvcHRpb25zLmxvb3NlO1xuICAgICAgICB0aGlzLmluY2x1ZGVQcmVyZWxlYXNlID0gISFvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlO1xuICAgICAgICBjb25zdCBtID0gdmVyc2lvbjIudHJpbSgpLm1hdGNoKG9wdGlvbnMubG9vc2UgPyByZVt0LkxPT1NFXSA6IHJlW3QuRlVMTF0pO1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFZlcnNpb246ICR7dmVyc2lvbjJ9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yYXcgPSB2ZXJzaW9uMjtcbiAgICAgICAgdGhpcy5tYWpvciA9ICttWzFdO1xuICAgICAgICB0aGlzLm1pbm9yID0gK21bMl07XG4gICAgICAgIHRoaXMucGF0Y2ggPSArbVszXTtcbiAgICAgICAgaWYgKHRoaXMubWFqb3IgPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMubWFqb3IgPCAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgbWFqb3IgdmVyc2lvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taW5vciA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgdGhpcy5taW5vciA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBtaW5vciB2ZXJzaW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhdGNoID4gTUFYX1NBRkVfSU5URUdFUiB8fCB0aGlzLnBhdGNoIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIHBhdGNoIHZlcnNpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtWzRdKSB7XG4gICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gbVs0XS5zcGxpdChcIi5cIikubWFwKChpZCkgPT4ge1xuICAgICAgICAgICAgaWYgKC9eWzAtOV0rJC8udGVzdChpZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgbnVtID0gK2lkO1xuICAgICAgICAgICAgICBpZiAobnVtID49IDAgJiYgbnVtIDwgTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJ1aWxkID0gbVs1XSA/IG1bNV0uc3BsaXQoXCIuXCIpIDogW107XG4gICAgICAgIHRoaXMuZm9ybWF0KCk7XG4gICAgICB9XG4gICAgICBmb3JtYXQoKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IGAke3RoaXMubWFqb3J9LiR7dGhpcy5taW5vcn0uJHt0aGlzLnBhdGNofWA7XG4gICAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy52ZXJzaW9uICs9IGAtJHt0aGlzLnByZXJlbGVhc2Uuam9pbihcIi5cIil9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy52ZXJzaW9uO1xuICAgICAgfVxuICAgICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcnNpb247XG4gICAgICB9XG4gICAgICBjb21wYXJlKG90aGVyKSB7XG4gICAgICAgIGRlYnVnKFwiU2VtVmVyLmNvbXBhcmVcIiwgdGhpcy52ZXJzaW9uLCB0aGlzLm9wdGlvbnMsIG90aGVyKTtcbiAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBTZW1WZXIpKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBvdGhlciA9PT0gXCJzdHJpbmdcIiAmJiBvdGhlciA9PT0gdGhpcy52ZXJzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlci52ZXJzaW9uID09PSB0aGlzLnZlcnNpb24pIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlTWFpbihvdGhlcikgfHwgdGhpcy5jb21wYXJlUHJlKG90aGVyKTtcbiAgICAgIH1cbiAgICAgIGNvbXBhcmVNYWluKG90aGVyKSB7XG4gICAgICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSkge1xuICAgICAgICAgIG90aGVyID0gbmV3IFNlbVZlcihvdGhlciwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKHRoaXMubWFqb3IsIG90aGVyLm1ham9yKSB8fCBjb21wYXJlSWRlbnRpZmllcnModGhpcy5taW5vciwgb3RoZXIubWlub3IpIHx8IGNvbXBhcmVJZGVudGlmaWVycyh0aGlzLnBhdGNoLCBvdGhlci5wYXRjaCk7XG4gICAgICB9XG4gICAgICBjb21wYXJlUHJlKG90aGVyKSB7XG4gICAgICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSkge1xuICAgICAgICAgIG90aGVyID0gbmV3IFNlbVZlcihvdGhlciwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiAhb3RoZXIucHJlcmVsZWFzZS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMucHJlcmVsZWFzZS5sZW5ndGggJiYgb3RoZXIucHJlcmVsZWFzZS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiAhb3RoZXIucHJlcmVsZWFzZS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCBhID0gdGhpcy5wcmVyZWxlYXNlW2ldO1xuICAgICAgICAgIGNvbnN0IGIgPSBvdGhlci5wcmVyZWxlYXNlW2ldO1xuICAgICAgICAgIGRlYnVnKFwicHJlcmVsZWFzZSBjb21wYXJlXCIsIGksIGEsIGIpO1xuICAgICAgICAgIGlmIChhID09PSB2b2lkIDAgJiYgYiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGIgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgfSBlbHNlIGlmIChhID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKGEsIGIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoKytpKTtcbiAgICAgIH1cbiAgICAgIGNvbXBhcmVCdWlsZChvdGhlcikge1xuICAgICAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpIHtcbiAgICAgICAgICBvdGhlciA9IG5ldyBTZW1WZXIob3RoZXIsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3QgYSA9IHRoaXMuYnVpbGRbaV07XG4gICAgICAgICAgY29uc3QgYiA9IG90aGVyLmJ1aWxkW2ldO1xuICAgICAgICAgIGRlYnVnKFwicHJlcmVsZWFzZSBjb21wYXJlXCIsIGksIGEsIGIpO1xuICAgICAgICAgIGlmIChhID09PSB2b2lkIDAgJiYgYiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGIgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgfSBlbHNlIGlmIChhID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKGEsIGIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoKytpKTtcbiAgICAgIH1cbiAgICAgIGluYyhyZWxlYXNlLCBpZGVudGlmaWVyKSB7XG4gICAgICAgIHN3aXRjaCAocmVsZWFzZSkge1xuICAgICAgICAgIGNhc2UgXCJwcmVtYWpvclwiOlxuICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgICAgICAgIHRoaXMubWlub3IgPSAwO1xuICAgICAgICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgICAgICAgdGhpcy5pbmMoXCJwcmVcIiwgaWRlbnRpZmllcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwicHJlbWlub3JcIjpcbiAgICAgICAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgdGhpcy5wYXRjaCA9IDA7XG4gICAgICAgICAgICB0aGlzLm1pbm9yKys7XG4gICAgICAgICAgICB0aGlzLmluYyhcInByZVwiLCBpZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJwcmVwYXRjaFwiOlxuICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLmluYyhcInBhdGNoXCIsIGlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdGhpcy5pbmMoXCJwcmVcIiwgaWRlbnRpZmllcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwicHJlcmVsZWFzZVwiOlxuICAgICAgICAgICAgaWYgKHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5pbmMoXCJwYXRjaFwiLCBpZGVudGlmaWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5jKFwicHJlXCIsIGlkZW50aWZpZXIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIm1ham9yXCI6XG4gICAgICAgICAgICBpZiAodGhpcy5taW5vciAhPT0gMCB8fCB0aGlzLnBhdGNoICE9PSAwIHx8IHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5tYWpvcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5taW5vciA9IDA7XG4gICAgICAgICAgICB0aGlzLnBhdGNoID0gMDtcbiAgICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIm1pbm9yXCI6XG4gICAgICAgICAgICBpZiAodGhpcy5wYXRjaCAhPT0gMCB8fCB0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMubWlub3IrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGF0Y2ggPSAwO1xuICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW107XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwicGF0Y2hcIjpcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMucGF0Y2grKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcInByZVwiOlxuICAgICAgICAgICAgaWYgKHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gWzBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGV0IGkgPSB0aGlzLnByZXJlbGVhc2UubGVuZ3RoO1xuICAgICAgICAgICAgICB3aGlsZSAoLS1pID49IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJlcmVsZWFzZVtpXSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlW2ldKys7XG4gICAgICAgICAgICAgICAgICBpID0gLTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcmVsZWFzZS5wdXNoKDApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAgICAgICBpZiAoY29tcGFyZUlkZW50aWZpZXJzKHRoaXMucHJlcmVsZWFzZVswXSwgaWRlbnRpZmllcikgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4odGhpcy5wcmVyZWxlYXNlWzFdKSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW2lkZW50aWZpZXIsIDBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBbaWRlbnRpZmllciwgMF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW5jcmVtZW50IGFyZ3VtZW50OiAke3JlbGVhc2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtYXQoKTtcbiAgICAgICAgdGhpcy5yYXcgPSB0aGlzLnZlcnNpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gU2VtVmVyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NvbXBhcmUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29tcGFyZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIFNlbVZlciA9IHJlcXVpcmVfc2VtdmVyKCk7XG4gICAgdmFyIGNvbXBhcmUgPSAoYSwgYiwgbG9vc2UpID0+IG5ldyBTZW1WZXIoYSwgbG9vc2UpLmNvbXBhcmUobmV3IFNlbVZlcihiLCBsb29zZSkpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGNvbXBhcmU7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbHQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbHQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBjb21wYXJlID0gcmVxdWlyZV9jb21wYXJlKCk7XG4gICAgdmFyIGx0ID0gKGEsIGIsIGxvb3NlKSA9PiBjb21wYXJlKGEsIGIsIGxvb3NlKSA8IDA7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gbHQ7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZ3RlID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2d0ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGNvbXBhcmUgPSByZXF1aXJlX2NvbXBhcmUoKTtcbiAgICB2YXIgZ3RlID0gKGEsIGIsIGxvb3NlKSA9PiBjb21wYXJlKGEsIGIsIGxvb3NlKSA+PSAwO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGd0ZTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9hcnJheWlmeSA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvdXRpbHMvYXJyYXlpZnkuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IChvYmplY3QsIGtleU5hbWUpID0+IE9iamVjdC5lbnRyaWVzKG9iamVjdCkubWFwKChba2V5LCB2YWx1ZV0pID0+IE9iamVjdC5hc3NpZ24oe1xuICAgICAgW2tleU5hbWVdOiBrZXlcbiAgICB9LCB2YWx1ZSkpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xpYiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvb3V0ZGVudC9saWIvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIub3V0ZGVudCA9IHZvaWQgMDtcbiAgICBmdW5jdGlvbiBub29wKCkge1xuICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlV2Vha01hcCgpIHtcbiAgICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFrZVNldE9yTWFwKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZha2VTZXRPck1hcCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFkZDogbm9vcCxcbiAgICAgICAgZGVsZXRlOiBub29wLFxuICAgICAgICBnZXQ6IG5vb3AsXG4gICAgICAgIHNldDogbm9vcCxcbiAgICAgICAgaGFzOiBmdW5jdGlvbihrKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB2YXIgaG9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgICB2YXIgaGFzID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7XG4gICAgICByZXR1cm4gaG9wLmNhbGwob2JqLCBwcm9wKTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNvdXJjZSkge1xuICAgICAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhcyhzb3VyY2UsIHByb3ApKSB7XG4gICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICB2YXIgcmVMZWFkaW5nTmV3bGluZSA9IC9eWyBcXHRdKig/OlxcclxcbnxcXHJ8XFxuKS87XG4gICAgdmFyIHJlVHJhaWxpbmdOZXdsaW5lID0gLyg/OlxcclxcbnxcXHJ8XFxuKVsgXFx0XSokLztcbiAgICB2YXIgcmVTdGFydHNXaXRoTmV3bGluZU9ySXNFbXB0eSA9IC9eKD86W1xcclxcbl18JCkvO1xuICAgIHZhciByZURldGVjdEluZGVudGF0aW9uID0gLyg/OlxcclxcbnxcXHJ8XFxuKShbIFxcdF0qKSg/OlteIFxcdFxcclxcbl18JCkvO1xuICAgIHZhciByZU9ubHlXaGl0ZXNwYWNlV2l0aEF0TGVhc3RPbmVOZXdsaW5lID0gL15bIFxcdF0qW1xcclxcbl1bIFxcdFxcclxcbl0qJC87XG4gICAgZnVuY3Rpb24gX291dGRlbnRBcnJheShzdHJpbmdzLCBmaXJzdEludGVycG9sYXRlZFZhbHVlU2V0c0luZGVudGF0aW9uTGV2ZWwsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBpbmRlbnRhdGlvbkxldmVsID0gMDtcbiAgICAgIHZhciBtYXRjaCA9IHN0cmluZ3NbMF0ubWF0Y2gocmVEZXRlY3RJbmRlbnRhdGlvbik7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgaW5kZW50YXRpb25MZXZlbCA9IG1hdGNoWzFdLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciByZVNvdXJjZSA9IFwiKFxcXFxyXFxcXG58XFxcXHJ8XFxcXG4pLnswLFwiICsgaW5kZW50YXRpb25MZXZlbCArIFwifVwiO1xuICAgICAgdmFyIHJlTWF0Y2hJbmRlbnQgPSBuZXcgUmVnRXhwKHJlU291cmNlLCBcImdcIik7XG4gICAgICBpZiAoZmlyc3RJbnRlcnBvbGF0ZWRWYWx1ZVNldHNJbmRlbnRhdGlvbkxldmVsKSB7XG4gICAgICAgIHN0cmluZ3MgPSBzdHJpbmdzLnNsaWNlKDEpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld2xpbmUgPSBvcHRpb25zLm5ld2xpbmUsIHRyaW1MZWFkaW5nTmV3bGluZSA9IG9wdGlvbnMudHJpbUxlYWRpbmdOZXdsaW5lLCB0cmltVHJhaWxpbmdOZXdsaW5lID0gb3B0aW9ucy50cmltVHJhaWxpbmdOZXdsaW5lO1xuICAgICAgdmFyIG5vcm1hbGl6ZU5ld2xpbmVzID0gdHlwZW9mIG5ld2xpbmUgPT09IFwic3RyaW5nXCI7XG4gICAgICB2YXIgbCA9IHN0cmluZ3MubGVuZ3RoO1xuICAgICAgdmFyIG91dGRlbnRlZFN0cmluZ3MgPSBzdHJpbmdzLm1hcChmdW5jdGlvbih2LCBpKSB7XG4gICAgICAgIHYgPSB2LnJlcGxhY2UocmVNYXRjaEluZGVudCwgXCIkMVwiKTtcbiAgICAgICAgaWYgKGkgPT09IDAgJiYgdHJpbUxlYWRpbmdOZXdsaW5lKSB7XG4gICAgICAgICAgdiA9IHYucmVwbGFjZShyZUxlYWRpbmdOZXdsaW5lLCBcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbCAtIDEgJiYgdHJpbVRyYWlsaW5nTmV3bGluZSkge1xuICAgICAgICAgIHYgPSB2LnJlcGxhY2UocmVUcmFpbGluZ05ld2xpbmUsIFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub3JtYWxpemVOZXdsaW5lcykge1xuICAgICAgICAgIHYgPSB2LnJlcGxhY2UoL1xcclxcbnxcXG58XFxyL2csIGZ1bmN0aW9uKF8pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdsaW5lO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gb3V0ZGVudGVkU3RyaW5ncztcbiAgICB9XG4gICAgZnVuY3Rpb24gY29uY2F0U3RyaW5nc0FuZFZhbHVlcyhzdHJpbmdzLCB2YWx1ZXMpIHtcbiAgICAgIHZhciByZXQgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdHJpbmdzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICByZXQgKz0gc3RyaW5nc1tpXTtcbiAgICAgICAgaWYgKGkgPCBsIC0gMSkge1xuICAgICAgICAgIHJldCArPSB2YWx1ZXNbaV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzVGVtcGxhdGVTdHJpbmdzQXJyYXkodikge1xuICAgICAgcmV0dXJuIGhhcyh2LCBcInJhd1wiKSAmJiBoYXModiwgXCJsZW5ndGhcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKG9wdGlvbnMpIHtcbiAgICAgIHZhciBhcnJheUF1dG9JbmRlbnRDYWNoZSA9IGNyZWF0ZVdlYWtNYXAoKTtcbiAgICAgIHZhciBhcnJheUZpcnN0SW50ZXJwU2V0c0luZGVudENhY2hlID0gY3JlYXRlV2Vha01hcCgpO1xuICAgICAgZnVuY3Rpb24gb3V0ZGVudChzdHJpbmdzT3JPcHRpb25zKSB7XG4gICAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICB2YWx1ZXNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVGVtcGxhdGVTdHJpbmdzQXJyYXkoc3RyaW5nc09yT3B0aW9ucykpIHtcbiAgICAgICAgICB2YXIgc3RyaW5ncyA9IHN0cmluZ3NPck9wdGlvbnM7XG4gICAgICAgICAgdmFyIGZpcnN0SW50ZXJwb2xhdGVkVmFsdWVTZXRzSW5kZW50YXRpb25MZXZlbCA9ICh2YWx1ZXNbMF0gPT09IG91dGRlbnQgfHwgdmFsdWVzWzBdID09PSBkZWZhdWx0T3V0ZGVudCkgJiYgcmVPbmx5V2hpdGVzcGFjZVdpdGhBdExlYXN0T25lTmV3bGluZS50ZXN0KHN0cmluZ3NbMF0pICYmIHJlU3RhcnRzV2l0aE5ld2xpbmVPcklzRW1wdHkudGVzdChzdHJpbmdzWzFdKTtcbiAgICAgICAgICB2YXIgY2FjaGUgPSBmaXJzdEludGVycG9sYXRlZFZhbHVlU2V0c0luZGVudGF0aW9uTGV2ZWwgPyBhcnJheUZpcnN0SW50ZXJwU2V0c0luZGVudENhY2hlIDogYXJyYXlBdXRvSW5kZW50Q2FjaGU7XG4gICAgICAgICAgdmFyIHJlbmRlcmVkQXJyYXkgPSBjYWNoZS5nZXQoc3RyaW5ncyk7XG4gICAgICAgICAgaWYgKCFyZW5kZXJlZEFycmF5KSB7XG4gICAgICAgICAgICByZW5kZXJlZEFycmF5ID0gX291dGRlbnRBcnJheShzdHJpbmdzLCBmaXJzdEludGVycG9sYXRlZFZhbHVlU2V0c0luZGVudGF0aW9uTGV2ZWwsIG9wdGlvbnMpO1xuICAgICAgICAgICAgY2FjaGUuc2V0KHN0cmluZ3MsIHJlbmRlcmVkQXJyYXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVkQXJyYXlbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByZW5kZXJlZCA9IGNvbmNhdFN0cmluZ3NBbmRWYWx1ZXMocmVuZGVyZWRBcnJheSwgZmlyc3RJbnRlcnBvbGF0ZWRWYWx1ZVNldHNJbmRlbnRhdGlvbkxldmVsID8gdmFsdWVzLnNsaWNlKDEpIDogdmFsdWVzKTtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKGV4dGVuZChleHRlbmQoe30sIG9wdGlvbnMpLCBzdHJpbmdzT3JPcHRpb25zIHx8IHt9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBmdWxsT3V0ZGVudCA9IGV4dGVuZChvdXRkZW50LCB7XG4gICAgICAgIHN0cmluZzogZnVuY3Rpb24oc3RyKSB7XG4gICAgICAgICAgcmV0dXJuIF9vdXRkZW50QXJyYXkoW3N0cl0sIGZhbHNlLCBvcHRpb25zKVswXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZnVsbE91dGRlbnQ7XG4gICAgfVxuICAgIHZhciBkZWZhdWx0T3V0ZGVudCA9IGNyZWF0ZUluc3RhbmNlKHtcbiAgICAgIHRyaW1MZWFkaW5nTmV3bGluZTogdHJ1ZSxcbiAgICAgIHRyaW1UcmFpbGluZ05ld2xpbmU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5vdXRkZW50ID0gZGVmYXVsdE91dGRlbnQ7XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IGRlZmF1bHRPdXRkZW50O1xuICAgIGlmICh0eXBlb2YgbW9kdWxlMiAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbW9kdWxlMi5leHBvcnRzID0gZGVmYXVsdE91dGRlbnQ7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZWZhdWx0T3V0ZGVudCwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgICB2YWx1ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdE91dGRlbnQuZGVmYXVsdCA9IGRlZmF1bHRPdXRkZW50O1xuICAgICAgICBkZWZhdWx0T3V0ZGVudC5vdXRkZW50ID0gZGVmYXVsdE91dGRlbnQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2NvcmVfb3B0aW9ucyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbWFpbi9jb3JlLW9wdGlvbnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBvdXRkZW50XG4gICAgfSA9IHJlcXVpcmVfbGliKCk7XG4gICAgdmFyIENBVEVHT1JZX0NPTkZJRyA9IFwiQ29uZmlnXCI7XG4gICAgdmFyIENBVEVHT1JZX0VESVRPUiA9IFwiRWRpdG9yXCI7XG4gICAgdmFyIENBVEVHT1JZX0ZPUk1BVCA9IFwiRm9ybWF0XCI7XG4gICAgdmFyIENBVEVHT1JZX09USEVSID0gXCJPdGhlclwiO1xuICAgIHZhciBDQVRFR09SWV9PVVRQVVQgPSBcIk91dHB1dFwiO1xuICAgIHZhciBDQVRFR09SWV9HTE9CQUwgPSBcIkdsb2JhbFwiO1xuICAgIHZhciBDQVRFR09SWV9TUEVDSUFMID0gXCJTcGVjaWFsXCI7XG4gICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICBjdXJzb3JPZmZzZXQ6IHtcbiAgICAgICAgc2luY2U6IFwiMS40LjBcIixcbiAgICAgICAgY2F0ZWdvcnk6IENBVEVHT1JZX1NQRUNJQUwsXG4gICAgICAgIHR5cGU6IFwiaW50XCIsXG4gICAgICAgIGRlZmF1bHQ6IC0xLFxuICAgICAgICByYW5nZToge1xuICAgICAgICAgIHN0YXJ0OiAtMSxcbiAgICAgICAgICBlbmQ6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICBzdGVwOiAxXG4gICAgICAgIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvdXRkZW50YFxuICAgICAgUHJpbnQgKHRvIHN0ZGVycikgd2hlcmUgYSBjdXJzb3IgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIHdvdWxkIG1vdmUgdG8gYWZ0ZXIgZm9ybWF0dGluZy5cbiAgICAgIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1yYW5nZS1zdGFydCBhbmQgLS1yYW5nZS1lbmQuXG4gICAgYCxcbiAgICAgICAgY2xpQ2F0ZWdvcnk6IENBVEVHT1JZX0VESVRPUlxuICAgICAgfSxcbiAgICAgIGVuZE9mTGluZToge1xuICAgICAgICBzaW5jZTogXCIxLjE1LjBcIixcbiAgICAgICAgY2F0ZWdvcnk6IENBVEVHT1JZX0dMT0JBTCxcbiAgICAgICAgdHlwZTogXCJjaG9pY2VcIixcbiAgICAgICAgZGVmYXVsdDogW3tcbiAgICAgICAgICBzaW5jZTogXCIxLjE1LjBcIixcbiAgICAgICAgICB2YWx1ZTogXCJhdXRvXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHNpbmNlOiBcIjIuMC4wXCIsXG4gICAgICAgICAgdmFsdWU6IFwibGZcIlxuICAgICAgICB9XSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiV2hpY2ggZW5kIG9mIGxpbmUgY2hhcmFjdGVycyB0byBhcHBseS5cIixcbiAgICAgICAgY2hvaWNlczogW3tcbiAgICAgICAgICB2YWx1ZTogXCJsZlwiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxpbmUgRmVlZCBvbmx5IChcXFxcbiksIGNvbW1vbiBvbiBMaW51eCBhbmQgbWFjT1MgYXMgd2VsbCBhcyBpbnNpZGUgZ2l0IHJlcG9zXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImNybGZcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDYXJyaWFnZSBSZXR1cm4gKyBMaW5lIEZlZWQgY2hhcmFjdGVycyAoXFxcXHJcXFxcbiksIGNvbW1vbiBvbiBXaW5kb3dzXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImNyXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiQ2FycmlhZ2UgUmV0dXJuIGNoYXJhY3RlciBvbmx5IChcXFxcciksIHVzZWQgdmVyeSByYXJlbHlcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsdWU6IFwiYXV0b1wiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBvdXRkZW50YFxuICAgICAgICAgIE1haW50YWluIGV4aXN0aW5nXG4gICAgICAgICAgKG1peGVkIHZhbHVlcyB3aXRoaW4gb25lIGZpbGUgYXJlIG5vcm1hbGlzZWQgYnkgbG9va2luZyBhdCB3aGF0J3MgdXNlZCBhZnRlciB0aGUgZmlyc3QgbGluZSlcbiAgICAgICAgYFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIGZpbGVwYXRoOiB7XG4gICAgICAgIHNpbmNlOiBcIjEuNC4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9TUEVDSUFMLFxuICAgICAgICB0eXBlOiBcInBhdGhcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiU3BlY2lmeSB0aGUgaW5wdXQgZmlsZXBhdGguIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGRvIHBhcnNlciBpbmZlcmVuY2UuXCIsXG4gICAgICAgIGNsaU5hbWU6IFwic3RkaW4tZmlsZXBhdGhcIixcbiAgICAgICAgY2xpQ2F0ZWdvcnk6IENBVEVHT1JZX09USEVSLFxuICAgICAgICBjbGlEZXNjcmlwdGlvbjogXCJQYXRoIHRvIHRoZSBmaWxlIHRvIHByZXRlbmQgdGhhdCBzdGRpbiBjb21lcyBmcm9tLlwiXG4gICAgICB9LFxuICAgICAgaW5zZXJ0UHJhZ21hOiB7XG4gICAgICAgIHNpbmNlOiBcIjEuOC4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9TUEVDSUFMLFxuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkluc2VydCBAZm9ybWF0IHByYWdtYSBpbnRvIGZpbGUncyBmaXJzdCBkb2NibG9jayBjb21tZW50LlwiLFxuICAgICAgICBjbGlDYXRlZ29yeTogQ0FURUdPUllfT1RIRVJcbiAgICAgIH0sXG4gICAgICBwYXJzZXI6IHtcbiAgICAgICAgc2luY2U6IFwiMC4wLjEwXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9HTE9CQUwsXG4gICAgICAgIHR5cGU6IFwiY2hvaWNlXCIsXG4gICAgICAgIGRlZmF1bHQ6IFt7XG4gICAgICAgICAgc2luY2U6IFwiMC4wLjEwXCIsXG4gICAgICAgICAgdmFsdWU6IFwiYmFieWxvblwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzaW5jZTogXCIxLjEzLjBcIixcbiAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgIH1dLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGljaCBwYXJzZXIgdG8gdXNlLlwiLFxuICAgICAgICBleGNlcHRpb246ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiLFxuICAgICAgICBjaG9pY2VzOiBbe1xuICAgICAgICAgIHZhbHVlOiBcImZsb3dcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGbG93XCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImJhYmVsXCIsXG4gICAgICAgICAgc2luY2U6IFwiMS4xNi4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiSmF2YVNjcmlwdFwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJiYWJlbC1mbG93XCIsXG4gICAgICAgICAgc2luY2U6IFwiMS4xNi4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiRmxvd1wiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJiYWJlbC10c1wiLFxuICAgICAgICAgIHNpbmNlOiBcIjIuMC4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiVHlwZVNjcmlwdFwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgICAgc2luY2U6IFwiMS40LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUeXBlU2NyaXB0XCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImFjb3JuXCIsXG4gICAgICAgICAgc2luY2U6IFwiMi42LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJKYXZhU2NyaXB0XCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImVzcHJlZVwiLFxuICAgICAgICAgIHNpbmNlOiBcIjIuMi4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiSmF2YVNjcmlwdFwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJtZXJpeWFoXCIsXG4gICAgICAgICAgc2luY2U6IFwiMi4yLjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJKYXZhU2NyaXB0XCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImNzc1wiLFxuICAgICAgICAgIHNpbmNlOiBcIjEuNy4xXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiQ1NTXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImxlc3NcIixcbiAgICAgICAgICBzaW5jZTogXCIxLjcuMVwiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkxlc3NcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsdWU6IFwic2Nzc1wiLFxuICAgICAgICAgIHNpbmNlOiBcIjEuNy4xXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiU0NTU1wiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJqc29uXCIsXG4gICAgICAgICAgc2luY2U6IFwiMS41LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJKU09OXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImpzb241XCIsXG4gICAgICAgICAgc2luY2U6IFwiMS4xMy4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiSlNPTjVcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsdWU6IFwianNvbi1zdHJpbmdpZnlcIixcbiAgICAgICAgICBzaW5jZTogXCIxLjEzLjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJKU09OLnN0cmluZ2lmeVwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJncmFwaHFsXCIsXG4gICAgICAgICAgc2luY2U6IFwiMS41LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJHcmFwaFFMXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcIm1hcmtkb3duXCIsXG4gICAgICAgICAgc2luY2U6IFwiMS44LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJNYXJrZG93blwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJtZHhcIixcbiAgICAgICAgICBzaW5jZTogXCIxLjE1LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJNRFhcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsdWU6IFwidnVlXCIsXG4gICAgICAgICAgc2luY2U6IFwiMS4xMC4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiVnVlXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcInlhbWxcIixcbiAgICAgICAgICBzaW5jZTogXCIxLjE0LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJZQU1MXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHZhbHVlOiBcImdsaW1tZXJcIixcbiAgICAgICAgICBzaW5jZTogXCIyLjMuMFwiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkVtYmVyIC8gSGFuZGxlYmFyc1wiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJodG1sXCIsXG4gICAgICAgICAgc2luY2U6IFwiMS4xNS4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiSFRNTFwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJhbmd1bGFyXCIsXG4gICAgICAgICAgc2luY2U6IFwiMS4xNS4wXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiQW5ndWxhclwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJsd2NcIixcbiAgICAgICAgICBzaW5jZTogXCIxLjE3LjBcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMaWdodG5pbmcgV2ViIENvbXBvbmVudHNcIlxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgc2luY2U6IFwiMS4xMC4wXCIsXG4gICAgICAgIHR5cGU6IFwicGF0aFwiLFxuICAgICAgICBhcnJheTogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdDogW3tcbiAgICAgICAgICB2YWx1ZTogW11cbiAgICAgICAgfV0sXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9HTE9CQUwsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkFkZCBhIHBsdWdpbi4gTXVsdGlwbGUgcGx1Z2lucyBjYW4gYmUgcGFzc2VkIGFzIHNlcGFyYXRlIGAtLXBsdWdpbmBzLlwiLFxuICAgICAgICBleGNlcHRpb246ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIixcbiAgICAgICAgY2xpTmFtZTogXCJwbHVnaW5cIixcbiAgICAgICAgY2xpQ2F0ZWdvcnk6IENBVEVHT1JZX0NPTkZJR1xuICAgICAgfSxcbiAgICAgIHBsdWdpblNlYXJjaERpcnM6IHtcbiAgICAgICAgc2luY2U6IFwiMS4xMy4wXCIsXG4gICAgICAgIHR5cGU6IFwicGF0aFwiLFxuICAgICAgICBhcnJheTogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdDogW3tcbiAgICAgICAgICB2YWx1ZTogW11cbiAgICAgICAgfV0sXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9HTE9CQUwsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvdXRkZW50YFxuICAgICAgQ3VzdG9tIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHByZXR0aWVyIHBsdWdpbnMgaW4gbm9kZV9tb2R1bGVzIHN1YmRpcmVjdG9yeS5cbiAgICAgIE92ZXJyaWRlcyBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gcGx1Z2lucyBhcmUgc2VhcmNoZWQgcmVsYXRpdmVseSB0byB0aGUgbG9jYXRpb24gb2YgUHJldHRpZXIuXG4gICAgICBNdWx0aXBsZSB2YWx1ZXMgYXJlIGFjY2VwdGVkLlxuICAgIGAsXG4gICAgICAgIGV4Y2VwdGlvbjogKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiLFxuICAgICAgICBjbGlOYW1lOiBcInBsdWdpbi1zZWFyY2gtZGlyXCIsXG4gICAgICAgIGNsaUNhdGVnb3J5OiBDQVRFR09SWV9DT05GSUdcbiAgICAgIH0sXG4gICAgICBwcmludFdpZHRoOiB7XG4gICAgICAgIHNpbmNlOiBcIjAuMC4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9HTE9CQUwsXG4gICAgICAgIHR5cGU6IFwiaW50XCIsXG4gICAgICAgIGRlZmF1bHQ6IDgwLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbGluZSBsZW5ndGggd2hlcmUgUHJldHRpZXIgd2lsbCB0cnkgd3JhcC5cIixcbiAgICAgICAgcmFuZ2U6IHtcbiAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICBlbmQ6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICBzdGVwOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByYW5nZUVuZDoge1xuICAgICAgICBzaW5jZTogXCIxLjQuMFwiLFxuICAgICAgICBjYXRlZ29yeTogQ0FURUdPUllfU1BFQ0lBTCxcbiAgICAgICAgdHlwZTogXCJpbnRcIixcbiAgICAgICAgZGVmYXVsdDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgICAgICByYW5nZToge1xuICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgIGVuZDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgICAgICAgIHN0ZXA6IDFcbiAgICAgICAgfSxcbiAgICAgICAgZGVzY3JpcHRpb246IG91dGRlbnRgXG4gICAgICBGb3JtYXQgY29kZSBlbmRpbmcgYXQgYSBnaXZlbiBjaGFyYWN0ZXIgb2Zmc2V0IChleGNsdXNpdmUpLlxuICAgICAgVGhlIHJhbmdlIHdpbGwgZXh0ZW5kIGZvcndhcmRzIHRvIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGVkIHN0YXRlbWVudC5cbiAgICAgIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1jdXJzb3Itb2Zmc2V0LlxuICAgIGAsXG4gICAgICAgIGNsaUNhdGVnb3J5OiBDQVRFR09SWV9FRElUT1JcbiAgICAgIH0sXG4gICAgICByYW5nZVN0YXJ0OiB7XG4gICAgICAgIHNpbmNlOiBcIjEuNC4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9TUEVDSUFMLFxuICAgICAgICB0eXBlOiBcImludFwiLFxuICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICByYW5nZToge1xuICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgIGVuZDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgICAgICAgIHN0ZXA6IDFcbiAgICAgICAgfSxcbiAgICAgICAgZGVzY3JpcHRpb246IG91dGRlbnRgXG4gICAgICBGb3JtYXQgY29kZSBzdGFydGluZyBhdCBhIGdpdmVuIGNoYXJhY3RlciBvZmZzZXQuXG4gICAgICBUaGUgcmFuZ2Ugd2lsbCBleHRlbmQgYmFja3dhcmRzIHRvIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QgbGluZSBjb250YWluaW5nIHRoZSBzZWxlY3RlZCBzdGF0ZW1lbnQuXG4gICAgICBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tY3Vyc29yLW9mZnNldC5cbiAgICBgLFxuICAgICAgICBjbGlDYXRlZ29yeTogQ0FURUdPUllfRURJVE9SXG4gICAgICB9LFxuICAgICAgcmVxdWlyZVByYWdtYToge1xuICAgICAgICBzaW5jZTogXCIxLjcuMFwiLFxuICAgICAgICBjYXRlZ29yeTogQ0FURUdPUllfU1BFQ0lBTCxcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogb3V0ZGVudGBcbiAgICAgIFJlcXVpcmUgZWl0aGVyICdAcHJldHRpZXInIG9yICdAZm9ybWF0JyB0byBiZSBwcmVzZW50IGluIHRoZSBmaWxlJ3MgZmlyc3QgZG9jYmxvY2sgY29tbWVudFxuICAgICAgaW4gb3JkZXIgZm9yIGl0IHRvIGJlIGZvcm1hdHRlZC5cbiAgICBgLFxuICAgICAgICBjbGlDYXRlZ29yeTogQ0FURUdPUllfT1RIRVJcbiAgICAgIH0sXG4gICAgICB0YWJXaWR0aDoge1xuICAgICAgICB0eXBlOiBcImludFwiLFxuICAgICAgICBjYXRlZ29yeTogQ0FURUdPUllfR0xPQkFMLFxuICAgICAgICBkZWZhdWx0OiAyLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJOdW1iZXIgb2Ygc3BhY2VzIHBlciBpbmRlbnRhdGlvbiBsZXZlbC5cIixcbiAgICAgICAgcmFuZ2U6IHtcbiAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICBlbmQ6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICBzdGVwOiAxXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1c2VUYWJzOiB7XG4gICAgICAgIHNpbmNlOiBcIjEuMC4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9HTE9CQUwsXG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW5kZW50IHdpdGggdGFicyBpbnN0ZWFkIG9mIHNwYWNlcy5cIlxuICAgICAgfSxcbiAgICAgIGVtYmVkZGVkTGFuZ3VhZ2VGb3JtYXR0aW5nOiB7XG4gICAgICAgIHNpbmNlOiBcIjIuMS4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9HTE9CQUwsXG4gICAgICAgIHR5cGU6IFwiY2hvaWNlXCIsXG4gICAgICAgIGRlZmF1bHQ6IFt7XG4gICAgICAgICAgc2luY2U6IFwiMi4xLjBcIixcbiAgICAgICAgICB2YWx1ZTogXCJhdXRvXCJcbiAgICAgICAgfV0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbnRyb2wgaG93IFByZXR0aWVyIGZvcm1hdHMgcXVvdGVkIGNvZGUgZW1iZWRkZWQgaW4gdGhlIGZpbGUuXCIsXG4gICAgICAgIGNob2ljZXM6IFt7XG4gICAgICAgICAgdmFsdWU6IFwiYXV0b1wiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZvcm1hdCBlbWJlZGRlZCBjb2RlIGlmIFByZXR0aWVyIGNhbiBhdXRvbWF0aWNhbGx5IGlkZW50aWZ5IGl0LlwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJvZmZcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJOZXZlciBhdXRvbWF0aWNhbGx5IGZvcm1hdCBlbWJlZGRlZCBjb2RlLlwiXG4gICAgICAgIH1dXG4gICAgICB9XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBDQVRFR09SWV9DT05GSUcsXG4gICAgICBDQVRFR09SWV9FRElUT1IsXG4gICAgICBDQVRFR09SWV9GT1JNQVQsXG4gICAgICBDQVRFR09SWV9PVEhFUixcbiAgICAgIENBVEVHT1JZX09VVFBVVCxcbiAgICAgIENBVEVHT1JZX0dMT0JBTCxcbiAgICAgIENBVEVHT1JZX1NQRUNJQUwsXG4gICAgICBvcHRpb25zXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zdXBwb3J0ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9tYWluL3N1cHBvcnQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBzZW12ZXIgPSB7XG4gICAgICBjb21wYXJlOiByZXF1aXJlX2NvbXBhcmUoKSxcbiAgICAgIGx0OiByZXF1aXJlX2x0KCksXG4gICAgICBndGU6IHJlcXVpcmVfZ3RlKClcbiAgICB9O1xuICAgIHZhciBhcnJheWlmeSA9IHJlcXVpcmVfYXJyYXlpZnkoKTtcbiAgICB2YXIgY3VycmVudFZlcnNpb24gPSByZXF1aXJlKFwiLi9wYWNrYWdlLmpzb25cIikudmVyc2lvbjtcbiAgICB2YXIgY29yZU9wdGlvbnMgPSByZXF1aXJlX2NvcmVfb3B0aW9ucygpLm9wdGlvbnM7XG4gICAgZnVuY3Rpb24gZ2V0U3VwcG9ydEluZm8yKHtcbiAgICAgIHBsdWdpbnM6IHBsdWdpbnMyID0gW10sXG4gICAgICBzaG93VW5yZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgc2hvd0RlcHJlY2F0ZWQgPSBmYWxzZSxcbiAgICAgIHNob3dJbnRlcm5hbCA9IGZhbHNlXG4gICAgfSA9IHt9KSB7XG4gICAgICBjb25zdCB2ZXJzaW9uMiA9IGN1cnJlbnRWZXJzaW9uLnNwbGl0KFwiLVwiLCAxKVswXTtcbiAgICAgIGNvbnN0IGxhbmd1YWdlcyA9IHBsdWdpbnMyLmZsYXRNYXAoKHBsdWdpbikgPT4gcGx1Z2luLmxhbmd1YWdlcyB8fCBbXSkuZmlsdGVyKGZpbHRlclNpbmNlKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBhcnJheWlmeShPYmplY3QuYXNzaWduKHt9LCAuLi5wbHVnaW5zMi5tYXAoKHtcbiAgICAgICAgb3B0aW9uczogb3B0aW9uczJcbiAgICAgIH0pID0+IG9wdGlvbnMyKSwgY29yZU9wdGlvbnMpLCBcIm5hbWVcIikuZmlsdGVyKChvcHRpb24pID0+IGZpbHRlclNpbmNlKG9wdGlvbikgJiYgZmlsdGVyRGVwcmVjYXRlZChvcHRpb24pKS5zb3J0KChhLCBiKSA9PiBhLm5hbWUgPT09IGIubmFtZSA/IDAgOiBhLm5hbWUgPCBiLm5hbWUgPyAtMSA6IDEpLm1hcChtYXBJbnRlcm5hbCkubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgb3B0aW9uID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9uKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9uLmRlZmF1bHQpKSB7XG4gICAgICAgICAgb3B0aW9uLmRlZmF1bHQgPSBvcHRpb24uZGVmYXVsdC5sZW5ndGggPT09IDEgPyBvcHRpb24uZGVmYXVsdFswXS52YWx1ZSA6IG9wdGlvbi5kZWZhdWx0LmZpbHRlcihmaWx0ZXJTaW5jZSkuc29ydCgoaW5mbzEsIGluZm8yKSA9PiBzZW12ZXIuY29tcGFyZShpbmZvMi5zaW5jZSwgaW5mbzEuc2luY2UpKVswXS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb24uY2hvaWNlcykpIHtcbiAgICAgICAgICBvcHRpb24uY2hvaWNlcyA9IG9wdGlvbi5jaG9pY2VzLmZpbHRlcigob3B0aW9uMikgPT4gZmlsdGVyU2luY2Uob3B0aW9uMikgJiYgZmlsdGVyRGVwcmVjYXRlZChvcHRpb24yKSk7XG4gICAgICAgICAgaWYgKG9wdGlvbi5uYW1lID09PSBcInBhcnNlclwiKSB7XG4gICAgICAgICAgICBjb2xsZWN0UGFyc2Vyc0Zyb21MYW5ndWFnZXMob3B0aW9uLCBsYW5ndWFnZXMsIHBsdWdpbnMyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGx1Z2luRGVmYXVsdHMgPSBPYmplY3QuZnJvbUVudHJpZXMocGx1Z2luczIuZmlsdGVyKChwbHVnaW4pID0+IHBsdWdpbi5kZWZhdWx0T3B0aW9ucyAmJiBwbHVnaW4uZGVmYXVsdE9wdGlvbnNbb3B0aW9uLm5hbWVdICE9PSB2b2lkIDApLm1hcCgocGx1Z2luKSA9PiBbcGx1Z2luLm5hbWUsIHBsdWdpbi5kZWZhdWx0T3B0aW9uc1tvcHRpb24ubmFtZV1dKSk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbiksIHt9LCB7XG4gICAgICAgICAgcGx1Z2luRGVmYXVsdHNcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhbmd1YWdlcyxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgfTtcbiAgICAgIGZ1bmN0aW9uIGZpbHRlclNpbmNlKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gc2hvd1VucmVsZWFzZWQgfHwgIShcInNpbmNlXCIgaW4gb2JqZWN0KSB8fCBvYmplY3Quc2luY2UgJiYgc2VtdmVyLmd0ZSh2ZXJzaW9uMiwgb2JqZWN0LnNpbmNlKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGZpbHRlckRlcHJlY2F0ZWQob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBzaG93RGVwcmVjYXRlZCB8fCAhKFwiZGVwcmVjYXRlZFwiIGluIG9iamVjdCkgfHwgb2JqZWN0LmRlcHJlY2F0ZWQgJiYgc2VtdmVyLmx0KHZlcnNpb24yLCBvYmplY3QuZGVwcmVjYXRlZCk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBtYXBJbnRlcm5hbChvYmplY3QpIHtcbiAgICAgICAgaWYgKHNob3dJbnRlcm5hbCkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNsaU5hbWUsXG4gICAgICAgICAgY2xpQ2F0ZWdvcnksXG4gICAgICAgICAgY2xpRGVzY3JpcHRpb25cbiAgICAgICAgfSA9IG9iamVjdCwgbmV3T2JqZWN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iamVjdCwgX2V4Y2x1ZGVkKTtcbiAgICAgICAgcmV0dXJuIG5ld09iamVjdDtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gY29sbGVjdFBhcnNlcnNGcm9tTGFuZ3VhZ2VzKG9wdGlvbiwgbGFuZ3VhZ2VzLCBwbHVnaW5zMikge1xuICAgICAgY29uc3QgZXhpc3RpbmdWYWx1ZXMgPSBuZXcgU2V0KG9wdGlvbi5jaG9pY2VzLm1hcCgoY2hvaWNlKSA9PiBjaG9pY2UudmFsdWUpKTtcbiAgICAgIGZvciAoY29uc3QgbGFuZ3VhZ2Ugb2YgbGFuZ3VhZ2VzKSB7XG4gICAgICAgIGlmIChsYW5ndWFnZS5wYXJzZXJzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBsYW5ndWFnZS5wYXJzZXJzKSB7XG4gICAgICAgICAgICBpZiAoIWV4aXN0aW5nVmFsdWVzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgZXhpc3RpbmdWYWx1ZXMuYWRkKHZhbHVlKTtcbiAgICAgICAgICAgICAgY29uc3QgcGx1Z2luID0gcGx1Z2luczIuZmluZCgocGx1Z2luMikgPT4gcGx1Z2luMi5wYXJzZXJzICYmIHBsdWdpbjIucGFyc2Vyc1t2YWx1ZV0pO1xuICAgICAgICAgICAgICBsZXQgZGVzY3JpcHRpb24gPSBsYW5ndWFnZS5uYW1lO1xuICAgICAgICAgICAgICBpZiAocGx1Z2luICYmIHBsdWdpbi5uYW1lKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gYCAocGx1Z2luOiAke3BsdWdpbi5uYW1lfSlgO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9wdGlvbi5jaG9pY2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBnZXRTdXBwb3J0SW5mbzogZ2V0U3VwcG9ydEluZm8yXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pc19ub25fZW1wdHlfYXJyYXkgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL3V0aWxzL2lzLW5vbi1lbXB0eS1hcnJheS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgZnVuY3Rpb24gaXNOb25FbXB0eUFycmF5KG9iamVjdCkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob2JqZWN0KSAmJiBvYmplY3QubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gaXNOb25FbXB0eUFycmF5O1xuICB9XG59KTtcbmZ1bmN0aW9uIGFuc2lSZWdleCh7XG4gIG9ubHlGaXJzdCA9IGZhbHNlXG59ID0ge30pIHtcbiAgY29uc3QgcGF0dGVybiA9IFtcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNylcIiwgXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiXS5qb2luKFwifFwiKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgb25seUZpcnN0ID8gdm9pZCAwIDogXCJnXCIpO1xufVxudmFyIGluaXRfYW5zaV9yZWdleCA9IF9fZXNtKHtcbiAgXCJub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9ub2RlX21vZHVsZXMvYW5zaS1yZWdleC9pbmRleC5qc1wiKCkge1xuICB9XG59KTtcbmZ1bmN0aW9uIHN0cmlwQW5zaShzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIFxcYHN0cmluZ1xcYCwgZ290IFxcYCR7dHlwZW9mIHN0cmluZ31cXGBgKTtcbiAgfVxuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoYW5zaVJlZ2V4KCksIFwiXCIpO1xufVxudmFyIGluaXRfc3RyaXBfYW5zaSA9IF9fZXNtKHtcbiAgXCJub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9pbmRleC5qc1wiKCkge1xuICAgIGluaXRfYW5zaV9yZWdleCgpO1xuICB9XG59KTtcbmZ1bmN0aW9uIGlzRnVsbHdpZHRoQ29kZVBvaW50KGNvZGVQb2ludCkge1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIoY29kZVBvaW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gY29kZVBvaW50ID49IDQzNTIgJiYgKGNvZGVQb2ludCA8PSA0NDQ3IHx8IGNvZGVQb2ludCA9PT0gOTAwMSB8fCBjb2RlUG9pbnQgPT09IDkwMDIgfHwgMTE5MDQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAxMjg3MSAmJiBjb2RlUG9pbnQgIT09IDEyMzUxIHx8IDEyODgwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMTk5MDMgfHwgMTk5NjggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSA0MjE4MiB8fCA0MzM2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDQzMzg4IHx8IDQ0MDMyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gNTUyMDMgfHwgNjM3NDQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSA2NDI1NSB8fCA2NTA0MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDY1MDQ5IHx8IDY1MDcyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gNjUxMzEgfHwgNjUyODEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSA2NTM3NiB8fCA2NTUwNCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDY1NTEwIHx8IDExMDU5MiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDExMDU5MyB8fCAxMjc0ODggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAxMjc1NjkgfHwgMTMxMDcyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMjYyMTQxKTtcbn1cbnZhciBpbml0X2lzX2Z1bGx3aWR0aF9jb2RlX3BvaW50ID0gX19lc20oe1xuICBcIm5vZGVfbW9kdWxlcy9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC9pbmRleC5qc1wiKCkge1xuICB9XG59KTtcbnZhciByZXF1aXJlX2Vtb2ppX3JlZ2V4ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9lbW9qaS1yZWdleC9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZztcbiAgICB9O1xuICB9XG59KTtcbnZhciBzdHJpbmdfd2lkdGhfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoc3RyaW5nX3dpZHRoX2V4cG9ydHMsIHtcbiAgZGVmYXVsdDogKCkgPT4gc3RyaW5nV2lkdGhcbn0pO1xuZnVuY3Rpb24gc3RyaW5nV2lkdGgoc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSBcInN0cmluZ1wiIHx8IHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBzdHJpbmcgPSBzdHJpcEFuc2koc3RyaW5nKTtcbiAgaWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgoMCwgaW1wb3J0X2Vtb2ppX3JlZ2V4LmRlZmF1bHQpKCksIFwiICBcIik7XG4gIGxldCB3aWR0aCA9IDA7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzdHJpbmcubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgY29kZVBvaW50ID0gc3RyaW5nLmNvZGVQb2ludEF0KGluZGV4KTtcbiAgICBpZiAoY29kZVBvaW50IDw9IDMxIHx8IGNvZGVQb2ludCA+PSAxMjcgJiYgY29kZVBvaW50IDw9IDE1OSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChjb2RlUG9pbnQgPj0gNzY4ICYmIGNvZGVQb2ludCA8PSA4NzkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoY29kZVBvaW50ID4gNjU1MzUpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIHdpZHRoICs9IGlzRnVsbHdpZHRoQ29kZVBvaW50KGNvZGVQb2ludCkgPyAyIDogMTtcbiAgfVxuICByZXR1cm4gd2lkdGg7XG59XG52YXIgaW1wb3J0X2Vtb2ppX3JlZ2V4O1xudmFyIGluaXRfc3RyaW5nX3dpZHRoID0gX19lc20oe1xuICBcIm5vZGVfbW9kdWxlcy9zdHJpbmctd2lkdGgvaW5kZXguanNcIigpIHtcbiAgICBpbml0X3N0cmlwX2Fuc2koKTtcbiAgICBpbml0X2lzX2Z1bGx3aWR0aF9jb2RlX3BvaW50KCk7XG4gICAgaW1wb3J0X2Vtb2ppX3JlZ2V4ID0gX190b0VTTShyZXF1aXJlX2Vtb2ppX3JlZ2V4KCkpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2dldF9zdHJpbmdfd2lkdGggPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL3V0aWxzL2dldC1zdHJpbmctd2lkdGguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBzdHJpbmdXaWR0aDIgPSAoaW5pdF9zdHJpbmdfd2lkdGgoKSwgX190b0NvbW1vbkpTKHN0cmluZ193aWR0aF9leHBvcnRzKSkuZGVmYXVsdDtcbiAgICB2YXIgbm90QXNjaWlSZWdleCA9IC9bXlxceDIwLVxceDdGXS87XG4gICAgZnVuY3Rpb24gZ2V0U3RyaW5nV2lkdGgodGV4dCkge1xuICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKCFub3RBc2NpaVJlZ2V4LnRlc3QodGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIHRleHQubGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZ1dpZHRoMih0ZXh0KTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZ2V0U3RyaW5nV2lkdGg7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc2tpcCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvdXRpbHMvdGV4dC9za2lwLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBza2lwKGNoYXJzKSB7XG4gICAgICByZXR1cm4gKHRleHQsIGluZGV4LCBvcHRzKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhY2t3YXJkcyA9IG9wdHMgJiYgb3B0cy5iYWNrd2FyZHM7XG4gICAgICAgIGlmIChpbmRleCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGxlbmd0aFxuICAgICAgICB9ID0gdGV4dDtcbiAgICAgICAgbGV0IGN1cnNvciA9IGluZGV4O1xuICAgICAgICB3aGlsZSAoY3Vyc29yID49IDAgJiYgY3Vyc29yIDwgbGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgYyA9IHRleHQuY2hhckF0KGN1cnNvcik7XG4gICAgICAgICAgaWYgKGNoYXJzIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgICAgICBpZiAoIWNoYXJzLnRlc3QoYykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGN1cnNvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFjaGFycy5pbmNsdWRlcyhjKSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnNvcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYmFja3dhcmRzID8gY3Vyc29yLS0gOiBjdXJzb3IrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3Vyc29yID09PSAtMSB8fCBjdXJzb3IgPT09IGxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBjdXJzb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHNraXBXaGl0ZXNwYWNlID0gc2tpcCgvXFxzLyk7XG4gICAgdmFyIHNraXBTcGFjZXMgPSBza2lwKFwiIFx0XCIpO1xuICAgIHZhciBza2lwVG9MaW5lRW5kID0gc2tpcChcIiw7IFx0XCIpO1xuICAgIHZhciBza2lwRXZlcnl0aGluZ0J1dE5ld0xpbmUgPSBza2lwKC9bXlxcblxccl0vKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBza2lwV2hpdGVzcGFjZSxcbiAgICAgIHNraXBTcGFjZXMsXG4gICAgICBza2lwVG9MaW5lRW5kLFxuICAgICAgc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9za2lwX2lubGluZV9jb21tZW50ID0gX19jb21tb25KUzIoe1xuICBcInNyYy91dGlscy90ZXh0L3NraXAtaW5saW5lLWNvbW1lbnQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIHNraXBJbmxpbmVDb21tZW50KHRleHQsIGluZGV4KSB7XG4gICAgICBpZiAoaW5kZXggPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZXh0LmNoYXJBdChpbmRleCkgPT09IFwiL1wiICYmIHRleHQuY2hhckF0KGluZGV4ICsgMSkgPT09IFwiKlwiKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCArIDI7IGkgPCB0ZXh0Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgaWYgKHRleHQuY2hhckF0KGkpID09PSBcIipcIiAmJiB0ZXh0LmNoYXJBdChpICsgMSkgPT09IFwiL1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gaSArIDI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHNraXBJbmxpbmVDb21tZW50O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3NraXBfdHJhaWxpbmdfY29tbWVudCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvdXRpbHMvdGV4dC9za2lwLXRyYWlsaW5nLWNvbW1lbnQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBza2lwRXZlcnl0aGluZ0J1dE5ld0xpbmVcbiAgICB9ID0gcmVxdWlyZV9za2lwKCk7XG4gICAgZnVuY3Rpb24gc2tpcFRyYWlsaW5nQ29tbWVudCh0ZXh0LCBpbmRleCkge1xuICAgICAgaWYgKGluZGV4ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodGV4dC5jaGFyQXQoaW5kZXgpID09PSBcIi9cIiAmJiB0ZXh0LmNoYXJBdChpbmRleCArIDEpID09PSBcIi9cIikge1xuICAgICAgICByZXR1cm4gc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lKHRleHQsIGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gc2tpcFRyYWlsaW5nQ29tbWVudDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9za2lwX25ld2xpbmUgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL3V0aWxzL3RleHQvc2tpcC1uZXdsaW5lLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBza2lwTmV3bGluZSh0ZXh0LCBpbmRleCwgb3B0cykge1xuICAgICAgY29uc3QgYmFja3dhcmRzID0gb3B0cyAmJiBvcHRzLmJhY2t3YXJkcztcbiAgICAgIGlmIChpbmRleCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgYXRJbmRleCA9IHRleHQuY2hhckF0KGluZGV4KTtcbiAgICAgIGlmIChiYWNrd2FyZHMpIHtcbiAgICAgICAgaWYgKHRleHQuY2hhckF0KGluZGV4IC0gMSkgPT09IFwiXFxyXCIgJiYgYXRJbmRleCA9PT0gXCJcXG5cIikge1xuICAgICAgICAgIHJldHVybiBpbmRleCAtIDI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF0SW5kZXggPT09IFwiXFxuXCIgfHwgYXRJbmRleCA9PT0gXCJcXHJcIiB8fCBhdEluZGV4ID09PSBcIlxcdTIwMjhcIiB8fCBhdEluZGV4ID09PSBcIlxcdTIwMjlcIikge1xuICAgICAgICAgIHJldHVybiBpbmRleCAtIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhdEluZGV4ID09PSBcIlxcclwiICYmIHRleHQuY2hhckF0KGluZGV4ICsgMSkgPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXggKyAyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdEluZGV4ID09PSBcIlxcblwiIHx8IGF0SW5kZXggPT09IFwiXFxyXCIgfHwgYXRJbmRleCA9PT0gXCJcXHUyMDI4XCIgfHwgYXRJbmRleCA9PT0gXCJcXHUyMDI5XCIpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHNraXBOZXdsaW5lO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2dldF9uZXh0X25vbl9zcGFjZV9ub25fY29tbWVudF9jaGFyYWN0ZXJfaW5kZXhfd2l0aF9zdGFydF9pbmRleCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvdXRpbHMvdGV4dC9nZXQtbmV4dC1ub24tc3BhY2Utbm9uLWNvbW1lbnQtY2hhcmFjdGVyLWluZGV4LXdpdGgtc3RhcnQtaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBza2lwSW5saW5lQ29tbWVudCA9IHJlcXVpcmVfc2tpcF9pbmxpbmVfY29tbWVudCgpO1xuICAgIHZhciBza2lwTmV3bGluZSA9IHJlcXVpcmVfc2tpcF9uZXdsaW5lKCk7XG4gICAgdmFyIHNraXBUcmFpbGluZ0NvbW1lbnQgPSByZXF1aXJlX3NraXBfdHJhaWxpbmdfY29tbWVudCgpO1xuICAgIHZhciB7XG4gICAgICBza2lwU3BhY2VzXG4gICAgfSA9IHJlcXVpcmVfc2tpcCgpO1xuICAgIGZ1bmN0aW9uIGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXJJbmRleFdpdGhTdGFydEluZGV4KHRleHQsIGlkeCkge1xuICAgICAgbGV0IG9sZElkeCA9IG51bGw7XG4gICAgICBsZXQgbmV4dElkeCA9IGlkeDtcbiAgICAgIHdoaWxlIChuZXh0SWR4ICE9PSBvbGRJZHgpIHtcbiAgICAgICAgb2xkSWR4ID0gbmV4dElkeDtcbiAgICAgICAgbmV4dElkeCA9IHNraXBTcGFjZXModGV4dCwgbmV4dElkeCk7XG4gICAgICAgIG5leHRJZHggPSBza2lwSW5saW5lQ29tbWVudCh0ZXh0LCBuZXh0SWR4KTtcbiAgICAgICAgbmV4dElkeCA9IHNraXBUcmFpbGluZ0NvbW1lbnQodGV4dCwgbmV4dElkeCk7XG4gICAgICAgIG5leHRJZHggPSBza2lwTmV3bGluZSh0ZXh0LCBuZXh0SWR4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0SWR4O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXhXaXRoU3RhcnRJbmRleDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV91dGlsID0gX19jb21tb25KUzIoe1xuICBcInNyYy9jb21tb24vdXRpbC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGRlZmF1bHQ6IGVzY2FwZVN0cmluZ1JlZ2V4cDJcbiAgICB9ID0gKGluaXRfZXNjYXBlX3N0cmluZ19yZWdleHAoKSwgX190b0NvbW1vbkpTKGVzY2FwZV9zdHJpbmdfcmVnZXhwX2V4cG9ydHMpKTtcbiAgICB2YXIgZ2V0TGFzdCA9IHJlcXVpcmVfZ2V0X2xhc3QoKTtcbiAgICB2YXIge1xuICAgICAgZ2V0U3VwcG9ydEluZm86IGdldFN1cHBvcnRJbmZvMlxuICAgIH0gPSByZXF1aXJlX3N1cHBvcnQoKTtcbiAgICB2YXIgaXNOb25FbXB0eUFycmF5ID0gcmVxdWlyZV9pc19ub25fZW1wdHlfYXJyYXkoKTtcbiAgICB2YXIgZ2V0U3RyaW5nV2lkdGggPSByZXF1aXJlX2dldF9zdHJpbmdfd2lkdGgoKTtcbiAgICB2YXIge1xuICAgICAgc2tpcFdoaXRlc3BhY2UsXG4gICAgICBza2lwU3BhY2VzLFxuICAgICAgc2tpcFRvTGluZUVuZCxcbiAgICAgIHNraXBFdmVyeXRoaW5nQnV0TmV3TGluZVxuICAgIH0gPSByZXF1aXJlX3NraXAoKTtcbiAgICB2YXIgc2tpcElubGluZUNvbW1lbnQgPSByZXF1aXJlX3NraXBfaW5saW5lX2NvbW1lbnQoKTtcbiAgICB2YXIgc2tpcFRyYWlsaW5nQ29tbWVudCA9IHJlcXVpcmVfc2tpcF90cmFpbGluZ19jb21tZW50KCk7XG4gICAgdmFyIHNraXBOZXdsaW5lID0gcmVxdWlyZV9za2lwX25ld2xpbmUoKTtcbiAgICB2YXIgZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4V2l0aFN0YXJ0SW5kZXggPSByZXF1aXJlX2dldF9uZXh0X25vbl9zcGFjZV9ub25fY29tbWVudF9jaGFyYWN0ZXJfaW5kZXhfd2l0aF9zdGFydF9pbmRleCgpO1xuICAgIHZhciBnZXRQZW51bHRpbWF0ZSA9IChhcnIpID0+IGFyclthcnIubGVuZ3RoIC0gMl07XG4gICAgZnVuY3Rpb24gc2tpcChjaGFycykge1xuICAgICAgcmV0dXJuICh0ZXh0LCBpbmRleCwgb3B0cykgPT4ge1xuICAgICAgICBjb25zdCBiYWNrd2FyZHMgPSBvcHRzICYmIG9wdHMuYmFja3dhcmRzO1xuICAgICAgICBpZiAoaW5kZXggPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBsZW5ndGhcbiAgICAgICAgfSA9IHRleHQ7XG4gICAgICAgIGxldCBjdXJzb3IgPSBpbmRleDtcbiAgICAgICAgd2hpbGUgKGN1cnNvciA+PSAwICYmIGN1cnNvciA8IGxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGMgPSB0ZXh0LmNoYXJBdChjdXJzb3IpO1xuICAgICAgICAgIGlmIChjaGFycyBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgICAgaWYgKCFjaGFycy50ZXN0KGMpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjdXJzb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghY2hhcnMuaW5jbHVkZXMoYykpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJzb3I7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJhY2t3YXJkcyA/IGN1cnNvci0tIDogY3Vyc29yKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnNvciA9PT0gLTEgfHwgY3Vyc29yID09PSBsZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gY3Vyc29yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc05ld2xpbmUodGV4dCwgaW5kZXgsIG9wdHMgPSB7fSkge1xuICAgICAgY29uc3QgaWR4ID0gc2tpcFNwYWNlcyh0ZXh0LCBvcHRzLmJhY2t3YXJkcyA/IGluZGV4IC0gMSA6IGluZGV4LCBvcHRzKTtcbiAgICAgIGNvbnN0IGlkeDIgPSBza2lwTmV3bGluZSh0ZXh0LCBpZHgsIG9wdHMpO1xuICAgICAgcmV0dXJuIGlkeCAhPT0gaWR4MjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzTmV3bGluZUluUmFuZ2UodGV4dCwgc3RhcnQsIGVuZCkge1xuICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgICAgaWYgKHRleHQuY2hhckF0KGkpID09PSBcIlxcblwiKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNQcmV2aW91c0xpbmVFbXB0eSh0ZXh0LCBub2RlLCBsb2NTdGFydCkge1xuICAgICAgbGV0IGlkeCA9IGxvY1N0YXJ0KG5vZGUpIC0gMTtcbiAgICAgIGlkeCA9IHNraXBTcGFjZXModGV4dCwgaWR4LCB7XG4gICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZHggPSBza2lwTmV3bGluZSh0ZXh0LCBpZHgsIHtcbiAgICAgICAgYmFja3dhcmRzOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlkeCA9IHNraXBTcGFjZXModGV4dCwgaWR4LCB7XG4gICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBjb25zdCBpZHgyID0gc2tpcE5ld2xpbmUodGV4dCwgaWR4LCB7XG4gICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gaWR4ICE9PSBpZHgyO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc05leHRMaW5lRW1wdHlBZnRlckluZGV4KHRleHQsIGluZGV4KSB7XG4gICAgICBsZXQgb2xkSWR4ID0gbnVsbDtcbiAgICAgIGxldCBpZHggPSBpbmRleDtcbiAgICAgIHdoaWxlIChpZHggIT09IG9sZElkeCkge1xuICAgICAgICBvbGRJZHggPSBpZHg7XG4gICAgICAgIGlkeCA9IHNraXBUb0xpbmVFbmQodGV4dCwgaWR4KTtcbiAgICAgICAgaWR4ID0gc2tpcElubGluZUNvbW1lbnQodGV4dCwgaWR4KTtcbiAgICAgICAgaWR4ID0gc2tpcFNwYWNlcyh0ZXh0LCBpZHgpO1xuICAgICAgfVxuICAgICAgaWR4ID0gc2tpcFRyYWlsaW5nQ29tbWVudCh0ZXh0LCBpZHgpO1xuICAgICAgaWR4ID0gc2tpcE5ld2xpbmUodGV4dCwgaWR4KTtcbiAgICAgIHJldHVybiBpZHggIT09IGZhbHNlICYmIGhhc05ld2xpbmUodGV4dCwgaWR4KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNOZXh0TGluZUVtcHR5KHRleHQsIG5vZGUsIGxvY0VuZCkge1xuICAgICAgcmV0dXJuIGlzTmV4dExpbmVFbXB0eUFmdGVySW5kZXgodGV4dCwgbG9jRW5kKG5vZGUpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4KHRleHQsIG5vZGUsIGxvY0VuZCkge1xuICAgICAgcmV0dXJuIGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXJJbmRleFdpdGhTdGFydEluZGV4KHRleHQsIGxvY0VuZChub2RlKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXIodGV4dCwgbm9kZSwgbG9jRW5kKSB7XG4gICAgICByZXR1cm4gdGV4dC5jaGFyQXQoZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4KHRleHQsIG5vZGUsIGxvY0VuZCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNTcGFjZXModGV4dCwgaW5kZXgsIG9wdHMgPSB7fSkge1xuICAgICAgY29uc3QgaWR4ID0gc2tpcFNwYWNlcyh0ZXh0LCBvcHRzLmJhY2t3YXJkcyA/IGluZGV4IC0gMSA6IGluZGV4LCBvcHRzKTtcbiAgICAgIHJldHVybiBpZHggIT09IGluZGV4O1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRBbGlnbm1lbnRTaXplKHZhbHVlLCB0YWJXaWR0aCwgc3RhcnRJbmRleCA9IDApIHtcbiAgICAgIGxldCBzaXplID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKHZhbHVlW2ldID09PSBcIlx0XCIpIHtcbiAgICAgICAgICBzaXplID0gc2l6ZSArIHRhYldpZHRoIC0gc2l6ZSAlIHRhYldpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNpemUrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHNpemU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEluZGVudFNpemUodmFsdWUsIHRhYldpZHRoKSB7XG4gICAgICBjb25zdCBsYXN0TmV3bGluZUluZGV4ID0gdmFsdWUubGFzdEluZGV4T2YoXCJcXG5cIik7XG4gICAgICBpZiAobGFzdE5ld2xpbmVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50U2l6ZSh2YWx1ZS5zbGljZShsYXN0TmV3bGluZUluZGV4ICsgMSkubWF0Y2goL15bXFx0IF0qLylbMF0sIHRhYldpZHRoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0UHJlZmVycmVkUXVvdGUocmF3Q29udGVudCwgcHJlZmVycmVkUXVvdGUpIHtcbiAgICAgIGNvbnN0IGRvdWJsZSA9IHtcbiAgICAgICAgcXVvdGU6ICdcIicsXG4gICAgICAgIHJlZ2V4OiAvXCIvZyxcbiAgICAgICAgZXNjYXBlZDogXCImcXVvdDtcIlxuICAgICAgfTtcbiAgICAgIGNvbnN0IHNpbmdsZSA9IHtcbiAgICAgICAgcXVvdGU6IFwiJ1wiLFxuICAgICAgICByZWdleDogLycvZyxcbiAgICAgICAgZXNjYXBlZDogXCImYXBvcztcIlxuICAgICAgfTtcbiAgICAgIGNvbnN0IHByZWZlcnJlZCA9IHByZWZlcnJlZFF1b3RlID09PSBcIidcIiA/IHNpbmdsZSA6IGRvdWJsZTtcbiAgICAgIGNvbnN0IGFsdGVybmF0ZSA9IHByZWZlcnJlZCA9PT0gc2luZ2xlID8gZG91YmxlIDogc2luZ2xlO1xuICAgICAgbGV0IHJlc3VsdCA9IHByZWZlcnJlZDtcbiAgICAgIGlmIChyYXdDb250ZW50LmluY2x1ZGVzKHByZWZlcnJlZC5xdW90ZSkgfHwgcmF3Q29udGVudC5pbmNsdWRlcyhhbHRlcm5hdGUucXVvdGUpKSB7XG4gICAgICAgIGNvbnN0IG51bVByZWZlcnJlZFF1b3RlcyA9IChyYXdDb250ZW50Lm1hdGNoKHByZWZlcnJlZC5yZWdleCkgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbnVtQWx0ZXJuYXRlUXVvdGVzID0gKHJhd0NvbnRlbnQubWF0Y2goYWx0ZXJuYXRlLnJlZ2V4KSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICByZXN1bHQgPSBudW1QcmVmZXJyZWRRdW90ZXMgPiBudW1BbHRlcm5hdGVRdW90ZXMgPyBhbHRlcm5hdGUgOiBwcmVmZXJyZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFN0cmluZyhyYXcsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJhd0NvbnRlbnQgPSByYXcuc2xpY2UoMSwgLTEpO1xuICAgICAgY29uc3QgZW5jbG9zaW5nUXVvdGUgPSBvcHRpb25zLnBhcnNlciA9PT0gXCJqc29uXCIgfHwgb3B0aW9ucy5wYXJzZXIgPT09IFwianNvbjVcIiAmJiBvcHRpb25zLnF1b3RlUHJvcHMgPT09IFwicHJlc2VydmVcIiAmJiAhb3B0aW9ucy5zaW5nbGVRdW90ZSA/ICdcIicgOiBvcHRpb25zLl9faXNJbkh0bWxBdHRyaWJ1dGUgPyBcIidcIiA6IGdldFByZWZlcnJlZFF1b3RlKHJhd0NvbnRlbnQsIG9wdGlvbnMuc2luZ2xlUXVvdGUgPyBcIidcIiA6ICdcIicpLnF1b3RlO1xuICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocmF3Q29udGVudCwgZW5jbG9zaW5nUXVvdGUsICEob3B0aW9ucy5wYXJzZXIgPT09IFwiY3NzXCIgfHwgb3B0aW9ucy5wYXJzZXIgPT09IFwibGVzc1wiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcInNjc3NcIiB8fCBvcHRpb25zLl9fZW1iZWRkZWRJbkh0bWwpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZVN0cmluZyhyYXdDb250ZW50LCBlbmNsb3NpbmdRdW90ZSwgdW5lc2NhcGVVbm5lY2Vzc2FyeUVzY2FwZXMpIHtcbiAgICAgIGNvbnN0IG90aGVyUXVvdGUgPSBlbmNsb3NpbmdRdW90ZSA9PT0gJ1wiJyA/IFwiJ1wiIDogJ1wiJztcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcXFwoLil8KFtcIiddKS9ncztcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSByYXdDb250ZW50LnJlcGxhY2UocmVnZXgsIChtYXRjaCwgZXNjYXBlZCwgcXVvdGUpID0+IHtcbiAgICAgICAgaWYgKGVzY2FwZWQgPT09IG90aGVyUXVvdGUpIHtcbiAgICAgICAgICByZXR1cm4gZXNjYXBlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVvdGUgPT09IGVuY2xvc2luZ1F1b3RlKSB7XG4gICAgICAgICAgcmV0dXJuIFwiXFxcXFwiICsgcXVvdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHF1b3RlKSB7XG4gICAgICAgICAgcmV0dXJuIHF1b3RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmVzY2FwZVVubmVjZXNzYXJ5RXNjYXBlcyAmJiAvXlteXFxuXFxyXCInMC03XFxcXGJmbnJ0LXZ4XFx1MjAyOFxcdTIwMjldJC8udGVzdChlc2NhcGVkKSA/IGVzY2FwZWQgOiBcIlxcXFxcIiArIGVzY2FwZWQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBlbmNsb3NpbmdRdW90ZSArIG5ld0NvbnRlbnQgKyBlbmNsb3NpbmdRdW90ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnROdW1iZXIocmF3TnVtYmVyKSB7XG4gICAgICByZXR1cm4gcmF3TnVtYmVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXihbKy1dP1tcXGQuXStlKSg/OlxcK3woLSkpPzAqKFxcZCkvLCBcIiQxJDIkM1wiKS5yZXBsYWNlKC9eKFsrLV0/W1xcZC5dKyllWystXT8wKyQvLCBcIiQxXCIpLnJlcGxhY2UoL14oWystXSk/XFwuLywgXCIkMTAuXCIpLnJlcGxhY2UoLyhcXC5cXGQrPykwKyg/PWV8JCkvLCBcIiQxXCIpLnJlcGxhY2UoL1xcLig/PWV8JCkvLCBcIlwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0TWF4Q29udGludW91c0NvdW50KHN0ciwgdGFyZ2V0KSB7XG4gICAgICBjb25zdCByZXN1bHRzID0gc3RyLm1hdGNoKG5ldyBSZWdFeHAoYCgke2VzY2FwZVN0cmluZ1JlZ2V4cDIodGFyZ2V0KX0pK2AsIFwiZ1wiKSk7XG4gICAgICBpZiAocmVzdWx0cyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzLnJlZHVjZSgobWF4Q291bnQsIHJlc3VsdCkgPT4gTWF0aC5tYXgobWF4Q291bnQsIHJlc3VsdC5sZW5ndGggLyB0YXJnZXQubGVuZ3RoKSwgMCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE1pbk5vdFByZXNlbnRDb250aW51b3VzQ291bnQoc3RyLCB0YXJnZXQpIHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBzdHIubWF0Y2gobmV3IFJlZ0V4cChgKCR7ZXNjYXBlU3RyaW5nUmVnZXhwMih0YXJnZXQpfSkrYCwgXCJnXCIpKTtcbiAgICAgIGlmIChtYXRjaGVzID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgY29uc3QgY291bnRQcmVzZW50ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgIGxldCBtYXggPSAwO1xuICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gbWF0Y2gubGVuZ3RoIC8gdGFyZ2V0Lmxlbmd0aDtcbiAgICAgICAgY291bnRQcmVzZW50LnNldChjb3VudCwgdHJ1ZSk7XG4gICAgICAgIGlmIChjb3VudCA+IG1heCkge1xuICAgICAgICAgIG1heCA9IGNvdW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG1heDsgaSsrKSB7XG4gICAgICAgIGlmICghY291bnRQcmVzZW50LmdldChpKSkge1xuICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF4ICsgMTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkQ29tbWVudEhlbHBlcihub2RlLCBjb21tZW50KSB7XG4gICAgICBjb25zdCBjb21tZW50cyA9IG5vZGUuY29tbWVudHMgfHwgKG5vZGUuY29tbWVudHMgPSBbXSk7XG4gICAgICBjb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgY29tbWVudC5wcmludGVkID0gZmFsc2U7XG4gICAgICBjb21tZW50Lm5vZGVEZXNjcmlwdGlvbiA9IGRlc2NyaWJlTm9kZUZvckRlYnVnZ2luZyhub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkTGVhZGluZ0NvbW1lbnQobm9kZSwgY29tbWVudCkge1xuICAgICAgY29tbWVudC5sZWFkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbW1lbnQudHJhaWxpbmcgPSBmYWxzZTtcbiAgICAgIGFkZENvbW1lbnRIZWxwZXIobm9kZSwgY29tbWVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZERhbmdsaW5nQ29tbWVudChub2RlLCBjb21tZW50LCBtYXJrZXIpIHtcbiAgICAgIGNvbW1lbnQubGVhZGluZyA9IGZhbHNlO1xuICAgICAgY29tbWVudC50cmFpbGluZyA9IGZhbHNlO1xuICAgICAgaWYgKG1hcmtlcikge1xuICAgICAgICBjb21tZW50Lm1hcmtlciA9IG1hcmtlcjtcbiAgICAgIH1cbiAgICAgIGFkZENvbW1lbnRIZWxwZXIobm9kZSwgY29tbWVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZFRyYWlsaW5nQ29tbWVudChub2RlLCBjb21tZW50KSB7XG4gICAgICBjb21tZW50LmxlYWRpbmcgPSBmYWxzZTtcbiAgICAgIGNvbW1lbnQudHJhaWxpbmcgPSB0cnVlO1xuICAgICAgYWRkQ29tbWVudEhlbHBlcihub2RlLCBjb21tZW50KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5mZXJQYXJzZXJCeUxhbmd1YWdlKGxhbmd1YWdlLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxhbmd1YWdlc1xuICAgICAgfSA9IGdldFN1cHBvcnRJbmZvMih7XG4gICAgICAgIHBsdWdpbnM6IG9wdGlvbnMucGx1Z2luc1xuICAgICAgfSk7XG4gICAgICBjb25zdCBtYXRjaGVkID0gbGFuZ3VhZ2VzLmZpbmQoKHtcbiAgICAgICAgbmFtZVxuICAgICAgfSkgPT4gbmFtZS50b0xvd2VyQ2FzZSgpID09PSBsYW5ndWFnZSkgfHwgbGFuZ3VhZ2VzLmZpbmQoKHtcbiAgICAgICAgYWxpYXNlc1xuICAgICAgfSkgPT4gQXJyYXkuaXNBcnJheShhbGlhc2VzKSAmJiBhbGlhc2VzLmluY2x1ZGVzKGxhbmd1YWdlKSkgfHwgbGFuZ3VhZ2VzLmZpbmQoKHtcbiAgICAgICAgZXh0ZW5zaW9uc1xuICAgICAgfSkgPT4gQXJyYXkuaXNBcnJheShleHRlbnNpb25zKSAmJiBleHRlbnNpb25zLmluY2x1ZGVzKGAuJHtsYW5ndWFnZX1gKSk7XG4gICAgICByZXR1cm4gbWF0Y2hlZCAmJiBtYXRjaGVkLnBhcnNlcnNbMF07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRnJvbnRNYXR0ZXJOb2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlICYmIG5vZGUudHlwZSA9PT0gXCJmcm9udC1tYXR0ZXJcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlR3JvdXBJZE1hcHBlcihkZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgZ3JvdXBJZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGlmICghZ3JvdXBJZHMuaGFzKG5vZGUpKSB7XG4gICAgICAgICAgZ3JvdXBJZHMuc2V0KG5vZGUsIFN5bWJvbChkZXNjcmlwdGlvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBncm91cElkcy5nZXQobm9kZSk7XG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZU5vZGVGb3JEZWJ1Z2dpbmcobm9kZSkge1xuICAgICAgY29uc3Qgbm9kZVR5cGUgPSBub2RlLnR5cGUgfHwgbm9kZS5raW5kIHx8IFwiKHVua25vd24gdHlwZSlcIjtcbiAgICAgIGxldCBub2RlTmFtZSA9IFN0cmluZyhub2RlLm5hbWUgfHwgbm9kZS5pZCAmJiAodHlwZW9mIG5vZGUuaWQgPT09IFwib2JqZWN0XCIgPyBub2RlLmlkLm5hbWUgOiBub2RlLmlkKSB8fCBub2RlLmtleSAmJiAodHlwZW9mIG5vZGUua2V5ID09PSBcIm9iamVjdFwiID8gbm9kZS5rZXkubmFtZSA6IG5vZGUua2V5KSB8fCBub2RlLnZhbHVlICYmICh0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gXCJvYmplY3RcIiA/IFwiXCIgOiBTdHJpbmcobm9kZS52YWx1ZSkpIHx8IG5vZGUub3BlcmF0b3IgfHwgXCJcIik7XG4gICAgICBpZiAobm9kZU5hbWUubGVuZ3RoID4gMjApIHtcbiAgICAgICAgbm9kZU5hbWUgPSBub2RlTmFtZS5zbGljZSgwLCAxOSkgKyBcIlxcdTIwMjZcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlVHlwZSArIChub2RlTmFtZSA/IFwiIFwiICsgbm9kZU5hbWUgOiBcIlwiKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgaW5mZXJQYXJzZXJCeUxhbmd1YWdlLFxuICAgICAgZ2V0U3RyaW5nV2lkdGgsXG4gICAgICBnZXRNYXhDb250aW51b3VzQ291bnQsXG4gICAgICBnZXRNaW5Ob3RQcmVzZW50Q29udGludW91c0NvdW50LFxuICAgICAgZ2V0UGVudWx0aW1hdGUsXG4gICAgICBnZXRMYXN0LFxuICAgICAgZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4V2l0aFN0YXJ0SW5kZXgsXG4gICAgICBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXgsXG4gICAgICBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVyLFxuICAgICAgc2tpcCxcbiAgICAgIHNraXBXaGl0ZXNwYWNlLFxuICAgICAgc2tpcFNwYWNlcyxcbiAgICAgIHNraXBUb0xpbmVFbmQsXG4gICAgICBza2lwRXZlcnl0aGluZ0J1dE5ld0xpbmUsXG4gICAgICBza2lwSW5saW5lQ29tbWVudCxcbiAgICAgIHNraXBUcmFpbGluZ0NvbW1lbnQsXG4gICAgICBza2lwTmV3bGluZSxcbiAgICAgIGlzTmV4dExpbmVFbXB0eUFmdGVySW5kZXgsXG4gICAgICBpc05leHRMaW5lRW1wdHksXG4gICAgICBpc1ByZXZpb3VzTGluZUVtcHR5LFxuICAgICAgaGFzTmV3bGluZSxcbiAgICAgIGhhc05ld2xpbmVJblJhbmdlLFxuICAgICAgaGFzU3BhY2VzLFxuICAgICAgZ2V0QWxpZ25tZW50U2l6ZSxcbiAgICAgIGdldEluZGVudFNpemUsXG4gICAgICBnZXRQcmVmZXJyZWRRdW90ZSxcbiAgICAgIHByaW50U3RyaW5nLFxuICAgICAgcHJpbnROdW1iZXIsXG4gICAgICBtYWtlU3RyaW5nLFxuICAgICAgYWRkTGVhZGluZ0NvbW1lbnQsXG4gICAgICBhZGREYW5nbGluZ0NvbW1lbnQsXG4gICAgICBhZGRUcmFpbGluZ0NvbW1lbnQsXG4gICAgICBpc0Zyb250TWF0dGVyTm9kZSxcbiAgICAgIGlzTm9uRW1wdHlBcnJheSxcbiAgICAgIGNyZWF0ZUdyb3VwSWRNYXBwZXJcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2VuZF9vZl9saW5lID0gX19jb21tb25KUzIoe1xuICBcInNyYy9jb21tb24vZW5kLW9mLWxpbmUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIGd1ZXNzRW5kT2ZMaW5lKHRleHQpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGV4dC5pbmRleE9mKFwiXFxyXCIpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KGluZGV4ICsgMSkgPT09IFwiXFxuXCIgPyBcImNybGZcIiA6IFwiY3JcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcImxmXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbnZlcnRFbmRPZkxpbmVUb0NoYXJzKHZhbHVlKSB7XG4gICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgXCJjclwiOlxuICAgICAgICAgIHJldHVybiBcIlxcclwiO1xuICAgICAgICBjYXNlIFwiY3JsZlwiOlxuICAgICAgICAgIHJldHVybiBcIlxcclxcblwiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBcIlxcblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjb3VudEVuZE9mTGluZUNoYXJzKHRleHQsIGVvbCkge1xuICAgICAgbGV0IHJlZ2V4O1xuICAgICAgc3dpdGNoIChlb2wpIHtcbiAgICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICAgIHJlZ2V4ID0gL1xcbi9nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiXFxyXCI6XG4gICAgICAgICAgcmVnZXggPSAvXFxyL2c7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJcXHJcXG5cIjpcbiAgICAgICAgICByZWdleCA9IC9cXHJcXG4vZztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgXCJlb2xcIiAke0pTT04uc3RyaW5naWZ5KGVvbCl9LmApO1xuICAgICAgfVxuICAgICAgY29uc3QgZW5kT2ZMaW5lcyA9IHRleHQubWF0Y2gocmVnZXgpO1xuICAgICAgcmV0dXJuIGVuZE9mTGluZXMgPyBlbmRPZkxpbmVzLmxlbmd0aCA6IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUVuZE9mTGluZSh0ZXh0KSB7XG4gICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBndWVzc0VuZE9mTGluZSxcbiAgICAgIGNvbnZlcnRFbmRPZkxpbmVUb0NoYXJzLFxuICAgICAgY291bnRFbmRPZkxpbmVDaGFycyxcbiAgICAgIG5vcm1hbGl6ZUVuZE9mTGluZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZXJyb3JzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9jb21tb24vZXJyb3JzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgQ29uZmlnRXJyb3IgPSBjbGFzcyBleHRlbmRzIEVycm9yIHtcbiAgICB9O1xuICAgIHZhciBEZWJ1Z0Vycm9yID0gY2xhc3MgZXh0ZW5kcyBFcnJvciB7XG4gICAgfTtcbiAgICB2YXIgVW5kZWZpbmVkUGFyc2VyRXJyb3IgPSBjbGFzcyBleHRlbmRzIEVycm9yIHtcbiAgICB9O1xuICAgIHZhciBBcmdFeHBhbnNpb25CYWlsb3V0ID0gY2xhc3MgZXh0ZW5kcyBFcnJvciB7XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBDb25maWdFcnJvcixcbiAgICAgIERlYnVnRXJyb3IsXG4gICAgICBVbmRlZmluZWRQYXJzZXJFcnJvcixcbiAgICAgIEFyZ0V4cGFuc2lvbkJhaWxvdXRcbiAgICB9O1xuICB9XG59KTtcbnZhciB0c2xpYl9lczZfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQodHNsaWJfZXM2X2V4cG9ydHMsIHtcbiAgX19hc3NpZ246ICgpID0+IF9fYXNzaWduLFxuICBfX2FzeW5jRGVsZWdhdG9yOiAoKSA9PiBfX2FzeW5jRGVsZWdhdG9yLFxuICBfX2FzeW5jR2VuZXJhdG9yOiAoKSA9PiBfX2FzeW5jR2VuZXJhdG9yLFxuICBfX2FzeW5jVmFsdWVzOiAoKSA9PiBfX2FzeW5jVmFsdWVzLFxuICBfX2F3YWl0OiAoKSA9PiBfX2F3YWl0LFxuICBfX2F3YWl0ZXI6ICgpID0+IF9fYXdhaXRlcixcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldDogKCkgPT4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldDogKCkgPT4gX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jcmVhdGVCaW5kaW5nOiAoKSA9PiBfX2NyZWF0ZUJpbmRpbmcsXG4gIF9fZGVjb3JhdGU6ICgpID0+IF9fZGVjb3JhdGUsXG4gIF9fZXhwb3J0U3RhcjogKCkgPT4gX19leHBvcnRTdGFyLFxuICBfX2V4dGVuZHM6ICgpID0+IF9fZXh0ZW5kcyxcbiAgX19nZW5lcmF0b3I6ICgpID0+IF9fZ2VuZXJhdG9yLFxuICBfX2ltcG9ydERlZmF1bHQ6ICgpID0+IF9faW1wb3J0RGVmYXVsdCxcbiAgX19pbXBvcnRTdGFyOiAoKSA9PiBfX2ltcG9ydFN0YXIsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0OiAoKSA9PiBfX21ha2VUZW1wbGF0ZU9iamVjdCxcbiAgX19tZXRhZGF0YTogKCkgPT4gX19tZXRhZGF0YSxcbiAgX19wYXJhbTogKCkgPT4gX19wYXJhbSxcbiAgX19yZWFkOiAoKSA9PiBfX3JlYWQsXG4gIF9fcmVzdDogKCkgPT4gX19yZXN0LFxuICBfX3NwcmVhZDogKCkgPT4gX19zcHJlYWQsXG4gIF9fc3ByZWFkQXJyYXlzOiAoKSA9PiBfX3NwcmVhZEFycmF5cyxcbiAgX192YWx1ZXM6ICgpID0+IF9fdmFsdWVzXG59KTtcbmZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSBkO1xuICB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cbmZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIHAgaW4gcylcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICB0W3BdID0gc1twXTtcbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgfVxuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpXG4gICAgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pXG4gICAgICBpZiAoZCA9IGRlY29yYXRvcnNbaV0pXG4gICAgICAgIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufVxuZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCwga2V5KSB7XG4gICAgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTtcbiAgfTtcbn1cbmZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xufVxuZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0ge1xuICAgIGxhYmVsOiAwLFxuICAgIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRbMF0gJiAxKVxuICAgICAgICB0aHJvdyB0WzFdO1xuICAgICAgcmV0dXJuIHRbMV07XG4gICAgfSxcbiAgICB0cnlzOiBbXSxcbiAgICBvcHM6IFtdXG4gIH0sIGYsIHksIHQsIGc7XG4gIHJldHVybiBnID0ge1xuICAgIG5leHQ6IHZlcmIoMCksXG4gICAgXCJ0aHJvd1wiOiB2ZXJiKDEpLFxuICAgIFwicmV0dXJuXCI6IHZlcmIoMilcbiAgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikge1xuICAgIHJldHVybiBmdW5jdGlvbih2KSB7XG4gICAgICByZXR1cm4gc3RlcChbbiwgdl0pO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgIGlmIChmKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgd2hpbGUgKF8pXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSlcbiAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgaWYgKHkgPSAwLCB0KVxuICAgICAgICAgIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdCA9IG9wO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgXy5sYWJlbCsrO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IG9wWzFdLFxuICAgICAgICAgICAgICBkb25lOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBfLmxhYmVsKys7XG4gICAgICAgICAgICB5ID0gb3BbMV07XG4gICAgICAgICAgICBvcCA9IFswXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIG9wID0gXy5vcHMucG9wKCk7XG4gICAgICAgICAgICBfLnRyeXMucG9wKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHtcbiAgICAgICAgICAgICAgXyA9IDA7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCBvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkge1xuICAgICAgICAgICAgICBfLmxhYmVsID0gb3BbMV07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7XG4gICAgICAgICAgICAgIF8ubGFiZWwgPSB0WzFdO1xuICAgICAgICAgICAgICB0ID0gb3A7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHtcbiAgICAgICAgICAgICAgXy5sYWJlbCA9IHRbMl07XG4gICAgICAgICAgICAgIF8ub3BzLnB1c2gob3ApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0WzJdKVxuICAgICAgICAgICAgICBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgIF8udHJ5cy5wb3AoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBvcCA9IFs2LCBlXTtcbiAgICAgICAgeSA9IDA7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBmID0gdCA9IDA7XG4gICAgICB9XG4gICAgaWYgKG9wWzBdICYgNSlcbiAgICAgIHRocm93IG9wWzFdO1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCxcbiAgICAgIGRvbmU6IHRydWVcbiAgICB9O1xuICB9XG59XG5mdW5jdGlvbiBfX2NyZWF0ZUJpbmRpbmcobywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB2b2lkIDApXG4gICAgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59XG5mdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0czIpIHtcbiAgZm9yICh2YXIgcCBpbiBtKVxuICAgIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhZXhwb3J0czIuaGFzT3duUHJvcGVydHkocCkpXG4gICAgICBleHBvcnRzMltwXSA9IG1bcF07XG59XG5mdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKVxuICAgIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIilcbiAgICByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpXG4gICAgICAgICAgbyA9IHZvaWQgMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogbyAmJiBvW2krK10sXG4gICAgICAgICAgZG9uZTogIW9cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5mdW5jdGlvbiBfX3JlYWQobywgbikge1xuICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghbSlcbiAgICByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpXG4gICAgICBhci5wdXNoKHIudmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGUgPSB7XG4gICAgICBlcnJvclxuICAgIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSlcbiAgICAgICAgbS5jYWxsKGkpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZSlcbiAgICAgICAgdGhyb3cgZS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuZnVuY3Rpb24gX19zcHJlYWQoKSB7XG4gIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgcmV0dXJuIGFyO1xufVxuZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKylcbiAgICBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgIHJba10gPSBhW2pdO1xuICByZXR1cm4gcjtcbn1cbmZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cbmZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7XG4gICAgaWYgKGdbbl0pXG4gICAgICBpW25dID0gZnVuY3Rpb24odikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYSwgYikge1xuICAgICAgICAgIHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikge1xuICAgIHRyeSB7XG4gICAgICBzdGVwKGdbbl0odikpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHNldHRsZShxWzBdWzNdLCBlKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gc3RlcChyKSB7XG4gICAgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7XG4gIH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkge1xuICAgIHJlc3VtZShcIm5leHRcIiwgdmFsdWUpO1xuICB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkge1xuICAgIHJlc3VtZShcInRocm93XCIsIHZhbHVlKTtcbiAgfVxuICBmdW5jdGlvbiBzZXR0bGUoZiwgdikge1xuICAgIGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKVxuICAgICAgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pO1xuICB9XG59XG5mdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcbiAgdmFyIGksIHA7XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24oZSkge1xuICAgIHRocm93IGU7XG4gIH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7XG4gICAgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbih2KSB7XG4gICAgICByZXR1cm4gKHAgPSAhcCkgPyB7XG4gICAgICAgIHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLFxuICAgICAgICBkb25lOiBuID09PSBcInJldHVyblwiXG4gICAgICB9IDogZiA/IGYodikgOiB2O1xuICAgIH0gOiBmO1xuICB9XG59XG5mdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcilcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIGkpO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHtcbiAgICBpW25dID0gb1tuXSAmJiBmdW5jdGlvbih2KSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odjIpIHtcbiAgICAgIHJlc29sdmUoe1xuICAgICAgICB2YWx1ZTogdjIsXG4gICAgICAgIGRvbmU6IGRcbiAgICAgIH0pO1xuICAgIH0sIHJlamVjdCk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XG4gIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7XG4gICAgICB2YWx1ZTogcmF3XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29va2VkLnJhdyA9IHJhdztcbiAgfVxuICByZXR1cm4gY29va2VkO1xufVxuZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xuICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKVxuICAgIHJldHVybiBtb2Q7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG1vZCAhPSBudWxsKSB7XG4gICAgZm9yICh2YXIgayBpbiBtb2QpXG4gICAgICBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSlcbiAgICAgICAgcmVzdWx0W2tdID0gbW9kW2tdO1xuICB9XG4gIHJlc3VsdC5kZWZhdWx0ID0gbW9kO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xuICByZXR1cm4gbW9kICYmIG1vZC5fX2VzTW9kdWxlID8gbW9kIDoge1xuICAgIGRlZmF1bHQ6IG1vZFxuICB9O1xufVxuZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgcHJpdmF0ZU1hcCkge1xuICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xuICB9XG4gIHJldHVybiBwcml2YXRlTWFwLmdldChyZWNlaXZlcik7XG59XG5mdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwLCB2YWx1ZSkge1xuICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xuICB9XG4gIHByaXZhdGVNYXAuc2V0KHJlY2VpdmVyLCB2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn1cbnZhciBleHRlbmRTdGF0aWNzO1xudmFyIF9fYXNzaWduO1xudmFyIGluaXRfdHNsaWJfZXM2ID0gX19lc20oe1xuICBcIm5vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanNcIigpIHtcbiAgICBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICAgIF9fcHJvdG9fXzogW11cbiAgICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihkMiwgYjIpIHtcbiAgICAgICAgZDIuX19wcm90b19fID0gYjI7XG4gICAgICB9IHx8IGZ1bmN0aW9uKGQyLCBiMikge1xuICAgICAgICBmb3IgKHZhciBwIGluIGIyKVxuICAgICAgICAgIGlmIChiMi5oYXNPd25Qcm9wZXJ0eShwKSlcbiAgICAgICAgICAgIGQyW3BdID0gYjJbcF07XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduMih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgZm9yICh2YXIgcCBpbiBzKVxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9hcGkgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvZGVzY3JpcHRvcnMvYXBpLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmFwaURlc2NyaXB0b3IgPSB7XG4gICAgICBrZXk6IChrZXkpID0+IC9eWyRfYS16QS1aXVskX2EtekEtWjAtOV0qJC8udGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KSxcbiAgICAgIHZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBgWyR7dmFsdWUubWFwKChzdWJWYWx1ZSkgPT4gZXhwb3J0czIuYXBpRGVzY3JpcHRvci52YWx1ZShzdWJWYWx1ZSkpLmpvaW4oXCIsIFwiKX1dYDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgICAgICByZXR1cm4ga2V5cy5sZW5ndGggPT09IDAgPyBcInt9XCIgOiBgeyAke2tleXMubWFwKChrZXkpID0+IGAke2V4cG9ydHMyLmFwaURlc2NyaXB0b3Iua2V5KGtleSl9OiAke2V4cG9ydHMyLmFwaURlc2NyaXB0b3IudmFsdWUodmFsdWVba2V5XSl9YCkuam9pbihcIiwgXCIpfSB9YDtcbiAgICAgIH0sXG4gICAgICBwYWlyOiAoe1xuICAgICAgICBrZXksXG4gICAgICAgIHZhbHVlXG4gICAgICB9KSA9PiBleHBvcnRzMi5hcGlEZXNjcmlwdG9yLnZhbHVlKHtcbiAgICAgICAgW2tleV06IHZhbHVlXG4gICAgICB9KVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZGVzY3JpcHRvcnMyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy92bm9wdHMvbGliL2Rlc2NyaXB0b3JzL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciB0c2xpYl8xID0gKGluaXRfdHNsaWJfZXM2KCksIF9fdG9Db21tb25KUyh0c2xpYl9lczZfZXhwb3J0cykpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfYXBpKCksIGV4cG9ydHMyKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9lc2NhcGVfc3RyaW5nX3JlZ2V4cCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL25vZGVfbW9kdWxlcy9lc2NhcGUtc3RyaW5nLXJlZ2V4cC9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIG1hdGNoT3BlcmF0b3JzUmUgPSAvW3xcXFxce30oKVtcXF1eJCsqPy5dL2c7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBzdHJpbmdcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyLnJlcGxhY2UobWF0Y2hPcGVyYXRvcnNSZSwgXCJcXFxcJCZcIik7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb2xvcl9uYW1lID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9jb2xvci1uYW1lL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXG4gICAgICBcImFudGlxdWV3aGl0ZVwiOiBbMjUwLCAyMzUsIDIxNV0sXG4gICAgICBcImFxdWFcIjogWzAsIDI1NSwgMjU1XSxcbiAgICAgIFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXG4gICAgICBcImF6dXJlXCI6IFsyNDAsIDI1NSwgMjU1XSxcbiAgICAgIFwiYmVpZ2VcIjogWzI0NSwgMjQ1LCAyMjBdLFxuICAgICAgXCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxuICAgICAgXCJibGFja1wiOiBbMCwgMCwgMF0sXG4gICAgICBcImJsYW5jaGVkYWxtb25kXCI6IFsyNTUsIDIzNSwgMjA1XSxcbiAgICAgIFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcbiAgICAgIFwiYmx1ZXZpb2xldFwiOiBbMTM4LCA0MywgMjI2XSxcbiAgICAgIFwiYnJvd25cIjogWzE2NSwgNDIsIDQyXSxcbiAgICAgIFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcbiAgICAgIFwiY2FkZXRibHVlXCI6IFs5NSwgMTU4LCAxNjBdLFxuICAgICAgXCJjaGFydHJldXNlXCI6IFsxMjcsIDI1NSwgMF0sXG4gICAgICBcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcbiAgICAgIFwiY29yYWxcIjogWzI1NSwgMTI3LCA4MF0sXG4gICAgICBcImNvcm5mbG93ZXJibHVlXCI6IFsxMDAsIDE0OSwgMjM3XSxcbiAgICAgIFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxuICAgICAgXCJjcmltc29uXCI6IFsyMjAsIDIwLCA2MF0sXG4gICAgICBcImN5YW5cIjogWzAsIDI1NSwgMjU1XSxcbiAgICAgIFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXG4gICAgICBcImRhcmtjeWFuXCI6IFswLCAxMzksIDEzOV0sXG4gICAgICBcImRhcmtnb2xkZW5yb2RcIjogWzE4NCwgMTM0LCAxMV0sXG4gICAgICBcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcbiAgICAgIFwiZGFya2dyZWVuXCI6IFswLCAxMDAsIDBdLFxuICAgICAgXCJkYXJrZ3JleVwiOiBbMTY5LCAxNjksIDE2OV0sXG4gICAgICBcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXG4gICAgICBcImRhcmttYWdlbnRhXCI6IFsxMzksIDAsIDEzOV0sXG4gICAgICBcImRhcmtvbGl2ZWdyZWVuXCI6IFs4NSwgMTA3LCA0N10sXG4gICAgICBcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcbiAgICAgIFwiZGFya29yY2hpZFwiOiBbMTUzLCA1MCwgMjA0XSxcbiAgICAgIFwiZGFya3JlZFwiOiBbMTM5LCAwLCAwXSxcbiAgICAgIFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXG4gICAgICBcImRhcmtzZWFncmVlblwiOiBbMTQzLCAxODgsIDE0M10sXG4gICAgICBcImRhcmtzbGF0ZWJsdWVcIjogWzcyLCA2MSwgMTM5XSxcbiAgICAgIFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXG4gICAgICBcImRhcmtzbGF0ZWdyZXlcIjogWzQ3LCA3OSwgNzldLFxuICAgICAgXCJkYXJrdHVycXVvaXNlXCI6IFswLCAyMDYsIDIwOV0sXG4gICAgICBcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcbiAgICAgIFwiZGVlcHBpbmtcIjogWzI1NSwgMjAsIDE0N10sXG4gICAgICBcImRlZXBza3libHVlXCI6IFswLCAxOTEsIDI1NV0sXG4gICAgICBcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxuICAgICAgXCJkaW1ncmV5XCI6IFsxMDUsIDEwNSwgMTA1XSxcbiAgICAgIFwiZG9kZ2VyYmx1ZVwiOiBbMzAsIDE0NCwgMjU1XSxcbiAgICAgIFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXG4gICAgICBcImZsb3JhbHdoaXRlXCI6IFsyNTUsIDI1MCwgMjQwXSxcbiAgICAgIFwiZm9yZXN0Z3JlZW5cIjogWzM0LCAxMzksIDM0XSxcbiAgICAgIFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxuICAgICAgXCJnYWluc2Jvcm9cIjogWzIyMCwgMjIwLCAyMjBdLFxuICAgICAgXCJnaG9zdHdoaXRlXCI6IFsyNDgsIDI0OCwgMjU1XSxcbiAgICAgIFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxuICAgICAgXCJnb2xkZW5yb2RcIjogWzIxOCwgMTY1LCAzMl0sXG4gICAgICBcImdyYXlcIjogWzEyOCwgMTI4LCAxMjhdLFxuICAgICAgXCJncmVlblwiOiBbMCwgMTI4LCAwXSxcbiAgICAgIFwiZ3JlZW55ZWxsb3dcIjogWzE3MywgMjU1LCA0N10sXG4gICAgICBcImdyZXlcIjogWzEyOCwgMTI4LCAxMjhdLFxuICAgICAgXCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXG4gICAgICBcImhvdHBpbmtcIjogWzI1NSwgMTA1LCAxODBdLFxuICAgICAgXCJpbmRpYW5yZWRcIjogWzIwNSwgOTIsIDkyXSxcbiAgICAgIFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcbiAgICAgIFwiaXZvcnlcIjogWzI1NSwgMjU1LCAyNDBdLFxuICAgICAgXCJraGFraVwiOiBbMjQwLCAyMzAsIDE0MF0sXG4gICAgICBcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcbiAgICAgIFwibGF2ZW5kZXJibHVzaFwiOiBbMjU1LCAyNDAsIDI0NV0sXG4gICAgICBcImxhd25ncmVlblwiOiBbMTI0LCAyNTIsIDBdLFxuICAgICAgXCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxuICAgICAgXCJsaWdodGJsdWVcIjogWzE3MywgMjE2LCAyMzBdLFxuICAgICAgXCJsaWdodGNvcmFsXCI6IFsyNDAsIDEyOCwgMTI4XSxcbiAgICAgIFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcbiAgICAgIFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIjogWzI1MCwgMjUwLCAyMTBdLFxuICAgICAgXCJsaWdodGdyYXlcIjogWzIxMSwgMjExLCAyMTFdLFxuICAgICAgXCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcbiAgICAgIFwibGlnaHRncmV5XCI6IFsyMTEsIDIxMSwgMjExXSxcbiAgICAgIFwibGlnaHRwaW5rXCI6IFsyNTUsIDE4MiwgMTkzXSxcbiAgICAgIFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxuICAgICAgXCJsaWdodHNlYWdyZWVuXCI6IFszMiwgMTc4LCAxNzBdLFxuICAgICAgXCJsaWdodHNreWJsdWVcIjogWzEzNSwgMjA2LCAyNTBdLFxuICAgICAgXCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXG4gICAgICBcImxpZ2h0c2xhdGVncmV5XCI6IFsxMTksIDEzNiwgMTUzXSxcbiAgICAgIFwibGlnaHRzdGVlbGJsdWVcIjogWzE3NiwgMTk2LCAyMjJdLFxuICAgICAgXCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXG4gICAgICBcImxpbWVcIjogWzAsIDI1NSwgMF0sXG4gICAgICBcImxpbWVncmVlblwiOiBbNTAsIDIwNSwgNTBdLFxuICAgICAgXCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXG4gICAgICBcIm1hZ2VudGFcIjogWzI1NSwgMCwgMjU1XSxcbiAgICAgIFwibWFyb29uXCI6IFsxMjgsIDAsIDBdLFxuICAgICAgXCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcbiAgICAgIFwibWVkaXVtYmx1ZVwiOiBbMCwgMCwgMjA1XSxcbiAgICAgIFwibWVkaXVtb3JjaGlkXCI6IFsxODYsIDg1LCAyMTFdLFxuICAgICAgXCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxuICAgICAgXCJtZWRpdW1zZWFncmVlblwiOiBbNjAsIDE3OSwgMTEzXSxcbiAgICAgIFwibWVkaXVtc2xhdGVibHVlXCI6IFsxMjMsIDEwNCwgMjM4XSxcbiAgICAgIFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcbiAgICAgIFwibWVkaXVtdHVycXVvaXNlXCI6IFs3MiwgMjA5LCAyMDRdLFxuICAgICAgXCJtZWRpdW12aW9sZXRyZWRcIjogWzE5OSwgMjEsIDEzM10sXG4gICAgICBcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxuICAgICAgXCJtaW50Y3JlYW1cIjogWzI0NSwgMjU1LCAyNTBdLFxuICAgICAgXCJtaXN0eXJvc2VcIjogWzI1NSwgMjI4LCAyMjVdLFxuICAgICAgXCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXG4gICAgICBcIm5hdmFqb3doaXRlXCI6IFsyNTUsIDIyMiwgMTczXSxcbiAgICAgIFwibmF2eVwiOiBbMCwgMCwgMTI4XSxcbiAgICAgIFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXG4gICAgICBcIm9saXZlXCI6IFsxMjgsIDEyOCwgMF0sXG4gICAgICBcIm9saXZlZHJhYlwiOiBbMTA3LCAxNDIsIDM1XSxcbiAgICAgIFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXG4gICAgICBcIm9yYW5nZXJlZFwiOiBbMjU1LCA2OSwgMF0sXG4gICAgICBcIm9yY2hpZFwiOiBbMjE4LCAxMTIsIDIxNF0sXG4gICAgICBcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxuICAgICAgXCJwYWxlZ3JlZW5cIjogWzE1MiwgMjUxLCAxNTJdLFxuICAgICAgXCJwYWxldHVycXVvaXNlXCI6IFsxNzUsIDIzOCwgMjM4XSxcbiAgICAgIFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXG4gICAgICBcInBhcGF5YXdoaXBcIjogWzI1NSwgMjM5LCAyMTNdLFxuICAgICAgXCJwZWFjaHB1ZmZcIjogWzI1NSwgMjE4LCAxODVdLFxuICAgICAgXCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxuICAgICAgXCJwaW5rXCI6IFsyNTUsIDE5MiwgMjAzXSxcbiAgICAgIFwicGx1bVwiOiBbMjIxLCAxNjAsIDIyMV0sXG4gICAgICBcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxuICAgICAgXCJwdXJwbGVcIjogWzEyOCwgMCwgMTI4XSxcbiAgICAgIFwicmViZWNjYXB1cnBsZVwiOiBbMTAyLCA1MSwgMTUzXSxcbiAgICAgIFwicmVkXCI6IFsyNTUsIDAsIDBdLFxuICAgICAgXCJyb3N5YnJvd25cIjogWzE4OCwgMTQzLCAxNDNdLFxuICAgICAgXCJyb3lhbGJsdWVcIjogWzY1LCAxMDUsIDIyNV0sXG4gICAgICBcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXG4gICAgICBcInNhbG1vblwiOiBbMjUwLCAxMjgsIDExNF0sXG4gICAgICBcInNhbmR5YnJvd25cIjogWzI0NCwgMTY0LCA5Nl0sXG4gICAgICBcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXG4gICAgICBcInNlYXNoZWxsXCI6IFsyNTUsIDI0NSwgMjM4XSxcbiAgICAgIFwic2llbm5hXCI6IFsxNjAsIDgyLCA0NV0sXG4gICAgICBcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXG4gICAgICBcInNreWJsdWVcIjogWzEzNSwgMjA2LCAyMzVdLFxuICAgICAgXCJzbGF0ZWJsdWVcIjogWzEwNiwgOTAsIDIwNV0sXG4gICAgICBcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXG4gICAgICBcInNsYXRlZ3JleVwiOiBbMTEyLCAxMjgsIDE0NF0sXG4gICAgICBcInNub3dcIjogWzI1NSwgMjUwLCAyNTBdLFxuICAgICAgXCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxuICAgICAgXCJzdGVlbGJsdWVcIjogWzcwLCAxMzAsIDE4MF0sXG4gICAgICBcInRhblwiOiBbMjEwLCAxODAsIDE0MF0sXG4gICAgICBcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcbiAgICAgIFwidGhpc3RsZVwiOiBbMjE2LCAxOTEsIDIxNl0sXG4gICAgICBcInRvbWF0b1wiOiBbMjU1LCA5OSwgNzFdLFxuICAgICAgXCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXG4gICAgICBcInZpb2xldFwiOiBbMjM4LCAxMzAsIDIzOF0sXG4gICAgICBcIndoZWF0XCI6IFsyNDUsIDIyMiwgMTc5XSxcbiAgICAgIFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxuICAgICAgXCJ3aGl0ZXNtb2tlXCI6IFsyNDUsIDI0NSwgMjQ1XSxcbiAgICAgIFwieWVsbG93XCI6IFsyNTUsIDI1NSwgMF0sXG4gICAgICBcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb252ZXJzaW9ucyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9jb252ZXJzaW9ucy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGNzc0tleXdvcmRzID0gcmVxdWlyZV9jb2xvcl9uYW1lKCk7XG4gICAgdmFyIHJldmVyc2VLZXl3b3JkcyA9IHt9O1xuICAgIGZvciAoa2V5IGluIGNzc0tleXdvcmRzKSB7XG4gICAgICBpZiAoY3NzS2V5d29yZHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICByZXZlcnNlS2V5d29yZHNbY3NzS2V5d29yZHNba2V5XV0gPSBrZXk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBrZXk7XG4gICAgdmFyIGNvbnZlcnQgPSBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICByZ2I6IHtcbiAgICAgICAgY2hhbm5lbHM6IDMsXG4gICAgICAgIGxhYmVsczogXCJyZ2JcIlxuICAgICAgfSxcbiAgICAgIGhzbDoge1xuICAgICAgICBjaGFubmVsczogMyxcbiAgICAgICAgbGFiZWxzOiBcImhzbFwiXG4gICAgICB9LFxuICAgICAgaHN2OiB7XG4gICAgICAgIGNoYW5uZWxzOiAzLFxuICAgICAgICBsYWJlbHM6IFwiaHN2XCJcbiAgICAgIH0sXG4gICAgICBod2I6IHtcbiAgICAgICAgY2hhbm5lbHM6IDMsXG4gICAgICAgIGxhYmVsczogXCJod2JcIlxuICAgICAgfSxcbiAgICAgIGNteWs6IHtcbiAgICAgICAgY2hhbm5lbHM6IDQsXG4gICAgICAgIGxhYmVsczogXCJjbXlrXCJcbiAgICAgIH0sXG4gICAgICB4eXo6IHtcbiAgICAgICAgY2hhbm5lbHM6IDMsXG4gICAgICAgIGxhYmVsczogXCJ4eXpcIlxuICAgICAgfSxcbiAgICAgIGxhYjoge1xuICAgICAgICBjaGFubmVsczogMyxcbiAgICAgICAgbGFiZWxzOiBcImxhYlwiXG4gICAgICB9LFxuICAgICAgbGNoOiB7XG4gICAgICAgIGNoYW5uZWxzOiAzLFxuICAgICAgICBsYWJlbHM6IFwibGNoXCJcbiAgICAgIH0sXG4gICAgICBoZXg6IHtcbiAgICAgICAgY2hhbm5lbHM6IDEsXG4gICAgICAgIGxhYmVsczogW1wiaGV4XCJdXG4gICAgICB9LFxuICAgICAga2V5d29yZDoge1xuICAgICAgICBjaGFubmVsczogMSxcbiAgICAgICAgbGFiZWxzOiBbXCJrZXl3b3JkXCJdXG4gICAgICB9LFxuICAgICAgYW5zaTE2OiB7XG4gICAgICAgIGNoYW5uZWxzOiAxLFxuICAgICAgICBsYWJlbHM6IFtcImFuc2kxNlwiXVxuICAgICAgfSxcbiAgICAgIGFuc2kyNTY6IHtcbiAgICAgICAgY2hhbm5lbHM6IDEsXG4gICAgICAgIGxhYmVsczogW1wiYW5zaTI1NlwiXVxuICAgICAgfSxcbiAgICAgIGhjZzoge1xuICAgICAgICBjaGFubmVsczogMyxcbiAgICAgICAgbGFiZWxzOiBbXCJoXCIsIFwiY1wiLCBcImdcIl1cbiAgICAgIH0sXG4gICAgICBhcHBsZToge1xuICAgICAgICBjaGFubmVsczogMyxcbiAgICAgICAgbGFiZWxzOiBbXCJyMTZcIiwgXCJnMTZcIiwgXCJiMTZcIl1cbiAgICAgIH0sXG4gICAgICBncmF5OiB7XG4gICAgICAgIGNoYW5uZWxzOiAxLFxuICAgICAgICBsYWJlbHM6IFtcImdyYXlcIl1cbiAgICAgIH1cbiAgICB9O1xuICAgIGZvciAobW9kZWwgaW4gY29udmVydCkge1xuICAgICAgaWYgKGNvbnZlcnQuaGFzT3duUHJvcGVydHkobW9kZWwpKSB7XG4gICAgICAgIGlmICghKFwiY2hhbm5lbHNcIiBpbiBjb252ZXJ0W21vZGVsXSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJtaXNzaW5nIGNoYW5uZWxzIHByb3BlcnR5OiBcIiArIG1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShcImxhYmVsc1wiIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm1pc3NpbmcgY2hhbm5lbCBsYWJlbHMgcHJvcGVydHk6IFwiICsgbW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb252ZXJ0W21vZGVsXS5sYWJlbHMubGVuZ3RoICE9PSBjb252ZXJ0W21vZGVsXS5jaGFubmVscykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNoYW5uZWwgYW5kIGxhYmVsIGNvdW50cyBtaXNtYXRjaDogXCIgKyBtb2RlbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbHMgPSBjb252ZXJ0W21vZGVsXS5jaGFubmVscztcbiAgICAgICAgbGFiZWxzID0gY29udmVydFttb2RlbF0ubGFiZWxzO1xuICAgICAgICBkZWxldGUgY29udmVydFttb2RlbF0uY2hhbm5lbHM7XG4gICAgICAgIGRlbGV0ZSBjb252ZXJ0W21vZGVsXS5sYWJlbHM7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W21vZGVsXSwgXCJjaGFubmVsc1wiLCB7XG4gICAgICAgICAgdmFsdWU6IGNoYW5uZWxzXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sIFwibGFiZWxzXCIsIHtcbiAgICAgICAgICB2YWx1ZTogbGFiZWxzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgY2hhbm5lbHM7XG4gICAgdmFyIGxhYmVscztcbiAgICB2YXIgbW9kZWw7XG4gICAgY29udmVydC5yZ2IuaHNsID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICB2YXIgciA9IHJnYlswXSAvIDI1NTtcbiAgICAgIHZhciBnID0gcmdiWzFdIC8gMjU1O1xuICAgICAgdmFyIGIgPSByZ2JbMl0gLyAyNTU7XG4gICAgICB2YXIgbWluID0gTWF0aC5taW4ociwgZywgYik7XG4gICAgICB2YXIgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gICAgICB2YXIgZGVsdGEgPSBtYXggLSBtaW47XG4gICAgICB2YXIgaDtcbiAgICAgIHZhciBzO1xuICAgICAgdmFyIGw7XG4gICAgICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICAgICAgaCA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IG1heCkge1xuICAgICAgICBoID0gKGcgLSBiKSAvIGRlbHRhO1xuICAgICAgfSBlbHNlIGlmIChnID09PSBtYXgpIHtcbiAgICAgICAgaCA9IDIgKyAoYiAtIHIpIC8gZGVsdGE7XG4gICAgICB9IGVsc2UgaWYgKGIgPT09IG1heCkge1xuICAgICAgICBoID0gNCArIChyIC0gZykgLyBkZWx0YTtcbiAgICAgIH1cbiAgICAgIGggPSBNYXRoLm1pbihoICogNjAsIDM2MCk7XG4gICAgICBpZiAoaCA8IDApIHtcbiAgICAgICAgaCArPSAzNjA7XG4gICAgICB9XG4gICAgICBsID0gKG1pbiArIG1heCkgLyAyO1xuICAgICAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgICAgIHMgPSAwO1xuICAgICAgfSBlbHNlIGlmIChsIDw9IDAuNSkge1xuICAgICAgICBzID0gZGVsdGEgLyAobWF4ICsgbWluKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMgPSBkZWx0YSAvICgyIC0gbWF4IC0gbWluKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbaCwgcyAqIDEwMCwgbCAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0LnJnYi5oc3YgPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHZhciByZGlmO1xuICAgICAgdmFyIGdkaWY7XG4gICAgICB2YXIgYmRpZjtcbiAgICAgIHZhciBoO1xuICAgICAgdmFyIHM7XG4gICAgICB2YXIgciA9IHJnYlswXSAvIDI1NTtcbiAgICAgIHZhciBnID0gcmdiWzFdIC8gMjU1O1xuICAgICAgdmFyIGIgPSByZ2JbMl0gLyAyNTU7XG4gICAgICB2YXIgdiA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgICAgdmFyIGRpZmYgPSB2IC0gTWF0aC5taW4ociwgZywgYik7XG4gICAgICB2YXIgZGlmZmMgPSBmdW5jdGlvbihjKSB7XG4gICAgICAgIHJldHVybiAodiAtIGMpIC8gNiAvIGRpZmYgKyAxIC8gMjtcbiAgICAgIH07XG4gICAgICBpZiAoZGlmZiA9PT0gMCkge1xuICAgICAgICBoID0gcyA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzID0gZGlmZiAvIHY7XG4gICAgICAgIHJkaWYgPSBkaWZmYyhyKTtcbiAgICAgICAgZ2RpZiA9IGRpZmZjKGcpO1xuICAgICAgICBiZGlmID0gZGlmZmMoYik7XG4gICAgICAgIGlmIChyID09PSB2KSB7XG4gICAgICAgICAgaCA9IGJkaWYgLSBnZGlmO1xuICAgICAgICB9IGVsc2UgaWYgKGcgPT09IHYpIHtcbiAgICAgICAgICBoID0gMSAvIDMgKyByZGlmIC0gYmRpZjtcbiAgICAgICAgfSBlbHNlIGlmIChiID09PSB2KSB7XG4gICAgICAgICAgaCA9IDIgLyAzICsgZ2RpZiAtIHJkaWY7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGggPCAwKSB7XG4gICAgICAgICAgaCArPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKGggPiAxKSB7XG4gICAgICAgICAgaCAtPSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gW2ggKiAzNjAsIHMgKiAxMDAsIHYgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuaHdiID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICB2YXIgciA9IHJnYlswXTtcbiAgICAgIHZhciBnID0gcmdiWzFdO1xuICAgICAgdmFyIGIgPSByZ2JbMl07XG4gICAgICB2YXIgaCA9IGNvbnZlcnQucmdiLmhzbChyZ2IpWzBdO1xuICAgICAgdmFyIHcgPSAxIC8gMjU1ICogTWF0aC5taW4ociwgTWF0aC5taW4oZywgYikpO1xuICAgICAgYiA9IDEgLSAxIC8gMjU1ICogTWF0aC5tYXgociwgTWF0aC5tYXgoZywgYikpO1xuICAgICAgcmV0dXJuIFtoLCB3ICogMTAwLCBiICogMTAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQucmdiLmNteWsgPSBmdW5jdGlvbihyZ2IpIHtcbiAgICAgIHZhciByID0gcmdiWzBdIC8gMjU1O1xuICAgICAgdmFyIGcgPSByZ2JbMV0gLyAyNTU7XG4gICAgICB2YXIgYiA9IHJnYlsyXSAvIDI1NTtcbiAgICAgIHZhciBjO1xuICAgICAgdmFyIG07XG4gICAgICB2YXIgeTtcbiAgICAgIHZhciBrO1xuICAgICAgayA9IE1hdGgubWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xuICAgICAgYyA9ICgxIC0gciAtIGspIC8gKDEgLSBrKSB8fCAwO1xuICAgICAgbSA9ICgxIC0gZyAtIGspIC8gKDEgLSBrKSB8fCAwO1xuICAgICAgeSA9ICgxIC0gYiAtIGspIC8gKDEgLSBrKSB8fCAwO1xuICAgICAgcmV0dXJuIFtjICogMTAwLCBtICogMTAwLCB5ICogMTAwLCBrICogMTAwXTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGNvbXBhcmF0aXZlRGlzdGFuY2UoeCwgeSkge1xuICAgICAgcmV0dXJuIE1hdGgucG93KHhbMF0gLSB5WzBdLCAyKSArIE1hdGgucG93KHhbMV0gLSB5WzFdLCAyKSArIE1hdGgucG93KHhbMl0gLSB5WzJdLCAyKTtcbiAgICB9XG4gICAgY29udmVydC5yZ2Iua2V5d29yZCA9IGZ1bmN0aW9uKHJnYikge1xuICAgICAgdmFyIHJldmVyc2VkID0gcmV2ZXJzZUtleXdvcmRzW3JnYl07XG4gICAgICBpZiAocmV2ZXJzZWQpIHtcbiAgICAgICAgcmV0dXJuIHJldmVyc2VkO1xuICAgICAgfVxuICAgICAgdmFyIGN1cnJlbnRDbG9zZXN0RGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICAgIHZhciBjdXJyZW50Q2xvc2VzdEtleXdvcmQ7XG4gICAgICBmb3IgKHZhciBrZXl3b3JkIGluIGNzc0tleXdvcmRzKSB7XG4gICAgICAgIGlmIChjc3NLZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eShrZXl3b3JkKSkge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IGNzc0tleXdvcmRzW2tleXdvcmRdO1xuICAgICAgICAgIHZhciBkaXN0YW5jZSA9IGNvbXBhcmF0aXZlRGlzdGFuY2UocmdiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKGRpc3RhbmNlIDwgY3VycmVudENsb3Nlc3REaXN0YW5jZSkge1xuICAgICAgICAgICAgY3VycmVudENsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICAgICAgY3VycmVudENsb3Nlc3RLZXl3b3JkID0ga2V5d29yZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyZW50Q2xvc2VzdEtleXdvcmQ7XG4gICAgfTtcbiAgICBjb252ZXJ0LmtleXdvcmQucmdiID0gZnVuY3Rpb24oa2V5d29yZCkge1xuICAgICAgcmV0dXJuIGNzc0tleXdvcmRzW2tleXdvcmRdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IueHl6ID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICB2YXIgciA9IHJnYlswXSAvIDI1NTtcbiAgICAgIHZhciBnID0gcmdiWzFdIC8gMjU1O1xuICAgICAgdmFyIGIgPSByZ2JbMl0gLyAyNTU7XG4gICAgICByID0gciA+IDAuMDQwNDUgPyBNYXRoLnBvdygociArIDAuMDU1KSAvIDEuMDU1LCAyLjQpIDogciAvIDEyLjkyO1xuICAgICAgZyA9IGcgPiAwLjA0MDQ1ID8gTWF0aC5wb3coKGcgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSA6IGcgLyAxMi45MjtcbiAgICAgIGIgPSBiID4gMC4wNDA0NSA/IE1hdGgucG93KChiICsgMC4wNTUpIC8gMS4wNTUsIDIuNCkgOiBiIC8gMTIuOTI7XG4gICAgICB2YXIgeCA9IHIgKiAwLjQxMjQgKyBnICogMC4zNTc2ICsgYiAqIDAuMTgwNTtcbiAgICAgIHZhciB5ID0gciAqIDAuMjEyNiArIGcgKiAwLjcxNTIgKyBiICogMC4wNzIyO1xuICAgICAgdmFyIHogPSByICogMC4wMTkzICsgZyAqIDAuMTE5MiArIGIgKiAwLjk1MDU7XG4gICAgICByZXR1cm4gW3ggKiAxMDAsIHkgKiAxMDAsIHogKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IubGFiID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICB2YXIgeHl6ID0gY29udmVydC5yZ2IueHl6KHJnYik7XG4gICAgICB2YXIgeCA9IHh5elswXTtcbiAgICAgIHZhciB5ID0geHl6WzFdO1xuICAgICAgdmFyIHogPSB4eXpbMl07XG4gICAgICB2YXIgbDtcbiAgICAgIHZhciBhO1xuICAgICAgdmFyIGI7XG4gICAgICB4IC89IDk1LjA0NztcbiAgICAgIHkgLz0gMTAwO1xuICAgICAgeiAvPSAxMDguODgzO1xuICAgICAgeCA9IHggPiA4ODU2ZS02ID8gTWF0aC5wb3coeCwgMSAvIDMpIDogNy43ODcgKiB4ICsgMTYgLyAxMTY7XG4gICAgICB5ID0geSA+IDg4NTZlLTYgPyBNYXRoLnBvdyh5LCAxIC8gMykgOiA3Ljc4NyAqIHkgKyAxNiAvIDExNjtcbiAgICAgIHogPSB6ID4gODg1NmUtNiA/IE1hdGgucG93KHosIDEgLyAzKSA6IDcuNzg3ICogeiArIDE2IC8gMTE2O1xuICAgICAgbCA9IDExNiAqIHkgLSAxNjtcbiAgICAgIGEgPSA1MDAgKiAoeCAtIHkpO1xuICAgICAgYiA9IDIwMCAqICh5IC0geik7XG4gICAgICByZXR1cm4gW2wsIGEsIGJdO1xuICAgIH07XG4gICAgY29udmVydC5oc2wucmdiID0gZnVuY3Rpb24oaHNsKSB7XG4gICAgICB2YXIgaCA9IGhzbFswXSAvIDM2MDtcbiAgICAgIHZhciBzID0gaHNsWzFdIC8gMTAwO1xuICAgICAgdmFyIGwgPSBoc2xbMl0gLyAxMDA7XG4gICAgICB2YXIgdDE7XG4gICAgICB2YXIgdDI7XG4gICAgICB2YXIgdDM7XG4gICAgICB2YXIgcmdiO1xuICAgICAgdmFyIHZhbDtcbiAgICAgIGlmIChzID09PSAwKSB7XG4gICAgICAgIHZhbCA9IGwgKiAyNTU7XG4gICAgICAgIHJldHVybiBbdmFsLCB2YWwsIHZhbF07XG4gICAgICB9XG4gICAgICBpZiAobCA8IDAuNSkge1xuICAgICAgICB0MiA9IGwgKiAoMSArIHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdDIgPSBsICsgcyAtIGwgKiBzO1xuICAgICAgfVxuICAgICAgdDEgPSAyICogbCAtIHQyO1xuICAgICAgcmdiID0gWzAsIDAsIDBdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgdDMgPSBoICsgMSAvIDMgKiAtKGkgLSAxKTtcbiAgICAgICAgaWYgKHQzIDwgMCkge1xuICAgICAgICAgIHQzKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHQzID4gMSkge1xuICAgICAgICAgIHQzLS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKDYgKiB0MyA8IDEpIHtcbiAgICAgICAgICB2YWwgPSB0MSArICh0MiAtIHQxKSAqIDYgKiB0MztcbiAgICAgICAgfSBlbHNlIGlmICgyICogdDMgPCAxKSB7XG4gICAgICAgICAgdmFsID0gdDI7XG4gICAgICAgIH0gZWxzZSBpZiAoMyAqIHQzIDwgMikge1xuICAgICAgICAgIHZhbCA9IHQxICsgKHQyIC0gdDEpICogKDIgLyAzIC0gdDMpICogNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWwgPSB0MTtcbiAgICAgICAgfVxuICAgICAgICByZ2JbaV0gPSB2YWwgKiAyNTU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmdiO1xuICAgIH07XG4gICAgY29udmVydC5oc2wuaHN2ID0gZnVuY3Rpb24oaHNsKSB7XG4gICAgICB2YXIgaCA9IGhzbFswXTtcbiAgICAgIHZhciBzID0gaHNsWzFdIC8gMTAwO1xuICAgICAgdmFyIGwgPSBoc2xbMl0gLyAxMDA7XG4gICAgICB2YXIgc21pbiA9IHM7XG4gICAgICB2YXIgbG1pbiA9IE1hdGgubWF4KGwsIDAuMDEpO1xuICAgICAgdmFyIHN2O1xuICAgICAgdmFyIHY7XG4gICAgICBsICo9IDI7XG4gICAgICBzICo9IGwgPD0gMSA/IGwgOiAyIC0gbDtcbiAgICAgIHNtaW4gKj0gbG1pbiA8PSAxID8gbG1pbiA6IDIgLSBsbWluO1xuICAgICAgdiA9IChsICsgcykgLyAyO1xuICAgICAgc3YgPSBsID09PSAwID8gMiAqIHNtaW4gLyAobG1pbiArIHNtaW4pIDogMiAqIHMgLyAobCArIHMpO1xuICAgICAgcmV0dXJuIFtoLCBzdiAqIDEwMCwgdiAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0Lmhzdi5yZ2IgPSBmdW5jdGlvbihoc3YpIHtcbiAgICAgIHZhciBoID0gaHN2WzBdIC8gNjA7XG4gICAgICB2YXIgcyA9IGhzdlsxXSAvIDEwMDtcbiAgICAgIHZhciB2ID0gaHN2WzJdIC8gMTAwO1xuICAgICAgdmFyIGhpID0gTWF0aC5mbG9vcihoKSAlIDY7XG4gICAgICB2YXIgZiA9IGggLSBNYXRoLmZsb29yKGgpO1xuICAgICAgdmFyIHAgPSAyNTUgKiB2ICogKDEgLSBzKTtcbiAgICAgIHZhciBxID0gMjU1ICogdiAqICgxIC0gcyAqIGYpO1xuICAgICAgdmFyIHQgPSAyNTUgKiB2ICogKDEgLSBzICogKDEgLSBmKSk7XG4gICAgICB2ICo9IDI1NTtcbiAgICAgIHN3aXRjaCAoaGkpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBbdiwgdCwgcF07XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXR1cm4gW3EsIHYsIHBdO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcmV0dXJuIFtwLCB2LCB0XTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiBbcCwgcSwgdl07XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gW3QsIHAsIHZdO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIFt2LCBwLCBxXTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnZlcnQuaHN2LmhzbCA9IGZ1bmN0aW9uKGhzdikge1xuICAgICAgdmFyIGggPSBoc3ZbMF07XG4gICAgICB2YXIgcyA9IGhzdlsxXSAvIDEwMDtcbiAgICAgIHZhciB2ID0gaHN2WzJdIC8gMTAwO1xuICAgICAgdmFyIHZtaW4gPSBNYXRoLm1heCh2LCAwLjAxKTtcbiAgICAgIHZhciBsbWluO1xuICAgICAgdmFyIHNsO1xuICAgICAgdmFyIGw7XG4gICAgICBsID0gKDIgLSBzKSAqIHY7XG4gICAgICBsbWluID0gKDIgLSBzKSAqIHZtaW47XG4gICAgICBzbCA9IHMgKiB2bWluO1xuICAgICAgc2wgLz0gbG1pbiA8PSAxID8gbG1pbiA6IDIgLSBsbWluO1xuICAgICAgc2wgPSBzbCB8fCAwO1xuICAgICAgbCAvPSAyO1xuICAgICAgcmV0dXJuIFtoLCBzbCAqIDEwMCwgbCAqIDEwMF07XG4gICAgfTtcbiAgICBjb252ZXJ0Lmh3Yi5yZ2IgPSBmdW5jdGlvbihod2IpIHtcbiAgICAgIHZhciBoID0gaHdiWzBdIC8gMzYwO1xuICAgICAgdmFyIHdoID0gaHdiWzFdIC8gMTAwO1xuICAgICAgdmFyIGJsID0gaHdiWzJdIC8gMTAwO1xuICAgICAgdmFyIHJhdGlvID0gd2ggKyBibDtcbiAgICAgIHZhciBpO1xuICAgICAgdmFyIHY7XG4gICAgICB2YXIgZjtcbiAgICAgIHZhciBuO1xuICAgICAgaWYgKHJhdGlvID4gMSkge1xuICAgICAgICB3aCAvPSByYXRpbztcbiAgICAgICAgYmwgLz0gcmF0aW87XG4gICAgICB9XG4gICAgICBpID0gTWF0aC5mbG9vcig2ICogaCk7XG4gICAgICB2ID0gMSAtIGJsO1xuICAgICAgZiA9IDYgKiBoIC0gaTtcbiAgICAgIGlmICgoaSAmIDEpICE9PSAwKSB7XG4gICAgICAgIGYgPSAxIC0gZjtcbiAgICAgIH1cbiAgICAgIG4gPSB3aCArIGYgKiAodiAtIHdoKTtcbiAgICAgIHZhciByO1xuICAgICAgdmFyIGc7XG4gICAgICB2YXIgYjtcbiAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICBjYXNlIDY6XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICByID0gdjtcbiAgICAgICAgICBnID0gbjtcbiAgICAgICAgICBiID0gd2g7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICByID0gbjtcbiAgICAgICAgICBnID0gdjtcbiAgICAgICAgICBiID0gd2g7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByID0gd2g7XG4gICAgICAgICAgZyA9IHY7XG4gICAgICAgICAgYiA9IG47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByID0gd2g7XG4gICAgICAgICAgZyA9IG47XG4gICAgICAgICAgYiA9IHY7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByID0gbjtcbiAgICAgICAgICBnID0gd2g7XG4gICAgICAgICAgYiA9IHY7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByID0gdjtcbiAgICAgICAgICBnID0gd2g7XG4gICAgICAgICAgYiA9IG47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xuICAgIH07XG4gICAgY29udmVydC5jbXlrLnJnYiA9IGZ1bmN0aW9uKGNteWspIHtcbiAgICAgIHZhciBjID0gY215a1swXSAvIDEwMDtcbiAgICAgIHZhciBtID0gY215a1sxXSAvIDEwMDtcbiAgICAgIHZhciB5ID0gY215a1syXSAvIDEwMDtcbiAgICAgIHZhciBrID0gY215a1szXSAvIDEwMDtcbiAgICAgIHZhciByO1xuICAgICAgdmFyIGc7XG4gICAgICB2YXIgYjtcbiAgICAgIHIgPSAxIC0gTWF0aC5taW4oMSwgYyAqICgxIC0gaykgKyBrKTtcbiAgICAgIGcgPSAxIC0gTWF0aC5taW4oMSwgbSAqICgxIC0gaykgKyBrKTtcbiAgICAgIGIgPSAxIC0gTWF0aC5taW4oMSwgeSAqICgxIC0gaykgKyBrKTtcbiAgICAgIHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG4gICAgfTtcbiAgICBjb252ZXJ0Lnh5ei5yZ2IgPSBmdW5jdGlvbih4eXopIHtcbiAgICAgIHZhciB4ID0geHl6WzBdIC8gMTAwO1xuICAgICAgdmFyIHkgPSB4eXpbMV0gLyAxMDA7XG4gICAgICB2YXIgeiA9IHh5elsyXSAvIDEwMDtcbiAgICAgIHZhciByO1xuICAgICAgdmFyIGc7XG4gICAgICB2YXIgYjtcbiAgICAgIHIgPSB4ICogMy4yNDA2ICsgeSAqIC0xLjUzNzIgKyB6ICogLTAuNDk4NjtcbiAgICAgIGcgPSB4ICogLTAuOTY4OSArIHkgKiAxLjg3NTggKyB6ICogMC4wNDE1O1xuICAgICAgYiA9IHggKiAwLjA1NTcgKyB5ICogLTAuMjA0ICsgeiAqIDEuMDU3O1xuICAgICAgciA9IHIgPiAzMTMwOGUtNyA/IDEuMDU1ICogTWF0aC5wb3cociwgMSAvIDIuNCkgLSAwLjA1NSA6IHIgKiAxMi45MjtcbiAgICAgIGcgPSBnID4gMzEzMDhlLTcgPyAxLjA1NSAqIE1hdGgucG93KGcsIDEgLyAyLjQpIC0gMC4wNTUgOiBnICogMTIuOTI7XG4gICAgICBiID0gYiA+IDMxMzA4ZS03ID8gMS4wNTUgKiBNYXRoLnBvdyhiLCAxIC8gMi40KSAtIDAuMDU1IDogYiAqIDEyLjkyO1xuICAgICAgciA9IE1hdGgubWluKE1hdGgubWF4KDAsIHIpLCAxKTtcbiAgICAgIGcgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBnKSwgMSk7XG4gICAgICBiID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgYiksIDEpO1xuICAgICAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbiAgICB9O1xuICAgIGNvbnZlcnQueHl6LmxhYiA9IGZ1bmN0aW9uKHh5eikge1xuICAgICAgdmFyIHggPSB4eXpbMF07XG4gICAgICB2YXIgeSA9IHh5elsxXTtcbiAgICAgIHZhciB6ID0geHl6WzJdO1xuICAgICAgdmFyIGw7XG4gICAgICB2YXIgYTtcbiAgICAgIHZhciBiO1xuICAgICAgeCAvPSA5NS4wNDc7XG4gICAgICB5IC89IDEwMDtcbiAgICAgIHogLz0gMTA4Ljg4MztcbiAgICAgIHggPSB4ID4gODg1NmUtNiA/IE1hdGgucG93KHgsIDEgLyAzKSA6IDcuNzg3ICogeCArIDE2IC8gMTE2O1xuICAgICAgeSA9IHkgPiA4ODU2ZS02ID8gTWF0aC5wb3coeSwgMSAvIDMpIDogNy43ODcgKiB5ICsgMTYgLyAxMTY7XG4gICAgICB6ID0geiA+IDg4NTZlLTYgPyBNYXRoLnBvdyh6LCAxIC8gMykgOiA3Ljc4NyAqIHogKyAxNiAvIDExNjtcbiAgICAgIGwgPSAxMTYgKiB5IC0gMTY7XG4gICAgICBhID0gNTAwICogKHggLSB5KTtcbiAgICAgIGIgPSAyMDAgKiAoeSAtIHopO1xuICAgICAgcmV0dXJuIFtsLCBhLCBiXTtcbiAgICB9O1xuICAgIGNvbnZlcnQubGFiLnh5eiA9IGZ1bmN0aW9uKGxhYikge1xuICAgICAgdmFyIGwgPSBsYWJbMF07XG4gICAgICB2YXIgYSA9IGxhYlsxXTtcbiAgICAgIHZhciBiID0gbGFiWzJdO1xuICAgICAgdmFyIHg7XG4gICAgICB2YXIgeTtcbiAgICAgIHZhciB6O1xuICAgICAgeSA9IChsICsgMTYpIC8gMTE2O1xuICAgICAgeCA9IGEgLyA1MDAgKyB5O1xuICAgICAgeiA9IHkgLSBiIC8gMjAwO1xuICAgICAgdmFyIHkyID0gTWF0aC5wb3coeSwgMyk7XG4gICAgICB2YXIgeDIgPSBNYXRoLnBvdyh4LCAzKTtcbiAgICAgIHZhciB6MiA9IE1hdGgucG93KHosIDMpO1xuICAgICAgeSA9IHkyID4gODg1NmUtNiA/IHkyIDogKHkgLSAxNiAvIDExNikgLyA3Ljc4NztcbiAgICAgIHggPSB4MiA+IDg4NTZlLTYgPyB4MiA6ICh4IC0gMTYgLyAxMTYpIC8gNy43ODc7XG4gICAgICB6ID0gejIgPiA4ODU2ZS02ID8gejIgOiAoeiAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuICAgICAgeCAqPSA5NS4wNDc7XG4gICAgICB5ICo9IDEwMDtcbiAgICAgIHogKj0gMTA4Ljg4MztcbiAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfTtcbiAgICBjb252ZXJ0LmxhYi5sY2ggPSBmdW5jdGlvbihsYWIpIHtcbiAgICAgIHZhciBsID0gbGFiWzBdO1xuICAgICAgdmFyIGEgPSBsYWJbMV07XG4gICAgICB2YXIgYiA9IGxhYlsyXTtcbiAgICAgIHZhciBocjtcbiAgICAgIHZhciBoO1xuICAgICAgdmFyIGM7XG4gICAgICBociA9IE1hdGguYXRhbjIoYiwgYSk7XG4gICAgICBoID0gaHIgKiAzNjAgLyAyIC8gTWF0aC5QSTtcbiAgICAgIGlmIChoIDwgMCkge1xuICAgICAgICBoICs9IDM2MDtcbiAgICAgIH1cbiAgICAgIGMgPSBNYXRoLnNxcnQoYSAqIGEgKyBiICogYik7XG4gICAgICByZXR1cm4gW2wsIGMsIGhdO1xuICAgIH07XG4gICAgY29udmVydC5sY2gubGFiID0gZnVuY3Rpb24obGNoKSB7XG4gICAgICB2YXIgbCA9IGxjaFswXTtcbiAgICAgIHZhciBjID0gbGNoWzFdO1xuICAgICAgdmFyIGggPSBsY2hbMl07XG4gICAgICB2YXIgYTtcbiAgICAgIHZhciBiO1xuICAgICAgdmFyIGhyO1xuICAgICAgaHIgPSBoIC8gMzYwICogMiAqIE1hdGguUEk7XG4gICAgICBhID0gYyAqIE1hdGguY29zKGhyKTtcbiAgICAgIGIgPSBjICogTWF0aC5zaW4oaHIpO1xuICAgICAgcmV0dXJuIFtsLCBhLCBiXTtcbiAgICB9O1xuICAgIGNvbnZlcnQucmdiLmFuc2kxNiA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIHZhciByID0gYXJnc1swXTtcbiAgICAgIHZhciBnID0gYXJnc1sxXTtcbiAgICAgIHZhciBiID0gYXJnc1syXTtcbiAgICAgIHZhciB2YWx1ZSA9IDEgaW4gYXJndW1lbnRzID8gYXJndW1lbnRzWzFdIDogY29udmVydC5yZ2IuaHN2KGFyZ3MpWzJdO1xuICAgICAgdmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlIC8gNTApO1xuICAgICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICAgIHJldHVybiAzMDtcbiAgICAgIH1cbiAgICAgIHZhciBhbnNpID0gMzAgKyAoTWF0aC5yb3VuZChiIC8gMjU1KSA8PCAyIHwgTWF0aC5yb3VuZChnIC8gMjU1KSA8PCAxIHwgTWF0aC5yb3VuZChyIC8gMjU1KSk7XG4gICAgICBpZiAodmFsdWUgPT09IDIpIHtcbiAgICAgICAgYW5zaSArPSA2MDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhbnNpO1xuICAgIH07XG4gICAgY29udmVydC5oc3YuYW5zaTE2ID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgcmV0dXJuIGNvbnZlcnQucmdiLmFuc2kxNihjb252ZXJ0Lmhzdi5yZ2IoYXJncyksIGFyZ3NbMl0pO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuYW5zaTI1NiA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIHZhciByID0gYXJnc1swXTtcbiAgICAgIHZhciBnID0gYXJnc1sxXTtcbiAgICAgIHZhciBiID0gYXJnc1syXTtcbiAgICAgIGlmIChyID09PSBnICYmIGcgPT09IGIpIHtcbiAgICAgICAgaWYgKHIgPCA4KSB7XG4gICAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyID4gMjQ4KSB7XG4gICAgICAgICAgcmV0dXJuIDIzMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgociAtIDgpIC8gMjQ3ICogMjQpICsgMjMyO1xuICAgICAgfVxuICAgICAgdmFyIGFuc2kgPSAxNiArIDM2ICogTWF0aC5yb3VuZChyIC8gMjU1ICogNSkgKyA2ICogTWF0aC5yb3VuZChnIC8gMjU1ICogNSkgKyBNYXRoLnJvdW5kKGIgLyAyNTUgKiA1KTtcbiAgICAgIHJldHVybiBhbnNpO1xuICAgIH07XG4gICAgY29udmVydC5hbnNpMTYucmdiID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgdmFyIGNvbG9yID0gYXJncyAlIDEwO1xuICAgICAgaWYgKGNvbG9yID09PSAwIHx8IGNvbG9yID09PSA3KSB7XG4gICAgICAgIGlmIChhcmdzID4gNTApIHtcbiAgICAgICAgICBjb2xvciArPSAzLjU7XG4gICAgICAgIH1cbiAgICAgICAgY29sb3IgPSBjb2xvciAvIDEwLjUgKiAyNTU7XG4gICAgICAgIHJldHVybiBbY29sb3IsIGNvbG9yLCBjb2xvcl07XG4gICAgICB9XG4gICAgICB2YXIgbXVsdCA9ICh+fihhcmdzID4gNTApICsgMSkgKiAwLjU7XG4gICAgICB2YXIgciA9IChjb2xvciAmIDEpICogbXVsdCAqIDI1NTtcbiAgICAgIHZhciBnID0gKGNvbG9yID4+IDEgJiAxKSAqIG11bHQgKiAyNTU7XG4gICAgICB2YXIgYiA9IChjb2xvciA+PiAyICYgMSkgKiBtdWx0ICogMjU1O1xuICAgICAgcmV0dXJuIFtyLCBnLCBiXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuYW5zaTI1Ni5yZ2IgPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICBpZiAoYXJncyA+PSAyMzIpIHtcbiAgICAgICAgdmFyIGMgPSAoYXJncyAtIDIzMikgKiAxMCArIDg7XG4gICAgICAgIHJldHVybiBbYywgYywgY107XG4gICAgICB9XG4gICAgICBhcmdzIC09IDE2O1xuICAgICAgdmFyIHJlbTtcbiAgICAgIHZhciByID0gTWF0aC5mbG9vcihhcmdzIC8gMzYpIC8gNSAqIDI1NTtcbiAgICAgIHZhciBnID0gTWF0aC5mbG9vcigocmVtID0gYXJncyAlIDM2KSAvIDYpIC8gNSAqIDI1NTtcbiAgICAgIHZhciBiID0gcmVtICUgNiAvIDUgKiAyNTU7XG4gICAgICByZXR1cm4gW3IsIGcsIGJdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuaGV4ID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgdmFyIGludGVnZXIgPSAoKE1hdGgucm91bmQoYXJnc1swXSkgJiAyNTUpIDw8IDE2KSArICgoTWF0aC5yb3VuZChhcmdzWzFdKSAmIDI1NSkgPDwgOCkgKyAoTWF0aC5yb3VuZChhcmdzWzJdKSAmIDI1NSk7XG4gICAgICB2YXIgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbiAgICAgIHJldHVybiBcIjAwMDAwMFwiLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbiAgICB9O1xuICAgIGNvbnZlcnQuaGV4LnJnYiA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIHZhciBtYXRjaCA9IGFyZ3MudG9TdHJpbmcoMTYpLm1hdGNoKC9bYS1mMC05XXs2fXxbYS1mMC05XXszfS9pKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIFswLCAwLCAwXTtcbiAgICAgIH1cbiAgICAgIHZhciBjb2xvclN0cmluZyA9IG1hdGNoWzBdO1xuICAgICAgaWYgKG1hdGNoWzBdLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBjb2xvclN0cmluZyA9IGNvbG9yU3RyaW5nLnNwbGl0KFwiXCIpLm1hcChmdW5jdGlvbihjaGFyKSB7XG4gICAgICAgICAgcmV0dXJuIGNoYXIgKyBjaGFyO1xuICAgICAgICB9KS5qb2luKFwiXCIpO1xuICAgICAgfVxuICAgICAgdmFyIGludGVnZXIgPSBwYXJzZUludChjb2xvclN0cmluZywgMTYpO1xuICAgICAgdmFyIHIgPSBpbnRlZ2VyID4+IDE2ICYgMjU1O1xuICAgICAgdmFyIGcgPSBpbnRlZ2VyID4+IDggJiAyNTU7XG4gICAgICB2YXIgYiA9IGludGVnZXIgJiAyNTU7XG4gICAgICByZXR1cm4gW3IsIGcsIGJdO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuaGNnID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICB2YXIgciA9IHJnYlswXSAvIDI1NTtcbiAgICAgIHZhciBnID0gcmdiWzFdIC8gMjU1O1xuICAgICAgdmFyIGIgPSByZ2JbMl0gLyAyNTU7XG4gICAgICB2YXIgbWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpO1xuICAgICAgdmFyIG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTtcbiAgICAgIHZhciBjaHJvbWEgPSBtYXggLSBtaW47XG4gICAgICB2YXIgZ3JheXNjYWxlO1xuICAgICAgdmFyIGh1ZTtcbiAgICAgIGlmIChjaHJvbWEgPCAxKSB7XG4gICAgICAgIGdyYXlzY2FsZSA9IG1pbiAvICgxIC0gY2hyb21hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyYXlzY2FsZSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2hyb21hIDw9IDApIHtcbiAgICAgICAgaHVlID0gMDtcbiAgICAgIH0gZWxzZSBpZiAobWF4ID09PSByKSB7XG4gICAgICAgIGh1ZSA9IChnIC0gYikgLyBjaHJvbWEgJSA2O1xuICAgICAgfSBlbHNlIGlmIChtYXggPT09IGcpIHtcbiAgICAgICAgaHVlID0gMiArIChiIC0gcikgLyBjaHJvbWE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBodWUgPSA0ICsgKHIgLSBnKSAvIGNocm9tYSArIDQ7XG4gICAgICB9XG4gICAgICBodWUgLz0gNjtcbiAgICAgIGh1ZSAlPSAxO1xuICAgICAgcmV0dXJuIFtodWUgKiAzNjAsIGNocm9tYSAqIDEwMCwgZ3JheXNjYWxlICogMTAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuaHNsLmhjZyA9IGZ1bmN0aW9uKGhzbCkge1xuICAgICAgdmFyIHMgPSBoc2xbMV0gLyAxMDA7XG4gICAgICB2YXIgbCA9IGhzbFsyXSAvIDEwMDtcbiAgICAgIHZhciBjID0gMTtcbiAgICAgIHZhciBmID0gMDtcbiAgICAgIGlmIChsIDwgMC41KSB7XG4gICAgICAgIGMgPSAyICogcyAqIGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjID0gMiAqIHMgKiAoMSAtIGwpO1xuICAgICAgfVxuICAgICAgaWYgKGMgPCAxKSB7XG4gICAgICAgIGYgPSAobCAtIDAuNSAqIGMpIC8gKDEgLSBjKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbaHNsWzBdLCBjICogMTAwLCBmICogMTAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuaHN2LmhjZyA9IGZ1bmN0aW9uKGhzdikge1xuICAgICAgdmFyIHMgPSBoc3ZbMV0gLyAxMDA7XG4gICAgICB2YXIgdiA9IGhzdlsyXSAvIDEwMDtcbiAgICAgIHZhciBjID0gcyAqIHY7XG4gICAgICB2YXIgZiA9IDA7XG4gICAgICBpZiAoYyA8IDEpIHtcbiAgICAgICAgZiA9ICh2IC0gYykgLyAoMSAtIGMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtoc3ZbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5oY2cucmdiID0gZnVuY3Rpb24oaGNnKSB7XG4gICAgICB2YXIgaCA9IGhjZ1swXSAvIDM2MDtcbiAgICAgIHZhciBjID0gaGNnWzFdIC8gMTAwO1xuICAgICAgdmFyIGcgPSBoY2dbMl0gLyAxMDA7XG4gICAgICBpZiAoYyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW2cgKiAyNTUsIGcgKiAyNTUsIGcgKiAyNTVdO1xuICAgICAgfVxuICAgICAgdmFyIHB1cmUgPSBbMCwgMCwgMF07XG4gICAgICB2YXIgaGkgPSBoICUgMSAqIDY7XG4gICAgICB2YXIgdiA9IGhpICUgMTtcbiAgICAgIHZhciB3ID0gMSAtIHY7XG4gICAgICB2YXIgbWcgPSAwO1xuICAgICAgc3dpdGNoIChNYXRoLmZsb29yKGhpKSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcHVyZVswXSA9IDE7XG4gICAgICAgICAgcHVyZVsxXSA9IHY7XG4gICAgICAgICAgcHVyZVsyXSA9IDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBwdXJlWzBdID0gdztcbiAgICAgICAgICBwdXJlWzFdID0gMTtcbiAgICAgICAgICBwdXJlWzJdID0gMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHB1cmVbMF0gPSAwO1xuICAgICAgICAgIHB1cmVbMV0gPSAxO1xuICAgICAgICAgIHB1cmVbMl0gPSB2O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcHVyZVswXSA9IDA7XG4gICAgICAgICAgcHVyZVsxXSA9IHc7XG4gICAgICAgICAgcHVyZVsyXSA9IDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBwdXJlWzBdID0gdjtcbiAgICAgICAgICBwdXJlWzFdID0gMDtcbiAgICAgICAgICBwdXJlWzJdID0gMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwdXJlWzBdID0gMTtcbiAgICAgICAgICBwdXJlWzFdID0gMDtcbiAgICAgICAgICBwdXJlWzJdID0gdztcbiAgICAgIH1cbiAgICAgIG1nID0gKDEgLSBjKSAqIGc7XG4gICAgICByZXR1cm4gWyhjICogcHVyZVswXSArIG1nKSAqIDI1NSwgKGMgKiBwdXJlWzFdICsgbWcpICogMjU1LCAoYyAqIHB1cmVbMl0gKyBtZykgKiAyNTVdO1xuICAgIH07XG4gICAgY29udmVydC5oY2cuaHN2ID0gZnVuY3Rpb24oaGNnKSB7XG4gICAgICB2YXIgYyA9IGhjZ1sxXSAvIDEwMDtcbiAgICAgIHZhciBnID0gaGNnWzJdIC8gMTAwO1xuICAgICAgdmFyIHYgPSBjICsgZyAqICgxIC0gYyk7XG4gICAgICB2YXIgZiA9IDA7XG4gICAgICBpZiAodiA+IDApIHtcbiAgICAgICAgZiA9IGMgLyB2O1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtoY2dbMF0sIGYgKiAxMDAsIHYgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5oY2cuaHNsID0gZnVuY3Rpb24oaGNnKSB7XG4gICAgICB2YXIgYyA9IGhjZ1sxXSAvIDEwMDtcbiAgICAgIHZhciBnID0gaGNnWzJdIC8gMTAwO1xuICAgICAgdmFyIGwgPSBnICogKDEgLSBjKSArIDAuNSAqIGM7XG4gICAgICB2YXIgcyA9IDA7XG4gICAgICBpZiAobCA+IDAgJiYgbCA8IDAuNSkge1xuICAgICAgICBzID0gYyAvICgyICogbCk7XG4gICAgICB9IGVsc2UgaWYgKGwgPj0gMC41ICYmIGwgPCAxKSB7XG4gICAgICAgIHMgPSBjIC8gKDIgKiAoMSAtIGwpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbaGNnWzBdLCBzICogMTAwLCBsICogMTAwXTtcbiAgICB9O1xuICAgIGNvbnZlcnQuaGNnLmh3YiA9IGZ1bmN0aW9uKGhjZykge1xuICAgICAgdmFyIGMgPSBoY2dbMV0gLyAxMDA7XG4gICAgICB2YXIgZyA9IGhjZ1syXSAvIDEwMDtcbiAgICAgIHZhciB2ID0gYyArIGcgKiAoMSAtIGMpO1xuICAgICAgcmV0dXJuIFtoY2dbMF0sICh2IC0gYykgKiAxMDAsICgxIC0gdikgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5od2IuaGNnID0gZnVuY3Rpb24oaHdiKSB7XG4gICAgICB2YXIgdyA9IGh3YlsxXSAvIDEwMDtcbiAgICAgIHZhciBiID0gaHdiWzJdIC8gMTAwO1xuICAgICAgdmFyIHYgPSAxIC0gYjtcbiAgICAgIHZhciBjID0gdiAtIHc7XG4gICAgICB2YXIgZyA9IDA7XG4gICAgICBpZiAoYyA8IDEpIHtcbiAgICAgICAgZyA9ICh2IC0gYykgLyAoMSAtIGMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtod2JbMF0sIGMgKiAxMDAsIGcgKiAxMDBdO1xuICAgIH07XG4gICAgY29udmVydC5hcHBsZS5yZ2IgPSBmdW5jdGlvbihhcHBsZSkge1xuICAgICAgcmV0dXJuIFthcHBsZVswXSAvIDY1NTM1ICogMjU1LCBhcHBsZVsxXSAvIDY1NTM1ICogMjU1LCBhcHBsZVsyXSAvIDY1NTM1ICogMjU1XTtcbiAgICB9O1xuICAgIGNvbnZlcnQucmdiLmFwcGxlID0gZnVuY3Rpb24ocmdiKSB7XG4gICAgICByZXR1cm4gW3JnYlswXSAvIDI1NSAqIDY1NTM1LCByZ2JbMV0gLyAyNTUgKiA2NTUzNSwgcmdiWzJdIC8gMjU1ICogNjU1MzVdO1xuICAgIH07XG4gICAgY29udmVydC5ncmF5LnJnYiA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIHJldHVybiBbYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NSwgYXJnc1swXSAvIDEwMCAqIDI1NV07XG4gICAgfTtcbiAgICBjb252ZXJ0LmdyYXkuaHNsID0gY29udmVydC5ncmF5LmhzdiA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIHJldHVybiBbMCwgMCwgYXJnc1swXV07XG4gICAgfTtcbiAgICBjb252ZXJ0LmdyYXkuaHdiID0gZnVuY3Rpb24oZ3JheSkge1xuICAgICAgcmV0dXJuIFswLCAxMDAsIGdyYXlbMF1dO1xuICAgIH07XG4gICAgY29udmVydC5ncmF5LmNteWsgPSBmdW5jdGlvbihncmF5KSB7XG4gICAgICByZXR1cm4gWzAsIDAsIDAsIGdyYXlbMF1dO1xuICAgIH07XG4gICAgY29udmVydC5ncmF5LmxhYiA9IGZ1bmN0aW9uKGdyYXkpIHtcbiAgICAgIHJldHVybiBbZ3JheVswXSwgMCwgMF07XG4gICAgfTtcbiAgICBjb252ZXJ0LmdyYXkuaGV4ID0gZnVuY3Rpb24oZ3JheSkge1xuICAgICAgdmFyIHZhbCA9IE1hdGgucm91bmQoZ3JheVswXSAvIDEwMCAqIDI1NSkgJiAyNTU7XG4gICAgICB2YXIgaW50ZWdlciA9ICh2YWwgPDwgMTYpICsgKHZhbCA8PCA4KSArIHZhbDtcbiAgICAgIHZhciBzdHJpbmcgPSBpbnRlZ2VyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgcmV0dXJuIFwiMDAwMDAwXCIuc3Vic3RyaW5nKHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xuICAgIH07XG4gICAgY29udmVydC5yZ2IuZ3JheSA9IGZ1bmN0aW9uKHJnYikge1xuICAgICAgdmFyIHZhbCA9IChyZ2JbMF0gKyByZ2JbMV0gKyByZ2JbMl0pIC8gMztcbiAgICAgIHJldHVybiBbdmFsIC8gMjU1ICogMTAwXTtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3JvdXRlID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L3JvdXRlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgY29udmVyc2lvbnMgPSByZXF1aXJlX2NvbnZlcnNpb25zKCk7XG4gICAgZnVuY3Rpb24gYnVpbGRHcmFwaCgpIHtcbiAgICAgIHZhciBncmFwaCA9IHt9O1xuICAgICAgdmFyIG1vZGVscyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zKTtcbiAgICAgIGZvciAodmFyIGxlbiA9IG1vZGVscy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgZ3JhcGhbbW9kZWxzW2ldXSA9IHtcbiAgICAgICAgICBkaXN0YW5jZTogLTEsXG4gICAgICAgICAgcGFyZW50OiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gZ3JhcGg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlcml2ZUJGUyhmcm9tTW9kZWwpIHtcbiAgICAgIHZhciBncmFwaCA9IGJ1aWxkR3JhcGgoKTtcbiAgICAgIHZhciBxdWV1ZSA9IFtmcm9tTW9kZWxdO1xuICAgICAgZ3JhcGhbZnJvbU1vZGVsXS5kaXN0YW5jZSA9IDA7XG4gICAgICB3aGlsZSAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHZhciBjdXJyZW50ID0gcXVldWUucG9wKCk7XG4gICAgICAgIHZhciBhZGphY2VudHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9uc1tjdXJyZW50XSk7XG4gICAgICAgIGZvciAodmFyIGxlbiA9IGFkamFjZW50cy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICB2YXIgYWRqYWNlbnQgPSBhZGphY2VudHNbaV07XG4gICAgICAgICAgdmFyIG5vZGUgPSBncmFwaFthZGphY2VudF07XG4gICAgICAgICAgaWYgKG5vZGUuZGlzdGFuY2UgPT09IC0xKSB7XG4gICAgICAgICAgICBub2RlLmRpc3RhbmNlID0gZ3JhcGhbY3VycmVudF0uZGlzdGFuY2UgKyAxO1xuICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSBjdXJyZW50O1xuICAgICAgICAgICAgcXVldWUudW5zaGlmdChhZGphY2VudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZ3JhcGg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxpbmsoZnJvbSwgdG8pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHJldHVybiB0byhmcm9tKGFyZ3MpKTtcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyYXBDb252ZXJzaW9uKHRvTW9kZWwsIGdyYXBoKSB7XG4gICAgICB2YXIgcGF0aCA9IFtncmFwaFt0b01vZGVsXS5wYXJlbnQsIHRvTW9kZWxdO1xuICAgICAgdmFyIGZuID0gY29udmVyc2lvbnNbZ3JhcGhbdG9Nb2RlbF0ucGFyZW50XVt0b01vZGVsXTtcbiAgICAgIHZhciBjdXIgPSBncmFwaFt0b01vZGVsXS5wYXJlbnQ7XG4gICAgICB3aGlsZSAoZ3JhcGhbY3VyXS5wYXJlbnQpIHtcbiAgICAgICAgcGF0aC51bnNoaWZ0KGdyYXBoW2N1cl0ucGFyZW50KTtcbiAgICAgICAgZm4gPSBsaW5rKGNvbnZlcnNpb25zW2dyYXBoW2N1cl0ucGFyZW50XVtjdXJdLCBmbik7XG4gICAgICAgIGN1ciA9IGdyYXBoW2N1cl0ucGFyZW50O1xuICAgICAgfVxuICAgICAgZm4uY29udmVyc2lvbiA9IHBhdGg7XG4gICAgICByZXR1cm4gZm47XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKGZyb21Nb2RlbCkge1xuICAgICAgdmFyIGdyYXBoID0gZGVyaXZlQkZTKGZyb21Nb2RlbCk7XG4gICAgICB2YXIgY29udmVyc2lvbiA9IHt9O1xuICAgICAgdmFyIG1vZGVscyA9IE9iamVjdC5rZXlzKGdyYXBoKTtcbiAgICAgIGZvciAodmFyIGxlbiA9IG1vZGVscy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIHRvTW9kZWwgPSBtb2RlbHNbaV07XG4gICAgICAgIHZhciBub2RlID0gZ3JhcGhbdG9Nb2RlbF07XG4gICAgICAgIGlmIChub2RlLnBhcmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnZlcnNpb25bdG9Nb2RlbF0gPSB3cmFwQ29udmVyc2lvbih0b01vZGVsLCBncmFwaCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udmVyc2lvbjtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NvbG9yX2NvbnZlcnQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2NvbG9yLWNvbnZlcnQvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBjb252ZXJzaW9ucyA9IHJlcXVpcmVfY29udmVyc2lvbnMoKTtcbiAgICB2YXIgcm91dGUgPSByZXF1aXJlX3JvdXRlKCk7XG4gICAgdmFyIGNvbnZlcnQgPSB7fTtcbiAgICB2YXIgbW9kZWxzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnMpO1xuICAgIGZ1bmN0aW9uIHdyYXBSYXcoZm4pIHtcbiAgICAgIHZhciB3cmFwcGVkRm4gPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIGlmIChhcmdzID09PSB2b2lkIDAgfHwgYXJncyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbihhcmdzKTtcbiAgICAgIH07XG4gICAgICBpZiAoXCJjb252ZXJzaW9uXCIgaW4gZm4pIHtcbiAgICAgICAgd3JhcHBlZEZuLmNvbnZlcnNpb24gPSBmbi5jb252ZXJzaW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZWRGbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gd3JhcFJvdW5kZWQoZm4pIHtcbiAgICAgIHZhciB3cmFwcGVkRm4gPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIGlmIChhcmdzID09PSB2b2lkIDAgfHwgYXJncyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmbihhcmdzKTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBmb3IgKHZhciBsZW4gPSByZXN1bHQubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBNYXRoLnJvdW5kKHJlc3VsdFtpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgaWYgKFwiY29udmVyc2lvblwiIGluIGZuKSB7XG4gICAgICAgIHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVkRm47XG4gICAgfVxuICAgIG1vZGVscy5mb3JFYWNoKGZ1bmN0aW9uKGZyb21Nb2RlbCkge1xuICAgICAgY29udmVydFtmcm9tTW9kZWxdID0ge307XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFtmcm9tTW9kZWxdLCBcImNoYW5uZWxzXCIsIHtcbiAgICAgICAgdmFsdWU6IGNvbnZlcnNpb25zW2Zyb21Nb2RlbF0uY2hhbm5lbHNcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbZnJvbU1vZGVsXSwgXCJsYWJlbHNcIiwge1xuICAgICAgICB2YWx1ZTogY29udmVyc2lvbnNbZnJvbU1vZGVsXS5sYWJlbHNcbiAgICAgIH0pO1xuICAgICAgdmFyIHJvdXRlcyA9IHJvdXRlKGZyb21Nb2RlbCk7XG4gICAgICB2YXIgcm91dGVNb2RlbHMgPSBPYmplY3Qua2V5cyhyb3V0ZXMpO1xuICAgICAgcm91dGVNb2RlbHMuZm9yRWFjaChmdW5jdGlvbih0b01vZGVsKSB7XG4gICAgICAgIHZhciBmbiA9IHJvdXRlc1t0b01vZGVsXTtcbiAgICAgICAgY29udmVydFtmcm9tTW9kZWxdW3RvTW9kZWxdID0gd3JhcFJvdW5kZWQoZm4pO1xuICAgICAgICBjb252ZXJ0W2Zyb21Nb2RlbF1bdG9Nb2RlbF0ucmF3ID0gd3JhcFJhdyhmbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBjb252ZXJ0O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2Fuc2lfc3R5bGVzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9hbnNpLXN0eWxlcy9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGNvbG9yQ29udmVydCA9IHJlcXVpcmVfY29sb3JfY29udmVydCgpO1xuICAgIHZhciB3cmFwQW5zaTE2ID0gKGZuLCBvZmZzZXQpID0+IGZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgY29kZSA9IGZuLmFwcGx5KGNvbG9yQ29udmVydCwgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBgXFx4MUJbJHtjb2RlICsgb2Zmc2V0fW1gO1xuICAgIH07XG4gICAgdmFyIHdyYXBBbnNpMjU2ID0gKGZuLCBvZmZzZXQpID0+IGZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgY29kZSA9IGZuLmFwcGx5KGNvbG9yQ29udmVydCwgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBgXFx4MUJbJHszOCArIG9mZnNldH07NTske2NvZGV9bWA7XG4gICAgfTtcbiAgICB2YXIgd3JhcEFuc2kxNm0gPSAoZm4sIG9mZnNldCkgPT4gZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCByZ2IgPSBmbi5hcHBseShjb2xvckNvbnZlcnQsIGFyZ3VtZW50cyk7XG4gICAgICByZXR1cm4gYFxceDFCWyR7MzggKyBvZmZzZXR9OzI7JHtyZ2JbMF19OyR7cmdiWzFdfTske3JnYlsyXX1tYDtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGFzc2VtYmxlU3R5bGVzKCkge1xuICAgICAgY29uc3QgY29kZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICBtb2RpZmllcjoge1xuICAgICAgICAgIHJlc2V0OiBbMCwgMF0sXG4gICAgICAgICAgYm9sZDogWzEsIDIyXSxcbiAgICAgICAgICBkaW06IFsyLCAyMl0sXG4gICAgICAgICAgaXRhbGljOiBbMywgMjNdLFxuICAgICAgICAgIHVuZGVybGluZTogWzQsIDI0XSxcbiAgICAgICAgICBpbnZlcnNlOiBbNywgMjddLFxuICAgICAgICAgIGhpZGRlbjogWzgsIDI4XSxcbiAgICAgICAgICBzdHJpa2V0aHJvdWdoOiBbOSwgMjldXG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgYmxhY2s6IFszMCwgMzldLFxuICAgICAgICAgIHJlZDogWzMxLCAzOV0sXG4gICAgICAgICAgZ3JlZW46IFszMiwgMzldLFxuICAgICAgICAgIHllbGxvdzogWzMzLCAzOV0sXG4gICAgICAgICAgYmx1ZTogWzM0LCAzOV0sXG4gICAgICAgICAgbWFnZW50YTogWzM1LCAzOV0sXG4gICAgICAgICAgY3lhbjogWzM2LCAzOV0sXG4gICAgICAgICAgd2hpdGU6IFszNywgMzldLFxuICAgICAgICAgIGdyYXk6IFs5MCwgMzldLFxuICAgICAgICAgIHJlZEJyaWdodDogWzkxLCAzOV0sXG4gICAgICAgICAgZ3JlZW5CcmlnaHQ6IFs5MiwgMzldLFxuICAgICAgICAgIHllbGxvd0JyaWdodDogWzkzLCAzOV0sXG4gICAgICAgICAgYmx1ZUJyaWdodDogWzk0LCAzOV0sXG4gICAgICAgICAgbWFnZW50YUJyaWdodDogWzk1LCAzOV0sXG4gICAgICAgICAgY3lhbkJyaWdodDogWzk2LCAzOV0sXG4gICAgICAgICAgd2hpdGVCcmlnaHQ6IFs5NywgMzldXG4gICAgICAgIH0sXG4gICAgICAgIGJnQ29sb3I6IHtcbiAgICAgICAgICBiZ0JsYWNrOiBbNDAsIDQ5XSxcbiAgICAgICAgICBiZ1JlZDogWzQxLCA0OV0sXG4gICAgICAgICAgYmdHcmVlbjogWzQyLCA0OV0sXG4gICAgICAgICAgYmdZZWxsb3c6IFs0MywgNDldLFxuICAgICAgICAgIGJnQmx1ZTogWzQ0LCA0OV0sXG4gICAgICAgICAgYmdNYWdlbnRhOiBbNDUsIDQ5XSxcbiAgICAgICAgICBiZ0N5YW46IFs0NiwgNDldLFxuICAgICAgICAgIGJnV2hpdGU6IFs0NywgNDldLFxuICAgICAgICAgIGJnQmxhY2tCcmlnaHQ6IFsxMDAsIDQ5XSxcbiAgICAgICAgICBiZ1JlZEJyaWdodDogWzEwMSwgNDldLFxuICAgICAgICAgIGJnR3JlZW5CcmlnaHQ6IFsxMDIsIDQ5XSxcbiAgICAgICAgICBiZ1llbGxvd0JyaWdodDogWzEwMywgNDldLFxuICAgICAgICAgIGJnQmx1ZUJyaWdodDogWzEwNCwgNDldLFxuICAgICAgICAgIGJnTWFnZW50YUJyaWdodDogWzEwNSwgNDldLFxuICAgICAgICAgIGJnQ3lhbkJyaWdodDogWzEwNiwgNDldLFxuICAgICAgICAgIGJnV2hpdGVCcmlnaHQ6IFsxMDcsIDQ5XVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgc3R5bGVzLmNvbG9yLmdyZXkgPSBzdHlsZXMuY29sb3IuZ3JheTtcbiAgICAgIGZvciAoY29uc3QgZ3JvdXBOYW1lIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBzdHlsZXNbZ3JvdXBOYW1lXTtcbiAgICAgICAgZm9yIChjb25zdCBzdHlsZU5hbWUgb2YgT2JqZWN0LmtleXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3Qgc3R5bGUgPSBncm91cFtzdHlsZU5hbWVdO1xuICAgICAgICAgIHN0eWxlc1tzdHlsZU5hbWVdID0ge1xuICAgICAgICAgICAgb3BlbjogYFxceDFCWyR7c3R5bGVbMF19bWAsXG4gICAgICAgICAgICBjbG9zZTogYFxceDFCWyR7c3R5bGVbMV19bWBcbiAgICAgICAgICB9O1xuICAgICAgICAgIGdyb3VwW3N0eWxlTmFtZV0gPSBzdHlsZXNbc3R5bGVOYW1lXTtcbiAgICAgICAgICBjb2Rlcy5zZXQoc3R5bGVbMF0sIHN0eWxlWzFdKTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3R5bGVzLCBncm91cE5hbWUsIHtcbiAgICAgICAgICB2YWx1ZTogZ3JvdXAsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdHlsZXMsIFwiY29kZXNcIiwge1xuICAgICAgICAgIHZhbHVlOiBjb2RlcyxcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFuc2kyYW5zaSA9IChuKSA9PiBuO1xuICAgICAgY29uc3QgcmdiMnJnYiA9IChyLCBnLCBiKSA9PiBbciwgZywgYl07XG4gICAgICBzdHlsZXMuY29sb3IuY2xvc2UgPSBcIlxceDFCWzM5bVwiO1xuICAgICAgc3R5bGVzLmJnQ29sb3IuY2xvc2UgPSBcIlxceDFCWzQ5bVwiO1xuICAgICAgc3R5bGVzLmNvbG9yLmFuc2kgPSB7XG4gICAgICAgIGFuc2k6IHdyYXBBbnNpMTYoYW5zaTJhbnNpLCAwKVxuICAgICAgfTtcbiAgICAgIHN0eWxlcy5jb2xvci5hbnNpMjU2ID0ge1xuICAgICAgICBhbnNpMjU2OiB3cmFwQW5zaTI1NihhbnNpMmFuc2ksIDApXG4gICAgICB9O1xuICAgICAgc3R5bGVzLmNvbG9yLmFuc2kxNm0gPSB7XG4gICAgICAgIHJnYjogd3JhcEFuc2kxNm0ocmdiMnJnYiwgMClcbiAgICAgIH07XG4gICAgICBzdHlsZXMuYmdDb2xvci5hbnNpID0ge1xuICAgICAgICBhbnNpOiB3cmFwQW5zaTE2KGFuc2kyYW5zaSwgMTApXG4gICAgICB9O1xuICAgICAgc3R5bGVzLmJnQ29sb3IuYW5zaTI1NiA9IHtcbiAgICAgICAgYW5zaTI1Njogd3JhcEFuc2kyNTYoYW5zaTJhbnNpLCAxMClcbiAgICAgIH07XG4gICAgICBzdHlsZXMuYmdDb2xvci5hbnNpMTZtID0ge1xuICAgICAgICByZ2I6IHdyYXBBbnNpMTZtKHJnYjJyZ2IsIDEwKVxuICAgICAgfTtcbiAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhjb2xvckNvbnZlcnQpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29sb3JDb252ZXJ0W2tleV0gIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWl0ZSA9IGNvbG9yQ29udmVydFtrZXldO1xuICAgICAgICBpZiAoa2V5ID09PSBcImFuc2kxNlwiKSB7XG4gICAgICAgICAga2V5ID0gXCJhbnNpXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwiYW5zaTE2XCIgaW4gc3VpdGUpIHtcbiAgICAgICAgICBzdHlsZXMuY29sb3IuYW5zaVtrZXldID0gd3JhcEFuc2kxNihzdWl0ZS5hbnNpMTYsIDApO1xuICAgICAgICAgIHN0eWxlcy5iZ0NvbG9yLmFuc2lba2V5XSA9IHdyYXBBbnNpMTYoc3VpdGUuYW5zaTE2LCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwiYW5zaTI1NlwiIGluIHN1aXRlKSB7XG4gICAgICAgICAgc3R5bGVzLmNvbG9yLmFuc2kyNTZba2V5XSA9IHdyYXBBbnNpMjU2KHN1aXRlLmFuc2kyNTYsIDApO1xuICAgICAgICAgIHN0eWxlcy5iZ0NvbG9yLmFuc2kyNTZba2V5XSA9IHdyYXBBbnNpMjU2KHN1aXRlLmFuc2kyNTYsIDEwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJyZ2JcIiBpbiBzdWl0ZSkge1xuICAgICAgICAgIHN0eWxlcy5jb2xvci5hbnNpMTZtW2tleV0gPSB3cmFwQW5zaTE2bShzdWl0ZS5yZ2IsIDApO1xuICAgICAgICAgIHN0eWxlcy5iZ0NvbG9yLmFuc2kxNm1ba2V5XSA9IHdyYXBBbnNpMTZtKHN1aXRlLnJnYiwgMTApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3R5bGVzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlMiwgXCJleHBvcnRzXCIsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGFzc2VtYmxlU3R5bGVzXG4gICAgfSk7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaGFzX2ZsYWcgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9ub2RlX21vZHVsZXMvaGFzLWZsYWcvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IChmbGFnLCBhcmd2KSA9PiB7XG4gICAgICBhcmd2ID0gYXJndiB8fCBwcm9jZXNzLmFyZ3Y7XG4gICAgICBjb25zdCBwcmVmaXggPSBmbGFnLnN0YXJ0c1dpdGgoXCItXCIpID8gXCJcIiA6IGZsYWcubGVuZ3RoID09PSAxID8gXCItXCIgOiBcIi0tXCI7XG4gICAgICBjb25zdCBwb3MgPSBhcmd2LmluZGV4T2YocHJlZml4ICsgZmxhZyk7XG4gICAgICBjb25zdCB0ZXJtaW5hdG9yUG9zID0gYXJndi5pbmRleE9mKFwiLS1cIik7XG4gICAgICByZXR1cm4gcG9zICE9PSAtMSAmJiAodGVybWluYXRvclBvcyA9PT0gLTEgPyB0cnVlIDogcG9zIDwgdGVybWluYXRvclBvcyk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zdXBwb3J0c19jb2xvciA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL25vZGVfbW9kdWxlcy9zdXBwb3J0cy1jb2xvci9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIG9zID0gcmVxdWlyZShcIm9zXCIpO1xuICAgIHZhciBoYXNGbGFnID0gcmVxdWlyZV9oYXNfZmxhZygpO1xuICAgIHZhciBlbnYgPSBwcm9jZXNzLmVudjtcbiAgICB2YXIgZm9yY2VDb2xvcjtcbiAgICBpZiAoaGFzRmxhZyhcIm5vLWNvbG9yXCIpIHx8IGhhc0ZsYWcoXCJuby1jb2xvcnNcIikgfHwgaGFzRmxhZyhcImNvbG9yPWZhbHNlXCIpKSB7XG4gICAgICBmb3JjZUNvbG9yID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChoYXNGbGFnKFwiY29sb3JcIikgfHwgaGFzRmxhZyhcImNvbG9yc1wiKSB8fCBoYXNGbGFnKFwiY29sb3I9dHJ1ZVwiKSB8fCBoYXNGbGFnKFwiY29sb3I9YWx3YXlzXCIpKSB7XG4gICAgICBmb3JjZUNvbG9yID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFwiRk9SQ0VfQ09MT1JcIiBpbiBlbnYpIHtcbiAgICAgIGZvcmNlQ29sb3IgPSBlbnYuRk9SQ0VfQ09MT1IubGVuZ3RoID09PSAwIHx8IHBhcnNlSW50KGVudi5GT1JDRV9DT0xPUiwgMTApICE9PSAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVMZXZlbChsZXZlbCkge1xuICAgICAgaWYgKGxldmVsID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxldmVsLFxuICAgICAgICBoYXNCYXNpYzogdHJ1ZSxcbiAgICAgICAgaGFzMjU2OiBsZXZlbCA+PSAyLFxuICAgICAgICBoYXMxNm06IGxldmVsID49IDNcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN1cHBvcnRzQ29sb3Ioc3RyZWFtKSB7XG4gICAgICBpZiAoZm9yY2VDb2xvciA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoaGFzRmxhZyhcImNvbG9yPTE2bVwiKSB8fCBoYXNGbGFnKFwiY29sb3I9ZnVsbFwiKSB8fCBoYXNGbGFnKFwiY29sb3I9dHJ1ZWNvbG9yXCIpKSB7XG4gICAgICAgIHJldHVybiAzO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0ZsYWcoXCJjb2xvcj0yNTZcIikpIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9XG4gICAgICBpZiAoc3RyZWFtICYmICFzdHJlYW0uaXNUVFkgJiYgZm9yY2VDb2xvciAhPT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbiA9IGZvcmNlQ29sb3IgPyAxIDogMDtcbiAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIpIHtcbiAgICAgICAgY29uc3Qgb3NSZWxlYXNlID0gb3MucmVsZWFzZSgpLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKE51bWJlcihwcm9jZXNzLnZlcnNpb25zLm5vZGUuc3BsaXQoXCIuXCIpWzBdKSA+PSA4ICYmIE51bWJlcihvc1JlbGVhc2VbMF0pID49IDEwICYmIE51bWJlcihvc1JlbGVhc2VbMl0pID49IDEwNTg2KSB7XG4gICAgICAgICAgcmV0dXJuIE51bWJlcihvc1JlbGVhc2VbMl0pID49IDE0OTMxID8gMyA6IDI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBpZiAoXCJDSVwiIGluIGVudikge1xuICAgICAgICBpZiAoW1wiVFJBVklTXCIsIFwiQ0lSQ0xFQ0lcIiwgXCJBUFBWRVlPUlwiLCBcIkdJVExBQl9DSVwiXS5zb21lKChzaWduKSA9PiBzaWduIGluIGVudikgfHwgZW52LkNJX05BTUUgPT09IFwiY29kZXNoaXBcIikge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBpZiAoXCJURUFNQ0lUWV9WRVJTSU9OXCIgaW4gZW52KSB7XG4gICAgICAgIHJldHVybiAvXig5XFwuKDAqWzEtOV1cXGQqKVxcLnxcXGR7Mix9XFwuKS8udGVzdChlbnYuVEVBTUNJVFlfVkVSU0lPTikgPyAxIDogMDtcbiAgICAgIH1cbiAgICAgIGlmIChlbnYuQ09MT1JURVJNID09PSBcInRydWVjb2xvclwiKSB7XG4gICAgICAgIHJldHVybiAzO1xuICAgICAgfVxuICAgICAgaWYgKFwiVEVSTV9QUk9HUkFNXCIgaW4gZW52KSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24yID0gcGFyc2VJbnQoKGVudi5URVJNX1BST0dSQU1fVkVSU0lPTiB8fCBcIlwiKS5zcGxpdChcIi5cIilbMF0sIDEwKTtcbiAgICAgICAgc3dpdGNoIChlbnYuVEVSTV9QUk9HUkFNKSB7XG4gICAgICAgICAgY2FzZSBcImlUZXJtLmFwcFwiOlxuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb24yID49IDMgPyAzIDogMjtcbiAgICAgICAgICBjYXNlIFwiQXBwbGVfVGVybWluYWxcIjpcbiAgICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoLy0yNTYoY29sb3IpPyQvaS50ZXN0KGVudi5URVJNKSkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH1cbiAgICAgIGlmICgvXnNjcmVlbnxeeHRlcm18XnZ0MTAwfF52dDIyMHxecnh2dHxjb2xvcnxhbnNpfGN5Z3dpbnxsaW51eC9pLnRlc3QoZW52LlRFUk0pKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKFwiQ09MT1JURVJNXCIgaW4gZW52KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKGVudi5URVJNID09PSBcImR1bWJcIikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0U3VwcG9ydExldmVsKHN0cmVhbSkge1xuICAgICAgY29uc3QgbGV2ZWwgPSBzdXBwb3J0c0NvbG9yKHN0cmVhbSk7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBzdXBwb3J0c0NvbG9yOiBnZXRTdXBwb3J0TGV2ZWwsXG4gICAgICBzdGRvdXQ6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZG91dCksXG4gICAgICBzdGRlcnI6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZGVycilcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3RlbXBsYXRlcyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL25vZGVfbW9kdWxlcy9jaGFsay90ZW1wbGF0ZXMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBURU1QTEFURV9SRUdFWCA9IC8oPzpcXFxcKHVbYS1mXFxkXXs0fXx4W2EtZlxcZF17Mn18LikpfCg/Olxceyh+KT8oXFx3Kyg/OlxcKFteKV0qXFwpKT8oPzpcXC5cXHcrKD86XFwoW14pXSpcXCkpPykqKSg/OlsgXFx0XXwoPz1cXHI/XFxuKSkpfChcXH0pfCgoPzoufFtcXHJcXG5cXGZdKSs/KS9naTtcbiAgICB2YXIgU1RZTEVfUkVHRVggPSAvKD86XnxcXC4pKFxcdyspKD86XFwoKFteKV0qKVxcKSk/L2c7XG4gICAgdmFyIFNUUklOR19SRUdFWCA9IC9eKFsnXCJdKSgoPzpcXFxcLnwoPyFcXDEpW15cXFxcXSkqKVxcMSQvO1xuICAgIHZhciBFU0NBUEVfUkVHRVggPSAvXFxcXCh1W2EtZlxcZF17NH18eFthLWZcXGRdezJ9fC4pfChbXlxcXFxdKS9naTtcbiAgICB2YXIgRVNDQVBFUyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKFtbXCJuXCIsIFwiXFxuXCJdLCBbXCJyXCIsIFwiXFxyXCJdLCBbXCJ0XCIsIFwiXHRcIl0sIFtcImJcIiwgXCJcXGJcIl0sIFtcImZcIiwgXCJcXGZcIl0sIFtcInZcIiwgXCJcXHZcIl0sIFtcIjBcIiwgXCJcXDBcIl0sIFtcIlxcXFxcIiwgXCJcXFxcXCJdLCBbXCJlXCIsIFwiXFx4MUJcIl0sIFtcImFcIiwgXCJcXHgwN1wiXV0pO1xuICAgIGZ1bmN0aW9uIHVuZXNjYXBlKGMpIHtcbiAgICAgIGlmIChjWzBdID09PSBcInVcIiAmJiBjLmxlbmd0aCA9PT0gNSB8fCBjWzBdID09PSBcInhcIiAmJiBjLmxlbmd0aCA9PT0gMykge1xuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChjLnNsaWNlKDEpLCAxNikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEVTQ0FQRVMuZ2V0KGMpIHx8IGM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKG5hbWUsIGFyZ3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgIGNvbnN0IGNodW5rcyA9IGFyZ3MudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovZyk7XG4gICAgICBsZXQgbWF0Y2hlcztcbiAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG4gICAgICAgIGlmICghaXNOYU4oY2h1bmspKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKE51bWJlcihjaHVuaykpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoZXMgPSBjaHVuay5tYXRjaChTVFJJTkdfUkVHRVgpKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKG1hdGNoZXNbMl0ucmVwbGFjZShFU0NBUEVfUkVHRVgsIChtLCBlc2NhcGUsIGNocikgPT4gZXNjYXBlID8gdW5lc2NhcGUoZXNjYXBlKSA6IGNocikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDaGFsayB0ZW1wbGF0ZSBzdHlsZSBhcmd1bWVudDogJHtjaHVua30gKGluIHN0eWxlICcke25hbWV9JylgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlU3R5bGUoc3R5bGUpIHtcbiAgICAgIFNUWUxFX1JFR0VYLmxhc3RJbmRleCA9IDA7XG4gICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICBsZXQgbWF0Y2hlcztcbiAgICAgIHdoaWxlICgobWF0Y2hlcyA9IFNUWUxFX1JFR0VYLmV4ZWMoc3R5bGUpKSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuYW1lID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgaWYgKG1hdGNoZXNbMl0pIHtcbiAgICAgICAgICBjb25zdCBhcmdzID0gcGFyc2VBcmd1bWVudHMobmFtZSwgbWF0Y2hlc1syXSk7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKFtuYW1lXS5jb25jYXQoYXJncykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdHMucHVzaChbbmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gYnVpbGRTdHlsZShjaGFsaywgc3R5bGVzKSB7XG4gICAgICBjb25zdCBlbmFibGVkID0ge307XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHN0eWxlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIGxheWVyLnN0eWxlcykge1xuICAgICAgICAgIGVuYWJsZWRbc3R5bGVbMF1dID0gbGF5ZXIuaW52ZXJzZSA/IG51bGwgOiBzdHlsZS5zbGljZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGN1cnJlbnQgPSBjaGFsaztcbiAgICAgIGZvciAoY29uc3Qgc3R5bGVOYW1lIG9mIE9iamVjdC5rZXlzKGVuYWJsZWQpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVuYWJsZWRbc3R5bGVOYW1lXSkpIHtcbiAgICAgICAgICBpZiAoIShzdHlsZU5hbWUgaW4gY3VycmVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBDaGFsayBzdHlsZTogJHtzdHlsZU5hbWV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbmFibGVkW3N0eWxlTmFtZV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbc3R5bGVOYW1lXS5hcHBseShjdXJyZW50LCBlbmFibGVkW3N0eWxlTmFtZV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtzdHlsZU5hbWVdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IChjaGFsaywgdG1wKSA9PiB7XG4gICAgICBjb25zdCBzdHlsZXMgPSBbXTtcbiAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgbGV0IGNodW5rID0gW107XG4gICAgICB0bXAucmVwbGFjZShURU1QTEFURV9SRUdFWCwgKG0sIGVzY2FwZUNoYXIsIGludmVyc2UsIHN0eWxlLCBjbG9zZSwgY2hyKSA9PiB7XG4gICAgICAgIGlmIChlc2NhcGVDaGFyKSB7XG4gICAgICAgICAgY2h1bmsucHVzaCh1bmVzY2FwZShlc2NhcGVDaGFyKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3R5bGUpIHtcbiAgICAgICAgICBjb25zdCBzdHIgPSBjaHVuay5qb2luKFwiXCIpO1xuICAgICAgICAgIGNodW5rID0gW107XG4gICAgICAgICAgY2h1bmtzLnB1c2goc3R5bGVzLmxlbmd0aCA9PT0gMCA/IHN0ciA6IGJ1aWxkU3R5bGUoY2hhbGssIHN0eWxlcykoc3RyKSk7XG4gICAgICAgICAgc3R5bGVzLnB1c2goe1xuICAgICAgICAgICAgaW52ZXJzZSxcbiAgICAgICAgICAgIHN0eWxlczogcGFyc2VTdHlsZShzdHlsZSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbG9zZSkge1xuICAgICAgICAgIGlmIChzdHlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGb3VuZCBleHRyYW5lb3VzIH0gaW4gQ2hhbGsgdGVtcGxhdGUgbGl0ZXJhbFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2h1bmtzLnB1c2goYnVpbGRTdHlsZShjaGFsaywgc3R5bGVzKShjaHVuay5qb2luKFwiXCIpKSk7XG4gICAgICAgICAgY2h1bmsgPSBbXTtcbiAgICAgICAgICBzdHlsZXMucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2h1bmsucHVzaChjaHIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNodW5rcy5wdXNoKGNodW5rLmpvaW4oXCJcIikpO1xuICAgICAgaWYgKHN0eWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGVyck1zZyA9IGBDaGFsayB0ZW1wbGF0ZSBsaXRlcmFsIGlzIG1pc3NpbmcgJHtzdHlsZXMubGVuZ3RofSBjbG9zaW5nIGJyYWNrZXQke3N0eWxlcy5sZW5ndGggPT09IDEgPyBcIlwiIDogXCJzXCJ9IChcXGB9XFxgKWA7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJNc2cpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNodW5rcy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY2hhbGsgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9ub2RlX21vZHVsZXMvY2hhbGsvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBlc2NhcGVTdHJpbmdSZWdleHAyID0gcmVxdWlyZV9lc2NhcGVfc3RyaW5nX3JlZ2V4cCgpO1xuICAgIHZhciBhbnNpU3R5bGVzID0gcmVxdWlyZV9hbnNpX3N0eWxlcygpO1xuICAgIHZhciBzdGRvdXRDb2xvciA9IHJlcXVpcmVfc3VwcG9ydHNfY29sb3IoKS5zdGRvdXQ7XG4gICAgdmFyIHRlbXBsYXRlID0gcmVxdWlyZV90ZW1wbGF0ZXMoKTtcbiAgICB2YXIgaXNTaW1wbGVXaW5kb3dzVGVybSA9IHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIiAmJiAhKHByb2Nlc3MuZW52LlRFUk0gfHwgXCJcIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwieHRlcm1cIik7XG4gICAgdmFyIGxldmVsTWFwcGluZyA9IFtcImFuc2lcIiwgXCJhbnNpXCIsIFwiYW5zaTI1NlwiLCBcImFuc2kxNm1cIl07XG4gICAgdmFyIHNraXBNb2RlbHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJncmF5XCJdKTtcbiAgICB2YXIgc3R5bGVzID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgZnVuY3Rpb24gYXBwbHlPcHRpb25zKG9iaiwgb3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICBjb25zdCBzY0xldmVsID0gc3Rkb3V0Q29sb3IgPyBzdGRvdXRDb2xvci5sZXZlbCA6IDA7XG4gICAgICBvYmoubGV2ZWwgPSBvcHRpb25zLmxldmVsID09PSB2b2lkIDAgPyBzY0xldmVsIDogb3B0aW9ucy5sZXZlbDtcbiAgICAgIG9iai5lbmFibGVkID0gXCJlbmFibGVkXCIgaW4gb3B0aW9ucyA/IG9wdGlvbnMuZW5hYmxlZCA6IG9iai5sZXZlbCA+IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIENoYWxrKG9wdGlvbnMpIHtcbiAgICAgIGlmICghdGhpcyB8fCAhKHRoaXMgaW5zdGFuY2VvZiBDaGFsaykgfHwgdGhpcy50ZW1wbGF0ZSkge1xuICAgICAgICBjb25zdCBjaGFsayA9IHt9O1xuICAgICAgICBhcHBseU9wdGlvbnMoY2hhbGssIG9wdGlvbnMpO1xuICAgICAgICBjaGFsay50ZW1wbGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNvbnN0IGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgICAgcmV0dXJuIGNoYWxrVGFnLmFwcGx5KG51bGwsIFtjaGFsay50ZW1wbGF0ZV0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGNoYWxrLCBDaGFsay5wcm90b3R5cGUpO1xuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoY2hhbGsudGVtcGxhdGUsIGNoYWxrKTtcbiAgICAgICAgY2hhbGsudGVtcGxhdGUuY29uc3RydWN0b3IgPSBDaGFsaztcbiAgICAgICAgcmV0dXJuIGNoYWxrLnRlbXBsYXRlO1xuICAgICAgfVxuICAgICAgYXBwbHlPcHRpb25zKHRoaXMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoaXNTaW1wbGVXaW5kb3dzVGVybSkge1xuICAgICAgYW5zaVN0eWxlcy5ibHVlLm9wZW4gPSBcIlxceDFCWzk0bVwiO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhbnNpU3R5bGVzKSkge1xuICAgICAgYW5zaVN0eWxlc1trZXldLmNsb3NlUmUgPSBuZXcgUmVnRXhwKGVzY2FwZVN0cmluZ1JlZ2V4cDIoYW5zaVN0eWxlc1trZXldLmNsb3NlKSwgXCJnXCIpO1xuICAgICAgc3R5bGVzW2tleV0gPSB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICBjb25zdCBjb2RlcyA9IGFuc2lTdHlsZXNba2V5XTtcbiAgICAgICAgICByZXR1cm4gYnVpbGQuY2FsbCh0aGlzLCB0aGlzLl9zdHlsZXMgPyB0aGlzLl9zdHlsZXMuY29uY2F0KGNvZGVzKSA6IFtjb2Rlc10sIHRoaXMuX2VtcHR5LCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICBzdHlsZXMudmlzaWJsZSA9IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkLmNhbGwodGhpcywgdGhpcy5fc3R5bGVzIHx8IFtdLCB0cnVlLCBcInZpc2libGVcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICBhbnNpU3R5bGVzLmNvbG9yLmNsb3NlUmUgPSBuZXcgUmVnRXhwKGVzY2FwZVN0cmluZ1JlZ2V4cDIoYW5zaVN0eWxlcy5jb2xvci5jbG9zZSksIFwiZ1wiKTtcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIE9iamVjdC5rZXlzKGFuc2lTdHlsZXMuY29sb3IuYW5zaSkpIHtcbiAgICAgIGlmIChza2lwTW9kZWxzLmhhcyhtb2RlbCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzdHlsZXNbbW9kZWxdID0ge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgY29uc3QgbGV2ZWwgPSB0aGlzLmxldmVsO1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZW4gPSBhbnNpU3R5bGVzLmNvbG9yW2xldmVsTWFwcGluZ1tsZXZlbF1dW21vZGVsXS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgY29uc3QgY29kZXMgPSB7XG4gICAgICAgICAgICAgIG9wZW4sXG4gICAgICAgICAgICAgIGNsb3NlOiBhbnNpU3R5bGVzLmNvbG9yLmNsb3NlLFxuICAgICAgICAgICAgICBjbG9zZVJlOiBhbnNpU3R5bGVzLmNvbG9yLmNsb3NlUmVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gYnVpbGQuY2FsbCh0aGlzLCB0aGlzLl9zdHlsZXMgPyB0aGlzLl9zdHlsZXMuY29uY2F0KGNvZGVzKSA6IFtjb2Rlc10sIHRoaXMuX2VtcHR5LCBtb2RlbCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgYW5zaVN0eWxlcy5iZ0NvbG9yLmNsb3NlUmUgPSBuZXcgUmVnRXhwKGVzY2FwZVN0cmluZ1JlZ2V4cDIoYW5zaVN0eWxlcy5iZ0NvbG9yLmNsb3NlKSwgXCJnXCIpO1xuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgT2JqZWN0LmtleXMoYW5zaVN0eWxlcy5iZ0NvbG9yLmFuc2kpKSB7XG4gICAgICBpZiAoc2tpcE1vZGVscy5oYXMobW9kZWwpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgYmdNb2RlbCA9IFwiYmdcIiArIG1vZGVsWzBdLnRvVXBwZXJDYXNlKCkgKyBtb2RlbC5zbGljZSgxKTtcbiAgICAgIHN0eWxlc1tiZ01vZGVsXSA9IHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIGNvbnN0IGxldmVsID0gdGhpcy5sZXZlbDtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCBvcGVuID0gYW5zaVN0eWxlcy5iZ0NvbG9yW2xldmVsTWFwcGluZ1tsZXZlbF1dW21vZGVsXS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgY29uc3QgY29kZXMgPSB7XG4gICAgICAgICAgICAgIG9wZW4sXG4gICAgICAgICAgICAgIGNsb3NlOiBhbnNpU3R5bGVzLmJnQ29sb3IuY2xvc2UsXG4gICAgICAgICAgICAgIGNsb3NlUmU6IGFuc2lTdHlsZXMuYmdDb2xvci5jbG9zZVJlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkLmNhbGwodGhpcywgdGhpcy5fc3R5bGVzID8gdGhpcy5fc3R5bGVzLmNvbmNhdChjb2RlcykgOiBbY29kZXNdLCB0aGlzLl9lbXB0eSwgbW9kZWwpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHZhciBwcm90byA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCgpID0+IHtcbiAgICB9LCBzdHlsZXMpO1xuICAgIGZ1bmN0aW9uIGJ1aWxkKF9zdHlsZXMsIF9lbXB0eSwga2V5KSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhcHBseVN0eWxlLmFwcGx5KGJ1aWxkZXIsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgYnVpbGRlci5fc3R5bGVzID0gX3N0eWxlcztcbiAgICAgIGJ1aWxkZXIuX2VtcHR5ID0gX2VtcHR5O1xuICAgICAgY29uc3Qgc2VsZjIgPSB0aGlzO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJ1aWxkZXIsIFwibGV2ZWxcIiwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGYyLmxldmVsO1xuICAgICAgICB9LFxuICAgICAgICBzZXQobGV2ZWwpIHtcbiAgICAgICAgICBzZWxmMi5sZXZlbCA9IGxldmVsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShidWlsZGVyLCBcImVuYWJsZWRcIiwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGYyLmVuYWJsZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNldChlbmFibGVkKSB7XG4gICAgICAgICAgc2VsZjIuZW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYnVpbGRlci5oYXNHcmV5ID0gdGhpcy5oYXNHcmV5IHx8IGtleSA9PT0gXCJncmF5XCIgfHwga2V5ID09PSBcImdyZXlcIjtcbiAgICAgIGJ1aWxkZXIuX19wcm90b19fID0gcHJvdG87XG4gICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG4gICAgZnVuY3Rpb24gYXBwbHlTdHlsZSgpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBjb25zdCBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gICAgICBsZXQgc3RyID0gU3RyaW5nKGFyZ3VtZW50c1swXSk7XG4gICAgICBpZiAoYXJnc0xlbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzTGVuID4gMSkge1xuICAgICAgICBmb3IgKGxldCBhID0gMTsgYSA8IGFyZ3NMZW47IGErKykge1xuICAgICAgICAgIHN0ciArPSBcIiBcIiArIGFyZ3NbYV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5lbmFibGVkIHx8IHRoaXMubGV2ZWwgPD0gMCB8fCAhc3RyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbXB0eSA/IFwiXCIgOiBzdHI7XG4gICAgICB9XG4gICAgICBjb25zdCBvcmlnaW5hbERpbSA9IGFuc2lTdHlsZXMuZGltLm9wZW47XG4gICAgICBpZiAoaXNTaW1wbGVXaW5kb3dzVGVybSAmJiB0aGlzLmhhc0dyZXkpIHtcbiAgICAgICAgYW5zaVN0eWxlcy5kaW0ub3BlbiA9IFwiXCI7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGNvZGUgb2YgdGhpcy5fc3R5bGVzLnNsaWNlKCkucmV2ZXJzZSgpKSB7XG4gICAgICAgIHN0ciA9IGNvZGUub3BlbiArIHN0ci5yZXBsYWNlKGNvZGUuY2xvc2VSZSwgY29kZS5vcGVuKSArIGNvZGUuY2xvc2U7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXHI/XFxuL2csIGAke2NvZGUuY2xvc2V9JCYke2NvZGUub3Blbn1gKTtcbiAgICAgIH1cbiAgICAgIGFuc2lTdHlsZXMuZGltLm9wZW4gPSBvcmlnaW5hbERpbTtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoYWxrVGFnKGNoYWxrLCBzdHJpbmdzKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoc3RyaW5ncykpIHtcbiAgICAgICAgcmV0dXJuIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKS5qb2luKFwiIFwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtzdHJpbmdzLnJhd1swXV07XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydHMucHVzaChTdHJpbmcoYXJnc1tpIC0gMV0pLnJlcGxhY2UoL1t7fVxcXFxdL2csIFwiXFxcXCQmXCIpKTtcbiAgICAgICAgcGFydHMucHVzaChTdHJpbmcoc3RyaW5ncy5yYXdbaV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZW1wbGF0ZShjaGFsaywgcGFydHMuam9pbihcIlwiKSk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKENoYWxrLnByb3RvdHlwZSwgc3R5bGVzKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBDaGFsaygpO1xuICAgIG1vZHVsZTIuZXhwb3J0cy5zdXBwb3J0c0NvbG9yID0gc3Rkb3V0Q29sb3I7XG4gICAgbW9kdWxlMi5leHBvcnRzLmRlZmF1bHQgPSBtb2R1bGUyLmV4cG9ydHM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29tbW9uID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy92bm9wdHMvbGliL2hhbmRsZXJzL2RlcHJlY2F0ZWQvY29tbW9uLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBjaGFsa18xID0gcmVxdWlyZV9jaGFsaygpO1xuICAgIGV4cG9ydHMyLmNvbW1vbkRlcHJlY2F0ZWRIYW5kbGVyID0gKGtleU9yUGFpciwgcmVkaXJlY3RUbywge1xuICAgICAgZGVzY3JpcHRvclxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gW2Ake2NoYWxrXzEuZGVmYXVsdC55ZWxsb3codHlwZW9mIGtleU9yUGFpciA9PT0gXCJzdHJpbmdcIiA/IGRlc2NyaXB0b3Iua2V5KGtleU9yUGFpcikgOiBkZXNjcmlwdG9yLnBhaXIoa2V5T3JQYWlyKSl9IGlzIGRlcHJlY2F0ZWRgXTtcbiAgICAgIGlmIChyZWRpcmVjdFRvKSB7XG4gICAgICAgIG1lc3NhZ2VzLnB1c2goYHdlIG5vdyB0cmVhdCBpdCBhcyAke2NoYWxrXzEuZGVmYXVsdC5ibHVlKHR5cGVvZiByZWRpcmVjdFRvID09PSBcInN0cmluZ1wiID8gZGVzY3JpcHRvci5rZXkocmVkaXJlY3RUbykgOiBkZXNjcmlwdG9yLnBhaXIocmVkaXJlY3RUbykpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1lc3NhZ2VzLmpvaW4oXCI7IFwiKSArIFwiLlwiO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZGVwcmVjYXRlZCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi9oYW5kbGVycy9kZXByZWNhdGVkL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciB0c2xpYl8xID0gKGluaXRfdHNsaWJfZXM2KCksIF9fdG9Db21tb25KUyh0c2xpYl9lczZfZXhwb3J0cykpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfY29tbW9uKCksIGV4cG9ydHMyKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb21tb24yID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy92bm9wdHMvbGliL2hhbmRsZXJzL2ludmFsaWQvY29tbW9uLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBjaGFsa18xID0gcmVxdWlyZV9jaGFsaygpO1xuICAgIGV4cG9ydHMyLmNvbW1vbkludmFsaWRIYW5kbGVyID0gKGtleSwgdmFsdWUsIHV0aWxzKSA9PiBbYEludmFsaWQgJHtjaGFsa18xLmRlZmF1bHQucmVkKHV0aWxzLmRlc2NyaXB0b3Iua2V5KGtleSkpfSB2YWx1ZS5gLCBgRXhwZWN0ZWQgJHtjaGFsa18xLmRlZmF1bHQuYmx1ZSh1dGlscy5zY2hlbWFzW2tleV0uZXhwZWN0ZWQodXRpbHMpKX0sYCwgYGJ1dCByZWNlaXZlZCAke2NoYWxrXzEuZGVmYXVsdC5yZWQodXRpbHMuZGVzY3JpcHRvci52YWx1ZSh2YWx1ZSkpfS5gXS5qb2luKFwiIFwiKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pbnZhbGlkID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy92bm9wdHMvbGliL2hhbmRsZXJzL2ludmFsaWQvaW5kZXguanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHRzbGliXzEgPSAoaW5pdF90c2xpYl9lczYoKSwgX190b0NvbW1vbkpTKHRzbGliX2VzNl9leHBvcnRzKSk7XG4gICAgdHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZV9jb21tb24yKCksIGV4cG9ydHMyKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sZXZlbiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL25vZGVfbW9kdWxlcy9sZXZlbi9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGFyciA9IFtdO1xuICAgIHZhciBjaGFyQ29kZUNhY2hlID0gW107XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oYSwgYikge1xuICAgICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICB2YXIgc3dhcCA9IGE7XG4gICAgICBpZiAoYS5sZW5ndGggPiBiLmxlbmd0aCkge1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHN3YXA7XG4gICAgICB9XG4gICAgICB2YXIgYUxlbiA9IGEubGVuZ3RoO1xuICAgICAgdmFyIGJMZW4gPSBiLmxlbmd0aDtcbiAgICAgIGlmIChhTGVuID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiTGVuO1xuICAgICAgfVxuICAgICAgaWYgKGJMZW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGFMZW47XG4gICAgICB9XG4gICAgICB3aGlsZSAoYUxlbiA+IDAgJiYgYS5jaGFyQ29kZUF0KH4tYUxlbikgPT09IGIuY2hhckNvZGVBdCh+LWJMZW4pKSB7XG4gICAgICAgIGFMZW4tLTtcbiAgICAgICAgYkxlbi0tO1xuICAgICAgfVxuICAgICAgaWYgKGFMZW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGJMZW47XG4gICAgICB9XG4gICAgICB2YXIgc3RhcnQgPSAwO1xuICAgICAgd2hpbGUgKHN0YXJ0IDwgYUxlbiAmJiBhLmNoYXJDb2RlQXQoc3RhcnQpID09PSBiLmNoYXJDb2RlQXQoc3RhcnQpKSB7XG4gICAgICAgIHN0YXJ0Kys7XG4gICAgICB9XG4gICAgICBhTGVuIC09IHN0YXJ0O1xuICAgICAgYkxlbiAtPSBzdGFydDtcbiAgICAgIGlmIChhTGVuID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiTGVuO1xuICAgICAgfVxuICAgICAgdmFyIGJDaGFyQ29kZTtcbiAgICAgIHZhciByZXQ7XG4gICAgICB2YXIgdG1wO1xuICAgICAgdmFyIHRtcDI7XG4gICAgICB2YXIgaSA9IDA7XG4gICAgICB2YXIgaiA9IDA7XG4gICAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgICAgY2hhckNvZGVDYWNoZVtzdGFydCArIGldID0gYS5jaGFyQ29kZUF0KHN0YXJ0ICsgaSk7XG4gICAgICAgIGFycltpXSA9ICsraTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChqIDwgYkxlbikge1xuICAgICAgICBiQ2hhckNvZGUgPSBiLmNoYXJDb2RlQXQoc3RhcnQgKyBqKTtcbiAgICAgICAgdG1wID0gaisrO1xuICAgICAgICByZXQgPSBqO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYUxlbjsgaSsrKSB7XG4gICAgICAgICAgdG1wMiA9IGJDaGFyQ29kZSA9PT0gY2hhckNvZGVDYWNoZVtzdGFydCArIGldID8gdG1wIDogdG1wICsgMTtcbiAgICAgICAgICB0bXAgPSBhcnJbaV07XG4gICAgICAgICAgcmV0ID0gYXJyW2ldID0gdG1wID4gcmV0ID8gdG1wMiA+IHJldCA/IHJldCArIDEgOiB0bXAyIDogdG1wMiA+IHRtcCA/IHRtcCArIDEgOiB0bXAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbGV2ZW4yID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy92bm9wdHMvbGliL2hhbmRsZXJzL3Vua25vd24vbGV2ZW4uanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIGNoYWxrXzEgPSByZXF1aXJlX2NoYWxrKCk7XG4gICAgdmFyIGxldmVuID0gcmVxdWlyZV9sZXZlbigpO1xuICAgIGV4cG9ydHMyLmxldmVuVW5rbm93bkhhbmRsZXIgPSAoa2V5LCB2YWx1ZSwge1xuICAgICAgZGVzY3JpcHRvcixcbiAgICAgIGxvZ2dlcixcbiAgICAgIHNjaGVtYXNcbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IFtgSWdub3JlZCB1bmtub3duIG9wdGlvbiAke2NoYWxrXzEuZGVmYXVsdC55ZWxsb3coZGVzY3JpcHRvci5wYWlyKHtcbiAgICAgICAga2V5LFxuICAgICAgICB2YWx1ZVxuICAgICAgfSkpfS5gXTtcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb24gPSBPYmplY3Qua2V5cyhzY2hlbWFzKS5zb3J0KCkuZmluZCgoa25vd25LZXkpID0+IGxldmVuKGtleSwga25vd25LZXkpIDwgMyk7XG4gICAgICBpZiAoc3VnZ2VzdGlvbikge1xuICAgICAgICBtZXNzYWdlcy5wdXNoKGBEaWQgeW91IG1lYW4gJHtjaGFsa18xLmRlZmF1bHQuYmx1ZShkZXNjcmlwdG9yLmtleShzdWdnZXN0aW9uKSl9P2ApO1xuICAgICAgfVxuICAgICAgbG9nZ2VyLndhcm4obWVzc2FnZXMuam9pbihcIiBcIikpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdW5rbm93biA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi9oYW5kbGVycy91bmtub3duL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciB0c2xpYl8xID0gKGluaXRfdHNsaWJfZXM2KCksIF9fdG9Db21tb25KUyh0c2xpYl9lczZfZXhwb3J0cykpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfbGV2ZW4yKCksIGV4cG9ydHMyKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9oYW5kbGVycyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi9oYW5kbGVycy9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgdHNsaWJfMSA9IChpbml0X3RzbGliX2VzNigpLCBfX3RvQ29tbW9uSlModHNsaWJfZXM2X2V4cG9ydHMpKTtcbiAgICB0c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlX2RlcHJlY2F0ZWQoKSwgZXhwb3J0czIpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfaW52YWxpZCgpLCBleHBvcnRzMik7XG4gICAgdHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZV91bmtub3duKCksIGV4cG9ydHMyKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zY2hlbWEgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvc2NoZW1hLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBIQU5ETEVSX0tFWVMgPSBbXCJkZWZhdWx0XCIsIFwiZXhwZWN0ZWRcIiwgXCJ2YWxpZGF0ZVwiLCBcImRlcHJlY2F0ZWRcIiwgXCJmb3J3YXJkXCIsIFwicmVkaXJlY3RcIiwgXCJvdmVybGFwXCIsIFwicHJlcHJvY2Vzc1wiLCBcInBvc3Rwcm9jZXNzXCJdO1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVNjaGVtYShTY2hlbWFDb25zdHJ1Y3RvciwgcGFyYW1ldGVycykge1xuICAgICAgY29uc3Qgc2NoZW1hID0gbmV3IFNjaGVtYUNvbnN0cnVjdG9yKHBhcmFtZXRlcnMpO1xuICAgICAgY29uc3Qgc3ViU2NoZW1hID0gT2JqZWN0LmNyZWF0ZShzY2hlbWEpO1xuICAgICAgZm9yIChjb25zdCBoYW5kbGVyS2V5IG9mIEhBTkRMRVJfS0VZUykge1xuICAgICAgICBpZiAoaGFuZGxlcktleSBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgc3ViU2NoZW1hW2hhbmRsZXJLZXldID0gbm9ybWFsaXplSGFuZGxlcihwYXJhbWV0ZXJzW2hhbmRsZXJLZXldLCBzY2hlbWEsIFNjaGVtYS5wcm90b3R5cGVbaGFuZGxlcktleV0ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN1YlNjaGVtYTtcbiAgICB9XG4gICAgZXhwb3J0czIuY3JlYXRlU2NoZW1hID0gY3JlYXRlU2NoZW1hO1xuICAgIHZhciBTY2hlbWEgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IHBhcmFtZXRlcnMubmFtZTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBjcmVhdGUocGFyYW1ldGVycykge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2NoZW1hKHRoaXMsIHBhcmFtZXRlcnMpO1xuICAgICAgfVxuICAgICAgZGVmYXVsdChfdXRpbHMpIHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGV4cGVjdGVkKF91dGlscykge1xuICAgICAgICByZXR1cm4gXCJub3RoaW5nXCI7XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZShfdmFsdWUsIF91dGlscykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBkZXByZWNhdGVkKF92YWx1ZSwgX3V0aWxzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGZvcndhcmQoX3ZhbHVlLCBfdXRpbHMpIHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIHJlZGlyZWN0KF92YWx1ZSwgX3V0aWxzKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICBvdmVybGFwKGN1cnJlbnRWYWx1ZSwgX25ld1ZhbHVlLCBfdXRpbHMpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHByZXByb2Nlc3ModmFsdWUsIF91dGlscykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBwb3N0cHJvY2Vzcyh2YWx1ZSwgX3V0aWxzKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLlNjaGVtYSA9IFNjaGVtYTtcbiAgICBmdW5jdGlvbiBub3JtYWxpemVIYW5kbGVyKGhhbmRsZXIsIHN1cGVyU2NoZW1hLCBoYW5kbGVyQXJndW1lbnRzTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIiA/ICguLi5hcmdzKSA9PiBoYW5kbGVyKC4uLmFyZ3Muc2xpY2UoMCwgaGFuZGxlckFyZ3VtZW50c0xlbmd0aCAtIDEpLCBzdXBlclNjaGVtYSwgLi4uYXJncy5zbGljZShoYW5kbGVyQXJndW1lbnRzTGVuZ3RoIC0gMSkpIDogKCkgPT4gaGFuZGxlcjtcbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfYWxpYXMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvc2NoZW1hcy9hbGlhcy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc2NoZW1hXzEgPSByZXF1aXJlX3NjaGVtYSgpO1xuICAgIHZhciBBbGlhc1NjaGVtYSA9IGNsYXNzIGV4dGVuZHMgc2NoZW1hXzEuU2NoZW1hIHtcbiAgICAgIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnMpIHtcbiAgICAgICAgc3VwZXIocGFyYW1ldGVycyk7XG4gICAgICAgIHRoaXMuX3NvdXJjZU5hbWUgPSBwYXJhbWV0ZXJzLnNvdXJjZU5hbWU7XG4gICAgICB9XG4gICAgICBleHBlY3RlZCh1dGlscykge1xuICAgICAgICByZXR1cm4gdXRpbHMuc2NoZW1hc1t0aGlzLl9zb3VyY2VOYW1lXS5leHBlY3RlZCh1dGlscyk7XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZSh2YWx1ZSwgdXRpbHMpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnNjaGVtYXNbdGhpcy5fc291cmNlTmFtZV0udmFsaWRhdGUodmFsdWUsIHV0aWxzKTtcbiAgICAgIH1cbiAgICAgIHJlZGlyZWN0KF92YWx1ZSwgX3V0aWxzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VOYW1lO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuQWxpYXNTY2hlbWEgPSBBbGlhc1NjaGVtYTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9hbnkgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvc2NoZW1hcy9hbnkuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHNjaGVtYV8xID0gcmVxdWlyZV9zY2hlbWEoKTtcbiAgICB2YXIgQW55U2NoZW1hID0gY2xhc3MgZXh0ZW5kcyBzY2hlbWFfMS5TY2hlbWEge1xuICAgICAgZXhwZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiBcImFueXRoaW5nXCI7XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5BbnlTY2hlbWEgPSBBbnlTY2hlbWE7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfYXJyYXkyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy92bm9wdHMvbGliL3NjaGVtYXMvYXJyYXkuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHRzbGliXzEgPSAoaW5pdF90c2xpYl9lczYoKSwgX190b0NvbW1vbkpTKHRzbGliX2VzNl9leHBvcnRzKSk7XG4gICAgdmFyIHNjaGVtYV8xID0gcmVxdWlyZV9zY2hlbWEoKTtcbiAgICB2YXIgQXJyYXlTY2hlbWEgPSBjbGFzcyBleHRlbmRzIHNjaGVtYV8xLlNjaGVtYSB7XG4gICAgICBjb25zdHJ1Y3RvcihfYSkge1xuICAgICAgICB2YXIge1xuICAgICAgICAgIHZhbHVlU2NoZW1hLFxuICAgICAgICAgIG5hbWUgPSB2YWx1ZVNjaGVtYS5uYW1lXG4gICAgICAgIH0gPSBfYSwgaGFuZGxlcnMgPSB0c2xpYl8xLl9fcmVzdChfYSwgW1widmFsdWVTY2hlbWFcIiwgXCJuYW1lXCJdKTtcbiAgICAgICAgc3VwZXIoT2JqZWN0LmFzc2lnbih7fSwgaGFuZGxlcnMsIHtcbiAgICAgICAgICBuYW1lXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5fdmFsdWVTY2hlbWEgPSB2YWx1ZVNjaGVtYTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdGVkKHV0aWxzKSB7XG4gICAgICAgIHJldHVybiBgYW4gYXJyYXkgb2YgJHt0aGlzLl92YWx1ZVNjaGVtYS5leHBlY3RlZCh1dGlscyl9YDtcbiAgICAgIH1cbiAgICAgIHZhbGlkYXRlKHZhbHVlLCB1dGlscykge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludmFsaWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdWJWYWx1ZSBvZiB2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHN1YlZhbGlkYXRlUmVzdWx0ID0gdXRpbHMubm9ybWFsaXplVmFsaWRhdGVSZXN1bHQodGhpcy5fdmFsdWVTY2hlbWEudmFsaWRhdGUoc3ViVmFsdWUsIHV0aWxzKSwgc3ViVmFsdWUpO1xuICAgICAgICAgIGlmIChzdWJWYWxpZGF0ZVJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgaW52YWxpZFZhbHVlcy5wdXNoKHN1YlZhbGlkYXRlUmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZXMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IHtcbiAgICAgICAgICB2YWx1ZTogaW52YWxpZFZhbHVlc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZGVwcmVjYXRlZCh2YWx1ZSwgdXRpbHMpIHtcbiAgICAgICAgY29uc3QgZGVwcmVjYXRlZFJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN1YlZhbHVlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgY29uc3Qgc3ViRGVwcmVjYXRlZFJlc3VsdCA9IHV0aWxzLm5vcm1hbGl6ZURlcHJlY2F0ZWRSZXN1bHQodGhpcy5fdmFsdWVTY2hlbWEuZGVwcmVjYXRlZChzdWJWYWx1ZSwgdXRpbHMpLCBzdWJWYWx1ZSk7XG4gICAgICAgICAgaWYgKHN1YkRlcHJlY2F0ZWRSZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGVkUmVzdWx0LnB1c2goLi4uc3ViRGVwcmVjYXRlZFJlc3VsdC5tYXAoKHtcbiAgICAgICAgICAgICAgdmFsdWU6IGRlcHJlY2F0ZWRWYWx1ZVxuICAgICAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICAgICAgdmFsdWU6IFtkZXByZWNhdGVkVmFsdWVdXG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVwcmVjYXRlZFJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGZvcndhcmQodmFsdWUsIHV0aWxzKSB7XG4gICAgICAgIGNvbnN0IGZvcndhcmRSZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdWJWYWx1ZSBvZiB2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHN1YkZvcndhcmRSZXN1bHQgPSB1dGlscy5ub3JtYWxpemVGb3J3YXJkUmVzdWx0KHRoaXMuX3ZhbHVlU2NoZW1hLmZvcndhcmQoc3ViVmFsdWUsIHV0aWxzKSwgc3ViVmFsdWUpO1xuICAgICAgICAgIGZvcndhcmRSZXN1bHQucHVzaCguLi5zdWJGb3J3YXJkUmVzdWx0Lm1hcCh3cmFwVHJhbnNmZXJSZXN1bHQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9yd2FyZFJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJlZGlyZWN0KHZhbHVlLCB1dGlscykge1xuICAgICAgICBjb25zdCByZW1haW4gPSBbXTtcbiAgICAgICAgY29uc3QgcmVkaXJlY3QgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdWJWYWx1ZSBvZiB2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHN1YlJlZGlyZWN0UmVzdWx0ID0gdXRpbHMubm9ybWFsaXplUmVkaXJlY3RSZXN1bHQodGhpcy5fdmFsdWVTY2hlbWEucmVkaXJlY3Qoc3ViVmFsdWUsIHV0aWxzKSwgc3ViVmFsdWUpO1xuICAgICAgICAgIGlmIChcInJlbWFpblwiIGluIHN1YlJlZGlyZWN0UmVzdWx0KSB7XG4gICAgICAgICAgICByZW1haW4ucHVzaChzdWJSZWRpcmVjdFJlc3VsdC5yZW1haW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWRpcmVjdC5wdXNoKC4uLnN1YlJlZGlyZWN0UmVzdWx0LnJlZGlyZWN0Lm1hcCh3cmFwVHJhbnNmZXJSZXN1bHQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVtYWluLmxlbmd0aCA9PT0gMCA/IHtcbiAgICAgICAgICByZWRpcmVjdFxuICAgICAgICB9IDoge1xuICAgICAgICAgIHJlZGlyZWN0LFxuICAgICAgICAgIHJlbWFpblxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgb3ZlcmxhcChjdXJyZW50VmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUuY29uY2F0KG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLkFycmF5U2NoZW1hID0gQXJyYXlTY2hlbWE7XG4gICAgZnVuY3Rpb24gd3JhcFRyYW5zZmVyUmVzdWx0KHtcbiAgICAgIGZyb20sXG4gICAgICB0b1xuICAgIH0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IFtmcm9tXSxcbiAgICAgICAgdG9cbiAgICAgIH07XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2Jvb2xlYW4gPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvc2NoZW1hcy9ib29sZWFuLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBzY2hlbWFfMSA9IHJlcXVpcmVfc2NoZW1hKCk7XG4gICAgdmFyIEJvb2xlYW5TY2hlbWEgPSBjbGFzcyBleHRlbmRzIHNjaGVtYV8xLlNjaGVtYSB7XG4gICAgICBleHBlY3RlZCgpIHtcbiAgICAgICAgcmV0dXJuIFwidHJ1ZSBvciBmYWxzZVwiO1xuICAgICAgfVxuICAgICAgdmFsaWRhdGUodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCI7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5Cb29sZWFuU2NoZW1hID0gQm9vbGVhblNjaGVtYTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV91dGlscyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi91dGlscy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBmdW5jdGlvbiByZWNvcmRGcm9tQXJyYXkoYXJyYXksIG1haW5LZXkpIHtcbiAgICAgIGNvbnN0IHJlY29yZCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBhcnJheSkge1xuICAgICAgICBjb25zdCBrZXkgPSB2YWx1ZVttYWluS2V5XTtcbiAgICAgICAgaWYgKHJlY29yZFtrZXldKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgJHttYWluS2V5fSAke0pTT04uc3RyaW5naWZ5KGtleSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVjb3JkW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlY29yZEZyb21BcnJheSA9IHJlY29yZEZyb21BcnJheTtcbiAgICBmdW5jdGlvbiBtYXBGcm9tQXJyYXkoYXJyYXksIG1haW5LZXkpIHtcbiAgICAgIGNvbnN0IG1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHZhbHVlW21haW5LZXldO1xuICAgICAgICBpZiAobWFwLmhhcyhrZXkpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgJHttYWluS2V5fSAke0pTT04uc3RyaW5naWZ5KGtleSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGV4cG9ydHMyLm1hcEZyb21BcnJheSA9IG1hcEZyb21BcnJheTtcbiAgICBmdW5jdGlvbiBjcmVhdGVBdXRvQ2hlY2tsaXN0KCkge1xuICAgICAgY29uc3QgbWFwID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICByZXR1cm4gKGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoaWQpO1xuICAgICAgICBpZiAobWFwW2lkU3RyaW5nXSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIG1hcFtpZFN0cmluZ10gPSB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9O1xuICAgIH1cbiAgICBleHBvcnRzMi5jcmVhdGVBdXRvQ2hlY2tsaXN0ID0gY3JlYXRlQXV0b0NoZWNrbGlzdDtcbiAgICBmdW5jdGlvbiBwYXJ0aXRpb24oYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgY29uc3QgdHJ1ZUFycmF5ID0gW107XG4gICAgICBjb25zdCBmYWxzZUFycmF5ID0gW107XG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGFycmF5KSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgdHJ1ZUFycmF5LnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZhbHNlQXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBbdHJ1ZUFycmF5LCBmYWxzZUFycmF5XTtcbiAgICB9XG4gICAgZXhwb3J0czIucGFydGl0aW9uID0gcGFydGl0aW9uO1xuICAgIGZ1bmN0aW9uIGlzSW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc0ludCA9IGlzSW50O1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVQcmltaXRpdmUoYSwgYikge1xuICAgICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlb2ZBID0gdHlwZW9mIGE7XG4gICAgICBjb25zdCB0eXBlb2ZCID0gdHlwZW9mIGI7XG4gICAgICBjb25zdCBvcmRlcnMgPSBbXCJ1bmRlZmluZWRcIiwgXCJvYmplY3RcIiwgXCJib29sZWFuXCIsIFwibnVtYmVyXCIsIFwic3RyaW5nXCJdO1xuICAgICAgaWYgKHR5cGVvZkEgIT09IHR5cGVvZkIpIHtcbiAgICAgICAgcmV0dXJuIG9yZGVycy5pbmRleE9mKHR5cGVvZkEpIC0gb3JkZXJzLmluZGV4T2YodHlwZW9mQik7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mQSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gTnVtYmVyKGEpIC0gTnVtYmVyKGIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbiAgICB9XG4gICAgZXhwb3J0czIuY29tcGFyZVByaW1pdGl2ZSA9IGNvbXBhcmVQcmltaXRpdmU7XG4gICAgZnVuY3Rpb24gbm9ybWFsaXplRGVmYXVsdFJlc3VsdChyZXN1bHQpIHtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHZvaWQgMCA/IHt9IDogcmVzdWx0O1xuICAgIH1cbiAgICBleHBvcnRzMi5ub3JtYWxpemVEZWZhdWx0UmVzdWx0ID0gbm9ybWFsaXplRGVmYXVsdFJlc3VsdDtcbiAgICBmdW5jdGlvbiBub3JtYWxpemVWYWxpZGF0ZVJlc3VsdChyZXN1bHQsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB0cnVlID8gdHJ1ZSA6IHJlc3VsdCA9PT0gZmFsc2UgPyB7XG4gICAgICAgIHZhbHVlXG4gICAgICB9IDogcmVzdWx0O1xuICAgIH1cbiAgICBleHBvcnRzMi5ub3JtYWxpemVWYWxpZGF0ZVJlc3VsdCA9IG5vcm1hbGl6ZVZhbGlkYXRlUmVzdWx0O1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZURlcHJlY2F0ZWRSZXN1bHQocmVzdWx0LCB2YWx1ZSwgZG9Ob3ROb3JtYWxpemVUcnVlID0gZmFsc2UpIHtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IGZhbHNlID8gZmFsc2UgOiByZXN1bHQgPT09IHRydWUgPyBkb05vdE5vcm1hbGl6ZVRydWUgPyB0cnVlIDogW3tcbiAgICAgICAgdmFsdWVcbiAgICAgIH1dIDogXCJ2YWx1ZVwiIGluIHJlc3VsdCA/IFtyZXN1bHRdIDogcmVzdWx0Lmxlbmd0aCA9PT0gMCA/IGZhbHNlIDogcmVzdWx0O1xuICAgIH1cbiAgICBleHBvcnRzMi5ub3JtYWxpemVEZXByZWNhdGVkUmVzdWx0ID0gbm9ybWFsaXplRGVwcmVjYXRlZFJlc3VsdDtcbiAgICBmdW5jdGlvbiBub3JtYWxpemVUcmFuc2ZlclJlc3VsdChyZXN1bHQsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHJlc3VsdCA9PT0gXCJzdHJpbmdcIiB8fCBcImtleVwiIGluIHJlc3VsdCA/IHtcbiAgICAgICAgZnJvbTogdmFsdWUsXG4gICAgICAgIHRvOiByZXN1bHRcbiAgICAgIH0gOiBcImZyb21cIiBpbiByZXN1bHQgPyB7XG4gICAgICAgIGZyb206IHJlc3VsdC5mcm9tLFxuICAgICAgICB0bzogcmVzdWx0LnRvXG4gICAgICB9IDoge1xuICAgICAgICBmcm9tOiB2YWx1ZSxcbiAgICAgICAgdG86IHJlc3VsdC50b1xuICAgICAgfTtcbiAgICB9XG4gICAgZXhwb3J0czIubm9ybWFsaXplVHJhbnNmZXJSZXN1bHQgPSBub3JtYWxpemVUcmFuc2ZlclJlc3VsdDtcbiAgICBmdW5jdGlvbiBub3JtYWxpemVGb3J3YXJkUmVzdWx0KHJlc3VsdCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHZvaWQgMCA/IFtdIDogQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0Lm1hcCgodHJhbnNmZXJSZXN1bHQpID0+IG5vcm1hbGl6ZVRyYW5zZmVyUmVzdWx0KHRyYW5zZmVyUmVzdWx0LCB2YWx1ZSkpIDogW25vcm1hbGl6ZVRyYW5zZmVyUmVzdWx0KHJlc3VsdCwgdmFsdWUpXTtcbiAgICB9XG4gICAgZXhwb3J0czIubm9ybWFsaXplRm9yd2FyZFJlc3VsdCA9IG5vcm1hbGl6ZUZvcndhcmRSZXN1bHQ7XG4gICAgZnVuY3Rpb24gbm9ybWFsaXplUmVkaXJlY3RSZXN1bHQocmVzdWx0LCB2YWx1ZSkge1xuICAgICAgY29uc3QgcmVkaXJlY3QgPSBub3JtYWxpemVGb3J3YXJkUmVzdWx0KHR5cGVvZiByZXN1bHQgPT09IFwib2JqZWN0XCIgJiYgXCJyZWRpcmVjdFwiIGluIHJlc3VsdCA/IHJlc3VsdC5yZWRpcmVjdCA6IHJlc3VsdCwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHJlZGlyZWN0Lmxlbmd0aCA9PT0gMCA/IHtcbiAgICAgICAgcmVtYWluOiB2YWx1ZSxcbiAgICAgICAgcmVkaXJlY3RcbiAgICAgIH0gOiB0eXBlb2YgcmVzdWx0ID09PSBcIm9iamVjdFwiICYmIFwicmVtYWluXCIgaW4gcmVzdWx0ID8ge1xuICAgICAgICByZW1haW46IHJlc3VsdC5yZW1haW4sXG4gICAgICAgIHJlZGlyZWN0XG4gICAgICB9IDoge1xuICAgICAgICByZWRpcmVjdFxuICAgICAgfTtcbiAgICB9XG4gICAgZXhwb3J0czIubm9ybWFsaXplUmVkaXJlY3RSZXN1bHQgPSBub3JtYWxpemVSZWRpcmVjdFJlc3VsdDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jaG9pY2UgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvc2NoZW1hcy9jaG9pY2UuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHNjaGVtYV8xID0gcmVxdWlyZV9zY2hlbWEoKTtcbiAgICB2YXIgdXRpbHNfMSA9IHJlcXVpcmVfdXRpbHMoKTtcbiAgICB2YXIgQ2hvaWNlU2NoZW1hID0gY2xhc3MgZXh0ZW5kcyBzY2hlbWFfMS5TY2hlbWEge1xuICAgICAgY29uc3RydWN0b3IocGFyYW1ldGVycykge1xuICAgICAgICBzdXBlcihwYXJhbWV0ZXJzKTtcbiAgICAgICAgdGhpcy5fY2hvaWNlcyA9IHV0aWxzXzEubWFwRnJvbUFycmF5KHBhcmFtZXRlcnMuY2hvaWNlcy5tYXAoKGNob2ljZSkgPT4gY2hvaWNlICYmIHR5cGVvZiBjaG9pY2UgPT09IFwib2JqZWN0XCIgPyBjaG9pY2UgOiB7XG4gICAgICAgICAgdmFsdWU6IGNob2ljZVxuICAgICAgICB9KSwgXCJ2YWx1ZVwiKTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdGVkKHtcbiAgICAgICAgZGVzY3JpcHRvclxuICAgICAgfSkge1xuICAgICAgICBjb25zdCBjaG9pY2VWYWx1ZXMgPSBBcnJheS5mcm9tKHRoaXMuX2Nob2ljZXMua2V5cygpKS5tYXAoKHZhbHVlKSA9PiB0aGlzLl9jaG9pY2VzLmdldCh2YWx1ZSkpLmZpbHRlcigoY2hvaWNlSW5mbykgPT4gIWNob2ljZUluZm8uZGVwcmVjYXRlZCkubWFwKChjaG9pY2VJbmZvKSA9PiBjaG9pY2VJbmZvLnZhbHVlKS5zb3J0KHV0aWxzXzEuY29tcGFyZVByaW1pdGl2ZSkubWFwKGRlc2NyaXB0b3IudmFsdWUpO1xuICAgICAgICBjb25zdCBoZWFkID0gY2hvaWNlVmFsdWVzLnNsaWNlKDAsIC0yKTtcbiAgICAgICAgY29uc3QgdGFpbCA9IGNob2ljZVZhbHVlcy5zbGljZSgtMik7XG4gICAgICAgIHJldHVybiBoZWFkLmNvbmNhdCh0YWlsLmpvaW4oXCIgb3IgXCIpKS5qb2luKFwiLCBcIik7XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hvaWNlcy5oYXModmFsdWUpO1xuICAgICAgfVxuICAgICAgZGVwcmVjYXRlZCh2YWx1ZSkge1xuICAgICAgICBjb25zdCBjaG9pY2VJbmZvID0gdGhpcy5fY2hvaWNlcy5nZXQodmFsdWUpO1xuICAgICAgICByZXR1cm4gY2hvaWNlSW5mbyAmJiBjaG9pY2VJbmZvLmRlcHJlY2F0ZWQgPyB7XG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSA6IGZhbHNlO1xuICAgICAgfVxuICAgICAgZm9yd2FyZCh2YWx1ZSkge1xuICAgICAgICBjb25zdCBjaG9pY2VJbmZvID0gdGhpcy5fY2hvaWNlcy5nZXQodmFsdWUpO1xuICAgICAgICByZXR1cm4gY2hvaWNlSW5mbyA/IGNob2ljZUluZm8uZm9yd2FyZCA6IHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIHJlZGlyZWN0KHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGNob2ljZUluZm8gPSB0aGlzLl9jaG9pY2VzLmdldCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBjaG9pY2VJbmZvID8gY2hvaWNlSW5mby5yZWRpcmVjdCA6IHZvaWQgMDtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLkNob2ljZVNjaGVtYSA9IENob2ljZVNjaGVtYTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9udW1iZXIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvc2NoZW1hcy9udW1iZXIuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHNjaGVtYV8xID0gcmVxdWlyZV9zY2hlbWEoKTtcbiAgICB2YXIgTnVtYmVyU2NoZW1hID0gY2xhc3MgZXh0ZW5kcyBzY2hlbWFfMS5TY2hlbWEge1xuICAgICAgZXhwZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiBcImEgbnVtYmVyXCI7XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZSh2YWx1ZSwgX3V0aWxzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCI7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5OdW1iZXJTY2hlbWEgPSBOdW1iZXJTY2hlbWE7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaW50ZWdlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi9zY2hlbWFzL2ludGVnZXIuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHV0aWxzXzEgPSByZXF1aXJlX3V0aWxzKCk7XG4gICAgdmFyIG51bWJlcl8xID0gcmVxdWlyZV9udW1iZXIoKTtcbiAgICB2YXIgSW50ZWdlclNjaGVtYSA9IGNsYXNzIGV4dGVuZHMgbnVtYmVyXzEuTnVtYmVyU2NoZW1hIHtcbiAgICAgIGV4cGVjdGVkKCkge1xuICAgICAgICByZXR1cm4gXCJhbiBpbnRlZ2VyXCI7XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZSh2YWx1ZSwgdXRpbHMpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLm5vcm1hbGl6ZVZhbGlkYXRlUmVzdWx0KHN1cGVyLnZhbGlkYXRlKHZhbHVlLCB1dGlscyksIHZhbHVlKSA9PT0gdHJ1ZSAmJiB1dGlsc18xLmlzSW50KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLkludGVnZXJTY2hlbWEgPSBJbnRlZ2VyU2NoZW1hO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3N0cmluZyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi9zY2hlbWFzL3N0cmluZy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc2NoZW1hXzEgPSByZXF1aXJlX3NjaGVtYSgpO1xuICAgIHZhciBTdHJpbmdTY2hlbWEgPSBjbGFzcyBleHRlbmRzIHNjaGVtYV8xLlNjaGVtYSB7XG4gICAgICBleHBlY3RlZCgpIHtcbiAgICAgICAgcmV0dXJuIFwiYSBzdHJpbmdcIjtcbiAgICAgIH1cbiAgICAgIHZhbGlkYXRlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5TdHJpbmdTY2hlbWEgPSBTdHJpbmdTY2hlbWE7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc2NoZW1hcyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi9zY2hlbWFzL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciB0c2xpYl8xID0gKGluaXRfdHNsaWJfZXM2KCksIF9fdG9Db21tb25KUyh0c2xpYl9lczZfZXhwb3J0cykpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfYWxpYXMoKSwgZXhwb3J0czIpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfYW55KCksIGV4cG9ydHMyKTtcbiAgICB0c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlX2FycmF5MigpLCBleHBvcnRzMik7XG4gICAgdHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZV9ib29sZWFuKCksIGV4cG9ydHMyKTtcbiAgICB0c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlX2Nob2ljZSgpLCBleHBvcnRzMik7XG4gICAgdHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZV9pbnRlZ2VyKCksIGV4cG9ydHMyKTtcbiAgICB0c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlX251bWJlcigpLCBleHBvcnRzMik7XG4gICAgdHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZV9zdHJpbmcoKSwgZXhwb3J0czIpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2RlZmF1bHRzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy92bm9wdHMvbGliL2RlZmF1bHRzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBhcGlfMSA9IHJlcXVpcmVfYXBpKCk7XG4gICAgdmFyIGNvbW1vbl8xID0gcmVxdWlyZV9jb21tb24oKTtcbiAgICB2YXIgaW52YWxpZF8xID0gcmVxdWlyZV9pbnZhbGlkKCk7XG4gICAgdmFyIGxldmVuXzEgPSByZXF1aXJlX2xldmVuMigpO1xuICAgIGV4cG9ydHMyLmRlZmF1bHREZXNjcmlwdG9yID0gYXBpXzEuYXBpRGVzY3JpcHRvcjtcbiAgICBleHBvcnRzMi5kZWZhdWx0VW5rbm93bkhhbmRsZXIgPSBsZXZlbl8xLmxldmVuVW5rbm93bkhhbmRsZXI7XG4gICAgZXhwb3J0czIuZGVmYXVsdEludmFsaWRIYW5kbGVyID0gaW52YWxpZF8xLmNvbW1vbkludmFsaWRIYW5kbGVyO1xuICAgIGV4cG9ydHMyLmRlZmF1bHREZXByZWNhdGVkSGFuZGxlciA9IGNvbW1vbl8xLmNvbW1vbkRlcHJlY2F0ZWRIYW5kbGVyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX25vcm1hbGl6ZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdm5vcHRzL2xpYi9ub3JtYWxpemUuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIGRlZmF1bHRzXzEgPSByZXF1aXJlX2RlZmF1bHRzKCk7XG4gICAgdmFyIHV0aWxzXzEgPSByZXF1aXJlX3V0aWxzKCk7XG4gICAgZXhwb3J0czIubm9ybWFsaXplID0gKG9wdGlvbnMsIHNjaGVtYXMsIG9wdHMpID0+IG5ldyBOb3JtYWxpemVyKHNjaGVtYXMsIG9wdHMpLm5vcm1hbGl6ZShvcHRpb25zKTtcbiAgICB2YXIgTm9ybWFsaXplciA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKHNjaGVtYXMsIG9wdHMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGxvZ2dlciA9IGNvbnNvbGUsXG4gICAgICAgICAgZGVzY3JpcHRvciA9IGRlZmF1bHRzXzEuZGVmYXVsdERlc2NyaXB0b3IsXG4gICAgICAgICAgdW5rbm93biA9IGRlZmF1bHRzXzEuZGVmYXVsdFVua25vd25IYW5kbGVyLFxuICAgICAgICAgIGludmFsaWQgPSBkZWZhdWx0c18xLmRlZmF1bHRJbnZhbGlkSGFuZGxlcixcbiAgICAgICAgICBkZXByZWNhdGVkID0gZGVmYXVsdHNfMS5kZWZhdWx0RGVwcmVjYXRlZEhhbmRsZXJcbiAgICAgICAgfSA9IG9wdHMgfHwge307XG4gICAgICAgIHRoaXMuX3V0aWxzID0ge1xuICAgICAgICAgIGRlc2NyaXB0b3IsXG4gICAgICAgICAgbG9nZ2VyOiBsb2dnZXIgfHwge1xuICAgICAgICAgICAgd2FybjogKCkgPT4ge1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2NoZW1hczogdXRpbHNfMS5yZWNvcmRGcm9tQXJyYXkoc2NoZW1hcywgXCJuYW1lXCIpLFxuICAgICAgICAgIG5vcm1hbGl6ZURlZmF1bHRSZXN1bHQ6IHV0aWxzXzEubm9ybWFsaXplRGVmYXVsdFJlc3VsdCxcbiAgICAgICAgICBub3JtYWxpemVEZXByZWNhdGVkUmVzdWx0OiB1dGlsc18xLm5vcm1hbGl6ZURlcHJlY2F0ZWRSZXN1bHQsXG4gICAgICAgICAgbm9ybWFsaXplRm9yd2FyZFJlc3VsdDogdXRpbHNfMS5ub3JtYWxpemVGb3J3YXJkUmVzdWx0LFxuICAgICAgICAgIG5vcm1hbGl6ZVJlZGlyZWN0UmVzdWx0OiB1dGlsc18xLm5vcm1hbGl6ZVJlZGlyZWN0UmVzdWx0LFxuICAgICAgICAgIG5vcm1hbGl6ZVZhbGlkYXRlUmVzdWx0OiB1dGlsc18xLm5vcm1hbGl6ZVZhbGlkYXRlUmVzdWx0XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3Vua25vd25IYW5kbGVyID0gdW5rbm93bjtcbiAgICAgICAgdGhpcy5faW52YWxpZEhhbmRsZXIgPSBpbnZhbGlkO1xuICAgICAgICB0aGlzLl9kZXByZWNhdGVkSGFuZGxlciA9IGRlcHJlY2F0ZWQ7XG4gICAgICAgIHRoaXMuY2xlYW5IaXN0b3J5KCk7XG4gICAgICB9XG4gICAgICBjbGVhbkhpc3RvcnkoKSB7XG4gICAgICAgIHRoaXMuX2hhc0RlcHJlY2F0aW9uV2FybmVkID0gdXRpbHNfMS5jcmVhdGVBdXRvQ2hlY2tsaXN0KCk7XG4gICAgICB9XG4gICAgICBub3JtYWxpemUob3B0aW9ucykge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0ge307XG4gICAgICAgIGNvbnN0IHJlc3RPcHRpb25zQXJyYXkgPSBbb3B0aW9uc107XG4gICAgICAgIGNvbnN0IGFwcGx5Tm9ybWFsaXphdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICB3aGlsZSAocmVzdE9wdGlvbnNBcnJheS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gcmVzdE9wdGlvbnNBcnJheS5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmZXJyZWRPcHRpb25zQXJyYXkgPSB0aGlzLl9hcHBseU5vcm1hbGl6YXRpb24oY3VycmVudE9wdGlvbnMsIG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgcmVzdE9wdGlvbnNBcnJheS5wdXNoKC4uLnRyYW5zZmVycmVkT3B0aW9uc0FycmF5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGFwcGx5Tm9ybWFsaXphdGlvbigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLl91dGlscy5zY2hlbWFzKSkge1xuICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuX3V0aWxzLnNjaGVtYXNba2V5XTtcbiAgICAgICAgICBpZiAoIShrZXkgaW4gbm9ybWFsaXplZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRSZXN1bHQgPSB1dGlsc18xLm5vcm1hbGl6ZURlZmF1bHRSZXN1bHQoc2NoZW1hLmRlZmF1bHQodGhpcy5fdXRpbHMpKTtcbiAgICAgICAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVmYXVsdFJlc3VsdCkge1xuICAgICAgICAgICAgICByZXN0T3B0aW9uc0FycmF5LnB1c2goe1xuICAgICAgICAgICAgICAgIFtrZXldOiBkZWZhdWx0UmVzdWx0LnZhbHVlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhcHBseU5vcm1hbGl6YXRpb24oKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5fdXRpbHMuc2NoZW1hcykpIHtcbiAgICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLl91dGlscy5zY2hlbWFzW2tleV07XG4gICAgICAgICAgaWYgKGtleSBpbiBub3JtYWxpemVkKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkW2tleV0gPSBzY2hlbWEucG9zdHByb2Nlc3Mobm9ybWFsaXplZFtrZXldLCB0aGlzLl91dGlscyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgfVxuICAgICAgX2FwcGx5Tm9ybWFsaXphdGlvbihvcHRpb25zLCBub3JtYWxpemVkKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVycmVkT3B0aW9uc0FycmF5ID0gW107XG4gICAgICAgIGNvbnN0IFtrbm93bk9wdGlvbk5hbWVzLCB1bmtub3duT3B0aW9uTmFtZXNdID0gdXRpbHNfMS5wYXJ0aXRpb24oT2JqZWN0LmtleXMob3B0aW9ucyksIChrZXkpID0+IGtleSBpbiB0aGlzLl91dGlscy5zY2hlbWFzKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga25vd25PcHRpb25OYW1lcykge1xuICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuX3V0aWxzLnNjaGVtYXNba2V5XTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNjaGVtYS5wcmVwcm9jZXNzKG9wdGlvbnNba2V5XSwgdGhpcy5fdXRpbHMpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gdXRpbHNfMS5ub3JtYWxpemVWYWxpZGF0ZVJlc3VsdChzY2hlbWEudmFsaWRhdGUodmFsdWUsIHRoaXMuX3V0aWxzKSwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWxpZGF0ZVJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICB2YWx1ZTogaW52YWxpZFZhbHVlXG4gICAgICAgICAgICB9ID0gdmFsaWRhdGVSZXN1bHQ7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VPckVycm9yID0gdGhpcy5faW52YWxpZEhhbmRsZXIoa2V5LCBpbnZhbGlkVmFsdWUsIHRoaXMuX3V0aWxzKTtcbiAgICAgICAgICAgIHRocm93IHR5cGVvZiBlcnJvck1lc3NhZ2VPckVycm9yID09PSBcInN0cmluZ1wiID8gbmV3IEVycm9yKGVycm9yTWVzc2FnZU9yRXJyb3IpIDogZXJyb3JNZXNzYWdlT3JFcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYXBwZW5kVHJhbnNmZXJyZWRPcHRpb25zID0gKHtcbiAgICAgICAgICAgIGZyb20sXG4gICAgICAgICAgICB0b1xuICAgICAgICAgIH0pID0+IHtcbiAgICAgICAgICAgIHRyYW5zZmVycmVkT3B0aW9uc0FycmF5LnB1c2godHlwZW9mIHRvID09PSBcInN0cmluZ1wiID8ge1xuICAgICAgICAgICAgICBbdG9dOiBmcm9tXG4gICAgICAgICAgICB9IDoge1xuICAgICAgICAgICAgICBbdG8ua2V5XTogdG8udmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3Qgd2FybkRlcHJlY2F0ZWQgPSAoe1xuICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIHJlZGlyZWN0VG9cbiAgICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZXByZWNhdGVkUmVzdWx0ID0gdXRpbHNfMS5ub3JtYWxpemVEZXByZWNhdGVkUmVzdWx0KHNjaGVtYS5kZXByZWNhdGVkKGN1cnJlbnRWYWx1ZSwgdGhpcy5fdXRpbHMpLCB2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoZGVwcmVjYXRlZFJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlcHJlY2F0ZWRSZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLl9oYXNEZXByZWNhdGlvbldhcm5lZChrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXRpbHMubG9nZ2VyLndhcm4odGhpcy5fZGVwcmVjYXRlZEhhbmRsZXIoa2V5LCByZWRpcmVjdFRvLCB0aGlzLl91dGlscykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGVwcmVjYXRlZFZhbHVlXG4gICAgICAgICAgICAgIH0gb2YgZGVwcmVjYXRlZFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhaXIgPSB7XG4gICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogZGVwcmVjYXRlZFZhbHVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2hhc0RlcHJlY2F0aW9uV2FybmVkKHBhaXIpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdFRvUGFpciA9IHR5cGVvZiByZWRpcmVjdFRvID09PSBcInN0cmluZ1wiID8ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IHJlZGlyZWN0VG8sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkZXByZWNhdGVkVmFsdWVcbiAgICAgICAgICAgICAgICAgIH0gOiByZWRpcmVjdFRvO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbHMubG9nZ2VyLndhcm4odGhpcy5fZGVwcmVjYXRlZEhhbmRsZXIocGFpciwgcmVkaXJlY3RUb1BhaXIsIHRoaXMuX3V0aWxzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBmb3J3YXJkUmVzdWx0ID0gdXRpbHNfMS5ub3JtYWxpemVGb3J3YXJkUmVzdWx0KHNjaGVtYS5mb3J3YXJkKHZhbHVlLCB0aGlzLl91dGlscyksIHZhbHVlKTtcbiAgICAgICAgICBmb3J3YXJkUmVzdWx0LmZvckVhY2goYXBwZW5kVHJhbnNmZXJyZWRPcHRpb25zKTtcbiAgICAgICAgICBjb25zdCByZWRpcmVjdFJlc3VsdCA9IHV0aWxzXzEubm9ybWFsaXplUmVkaXJlY3RSZXN1bHQoc2NoZW1hLnJlZGlyZWN0KHZhbHVlLCB0aGlzLl91dGlscyksIHZhbHVlKTtcbiAgICAgICAgICByZWRpcmVjdFJlc3VsdC5yZWRpcmVjdC5mb3JFYWNoKGFwcGVuZFRyYW5zZmVycmVkT3B0aW9ucyk7XG4gICAgICAgICAgaWYgKFwicmVtYWluXCIgaW4gcmVkaXJlY3RSZXN1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1ZhbHVlID0gcmVkaXJlY3RSZXN1bHQucmVtYWluO1xuICAgICAgICAgICAgbm9ybWFsaXplZFtrZXldID0ga2V5IGluIG5vcm1hbGl6ZWQgPyBzY2hlbWEub3ZlcmxhcChub3JtYWxpemVkW2tleV0sIHJlbWFpbmluZ1ZhbHVlLCB0aGlzLl91dGlscykgOiByZW1haW5pbmdWYWx1ZTtcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGVkKHtcbiAgICAgICAgICAgICAgdmFsdWU6IHJlbWFpbmluZ1ZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChjb25zdCB7XG4gICAgICAgICAgICBmcm9tLFxuICAgICAgICAgICAgdG9cbiAgICAgICAgICB9IG9mIHJlZGlyZWN0UmVzdWx0LnJlZGlyZWN0KSB7XG4gICAgICAgICAgICB3YXJuRGVwcmVjYXRlZCh7XG4gICAgICAgICAgICAgIHZhbHVlOiBmcm9tLFxuICAgICAgICAgICAgICByZWRpcmVjdFRvOiB0b1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHVua25vd25PcHRpb25OYW1lcykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uc1trZXldO1xuICAgICAgICAgIGNvbnN0IHVua25vd25SZXN1bHQgPSB0aGlzLl91bmtub3duSGFuZGxlcihrZXksIHZhbHVlLCB0aGlzLl91dGlscyk7XG4gICAgICAgICAgaWYgKHVua25vd25SZXN1bHQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdW5rbm93bktleSBvZiBPYmplY3Qua2V5cyh1bmtub3duUmVzdWx0KSkge1xuICAgICAgICAgICAgICBjb25zdCB1bmtub3duT3B0aW9uID0ge1xuICAgICAgICAgICAgICAgIFt1bmtub3duS2V5XTogdW5rbm93blJlc3VsdFt1bmtub3duS2V5XVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBpZiAodW5rbm93bktleSBpbiB0aGlzLl91dGlscy5zY2hlbWFzKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmZXJyZWRPcHRpb25zQXJyYXkucHVzaCh1bmtub3duT3B0aW9uKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG5vcm1hbGl6ZWQsIHVua25vd25PcHRpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFuc2ZlcnJlZE9wdGlvbnNBcnJheTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLk5vcm1hbGl6ZXIgPSBOb3JtYWxpemVyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xpYjIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Zub3B0cy9saWIvaW5kZXguanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHRzbGliXzEgPSAoaW5pdF90c2xpYl9lczYoKSwgX190b0NvbW1vbkpTKHRzbGliX2VzNl9leHBvcnRzKSk7XG4gICAgdHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZV9kZXNjcmlwdG9yczIoKSwgZXhwb3J0czIpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfaGFuZGxlcnMoKSwgZXhwb3J0czIpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfc2NoZW1hcygpLCBleHBvcnRzMik7XG4gICAgdHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZV9ub3JtYWxpemUoKSwgZXhwb3J0czIpO1xuICAgIHRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmVfc2NoZW1hKCksIGV4cG9ydHMyKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9vcHRpb25zX25vcm1hbGl6ZXIgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL21haW4vb3B0aW9ucy1ub3JtYWxpemVyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgdm5vcHRzID0gcmVxdWlyZV9saWIyKCk7XG4gICAgdmFyIGdldExhc3QgPSByZXF1aXJlX2dldF9sYXN0KCk7XG4gICAgdmFyIGNsaURlc2NyaXB0b3IgPSB7XG4gICAgICBrZXk6IChrZXkpID0+IGtleS5sZW5ndGggPT09IDEgPyBgLSR7a2V5fWAgOiBgLS0ke2tleX1gLFxuICAgICAgdmFsdWU6ICh2YWx1ZSkgPT4gdm5vcHRzLmFwaURlc2NyaXB0b3IudmFsdWUodmFsdWUpLFxuICAgICAgcGFpcjogKHtcbiAgICAgICAga2V5LFxuICAgICAgICB2YWx1ZVxuICAgICAgfSkgPT4gdmFsdWUgPT09IGZhbHNlID8gYC0tbm8tJHtrZXl9YCA6IHZhbHVlID09PSB0cnVlID8gY2xpRGVzY3JpcHRvci5rZXkoa2V5KSA6IHZhbHVlID09PSBcIlwiID8gYCR7Y2xpRGVzY3JpcHRvci5rZXkoa2V5KX0gd2l0aG91dCBhbiBhcmd1bWVudGAgOiBgJHtjbGlEZXNjcmlwdG9yLmtleShrZXkpfT0ke3ZhbHVlfWBcbiAgICB9O1xuICAgIHZhciBnZXRGbGFnU2NoZW1hID0gKHtcbiAgICAgIGNvbG9yc01vZHVsZSxcbiAgICAgIGxldmVuc2h0ZWluRGlzdGFuY2VcbiAgICB9KSA9PiBjbGFzcyBGbGFnU2NoZW1hIGV4dGVuZHMgdm5vcHRzLkNob2ljZVNjaGVtYSB7XG4gICAgICBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGZsYWdzXG4gICAgICB9KSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGNob2ljZXM6IGZsYWdzXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9mbGFncyA9IFsuLi5mbGFnc10uc29ydCgpO1xuICAgICAgfVxuICAgICAgcHJlcHJvY2Vzcyh2YWx1ZSwgdXRpbHMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwICYmICF0aGlzLl9mbGFncy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBzdWdnZXN0aW9uID0gdGhpcy5fZmxhZ3MuZmluZCgoZmxhZykgPT4gbGV2ZW5zaHRlaW5EaXN0YW5jZShmbGFnLCB2YWx1ZSkgPCAzKTtcbiAgICAgICAgICBpZiAoc3VnZ2VzdGlvbikge1xuICAgICAgICAgICAgdXRpbHMubG9nZ2VyLndhcm4oW2BVbmtub3duIGZsYWcgJHtjb2xvcnNNb2R1bGUueWVsbG93KHV0aWxzLmRlc2NyaXB0b3IudmFsdWUodmFsdWUpKX0sYCwgYGRpZCB5b3UgbWVhbiAke2NvbG9yc01vZHVsZS5ibHVlKHV0aWxzLmRlc2NyaXB0b3IudmFsdWUoc3VnZ2VzdGlvbikpfT9gXS5qb2luKFwiIFwiKSk7XG4gICAgICAgICAgICByZXR1cm4gc3VnZ2VzdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgZXhwZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiBcImEgZmxhZ1wiO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIGhhc0RlcHJlY2F0aW9uV2FybmVkO1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbnMob3B0aW9ucywgb3B0aW9uSW5mb3MsIHtcbiAgICAgIGxvZ2dlciA9IGZhbHNlLFxuICAgICAgaXNDTEkgPSBmYWxzZSxcbiAgICAgIHBhc3NUaHJvdWdoID0gZmFsc2UsXG4gICAgICBjb2xvcnNNb2R1bGUgPSBudWxsLFxuICAgICAgbGV2ZW5zaHRlaW5EaXN0YW5jZSA9IG51bGxcbiAgICB9ID0ge30pIHtcbiAgICAgIGNvbnN0IHVua25vd24gPSAhcGFzc1Rocm91Z2ggPyAoa2V5LCB2YWx1ZSwgb3B0aW9uczIpID0+IHtcbiAgICAgICAgY29uc3QgX29wdGlvbnMyJHNjaGVtYXMgPSBvcHRpb25zMi5zY2hlbWFzLCB7XG4gICAgICAgICAgX1xuICAgICAgICB9ID0gX29wdGlvbnMyJHNjaGVtYXMsIHNjaGVtYXMyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9vcHRpb25zMiRzY2hlbWFzLCBfZXhjbHVkZWQyKTtcbiAgICAgICAgcmV0dXJuIHZub3B0cy5sZXZlblVua25vd25IYW5kbGVyKGtleSwgdmFsdWUsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9uczIpLCB7fSwge1xuICAgICAgICAgIHNjaGVtYXM6IHNjaGVtYXMyXG4gICAgICAgIH0pKTtcbiAgICAgIH0gOiBBcnJheS5pc0FycmF5KHBhc3NUaHJvdWdoKSA/IChrZXksIHZhbHVlKSA9PiAhcGFzc1Rocm91Z2guaW5jbHVkZXMoa2V5KSA/IHZvaWQgMCA6IHtcbiAgICAgICAgW2tleV06IHZhbHVlXG4gICAgICB9IDogKGtleSwgdmFsdWUpID0+ICh7XG4gICAgICAgIFtrZXldOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yID0gaXNDTEkgPyBjbGlEZXNjcmlwdG9yIDogdm5vcHRzLmFwaURlc2NyaXB0b3I7XG4gICAgICBjb25zdCBzY2hlbWFzID0gb3B0aW9uSW5mb3NUb1NjaGVtYXMob3B0aW9uSW5mb3MsIHtcbiAgICAgICAgaXNDTEksXG4gICAgICAgIGNvbG9yc01vZHVsZSxcbiAgICAgICAgbGV2ZW5zaHRlaW5EaXN0YW5jZVxuICAgICAgfSk7XG4gICAgICBjb25zdCBub3JtYWxpemVyID0gbmV3IHZub3B0cy5Ob3JtYWxpemVyKHNjaGVtYXMsIHtcbiAgICAgICAgbG9nZ2VyLFxuICAgICAgICB1bmtub3duLFxuICAgICAgICBkZXNjcmlwdG9yXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNob3VsZFN1cHByZXNzRHVwbGljYXRlRGVwcmVjYXRpb25XYXJuaW5ncyA9IGxvZ2dlciAhPT0gZmFsc2U7XG4gICAgICBpZiAoc2hvdWxkU3VwcHJlc3NEdXBsaWNhdGVEZXByZWNhdGlvbldhcm5pbmdzICYmIGhhc0RlcHJlY2F0aW9uV2FybmVkKSB7XG4gICAgICAgIG5vcm1hbGl6ZXIuX2hhc0RlcHJlY2F0aW9uV2FybmVkID0gaGFzRGVwcmVjYXRpb25XYXJuZWQ7XG4gICAgICB9XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplci5ub3JtYWxpemUob3B0aW9ucyk7XG4gICAgICBpZiAoc2hvdWxkU3VwcHJlc3NEdXBsaWNhdGVEZXByZWNhdGlvbldhcm5pbmdzKSB7XG4gICAgICAgIGhhc0RlcHJlY2F0aW9uV2FybmVkID0gbm9ybWFsaXplci5faGFzRGVwcmVjYXRpb25XYXJuZWQ7XG4gICAgICB9XG4gICAgICBpZiAoaXNDTEkgJiYgbm9ybWFsaXplZFtcInBsdWdpbi1zZWFyY2hcIl0gPT09IGZhbHNlKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRbXCJwbHVnaW4tc2VhcmNoLWRpclwiXSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9wdGlvbkluZm9zVG9TY2hlbWFzKG9wdGlvbkluZm9zLCB7XG4gICAgICBpc0NMSSxcbiAgICAgIGNvbG9yc01vZHVsZSxcbiAgICAgIGxldmVuc2h0ZWluRGlzdGFuY2VcbiAgICB9KSB7XG4gICAgICBjb25zdCBzY2hlbWFzID0gW107XG4gICAgICBpZiAoaXNDTEkpIHtcbiAgICAgICAgc2NoZW1hcy5wdXNoKHZub3B0cy5BbnlTY2hlbWEuY3JlYXRlKHtcbiAgICAgICAgICBuYW1lOiBcIl9cIlxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbkluZm8gb2Ygb3B0aW9uSW5mb3MpIHtcbiAgICAgICAgc2NoZW1hcy5wdXNoKG9wdGlvbkluZm9Ub1NjaGVtYShvcHRpb25JbmZvLCB7XG4gICAgICAgICAgaXNDTEksXG4gICAgICAgICAgb3B0aW9uSW5mb3MsXG4gICAgICAgICAgY29sb3JzTW9kdWxlLFxuICAgICAgICAgIGxldmVuc2h0ZWluRGlzdGFuY2VcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAob3B0aW9uSW5mby5hbGlhcyAmJiBpc0NMSSkge1xuICAgICAgICAgIHNjaGVtYXMucHVzaCh2bm9wdHMuQWxpYXNTY2hlbWEuY3JlYXRlKHtcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbkluZm8uYWxpYXMsXG4gICAgICAgICAgICBzb3VyY2VOYW1lOiBvcHRpb25JbmZvLm5hbWVcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzY2hlbWFzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBvcHRpb25JbmZvVG9TY2hlbWEob3B0aW9uSW5mbywge1xuICAgICAgaXNDTEksXG4gICAgICBvcHRpb25JbmZvcyxcbiAgICAgIGNvbG9yc01vZHVsZSxcbiAgICAgIGxldmVuc2h0ZWluRGlzdGFuY2VcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG5hbWVcbiAgICAgIH0gPSBvcHRpb25JbmZvO1xuICAgICAgaWYgKG5hbWUgPT09IFwicGx1Z2luLXNlYXJjaC1kaXJcIiB8fCBuYW1lID09PSBcInBsdWdpblNlYXJjaERpcnNcIikge1xuICAgICAgICByZXR1cm4gdm5vcHRzLkFueVNjaGVtYS5jcmVhdGUoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcHJlcHJvY2Vzcyh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdGUodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuZXZlcnkoKGRpcikgPT4gdHlwZW9mIGRpciA9PT0gXCJzdHJpbmdcIik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleHBlY3RlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBcImZhbHNlIG9yIHBhdGhzIHRvIHBsdWdpbiBzZWFyY2ggZGlyXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICAgIG5hbWVcbiAgICAgIH07XG4gICAgICBsZXQgU2NoZW1hQ29uc3RydWN0b3I7XG4gICAgICBjb25zdCBoYW5kbGVycyA9IHt9O1xuICAgICAgc3dpdGNoIChvcHRpb25JbmZvLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImludFwiOlxuICAgICAgICAgIFNjaGVtYUNvbnN0cnVjdG9yID0gdm5vcHRzLkludGVnZXJTY2hlbWE7XG4gICAgICAgICAgaWYgKGlzQ0xJKSB7XG4gICAgICAgICAgICBwYXJhbWV0ZXJzLnByZXByb2Nlc3MgPSBOdW1iZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgU2NoZW1hQ29uc3RydWN0b3IgPSB2bm9wdHMuU3RyaW5nU2NoZW1hO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiY2hvaWNlXCI6XG4gICAgICAgICAgU2NoZW1hQ29uc3RydWN0b3IgPSB2bm9wdHMuQ2hvaWNlU2NoZW1hO1xuICAgICAgICAgIHBhcmFtZXRlcnMuY2hvaWNlcyA9IG9wdGlvbkluZm8uY2hvaWNlcy5tYXAoKGNob2ljZUluZm8pID0+IHR5cGVvZiBjaG9pY2VJbmZvID09PSBcIm9iamVjdFwiICYmIGNob2ljZUluZm8ucmVkaXJlY3QgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNob2ljZUluZm8pLCB7fSwge1xuICAgICAgICAgICAgcmVkaXJlY3Q6IHtcbiAgICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICBrZXk6IG9wdGlvbkluZm8ubmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hvaWNlSW5mby5yZWRpcmVjdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgOiBjaG9pY2VJbmZvKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICBTY2hlbWFDb25zdHJ1Y3RvciA9IHZub3B0cy5Cb29sZWFuU2NoZW1hO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZmxhZ1wiOlxuICAgICAgICAgIFNjaGVtYUNvbnN0cnVjdG9yID0gZ2V0RmxhZ1NjaGVtYSh7XG4gICAgICAgICAgICBjb2xvcnNNb2R1bGUsXG4gICAgICAgICAgICBsZXZlbnNodGVpbkRpc3RhbmNlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcGFyYW1ldGVycy5mbGFncyA9IG9wdGlvbkluZm9zLmZsYXRNYXAoKG9wdGlvbkluZm8yKSA9PiBbb3B0aW9uSW5mbzIuYWxpYXMsIG9wdGlvbkluZm8yLmRlc2NyaXB0aW9uICYmIG9wdGlvbkluZm8yLm5hbWUsIG9wdGlvbkluZm8yLm9wcG9zaXRlRGVzY3JpcHRpb24gJiYgYG5vLSR7b3B0aW9uSW5mbzIubmFtZX1gXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicGF0aFwiOlxuICAgICAgICAgIFNjaGVtYUNvbnN0cnVjdG9yID0gdm5vcHRzLlN0cmluZ1NjaGVtYTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdHlwZSAke29wdGlvbkluZm8udHlwZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25JbmZvLmV4Y2VwdGlvbikge1xuICAgICAgICBwYXJhbWV0ZXJzLnZhbGlkYXRlID0gKHZhbHVlLCBzY2hlbWEsIHV0aWxzKSA9PiBvcHRpb25JbmZvLmV4Y2VwdGlvbih2YWx1ZSkgfHwgc2NoZW1hLnZhbGlkYXRlKHZhbHVlLCB1dGlscyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbWV0ZXJzLnZhbGlkYXRlID0gKHZhbHVlLCBzY2hlbWEsIHV0aWxzKSA9PiB2YWx1ZSA9PT0gdm9pZCAwIHx8IHNjaGVtYS52YWxpZGF0ZSh2YWx1ZSwgdXRpbHMpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbkluZm8ucmVkaXJlY3QpIHtcbiAgICAgICAgaGFuZGxlcnMucmVkaXJlY3QgPSAodmFsdWUpID0+ICF2YWx1ZSA/IHZvaWQgMCA6IHtcbiAgICAgICAgICB0bzoge1xuICAgICAgICAgICAga2V5OiBvcHRpb25JbmZvLnJlZGlyZWN0Lm9wdGlvbixcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb25JbmZvLnJlZGlyZWN0LnZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbkluZm8uZGVwcmVjYXRlZCkge1xuICAgICAgICBoYW5kbGVycy5kZXByZWNhdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0NMSSAmJiAhb3B0aW9uSW5mby5hcnJheSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFByZXByb2Nlc3MgPSBwYXJhbWV0ZXJzLnByZXByb2Nlc3MgfHwgKCh4KSA9PiB4KTtcbiAgICAgICAgcGFyYW1ldGVycy5wcmVwcm9jZXNzID0gKHZhbHVlLCBzY2hlbWEsIHV0aWxzKSA9PiBzY2hlbWEucHJlcHJvY2VzcyhvcmlnaW5hbFByZXByb2Nlc3MoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBnZXRMYXN0KHZhbHVlKSA6IHZhbHVlKSwgdXRpbHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbkluZm8uYXJyYXkgPyB2bm9wdHMuQXJyYXlTY2hlbWEuY3JlYXRlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpc0NMSSA/IHtcbiAgICAgICAgcHJlcHJvY2VzczogKHYpID0+IEFycmF5LmlzQXJyYXkodikgPyB2IDogW3ZdXG4gICAgICB9IDoge30pLCBoYW5kbGVycyksIHt9LCB7XG4gICAgICAgIHZhbHVlU2NoZW1hOiBTY2hlbWFDb25zdHJ1Y3Rvci5jcmVhdGUocGFyYW1ldGVycylcbiAgICAgIH0pKSA6IFNjaGVtYUNvbnN0cnVjdG9yLmNyZWF0ZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHBhcmFtZXRlcnMpLCBoYW5kbGVycykpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBub3JtYWxpemVBcGlPcHRpb25zKG9wdGlvbnMsIG9wdGlvbkluZm9zLCBvcHRzKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplT3B0aW9ucyhvcHRpb25zLCBvcHRpb25JbmZvcywgb3B0cyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUNsaU9wdGlvbnMob3B0aW9ucywgb3B0aW9uSW5mb3MsIG9wdHMpIHtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBpZiAoIW9wdHMuY29sb3JzTW9kdWxlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiJ2NvbG9yc01vZHVsZScgb3B0aW9uIGlzIHJlcXVpcmVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdHMubGV2ZW5zaHRlaW5EaXN0YW5jZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIidsZXZlbnNodGVpbkRpc3RhbmNlJyBvcHRpb24gaXMgcmVxdWlyZWQuXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9ybWFsaXplT3B0aW9ucyhvcHRpb25zLCBvcHRpb25JbmZvcywgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGlzQ0xJOiB0cnVlXG4gICAgICB9LCBvcHRzKSk7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIG5vcm1hbGl6ZUFwaU9wdGlvbnMsXG4gICAgICBub3JtYWxpemVDbGlPcHRpb25zXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sb2MgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL2xvYy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGlzTm9uRW1wdHlBcnJheSA9IHJlcXVpcmVfaXNfbm9uX2VtcHR5X2FycmF5KCk7XG4gICAgZnVuY3Rpb24gbG9jU3RhcnQobm9kZSwgb3B0cykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBpZ25vcmVEZWNvcmF0b3JzXG4gICAgICB9ID0gb3B0cyB8fCB7fTtcbiAgICAgIGlmICghaWdub3JlRGVjb3JhdG9ycykge1xuICAgICAgICBjb25zdCBkZWNvcmF0b3JzID0gbm9kZS5kZWNsYXJhdGlvbiAmJiBub2RlLmRlY2xhcmF0aW9uLmRlY29yYXRvcnMgfHwgbm9kZS5kZWNvcmF0b3JzO1xuICAgICAgICBpZiAoaXNOb25FbXB0eUFycmF5KGRlY29yYXRvcnMpKSB7XG4gICAgICAgICAgcmV0dXJuIGxvY1N0YXJ0KGRlY29yYXRvcnNbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZS5yYW5nZSA/IG5vZGUucmFuZ2VbMF0gOiBub2RlLnN0YXJ0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBsb2NFbmQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUucmFuZ2UgPyBub2RlLnJhbmdlWzFdIDogbm9kZS5lbmQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1NhbWVMb2NTdGFydChub2RlQSwgbm9kZUIpIHtcbiAgICAgIGNvbnN0IG5vZGVBU3RhcnQgPSBsb2NTdGFydChub2RlQSk7XG4gICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihub2RlQVN0YXJ0KSAmJiBub2RlQVN0YXJ0ID09PSBsb2NTdGFydChub2RlQik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1NhbWVMb2NFbmQobm9kZUEsIG5vZGVCKSB7XG4gICAgICBjb25zdCBub2RlQUVuZCA9IGxvY0VuZChub2RlQSk7XG4gICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihub2RlQUVuZCkgJiYgbm9kZUFFbmQgPT09IGxvY0VuZChub2RlQik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1NhbWVMb2Mobm9kZUEsIG5vZGVCKSB7XG4gICAgICByZXR1cm4gaGFzU2FtZUxvY1N0YXJ0KG5vZGVBLCBub2RlQikgJiYgaGFzU2FtZUxvY0VuZChub2RlQSwgbm9kZUIpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZCxcbiAgICAgIGhhc1NhbWVMb2NTdGFydCxcbiAgICAgIGhhc1NhbWVMb2NcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xvYWRfcGFyc2VyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9tYWluL2xvYWQtcGFyc2VyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciB7XG4gICAgICBDb25maWdFcnJvclxuICAgIH0gPSByZXF1aXJlX2Vycm9ycygpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYygpO1xuICAgIGZ1bmN0aW9uIHJlcXVpcmVQYXJzZXIocGFyc2VyKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhcnNlOiByZXF1aXJlKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBwYXJzZXIpKSxcbiAgICAgICAgICBhc3RGb3JtYXQ6IFwiZXN0cmVlXCIsXG4gICAgICAgICAgbG9jU3RhcnQsXG4gICAgICAgICAgbG9jRW5kXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ0Vycm9yKGBDb3VsZG4ndCByZXNvbHZlIHBhcnNlciBcIiR7cGFyc2VyfVwiYCk7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHJlcXVpcmVQYXJzZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfanNfdG9rZW5zID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9qcy10b2tlbnMvaW5kZXguanNcIihleHBvcnRzMikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IC8oKFsnXCJdKSg/Oig/IVxcMnxcXFxcKS58XFxcXCg/OlxcclxcbnxbXFxzXFxTXSkpKihcXDIpP3xgKD86W15gXFxcXCRdfFxcXFxbXFxzXFxTXXxcXCQoPyFcXHspfFxcJFxceyg/Oltee31dfFxce1tefV0qXFx9PykqXFx9PykqKGApPyl8KFxcL1xcLy4qKXwoXFwvXFwqKD86W14qXXxcXCooPyFcXC8pKSooXFwqXFwvKT8pfChcXC8oPyFcXCopKD86XFxbKD86KD8hW1xcXVxcXFxdKS58XFxcXC4pKlxcXXwoPyFbXFwvXFxdXFxcXF0pLnxcXFxcLikrXFwvKD86KD8hXFxzKig/OlxcYnxbXFx1MDA4MC1cXHVGRkZGJFxcXFwnXCJ+KHtdfFsrXFwtIV0oPyE9KXxcXC4/XFxkKSl8W2dtaXl1c117MSw2fVxcYig/IVtcXHUwMDgwLVxcdUZGRkYkXFxcXF18XFxzKig/OlsrXFwtKiUmfF48PiE9Pyh7XXxcXC8oPyFbXFwvKl0pKSkpKXwoMFt4WF1bXFxkYS1mQS1GXSt8MFtvT11bMC03XSt8MFtiQl1bMDFdK3woPzpcXGQqXFwuXFxkK3xcXGQrXFwuPykoPzpbZUVdWystXT9cXGQrKT8pfCgoPyFcXGQpKD86KD8hXFxzKVskXFx3XFx1MDA4MC1cXHVGRkZGXXxcXFxcdVtcXGRhLWZBLUZdezR9fFxcXFx1XFx7W1xcZGEtZkEtRl0rXFx9KSspfCgtLXxcXCtcXCt8JiZ8XFx8XFx8fD0+fFxcLnszfXwoPzpbK1xcLVxcLyUmfF5dfFxcKnsxLDJ9fDx7MSwyfXw+ezEsM318IT0/fD17MSwyfSk9P3xbP34uLDo7W1xcXSgpe31dKXwoXFxzKyl8KF4kfFtcXHNcXFNdKS9nO1xuICAgIGV4cG9ydHMyLm1hdGNoVG9Ub2tlbiA9IGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICB2YXIgdG9rZW4gPSB7XG4gICAgICAgIHR5cGU6IFwiaW52YWxpZFwiLFxuICAgICAgICB2YWx1ZTogbWF0Y2hbMF0sXG4gICAgICAgIGNsb3NlZDogdm9pZCAwXG4gICAgICB9O1xuICAgICAgaWYgKG1hdGNoWzFdKVxuICAgICAgICB0b2tlbi50eXBlID0gXCJzdHJpbmdcIiwgdG9rZW4uY2xvc2VkID0gISEobWF0Y2hbM10gfHwgbWF0Y2hbNF0pO1xuICAgICAgZWxzZSBpZiAobWF0Y2hbNV0pXG4gICAgICAgIHRva2VuLnR5cGUgPSBcImNvbW1lbnRcIjtcbiAgICAgIGVsc2UgaWYgKG1hdGNoWzZdKVxuICAgICAgICB0b2tlbi50eXBlID0gXCJjb21tZW50XCIsIHRva2VuLmNsb3NlZCA9ICEhbWF0Y2hbN107XG4gICAgICBlbHNlIGlmIChtYXRjaFs4XSlcbiAgICAgICAgdG9rZW4udHlwZSA9IFwicmVnZXhcIjtcbiAgICAgIGVsc2UgaWYgKG1hdGNoWzldKVxuICAgICAgICB0b2tlbi50eXBlID0gXCJudW1iZXJcIjtcbiAgICAgIGVsc2UgaWYgKG1hdGNoWzEwXSlcbiAgICAgICAgdG9rZW4udHlwZSA9IFwibmFtZVwiO1xuICAgICAgZWxzZSBpZiAobWF0Y2hbMTFdKVxuICAgICAgICB0b2tlbi50eXBlID0gXCJwdW5jdHVhdG9yXCI7XG4gICAgICBlbHNlIGlmIChtYXRjaFsxMl0pXG4gICAgICAgIHRva2VuLnR5cGUgPSBcIndoaXRlc3BhY2VcIjtcbiAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2lkZW50aWZpZXIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZpZXIvbGliL2lkZW50aWZpZXIuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuaXNJZGVudGlmaWVyQ2hhciA9IGlzSWRlbnRpZmllckNoYXI7XG4gICAgZXhwb3J0czIuaXNJZGVudGlmaWVyTmFtZSA9IGlzSWRlbnRpZmllck5hbWU7XG4gICAgZXhwb3J0czIuaXNJZGVudGlmaWVyU3RhcnQgPSBpc0lkZW50aWZpZXJTdGFydDtcbiAgICB2YXIgbm9uQVNDSUlpZGVudGlmaWVyU3RhcnRDaGFycyA9IFwiXFx4QUFcXHhCNVxceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjAtXFx1MDU4OFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwODYwLVxcdTA4NkFcXHUwODcwLVxcdTA4ODdcXHUwODg5LVxcdTA4OEVcXHUwOEEwLVxcdTA4QzlcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTA5RkNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM1RFxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0REXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA0LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENTQtXFx1MEQ1NlxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODYtXFx1MEU4QVxcdTBFOEMtXFx1MEVBM1xcdTBFQTVcXHUwRUE3LVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcxMVxcdTE3MUYtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc4XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNENcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDODAtXFx1MUM4OFxcdTFDOTAtXFx1MUNCQVxcdTFDQkQtXFx1MUNCRlxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGM1xcdTFDRjVcXHUxQ0Y2XFx1MUNGQVxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUItXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkVGXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0NBXFx1QTdEMFxcdUE3RDFcXHVBN0QzXFx1QTdENS1cXHVBN0Q5XFx1QTdGMi1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2OVxcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ1wiO1xuICAgIHZhciBub25BU0NJSWlkZW50aWZpZXJDaGFycyA9IFwiXFx1MjAwQ1xcdTIwMERcXHhCN1xcdTAzMDAtXFx1MDM2RlxcdTAzODdcXHUwNDgzLVxcdTA0ODdcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNjEwLVxcdTA2MUFcXHUwNjRCLVxcdTA2NjlcXHUwNjcwXFx1MDZENi1cXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFN1xcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNkYwLVxcdTA2RjlcXHUwNzExXFx1MDczMC1cXHUwNzRBXFx1MDdBNi1cXHUwN0IwXFx1MDdDMC1cXHUwN0M5XFx1MDdFQi1cXHUwN0YzXFx1MDdGRFxcdTA4MTYtXFx1MDgxOVxcdTA4MUItXFx1MDgyM1xcdTA4MjUtXFx1MDgyN1xcdTA4MjktXFx1MDgyRFxcdTA4NTktXFx1MDg1QlxcdTA4OTgtXFx1MDg5RlxcdTA4Q0EtXFx1MDhFMVxcdTA4RTMtXFx1MDkwM1xcdTA5M0EtXFx1MDkzQ1xcdTA5M0UtXFx1MDk0RlxcdTA5NTEtXFx1MDk1N1xcdTA5NjJcXHUwOTYzXFx1MDk2Ni1cXHUwOTZGXFx1MDk4MS1cXHUwOTgzXFx1MDlCQ1xcdTA5QkUtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNEXFx1MDlEN1xcdTA5RTJcXHUwOUUzXFx1MDlFNi1cXHUwOUVGXFx1MDlGRVxcdTBBMDEtXFx1MEEwM1xcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTY2LVxcdTBBNzFcXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEFCQ1xcdTBBQkUtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRTJcXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEFGQS1cXHUwQUZGXFx1MEIwMS1cXHUwQjAzXFx1MEIzQ1xcdTBCM0UtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NS1cXHUwQjU3XFx1MEI2MlxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjgyXFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDAtXFx1MEMwNFxcdTBDM0NcXHUwQzNFLVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNjJcXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MS1cXHUwQzgzXFx1MENCQ1xcdTBDQkUtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENFMlxcdTBDRTNcXHUwQ0U2LVxcdTBDRUZcXHUwRDAwLVxcdTBEMDNcXHUwRDNCXFx1MEQzQ1xcdTBEM0UtXFx1MEQ0NFxcdTBENDYtXFx1MEQ0OFxcdTBENEEtXFx1MEQ0RFxcdTBENTdcXHUwRDYyXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEODEtXFx1MEQ4M1xcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERFNi1cXHUwREVGXFx1MERGMlxcdTBERjNcXHUwRTMxXFx1MEUzNC1cXHUwRTNBXFx1MEU0Ny1cXHUwRTRFXFx1MEU1MC1cXHUwRTU5XFx1MEVCMVxcdTBFQjQtXFx1MEVCQ1xcdTBFQzgtXFx1MEVDRFxcdTBFRDAtXFx1MEVEOVxcdTBGMThcXHUwRjE5XFx1MEYyMC1cXHUwRjI5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRVxcdTBGM0ZcXHUwRjcxLVxcdTBGODRcXHUwRjg2XFx1MEY4N1xcdTBGOEQtXFx1MEY5N1xcdTBGOTktXFx1MEZCQ1xcdTBGQzZcXHUxMDJCLVxcdTEwM0VcXHUxMDQwLVxcdTEwNDlcXHUxMDU2LVxcdTEwNTlcXHUxMDVFLVxcdTEwNjBcXHUxMDYyLVxcdTEwNjRcXHUxMDY3LVxcdTEwNkRcXHUxMDcxLVxcdTEwNzRcXHUxMDgyLVxcdTEwOERcXHUxMDhGLVxcdTEwOURcXHUxMzVELVxcdTEzNUZcXHUxMzY5LVxcdTEzNzFcXHUxNzEyLVxcdTE3MTVcXHUxNzMyLVxcdTE3MzRcXHUxNzUyXFx1MTc1M1xcdTE3NzJcXHUxNzczXFx1MTdCNC1cXHUxN0QzXFx1MTdERFxcdTE3RTAtXFx1MTdFOVxcdTE4MEItXFx1MTgwRFxcdTE4MEYtXFx1MTgxOVxcdTE4QTlcXHUxOTIwLVxcdTE5MkJcXHUxOTMwLVxcdTE5M0JcXHUxOTQ2LVxcdTE5NEZcXHUxOUQwLVxcdTE5REFcXHUxQTE3LVxcdTFBMUJcXHUxQTU1LVxcdTFBNUVcXHUxQTYwLVxcdTFBN0NcXHUxQTdGLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQUIwLVxcdTFBQkRcXHUxQUJGLVxcdTFBQ0VcXHUxQjAwLVxcdTFCMDRcXHUxQjM0LVxcdTFCNDRcXHUxQjUwLVxcdTFCNTlcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCODJcXHUxQkExLVxcdTFCQURcXHUxQkIwLVxcdTFCQjlcXHUxQkU2LVxcdTFCRjNcXHUxQzI0LVxcdTFDMzdcXHUxQzQwLVxcdTFDNDlcXHUxQzUwLVxcdTFDNTlcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRThcXHUxQ0VEXFx1MUNGNFxcdTFDRjctXFx1MUNGOVxcdTFEQzAtXFx1MURGRlxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRjBcXHUyQ0VGLVxcdTJDRjFcXHUyRDdGXFx1MkRFMC1cXHUyREZGXFx1MzAyQS1cXHUzMDJGXFx1MzA5OVxcdTMwOUFcXHVBNjIwLVxcdUE2MjlcXHVBNjZGXFx1QTY3NC1cXHVBNjdEXFx1QTY5RVxcdUE2OUZcXHVBNkYwXFx1QTZGMVxcdUE4MDJcXHVBODA2XFx1QTgwQlxcdUE4MjMtXFx1QTgyN1xcdUE4MkNcXHVBODgwXFx1QTg4MVxcdUE4QjQtXFx1QThDNVxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGMVxcdUE4RkYtXFx1QTkwOVxcdUE5MjYtXFx1QTkyRFxcdUE5NDctXFx1QTk1M1xcdUE5ODAtXFx1QTk4M1xcdUE5QjMtXFx1QTlDMFxcdUE5RDAtXFx1QTlEOVxcdUE5RTVcXHVBOUYwLVxcdUE5RjlcXHVBQTI5LVxcdUFBMzZcXHVBQTQzXFx1QUE0Q1xcdUFBNERcXHVBQTUwLVxcdUFBNTlcXHVBQTdCLVxcdUFBN0RcXHVBQUIwXFx1QUFCMi1cXHVBQUI0XFx1QUFCN1xcdUFBQjhcXHVBQUJFXFx1QUFCRlxcdUFBQzFcXHVBQUVCLVxcdUFBRUZcXHVBQUY1XFx1QUFGNlxcdUFCRTMtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1RkIxRVxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRlxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkYxMC1cXHVGRjE5XFx1RkYzRlwiO1xuICAgIHZhciBub25BU0NJSWlkZW50aWZpZXJTdGFydCA9IG5ldyBSZWdFeHAoXCJbXCIgKyBub25BU0NJSWlkZW50aWZpZXJTdGFydENoYXJzICsgXCJdXCIpO1xuICAgIHZhciBub25BU0NJSWlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKFwiW1wiICsgbm9uQVNDSUlpZGVudGlmaWVyU3RhcnRDaGFycyArIG5vbkFTQ0lJaWRlbnRpZmllckNoYXJzICsgXCJdXCIpO1xuICAgIG5vbkFTQ0lJaWRlbnRpZmllclN0YXJ0Q2hhcnMgPSBub25BU0NJSWlkZW50aWZpZXJDaGFycyA9IG51bGw7XG4gICAgdmFyIGFzdHJhbElkZW50aWZpZXJTdGFydENvZGVzID0gWzAsIDExLCAyLCAyNSwgMiwgMTgsIDIsIDEsIDIsIDE0LCAzLCAxMywgMzUsIDEyMiwgNzAsIDUyLCAyNjgsIDI4LCA0LCA0OCwgNDgsIDMxLCAxNCwgMjksIDYsIDM3LCAxMSwgMjksIDMsIDM1LCA1LCA3LCAyLCA0LCA0MywgMTU3LCAxOSwgMzUsIDUsIDM1LCA1LCAzOSwgOSwgNTEsIDEzLCAxMCwgMiwgMTQsIDIsIDYsIDIsIDEsIDIsIDEwLCAyLCAxNCwgMiwgNiwgMiwgMSwgNjgsIDMxMCwgMTAsIDIxLCAxMSwgNywgMjUsIDUsIDIsIDQxLCAyLCA4LCA3MCwgNSwgMywgMCwgMiwgNDMsIDIsIDEsIDQsIDAsIDMsIDIyLCAxMSwgMjIsIDEwLCAzMCwgNjYsIDE4LCAyLCAxLCAxMSwgMjEsIDExLCAyNSwgNzEsIDU1LCA3LCAxLCA2NSwgMCwgMTYsIDMsIDIsIDIsIDIsIDI4LCA0MywgMjgsIDQsIDI4LCAzNiwgNywgMiwgMjcsIDI4LCA1MywgMTEsIDIxLCAxMSwgMTgsIDE0LCAxNywgMTExLCA3MiwgNTYsIDUwLCAxNCwgNTAsIDE0LCAzNSwgMzQ5LCA0MSwgNywgMSwgNzksIDI4LCAxMSwgMCwgOSwgMjEsIDQzLCAxNywgNDcsIDIwLCAyOCwgMjIsIDEzLCA1MiwgNTgsIDEsIDMsIDAsIDE0LCA0NCwgMzMsIDI0LCAyNywgMzUsIDMwLCAwLCAzLCAwLCA5LCAzNCwgNCwgMCwgMTMsIDQ3LCAxNSwgMywgMjIsIDAsIDIsIDAsIDM2LCAxNywgMiwgMjQsIDg1LCA2LCAyLCAwLCAyLCAzLCAyLCAxNCwgMiwgOSwgOCwgNDYsIDM5LCA3LCAzLCAxLCAzLCAyMSwgMiwgNiwgMiwgMSwgMiwgNCwgNCwgMCwgMTksIDAsIDEzLCA0LCAxNTksIDUyLCAxOSwgMywgMjEsIDIsIDMxLCA0NywgMjEsIDEsIDIsIDAsIDE4NSwgNDYsIDQyLCAzLCAzNywgNDcsIDIxLCAwLCA2MCwgNDIsIDE0LCAwLCA3MiwgMjYsIDM4LCA2LCAxODYsIDQzLCAxMTcsIDYzLCAzMiwgNywgMywgMCwgMywgNywgMiwgMSwgMiwgMjMsIDE2LCAwLCAyLCAwLCA5NSwgNywgMywgMzgsIDE3LCAwLCAyLCAwLCAyOSwgMCwgMTEsIDM5LCA4LCAwLCAyMiwgMCwgMTIsIDQ1LCAyMCwgMCwgMTksIDcyLCAyNjQsIDgsIDIsIDM2LCAxOCwgMCwgNTAsIDI5LCAxMTMsIDYsIDIsIDEsIDIsIDM3LCAyMiwgMCwgMjYsIDUsIDIsIDEsIDIsIDMxLCAxNSwgMCwgMzI4LCAxOCwgMTkwLCAwLCA4MCwgOTIxLCAxMDMsIDExMCwgMTgsIDE5NSwgMjYzNywgOTYsIDE2LCAxMDcwLCA0MDUwLCA1ODIsIDg2MzQsIDU2OCwgOCwgMzAsIDE4LCA3OCwgMTgsIDI5LCAxOSwgNDcsIDE3LCAzLCAzMiwgMjAsIDYsIDE4LCA2ODksIDYzLCAxMjksIDc0LCA2LCAwLCA2NywgMTIsIDY1LCAxLCAyLCAwLCAyOSwgNjEzNSwgOSwgMTIzNywgNDMsIDgsIDg5MzYsIDMsIDIsIDYsIDIsIDEsIDIsIDI5MCwgNDYsIDIsIDE4LCAzLCA5LCAzOTUsIDIzMDksIDEwNiwgNiwgMTIsIDQsIDgsIDgsIDksIDU5OTEsIDg0LCAyLCA3MCwgMiwgMSwgMywgMCwgMywgMSwgMywgMywgMiwgMTEsIDIsIDAsIDIsIDYsIDIsIDY0LCAyLCAzLCAzLCA3LCAyLCA2LCAyLCAyNywgMiwgMywgMiwgNCwgMiwgMCwgNCwgNiwgMiwgMzM5LCAzLCAyNCwgMiwgMjQsIDIsIDMwLCAyLCAyNCwgMiwgMzAsIDIsIDI0LCAyLCAzMCwgMiwgMjQsIDIsIDMwLCAyLCAyNCwgMiwgNywgMTg0NSwgMzAsIDQ4MiwgNDQsIDExLCA2LCAxNywgMCwgMzIyLCAyOSwgMTksIDQzLCAxMjY5LCA2LCAyLCAzLCAyLCAxLCAyLCAxNCwgMiwgMTk2LCA2MCwgNjcsIDgsIDAsIDEyMDUsIDMsIDIsIDI2LCAyLCAxLCAyLCAwLCAzLCAwLCAyLCA5LCAyLCAzLCAyLCAwLCAyLCAwLCA3LCAwLCA1LCAwLCAyLCAwLCAyLCAwLCAyLCAyLCAyLCAxLCAyLCAwLCAzLCAwLCAyLCAwLCAyLCAwLCAyLCAwLCAyLCAwLCAyLCAxLCAyLCAwLCAzLCAzLCAyLCA2LCAyLCAzLCAyLCAzLCAyLCAwLCAyLCA5LCAyLCAxNiwgNiwgMiwgMiwgNCwgMiwgMTYsIDQ0MjEsIDQyNzE5LCAzMywgNDE1MiwgOCwgMjIxLCAzLCA1NzYxLCAxNSwgNzQ3MiwgMzEwNCwgNTQxLCAxNTA3LCA0OTM4XTtcbiAgICB2YXIgYXN0cmFsSWRlbnRpZmllckNvZGVzID0gWzUwOSwgMCwgMjI3LCAwLCAxNTAsIDQsIDI5NCwgOSwgMTM2OCwgMiwgMiwgMSwgNiwgMywgNDEsIDIsIDUsIDAsIDE2NiwgMSwgNTc0LCAzLCA5LCA5LCAzNzAsIDEsIDE1NCwgMTAsIDUwLCAzLCAxMjMsIDIsIDU0LCAxNCwgMzIsIDEwLCAzLCAxLCAxMSwgMywgNDYsIDEwLCA4LCAwLCA0NiwgOSwgNywgMiwgMzcsIDEzLCAyLCA5LCA2LCAxLCA0NSwgMCwgMTMsIDIsIDQ5LCAxMywgOSwgMywgMiwgMTEsIDgzLCAxMSwgNywgMCwgMTYxLCAxMSwgNiwgOSwgNywgMywgNTYsIDEsIDIsIDYsIDMsIDEsIDMsIDIsIDEwLCAwLCAxMSwgMSwgMywgNiwgNCwgNCwgMTkzLCAxNywgMTAsIDksIDUsIDAsIDgyLCAxOSwgMTMsIDksIDIxNCwgNiwgMywgOCwgMjgsIDEsIDgzLCAxNiwgMTYsIDksIDgyLCAxMiwgOSwgOSwgODQsIDE0LCA1LCA5LCAyNDMsIDE0LCAxNjYsIDksIDcxLCA1LCAyLCAxLCAzLCAzLCAyLCAwLCAyLCAxLCAxMywgOSwgMTIwLCA2LCAzLCA2LCA0LCAwLCAyOSwgOSwgNDEsIDYsIDIsIDMsIDksIDAsIDEwLCAxMCwgNDcsIDE1LCA0MDYsIDcsIDIsIDcsIDE3LCA5LCA1NywgMjEsIDIsIDEzLCAxMjMsIDUsIDQsIDAsIDIsIDEsIDIsIDYsIDIsIDAsIDksIDksIDQ5LCA0LCAyLCAxLCAyLCA0LCA5LCA5LCAzMzAsIDMsIDE5MzA2LCA5LCA4NywgOSwgMzksIDQsIDYwLCA2LCAyNiwgOSwgMTAxNCwgMCwgMiwgNTQsIDgsIDMsIDgyLCAwLCAxMiwgMSwgMTk2MjgsIDEsIDQ3MDYsIDQ1LCAzLCAyMiwgNTQzLCA0LCA0LCA1LCA5LCA3LCAzLCA2LCAzMSwgMywgMTQ5LCAyLCAxNDE4LCA0OSwgNTEzLCA1NCwgNSwgNDksIDksIDAsIDE1LCAwLCAyMywgNCwgMiwgMTQsIDEzNjEsIDYsIDIsIDE2LCAzLCA2LCAyLCAxLCAyLCA0LCAyNjIsIDYsIDEwLCA5LCAzNTcsIDAsIDYyLCAxMywgMTQ5NSwgNiwgMTEwLCA2LCA2LCA5LCA0NzU5LCA5LCA3ODc3MTksIDIzOV07XG4gICAgZnVuY3Rpb24gaXNJbkFzdHJhbFNldChjb2RlLCBzZXQpIHtcbiAgICAgIGxldCBwb3MgPSA2NTUzNjtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBzZXQubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgcG9zICs9IHNldFtpXTtcbiAgICAgICAgaWYgKHBvcyA+IGNvZGUpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBwb3MgKz0gc2V0W2kgKyAxXTtcbiAgICAgICAgaWYgKHBvcyA+PSBjb2RlKVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydChjb2RlKSB7XG4gICAgICBpZiAoY29kZSA8IDY1KVxuICAgICAgICByZXR1cm4gY29kZSA9PT0gMzY7XG4gICAgICBpZiAoY29kZSA8PSA5MClcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoY29kZSA8IDk3KVxuICAgICAgICByZXR1cm4gY29kZSA9PT0gOTU7XG4gICAgICBpZiAoY29kZSA8PSAxMjIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGNvZGUgPD0gNjU1MzUpIHtcbiAgICAgICAgcmV0dXJuIGNvZGUgPj0gMTcwICYmIG5vbkFTQ0lJaWRlbnRpZmllclN0YXJ0LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNJbkFzdHJhbFNldChjb2RlLCBhc3RyYWxJZGVudGlmaWVyU3RhcnRDb2Rlcyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllckNoYXIoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPCA0OClcbiAgICAgICAgcmV0dXJuIGNvZGUgPT09IDM2O1xuICAgICAgaWYgKGNvZGUgPCA1OClcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoY29kZSA8IDY1KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoY29kZSA8PSA5MClcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoY29kZSA8IDk3KVxuICAgICAgICByZXR1cm4gY29kZSA9PT0gOTU7XG4gICAgICBpZiAoY29kZSA8PSAxMjIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGNvZGUgPD0gNjU1MzUpIHtcbiAgICAgICAgcmV0dXJuIGNvZGUgPj0gMTcwICYmIG5vbkFTQ0lJaWRlbnRpZmllci50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzSW5Bc3RyYWxTZXQoY29kZSwgYXN0cmFsSWRlbnRpZmllclN0YXJ0Q29kZXMpIHx8IGlzSW5Bc3RyYWxTZXQoY29kZSwgYXN0cmFsSWRlbnRpZmllckNvZGVzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyTmFtZShuYW1lKSB7XG4gICAgICBsZXQgaXNGaXJzdCA9IHRydWU7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGNwID0gbmFtZS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoKGNwICYgNjQ1MTIpID09PSA1NTI5NiAmJiBpICsgMSA8IG5hbWUubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgdHJhaWwgPSBuYW1lLmNoYXJDb2RlQXQoKytpKTtcbiAgICAgICAgICBpZiAoKHRyYWlsICYgNjQ1MTIpID09PSA1NjMyMCkge1xuICAgICAgICAgICAgY3AgPSA2NTUzNiArICgoY3AgJiAxMDIzKSA8PCAxMCkgKyAodHJhaWwgJiAxMDIzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRmlyc3QpIHtcbiAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7XG4gICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJTdGFydChjcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzSWRlbnRpZmllckNoYXIoY3ApKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gIWlzRmlyc3Q7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2tleXdvcmQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZpZXIvbGliL2tleXdvcmQuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuaXNLZXl3b3JkID0gaXNLZXl3b3JkO1xuICAgIGV4cG9ydHMyLmlzUmVzZXJ2ZWRXb3JkID0gaXNSZXNlcnZlZFdvcmQ7XG4gICAgZXhwb3J0czIuaXNTdHJpY3RCaW5kT25seVJlc2VydmVkV29yZCA9IGlzU3RyaWN0QmluZE9ubHlSZXNlcnZlZFdvcmQ7XG4gICAgZXhwb3J0czIuaXNTdHJpY3RCaW5kUmVzZXJ2ZWRXb3JkID0gaXNTdHJpY3RCaW5kUmVzZXJ2ZWRXb3JkO1xuICAgIGV4cG9ydHMyLmlzU3RyaWN0UmVzZXJ2ZWRXb3JkID0gaXNTdHJpY3RSZXNlcnZlZFdvcmQ7XG4gICAgdmFyIHJlc2VydmVkV29yZHMgPSB7XG4gICAgICBrZXl3b3JkOiBbXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNvbnRpbnVlXCIsIFwiZGVidWdnZXJcIiwgXCJkZWZhdWx0XCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZ1bmN0aW9uXCIsIFwiaWZcIiwgXCJyZXR1cm5cIiwgXCJzd2l0Y2hcIiwgXCJ0aHJvd1wiLCBcInRyeVwiLCBcInZhclwiLCBcImNvbnN0XCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwibmV3XCIsIFwidGhpc1wiLCBcInN1cGVyXCIsIFwiY2xhc3NcIiwgXCJleHRlbmRzXCIsIFwiZXhwb3J0XCIsIFwiaW1wb3J0XCIsIFwibnVsbFwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcImluXCIsIFwiaW5zdGFuY2VvZlwiLCBcInR5cGVvZlwiLCBcInZvaWRcIiwgXCJkZWxldGVcIl0sXG4gICAgICBzdHJpY3Q6IFtcImltcGxlbWVudHNcIiwgXCJpbnRlcmZhY2VcIiwgXCJsZXRcIiwgXCJwYWNrYWdlXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInN0YXRpY1wiLCBcInlpZWxkXCJdLFxuICAgICAgc3RyaWN0QmluZDogW1wiZXZhbFwiLCBcImFyZ3VtZW50c1wiXVxuICAgIH07XG4gICAgdmFyIGtleXdvcmRzID0gbmV3IFNldChyZXNlcnZlZFdvcmRzLmtleXdvcmQpO1xuICAgIHZhciByZXNlcnZlZFdvcmRzU3RyaWN0U2V0ID0gbmV3IFNldChyZXNlcnZlZFdvcmRzLnN0cmljdCk7XG4gICAgdmFyIHJlc2VydmVkV29yZHNTdHJpY3RCaW5kU2V0ID0gbmV3IFNldChyZXNlcnZlZFdvcmRzLnN0cmljdEJpbmQpO1xuICAgIGZ1bmN0aW9uIGlzUmVzZXJ2ZWRXb3JkKHdvcmQsIGluTW9kdWxlKSB7XG4gICAgICByZXR1cm4gaW5Nb2R1bGUgJiYgd29yZCA9PT0gXCJhd2FpdFwiIHx8IHdvcmQgPT09IFwiZW51bVwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1N0cmljdFJlc2VydmVkV29yZCh3b3JkLCBpbk1vZHVsZSkge1xuICAgICAgcmV0dXJuIGlzUmVzZXJ2ZWRXb3JkKHdvcmQsIGluTW9kdWxlKSB8fCByZXNlcnZlZFdvcmRzU3RyaWN0U2V0Lmhhcyh3b3JkKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTdHJpY3RCaW5kT25seVJlc2VydmVkV29yZCh3b3JkKSB7XG4gICAgICByZXR1cm4gcmVzZXJ2ZWRXb3Jkc1N0cmljdEJpbmRTZXQuaGFzKHdvcmQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1N0cmljdEJpbmRSZXNlcnZlZFdvcmQod29yZCwgaW5Nb2R1bGUpIHtcbiAgICAgIHJldHVybiBpc1N0cmljdFJlc2VydmVkV29yZCh3b3JkLCBpbk1vZHVsZSkgfHwgaXNTdHJpY3RCaW5kT25seVJlc2VydmVkV29yZCh3b3JkKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNLZXl3b3JkKHdvcmQpIHtcbiAgICAgIHJldHVybiBrZXl3b3Jkcy5oYXMod29yZCk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2xpYjMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZpZXIvbGliL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJpc0lkZW50aWZpZXJDaGFyXCIsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2lkZW50aWZpZXIuaXNJZGVudGlmaWVyQ2hhcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiaXNJZGVudGlmaWVyTmFtZVwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9pZGVudGlmaWVyLmlzSWRlbnRpZmllck5hbWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcImlzSWRlbnRpZmllclN0YXJ0XCIsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2lkZW50aWZpZXIuaXNJZGVudGlmaWVyU3RhcnQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcImlzS2V5d29yZFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9rZXl3b3JkLmlzS2V5d29yZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiaXNSZXNlcnZlZFdvcmRcIiwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfa2V5d29yZC5pc1Jlc2VydmVkV29yZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiaXNTdHJpY3RCaW5kT25seVJlc2VydmVkV29yZFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9rZXl3b3JkLmlzU3RyaWN0QmluZE9ubHlSZXNlcnZlZFdvcmQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcImlzU3RyaWN0QmluZFJlc2VydmVkV29yZFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9rZXl3b3JkLmlzU3RyaWN0QmluZFJlc2VydmVkV29yZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiaXNTdHJpY3RSZXNlcnZlZFdvcmRcIiwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfa2V5d29yZC5pc1N0cmljdFJlc2VydmVkV29yZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgX2lkZW50aWZpZXIgPSByZXF1aXJlX2lkZW50aWZpZXIoKTtcbiAgICB2YXIgX2tleXdvcmQgPSByZXF1aXJlX2tleXdvcmQoKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9lc2NhcGVfc3RyaW5nX3JlZ2V4cDIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oaWdobGlnaHQvbm9kZV9tb2R1bGVzL2VzY2FwZS1zdHJpbmctcmVnZXhwL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgbWF0Y2hPcGVyYXRvcnNSZSA9IC9bfFxcXFx7fSgpW1xcXV4kKyo/Ll0vZztcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbihzdHIpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIHN0cmluZ1wiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShtYXRjaE9wZXJhdG9yc1JlLCBcIlxcXFwkJlwiKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2hhc19mbGFnMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQGJhYmVsL2hpZ2hsaWdodC9ub2RlX21vZHVsZXMvaGFzLWZsYWcvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IChmbGFnLCBhcmd2KSA9PiB7XG4gICAgICBhcmd2ID0gYXJndiB8fCBwcm9jZXNzLmFyZ3Y7XG4gICAgICBjb25zdCBwcmVmaXggPSBmbGFnLnN0YXJ0c1dpdGgoXCItXCIpID8gXCJcIiA6IGZsYWcubGVuZ3RoID09PSAxID8gXCItXCIgOiBcIi0tXCI7XG4gICAgICBjb25zdCBwb3MgPSBhcmd2LmluZGV4T2YocHJlZml4ICsgZmxhZyk7XG4gICAgICBjb25zdCB0ZXJtaW5hdG9yUG9zID0gYXJndi5pbmRleE9mKFwiLS1cIik7XG4gICAgICByZXR1cm4gcG9zICE9PSAtMSAmJiAodGVybWluYXRvclBvcyA9PT0gLTEgPyB0cnVlIDogcG9zIDwgdGVybWluYXRvclBvcyk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zdXBwb3J0c19jb2xvcjIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oaWdobGlnaHQvbm9kZV9tb2R1bGVzL3N1cHBvcnRzLWNvbG9yL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgb3MgPSByZXF1aXJlKFwib3NcIik7XG4gICAgdmFyIGhhc0ZsYWcgPSByZXF1aXJlX2hhc19mbGFnMigpO1xuICAgIHZhciBlbnYgPSBwcm9jZXNzLmVudjtcbiAgICB2YXIgZm9yY2VDb2xvcjtcbiAgICBpZiAoaGFzRmxhZyhcIm5vLWNvbG9yXCIpIHx8IGhhc0ZsYWcoXCJuby1jb2xvcnNcIikgfHwgaGFzRmxhZyhcImNvbG9yPWZhbHNlXCIpKSB7XG4gICAgICBmb3JjZUNvbG9yID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChoYXNGbGFnKFwiY29sb3JcIikgfHwgaGFzRmxhZyhcImNvbG9yc1wiKSB8fCBoYXNGbGFnKFwiY29sb3I9dHJ1ZVwiKSB8fCBoYXNGbGFnKFwiY29sb3I9YWx3YXlzXCIpKSB7XG4gICAgICBmb3JjZUNvbG9yID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFwiRk9SQ0VfQ09MT1JcIiBpbiBlbnYpIHtcbiAgICAgIGZvcmNlQ29sb3IgPSBlbnYuRk9SQ0VfQ09MT1IubGVuZ3RoID09PSAwIHx8IHBhcnNlSW50KGVudi5GT1JDRV9DT0xPUiwgMTApICE9PSAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVMZXZlbChsZXZlbCkge1xuICAgICAgaWYgKGxldmVsID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxldmVsLFxuICAgICAgICBoYXNCYXNpYzogdHJ1ZSxcbiAgICAgICAgaGFzMjU2OiBsZXZlbCA+PSAyLFxuICAgICAgICBoYXMxNm06IGxldmVsID49IDNcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN1cHBvcnRzQ29sb3Ioc3RyZWFtKSB7XG4gICAgICBpZiAoZm9yY2VDb2xvciA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoaGFzRmxhZyhcImNvbG9yPTE2bVwiKSB8fCBoYXNGbGFnKFwiY29sb3I9ZnVsbFwiKSB8fCBoYXNGbGFnKFwiY29sb3I9dHJ1ZWNvbG9yXCIpKSB7XG4gICAgICAgIHJldHVybiAzO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0ZsYWcoXCJjb2xvcj0yNTZcIikpIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9XG4gICAgICBpZiAoc3RyZWFtICYmICFzdHJlYW0uaXNUVFkgJiYgZm9yY2VDb2xvciAhPT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbiA9IGZvcmNlQ29sb3IgPyAxIDogMDtcbiAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIpIHtcbiAgICAgICAgY29uc3Qgb3NSZWxlYXNlID0gb3MucmVsZWFzZSgpLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKE51bWJlcihwcm9jZXNzLnZlcnNpb25zLm5vZGUuc3BsaXQoXCIuXCIpWzBdKSA+PSA4ICYmIE51bWJlcihvc1JlbGVhc2VbMF0pID49IDEwICYmIE51bWJlcihvc1JlbGVhc2VbMl0pID49IDEwNTg2KSB7XG4gICAgICAgICAgcmV0dXJuIE51bWJlcihvc1JlbGVhc2VbMl0pID49IDE0OTMxID8gMyA6IDI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBpZiAoXCJDSVwiIGluIGVudikge1xuICAgICAgICBpZiAoW1wiVFJBVklTXCIsIFwiQ0lSQ0xFQ0lcIiwgXCJBUFBWRVlPUlwiLCBcIkdJVExBQl9DSVwiXS5zb21lKChzaWduKSA9PiBzaWduIGluIGVudikgfHwgZW52LkNJX05BTUUgPT09IFwiY29kZXNoaXBcIikge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBpZiAoXCJURUFNQ0lUWV9WRVJTSU9OXCIgaW4gZW52KSB7XG4gICAgICAgIHJldHVybiAvXig5XFwuKDAqWzEtOV1cXGQqKVxcLnxcXGR7Mix9XFwuKS8udGVzdChlbnYuVEVBTUNJVFlfVkVSU0lPTikgPyAxIDogMDtcbiAgICAgIH1cbiAgICAgIGlmIChlbnYuQ09MT1JURVJNID09PSBcInRydWVjb2xvclwiKSB7XG4gICAgICAgIHJldHVybiAzO1xuICAgICAgfVxuICAgICAgaWYgKFwiVEVSTV9QUk9HUkFNXCIgaW4gZW52KSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24yID0gcGFyc2VJbnQoKGVudi5URVJNX1BST0dSQU1fVkVSU0lPTiB8fCBcIlwiKS5zcGxpdChcIi5cIilbMF0sIDEwKTtcbiAgICAgICAgc3dpdGNoIChlbnYuVEVSTV9QUk9HUkFNKSB7XG4gICAgICAgICAgY2FzZSBcImlUZXJtLmFwcFwiOlxuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb24yID49IDMgPyAzIDogMjtcbiAgICAgICAgICBjYXNlIFwiQXBwbGVfVGVybWluYWxcIjpcbiAgICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoLy0yNTYoY29sb3IpPyQvaS50ZXN0KGVudi5URVJNKSkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH1cbiAgICAgIGlmICgvXnNjcmVlbnxeeHRlcm18XnZ0MTAwfF52dDIyMHxecnh2dHxjb2xvcnxhbnNpfGN5Z3dpbnxsaW51eC9pLnRlc3QoZW52LlRFUk0pKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKFwiQ09MT1JURVJNXCIgaW4gZW52KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKGVudi5URVJNID09PSBcImR1bWJcIikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0U3VwcG9ydExldmVsKHN0cmVhbSkge1xuICAgICAgY29uc3QgbGV2ZWwgPSBzdXBwb3J0c0NvbG9yKHN0cmVhbSk7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBzdXBwb3J0c0NvbG9yOiBnZXRTdXBwb3J0TGV2ZWwsXG4gICAgICBzdGRvdXQ6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZG91dCksXG4gICAgICBzdGRlcnI6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZGVycilcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3RlbXBsYXRlczIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oaWdobGlnaHQvbm9kZV9tb2R1bGVzL2NoYWxrL3RlbXBsYXRlcy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIFRFTVBMQVRFX1JFR0VYID0gLyg/OlxcXFwodVthLWZcXGRdezR9fHhbYS1mXFxkXXsyfXwuKSl8KD86XFx7KH4pPyhcXHcrKD86XFwoW14pXSpcXCkpPyg/OlxcLlxcdysoPzpcXChbXildKlxcKSk/KSopKD86WyBcXHRdfCg/PVxccj9cXG4pKSl8KFxcfSl8KCg/Oi58W1xcclxcblxcZl0pKz8pL2dpO1xuICAgIHZhciBTVFlMRV9SRUdFWCA9IC8oPzpefFxcLikoXFx3KykoPzpcXCgoW14pXSopXFwpKT8vZztcbiAgICB2YXIgU1RSSU5HX1JFR0VYID0gL14oWydcIl0pKCg/OlxcXFwufCg/IVxcMSlbXlxcXFxdKSopXFwxJC87XG4gICAgdmFyIEVTQ0FQRV9SRUdFWCA9IC9cXFxcKHVbYS1mXFxkXXs0fXx4W2EtZlxcZF17Mn18Lil8KFteXFxcXF0pL2dpO1xuICAgIHZhciBFU0NBUEVTID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoW1tcIm5cIiwgXCJcXG5cIl0sIFtcInJcIiwgXCJcXHJcIl0sIFtcInRcIiwgXCJcdFwiXSwgW1wiYlwiLCBcIlxcYlwiXSwgW1wiZlwiLCBcIlxcZlwiXSwgW1widlwiLCBcIlxcdlwiXSwgW1wiMFwiLCBcIlxcMFwiXSwgW1wiXFxcXFwiLCBcIlxcXFxcIl0sIFtcImVcIiwgXCJcXHgxQlwiXSwgW1wiYVwiLCBcIlxceDA3XCJdXSk7XG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoYykge1xuICAgICAgaWYgKGNbMF0gPT09IFwidVwiICYmIGMubGVuZ3RoID09PSA1IHx8IGNbMF0gPT09IFwieFwiICYmIGMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGMuc2xpY2UoMSksIDE2KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gRVNDQVBFUy5nZXQoYykgfHwgYztcbiAgICB9XG4gICAgZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMobmFtZSwgYXJncykge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgY29uc3QgY2h1bmtzID0gYXJncy50cmltKCkuc3BsaXQoL1xccyosXFxzKi9nKTtcbiAgICAgIGxldCBtYXRjaGVzO1xuICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcbiAgICAgICAgaWYgKCFpc05hTihjaHVuaykpIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2goTnVtYmVyKGNodW5rKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcyA9IGNodW5rLm1hdGNoKFNUUklOR19SRUdFWCkpIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2gobWF0Y2hlc1syXS5yZXBsYWNlKEVTQ0FQRV9SRUdFWCwgKG0sIGVzY2FwZSwgY2hyKSA9PiBlc2NhcGUgPyB1bmVzY2FwZShlc2NhcGUpIDogY2hyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIENoYWxrIHRlbXBsYXRlIHN0eWxlIGFyZ3VtZW50OiAke2NodW5rfSAoaW4gc3R5bGUgJyR7bmFtZX0nKWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcGFyc2VTdHlsZShzdHlsZSkge1xuICAgICAgU1RZTEVfUkVHRVgubGFzdEluZGV4ID0gMDtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgIGxldCBtYXRjaGVzO1xuICAgICAgd2hpbGUgKChtYXRjaGVzID0gU1RZTEVfUkVHRVguZXhlYyhzdHlsZSkpICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBtYXRjaGVzWzFdO1xuICAgICAgICBpZiAobWF0Y2hlc1syXSkge1xuICAgICAgICAgIGNvbnN0IGFyZ3MgPSBwYXJzZUFyZ3VtZW50cyhuYW1lLCBtYXRjaGVzWzJdKTtcbiAgICAgICAgICByZXN1bHRzLnB1c2goW25hbWVdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKFtuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBidWlsZFN0eWxlKGNoYWxrLCBzdHlsZXMpIHtcbiAgICAgIGNvbnN0IGVuYWJsZWQgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2Ygc3R5bGVzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3R5bGUgb2YgbGF5ZXIuc3R5bGVzKSB7XG4gICAgICAgICAgZW5hYmxlZFtzdHlsZVswXV0gPSBsYXllci5pbnZlcnNlID8gbnVsbCA6IHN0eWxlLnNsaWNlKDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY3VycmVudCA9IGNoYWxrO1xuICAgICAgZm9yIChjb25zdCBzdHlsZU5hbWUgb2YgT2JqZWN0LmtleXMoZW5hYmxlZCkpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW5hYmxlZFtzdHlsZU5hbWVdKSkge1xuICAgICAgICAgIGlmICghKHN0eWxlTmFtZSBpbiBjdXJyZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIENoYWxrIHN0eWxlOiAke3N0eWxlTmFtZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVuYWJsZWRbc3R5bGVOYW1lXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtzdHlsZU5hbWVdLmFwcGx5KGN1cnJlbnQsIGVuYWJsZWRbc3R5bGVOYW1lXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3N0eWxlTmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKGNoYWxrLCB0bXApID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IFtdO1xuICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICBsZXQgY2h1bmsgPSBbXTtcbiAgICAgIHRtcC5yZXBsYWNlKFRFTVBMQVRFX1JFR0VYLCAobSwgZXNjYXBlQ2hhciwgaW52ZXJzZSwgc3R5bGUsIGNsb3NlLCBjaHIpID0+IHtcbiAgICAgICAgaWYgKGVzY2FwZUNoYXIpIHtcbiAgICAgICAgICBjaHVuay5wdXNoKHVuZXNjYXBlKGVzY2FwZUNoYXIpKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdHlsZSkge1xuICAgICAgICAgIGNvbnN0IHN0ciA9IGNodW5rLmpvaW4oXCJcIik7XG4gICAgICAgICAgY2h1bmsgPSBbXTtcbiAgICAgICAgICBjaHVua3MucHVzaChzdHlsZXMubGVuZ3RoID09PSAwID8gc3RyIDogYnVpbGRTdHlsZShjaGFsaywgc3R5bGVzKShzdHIpKTtcbiAgICAgICAgICBzdHlsZXMucHVzaCh7XG4gICAgICAgICAgICBpbnZlcnNlLFxuICAgICAgICAgICAgc3R5bGVzOiBwYXJzZVN0eWxlKHN0eWxlKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGNsb3NlKSB7XG4gICAgICAgICAgaWYgKHN0eWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZvdW5kIGV4dHJhbmVvdXMgfSBpbiBDaGFsayB0ZW1wbGF0ZSBsaXRlcmFsXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaHVua3MucHVzaChidWlsZFN0eWxlKGNoYWxrLCBzdHlsZXMpKGNodW5rLmpvaW4oXCJcIikpKTtcbiAgICAgICAgICBjaHVuayA9IFtdO1xuICAgICAgICAgIHN0eWxlcy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaHVuay5wdXNoKGNocik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY2h1bmtzLnB1c2goY2h1bmsuam9pbihcIlwiKSk7XG4gICAgICBpZiAoc3R5bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZXJyTXNnID0gYENoYWxrIHRlbXBsYXRlIGxpdGVyYWwgaXMgbWlzc2luZyAke3N0eWxlcy5sZW5ndGh9IGNsb3NpbmcgYnJhY2tldCR7c3R5bGVzLmxlbmd0aCA9PT0gMSA/IFwiXCIgOiBcInNcIn0gKFxcYH1cXGApYDtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2h1bmtzLmpvaW4oXCJcIik7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jaGFsazIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oaWdobGlnaHQvbm9kZV9tb2R1bGVzL2NoYWxrL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZXNjYXBlU3RyaW5nUmVnZXhwMiA9IHJlcXVpcmVfZXNjYXBlX3N0cmluZ19yZWdleHAyKCk7XG4gICAgdmFyIGFuc2lTdHlsZXMgPSByZXF1aXJlX2Fuc2lfc3R5bGVzKCk7XG4gICAgdmFyIHN0ZG91dENvbG9yID0gcmVxdWlyZV9zdXBwb3J0c19jb2xvcjIoKS5zdGRvdXQ7XG4gICAgdmFyIHRlbXBsYXRlID0gcmVxdWlyZV90ZW1wbGF0ZXMyKCk7XG4gICAgdmFyIGlzU2ltcGxlV2luZG93c1Rlcm0gPSBwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgJiYgIShwcm9jZXNzLmVudi5URVJNIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcInh0ZXJtXCIpO1xuICAgIHZhciBsZXZlbE1hcHBpbmcgPSBbXCJhbnNpXCIsIFwiYW5zaVwiLCBcImFuc2kyNTZcIiwgXCJhbnNpMTZtXCJdO1xuICAgIHZhciBza2lwTW9kZWxzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wiZ3JheVwiXSk7XG4gICAgdmFyIHN0eWxlcyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZ1bmN0aW9uIGFwcGx5T3B0aW9ucyhvYmosIG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgY29uc3Qgc2NMZXZlbCA9IHN0ZG91dENvbG9yID8gc3Rkb3V0Q29sb3IubGV2ZWwgOiAwO1xuICAgICAgb2JqLmxldmVsID0gb3B0aW9ucy5sZXZlbCA9PT0gdm9pZCAwID8gc2NMZXZlbCA6IG9wdGlvbnMubGV2ZWw7XG4gICAgICBvYmouZW5hYmxlZCA9IFwiZW5hYmxlZFwiIGluIG9wdGlvbnMgPyBvcHRpb25zLmVuYWJsZWQgOiBvYmoubGV2ZWwgPiAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBDaGFsayhvcHRpb25zKSB7XG4gICAgICBpZiAoIXRoaXMgfHwgISh0aGlzIGluc3RhbmNlb2YgQ2hhbGspIHx8IHRoaXMudGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3QgY2hhbGsgPSB7fTtcbiAgICAgICAgYXBwbHlPcHRpb25zKGNoYWxrLCBvcHRpb25zKTtcbiAgICAgICAgY2hhbGsudGVtcGxhdGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjb25zdCBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICAgIHJldHVybiBjaGFsa1RhZy5hcHBseShudWxsLCBbY2hhbGsudGVtcGxhdGVdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgIH07XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihjaGFsaywgQ2hhbGsucHJvdG90eXBlKTtcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGNoYWxrLnRlbXBsYXRlLCBjaGFsayk7XG4gICAgICAgIGNoYWxrLnRlbXBsYXRlLmNvbnN0cnVjdG9yID0gQ2hhbGs7XG4gICAgICAgIHJldHVybiBjaGFsay50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGFwcGx5T3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKGlzU2ltcGxlV2luZG93c1Rlcm0pIHtcbiAgICAgIGFuc2lTdHlsZXMuYmx1ZS5vcGVuID0gXCJcXHgxQls5NG1cIjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYW5zaVN0eWxlcykpIHtcbiAgICAgIGFuc2lTdHlsZXNba2V5XS5jbG9zZVJlID0gbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdSZWdleHAyKGFuc2lTdHlsZXNba2V5XS5jbG9zZSksIFwiZ1wiKTtcbiAgICAgIHN0eWxlc1trZXldID0ge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgY29uc3QgY29kZXMgPSBhbnNpU3R5bGVzW2tleV07XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkLmNhbGwodGhpcywgdGhpcy5fc3R5bGVzID8gdGhpcy5fc3R5bGVzLmNvbmNhdChjb2RlcykgOiBbY29kZXNdLCB0aGlzLl9lbXB0eSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgc3R5bGVzLnZpc2libGUgPSB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBidWlsZC5jYWxsKHRoaXMsIHRoaXMuX3N0eWxlcyB8fCBbXSwgdHJ1ZSwgXCJ2aXNpYmxlXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgYW5zaVN0eWxlcy5jb2xvci5jbG9zZVJlID0gbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdSZWdleHAyKGFuc2lTdHlsZXMuY29sb3IuY2xvc2UpLCBcImdcIik7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBPYmplY3Qua2V5cyhhbnNpU3R5bGVzLmNvbG9yLmFuc2kpKSB7XG4gICAgICBpZiAoc2tpcE1vZGVscy5oYXMobW9kZWwpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgc3R5bGVzW21vZGVsXSA9IHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIGNvbnN0IGxldmVsID0gdGhpcy5sZXZlbDtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCBvcGVuID0gYW5zaVN0eWxlcy5jb2xvcltsZXZlbE1hcHBpbmdbbGV2ZWxdXVttb2RlbF0uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGNvZGVzID0ge1xuICAgICAgICAgICAgICBvcGVuLFxuICAgICAgICAgICAgICBjbG9zZTogYW5zaVN0eWxlcy5jb2xvci5jbG9zZSxcbiAgICAgICAgICAgICAgY2xvc2VSZTogYW5zaVN0eWxlcy5jb2xvci5jbG9zZVJlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkLmNhbGwodGhpcywgdGhpcy5fc3R5bGVzID8gdGhpcy5fc3R5bGVzLmNvbmNhdChjb2RlcykgOiBbY29kZXNdLCB0aGlzLl9lbXB0eSwgbW9kZWwpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIGFuc2lTdHlsZXMuYmdDb2xvci5jbG9zZVJlID0gbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdSZWdleHAyKGFuc2lTdHlsZXMuYmdDb2xvci5jbG9zZSksIFwiZ1wiKTtcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIE9iamVjdC5rZXlzKGFuc2lTdHlsZXMuYmdDb2xvci5hbnNpKSkge1xuICAgICAgaWYgKHNraXBNb2RlbHMuaGFzKG1vZGVsKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJnTW9kZWwgPSBcImJnXCIgKyBtb2RlbFswXS50b1VwcGVyQ2FzZSgpICsgbW9kZWwuc2xpY2UoMSk7XG4gICAgICBzdHlsZXNbYmdNb2RlbF0gPSB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICBjb25zdCBsZXZlbCA9IHRoaXMubGV2ZWw7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IGFuc2lTdHlsZXMuYmdDb2xvcltsZXZlbE1hcHBpbmdbbGV2ZWxdXVttb2RlbF0uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGNvZGVzID0ge1xuICAgICAgICAgICAgICBvcGVuLFxuICAgICAgICAgICAgICBjbG9zZTogYW5zaVN0eWxlcy5iZ0NvbG9yLmNsb3NlLFxuICAgICAgICAgICAgICBjbG9zZVJlOiBhbnNpU3R5bGVzLmJnQ29sb3IuY2xvc2VSZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBidWlsZC5jYWxsKHRoaXMsIHRoaXMuX3N0eWxlcyA/IHRoaXMuX3N0eWxlcy5jb25jYXQoY29kZXMpIDogW2NvZGVzXSwgdGhpcy5fZW1wdHksIG1vZGVsKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB2YXIgcHJvdG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcygoKSA9PiB7XG4gICAgfSwgc3R5bGVzKTtcbiAgICBmdW5jdGlvbiBidWlsZChfc3R5bGVzLCBfZW1wdHksIGtleSkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXBwbHlTdHlsZS5hcHBseShidWlsZGVyLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIGJ1aWxkZXIuX3N0eWxlcyA9IF9zdHlsZXM7XG4gICAgICBidWlsZGVyLl9lbXB0eSA9IF9lbXB0eTtcbiAgICAgIGNvbnN0IHNlbGYyID0gdGhpcztcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShidWlsZGVyLCBcImxldmVsXCIsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBzZWxmMi5sZXZlbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KGxldmVsKSB7XG4gICAgICAgICAgc2VsZjIubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYnVpbGRlciwgXCJlbmFibGVkXCIsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBzZWxmMi5lbmFibGVkO1xuICAgICAgICB9LFxuICAgICAgICBzZXQoZW5hYmxlZCkge1xuICAgICAgICAgIHNlbGYyLmVuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGJ1aWxkZXIuaGFzR3JleSA9IHRoaXMuaGFzR3JleSB8fCBrZXkgPT09IFwiZ3JheVwiIHx8IGtleSA9PT0gXCJncmV5XCI7XG4gICAgICBidWlsZGVyLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgcmV0dXJuIGJ1aWxkZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFwcGx5U3R5bGUoKSB7XG4gICAgICBjb25zdCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgY29uc3QgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICAgICAgbGV0IHN0ciA9IFN0cmluZyhhcmd1bWVudHNbMF0pO1xuICAgICAgaWYgKGFyZ3NMZW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoYXJnc0xlbiA+IDEpIHtcbiAgICAgICAgZm9yIChsZXQgYSA9IDE7IGEgPCBhcmdzTGVuOyBhKyspIHtcbiAgICAgICAgICBzdHIgKz0gXCIgXCIgKyBhcmdzW2FdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmxldmVsIDw9IDAgfHwgIXN0cikge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW1wdHkgPyBcIlwiIDogc3RyO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3JpZ2luYWxEaW0gPSBhbnNpU3R5bGVzLmRpbS5vcGVuO1xuICAgICAgaWYgKGlzU2ltcGxlV2luZG93c1Rlcm0gJiYgdGhpcy5oYXNHcmV5KSB7XG4gICAgICAgIGFuc2lTdHlsZXMuZGltLm9wZW4gPSBcIlwiO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBjb2RlIG9mIHRoaXMuX3N0eWxlcy5zbGljZSgpLnJldmVyc2UoKSkge1xuICAgICAgICBzdHIgPSBjb2RlLm9wZW4gKyBzdHIucmVwbGFjZShjb2RlLmNsb3NlUmUsIGNvZGUub3BlbikgKyBjb2RlLmNsb3NlO1xuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxyP1xcbi9nLCBgJHtjb2RlLmNsb3NlfSQmJHtjb2RlLm9wZW59YCk7XG4gICAgICB9XG4gICAgICBhbnNpU3R5bGVzLmRpbS5vcGVuID0gb3JpZ2luYWxEaW07XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjaGFsa1RhZyhjaGFsaywgc3RyaW5ncykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHN0cmluZ3MpKSB7XG4gICAgICAgIHJldHVybiBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkuam9pbihcIiBcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICAgICAgY29uc3QgcGFydHMgPSBbc3RyaW5ncy5yYXdbMF1dO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzdHJpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goU3RyaW5nKGFyZ3NbaSAtIDFdKS5yZXBsYWNlKC9be31cXFxcXS9nLCBcIlxcXFwkJlwiKSk7XG4gICAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHN0cmluZ3MucmF3W2ldKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGVtcGxhdGUoY2hhbGssIHBhcnRzLmpvaW4oXCJcIikpO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDaGFsay5wcm90b3R5cGUsIHN0eWxlcyk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gQ2hhbGsoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMuc3VwcG9ydHNDb2xvciA9IHN0ZG91dENvbG9yO1xuICAgIG1vZHVsZTIuZXhwb3J0cy5kZWZhdWx0ID0gbW9kdWxlMi5leHBvcnRzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xpYjQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BiYWJlbC9oaWdobGlnaHQvbGliL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBoaWdobGlnaHQ7XG4gICAgZXhwb3J0czIuZ2V0Q2hhbGsgPSBnZXRDaGFsaztcbiAgICBleHBvcnRzMi5zaG91bGRIaWdobGlnaHQgPSBzaG91bGRIaWdobGlnaHQ7XG4gICAgdmFyIF9qc1Rva2VucyA9IHJlcXVpcmVfanNfdG9rZW5zKCk7XG4gICAgdmFyIF9oZWxwZXJWYWxpZGF0b3JJZGVudGlmaWVyID0gcmVxdWlyZV9saWIzKCk7XG4gICAgdmFyIF9jaGFsayA9IHJlcXVpcmVfY2hhbGsyKCk7XG4gICAgdmFyIHNvbWV0aW1lc0tleXdvcmRzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wiYXNcIiwgXCJhc3luY1wiLCBcImZyb21cIiwgXCJnZXRcIiwgXCJvZlwiLCBcInNldFwiXSk7XG4gICAgZnVuY3Rpb24gZ2V0RGVmcyhjaGFsaykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5d29yZDogY2hhbGsuY3lhbixcbiAgICAgICAgY2FwaXRhbGl6ZWQ6IGNoYWxrLnllbGxvdyxcbiAgICAgICAganN4SWRlbnRpZmllcjogY2hhbGsueWVsbG93LFxuICAgICAgICBwdW5jdHVhdG9yOiBjaGFsay55ZWxsb3csXG4gICAgICAgIG51bWJlcjogY2hhbGsubWFnZW50YSxcbiAgICAgICAgc3RyaW5nOiBjaGFsay5ncmVlbixcbiAgICAgICAgcmVnZXg6IGNoYWxrLm1hZ2VudGEsXG4gICAgICAgIGNvbW1lbnQ6IGNoYWxrLmdyZXksXG4gICAgICAgIGludmFsaWQ6IGNoYWxrLndoaXRlLmJnUmVkLmJvbGRcbiAgICAgIH07XG4gICAgfVxuICAgIHZhciBORVdMSU5FID0gL1xcclxcbnxbXFxuXFxyXFx1MjAyOFxcdTIwMjldLztcbiAgICB2YXIgQlJBQ0tFVCA9IC9eWygpW1xcXXt9XSQvO1xuICAgIHZhciB0b2tlbml6ZTtcbiAgICB7XG4gICAgICBjb25zdCBKU1hfVEFHID0gL15bYS16XVtcXHctXSokL2k7XG4gICAgICBjb25zdCBnZXRUb2tlblR5cGUgPSBmdW5jdGlvbih0b2tlbiwgb2Zmc2V0LCB0ZXh0KSB7XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcIm5hbWVcIikge1xuICAgICAgICAgIGlmICgoMCwgX2hlbHBlclZhbGlkYXRvcklkZW50aWZpZXIuaXNLZXl3b3JkKSh0b2tlbi52YWx1ZSkgfHwgKDAsIF9oZWxwZXJWYWxpZGF0b3JJZGVudGlmaWVyLmlzU3RyaWN0UmVzZXJ2ZWRXb3JkKSh0b2tlbi52YWx1ZSwgdHJ1ZSkgfHwgc29tZXRpbWVzS2V5d29yZHMuaGFzKHRva2VuLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwia2V5d29yZFwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoSlNYX1RBRy50ZXN0KHRva2VuLnZhbHVlKSAmJiAodGV4dFtvZmZzZXQgLSAxXSA9PT0gXCI8XCIgfHwgdGV4dC5zdWJzdHIob2Zmc2V0IC0gMiwgMikgPT0gXCI8L1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwianN4SWRlbnRpZmllclwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodG9rZW4udmFsdWVbMF0gIT09IHRva2VuLnZhbHVlWzBdLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBcImNhcGl0YWxpemVkXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcInB1bmN0dWF0b3JcIiAmJiBCUkFDS0VULnRlc3QodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIFwiYnJhY2tldFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcImludmFsaWRcIiAmJiAodG9rZW4udmFsdWUgPT09IFwiQFwiIHx8IHRva2VuLnZhbHVlID09PSBcIiNcIikpIHtcbiAgICAgICAgICByZXR1cm4gXCJwdW5jdHVhdG9yXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuLnR5cGU7XG4gICAgICB9O1xuICAgICAgdG9rZW5pemUgPSBmdW5jdGlvbiogKHRleHQpIHtcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICB3aGlsZSAobWF0Y2ggPSBfanNUb2tlbnMuZGVmYXVsdC5leGVjKHRleHQpKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSBfanNUb2tlbnMubWF0Y2hUb1Rva2VuKG1hdGNoKTtcbiAgICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgICB0eXBlOiBnZXRUb2tlblR5cGUodG9rZW4sIG1hdGNoLmluZGV4LCB0ZXh0KSxcbiAgICAgICAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhpZ2hsaWdodFRva2VucyhkZWZzLCB0ZXh0KSB7XG4gICAgICBsZXQgaGlnaGxpZ2h0ZWQgPSBcIlwiO1xuICAgICAgZm9yIChjb25zdCB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHZhbHVlXG4gICAgICB9IG9mIHRva2VuaXplKHRleHQpKSB7XG4gICAgICAgIGNvbnN0IGNvbG9yaXplID0gZGVmc1t0eXBlXTtcbiAgICAgICAgaWYgKGNvbG9yaXplKSB7XG4gICAgICAgICAgaGlnaGxpZ2h0ZWQgKz0gdmFsdWUuc3BsaXQoTkVXTElORSkubWFwKChzdHIpID0+IGNvbG9yaXplKHN0cikpLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGlnaGxpZ2h0ZWQgKz0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBoaWdobGlnaHRlZDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2hvdWxkSGlnaGxpZ2h0KG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiAhIV9jaGFsay5zdXBwb3J0c0NvbG9yIHx8IG9wdGlvbnMuZm9yY2VDb2xvcjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Q2hhbGsob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm9yY2VDb2xvciA/IG5ldyBfY2hhbGsuY29uc3RydWN0b3Ioe1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBsZXZlbDogMVxuICAgICAgfSkgOiBfY2hhbGs7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhpZ2hsaWdodChjb2RlLCBvcHRpb25zID0ge30pIHtcbiAgICAgIGlmIChjb2RlICE9PSBcIlwiICYmIHNob3VsZEhpZ2hsaWdodChvcHRpb25zKSkge1xuICAgICAgICBjb25zdCBjaGFsayA9IGdldENoYWxrKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBkZWZzID0gZ2V0RGVmcyhjaGFsayk7XG4gICAgICAgIHJldHVybiBoaWdobGlnaHRUb2tlbnMoZGVmcywgY29kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbGliNSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQGJhYmVsL2NvZGUtZnJhbWUvbGliL2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmNvZGVGcmFtZUNvbHVtbnMgPSBjb2RlRnJhbWVDb2x1bW5zO1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBfZGVmYXVsdDtcbiAgICB2YXIgX2hpZ2hsaWdodCA9IHJlcXVpcmVfbGliNCgpO1xuICAgIHZhciBkZXByZWNhdGlvbldhcm5pbmdTaG93biA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIGdldERlZnMoY2hhbGspIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1dHRlcjogY2hhbGsuZ3JleSxcbiAgICAgICAgbWFya2VyOiBjaGFsay5yZWQuYm9sZCxcbiAgICAgICAgbWVzc2FnZTogY2hhbGsucmVkLmJvbGRcbiAgICAgIH07XG4gICAgfVxuICAgIHZhciBORVdMSU5FID0gL1xcclxcbnxbXFxuXFxyXFx1MjAyOFxcdTIwMjldLztcbiAgICBmdW5jdGlvbiBnZXRNYXJrZXJMaW5lcyhsb2MsIHNvdXJjZSwgb3B0cykge1xuICAgICAgY29uc3Qgc3RhcnRMb2MgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY29sdW1uOiAwLFxuICAgICAgICBsaW5lOiAtMVxuICAgICAgfSwgbG9jLnN0YXJ0KTtcbiAgICAgIGNvbnN0IGVuZExvYyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXJ0TG9jLCBsb2MuZW5kKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbGluZXNBYm92ZSA9IDIsXG4gICAgICAgIGxpbmVzQmVsb3cgPSAzXG4gICAgICB9ID0gb3B0cyB8fCB7fTtcbiAgICAgIGNvbnN0IHN0YXJ0TGluZSA9IHN0YXJ0TG9jLmxpbmU7XG4gICAgICBjb25zdCBzdGFydENvbHVtbiA9IHN0YXJ0TG9jLmNvbHVtbjtcbiAgICAgIGNvbnN0IGVuZExpbmUgPSBlbmRMb2MubGluZTtcbiAgICAgIGNvbnN0IGVuZENvbHVtbiA9IGVuZExvYy5jb2x1bW47XG4gICAgICBsZXQgc3RhcnQgPSBNYXRoLm1heChzdGFydExpbmUgLSAobGluZXNBYm92ZSArIDEpLCAwKTtcbiAgICAgIGxldCBlbmQgPSBNYXRoLm1pbihzb3VyY2UubGVuZ3RoLCBlbmRMaW5lICsgbGluZXNCZWxvdyk7XG4gICAgICBpZiAoc3RhcnRMaW5lID09PSAtMSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoZW5kTGluZSA9PT0gLTEpIHtcbiAgICAgICAgZW5kID0gc291cmNlLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbmVEaWZmID0gZW5kTGluZSAtIHN0YXJ0TGluZTtcbiAgICAgIGNvbnN0IG1hcmtlckxpbmVzID0ge307XG4gICAgICBpZiAobGluZURpZmYpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbGluZURpZmY7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGxpbmVOdW1iZXIgPSBpICsgc3RhcnRMaW5lO1xuICAgICAgICAgIGlmICghc3RhcnRDb2x1bW4pIHtcbiAgICAgICAgICAgIG1hcmtlckxpbmVzW2xpbmVOdW1iZXJdID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUxlbmd0aCA9IHNvdXJjZVtsaW5lTnVtYmVyIC0gMV0ubGVuZ3RoO1xuICAgICAgICAgICAgbWFya2VyTGluZXNbbGluZU51bWJlcl0gPSBbc3RhcnRDb2x1bW4sIHNvdXJjZUxlbmd0aCAtIHN0YXJ0Q29sdW1uICsgMV07XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSBsaW5lRGlmZikge1xuICAgICAgICAgICAgbWFya2VyTGluZXNbbGluZU51bWJlcl0gPSBbMCwgZW5kQ29sdW1uXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlTGVuZ3RoID0gc291cmNlW2xpbmVOdW1iZXIgLSBpXS5sZW5ndGg7XG4gICAgICAgICAgICBtYXJrZXJMaW5lc1tsaW5lTnVtYmVyXSA9IFswLCBzb3VyY2VMZW5ndGhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0YXJ0Q29sdW1uID09PSBlbmRDb2x1bW4pIHtcbiAgICAgICAgICBpZiAoc3RhcnRDb2x1bW4pIHtcbiAgICAgICAgICAgIG1hcmtlckxpbmVzW3N0YXJ0TGluZV0gPSBbc3RhcnRDb2x1bW4sIDBdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXJrZXJMaW5lc1tzdGFydExpbmVdID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWFya2VyTGluZXNbc3RhcnRMaW5lXSA9IFtzdGFydENvbHVtbiwgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW5dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydCxcbiAgICAgICAgZW5kLFxuICAgICAgICBtYXJrZXJMaW5lc1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29kZUZyYW1lQ29sdW1ucyhyYXdMaW5lcywgbG9jLCBvcHRzID0ge30pIHtcbiAgICAgIGNvbnN0IGhpZ2hsaWdodGVkID0gKG9wdHMuaGlnaGxpZ2h0Q29kZSB8fCBvcHRzLmZvcmNlQ29sb3IpICYmICgwLCBfaGlnaGxpZ2h0LnNob3VsZEhpZ2hsaWdodCkob3B0cyk7XG4gICAgICBjb25zdCBjaGFsayA9ICgwLCBfaGlnaGxpZ2h0LmdldENoYWxrKShvcHRzKTtcbiAgICAgIGNvbnN0IGRlZnMgPSBnZXREZWZzKGNoYWxrKTtcbiAgICAgIGNvbnN0IG1heWJlSGlnaGxpZ2h0ID0gKGNoYWxrRm4sIHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gaGlnaGxpZ2h0ZWQgPyBjaGFsa0ZuKHN0cmluZykgOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgY29uc3QgbGluZXMgPSByYXdMaW5lcy5zcGxpdChORVdMSU5FKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIGVuZCxcbiAgICAgICAgbWFya2VyTGluZXNcbiAgICAgIH0gPSBnZXRNYXJrZXJMaW5lcyhsb2MsIGxpbmVzLCBvcHRzKTtcbiAgICAgIGNvbnN0IGhhc0NvbHVtbnMgPSBsb2Muc3RhcnQgJiYgdHlwZW9mIGxvYy5zdGFydC5jb2x1bW4gPT09IFwibnVtYmVyXCI7XG4gICAgICBjb25zdCBudW1iZXJNYXhXaWR0aCA9IFN0cmluZyhlbmQpLmxlbmd0aDtcbiAgICAgIGNvbnN0IGhpZ2hsaWdodGVkTGluZXMgPSBoaWdobGlnaHRlZCA/ICgwLCBfaGlnaGxpZ2h0LmRlZmF1bHQpKHJhd0xpbmVzLCBvcHRzKSA6IHJhd0xpbmVzO1xuICAgICAgbGV0IGZyYW1lID0gaGlnaGxpZ2h0ZWRMaW5lcy5zcGxpdChORVdMSU5FLCBlbmQpLnNsaWNlKHN0YXJ0LCBlbmQpLm1hcCgobGluZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbnVtYmVyID0gc3RhcnQgKyAxICsgaW5kZXg7XG4gICAgICAgIGNvbnN0IHBhZGRlZE51bWJlciA9IGAgJHtudW1iZXJ9YC5zbGljZSgtbnVtYmVyTWF4V2lkdGgpO1xuICAgICAgICBjb25zdCBndXR0ZXIgPSBgICR7cGFkZGVkTnVtYmVyfSB8YDtcbiAgICAgICAgY29uc3QgaGFzTWFya2VyID0gbWFya2VyTGluZXNbbnVtYmVyXTtcbiAgICAgICAgY29uc3QgbGFzdE1hcmtlckxpbmUgPSAhbWFya2VyTGluZXNbbnVtYmVyICsgMV07XG4gICAgICAgIGlmIChoYXNNYXJrZXIpIHtcbiAgICAgICAgICBsZXQgbWFya2VyTGluZSA9IFwiXCI7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGFzTWFya2VyKSkge1xuICAgICAgICAgICAgY29uc3QgbWFya2VyU3BhY2luZyA9IGxpbmUuc2xpY2UoMCwgTWF0aC5tYXgoaGFzTWFya2VyWzBdIC0gMSwgMCkpLnJlcGxhY2UoL1teXFx0XS9nLCBcIiBcIik7XG4gICAgICAgICAgICBjb25zdCBudW1iZXJPZk1hcmtlcnMgPSBoYXNNYXJrZXJbMV0gfHwgMTtcbiAgICAgICAgICAgIG1hcmtlckxpbmUgPSBbXCJcXG4gXCIsIG1heWJlSGlnaGxpZ2h0KGRlZnMuZ3V0dGVyLCBndXR0ZXIucmVwbGFjZSgvXFxkL2csIFwiIFwiKSksIFwiIFwiLCBtYXJrZXJTcGFjaW5nLCBtYXliZUhpZ2hsaWdodChkZWZzLm1hcmtlciwgXCJeXCIpLnJlcGVhdChudW1iZXJPZk1hcmtlcnMpXS5qb2luKFwiXCIpO1xuICAgICAgICAgICAgaWYgKGxhc3RNYXJrZXJMaW5lICYmIG9wdHMubWVzc2FnZSkge1xuICAgICAgICAgICAgICBtYXJrZXJMaW5lICs9IFwiIFwiICsgbWF5YmVIaWdobGlnaHQoZGVmcy5tZXNzYWdlLCBvcHRzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW21heWJlSGlnaGxpZ2h0KGRlZnMubWFya2VyLCBcIj5cIiksIG1heWJlSGlnaGxpZ2h0KGRlZnMuZ3V0dGVyLCBndXR0ZXIpLCBsaW5lLmxlbmd0aCA+IDAgPyBgICR7bGluZX1gIDogXCJcIiwgbWFya2VyTGluZV0uam9pbihcIlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYCAke21heWJlSGlnaGxpZ2h0KGRlZnMuZ3V0dGVyLCBndXR0ZXIpfSR7bGluZS5sZW5ndGggPiAwID8gYCAke2xpbmV9YCA6IFwiXCJ9YDtcbiAgICAgICAgfVxuICAgICAgfSkuam9pbihcIlxcblwiKTtcbiAgICAgIGlmIChvcHRzLm1lc3NhZ2UgJiYgIWhhc0NvbHVtbnMpIHtcbiAgICAgICAgZnJhbWUgPSBgJHtcIiBcIi5yZXBlYXQobnVtYmVyTWF4V2lkdGggKyAxKX0ke29wdHMubWVzc2FnZX1cbiR7ZnJhbWV9YDtcbiAgICAgIH1cbiAgICAgIGlmIChoaWdobGlnaHRlZCkge1xuICAgICAgICByZXR1cm4gY2hhbGsucmVzZXQoZnJhbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZyYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBfZGVmYXVsdChyYXdMaW5lcywgbGluZU51bWJlciwgY29sTnVtYmVyLCBvcHRzID0ge30pIHtcbiAgICAgIGlmICghZGVwcmVjYXRpb25XYXJuaW5nU2hvd24pIHtcbiAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nU2hvd24gPSB0cnVlO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gXCJQYXNzaW5nIGxpbmVOdW1iZXIgYW5kIGNvbE51bWJlciBpcyBkZXByZWNhdGVkIHRvIEBiYWJlbC9jb2RlLWZyYW1lLiBQbGVhc2UgdXNlIGBjb2RlRnJhbWVDb2x1bW5zYC5cIjtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW1pdFdhcm5pbmcpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKG1lc3NhZ2UsIFwiRGVwcmVjYXRpb25XYXJuaW5nXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRlcHJlY2F0aW9uRXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgZGVwcmVjYXRpb25FcnJvci5uYW1lID0gXCJEZXByZWNhdGlvbldhcm5pbmdcIjtcbiAgICAgICAgICBjb25zb2xlLndhcm4obmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29sTnVtYmVyID0gTWF0aC5tYXgoY29sTnVtYmVyLCAwKTtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0ge1xuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGNvbHVtbjogY29sTnVtYmVyLFxuICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXJcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBjb2RlRnJhbWVDb2x1bW5zKHJhd0xpbmVzLCBsb2NhdGlvbiwgb3B0cyk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbWFpbi9wYXJzZXIuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBDb25maWdFcnJvclxuICAgIH0gPSByZXF1aXJlX2Vycm9ycygpO1xuICAgIHZhciBqc0xvYyA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIGxvYWRQYXJzZXIgPSByZXF1aXJlX2xvYWRfcGFyc2VyKCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IGpzTG9jO1xuICAgIHZhciBvd25OYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICAgIHZhciBvd25EZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBmdW5jdGlvbiBnZXRQYXJzZXJzKG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHBhcnNlcnMgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIG9wdGlvbnMucGx1Z2lucykge1xuICAgICAgICBpZiAoIXBsdWdpbi5wYXJzZXJzKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIG93bk5hbWVzKHBsdWdpbi5wYXJzZXJzKSkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXJzZXJzLCBuYW1lLCBvd25EZXNjcmlwdG9yKHBsdWdpbi5wYXJzZXJzLCBuYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZXJzO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlUGFyc2VyKG9wdHMsIHBhcnNlcnMgPSBnZXRQYXJzZXJzKG9wdHMpKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMucGFyc2VyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXJzZTogb3B0cy5wYXJzZXIsXG4gICAgICAgICAgYXN0Rm9ybWF0OiBcImVzdHJlZVwiLFxuICAgICAgICAgIGxvY1N0YXJ0LFxuICAgICAgICAgIGxvY0VuZFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBvcHRzLnBhcnNlciA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcnNlcnMsIG9wdHMucGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXJzW29wdHMucGFyc2VyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ29uZmlnRXJyb3IoYENvdWxkbid0IHJlc29sdmUgcGFyc2VyIFwiJHtvcHRzLnBhcnNlcn1cIi4gUGFyc2VycyBtdXN0IGJlIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIHN0YW5kYWxvbmUgYnVuZGxlLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2FkUGFyc2VyKG9wdHMucGFyc2VyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcGFyc2UodGV4dCwgb3B0cykge1xuICAgICAgY29uc3QgcGFyc2VycyA9IGdldFBhcnNlcnMob3B0cyk7XG4gICAgICBjb25zdCBwYXJzZXJzRm9yQ3VzdG9tUGFyc2VyQXBpID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Qua2V5cyhwYXJzZXJzKS5tYXAoKHBhcnNlck5hbWUpID0+IFtwYXJzZXJOYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2Vyc1twYXJzZXJOYW1lXS5wYXJzZTtcbiAgICAgICAgfVxuICAgICAgfV0pKSk7XG4gICAgICBjb25zdCBwYXJzZXIgPSByZXNvbHZlUGFyc2VyKG9wdHMsIHBhcnNlcnMpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHBhcnNlci5wcmVwcm9jZXNzKSB7XG4gICAgICAgICAgdGV4dCA9IHBhcnNlci5wcmVwcm9jZXNzKHRleHQsIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICBhc3Q6IHBhcnNlci5wYXJzZSh0ZXh0LCBwYXJzZXJzRm9yQ3VzdG9tUGFyc2VyQXBpLCBvcHRzKVxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGxvY1xuICAgICAgICB9ID0gZXJyb3I7XG4gICAgICAgIGlmIChsb2MpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb2RlRnJhbWVDb2x1bW5zXG4gICAgICAgICAgfSA9IHJlcXVpcmVfbGliNSgpO1xuICAgICAgICAgIGVycm9yLmNvZGVGcmFtZSA9IGNvZGVGcmFtZUNvbHVtbnModGV4dCwgbG9jLCB7XG4gICAgICAgICAgICBoaWdobGlnaHRDb2RlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBcIlxcblwiICsgZXJyb3IuY29kZUZyYW1lO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yLnN0YWNrO1xuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwYXJzZSxcbiAgICAgIHJlc29sdmVQYXJzZXJcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3JlYWRsaW5lcyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvbi1yZWFkbGluZXMvcmVhZGxpbmVzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgdmFyIExpbmVCeUxpbmUgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihmaWxlLCBvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICBpZiAoIW9wdGlvbnMucmVhZENodW5rKVxuICAgICAgICAgIG9wdGlvbnMucmVhZENodW5rID0gMTAyNDtcbiAgICAgICAgaWYgKCFvcHRpb25zLm5ld0xpbmVDaGFyYWN0ZXIpIHtcbiAgICAgICAgICBvcHRpb25zLm5ld0xpbmVDaGFyYWN0ZXIgPSAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm5ld0xpbmVDaGFyYWN0ZXIgPSBvcHRpb25zLm5ld0xpbmVDaGFyYWN0ZXIuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGZpbGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICB0aGlzLmZkID0gZmlsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZkID0gZnMub3BlblN5bmMoZmlsZSwgXCJyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMubmV3TGluZUNoYXJhY3RlciA9IG9wdGlvbnMubmV3TGluZUNoYXJhY3RlcjtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfVxuICAgICAgX3NlYXJjaEluQnVmZmVyKGJ1ZmZlciwgaGV4TmVlZGxlKSB7XG4gICAgICAgIGxldCBmb3VuZCA9IC0xO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBidWZmZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgYl9ieXRlID0gYnVmZmVyW2ldO1xuICAgICAgICAgIGlmIChiX2J5dGUgPT09IGhleE5lZWRsZSkge1xuICAgICAgICAgICAgZm91bmQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLmVvZlJlYWNoZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saW5lc0NhY2hlID0gW107XG4gICAgICAgIHRoaXMuZmRQb3NpdGlvbiA9IDA7XG4gICAgICB9XG4gICAgICBjbG9zZSgpIHtcbiAgICAgICAgZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgICAgICB0aGlzLmZkID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIF9leHRyYWN0TGluZXMoYnVmZmVyKSB7XG4gICAgICAgIGxldCBsaW5lO1xuICAgICAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgICAgICBsZXQgYnVmZmVyUG9zaXRpb24gPSAwO1xuICAgICAgICBsZXQgbGFzdE5ld0xpbmVCdWZmZXJQb3NpdGlvbiA9IDA7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgbGV0IGJ1ZmZlclBvc2l0aW9uVmFsdWUgPSBidWZmZXJbYnVmZmVyUG9zaXRpb24rK107XG4gICAgICAgICAgaWYgKGJ1ZmZlclBvc2l0aW9uVmFsdWUgPT09IHRoaXMubmV3TGluZUNoYXJhY3Rlcikge1xuICAgICAgICAgICAgbGluZSA9IGJ1ZmZlci5zbGljZShsYXN0TmV3TGluZUJ1ZmZlclBvc2l0aW9uLCBidWZmZXJQb3NpdGlvbik7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgbGFzdE5ld0xpbmVCdWZmZXJQb3NpdGlvbiA9IGJ1ZmZlclBvc2l0aW9uO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYnVmZmVyUG9zaXRpb25WYWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxlZnRvdmVycyA9IGJ1ZmZlci5zbGljZShsYXN0TmV3TGluZUJ1ZmZlclBvc2l0aW9uLCBidWZmZXJQb3NpdGlvbik7XG4gICAgICAgIGlmIChsZWZ0b3ZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgbGluZXMucHVzaChsZWZ0b3ZlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaW5lcztcbiAgICAgIH1cbiAgICAgIF9yZWFkQ2h1bmsobGluZUxlZnRvdmVycykge1xuICAgICAgICBsZXQgdG90YWxCeXRlc1JlYWQgPSAwO1xuICAgICAgICBsZXQgYnl0ZXNSZWFkO1xuICAgICAgICBjb25zdCBidWZmZXJzID0gW107XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCByZWFkQnVmZmVyID0gbmV3IEJ1ZmZlcih0aGlzLm9wdGlvbnMucmVhZENodW5rKTtcbiAgICAgICAgICBieXRlc1JlYWQgPSBmcy5yZWFkU3luYyh0aGlzLmZkLCByZWFkQnVmZmVyLCAwLCB0aGlzLm9wdGlvbnMucmVhZENodW5rLCB0aGlzLmZkUG9zaXRpb24pO1xuICAgICAgICAgIHRvdGFsQnl0ZXNSZWFkID0gdG90YWxCeXRlc1JlYWQgKyBieXRlc1JlYWQ7XG4gICAgICAgICAgdGhpcy5mZFBvc2l0aW9uID0gdGhpcy5mZFBvc2l0aW9uICsgYnl0ZXNSZWFkO1xuICAgICAgICAgIGJ1ZmZlcnMucHVzaChyZWFkQnVmZmVyKTtcbiAgICAgICAgfSB3aGlsZSAoYnl0ZXNSZWFkICYmIHRoaXMuX3NlYXJjaEluQnVmZmVyKGJ1ZmZlcnNbYnVmZmVycy5sZW5ndGggLSAxXSwgdGhpcy5vcHRpb25zLm5ld0xpbmVDaGFyYWN0ZXIpID09PSAtMSk7XG4gICAgICAgIGxldCBidWZmZXJEYXRhID0gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbiAgICAgICAgaWYgKGJ5dGVzUmVhZCA8IHRoaXMub3B0aW9ucy5yZWFkQ2h1bmspIHtcbiAgICAgICAgICB0aGlzLmVvZlJlYWNoZWQgPSB0cnVlO1xuICAgICAgICAgIGJ1ZmZlckRhdGEgPSBidWZmZXJEYXRhLnNsaWNlKDAsIHRvdGFsQnl0ZXNSZWFkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG90YWxCeXRlc1JlYWQpIHtcbiAgICAgICAgICB0aGlzLmxpbmVzQ2FjaGUgPSB0aGlzLl9leHRyYWN0TGluZXMoYnVmZmVyRGF0YSk7XG4gICAgICAgICAgaWYgKGxpbmVMZWZ0b3ZlcnMpIHtcbiAgICAgICAgICAgIHRoaXMubGluZXNDYWNoZVswXSA9IEJ1ZmZlci5jb25jYXQoW2xpbmVMZWZ0b3ZlcnMsIHRoaXMubGluZXNDYWNoZVswXV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG90YWxCeXRlc1JlYWQ7XG4gICAgICB9XG4gICAgICBuZXh0KCkge1xuICAgICAgICBpZiAoIXRoaXMuZmQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgbGluZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5lb2ZSZWFjaGVkICYmIHRoaXMubGluZXNDYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbGluZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYnl0ZXNSZWFkO1xuICAgICAgICBpZiAoIXRoaXMubGluZXNDYWNoZS5sZW5ndGgpIHtcbiAgICAgICAgICBieXRlc1JlYWQgPSB0aGlzLl9yZWFkQ2h1bmsoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5saW5lc0NhY2hlLmxlbmd0aCkge1xuICAgICAgICAgIGxpbmUgPSB0aGlzLmxpbmVzQ2FjaGUuc2hpZnQoKTtcbiAgICAgICAgICBjb25zdCBsYXN0TGluZUNoYXJhY3RlciA9IGxpbmVbbGluZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZiAobGFzdExpbmVDaGFyYWN0ZXIgIT09IHRoaXMubmV3TGluZUNoYXJhY3Rlcikge1xuICAgICAgICAgICAgYnl0ZXNSZWFkID0gdGhpcy5fcmVhZENodW5rKGxpbmUpO1xuICAgICAgICAgICAgaWYgKGJ5dGVzUmVhZCkge1xuICAgICAgICAgICAgICBsaW5lID0gdGhpcy5saW5lc0NhY2hlLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVvZlJlYWNoZWQgJiYgdGhpcy5saW5lc0NhY2hlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGluZSAmJiBsaW5lW2xpbmUubGVuZ3RoIC0gMV0gPT09IHRoaXMubmV3TGluZUNoYXJhY3Rlcikge1xuICAgICAgICAgIGxpbmUgPSBsaW5lLnNsaWNlKDAsIGxpbmUubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgICB9XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBMaW5lQnlMaW5lO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2dldF9pbnRlcnByZXRlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvdXRpbHMvZ2V0LWludGVycHJldGVyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgdmFyIHJlYWRsaW5lcyA9IHJlcXVpcmVfcmVhZGxpbmVzKCk7XG4gICAgZnVuY3Rpb24gZ2V0SW50ZXJwcmV0ZXIoZmlsZXBhdGgpIHtcbiAgICAgIGlmICh0eXBlb2YgZmlsZXBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBsZXQgZmQ7XG4gICAgICB0cnkge1xuICAgICAgICBmZCA9IGZzLm9wZW5TeW5jKGZpbGVwYXRoLCBcInJcIik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBsaW5lciA9IG5ldyByZWFkbGluZXMoZmQpO1xuICAgICAgICBjb25zdCBmaXJzdExpbmUgPSBsaW5lci5uZXh0KCkudG9TdHJpbmcoXCJ1dGY4XCIpO1xuICAgICAgICBjb25zdCBtMSA9IGZpcnN0TGluZS5tYXRjaCgvXiMhXFwvKD86dXNyXFwvKT9iaW5cXC9lbnZcXHMrKFxcUyspLyk7XG4gICAgICAgIGlmIChtMSkge1xuICAgICAgICAgIHJldHVybiBtMVsxXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtMiA9IGZpcnN0TGluZS5tYXRjaCgvXiMhXFwvKD86dXNyXFwvKD86bG9jYWxcXC8pPyk/YmluXFwvKFxcUyspLyk7XG4gICAgICAgIGlmIChtMikge1xuICAgICAgICAgIHJldHVybiBtMlsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZnMuY2xvc2VTeW5jKGZkKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZ2V0SW50ZXJwcmV0ZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfb3B0aW9ucyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbWFpbi9vcHRpb25zLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciB7XG4gICAgICBVbmRlZmluZWRQYXJzZXJFcnJvclxuICAgIH0gPSByZXF1aXJlX2Vycm9ycygpO1xuICAgIHZhciB7XG4gICAgICBnZXRTdXBwb3J0SW5mbzogZ2V0U3VwcG9ydEluZm8yXG4gICAgfSA9IHJlcXVpcmVfc3VwcG9ydCgpO1xuICAgIHZhciBub3JtYWxpemVyID0gcmVxdWlyZV9vcHRpb25zX25vcm1hbGl6ZXIoKTtcbiAgICB2YXIge1xuICAgICAgcmVzb2x2ZVBhcnNlclxuICAgIH0gPSByZXF1aXJlX3BhcnNlcigpO1xuICAgIHZhciBoaWRkZW5EZWZhdWx0cyA9IHtcbiAgICAgIGFzdEZvcm1hdDogXCJlc3RyZWVcIixcbiAgICAgIHByaW50ZXI6IHt9LFxuICAgICAgb3JpZ2luYWxUZXh0OiB2b2lkIDAsXG4gICAgICBsb2NTdGFydDogbnVsbCxcbiAgICAgIGxvY0VuZDogbnVsbFxuICAgIH07XG4gICAgZnVuY3Rpb24gbm9ybWFsaXplKG9wdGlvbnMsIG9wdHMgPSB7fSkge1xuICAgICAgY29uc3QgcmF3T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpO1xuICAgICAgY29uc3Qgc3VwcG9ydE9wdGlvbnMgPSBnZXRTdXBwb3J0SW5mbzIoe1xuICAgICAgICBwbHVnaW5zOiBvcHRpb25zLnBsdWdpbnMsXG4gICAgICAgIHNob3dVbnJlbGVhc2VkOiB0cnVlLFxuICAgICAgICBzaG93RGVwcmVjYXRlZDogdHJ1ZVxuICAgICAgfSkub3B0aW9ucztcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBoaWRkZW5EZWZhdWx0cyksIE9iamVjdC5mcm9tRW50cmllcyhzdXBwb3J0T3B0aW9ucy5maWx0ZXIoKG9wdGlvbkluZm8pID0+IG9wdGlvbkluZm8uZGVmYXVsdCAhPT0gdm9pZCAwKS5tYXAoKG9wdGlvbikgPT4gW29wdGlvbi5uYW1lLCBvcHRpb24uZGVmYXVsdF0pKSk7XG4gICAgICBpZiAoIXJhd09wdGlvbnMucGFyc2VyKSB7XG4gICAgICAgIGlmICghcmF3T3B0aW9ucy5maWxlcGF0aCkge1xuICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG9wdHMubG9nZ2VyIHx8IGNvbnNvbGU7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXCJObyBwYXJzZXIgYW5kIG5vIGZpbGVwYXRoIGdpdmVuLCB1c2luZyAnYmFiZWwnIHRoZSBwYXJzZXIgbm93IGJ1dCB0aGlzIHdpbGwgdGhyb3cgYW4gZXJyb3IgaW4gdGhlIGZ1dHVyZS4gUGxlYXNlIHNwZWNpZnkgYSBwYXJzZXIgb3IgYSBmaWxlcGF0aCBzbyBvbmUgY2FuIGJlIGluZmVycmVkLlwiKTtcbiAgICAgICAgICByYXdPcHRpb25zLnBhcnNlciA9IFwiYmFiZWxcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByYXdPcHRpb25zLnBhcnNlciA9IGluZmVyUGFyc2VyKHJhd09wdGlvbnMuZmlsZXBhdGgsIHJhd09wdGlvbnMucGx1Z2lucyk7XG4gICAgICAgICAgaWYgKCFyYXdPcHRpb25zLnBhcnNlcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFVuZGVmaW5lZFBhcnNlckVycm9yKGBObyBwYXJzZXIgY291bGQgYmUgaW5mZXJyZWQgZm9yIGZpbGU6ICR7cmF3T3B0aW9ucy5maWxlcGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnNlciA9IHJlc29sdmVQYXJzZXIobm9ybWFsaXplci5ub3JtYWxpemVBcGlPcHRpb25zKHJhd09wdGlvbnMsIFtzdXBwb3J0T3B0aW9ucy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IFwicGFyc2VyXCIpXSwge1xuICAgICAgICBwYXNzVGhyb3VnaDogdHJ1ZSxcbiAgICAgICAgbG9nZ2VyOiBmYWxzZVxuICAgICAgfSkpO1xuICAgICAgcmF3T3B0aW9ucy5hc3RGb3JtYXQgPSBwYXJzZXIuYXN0Rm9ybWF0O1xuICAgICAgcmF3T3B0aW9ucy5sb2NFbmQgPSBwYXJzZXIubG9jRW5kO1xuICAgICAgcmF3T3B0aW9ucy5sb2NTdGFydCA9IHBhcnNlci5sb2NTdGFydDtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IGdldFBsdWdpbihyYXdPcHRpb25zKTtcbiAgICAgIHJhd09wdGlvbnMucHJpbnRlciA9IHBsdWdpbi5wcmludGVyc1tyYXdPcHRpb25zLmFzdEZvcm1hdF07XG4gICAgICBjb25zdCBwbHVnaW5EZWZhdWx0cyA9IE9iamVjdC5mcm9tRW50cmllcyhzdXBwb3J0T3B0aW9ucy5maWx0ZXIoKG9wdGlvbkluZm8pID0+IG9wdGlvbkluZm8ucGx1Z2luRGVmYXVsdHMgJiYgb3B0aW9uSW5mby5wbHVnaW5EZWZhdWx0c1twbHVnaW4ubmFtZV0gIT09IHZvaWQgMCkubWFwKChvcHRpb25JbmZvKSA9PiBbb3B0aW9uSW5mby5uYW1lLCBvcHRpb25JbmZvLnBsdWdpbkRlZmF1bHRzW3BsdWdpbi5uYW1lXV0pKTtcbiAgICAgIGNvbnN0IG1peGVkRGVmYXVsdHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKSwgcGx1Z2luRGVmYXVsdHMpO1xuICAgICAgZm9yIChjb25zdCBbaywgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1peGVkRGVmYXVsdHMpKSB7XG4gICAgICAgIGlmIChyYXdPcHRpb25zW2tdID09PSBudWxsIHx8IHJhd09wdGlvbnNba10gPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJhd09wdGlvbnNba10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhd09wdGlvbnMucGFyc2VyID09PSBcImpzb25cIikge1xuICAgICAgICByYXdPcHRpb25zLnRyYWlsaW5nQ29tbWEgPSBcIm5vbmVcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub3JtYWxpemVyLm5vcm1hbGl6ZUFwaU9wdGlvbnMocmF3T3B0aW9ucywgc3VwcG9ydE9wdGlvbnMsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBwYXNzVGhyb3VnaDogT2JqZWN0LmtleXMoaGlkZGVuRGVmYXVsdHMpXG4gICAgICB9LCBvcHRzKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFBsdWdpbihvcHRpb25zKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFzdEZvcm1hdFxuICAgICAgfSA9IG9wdGlvbnM7XG4gICAgICBpZiAoIWFzdEZvcm1hdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZXRQbHVnaW4oKSByZXF1aXJlcyBhc3RGb3JtYXQgdG8gYmUgc2V0XCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJpbnRlclBsdWdpbiA9IG9wdGlvbnMucGx1Z2lucy5maW5kKChwbHVnaW4pID0+IHBsdWdpbi5wcmludGVycyAmJiBwbHVnaW4ucHJpbnRlcnNbYXN0Rm9ybWF0XSk7XG4gICAgICBpZiAoIXByaW50ZXJQbHVnaW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHBsdWdpbiBmb3IgQVNUIGZvcm1hdCBcIiR7YXN0Rm9ybWF0fVwiYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJpbnRlclBsdWdpbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5mZXJQYXJzZXIoZmlsZXBhdGgsIHBsdWdpbnMyKSB7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZXBhdGgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBnZXRTdXBwb3J0SW5mbzIoe1xuICAgICAgICBwbHVnaW5zOiBwbHVnaW5zMlxuICAgICAgfSkubGFuZ3VhZ2VzLmZpbHRlcigobGFuZ3VhZ2UyKSA9PiBsYW5ndWFnZTIuc2luY2UgIT09IG51bGwpO1xuICAgICAgbGV0IGxhbmd1YWdlID0gbGFuZ3VhZ2VzLmZpbmQoKGxhbmd1YWdlMikgPT4gbGFuZ3VhZ2UyLmV4dGVuc2lvbnMgJiYgbGFuZ3VhZ2UyLmV4dGVuc2lvbnMuc29tZSgoZXh0ZW5zaW9uKSA9PiBmaWxlbmFtZS5lbmRzV2l0aChleHRlbnNpb24pKSB8fCBsYW5ndWFnZTIuZmlsZW5hbWVzICYmIGxhbmd1YWdlMi5maWxlbmFtZXMuc29tZSgobmFtZSkgPT4gbmFtZS50b0xvd2VyQ2FzZSgpID09PSBmaWxlbmFtZSkpO1xuICAgICAgaWYgKCFsYW5ndWFnZSAmJiAhZmlsZW5hbWUuaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICAgIGNvbnN0IGdldEludGVycHJldGVyID0gcmVxdWlyZV9nZXRfaW50ZXJwcmV0ZXIoKTtcbiAgICAgICAgY29uc3QgaW50ZXJwcmV0ZXIgPSBnZXRJbnRlcnByZXRlcihmaWxlcGF0aCk7XG4gICAgICAgIGxhbmd1YWdlID0gbGFuZ3VhZ2VzLmZpbmQoKGxhbmd1YWdlMikgPT4gbGFuZ3VhZ2UyLmludGVycHJldGVycyAmJiBsYW5ndWFnZTIuaW50ZXJwcmV0ZXJzLmluY2x1ZGVzKGludGVycHJldGVyKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGFuZ3VhZ2UgJiYgbGFuZ3VhZ2UucGFyc2Vyc1swXTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbm9ybWFsaXplLFxuICAgICAgaGlkZGVuRGVmYXVsdHMsXG4gICAgICBpbmZlclBhcnNlclxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbWFzc2FnZV9hc3QgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL21haW4vbWFzc2FnZS1hc3QuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIG1hc3NhZ2VBU1QoYXN0LCBvcHRpb25zLCBwYXJlbnQpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFzdCkpIHtcbiAgICAgICAgcmV0dXJuIGFzdC5tYXAoKGUpID0+IG1hc3NhZ2VBU1QoZSwgb3B0aW9ucywgcGFyZW50KSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgfVxuICAgICAgaWYgKCFhc3QgfHwgdHlwZW9mIGFzdCAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICByZXR1cm4gYXN0O1xuICAgICAgfVxuICAgICAgY29uc3QgY2xlYW5GdW5jdGlvbiA9IG9wdGlvbnMucHJpbnRlci5tYXNzYWdlQXN0Tm9kZTtcbiAgICAgIGxldCBpZ25vcmVkUHJvcGVydGllcztcbiAgICAgIGlmIChjbGVhbkZ1bmN0aW9uICYmIGNsZWFuRnVuY3Rpb24uaWdub3JlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgaWdub3JlZFByb3BlcnRpZXMgPSBjbGVhbkZ1bmN0aW9uLmlnbm9yZWRQcm9wZXJ0aWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWdub3JlZFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3T2JqID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhc3QpKSB7XG4gICAgICAgIGlmICghaWdub3JlZFByb3BlcnRpZXMuaGFzKGtleSkgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBuZXdPYmpba2V5XSA9IG1hc3NhZ2VBU1QodmFsdWUsIG9wdGlvbnMsIGFzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjbGVhbkZ1bmN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNsZWFuRnVuY3Rpb24oYXN0LCBuZXdPYmosIHBhcmVudCk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdPYmo7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IG1hc3NhZ2VBU1Q7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29tbWVudHMgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL21haW4vY29tbWVudHMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBsaW5lLFxuICAgICAgICBoYXJkbGluZSxcbiAgICAgICAgYnJlYWtQYXJlbnQsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgbGluZVN1ZmZpeCxcbiAgICAgICAgam9pbixcbiAgICAgICAgY3Vyc29yXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgaGFzTmV3bGluZSxcbiAgICAgIHNraXBOZXdsaW5lLFxuICAgICAgc2tpcFNwYWNlcyxcbiAgICAgIGlzUHJldmlvdXNMaW5lRW1wdHksXG4gICAgICBhZGRMZWFkaW5nQ29tbWVudCxcbiAgICAgIGFkZERhbmdsaW5nQ29tbWVudCxcbiAgICAgIGFkZFRyYWlsaW5nQ29tbWVudFxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIgY2hpbGROb2Rlc0NhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gICAgZnVuY3Rpb24gZ2V0U29ydGVkQ2hpbGROb2Rlcyhub2RlLCBvcHRpb25zLCByZXN1bHRBcnJheSkge1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcHJpbnRlcixcbiAgICAgICAgbG9jU3RhcnQsXG4gICAgICAgIGxvY0VuZFxuICAgICAgfSA9IG9wdGlvbnM7XG4gICAgICBpZiAocmVzdWx0QXJyYXkpIHtcbiAgICAgICAgaWYgKHByaW50ZXIuY2FuQXR0YWNoQ29tbWVudCAmJiBwcmludGVyLmNhbkF0dGFjaENvbW1lbnQobm9kZSkpIHtcbiAgICAgICAgICBsZXQgaTtcbiAgICAgICAgICBmb3IgKGkgPSByZXN1bHRBcnJheS5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgaWYgKGxvY1N0YXJ0KHJlc3VsdEFycmF5W2ldKSA8PSBsb2NTdGFydChub2RlKSAmJiBsb2NFbmQocmVzdWx0QXJyYXlbaV0pIDw9IGxvY0VuZChub2RlKSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0QXJyYXkuc3BsaWNlKGkgKyAxLCAwLCBub2RlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hpbGROb2Rlc0NhY2hlLmhhcyhub2RlKSkge1xuICAgICAgICByZXR1cm4gY2hpbGROb2Rlc0NhY2hlLmdldChub2RlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBwcmludGVyLmdldENvbW1lbnRDaGlsZE5vZGVzICYmIHByaW50ZXIuZ2V0Q29tbWVudENoaWxkTm9kZXMobm9kZSwgb3B0aW9ucykgfHwgdHlwZW9mIG5vZGUgPT09IFwib2JqZWN0XCIgJiYgT2JqZWN0LmVudHJpZXMobm9kZSkuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSBcImVuY2xvc2luZ05vZGVcIiAmJiBrZXkgIT09IFwicHJlY2VkaW5nTm9kZVwiICYmIGtleSAhPT0gXCJmb2xsb3dpbmdOb2RlXCIgJiYga2V5ICE9PSBcInRva2Vuc1wiICYmIGtleSAhPT0gXCJjb21tZW50c1wiICYmIGtleSAhPT0gXCJwYXJlbnRcIikubWFwKChbLCB2YWx1ZV0pID0+IHZhbHVlKTtcbiAgICAgIGlmICghY2hpbGROb2Rlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdEFycmF5KSB7XG4gICAgICAgIHJlc3VsdEFycmF5ID0gW107XG4gICAgICAgIGNoaWxkTm9kZXNDYWNoZS5zZXQobm9kZSwgcmVzdWx0QXJyYXkpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBjaGlsZE5vZGUgb2YgY2hpbGROb2Rlcykge1xuICAgICAgICBnZXRTb3J0ZWRDaGlsZE5vZGVzKGNoaWxkTm9kZSwgb3B0aW9ucywgcmVzdWx0QXJyYXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdEFycmF5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWNvcmF0ZUNvbW1lbnQobm9kZSwgY29tbWVudCwgb3B0aW9ucywgZW5jbG9zaW5nTm9kZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsb2NTdGFydCxcbiAgICAgICAgbG9jRW5kXG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIGNvbnN0IGNvbW1lbnRTdGFydCA9IGxvY1N0YXJ0KGNvbW1lbnQpO1xuICAgICAgY29uc3QgY29tbWVudEVuZCA9IGxvY0VuZChjb21tZW50KTtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBnZXRTb3J0ZWRDaGlsZE5vZGVzKG5vZGUsIG9wdGlvbnMpO1xuICAgICAgbGV0IHByZWNlZGluZ05vZGU7XG4gICAgICBsZXQgZm9sbG93aW5nTm9kZTtcbiAgICAgIGxldCBsZWZ0ID0gMDtcbiAgICAgIGxldCByaWdodCA9IGNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlZnQgPCByaWdodCkge1xuICAgICAgICBjb25zdCBtaWRkbGUgPSBsZWZ0ICsgcmlnaHQgPj4gMTtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZE5vZGVzW21pZGRsZV07XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbG9jU3RhcnQoY2hpbGQpO1xuICAgICAgICBjb25zdCBlbmQgPSBsb2NFbmQoY2hpbGQpO1xuICAgICAgICBpZiAoc3RhcnQgPD0gY29tbWVudFN0YXJ0ICYmIGNvbW1lbnRFbmQgPD0gZW5kKSB7XG4gICAgICAgICAgcmV0dXJuIGRlY29yYXRlQ29tbWVudChjaGlsZCwgY29tbWVudCwgb3B0aW9ucywgY2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQgPD0gY29tbWVudFN0YXJ0KSB7XG4gICAgICAgICAgcHJlY2VkaW5nTm9kZSA9IGNoaWxkO1xuICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tZW50RW5kIDw9IHN0YXJ0KSB7XG4gICAgICAgICAgZm9sbG93aW5nTm9kZSA9IGNoaWxkO1xuICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbW1lbnQgbG9jYXRpb24gb3ZlcmxhcHMgd2l0aCBub2RlIGxvY2F0aW9uXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGVuY2xvc2luZ05vZGUgJiYgZW5jbG9zaW5nTm9kZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBxdWFzaXNcbiAgICAgICAgfSA9IGVuY2xvc2luZ05vZGU7XG4gICAgICAgIGNvbnN0IGNvbW1lbnRJbmRleCA9IGZpbmRFeHByZXNzaW9uSW5kZXhGb3JDb21tZW50KHF1YXNpcywgY29tbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChwcmVjZWRpbmdOb2RlICYmIGZpbmRFeHByZXNzaW9uSW5kZXhGb3JDb21tZW50KHF1YXNpcywgcHJlY2VkaW5nTm9kZSwgb3B0aW9ucykgIT09IGNvbW1lbnRJbmRleCkge1xuICAgICAgICAgIHByZWNlZGluZ05vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb2xsb3dpbmdOb2RlICYmIGZpbmRFeHByZXNzaW9uSW5kZXhGb3JDb21tZW50KHF1YXNpcywgZm9sbG93aW5nTm9kZSwgb3B0aW9ucykgIT09IGNvbW1lbnRJbmRleCkge1xuICAgICAgICAgIGZvbGxvd2luZ05vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgICBwcmVjZWRpbmdOb2RlLFxuICAgICAgICBmb2xsb3dpbmdOb2RlXG4gICAgICB9O1xuICAgIH1cbiAgICB2YXIgcmV0dXJuRmFsc2UgPSAoKSA9PiBmYWxzZTtcbiAgICBmdW5jdGlvbiBhdHRhY2goY29tbWVudHMsIGFzdCwgdGV4dCwgb3B0aW9ucykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbW1lbnRzKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0aWVzVG9CcmVhayA9IFtdO1xuICAgICAgY29uc3Qge1xuICAgICAgICBsb2NTdGFydCxcbiAgICAgICAgbG9jRW5kLFxuICAgICAgICBwcmludGVyOiB7XG4gICAgICAgICAgaGFuZGxlQ29tbWVudHMgPSB7fVxuICAgICAgICB9XG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXZvaWRBc3RNdXRhdGlvbixcbiAgICAgICAgb3duTGluZTogaGFuZGxlT3duTGluZUNvbW1lbnQgPSByZXR1cm5GYWxzZSxcbiAgICAgICAgZW5kT2ZMaW5lOiBoYW5kbGVFbmRPZkxpbmVDb21tZW50ID0gcmV0dXJuRmFsc2UsXG4gICAgICAgIHJlbWFpbmluZzogaGFuZGxlUmVtYWluaW5nQ29tbWVudCA9IHJldHVybkZhbHNlXG4gICAgICB9ID0gaGFuZGxlQ29tbWVudHM7XG4gICAgICBjb25zdCBkZWNvcmF0ZWRDb21tZW50cyA9IGNvbW1lbnRzLm1hcCgoY29tbWVudCwgaW5kZXgpID0+IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZGVjb3JhdGVDb21tZW50KGFzdCwgY29tbWVudCwgb3B0aW9ucykpLCB7fSwge1xuICAgICAgICBjb21tZW50LFxuICAgICAgICB0ZXh0LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBhc3QsXG4gICAgICAgIGlzTGFzdENvbW1lbnQ6IGNvbW1lbnRzLmxlbmd0aCAtIDEgPT09IGluZGV4XG4gICAgICB9KSk7XG4gICAgICBmb3IgKGNvbnN0IFtpbmRleCwgY29udGV4dF0gb2YgZGVjb3JhdGVkQ29tbWVudHMuZW50cmllcygpKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBjb21tZW50LFxuICAgICAgICAgIHByZWNlZGluZ05vZGUsXG4gICAgICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgICAgICBmb2xsb3dpbmdOb2RlLFxuICAgICAgICAgIHRleHQ6IHRleHQyLFxuICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMyLFxuICAgICAgICAgIGFzdDogYXN0MixcbiAgICAgICAgICBpc0xhc3RDb21tZW50XG4gICAgICAgIH0gPSBjb250ZXh0O1xuICAgICAgICBpZiAob3B0aW9uczIucGFyc2VyID09PSBcImpzb25cIiB8fCBvcHRpb25zMi5wYXJzZXIgPT09IFwianNvbjVcIiB8fCBvcHRpb25zMi5wYXJzZXIgPT09IFwiX19qc19leHByZXNzaW9uXCIgfHwgb3B0aW9uczIucGFyc2VyID09PSBcIl9fdnVlX2V4cHJlc3Npb25cIiB8fCBvcHRpb25zMi5wYXJzZXIgPT09IFwiX192dWVfdHNfZXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgaWYgKGxvY1N0YXJ0KGNvbW1lbnQpIC0gbG9jU3RhcnQoYXN0MikgPD0gMCkge1xuICAgICAgICAgICAgYWRkTGVhZGluZ0NvbW1lbnQoYXN0MiwgY29tbWVudCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxvY0VuZChjb21tZW50KSAtIGxvY0VuZChhc3QyKSA+PSAwKSB7XG4gICAgICAgICAgICBhZGRUcmFpbGluZ0NvbW1lbnQoYXN0MiwgY29tbWVudCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFyZ3M7XG4gICAgICAgIGlmIChhdm9pZEFzdE11dGF0aW9uKSB7XG4gICAgICAgICAgYXJncyA9IFtjb250ZXh0XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21tZW50LmVuY2xvc2luZ05vZGUgPSBlbmNsb3NpbmdOb2RlO1xuICAgICAgICAgIGNvbW1lbnQucHJlY2VkaW5nTm9kZSA9IHByZWNlZGluZ05vZGU7XG4gICAgICAgICAgY29tbWVudC5mb2xsb3dpbmdOb2RlID0gZm9sbG93aW5nTm9kZTtcbiAgICAgICAgICBhcmdzID0gW2NvbW1lbnQsIHRleHQyLCBvcHRpb25zMiwgYXN0MiwgaXNMYXN0Q29tbWVudF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzT3duTGluZUNvbW1lbnQodGV4dDIsIG9wdGlvbnMyLCBkZWNvcmF0ZWRDb21tZW50cywgaW5kZXgpKSB7XG4gICAgICAgICAgY29tbWVudC5wbGFjZW1lbnQgPSBcIm93bkxpbmVcIjtcbiAgICAgICAgICBpZiAoaGFuZGxlT3duTGluZUNvbW1lbnQoLi4uYXJncykpIHtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvbGxvd2luZ05vZGUpIHtcbiAgICAgICAgICAgIGFkZExlYWRpbmdDb21tZW50KGZvbGxvd2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJlY2VkaW5nTm9kZSkge1xuICAgICAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KHByZWNlZGluZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZW5jbG9zaW5nTm9kZSkge1xuICAgICAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZGREYW5nbGluZ0NvbW1lbnQoYXN0MiwgY29tbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlzRW5kT2ZMaW5lQ29tbWVudCh0ZXh0Miwgb3B0aW9uczIsIGRlY29yYXRlZENvbW1lbnRzLCBpbmRleCkpIHtcbiAgICAgICAgICBjb21tZW50LnBsYWNlbWVudCA9IFwiZW5kT2ZMaW5lXCI7XG4gICAgICAgICAgaWYgKGhhbmRsZUVuZE9mTGluZUNvbW1lbnQoLi4uYXJncykpIHtcbiAgICAgICAgICB9IGVsc2UgaWYgKHByZWNlZGluZ05vZGUpIHtcbiAgICAgICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChwcmVjZWRpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvbGxvd2luZ05vZGUpIHtcbiAgICAgICAgICAgIGFkZExlYWRpbmdDb21tZW50KGZvbGxvd2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZW5jbG9zaW5nTm9kZSkge1xuICAgICAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZGREYW5nbGluZ0NvbW1lbnQoYXN0MiwgY29tbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbW1lbnQucGxhY2VtZW50ID0gXCJyZW1haW5pbmdcIjtcbiAgICAgICAgICBpZiAoaGFuZGxlUmVtYWluaW5nQ29tbWVudCguLi5hcmdzKSkge1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJlY2VkaW5nTm9kZSAmJiBmb2xsb3dpbmdOb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB0aWVDb3VudCA9IHRpZXNUb0JyZWFrLmxlbmd0aDtcbiAgICAgICAgICAgIGlmICh0aWVDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgbGFzdFRpZSA9IHRpZXNUb0JyZWFrW3RpZUNvdW50IC0gMV07XG4gICAgICAgICAgICAgIGlmIChsYXN0VGllLmZvbGxvd2luZ05vZGUgIT09IGZvbGxvd2luZ05vZGUpIHtcbiAgICAgICAgICAgICAgICBicmVha1RpZXModGllc1RvQnJlYWssIHRleHQyLCBvcHRpb25zMik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpZXNUb0JyZWFrLnB1c2goY29udGV4dCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChwcmVjZWRpbmdOb2RlKSB7XG4gICAgICAgICAgICBhZGRUcmFpbGluZ0NvbW1lbnQocHJlY2VkaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb2xsb3dpbmdOb2RlKSB7XG4gICAgICAgICAgICBhZGRMZWFkaW5nQ29tbWVudChmb2xsb3dpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGVuY2xvc2luZ05vZGUpIHtcbiAgICAgICAgICAgIGFkZERhbmdsaW5nQ29tbWVudChlbmNsb3NpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KGFzdDIsIGNvbW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWtUaWVzKHRpZXNUb0JyZWFrLCB0ZXh0LCBvcHRpb25zKTtcbiAgICAgIGlmICghYXZvaWRBc3RNdXRhdGlvbikge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgICBkZWxldGUgY29tbWVudC5wcmVjZWRpbmdOb2RlO1xuICAgICAgICAgIGRlbGV0ZSBjb21tZW50LmVuY2xvc2luZ05vZGU7XG4gICAgICAgICAgZGVsZXRlIGNvbW1lbnQuZm9sbG93aW5nTm9kZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgaXNBbGxFbXB0eUFuZE5vTGluZUJyZWFrID0gKHRleHQpID0+ICEvW1xcU1xcblxcdTIwMjhcXHUyMDI5XS8udGVzdCh0ZXh0KTtcbiAgICBmdW5jdGlvbiBpc093bkxpbmVDb21tZW50KHRleHQsIG9wdGlvbnMsIGRlY29yYXRlZENvbW1lbnRzLCBjb21tZW50SW5kZXgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY29tbWVudCxcbiAgICAgICAgcHJlY2VkaW5nTm9kZVxuICAgICAgfSA9IGRlY29yYXRlZENvbW1lbnRzW2NvbW1lbnRJbmRleF07XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxvY1N0YXJ0LFxuICAgICAgICBsb2NFbmRcbiAgICAgIH0gPSBvcHRpb25zO1xuICAgICAgbGV0IHN0YXJ0ID0gbG9jU3RhcnQoY29tbWVudCk7XG4gICAgICBpZiAocHJlY2VkaW5nTm9kZSkge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IGNvbW1lbnRJbmRleCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb21tZW50OiBjb21tZW50MixcbiAgICAgICAgICAgIHByZWNlZGluZ05vZGU6IGN1cnJlbnRDb21tZW50UHJlY2VkaW5nTm9kZVxuICAgICAgICAgIH0gPSBkZWNvcmF0ZWRDb21tZW50c1tpbmRleF07XG4gICAgICAgICAgaWYgKGN1cnJlbnRDb21tZW50UHJlY2VkaW5nTm9kZSAhPT0gcHJlY2VkaW5nTm9kZSB8fCAhaXNBbGxFbXB0eUFuZE5vTGluZUJyZWFrKHRleHQuc2xpY2UobG9jRW5kKGNvbW1lbnQyKSwgc3RhcnQpKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXJ0ID0gbG9jU3RhcnQoY29tbWVudDIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzTmV3bGluZSh0ZXh0LCBzdGFydCwge1xuICAgICAgICBiYWNrd2FyZHM6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0VuZE9mTGluZUNvbW1lbnQodGV4dCwgb3B0aW9ucywgZGVjb3JhdGVkQ29tbWVudHMsIGNvbW1lbnRJbmRleCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjb21tZW50LFxuICAgICAgICBmb2xsb3dpbmdOb2RlXG4gICAgICB9ID0gZGVjb3JhdGVkQ29tbWVudHNbY29tbWVudEluZGV4XTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbG9jU3RhcnQsXG4gICAgICAgIGxvY0VuZFxuICAgICAgfSA9IG9wdGlvbnM7XG4gICAgICBsZXQgZW5kID0gbG9jRW5kKGNvbW1lbnQpO1xuICAgICAgaWYgKGZvbGxvd2luZ05vZGUpIHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSBjb21tZW50SW5kZXggKyAxOyBpbmRleCA8IGRlY29yYXRlZENvbW1lbnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNvbW1lbnQ6IGNvbW1lbnQyLFxuICAgICAgICAgICAgZm9sbG93aW5nTm9kZTogY3VycmVudENvbW1lbnRGb2xsb3dpbmdOb2RlXG4gICAgICAgICAgfSA9IGRlY29yYXRlZENvbW1lbnRzW2luZGV4XTtcbiAgICAgICAgICBpZiAoY3VycmVudENvbW1lbnRGb2xsb3dpbmdOb2RlICE9PSBmb2xsb3dpbmdOb2RlIHx8ICFpc0FsbEVtcHR5QW5kTm9MaW5lQnJlYWsodGV4dC5zbGljZShlbmQsIGxvY1N0YXJ0KGNvbW1lbnQyKSkpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgZW5kID0gbG9jRW5kKGNvbW1lbnQyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc05ld2xpbmUodGV4dCwgZW5kKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYnJlYWtUaWVzKHRpZXNUb0JyZWFrLCB0ZXh0LCBvcHRpb25zKSB7XG4gICAgICBjb25zdCB0aWVDb3VudCA9IHRpZXNUb0JyZWFrLmxlbmd0aDtcbiAgICAgIGlmICh0aWVDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIHByZWNlZGluZ05vZGUsXG4gICAgICAgIGZvbGxvd2luZ05vZGUsXG4gICAgICAgIGVuY2xvc2luZ05vZGVcbiAgICAgIH0gPSB0aWVzVG9CcmVha1swXTtcbiAgICAgIGNvbnN0IGdhcFJlZ0V4cCA9IG9wdGlvbnMucHJpbnRlci5nZXRHYXBSZWdleCAmJiBvcHRpb25zLnByaW50ZXIuZ2V0R2FwUmVnZXgoZW5jbG9zaW5nTm9kZSkgfHwgL15bXFxzKF0qJC87XG4gICAgICBsZXQgZ2FwRW5kUG9zID0gb3B0aW9ucy5sb2NTdGFydChmb2xsb3dpbmdOb2RlKTtcbiAgICAgIGxldCBpbmRleE9mRmlyc3RMZWFkaW5nQ29tbWVudDtcbiAgICAgIGZvciAoaW5kZXhPZkZpcnN0TGVhZGluZ0NvbW1lbnQgPSB0aWVDb3VudDsgaW5kZXhPZkZpcnN0TGVhZGluZ0NvbW1lbnQgPiAwOyAtLWluZGV4T2ZGaXJzdExlYWRpbmdDb21tZW50KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBjb21tZW50LFxuICAgICAgICAgIHByZWNlZGluZ05vZGU6IGN1cnJlbnRDb21tZW50UHJlY2VkaW5nTm9kZSxcbiAgICAgICAgICBmb2xsb3dpbmdOb2RlOiBjdXJyZW50Q29tbWVudEZvbGxvd2luZ05vZGVcbiAgICAgICAgfSA9IHRpZXNUb0JyZWFrW2luZGV4T2ZGaXJzdExlYWRpbmdDb21tZW50IC0gMV07XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjdXJyZW50Q29tbWVudFByZWNlZGluZ05vZGUsIHByZWNlZGluZ05vZGUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3VycmVudENvbW1lbnRGb2xsb3dpbmdOb2RlLCBmb2xsb3dpbmdOb2RlKTtcbiAgICAgICAgY29uc3QgZ2FwID0gdGV4dC5zbGljZShvcHRpb25zLmxvY0VuZChjb21tZW50KSwgZ2FwRW5kUG9zKTtcbiAgICAgICAgaWYgKGdhcFJlZ0V4cC50ZXN0KGdhcCkpIHtcbiAgICAgICAgICBnYXBFbmRQb3MgPSBvcHRpb25zLmxvY1N0YXJ0KGNvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtpLCB7XG4gICAgICAgIGNvbW1lbnRcbiAgICAgIH1dIG9mIHRpZXNUb0JyZWFrLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAoaSA8IGluZGV4T2ZGaXJzdExlYWRpbmdDb21tZW50KSB7XG4gICAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KHByZWNlZGluZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZExlYWRpbmdDb21tZW50KGZvbGxvd2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgW3ByZWNlZGluZ05vZGUsIGZvbGxvd2luZ05vZGVdKSB7XG4gICAgICAgIGlmIChub2RlLmNvbW1lbnRzICYmIG5vZGUuY29tbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG5vZGUuY29tbWVudHMuc29ydCgoYSwgYikgPT4gb3B0aW9ucy5sb2NTdGFydChhKSAtIG9wdGlvbnMubG9jU3RhcnQoYikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aWVzVG9CcmVhay5sZW5ndGggPSAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENvbW1lbnQocGF0aCwgb3B0aW9ucykge1xuICAgICAgY29uc3QgY29tbWVudCA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbW1lbnQucHJpbnRlZCA9IHRydWU7XG4gICAgICByZXR1cm4gb3B0aW9ucy5wcmludGVyLnByaW50Q29tbWVudChwYXRoLCBvcHRpb25zKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmluZEV4cHJlc3Npb25JbmRleEZvckNvbW1lbnQocXVhc2lzLCBjb21tZW50LCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBzdGFydFBvcyA9IG9wdGlvbnMubG9jU3RhcnQoY29tbWVudCkgLSAxO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBxdWFzaXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKHN0YXJ0UG9zIDwgb3B0aW9ucy5sb2NTdGFydChxdWFzaXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGkgLSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRMZWFkaW5nQ29tbWVudChwYXRoLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBjb21tZW50ID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbcHJpbnRDb21tZW50KHBhdGgsIG9wdGlvbnMpXTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcHJpbnRlcixcbiAgICAgICAgb3JpZ2luYWxUZXh0LFxuICAgICAgICBsb2NTdGFydCxcbiAgICAgICAgbG9jRW5kXG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIGNvbnN0IGlzQmxvY2sgPSBwcmludGVyLmlzQmxvY2tDb21tZW50ICYmIHByaW50ZXIuaXNCbG9ja0NvbW1lbnQoY29tbWVudCk7XG4gICAgICBpZiAoaXNCbG9jaykge1xuICAgICAgICBjb25zdCBsaW5lQnJlYWsgPSBoYXNOZXdsaW5lKG9yaWdpbmFsVGV4dCwgbG9jRW5kKGNvbW1lbnQpKSA/IGhhc05ld2xpbmUob3JpZ2luYWxUZXh0LCBsb2NTdGFydChjb21tZW50KSwge1xuICAgICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgICB9KSA/IGhhcmRsaW5lIDogbGluZSA6IFwiIFwiO1xuICAgICAgICBwYXJ0cy5wdXNoKGxpbmVCcmVhayk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4ID0gc2tpcE5ld2xpbmUob3JpZ2luYWxUZXh0LCBza2lwU3BhY2VzKG9yaWdpbmFsVGV4dCwgbG9jRW5kKGNvbW1lbnQpKSk7XG4gICAgICBpZiAoaW5kZXggIT09IGZhbHNlICYmIGhhc05ld2xpbmUob3JpZ2luYWxUZXh0LCBpbmRleCkpIHtcbiAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50VHJhaWxpbmdDb21tZW50KHBhdGgsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNvbW1lbnQgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwcmludGVkID0gcHJpbnRDb21tZW50KHBhdGgsIG9wdGlvbnMpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwcmludGVyLFxuICAgICAgICBvcmlnaW5hbFRleHQsXG4gICAgICAgIGxvY1N0YXJ0XG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIGNvbnN0IGlzQmxvY2sgPSBwcmludGVyLmlzQmxvY2tDb21tZW50ICYmIHByaW50ZXIuaXNCbG9ja0NvbW1lbnQoY29tbWVudCk7XG4gICAgICBpZiAoaGFzTmV3bGluZShvcmlnaW5hbFRleHQsIGxvY1N0YXJ0KGNvbW1lbnQpLCB7XG4gICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgfSkpIHtcbiAgICAgICAgY29uc3QgaXNMaW5lQmVmb3JlRW1wdHkgPSBpc1ByZXZpb3VzTGluZUVtcHR5KG9yaWdpbmFsVGV4dCwgY29tbWVudCwgbG9jU3RhcnQpO1xuICAgICAgICByZXR1cm4gbGluZVN1ZmZpeChbaGFyZGxpbmUsIGlzTGluZUJlZm9yZUVtcHR5ID8gaGFyZGxpbmUgOiBcIlwiLCBwcmludGVkXSk7XG4gICAgICB9XG4gICAgICBsZXQgcGFydHMgPSBbXCIgXCIsIHByaW50ZWRdO1xuICAgICAgaWYgKCFpc0Jsb2NrKSB7XG4gICAgICAgIHBhcnRzID0gW2xpbmVTdWZmaXgocGFydHMpLCBicmVha1BhcmVudF07XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50RGFuZ2xpbmdDb21tZW50cyhwYXRoLCBvcHRpb25zLCBzYW1lSW5kZW50LCBmaWx0ZXIpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmNvbW1lbnRzKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgcGF0aC5lYWNoKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWVudCA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFjb21tZW50LmxlYWRpbmcgJiYgIWNvbW1lbnQudHJhaWxpbmcgJiYgKCFmaWx0ZXIgfHwgZmlsdGVyKGNvbW1lbnQpKSkge1xuICAgICAgICAgIHBhcnRzLnB1c2gocHJpbnRDb21tZW50KHBhdGgsIG9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgfSwgXCJjb21tZW50c1wiKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoc2FtZUluZGVudCkge1xuICAgICAgICByZXR1cm4gam9pbihoYXJkbGluZSwgcGFydHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluZGVudChbaGFyZGxpbmUsIGpvaW4oaGFyZGxpbmUsIHBhcnRzKV0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENvbW1lbnRzU2VwYXJhdGVseShwYXRoLCBvcHRpb25zLCBpZ25vcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgbGV0IGNvbW1lbnRzID0gdmFsdWUuY29tbWVudHMgfHwgW107XG4gICAgICBpZiAoaWdub3JlZCkge1xuICAgICAgICBjb21tZW50cyA9IGNvbW1lbnRzLmZpbHRlcigoY29tbWVudCkgPT4gIWlnbm9yZWQuaGFzKGNvbW1lbnQpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzQ3Vyc29yTm9kZSA9IHZhbHVlID09PSBvcHRpb25zLmN1cnNvck5vZGU7XG4gICAgICBpZiAoY29tbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IG1heWJlQ3Vyc29yID0gaXNDdXJzb3JOb2RlID8gY3Vyc29yIDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWFkaW5nOiBtYXliZUN1cnNvcixcbiAgICAgICAgICB0cmFpbGluZzogbWF5YmVDdXJzb3JcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxlYWRpbmdQYXJ0cyA9IFtdO1xuICAgICAgY29uc3QgdHJhaWxpbmdQYXJ0cyA9IFtdO1xuICAgICAgcGF0aC5lYWNoKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWVudCA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGlnbm9yZWQgJiYgaWdub3JlZC5oYXMoY29tbWVudCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGxlYWRpbmcsXG4gICAgICAgICAgdHJhaWxpbmdcbiAgICAgICAgfSA9IGNvbW1lbnQ7XG4gICAgICAgIGlmIChsZWFkaW5nKSB7XG4gICAgICAgICAgbGVhZGluZ1BhcnRzLnB1c2gocHJpbnRMZWFkaW5nQ29tbWVudChwYXRoLCBvcHRpb25zKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHJhaWxpbmcpIHtcbiAgICAgICAgICB0cmFpbGluZ1BhcnRzLnB1c2gocHJpbnRUcmFpbGluZ0NvbW1lbnQocGF0aCwgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICB9LCBcImNvbW1lbnRzXCIpO1xuICAgICAgaWYgKGlzQ3Vyc29yTm9kZSkge1xuICAgICAgICBsZWFkaW5nUGFydHMudW5zaGlmdChjdXJzb3IpO1xuICAgICAgICB0cmFpbGluZ1BhcnRzLnB1c2goY3Vyc29yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlYWRpbmc6IGxlYWRpbmdQYXJ0cyxcbiAgICAgICAgdHJhaWxpbmc6IHRyYWlsaW5nUGFydHNcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50Q29tbWVudHMocGF0aCwgZG9jMiwgb3B0aW9ucywgaWdub3JlZCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsZWFkaW5nLFxuICAgICAgICB0cmFpbGluZ1xuICAgICAgfSA9IHByaW50Q29tbWVudHNTZXBhcmF0ZWx5KHBhdGgsIG9wdGlvbnMsIGlnbm9yZWQpO1xuICAgICAgaWYgKCFsZWFkaW5nICYmICF0cmFpbGluZykge1xuICAgICAgICByZXR1cm4gZG9jMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbbGVhZGluZywgZG9jMiwgdHJhaWxpbmddO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbnN1cmVBbGxDb21tZW50c1ByaW50ZWQoYXN0Q29tbWVudHMpIHtcbiAgICAgIGlmICghYXN0Q29tbWVudHMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGFzdENvbW1lbnRzKSB7XG4gICAgICAgIGlmICghY29tbWVudC5wcmludGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tZW50IFwiJyArIGNvbW1lbnQudmFsdWUudHJpbSgpICsgJ1wiIHdhcyBub3QgcHJpbnRlZC4gUGxlYXNlIHJlcG9ydCB0aGlzIGVycm9yIScpO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBjb21tZW50LnByaW50ZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGF0dGFjaCxcbiAgICAgIHByaW50Q29tbWVudHMsXG4gICAgICBwcmludENvbW1lbnRzU2VwYXJhdGVseSxcbiAgICAgIHByaW50RGFuZ2xpbmdDb21tZW50cyxcbiAgICAgIGdldFNvcnRlZENoaWxkTm9kZXMsXG4gICAgICBlbnN1cmVBbGxDb21tZW50c1ByaW50ZWRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2FzdF9wYXRoID0gX19jb21tb25KUzIoe1xuICBcInNyYy9jb21tb24vYXN0LXBhdGguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBnZXRMYXN0ID0gcmVxdWlyZV9nZXRfbGFzdCgpO1xuICAgIGZ1bmN0aW9uIGdldE5vZGVIZWxwZXIocGF0aCwgY291bnQpIHtcbiAgICAgIGNvbnN0IHN0YWNrSW5kZXggPSBnZXROb2RlU3RhY2tJbmRleEhlbHBlcihwYXRoLnN0YWNrLCBjb3VudCk7XG4gICAgICByZXR1cm4gc3RhY2tJbmRleCA9PT0gLTEgPyBudWxsIDogcGF0aC5zdGFja1tzdGFja0luZGV4XTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Tm9kZVN0YWNrSW5kZXhIZWxwZXIoc3RhY2ssIGNvdW50KSB7XG4gICAgICBmb3IgKGxldCBpID0gc3RhY2subGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdGFja1tpXTtcbiAgICAgICAgaWYgKHZhbHVlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAtLWNvdW50IDwgMCkge1xuICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHZhciBBc3RQYXRoID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IFt2YWx1ZV07XG4gICAgICB9XG4gICAgICBnZXROYW1lKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3RhY2tcbiAgICAgICAgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBsZW5ndGhcbiAgICAgICAgfSA9IHN0YWNrO1xuICAgICAgICBpZiAobGVuZ3RoID4gMSkge1xuICAgICAgICAgIHJldHVybiBzdGFja1tsZW5ndGggLSAyXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGdldFZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0TGFzdCh0aGlzLnN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGdldE5vZGUoY291bnQgPSAwKSB7XG4gICAgICAgIHJldHVybiBnZXROb2RlSGVscGVyKHRoaXMsIGNvdW50KTtcbiAgICAgIH1cbiAgICAgIGdldFBhcmVudE5vZGUoY291bnQgPSAwKSB7XG4gICAgICAgIHJldHVybiBnZXROb2RlSGVscGVyKHRoaXMsIGNvdW50ICsgMSk7XG4gICAgICB9XG4gICAgICBjYWxsKGNhbGxiYWNrLCAuLi5uYW1lcykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3RhY2tcbiAgICAgICAgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBsZW5ndGhcbiAgICAgICAgfSA9IHN0YWNrO1xuICAgICAgICBsZXQgdmFsdWUgPSBnZXRMYXN0KHN0YWNrKTtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZVtuYW1lXTtcbiAgICAgICAgICBzdGFjay5wdXNoKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjayh0aGlzKTtcbiAgICAgICAgc3RhY2subGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgY2FsbFBhcmVudChjYWxsYmFjaywgY291bnQgPSAwKSB7XG4gICAgICAgIGNvbnN0IHN0YWNrSW5kZXggPSBnZXROb2RlU3RhY2tJbmRleEhlbHBlcih0aGlzLnN0YWNrLCBjb3VudCArIDEpO1xuICAgICAgICBjb25zdCBwYXJlbnRWYWx1ZXMgPSB0aGlzLnN0YWNrLnNwbGljZShzdGFja0luZGV4ICsgMSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMpO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2goLi4ucGFyZW50VmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGVhY2goY2FsbGJhY2ssIC4uLm5hbWVzKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzdGFja1xuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGxlbmd0aFxuICAgICAgICB9ID0gc3RhY2s7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldExhc3Qoc3RhY2spO1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlW25hbWVdO1xuICAgICAgICAgIHN0YWNrLnB1c2gobmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBzdGFjay5wdXNoKGksIHZhbHVlW2ldKTtcbiAgICAgICAgICBjYWxsYmFjayh0aGlzLCBpLCB2YWx1ZSk7XG4gICAgICAgICAgc3RhY2subGVuZ3RoIC09IDI7XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2subGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbWFwKGNhbGxiYWNrLCAuLi5uYW1lcykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgdGhpcy5lYWNoKChwYXRoLCBpbmRleCwgdmFsdWUpID0+IHtcbiAgICAgICAgICByZXN1bHRbaW5kZXhdID0gY2FsbGJhY2socGF0aCwgaW5kZXgsIHZhbHVlKTtcbiAgICAgICAgfSwgLi4ubmFtZXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdHJ5KGNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzdGFja1xuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgY29uc3Qgc3RhY2tCYWNrdXAgPSBbLi4uc3RhY2tdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHN0YWNrLmxlbmd0aCA9IDA7XG4gICAgICAgICAgc3RhY2sucHVzaCguLi5zdGFja0JhY2t1cCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1hdGNoKC4uLnByZWRpY2F0ZXMpIHtcbiAgICAgICAgbGV0IHN0YWNrUG9pbnRlciA9IHRoaXMuc3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgbGV0IG5hbWUgPSBudWxsO1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuc3RhY2tbc3RhY2tQb2ludGVyLS1dO1xuICAgICAgICBmb3IgKGNvbnN0IHByZWRpY2F0ZSBvZiBwcmVkaWNhdGVzKSB7XG4gICAgICAgICAgaWYgKG5vZGUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgbnVtYmVyID0gbnVsbDtcbiAgICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIG51bWJlciA9IG5hbWU7XG4gICAgICAgICAgICBuYW1lID0gdGhpcy5zdGFja1tzdGFja1BvaW50ZXItLV07XG4gICAgICAgICAgICBub2RlID0gdGhpcy5zdGFja1tzdGFja1BvaW50ZXItLV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmVkaWNhdGUgJiYgIXByZWRpY2F0ZShub2RlLCBuYW1lLCBudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5hbWUgPSB0aGlzLnN0YWNrW3N0YWNrUG9pbnRlci0tXTtcbiAgICAgICAgICBub2RlID0gdGhpcy5zdGFja1tzdGFja1BvaW50ZXItLV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBmaW5kQW5jZXN0b3IocHJlZGljYXRlKSB7XG4gICAgICAgIGxldCBzdGFja1BvaW50ZXIgPSB0aGlzLnN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGxldCBuYW1lID0gbnVsbDtcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLnN0YWNrW3N0YWNrUG9pbnRlci0tXTtcbiAgICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgICBsZXQgbnVtYmVyID0gbnVsbDtcbiAgICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIG51bWJlciA9IG5hbWU7XG4gICAgICAgICAgICBuYW1lID0gdGhpcy5zdGFja1tzdGFja1BvaW50ZXItLV07XG4gICAgICAgICAgICBub2RlID0gdGhpcy5zdGFja1tzdGFja1BvaW50ZXItLV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuYW1lICE9PSBudWxsICYmIHByZWRpY2F0ZShub2RlLCBuYW1lLCBudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmFtZSA9IHRoaXMuc3RhY2tbc3RhY2tQb2ludGVyLS1dO1xuICAgICAgICAgIG5vZGUgPSB0aGlzLnN0YWNrW3N0YWNrUG9pbnRlci0tXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gQXN0UGF0aDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9tdWx0aXBhcnNlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbWFpbi9tdWx0aXBhcnNlci5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIHV0aWxzOiB7XG4gICAgICAgIHN0cmlwVHJhaWxpbmdIYXJkbGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIG5vcm1hbGl6ZVxuICAgIH0gPSByZXF1aXJlX29wdGlvbnMoKTtcbiAgICB2YXIgY29tbWVudHMgPSByZXF1aXJlX2NvbW1lbnRzKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRTdWJ0cmVlKHBhdGgsIHByaW50LCBvcHRpb25zLCBwcmludEFzdFRvRG9jKSB7XG4gICAgICBpZiAob3B0aW9ucy5wcmludGVyLmVtYmVkICYmIG9wdGlvbnMuZW1iZWRkZWRMYW5ndWFnZUZvcm1hdHRpbmcgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLnByaW50ZXIuZW1iZWQocGF0aCwgcHJpbnQsICh0ZXh0LCBwYXJ0aWFsTmV4dE9wdGlvbnMsIHRleHRUb0RvY09wdGlvbnMpID0+IHRleHRUb0RvYyh0ZXh0LCBwYXJ0aWFsTmV4dE9wdGlvbnMsIG9wdGlvbnMsIHByaW50QXN0VG9Eb2MsIHRleHRUb0RvY09wdGlvbnMpLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdGV4dFRvRG9jKHRleHQsIHBhcnRpYWxOZXh0T3B0aW9ucywgcGFyZW50T3B0aW9ucywgcHJpbnRBc3RUb0RvYywge1xuICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiBzaG91bGRTdHJpcFRyYWlsaW5nSGFyZGxpbmUgPSBmYWxzZVxuICAgIH0gPSB7fSkge1xuICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBub3JtYWxpemUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHBhcmVudE9wdGlvbnMpLCBwYXJ0aWFsTmV4dE9wdGlvbnMpLCB7fSwge1xuICAgICAgICBwYXJlbnRQYXJzZXI6IHBhcmVudE9wdGlvbnMucGFyc2VyLFxuICAgICAgICBvcmlnaW5hbFRleHQ6IHRleHRcbiAgICAgIH0pLCB7XG4gICAgICAgIHBhc3NUaHJvdWdoOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcXVpcmVfcGFyc2VyKCkucGFyc2UodGV4dCwgbmV4dE9wdGlvbnMpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhc3RcbiAgICAgIH0gPSByZXN1bHQ7XG4gICAgICB0ZXh0ID0gcmVzdWx0LnRleHQ7XG4gICAgICBjb25zdCBhc3RDb21tZW50cyA9IGFzdC5jb21tZW50cztcbiAgICAgIGRlbGV0ZSBhc3QuY29tbWVudHM7XG4gICAgICBjb21tZW50cy5hdHRhY2goYXN0Q29tbWVudHMsIGFzdCwgdGV4dCwgbmV4dE9wdGlvbnMpO1xuICAgICAgbmV4dE9wdGlvbnNbU3ltYm9sLmZvcihcImNvbW1lbnRzXCIpXSA9IGFzdENvbW1lbnRzIHx8IFtdO1xuICAgICAgbmV4dE9wdGlvbnNbU3ltYm9sLmZvcihcInRva2Vuc1wiKV0gPSBhc3QudG9rZW5zIHx8IFtdO1xuICAgICAgY29uc3QgZG9jMiA9IHByaW50QXN0VG9Eb2MoYXN0LCBuZXh0T3B0aW9ucyk7XG4gICAgICBjb21tZW50cy5lbnN1cmVBbGxDb21tZW50c1ByaW50ZWQoYXN0Q29tbWVudHMpO1xuICAgICAgaWYgKHNob3VsZFN0cmlwVHJhaWxpbmdIYXJkbGluZSkge1xuICAgICAgICBpZiAodHlwZW9mIGRvYzIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gZG9jMi5yZXBsYWNlKC8oPzpcXHI/XFxuKSokLywgXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmlwVHJhaWxpbmdIYXJkbGluZShkb2MyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkb2MyO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludFN1YnRyZWVcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2FzdF90b19kb2MgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL21haW4vYXN0LXRvLWRvYy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIEFzdFBhdGggPSByZXF1aXJlX2FzdF9wYXRoKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBhZGRBbGlnbm1lbnRUb0RvY1xuICAgICAgfSxcbiAgICAgIHV0aWxzOiB7XG4gICAgICAgIHByb3BhZ2F0ZUJyZWFrc1xuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9jb21tZW50cygpO1xuICAgIHZhciBtdWx0aXBhcnNlciA9IHJlcXVpcmVfbXVsdGlwYXJzZXIoKTtcbiAgICBmdW5jdGlvbiBwcmludEFzdFRvRG9jKGFzdCwgb3B0aW9ucywgYWxpZ25tZW50U2l6ZSA9IDApIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcHJpbnRlclxuICAgICAgfSA9IG9wdGlvbnM7XG4gICAgICBpZiAocHJpbnRlci5wcmVwcm9jZXNzKSB7XG4gICAgICAgIGFzdCA9IHByaW50ZXIucHJlcHJvY2Vzcyhhc3QsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgY29uc3QgcGF0aCA9IG5ldyBBc3RQYXRoKGFzdCk7XG4gICAgICBsZXQgZG9jMiA9IG1haW5QcmludCgpO1xuICAgICAgaWYgKGFsaWdubWVudFNpemUgPiAwKSB7XG4gICAgICAgIGRvYzIgPSBhZGRBbGlnbm1lbnRUb0RvYyhbaGFyZGxpbmUsIGRvYzJdLCBhbGlnbm1lbnRTaXplLCBvcHRpb25zLnRhYldpZHRoKTtcbiAgICAgIH1cbiAgICAgIHByb3BhZ2F0ZUJyZWFrcyhkb2MyKTtcbiAgICAgIHJldHVybiBkb2MyO1xuICAgICAgZnVuY3Rpb24gbWFpblByaW50KHNlbGVjdG9yLCBhcmdzKSB7XG4gICAgICAgIGlmIChzZWxlY3RvciA9PT0gdm9pZCAwIHx8IHNlbGVjdG9yID09PSBwYXRoKSB7XG4gICAgICAgICAgcmV0dXJuIG1haW5QcmludEludGVybmFsKGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdG9yKSkge1xuICAgICAgICAgIHJldHVybiBwYXRoLmNhbGwoKCkgPT4gbWFpblByaW50SW50ZXJuYWwoYXJncyksIC4uLnNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF0aC5jYWxsKCgpID0+IG1haW5QcmludEludGVybmFsKGFyZ3MpLCBzZWxlY3Rvcik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBtYWluUHJpbnRJbnRlcm5hbChhcmdzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzaG91bGRDYWNoZSA9IHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBhcmdzID09PSB2b2lkIDA7XG4gICAgICAgIGlmIChzaG91bGRDYWNoZSAmJiBjYWNoZS5oYXModmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlLmdldCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jMyA9IGNhbGxQbHVnaW5QcmludEZ1bmN0aW9uKHBhdGgsIG9wdGlvbnMsIG1haW5QcmludCwgYXJncyk7XG4gICAgICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgICAgIGNhY2hlLnNldCh2YWx1ZSwgZG9jMyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvYzM7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50UHJldHRpZXJJZ25vcmVkTm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG9yaWdpbmFsVGV4dCxcbiAgICAgICAgW1N5bWJvbC5mb3IoXCJjb21tZW50c1wiKV06IGNvbW1lbnRzLFxuICAgICAgICBsb2NTdGFydCxcbiAgICAgICAgbG9jRW5kXG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIGNvbnN0IHN0YXJ0ID0gbG9jU3RhcnQobm9kZSk7XG4gICAgICBjb25zdCBlbmQgPSBsb2NFbmQobm9kZSk7XG4gICAgICBjb25zdCBwcmludGVkQ29tbWVudHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICAgIGlmIChsb2NTdGFydChjb21tZW50KSA+PSBzdGFydCAmJiBsb2NFbmQoY29tbWVudCkgPD0gZW5kKSB7XG4gICAgICAgICAgY29tbWVudC5wcmludGVkID0gdHJ1ZTtcbiAgICAgICAgICBwcmludGVkQ29tbWVudHMuYWRkKGNvbW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkb2M6IG9yaWdpbmFsVGV4dC5zbGljZShzdGFydCwgZW5kKSxcbiAgICAgICAgcHJpbnRlZENvbW1lbnRzXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjYWxsUGx1Z2luUHJpbnRGdW5jdGlvbihwYXRoLCBvcHRpb25zLCBwcmludFBhdGgsIGFyZ3MpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHByaW50ZXJcbiAgICAgIH0gPSBvcHRpb25zO1xuICAgICAgbGV0IGRvYzI7XG4gICAgICBsZXQgcHJpbnRlZENvbW1lbnRzO1xuICAgICAgaWYgKHByaW50ZXIuaGFzUHJldHRpZXJJZ25vcmUgJiYgcHJpbnRlci5oYXNQcmV0dGllcklnbm9yZShwYXRoKSkge1xuICAgICAgICAoe1xuICAgICAgICAgIGRvYzogZG9jMixcbiAgICAgICAgICBwcmludGVkQ29tbWVudHNcbiAgICAgICAgfSA9IHByaW50UHJldHRpZXJJZ25vcmVkTm9kZShub2RlLCBvcHRpb25zKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkb2MyID0gbXVsdGlwYXJzZXIucHJpbnRTdWJ0cmVlKHBhdGgsIHByaW50UGF0aCwgb3B0aW9ucywgcHJpbnRBc3RUb0RvYyk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5QUkVUVElFUl9ERUJVRykge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkb2MyKSB7XG4gICAgICAgICAgZG9jMiA9IHByaW50ZXIucHJpbnQocGF0aCwgb3B0aW9ucywgcHJpbnRQYXRoLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFwcmludGVyLndpbGxQcmludE93bkNvbW1lbnRzIHx8ICFwcmludGVyLndpbGxQcmludE93bkNvbW1lbnRzKHBhdGgsIG9wdGlvbnMpKSB7XG4gICAgICAgIGRvYzIgPSBwcmludENvbW1lbnRzKHBhdGgsIGRvYzIsIG9wdGlvbnMsIHByaW50ZWRDb21tZW50cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZG9jMjtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gcHJpbnRBc3RUb0RvYztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9yYW5nZV91dGlsID0gX19jb21tb25KUzIoe1xuICBcInNyYy9tYWluL3JhbmdlLXV0aWwuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuICAgIHZhciBjb21tZW50cyA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIgaXNKc29uUGFyc2VyID0gKHtcbiAgICAgIHBhcnNlclxuICAgIH0pID0+IHBhcnNlciA9PT0gXCJqc29uXCIgfHwgcGFyc2VyID09PSBcImpzb241XCIgfHwgcGFyc2VyID09PSBcImpzb24tc3RyaW5naWZ5XCI7XG4gICAgZnVuY3Rpb24gZmluZENvbW1vbkFuY2VzdG9yKHN0YXJ0Tm9kZUFuZFBhcmVudHMsIGVuZE5vZGVBbmRQYXJlbnRzKSB7XG4gICAgICBjb25zdCBzdGFydE5vZGVBbmRBbmNlc3RvcnMgPSBbc3RhcnROb2RlQW5kUGFyZW50cy5ub2RlLCAuLi5zdGFydE5vZGVBbmRQYXJlbnRzLnBhcmVudE5vZGVzXTtcbiAgICAgIGNvbnN0IGVuZE5vZGVBbmRBbmNlc3RvcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbZW5kTm9kZUFuZFBhcmVudHMubm9kZSwgLi4uZW5kTm9kZUFuZFBhcmVudHMucGFyZW50Tm9kZXNdKTtcbiAgICAgIHJldHVybiBzdGFydE5vZGVBbmRBbmNlc3RvcnMuZmluZCgobm9kZSkgPT4ganNvblNvdXJjZUVsZW1lbnRzLmhhcyhub2RlLnR5cGUpICYmIGVuZE5vZGVBbmRBbmNlc3RvcnMuaGFzKG5vZGUpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZHJvcFJvb3RQYXJlbnRzKHBhcmVudHMpIHtcbiAgICAgIGxldCBsYXN0UGFyZW50SW5kZXggPSBwYXJlbnRzLmxlbmd0aCAtIDE7XG4gICAgICBmb3IgKDsgOyApIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gcGFyZW50c1tsYXN0UGFyZW50SW5kZXhdO1xuICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQudHlwZSA9PT0gXCJQcm9ncmFtXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiRmlsZVwiKSkge1xuICAgICAgICAgIGxhc3RQYXJlbnRJbmRleC0tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyZW50cy5zbGljZSgwLCBsYXN0UGFyZW50SW5kZXggKyAxKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmluZFNpYmxpbmdBbmNlc3RvcnMoc3RhcnROb2RlQW5kUGFyZW50cywgZW5kTm9kZUFuZFBhcmVudHMsIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSkge1xuICAgICAgbGV0IHJlc3VsdFN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZUFuZFBhcmVudHMubm9kZTtcbiAgICAgIGxldCByZXN1bHRFbmROb2RlID0gZW5kTm9kZUFuZFBhcmVudHMubm9kZTtcbiAgICAgIGlmIChyZXN1bHRTdGFydE5vZGUgPT09IHJlc3VsdEVuZE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdGFydE5vZGU6IHJlc3VsdFN0YXJ0Tm9kZSxcbiAgICAgICAgICBlbmROb2RlOiByZXN1bHRFbmROb2RlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBzdGFydE5vZGVTdGFydCA9IGxvY1N0YXJ0KHN0YXJ0Tm9kZUFuZFBhcmVudHMubm9kZSk7XG4gICAgICBmb3IgKGNvbnN0IGVuZFBhcmVudCBvZiBkcm9wUm9vdFBhcmVudHMoZW5kTm9kZUFuZFBhcmVudHMucGFyZW50Tm9kZXMpKSB7XG4gICAgICAgIGlmIChsb2NTdGFydChlbmRQYXJlbnQpID49IHN0YXJ0Tm9kZVN0YXJ0KSB7XG4gICAgICAgICAgcmVzdWx0RW5kTm9kZSA9IGVuZFBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZW5kTm9kZUVuZCA9IGxvY0VuZChlbmROb2RlQW5kUGFyZW50cy5ub2RlKTtcbiAgICAgIGZvciAoY29uc3Qgc3RhcnRQYXJlbnQgb2YgZHJvcFJvb3RQYXJlbnRzKHN0YXJ0Tm9kZUFuZFBhcmVudHMucGFyZW50Tm9kZXMpKSB7XG4gICAgICAgIGlmIChsb2NFbmQoc3RhcnRQYXJlbnQpIDw9IGVuZE5vZGVFbmQpIHtcbiAgICAgICAgICByZXN1bHRTdGFydE5vZGUgPSBzdGFydFBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnROb2RlOiByZXN1bHRTdGFydE5vZGUsXG4gICAgICAgIGVuZE5vZGU6IHJlc3VsdEVuZE5vZGVcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpbmROb2RlQXRPZmZzZXQobm9kZSwgb2Zmc2V0LCBvcHRpb25zLCBwcmVkaWNhdGUsIHBhcmVudE5vZGVzID0gW10sIHR5cGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbG9jU3RhcnQsXG4gICAgICAgIGxvY0VuZFxuICAgICAgfSA9IG9wdGlvbnM7XG4gICAgICBjb25zdCBzdGFydCA9IGxvY1N0YXJ0KG5vZGUpO1xuICAgICAgY29uc3QgZW5kID0gbG9jRW5kKG5vZGUpO1xuICAgICAgaWYgKG9mZnNldCA+IGVuZCB8fCBvZmZzZXQgPCBzdGFydCB8fCB0eXBlID09PSBcInJhbmdlRW5kXCIgJiYgb2Zmc2V0ID09PSBzdGFydCB8fCB0eXBlID09PSBcInJhbmdlU3RhcnRcIiAmJiBvZmZzZXQgPT09IGVuZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkTm9kZSBvZiBjb21tZW50cy5nZXRTb3J0ZWRDaGlsZE5vZGVzKG5vZGUsIG9wdGlvbnMpKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkUmVzdWx0ID0gZmluZE5vZGVBdE9mZnNldChjaGlsZE5vZGUsIG9mZnNldCwgb3B0aW9ucywgcHJlZGljYXRlLCBbbm9kZSwgLi4ucGFyZW50Tm9kZXNdLCB0eXBlKTtcbiAgICAgICAgaWYgKGNoaWxkUmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkUmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXByZWRpY2F0ZSB8fCBwcmVkaWNhdGUobm9kZSwgcGFyZW50Tm9kZXNbMF0pKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBwYXJlbnROb2Rlc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpc0pzU291cmNlRWxlbWVudCh0eXBlLCBwYXJlbnRUeXBlKSB7XG4gICAgICByZXR1cm4gcGFyZW50VHlwZSAhPT0gXCJEZWNsYXJlRXhwb3J0RGVjbGFyYXRpb25cIiAmJiB0eXBlICE9PSBcIlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvblwiICYmICh0eXBlID09PSBcIkRpcmVjdGl2ZVwiIHx8IHR5cGUgPT09IFwiVHlwZUFsaWFzXCIgfHwgdHlwZSA9PT0gXCJUU0V4cG9ydEFzc2lnbm1lbnRcIiB8fCB0eXBlLnN0YXJ0c1dpdGgoXCJEZWNsYXJlXCIpIHx8IHR5cGUuc3RhcnRzV2l0aChcIlRTRGVjbGFyZVwiKSB8fCB0eXBlLmVuZHNXaXRoKFwiU3RhdGVtZW50XCIpIHx8IHR5cGUuZW5kc1dpdGgoXCJEZWNsYXJhdGlvblwiKSk7XG4gICAgfVxuICAgIHZhciBqc29uU291cmNlRWxlbWVudHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJPYmplY3RFeHByZXNzaW9uXCIsIFwiQXJyYXlFeHByZXNzaW9uXCIsIFwiU3RyaW5nTGl0ZXJhbFwiLCBcIk51bWVyaWNMaXRlcmFsXCIsIFwiQm9vbGVhbkxpdGVyYWxcIiwgXCJOdWxsTGl0ZXJhbFwiLCBcIlVuYXJ5RXhwcmVzc2lvblwiLCBcIlRlbXBsYXRlTGl0ZXJhbFwiXSk7XG4gICAgdmFyIGdyYXBocWxTb3VyY2VFbGVtZW50cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcIk9wZXJhdGlvbkRlZmluaXRpb25cIiwgXCJGcmFnbWVudERlZmluaXRpb25cIiwgXCJWYXJpYWJsZURlZmluaXRpb25cIiwgXCJUeXBlRXh0ZW5zaW9uRGVmaW5pdGlvblwiLCBcIk9iamVjdFR5cGVEZWZpbml0aW9uXCIsIFwiRmllbGREZWZpbml0aW9uXCIsIFwiRGlyZWN0aXZlRGVmaW5pdGlvblwiLCBcIkVudW1UeXBlRGVmaW5pdGlvblwiLCBcIkVudW1WYWx1ZURlZmluaXRpb25cIiwgXCJJbnB1dFZhbHVlRGVmaW5pdGlvblwiLCBcIklucHV0T2JqZWN0VHlwZURlZmluaXRpb25cIiwgXCJTY2hlbWFEZWZpbml0aW9uXCIsIFwiT3BlcmF0aW9uVHlwZURlZmluaXRpb25cIiwgXCJJbnRlcmZhY2VUeXBlRGVmaW5pdGlvblwiLCBcIlVuaW9uVHlwZURlZmluaXRpb25cIiwgXCJTY2FsYXJUeXBlRGVmaW5pdGlvblwiXSk7XG4gICAgZnVuY3Rpb24gaXNTb3VyY2VFbGVtZW50KG9wdHMsIG5vZGUsIHBhcmVudE5vZGUpIHtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG9wdHMucGFyc2VyKSB7XG4gICAgICAgIGNhc2UgXCJmbG93XCI6XG4gICAgICAgIGNhc2UgXCJiYWJlbFwiOlxuICAgICAgICBjYXNlIFwiYmFiZWwtZmxvd1wiOlxuICAgICAgICBjYXNlIFwiYmFiZWwtdHNcIjpcbiAgICAgICAgY2FzZSBcInR5cGVzY3JpcHRcIjpcbiAgICAgICAgY2FzZSBcImFjb3JuXCI6XG4gICAgICAgIGNhc2UgXCJlc3ByZWVcIjpcbiAgICAgICAgY2FzZSBcIm1lcml5YWhcIjpcbiAgICAgICAgY2FzZSBcIl9fYmFiZWxfZXN0cmVlXCI6XG4gICAgICAgICAgcmV0dXJuIGlzSnNTb3VyY2VFbGVtZW50KG5vZGUudHlwZSwgcGFyZW50Tm9kZSAmJiBwYXJlbnROb2RlLnR5cGUpO1xuICAgICAgICBjYXNlIFwianNvblwiOlxuICAgICAgICBjYXNlIFwianNvbjVcIjpcbiAgICAgICAgY2FzZSBcImpzb24tc3RyaW5naWZ5XCI6XG4gICAgICAgICAgcmV0dXJuIGpzb25Tb3VyY2VFbGVtZW50cy5oYXMobm9kZS50eXBlKTtcbiAgICAgICAgY2FzZSBcImdyYXBocWxcIjpcbiAgICAgICAgICByZXR1cm4gZ3JhcGhxbFNvdXJjZUVsZW1lbnRzLmhhcyhub2RlLmtpbmQpO1xuICAgICAgICBjYXNlIFwidnVlXCI6XG4gICAgICAgICAgcmV0dXJuIG5vZGUudGFnICE9PSBcInJvb3RcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlUmFuZ2UodGV4dCwgb3B0cywgYXN0KSB7XG4gICAgICBsZXQge1xuICAgICAgICByYW5nZVN0YXJ0OiBzdGFydCxcbiAgICAgICAgcmFuZ2VFbmQ6IGVuZCxcbiAgICAgICAgbG9jU3RhcnQsXG4gICAgICAgIGxvY0VuZFxuICAgICAgfSA9IG9wdHM7XG4gICAgICBhc3NlcnQub2soZW5kID4gc3RhcnQpO1xuICAgICAgY29uc3QgZmlyc3ROb25XaGl0ZXNwYWNlQ2hhcmFjdGVySW5kZXggPSB0ZXh0LnNsaWNlKHN0YXJ0LCBlbmQpLnNlYXJjaCgvXFxTLyk7XG4gICAgICBjb25zdCBpc0FsbFdoaXRlc3BhY2UgPSBmaXJzdE5vbldoaXRlc3BhY2VDaGFyYWN0ZXJJbmRleCA9PT0gLTE7XG4gICAgICBpZiAoIWlzQWxsV2hpdGVzcGFjZSkge1xuICAgICAgICBzdGFydCArPSBmaXJzdE5vbldoaXRlc3BhY2VDaGFyYWN0ZXJJbmRleDtcbiAgICAgICAgZm9yICg7IGVuZCA+IHN0YXJ0OyAtLWVuZCkge1xuICAgICAgICAgIGlmICgvXFxTLy50ZXN0KHRleHRbZW5kIC0gMV0pKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXJ0Tm9kZUFuZFBhcmVudHMgPSBmaW5kTm9kZUF0T2Zmc2V0KGFzdCwgc3RhcnQsIG9wdHMsIChub2RlLCBwYXJlbnROb2RlKSA9PiBpc1NvdXJjZUVsZW1lbnQob3B0cywgbm9kZSwgcGFyZW50Tm9kZSksIFtdLCBcInJhbmdlU3RhcnRcIik7XG4gICAgICBjb25zdCBlbmROb2RlQW5kUGFyZW50cyA9IGlzQWxsV2hpdGVzcGFjZSA/IHN0YXJ0Tm9kZUFuZFBhcmVudHMgOiBmaW5kTm9kZUF0T2Zmc2V0KGFzdCwgZW5kLCBvcHRzLCAobm9kZSkgPT4gaXNTb3VyY2VFbGVtZW50KG9wdHMsIG5vZGUpLCBbXSwgXCJyYW5nZUVuZFwiKTtcbiAgICAgIGlmICghc3RhcnROb2RlQW5kUGFyZW50cyB8fCAhZW5kTm9kZUFuZFBhcmVudHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByYW5nZVN0YXJ0OiAwLFxuICAgICAgICAgIHJhbmdlRW5kOiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBsZXQgc3RhcnROb2RlO1xuICAgICAgbGV0IGVuZE5vZGU7XG4gICAgICBpZiAoaXNKc29uUGFyc2VyKG9wdHMpKSB7XG4gICAgICAgIGNvbnN0IGNvbW1vbkFuY2VzdG9yID0gZmluZENvbW1vbkFuY2VzdG9yKHN0YXJ0Tm9kZUFuZFBhcmVudHMsIGVuZE5vZGVBbmRQYXJlbnRzKTtcbiAgICAgICAgc3RhcnROb2RlID0gY29tbW9uQW5jZXN0b3I7XG4gICAgICAgIGVuZE5vZGUgPSBjb21tb25BbmNlc3RvcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICh7XG4gICAgICAgICAgc3RhcnROb2RlLFxuICAgICAgICAgIGVuZE5vZGVcbiAgICAgICAgfSA9IGZpbmRTaWJsaW5nQW5jZXN0b3JzKHN0YXJ0Tm9kZUFuZFBhcmVudHMsIGVuZE5vZGVBbmRQYXJlbnRzLCBvcHRzKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICByYW5nZVN0YXJ0OiBNYXRoLm1pbihsb2NTdGFydChzdGFydE5vZGUpLCBsb2NTdGFydChlbmROb2RlKSksXG4gICAgICAgIHJhbmdlRW5kOiBNYXRoLm1heChsb2NFbmQoc3RhcnROb2RlKSwgbG9jRW5kKGVuZE5vZGUpKVxuICAgICAgfTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgY2FsY3VsYXRlUmFuZ2UsXG4gICAgICBmaW5kTm9kZUF0T2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb3JlID0gX19jb21tb25KUzIoe1xuICBcInNyYy9tYWluL2NvcmUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBkaWZmQXJyYXlzXG4gICAgfSA9IHJlcXVpcmVfYXJyYXkoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRlcjoge1xuICAgICAgICBwcmludERvY1RvU3RyaW5nXG4gICAgICB9LFxuICAgICAgZGVidWc6IHtcbiAgICAgICAgcHJpbnREb2NUb0RlYnVnXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgZ2V0QWxpZ25tZW50U2l6ZVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgZ3Vlc3NFbmRPZkxpbmUsXG4gICAgICBjb252ZXJ0RW5kT2ZMaW5lVG9DaGFycyxcbiAgICAgIGNvdW50RW5kT2ZMaW5lQ2hhcnMsXG4gICAgICBub3JtYWxpemVFbmRPZkxpbmVcbiAgICB9ID0gcmVxdWlyZV9lbmRfb2ZfbGluZSgpO1xuICAgIHZhciBub3JtYWxpemVPcHRpb25zID0gcmVxdWlyZV9vcHRpb25zKCkubm9ybWFsaXplO1xuICAgIHZhciBtYXNzYWdlQVNUID0gcmVxdWlyZV9tYXNzYWdlX2FzdCgpO1xuICAgIHZhciBjb21tZW50cyA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIgcGFyc2VyID0gcmVxdWlyZV9wYXJzZXIoKTtcbiAgICB2YXIgcHJpbnRBc3RUb0RvYyA9IHJlcXVpcmVfYXN0X3RvX2RvYygpO1xuICAgIHZhciByYW5nZVV0aWwgPSByZXF1aXJlX3JhbmdlX3V0aWwoKTtcbiAgICB2YXIgQk9NID0gXCJcXHVGRUZGXCI7XG4gICAgdmFyIENVUlNPUiA9IFN5bWJvbChcImN1cnNvclwiKTtcbiAgICBmdW5jdGlvbiBhdHRhY2hDb21tZW50cyh0ZXh0LCBhc3QsIG9wdHMpIHtcbiAgICAgIGNvbnN0IGFzdENvbW1lbnRzID0gYXN0LmNvbW1lbnRzO1xuICAgICAgaWYgKGFzdENvbW1lbnRzKSB7XG4gICAgICAgIGRlbGV0ZSBhc3QuY29tbWVudHM7XG4gICAgICAgIGNvbW1lbnRzLmF0dGFjaChhc3RDb21tZW50cywgYXN0LCB0ZXh0LCBvcHRzKTtcbiAgICAgIH1cbiAgICAgIG9wdHNbU3ltYm9sLmZvcihcImNvbW1lbnRzXCIpXSA9IGFzdENvbW1lbnRzIHx8IFtdO1xuICAgICAgb3B0c1tTeW1ib2wuZm9yKFwidG9rZW5zXCIpXSA9IGFzdC50b2tlbnMgfHwgW107XG4gICAgICBvcHRzLm9yaWdpbmFsVGV4dCA9IHRleHQ7XG4gICAgICByZXR1cm4gYXN0Q29tbWVudHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvcmVGb3JtYXQob3JpZ2luYWxUZXh0LCBvcHRzLCBhZGRBbGlnbm1lbnRTaXplID0gMCkge1xuICAgICAgaWYgKCFvcmlnaW5hbFRleHQgfHwgb3JpZ2luYWxUZXh0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmb3JtYXR0ZWQ6IFwiXCIsXG4gICAgICAgICAgY3Vyc29yT2Zmc2V0OiAtMSxcbiAgICAgICAgICBjb21tZW50czogW11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXN0LFxuICAgICAgICB0ZXh0XG4gICAgICB9ID0gcGFyc2VyLnBhcnNlKG9yaWdpbmFsVGV4dCwgb3B0cyk7XG4gICAgICBpZiAob3B0cy5jdXJzb3JPZmZzZXQgPj0gMCkge1xuICAgICAgICBjb25zdCBub2RlUmVzdWx0ID0gcmFuZ2VVdGlsLmZpbmROb2RlQXRPZmZzZXQoYXN0LCBvcHRzLmN1cnNvck9mZnNldCwgb3B0cyk7XG4gICAgICAgIGlmIChub2RlUmVzdWx0ICYmIG5vZGVSZXN1bHQubm9kZSkge1xuICAgICAgICAgIG9wdHMuY3Vyc29yTm9kZSA9IG5vZGVSZXN1bHQubm9kZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgYXN0Q29tbWVudHMgPSBhdHRhY2hDb21tZW50cyh0ZXh0LCBhc3QsIG9wdHMpO1xuICAgICAgY29uc3QgZG9jMiA9IHByaW50QXN0VG9Eb2MoYXN0LCBvcHRzLCBhZGRBbGlnbm1lbnRTaXplKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHByaW50RG9jVG9TdHJpbmcoZG9jMiwgb3B0cyk7XG4gICAgICBjb21tZW50cy5lbnN1cmVBbGxDb21tZW50c1ByaW50ZWQoYXN0Q29tbWVudHMpO1xuICAgICAgaWYgKGFkZEFsaWdubWVudFNpemUgPiAwKSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWQgPSByZXN1bHQuZm9ybWF0dGVkLnRyaW0oKTtcbiAgICAgICAgaWYgKHJlc3VsdC5jdXJzb3JOb2RlU3RhcnQgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHJlc3VsdC5jdXJzb3JOb2RlU3RhcnQgLT0gcmVzdWx0LmZvcm1hdHRlZC5pbmRleE9mKHRyaW1tZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5mb3JtYXR0ZWQgPSB0cmltbWVkICsgY29udmVydEVuZE9mTGluZVRvQ2hhcnMob3B0cy5lbmRPZkxpbmUpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdHMuY3Vyc29yT2Zmc2V0ID49IDApIHtcbiAgICAgICAgbGV0IG9sZEN1cnNvck5vZGVTdGFydDtcbiAgICAgICAgbGV0IG9sZEN1cnNvck5vZGVUZXh0O1xuICAgICAgICBsZXQgY3Vyc29yT2Zmc2V0UmVsYXRpdmVUb09sZEN1cnNvck5vZGU7XG4gICAgICAgIGxldCBuZXdDdXJzb3JOb2RlU3RhcnQ7XG4gICAgICAgIGxldCBuZXdDdXJzb3JOb2RlVGV4dDtcbiAgICAgICAgaWYgKG9wdHMuY3Vyc29yTm9kZSAmJiByZXN1bHQuY3Vyc29yTm9kZVRleHQpIHtcbiAgICAgICAgICBvbGRDdXJzb3JOb2RlU3RhcnQgPSBvcHRzLmxvY1N0YXJ0KG9wdHMuY3Vyc29yTm9kZSk7XG4gICAgICAgICAgb2xkQ3Vyc29yTm9kZVRleHQgPSB0ZXh0LnNsaWNlKG9sZEN1cnNvck5vZGVTdGFydCwgb3B0cy5sb2NFbmQob3B0cy5jdXJzb3JOb2RlKSk7XG4gICAgICAgICAgY3Vyc29yT2Zmc2V0UmVsYXRpdmVUb09sZEN1cnNvck5vZGUgPSBvcHRzLmN1cnNvck9mZnNldCAtIG9sZEN1cnNvck5vZGVTdGFydDtcbiAgICAgICAgICBuZXdDdXJzb3JOb2RlU3RhcnQgPSByZXN1bHQuY3Vyc29yTm9kZVN0YXJ0O1xuICAgICAgICAgIG5ld0N1cnNvck5vZGVUZXh0ID0gcmVzdWx0LmN1cnNvck5vZGVUZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9sZEN1cnNvck5vZGVTdGFydCA9IDA7XG4gICAgICAgICAgb2xkQ3Vyc29yTm9kZVRleHQgPSB0ZXh0O1xuICAgICAgICAgIGN1cnNvck9mZnNldFJlbGF0aXZlVG9PbGRDdXJzb3JOb2RlID0gb3B0cy5jdXJzb3JPZmZzZXQ7XG4gICAgICAgICAgbmV3Q3Vyc29yTm9kZVN0YXJ0ID0gMDtcbiAgICAgICAgICBuZXdDdXJzb3JOb2RlVGV4dCA9IHJlc3VsdC5mb3JtYXR0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9sZEN1cnNvck5vZGVUZXh0ID09PSBuZXdDdXJzb3JOb2RlVGV4dCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXR0ZWQ6IHJlc3VsdC5mb3JtYXR0ZWQsXG4gICAgICAgICAgICBjdXJzb3JPZmZzZXQ6IG5ld0N1cnNvck5vZGVTdGFydCArIGN1cnNvck9mZnNldFJlbGF0aXZlVG9PbGRDdXJzb3JOb2RlLFxuICAgICAgICAgICAgY29tbWVudHM6IGFzdENvbW1lbnRzXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvbGRDdXJzb3JOb2RlQ2hhckFycmF5ID0gWy4uLm9sZEN1cnNvck5vZGVUZXh0XTtcbiAgICAgICAgb2xkQ3Vyc29yTm9kZUNoYXJBcnJheS5zcGxpY2UoY3Vyc29yT2Zmc2V0UmVsYXRpdmVUb09sZEN1cnNvck5vZGUsIDAsIENVUlNPUik7XG4gICAgICAgIGNvbnN0IG5ld0N1cnNvck5vZGVDaGFyQXJyYXkgPSBbLi4ubmV3Q3Vyc29yTm9kZVRleHRdO1xuICAgICAgICBjb25zdCBjdXJzb3JOb2RlRGlmZiA9IGRpZmZBcnJheXMob2xkQ3Vyc29yTm9kZUNoYXJBcnJheSwgbmV3Q3Vyc29yTm9kZUNoYXJBcnJheSk7XG4gICAgICAgIGxldCBjdXJzb3JPZmZzZXQgPSBuZXdDdXJzb3JOb2RlU3RhcnQ7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgY3Vyc29yTm9kZURpZmYpIHtcbiAgICAgICAgICBpZiAoZW50cnkucmVtb3ZlZCkge1xuICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmluY2x1ZGVzKENVUlNPUikpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnNvck9mZnNldCArPSBlbnRyeS5jb3VudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmb3JtYXR0ZWQ6IHJlc3VsdC5mb3JtYXR0ZWQsXG4gICAgICAgICAgY3Vyc29yT2Zmc2V0LFxuICAgICAgICAgIGNvbW1lbnRzOiBhc3RDb21tZW50c1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9ybWF0dGVkOiByZXN1bHQuZm9ybWF0dGVkLFxuICAgICAgICBjdXJzb3JPZmZzZXQ6IC0xLFxuICAgICAgICBjb21tZW50czogYXN0Q29tbWVudHNcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcm1hdFJhbmdlKG9yaWdpbmFsVGV4dCwgb3B0cykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhc3QsXG4gICAgICAgIHRleHRcbiAgICAgIH0gPSBwYXJzZXIucGFyc2Uob3JpZ2luYWxUZXh0LCBvcHRzKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmFuZ2VTdGFydCxcbiAgICAgICAgcmFuZ2VFbmRcbiAgICAgIH0gPSByYW5nZVV0aWwuY2FsY3VsYXRlUmFuZ2UodGV4dCwgb3B0cywgYXN0KTtcbiAgICAgIGNvbnN0IHJhbmdlU3RyaW5nID0gdGV4dC5zbGljZShyYW5nZVN0YXJ0LCByYW5nZUVuZCk7XG4gICAgICBjb25zdCByYW5nZVN0YXJ0MiA9IE1hdGgubWluKHJhbmdlU3RhcnQsIHRleHQubGFzdEluZGV4T2YoXCJcXG5cIiwgcmFuZ2VTdGFydCkgKyAxKTtcbiAgICAgIGNvbnN0IGluZGVudFN0cmluZyA9IHRleHQuc2xpY2UocmFuZ2VTdGFydDIsIHJhbmdlU3RhcnQpLm1hdGNoKC9eXFxzKi8pWzBdO1xuICAgICAgY29uc3QgYWxpZ25tZW50U2l6ZSA9IGdldEFsaWdubWVudFNpemUoaW5kZW50U3RyaW5nLCBvcHRzLnRhYldpZHRoKTtcbiAgICAgIGNvbnN0IHJhbmdlUmVzdWx0ID0gY29yZUZvcm1hdChyYW5nZVN0cmluZywgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRzKSwge30sIHtcbiAgICAgICAgcmFuZ2VTdGFydDogMCxcbiAgICAgICAgcmFuZ2VFbmQ6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgY3Vyc29yT2Zmc2V0OiBvcHRzLmN1cnNvck9mZnNldCA+IHJhbmdlU3RhcnQgJiYgb3B0cy5jdXJzb3JPZmZzZXQgPD0gcmFuZ2VFbmQgPyBvcHRzLmN1cnNvck9mZnNldCAtIHJhbmdlU3RhcnQgOiAtMSxcbiAgICAgICAgZW5kT2ZMaW5lOiBcImxmXCJcbiAgICAgIH0pLCBhbGlnbm1lbnRTaXplKTtcbiAgICAgIGNvbnN0IHJhbmdlVHJpbW1lZCA9IHJhbmdlUmVzdWx0LmZvcm1hdHRlZC50cmltRW5kKCk7XG4gICAgICBsZXQge1xuICAgICAgICBjdXJzb3JPZmZzZXRcbiAgICAgIH0gPSBvcHRzO1xuICAgICAgaWYgKGN1cnNvck9mZnNldCA+IHJhbmdlRW5kKSB7XG4gICAgICAgIGN1cnNvck9mZnNldCArPSByYW5nZVRyaW1tZWQubGVuZ3RoIC0gcmFuZ2VTdHJpbmcubGVuZ3RoO1xuICAgICAgfSBlbHNlIGlmIChyYW5nZVJlc3VsdC5jdXJzb3JPZmZzZXQgPj0gMCkge1xuICAgICAgICBjdXJzb3JPZmZzZXQgPSByYW5nZVJlc3VsdC5jdXJzb3JPZmZzZXQgKyByYW5nZVN0YXJ0O1xuICAgICAgfVxuICAgICAgbGV0IGZvcm1hdHRlZCA9IHRleHQuc2xpY2UoMCwgcmFuZ2VTdGFydCkgKyByYW5nZVRyaW1tZWQgKyB0ZXh0LnNsaWNlKHJhbmdlRW5kKTtcbiAgICAgIGlmIChvcHRzLmVuZE9mTGluZSAhPT0gXCJsZlwiKSB7XG4gICAgICAgIGNvbnN0IGVvbCA9IGNvbnZlcnRFbmRPZkxpbmVUb0NoYXJzKG9wdHMuZW5kT2ZMaW5lKTtcbiAgICAgICAgaWYgKGN1cnNvck9mZnNldCA+PSAwICYmIGVvbCA9PT0gXCJcXHJcXG5cIikge1xuICAgICAgICAgIGN1cnNvck9mZnNldCArPSBjb3VudEVuZE9mTGluZUNoYXJzKGZvcm1hdHRlZC5zbGljZSgwLCBjdXJzb3JPZmZzZXQpLCBcIlxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JtYXR0ZWQgPSBmb3JtYXR0ZWQucmVwbGFjZSgvXFxuL2csIGVvbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb3JtYXR0ZWQsXG4gICAgICAgIGN1cnNvck9mZnNldCxcbiAgICAgICAgY29tbWVudHM6IHJhbmdlUmVzdWx0LmNvbW1lbnRzXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbnN1cmVJbmRleEluVGV4dCh0ZXh0LCBpbmRleCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIGluZGV4ICE9PSBcIm51bWJlclwiIHx8IE51bWJlci5pc05hTihpbmRleCkgfHwgaW5kZXggPCAwIHx8IGluZGV4ID4gdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbm9ybWFsaXplSW5kZXhlcyh0ZXh0LCBvcHRpb25zKSB7XG4gICAgICBsZXQge1xuICAgICAgICBjdXJzb3JPZmZzZXQsXG4gICAgICAgIHJhbmdlU3RhcnQsXG4gICAgICAgIHJhbmdlRW5kXG4gICAgICB9ID0gb3B0aW9ucztcbiAgICAgIGN1cnNvck9mZnNldCA9IGVuc3VyZUluZGV4SW5UZXh0KHRleHQsIGN1cnNvck9mZnNldCwgLTEpO1xuICAgICAgcmFuZ2VTdGFydCA9IGVuc3VyZUluZGV4SW5UZXh0KHRleHQsIHJhbmdlU3RhcnQsIDApO1xuICAgICAgcmFuZ2VFbmQgPSBlbnN1cmVJbmRleEluVGV4dCh0ZXh0LCByYW5nZUVuZCwgdGV4dC5sZW5ndGgpO1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgIGN1cnNvck9mZnNldCxcbiAgICAgICAgcmFuZ2VTdGFydCxcbiAgICAgICAgcmFuZ2VFbmRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBub3JtYWxpemVJbnB1dEFuZE9wdGlvbnModGV4dCwgb3B0aW9ucykge1xuICAgICAgbGV0IHtcbiAgICAgICAgY3Vyc29yT2Zmc2V0LFxuICAgICAgICByYW5nZVN0YXJ0LFxuICAgICAgICByYW5nZUVuZCxcbiAgICAgICAgZW5kT2ZMaW5lXG4gICAgICB9ID0gbm9ybWFsaXplSW5kZXhlcyh0ZXh0LCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IGhhc0JPTSA9IHRleHQuY2hhckF0KDApID09PSBCT007XG4gICAgICBpZiAoaGFzQk9NKSB7XG4gICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDEpO1xuICAgICAgICBjdXJzb3JPZmZzZXQtLTtcbiAgICAgICAgcmFuZ2VTdGFydC0tO1xuICAgICAgICByYW5nZUVuZC0tO1xuICAgICAgfVxuICAgICAgaWYgKGVuZE9mTGluZSA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgZW5kT2ZMaW5lID0gZ3Vlc3NFbmRPZkxpbmUodGV4dCk7XG4gICAgICB9XG4gICAgICBpZiAodGV4dC5pbmNsdWRlcyhcIlxcclwiKSkge1xuICAgICAgICBjb25zdCBjb3VudENybGZCZWZvcmUgPSAoaW5kZXgpID0+IGNvdW50RW5kT2ZMaW5lQ2hhcnModGV4dC5zbGljZSgwLCBNYXRoLm1heChpbmRleCwgMCkpLCBcIlxcclxcblwiKTtcbiAgICAgICAgY3Vyc29yT2Zmc2V0IC09IGNvdW50Q3JsZkJlZm9yZShjdXJzb3JPZmZzZXQpO1xuICAgICAgICByYW5nZVN0YXJ0IC09IGNvdW50Q3JsZkJlZm9yZShyYW5nZVN0YXJ0KTtcbiAgICAgICAgcmFuZ2VFbmQgLT0gY291bnRDcmxmQmVmb3JlKHJhbmdlRW5kKTtcbiAgICAgICAgdGV4dCA9IG5vcm1hbGl6ZUVuZE9mTGluZSh0ZXh0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhc0JPTSxcbiAgICAgICAgdGV4dCxcbiAgICAgICAgb3B0aW9uczogbm9ybWFsaXplSW5kZXhlcyh0ZXh0LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICAgIGN1cnNvck9mZnNldCxcbiAgICAgICAgICByYW5nZVN0YXJ0LFxuICAgICAgICAgIHJhbmdlRW5kLFxuICAgICAgICAgIGVuZE9mTGluZVxuICAgICAgICB9KSlcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1ByYWdtYSh0ZXh0LCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFBhcnNlciA9IHBhcnNlci5yZXNvbHZlUGFyc2VyKG9wdGlvbnMpO1xuICAgICAgcmV0dXJuICFzZWxlY3RlZFBhcnNlci5oYXNQcmFnbWEgfHwgc2VsZWN0ZWRQYXJzZXIuaGFzUHJhZ21hKHRleHQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmb3JtYXRXaXRoQ3Vyc29yMihvcmlnaW5hbFRleHQsIG9yaWdpbmFsT3B0aW9ucykge1xuICAgICAgbGV0IHtcbiAgICAgICAgaGFzQk9NLFxuICAgICAgICB0ZXh0LFxuICAgICAgICBvcHRpb25zXG4gICAgICB9ID0gbm9ybWFsaXplSW5wdXRBbmRPcHRpb25zKG9yaWdpbmFsVGV4dCwgbm9ybWFsaXplT3B0aW9ucyhvcmlnaW5hbE9wdGlvbnMpKTtcbiAgICAgIGlmIChvcHRpb25zLnJhbmdlU3RhcnQgPj0gb3B0aW9ucy5yYW5nZUVuZCAmJiB0ZXh0ICE9PSBcIlwiIHx8IG9wdGlvbnMucmVxdWlyZVByYWdtYSAmJiAhaGFzUHJhZ21hKHRleHQsIG9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZm9ybWF0dGVkOiBvcmlnaW5hbFRleHQsXG4gICAgICAgICAgY3Vyc29yT2Zmc2V0OiBvcmlnaW5hbE9wdGlvbnMuY3Vyc29yT2Zmc2V0LFxuICAgICAgICAgIGNvbW1lbnRzOiBbXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgbGV0IHJlc3VsdDtcbiAgICAgIGlmIChvcHRpb25zLnJhbmdlU3RhcnQgPiAwIHx8IG9wdGlvbnMucmFuZ2VFbmQgPCB0ZXh0Lmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgPSBmb3JtYXRSYW5nZSh0ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghb3B0aW9ucy5yZXF1aXJlUHJhZ21hICYmIG9wdGlvbnMuaW5zZXJ0UHJhZ21hICYmIG9wdGlvbnMucHJpbnRlci5pbnNlcnRQcmFnbWEgJiYgIWhhc1ByYWdtYSh0ZXh0LCBvcHRpb25zKSkge1xuICAgICAgICAgIHRleHQgPSBvcHRpb25zLnByaW50ZXIuaW5zZXJ0UHJhZ21hKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGNvcmVGb3JtYXQodGV4dCwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBpZiAoaGFzQk9NKSB7XG4gICAgICAgIHJlc3VsdC5mb3JtYXR0ZWQgPSBCT00gKyByZXN1bHQuZm9ybWF0dGVkO1xuICAgICAgICBpZiAocmVzdWx0LmN1cnNvck9mZnNldCA+PSAwKSB7XG4gICAgICAgICAgcmVzdWx0LmN1cnNvck9mZnNldCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBmb3JtYXRXaXRoQ3Vyc29yOiBmb3JtYXRXaXRoQ3Vyc29yMixcbiAgICAgIHBhcnNlKG9yaWdpbmFsVGV4dCwgb3JpZ2luYWxPcHRpb25zLCBtYXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgfSA9IG5vcm1hbGl6ZUlucHV0QW5kT3B0aW9ucyhvcmlnaW5hbFRleHQsIG5vcm1hbGl6ZU9wdGlvbnMob3JpZ2luYWxPcHRpb25zKSk7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlci5wYXJzZSh0ZXh0LCBvcHRpb25zKTtcbiAgICAgICAgaWYgKG1hc3NhZ2UpIHtcbiAgICAgICAgICBwYXJzZWQuYXN0ID0gbWFzc2FnZUFTVChwYXJzZWQuYXN0LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgfSxcbiAgICAgIGZvcm1hdEFTVChhc3QsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGRvYzIgPSBwcmludEFzdFRvRG9jKGFzdCwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBwcmludERvY1RvU3RyaW5nKGRvYzIsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIGZvcm1hdERvYyhkb2MyLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRXaXRoQ3Vyc29yMihwcmludERvY1RvRGVidWcoZG9jMiksIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgICAgcGFyc2VyOiBcIl9fanNfZXhwcmVzc2lvblwiXG4gICAgICAgIH0pKS5mb3JtYXR0ZWQ7XG4gICAgICB9LFxuICAgICAgcHJpbnRUb0RvYyhvcmlnaW5hbFRleHQsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBhc3QsXG4gICAgICAgICAgdGV4dFxuICAgICAgICB9ID0gcGFyc2VyLnBhcnNlKG9yaWdpbmFsVGV4dCwgb3B0aW9ucyk7XG4gICAgICAgIGF0dGFjaENvbW1lbnRzKHRleHQsIGFzdCwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBwcmludEFzdFRvRG9jKGFzdCwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgcHJpbnREb2NUb1N0cmluZyhkb2MyLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBwcmludERvY1RvU3RyaW5nKGRvYzIsIG5vcm1hbGl6ZU9wdGlvbnMob3B0aW9ucykpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdXRpbHMyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9icmFjZXMvbGliL3V0aWxzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBleHBvcnRzMi5pc0ludGVnZXIgPSAobnVtKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG51bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihudW0pO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBudW0gPT09IFwic3RyaW5nXCIgJiYgbnVtLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIobnVtKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBleHBvcnRzMi5maW5kID0gKG5vZGUsIHR5cGUpID0+IG5vZGUubm9kZXMuZmluZCgobm9kZTIpID0+IG5vZGUyLnR5cGUgPT09IHR5cGUpO1xuICAgIGV4cG9ydHMyLmV4Y2VlZHNMaW1pdCA9IChtaW4sIG1heCwgc3RlcCA9IDEsIGxpbWl0KSA9PiB7XG4gICAgICBpZiAobGltaXQgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIWV4cG9ydHMyLmlzSW50ZWdlcihtaW4pIHx8ICFleHBvcnRzMi5pc0ludGVnZXIobWF4KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIChOdW1iZXIobWF4KSAtIE51bWJlcihtaW4pKSAvIE51bWJlcihzdGVwKSA+PSBsaW1pdDtcbiAgICB9O1xuICAgIGV4cG9ydHMyLmVzY2FwZU5vZGUgPSAoYmxvY2ssIG4gPSAwLCB0eXBlKSA9PiB7XG4gICAgICBsZXQgbm9kZSA9IGJsb2NrLm5vZGVzW25dO1xuICAgICAgaWYgKCFub2RlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAodHlwZSAmJiBub2RlLnR5cGUgPT09IHR5cGUgfHwgbm9kZS50eXBlID09PSBcIm9wZW5cIiB8fCBub2RlLnR5cGUgPT09IFwiY2xvc2VcIikge1xuICAgICAgICBpZiAobm9kZS5lc2NhcGVkICE9PSB0cnVlKSB7XG4gICAgICAgICAgbm9kZS52YWx1ZSA9IFwiXFxcXFwiICsgbm9kZS52YWx1ZTtcbiAgICAgICAgICBub2RlLmVzY2FwZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5lbmNsb3NlQnJhY2UgPSAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gXCJicmFjZVwiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAobm9kZS5jb21tYXMgPj4gMCArIG5vZGUucmFuZ2VzID4+IDAgPT09IDApIHtcbiAgICAgICAgbm9kZS5pbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBleHBvcnRzMi5pc0ludmFsaWRCcmFjZSA9IChibG9jaykgPT4ge1xuICAgICAgaWYgKGJsb2NrLnR5cGUgIT09IFwiYnJhY2VcIilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKGJsb2NrLmludmFsaWQgPT09IHRydWUgfHwgYmxvY2suZG9sbGFyKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChibG9jay5jb21tYXMgPj4gMCArIGJsb2NrLnJhbmdlcyA+PiAwID09PSAwKSB7XG4gICAgICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChibG9jay5vcGVuICE9PSB0cnVlIHx8IGJsb2NrLmNsb3NlICE9PSB0cnVlKSB7XG4gICAgICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIGV4cG9ydHMyLmlzT3Blbk9yQ2xvc2UgPSAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJvcGVuXCIgfHwgbm9kZS50eXBlID09PSBcImNsb3NlXCIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZS5vcGVuID09PSB0cnVlIHx8IG5vZGUuY2xvc2UgPT09IHRydWU7XG4gICAgfTtcbiAgICBleHBvcnRzMi5yZWR1Y2UgPSAobm9kZXMpID0+IG5vZGVzLnJlZHVjZSgoYWNjLCBub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcInRleHRcIilcbiAgICAgICAgYWNjLnB1c2gobm9kZS52YWx1ZSk7XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcInJhbmdlXCIpXG4gICAgICAgIG5vZGUudHlwZSA9IFwidGV4dFwiO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSk7XG4gICAgZXhwb3J0czIuZmxhdHRlbiA9ICguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgIGNvbnN0IGZsYXQgPSAoYXJyKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGVsZSA9IGFycltpXTtcbiAgICAgICAgICBBcnJheS5pc0FycmF5KGVsZSkgPyBmbGF0KGVsZSwgcmVzdWx0KSA6IGVsZSAhPT0gdm9pZCAwICYmIHJlc3VsdC5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICBmbGF0KGFyZ3MpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3N0cmluZ2lmeSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9zdHJpbmdpZnkuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHMyKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKGFzdCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICBsZXQgc3RyaW5naWZ5ID0gKG5vZGUsIHBhcmVudCA9IHt9KSA9PiB7XG4gICAgICAgIGxldCBpbnZhbGlkQmxvY2sgPSBvcHRpb25zLmVzY2FwZUludmFsaWQgJiYgdXRpbHMuaXNJbnZhbGlkQnJhY2UocGFyZW50KTtcbiAgICAgICAgbGV0IGludmFsaWROb2RlID0gbm9kZS5pbnZhbGlkID09PSB0cnVlICYmIG9wdGlvbnMuZXNjYXBlSW52YWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgbGV0IG91dHB1dCA9IFwiXCI7XG4gICAgICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICAgICAgaWYgKChpbnZhbGlkQmxvY2sgfHwgaW52YWxpZE5vZGUpICYmIHV0aWxzLmlzT3Blbk9yQ2xvc2Uobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXFxcIiArIG5vZGUudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUubm9kZXMpIHtcbiAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLm5vZGVzKSB7XG4gICAgICAgICAgICBvdXRwdXQgKz0gc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gc3RyaW5naWZ5KGFzdCk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pc19udW1iZXIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2lzLW51bWJlci9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24obnVtKSB7XG4gICAgICBpZiAodHlwZW9mIG51bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gbnVtIC0gbnVtID09PSAwO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBudW0gPT09IFwic3RyaW5nXCIgJiYgbnVtLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlID8gTnVtYmVyLmlzRmluaXRlKCtudW0pIDogaXNGaW5pdGUoK251bSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV90b19yZWdleF9yYW5nZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvdG8tcmVnZXgtcmFuZ2UvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBpc051bWJlciA9IHJlcXVpcmVfaXNfbnVtYmVyKCk7XG4gICAgdmFyIHRvUmVnZXhSYW5nZSA9IChtaW4sIG1heCwgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKGlzTnVtYmVyKG1pbikgPT09IGZhbHNlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJ0b1JlZ2V4UmFuZ2U6IGV4cGVjdGVkIHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhIG51bWJlclwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXggPT09IHZvaWQgMCB8fCBtaW4gPT09IG1heCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG1pbik7XG4gICAgICB9XG4gICAgICBpZiAoaXNOdW1iZXIobWF4KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcInRvUmVnZXhSYW5nZTogZXhwZWN0ZWQgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBhIG51bWJlci5cIik7XG4gICAgICB9XG4gICAgICBsZXQgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICByZWxheFplcm9zOiB0cnVlXG4gICAgICB9LCBvcHRpb25zKTtcbiAgICAgIGlmICh0eXBlb2Ygb3B0cy5zdHJpY3RaZXJvcyA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgb3B0cy5yZWxheFplcm9zID0gb3B0cy5zdHJpY3RaZXJvcyA9PT0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsZXQgcmVsYXggPSBTdHJpbmcob3B0cy5yZWxheFplcm9zKTtcbiAgICAgIGxldCBzaG9ydGhhbmQgPSBTdHJpbmcob3B0cy5zaG9ydGhhbmQpO1xuICAgICAgbGV0IGNhcHR1cmUgPSBTdHJpbmcob3B0cy5jYXB0dXJlKTtcbiAgICAgIGxldCB3cmFwID0gU3RyaW5nKG9wdHMud3JhcCk7XG4gICAgICBsZXQgY2FjaGVLZXkgPSBtaW4gKyBcIjpcIiArIG1heCArIFwiPVwiICsgcmVsYXggKyBzaG9ydGhhbmQgKyBjYXB0dXJlICsgd3JhcDtcbiAgICAgIGlmICh0b1JlZ2V4UmFuZ2UuY2FjaGUuaGFzT3duUHJvcGVydHkoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJldHVybiB0b1JlZ2V4UmFuZ2UuY2FjaGVbY2FjaGVLZXldLnJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxldCBhID0gTWF0aC5taW4obWluLCBtYXgpO1xuICAgICAgbGV0IGIgPSBNYXRoLm1heChtaW4sIG1heCk7XG4gICAgICBpZiAoTWF0aC5hYnMoYSAtIGIpID09PSAxKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBtaW4gKyBcInxcIiArIG1heDtcbiAgICAgICAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgICAgICAgIHJldHVybiBgKCR7cmVzdWx0fSlgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLndyYXAgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCg/OiR7cmVzdWx0fSlgO1xuICAgICAgfVxuICAgICAgbGV0IGlzUGFkZGVkID0gaGFzUGFkZGluZyhtaW4pIHx8IGhhc1BhZGRpbmcobWF4KTtcbiAgICAgIGxldCBzdGF0ZSA9IHtcbiAgICAgICAgbWluLFxuICAgICAgICBtYXgsXG4gICAgICAgIGEsXG4gICAgICAgIGJcbiAgICAgIH07XG4gICAgICBsZXQgcG9zaXRpdmVzID0gW107XG4gICAgICBsZXQgbmVnYXRpdmVzID0gW107XG4gICAgICBpZiAoaXNQYWRkZWQpIHtcbiAgICAgICAgc3RhdGUuaXNQYWRkZWQgPSBpc1BhZGRlZDtcbiAgICAgICAgc3RhdGUubWF4TGVuID0gU3RyaW5nKHN0YXRlLm1heCkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgaWYgKGEgPCAwKSB7XG4gICAgICAgIGxldCBuZXdNaW4gPSBiIDwgMCA/IE1hdGguYWJzKGIpIDogMTtcbiAgICAgICAgbmVnYXRpdmVzID0gc3BsaXRUb1BhdHRlcm5zKG5ld01pbiwgTWF0aC5hYnMoYSksIHN0YXRlLCBvcHRzKTtcbiAgICAgICAgYSA9IHN0YXRlLmEgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGIgPj0gMCkge1xuICAgICAgICBwb3NpdGl2ZXMgPSBzcGxpdFRvUGF0dGVybnMoYSwgYiwgc3RhdGUsIG9wdHMpO1xuICAgICAgfVxuICAgICAgc3RhdGUubmVnYXRpdmVzID0gbmVnYXRpdmVzO1xuICAgICAgc3RhdGUucG9zaXRpdmVzID0gcG9zaXRpdmVzO1xuICAgICAgc3RhdGUucmVzdWx0ID0gY29sbGF0ZVBhdHRlcm5zKG5lZ2F0aXZlcywgcG9zaXRpdmVzLCBvcHRzKTtcbiAgICAgIGlmIChvcHRzLmNhcHR1cmUgPT09IHRydWUpIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ID0gYCgke3N0YXRlLnJlc3VsdH0pYDtcbiAgICAgIH0gZWxzZSBpZiAob3B0cy53cmFwICE9PSBmYWxzZSAmJiBwb3NpdGl2ZXMubGVuZ3RoICsgbmVnYXRpdmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ID0gYCg/OiR7c3RhdGUucmVzdWx0fSlgO1xuICAgICAgfVxuICAgICAgdG9SZWdleFJhbmdlLmNhY2hlW2NhY2hlS2V5XSA9IHN0YXRlO1xuICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdDtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGNvbGxhdGVQYXR0ZXJucyhuZWcsIHBvcywgb3B0aW9ucykge1xuICAgICAgbGV0IG9ubHlOZWdhdGl2ZSA9IGZpbHRlclBhdHRlcm5zKG5lZywgcG9zLCBcIi1cIiwgZmFsc2UsIG9wdGlvbnMpIHx8IFtdO1xuICAgICAgbGV0IG9ubHlQb3NpdGl2ZSA9IGZpbHRlclBhdHRlcm5zKHBvcywgbmVnLCBcIlwiLCBmYWxzZSwgb3B0aW9ucykgfHwgW107XG4gICAgICBsZXQgaW50ZXJzZWN0ZWQgPSBmaWx0ZXJQYXR0ZXJucyhuZWcsIHBvcywgXCItP1wiLCB0cnVlLCBvcHRpb25zKSB8fCBbXTtcbiAgICAgIGxldCBzdWJwYXR0ZXJucyA9IG9ubHlOZWdhdGl2ZS5jb25jYXQoaW50ZXJzZWN0ZWQpLmNvbmNhdChvbmx5UG9zaXRpdmUpO1xuICAgICAgcmV0dXJuIHN1YnBhdHRlcm5zLmpvaW4oXCJ8XCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzcGxpdFRvUmFuZ2VzKG1pbiwgbWF4KSB7XG4gICAgICBsZXQgbmluZXMgPSAxO1xuICAgICAgbGV0IHplcm9zID0gMTtcbiAgICAgIGxldCBzdG9wID0gY291bnROaW5lcyhtaW4sIG5pbmVzKTtcbiAgICAgIGxldCBzdG9wcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFttYXhdKTtcbiAgICAgIHdoaWxlIChtaW4gPD0gc3RvcCAmJiBzdG9wIDw9IG1heCkge1xuICAgICAgICBzdG9wcy5hZGQoc3RvcCk7XG4gICAgICAgIG5pbmVzICs9IDE7XG4gICAgICAgIHN0b3AgPSBjb3VudE5pbmVzKG1pbiwgbmluZXMpO1xuICAgICAgfVxuICAgICAgc3RvcCA9IGNvdW50WmVyb3MobWF4ICsgMSwgemVyb3MpIC0gMTtcbiAgICAgIHdoaWxlIChtaW4gPCBzdG9wICYmIHN0b3AgPD0gbWF4KSB7XG4gICAgICAgIHN0b3BzLmFkZChzdG9wKTtcbiAgICAgICAgemVyb3MgKz0gMTtcbiAgICAgICAgc3RvcCA9IGNvdW50WmVyb3MobWF4ICsgMSwgemVyb3MpIC0gMTtcbiAgICAgIH1cbiAgICAgIHN0b3BzID0gWy4uLnN0b3BzXTtcbiAgICAgIHN0b3BzLnNvcnQoY29tcGFyZSk7XG4gICAgICByZXR1cm4gc3RvcHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJhbmdlVG9QYXR0ZXJuKHN0YXJ0LCBzdG9wLCBvcHRpb25zKSB7XG4gICAgICBpZiAoc3RhcnQgPT09IHN0b3ApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXR0ZXJuOiBzdGFydCxcbiAgICAgICAgICBjb3VudDogW10sXG4gICAgICAgICAgZGlnaXRzOiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBsZXQgemlwcGVkID0gemlwKHN0YXJ0LCBzdG9wKTtcbiAgICAgIGxldCBkaWdpdHMgPSB6aXBwZWQubGVuZ3RoO1xuICAgICAgbGV0IHBhdHRlcm4gPSBcIlwiO1xuICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlnaXRzOyBpKyspIHtcbiAgICAgICAgbGV0IFtzdGFydERpZ2l0LCBzdG9wRGlnaXRdID0gemlwcGVkW2ldO1xuICAgICAgICBpZiAoc3RhcnREaWdpdCA9PT0gc3RvcERpZ2l0KSB7XG4gICAgICAgICAgcGF0dGVybiArPSBzdGFydERpZ2l0O1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0RGlnaXQgIT09IFwiMFwiIHx8IHN0b3BEaWdpdCAhPT0gXCI5XCIpIHtcbiAgICAgICAgICBwYXR0ZXJuICs9IHRvQ2hhcmFjdGVyQ2xhc3Moc3RhcnREaWdpdCwgc3RvcERpZ2l0LCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgcGF0dGVybiArPSBvcHRpb25zLnNob3J0aGFuZCA9PT0gdHJ1ZSA/IFwiXFxcXGRcIiA6IFwiWzAtOV1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdHRlcm4sXG4gICAgICAgIGNvdW50OiBbY291bnRdLFxuICAgICAgICBkaWdpdHNcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwbGl0VG9QYXR0ZXJucyhtaW4sIG1heCwgdG9rLCBvcHRpb25zKSB7XG4gICAgICBsZXQgcmFuZ2VzID0gc3BsaXRUb1JhbmdlcyhtaW4sIG1heCk7XG4gICAgICBsZXQgdG9rZW5zID0gW107XG4gICAgICBsZXQgc3RhcnQgPSBtaW47XG4gICAgICBsZXQgcHJldjtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBtYXgyID0gcmFuZ2VzW2ldO1xuICAgICAgICBsZXQgb2JqID0gcmFuZ2VUb1BhdHRlcm4oU3RyaW5nKHN0YXJ0KSwgU3RyaW5nKG1heDIpLCBvcHRpb25zKTtcbiAgICAgICAgbGV0IHplcm9zID0gXCJcIjtcbiAgICAgICAgaWYgKCF0b2suaXNQYWRkZWQgJiYgcHJldiAmJiBwcmV2LnBhdHRlcm4gPT09IG9iai5wYXR0ZXJuKSB7XG4gICAgICAgICAgaWYgKHByZXYuY291bnQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcHJldi5jb3VudC5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJldi5jb3VudC5wdXNoKG9iai5jb3VudFswXSk7XG4gICAgICAgICAgcHJldi5zdHJpbmcgPSBwcmV2LnBhdHRlcm4gKyB0b1F1YW50aWZpZXIocHJldi5jb3VudCk7XG4gICAgICAgICAgc3RhcnQgPSBtYXgyICsgMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rLmlzUGFkZGVkKSB7XG4gICAgICAgICAgemVyb3MgPSBwYWRaZXJvcyhtYXgyLCB0b2ssIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIG9iai5zdHJpbmcgPSB6ZXJvcyArIG9iai5wYXR0ZXJuICsgdG9RdWFudGlmaWVyKG9iai5jb3VudCk7XG4gICAgICAgIHRva2Vucy5wdXNoKG9iaik7XG4gICAgICAgIHN0YXJ0ID0gbWF4MiArIDE7XG4gICAgICAgIHByZXYgPSBvYmo7XG4gICAgICB9XG4gICAgICByZXR1cm4gdG9rZW5zO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmaWx0ZXJQYXR0ZXJucyhhcnIsIGNvbXBhcmlzb24sIHByZWZpeCwgaW50ZXJzZWN0aW9uLCBvcHRpb25zKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKGxldCBlbGUgb2YgYXJyKSB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgc3RyaW5nXG4gICAgICAgIH0gPSBlbGU7XG4gICAgICAgIGlmICghaW50ZXJzZWN0aW9uICYmICFjb250YWlucyhjb21wYXJpc29uLCBcInN0cmluZ1wiLCBzdHJpbmcpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2gocHJlZml4ICsgc3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJzZWN0aW9uICYmIGNvbnRhaW5zKGNvbXBhcmlzb24sIFwic3RyaW5nXCIsIHN0cmluZykpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChwcmVmaXggKyBzdHJpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiB6aXAoYSwgYikge1xuICAgICAgbGV0IGFyciA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKVxuICAgICAgICBhcnIucHVzaChbYVtpXSwgYltpXV0pO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7XG4gICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbnRhaW5zKGFyciwga2V5LCB2YWwpIHtcbiAgICAgIHJldHVybiBhcnIuc29tZSgoZWxlKSA9PiBlbGVba2V5XSA9PT0gdmFsKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY291bnROaW5lcyhtaW4sIGxlbikge1xuICAgICAgcmV0dXJuIE51bWJlcihTdHJpbmcobWluKS5zbGljZSgwLCAtbGVuKSArIFwiOVwiLnJlcGVhdChsZW4pKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY291bnRaZXJvcyhpbnRlZ2VyLCB6ZXJvcykge1xuICAgICAgcmV0dXJuIGludGVnZXIgLSBpbnRlZ2VyICUgTWF0aC5wb3coMTAsIHplcm9zKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdG9RdWFudGlmaWVyKGRpZ2l0cykge1xuICAgICAgbGV0IFtzdGFydCA9IDAsIHN0b3AgPSBcIlwiXSA9IGRpZ2l0cztcbiAgICAgIGlmIChzdG9wIHx8IHN0YXJ0ID4gMSkge1xuICAgICAgICByZXR1cm4gYHske3N0YXJ0ICsgKHN0b3AgPyBcIixcIiArIHN0b3AgOiBcIlwiKX19YDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0b0NoYXJhY3RlckNsYXNzKGEsIGIsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBgWyR7YX0ke2IgLSBhID09PSAxID8gXCJcIiA6IFwiLVwifSR7Yn1dYDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzUGFkZGluZyhzdHIpIHtcbiAgICAgIHJldHVybiAvXi0/KDArKVxcZC8udGVzdChzdHIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYWRaZXJvcyh2YWx1ZSwgdG9rLCBvcHRpb25zKSB7XG4gICAgICBpZiAoIXRvay5pc1BhZGRlZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBsZXQgZGlmZiA9IE1hdGguYWJzKHRvay5tYXhMZW4gLSBTdHJpbmcodmFsdWUpLmxlbmd0aCk7XG4gICAgICBsZXQgcmVsYXggPSBvcHRpb25zLnJlbGF4WmVyb3MgIT09IGZhbHNlO1xuICAgICAgc3dpdGNoIChkaWZmKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJldHVybiByZWxheCA/IFwiMD9cIiA6IFwiMFwiO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcmV0dXJuIHJlbGF4ID8gXCIwezAsMn1cIiA6IFwiMDBcIjtcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiByZWxheCA/IGAwezAsJHtkaWZmfX1gIDogYDB7JHtkaWZmfX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRvUmVnZXhSYW5nZS5jYWNoZSA9IHt9O1xuICAgIHRvUmVnZXhSYW5nZS5jbGVhckNhY2hlID0gKCkgPT4gdG9SZWdleFJhbmdlLmNhY2hlID0ge307XG4gICAgbW9kdWxlMi5leHBvcnRzID0gdG9SZWdleFJhbmdlO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2ZpbGxfcmFuZ2UgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2ZpbGwtcmFuZ2UvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB1dGlsID0gcmVxdWlyZShcInV0aWxcIik7XG4gICAgdmFyIHRvUmVnZXhSYW5nZSA9IHJlcXVpcmVfdG9fcmVnZXhfcmFuZ2UoKTtcbiAgICB2YXIgaXNPYmplY3QgPSAodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuICAgIHZhciB0cmFuc2Zvcm0gPSAodG9OdW1iZXIpID0+IHtcbiAgICAgIHJldHVybiAodmFsdWUpID0+IHRvTnVtYmVyID09PSB0cnVlID8gTnVtYmVyKHZhbHVlKSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgaXNWYWxpZFZhbHVlID0gKHZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZSAhPT0gXCJcIjtcbiAgICB9O1xuICAgIHZhciBpc051bWJlciA9IChudW0pID0+IE51bWJlci5pc0ludGVnZXIoK251bSk7XG4gICAgdmFyIHplcm9zID0gKGlucHV0KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBgJHtpbnB1dH1gO1xuICAgICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICBpZiAodmFsdWVbMF0gPT09IFwiLVwiKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgICAgaWYgKHZhbHVlID09PSBcIjBcIilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgd2hpbGUgKHZhbHVlWysraW5kZXhdID09PSBcIjBcIilcbiAgICAgICAgO1xuICAgICAgcmV0dXJuIGluZGV4ID4gMDtcbiAgICB9O1xuICAgIHZhciBzdHJpbmdpZnkgPSAoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgZW5kID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3RyaW5naWZ5ID09PSB0cnVlO1xuICAgIH07XG4gICAgdmFyIHBhZCA9IChpbnB1dCwgbWF4TGVuZ3RoLCB0b051bWJlcikgPT4ge1xuICAgICAgaWYgKG1heExlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGRhc2ggPSBpbnB1dFswXSA9PT0gXCItXCIgPyBcIi1cIiA6IFwiXCI7XG4gICAgICAgIGlmIChkYXNoKVxuICAgICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIGlucHV0ID0gZGFzaCArIGlucHV0LnBhZFN0YXJ0KGRhc2ggPyBtYXhMZW5ndGggLSAxIDogbWF4TGVuZ3RoLCBcIjBcIik7XG4gICAgICB9XG4gICAgICBpZiAodG9OdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcoaW5wdXQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH07XG4gICAgdmFyIHRvTWF4TGVuID0gKGlucHV0LCBtYXhMZW5ndGgpID0+IHtcbiAgICAgIGxldCBuZWdhdGl2ZSA9IGlucHV0WzBdID09PSBcIi1cIiA/IFwiLVwiIDogXCJcIjtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDEpO1xuICAgICAgICBtYXhMZW5ndGgtLTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChpbnB1dC5sZW5ndGggPCBtYXhMZW5ndGgpXG4gICAgICAgIGlucHV0ID0gXCIwXCIgKyBpbnB1dDtcbiAgICAgIHJldHVybiBuZWdhdGl2ZSA/IFwiLVwiICsgaW5wdXQgOiBpbnB1dDtcbiAgICB9O1xuICAgIHZhciB0b1NlcXVlbmNlID0gKHBhcnRzLCBvcHRpb25zKSA9PiB7XG4gICAgICBwYXJ0cy5uZWdhdGl2ZXMuc29ydCgoYSwgYikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApO1xuICAgICAgcGFydHMucG9zaXRpdmVzLnNvcnQoKGEsIGIpID0+IGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwKTtcbiAgICAgIGxldCBwcmVmaXggPSBvcHRpb25zLmNhcHR1cmUgPyBcIlwiIDogXCI/OlwiO1xuICAgICAgbGV0IHBvc2l0aXZlcyA9IFwiXCI7XG4gICAgICBsZXQgbmVnYXRpdmVzID0gXCJcIjtcbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICBpZiAocGFydHMucG9zaXRpdmVzLmxlbmd0aCkge1xuICAgICAgICBwb3NpdGl2ZXMgPSBwYXJ0cy5wb3NpdGl2ZXMuam9pbihcInxcIik7XG4gICAgICB9XG4gICAgICBpZiAocGFydHMubmVnYXRpdmVzLmxlbmd0aCkge1xuICAgICAgICBuZWdhdGl2ZXMgPSBgLSgke3ByZWZpeH0ke3BhcnRzLm5lZ2F0aXZlcy5qb2luKFwifFwiKX0pYDtcbiAgICAgIH1cbiAgICAgIGlmIChwb3NpdGl2ZXMgJiYgbmVnYXRpdmVzKSB7XG4gICAgICAgIHJlc3VsdCA9IGAke3Bvc2l0aXZlc318JHtuZWdhdGl2ZXN9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHBvc2l0aXZlcyB8fCBuZWdhdGl2ZXM7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy53cmFwKSB7XG4gICAgICAgIHJldHVybiBgKCR7cHJlZml4fSR7cmVzdWx0fSlgO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHZhciB0b1JhbmdlID0gKGEsIGIsIGlzTnVtYmVycywgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKGlzTnVtYmVycykge1xuICAgICAgICByZXR1cm4gdG9SZWdleFJhbmdlKGEsIGIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIHdyYXA6IGZhbHNlXG4gICAgICAgIH0sIG9wdGlvbnMpKTtcbiAgICAgIH1cbiAgICAgIGxldCBzdGFydCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYSk7XG4gICAgICBpZiAoYSA9PT0gYilcbiAgICAgICAgcmV0dXJuIHN0YXJ0O1xuICAgICAgbGV0IHN0b3AgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGIpO1xuICAgICAgcmV0dXJuIGBbJHtzdGFydH0tJHtzdG9wfV1gO1xuICAgIH07XG4gICAgdmFyIHRvUmVnZXggPSAoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3RhcnQpKSB7XG4gICAgICAgIGxldCB3cmFwID0gb3B0aW9ucy53cmFwID09PSB0cnVlO1xuICAgICAgICBsZXQgcHJlZml4ID0gb3B0aW9ucy5jYXB0dXJlID8gXCJcIiA6IFwiPzpcIjtcbiAgICAgICAgcmV0dXJuIHdyYXAgPyBgKCR7cHJlZml4fSR7c3RhcnQuam9pbihcInxcIil9KWAgOiBzdGFydC5qb2luKFwifFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0b1JlZ2V4UmFuZ2Uoc3RhcnQsIGVuZCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICB2YXIgcmFuZ2VFcnJvciA9ICguLi5hcmdzKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIHJhbmdlIGFyZ3VtZW50czogXCIgKyB1dGlsLmluc3BlY3QoLi4uYXJncykpO1xuICAgIH07XG4gICAgdmFyIGludmFsaWRSYW5nZSA9IChzdGFydCwgZW5kLCBvcHRpb25zKSA9PiB7XG4gICAgICBpZiAob3B0aW9ucy5zdHJpY3RSYW5nZXMgPT09IHRydWUpXG4gICAgICAgIHRocm93IHJhbmdlRXJyb3IoW3N0YXJ0LCBlbmRdKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9O1xuICAgIHZhciBpbnZhbGlkU3RlcCA9IChzdGVwLCBvcHRpb25zKSA9PiB7XG4gICAgICBpZiAob3B0aW9ucy5zdHJpY3RSYW5nZXMgPT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgc3RlcCBcIiR7c3RlcH1cIiB0byBiZSBhIG51bWJlcmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH07XG4gICAgdmFyIGZpbGxOdW1iZXJzID0gKHN0YXJ0LCBlbmQsIHN0ZXAgPSAxLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIGxldCBhID0gTnVtYmVyKHN0YXJ0KTtcbiAgICAgIGxldCBiID0gTnVtYmVyKGVuZCk7XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoYSkgfHwgIU51bWJlci5pc0ludGVnZXIoYikpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKVxuICAgICAgICAgIHRocm93IHJhbmdlRXJyb3IoW3N0YXJ0LCBlbmRdKTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGEgPT09IDApXG4gICAgICAgIGEgPSAwO1xuICAgICAgaWYgKGIgPT09IDApXG4gICAgICAgIGIgPSAwO1xuICAgICAgbGV0IGRlc2NlbmRpbmcgPSBhID4gYjtcbiAgICAgIGxldCBzdGFydFN0cmluZyA9IFN0cmluZyhzdGFydCk7XG4gICAgICBsZXQgZW5kU3RyaW5nID0gU3RyaW5nKGVuZCk7XG4gICAgICBsZXQgc3RlcFN0cmluZyA9IFN0cmluZyhzdGVwKTtcbiAgICAgIHN0ZXAgPSBNYXRoLm1heChNYXRoLmFicyhzdGVwKSwgMSk7XG4gICAgICBsZXQgcGFkZGVkID0gemVyb3Moc3RhcnRTdHJpbmcpIHx8IHplcm9zKGVuZFN0cmluZykgfHwgemVyb3Moc3RlcFN0cmluZyk7XG4gICAgICBsZXQgbWF4TGVuID0gcGFkZGVkID8gTWF0aC5tYXgoc3RhcnRTdHJpbmcubGVuZ3RoLCBlbmRTdHJpbmcubGVuZ3RoLCBzdGVwU3RyaW5nLmxlbmd0aCkgOiAwO1xuICAgICAgbGV0IHRvTnVtYmVyID0gcGFkZGVkID09PSBmYWxzZSAmJiBzdHJpbmdpZnkoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT09IGZhbHNlO1xuICAgICAgbGV0IGZvcm1hdCA9IG9wdGlvbnMudHJhbnNmb3JtIHx8IHRyYW5zZm9ybSh0b051bWJlcik7XG4gICAgICBpZiAob3B0aW9ucy50b1JlZ2V4ICYmIHN0ZXAgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHRvUmFuZ2UodG9NYXhMZW4oc3RhcnQsIG1heExlbiksIHRvTWF4TGVuKGVuZCwgbWF4TGVuKSwgdHJ1ZSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBsZXQgcGFydHMgPSB7XG4gICAgICAgIG5lZ2F0aXZlczogW10sXG4gICAgICAgIHBvc2l0aXZlczogW11cbiAgICAgIH07XG4gICAgICBsZXQgcHVzaCA9IChudW0pID0+IHBhcnRzW251bSA8IDAgPyBcIm5lZ2F0aXZlc1wiIDogXCJwb3NpdGl2ZXNcIl0ucHVzaChNYXRoLmFicyhudW0pKTtcbiAgICAgIGxldCByYW5nZSA9IFtdO1xuICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgIHdoaWxlIChkZXNjZW5kaW5nID8gYSA+PSBiIDogYSA8PSBiKSB7XG4gICAgICAgIGlmIChvcHRpb25zLnRvUmVnZXggPT09IHRydWUgJiYgc3RlcCA+IDEpIHtcbiAgICAgICAgICBwdXNoKGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJhbmdlLnB1c2gocGFkKGZvcm1hdChhLCBpbmRleCksIG1heExlbiwgdG9OdW1iZXIpKTtcbiAgICAgICAgfVxuICAgICAgICBhID0gZGVzY2VuZGluZyA/IGEgLSBzdGVwIDogYSArIHN0ZXA7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy50b1JlZ2V4ID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBzdGVwID4gMSA/IHRvU2VxdWVuY2UocGFydHMsIG9wdGlvbnMpIDogdG9SZWdleChyYW5nZSwgbnVsbCwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgd3JhcDogZmFsc2VcbiAgICAgICAgfSwgb3B0aW9ucykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJhbmdlO1xuICAgIH07XG4gICAgdmFyIGZpbGxMZXR0ZXJzID0gKHN0YXJ0LCBlbmQsIHN0ZXAgPSAxLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIGlmICghaXNOdW1iZXIoc3RhcnQpICYmIHN0YXJ0Lmxlbmd0aCA+IDEgfHwgIWlzTnVtYmVyKGVuZCkgJiYgZW5kLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIGludmFsaWRSYW5nZShzdGFydCwgZW5kLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIGxldCBmb3JtYXQgPSBvcHRpb25zLnRyYW5zZm9ybSB8fCAoKHZhbCkgPT4gU3RyaW5nLmZyb21DaGFyQ29kZSh2YWwpKTtcbiAgICAgIGxldCBhID0gYCR7c3RhcnR9YC5jaGFyQ29kZUF0KDApO1xuICAgICAgbGV0IGIgPSBgJHtlbmR9YC5jaGFyQ29kZUF0KDApO1xuICAgICAgbGV0IGRlc2NlbmRpbmcgPSBhID4gYjtcbiAgICAgIGxldCBtaW4gPSBNYXRoLm1pbihhLCBiKTtcbiAgICAgIGxldCBtYXggPSBNYXRoLm1heChhLCBiKTtcbiAgICAgIGlmIChvcHRpb25zLnRvUmVnZXggJiYgc3RlcCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdG9SYW5nZShtaW4sIG1heCwgZmFsc2UsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgbGV0IHJhbmdlID0gW107XG4gICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgd2hpbGUgKGRlc2NlbmRpbmcgPyBhID49IGIgOiBhIDw9IGIpIHtcbiAgICAgICAgcmFuZ2UucHVzaChmb3JtYXQoYSwgaW5kZXgpKTtcbiAgICAgICAgYSA9IGRlc2NlbmRpbmcgPyBhIC0gc3RlcCA6IGEgKyBzdGVwO1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMudG9SZWdleCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdG9SZWdleChyYW5nZSwgbnVsbCwge1xuICAgICAgICAgIHdyYXA6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmFuZ2U7XG4gICAgfTtcbiAgICB2YXIgZmlsbCA9IChzdGFydCwgZW5kLCBzdGVwLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIGlmIChlbmQgPT0gbnVsbCAmJiBpc1ZhbGlkVmFsdWUoc3RhcnQpKSB7XG4gICAgICAgIHJldHVybiBbc3RhcnRdO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1ZhbGlkVmFsdWUoc3RhcnQpIHx8ICFpc1ZhbGlkVmFsdWUoZW5kKSkge1xuICAgICAgICByZXR1cm4gaW52YWxpZFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBzdGVwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGZpbGwoc3RhcnQsIGVuZCwgMSwge1xuICAgICAgICAgIHRyYW5zZm9ybTogc3RlcFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdChzdGVwKSkge1xuICAgICAgICByZXR1cm4gZmlsbChzdGFydCwgZW5kLCAwLCBzdGVwKTtcbiAgICAgIH1cbiAgICAgIGxldCBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7XG4gICAgICBpZiAob3B0cy5jYXB0dXJlID09PSB0cnVlKVxuICAgICAgICBvcHRzLndyYXAgPSB0cnVlO1xuICAgICAgc3RlcCA9IHN0ZXAgfHwgb3B0cy5zdGVwIHx8IDE7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0ZXApKSB7XG4gICAgICAgIGlmIChzdGVwICE9IG51bGwgJiYgIWlzT2JqZWN0KHN0ZXApKVxuICAgICAgICAgIHJldHVybiBpbnZhbGlkU3RlcChzdGVwLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGZpbGwoc3RhcnQsIGVuZCwgMSwgc3RlcCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNOdW1iZXIoc3RhcnQpICYmIGlzTnVtYmVyKGVuZCkpIHtcbiAgICAgICAgcmV0dXJuIGZpbGxOdW1iZXJzKHN0YXJ0LCBlbmQsIHN0ZXAsIG9wdHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbGxMZXR0ZXJzKHN0YXJ0LCBlbmQsIE1hdGgubWF4KE1hdGguYWJzKHN0ZXApLCAxKSwgb3B0cyk7XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmaWxsO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NvbXBpbGUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2JyYWNlcy9saWIvY29tcGlsZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGZpbGwgPSByZXF1aXJlX2ZpbGxfcmFuZ2UoKTtcbiAgICB2YXIgdXRpbHMgPSByZXF1aXJlX3V0aWxzMigpO1xuICAgIHZhciBjb21waWxlID0gKGFzdCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICBsZXQgd2FsayA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgICAgICBsZXQgaW52YWxpZEJsb2NrID0gdXRpbHMuaXNJbnZhbGlkQnJhY2UocGFyZW50KTtcbiAgICAgICAgbGV0IGludmFsaWROb2RlID0gbm9kZS5pbnZhbGlkID09PSB0cnVlICYmIG9wdGlvbnMuZXNjYXBlSW52YWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgbGV0IGludmFsaWQgPSBpbnZhbGlkQmxvY2sgPT09IHRydWUgfHwgaW52YWxpZE5vZGUgPT09IHRydWU7XG4gICAgICAgIGxldCBwcmVmaXggPSBvcHRpb25zLmVzY2FwZUludmFsaWQgPT09IHRydWUgPyBcIlxcXFxcIiA6IFwiXCI7XG4gICAgICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgICAgICBpZiAobm9kZS5pc09wZW4gPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gcHJlZml4ICsgbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5pc0Nsb3NlID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHByZWZpeCArIG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJvcGVuXCIpIHtcbiAgICAgICAgICByZXR1cm4gaW52YWxpZCA/IHByZWZpeCArIG5vZGUudmFsdWUgOiBcIihcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBcImNsb3NlXCIpIHtcbiAgICAgICAgICByZXR1cm4gaW52YWxpZCA/IHByZWZpeCArIG5vZGUudmFsdWUgOiBcIilcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBcImNvbW1hXCIpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5wcmV2LnR5cGUgPT09IFwiY29tbWFcIiA/IFwiXCIgOiBpbnZhbGlkID8gbm9kZS52YWx1ZSA6IFwifFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5yYW5nZXMgPiAwKSB7XG4gICAgICAgICAgbGV0IGFyZ3MgPSB1dGlscy5yZWR1Y2Uobm9kZS5ub2Rlcyk7XG4gICAgICAgICAgbGV0IHJhbmdlID0gZmlsbCguLi5hcmdzLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICAgICAgd3JhcDogZmFsc2UsXG4gICAgICAgICAgICB0b1JlZ2V4OiB0cnVlXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIGlmIChyYW5nZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA+IDEgJiYgcmFuZ2UubGVuZ3RoID4gMSA/IGAoJHtyYW5nZX0pYCA6IHJhbmdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5ub2Rlcykge1xuICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUubm9kZXMpIHtcbiAgICAgICAgICAgIG91dHB1dCArPSB3YWxrKGNoaWxkLCBub2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gd2Fsayhhc3QpO1xuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gY29tcGlsZTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9leHBhbmQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2JyYWNlcy9saWIvZXhwYW5kLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZmlsbCA9IHJlcXVpcmVfZmlsbF9yYW5nZSgpO1xuICAgIHZhciBzdHJpbmdpZnkgPSByZXF1aXJlX3N0cmluZ2lmeSgpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHMyKCk7XG4gICAgdmFyIGFwcGVuZCA9IChxdWV1ZSA9IFwiXCIsIHN0YXNoID0gXCJcIiwgZW5jbG9zZSA9IGZhbHNlKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICBxdWV1ZSA9IFtdLmNvbmNhdChxdWV1ZSk7XG4gICAgICBzdGFzaCA9IFtdLmNvbmNhdChzdGFzaCk7XG4gICAgICBpZiAoIXN0YXNoLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIHF1ZXVlO1xuICAgICAgaWYgKCFxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGVuY2xvc2UgPyB1dGlscy5mbGF0dGVuKHN0YXNoKS5tYXAoKGVsZSkgPT4gYHske2VsZX19YCkgOiBzdGFzaDtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgcXVldWUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBpdGVtKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChhcHBlbmQodmFsdWUsIHN0YXNoLCBlbmNsb3NlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IGVsZSBvZiBzdGFzaCkge1xuICAgICAgICAgICAgaWYgKGVuY2xvc2UgPT09IHRydWUgJiYgdHlwZW9mIGVsZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgZWxlID0gYHske2VsZX19YDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKEFycmF5LmlzQXJyYXkoZWxlKSA/IGFwcGVuZChpdGVtLCBlbGUsIGVuY2xvc2UpIDogaXRlbSArIGVsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdXRpbHMuZmxhdHRlbihyZXN1bHQpO1xuICAgIH07XG4gICAgdmFyIGV4cGFuZCA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgbGV0IHJhbmdlTGltaXQgPSBvcHRpb25zLnJhbmdlTGltaXQgPT09IHZvaWQgMCA/IDFlMyA6IG9wdGlvbnMucmFuZ2VMaW1pdDtcbiAgICAgIGxldCB3YWxrID0gKG5vZGUsIHBhcmVudCA9IHt9KSA9PiB7XG4gICAgICAgIG5vZGUucXVldWUgPSBbXTtcbiAgICAgICAgbGV0IHAgPSBwYXJlbnQ7XG4gICAgICAgIGxldCBxID0gcGFyZW50LnF1ZXVlO1xuICAgICAgICB3aGlsZSAocC50eXBlICE9PSBcImJyYWNlXCIgJiYgcC50eXBlICE9PSBcInJvb3RcIiAmJiBwLnBhcmVudCkge1xuICAgICAgICAgIHAgPSBwLnBhcmVudDtcbiAgICAgICAgICBxID0gcC5xdWV1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5pbnZhbGlkIHx8IG5vZGUuZG9sbGFyKSB7XG4gICAgICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBzdHJpbmdpZnkobm9kZSwgb3B0aW9ucykpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJicmFjZVwiICYmIG5vZGUuaW52YWxpZCAhPT0gdHJ1ZSAmJiBub2RlLm5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgW1wie31cIl0pKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5yYW5nZXMgPiAwKSB7XG4gICAgICAgICAgbGV0IGFyZ3MgPSB1dGlscy5yZWR1Y2Uobm9kZS5ub2Rlcyk7XG4gICAgICAgICAgaWYgKHV0aWxzLmV4Y2VlZHNMaW1pdCguLi5hcmdzLCBvcHRpb25zLnN0ZXAsIHJhbmdlTGltaXQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImV4cGFuZGVkIGFycmF5IGxlbmd0aCBleGNlZWRzIHJhbmdlIGxpbWl0LiBVc2Ugb3B0aW9ucy5yYW5nZUxpbWl0IHRvIGluY3JlYXNlIG9yIGRpc2FibGUgdGhlIGxpbWl0LlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHJhbmdlID0gZmlsbCguLi5hcmdzLCBvcHRpb25zKTtcbiAgICAgICAgICBpZiAocmFuZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByYW5nZSA9IHN0cmluZ2lmeShub2RlLCBvcHRpb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCByYW5nZSkpO1xuICAgICAgICAgIG5vZGUubm9kZXMgPSBbXTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGVuY2xvc2UgPSB1dGlscy5lbmNsb3NlQnJhY2Uobm9kZSk7XG4gICAgICAgIGxldCBxdWV1ZSA9IG5vZGUucXVldWU7XG4gICAgICAgIGxldCBibG9jayA9IG5vZGU7XG4gICAgICAgIHdoaWxlIChibG9jay50eXBlICE9PSBcImJyYWNlXCIgJiYgYmxvY2sudHlwZSAhPT0gXCJyb290XCIgJiYgYmxvY2sucGFyZW50KSB7XG4gICAgICAgICAgYmxvY2sgPSBibG9jay5wYXJlbnQ7XG4gICAgICAgICAgcXVldWUgPSBibG9jay5xdWV1ZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgY2hpbGQgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSBcImNvbW1hXCIgJiYgbm9kZS50eXBlID09PSBcImJyYWNlXCIpIHtcbiAgICAgICAgICAgIGlmIChpID09PSAxKVxuICAgICAgICAgICAgICBxdWV1ZS5wdXNoKFwiXCIpO1xuICAgICAgICAgICAgcXVldWUucHVzaChcIlwiKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gXCJjbG9zZVwiKSB7XG4gICAgICAgICAgICBxLnB1c2goYXBwZW5kKHEucG9wKCksIHF1ZXVlLCBlbmNsb3NlKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNoaWxkLnZhbHVlICYmIGNoaWxkLnR5cGUgIT09IFwib3BlblwiKSB7XG4gICAgICAgICAgICBxdWV1ZS5wdXNoKGFwcGVuZChxdWV1ZS5wb3AoKSwgY2hpbGQudmFsdWUpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hpbGQubm9kZXMpIHtcbiAgICAgICAgICAgIHdhbGsoY2hpbGQsIG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXVldWU7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4od2Fsayhhc3QpKTtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGV4cGFuZDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb25zdGFudHMyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9icmFjZXMvbGliL2NvbnN0YW50cy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgTUFYX0xFTkdUSDogMTAyNCAqIDY0LFxuICAgICAgQ0hBUl8wOiBcIjBcIixcbiAgICAgIENIQVJfOTogXCI5XCIsXG4gICAgICBDSEFSX1VQUEVSQ0FTRV9BOiBcIkFcIixcbiAgICAgIENIQVJfTE9XRVJDQVNFX0E6IFwiYVwiLFxuICAgICAgQ0hBUl9VUFBFUkNBU0VfWjogXCJaXCIsXG4gICAgICBDSEFSX0xPV0VSQ0FTRV9aOiBcInpcIixcbiAgICAgIENIQVJfTEVGVF9QQVJFTlRIRVNFUzogXCIoXCIsXG4gICAgICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTOiBcIilcIixcbiAgICAgIENIQVJfQVNURVJJU0s6IFwiKlwiLFxuICAgICAgQ0hBUl9BTVBFUlNBTkQ6IFwiJlwiLFxuICAgICAgQ0hBUl9BVDogXCJAXCIsXG4gICAgICBDSEFSX0JBQ0tTTEFTSDogXCJcXFxcXCIsXG4gICAgICBDSEFSX0JBQ0tUSUNLOiBcImBcIixcbiAgICAgIENIQVJfQ0FSUklBR0VfUkVUVVJOOiBcIlxcclwiLFxuICAgICAgQ0hBUl9DSVJDVU1GTEVYX0FDQ0VOVDogXCJeXCIsXG4gICAgICBDSEFSX0NPTE9OOiBcIjpcIixcbiAgICAgIENIQVJfQ09NTUE6IFwiLFwiLFxuICAgICAgQ0hBUl9ET0xMQVI6IFwiJFwiLFxuICAgICAgQ0hBUl9ET1Q6IFwiLlwiLFxuICAgICAgQ0hBUl9ET1VCTEVfUVVPVEU6ICdcIicsXG4gICAgICBDSEFSX0VRVUFMOiBcIj1cIixcbiAgICAgIENIQVJfRVhDTEFNQVRJT05fTUFSSzogXCIhXCIsXG4gICAgICBDSEFSX0ZPUk1fRkVFRDogXCJcXGZcIixcbiAgICAgIENIQVJfRk9SV0FSRF9TTEFTSDogXCIvXCIsXG4gICAgICBDSEFSX0hBU0g6IFwiI1wiLFxuICAgICAgQ0hBUl9IWVBIRU5fTUlOVVM6IFwiLVwiLFxuICAgICAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6IFwiPFwiLFxuICAgICAgQ0hBUl9MRUZUX0NVUkxZX0JSQUNFOiBcIntcIixcbiAgICAgIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVDogXCJbXCIsXG4gICAgICBDSEFSX0xJTkVfRkVFRDogXCJcXG5cIixcbiAgICAgIENIQVJfTk9fQlJFQUtfU1BBQ0U6IFwiXFx4QTBcIixcbiAgICAgIENIQVJfUEVSQ0VOVDogXCIlXCIsXG4gICAgICBDSEFSX1BMVVM6IFwiK1wiLFxuICAgICAgQ0hBUl9RVUVTVElPTl9NQVJLOiBcIj9cIixcbiAgICAgIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogXCI+XCIsXG4gICAgICBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFOiBcIn1cIixcbiAgICAgIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6IFwiXVwiLFxuICAgICAgQ0hBUl9TRU1JQ09MT046IFwiO1wiLFxuICAgICAgQ0hBUl9TSU5HTEVfUVVPVEU6IFwiJ1wiLFxuICAgICAgQ0hBUl9TUEFDRTogXCIgXCIsXG4gICAgICBDSEFSX1RBQjogXCJcdFwiLFxuICAgICAgQ0hBUl9VTkRFUlNDT1JFOiBcIl9cIixcbiAgICAgIENIQVJfVkVSVElDQUxfTElORTogXCJ8XCIsXG4gICAgICBDSEFSX1pFUk9fV0lEVEhfTk9CUkVBS19TUEFDRTogXCJcXHVGRUZGXCJcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9icmFjZXMvbGliL3BhcnNlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgc3RyaW5naWZ5ID0gcmVxdWlyZV9zdHJpbmdpZnkoKTtcbiAgICB2YXIge1xuICAgICAgTUFYX0xFTkdUSCxcbiAgICAgIENIQVJfQkFDS1NMQVNILFxuICAgICAgQ0hBUl9CQUNLVElDSyxcbiAgICAgIENIQVJfQ09NTUEsXG4gICAgICBDSEFSX0RPVCxcbiAgICAgIENIQVJfTEVGVF9QQVJFTlRIRVNFUyxcbiAgICAgIENIQVJfUklHSFRfUEFSRU5USEVTRVMsXG4gICAgICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UsXG4gICAgICBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFLFxuICAgICAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULFxuICAgICAgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCxcbiAgICAgIENIQVJfRE9VQkxFX1FVT1RFLFxuICAgICAgQ0hBUl9TSU5HTEVfUVVPVEUsXG4gICAgICBDSEFSX05PX0JSRUFLX1NQQUNFLFxuICAgICAgQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0VcbiAgICB9ID0gcmVxdWlyZV9jb25zdGFudHMyKCk7XG4gICAgdmFyIHBhcnNlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO1xuICAgICAgfVxuICAgICAgbGV0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgbGV0IG1heCA9IHR5cGVvZiBvcHRzLm1heExlbmd0aCA9PT0gXCJudW1iZXJcIiA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG4gICAgICBpZiAoaW5wdXQubGVuZ3RoID4gbWF4KSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoICgke2lucHV0Lmxlbmd0aH0pLCBleGNlZWRzIG1heCBjaGFyYWN0ZXJzICgke21heH0pYCk7XG4gICAgICB9XG4gICAgICBsZXQgYXN0ID0ge1xuICAgICAgICB0eXBlOiBcInJvb3RcIixcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIG5vZGVzOiBbXVxuICAgICAgfTtcbiAgICAgIGxldCBzdGFjayA9IFthc3RdO1xuICAgICAgbGV0IGJsb2NrID0gYXN0O1xuICAgICAgbGV0IHByZXYgPSBhc3Q7XG4gICAgICBsZXQgYnJhY2tldHMgPSAwO1xuICAgICAgbGV0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICBsZXQgZGVwdGggPSAwO1xuICAgICAgbGV0IHZhbHVlO1xuICAgICAgbGV0IG1lbW8gPSB7fTtcbiAgICAgIGNvbnN0IGFkdmFuY2UgPSAoKSA9PiBpbnB1dFtpbmRleCsrXTtcbiAgICAgIGNvbnN0IHB1c2ggPSAobm9kZSkgPT4ge1xuICAgICAgICBpZiAobm9kZS50eXBlID09PSBcInRleHRcIiAmJiBwcmV2LnR5cGUgPT09IFwiZG90XCIpIHtcbiAgICAgICAgICBwcmV2LnR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09IFwidGV4dFwiICYmIG5vZGUudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgICBwcmV2LnZhbHVlICs9IG5vZGUudmFsdWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJsb2NrLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIG5vZGUucGFyZW50ID0gYmxvY2s7XG4gICAgICAgIG5vZGUucHJldiA9IHByZXY7XG4gICAgICAgIHByZXYgPSBub2RlO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH07XG4gICAgICBwdXNoKHtcbiAgICAgICAgdHlwZTogXCJib3NcIlxuICAgICAgfSk7XG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYmxvY2sgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgdmFsdWUgPSBhZHZhbmNlKCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0UgfHwgdmFsdWUgPT09IENIQVJfTk9fQlJFQUtfU1BBQ0UpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgIHZhbHVlOiAob3B0aW9ucy5rZWVwRXNjYXBpbmcgPyB2YWx1ZSA6IFwiXCIpICsgYWR2YW5jZSgpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgIHZhbHVlOiBcIlxcXFxcIiArIHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICBicmFja2V0cysrO1xuICAgICAgICAgIGxldCBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgIGxldCBuZXh0O1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJiAobmV4dCA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IG5leHQ7XG4gICAgICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICAgIGJyYWNrZXRzKys7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IGFkdmFuY2UoKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgICAgICBicmFja2V0cy0tO1xuICAgICAgICAgICAgICBpZiAoYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgICAgIGJsb2NrID0gcHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBcInBhcmVuXCIsXG4gICAgICAgICAgICBub2RlczogW11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdGFjay5wdXNoKGJsb2NrKTtcbiAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICBpZiAoYmxvY2sudHlwZSAhPT0gXCJwYXJlblwiKSB7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBibG9jayA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJsb2NrID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBDSEFSX0RPVUJMRV9RVU9URSB8fCB2YWx1ZSA9PT0gQ0hBUl9TSU5HTEVfUVVPVEUgfHwgdmFsdWUgPT09IENIQVJfQkFDS1RJQ0spIHtcbiAgICAgICAgICBsZXQgb3BlbiA9IHZhbHVlO1xuICAgICAgICAgIGxldCBuZXh0O1xuICAgICAgICAgIGlmIChvcHRpb25zLmtlZXBRdW90ZXMgIT09IHRydWUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoICYmIChuZXh0ID0gYWR2YW5jZSgpKSkge1xuICAgICAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IG5leHQgKyBhZHZhbmNlKCk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5leHQgPT09IG9wZW4pIHtcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMua2VlcFF1b3RlcyA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSBuZXh0O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlICs9IG5leHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNFKSB7XG4gICAgICAgICAgZGVwdGgrKztcbiAgICAgICAgICBsZXQgZG9sbGFyID0gcHJldi52YWx1ZSAmJiBwcmV2LnZhbHVlLnNsaWNlKC0xKSA9PT0gXCIkXCIgfHwgYmxvY2suZG9sbGFyID09PSB0cnVlO1xuICAgICAgICAgIGxldCBicmFjZSA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYnJhY2VcIixcbiAgICAgICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgICAgICBjbG9zZTogZmFsc2UsXG4gICAgICAgICAgICBkb2xsYXIsXG4gICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgIGNvbW1hczogMCxcbiAgICAgICAgICAgIHJhbmdlczogMCxcbiAgICAgICAgICAgIG5vZGVzOiBbXVxuICAgICAgICAgIH07XG4gICAgICAgICAgYmxvY2sgPSBwdXNoKGJyYWNlKTtcbiAgICAgICAgICBzdGFjay5wdXNoKGJsb2NrKTtcbiAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwib3BlblwiLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgICAgICBpZiAoYmxvY2sudHlwZSAhPT0gXCJicmFjZVwiKSB7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgdHlwZSA9IFwiY2xvc2VcIjtcbiAgICAgICAgICBibG9jayA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgIGJsb2NrLmNsb3NlID0gdHJ1ZTtcbiAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlcHRoLS07XG4gICAgICAgICAgYmxvY2sgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IENIQVJfQ09NTUEgJiYgZGVwdGggPiAwKSB7XG4gICAgICAgICAgaWYgKGJsb2NrLnJhbmdlcyA+IDApIHtcbiAgICAgICAgICAgIGJsb2NrLnJhbmdlcyA9IDA7XG4gICAgICAgICAgICBsZXQgb3BlbiA9IGJsb2NrLm5vZGVzLnNoaWZ0KCk7XG4gICAgICAgICAgICBibG9jay5ub2RlcyA9IFtvcGVuLCB7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5naWZ5KGJsb2NrKVxuICAgICAgICAgICAgfV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJjb21tYVwiLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBibG9jay5jb21tYXMrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IENIQVJfRE9UICYmIGRlcHRoID4gMCAmJiBibG9jay5jb21tYXMgPT09IDApIHtcbiAgICAgICAgICBsZXQgc2libGluZ3MgPSBibG9jay5ub2RlcztcbiAgICAgICAgICBpZiAoZGVwdGggPT09IDAgfHwgc2libGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJldi50eXBlID09PSBcImRvdFwiKSB7XG4gICAgICAgICAgICBibG9jay5yYW5nZSA9IFtdO1xuICAgICAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgICAgIHByZXYudHlwZSA9IFwicmFuZ2VcIjtcbiAgICAgICAgICAgIGlmIChibG9jay5ub2Rlcy5sZW5ndGggIT09IDMgJiYgYmxvY2subm9kZXMubGVuZ3RoICE9PSA1KSB7XG4gICAgICAgICAgICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICBibG9jay5yYW5nZXMgPSAwO1xuICAgICAgICAgICAgICBwcmV2LnR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBibG9jay5yYW5nZXMrKztcbiAgICAgICAgICAgIGJsb2NrLmFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJldi50eXBlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgICAgIHNpYmxpbmdzLnBvcCgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IHNpYmxpbmdzW3NpYmxpbmdzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgYmVmb3JlLnZhbHVlICs9IHByZXYudmFsdWUgKyB2YWx1ZTtcbiAgICAgICAgICAgIHByZXYgPSBiZWZvcmU7XG4gICAgICAgICAgICBibG9jay5yYW5nZXMtLTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwiZG90XCIsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHB1c2goe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZG8ge1xuICAgICAgICBibG9jayA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoYmxvY2sudHlwZSAhPT0gXCJyb290XCIpIHtcbiAgICAgICAgICBibG9jay5ub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW5vZGUubm9kZXMpIHtcbiAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJvcGVuXCIpXG4gICAgICAgICAgICAgICAgbm9kZS5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICBpZiAobm9kZS50eXBlID09PSBcImNsb3NlXCIpXG4gICAgICAgICAgICAgICAgbm9kZS5pc0Nsb3NlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaWYgKCFub2RlLm5vZGVzKVxuICAgICAgICAgICAgICAgIG5vZGUudHlwZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgICBub2RlLmludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxldCBwYXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgICBsZXQgaW5kZXgyID0gcGFyZW50Lm5vZGVzLmluZGV4T2YoYmxvY2spO1xuICAgICAgICAgIHBhcmVudC5ub2Rlcy5zcGxpY2UoaW5kZXgyLCAxLCAuLi5ibG9jay5ub2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApO1xuICAgICAgcHVzaCh7XG4gICAgICAgIHR5cGU6IFwiZW9zXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFzdDtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHBhcnNlO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2JyYWNlcyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvYnJhY2VzL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgc3RyaW5naWZ5ID0gcmVxdWlyZV9zdHJpbmdpZnkoKTtcbiAgICB2YXIgY29tcGlsZSA9IHJlcXVpcmVfY29tcGlsZSgpO1xuICAgIHZhciBleHBhbmQgPSByZXF1aXJlX2V4cGFuZCgpO1xuICAgIHZhciBwYXJzZSA9IHJlcXVpcmVfcGFyc2UoKTtcbiAgICB2YXIgYnJhY2VzID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIGxldCBvdXRwdXQgPSBbXTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgICBmb3IgKGxldCBwYXR0ZXJuIG9mIGlucHV0KSB7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGJyYWNlcy5jcmVhdGUocGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2goLi4ucmVzdWx0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2gocmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dCA9IFtdLmNvbmNhdChicmFjZXMuY3JlYXRlKGlucHV0LCBvcHRpb25zKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmV4cGFuZCA9PT0gdHJ1ZSAmJiBvcHRpb25zLm5vZHVwZXMgPT09IHRydWUpIHtcbiAgICAgICAgb3V0cHV0ID0gWy4uLm5ldyBTZXQob3V0cHV0KV07XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH07XG4gICAgYnJhY2VzLnBhcnNlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgICBicmFjZXMuc3RyaW5naWZ5ID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeShicmFjZXMucGFyc2UoaW5wdXQsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmdpZnkoaW5wdXQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgYnJhY2VzLmNvbXBpbGUgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpbnB1dCA9IGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29tcGlsZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBicmFjZXMuZXhwYW5kID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaW5wdXQgPSBicmFjZXMucGFyc2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgbGV0IHJlc3VsdCA9IGV4cGFuZChpbnB1dCwgb3B0aW9ucyk7XG4gICAgICBpZiAob3B0aW9ucy5ub2VtcHR5ID09PSB0cnVlKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5ub2R1cGVzID09PSB0cnVlKSB7XG4gICAgICAgIHJlc3VsdCA9IFsuLi5uZXcgU2V0KHJlc3VsdCldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIGJyYWNlcy5jcmVhdGUgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgaWYgKGlucHV0ID09PSBcIlwiIHx8IGlucHV0Lmxlbmd0aCA8IDMpIHtcbiAgICAgICAgcmV0dXJuIFtpbnB1dF07XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0aW9ucy5leHBhbmQgIT09IHRydWUgPyBicmFjZXMuY29tcGlsZShpbnB1dCwgb3B0aW9ucykgOiBicmFjZXMuZXhwYW5kKGlucHV0LCBvcHRpb25zKTtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGJyYWNlcztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb25zdGFudHMzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL2NvbnN0YW50cy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICB2YXIgV0lOX1NMQVNIID0gXCJcXFxcXFxcXC9cIjtcbiAgICB2YXIgV0lOX05PX1NMQVNIID0gYFteJHtXSU5fU0xBU0h9XWA7XG4gICAgdmFyIERPVF9MSVRFUkFMID0gXCJcXFxcLlwiO1xuICAgIHZhciBQTFVTX0xJVEVSQUwgPSBcIlxcXFwrXCI7XG4gICAgdmFyIFFNQVJLX0xJVEVSQUwgPSBcIlxcXFw/XCI7XG4gICAgdmFyIFNMQVNIX0xJVEVSQUwgPSBcIlxcXFwvXCI7XG4gICAgdmFyIE9ORV9DSEFSID0gXCIoPz0uKVwiO1xuICAgIHZhciBRTUFSSyA9IFwiW14vXVwiO1xuICAgIHZhciBFTkRfQU5DSE9SID0gYCg/OiR7U0xBU0hfTElURVJBTH18JClgO1xuICAgIHZhciBTVEFSVF9BTkNIT1IgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9KWA7XG4gICAgdmFyIERPVFNfU0xBU0ggPSBgJHtET1RfTElURVJBTH17MSwyfSR7RU5EX0FOQ0hPUn1gO1xuICAgIHZhciBOT19ET1QgPSBgKD8hJHtET1RfTElURVJBTH0pYDtcbiAgICB2YXIgTk9fRE9UUyA9IGAoPyEke1NUQVJUX0FOQ0hPUn0ke0RPVFNfU0xBU0h9KWA7XG4gICAgdmFyIE5PX0RPVF9TTEFTSCA9IGAoPyEke0RPVF9MSVRFUkFMfXswLDF9JHtFTkRfQU5DSE9SfSlgO1xuICAgIHZhciBOT19ET1RTX1NMQVNIID0gYCg/ISR7RE9UU19TTEFTSH0pYDtcbiAgICB2YXIgUU1BUktfTk9fRE9UID0gYFteLiR7U0xBU0hfTElURVJBTH1dYDtcbiAgICB2YXIgU1RBUiA9IGAke1FNQVJLfSo/YDtcbiAgICB2YXIgUE9TSVhfQ0hBUlMgPSB7XG4gICAgICBET1RfTElURVJBTCxcbiAgICAgIFBMVVNfTElURVJBTCxcbiAgICAgIFFNQVJLX0xJVEVSQUwsXG4gICAgICBTTEFTSF9MSVRFUkFMLFxuICAgICAgT05FX0NIQVIsXG4gICAgICBRTUFSSyxcbiAgICAgIEVORF9BTkNIT1IsXG4gICAgICBET1RTX1NMQVNILFxuICAgICAgTk9fRE9ULFxuICAgICAgTk9fRE9UUyxcbiAgICAgIE5PX0RPVF9TTEFTSCxcbiAgICAgIE5PX0RPVFNfU0xBU0gsXG4gICAgICBRTUFSS19OT19ET1QsXG4gICAgICBTVEFSLFxuICAgICAgU1RBUlRfQU5DSE9SXG4gICAgfTtcbiAgICB2YXIgV0lORE9XU19DSEFSUyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgUE9TSVhfQ0hBUlMpLCB7fSwge1xuICAgICAgU0xBU0hfTElURVJBTDogYFske1dJTl9TTEFTSH1dYCxcbiAgICAgIFFNQVJLOiBXSU5fTk9fU0xBU0gsXG4gICAgICBTVEFSOiBgJHtXSU5fTk9fU0xBU0h9Kj9gLFxuICAgICAgRE9UU19TTEFTSDogYCR7RE9UX0xJVEVSQUx9ezEsMn0oPzpbJHtXSU5fU0xBU0h9XXwkKWAsXG4gICAgICBOT19ET1Q6IGAoPyEke0RPVF9MSVRFUkFMfSlgLFxuICAgICAgTk9fRE9UUzogYCg/ISg/Ol58WyR7V0lOX1NMQVNIfV0pJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gICAgICBOT19ET1RfU0xBU0g6IGAoPyEke0RPVF9MSVRFUkFMfXswLDF9KD86WyR7V0lOX1NMQVNIfV18JCkpYCxcbiAgICAgIE5PX0RPVFNfU0xBU0g6IGAoPyEke0RPVF9MSVRFUkFMfXsxLDJ9KD86WyR7V0lOX1NMQVNIfV18JCkpYCxcbiAgICAgIFFNQVJLX05PX0RPVDogYFteLiR7V0lOX1NMQVNIfV1gLFxuICAgICAgU1RBUlRfQU5DSE9SOiBgKD86XnxbJHtXSU5fU0xBU0h9XSlgLFxuICAgICAgRU5EX0FOQ0hPUjogYCg/Olske1dJTl9TTEFTSH1dfCQpYFxuICAgIH0pO1xuICAgIHZhciBQT1NJWF9SRUdFWF9TT1VSQ0UgPSB7XG4gICAgICBhbG51bTogXCJhLXpBLVowLTlcIixcbiAgICAgIGFscGhhOiBcImEtekEtWlwiLFxuICAgICAgYXNjaWk6IFwiXFxcXHgwMC1cXFxceDdGXCIsXG4gICAgICBibGFuazogXCIgXFxcXHRcIixcbiAgICAgIGNudHJsOiBcIlxcXFx4MDAtXFxcXHgxRlxcXFx4N0ZcIixcbiAgICAgIGRpZ2l0OiBcIjAtOVwiLFxuICAgICAgZ3JhcGg6IFwiXFxcXHgyMS1cXFxceDdFXCIsXG4gICAgICBsb3dlcjogXCJhLXpcIixcbiAgICAgIHByaW50OiBcIlxcXFx4MjAtXFxcXHg3RSBcIixcbiAgICAgIHB1bmN0OiBcIlxcXFwtIVxcXCIjJCUmJygpXFxcXCorLC4vOjs8PT4/QFtcXFxcXV5fYHt8fX5cIixcbiAgICAgIHNwYWNlOiBcIiBcXFxcdFxcXFxyXFxcXG5cXFxcdlxcXFxmXCIsXG4gICAgICB1cHBlcjogXCJBLVpcIixcbiAgICAgIHdvcmQ6IFwiQS1aYS16MC05X1wiLFxuICAgICAgeGRpZ2l0OiBcIkEtRmEtZjAtOVwiXG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBNQVhfTEVOR1RIOiAxMDI0ICogNjQsXG4gICAgICBQT1NJWF9SRUdFWF9TT1VSQ0UsXG4gICAgICBSRUdFWF9CQUNLU0xBU0g6IC9cXFxcKD8hWyorP14ke30ofClbXFxdXSkvZyxcbiAgICAgIFJFR0VYX05PTl9TUEVDSUFMX0NIQVJTOiAvXlteQCFbXFxdLiwkKis/Xnt9KCl8XFxcXC9dKy8sXG4gICAgICBSRUdFWF9TUEVDSUFMX0NIQVJTOiAvWy0qKz8uXiR7fSh8KVtcXF1dLyxcbiAgICAgIFJFR0VYX1NQRUNJQUxfQ0hBUlNfQkFDS1JFRjogLyhcXFxcPykoKFxcVykoXFwzKikpL2csXG4gICAgICBSRUdFWF9TUEVDSUFMX0NIQVJTX0dMT0JBTDogLyhbLSorPy5eJHt9KHwpW1xcXV0pL2csXG4gICAgICBSRUdFWF9SRU1PVkVfQkFDS1NMQVNIOiAvKD86XFxbLio/W15cXFxcXVxcXXxcXFxcKD89LikpL2csXG4gICAgICBSRVBMQUNFTUVOVFM6IHtcbiAgICAgICAgXCIqKipcIjogXCIqXCIsXG4gICAgICAgIFwiKiovKipcIjogXCIqKlwiLFxuICAgICAgICBcIioqLyoqLyoqXCI6IFwiKipcIlxuICAgICAgfSxcbiAgICAgIENIQVJfMDogNDgsXG4gICAgICBDSEFSXzk6IDU3LFxuICAgICAgQ0hBUl9VUFBFUkNBU0VfQTogNjUsXG4gICAgICBDSEFSX0xPV0VSQ0FTRV9BOiA5NyxcbiAgICAgIENIQVJfVVBQRVJDQVNFX1o6IDkwLFxuICAgICAgQ0hBUl9MT1dFUkNBU0VfWjogMTIyLFxuICAgICAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTOiA0MCxcbiAgICAgIENIQVJfUklHSFRfUEFSRU5USEVTRVM6IDQxLFxuICAgICAgQ0hBUl9BU1RFUklTSzogNDIsXG4gICAgICBDSEFSX0FNUEVSU0FORDogMzgsXG4gICAgICBDSEFSX0FUOiA2NCxcbiAgICAgIENIQVJfQkFDS1dBUkRfU0xBU0g6IDkyLFxuICAgICAgQ0hBUl9DQVJSSUFHRV9SRVRVUk46IDEzLFxuICAgICAgQ0hBUl9DSVJDVU1GTEVYX0FDQ0VOVDogOTQsXG4gICAgICBDSEFSX0NPTE9OOiA1OCxcbiAgICAgIENIQVJfQ09NTUE6IDQ0LFxuICAgICAgQ0hBUl9ET1Q6IDQ2LFxuICAgICAgQ0hBUl9ET1VCTEVfUVVPVEU6IDM0LFxuICAgICAgQ0hBUl9FUVVBTDogNjEsXG4gICAgICBDSEFSX0VYQ0xBTUFUSU9OX01BUks6IDMzLFxuICAgICAgQ0hBUl9GT1JNX0ZFRUQ6IDEyLFxuICAgICAgQ0hBUl9GT1JXQVJEX1NMQVNIOiA0NyxcbiAgICAgIENIQVJfR1JBVkVfQUNDRU5UOiA5NixcbiAgICAgIENIQVJfSEFTSDogMzUsXG4gICAgICBDSEFSX0hZUEhFTl9NSU5VUzogNDUsXG4gICAgICBDSEFSX0xFRlRfQU5HTEVfQlJBQ0tFVDogNjAsXG4gICAgICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0U6IDEyMyxcbiAgICAgIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVDogOTEsXG4gICAgICBDSEFSX0xJTkVfRkVFRDogMTAsXG4gICAgICBDSEFSX05PX0JSRUFLX1NQQUNFOiAxNjAsXG4gICAgICBDSEFSX1BFUkNFTlQ6IDM3LFxuICAgICAgQ0hBUl9QTFVTOiA0MyxcbiAgICAgIENIQVJfUVVFU1RJT05fTUFSSzogNjMsXG4gICAgICBDSEFSX1JJR0hUX0FOR0xFX0JSQUNLRVQ6IDYyLFxuICAgICAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogMTI1LFxuICAgICAgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVDogOTMsXG4gICAgICBDSEFSX1NFTUlDT0xPTjogNTksXG4gICAgICBDSEFSX1NJTkdMRV9RVU9URTogMzksXG4gICAgICBDSEFSX1NQQUNFOiAzMixcbiAgICAgIENIQVJfVEFCOiA5LFxuICAgICAgQ0hBUl9VTkRFUlNDT1JFOiA5NSxcbiAgICAgIENIQVJfVkVSVElDQUxfTElORTogMTI0LFxuICAgICAgQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0U6IDY1Mjc5LFxuICAgICAgU0VQOiBwYXRoLnNlcCxcbiAgICAgIGV4dGdsb2JDaGFycyhjaGFycykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFwiIVwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm5lZ2F0ZVwiLFxuICAgICAgICAgICAgb3BlbjogXCIoPzooPyEoPzpcIixcbiAgICAgICAgICAgIGNsb3NlOiBgKSkke2NoYXJzLlNUQVJ9KWBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiP1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcInFtYXJrXCIsXG4gICAgICAgICAgICBvcGVuOiBcIig/OlwiLFxuICAgICAgICAgICAgY2xvc2U6IFwiKT9cIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIrXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwicGx1c1wiLFxuICAgICAgICAgICAgb3BlbjogXCIoPzpcIixcbiAgICAgICAgICAgIGNsb3NlOiBcIikrXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiKlwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0YXJcIixcbiAgICAgICAgICAgIG9wZW46IFwiKD86XCIsXG4gICAgICAgICAgICBjbG9zZTogXCIpKlwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIkBcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJhdFwiLFxuICAgICAgICAgICAgb3BlbjogXCIoPzpcIixcbiAgICAgICAgICAgIGNsb3NlOiBcIilcIlxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBnbG9iQ2hhcnMod2luMzIpIHtcbiAgICAgICAgcmV0dXJuIHdpbjMyID09PSB0cnVlID8gV0lORE9XU19DSEFSUyA6IFBPU0lYX0NIQVJTO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdXRpbHMzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3V0aWxzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciB3aW4zMiA9IHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIjtcbiAgICB2YXIge1xuICAgICAgUkVHRVhfQkFDS1NMQVNILFxuICAgICAgUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCxcbiAgICAgIFJFR0VYX1NQRUNJQUxfQ0hBUlMsXG4gICAgICBSRUdFWF9TUEVDSUFMX0NIQVJTX0dMT0JBTFxuICAgIH0gPSByZXF1aXJlX2NvbnN0YW50czMoKTtcbiAgICBleHBvcnRzMi5pc09iamVjdCA9ICh2YWwpID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbCk7XG4gICAgZXhwb3J0czIuaGFzUmVnZXhDaGFycyA9IChzdHIpID0+IFJFR0VYX1NQRUNJQUxfQ0hBUlMudGVzdChzdHIpO1xuICAgIGV4cG9ydHMyLmlzUmVnZXhDaGFyID0gKHN0cikgPT4gc3RyLmxlbmd0aCA9PT0gMSAmJiBleHBvcnRzMi5oYXNSZWdleENoYXJzKHN0cik7XG4gICAgZXhwb3J0czIuZXNjYXBlUmVnZXggPSAoc3RyKSA9PiBzdHIucmVwbGFjZShSRUdFWF9TUEVDSUFMX0NIQVJTX0dMT0JBTCwgXCJcXFxcJDFcIik7XG4gICAgZXhwb3J0czIudG9Qb3NpeFNsYXNoZXMgPSAoc3RyKSA9PiBzdHIucmVwbGFjZShSRUdFWF9CQUNLU0xBU0gsIFwiL1wiKTtcbiAgICBleHBvcnRzMi5yZW1vdmVCYWNrc2xhc2hlcyA9IChzdHIpID0+IHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShSRUdFWF9SRU1PVkVfQkFDS1NMQVNILCAobWF0Y2gpID0+IHtcbiAgICAgICAgcmV0dXJuIG1hdGNoID09PSBcIlxcXFxcIiA/IFwiXCIgOiBtYXRjaDtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgZXhwb3J0czIuc3VwcG9ydHNMb29rYmVoaW5kcyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHNlZ3MgPSBwcm9jZXNzLnZlcnNpb24uc2xpY2UoMSkuc3BsaXQoXCIuXCIpLm1hcChOdW1iZXIpO1xuICAgICAgaWYgKHNlZ3MubGVuZ3RoID09PSAzICYmIHNlZ3NbMF0gPj0gOSB8fCBzZWdzWzBdID09PSA4ICYmIHNlZ3NbMV0gPj0gMTApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBleHBvcnRzMi5pc1dpbmRvd3MgPSAob3B0aW9ucykgPT4ge1xuICAgICAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMud2luZG93cyA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMud2luZG93cztcbiAgICAgIH1cbiAgICAgIHJldHVybiB3aW4zMiA9PT0gdHJ1ZSB8fCBwYXRoLnNlcCA9PT0gXCJcXFxcXCI7XG4gICAgfTtcbiAgICBleHBvcnRzMi5lc2NhcGVMYXN0ID0gKGlucHV0LCBjaGFyLCBsYXN0SWR4KSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBpbnB1dC5sYXN0SW5kZXhPZihjaGFyLCBsYXN0SWR4KTtcbiAgICAgIGlmIChpZHggPT09IC0xKVxuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICBpZiAoaW5wdXRbaWR4IC0gMV0gPT09IFwiXFxcXFwiKVxuICAgICAgICByZXR1cm4gZXhwb3J0czIuZXNjYXBlTGFzdChpbnB1dCwgY2hhciwgaWR4IC0gMSk7XG4gICAgICByZXR1cm4gYCR7aW5wdXQuc2xpY2UoMCwgaWR4KX1cXFxcJHtpbnB1dC5zbGljZShpZHgpfWA7XG4gICAgfTtcbiAgICBleHBvcnRzMi5yZW1vdmVQcmVmaXggPSAoaW5wdXQsIHN0YXRlID0ge30pID0+IHtcbiAgICAgIGxldCBvdXRwdXQgPSBpbnB1dDtcbiAgICAgIGlmIChvdXRwdXQuc3RhcnRzV2l0aChcIi4vXCIpKSB7XG4gICAgICAgIG91dHB1dCA9IG91dHB1dC5zbGljZSgyKTtcbiAgICAgICAgc3RhdGUucHJlZml4ID0gXCIuL1wiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9O1xuICAgIGV4cG9ydHMyLndyYXBPdXRwdXQgPSAoaW5wdXQsIHN0YXRlID0ge30sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgY29uc3QgcHJlcGVuZCA9IG9wdGlvbnMuY29udGFpbnMgPyBcIlwiIDogXCJeXCI7XG4gICAgICBjb25zdCBhcHBlbmQgPSBvcHRpb25zLmNvbnRhaW5zID8gXCJcIiA6IFwiJFwiO1xuICAgICAgbGV0IG91dHB1dCA9IGAke3ByZXBlbmR9KD86JHtpbnB1dH0pJHthcHBlbmR9YDtcbiAgICAgIGlmIChzdGF0ZS5uZWdhdGVkID09PSB0cnVlKSB7XG4gICAgICAgIG91dHB1dCA9IGAoPzpeKD8hJHtvdXRwdXR9KS4qJClgO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3NjYW4gPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvc2Nhbi5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHV0aWxzID0gcmVxdWlyZV91dGlsczMoKTtcbiAgICB2YXIge1xuICAgICAgQ0hBUl9BU1RFUklTSyxcbiAgICAgIENIQVJfQVQsXG4gICAgICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICAgICAgQ0hBUl9DT01NQSxcbiAgICAgIENIQVJfRE9ULFxuICAgICAgQ0hBUl9FWENMQU1BVElPTl9NQVJLLFxuICAgICAgQ0hBUl9GT1JXQVJEX1NMQVNILFxuICAgICAgQ0hBUl9MRUZUX0NVUkxZX0JSQUNFLFxuICAgICAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTLFxuICAgICAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULFxuICAgICAgQ0hBUl9QTFVTLFxuICAgICAgQ0hBUl9RVUVTVElPTl9NQVJLLFxuICAgICAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSxcbiAgICAgIENIQVJfUklHSFRfUEFSRU5USEVTRVMsXG4gICAgICBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUXG4gICAgfSA9IHJlcXVpcmVfY29uc3RhbnRzMygpO1xuICAgIHZhciBpc1BhdGhTZXBhcmF0b3IgPSAoY29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCB8fCBjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIO1xuICAgIH07XG4gICAgdmFyIGRlcHRoID0gKHRva2VuKSA9PiB7XG4gICAgICBpZiAodG9rZW4uaXNQcmVmaXggIT09IHRydWUpIHtcbiAgICAgICAgdG9rZW4uZGVwdGggPSB0b2tlbi5pc0dsb2JzdGFyID8gSW5maW5pdHkgOiAxO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIHNjYW4gPSAoaW5wdXQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgY29uc3QgbGVuZ3RoID0gaW5wdXQubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IHNjYW5Ub0VuZCA9IG9wdHMucGFydHMgPT09IHRydWUgfHwgb3B0cy5zY2FuVG9FbmQgPT09IHRydWU7XG4gICAgICBjb25zdCBzbGFzaGVzID0gW107XG4gICAgICBjb25zdCB0b2tlbnMgPSBbXTtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBsZXQgc3RyID0gaW5wdXQ7XG4gICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICAgIGxldCBpc0JyYWNlID0gZmFsc2U7XG4gICAgICBsZXQgaXNCcmFja2V0ID0gZmFsc2U7XG4gICAgICBsZXQgaXNHbG9iID0gZmFsc2U7XG4gICAgICBsZXQgaXNFeHRnbG9iID0gZmFsc2U7XG4gICAgICBsZXQgaXNHbG9ic3RhciA9IGZhbHNlO1xuICAgICAgbGV0IGJyYWNlRXNjYXBlZCA9IGZhbHNlO1xuICAgICAgbGV0IGJhY2tzbGFzaGVzID0gZmFsc2U7XG4gICAgICBsZXQgbmVnYXRlZCA9IGZhbHNlO1xuICAgICAgbGV0IG5lZ2F0ZWRFeHRnbG9iID0gZmFsc2U7XG4gICAgICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcbiAgICAgIGxldCBicmFjZXMgPSAwO1xuICAgICAgbGV0IHByZXY7XG4gICAgICBsZXQgY29kZTtcbiAgICAgIGxldCB0b2tlbiA9IHtcbiAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgIGRlcHRoOiAwLFxuICAgICAgICBpc0dsb2I6IGZhbHNlXG4gICAgICB9O1xuICAgICAgY29uc3QgZW9zID0gKCkgPT4gaW5kZXggPj0gbGVuZ3RoO1xuICAgICAgY29uc3QgcGVlayA9ICgpID0+IHN0ci5jaGFyQ29kZUF0KGluZGV4ICsgMSk7XG4gICAgICBjb25zdCBhZHZhbmNlID0gKCkgPT4ge1xuICAgICAgICBwcmV2ID0gY29kZTtcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KCsraW5kZXgpO1xuICAgICAgfTtcbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICBsZXQgbmV4dDtcbiAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgICAgICAgIGJyYWNlRXNjYXBlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChicmFjZUVzY2FwZWQgPT09IHRydWUgfHwgY29kZSA9PT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNFKSB7XG4gICAgICAgICAgYnJhY2VzKys7XG4gICAgICAgICAgd2hpbGUgKGVvcygpICE9PSB0cnVlICYmIChjb2RlID0gYWR2YW5jZSgpKSkge1xuICAgICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgICAgIGFkdmFuY2UoKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNFKSB7XG4gICAgICAgICAgICAgIGJyYWNlcysrO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChicmFjZUVzY2FwZWQgIT09IHRydWUgJiYgY29kZSA9PT0gQ0hBUl9ET1QgJiYgKGNvZGUgPSBhZHZhbmNlKCkpID09PSBDSEFSX0RPVCkge1xuICAgICAgICAgICAgICBpc0JyYWNlID0gdG9rZW4uaXNCcmFjZSA9IHRydWU7XG4gICAgICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJyYWNlRXNjYXBlZCAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0NPTU1BKSB7XG4gICAgICAgICAgICAgIGlzQnJhY2UgPSB0b2tlbi5pc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICAgICAgICBicmFjZXMtLTtcbiAgICAgICAgICAgICAgaWYgKGJyYWNlcyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGJyYWNlRXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzQnJhY2UgPSB0b2tlbi5pc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICBzbGFzaGVzLnB1c2goaW5kZXgpO1xuICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICB0b2tlbiA9IHtcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgICAgICBpc0dsb2I6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoZmluaXNoZWQgPT09IHRydWUpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBpZiAocHJldiA9PT0gQ0hBUl9ET1QgJiYgaW5kZXggPT09IHN0YXJ0ICsgMSkge1xuICAgICAgICAgICAgc3RhcnQgKz0gMjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdHMubm9leHQgIT09IHRydWUpIHtcbiAgICAgICAgICBjb25zdCBpc0V4dGdsb2JDaGFyID0gY29kZSA9PT0gQ0hBUl9QTFVTIHx8IGNvZGUgPT09IENIQVJfQVQgfHwgY29kZSA9PT0gQ0hBUl9BU1RFUklTSyB8fCBjb2RlID09PSBDSEFSX1FVRVNUSU9OX01BUksgfHwgY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLO1xuICAgICAgICAgIGlmIChpc0V4dGdsb2JDaGFyID09PSB0cnVlICYmIHBlZWsoKSA9PT0gQ0hBUl9MRUZUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICAgICAgaXNFeHRnbG9iID0gdG9rZW4uaXNFeHRnbG9iID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0VYQ0xBTUFUSU9OX01BUksgJiYgaW5kZXggPT09IHN0YXJ0KSB7XG4gICAgICAgICAgICAgIG5lZ2F0ZWRFeHRnbG9iID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgd2hpbGUgKGVvcygpICE9PSB0cnVlICYmIChjb2RlID0gYWR2YW5jZSgpKSkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGNvZGUgPSBhZHZhbmNlKCk7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfQVNURVJJU0spIHtcbiAgICAgICAgICBpZiAocHJldiA9PT0gQ0hBUl9BU1RFUklTSylcbiAgICAgICAgICAgIGlzR2xvYnN0YXIgPSB0b2tlbi5pc0dsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfUVVFU1RJT05fTUFSSykge1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgd2hpbGUgKGVvcygpICE9PSB0cnVlICYmIChuZXh0ID0gYWR2YW5jZSgpKSkge1xuICAgICAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgICAgIGFkdmFuY2UoKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgICAgICBpc0JyYWNrZXQgPSB0b2tlbi5pc0JyYWNrZXQgPSB0cnVlO1xuICAgICAgICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdHMubm9uZWdhdGUgIT09IHRydWUgJiYgY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLICYmIGluZGV4ID09PSBzdGFydCkge1xuICAgICAgICAgIG5lZ2F0ZWQgPSB0b2tlbi5uZWdhdGVkID0gdHJ1ZTtcbiAgICAgICAgICBzdGFydCsrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLm5vcGFyZW4gIT09IHRydWUgJiYgY29kZSA9PT0gQ0hBUl9MRUZUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzR2xvYiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLm5vZXh0ID09PSB0cnVlKSB7XG4gICAgICAgIGlzRXh0Z2xvYiA9IGZhbHNlO1xuICAgICAgICBpc0dsb2IgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGxldCBiYXNlID0gc3RyO1xuICAgICAgbGV0IHByZWZpeCA9IFwiXCI7XG4gICAgICBsZXQgZ2xvYiA9IFwiXCI7XG4gICAgICBpZiAoc3RhcnQgPiAwKSB7XG4gICAgICAgIHByZWZpeCA9IHN0ci5zbGljZSgwLCBzdGFydCk7XG4gICAgICAgIHN0ciA9IHN0ci5zbGljZShzdGFydCk7XG4gICAgICAgIGxhc3RJbmRleCAtPSBzdGFydDtcbiAgICAgIH1cbiAgICAgIGlmIChiYXNlICYmIGlzR2xvYiA9PT0gdHJ1ZSAmJiBsYXN0SW5kZXggPiAwKSB7XG4gICAgICAgIGJhc2UgPSBzdHIuc2xpY2UoMCwgbGFzdEluZGV4KTtcbiAgICAgICAgZ2xvYiA9IHN0ci5zbGljZShsYXN0SW5kZXgpO1xuICAgICAgfSBlbHNlIGlmIChpc0dsb2IgPT09IHRydWUpIHtcbiAgICAgICAgYmFzZSA9IFwiXCI7XG4gICAgICAgIGdsb2IgPSBzdHI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlID0gc3RyO1xuICAgICAgfVxuICAgICAgaWYgKGJhc2UgJiYgYmFzZSAhPT0gXCJcIiAmJiBiYXNlICE9PSBcIi9cIiAmJiBiYXNlICE9PSBzdHIpIHtcbiAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihiYXNlLmNoYXJDb2RlQXQoYmFzZS5sZW5ndGggLSAxKSkpIHtcbiAgICAgICAgICBiYXNlID0gYmFzZS5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgICAgIGlmIChnbG9iKVxuICAgICAgICAgIGdsb2IgPSB1dGlscy5yZW1vdmVCYWNrc2xhc2hlcyhnbG9iKTtcbiAgICAgICAgaWYgKGJhc2UgJiYgYmFja3NsYXNoZXMgPT09IHRydWUpIHtcbiAgICAgICAgICBiYXNlID0gdXRpbHMucmVtb3ZlQmFja3NsYXNoZXMoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICBwcmVmaXgsXG4gICAgICAgIGlucHV0LFxuICAgICAgICBzdGFydCxcbiAgICAgICAgYmFzZSxcbiAgICAgICAgZ2xvYixcbiAgICAgICAgaXNCcmFjZSxcbiAgICAgICAgaXNCcmFja2V0LFxuICAgICAgICBpc0dsb2IsXG4gICAgICAgIGlzRXh0Z2xvYixcbiAgICAgICAgaXNHbG9ic3RhcixcbiAgICAgICAgbmVnYXRlZCxcbiAgICAgICAgbmVnYXRlZEV4dGdsb2JcbiAgICAgIH07XG4gICAgICBpZiAob3B0cy50b2tlbnMgPT09IHRydWUpIHtcbiAgICAgICAgc3RhdGUubWF4RGVwdGggPSAwO1xuICAgICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS50b2tlbnMgPSB0b2tlbnM7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5wYXJ0cyA9PT0gdHJ1ZSB8fCBvcHRzLnRva2VucyA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgcHJldkluZGV4O1xuICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBzbGFzaGVzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgICBjb25zdCBuID0gcHJldkluZGV4ID8gcHJldkluZGV4ICsgMSA6IHN0YXJ0O1xuICAgICAgICAgIGNvbnN0IGkgPSBzbGFzaGVzW2lkeF07XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC5zbGljZShuLCBpKTtcbiAgICAgICAgICBpZiAob3B0cy50b2tlbnMpIHtcbiAgICAgICAgICAgIGlmIChpZHggPT09IDAgJiYgc3RhcnQgIT09IDApIHtcbiAgICAgICAgICAgICAgdG9rZW5zW2lkeF0uaXNQcmVmaXggPSB0cnVlO1xuICAgICAgICAgICAgICB0b2tlbnNbaWR4XS52YWx1ZSA9IHByZWZpeDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRva2Vuc1tpZHhdLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZXB0aCh0b2tlbnNbaWR4XSk7XG4gICAgICAgICAgICBzdGF0ZS5tYXhEZXB0aCArPSB0b2tlbnNbaWR4XS5kZXB0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlkeCAhPT0gMCB8fCB2YWx1ZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgcGFydHMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByZXZJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZXZJbmRleCAmJiBwcmV2SW5kZXggKyAxIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC5zbGljZShwcmV2SW5kZXggKyAxKTtcbiAgICAgICAgICBwYXJ0cy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICBpZiAob3B0cy50b2tlbnMpIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIGRlcHRoKHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgc3RhdGUubWF4RGVwdGggKz0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXS5kZXB0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUuc2xhc2hlcyA9IHNsYXNoZXM7XG4gICAgICAgIHN0YXRlLnBhcnRzID0gcGFydHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBzY2FuO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcGljb21hdGNoL2xpYi9wYXJzZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGNvbnN0YW50cyA9IHJlcXVpcmVfY29uc3RhbnRzMygpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHMzKCk7XG4gICAgdmFyIHtcbiAgICAgIE1BWF9MRU5HVEgsXG4gICAgICBQT1NJWF9SRUdFWF9TT1VSQ0UsXG4gICAgICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUyxcbiAgICAgIFJFR0VYX1NQRUNJQUxfQ0hBUlNfQkFDS1JFRixcbiAgICAgIFJFUExBQ0VNRU5UU1xuICAgIH0gPSBjb25zdGFudHM7XG4gICAgdmFyIGV4cGFuZFJhbmdlID0gKGFyZ3MsIG9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5leHBhbmRSYW5nZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmV4cGFuZFJhbmdlKC4uLmFyZ3MsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgYXJncy5zb3J0KCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGBbJHthcmdzLmpvaW4oXCItXCIpfV1gO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICByZXR1cm4gYXJncy5tYXAoKHYpID0+IHV0aWxzLmVzY2FwZVJlZ2V4KHYpKS5qb2luKFwiLi5cIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICB2YXIgc3ludGF4RXJyb3IgPSAodHlwZSwgY2hhcikgPT4ge1xuICAgICAgcmV0dXJuIGBNaXNzaW5nICR7dHlwZX06IFwiJHtjaGFyfVwiIC0gdXNlIFwiXFxcXFxcXFwke2NoYXJ9XCIgdG8gbWF0Y2ggbGl0ZXJhbCBjaGFyYWN0ZXJzYDtcbiAgICB9O1xuICAgIHZhciBwYXJzZSA9IChpbnB1dCwgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBzdHJpbmdcIik7XG4gICAgICB9XG4gICAgICBpbnB1dCA9IFJFUExBQ0VNRU5UU1tpbnB1dF0gfHwgaW5wdXQ7XG4gICAgICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7XG4gICAgICBjb25zdCBtYXggPSB0eXBlb2Ygb3B0cy5tYXhMZW5ndGggPT09IFwibnVtYmVyXCIgPyBNYXRoLm1pbihNQVhfTEVOR1RILCBvcHRzLm1heExlbmd0aCkgOiBNQVhfTEVOR1RIO1xuICAgICAgbGV0IGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgICAgIGlmIChsZW4gPiBtYXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnB1dCBsZW5ndGg6ICR7bGVufSwgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoOiAke21heH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJvcyA9IHtcbiAgICAgICAgdHlwZTogXCJib3NcIixcbiAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgIG91dHB1dDogb3B0cy5wcmVwZW5kIHx8IFwiXCJcbiAgICAgIH07XG4gICAgICBjb25zdCB0b2tlbnMgPSBbYm9zXTtcbiAgICAgIGNvbnN0IGNhcHR1cmUgPSBvcHRzLmNhcHR1cmUgPyBcIlwiIDogXCI/OlwiO1xuICAgICAgY29uc3Qgd2luMzIgPSB1dGlscy5pc1dpbmRvd3Mob3B0aW9ucyk7XG4gICAgICBjb25zdCBQTEFURk9STV9DSEFSUyA9IGNvbnN0YW50cy5nbG9iQ2hhcnMod2luMzIpO1xuICAgICAgY29uc3QgRVhUR0xPQl9DSEFSUyA9IGNvbnN0YW50cy5leHRnbG9iQ2hhcnMoUExBVEZPUk1fQ0hBUlMpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBET1RfTElURVJBTCxcbiAgICAgICAgUExVU19MSVRFUkFMLFxuICAgICAgICBTTEFTSF9MSVRFUkFMLFxuICAgICAgICBPTkVfQ0hBUixcbiAgICAgICAgRE9UU19TTEFTSCxcbiAgICAgICAgTk9fRE9ULFxuICAgICAgICBOT19ET1RfU0xBU0gsXG4gICAgICAgIE5PX0RPVFNfU0xBU0gsXG4gICAgICAgIFFNQVJLLFxuICAgICAgICBRTUFSS19OT19ET1QsXG4gICAgICAgIFNUQVIsXG4gICAgICAgIFNUQVJUX0FOQ0hPUlxuICAgICAgfSA9IFBMQVRGT1JNX0NIQVJTO1xuICAgICAgY29uc3QgZ2xvYnN0YXIgPSAob3B0czIpID0+IHtcbiAgICAgICAgcmV0dXJuIGAoJHtjYXB0dXJlfSg/Oig/ISR7U1RBUlRfQU5DSE9SfSR7b3B0czIuZG90ID8gRE9UU19TTEFTSCA6IERPVF9MSVRFUkFMfSkuKSo/KWA7XG4gICAgICB9O1xuICAgICAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/IFwiXCIgOiBOT19ET1Q7XG4gICAgICBjb25zdCBxbWFya05vRG90ID0gb3B0cy5kb3QgPyBRTUFSSyA6IFFNQVJLX05PX0RPVDtcbiAgICAgIGxldCBzdGFyID0gb3B0cy5iYXNoID09PSB0cnVlID8gZ2xvYnN0YXIob3B0cykgOiBTVEFSO1xuICAgICAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgICAgICBzdGFyID0gYCgke3N0YXJ9KWA7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIG9wdHMubm9leHQgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgIG9wdHMubm9leHRnbG9iID0gb3B0cy5ub2V4dDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICBpbnB1dCxcbiAgICAgICAgaW5kZXg6IC0xLFxuICAgICAgICBzdGFydDogMCxcbiAgICAgICAgZG90OiBvcHRzLmRvdCA9PT0gdHJ1ZSxcbiAgICAgICAgY29uc3VtZWQ6IFwiXCIsXG4gICAgICAgIG91dHB1dDogXCJcIixcbiAgICAgICAgcHJlZml4OiBcIlwiLFxuICAgICAgICBiYWNrdHJhY2s6IGZhbHNlLFxuICAgICAgICBuZWdhdGVkOiBmYWxzZSxcbiAgICAgICAgYnJhY2tldHM6IDAsXG4gICAgICAgIGJyYWNlczogMCxcbiAgICAgICAgcGFyZW5zOiAwLFxuICAgICAgICBxdW90ZXM6IDAsXG4gICAgICAgIGdsb2JzdGFyOiBmYWxzZSxcbiAgICAgICAgdG9rZW5zXG4gICAgICB9O1xuICAgICAgaW5wdXQgPSB1dGlscy5yZW1vdmVQcmVmaXgoaW5wdXQsIHN0YXRlKTtcbiAgICAgIGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgICAgIGNvbnN0IGV4dGdsb2JzID0gW107XG4gICAgICBjb25zdCBicmFjZXMgPSBbXTtcbiAgICAgIGNvbnN0IHN0YWNrID0gW107XG4gICAgICBsZXQgcHJldiA9IGJvcztcbiAgICAgIGxldCB2YWx1ZTtcbiAgICAgIGNvbnN0IGVvcyA9ICgpID0+IHN0YXRlLmluZGV4ID09PSBsZW4gLSAxO1xuICAgICAgY29uc3QgcGVlayA9IHN0YXRlLnBlZWsgPSAobiA9IDEpID0+IGlucHV0W3N0YXRlLmluZGV4ICsgbl07XG4gICAgICBjb25zdCBhZHZhbmNlID0gc3RhdGUuYWR2YW5jZSA9ICgpID0+IGlucHV0Wysrc3RhdGUuaW5kZXhdIHx8IFwiXCI7XG4gICAgICBjb25zdCByZW1haW5pbmcgPSAoKSA9PiBpbnB1dC5zbGljZShzdGF0ZS5pbmRleCArIDEpO1xuICAgICAgY29uc3QgY29uc3VtZSA9ICh2YWx1ZTIgPSBcIlwiLCBudW0gPSAwKSA9PiB7XG4gICAgICAgIHN0YXRlLmNvbnN1bWVkICs9IHZhbHVlMjtcbiAgICAgICAgc3RhdGUuaW5kZXggKz0gbnVtO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGFwcGVuZCA9ICh0b2tlbikgPT4ge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gdG9rZW4ub3V0cHV0ICE9IG51bGwgPyB0b2tlbi5vdXRwdXQgOiB0b2tlbi52YWx1ZTtcbiAgICAgICAgY29uc3VtZSh0b2tlbi52YWx1ZSk7XG4gICAgICB9O1xuICAgICAgY29uc3QgbmVnYXRlID0gKCkgPT4ge1xuICAgICAgICBsZXQgY291bnQgPSAxO1xuICAgICAgICB3aGlsZSAocGVlaygpID09PSBcIiFcIiAmJiAocGVlaygyKSAhPT0gXCIoXCIgfHwgcGVlaygzKSA9PT0gXCI/XCIpKSB7XG4gICAgICAgICAgYWR2YW5jZSgpO1xuICAgICAgICAgIHN0YXRlLnN0YXJ0Kys7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY291bnQgJSAyID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm5lZ2F0ZWQgPSB0cnVlO1xuICAgICAgICBzdGF0ZS5zdGFydCsrO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgICBjb25zdCBpbmNyZW1lbnQgPSAodHlwZSkgPT4ge1xuICAgICAgICBzdGF0ZVt0eXBlXSsrO1xuICAgICAgICBzdGFjay5wdXNoKHR5cGUpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGRlY3JlbWVudCA9ICh0eXBlKSA9PiB7XG4gICAgICAgIHN0YXRlW3R5cGVdLS07XG4gICAgICAgIHN0YWNrLnBvcCgpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHB1c2ggPSAodG9rKSA9PiB7XG4gICAgICAgIGlmIChwcmV2LnR5cGUgPT09IFwiZ2xvYnN0YXJcIikge1xuICAgICAgICAgIGNvbnN0IGlzQnJhY2UgPSBzdGF0ZS5icmFjZXMgPiAwICYmICh0b2sudHlwZSA9PT0gXCJjb21tYVwiIHx8IHRvay50eXBlID09PSBcImJyYWNlXCIpO1xuICAgICAgICAgIGNvbnN0IGlzRXh0Z2xvYiA9IHRvay5leHRnbG9iID09PSB0cnVlIHx8IGV4dGdsb2JzLmxlbmd0aCAmJiAodG9rLnR5cGUgPT09IFwicGlwZVwiIHx8IHRvay50eXBlID09PSBcInBhcmVuXCIpO1xuICAgICAgICAgIGlmICh0b2sudHlwZSAhPT0gXCJzbGFzaFwiICYmIHRvay50eXBlICE9PSBcInBhcmVuXCIgJiYgIWlzQnJhY2UgJiYgIWlzRXh0Z2xvYikge1xuICAgICAgICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC1wcmV2Lm91dHB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgcHJldi50eXBlID0gXCJzdGFyXCI7XG4gICAgICAgICAgICBwcmV2LnZhbHVlID0gXCIqXCI7XG4gICAgICAgICAgICBwcmV2Lm91dHB1dCA9IHN0YXI7XG4gICAgICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi5vdXRwdXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChleHRnbG9icy5sZW5ndGggJiYgdG9rLnR5cGUgIT09IFwicGFyZW5cIikge1xuICAgICAgICAgIGV4dGdsb2JzW2V4dGdsb2JzLmxlbmd0aCAtIDFdLmlubmVyICs9IHRvay52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rLnZhbHVlIHx8IHRvay5vdXRwdXQpXG4gICAgICAgICAgYXBwZW5kKHRvayk7XG4gICAgICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gXCJ0ZXh0XCIgJiYgdG9rLnR5cGUgPT09IFwidGV4dFwiKSB7XG4gICAgICAgICAgcHJldi52YWx1ZSArPSB0b2sudmFsdWU7XG4gICAgICAgICAgcHJldi5vdXRwdXQgPSAocHJldi5vdXRwdXQgfHwgXCJcIikgKyB0b2sudmFsdWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRvay5wcmV2ID0gcHJldjtcbiAgICAgICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICAgICAgcHJldiA9IHRvaztcbiAgICAgIH07XG4gICAgICBjb25zdCBleHRnbG9iT3BlbiA9ICh0eXBlLCB2YWx1ZTIpID0+IHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIEVYVEdMT0JfQ0hBUlNbdmFsdWUyXSksIHt9LCB7XG4gICAgICAgICAgY29uZGl0aW9uczogMSxcbiAgICAgICAgICBpbm5lcjogXCJcIlxuICAgICAgICB9KTtcbiAgICAgICAgdG9rZW4ucHJldiA9IHByZXY7XG4gICAgICAgIHRva2VuLnBhcmVucyA9IHN0YXRlLnBhcmVucztcbiAgICAgICAgdG9rZW4ub3V0cHV0ID0gc3RhdGUub3V0cHV0O1xuICAgICAgICBjb25zdCBvdXRwdXQgPSAob3B0cy5jYXB0dXJlID8gXCIoXCIgOiBcIlwiKSArIHRva2VuLm9wZW47XG4gICAgICAgIGluY3JlbWVudChcInBhcmVuc1wiKTtcbiAgICAgICAgcHVzaCh7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUyLFxuICAgICAgICAgIG91dHB1dDogc3RhdGUub3V0cHV0ID8gXCJcIiA6IE9ORV9DSEFSXG4gICAgICAgIH0pO1xuICAgICAgICBwdXNoKHtcbiAgICAgICAgICB0eXBlOiBcInBhcmVuXCIsXG4gICAgICAgICAgZXh0Z2xvYjogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogYWR2YW5jZSgpLFxuICAgICAgICAgIG91dHB1dFxuICAgICAgICB9KTtcbiAgICAgICAgZXh0Z2xvYnMucHVzaCh0b2tlbik7XG4gICAgICB9O1xuICAgICAgY29uc3QgZXh0Z2xvYkNsb3NlID0gKHRva2VuKSA9PiB7XG4gICAgICAgIGxldCBvdXRwdXQgPSB0b2tlbi5jbG9zZSArIChvcHRzLmNhcHR1cmUgPyBcIilcIiA6IFwiXCIpO1xuICAgICAgICBsZXQgcmVzdDtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFwibmVnYXRlXCIpIHtcbiAgICAgICAgICBsZXQgZXh0Z2xvYlN0YXIgPSBzdGFyO1xuICAgICAgICAgIGlmICh0b2tlbi5pbm5lciAmJiB0b2tlbi5pbm5lci5sZW5ndGggPiAxICYmIHRva2VuLmlubmVyLmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICAgICAgZXh0Z2xvYlN0YXIgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4dGdsb2JTdGFyICE9PSBzdGFyIHx8IGVvcygpIHx8IC9eXFwpKyQvLnRlc3QocmVtYWluaW5nKCkpKSB7XG4gICAgICAgICAgICBvdXRwdXQgPSB0b2tlbi5jbG9zZSA9IGApJCkpJHtleHRnbG9iU3Rhcn1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodG9rZW4uaW5uZXIuaW5jbHVkZXMoXCIqXCIpICYmIChyZXN0ID0gcmVtYWluaW5nKCkpICYmIC9eXFwuW15cXFxcLy5dKyQvLnRlc3QocmVzdCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBwYXJzZShyZXN0LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICAgICAgICBmYXN0cGF0aHM6IGZhbHNlXG4gICAgICAgICAgICB9KSkub3V0cHV0O1xuICAgICAgICAgICAgb3V0cHV0ID0gdG9rZW4uY2xvc2UgPSBgKSR7ZXhwcmVzc2lvbn0pJHtleHRnbG9iU3Rhcn0pYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRva2VuLnByZXYudHlwZSA9PT0gXCJib3NcIikge1xuICAgICAgICAgICAgc3RhdGUubmVnYXRlZEV4dGdsb2IgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwdXNoKHtcbiAgICAgICAgICB0eXBlOiBcInBhcmVuXCIsXG4gICAgICAgICAgZXh0Z2xvYjogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBvdXRwdXRcbiAgICAgICAgfSk7XG4gICAgICAgIGRlY3JlbWVudChcInBhcmVuc1wiKTtcbiAgICAgIH07XG4gICAgICBpZiAob3B0cy5mYXN0cGF0aHMgIT09IGZhbHNlICYmICEvKF5bKiFdfFsvKClbXFxde31cIl0pLy50ZXN0KGlucHV0KSkge1xuICAgICAgICBsZXQgYmFja3NsYXNoZXMgPSBmYWxzZTtcbiAgICAgICAgbGV0IG91dHB1dCA9IGlucHV0LnJlcGxhY2UoUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGLCAobSwgZXNjLCBjaGFycywgZmlyc3QsIHJlc3QsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGZpcnN0ID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIG07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaXJzdCA9PT0gXCI/XCIpIHtcbiAgICAgICAgICAgIGlmIChlc2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVzYyArIGZpcnN0ICsgKHJlc3QgPyBRTUFSSy5yZXBlYXQocmVzdC5sZW5ndGgpIDogXCJcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHFtYXJrTm9Eb3QgKyAocmVzdCA/IFFNQVJLLnJlcGVhdChyZXN0Lmxlbmd0aCkgOiBcIlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBRTUFSSy5yZXBlYXQoY2hhcnMubGVuZ3RoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpcnN0ID09PSBcIi5cIikge1xuICAgICAgICAgICAgcmV0dXJuIERPVF9MSVRFUkFMLnJlcGVhdChjaGFycy5sZW5ndGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmlyc3QgPT09IFwiKlwiKSB7XG4gICAgICAgICAgICBpZiAoZXNjKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlc2MgKyBmaXJzdCArIChyZXN0ID8gc3RhciA6IFwiXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0YXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlc2MgPyBtIDogYFxcXFwke219YDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChiYWNrc2xhc2hlcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQucmVwbGFjZSgvXFxcXC9nLCBcIlwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoL1xcXFwrL2csIChtKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBtLmxlbmd0aCAlIDIgPT09IDAgPyBcIlxcXFxcXFxcXCIgOiBtID8gXCJcXFxcXCIgOiBcIlwiO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvdXRwdXQgPT09IGlucHV0ICYmIG9wdHMuY29udGFpbnMgPT09IHRydWUpIHtcbiAgICAgICAgICBzdGF0ZS5vdXRwdXQgPSBpbnB1dDtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUub3V0cHV0ID0gdXRpbHMud3JhcE91dHB1dChvdXRwdXQsIHN0YXRlLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCFlb3MoKSkge1xuICAgICAgICB2YWx1ZSA9IGFkdmFuY2UoKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcIlxcMFwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcIlxcXFxcIikge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBwZWVrKCk7XG4gICAgICAgICAgaWYgKG5leHQgPT09IFwiL1wiICYmIG9wdHMuYmFzaCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXh0ID09PSBcIi5cIiB8fCBuZXh0ID09PSBcIjtcIikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbmV4dCkge1xuICAgICAgICAgICAgdmFsdWUgKz0gXCJcXFxcXCI7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXFxcXCsvLmV4ZWMocmVtYWluaW5nKCkpO1xuICAgICAgICAgIGxldCBzbGFzaGVzID0gMDtcbiAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMF0ubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgc2xhc2hlcyA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgICAgIHN0YXRlLmluZGV4ICs9IHNsYXNoZXM7XG4gICAgICAgICAgICBpZiAoc2xhc2hlcyAlIDIgIT09IDApIHtcbiAgICAgICAgICAgICAgdmFsdWUgKz0gXCJcXFxcXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGFkdmFuY2UoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgKz0gYWR2YW5jZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUuYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5icmFja2V0cyA+IDAgJiYgKHZhbHVlICE9PSBcIl1cIiB8fCBwcmV2LnZhbHVlID09PSBcIltcIiB8fCBwcmV2LnZhbHVlID09PSBcIlteXCIpKSB7XG4gICAgICAgICAgaWYgKG9wdHMucG9zaXggIT09IGZhbHNlICYmIHZhbHVlID09PSBcIjpcIikge1xuICAgICAgICAgICAgY29uc3QgaW5uZXIgPSBwcmV2LnZhbHVlLnNsaWNlKDEpO1xuICAgICAgICAgICAgaWYgKGlubmVyLmluY2x1ZGVzKFwiW1wiKSkge1xuICAgICAgICAgICAgICBwcmV2LnBvc2l4ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaWYgKGlubmVyLmluY2x1ZGVzKFwiOlwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHByZXYudmFsdWUubGFzdEluZGV4T2YoXCJbXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZSA9IHByZXYudmFsdWUuc2xpY2UoMCwgaWR4KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN0MiA9IHByZXYudmFsdWUuc2xpY2UoaWR4ICsgMik7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9zaXggPSBQT1NJWF9SRUdFWF9TT1VSQ0VbcmVzdDJdO1xuICAgICAgICAgICAgICAgIGlmIChwb3NpeCkge1xuICAgICAgICAgICAgICAgICAgcHJldi52YWx1ZSA9IHByZSArIHBvc2l4O1xuICAgICAgICAgICAgICAgICAgc3RhdGUuYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGFkdmFuY2UoKTtcbiAgICAgICAgICAgICAgICAgIGlmICghYm9zLm91dHB1dCAmJiB0b2tlbnMuaW5kZXhPZihwcmV2KSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBib3Mub3V0cHV0ID0gT05FX0NIQVI7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbHVlID09PSBcIltcIiAmJiBwZWVrKCkgIT09IFwiOlwiIHx8IHZhbHVlID09PSBcIi1cIiAmJiBwZWVrKCkgPT09IFwiXVwiKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUgPT09IFwiXVwiICYmIChwcmV2LnZhbHVlID09PSBcIltcIiB8fCBwcmV2LnZhbHVlID09PSBcIlteXCIpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0cy5wb3NpeCA9PT0gdHJ1ZSAmJiB2YWx1ZSA9PT0gXCIhXCIgJiYgcHJldi52YWx1ZSA9PT0gXCJbXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gXCJeXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgICAgYXBwZW5kKHtcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLnF1b3RlcyA9PT0gMSAmJiB2YWx1ZSAhPT0gJ1wiJykge1xuICAgICAgICAgIHZhbHVlID0gdXRpbHMuZXNjYXBlUmVnZXgodmFsdWUpO1xuICAgICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgICAgYXBwZW5kKHtcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSAnXCInKSB7XG4gICAgICAgICAgc3RhdGUucXVvdGVzID0gc3RhdGUucXVvdGVzID09PSAxID8gMCA6IDE7XG4gICAgICAgICAgaWYgKG9wdHMua2VlcFF1b3RlcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCIoXCIpIHtcbiAgICAgICAgICBpbmNyZW1lbnQoXCJwYXJlbnNcIik7XG4gICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBcInBhcmVuXCIsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCIpXCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUucGFyZW5zID09PSAwICYmIG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcihcIm9wZW5pbmdcIiwgXCIoXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXh0Z2xvYiA9IGV4dGdsb2JzW2V4dGdsb2JzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChleHRnbG9iICYmIHN0YXRlLnBhcmVucyA9PT0gZXh0Z2xvYi5wYXJlbnMgKyAxKSB7XG4gICAgICAgICAgICBleHRnbG9iQ2xvc2UoZXh0Z2xvYnMucG9wKCkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJwYXJlblwiLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBvdXRwdXQ6IHN0YXRlLnBhcmVucyA/IFwiKVwiIDogXCJcXFxcKVwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVjcmVtZW50KFwicGFyZW5zXCIpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJbXCIpIHtcbiAgICAgICAgICBpZiAob3B0cy5ub2JyYWNrZXQgPT09IHRydWUgfHwgIXJlbWFpbmluZygpLmluY2x1ZGVzKFwiXVwiKSkge1xuICAgICAgICAgICAgaWYgKG9wdHMubm9icmFja2V0ICE9PSB0cnVlICYmIG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKFwiY2xvc2luZ1wiLCBcIl1cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5jcmVtZW50KFwiYnJhY2tldHNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJicmFja2V0XCIsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJdXCIpIHtcbiAgICAgICAgICBpZiAob3B0cy5ub2JyYWNrZXQgPT09IHRydWUgfHwgcHJldiAmJiBwcmV2LnR5cGUgPT09IFwiYnJhY2tldFwiICYmIHByZXYudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICBvdXRwdXQ6IGBcXFxcJHt2YWx1ZX1gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUuYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcihcIm9wZW5pbmdcIiwgXCJbXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIG91dHB1dDogYFxcXFwke3ZhbHVlfWBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlY3JlbWVudChcImJyYWNrZXRzXCIpO1xuICAgICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHByZXYudmFsdWUuc2xpY2UoMSk7XG4gICAgICAgICAgaWYgKHByZXYucG9zaXggIT09IHRydWUgJiYgcHJldlZhbHVlWzBdID09PSBcIl5cIiAmJiAhcHJldlZhbHVlLmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBgLyR7dmFsdWV9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgICBhcHBlbmQoe1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAob3B0cy5saXRlcmFsQnJhY2tldHMgPT09IGZhbHNlIHx8IHV0aWxzLmhhc1JlZ2V4Q2hhcnMocHJldlZhbHVlKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGVzY2FwZWQgPSB1dGlscy5lc2NhcGVSZWdleChwcmV2LnZhbHVlKTtcbiAgICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLXByZXYudmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICBpZiAob3B0cy5saXRlcmFsQnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLm91dHB1dCArPSBlc2NhcGVkO1xuICAgICAgICAgICAgcHJldi52YWx1ZSA9IGVzY2FwZWQ7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJldi52YWx1ZSA9IGAoJHtjYXB0dXJlfSR7ZXNjYXBlZH18JHtwcmV2LnZhbHVlfSlgO1xuICAgICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2LnZhbHVlO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7XCIgJiYgb3B0cy5ub2JyYWNlICE9PSB0cnVlKSB7XG4gICAgICAgICAgaW5jcmVtZW50KFwiYnJhY2VzXCIpO1xuICAgICAgICAgIGNvbnN0IG9wZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImJyYWNlXCIsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG91dHB1dDogXCIoXCIsXG4gICAgICAgICAgICBvdXRwdXRJbmRleDogc3RhdGUub3V0cHV0Lmxlbmd0aCxcbiAgICAgICAgICAgIHRva2Vuc0luZGV4OiBzdGF0ZS50b2tlbnMubGVuZ3RoXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmFjZXMucHVzaChvcGVuKTtcbiAgICAgICAgICBwdXNoKG9wZW4pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ9XCIpIHtcbiAgICAgICAgICBjb25zdCBicmFjZSA9IGJyYWNlc1ticmFjZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKG9wdHMubm9icmFjZSA9PT0gdHJ1ZSB8fCAhYnJhY2UpIHtcbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIG91dHB1dDogdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBvdXRwdXQgPSBcIilcIjtcbiAgICAgICAgICBpZiAoYnJhY2UuZG90cyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgYXJyID0gdG9rZW5zLnNsaWNlKCk7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGFyci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgICAgICAgIGlmIChhcnJbaV0udHlwZSA9PT0gXCJicmFjZVwiKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGFycltpXS50eXBlICE9PSBcImRvdHNcIikge1xuICAgICAgICAgICAgICAgIHJhbmdlLnVuc2hpZnQoYXJyW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0cHV0ID0gZXhwYW5kUmFuZ2UocmFuZ2UsIG9wdHMpO1xuICAgICAgICAgICAgc3RhdGUuYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGJyYWNlLmNvbW1hICE9PSB0cnVlICYmIGJyYWNlLmRvdHMgIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG91dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCBicmFjZS5vdXRwdXRJbmRleCk7XG4gICAgICAgICAgICBjb25zdCB0b2tzID0gc3RhdGUudG9rZW5zLnNsaWNlKGJyYWNlLnRva2Vuc0luZGV4KTtcbiAgICAgICAgICAgIGJyYWNlLnZhbHVlID0gYnJhY2Uub3V0cHV0ID0gXCJcXFxce1wiO1xuICAgICAgICAgICAgdmFsdWUgPSBvdXRwdXQgPSBcIlxcXFx9XCI7XG4gICAgICAgICAgICBzdGF0ZS5vdXRwdXQgPSBvdXQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdG9rcykge1xuICAgICAgICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gdC5vdXRwdXQgfHwgdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBcImJyYWNlXCIsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG91dHB1dFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlY3JlbWVudChcImJyYWNlc1wiKTtcbiAgICAgICAgICBicmFjZXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInxcIikge1xuICAgICAgICAgIGlmIChleHRnbG9icy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5jb25kaXRpb25zKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCIsXCIpIHtcbiAgICAgICAgICBsZXQgb3V0cHV0ID0gdmFsdWU7XG4gICAgICAgICAgY29uc3QgYnJhY2UgPSBicmFjZXNbYnJhY2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChicmFjZSAmJiBzdGFja1tzdGFjay5sZW5ndGggLSAxXSA9PT0gXCJicmFjZXNcIikge1xuICAgICAgICAgICAgYnJhY2UuY29tbWEgPSB0cnVlO1xuICAgICAgICAgICAgb3V0cHV0ID0gXCJ8XCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJjb21tYVwiLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBvdXRwdXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwiL1wiKSB7XG4gICAgICAgICAgaWYgKHByZXYudHlwZSA9PT0gXCJkb3RcIiAmJiBzdGF0ZS5pbmRleCA9PT0gc3RhdGUuc3RhcnQgKyAxKSB7XG4gICAgICAgICAgICBzdGF0ZS5zdGFydCA9IHN0YXRlLmluZGV4ICsgMTtcbiAgICAgICAgICAgIHN0YXRlLmNvbnN1bWVkID0gXCJcIjtcbiAgICAgICAgICAgIHN0YXRlLm91dHB1dCA9IFwiXCI7XG4gICAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgICAgICBwcmV2ID0gYm9zO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJzbGFzaFwiLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBvdXRwdXQ6IFNMQVNIX0xJVEVSQUxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwiLlwiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlLmJyYWNlcyA+IDAgJiYgcHJldi50eXBlID09PSBcImRvdFwiKSB7XG4gICAgICAgICAgICBpZiAocHJldi52YWx1ZSA9PT0gXCIuXCIpXG4gICAgICAgICAgICAgIHByZXYub3V0cHV0ID0gRE9UX0xJVEVSQUw7XG4gICAgICAgICAgICBjb25zdCBicmFjZSA9IGJyYWNlc1ticmFjZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBwcmV2LnR5cGUgPSBcImRvdHNcIjtcbiAgICAgICAgICAgIHByZXYub3V0cHV0ICs9IHZhbHVlO1xuICAgICAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyYWNlLmRvdHMgPSB0cnVlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGF0ZS5icmFjZXMgKyBzdGF0ZS5wYXJlbnMgPT09IDAgJiYgcHJldi50eXBlICE9PSBcImJvc1wiICYmIHByZXYudHlwZSAhPT0gXCJzbGFzaFwiKSB7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICBvdXRwdXQ6IERPVF9MSVRFUkFMXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwiZG90XCIsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG91dHB1dDogRE9UX0xJVEVSQUxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwiP1wiKSB7XG4gICAgICAgICAgY29uc3QgaXNHcm91cCA9IHByZXYgJiYgcHJldi52YWx1ZSA9PT0gXCIoXCI7XG4gICAgICAgICAgaWYgKCFpc0dyb3VwICYmIG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gXCIoXCIgJiYgcGVlaygyKSAhPT0gXCI/XCIpIHtcbiAgICAgICAgICAgIGV4dGdsb2JPcGVuKFwicW1hcmtcIiwgdmFsdWUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gXCJwYXJlblwiKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gcGVlaygpO1xuICAgICAgICAgICAgbGV0IG91dHB1dCA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKG5leHQgPT09IFwiPFwiICYmICF1dGlscy5zdXBwb3J0c0xvb2tiZWhpbmRzKCkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm9kZS5qcyB2MTAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIGZvciByZWdleCBsb29rYmVoaW5kc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmV2LnZhbHVlID09PSBcIihcIiAmJiAhL1shPTw6XS8udGVzdChuZXh0KSB8fCBuZXh0ID09PSBcIjxcIiAmJiAhLzwoWyE9XXxcXHcrPikvLnRlc3QocmVtYWluaW5nKCkpKSB7XG4gICAgICAgICAgICAgIG91dHB1dCA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgb3V0cHV0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0cy5kb3QgIT09IHRydWUgJiYgKHByZXYudHlwZSA9PT0gXCJzbGFzaFwiIHx8IHByZXYudHlwZSA9PT0gXCJib3NcIikpIHtcbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInFtYXJrXCIsXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICBvdXRwdXQ6IFFNQVJLX05PX0RPVFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBcInFtYXJrXCIsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG91dHB1dDogUU1BUktcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwiIVwiKSB7XG4gICAgICAgICAgaWYgKG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gXCIoXCIpIHtcbiAgICAgICAgICAgIGlmIChwZWVrKDIpICE9PSBcIj9cIiB8fCAhL1shPTw6XS8udGVzdChwZWVrKDMpKSkge1xuICAgICAgICAgICAgICBleHRnbG9iT3BlbihcIm5lZ2F0ZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0cy5ub25lZ2F0ZSAhPT0gdHJ1ZSAmJiBzdGF0ZS5pbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgbmVnYXRlKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcIitcIikge1xuICAgICAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09IFwiKFwiICYmIHBlZWsoMikgIT09IFwiP1wiKSB7XG4gICAgICAgICAgICBleHRnbG9iT3BlbihcInBsdXNcIiwgdmFsdWUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmV2ICYmIHByZXYudmFsdWUgPT09IFwiKFwiIHx8IG9wdHMucmVnZXggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJwbHVzXCIsXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICBvdXRwdXQ6IFBMVVNfTElURVJBTFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXYgJiYgKHByZXYudHlwZSA9PT0gXCJicmFja2V0XCIgfHwgcHJldi50eXBlID09PSBcInBhcmVuXCIgfHwgcHJldi50eXBlID09PSBcImJyYWNlXCIpIHx8IHN0YXRlLnBhcmVucyA+IDApIHtcbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInBsdXNcIixcbiAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJwbHVzXCIsXG4gICAgICAgICAgICB2YWx1ZTogUExVU19MSVRFUkFMXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcIkBcIikge1xuICAgICAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09IFwiKFwiICYmIHBlZWsoMikgIT09IFwiP1wiKSB7XG4gICAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJhdFwiLFxuICAgICAgICAgICAgICBleHRnbG9iOiB0cnVlLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgb3V0cHV0OiBcIlwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgIT09IFwiKlwiKSB7XG4gICAgICAgICAgaWYgKHZhbHVlID09PSBcIiRcIiB8fCB2YWx1ZSA9PT0gXCJeXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gUkVHRVhfTk9OX1NQRUNJQUxfQ0hBUlMuZXhlYyhyZW1haW5pbmcoKSk7XG4gICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICB2YWx1ZSArPSBtYXRjaFswXTtcbiAgICAgICAgICAgIHN0YXRlLmluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZXYgJiYgKHByZXYudHlwZSA9PT0gXCJnbG9ic3RhclwiIHx8IHByZXYuc3RhciA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICBwcmV2LnR5cGUgPSBcInN0YXJcIjtcbiAgICAgICAgICBwcmV2LnN0YXIgPSB0cnVlO1xuICAgICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgICAgcHJldi5vdXRwdXQgPSBzdGFyO1xuICAgICAgICAgIHN0YXRlLmJhY2t0cmFjayA9IHRydWU7XG4gICAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN0ID0gcmVtYWluaW5nKCk7XG4gICAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiAvXlxcKFteP10vLnRlc3QocmVzdCkpIHtcbiAgICAgICAgICBleHRnbG9iT3BlbihcInN0YXJcIiwgdmFsdWUpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2LnR5cGUgPT09IFwic3RhclwiKSB7XG4gICAgICAgICAgaWYgKG9wdHMubm9nbG9ic3RhciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcHJpb3IgPSBwcmV2LnByZXY7XG4gICAgICAgICAgY29uc3QgYmVmb3JlID0gcHJpb3IucHJldjtcbiAgICAgICAgICBjb25zdCBpc1N0YXJ0ID0gcHJpb3IudHlwZSA9PT0gXCJzbGFzaFwiIHx8IHByaW9yLnR5cGUgPT09IFwiYm9zXCI7XG4gICAgICAgICAgY29uc3QgYWZ0ZXJTdGFyID0gYmVmb3JlICYmIChiZWZvcmUudHlwZSA9PT0gXCJzdGFyXCIgfHwgYmVmb3JlLnR5cGUgPT09IFwiZ2xvYnN0YXJcIik7XG4gICAgICAgICAgaWYgKG9wdHMuYmFzaCA9PT0gdHJ1ZSAmJiAoIWlzU3RhcnQgfHwgcmVzdFswXSAmJiByZXN0WzBdICE9PSBcIi9cIikpIHtcbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInN0YXJcIixcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIG91dHB1dDogXCJcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNCcmFjZSA9IHN0YXRlLmJyYWNlcyA+IDAgJiYgKHByaW9yLnR5cGUgPT09IFwiY29tbWFcIiB8fCBwcmlvci50eXBlID09PSBcImJyYWNlXCIpO1xuICAgICAgICAgIGNvbnN0IGlzRXh0Z2xvYiA9IGV4dGdsb2JzLmxlbmd0aCAmJiAocHJpb3IudHlwZSA9PT0gXCJwaXBlXCIgfHwgcHJpb3IudHlwZSA9PT0gXCJwYXJlblwiKTtcbiAgICAgICAgICBpZiAoIWlzU3RhcnQgJiYgcHJpb3IudHlwZSAhPT0gXCJwYXJlblwiICYmICFpc0JyYWNlICYmICFpc0V4dGdsb2IpIHtcbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInN0YXJcIixcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIG91dHB1dDogXCJcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHJlc3Quc2xpY2UoMCwgMykgPT09IFwiLyoqXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gaW5wdXRbc3RhdGUuaW5kZXggKyA0XTtcbiAgICAgICAgICAgIGlmIChhZnRlciAmJiBhZnRlciAhPT0gXCIvXCIpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN0ID0gcmVzdC5zbGljZSgzKTtcbiAgICAgICAgICAgIGNvbnN1bWUoXCIvKipcIiwgMyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmlvci50eXBlID09PSBcImJvc1wiICYmIGVvcygpKSB7XG4gICAgICAgICAgICBwcmV2LnR5cGUgPSBcImdsb2JzdGFyXCI7XG4gICAgICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICAgICAgcHJldi5vdXRwdXQgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgICAgICAgIHN0YXRlLm91dHB1dCA9IHByZXYub3V0cHV0O1xuICAgICAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByaW9yLnR5cGUgPT09IFwic2xhc2hcIiAmJiBwcmlvci5wcmV2LnR5cGUgIT09IFwiYm9zXCIgJiYgIWFmdGVyU3RhciAmJiBlb3MoKSkge1xuICAgICAgICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC0ocHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQpLmxlbmd0aCk7XG4gICAgICAgICAgICBwcmlvci5vdXRwdXQgPSBgKD86JHtwcmlvci5vdXRwdXR9YDtcbiAgICAgICAgICAgIHByZXYudHlwZSA9IFwiZ2xvYnN0YXJcIjtcbiAgICAgICAgICAgIHByZXYub3V0cHV0ID0gZ2xvYnN0YXIob3B0cykgKyAob3B0cy5zdHJpY3RTbGFzaGVzID8gXCIpXCIgOiBcInwkKVwiKTtcbiAgICAgICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQ7XG4gICAgICAgICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJpb3IudHlwZSA9PT0gXCJzbGFzaFwiICYmIHByaW9yLnByZXYudHlwZSAhPT0gXCJib3NcIiAmJiByZXN0WzBdID09PSBcIi9cIikge1xuICAgICAgICAgICAgY29uc3QgZW5kID0gcmVzdFsxXSAhPT0gdm9pZCAwID8gXCJ8JFwiIDogXCJcIjtcbiAgICAgICAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtKHByaW9yLm91dHB1dCArIHByZXYub3V0cHV0KS5sZW5ndGgpO1xuICAgICAgICAgICAgcHJpb3Iub3V0cHV0ID0gYCg/OiR7cHJpb3Iub3V0cHV0fWA7XG4gICAgICAgICAgICBwcmV2LnR5cGUgPSBcImdsb2JzdGFyXCI7XG4gICAgICAgICAgICBwcmV2Lm91dHB1dCA9IGAke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH18JHtTTEFTSF9MSVRFUkFMfSR7ZW5kfSlgO1xuICAgICAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dDtcbiAgICAgICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN1bWUodmFsdWUgKyBhZHZhbmNlKCkpO1xuICAgICAgICAgICAgcHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6IFwic2xhc2hcIixcbiAgICAgICAgICAgICAgdmFsdWU6IFwiL1wiLFxuICAgICAgICAgICAgICBvdXRwdXQ6IFwiXCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmlvci50eXBlID09PSBcImJvc1wiICYmIHJlc3RbMF0gPT09IFwiL1wiKSB7XG4gICAgICAgICAgICBwcmV2LnR5cGUgPSBcImdsb2JzdGFyXCI7XG4gICAgICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICAgICAgcHJldi5vdXRwdXQgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9fCR7Z2xvYnN0YXIob3B0cyl9JHtTTEFTSF9MSVRFUkFMfSlgO1xuICAgICAgICAgICAgc3RhdGUub3V0cHV0ID0gcHJldi5vdXRwdXQ7XG4gICAgICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICAgICAgICBjb25zdW1lKHZhbHVlICsgYWR2YW5jZSgpKTtcbiAgICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcInNsYXNoXCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBcIi9cIixcbiAgICAgICAgICAgICAgb3V0cHV0OiBcIlwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLXByZXYub3V0cHV0Lmxlbmd0aCk7XG4gICAgICAgICAgcHJldi50eXBlID0gXCJnbG9ic3RhclwiO1xuICAgICAgICAgIHByZXYub3V0cHV0ID0gZ2xvYnN0YXIob3B0cyk7XG4gICAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi5vdXRwdXQ7XG4gICAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRva2VuID0ge1xuICAgICAgICAgIHR5cGU6IFwic3RhclwiLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG91dHB1dDogc3RhclxuICAgICAgICB9O1xuICAgICAgICBpZiAob3B0cy5iYXNoID09PSB0cnVlKSB7XG4gICAgICAgICAgdG9rZW4ub3V0cHV0ID0gXCIuKj9cIjtcbiAgICAgICAgICBpZiAocHJldi50eXBlID09PSBcImJvc1wiIHx8IHByZXYudHlwZSA9PT0gXCJzbGFzaFwiKSB7XG4gICAgICAgICAgICB0b2tlbi5vdXRwdXQgPSBub2RvdCArIHRva2VuLm91dHB1dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHVzaCh0b2tlbik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZXYgJiYgKHByZXYudHlwZSA9PT0gXCJicmFja2V0XCIgfHwgcHJldi50eXBlID09PSBcInBhcmVuXCIpICYmIG9wdHMucmVnZXggPT09IHRydWUpIHtcbiAgICAgICAgICB0b2tlbi5vdXRwdXQgPSB2YWx1ZTtcbiAgICAgICAgICBwdXNoKHRva2VuKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaW5kZXggPT09IHN0YXRlLnN0YXJ0IHx8IHByZXYudHlwZSA9PT0gXCJzbGFzaFwiIHx8IHByZXYudHlwZSA9PT0gXCJkb3RcIikge1xuICAgICAgICAgIGlmIChwcmV2LnR5cGUgPT09IFwiZG90XCIpIHtcbiAgICAgICAgICAgIHN0YXRlLm91dHB1dCArPSBOT19ET1RfU0xBU0g7XG4gICAgICAgICAgICBwcmV2Lm91dHB1dCArPSBOT19ET1RfU0xBU0g7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRzLmRvdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc3RhdGUub3V0cHV0ICs9IE5PX0RPVFNfU0xBU0g7XG4gICAgICAgICAgICBwcmV2Lm91dHB1dCArPSBOT19ET1RTX1NMQVNIO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gbm9kb3Q7XG4gICAgICAgICAgICBwcmV2Lm91dHB1dCArPSBub2RvdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBlZWsoKSAhPT0gXCIqXCIpIHtcbiAgICAgICAgICAgIHN0YXRlLm91dHB1dCArPSBPTkVfQ0hBUjtcbiAgICAgICAgICAgIHByZXYub3V0cHV0ICs9IE9ORV9DSEFSO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwdXNoKHRva2VuKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChzdGF0ZS5icmFja2V0cyA+IDApIHtcbiAgICAgICAgaWYgKG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpXG4gICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKFwiY2xvc2luZ1wiLCBcIl1cIikpO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy5lc2NhcGVMYXN0KHN0YXRlLm91dHB1dCwgXCJbXCIpO1xuICAgICAgICBkZWNyZW1lbnQoXCJicmFja2V0c1wiKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChzdGF0ZS5wYXJlbnMgPiAwKSB7XG4gICAgICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKVxuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcihcImNsb3NpbmdcIiwgXCIpXCIpKTtcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gdXRpbHMuZXNjYXBlTGFzdChzdGF0ZS5vdXRwdXQsIFwiKFwiKTtcbiAgICAgICAgZGVjcmVtZW50KFwicGFyZW5zXCIpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHN0YXRlLmJyYWNlcyA+IDApIHtcbiAgICAgICAgaWYgKG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpXG4gICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKFwiY2xvc2luZ1wiLCBcIn1cIikpO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy5lc2NhcGVMYXN0KHN0YXRlLm91dHB1dCwgXCJ7XCIpO1xuICAgICAgICBkZWNyZW1lbnQoXCJicmFjZXNcIik7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5zdHJpY3RTbGFzaGVzICE9PSB0cnVlICYmIChwcmV2LnR5cGUgPT09IFwic3RhclwiIHx8IHByZXYudHlwZSA9PT0gXCJicmFja2V0XCIpKSB7XG4gICAgICAgIHB1c2goe1xuICAgICAgICAgIHR5cGU6IFwibWF5YmVfc2xhc2hcIixcbiAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICBvdXRwdXQ6IGAke1NMQVNIX0xJVEVSQUx9P2BcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuYmFja3RyYWNrID09PSB0cnVlKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2Ygc3RhdGUudG9rZW5zKSB7XG4gICAgICAgICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLm91dHB1dCAhPSBudWxsID8gdG9rZW4ub3V0cHV0IDogdG9rZW4udmFsdWU7XG4gICAgICAgICAgaWYgKHRva2VuLnN1ZmZpeCkge1xuICAgICAgICAgICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLnN1ZmZpeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9O1xuICAgIHBhcnNlLmZhc3RwYXRocyA9IChpbnB1dCwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpO1xuICAgICAgY29uc3QgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSBcIm51bWJlclwiID8gTWF0aC5taW4oTUFYX0xFTkdUSCwgb3B0cy5tYXhMZW5ndGgpIDogTUFYX0xFTkdUSDtcbiAgICAgIGNvbnN0IGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgICAgIGlmIChsZW4gPiBtYXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnB1dCBsZW5ndGg6ICR7bGVufSwgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoOiAke21heH1gKTtcbiAgICAgIH1cbiAgICAgIGlucHV0ID0gUkVQTEFDRU1FTlRTW2lucHV0XSB8fCBpbnB1dDtcbiAgICAgIGNvbnN0IHdpbjMyID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBET1RfTElURVJBTCxcbiAgICAgICAgU0xBU0hfTElURVJBTCxcbiAgICAgICAgT05FX0NIQVIsXG4gICAgICAgIERPVFNfU0xBU0gsXG4gICAgICAgIE5PX0RPVCxcbiAgICAgICAgTk9fRE9UUyxcbiAgICAgICAgTk9fRE9UU19TTEFTSCxcbiAgICAgICAgU1RBUixcbiAgICAgICAgU1RBUlRfQU5DSE9SXG4gICAgICB9ID0gY29uc3RhbnRzLmdsb2JDaGFycyh3aW4zMik7XG4gICAgICBjb25zdCBub2RvdCA9IG9wdHMuZG90ID8gTk9fRE9UUyA6IE5PX0RPVDtcbiAgICAgIGNvbnN0IHNsYXNoRG90ID0gb3B0cy5kb3QgPyBOT19ET1RTX1NMQVNIIDogTk9fRE9UO1xuICAgICAgY29uc3QgY2FwdHVyZSA9IG9wdHMuY2FwdHVyZSA/IFwiXCIgOiBcIj86XCI7XG4gICAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgICAgbmVnYXRlZDogZmFsc2UsXG4gICAgICAgIHByZWZpeDogXCJcIlxuICAgICAgfTtcbiAgICAgIGxldCBzdGFyID0gb3B0cy5iYXNoID09PSB0cnVlID8gXCIuKj9cIiA6IFNUQVI7XG4gICAgICBpZiAob3B0cy5jYXB0dXJlKSB7XG4gICAgICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGdsb2JzdGFyID0gKG9wdHMyKSA9PiB7XG4gICAgICAgIGlmIChvcHRzMi5ub2dsb2JzdGFyID09PSB0cnVlKVxuICAgICAgICAgIHJldHVybiBzdGFyO1xuICAgICAgICByZXR1cm4gYCgke2NhcHR1cmV9KD86KD8hJHtTVEFSVF9BTkNIT1J9JHtvcHRzMi5kb3QgPyBET1RTX1NMQVNIIDogRE9UX0xJVEVSQUx9KS4pKj8pYDtcbiAgICAgIH07XG4gICAgICBjb25zdCBjcmVhdGUgPSAoc3RyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoc3RyKSB7XG4gICAgICAgICAgY2FzZSBcIipcIjpcbiAgICAgICAgICAgIHJldHVybiBgJHtub2RvdH0ke09ORV9DSEFSfSR7c3Rhcn1gO1xuICAgICAgICAgIGNhc2UgXCIuKlwiOlxuICAgICAgICAgICAgcmV0dXJuIGAke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG4gICAgICAgICAgY2FzZSBcIiouKlwiOlxuICAgICAgICAgICAgcmV0dXJuIGAke25vZG90fSR7c3Rhcn0ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG4gICAgICAgICAgY2FzZSBcIiovKlwiOlxuICAgICAgICAgICAgcmV0dXJuIGAke25vZG90fSR7c3Rhcn0ke1NMQVNIX0xJVEVSQUx9JHtPTkVfQ0hBUn0ke3NsYXNoRG90fSR7c3Rhcn1gO1xuICAgICAgICAgIGNhc2UgXCIqKlwiOlxuICAgICAgICAgICAgcmV0dXJuIG5vZG90ICsgZ2xvYnN0YXIob3B0cyk7XG4gICAgICAgICAgY2FzZSBcIioqLypcIjpcbiAgICAgICAgICAgIHJldHVybiBgKD86JHtub2RvdH0ke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pPyR7c2xhc2hEb3R9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcbiAgICAgICAgICBjYXNlIFwiKiovKi4qXCI6XG4gICAgICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke3NsYXNoRG90fSR7c3Rhcn0ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG4gICAgICAgICAgY2FzZSBcIioqLy4qXCI6XG4gICAgICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXiguKj8pXFwuKFxcdyspJC8uZXhlYyhzdHIpO1xuICAgICAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlMiA9IGNyZWF0ZShtYXRjaFsxXSk7XG4gICAgICAgICAgICBpZiAoIXNvdXJjZTIpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UyICsgRE9UX0xJVEVSQUwgKyBtYXRjaFsyXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBvdXRwdXQgPSB1dGlscy5yZW1vdmVQcmVmaXgoaW5wdXQsIHN0YXRlKTtcbiAgICAgIGxldCBzb3VyY2UgPSBjcmVhdGUob3V0cHV0KTtcbiAgICAgIGlmIChzb3VyY2UgJiYgb3B0cy5zdHJpY3RTbGFzaGVzICE9PSB0cnVlKSB7XG4gICAgICAgIHNvdXJjZSArPSBgJHtTTEFTSF9MSVRFUkFMfT9gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHBhcnNlO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BpY29tYXRjaCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcGljb21hdGNoL2xpYi9waWNvbWF0Y2guanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgdmFyIHNjYW4gPSByZXF1aXJlX3NjYW4oKTtcbiAgICB2YXIgcGFyc2UgPSByZXF1aXJlX3BhcnNlMigpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHMzKCk7XG4gICAgdmFyIGNvbnN0YW50cyA9IHJlcXVpcmVfY29uc3RhbnRzMygpO1xuICAgIHZhciBpc09iamVjdCA9ICh2YWwpID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbCk7XG4gICAgdmFyIHBpY29tYXRjaCA9IChnbG9iLCBvcHRpb25zLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShnbG9iKSkge1xuICAgICAgICBjb25zdCBmbnMgPSBnbG9iLm1hcCgoaW5wdXQpID0+IHBpY29tYXRjaChpbnB1dCwgb3B0aW9ucywgcmV0dXJuU3RhdGUpKTtcbiAgICAgICAgY29uc3QgYXJyYXlNYXRjaGVyID0gKHN0cikgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgaXNNYXRjaCBvZiBmbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlMiA9IGlzTWF0Y2goc3RyKTtcbiAgICAgICAgICAgIGlmIChzdGF0ZTIpXG4gICAgICAgICAgICAgIHJldHVybiBzdGF0ZTI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGFycmF5TWF0Y2hlcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzU3RhdGUgPSBpc09iamVjdChnbG9iKSAmJiBnbG9iLnRva2VucyAmJiBnbG9iLmlucHV0O1xuICAgICAgaWYgKGdsb2IgPT09IFwiXCIgfHwgdHlwZW9mIGdsb2IgIT09IFwic3RyaW5nXCIgJiYgIWlzU3RhdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIHBhdHRlcm4gdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nXCIpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gICAgICBjb25zdCBwb3NpeCA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gaXNTdGF0ZSA/IHBpY29tYXRjaC5jb21waWxlUmUoZ2xvYiwgb3B0aW9ucykgOiBwaWNvbWF0Y2gubWFrZVJlKGdsb2IsIG9wdGlvbnMsIGZhbHNlLCB0cnVlKTtcbiAgICAgIGNvbnN0IHN0YXRlID0gcmVnZXguc3RhdGU7XG4gICAgICBkZWxldGUgcmVnZXguc3RhdGU7XG4gICAgICBsZXQgaXNJZ25vcmVkID0gKCkgPT4gZmFsc2U7XG4gICAgICBpZiAob3B0cy5pZ25vcmUpIHtcbiAgICAgICAgY29uc3QgaWdub3JlT3B0cyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgICAgaWdub3JlOiBudWxsLFxuICAgICAgICAgIG9uTWF0Y2g6IG51bGwsXG4gICAgICAgICAgb25SZXN1bHQ6IG51bGxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzSWdub3JlZCA9IHBpY29tYXRjaChvcHRzLmlnbm9yZSwgaWdub3JlT3B0cywgcmV0dXJuU3RhdGUpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF0Y2hlciA9IChpbnB1dCwgcmV0dXJuT2JqZWN0ID0gZmFsc2UpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGlzTWF0Y2gsXG4gICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgb3V0cHV0XG4gICAgICAgIH0gPSBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXgsIG9wdGlvbnMsIHtcbiAgICAgICAgICBnbG9iLFxuICAgICAgICAgIHBvc2l4XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgZ2xvYixcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICByZWdleCxcbiAgICAgICAgICBwb3NpeCxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICBvdXRwdXQsXG4gICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgaXNNYXRjaFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZW9mIG9wdHMub25SZXN1bHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIG9wdHMub25SZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNNYXRjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXN1bHQuaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJZ25vcmVkKGlucHV0KSkge1xuICAgICAgICAgIGlmICh0eXBlb2Ygb3B0cy5vbklnbm9yZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBvcHRzLm9uSWdub3JlKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5pc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHJldHVybk9iamVjdCA/IHJlc3VsdCA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0cy5vbk1hdGNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBvcHRzLm9uTWF0Y2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0dXJuT2JqZWN0ID8gcmVzdWx0IDogdHJ1ZTtcbiAgICAgIH07XG4gICAgICBpZiAocmV0dXJuU3RhdGUpIHtcbiAgICAgICAgbWF0Y2hlci5zdGF0ZSA9IHN0YXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoZXI7XG4gICAgfTtcbiAgICBwaWNvbWF0Y2gudGVzdCA9IChpbnB1dCwgcmVnZXgsIG9wdGlvbnMsIHtcbiAgICAgIGdsb2IsXG4gICAgICBwb3NpeFxuICAgIH0gPSB7fSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgaW5wdXQgdG8gYmUgYSBzdHJpbmdcIik7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpc01hdGNoOiBmYWxzZSxcbiAgICAgICAgICBvdXRwdXQ6IFwiXCJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgY29uc3QgZm9ybWF0ID0gb3B0cy5mb3JtYXQgfHwgKHBvc2l4ID8gdXRpbHMudG9Qb3NpeFNsYXNoZXMgOiBudWxsKTtcbiAgICAgIGxldCBtYXRjaCA9IGlucHV0ID09PSBnbG9iO1xuICAgICAgbGV0IG91dHB1dCA9IG1hdGNoICYmIGZvcm1hdCA/IGZvcm1hdChpbnB1dCkgOiBpbnB1dDtcbiAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgb3V0cHV0ID0gZm9ybWF0ID8gZm9ybWF0KGlucHV0KSA6IGlucHV0O1xuICAgICAgICBtYXRjaCA9IG91dHB1dCA9PT0gZ2xvYjtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaCA9PT0gZmFsc2UgfHwgb3B0cy5jYXB0dXJlID09PSB0cnVlKSB7XG4gICAgICAgIGlmIChvcHRzLm1hdGNoQmFzZSA9PT0gdHJ1ZSB8fCBvcHRzLmJhc2VuYW1lID09PSB0cnVlKSB7XG4gICAgICAgICAgbWF0Y2ggPSBwaWNvbWF0Y2gubWF0Y2hCYXNlKGlucHV0LCByZWdleCwgb3B0aW9ucywgcG9zaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoID0gcmVnZXguZXhlYyhvdXRwdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc01hdGNoOiBCb29sZWFuKG1hdGNoKSxcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIG91dHB1dFxuICAgICAgfTtcbiAgICB9O1xuICAgIHBpY29tYXRjaC5tYXRjaEJhc2UgPSAoaW5wdXQsIGdsb2IsIG9wdGlvbnMsIHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpKSA9PiB7XG4gICAgICBjb25zdCByZWdleCA9IGdsb2IgaW5zdGFuY2VvZiBSZWdFeHAgPyBnbG9iIDogcGljb21hdGNoLm1ha2VSZShnbG9iLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiByZWdleC50ZXN0KHBhdGguYmFzZW5hbWUoaW5wdXQpKTtcbiAgICB9O1xuICAgIHBpY29tYXRjaC5pc01hdGNoID0gKHN0ciwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHBpY29tYXRjaChwYXR0ZXJucywgb3B0aW9ucykoc3RyKTtcbiAgICBwaWNvbWF0Y2gucGFyc2UgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF0dGVybikpXG4gICAgICAgIHJldHVybiBwYXR0ZXJuLm1hcCgocCkgPT4gcGljb21hdGNoLnBhcnNlKHAsIG9wdGlvbnMpKTtcbiAgICAgIHJldHVybiBwYXJzZShwYXR0ZXJuLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICBmYXN0cGF0aHM6IGZhbHNlXG4gICAgICB9KSk7XG4gICAgfTtcbiAgICBwaWNvbWF0Y2guc2NhbiA9IChpbnB1dCwgb3B0aW9ucykgPT4gc2NhbihpbnB1dCwgb3B0aW9ucyk7XG4gICAgcGljb21hdGNoLmNvbXBpbGVSZSA9IChzdGF0ZSwgb3B0aW9ucywgcmV0dXJuT3V0cHV0ID0gZmFsc2UsIHJldHVyblN0YXRlID0gZmFsc2UpID0+IHtcbiAgICAgIGlmIChyZXR1cm5PdXRwdXQgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLm91dHB1dDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgY29uc3QgcHJlcGVuZCA9IG9wdHMuY29udGFpbnMgPyBcIlwiIDogXCJeXCI7XG4gICAgICBjb25zdCBhcHBlbmQgPSBvcHRzLmNvbnRhaW5zID8gXCJcIiA6IFwiJFwiO1xuICAgICAgbGV0IHNvdXJjZSA9IGAke3ByZXBlbmR9KD86JHtzdGF0ZS5vdXRwdXR9KSR7YXBwZW5kfWA7XG4gICAgICBpZiAoc3RhdGUgJiYgc3RhdGUubmVnYXRlZCA9PT0gdHJ1ZSkge1xuICAgICAgICBzb3VyY2UgPSBgXig/ISR7c291cmNlfSkuKiRgO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVnZXggPSBwaWNvbWF0Y2gudG9SZWdleChzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJldHVyblN0YXRlID09PSB0cnVlKSB7XG4gICAgICAgIHJlZ2V4LnN0YXRlID0gc3RhdGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVnZXg7XG4gICAgfTtcbiAgICBwaWNvbWF0Y2gubWFrZVJlID0gKGlucHV0LCBvcHRpb25zID0ge30sIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gICAgICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYSBub24tZW1wdHkgc3RyaW5nXCIpO1xuICAgICAgfVxuICAgICAgbGV0IHBhcnNlZCA9IHtcbiAgICAgICAgbmVnYXRlZDogZmFsc2UsXG4gICAgICAgIGZhc3RwYXRoczogdHJ1ZVxuICAgICAgfTtcbiAgICAgIGlmIChvcHRpb25zLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgKGlucHV0WzBdID09PSBcIi5cIiB8fCBpbnB1dFswXSA9PT0gXCIqXCIpKSB7XG4gICAgICAgIHBhcnNlZC5vdXRwdXQgPSBwYXJzZS5mYXN0cGF0aHMoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgaWYgKCFwYXJzZWQub3V0cHV0KSB7XG4gICAgICAgIHBhcnNlZCA9IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwaWNvbWF0Y2guY29tcGlsZVJlKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0LCByZXR1cm5TdGF0ZSk7XG4gICAgfTtcbiAgICBwaWNvbWF0Y2gudG9SZWdleCA9IChzb3VyY2UsIG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChzb3VyY2UsIG9wdHMuZmxhZ3MgfHwgKG9wdHMubm9jYXNlID8gXCJpXCIgOiBcIlwiKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5kZWJ1ZyA9PT0gdHJ1ZSlcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIHJldHVybiAvJF4vO1xuICAgICAgfVxuICAgIH07XG4gICAgcGljb21hdGNoLmNvbnN0YW50cyA9IGNvbnN0YW50cztcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwaWNvbWF0Y2g7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcGljb21hdGNoMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcGljb21hdGNoL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSByZXF1aXJlX3BpY29tYXRjaCgpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX21pY3JvbWF0Y2ggPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL21pY3JvbWF0Y2gvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB1dGlsID0gcmVxdWlyZShcInV0aWxcIik7XG4gICAgdmFyIGJyYWNlcyA9IHJlcXVpcmVfYnJhY2VzKCk7XG4gICAgdmFyIHBpY29tYXRjaCA9IHJlcXVpcmVfcGljb21hdGNoMigpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHMzKCk7XG4gICAgdmFyIGlzRW1wdHlTdHJpbmcgPSAodmFsKSA9PiB2YWwgPT09IFwiXCIgfHwgdmFsID09PSBcIi4vXCI7XG4gICAgdmFyIG1pY3JvbWF0Y2ggPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgICAgIHBhdHRlcm5zID0gW10uY29uY2F0KHBhdHRlcm5zKTtcbiAgICAgIGxpc3QgPSBbXS5jb25jYXQobGlzdCk7XG4gICAgICBsZXQgb21pdCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICBsZXQga2VlcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICBsZXQgaXRlbXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgICAgbGV0IG5lZ2F0aXZlcyA9IDA7XG4gICAgICBsZXQgb25SZXN1bHQgPSAoc3RhdGUpID0+IHtcbiAgICAgICAgaXRlbXMuYWRkKHN0YXRlLm91dHB1dCk7XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMub25SZXN1bHQpIHtcbiAgICAgICAgICBvcHRpb25zLm9uUmVzdWx0KHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0dGVybnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGlzTWF0Y2ggPSBwaWNvbWF0Y2goU3RyaW5nKHBhdHRlcm5zW2ldKSwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwge30sIHtcbiAgICAgICAgICBvblJlc3VsdFxuICAgICAgICB9KSwgdHJ1ZSk7XG4gICAgICAgIGxldCBuZWdhdGVkID0gaXNNYXRjaC5zdGF0ZS5uZWdhdGVkIHx8IGlzTWF0Y2guc3RhdGUubmVnYXRlZEV4dGdsb2I7XG4gICAgICAgIGlmIChuZWdhdGVkKVxuICAgICAgICAgIG5lZ2F0aXZlcysrO1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgICAgICBsZXQgbWF0Y2hlZCA9IGlzTWF0Y2goaXRlbSwgdHJ1ZSk7XG4gICAgICAgICAgbGV0IG1hdGNoID0gbmVnYXRlZCA/ICFtYXRjaGVkLmlzTWF0Y2ggOiBtYXRjaGVkLmlzTWF0Y2g7XG4gICAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChuZWdhdGVkKSB7XG4gICAgICAgICAgICBvbWl0LmFkZChtYXRjaGVkLm91dHB1dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9taXQuZGVsZXRlKG1hdGNoZWQub3V0cHV0KTtcbiAgICAgICAgICAgIGtlZXAuYWRkKG1hdGNoZWQub3V0cHV0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCByZXN1bHQgPSBuZWdhdGl2ZXMgPT09IHBhdHRlcm5zLmxlbmd0aCA/IFsuLi5pdGVtc10gOiBbLi4ua2VlcF07XG4gICAgICBsZXQgbWF0Y2hlcyA9IHJlc3VsdC5maWx0ZXIoKGl0ZW0pID0+ICFvbWl0LmhhcyhpdGVtKSk7XG4gICAgICBpZiAob3B0aW9ucyAmJiBtYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5mYWlsZ2xvYiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbWF0Y2hlcyBmb3VuZCBmb3IgXCIke3BhdHRlcm5zLmpvaW4oXCIsIFwiKX1cImApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm5vbnVsbCA9PT0gdHJ1ZSB8fCBvcHRpb25zLm51bGxnbG9iID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMudW5lc2NhcGUgPyBwYXR0ZXJucy5tYXAoKHApID0+IHAucmVwbGFjZSgvXFxcXC9nLCBcIlwiKSkgOiBwYXR0ZXJucztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoZXM7XG4gICAgfTtcbiAgICBtaWNyb21hdGNoLm1hdGNoID0gbWljcm9tYXRjaDtcbiAgICBtaWNyb21hdGNoLm1hdGNoZXIgPSAocGF0dGVybiwgb3B0aW9ucykgPT4gcGljb21hdGNoKHBhdHRlcm4sIG9wdGlvbnMpO1xuICAgIG1pY3JvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG4gICAgbWljcm9tYXRjaC5hbnkgPSBtaWNyb21hdGNoLmlzTWF0Y2g7XG4gICAgbWljcm9tYXRjaC5ub3QgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgcGF0dGVybnMgPSBbXS5jb25jYXQocGF0dGVybnMpLm1hcChTdHJpbmcpO1xuICAgICAgbGV0IHJlc3VsdCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICBsZXQgaXRlbXMgPSBbXTtcbiAgICAgIGxldCBvblJlc3VsdCA9IChzdGF0ZSkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5vblJlc3VsdClcbiAgICAgICAgICBvcHRpb25zLm9uUmVzdWx0KHN0YXRlKTtcbiAgICAgICAgaXRlbXMucHVzaChzdGF0ZS5vdXRwdXQpO1xuICAgICAgfTtcbiAgICAgIGxldCBtYXRjaGVzID0gbmV3IFNldChtaWNyb21hdGNoKGxpc3QsIHBhdHRlcm5zLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICBvblJlc3VsdFxuICAgICAgfSkpKTtcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaWYgKCFtYXRjaGVzLmhhcyhpdGVtKSkge1xuICAgICAgICAgIHJlc3VsdC5hZGQoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4ucmVzdWx0XTtcbiAgICB9O1xuICAgIG1pY3JvbWF0Y2guY29udGFpbnMgPSAoc3RyLCBwYXR0ZXJuLCBvcHRpb25zKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIHN0cmluZzogXCIke3V0aWwuaW5zcGVjdChzdHIpfVwiYCk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkge1xuICAgICAgICByZXR1cm4gcGF0dGVybi5zb21lKChwKSA9PiBtaWNyb21hdGNoLmNvbnRhaW5zKHN0ciwgcCwgb3B0aW9ucykpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmIChpc0VtcHR5U3RyaW5nKHN0cikgfHwgaXNFbXB0eVN0cmluZyhwYXR0ZXJuKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyLmluY2x1ZGVzKHBhdHRlcm4pIHx8IHN0ci5zdGFydHNXaXRoKFwiLi9cIikgJiYgc3RyLnNsaWNlKDIpLmluY2x1ZGVzKHBhdHRlcm4pKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBtaWNyb21hdGNoLmlzTWF0Y2goc3RyLCBwYXR0ZXJuLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICBjb250YWluczogdHJ1ZVxuICAgICAgfSkpO1xuICAgIH07XG4gICAgbWljcm9tYXRjaC5tYXRjaEtleXMgPSAob2JqLCBwYXR0ZXJucywgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0XCIpO1xuICAgICAgfVxuICAgICAgbGV0IGtleXMgPSBtaWNyb21hdGNoKE9iamVjdC5rZXlzKG9iaiksIHBhdHRlcm5zLCBvcHRpb25zKTtcbiAgICAgIGxldCByZXMgPSB7fTtcbiAgICAgIGZvciAobGV0IGtleSBvZiBrZXlzKVxuICAgICAgICByZXNba2V5XSA9IG9ialtrZXldO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIG1pY3JvbWF0Y2guc29tZSA9IChsaXN0LCBwYXR0ZXJucywgb3B0aW9ucykgPT4ge1xuICAgICAgbGV0IGl0ZW1zID0gW10uY29uY2F0KGxpc3QpO1xuICAgICAgZm9yIChsZXQgcGF0dGVybiBvZiBbXS5jb25jYXQocGF0dGVybnMpKSB7XG4gICAgICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChpdGVtcy5zb21lKChpdGVtKSA9PiBpc01hdGNoKGl0ZW0pKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBtaWNyb21hdGNoLmV2ZXJ5ID0gKGxpc3QsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiB7XG4gICAgICBsZXQgaXRlbXMgPSBbXS5jb25jYXQobGlzdCk7XG4gICAgICBmb3IgKGxldCBwYXR0ZXJuIG9mIFtdLmNvbmNhdChwYXR0ZXJucykpIHtcbiAgICAgICAgbGV0IGlzTWF0Y2ggPSBwaWNvbWF0Y2goU3RyaW5nKHBhdHRlcm4pLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFpdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXNNYXRjaChpdGVtKSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgbWljcm9tYXRjaC5hbGwgPSAoc3RyLCBwYXR0ZXJucywgb3B0aW9ucykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBzdHIgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBzdHJpbmc6IFwiJHt1dGlsLmluc3BlY3Qoc3RyKX1cImApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdLmNvbmNhdChwYXR0ZXJucykuZXZlcnkoKHApID0+IHBpY29tYXRjaChwLCBvcHRpb25zKShzdHIpKTtcbiAgICB9O1xuICAgIG1pY3JvbWF0Y2guY2FwdHVyZSA9IChnbG9iLCBpbnB1dCwgb3B0aW9ucykgPT4ge1xuICAgICAgbGV0IHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuICAgICAgbGV0IHJlZ2V4ID0gcGljb21hdGNoLm1ha2VSZShTdHJpbmcoZ2xvYiksIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgIGNhcHR1cmU6IHRydWVcbiAgICAgIH0pKTtcbiAgICAgIGxldCBtYXRjaCA9IHJlZ2V4LmV4ZWMocG9zaXggPyB1dGlscy50b1Bvc2l4U2xhc2hlcyhpbnB1dCkgOiBpbnB1dCk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoLnNsaWNlKDEpLm1hcCgodikgPT4gdiA9PT0gdm9pZCAwID8gXCJcIiA6IHYpO1xuICAgICAgfVxuICAgIH07XG4gICAgbWljcm9tYXRjaC5tYWtlUmUgPSAoLi4uYXJncykgPT4gcGljb21hdGNoLm1ha2VSZSguLi5hcmdzKTtcbiAgICBtaWNyb21hdGNoLnNjYW4gPSAoLi4uYXJncykgPT4gcGljb21hdGNoLnNjYW4oLi4uYXJncyk7XG4gICAgbWljcm9tYXRjaC5wYXJzZSA9IChwYXR0ZXJucywgb3B0aW9ucykgPT4ge1xuICAgICAgbGV0IHJlcyA9IFtdO1xuICAgICAgZm9yIChsZXQgcGF0dGVybiBvZiBbXS5jb25jYXQocGF0dGVybnMgfHwgW10pKSB7XG4gICAgICAgIGZvciAobGV0IHN0ciBvZiBicmFjZXMoU3RyaW5nKHBhdHRlcm4pLCBvcHRpb25zKSkge1xuICAgICAgICAgIHJlcy5wdXNoKHBpY29tYXRjaC5wYXJzZShzdHIsIG9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIG1pY3JvbWF0Y2guYnJhY2VzID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO1xuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ub2JyYWNlID09PSB0cnVlIHx8ICEvXFx7LipcXH0vLnRlc3QocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIFtwYXR0ZXJuXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBicmFjZXMocGF0dGVybiwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBtaWNyb21hdGNoLmJyYWNlRXhwYW5kID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO1xuICAgICAgcmV0dXJuIG1pY3JvbWF0Y2guYnJhY2VzKHBhdHRlcm4sIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgIGV4cGFuZDogdHJ1ZVxuICAgICAgfSkpO1xuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gbWljcm9tYXRjaDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJzZXIyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9AaWFybmEvdG9tbC9saWIvcGFyc2VyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgUGFyc2VyRU5EID0gMTExNDExMjtcbiAgICB2YXIgUGFyc2VyRXJyb3IgPSBjbGFzcyBleHRlbmRzIEVycm9yIHtcbiAgICAgIGNvbnN0cnVjdG9yKG1zZywgZmlsZW5hbWUsIGxpbmVudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoXCJbUGFyc2VyRXJyb3JdIFwiICsgbXNnLCBmaWxlbmFtZSwgbGluZW51bWJlcik7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiUGFyc2VyRXJyb3JcIjtcbiAgICAgICAgdGhpcy5jb2RlID0gXCJQYXJzZXJFcnJvclwiO1xuICAgICAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUGFyc2VyRXJyb3IpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIFN0YXRlID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IocGFyc2VyKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgICAgICB0aGlzLmJ1ZiA9IFwiXCI7XG4gICAgICAgIHRoaXMucmV0dXJuZWQgPSBudWxsO1xuICAgICAgICB0aGlzLnJlc3VsdCA9IG51bGw7XG4gICAgICAgIHRoaXMucmVzdWx0VGFibGUgPSBudWxsO1xuICAgICAgICB0aGlzLnJlc3VsdEFyciA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgUGFyc2VyID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5jb2wgPSAwO1xuICAgICAgICB0aGlzLmxpbmUgPSAwO1xuICAgICAgICB0aGlzLm9iaiA9IHt9O1xuICAgICAgICB0aGlzLmN0eCA9IHRoaXMub2JqO1xuICAgICAgICB0aGlzLnN0YWNrID0gW107XG4gICAgICAgIHRoaXMuX2J1ZiA9IFwiXCI7XG4gICAgICAgIHRoaXMuY2hhciA9IG51bGw7XG4gICAgICAgIHRoaXMuaWkgPSAwO1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3IFN0YXRlKHRoaXMucGFyc2VTdGFydCk7XG4gICAgICB9XG4gICAgICBwYXJzZShzdHIpIHtcbiAgICAgICAgaWYgKHN0ci5sZW5ndGggPT09IDAgfHwgc3RyLmxlbmd0aCA9PSBudWxsKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5fYnVmID0gU3RyaW5nKHN0cik7XG4gICAgICAgIHRoaXMuaWkgPSAtMTtcbiAgICAgICAgdGhpcy5jaGFyID0gLTE7XG4gICAgICAgIGxldCBnZXROZXh0O1xuICAgICAgICB3aGlsZSAoZ2V0TmV4dCA9PT0gZmFsc2UgfHwgdGhpcy5uZXh0Q2hhcigpKSB7XG4gICAgICAgICAgZ2V0TmV4dCA9IHRoaXMucnVuT25lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYnVmID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIG5leHRDaGFyKCkge1xuICAgICAgICBpZiAodGhpcy5jaGFyID09PSAxMCkge1xuICAgICAgICAgICsrdGhpcy5saW5lO1xuICAgICAgICAgIHRoaXMuY29sID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgKyt0aGlzLmlpO1xuICAgICAgICB0aGlzLmNoYXIgPSB0aGlzLl9idWYuY29kZVBvaW50QXQodGhpcy5paSk7XG4gICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICsrdGhpcy5jb2w7XG4gICAgICAgIHJldHVybiB0aGlzLmhhdmVCdWZmZXIoKTtcbiAgICAgIH1cbiAgICAgIGhhdmVCdWZmZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlpIDwgdGhpcy5fYnVmLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJ1bk9uZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUucGFyc2VyLmNhbGwodGhpcywgdGhpcy5zdGF0ZS5yZXR1cm5lZCk7XG4gICAgICB9XG4gICAgICBmaW5pc2goKSB7XG4gICAgICAgIHRoaXMuY2hhciA9IFBhcnNlckVORDtcbiAgICAgICAgbGV0IGxhc3Q7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBsYXN0ID0gdGhpcy5zdGF0ZS5wYXJzZXI7XG4gICAgICAgICAgdGhpcy5ydW5PbmUoKTtcbiAgICAgICAgfSB3aGlsZSAodGhpcy5zdGF0ZS5wYXJzZXIgIT09IGxhc3QpO1xuICAgICAgICB0aGlzLmN0eCA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLl9idWYgPSBudWxsO1xuICAgICAgICByZXR1cm4gdGhpcy5vYmo7XG4gICAgICB9XG4gICAgICBuZXh0KGZuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZm4gIT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXJyb3IoXCJUcmllZCB0byBzZXQgc3RhdGUgdG8gbm9uLWV4aXN0ZW50IHN0YXRlOiBcIiArIEpTT04uc3RyaW5naWZ5KGZuKSk7XG4gICAgICAgIHRoaXMuc3RhdGUucGFyc2VyID0gZm47XG4gICAgICB9XG4gICAgICBnb3RvKGZuKSB7XG4gICAgICAgIHRoaXMubmV4dChmbik7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bk9uZSgpO1xuICAgICAgfVxuICAgICAgY2FsbChmbiwgcmV0dXJuV2l0aCkge1xuICAgICAgICBpZiAocmV0dXJuV2l0aClcbiAgICAgICAgICB0aGlzLm5leHQocmV0dXJuV2l0aCk7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnN0YXRlKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ldyBTdGF0ZShmbik7XG4gICAgICB9XG4gICAgICBjYWxsTm93KGZuLCByZXR1cm5XaXRoKSB7XG4gICAgICAgIHRoaXMuY2FsbChmbiwgcmV0dXJuV2l0aCk7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bk9uZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihcIlN0YWNrIHVuZGVyZmxvd1wiKSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdm9pZCAwKVxuICAgICAgICAgIHZhbHVlID0gdGhpcy5zdGF0ZS5idWY7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICB0aGlzLnN0YXRlLnJldHVybmVkID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm5Ob3codmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZXR1cm4odmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5ydW5PbmUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN1bWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXIgPT09IFBhcnNlckVORClcbiAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihcIlVuZXhwZWN0ZWQgZW5kLW9mLWJ1ZmZlclwiKSk7XG4gICAgICAgIHRoaXMuc3RhdGUuYnVmICs9IHRoaXMuX2J1Zlt0aGlzLmlpXTtcbiAgICAgIH1cbiAgICAgIGVycm9yKGVycikge1xuICAgICAgICBlcnIubGluZSA9IHRoaXMubGluZTtcbiAgICAgICAgZXJyLmNvbCA9IHRoaXMuY29sO1xuICAgICAgICBlcnIucG9zID0gdGhpcy5wb3M7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgICB9XG4gICAgICBwYXJzZVN0YXJ0KCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXJyb3IoXCJNdXN0IGRlY2xhcmUgYSBwYXJzZVN0YXJ0IG1ldGhvZFwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIFBhcnNlci5FTkQgPSBQYXJzZXJFTkQ7XG4gICAgUGFyc2VyLkVycm9yID0gUGFyc2VyRXJyb3I7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gUGFyc2VyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NyZWF0ZV9kYXRldGltZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQGlhcm5hL3RvbWwvbGliL2NyZWF0ZS1kYXRldGltZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgaWYgKGlzTmFOKGRhdGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIERhdGV0aW1lXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9mb3JtYXRfbnVtID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9AaWFybmEvdG9tbC9saWIvZm9ybWF0LW51bS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKGQsIG51bSkgPT4ge1xuICAgICAgbnVtID0gU3RyaW5nKG51bSk7XG4gICAgICB3aGlsZSAobnVtLmxlbmd0aCA8IGQpXG4gICAgICAgIG51bSA9IFwiMFwiICsgbnVtO1xuICAgICAgcmV0dXJuIG51bTtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NyZWF0ZV9kYXRldGltZV9mbG9hdCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQGlhcm5hL3RvbWwvbGliL2NyZWF0ZS1kYXRldGltZS1mbG9hdC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGYgPSByZXF1aXJlX2Zvcm1hdF9udW0oKTtcbiAgICB2YXIgRmxvYXRpbmdEYXRlVGltZSA9IGNsYXNzIGV4dGVuZHMgRGF0ZSB7XG4gICAgICBjb25zdHJ1Y3Rvcih2YWx1ZSkge1xuICAgICAgICBzdXBlcih2YWx1ZSArIFwiWlwiKTtcbiAgICAgICAgdGhpcy5pc0Zsb2F0aW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRvSVNPU3RyaW5nKCkge1xuICAgICAgICBjb25zdCBkYXRlID0gYCR7dGhpcy5nZXRVVENGdWxsWWVhcigpfS0ke2YoMiwgdGhpcy5nZXRVVENNb250aCgpICsgMSl9LSR7ZigyLCB0aGlzLmdldFVUQ0RhdGUoKSl9YDtcbiAgICAgICAgY29uc3QgdGltZSA9IGAke2YoMiwgdGhpcy5nZXRVVENIb3VycygpKX06JHtmKDIsIHRoaXMuZ2V0VVRDTWludXRlcygpKX06JHtmKDIsIHRoaXMuZ2V0VVRDU2Vjb25kcygpKX0uJHtmKDMsIHRoaXMuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpfWA7XG4gICAgICAgIHJldHVybiBgJHtkYXRlfVQke3RpbWV9YDtcbiAgICAgIH1cbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBGbG9hdGluZ0RhdGVUaW1lKHZhbHVlKTtcbiAgICAgIGlmIChpc05hTihkYXRlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBEYXRldGltZVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY3JlYXRlX2RhdGUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BpYXJuYS90b21sL2xpYi9jcmVhdGUtZGF0ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGYgPSByZXF1aXJlX2Zvcm1hdF9udW0oKTtcbiAgICB2YXIgRGF0ZVRpbWUgPSBnbG9iYWwuRGF0ZTtcbiAgICB2YXIgRGF0ZTIgPSBjbGFzcyBleHRlbmRzIERhdGVUaW1lIHtcbiAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlKTtcbiAgICAgICAgdGhpcy5pc0RhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdG9JU09TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldFVUQ0Z1bGxZZWFyKCl9LSR7ZigyLCB0aGlzLmdldFVUQ01vbnRoKCkgKyAxKX0tJHtmKDIsIHRoaXMuZ2V0VVRDRGF0ZSgpKX1gO1xuICAgICAgfVxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUyKHZhbHVlKTtcbiAgICAgIGlmIChpc05hTihkYXRlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBEYXRldGltZVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY3JlYXRlX3RpbWUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BpYXJuYS90b21sL2xpYi9jcmVhdGUtdGltZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGYgPSByZXF1aXJlX2Zvcm1hdF9udW0oKTtcbiAgICB2YXIgVGltZSA9IGNsYXNzIGV4dGVuZHMgRGF0ZSB7XG4gICAgICBjb25zdHJ1Y3Rvcih2YWx1ZSkge1xuICAgICAgICBzdXBlcihgMDAwMC0wMS0wMVQke3ZhbHVlfVpgKTtcbiAgICAgICAgdGhpcy5pc1RpbWUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdG9JU09TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgJHtmKDIsIHRoaXMuZ2V0VVRDSG91cnMoKSl9OiR7ZigyLCB0aGlzLmdldFVUQ01pbnV0ZXMoKSl9OiR7ZigyLCB0aGlzLmdldFVUQ1NlY29uZHMoKSl9LiR7ZigzLCB0aGlzLmdldFVUQ01pbGxpc2Vjb25kcygpKX1gO1xuICAgICAgfVxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IFRpbWUodmFsdWUpO1xuICAgICAgaWYgKGlzTmFOKGRhdGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIERhdGV0aW1lXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV90b21sX3BhcnNlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQGlhcm5hL3RvbWwvbGliL3RvbWwtcGFyc2VyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBtYWtlUGFyc2VyQ2xhc3MocmVxdWlyZV9wYXJzZXIyKCkpO1xuICAgIG1vZHVsZTIuZXhwb3J0cy5tYWtlUGFyc2VyQ2xhc3MgPSBtYWtlUGFyc2VyQ2xhc3M7XG4gICAgdmFyIFRvbWxFcnJvciA9IGNsYXNzIGV4dGVuZHMgRXJyb3Ige1xuICAgICAgY29uc3RydWN0b3IobXNnKSB7XG4gICAgICAgIHN1cGVyKG1zZyk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiVG9tbEVycm9yXCI7XG4gICAgICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBUb21sRXJyb3IpO1xuICAgICAgICB0aGlzLmZyb21UT01MID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53cmFwcGVkID0gbnVsbDtcbiAgICAgIH1cbiAgICB9O1xuICAgIFRvbWxFcnJvci53cmFwID0gKGVycikgPT4ge1xuICAgICAgY29uc3QgdGVyciA9IG5ldyBUb21sRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgdGVyci5jb2RlID0gZXJyLmNvZGU7XG4gICAgICB0ZXJyLndyYXBwZWQgPSBlcnI7XG4gICAgICByZXR1cm4gdGVycjtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cy5Ub21sRXJyb3IgPSBUb21sRXJyb3I7XG4gICAgdmFyIGNyZWF0ZURhdGVUaW1lID0gcmVxdWlyZV9jcmVhdGVfZGF0ZXRpbWUoKTtcbiAgICB2YXIgY3JlYXRlRGF0ZVRpbWVGbG9hdCA9IHJlcXVpcmVfY3JlYXRlX2RhdGV0aW1lX2Zsb2F0KCk7XG4gICAgdmFyIGNyZWF0ZURhdGUgPSByZXF1aXJlX2NyZWF0ZV9kYXRlKCk7XG4gICAgdmFyIGNyZWF0ZVRpbWUgPSByZXF1aXJlX2NyZWF0ZV90aW1lKCk7XG4gICAgdmFyIENUUkxfSSA9IDk7XG4gICAgdmFyIENUUkxfSiA9IDEwO1xuICAgIHZhciBDVFJMX00gPSAxMztcbiAgICB2YXIgQ1RSTF9DSEFSX0JPVU5EQVJZID0gMzE7XG4gICAgdmFyIENIQVJfU1AgPSAzMjtcbiAgICB2YXIgQ0hBUl9RVU9UID0gMzQ7XG4gICAgdmFyIENIQVJfTlVNID0gMzU7XG4gICAgdmFyIENIQVJfQVBPUyA9IDM5O1xuICAgIHZhciBDSEFSX1BMVVMgPSA0MztcbiAgICB2YXIgQ0hBUl9DT01NQSA9IDQ0O1xuICAgIHZhciBDSEFSX0hZUEhFTiA9IDQ1O1xuICAgIHZhciBDSEFSX1BFUklPRCA9IDQ2O1xuICAgIHZhciBDSEFSXzAgPSA0ODtcbiAgICB2YXIgQ0hBUl8xID0gNDk7XG4gICAgdmFyIENIQVJfNyA9IDU1O1xuICAgIHZhciBDSEFSXzkgPSA1NztcbiAgICB2YXIgQ0hBUl9DT0xPTiA9IDU4O1xuICAgIHZhciBDSEFSX0VRVUFMUyA9IDYxO1xuICAgIHZhciBDSEFSX0EgPSA2NTtcbiAgICB2YXIgQ0hBUl9FID0gNjk7XG4gICAgdmFyIENIQVJfRiA9IDcwO1xuICAgIHZhciBDSEFSX1QgPSA4NDtcbiAgICB2YXIgQ0hBUl9VID0gODU7XG4gICAgdmFyIENIQVJfWiA9IDkwO1xuICAgIHZhciBDSEFSX0xPV0JBUiA9IDk1O1xuICAgIHZhciBDSEFSX2EgPSA5NztcbiAgICB2YXIgQ0hBUl9iID0gOTg7XG4gICAgdmFyIENIQVJfZSA9IDEwMTtcbiAgICB2YXIgQ0hBUl9mID0gMTAyO1xuICAgIHZhciBDSEFSX2kgPSAxMDU7XG4gICAgdmFyIENIQVJfbCA9IDEwODtcbiAgICB2YXIgQ0hBUl9uID0gMTEwO1xuICAgIHZhciBDSEFSX28gPSAxMTE7XG4gICAgdmFyIENIQVJfciA9IDExNDtcbiAgICB2YXIgQ0hBUl9zID0gMTE1O1xuICAgIHZhciBDSEFSX3QgPSAxMTY7XG4gICAgdmFyIENIQVJfdSA9IDExNztcbiAgICB2YXIgQ0hBUl94ID0gMTIwO1xuICAgIHZhciBDSEFSX3ogPSAxMjI7XG4gICAgdmFyIENIQVJfTENVQiA9IDEyMztcbiAgICB2YXIgQ0hBUl9SQ1VCID0gMTI1O1xuICAgIHZhciBDSEFSX0xTUUIgPSA5MTtcbiAgICB2YXIgQ0hBUl9CU09MID0gOTI7XG4gICAgdmFyIENIQVJfUlNRQiA9IDkzO1xuICAgIHZhciBDSEFSX0RFTCA9IDEyNztcbiAgICB2YXIgU1VSUk9HQVRFX0ZJUlNUID0gNTUyOTY7XG4gICAgdmFyIFNVUlJPR0FURV9MQVNUID0gNTczNDM7XG4gICAgdmFyIGVzY2FwZXMgPSB7XG4gICAgICBbQ0hBUl9iXTogXCJcXGJcIixcbiAgICAgIFtDSEFSX3RdOiBcIlx0XCIsXG4gICAgICBbQ0hBUl9uXTogXCJcXG5cIixcbiAgICAgIFtDSEFSX2ZdOiBcIlxcZlwiLFxuICAgICAgW0NIQVJfcl06IFwiXFxyXCIsXG4gICAgICBbQ0hBUl9RVU9UXTogJ1wiJyxcbiAgICAgIFtDSEFSX0JTT0xdOiBcIlxcXFxcIlxuICAgIH07XG4gICAgZnVuY3Rpb24gaXNEaWdpdChjcCkge1xuICAgICAgcmV0dXJuIGNwID49IENIQVJfMCAmJiBjcCA8PSBDSEFSXzk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSGV4aXQoY3ApIHtcbiAgICAgIHJldHVybiBjcCA+PSBDSEFSX0EgJiYgY3AgPD0gQ0hBUl9GIHx8IGNwID49IENIQVJfYSAmJiBjcCA8PSBDSEFSX2YgfHwgY3AgPj0gQ0hBUl8wICYmIGNwIDw9IENIQVJfOTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNCaXQoY3ApIHtcbiAgICAgIHJldHVybiBjcCA9PT0gQ0hBUl8xIHx8IGNwID09PSBDSEFSXzA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzT2N0aXQoY3ApIHtcbiAgICAgIHJldHVybiBjcCA+PSBDSEFSXzAgJiYgY3AgPD0gQ0hBUl83O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0FscGhhTnVtUXVvdGVIeXBoZW4oY3ApIHtcbiAgICAgIHJldHVybiBjcCA+PSBDSEFSX0EgJiYgY3AgPD0gQ0hBUl9aIHx8IGNwID49IENIQVJfYSAmJiBjcCA8PSBDSEFSX3ogfHwgY3AgPj0gQ0hBUl8wICYmIGNwIDw9IENIQVJfOSB8fCBjcCA9PT0gQ0hBUl9BUE9TIHx8IGNwID09PSBDSEFSX1FVT1QgfHwgY3AgPT09IENIQVJfTE9XQkFSIHx8IGNwID09PSBDSEFSX0hZUEhFTjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNBbHBoYU51bUh5cGhlbihjcCkge1xuICAgICAgcmV0dXJuIGNwID49IENIQVJfQSAmJiBjcCA8PSBDSEFSX1ogfHwgY3AgPj0gQ0hBUl9hICYmIGNwIDw9IENIQVJfeiB8fCBjcCA+PSBDSEFSXzAgJiYgY3AgPD0gQ0hBUl85IHx8IGNwID09PSBDSEFSX0xPV0JBUiB8fCBjcCA9PT0gQ0hBUl9IWVBIRU47XG4gICAgfVxuICAgIHZhciBfdHlwZSA9IFN5bWJvbChcInR5cGVcIik7XG4gICAgdmFyIF9kZWNsYXJlZCA9IFN5bWJvbChcImRlY2xhcmVkXCIpO1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuICAgIHZhciBkZXNjcmlwdG9yID0ge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHZvaWQgMFxuICAgIH07XG4gICAgZnVuY3Rpb24gaGFzS2V5KG9iaiwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGtleSA9PT0gXCJfX3Byb3RvX19cIilcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqLCBcIl9fcHJvdG9fX1wiLCBkZXNjcmlwdG9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIElOTElORV9UQUJMRSA9IFN5bWJvbChcImlubGluZS10YWJsZVwiKTtcbiAgICBmdW5jdGlvbiBJbmxpbmVUYWJsZSgpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSwge1xuICAgICAgICBbX3R5cGVdOiB7XG4gICAgICAgICAgdmFsdWU6IElOTElORV9UQUJMRVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNJbmxpbmVUYWJsZShvYmopIHtcbiAgICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIG9ialtfdHlwZV0gPT09IElOTElORV9UQUJMRTtcbiAgICB9XG4gICAgdmFyIFRBQkxFID0gU3ltYm9sKFwidGFibGVcIik7XG4gICAgZnVuY3Rpb24gVGFibGUoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIHtcbiAgICAgICAgW190eXBlXToge1xuICAgICAgICAgIHZhbHVlOiBUQUJMRVxuICAgICAgICB9LFxuICAgICAgICBbX2RlY2xhcmVkXToge1xuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNUYWJsZShvYmopIHtcbiAgICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIG9ialtfdHlwZV0gPT09IFRBQkxFO1xuICAgIH1cbiAgICB2YXIgX2NvbnRlbnRUeXBlID0gU3ltYm9sKFwiY29udGVudC10eXBlXCIpO1xuICAgIHZhciBJTkxJTkVfTElTVCA9IFN5bWJvbChcImlubGluZS1saXN0XCIpO1xuICAgIGZ1bmN0aW9uIElubGluZUxpc3QodHlwZSkge1xuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFtdLCB7XG4gICAgICAgIFtfdHlwZV06IHtcbiAgICAgICAgICB2YWx1ZTogSU5MSU5FX0xJU1RcbiAgICAgICAgfSxcbiAgICAgICAgW19jb250ZW50VHlwZV06IHtcbiAgICAgICAgICB2YWx1ZTogdHlwZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNJbmxpbmVMaXN0KG9iaikge1xuICAgICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gb2JqW190eXBlXSA9PT0gSU5MSU5FX0xJU1Q7XG4gICAgfVxuICAgIHZhciBMSVNUID0gU3ltYm9sKFwibGlzdFwiKTtcbiAgICBmdW5jdGlvbiBMaXN0KCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFtdLCB7XG4gICAgICAgIFtfdHlwZV06IHtcbiAgICAgICAgICB2YWx1ZTogTElTVFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNMaXN0KG9iaikge1xuICAgICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gb2JqW190eXBlXSA9PT0gTElTVDtcbiAgICB9XG4gICAgdmFyIF9jdXN0b207XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHV0aWxJbnNwZWN0ID0gcmVxdWlyZShcInV0aWxcIikuaW5zcGVjdDtcbiAgICAgIF9jdXN0b20gPSB1dGlsSW5zcGVjdC5jdXN0b207XG4gICAgfSBjYXRjaCAoXykge1xuICAgIH1cbiAgICB2YXIgX2luc3BlY3QgPSBfY3VzdG9tIHx8IFwiaW5zcGVjdFwiO1xuICAgIHZhciBCb3hlZEJpZ0ludCA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IGdsb2JhbC5CaWdJbnQuYXNJbnROKDY0LCB2YWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgX3R5cGUsIHtcbiAgICAgICAgICB2YWx1ZTogSU5URUdFUlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlzTmFOKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgICAgW19pbnNwZWN0XSgpIHtcbiAgICAgICAgcmV0dXJuIGBbQmlnSW50OiAke3RoaXMudG9TdHJpbmcoKX1dfWA7XG4gICAgICB9XG4gICAgICB2YWx1ZU9mKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBJTlRFR0VSID0gU3ltYm9sKFwiaW50ZWdlclwiKTtcbiAgICBmdW5jdGlvbiBJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICBsZXQgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmIChPYmplY3QuaXMobnVtLCAtMCkpXG4gICAgICAgIG51bSA9IDA7XG4gICAgICBpZiAoZ2xvYmFsLkJpZ0ludCAmJiAhTnVtYmVyLmlzU2FmZUludGVnZXIobnVtKSkge1xuICAgICAgICByZXR1cm4gbmV3IEJveGVkQmlnSW50KHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuZXcgTnVtYmVyKG51bSksIHtcbiAgICAgICAgICBpc05hTjoge1xuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZXR1cm4gaXNOYU4odGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbX3R5cGVdOiB7XG4gICAgICAgICAgICB2YWx1ZTogSU5URUdFUlxuICAgICAgICAgIH0sXG4gICAgICAgICAgW19pbnNwZWN0XToge1xuICAgICAgICAgICAgdmFsdWU6ICgpID0+IGBbSW50ZWdlcjogJHt2YWx1ZX1dYFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSW50ZWdlcihvYmopIHtcbiAgICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIG9ialtfdHlwZV0gPT09IElOVEVHRVI7XG4gICAgfVxuICAgIHZhciBGTE9BVCA9IFN5bWJvbChcImZsb2F0XCIpO1xuICAgIGZ1bmN0aW9uIEZsb2F0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobmV3IE51bWJlcih2YWx1ZSksIHtcbiAgICAgICAgW190eXBlXToge1xuICAgICAgICAgIHZhbHVlOiBGTE9BVFxuICAgICAgICB9LFxuICAgICAgICBbX2luc3BlY3RdOiB7XG4gICAgICAgICAgdmFsdWU6ICgpID0+IGBbRmxvYXQ6ICR7dmFsdWV9XWBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRmxvYXQob2JqKSB7XG4gICAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBvYmpbX3R5cGVdID09PSBGTE9BVDtcbiAgICB9XG4gICAgZnVuY3Rpb24gdG9tbFR5cGUodmFsdWUpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBpZiAodHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICAgIHJldHVybiBcImRhdGV0aW1lXCI7XG4gICAgICAgIGlmIChfdHlwZSBpbiB2YWx1ZSkge1xuICAgICAgICAgIHN3aXRjaCAodmFsdWVbX3R5cGVdKSB7XG4gICAgICAgICAgICBjYXNlIElOTElORV9UQUJMRTpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiaW5saW5lLXRhYmxlXCI7XG4gICAgICAgICAgICBjYXNlIElOTElORV9MSVNUOlxuICAgICAgICAgICAgICByZXR1cm4gXCJpbmxpbmUtbGlzdFwiO1xuICAgICAgICAgICAgY2FzZSBUQUJMRTpcbiAgICAgICAgICAgICAgcmV0dXJuIFwidGFibGVcIjtcbiAgICAgICAgICAgIGNhc2UgTElTVDpcbiAgICAgICAgICAgICAgcmV0dXJuIFwibGlzdFwiO1xuICAgICAgICAgICAgY2FzZSBGTE9BVDpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiZmxvYXRcIjtcbiAgICAgICAgICAgIGNhc2UgSU5URUdFUjpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiaW50ZWdlclwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1ha2VQYXJzZXJDbGFzcyhQYXJzZXIpIHtcbiAgICAgIGNsYXNzIFRPTUxQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgIHRoaXMuY3R4ID0gdGhpcy5vYmogPSBUYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGF0RW5kT2ZXb3JkKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNoYXIgPT09IENIQVJfTlVNIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JIHx8IHRoaXMuY2hhciA9PT0gQ0hBUl9TUCB8fCB0aGlzLmF0RW5kT2ZMaW5lKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXRFbmRPZkxpbmUoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2hhciA9PT0gUGFyc2VyLkVORCB8fCB0aGlzLmNoYXIgPT09IENUUkxfSiB8fCB0aGlzLmNoYXIgPT09IENUUkxfTTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZVN0YXJ0KCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IFBhcnNlci5FTkQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX0xTUUIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZVRhYmxlT3JMaXN0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9OVU0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZUNvbW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDVFJMX0ogfHwgdGhpcy5jaGFyID09PSBDSEFSX1NQIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9NKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQWxwaGFOdW1RdW90ZUh5cGhlbih0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsTm93KHRoaXMucGFyc2VBc3NpZ25TdGF0ZW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoYFVua25vd24gY2hhcmFjdGVyIFwiJHt0aGlzLmNoYXJ9XCJgKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlV2hpdGVzcGFjZVRvRU9MKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfU1AgfHwgdGhpcy5jaGFyID09PSBDVFJMX0kgfHwgdGhpcy5jaGFyID09PSBDVFJMX00pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX05VTSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlQ29tbWVudCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IFBhcnNlci5FTkQgfHwgdGhpcy5jaGFyID09PSBDVFJMX0opIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbmV4cGVjdGVkIGNoYXJhY3RlciwgZXhwZWN0ZWQgb25seSB3aGl0ZXNwYWNlIG9yIGNvbW1lbnRzIHRpbGwgZW5kIG9mIGxpbmVcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUFzc2lnblN0YXRlbWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsTm93KHRoaXMucGFyc2VBc3NpZ24sIHRoaXMucmVjb3JkQXNzaWduU3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmRBc3NpZ25TdGF0ZW1lbnQoa3YpIHtcbiAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5jdHg7XG4gICAgICAgICAgbGV0IGZpbmFsS2V5ID0ga3Yua2V5LnBvcCgpO1xuICAgICAgICAgIGZvciAobGV0IGt3IG9mIGt2LmtleSkge1xuICAgICAgICAgICAgaWYgKGhhc0tleSh0YXJnZXQsIGt3KSAmJiAoIWlzVGFibGUodGFyZ2V0W2t3XSkgfHwgdGFyZ2V0W2t3XVtfZGVjbGFyZWRdKSkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJDYW4ndCByZWRlZmluZSBleGlzdGluZyBrZXlcIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0W2t3XSA9IHRhcmdldFtrd10gfHwgVGFibGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhc0tleSh0YXJnZXQsIGZpbmFsS2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiQ2FuJ3QgcmVkZWZpbmUgZXhpc3Rpbmcga2V5XCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzSW50ZWdlcihrdi52YWx1ZSkgfHwgaXNGbG9hdChrdi52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRhcmdldFtmaW5hbEtleV0gPSBrdi52YWx1ZS52YWx1ZU9mKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldFtmaW5hbEtleV0gPSBrdi52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlV2hpdGVzcGFjZVRvRU9MKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZUFzc2lnbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsTm93KHRoaXMucGFyc2VLZXl3b3JkLCB0aGlzLnJlY29yZEFzc2lnbktleXdvcmQpO1xuICAgICAgICB9XG4gICAgICAgIHJlY29yZEFzc2lnbktleXdvcmQoa2V5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuc3RhdGUucmVzdWx0VGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0VGFibGUucHVzaChrZXkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdFRhYmxlID0gW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUFzc2lnbktleXdvcmRQcmVEb3QpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnNlQXNzaWduS2V5d29yZFByZURvdCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1BFUklPRCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlQXNzaWduS2V5d29yZFBvc3REb3QpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyICE9PSBDSEFSX1NQICYmIHRoaXMuY2hhciAhPT0gQ1RSTF9JKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VBc3NpZ25FcXVhbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlQXNzaWduS2V5d29yZFBvc3REb3QoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciAhPT0gQ0hBUl9TUCAmJiB0aGlzLmNoYXIgIT09IENUUkxfSSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbE5vdyh0aGlzLnBhcnNlS2V5d29yZCwgdGhpcy5yZWNvcmRBc3NpZ25LZXl3b3JkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VBc3NpZ25FcXVhbCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX0VRVUFMUykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlQXNzaWduUHJlVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyLCBleHBlY3RlZCBcIj1cIicpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VBc3NpZ25QcmVWYWx1ZSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1NQIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbE5vdyh0aGlzLnBhcnNlVmFsdWUsIHRoaXMucmVjb3JkQXNzaWduVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZWNvcmRBc3NpZ25WYWx1ZSh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdyh7XG4gICAgICAgICAgICBrZXk6IHRoaXMuc3RhdGUucmVzdWx0VGFibGUsXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHBhcnNlQ29tbWVudCgpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBQYXJzZXIuRU5EIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9KKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKHRoaXMubmV4dENoYXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUYWJsZU9yTGlzdCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX0xTUUIpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dCh0aGlzLnBhcnNlTGlzdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZVRhYmxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUYWJsZSgpIHtcbiAgICAgICAgICB0aGlzLmN0eCA9IHRoaXMub2JqO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZVRhYmxlTmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUYWJsZU5leHQoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9TUCB8fCB0aGlzLmNoYXIgPT09IENUUkxfSSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGxOb3codGhpcy5wYXJzZUtleXdvcmQsIHRoaXMucGFyc2VUYWJsZU1vcmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZVRhYmxlTW9yZShrZXl3b3JkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9TUCB8fCB0aGlzLmNoYXIgPT09IENUUkxfSSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUlNRQikge1xuICAgICAgICAgICAgaWYgKGhhc0tleSh0aGlzLmN0eCwga2V5d29yZCkgJiYgKCFpc1RhYmxlKHRoaXMuY3R4W2tleXdvcmRdKSB8fCB0aGlzLmN0eFtrZXl3b3JkXVtfZGVjbGFyZWRdKSkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJDYW4ndCByZWRlZmluZSBleGlzdGluZyBrZXlcIikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jdHggPSB0aGlzLmN0eFtrZXl3b3JkXSA9IHRoaXMuY3R4W2tleXdvcmRdIHx8IFRhYmxlKCk7XG4gICAgICAgICAgICAgIHRoaXMuY3R4W19kZWNsYXJlZF0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlV2hpdGVzcGFjZVRvRU9MKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9QRVJJT0QpIHtcbiAgICAgICAgICAgIGlmICghaGFzS2V5KHRoaXMuY3R4LCBrZXl3b3JkKSkge1xuICAgICAgICAgICAgICB0aGlzLmN0eCA9IHRoaXMuY3R4W2tleXdvcmRdID0gVGFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNUYWJsZSh0aGlzLmN0eFtrZXl3b3JkXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5jdHggPSB0aGlzLmN0eFtrZXl3b3JkXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNMaXN0KHRoaXMuY3R4W2tleXdvcmRdKSkge1xuICAgICAgICAgICAgICB0aGlzLmN0eCA9IHRoaXMuY3R4W2tleXdvcmRdW3RoaXMuY3R4W2tleXdvcmRdLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiQ2FuJ3QgcmVkZWZpbmUgZXhpc3Rpbmcga2V5XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZVRhYmxlTmV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyLCBleHBlY3RlZCB3aGl0ZXNwYWNlLCAuIG9yIF1cIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUxpc3QoKSB7XG4gICAgICAgICAgdGhpcy5jdHggPSB0aGlzLm9iajtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VMaXN0TmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VMaXN0TmV4dCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1NQIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbE5vdyh0aGlzLnBhcnNlS2V5d29yZCwgdGhpcy5wYXJzZUxpc3RNb3JlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VMaXN0TW9yZShrZXl3b3JkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9TUCB8fCB0aGlzLmNoYXIgPT09IENUUkxfSSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUlNRQikge1xuICAgICAgICAgICAgaWYgKCFoYXNLZXkodGhpcy5jdHgsIGtleXdvcmQpKSB7XG4gICAgICAgICAgICAgIHRoaXMuY3R4W2tleXdvcmRdID0gTGlzdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSW5saW5lTGlzdCh0aGlzLmN0eFtrZXl3b3JkXSkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiQ2FuJ3QgZXh0ZW5kIGFuIGlubGluZSBhcnJheVwiKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGlzdCh0aGlzLmN0eFtrZXl3b3JkXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IFRhYmxlKCk7XG4gICAgICAgICAgICAgIHRoaXMuY3R4W2tleXdvcmRdLnB1c2gobmV4dCk7XG4gICAgICAgICAgICAgIHRoaXMuY3R4ID0gbmV4dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkNhbid0IHJlZGVmaW5lIGFuIGV4aXN0aW5nIGtleVwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VMaXN0RW5kKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9QRVJJT0QpIHtcbiAgICAgICAgICAgIGlmICghaGFzS2V5KHRoaXMuY3R4LCBrZXl3b3JkKSkge1xuICAgICAgICAgICAgICB0aGlzLmN0eCA9IHRoaXMuY3R4W2tleXdvcmRdID0gVGFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVMaXN0KHRoaXMuY3R4W2tleXdvcmRdKSkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJDYW4ndCBleHRlbmQgYW4gaW5saW5lIGFycmF5XCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVUYWJsZSh0aGlzLmN0eFtrZXl3b3JkXSkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiQ2FuJ3QgZXh0ZW5kIGFuIGlubGluZSB0YWJsZVwiKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGlzdCh0aGlzLmN0eFtrZXl3b3JkXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5jdHggPSB0aGlzLmN0eFtrZXl3b3JkXVt0aGlzLmN0eFtrZXl3b3JkXS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNUYWJsZSh0aGlzLmN0eFtrZXl3b3JkXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5jdHggPSB0aGlzLmN0eFtrZXl3b3JkXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkNhbid0IHJlZGVmaW5lIGFuIGV4aXN0aW5nIGtleVwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VMaXN0TmV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyLCBleHBlY3RlZCB3aGl0ZXNwYWNlLCAuIG9yIF1cIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUxpc3RFbmQoa2V5d29yZCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUlNRQikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlV2hpdGVzcGFjZVRvRU9MKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIsIGV4cGVjdGVkIHdoaXRlc3BhY2UsIC4gb3IgXVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlVmFsdWUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gUGFyc2VyLkVORCkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiS2V5IHdpdGhvdXQgdmFsdWVcIikpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX1FVT1QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZURvdWJsZVN0cmluZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfQVBPUykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlU2luZ2xlU3RyaW5nKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9IWVBIRU4gfHwgdGhpcy5jaGFyID09PSBDSEFSX1BMVVMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZU51bWJlclNpZ24pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX2kpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZUluZik7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlTmFuKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRGlnaXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlTnVtYmVyT3JEYXRlVGltZSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfdCB8fCB0aGlzLmNoYXIgPT09IENIQVJfZikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlQm9vbGVhbik7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfTFNRQikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlSW5saW5lTGlzdCwgdGhpcy5yZWNvcmRWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfTENVQikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlSW5saW5lVGFibGUsIHRoaXMucmVjb3JkVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbmV4cGVjdGVkIGNoYXJhY3RlciwgZXhwZWN0aW5nIHN0cmluZywgbnVtYmVyLCBkYXRldGltZSwgYm9vbGVhbiwgaW5saW5lIGFycmF5IG9yIGlubGluZSB0YWJsZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlY29yZFZhbHVlKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuTm93KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZUluZigpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZUluZjIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoJ1VuZXhwZWN0ZWQgY2hhcmFjdGVyLCBleHBlY3RlZCBcImluZlwiLCBcIitpbmZcIiBvciBcIi1pbmZcIicpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VJbmYyKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfZikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuYnVmID09PSBcIi1cIikge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm4oLUluZmluaXR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybihJbmZpbml0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcignVW5leHBlY3RlZCBjaGFyYWN0ZXIsIGV4cGVjdGVkIFwiaW5mXCIsIFwiK2luZlwiIG9yIFwiLWluZlwiJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZU5hbigpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX2EpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZU5hbjIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoJ1VuZXhwZWN0ZWQgY2hhcmFjdGVyLCBleHBlY3RlZCBcIm5hblwiJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZU5hbjIoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm4oTmFOKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKCdVbmV4cGVjdGVkIGNoYXJhY3RlciwgZXhwZWN0ZWQgXCJuYW5cIicpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VLZXl3b3JkKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUVVPVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlQmFzaWNTdHJpbmcpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX0FQT1MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZUxpdGVyYWxTdHJpbmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VCYXJlS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VCYXJlS2V5KCkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IFBhcnNlci5FTkQpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiS2V5IGVuZGVkIHdpdGhvdXQgdmFsdWVcIikpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FscGhhTnVtSHlwaGVuKHRoaXMuY2hhcikpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuYnVmLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJFbXB0eSBiYXJlIGtleXMgYXJlIG5vdCBhbGxvd2VkXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKHRoaXMubmV4dENoYXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VTaW5nbGVTdHJpbmcoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9BUE9TKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VMaXRlcmFsTXVsdGlTdHJpbmdNYXliZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUxpdGVyYWxTdHJpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUxpdGVyYWxTdHJpbmcoKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9BUE9TKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybigpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF0RW5kT2ZMaW5lKCkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW50ZXJtaW5hdGVkIHN0cmluZ1wiKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9ERUwgfHwgdGhpcy5jaGFyIDw9IENUUkxfQ0hBUl9CT1VOREFSWSAmJiB0aGlzLmNoYXIgIT09IENUUkxfSSkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yQ29udHJvbENoYXJJblN0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSB3aGlsZSAodGhpcy5uZXh0Q2hhcigpKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZUxpdGVyYWxNdWx0aVN0cmluZ01heWJlKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfQVBPUykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlTGl0ZXJhbE11bHRpU3RyaW5nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuTm93KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTGl0ZXJhbE11bHRpU3RyaW5nKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENUUkxfTSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENUUkxfSikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlTGl0ZXJhbE11bHRpU3RyaW5nQ29udGVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUxpdGVyYWxNdWx0aVN0cmluZ0NvbnRlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUxpdGVyYWxNdWx0aVN0cmluZ0NvbnRlbnQoKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9BUE9TKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZUxpdGVyYWxNdWx0aUVuZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gUGFyc2VyLkVORCkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbnRlcm1pbmF0ZWQgbXVsdGktbGluZSBzdHJpbmdcIikpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfREVMIHx8IHRoaXMuY2hhciA8PSBDVFJMX0NIQVJfQk9VTkRBUlkgJiYgdGhpcy5jaGFyICE9PSBDVFJMX0kgJiYgdGhpcy5jaGFyICE9PSBDVFJMX0ogJiYgdGhpcy5jaGFyICE9PSBDVFJMX00pIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvckNvbnRyb2xDaGFySW5TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKHRoaXMubmV4dENoYXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VMaXRlcmFsTXVsdGlFbmQoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9BUE9TKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VMaXRlcmFsTXVsdGlFbmQyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5idWYgKz0gXCInXCI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VMaXRlcmFsTXVsdGlTdHJpbmdDb250ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VMaXRlcmFsTXVsdGlFbmQyKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfQVBPUykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuYnVmICs9IFwiJydcIjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUxpdGVyYWxNdWx0aVN0cmluZ0NvbnRlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZURvdWJsZVN0cmluZygpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1FVT1QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZU11bHRpU3RyaW5nTWF5YmUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VCYXNpY1N0cmluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlQmFzaWNTdHJpbmcoKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9CU09MKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZUVzY2FwZSwgdGhpcy5yZWNvcmRFc2NhcGVSZXBsYWNlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9RVU9UKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybigpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF0RW5kT2ZMaW5lKCkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW50ZXJtaW5hdGVkIHN0cmluZ1wiKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9ERUwgfHwgdGhpcy5jaGFyIDw9IENUUkxfQ0hBUl9CT1VOREFSWSAmJiB0aGlzLmNoYXIgIT09IENUUkxfSSkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yQ29udHJvbENoYXJJblN0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSB3aGlsZSAodGhpcy5uZXh0Q2hhcigpKTtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmRFc2NhcGVSZXBsYWNlbWVudChyZXBsYWNlbWVudCkge1xuICAgICAgICAgIHRoaXMuc3RhdGUuYnVmICs9IHJlcGxhY2VtZW50O1xuICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUJhc2ljU3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZU11bHRpU3RyaW5nTWF5YmUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9RVU9UKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VNdWx0aVN0cmluZyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZU11bHRpU3RyaW5nKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENUUkxfTSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENUUkxfSikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlTXVsdGlTdHJpbmdDb250ZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlTXVsdGlTdHJpbmdDb250ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VNdWx0aVN0cmluZ0NvbnRlbnQoKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9CU09MKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZU11bHRpRXNjYXBlLCB0aGlzLnJlY29yZE11bHRpRXNjYXBlUmVwbGFjZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUVVPVCkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VNdWx0aUVuZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gUGFyc2VyLkVORCkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbnRlcm1pbmF0ZWQgbXVsdGktbGluZSBzdHJpbmdcIikpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfREVMIHx8IHRoaXMuY2hhciA8PSBDVFJMX0NIQVJfQk9VTkRBUlkgJiYgdGhpcy5jaGFyICE9PSBDVFJMX0kgJiYgdGhpcy5jaGFyICE9PSBDVFJMX0ogJiYgdGhpcy5jaGFyICE9PSBDVFJMX00pIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvckNvbnRyb2xDaGFySW5TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKHRoaXMubmV4dENoYXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3JDb250cm9sQ2hhckluU3RyaW5nKCkge1xuICAgICAgICAgIGxldCBkaXNwbGF5Q29kZSA9IFwiXFxcXHUwMFwiO1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPCAxNikge1xuICAgICAgICAgICAgZGlzcGxheUNvZGUgKz0gXCIwXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpc3BsYXlDb2RlICs9IHRoaXMuY2hhci50b1N0cmluZygxNik7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihgQ29udHJvbCBjaGFyYWN0ZXJzIChjb2RlcyA8IDB4MWYgYW5kIDB4N2YpIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpbmdzLCB1c2UgJHtkaXNwbGF5Q29kZX0gaW5zdGVhZGApKTtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmRNdWx0aUVzY2FwZVJlcGxhY2VtZW50KHJlcGxhY2VtZW50KSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZS5idWYgKz0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlTXVsdGlTdHJpbmdDb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZU11bHRpRW5kKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUVVPVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlTXVsdGlFbmQyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5idWYgKz0gJ1wiJztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZU11bHRpU3RyaW5nQ29udGVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTXVsdGlFbmQyKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUVVPVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuYnVmICs9ICdcIlwiJztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZU11bHRpU3RyaW5nQ29udGVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTXVsdGlFc2NhcGUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ1RSTF9NIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9KKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VNdWx0aVRyaW0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX1NQIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VQcmVNdWx0aVRyaW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VFc2NhcGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZVByZU11bHRpVHJpbSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1NQIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ1RSTF9NIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9KKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VNdWx0aVRyaW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJDYW4ndCBlc2NhcGUgd2hpdGVzcGFjZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTXVsdGlUcmltKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENUUkxfSiB8fCB0aGlzLmNoYXIgPT09IENIQVJfU1AgfHwgdGhpcy5jaGFyID09PSBDVFJMX0kgfHwgdGhpcy5jaGFyID09PSBDVFJMX00pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3coKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VFc2NhcGUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciBpbiBlc2NhcGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm4oZXNjYXBlc1t0aGlzLmNoYXJdKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl91KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMucGFyc2VTbWFsbFVuaWNvZGUsIHRoaXMucGFyc2VVbmljb2RlUmV0dXJuKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9VKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMucGFyc2VMYXJnZVVuaWNvZGUsIHRoaXMucGFyc2VVbmljb2RlUmV0dXJuKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW5rbm93biBlc2NhcGUgY2hhcmFjdGVyOiBcIiArIHRoaXMuY2hhcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZVVuaWNvZGVSZXR1cm4oY2hhcikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjb2RlUG9pbnQgPSBwYXJzZUludChjaGFyLCAxNik7XG4gICAgICAgICAgICBpZiAoY29kZVBvaW50ID49IFNVUlJPR0FURV9GSVJTVCAmJiBjb2RlUG9pbnQgPD0gU1VSUk9HQVRFX0xBU1QpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiSW52YWxpZCB1bmljb2RlLCBjaGFyYWN0ZXIgaW4gcmFuZ2UgMHhEODAwIC0gMHhERkZGIGlzIHJlc2VydmVkXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdyhTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IoVG9tbEVycm9yLndyYXAoZXJyKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlU21hbGxVbmljb2RlKCkge1xuICAgICAgICAgIGlmICghaXNIZXhpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJJbnZhbGlkIGNoYXJhY3RlciBpbiB1bmljb2RlIHNlcXVlbmNlLCBleHBlY3RlZCBoZXhcIikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmJ1Zi5sZW5ndGggPj0gNClcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTGFyZ2VVbmljb2RlKCkge1xuICAgICAgICAgIGlmICghaXNIZXhpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJJbnZhbGlkIGNoYXJhY3RlciBpbiB1bmljb2RlIHNlcXVlbmNlLCBleHBlY3RlZCBoZXhcIikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmJ1Zi5sZW5ndGggPj0gOClcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTnVtYmVyU2lnbigpIHtcbiAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VNYXliZVNpZ25lZEluZk9yTmFuKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZU1heWJlU2lnbmVkSW5mT3JOYW4oKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VJbmYpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZU5hbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGxOb3codGhpcy5wYXJzZU5vVW5kZXIsIHRoaXMucGFyc2VOdW1iZXJJbnRlZ2VyU3RhcnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZU51bWJlckludGVnZXJTdGFydCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSXzApIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlTnVtYmVySW50ZWdlckV4cG9uZW50T3JEZWNpbWFsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlTnVtYmVySW50ZWdlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTnVtYmVySW50ZWdlckV4cG9uZW50T3JEZWNpbWFsKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUEVSSU9EKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZU5vVW5kZXIsIHRoaXMucGFyc2VOdW1iZXJGbG9hdCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfRSB8fCB0aGlzLmNoYXIgPT09IENIQVJfZSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VOdW1iZXJFeHBvbmVudFNpZ24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3coSW50ZWdlcih0aGlzLnN0YXRlLmJ1ZikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZU51bWJlckludGVnZXIoKSB7XG4gICAgICAgICAgaWYgKGlzRGlnaXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfTE9XQkFSKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMucGFyc2VOb1VuZGVyKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9FIHx8IHRoaXMuY2hhciA9PT0gQ0hBUl9lKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZU51bWJlckV4cG9uZW50U2lnbik7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfUEVSSU9EKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZU5vVW5kZXIsIHRoaXMucGFyc2VOdW1iZXJGbG9hdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEludGVnZXIodGhpcy5zdGF0ZS5idWYpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05hTigpKSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgbnVtYmVyXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdyhyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZU5vVW5kZXIoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9MT1dCQVIgfHwgdGhpcy5jaGFyID09PSBDSEFSX1BFUklPRCB8fCB0aGlzLmNoYXIgPT09IENIQVJfRSB8fCB0aGlzLmNoYXIgPT09IENIQVJfZSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIsIGV4cGVjdGVkIGRpZ2l0XCIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXRFbmRPZldvcmQoKSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiSW5jb21wbGV0ZSBudW1iZXJcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3coKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZU5vVW5kZXJIZXhPY3RCaW5MaXRlcmFsKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfTE9XQkFSIHx8IHRoaXMuY2hhciA9PT0gQ0hBUl9QRVJJT0QpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyLCBleHBlY3RlZCBkaWdpdFwiKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF0RW5kT2ZXb3JkKCkpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkluY29tcGxldGUgbnVtYmVyXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuTm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VOdW1iZXJGbG9hdCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX0xPV0JBUikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlTm9VbmRlciwgdGhpcy5wYXJzZU51bWJlckZsb2F0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRGlnaXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfRSB8fCB0aGlzLmNoYXIgPT09IENIQVJfZSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VOdW1iZXJFeHBvbmVudFNpZ24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3coRmxvYXQodGhpcy5zdGF0ZS5idWYpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VOdW1iZXJFeHBvbmVudFNpZ24oKSB7XG4gICAgICAgICAgaWYgKGlzRGlnaXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlTnVtYmVyRXhwb25lbnQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX0hZUEhFTiB8fCB0aGlzLmNoYXIgPT09IENIQVJfUExVUykge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICB0aGlzLmNhbGwodGhpcy5wYXJzZU5vVW5kZXIsIHRoaXMucGFyc2VOdW1iZXJFeHBvbmVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyLCBleHBlY3RlZCAtLCArIG9yIGRpZ2l0XCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VOdW1iZXJFeHBvbmVudCgpIHtcbiAgICAgICAgICBpZiAoaXNEaWdpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9MT1dCQVIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZU5vVW5kZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3coRmxvYXQodGhpcy5zdGF0ZS5idWYpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VOdW1iZXJPckRhdGVUaW1lKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfMCkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VOdW1iZXJCYXNlT3JEYXRlVGltZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZU51bWJlck9yRGF0ZVRpbWVPbmx5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VOdW1iZXJPckRhdGVUaW1lT25seSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX0xPV0JBUikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlTm9VbmRlciwgdGhpcy5wYXJzZU51bWJlckludGVnZXIpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNEaWdpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmJ1Zi5sZW5ndGggPiA0KVxuICAgICAgICAgICAgICB0aGlzLm5leHQodGhpcy5wYXJzZU51bWJlckludGVnZXIpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX0UgfHwgdGhpcy5jaGFyID09PSBDSEFSX2UpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlTnVtYmVyRXhwb25lbnRTaWduKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9QRVJJT0QpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlTm9VbmRlciwgdGhpcy5wYXJzZU51bWJlckZsb2F0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9IWVBIRU4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZURhdGVUaW1lKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlT25seVRpbWVIb3VyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuTm93KEludGVnZXIodGhpcy5zdGF0ZS5idWYpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VEYXRlVGltZU9ubHkoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc3RhdGUuYnVmLmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGlmIChpc0RpZ2l0KHRoaXMuY2hhcikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfQ09MT04pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290byh0aGlzLnBhcnNlT25seVRpbWVIb3VyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkV4cGVjdGVkIGRpZ2l0IHdoaWxlIHBhcnNpbmcgeWVhciBwYXJ0IG9mIGEgZGF0ZVwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfSFlQSEVOKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZURhdGVUaW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkV4cGVjdGVkIGh5cGhlbiAoLSkgd2hpbGUgcGFyc2luZyB5ZWFyIHBhcnQgb2YgZGF0ZVwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlTnVtYmVyQmFzZU9yRGF0ZVRpbWUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9iKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodGhpcy5wYXJzZU5vVW5kZXJIZXhPY3RCaW5MaXRlcmFsLCB0aGlzLnBhcnNlSW50ZWdlckJpbik7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfbykge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMucGFyc2VOb1VuZGVySGV4T2N0QmluTGl0ZXJhbCwgdGhpcy5wYXJzZUludGVnZXJPY3QpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX3gpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlTm9VbmRlckhleE9jdEJpbkxpdGVyYWwsIHRoaXMucGFyc2VJbnRlZ2VySGV4KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9QRVJJT0QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZU51bWJlckludGVnZXIpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNEaWdpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VEYXRlVGltZU9ubHkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3coSW50ZWdlcih0aGlzLnN0YXRlLmJ1ZikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUludGVnZXJIZXgoKSB7XG4gICAgICAgICAgaWYgKGlzSGV4aXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfTE9XQkFSKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMucGFyc2VOb1VuZGVySGV4T2N0QmluTGl0ZXJhbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEludGVnZXIodGhpcy5zdGF0ZS5idWYpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05hTigpKSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgbnVtYmVyXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdyhyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUludGVnZXJPY3QoKSB7XG4gICAgICAgICAgaWYgKGlzT2N0aXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfTE9XQkFSKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMucGFyc2VOb1VuZGVySGV4T2N0QmluTGl0ZXJhbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEludGVnZXIodGhpcy5zdGF0ZS5idWYpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05hTigpKSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgbnVtYmVyXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdyhyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZUludGVnZXJCaW4oKSB7XG4gICAgICAgICAgaWYgKGlzQml0KHRoaXMuY2hhcikpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX0xPV0JBUikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlTm9VbmRlckhleE9jdEJpbkxpdGVyYWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBJbnRlZ2VyKHRoaXMuc3RhdGUuYnVmKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOYU4oKSkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJJbnZhbGlkIG51bWJlclwiKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3cocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VEYXRlVGltZSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5idWYubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiWWVhcnMgbGVzcyB0aGFuIDEwMDAgbXVzdCBiZSB6ZXJvIHBhZGRlZCB0byBmb3VyIGNoYXJhY3RlcnNcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdCA9IHRoaXMuc3RhdGUuYnVmO1xuICAgICAgICAgIHRoaXMuc3RhdGUuYnVmID0gXCJcIjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VEYXRlTW9udGgpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnNlRGF0ZU1vbnRoKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfSFlQSEVOKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5idWYubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJNb250aHMgbGVzcyB0aGFuIDEwIG11c3QgYmUgemVybyBwYWRkZWQgdG8gdHdvIGNoYXJhY3RlcnNcIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHQgKz0gXCItXCIgKyB0aGlzLnN0YXRlLmJ1ZjtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuYnVmID0gXCJcIjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZURhdGVEYXkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNEaWdpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiSW5jb21wbGV0ZSBkYXRldGltZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlRGF0ZURheSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1QgfHwgdGhpcy5jaGFyID09PSBDSEFSX1NQKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5idWYubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJEYXlzIGxlc3MgdGhhbiAxMCBtdXN0IGJlIHplcm8gcGFkZGVkIHRvIHR3byBjaGFyYWN0ZXJzXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0ICs9IFwiLVwiICsgdGhpcy5zdGF0ZS5idWY7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmJ1ZiA9IFwiXCI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VTdGFydFRpbWVIb3VyKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXRFbmRPZldvcmQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuTm93KGNyZWF0ZURhdGUodGhpcy5zdGF0ZS5yZXN1bHQgKyBcIi1cIiArIHRoaXMuc3RhdGUuYnVmKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0RpZ2l0KHRoaXMuY2hhcikpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJJbmNvbXBsZXRlIGRhdGV0aW1lXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VTdGFydFRpbWVIb3VyKCkge1xuICAgICAgICAgIGlmICh0aGlzLmF0RW5kT2ZXb3JkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdyhjcmVhdGVEYXRlKHRoaXMuc3RhdGUucmVzdWx0KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZVRpbWVIb3VyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUaW1lSG91cigpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5idWYubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJIb3VycyBsZXNzIHRoYW4gMTAgbXVzdCBiZSB6ZXJvIHBhZGRlZCB0byB0d28gY2hhcmFjdGVyc1wiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdCArPSBcIlRcIiArIHRoaXMuc3RhdGUuYnVmO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5idWYgPSBcIlwiO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlVGltZU1pbik7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0RpZ2l0KHRoaXMuY2hhcikpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJJbmNvbXBsZXRlIGRhdGV0aW1lXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUaW1lTWluKCkge1xuICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmJ1Zi5sZW5ndGggPCAyICYmIGlzRGlnaXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmJ1Zi5sZW5ndGggPT09IDIgJiYgdGhpcy5jaGFyID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdCArPSBcIjpcIiArIHRoaXMuc3RhdGUuYnVmO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5idWYgPSBcIlwiO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlVGltZVNlYyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkluY29tcGxldGUgZGF0ZXRpbWVcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZVRpbWVTZWMoKSB7XG4gICAgICAgICAgaWYgKGlzRGlnaXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5idWYubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0ICs9IFwiOlwiICsgdGhpcy5zdGF0ZS5idWY7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuYnVmID0gXCJcIjtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlVGltZVpvbmVPckZyYWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiSW5jb21wbGV0ZSBkYXRldGltZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlT25seVRpbWVIb3VyKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfQ09MT04pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmJ1Zi5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkhvdXJzIGxlc3MgdGhhbiAxMCBtdXN0IGJlIHplcm8gcGFkZGVkIHRvIHR3byBjaGFyYWN0ZXJzXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0ID0gdGhpcy5zdGF0ZS5idWY7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmJ1ZiA9IFwiXCI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VPbmx5VGltZU1pbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkluY29tcGxldGUgdGltZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlT25seVRpbWVNaW4oKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc3RhdGUuYnVmLmxlbmd0aCA8IDIgJiYgaXNEaWdpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuYnVmLmxlbmd0aCA9PT0gMiAmJiB0aGlzLmNoYXIgPT09IENIQVJfQ09MT04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0ICs9IFwiOlwiICsgdGhpcy5zdGF0ZS5idWY7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmJ1ZiA9IFwiXCI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VPbmx5VGltZVNlYyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkluY29tcGxldGUgdGltZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlT25seVRpbWVTZWMoKSB7XG4gICAgICAgICAgaWYgKGlzRGlnaXQodGhpcy5jaGFyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5idWYubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZU9ubHlUaW1lRnJhY3Rpb25NYXliZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkluY29tcGxldGUgdGltZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlT25seVRpbWVGcmFjdGlvbk1heWJlKCkge1xuICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0ICs9IFwiOlwiICsgdGhpcy5zdGF0ZS5idWY7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9QRVJJT0QpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuYnVmID0gXCJcIjtcbiAgICAgICAgICAgIHRoaXMubmV4dCh0aGlzLnBhcnNlT25seVRpbWVGcmFjdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybihjcmVhdGVUaW1lKHRoaXMuc3RhdGUucmVzdWx0KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlT25seVRpbWVGcmFjdGlvbigpIHtcbiAgICAgICAgICBpZiAoaXNEaWdpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXRFbmRPZldvcmQoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuYnVmLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiRXhwZWN0ZWQgZGlnaXQgaW4gbWlsbGlzZWNvbmRzXCIpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybk5vdyhjcmVhdGVUaW1lKHRoaXMuc3RhdGUucmVzdWx0ICsgXCIuXCIgKyB0aGlzLnN0YXRlLmJ1ZikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiBkYXRldGltZSwgZXhwZWN0ZWQgcGVyaW9kICguKSwgbWludXMgKC0pLCBwbHVzICgrKSBvciBaXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUaW1lWm9uZU9yRnJhY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9QRVJJT0QpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgdGhpcy5uZXh0KHRoaXMucGFyc2VEYXRlVGltZUZyYWN0aW9uKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9IWVBIRU4gfHwgdGhpcy5jaGFyID09PSBDSEFSX1BMVVMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgdGhpcy5uZXh0KHRoaXMucGFyc2VUaW1lWm9uZUhvdXIpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX1opIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuKGNyZWF0ZURhdGVUaW1lKHRoaXMuc3RhdGUucmVzdWx0ICsgdGhpcy5zdGF0ZS5idWYpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXRFbmRPZldvcmQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuTm93KGNyZWF0ZURhdGVUaW1lRmxvYXQodGhpcy5zdGF0ZS5yZXN1bHQgKyB0aGlzLnN0YXRlLmJ1ZikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiBkYXRldGltZSwgZXhwZWN0ZWQgcGVyaW9kICguKSwgbWludXMgKC0pLCBwbHVzICgrKSBvciBaXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VEYXRlVGltZUZyYWN0aW9uKCkge1xuICAgICAgICAgIGlmIChpc0RpZ2l0KHRoaXMuY2hhcikpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5idWYubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJFeHBlY3RlZCBkaWdpdCBpbiBtaWxsaXNlY29uZHNcIikpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX0hZUEhFTiB8fCB0aGlzLmNoYXIgPT09IENIQVJfUExVUykge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICB0aGlzLm5leHQodGhpcy5wYXJzZVRpbWVab25lSG91cik7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfWikge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm4oY3JlYXRlRGF0ZVRpbWUodGhpcy5zdGF0ZS5yZXN1bHQgKyB0aGlzLnN0YXRlLmJ1ZikpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdEVuZE9mV29yZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Ob3coY3JlYXRlRGF0ZVRpbWVGbG9hdCh0aGlzLnN0YXRlLnJlc3VsdCArIHRoaXMuc3RhdGUuYnVmKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIGluIGRhdGV0aW1lLCBleHBlY3RlZCBwZXJpb2QgKC4pLCBtaW51cyAoLSksIHBsdXMgKCspIG9yIFpcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZVRpbWVab25lSG91cigpIHtcbiAgICAgICAgICBpZiAoaXNEaWdpdCh0aGlzLmNoYXIpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIGlmICgvXFxkXFxkJC8udGVzdCh0aGlzLnN0YXRlLmJ1ZikpXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZVRpbWVab25lU2VwKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgaW4gZGF0ZXRpbWUsIGV4cGVjdGVkIGRpZ2l0XCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUaW1lWm9uZVNlcCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgICAgIHRoaXMubmV4dCh0aGlzLnBhcnNlVGltZVpvbmVNaW4pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbmV4cGVjdGVkIGNoYXJhY3RlciBpbiBkYXRldGltZSwgZXhwZWN0ZWQgY29sb25cIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZVRpbWVab25lTWluKCkge1xuICAgICAgICAgIGlmIChpc0RpZ2l0KHRoaXMuY2hhcikpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgaWYgKC9cXGRcXGQkLy50ZXN0KHRoaXMuc3RhdGUuYnVmKSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuKGNyZWF0ZURhdGVUaW1lKHRoaXMuc3RhdGUucmVzdWx0ICsgdGhpcy5zdGF0ZS5idWYpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgaW4gZGF0ZXRpbWUsIGV4cGVjdGVkIGRpZ2l0XCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VCb29sZWFuKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfdCkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VUcnVlX3IpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX2YpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlRmFsc2VfYSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlVHJ1ZV9yKCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfcikge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KHRoaXMucGFyc2VUcnVlX3UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJJbnZhbGlkIGJvb2xlYW4sIGV4cGVjdGVkIHRydWUgb3IgZmFsc2VcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXJzZVRydWVfdSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX3UpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlVHJ1ZV9lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiSW52YWxpZCBib29sZWFuLCBleHBlY3RlZCB0cnVlIG9yIGZhbHNlXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VUcnVlX2UoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm4odHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgYm9vbGVhbiwgZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlRmFsc2VfYSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX2EpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlRmFsc2VfbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgYm9vbGVhbiwgZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlRmFsc2VfbCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlRmFsc2Vfcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgYm9vbGVhbiwgZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlRmFsc2VfcygpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX3MpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCh0aGlzLnBhcnNlRmFsc2VfZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgYm9vbGVhbiwgZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlRmFsc2VfZSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybihmYWxzZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgYm9vbGVhbiwgZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhcnNlSW5saW5lTGlzdCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1NQIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9NIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9KKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gUGFyc2VyLkVORCkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW50ZXJtaW5hdGVkIGlubGluZSBhcnJheVwiKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfTlVNKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMucGFyc2VDb21tZW50KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9SU1FCKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm4odGhpcy5zdGF0ZS5yZXN1bHRBcnIgfHwgSW5saW5lTGlzdCgpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbE5vdyh0aGlzLnBhcnNlVmFsdWUsIHRoaXMucmVjb3JkSW5saW5lTGlzdFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVjb3JkSW5saW5lTGlzdFZhbHVlKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc3RhdGUucmVzdWx0QXJyKSB7XG4gICAgICAgICAgICBjb25zdCBsaXN0VHlwZSA9IHRoaXMuc3RhdGUucmVzdWx0QXJyW19jb250ZW50VHlwZV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB0b21sVHlwZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAobGlzdFR5cGUgIT09IHZhbHVlVHlwZSkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoYElubGluZSBsaXN0cyBtdXN0IGJlIGEgc2luZ2xlIHR5cGUsIG5vdCBhIG1peCBvZiAke2xpc3RUeXBlfSBhbmQgJHt2YWx1ZVR5cGV9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdEFyciA9IElubGluZUxpc3QodG9tbFR5cGUodmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzRmxvYXQodmFsdWUpIHx8IGlzSW50ZWdlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0QXJyLnB1c2godmFsdWUudmFsdWVPZigpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRBcnIucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUlubGluZUxpc3ROZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZUlubGluZUxpc3ROZXh0KCkge1xuICAgICAgICAgIGlmICh0aGlzLmNoYXIgPT09IENIQVJfU1AgfHwgdGhpcy5jaGFyID09PSBDVFJMX0kgfHwgdGhpcy5jaGFyID09PSBDVFJMX00gfHwgdGhpcy5jaGFyID09PSBDVFJMX0opIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX05VTSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnBhcnNlQ29tbWVudCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfQ09NTUEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZUlubGluZUxpc3QpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFyID09PSBDSEFSX1JTUUIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUlubGluZUxpc3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJJbnZhbGlkIGNoYXJhY3RlciwgZXhwZWN0ZWQgd2hpdGVzcGFjZSwgY29tbWEgKCwpIG9yIGNsb3NlIGJyYWNrZXQgKF0pXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VJbmxpbmVUYWJsZSgpIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGFyID09PSBDSEFSX1NQIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9JKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gUGFyc2VyLkVORCB8fCB0aGlzLmNoYXIgPT09IENIQVJfTlVNIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9KIHx8IHRoaXMuY2hhciA9PT0gQ1RSTF9NKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLmVycm9yKG5ldyBUb21sRXJyb3IoXCJVbnRlcm1pbmF0ZWQgaW5saW5lIGFycmF5XCIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9SQ1VCKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm4odGhpcy5zdGF0ZS5yZXN1bHRUYWJsZSB8fCBJbmxpbmVUYWJsZSgpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlLnJlc3VsdFRhYmxlKVxuICAgICAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdFRhYmxlID0gSW5saW5lVGFibGUoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGxOb3codGhpcy5wYXJzZUFzc2lnbiwgdGhpcy5yZWNvcmRJbmxpbmVUYWJsZVZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVjb3JkSW5saW5lVGFibGVWYWx1ZShrdikge1xuICAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLnN0YXRlLnJlc3VsdFRhYmxlO1xuICAgICAgICAgIGxldCBmaW5hbEtleSA9IGt2LmtleS5wb3AoKTtcbiAgICAgICAgICBmb3IgKGxldCBrdyBvZiBrdi5rZXkpIHtcbiAgICAgICAgICAgIGlmIChoYXNLZXkodGFyZ2V0LCBrdykgJiYgKCFpc1RhYmxlKHRhcmdldFtrd10pIHx8IHRhcmdldFtrd11bX2RlY2xhcmVkXSkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiQ2FuJ3QgcmVkZWZpbmUgZXhpc3Rpbmcga2V5XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldFtrd10gPSB0YXJnZXRba3ddIHx8IFRhYmxlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYXNLZXkodGFyZ2V0LCBmaW5hbEtleSkpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkNhbid0IHJlZGVmaW5lIGV4aXN0aW5nIGtleVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0ludGVnZXIoa3YudmFsdWUpIHx8IGlzRmxvYXQoa3YudmFsdWUpKSB7XG4gICAgICAgICAgICB0YXJnZXRbZmluYWxLZXldID0ga3YudmFsdWUudmFsdWVPZigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXRbZmluYWxLZXldID0ga3YudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLmdvdG8odGhpcy5wYXJzZUlubGluZVRhYmxlTmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VJbmxpbmVUYWJsZU5leHQoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9TUCB8fCB0aGlzLmNoYXIgPT09IENUUkxfSSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IFBhcnNlci5FTkQgfHwgdGhpcy5jaGFyID09PSBDSEFSX05VTSB8fCB0aGlzLmNoYXIgPT09IENUUkxfSiB8fCB0aGlzLmNoYXIgPT09IENUUkxfTSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcihuZXcgVG9tbEVycm9yKFwiVW50ZXJtaW5hdGVkIGlubGluZSBhcnJheVwiKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoYXIgPT09IENIQVJfQ09NTUEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQodGhpcy5wYXJzZUlubGluZVRhYmxlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhciA9PT0gQ0hBUl9SQ1VCKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvKHRoaXMucGFyc2VJbmxpbmVUYWJsZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3IobmV3IFRvbWxFcnJvcihcIkludmFsaWQgY2hhcmFjdGVyLCBleHBlY3RlZCB3aGl0ZXNwYWNlLCBjb21tYSAoLCkgb3IgY2xvc2UgYnJhY2tldCAoXSlcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFRPTUxQYXJzZXI7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlX3ByZXR0eV9lcnJvciA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQGlhcm5hL3RvbWwvcGFyc2UtcHJldHR5LWVycm9yLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmV0dHlFcnJvcjtcbiAgICBmdW5jdGlvbiBwcmV0dHlFcnJvcihlcnIsIGJ1Zikge1xuICAgICAgaWYgKGVyci5wb3MgPT0gbnVsbCB8fCBlcnIubGluZSA9PSBudWxsKVxuICAgICAgICByZXR1cm4gZXJyO1xuICAgICAgbGV0IG1zZyA9IGVyci5tZXNzYWdlO1xuICAgICAgbXNnICs9IGAgYXQgcm93ICR7ZXJyLmxpbmUgKyAxfSwgY29sICR7ZXJyLmNvbCArIDF9LCBwb3MgJHtlcnIucG9zfTpcbmA7XG4gICAgICBpZiAoYnVmICYmIGJ1Zi5zcGxpdCkge1xuICAgICAgICBjb25zdCBsaW5lcyA9IGJ1Zi5zcGxpdCgvXFxuLyk7XG4gICAgICAgIGNvbnN0IGxpbmVOdW1XaWR0aCA9IFN0cmluZyhNYXRoLm1pbihsaW5lcy5sZW5ndGgsIGVyci5saW5lICsgMykpLmxlbmd0aDtcbiAgICAgICAgbGV0IGxpbmVQYWRkaW5nID0gXCIgXCI7XG4gICAgICAgIHdoaWxlIChsaW5lUGFkZGluZy5sZW5ndGggPCBsaW5lTnVtV2lkdGgpXG4gICAgICAgICAgbGluZVBhZGRpbmcgKz0gXCIgXCI7XG4gICAgICAgIGZvciAobGV0IGlpID0gTWF0aC5tYXgoMCwgZXJyLmxpbmUgLSAxKTsgaWkgPCBNYXRoLm1pbihsaW5lcy5sZW5ndGgsIGVyci5saW5lICsgMik7ICsraWkpIHtcbiAgICAgICAgICBsZXQgbGluZU51bSA9IFN0cmluZyhpaSArIDEpO1xuICAgICAgICAgIGlmIChsaW5lTnVtLmxlbmd0aCA8IGxpbmVOdW1XaWR0aClcbiAgICAgICAgICAgIGxpbmVOdW0gPSBcIiBcIiArIGxpbmVOdW07XG4gICAgICAgICAgaWYgKGVyci5saW5lID09PSBpaSkge1xuICAgICAgICAgICAgbXNnICs9IGxpbmVOdW0gKyBcIj4gXCIgKyBsaW5lc1tpaV0gKyBcIlxcblwiO1xuICAgICAgICAgICAgbXNnICs9IGxpbmVQYWRkaW5nICsgXCIgIFwiO1xuICAgICAgICAgICAgZm9yIChsZXQgaGggPSAwOyBoaCA8IGVyci5jb2w7ICsraGgpIHtcbiAgICAgICAgICAgICAgbXNnICs9IFwiIFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbXNnICs9IFwiXlxcblwiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtc2cgKz0gbGluZU51bSArIFwiOiBcIiArIGxpbmVzW2lpXSArIFwiXFxuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlcnIubWVzc2FnZSA9IG1zZyArIFwiXFxuXCI7XG4gICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJzZV9zdHJpbmcgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0BpYXJuYS90b21sL3BhcnNlLXN0cmluZy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gcGFyc2VTdHJpbmc7XG4gICAgdmFyIFRPTUxQYXJzZXIgPSByZXF1aXJlX3RvbWxfcGFyc2VyKCk7XG4gICAgdmFyIHByZXR0eUVycm9yID0gcmVxdWlyZV9wYXJzZV9wcmV0dHlfZXJyb3IoKTtcbiAgICBmdW5jdGlvbiBwYXJzZVN0cmluZyhzdHIpIHtcbiAgICAgIGlmIChnbG9iYWwuQnVmZmVyICYmIGdsb2JhbC5CdWZmZXIuaXNCdWZmZXIoc3RyKSkge1xuICAgICAgICBzdHIgPSBzdHIudG9TdHJpbmcoXCJ1dGY4XCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFRPTUxQYXJzZXIoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlci5wYXJzZShzdHIpO1xuICAgICAgICByZXR1cm4gcGFyc2VyLmZpbmlzaCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IHByZXR0eUVycm9yKGVyciwgc3RyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbG9hZF90b21sID0gX19jb21tb25KUzIoe1xuICBcInNyYy91dGlscy9sb2FkLXRvbWwuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBwYXJzZSA9IHJlcXVpcmVfcGFyc2Vfc3RyaW5nKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oZmlsZVBhdGgsIGNvbnRlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBwYXJzZShjb250ZW50KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgVE9NTCBFcnJvciBpbiAke2ZpbGVQYXRofTpcbiR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3VuaWNvZGUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2pzb241L2xpYi91bmljb2RlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMuU3BhY2VfU2VwYXJhdG9yID0gL1tcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwXS87XG4gICAgbW9kdWxlMi5leHBvcnRzLklEX1N0YXJ0ID0gL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4NjAtXFx1MDg2QVxcdTA4QTAtXFx1MDhCNFxcdTA4QjYtXFx1MDhCRFxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MDlGQ1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwXFx1MEFFMVxcdTBBRjlcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0RcXHUwQzU4LVxcdTBDNUFcXHUwQzYwXFx1MEM2MVxcdTBDODBcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENTQtXFx1MEQ1NlxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MTg4NFxcdTE4ODctXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkVcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGRUFcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5RFxcdUE2QTAtXFx1QTZFRlxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTdBRVxcdUE3QjAtXFx1QTdCN1xcdUE3RjctXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2NVxcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURENDAtXFx1REQ3NFxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0QVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRlxcdURGRDEtXFx1REZENV18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTMzXFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMl18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDUwLVxcdURENzJcXHVERDc2XFx1REQ4My1cXHVEREIyXFx1RERDMS1cXHVEREM0XFx1REREQVxcdURERENcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMkJcXHVERTgwLVxcdURFODZcXHVERTg4XFx1REU4QS1cXHVERThEXFx1REU4Ri1cXHVERTlEXFx1REU5Ri1cXHVERUE4XFx1REVCMC1cXHVERURFXFx1REYwNS1cXHVERjBDXFx1REYwRlxcdURGMTBcXHVERjEzLVxcdURGMjhcXHVERjJBLVxcdURGMzBcXHVERjMyXFx1REYzM1xcdURGMzUtXFx1REYzOVxcdURGM0RcXHVERjUwXFx1REY1RC1cXHVERjYxXXxcXHVEODA1W1xcdURDMDAtXFx1REMzNFxcdURDNDctXFx1REM0QVxcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURERDgtXFx1REREQlxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFcXHVERjAwLVxcdURGMTldfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0RGXFx1RENGRlxcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4M1xcdURFODYtXFx1REU4OVxcdURFQzAtXFx1REVGOF18XFx1RDgwN1tcXHVEQzAwLVxcdURDMDhcXHVEQzBBLVxcdURDMkVcXHVEQzQwXFx1REM3Mi1cXHVEQzhGXFx1REQwMC1cXHVERDA2XFx1REQwOFxcdUREMDlcXHVERDBCLVxcdUREMzBcXHVERDQ2XXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVcXHVEQzgwLVxcdURENDNdfFtcXHVEODBDXFx1RDgxQy1cXHVEODIwXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjQ0XFx1REY1MFxcdURGOTMtXFx1REY5RlxcdURGRTBcXHVERkUxXXxcXHVEODIxW1xcdURDMDAtXFx1REZFQ118XFx1RDgyMltcXHVEQzAwLVxcdURFRjJdfFxcdUQ4MkNbXFx1REMwMC1cXHVERDFFXFx1REQ3MC1cXHVERUZCXXxcXHVEODJGW1xcdURDMDAtXFx1REM2QVxcdURDNzAtXFx1REM3Q1xcdURDODAtXFx1REM4OFxcdURDOTAtXFx1REM5OV18XFx1RDgzNVtcXHVEQzAwLVxcdURDNTRcXHVEQzU2LVxcdURDOUNcXHVEQzlFXFx1REM5RlxcdURDQTJcXHVEQ0E1XFx1RENBNlxcdURDQTktXFx1RENBQ1xcdURDQUUtXFx1RENCOVxcdURDQkJcXHVEQ0JELVxcdURDQzNcXHVEQ0M1LVxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDFFLVxcdUREMzlcXHVERDNCLVxcdUREM0VcXHVERDQwLVxcdURENDRcXHVERDQ2XFx1REQ0QS1cXHVERDUwXFx1REQ1Mi1cXHVERUE1XFx1REVBOC1cXHVERUMwXFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUZBXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjM0XFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjZFXFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERkE4XFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkNCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdUREMDAtXFx1REQ0M118XFx1RDgzQltcXHVERTAwLVxcdURFMDNcXHVERTA1LVxcdURFMUZcXHVERTIxXFx1REUyMlxcdURFMjRcXHVERTI3XFx1REUyOS1cXHVERTMyXFx1REUzNC1cXHVERTM3XFx1REUzOVxcdURFM0JcXHVERTQyXFx1REU0N1xcdURFNDlcXHVERTRCXFx1REU0RC1cXHVERTRGXFx1REU1MVxcdURFNTJcXHVERTU0XFx1REU1N1xcdURFNTlcXHVERTVCXFx1REU1RFxcdURFNUZcXHVERTYxXFx1REU2MlxcdURFNjRcXHVERTY3LVxcdURFNkFcXHVERTZDLVxcdURFNzJcXHVERTc0LVxcdURFNzdcXHVERTc5LVxcdURFN0NcXHVERTdFXFx1REU4MC1cXHVERTg5XFx1REU4Qi1cXHVERTlCXFx1REVBMS1cXHVERUEzXFx1REVBNS1cXHVERUE5XFx1REVBQi1cXHVERUJCXXxcXHVEODY5W1xcdURDMDAtXFx1REVENlxcdURGMDAtXFx1REZGRl18XFx1RDg2RFtcXHVEQzAwLVxcdURGMzRcXHVERjQwLVxcdURGRkZdfFxcdUQ4NkVbXFx1REMwMC1cXHVEQzFEXFx1REMyMC1cXHVERkZGXXxcXHVEODczW1xcdURDMDAtXFx1REVBMVxcdURFQjAtXFx1REZGRl18XFx1RDg3QVtcXHVEQzAwLVxcdURGRTBdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXS87XG4gICAgbW9kdWxlMi5leHBvcnRzLklEX0NvbnRpbnVlID0gL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDMwMC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwODYwLVxcdTA4NkFcXHUwOEEwLVxcdTA4QjRcXHUwOEI2LVxcdTA4QkRcXHUwOEQ0LVxcdTA4RTFcXHUwOEUzLVxcdTA5NjNcXHUwOTY2LVxcdTA5NkZcXHUwOTcxLVxcdTA5ODNcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJDLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRVxcdTA5RDdcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFM1xcdTA5RTYtXFx1MDlGMVxcdTA5RkNcXHUwQTAxLVxcdTBBMDNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE2Ni1cXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJDLVxcdTBBQzVcXHUwQUM3LVxcdTBBQzlcXHUwQUNCLVxcdTBBQ0RcXHUwQUQwXFx1MEFFMC1cXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEFGOS1cXHUwQUZGXFx1MEIwMS1cXHUwQjAzXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0MtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCNzFcXHUwQjgyXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQwXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDAtXFx1MEMwM1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0QtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM1OC1cXHUwQzVBXFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MC1cXHUwQzgzXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCQy1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0RFXFx1MENFMC1cXHUwQ0UzXFx1MENFNi1cXHUwQ0VGXFx1MENGMVxcdTBDRjJcXHUwRDAwLVxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU0LVxcdTBENTdcXHUwRDVGLVxcdTBENjNcXHUwRDY2LVxcdTBENkZcXHUwRDdBLVxcdTBEN0ZcXHUwRDgyXFx1MEQ4M1xcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERTYtXFx1MERFRlxcdTBERjJcXHUwREYzXFx1MEUwMS1cXHUwRTNBXFx1MEU0MC1cXHUwRTRFXFx1MEU1MC1cXHUwRTU5XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjlcXHUwRUJCLVxcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVDOC1cXHUwRUNEXFx1MEVEMC1cXHUwRUQ5XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGMThcXHUwRjE5XFx1MEYyMC1cXHUwRjI5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRS1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY3MS1cXHUwRjg0XFx1MEY4Ni1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMDAtXFx1MTA0OVxcdTEwNTAtXFx1MTA5RFxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzVELVxcdTEzNUZcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTRcXHUxNzIwLVxcdTE3MzRcXHUxNzQwLVxcdTE3NTNcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzcyXFx1MTc3M1xcdTE3ODAtXFx1MTdEM1xcdTE3RDdcXHUxN0RDXFx1MTdERFxcdTE3RTAtXFx1MTdFOVxcdTE4MEItXFx1MTgwRFxcdTE4MTAtXFx1MTgxOVxcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTE5NDYtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTE5RDAtXFx1MTlEOVxcdTFBMDAtXFx1MUExQlxcdTFBMjAtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0YtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFBQTdcXHUxQUIwLVxcdTFBQkRcXHUxQjAwLVxcdTFCNEJcXHUxQjUwLVxcdTFCNTlcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCRjNcXHUxQzAwLVxcdTFDMzdcXHUxQzQwLVxcdTFDNDlcXHUxQzRELVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRjlcXHUxRDAwLVxcdTFERjlcXHUxREZCLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEN0YtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJERTAtXFx1MkRGRlxcdTJFMkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMkZcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDk5XFx1MzA5QVxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRVxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZFQVxcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2N0YtXFx1QTZGMVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTdBRVxcdUE3QjAtXFx1QTdCN1xcdUE3RjctXFx1QTgyN1xcdUE4NDAtXFx1QTg3M1xcdUE4ODAtXFx1QThDNVxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QTkwMC1cXHVBOTJEXFx1QTkzMC1cXHVBOTUzXFx1QTk2MC1cXHVBOTdDXFx1QTk4MC1cXHVBOUMwXFx1QTlDRi1cXHVBOUQ5XFx1QTlFMC1cXHVBOUZFXFx1QUEwMC1cXHVBQTM2XFx1QUE0MC1cXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE2MC1cXHVBQTc2XFx1QUE3QS1cXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVGXFx1QUFGMi1cXHVBQUY2XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjY1XFx1QUI3MC1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVBQkYwLVxcdUFCRjlcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFELVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRlxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYxMC1cXHVGRjE5XFx1RkYyMS1cXHVGRjNBXFx1RkYzRlxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURENDAtXFx1REQ3NFxcdURERkRcXHVERTgwLVxcdURFOUNcXHVERUEwLVxcdURFRDBcXHVERUUwXFx1REYwMC1cXHVERjFGXFx1REYyRC1cXHVERjRBXFx1REY1MC1cXHVERjdBXFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXFx1REZEMS1cXHVERkQ1XXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdURDQTAtXFx1RENBOVxcdURDQjAtXFx1RENEM1xcdURDRDgtXFx1RENGQlxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1RENFMC1cXHVEQ0YyXFx1RENGNFxcdURDRjVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDAtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTMzXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNlxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhcXHVEQzgwLVxcdURDQjJcXHVEQ0MwLVxcdURDRjJdfFxcdUQ4MDRbXFx1REMwMC1cXHVEQzQ2XFx1REM2Ni1cXHVEQzZGXFx1REM3Ri1cXHVEQ0JBXFx1RENEMC1cXHVEQ0U4XFx1RENGMC1cXHVEQ0Y5XFx1REQwMC1cXHVERDM0XFx1REQzNi1cXHVERDNGXFx1REQ1MC1cXHVERDczXFx1REQ3NlxcdUREODAtXFx1RERDNFxcdUREQ0EtXFx1RERDQ1xcdURERDAtXFx1REREQVxcdURERENcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMzdcXHVERTNFXFx1REU4MC1cXHVERTg2XFx1REU4OFxcdURFOEEtXFx1REU4RFxcdURFOEYtXFx1REU5RFxcdURFOUYtXFx1REVBOFxcdURFQjAtXFx1REVFQVxcdURFRjAtXFx1REVGOVxcdURGMDAtXFx1REYwM1xcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNDLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTBcXHVERjU3XFx1REY1RC1cXHVERjYzXFx1REY2Ni1cXHVERjZDXFx1REY3MC1cXHVERjc0XXxcXHVEODA1W1xcdURDMDAtXFx1REM0QVxcdURDNTAtXFx1REM1OVxcdURDODAtXFx1RENDNVxcdURDQzdcXHVEQ0QwLVxcdURDRDlcXHVERDgwLVxcdUREQjVcXHVEREI4LVxcdUREQzBcXHVEREQ4LVxcdURERERcXHVERTAwLVxcdURFNDBcXHVERTQ0XFx1REU1MC1cXHVERTU5XFx1REU4MC1cXHVERUI3XFx1REVDMC1cXHVERUM5XFx1REYwMC1cXHVERjE5XFx1REYxRC1cXHVERjJCXFx1REYzMC1cXHVERjM5XXxcXHVEODA2W1xcdURDQTAtXFx1RENFOVxcdURDRkZcXHVERTAwLVxcdURFM0VcXHVERTQ3XFx1REU1MC1cXHVERTgzXFx1REU4Ni1cXHVERTk5XFx1REVDMC1cXHVERUY4XXxcXHVEODA3W1xcdURDMDAtXFx1REMwOFxcdURDMEEtXFx1REMzNlxcdURDMzgtXFx1REM0MFxcdURDNTAtXFx1REM1OVxcdURDNzItXFx1REM4RlxcdURDOTItXFx1RENBN1xcdURDQTktXFx1RENCNlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDM2XFx1REQzQVxcdUREM0NcXHVERDNEXFx1REQzRi1cXHVERDQ3XFx1REQ1MC1cXHVERDU5XXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVcXHVEQzgwLVxcdURENDNdfFtcXHVEODBDXFx1RDgxQy1cXHVEODIwXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERTYwLVxcdURFNjlcXHVERUQwLVxcdURFRURcXHVERUYwLVxcdURFRjRcXHVERjAwLVxcdURGMzZcXHVERjQwLVxcdURGNDNcXHVERjUwLVxcdURGNTlcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjQ0XFx1REY1MC1cXHVERjdFXFx1REY4Ri1cXHVERjlGXFx1REZFMFxcdURGRTFdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkVDXXxcXHVEODIyW1xcdURDMDAtXFx1REVGMl18XFx1RDgyQ1tcXHVEQzAwLVxcdUREMUVcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XFx1REM5RFxcdURDOUVdfFxcdUQ4MzRbXFx1REQ2NS1cXHVERDY5XFx1REQ2RC1cXHVERDcyXFx1REQ3Qi1cXHVERDgyXFx1REQ4NS1cXHVERDhCXFx1RERBQS1cXHVEREFEXFx1REU0Mi1cXHVERTQ0XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JcXHVERkNFLVxcdURGRkZdfFxcdUQ4MzZbXFx1REUwMC1cXHVERTM2XFx1REUzQi1cXHVERTZDXFx1REU3NVxcdURFODRcXHVERTlCLVxcdURFOUZcXHVERUExLVxcdURFQUZdfFxcdUQ4MzhbXFx1REMwMC1cXHVEQzA2XFx1REMwOC1cXHVEQzE4XFx1REMxQi1cXHVEQzIxXFx1REMyM1xcdURDMjRcXHVEQzI2LVxcdURDMkFdfFxcdUQ4M0FbXFx1REMwMC1cXHVEQ0M0XFx1RENEMC1cXHVEQ0Q2XFx1REQwMC1cXHVERDRBXFx1REQ1MC1cXHVERDU5XXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXFx1REVCMC1cXHVERkZGXXxcXHVEODdBW1xcdURDMDAtXFx1REZFMF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdfFxcdURCNDBbXFx1REQwMC1cXHVEREVGXS87XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdXRpbDIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2pzb241L2xpYi91dGlsLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgdW5pY29kZSA9IHJlcXVpcmVfdW5pY29kZSgpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGlzU3BhY2VTZXBhcmF0b3IoYykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGMgPT09IFwic3RyaW5nXCIgJiYgdW5pY29kZS5TcGFjZV9TZXBhcmF0b3IudGVzdChjKTtcbiAgICAgIH0sXG4gICAgICBpc0lkU3RhcnRDaGFyKGMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjID09PSBcInN0cmluZ1wiICYmIChjID49IFwiYVwiICYmIGMgPD0gXCJ6XCIgfHwgYyA+PSBcIkFcIiAmJiBjIDw9IFwiWlwiIHx8IGMgPT09IFwiJFwiIHx8IGMgPT09IFwiX1wiIHx8IHVuaWNvZGUuSURfU3RhcnQudGVzdChjKSk7XG4gICAgICB9LFxuICAgICAgaXNJZENvbnRpbnVlQ2hhcihjKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgYyA9PT0gXCJzdHJpbmdcIiAmJiAoYyA+PSBcImFcIiAmJiBjIDw9IFwielwiIHx8IGMgPj0gXCJBXCIgJiYgYyA8PSBcIlpcIiB8fCBjID49IFwiMFwiICYmIGMgPD0gXCI5XCIgfHwgYyA9PT0gXCIkXCIgfHwgYyA9PT0gXCJfXCIgfHwgYyA9PT0gXCJcXHUyMDBDXCIgfHwgYyA9PT0gXCJcXHUyMDBEXCIgfHwgdW5pY29kZS5JRF9Db250aW51ZS50ZXN0KGMpKTtcbiAgICAgIH0sXG4gICAgICBpc0RpZ2l0KGMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjID09PSBcInN0cmluZ1wiICYmIC9bMC05XS8udGVzdChjKTtcbiAgICAgIH0sXG4gICAgICBpc0hleERpZ2l0KGMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjID09PSBcInN0cmluZ1wiICYmIC9bMC05QS1GYS1mXS8udGVzdChjKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlMyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvanNvbjUvbGliL3BhcnNlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgdXRpbCA9IHJlcXVpcmVfdXRpbDIoKTtcbiAgICB2YXIgc291cmNlO1xuICAgIHZhciBwYXJzZVN0YXRlO1xuICAgIHZhciBzdGFjaztcbiAgICB2YXIgcG9zO1xuICAgIHZhciBsaW5lO1xuICAgIHZhciBjb2x1bW47XG4gICAgdmFyIHRva2VuO1xuICAgIHZhciBrZXk7XG4gICAgdmFyIHJvb3Q7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2UodGV4dCwgcmV2aXZlcikge1xuICAgICAgc291cmNlID0gU3RyaW5nKHRleHQpO1xuICAgICAgcGFyc2VTdGF0ZSA9IFwic3RhcnRcIjtcbiAgICAgIHN0YWNrID0gW107XG4gICAgICBwb3MgPSAwO1xuICAgICAgbGluZSA9IDE7XG4gICAgICBjb2x1bW4gPSAwO1xuICAgICAgdG9rZW4gPSB2b2lkIDA7XG4gICAgICBrZXkgPSB2b2lkIDA7XG4gICAgICByb290ID0gdm9pZCAwO1xuICAgICAgZG8ge1xuICAgICAgICB0b2tlbiA9IGxleCgpO1xuICAgICAgICBwYXJzZVN0YXRlc1twYXJzZVN0YXRlXSgpO1xuICAgICAgfSB3aGlsZSAodG9rZW4udHlwZSAhPT0gXCJlb2ZcIik7XG4gICAgICBpZiAodHlwZW9mIHJldml2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaW50ZXJuYWxpemUoe1xuICAgICAgICAgIFwiXCI6IHJvb3RcbiAgICAgICAgfSwgXCJcIiwgcmV2aXZlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcm9vdDtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGludGVybmFsaXplKGhvbGRlciwgbmFtZSwgcmV2aXZlcikge1xuICAgICAgY29uc3QgdmFsdWUgPSBob2xkZXJbbmFtZV07XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkyIGluIHZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBpbnRlcm5hbGl6ZSh2YWx1ZSwga2V5MiwgcmV2aXZlcik7XG4gICAgICAgICAgaWYgKHJlcGxhY2VtZW50ID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrZXkyXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWVba2V5Ml0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXZpdmVyLmNhbGwoaG9sZGVyLCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICAgIHZhciBsZXhTdGF0ZTtcbiAgICB2YXIgYnVmZmVyO1xuICAgIHZhciBkb3VibGVRdW90ZTtcbiAgICB2YXIgc2lnbjtcbiAgICB2YXIgYztcbiAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICBsZXhTdGF0ZSA9IFwiZGVmYXVsdFwiO1xuICAgICAgYnVmZmVyID0gXCJcIjtcbiAgICAgIGRvdWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICBzaWduID0gMTtcbiAgICAgIGZvciAoOyA7ICkge1xuICAgICAgICBjID0gcGVlaygpO1xuICAgICAgICBjb25zdCB0b2tlbjIgPSBsZXhTdGF0ZXNbbGV4U3RhdGVdKCk7XG4gICAgICAgIGlmICh0b2tlbjIpIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW4yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZWsoKSB7XG4gICAgICBpZiAoc291cmNlW3Bvc10pIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHNvdXJjZS5jb2RlUG9pbnRBdChwb3MpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVhZCgpIHtcbiAgICAgIGNvbnN0IGMyID0gcGVlaygpO1xuICAgICAgaWYgKGMyID09PSBcIlxcblwiKSB7XG4gICAgICAgIGxpbmUrKztcbiAgICAgICAgY29sdW1uID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoYzIpIHtcbiAgICAgICAgY29sdW1uICs9IGMyLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbisrO1xuICAgICAgfVxuICAgICAgaWYgKGMyKSB7XG4gICAgICAgIHBvcyArPSBjMi5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gYzI7XG4gICAgfVxuICAgIHZhciBsZXhTdGF0ZXMgPSB7XG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlIFwiXHRcIjpcbiAgICAgICAgICBjYXNlIFwiXFx2XCI6XG4gICAgICAgICAgY2FzZSBcIlxcZlwiOlxuICAgICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgY2FzZSBcIlxceEEwXCI6XG4gICAgICAgICAgY2FzZSBcIlxcdUZFRkZcIjpcbiAgICAgICAgICBjYXNlIFwiXFxuXCI6XG4gICAgICAgICAgY2FzZSBcIlxcclwiOlxuICAgICAgICAgIGNhc2UgXCJcXHUyMDI4XCI6XG4gICAgICAgICAgY2FzZSBcIlxcdTIwMjlcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwiL1wiOlxuICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgICAgbGV4U3RhdGUgPSBcImNvbW1lbnRcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIHZvaWQgMDpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdUb2tlbihcImVvZlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXRpbC5pc1NwYWNlU2VwYXJhdG9yKGMpKSB7XG4gICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGV4U3RhdGVzW3BhcnNlU3RhdGVdKCk7XG4gICAgICB9LFxuICAgICAgY29tbWVudCgpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIipcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJtdWx0aUxpbmVDb21tZW50XCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIi9cIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJzaW5nbGVMaW5lQ29tbWVudFwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9LFxuICAgICAgbXVsdGlMaW5lQ29tbWVudCgpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIipcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJtdWx0aUxpbmVDb21tZW50QXN0ZXJpc2tcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIHZvaWQgMDpcbiAgICAgICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZCgpO1xuICAgICAgfSxcbiAgICAgIG11bHRpTGluZUNvbW1lbnRBc3RlcmlzaygpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIipcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwiL1wiOlxuICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgICAgbGV4U3RhdGUgPSBcImRlZmF1bHRcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIHZvaWQgMDpcbiAgICAgICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZCgpO1xuICAgICAgICBsZXhTdGF0ZSA9IFwibXVsdGlMaW5lQ29tbWVudFwiO1xuICAgICAgfSxcbiAgICAgIHNpbmdsZUxpbmVDb21tZW50KCkge1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlIFwiXFxuXCI6XG4gICAgICAgICAgY2FzZSBcIlxcclwiOlxuICAgICAgICAgIGNhc2UgXCJcXHUyMDI4XCI6XG4gICAgICAgICAgY2FzZSBcIlxcdTIwMjlcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJkZWZhdWx0XCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSB2b2lkIDA6XG4gICAgICAgICAgICByZWFkKCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJlb2ZcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZCgpO1xuICAgICAgfSxcbiAgICAgIHZhbHVlKCkge1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlIFwie1wiOlxuICAgICAgICAgIGNhc2UgXCJbXCI6XG4gICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJwdW5jdHVhdG9yXCIsIHJlYWQoKSk7XG4gICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxpdGVyYWwoXCJ1bGxcIik7XG4gICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJudWxsXCIsIG51bGwpO1xuICAgICAgICAgIGNhc2UgXCJ0XCI6XG4gICAgICAgICAgICByZWFkKCk7XG4gICAgICAgICAgICBsaXRlcmFsKFwicnVlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwiYm9vbGVhblwiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiZlwiOlxuICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgICAgbGl0ZXJhbChcImFsc2VcIik7XG4gICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJib29sZWFuXCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiLVwiOlxuICAgICAgICAgIGNhc2UgXCIrXCI6XG4gICAgICAgICAgICBpZiAocmVhZCgpID09PSBcIi1cIikge1xuICAgICAgICAgICAgICBzaWduID0gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwic2lnblwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCIuXCI6XG4gICAgICAgICAgICBidWZmZXIgPSByZWFkKCk7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwiZGVjaW1hbFBvaW50TGVhZGluZ1wiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCIwXCI6XG4gICAgICAgICAgICBidWZmZXIgPSByZWFkKCk7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwiemVyb1wiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCIxXCI6XG4gICAgICAgICAgY2FzZSBcIjJcIjpcbiAgICAgICAgICBjYXNlIFwiM1wiOlxuICAgICAgICAgIGNhc2UgXCI0XCI6XG4gICAgICAgICAgY2FzZSBcIjVcIjpcbiAgICAgICAgICBjYXNlIFwiNlwiOlxuICAgICAgICAgIGNhc2UgXCI3XCI6XG4gICAgICAgICAgY2FzZSBcIjhcIjpcbiAgICAgICAgICBjYXNlIFwiOVwiOlxuICAgICAgICAgICAgYnVmZmVyID0gcmVhZCgpO1xuICAgICAgICAgICAgbGV4U3RhdGUgPSBcImRlY2ltYWxJbnRlZ2VyXCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIklcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxpdGVyYWwoXCJuZmluaXR5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwibnVtZXJpY1wiLCBJbmZpbml0eSk7XG4gICAgICAgICAgY2FzZSBcIk5cIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxpdGVyYWwoXCJhTlwiKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdUb2tlbihcIm51bWVyaWNcIiwgTmFOKTtcbiAgICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgY2FzZSBcIidcIjpcbiAgICAgICAgICAgIGRvdWJsZVF1b3RlID0gcmVhZCgpID09PSAnXCInO1xuICAgICAgICAgICAgYnVmZmVyID0gXCJcIjtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBpbnZhbGlkQ2hhcihyZWFkKCkpO1xuICAgICAgfSxcbiAgICAgIGlkZW50aWZpZXJOYW1lU3RhcnRFc2NhcGUoKSB7XG4gICAgICAgIGlmIChjICE9PSBcInVcIikge1xuICAgICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZCgpO1xuICAgICAgICBjb25zdCB1ID0gdW5pY29kZUVzY2FwZSgpO1xuICAgICAgICBzd2l0Y2ggKHUpIHtcbiAgICAgICAgICBjYXNlIFwiJFwiOlxuICAgICAgICAgIGNhc2UgXCJfXCI6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKCF1dGlsLmlzSWRTdGFydENoYXIodSkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgaW52YWxpZElkZW50aWZpZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmZlciArPSB1O1xuICAgICAgICBsZXhTdGF0ZSA9IFwiaWRlbnRpZmllck5hbWVcIjtcbiAgICAgIH0sXG4gICAgICBpZGVudGlmaWVyTmFtZSgpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIiRcIjpcbiAgICAgICAgICBjYXNlIFwiX1wiOlxuICAgICAgICAgIGNhc2UgXCJcXHUyMDBDXCI6XG4gICAgICAgICAgY2FzZSBcIlxcdTIwMERcIjpcbiAgICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIlxcXFxcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJpZGVudGlmaWVyTmFtZUVzY2FwZVwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1dGlsLmlzSWRDb250aW51ZUNoYXIoYykpIHtcbiAgICAgICAgICBidWZmZXIgKz0gcmVhZCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJpZGVudGlmaWVyXCIsIGJ1ZmZlcik7XG4gICAgICB9LFxuICAgICAgaWRlbnRpZmllck5hbWVFc2NhcGUoKSB7XG4gICAgICAgIGlmIChjICE9PSBcInVcIikge1xuICAgICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZCgpO1xuICAgICAgICBjb25zdCB1ID0gdW5pY29kZUVzY2FwZSgpO1xuICAgICAgICBzd2l0Y2ggKHUpIHtcbiAgICAgICAgICBjYXNlIFwiJFwiOlxuICAgICAgICAgIGNhc2UgXCJfXCI6XG4gICAgICAgICAgY2FzZSBcIlxcdTIwMENcIjpcbiAgICAgICAgICBjYXNlIFwiXFx1MjAwRFwiOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmICghdXRpbC5pc0lkQ29udGludWVDaGFyKHUpKSB7XG4gICAgICAgICAgICAgIHRocm93IGludmFsaWRJZGVudGlmaWVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBidWZmZXIgKz0gdTtcbiAgICAgICAgbGV4U3RhdGUgPSBcImlkZW50aWZpZXJOYW1lXCI7XG4gICAgICB9LFxuICAgICAgc2lnbigpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIi5cIjpcbiAgICAgICAgICAgIGJ1ZmZlciA9IHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJkZWNpbWFsUG9pbnRMZWFkaW5nXCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIjBcIjpcbiAgICAgICAgICAgIGJ1ZmZlciA9IHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJ6ZXJvXCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIjFcIjpcbiAgICAgICAgICBjYXNlIFwiMlwiOlxuICAgICAgICAgIGNhc2UgXCIzXCI6XG4gICAgICAgICAgY2FzZSBcIjRcIjpcbiAgICAgICAgICBjYXNlIFwiNVwiOlxuICAgICAgICAgIGNhc2UgXCI2XCI6XG4gICAgICAgICAgY2FzZSBcIjdcIjpcbiAgICAgICAgICBjYXNlIFwiOFwiOlxuICAgICAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgICAgICBidWZmZXIgPSByZWFkKCk7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwiZGVjaW1hbEludGVnZXJcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwiSVwiOlxuICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgICAgbGl0ZXJhbChcIm5maW5pdHlcIik7XG4gICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJudW1lcmljXCIsIHNpZ24gKiBJbmZpbml0eSk7XG4gICAgICAgICAgY2FzZSBcIk5cIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGxpdGVyYWwoXCJhTlwiKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdUb2tlbihcIm51bWVyaWNcIiwgTmFOKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBpbnZhbGlkQ2hhcihyZWFkKCkpO1xuICAgICAgfSxcbiAgICAgIHplcm8oKSB7XG4gICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgIGNhc2UgXCIuXCI6XG4gICAgICAgICAgICBidWZmZXIgKz0gcmVhZCgpO1xuICAgICAgICAgICAgbGV4U3RhdGUgPSBcImRlY2ltYWxQb2ludFwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCJlXCI6XG4gICAgICAgICAgY2FzZSBcIkVcIjpcbiAgICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwiZGVjaW1hbEV4cG9uZW50XCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgICBjYXNlIFwiWFwiOlxuICAgICAgICAgICAgYnVmZmVyICs9IHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJoZXhhZGVjaW1hbFwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdUb2tlbihcIm51bWVyaWNcIiwgc2lnbiAqIDApO1xuICAgICAgfSxcbiAgICAgIGRlY2ltYWxJbnRlZ2VyKCkge1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlIFwiLlwiOlxuICAgICAgICAgICAgYnVmZmVyICs9IHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJkZWNpbWFsUG9pbnRcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwiZVwiOlxuICAgICAgICAgIGNhc2UgXCJFXCI6XG4gICAgICAgICAgICBidWZmZXIgKz0gcmVhZCgpO1xuICAgICAgICAgICAgbGV4U3RhdGUgPSBcImRlY2ltYWxFeHBvbmVudFwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1dGlsLmlzRGlnaXQoYykpIHtcbiAgICAgICAgICBidWZmZXIgKz0gcmVhZCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJudW1lcmljXCIsIHNpZ24gKiBOdW1iZXIoYnVmZmVyKSk7XG4gICAgICB9LFxuICAgICAgZGVjaW1hbFBvaW50TGVhZGluZygpIHtcbiAgICAgICAgaWYgKHV0aWwuaXNEaWdpdChjKSkge1xuICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgbGV4U3RhdGUgPSBcImRlY2ltYWxGcmFjdGlvblwiO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBpbnZhbGlkQ2hhcihyZWFkKCkpO1xuICAgICAgfSxcbiAgICAgIGRlY2ltYWxQb2ludCgpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcImVcIjpcbiAgICAgICAgICBjYXNlIFwiRVwiOlxuICAgICAgICAgICAgYnVmZmVyICs9IHJlYWQoKTtcbiAgICAgICAgICAgIGxleFN0YXRlID0gXCJkZWNpbWFsRXhwb25lbnRcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXRpbC5pc0RpZ2l0KGMpKSB7XG4gICAgICAgICAgYnVmZmVyICs9IHJlYWQoKTtcbiAgICAgICAgICBsZXhTdGF0ZSA9IFwiZGVjaW1hbEZyYWN0aW9uXCI7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdUb2tlbihcIm51bWVyaWNcIiwgc2lnbiAqIE51bWJlcihidWZmZXIpKTtcbiAgICAgIH0sXG4gICAgICBkZWNpbWFsRnJhY3Rpb24oKSB7XG4gICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgIGNhc2UgXCJlXCI6XG4gICAgICAgICAgY2FzZSBcIkVcIjpcbiAgICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwiZGVjaW1hbEV4cG9uZW50XCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHV0aWwuaXNEaWdpdChjKSkge1xuICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdUb2tlbihcIm51bWVyaWNcIiwgc2lnbiAqIE51bWJlcihidWZmZXIpKTtcbiAgICAgIH0sXG4gICAgICBkZWNpbWFsRXhwb25lbnQoKSB7XG4gICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgIGNhc2UgXCIrXCI6XG4gICAgICAgICAgY2FzZSBcIi1cIjpcbiAgICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwiZGVjaW1hbEV4cG9uZW50U2lnblwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1dGlsLmlzRGlnaXQoYykpIHtcbiAgICAgICAgICBidWZmZXIgKz0gcmVhZCgpO1xuICAgICAgICAgIGxleFN0YXRlID0gXCJkZWNpbWFsRXhwb25lbnRJbnRlZ2VyXCI7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9LFxuICAgICAgZGVjaW1hbEV4cG9uZW50U2lnbigpIHtcbiAgICAgICAgaWYgKHV0aWwuaXNEaWdpdChjKSkge1xuICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgbGV4U3RhdGUgPSBcImRlY2ltYWxFeHBvbmVudEludGVnZXJcIjtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgaW52YWxpZENoYXIocmVhZCgpKTtcbiAgICAgIH0sXG4gICAgICBkZWNpbWFsRXhwb25lbnRJbnRlZ2VyKCkge1xuICAgICAgICBpZiAodXRpbC5pc0RpZ2l0KGMpKSB7XG4gICAgICAgICAgYnVmZmVyICs9IHJlYWQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwibnVtZXJpY1wiLCBzaWduICogTnVtYmVyKGJ1ZmZlcikpO1xuICAgICAgfSxcbiAgICAgIGhleGFkZWNpbWFsKCkge1xuICAgICAgICBpZiAodXRpbC5pc0hleERpZ2l0KGMpKSB7XG4gICAgICAgICAgYnVmZmVyICs9IHJlYWQoKTtcbiAgICAgICAgICBsZXhTdGF0ZSA9IFwiaGV4YWRlY2ltYWxJbnRlZ2VyXCI7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9LFxuICAgICAgaGV4YWRlY2ltYWxJbnRlZ2VyKCkge1xuICAgICAgICBpZiAodXRpbC5pc0hleERpZ2l0KGMpKSB7XG4gICAgICAgICAgYnVmZmVyICs9IHJlYWQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwibnVtZXJpY1wiLCBzaWduICogTnVtYmVyKGJ1ZmZlcikpO1xuICAgICAgfSxcbiAgICAgIHN0cmluZygpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIlxcXFxcIjpcbiAgICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICAgIGJ1ZmZlciArPSBlc2NhcGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICBpZiAoZG91YmxlUXVvdGUpIHtcbiAgICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJzdHJpbmdcIiwgYnVmZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIidcIjpcbiAgICAgICAgICAgIGlmICghZG91YmxlUXVvdGUpIHtcbiAgICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJzdHJpbmdcIiwgYnVmZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICAgIGNhc2UgXCJcXHJcIjpcbiAgICAgICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICAgICAgY2FzZSBcIlxcdTIwMjhcIjpcbiAgICAgICAgICBjYXNlIFwiXFx1MjAyOVwiOlxuICAgICAgICAgICAgc2VwYXJhdG9yQ2hhcihjKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2Ugdm9pZCAwOlxuICAgICAgICAgICAgdGhyb3cgaW52YWxpZENoYXIocmVhZCgpKTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXIgKz0gcmVhZCgpO1xuICAgICAgfSxcbiAgICAgIHN0YXJ0KCkge1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlIFwie1wiOlxuICAgICAgICAgIGNhc2UgXCJbXCI6XG4gICAgICAgICAgICByZXR1cm4gbmV3VG9rZW4oXCJwdW5jdHVhdG9yXCIsIHJlYWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV4U3RhdGUgPSBcInZhbHVlXCI7XG4gICAgICB9LFxuICAgICAgYmVmb3JlUHJvcGVydHlOYW1lKCkge1xuICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICBjYXNlIFwiJFwiOlxuICAgICAgICAgIGNhc2UgXCJfXCI6XG4gICAgICAgICAgICBidWZmZXIgPSByZWFkKCk7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwiaWRlbnRpZmllck5hbWVcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwiXFxcXFwiOlxuICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgICAgbGV4U3RhdGUgPSBcImlkZW50aWZpZXJOYW1lU3RhcnRFc2NhcGVcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwifVwiOlxuICAgICAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwicHVuY3R1YXRvclwiLCByZWFkKCkpO1xuICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICBjYXNlIFwiJ1wiOlxuICAgICAgICAgICAgZG91YmxlUXVvdGUgPSByZWFkKCkgPT09ICdcIic7XG4gICAgICAgICAgICBsZXhTdGF0ZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHV0aWwuaXNJZFN0YXJ0Q2hhcihjKSkge1xuICAgICAgICAgIGJ1ZmZlciArPSByZWFkKCk7XG4gICAgICAgICAgbGV4U3RhdGUgPSBcImlkZW50aWZpZXJOYW1lXCI7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9LFxuICAgICAgYWZ0ZXJQcm9wZXJ0eU5hbWUoKSB7XG4gICAgICAgIGlmIChjID09PSBcIjpcIikge1xuICAgICAgICAgIHJldHVybiBuZXdUb2tlbihcInB1bmN0dWF0b3JcIiwgcmVhZCgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBpbnZhbGlkQ2hhcihyZWFkKCkpO1xuICAgICAgfSxcbiAgICAgIGJlZm9yZVByb3BlcnR5VmFsdWUoKSB7XG4gICAgICAgIGxleFN0YXRlID0gXCJ2YWx1ZVwiO1xuICAgICAgfSxcbiAgICAgIGFmdGVyUHJvcGVydHlWYWx1ZSgpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIixcIjpcbiAgICAgICAgICBjYXNlIFwifVwiOlxuICAgICAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwicHVuY3R1YXRvclwiLCByZWFkKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9LFxuICAgICAgYmVmb3JlQXJyYXlWYWx1ZSgpIHtcbiAgICAgICAgaWYgKGMgPT09IFwiXVwiKSB7XG4gICAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwicHVuY3R1YXRvclwiLCByZWFkKCkpO1xuICAgICAgICB9XG4gICAgICAgIGxleFN0YXRlID0gXCJ2YWx1ZVwiO1xuICAgICAgfSxcbiAgICAgIGFmdGVyQXJyYXlWYWx1ZSgpIHtcbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBcIixcIjpcbiAgICAgICAgICBjYXNlIFwiXVwiOlxuICAgICAgICAgICAgcmV0dXJuIG5ld1Rva2VuKFwicHVuY3R1YXRvclwiLCByZWFkKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9LFxuICAgICAgZW5kKCkge1xuICAgICAgICB0aHJvdyBpbnZhbGlkQ2hhcihyZWFkKCkpO1xuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gbmV3VG9rZW4odHlwZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBsaW5lLFxuICAgICAgICBjb2x1bW5cbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxpdGVyYWwocykge1xuICAgICAgZm9yIChjb25zdCBjMiBvZiBzKSB7XG4gICAgICAgIGNvbnN0IHAgPSBwZWVrKCk7XG4gICAgICAgIGlmIChwICE9PSBjMikge1xuICAgICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBlc2NhcGUoKSB7XG4gICAgICBjb25zdCBjMiA9IHBlZWsoKTtcbiAgICAgIHN3aXRjaCAoYzIpIHtcbiAgICAgICAgY2FzZSBcImJcIjpcbiAgICAgICAgICByZWFkKCk7XG4gICAgICAgICAgcmV0dXJuIFwiXFxiXCI7XG4gICAgICAgIGNhc2UgXCJmXCI6XG4gICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgIHJldHVybiBcIlxcZlwiO1xuICAgICAgICBjYXNlIFwiblwiOlxuICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICByZXR1cm4gXCJcXG5cIjtcbiAgICAgICAgY2FzZSBcInJcIjpcbiAgICAgICAgICByZWFkKCk7XG4gICAgICAgICAgcmV0dXJuIFwiXFxyXCI7XG4gICAgICAgIGNhc2UgXCJ0XCI6XG4gICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgIHJldHVybiBcIlx0XCI7XG4gICAgICAgIGNhc2UgXCJ2XCI6XG4gICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgIHJldHVybiBcIlxcdlwiO1xuICAgICAgICBjYXNlIFwiMFwiOlxuICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICBpZiAodXRpbC5pc0RpZ2l0KHBlZWsoKSkpIHtcbiAgICAgICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBcIlxcMFwiO1xuICAgICAgICBjYXNlIFwieFwiOlxuICAgICAgICAgIHJlYWQoKTtcbiAgICAgICAgICByZXR1cm4gaGV4RXNjYXBlKCk7XG4gICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgIHJldHVybiB1bmljb2RlRXNjYXBlKCk7XG4gICAgICAgIGNhc2UgXCJcXG5cIjpcbiAgICAgICAgY2FzZSBcIlxcdTIwMjhcIjpcbiAgICAgICAgY2FzZSBcIlxcdTIwMjlcIjpcbiAgICAgICAgICByZWFkKCk7XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIGNhc2UgXCJcXHJcIjpcbiAgICAgICAgICByZWFkKCk7XG4gICAgICAgICAgaWYgKHBlZWsoKSA9PT0gXCJcXG5cIikge1xuICAgICAgICAgICAgcmVhZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgY2FzZSBcIjFcIjpcbiAgICAgICAgY2FzZSBcIjJcIjpcbiAgICAgICAgY2FzZSBcIjNcIjpcbiAgICAgICAgY2FzZSBcIjRcIjpcbiAgICAgICAgY2FzZSBcIjVcIjpcbiAgICAgICAgY2FzZSBcIjZcIjpcbiAgICAgICAgY2FzZSBcIjdcIjpcbiAgICAgICAgY2FzZSBcIjhcIjpcbiAgICAgICAgY2FzZSBcIjlcIjpcbiAgICAgICAgICB0aHJvdyBpbnZhbGlkQ2hhcihyZWFkKCkpO1xuICAgICAgICBjYXNlIHZvaWQgMDpcbiAgICAgICAgICB0aHJvdyBpbnZhbGlkQ2hhcihyZWFkKCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlYWQoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGV4RXNjYXBlKCkge1xuICAgICAgbGV0IGJ1ZmZlcjIgPSBcIlwiO1xuICAgICAgbGV0IGMyID0gcGVlaygpO1xuICAgICAgaWYgKCF1dGlsLmlzSGV4RGlnaXQoYzIpKSB7XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9XG4gICAgICBidWZmZXIyICs9IHJlYWQoKTtcbiAgICAgIGMyID0gcGVlaygpO1xuICAgICAgaWYgKCF1dGlsLmlzSGV4RGlnaXQoYzIpKSB7XG4gICAgICAgIHRocm93IGludmFsaWRDaGFyKHJlYWQoKSk7XG4gICAgICB9XG4gICAgICBidWZmZXIyICs9IHJlYWQoKTtcbiAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludChidWZmZXIyLCAxNikpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1bmljb2RlRXNjYXBlKCkge1xuICAgICAgbGV0IGJ1ZmZlcjIgPSBcIlwiO1xuICAgICAgbGV0IGNvdW50ID0gNDtcbiAgICAgIHdoaWxlIChjb3VudC0tID4gMCkge1xuICAgICAgICBjb25zdCBjMiA9IHBlZWsoKTtcbiAgICAgICAgaWYgKCF1dGlsLmlzSGV4RGlnaXQoYzIpKSB7XG4gICAgICAgICAgdGhyb3cgaW52YWxpZENoYXIocmVhZCgpKTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXIyICs9IHJlYWQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludChidWZmZXIyLCAxNikpO1xuICAgIH1cbiAgICB2YXIgcGFyc2VTdGF0ZXMgPSB7XG4gICAgICBzdGFydCgpIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFwiZW9mXCIpIHtcbiAgICAgICAgICB0aHJvdyBpbnZhbGlkRU9GKCk7XG4gICAgICAgIH1cbiAgICAgICAgcHVzaCgpO1xuICAgICAgfSxcbiAgICAgIGJlZm9yZVByb3BlcnR5TmFtZSgpIHtcbiAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgICAgY2FzZSBcImlkZW50aWZpZXJcIjpcbiAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICBrZXkgPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgICAgIHBhcnNlU3RhdGUgPSBcImFmdGVyUHJvcGVydHlOYW1lXCI7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBcInB1bmN0dWF0b3JcIjpcbiAgICAgICAgICAgIHBvcCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCJlb2ZcIjpcbiAgICAgICAgICAgIHRocm93IGludmFsaWRFT0YoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFmdGVyUHJvcGVydHlOYW1lKCkge1xuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gXCJlb2ZcIikge1xuICAgICAgICAgIHRocm93IGludmFsaWRFT0YoKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZVN0YXRlID0gXCJiZWZvcmVQcm9wZXJ0eVZhbHVlXCI7XG4gICAgICB9LFxuICAgICAgYmVmb3JlUHJvcGVydHlWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFwiZW9mXCIpIHtcbiAgICAgICAgICB0aHJvdyBpbnZhbGlkRU9GKCk7XG4gICAgICAgIH1cbiAgICAgICAgcHVzaCgpO1xuICAgICAgfSxcbiAgICAgIGJlZm9yZUFycmF5VmFsdWUoKSB7XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcImVvZlwiKSB7XG4gICAgICAgICAgdGhyb3cgaW52YWxpZEVPRigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcInB1bmN0dWF0b3JcIiAmJiB0b2tlbi52YWx1ZSA9PT0gXCJdXCIpIHtcbiAgICAgICAgICBwb3AoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcHVzaCgpO1xuICAgICAgfSxcbiAgICAgIGFmdGVyUHJvcGVydHlWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFwiZW9mXCIpIHtcbiAgICAgICAgICB0aHJvdyBpbnZhbGlkRU9GKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgXCIsXCI6XG4gICAgICAgICAgICBwYXJzZVN0YXRlID0gXCJiZWZvcmVQcm9wZXJ0eU5hbWVcIjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwifVwiOlxuICAgICAgICAgICAgcG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhZnRlckFycmF5VmFsdWUoKSB7XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcImVvZlwiKSB7XG4gICAgICAgICAgdGhyb3cgaW52YWxpZEVPRigpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICBjYXNlIFwiLFwiOlxuICAgICAgICAgICAgcGFyc2VTdGF0ZSA9IFwiYmVmb3JlQXJyYXlWYWx1ZVwiO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNhc2UgXCJdXCI6XG4gICAgICAgICAgICBwb3AoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVuZCgpIHtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIHB1c2goKSB7XG4gICAgICBsZXQgdmFsdWU7XG4gICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInB1bmN0dWF0b3JcIjpcbiAgICAgICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIFwie1wiOlxuICAgICAgICAgICAgICB2YWx1ZSA9IHt9O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJbXCI6XG4gICAgICAgICAgICAgIHZhbHVlID0gW107XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgIHZhbHVlID0gdG9rZW4udmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAocm9vdCA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJvb3QgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XG4gICAgICAgICAgcGFyZW50LnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHBhcnNlU3RhdGUgPSBcImJlZm9yZUFycmF5VmFsdWVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJzZVN0YXRlID0gXCJiZWZvcmVQcm9wZXJ0eU5hbWVcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAgICAgcGFyc2VTdGF0ZSA9IFwiZW5kXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgICAgICAgIHBhcnNlU3RhdGUgPSBcImFmdGVyQXJyYXlWYWx1ZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnNlU3RhdGUgPSBcImFmdGVyUHJvcGVydHlWYWx1ZVwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBvcCgpIHtcbiAgICAgIHN0YWNrLnBvcCgpO1xuICAgICAgY29uc3QgY3VycmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGN1cnJlbnQgPT0gbnVsbCkge1xuICAgICAgICBwYXJzZVN0YXRlID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgICAgICBwYXJzZVN0YXRlID0gXCJhZnRlckFycmF5VmFsdWVcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlU3RhdGUgPSBcImFmdGVyUHJvcGVydHlWYWx1ZVwiO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbnZhbGlkQ2hhcihjMikge1xuICAgICAgaWYgKGMyID09PSB2b2lkIDApIHtcbiAgICAgICAgcmV0dXJuIHN5bnRheEVycm9yKGBKU09ONTogaW52YWxpZCBlbmQgb2YgaW5wdXQgYXQgJHtsaW5lfToke2NvbHVtbn1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzeW50YXhFcnJvcihgSlNPTjU6IGludmFsaWQgY2hhcmFjdGVyICcke2Zvcm1hdENoYXIoYzIpfScgYXQgJHtsaW5lfToke2NvbHVtbn1gKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW52YWxpZEVPRigpIHtcbiAgICAgIHJldHVybiBzeW50YXhFcnJvcihgSlNPTjU6IGludmFsaWQgZW5kIG9mIGlucHV0IGF0ICR7bGluZX06JHtjb2x1bW59YCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGludmFsaWRJZGVudGlmaWVyKCkge1xuICAgICAgY29sdW1uIC09IDU7XG4gICAgICByZXR1cm4gc3ludGF4RXJyb3IoYEpTT041OiBpbnZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVyIGF0ICR7bGluZX06JHtjb2x1bW59YCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNlcGFyYXRvckNoYXIoYzIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgSlNPTjU6ICcke2Zvcm1hdENoYXIoYzIpfScgaW4gc3RyaW5ncyBpcyBub3QgdmFsaWQgRUNNQVNjcmlwdDsgY29uc2lkZXIgZXNjYXBpbmdgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZm9ybWF0Q2hhcihjMikge1xuICAgICAgY29uc3QgcmVwbGFjZW1lbnRzID0ge1xuICAgICAgICBcIidcIjogXCJcXFxcJ1wiLFxuICAgICAgICAnXCInOiAnXFxcXFwiJyxcbiAgICAgICAgXCJcXFxcXCI6IFwiXFxcXFxcXFxcIixcbiAgICAgICAgXCJcXGJcIjogXCJcXFxcYlwiLFxuICAgICAgICBcIlxcZlwiOiBcIlxcXFxmXCIsXG4gICAgICAgIFwiXFxuXCI6IFwiXFxcXG5cIixcbiAgICAgICAgXCJcXHJcIjogXCJcXFxcclwiLFxuICAgICAgICBcIlx0XCI6IFwiXFxcXHRcIixcbiAgICAgICAgXCJcXHZcIjogXCJcXFxcdlwiLFxuICAgICAgICBcIlxcMFwiOiBcIlxcXFwwXCIsXG4gICAgICAgIFwiXFx1MjAyOFwiOiBcIlxcXFx1MjAyOFwiLFxuICAgICAgICBcIlxcdTIwMjlcIjogXCJcXFxcdTIwMjlcIlxuICAgICAgfTtcbiAgICAgIGlmIChyZXBsYWNlbWVudHNbYzJdKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlbWVudHNbYzJdO1xuICAgICAgfVxuICAgICAgaWYgKGMyIDwgXCIgXCIpIHtcbiAgICAgICAgY29uc3QgaGV4U3RyaW5nID0gYzIuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNik7XG4gICAgICAgIHJldHVybiBcIlxcXFx4XCIgKyAoXCIwMFwiICsgaGV4U3RyaW5nKS5zdWJzdHJpbmcoaGV4U3RyaW5nLmxlbmd0aCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYzI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN5bnRheEVycm9yKG1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGVyciA9IG5ldyBTeW50YXhFcnJvcihtZXNzYWdlKTtcbiAgICAgIGVyci5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIGVyci5jb2x1bW5OdW1iZXIgPSBjb2x1bW47XG4gICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zdHJpbmdpZnkyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9qc29uNS9saWIvc3RyaW5naWZ5LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgdXRpbCA9IHJlcXVpcmVfdXRpbDIoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgICAgY29uc3Qgc3RhY2sgPSBbXTtcbiAgICAgIGxldCBpbmRlbnQgPSBcIlwiO1xuICAgICAgbGV0IHByb3BlcnR5TGlzdDtcbiAgICAgIGxldCByZXBsYWNlckZ1bmM7XG4gICAgICBsZXQgZ2FwID0gXCJcIjtcbiAgICAgIGxldCBxdW90ZTtcbiAgICAgIGlmIChyZXBsYWNlciAhPSBudWxsICYmIHR5cGVvZiByZXBsYWNlciA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShyZXBsYWNlcikpIHtcbiAgICAgICAgc3BhY2UgPSByZXBsYWNlci5zcGFjZTtcbiAgICAgICAgcXVvdGUgPSByZXBsYWNlci5xdW90ZTtcbiAgICAgICAgcmVwbGFjZXIgPSByZXBsYWNlci5yZXBsYWNlcjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXBsYWNlckZ1bmMgPSByZXBsYWNlcjtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXBsYWNlcikpIHtcbiAgICAgICAgcHJvcGVydHlMaXN0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgdiBvZiByZXBsYWNlcikge1xuICAgICAgICAgIGxldCBpdGVtO1xuICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaXRlbSA9IHY7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fCB2IGluc3RhbmNlb2YgU3RyaW5nIHx8IHYgaW5zdGFuY2VvZiBOdW1iZXIpIHtcbiAgICAgICAgICAgIGl0ZW0gPSBTdHJpbmcodik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVtICE9PSB2b2lkIDAgJiYgcHJvcGVydHlMaXN0LmluZGV4T2YoaXRlbSkgPCAwKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eUxpc3QucHVzaChpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzcGFjZSBpbnN0YW5jZW9mIE51bWJlcikge1xuICAgICAgICBzcGFjZSA9IE51bWJlcihzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKHNwYWNlIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIHNwYWNlID0gU3RyaW5nKHNwYWNlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2Ygc3BhY2UgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgaWYgKHNwYWNlID4gMCkge1xuICAgICAgICAgIHNwYWNlID0gTWF0aC5taW4oMTAsIE1hdGguZmxvb3Ioc3BhY2UpKTtcbiAgICAgICAgICBnYXAgPSBcIiAgICAgICAgICBcIi5zdWJzdHIoMCwgc3BhY2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzcGFjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBnYXAgPSBzcGFjZS5zdWJzdHIoMCwgMTApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlcmlhbGl6ZVByb3BlcnR5KFwiXCIsIHtcbiAgICAgICAgXCJcIjogdmFsdWVcbiAgICAgIH0pO1xuICAgICAgZnVuY3Rpb24gc2VyaWFsaXplUHJvcGVydHkoa2V5LCBob2xkZXIpIHtcbiAgICAgICAgbGV0IHZhbHVlMiA9IGhvbGRlcltrZXldO1xuICAgICAgICBpZiAodmFsdWUyICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlMi50b0pTT041ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHZhbHVlMiA9IHZhbHVlMi50b0pTT041KGtleSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUyLnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB2YWx1ZTIgPSB2YWx1ZTIudG9KU09OKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXBsYWNlckZ1bmMpIHtcbiAgICAgICAgICB2YWx1ZTIgPSByZXBsYWNlckZ1bmMuY2FsbChob2xkZXIsIGtleSwgdmFsdWUyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUyIGluc3RhbmNlb2YgTnVtYmVyKSB7XG4gICAgICAgICAgdmFsdWUyID0gTnVtYmVyKHZhbHVlMik7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUyIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgICAgdmFsdWUyID0gU3RyaW5nKHZhbHVlMik7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUyIGluc3RhbmNlb2YgQm9vbGVhbikge1xuICAgICAgICAgIHZhbHVlMiA9IHZhbHVlMi52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh2YWx1ZTIpIHtcbiAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgICAgY2FzZSB0cnVlOlxuICAgICAgICAgICAgcmV0dXJuIFwidHJ1ZVwiO1xuICAgICAgICAgIGNhc2UgZmFsc2U6XG4gICAgICAgICAgICByZXR1cm4gXCJmYWxzZVwiO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIHF1b3RlU3RyaW5nKHZhbHVlMiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUyID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZTIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUyID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUyKSA/IHNlcmlhbGl6ZUFycmF5KHZhbHVlMikgOiBzZXJpYWxpemVPYmplY3QodmFsdWUyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcXVvdGVTdHJpbmcodmFsdWUyKSB7XG4gICAgICAgIGNvbnN0IHF1b3RlcyA9IHtcbiAgICAgICAgICBcIidcIjogMC4xLFxuICAgICAgICAgICdcIic6IDAuMlxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudHMgPSB7XG4gICAgICAgICAgXCInXCI6IFwiXFxcXCdcIixcbiAgICAgICAgICAnXCInOiAnXFxcXFwiJyxcbiAgICAgICAgICBcIlxcXFxcIjogXCJcXFxcXFxcXFwiLFxuICAgICAgICAgIFwiXFxiXCI6IFwiXFxcXGJcIixcbiAgICAgICAgICBcIlxcZlwiOiBcIlxcXFxmXCIsXG4gICAgICAgICAgXCJcXG5cIjogXCJcXFxcblwiLFxuICAgICAgICAgIFwiXFxyXCI6IFwiXFxcXHJcIixcbiAgICAgICAgICBcIlx0XCI6IFwiXFxcXHRcIixcbiAgICAgICAgICBcIlxcdlwiOiBcIlxcXFx2XCIsXG4gICAgICAgICAgXCJcXDBcIjogXCJcXFxcMFwiLFxuICAgICAgICAgIFwiXFx1MjAyOFwiOiBcIlxcXFx1MjAyOFwiLFxuICAgICAgICAgIFwiXFx1MjAyOVwiOiBcIlxcXFx1MjAyOVwiXG4gICAgICAgIH07XG4gICAgICAgIGxldCBwcm9kdWN0ID0gXCJcIjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZTIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBjID0gdmFsdWUyW2ldO1xuICAgICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgICAgY2FzZSBcIidcIjpcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgICAgcXVvdGVzW2NdKys7XG4gICAgICAgICAgICAgIHByb2R1Y3QgKz0gYztcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlIFwiXFwwXCI6XG4gICAgICAgICAgICAgIGlmICh1dGlsLmlzRGlnaXQodmFsdWUyW2kgKyAxXSkpIHtcbiAgICAgICAgICAgICAgICBwcm9kdWN0ICs9IFwiXFxcXHgwMFwiO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXBsYWNlbWVudHNbY10pIHtcbiAgICAgICAgICAgIHByb2R1Y3QgKz0gcmVwbGFjZW1lbnRzW2NdO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjIDwgXCIgXCIpIHtcbiAgICAgICAgICAgIGxldCBoZXhTdHJpbmcgPSBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xuICAgICAgICAgICAgcHJvZHVjdCArPSBcIlxcXFx4XCIgKyAoXCIwMFwiICsgaGV4U3RyaW5nKS5zdWJzdHJpbmcoaGV4U3RyaW5nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvZHVjdCArPSBjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1b3RlQ2hhciA9IHF1b3RlIHx8IE9iamVjdC5rZXlzKHF1b3RlcykucmVkdWNlKChhLCBiKSA9PiBxdW90ZXNbYV0gPCBxdW90ZXNbYl0gPyBhIDogYik7XG4gICAgICAgIHByb2R1Y3QgPSBwcm9kdWN0LnJlcGxhY2UobmV3IFJlZ0V4cChxdW90ZUNoYXIsIFwiZ1wiKSwgcmVwbGFjZW1lbnRzW3F1b3RlQ2hhcl0pO1xuICAgICAgICByZXR1cm4gcXVvdGVDaGFyICsgcHJvZHVjdCArIHF1b3RlQ2hhcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZU9iamVjdCh2YWx1ZTIpIHtcbiAgICAgICAgaWYgKHN0YWNrLmluZGV4T2YodmFsdWUyKSA+PSAwKSB7XG4gICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTjVcIik7XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2sucHVzaCh2YWx1ZTIpO1xuICAgICAgICBsZXQgc3RlcGJhY2sgPSBpbmRlbnQ7XG4gICAgICAgIGluZGVudCA9IGluZGVudCArIGdhcDtcbiAgICAgICAgbGV0IGtleXMgPSBwcm9wZXJ0eUxpc3QgfHwgT2JqZWN0LmtleXModmFsdWUyKTtcbiAgICAgICAgbGV0IHBhcnRpYWwgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5U3RyaW5nID0gc2VyaWFsaXplUHJvcGVydHkoa2V5LCB2YWx1ZTIpO1xuICAgICAgICAgIGlmIChwcm9wZXJ0eVN0cmluZyAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBsZXQgbWVtYmVyID0gc2VyaWFsaXplS2V5KGtleSkgKyBcIjpcIjtcbiAgICAgICAgICAgIGlmIChnYXAgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgbWVtYmVyICs9IFwiIFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWVtYmVyICs9IHByb3BlcnR5U3RyaW5nO1xuICAgICAgICAgICAgcGFydGlhbC5wdXNoKG1lbWJlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBmaW5hbDtcbiAgICAgICAgaWYgKHBhcnRpYWwubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZmluYWwgPSBcInt9XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IHByb3BlcnRpZXM7XG4gICAgICAgICAgaWYgKGdhcCA9PT0gXCJcIikge1xuICAgICAgICAgICAgcHJvcGVydGllcyA9IHBhcnRpYWwuam9pbihcIixcIik7XG4gICAgICAgICAgICBmaW5hbCA9IFwie1wiICsgcHJvcGVydGllcyArIFwifVwiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VwYXJhdG9yID0gXCIsXFxuXCIgKyBpbmRlbnQ7XG4gICAgICAgICAgICBwcm9wZXJ0aWVzID0gcGFydGlhbC5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBmaW5hbCA9IFwie1xcblwiICsgaW5kZW50ICsgcHJvcGVydGllcyArIFwiLFxcblwiICsgc3RlcGJhY2sgKyBcIn1cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2sucG9wKCk7XG4gICAgICAgIGluZGVudCA9IHN0ZXBiYWNrO1xuICAgICAgICByZXR1cm4gZmluYWw7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBzZXJpYWxpemVLZXkoa2V5KSB7XG4gICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHF1b3RlU3RyaW5nKGtleSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlyc3RDaGFyID0gU3RyaW5nLmZyb21Db2RlUG9pbnQoa2V5LmNvZGVQb2ludEF0KDApKTtcbiAgICAgICAgaWYgKCF1dGlsLmlzSWRTdGFydENoYXIoZmlyc3RDaGFyKSkge1xuICAgICAgICAgIHJldHVybiBxdW90ZVN0cmluZyhrZXksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSBmaXJzdENoYXIubGVuZ3RoOyBpIDwga2V5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCF1dGlsLmlzSWRDb250aW51ZUNoYXIoU3RyaW5nLmZyb21Db2RlUG9pbnQoa2V5LmNvZGVQb2ludEF0KGkpKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBxdW90ZVN0cmluZyhrZXksIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gc2VyaWFsaXplQXJyYXkodmFsdWUyKSB7XG4gICAgICAgIGlmIChzdGFjay5pbmRleE9mKHZhbHVlMikgPj0gMCkge1xuICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIkNvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT041XCIpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2godmFsdWUyKTtcbiAgICAgICAgbGV0IHN0ZXBiYWNrID0gaW5kZW50O1xuICAgICAgICBpbmRlbnQgPSBpbmRlbnQgKyBnYXA7XG4gICAgICAgIGxldCBwYXJ0aWFsID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBzZXJpYWxpemVQcm9wZXJ0eShTdHJpbmcoaSksIHZhbHVlMik7XG4gICAgICAgICAgcGFydGlhbC5wdXNoKHByb3BlcnR5U3RyaW5nICE9PSB2b2lkIDAgPyBwcm9wZXJ0eVN0cmluZyA6IFwibnVsbFwiKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmluYWw7XG4gICAgICAgIGlmIChwYXJ0aWFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGZpbmFsID0gXCJbXVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChnYXAgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gcGFydGlhbC5qb2luKFwiLFwiKTtcbiAgICAgICAgICAgIGZpbmFsID0gXCJbXCIgKyBwcm9wZXJ0aWVzICsgXCJdXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzZXBhcmF0b3IgPSBcIixcXG5cIiArIGluZGVudDtcbiAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gcGFydGlhbC5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBmaW5hbCA9IFwiW1xcblwiICsgaW5kZW50ICsgcHJvcGVydGllcyArIFwiLFxcblwiICsgc3RlcGJhY2sgKyBcIl1cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2sucG9wKCk7XG4gICAgICAgIGluZGVudCA9IHN0ZXBiYWNrO1xuICAgICAgICByZXR1cm4gZmluYWw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9saWI2ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9qc29uNS9saWIvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBwYXJzZSA9IHJlcXVpcmVfcGFyc2UzKCk7XG4gICAgdmFyIHN0cmluZ2lmeSA9IHJlcXVpcmVfc3RyaW5naWZ5MigpO1xuICAgIHZhciBKU09ONSA9IHtcbiAgICAgIHBhcnNlLFxuICAgICAgc3RyaW5naWZ5XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBKU09ONTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sb2FkX2pzb241ID0gX19jb21tb25KUzIoe1xuICBcInNyYy91dGlscy9sb2FkLWpzb241LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgcGFyc2VcbiAgICB9ID0gcmVxdWlyZV9saWI2KCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24oZmlsZVBhdGgsIGNvbnRlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBwYXJzZShjb250ZW50KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgSlNPTjUgRXJyb3IgaW4gJHtmaWxlUGF0aH06XG4ke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJ0aXRpb24gPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL3V0aWxzL3BhcnRpdGlvbi5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgZnVuY3Rpb24gcGFydGl0aW9uKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFtbXSwgW11dO1xuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBhcnJheSkge1xuICAgICAgICByZXN1bHRbcHJlZGljYXRlKHZhbHVlKSA/IDAgOiAxXS5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHBhcnRpdGlvbjtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9ob21lZGlyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9yZXNvbHZlL2xpYi9ob21lZGlyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgb3MgPSByZXF1aXJlKFwib3NcIik7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gb3MuaG9tZWRpciB8fCBmdW5jdGlvbiBob21lZGlyKCkge1xuICAgICAgdmFyIGhvbWUgPSBwcm9jZXNzLmVudi5IT01FO1xuICAgICAgdmFyIHVzZXIgPSBwcm9jZXNzLmVudi5MT0dOQU1FIHx8IHByb2Nlc3MuZW52LlVTRVIgfHwgcHJvY2Vzcy5lbnYuTE5BTUUgfHwgcHJvY2Vzcy5lbnYuVVNFUk5BTUU7XG4gICAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi5VU0VSUFJPRklMRSB8fCBwcm9jZXNzLmVudi5IT01FRFJJVkUgKyBwcm9jZXNzLmVudi5IT01FUEFUSCB8fCBob21lIHx8IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJkYXJ3aW5cIikge1xuICAgICAgICByZXR1cm4gaG9tZSB8fCAodXNlciA/IFwiL1VzZXJzL1wiICsgdXNlciA6IG51bGwpO1xuICAgICAgfVxuICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwibGludXhcIikge1xuICAgICAgICByZXR1cm4gaG9tZSB8fCAocHJvY2Vzcy5nZXR1aWQoKSA9PT0gMCA/IFwiL3Jvb3RcIiA6IHVzZXIgPyBcIi9ob21lL1wiICsgdXNlciA6IG51bGwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhvbWUgfHwgbnVsbDtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NhbGxlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcmVzb2x2ZS9saWIvY2FsbGVyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcmlnUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnVuY3Rpb24oXywgc3RhY2syKSB7XG4gICAgICAgIHJldHVybiBzdGFjazI7XG4gICAgICB9O1xuICAgICAgdmFyIHN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gICAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IG9yaWdQcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgIHJldHVybiBzdGFja1syXS5nZXRGaWxlTmFtZSgpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcGF0aF9wYXJzZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcGF0aC1wYXJzZS9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGlzV2luZG93cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIjtcbiAgICB2YXIgc3BsaXRXaW5kb3dzUmUgPSAvXigoKD86W2EtekEtWl06fFtcXFxcXFwvXXsyfVteXFxcXFxcL10rW1xcXFxcXC9dK1teXFxcXFxcL10rKT9bXFxcXFxcL10/KSg/OlteXFxcXFxcL10qW1xcXFxcXC9dKSopKChcXC57MSwyfXxbXlxcXFxcXC9dKz98KShcXC5bXi5cXC9cXFxcXSp8KSlbXFxcXFxcL10qJC87XG4gICAgdmFyIHdpbjMyID0ge307XG4gICAgZnVuY3Rpb24gd2luMzJTcGxpdFBhdGgoZmlsZW5hbWUpIHtcbiAgICAgIHJldHVybiBzcGxpdFdpbmRvd3NSZS5leGVjKGZpbGVuYW1lKS5zbGljZSgxKTtcbiAgICB9XG4gICAgd2luMzIucGFyc2UgPSBmdW5jdGlvbihwYXRoU3RyaW5nKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGhTdHJpbmcgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlBhcmFtZXRlciAncGF0aFN0cmluZycgbXVzdCBiZSBhIHN0cmluZywgbm90IFwiICsgdHlwZW9mIHBhdGhTdHJpbmcpO1xuICAgICAgfVxuICAgICAgdmFyIGFsbFBhcnRzID0gd2luMzJTcGxpdFBhdGgocGF0aFN0cmluZyk7XG4gICAgICBpZiAoIWFsbFBhcnRzIHx8IGFsbFBhcnRzLmxlbmd0aCAhPT0gNSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBwYXRoICdcIiArIHBhdGhTdHJpbmcgKyBcIidcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICByb290OiBhbGxQYXJ0c1sxXSxcbiAgICAgICAgZGlyOiBhbGxQYXJ0c1swXSA9PT0gYWxsUGFydHNbMV0gPyBhbGxQYXJ0c1swXSA6IGFsbFBhcnRzWzBdLnNsaWNlKDAsIC0xKSxcbiAgICAgICAgYmFzZTogYWxsUGFydHNbMl0sXG4gICAgICAgIGV4dDogYWxsUGFydHNbNF0sXG4gICAgICAgIG5hbWU6IGFsbFBhcnRzWzNdXG4gICAgICB9O1xuICAgIH07XG4gICAgdmFyIHNwbGl0UGF0aFJlID0gL14oKFxcLz8pKD86W15cXC9dKlxcLykqKSgoXFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKVtcXC9dKiQvO1xuICAgIHZhciBwb3NpeCA9IHt9O1xuICAgIGZ1bmN0aW9uIHBvc2l4U3BsaXRQYXRoKGZpbGVuYW1lKSB7XG4gICAgICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7XG4gICAgfVxuICAgIHBvc2l4LnBhcnNlID0gZnVuY3Rpb24ocGF0aFN0cmluZykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoU3RyaW5nICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQYXJhbWV0ZXIgJ3BhdGhTdHJpbmcnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCBcIiArIHR5cGVvZiBwYXRoU3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHZhciBhbGxQYXJ0cyA9IHBvc2l4U3BsaXRQYXRoKHBhdGhTdHJpbmcpO1xuICAgICAgaWYgKCFhbGxQYXJ0cyB8fCBhbGxQYXJ0cy5sZW5ndGggIT09IDUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgcGF0aCAnXCIgKyBwYXRoU3RyaW5nICsgXCInXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogYWxsUGFydHNbMV0sXG4gICAgICAgIGRpcjogYWxsUGFydHNbMF0uc2xpY2UoMCwgLTEpLFxuICAgICAgICBiYXNlOiBhbGxQYXJ0c1syXSxcbiAgICAgICAgZXh0OiBhbGxQYXJ0c1s0XSxcbiAgICAgICAgbmFtZTogYWxsUGFydHNbM11cbiAgICAgIH07XG4gICAgfTtcbiAgICBpZiAoaXNXaW5kb3dzKVxuICAgICAgbW9kdWxlMi5leHBvcnRzID0gd2luMzIucGFyc2U7XG4gICAgZWxzZVxuICAgICAgbW9kdWxlMi5leHBvcnRzID0gcG9zaXgucGFyc2U7XG4gICAgbW9kdWxlMi5leHBvcnRzLnBvc2l4ID0gcG9zaXgucGFyc2U7XG4gICAgbW9kdWxlMi5leHBvcnRzLndpbjMyID0gd2luMzIucGFyc2U7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbm9kZV9tb2R1bGVzX3BhdGhzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9yZXNvbHZlL2xpYi9ub2RlLW1vZHVsZXMtcGF0aHMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgdmFyIHBhcnNlID0gcGF0aC5wYXJzZSB8fCByZXF1aXJlX3BhdGhfcGFyc2UoKTtcbiAgICB2YXIgZ2V0Tm9kZU1vZHVsZXNEaXJzID0gZnVuY3Rpb24gZ2V0Tm9kZU1vZHVsZXNEaXJzMihhYnNvbHV0ZVN0YXJ0LCBtb2R1bGVzKSB7XG4gICAgICB2YXIgcHJlZml4ID0gXCIvXCI7XG4gICAgICBpZiAoL14oW0EtWmEtel06KS8udGVzdChhYnNvbHV0ZVN0YXJ0KSkge1xuICAgICAgICBwcmVmaXggPSBcIlwiO1xuICAgICAgfSBlbHNlIGlmICgvXlxcXFxcXFxcLy50ZXN0KGFic29sdXRlU3RhcnQpKSB7XG4gICAgICAgIHByZWZpeCA9IFwiXFxcXFxcXFxcIjtcbiAgICAgIH1cbiAgICAgIHZhciBwYXRocyA9IFthYnNvbHV0ZVN0YXJ0XTtcbiAgICAgIHZhciBwYXJzZWQgPSBwYXJzZShhYnNvbHV0ZVN0YXJ0KTtcbiAgICAgIHdoaWxlIChwYXJzZWQuZGlyICE9PSBwYXRoc1twYXRocy5sZW5ndGggLSAxXSkge1xuICAgICAgICBwYXRocy5wdXNoKHBhcnNlZC5kaXIpO1xuICAgICAgICBwYXJzZWQgPSBwYXJzZShwYXJzZWQuZGlyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRocy5yZWR1Y2UoZnVuY3Rpb24oZGlycywgYVBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGRpcnMuY29uY2F0KG1vZHVsZXMubWFwKGZ1bmN0aW9uKG1vZHVsZURpcikge1xuICAgICAgICAgIHJldHVybiBwYXRoLnJlc29sdmUocHJlZml4LCBhUGF0aCwgbW9kdWxlRGlyKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSwgW10pO1xuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24gbm9kZU1vZHVsZXNQYXRocyhzdGFydCwgb3B0cywgcmVxdWVzdCkge1xuICAgICAgdmFyIG1vZHVsZXMgPSBvcHRzICYmIG9wdHMubW9kdWxlRGlyZWN0b3J5ID8gW10uY29uY2F0KG9wdHMubW9kdWxlRGlyZWN0b3J5KSA6IFtcIm5vZGVfbW9kdWxlc1wiXTtcbiAgICAgIGlmIChvcHRzICYmIHR5cGVvZiBvcHRzLnBhdGhzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIG9wdHMucGF0aHMocmVxdWVzdCwgc3RhcnQsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBnZXROb2RlTW9kdWxlc0RpcnMoc3RhcnQsIG1vZHVsZXMpO1xuICAgICAgICB9LCBvcHRzKTtcbiAgICAgIH1cbiAgICAgIHZhciBkaXJzID0gZ2V0Tm9kZU1vZHVsZXNEaXJzKHN0YXJ0LCBtb2R1bGVzKTtcbiAgICAgIHJldHVybiBvcHRzICYmIG9wdHMucGF0aHMgPyBkaXJzLmNvbmNhdChvcHRzLnBhdGhzKSA6IGRpcnM7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9ub3JtYWxpemVfb3B0aW9ucyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcmVzb2x2ZS9saWIvbm9ybWFsaXplLW9wdGlvbnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uKHgsIG9wdHMpIHtcbiAgICAgIHJldHVybiBvcHRzIHx8IHt9O1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaW1wbGVtZW50YXRpb24gPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Z1bmN0aW9uLWJpbmQvaW1wbGVtZW50YXRpb24uanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBFUlJPUl9NRVNTQUdFID0gXCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIFwiO1xuICAgIHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbiAgICB2YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuICAgIHZhciBmdW5jVHlwZSA9IFwiW29iamVjdCBGdW5jdGlvbl1cIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKHRoYXQpIHtcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09IFwiZnVuY3Rpb25cIiB8fCB0b1N0ci5jYWxsKHRhcmdldCkgIT09IGZ1bmNUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRVJST1JfTUVTU0FHRSArIHRhcmdldCk7XG4gICAgICB9XG4gICAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgIHZhciBib3VuZDtcbiAgICAgIHZhciBiaW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSB0YXJnZXQuYXBwbHkodGhpcywgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgICAgICAgaWYgKE9iamVjdChyZXN1bHQpID09PSByZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkodGhhdCwgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgYm91bmRMZW5ndGggPSBNYXRoLm1heCgwLCB0YXJnZXQubGVuZ3RoIC0gYXJncy5sZW5ndGgpO1xuICAgICAgdmFyIGJvdW5kQXJncyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3VuZExlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJvdW5kQXJncy5wdXNoKFwiJFwiICsgaSk7XG4gICAgICB9XG4gICAgICBib3VuZCA9IEZ1bmN0aW9uKFwiYmluZGVyXCIsIFwicmV0dXJuIGZ1bmN0aW9uIChcIiArIGJvdW5kQXJncy5qb2luKFwiLFwiKSArIFwiKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7IH1cIikoYmluZGVyKTtcbiAgICAgIGlmICh0YXJnZXQucHJvdG90eXBlKSB7XG4gICAgICAgIHZhciBFbXB0eSA9IGZ1bmN0aW9uIEVtcHR5MigpIHtcbiAgICAgICAgfTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gdGFyZ2V0LnByb3RvdHlwZTtcbiAgICAgICAgYm91bmQucHJvdG90eXBlID0gbmV3IEVtcHR5KCk7XG4gICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gYm91bmQ7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9mdW5jdGlvbl9iaW5kID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlX2ltcGxlbWVudGF0aW9uKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgaW1wbGVtZW50YXRpb247XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc3JjID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9oYXMvc3JjL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgYmluZCA9IHJlcXVpcmVfZnVuY3Rpb25fYmluZCgpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb3JlMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvaXMtY29yZS1tb2R1bGUvY29yZS5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBhc3NlcnQ6IHRydWUsXG4gICAgICBcIm5vZGU6YXNzZXJ0XCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwiYXNzZXJ0L3N0cmljdFwiOiBcIj49IDE1XCIsXG4gICAgICBcIm5vZGU6YXNzZXJ0L3N0cmljdFwiOiBcIj49IDE2XCIsXG4gICAgICBhc3luY19ob29rczogXCI+PSA4XCIsXG4gICAgICBcIm5vZGU6YXN5bmNfaG9va3NcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgYnVmZmVyX2llZWU3NTQ6IFwiPj0gMC41ICYmIDwgMC45LjdcIixcbiAgICAgIGJ1ZmZlcjogdHJ1ZSxcbiAgICAgIFwibm9kZTpidWZmZXJcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgY2hpbGRfcHJvY2VzczogdHJ1ZSxcbiAgICAgIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGNsdXN0ZXI6IFwiPj0gMC41XCIsXG4gICAgICBcIm5vZGU6Y2x1c3RlclwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBjb25zb2xlOiB0cnVlLFxuICAgICAgXCJub2RlOmNvbnNvbGVcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgY29uc3RhbnRzOiB0cnVlLFxuICAgICAgXCJub2RlOmNvbnN0YW50c1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBjcnlwdG86IHRydWUsXG4gICAgICBcIm5vZGU6Y3J5cHRvXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF9kZWJ1Z19hZ2VudDogXCI+PSAxICYmIDwgOFwiLFxuICAgICAgX2RlYnVnZ2VyOiBcIjwgOFwiLFxuICAgICAgZGdyYW06IHRydWUsXG4gICAgICBcIm5vZGU6ZGdyYW1cIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgZGlhZ25vc3RpY3NfY2hhbm5lbDogW1wiPj0gMTQuMTcgJiYgPCAxNVwiLCBcIj49IDE1LjFcIl0sXG4gICAgICBcIm5vZGU6ZGlhZ25vc3RpY3NfY2hhbm5lbFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBkbnM6IHRydWUsXG4gICAgICBcIm5vZGU6ZG5zXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwiZG5zL3Byb21pc2VzXCI6IFwiPj0gMTVcIixcbiAgICAgIFwibm9kZTpkbnMvcHJvbWlzZXNcIjogXCI+PSAxNlwiLFxuICAgICAgZG9tYWluOiBcIj49IDAuNy4xMlwiLFxuICAgICAgXCJub2RlOmRvbWFpblwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBldmVudHM6IHRydWUsXG4gICAgICBcIm5vZGU6ZXZlbnRzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGZyZWVsaXN0OiBcIjwgNlwiLFxuICAgICAgZnM6IHRydWUsXG4gICAgICBcIm5vZGU6ZnNcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgXCJmcy9wcm9taXNlc1wiOiBbXCI+PSAxMCAmJiA8IDEwLjFcIiwgXCI+PSAxNFwiXSxcbiAgICAgIFwibm9kZTpmcy9wcm9taXNlc1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfaHR0cF9hZ2VudDogXCI+PSAwLjExLjFcIixcbiAgICAgIFwibm9kZTpfaHR0cF9hZ2VudFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfaHR0cF9jbGllbnQ6IFwiPj0gMC4xMS4xXCIsXG4gICAgICBcIm5vZGU6X2h0dHBfY2xpZW50XCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF9odHRwX2NvbW1vbjogXCI+PSAwLjExLjFcIixcbiAgICAgIFwibm9kZTpfaHR0cF9jb21tb25cIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX2h0dHBfaW5jb21pbmc6IFwiPj0gMC4xMS4xXCIsXG4gICAgICBcIm5vZGU6X2h0dHBfaW5jb21pbmdcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX2h0dHBfb3V0Z29pbmc6IFwiPj0gMC4xMS4xXCIsXG4gICAgICBcIm5vZGU6X2h0dHBfb3V0Z29pbmdcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX2h0dHBfc2VydmVyOiBcIj49IDAuMTEuMVwiLFxuICAgICAgXCJub2RlOl9odHRwX3NlcnZlclwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBodHRwOiB0cnVlLFxuICAgICAgXCJub2RlOmh0dHBcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgaHR0cDI6IFwiPj0gOC44XCIsXG4gICAgICBcIm5vZGU6aHR0cDJcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgaHR0cHM6IHRydWUsXG4gICAgICBcIm5vZGU6aHR0cHNcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgaW5zcGVjdG9yOiBcIj49IDhcIixcbiAgICAgIFwibm9kZTppbnNwZWN0b3JcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX2xpbmtsaXN0OiBcIjwgOFwiLFxuICAgICAgbW9kdWxlOiB0cnVlLFxuICAgICAgXCJub2RlOm1vZHVsZVwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBuZXQ6IHRydWUsXG4gICAgICBcIm5vZGU6bmV0XCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwibm9kZS1pbnNwZWN0L2xpYi9faW5zcGVjdFwiOiBcIj49IDcuNiAmJiA8IDEyXCIsXG4gICAgICBcIm5vZGUtaW5zcGVjdC9saWIvaW50ZXJuYWwvaW5zcGVjdF9jbGllbnRcIjogXCI+PSA3LjYgJiYgPCAxMlwiLFxuICAgICAgXCJub2RlLWluc3BlY3QvbGliL2ludGVybmFsL2luc3BlY3RfcmVwbFwiOiBcIj49IDcuNiAmJiA8IDEyXCIsXG4gICAgICBvczogdHJ1ZSxcbiAgICAgIFwibm9kZTpvc1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBwYXRoOiB0cnVlLFxuICAgICAgXCJub2RlOnBhdGhcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgXCJwYXRoL3Bvc2l4XCI6IFwiPj0gMTUuM1wiLFxuICAgICAgXCJub2RlOnBhdGgvcG9zaXhcIjogXCI+PSAxNlwiLFxuICAgICAgXCJwYXRoL3dpbjMyXCI6IFwiPj0gMTUuM1wiLFxuICAgICAgXCJub2RlOnBhdGgvd2luMzJcIjogXCI+PSAxNlwiLFxuICAgICAgcGVyZl9ob29rczogXCI+PSA4LjVcIixcbiAgICAgIFwibm9kZTpwZXJmX2hvb2tzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHByb2Nlc3M6IFwiPj0gMVwiLFxuICAgICAgXCJub2RlOnByb2Nlc3NcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgcHVueWNvZGU6IFwiPj0gMC41XCIsXG4gICAgICBcIm5vZGU6cHVueWNvZGVcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgcXVlcnlzdHJpbmc6IHRydWUsXG4gICAgICBcIm5vZGU6cXVlcnlzdHJpbmdcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgcmVhZGxpbmU6IHRydWUsXG4gICAgICBcIm5vZGU6cmVhZGxpbmVcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgXCJyZWFkbGluZS9wcm9taXNlc1wiOiBcIj49IDE3XCIsXG4gICAgICBcIm5vZGU6cmVhZGxpbmUvcHJvbWlzZXNcIjogXCI+PSAxN1wiLFxuICAgICAgcmVwbDogdHJ1ZSxcbiAgICAgIFwibm9kZTpyZXBsXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHNtYWxsb2M6IFwiPj0gMC4xMS41ICYmIDwgM1wiLFxuICAgICAgX3N0cmVhbV9kdXBsZXg6IFwiPj0gMC45LjRcIixcbiAgICAgIFwibm9kZTpfc3RyZWFtX2R1cGxleFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfc3RyZWFtX3RyYW5zZm9ybTogXCI+PSAwLjkuNFwiLFxuICAgICAgXCJub2RlOl9zdHJlYW1fdHJhbnNmb3JtXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF9zdHJlYW1fd3JhcDogXCI+PSAxLjQuMVwiLFxuICAgICAgXCJub2RlOl9zdHJlYW1fd3JhcFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfc3RyZWFtX3Bhc3N0aHJvdWdoOiBcIj49IDAuOS40XCIsXG4gICAgICBcIm5vZGU6X3N0cmVhbV9wYXNzdGhyb3VnaFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfc3RyZWFtX3JlYWRhYmxlOiBcIj49IDAuOS40XCIsXG4gICAgICBcIm5vZGU6X3N0cmVhbV9yZWFkYWJsZVwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfc3RyZWFtX3dyaXRhYmxlOiBcIj49IDAuOS40XCIsXG4gICAgICBcIm5vZGU6X3N0cmVhbV93cml0YWJsZVwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBzdHJlYW06IHRydWUsXG4gICAgICBcIm5vZGU6c3RyZWFtXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwic3RyZWFtL2NvbnN1bWVyc1wiOiBcIj49IDE2LjdcIixcbiAgICAgIFwibm9kZTpzdHJlYW0vY29uc3VtZXJzXCI6IFwiPj0gMTYuN1wiLFxuICAgICAgXCJzdHJlYW0vcHJvbWlzZXNcIjogXCI+PSAxNVwiLFxuICAgICAgXCJub2RlOnN0cmVhbS9wcm9taXNlc1wiOiBcIj49IDE2XCIsXG4gICAgICBcInN0cmVhbS93ZWJcIjogXCI+PSAxNi41XCIsXG4gICAgICBcIm5vZGU6c3RyZWFtL3dlYlwiOiBcIj49IDE2LjVcIixcbiAgICAgIHN0cmluZ19kZWNvZGVyOiB0cnVlLFxuICAgICAgXCJub2RlOnN0cmluZ19kZWNvZGVyXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHN5czogW1wiPj0gMC40ICYmIDwgMC43XCIsIFwiPj0gMC44XCJdLFxuICAgICAgXCJub2RlOnN5c1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICB0aW1lcnM6IHRydWUsXG4gICAgICBcIm5vZGU6dGltZXJzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwidGltZXJzL3Byb21pc2VzXCI6IFwiPj0gMTVcIixcbiAgICAgIFwibm9kZTp0aW1lcnMvcHJvbWlzZXNcIjogXCI+PSAxNlwiLFxuICAgICAgX3Rsc19jb21tb246IFwiPj0gMC4xMS4xM1wiLFxuICAgICAgXCJub2RlOl90bHNfY29tbW9uXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF90bHNfbGVnYWN5OiBcIj49IDAuMTEuMyAmJiA8IDEwXCIsXG4gICAgICBfdGxzX3dyYXA6IFwiPj0gMC4xMS4zXCIsXG4gICAgICBcIm5vZGU6X3Rsc193cmFwXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHRsczogdHJ1ZSxcbiAgICAgIFwibm9kZTp0bHNcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgdHJhY2VfZXZlbnRzOiBcIj49IDEwXCIsXG4gICAgICBcIm5vZGU6dHJhY2VfZXZlbnRzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHR0eTogdHJ1ZSxcbiAgICAgIFwibm9kZTp0dHlcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgdXJsOiB0cnVlLFxuICAgICAgXCJub2RlOnVybFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICB1dGlsOiB0cnVlLFxuICAgICAgXCJub2RlOnV0aWxcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgXCJ1dGlsL3R5cGVzXCI6IFwiPj0gMTUuM1wiLFxuICAgICAgXCJub2RlOnV0aWwvdHlwZXNcIjogXCI+PSAxNlwiLFxuICAgICAgXCJ2OC90b29scy9hcmd1bWVudHNcIjogXCI+PSAxMCAmJiA8IDEyXCIsXG4gICAgICBcInY4L3Rvb2xzL2NvZGVtYXBcIjogW1wiPj0gNC40ICYmIDwgNVwiLCBcIj49IDUuMiAmJiA8IDEyXCJdLFxuICAgICAgXCJ2OC90b29scy9jb25zYXJyYXlcIjogW1wiPj0gNC40ICYmIDwgNVwiLCBcIj49IDUuMiAmJiA8IDEyXCJdLFxuICAgICAgXCJ2OC90b29scy9jc3ZwYXJzZXJcIjogW1wiPj0gNC40ICYmIDwgNVwiLCBcIj49IDUuMiAmJiA8IDEyXCJdLFxuICAgICAgXCJ2OC90b29scy9sb2dyZWFkZXJcIjogW1wiPj0gNC40ICYmIDwgNVwiLCBcIj49IDUuMiAmJiA8IDEyXCJdLFxuICAgICAgXCJ2OC90b29scy9wcm9maWxlX3ZpZXdcIjogW1wiPj0gNC40ICYmIDwgNVwiLCBcIj49IDUuMiAmJiA8IDEyXCJdLFxuICAgICAgXCJ2OC90b29scy9zcGxheXRyZWVcIjogW1wiPj0gNC40ICYmIDwgNVwiLCBcIj49IDUuMiAmJiA8IDEyXCJdLFxuICAgICAgdjg6IFwiPj0gMVwiLFxuICAgICAgXCJub2RlOnY4XCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHZtOiB0cnVlLFxuICAgICAgXCJub2RlOnZtXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHdhc2k6IFwiPj0gMTMuNCAmJiA8IDEzLjVcIixcbiAgICAgIHdvcmtlcl90aHJlYWRzOiBcIj49IDExLjdcIixcbiAgICAgIFwibm9kZTp3b3JrZXJfdGhyZWFkc1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICB6bGliOiBcIj49IDAuNVwiLFxuICAgICAgXCJub2RlOnpsaWJcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pc19jb3JlX21vZHVsZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvaXMtY29yZS1tb2R1bGUvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBoYXMgPSByZXF1aXJlX3NyYygpO1xuICAgIGZ1bmN0aW9uIHNwZWNpZmllckluY2x1ZGVkKGN1cnJlbnQsIHNwZWNpZmllcikge1xuICAgICAgdmFyIG5vZGVQYXJ0cyA9IGN1cnJlbnQuc3BsaXQoXCIuXCIpO1xuICAgICAgdmFyIHBhcnRzID0gc3BlY2lmaWVyLnNwbGl0KFwiIFwiKTtcbiAgICAgIHZhciBvcCA9IHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0c1swXSA6IFwiPVwiO1xuICAgICAgdmFyIHZlcnNpb25QYXJ0cyA9IChwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbMV0gOiBwYXJ0c1swXSkuc3BsaXQoXCIuXCIpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpIHtcbiAgICAgICAgdmFyIGN1ciA9IHBhcnNlSW50KG5vZGVQYXJ0c1tpXSB8fCAwLCAxMCk7XG4gICAgICAgIHZhciB2ZXIgPSBwYXJzZUludCh2ZXJzaW9uUGFydHNbaV0gfHwgMCwgMTApO1xuICAgICAgICBpZiAoY3VyID09PSB2ZXIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3AgPT09IFwiPFwiKSB7XG4gICAgICAgICAgcmV0dXJuIGN1ciA8IHZlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3AgPT09IFwiPj1cIikge1xuICAgICAgICAgIHJldHVybiBjdXIgPj0gdmVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcCA9PT0gXCI+PVwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYXRjaGVzUmFuZ2UoY3VycmVudCwgcmFuZ2UpIHtcbiAgICAgIHZhciBzcGVjaWZpZXJzID0gcmFuZ2Uuc3BsaXQoLyA/JiYgPy8pO1xuICAgICAgaWYgKHNwZWNpZmllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BlY2lmaWVycy5sZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXNwZWNpZmllckluY2x1ZGVkKGN1cnJlbnQsIHNwZWNpZmllcnNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmVyc2lvbkluY2x1ZGVkKG5vZGVWZXJzaW9uLCBzcGVjaWZpZXJWYWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiBzcGVjaWZpZXJWYWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgcmV0dXJuIHNwZWNpZmllclZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGN1cnJlbnQgPSB0eXBlb2Ygbm9kZVZlcnNpb24gPT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSA6IG5vZGVWZXJzaW9uO1xuICAgICAgaWYgKHR5cGVvZiBjdXJyZW50ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IodHlwZW9mIG5vZGVWZXJzaW9uID09PSBcInVuZGVmaW5lZFwiID8gXCJVbmFibGUgdG8gZGV0ZXJtaW5lIGN1cnJlbnQgbm9kZSB2ZXJzaW9uXCIgOiBcIklmIHByb3ZpZGVkLCBhIHZhbGlkIG5vZGUgdmVyc2lvbiBpcyByZXF1aXJlZFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChzcGVjaWZpZXJWYWx1ZSAmJiB0eXBlb2Ygc3BlY2lmaWVyVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGVjaWZpZXJWYWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGlmIChtYXRjaGVzUmFuZ2UoY3VycmVudCwgc3BlY2lmaWVyVmFsdWVbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoZXNSYW5nZShjdXJyZW50LCBzcGVjaWZpZXJWYWx1ZSk7XG4gICAgfVxuICAgIHZhciBkYXRhID0gcmVxdWlyZV9jb3JlMigpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ29yZSh4LCBub2RlVmVyc2lvbikge1xuICAgICAgcmV0dXJuIGhhcyhkYXRhLCB4KSAmJiB2ZXJzaW9uSW5jbHVkZWQobm9kZVZlcnNpb24sIGRhdGFbeF0pO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfYXN5bmMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Jlc29sdmUvbGliL2FzeW5jLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgdmFyIGdldEhvbWVkaXIgPSByZXF1aXJlX2hvbWVkaXIoKTtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciBjYWxsZXIgPSByZXF1aXJlX2NhbGxlcigpO1xuICAgIHZhciBub2RlTW9kdWxlc1BhdGhzID0gcmVxdWlyZV9ub2RlX21vZHVsZXNfcGF0aHMoKTtcbiAgICB2YXIgbm9ybWFsaXplT3B0aW9ucyA9IHJlcXVpcmVfbm9ybWFsaXplX29wdGlvbnMoKTtcbiAgICB2YXIgaXNDb3JlID0gcmVxdWlyZV9pc19jb3JlX21vZHVsZSgpO1xuICAgIHZhciByZWFscGF0aEZTID0gZnMucmVhbHBhdGggJiYgdHlwZW9mIGZzLnJlYWxwYXRoLm5hdGl2ZSA9PT0gXCJmdW5jdGlvblwiID8gZnMucmVhbHBhdGgubmF0aXZlIDogZnMucmVhbHBhdGg7XG4gICAgdmFyIGhvbWVkaXIgPSBnZXRIb21lZGlyKCk7XG4gICAgdmFyIGRlZmF1bHRQYXRocyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFtwYXRoLmpvaW4oaG9tZWRpciwgXCIubm9kZV9tb2R1bGVzXCIpLCBwYXRoLmpvaW4oaG9tZWRpciwgXCIubm9kZV9saWJyYXJpZXNcIildO1xuICAgIH07XG4gICAgdmFyIGRlZmF1bHRJc0ZpbGUgPSBmdW5jdGlvbiBpc0ZpbGUoZmlsZSwgY2IpIHtcbiAgICAgIGZzLnN0YXQoZmlsZSwgZnVuY3Rpb24oZXJyLCBzdGF0KSB7XG4gICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKG51bGwsIHN0YXQuaXNGaWxlKCkgfHwgc3RhdC5pc0ZJRk8oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyci5jb2RlID09PSBcIkVOT0VOVFwiIHx8IGVyci5jb2RlID09PSBcIkVOT1RESVJcIilcbiAgICAgICAgICByZXR1cm4gY2IobnVsbCwgZmFsc2UpO1xuICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdmFyIGRlZmF1bHRJc0RpciA9IGZ1bmN0aW9uIGlzRGlyZWN0b3J5KGRpciwgY2IpIHtcbiAgICAgIGZzLnN0YXQoZGlyLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICByZXR1cm4gY2IobnVsbCwgc3RhdC5pc0RpcmVjdG9yeSgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFwiRU5PRU5UXCIgfHwgZXJyLmNvZGUgPT09IFwiRU5PVERJUlwiKVxuICAgICAgICAgIHJldHVybiBjYihudWxsLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB2YXIgZGVmYXVsdFJlYWxwYXRoID0gZnVuY3Rpb24gcmVhbHBhdGgoeCwgY2IpIHtcbiAgICAgIHJlYWxwYXRoRlMoeCwgZnVuY3Rpb24ocmVhbHBhdGhFcnIsIHJlYWxQYXRoKSB7XG4gICAgICAgIGlmIChyZWFscGF0aEVyciAmJiByZWFscGF0aEVyci5jb2RlICE9PSBcIkVOT0VOVFwiKVxuICAgICAgICAgIGNiKHJlYWxwYXRoRXJyKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNiKG51bGwsIHJlYWxwYXRoRXJyID8geCA6IHJlYWxQYXRoKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdmFyIG1heWJlUmVhbHBhdGggPSBmdW5jdGlvbiBtYXliZVJlYWxwYXRoMihyZWFscGF0aCwgeCwgb3B0cywgY2IpIHtcbiAgICAgIGlmIChvcHRzICYmIG9wdHMucHJlc2VydmVTeW1saW5rcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmVhbHBhdGgoeCwgY2IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IobnVsbCwgeCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgZGVmYXVsdFJlYWRQYWNrYWdlID0gZnVuY3Rpb24gZGVmYXVsdFJlYWRQYWNrYWdlMihyZWFkRmlsZSwgcGtnZmlsZSwgY2IpIHtcbiAgICAgIHJlYWRGaWxlKHBrZ2ZpbGUsIGZ1bmN0aW9uKHJlYWRGaWxlRXJyLCBib2R5KSB7XG4gICAgICAgIGlmIChyZWFkRmlsZUVycilcbiAgICAgICAgICBjYihyZWFkRmlsZUVycik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcGtnID0gSlNPTi5wYXJzZShib2R5KTtcbiAgICAgICAgICAgIGNiKG51bGwsIHBrZyk7XG4gICAgICAgICAgfSBjYXRjaCAoanNvbkVycikge1xuICAgICAgICAgICAgY2IobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHZhciBnZXRQYWNrYWdlQ2FuZGlkYXRlcyA9IGZ1bmN0aW9uIGdldFBhY2thZ2VDYW5kaWRhdGVzMih4LCBzdGFydCwgb3B0cykge1xuICAgICAgdmFyIGRpcnMgPSBub2RlTW9kdWxlc1BhdGhzKHN0YXJ0LCBvcHRzLCB4KTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkaXJzW2ldID0gcGF0aC5qb2luKGRpcnNbaV0sIHgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRpcnM7XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmdW5jdGlvbiByZXNvbHZlKHgsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgY2IgPSBjYWxsYmFjaztcbiAgICAgIHZhciBvcHRzID0gb3B0aW9ucztcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNiID0gb3B0cztcbiAgICAgICAgb3B0cyA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHZhciBlcnIgPSBuZXcgVHlwZUVycm9yKFwiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLlwiKTtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBvcHRzID0gbm9ybWFsaXplT3B0aW9ucyh4LCBvcHRzKTtcbiAgICAgIHZhciBpc0ZpbGUgPSBvcHRzLmlzRmlsZSB8fCBkZWZhdWx0SXNGaWxlO1xuICAgICAgdmFyIGlzRGlyZWN0b3J5ID0gb3B0cy5pc0RpcmVjdG9yeSB8fCBkZWZhdWx0SXNEaXI7XG4gICAgICB2YXIgcmVhZEZpbGUgPSBvcHRzLnJlYWRGaWxlIHx8IGZzLnJlYWRGaWxlO1xuICAgICAgdmFyIHJlYWxwYXRoID0gb3B0cy5yZWFscGF0aCB8fCBkZWZhdWx0UmVhbHBhdGg7XG4gICAgICB2YXIgcmVhZFBhY2thZ2UgPSBvcHRzLnJlYWRQYWNrYWdlIHx8IGRlZmF1bHRSZWFkUGFja2FnZTtcbiAgICAgIGlmIChvcHRzLnJlYWRGaWxlICYmIG9wdHMucmVhZFBhY2thZ2UpIHtcbiAgICAgICAgdmFyIGNvbmZsaWN0RXJyID0gbmV3IFR5cGVFcnJvcihcImByZWFkRmlsZWAgYW5kIGByZWFkUGFja2FnZWAgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cIik7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNiKGNvbmZsaWN0RXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB2YXIgcGFja2FnZUl0ZXJhdG9yID0gb3B0cy5wYWNrYWdlSXRlcmF0b3I7XG4gICAgICB2YXIgZXh0ZW5zaW9ucyA9IG9wdHMuZXh0ZW5zaW9ucyB8fCBbXCIuanNcIl07XG4gICAgICB2YXIgaW5jbHVkZUNvcmVNb2R1bGVzID0gb3B0cy5pbmNsdWRlQ29yZU1vZHVsZXMgIT09IGZhbHNlO1xuICAgICAgdmFyIGJhc2VkaXIgPSBvcHRzLmJhc2VkaXIgfHwgcGF0aC5kaXJuYW1lKGNhbGxlcigpKTtcbiAgICAgIHZhciBwYXJlbnQgPSBvcHRzLmZpbGVuYW1lIHx8IGJhc2VkaXI7XG4gICAgICBvcHRzLnBhdGhzID0gb3B0cy5wYXRocyB8fCBkZWZhdWx0UGF0aHMoKTtcbiAgICAgIHZhciBhYnNvbHV0ZVN0YXJ0ID0gcGF0aC5yZXNvbHZlKGJhc2VkaXIpO1xuICAgICAgbWF5YmVSZWFscGF0aChyZWFscGF0aCwgYWJzb2x1dGVTdGFydCwgb3B0cywgZnVuY3Rpb24oZXJyMiwgcmVhbFN0YXJ0KSB7XG4gICAgICAgIGlmIChlcnIyKVxuICAgICAgICAgIGNiKGVycjIpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5pdChyZWFsU3RhcnQpO1xuICAgICAgfSk7XG4gICAgICB2YXIgcmVzO1xuICAgICAgZnVuY3Rpb24gaW5pdChiYXNlZGlyMikge1xuICAgICAgICBpZiAoL14oPzpcXC5cXC4/KD86XFwvfCQpfFxcL3woW0EtWmEtel06KT9bL1xcXFxdKS8udGVzdCh4KSkge1xuICAgICAgICAgIHJlcyA9IHBhdGgucmVzb2x2ZShiYXNlZGlyMiwgeCk7XG4gICAgICAgICAgaWYgKHggPT09IFwiLlwiIHx8IHggPT09IFwiLi5cIiB8fCB4LnNsaWNlKC0xKSA9PT0gXCIvXCIpXG4gICAgICAgICAgICByZXMgKz0gXCIvXCI7XG4gICAgICAgICAgaWYgKC9cXC8kLy50ZXN0KHgpICYmIHJlcyA9PT0gYmFzZWRpcjIpIHtcbiAgICAgICAgICAgIGxvYWRBc0RpcmVjdG9yeShyZXMsIG9wdHMucGFja2FnZSwgb25maWxlKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIGxvYWRBc0ZpbGUocmVzLCBvcHRzLnBhY2thZ2UsIG9uZmlsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZUNvcmVNb2R1bGVzICYmIGlzQ29yZSh4KSkge1xuICAgICAgICAgIHJldHVybiBjYihudWxsLCB4KTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgbG9hZE5vZGVNb2R1bGVzKHgsIGJhc2VkaXIyLCBmdW5jdGlvbihlcnIyLCBuLCBwa2cpIHtcbiAgICAgICAgICAgIGlmIChlcnIyKVxuICAgICAgICAgICAgICBjYihlcnIyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKG4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1heWJlUmVhbHBhdGgocmVhbHBhdGgsIG4sIG9wdHMsIGZ1bmN0aW9uKGVycjMsIHJlYWxOKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycjMpIHtcbiAgICAgICAgICAgICAgICAgIGNiKGVycjMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBjYihudWxsLCByZWFsTiwgcGtnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIG1vZHVsZUVycm9yID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHggKyBcIicgZnJvbSAnXCIgKyBwYXJlbnQgKyBcIidcIik7XG4gICAgICAgICAgICAgIG1vZHVsZUVycm9yLmNvZGUgPSBcIk1PRFVMRV9OT1RfRk9VTkRcIjtcbiAgICAgICAgICAgICAgY2IobW9kdWxlRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gb25maWxlKGVycjIsIG0sIHBrZykge1xuICAgICAgICBpZiAoZXJyMilcbiAgICAgICAgICBjYihlcnIyKTtcbiAgICAgICAgZWxzZSBpZiAobSlcbiAgICAgICAgICBjYihudWxsLCBtLCBwa2cpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9hZEFzRGlyZWN0b3J5KHJlcywgZnVuY3Rpb24oZXJyMywgZCwgcGtnMikge1xuICAgICAgICAgICAgaWYgKGVycjMpXG4gICAgICAgICAgICAgIGNiKGVycjMpO1xuICAgICAgICAgICAgZWxzZSBpZiAoZCkge1xuICAgICAgICAgICAgICBtYXliZVJlYWxwYXRoKHJlYWxwYXRoLCBkLCBvcHRzLCBmdW5jdGlvbihlcnI0LCByZWFsRCkge1xuICAgICAgICAgICAgICAgIGlmIChlcnI0KSB7XG4gICAgICAgICAgICAgICAgICBjYihlcnI0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY2IobnVsbCwgcmVhbEQsIHBrZzIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YXIgbW9kdWxlRXJyb3IgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgeCArIFwiJyBmcm9tICdcIiArIHBhcmVudCArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgbW9kdWxlRXJyb3IuY29kZSA9IFwiTU9EVUxFX05PVF9GT1VORFwiO1xuICAgICAgICAgICAgICBjYihtb2R1bGVFcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsb2FkQXNGaWxlKHgyLCB0aGVQYWNrYWdlLCBjYWxsYmFjazIpIHtcbiAgICAgICAgdmFyIGxvYWRBc0ZpbGVQYWNrYWdlID0gdGhlUGFja2FnZTtcbiAgICAgICAgdmFyIGNiMiA9IGNhbGxiYWNrMjtcbiAgICAgICAgaWYgKHR5cGVvZiBsb2FkQXNGaWxlUGFja2FnZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY2IyID0gbG9hZEFzRmlsZVBhY2thZ2U7XG4gICAgICAgICAgbG9hZEFzRmlsZVBhY2thZ2UgPSB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGV4dHMgPSBbXCJcIl0uY29uY2F0KGV4dGVuc2lvbnMpO1xuICAgICAgICBsb2FkKGV4dHMsIHgyLCBsb2FkQXNGaWxlUGFja2FnZSk7XG4gICAgICAgIGZ1bmN0aW9uIGxvYWQoZXh0czIsIHgzLCBsb2FkUGFja2FnZSkge1xuICAgICAgICAgIGlmIChleHRzMi5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gY2IyKG51bGwsIHZvaWQgMCwgbG9hZFBhY2thZ2UpO1xuICAgICAgICAgIHZhciBmaWxlID0geDMgKyBleHRzMlswXTtcbiAgICAgICAgICB2YXIgcGtnID0gbG9hZFBhY2thZ2U7XG4gICAgICAgICAgaWYgKHBrZylcbiAgICAgICAgICAgIG9ucGtnKG51bGwsIHBrZyk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9hZHBrZyhwYXRoLmRpcm5hbWUoZmlsZSksIG9ucGtnKTtcbiAgICAgICAgICBmdW5jdGlvbiBvbnBrZyhlcnIyLCBwa2dfLCBkaXIpIHtcbiAgICAgICAgICAgIHBrZyA9IHBrZ187XG4gICAgICAgICAgICBpZiAoZXJyMilcbiAgICAgICAgICAgICAgcmV0dXJuIGNiMihlcnIyKTtcbiAgICAgICAgICAgIGlmIChkaXIgJiYgcGtnICYmIG9wdHMucGF0aEZpbHRlcikge1xuICAgICAgICAgICAgICB2YXIgcmZpbGUgPSBwYXRoLnJlbGF0aXZlKGRpciwgZmlsZSk7XG4gICAgICAgICAgICAgIHZhciByZWwgPSByZmlsZS5zbGljZSgwLCByZmlsZS5sZW5ndGggLSBleHRzMlswXS5sZW5ndGgpO1xuICAgICAgICAgICAgICB2YXIgciA9IG9wdHMucGF0aEZpbHRlcihwa2csIHgzLCByZWwpO1xuICAgICAgICAgICAgICBpZiAocilcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9hZChbXCJcIl0uY29uY2F0KGV4dGVuc2lvbnMuc2xpY2UoKSksIHBhdGgucmVzb2x2ZShkaXIsIHIpLCBwa2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNGaWxlKGZpbGUsIG9uZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBvbmV4KGVycjIsIGV4KSB7XG4gICAgICAgICAgICBpZiAoZXJyMilcbiAgICAgICAgICAgICAgcmV0dXJuIGNiMihlcnIyKTtcbiAgICAgICAgICAgIGlmIChleClcbiAgICAgICAgICAgICAgcmV0dXJuIGNiMihudWxsLCBmaWxlLCBwa2cpO1xuICAgICAgICAgICAgbG9hZChleHRzMi5zbGljZSgxKSwgeDMsIHBrZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsb2FkcGtnKGRpciwgY2IyKSB7XG4gICAgICAgIGlmIChkaXIgPT09IFwiXCIgfHwgZGlyID09PSBcIi9cIilcbiAgICAgICAgICByZXR1cm4gY2IyKG51bGwpO1xuICAgICAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiICYmIC9eXFx3OlsvXFxcXF0qJC8udGVzdChkaXIpKSB7XG4gICAgICAgICAgcmV0dXJuIGNiMihudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoL1svXFxcXF1ub2RlX21vZHVsZXNbL1xcXFxdKiQvLnRlc3QoZGlyKSlcbiAgICAgICAgICByZXR1cm4gY2IyKG51bGwpO1xuICAgICAgICBtYXliZVJlYWxwYXRoKHJlYWxwYXRoLCBkaXIsIG9wdHMsIGZ1bmN0aW9uKHVud3JhcEVyciwgcGtnZGlyKSB7XG4gICAgICAgICAgaWYgKHVud3JhcEVycilcbiAgICAgICAgICAgIHJldHVybiBsb2FkcGtnKHBhdGguZGlybmFtZShkaXIpLCBjYjIpO1xuICAgICAgICAgIHZhciBwa2dmaWxlID0gcGF0aC5qb2luKHBrZ2RpciwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgaXNGaWxlKHBrZ2ZpbGUsIGZ1bmN0aW9uKGVycjIsIGV4KSB7XG4gICAgICAgICAgICBpZiAoIWV4KVxuICAgICAgICAgICAgICByZXR1cm4gbG9hZHBrZyhwYXRoLmRpcm5hbWUoZGlyKSwgY2IyKTtcbiAgICAgICAgICAgIHJlYWRQYWNrYWdlKHJlYWRGaWxlLCBwa2dmaWxlLCBmdW5jdGlvbihlcnIzLCBwa2dQYXJhbSkge1xuICAgICAgICAgICAgICBpZiAoZXJyMylcbiAgICAgICAgICAgICAgICBjYjIoZXJyMyk7XG4gICAgICAgICAgICAgIHZhciBwa2cgPSBwa2dQYXJhbTtcbiAgICAgICAgICAgICAgaWYgKHBrZyAmJiBvcHRzLnBhY2thZ2VGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBwa2cgPSBvcHRzLnBhY2thZ2VGaWx0ZXIocGtnLCBwa2dmaWxlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYjIobnVsbCwgcGtnLCBkaXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gbG9hZEFzRGlyZWN0b3J5KHgyLCBsb2FkQXNEaXJlY3RvcnlQYWNrYWdlLCBjYWxsYmFjazIpIHtcbiAgICAgICAgdmFyIGNiMiA9IGNhbGxiYWNrMjtcbiAgICAgICAgdmFyIGZwa2cgPSBsb2FkQXNEaXJlY3RvcnlQYWNrYWdlO1xuICAgICAgICBpZiAodHlwZW9mIGZwa2cgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIGNiMiA9IGZwa2c7XG4gICAgICAgICAgZnBrZyA9IG9wdHMucGFja2FnZTtcbiAgICAgICAgfVxuICAgICAgICBtYXliZVJlYWxwYXRoKHJlYWxwYXRoLCB4Miwgb3B0cywgZnVuY3Rpb24odW53cmFwRXJyLCBwa2dkaXIpIHtcbiAgICAgICAgICBpZiAodW53cmFwRXJyKVxuICAgICAgICAgICAgcmV0dXJuIGNiMih1bndyYXBFcnIpO1xuICAgICAgICAgIHZhciBwa2dmaWxlID0gcGF0aC5qb2luKHBrZ2RpciwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgaXNGaWxlKHBrZ2ZpbGUsIGZ1bmN0aW9uKGVycjIsIGV4KSB7XG4gICAgICAgICAgICBpZiAoZXJyMilcbiAgICAgICAgICAgICAgcmV0dXJuIGNiMihlcnIyKTtcbiAgICAgICAgICAgIGlmICghZXgpXG4gICAgICAgICAgICAgIHJldHVybiBsb2FkQXNGaWxlKHBhdGguam9pbih4MiwgXCJpbmRleFwiKSwgZnBrZywgY2IyKTtcbiAgICAgICAgICAgIHJlYWRQYWNrYWdlKHJlYWRGaWxlLCBwa2dmaWxlLCBmdW5jdGlvbihlcnIzLCBwa2dQYXJhbSkge1xuICAgICAgICAgICAgICBpZiAoZXJyMylcbiAgICAgICAgICAgICAgICByZXR1cm4gY2IyKGVycjMpO1xuICAgICAgICAgICAgICB2YXIgcGtnID0gcGtnUGFyYW07XG4gICAgICAgICAgICAgIGlmIChwa2cgJiYgb3B0cy5wYWNrYWdlRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgcGtnID0gb3B0cy5wYWNrYWdlRmlsdGVyKHBrZywgcGtnZmlsZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHBrZyAmJiBwa2cubWFpbikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGtnLm1haW4gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBtYWluRXJyb3IgPSBuZXcgVHlwZUVycm9yKFwicGFja2FnZSBcXHUyMDFDXCIgKyBwa2cubmFtZSArIFwiXFx1MjAxRCBgbWFpbmAgbXVzdCBiZSBhIHN0cmluZ1wiKTtcbiAgICAgICAgICAgICAgICAgIG1haW5FcnJvci5jb2RlID0gXCJJTlZBTElEX1BBQ0tBR0VfTUFJTlwiO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNiMihtYWluRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGtnLm1haW4gPT09IFwiLlwiIHx8IHBrZy5tYWluID09PSBcIi4vXCIpIHtcbiAgICAgICAgICAgICAgICAgIHBrZy5tYWluID0gXCJpbmRleFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2FkQXNGaWxlKHBhdGgucmVzb2x2ZSh4MiwgcGtnLm1haW4pLCBwa2csIGZ1bmN0aW9uKGVycjQsIG0sIHBrZzIpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChlcnI0KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IyKGVycjQpO1xuICAgICAgICAgICAgICAgICAgaWYgKG0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYjIobnVsbCwgbSwgcGtnMik7XG4gICAgICAgICAgICAgICAgICBpZiAoIXBrZzIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkQXNGaWxlKHBhdGguam9pbih4MiwgXCJpbmRleFwiKSwgcGtnMiwgY2IyKTtcbiAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSBwYXRoLnJlc29sdmUoeDIsIHBrZzIubWFpbik7XG4gICAgICAgICAgICAgICAgICBsb2FkQXNEaXJlY3RvcnkoZGlyLCBwa2cyLCBmdW5jdGlvbihlcnI1LCBuLCBwa2czKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnI1KVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYjIoZXJyNSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuKVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYjIobnVsbCwgbiwgcGtnMyk7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRBc0ZpbGUocGF0aC5qb2luKHgyLCBcImluZGV4XCIpLCBwa2czLCBjYjIpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxvYWRBc0ZpbGUocGF0aC5qb2luKHgyLCBcIi9pbmRleFwiKSwgcGtnLCBjYjIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcHJvY2Vzc0RpcnMoY2IyLCBkaXJzKSB7XG4gICAgICAgIGlmIChkaXJzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICByZXR1cm4gY2IyKG51bGwsIHZvaWQgMCk7XG4gICAgICAgIHZhciBkaXIgPSBkaXJzWzBdO1xuICAgICAgICBpc0RpcmVjdG9yeShwYXRoLmRpcm5hbWUoZGlyKSwgaXNkaXIpO1xuICAgICAgICBmdW5jdGlvbiBpc2RpcihlcnIyLCBpc2RpcjIpIHtcbiAgICAgICAgICBpZiAoZXJyMilcbiAgICAgICAgICAgIHJldHVybiBjYjIoZXJyMik7XG4gICAgICAgICAgaWYgKCFpc2RpcjIpXG4gICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0RpcnMoY2IyLCBkaXJzLnNsaWNlKDEpKTtcbiAgICAgICAgICBsb2FkQXNGaWxlKGRpciwgb3B0cy5wYWNrYWdlLCBvbmZpbGUyKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvbmZpbGUyKGVycjIsIG0sIHBrZykge1xuICAgICAgICAgIGlmIChlcnIyKVxuICAgICAgICAgICAgcmV0dXJuIGNiMihlcnIyKTtcbiAgICAgICAgICBpZiAobSlcbiAgICAgICAgICAgIHJldHVybiBjYjIobnVsbCwgbSwgcGtnKTtcbiAgICAgICAgICBsb2FkQXNEaXJlY3RvcnkoZGlyLCBvcHRzLnBhY2thZ2UsIG9uZGlyKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvbmRpcihlcnIyLCBuLCBwa2cpIHtcbiAgICAgICAgICBpZiAoZXJyMilcbiAgICAgICAgICAgIHJldHVybiBjYjIoZXJyMik7XG4gICAgICAgICAgaWYgKG4pXG4gICAgICAgICAgICByZXR1cm4gY2IyKG51bGwsIG4sIHBrZyk7XG4gICAgICAgICAgcHJvY2Vzc0RpcnMoY2IyLCBkaXJzLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gbG9hZE5vZGVNb2R1bGVzKHgyLCBzdGFydCwgY2IyKSB7XG4gICAgICAgIHZhciB0aHVuayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBnZXRQYWNrYWdlQ2FuZGlkYXRlcyh4Miwgc3RhcnQsIG9wdHMpO1xuICAgICAgICB9O1xuICAgICAgICBwcm9jZXNzRGlycyhjYjIsIHBhY2thZ2VJdGVyYXRvciA/IHBhY2thZ2VJdGVyYXRvcih4Miwgc3RhcnQsIHRodW5rLCBvcHRzKSA6IHRodW5rKCkpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29yZTMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Jlc29sdmUvbGliL2NvcmUuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgYXNzZXJ0OiB0cnVlLFxuICAgICAgXCJub2RlOmFzc2VydFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBcImFzc2VydC9zdHJpY3RcIjogXCI+PSAxNVwiLFxuICAgICAgXCJub2RlOmFzc2VydC9zdHJpY3RcIjogXCI+PSAxNlwiLFxuICAgICAgYXN5bmNfaG9va3M6IFwiPj0gOFwiLFxuICAgICAgXCJub2RlOmFzeW5jX2hvb2tzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGJ1ZmZlcl9pZWVlNzU0OiBcIj49IDAuNSAmJiA8IDAuOS43XCIsXG4gICAgICBidWZmZXI6IHRydWUsXG4gICAgICBcIm5vZGU6YnVmZmVyXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGNoaWxkX3Byb2Nlc3M6IHRydWUsXG4gICAgICBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBjbHVzdGVyOiBcIj49IDAuNVwiLFxuICAgICAgXCJub2RlOmNsdXN0ZXJcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgY29uc29sZTogdHJ1ZSxcbiAgICAgIFwibm9kZTpjb25zb2xlXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGNvbnN0YW50czogdHJ1ZSxcbiAgICAgIFwibm9kZTpjb25zdGFudHNcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgY3J5cHRvOiB0cnVlLFxuICAgICAgXCJub2RlOmNyeXB0b1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfZGVidWdfYWdlbnQ6IFwiPj0gMSAmJiA8IDhcIixcbiAgICAgIF9kZWJ1Z2dlcjogXCI8IDhcIixcbiAgICAgIGRncmFtOiB0cnVlLFxuICAgICAgXCJub2RlOmRncmFtXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGRpYWdub3N0aWNzX2NoYW5uZWw6IFtcIj49IDE0LjE3ICYmIDwgMTVcIiwgXCI+PSAxNS4xXCJdLFxuICAgICAgXCJub2RlOmRpYWdub3N0aWNzX2NoYW5uZWxcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgZG5zOiB0cnVlLFxuICAgICAgXCJub2RlOmRuc1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBcImRucy9wcm9taXNlc1wiOiBcIj49IDE1XCIsXG4gICAgICBcIm5vZGU6ZG5zL3Byb21pc2VzXCI6IFwiPj0gMTZcIixcbiAgICAgIGRvbWFpbjogXCI+PSAwLjcuMTJcIixcbiAgICAgIFwibm9kZTpkb21haW5cIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgZXZlbnRzOiB0cnVlLFxuICAgICAgXCJub2RlOmV2ZW50c1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBmcmVlbGlzdDogXCI8IDZcIixcbiAgICAgIGZzOiB0cnVlLFxuICAgICAgXCJub2RlOmZzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwiZnMvcHJvbWlzZXNcIjogW1wiPj0gMTAgJiYgPCAxMC4xXCIsIFwiPj0gMTRcIl0sXG4gICAgICBcIm5vZGU6ZnMvcHJvbWlzZXNcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX2h0dHBfYWdlbnQ6IFwiPj0gMC4xMS4xXCIsXG4gICAgICBcIm5vZGU6X2h0dHBfYWdlbnRcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX2h0dHBfY2xpZW50OiBcIj49IDAuMTEuMVwiLFxuICAgICAgXCJub2RlOl9odHRwX2NsaWVudFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfaHR0cF9jb21tb246IFwiPj0gMC4xMS4xXCIsXG4gICAgICBcIm5vZGU6X2h0dHBfY29tbW9uXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF9odHRwX2luY29taW5nOiBcIj49IDAuMTEuMVwiLFxuICAgICAgXCJub2RlOl9odHRwX2luY29taW5nXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF9odHRwX291dGdvaW5nOiBcIj49IDAuMTEuMVwiLFxuICAgICAgXCJub2RlOl9odHRwX291dGdvaW5nXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF9odHRwX3NlcnZlcjogXCI+PSAwLjExLjFcIixcbiAgICAgIFwibm9kZTpfaHR0cF9zZXJ2ZXJcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgaHR0cDogdHJ1ZSxcbiAgICAgIFwibm9kZTpodHRwXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGh0dHAyOiBcIj49IDguOFwiLFxuICAgICAgXCJub2RlOmh0dHAyXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGh0dHBzOiB0cnVlLFxuICAgICAgXCJub2RlOmh0dHBzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIGluc3BlY3RvcjogXCI+PSA4XCIsXG4gICAgICBcIm5vZGU6aW5zcGVjdG9yXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIF9saW5rbGlzdDogXCI8IDhcIixcbiAgICAgIG1vZHVsZTogdHJ1ZSxcbiAgICAgIFwibm9kZTptb2R1bGVcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgbmV0OiB0cnVlLFxuICAgICAgXCJub2RlOm5ldFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBcIm5vZGUtaW5zcGVjdC9saWIvX2luc3BlY3RcIjogXCI+PSA3LjYgJiYgPCAxMlwiLFxuICAgICAgXCJub2RlLWluc3BlY3QvbGliL2ludGVybmFsL2luc3BlY3RfY2xpZW50XCI6IFwiPj0gNy42ICYmIDwgMTJcIixcbiAgICAgIFwibm9kZS1pbnNwZWN0L2xpYi9pbnRlcm5hbC9pbnNwZWN0X3JlcGxcIjogXCI+PSA3LjYgJiYgPCAxMlwiLFxuICAgICAgb3M6IHRydWUsXG4gICAgICBcIm5vZGU6b3NcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgcGF0aDogdHJ1ZSxcbiAgICAgIFwibm9kZTpwYXRoXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwicGF0aC9wb3NpeFwiOiBcIj49IDE1LjNcIixcbiAgICAgIFwibm9kZTpwYXRoL3Bvc2l4XCI6IFwiPj0gMTZcIixcbiAgICAgIFwicGF0aC93aW4zMlwiOiBcIj49IDE1LjNcIixcbiAgICAgIFwibm9kZTpwYXRoL3dpbjMyXCI6IFwiPj0gMTZcIixcbiAgICAgIHBlcmZfaG9va3M6IFwiPj0gOC41XCIsXG4gICAgICBcIm5vZGU6cGVyZl9ob29rc1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBwcm9jZXNzOiBcIj49IDFcIixcbiAgICAgIFwibm9kZTpwcm9jZXNzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHB1bnljb2RlOiBcIj49IDAuNVwiLFxuICAgICAgXCJub2RlOnB1bnljb2RlXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHF1ZXJ5c3RyaW5nOiB0cnVlLFxuICAgICAgXCJub2RlOnF1ZXJ5c3RyaW5nXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHJlYWRsaW5lOiB0cnVlLFxuICAgICAgXCJub2RlOnJlYWRsaW5lXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwicmVhZGxpbmUvcHJvbWlzZXNcIjogXCI+PSAxN1wiLFxuICAgICAgXCJub2RlOnJlYWRsaW5lL3Byb21pc2VzXCI6IFwiPj0gMTdcIixcbiAgICAgIHJlcGw6IHRydWUsXG4gICAgICBcIm5vZGU6cmVwbFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBzbWFsbG9jOiBcIj49IDAuMTEuNSAmJiA8IDNcIixcbiAgICAgIF9zdHJlYW1fZHVwbGV4OiBcIj49IDAuOS40XCIsXG4gICAgICBcIm5vZGU6X3N0cmVhbV9kdXBsZXhcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX3N0cmVhbV90cmFuc2Zvcm06IFwiPj0gMC45LjRcIixcbiAgICAgIFwibm9kZTpfc3RyZWFtX3RyYW5zZm9ybVwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfc3RyZWFtX3dyYXA6IFwiPj0gMS40LjFcIixcbiAgICAgIFwibm9kZTpfc3RyZWFtX3dyYXBcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX3N0cmVhbV9wYXNzdGhyb3VnaDogXCI+PSAwLjkuNFwiLFxuICAgICAgXCJub2RlOl9zdHJlYW1fcGFzc3Rocm91Z2hcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX3N0cmVhbV9yZWFkYWJsZTogXCI+PSAwLjkuNFwiLFxuICAgICAgXCJub2RlOl9zdHJlYW1fcmVhZGFibGVcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgX3N0cmVhbV93cml0YWJsZTogXCI+PSAwLjkuNFwiLFxuICAgICAgXCJub2RlOl9zdHJlYW1fd3JpdGFibGVcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgXCJub2RlOnN0cmVhbVwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBcInN0cmVhbS9jb25zdW1lcnNcIjogXCI+PSAxNi43XCIsXG4gICAgICBcIm5vZGU6c3RyZWFtL2NvbnN1bWVyc1wiOiBcIj49IDE2LjdcIixcbiAgICAgIFwic3RyZWFtL3Byb21pc2VzXCI6IFwiPj0gMTVcIixcbiAgICAgIFwibm9kZTpzdHJlYW0vcHJvbWlzZXNcIjogXCI+PSAxNlwiLFxuICAgICAgXCJzdHJlYW0vd2ViXCI6IFwiPj0gMTYuNVwiLFxuICAgICAgXCJub2RlOnN0cmVhbS93ZWJcIjogXCI+PSAxNi41XCIsXG4gICAgICBzdHJpbmdfZGVjb2RlcjogdHJ1ZSxcbiAgICAgIFwibm9kZTpzdHJpbmdfZGVjb2RlclwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBzeXM6IFtcIj49IDAuNCAmJiA8IDAuN1wiLCBcIj49IDAuOFwiXSxcbiAgICAgIFwibm9kZTpzeXNcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgdGltZXJzOiB0cnVlLFxuICAgICAgXCJub2RlOnRpbWVyc1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBcInRpbWVycy9wcm9taXNlc1wiOiBcIj49IDE1XCIsXG4gICAgICBcIm5vZGU6dGltZXJzL3Byb21pc2VzXCI6IFwiPj0gMTZcIixcbiAgICAgIF90bHNfY29tbW9uOiBcIj49IDAuMTEuMTNcIixcbiAgICAgIFwibm9kZTpfdGxzX2NvbW1vblwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICBfdGxzX2xlZ2FjeTogXCI+PSAwLjExLjMgJiYgPCAxMFwiLFxuICAgICAgX3Rsc193cmFwOiBcIj49IDAuMTEuM1wiLFxuICAgICAgXCJub2RlOl90bHNfd3JhcFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICB0bHM6IHRydWUsXG4gICAgICBcIm5vZGU6dGxzXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHRyYWNlX2V2ZW50czogXCI+PSAxMFwiLFxuICAgICAgXCJub2RlOnRyYWNlX2V2ZW50c1wiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICB0dHk6IHRydWUsXG4gICAgICBcIm5vZGU6dHR5XCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIHVybDogdHJ1ZSxcbiAgICAgIFwibm9kZTp1cmxcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgdXRpbDogdHJ1ZSxcbiAgICAgIFwibm9kZTp1dGlsXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXSxcbiAgICAgIFwidXRpbC90eXBlc1wiOiBcIj49IDE1LjNcIixcbiAgICAgIFwibm9kZTp1dGlsL3R5cGVzXCI6IFwiPj0gMTZcIixcbiAgICAgIFwidjgvdG9vbHMvYXJndW1lbnRzXCI6IFwiPj0gMTAgJiYgPCAxMlwiLFxuICAgICAgXCJ2OC90b29scy9jb2RlbWFwXCI6IFtcIj49IDQuNCAmJiA8IDVcIiwgXCI+PSA1LjIgJiYgPCAxMlwiXSxcbiAgICAgIFwidjgvdG9vbHMvY29uc2FycmF5XCI6IFtcIj49IDQuNCAmJiA8IDVcIiwgXCI+PSA1LjIgJiYgPCAxMlwiXSxcbiAgICAgIFwidjgvdG9vbHMvY3N2cGFyc2VyXCI6IFtcIj49IDQuNCAmJiA8IDVcIiwgXCI+PSA1LjIgJiYgPCAxMlwiXSxcbiAgICAgIFwidjgvdG9vbHMvbG9ncmVhZGVyXCI6IFtcIj49IDQuNCAmJiA8IDVcIiwgXCI+PSA1LjIgJiYgPCAxMlwiXSxcbiAgICAgIFwidjgvdG9vbHMvcHJvZmlsZV92aWV3XCI6IFtcIj49IDQuNCAmJiA8IDVcIiwgXCI+PSA1LjIgJiYgPCAxMlwiXSxcbiAgICAgIFwidjgvdG9vbHMvc3BsYXl0cmVlXCI6IFtcIj49IDQuNCAmJiA8IDVcIiwgXCI+PSA1LjIgJiYgPCAxMlwiXSxcbiAgICAgIHY4OiBcIj49IDFcIixcbiAgICAgIFwibm9kZTp2OFwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICB2bTogdHJ1ZSxcbiAgICAgIFwibm9kZTp2bVwiOiBbXCI+PSAxNC4xOCAmJiA8IDE1XCIsIFwiPj0gMTZcIl0sXG4gICAgICB3YXNpOiBcIj49IDEzLjQgJiYgPCAxMy41XCIsXG4gICAgICB3b3JrZXJfdGhyZWFkczogXCI+PSAxMS43XCIsXG4gICAgICBcIm5vZGU6d29ya2VyX3RocmVhZHNcIjogW1wiPj0gMTQuMTggJiYgPCAxNVwiLCBcIj49IDE2XCJdLFxuICAgICAgemxpYjogXCI+PSAwLjVcIixcbiAgICAgIFwibm9kZTp6bGliXCI6IFtcIj49IDE0LjE4ICYmIDwgMTVcIiwgXCI+PSAxNlwiXVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29yZTQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL3Jlc29sdmUvbGliL2NvcmUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBjdXJyZW50ID0gcHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLm5vZGUgJiYgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLnNwbGl0KFwiLlwiKSB8fCBbXTtcbiAgICBmdW5jdGlvbiBzcGVjaWZpZXJJbmNsdWRlZChzcGVjaWZpZXIpIHtcbiAgICAgIHZhciBwYXJ0cyA9IHNwZWNpZmllci5zcGxpdChcIiBcIik7XG4gICAgICB2YXIgb3AgPSBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbMF0gOiBcIj1cIjtcbiAgICAgIHZhciB2ZXJzaW9uUGFydHMgPSAocGFydHMubGVuZ3RoID4gMSA/IHBhcnRzWzFdIDogcGFydHNbMF0pLnNwbGl0KFwiLlwiKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKSB7XG4gICAgICAgIHZhciBjdXIgPSBwYXJzZUludChjdXJyZW50W2ldIHx8IDAsIDEwKTtcbiAgICAgICAgdmFyIHZlciA9IHBhcnNlSW50KHZlcnNpb25QYXJ0c1tpXSB8fCAwLCAxMCk7XG4gICAgICAgIGlmIChjdXIgPT09IHZlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcCA9PT0gXCI8XCIpIHtcbiAgICAgICAgICByZXR1cm4gY3VyIDwgdmVyO1xuICAgICAgICB9IGVsc2UgaWYgKG9wID09PSBcIj49XCIpIHtcbiAgICAgICAgICByZXR1cm4gY3VyID49IHZlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3AgPT09IFwiPj1cIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWF0Y2hlc1JhbmdlKHJhbmdlKSB7XG4gICAgICB2YXIgc3BlY2lmaWVycyA9IHJhbmdlLnNwbGl0KC8gPyYmID8vKTtcbiAgICAgIGlmIChzcGVjaWZpZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwZWNpZmllcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzcGVjaWZpZXJJbmNsdWRlZChzcGVjaWZpZXJzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZlcnNpb25JbmNsdWRlZChzcGVjaWZpZXJWYWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiBzcGVjaWZpZXJWYWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgcmV0dXJuIHNwZWNpZmllclZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHNwZWNpZmllclZhbHVlICYmIHR5cGVvZiBzcGVjaWZpZXJWYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwZWNpZmllclZhbHVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgaWYgKG1hdGNoZXNSYW5nZShzcGVjaWZpZXJWYWx1ZVtpXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2hlc1JhbmdlKHNwZWNpZmllclZhbHVlKTtcbiAgICB9XG4gICAgdmFyIGRhdGEgPSByZXF1aXJlX2NvcmUzKCk7XG4gICAgdmFyIGNvcmUyID0ge307XG4gICAgZm9yIChtb2QgaW4gZGF0YSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBtb2QpKSB7XG4gICAgICAgIGNvcmUyW21vZF0gPSB2ZXJzaW9uSW5jbHVkZWQoZGF0YVttb2RdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1vZDtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBjb3JlMjtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pc19jb3JlID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9yZXNvbHZlL2xpYi9pcy1jb3JlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgaXNDb3JlTW9kdWxlID0gcmVxdWlyZV9pc19jb3JlX21vZHVsZSgpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ29yZSh4KSB7XG4gICAgICByZXR1cm4gaXNDb3JlTW9kdWxlKHgpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc3luYyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcmVzb2x2ZS9saWIvc3luYy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGlzQ29yZSA9IHJlcXVpcmVfaXNfY29yZV9tb2R1bGUoKTtcbiAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICB2YXIgZ2V0SG9tZWRpciA9IHJlcXVpcmVfaG9tZWRpcigpO1xuICAgIHZhciBjYWxsZXIgPSByZXF1aXJlX2NhbGxlcigpO1xuICAgIHZhciBub2RlTW9kdWxlc1BhdGhzID0gcmVxdWlyZV9ub2RlX21vZHVsZXNfcGF0aHMoKTtcbiAgICB2YXIgbm9ybWFsaXplT3B0aW9ucyA9IHJlcXVpcmVfbm9ybWFsaXplX29wdGlvbnMoKTtcbiAgICB2YXIgcmVhbHBhdGhGUyA9IGZzLnJlYWxwYXRoU3luYyAmJiB0eXBlb2YgZnMucmVhbHBhdGhTeW5jLm5hdGl2ZSA9PT0gXCJmdW5jdGlvblwiID8gZnMucmVhbHBhdGhTeW5jLm5hdGl2ZSA6IGZzLnJlYWxwYXRoU3luYztcbiAgICB2YXIgaG9tZWRpciA9IGdldEhvbWVkaXIoKTtcbiAgICB2YXIgZGVmYXVsdFBhdGhzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW3BhdGguam9pbihob21lZGlyLCBcIi5ub2RlX21vZHVsZXNcIiksIHBhdGguam9pbihob21lZGlyLCBcIi5ub2RlX2xpYnJhcmllc1wiKV07XG4gICAgfTtcbiAgICB2YXIgZGVmYXVsdElzRmlsZSA9IGZ1bmN0aW9uIGlzRmlsZShmaWxlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgc3RhdCA9IGZzLnN0YXRTeW5jKGZpbGUsIHtcbiAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlICYmIChlLmNvZGUgPT09IFwiRU5PRU5UXCIgfHwgZS5jb2RlID09PSBcIkVOT1RESVJcIikpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEhc3RhdCAmJiAoc3RhdC5pc0ZpbGUoKSB8fCBzdGF0LmlzRklGTygpKTtcbiAgICB9O1xuICAgIHZhciBkZWZhdWx0SXNEaXIgPSBmdW5jdGlvbiBpc0RpcmVjdG9yeShkaXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBzdGF0ID0gZnMuc3RhdFN5bmMoZGlyLCB7XG4gICAgICAgICAgdGhyb3dJZk5vRW50cnk6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSAmJiAoZS5jb2RlID09PSBcIkVOT0VOVFwiIHx8IGUuY29kZSA9PT0gXCJFTk9URElSXCIpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhIXN0YXQgJiYgc3RhdC5pc0RpcmVjdG9yeSgpO1xuICAgIH07XG4gICAgdmFyIGRlZmF1bHRSZWFscGF0aFN5bmMgPSBmdW5jdGlvbiByZWFscGF0aFN5bmMoeCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHJlYWxwYXRoRlMoeCk7XG4gICAgICB9IGNhdGNoIChyZWFscGF0aEVycikge1xuICAgICAgICBpZiAocmVhbHBhdGhFcnIuY29kZSAhPT0gXCJFTk9FTlRcIikge1xuICAgICAgICAgIHRocm93IHJlYWxwYXRoRXJyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geDtcbiAgICB9O1xuICAgIHZhciBtYXliZVJlYWxwYXRoU3luYyA9IGZ1bmN0aW9uIG1heWJlUmVhbHBhdGhTeW5jMihyZWFscGF0aFN5bmMsIHgsIG9wdHMpIHtcbiAgICAgIGlmIChvcHRzICYmIG9wdHMucHJlc2VydmVTeW1saW5rcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHJlYWxwYXRoU3luYyh4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4O1xuICAgIH07XG4gICAgdmFyIGRlZmF1bHRSZWFkUGFja2FnZVN5bmMgPSBmdW5jdGlvbiBkZWZhdWx0UmVhZFBhY2thZ2VTeW5jMihyZWFkRmlsZVN5bmMsIHBrZ2ZpbGUpIHtcbiAgICAgIHZhciBib2R5ID0gcmVhZEZpbGVTeW5jKHBrZ2ZpbGUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHBrZyA9IEpTT04ucGFyc2UoYm9keSk7XG4gICAgICAgIHJldHVybiBwa2c7XG4gICAgICB9IGNhdGNoIChqc29uRXJyKSB7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgZ2V0UGFja2FnZUNhbmRpZGF0ZXMgPSBmdW5jdGlvbiBnZXRQYWNrYWdlQ2FuZGlkYXRlczIoeCwgc3RhcnQsIG9wdHMpIHtcbiAgICAgIHZhciBkaXJzID0gbm9kZU1vZHVsZXNQYXRocyhzdGFydCwgb3B0cywgeCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGlyc1tpXSA9IHBhdGguam9pbihkaXJzW2ldLCB4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkaXJzO1xuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24gcmVzb2x2ZVN5bmMoeCwgb3B0aW9ucykge1xuICAgICAgaWYgKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuXCIpO1xuICAgICAgfVxuICAgICAgdmFyIG9wdHMgPSBub3JtYWxpemVPcHRpb25zKHgsIG9wdGlvbnMpO1xuICAgICAgdmFyIGlzRmlsZSA9IG9wdHMuaXNGaWxlIHx8IGRlZmF1bHRJc0ZpbGU7XG4gICAgICB2YXIgcmVhZEZpbGVTeW5jID0gb3B0cy5yZWFkRmlsZVN5bmMgfHwgZnMucmVhZEZpbGVTeW5jO1xuICAgICAgdmFyIGlzRGlyZWN0b3J5ID0gb3B0cy5pc0RpcmVjdG9yeSB8fCBkZWZhdWx0SXNEaXI7XG4gICAgICB2YXIgcmVhbHBhdGhTeW5jID0gb3B0cy5yZWFscGF0aFN5bmMgfHwgZGVmYXVsdFJlYWxwYXRoU3luYztcbiAgICAgIHZhciByZWFkUGFja2FnZVN5bmMgPSBvcHRzLnJlYWRQYWNrYWdlU3luYyB8fCBkZWZhdWx0UmVhZFBhY2thZ2VTeW5jO1xuICAgICAgaWYgKG9wdHMucmVhZEZpbGVTeW5jICYmIG9wdHMucmVhZFBhY2thZ2VTeW5jKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJgcmVhZEZpbGVTeW5jYCBhbmQgYHJlYWRQYWNrYWdlU3luY2AgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cIik7XG4gICAgICB9XG4gICAgICB2YXIgcGFja2FnZUl0ZXJhdG9yID0gb3B0cy5wYWNrYWdlSXRlcmF0b3I7XG4gICAgICB2YXIgZXh0ZW5zaW9ucyA9IG9wdHMuZXh0ZW5zaW9ucyB8fCBbXCIuanNcIl07XG4gICAgICB2YXIgaW5jbHVkZUNvcmVNb2R1bGVzID0gb3B0cy5pbmNsdWRlQ29yZU1vZHVsZXMgIT09IGZhbHNlO1xuICAgICAgdmFyIGJhc2VkaXIgPSBvcHRzLmJhc2VkaXIgfHwgcGF0aC5kaXJuYW1lKGNhbGxlcigpKTtcbiAgICAgIHZhciBwYXJlbnQgPSBvcHRzLmZpbGVuYW1lIHx8IGJhc2VkaXI7XG4gICAgICBvcHRzLnBhdGhzID0gb3B0cy5wYXRocyB8fCBkZWZhdWx0UGF0aHMoKTtcbiAgICAgIHZhciBhYnNvbHV0ZVN0YXJ0ID0gbWF5YmVSZWFscGF0aFN5bmMocmVhbHBhdGhTeW5jLCBwYXRoLnJlc29sdmUoYmFzZWRpciksIG9wdHMpO1xuICAgICAgaWYgKC9eKD86XFwuXFwuPyg/OlxcL3wkKXxcXC98KFtBLVphLXpdOik/Wy9cXFxcXSkvLnRlc3QoeCkpIHtcbiAgICAgICAgdmFyIHJlcyA9IHBhdGgucmVzb2x2ZShhYnNvbHV0ZVN0YXJ0LCB4KTtcbiAgICAgICAgaWYgKHggPT09IFwiLlwiIHx8IHggPT09IFwiLi5cIiB8fCB4LnNsaWNlKC0xKSA9PT0gXCIvXCIpXG4gICAgICAgICAgcmVzICs9IFwiL1wiO1xuICAgICAgICB2YXIgbSA9IGxvYWRBc0ZpbGVTeW5jKHJlcykgfHwgbG9hZEFzRGlyZWN0b3J5U3luYyhyZXMpO1xuICAgICAgICBpZiAobSlcbiAgICAgICAgICByZXR1cm4gbWF5YmVSZWFscGF0aFN5bmMocmVhbHBhdGhTeW5jLCBtLCBvcHRzKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZUNvcmVNb2R1bGVzICYmIGlzQ29yZSh4KSkge1xuICAgICAgICByZXR1cm4geDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBuID0gbG9hZE5vZGVNb2R1bGVzU3luYyh4LCBhYnNvbHV0ZVN0YXJ0KTtcbiAgICAgICAgaWYgKG4pXG4gICAgICAgICAgcmV0dXJuIG1heWJlUmVhbHBhdGhTeW5jKHJlYWxwYXRoU3luYywgbiwgb3B0cyk7XG4gICAgICB9XG4gICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHggKyBcIicgZnJvbSAnXCIgKyBwYXJlbnQgKyBcIidcIik7XG4gICAgICBlcnIuY29kZSA9IFwiTU9EVUxFX05PVF9GT1VORFwiO1xuICAgICAgdGhyb3cgZXJyO1xuICAgICAgZnVuY3Rpb24gbG9hZEFzRmlsZVN5bmMoeDIpIHtcbiAgICAgICAgdmFyIHBrZyA9IGxvYWRwa2cocGF0aC5kaXJuYW1lKHgyKSk7XG4gICAgICAgIGlmIChwa2cgJiYgcGtnLmRpciAmJiBwa2cucGtnICYmIG9wdHMucGF0aEZpbHRlcikge1xuICAgICAgICAgIHZhciByZmlsZSA9IHBhdGgucmVsYXRpdmUocGtnLmRpciwgeDIpO1xuICAgICAgICAgIHZhciByID0gb3B0cy5wYXRoRmlsdGVyKHBrZy5wa2csIHgyLCByZmlsZSk7XG4gICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgIHgyID0gcGF0aC5yZXNvbHZlKHBrZy5kaXIsIHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGaWxlKHgyKSkge1xuICAgICAgICAgIHJldHVybiB4MjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4dGVuc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZmlsZSA9IHgyICsgZXh0ZW5zaW9uc1tpXTtcbiAgICAgICAgICBpZiAoaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxvYWRwa2coZGlyKSB7XG4gICAgICAgIGlmIChkaXIgPT09IFwiXCIgfHwgZGlyID09PSBcIi9cIilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgJiYgL15cXHc6Wy9cXFxcXSokLy50ZXN0KGRpcikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKC9bL1xcXFxdbm9kZV9tb2R1bGVzWy9cXFxcXSokLy50ZXN0KGRpcikpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgcGtnZmlsZSA9IHBhdGguam9pbihtYXliZVJlYWxwYXRoU3luYyhyZWFscGF0aFN5bmMsIGRpciwgb3B0cyksIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICBpZiAoIWlzRmlsZShwa2dmaWxlKSkge1xuICAgICAgICAgIHJldHVybiBsb2FkcGtnKHBhdGguZGlybmFtZShkaXIpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGtnID0gcmVhZFBhY2thZ2VTeW5jKHJlYWRGaWxlU3luYywgcGtnZmlsZSk7XG4gICAgICAgIGlmIChwa2cgJiYgb3B0cy5wYWNrYWdlRmlsdGVyKSB7XG4gICAgICAgICAgcGtnID0gb3B0cy5wYWNrYWdlRmlsdGVyKHBrZywgZGlyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBrZyxcbiAgICAgICAgICBkaXJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxvYWRBc0RpcmVjdG9yeVN5bmMoeDIpIHtcbiAgICAgICAgdmFyIHBrZ2ZpbGUgPSBwYXRoLmpvaW4obWF5YmVSZWFscGF0aFN5bmMocmVhbHBhdGhTeW5jLCB4Miwgb3B0cyksIFwiL3BhY2thZ2UuanNvblwiKTtcbiAgICAgICAgaWYgKGlzRmlsZShwa2dmaWxlKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcGtnID0gcmVhZFBhY2thZ2VTeW5jKHJlYWRGaWxlU3luYywgcGtnZmlsZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGtnICYmIG9wdHMucGFja2FnZUZpbHRlcikge1xuICAgICAgICAgICAgcGtnID0gb3B0cy5wYWNrYWdlRmlsdGVyKHBrZywgeDIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGtnICYmIHBrZy5tYWluKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBrZy5tYWluICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgIHZhciBtYWluRXJyb3IgPSBuZXcgVHlwZUVycm9yKFwicGFja2FnZSBcXHUyMDFDXCIgKyBwa2cubmFtZSArIFwiXFx1MjAxRCBgbWFpbmAgbXVzdCBiZSBhIHN0cmluZ1wiKTtcbiAgICAgICAgICAgICAgbWFpbkVycm9yLmNvZGUgPSBcIklOVkFMSURfUEFDS0FHRV9NQUlOXCI7XG4gICAgICAgICAgICAgIHRocm93IG1haW5FcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwa2cubWFpbiA9PT0gXCIuXCIgfHwgcGtnLm1haW4gPT09IFwiLi9cIikge1xuICAgICAgICAgICAgICBwa2cubWFpbiA9IFwiaW5kZXhcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBtMiA9IGxvYWRBc0ZpbGVTeW5jKHBhdGgucmVzb2x2ZSh4MiwgcGtnLm1haW4pKTtcbiAgICAgICAgICAgICAgaWYgKG0yKVxuICAgICAgICAgICAgICAgIHJldHVybiBtMjtcbiAgICAgICAgICAgICAgdmFyIG4yID0gbG9hZEFzRGlyZWN0b3J5U3luYyhwYXRoLnJlc29sdmUoeDIsIHBrZy5tYWluKSk7XG4gICAgICAgICAgICAgIGlmIChuMilcbiAgICAgICAgICAgICAgICByZXR1cm4gbjI7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2FkQXNGaWxlU3luYyhwYXRoLmpvaW4oeDIsIFwiL2luZGV4XCIpKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxvYWROb2RlTW9kdWxlc1N5bmMoeDIsIHN0YXJ0KSB7XG4gICAgICAgIHZhciB0aHVuayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBnZXRQYWNrYWdlQ2FuZGlkYXRlcyh4Miwgc3RhcnQsIG9wdHMpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZGlycyA9IHBhY2thZ2VJdGVyYXRvciA/IHBhY2thZ2VJdGVyYXRvcih4Miwgc3RhcnQsIHRodW5rLCBvcHRzKSA6IHRodW5rKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBkaXIgPSBkaXJzW2ldO1xuICAgICAgICAgIGlmIChpc0RpcmVjdG9yeShwYXRoLmRpcm5hbWUoZGlyKSkpIHtcbiAgICAgICAgICAgIHZhciBtMiA9IGxvYWRBc0ZpbGVTeW5jKGRpcik7XG4gICAgICAgICAgICBpZiAobTIpXG4gICAgICAgICAgICAgIHJldHVybiBtMjtcbiAgICAgICAgICAgIHZhciBuMiA9IGxvYWRBc0RpcmVjdG9yeVN5bmMoZGlyKTtcbiAgICAgICAgICAgIGlmIChuMilcbiAgICAgICAgICAgICAgcmV0dXJuIG4yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcmVzb2x2ZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcmVzb2x2ZS9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgdmFyIGFzeW5jID0gcmVxdWlyZV9hc3luYygpO1xuICAgIGFzeW5jLmNvcmUgPSByZXF1aXJlX2NvcmU0KCk7XG4gICAgYXN5bmMuaXNDb3JlID0gcmVxdWlyZV9pc19jb3JlKCk7XG4gICAgYXN5bmMuc3luYyA9IHJlcXVpcmVfc3luYygpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGFzeW5jO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3Jlc29sdmUyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9jb21tb24vcmVzb2x2ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIHJlc29sdmVcbiAgICB9ID0gcmVxdWlyZTtcbiAgICBpZiAocmVzb2x2ZS5sZW5ndGggPT09IDEgfHwgcHJvY2Vzcy5lbnYuUFJFVFRJRVJfRkFMTEJBQ0tfUkVTT0xWRSkge1xuICAgICAgcmVzb2x2ZSA9IChpZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgYmFzZWRpcjtcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5wYXRocyAmJiBvcHRpb25zLnBhdGhzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGJhc2VkaXIgPSBvcHRpb25zLnBhdGhzWzBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXF1aXJlX3Jlc29sdmUoKS5zeW5jKGlkLCB7XG4gICAgICAgICAgYmFzZWRpclxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHJlc29sdmU7XG4gIH1cbn0pO1xuZnVuY3Rpb24gbWltaWNGdW5jdGlvbih0bywgZnJvbSwge1xuICBpZ25vcmVOb25Db25maWd1cmFibGUgPSBmYWxzZVxufSA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBuYW1lXG4gIH0gPSB0bztcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBSZWZsZWN0Lm93bktleXMoZnJvbSkpIHtcbiAgICBjb3B5UHJvcGVydHkodG8sIGZyb20sIHByb3BlcnR5LCBpZ25vcmVOb25Db25maWd1cmFibGUpO1xuICB9XG4gIGNoYW5nZVByb3RvdHlwZSh0bywgZnJvbSk7XG4gIGNoYW5nZVRvU3RyaW5nKHRvLCBmcm9tLCBuYW1lKTtcbiAgcmV0dXJuIHRvO1xufVxudmFyIGNvcHlQcm9wZXJ0eTtcbnZhciBjYW5Db3B5UHJvcGVydHk7XG52YXIgY2hhbmdlUHJvdG90eXBlO1xudmFyIHdyYXBwZWRUb1N0cmluZztcbnZhciB0b1N0cmluZ0Rlc2NyaXB0b3I7XG52YXIgdG9TdHJpbmdOYW1lO1xudmFyIGNoYW5nZVRvU3RyaW5nO1xudmFyIGluaXRfbWltaWNfZm4gPSBfX2VzbSh7XG4gIFwibm9kZV9tb2R1bGVzL21pbWljLWZuL2luZGV4LmpzXCIoKSB7XG4gICAgY29weVByb3BlcnR5ID0gKHRvLCBmcm9tLCBwcm9wZXJ0eSwgaWdub3JlTm9uQ29uZmlndXJhYmxlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHkgPT09IFwibGVuZ3RoXCIgfHwgcHJvcGVydHkgPT09IFwicHJvdG90eXBlXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnR5ID09PSBcImFyZ3VtZW50c1wiIHx8IHByb3BlcnR5ID09PSBcImNhbGxlclwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG8sIHByb3BlcnR5KTtcbiAgICAgIGNvbnN0IGZyb21EZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmcm9tLCBwcm9wZXJ0eSk7XG4gICAgICBpZiAoIWNhbkNvcHlQcm9wZXJ0eSh0b0Rlc2NyaXB0b3IsIGZyb21EZXNjcmlwdG9yKSAmJiBpZ25vcmVOb25Db25maWd1cmFibGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRvLCBwcm9wZXJ0eSwgZnJvbURlc2NyaXB0b3IpO1xuICAgIH07XG4gICAgY2FuQ29weVByb3BlcnR5ID0gZnVuY3Rpb24odG9EZXNjcmlwdG9yLCBmcm9tRGVzY3JpcHRvcikge1xuICAgICAgcmV0dXJuIHRvRGVzY3JpcHRvciA9PT0gdm9pZCAwIHx8IHRvRGVzY3JpcHRvci5jb25maWd1cmFibGUgfHwgdG9EZXNjcmlwdG9yLndyaXRhYmxlID09PSBmcm9tRGVzY3JpcHRvci53cml0YWJsZSAmJiB0b0Rlc2NyaXB0b3IuZW51bWVyYWJsZSA9PT0gZnJvbURlc2NyaXB0b3IuZW51bWVyYWJsZSAmJiB0b0Rlc2NyaXB0b3IuY29uZmlndXJhYmxlID09PSBmcm9tRGVzY3JpcHRvci5jb25maWd1cmFibGUgJiYgKHRvRGVzY3JpcHRvci53cml0YWJsZSB8fCB0b0Rlc2NyaXB0b3IudmFsdWUgPT09IGZyb21EZXNjcmlwdG9yLnZhbHVlKTtcbiAgICB9O1xuICAgIGNoYW5nZVByb3RvdHlwZSA9ICh0bywgZnJvbSkgPT4ge1xuICAgICAgY29uc3QgZnJvbVByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihmcm9tKTtcbiAgICAgIGlmIChmcm9tUHJvdG90eXBlID09PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodG8pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0bywgZnJvbVByb3RvdHlwZSk7XG4gICAgfTtcbiAgICB3cmFwcGVkVG9TdHJpbmcgPSAod2l0aE5hbWUsIGZyb21Cb2R5KSA9PiBgLyogV3JhcHBlZCAke3dpdGhOYW1lfSovXG4ke2Zyb21Cb2R5fWA7XG4gICAgdG9TdHJpbmdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihGdW5jdGlvbi5wcm90b3R5cGUsIFwidG9TdHJpbmdcIik7XG4gICAgdG9TdHJpbmdOYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsIFwibmFtZVwiKTtcbiAgICBjaGFuZ2VUb1N0cmluZyA9ICh0bywgZnJvbSwgbmFtZSkgPT4ge1xuICAgICAgY29uc3Qgd2l0aE5hbWUgPSBuYW1lID09PSBcIlwiID8gXCJcIiA6IGB3aXRoICR7bmFtZS50cmltKCl9KCkgYDtcbiAgICAgIGNvbnN0IG5ld1RvU3RyaW5nID0gd3JhcHBlZFRvU3RyaW5nLmJpbmQobnVsbCwgd2l0aE5hbWUsIGZyb20udG9TdHJpbmcoKSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3VG9TdHJpbmcsIFwibmFtZVwiLCB0b1N0cmluZ05hbWUpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRvLCBcInRvU3RyaW5nXCIsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG9TdHJpbmdEZXNjcmlwdG9yKSwge30sIHtcbiAgICAgICAgdmFsdWU6IG5ld1RvU3RyaW5nXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wX2RlZmVyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9wLWRlZmVyL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXQgPSB7fTtcbiAgICAgIHJldC5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICByZXQucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHJldC5yZWplY3QgPSByZWplY3Q7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9kaXN0ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9tYXAtYWdlLWNsZWFuZXIvZGlzdC9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIF9fYXdhaXRlcjIgPSBleHBvcnRzMiAmJiBleHBvcnRzMi5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24odGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uKHJlc29sdmUyKSB7XG4gICAgICAgICAgICByZXNvbHZlMihyZXN1bHQudmFsdWUpO1xuICAgICAgICAgIH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB2YXIgX19pbXBvcnREZWZhdWx0MiA9IGV4cG9ydHMyICYmIGV4cG9ydHMyLl9faW1wb3J0RGVmYXVsdCB8fCBmdW5jdGlvbihtb2QpIHtcbiAgICAgIHJldHVybiBtb2QgJiYgbW9kLl9fZXNNb2R1bGUgPyBtb2QgOiB7XG4gICAgICAgIFwiZGVmYXVsdFwiOiBtb2RcbiAgICAgIH07XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBwX2RlZmVyXzEgPSBfX2ltcG9ydERlZmF1bHQyKHJlcXVpcmVfcF9kZWZlcigpKTtcbiAgICBmdW5jdGlvbiBtYXBBZ2VDbGVhbmVyMihtYXAsIHByb3BlcnR5ID0gXCJtYXhBZ2VcIikge1xuICAgICAgbGV0IHByb2Nlc3NpbmdLZXk7XG4gICAgICBsZXQgcHJvY2Vzc2luZ1RpbWVyO1xuICAgICAgbGV0IHByb2Nlc3NpbmdEZWZlcnJlZDtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiBfX2F3YWl0ZXIyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBpZiAocHJvY2Vzc2luZ0tleSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNldHVwVGltZXIgPSAoaXRlbSkgPT4gX19hd2FpdGVyMih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICBwcm9jZXNzaW5nRGVmZXJyZWQgPSBwX2RlZmVyXzEuZGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IGRlbGF5ID0gaXRlbVsxXVtwcm9wZXJ0eV0gLSBEYXRlLm5vdygpO1xuICAgICAgICAgIGlmIChkZWxheSA8PSAwKSB7XG4gICAgICAgICAgICBtYXAuZGVsZXRlKGl0ZW1bMF0pO1xuICAgICAgICAgICAgcHJvY2Vzc2luZ0RlZmVycmVkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvY2Vzc2luZ0tleSA9IGl0ZW1bMF07XG4gICAgICAgICAgcHJvY2Vzc2luZ1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBtYXAuZGVsZXRlKGl0ZW1bMF0pO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdEZWZlcnJlZCkge1xuICAgICAgICAgICAgICBwcm9jZXNzaW5nRGVmZXJyZWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3NpbmdUaW1lci51bnJlZiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBwcm9jZXNzaW5nVGltZXIudW5yZWYoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NpbmdEZWZlcnJlZC5wcm9taXNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG1hcCkge1xuICAgICAgICAgICAgeWllbGQgc2V0dXBUaW1lcihlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChfYSkge1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3NpbmdLZXkgPSB2b2lkIDA7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgICAgICBwcm9jZXNzaW5nS2V5ID0gdm9pZCAwO1xuICAgICAgICBpZiAocHJvY2Vzc2luZ1RpbWVyICE9PSB2b2lkIDApIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQocHJvY2Vzc2luZ1RpbWVyKTtcbiAgICAgICAgICBwcm9jZXNzaW5nVGltZXIgPSB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3NpbmdEZWZlcnJlZCAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgcHJvY2Vzc2luZ0RlZmVycmVkLnJlamVjdCh2b2lkIDApO1xuICAgICAgICAgIHByb2Nlc3NpbmdEZWZlcnJlZCA9IHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsU2V0ID0gbWFwLnNldC5iaW5kKG1hcCk7XG4gICAgICBtYXAuc2V0ID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKG1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgIG1hcC5kZWxldGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbFNldChrZXksIHZhbHVlKTtcbiAgICAgICAgaWYgKHByb2Nlc3NpbmdLZXkgJiYgcHJvY2Vzc2luZ0tleSA9PT0ga2V5KSB7XG4gICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgY2xlYW51cCgpO1xuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IG1hcEFnZUNsZWFuZXIyO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IG1hcEFnZUNsZWFuZXIyO1xuICAgIG1vZHVsZTIuZXhwb3J0cy5kZWZhdWx0ID0gbWFwQWdlQ2xlYW5lcjI7XG4gIH1cbn0pO1xudmFyIGRpc3RfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoZGlzdF9leHBvcnRzLCB7XG4gIGRlZmF1bHQ6ICgpID0+IG1lbSxcbiAgbWVtQ2xlYXI6ICgpID0+IG1lbUNsZWFyLFxuICBtZW1EZWNvcmF0b3I6ICgpID0+IG1lbURlY29yYXRvclxufSk7XG5mdW5jdGlvbiBtZW0oZm4sIHtcbiAgY2FjaGVLZXksXG4gIGNhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgbWF4QWdlXG59ID0ge30pIHtcbiAgaWYgKHR5cGVvZiBtYXhBZ2UgPT09IFwibnVtYmVyXCIpIHtcbiAgICAoMCwgaW1wb3J0X21hcF9hZ2VfY2xlYW5lci5kZWZhdWx0KShjYWNoZSk7XG4gIH1cbiAgY29uc3QgbWVtb2l6ZWQgPSBmdW5jdGlvbiguLi5hcmd1bWVudHNfKSB7XG4gICAgY29uc3Qga2V5ID0gY2FjaGVLZXkgPyBjYWNoZUtleShhcmd1bWVudHNfKSA6IGFyZ3VtZW50c19bMF07XG4gICAgY29uc3QgY2FjaGVJdGVtID0gY2FjaGUuZ2V0KGtleSk7XG4gICAgaWYgKGNhY2hlSXRlbSkge1xuICAgICAgcmV0dXJuIGNhY2hlSXRlbS5kYXRhO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHNfKTtcbiAgICBjYWNoZS5zZXQoa2V5LCB7XG4gICAgICBkYXRhOiByZXN1bHQsXG4gICAgICBtYXhBZ2U6IG1heEFnZSA/IERhdGUubm93KCkgKyBtYXhBZ2UgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtaW1pY0Z1bmN0aW9uKG1lbW9pemVkLCBmbiwge1xuICAgIGlnbm9yZU5vbkNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbiAgY2FjaGVTdG9yZS5zZXQobWVtb2l6ZWQsIGNhY2hlKTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuZnVuY3Rpb24gbWVtRGVjb3JhdG9yKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBpbnN0YW5jZU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpO1xuICByZXR1cm4gKHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRhcmdldFtwcm9wZXJ0eUtleV07XG4gICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGRlY29yYXRlZCB2YWx1ZSBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuICAgIGRlbGV0ZSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlbGV0ZSBkZXNjcmlwdG9yLndyaXRhYmxlO1xuICAgIGRlc2NyaXB0b3IuZ2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIWluc3RhbmNlTWFwLmhhcyh0aGlzKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1lbShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIGluc3RhbmNlTWFwLnNldCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnN0YW5jZU1hcC5nZXQodGhpcyk7XG4gICAgfTtcbiAgfTtcbn1cbmZ1bmN0aW9uIG1lbUNsZWFyKGZuKSB7XG4gIGNvbnN0IGNhY2hlID0gY2FjaGVTdG9yZS5nZXQoZm4pO1xuICBpZiAoIWNhY2hlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbid0IGNsZWFyIGEgZnVuY3Rpb24gdGhhdCB3YXMgbm90IG1lbW9pemVkIVwiKTtcbiAgfVxuICBpZiAodHlwZW9mIGNhY2hlLmNsZWFyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGNhY2hlIE1hcCBjYW4ndCBiZSBjbGVhcmVkIVwiKTtcbiAgfVxuICBjYWNoZS5jbGVhcigpO1xufVxudmFyIGltcG9ydF9tYXBfYWdlX2NsZWFuZXI7XG52YXIgY2FjaGVTdG9yZTtcbnZhciBpbml0X2Rpc3QgPSBfX2VzbSh7XG4gIFwibm9kZV9tb2R1bGVzL21lbS9kaXN0L2luZGV4LmpzXCIoKSB7XG4gICAgaW5pdF9taW1pY19mbigpO1xuICAgIGltcG9ydF9tYXBfYWdlX2NsZWFuZXIgPSBfX3RvRVNNKHJlcXVpcmVfZGlzdCgpKTtcbiAgICBjYWNoZVN0b3JlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHNldWRvbWFwID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9wc2V1ZG9tYXAvcHNldWRvbWFwLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IFBzZXVkb01hcDtcbiAgICBmdW5jdGlvbiBQc2V1ZG9NYXAoc2V0Mikge1xuICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBzZXVkb01hcCkpXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDb25zdHJ1Y3RvciBQc2V1ZG9NYXAgcmVxdWlyZXMgJ25ldydcIik7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICBpZiAoc2V0Mikge1xuICAgICAgICBpZiAoc2V0MiBpbnN0YW5jZW9mIFBzZXVkb01hcCB8fCB0eXBlb2YgTWFwID09PSBcImZ1bmN0aW9uXCIgJiYgc2V0MiBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgICBzZXQyLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc2V0MikpXG4gICAgICAgICAgc2V0Mi5mb3JFYWNoKGZ1bmN0aW9uKGt2KSB7XG4gICAgICAgICAgICB0aGlzLnNldChrdlswXSwga3ZbMV0pO1xuICAgICAgICAgIH0sIHRoaXMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQgYXJndW1lbnRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIFBzZXVkb01hcC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGZuLCB0aGlzcCkge1xuICAgICAgdGhpc3AgPSB0aGlzcCB8fCB0aGlzO1xuICAgICAgT2JqZWN0LmtleXModGhpcy5fZGF0YSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICAgIGlmIChrICE9PSBcInNpemVcIilcbiAgICAgICAgICBmbi5jYWxsKHRoaXNwLCB0aGlzLl9kYXRhW2tdLnZhbHVlLCB0aGlzLl9kYXRhW2tdLmtleSk7XG4gICAgICB9LCB0aGlzKTtcbiAgICB9O1xuICAgIFBzZXVkb01hcC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24oaykge1xuICAgICAgcmV0dXJuICEhZmluZCh0aGlzLl9kYXRhLCBrKTtcbiAgICB9O1xuICAgIFBzZXVkb01hcC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oaykge1xuICAgICAgdmFyIHJlcyA9IGZpbmQodGhpcy5fZGF0YSwgayk7XG4gICAgICByZXR1cm4gcmVzICYmIHJlcy52YWx1ZTtcbiAgICB9O1xuICAgIFBzZXVkb01hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oaywgdikge1xuICAgICAgc2V0KHRoaXMuX2RhdGEsIGssIHYpO1xuICAgIH07XG4gICAgUHNldWRvTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbihrKSB7XG4gICAgICB2YXIgcmVzID0gZmluZCh0aGlzLl9kYXRhLCBrKTtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGFbcmVzLl9pbmRleF07XG4gICAgICAgIHRoaXMuX2RhdGEuc2l6ZS0tO1xuICAgICAgfVxuICAgIH07XG4gICAgUHNldWRvTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGRhdGEgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIGRhdGEuc2l6ZSA9IDA7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJfZGF0YVwiLCB7XG4gICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBzZXVkb01hcC5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5zaXplO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24obikge1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBQc2V1ZG9NYXAucHJvdG90eXBlLnZhbHVlcyA9IFBzZXVkb01hcC5wcm90b3R5cGUua2V5cyA9IFBzZXVkb01hcC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXRlcmF0b3JzIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyB2ZXJzaW9uXCIpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gc2FtZShhLCBiKSB7XG4gICAgICByZXR1cm4gYSA9PT0gYiB8fCBhICE9PSBhICYmIGIgIT09IGI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIEVudHJ5KGssIHYsIGkpIHtcbiAgICAgIHRoaXMua2V5ID0gaztcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgICAgdGhpcy5faW5kZXggPSBpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmaW5kKGRhdGEsIGspIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBzID0gXCJfXCIgKyBrLCBrZXkgPSBzOyBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7IGtleSA9IHMgKyBpKyspIHtcbiAgICAgICAgaWYgKHNhbWUoZGF0YVtrZXldLmtleSwgaykpXG4gICAgICAgICAgcmV0dXJuIGRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0KGRhdGEsIGssIHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBzID0gXCJfXCIgKyBrLCBrZXkgPSBzOyBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7IGtleSA9IHMgKyBpKyspIHtcbiAgICAgICAgaWYgKHNhbWUoZGF0YVtrZXldLmtleSwgaykpIHtcbiAgICAgICAgICBkYXRhW2tleV0udmFsdWUgPSB2O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGF0YS5zaXplKys7XG4gICAgICBkYXRhW2tleV0gPSBuZXcgRW50cnkoaywgdiwga2V5KTtcbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbWFwID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9wc2V1ZG9tYXAvbWFwLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfbmFtZSA9PT0gXCJwc2V1ZG9tYXBcIiAmJiBwcm9jZXNzLmVudi5ucG1fbGlmZWN5Y2xlX3NjcmlwdCA9PT0gXCJ0ZXN0XCIpXG4gICAgICBwcm9jZXNzLmVudi5URVNUX1BTRVVET01BUCA9IFwidHJ1ZVwiO1xuICAgIGlmICh0eXBlb2YgTWFwID09PSBcImZ1bmN0aW9uXCIgJiYgIXByb2Nlc3MuZW52LlRFU1RfUFNFVURPTUFQKSB7XG4gICAgICBtb2R1bGUyLmV4cG9ydHMgPSBNYXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1vZHVsZTIuZXhwb3J0cyA9IHJlcXVpcmVfcHNldWRvbWFwKCk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX3lhbGxpc3QgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2VkaXRvcmNvbmZpZy9ub2RlX21vZHVsZXMveWFsbGlzdC95YWxsaXN0LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBZYWxsaXN0O1xuICAgIFlhbGxpc3QuTm9kZSA9IE5vZGU7XG4gICAgWWFsbGlzdC5jcmVhdGUgPSBZYWxsaXN0O1xuICAgIGZ1bmN0aW9uIFlhbGxpc3QobGlzdCkge1xuICAgICAgdmFyIHNlbGYyID0gdGhpcztcbiAgICAgIGlmICghKHNlbGYyIGluc3RhbmNlb2YgWWFsbGlzdCkpIHtcbiAgICAgICAgc2VsZjIgPSBuZXcgWWFsbGlzdCgpO1xuICAgICAgfVxuICAgICAgc2VsZjIudGFpbCA9IG51bGw7XG4gICAgICBzZWxmMi5oZWFkID0gbnVsbDtcbiAgICAgIHNlbGYyLmxlbmd0aCA9IDA7XG4gICAgICBpZiAobGlzdCAmJiB0eXBlb2YgbGlzdC5mb3JFYWNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICBzZWxmMi5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgc2VsZjIucHVzaChhcmd1bWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VsZjI7XG4gICAgfVxuICAgIFlhbGxpc3QucHJvdG90eXBlLnJlbW92ZU5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5saXN0ICE9PSB0aGlzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInJlbW92aW5nIG5vZGUgd2hpY2ggZG9lcyBub3QgYmVsb25nIHRvIHRoaXMgbGlzdFwiKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXh0ID0gbm9kZS5uZXh0O1xuICAgICAgdmFyIHByZXYgPSBub2RlLnByZXY7XG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICBuZXh0LnByZXYgPSBwcmV2O1xuICAgICAgfVxuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgcHJldi5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlID09PSB0aGlzLmhlYWQpIHtcbiAgICAgICAgdGhpcy5oZWFkID0gbmV4dDtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlID09PSB0aGlzLnRhaWwpIHtcbiAgICAgICAgdGhpcy50YWlsID0gcHJldjtcbiAgICAgIH1cbiAgICAgIG5vZGUubGlzdC5sZW5ndGgtLTtcbiAgICAgIG5vZGUubmV4dCA9IG51bGw7XG4gICAgICBub2RlLnByZXYgPSBudWxsO1xuICAgICAgbm9kZS5saXN0ID0gbnVsbDtcbiAgICB9O1xuICAgIFlhbGxpc3QucHJvdG90eXBlLnVuc2hpZnROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICAgICAgaWYgKG5vZGUgPT09IHRoaXMuaGVhZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5saXN0KSB7XG4gICAgICAgIG5vZGUubGlzdC5yZW1vdmVOb2RlKG5vZGUpO1xuICAgICAgfVxuICAgICAgdmFyIGhlYWQgPSB0aGlzLmhlYWQ7XG4gICAgICBub2RlLmxpc3QgPSB0aGlzO1xuICAgICAgbm9kZS5uZXh0ID0gaGVhZDtcbiAgICAgIGlmIChoZWFkKSB7XG4gICAgICAgIGhlYWQucHJldiA9IG5vZGU7XG4gICAgICB9XG4gICAgICB0aGlzLmhlYWQgPSBub2RlO1xuICAgICAgaWYgKCF0aGlzLnRhaWwpIHtcbiAgICAgICAgdGhpcy50YWlsID0gbm9kZTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfTtcbiAgICBZYWxsaXN0LnByb3RvdHlwZS5wdXNoTm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIGlmIChub2RlID09PSB0aGlzLnRhaWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUubGlzdCkge1xuICAgICAgICBub2RlLmxpc3QucmVtb3ZlTm9kZShub2RlKTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWlsID0gdGhpcy50YWlsO1xuICAgICAgbm9kZS5saXN0ID0gdGhpcztcbiAgICAgIG5vZGUucHJldiA9IHRhaWw7XG4gICAgICBpZiAodGFpbCkge1xuICAgICAgICB0YWlsLm5leHQgPSBub2RlO1xuICAgICAgfVxuICAgICAgdGhpcy50YWlsID0gbm9kZTtcbiAgICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICAgIHRoaXMuaGVhZCA9IG5vZGU7XG4gICAgICB9XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH07XG4gICAgWWFsbGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHB1c2godGhpcywgYXJndW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmxlbmd0aDtcbiAgICB9O1xuICAgIFlhbGxpc3QucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB1bnNoaWZ0KHRoaXMsIGFyZ3VtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGg7XG4gICAgfTtcbiAgICBZYWxsaXN0LnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghdGhpcy50YWlsKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICB2YXIgcmVzID0gdGhpcy50YWlsLnZhbHVlO1xuICAgICAgdGhpcy50YWlsID0gdGhpcy50YWlsLnByZXY7XG4gICAgICBpZiAodGhpcy50YWlsKSB7XG4gICAgICAgIHRoaXMudGFpbC5uZXh0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIFlhbGxpc3QucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgfVxuICAgICAgdmFyIHJlcyA9IHRoaXMuaGVhZC52YWx1ZTtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgICAgaWYgKHRoaXMuaGVhZCkge1xuICAgICAgICB0aGlzLmhlYWQucHJldiA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBZYWxsaXN0LnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oZm4sIHRoaXNwKSB7XG4gICAgICB0aGlzcCA9IHRoaXNwIHx8IHRoaXM7XG4gICAgICBmb3IgKHZhciB3YWxrZXIgPSB0aGlzLmhlYWQsIGkgPSAwOyB3YWxrZXIgIT09IG51bGw7IGkrKykge1xuICAgICAgICBmbi5jYWxsKHRoaXNwLCB3YWxrZXIudmFsdWUsIGksIHRoaXMpO1xuICAgICAgICB3YWxrZXIgPSB3YWxrZXIubmV4dDtcbiAgICAgIH1cbiAgICB9O1xuICAgIFlhbGxpc3QucHJvdG90eXBlLmZvckVhY2hSZXZlcnNlID0gZnVuY3Rpb24oZm4sIHRoaXNwKSB7XG4gICAgICB0aGlzcCA9IHRoaXNwIHx8IHRoaXM7XG4gICAgICBmb3IgKHZhciB3YWxrZXIgPSB0aGlzLnRhaWwsIGkgPSB0aGlzLmxlbmd0aCAtIDE7IHdhbGtlciAhPT0gbnVsbDsgaS0tKSB7XG4gICAgICAgIGZuLmNhbGwodGhpc3AsIHdhbGtlci52YWx1ZSwgaSwgdGhpcyk7XG4gICAgICAgIHdhbGtlciA9IHdhbGtlci5wcmV2O1xuICAgICAgfVxuICAgIH07XG4gICAgWWFsbGlzdC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIHdhbGtlciA9IHRoaXMuaGVhZDsgd2Fsa2VyICE9PSBudWxsICYmIGkgPCBuOyBpKyspIHtcbiAgICAgICAgd2Fsa2VyID0gd2Fsa2VyLm5leHQ7XG4gICAgICB9XG4gICAgICBpZiAoaSA9PT0gbiAmJiB3YWxrZXIgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHdhbGtlci52YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIFlhbGxpc3QucHJvdG90eXBlLmdldFJldmVyc2UgPSBmdW5jdGlvbihuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgd2Fsa2VyID0gdGhpcy50YWlsOyB3YWxrZXIgIT09IG51bGwgJiYgaSA8IG47IGkrKykge1xuICAgICAgICB3YWxrZXIgPSB3YWxrZXIucHJldjtcbiAgICAgIH1cbiAgICAgIGlmIChpID09PSBuICYmIHdhbGtlciAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gd2Fsa2VyLnZhbHVlO1xuICAgICAgfVxuICAgIH07XG4gICAgWWFsbGlzdC5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24oZm4sIHRoaXNwKSB7XG4gICAgICB0aGlzcCA9IHRoaXNwIHx8IHRoaXM7XG4gICAgICB2YXIgcmVzID0gbmV3IFlhbGxpc3QoKTtcbiAgICAgIGZvciAodmFyIHdhbGtlciA9IHRoaXMuaGVhZDsgd2Fsa2VyICE9PSBudWxsOyApIHtcbiAgICAgICAgcmVzLnB1c2goZm4uY2FsbCh0aGlzcCwgd2Fsa2VyLnZhbHVlLCB0aGlzKSk7XG4gICAgICAgIHdhbGtlciA9IHdhbGtlci5uZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIFlhbGxpc3QucHJvdG90eXBlLm1hcFJldmVyc2UgPSBmdW5jdGlvbihmbiwgdGhpc3ApIHtcbiAgICAgIHRoaXNwID0gdGhpc3AgfHwgdGhpcztcbiAgICAgIHZhciByZXMgPSBuZXcgWWFsbGlzdCgpO1xuICAgICAgZm9yICh2YXIgd2Fsa2VyID0gdGhpcy50YWlsOyB3YWxrZXIgIT09IG51bGw7ICkge1xuICAgICAgICByZXMucHVzaChmbi5jYWxsKHRoaXNwLCB3YWxrZXIudmFsdWUsIHRoaXMpKTtcbiAgICAgICAgd2Fsa2VyID0gd2Fsa2VyLnByZXY7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgWWFsbGlzdC5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24oZm4sIGluaXRpYWwpIHtcbiAgICAgIHZhciBhY2M7XG4gICAgICB2YXIgd2Fsa2VyID0gdGhpcy5oZWFkO1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGFjYyA9IGluaXRpYWw7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGVhZCkge1xuICAgICAgICB3YWxrZXIgPSB0aGlzLmhlYWQubmV4dDtcbiAgICAgICAgYWNjID0gdGhpcy5oZWFkLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlZHVjZSBvZiBlbXB0eSBsaXN0IHdpdGggbm8gaW5pdGlhbCB2YWx1ZVwiKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyB3YWxrZXIgIT09IG51bGw7IGkrKykge1xuICAgICAgICBhY2MgPSBmbihhY2MsIHdhbGtlci52YWx1ZSwgaSk7XG4gICAgICAgIHdhbGtlciA9IHdhbGtlci5uZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9O1xuICAgIFlhbGxpc3QucHJvdG90eXBlLnJlZHVjZVJldmVyc2UgPSBmdW5jdGlvbihmbiwgaW5pdGlhbCkge1xuICAgICAgdmFyIGFjYztcbiAgICAgIHZhciB3YWxrZXIgPSB0aGlzLnRhaWw7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgYWNjID0gaW5pdGlhbDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50YWlsKSB7XG4gICAgICAgIHdhbGtlciA9IHRoaXMudGFpbC5wcmV2O1xuICAgICAgICBhY2MgPSB0aGlzLnRhaWwudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmVkdWNlIG9mIGVtcHR5IGxpc3Qgd2l0aCBubyBpbml0aWFsIHZhbHVlXCIpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgd2Fsa2VyICE9PSBudWxsOyBpLS0pIHtcbiAgICAgICAgYWNjID0gZm4oYWNjLCB3YWxrZXIudmFsdWUsIGkpO1xuICAgICAgICB3YWxrZXIgPSB3YWxrZXIucHJldjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfTtcbiAgICBZYWxsaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCB3YWxrZXIgPSB0aGlzLmhlYWQ7IHdhbGtlciAhPT0gbnVsbDsgaSsrKSB7XG4gICAgICAgIGFycltpXSA9IHdhbGtlci52YWx1ZTtcbiAgICAgICAgd2Fsa2VyID0gd2Fsa2VyLm5leHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG4gICAgWWFsbGlzdC5wcm90b3R5cGUudG9BcnJheVJldmVyc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIHdhbGtlciA9IHRoaXMudGFpbDsgd2Fsa2VyICE9PSBudWxsOyBpKyspIHtcbiAgICAgICAgYXJyW2ldID0gd2Fsa2VyLnZhbHVlO1xuICAgICAgICB3YWxrZXIgPSB3YWxrZXIucHJldjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgICBZYWxsaXN0LnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gICAgICB0byA9IHRvIHx8IHRoaXMubGVuZ3RoO1xuICAgICAgaWYgKHRvIDwgMCkge1xuICAgICAgICB0byArPSB0aGlzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGZyb20gPSBmcm9tIHx8IDA7XG4gICAgICBpZiAoZnJvbSA8IDApIHtcbiAgICAgICAgZnJvbSArPSB0aGlzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciByZXQgPSBuZXcgWWFsbGlzdCgpO1xuICAgICAgaWYgKHRvIDwgZnJvbSB8fCB0byA8IDApIHtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH1cbiAgICAgIGlmIChmcm9tIDwgMCkge1xuICAgICAgICBmcm9tID0gMDtcbiAgICAgIH1cbiAgICAgIGlmICh0byA+IHRoaXMubGVuZ3RoKSB7XG4gICAgICAgIHRvID0gdGhpcy5sZW5ndGg7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gMCwgd2Fsa2VyID0gdGhpcy5oZWFkOyB3YWxrZXIgIT09IG51bGwgJiYgaSA8IGZyb207IGkrKykge1xuICAgICAgICB3YWxrZXIgPSB3YWxrZXIubmV4dDtcbiAgICAgIH1cbiAgICAgIGZvciAoOyB3YWxrZXIgIT09IG51bGwgJiYgaSA8IHRvOyBpKyssIHdhbGtlciA9IHdhbGtlci5uZXh0KSB7XG4gICAgICAgIHJldC5wdXNoKHdhbGtlci52YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH07XG4gICAgWWFsbGlzdC5wcm90b3R5cGUuc2xpY2VSZXZlcnNlID0gZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgICAgIHRvID0gdG8gfHwgdGhpcy5sZW5ndGg7XG4gICAgICBpZiAodG8gPCAwKSB7XG4gICAgICAgIHRvICs9IHRoaXMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgZnJvbSA9IGZyb20gfHwgMDtcbiAgICAgIGlmIChmcm9tIDwgMCkge1xuICAgICAgICBmcm9tICs9IHRoaXMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHJldCA9IG5ldyBZYWxsaXN0KCk7XG4gICAgICBpZiAodG8gPCBmcm9tIHx8IHRvIDwgMCkge1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgICAgaWYgKGZyb20gPCAwKSB7XG4gICAgICAgIGZyb20gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHRvID4gdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgdG8gPSB0aGlzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCwgd2Fsa2VyID0gdGhpcy50YWlsOyB3YWxrZXIgIT09IG51bGwgJiYgaSA+IHRvOyBpLS0pIHtcbiAgICAgICAgd2Fsa2VyID0gd2Fsa2VyLnByZXY7XG4gICAgICB9XG4gICAgICBmb3IgKDsgd2Fsa2VyICE9PSBudWxsICYmIGkgPiBmcm9tOyBpLS0sIHdhbGtlciA9IHdhbGtlci5wcmV2KSB7XG4gICAgICAgIHJldC5wdXNoKHdhbGtlci52YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH07XG4gICAgWWFsbGlzdC5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhlYWQgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgdGFpbCA9IHRoaXMudGFpbDtcbiAgICAgIGZvciAodmFyIHdhbGtlciA9IGhlYWQ7IHdhbGtlciAhPT0gbnVsbDsgd2Fsa2VyID0gd2Fsa2VyLnByZXYpIHtcbiAgICAgICAgdmFyIHAgPSB3YWxrZXIucHJldjtcbiAgICAgICAgd2Fsa2VyLnByZXYgPSB3YWxrZXIubmV4dDtcbiAgICAgICAgd2Fsa2VyLm5leHQgPSBwO1xuICAgICAgfVxuICAgICAgdGhpcy5oZWFkID0gdGFpbDtcbiAgICAgIHRoaXMudGFpbCA9IGhlYWQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIGZ1bmN0aW9uIHB1c2goc2VsZjIsIGl0ZW0pIHtcbiAgICAgIHNlbGYyLnRhaWwgPSBuZXcgTm9kZShpdGVtLCBzZWxmMi50YWlsLCBudWxsLCBzZWxmMik7XG4gICAgICBpZiAoIXNlbGYyLmhlYWQpIHtcbiAgICAgICAgc2VsZjIuaGVhZCA9IHNlbGYyLnRhaWw7XG4gICAgICB9XG4gICAgICBzZWxmMi5sZW5ndGgrKztcbiAgICB9XG4gICAgZnVuY3Rpb24gdW5zaGlmdChzZWxmMiwgaXRlbSkge1xuICAgICAgc2VsZjIuaGVhZCA9IG5ldyBOb2RlKGl0ZW0sIG51bGwsIHNlbGYyLmhlYWQsIHNlbGYyKTtcbiAgICAgIGlmICghc2VsZjIudGFpbCkge1xuICAgICAgICBzZWxmMi50YWlsID0gc2VsZjIuaGVhZDtcbiAgICAgIH1cbiAgICAgIHNlbGYyLmxlbmd0aCsrO1xuICAgIH1cbiAgICBmdW5jdGlvbiBOb2RlKHZhbHVlLCBwcmV2LCBuZXh0LCBsaXN0KSB7XG4gICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlKHZhbHVlLCBwcmV2LCBuZXh0LCBsaXN0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAocHJldikge1xuICAgICAgICBwcmV2Lm5leHQgPSB0aGlzO1xuICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIG5leHQucHJldiA9IHRoaXM7XG4gICAgICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9scnVfY2FjaGUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2VkaXRvcmNvbmZpZy9ub2RlX21vZHVsZXMvbHJ1LWNhY2hlL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBMUlVDYWNoZTtcbiAgICB2YXIgTWFwMiA9IHJlcXVpcmVfbWFwKCk7XG4gICAgdmFyIHV0aWwgPSByZXF1aXJlKFwidXRpbFwiKTtcbiAgICB2YXIgWWFsbGlzdCA9IHJlcXVpcmVfeWFsbGlzdCgpO1xuICAgIHZhciBoYXNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgcHJvY2Vzcy5lbnYuX25vZGVMUlVDYWNoZUZvcmNlTm9TeW1ib2wgIT09IFwiMVwiO1xuICAgIHZhciBtYWtlU3ltYm9sO1xuICAgIGlmIChoYXNTeW1ib2wpIHtcbiAgICAgIG1ha2VTeW1ib2wgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgcmV0dXJuIFN5bWJvbChrZXkpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWFrZVN5bWJvbCA9IGZ1bmN0aW9uKGtleSkge1xuICAgICAgICByZXR1cm4gXCJfXCIgKyBrZXk7XG4gICAgICB9O1xuICAgIH1cbiAgICB2YXIgTUFYID0gbWFrZVN5bWJvbChcIm1heFwiKTtcbiAgICB2YXIgTEVOR1RIID0gbWFrZVN5bWJvbChcImxlbmd0aFwiKTtcbiAgICB2YXIgTEVOR1RIX0NBTENVTEFUT1IgPSBtYWtlU3ltYm9sKFwibGVuZ3RoQ2FsY3VsYXRvclwiKTtcbiAgICB2YXIgQUxMT1dfU1RBTEUgPSBtYWtlU3ltYm9sKFwiYWxsb3dTdGFsZVwiKTtcbiAgICB2YXIgTUFYX0FHRSA9IG1ha2VTeW1ib2woXCJtYXhBZ2VcIik7XG4gICAgdmFyIERJU1BPU0UgPSBtYWtlU3ltYm9sKFwiZGlzcG9zZVwiKTtcbiAgICB2YXIgTk9fRElTUE9TRV9PTl9TRVQgPSBtYWtlU3ltYm9sKFwibm9EaXNwb3NlT25TZXRcIik7XG4gICAgdmFyIExSVV9MSVNUID0gbWFrZVN5bWJvbChcImxydUxpc3RcIik7XG4gICAgdmFyIENBQ0hFID0gbWFrZVN5bWJvbChcImNhY2hlXCIpO1xuICAgIGZ1bmN0aW9uIG5haXZlTGVuZ3RoKCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIExSVUNhY2hlKG9wdGlvbnMpIHtcbiAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMUlVDYWNoZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMUlVDYWNoZShvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIG1heDogb3B0aW9uc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgIH1cbiAgICAgIHZhciBtYXggPSB0aGlzW01BWF0gPSBvcHRpb25zLm1heDtcbiAgICAgIGlmICghbWF4IHx8ICEodHlwZW9mIG1heCA9PT0gXCJudW1iZXJcIikgfHwgbWF4IDw9IDApIHtcbiAgICAgICAgdGhpc1tNQVhdID0gSW5maW5pdHk7XG4gICAgICB9XG4gICAgICB2YXIgbGMgPSBvcHRpb25zLmxlbmd0aCB8fCBuYWl2ZUxlbmd0aDtcbiAgICAgIGlmICh0eXBlb2YgbGMgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBsYyA9IG5haXZlTGVuZ3RoO1xuICAgICAgfVxuICAgICAgdGhpc1tMRU5HVEhfQ0FMQ1VMQVRPUl0gPSBsYztcbiAgICAgIHRoaXNbQUxMT1dfU1RBTEVdID0gb3B0aW9ucy5zdGFsZSB8fCBmYWxzZTtcbiAgICAgIHRoaXNbTUFYX0FHRV0gPSBvcHRpb25zLm1heEFnZSB8fCAwO1xuICAgICAgdGhpc1tESVNQT1NFXSA9IG9wdGlvbnMuZGlzcG9zZTtcbiAgICAgIHRoaXNbTk9fRElTUE9TRV9PTl9TRVRdID0gb3B0aW9ucy5ub0Rpc3Bvc2VPblNldCB8fCBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KExSVUNhY2hlLnByb3RvdHlwZSwgXCJtYXhcIiwge1xuICAgICAgc2V0OiBmdW5jdGlvbihtTCkge1xuICAgICAgICBpZiAoIW1MIHx8ICEodHlwZW9mIG1MID09PSBcIm51bWJlclwiKSB8fCBtTCA8PSAwKSB7XG4gICAgICAgICAgbUwgPSBJbmZpbml0eTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzW01BWF0gPSBtTDtcbiAgICAgICAgdHJpbSh0aGlzKTtcbiAgICAgIH0sXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tNQVhdO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTFJVQ2FjaGUucHJvdG90eXBlLCBcImFsbG93U3RhbGVcIiwge1xuICAgICAgc2V0OiBmdW5jdGlvbihhbGxvd1N0YWxlKSB7XG4gICAgICAgIHRoaXNbQUxMT1dfU1RBTEVdID0gISFhbGxvd1N0YWxlO1xuICAgICAgfSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0FMTE9XX1NUQUxFXTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KExSVUNhY2hlLnByb3RvdHlwZSwgXCJtYXhBZ2VcIiwge1xuICAgICAgc2V0OiBmdW5jdGlvbihtQSkge1xuICAgICAgICBpZiAoIW1BIHx8ICEodHlwZW9mIG1BID09PSBcIm51bWJlclwiKSB8fCBtQSA8IDApIHtcbiAgICAgICAgICBtQSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpc1tNQVhfQUdFXSA9IG1BO1xuICAgICAgICB0cmltKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW01BWF9BR0VdO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTFJVQ2FjaGUucHJvdG90eXBlLCBcImxlbmd0aENhbGN1bGF0b3JcIiwge1xuICAgICAgc2V0OiBmdW5jdGlvbihsQykge1xuICAgICAgICBpZiAodHlwZW9mIGxDICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBsQyA9IG5haXZlTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsQyAhPT0gdGhpc1tMRU5HVEhfQ0FMQ1VMQVRPUl0pIHtcbiAgICAgICAgICB0aGlzW0xFTkdUSF9DQUxDVUxBVE9SXSA9IGxDO1xuICAgICAgICAgIHRoaXNbTEVOR1RIXSA9IDA7XG4gICAgICAgICAgdGhpc1tMUlVfTElTVF0uZm9yRWFjaChmdW5jdGlvbihoaXQpIHtcbiAgICAgICAgICAgIGhpdC5sZW5ndGggPSB0aGlzW0xFTkdUSF9DQUxDVUxBVE9SXShoaXQudmFsdWUsIGhpdC5rZXkpO1xuICAgICAgICAgICAgdGhpc1tMRU5HVEhdICs9IGhpdC5sZW5ndGg7XG4gICAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgdHJpbSh0aGlzKTtcbiAgICAgIH0sXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tMRU5HVEhfQ0FMQ1VMQVRPUl07XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMUlVDYWNoZS5wcm90b3R5cGUsIFwibGVuZ3RoXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0xFTkdUSF07XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMUlVDYWNoZS5wcm90b3R5cGUsIFwiaXRlbUNvdW50XCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0xSVV9MSVNUXS5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIExSVUNhY2hlLnByb3RvdHlwZS5yZm9yRWFjaCA9IGZ1bmN0aW9uKGZuLCB0aGlzcCkge1xuICAgICAgdGhpc3AgPSB0aGlzcCB8fCB0aGlzO1xuICAgICAgZm9yICh2YXIgd2Fsa2VyID0gdGhpc1tMUlVfTElTVF0udGFpbDsgd2Fsa2VyICE9PSBudWxsOyApIHtcbiAgICAgICAgdmFyIHByZXYgPSB3YWxrZXIucHJldjtcbiAgICAgICAgZm9yRWFjaFN0ZXAodGhpcywgZm4sIHdhbGtlciwgdGhpc3ApO1xuICAgICAgICB3YWxrZXIgPSBwcmV2O1xuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gZm9yRWFjaFN0ZXAoc2VsZjIsIGZuLCBub2RlLCB0aGlzcCkge1xuICAgICAgdmFyIGhpdCA9IG5vZGUudmFsdWU7XG4gICAgICBpZiAoaXNTdGFsZShzZWxmMiwgaGl0KSkge1xuICAgICAgICBkZWwoc2VsZjIsIG5vZGUpO1xuICAgICAgICBpZiAoIXNlbGYyW0FMTE9XX1NUQUxFXSkge1xuICAgICAgICAgIGhpdCA9IHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGhpdCkge1xuICAgICAgICBmbi5jYWxsKHRoaXNwLCBoaXQudmFsdWUsIGhpdC5rZXksIHNlbGYyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgTFJVQ2FjaGUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihmbiwgdGhpc3ApIHtcbiAgICAgIHRoaXNwID0gdGhpc3AgfHwgdGhpcztcbiAgICAgIGZvciAodmFyIHdhbGtlciA9IHRoaXNbTFJVX0xJU1RdLmhlYWQ7IHdhbGtlciAhPT0gbnVsbDsgKSB7XG4gICAgICAgIHZhciBuZXh0ID0gd2Fsa2VyLm5leHQ7XG4gICAgICAgIGZvckVhY2hTdGVwKHRoaXMsIGZuLCB3YWxrZXIsIHRoaXNwKTtcbiAgICAgICAgd2Fsa2VyID0gbmV4dDtcbiAgICAgIH1cbiAgICB9O1xuICAgIExSVUNhY2hlLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpc1tMUlVfTElTVF0udG9BcnJheSgpLm1hcChmdW5jdGlvbihrKSB7XG4gICAgICAgIHJldHVybiBrLmtleTtcbiAgICAgIH0sIHRoaXMpO1xuICAgIH07XG4gICAgTFJVQ2FjaGUucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXNbTFJVX0xJU1RdLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24oaykge1xuICAgICAgICByZXR1cm4gay52YWx1ZTtcbiAgICAgIH0sIHRoaXMpO1xuICAgIH07XG4gICAgTFJVQ2FjaGUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpc1tESVNQT1NFXSAmJiB0aGlzW0xSVV9MSVNUXSAmJiB0aGlzW0xSVV9MSVNUXS5sZW5ndGgpIHtcbiAgICAgICAgdGhpc1tMUlVfTElTVF0uZm9yRWFjaChmdW5jdGlvbihoaXQpIHtcbiAgICAgICAgICB0aGlzW0RJU1BPU0VdKGhpdC5rZXksIGhpdC52YWx1ZSk7XG4gICAgICAgIH0sIHRoaXMpO1xuICAgICAgfVxuICAgICAgdGhpc1tDQUNIRV0gPSBuZXcgTWFwMigpO1xuICAgICAgdGhpc1tMUlVfTElTVF0gPSBuZXcgWWFsbGlzdCgpO1xuICAgICAgdGhpc1tMRU5HVEhdID0gMDtcbiAgICB9O1xuICAgIExSVUNhY2hlLnByb3RvdHlwZS5kdW1wID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpc1tMUlVfTElTVF0ubWFwKGZ1bmN0aW9uKGhpdCkge1xuICAgICAgICBpZiAoIWlzU3RhbGUodGhpcywgaGl0KSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrOiBoaXQua2V5LFxuICAgICAgICAgICAgdjogaGl0LnZhbHVlLFxuICAgICAgICAgICAgZTogaGl0Lm5vdyArIChoaXQubWF4QWdlIHx8IDApXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcykudG9BcnJheSgpLmZpbHRlcihmdW5jdGlvbihoKSB7XG4gICAgICAgIHJldHVybiBoO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBMUlVDYWNoZS5wcm90b3R5cGUuZHVtcExydSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXNbTFJVX0xJU1RdO1xuICAgIH07XG4gICAgTFJVQ2FjaGUucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbihuLCBvcHRzKSB7XG4gICAgICB2YXIgc3RyID0gXCJMUlVDYWNoZSB7XCI7XG4gICAgICB2YXIgZXh0cmFzID0gZmFsc2U7XG4gICAgICB2YXIgYXMgPSB0aGlzW0FMTE9XX1NUQUxFXTtcbiAgICAgIGlmIChhcykge1xuICAgICAgICBzdHIgKz0gXCJcXG4gIGFsbG93U3RhbGU6IHRydWVcIjtcbiAgICAgICAgZXh0cmFzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBtYXggPSB0aGlzW01BWF07XG4gICAgICBpZiAobWF4ICYmIG1heCAhPT0gSW5maW5pdHkpIHtcbiAgICAgICAgaWYgKGV4dHJhcykge1xuICAgICAgICAgIHN0ciArPSBcIixcIjtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCJcXG4gIG1heDogXCIgKyB1dGlsLmluc3BlY3QobWF4LCBvcHRzKTtcbiAgICAgICAgZXh0cmFzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBtYXhBZ2UgPSB0aGlzW01BWF9BR0VdO1xuICAgICAgaWYgKG1heEFnZSkge1xuICAgICAgICBpZiAoZXh0cmFzKSB7XG4gICAgICAgICAgc3RyICs9IFwiLFwiO1xuICAgICAgICB9XG4gICAgICAgIHN0ciArPSBcIlxcbiAgbWF4QWdlOiBcIiArIHV0aWwuaW5zcGVjdChtYXhBZ2UsIG9wdHMpO1xuICAgICAgICBleHRyYXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIGxjID0gdGhpc1tMRU5HVEhfQ0FMQ1VMQVRPUl07XG4gICAgICBpZiAobGMgJiYgbGMgIT09IG5haXZlTGVuZ3RoKSB7XG4gICAgICAgIGlmIChleHRyYXMpIHtcbiAgICAgICAgICBzdHIgKz0gXCIsXCI7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiXFxuICBsZW5ndGg6IFwiICsgdXRpbC5pbnNwZWN0KHRoaXNbTEVOR1RIXSwgb3B0cyk7XG4gICAgICAgIGV4dHJhcyA9IHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgZGlkRmlyc3QgPSBmYWxzZTtcbiAgICAgIHRoaXNbTFJVX0xJU1RdLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICBpZiAoZGlkRmlyc3QpIHtcbiAgICAgICAgICBzdHIgKz0gXCIsXFxuICBcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZXh0cmFzKSB7XG4gICAgICAgICAgICBzdHIgKz0gXCIsXFxuXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpZEZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgICBzdHIgKz0gXCJcXG4gIFwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciBrZXkgPSB1dGlsLmluc3BlY3QoaXRlbS5rZXkpLnNwbGl0KFwiXFxuXCIpLmpvaW4oXCJcXG4gIFwiKTtcbiAgICAgICAgdmFyIHZhbCA9IHtcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoaXRlbS5tYXhBZ2UgIT09IG1heEFnZSkge1xuICAgICAgICAgIHZhbC5tYXhBZ2UgPSBpdGVtLm1heEFnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGMgIT09IG5haXZlTGVuZ3RoKSB7XG4gICAgICAgICAgdmFsLmxlbmd0aCA9IGl0ZW0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0YWxlKHRoaXMsIGl0ZW0pKSB7XG4gICAgICAgICAgdmFsLnN0YWxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YWwgPSB1dGlsLmluc3BlY3QodmFsLCBvcHRzKS5zcGxpdChcIlxcblwiKS5qb2luKFwiXFxuICBcIik7XG4gICAgICAgIHN0ciArPSBrZXkgKyBcIiA9PiBcIiArIHZhbDtcbiAgICAgIH0pO1xuICAgICAgaWYgKGRpZEZpcnN0IHx8IGV4dHJhcykge1xuICAgICAgICBzdHIgKz0gXCJcXG5cIjtcbiAgICAgIH1cbiAgICAgIHN0ciArPSBcIn1cIjtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfTtcbiAgICBMUlVDYWNoZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSwgbWF4QWdlKSB7XG4gICAgICBtYXhBZ2UgPSBtYXhBZ2UgfHwgdGhpc1tNQVhfQUdFXTtcbiAgICAgIHZhciBub3cgPSBtYXhBZ2UgPyBEYXRlLm5vdygpIDogMDtcbiAgICAgIHZhciBsZW4gPSB0aGlzW0xFTkdUSF9DQUxDVUxBVE9SXSh2YWx1ZSwga2V5KTtcbiAgICAgIGlmICh0aGlzW0NBQ0hFXS5oYXMoa2V5KSkge1xuICAgICAgICBpZiAobGVuID4gdGhpc1tNQVhdKSB7XG4gICAgICAgICAgZGVsKHRoaXMsIHRoaXNbQ0FDSEVdLmdldChrZXkpKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5vZGUgPSB0aGlzW0NBQ0hFXS5nZXQoa2V5KTtcbiAgICAgICAgdmFyIGl0ZW0gPSBub2RlLnZhbHVlO1xuICAgICAgICBpZiAodGhpc1tESVNQT1NFXSkge1xuICAgICAgICAgIGlmICghdGhpc1tOT19ESVNQT1NFX09OX1NFVF0pIHtcbiAgICAgICAgICAgIHRoaXNbRElTUE9TRV0oa2V5LCBpdGVtLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaXRlbS5ub3cgPSBub3c7XG4gICAgICAgIGl0ZW0ubWF4QWdlID0gbWF4QWdlO1xuICAgICAgICBpdGVtLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXNbTEVOR1RIXSArPSBsZW4gLSBpdGVtLmxlbmd0aDtcbiAgICAgICAgaXRlbS5sZW5ndGggPSBsZW47XG4gICAgICAgIHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIHRyaW0odGhpcyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIGhpdCA9IG5ldyBFbnRyeShrZXksIHZhbHVlLCBsZW4sIG5vdywgbWF4QWdlKTtcbiAgICAgIGlmIChoaXQubGVuZ3RoID4gdGhpc1tNQVhdKSB7XG4gICAgICAgIGlmICh0aGlzW0RJU1BPU0VdKSB7XG4gICAgICAgICAgdGhpc1tESVNQT1NFXShrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzW0xFTkdUSF0gKz0gaGl0Lmxlbmd0aDtcbiAgICAgIHRoaXNbTFJVX0xJU1RdLnVuc2hpZnQoaGl0KTtcbiAgICAgIHRoaXNbQ0FDSEVdLnNldChrZXksIHRoaXNbTFJVX0xJU1RdLmhlYWQpO1xuICAgICAgdHJpbSh0aGlzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgTFJVQ2FjaGUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGtleSkge1xuICAgICAgaWYgKCF0aGlzW0NBQ0hFXS5oYXMoa2V5KSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGhpdCA9IHRoaXNbQ0FDSEVdLmdldChrZXkpLnZhbHVlO1xuICAgICAgaWYgKGlzU3RhbGUodGhpcywgaGl0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIExSVUNhY2hlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywga2V5LCB0cnVlKTtcbiAgICB9O1xuICAgIExSVUNhY2hlLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIGtleSwgZmFsc2UpO1xuICAgIH07XG4gICAgTFJVQ2FjaGUucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG5vZGUgPSB0aGlzW0xSVV9MSVNUXS50YWlsO1xuICAgICAgaWYgKCFub2RlKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGRlbCh0aGlzLCBub2RlKTtcbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH07XG4gICAgTFJVQ2FjaGUucHJvdG90eXBlLmRlbCA9IGZ1bmN0aW9uKGtleSkge1xuICAgICAgZGVsKHRoaXMsIHRoaXNbQ0FDSEVdLmdldChrZXkpKTtcbiAgICB9O1xuICAgIExSVUNhY2hlLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oYXJyKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGZvciAodmFyIGwgPSBhcnIubGVuZ3RoIC0gMTsgbCA+PSAwOyBsLS0pIHtcbiAgICAgICAgdmFyIGhpdCA9IGFycltsXTtcbiAgICAgICAgdmFyIGV4cGlyZXNBdCA9IGhpdC5lIHx8IDA7XG4gICAgICAgIGlmIChleHBpcmVzQXQgPT09IDApIHtcbiAgICAgICAgICB0aGlzLnNldChoaXQuaywgaGl0LnYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBtYXhBZ2UgPSBleHBpcmVzQXQgLSBub3c7XG4gICAgICAgICAgaWYgKG1heEFnZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGhpdC5rLCBoaXQudiwgbWF4QWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIExSVUNhY2hlLnByb3RvdHlwZS5wcnVuZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHNlbGYyID0gdGhpcztcbiAgICAgIHRoaXNbQ0FDSEVdLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICBnZXQoc2VsZjIsIGtleSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXQoc2VsZjIsIGtleSwgZG9Vc2UpIHtcbiAgICAgIHZhciBub2RlID0gc2VsZjJbQ0FDSEVdLmdldChrZXkpO1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgdmFyIGhpdCA9IG5vZGUudmFsdWU7XG4gICAgICAgIGlmIChpc1N0YWxlKHNlbGYyLCBoaXQpKSB7XG4gICAgICAgICAgZGVsKHNlbGYyLCBub2RlKTtcbiAgICAgICAgICBpZiAoIXNlbGYyW0FMTE9XX1NUQUxFXSlcbiAgICAgICAgICAgIGhpdCA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZG9Vc2UpIHtcbiAgICAgICAgICAgIHNlbGYyW0xSVV9MSVNUXS51bnNoaWZ0Tm9kZShub2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhpdClcbiAgICAgICAgICBoaXQgPSBoaXQudmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGl0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1N0YWxlKHNlbGYyLCBoaXQpIHtcbiAgICAgIGlmICghaGl0IHx8ICFoaXQubWF4QWdlICYmICFzZWxmMltNQVhfQUdFXSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgc3RhbGUgPSBmYWxzZTtcbiAgICAgIHZhciBkaWZmID0gRGF0ZS5ub3coKSAtIGhpdC5ub3c7XG4gICAgICBpZiAoaGl0Lm1heEFnZSkge1xuICAgICAgICBzdGFsZSA9IGRpZmYgPiBoaXQubWF4QWdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhbGUgPSBzZWxmMltNQVhfQUdFXSAmJiBkaWZmID4gc2VsZjJbTUFYX0FHRV07XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhbGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyaW0oc2VsZjIpIHtcbiAgICAgIGlmIChzZWxmMltMRU5HVEhdID4gc2VsZjJbTUFYXSkge1xuICAgICAgICBmb3IgKHZhciB3YWxrZXIgPSBzZWxmMltMUlVfTElTVF0udGFpbDsgc2VsZjJbTEVOR1RIXSA+IHNlbGYyW01BWF0gJiYgd2Fsa2VyICE9PSBudWxsOyApIHtcbiAgICAgICAgICB2YXIgcHJldiA9IHdhbGtlci5wcmV2O1xuICAgICAgICAgIGRlbChzZWxmMiwgd2Fsa2VyKTtcbiAgICAgICAgICB3YWxrZXIgPSBwcmV2O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlbChzZWxmMiwgbm9kZSkge1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgdmFyIGhpdCA9IG5vZGUudmFsdWU7XG4gICAgICAgIGlmIChzZWxmMltESVNQT1NFXSkge1xuICAgICAgICAgIHNlbGYyW0RJU1BPU0VdKGhpdC5rZXksIGhpdC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZjJbTEVOR1RIXSAtPSBoaXQubGVuZ3RoO1xuICAgICAgICBzZWxmMltDQUNIRV0uZGVsZXRlKGhpdC5rZXkpO1xuICAgICAgICBzZWxmMltMUlVfTElTVF0ucmVtb3ZlTm9kZShub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gRW50cnkoa2V5LCB2YWx1ZSwgbGVuZ3RoLCBub3csIG1heEFnZSkge1xuICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMubm93ID0gbm93O1xuICAgICAgdGhpcy5tYXhBZ2UgPSBtYXhBZ2UgfHwgMDtcbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc2lnbXVuZCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvc2lnbXVuZC9zaWdtdW5kLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBzaWdtdW5kO1xuICAgIGZ1bmN0aW9uIHNpZ211bmQoc3ViamVjdCwgbWF4U2Vzc2lvbnMpIHtcbiAgICAgIG1heFNlc3Npb25zID0gbWF4U2Vzc2lvbnMgfHwgMTA7XG4gICAgICB2YXIgbm90ZXMgPSBbXTtcbiAgICAgIHZhciBhbmFseXNpcyA9IFwiXCI7XG4gICAgICB2YXIgUkUgPSBSZWdFeHA7XG4gICAgICBmdW5jdGlvbiBwc3ljaG9BbmFseXplKHN1YmplY3QyLCBzZXNzaW9uKSB7XG4gICAgICAgIGlmIChzZXNzaW9uID4gbWF4U2Vzc2lvbnMpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIHN1YmplY3QyID09PSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHN1YmplY3QyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc3ViamVjdDIgIT09IFwib2JqZWN0XCIgfHwgIXN1YmplY3QyIHx8IHN1YmplY3QyIGluc3RhbmNlb2YgUkUpIHtcbiAgICAgICAgICBhbmFseXNpcyArPSBzdWJqZWN0MjtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vdGVzLmluZGV4T2Yoc3ViamVjdDIpICE9PSAtMSB8fCBzZXNzaW9uID09PSBtYXhTZXNzaW9ucylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIG5vdGVzLnB1c2goc3ViamVjdDIpO1xuICAgICAgICBhbmFseXNpcyArPSBcIntcIjtcbiAgICAgICAgT2JqZWN0LmtleXMoc3ViamVjdDIpLmZvckVhY2goZnVuY3Rpb24oaXNzdWUsIF8sIF9fKSB7XG4gICAgICAgICAgaWYgKGlzc3VlLmNoYXJBdCgwKSA9PT0gXCJfXCIpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgdmFyIHRvID0gdHlwZW9mIHN1YmplY3QyW2lzc3VlXTtcbiAgICAgICAgICBpZiAodG8gPT09IFwiZnVuY3Rpb25cIiB8fCB0byA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBhbmFseXNpcyArPSBpc3N1ZTtcbiAgICAgICAgICBwc3ljaG9BbmFseXplKHN1YmplY3QyW2lzc3VlXSwgc2Vzc2lvbiArIDEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHBzeWNob0FuYWx5emUoc3ViamVjdCwgMCk7XG4gICAgICByZXR1cm4gYW5hbHlzaXM7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2ZubWF0Y2ggPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2VkaXRvcmNvbmZpZy9zcmMvbGliL2ZubWF0Y2guanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIHZhciBwbGF0Zm9ybSA9IHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiID8gcHJvY2Vzcy5wbGF0Zm9ybSA6IFwid2luMzJcIjtcbiAgICBpZiAobW9kdWxlMilcbiAgICAgIG1vZHVsZTIuZXhwb3J0cyA9IG1pbmltYXRjaDtcbiAgICBlbHNlXG4gICAgICBleHBvcnRzMi5taW5pbWF0Y2ggPSBtaW5pbWF0Y2g7XG4gICAgbWluaW1hdGNoLk1pbmltYXRjaCA9IE1pbmltYXRjaDtcbiAgICB2YXIgTFJVID0gcmVxdWlyZV9scnVfY2FjaGUoKTtcbiAgICB2YXIgY2FjaGUgPSBtaW5pbWF0Y2guY2FjaGUgPSBuZXcgTFJVKHtcbiAgICAgIG1heDogMTAwXG4gICAgfSk7XG4gICAgdmFyIEdMT0JTVEFSID0gbWluaW1hdGNoLkdMT0JTVEFSID0gTWluaW1hdGNoLkdMT0JTVEFSID0ge307XG4gICAgdmFyIHNpZ211bmQgPSByZXF1aXJlX3NpZ211bmQoKTtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciBxbWFyayA9IFwiW14vXVwiO1xuICAgIHZhciBzdGFyID0gcW1hcmsgKyBcIio/XCI7XG4gICAgdmFyIHR3b1N0YXJEb3QgPSBcIig/Oig/ISg/OlxcXFwvfF4pKD86XFxcXC57MSwyfSkoJHxcXFxcLykpLikqP1wiO1xuICAgIHZhciB0d29TdGFyTm9Eb3QgPSBcIig/Oig/ISg/OlxcXFwvfF4pXFxcXC4pLikqP1wiO1xuICAgIHZhciByZVNwZWNpYWxzID0gY2hhclNldChcIigpLip7fSs/W11eJFxcXFwhXCIpO1xuICAgIGZ1bmN0aW9uIGNoYXJTZXQocykge1xuICAgICAgcmV0dXJuIHMuc3BsaXQoXCJcIikucmVkdWNlKGZ1bmN0aW9uKHNldCwgYykge1xuICAgICAgICBzZXRbY10gPSB0cnVlO1xuICAgICAgICByZXR1cm4gc2V0O1xuICAgICAgfSwge30pO1xuICAgIH1cbiAgICB2YXIgc2xhc2hTcGxpdCA9IC9cXC8rLztcbiAgICBtaW5pbWF0Y2gubW9ua2V5UGF0Y2ggPSBtb25rZXlQYXRjaDtcbiAgICBmdW5jdGlvbiBtb25rZXlQYXRjaCgpIHtcbiAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCBcIm1hdGNoXCIpO1xuICAgICAgdmFyIG9yaWcgPSBkZXNjLnZhbHVlO1xuICAgICAgZGVzYy52YWx1ZSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBNaW5pbWF0Y2gpXG4gICAgICAgICAgcmV0dXJuIHAubWF0Y2godGhpcyk7XG4gICAgICAgIHJldHVybiBvcmlnLmNhbGwodGhpcywgcCk7XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsIGRlc2MpO1xuICAgIH1cbiAgICBtaW5pbWF0Y2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGZ1bmN0aW9uIGZpbHRlcihwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihwLCBpLCBsaXN0KSB7XG4gICAgICAgIHJldHVybiBtaW5pbWF0Y2gocCwgcGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBleHQoYSwgYikge1xuICAgICAgYSA9IGEgfHwge307XG4gICAgICBiID0gYiB8fCB7fTtcbiAgICAgIHZhciB0ID0ge307XG4gICAgICBPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgICAgdFtrXSA9IGJba107XG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgICB0W2tdID0gYVtrXTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuICAgIG1pbmltYXRjaC5kZWZhdWx0cyA9IGZ1bmN0aW9uKGRlZikge1xuICAgICAgaWYgKCFkZWYgfHwgIU9iamVjdC5rZXlzKGRlZikubGVuZ3RoKVxuICAgICAgICByZXR1cm4gbWluaW1hdGNoO1xuICAgICAgdmFyIG9yaWcgPSBtaW5pbWF0Y2g7XG4gICAgICB2YXIgbSA9IGZ1bmN0aW9uIG1pbmltYXRjaDIocCwgcGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gb3JpZy5taW5pbWF0Y2gocCwgcGF0dGVybiwgZXh0KGRlZiwgb3B0aW9ucykpO1xuICAgICAgfTtcbiAgICAgIG0uTWluaW1hdGNoID0gZnVuY3Rpb24gTWluaW1hdGNoMihwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgb3JpZy5NaW5pbWF0Y2gocGF0dGVybiwgZXh0KGRlZiwgb3B0aW9ucykpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBtO1xuICAgIH07XG4gICAgTWluaW1hdGNoLmRlZmF1bHRzID0gZnVuY3Rpb24oZGVmKSB7XG4gICAgICBpZiAoIWRlZiB8fCAhT2JqZWN0LmtleXMoZGVmKS5sZW5ndGgpXG4gICAgICAgIHJldHVybiBNaW5pbWF0Y2g7XG4gICAgICByZXR1cm4gbWluaW1hdGNoLmRlZmF1bHRzKGRlZikuTWluaW1hdGNoO1xuICAgIH07XG4gICAgZnVuY3Rpb24gbWluaW1hdGNoKHAsIHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICAgIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiZ2xvYiBwYXR0ZXJuIHN0cmluZyByZXF1aXJlZFwiKTtcbiAgICAgIH1cbiAgICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgaWYgKCFvcHRpb25zLm5vY29tbWVudCAmJiBwYXR0ZXJuLmNoYXJBdCgwKSA9PT0gXCIjXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHBhdHRlcm4udHJpbSgpID09PSBcIlwiKVxuICAgICAgICByZXR1cm4gcCA9PT0gXCJcIjtcbiAgICAgIHJldHVybiBuZXcgTWluaW1hdGNoKHBhdHRlcm4sIG9wdGlvbnMpLm1hdGNoKHApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBNaW5pbWF0Y2gocGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE1pbmltYXRjaCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNaW5pbWF0Y2gocGF0dGVybiwgb3B0aW9ucywgY2FjaGUpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJnbG9iIHBhdHRlcm4gc3RyaW5nIHJlcXVpcmVkXCIpO1xuICAgICAgfVxuICAgICAgaWYgKCFvcHRpb25zKVxuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICBpZiAocGxhdGZvcm0gPT09IFwid2luMzJcIikge1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5zcGxpdChcIlxcXFxcIikuam9pbihcIi9cIik7XG4gICAgICB9XG4gICAgICB2YXIgY2FjaGVLZXkgPSBwYXR0ZXJuICsgXCJcXG5cIiArIHNpZ211bmQob3B0aW9ucyk7XG4gICAgICB2YXIgY2FjaGVkID0gbWluaW1hdGNoLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICBpZiAoY2FjaGVkKVxuICAgICAgICByZXR1cm4gY2FjaGVkO1xuICAgICAgbWluaW1hdGNoLmNhY2hlLnNldChjYWNoZUtleSwgdGhpcyk7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgdGhpcy5zZXQgPSBbXTtcbiAgICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm47XG4gICAgICB0aGlzLnJlZ2V4cCA9IG51bGw7XG4gICAgICB0aGlzLm5lZ2F0ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jb21tZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLmVtcHR5ID0gZmFsc2U7XG4gICAgICB0aGlzLm1ha2UoKTtcbiAgICB9XG4gICAgTWluaW1hdGNoLnByb3RvdHlwZS5tYWtlID0gbWFrZTtcbiAgICBmdW5jdGlvbiBtYWtlKCkge1xuICAgICAgaWYgKHRoaXMuX21hZGUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHZhciBwYXR0ZXJuID0gdGhpcy5wYXR0ZXJuO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICBpZiAoIW9wdGlvbnMubm9jb21tZW50ICYmIHBhdHRlcm4uY2hhckF0KDApID09PSBcIiNcIikge1xuICAgICAgICB0aGlzLmNvbW1lbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXBhdHRlcm4pIHtcbiAgICAgICAgdGhpcy5lbXB0eSA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFyc2VOZWdhdGUoKTtcbiAgICAgIHZhciBzZXQgPSB0aGlzLmdsb2JTZXQgPSB0aGlzLmJyYWNlRXhwYW5kKCk7XG4gICAgICBpZiAob3B0aW9ucy5kZWJ1ZylcbiAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLnBhdHRlcm4sIHNldCk7XG4gICAgICBzZXQgPSB0aGlzLmdsb2JQYXJ0cyA9IHNldC5tYXAoZnVuY3Rpb24ocykge1xuICAgICAgICByZXR1cm4gcy5zcGxpdChzbGFzaFNwbGl0KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICAgIGNvbnNvbGUuZXJyb3IodGhpcy5wYXR0ZXJuLCBzZXQpO1xuICAgICAgc2V0ID0gc2V0Lm1hcChmdW5jdGlvbihzLCBzaSwgc2V0Mikge1xuICAgICAgICByZXR1cm4gcy5tYXAodGhpcy5wYXJzZSwgdGhpcyk7XG4gICAgICB9LCB0aGlzKTtcbiAgICAgIGlmIChvcHRpb25zLmRlYnVnKVxuICAgICAgICBjb25zb2xlLmVycm9yKHRoaXMucGF0dGVybiwgc2V0KTtcbiAgICAgIHNldCA9IHNldC5maWx0ZXIoZnVuY3Rpb24ocykge1xuICAgICAgICByZXR1cm4gcy5pbmRleE9mKGZhbHNlKSA9PT0gLTE7XG4gICAgICB9KTtcbiAgICAgIGlmIChvcHRpb25zLmRlYnVnKVxuICAgICAgICBjb25zb2xlLmVycm9yKHRoaXMucGF0dGVybiwgc2V0KTtcbiAgICAgIHRoaXMuc2V0ID0gc2V0O1xuICAgIH1cbiAgICBNaW5pbWF0Y2gucHJvdG90eXBlLnBhcnNlTmVnYXRlID0gcGFyc2VOZWdhdGU7XG4gICAgZnVuY3Rpb24gcGFyc2VOZWdhdGUoKSB7XG4gICAgICB2YXIgcGF0dGVybiA9IHRoaXMucGF0dGVybiwgbmVnYXRlID0gZmFsc2UsIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsIG5lZ2F0ZU9mZnNldCA9IDA7XG4gICAgICBpZiAob3B0aW9ucy5ub25lZ2F0ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXR0ZXJuLmxlbmd0aDsgaSA8IGwgJiYgcGF0dGVybi5jaGFyQXQoaSkgPT09IFwiIVwiOyBpKyspIHtcbiAgICAgICAgbmVnYXRlID0gIW5lZ2F0ZTtcbiAgICAgICAgbmVnYXRlT2Zmc2V0Kys7XG4gICAgICB9XG4gICAgICBpZiAobmVnYXRlT2Zmc2V0KVxuICAgICAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuLnN1YnN0cihuZWdhdGVPZmZzZXQpO1xuICAgICAgdGhpcy5uZWdhdGUgPSBuZWdhdGU7XG4gICAgfVxuICAgIG1pbmltYXRjaC5icmFjZUV4cGFuZCA9IGZ1bmN0aW9uKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgTWluaW1hdGNoKHBhdHRlcm4sIG9wdGlvbnMpLmJyYWNlRXhwYW5kKCk7XG4gICAgfTtcbiAgICBNaW5pbWF0Y2gucHJvdG90eXBlLmJyYWNlRXhwYW5kID0gYnJhY2VFeHBhbmQ7XG4gICAgZnVuY3Rpb24gYnJhY2VFeHBhbmQocGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgdGhpcy5vcHRpb25zO1xuICAgICAgcGF0dGVybiA9IHR5cGVvZiBwYXR0ZXJuID09PSBcInVuZGVmaW5lZFwiID8gdGhpcy5wYXR0ZXJuIDogcGF0dGVybjtcbiAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmRlZmluZWQgcGF0dGVyblwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLm5vYnJhY2UgfHwgIXBhdHRlcm4ubWF0Y2goL1xcey4qXFx9LykpIHtcbiAgICAgICAgcmV0dXJuIFtwYXR0ZXJuXTtcbiAgICAgIH1cbiAgICAgIHZhciBlc2NhcGluZyA9IGZhbHNlO1xuICAgICAgaWYgKHBhdHRlcm4uY2hhckF0KDApICE9PSBcIntcIikge1xuICAgICAgICB2YXIgcHJlZml4ID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXR0ZXJuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIHZhciBjID0gcGF0dGVybi5jaGFyQXQoaSk7XG4gICAgICAgICAgaWYgKGMgPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICBlc2NhcGluZyA9ICFlc2NhcGluZztcbiAgICAgICAgICB9IGVsc2UgaWYgKGMgPT09IFwie1wiICYmICFlc2NhcGluZykge1xuICAgICAgICAgICAgcHJlZml4ID0gcGF0dGVybi5zdWJzdHIoMCwgaSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZWZpeCA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBbcGF0dGVybl07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhaWwgPSBicmFjZUV4cGFuZChwYXR0ZXJuLnN1YnN0cihpKSwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB0YWlsLm1hcChmdW5jdGlvbih0KSB7XG4gICAgICAgICAgcmV0dXJuIHByZWZpeCArIHQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdmFyIG51bXNldCA9IHBhdHRlcm4ubWF0Y2goL15cXHsoLT9bMC05XSspXFwuXFwuKC0/WzAtOV0rKVxcfS8pO1xuICAgICAgaWYgKG51bXNldCkge1xuICAgICAgICB2YXIgc3VmID0gYnJhY2VFeHBhbmQocGF0dGVybi5zdWJzdHIobnVtc2V0WzBdLmxlbmd0aCksIG9wdGlvbnMpLCBzdGFydCA9ICtudW1zZXRbMV0sIGVuZCA9ICtudW1zZXRbMl0sIGluYyA9IHN0YXJ0ID4gZW5kID8gLTEgOiAxLCBzZXQgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpICE9IGVuZCArIGluYzsgaSArPSBpbmMpIHtcbiAgICAgICAgICBmb3IgKHZhciBpaSA9IDAsIGxsID0gc3VmLmxlbmd0aDsgaWkgPCBsbDsgaWkrKykge1xuICAgICAgICAgICAgc2V0LnB1c2goaSArIHN1ZltpaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0O1xuICAgICAgfVxuICAgICAgdmFyIGkgPSAxLCBkZXB0aCA9IDEsIHNldCA9IFtdLCBtZW1iZXIgPSBcIlwiLCBzYXdFbmQgPSBmYWxzZSwgZXNjYXBpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bmN0aW9uIGFkZE1lbWJlcigpIHtcbiAgICAgICAgc2V0LnB1c2gobWVtYmVyKTtcbiAgICAgICAgbWVtYmVyID0gXCJcIjtcbiAgICAgIH1cbiAgICAgIEZPUjpcbiAgICAgICAgZm9yIChpID0gMSwgbCA9IHBhdHRlcm4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGMgPSBwYXR0ZXJuLmNoYXJBdChpKTtcbiAgICAgICAgICBpZiAoZXNjYXBpbmcpIHtcbiAgICAgICAgICAgIGVzY2FwaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBtZW1iZXIgKz0gXCJcXFxcXCIgKyBjO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIlxcXFxcIjpcbiAgICAgICAgICAgICAgICBlc2NhcGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgXCJ7XCI6XG4gICAgICAgICAgICAgICAgZGVwdGgrKztcbiAgICAgICAgICAgICAgICBtZW1iZXIgKz0gXCJ7XCI7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgXCJ9XCI6XG4gICAgICAgICAgICAgICAgZGVwdGgtLTtcbiAgICAgICAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIGFkZE1lbWJlcigpO1xuICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgYnJlYWsgRk9SO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZW1iZXIgKz0gYztcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBcIixcIjpcbiAgICAgICAgICAgICAgICBpZiAoZGVwdGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgIGFkZE1lbWJlcigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZW1iZXIgKz0gYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbWVtYmVyICs9IGM7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBpZiAoZGVwdGggIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGJyYWNlRXhwYW5kKFwiXFxcXFwiICsgcGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICB2YXIgc3VmID0gYnJhY2VFeHBhbmQocGF0dGVybi5zdWJzdHIoaSksIG9wdGlvbnMpO1xuICAgICAgdmFyIGFkZEJyYWNlcyA9IHNldC5sZW5ndGggPT09IDE7XG4gICAgICBzZXQgPSBzZXQubWFwKGZ1bmN0aW9uKHApIHtcbiAgICAgICAgcmV0dXJuIGJyYWNlRXhwYW5kKHAsIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgICBzZXQgPSBzZXQucmVkdWNlKGZ1bmN0aW9uKGwyLCByKSB7XG4gICAgICAgIHJldHVybiBsMi5jb25jYXQocik7XG4gICAgICB9KTtcbiAgICAgIGlmIChhZGRCcmFjZXMpIHtcbiAgICAgICAgc2V0ID0gc2V0Lm1hcChmdW5jdGlvbihzKSB7XG4gICAgICAgICAgcmV0dXJuIFwie1wiICsgcyArIFwifVwiO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gc2V0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBpaSA9IDAsIGxsID0gc3VmLmxlbmd0aDsgaWkgPCBsbDsgaWkrKykge1xuICAgICAgICAgIHJldC5wdXNoKHNldFtpXSArIHN1ZltpaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBNaW5pbWF0Y2gucHJvdG90eXBlLnBhcnNlID0gcGFyc2U7XG4gICAgdmFyIFNVQlBBUlNFID0ge307XG4gICAgZnVuY3Rpb24gcGFyc2UocGF0dGVybiwgaXNTdWIpIHtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgaWYgKCFvcHRpb25zLm5vZ2xvYnN0YXIgJiYgcGF0dGVybiA9PT0gXCIqKlwiKVxuICAgICAgICByZXR1cm4gR0xPQlNUQVI7XG4gICAgICBpZiAocGF0dGVybiA9PT0gXCJcIilcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB2YXIgcmUgPSBcIlwiLCBoYXNNYWdpYyA9ICEhb3B0aW9ucy5ub2Nhc2UsIGVzY2FwaW5nID0gZmFsc2UsIHBhdHRlcm5MaXN0U3RhY2sgPSBbXSwgcGxUeXBlLCBzdGF0ZUNoYXIsIGluQ2xhc3MgPSBmYWxzZSwgcmVDbGFzc1N0YXJ0ID0gLTEsIGNsYXNzU3RhcnQgPSAtMSwgcGF0dGVyblN0YXJ0ID0gcGF0dGVybi5jaGFyQXQoMCkgPT09IFwiLlwiID8gXCJcIiA6IG9wdGlvbnMuZG90ID8gXCIoPyEoPzpefFxcXFwvKVxcXFwuezEsMn0oPzokfFxcXFwvKSlcIiA6IFwiKD8hXFxcXC4pXCI7XG4gICAgICBmdW5jdGlvbiBjbGVhclN0YXRlQ2hhcigpIHtcbiAgICAgICAgaWYgKHN0YXRlQ2hhcikge1xuICAgICAgICAgIHN3aXRjaCAoc3RhdGVDaGFyKSB7XG4gICAgICAgICAgICBjYXNlIFwiKlwiOlxuICAgICAgICAgICAgICByZSArPSBzdGFyO1xuICAgICAgICAgICAgICBoYXNNYWdpYyA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIj9cIjpcbiAgICAgICAgICAgICAgcmUgKz0gcW1hcms7XG4gICAgICAgICAgICAgIGhhc01hZ2ljID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZSArPSBcIlxcXFxcIiArIHN0YXRlQ2hhcjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXRlQ2hhciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gcGF0dGVybi5sZW5ndGgsIGM7IGkgPCBsZW4gJiYgKGMgPSBwYXR0ZXJuLmNoYXJBdChpKSk7IGkrKykge1xuICAgICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCIlc1x0JXMgJXMgJWpcIiwgcGF0dGVybiwgaSwgcmUsIGMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlc2NhcGluZyAmJiByZVNwZWNpYWxzW2NdKSB7XG4gICAgICAgICAgcmUgKz0gXCJcXFxcXCIgKyBjO1xuICAgICAgICAgIGVzY2FwaW5nID0gZmFsc2U7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgU1dJVENIOlxuICAgICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgICAgY2FzZSBcIi9cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSBcIlxcXFxcIjpcbiAgICAgICAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKTtcbiAgICAgICAgICAgICAgZXNjYXBpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgXCI/XCI6XG4gICAgICAgICAgICBjYXNlIFwiKlwiOlxuICAgICAgICAgICAgY2FzZSBcIitcIjpcbiAgICAgICAgICAgIGNhc2UgXCJAXCI6XG4gICAgICAgICAgICBjYXNlIFwiIVwiOlxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCIlc1x0JXMgJXMgJWogPC0tIHN0YXRlQ2hhclwiLCBwYXR0ZXJuLCBpLCByZSwgYyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGluQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCIhXCIgJiYgaSA9PT0gY2xhc3NTdGFydCArIDEpXG4gICAgICAgICAgICAgICAgICBjID0gXCJeXCI7XG4gICAgICAgICAgICAgICAgcmUgKz0gYztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjbGVhclN0YXRlQ2hhcigpO1xuICAgICAgICAgICAgICBzdGF0ZUNoYXIgPSBjO1xuICAgICAgICAgICAgICBpZiAob3B0aW9ucy5ub2V4dClcbiAgICAgICAgICAgICAgICBjbGVhclN0YXRlQ2hhcigpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgXCIoXCI6XG4gICAgICAgICAgICAgIGlmIChpbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgcmUgKz0gXCIoXCI7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFzdGF0ZUNoYXIpIHtcbiAgICAgICAgICAgICAgICByZSArPSBcIlxcXFwoXCI7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGxUeXBlID0gc3RhdGVDaGFyO1xuICAgICAgICAgICAgICBwYXR0ZXJuTGlzdFN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IHBsVHlwZSxcbiAgICAgICAgICAgICAgICBzdGFydDogaSAtIDEsXG4gICAgICAgICAgICAgICAgcmVTdGFydDogcmUubGVuZ3RoXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZSArPSBzdGF0ZUNoYXIgPT09IFwiIVwiID8gXCIoPzooPyFcIiA6IFwiKD86XCI7XG4gICAgICAgICAgICAgIHN0YXRlQ2hhciA9IGZhbHNlO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgXCIpXCI6XG4gICAgICAgICAgICAgIGlmIChpbkNsYXNzIHx8ICFwYXR0ZXJuTGlzdFN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlICs9IFwiXFxcXClcIjtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBoYXNNYWdpYyA9IHRydWU7XG4gICAgICAgICAgICAgIHJlICs9IFwiKVwiO1xuICAgICAgICAgICAgICBwbFR5cGUgPSBwYXR0ZXJuTGlzdFN0YWNrLnBvcCgpLnR5cGU7XG4gICAgICAgICAgICAgIHN3aXRjaCAocGxUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcIiFcIjpcbiAgICAgICAgICAgICAgICAgIHJlICs9IFwiW14vXSo/KVwiO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIj9cIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiK1wiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCIqXCI6XG4gICAgICAgICAgICAgICAgICByZSArPSBwbFR5cGU7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkBcIjpcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSBcInxcIjpcbiAgICAgICAgICAgICAgaWYgKGluQ2xhc3MgfHwgIXBhdHRlcm5MaXN0U3RhY2subGVuZ3RoIHx8IGVzY2FwaW5nKSB7XG4gICAgICAgICAgICAgICAgcmUgKz0gXCJcXFxcfFwiO1xuICAgICAgICAgICAgICAgIGVzY2FwaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmUgKz0gXCJ8XCI7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSBcIltcIjpcbiAgICAgICAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKTtcbiAgICAgICAgICAgICAgaWYgKGluQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICByZSArPSBcIlxcXFxcIiArIGM7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5DbGFzcyA9IHRydWU7XG4gICAgICAgICAgICAgIGNsYXNzU3RhcnQgPSBpO1xuICAgICAgICAgICAgICByZUNsYXNzU3RhcnQgPSByZS5sZW5ndGg7XG4gICAgICAgICAgICAgIHJlICs9IGM7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSBcIl1cIjpcbiAgICAgICAgICAgICAgaWYgKGkgPT09IGNsYXNzU3RhcnQgKyAxIHx8ICFpbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgcmUgKz0gXCJcXFxcXCIgKyBjO1xuICAgICAgICAgICAgICAgIGVzY2FwaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaGFzTWFnaWMgPSB0cnVlO1xuICAgICAgICAgICAgICBpbkNsYXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJlICs9IGM7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY2xlYXJTdGF0ZUNoYXIoKTtcbiAgICAgICAgICAgICAgaWYgKGVzY2FwaW5nKSB7XG4gICAgICAgICAgICAgICAgZXNjYXBpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZVNwZWNpYWxzW2NdICYmICEoYyA9PT0gXCJeXCIgJiYgaW5DbGFzcykpIHtcbiAgICAgICAgICAgICAgICByZSArPSBcIlxcXFxcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZSArPSBjO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpbkNsYXNzKSB7XG4gICAgICAgIHZhciBjcyA9IHBhdHRlcm4uc3Vic3RyKGNsYXNzU3RhcnQgKyAxKSwgc3AgPSB0aGlzLnBhcnNlKGNzLCBTVUJQQVJTRSk7XG4gICAgICAgIHJlID0gcmUuc3Vic3RyKDAsIHJlQ2xhc3NTdGFydCkgKyBcIlxcXFxbXCIgKyBzcFswXTtcbiAgICAgICAgaGFzTWFnaWMgPSBoYXNNYWdpYyB8fCBzcFsxXTtcbiAgICAgIH1cbiAgICAgIHZhciBwbDtcbiAgICAgIHdoaWxlIChwbCA9IHBhdHRlcm5MaXN0U3RhY2sucG9wKCkpIHtcbiAgICAgICAgdmFyIHRhaWwgPSByZS5zbGljZShwbC5yZVN0YXJ0ICsgMyk7XG4gICAgICAgIHRhaWwgPSB0YWlsLnJlcGxhY2UoLygoPzpcXFxcezJ9KSopKFxcXFw/KVxcfC9nLCBmdW5jdGlvbihfLCAkMSwgJDIpIHtcbiAgICAgICAgICBpZiAoISQyKSB7XG4gICAgICAgICAgICAkMiA9IFwiXFxcXFwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gJDEgKyAkMSArICQyICsgXCJ8XCI7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdCA9IHBsLnR5cGUgPT09IFwiKlwiID8gc3RhciA6IHBsLnR5cGUgPT09IFwiP1wiID8gcW1hcmsgOiBcIlxcXFxcIiArIHBsLnR5cGU7XG4gICAgICAgIGhhc01hZ2ljID0gdHJ1ZTtcbiAgICAgICAgcmUgPSByZS5zbGljZSgwLCBwbC5yZVN0YXJ0KSArIHQgKyBcIlxcXFwoXCIgKyB0YWlsO1xuICAgICAgfVxuICAgICAgY2xlYXJTdGF0ZUNoYXIoKTtcbiAgICAgIGlmIChlc2NhcGluZykge1xuICAgICAgICByZSArPSBcIlxcXFxcXFxcXCI7XG4gICAgICB9XG4gICAgICB2YXIgYWRkUGF0dGVyblN0YXJ0ID0gZmFsc2U7XG4gICAgICBzd2l0Y2ggKHJlLmNoYXJBdCgwKSkge1xuICAgICAgICBjYXNlIFwiLlwiOlxuICAgICAgICBjYXNlIFwiW1wiOlxuICAgICAgICBjYXNlIFwiKFwiOlxuICAgICAgICAgIGFkZFBhdHRlcm5TdGFydCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAocmUgIT09IFwiXCIgJiYgaGFzTWFnaWMpXG4gICAgICAgIHJlID0gXCIoPz0uKVwiICsgcmU7XG4gICAgICBpZiAoYWRkUGF0dGVyblN0YXJ0KVxuICAgICAgICByZSA9IHBhdHRlcm5TdGFydCArIHJlO1xuICAgICAgaWYgKGlzU3ViID09PSBTVUJQQVJTRSkge1xuICAgICAgICByZXR1cm4gW3JlLCBoYXNNYWdpY107XG4gICAgICB9XG4gICAgICBpZiAoIWhhc01hZ2ljKSB7XG4gICAgICAgIHJldHVybiBnbG9iVW5lc2NhcGUocGF0dGVybik7XG4gICAgICB9XG4gICAgICB2YXIgZmxhZ3MgPSBvcHRpb25zLm5vY2FzZSA/IFwiaVwiIDogXCJcIiwgcmVnRXhwID0gbmV3IFJlZ0V4cChcIl5cIiArIHJlICsgXCIkXCIsIGZsYWdzKTtcbiAgICAgIHJlZ0V4cC5fZ2xvYiA9IHBhdHRlcm47XG4gICAgICByZWdFeHAuX3NyYyA9IHJlO1xuICAgICAgcmV0dXJuIHJlZ0V4cDtcbiAgICB9XG4gICAgbWluaW1hdGNoLm1ha2VSZSA9IGZ1bmN0aW9uKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgTWluaW1hdGNoKHBhdHRlcm4sIG9wdGlvbnMgfHwge30pLm1ha2VSZSgpO1xuICAgIH07XG4gICAgTWluaW1hdGNoLnByb3RvdHlwZS5tYWtlUmUgPSBtYWtlUmU7XG4gICAgZnVuY3Rpb24gbWFrZVJlKCkge1xuICAgICAgaWYgKHRoaXMucmVnZXhwIHx8IHRoaXMucmVnZXhwID09PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnZXhwO1xuICAgICAgdmFyIHNldCA9IHRoaXMuc2V0O1xuICAgICAgaWYgKCFzZXQubGVuZ3RoKVxuICAgICAgICByZXR1cm4gdGhpcy5yZWdleHAgPSBmYWxzZTtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgdmFyIHR3b1N0YXIgPSBvcHRpb25zLm5vZ2xvYnN0YXIgPyBzdGFyIDogb3B0aW9ucy5kb3QgPyB0d29TdGFyRG90IDogdHdvU3Rhck5vRG90LCBmbGFncyA9IG9wdGlvbnMubm9jYXNlID8gXCJpXCIgOiBcIlwiO1xuICAgICAgdmFyIHJlID0gc2V0Lm1hcChmdW5jdGlvbihwYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiBwYXR0ZXJuLm1hcChmdW5jdGlvbihwKSB7XG4gICAgICAgICAgcmV0dXJuIHAgPT09IEdMT0JTVEFSID8gdHdvU3RhciA6IHR5cGVvZiBwID09PSBcInN0cmluZ1wiID8gcmVnRXhwRXNjYXBlKHApIDogcC5fc3JjO1xuICAgICAgICB9KS5qb2luKFwiXFxcXC9cIik7XG4gICAgICB9KS5qb2luKFwifFwiKTtcbiAgICAgIHJlID0gXCJeKD86XCIgKyByZSArIFwiKSRcIjtcbiAgICAgIGlmICh0aGlzLm5lZ2F0ZSlcbiAgICAgICAgcmUgPSBcIl4oPyFcIiArIHJlICsgXCIpLiokXCI7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdleHAgPSBuZXcgUmVnRXhwKHJlLCBmbGFncyk7XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdleHAgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgbWluaW1hdGNoLm1hdGNoID0gZnVuY3Rpb24obGlzdCwgcGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgdmFyIG1tID0gbmV3IE1pbmltYXRjaChwYXR0ZXJuLCBvcHRpb25zKTtcbiAgICAgIGxpc3QgPSBsaXN0LmZpbHRlcihmdW5jdGlvbihmKSB7XG4gICAgICAgIHJldHVybiBtbS5tYXRjaChmKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKG9wdGlvbnMubm9udWxsICYmICFsaXN0Lmxlbmd0aCkge1xuICAgICAgICBsaXN0LnB1c2gocGF0dGVybik7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9O1xuICAgIE1pbmltYXRjaC5wcm90b3R5cGUubWF0Y2ggPSBtYXRjaDtcbiAgICBmdW5jdGlvbiBtYXRjaChmLCBwYXJ0aWFsKSB7XG4gICAgICBpZiAodGhpcy5jb21tZW50KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAodGhpcy5lbXB0eSlcbiAgICAgICAgcmV0dXJuIGYgPT09IFwiXCI7XG4gICAgICBpZiAoZiA9PT0gXCIvXCIgJiYgcGFydGlhbClcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIGlmIChwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICAgIGYgPSBmLnNwbGl0KFwiXFxcXFwiKS5qb2luKFwiL1wiKTtcbiAgICAgIH1cbiAgICAgIGYgPSBmLnNwbGl0KHNsYXNoU3BsaXQpO1xuICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLnBhdHRlcm4sIFwic3BsaXRcIiwgZik7XG4gICAgICB9XG4gICAgICB2YXIgc2V0ID0gdGhpcy5zZXQ7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHNldC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdmFyIHBhdHRlcm4gPSBzZXRbaV07XG4gICAgICAgIHZhciBoaXQgPSB0aGlzLm1hdGNoT25lKGYsIHBhdHRlcm4sIHBhcnRpYWwpO1xuICAgICAgICBpZiAoaGl0KSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZmxpcE5lZ2F0ZSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIHJldHVybiAhdGhpcy5uZWdhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmZsaXBOZWdhdGUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZTtcbiAgICB9XG4gICAgTWluaW1hdGNoLnByb3RvdHlwZS5tYXRjaE9uZSA9IGZ1bmN0aW9uKGZpbGUsIHBhdHRlcm4sIHBhcnRpYWwpIHtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIm1hdGNoT25lXCIsIHtcbiAgICAgICAgICBcInRoaXNcIjogdGhpcyxcbiAgICAgICAgICBmaWxlLFxuICAgICAgICAgIHBhdHRlcm5cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5tYXRjaEJhc2UgJiYgcGF0dGVybi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZmlsZSA9IHBhdGguYmFzZW5hbWUoZmlsZS5qb2luKFwiL1wiKSkuc3BsaXQoXCIvXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIm1hdGNoT25lXCIsIGZpbGUubGVuZ3RoLCBwYXR0ZXJuLmxlbmd0aCk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBmaSA9IDAsIHBpID0gMCwgZmwgPSBmaWxlLmxlbmd0aCwgcGwgPSBwYXR0ZXJuLmxlbmd0aDsgZmkgPCBmbCAmJiBwaSA8IHBsOyBmaSsrLCBwaSsrKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIm1hdGNoT25lIGxvb3BcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHAgPSBwYXR0ZXJuW3BpXSwgZiA9IGZpbGVbZmldO1xuICAgICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IocGF0dGVybiwgcCwgZik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAgPT09IGZhbHNlKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHAgPT09IEdMT0JTVEFSKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiR0xPQlNUQVJcIiwgW3BhdHRlcm4sIHAsIGZdKTtcbiAgICAgICAgICB2YXIgZnIgPSBmaSwgcHIgPSBwaSArIDE7XG4gICAgICAgICAgaWYgKHByID09PSBwbCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCIqKiBhdCB0aGUgZW5kXCIpO1xuICAgICAgICAgICAgZm9yICg7IGZpIDwgZmw7IGZpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGZpbGVbZmldID09PSBcIi5cIiB8fCBmaWxlW2ZpXSA9PT0gXCIuLlwiIHx8ICFvcHRpb25zLmRvdCAmJiBmaWxlW2ZpXS5jaGFyQXQoMCkgPT09IFwiLlwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBXSElMRTpcbiAgICAgICAgICAgIHdoaWxlIChmciA8IGZsKSB7XG4gICAgICAgICAgICAgIHZhciBzd2FsbG93ZWUgPSBmaWxlW2ZyXTtcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiXFxuZ2xvYnN0YXIgd2hpbGVcIiwgZmlsZSwgZnIsIHBhdHRlcm4sIHByLCBzd2FsbG93ZWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoT25lKGZpbGUuc2xpY2UoZnIpLCBwYXR0ZXJuLnNsaWNlKHByKSwgcGFydGlhbCkpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kZWJ1ZylcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJnbG9ic3RhciBmb3VuZCBtYXRjaCFcIiwgZnIsIGZsLCBzd2FsbG93ZWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzd2FsbG93ZWUgPT09IFwiLlwiIHx8IHN3YWxsb3dlZSA9PT0gXCIuLlwiIHx8ICFvcHRpb25zLmRvdCAmJiBzd2FsbG93ZWUuY2hhckF0KDApID09PSBcIi5cIikge1xuICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJkb3QgZGV0ZWN0ZWQhXCIsIGZpbGUsIGZyLCBwYXR0ZXJuLCBwcik7XG4gICAgICAgICAgICAgICAgICBicmVhayBXSElMRTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZ2xvYnN0YXIgc3dhbGxvdyBhIHNlZ21lbnQsIGFuZCBjb250aW51ZVwiKTtcbiAgICAgICAgICAgICAgICBmcisrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhcnRpYWwpIHtcbiAgICAgICAgICAgIGlmIChmciA9PT0gZmwpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhpdDtcbiAgICAgICAgaWYgKHR5cGVvZiBwID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMubm9jYXNlKSB7XG4gICAgICAgICAgICBoaXQgPSBmLnRvTG93ZXJDYXNlKCkgPT09IHAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGl0ID0gZiA9PT0gcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJzdHJpbmcgbWF0Y2hcIiwgcCwgZiwgaGl0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGl0ID0gZi5tYXRjaChwKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcInBhdHRlcm4gbWF0Y2hcIiwgcCwgZiwgaGl0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFoaXQpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGZpID09PSBmbCAmJiBwaSA9PT0gcGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGZpID09PSBmbCkge1xuICAgICAgICByZXR1cm4gcGFydGlhbDtcbiAgICAgIH0gZWxzZSBpZiAocGkgPT09IHBsKSB7XG4gICAgICAgIHZhciBlbXB0eUZpbGVFbmQgPSBmaSA9PT0gZmwgLSAxICYmIGZpbGVbZmldID09PSBcIlwiO1xuICAgICAgICByZXR1cm4gZW1wdHlGaWxlRW5kO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwid3RmP1wiKTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdsb2JVbmVzY2FwZShzKSB7XG4gICAgICByZXR1cm4gcy5yZXBsYWNlKC9cXFxcKC4pL2csIFwiJDFcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlZ0V4cEVzY2FwZShzKSB7XG4gICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLVtcXF17fSgpKis/LixcXFxcXiR8I1xcc10vZywgXCJcXFxcJCZcIik7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX2luaSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZWRpdG9yY29uZmlnL3NyYy9saWIvaW5pLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgX19hd2FpdGVyMiA9IGV4cG9ydHMyICYmIGV4cG9ydHMyLl9fYXdhaXRlciB8fCBmdW5jdGlvbih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24ocmVzb2x2ZTIpIHtcbiAgICAgICAgICAgIHJlc29sdmUyKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHZhciBfX2dlbmVyYXRvcjIgPSBleHBvcnRzMiAmJiBleHBvcnRzMi5fX2dlbmVyYXRvciB8fCBmdW5jdGlvbih0aGlzQXJnLCBib2R5KSB7XG4gICAgICB2YXIgXyA9IHtcbiAgICAgICAgbGFiZWw6IDAsXG4gICAgICAgIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmICh0WzBdICYgMSlcbiAgICAgICAgICAgIHRocm93IHRbMV07XG4gICAgICAgICAgcmV0dXJuIHRbMV07XG4gICAgICAgIH0sXG4gICAgICAgIHRyeXM6IFtdLFxuICAgICAgICBvcHM6IFtdXG4gICAgICB9LCBmLCB5LCB0LCBnO1xuICAgICAgcmV0dXJuIGcgPSB7XG4gICAgICAgIG5leHQ6IHZlcmIoMCksXG4gICAgICAgIFwidGhyb3dcIjogdmVyYigxKSxcbiAgICAgICAgXCJyZXR1cm5cIjogdmVyYigyKVxuICAgICAgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9KSwgZztcbiAgICAgIGZ1bmN0aW9uIHZlcmIobikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBzdGVwKFtuLCB2XSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKVxuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXylcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpXG4gICAgICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KVxuICAgICAgICAgICAgICBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICB0ID0gb3A7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICBfLmxhYmVsKys7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcFsxXSxcbiAgICAgICAgICAgICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIF8ubGFiZWwrKztcbiAgICAgICAgICAgICAgICB5ID0gb3BbMV07XG4gICAgICAgICAgICAgICAgb3AgPSBbMF07XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBvcCA9IF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkge1xuICAgICAgICAgICAgICAgICAgXyA9IDA7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCBvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkge1xuICAgICAgICAgICAgICAgICAgXy5sYWJlbCA9IG9wWzFdO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkge1xuICAgICAgICAgICAgICAgICAgXy5sYWJlbCA9IHRbMV07XG4gICAgICAgICAgICAgICAgICB0ID0gb3A7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHtcbiAgICAgICAgICAgICAgICAgIF8ubGFiZWwgPSB0WzJdO1xuICAgICAgICAgICAgICAgICAgXy5vcHMucHVzaChvcCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRbMl0pXG4gICAgICAgICAgICAgICAgICBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBvcCA9IFs2LCBlXTtcbiAgICAgICAgICAgIHkgPSAwO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBmID0gdCA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KVxuICAgICAgICAgIHRocm93IG9wWzFdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLFxuICAgICAgICAgIGRvbmU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBfX2ltcG9ydFN0YXIyID0gZXhwb3J0czIgJiYgZXhwb3J0czIuX19pbXBvcnRTdGFyIHx8IGZ1bmN0aW9uKG1vZCkge1xuICAgICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSlcbiAgICAgICAgcmV0dXJuIG1vZDtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGlmIChtb2QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrIGluIG1vZClcbiAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSlcbiAgICAgICAgICAgIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgZnMgPSBfX2ltcG9ydFN0YXIyKHJlcXVpcmUoXCJmc1wiKSk7XG4gICAgdmFyIHJlZ2V4ID0ge1xuICAgICAgc2VjdGlvbjogL15cXHMqXFxbKChbXiM7XXxcXFxcI3xcXFxcOykrKVxcXVxccyooWyM7XS4qKT8kLyxcbiAgICAgIHBhcmFtOiAvXlxccyooW1xcd1xcLlxcLVxcX10rKVxccypbPTpdXFxzKiguKj8pXFxzKihbIztdLiopPyQvLFxuICAgICAgY29tbWVudDogL15cXHMqWyM7XS4qJC9cbiAgICB9O1xuICAgIGZ1bmN0aW9uIHBhcnNlKGZpbGUpIHtcbiAgICAgIHJldHVybiBfX2F3YWl0ZXIyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yMih0aGlzLCBmdW5jdGlvbihfYSkge1xuICAgICAgICAgIHJldHVybiBbMiwgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICBmcy5yZWFkRmlsZShmaWxlLCBcInV0ZjhcIiwgZnVuY3Rpb24oZXJyLCBkYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmVzb2x2ZShwYXJzZVN0cmluZyhkYXRhKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KV07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnBhcnNlID0gcGFyc2U7XG4gICAgZnVuY3Rpb24gcGFyc2VTeW5jKGZpbGUpIHtcbiAgICAgIHJldHVybiBwYXJzZVN0cmluZyhmcy5yZWFkRmlsZVN5bmMoZmlsZSwgXCJ1dGY4XCIpKTtcbiAgICB9XG4gICAgZXhwb3J0czIucGFyc2VTeW5jID0gcGFyc2VTeW5jO1xuICAgIGZ1bmN0aW9uIHBhcnNlU3RyaW5nKGRhdGEpIHtcbiAgICAgIHZhciBzZWN0aW9uQm9keSA9IHt9O1xuICAgICAgdmFyIHNlY3Rpb25OYW1lID0gbnVsbDtcbiAgICAgIHZhciB2YWx1ZSA9IFtbc2VjdGlvbk5hbWUsIHNlY3Rpb25Cb2R5XV07XG4gICAgICB2YXIgbGluZXMgPSBkYXRhLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pO1xuICAgICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgaWYgKHJlZ2V4LmNvbW1lbnQudGVzdChsaW5lKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVnZXgucGFyYW0udGVzdChsaW5lKSkge1xuICAgICAgICAgIG1hdGNoID0gbGluZS5tYXRjaChyZWdleC5wYXJhbSk7XG4gICAgICAgICAgc2VjdGlvbkJvZHlbbWF0Y2hbMV1dID0gbWF0Y2hbMl07XG4gICAgICAgIH0gZWxzZSBpZiAocmVnZXguc2VjdGlvbi50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgbWF0Y2ggPSBsaW5lLm1hdGNoKHJlZ2V4LnNlY3Rpb24pO1xuICAgICAgICAgIHNlY3Rpb25OYW1lID0gbWF0Y2hbMV07XG4gICAgICAgICAgc2VjdGlvbkJvZHkgPSB7fTtcbiAgICAgICAgICB2YWx1ZS5wdXNoKFtzZWN0aW9uTmFtZSwgc2VjdGlvbkJvZHldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGV4cG9ydHMyLnBhcnNlU3RyaW5nID0gcGFyc2VTdHJpbmc7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcGFja2FnZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZWRpdG9yY29uZmlnL3BhY2thZ2UuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJlZGl0b3Jjb25maWdcIixcbiAgICAgIHZlcnNpb246IFwiMC4xNS4zXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJFZGl0b3JDb25maWcgRmlsZSBMb2NhdG9yIGFuZCBJbnRlcnByZXRlciBmb3IgTm9kZS5qc1wiLFxuICAgICAga2V5d29yZHM6IFtcImVkaXRvcmNvbmZpZ1wiLCBcImNvcmVcIl0sXG4gICAgICBtYWluOiBcInNyYy9pbmRleC5qc1wiLFxuICAgICAgY29udHJpYnV0b3JzOiBbXCJIb25nIFh1ICh0b3BidWcubmV0KVwiLCBcIkplZCBNYW8gKGh0dHBzOi8vZ2l0aHViLmNvbS9qZWRtYW8vKVwiLCBcIlRyZXkgSHVubmVyIChodHRwOi8vdHJleWh1bm5lci5jb20pXCJdLFxuICAgICAgZGlyZWN0b3JpZXM6IHtcbiAgICAgICAgYmluOiBcIi4vYmluXCIsXG4gICAgICAgIGxpYjogXCIuL2xpYlwiXG4gICAgICB9LFxuICAgICAgc2NyaXB0czoge1xuICAgICAgICBjbGVhbjogXCJyaW1yYWYgZGlzdFwiLFxuICAgICAgICBwcmVidWlsZDogXCJucG0gcnVuIGNsZWFuXCIsXG4gICAgICAgIGJ1aWxkOiBcInRzY1wiLFxuICAgICAgICBwcmV0ZXN0OiBcIm5wbSBydW4gbGludCAmJiBucG0gcnVuIGJ1aWxkICYmIG5wbSBydW4gY29weSAmJiBjbWFrZSAuXCIsXG4gICAgICAgIHRlc3Q6IFwiY3Rlc3QgLlwiLFxuICAgICAgICBcInByZXRlc3Q6Y2lcIjogXCJucG0gcnVuIHByZXRlc3RcIixcbiAgICAgICAgXCJ0ZXN0OmNpXCI6IFwiY3Rlc3QgLVZWIC0tb3V0cHV0LW9uLWZhaWx1cmUgLlwiLFxuICAgICAgICBsaW50OiBcIm5wbSBydW4gZWNsaW50ICYmIG5wbSBydW4gdHNsaW50XCIsXG4gICAgICAgIGVjbGludDogJ2VjbGludCBjaGVjayAtLWluZGVudF9zaXplIGlnbm9yZSBcInNyYy8qKlwiJyxcbiAgICAgICAgdHNsaW50OiBcInRzbGludCAtLXByb2plY3QgdHNjb25maWcuanNvbiAtLWV4Y2x1ZGUgcGFja2FnZS5qc29uXCIsXG4gICAgICAgIGNvcHk6IFwiY3B5IC5ucG1pZ25vcmUgTElDRU5TRSBSRUFETUUubWQgQ0hBTkdFTE9HLm1kIGRpc3QgJiYgY3B5IGJpbi8qIGRpc3QvYmluICYmIGNweSBzcmMvbGliL2ZubWF0Y2gqLiogZGlzdC9zcmMvbGliXCIsXG4gICAgICAgIHByZXB1YjogXCJucG0gcnVuIGxpbnQgJiYgbnBtIHJ1biBidWlsZCAmJiBucG0gcnVuIGNvcHlcIixcbiAgICAgICAgcHViOiBcIm5wbSBwdWJsaXNoIC4vZGlzdFwiXG4gICAgICB9LFxuICAgICAgcmVwb3NpdG9yeToge1xuICAgICAgICB0eXBlOiBcImdpdFwiLFxuICAgICAgICB1cmw6IFwiZ2l0Oi8vZ2l0aHViLmNvbS9lZGl0b3Jjb25maWcvZWRpdG9yY29uZmlnLWNvcmUtanMuZ2l0XCJcbiAgICAgIH0sXG4gICAgICBidWdzOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lZGl0b3Jjb25maWcvZWRpdG9yY29uZmlnLWNvcmUtanMvaXNzdWVzXCIsXG4gICAgICBhdXRob3I6IFwiRWRpdG9yQ29uZmlnIFRlYW1cIixcbiAgICAgIGxpY2Vuc2U6IFwiTUlUXCIsXG4gICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgY29tbWFuZGVyOiBcIl4yLjE5LjBcIixcbiAgICAgICAgXCJscnUtY2FjaGVcIjogXCJeNC4xLjVcIixcbiAgICAgICAgc2VtdmVyOiBcIl41LjYuMFwiLFxuICAgICAgICBzaWdtdW5kOiBcIl4xLjAuMVwiXG4gICAgICB9LFxuICAgICAgZGV2RGVwZW5kZW5jaWVzOiB7XG4gICAgICAgIFwiQHR5cGVzL21vY2hhXCI6IFwiXjUuMi42XCIsXG4gICAgICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMTAuMTIuMjlcIixcbiAgICAgICAgXCJAdHlwZXMvc2VtdmVyXCI6IFwiXjUuNS4wXCIsXG4gICAgICAgIFwiY3B5LWNsaVwiOiBcIl4yLjAuMFwiLFxuICAgICAgICBlY2xpbnQ6IFwiXjIuOC4xXCIsXG4gICAgICAgIG1vY2hhOiBcIl41LjIuMFwiLFxuICAgICAgICByaW1yYWY6IFwiXjIuNi4zXCIsXG4gICAgICAgIHNob3VsZDogXCJeMTMuMi4zXCIsXG4gICAgICAgIHRzbGludDogXCJeNS4xMy4xXCIsXG4gICAgICAgIHR5cGVzY3JpcHQ6IFwiXjMuMy4zMzMzXCJcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3NyYzIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2VkaXRvcmNvbmZpZy9zcmMvaW5kZXguanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBfX2F3YWl0ZXIyID0gZXhwb3J0czIgJiYgZXhwb3J0czIuX19hd2FpdGVyIHx8IGZ1bmN0aW9uKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbihyZXNvbHZlMikge1xuICAgICAgICAgICAgcmVzb2x2ZTIocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdmFyIF9fZ2VuZXJhdG9yMiA9IGV4cG9ydHMyICYmIGV4cG9ydHMyLl9fZ2VuZXJhdG9yIHx8IGZ1bmN0aW9uKHRoaXNBcmcsIGJvZHkpIHtcbiAgICAgIHZhciBfID0ge1xuICAgICAgICBsYWJlbDogMCxcbiAgICAgICAgc2VudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKHRbMF0gJiAxKVxuICAgICAgICAgICAgdGhyb3cgdFsxXTtcbiAgICAgICAgICByZXR1cm4gdFsxXTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ5czogW10sXG4gICAgICAgIG9wczogW11cbiAgICAgIH0sIGYsIHksIHQsIGc7XG4gICAgICByZXR1cm4gZyA9IHtcbiAgICAgICAgbmV4dDogdmVyYigwKSxcbiAgICAgICAgXCJ0aHJvd1wiOiB2ZXJiKDEpLFxuICAgICAgICBcInJldHVyblwiOiB2ZXJiKDIpXG4gICAgICB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0pLCBnO1xuICAgICAgZnVuY3Rpb24gdmVyYihuKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHN0ZXAoW24sIHZdKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSlcbiAgICAgICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpXG4gICAgICAgICAgICAgIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIHQgPSBvcDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIF8ubGFiZWwrKztcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IG9wWzFdLFxuICAgICAgICAgICAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgXy5sYWJlbCsrO1xuICAgICAgICAgICAgICAgIHkgPSBvcFsxXTtcbiAgICAgICAgICAgICAgICBvcCA9IFswXTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIG9wID0gXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICAgICAgICBfID0gMDtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSB7XG4gICAgICAgICAgICAgICAgICBfLmxhYmVsID0gb3BbMV07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7XG4gICAgICAgICAgICAgICAgICBfLmxhYmVsID0gdFsxXTtcbiAgICAgICAgICAgICAgICAgIHQgPSBvcDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkge1xuICAgICAgICAgICAgICAgICAgXy5sYWJlbCA9IHRbMl07XG4gICAgICAgICAgICAgICAgICBfLm9wcy5wdXNoKG9wKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodFsyXSlcbiAgICAgICAgICAgICAgICAgIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIG9wID0gWzYsIGVdO1xuICAgICAgICAgICAgeSA9IDA7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGYgPSB0ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpXG4gICAgICAgICAgdGhyb3cgb3BbMV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsXG4gICAgICAgICAgZG9uZTogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIF9faW1wb3J0U3RhcjIgPSBleHBvcnRzMiAmJiBleHBvcnRzMi5fX2ltcG9ydFN0YXIgfHwgZnVuY3Rpb24obW9kKSB7XG4gICAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKVxuICAgICAgICByZXR1cm4gbW9kO1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKG1vZCAhPSBudWxsKSB7XG4gICAgICAgIGZvciAodmFyIGsgaW4gbW9kKVxuICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKVxuICAgICAgICAgICAgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgICAgfVxuICAgICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICB2YXIgX19pbXBvcnREZWZhdWx0MiA9IGV4cG9ydHMyICYmIGV4cG9ydHMyLl9faW1wb3J0RGVmYXVsdCB8fCBmdW5jdGlvbihtb2QpIHtcbiAgICAgIHJldHVybiBtb2QgJiYgbW9kLl9fZXNNb2R1bGUgPyBtb2QgOiB7XG4gICAgICAgIFwiZGVmYXVsdFwiOiBtb2RcbiAgICAgIH07XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBmcyA9IF9faW1wb3J0U3RhcjIocmVxdWlyZShcImZzXCIpKTtcbiAgICB2YXIgcGF0aCA9IF9faW1wb3J0U3RhcjIocmVxdWlyZShcInBhdGhcIikpO1xuICAgIHZhciBzZW12ZXIgPSB7XG4gICAgICBndGU6IHJlcXVpcmVfZ3RlKClcbiAgICB9O1xuICAgIHZhciBmbm1hdGNoXzEgPSBfX2ltcG9ydERlZmF1bHQyKHJlcXVpcmVfZm5tYXRjaCgpKTtcbiAgICB2YXIgaW5pXzEgPSByZXF1aXJlX2luaSgpO1xuICAgIGV4cG9ydHMyLnBhcnNlU3RyaW5nID0gaW5pXzEucGFyc2VTdHJpbmc7XG4gICAgdmFyIHBhY2thZ2VfanNvbl8xID0gX19pbXBvcnREZWZhdWx0MihyZXF1aXJlX3BhY2thZ2UoKSk7XG4gICAgdmFyIGtub3duUHJvcHMgPSB7XG4gICAgICBlbmRfb2ZfbGluZTogdHJ1ZSxcbiAgICAgIGluZGVudF9zdHlsZTogdHJ1ZSxcbiAgICAgIGluZGVudF9zaXplOiB0cnVlLFxuICAgICAgaW5zZXJ0X2ZpbmFsX25ld2xpbmU6IHRydWUsXG4gICAgICB0cmltX3RyYWlsaW5nX3doaXRlc3BhY2U6IHRydWUsXG4gICAgICBjaGFyc2V0OiB0cnVlXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmbm1hdGNoKGZpbGVwYXRoLCBnbG9iKSB7XG4gICAgICB2YXIgbWF0Y2hPcHRpb25zID0ge1xuICAgICAgICBtYXRjaEJhc2U6IHRydWUsXG4gICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgbm9leHQ6IHRydWVcbiAgICAgIH07XG4gICAgICBnbG9iID0gZ2xvYi5yZXBsYWNlKC9cXCpcXCovZywgXCJ7KiwqKi8qKi8qKn1cIik7XG4gICAgICByZXR1cm4gZm5tYXRjaF8xLmRlZmF1bHQoZmlsZXBhdGgsIGdsb2IsIG1hdGNoT3B0aW9ucyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENvbmZpZ0ZpbGVOYW1lcyhmaWxlcGF0aCwgb3B0aW9ucykge1xuICAgICAgdmFyIHBhdGhzID0gW107XG4gICAgICBkbyB7XG4gICAgICAgIGZpbGVwYXRoID0gcGF0aC5kaXJuYW1lKGZpbGVwYXRoKTtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLmpvaW4oZmlsZXBhdGgsIG9wdGlvbnMuY29uZmlnKSk7XG4gICAgICB9IHdoaWxlIChmaWxlcGF0aCAhPT0gb3B0aW9ucy5yb290KTtcbiAgICAgIHJldHVybiBwYXRocztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc01hdGNoZXMobWF0Y2hlcywgdmVyc2lvbjIpIHtcbiAgICAgIGlmIChcImluZGVudF9zdHlsZVwiIGluIG1hdGNoZXMgJiYgbWF0Y2hlcy5pbmRlbnRfc3R5bGUgPT09IFwidGFiXCIgJiYgIShcImluZGVudF9zaXplXCIgaW4gbWF0Y2hlcykgJiYgc2VtdmVyLmd0ZSh2ZXJzaW9uMiwgXCIwLjEwLjBcIikpIHtcbiAgICAgICAgbWF0Y2hlcy5pbmRlbnRfc2l6ZSA9IFwidGFiXCI7XG4gICAgICB9XG4gICAgICBpZiAoXCJpbmRlbnRfc2l6ZVwiIGluIG1hdGNoZXMgJiYgIShcInRhYl93aWR0aFwiIGluIG1hdGNoZXMpICYmIG1hdGNoZXMuaW5kZW50X3NpemUgIT09IFwidGFiXCIpIHtcbiAgICAgICAgbWF0Y2hlcy50YWJfd2lkdGggPSBtYXRjaGVzLmluZGVudF9zaXplO1xuICAgICAgfVxuICAgICAgaWYgKFwiaW5kZW50X3NpemVcIiBpbiBtYXRjaGVzICYmIFwidGFiX3dpZHRoXCIgaW4gbWF0Y2hlcyAmJiBtYXRjaGVzLmluZGVudF9zaXplID09PSBcInRhYlwiKSB7XG4gICAgICAgIG1hdGNoZXMuaW5kZW50X3NpemUgPSBtYXRjaGVzLnRhYl93aWR0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzT3B0aW9ucyhvcHRpb25zLCBmaWxlcGF0aCkge1xuICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb25maWc6IG9wdGlvbnMuY29uZmlnIHx8IFwiLmVkaXRvcmNvbmZpZ1wiLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gfHwgcGFja2FnZV9qc29uXzEuZGVmYXVsdC52ZXJzaW9uLFxuICAgICAgICByb290OiBwYXRoLnJlc29sdmUob3B0aW9ucy5yb290IHx8IHBhdGgucGFyc2UoZmlsZXBhdGgpLnJvb3QpXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBidWlsZEZ1bGxHbG9iKHBhdGhQcmVmaXgsIGdsb2IpIHtcbiAgICAgIHN3aXRjaCAoZ2xvYi5pbmRleE9mKFwiL1wiKSkge1xuICAgICAgICBjYXNlIC0xOlxuICAgICAgICAgIGdsb2IgPSBcIioqL1wiICsgZ2xvYjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGdsb2IgPSBnbG9iLnN1YnN0cmluZygxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRoLmpvaW4ocGF0aFByZWZpeCwgZ2xvYik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGV4dGVuZFByb3BzKHByb3BzLCBvcHRpb25zKSB7XG4gICAgICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gb3B0aW9uc1trZXldO1xuICAgICAgICAgIHZhciBrZXkyID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgdmFyIHZhbHVlMiA9IHZhbHVlO1xuICAgICAgICAgIGlmIChrbm93blByb3BzW2tleTJdKSB7XG4gICAgICAgICAgICB2YWx1ZTIgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUyID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB2YWx1ZTIgPSBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcm9wc1trZXkyXSA9IHZhbHVlMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZUZyb21Db25maWdzKGNvbmZpZ3MsIGZpbGVwYXRoLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzc01hdGNoZXMoY29uZmlncy5yZXZlcnNlKCkucmVkdWNlKGZ1bmN0aW9uKG1hdGNoZXMsIGZpbGUpIHtcbiAgICAgICAgdmFyIHBhdGhQcmVmaXggPSBwYXRoLmRpcm5hbWUoZmlsZS5uYW1lKTtcbiAgICAgICAgZmlsZS5jb250ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHNlY3Rpb24pIHtcbiAgICAgICAgICB2YXIgZ2xvYiA9IHNlY3Rpb25bMF07XG4gICAgICAgICAgdmFyIG9wdGlvbnMyID0gc2VjdGlvblsxXTtcbiAgICAgICAgICBpZiAoIWdsb2IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGZ1bGxHbG9iID0gYnVpbGRGdWxsR2xvYihwYXRoUHJlZml4LCBnbG9iKTtcbiAgICAgICAgICBpZiAoIWZubWF0Y2goZmlsZXBhdGgsIGZ1bGxHbG9iKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXRjaGVzID0gZXh0ZW5kUHJvcHMobWF0Y2hlcywgb3B0aW9uczIpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXM7XG4gICAgICB9LCB7fSksIG9wdGlvbnMudmVyc2lvbik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENvbmZpZ3NGb3JGaWxlcyhmaWxlcykge1xuICAgICAgdmFyIGNvbmZpZ3MgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgaW4gZmlsZXMpIHtcbiAgICAgICAgaWYgKGZpbGVzLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgdmFyIGZpbGUgPSBmaWxlc1tpXTtcbiAgICAgICAgICB2YXIgY29udGVudHMgPSBpbmlfMS5wYXJzZVN0cmluZyhmaWxlLmNvbnRlbnRzKTtcbiAgICAgICAgICBjb25maWdzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgY29udGVudHNcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoKGNvbnRlbnRzWzBdWzFdLnJvb3QgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbmZpZ3M7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlYWRDb25maWdGaWxlcyhmaWxlcGF0aHMpIHtcbiAgICAgIHJldHVybiBfX2F3YWl0ZXIyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yMih0aGlzLCBmdW5jdGlvbihfYSkge1xuICAgICAgICAgIHJldHVybiBbMiwgUHJvbWlzZS5hbGwoZmlsZXBhdGhzLm1hcChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgICAgICAgICBmcy5yZWFkRmlsZShuYW1lLCBcInV0ZjhcIiwgZnVuY3Rpb24oZXJyLCBkYXRhKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgY29udGVudHM6IGVyciA/IFwiXCIgOiBkYXRhXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSkpXTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVhZENvbmZpZ0ZpbGVzU3luYyhmaWxlcGF0aHMpIHtcbiAgICAgIHZhciBmaWxlcyA9IFtdO1xuICAgICAgdmFyIGZpbGU7XG4gICAgICBmaWxlcGF0aHMuZm9yRWFjaChmdW5jdGlvbihmaWxlcGF0aCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZpbGUgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZXBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGZpbGUgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGZpbGVzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGZpbGVwYXRoLFxuICAgICAgICAgIGNvbnRlbnRzOiBmaWxlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmlsZXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9wdHMoZmlsZXBhdGgsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIHJlc29sdmVkRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoZmlsZXBhdGgpO1xuICAgICAgcmV0dXJuIFtyZXNvbHZlZEZpbGVQYXRoLCBwcm9jZXNzT3B0aW9ucyhvcHRpb25zLCByZXNvbHZlZEZpbGVQYXRoKV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlRnJvbUZpbGVzKGZpbGVwYXRoLCBmaWxlcywgb3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gX19hd2FpdGVyMih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfYSwgcmVzb2x2ZWRGaWxlUGF0aCwgcHJvY2Vzc2VkT3B0aW9ucztcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yMih0aGlzLCBmdW5jdGlvbihfYikge1xuICAgICAgICAgIF9hID0gb3B0cyhmaWxlcGF0aCwgb3B0aW9ucyksIHJlc29sdmVkRmlsZVBhdGggPSBfYVswXSwgcHJvY2Vzc2VkT3B0aW9ucyA9IF9hWzFdO1xuICAgICAgICAgIHJldHVybiBbMiwgZmlsZXMudGhlbihnZXRDb25maWdzRm9yRmlsZXMpLnRoZW4oZnVuY3Rpb24oY29uZmlncykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnJvbUNvbmZpZ3MoY29uZmlncywgcmVzb2x2ZWRGaWxlUGF0aCwgcHJvY2Vzc2VkT3B0aW9ucyk7XG4gICAgICAgICAgfSldO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBleHBvcnRzMi5wYXJzZUZyb21GaWxlcyA9IHBhcnNlRnJvbUZpbGVzO1xuICAgIGZ1bmN0aW9uIHBhcnNlRnJvbUZpbGVzU3luYyhmaWxlcGF0aCwgZmlsZXMsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIF9hID0gb3B0cyhmaWxlcGF0aCwgb3B0aW9ucyksIHJlc29sdmVkRmlsZVBhdGggPSBfYVswXSwgcHJvY2Vzc2VkT3B0aW9ucyA9IF9hWzFdO1xuICAgICAgcmV0dXJuIHBhcnNlRnJvbUNvbmZpZ3MoZ2V0Q29uZmlnc0ZvckZpbGVzKGZpbGVzKSwgcmVzb2x2ZWRGaWxlUGF0aCwgcHJvY2Vzc2VkT3B0aW9ucyk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnBhcnNlRnJvbUZpbGVzU3luYyA9IHBhcnNlRnJvbUZpbGVzU3luYztcbiAgICBmdW5jdGlvbiBwYXJzZShfZmlsZXBhdGgsIF9vcHRpb25zKSB7XG4gICAgICBpZiAoX29wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgICBfb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9fYXdhaXRlcjIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgX2EsIHJlc29sdmVkRmlsZVBhdGgsIHByb2Nlc3NlZE9wdGlvbnMsIGZpbGVwYXRocztcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yMih0aGlzLCBmdW5jdGlvbihfYikge1xuICAgICAgICAgIF9hID0gb3B0cyhfZmlsZXBhdGgsIF9vcHRpb25zKSwgcmVzb2x2ZWRGaWxlUGF0aCA9IF9hWzBdLCBwcm9jZXNzZWRPcHRpb25zID0gX2FbMV07XG4gICAgICAgICAgZmlsZXBhdGhzID0gZ2V0Q29uZmlnRmlsZU5hbWVzKHJlc29sdmVkRmlsZVBhdGgsIHByb2Nlc3NlZE9wdGlvbnMpO1xuICAgICAgICAgIHJldHVybiBbMiwgcmVhZENvbmZpZ0ZpbGVzKGZpbGVwYXRocykudGhlbihnZXRDb25maWdzRm9yRmlsZXMpLnRoZW4oZnVuY3Rpb24oY29uZmlncykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnJvbUNvbmZpZ3MoY29uZmlncywgcmVzb2x2ZWRGaWxlUGF0aCwgcHJvY2Vzc2VkT3B0aW9ucyk7XG4gICAgICAgICAgfSldO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBleHBvcnRzMi5wYXJzZSA9IHBhcnNlO1xuICAgIGZ1bmN0aW9uIHBhcnNlU3luYyhfZmlsZXBhdGgsIF9vcHRpb25zKSB7XG4gICAgICBpZiAoX29wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgICBfb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIF9hID0gb3B0cyhfZmlsZXBhdGgsIF9vcHRpb25zKSwgcmVzb2x2ZWRGaWxlUGF0aCA9IF9hWzBdLCBwcm9jZXNzZWRPcHRpb25zID0gX2FbMV07XG4gICAgICB2YXIgZmlsZXBhdGhzID0gZ2V0Q29uZmlnRmlsZU5hbWVzKHJlc29sdmVkRmlsZVBhdGgsIHByb2Nlc3NlZE9wdGlvbnMpO1xuICAgICAgdmFyIGZpbGVzID0gcmVhZENvbmZpZ0ZpbGVzU3luYyhmaWxlcGF0aHMpO1xuICAgICAgcmV0dXJuIHBhcnNlRnJvbUNvbmZpZ3MoZ2V0Q29uZmlnc0ZvckZpbGVzKGZpbGVzKSwgcmVzb2x2ZWRGaWxlUGF0aCwgcHJvY2Vzc2VkT3B0aW9ucyk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnBhcnNlU3luYyA9IHBhcnNlU3luYztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9lZGl0b3Jjb25maWdfdG9fcHJldHRpZXIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2VkaXRvcmNvbmZpZy10by1wcmV0dGllci9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZWRpdG9yQ29uZmlnVG9QcmV0dGllcjtcbiAgICBmdW5jdGlvbiByZW1vdmVVbnNldChlZGl0b3JDb25maWcpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGVkaXRvckNvbmZpZyk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgaWYgKGVkaXRvckNvbmZpZ1trZXldID09PSBcInVuc2V0XCIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRba2V5XSA9IGVkaXRvckNvbmZpZ1trZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZWRpdG9yQ29uZmlnVG9QcmV0dGllcihlZGl0b3JDb25maWcpIHtcbiAgICAgIGlmICghZWRpdG9yQ29uZmlnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZWRpdG9yQ29uZmlnID0gcmVtb3ZlVW5zZXQoZWRpdG9yQ29uZmlnKTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhlZGl0b3JDb25maWcpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKGVkaXRvckNvbmZpZy5pbmRlbnRfc3R5bGUpIHtcbiAgICAgICAgcmVzdWx0LnVzZVRhYnMgPSBlZGl0b3JDb25maWcuaW5kZW50X3N0eWxlID09PSBcInRhYlwiO1xuICAgICAgfVxuICAgICAgaWYgKGVkaXRvckNvbmZpZy5pbmRlbnRfc2l6ZSA9PT0gXCJ0YWJcIikge1xuICAgICAgICByZXN1bHQudXNlVGFicyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LnVzZVRhYnMgJiYgZWRpdG9yQ29uZmlnLnRhYl93aWR0aCkge1xuICAgICAgICByZXN1bHQudGFiV2lkdGggPSBlZGl0b3JDb25maWcudGFiX3dpZHRoO1xuICAgICAgfSBlbHNlIGlmIChlZGl0b3JDb25maWcuaW5kZW50X3N0eWxlID09PSBcInNwYWNlXCIgJiYgZWRpdG9yQ29uZmlnLmluZGVudF9zaXplICYmIGVkaXRvckNvbmZpZy5pbmRlbnRfc2l6ZSAhPT0gXCJ0YWJcIikge1xuICAgICAgICByZXN1bHQudGFiV2lkdGggPSBlZGl0b3JDb25maWcuaW5kZW50X3NpemU7XG4gICAgICB9IGVsc2UgaWYgKGVkaXRvckNvbmZpZy50YWJfd2lkdGggIT09IHZvaWQgMCkge1xuICAgICAgICByZXN1bHQudGFiV2lkdGggPSBlZGl0b3JDb25maWcudGFiX3dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKGVkaXRvckNvbmZpZy5tYXhfbGluZV9sZW5ndGggJiYgZWRpdG9yQ29uZmlnLm1heF9saW5lX2xlbmd0aCAhPT0gXCJvZmZcIikge1xuICAgICAgICByZXN1bHQucHJpbnRXaWR0aCA9IGVkaXRvckNvbmZpZy5tYXhfbGluZV9sZW5ndGg7XG4gICAgICB9XG4gICAgICBpZiAoZWRpdG9yQ29uZmlnLnF1b3RlX3R5cGUgPT09IFwic2luZ2xlXCIpIHtcbiAgICAgICAgcmVzdWx0LnNpbmdsZVF1b3RlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdG9yQ29uZmlnLnF1b3RlX3R5cGUgPT09IFwiZG91YmxlXCIpIHtcbiAgICAgICAgcmVzdWx0LnNpbmdsZVF1b3RlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoW1wiY3JcIiwgXCJjcmxmXCIsIFwibGZcIl0uaW5kZXhPZihlZGl0b3JDb25maWcuZW5kX29mX2xpbmUpICE9PSAtMSkge1xuICAgICAgICByZXN1bHQuZW5kT2ZMaW5lID0gZWRpdG9yQ29uZmlnLmVuZF9vZl9saW5lO1xuICAgICAgfVxuICAgICAgaWYgKGVkaXRvckNvbmZpZy5pbnNlcnRfZmluYWxfbmV3bGluZSA9PT0gZmFsc2UgfHwgZWRpdG9yQ29uZmlnLmluc2VydF9maW5hbF9uZXdsaW5lID09PSB0cnVlKSB7XG4gICAgICAgIHJlc3VsdC5pbnNlcnRGaW5hbE5ld2xpbmUgPSBlZGl0b3JDb25maWcuaW5zZXJ0X2ZpbmFsX25ld2xpbmU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9maW5kX3Byb2plY3Rfcm9vdCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvY29uZmlnL2ZpbmQtcHJvamVjdC1yb290LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICB2YXIgTUFSS0VSUyA9IFtcIi5naXRcIiwgXCIuaGdcIl07XG4gICAgdmFyIG1hcmtlckV4aXN0cyA9IChkaXJlY3RvcnkpID0+IE1BUktFUlMuc29tZSgobWFyaykgPT4gZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCBtYXJrKSkpO1xuICAgIGZ1bmN0aW9uIGZpbmRQcm9qZWN0Um9vdChkaXJlY3RvcnkpIHtcbiAgICAgIHdoaWxlICghbWFya2VyRXhpc3RzKGRpcmVjdG9yeSkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50RGlyZWN0b3J5ID0gcGF0aC5yZXNvbHZlKGRpcmVjdG9yeSwgXCIuLlwiKTtcbiAgICAgICAgaWYgKHBhcmVudERpcmVjdG9yeSA9PT0gZGlyZWN0b3J5KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGlyZWN0b3J5ID0gcGFyZW50RGlyZWN0b3J5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRpcmVjdG9yeTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZmluZFByb2plY3RSb290O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3Jlc29sdmVfY29uZmlnX2VkaXRvcmNvbmZpZyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvY29uZmlnL3Jlc29sdmUtY29uZmlnLWVkaXRvcmNvbmZpZy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICB2YXIgZWRpdG9yY29uZmlnID0gcmVxdWlyZV9zcmMyKCk7XG4gICAgdmFyIGVkaXRvckNvbmZpZ1RvUHJldHRpZXIgPSByZXF1aXJlX2VkaXRvcmNvbmZpZ190b19wcmV0dGllcigpO1xuICAgIHZhciB7XG4gICAgICBkZWZhdWx0OiBtZW0yLFxuICAgICAgbWVtQ2xlYXI6IG1lbUNsZWFyMlxuICAgIH0gPSAoaW5pdF9kaXN0KCksIF9fdG9Db21tb25KUyhkaXN0X2V4cG9ydHMpKTtcbiAgICB2YXIgZmluZFByb2plY3RSb290ID0gcmVxdWlyZV9maW5kX3Byb2plY3Rfcm9vdCgpO1xuICAgIHZhciBqc29uU3RyaW5naWZ5TWVtID0gKGZuKSA9PiBtZW0yKGZuLCB7XG4gICAgICBjYWNoZUtleTogSlNPTi5zdHJpbmdpZnlcbiAgICB9KTtcbiAgICB2YXIgbWF5YmVQYXJzZSA9IChmaWxlUGF0aCwgcGFyc2UpID0+IGZpbGVQYXRoICYmIHBhcnNlKGZpbGVQYXRoLCB7XG4gICAgICByb290OiBmaW5kUHJvamVjdFJvb3QocGF0aC5kaXJuYW1lKHBhdGgucmVzb2x2ZShmaWxlUGF0aCkpKVxuICAgIH0pO1xuICAgIHZhciBlZGl0b3Jjb25maWdBc3luY05vQ2FjaGUgPSBhc3luYyAoZmlsZVBhdGgpID0+IGVkaXRvckNvbmZpZ1RvUHJldHRpZXIoYXdhaXQgbWF5YmVQYXJzZShmaWxlUGF0aCwgZWRpdG9yY29uZmlnLnBhcnNlKSk7XG4gICAgdmFyIGVkaXRvcmNvbmZpZ0FzeW5jV2l0aENhY2hlID0ganNvblN0cmluZ2lmeU1lbShlZGl0b3Jjb25maWdBc3luY05vQ2FjaGUpO1xuICAgIHZhciBlZGl0b3Jjb25maWdTeW5jTm9DYWNoZSA9IChmaWxlUGF0aCkgPT4gZWRpdG9yQ29uZmlnVG9QcmV0dGllcihtYXliZVBhcnNlKGZpbGVQYXRoLCBlZGl0b3Jjb25maWcucGFyc2VTeW5jKSk7XG4gICAgdmFyIGVkaXRvcmNvbmZpZ1N5bmNXaXRoQ2FjaGUgPSBqc29uU3RyaW5naWZ5TWVtKGVkaXRvcmNvbmZpZ1N5bmNOb0NhY2hlKTtcbiAgICBmdW5jdGlvbiBnZXRMb2FkRnVuY3Rpb24ob3B0cykge1xuICAgICAgaWYgKCFvcHRzLmVkaXRvcmNvbmZpZykge1xuICAgICAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLnN5bmMpIHtcbiAgICAgICAgcmV0dXJuIG9wdHMuY2FjaGUgPyBlZGl0b3Jjb25maWdTeW5jV2l0aENhY2hlIDogZWRpdG9yY29uZmlnU3luY05vQ2FjaGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0cy5jYWNoZSA/IGVkaXRvcmNvbmZpZ0FzeW5jV2l0aENhY2hlIDogZWRpdG9yY29uZmlnQXN5bmNOb0NhY2hlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjbGVhckNhY2hlKCkge1xuICAgICAgbWVtQ2xlYXIyKGVkaXRvcmNvbmZpZ1N5bmNXaXRoQ2FjaGUpO1xuICAgICAgbWVtQ2xlYXIyKGVkaXRvcmNvbmZpZ0FzeW5jV2l0aENhY2hlKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgZ2V0TG9hZEZ1bmN0aW9uLFxuICAgICAgY2xlYXJDYWNoZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcmVzb2x2ZV9jb25maWcgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2NvbmZpZy9yZXNvbHZlLWNvbmZpZy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICB2YXIgbWljcm9tYXRjaCA9IHJlcXVpcmVfbWljcm9tYXRjaCgpO1xuICAgIHZhciB0aGlyZFBhcnR5ID0gcmVxdWlyZShcIi4vdGhpcmQtcGFydHkuanNcIik7XG4gICAgdmFyIGxvYWRUb21sID0gcmVxdWlyZV9sb2FkX3RvbWwoKTtcbiAgICB2YXIgbG9hZEpzb241ID0gcmVxdWlyZV9sb2FkX2pzb241KCk7XG4gICAgdmFyIHBhcnRpdGlvbiA9IHJlcXVpcmVfcGFydGl0aW9uKCk7XG4gICAgdmFyIHJlc29sdmUgPSByZXF1aXJlX3Jlc29sdmUyKCk7XG4gICAgdmFyIHtcbiAgICAgIGRlZmF1bHQ6IG1lbTIsXG4gICAgICBtZW1DbGVhcjogbWVtQ2xlYXIyXG4gICAgfSA9IChpbml0X2Rpc3QoKSwgX190b0NvbW1vbkpTKGRpc3RfZXhwb3J0cykpO1xuICAgIHZhciByZXNvbHZlRWRpdG9yQ29uZmlnID0gcmVxdWlyZV9yZXNvbHZlX2NvbmZpZ19lZGl0b3Jjb25maWcoKTtcbiAgICB2YXIgZ2V0RXhwbG9yZXJNZW1vaXplZCA9IG1lbTIoKG9wdHMpID0+IHtcbiAgICAgIGNvbnN0IGNvc21pY29uZmlnID0gdGhpcmRQYXJ0eVtcImNvc21pY29uZmlnXCIgKyAob3B0cy5zeW5jID8gXCJTeW5jXCIgOiBcIlwiKV07XG4gICAgICBjb25zdCBleHBsb3JlciA9IGNvc21pY29uZmlnKFwicHJldHRpZXJcIiwge1xuICAgICAgICBjYWNoZTogb3B0cy5jYWNoZSxcbiAgICAgICAgdHJhbnNmb3JtOiAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuY29uZmlnKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdC5jb25maWcgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKHJlc3VsdC5maWxlcGF0aCk7XG4gICAgICAgICAgICAgIGNvbnN0IG1vZHVsZVBhdGggPSByZXNvbHZlKHJlc3VsdC5jb25maWcsIHtcbiAgICAgICAgICAgICAgICBwYXRoczogW2Rpcl1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJlc3VsdC5jb25maWcgPSByZXF1aXJlKG1vZHVsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQuY29uZmlnICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENvbmZpZyBpcyBvbmx5IGFsbG93ZWQgdG8gYmUgYW4gb2JqZWN0LCBidXQgcmVjZWl2ZWQgJHt0eXBlb2YgcmVzdWx0LmNvbmZpZ30gaW4gXCIke3Jlc3VsdC5maWxlcGF0aH1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC5jb25maWcuJHNjaGVtYTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoUGxhY2VzOiBbXCJwYWNrYWdlLmpzb25cIiwgXCIucHJldHRpZXJyY1wiLCBcIi5wcmV0dGllcnJjLmpzb25cIiwgXCIucHJldHRpZXJyYy55YW1sXCIsIFwiLnByZXR0aWVycmMueW1sXCIsIFwiLnByZXR0aWVycmMuanNvbjVcIiwgXCIucHJldHRpZXJyYy5qc1wiLCBcIi5wcmV0dGllcnJjLmNqc1wiLCBcInByZXR0aWVyLmNvbmZpZy5qc1wiLCBcInByZXR0aWVyLmNvbmZpZy5janNcIiwgXCIucHJldHRpZXJyYy50b21sXCJdLFxuICAgICAgICBsb2FkZXJzOiB7XG4gICAgICAgICAgXCIudG9tbFwiOiBsb2FkVG9tbCxcbiAgICAgICAgICBcIi5qc29uNVwiOiBsb2FkSnNvbjVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhwbG9yZXI7XG4gICAgfSwge1xuICAgICAgY2FjaGVLZXk6IEpTT04uc3RyaW5naWZ5XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZ2V0RXhwbG9yZXIob3B0cykge1xuICAgICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBzeW5jOiBmYWxzZSxcbiAgICAgICAgY2FjaGU6IGZhbHNlXG4gICAgICB9LCBvcHRzKTtcbiAgICAgIHJldHVybiBnZXRFeHBsb3Jlck1lbW9pemVkKG9wdHMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfcmVzb2x2ZUNvbmZpZyhmaWxlUGF0aCwgb3B0cywgc3luYykge1xuICAgICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICB1c2VDYWNoZTogdHJ1ZVxuICAgICAgfSwgb3B0cyk7XG4gICAgICBjb25zdCBsb2FkT3B0cyA9IHtcbiAgICAgICAgY2FjaGU6IEJvb2xlYW4ob3B0cy51c2VDYWNoZSksXG4gICAgICAgIHN5bmM6IEJvb2xlYW4oc3luYyksXG4gICAgICAgIGVkaXRvcmNvbmZpZzogQm9vbGVhbihvcHRzLmVkaXRvcmNvbmZpZylcbiAgICAgIH07XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxvYWQsXG4gICAgICAgIHNlYXJjaFxuICAgICAgfSA9IGdldEV4cGxvcmVyKGxvYWRPcHRzKTtcbiAgICAgIGNvbnN0IGxvYWRFZGl0b3JDb25maWcgPSByZXNvbHZlRWRpdG9yQ29uZmlnLmdldExvYWRGdW5jdGlvbihsb2FkT3B0cyk7XG4gICAgICBjb25zdCBhcnIgPSBbb3B0cy5jb25maWcgPyBsb2FkKG9wdHMuY29uZmlnKSA6IHNlYXJjaChmaWxlUGF0aCksIGxvYWRFZGl0b3JDb25maWcoZmlsZVBhdGgpXTtcbiAgICAgIGNvbnN0IHVud3JhcEFuZE1lcmdlID0gKFtyZXN1bHQsIGVkaXRvckNvbmZpZ3VyZWRdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZWRpdG9yQ29uZmlndXJlZCksIG1lcmdlT3ZlcnJpZGVzKHJlc3VsdCwgZmlsZVBhdGgpKTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb25OYW1lIG9mIFtcInBsdWdpbnNcIiwgXCJwbHVnaW5TZWFyY2hEaXJzXCJdKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVyZ2VkW29wdGlvbk5hbWVdKSkge1xuICAgICAgICAgICAgbWVyZ2VkW29wdGlvbk5hbWVdID0gbWVyZ2VkW29wdGlvbk5hbWVdLm1hcCgodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSA/IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUocmVzdWx0LmZpbGVwYXRoKSwgdmFsdWUpIDogdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc3VsdCAmJiAhZWRpdG9yQ29uZmlndXJlZCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBtZXJnZWQuaW5zZXJ0RmluYWxOZXdsaW5lO1xuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgICAgfTtcbiAgICAgIGlmIChsb2FkT3B0cy5zeW5jKSB7XG4gICAgICAgIHJldHVybiB1bndyYXBBbmRNZXJnZShhcnIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGFycikudGhlbih1bndyYXBBbmRNZXJnZSk7XG4gICAgfVxuICAgIHZhciByZXNvbHZlQ29uZmlnID0gKGZpbGVQYXRoLCBvcHRzKSA9PiBfcmVzb2x2ZUNvbmZpZyhmaWxlUGF0aCwgb3B0cywgZmFsc2UpO1xuICAgIHJlc29sdmVDb25maWcuc3luYyA9IChmaWxlUGF0aCwgb3B0cykgPT4gX3Jlc29sdmVDb25maWcoZmlsZVBhdGgsIG9wdHMsIHRydWUpO1xuICAgIGZ1bmN0aW9uIGNsZWFyQ2FjaGUoKSB7XG4gICAgICBtZW1DbGVhcjIoZ2V0RXhwbG9yZXJNZW1vaXplZCk7XG4gICAgICByZXNvbHZlRWRpdG9yQ29uZmlnLmNsZWFyQ2FjaGUoKTtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUNvbmZpZ0ZpbGUoZmlsZVBhdGgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc2VhcmNoXG4gICAgICB9ID0gZ2V0RXhwbG9yZXIoe1xuICAgICAgICBzeW5jOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZWFyY2goZmlsZVBhdGgpO1xuICAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC5maWxlcGF0aCA6IG51bGw7XG4gICAgfVxuICAgIHJlc29sdmVDb25maWdGaWxlLnN5bmMgPSAoZmlsZVBhdGgpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc2VhcmNoXG4gICAgICB9ID0gZ2V0RXhwbG9yZXIoe1xuICAgICAgICBzeW5jOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlYXJjaChmaWxlUGF0aCk7XG4gICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LmZpbGVwYXRoIDogbnVsbDtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIG1lcmdlT3ZlcnJpZGVzKGNvbmZpZ1Jlc3VsdCwgZmlsZVBhdGgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY29uZmlnOiBjb25maWcyLFxuICAgICAgICBmaWxlcGF0aDogY29uZmlnUGF0aFxuICAgICAgfSA9IGNvbmZpZ1Jlc3VsdCB8fCB7fTtcbiAgICAgIGNvbnN0IF9yZWYgPSBjb25maWcyIHx8IHt9LCB7XG4gICAgICAgIG92ZXJyaWRlc1xuICAgICAgfSA9IF9yZWYsIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkMyk7XG4gICAgICBpZiAoZmlsZVBhdGggJiYgb3ZlcnJpZGVzKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlRmlsZVBhdGggPSBwYXRoLnJlbGF0aXZlKHBhdGguZGlybmFtZShjb25maWdQYXRoKSwgZmlsZVBhdGgpO1xuICAgICAgICBmb3IgKGNvbnN0IG92ZXJyaWRlIG9mIG92ZXJyaWRlcykge1xuICAgICAgICAgIGlmIChwYXRoTWF0Y2hlc0dsb2JzKHJlbGF0aXZlRmlsZVBhdGgsIG92ZXJyaWRlLmZpbGVzLCBvdmVycmlkZS5leGNsdWRlRmlsZXMpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG9wdGlvbnMsIG92ZXJyaWRlLm9wdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhdGhNYXRjaGVzR2xvYnMoZmlsZVBhdGgsIHBhdHRlcm5zLCBleGNsdWRlZFBhdHRlcm5zKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuTGlzdCA9IEFycmF5LmlzQXJyYXkocGF0dGVybnMpID8gcGF0dGVybnMgOiBbcGF0dGVybnNdO1xuICAgICAgY29uc3QgW3dpdGhTbGFzaGVzLCB3aXRob3V0U2xhc2hlc10gPSBwYXJ0aXRpb24ocGF0dGVybkxpc3QsIChwYXR0ZXJuKSA9PiBwYXR0ZXJuLmluY2x1ZGVzKFwiL1wiKSk7XG4gICAgICByZXR1cm4gbWljcm9tYXRjaC5pc01hdGNoKGZpbGVQYXRoLCB3aXRob3V0U2xhc2hlcywge1xuICAgICAgICBpZ25vcmU6IGV4Y2x1ZGVkUGF0dGVybnMsXG4gICAgICAgIGJhc2VuYW1lOiB0cnVlLFxuICAgICAgICBkb3Q6IHRydWVcbiAgICAgIH0pIHx8IG1pY3JvbWF0Y2guaXNNYXRjaChmaWxlUGF0aCwgd2l0aFNsYXNoZXMsIHtcbiAgICAgICAgaWdub3JlOiBleGNsdWRlZFBhdHRlcm5zLFxuICAgICAgICBiYXNlbmFtZTogZmFsc2UsXG4gICAgICAgIGRvdDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHJlc29sdmVDb25maWcsXG4gICAgICByZXNvbHZlQ29uZmlnRmlsZSxcbiAgICAgIGNsZWFyQ2FjaGVcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2lnbm9yZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvaWdub3JlL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBmdW5jdGlvbiBtYWtlQXJyYXkoc3ViamVjdCkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc3ViamVjdCkgPyBzdWJqZWN0IDogW3N1YmplY3RdO1xuICAgIH1cbiAgICB2YXIgRU1QVFkgPSBcIlwiO1xuICAgIHZhciBTUEFDRSA9IFwiIFwiO1xuICAgIHZhciBFU0NBUEUgPSBcIlxcXFxcIjtcbiAgICB2YXIgUkVHRVhfVEVTVF9CTEFOS19MSU5FID0gL15cXHMrJC87XG4gICAgdmFyIFJFR0VYX1JFUExBQ0VfTEVBRElOR19FWENBUEVEX0VYQ0xBTUFUSU9OID0gL15cXFxcIS87XG4gICAgdmFyIFJFR0VYX1JFUExBQ0VfTEVBRElOR19FWENBUEVEX0hBU0ggPSAvXlxcXFwjLztcbiAgICB2YXIgUkVHRVhfU1BMSVRBTExfQ1JMRiA9IC9cXHI/XFxuL2c7XG4gICAgdmFyIFJFR0VYX1RFU1RfSU5WQUxJRF9QQVRIID0gL15cXC4qXFwvfF5cXC4rJC87XG4gICAgdmFyIFNMQVNIID0gXCIvXCI7XG4gICAgdmFyIEtFWV9JR05PUkUgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sLmZvcihcIm5vZGUtaWdub3JlXCIpIDogXCJub2RlLWlnbm9yZVwiO1xuICAgIHZhciBkZWZpbmUyID0gKG9iamVjdCwga2V5LCB2YWx1ZSkgPT4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICAgIHZhciBSRUdFWF9SRUdFWFBfUkFOR0UgPSAvKFswLXpdKS0oWzAtel0pL2c7XG4gICAgdmFyIFJFVFVSTl9GQUxTRSA9ICgpID0+IGZhbHNlO1xuICAgIHZhciBzYW5pdGl6ZVJhbmdlID0gKHJhbmdlKSA9PiByYW5nZS5yZXBsYWNlKFJFR0VYX1JFR0VYUF9SQU5HRSwgKG1hdGNoLCBmcm9tLCB0bykgPT4gZnJvbS5jaGFyQ29kZUF0KDApIDw9IHRvLmNoYXJDb2RlQXQoMCkgPyBtYXRjaCA6IEVNUFRZKTtcbiAgICB2YXIgY2xlYW5SYW5nZUJhY2tTbGFzaCA9IChzbGFzaGVzKSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxlbmd0aFxuICAgICAgfSA9IHNsYXNoZXM7XG4gICAgICByZXR1cm4gc2xhc2hlcy5zbGljZSgwLCBsZW5ndGggLSBsZW5ndGggJSAyKTtcbiAgICB9O1xuICAgIHZhciBSRVBMQUNFUlMgPSBbWy9cXFxcP1xccyskLywgKG1hdGNoKSA9PiBtYXRjaC5pbmRleE9mKFwiXFxcXFwiKSA9PT0gMCA/IFNQQUNFIDogRU1QVFldLCBbL1xcXFxcXHMvZywgKCkgPT4gU1BBQ0VdLCBbL1tcXFxcJC58KisoKXteXS9nLCAobWF0Y2gpID0+IGBcXFxcJHttYXRjaH1gXSwgWy8oPyFcXFxcKVxcPy9nLCAoKSA9PiBcIlteL11cIl0sIFsvXlxcLy8sICgpID0+IFwiXlwiXSwgWy9cXC8vZywgKCkgPT4gXCJcXFxcL1wiXSwgWy9eXFxeKlxcXFxcXCpcXFxcXFwqXFxcXFxcLy8sICgpID0+IFwiXig/Oi4qXFxcXC8pP1wiXSwgWy9eKD89W15eXSkvLCBmdW5jdGlvbiBzdGFydGluZ1JlcGxhY2VyKCkge1xuICAgICAgcmV0dXJuICEvXFwvKD8hJCkvLnRlc3QodGhpcykgPyBcIig/Ol58XFxcXC8pXCIgOiBcIl5cIjtcbiAgICB9XSwgWy9cXFxcXFwvXFxcXFxcKlxcXFxcXCooPz1cXFxcXFwvfCQpL2csIChfLCBpbmRleCwgc3RyKSA9PiBpbmRleCArIDYgPCBzdHIubGVuZ3RoID8gXCIoPzpcXFxcL1teXFxcXC9dKykqXCIgOiBcIlxcXFwvLitcIl0sIFsvKF58W15cXFxcXSspXFxcXFxcKig/PS4rKS9nLCAoXywgcDEpID0+IGAke3AxfVteXFxcXC9dKmBdLCBbL1xcXFxcXFxcXFxcXCg/PVskLnwqKygpe15dKS9nLCAoKSA9PiBFU0NBUEVdLCBbL1xcXFxcXFxcL2csICgpID0+IEVTQ0FQRV0sIFsvKFxcXFwpP1xcWyhbXlxcXS9dKj8pKFxcXFwqKSgkfFxcXSkvZywgKG1hdGNoLCBsZWFkRXNjYXBlLCByYW5nZSwgZW5kRXNjYXBlLCBjbG9zZSkgPT4gbGVhZEVzY2FwZSA9PT0gRVNDQVBFID8gYFxcXFxbJHtyYW5nZX0ke2NsZWFuUmFuZ2VCYWNrU2xhc2goZW5kRXNjYXBlKX0ke2Nsb3NlfWAgOiBjbG9zZSA9PT0gXCJdXCIgPyBlbmRFc2NhcGUubGVuZ3RoICUgMiA9PT0gMCA/IGBbJHtzYW5pdGl6ZVJhbmdlKHJhbmdlKX0ke2VuZEVzY2FwZX1dYCA6IFwiW11cIiA6IFwiW11cIl0sIFsvKD86W14qXSkkLywgKG1hdGNoKSA9PiAvXFwvJC8udGVzdChtYXRjaCkgPyBgJHttYXRjaH0kYCA6IGAke21hdGNofSg/PSR8XFxcXC8kKWBdLCBbLyhcXF58XFxcXFxcLyk/XFxcXFxcKiQvLCAoXywgcDEpID0+IHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHAxID8gYCR7cDF9W14vXStgIDogXCJbXi9dKlwiO1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH0oPz0kfFxcXFwvJClgO1xuICAgIH1dXTtcbiAgICB2YXIgcmVnZXhDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBtYWtlUmVnZXggPSAocGF0dGVybiwgaWdub3JlQ2FzZSkgPT4ge1xuICAgICAgbGV0IHNvdXJjZSA9IHJlZ2V4Q2FjaGVbcGF0dGVybl07XG4gICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICBzb3VyY2UgPSBSRVBMQUNFUlMucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiBwcmV2LnJlcGxhY2UoY3VycmVudFswXSwgY3VycmVudFsxXS5iaW5kKHBhdHRlcm4pKSwgcGF0dGVybik7XG4gICAgICAgIHJlZ2V4Q2FjaGVbcGF0dGVybl0gPSBzb3VyY2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWdub3JlQ2FzZSA/IG5ldyBSZWdFeHAoc291cmNlLCBcImlcIikgOiBuZXcgUmVnRXhwKHNvdXJjZSk7XG4gICAgfTtcbiAgICB2YXIgaXNTdHJpbmcgPSAoc3ViamVjdCkgPT4gdHlwZW9mIHN1YmplY3QgPT09IFwic3RyaW5nXCI7XG4gICAgdmFyIGNoZWNrUGF0dGVybiA9IChwYXR0ZXJuKSA9PiBwYXR0ZXJuICYmIGlzU3RyaW5nKHBhdHRlcm4pICYmICFSRUdFWF9URVNUX0JMQU5LX0xJTkUudGVzdChwYXR0ZXJuKSAmJiBwYXR0ZXJuLmluZGV4T2YoXCIjXCIpICE9PSAwO1xuICAgIHZhciBzcGxpdFBhdHRlcm4gPSAocGF0dGVybikgPT4gcGF0dGVybi5zcGxpdChSRUdFWF9TUExJVEFMTF9DUkxGKTtcbiAgICB2YXIgSWdub3JlUnVsZSA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgcGF0dGVybiwgbmVnYXRpdmUsIHJlZ2V4KSB7XG4gICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luO1xuICAgICAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gbmVnYXRpdmU7XG4gICAgICAgIHRoaXMucmVnZXggPSByZWdleDtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBjcmVhdGVSdWxlID0gKHBhdHRlcm4sIGlnbm9yZUNhc2UpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHBhdHRlcm47XG4gICAgICBsZXQgbmVnYXRpdmUgPSBmYWxzZTtcbiAgICAgIGlmIChwYXR0ZXJuLmluZGV4T2YoXCIhXCIpID09PSAwKSB7XG4gICAgICAgIG5lZ2F0aXZlID0gdHJ1ZTtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc3Vic3RyKDEpO1xuICAgICAgfVxuICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZShSRUdFWF9SRVBMQUNFX0xFQURJTkdfRVhDQVBFRF9FWENMQU1BVElPTiwgXCIhXCIpLnJlcGxhY2UoUkVHRVhfUkVQTEFDRV9MRUFESU5HX0VYQ0FQRURfSEFTSCwgXCIjXCIpO1xuICAgICAgY29uc3QgcmVnZXggPSBtYWtlUmVnZXgocGF0dGVybiwgaWdub3JlQ2FzZSk7XG4gICAgICByZXR1cm4gbmV3IElnbm9yZVJ1bGUob3JpZ2luLCBwYXR0ZXJuLCBuZWdhdGl2ZSwgcmVnZXgpO1xuICAgIH07XG4gICAgdmFyIHRocm93RXJyb3IgPSAobWVzc2FnZSwgQ3RvcikgPT4ge1xuICAgICAgdGhyb3cgbmV3IEN0b3IobWVzc2FnZSk7XG4gICAgfTtcbiAgICB2YXIgY2hlY2tQYXRoID0gKHBhdGgsIG9yaWdpbmFsUGF0aCwgZG9UaHJvdykgPT4ge1xuICAgICAgaWYgKCFpc1N0cmluZyhwYXRoKSkge1xuICAgICAgICByZXR1cm4gZG9UaHJvdyhgcGF0aCBtdXN0IGJlIGEgc3RyaW5nLCBidXQgZ290IFxcYCR7b3JpZ2luYWxQYXRofVxcYGAsIFR5cGVFcnJvcik7XG4gICAgICB9XG4gICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGRvVGhyb3coYHBhdGggbXVzdCBub3QgYmUgZW1wdHlgLCBUeXBlRXJyb3IpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrUGF0aC5pc05vdFJlbGF0aXZlKHBhdGgpKSB7XG4gICAgICAgIGNvbnN0IHIgPSBcImBwYXRoLnJlbGF0aXZlKClgZFwiO1xuICAgICAgICByZXR1cm4gZG9UaHJvdyhgcGF0aCBzaG91bGQgYmUgYSAke3J9IHN0cmluZywgYnV0IGdvdCBcIiR7b3JpZ2luYWxQYXRofVwiYCwgUmFuZ2VFcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIHZhciBpc05vdFJlbGF0aXZlID0gKHBhdGgpID0+IFJFR0VYX1RFU1RfSU5WQUxJRF9QQVRILnRlc3QocGF0aCk7XG4gICAgY2hlY2tQYXRoLmlzTm90UmVsYXRpdmUgPSBpc05vdFJlbGF0aXZlO1xuICAgIGNoZWNrUGF0aC5jb252ZXJ0ID0gKHApID0+IHA7XG4gICAgdmFyIElnbm9yZSA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKHtcbiAgICAgICAgaWdub3JlY2FzZSA9IHRydWUsXG4gICAgICAgIGlnbm9yZUNhc2UgPSBpZ25vcmVjYXNlLFxuICAgICAgICBhbGxvd1JlbGF0aXZlUGF0aHMgPSBmYWxzZVxuICAgICAgfSA9IHt9KSB7XG4gICAgICAgIGRlZmluZTIodGhpcywgS0VZX0lHTk9SRSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gW107XG4gICAgICAgIHRoaXMuX2lnbm9yZUNhc2UgPSBpZ25vcmVDYXNlO1xuICAgICAgICB0aGlzLl9hbGxvd1JlbGF0aXZlUGF0aHMgPSBhbGxvd1JlbGF0aXZlUGF0aHM7XG4gICAgICAgIHRoaXMuX2luaXRDYWNoZSgpO1xuICAgICAgfVxuICAgICAgX2luaXRDYWNoZSgpIHtcbiAgICAgICAgdGhpcy5faWdub3JlQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fdGVzdENhY2hlID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICB9XG4gICAgICBfYWRkUGF0dGVybihwYXR0ZXJuKSB7XG4gICAgICAgIGlmIChwYXR0ZXJuICYmIHBhdHRlcm5bS0VZX0lHTk9SRV0pIHtcbiAgICAgICAgICB0aGlzLl9ydWxlcyA9IHRoaXMuX3J1bGVzLmNvbmNhdChwYXR0ZXJuLl9ydWxlcyk7XG4gICAgICAgICAgdGhpcy5fYWRkZWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hlY2tQYXR0ZXJuKHBhdHRlcm4pKSB7XG4gICAgICAgICAgY29uc3QgcnVsZSA9IGNyZWF0ZVJ1bGUocGF0dGVybiwgdGhpcy5faWdub3JlQ2FzZSk7XG4gICAgICAgICAgdGhpcy5fYWRkZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX3J1bGVzLnB1c2gocnVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFkZChwYXR0ZXJuKSB7XG4gICAgICAgIHRoaXMuX2FkZGVkID0gZmFsc2U7XG4gICAgICAgIG1ha2VBcnJheShpc1N0cmluZyhwYXR0ZXJuKSA/IHNwbGl0UGF0dGVybihwYXR0ZXJuKSA6IHBhdHRlcm4pLmZvckVhY2godGhpcy5fYWRkUGF0dGVybiwgdGhpcyk7XG4gICAgICAgIGlmICh0aGlzLl9hZGRlZCkge1xuICAgICAgICAgIHRoaXMuX2luaXRDYWNoZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgYWRkUGF0dGVybihwYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChwYXR0ZXJuKTtcbiAgICAgIH1cbiAgICAgIF90ZXN0T25lKHBhdGgsIGNoZWNrVW5pZ25vcmVkKSB7XG4gICAgICAgIGxldCBpZ25vcmVkID0gZmFsc2U7XG4gICAgICAgIGxldCB1bmlnbm9yZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG5lZ2F0aXZlXG4gICAgICAgICAgfSA9IHJ1bGU7XG4gICAgICAgICAgaWYgKHVuaWdub3JlZCA9PT0gbmVnYXRpdmUgJiYgaWdub3JlZCAhPT0gdW5pZ25vcmVkIHx8IG5lZ2F0aXZlICYmICFpZ25vcmVkICYmICF1bmlnbm9yZWQgJiYgIWNoZWNrVW5pZ25vcmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBydWxlLnJlZ2V4LnRlc3QocGF0aCk7XG4gICAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgIGlnbm9yZWQgPSAhbmVnYXRpdmU7XG4gICAgICAgICAgICB1bmlnbm9yZWQgPSBuZWdhdGl2ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlnbm9yZWQsXG4gICAgICAgICAgdW5pZ25vcmVkXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBfdGVzdChvcmlnaW5hbFBhdGgsIGNhY2hlLCBjaGVja1VuaWdub3JlZCwgc2xpY2VzKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBvcmlnaW5hbFBhdGggJiYgY2hlY2tQYXRoLmNvbnZlcnQob3JpZ2luYWxQYXRoKTtcbiAgICAgICAgY2hlY2tQYXRoKHBhdGgsIG9yaWdpbmFsUGF0aCwgdGhpcy5fYWxsb3dSZWxhdGl2ZVBhdGhzID8gUkVUVVJOX0ZBTFNFIDogdGhyb3dFcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLl90KHBhdGgsIGNhY2hlLCBjaGVja1VuaWdub3JlZCwgc2xpY2VzKTtcbiAgICAgIH1cbiAgICAgIF90KHBhdGgsIGNhY2hlLCBjaGVja1VuaWdub3JlZCwgc2xpY2VzKSB7XG4gICAgICAgIGlmIChwYXRoIGluIGNhY2hlKSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlW3BhdGhdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2xpY2VzKSB7XG4gICAgICAgICAgc2xpY2VzID0gcGF0aC5zcGxpdChTTEFTSCk7XG4gICAgICAgIH1cbiAgICAgICAgc2xpY2VzLnBvcCgpO1xuICAgICAgICBpZiAoIXNsaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGVbcGF0aF0gPSB0aGlzLl90ZXN0T25lKHBhdGgsIGNoZWNrVW5pZ25vcmVkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl90KHNsaWNlcy5qb2luKFNMQVNIKSArIFNMQVNILCBjYWNoZSwgY2hlY2tVbmlnbm9yZWQsIHNsaWNlcyk7XG4gICAgICAgIHJldHVybiBjYWNoZVtwYXRoXSA9IHBhcmVudC5pZ25vcmVkID8gcGFyZW50IDogdGhpcy5fdGVzdE9uZShwYXRoLCBjaGVja1VuaWdub3JlZCk7XG4gICAgICB9XG4gICAgICBpZ25vcmVzKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3QocGF0aCwgdGhpcy5faWdub3JlQ2FjaGUsIGZhbHNlKS5pZ25vcmVkO1xuICAgICAgfVxuICAgICAgY3JlYXRlRmlsdGVyKCkge1xuICAgICAgICByZXR1cm4gKHBhdGgpID0+ICF0aGlzLmlnbm9yZXMocGF0aCk7XG4gICAgICB9XG4gICAgICBmaWx0ZXIocGF0aHMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VBcnJheShwYXRocykuZmlsdGVyKHRoaXMuY3JlYXRlRmlsdGVyKCkpO1xuICAgICAgfVxuICAgICAgdGVzdChwYXRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZXN0KHBhdGgsIHRoaXMuX3Rlc3RDYWNoZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgZmFjdG9yeSA9IChvcHRpb25zKSA9PiBuZXcgSWdub3JlKG9wdGlvbnMpO1xuICAgIHZhciBpc1BhdGhWYWxpZCA9IChwYXRoKSA9PiBjaGVja1BhdGgocGF0aCAmJiBjaGVja1BhdGguY29udmVydChwYXRoKSwgcGF0aCwgUkVUVVJOX0ZBTFNFKTtcbiAgICBmYWN0b3J5LmlzUGF0aFZhbGlkID0gaXNQYXRoVmFsaWQ7XG4gICAgZmFjdG9yeS5kZWZhdWx0ID0gZmFjdG9yeTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmYWN0b3J5O1xuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiAocHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuSUdOT1JFX1RFU1RfV0lOMzIgfHwgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSkge1xuICAgICAgY29uc3QgbWFrZVBvc2l4ID0gKHN0cikgPT4gL15cXFxcXFxcXFxcP1xcXFwvLnRlc3Qoc3RyKSB8fCAvW1wiPD58XFx1MDAwMC1cXHUwMDFGXSsvdS50ZXN0KHN0cikgPyBzdHIgOiBzdHIucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG4gICAgICBjaGVja1BhdGguY29udmVydCA9IG1ha2VQb3NpeDtcbiAgICAgIGNvbnN0IFJFR0lYX0lTX1dJTkRPV1NfUEFUSF9BQlNPTFVURSA9IC9eW2Etel06XFwvL2k7XG4gICAgICBjaGVja1BhdGguaXNOb3RSZWxhdGl2ZSA9IChwYXRoKSA9PiBSRUdJWF9JU19XSU5ET1dTX1BBVEhfQUJTT0xVVEUudGVzdChwYXRoKSB8fCBpc05vdFJlbGF0aXZlKHBhdGgpO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9nZXRfZmlsZV9jb250ZW50X29yX251bGwgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL3V0aWxzL2dldC1maWxlLWNvbnRlbnQtb3ItbnVsbC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgIHZhciBmc0FzeW5jID0gZnMucHJvbWlzZXM7XG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZUNvbnRlbnRPck51bGwoZmlsZW5hbWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmc0FzeW5jLnJlYWRGaWxlKGZpbGVuYW1lLCBcInV0ZjhcIik7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3IoZmlsZW5hbWUsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0RmlsZUNvbnRlbnRPck51bGwuc3luYyA9IGZ1bmN0aW9uKGZpbGVuYW1lKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBcInV0ZjhcIik7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3IoZmlsZW5hbWUsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGhhbmRsZUVycm9yKGZpbGVuYW1lLCBlcnJvcikge1xuICAgICAgaWYgKGVycm9yICYmIGVycm9yLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZWFkICR7ZmlsZW5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGdldEZpbGVDb250ZW50T3JOdWxsO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NyZWF0ZV9pZ25vcmVyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9jb21tb24vY3JlYXRlLWlnbm9yZXIuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgdmFyIGlnbm9yZSA9IHJlcXVpcmVfaWdub3JlKCkuZGVmYXVsdDtcbiAgICB2YXIgZ2V0RmlsZUNvbnRlbnRPck51bGwgPSByZXF1aXJlX2dldF9maWxlX2NvbnRlbnRfb3JfbnVsbCgpO1xuICAgIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUlnbm9yZXIoaWdub3JlUGF0aCwgd2l0aE5vZGVNb2R1bGVzKSB7XG4gICAgICBjb25zdCBpZ25vcmVDb250ZW50ID0gaWdub3JlUGF0aCA/IGF3YWl0IGdldEZpbGVDb250ZW50T3JOdWxsKHBhdGgucmVzb2x2ZShpZ25vcmVQYXRoKSkgOiBudWxsO1xuICAgICAgcmV0dXJuIF9jcmVhdGVJZ25vcmVyKGlnbm9yZUNvbnRlbnQsIHdpdGhOb2RlTW9kdWxlcyk7XG4gICAgfVxuICAgIGNyZWF0ZUlnbm9yZXIuc3luYyA9IGZ1bmN0aW9uKGlnbm9yZVBhdGgsIHdpdGhOb2RlTW9kdWxlcykge1xuICAgICAgY29uc3QgaWdub3JlQ29udGVudCA9ICFpZ25vcmVQYXRoID8gbnVsbCA6IGdldEZpbGVDb250ZW50T3JOdWxsLnN5bmMocGF0aC5yZXNvbHZlKGlnbm9yZVBhdGgpKTtcbiAgICAgIHJldHVybiBfY3JlYXRlSWdub3JlcihpZ25vcmVDb250ZW50LCB3aXRoTm9kZU1vZHVsZXMpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gX2NyZWF0ZUlnbm9yZXIoaWdub3JlQ29udGVudCwgd2l0aE5vZGVNb2R1bGVzKSB7XG4gICAgICBjb25zdCBpZ25vcmVyID0gaWdub3JlKHtcbiAgICAgICAgYWxsb3dSZWxhdGl2ZVBhdGhzOiB0cnVlXG4gICAgICB9KS5hZGQoaWdub3JlQ29udGVudCB8fCBcIlwiKTtcbiAgICAgIGlmICghd2l0aE5vZGVNb2R1bGVzKSB7XG4gICAgICAgIGlnbm9yZXIuYWRkKFwibm9kZV9tb2R1bGVzXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlnbm9yZXI7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGNyZWF0ZUlnbm9yZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZ2V0X2ZpbGVfaW5mbyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvY29tbW9uL2dldC1maWxlLWluZm8uanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgdmFyIG9wdGlvbnMgPSByZXF1aXJlX29wdGlvbnMoKTtcbiAgICB2YXIgY29uZmlnMiA9IHJlcXVpcmVfcmVzb2x2ZV9jb25maWcoKTtcbiAgICB2YXIgY3JlYXRlSWdub3JlciA9IHJlcXVpcmVfY3JlYXRlX2lnbm9yZXIoKTtcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRGaWxlSW5mbzIoZmlsZVBhdGgsIG9wdHMpIHtcbiAgICAgIGlmICh0eXBlb2YgZmlsZVBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0IFxcYGZpbGVQYXRoXFxgIHRvIGJlIGEgc3RyaW5nLCBnb3QgXFxgJHt0eXBlb2YgZmlsZVBhdGh9XFxgYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpZ25vcmVyID0gYXdhaXQgY3JlYXRlSWdub3JlcihvcHRzLmlnbm9yZVBhdGgsIG9wdHMud2l0aE5vZGVNb2R1bGVzKTtcbiAgICAgIHJldHVybiBfZ2V0RmlsZUluZm8oe1xuICAgICAgICBpZ25vcmVyLFxuICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgcGx1Z2luczogb3B0cy5wbHVnaW5zLFxuICAgICAgICByZXNvbHZlQ29uZmlnOiBvcHRzLnJlc29sdmVDb25maWcsXG4gICAgICAgIGlnbm9yZVBhdGg6IG9wdHMuaWdub3JlUGF0aCxcbiAgICAgICAgc3luYzogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRGaWxlSW5mbzIuc3luYyA9IGZ1bmN0aW9uKGZpbGVQYXRoLCBvcHRzKSB7XG4gICAgICBpZiAodHlwZW9mIGZpbGVQYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdCBcXGBmaWxlUGF0aFxcYCB0byBiZSBhIHN0cmluZywgZ290IFxcYCR7dHlwZW9mIGZpbGVQYXRofVxcYGApO1xuICAgICAgfVxuICAgICAgY29uc3QgaWdub3JlciA9IGNyZWF0ZUlnbm9yZXIuc3luYyhvcHRzLmlnbm9yZVBhdGgsIG9wdHMud2l0aE5vZGVNb2R1bGVzKTtcbiAgICAgIHJldHVybiBfZ2V0RmlsZUluZm8oe1xuICAgICAgICBpZ25vcmVyLFxuICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgcGx1Z2luczogb3B0cy5wbHVnaW5zLFxuICAgICAgICByZXNvbHZlQ29uZmlnOiBvcHRzLnJlc29sdmVDb25maWcsXG4gICAgICAgIGlnbm9yZVBhdGg6IG9wdHMuaWdub3JlUGF0aCxcbiAgICAgICAgc3luYzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRGaWxlUGFyc2VyKHJlc29sdmVkQ29uZmlnLCBmaWxlUGF0aCwgcGx1Z2luczIpIHtcbiAgICAgIGlmIChyZXNvbHZlZENvbmZpZyAmJiByZXNvbHZlZENvbmZpZy5wYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkQ29uZmlnLnBhcnNlcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZmVycmVkUGFyc2VyID0gb3B0aW9ucy5pbmZlclBhcnNlcihmaWxlUGF0aCwgcGx1Z2luczIpO1xuICAgICAgaWYgKGluZmVycmVkUGFyc2VyKSB7XG4gICAgICAgIHJldHVybiBpbmZlcnJlZFBhcnNlcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZ2V0RmlsZUluZm8oe1xuICAgICAgaWdub3JlcixcbiAgICAgIGZpbGVQYXRoLFxuICAgICAgcGx1Z2luczogcGx1Z2luczIsXG4gICAgICByZXNvbHZlQ29uZmlnID0gZmFsc2UsXG4gICAgICBpZ25vcmVQYXRoLFxuICAgICAgc3luYyA9IGZhbHNlXG4gICAgfSkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZEZpbGVQYXRoID0gbm9ybWFsaXplRmlsZVBhdGgoZmlsZVBhdGgsIGlnbm9yZVBhdGgpO1xuICAgICAgY29uc3QgZmlsZUluZm8gPSB7XG4gICAgICAgIGlnbm9yZWQ6IGlnbm9yZXIuaWdub3Jlcyhub3JtYWxpemVkRmlsZVBhdGgpLFxuICAgICAgICBpbmZlcnJlZFBhcnNlcjogbnVsbFxuICAgICAgfTtcbiAgICAgIGlmIChmaWxlSW5mby5pZ25vcmVkKSB7XG4gICAgICAgIHJldHVybiBmaWxlSW5mbztcbiAgICAgIH1cbiAgICAgIGxldCByZXNvbHZlZENvbmZpZztcbiAgICAgIGlmIChyZXNvbHZlQ29uZmlnKSB7XG4gICAgICAgIGlmIChzeW5jKSB7XG4gICAgICAgICAgcmVzb2x2ZWRDb25maWcgPSBjb25maWcyLnJlc29sdmVDb25maWcuc3luYyhmaWxlUGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGNvbmZpZzIucmVzb2x2ZUNvbmZpZyhmaWxlUGF0aCkudGhlbigocmVzb2x2ZWRDb25maWcyKSA9PiB7XG4gICAgICAgICAgICBmaWxlSW5mby5pbmZlcnJlZFBhcnNlciA9IGdldEZpbGVQYXJzZXIocmVzb2x2ZWRDb25maWcyLCBmaWxlUGF0aCwgcGx1Z2luczIpO1xuICAgICAgICAgICAgcmV0dXJuIGZpbGVJbmZvO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmaWxlSW5mby5pbmZlcnJlZFBhcnNlciA9IGdldEZpbGVQYXJzZXIocmVzb2x2ZWRDb25maWcsIGZpbGVQYXRoLCBwbHVnaW5zMik7XG4gICAgICByZXR1cm4gZmlsZUluZm87XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUZpbGVQYXRoKGZpbGVQYXRoLCBpZ25vcmVQYXRoKSB7XG4gICAgICByZXR1cm4gaWdub3JlUGF0aCA/IHBhdGgucmVsYXRpdmUocGF0aC5kaXJuYW1lKGlnbm9yZVBhdGgpLCBmaWxlUGF0aCkgOiBmaWxlUGF0aDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZ2V0RmlsZUluZm8yO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3V0aWxfc2hhcmVkID0gX19jb21tb25KUzIoe1xuICBcInNyYy9jb21tb24vdXRpbC1zaGFyZWQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBnZXRNYXhDb250aW51b3VzQ291bnQsXG4gICAgICBnZXRTdHJpbmdXaWR0aCxcbiAgICAgIGdldEFsaWdubWVudFNpemUsXG4gICAgICBnZXRJbmRlbnRTaXplLFxuICAgICAgc2tpcCxcbiAgICAgIHNraXBXaGl0ZXNwYWNlLFxuICAgICAgc2tpcFNwYWNlcyxcbiAgICAgIHNraXBOZXdsaW5lLFxuICAgICAgc2tpcFRvTGluZUVuZCxcbiAgICAgIHNraXBFdmVyeXRoaW5nQnV0TmV3TGluZSxcbiAgICAgIHNraXBJbmxpbmVDb21tZW50LFxuICAgICAgc2tpcFRyYWlsaW5nQ29tbWVudCxcbiAgICAgIGhhc05ld2xpbmUsXG4gICAgICBoYXNOZXdsaW5lSW5SYW5nZSxcbiAgICAgIGhhc1NwYWNlcyxcbiAgICAgIGlzTmV4dExpbmVFbXB0eSxcbiAgICAgIGlzTmV4dExpbmVFbXB0eUFmdGVySW5kZXgsXG4gICAgICBpc1ByZXZpb3VzTGluZUVtcHR5LFxuICAgICAgZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4LFxuICAgICAgbWFrZVN0cmluZyxcbiAgICAgIGFkZExlYWRpbmdDb21tZW50LFxuICAgICAgYWRkRGFuZ2xpbmdDb21tZW50LFxuICAgICAgYWRkVHJhaWxpbmdDb21tZW50XG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGdldE1heENvbnRpbnVvdXNDb3VudCxcbiAgICAgIGdldFN0cmluZ1dpZHRoLFxuICAgICAgZ2V0QWxpZ25tZW50U2l6ZSxcbiAgICAgIGdldEluZGVudFNpemUsXG4gICAgICBza2lwLFxuICAgICAgc2tpcFdoaXRlc3BhY2UsXG4gICAgICBza2lwU3BhY2VzLFxuICAgICAgc2tpcE5ld2xpbmUsXG4gICAgICBza2lwVG9MaW5lRW5kLFxuICAgICAgc2tpcEV2ZXJ5dGhpbmdCdXROZXdMaW5lLFxuICAgICAgc2tpcElubGluZUNvbW1lbnQsXG4gICAgICBza2lwVHJhaWxpbmdDb21tZW50LFxuICAgICAgaGFzTmV3bGluZSxcbiAgICAgIGhhc05ld2xpbmVJblJhbmdlLFxuICAgICAgaGFzU3BhY2VzLFxuICAgICAgaXNOZXh0TGluZUVtcHR5LFxuICAgICAgaXNOZXh0TGluZUVtcHR5QWZ0ZXJJbmRleCxcbiAgICAgIGlzUHJldmlvdXNMaW5lRW1wdHksXG4gICAgICBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXgsXG4gICAgICBtYWtlU3RyaW5nLFxuICAgICAgYWRkTGVhZGluZ0NvbW1lbnQsXG4gICAgICBhZGREYW5nbGluZ0NvbW1lbnQsXG4gICAgICBhZGRUcmFpbGluZ0NvbW1lbnRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2FycmF5MyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9hcnJheS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5zcGxpdFdoZW4gPSBleHBvcnRzMi5mbGF0dGVuID0gdm9pZCAwO1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oaXRlbXMpIHtcbiAgICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGNvbGxlY3Rpb24sIGl0ZW0pID0+IFtdLmNvbmNhdChjb2xsZWN0aW9uLCBpdGVtKSwgW10pO1xuICAgIH1cbiAgICBleHBvcnRzMi5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBmdW5jdGlvbiBzcGxpdFdoZW4oaXRlbXMsIHByZWRpY2F0ZSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gW1tdXTtcbiAgICAgIGxldCBncm91cEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICBpZiAocHJlZGljYXRlKGl0ZW0pKSB7XG4gICAgICAgICAgZ3JvdXBJbmRleCsrO1xuICAgICAgICAgIHJlc3VsdFtncm91cEluZGV4XSA9IFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtncm91cEluZGV4XS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBleHBvcnRzMi5zcGxpdFdoZW4gPSBzcGxpdFdoZW47XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZXJybm8gPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvZXJybm8uanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuaXNFbm9lbnRDb2RlRXJyb3IgPSB2b2lkIDA7XG4gICAgZnVuY3Rpb24gaXNFbm9lbnRDb2RlRXJyb3IoZXJyb3IpIHtcbiAgICAgIHJldHVybiBlcnJvci5jb2RlID09PSBcIkVOT0VOVFwiO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc0Vub2VudENvZGVFcnJvciA9IGlzRW5vZW50Q29kZUVycm9yO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2ZzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3V0aWxzL2ZzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmNyZWF0ZURpcmVudEZyb21TdGF0cyA9IHZvaWQgMDtcbiAgICB2YXIgRGlyZW50RnJvbVN0YXRzID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IobmFtZSwgc3RhdHMpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5pc0Jsb2NrRGV2aWNlID0gc3RhdHMuaXNCbG9ja0RldmljZS5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc0NoYXJhY3RlckRldmljZSA9IHN0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlLmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzRGlyZWN0b3J5ID0gc3RhdHMuaXNEaXJlY3RvcnkuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNGSUZPID0gc3RhdHMuaXNGSUZPLmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzRmlsZSA9IHN0YXRzLmlzRmlsZS5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc1NvY2tldCA9IHN0YXRzLmlzU29ja2V0LmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzU3ltYm9saWNMaW5rID0gc3RhdHMuaXNTeW1ib2xpY0xpbmsuYmluZChzdGF0cyk7XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBjcmVhdGVEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpIHtcbiAgICAgIHJldHVybiBuZXcgRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKTtcbiAgICB9XG4gICAgZXhwb3J0czIuY3JlYXRlRGlyZW50RnJvbVN0YXRzID0gY3JlYXRlRGlyZW50RnJvbVN0YXRzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhdGggPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvcGF0aC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5yZW1vdmVMZWFkaW5nRG90U2VnbWVudCA9IGV4cG9ydHMyLmVzY2FwZSA9IGV4cG9ydHMyLm1ha2VBYnNvbHV0ZSA9IGV4cG9ydHMyLnVuaXhpZnkgPSB2b2lkIDA7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICB2YXIgTEVBRElOR19ET1RfU0VHTUVOVF9DSEFSQUNURVJTX0NPVU5UID0gMjtcbiAgICB2YXIgVU5FU0NBUEVEX0dMT0JfU1lNQk9MU19SRSA9IC8oXFxcXD8pKFsoKSo/W1xcXXt8fV18XiF8WyErQF0oPz1cXCgpKS9nO1xuICAgIGZ1bmN0aW9uIHVuaXhpZnkoZmlsZXBhdGgpIHtcbiAgICAgIHJldHVybiBmaWxlcGF0aC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgICB9XG4gICAgZXhwb3J0czIudW5peGlmeSA9IHVuaXhpZnk7XG4gICAgZnVuY3Rpb24gbWFrZUFic29sdXRlKGN3ZCwgZmlsZXBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoLnJlc29sdmUoY3dkLCBmaWxlcGF0aCk7XG4gICAgfVxuICAgIGV4cG9ydHMyLm1ha2VBYnNvbHV0ZSA9IG1ha2VBYnNvbHV0ZTtcbiAgICBmdW5jdGlvbiBlc2NhcGUocGF0dGVybikge1xuICAgICAgcmV0dXJuIHBhdHRlcm4ucmVwbGFjZShVTkVTQ0FQRURfR0xPQl9TWU1CT0xTX1JFLCBcIlxcXFwkMlwiKTtcbiAgICB9XG4gICAgZXhwb3J0czIuZXNjYXBlID0gZXNjYXBlO1xuICAgIGZ1bmN0aW9uIHJlbW92ZUxlYWRpbmdEb3RTZWdtZW50KGVudHJ5KSB7XG4gICAgICBpZiAoZW50cnkuY2hhckF0KDApID09PSBcIi5cIikge1xuICAgICAgICBjb25zdCBzZWNvbmRDaGFyYWN0ZXJ5ID0gZW50cnkuY2hhckF0KDEpO1xuICAgICAgICBpZiAoc2Vjb25kQ2hhcmFjdGVyeSA9PT0gXCIvXCIgfHwgc2Vjb25kQ2hhcmFjdGVyeSA9PT0gXCJcXFxcXCIpIHtcbiAgICAgICAgICByZXR1cm4gZW50cnkuc2xpY2UoTEVBRElOR19ET1RfU0VHTUVOVF9DSEFSQUNURVJTX0NPVU5UKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cbiAgICBleHBvcnRzMi5yZW1vdmVMZWFkaW5nRG90U2VnbWVudCA9IHJlbW92ZUxlYWRpbmdEb3RTZWdtZW50O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2lzX2V4dGdsb2IgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2lzLWV4dGdsb2IvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRXh0Z2xvYihzdHIpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiIHx8IHN0ciA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgbWF0Y2g7XG4gICAgICB3aGlsZSAobWF0Y2ggPSAvKFxcXFwpLnwoW0A/ISsqXVxcKC4qXFwpKS9nLmV4ZWMoc3RyKSkge1xuICAgICAgICBpZiAobWF0Y2hbMl0pXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHN0ciA9IHN0ci5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pc19nbG9iID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9pcy1nbG9iL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgaXNFeHRnbG9iID0gcmVxdWlyZV9pc19leHRnbG9iKCk7XG4gICAgdmFyIGNoYXJzID0ge1xuICAgICAgXCJ7XCI6IFwifVwiLFxuICAgICAgXCIoXCI6IFwiKVwiLFxuICAgICAgXCJbXCI6IFwiXVwiXG4gICAgfTtcbiAgICB2YXIgc3RyaWN0Q2hlY2sgPSBmdW5jdGlvbihzdHIpIHtcbiAgICAgIGlmIChzdHJbMF0gPT09IFwiIVwiKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciBwaXBlSW5kZXggPSAtMjtcbiAgICAgIHZhciBjbG9zZVNxdWFyZUluZGV4ID0gLTI7XG4gICAgICB2YXIgY2xvc2VDdXJseUluZGV4ID0gLTI7XG4gICAgICB2YXIgY2xvc2VQYXJlbkluZGV4ID0gLTI7XG4gICAgICB2YXIgYmFja1NsYXNoSW5kZXggPSAtMjtcbiAgICAgIHdoaWxlIChpbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHN0cltpbmRleF0gPT09IFwiKlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cltpbmRleCArIDFdID09PSBcIj9cIiAmJiAvW1xcXS4rKV0vLnRlc3Qoc3RyW2luZGV4XSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xvc2VTcXVhcmVJbmRleCAhPT0gLTEgJiYgc3RyW2luZGV4XSA9PT0gXCJbXCIgJiYgc3RyW2luZGV4ICsgMV0gIT09IFwiXVwiKSB7XG4gICAgICAgICAgaWYgKGNsb3NlU3F1YXJlSW5kZXggPCBpbmRleCkge1xuICAgICAgICAgICAgY2xvc2VTcXVhcmVJbmRleCA9IHN0ci5pbmRleE9mKFwiXVwiLCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbG9zZVNxdWFyZUluZGV4ID4gaW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChiYWNrU2xhc2hJbmRleCA9PT0gLTEgfHwgYmFja1NsYXNoSW5kZXggPiBjbG9zZVNxdWFyZUluZGV4KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYmFja1NsYXNoSW5kZXggPSBzdHIuaW5kZXhPZihcIlxcXFxcIiwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlU3F1YXJlSW5kZXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjbG9zZUN1cmx5SW5kZXggIT09IC0xICYmIHN0cltpbmRleF0gPT09IFwie1wiICYmIHN0cltpbmRleCArIDFdICE9PSBcIn1cIikge1xuICAgICAgICAgIGNsb3NlQ3VybHlJbmRleCA9IHN0ci5pbmRleE9mKFwifVwiLCBpbmRleCk7XG4gICAgICAgICAgaWYgKGNsb3NlQ3VybHlJbmRleCA+IGluZGV4KSB7XG4gICAgICAgICAgICBiYWNrU2xhc2hJbmRleCA9IHN0ci5pbmRleE9mKFwiXFxcXFwiLCBpbmRleCk7XG4gICAgICAgICAgICBpZiAoYmFja1NsYXNoSW5kZXggPT09IC0xIHx8IGJhY2tTbGFzaEluZGV4ID4gY2xvc2VDdXJseUluZGV4KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xvc2VQYXJlbkluZGV4ICE9PSAtMSAmJiBzdHJbaW5kZXhdID09PSBcIihcIiAmJiBzdHJbaW5kZXggKyAxXSA9PT0gXCI/XCIgJiYgL1s6IT1dLy50ZXN0KHN0cltpbmRleCArIDJdKSAmJiBzdHJbaW5kZXggKyAzXSAhPT0gXCIpXCIpIHtcbiAgICAgICAgICBjbG9zZVBhcmVuSW5kZXggPSBzdHIuaW5kZXhPZihcIilcIiwgaW5kZXgpO1xuICAgICAgICAgIGlmIChjbG9zZVBhcmVuSW5kZXggPiBpbmRleCkge1xuICAgICAgICAgICAgYmFja1NsYXNoSW5kZXggPSBzdHIuaW5kZXhPZihcIlxcXFxcIiwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlUGFyZW5JbmRleCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBpcGVJbmRleCAhPT0gLTEgJiYgc3RyW2luZGV4XSA9PT0gXCIoXCIgJiYgc3RyW2luZGV4ICsgMV0gIT09IFwifFwiKSB7XG4gICAgICAgICAgaWYgKHBpcGVJbmRleCA8IGluZGV4KSB7XG4gICAgICAgICAgICBwaXBlSW5kZXggPSBzdHIuaW5kZXhPZihcInxcIiwgaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGlwZUluZGV4ICE9PSAtMSAmJiBzdHJbcGlwZUluZGV4ICsgMV0gIT09IFwiKVwiKSB7XG4gICAgICAgICAgICBjbG9zZVBhcmVuSW5kZXggPSBzdHIuaW5kZXhPZihcIilcIiwgcGlwZUluZGV4KTtcbiAgICAgICAgICAgIGlmIChjbG9zZVBhcmVuSW5kZXggPiBwaXBlSW5kZXgpIHtcbiAgICAgICAgICAgICAgYmFja1NsYXNoSW5kZXggPSBzdHIuaW5kZXhPZihcIlxcXFxcIiwgcGlwZUluZGV4KTtcbiAgICAgICAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlUGFyZW5JbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdHJbaW5kZXhdID09PSBcIlxcXFxcIikge1xuICAgICAgICAgIHZhciBvcGVuID0gc3RyW2luZGV4ICsgMV07XG4gICAgICAgICAgaW5kZXggKz0gMjtcbiAgICAgICAgICB2YXIgY2xvc2UgPSBjaGFyc1tvcGVuXTtcbiAgICAgICAgICBpZiAoY2xvc2UpIHtcbiAgICAgICAgICAgIHZhciBuID0gc3RyLmluZGV4T2YoY2xvc2UsIGluZGV4KTtcbiAgICAgICAgICAgIGlmIChuICE9PSAtMSkge1xuICAgICAgICAgICAgICBpbmRleCA9IG4gKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RyW2luZGV4XSA9PT0gXCIhXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICB2YXIgcmVsYXhlZENoZWNrID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgICBpZiAoc3RyWzBdID09PSBcIiFcIikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB3aGlsZSAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgIGlmICgvWyo/e30oKVtcXF1dLy50ZXN0KHN0cltpbmRleF0pKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cltpbmRleF0gPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgdmFyIG9wZW4gPSBzdHJbaW5kZXggKyAxXTtcbiAgICAgICAgICBpbmRleCArPSAyO1xuICAgICAgICAgIHZhciBjbG9zZSA9IGNoYXJzW29wZW5dO1xuICAgICAgICAgIGlmIChjbG9zZSkge1xuICAgICAgICAgICAgdmFyIG4gPSBzdHIuaW5kZXhPZihjbG9zZSwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKG4gIT09IC0xKSB7XG4gICAgICAgICAgICAgIGluZGV4ID0gbiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdHJbaW5kZXhdID09PSBcIiFcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzR2xvYihzdHIsIG9wdGlvbnMpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiIHx8IHN0ciA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNFeHRnbG9iKHN0cikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgY2hlY2sgPSBzdHJpY3RDaGVjaztcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc3RyaWN0ID09PSBmYWxzZSkge1xuICAgICAgICBjaGVjayA9IHJlbGF4ZWRDaGVjaztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjaGVjayhzdHIpO1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZ2xvYl9wYXJlbnQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2dsb2ItcGFyZW50L2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgaXNHbG9iID0gcmVxdWlyZV9pc19nbG9iKCk7XG4gICAgdmFyIHBhdGhQb3NpeERpcm5hbWUgPSByZXF1aXJlKFwicGF0aFwiKS5wb3NpeC5kaXJuYW1lO1xuICAgIHZhciBpc1dpbjMyID0gcmVxdWlyZShcIm9zXCIpLnBsYXRmb3JtKCkgPT09IFwid2luMzJcIjtcbiAgICB2YXIgc2xhc2ggPSBcIi9cIjtcbiAgICB2YXIgYmFja3NsYXNoID0gL1xcXFwvZztcbiAgICB2YXIgZW5jbG9zdXJlID0gL1tcXHtcXFtdLipbXFx9XFxdXSQvO1xuICAgIHZhciBnbG9iYnkgPSAvKF58W15cXFxcXSkoW1xce1xcW118XFwoW15cXCldKyQpLztcbiAgICB2YXIgZXNjYXBlZCA9IC9cXFxcKFtcXCFcXCpcXD9cXHxcXFtcXF1cXChcXClcXHtcXH1dKS9nO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZ1bmN0aW9uIGdsb2JQYXJlbnQoc3RyLCBvcHRzKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBmbGlwQmFja3NsYXNoZXM6IHRydWVcbiAgICAgIH0sIG9wdHMpO1xuICAgICAgaWYgKG9wdGlvbnMuZmxpcEJhY2tzbGFzaGVzICYmIGlzV2luMzIgJiYgc3RyLmluZGV4T2Yoc2xhc2gpIDwgMCkge1xuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShiYWNrc2xhc2gsIHNsYXNoKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNsb3N1cmUudGVzdChzdHIpKSB7XG4gICAgICAgIHN0ciArPSBzbGFzaDtcbiAgICAgIH1cbiAgICAgIHN0ciArPSBcImFcIjtcbiAgICAgIGRvIHtcbiAgICAgICAgc3RyID0gcGF0aFBvc2l4RGlybmFtZShzdHIpO1xuICAgICAgfSB3aGlsZSAoaXNHbG9iKHN0cikgfHwgZ2xvYmJ5LnRlc3Qoc3RyKSk7XG4gICAgICByZXR1cm4gc3RyLnJlcGxhY2UoZXNjYXBlZCwgXCIkMVwiKTtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhdHRlcm4gPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvcGF0dGVybi5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5tYXRjaEFueSA9IGV4cG9ydHMyLmNvbnZlcnRQYXR0ZXJuc1RvUmUgPSBleHBvcnRzMi5tYWtlUmUgPSBleHBvcnRzMi5nZXRQYXR0ZXJuUGFydHMgPSBleHBvcnRzMi5leHBhbmRCcmFjZUV4cGFuc2lvbiA9IGV4cG9ydHMyLmV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uID0gZXhwb3J0czIuaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm4gPSBleHBvcnRzMi5lbmRzV2l0aFNsYXNoR2xvYlN0YXIgPSBleHBvcnRzMi5oYXNHbG9iU3RhciA9IGV4cG9ydHMyLmdldEJhc2VEaXJlY3RvcnkgPSBleHBvcnRzMi5pc1BhdHRlcm5SZWxhdGVkVG9QYXJlbnREaXJlY3RvcnkgPSBleHBvcnRzMi5nZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5ID0gZXhwb3J0czIuZ2V0UGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5ID0gZXhwb3J0czIuZ2V0UG9zaXRpdmVQYXR0ZXJucyA9IGV4cG9ydHMyLmdldE5lZ2F0aXZlUGF0dGVybnMgPSBleHBvcnRzMi5pc1Bvc2l0aXZlUGF0dGVybiA9IGV4cG9ydHMyLmlzTmVnYXRpdmVQYXR0ZXJuID0gZXhwb3J0czIuY29udmVydFRvTmVnYXRpdmVQYXR0ZXJuID0gZXhwb3J0czIuY29udmVydFRvUG9zaXRpdmVQYXR0ZXJuID0gZXhwb3J0czIuaXNEeW5hbWljUGF0dGVybiA9IGV4cG9ydHMyLmlzU3RhdGljUGF0dGVybiA9IHZvaWQgMDtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciBnbG9iUGFyZW50ID0gcmVxdWlyZV9nbG9iX3BhcmVudCgpO1xuICAgIHZhciBtaWNyb21hdGNoID0gcmVxdWlyZV9taWNyb21hdGNoKCk7XG4gICAgdmFyIEdMT0JTVEFSID0gXCIqKlwiO1xuICAgIHZhciBFU0NBUEVfU1lNQk9MID0gXCJcXFxcXCI7XG4gICAgdmFyIENPTU1PTl9HTE9CX1NZTUJPTFNfUkUgPSAvWyo/XXxeIS87XG4gICAgdmFyIFJFR0VYX0NIQVJBQ1RFUl9DTEFTU19TWU1CT0xTX1JFID0gL1xcW1teW10qXS87XG4gICAgdmFyIFJFR0VYX0dST1VQX1NZTUJPTFNfUkUgPSAvKD86XnxbXiEqKz9AXSlcXChbXihdKlxcfFtefF0qXFwpLztcbiAgICB2YXIgR0xPQl9FWFRFTlNJT05fU1lNQk9MU19SRSA9IC9bISorP0BdXFwoW14oXSpcXCkvO1xuICAgIHZhciBCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRSA9IC8sfFxcLlxcLi87XG4gICAgZnVuY3Rpb24gaXNTdGF0aWNQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkge1xuICAgICAgcmV0dXJuICFpc0R5bmFtaWNQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMpO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc1N0YXRpY1BhdHRlcm4gPSBpc1N0YXRpY1BhdHRlcm47XG4gICAgZnVuY3Rpb24gaXNEeW5hbWljUGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHtcbiAgICAgIGlmIChwYXR0ZXJuID09PSBcIlwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmNhc2VTZW5zaXRpdmVNYXRjaCA9PT0gZmFsc2UgfHwgcGF0dGVybi5pbmNsdWRlcyhFU0NBUEVfU1lNQk9MKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChDT01NT05fR0xPQl9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikgfHwgUkVHRVhfQ0hBUkFDVEVSX0NMQVNTX1NZTUJPTFNfUkUudGVzdChwYXR0ZXJuKSB8fCBSRUdFWF9HUk9VUF9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5leHRnbG9iICE9PSBmYWxzZSAmJiBHTE9CX0VYVEVOU0lPTl9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5icmFjZUV4cGFuc2lvbiAhPT0gZmFsc2UgJiYgaGFzQnJhY2VFeHBhbnNpb24ocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzRHluYW1pY1BhdHRlcm4gPSBpc0R5bmFtaWNQYXR0ZXJuO1xuICAgIGZ1bmN0aW9uIGhhc0JyYWNlRXhwYW5zaW9uKHBhdHRlcm4pIHtcbiAgICAgIGNvbnN0IG9wZW5pbmdCcmFjZUluZGV4ID0gcGF0dGVybi5pbmRleE9mKFwie1wiKTtcbiAgICAgIGlmIChvcGVuaW5nQnJhY2VJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xvc2luZ0JyYWNlSW5kZXggPSBwYXR0ZXJuLmluZGV4T2YoXCJ9XCIsIG9wZW5pbmdCcmFjZUluZGV4ICsgMSk7XG4gICAgICBpZiAoY2xvc2luZ0JyYWNlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJyYWNlQ29udGVudCA9IHBhdHRlcm4uc2xpY2Uob3BlbmluZ0JyYWNlSW5kZXgsIGNsb3NpbmdCcmFjZUluZGV4KTtcbiAgICAgIHJldHVybiBCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRS50ZXN0KGJyYWNlQ29udGVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbnZlcnRUb1Bvc2l0aXZlUGF0dGVybihwYXR0ZXJuKSB7XG4gICAgICByZXR1cm4gaXNOZWdhdGl2ZVBhdHRlcm4ocGF0dGVybikgPyBwYXR0ZXJuLnNsaWNlKDEpIDogcGF0dGVybjtcbiAgICB9XG4gICAgZXhwb3J0czIuY29udmVydFRvUG9zaXRpdmVQYXR0ZXJuID0gY29udmVydFRvUG9zaXRpdmVQYXR0ZXJuO1xuICAgIGZ1bmN0aW9uIGNvbnZlcnRUb05lZ2F0aXZlUGF0dGVybihwYXR0ZXJuKSB7XG4gICAgICByZXR1cm4gXCIhXCIgKyBwYXR0ZXJuO1xuICAgIH1cbiAgICBleHBvcnRzMi5jb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4gPSBjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm47XG4gICAgZnVuY3Rpb24gaXNOZWdhdGl2ZVBhdHRlcm4ocGF0dGVybikge1xuICAgICAgcmV0dXJuIHBhdHRlcm4uc3RhcnRzV2l0aChcIiFcIikgJiYgcGF0dGVyblsxXSAhPT0gXCIoXCI7XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzTmVnYXRpdmVQYXR0ZXJuID0gaXNOZWdhdGl2ZVBhdHRlcm47XG4gICAgZnVuY3Rpb24gaXNQb3NpdGl2ZVBhdHRlcm4ocGF0dGVybikge1xuICAgICAgcmV0dXJuICFpc05lZ2F0aXZlUGF0dGVybihwYXR0ZXJuKTtcbiAgICB9XG4gICAgZXhwb3J0czIuaXNQb3NpdGl2ZVBhdHRlcm4gPSBpc1Bvc2l0aXZlUGF0dGVybjtcbiAgICBmdW5jdGlvbiBnZXROZWdhdGl2ZVBhdHRlcm5zKHBhdHRlcm5zKSB7XG4gICAgICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKGlzTmVnYXRpdmVQYXR0ZXJuKTtcbiAgICB9XG4gICAgZXhwb3J0czIuZ2V0TmVnYXRpdmVQYXR0ZXJucyA9IGdldE5lZ2F0aXZlUGF0dGVybnM7XG4gICAgZnVuY3Rpb24gZ2V0UG9zaXRpdmVQYXR0ZXJucyhwYXR0ZXJucykge1xuICAgICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcihpc1Bvc2l0aXZlUGF0dGVybik7XG4gICAgfVxuICAgIGV4cG9ydHMyLmdldFBvc2l0aXZlUGF0dGVybnMgPSBnZXRQb3NpdGl2ZVBhdHRlcm5zO1xuICAgIGZ1bmN0aW9uIGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeShwYXR0ZXJucykge1xuICAgICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcigocGF0dGVybikgPT4gIWlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeShwYXR0ZXJuKSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSA9IGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeTtcbiAgICBmdW5jdGlvbiBnZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5KHBhdHRlcm5zKSB7XG4gICAgICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKGlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmdldFBhdHRlcm5zT3V0c2lkZUN1cnJlbnREaXJlY3RvcnkgPSBnZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5O1xuICAgIGZ1bmN0aW9uIGlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeShwYXR0ZXJuKSB7XG4gICAgICByZXR1cm4gcGF0dGVybi5zdGFydHNXaXRoKFwiLi5cIikgfHwgcGF0dGVybi5zdGFydHNXaXRoKFwiLi8uLlwiKTtcbiAgICB9XG4gICAgZXhwb3J0czIuaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5ID0gaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5O1xuICAgIGZ1bmN0aW9uIGdldEJhc2VEaXJlY3RvcnkocGF0dGVybikge1xuICAgICAgcmV0dXJuIGdsb2JQYXJlbnQocGF0dGVybiwge1xuICAgICAgICBmbGlwQmFja3NsYXNoZXM6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgZXhwb3J0czIuZ2V0QmFzZURpcmVjdG9yeSA9IGdldEJhc2VEaXJlY3Rvcnk7XG4gICAgZnVuY3Rpb24gaGFzR2xvYlN0YXIocGF0dGVybikge1xuICAgICAgcmV0dXJuIHBhdHRlcm4uaW5jbHVkZXMoR0xPQlNUQVIpO1xuICAgIH1cbiAgICBleHBvcnRzMi5oYXNHbG9iU3RhciA9IGhhc0dsb2JTdGFyO1xuICAgIGZ1bmN0aW9uIGVuZHNXaXRoU2xhc2hHbG9iU3RhcihwYXR0ZXJuKSB7XG4gICAgICByZXR1cm4gcGF0dGVybi5lbmRzV2l0aChcIi9cIiArIEdMT0JTVEFSKTtcbiAgICB9XG4gICAgZXhwb3J0czIuZW5kc1dpdGhTbGFzaEdsb2JTdGFyID0gZW5kc1dpdGhTbGFzaEdsb2JTdGFyO1xuICAgIGZ1bmN0aW9uIGlzQWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJuKHBhdHRlcm4pIHtcbiAgICAgIGNvbnN0IGJhc2VuYW1lID0gcGF0aC5iYXNlbmFtZShwYXR0ZXJuKTtcbiAgICAgIHJldHVybiBlbmRzV2l0aFNsYXNoR2xvYlN0YXIocGF0dGVybikgfHwgaXNTdGF0aWNQYXR0ZXJuKGJhc2VuYW1lKTtcbiAgICB9XG4gICAgZXhwb3J0czIuaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm4gPSBpc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybjtcbiAgICBmdW5jdGlvbiBleHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbihwYXR0ZXJucykge1xuICAgICAgcmV0dXJuIHBhdHRlcm5zLnJlZHVjZSgoY29sbGVjdGlvbiwgcGF0dGVybikgPT4ge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5jb25jYXQoZXhwYW5kQnJhY2VFeHBhbnNpb24ocGF0dGVybikpO1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgICBleHBvcnRzMi5leHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbiA9IGV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uO1xuICAgIGZ1bmN0aW9uIGV4cGFuZEJyYWNlRXhwYW5zaW9uKHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiBtaWNyb21hdGNoLmJyYWNlcyhwYXR0ZXJuLCB7XG4gICAgICAgIGV4cGFuZDogdHJ1ZSxcbiAgICAgICAgbm9kdXBlczogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmV4cGFuZEJyYWNlRXhwYW5zaW9uID0gZXhwYW5kQnJhY2VFeHBhbnNpb247XG4gICAgZnVuY3Rpb24gZ2V0UGF0dGVyblBhcnRzKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIHBhcnRzXG4gICAgICB9ID0gbWljcm9tYXRjaC5zY2FuKHBhdHRlcm4sIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHtcbiAgICAgICAgcGFydHM6IHRydWVcbiAgICAgIH0pKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcGFydHMgPSBbcGF0dGVybl07XG4gICAgICB9XG4gICAgICBpZiAocGFydHNbMF0uc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5zbGljZSgxKTtcbiAgICAgICAgcGFydHMudW5zaGlmdChcIlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZXhwb3J0czIuZ2V0UGF0dGVyblBhcnRzID0gZ2V0UGF0dGVyblBhcnRzO1xuICAgIGZ1bmN0aW9uIG1ha2VSZShwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbWljcm9tYXRjaC5tYWtlUmUocGF0dGVybiwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGV4cG9ydHMyLm1ha2VSZSA9IG1ha2VSZTtcbiAgICBmdW5jdGlvbiBjb252ZXJ0UGF0dGVybnNUb1JlKHBhdHRlcm5zLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gcGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBtYWtlUmUocGF0dGVybiwgb3B0aW9ucykpO1xuICAgIH1cbiAgICBleHBvcnRzMi5jb252ZXJ0UGF0dGVybnNUb1JlID0gY29udmVydFBhdHRlcm5zVG9SZTtcbiAgICBmdW5jdGlvbiBtYXRjaEFueShlbnRyeSwgcGF0dGVybnNSZSkge1xuICAgICAgcmV0dXJuIHBhdHRlcm5zUmUuc29tZSgocGF0dGVyblJlKSA9PiBwYXR0ZXJuUmUudGVzdChlbnRyeSkpO1xuICAgIH1cbiAgICBleHBvcnRzMi5tYXRjaEFueSA9IG1hdGNoQW55O1xuICB9XG59KTtcbnZhciByZXF1aXJlX21lcmdlMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvbWVyZ2UyL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgU3RyZWFtID0gcmVxdWlyZShcInN0cmVhbVwiKTtcbiAgICB2YXIgUGFzc1Rocm91Z2ggPSBTdHJlYW0uUGFzc1Rocm91Z2g7XG4gICAgdmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IG1lcmdlMjtcbiAgICBmdW5jdGlvbiBtZXJnZTIoKSB7XG4gICAgICBjb25zdCBzdHJlYW1zUXVldWUgPSBbXTtcbiAgICAgIGNvbnN0IGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICBsZXQgbWVyZ2luZyA9IGZhbHNlO1xuICAgICAgbGV0IG9wdGlvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG4gICAgICBpZiAob3B0aW9ucyAmJiAhQXJyYXkuaXNBcnJheShvcHRpb25zKSAmJiBvcHRpb25zLnBpcGUgPT0gbnVsbCkge1xuICAgICAgICBhcmdzLnBvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgZG9FbmQgPSBvcHRpb25zLmVuZCAhPT0gZmFsc2U7XG4gICAgICBjb25zdCBkb1BpcGVFcnJvciA9IG9wdGlvbnMucGlwZUVycm9yID09PSB0cnVlO1xuICAgICAgaWYgKG9wdGlvbnMub2JqZWN0TW9kZSA9PSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMub2JqZWN0TW9kZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5oaWdoV2F0ZXJNYXJrID09IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5oaWdoV2F0ZXJNYXJrID0gNjQgKiAxMDI0O1xuICAgICAgfVxuICAgICAgY29uc3QgbWVyZ2VkU3RyZWFtID0gUGFzc1Rocm91Z2gob3B0aW9ucyk7XG4gICAgICBmdW5jdGlvbiBhZGRTdHJlYW0oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBzdHJlYW1zUXVldWUucHVzaChwYXVzZVN0cmVhbXMoYXJndW1lbnRzW2ldLCBvcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2VTdHJlYW0oKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBtZXJnZVN0cmVhbSgpIHtcbiAgICAgICAgaWYgKG1lcmdpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2luZyA9IHRydWU7XG4gICAgICAgIGxldCBzdHJlYW1zID0gc3RyZWFtc1F1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIGlmICghc3RyZWFtcykge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW5kU3RyZWFtKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHN0cmVhbXMpKSB7XG4gICAgICAgICAgc3RyZWFtcyA9IFtzdHJlYW1zXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGlwZXNDb3VudCA9IHN0cmVhbXMubGVuZ3RoICsgMTtcbiAgICAgICAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICBpZiAoLS1waXBlc0NvdW50ID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtZXJnaW5nID0gZmFsc2U7XG4gICAgICAgICAgbWVyZ2VTdHJlYW0oKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBwaXBlKHN0cmVhbSkge1xuICAgICAgICAgIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgICAgICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKFwibWVyZ2UyVW5waXBlRW5kXCIsIG9uZW5kKTtcbiAgICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLCBvbmVuZCk7XG4gICAgICAgICAgICBpZiAoZG9QaXBlRXJyb3IpIHtcbiAgICAgICAgICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIiwgb25lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIG9uZXJyb3IoZXJyKSB7XG4gICAgICAgICAgICBtZXJnZWRTdHJlYW0uZW1pdChcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdHJlYW0uX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RyZWFtLm9uKFwibWVyZ2UyVW5waXBlRW5kXCIsIG9uZW5kKTtcbiAgICAgICAgICBzdHJlYW0ub24oXCJlbmRcIiwgb25lbmQpO1xuICAgICAgICAgIGlmIChkb1BpcGVFcnJvcikge1xuICAgICAgICAgICAgc3RyZWFtLm9uKFwiZXJyb3JcIiwgb25lcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0cmVhbS5waXBlKG1lcmdlZFN0cmVhbSwge1xuICAgICAgICAgICAgZW5kOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmVhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBwaXBlKHN0cmVhbXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGVuZFN0cmVhbSgpIHtcbiAgICAgICAgbWVyZ2luZyA9IGZhbHNlO1xuICAgICAgICBtZXJnZWRTdHJlYW0uZW1pdChcInF1ZXVlRHJhaW5cIik7XG4gICAgICAgIGlmIChkb0VuZCkge1xuICAgICAgICAgIG1lcmdlZFN0cmVhbS5lbmQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWVyZ2VkU3RyZWFtLnNldE1heExpc3RlbmVycygwKTtcbiAgICAgIG1lcmdlZFN0cmVhbS5hZGQgPSBhZGRTdHJlYW07XG4gICAgICBtZXJnZWRTdHJlYW0ub24oXCJ1bnBpcGVcIiwgZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KFwibWVyZ2UyVW5waXBlRW5kXCIpO1xuICAgICAgfSk7XG4gICAgICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgYWRkU3RyZWFtLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1lcmdlZFN0cmVhbTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGF1c2VTdHJlYW1zKHN0cmVhbXMsIG9wdGlvbnMpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShzdHJlYW1zKSkge1xuICAgICAgICBpZiAoIXN0cmVhbXMuX3JlYWRhYmxlU3RhdGUgJiYgc3RyZWFtcy5waXBlKSB7XG4gICAgICAgICAgc3RyZWFtcyA9IHN0cmVhbXMucGlwZShQYXNzVGhyb3VnaChvcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdHJlYW1zLl9yZWFkYWJsZVN0YXRlIHx8ICFzdHJlYW1zLnBhdXNlIHx8ICFzdHJlYW1zLnBpcGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IHJlYWRhYmxlIHN0cmVhbSBjYW4gYmUgbWVyZ2VkLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW1zLnBhdXNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gc3RyZWFtcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIHN0cmVhbXNbaV0gPSBwYXVzZVN0cmVhbXMoc3RyZWFtc1tpXSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJlYW1zO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zdHJlYW0gPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvc3RyZWFtLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLm1lcmdlID0gdm9pZCAwO1xuICAgIHZhciBtZXJnZTIgPSByZXF1aXJlX21lcmdlMigpO1xuICAgIGZ1bmN0aW9uIG1lcmdlKHN0cmVhbXMpIHtcbiAgICAgIGNvbnN0IG1lcmdlZFN0cmVhbSA9IG1lcmdlMihzdHJlYW1zKTtcbiAgICAgIHN0cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PiB7XG4gICAgICAgIHN0cmVhbS5vbmNlKFwiZXJyb3JcIiwgKGVycm9yKSA9PiBtZXJnZWRTdHJlYW0uZW1pdChcImVycm9yXCIsIGVycm9yKSk7XG4gICAgICB9KTtcbiAgICAgIG1lcmdlZFN0cmVhbS5vbmNlKFwiY2xvc2VcIiwgKCkgPT4gcHJvcGFnYXRlQ2xvc2VFdmVudFRvU291cmNlcyhzdHJlYW1zKSk7XG4gICAgICBtZXJnZWRTdHJlYW0ub25jZShcImVuZFwiLCAoKSA9PiBwcm9wYWdhdGVDbG9zZUV2ZW50VG9Tb3VyY2VzKHN0cmVhbXMpKTtcbiAgICAgIHJldHVybiBtZXJnZWRTdHJlYW07XG4gICAgfVxuICAgIGV4cG9ydHMyLm1lcmdlID0gbWVyZ2U7XG4gICAgZnVuY3Rpb24gcHJvcGFnYXRlQ2xvc2VFdmVudFRvU291cmNlcyhzdHJlYW1zKSB7XG4gICAgICBzdHJlYW1zLmZvckVhY2goKHN0cmVhbSkgPT4gc3RyZWFtLmVtaXQoXCJjbG9zZVwiKSk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX3N0cmluZzIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvc3RyaW5nLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmlzRW1wdHkgPSBleHBvcnRzMi5pc1N0cmluZyA9IHZvaWQgMDtcbiAgICBmdW5jdGlvbiBpc1N0cmluZyhpbnB1dCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIjtcbiAgICB9XG4gICAgZXhwb3J0czIuaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBmdW5jdGlvbiBpc0VtcHR5KGlucHV0KSB7XG4gICAgICByZXR1cm4gaW5wdXQgPT09IFwiXCI7XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzRW1wdHkgPSBpc0VtcHR5O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3V0aWxzNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5zdHJpbmcgPSBleHBvcnRzMi5zdHJlYW0gPSBleHBvcnRzMi5wYXR0ZXJuID0gZXhwb3J0czIucGF0aCA9IGV4cG9ydHMyLmZzID0gZXhwb3J0czIuZXJybm8gPSBleHBvcnRzMi5hcnJheSA9IHZvaWQgMDtcbiAgICB2YXIgYXJyYXkgPSByZXF1aXJlX2FycmF5MygpO1xuICAgIGV4cG9ydHMyLmFycmF5ID0gYXJyYXk7XG4gICAgdmFyIGVycm5vID0gcmVxdWlyZV9lcnJubygpO1xuICAgIGV4cG9ydHMyLmVycm5vID0gZXJybm87XG4gICAgdmFyIGZzID0gcmVxdWlyZV9mcygpO1xuICAgIGV4cG9ydHMyLmZzID0gZnM7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlX3BhdGgoKTtcbiAgICBleHBvcnRzMi5wYXRoID0gcGF0aDtcbiAgICB2YXIgcGF0dGVybiA9IHJlcXVpcmVfcGF0dGVybigpO1xuICAgIGV4cG9ydHMyLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICAgIHZhciBzdHJlYW0gPSByZXF1aXJlX3N0cmVhbSgpO1xuICAgIGV4cG9ydHMyLnN0cmVhbSA9IHN0cmVhbTtcbiAgICB2YXIgc3RyaW5nID0gcmVxdWlyZV9zdHJpbmcyKCk7XG4gICAgZXhwb3J0czIuc3RyaW5nID0gc3RyaW5nO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3Rhc2tzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L21hbmFnZXJzL3Rhc2tzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLmNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2sgPSBleHBvcnRzMi5jb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MgPSBleHBvcnRzMi5ncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5ID0gZXhwb3J0czIuZ2V0TmVnYXRpdmVQYXR0ZXJuc0FzUG9zaXRpdmUgPSBleHBvcnRzMi5nZXRQb3NpdGl2ZVBhdHRlcm5zID0gZXhwb3J0czIuY29udmVydFBhdHRlcm5zVG9UYXNrcyA9IGV4cG9ydHMyLmdlbmVyYXRlID0gdm9pZCAwO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHM0KCk7XG4gICAgZnVuY3Rpb24gZ2VuZXJhdGUocGF0dGVybnMsIHNldHRpbmdzKSB7XG4gICAgICBjb25zdCBwb3NpdGl2ZVBhdHRlcm5zID0gZ2V0UG9zaXRpdmVQYXR0ZXJucyhwYXR0ZXJucyk7XG4gICAgICBjb25zdCBuZWdhdGl2ZVBhdHRlcm5zID0gZ2V0TmVnYXRpdmVQYXR0ZXJuc0FzUG9zaXRpdmUocGF0dGVybnMsIHNldHRpbmdzLmlnbm9yZSk7XG4gICAgICBjb25zdCBzdGF0aWNQYXR0ZXJucyA9IHBvc2l0aXZlUGF0dGVybnMuZmlsdGVyKChwYXR0ZXJuKSA9PiB1dGlscy5wYXR0ZXJuLmlzU3RhdGljUGF0dGVybihwYXR0ZXJuLCBzZXR0aW5ncykpO1xuICAgICAgY29uc3QgZHluYW1pY1BhdHRlcm5zID0gcG9zaXRpdmVQYXR0ZXJucy5maWx0ZXIoKHBhdHRlcm4pID0+IHV0aWxzLnBhdHRlcm4uaXNEeW5hbWljUGF0dGVybihwYXR0ZXJuLCBzZXR0aW5ncykpO1xuICAgICAgY29uc3Qgc3RhdGljVGFza3MgPSBjb252ZXJ0UGF0dGVybnNUb1Rhc2tzKHN0YXRpY1BhdHRlcm5zLCBuZWdhdGl2ZVBhdHRlcm5zLCBmYWxzZSk7XG4gICAgICBjb25zdCBkeW5hbWljVGFza3MgPSBjb252ZXJ0UGF0dGVybnNUb1Rhc2tzKGR5bmFtaWNQYXR0ZXJucywgbmVnYXRpdmVQYXR0ZXJucywgdHJ1ZSk7XG4gICAgICByZXR1cm4gc3RhdGljVGFza3MuY29uY2F0KGR5bmFtaWNUYXNrcyk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmdlbmVyYXRlID0gZ2VuZXJhdGU7XG4gICAgZnVuY3Rpb24gY29udmVydFBhdHRlcm5zVG9UYXNrcyhwb3NpdGl2ZSwgbmVnYXRpdmUsIGR5bmFtaWMpIHtcbiAgICAgIGNvbnN0IHRhc2tzID0gW107XG4gICAgICBjb25zdCBwYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5ID0gdXRpbHMucGF0dGVybi5nZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5KHBvc2l0aXZlKTtcbiAgICAgIGNvbnN0IHBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSA9IHV0aWxzLnBhdHRlcm4uZ2V0UGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5KHBvc2l0aXZlKTtcbiAgICAgIGNvbnN0IG91dHNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXAgPSBncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5KHBhdHRlcm5zT3V0c2lkZUN1cnJlbnREaXJlY3RvcnkpO1xuICAgICAgY29uc3QgaW5zaWRlQ3VycmVudERpcmVjdG9yeUdyb3VwID0gZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeShwYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkpO1xuICAgICAgdGFza3MucHVzaCguLi5jb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3Mob3V0c2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCwgbmVnYXRpdmUsIGR5bmFtaWMpKTtcbiAgICAgIGlmIChcIi5cIiBpbiBpbnNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXApIHtcbiAgICAgICAgdGFza3MucHVzaChjb252ZXJ0UGF0dGVybkdyb3VwVG9UYXNrKFwiLlwiLCBwYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnksIG5lZ2F0aXZlLCBkeW5hbWljKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXNrcy5wdXNoKC4uLmNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcyhpbnNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXAsIG5lZ2F0aXZlLCBkeW5hbWljKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFza3M7XG4gICAgfVxuICAgIGV4cG9ydHMyLmNvbnZlcnRQYXR0ZXJuc1RvVGFza3MgPSBjb252ZXJ0UGF0dGVybnNUb1Rhc2tzO1xuICAgIGZ1bmN0aW9uIGdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpIHtcbiAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLmdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpO1xuICAgIH1cbiAgICBleHBvcnRzMi5nZXRQb3NpdGl2ZVBhdHRlcm5zID0gZ2V0UG9zaXRpdmVQYXR0ZXJucztcbiAgICBmdW5jdGlvbiBnZXROZWdhdGl2ZVBhdHRlcm5zQXNQb3NpdGl2ZShwYXR0ZXJucywgaWdub3JlKSB7XG4gICAgICBjb25zdCBuZWdhdGl2ZSA9IHV0aWxzLnBhdHRlcm4uZ2V0TmVnYXRpdmVQYXR0ZXJucyhwYXR0ZXJucykuY29uY2F0KGlnbm9yZSk7XG4gICAgICBjb25zdCBwb3NpdGl2ZSA9IG5lZ2F0aXZlLm1hcCh1dGlscy5wYXR0ZXJuLmNvbnZlcnRUb1Bvc2l0aXZlUGF0dGVybik7XG4gICAgICByZXR1cm4gcG9zaXRpdmU7XG4gICAgfVxuICAgIGV4cG9ydHMyLmdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlID0gZ2V0TmVnYXRpdmVQYXR0ZXJuc0FzUG9zaXRpdmU7XG4gICAgZnVuY3Rpb24gZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeShwYXR0ZXJucykge1xuICAgICAgY29uc3QgZ3JvdXAgPSB7fTtcbiAgICAgIHJldHVybiBwYXR0ZXJucy5yZWR1Y2UoKGNvbGxlY3Rpb24sIHBhdHRlcm4pID0+IHtcbiAgICAgICAgY29uc3QgYmFzZSA9IHV0aWxzLnBhdHRlcm4uZ2V0QmFzZURpcmVjdG9yeShwYXR0ZXJuKTtcbiAgICAgICAgaWYgKGJhc2UgaW4gY29sbGVjdGlvbikge1xuICAgICAgICAgIGNvbGxlY3Rpb25bYmFzZV0ucHVzaChwYXR0ZXJuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2xsZWN0aW9uW2Jhc2VdID0gW3BhdHRlcm5dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgfSwgZ3JvdXApO1xuICAgIH1cbiAgICBleHBvcnRzMi5ncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5ID0gZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeTtcbiAgICBmdW5jdGlvbiBjb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MocG9zaXRpdmUsIG5lZ2F0aXZlLCBkeW5hbWljKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMocG9zaXRpdmUpLm1hcCgoYmFzZSkgPT4ge1xuICAgICAgICByZXR1cm4gY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayhiYXNlLCBwb3NpdGl2ZVtiYXNlXSwgbmVnYXRpdmUsIGR5bmFtaWMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcyA9IGNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcztcbiAgICBmdW5jdGlvbiBjb252ZXJ0UGF0dGVybkdyb3VwVG9UYXNrKGJhc2UsIHBvc2l0aXZlLCBuZWdhdGl2ZSwgZHluYW1pYykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZHluYW1pYyxcbiAgICAgICAgcG9zaXRpdmUsXG4gICAgICAgIG5lZ2F0aXZlLFxuICAgICAgICBiYXNlLFxuICAgICAgICBwYXR0ZXJuczogW10uY29uY2F0KHBvc2l0aXZlLCBuZWdhdGl2ZS5tYXAodXRpbHMucGF0dGVybi5jb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4pKVxuICAgICAgfTtcbiAgICB9XG4gICAgZXhwb3J0czIuY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayA9IGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2s7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcGF0dGVybnMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvbWFuYWdlcnMvcGF0dGVybnMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIucmVtb3ZlRHVwbGljYXRlU2xhc2hlcyA9IGV4cG9ydHMyLnRyYW5zZm9ybSA9IHZvaWQgMDtcbiAgICB2YXIgRE9VQkxFX1NMQVNIX1JFID0gLyg/IV4pXFwvezIsfS9nO1xuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybShwYXR0ZXJucykge1xuICAgICAgcmV0dXJuIHBhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gcmVtb3ZlRHVwbGljYXRlU2xhc2hlcyhwYXR0ZXJuKSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVTbGFzaGVzKHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnJlcGxhY2UoRE9VQkxFX1NMQVNIX1JFLCBcIi9cIik7XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlbW92ZUR1cGxpY2F0ZVNsYXNoZXMgPSByZW1vdmVEdXBsaWNhdGVTbGFzaGVzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2FzeW5jMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc3RhdC9vdXQvcHJvdmlkZXJzL2FzeW5jLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLnJlYWQgPSB2b2lkIDA7XG4gICAgZnVuY3Rpb24gcmVhZChwYXRoLCBzZXR0aW5ncywgY2FsbGJhY2spIHtcbiAgICAgIHNldHRpbmdzLmZzLmxzdGF0KHBhdGgsIChsc3RhdEVycm9yLCBsc3RhdCkgPT4ge1xuICAgICAgICBpZiAobHN0YXRFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGxzdGF0RXJyb3IpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxzdGF0LmlzU3ltYm9saWNMaW5rKCkgfHwgIXNldHRpbmdzLmZvbGxvd1N5bWJvbGljTGluaykge1xuICAgICAgICAgIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIGxzdGF0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0dGluZ3MuZnMuc3RhdChwYXRoLCAoc3RhdEVycm9yLCBzdGF0KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xuICAgICAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBzdGF0RXJyb3IpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBsc3RhdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZXR0aW5ncy5tYXJrU3ltYm9saWNMaW5rKSB7XG4gICAgICAgICAgICBzdGF0LmlzU3ltYm9saWNMaW5rID0gKCkgPT4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgc3RhdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlYWQgPSByZWFkO1xuICAgIGZ1bmN0aW9uIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGVycm9yKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIHJlc3VsdCkge1xuICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc3luYzIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L3Byb3ZpZGVycy9zeW5jLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLnJlYWQgPSB2b2lkIDA7XG4gICAgZnVuY3Rpb24gcmVhZChwYXRoLCBzZXR0aW5ncykge1xuICAgICAgY29uc3QgbHN0YXQgPSBzZXR0aW5ncy5mcy5sc3RhdFN5bmMocGF0aCk7XG4gICAgICBpZiAoIWxzdGF0LmlzU3ltYm9saWNMaW5rKCkgfHwgIXNldHRpbmdzLmZvbGxvd1N5bWJvbGljTGluaykge1xuICAgICAgICByZXR1cm4gbHN0YXQ7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzdGF0ID0gc2V0dGluZ3MuZnMuc3RhdFN5bmMocGF0aCk7XG4gICAgICAgIGlmIChzZXR0aW5ncy5tYXJrU3ltYm9saWNMaW5rKSB7XG4gICAgICAgICAgc3RhdC5pc1N5bWJvbGljTGluayA9ICgpID0+IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXQ7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoIXNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xuICAgICAgICAgIHJldHVybiBsc3RhdDtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgZXhwb3J0czIucmVhZCA9IHJlYWQ7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZnMyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zdGF0L291dC9hZGFwdGVycy9mcy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5jcmVhdGVGaWxlU3lzdGVtQWRhcHRlciA9IGV4cG9ydHMyLkZJTEVfU1lTVEVNX0FEQVBURVIgPSB2b2lkIDA7XG4gICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgIGV4cG9ydHMyLkZJTEVfU1lTVEVNX0FEQVBURVIgPSB7XG4gICAgICBsc3RhdDogZnMubHN0YXQsXG4gICAgICBzdGF0OiBmcy5zdGF0LFxuICAgICAgbHN0YXRTeW5jOiBmcy5sc3RhdFN5bmMsXG4gICAgICBzdGF0U3luYzogZnMuc3RhdFN5bmNcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyKGZzTWV0aG9kcykge1xuICAgICAgaWYgKGZzTWV0aG9kcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzMi5GSUxFX1NZU1RFTV9BREFQVEVSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXhwb3J0czIuRklMRV9TWVNURU1fQURBUFRFUiksIGZzTWV0aG9kcyk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyID0gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc2V0dGluZ3MgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L3NldHRpbmdzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBmcyA9IHJlcXVpcmVfZnMyKCk7XG4gICAgdmFyIFNldHRpbmdzID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoX29wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XG4gICAgICAgIHRoaXMuZm9sbG93U3ltYm9saWNMaW5rID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5mb2xsb3dTeW1ib2xpY0xpbmssIHRydWUpO1xuICAgICAgICB0aGlzLmZzID0gZnMuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIodGhpcy5fb3B0aW9ucy5mcyk7XG4gICAgICAgIHRoaXMubWFya1N5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMubWFya1N5bWJvbGljTGluaywgZmFsc2UpO1xuICAgICAgICB0aGlzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIF9nZXRWYWx1ZShvcHRpb24sIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24gIT09IG51bGwgJiYgb3B0aW9uICE9PSB2b2lkIDAgPyBvcHRpb24gOiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBTZXR0aW5ncztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9vdXQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLnN0YXRTeW5jID0gZXhwb3J0czIuc3RhdCA9IGV4cG9ydHMyLlNldHRpbmdzID0gdm9pZCAwO1xuICAgIHZhciBhc3luYyA9IHJlcXVpcmVfYXN5bmMyKCk7XG4gICAgdmFyIHN5bmMgPSByZXF1aXJlX3N5bmMyKCk7XG4gICAgdmFyIHNldHRpbmdzXzEgPSByZXF1aXJlX3NldHRpbmdzKCk7XG4gICAgZXhwb3J0czIuU2V0dGluZ3MgPSBzZXR0aW5nc18xLmRlZmF1bHQ7XG4gICAgZnVuY3Rpb24gc3RhdChwYXRoLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGFzeW5jLnJlYWQocGF0aCwgZ2V0U2V0dGluZ3MoKSwgb3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXN5bmMucmVhZChwYXRoLCBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnN0YXQgPSBzdGF0O1xuICAgIGZ1bmN0aW9uIHN0YXRTeW5jKHBhdGgsIG9wdGlvbnNPclNldHRpbmdzKSB7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzKTtcbiAgICAgIHJldHVybiBzeW5jLnJlYWQocGF0aCwgc2V0dGluZ3MpO1xuICAgIH1cbiAgICBleHBvcnRzMi5zdGF0U3luYyA9IHN0YXRTeW5jO1xuICAgIGZ1bmN0aW9uIGdldFNldHRpbmdzKHNldHRpbmdzT3JPcHRpb25zID0ge30pIHtcbiAgICAgIGlmIChzZXR0aW5nc09yT3B0aW9ucyBpbnN0YW5jZW9mIHNldHRpbmdzXzEuZGVmYXVsdCkge1xuICAgICAgICByZXR1cm4gc2V0dGluZ3NPck9wdGlvbnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChzZXR0aW5nc09yT3B0aW9ucyk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX3F1ZXVlX21pY3JvdGFzayA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcXVldWUtbWljcm90YXNrL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICB2YXIgcHJvbWlzZTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB0eXBlb2YgcXVldWVNaWNyb3Rhc2sgPT09IFwiZnVuY3Rpb25cIiA/IHF1ZXVlTWljcm90YXNrLmJpbmQodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IGdsb2JhbCkgOiAoY2IpID0+IChwcm9taXNlIHx8IChwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCkpKS50aGVuKGNiKS5jYXRjaCgoZXJyKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9LCAwKSk7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcnVuX3BhcmFsbGVsID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9ydW4tcGFyYWxsZWwvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHJ1blBhcmFsbGVsO1xuICAgIHZhciBxdWV1ZU1pY3JvdGFzazIgPSByZXF1aXJlX3F1ZXVlX21pY3JvdGFzaygpO1xuICAgIGZ1bmN0aW9uIHJ1blBhcmFsbGVsKHRhc2tzLCBjYikge1xuICAgICAgbGV0IHJlc3VsdHMsIHBlbmRpbmcsIGtleXM7XG4gICAgICBsZXQgaXNTeW5jID0gdHJ1ZTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhc2tzKSkge1xuICAgICAgICByZXN1bHRzID0gW107XG4gICAgICAgIHBlbmRpbmcgPSB0YXNrcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXModGFza3MpO1xuICAgICAgICByZXN1bHRzID0ge307XG4gICAgICAgIHBlbmRpbmcgPSBrZXlzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7XG4gICAgICAgIGZ1bmN0aW9uIGVuZCgpIHtcbiAgICAgICAgICBpZiAoY2IpXG4gICAgICAgICAgICBjYihlcnIsIHJlc3VsdHMpO1xuICAgICAgICAgIGNiID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTeW5jKVxuICAgICAgICAgIHF1ZXVlTWljcm90YXNrMihlbmQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZW5kKCk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBlYWNoKGksIGVyciwgcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdHNbaV0gPSByZXN1bHQ7XG4gICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDAgfHwgZXJyKSB7XG4gICAgICAgICAgZG9uZShlcnIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgICAgZG9uZShudWxsKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5cykge1xuICAgICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgdGFza3Nba2V5XShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgZWFjaChrZXksIGVyciwgcmVzdWx0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHRhc2ssIGkpIHtcbiAgICAgICAgICB0YXNrKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICBlYWNoKGksIGVyciwgcmVzdWx0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpc1N5bmMgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29uc3RhbnRzNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvY29uc3RhbnRzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLklTX1NVUFBPUlRfUkVBRERJUl9XSVRIX0ZJTEVfVFlQRVMgPSB2b2lkIDA7XG4gICAgdmFyIE5PREVfUFJPQ0VTU19WRVJTSU9OX1BBUlRTID0gcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLnNwbGl0KFwiLlwiKTtcbiAgICBpZiAoTk9ERV9QUk9DRVNTX1ZFUlNJT05fUEFSVFNbMF0gPT09IHZvaWQgMCB8fCBOT0RFX1BST0NFU1NfVkVSU0lPTl9QQVJUU1sxXSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoZSAncHJvY2Vzcy52ZXJzaW9ucy5ub2RlJyB2YXJpYWJsZSBoYXMgaW52YWxpZCB2YWx1ZTogJHtwcm9jZXNzLnZlcnNpb25zLm5vZGV9YCk7XG4gICAgfVxuICAgIHZhciBNQUpPUl9WRVJTSU9OID0gTnVtYmVyLnBhcnNlSW50KE5PREVfUFJPQ0VTU19WRVJTSU9OX1BBUlRTWzBdLCAxMCk7XG4gICAgdmFyIE1JTk9SX1ZFUlNJT04gPSBOdW1iZXIucGFyc2VJbnQoTk9ERV9QUk9DRVNTX1ZFUlNJT05fUEFSVFNbMV0sIDEwKTtcbiAgICB2YXIgU1VQUE9SVEVEX01BSk9SX1ZFUlNJT04gPSAxMDtcbiAgICB2YXIgU1VQUE9SVEVEX01JTk9SX1ZFUlNJT04gPSAxMDtcbiAgICB2YXIgSVNfTUFUQ0hFRF9CWV9NQUpPUiA9IE1BSk9SX1ZFUlNJT04gPiBTVVBQT1JURURfTUFKT1JfVkVSU0lPTjtcbiAgICB2YXIgSVNfTUFUQ0hFRF9CWV9NQUpPUl9BTkRfTUlOT1IgPSBNQUpPUl9WRVJTSU9OID09PSBTVVBQT1JURURfTUFKT1JfVkVSU0lPTiAmJiBNSU5PUl9WRVJTSU9OID49IFNVUFBPUlRFRF9NSU5PUl9WRVJTSU9OO1xuICAgIGV4cG9ydHMyLklTX1NVUFBPUlRfUkVBRERJUl9XSVRIX0ZJTEVfVFlQRVMgPSBJU19NQVRDSEVEX0JZX01BSk9SIHx8IElTX01BVENIRURfQllfTUFKT1JfQU5EX01JTk9SO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2ZzMyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvdXRpbHMvZnMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuY3JlYXRlRGlyZW50RnJvbVN0YXRzID0gdm9pZCAwO1xuICAgIHZhciBEaXJlbnRGcm9tU3RhdHMgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihuYW1lLCBzdGF0cykge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmlzQmxvY2tEZXZpY2UgPSBzdGF0cy5pc0Jsb2NrRGV2aWNlLmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzQ2hhcmFjdGVyRGV2aWNlID0gc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNEaXJlY3RvcnkgPSBzdGF0cy5pc0RpcmVjdG9yeS5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc0ZJRk8gPSBzdGF0cy5pc0ZJRk8uYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNGaWxlID0gc3RhdHMuaXNGaWxlLmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzU29ja2V0ID0gc3RhdHMuaXNTb2NrZXQuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNTeW1ib2xpY0xpbmsgPSBzdGF0cy5pc1N5bWJvbGljTGluay5iaW5kKHN0YXRzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGNyZWF0ZURpcmVudEZyb21TdGF0cyhuYW1lLCBzdGF0cykge1xuICAgICAgcmV0dXJuIG5ldyBEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpO1xuICAgIH1cbiAgICBleHBvcnRzMi5jcmVhdGVEaXJlbnRGcm9tU3RhdHMgPSBjcmVhdGVEaXJlbnRGcm9tU3RhdHM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdXRpbHM1ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC91dGlscy9pbmRleC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5mcyA9IHZvaWQgMDtcbiAgICB2YXIgZnMgPSByZXF1aXJlX2ZzMygpO1xuICAgIGV4cG9ydHMyLmZzID0gZnM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29tbW9uMyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvcHJvdmlkZXJzL2NvbW1vbi5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5qb2luUGF0aFNlZ21lbnRzID0gdm9pZCAwO1xuICAgIGZ1bmN0aW9uIGpvaW5QYXRoU2VnbWVudHMoYSwgYiwgc2VwYXJhdG9yKSB7XG4gICAgICBpZiAoYS5lbmRzV2l0aChzZXBhcmF0b3IpKSB7XG4gICAgICAgIHJldHVybiBhICsgYjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhICsgc2VwYXJhdG9yICsgYjtcbiAgICB9XG4gICAgZXhwb3J0czIuam9pblBhdGhTZWdtZW50cyA9IGpvaW5QYXRoU2VnbWVudHM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfYXN5bmMzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9wcm92aWRlcnMvYXN5bmMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIucmVhZGRpciA9IGV4cG9ydHMyLnJlYWRkaXJXaXRoRmlsZVR5cGVzID0gZXhwb3J0czIucmVhZCA9IHZvaWQgMDtcbiAgICB2YXIgZnNTdGF0ID0gcmVxdWlyZV9vdXQoKTtcbiAgICB2YXIgcnBsID0gcmVxdWlyZV9ydW5fcGFyYWxsZWwoKTtcbiAgICB2YXIgY29uc3RhbnRzXzEgPSByZXF1aXJlX2NvbnN0YW50czQoKTtcbiAgICB2YXIgdXRpbHMgPSByZXF1aXJlX3V0aWxzNSgpO1xuICAgIHZhciBjb21tb24gPSByZXF1aXJlX2NvbW1vbjMoKTtcbiAgICBmdW5jdGlvbiByZWFkKGRpcmVjdG9yeSwgc2V0dGluZ3MsIGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIXNldHRpbmdzLnN0YXRzICYmIGNvbnN0YW50c18xLklTX1NVUFBPUlRfUkVBRERJUl9XSVRIX0ZJTEVfVFlQRVMpIHtcbiAgICAgICAgcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZWFkZGlyKGRpcmVjdG9yeSwgc2V0dGluZ3MsIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgZXhwb3J0czIucmVhZCA9IHJlYWQ7XG4gICAgZnVuY3Rpb24gcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spIHtcbiAgICAgIHNldHRpbmdzLmZzLnJlYWRkaXIoZGlyZWN0b3J5LCB7XG4gICAgICAgIHdpdGhGaWxlVHlwZXM6IHRydWVcbiAgICAgIH0sIChyZWFkZGlyRXJyb3IsIGRpcmVudHMpID0+IHtcbiAgICAgICAgaWYgKHJlYWRkaXJFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIHJlYWRkaXJFcnJvcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBkaXJlbnRzLm1hcCgoZGlyZW50KSA9PiAoe1xuICAgICAgICAgIGRpcmVudCxcbiAgICAgICAgICBuYW1lOiBkaXJlbnQubmFtZSxcbiAgICAgICAgICBwYXRoOiBjb21tb24uam9pblBhdGhTZWdtZW50cyhkaXJlY3RvcnksIGRpcmVudC5uYW1lLCBzZXR0aW5ncy5wYXRoU2VnbWVudFNlcGFyYXRvcilcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAoIXNldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3MpIHtcbiAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBlbnRyaWVzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFza3MgPSBlbnRyaWVzLm1hcCgoZW50cnkpID0+IG1ha2VScGxUYXNrRW50cnkoZW50cnksIHNldHRpbmdzKSk7XG4gICAgICAgIHJwbCh0YXNrcywgKHJwbEVycm9yLCBycGxFbnRyaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJwbEVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBycGxFcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIHJwbEVudHJpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBleHBvcnRzMi5yZWFkZGlyV2l0aEZpbGVUeXBlcyA9IHJlYWRkaXJXaXRoRmlsZVR5cGVzO1xuICAgIGZ1bmN0aW9uIG1ha2VScGxUYXNrRW50cnkoZW50cnksIHNldHRpbmdzKSB7XG4gICAgICByZXR1cm4gKGRvbmUpID0+IHtcbiAgICAgICAgaWYgKCFlbnRyeS5kaXJlbnQuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgICAgIGRvbmUobnVsbCwgZW50cnkpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXR0aW5ncy5mcy5zdGF0KGVudHJ5LnBhdGgsIChzdGF0RXJyb3IsIHN0YXRzKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xuICAgICAgICAgICAgICBkb25lKHN0YXRFcnJvcik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvbmUobnVsbCwgZW50cnkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbnRyeS5kaXJlbnQgPSB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMoZW50cnkubmFtZSwgc3RhdHMpO1xuICAgICAgICAgIGRvbmUobnVsbCwgZW50cnkpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlYWRkaXIoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spIHtcbiAgICAgIHNldHRpbmdzLmZzLnJlYWRkaXIoZGlyZWN0b3J5LCAocmVhZGRpckVycm9yLCBuYW1lcykgPT4ge1xuICAgICAgICBpZiAocmVhZGRpckVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgcmVhZGRpckVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFza3MgPSBuYW1lcy5tYXAoKG5hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRoID0gY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBuYW1lLCBzZXR0aW5ncy5wYXRoU2VnbWVudFNlcGFyYXRvcik7XG4gICAgICAgICAgcmV0dXJuIChkb25lKSA9PiB7XG4gICAgICAgICAgICBmc1N0YXQuc3RhdChwYXRoLCBzZXR0aW5ncy5mc1N0YXRTZXR0aW5ncywgKGVycm9yLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkb25lKGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSB7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIGRpcmVudDogdXRpbHMuZnMuY3JlYXRlRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBpZiAoc2V0dGluZ3Muc3RhdHMpIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5zdGF0cyA9IHN0YXRzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRvbmUobnVsbCwgZW50cnkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJwbCh0YXNrcywgKHJwbEVycm9yLCBlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJwbEVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBycGxFcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIGVudHJpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBleHBvcnRzMi5yZWFkZGlyID0gcmVhZGRpcjtcbiAgICBmdW5jdGlvbiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCByZXN1bHQpIHtcbiAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX3N5bmMzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9wcm92aWRlcnMvc3luYy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5yZWFkZGlyID0gZXhwb3J0czIucmVhZGRpcldpdGhGaWxlVHlwZXMgPSBleHBvcnRzMi5yZWFkID0gdm9pZCAwO1xuICAgIHZhciBmc1N0YXQgPSByZXF1aXJlX291dCgpO1xuICAgIHZhciBjb25zdGFudHNfMSA9IHJlcXVpcmVfY29uc3RhbnRzNCgpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHM1KCk7XG4gICAgdmFyIGNvbW1vbiA9IHJlcXVpcmVfY29tbW9uMygpO1xuICAgIGZ1bmN0aW9uIHJlYWQoZGlyZWN0b3J5LCBzZXR0aW5ncykge1xuICAgICAgaWYgKCFzZXR0aW5ncy5zdGF0cyAmJiBjb25zdGFudHNfMS5JU19TVVBQT1JUX1JFQURESVJfV0lUSF9GSUxFX1RZUEVTKSB7XG4gICAgICAgIHJldHVybiByZWFkZGlyV2l0aEZpbGVUeXBlcyhkaXJlY3RvcnksIHNldHRpbmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWFkZGlyKGRpcmVjdG9yeSwgc2V0dGluZ3MpO1xuICAgIH1cbiAgICBleHBvcnRzMi5yZWFkID0gcmVhZDtcbiAgICBmdW5jdGlvbiByZWFkZGlyV2l0aEZpbGVUeXBlcyhkaXJlY3RvcnksIHNldHRpbmdzKSB7XG4gICAgICBjb25zdCBkaXJlbnRzID0gc2V0dGluZ3MuZnMucmVhZGRpclN5bmMoZGlyZWN0b3J5LCB7XG4gICAgICAgIHdpdGhGaWxlVHlwZXM6IHRydWVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRpcmVudHMubWFwKChkaXJlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB7XG4gICAgICAgICAgZGlyZW50LFxuICAgICAgICAgIG5hbWU6IGRpcmVudC5uYW1lLFxuICAgICAgICAgIHBhdGg6IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGRpcmVjdG9yeSwgZGlyZW50Lm5hbWUsIHNldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCkgJiYgc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0cyA9IHNldHRpbmdzLmZzLnN0YXRTeW5jKGVudHJ5LnBhdGgpO1xuICAgICAgICAgICAgZW50cnkuZGlyZW50ID0gdXRpbHMuZnMuY3JlYXRlRGlyZW50RnJvbVN0YXRzKGVudHJ5Lm5hbWUsIHN0YXRzKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlYWRkaXJXaXRoRmlsZVR5cGVzID0gcmVhZGRpcldpdGhGaWxlVHlwZXM7XG4gICAgZnVuY3Rpb24gcmVhZGRpcihkaXJlY3RvcnksIHNldHRpbmdzKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IHNldHRpbmdzLmZzLnJlYWRkaXJTeW5jKGRpcmVjdG9yeSk7XG4gICAgICByZXR1cm4gbmFtZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5UGF0aCA9IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGRpcmVjdG9yeSwgbmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBzdGF0cyA9IGZzU3RhdC5zdGF0U3luYyhlbnRyeVBhdGgsIHNldHRpbmdzLmZzU3RhdFNldHRpbmdzKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBwYXRoOiBlbnRyeVBhdGgsXG4gICAgICAgICAgZGlyZW50OiB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpXG4gICAgICAgIH07XG4gICAgICAgIGlmIChzZXR0aW5ncy5zdGF0cykge1xuICAgICAgICAgIGVudHJ5LnN0YXRzID0gc3RhdHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlYWRkaXIgPSByZWFkZGlyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2ZzNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvYWRhcHRlcnMvZnMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIgPSBleHBvcnRzMi5GSUxFX1NZU1RFTV9BREFQVEVSID0gdm9pZCAwO1xuICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICBleHBvcnRzMi5GSUxFX1NZU1RFTV9BREFQVEVSID0ge1xuICAgICAgbHN0YXQ6IGZzLmxzdGF0LFxuICAgICAgc3RhdDogZnMuc3RhdCxcbiAgICAgIGxzdGF0U3luYzogZnMubHN0YXRTeW5jLFxuICAgICAgc3RhdFN5bmM6IGZzLnN0YXRTeW5jLFxuICAgICAgcmVhZGRpcjogZnMucmVhZGRpcixcbiAgICAgIHJlYWRkaXJTeW5jOiBmcy5yZWFkZGlyU3luY1xuICAgIH07XG4gICAgZnVuY3Rpb24gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIoZnNNZXRob2RzKSB7XG4gICAgICBpZiAoZnNNZXRob2RzID09PSB2b2lkIDApIHtcbiAgICAgICAgcmV0dXJuIGV4cG9ydHMyLkZJTEVfU1lTVEVNX0FEQVBURVI7XG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBleHBvcnRzMi5GSUxFX1NZU1RFTV9BREFQVEVSKSwgZnNNZXRob2RzKTtcbiAgICB9XG4gICAgZXhwb3J0czIuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIgPSBjcmVhdGVGaWxlU3lzdGVtQWRhcHRlcjtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zZXR0aW5nczIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L3NldHRpbmdzLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgdmFyIGZzU3RhdCA9IHJlcXVpcmVfb3V0KCk7XG4gICAgdmFyIGZzID0gcmVxdWlyZV9mczQoKTtcbiAgICB2YXIgU2V0dGluZ3MgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcihfb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucztcbiAgICAgICAgdGhpcy5mb2xsb3dTeW1ib2xpY0xpbmtzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5mb2xsb3dTeW1ib2xpY0xpbmtzLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZnMgPSBmcy5jcmVhdGVGaWxlU3lzdGVtQWRhcHRlcih0aGlzLl9vcHRpb25zLmZzKTtcbiAgICAgICAgdGhpcy5wYXRoU2VnbWVudFNlcGFyYXRvciA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMucGF0aFNlZ21lbnRTZXBhcmF0b3IsIHBhdGguc2VwKTtcbiAgICAgICAgdGhpcy5zdGF0cyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuc3RhdHMsIGZhbHNlKTtcbiAgICAgICAgdGhpcy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmsgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZnNTdGF0U2V0dGluZ3MgPSBuZXcgZnNTdGF0LlNldHRpbmdzKHtcbiAgICAgICAgICBmb2xsb3dTeW1ib2xpY0xpbms6IHRoaXMuZm9sbG93U3ltYm9saWNMaW5rcyxcbiAgICAgICAgICBmczogdGhpcy5mcyxcbiAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiAhPT0gbnVsbCAmJiBvcHRpb24gIT09IHZvaWQgMCA/IG9wdGlvbiA6IHZhbHVlO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IFNldHRpbmdzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX291dDIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLlNldHRpbmdzID0gZXhwb3J0czIuc2NhbmRpclN5bmMgPSBleHBvcnRzMi5zY2FuZGlyID0gdm9pZCAwO1xuICAgIHZhciBhc3luYyA9IHJlcXVpcmVfYXN5bmMzKCk7XG4gICAgdmFyIHN5bmMgPSByZXF1aXJlX3N5bmMzKCk7XG4gICAgdmFyIHNldHRpbmdzXzEgPSByZXF1aXJlX3NldHRpbmdzMigpO1xuICAgIGV4cG9ydHMyLlNldHRpbmdzID0gc2V0dGluZ3NfMS5kZWZhdWx0O1xuICAgIGZ1bmN0aW9uIHNjYW5kaXIocGF0aCwgb3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrLCBjYWxsYmFjaykge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBhc3luYy5yZWFkKHBhdGgsIGdldFNldHRpbmdzKCksIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGFzeW5jLnJlYWQocGF0aCwgZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrKSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICBleHBvcnRzMi5zY2FuZGlyID0gc2NhbmRpcjtcbiAgICBmdW5jdGlvbiBzY2FuZGlyU3luYyhwYXRoLCBvcHRpb25zT3JTZXR0aW5ncykge1xuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5ncyk7XG4gICAgICByZXR1cm4gc3luYy5yZWFkKHBhdGgsIHNldHRpbmdzKTtcbiAgICB9XG4gICAgZXhwb3J0czIuc2NhbmRpclN5bmMgPSBzY2FuZGlyU3luYztcbiAgICBmdW5jdGlvbiBnZXRTZXR0aW5ncyhzZXR0aW5nc09yT3B0aW9ucyA9IHt9KSB7XG4gICAgICBpZiAoc2V0dGluZ3NPck9wdGlvbnMgaW5zdGFuY2VvZiBzZXR0aW5nc18xLmRlZmF1bHQpIHtcbiAgICAgICAgcmV0dXJuIHNldHRpbmdzT3JPcHRpb25zO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBzZXR0aW5nc18xLmRlZmF1bHQoc2V0dGluZ3NPck9wdGlvbnMpO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9yZXVzaWZ5ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9yZXVzaWZ5L3JldXNpZnkuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIHJldXNpZnkoQ29uc3RydWN0b3IpIHtcbiAgICAgIHZhciBoZWFkID0gbmV3IENvbnN0cnVjdG9yKCk7XG4gICAgICB2YXIgdGFpbCA9IGhlYWQ7XG4gICAgICBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHZhciBjdXJyZW50ID0gaGVhZDtcbiAgICAgICAgaWYgKGN1cnJlbnQubmV4dCkge1xuICAgICAgICAgIGhlYWQgPSBjdXJyZW50Lm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGVhZCA9IG5ldyBDb25zdHJ1Y3RvcigpO1xuICAgICAgICAgIHRhaWwgPSBoZWFkO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQubmV4dCA9IG51bGw7XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcmVsZWFzZShvYmopIHtcbiAgICAgICAgdGFpbC5uZXh0ID0gb2JqO1xuICAgICAgICB0YWlsID0gb2JqO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0LFxuICAgICAgICByZWxlYXNlXG4gICAgICB9O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSByZXVzaWZ5O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3F1ZXVlID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mYXN0cS9xdWV1ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHJldXNpZnkgPSByZXF1aXJlX3JldXNpZnkoKTtcbiAgICBmdW5jdGlvbiBmYXN0cXVldWUoY29udGV4dCwgd29ya2VyLCBjb25jdXJyZW5jeSkge1xuICAgICAgaWYgKHR5cGVvZiBjb250ZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uY3VycmVuY3kgPSB3b3JrZXI7XG4gICAgICAgIHdvcmtlciA9IGNvbnRleHQ7XG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGNvbmN1cnJlbmN5IDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmYXN0cXVldWUgY29uY3VycmVuY3kgbXVzdCBiZSBncmVhdGVyIHRoYW4gMVwiKTtcbiAgICAgIH1cbiAgICAgIHZhciBjYWNoZSA9IHJldXNpZnkoVGFzayk7XG4gICAgICB2YXIgcXVldWVIZWFkID0gbnVsbDtcbiAgICAgIHZhciBxdWV1ZVRhaWwgPSBudWxsO1xuICAgICAgdmFyIF9ydW5uaW5nID0gMDtcbiAgICAgIHZhciBlcnJvckhhbmRsZXIgPSBudWxsO1xuICAgICAgdmFyIHNlbGYyID0ge1xuICAgICAgICBwdXNoLFxuICAgICAgICBkcmFpbjogbm9vcCxcbiAgICAgICAgc2F0dXJhdGVkOiBub29wLFxuICAgICAgICBwYXVzZSxcbiAgICAgICAgcGF1c2VkOiBmYWxzZSxcbiAgICAgICAgY29uY3VycmVuY3ksXG4gICAgICAgIHJ1bm5pbmcsXG4gICAgICAgIHJlc3VtZSxcbiAgICAgICAgaWRsZSxcbiAgICAgICAgbGVuZ3RoLFxuICAgICAgICBnZXRRdWV1ZSxcbiAgICAgICAgdW5zaGlmdCxcbiAgICAgICAgZW1wdHk6IG5vb3AsXG4gICAgICAgIGtpbGwsXG4gICAgICAgIGtpbGxBbmREcmFpbixcbiAgICAgICAgZXJyb3JcbiAgICAgIH07XG4gICAgICByZXR1cm4gc2VsZjI7XG4gICAgICBmdW5jdGlvbiBydW5uaW5nKCkge1xuICAgICAgICByZXR1cm4gX3J1bm5pbmc7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICAgICAgc2VsZjIucGF1c2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxlbmd0aCgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnQgPSBxdWV1ZUhlYWQ7XG4gICAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY291bnRlcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGdldFF1ZXVlKCkge1xuICAgICAgICB2YXIgY3VycmVudCA9IHF1ZXVlSGVhZDtcbiAgICAgICAgdmFyIHRhc2tzID0gW107XG4gICAgICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICAgICAgdGFza3MucHVzaChjdXJyZW50LnZhbHVlKTtcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXNrcztcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICAgICAgaWYgKCFzZWxmMi5wYXVzZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZWxmMi5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmMi5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgX3J1bm5pbmcrKztcbiAgICAgICAgICByZWxlYXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlkbGUoKSB7XG4gICAgICAgIHJldHVybiBfcnVubmluZyA9PT0gMCAmJiBzZWxmMi5sZW5ndGgoKSA9PT0gMDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHB1c2godmFsdWUsIGRvbmUpIHtcbiAgICAgICAgdmFyIGN1cnJlbnQgPSBjYWNoZS5nZXQoKTtcbiAgICAgICAgY3VycmVudC5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgY3VycmVudC5yZWxlYXNlID0gcmVsZWFzZTtcbiAgICAgICAgY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBjdXJyZW50LmNhbGxiYWNrID0gZG9uZSB8fCBub29wO1xuICAgICAgICBjdXJyZW50LmVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcjtcbiAgICAgICAgaWYgKF9ydW5uaW5nID09PSBzZWxmMi5jb25jdXJyZW5jeSB8fCBzZWxmMi5wYXVzZWQpIHtcbiAgICAgICAgICBpZiAocXVldWVUYWlsKSB7XG4gICAgICAgICAgICBxdWV1ZVRhaWwubmV4dCA9IGN1cnJlbnQ7XG4gICAgICAgICAgICBxdWV1ZVRhaWwgPSBjdXJyZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxdWV1ZUhlYWQgPSBjdXJyZW50O1xuICAgICAgICAgICAgcXVldWVUYWlsID0gY3VycmVudDtcbiAgICAgICAgICAgIHNlbGYyLnNhdHVyYXRlZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfcnVubmluZysrO1xuICAgICAgICAgIHdvcmtlci5jYWxsKGNvbnRleHQsIGN1cnJlbnQudmFsdWUsIGN1cnJlbnQud29ya2VkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gdW5zaGlmdCh2YWx1ZSwgZG9uZSkge1xuICAgICAgICB2YXIgY3VycmVudCA9IGNhY2hlLmdldCgpO1xuICAgICAgICBjdXJyZW50LmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICBjdXJyZW50LnJlbGVhc2UgPSByZWxlYXNlO1xuICAgICAgICBjdXJyZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGN1cnJlbnQuY2FsbGJhY2sgPSBkb25lIHx8IG5vb3A7XG4gICAgICAgIGlmIChfcnVubmluZyA9PT0gc2VsZjIuY29uY3VycmVuY3kgfHwgc2VsZjIucGF1c2VkKSB7XG4gICAgICAgICAgaWYgKHF1ZXVlSGVhZCkge1xuICAgICAgICAgICAgY3VycmVudC5uZXh0ID0gcXVldWVIZWFkO1xuICAgICAgICAgICAgcXVldWVIZWFkID0gY3VycmVudDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVldWVIZWFkID0gY3VycmVudDtcbiAgICAgICAgICAgIHF1ZXVlVGFpbCA9IGN1cnJlbnQ7XG4gICAgICAgICAgICBzZWxmMi5zYXR1cmF0ZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3J1bm5pbmcrKztcbiAgICAgICAgICB3b3JrZXIuY2FsbChjb250ZXh0LCBjdXJyZW50LnZhbHVlLCBjdXJyZW50LndvcmtlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHJlbGVhc2UoaG9sZGVyKSB7XG4gICAgICAgIGlmIChob2xkZXIpIHtcbiAgICAgICAgICBjYWNoZS5yZWxlYXNlKGhvbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5leHQgPSBxdWV1ZUhlYWQ7XG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgaWYgKCFzZWxmMi5wYXVzZWQpIHtcbiAgICAgICAgICAgIGlmIChxdWV1ZVRhaWwgPT09IHF1ZXVlSGVhZCkge1xuICAgICAgICAgICAgICBxdWV1ZVRhaWwgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVldWVIZWFkID0gbmV4dC5uZXh0O1xuICAgICAgICAgICAgbmV4dC5uZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIHdvcmtlci5jYWxsKGNvbnRleHQsIG5leHQudmFsdWUsIG5leHQud29ya2VkKTtcbiAgICAgICAgICAgIGlmIChxdWV1ZVRhaWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgc2VsZjIuZW1wdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3J1bm5pbmctLTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoLS1fcnVubmluZyA9PT0gMCkge1xuICAgICAgICAgIHNlbGYyLmRyYWluKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGtpbGwoKSB7XG4gICAgICAgIHF1ZXVlSGVhZCA9IG51bGw7XG4gICAgICAgIHF1ZXVlVGFpbCA9IG51bGw7XG4gICAgICAgIHNlbGYyLmRyYWluID0gbm9vcDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGtpbGxBbmREcmFpbigpIHtcbiAgICAgICAgcXVldWVIZWFkID0gbnVsbDtcbiAgICAgICAgcXVldWVUYWlsID0gbnVsbDtcbiAgICAgICAgc2VsZjIuZHJhaW4oKTtcbiAgICAgICAgc2VsZjIuZHJhaW4gPSBub29wO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZXJyb3IoaGFuZGxlcikge1xuICAgICAgICBlcnJvckhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBub29wKCkge1xuICAgIH1cbiAgICBmdW5jdGlvbiBUYXNrKCkge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLmNhbGxiYWNrID0gbm9vcDtcbiAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICB0aGlzLnJlbGVhc2UgPSBub29wO1xuICAgICAgdGhpcy5jb250ZXh0ID0gbnVsbDtcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gbnVsbDtcbiAgICAgIHZhciBzZWxmMiA9IHRoaXM7XG4gICAgICB0aGlzLndvcmtlZCA9IGZ1bmN0aW9uIHdvcmtlZChlcnIsIHJlc3VsdCkge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSBzZWxmMi5jYWxsYmFjaztcbiAgICAgICAgdmFyIGVycm9ySGFuZGxlciA9IHNlbGYyLmVycm9ySGFuZGxlcjtcbiAgICAgICAgdmFyIHZhbCA9IHNlbGYyLnZhbHVlO1xuICAgICAgICBzZWxmMi52YWx1ZSA9IG51bGw7XG4gICAgICAgIHNlbGYyLmNhbGxiYWNrID0gbm9vcDtcbiAgICAgICAgaWYgKHNlbGYyLmVycm9ySGFuZGxlcikge1xuICAgICAgICAgIGVycm9ySGFuZGxlcihlcnIsIHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2suY2FsbChzZWxmMi5jb250ZXh0LCBlcnIsIHJlc3VsdCk7XG4gICAgICAgIHNlbGYyLnJlbGVhc2Uoc2VsZjIpO1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcXVldWVBc1Byb21pc2VkKGNvbnRleHQsIHdvcmtlciwgY29uY3VycmVuY3kpIHtcbiAgICAgIGlmICh0eXBlb2YgY29udGV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbmN1cnJlbmN5ID0gd29ya2VyO1xuICAgICAgICB3b3JrZXIgPSBjb250ZXh0O1xuICAgICAgICBjb250ZXh0ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGFzeW5jV3JhcHBlcihhcmcsIGNiKSB7XG4gICAgICAgIHdvcmtlci5jYWxsKHRoaXMsIGFyZykudGhlbihmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICBjYihudWxsLCByZXMpO1xuICAgICAgICB9LCBjYik7XG4gICAgICB9XG4gICAgICB2YXIgcXVldWUgPSBmYXN0cXVldWUoY29udGV4dCwgYXN5bmNXcmFwcGVyLCBjb25jdXJyZW5jeSk7XG4gICAgICB2YXIgcHVzaENiID0gcXVldWUucHVzaDtcbiAgICAgIHZhciB1bnNoaWZ0Q2IgPSBxdWV1ZS51bnNoaWZ0O1xuICAgICAgcXVldWUucHVzaCA9IHB1c2g7XG4gICAgICBxdWV1ZS51bnNoaWZ0ID0gdW5zaGlmdDtcbiAgICAgIHF1ZXVlLmRyYWluZWQgPSBkcmFpbmVkO1xuICAgICAgcmV0dXJuIHF1ZXVlO1xuICAgICAgZnVuY3Rpb24gcHVzaCh2YWx1ZSkge1xuICAgICAgICB2YXIgcCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIHB1c2hDYih2YWx1ZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHAuY2F0Y2gobm9vcCk7XG4gICAgICAgIHJldHVybiBwO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gdW5zaGlmdCh2YWx1ZSkge1xuICAgICAgICB2YXIgcCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIHVuc2hpZnRDYih2YWx1ZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHAuY2F0Y2gobm9vcCk7XG4gICAgICAgIHJldHVybiBwO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZHJhaW5lZCgpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzRHJhaW4gPSBxdWV1ZS5kcmFpbjtcbiAgICAgICAgdmFyIHAgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICAgICAgcXVldWUuZHJhaW4gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHByZXZpb3VzRHJhaW4oKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZhc3RxdWV1ZTtcbiAgICBtb2R1bGUyLmV4cG9ydHMucHJvbWlzZSA9IHF1ZXVlQXNQcm9taXNlZDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb21tb240ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL2NvbW1vbi5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICBleHBvcnRzMi5qb2luUGF0aFNlZ21lbnRzID0gZXhwb3J0czIucmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yID0gZXhwb3J0czIuaXNBcHBsaWVkRmlsdGVyID0gZXhwb3J0czIuaXNGYXRhbEVycm9yID0gdm9pZCAwO1xuICAgIGZ1bmN0aW9uIGlzRmF0YWxFcnJvcihzZXR0aW5ncywgZXJyb3IpIHtcbiAgICAgIGlmIChzZXR0aW5ncy5lcnJvckZpbHRlciA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhc2V0dGluZ3MuZXJyb3JGaWx0ZXIoZXJyb3IpO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc0ZhdGFsRXJyb3IgPSBpc0ZhdGFsRXJyb3I7XG4gICAgZnVuY3Rpb24gaXNBcHBsaWVkRmlsdGVyKGZpbHRlciwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gICAgZXhwb3J0czIuaXNBcHBsaWVkRmlsdGVyID0gaXNBcHBsaWVkRmlsdGVyO1xuICAgIGZ1bmN0aW9uIHJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvcihmaWxlcGF0aCwgc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gZmlsZXBhdGguc3BsaXQoL1svXFxcXF0vKS5qb2luKHNlcGFyYXRvcik7XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvciA9IHJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvcjtcbiAgICBmdW5jdGlvbiBqb2luUGF0aFNlZ21lbnRzKGEsIGIsIHNlcGFyYXRvcikge1xuICAgICAgaWYgKGEgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIGI7XG4gICAgICB9XG4gICAgICBpZiAoYS5lbmRzV2l0aChzZXBhcmF0b3IpKSB7XG4gICAgICAgIHJldHVybiBhICsgYjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhICsgc2VwYXJhdG9yICsgYjtcbiAgICB9XG4gICAgZXhwb3J0czIuam9pblBhdGhTZWdtZW50cyA9IGpvaW5QYXRoU2VnbWVudHM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcmVhZGVyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL3JlYWRlci5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgY29tbW9uID0gcmVxdWlyZV9jb21tb240KCk7XG4gICAgdmFyIFJlYWRlciA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKF9yb290LCBfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fcm9vdCA9IF9yb290O1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fcm9vdCA9IGNvbW1vbi5yZXBsYWNlUGF0aFNlZ21lbnRTZXBhcmF0b3IoX3Jvb3QsIF9zZXR0aW5ncy5wYXRoU2VnbWVudFNlcGFyYXRvcik7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gUmVhZGVyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2FzeW5jNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMud2Fsay9vdXQvcmVhZGVycy9hc3luYy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgZXZlbnRzXzEgPSByZXF1aXJlKFwiZXZlbnRzXCIpO1xuICAgIHZhciBmc1NjYW5kaXIgPSByZXF1aXJlX291dDIoKTtcbiAgICB2YXIgZmFzdHEgPSByZXF1aXJlX3F1ZXVlKCk7XG4gICAgdmFyIGNvbW1vbiA9IHJlcXVpcmVfY29tbW9uNCgpO1xuICAgIHZhciByZWFkZXJfMSA9IHJlcXVpcmVfcmVhZGVyKCk7XG4gICAgdmFyIEFzeW5jUmVhZGVyID0gY2xhc3MgZXh0ZW5kcyByZWFkZXJfMS5kZWZhdWx0IHtcbiAgICAgIGNvbnN0cnVjdG9yKF9yb290LCBfc2V0dGluZ3MpIHtcbiAgICAgICAgc3VwZXIoX3Jvb3QsIF9zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLl9zY2FuZGlyID0gZnNTY2FuZGlyLnNjYW5kaXI7XG4gICAgICAgIHRoaXMuX2VtaXR0ZXIgPSBuZXcgZXZlbnRzXzEuRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX3F1ZXVlID0gZmFzdHEodGhpcy5fd29ya2VyLmJpbmQodGhpcyksIHRoaXMuX3NldHRpbmdzLmNvbmN1cnJlbmN5KTtcbiAgICAgICAgdGhpcy5faXNGYXRhbEVycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3F1ZXVlLmRyYWluID0gKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5faXNGYXRhbEVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoXCJlbmRcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVhZCgpIHtcbiAgICAgICAgdGhpcy5faXNGYXRhbEVycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcHVzaFRvUXVldWUodGhpcy5fcm9vdCwgdGhpcy5fc2V0dGluZ3MuYmFzZVBhdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VtaXR0ZXI7XG4gICAgICB9XG4gICAgICBnZXQgaXNEZXN0cm95ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Rlc3Ryb3llZDtcbiAgICAgIH1cbiAgICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSByZWFkZXIgaXMgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9xdWV1ZS5raWxsQW5kRHJhaW4oKTtcbiAgICAgIH1cbiAgICAgIG9uRW50cnkoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbihcImVudHJ5XCIsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIG9uRXJyb3IoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbmNlKFwiZXJyb3JcIiwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgICAgb25FbmQoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbmNlKFwiZW5kXCIsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIF9wdXNoVG9RdWV1ZShkaXJlY3RvcnksIGJhc2UpIHtcbiAgICAgICAgY29uc3QgcXVldWVJdGVtID0ge1xuICAgICAgICAgIGRpcmVjdG9yeSxcbiAgICAgICAgICBiYXNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3F1ZXVlLnB1c2gocXVldWVJdGVtLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgX3dvcmtlcihpdGVtLCBkb25lKSB7XG4gICAgICAgIHRoaXMuX3NjYW5kaXIoaXRlbS5kaXJlY3RvcnksIHRoaXMuX3NldHRpbmdzLmZzU2NhbmRpclNldHRpbmdzLCAoZXJyb3IsIGVudHJpZXMpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGRvbmUoZXJyb3IsIHZvaWQgMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlRW50cnkoZW50cnksIGl0ZW0uYmFzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvbmUobnVsbCwgdm9pZCAwKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBfaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVzdHJveWVkIHx8ICFjb21tb24uaXNGYXRhbEVycm9yKHRoaXMuX3NldHRpbmdzLCBlcnJvcikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNGYXRhbEVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoXCJlcnJvclwiLCBlcnJvcik7XG4gICAgICB9XG4gICAgICBfaGFuZGxlRW50cnkoZW50cnksIGJhc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVzdHJveWVkIHx8IHRoaXMuX2lzRmF0YWxFcnJvcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmdWxscGF0aCA9IGVudHJ5LnBhdGg7XG4gICAgICAgIGlmIChiYXNlICE9PSB2b2lkIDApIHtcbiAgICAgICAgICBlbnRyeS5wYXRoID0gY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoYmFzZSwgZW50cnkubmFtZSwgdGhpcy5fc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tb24uaXNBcHBsaWVkRmlsdGVyKHRoaXMuX3NldHRpbmdzLmVudHJ5RmlsdGVyLCBlbnRyeSkpIHtcbiAgICAgICAgICB0aGlzLl9lbWl0RW50cnkoZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeS5kaXJlbnQuaXNEaXJlY3RvcnkoKSAmJiBjb21tb24uaXNBcHBsaWVkRmlsdGVyKHRoaXMuX3NldHRpbmdzLmRlZXBGaWx0ZXIsIGVudHJ5KSkge1xuICAgICAgICAgIHRoaXMuX3B1c2hUb1F1ZXVlKGZ1bGxwYXRoLCBiYXNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2VtaXRFbnRyeShlbnRyeSkge1xuICAgICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoXCJlbnRyeVwiLCBlbnRyeSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gQXN5bmNSZWFkZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfYXN5bmM1ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9wcm92aWRlcnMvYXN5bmMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIGFzeW5jXzEgPSByZXF1aXJlX2FzeW5jNCgpO1xuICAgIHZhciBBc3luY1Byb3ZpZGVyID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9yb290ID0gX3Jvb3Q7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgYXN5bmNfMS5kZWZhdWx0KHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fc3RvcmFnZSA9IFtdO1xuICAgICAgfVxuICAgICAgcmVhZChjYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9yZWFkZXIub25FcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9yZWFkZXIub25FbnRyeSgoZW50cnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9zdG9yYWdlLnB1c2goZW50cnkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcmVhZGVyLm9uRW5kKCgpID0+IHtcbiAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCB0aGlzLl9zdG9yYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3JlYWRlci5yZWFkKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gQXN5bmNQcm92aWRlcjtcbiAgICBmdW5jdGlvbiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBlbnRyaWVzKSB7XG4gICAgICBjYWxsYmFjayhudWxsLCBlbnRyaWVzKTtcbiAgICB9XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc3RyZWFtMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMud2Fsay9vdXQvcHJvdmlkZXJzL3N0cmVhbS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuICAgIHZhciBhc3luY18xID0gcmVxdWlyZV9hc3luYzQoKTtcbiAgICB2YXIgU3RyZWFtUHJvdmlkZXIgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcihfcm9vdCwgX3NldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBhc3luY18xLmRlZmF1bHQodGhpcy5fcm9vdCwgdGhpcy5fc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLl9zdHJlYW0gPSBuZXcgc3RyZWFtXzEuUmVhZGFibGUoe1xuICAgICAgICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgICAgICAgcmVhZDogKCkgPT4ge1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9yZWFkZXIuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcmVhZGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmVhZCgpIHtcbiAgICAgICAgdGhpcy5fcmVhZGVyLm9uRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5fc3RyZWFtLmVtaXQoXCJlcnJvclwiLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9yZWFkZXIub25FbnRyeSgoZW50cnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9zdHJlYW0ucHVzaChlbnRyeSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9yZWFkZXIub25FbmQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3N0cmVhbS5wdXNoKG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmVhbTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBTdHJlYW1Qcm92aWRlcjtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zeW5jNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMud2Fsay9vdXQvcmVhZGVycy9zeW5jLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBmc1NjYW5kaXIgPSByZXF1aXJlX291dDIoKTtcbiAgICB2YXIgY29tbW9uID0gcmVxdWlyZV9jb21tb240KCk7XG4gICAgdmFyIHJlYWRlcl8xID0gcmVxdWlyZV9yZWFkZXIoKTtcbiAgICB2YXIgU3luY1JlYWRlciA9IGNsYXNzIGV4dGVuZHMgcmVhZGVyXzEuZGVmYXVsdCB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5fc2NhbmRpciA9IGZzU2NhbmRpci5zY2FuZGlyU3luYztcbiAgICAgICAgdGhpcy5fc3RvcmFnZSA9IFtdO1xuICAgICAgICB0aGlzLl9xdWV1ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICB9XG4gICAgICByZWFkKCkge1xuICAgICAgICB0aGlzLl9wdXNoVG9RdWV1ZSh0aGlzLl9yb290LCB0aGlzLl9zZXR0aW5ncy5iYXNlUGF0aCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZVF1ZXVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlO1xuICAgICAgfVxuICAgICAgX3B1c2hUb1F1ZXVlKGRpcmVjdG9yeSwgYmFzZSkge1xuICAgICAgICB0aGlzLl9xdWV1ZS5hZGQoe1xuICAgICAgICAgIGRpcmVjdG9yeSxcbiAgICAgICAgICBiYXNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgX2hhbmRsZVF1ZXVlKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fcXVldWUudmFsdWVzKCkpIHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVEaXJlY3RvcnkoaXRlbS5kaXJlY3RvcnksIGl0ZW0uYmFzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9oYW5kbGVEaXJlY3RvcnkoZGlyZWN0b3J5LCBiYXNlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZW50cmllcyA9IHRoaXMuX3NjYW5kaXIoZGlyZWN0b3J5LCB0aGlzLl9zZXR0aW5ncy5mc1NjYW5kaXJTZXR0aW5ncyk7XG4gICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVFbnRyeShlbnRyeSwgYmFzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2hhbmRsZUVycm9yKGVycm9yKSB7XG4gICAgICAgIGlmICghY29tbW9uLmlzRmF0YWxFcnJvcih0aGlzLl9zZXR0aW5ncywgZXJyb3IpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgX2hhbmRsZUVudHJ5KGVudHJ5LCBiYXNlKSB7XG4gICAgICAgIGNvbnN0IGZ1bGxwYXRoID0gZW50cnkucGF0aDtcbiAgICAgICAgaWYgKGJhc2UgIT09IHZvaWQgMCkge1xuICAgICAgICAgIGVudHJ5LnBhdGggPSBjb21tb24uam9pblBhdGhTZWdtZW50cyhiYXNlLCBlbnRyeS5uYW1lLCB0aGlzLl9zZXR0aW5ncy5wYXRoU2VnbWVudFNlcGFyYXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZW50cnlGaWx0ZXIsIGVudHJ5KSkge1xuICAgICAgICAgIHRoaXMuX3B1c2hUb1N0b3JhZ2UoZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeS5kaXJlbnQuaXNEaXJlY3RvcnkoKSAmJiBjb21tb24uaXNBcHBsaWVkRmlsdGVyKHRoaXMuX3NldHRpbmdzLmRlZXBGaWx0ZXIsIGVudHJ5KSkge1xuICAgICAgICAgIHRoaXMuX3B1c2hUb1F1ZXVlKGZ1bGxwYXRoLCBiYXNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX3B1c2hUb1N0b3JhZ2UoZW50cnkpIHtcbiAgICAgICAgdGhpcy5fc3RvcmFnZS5wdXNoKGVudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBTeW5jUmVhZGVyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3N5bmM1ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9wcm92aWRlcnMvc3luYy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc3luY18xID0gcmVxdWlyZV9zeW5jNCgpO1xuICAgIHZhciBTeW5jUHJvdmlkZXIgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcihfcm9vdCwgX3NldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzeW5jXzEuZGVmYXVsdCh0aGlzLl9yb290LCB0aGlzLl9zZXR0aW5ncyk7XG4gICAgICB9XG4gICAgICByZWFkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnJlYWQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBTeW5jUHJvdmlkZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc2V0dGluZ3MzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9zZXR0aW5ncy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciBmc1NjYW5kaXIgPSByZXF1aXJlX291dDIoKTtcbiAgICB2YXIgU2V0dGluZ3MgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcihfb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucztcbiAgICAgICAgdGhpcy5iYXNlUGF0aCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYmFzZVBhdGgsIHZvaWQgMCk7XG4gICAgICAgIHRoaXMuY29uY3VycmVuY3kgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmNvbmN1cnJlbmN5LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICB0aGlzLmRlZXBGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRlZXBGaWx0ZXIsIG51bGwpO1xuICAgICAgICB0aGlzLmVudHJ5RmlsdGVyID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5lbnRyeUZpbHRlciwgbnVsbCk7XG4gICAgICAgIHRoaXMuZXJyb3JGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmVycm9yRmlsdGVyLCBudWxsKTtcbiAgICAgICAgdGhpcy5wYXRoU2VnbWVudFNlcGFyYXRvciA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMucGF0aFNlZ21lbnRTZXBhcmF0b3IsIHBhdGguc2VwKTtcbiAgICAgICAgdGhpcy5mc1NjYW5kaXJTZXR0aW5ncyA9IG5ldyBmc1NjYW5kaXIuU2V0dGluZ3Moe1xuICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGlua3M6IHRoaXMuX29wdGlvbnMuZm9sbG93U3ltYm9saWNMaW5rcyxcbiAgICAgICAgICBmczogdGhpcy5fb3B0aW9ucy5mcyxcbiAgICAgICAgICBwYXRoU2VnbWVudFNlcGFyYXRvcjogdGhpcy5fb3B0aW9ucy5wYXRoU2VnbWVudFNlcGFyYXRvcixcbiAgICAgICAgICBzdGF0czogdGhpcy5fb3B0aW9ucy5zdGF0cyxcbiAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMuX29wdGlvbnMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiAhPT0gbnVsbCAmJiBvcHRpb24gIT09IHZvaWQgMCA/IG9wdGlvbiA6IHZhbHVlO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IFNldHRpbmdzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX291dDMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLndhbGsvb3V0L2luZGV4LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV4cG9ydHMyLlNldHRpbmdzID0gZXhwb3J0czIud2Fsa1N0cmVhbSA9IGV4cG9ydHMyLndhbGtTeW5jID0gZXhwb3J0czIud2FsayA9IHZvaWQgMDtcbiAgICB2YXIgYXN5bmNfMSA9IHJlcXVpcmVfYXN5bmM1KCk7XG4gICAgdmFyIHN0cmVhbV8xID0gcmVxdWlyZV9zdHJlYW0yKCk7XG4gICAgdmFyIHN5bmNfMSA9IHJlcXVpcmVfc3luYzUoKTtcbiAgICB2YXIgc2V0dGluZ3NfMSA9IHJlcXVpcmVfc2V0dGluZ3MzKCk7XG4gICAgZXhwb3J0czIuU2V0dGluZ3MgPSBzZXR0aW5nc18xLmRlZmF1bHQ7XG4gICAgZnVuY3Rpb24gd2FsayhkaXJlY3RvcnksIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjaywgY2FsbGJhY2spIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgbmV3IGFzeW5jXzEuZGVmYXVsdChkaXJlY3RvcnksIGdldFNldHRpbmdzKCkpLnJlYWQob3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbmV3IGFzeW5jXzEuZGVmYXVsdChkaXJlY3RvcnksIGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjaykpLnJlYWQoY2FsbGJhY2spO1xuICAgIH1cbiAgICBleHBvcnRzMi53YWxrID0gd2FsaztcbiAgICBmdW5jdGlvbiB3YWxrU3luYyhkaXJlY3RvcnksIG9wdGlvbnNPclNldHRpbmdzKSB7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzKTtcbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IHN5bmNfMS5kZWZhdWx0KGRpcmVjdG9yeSwgc2V0dGluZ3MpO1xuICAgICAgcmV0dXJuIHByb3ZpZGVyLnJlYWQoKTtcbiAgICB9XG4gICAgZXhwb3J0czIud2Fsa1N5bmMgPSB3YWxrU3luYztcbiAgICBmdW5jdGlvbiB3YWxrU3RyZWFtKGRpcmVjdG9yeSwgb3B0aW9uc09yU2V0dGluZ3MpIHtcbiAgICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3MpO1xuICAgICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgc3RyZWFtXzEuZGVmYXVsdChkaXJlY3RvcnksIHNldHRpbmdzKTtcbiAgICAgIHJldHVybiBwcm92aWRlci5yZWFkKCk7XG4gICAgfVxuICAgIGV4cG9ydHMyLndhbGtTdHJlYW0gPSB3YWxrU3RyZWFtO1xuICAgIGZ1bmN0aW9uIGdldFNldHRpbmdzKHNldHRpbmdzT3JPcHRpb25zID0ge30pIHtcbiAgICAgIGlmIChzZXR0aW5nc09yT3B0aW9ucyBpbnN0YW5jZW9mIHNldHRpbmdzXzEuZGVmYXVsdCkge1xuICAgICAgICByZXR1cm4gc2V0dGluZ3NPck9wdGlvbnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChzZXR0aW5nc09yT3B0aW9ucyk7XG4gICAgfVxuICB9XG59KTtcbnZhciByZXF1aXJlX3JlYWRlcjIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9yZWFkZXIuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICB2YXIgZnNTdGF0ID0gcmVxdWlyZV9vdXQoKTtcbiAgICB2YXIgdXRpbHMgPSByZXF1aXJlX3V0aWxzNCgpO1xuICAgIHZhciBSZWFkZXIgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuX2ZzU3RhdFNldHRpbmdzID0gbmV3IGZzU3RhdC5TZXR0aW5ncyh7XG4gICAgICAgICAgZm9sbG93U3ltYm9saWNMaW5rOiB0aGlzLl9zZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmtzLFxuICAgICAgICAgIGZzOiB0aGlzLl9zZXR0aW5ncy5mcyxcbiAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMuX3NldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3NcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBfZ2V0RnVsbEVudHJ5UGF0aChmaWxlcGF0aCkge1xuICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZmlsZXBhdGgpO1xuICAgICAgfVxuICAgICAgX21ha2VFbnRyeShzdGF0cywgcGF0dGVybikge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAgICBuYW1lOiBwYXR0ZXJuLFxuICAgICAgICAgIHBhdGg6IHBhdHRlcm4sXG4gICAgICAgICAgZGlyZW50OiB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMocGF0dGVybiwgc3RhdHMpXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zdGF0cykge1xuICAgICAgICAgIGVudHJ5LnN0YXRzID0gc3RhdHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgfVxuICAgICAgX2lzRmF0YWxFcnJvcihlcnJvcikge1xuICAgICAgICByZXR1cm4gIXV0aWxzLmVycm5vLmlzRW5vZW50Q29kZUVycm9yKGVycm9yKSAmJiAhdGhpcy5fc2V0dGluZ3Muc3VwcHJlc3NFcnJvcnM7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gUmVhZGVyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3N0cmVhbTMgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9zdHJlYW0uanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHN0cmVhbV8xID0gcmVxdWlyZShcInN0cmVhbVwiKTtcbiAgICB2YXIgZnNTdGF0ID0gcmVxdWlyZV9vdXQoKTtcbiAgICB2YXIgZnNXYWxrID0gcmVxdWlyZV9vdXQzKCk7XG4gICAgdmFyIHJlYWRlcl8xID0gcmVxdWlyZV9yZWFkZXIyKCk7XG4gICAgdmFyIFJlYWRlclN0cmVhbSA9IGNsYXNzIGV4dGVuZHMgcmVhZGVyXzEuZGVmYXVsdCB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5fd2Fsa1N0cmVhbSA9IGZzV2Fsay53YWxrU3RyZWFtO1xuICAgICAgICB0aGlzLl9zdGF0ID0gZnNTdGF0LnN0YXQ7XG4gICAgICB9XG4gICAgICBkeW5hbWljKHJvb3QsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dhbGtTdHJlYW0ocm9vdCwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBzdGF0aWMocGF0dGVybnMsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZmlsZXBhdGhzID0gcGF0dGVybnMubWFwKHRoaXMuX2dldEZ1bGxFbnRyeVBhdGgsIHRoaXMpO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goe1xuICAgICAgICAgIG9iamVjdE1vZGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHN0cmVhbS5fd3JpdGUgPSAoaW5kZXgsIF9lbmMsIGRvbmUpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0RW50cnkoZmlsZXBhdGhzW2luZGV4XSwgcGF0dGVybnNbaW5kZXhdLCBvcHRpb25zKS50aGVuKChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVudHJ5ICE9PSBudWxsICYmIG9wdGlvbnMuZW50cnlGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgIHN0cmVhbS5wdXNoKGVudHJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gZmlsZXBhdGhzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgc3RyZWFtLmVuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pLmNhdGNoKGRvbmUpO1xuICAgICAgICB9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVwYXRocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHN0cmVhbS53cml0ZShpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyZWFtO1xuICAgICAgfVxuICAgICAgX2dldEVudHJ5KGZpbGVwYXRoLCBwYXR0ZXJuLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRTdGF0KGZpbGVwYXRoKS50aGVuKChzdGF0cykgPT4gdGhpcy5fbWFrZUVudHJ5KHN0YXRzLCBwYXR0ZXJuKSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3JGaWx0ZXIoZXJyb3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgX2dldFN0YXQoZmlsZXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICB0aGlzLl9zdGF0KGZpbGVwYXRoLCB0aGlzLl9mc1N0YXRTZXR0aW5ncywgKGVycm9yLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yID09PSBudWxsID8gcmVzb2x2ZShzdGF0cykgOiByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBSZWFkZXJTdHJlYW07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbWF0Y2hlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvbWF0Y2hlcnMvbWF0Y2hlci5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgdXRpbHMgPSByZXF1aXJlX3V0aWxzNCgpO1xuICAgIHZhciBNYXRjaGVyID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoX3BhdHRlcm5zLCBfc2V0dGluZ3MsIF9taWNyb21hdGNoT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9wYXR0ZXJucyA9IF9wYXR0ZXJucztcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuX21pY3JvbWF0Y2hPcHRpb25zID0gX21pY3JvbWF0Y2hPcHRpb25zO1xuICAgICAgICB0aGlzLl9zdG9yYWdlID0gW107XG4gICAgICAgIHRoaXMuX2ZpbGxTdG9yYWdlKCk7XG4gICAgICB9XG4gICAgICBfZmlsbFN0b3JhZ2UoKSB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm5zID0gdXRpbHMucGF0dGVybi5leHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbih0aGlzLl9wYXR0ZXJucyk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5fZ2V0UGF0dGVyblNlZ21lbnRzKHBhdHRlcm4pO1xuICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5fc3BsaXRTZWdtZW50c0ludG9TZWN0aW9ucyhzZWdtZW50cyk7XG4gICAgICAgICAgdGhpcy5fc3RvcmFnZS5wdXNoKHtcbiAgICAgICAgICAgIGNvbXBsZXRlOiBzZWN0aW9ucy5sZW5ndGggPD0gMSxcbiAgICAgICAgICAgIHBhdHRlcm4sXG4gICAgICAgICAgICBzZWdtZW50cyxcbiAgICAgICAgICAgIHNlY3Rpb25zXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9nZXRQYXR0ZXJuU2VnbWVudHMocGF0dGVybikge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHV0aWxzLnBhdHRlcm4uZ2V0UGF0dGVyblBhcnRzKHBhdHRlcm4sIHRoaXMuX21pY3JvbWF0Y2hPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHBhcnRzLm1hcCgocGFydCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGR5bmFtaWMgPSB1dGlscy5wYXR0ZXJuLmlzRHluYW1pY1BhdHRlcm4ocGFydCwgdGhpcy5fc2V0dGluZ3MpO1xuICAgICAgICAgIGlmICghZHluYW1pYykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZHluYW1pYzogZmFsc2UsXG4gICAgICAgICAgICAgIHBhdHRlcm46IHBhcnRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkeW5hbWljOiB0cnVlLFxuICAgICAgICAgICAgcGF0dGVybjogcGFydCxcbiAgICAgICAgICAgIHBhdHRlcm5SZTogdXRpbHMucGF0dGVybi5tYWtlUmUocGFydCwgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBfc3BsaXRTZWdtZW50c0ludG9TZWN0aW9ucyhzZWdtZW50cykge1xuICAgICAgICByZXR1cm4gdXRpbHMuYXJyYXkuc3BsaXRXaGVuKHNlZ21lbnRzLCAoc2VnbWVudCkgPT4gc2VnbWVudC5keW5hbWljICYmIHV0aWxzLnBhdHRlcm4uaGFzR2xvYlN0YXIoc2VnbWVudC5wYXR0ZXJuKSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gTWF0Y2hlcjtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJ0aWFsID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9tYXRjaGVycy9wYXJ0aWFsLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBtYXRjaGVyXzEgPSByZXF1aXJlX21hdGNoZXIoKTtcbiAgICB2YXIgUGFydGlhbE1hdGNoZXIgPSBjbGFzcyBleHRlbmRzIG1hdGNoZXJfMS5kZWZhdWx0IHtcbiAgICAgIG1hdGNoKGZpbGVwYXRoKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gZmlsZXBhdGguc3BsaXQoXCIvXCIpO1xuICAgICAgICBjb25zdCBsZXZlbHMgPSBwYXJ0cy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBhdHRlcm5zID0gdGhpcy5fc3RvcmFnZS5maWx0ZXIoKGluZm8pID0+ICFpbmZvLmNvbXBsZXRlIHx8IGluZm8uc2VnbWVudHMubGVuZ3RoID4gbGV2ZWxzKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHBhdHRlcm4uc2VjdGlvbnNbMF07XG4gICAgICAgICAgaWYgKCFwYXR0ZXJuLmNvbXBsZXRlICYmIGxldmVscyA+IHNlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSBwYXJ0cy5ldmVyeSgocGFydCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnQgPSBwYXR0ZXJuLnNlZ21lbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChzZWdtZW50LmR5bmFtaWMgJiYgc2VnbWVudC5wYXR0ZXJuUmUudGVzdChwYXJ0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VnbWVudC5keW5hbWljICYmIHNlZ21lbnQucGF0dGVybiA9PT0gcGFydCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gUGFydGlhbE1hdGNoZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZGVlcCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvZmlsdGVycy9kZWVwLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHM0KCk7XG4gICAgdmFyIHBhcnRpYWxfMSA9IHJlcXVpcmVfcGFydGlhbCgpO1xuICAgIHZhciBEZWVwRmlsdGVyID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoX3NldHRpbmdzLCBfbWljcm9tYXRjaE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuX21pY3JvbWF0Y2hPcHRpb25zID0gX21pY3JvbWF0Y2hPcHRpb25zO1xuICAgICAgfVxuICAgICAgZ2V0RmlsdGVyKGJhc2VQYXRoLCBwb3NpdGl2ZSwgbmVnYXRpdmUpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlciA9IHRoaXMuX2dldE1hdGNoZXIocG9zaXRpdmUpO1xuICAgICAgICBjb25zdCBuZWdhdGl2ZVJlID0gdGhpcy5fZ2V0TmVnYXRpdmVQYXR0ZXJuc1JlKG5lZ2F0aXZlKTtcbiAgICAgICAgcmV0dXJuIChlbnRyeSkgPT4gdGhpcy5fZmlsdGVyKGJhc2VQYXRoLCBlbnRyeSwgbWF0Y2hlciwgbmVnYXRpdmVSZSk7XG4gICAgICB9XG4gICAgICBfZ2V0TWF0Y2hlcihwYXR0ZXJucykge1xuICAgICAgICByZXR1cm4gbmV3IHBhcnRpYWxfMS5kZWZhdWx0KHBhdHRlcm5zLCB0aGlzLl9zZXR0aW5ncywgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgX2dldE5lZ2F0aXZlUGF0dGVybnNSZShwYXR0ZXJucykge1xuICAgICAgICBjb25zdCBhZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm5zID0gcGF0dGVybnMuZmlsdGVyKHV0aWxzLnBhdHRlcm4uaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm4pO1xuICAgICAgICByZXR1cm4gdXRpbHMucGF0dGVybi5jb252ZXJ0UGF0dGVybnNUb1JlKGFmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybnMsIHRoaXMuX21pY3JvbWF0Y2hPcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIF9maWx0ZXIoYmFzZVBhdGgsIGVudHJ5LCBtYXRjaGVyLCBuZWdhdGl2ZVJlKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1NraXBwZWRCeURlZXAoYmFzZVBhdGgsIGVudHJ5LnBhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pc1NraXBwZWRTeW1ib2xpY0xpbmsoZW50cnkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGVwYXRoID0gdXRpbHMucGF0aC5yZW1vdmVMZWFkaW5nRG90U2VnbWVudChlbnRyeS5wYXRoKTtcbiAgICAgICAgaWYgKHRoaXMuX2lzU2tpcHBlZEJ5UG9zaXRpdmVQYXR0ZXJucyhmaWxlcGF0aCwgbWF0Y2hlcikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2tpcHBlZEJ5TmVnYXRpdmVQYXR0ZXJucyhmaWxlcGF0aCwgbmVnYXRpdmVSZSk7XG4gICAgICB9XG4gICAgICBfaXNTa2lwcGVkQnlEZWVwKGJhc2VQYXRoLCBlbnRyeVBhdGgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLmRlZXAgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRFbnRyeUxldmVsKGJhc2VQYXRoLCBlbnRyeVBhdGgpID49IHRoaXMuX3NldHRpbmdzLmRlZXA7XG4gICAgICB9XG4gICAgICBfZ2V0RW50cnlMZXZlbChiYXNlUGF0aCwgZW50cnlQYXRoKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5UGF0aERlcHRoID0gZW50cnlQYXRoLnNwbGl0KFwiL1wiKS5sZW5ndGg7XG4gICAgICAgIGlmIChiYXNlUGF0aCA9PT0gXCJcIikge1xuICAgICAgICAgIHJldHVybiBlbnRyeVBhdGhEZXB0aDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiYXNlUGF0aERlcHRoID0gYmFzZVBhdGguc3BsaXQoXCIvXCIpLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGVudHJ5UGF0aERlcHRoIC0gYmFzZVBhdGhEZXB0aDtcbiAgICAgIH1cbiAgICAgIF9pc1NraXBwZWRTeW1ib2xpY0xpbmsoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9zZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmtzICYmIGVudHJ5LmRpcmVudC5pc1N5bWJvbGljTGluaygpO1xuICAgICAgfVxuICAgICAgX2lzU2tpcHBlZEJ5UG9zaXRpdmVQYXR0ZXJucyhlbnRyeVBhdGgsIG1hdGNoZXIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9zZXR0aW5ncy5iYXNlTmFtZU1hdGNoICYmICFtYXRjaGVyLm1hdGNoKGVudHJ5UGF0aCk7XG4gICAgICB9XG4gICAgICBfaXNTa2lwcGVkQnlOZWdhdGl2ZVBhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICByZXR1cm4gIXV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZW50cnlQYXRoLCBwYXR0ZXJuc1JlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBEZWVwRmlsdGVyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2VudHJ5ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9maWx0ZXJzL2VudHJ5LmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHM0KCk7XG4gICAgdmFyIEVudHJ5RmlsdGVyID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoX3NldHRpbmdzLCBfbWljcm9tYXRjaE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuX21pY3JvbWF0Y2hPcHRpb25zID0gX21pY3JvbWF0Y2hPcHRpb25zO1xuICAgICAgICB0aGlzLmluZGV4ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgIH1cbiAgICAgIGdldEZpbHRlcihwb3NpdGl2ZSwgbmVnYXRpdmUpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpdmVSZSA9IHV0aWxzLnBhdHRlcm4uY29udmVydFBhdHRlcm5zVG9SZShwb3NpdGl2ZSwgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgICAgICBjb25zdCBuZWdhdGl2ZVJlID0gdXRpbHMucGF0dGVybi5jb252ZXJ0UGF0dGVybnNUb1JlKG5lZ2F0aXZlLCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX2ZpbHRlcihlbnRyeSwgcG9zaXRpdmVSZSwgbmVnYXRpdmVSZSk7XG4gICAgICB9XG4gICAgICBfZmlsdGVyKGVudHJ5LCBwb3NpdGl2ZVJlLCBuZWdhdGl2ZVJlKSB7XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy51bmlxdWUgJiYgdGhpcy5faXNEdXBsaWNhdGVFbnRyeShlbnRyeSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX29ubHlGaWxlRmlsdGVyKGVudHJ5KSB8fCB0aGlzLl9vbmx5RGlyZWN0b3J5RmlsdGVyKGVudHJ5KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlBYnNvbHV0ZU5lZ2F0aXZlUGF0dGVybnMoZW50cnkucGF0aCwgbmVnYXRpdmVSZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZXBhdGggPSB0aGlzLl9zZXR0aW5ncy5iYXNlTmFtZU1hdGNoID8gZW50cnkubmFtZSA6IGVudHJ5LnBhdGg7XG4gICAgICAgIGNvbnN0IGlzTWF0Y2hlZCA9IHRoaXMuX2lzTWF0Y2hUb1BhdHRlcm5zKGZpbGVwYXRoLCBwb3NpdGl2ZVJlKSAmJiAhdGhpcy5faXNNYXRjaFRvUGF0dGVybnMoZW50cnkucGF0aCwgbmVnYXRpdmVSZSk7XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy51bmlxdWUgJiYgaXNNYXRjaGVkKSB7XG4gICAgICAgICAgdGhpcy5fY3JlYXRlSW5kZXhSZWNvcmQoZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc01hdGNoZWQ7XG4gICAgICB9XG4gICAgICBfaXNEdXBsaWNhdGVFbnRyeShlbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleC5oYXMoZW50cnkucGF0aCk7XG4gICAgICB9XG4gICAgICBfY3JlYXRlSW5kZXhSZWNvcmQoZW50cnkpIHtcbiAgICAgICAgdGhpcy5pbmRleC5zZXQoZW50cnkucGF0aCwgdm9pZCAwKTtcbiAgICAgIH1cbiAgICAgIF9vbmx5RmlsZUZpbHRlcihlbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3Mub25seUZpbGVzICYmICFlbnRyeS5kaXJlbnQuaXNGaWxlKCk7XG4gICAgICB9XG4gICAgICBfb25seURpcmVjdG9yeUZpbHRlcihlbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3Mub25seURpcmVjdG9yaWVzICYmICFlbnRyeS5kaXJlbnQuaXNEaXJlY3RvcnkoKTtcbiAgICAgIH1cbiAgICAgIF9pc1NraXBwZWRCeUFic29sdXRlTmVnYXRpdmVQYXR0ZXJucyhlbnRyeVBhdGgsIHBhdHRlcm5zUmUpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zZXR0aW5ncy5hYnNvbHV0ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmdWxscGF0aCA9IHV0aWxzLnBhdGgubWFrZUFic29sdXRlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZW50cnlQYXRoKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZnVsbHBhdGgsIHBhdHRlcm5zUmUpO1xuICAgICAgfVxuICAgICAgX2lzTWF0Y2hUb1BhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IHV0aWxzLnBhdGgucmVtb3ZlTGVhZGluZ0RvdFNlZ21lbnQoZW50cnlQYXRoKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZmlsZXBhdGgsIHBhdHRlcm5zUmUpIHx8IHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZmlsZXBhdGggKyBcIi9cIiwgcGF0dGVybnNSZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gRW50cnlGaWx0ZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZXJyb3IgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL2ZpbHRlcnMvZXJyb3IuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHV0aWxzID0gcmVxdWlyZV91dGlsczQoKTtcbiAgICB2YXIgRXJyb3JGaWx0ZXIgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICB9XG4gICAgICBnZXRGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiAoZXJyb3IpID0+IHRoaXMuX2lzTm9uRmF0YWxFcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgICBfaXNOb25GYXRhbEVycm9yKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB1dGlscy5lcnJuby5pc0Vub2VudENvZGVFcnJvcihlcnJvcikgfHwgdGhpcy5fc2V0dGluZ3Muc3VwcHJlc3NFcnJvcnM7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gRXJyb3JGaWx0ZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZW50cnkyID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy90cmFuc2Zvcm1lcnMvZW50cnkuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHV0aWxzID0gcmVxdWlyZV91dGlsczQoKTtcbiAgICB2YXIgRW50cnlUcmFuc2Zvcm1lciA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgIH1cbiAgICAgIGdldFRyYW5zZm9ybWVyKCkge1xuICAgICAgICByZXR1cm4gKGVudHJ5KSA9PiB0aGlzLl90cmFuc2Zvcm0oZW50cnkpO1xuICAgICAgfVxuICAgICAgX3RyYW5zZm9ybShlbnRyeSkge1xuICAgICAgICBsZXQgZmlsZXBhdGggPSBlbnRyeS5wYXRoO1xuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MuYWJzb2x1dGUpIHtcbiAgICAgICAgICBmaWxlcGF0aCA9IHV0aWxzLnBhdGgubWFrZUFic29sdXRlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZmlsZXBhdGgpO1xuICAgICAgICAgIGZpbGVwYXRoID0gdXRpbHMucGF0aC51bml4aWZ5KGZpbGVwYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MubWFya0RpcmVjdG9yaWVzICYmIGVudHJ5LmRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgZmlsZXBhdGggKz0gXCIvXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9zZXR0aW5ncy5vYmplY3RNb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZpbGVwYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGVudHJ5KSwge1xuICAgICAgICAgIHBhdGg6IGZpbGVwYXRoXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IEVudHJ5VHJhbnNmb3JtZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJvdmlkZXIgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3Byb3ZpZGVyLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgdmFyIGRlZXBfMSA9IHJlcXVpcmVfZGVlcCgpO1xuICAgIHZhciBlbnRyeV8xID0gcmVxdWlyZV9lbnRyeSgpO1xuICAgIHZhciBlcnJvcl8xID0gcmVxdWlyZV9lcnJvcigpO1xuICAgIHZhciBlbnRyeV8yID0gcmVxdWlyZV9lbnRyeTIoKTtcbiAgICB2YXIgUHJvdmlkZXIgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuZXJyb3JGaWx0ZXIgPSBuZXcgZXJyb3JfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcbiAgICAgICAgdGhpcy5lbnRyeUZpbHRlciA9IG5ldyBlbnRyeV8xLmRlZmF1bHQodGhpcy5fc2V0dGluZ3MsIHRoaXMuX2dldE1pY3JvbWF0Y2hPcHRpb25zKCkpO1xuICAgICAgICB0aGlzLmRlZXBGaWx0ZXIgPSBuZXcgZGVlcF8xLmRlZmF1bHQodGhpcy5fc2V0dGluZ3MsIHRoaXMuX2dldE1pY3JvbWF0Y2hPcHRpb25zKCkpO1xuICAgICAgICB0aGlzLmVudHJ5VHJhbnNmb3JtZXIgPSBuZXcgZW50cnlfMi5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcbiAgICAgIH1cbiAgICAgIF9nZXRSb290RGlyZWN0b3J5KHRhc2spIHtcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLl9zZXR0aW5ncy5jd2QsIHRhc2suYmFzZSk7XG4gICAgICB9XG4gICAgICBfZ2V0UmVhZGVyT3B0aW9ucyh0YXNrKSB7XG4gICAgICAgIGNvbnN0IGJhc2VQYXRoID0gdGFzay5iYXNlID09PSBcIi5cIiA/IFwiXCIgOiB0YXNrLmJhc2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYmFzZVBhdGgsXG4gICAgICAgICAgcGF0aFNlZ21lbnRTZXBhcmF0b3I6IFwiL1wiLFxuICAgICAgICAgIGNvbmN1cnJlbmN5OiB0aGlzLl9zZXR0aW5ncy5jb25jdXJyZW5jeSxcbiAgICAgICAgICBkZWVwRmlsdGVyOiB0aGlzLmRlZXBGaWx0ZXIuZ2V0RmlsdGVyKGJhc2VQYXRoLCB0YXNrLnBvc2l0aXZlLCB0YXNrLm5lZ2F0aXZlKSxcbiAgICAgICAgICBlbnRyeUZpbHRlcjogdGhpcy5lbnRyeUZpbHRlci5nZXRGaWx0ZXIodGFzay5wb3NpdGl2ZSwgdGFzay5uZWdhdGl2ZSksXG4gICAgICAgICAgZXJyb3JGaWx0ZXI6IHRoaXMuZXJyb3JGaWx0ZXIuZ2V0RmlsdGVyKCksXG4gICAgICAgICAgZm9sbG93U3ltYm9saWNMaW5rczogdGhpcy5fc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcyxcbiAgICAgICAgICBmczogdGhpcy5fc2V0dGluZ3MuZnMsXG4gICAgICAgICAgc3RhdHM6IHRoaXMuX3NldHRpbmdzLnN0YXRzLFxuICAgICAgICAgIHRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluazogdGhpcy5fc2V0dGluZ3MudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rLFxuICAgICAgICAgIHRyYW5zZm9ybTogdGhpcy5lbnRyeVRyYW5zZm9ybWVyLmdldFRyYW5zZm9ybWVyKClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIF9nZXRNaWNyb21hdGNoT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkb3Q6IHRoaXMuX3NldHRpbmdzLmRvdCxcbiAgICAgICAgICBtYXRjaEJhc2U6IHRoaXMuX3NldHRpbmdzLmJhc2VOYW1lTWF0Y2gsXG4gICAgICAgICAgbm9icmFjZTogIXRoaXMuX3NldHRpbmdzLmJyYWNlRXhwYW5zaW9uLFxuICAgICAgICAgIG5vY2FzZTogIXRoaXMuX3NldHRpbmdzLmNhc2VTZW5zaXRpdmVNYXRjaCxcbiAgICAgICAgICBub2V4dDogIXRoaXMuX3NldHRpbmdzLmV4dGdsb2IsXG4gICAgICAgICAgbm9nbG9ic3RhcjogIXRoaXMuX3NldHRpbmdzLmdsb2JzdGFyLFxuICAgICAgICAgIHBvc2l4OiB0cnVlLFxuICAgICAgICAgIHN0cmljdFNsYXNoZXM6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gUHJvdmlkZXI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfYXN5bmM2ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9hc3luYy5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc3RyZWFtXzEgPSByZXF1aXJlX3N0cmVhbTMoKTtcbiAgICB2YXIgcHJvdmlkZXJfMSA9IHJlcXVpcmVfcHJvdmlkZXIoKTtcbiAgICB2YXIgUHJvdmlkZXJBc3luYyA9IGNsYXNzIGV4dGVuZHMgcHJvdmlkZXJfMS5kZWZhdWx0IHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgc3RyZWFtXzEuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgICB9XG4gICAgICByZWFkKHRhc2spIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuX2dldFJvb3REaXJlY3RvcnkodGFzayk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRSZWFkZXJPcHRpb25zKHRhc2spO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5hcGkocm9vdCwgdGFzaywgb3B0aW9ucyk7XG4gICAgICAgICAgc3RyZWFtLm9uY2UoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICAgIHN0cmVhbS5vbihcImRhdGFcIiwgKGVudHJ5KSA9PiBlbnRyaWVzLnB1c2gob3B0aW9ucy50cmFuc2Zvcm0oZW50cnkpKSk7XG4gICAgICAgICAgc3RyZWFtLm9uY2UoXCJlbmRcIiwgKCkgPT4gcmVzb2x2ZShlbnRyaWVzKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgYXBpKHJvb3QsIHRhc2ssIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRhc2suZHluYW1pYykge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuZHluYW1pYyhyb290LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnN0YXRpYyh0YXNrLnBhdHRlcm5zLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLmRlZmF1bHQgPSBQcm92aWRlckFzeW5jO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3N0cmVhbTQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3N0cmVhbS5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuICAgIHZhciBzdHJlYW1fMiA9IHJlcXVpcmVfc3RyZWFtMygpO1xuICAgIHZhciBwcm92aWRlcl8xID0gcmVxdWlyZV9wcm92aWRlcigpO1xuICAgIHZhciBQcm92aWRlclN0cmVhbSA9IGNsYXNzIGV4dGVuZHMgcHJvdmlkZXJfMS5kZWZhdWx0IHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgc3RyZWFtXzIuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgICB9XG4gICAgICByZWFkKHRhc2spIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuX2dldFJvb3REaXJlY3RvcnkodGFzayk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRSZWFkZXJPcHRpb25zKHRhc2spO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmFwaShyb290LCB0YXNrLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBuZXcgc3RyZWFtXzEuUmVhZGFibGUoe1xuICAgICAgICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgICAgICAgcmVhZDogKCkgPT4ge1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNvdXJjZS5vbmNlKFwiZXJyb3JcIiwgKGVycm9yKSA9PiBkZXN0aW5hdGlvbi5lbWl0KFwiZXJyb3JcIiwgZXJyb3IpKS5vbihcImRhdGFcIiwgKGVudHJ5KSA9PiBkZXN0aW5hdGlvbi5lbWl0KFwiZGF0YVwiLCBvcHRpb25zLnRyYW5zZm9ybShlbnRyeSkpKS5vbmNlKFwiZW5kXCIsICgpID0+IGRlc3RpbmF0aW9uLmVtaXQoXCJlbmRcIikpO1xuICAgICAgICBkZXN0aW5hdGlvbi5vbmNlKFwiY2xvc2VcIiwgKCkgPT4gc291cmNlLmRlc3Ryb3koKSk7XG4gICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjtcbiAgICAgIH1cbiAgICAgIGFwaShyb290LCB0YXNrLCBvcHRpb25zKSB7XG4gICAgICAgIGlmICh0YXNrLmR5bmFtaWMpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLmR5bmFtaWMocm9vdCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5zdGF0aWModGFzay5wYXR0ZXJucywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5kZWZhdWx0ID0gUHJvdmlkZXJTdHJlYW07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc3luYzYgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9zeW5jLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBmc1N0YXQgPSByZXF1aXJlX291dCgpO1xuICAgIHZhciBmc1dhbGsgPSByZXF1aXJlX291dDMoKTtcbiAgICB2YXIgcmVhZGVyXzEgPSByZXF1aXJlX3JlYWRlcjIoKTtcbiAgICB2YXIgUmVhZGVyU3luYyA9IGNsYXNzIGV4dGVuZHMgcmVhZGVyXzEuZGVmYXVsdCB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5fd2Fsa1N5bmMgPSBmc1dhbGsud2Fsa1N5bmM7XG4gICAgICAgIHRoaXMuX3N0YXRTeW5jID0gZnNTdGF0LnN0YXRTeW5jO1xuICAgICAgfVxuICAgICAgZHluYW1pYyhyb290LCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93YWxrU3luYyhyb290LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyhwYXR0ZXJucywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgICAgIGNvbnN0IGZpbGVwYXRoID0gdGhpcy5fZ2V0RnVsbEVudHJ5UGF0aChwYXR0ZXJuKTtcbiAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuX2dldEVudHJ5KGZpbGVwYXRoLCBwYXR0ZXJuLCBvcHRpb25zKTtcbiAgICAgICAgICBpZiAoZW50cnkgPT09IG51bGwgfHwgIW9wdGlvbnMuZW50cnlGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50cmllcztcbiAgICAgIH1cbiAgICAgIF9nZXRFbnRyeShmaWxlcGF0aCwgcGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHN0YXRzID0gdGhpcy5fZ2V0U3RhdChmaWxlcGF0aCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX21ha2VFbnRyeShzdGF0cywgcGF0dGVybik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3JGaWx0ZXIoZXJyb3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9nZXRTdGF0KGZpbGVwYXRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0U3luYyhmaWxlcGF0aCwgdGhpcy5fZnNTdGF0U2V0dGluZ3MpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IFJlYWRlclN5bmM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc3luYzcgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3N5bmMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHN5bmNfMSA9IHJlcXVpcmVfc3luYzYoKTtcbiAgICB2YXIgcHJvdmlkZXJfMSA9IHJlcXVpcmVfcHJvdmlkZXIoKTtcbiAgICB2YXIgUHJvdmlkZXJTeW5jID0gY2xhc3MgZXh0ZW5kcyBwcm92aWRlcl8xLmRlZmF1bHQge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzeW5jXzEuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgICB9XG4gICAgICByZWFkKHRhc2spIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuX2dldFJvb3REaXJlY3RvcnkodGFzayk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRSZWFkZXJPcHRpb25zKHRhc2spO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gdGhpcy5hcGkocm9vdCwgdGFzaywgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBlbnRyaWVzLm1hcChvcHRpb25zLnRyYW5zZm9ybSk7XG4gICAgICB9XG4gICAgICBhcGkocm9vdCwgdGFzaywgb3B0aW9ucykge1xuICAgICAgICBpZiAodGFzay5keW5hbWljKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5keW5hbWljKHJvb3QsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuc3RhdGljKHRhc2sucGF0dGVybnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IFByb3ZpZGVyU3luYztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zZXR0aW5nczQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvc2V0dGluZ3MuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuREVGQVVMVF9GSUxFX1NZU1RFTV9BREFQVEVSID0gdm9pZCAwO1xuICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICB2YXIgb3MgPSByZXF1aXJlKFwib3NcIik7XG4gICAgdmFyIENQVV9DT1VOVCA9IE1hdGgubWF4KG9zLmNwdXMoKS5sZW5ndGgsIDEpO1xuICAgIGV4cG9ydHMyLkRFRkFVTFRfRklMRV9TWVNURU1fQURBUFRFUiA9IHtcbiAgICAgIGxzdGF0OiBmcy5sc3RhdCxcbiAgICAgIGxzdGF0U3luYzogZnMubHN0YXRTeW5jLFxuICAgICAgc3RhdDogZnMuc3RhdCxcbiAgICAgIHN0YXRTeW5jOiBmcy5zdGF0U3luYyxcbiAgICAgIHJlYWRkaXI6IGZzLnJlYWRkaXIsXG4gICAgICByZWFkZGlyU3luYzogZnMucmVhZGRpclN5bmNcbiAgICB9O1xuICAgIHZhciBTZXR0aW5ncyA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IF9vcHRpb25zO1xuICAgICAgICB0aGlzLmFic29sdXRlID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5hYnNvbHV0ZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmJhc2VOYW1lTWF0Y2ggPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmJhc2VOYW1lTWF0Y2gsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5icmFjZUV4cGFuc2lvbiA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYnJhY2VFeHBhbnNpb24sIHRydWUpO1xuICAgICAgICB0aGlzLmNhc2VTZW5zaXRpdmVNYXRjaCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY2FzZVNlbnNpdGl2ZU1hdGNoLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jb25jdXJyZW5jeSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY29uY3VycmVuY3ksIENQVV9DT1VOVCk7XG4gICAgICAgIHRoaXMuY3dkID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5jd2QsIHByb2Nlc3MuY3dkKCkpO1xuICAgICAgICB0aGlzLmRlZXAgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRlZXAsIEluZmluaXR5KTtcbiAgICAgICAgdGhpcy5kb3QgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRvdCwgZmFsc2UpO1xuICAgICAgICB0aGlzLmV4dGdsb2IgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmV4dGdsb2IsIHRydWUpO1xuICAgICAgICB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGlua3MsIHRydWUpO1xuICAgICAgICB0aGlzLmZzID0gdGhpcy5fZ2V0RmlsZVN5c3RlbU1ldGhvZHModGhpcy5fb3B0aW9ucy5mcyk7XG4gICAgICAgIHRoaXMuZ2xvYnN0YXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmdsb2JzdGFyLCB0cnVlKTtcbiAgICAgICAgdGhpcy5pZ25vcmUgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmlnbm9yZSwgW10pO1xuICAgICAgICB0aGlzLm1hcmtEaXJlY3RvcmllcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMubWFya0RpcmVjdG9yaWVzLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub2JqZWN0TW9kZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLm9ubHlEaXJlY3RvcmllcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub25seURpcmVjdG9yaWVzLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub25seUZpbGVzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5vbmx5RmlsZXMsIHRydWUpO1xuICAgICAgICB0aGlzLnN0YXRzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdGF0cywgZmFsc2UpO1xuICAgICAgICB0aGlzLnN1cHByZXNzRXJyb3JzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdXBwcmVzc0Vycm9ycywgZmFsc2UpO1xuICAgICAgICB0aGlzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rLCBmYWxzZSk7XG4gICAgICAgIHRoaXMudW5pcXVlID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy51bmlxdWUsIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5vbmx5RGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICB0aGlzLm9ubHlGaWxlcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN0YXRzKSB7XG4gICAgICAgICAgdGhpcy5vYmplY3RNb2RlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA9PT0gdm9pZCAwID8gdmFsdWUgOiBvcHRpb247XG4gICAgICB9XG4gICAgICBfZ2V0RmlsZVN5c3RlbU1ldGhvZHMobWV0aG9kcyA9IHt9KSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGV4cG9ydHMyLkRFRkFVTFRfRklMRV9TWVNURU1fQURBUFRFUiksIG1ldGhvZHMpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuZGVmYXVsdCA9IFNldHRpbmdzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX291dDQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB0YXNrTWFuYWdlciA9IHJlcXVpcmVfdGFza3MoKTtcbiAgICB2YXIgcGF0dGVybk1hbmFnZXIgPSByZXF1aXJlX3BhdHRlcm5zKCk7XG4gICAgdmFyIGFzeW5jXzEgPSByZXF1aXJlX2FzeW5jNigpO1xuICAgIHZhciBzdHJlYW1fMSA9IHJlcXVpcmVfc3RyZWFtNCgpO1xuICAgIHZhciBzeW5jXzEgPSByZXF1aXJlX3N5bmM3KCk7XG4gICAgdmFyIHNldHRpbmdzXzEgPSByZXF1aXJlX3NldHRpbmdzNCgpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmVfdXRpbHM0KCk7XG4gICAgYXN5bmMgZnVuY3Rpb24gRmFzdEdsb2Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgICBhc3NlcnRQYXR0ZXJuc0lucHV0KHNvdXJjZSk7XG4gICAgICBjb25zdCB3b3JrcyA9IGdldFdvcmtzKHNvdXJjZSwgYXN5bmNfMS5kZWZhdWx0LCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHdvcmtzKTtcbiAgICAgIHJldHVybiB1dGlscy5hcnJheS5mbGF0dGVuKHJlc3VsdCk7XG4gICAgfVxuICAgIChmdW5jdGlvbihGYXN0R2xvYjIpIHtcbiAgICAgIGZ1bmN0aW9uIHN5bmMoc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgY29uc3Qgd29ya3MgPSBnZXRXb3Jrcyhzb3VyY2UsIHN5bmNfMS5kZWZhdWx0LCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmFycmF5LmZsYXR0ZW4od29ya3MpO1xuICAgICAgfVxuICAgICAgRmFzdEdsb2IyLnN5bmMgPSBzeW5jO1xuICAgICAgZnVuY3Rpb24gc3RyZWFtKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICBhc3NlcnRQYXR0ZXJuc0lucHV0KHNvdXJjZSk7XG4gICAgICAgIGNvbnN0IHdvcmtzID0gZ2V0V29ya3Moc291cmNlLCBzdHJlYW1fMS5kZWZhdWx0LCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnN0cmVhbS5tZXJnZSh3b3Jrcyk7XG4gICAgICB9XG4gICAgICBGYXN0R2xvYjIuc3RyZWFtID0gc3RyZWFtO1xuICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVUYXNrcyhzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xuICAgICAgICBjb25zdCBwYXR0ZXJucyA9IHBhdHRlcm5NYW5hZ2VyLnRyYW5zZm9ybShbXS5jb25jYXQoc291cmNlKSk7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHRhc2tNYW5hZ2VyLmdlbmVyYXRlKHBhdHRlcm5zLCBzZXR0aW5ncyk7XG4gICAgICB9XG4gICAgICBGYXN0R2xvYjIuZ2VuZXJhdGVUYXNrcyA9IGdlbmVyYXRlVGFza3M7XG4gICAgICBmdW5jdGlvbiBpc0R5bmFtaWNQYXR0ZXJuKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICBhc3NlcnRQYXR0ZXJuc0lucHV0KHNvdXJjZSk7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4uaXNEeW5hbWljUGF0dGVybihzb3VyY2UsIHNldHRpbmdzKTtcbiAgICAgIH1cbiAgICAgIEZhc3RHbG9iMi5pc0R5bmFtaWNQYXR0ZXJuID0gaXNEeW5hbWljUGF0dGVybjtcbiAgICAgIGZ1bmN0aW9uIGVzY2FwZVBhdGgoc291cmNlKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdGguZXNjYXBlKHNvdXJjZSk7XG4gICAgICB9XG4gICAgICBGYXN0R2xvYjIuZXNjYXBlUGF0aCA9IGVzY2FwZVBhdGg7XG4gICAgfSkoRmFzdEdsb2IgfHwgKEZhc3RHbG9iID0ge30pKTtcbiAgICBmdW5jdGlvbiBnZXRXb3Jrcyhzb3VyY2UsIF9Qcm92aWRlciwgb3B0aW9ucykge1xuICAgICAgY29uc3QgcGF0dGVybnMgPSBwYXR0ZXJuTWFuYWdlci50cmFuc2Zvcm0oW10uY29uY2F0KHNvdXJjZSkpO1xuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KG9wdGlvbnMpO1xuICAgICAgY29uc3QgdGFza3MgPSB0YXNrTWFuYWdlci5nZW5lcmF0ZShwYXR0ZXJucywgc2V0dGluZ3MpO1xuICAgICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgX1Byb3ZpZGVyKHNldHRpbmdzKTtcbiAgICAgIHJldHVybiB0YXNrcy5tYXAocHJvdmlkZXIucmVhZCwgcHJvdmlkZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhc3NlcnRQYXR0ZXJuc0lucHV0KGlucHV0KSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBbXS5jb25jYXQoaW5wdXQpO1xuICAgICAgY29uc3QgaXNWYWxpZFNvdXJjZSA9IHNvdXJjZS5ldmVyeSgoaXRlbSkgPT4gdXRpbHMuc3RyaW5nLmlzU3RyaW5nKGl0ZW0pICYmICF1dGlscy5zdHJpbmcuaXNFbXB0eShpdGVtKSk7XG4gICAgICBpZiAoIWlzVmFsaWRTb3VyY2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlBhdHRlcm5zIG11c3QgYmUgYSBzdHJpbmcgKG5vbiBlbXB0eSkgb3IgYW4gYXJyYXkgb2Ygc3RyaW5nc1wiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gRmFzdEdsb2I7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdW5pcV9ieV9rZXkgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL3V0aWxzL3VuaXEtYnkta2V5LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiB1bmlxQnlLZXkoYXJyYXksIGtleSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICBjb25zdCBzZWVuID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBhcnJheSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnRba2V5XTtcbiAgICAgICAgaWYgKCFzZWVuLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XG4gICAgICAgICAgcmVzdWx0LnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHVuaXFCeUtleTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jcmVhdGVfbGFuZ3VhZ2UgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL3V0aWxzL2NyZWF0ZS1sYW5ndWFnZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24obGluZ3Vpc3REYXRhLCBvdmVycmlkZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsYW5ndWFnZUlkXG4gICAgICB9ID0gbGluZ3Vpc3REYXRhLCByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGxpbmd1aXN0RGF0YSwgX2V4Y2x1ZGVkNCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHtcbiAgICAgICAgbGluZ3Vpc3RMYW5ndWFnZUlkOiBsYW5ndWFnZUlkXG4gICAgICB9LCByZXN0KSwgb3ZlcnJpZGUobGluZ3Vpc3REYXRhKSk7XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9hc3QgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL2FzdC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICBmdW5jdGlvbiBpc0V4cHJlc3Npb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBcIkFycmF5RXhwcmVzc2lvblwiOlxuICAgICAgICAgIGNhc2UgXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiOlxuICAgICAgICAgIGNhc2UgXCJCaW5hcnlFeHByZXNzaW9uXCI6XG4gICAgICAgICAgY2FzZSBcIkNhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgY2FzZSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiOlxuICAgICAgICAgIGNhc2UgXCJGdW5jdGlvbkV4cHJlc3Npb25cIjpcbiAgICAgICAgICBjYXNlIFwiSWRlbnRpZmllclwiOlxuICAgICAgICAgIGNhc2UgXCJMaXRlcmFsXCI6XG4gICAgICAgICAgY2FzZSBcIkxvZ2ljYWxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgY2FzZSBcIk1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgICBjYXNlIFwiTmV3RXhwcmVzc2lvblwiOlxuICAgICAgICAgIGNhc2UgXCJPYmplY3RFeHByZXNzaW9uXCI6XG4gICAgICAgICAgY2FzZSBcIlNlcXVlbmNlRXhwcmVzc2lvblwiOlxuICAgICAgICAgIGNhc2UgXCJUaGlzRXhwcmVzc2lvblwiOlxuICAgICAgICAgIGNhc2UgXCJVbmFyeUV4cHJlc3Npb25cIjpcbiAgICAgICAgICBjYXNlIFwiVXBkYXRlRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNJdGVyYXRpb25TdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBcIkRvV2hpbGVTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiRm9ySW5TdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiRm9yU3RhdGVtZW50XCI6XG4gICAgICAgICAgY2FzZSBcIldoaWxlU3RhdGVtZW50XCI6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc1N0YXRlbWVudChub2RlKSB7XG4gICAgICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwiQmxvY2tTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiQnJlYWtTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiQ29udGludWVTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiRGVidWdnZXJTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiRG9XaGlsZVN0YXRlbWVudFwiOlxuICAgICAgICAgIGNhc2UgXCJFbXB0eVN0YXRlbWVudFwiOlxuICAgICAgICAgIGNhc2UgXCJFeHByZXNzaW9uU3RhdGVtZW50XCI6XG4gICAgICAgICAgY2FzZSBcIkZvckluU3RhdGVtZW50XCI6XG4gICAgICAgICAgY2FzZSBcIkZvclN0YXRlbWVudFwiOlxuICAgICAgICAgIGNhc2UgXCJJZlN0YXRlbWVudFwiOlxuICAgICAgICAgIGNhc2UgXCJMYWJlbGVkU3RhdGVtZW50XCI6XG4gICAgICAgICAgY2FzZSBcIlJldHVyblN0YXRlbWVudFwiOlxuICAgICAgICAgIGNhc2UgXCJTd2l0Y2hTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiVGhyb3dTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiVHJ5U3RhdGVtZW50XCI6XG4gICAgICAgICAgY2FzZSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIjpcbiAgICAgICAgICBjYXNlIFwiV2hpbGVTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiV2l0aFN0YXRlbWVudFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNTb3VyY2VFbGVtZW50KG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RhdGVtZW50KG5vZGUpIHx8IG5vZGUgIT0gbnVsbCAmJiBub2RlLnR5cGUgPT09IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gdHJhaWxpbmdTdGF0ZW1lbnQobm9kZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJJZlN0YXRlbWVudFwiOlxuICAgICAgICAgICAgaWYgKG5vZGUuYWx0ZXJuYXRlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuYWx0ZXJuYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY29uc2VxdWVudDtcbiAgICAgICAgICBjYXNlIFwiTGFiZWxlZFN0YXRlbWVudFwiOlxuICAgICAgICAgIGNhc2UgXCJGb3JTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiRm9ySW5TdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiV2hpbGVTdGF0ZW1lbnRcIjpcbiAgICAgICAgICBjYXNlIFwiV2l0aFN0YXRlbWVudFwiOlxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuYm9keTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlzUHJvYmxlbWF0aWNJZlN0YXRlbWVudChub2RlKSB7XG4gICAgICAgIHZhciBjdXJyZW50O1xuICAgICAgICBpZiAobm9kZS50eXBlICE9PSBcIklmU3RhdGVtZW50XCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuYWx0ZXJuYXRlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IG5vZGUuY29uc2VxdWVudDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIGlmIChjdXJyZW50LnR5cGUgPT09IFwiSWZTdGF0ZW1lbnRcIikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQuYWx0ZXJuYXRlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnQgPSB0cmFpbGluZ1N0YXRlbWVudChjdXJyZW50KTtcbiAgICAgICAgfSB3aGlsZSAoY3VycmVudCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgICAgaXNFeHByZXNzaW9uLFxuICAgICAgICBpc1N0YXRlbWVudCxcbiAgICAgICAgaXNJdGVyYXRpb25TdGF0ZW1lbnQsXG4gICAgICAgIGlzU291cmNlRWxlbWVudCxcbiAgICAgICAgaXNQcm9ibGVtYXRpY0lmU3RhdGVtZW50LFxuICAgICAgICB0cmFpbGluZ1N0YXRlbWVudFxuICAgICAgfTtcbiAgICB9KSgpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NvZGUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2VzdXRpbHMvbGliL2NvZGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuICAgICAgdmFyIEVTNlJlZ2V4LCBFUzVSZWdleCwgTk9OX0FTQ0lJX1dISVRFU1BBQ0VTLCBJREVOVElGSUVSX1NUQVJULCBJREVOVElGSUVSX1BBUlQsIGNoO1xuICAgICAgRVM1UmVnZXggPSB7XG4gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OiAvW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEJEXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MFxcdTBDNjFcXHUwQzgwXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDU0LVxcdTBENTZcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZFRS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4ODRcXHUxODg3LVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUM4MC1cXHUxQzg4XFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE2MC1cXHUyMTg4XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkQ1XFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RUZcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QUVcXHVBN0IwLVxcdUE3QjdcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNjVcXHVBQjcwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdLyxcbiAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDMwMC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwOEEwLVxcdTA4QjRcXHUwOEI2LVxcdTA4QkRcXHUwOEQ0LVxcdTA4RTFcXHUwOEUzLVxcdTA5NjNcXHUwOTY2LVxcdTA5NkZcXHUwOTcxLVxcdTA5ODNcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJDLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRVxcdTA5RDdcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFM1xcdTA5RTYtXFx1MDlGMVxcdTBBMDEtXFx1MEEwM1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEEzQ1xcdTBBM0UtXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTY2LVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkMtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRDBcXHUwQUUwLVxcdTBBRTNcXHUwQUU2LVxcdTBBRUZcXHUwQUY5XFx1MEIwMS1cXHUwQjAzXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0MtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCNzFcXHUwQjgyXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQwXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDAtXFx1MEMwM1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0QtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM1OC1cXHUwQzVBXFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MC1cXHUwQzgzXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCQy1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0RFXFx1MENFMC1cXHUwQ0UzXFx1MENFNi1cXHUwQ0VGXFx1MENGMVxcdTBDRjJcXHUwRDAxLVxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNELVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU0LVxcdTBENTdcXHUwRDVGLVxcdTBENjNcXHUwRDY2LVxcdTBENkZcXHUwRDdBLVxcdTBEN0ZcXHUwRDgyXFx1MEQ4M1xcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERTYtXFx1MERFRlxcdTBERjJcXHUwREYzXFx1MEUwMS1cXHUwRTNBXFx1MEU0MC1cXHUwRTRFXFx1MEU1MC1cXHUwRTU5XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjlcXHUwRUJCLVxcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVDOC1cXHUwRUNEXFx1MEVEMC1cXHUwRUQ5XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGMThcXHUwRjE5XFx1MEYyMC1cXHUwRjI5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRS1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY3MS1cXHUwRjg0XFx1MEY4Ni1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMDAtXFx1MTA0OVxcdTEwNTAtXFx1MTA5RFxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzVELVxcdTEzNUZcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTRcXHUxNzIwLVxcdTE3MzRcXHUxNzQwLVxcdTE3NTNcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzcyXFx1MTc3M1xcdTE3ODAtXFx1MTdEM1xcdTE3RDdcXHUxN0RDXFx1MTdERFxcdTE3RTAtXFx1MTdFOVxcdTE4MEItXFx1MTgwRFxcdTE4MTAtXFx1MTgxOVxcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTE5NDYtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTE5RDAtXFx1MTlEOVxcdTFBMDAtXFx1MUExQlxcdTFBMjAtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0YtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFBQTdcXHUxQUIwLVxcdTFBQkRcXHUxQjAwLVxcdTFCNEJcXHUxQjUwLVxcdTFCNTlcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCRjNcXHUxQzAwLVxcdTFDMzdcXHUxQzQwLVxcdTFDNDlcXHUxQzRELVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRjZcXHUxQ0Y4XFx1MUNGOVxcdTFEMDAtXFx1MURGNVxcdTFERkItXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDBDXFx1MjAwRFxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDdGLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyREUwLVxcdTJERkZcXHUyRTJGXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDJGXFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5OVxcdTMwOUFcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGRDVcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MkJcXHVBNjQwLVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjdGLVxcdUE2RjFcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QUVcXHVBN0IwLVxcdUE3QjdcXHVBN0Y3LVxcdUE4MjdcXHVBODQwLVxcdUE4NzNcXHVBODgwLVxcdUE4QzVcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MDAtXFx1QTkyRFxcdUE5MzAtXFx1QTk1M1xcdUE5NjAtXFx1QTk3Q1xcdUE5ODAtXFx1QTlDMFxcdUE5Q0YtXFx1QTlEOVxcdUE5RTAtXFx1QTlGRVxcdUFBMDAtXFx1QUEzNlxcdUFBNDAtXFx1QUE0RFxcdUFBNTAtXFx1QUE1OVxcdUFBNjAtXFx1QUE3NlxcdUFBN0EtXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFRlxcdUFBRjItXFx1QUFGNlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2NVxcdUFCNzAtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRC1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkZcXHVGRTMzXFx1RkUzNFxcdUZFNEQtXFx1RkU0RlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMTAtXFx1RkYxOVxcdUZGMjEtXFx1RkYzQVxcdUZGM0ZcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdL1xuICAgICAgfTtcbiAgICAgIEVTNlJlZ2V4ID0ge1xuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogL1tcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4QTAtXFx1MDhCNFxcdTA4QjYtXFx1MDhCRFxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxMVxcdTE3MjAtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDODAtXFx1MUM4OFxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGMVxcdTFDRjVcXHUxQ0Y2XFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOC1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNFRVxcdTJDRjJcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MzAwNS1cXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzMS1cXHUzMDM1XFx1MzAzOC1cXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5Qi1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkQ1XFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RUZcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QUVcXHVBN0IwLVxcdUE3QjdcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNjVcXHVBQjcwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdfFxcdUQ4MDBbXFx1REMwMC1cXHVEQzBCXFx1REMwRC1cXHVEQzI2XFx1REMyOC1cXHVEQzNBXFx1REMzQ1xcdURDM0RcXHVEQzNGLVxcdURDNERcXHVEQzUwLVxcdURDNURcXHVEQzgwLVxcdURDRkFcXHVERDQwLVxcdURENzRcXHVERTgwLVxcdURFOUNcXHVERUEwLVxcdURFRDBcXHVERjAwLVxcdURGMUZcXHVERjMwLVxcdURGNEFcXHVERjUwLVxcdURGNzVcXHVERjgwLVxcdURGOURcXHVERkEwLVxcdURGQzNcXHVERkM4LVxcdURGQ0ZcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDFbXFx1REMwMC1cXHVEQzlEXFx1RENCMC1cXHVEQ0QzXFx1RENEOC1cXHVEQ0ZCXFx1REQwMC1cXHVERDI3XFx1REQzMC1cXHVERDYzXFx1REUwMC1cXHVERjM2XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjY3XXxcXHVEODAyW1xcdURDMDAtXFx1REMwNVxcdURDMDhcXHVEQzBBLVxcdURDMzVcXHVEQzM3XFx1REMzOFxcdURDM0NcXHVEQzNGLVxcdURDNTVcXHVEQzYwLVxcdURDNzZcXHVEQzgwLVxcdURDOUVcXHVEQ0UwLVxcdURDRjJcXHVEQ0Y0XFx1RENGNVxcdUREMDAtXFx1REQxNVxcdUREMjAtXFx1REQzOVxcdUREODAtXFx1RERCN1xcdUREQkVcXHVEREJGXFx1REUwMFxcdURFMTAtXFx1REUxM1xcdURFMTUtXFx1REUxN1xcdURFMTktXFx1REUzM1xcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNFxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhcXHVEQzgwLVxcdURDQjJcXHVEQ0MwLVxcdURDRjJdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ1MC1cXHVERDcyXFx1REQ3NlxcdUREODMtXFx1RERCMlxcdUREQzEtXFx1RERDNFxcdUREREFcXHVERERDXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTJCXFx1REU4MC1cXHVERTg2XFx1REU4OFxcdURFOEEtXFx1REU4RFxcdURFOEYtXFx1REU5RFxcdURFOUYtXFx1REVBOFxcdURFQjAtXFx1REVERVxcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNEXFx1REY1MFxcdURGNUQtXFx1REY2MV18XFx1RDgwNVtcXHVEQzAwLVxcdURDMzRcXHVEQzQ3LVxcdURDNEFcXHVEQzgwLVxcdURDQUZcXHVEQ0M0XFx1RENDNVxcdURDQzdcXHVERDgwLVxcdUREQUVcXHVEREQ4LVxcdUREREJcXHVERTAwLVxcdURFMkZcXHVERTQ0XFx1REU4MC1cXHVERUFBXFx1REYwMC1cXHVERjE5XXxcXHVEODA2W1xcdURDQTAtXFx1RENERlxcdURDRkZcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4Rl18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3Ml1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURGMDAtXFx1REY0NFxcdURGNTBcXHVERjkzLVxcdURGOUZcXHVERkUwXXxcXHVEODIxW1xcdURDMDAtXFx1REZFQ118XFx1RDgyMltcXHVEQzAwLVxcdURFRjJdfFxcdUQ4MkNbXFx1REMwMFxcdURDMDFdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4M0FbXFx1REMwMC1cXHVEQ0M0XFx1REQwMC1cXHVERDQzXXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUQ2XFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF0vLFxuICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OiAvW1xceEFBXFx4QjVcXHhCN1xceEJBXFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzMDAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODYtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDgzLVxcdTA0ODdcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYxMC1cXHUwNjFBXFx1MDYyMC1cXHUwNjY5XFx1MDY2RS1cXHUwNkQzXFx1MDZENS1cXHUwNkRDXFx1MDZERi1cXHUwNkU4XFx1MDZFQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTAtXFx1MDc0QVxcdTA3NEQtXFx1MDdCMVxcdTA3QzAtXFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MkRcXHUwODQwLVxcdTA4NUJcXHUwOEEwLVxcdTA4QjRcXHUwOEI2LVxcdTA4QkRcXHUwOEQ0LVxcdTA4RTFcXHUwOEUzLVxcdTA5NjNcXHUwOTY2LVxcdTA5NkZcXHUwOTcxLVxcdTA5ODNcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJDLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRVxcdTA5RDdcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFM1xcdTA5RTYtXFx1MDlGMVxcdTBBMDEtXFx1MEEwM1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEEzQ1xcdTBBM0UtXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTY2LVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkMtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRDBcXHUwQUUwLVxcdTBBRTNcXHUwQUU2LVxcdTBBRUZcXHUwQUY5XFx1MEIwMS1cXHUwQjAzXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0MtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2M1xcdTBCNjYtXFx1MEI2RlxcdTBCNzFcXHUwQjgyXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQwXFx1MEJEN1xcdTBCRTYtXFx1MEJFRlxcdTBDMDAtXFx1MEMwM1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0QtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM1OC1cXHUwQzVBXFx1MEM2MC1cXHUwQzYzXFx1MEM2Ni1cXHUwQzZGXFx1MEM4MC1cXHUwQzgzXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCQy1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0RFXFx1MENFMC1cXHUwQ0UzXFx1MENFNi1cXHUwQ0VGXFx1MENGMVxcdTBDRjJcXHUwRDAxLVxcdTBEMDNcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNELVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENEVcXHUwRDU0LVxcdTBENTdcXHUwRDVGLVxcdTBENjNcXHUwRDY2LVxcdTBENkZcXHUwRDdBLVxcdTBEN0ZcXHUwRDgyXFx1MEQ4M1xcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERTYtXFx1MERFRlxcdTBERjJcXHUwREYzXFx1MEUwMS1cXHUwRTNBXFx1MEU0MC1cXHUwRTRFXFx1MEU1MC1cXHUwRTU5XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjlcXHUwRUJCLVxcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVDOC1cXHUwRUNEXFx1MEVEMC1cXHUwRUQ5XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGMThcXHUwRjE5XFx1MEYyMC1cXHUwRjI5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEYzRS1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY3MS1cXHUwRjg0XFx1MEY4Ni1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMDAtXFx1MTA0OVxcdTEwNTAtXFx1MTA5RFxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzVELVxcdTEzNUZcXHUxMzY5LVxcdTEzNzFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTRcXHUxNzIwLVxcdTE3MzRcXHUxNzQwLVxcdTE3NTNcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzcyXFx1MTc3M1xcdTE3ODAtXFx1MTdEM1xcdTE3RDdcXHUxN0RDXFx1MTdERFxcdTE3RTAtXFx1MTdFOVxcdTE4MEItXFx1MTgwRFxcdTE4MTAtXFx1MTgxOVxcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTE5NDYtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTE5RDAtXFx1MTlEQVxcdTFBMDAtXFx1MUExQlxcdTFBMjAtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0YtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFBQTdcXHUxQUIwLVxcdTFBQkRcXHUxQjAwLVxcdTFCNEJcXHUxQjUwLVxcdTFCNTlcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCRjNcXHUxQzAwLVxcdTFDMzdcXHUxQzQwLVxcdTFDNDlcXHUxQzRELVxcdTFDN0RcXHUxQzgwLVxcdTFDODhcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRjZcXHUxQ0Y4XFx1MUNGOVxcdTFEMDAtXFx1MURGNVxcdTFERkItXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDBDXFx1MjAwRFxcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDdGLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyREUwLVxcdTJERkZcXHUzMDA1LVxcdTMwMDdcXHUzMDIxLVxcdTMwMkZcXHUzMDMxLVxcdTMwMzVcXHUzMDM4LVxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDk5LVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGRDVcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MkJcXHVBNjQwLVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjdGLVxcdUE2RjFcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QUVcXHVBN0IwLVxcdUE3QjdcXHVBN0Y3LVxcdUE4MjdcXHVBODQwLVxcdUE4NzNcXHVBODgwLVxcdUE4QzVcXHVBOEQwLVxcdUE4RDlcXHVBOEUwLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MDAtXFx1QTkyRFxcdUE5MzAtXFx1QTk1M1xcdUE5NjAtXFx1QTk3Q1xcdUE5ODAtXFx1QTlDMFxcdUE5Q0YtXFx1QTlEOVxcdUE5RTAtXFx1QTlGRVxcdUFBMDAtXFx1QUEzNlxcdUFBNDAtXFx1QUE0RFxcdUFBNTAtXFx1QUE1OVxcdUFBNjAtXFx1QUE3NlxcdUFBN0EtXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFRlxcdUFBRjItXFx1QUFGNlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2NVxcdUFCNzAtXFx1QUJFQVxcdUFCRUNcXHVBQkVEXFx1QUJGMC1cXHVBQkY5XFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRC1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkZcXHVGRTMzXFx1RkUzNFxcdUZFNEQtXFx1RkU0RlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMTAtXFx1RkYxOVxcdUZGMjEtXFx1RkYzQVxcdUZGM0ZcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdfFxcdUQ4MDBbXFx1REMwMC1cXHVEQzBCXFx1REMwRC1cXHVEQzI2XFx1REMyOC1cXHVEQzNBXFx1REMzQ1xcdURDM0RcXHVEQzNGLVxcdURDNERcXHVEQzUwLVxcdURDNURcXHVEQzgwLVxcdURDRkFcXHVERDQwLVxcdURENzRcXHVEREZEXFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REVFMFxcdURGMDAtXFx1REYxRlxcdURGMzAtXFx1REY0QVxcdURGNTAtXFx1REY3QVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRlxcdURGRDEtXFx1REZENV18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0EwLVxcdURDQTlcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwLVxcdURFMDNcXHVERTA1XFx1REUwNlxcdURFMEMtXFx1REUxM1xcdURFMTUtXFx1REUxN1xcdURFMTktXFx1REUzM1xcdURFMzgtXFx1REUzQVxcdURFM0ZcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTZcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XFx1REM4MC1cXHVEQ0IyXFx1RENDMC1cXHVEQ0YyXXxcXHVEODA0W1xcdURDMDAtXFx1REM0NlxcdURDNjYtXFx1REM2RlxcdURDN0YtXFx1RENCQVxcdURDRDAtXFx1RENFOFxcdURDRjAtXFx1RENGOVxcdUREMDAtXFx1REQzNFxcdUREMzYtXFx1REQzRlxcdURENTAtXFx1REQ3M1xcdURENzZcXHVERDgwLVxcdUREQzRcXHVERENBLVxcdUREQ0NcXHVEREQwLVxcdUREREFcXHVERERDXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTM3XFx1REUzRVxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFRUFcXHVERUYwLVxcdURFRjlcXHVERjAwLVxcdURGMDNcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzQy1cXHVERjQ0XFx1REY0N1xcdURGNDhcXHVERjRCLVxcdURGNERcXHVERjUwXFx1REY1N1xcdURGNUQtXFx1REY2M1xcdURGNjYtXFx1REY2Q1xcdURGNzAtXFx1REY3NF18XFx1RDgwNVtcXHVEQzAwLVxcdURDNEFcXHVEQzUwLVxcdURDNTlcXHVEQzgwLVxcdURDQzVcXHVEQ0M3XFx1RENEMC1cXHVEQ0Q5XFx1REQ4MC1cXHVEREI1XFx1RERCOC1cXHVEREMwXFx1REREOC1cXHVEREREXFx1REUwMC1cXHVERTQwXFx1REU0NFxcdURFNTAtXFx1REU1OVxcdURFODAtXFx1REVCN1xcdURFQzAtXFx1REVDOVxcdURGMDAtXFx1REYxOVxcdURGMUQtXFx1REYyQlxcdURGMzAtXFx1REYzOV18XFx1RDgwNltcXHVEQ0EwLVxcdURDRTlcXHVEQ0ZGXFx1REVDMC1cXHVERUY4XXxcXHVEODA3W1xcdURDMDAtXFx1REMwOFxcdURDMEEtXFx1REMzNlxcdURDMzgtXFx1REM0MFxcdURDNTAtXFx1REM1OVxcdURDNzItXFx1REM4RlxcdURDOTItXFx1RENBN1xcdURDQTktXFx1RENCNl18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3Ml1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REU2MC1cXHVERTY5XFx1REVEMC1cXHVERUVEXFx1REVGMC1cXHVERUY0XFx1REYwMC1cXHVERjM2XFx1REY0MC1cXHVERjQzXFx1REY1MC1cXHVERjU5XFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURGMDAtXFx1REY0NFxcdURGNTAtXFx1REY3RVxcdURGOEYtXFx1REY5RlxcdURGRTBdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkVDXXxcXHVEODIyW1xcdURDMDAtXFx1REVGMl18XFx1RDgyQ1tcXHVEQzAwXFx1REMwMV18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTlcXHVEQzlEXFx1REM5RV18XFx1RDgzNFtcXHVERDY1LVxcdURENjlcXHVERDZELVxcdURENzJcXHVERDdCLVxcdUREODJcXHVERDg1LVxcdUREOEJcXHVEREFBLVxcdUREQURcXHVERTQyLVxcdURFNDRdfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQlxcdURGQ0UtXFx1REZGRl18XFx1RDgzNltcXHVERTAwLVxcdURFMzZcXHVERTNCLVxcdURFNkNcXHVERTc1XFx1REU4NFxcdURFOUItXFx1REU5RlxcdURFQTEtXFx1REVBRl18XFx1RDgzOFtcXHVEQzAwLVxcdURDMDZcXHVEQzA4LVxcdURDMThcXHVEQzFCLVxcdURDMjFcXHVEQzIzXFx1REMyNFxcdURDMjYtXFx1REMyQV18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVEQ0QwLVxcdURDRDZcXHVERDAwLVxcdURENEFcXHVERDUwLVxcdURENTldfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXXxcXHVEQjQwW1xcdUREMDAtXFx1RERFRl0vXG4gICAgICB9O1xuICAgICAgZnVuY3Rpb24gaXNEZWNpbWFsRGlnaXQoY2gyKSB7XG4gICAgICAgIHJldHVybiA0OCA8PSBjaDIgJiYgY2gyIDw9IDU3O1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNIZXhEaWdpdChjaDIpIHtcbiAgICAgICAgcmV0dXJuIDQ4IDw9IGNoMiAmJiBjaDIgPD0gNTcgfHwgOTcgPD0gY2gyICYmIGNoMiA8PSAxMDIgfHwgNjUgPD0gY2gyICYmIGNoMiA8PSA3MDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjaDIpIHtcbiAgICAgICAgcmV0dXJuIGNoMiA+PSA0OCAmJiBjaDIgPD0gNTU7XG4gICAgICB9XG4gICAgICBOT05fQVNDSUlfV0hJVEVTUEFDRVMgPSBbNTc2MCwgODE5MiwgODE5MywgODE5NCwgODE5NSwgODE5NiwgODE5NywgODE5OCwgODE5OSwgODIwMCwgODIwMSwgODIwMiwgODIzOSwgODI4NywgMTIyODgsIDY1Mjc5XTtcbiAgICAgIGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjaDIpIHtcbiAgICAgICAgcmV0dXJuIGNoMiA9PT0gMzIgfHwgY2gyID09PSA5IHx8IGNoMiA9PT0gMTEgfHwgY2gyID09PSAxMiB8fCBjaDIgPT09IDE2MCB8fCBjaDIgPj0gNTc2MCAmJiBOT05fQVNDSUlfV0hJVEVTUEFDRVMuaW5kZXhPZihjaDIpID49IDA7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc0xpbmVUZXJtaW5hdG9yKGNoMikge1xuICAgICAgICByZXR1cm4gY2gyID09PSAxMCB8fCBjaDIgPT09IDEzIHx8IGNoMiA9PT0gODIzMiB8fCBjaDIgPT09IDgyMzM7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KGNwKSB7XG4gICAgICAgIGlmIChjcCA8PSA2NTUzNSkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY3UxID0gU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLmZsb29yKChjcCAtIDY1NTM2KSAvIDEwMjQpICsgNTUyOTYpO1xuICAgICAgICB2YXIgY3UyID0gU3RyaW5nLmZyb21DaGFyQ29kZSgoY3AgLSA2NTUzNikgJSAxMDI0ICsgNTYzMjApO1xuICAgICAgICByZXR1cm4gY3UxICsgY3UyO1xuICAgICAgfVxuICAgICAgSURFTlRJRklFUl9TVEFSVCA9IG5ldyBBcnJheSgxMjgpO1xuICAgICAgZm9yIChjaCA9IDA7IGNoIDwgMTI4OyArK2NoKSB7XG4gICAgICAgIElERU5USUZJRVJfU1RBUlRbY2hdID0gY2ggPj0gOTcgJiYgY2ggPD0gMTIyIHx8IGNoID49IDY1ICYmIGNoIDw9IDkwIHx8IGNoID09PSAzNiB8fCBjaCA9PT0gOTU7XG4gICAgICB9XG4gICAgICBJREVOVElGSUVSX1BBUlQgPSBuZXcgQXJyYXkoMTI4KTtcbiAgICAgIGZvciAoY2ggPSAwOyBjaCA8IDEyODsgKytjaCkge1xuICAgICAgICBJREVOVElGSUVSX1BBUlRbY2hdID0gY2ggPj0gOTcgJiYgY2ggPD0gMTIyIHx8IGNoID49IDY1ICYmIGNoIDw9IDkwIHx8IGNoID49IDQ4ICYmIGNoIDw9IDU3IHx8IGNoID09PSAzNiB8fCBjaCA9PT0gOTU7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydEVTNShjaDIpIHtcbiAgICAgICAgcmV0dXJuIGNoMiA8IDEyOCA/IElERU5USUZJRVJfU1RBUlRbY2gyXSA6IEVTNVJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclN0YXJ0LnRlc3QoZnJvbUNvZGVQb2ludChjaDIpKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnRFUzUoY2gyKSB7XG4gICAgICAgIHJldHVybiBjaDIgPCAxMjggPyBJREVOVElGSUVSX1BBUlRbY2gyXSA6IEVTNVJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclBhcnQudGVzdChmcm9tQ29kZVBvaW50KGNoMikpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyU3RhcnRFUzYoY2gyKSB7XG4gICAgICAgIHJldHVybiBjaDIgPCAxMjggPyBJREVOVElGSUVSX1NUQVJUW2NoMl0gOiBFUzZSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KGZyb21Db2RlUG9pbnQoY2gyKSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJQYXJ0RVM2KGNoMikge1xuICAgICAgICByZXR1cm4gY2gyIDwgMTI4ID8gSURFTlRJRklFUl9QQVJUW2NoMl0gOiBFUzZSZWdleC5Ob25Bc2NpaUlkZW50aWZpZXJQYXJ0LnRlc3QoZnJvbUNvZGVQb2ludChjaDIpKTtcbiAgICAgIH1cbiAgICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgICAgaXNEZWNpbWFsRGlnaXQsXG4gICAgICAgIGlzSGV4RGlnaXQsXG4gICAgICAgIGlzT2N0YWxEaWdpdCxcbiAgICAgICAgaXNXaGl0ZVNwYWNlLFxuICAgICAgICBpc0xpbmVUZXJtaW5hdG9yLFxuICAgICAgICBpc0lkZW50aWZpZXJTdGFydEVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyUGFydEVTNSxcbiAgICAgICAgaXNJZGVudGlmaWVyU3RhcnRFUzYsXG4gICAgICAgIGlzSWRlbnRpZmllclBhcnRFUzZcbiAgICAgIH07XG4gICAgfSkoKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9rZXl3b3JkMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZXN1dGlscy9saWIva2V5d29yZC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICB2YXIgY29kZSA9IHJlcXVpcmVfY29kZSgpO1xuICAgICAgZnVuY3Rpb24gaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkRVM2KGlkKSB7XG4gICAgICAgIHN3aXRjaCAoaWQpIHtcbiAgICAgICAgICBjYXNlIFwiaW1wbGVtZW50c1wiOlxuICAgICAgICAgIGNhc2UgXCJpbnRlcmZhY2VcIjpcbiAgICAgICAgICBjYXNlIFwicGFja2FnZVwiOlxuICAgICAgICAgIGNhc2UgXCJwcml2YXRlXCI6XG4gICAgICAgICAgY2FzZSBcInByb3RlY3RlZFwiOlxuICAgICAgICAgIGNhc2UgXCJwdWJsaWNcIjpcbiAgICAgICAgICBjYXNlIFwic3RhdGljXCI6XG4gICAgICAgICAgY2FzZSBcImxldFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNLZXl3b3JkRVM1KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgaWYgKCFzdHJpY3QgJiYgaWQgPT09IFwieWllbGRcIikge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNLZXl3b3JkRVM2KGlkLCBzdHJpY3QpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNLZXl3b3JkRVM2KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgaWYgKHN0cmljdCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmRFUzYoaWQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpZC5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gaWQgPT09IFwiaWZcIiB8fCBpZCA9PT0gXCJpblwiIHx8IGlkID09PSBcImRvXCI7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIGlkID09PSBcInZhclwiIHx8IGlkID09PSBcImZvclwiIHx8IGlkID09PSBcIm5ld1wiIHx8IGlkID09PSBcInRyeVwiO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiBpZCA9PT0gXCJ0aGlzXCIgfHwgaWQgPT09IFwiZWxzZVwiIHx8IGlkID09PSBcImNhc2VcIiB8fCBpZCA9PT0gXCJ2b2lkXCIgfHwgaWQgPT09IFwid2l0aFwiIHx8IGlkID09PSBcImVudW1cIjtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gaWQgPT09IFwid2hpbGVcIiB8fCBpZCA9PT0gXCJicmVha1wiIHx8IGlkID09PSBcImNhdGNoXCIgfHwgaWQgPT09IFwidGhyb3dcIiB8fCBpZCA9PT0gXCJjb25zdFwiIHx8IGlkID09PSBcInlpZWxkXCIgfHwgaWQgPT09IFwiY2xhc3NcIiB8fCBpZCA9PT0gXCJzdXBlclwiO1xuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiBpZCA9PT0gXCJyZXR1cm5cIiB8fCBpZCA9PT0gXCJ0eXBlb2ZcIiB8fCBpZCA9PT0gXCJkZWxldGVcIiB8fCBpZCA9PT0gXCJzd2l0Y2hcIiB8fCBpZCA9PT0gXCJleHBvcnRcIiB8fCBpZCA9PT0gXCJpbXBvcnRcIjtcbiAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gaWQgPT09IFwiZGVmYXVsdFwiIHx8IGlkID09PSBcImZpbmFsbHlcIiB8fCBpZCA9PT0gXCJleHRlbmRzXCI7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIGlkID09PSBcImZ1bmN0aW9uXCIgfHwgaWQgPT09IFwiY29udGludWVcIiB8fCBpZCA9PT0gXCJkZWJ1Z2dlclwiO1xuICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICByZXR1cm4gaWQgPT09IFwiaW5zdGFuY2VvZlwiO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlzUmVzZXJ2ZWRXb3JkRVM1KGlkLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGlkID09PSBcIm51bGxcIiB8fCBpZCA9PT0gXCJ0cnVlXCIgfHwgaWQgPT09IFwiZmFsc2VcIiB8fCBpc0tleXdvcmRFUzUoaWQsIHN0cmljdCk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc1Jlc2VydmVkV29yZEVTNihpZCwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBpZCA9PT0gXCJudWxsXCIgfHwgaWQgPT09IFwidHJ1ZVwiIHx8IGlkID09PSBcImZhbHNlXCIgfHwgaXNLZXl3b3JkRVM2KGlkLCBzdHJpY3QpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNSZXN0cmljdGVkV29yZChpZCkge1xuICAgICAgICByZXR1cm4gaWQgPT09IFwiZXZhbFwiIHx8IGlkID09PSBcImFyZ3VtZW50c1wiO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyTmFtZUVTNShpZCkge1xuICAgICAgICB2YXIgaSwgaXosIGNoO1xuICAgICAgICBpZiAoaWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNoID0gaWQuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgaWYgKCFjb2RlLmlzSWRlbnRpZmllclN0YXJ0RVM1KGNoKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAxLCBpeiA9IGlkLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICBjaCA9IGlkLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgaWYgKCFjb2RlLmlzSWRlbnRpZmllclBhcnRFUzUoY2gpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZGVjb2RlVXRmMTYobGVhZCwgdHJhaWwpIHtcbiAgICAgICAgcmV0dXJuIChsZWFkIC0gNTUyOTYpICogMTAyNCArICh0cmFpbCAtIDU2MzIwKSArIDY1NTM2O1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyTmFtZUVTNihpZCkge1xuICAgICAgICB2YXIgaSwgaXosIGNoLCBsb3dDaCwgY2hlY2s7XG4gICAgICAgIGlmIChpZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2hlY2sgPSBjb2RlLmlzSWRlbnRpZmllclN0YXJ0RVM2O1xuICAgICAgICBmb3IgKGkgPSAwLCBpeiA9IGlkLmxlbmd0aDsgaSA8IGl6OyArK2kpIHtcbiAgICAgICAgICBjaCA9IGlkLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgaWYgKDU1Mjk2IDw9IGNoICYmIGNoIDw9IDU2MzE5KSB7XG4gICAgICAgICAgICArK2k7XG4gICAgICAgICAgICBpZiAoaSA+PSBpeikge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb3dDaCA9IGlkLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBpZiAoISg1NjMyMCA8PSBsb3dDaCAmJiBsb3dDaCA8PSA1NzM0MykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2ggPSBkZWNvZGVVdGYxNihjaCwgbG93Q2gpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWNoZWNrKGNoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaGVjayA9IGNvZGUuaXNJZGVudGlmaWVyUGFydEVTNjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllckVTNShpZCwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBpc0lkZW50aWZpZXJOYW1lRVM1KGlkKSAmJiAhaXNSZXNlcnZlZFdvcmRFUzUoaWQsIHN0cmljdCk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJFUzYoaWQsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gaXNJZGVudGlmaWVyTmFtZUVTNihpZCkgJiYgIWlzUmVzZXJ2ZWRXb3JkRVM2KGlkLCBzdHJpY3QpO1xuICAgICAgfVxuICAgICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgICBpc0tleXdvcmRFUzUsXG4gICAgICAgIGlzS2V5d29yZEVTNixcbiAgICAgICAgaXNSZXNlcnZlZFdvcmRFUzUsXG4gICAgICAgIGlzUmVzZXJ2ZWRXb3JkRVM2LFxuICAgICAgICBpc1Jlc3RyaWN0ZWRXb3JkLFxuICAgICAgICBpc0lkZW50aWZpZXJOYW1lRVM1LFxuICAgICAgICBpc0lkZW50aWZpZXJOYW1lRVM2LFxuICAgICAgICBpc0lkZW50aWZpZXJFUzUsXG4gICAgICAgIGlzSWRlbnRpZmllckVTNlxuICAgICAgfTtcbiAgICB9KSgpO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3V0aWxzNiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZXN1dGlscy9saWIvdXRpbHMuanNcIihleHBvcnRzMikge1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuICAgICAgZXhwb3J0czIuYXN0ID0gcmVxdWlyZV9hc3QoKTtcbiAgICAgIGV4cG9ydHMyLmNvZGUgPSByZXF1aXJlX2NvZGUoKTtcbiAgICAgIGV4cG9ydHMyLmtleXdvcmQgPSByZXF1aXJlX2tleXdvcmQyKCk7XG4gICAgfSkoKTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pc19ibG9ja19jb21tZW50ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy1ibG9jay1jb21tZW50LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgQkxPQ0tfQ09NTUVOVF9UWVBFUyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcIkJsb2NrXCIsIFwiQ29tbWVudEJsb2NrXCIsIFwiTXVsdGlMaW5lXCJdKTtcbiAgICB2YXIgaXNCbG9ja0NvbW1lbnQgPSAoY29tbWVudCkgPT4gQkxPQ0tfQ09NTUVOVF9UWVBFUy5oYXMoY29tbWVudCA9PT0gbnVsbCB8fCBjb21tZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21tZW50LnR5cGUpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGlzQmxvY2tDb21tZW50O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2lzX25vZGVfbWF0Y2hlcyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvaXMtbm9kZS1tYXRjaGVzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBpc05vZGVNYXRjaGVzTmFtZU9yUGF0aChub2RlLCBuYW1lT3JQYXRoKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IG5hbWVPclBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSBuYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1tpbmRleF07XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUubmFtZSA9PT0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS50eXBlICE9PSBcIk1lbWJlckV4cHJlc3Npb25cIiB8fCBub2RlLm9wdGlvbmFsIHx8IG5vZGUuY29tcHV0ZWQgfHwgbm9kZS5wcm9wZXJ0eS50eXBlICE9PSBcIklkZW50aWZpZXJcIiB8fCBub2RlLnByb3BlcnR5Lm5hbWUgIT09IG5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZSA9IG5vZGUub2JqZWN0O1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpc05vZGVNYXRjaGVzKG5vZGUsIG5hbWVPclBhdGhzKSB7XG4gICAgICByZXR1cm4gbmFtZU9yUGF0aHMuc29tZSgobmFtZU9yUGF0aCkgPT4gaXNOb2RlTWF0Y2hlc05hbWVPclBhdGgobm9kZSwgbmFtZU9yUGF0aCkpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBpc05vZGVNYXRjaGVzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3V0aWxzNyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBpc0lkZW50aWZpZXJOYW1lID0gcmVxdWlyZV91dGlsczYoKS5rZXl3b3JkLmlzSWRlbnRpZmllck5hbWVFUzU7XG4gICAgdmFyIHtcbiAgICAgIGdldExhc3QsXG4gICAgICBoYXNOZXdsaW5lLFxuICAgICAgc2tpcFdoaXRlc3BhY2UsXG4gICAgICBpc05vbkVtcHR5QXJyYXksXG4gICAgICBpc05leHRMaW5lRW1wdHlBZnRlckluZGV4LFxuICAgICAgZ2V0U3RyaW5nV2lkdGhcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kLFxuICAgICAgaGFzU2FtZUxvY1N0YXJ0XG4gICAgfSA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIGlzQmxvY2tDb21tZW50ID0gcmVxdWlyZV9pc19ibG9ja19jb21tZW50KCk7XG4gICAgdmFyIGlzTm9kZU1hdGNoZXMgPSByZXF1aXJlX2lzX25vZGVfbWF0Y2hlcygpO1xuICAgIHZhciBOT05fTElORV9URVJNSU5BVElOR19XSElURV9TUEFDRSA9IFwiKD86KD89LilcXFxccylcIjtcbiAgICB2YXIgRkxPV19TSE9SVEhBTkRfQU5OT1RBVElPTiA9IG5ldyBSZWdFeHAoYF4ke05PTl9MSU5FX1RFUk1JTkFUSU5HX1dISVRFX1NQQUNFfSo6YCk7XG4gICAgdmFyIEZMT1dfQU5OT1RBVElPTiA9IG5ldyBSZWdFeHAoYF4ke05PTl9MSU5FX1RFUk1JTkFUSU5HX1dISVRFX1NQQUNFfSo6OmApO1xuICAgIGZ1bmN0aW9uIGhhc0Zsb3dTaG9ydGhhbmRBbm5vdGF0aW9uQ29tbWVudChub2RlKSB7XG4gICAgICB2YXIgX25vZGUkZXh0cmEsIF9ub2RlJHRyYWlsaW5nQ29tbWVudDtcbiAgICAgIHJldHVybiAoKF9ub2RlJGV4dHJhID0gbm9kZS5leHRyYSkgPT09IG51bGwgfHwgX25vZGUkZXh0cmEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGV4dHJhLnBhcmVudGhlc2l6ZWQpICYmIGlzQmxvY2tDb21tZW50KChfbm9kZSR0cmFpbGluZ0NvbW1lbnQgPSBub2RlLnRyYWlsaW5nQ29tbWVudHMpID09PSBudWxsIHx8IF9ub2RlJHRyYWlsaW5nQ29tbWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkdHJhaWxpbmdDb21tZW50WzBdKSAmJiBGTE9XX1NIT1JUSEFORF9BTk5PVEFUSU9OLnRlc3Qobm9kZS50cmFpbGluZ0NvbW1lbnRzWzBdLnZhbHVlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzRmxvd0Fubm90YXRpb25Db21tZW50KGNvbW1lbnRzKSB7XG4gICAgICBjb25zdCBmaXJzdENvbW1lbnQgPSBjb21tZW50cyA9PT0gbnVsbCB8fCBjb21tZW50cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tbWVudHNbMF07XG4gICAgICByZXR1cm4gaXNCbG9ja0NvbW1lbnQoZmlyc3RDb21tZW50KSAmJiBGTE9XX0FOTk9UQVRJT04udGVzdChmaXJzdENvbW1lbnQudmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNOb2RlKG5vZGUsIGZuKSB7XG4gICAgICBpZiAoIW5vZGUgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuc29tZSgodmFsdWUpID0+IGhhc05vZGUodmFsdWUsIGZuKSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBmbihub2RlKTtcbiAgICAgIHJldHVybiB0eXBlb2YgcmVzdWx0ID09PSBcImJvb2xlYW5cIiA/IHJlc3VsdCA6IE9iamVjdC52YWx1ZXMobm9kZSkuc29tZSgodmFsdWUpID0+IGhhc05vZGUodmFsdWUsIGZuKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc05ha2VkTGVmdFNpZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJCaW5hcnlFeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkxvZ2ljYWxFeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIk5HUGlwZUV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIgfHwgaXNDYWxsRXhwcmVzc2lvbihub2RlKSB8fCBpc01lbWJlckV4cHJlc3Npb24obm9kZSkgfHwgbm9kZS50eXBlID09PSBcIlNlcXVlbmNlRXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiQmluZEV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiVXBkYXRlRXhwcmVzc2lvblwiICYmICFub2RlLnByZWZpeCB8fCBub2RlLnR5cGUgPT09IFwiVFNBc0V4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiVFNOb25OdWxsRXhwcmVzc2lvblwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRMZWZ0U2lkZShub2RlKSB7XG4gICAgICB2YXIgX3JlZjIsIF9yZWYzLCBfcmVmNCwgX3JlZjUsIF9yZWY2LCBfbm9kZSRsZWZ0O1xuICAgICAgaWYgKG5vZGUuZXhwcmVzc2lvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuZXhwcmVzc2lvbnNbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4gKF9yZWYyID0gKF9yZWYzID0gKF9yZWY0ID0gKF9yZWY1ID0gKF9yZWY2ID0gKF9ub2RlJGxlZnQgPSBub2RlLmxlZnQpICE9PSBudWxsICYmIF9ub2RlJGxlZnQgIT09IHZvaWQgMCA/IF9ub2RlJGxlZnQgOiBub2RlLnRlc3QpICE9PSBudWxsICYmIF9yZWY2ICE9PSB2b2lkIDAgPyBfcmVmNiA6IG5vZGUuY2FsbGVlKSAhPT0gbnVsbCAmJiBfcmVmNSAhPT0gdm9pZCAwID8gX3JlZjUgOiBub2RlLm9iamVjdCkgIT09IG51bGwgJiYgX3JlZjQgIT09IHZvaWQgMCA/IF9yZWY0IDogbm9kZS50YWcpICE9PSBudWxsICYmIF9yZWYzICE9PSB2b2lkIDAgPyBfcmVmMyA6IG5vZGUuYXJndW1lbnQpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IG5vZGUuZXhwcmVzc2lvbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0TGVmdFNpZGVQYXRoTmFtZShwYXRoLCBub2RlKSB7XG4gICAgICBpZiAobm9kZS5leHByZXNzaW9ucykge1xuICAgICAgICByZXR1cm4gW1wiZXhwcmVzc2lvbnNcIiwgMF07XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5sZWZ0KSB7XG4gICAgICAgIHJldHVybiBbXCJsZWZ0XCJdO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUudGVzdCkge1xuICAgICAgICByZXR1cm4gW1widGVzdFwiXTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLm9iamVjdCkge1xuICAgICAgICByZXR1cm4gW1wib2JqZWN0XCJdO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuY2FsbGVlKSB7XG4gICAgICAgIHJldHVybiBbXCJjYWxsZWVcIl07XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50YWcpIHtcbiAgICAgICAgcmV0dXJuIFtcInRhZ1wiXTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmFyZ3VtZW50KSB7XG4gICAgICAgIHJldHVybiBbXCJhcmd1bWVudFwiXTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmV4cHJlc3Npb24pIHtcbiAgICAgICAgcmV0dXJuIFtcImV4cHJlc3Npb25cIl07XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIG5vZGUgaGFzIG5vIGxlZnQgc2lkZS5cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVR5cGVDaGVja0Z1bmN0aW9uKHR5cGVzKSB7XG4gICAgICB0eXBlcyA9IG5ldyBTZXQodHlwZXMpO1xuICAgICAgcmV0dXJuIChub2RlKSA9PiB0eXBlcy5oYXMobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLnR5cGUpO1xuICAgIH1cbiAgICB2YXIgaXNMaW5lQ29tbWVudCA9IGNyZWF0ZVR5cGVDaGVja0Z1bmN0aW9uKFtcIkxpbmVcIiwgXCJDb21tZW50TGluZVwiLCBcIlNpbmdsZUxpbmVcIiwgXCJIYXNoYmFuZ0NvbW1lbnRcIiwgXCJIVE1MT3BlblwiLCBcIkhUTUxDbG9zZVwiXSk7XG4gICAgdmFyIGlzRXhwb3J0RGVjbGFyYXRpb24gPSBjcmVhdGVUeXBlQ2hlY2tGdW5jdGlvbihbXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiwgXCJFeHBvcnREZWZhdWx0U3BlY2lmaWVyXCIsIFwiRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uXCIsIFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiLCBcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCJdKTtcbiAgICBmdW5jdGlvbiBnZXRQYXJlbnRFeHBvcnREZWNsYXJhdGlvbihwYXRoKSB7XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBpZiAocGF0aC5nZXROYW1lKCkgPT09IFwiZGVjbGFyYXRpb25cIiAmJiBpc0V4cG9ydERlY2xhcmF0aW9uKHBhcmVudE5vZGUpKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBpc0xpdGVyYWwgPSBjcmVhdGVUeXBlQ2hlY2tGdW5jdGlvbihbXCJCb29sZWFuTGl0ZXJhbFwiLCBcIkRpcmVjdGl2ZUxpdGVyYWxcIiwgXCJMaXRlcmFsXCIsIFwiTnVsbExpdGVyYWxcIiwgXCJOdW1lcmljTGl0ZXJhbFwiLCBcIkJpZ0ludExpdGVyYWxcIiwgXCJEZWNpbWFsTGl0ZXJhbFwiLCBcIlJlZ0V4cExpdGVyYWxcIiwgXCJTdHJpbmdMaXRlcmFsXCIsIFwiVGVtcGxhdGVMaXRlcmFsXCIsIFwiVFNUeXBlTGl0ZXJhbFwiLCBcIkpTWFRleHRcIl0pO1xuICAgIGZ1bmN0aW9uIGlzTnVtZXJpY0xpdGVyYWwobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJOdW1lcmljTGl0ZXJhbFwiIHx8IG5vZGUudHlwZSA9PT0gXCJMaXRlcmFsXCIgJiYgdHlwZW9mIG5vZGUudmFsdWUgPT09IFwibnVtYmVyXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU2lnbmVkTnVtZXJpY0xpdGVyYWwobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJVbmFyeUV4cHJlc3Npb25cIiAmJiAobm9kZS5vcGVyYXRvciA9PT0gXCIrXCIgfHwgbm9kZS5vcGVyYXRvciA9PT0gXCItXCIpICYmIGlzTnVtZXJpY0xpdGVyYWwobm9kZS5hcmd1bWVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU3RyaW5nTGl0ZXJhbChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcIlN0cmluZ0xpdGVyYWxcIiB8fCBub2RlLnR5cGUgPT09IFwiTGl0ZXJhbFwiICYmIHR5cGVvZiBub2RlLnZhbHVlID09PSBcInN0cmluZ1wiO1xuICAgIH1cbiAgICB2YXIgaXNPYmplY3RUeXBlID0gY3JlYXRlVHlwZUNoZWNrRnVuY3Rpb24oW1wiT2JqZWN0VHlwZUFubm90YXRpb25cIiwgXCJUU1R5cGVMaXRlcmFsXCIsIFwiVFNNYXBwZWRUeXBlXCJdKTtcbiAgICB2YXIgaXNGdW5jdGlvbk9yQXJyb3dFeHByZXNzaW9uID0gY3JlYXRlVHlwZUNoZWNrRnVuY3Rpb24oW1wiRnVuY3Rpb25FeHByZXNzaW9uXCIsIFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIl0pO1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb25PckFycm93RXhwcmVzc2lvbldpdGhCb2R5KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiRnVuY3Rpb25FeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgJiYgbm9kZS5ib2R5LnR5cGUgPT09IFwiQmxvY2tTdGF0ZW1lbnRcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNBbmd1bGFyVGVzdFdyYXBwZXIobm9kZSkge1xuICAgICAgcmV0dXJuIGlzQ2FsbEV4cHJlc3Npb24obm9kZSkgJiYgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgW1wiYXN5bmNcIiwgXCJpbmplY3RcIiwgXCJmYWtlQXN5bmNcIiwgXCJ3YWl0Rm9yQXN5bmNcIl0uaW5jbHVkZXMobm9kZS5jYWxsZWUubmFtZSk7XG4gICAgfVxuICAgIHZhciBpc0pzeE5vZGUgPSBjcmVhdGVUeXBlQ2hlY2tGdW5jdGlvbihbXCJKU1hFbGVtZW50XCIsIFwiSlNYRnJhZ21lbnRcIl0pO1xuICAgIGZ1bmN0aW9uIGlzVGhlT25seUpzeEVsZW1lbnRJbk1hcmtkb3duKG9wdGlvbnMsIHBhdGgpIHtcbiAgICAgIGlmIChvcHRpb25zLnBhcmVudFBhcnNlciAhPT0gXCJtYXJrZG93blwiICYmIG9wdGlvbnMucGFyZW50UGFyc2VyICE9PSBcIm1keFwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldE5vZGUoKTtcbiAgICAgIGlmICghbm9kZS5leHByZXNzaW9uIHx8ICFpc0pzeE5vZGUobm9kZS5leHByZXNzaW9uKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIHJldHVybiBwYXJlbnQudHlwZSA9PT0gXCJQcm9ncmFtXCIgJiYgcGFyZW50LmJvZHkubGVuZ3RoID09PSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0dldHRlck9yU2V0dGVyKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmtpbmQgPT09IFwiZ2V0XCIgfHwgbm9kZS5raW5kID09PSBcInNldFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uTm90YXRpb24obm9kZSkge1xuICAgICAgcmV0dXJuIGlzR2V0dGVyT3JTZXR0ZXIobm9kZSkgfHwgaGFzU2FtZUxvY1N0YXJ0KG5vZGUsIG5vZGUudmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc09iamVjdFR5cGVQcm9wZXJ0eUFGdW5jdGlvbihub2RlKSB7XG4gICAgICByZXR1cm4gKG5vZGUudHlwZSA9PT0gXCJPYmplY3RUeXBlUHJvcGVydHlcIiB8fCBub2RlLnR5cGUgPT09IFwiT2JqZWN0VHlwZUludGVybmFsU2xvdFwiKSAmJiBub2RlLnZhbHVlLnR5cGUgPT09IFwiRnVuY3Rpb25UeXBlQW5ub3RhdGlvblwiICYmICFub2RlLnN0YXRpYyAmJiAhaXNGdW5jdGlvbk5vdGF0aW9uKG5vZGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1R5cGVBbm5vdGF0aW9uQUZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIHJldHVybiAobm9kZS50eXBlID09PSBcIlR5cGVBbm5vdGF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlRTVHlwZUFubm90YXRpb25cIikgJiYgbm9kZS50eXBlQW5ub3RhdGlvbi50eXBlID09PSBcIkZ1bmN0aW9uVHlwZUFubm90YXRpb25cIiAmJiAhbm9kZS5zdGF0aWMgJiYgIWhhc1NhbWVMb2NTdGFydChub2RlLCBub2RlLnR5cGVBbm5vdGF0aW9uKTtcbiAgICB9XG4gICAgdmFyIGlzQmluYXJ5aXNoID0gY3JlYXRlVHlwZUNoZWNrRnVuY3Rpb24oW1wiQmluYXJ5RXhwcmVzc2lvblwiLCBcIkxvZ2ljYWxFeHByZXNzaW9uXCIsIFwiTkdQaXBlRXhwcmVzc2lvblwiXSk7XG4gICAgZnVuY3Rpb24gaXNNZW1iZXJpc2gobm9kZSkge1xuICAgICAgcmV0dXJuIGlzTWVtYmVyRXhwcmVzc2lvbihub2RlKSB8fCBub2RlLnR5cGUgPT09IFwiQmluZEV4cHJlc3Npb25cIiAmJiBCb29sZWFuKG5vZGUub2JqZWN0KTtcbiAgICB9XG4gICAgdmFyIHNpbXBsZVR5cGVBbm5vdGF0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcIkFueVR5cGVBbm5vdGF0aW9uXCIsIFwiVFNBbnlLZXl3b3JkXCIsIFwiTnVsbExpdGVyYWxUeXBlQW5ub3RhdGlvblwiLCBcIlRTTnVsbEtleXdvcmRcIiwgXCJUaGlzVHlwZUFubm90YXRpb25cIiwgXCJUU1RoaXNUeXBlXCIsIFwiTnVtYmVyVHlwZUFubm90YXRpb25cIiwgXCJUU051bWJlcktleXdvcmRcIiwgXCJWb2lkVHlwZUFubm90YXRpb25cIiwgXCJUU1ZvaWRLZXl3b3JkXCIsIFwiQm9vbGVhblR5cGVBbm5vdGF0aW9uXCIsIFwiVFNCb29sZWFuS2V5d29yZFwiLCBcIkJpZ0ludFR5cGVBbm5vdGF0aW9uXCIsIFwiVFNCaWdJbnRLZXl3b3JkXCIsIFwiU3ltYm9sVHlwZUFubm90YXRpb25cIiwgXCJUU1N5bWJvbEtleXdvcmRcIiwgXCJTdHJpbmdUeXBlQW5ub3RhdGlvblwiLCBcIlRTU3RyaW5nS2V5d29yZFwiLCBcIkJvb2xlYW5MaXRlcmFsVHlwZUFubm90YXRpb25cIiwgXCJTdHJpbmdMaXRlcmFsVHlwZUFubm90YXRpb25cIiwgXCJCaWdJbnRMaXRlcmFsVHlwZUFubm90YXRpb25cIiwgXCJOdW1iZXJMaXRlcmFsVHlwZUFubm90YXRpb25cIiwgXCJUU0xpdGVyYWxUeXBlXCIsIFwiVFNUZW1wbGF0ZUxpdGVyYWxUeXBlXCIsIFwiRW1wdHlUeXBlQW5ub3RhdGlvblwiLCBcIk1peGVkVHlwZUFubm90YXRpb25cIiwgXCJUU05ldmVyS2V5d29yZFwiLCBcIlRTT2JqZWN0S2V5d29yZFwiLCBcIlRTVW5kZWZpbmVkS2V5d29yZFwiLCBcIlRTVW5rbm93bktleXdvcmRcIl0pO1xuICAgIGZ1bmN0aW9uIGlzU2ltcGxlVHlwZShub2RlKSB7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKChub2RlLnR5cGUgPT09IFwiR2VuZXJpY1R5cGVBbm5vdGF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlRTVHlwZVJlZmVyZW5jZVwiKSAmJiAhbm9kZS50eXBlUGFyYW1ldGVycykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzaW1wbGVUeXBlQW5ub3RhdGlvbnMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzVW5pdFRlc3RTZXRVcChub2RlKSB7XG4gICAgICBjb25zdCB1bml0VGVzdFNldFVwUmUgPSAvXig/OmJlZm9yZXxhZnRlcikoPzpFYWNofEFsbCkkLztcbiAgICAgIHJldHVybiBub2RlLmNhbGxlZS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiB1bml0VGVzdFNldFVwUmUudGVzdChub2RlLmNhbGxlZS5uYW1lKSAmJiBub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDE7XG4gICAgfVxuICAgIHZhciB0ZXN0Q2FsbENhbGxlZVBhdHRlcm5zID0gW1wiaXRcIiwgXCJpdC5vbmx5XCIsIFwiaXQuc2tpcFwiLCBcImRlc2NyaWJlXCIsIFwiZGVzY3JpYmUub25seVwiLCBcImRlc2NyaWJlLnNraXBcIiwgXCJ0ZXN0XCIsIFwidGVzdC5vbmx5XCIsIFwidGVzdC5za2lwXCIsIFwidGVzdC5zdGVwXCIsIFwidGVzdC5kZXNjcmliZVwiLCBcInRlc3QuZGVzY3JpYmUub25seVwiLCBcInRlc3QuZGVzY3JpYmUucGFyYWxsZWxcIiwgXCJ0ZXN0LmRlc2NyaWJlLnBhcmFsbGVsLm9ubHlcIiwgXCJ0ZXN0LmRlc2NyaWJlLnNlcmlhbFwiLCBcInRlc3QuZGVzY3JpYmUuc2VyaWFsLm9ubHlcIiwgXCJza2lwXCIsIFwieGl0XCIsIFwieGRlc2NyaWJlXCIsIFwieHRlc3RcIiwgXCJmaXRcIiwgXCJmZGVzY3JpYmVcIiwgXCJmdGVzdFwiXTtcbiAgICBmdW5jdGlvbiBpc1Rlc3RDYWxsQ2FsbGVlKG5vZGUpIHtcbiAgICAgIHJldHVybiBpc05vZGVNYXRjaGVzKG5vZGUsIHRlc3RDYWxsQ2FsbGVlUGF0dGVybnMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1Rlc3RDYWxsKG5vZGUsIHBhcmVudCkge1xuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKGlzQW5ndWxhclRlc3RXcmFwcGVyKG5vZGUpICYmIHBhcmVudCAmJiBpc1Rlc3RDYWxsKHBhcmVudCkpIHtcbiAgICAgICAgICByZXR1cm4gaXNGdW5jdGlvbk9yQXJyb3dFeHByZXNzaW9uKG5vZGUuYXJndW1lbnRzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNVbml0VGVzdFNldFVwKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQW5ndWxhclRlc3RXcmFwcGVyKG5vZGUuYXJndW1lbnRzWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDIgfHwgbm9kZS5hcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGlmICgobm9kZS5hcmd1bWVudHNbMF0udHlwZSA9PT0gXCJUZW1wbGF0ZUxpdGVyYWxcIiB8fCBpc1N0cmluZ0xpdGVyYWwobm9kZS5hcmd1bWVudHNbMF0pKSAmJiBpc1Rlc3RDYWxsQ2FsbGVlKG5vZGUuY2FsbGVlKSkge1xuICAgICAgICAgIGlmIChub2RlLmFyZ3VtZW50c1syXSAmJiAhaXNOdW1lcmljTGl0ZXJhbChub2RlLmFyZ3VtZW50c1syXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIChub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyBpc0Z1bmN0aW9uT3JBcnJvd0V4cHJlc3Npb24obm9kZS5hcmd1bWVudHNbMV0pIDogaXNGdW5jdGlvbk9yQXJyb3dFeHByZXNzaW9uV2l0aEJvZHkobm9kZS5hcmd1bWVudHNbMV0pICYmIGdldEZ1bmN0aW9uUGFyYW1ldGVycyhub2RlLmFyZ3VtZW50c1sxXSkubGVuZ3RoIDw9IDEpIHx8IGlzQW5ndWxhclRlc3RXcmFwcGVyKG5vZGUuYXJndW1lbnRzWzFdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgaXNDYWxsRXhwcmVzc2lvbiA9IGNyZWF0ZVR5cGVDaGVja0Z1bmN0aW9uKFtcIkNhbGxFeHByZXNzaW9uXCIsIFwiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiXSk7XG4gICAgdmFyIGlzTWVtYmVyRXhwcmVzc2lvbiA9IGNyZWF0ZVR5cGVDaGVja0Z1bmN0aW9uKFtcIk1lbWJlckV4cHJlc3Npb25cIiwgXCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cIl0pO1xuICAgIGZ1bmN0aW9uIGlzU2ltcGxlVGVtcGxhdGVMaXRlcmFsKG5vZGUpIHtcbiAgICAgIGxldCBleHByZXNzaW9uc0tleSA9IFwiZXhwcmVzc2lvbnNcIjtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiVFNUZW1wbGF0ZUxpdGVyYWxUeXBlXCIpIHtcbiAgICAgICAgZXhwcmVzc2lvbnNLZXkgPSBcInR5cGVzXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBleHByZXNzaW9ucyA9IG5vZGVbZXhwcmVzc2lvbnNLZXldO1xuICAgICAgaWYgKGV4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXhwcmVzc2lvbnMuZXZlcnkoKGV4cHIpID0+IHtcbiAgICAgICAgaWYgKGhhc0NvbW1lbnQoZXhwcikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cHIudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgfHwgZXhwci50eXBlID09PSBcIlRoaXNFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNNZW1iZXJFeHByZXNzaW9uKGV4cHIpKSB7XG4gICAgICAgICAgbGV0IGhlYWQgPSBleHByO1xuICAgICAgICAgIHdoaWxlIChpc01lbWJlckV4cHJlc3Npb24oaGVhZCkpIHtcbiAgICAgICAgICAgIGlmIChoZWFkLnByb3BlcnR5LnR5cGUgIT09IFwiSWRlbnRpZmllclwiICYmIGhlYWQucHJvcGVydHkudHlwZSAhPT0gXCJMaXRlcmFsXCIgJiYgaGVhZC5wcm9wZXJ0eS50eXBlICE9PSBcIlN0cmluZ0xpdGVyYWxcIiAmJiBoZWFkLnByb3BlcnR5LnR5cGUgIT09IFwiTnVtZXJpY0xpdGVyYWxcIikge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWFkID0gaGVhZC5vYmplY3Q7XG4gICAgICAgICAgICBpZiAoaGFzQ29tbWVudChoZWFkKSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoZWFkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiIHx8IGhlYWQudHlwZSA9PT0gXCJUaGlzRXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRUeXBlU2NyaXB0TWFwcGVkVHlwZU1vZGlmaWVyKHRva2VuTm9kZSwga2V5d29yZCkge1xuICAgICAgaWYgKHRva2VuTm9kZSA9PT0gXCIrXCIgfHwgdG9rZW5Ob2RlID09PSBcIi1cIikge1xuICAgICAgICByZXR1cm4gdG9rZW5Ob2RlICsga2V5d29yZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBrZXl3b3JkO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0Zsb3dBbm5vdGF0aW9uQ29tbWVudCh0ZXh0LCB0eXBlQW5ub3RhdGlvbikge1xuICAgICAgY29uc3Qgc3RhcnQgPSBsb2NTdGFydCh0eXBlQW5ub3RhdGlvbik7XG4gICAgICBjb25zdCBlbmQgPSBza2lwV2hpdGVzcGFjZSh0ZXh0LCBsb2NFbmQodHlwZUFubm90YXRpb24pKTtcbiAgICAgIHJldHVybiBlbmQgIT09IGZhbHNlICYmIHRleHQuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgMikgPT09IFwiLypcIiAmJiB0ZXh0LnNsaWNlKGVuZCwgZW5kICsgMikgPT09IFwiKi9cIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzTGVhZGluZ093bkxpbmVDb21tZW50KHRleHQsIG5vZGUpIHtcbiAgICAgIGlmIChpc0pzeE5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGhhc05vZGVJZ25vcmVDb21tZW50KG5vZGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0NvbW1lbnQobm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuTGVhZGluZywgKGNvbW1lbnQpID0+IGhhc05ld2xpbmUodGV4dCwgbG9jRW5kKGNvbW1lbnQpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU3RyaW5nUHJvcFNhZmVUb1VucXVvdGUobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucGFyc2VyICE9PSBcImpzb25cIiAmJiBpc1N0cmluZ0xpdGVyYWwobm9kZS5rZXkpICYmIHJhd1RleHQobm9kZS5rZXkpLnNsaWNlKDEsIC0xKSA9PT0gbm9kZS5rZXkudmFsdWUgJiYgKGlzSWRlbnRpZmllck5hbWUobm9kZS5rZXkudmFsdWUpICYmICEob3B0aW9ucy5wYXJzZXIgPT09IFwiYmFiZWwtdHNcIiAmJiBub2RlLnR5cGUgPT09IFwiQ2xhc3NQcm9wZXJ0eVwiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcInR5cGVzY3JpcHRcIiAmJiBub2RlLnR5cGUgPT09IFwiUHJvcGVydHlEZWZpbml0aW9uXCIpIHx8IGlzU2ltcGxlTnVtYmVyKG5vZGUua2V5LnZhbHVlKSAmJiBTdHJpbmcoTnVtYmVyKG5vZGUua2V5LnZhbHVlKSkgPT09IG5vZGUua2V5LnZhbHVlICYmIChvcHRpb25zLnBhcnNlciA9PT0gXCJiYWJlbFwiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcImFjb3JuXCIgfHwgb3B0aW9ucy5wYXJzZXIgPT09IFwiZXNwcmVlXCIgfHwgb3B0aW9ucy5wYXJzZXIgPT09IFwibWVyaXlhaFwiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcIl9fYmFiZWxfZXN0cmVlXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTaW1wbGVOdW1iZXIobnVtYmVyU3RyaW5nKSB7XG4gICAgICByZXR1cm4gL14oPzpcXGQrfFxcZCtcXC5cXGQrKSQvLnRlc3QobnVtYmVyU3RyaW5nKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNKZXN0RWFjaFRlbXBsYXRlTGl0ZXJhbChub2RlLCBwYXJlbnROb2RlKSB7XG4gICAgICBjb25zdCBqZXN0RWFjaFRyaWdnZXJSZWdleCA9IC9eW2Z4XT8oPzpkZXNjcmliZXxpdHx0ZXN0KSQvO1xuICAgICAgcmV0dXJuIHBhcmVudE5vZGUudHlwZSA9PT0gXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIiAmJiBwYXJlbnROb2RlLnF1YXNpID09PSBub2RlICYmIHBhcmVudE5vZGUudGFnLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmIHBhcmVudE5vZGUudGFnLnByb3BlcnR5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIHBhcmVudE5vZGUudGFnLnByb3BlcnR5Lm5hbWUgPT09IFwiZWFjaFwiICYmIChwYXJlbnROb2RlLnRhZy5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgamVzdEVhY2hUcmlnZ2VyUmVnZXgudGVzdChwYXJlbnROb2RlLnRhZy5vYmplY3QubmFtZSkgfHwgcGFyZW50Tm9kZS50YWcub2JqZWN0LnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmIHBhcmVudE5vZGUudGFnLm9iamVjdC5wcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiAocGFyZW50Tm9kZS50YWcub2JqZWN0LnByb3BlcnR5Lm5hbWUgPT09IFwib25seVwiIHx8IHBhcmVudE5vZGUudGFnLm9iamVjdC5wcm9wZXJ0eS5uYW1lID09PSBcInNraXBcIikgJiYgcGFyZW50Tm9kZS50YWcub2JqZWN0Lm9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiBqZXN0RWFjaFRyaWdnZXJSZWdleC50ZXN0KHBhcmVudE5vZGUudGFnLm9iamVjdC5vYmplY3QubmFtZSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0ZW1wbGF0ZUxpdGVyYWxIYXNOZXdMaW5lcyh0ZW1wbGF0ZSkge1xuICAgICAgcmV0dXJuIHRlbXBsYXRlLnF1YXNpcy5zb21lKChxdWFzaSkgPT4gcXVhc2kudmFsdWUucmF3LmluY2x1ZGVzKFwiXFxuXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNUZW1wbGF0ZU9uSXRzT3duTGluZShub2RlLCB0ZXh0KSB7XG4gICAgICByZXR1cm4gKG5vZGUudHlwZSA9PT0gXCJUZW1wbGF0ZUxpdGVyYWxcIiAmJiB0ZW1wbGF0ZUxpdGVyYWxIYXNOZXdMaW5lcyhub2RlKSB8fCBub2RlLnR5cGUgPT09IFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCIgJiYgdGVtcGxhdGVMaXRlcmFsSGFzTmV3TGluZXMobm9kZS5xdWFzaSkpICYmICFoYXNOZXdsaW5lKHRleHQsIGxvY1N0YXJ0KG5vZGUpLCB7XG4gICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5lZWRzSGFyZGxpbmVBZnRlckRhbmdsaW5nQ29tbWVudChub2RlKSB7XG4gICAgICBpZiAoIWhhc0NvbW1lbnQobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFzdERhbmdsaW5nQ29tbWVudCA9IGdldExhc3QoZ2V0Q29tbWVudHMobm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuRGFuZ2xpbmcpKTtcbiAgICAgIHJldHVybiBsYXN0RGFuZ2xpbmdDb21tZW50ICYmICFpc0Jsb2NrQ29tbWVudChsYXN0RGFuZ2xpbmdDb21tZW50KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbkNvbXBvc2l0aW9uQXJncyhhcmdzKSB7XG4gICAgICBpZiAoYXJncy5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgZm9yIChjb25zdCBhcmcgb2YgYXJncykge1xuICAgICAgICBpZiAoaXNGdW5jdGlvbk9yQXJyb3dFeHByZXNzaW9uKGFyZykpIHtcbiAgICAgICAgICBjb3VudCArPSAxO1xuICAgICAgICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc0NhbGxFeHByZXNzaW9uKGFyZykpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkQXJnIG9mIGFyZy5hcmd1bWVudHMpIHtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uT3JBcnJvd0V4cHJlc3Npb24oY2hpbGRBcmcpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0xvbmdDdXJyaWVkQ2FsbEV4cHJlc3Npb24ocGF0aCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgcmV0dXJuIGlzQ2FsbEV4cHJlc3Npb24obm9kZSkgJiYgaXNDYWxsRXhwcmVzc2lvbihwYXJlbnQpICYmIHBhcmVudC5jYWxsZWUgPT09IG5vZGUgJiYgbm9kZS5hcmd1bWVudHMubGVuZ3RoID4gcGFyZW50LmFyZ3VtZW50cy5sZW5ndGggJiYgcGFyZW50LmFyZ3VtZW50cy5sZW5ndGggPiAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1NpbXBsZUNhbGxBcmd1bWVudChub2RlLCBkZXB0aCkge1xuICAgICAgaWYgKGRlcHRoID49IDIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNDaGlsZFNpbXBsZSA9IChjaGlsZCkgPT4gaXNTaW1wbGVDYWxsQXJndW1lbnQoY2hpbGQsIGRlcHRoICsgMSk7XG4gICAgICBjb25zdCByZWdleHBQYXR0ZXJuID0gbm9kZS50eXBlID09PSBcIkxpdGVyYWxcIiAmJiBcInJlZ2V4XCIgaW4gbm9kZSAmJiBub2RlLnJlZ2V4LnBhdHRlcm4gfHwgbm9kZS50eXBlID09PSBcIlJlZ0V4cExpdGVyYWxcIiAmJiBub2RlLnBhdHRlcm47XG4gICAgICBpZiAocmVnZXhwUGF0dGVybiAmJiBnZXRTdHJpbmdXaWR0aChyZWdleHBQYXR0ZXJuKSA+IDUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJMaXRlcmFsXCIgfHwgbm9kZS50eXBlID09PSBcIkJpZ0ludExpdGVyYWxcIiB8fCBub2RlLnR5cGUgPT09IFwiRGVjaW1hbExpdGVyYWxcIiB8fCBub2RlLnR5cGUgPT09IFwiQm9vbGVhbkxpdGVyYWxcIiB8fCBub2RlLnR5cGUgPT09IFwiTnVsbExpdGVyYWxcIiB8fCBub2RlLnR5cGUgPT09IFwiTnVtZXJpY0xpdGVyYWxcIiB8fCBub2RlLnR5cGUgPT09IFwiUmVnRXhwTGl0ZXJhbFwiIHx8IG5vZGUudHlwZSA9PT0gXCJTdHJpbmdMaXRlcmFsXCIgfHwgbm9kZS50eXBlID09PSBcIklkZW50aWZpZXJcIiB8fCBub2RlLnR5cGUgPT09IFwiVGhpc0V4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiU3VwZXJcIiB8fCBub2RlLnR5cGUgPT09IFwiUHJpdmF0ZU5hbWVcIiB8fCBub2RlLnR5cGUgPT09IFwiUHJpdmF0ZUlkZW50aWZpZXJcIiB8fCBub2RlLnR5cGUgPT09IFwiQXJndW1lbnRQbGFjZWhvbGRlclwiIHx8IG5vZGUudHlwZSA9PT0gXCJJbXBvcnRcIikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiVGVtcGxhdGVMaXRlcmFsXCIpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucXVhc2lzLmV2ZXJ5KChlbGVtZW50KSA9PiAhZWxlbWVudC52YWx1ZS5yYXcuaW5jbHVkZXMoXCJcXG5cIikpICYmIG5vZGUuZXhwcmVzc2lvbnMuZXZlcnkoaXNDaGlsZFNpbXBsZSk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIk9iamVjdEV4cHJlc3Npb25cIikge1xuICAgICAgICByZXR1cm4gbm9kZS5wcm9wZXJ0aWVzLmV2ZXJ5KChwKSA9PiAhcC5jb21wdXRlZCAmJiAocC5zaG9ydGhhbmQgfHwgcC52YWx1ZSAmJiBpc0NoaWxkU2ltcGxlKHAudmFsdWUpKSk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIkFycmF5RXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiBub2RlLmVsZW1lbnRzLmV2ZXJ5KCh4KSA9PiB4ID09PSBudWxsIHx8IGlzQ2hpbGRTaW1wbGUoeCkpO1xuICAgICAgfVxuICAgICAgaWYgKGlzQ2FsbExpa2VFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiAobm9kZS50eXBlID09PSBcIkltcG9ydEV4cHJlc3Npb25cIiB8fCBpc1NpbXBsZUNhbGxBcmd1bWVudChub2RlLmNhbGxlZSwgZGVwdGgpKSAmJiBnZXRDYWxsQXJndW1lbnRzKG5vZGUpLmV2ZXJ5KGlzQ2hpbGRTaW1wbGUpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTWVtYmVyRXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgICByZXR1cm4gaXNTaW1wbGVDYWxsQXJndW1lbnQobm9kZS5vYmplY3QsIGRlcHRoKSAmJiBpc1NpbXBsZUNhbGxBcmd1bWVudChub2RlLnByb3BlcnR5LCBkZXB0aCk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIlVuYXJ5RXhwcmVzc2lvblwiICYmIChub2RlLm9wZXJhdG9yID09PSBcIiFcIiB8fCBub2RlLm9wZXJhdG9yID09PSBcIi1cIikpIHtcbiAgICAgICAgcmV0dXJuIGlzU2ltcGxlQ2FsbEFyZ3VtZW50KG5vZGUuYXJndW1lbnQsIGRlcHRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiVFNOb25OdWxsRXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiBpc1NpbXBsZUNhbGxBcmd1bWVudChub2RlLmV4cHJlc3Npb24sIGRlcHRoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmF3VGV4dChub2RlKSB7XG4gICAgICB2YXIgX25vZGUkZXh0cmEkcmF3LCBfbm9kZSRleHRyYTI7XG4gICAgICByZXR1cm4gKF9ub2RlJGV4dHJhJHJhdyA9IChfbm9kZSRleHRyYTIgPSBub2RlLmV4dHJhKSA9PT0gbnVsbCB8fCBfbm9kZSRleHRyYTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGV4dHJhMi5yYXcpICE9PSBudWxsICYmIF9ub2RlJGV4dHJhJHJhdyAhPT0gdm9pZCAwID8gX25vZGUkZXh0cmEkcmF3IDogbm9kZS5yYXc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlkZW50aXR5KHgpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1RTWEZpbGUob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZmlsZXBhdGggJiYgL1xcLnRzeCQvaS50ZXN0KG9wdGlvbnMuZmlsZXBhdGgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGRQcmludENvbW1hKG9wdGlvbnMsIGxldmVsID0gXCJlczVcIikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMudHJhaWxpbmdDb21tYSA9PT0gXCJlczVcIiAmJiBsZXZlbCA9PT0gXCJlczVcIiB8fCBvcHRpb25zLnRyYWlsaW5nQ29tbWEgPT09IFwiYWxsXCIgJiYgKGxldmVsID09PSBcImFsbFwiIHx8IGxldmVsID09PSBcImVzNVwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aE5vTG9va2FoZWFkVG9rZW4obm9kZSwgZm9yYmlkRnVuY3Rpb25DbGFzc0FuZERvRXhwcikge1xuICAgICAgbm9kZSA9IGdldExlZnRNb3N0KG5vZGUpO1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiOlxuICAgICAgICBjYXNlIFwiQ2xhc3NFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJEb0V4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gZm9yYmlkRnVuY3Rpb25DbGFzc0FuZERvRXhwcjtcbiAgICAgICAgY2FzZSBcIk9iamVjdEV4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY2FzZSBcIk1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBzdGFydHNXaXRoTm9Mb29rYWhlYWRUb2tlbihub2RlLm9iamVjdCwgZm9yYmlkRnVuY3Rpb25DbGFzc0FuZERvRXhwcik7XG4gICAgICAgIGNhc2UgXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIjpcbiAgICAgICAgICBpZiAobm9kZS50YWcudHlwZSA9PT0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc3RhcnRzV2l0aE5vTG9va2FoZWFkVG9rZW4obm9kZS50YWcsIGZvcmJpZEZ1bmN0aW9uQ2xhc3NBbmREb0V4cHIpO1xuICAgICAgICBjYXNlIFwiQ2FsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICBpZiAobm9kZS5jYWxsZWUudHlwZSA9PT0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc3RhcnRzV2l0aE5vTG9va2FoZWFkVG9rZW4obm9kZS5jYWxsZWUsIGZvcmJpZEZ1bmN0aW9uQ2xhc3NBbmREb0V4cHIpO1xuICAgICAgICBjYXNlIFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuKG5vZGUudGVzdCwgZm9yYmlkRnVuY3Rpb25DbGFzc0FuZERvRXhwcik7XG4gICAgICAgIGNhc2UgXCJVcGRhdGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuICFub2RlLnByZWZpeCAmJiBzdGFydHNXaXRoTm9Mb29rYWhlYWRUb2tlbihub2RlLmFyZ3VtZW50LCBmb3JiaWRGdW5jdGlvbkNsYXNzQW5kRG9FeHByKTtcbiAgICAgICAgY2FzZSBcIkJpbmRFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIG5vZGUub2JqZWN0ICYmIHN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuKG5vZGUub2JqZWN0LCBmb3JiaWRGdW5jdGlvbkNsYXNzQW5kRG9FeHByKTtcbiAgICAgICAgY2FzZSBcIlNlcXVlbmNlRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBzdGFydHNXaXRoTm9Mb29rYWhlYWRUb2tlbihub2RlLmV4cHJlc3Npb25zWzBdLCBmb3JiaWRGdW5jdGlvbkNsYXNzQW5kRG9FeHByKTtcbiAgICAgICAgY2FzZSBcIlRTQXNFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJUU05vbk51bGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuKG5vZGUuZXhwcmVzc2lvbiwgZm9yYmlkRnVuY3Rpb25DbGFzc0FuZERvRXhwcik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgZXF1YWxpdHlPcGVyYXRvcnMgPSB7XG4gICAgICBcIj09XCI6IHRydWUsXG4gICAgICBcIiE9XCI6IHRydWUsXG4gICAgICBcIj09PVwiOiB0cnVlLFxuICAgICAgXCIhPT1cIjogdHJ1ZVxuICAgIH07XG4gICAgdmFyIG11bHRpcGxpY2F0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgXCIqXCI6IHRydWUsXG4gICAgICBcIi9cIjogdHJ1ZSxcbiAgICAgIFwiJVwiOiB0cnVlXG4gICAgfTtcbiAgICB2YXIgYml0c2hpZnRPcGVyYXRvcnMgPSB7XG4gICAgICBcIj4+XCI6IHRydWUsXG4gICAgICBcIj4+PlwiOiB0cnVlLFxuICAgICAgXCI8PFwiOiB0cnVlXG4gICAgfTtcbiAgICBmdW5jdGlvbiBzaG91bGRGbGF0dGVuKHBhcmVudE9wLCBub2RlT3ApIHtcbiAgICAgIGlmIChnZXRQcmVjZWRlbmNlKG5vZGVPcCkgIT09IGdldFByZWNlZGVuY2UocGFyZW50T3ApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnRPcCA9PT0gXCIqKlwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChlcXVhbGl0eU9wZXJhdG9yc1twYXJlbnRPcF0gJiYgZXF1YWxpdHlPcGVyYXRvcnNbbm9kZU9wXSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAobm9kZU9wID09PSBcIiVcIiAmJiBtdWx0aXBsaWNhdGl2ZU9wZXJhdG9yc1twYXJlbnRPcF0gfHwgcGFyZW50T3AgPT09IFwiJVwiICYmIG11bHRpcGxpY2F0aXZlT3BlcmF0b3JzW25vZGVPcF0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGVPcCAhPT0gcGFyZW50T3AgJiYgbXVsdGlwbGljYXRpdmVPcGVyYXRvcnNbbm9kZU9wXSAmJiBtdWx0aXBsaWNhdGl2ZU9wZXJhdG9yc1twYXJlbnRPcF0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGJpdHNoaWZ0T3BlcmF0b3JzW3BhcmVudE9wXSAmJiBiaXRzaGlmdE9wZXJhdG9yc1tub2RlT3BdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2YXIgUFJFQ0VERU5DRSA9IG5ldyBNYXAoW1tcInw+XCJdLCBbXCI/P1wiXSwgW1wifHxcIl0sIFtcIiYmXCJdLCBbXCJ8XCJdLCBbXCJeXCJdLCBbXCImXCJdLCBbXCI9PVwiLCBcIj09PVwiLCBcIiE9XCIsIFwiIT09XCJdLCBbXCI8XCIsIFwiPlwiLCBcIjw9XCIsIFwiPj1cIiwgXCJpblwiLCBcImluc3RhbmNlb2ZcIl0sIFtcIj4+XCIsIFwiPDxcIiwgXCI+Pj5cIl0sIFtcIitcIiwgXCItXCJdLCBbXCIqXCIsIFwiL1wiLCBcIiVcIl0sIFtcIioqXCJdXS5mbGF0TWFwKChvcGVyYXRvcnMsIGluZGV4KSA9PiBvcGVyYXRvcnMubWFwKChvcGVyYXRvcikgPT4gW29wZXJhdG9yLCBpbmRleF0pKSk7XG4gICAgZnVuY3Rpb24gZ2V0UHJlY2VkZW5jZShvcGVyYXRvcikge1xuICAgICAgcmV0dXJuIFBSRUNFREVOQ0UuZ2V0KG9wZXJhdG9yKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0TGVmdE1vc3Qobm9kZSkge1xuICAgICAgd2hpbGUgKG5vZGUubGVmdCkge1xuICAgICAgICBub2RlID0gbm9kZS5sZWZ0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzQml0d2lzZU9wZXJhdG9yKG9wZXJhdG9yKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihiaXRzaGlmdE9wZXJhdG9yc1tvcGVyYXRvcl0pIHx8IG9wZXJhdG9yID09PSBcInxcIiB8fCBvcGVyYXRvciA9PT0gXCJeXCIgfHwgb3BlcmF0b3IgPT09IFwiJlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNSZXN0UGFyYW1ldGVyKG5vZGUpIHtcbiAgICAgIHZhciBfZ2V0TGFzdDtcbiAgICAgIGlmIChub2RlLnJlc3QpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKG5vZGUpO1xuICAgICAgcmV0dXJuICgoX2dldExhc3QgPSBnZXRMYXN0KHBhcmFtZXRlcnMpKSA9PT0gbnVsbCB8fCBfZ2V0TGFzdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2dldExhc3QudHlwZSkgPT09IFwiUmVzdEVsZW1lbnRcIjtcbiAgICB9XG4gICAgdmFyIGZ1bmN0aW9uUGFyYW1ldGVyc0NhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gICAgZnVuY3Rpb24gZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKG5vZGUpIHtcbiAgICAgIGlmIChmdW5jdGlvblBhcmFtZXRlcnNDYWNoZS5oYXMobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uUGFyYW1ldGVyc0NhY2hlLmdldChub2RlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBbXTtcbiAgICAgIGlmIChub2RlLnRoaXMpIHtcbiAgICAgICAgcGFyYW1ldGVycy5wdXNoKG5vZGUudGhpcyk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlLnBhcmFtZXRlcnMpKSB7XG4gICAgICAgIHBhcmFtZXRlcnMucHVzaCguLi5ub2RlLnBhcmFtZXRlcnMpO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5vZGUucGFyYW1zKSkge1xuICAgICAgICBwYXJhbWV0ZXJzLnB1c2goLi4ubm9kZS5wYXJhbXMpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUucmVzdCkge1xuICAgICAgICBwYXJhbWV0ZXJzLnB1c2gobm9kZS5yZXN0KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uUGFyYW1ldGVyc0NhY2hlLnNldChub2RlLCBwYXJhbWV0ZXJzKTtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpdGVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzUGF0aChwYXRoLCBpdGVyYXRlZSkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IChjaGlsZFBhdGgpID0+IGl0ZXJhdGVlKGNoaWxkUGF0aCwgaW5kZXgrKyk7XG4gICAgICBpZiAobm9kZS50aGlzKSB7XG4gICAgICAgIHBhdGguY2FsbChjYWxsYmFjaywgXCJ0aGlzXCIpO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS5wYXJhbWV0ZXJzKSkge1xuICAgICAgICBwYXRoLmVhY2goY2FsbGJhY2ssIFwicGFyYW1ldGVyc1wiKTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShub2RlLnBhcmFtcykpIHtcbiAgICAgICAgcGF0aC5lYWNoKGNhbGxiYWNrLCBcInBhcmFtc1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnJlc3QpIHtcbiAgICAgICAgcGF0aC5jYWxsKGNhbGxiYWNrLCBcInJlc3RcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjYWxsQXJndW1lbnRzQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbiAgICBmdW5jdGlvbiBnZXRDYWxsQXJndW1lbnRzKG5vZGUpIHtcbiAgICAgIGlmIChjYWxsQXJndW1lbnRzQ2FjaGUuaGFzKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBjYWxsQXJndW1lbnRzQ2FjaGUuZ2V0KG5vZGUpO1xuICAgICAgfVxuICAgICAgbGV0IGFyZ3MgPSBub2RlLmFyZ3VtZW50cztcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiSW1wb3J0RXhwcmVzc2lvblwiKSB7XG4gICAgICAgIGFyZ3MgPSBbbm9kZS5zb3VyY2VdO1xuICAgICAgICBpZiAobm9kZS5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgYXJncy5wdXNoKG5vZGUuYXR0cmlidXRlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhbGxBcmd1bWVudHNDYWNoZS5zZXQobm9kZSwgYXJncyk7XG4gICAgICByZXR1cm4gYXJncztcbiAgICB9XG4gICAgZnVuY3Rpb24gaXRlcmF0ZUNhbGxBcmd1bWVudHNQYXRoKHBhdGgsIGl0ZXJhdGVlKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJJbXBvcnRFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgcGF0aC5jYWxsKChzb3VyY2VQYXRoKSA9PiBpdGVyYXRlZShzb3VyY2VQYXRoLCAwKSwgXCJzb3VyY2VcIik7XG4gICAgICAgIGlmIChub2RlLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBwYXRoLmNhbGwoKHNvdXJjZVBhdGgpID0+IGl0ZXJhdGVlKHNvdXJjZVBhdGgsIDEpLCBcImF0dHJpYnV0ZXNcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdGguZWFjaChpdGVyYXRlZSwgXCJhcmd1bWVudHNcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzUHJldHRpZXJJZ25vcmVDb21tZW50KGNvbW1lbnQpIHtcbiAgICAgIHJldHVybiBjb21tZW50LnZhbHVlLnRyaW0oKSA9PT0gXCJwcmV0dGllci1pZ25vcmVcIiAmJiAhY29tbWVudC51bmlnbm9yZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzTm9kZUlnbm9yZUNvbW1lbnQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUgJiYgKG5vZGUucHJldHRpZXJJZ25vcmUgfHwgaGFzQ29tbWVudChub2RlLCBDb21tZW50Q2hlY2tGbGFncy5QcmV0dGllcklnbm9yZSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNJZ25vcmVDb21tZW50KHBhdGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICByZXR1cm4gaGFzTm9kZUlnbm9yZUNvbW1lbnQobm9kZSk7XG4gICAgfVxuICAgIHZhciBDb21tZW50Q2hlY2tGbGFncyA9IHtcbiAgICAgIExlYWRpbmc6IDEgPDwgMSxcbiAgICAgIFRyYWlsaW5nOiAxIDw8IDIsXG4gICAgICBEYW5nbGluZzogMSA8PCAzLFxuICAgICAgQmxvY2s6IDEgPDwgNCxcbiAgICAgIExpbmU6IDEgPDwgNSxcbiAgICAgIFByZXR0aWVySWdub3JlOiAxIDw8IDYsXG4gICAgICBGaXJzdDogMSA8PCA3LFxuICAgICAgTGFzdDogMSA8PCA4XG4gICAgfTtcbiAgICB2YXIgZ2V0Q29tbWVudFRlc3RGdW5jdGlvbiA9IChmbGFncywgZm4pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgZmxhZ3MgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBmbiA9IGZsYWdzO1xuICAgICAgICBmbGFncyA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoZmxhZ3MgfHwgZm4pIHtcbiAgICAgICAgcmV0dXJuIChjb21tZW50LCBpbmRleCwgY29tbWVudHMpID0+ICEoZmxhZ3MgJiBDb21tZW50Q2hlY2tGbGFncy5MZWFkaW5nICYmICFjb21tZW50LmxlYWRpbmcgfHwgZmxhZ3MgJiBDb21tZW50Q2hlY2tGbGFncy5UcmFpbGluZyAmJiAhY29tbWVudC50cmFpbGluZyB8fCBmbGFncyAmIENvbW1lbnRDaGVja0ZsYWdzLkRhbmdsaW5nICYmIChjb21tZW50LmxlYWRpbmcgfHwgY29tbWVudC50cmFpbGluZykgfHwgZmxhZ3MgJiBDb21tZW50Q2hlY2tGbGFncy5CbG9jayAmJiAhaXNCbG9ja0NvbW1lbnQoY29tbWVudCkgfHwgZmxhZ3MgJiBDb21tZW50Q2hlY2tGbGFncy5MaW5lICYmICFpc0xpbmVDb21tZW50KGNvbW1lbnQpIHx8IGZsYWdzICYgQ29tbWVudENoZWNrRmxhZ3MuRmlyc3QgJiYgaW5kZXggIT09IDAgfHwgZmxhZ3MgJiBDb21tZW50Q2hlY2tGbGFncy5MYXN0ICYmIGluZGV4ICE9PSBjb21tZW50cy5sZW5ndGggLSAxIHx8IGZsYWdzICYgQ29tbWVudENoZWNrRmxhZ3MuUHJldHRpZXJJZ25vcmUgJiYgIWlzUHJldHRpZXJJZ25vcmVDb21tZW50KGNvbW1lbnQpIHx8IGZuICYmICFmbihjb21tZW50KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBoYXNDb21tZW50KG5vZGUsIGZsYWdzLCBmbikge1xuICAgICAgaWYgKCFpc05vbkVtcHR5QXJyYXkobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLmNvbW1lbnRzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCB0ZXN0ID0gZ2V0Q29tbWVudFRlc3RGdW5jdGlvbihmbGFncywgZm4pO1xuICAgICAgcmV0dXJuIHRlc3QgPyBub2RlLmNvbW1lbnRzLnNvbWUodGVzdCkgOiB0cnVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDb21tZW50cyhub2RlLCBmbGFncywgZm4pIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUuY29tbWVudHMpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRlc3QgPSBnZXRDb21tZW50VGVzdEZ1bmN0aW9uKGZsYWdzLCBmbik7XG4gICAgICByZXR1cm4gdGVzdCA/IG5vZGUuY29tbWVudHMuZmlsdGVyKHRlc3QpIDogbm9kZS5jb21tZW50cztcbiAgICB9XG4gICAgdmFyIGlzTmV4dExpbmVFbXB0eSA9IChub2RlLCB7XG4gICAgICBvcmlnaW5hbFRleHRcbiAgICB9KSA9PiBpc05leHRMaW5lRW1wdHlBZnRlckluZGV4KG9yaWdpbmFsVGV4dCwgbG9jRW5kKG5vZGUpKTtcbiAgICBmdW5jdGlvbiBpc0NhbGxMaWtlRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICByZXR1cm4gaXNDYWxsRXhwcmVzc2lvbihub2RlKSB8fCBub2RlLnR5cGUgPT09IFwiTmV3RXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJJbXBvcnRFeHByZXNzaW9uXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0UHJvcGVydHkobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUgJiYgKG5vZGUudHlwZSA9PT0gXCJPYmplY3RQcm9wZXJ0eVwiIHx8IG5vZGUudHlwZSA9PT0gXCJQcm9wZXJ0eVwiICYmICFub2RlLm1ldGhvZCAmJiBub2RlLmtpbmQgPT09IFwiaW5pdFwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNFbmFibGVkSGFja1BpcGVsaW5lKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBCb29sZWFuKG9wdGlvbnMuX19pc1VzaW5nSGFja1BpcGVsaW5lKTtcbiAgICB9XG4gICAgdmFyIG1hcmtlckZvcklmV2l0aG91dEJsb2NrQW5kU2FtZUxpbmVDb21tZW50ID0gU3ltYm9sKFwiaWZXaXRob3V0QmxvY2tBbmRTYW1lTGluZUNvbW1lbnRcIik7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzLFxuICAgICAgaXRlcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc1BhdGgsXG4gICAgICBnZXRDYWxsQXJndW1lbnRzLFxuICAgICAgaXRlcmF0ZUNhbGxBcmd1bWVudHNQYXRoLFxuICAgICAgaGFzUmVzdFBhcmFtZXRlcixcbiAgICAgIGdldExlZnRTaWRlLFxuICAgICAgZ2V0TGVmdFNpZGVQYXRoTmFtZSxcbiAgICAgIGdldFBhcmVudEV4cG9ydERlY2xhcmF0aW9uLFxuICAgICAgZ2V0VHlwZVNjcmlwdE1hcHBlZFR5cGVNb2RpZmllcixcbiAgICAgIGhhc0Zsb3dBbm5vdGF0aW9uQ29tbWVudCxcbiAgICAgIGhhc0Zsb3dTaG9ydGhhbmRBbm5vdGF0aW9uQ29tbWVudCxcbiAgICAgIGhhc0xlYWRpbmdPd25MaW5lQ29tbWVudCxcbiAgICAgIGhhc05ha2VkTGVmdFNpZGUsXG4gICAgICBoYXNOb2RlLFxuICAgICAgaGFzSWdub3JlQ29tbWVudCxcbiAgICAgIGhhc05vZGVJZ25vcmVDb21tZW50LFxuICAgICAgaWRlbnRpdHksXG4gICAgICBpc0JpbmFyeWlzaCxcbiAgICAgIGlzQ2FsbExpa2VFeHByZXNzaW9uLFxuICAgICAgaXNFbmFibGVkSGFja1BpcGVsaW5lLFxuICAgICAgaXNMaW5lQ29tbWVudCxcbiAgICAgIGlzUHJldHRpZXJJZ25vcmVDb21tZW50LFxuICAgICAgaXNDYWxsRXhwcmVzc2lvbixcbiAgICAgIGlzTWVtYmVyRXhwcmVzc2lvbixcbiAgICAgIGlzRXhwb3J0RGVjbGFyYXRpb24sXG4gICAgICBpc0Zsb3dBbm5vdGF0aW9uQ29tbWVudCxcbiAgICAgIGlzRnVuY3Rpb25Db21wb3NpdGlvbkFyZ3MsXG4gICAgICBpc0Z1bmN0aW9uTm90YXRpb24sXG4gICAgICBpc0Z1bmN0aW9uT3JBcnJvd0V4cHJlc3Npb24sXG4gICAgICBpc0dldHRlck9yU2V0dGVyLFxuICAgICAgaXNKZXN0RWFjaFRlbXBsYXRlTGl0ZXJhbCxcbiAgICAgIGlzSnN4Tm9kZSxcbiAgICAgIGlzTGl0ZXJhbCxcbiAgICAgIGlzTG9uZ0N1cnJpZWRDYWxsRXhwcmVzc2lvbixcbiAgICAgIGlzU2ltcGxlQ2FsbEFyZ3VtZW50LFxuICAgICAgaXNNZW1iZXJpc2gsXG4gICAgICBpc051bWVyaWNMaXRlcmFsLFxuICAgICAgaXNTaWduZWROdW1lcmljTGl0ZXJhbCxcbiAgICAgIGlzT2JqZWN0UHJvcGVydHksXG4gICAgICBpc09iamVjdFR5cGUsXG4gICAgICBpc09iamVjdFR5cGVQcm9wZXJ0eUFGdW5jdGlvbixcbiAgICAgIGlzU2ltcGxlVHlwZSxcbiAgICAgIGlzU2ltcGxlTnVtYmVyLFxuICAgICAgaXNTaW1wbGVUZW1wbGF0ZUxpdGVyYWwsXG4gICAgICBpc1N0cmluZ0xpdGVyYWwsXG4gICAgICBpc1N0cmluZ1Byb3BTYWZlVG9VbnF1b3RlLFxuICAgICAgaXNUZW1wbGF0ZU9uSXRzT3duTGluZSxcbiAgICAgIGlzVGVzdENhbGwsXG4gICAgICBpc1RoZU9ubHlKc3hFbGVtZW50SW5NYXJrZG93bixcbiAgICAgIGlzVFNYRmlsZSxcbiAgICAgIGlzVHlwZUFubm90YXRpb25BRnVuY3Rpb24sXG4gICAgICBpc05leHRMaW5lRW1wdHksXG4gICAgICBuZWVkc0hhcmRsaW5lQWZ0ZXJEYW5nbGluZ0NvbW1lbnQsXG4gICAgICByYXdUZXh0LFxuICAgICAgc2hvdWxkUHJpbnRDb21tYSxcbiAgICAgIGlzQml0d2lzZU9wZXJhdG9yLFxuICAgICAgc2hvdWxkRmxhdHRlbixcbiAgICAgIHN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuLFxuICAgICAgZ2V0UHJlY2VkZW5jZSxcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBnZXRDb21tZW50cyxcbiAgICAgIENvbW1lbnRDaGVja0ZsYWdzLFxuICAgICAgbWFya2VyRm9ySWZXaXRob3V0QmxvY2tBbmRTYW1lTGluZUNvbW1lbnRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3RlbXBsYXRlX2xpdGVyYWwgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L3RlbXBsYXRlLWxpdGVyYWwuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBnZXRMYXN0ID0gcmVxdWlyZV9nZXRfbGFzdCgpO1xuICAgIHZhciB7XG4gICAgICBnZXRTdHJpbmdXaWR0aCxcbiAgICAgIGdldEluZGVudFNpemVcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGpvaW4sXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgYWxpZ24sXG4gICAgICAgIGxpbmVTdWZmaXhCb3VuZGFyeSxcbiAgICAgICAgYWRkQWxpZ25tZW50VG9Eb2NcbiAgICAgIH0sXG4gICAgICBwcmludGVyOiB7XG4gICAgICAgIHByaW50RG9jVG9TdHJpbmdcbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICBtYXBEb2NcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBpc0JpbmFyeWlzaCxcbiAgICAgIGlzSmVzdEVhY2hUZW1wbGF0ZUxpdGVyYWwsXG4gICAgICBpc1NpbXBsZVRlbXBsYXRlTGl0ZXJhbCxcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBpc01lbWJlckV4cHJlc3Npb25cbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICBmdW5jdGlvbiBwcmludFRlbXBsYXRlTGl0ZXJhbChwYXRoLCBwcmludCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IGlzVGVtcGxhdGVMaXRlcmFsID0gbm9kZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiO1xuICAgICAgaWYgKGlzVGVtcGxhdGVMaXRlcmFsICYmIGlzSmVzdEVhY2hUZW1wbGF0ZUxpdGVyYWwobm9kZSwgcGF0aC5nZXRQYXJlbnROb2RlKCkpKSB7XG4gICAgICAgIGNvbnN0IHByaW50ZWQgPSBwcmludEplc3RFYWNoVGVtcGxhdGVMaXRlcmFsKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgaWYgKHByaW50ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcHJpbnRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGV4cHJlc3Npb25zS2V5ID0gXCJleHByZXNzaW9uc1wiO1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJUU1RlbXBsYXRlTGl0ZXJhbFR5cGVcIikge1xuICAgICAgICBleHByZXNzaW9uc0tleSA9IFwidHlwZXNcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBsZXQgZXhwcmVzc2lvbnMgPSBwYXRoLm1hcChwcmludCwgZXhwcmVzc2lvbnNLZXkpO1xuICAgICAgY29uc3QgaXNTaW1wbGUgPSBpc1NpbXBsZVRlbXBsYXRlTGl0ZXJhbChub2RlKTtcbiAgICAgIGlmIChpc1NpbXBsZSkge1xuICAgICAgICBleHByZXNzaW9ucyA9IGV4cHJlc3Npb25zLm1hcCgoZG9jMikgPT4gcHJpbnREb2NUb1N0cmluZyhkb2MyLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICAgIHByaW50V2lkdGg6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuICAgICAgICB9KSkuZm9ybWF0dGVkKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2gobGluZVN1ZmZpeEJvdW5kYXJ5LCBcImBcIik7XG4gICAgICBwYXRoLmVhY2goKGNoaWxkUGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBpID0gY2hpbGRQYXRoLmdldE5hbWUoKTtcbiAgICAgICAgcGFydHMucHVzaChwcmludCgpKTtcbiAgICAgICAgaWYgKGkgPCBleHByZXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB0YWJXaWR0aFxuICAgICAgICAgIH0gPSBvcHRpb25zO1xuICAgICAgICAgIGNvbnN0IHF1YXNpID0gY2hpbGRQYXRoLmdldFZhbHVlKCk7XG4gICAgICAgICAgY29uc3QgaW5kZW50U2l6ZSA9IGdldEluZGVudFNpemUocXVhc2kudmFsdWUucmF3LCB0YWJXaWR0aCk7XG4gICAgICAgICAgbGV0IHByaW50ZWQgPSBleHByZXNzaW9uc1tpXTtcbiAgICAgICAgICBpZiAoIWlzU2ltcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gbm9kZVtleHByZXNzaW9uc0tleV1baV07XG4gICAgICAgICAgICBpZiAoaGFzQ29tbWVudChleHByZXNzaW9uKSB8fCBpc01lbWJlckV4cHJlc3Npb24oZXhwcmVzc2lvbikgfHwgZXhwcmVzc2lvbi50eXBlID09PSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiIHx8IGV4cHJlc3Npb24udHlwZSA9PT0gXCJTZXF1ZW5jZUV4cHJlc3Npb25cIiB8fCBleHByZXNzaW9uLnR5cGUgPT09IFwiVFNBc0V4cHJlc3Npb25cIiB8fCBpc0JpbmFyeWlzaChleHByZXNzaW9uKSkge1xuICAgICAgICAgICAgICBwcmludGVkID0gW2luZGVudChbc29mdGxpbmUsIHByaW50ZWRdKSwgc29mdGxpbmVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGlnbmVkID0gaW5kZW50U2l6ZSA9PT0gMCAmJiBxdWFzaS52YWx1ZS5yYXcuZW5kc1dpdGgoXCJcXG5cIikgPyBhbGlnbihOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIHByaW50ZWQpIDogYWRkQWxpZ25tZW50VG9Eb2MocHJpbnRlZCwgaW5kZW50U2l6ZSwgdGFiV2lkdGgpO1xuICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAoW1wiJHtcIiwgYWxpZ25lZCwgbGluZVN1ZmZpeEJvdW5kYXJ5LCBcIn1cIl0pKTtcbiAgICAgICAgfVxuICAgICAgfSwgXCJxdWFzaXNcIik7XG4gICAgICBwYXJ0cy5wdXNoKFwiYFwiKTtcbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRKZXN0RWFjaFRlbXBsYXRlTGl0ZXJhbChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0Tm9kZSgpO1xuICAgICAgY29uc3QgaGVhZGVyTmFtZXMgPSBub2RlLnF1YXNpc1swXS52YWx1ZS5yYXcudHJpbSgpLnNwbGl0KC9cXHMqXFx8XFxzKi8pO1xuICAgICAgaWYgKGhlYWRlck5hbWVzLmxlbmd0aCA+IDEgfHwgaGVhZGVyTmFtZXMuc29tZSgoaGVhZGVyTmFtZSkgPT4gaGVhZGVyTmFtZS5sZW5ndGggPiAwKSkge1xuICAgICAgICBvcHRpb25zLl9faW5KZXN0RWFjaCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gcGF0aC5tYXAocHJpbnQsIFwiZXhwcmVzc2lvbnNcIik7XG4gICAgICAgIG9wdGlvbnMuX19pbkplc3RFYWNoID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICAgIGNvbnN0IHN0cmluZ2lmaWVkRXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucy5tYXAoKGRvYzIpID0+IFwiJHtcIiArIHByaW50RG9jVG9TdHJpbmcoZG9jMiwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwge30sIHtcbiAgICAgICAgICBwcmludFdpZHRoOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgICAgICAgZW5kT2ZMaW5lOiBcImxmXCJcbiAgICAgICAgfSkpLmZvcm1hdHRlZCArIFwifVwiKTtcbiAgICAgICAgY29uc3QgdGFibGVCb2R5ID0gW3tcbiAgICAgICAgICBoYXNMaW5lQnJlYWs6IGZhbHNlLFxuICAgICAgICAgIGNlbGxzOiBbXVxuICAgICAgICB9XTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBub2RlLnF1YXNpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHJvdyA9IGdldExhc3QodGFibGVCb2R5KTtcbiAgICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nRXhwcmVzc2lvbiA9IHN0cmluZ2lmaWVkRXhwcmVzc2lvbnNbaSAtIDFdO1xuICAgICAgICAgIHJvdy5jZWxscy5wdXNoKGNvcnJlc3BvbmRpbmdFeHByZXNzaW9uKTtcbiAgICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0V4cHJlc3Npb24uaW5jbHVkZXMoXCJcXG5cIikpIHtcbiAgICAgICAgICAgIHJvdy5oYXNMaW5lQnJlYWsgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS5xdWFzaXNbaV0udmFsdWUucmF3LmluY2x1ZGVzKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICB0YWJsZUJvZHkucHVzaCh7XG4gICAgICAgICAgICAgIGhhc0xpbmVCcmVhazogZmFsc2UsXG4gICAgICAgICAgICAgIGNlbGxzOiBbXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1heENvbHVtbkNvdW50ID0gTWF0aC5tYXgoaGVhZGVyTmFtZXMubGVuZ3RoLCAuLi50YWJsZUJvZHkubWFwKChyb3cpID0+IHJvdy5jZWxscy5sZW5ndGgpKTtcbiAgICAgICAgY29uc3QgbWF4Q29sdW1uV2lkdGhzID0gQXJyYXkuZnJvbSh7XG4gICAgICAgICAgbGVuZ3RoOiBtYXhDb2x1bW5Db3VudFxuICAgICAgICB9KS5maWxsKDApO1xuICAgICAgICBjb25zdCB0YWJsZSA9IFt7XG4gICAgICAgICAgY2VsbHM6IGhlYWRlck5hbWVzXG4gICAgICAgIH0sIC4uLnRhYmxlQm9keS5maWx0ZXIoKHJvdykgPT4gcm93LmNlbGxzLmxlbmd0aCA+IDApXTtcbiAgICAgICAgZm9yIChjb25zdCB7XG4gICAgICAgICAgY2VsbHNcbiAgICAgICAgfSBvZiB0YWJsZS5maWx0ZXIoKHJvdykgPT4gIXJvdy5oYXNMaW5lQnJlYWspKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIGNlbGxdIG9mIGNlbGxzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgbWF4Q29sdW1uV2lkdGhzW2luZGV4XSA9IE1hdGgubWF4KG1heENvbHVtbldpZHRoc1tpbmRleF0sIGdldFN0cmluZ1dpZHRoKGNlbGwpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFydHMucHVzaChsaW5lU3VmZml4Qm91bmRhcnksIFwiYFwiLCBpbmRlbnQoW2hhcmRsaW5lLCBqb2luKGhhcmRsaW5lLCB0YWJsZS5tYXAoKHJvdykgPT4gam9pbihcIiB8IFwiLCByb3cuY2VsbHMubWFwKChjZWxsLCBpbmRleCkgPT4gcm93Lmhhc0xpbmVCcmVhayA/IGNlbGwgOiBjZWxsICsgXCIgXCIucmVwZWF0KG1heENvbHVtbldpZHRoc1tpbmRleF0gLSBnZXRTdHJpbmdXaWR0aChjZWxsKSkpKSkpXSksIGhhcmRsaW5lLCBcImBcIik7XG4gICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRUZW1wbGF0ZUV4cHJlc3Npb24ocGF0aCwgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBsZXQgcHJpbnRlZCA9IHByaW50KCk7XG4gICAgICBpZiAoaGFzQ29tbWVudChub2RlKSkge1xuICAgICAgICBwcmludGVkID0gZ3JvdXAoW2luZGVudChbc29mdGxpbmUsIHByaW50ZWRdKSwgc29mdGxpbmVdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXCIke1wiLCBwcmludGVkLCBsaW5lU3VmZml4Qm91bmRhcnksIFwifVwiXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRUZW1wbGF0ZUV4cHJlc3Npb25zKHBhdGgsIHByaW50KSB7XG4gICAgICByZXR1cm4gcGF0aC5tYXAoKHBhdGgyKSA9PiBwcmludFRlbXBsYXRlRXhwcmVzc2lvbihwYXRoMiwgcHJpbnQpLCBcImV4cHJlc3Npb25zXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlc2NhcGVUZW1wbGF0ZUNoYXJhY3RlcnMoZG9jMiwgcmF3KSB7XG4gICAgICByZXR1cm4gbWFwRG9jKGRvYzIsIChjdXJyZW50RG9jKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudERvYyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiByYXcgPyBjdXJyZW50RG9jLnJlcGxhY2UoLyhcXFxcKilgL2csIFwiJDEkMVxcXFxgXCIpIDogdW5jb29rVGVtcGxhdGVFbGVtZW50VmFsdWUoY3VycmVudERvYyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1cnJlbnREb2M7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdW5jb29rVGVtcGxhdGVFbGVtZW50VmFsdWUoY29va2VkVmFsdWUpIHtcbiAgICAgIHJldHVybiBjb29rZWRWYWx1ZS5yZXBsYWNlKC8oW1xcXFxgXXxcXCR7KS9nLCBcIlxcXFwkMVwiKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRUZW1wbGF0ZUxpdGVyYWwsXG4gICAgICBwcmludFRlbXBsYXRlRXhwcmVzc2lvbnMsXG4gICAgICBlc2NhcGVUZW1wbGF0ZUNoYXJhY3RlcnMsXG4gICAgICB1bmNvb2tUZW1wbGF0ZUVsZW1lbnRWYWx1ZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbWFya2Rvd24gPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL2VtYmVkL21hcmtkb3duLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgbGl0ZXJhbGxpbmUsXG4gICAgICAgIGRlZGVudFRvUm9vdFxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGVzY2FwZVRlbXBsYXRlQ2hhcmFjdGVyc1xuICAgIH0gPSByZXF1aXJlX3RlbXBsYXRlX2xpdGVyYWwoKTtcbiAgICBmdW5jdGlvbiBmb3JtYXQocGF0aCwgcHJpbnQsIHRleHRUb0RvYykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGxldCB0ZXh0ID0gbm9kZS5xdWFzaXNbMF0udmFsdWUucmF3LnJlcGxhY2UoLygoPzpcXFxcXFxcXCkqKVxcXFxgL2csIChfLCBiYWNrc2xhc2hlcykgPT4gXCJcXFxcXCIucmVwZWF0KGJhY2tzbGFzaGVzLmxlbmd0aCAvIDIpICsgXCJgXCIpO1xuICAgICAgY29uc3QgaW5kZW50YXRpb24gPSBnZXRJbmRlbnRhdGlvbih0ZXh0KTtcbiAgICAgIGNvbnN0IGhhc0luZGVudCA9IGluZGVudGF0aW9uICE9PSBcIlwiO1xuICAgICAgaWYgKGhhc0luZGVudCkge1xuICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke2luZGVudGF0aW9ufWAsIFwiZ21cIiksIFwiXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgZG9jMiA9IGVzY2FwZVRlbXBsYXRlQ2hhcmFjdGVycyh0ZXh0VG9Eb2ModGV4dCwge1xuICAgICAgICBwYXJzZXI6IFwibWFya2Rvd25cIixcbiAgICAgICAgX19pbkpzVGVtcGxhdGU6IHRydWVcbiAgICAgIH0sIHtcbiAgICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiB0cnVlXG4gICAgICB9KSwgdHJ1ZSk7XG4gICAgICByZXR1cm4gW1wiYFwiLCBoYXNJbmRlbnQgPyBpbmRlbnQoW3NvZnRsaW5lLCBkb2MyXSkgOiBbbGl0ZXJhbGxpbmUsIGRlZGVudFRvUm9vdChkb2MyKV0sIHNvZnRsaW5lLCBcImBcIl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEluZGVudGF0aW9uKHN0cikge1xuICAgICAgY29uc3QgZmlyc3RNYXRjaGVkSW5kZW50ID0gc3RyLm1hdGNoKC9eKFteXFxTXFxuXSopXFxTL20pO1xuICAgICAgcmV0dXJuIGZpcnN0TWF0Y2hlZEluZGVudCA9PT0gbnVsbCA/IFwiXCIgOiBmaXJzdE1hdGNoZWRJbmRlbnRbMV07XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZvcm1hdDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jc3MgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL2VtYmVkL2Nzcy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGlzTm9uRW1wdHlBcnJheVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBoYXJkbGluZSxcbiAgICAgICAgc29mdGxpbmVcbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICBtYXBEb2MsXG4gICAgICAgIHJlcGxhY2VFbmRPZkxpbmUsXG4gICAgICAgIGNsZWFuRG9jXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRUZW1wbGF0ZUV4cHJlc3Npb25zXG4gICAgfSA9IHJlcXVpcmVfdGVtcGxhdGVfbGl0ZXJhbCgpO1xuICAgIGZ1bmN0aW9uIGZvcm1hdChwYXRoLCBwcmludCwgdGV4dFRvRG9jKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcmF3UXVhc2lzID0gbm9kZS5xdWFzaXMubWFwKChxKSA9PiBxLnZhbHVlLnJhdyk7XG4gICAgICBsZXQgcGxhY2Vob2xkZXJJRCA9IDA7XG4gICAgICBjb25zdCB0ZXh0ID0gcmF3UXVhc2lzLnJlZHVjZSgocHJldlZhbCwgY3VyclZhbCwgaWR4KSA9PiBpZHggPT09IDAgPyBjdXJyVmFsIDogcHJldlZhbCArIFwiQHByZXR0aWVyLXBsYWNlaG9sZGVyLVwiICsgcGxhY2Vob2xkZXJJRCsrICsgXCItaWRcIiArIGN1cnJWYWwsIFwiXCIpO1xuICAgICAgY29uc3QgZG9jMiA9IHRleHRUb0RvYyh0ZXh0LCB7XG4gICAgICAgIHBhcnNlcjogXCJzY3NzXCJcbiAgICAgIH0sIHtcbiAgICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25Eb2NzID0gcHJpbnRUZW1wbGF0ZUV4cHJlc3Npb25zKHBhdGgsIHByaW50KTtcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1Dc3NEb2MoZG9jMiwgbm9kZSwgZXhwcmVzc2lvbkRvY3MpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm1Dc3NEb2MocXVhc2lzRG9jLCBwYXJlbnROb2RlLCBleHByZXNzaW9uRG9jcykge1xuICAgICAgY29uc3QgaXNFbXB0eSA9IHBhcmVudE5vZGUucXVhc2lzLmxlbmd0aCA9PT0gMSAmJiAhcGFyZW50Tm9kZS5xdWFzaXNbMF0udmFsdWUucmF3LnRyaW0oKTtcbiAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgIHJldHVybiBcImBgXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdEb2MgPSByZXBsYWNlUGxhY2Vob2xkZXJzKHF1YXNpc0RvYywgZXhwcmVzc2lvbkRvY3MpO1xuICAgICAgaWYgKCFuZXdEb2MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgaW5zZXJ0IGFsbCB0aGUgZXhwcmVzc2lvbnNcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gW1wiYFwiLCBpbmRlbnQoW2hhcmRsaW5lLCBuZXdEb2NdKSwgc29mdGxpbmUsIFwiYFwiXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVwbGFjZVBsYWNlaG9sZGVycyhxdWFzaXNEb2MsIGV4cHJlc3Npb25Eb2NzKSB7XG4gICAgICBpZiAoIWlzTm9uRW1wdHlBcnJheShleHByZXNzaW9uRG9jcykpIHtcbiAgICAgICAgcmV0dXJuIHF1YXNpc0RvYztcbiAgICAgIH1cbiAgICAgIGxldCByZXBsYWNlQ291bnRlciA9IDA7XG4gICAgICBjb25zdCBuZXdEb2MgPSBtYXBEb2MoY2xlYW5Eb2MocXVhc2lzRG9jKSwgKGRvYzIpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkb2MyICE9PSBcInN0cmluZ1wiIHx8ICFkb2MyLmluY2x1ZGVzKFwiQHByZXR0aWVyLXBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIGRvYzI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvYzIuc3BsaXQoL0BwcmV0dGllci1wbGFjZWhvbGRlci0oXFxkKyktaWQvKS5tYXAoKGNvbXBvbmVudCwgaWR4KSA9PiB7XG4gICAgICAgICAgaWYgKGlkeCAlIDIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiByZXBsYWNlRW5kT2ZMaW5lKGNvbXBvbmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcGxhY2VDb3VudGVyKys7XG4gICAgICAgICAgcmV0dXJuIGV4cHJlc3Npb25Eb2NzW2NvbXBvbmVudF07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhwcmVzc2lvbkRvY3MubGVuZ3RoID09PSByZXBsYWNlQ291bnRlciA/IG5ld0RvYyA6IG51bGw7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZvcm1hdDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9ncmFwaHFsID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9lbWJlZC9ncmFwaHFsLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBqb2luLFxuICAgICAgICBoYXJkbGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGVzY2FwZVRlbXBsYXRlQ2hhcmFjdGVycyxcbiAgICAgIHByaW50VGVtcGxhdGVFeHByZXNzaW9uc1xuICAgIH0gPSByZXF1aXJlX3RlbXBsYXRlX2xpdGVyYWwoKTtcbiAgICBmdW5jdGlvbiBmb3JtYXQocGF0aCwgcHJpbnQsIHRleHRUb0RvYykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IG51bVF1YXNpcyA9IG5vZGUucXVhc2lzLmxlbmd0aDtcbiAgICAgIGlmIChudW1RdWFzaXMgPT09IDEgJiYgbm9kZS5xdWFzaXNbMF0udmFsdWUucmF3LnRyaW0oKSA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gXCJgYFwiO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwcmVzc2lvbkRvY3MgPSBwcmludFRlbXBsYXRlRXhwcmVzc2lvbnMocGF0aCwgcHJpbnQpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUXVhc2lzOyBpKyspIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVFbGVtZW50ID0gbm9kZS5xdWFzaXNbaV07XG4gICAgICAgIGNvbnN0IGlzRmlyc3QgPSBpID09PSAwO1xuICAgICAgICBjb25zdCBpc0xhc3QgPSBpID09PSBudW1RdWFzaXMgLSAxO1xuICAgICAgICBjb25zdCB0ZXh0ID0gdGVtcGxhdGVFbGVtZW50LnZhbHVlLmNvb2tlZDtcbiAgICAgICAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICBjb25zdCBudW1MaW5lcyA9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbkRvYyA9IGV4cHJlc3Npb25Eb2NzW2ldO1xuICAgICAgICBjb25zdCBzdGFydHNXaXRoQmxhbmtMaW5lID0gbnVtTGluZXMgPiAyICYmIGxpbmVzWzBdLnRyaW0oKSA9PT0gXCJcIiAmJiBsaW5lc1sxXS50cmltKCkgPT09IFwiXCI7XG4gICAgICAgIGNvbnN0IGVuZHNXaXRoQmxhbmtMaW5lID0gbnVtTGluZXMgPiAyICYmIGxpbmVzW251bUxpbmVzIC0gMV0udHJpbSgpID09PSBcIlwiICYmIGxpbmVzW251bUxpbmVzIC0gMl0udHJpbSgpID09PSBcIlwiO1xuICAgICAgICBjb25zdCBjb21tZW50c0FuZFdoaXRlc3BhY2VPbmx5ID0gbGluZXMuZXZlcnkoKGxpbmUpID0+IC9eXFxzKig/OiNbXlxcblxccl0qKT8kLy50ZXN0KGxpbmUpKTtcbiAgICAgICAgaWYgKCFpc0xhc3QgJiYgLyNbXlxcblxccl0qJC8udGVzdChsaW5lc1tudW1MaW5lcyAtIDFdKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkb2MyID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbW1lbnRzQW5kV2hpdGVzcGFjZU9ubHkpIHtcbiAgICAgICAgICBkb2MyID0gcHJpbnRHcmFwaHFsQ29tbWVudHMobGluZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRvYzIgPSB0ZXh0VG9Eb2ModGV4dCwge1xuICAgICAgICAgICAgcGFyc2VyOiBcImdyYXBocWxcIlxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIHN0cmlwVHJhaWxpbmdIYXJkbGluZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkb2MyKSB7XG4gICAgICAgICAgZG9jMiA9IGVzY2FwZVRlbXBsYXRlQ2hhcmFjdGVycyhkb2MyLCBmYWxzZSk7XG4gICAgICAgICAgaWYgKCFpc0ZpcnN0ICYmIHN0YXJ0c1dpdGhCbGFua0xpbmUpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnRzLnB1c2goZG9jMik7XG4gICAgICAgICAgaWYgKCFpc0xhc3QgJiYgZW5kc1dpdGhCbGFua0xpbmUpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFpc0ZpcnN0ICYmICFpc0xhc3QgJiYgc3RhcnRzV2l0aEJsYW5rTGluZSkge1xuICAgICAgICAgIHBhcnRzLnB1c2goXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cHJlc3Npb25Eb2MpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKGV4cHJlc3Npb25Eb2MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gW1wiYFwiLCBpbmRlbnQoW2hhcmRsaW5lLCBqb2luKGhhcmRsaW5lLCBwYXJ0cyldKSwgaGFyZGxpbmUsIFwiYFwiXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRHcmFwaHFsQ29tbWVudHMobGluZXMpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBsZXQgc2VlbkNvbW1lbnQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGFycmF5ID0gbGluZXMubWFwKCh0ZXh0TGluZSkgPT4gdGV4dExpbmUudHJpbSgpKTtcbiAgICAgIGZvciAoY29uc3QgW2ksIHRleHRMaW5lXSBvZiBhcnJheS5lbnRyaWVzKCkpIHtcbiAgICAgICAgaWYgKHRleHRMaW5lID09PSBcIlwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFycmF5W2kgLSAxXSA9PT0gXCJcIiAmJiBzZWVuQ29tbWVudCkge1xuICAgICAgICAgIHBhcnRzLnB1c2goW2hhcmRsaW5lLCB0ZXh0TGluZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRzLnB1c2godGV4dExpbmUpO1xuICAgICAgICB9XG4gICAgICAgIHNlZW5Db21tZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDAgPyBudWxsIDogam9pbihoYXJkbGluZSwgcGFydHMpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBmb3JtYXQ7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaHRtbCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvZW1iZWQvaHRtbC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGluZGVudCxcbiAgICAgICAgbGluZSxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIGdyb3VwXG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgbWFwRG9jXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRUZW1wbGF0ZUV4cHJlc3Npb25zLFxuICAgICAgdW5jb29rVGVtcGxhdGVFbGVtZW50VmFsdWVcbiAgICB9ID0gcmVxdWlyZV90ZW1wbGF0ZV9saXRlcmFsKCk7XG4gICAgdmFyIGh0bWxUZW1wbGF0ZUxpdGVyYWxDb3VudGVyID0gMDtcbiAgICBmdW5jdGlvbiBmb3JtYXQocGF0aCwgcHJpbnQsIHRleHRUb0RvYywgb3B0aW9ucywge1xuICAgICAgcGFyc2VyXG4gICAgfSkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IGNvdW50ZXIgPSBodG1sVGVtcGxhdGVMaXRlcmFsQ291bnRlcjtcbiAgICAgIGh0bWxUZW1wbGF0ZUxpdGVyYWxDb3VudGVyID0gaHRtbFRlbXBsYXRlTGl0ZXJhbENvdW50ZXIgKyAxID4+PiAwO1xuICAgICAgY29uc3QgY29tcG9zZVBsYWNlaG9sZGVyID0gKGluZGV4KSA9PiBgUFJFVFRJRVJfSFRNTF9QTEFDRUhPTERFUl8ke2luZGV4fV8ke2NvdW50ZXJ9X0lOX0pTYDtcbiAgICAgIGNvbnN0IHRleHQgPSBub2RlLnF1YXNpcy5tYXAoKHF1YXNpLCBpbmRleCwgcXVhc2lzKSA9PiBpbmRleCA9PT0gcXVhc2lzLmxlbmd0aCAtIDEgPyBxdWFzaS52YWx1ZS5jb29rZWQgOiBxdWFzaS52YWx1ZS5jb29rZWQgKyBjb21wb3NlUGxhY2Vob2xkZXIoaW5kZXgpKS5qb2luKFwiXCIpO1xuICAgICAgY29uc3QgZXhwcmVzc2lvbkRvY3MgPSBwcmludFRlbXBsYXRlRXhwcmVzc2lvbnMocGF0aCwgcHJpbnQpO1xuICAgICAgaWYgKGV4cHJlc3Npb25Eb2NzLmxlbmd0aCA9PT0gMCAmJiB0ZXh0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFwiYGBcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyUmVnZXggPSBuZXcgUmVnRXhwKGNvbXBvc2VQbGFjZWhvbGRlcihcIihcXFxcZCspXCIpLCBcImdcIik7XG4gICAgICBsZXQgdG9wTGV2ZWxDb3VudCA9IDA7XG4gICAgICBjb25zdCBkb2MyID0gdGV4dFRvRG9jKHRleHQsIHtcbiAgICAgICAgcGFyc2VyLFxuICAgICAgICBfX29uSHRtbFJvb3Qocm9vdCkge1xuICAgICAgICAgIHRvcExldmVsQ291bnQgPSByb290LmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBzdHJpcFRyYWlsaW5nSGFyZGxpbmU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgY29uc3QgY29udGVudERvYyA9IG1hcERvYyhkb2MyLCAoZG9jMykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGRvYzMgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gZG9jMztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gZG9jMy5zcGxpdChwbGFjZWhvbGRlclJlZ2V4KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCA9IGNvbXBvbmVudHNbaV07XG4gICAgICAgICAgaWYgKGkgJSAyID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudCA9IHVuY29va1RlbXBsYXRlRWxlbWVudFZhbHVlKGNvbXBvbmVudCk7XG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLl9fZW1iZWRkZWRJbkh0bWwpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnQucmVwbGFjZSgvPFxcLyhzY3JpcHQpXFxiL2dpLCBcIjxcXFxcLyQxXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlckluZGV4ID0gTnVtYmVyKGNvbXBvbmVudCk7XG4gICAgICAgICAgcGFydHMucHVzaChleHByZXNzaW9uRG9jc1twbGFjZWhvbGRlckluZGV4XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBsZWFkaW5nV2hpdGVzcGFjZSA9IC9eXFxzLy50ZXN0KHRleHQpID8gXCIgXCIgOiBcIlwiO1xuICAgICAgY29uc3QgdHJhaWxpbmdXaGl0ZXNwYWNlID0gL1xccyQvLnRlc3QodGV4dCkgPyBcIiBcIiA6IFwiXCI7XG4gICAgICBjb25zdCBsaW5lYnJlYWsgPSBvcHRpb25zLmh0bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHkgPT09IFwiaWdub3JlXCIgPyBoYXJkbGluZSA6IGxlYWRpbmdXaGl0ZXNwYWNlICYmIHRyYWlsaW5nV2hpdGVzcGFjZSA/IGxpbmUgOiBudWxsO1xuICAgICAgaWYgKGxpbmVicmVhaykge1xuICAgICAgICByZXR1cm4gZ3JvdXAoW1wiYFwiLCBpbmRlbnQoW2xpbmVicmVhaywgZ3JvdXAoY29udGVudERvYyldKSwgbGluZWJyZWFrLCBcImBcIl0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdyb3VwKFtcImBcIiwgbGVhZGluZ1doaXRlc3BhY2UsIHRvcExldmVsQ291bnQgPiAxID8gaW5kZW50KGdyb3VwKGNvbnRlbnREb2MpKSA6IGdyb3VwKGNvbnRlbnREb2MpLCB0cmFpbGluZ1doaXRlc3BhY2UsIFwiYFwiXSk7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZvcm1hdDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9lbWJlZCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvZW1iZWQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBoYXNDb21tZW50LFxuICAgICAgQ29tbWVudENoZWNrRmxhZ3MsXG4gICAgICBpc09iamVjdFByb3BlcnR5XG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIGZvcm1hdE1hcmtkb3duID0gcmVxdWlyZV9tYXJrZG93bigpO1xuICAgIHZhciBmb3JtYXRDc3MgPSByZXF1aXJlX2NzcygpO1xuICAgIHZhciBmb3JtYXRHcmFwaHFsID0gcmVxdWlyZV9ncmFwaHFsKCk7XG4gICAgdmFyIGZvcm1hdEh0bWwgPSByZXF1aXJlX2h0bWwoKTtcbiAgICBmdW5jdGlvbiBnZXRMYW5ndWFnZShwYXRoKSB7XG4gICAgICBpZiAoaXNTdHlsZWRKc3gocGF0aCkgfHwgaXNTdHlsZWRDb21wb25lbnRzKHBhdGgpIHx8IGlzQ3NzUHJvcChwYXRoKSB8fCBpc0FuZ3VsYXJDb21wb25lbnRTdHlsZXMocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIFwiY3NzXCI7XG4gICAgICB9XG4gICAgICBpZiAoaXNHcmFwaFFMKHBhdGgpKSB7XG4gICAgICAgIHJldHVybiBcImdyYXBocWxcIjtcbiAgICAgIH1cbiAgICAgIGlmIChpc0h0bWwocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIFwiaHRtbFwiO1xuICAgICAgfVxuICAgICAgaWYgKGlzQW5ndWxhckNvbXBvbmVudFRlbXBsYXRlKHBhdGgpKSB7XG4gICAgICAgIHJldHVybiBcImFuZ3VsYXJcIjtcbiAgICAgIH1cbiAgICAgIGlmIChpc01hcmtkb3duKHBhdGgpKSB7XG4gICAgICAgIHJldHVybiBcIm1hcmtkb3duXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVtYmVkKHBhdGgsIHByaW50LCB0ZXh0VG9Eb2MsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAobm9kZS50eXBlICE9PSBcIlRlbXBsYXRlTGl0ZXJhbFwiIHx8IGhhc0ludmFsaWRDb29rZWRWYWx1ZShub2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHBhdGgpO1xuICAgICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAobGFuZ3VhZ2UgPT09IFwibWFya2Rvd25cIikge1xuICAgICAgICByZXR1cm4gZm9ybWF0TWFya2Rvd24ocGF0aCwgcHJpbnQsIHRleHRUb0RvYyk7XG4gICAgICB9XG4gICAgICBpZiAobGFuZ3VhZ2UgPT09IFwiY3NzXCIpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdENzcyhwYXRoLCBwcmludCwgdGV4dFRvRG9jKTtcbiAgICAgIH1cbiAgICAgIGlmIChsYW5ndWFnZSA9PT0gXCJncmFwaHFsXCIpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdEdyYXBocWwocGF0aCwgcHJpbnQsIHRleHRUb0RvYyk7XG4gICAgICB9XG4gICAgICBpZiAobGFuZ3VhZ2UgPT09IFwiaHRtbFwiIHx8IGxhbmd1YWdlID09PSBcImFuZ3VsYXJcIikge1xuICAgICAgICByZXR1cm4gZm9ybWF0SHRtbChwYXRoLCBwcmludCwgdGV4dFRvRG9jLCBvcHRpb25zLCB7XG4gICAgICAgICAgcGFyc2VyOiBsYW5ndWFnZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaXNNYXJrZG93bihwYXRoKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC50eXBlID09PSBcIlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvblwiICYmIG5vZGUucXVhc2lzLmxlbmd0aCA9PT0gMSAmJiBwYXJlbnQudGFnLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIChwYXJlbnQudGFnLm5hbWUgPT09IFwibWRcIiB8fCBwYXJlbnQudGFnLm5hbWUgPT09IFwibWFya2Rvd25cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU3R5bGVkSnN4KHBhdGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIGNvbnN0IHBhcmVudFBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgxKTtcbiAgICAgIHJldHVybiBwYXJlbnRQYXJlbnQgJiYgbm9kZS5xdWFzaXMgJiYgcGFyZW50LnR5cGUgPT09IFwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lclwiICYmIHBhcmVudFBhcmVudC50eXBlID09PSBcIkpTWEVsZW1lbnRcIiAmJiBwYXJlbnRQYXJlbnQub3BlbmluZ0VsZW1lbnQubmFtZS5uYW1lID09PSBcInN0eWxlXCIgJiYgcGFyZW50UGFyZW50Lm9wZW5pbmdFbGVtZW50LmF0dHJpYnV0ZXMuc29tZSgoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUubmFtZS5uYW1lID09PSBcImpzeFwiKSB8fCBwYXJlbnQgJiYgcGFyZW50LnR5cGUgPT09IFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCIgJiYgcGFyZW50LnRhZy50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiBwYXJlbnQudGFnLm5hbWUgPT09IFwiY3NzXCIgfHwgcGFyZW50ICYmIHBhcmVudC50eXBlID09PSBcIlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvblwiICYmIHBhcmVudC50YWcudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiYgcGFyZW50LnRhZy5vYmplY3QubmFtZSA9PT0gXCJjc3NcIiAmJiAocGFyZW50LnRhZy5wcm9wZXJ0eS5uYW1lID09PSBcImdsb2JhbFwiIHx8IHBhcmVudC50YWcucHJvcGVydHkubmFtZSA9PT0gXCJyZXNvbHZlXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0FuZ3VsYXJDb21wb25lbnRTdHlsZXMocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgubWF0Y2goKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gXCJUZW1wbGF0ZUxpdGVyYWxcIiwgKG5vZGUsIG5hbWUpID0+IG5vZGUudHlwZSA9PT0gXCJBcnJheUV4cHJlc3Npb25cIiAmJiBuYW1lID09PSBcImVsZW1lbnRzXCIsIChub2RlLCBuYW1lKSA9PiBpc09iamVjdFByb3BlcnR5KG5vZGUpICYmIG5vZGUua2V5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUua2V5Lm5hbWUgPT09IFwic3R5bGVzXCIgJiYgbmFtZSA9PT0gXCJ2YWx1ZVwiLCAuLi5hbmd1bGFyQ29tcG9uZW50T2JqZWN0RXhwcmVzc2lvblByZWRpY2F0ZXMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0FuZ3VsYXJDb21wb25lbnRUZW1wbGF0ZShwYXRoKSB7XG4gICAgICByZXR1cm4gcGF0aC5tYXRjaCgobm9kZSkgPT4gbm9kZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiLCAobm9kZSwgbmFtZSkgPT4gaXNPYmplY3RQcm9wZXJ0eShub2RlKSAmJiBub2RlLmtleS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiBub2RlLmtleS5uYW1lID09PSBcInRlbXBsYXRlXCIgJiYgbmFtZSA9PT0gXCJ2YWx1ZVwiLCAuLi5hbmd1bGFyQ29tcG9uZW50T2JqZWN0RXhwcmVzc2lvblByZWRpY2F0ZXMpO1xuICAgIH1cbiAgICB2YXIgYW5ndWxhckNvbXBvbmVudE9iamVjdEV4cHJlc3Npb25QcmVkaWNhdGVzID0gWyhub2RlLCBuYW1lKSA9PiBub2RlLnR5cGUgPT09IFwiT2JqZWN0RXhwcmVzc2lvblwiICYmIG5hbWUgPT09IFwicHJvcGVydGllc1wiLCAobm9kZSwgbmFtZSkgPT4gbm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiYgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgbm9kZS5jYWxsZWUubmFtZSA9PT0gXCJDb21wb25lbnRcIiAmJiBuYW1lID09PSBcImFyZ3VtZW50c1wiLCAobm9kZSwgbmFtZSkgPT4gbm9kZS50eXBlID09PSBcIkRlY29yYXRvclwiICYmIG5hbWUgPT09IFwiZXhwcmVzc2lvblwiXTtcbiAgICBmdW5jdGlvbiBpc1N0eWxlZENvbXBvbmVudHMocGF0aCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQudHlwZSAhPT0gXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCB0YWcgPSBwYXJlbnQudGFnLnR5cGUgPT09IFwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIiA/IHBhcmVudC50YWcuZXhwcmVzc2lvbiA6IHBhcmVudC50YWc7XG4gICAgICBzd2l0Y2ggKHRhZy50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIGlzU3R5bGVkSWRlbnRpZmllcih0YWcub2JqZWN0KSB8fCBpc1N0eWxlZEV4dGVuZCh0YWcpO1xuICAgICAgICBjYXNlIFwiQ2FsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gaXNTdHlsZWRJZGVudGlmaWVyKHRhZy5jYWxsZWUpIHx8IHRhZy5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiYgKHRhZy5jYWxsZWUub2JqZWN0LnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmIChpc1N0eWxlZElkZW50aWZpZXIodGFnLmNhbGxlZS5vYmplY3Qub2JqZWN0KSB8fCBpc1N0eWxlZEV4dGVuZCh0YWcuY2FsbGVlLm9iamVjdCkpIHx8IHRhZy5jYWxsZWUub2JqZWN0LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJiBpc1N0eWxlZElkZW50aWZpZXIodGFnLmNhbGxlZS5vYmplY3QuY2FsbGVlKSk7XG4gICAgICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6XG4gICAgICAgICAgcmV0dXJuIHRhZy5uYW1lID09PSBcImNzc1wiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaXNDc3NQcm9wKHBhdGgpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgY29uc3QgcGFyZW50UGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKDEpO1xuICAgICAgcmV0dXJuIHBhcmVudFBhcmVudCAmJiBwYXJlbnQudHlwZSA9PT0gXCJKU1hFeHByZXNzaW9uQ29udGFpbmVyXCIgJiYgcGFyZW50UGFyZW50LnR5cGUgPT09IFwiSlNYQXR0cmlidXRlXCIgJiYgcGFyZW50UGFyZW50Lm5hbWUudHlwZSA9PT0gXCJKU1hJZGVudGlmaWVyXCIgJiYgcGFyZW50UGFyZW50Lm5hbWUubmFtZSA9PT0gXCJjc3NcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTdHlsZWRJZGVudGlmaWVyKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUubmFtZSA9PT0gXCJzdHlsZWRcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTdHlsZWRFeHRlbmQobm9kZSkge1xuICAgICAgcmV0dXJuIC9eW0EtWl0vLnRlc3Qobm9kZS5vYmplY3QubmFtZSkgJiYgbm9kZS5wcm9wZXJ0eS5uYW1lID09PSBcImV4dGVuZFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0dyYXBoUUwocGF0aCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgcmV0dXJuIGhhc0xhbmd1YWdlQ29tbWVudChub2RlLCBcIkdyYXBoUUxcIikgfHwgcGFyZW50ICYmIChwYXJlbnQudHlwZSA9PT0gXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIiAmJiAocGFyZW50LnRhZy50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJiBwYXJlbnQudGFnLm9iamVjdC5uYW1lID09PSBcImdyYXBocWxcIiAmJiBwYXJlbnQudGFnLnByb3BlcnR5Lm5hbWUgPT09IFwiZXhwZXJpbWVudGFsXCIgfHwgcGFyZW50LnRhZy50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiAocGFyZW50LnRhZy5uYW1lID09PSBcImdxbFwiIHx8IHBhcmVudC50YWcubmFtZSA9PT0gXCJncmFwaHFsXCIpKSB8fCBwYXJlbnQudHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiICYmIHBhcmVudC5jYWxsZWUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgcGFyZW50LmNhbGxlZS5uYW1lID09PSBcImdyYXBocWxcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc0xhbmd1YWdlQ29tbWVudChub2RlLCBsYW5ndWFnZU5hbWUpIHtcbiAgICAgIHJldHVybiBoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkJsb2NrIHwgQ29tbWVudENoZWNrRmxhZ3MuTGVhZGluZywgKHtcbiAgICAgICAgdmFsdWVcbiAgICAgIH0pID0+IHZhbHVlID09PSBgICR7bGFuZ3VhZ2VOYW1lfSBgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNIdG1sKHBhdGgpIHtcbiAgICAgIHJldHVybiBoYXNMYW5ndWFnZUNvbW1lbnQocGF0aC5nZXRWYWx1ZSgpLCBcIkhUTUxcIikgfHwgcGF0aC5tYXRjaCgobm9kZSkgPT4gbm9kZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiLCAobm9kZSwgbmFtZSkgPT4gbm9kZS50eXBlID09PSBcIlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvblwiICYmIG5vZGUudGFnLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUudGFnLm5hbWUgPT09IFwiaHRtbFwiICYmIG5hbWUgPT09IFwicXVhc2lcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc0ludmFsaWRDb29rZWRWYWx1ZSh7XG4gICAgICBxdWFzaXNcbiAgICB9KSB7XG4gICAgICByZXR1cm4gcXVhc2lzLnNvbWUoKHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBjb29rZWRcbiAgICAgICAgfVxuICAgICAgfSkgPT4gY29va2VkID09PSBudWxsKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZW1iZWQ7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY2xlYW4gPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL2NsZWFuLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgaXNCbG9ja0NvbW1lbnQgPSByZXF1aXJlX2lzX2Jsb2NrX2NvbW1lbnQoKTtcbiAgICB2YXIgaWdub3JlZFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJyYW5nZVwiLCBcInJhd1wiLCBcImNvbW1lbnRzXCIsIFwibGVhZGluZ0NvbW1lbnRzXCIsIFwidHJhaWxpbmdDb21tZW50c1wiLCBcImlubmVyQ29tbWVudHNcIiwgXCJleHRyYVwiLCBcInN0YXJ0XCIsIFwiZW5kXCIsIFwibG9jXCIsIFwiZmxhZ3NcIiwgXCJlcnJvcnNcIiwgXCJ0b2tlbnNcIl0pO1xuICAgIHZhciByZW1vdmVUZW1wbGF0ZUVsZW1lbnRzVmFsdWUgPSAobm9kZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCB0ZW1wbGF0ZUVsZW1lbnQgb2Ygbm9kZS5xdWFzaXMpIHtcbiAgICAgICAgZGVsZXRlIHRlbXBsYXRlRWxlbWVudC52YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGNsZWFuKGFzdCwgbmV3T2JqLCBwYXJlbnQpIHtcbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJQcm9ncmFtXCIpIHtcbiAgICAgICAgZGVsZXRlIG5ld09iai5zb3VyY2VUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcIkJpZ0ludExpdGVyYWxcIiB8fCBhc3QudHlwZSA9PT0gXCJCaWdJbnRMaXRlcmFsVHlwZUFubm90YXRpb25cIikge1xuICAgICAgICBpZiAobmV3T2JqLnZhbHVlKSB7XG4gICAgICAgICAgbmV3T2JqLnZhbHVlID0gbmV3T2JqLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJCaWdJbnRMaXRlcmFsXCIgfHwgYXN0LnR5cGUgPT09IFwiTGl0ZXJhbFwiKSB7XG4gICAgICAgIGlmIChuZXdPYmouYmlnaW50KSB7XG4gICAgICAgICAgbmV3T2JqLmJpZ2ludCA9IG5ld09iai5iaWdpbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcIkRlY2ltYWxMaXRlcmFsXCIpIHtcbiAgICAgICAgbmV3T2JqLnZhbHVlID0gTnVtYmVyKG5ld09iai52YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwiTGl0ZXJhbFwiICYmIG5ld09iai5kZWNpbWFsKSB7XG4gICAgICAgIG5ld09iai5kZWNpbWFsID0gTnVtYmVyKG5ld09iai5kZWNpbWFsKTtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJFbXB0eVN0YXRlbWVudFwiKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcIkpTWFRleHRcIikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJKU1hFeHByZXNzaW9uQ29udGFpbmVyXCIgJiYgKGFzdC5leHByZXNzaW9uLnR5cGUgPT09IFwiTGl0ZXJhbFwiIHx8IGFzdC5leHByZXNzaW9uLnR5cGUgPT09IFwiU3RyaW5nTGl0ZXJhbFwiKSAmJiBhc3QuZXhwcmVzc2lvbi52YWx1ZSA9PT0gXCIgXCIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoKGFzdC50eXBlID09PSBcIlByb3BlcnR5XCIgfHwgYXN0LnR5cGUgPT09IFwiT2JqZWN0UHJvcGVydHlcIiB8fCBhc3QudHlwZSA9PT0gXCJNZXRob2REZWZpbml0aW9uXCIgfHwgYXN0LnR5cGUgPT09IFwiQ2xhc3NQcm9wZXJ0eVwiIHx8IGFzdC50eXBlID09PSBcIkNsYXNzTWV0aG9kXCIgfHwgYXN0LnR5cGUgPT09IFwiUHJvcGVydHlEZWZpbml0aW9uXCIgfHwgYXN0LnR5cGUgPT09IFwiVFNEZWNsYXJlTWV0aG9kXCIgfHwgYXN0LnR5cGUgPT09IFwiVFNQcm9wZXJ0eVNpZ25hdHVyZVwiIHx8IGFzdC50eXBlID09PSBcIk9iamVjdFR5cGVQcm9wZXJ0eVwiKSAmJiB0eXBlb2YgYXN0LmtleSA9PT0gXCJvYmplY3RcIiAmJiBhc3Qua2V5ICYmIChhc3Qua2V5LnR5cGUgPT09IFwiTGl0ZXJhbFwiIHx8IGFzdC5rZXkudHlwZSA9PT0gXCJOdW1lcmljTGl0ZXJhbFwiIHx8IGFzdC5rZXkudHlwZSA9PT0gXCJTdHJpbmdMaXRlcmFsXCIgfHwgYXN0LmtleS50eXBlID09PSBcIklkZW50aWZpZXJcIikpIHtcbiAgICAgICAgZGVsZXRlIG5ld09iai5rZXk7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwiSlNYRWxlbWVudFwiICYmIGFzdC5vcGVuaW5nRWxlbWVudC5uYW1lLm5hbWUgPT09IFwic3R5bGVcIiAmJiBhc3Qub3BlbmluZ0VsZW1lbnQuYXR0cmlidXRlcy5zb21lKChhdHRyKSA9PiBhdHRyLm5hbWUubmFtZSA9PT0gXCJqc3hcIikpIHtcbiAgICAgICAgZm9yIChjb25zdCB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uMlxuICAgICAgICB9IG9mIG5ld09iai5jaGlsZHJlbikge1xuICAgICAgICAgIGlmICh0eXBlID09PSBcIkpTWEV4cHJlc3Npb25Db250YWluZXJcIiAmJiBleHByZXNzaW9uMi50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiKSB7XG4gICAgICAgICAgICByZW1vdmVUZW1wbGF0ZUVsZW1lbnRzVmFsdWUoZXhwcmVzc2lvbjIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcIkpTWEF0dHJpYnV0ZVwiICYmIGFzdC5uYW1lLm5hbWUgPT09IFwiY3NzXCIgJiYgYXN0LnZhbHVlLnR5cGUgPT09IFwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lclwiICYmIGFzdC52YWx1ZS5leHByZXNzaW9uLnR5cGUgPT09IFwiVGVtcGxhdGVMaXRlcmFsXCIpIHtcbiAgICAgICAgcmVtb3ZlVGVtcGxhdGVFbGVtZW50c1ZhbHVlKG5ld09iai52YWx1ZS5leHByZXNzaW9uKTtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJKU1hBdHRyaWJ1dGVcIiAmJiBhc3QudmFsdWUgJiYgYXN0LnZhbHVlLnR5cGUgPT09IFwiTGl0ZXJhbFwiICYmIC9bXCInXXwmcXVvdDt8JmFwb3M7Ly50ZXN0KGFzdC52YWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgbmV3T2JqLnZhbHVlLnZhbHVlID0gbmV3T2JqLnZhbHVlLnZhbHVlLnJlcGxhY2UoL1tcIiddfCZxdW90O3wmYXBvczsvZywgJ1wiJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBleHByZXNzaW9uID0gYXN0LmV4cHJlc3Npb24gfHwgYXN0LmNhbGxlZTtcbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJEZWNvcmF0b3JcIiAmJiBleHByZXNzaW9uLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJiBleHByZXNzaW9uLmNhbGxlZS5uYW1lID09PSBcIkNvbXBvbmVudFwiICYmIGV4cHJlc3Npb24uYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBhc3RQcm9wcyA9IGFzdC5leHByZXNzaW9uLmFyZ3VtZW50c1swXS5wcm9wZXJ0aWVzO1xuICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgcHJvcF0gb2YgbmV3T2JqLmV4cHJlc3Npb24uYXJndW1lbnRzWzBdLnByb3BlcnRpZXMuZW50cmllcygpKSB7XG4gICAgICAgICAgc3dpdGNoIChhc3RQcm9wc1tpbmRleF0ua2V5Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHlsZXNcIjpcbiAgICAgICAgICAgICAgaWYgKHByb3AudmFsdWUudHlwZSA9PT0gXCJBcnJheUV4cHJlc3Npb25cIikge1xuICAgICAgICAgICAgICAgIHJlbW92ZVRlbXBsYXRlRWxlbWVudHNWYWx1ZShwcm9wLnZhbHVlLmVsZW1lbnRzWzBdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJ0ZW1wbGF0ZVwiOlxuICAgICAgICAgICAgICBpZiAocHJvcC52YWx1ZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlVGVtcGxhdGVFbGVtZW50c1ZhbHVlKHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcIlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvblwiICYmIChhc3QudGFnLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiIHx8IGFzdC50YWcudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgKGFzdC50YWcubmFtZSA9PT0gXCJncWxcIiB8fCBhc3QudGFnLm5hbWUgPT09IFwiZ3JhcGhxbFwiIHx8IGFzdC50YWcubmFtZSA9PT0gXCJjc3NcIiB8fCBhc3QudGFnLm5hbWUgPT09IFwibWRcIiB8fCBhc3QudGFnLm5hbWUgPT09IFwibWFya2Rvd25cIiB8fCBhc3QudGFnLm5hbWUgPT09IFwiaHRtbFwiKSB8fCBhc3QudGFnLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIikpIHtcbiAgICAgICAgcmVtb3ZlVGVtcGxhdGVFbGVtZW50c1ZhbHVlKG5ld09iai5xdWFzaSk7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwiVGVtcGxhdGVMaXRlcmFsXCIpIHtcbiAgICAgICAgdmFyIF9hc3QkbGVhZGluZ0NvbW1lbnRzO1xuICAgICAgICBjb25zdCBoYXNMYW5ndWFnZUNvbW1lbnQgPSAoX2FzdCRsZWFkaW5nQ29tbWVudHMgPSBhc3QubGVhZGluZ0NvbW1lbnRzKSA9PT0gbnVsbCB8fCBfYXN0JGxlYWRpbmdDb21tZW50cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FzdCRsZWFkaW5nQ29tbWVudHMuc29tZSgoY29tbWVudCkgPT4gaXNCbG9ja0NvbW1lbnQoY29tbWVudCkgJiYgW1wiR3JhcGhRTFwiLCBcIkhUTUxcIl0uc29tZSgobGFuZ3VhZ2VOYW1lKSA9PiBjb21tZW50LnZhbHVlID09PSBgICR7bGFuZ3VhZ2VOYW1lfSBgKSk7XG4gICAgICAgIGlmIChoYXNMYW5ndWFnZUNvbW1lbnQgfHwgcGFyZW50LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJiBwYXJlbnQuY2FsbGVlLm5hbWUgPT09IFwiZ3JhcGhxbFwiIHx8ICFhc3QubGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgICAgcmVtb3ZlVGVtcGxhdGVFbGVtZW50c1ZhbHVlKG5ld09iaik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJJbnRlcnByZXRlckRpcmVjdGl2ZVwiKSB7XG4gICAgICAgIG5ld09iai52YWx1ZSA9IG5ld09iai52YWx1ZS50cmltRW5kKCk7XG4gICAgICB9XG4gICAgICBpZiAoKGFzdC50eXBlID09PSBcIlRTSW50ZXJzZWN0aW9uVHlwZVwiIHx8IGFzdC50eXBlID09PSBcIlRTVW5pb25UeXBlXCIpICYmIGFzdC50eXBlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIG5ld09iai50eXBlc1swXTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2xlYW4uaWdub3JlZFByb3BlcnRpZXMgPSBpZ25vcmVkUHJvcGVydGllcztcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBjbGVhbjtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9kZXRlY3RfbmV3bGluZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvZGV0ZWN0LW5ld2xpbmUvaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBkZXRlY3ROZXdsaW5lID0gKHN0cmluZykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBzdHJpbmcgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIGEgc3RyaW5nXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3bGluZXMgPSBzdHJpbmcubWF0Y2goLyg/Olxccj9cXG4pL2cpIHx8IFtdO1xuICAgICAgaWYgKG5ld2xpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjcmxmID0gbmV3bGluZXMuZmlsdGVyKChuZXdsaW5lKSA9PiBuZXdsaW5lID09PSBcIlxcclxcblwiKS5sZW5ndGg7XG4gICAgICBjb25zdCBsZiA9IG5ld2xpbmVzLmxlbmd0aCAtIGNybGY7XG4gICAgICByZXR1cm4gY3JsZiA+IGxmID8gXCJcXHJcXG5cIiA6IFwiXFxuXCI7XG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBkZXRlY3ROZXdsaW5lO1xuICAgIG1vZHVsZTIuZXhwb3J0cy5ncmFjZWZ1bCA9IChzdHJpbmcpID0+IHR5cGVvZiBzdHJpbmcgPT09IFwic3RyaW5nXCIgJiYgZGV0ZWN0TmV3bGluZShzdHJpbmcpIHx8IFwiXFxuXCI7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfYnVpbGQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2plc3QtZG9jYmxvY2svYnVpbGQvaW5kZXguanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuZXh0cmFjdCA9IGV4dHJhY3Q7XG4gICAgZXhwb3J0czIucGFyc2UgPSBwYXJzZTtcbiAgICBleHBvcnRzMi5wYXJzZVdpdGhDb21tZW50cyA9IHBhcnNlV2l0aENvbW1lbnRzO1xuICAgIGV4cG9ydHMyLnByaW50ID0gcHJpbnQ7XG4gICAgZXhwb3J0czIuc3RyaXAgPSBzdHJpcDtcbiAgICBmdW5jdGlvbiBfb3MoKSB7XG4gICAgICBjb25zdCBkYXRhID0gcmVxdWlyZShcIm9zXCIpO1xuICAgICAgX29zID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZGV0ZWN0TmV3bGluZSgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmVfZGV0ZWN0X25ld2xpbmUoKSk7XG4gICAgICBfZGV0ZWN0TmV3bGluZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGNvbW1lbnRFbmRSZSA9IC9cXCpcXC8kLztcbiAgICB2YXIgY29tbWVudFN0YXJ0UmUgPSAvXlxcL1xcKlxcKi87XG4gICAgdmFyIGRvY2Jsb2NrUmUgPSAvXlxccyooXFwvXFwqXFwqPygufFxccj9cXG4pKj9cXCpcXC8pLztcbiAgICB2YXIgbGluZUNvbW1lbnRSZSA9IC8oXnxcXHMrKVxcL1xcLyhbXlxcclxcbl0qKS9nO1xuICAgIHZhciBsdHJpbU5ld2xpbmVSZSA9IC9eKFxccj9cXG4pKy87XG4gICAgdmFyIG11bHRpbGluZVJlID0gLyg/Ol58XFxyP1xcbikgKihAW15cXHJcXG5dKj8pICpcXHI/XFxuICooPyFbXkBcXHJcXG5dKlxcL1xcL1teXSopKFteQFxcclxcblxcc11bXkBcXHJcXG5dKz8pICpcXHI/XFxuL2c7XG4gICAgdmFyIHByb3BlcnR5UmUgPSAvKD86XnxcXHI/XFxuKSAqQChcXFMrKSAqKFteXFxyXFxuXSopL2c7XG4gICAgdmFyIHN0cmluZ1N0YXJ0UmUgPSAvKFxccj9cXG58XikgKlxcKiA/L2c7XG4gICAgdmFyIFNUUklOR19BUlJBWSA9IFtdO1xuICAgIGZ1bmN0aW9uIGV4dHJhY3QoY29udGVudHMpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gY29udGVudHMubWF0Y2goZG9jYmxvY2tSZSk7XG4gICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFswXS50cmltTGVmdCgpIDogXCJcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RyaXAoY29udGVudHMpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gY29udGVudHMubWF0Y2goZG9jYmxvY2tSZSk7XG4gICAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMF0gPyBjb250ZW50cy5zdWJzdHJpbmcobWF0Y2hbMF0ubGVuZ3RoKSA6IGNvbnRlbnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZShkb2NibG9jaykge1xuICAgICAgcmV0dXJuIHBhcnNlV2l0aENvbW1lbnRzKGRvY2Jsb2NrKS5wcmFnbWFzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwYXJzZVdpdGhDb21tZW50cyhkb2NibG9jaykge1xuICAgICAgY29uc3QgbGluZSA9ICgwLCBfZGV0ZWN0TmV3bGluZSgpLmRlZmF1bHQpKGRvY2Jsb2NrKSB8fCBfb3MoKS5FT0w7XG4gICAgICBkb2NibG9jayA9IGRvY2Jsb2NrLnJlcGxhY2UoY29tbWVudFN0YXJ0UmUsIFwiXCIpLnJlcGxhY2UoY29tbWVudEVuZFJlLCBcIlwiKS5yZXBsYWNlKHN0cmluZ1N0YXJ0UmUsIFwiJDFcIik7XG4gICAgICBsZXQgcHJldiA9IFwiXCI7XG4gICAgICB3aGlsZSAocHJldiAhPT0gZG9jYmxvY2spIHtcbiAgICAgICAgcHJldiA9IGRvY2Jsb2NrO1xuICAgICAgICBkb2NibG9jayA9IGRvY2Jsb2NrLnJlcGxhY2UobXVsdGlsaW5lUmUsIGAke2xpbmV9JDEgJDIke2xpbmV9YCk7XG4gICAgICB9XG4gICAgICBkb2NibG9jayA9IGRvY2Jsb2NrLnJlcGxhY2UobHRyaW1OZXdsaW5lUmUsIFwiXCIpLnRyaW1SaWdodCgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICBjb25zdCBjb21tZW50cyA9IGRvY2Jsb2NrLnJlcGxhY2UocHJvcGVydHlSZSwgXCJcIikucmVwbGFjZShsdHJpbU5ld2xpbmVSZSwgXCJcIikudHJpbVJpZ2h0KCk7XG4gICAgICBsZXQgbWF0Y2g7XG4gICAgICB3aGlsZSAobWF0Y2ggPSBwcm9wZXJ0eVJlLmV4ZWMoZG9jYmxvY2spKSB7XG4gICAgICAgIGNvbnN0IG5leHRQcmFnbWEgPSBtYXRjaFsyXS5yZXBsYWNlKGxpbmVDb21tZW50UmUsIFwiXCIpO1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdFttYXRjaFsxXV0gPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheShyZXN1bHRbbWF0Y2hbMV1dKSkge1xuICAgICAgICAgIHJlc3VsdFttYXRjaFsxXV0gPSBTVFJJTkdfQVJSQVkuY29uY2F0KHJlc3VsdFttYXRjaFsxXV0sIG5leHRQcmFnbWEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFttYXRjaFsxXV0gPSBuZXh0UHJhZ21hO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21tZW50cyxcbiAgICAgICAgcHJhZ21hczogcmVzdWx0XG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludCh7XG4gICAgICBjb21tZW50cyA9IFwiXCIsXG4gICAgICBwcmFnbWFzID0ge31cbiAgICB9KSB7XG4gICAgICBjb25zdCBsaW5lID0gKDAsIF9kZXRlY3ROZXdsaW5lKCkuZGVmYXVsdCkoY29tbWVudHMpIHx8IF9vcygpLkVPTDtcbiAgICAgIGNvbnN0IGhlYWQgPSBcIi8qKlwiO1xuICAgICAgY29uc3Qgc3RhcnQgPSBcIiAqXCI7XG4gICAgICBjb25zdCB0YWlsID0gXCIgKi9cIjtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcmFnbWFzKTtcbiAgICAgIGNvbnN0IHByaW50ZWRPYmplY3QgPSBrZXlzLm1hcCgoa2V5KSA9PiBwcmludEtleVZhbHVlcyhrZXksIHByYWdtYXNba2V5XSkpLnJlZHVjZSgoYXJyLCBuZXh0KSA9PiBhcnIuY29uY2F0KG5leHQpLCBbXSkubWFwKChrZXlWYWx1ZSkgPT4gc3RhcnQgKyBcIiBcIiArIGtleVZhbHVlICsgbGluZSkuam9pbihcIlwiKTtcbiAgICAgIGlmICghY29tbWVudHMpIHtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAxICYmICFBcnJheS5pc0FycmF5KHByYWdtYXNba2V5c1swXV0pKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwcmFnbWFzW2tleXNbMF1dO1xuICAgICAgICAgIHJldHVybiBgJHtoZWFkfSAke3ByaW50S2V5VmFsdWVzKGtleXNbMF0sIHZhbHVlKVswXX0ke3RhaWx9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcHJpbnRlZENvbW1lbnRzID0gY29tbWVudHMuc3BsaXQobGluZSkubWFwKCh0ZXh0TGluZSkgPT4gYCR7c3RhcnR9ICR7dGV4dExpbmV9YCkuam9pbihsaW5lKSArIGxpbmU7XG4gICAgICByZXR1cm4gaGVhZCArIGxpbmUgKyAoY29tbWVudHMgPyBwcmludGVkQ29tbWVudHMgOiBcIlwiKSArIChjb21tZW50cyAmJiBrZXlzLmxlbmd0aCA/IHN0YXJ0ICsgbGluZSA6IFwiXCIpICsgcHJpbnRlZE9iamVjdCArIHRhaWw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50S2V5VmFsdWVzKGtleSwgdmFsdWVPckFycmF5KSB7XG4gICAgICByZXR1cm4gU1RSSU5HX0FSUkFZLmNvbmNhdCh2YWx1ZU9yQXJyYXkpLm1hcCgodmFsdWUpID0+IGBAJHtrZXl9ICR7dmFsdWV9YC50cmltKCkpO1xuICAgIH1cbiAgfVxufSk7XG52YXIgcmVxdWlyZV9nZXRfc2hlYmFuZyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvdXRpbHMvZ2V0LXNoZWJhbmcuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIGdldFNoZWJhbmcodGV4dCkge1xuICAgICAgaWYgKCF0ZXh0LnN0YXJ0c1dpdGgoXCIjIVwiKSkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4ID0gdGV4dC5pbmRleE9mKFwiXFxuXCIpO1xuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0LnNsaWNlKDAsIGluZGV4KTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZ2V0U2hlYmFuZztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wcmFnbWEgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByYWdtYS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIHBhcnNlV2l0aENvbW1lbnRzLFxuICAgICAgc3RyaXAsXG4gICAgICBleHRyYWN0LFxuICAgICAgcHJpbnRcbiAgICB9ID0gcmVxdWlyZV9idWlsZCgpO1xuICAgIHZhciB7XG4gICAgICBub3JtYWxpemVFbmRPZkxpbmVcbiAgICB9ID0gcmVxdWlyZV9lbmRfb2ZfbGluZSgpO1xuICAgIHZhciBnZXRTaGViYW5nID0gcmVxdWlyZV9nZXRfc2hlYmFuZygpO1xuICAgIGZ1bmN0aW9uIHBhcnNlRG9jQmxvY2sodGV4dCkge1xuICAgICAgY29uc3Qgc2hlYmFuZyA9IGdldFNoZWJhbmcodGV4dCk7XG4gICAgICBpZiAoc2hlYmFuZykge1xuICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZShzaGViYW5nLmxlbmd0aCArIDEpO1xuICAgICAgfVxuICAgICAgY29uc3QgZG9jQmxvY2sgPSBleHRyYWN0KHRleHQpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwcmFnbWFzLFxuICAgICAgICBjb21tZW50c1xuICAgICAgfSA9IHBhcnNlV2l0aENvbW1lbnRzKGRvY0Jsb2NrKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNoZWJhbmcsXG4gICAgICAgIHRleHQsXG4gICAgICAgIHByYWdtYXMsXG4gICAgICAgIGNvbW1lbnRzXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNQcmFnbWEodGV4dCkge1xuICAgICAgY29uc3QgcHJhZ21hcyA9IE9iamVjdC5rZXlzKHBhcnNlRG9jQmxvY2sodGV4dCkucHJhZ21hcyk7XG4gICAgICByZXR1cm4gcHJhZ21hcy5pbmNsdWRlcyhcInByZXR0aWVyXCIpIHx8IHByYWdtYXMuaW5jbHVkZXMoXCJmb3JtYXRcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluc2VydFByYWdtYShvcmlnaW5hbFRleHQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc2hlYmFuZyxcbiAgICAgICAgdGV4dCxcbiAgICAgICAgcHJhZ21hcyxcbiAgICAgICAgY29tbWVudHNcbiAgICAgIH0gPSBwYXJzZURvY0Jsb2NrKG9yaWdpbmFsVGV4dCk7XG4gICAgICBjb25zdCBzdHJpcHBlZFRleHQgPSBzdHJpcCh0ZXh0KTtcbiAgICAgIGNvbnN0IGRvY0Jsb2NrID0gcHJpbnQoe1xuICAgICAgICBwcmFnbWFzOiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBmb3JtYXQ6IFwiXCJcbiAgICAgICAgfSwgcHJhZ21hcyksXG4gICAgICAgIGNvbW1lbnRzOiBjb21tZW50cy50cmltU3RhcnQoKVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKHNoZWJhbmcgPyBgJHtzaGViYW5nfVxuYCA6IFwiXCIpICsgbm9ybWFsaXplRW5kT2ZMaW5lKGRvY0Jsb2NrKSArIChzdHJpcHBlZFRleHQuc3RhcnRzV2l0aChcIlxcblwiKSA/IFwiXFxuXCIgOiBcIlxcblxcblwiKSArIHN0cmlwcGVkVGV4dDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgaGFzUHJhZ21hLFxuICAgICAgaW5zZXJ0UHJhZ21hXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb21tZW50czIgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL2NvbW1lbnRzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgZ2V0TGFzdCxcbiAgICAgIGhhc05ld2xpbmUsXG4gICAgICBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXhXaXRoU3RhcnRJbmRleCxcbiAgICAgIGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXIsXG4gICAgICBoYXNOZXdsaW5lSW5SYW5nZSxcbiAgICAgIGFkZExlYWRpbmdDb21tZW50LFxuICAgICAgYWRkVHJhaWxpbmdDb21tZW50LFxuICAgICAgYWRkRGFuZ2xpbmdDb21tZW50LFxuICAgICAgZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4LFxuICAgICAgaXNOb25FbXB0eUFycmF5XG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBnZXRGdW5jdGlvblBhcmFtZXRlcnMsXG4gICAgICBpc1ByZXR0aWVySWdub3JlQ29tbWVudCxcbiAgICAgIGlzSnN4Tm9kZSxcbiAgICAgIGhhc0Zsb3dTaG9ydGhhbmRBbm5vdGF0aW9uQ29tbWVudCxcbiAgICAgIGhhc0Zsb3dBbm5vdGF0aW9uQ29tbWVudCxcbiAgICAgIGhhc0lnbm9yZUNvbW1lbnQsXG4gICAgICBpc0NhbGxMaWtlRXhwcmVzc2lvbixcbiAgICAgIGdldENhbGxBcmd1bWVudHMsXG4gICAgICBpc0NhbGxFeHByZXNzaW9uLFxuICAgICAgaXNNZW1iZXJFeHByZXNzaW9uLFxuICAgICAgaXNPYmplY3RQcm9wZXJ0eSxcbiAgICAgIGlzTGluZUNvbW1lbnQsXG4gICAgICBnZXRDb21tZW50cyxcbiAgICAgIENvbW1lbnRDaGVja0ZsYWdzLFxuICAgICAgbWFya2VyRm9ySWZXaXRob3V0QmxvY2tBbmRTYW1lTGluZUNvbW1lbnRcbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICB2YXIge1xuICAgICAgbG9jU3RhcnQsXG4gICAgICBsb2NFbmRcbiAgICB9ID0gcmVxdWlyZV9sb2MoKTtcbiAgICB2YXIgaXNCbG9ja0NvbW1lbnQgPSByZXF1aXJlX2lzX2Jsb2NrX2NvbW1lbnQoKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVPd25MaW5lQ29tbWVudChjb250ZXh0KSB7XG4gICAgICByZXR1cm4gW2hhbmRsZUlnbm9yZUNvbW1lbnRzLCBoYW5kbGVMYXN0RnVuY3Rpb25BcmdDb21tZW50cywgaGFuZGxlTWVtYmVyRXhwcmVzc2lvbkNvbW1lbnRzLCBoYW5kbGVJZlN0YXRlbWVudENvbW1lbnRzLCBoYW5kbGVXaGlsZUNvbW1lbnRzLCBoYW5kbGVUcnlTdGF0ZW1lbnRDb21tZW50cywgaGFuZGxlQ2xhc3NDb21tZW50cywgaGFuZGxlRm9yQ29tbWVudHMsIGhhbmRsZVVuaW9uVHlwZUNvbW1lbnRzLCBoYW5kbGVPbmx5Q29tbWVudHMsIGhhbmRsZU1vZHVsZVNwZWNpZmllcnNDb21tZW50cywgaGFuZGxlQXNzaWdubWVudFBhdHRlcm5Db21tZW50cywgaGFuZGxlTWV0aG9kTmFtZUNvbW1lbnRzLCBoYW5kbGVMYWJlbGVkU3RhdGVtZW50Q29tbWVudHMsIGhhbmRsZUJyZWFrQW5kQ29udGludWVTdGF0ZW1lbnRDb21tZW50c10uc29tZSgoZm4pID0+IGZuKGNvbnRleHQpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlRW5kT2ZMaW5lQ29tbWVudChjb250ZXh0KSB7XG4gICAgICByZXR1cm4gW2hhbmRsZUNsb3N1cmVUeXBlQ2FzdENvbW1lbnRzLCBoYW5kbGVMYXN0RnVuY3Rpb25BcmdDb21tZW50cywgaGFuZGxlQ29uZGl0aW9uYWxFeHByZXNzaW9uQ29tbWVudHMsIGhhbmRsZU1vZHVsZVNwZWNpZmllcnNDb21tZW50cywgaGFuZGxlSWZTdGF0ZW1lbnRDb21tZW50cywgaGFuZGxlV2hpbGVDb21tZW50cywgaGFuZGxlVHJ5U3RhdGVtZW50Q29tbWVudHMsIGhhbmRsZUNsYXNzQ29tbWVudHMsIGhhbmRsZUxhYmVsZWRTdGF0ZW1lbnRDb21tZW50cywgaGFuZGxlQ2FsbEV4cHJlc3Npb25Db21tZW50cywgaGFuZGxlUHJvcGVydHlDb21tZW50cywgaGFuZGxlT25seUNvbW1lbnRzLCBoYW5kbGVWYXJpYWJsZURlY2xhcmF0b3JDb21tZW50cywgaGFuZGxlQnJlYWtBbmRDb250aW51ZVN0YXRlbWVudENvbW1lbnRzLCBoYW5kbGVTd2l0Y2hEZWZhdWx0Q2FzZUNvbW1lbnRzXS5zb21lKChmbikgPT4gZm4oY29udGV4dCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVSZW1haW5pbmdDb21tZW50KGNvbnRleHQpIHtcbiAgICAgIHJldHVybiBbaGFuZGxlSWdub3JlQ29tbWVudHMsIGhhbmRsZUlmU3RhdGVtZW50Q29tbWVudHMsIGhhbmRsZVdoaWxlQ29tbWVudHMsIGhhbmRsZU9iamVjdFByb3BlcnR5QXNzaWdubWVudCwgaGFuZGxlQ29tbWVudEluRW1wdHlQYXJlbnMsIGhhbmRsZU1ldGhvZE5hbWVDb21tZW50cywgaGFuZGxlT25seUNvbW1lbnRzLCBoYW5kbGVDb21tZW50QWZ0ZXJBcnJvd1BhcmFtcywgaGFuZGxlRnVuY3Rpb25OYW1lQ29tbWVudHMsIGhhbmRsZVRTTWFwcGVkVHlwZUNvbW1lbnRzLCBoYW5kbGVCcmVha0FuZENvbnRpbnVlU3RhdGVtZW50Q29tbWVudHMsIGhhbmRsZVRTRnVuY3Rpb25UcmFpbGluZ0NvbW1lbnRzXS5zb21lKChmbikgPT4gZm4oY29udGV4dCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRCbG9ja1N0YXRlbWVudEZpcnN0Q29tbWVudChub2RlLCBjb21tZW50KSB7XG4gICAgICBjb25zdCBmaXJzdE5vbkVtcHR5Tm9kZSA9IChub2RlLmJvZHkgfHwgbm9kZS5wcm9wZXJ0aWVzKS5maW5kKCh7XG4gICAgICAgIHR5cGVcbiAgICAgIH0pID0+IHR5cGUgIT09IFwiRW1wdHlTdGF0ZW1lbnRcIik7XG4gICAgICBpZiAoZmlyc3ROb25FbXB0eU5vZGUpIHtcbiAgICAgICAgYWRkTGVhZGluZ0NvbW1lbnQoZmlyc3ROb25FbXB0eU5vZGUsIGNvbW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KG5vZGUsIGNvbW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRCbG9ja09yTm90Q29tbWVudChub2RlLCBjb21tZW50KSB7XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIkJsb2NrU3RhdGVtZW50XCIpIHtcbiAgICAgICAgYWRkQmxvY2tTdGF0ZW1lbnRGaXJzdENvbW1lbnQobm9kZSwgY29tbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRMZWFkaW5nQ29tbWVudChub2RlLCBjb21tZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xvc3VyZVR5cGVDYXN0Q29tbWVudHMoe1xuICAgICAgY29tbWVudCxcbiAgICAgIGZvbGxvd2luZ05vZGVcbiAgICB9KSB7XG4gICAgICBpZiAoZm9sbG93aW5nTm9kZSAmJiBpc1R5cGVDYXN0Q29tbWVudChjb21tZW50KSkge1xuICAgICAgICBhZGRMZWFkaW5nQ29tbWVudChmb2xsb3dpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUlmU3RhdGVtZW50Q29tbWVudHMoe1xuICAgICAgY29tbWVudCxcbiAgICAgIHByZWNlZGluZ05vZGUsXG4gICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgZm9sbG93aW5nTm9kZSxcbiAgICAgIHRleHRcbiAgICB9KSB7XG4gICAgICBpZiAoKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSAhPT0gXCJJZlN0YXRlbWVudFwiIHx8ICFmb2xsb3dpbmdOb2RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5leHRDaGFyYWN0ZXIgPSBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVyKHRleHQsIGNvbW1lbnQsIGxvY0VuZCk7XG4gICAgICBpZiAobmV4dENoYXJhY3RlciA9PT0gXCIpXCIpIHtcbiAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KHByZWNlZGluZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcmVjZWRpbmdOb2RlID09PSBlbmNsb3NpbmdOb2RlLmNvbnNlcXVlbnQgJiYgZm9sbG93aW5nTm9kZSA9PT0gZW5jbG9zaW5nTm9kZS5hbHRlcm5hdGUpIHtcbiAgICAgICAgaWYgKHByZWNlZGluZ05vZGUudHlwZSA9PT0gXCJCbG9ja1N0YXRlbWVudFwiKSB7XG4gICAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KHByZWNlZGluZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGlzU2luZ2xlTGluZUNvbW1lbnQgPSBjb21tZW50LnR5cGUgPT09IFwiU2luZ2xlTGluZVwiIHx8IGNvbW1lbnQubG9jLnN0YXJ0LmxpbmUgPT09IGNvbW1lbnQubG9jLmVuZC5saW5lO1xuICAgICAgICAgIGNvbnN0IGlzU2FtZUxpbmVDb21tZW50ID0gY29tbWVudC5sb2Muc3RhcnQubGluZSA9PT0gcHJlY2VkaW5nTm9kZS5sb2Muc3RhcnQubGluZTtcbiAgICAgICAgICBpZiAoaXNTaW5nbGVMaW5lQ29tbWVudCAmJiBpc1NhbWVMaW5lQ29tbWVudCkge1xuICAgICAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KHByZWNlZGluZ05vZGUsIGNvbW1lbnQsIG1hcmtlckZvcklmV2l0aG91dEJsb2NrQW5kU2FtZUxpbmVDb21tZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChmb2xsb3dpbmdOb2RlLnR5cGUgPT09IFwiQmxvY2tTdGF0ZW1lbnRcIikge1xuICAgICAgICBhZGRCbG9ja1N0YXRlbWVudEZpcnN0Q29tbWVudChmb2xsb3dpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZm9sbG93aW5nTm9kZS50eXBlID09PSBcIklmU3RhdGVtZW50XCIpIHtcbiAgICAgICAgYWRkQmxvY2tPck5vdENvbW1lbnQoZm9sbG93aW5nTm9kZS5jb25zZXF1ZW50LCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZW5jbG9zaW5nTm9kZS5jb25zZXF1ZW50ID09PSBmb2xsb3dpbmdOb2RlKSB7XG4gICAgICAgIGFkZExlYWRpbmdDb21tZW50KGZvbGxvd2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlV2hpbGVDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgcHJlY2VkaW5nTm9kZSxcbiAgICAgIGVuY2xvc2luZ05vZGUsXG4gICAgICBmb2xsb3dpbmdOb2RlLFxuICAgICAgdGV4dFxuICAgIH0pIHtcbiAgICAgIGlmICgoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpICE9PSBcIldoaWxlU3RhdGVtZW50XCIgfHwgIWZvbGxvd2luZ05vZGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV4dENoYXJhY3RlciA9IGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXIodGV4dCwgY29tbWVudCwgbG9jRW5kKTtcbiAgICAgIGlmIChuZXh0Q2hhcmFjdGVyID09PSBcIilcIikge1xuICAgICAgICBhZGRUcmFpbGluZ0NvbW1lbnQocHJlY2VkaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGZvbGxvd2luZ05vZGUudHlwZSA9PT0gXCJCbG9ja1N0YXRlbWVudFwiKSB7XG4gICAgICAgIGFkZEJsb2NrU3RhdGVtZW50Rmlyc3RDb21tZW50KGZvbGxvd2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNsb3NpbmdOb2RlLmJvZHkgPT09IGZvbGxvd2luZ05vZGUpIHtcbiAgICAgICAgYWRkTGVhZGluZ0NvbW1lbnQoZm9sbG93aW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVUcnlTdGF0ZW1lbnRDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgcHJlY2VkaW5nTm9kZSxcbiAgICAgIGVuY2xvc2luZ05vZGUsXG4gICAgICBmb2xsb3dpbmdOb2RlXG4gICAgfSkge1xuICAgICAgaWYgKChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgIT09IFwiVHJ5U3RhdGVtZW50XCIgJiYgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSAhPT0gXCJDYXRjaENsYXVzZVwiIHx8ICFmb2xsb3dpbmdOb2RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNsb3NpbmdOb2RlLnR5cGUgPT09IFwiQ2F0Y2hDbGF1c2VcIiAmJiBwcmVjZWRpbmdOb2RlKSB7XG4gICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChwcmVjZWRpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZm9sbG93aW5nTm9kZS50eXBlID09PSBcIkJsb2NrU3RhdGVtZW50XCIpIHtcbiAgICAgICAgYWRkQmxvY2tTdGF0ZW1lbnRGaXJzdENvbW1lbnQoZm9sbG93aW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGZvbGxvd2luZ05vZGUudHlwZSA9PT0gXCJUcnlTdGF0ZW1lbnRcIikge1xuICAgICAgICBhZGRCbG9ja09yTm90Q29tbWVudChmb2xsb3dpbmdOb2RlLmZpbmFsaXplciwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGZvbGxvd2luZ05vZGUudHlwZSA9PT0gXCJDYXRjaENsYXVzZVwiKSB7XG4gICAgICAgIGFkZEJsb2NrT3JOb3RDb21tZW50KGZvbGxvd2luZ05vZGUuYm9keSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNZW1iZXJFeHByZXNzaW9uQ29tbWVudHMoe1xuICAgICAgY29tbWVudCxcbiAgICAgIGVuY2xvc2luZ05vZGUsXG4gICAgICBmb2xsb3dpbmdOb2RlXG4gICAgfSkge1xuICAgICAgaWYgKGlzTWVtYmVyRXhwcmVzc2lvbihlbmNsb3NpbmdOb2RlKSAmJiAoZm9sbG93aW5nTm9kZSA9PT0gbnVsbCB8fCBmb2xsb3dpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2xsb3dpbmdOb2RlLnR5cGUpID09PSBcIklkZW50aWZpZXJcIikge1xuICAgICAgICBhZGRMZWFkaW5nQ29tbWVudChlbmNsb3NpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUNvbmRpdGlvbmFsRXhwcmVzc2lvbkNvbW1lbnRzKHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBwcmVjZWRpbmdOb2RlLFxuICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgIGZvbGxvd2luZ05vZGUsXG4gICAgICB0ZXh0XG4gICAgfSkge1xuICAgICAgY29uc3QgaXNTYW1lTGluZUFzUHJlY2VkaW5nTm9kZSA9IHByZWNlZGluZ05vZGUgJiYgIWhhc05ld2xpbmVJblJhbmdlKHRleHQsIGxvY0VuZChwcmVjZWRpbmdOb2RlKSwgbG9jU3RhcnQoY29tbWVudCkpO1xuICAgICAgaWYgKCghcHJlY2VkaW5nTm9kZSB8fCAhaXNTYW1lTGluZUFzUHJlY2VkaW5nTm9kZSkgJiYgKChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIgfHwgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJUU0NvbmRpdGlvbmFsVHlwZVwiKSAmJiBmb2xsb3dpbmdOb2RlKSB7XG4gICAgICAgIGFkZExlYWRpbmdDb21tZW50KGZvbGxvd2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JqZWN0UHJvcGVydHlBc3NpZ25tZW50KHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBwcmVjZWRpbmdOb2RlLFxuICAgICAgZW5jbG9zaW5nTm9kZVxuICAgIH0pIHtcbiAgICAgIGlmIChpc09iamVjdFByb3BlcnR5KGVuY2xvc2luZ05vZGUpICYmIGVuY2xvc2luZ05vZGUuc2hvcnRoYW5kICYmIGVuY2xvc2luZ05vZGUua2V5ID09PSBwcmVjZWRpbmdOb2RlICYmIGVuY2xvc2luZ05vZGUudmFsdWUudHlwZSA9PT0gXCJBc3NpZ25tZW50UGF0dGVyblwiKSB7XG4gICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChlbmNsb3NpbmdOb2RlLnZhbHVlLmxlZnQsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGNsYXNzTGlrZU5vZGVUeXBlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcIkNsYXNzRGVjbGFyYXRpb25cIiwgXCJDbGFzc0V4cHJlc3Npb25cIiwgXCJEZWNsYXJlQ2xhc3NcIiwgXCJEZWNsYXJlSW50ZXJmYWNlXCIsIFwiSW50ZXJmYWNlRGVjbGFyYXRpb25cIiwgXCJUU0ludGVyZmFjZURlY2xhcmF0aW9uXCJdKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGFzc0NvbW1lbnRzKHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBwcmVjZWRpbmdOb2RlLFxuICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgIGZvbGxvd2luZ05vZGVcbiAgICB9KSB7XG4gICAgICBpZiAoY2xhc3NMaWtlTm9kZVR5cGVzLmhhcyhlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkpIHtcbiAgICAgICAgaWYgKGlzTm9uRW1wdHlBcnJheShlbmNsb3NpbmdOb2RlLmRlY29yYXRvcnMpICYmICEoZm9sbG93aW5nTm9kZSAmJiBmb2xsb3dpbmdOb2RlLnR5cGUgPT09IFwiRGVjb3JhdG9yXCIpKSB7XG4gICAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KGdldExhc3QoZW5jbG9zaW5nTm9kZS5kZWNvcmF0b3JzKSwgY29tbWVudCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuY2xvc2luZ05vZGUuYm9keSAmJiBmb2xsb3dpbmdOb2RlID09PSBlbmNsb3NpbmdOb2RlLmJvZHkpIHtcbiAgICAgICAgICBhZGRCbG9ja1N0YXRlbWVudEZpcnN0Q29tbWVudChlbmNsb3NpbmdOb2RlLmJvZHksIGNvbW1lbnQpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb2xsb3dpbmdOb2RlKSB7XG4gICAgICAgICAgaWYgKGVuY2xvc2luZ05vZGUuc3VwZXJDbGFzcyAmJiBmb2xsb3dpbmdOb2RlID09PSBlbmNsb3NpbmdOb2RlLnN1cGVyQ2xhc3MgJiYgcHJlY2VkaW5nTm9kZSAmJiAocHJlY2VkaW5nTm9kZSA9PT0gZW5jbG9zaW5nTm9kZS5pZCB8fCBwcmVjZWRpbmdOb2RlID09PSBlbmNsb3NpbmdOb2RlLnR5cGVQYXJhbWV0ZXJzKSkge1xuICAgICAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KHByZWNlZGluZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBbXCJpbXBsZW1lbnRzXCIsIFwiZXh0ZW5kc1wiLCBcIm1peGluc1wiXSkge1xuICAgICAgICAgICAgaWYgKGVuY2xvc2luZ05vZGVbcHJvcF0gJiYgZm9sbG93aW5nTm9kZSA9PT0gZW5jbG9zaW5nTm9kZVtwcm9wXVswXSkge1xuICAgICAgICAgICAgICBpZiAocHJlY2VkaW5nTm9kZSAmJiAocHJlY2VkaW5nTm9kZSA9PT0gZW5jbG9zaW5nTm9kZS5pZCB8fCBwcmVjZWRpbmdOb2RlID09PSBlbmNsb3NpbmdOb2RlLnR5cGVQYXJhbWV0ZXJzIHx8IHByZWNlZGluZ05vZGUgPT09IGVuY2xvc2luZ05vZGUuc3VwZXJDbGFzcykpIHtcbiAgICAgICAgICAgICAgICBhZGRUcmFpbGluZ0NvbW1lbnQocHJlY2VkaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQsIHByb3ApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcHJvcGVydHlMaWtlTm9kZVR5cGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wiQ2xhc3NNZXRob2RcIiwgXCJDbGFzc1Byb3BlcnR5XCIsIFwiUHJvcGVydHlEZWZpbml0aW9uXCIsIFwiVFNBYnN0cmFjdFByb3BlcnR5RGVmaW5pdGlvblwiLCBcIlRTQWJzdHJhY3RNZXRob2REZWZpbml0aW9uXCIsIFwiVFNEZWNsYXJlTWV0aG9kXCIsIFwiTWV0aG9kRGVmaW5pdGlvblwiXSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlTWV0aG9kTmFtZUNvbW1lbnRzKHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBwcmVjZWRpbmdOb2RlLFxuICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgIHRleHRcbiAgICB9KSB7XG4gICAgICBpZiAoZW5jbG9zaW5nTm9kZSAmJiBwcmVjZWRpbmdOb2RlICYmIGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXIodGV4dCwgY29tbWVudCwgbG9jRW5kKSA9PT0gXCIoXCIgJiYgKGVuY2xvc2luZ05vZGUudHlwZSA9PT0gXCJQcm9wZXJ0eVwiIHx8IGVuY2xvc2luZ05vZGUudHlwZSA9PT0gXCJUU0RlY2xhcmVNZXRob2RcIiB8fCBlbmNsb3NpbmdOb2RlLnR5cGUgPT09IFwiVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb25cIikgJiYgcHJlY2VkaW5nTm9kZS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiBlbmNsb3NpbmdOb2RlLmtleSA9PT0gcHJlY2VkaW5nTm9kZSAmJiBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVyKHRleHQsIHByZWNlZGluZ05vZGUsIGxvY0VuZCkgIT09IFwiOlwiKSB7XG4gICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChwcmVjZWRpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoKHByZWNlZGluZ05vZGUgPT09IG51bGwgfHwgcHJlY2VkaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJlY2VkaW5nTm9kZS50eXBlKSA9PT0gXCJEZWNvcmF0b3JcIiAmJiBwcm9wZXJ0eUxpa2VOb2RlVHlwZXMuaGFzKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSkge1xuICAgICAgICBhZGRUcmFpbGluZ0NvbW1lbnQocHJlY2VkaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgZnVuY3Rpb25MaWtlTm9kZVR5cGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wiRnVuY3Rpb25EZWNsYXJhdGlvblwiLCBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiLCBcIkNsYXNzTWV0aG9kXCIsIFwiTWV0aG9kRGVmaW5pdGlvblwiLCBcIk9iamVjdE1ldGhvZFwiXSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlRnVuY3Rpb25OYW1lQ29tbWVudHMoe1xuICAgICAgY29tbWVudCxcbiAgICAgIHByZWNlZGluZ05vZGUsXG4gICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgdGV4dFxuICAgIH0pIHtcbiAgICAgIGlmIChnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVyKHRleHQsIGNvbW1lbnQsIGxvY0VuZCkgIT09IFwiKFwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcmVjZWRpbmdOb2RlICYmIGZ1bmN0aW9uTGlrZU5vZGVUeXBlcy5oYXMoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpKSB7XG4gICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChwcmVjZWRpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUNvbW1lbnRBZnRlckFycm93UGFyYW1zKHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgdGV4dFxuICAgIH0pIHtcbiAgICAgIGlmICghKChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXgodGV4dCwgY29tbWVudCwgbG9jRW5kKTtcbiAgICAgIGlmIChpbmRleCAhPT0gZmFsc2UgJiYgdGV4dC5zbGljZShpbmRleCwgaW5kZXggKyAyKSA9PT0gXCI9PlwiKSB7XG4gICAgICAgIGFkZERhbmdsaW5nQ29tbWVudChlbmNsb3NpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUNvbW1lbnRJbkVtcHR5UGFyZW5zKHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgdGV4dFxuICAgIH0pIHtcbiAgICAgIGlmIChnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVyKHRleHQsIGNvbW1lbnQsIGxvY0VuZCkgIT09IFwiKVwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNsb3NpbmdOb2RlICYmIChpc1JlYWxGdW5jdGlvbkxpa2VOb2RlKGVuY2xvc2luZ05vZGUpICYmIGdldEZ1bmN0aW9uUGFyYW1ldGVycyhlbmNsb3NpbmdOb2RlKS5sZW5ndGggPT09IDAgfHwgaXNDYWxsTGlrZUV4cHJlc3Npb24oZW5jbG9zaW5nTm9kZSkgJiYgZ2V0Q2FsbEFyZ3VtZW50cyhlbmNsb3NpbmdOb2RlKS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIGFkZERhbmdsaW5nQ29tbWVudChlbmNsb3NpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoKChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiTWV0aG9kRGVmaW5pdGlvblwiIHx8IChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb25cIikgJiYgZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKGVuY2xvc2luZ05vZGUudmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBhZGREYW5nbGluZ0NvbW1lbnQoZW5jbG9zaW5nTm9kZS52YWx1ZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVMYXN0RnVuY3Rpb25BcmdDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgcHJlY2VkaW5nTm9kZSxcbiAgICAgIGVuY2xvc2luZ05vZGUsXG4gICAgICBmb2xsb3dpbmdOb2RlLFxuICAgICAgdGV4dFxuICAgIH0pIHtcbiAgICAgIGlmICgocHJlY2VkaW5nTm9kZSA9PT0gbnVsbCB8fCBwcmVjZWRpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmVjZWRpbmdOb2RlLnR5cGUpID09PSBcIkZ1bmN0aW9uVHlwZVBhcmFtXCIgJiYgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJGdW5jdGlvblR5cGVBbm5vdGF0aW9uXCIgJiYgKGZvbGxvd2luZ05vZGUgPT09IG51bGwgfHwgZm9sbG93aW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZm9sbG93aW5nTm9kZS50eXBlKSAhPT0gXCJGdW5jdGlvblR5cGVQYXJhbVwiKSB7XG4gICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChwcmVjZWRpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoKChwcmVjZWRpbmdOb2RlID09PSBudWxsIHx8IHByZWNlZGluZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZWNlZGluZ05vZGUudHlwZSkgPT09IFwiSWRlbnRpZmllclwiIHx8IChwcmVjZWRpbmdOb2RlID09PSBudWxsIHx8IHByZWNlZGluZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZWNlZGluZ05vZGUudHlwZSkgPT09IFwiQXNzaWdubWVudFBhdHRlcm5cIikgJiYgZW5jbG9zaW5nTm9kZSAmJiBpc1JlYWxGdW5jdGlvbkxpa2VOb2RlKGVuY2xvc2luZ05vZGUpICYmIGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXIodGV4dCwgY29tbWVudCwgbG9jRW5kKSA9PT0gXCIpXCIpIHtcbiAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KHByZWNlZGluZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICgoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpID09PSBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIiAmJiAoZm9sbG93aW5nTm9kZSA9PT0gbnVsbCB8fCBmb2xsb3dpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2xsb3dpbmdOb2RlLnR5cGUpID09PSBcIkJsb2NrU3RhdGVtZW50XCIpIHtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25QYXJhbVJpZ2h0UGFyZW5JbmRleCA9ICgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IGdldEZ1bmN0aW9uUGFyYW1ldGVycyhlbmNsb3NpbmdOb2RlKTtcbiAgICAgICAgICBpZiAocGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4V2l0aFN0YXJ0SW5kZXgodGV4dCwgbG9jRW5kKGdldExhc3QocGFyYW1ldGVycykpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZnVuY3Rpb25QYXJhbUxlZnRQYXJlbkluZGV4ID0gZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4V2l0aFN0YXJ0SW5kZXgodGV4dCwgbG9jRW5kKGVuY2xvc2luZ05vZGUuaWQpKTtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb25QYXJhbUxlZnRQYXJlbkluZGV4ICE9PSBmYWxzZSAmJiBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXhXaXRoU3RhcnRJbmRleCh0ZXh0LCBmdW5jdGlvblBhcmFtTGVmdFBhcmVuSW5kZXggKyAxKTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgaWYgKGxvY1N0YXJ0KGNvbW1lbnQpID4gZnVuY3Rpb25QYXJhbVJpZ2h0UGFyZW5JbmRleCkge1xuICAgICAgICAgIGFkZEJsb2NrU3RhdGVtZW50Rmlyc3RDb21tZW50KGZvbGxvd2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUxhYmVsZWRTdGF0ZW1lbnRDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgZW5jbG9zaW5nTm9kZVxuICAgIH0pIHtcbiAgICAgIGlmICgoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpID09PSBcIkxhYmVsZWRTdGF0ZW1lbnRcIikge1xuICAgICAgICBhZGRMZWFkaW5nQ29tbWVudChlbmNsb3NpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUJyZWFrQW5kQ29udGludWVTdGF0ZW1lbnRDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgZW5jbG9zaW5nTm9kZVxuICAgIH0pIHtcbiAgICAgIGlmICgoKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJDb250aW51ZVN0YXRlbWVudFwiIHx8IChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiQnJlYWtTdGF0ZW1lbnRcIikgJiYgIWVuY2xvc2luZ05vZGUubGFiZWwpIHtcbiAgICAgICAgYWRkVHJhaWxpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2FsbEV4cHJlc3Npb25Db21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgcHJlY2VkaW5nTm9kZSxcbiAgICAgIGVuY2xvc2luZ05vZGVcbiAgICB9KSB7XG4gICAgICBpZiAoaXNDYWxsRXhwcmVzc2lvbihlbmNsb3NpbmdOb2RlKSAmJiBwcmVjZWRpbmdOb2RlICYmIGVuY2xvc2luZ05vZGUuY2FsbGVlID09PSBwcmVjZWRpbmdOb2RlICYmIGVuY2xvc2luZ05vZGUuYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWRkTGVhZGluZ0NvbW1lbnQoZW5jbG9zaW5nTm9kZS5hcmd1bWVudHNbMF0sIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlVW5pb25UeXBlQ29tbWVudHMoe1xuICAgICAgY29tbWVudCxcbiAgICAgIHByZWNlZGluZ05vZGUsXG4gICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgZm9sbG93aW5nTm9kZVxuICAgIH0pIHtcbiAgICAgIGlmICgoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpID09PSBcIlVuaW9uVHlwZUFubm90YXRpb25cIiB8fCAoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpID09PSBcIlRTVW5pb25UeXBlXCIpIHtcbiAgICAgICAgaWYgKGlzUHJldHRpZXJJZ25vcmVDb21tZW50KGNvbW1lbnQpKSB7XG4gICAgICAgICAgZm9sbG93aW5nTm9kZS5wcmV0dGllcklnbm9yZSA9IHRydWU7XG4gICAgICAgICAgY29tbWVudC51bmlnbm9yZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZWNlZGluZ05vZGUpIHtcbiAgICAgICAgICBhZGRUcmFpbGluZ0NvbW1lbnQocHJlY2VkaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCgoZm9sbG93aW5nTm9kZSA9PT0gbnVsbCB8fCBmb2xsb3dpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2xsb3dpbmdOb2RlLnR5cGUpID09PSBcIlVuaW9uVHlwZUFubm90YXRpb25cIiB8fCAoZm9sbG93aW5nTm9kZSA9PT0gbnVsbCB8fCBmb2xsb3dpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2xsb3dpbmdOb2RlLnR5cGUpID09PSBcIlRTVW5pb25UeXBlXCIpICYmIGlzUHJldHRpZXJJZ25vcmVDb21tZW50KGNvbW1lbnQpKSB7XG4gICAgICAgIGZvbGxvd2luZ05vZGUudHlwZXNbMF0ucHJldHRpZXJJZ25vcmUgPSB0cnVlO1xuICAgICAgICBjb21tZW50LnVuaWdub3JlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgZW5jbG9zaW5nTm9kZVxuICAgIH0pIHtcbiAgICAgIGlmIChpc09iamVjdFByb3BlcnR5KGVuY2xvc2luZ05vZGUpKSB7XG4gICAgICAgIGFkZExlYWRpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlT25seUNvbW1lbnRzKHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgZm9sbG93aW5nTm9kZSxcbiAgICAgIGFzdCxcbiAgICAgIGlzTGFzdENvbW1lbnRcbiAgICB9KSB7XG4gICAgICBpZiAoYXN0ICYmIGFzdC5ib2R5ICYmIGFzdC5ib2R5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoaXNMYXN0Q29tbWVudCkge1xuICAgICAgICAgIGFkZERhbmdsaW5nQ29tbWVudChhc3QsIGNvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZExlYWRpbmdDb21tZW50KGFzdCwgY29tbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJQcm9ncmFtXCIgJiYgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS5ib2R5Lmxlbmd0aCkgPT09IDAgJiYgIWlzTm9uRW1wdHlBcnJheShlbmNsb3NpbmdOb2RlLmRpcmVjdGl2ZXMpKSB7XG4gICAgICAgIGlmIChpc0xhc3RDb21tZW50KSB7XG4gICAgICAgICAgYWRkRGFuZ2xpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZExlYWRpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKChmb2xsb3dpbmdOb2RlID09PSBudWxsIHx8IGZvbGxvd2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvbGxvd2luZ05vZGUudHlwZSkgPT09IFwiUHJvZ3JhbVwiICYmIChmb2xsb3dpbmdOb2RlID09PSBudWxsIHx8IGZvbGxvd2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvbGxvd2luZ05vZGUuYm9keS5sZW5ndGgpID09PSAwICYmIChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiTW9kdWxlRXhwcmVzc2lvblwiKSB7XG4gICAgICAgIGFkZERhbmdsaW5nQ29tbWVudChmb2xsb3dpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUZvckNvbW1lbnRzKHtcbiAgICAgIGNvbW1lbnQsXG4gICAgICBlbmNsb3NpbmdOb2RlXG4gICAgfSkge1xuICAgICAgaWYgKChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiRm9ySW5TdGF0ZW1lbnRcIiB8fCAoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpID09PSBcIkZvck9mU3RhdGVtZW50XCIpIHtcbiAgICAgICAgYWRkTGVhZGluZ0NvbW1lbnQoZW5jbG9zaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVNb2R1bGVTcGVjaWZpZXJzQ29tbWVudHMoe1xuICAgICAgY29tbWVudCxcbiAgICAgIHByZWNlZGluZ05vZGUsXG4gICAgICBlbmNsb3NpbmdOb2RlLFxuICAgICAgdGV4dFxuICAgIH0pIHtcbiAgICAgIGlmICgoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpID09PSBcIkltcG9ydFNwZWNpZmllclwiIHx8IChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiRXhwb3J0U3BlY2lmaWVyXCIpIHtcbiAgICAgICAgYWRkTGVhZGluZ0NvbW1lbnQoZW5jbG9zaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNJbXBvcnREZWNsYXJhdGlvbiA9IChwcmVjZWRpbmdOb2RlID09PSBudWxsIHx8IHByZWNlZGluZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZWNlZGluZ05vZGUudHlwZSkgPT09IFwiSW1wb3J0U3BlY2lmaWVyXCIgJiYgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJJbXBvcnREZWNsYXJhdGlvblwiO1xuICAgICAgY29uc3QgaXNFeHBvcnREZWNsYXJhdGlvbiA9IChwcmVjZWRpbmdOb2RlID09PSBudWxsIHx8IHByZWNlZGluZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZWNlZGluZ05vZGUudHlwZSkgPT09IFwiRXhwb3J0U3BlY2lmaWVyXCIgJiYgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCI7XG4gICAgICBpZiAoKGlzSW1wb3J0RGVjbGFyYXRpb24gfHwgaXNFeHBvcnREZWNsYXJhdGlvbikgJiYgaGFzTmV3bGluZSh0ZXh0LCBsb2NFbmQoY29tbWVudCkpKSB7XG4gICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChwcmVjZWRpbmdOb2RlLCBjb21tZW50KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUFzc2lnbm1lbnRQYXR0ZXJuQ29tbWVudHMoe1xuICAgICAgY29tbWVudCxcbiAgICAgIGVuY2xvc2luZ05vZGVcbiAgICB9KSB7XG4gICAgICBpZiAoKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJBc3NpZ25tZW50UGF0dGVyblwiKSB7XG4gICAgICAgIGFkZExlYWRpbmdDb21tZW50KGVuY2xvc2luZ05vZGUsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGFzc2lnbm1lbnRMaWtlTm9kZVR5cGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wiVmFyaWFibGVEZWNsYXJhdG9yXCIsIFwiQXNzaWdubWVudEV4cHJlc3Npb25cIiwgXCJUeXBlQWxpYXNcIiwgXCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCJdKTtcbiAgICB2YXIgY29tcGxleEV4cHJOb2RlVHlwZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJPYmplY3RFeHByZXNzaW9uXCIsIFwiQXJyYXlFeHByZXNzaW9uXCIsIFwiVGVtcGxhdGVMaXRlcmFsXCIsIFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCIsIFwiT2JqZWN0VHlwZUFubm90YXRpb25cIiwgXCJUU1R5cGVMaXRlcmFsXCJdKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVWYXJpYWJsZURlY2xhcmF0b3JDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgIGZvbGxvd2luZ05vZGVcbiAgICB9KSB7XG4gICAgICBpZiAoYXNzaWdubWVudExpa2VOb2RlVHlwZXMuaGFzKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSAmJiBmb2xsb3dpbmdOb2RlICYmIChjb21wbGV4RXhwck5vZGVUeXBlcy5oYXMoZm9sbG93aW5nTm9kZS50eXBlKSB8fCBpc0Jsb2NrQ29tbWVudChjb21tZW50KSkpIHtcbiAgICAgICAgYWRkTGVhZGluZ0NvbW1lbnQoZm9sbG93aW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVUU0Z1bmN0aW9uVHJhaWxpbmdDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgIGZvbGxvd2luZ05vZGUsXG4gICAgICB0ZXh0XG4gICAgfSkge1xuICAgICAgaWYgKCFmb2xsb3dpbmdOb2RlICYmICgoZW5jbG9zaW5nTm9kZSA9PT0gbnVsbCB8fCBlbmNsb3NpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbmNsb3NpbmdOb2RlLnR5cGUpID09PSBcIlRTTWV0aG9kU2lnbmF0dXJlXCIgfHwgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJUU0RlY2xhcmVGdW5jdGlvblwiIHx8IChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgPT09IFwiVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb25cIikgJiYgZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3Rlcih0ZXh0LCBjb21tZW50LCBsb2NFbmQpID09PSBcIjtcIikge1xuICAgICAgICBhZGRUcmFpbGluZ0NvbW1lbnQoZW5jbG9zaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVJZ25vcmVDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgIGZvbGxvd2luZ05vZGVcbiAgICB9KSB7XG4gICAgICBpZiAoaXNQcmV0dGllcklnbm9yZUNvbW1lbnQoY29tbWVudCkgJiYgKGVuY2xvc2luZ05vZGUgPT09IG51bGwgfHwgZW5jbG9zaW5nTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW5jbG9zaW5nTm9kZS50eXBlKSA9PT0gXCJUU01hcHBlZFR5cGVcIiAmJiAoZm9sbG93aW5nTm9kZSA9PT0gbnVsbCB8fCBmb2xsb3dpbmdOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2xsb3dpbmdOb2RlLnR5cGUpID09PSBcIlRTVHlwZVBhcmFtZXRlclwiICYmIGZvbGxvd2luZ05vZGUuY29uc3RyYWludCkge1xuICAgICAgICBlbmNsb3NpbmdOb2RlLnByZXR0aWVySWdub3JlID0gdHJ1ZTtcbiAgICAgICAgY29tbWVudC51bmlnbm9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVUU01hcHBlZFR5cGVDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgcHJlY2VkaW5nTm9kZSxcbiAgICAgIGVuY2xvc2luZ05vZGUsXG4gICAgICBmb2xsb3dpbmdOb2RlXG4gICAgfSkge1xuICAgICAgaWYgKChlbmNsb3NpbmdOb2RlID09PSBudWxsIHx8IGVuY2xvc2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVuY2xvc2luZ05vZGUudHlwZSkgIT09IFwiVFNNYXBwZWRUeXBlXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKChmb2xsb3dpbmdOb2RlID09PSBudWxsIHx8IGZvbGxvd2luZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvbGxvd2luZ05vZGUudHlwZSkgPT09IFwiVFNUeXBlUGFyYW1ldGVyXCIgJiYgZm9sbG93aW5nTm9kZS5uYW1lKSB7XG4gICAgICAgIGFkZExlYWRpbmdDb21tZW50KGZvbGxvd2luZ05vZGUubmFtZSwgY29tbWVudCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKChwcmVjZWRpbmdOb2RlID09PSBudWxsIHx8IHByZWNlZGluZ05vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZWNlZGluZ05vZGUudHlwZSkgPT09IFwiVFNUeXBlUGFyYW1ldGVyXCIgJiYgcHJlY2VkaW5nTm9kZS5jb25zdHJhaW50KSB7XG4gICAgICAgIGFkZFRyYWlsaW5nQ29tbWVudChwcmVjZWRpbmdOb2RlLmNvbnN0cmFpbnQsIGNvbW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlU3dpdGNoRGVmYXVsdENhc2VDb21tZW50cyh7XG4gICAgICBjb21tZW50LFxuICAgICAgZW5jbG9zaW5nTm9kZSxcbiAgICAgIGZvbGxvd2luZ05vZGVcbiAgICB9KSB7XG4gICAgICBpZiAoIWVuY2xvc2luZ05vZGUgfHwgZW5jbG9zaW5nTm9kZS50eXBlICE9PSBcIlN3aXRjaENhc2VcIiB8fCBlbmNsb3NpbmdOb2RlLnRlc3QpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGZvbGxvd2luZ05vZGUudHlwZSA9PT0gXCJCbG9ja1N0YXRlbWVudFwiICYmIGlzTGluZUNvbW1lbnQoY29tbWVudCkpIHtcbiAgICAgICAgYWRkQmxvY2tTdGF0ZW1lbnRGaXJzdENvbW1lbnQoZm9sbG93aW5nTm9kZSwgY29tbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGREYW5nbGluZ0NvbW1lbnQoZW5jbG9zaW5nTm9kZSwgY29tbWVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNSZWFsRnVuY3Rpb25MaWtlTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIk9iamVjdE1ldGhvZFwiIHx8IG5vZGUudHlwZSA9PT0gXCJDbGFzc01ldGhvZFwiIHx8IG5vZGUudHlwZSA9PT0gXCJUU0RlY2xhcmVGdW5jdGlvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlRTTWV0aG9kU2lnbmF0dXJlXCIgfHwgbm9kZS50eXBlID09PSBcIlRTQ29uc3RydWN0b3JUeXBlXCIgfHwgbm9kZS50eXBlID09PSBcIlRTRnVuY3Rpb25UeXBlXCIgfHwgbm9kZS50eXBlID09PSBcIlRTRGVjbGFyZU1ldGhvZFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDb21tZW50Q2hpbGROb2Rlcyhub2RlLCBvcHRpb25zKSB7XG4gICAgICBpZiAoKG9wdGlvbnMucGFyc2VyID09PSBcInR5cGVzY3JpcHRcIiB8fCBvcHRpb25zLnBhcnNlciA9PT0gXCJmbG93XCIgfHwgb3B0aW9ucy5wYXJzZXIgPT09IFwiYWNvcm5cIiB8fCBvcHRpb25zLnBhcnNlciA9PT0gXCJlc3ByZWVcIiB8fCBvcHRpb25zLnBhcnNlciA9PT0gXCJtZXJpeWFoXCIgfHwgb3B0aW9ucy5wYXJzZXIgPT09IFwiX19iYWJlbF9lc3RyZWVcIikgJiYgbm9kZS50eXBlID09PSBcIk1ldGhvZERlZmluaXRpb25cIiAmJiBub2RlLnZhbHVlICYmIG5vZGUudmFsdWUudHlwZSA9PT0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIiAmJiBnZXRGdW5jdGlvblBhcmFtZXRlcnMobm9kZS52YWx1ZSkubGVuZ3RoID09PSAwICYmICFub2RlLnZhbHVlLnJldHVyblR5cGUgJiYgIWlzTm9uRW1wdHlBcnJheShub2RlLnZhbHVlLnR5cGVQYXJhbWV0ZXJzKSAmJiBub2RlLnZhbHVlLmJvZHkpIHtcbiAgICAgICAgcmV0dXJuIFsuLi5ub2RlLmRlY29yYXRvcnMgfHwgW10sIG5vZGUua2V5LCBub2RlLnZhbHVlLmJvZHldO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpc1R5cGVDYXN0Q29tbWVudChjb21tZW50KSB7XG4gICAgICByZXR1cm4gaXNCbG9ja0NvbW1lbnQoY29tbWVudCkgJiYgY29tbWVudC52YWx1ZVswXSA9PT0gXCIqXCIgJiYgL0B0eXBlXFxiLy50ZXN0KGNvbW1lbnQudmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3aWxsUHJpbnRPd25Db21tZW50cyhwYXRoKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBjb25zdCBoYXNGbG93QW5ub3RhdGlvbnMgPSAobm9kZTIpID0+IGhhc0Zsb3dBbm5vdGF0aW9uQ29tbWVudChnZXRDb21tZW50cyhub2RlMiwgQ29tbWVudENoZWNrRmxhZ3MuTGVhZGluZykpIHx8IGhhc0Zsb3dBbm5vdGF0aW9uQ29tbWVudChnZXRDb21tZW50cyhub2RlMiwgQ29tbWVudENoZWNrRmxhZ3MuVHJhaWxpbmcpKTtcbiAgICAgIHJldHVybiAobm9kZSAmJiAoaXNKc3hOb2RlKG5vZGUpIHx8IGhhc0Zsb3dTaG9ydGhhbmRBbm5vdGF0aW9uQ29tbWVudChub2RlKSB8fCBpc0NhbGxFeHByZXNzaW9uKHBhcmVudCkgJiYgaGFzRmxvd0Fubm90YXRpb25zKG5vZGUpKSB8fCBwYXJlbnQgJiYgKHBhcmVudC50eXBlID09PSBcIkpTWFNwcmVhZEF0dHJpYnV0ZVwiIHx8IHBhcmVudC50eXBlID09PSBcIkpTWFNwcmVhZENoaWxkXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVW5pb25UeXBlQW5ub3RhdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIlRTVW5pb25UeXBlXCIgfHwgKHBhcmVudC50eXBlID09PSBcIkNsYXNzRGVjbGFyYXRpb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJDbGFzc0V4cHJlc3Npb25cIikgJiYgcGFyZW50LnN1cGVyQ2xhc3MgPT09IG5vZGUpKSAmJiAoIWhhc0lnbm9yZUNvbW1lbnQocGF0aCkgfHwgcGFyZW50LnR5cGUgPT09IFwiVW5pb25UeXBlQW5ub3RhdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIlRTVW5pb25UeXBlXCIpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBoYW5kbGVPd25MaW5lQ29tbWVudCxcbiAgICAgIGhhbmRsZUVuZE9mTGluZUNvbW1lbnQsXG4gICAgICBoYW5kbGVSZW1haW5pbmdDb21tZW50LFxuICAgICAgaXNUeXBlQ2FzdENvbW1lbnQsXG4gICAgICBnZXRDb21tZW50Q2hpbGROb2RlcyxcbiAgICAgIHdpbGxQcmludE93bkNvbW1lbnRzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9uZWVkc19wYXJlbnMgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL25lZWRzLXBhcmVucy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGdldExhc3QgPSByZXF1aXJlX2dldF9sYXN0KCk7XG4gICAgdmFyIGlzTm9uRW1wdHlBcnJheSA9IHJlcXVpcmVfaXNfbm9uX2VtcHR5X2FycmF5KCk7XG4gICAgdmFyIHtcbiAgICAgIGdldEZ1bmN0aW9uUGFyYW1ldGVycyxcbiAgICAgIGdldExlZnRTaWRlUGF0aE5hbWUsXG4gICAgICBoYXNGbG93U2hvcnRoYW5kQW5ub3RhdGlvbkNvbW1lbnQsXG4gICAgICBoYXNOYWtlZExlZnRTaWRlLFxuICAgICAgaGFzTm9kZSxcbiAgICAgIGlzQml0d2lzZU9wZXJhdG9yLFxuICAgICAgc3RhcnRzV2l0aE5vTG9va2FoZWFkVG9rZW4sXG4gICAgICBzaG91bGRGbGF0dGVuLFxuICAgICAgZ2V0UHJlY2VkZW5jZSxcbiAgICAgIGlzQ2FsbEV4cHJlc3Npb24sXG4gICAgICBpc01lbWJlckV4cHJlc3Npb24sXG4gICAgICBpc09iamVjdFByb3BlcnR5XG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgZnVuY3Rpb24gbmVlZHNQYXJlbnMocGF0aCwgb3B0aW9ucykge1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBuYW1lID0gcGF0aC5nZXROYW1lKCk7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXROb2RlKCk7XG4gICAgICBpZiAob3B0aW9ucy5fX2lzSW5IdG1sSW50ZXJwb2xhdGlvbiAmJiAhb3B0aW9ucy5icmFja2V0U3BhY2luZyAmJiBlbmRzV2l0aFJpZ2h0QnJhY2tldChub2RlKSAmJiBpc0ZvbGxvd2VkQnlSaWdodEJyYWNrZXQocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTdGF0ZW1lbnQobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucGFyc2VyICE9PSBcImZsb3dcIiAmJiBoYXNGbG93U2hvcnRoYW5kQW5ub3RhdGlvbkNvbW1lbnQocGF0aC5nZXRWYWx1ZSgpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XG4gICAgICAgIGlmIChub2RlLmV4dHJhICYmIG5vZGUuZXh0cmEucGFyZW50aGVzaXplZCAmJiAvXlBSRVRUSUVSX0hUTUxfUExBQ0VIT0xERVJfXFxkK19cXGQrX0lOX0pTJC8udGVzdChub2RlLm5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09IFwibGVmdFwiICYmIG5vZGUubmFtZSA9PT0gXCJhc3luY1wiICYmIHBhcmVudC50eXBlID09PSBcIkZvck9mU3RhdGVtZW50XCIgJiYgIXBhcmVudC5hd2FpdCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAocGFyZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjYXNlIFwiQ2xhc3NEZWNsYXJhdGlvblwiOlxuICAgICAgICBjYXNlIFwiQ2xhc3NFeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJzdXBlckNsYXNzXCIgJiYgKG5vZGUudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJBd2FpdEV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiQmluYXJ5RXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiTG9naWNhbEV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiTmV3RXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJPYmplY3RFeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlNlcXVlbmNlRXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiVW5hcnlFeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlVwZGF0ZUV4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiWWllbGRFeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlRTTm9uTnVsbEV4cHJlc3Npb25cIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gc2hvdWxkV3JhcEZ1bmN0aW9uRm9yRXhwb3J0RGVmYXVsdChwYXRoLCBvcHRpb25zKSB8fCBub2RlLnR5cGUgPT09IFwiU2VxdWVuY2VFeHByZXNzaW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkRlY29yYXRvclwiOiB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09IFwiZXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgICBsZXQgaGFzQ2FsbEV4cHJlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBoYXNNZW1iZXJFeHByZXNzaW9uID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgICAgICBoYXNNZW1iZXJFeHByZXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm9iamVjdDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICAgICAgaWYgKGhhc01lbWJlckV4cHJlc3Npb24gfHwgaGFzQ2FsbEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMucGFyc2VyICE9PSBcInR5cGVzY3JpcHRcIjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGhhc0NhbGxFeHByZXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmNhbGxlZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMucGFyc2VyICE9PSBcInR5cGVzY3JpcHRcIjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRXhwcmVzc2lvblN0YXRlbWVudFwiOiB7XG4gICAgICAgICAgaWYgKHN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuKG5vZGUsIHRydWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJib2R5XCIgJiYgbm9kZS50eXBlICE9PSBcIlNlcXVlbmNlRXhwcmVzc2lvblwiICYmIHN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuKG5vZGUsIGZhbHNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiVXBkYXRlRXhwcmVzc2lvblwiOlxuICAgICAgICAgIGlmIChwYXJlbnQudHlwZSA9PT0gXCJVbmFyeUV4cHJlc3Npb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUucHJlZml4ICYmIChub2RlLm9wZXJhdG9yID09PSBcIisrXCIgJiYgcGFyZW50Lm9wZXJhdG9yID09PSBcIitcIiB8fCBub2RlLm9wZXJhdG9yID09PSBcIi0tXCIgJiYgcGFyZW50Lm9wZXJhdG9yID09PSBcIi1cIik7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiVW5hcnlFeHByZXNzaW9uXCI6XG4gICAgICAgICAgc3dpdGNoIChwYXJlbnQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcIlVuYXJ5RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbm9kZS5vcGVyYXRvciA9PT0gcGFyZW50Lm9wZXJhdG9yICYmIChub2RlLm9wZXJhdG9yID09PSBcIitcIiB8fCBub2RlLm9wZXJhdG9yID09PSBcIi1cIik7XG4gICAgICAgICAgICBjYXNlIFwiQmluZEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBjYXNlIFwiTWVtYmVyRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJvYmplY3RcIjtcbiAgICAgICAgICAgIGNhc2UgXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBjYXNlIFwiTmV3RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkNhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJjYWxsZWVcIjtcbiAgICAgICAgICAgIGNhc2UgXCJCaW5hcnlFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSBcImxlZnRcIiAmJiBwYXJlbnQub3BlcmF0b3IgPT09IFwiKipcIjtcbiAgICAgICAgICAgIGNhc2UgXCJUU05vbk51bGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkJpbmFyeUV4cHJlc3Npb25cIjoge1xuICAgICAgICAgIGlmIChwYXJlbnQudHlwZSA9PT0gXCJVcGRhdGVFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gXCJpblwiICYmIGlzUGF0aEluRm9yU3RhdGVtZW50SW5pdGlhbGl6ZXIocGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS5vcGVyYXRvciA9PT0gXCJ8PlwiICYmIG5vZGUuZXh0cmEgJiYgbm9kZS5leHRyYS5wYXJlbnRoZXNpemVkKSB7XG4gICAgICAgICAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgxKTtcbiAgICAgICAgICAgIGlmIChncmFuZFBhcmVudC50eXBlID09PSBcIkJpbmFyeUV4cHJlc3Npb25cIiAmJiBncmFuZFBhcmVudC5vcGVyYXRvciA9PT0gXCJ8PlwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiVFNUeXBlQXNzZXJ0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJUU0FzRXhwcmVzc2lvblwiOlxuICAgICAgICBjYXNlIFwiTG9naWNhbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiVFNBc0V4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudHlwZSAhPT0gXCJUU0FzRXhwcmVzc2lvblwiO1xuICAgICAgICAgICAgY2FzZSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcIlRTQXNFeHByZXNzaW9uXCI7XG4gICAgICAgICAgICBjYXNlIFwiQ2FsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJOZXdFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJjYWxsZWVcIjtcbiAgICAgICAgICAgIGNhc2UgXCJDbGFzc0V4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJDbGFzc0RlY2xhcmF0aW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSBcInN1cGVyQ2xhc3NcIjtcbiAgICAgICAgICAgIGNhc2UgXCJUU1R5cGVBc3NlcnRpb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJVbmFyeUV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJKU1hTcHJlYWRBdHRyaWJ1dGVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJTcHJlYWRFbGVtZW50XCI6XG4gICAgICAgICAgICBjYXNlIFwiU3ByZWFkUHJvcGVydHlcIjpcbiAgICAgICAgICAgIGNhc2UgXCJCaW5kRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkF3YWl0RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJVcGRhdGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY2FzZSBcIk1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IFwib2JqZWN0XCI7XG4gICAgICAgICAgICBjYXNlIFwiQXNzaWdubWVudEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJBc3NpZ25tZW50UGF0dGVyblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJsZWZ0XCIgJiYgKG5vZGUudHlwZSA9PT0gXCJUU1R5cGVBc3NlcnRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiVFNBc0V4cHJlc3Npb25cIik7XG4gICAgICAgICAgICBjYXNlIFwiTG9naWNhbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJMb2dpY2FsRXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC5vcGVyYXRvciAhPT0gbm9kZS5vcGVyYXRvcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkJpbmFyeUV4cHJlc3Npb25cIjoge1xuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgICB9ID0gbm9kZTtcbiAgICAgICAgICAgICAgaWYgKCFvcGVyYXRvciAmJiB0eXBlICE9PSBcIlRTVHlwZUFzc2VydGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcHJlY2VkZW5jZSA9IGdldFByZWNlZGVuY2Uob3BlcmF0b3IpO1xuICAgICAgICAgICAgICBjb25zdCBwYXJlbnRPcGVyYXRvciA9IHBhcmVudC5vcGVyYXRvcjtcbiAgICAgICAgICAgICAgY29uc3QgcGFyZW50UHJlY2VkZW5jZSA9IGdldFByZWNlZGVuY2UocGFyZW50T3BlcmF0b3IpO1xuICAgICAgICAgICAgICBpZiAocGFyZW50UHJlY2VkZW5jZSA+IHByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gXCJyaWdodFwiICYmIHBhcmVudFByZWNlZGVuY2UgPT09IHByZWNlZGVuY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocGFyZW50UHJlY2VkZW5jZSA9PT0gcHJlY2VkZW5jZSAmJiAhc2hvdWxkRmxhdHRlbihwYXJlbnRPcGVyYXRvciwgb3BlcmF0b3IpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHBhcmVudFByZWNlZGVuY2UgPCBwcmVjZWRlbmNlICYmIG9wZXJhdG9yID09PSBcIiVcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRPcGVyYXRvciA9PT0gXCIrXCIgfHwgcGFyZW50T3BlcmF0b3IgPT09IFwiLVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChpc0JpdHdpc2VPcGVyYXRvcihwYXJlbnRPcGVyYXRvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiU2VxdWVuY2VFeHByZXNzaW9uXCI6XG4gICAgICAgICAgc3dpdGNoIChwYXJlbnQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcIlJldHVyblN0YXRlbWVudFwiOlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIFwiRm9yU3RhdGVtZW50XCI6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgXCJFeHByZXNzaW9uU3RhdGVtZW50XCI6XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lICE9PSBcImV4cHJlc3Npb25cIjtcbiAgICAgICAgICAgIGNhc2UgXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSAhPT0gXCJib2R5XCI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJZaWVsZEV4cHJlc3Npb25cIjpcbiAgICAgICAgICBpZiAocGFyZW50LnR5cGUgPT09IFwiVW5hcnlFeHByZXNzaW9uXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVFNBc0V4cHJlc3Npb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJUU05vbk51bGxFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkF3YWl0RXhwcmVzc2lvblwiOlxuICAgICAgICAgIHN3aXRjaCAocGFyZW50LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJVbmFyeUV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJMb2dpY2FsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIlNwcmVhZEVsZW1lbnRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJTcHJlYWRQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgY2FzZSBcIlRTQXNFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiVFNOb25OdWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkJpbmRFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY2FzZSBcIk1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IFwib2JqZWN0XCI7XG4gICAgICAgICAgICBjYXNlIFwiTmV3RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkNhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJjYWxsZWVcIjtcbiAgICAgICAgICAgIGNhc2UgXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IFwidGVzdFwiO1xuICAgICAgICAgICAgY2FzZSBcIkJpbmFyeUV4cHJlc3Npb25cIjoge1xuICAgICAgICAgICAgICBpZiAoIW5vZGUuYXJndW1lbnQgJiYgcGFyZW50Lm9wZXJhdG9yID09PSBcInw+XCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiVFNDb25kaXRpb25hbFR5cGVcIjpcbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJleHRlbmRzVHlwZVwiICYmIHBhcmVudC50eXBlID09PSBcIlRTQ29uZGl0aW9uYWxUeXBlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlRTRnVuY3Rpb25UeXBlXCI6XG4gICAgICAgIGNhc2UgXCJUU0NvbnN0cnVjdG9yVHlwZVwiOlxuICAgICAgICAgIGlmIChuYW1lID09PSBcImNoZWNrVHlwZVwiICYmIHBhcmVudC50eXBlID09PSBcIlRTQ29uZGl0aW9uYWxUeXBlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlRTVW5pb25UeXBlXCI6XG4gICAgICAgIGNhc2UgXCJUU0ludGVyc2VjdGlvblR5cGVcIjpcbiAgICAgICAgICBpZiAoKHBhcmVudC50eXBlID09PSBcIlRTVW5pb25UeXBlXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVFNJbnRlcnNlY3Rpb25UeXBlXCIpICYmIHBhcmVudC50eXBlcy5sZW5ndGggPiAxICYmICghbm9kZS50eXBlcyB8fCBub2RlLnR5cGVzLmxlbmd0aCA+IDEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJUU0luZmVyVHlwZVwiOlxuICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiVFNJbmZlclR5cGVcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJUU1Jlc3RUeXBlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJUU1R5cGVPcGVyYXRvclwiOlxuICAgICAgICAgIHJldHVybiBwYXJlbnQudHlwZSA9PT0gXCJUU0FycmF5VHlwZVwiIHx8IHBhcmVudC50eXBlID09PSBcIlRTT3B0aW9uYWxUeXBlXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVFNSZXN0VHlwZVwiIHx8IG5hbWUgPT09IFwib2JqZWN0VHlwZVwiICYmIHBhcmVudC50eXBlID09PSBcIlRTSW5kZXhlZEFjY2Vzc1R5cGVcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJUU1R5cGVPcGVyYXRvclwiIHx8IHBhcmVudC50eXBlID09PSBcIlRTVHlwZUFubm90YXRpb25cIiAmJiBwYXRoLmdldFBhcmVudE5vZGUoMSkudHlwZS5zdGFydHNXaXRoKFwiVFNKU0RvY1wiKTtcbiAgICAgICAgY2FzZSBcIkFycmF5VHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gcGFyZW50LnR5cGUgPT09IFwiTnVsbGFibGVUeXBlQW5ub3RhdGlvblwiO1xuICAgICAgICBjYXNlIFwiSW50ZXJzZWN0aW9uVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgY2FzZSBcIlVuaW9uVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gcGFyZW50LnR5cGUgPT09IFwiQXJyYXlUeXBlQW5ub3RhdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIk51bGxhYmxlVHlwZUFubm90YXRpb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJJbnRlcnNlY3Rpb25UeXBlQW5ub3RhdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIlVuaW9uVHlwZUFubm90YXRpb25cIiB8fCBuYW1lID09PSBcIm9iamVjdFR5cGVcIiAmJiAocGFyZW50LnR5cGUgPT09IFwiSW5kZXhlZEFjY2Vzc1R5cGVcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJPcHRpb25hbEluZGV4ZWRBY2Nlc3NUeXBlXCIpO1xuICAgICAgICBjYXNlIFwiTnVsbGFibGVUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwYXJlbnQudHlwZSA9PT0gXCJBcnJheVR5cGVBbm5vdGF0aW9uXCIgfHwgbmFtZSA9PT0gXCJvYmplY3RUeXBlXCIgJiYgKHBhcmVudC50eXBlID09PSBcIkluZGV4ZWRBY2Nlc3NUeXBlXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiT3B0aW9uYWxJbmRleGVkQWNjZXNzVHlwZVwiKTtcbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uVHlwZUFubm90YXRpb25cIjoge1xuICAgICAgICAgIGNvbnN0IGFuY2VzdG9yID0gcGFyZW50LnR5cGUgPT09IFwiTnVsbGFibGVUeXBlQW5ub3RhdGlvblwiID8gcGF0aC5nZXRQYXJlbnROb2RlKDEpIDogcGFyZW50O1xuICAgICAgICAgIHJldHVybiBhbmNlc3Rvci50eXBlID09PSBcIlVuaW9uVHlwZUFubm90YXRpb25cIiB8fCBhbmNlc3Rvci50eXBlID09PSBcIkludGVyc2VjdGlvblR5cGVBbm5vdGF0aW9uXCIgfHwgYW5jZXN0b3IudHlwZSA9PT0gXCJBcnJheVR5cGVBbm5vdGF0aW9uXCIgfHwgbmFtZSA9PT0gXCJvYmplY3RUeXBlXCIgJiYgKGFuY2VzdG9yLnR5cGUgPT09IFwiSW5kZXhlZEFjY2Vzc1R5cGVcIiB8fCBhbmNlc3Rvci50eXBlID09PSBcIk9wdGlvbmFsSW5kZXhlZEFjY2Vzc1R5cGVcIikgfHwgYW5jZXN0b3IudHlwZSA9PT0gXCJOdWxsYWJsZVR5cGVBbm5vdGF0aW9uXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiRnVuY3Rpb25UeXBlUGFyYW1cIiAmJiBwYXJlbnQubmFtZSA9PT0gbnVsbCAmJiBnZXRGdW5jdGlvblBhcmFtZXRlcnMobm9kZSkuc29tZSgocGFyYW0pID0+IHBhcmFtLnR5cGVBbm5vdGF0aW9uICYmIHBhcmFtLnR5cGVBbm5vdGF0aW9uLnR5cGUgPT09IFwiTnVsbGFibGVUeXBlQW5ub3RhdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiT3B0aW9uYWxJbmRleGVkQWNjZXNzVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBuYW1lID09PSBcIm9iamVjdFR5cGVcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJJbmRleGVkQWNjZXNzVHlwZVwiO1xuICAgICAgICBjYXNlIFwiVHlwZW9mVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJvYmplY3RUeXBlXCIgJiYgKHBhcmVudC50eXBlID09PSBcIkluZGV4ZWRBY2Nlc3NUeXBlXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiT3B0aW9uYWxJbmRleGVkQWNjZXNzVHlwZVwiKTtcbiAgICAgICAgY2FzZSBcIlN0cmluZ0xpdGVyYWxcIjpcbiAgICAgICAgY2FzZSBcIk51bWVyaWNMaXRlcmFsXCI6XG4gICAgICAgIGNhc2UgXCJMaXRlcmFsXCI6XG4gICAgICAgICAgaWYgKHR5cGVvZiBub2RlLnZhbHVlID09PSBcInN0cmluZ1wiICYmIHBhcmVudC50eXBlID09PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiAmJiAhcGFyZW50LmRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoMSk7XG4gICAgICAgICAgICByZXR1cm4gZ3JhbmRQYXJlbnQudHlwZSA9PT0gXCJQcm9ncmFtXCIgfHwgZ3JhbmRQYXJlbnQudHlwZSA9PT0gXCJCbG9ja1N0YXRlbWVudFwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJvYmplY3RcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiYgdHlwZW9mIG5vZGUudmFsdWUgPT09IFwibnVtYmVyXCI7XG4gICAgICAgIGNhc2UgXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiOiB7XG4gICAgICAgICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoMSk7XG4gICAgICAgICAgaWYgKG5hbWUgPT09IFwiYm9keVwiICYmIHBhcmVudC50eXBlID09PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJrZXlcIiAmJiAocGFyZW50LnR5cGUgPT09IFwiQ2xhc3NQcm9wZXJ0eVwiIHx8IHBhcmVudC50eXBlID09PSBcIlByb3BlcnR5RGVmaW5pdGlvblwiKSAmJiBwYXJlbnQuY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKChuYW1lID09PSBcImluaXRcIiB8fCBuYW1lID09PSBcInVwZGF0ZVwiKSAmJiBwYXJlbnQudHlwZSA9PT0gXCJGb3JTdGF0ZW1lbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFyZW50LnR5cGUgPT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5sZWZ0LnR5cGUgPT09IFwiT2JqZWN0UGF0dGVyblwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJrZXlcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJUU1Byb3BlcnR5U2lnbmF0dXJlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhcmVudC50eXBlID09PSBcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhcmVudC50eXBlID09PSBcIlNlcXVlbmNlRXhwcmVzc2lvblwiICYmIGdyYW5kUGFyZW50ICYmIGdyYW5kUGFyZW50LnR5cGUgPT09IFwiRm9yU3RhdGVtZW50XCIgJiYgKGdyYW5kUGFyZW50LmluaXQgPT09IHBhcmVudCB8fCBncmFuZFBhcmVudC51cGRhdGUgPT09IHBhcmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5hbWUgPT09IFwidmFsdWVcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJQcm9wZXJ0eVwiICYmIGdyYW5kUGFyZW50ICYmIGdyYW5kUGFyZW50LnR5cGUgPT09IFwiT2JqZWN0UGF0dGVyblwiICYmIGdyYW5kUGFyZW50LnByb3BlcnRpZXMuaW5jbHVkZXMocGFyZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFyZW50LnR5cGUgPT09IFwiTkdDaGFpbmVkRXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiVW5hcnlFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiU3ByZWFkRWxlbWVudFwiOlxuICAgICAgICAgICAgY2FzZSBcIlNwcmVhZFByb3BlcnR5XCI6XG4gICAgICAgICAgICBjYXNlIFwiQmluYXJ5RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkxvZ2ljYWxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiTkdQaXBlRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkF3YWl0RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkpTWFNwcmVhZEF0dHJpYnV0ZVwiOlxuICAgICAgICAgICAgY2FzZSBcIlRTVHlwZUFzc2VydGlvblwiOlxuICAgICAgICAgICAgY2FzZSBcIlR5cGVDYXN0RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIlRTQXNFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiVFNOb25OdWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJOZXdFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiQ2FsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSBcImNhbGxlZVwiO1xuICAgICAgICAgICAgY2FzZSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJ0ZXN0XCI7XG4gICAgICAgICAgICBjYXNlIFwiTWVtYmVyRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJvYmplY3RcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJGdW5jdGlvbkV4cHJlc3Npb25cIjpcbiAgICAgICAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiTmV3RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkNhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJjYWxsZWVcIjtcbiAgICAgICAgICAgIGNhc2UgXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIjpcbiAgICAgICAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiQmluYXJ5RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gcGFyZW50Lm9wZXJhdG9yICE9PSBcInw+XCIgfHwgbm9kZS5leHRyYSAmJiBub2RlLmV4dHJhLnBhcmVudGhlc2l6ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiTmV3RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkNhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiT3B0aW9uYWxDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJjYWxsZWVcIjtcbiAgICAgICAgICAgIGNhc2UgXCJNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSBcIm9iamVjdFwiO1xuICAgICAgICAgICAgY2FzZSBcIlRTQXNFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiVFNOb25OdWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkJpbmRFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiVW5hcnlFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwiTG9naWNhbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJBd2FpdEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJUU1R5cGVBc3NlcnRpb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBjYXNlIFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSBcInRlc3RcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJDbGFzc0V4cHJlc3Npb25cIjpcbiAgICAgICAgICBpZiAoaXNOb25FbXB0eUFycmF5KG5vZGUuZGVjb3JhdG9ycykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiTmV3RXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJjYWxsZWVcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIjoge1xuICAgICAgICAgIGNvbnN0IHBhcmVudFBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgxKTtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJvYmplY3RcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgfHwgbmFtZSA9PT0gXCJjYWxsZWVcIiAmJiAocGFyZW50LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCIpIHx8IHBhcmVudC50eXBlID09PSBcIlRTTm9uTnVsbEV4cHJlc3Npb25cIiAmJiBwYXJlbnRQYXJlbnQudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiYgcGFyZW50UGFyZW50Lm9iamVjdCA9PT0gcGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkNhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJjYWxsZWVcIiAmJiAocGFyZW50LnR5cGUgPT09IFwiQmluZEV4cHJlc3Npb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCIpKSB7XG4gICAgICAgICAgICBsZXQgb2JqZWN0ID0gbm9kZTtcbiAgICAgICAgICAgIHdoaWxlIChvYmplY3QpIHtcbiAgICAgICAgICAgICAgc3dpdGNoIChvYmplY3QudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiTWVtYmVyRXhwcmVzc2lvblwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJPcHRpb25hbE1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiQmluZEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5vYmplY3Q7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICAgICAgICBvYmplY3QgPSBvYmplY3QudGFnO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlRTTm9uTnVsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5leHByZXNzaW9uO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNhc2UgXCJCaW5kRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBuYW1lID09PSBcImNhbGxlZVwiICYmIChwYXJlbnQudHlwZSA9PT0gXCJCaW5kRXhwcmVzc2lvblwiIHx8IHBhcmVudC50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIikgfHwgbmFtZSA9PT0gXCJvYmplY3RcIiAmJiBpc01lbWJlckV4cHJlc3Npb24ocGFyZW50KTtcbiAgICAgICAgY2FzZSBcIk5HUGlwZUV4cHJlc3Npb25cIjpcbiAgICAgICAgICBpZiAocGFyZW50LnR5cGUgPT09IFwiTkdSb290XCIgfHwgcGFyZW50LnR5cGUgPT09IFwiTkdNaWNyb3N5bnRheEV4cHJlc3Npb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJPYmplY3RQcm9wZXJ0eVwiICYmICEobm9kZS5leHRyYSAmJiBub2RlLmV4dHJhLnBhcmVudGhlc2l6ZWQpIHx8IHBhcmVudC50eXBlID09PSBcIkFycmF5RXhwcmVzc2lvblwiIHx8IGlzQ2FsbEV4cHJlc3Npb24ocGFyZW50KSAmJiBwYXJlbnQuYXJndW1lbnRzW25hbWVdID09PSBub2RlIHx8IG5hbWUgPT09IFwicmlnaHRcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJOR1BpcGVFeHByZXNzaW9uXCIgfHwgbmFtZSA9PT0gXCJwcm9wZXJ0eVwiICYmIHBhcmVudC50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjYXNlIFwiSlNYRnJhZ21lbnRcIjpcbiAgICAgICAgY2FzZSBcIkpTWEVsZW1lbnRcIjpcbiAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gXCJjYWxsZWVcIiB8fCBuYW1lID09PSBcImxlZnRcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJCaW5hcnlFeHByZXNzaW9uXCIgJiYgcGFyZW50Lm9wZXJhdG9yID09PSBcIjxcIiB8fCBwYXJlbnQudHlwZSAhPT0gXCJBcnJheUV4cHJlc3Npb25cIiAmJiBwYXJlbnQudHlwZSAhPT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiICYmIHBhcmVudC50eXBlICE9PSBcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiQXNzaWdubWVudFBhdHRlcm5cIiAmJiBwYXJlbnQudHlwZSAhPT0gXCJCaW5hcnlFeHByZXNzaW9uXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiTmV3RXhwcmVzc2lvblwiICYmIHBhcmVudC50eXBlICE9PSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiICYmIHBhcmVudC50eXBlICE9PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiAmJiBwYXJlbnQudHlwZSAhPT0gXCJKc0V4cHJlc3Npb25Sb290XCIgJiYgcGFyZW50LnR5cGUgIT09IFwiSlNYQXR0cmlidXRlXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiSlNYRWxlbWVudFwiICYmIHBhcmVudC50eXBlICE9PSBcIkpTWEV4cHJlc3Npb25Db250YWluZXJcIiAmJiBwYXJlbnQudHlwZSAhPT0gXCJKU1hGcmFnbWVudFwiICYmIHBhcmVudC50eXBlICE9PSBcIkxvZ2ljYWxFeHByZXNzaW9uXCIgJiYgIWlzQ2FsbEV4cHJlc3Npb24ocGFyZW50KSAmJiAhaXNPYmplY3RQcm9wZXJ0eShwYXJlbnQpICYmIHBhcmVudC50eXBlICE9PSBcIlJldHVyblN0YXRlbWVudFwiICYmIHBhcmVudC50eXBlICE9PSBcIlRocm93U3RhdGVtZW50XCIgJiYgcGFyZW50LnR5cGUgIT09IFwiVHlwZUNhc3RFeHByZXNzaW9uXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiVmFyaWFibGVEZWNsYXJhdG9yXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiWWllbGRFeHByZXNzaW9uXCI7XG4gICAgICAgIGNhc2UgXCJUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBuYW1lID09PSBcInJldHVyblR5cGVcIiAmJiBwYXJlbnQudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiICYmIGluY2x1ZGVzRnVuY3Rpb25UeXBlSW5PYmplY3RUeXBlKG5vZGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1N0YXRlbWVudChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcIkJsb2NrU3RhdGVtZW50XCIgfHwgbm9kZS50eXBlID09PSBcIkJyZWFrU3RhdGVtZW50XCIgfHwgbm9kZS50eXBlID09PSBcIkNsYXNzQm9keVwiIHx8IG5vZGUudHlwZSA9PT0gXCJDbGFzc0RlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkNsYXNzTWV0aG9kXCIgfHwgbm9kZS50eXBlID09PSBcIkNsYXNzUHJvcGVydHlcIiB8fCBub2RlLnR5cGUgPT09IFwiUHJvcGVydHlEZWZpbml0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkNsYXNzUHJpdmF0ZVByb3BlcnR5XCIgfHwgbm9kZS50eXBlID09PSBcIkNvbnRpbnVlU3RhdGVtZW50XCIgfHwgbm9kZS50eXBlID09PSBcIkRlYnVnZ2VyU3RhdGVtZW50XCIgfHwgbm9kZS50eXBlID09PSBcIkRlY2xhcmVDbGFzc1wiIHx8IG5vZGUudHlwZSA9PT0gXCJEZWNsYXJlRXhwb3J0QWxsRGVjbGFyYXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkRlY2xhcmVGdW5jdGlvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJEZWNsYXJlSW50ZXJmYWNlXCIgfHwgbm9kZS50eXBlID09PSBcIkRlY2xhcmVNb2R1bGVcIiB8fCBub2RlLnR5cGUgPT09IFwiRGVjbGFyZU1vZHVsZUV4cG9ydHNcIiB8fCBub2RlLnR5cGUgPT09IFwiRGVjbGFyZVZhcmlhYmxlXCIgfHwgbm9kZS50eXBlID09PSBcIkRvV2hpbGVTdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiRW51bURlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiRm9ySW5TdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiRm9yT2ZTdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiRm9yU3RhdGVtZW50XCIgfHwgbm9kZS50eXBlID09PSBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiSWZTdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiSW1wb3J0RGVjbGFyYXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiSW50ZXJmYWNlRGVjbGFyYXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiTGFiZWxlZFN0YXRlbWVudFwiIHx8IG5vZGUudHlwZSA9PT0gXCJNZXRob2REZWZpbml0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlJldHVyblN0YXRlbWVudFwiIHx8IG5vZGUudHlwZSA9PT0gXCJTd2l0Y2hTdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiVGhyb3dTdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiVHJ5U3RhdGVtZW50XCIgfHwgbm9kZS50eXBlID09PSBcIlRTRGVjbGFyZUZ1bmN0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlRTRW51bURlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlRTSW1wb3J0RXF1YWxzRGVjbGFyYXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiVFNJbnRlcmZhY2VEZWNsYXJhdGlvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJUU01vZHVsZURlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlRTTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiVHlwZUFsaWFzXCIgfHwgbm9kZS50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiV2hpbGVTdGF0ZW1lbnRcIiB8fCBub2RlLnR5cGUgPT09IFwiV2l0aFN0YXRlbWVudFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1BhdGhJbkZvclN0YXRlbWVudEluaXRpYWxpemVyKHBhdGgpIHtcbiAgICAgIGxldCBpID0gMDtcbiAgICAgIGxldCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKGkrKyk7XG4gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LnR5cGUgPT09IFwiRm9yU3RhdGVtZW50XCIgJiYgcGFyZW50LmluaXQgPT09IG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBub2RlID0gcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpbmNsdWRlc0Z1bmN0aW9uVHlwZUluT2JqZWN0VHlwZShub2RlKSB7XG4gICAgICByZXR1cm4gaGFzTm9kZShub2RlLCAobjEpID0+IG4xLnR5cGUgPT09IFwiT2JqZWN0VHlwZUFubm90YXRpb25cIiAmJiBoYXNOb2RlKG4xLCAobjIpID0+IG4yLnR5cGUgPT09IFwiRnVuY3Rpb25UeXBlQW5ub3RhdGlvblwiIHx8IHZvaWQgMCkgfHwgdm9pZCAwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZW5kc1dpdGhSaWdodEJyYWNrZXQobm9kZSkge1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIk9iamVjdEV4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRm9sbG93ZWRCeVJpZ2h0QnJhY2tldChwYXRoKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBjb25zdCBuYW1lID0gcGF0aC5nZXROYW1lKCk7XG4gICAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJOR1BpcGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSBcIm51bWJlclwiICYmIHBhcmVudC5hcmd1bWVudHNbbmFtZV0gPT09IG5vZGUgJiYgcGFyZW50LmFyZ3VtZW50cy5sZW5ndGggLSAxID09PSBuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5jYWxsUGFyZW50KGlzRm9sbG93ZWRCeVJpZ2h0QnJhY2tldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiT2JqZWN0UHJvcGVydHlcIjpcbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJ2YWx1ZVwiKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRQYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoMSk7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TGFzdChwYXJlbnRQYXJlbnQucHJvcGVydGllcykgPT09IHBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJCaW5hcnlFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJMb2dpY2FsRXhwcmVzc2lvblwiOlxuICAgICAgICAgIGlmIChuYW1lID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoLmNhbGxQYXJlbnQoaXNGb2xsb3dlZEJ5UmlnaHRCcmFja2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICBpZiAobmFtZSA9PT0gXCJhbHRlcm5hdGVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGguY2FsbFBhcmVudChpc0ZvbGxvd2VkQnlSaWdodEJyYWNrZXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlVuYXJ5RXhwcmVzc2lvblwiOlxuICAgICAgICAgIGlmIChwYXJlbnQucHJlZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5jYWxsUGFyZW50KGlzRm9sbG93ZWRCeVJpZ2h0QnJhY2tldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGRXcmFwRnVuY3Rpb25Gb3JFeHBvcnREZWZhdWx0KHBhdGgsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiRnVuY3Rpb25FeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkNsYXNzRXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQudHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiB8fCAhbmVlZHNQYXJlbnMocGF0aCwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBpZiAoIWhhc05ha2VkTGVmdFNpZGUobm9kZSkgfHwgcGFyZW50LnR5cGUgIT09IFwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCIgJiYgbmVlZHNQYXJlbnMocGF0aCwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdGguY2FsbCgoY2hpbGRQYXRoKSA9PiBzaG91bGRXcmFwRnVuY3Rpb25Gb3JFeHBvcnREZWZhdWx0KGNoaWxkUGF0aCwgb3B0aW9ucyksIC4uLmdldExlZnRTaWRlUGF0aE5hbWUocGF0aCwgbm9kZSkpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBuZWVkc1BhcmVucztcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wcmludF9wcmVwcm9jZXNzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC1wcmVwcm9jZXNzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBwcmVwcm9jZXNzKGFzdCwgb3B0aW9ucykge1xuICAgICAgc3dpdGNoIChvcHRpb25zLnBhcnNlcikge1xuICAgICAgICBjYXNlIFwianNvblwiOlxuICAgICAgICBjYXNlIFwianNvbjVcIjpcbiAgICAgICAgY2FzZSBcImpzb24tc3RyaW5naWZ5XCI6XG4gICAgICAgIGNhc2UgXCJfX2pzX2V4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIl9fdnVlX2V4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIl9fdnVlX3RzX2V4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhc3QpLCB7fSwge1xuICAgICAgICAgICAgdHlwZTogb3B0aW9ucy5wYXJzZXIuc3RhcnRzV2l0aChcIl9fXCIpID8gXCJKc0V4cHJlc3Npb25Sb290XCIgOiBcIkpzb25Sb290XCIsXG4gICAgICAgICAgICBub2RlOiBhc3QsXG4gICAgICAgICAgICBjb21tZW50czogW10sXG4gICAgICAgICAgICByb290TWFya2VyOiBvcHRpb25zLnJvb3RNYXJrZXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gYXN0O1xuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmVwcm9jZXNzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2h0bWxfYmluZGluZyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvaHRtbC1iaW5kaW5nLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBpbmRlbnRcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIGZ1bmN0aW9uIHByaW50SHRtbEJpbmRpbmcocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAob3B0aW9ucy5fX29uSHRtbEJpbmRpbmdSb290ICYmIHBhdGguZ2V0TmFtZSgpID09PSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuX19vbkh0bWxCaW5kaW5nUm9vdChub2RlLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiRmlsZVwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLl9faXNWdWVGb3JCaW5kaW5nTGVmdCkge1xuICAgICAgICByZXR1cm4gcGF0aC5jYWxsKChmdW5jdGlvbkRlY2xhcmF0aW9uUGF0aCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByaW50ZWQgPSBqb2luKFtcIixcIiwgbGluZV0sIGZ1bmN0aW9uRGVjbGFyYXRpb25QYXRoLm1hcChwcmludCwgXCJwYXJhbXNcIikpO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgIH0gPSBmdW5jdGlvbkRlY2xhcmF0aW9uUGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgICAgIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJpbnRlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgZ3JvdXAocHJpbnRlZCldKSwgc29mdGxpbmUsIFwiKVwiXTtcbiAgICAgICAgfSwgXCJwcm9ncmFtXCIsIFwiYm9keVwiLCAwKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLl9faXNWdWVCaW5kaW5ncykge1xuICAgICAgICByZXR1cm4gcGF0aC5jYWxsKChmdW5jdGlvbkRlY2xhcmF0aW9uUGF0aCkgPT4gam9pbihbXCIsXCIsIGxpbmVdLCBmdW5jdGlvbkRlY2xhcmF0aW9uUGF0aC5tYXAocHJpbnQsIFwicGFyYW1zXCIpKSwgXCJwcm9ncmFtXCIsIFwiYm9keVwiLCAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaXNWdWVFdmVudEJpbmRpbmdFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgICAgc3dpdGNoIChub2RlLnByb3BlcnR5LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6XG4gICAgICAgICAgICBjYXNlIFwiTnVtZXJpY0xpdGVyYWxcIjpcbiAgICAgICAgICAgIGNhc2UgXCJTdHJpbmdMaXRlcmFsXCI6XG4gICAgICAgICAgICAgIHJldHVybiBpc1Z1ZUV2ZW50QmluZGluZ0V4cHJlc3Npb24obm9kZS5vYmplY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBpc1Z1ZUV2ZW50QmluZGluZ0V4cHJlc3Npb24sXG4gICAgICBwcmludEh0bWxCaW5kaW5nXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9iaW5hcnlpc2ggPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L2JpbmFyeWlzaC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9jb21tZW50cygpO1xuICAgIHZhciB7XG4gICAgICBnZXRMYXN0XG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgYWxpZ24sXG4gICAgICAgIGlmQnJlYWssXG4gICAgICAgIGluZGVudElmQnJlYWtcbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICBjbGVhbkRvYyxcbiAgICAgICAgZ2V0RG9jUGFydHMsXG4gICAgICAgIGlzQ29uY2F0XG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgaGFzTGVhZGluZ093bkxpbmVDb21tZW50LFxuICAgICAgaXNCaW5hcnlpc2gsXG4gICAgICBpc0pzeE5vZGUsXG4gICAgICBzaG91bGRGbGF0dGVuLFxuICAgICAgaGFzQ29tbWVudCxcbiAgICAgIENvbW1lbnRDaGVja0ZsYWdzLFxuICAgICAgaXNDYWxsRXhwcmVzc2lvbixcbiAgICAgIGlzTWVtYmVyRXhwcmVzc2lvbixcbiAgICAgIGlzT2JqZWN0UHJvcGVydHksXG4gICAgICBpc0VuYWJsZWRIYWNrUGlwZWxpbmVcbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICB2YXIgdWlkID0gMDtcbiAgICBmdW5jdGlvbiBwcmludEJpbmFyeWlzaEV4cHJlc3Npb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIGNvbnN0IHBhcmVudFBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgxKTtcbiAgICAgIGNvbnN0IGlzSW5zaWRlUGFyZW50aGVzaXMgPSBub2RlICE9PSBwYXJlbnQuYm9keSAmJiAocGFyZW50LnR5cGUgPT09IFwiSWZTdGF0ZW1lbnRcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJXaGlsZVN0YXRlbWVudFwiIHx8IHBhcmVudC50eXBlID09PSBcIlN3aXRjaFN0YXRlbWVudFwiIHx8IHBhcmVudC50eXBlID09PSBcIkRvV2hpbGVTdGF0ZW1lbnRcIik7XG4gICAgICBjb25zdCBpc0hhY2tQaXBlbGluZSA9IGlzRW5hYmxlZEhhY2tQaXBlbGluZShvcHRpb25zKSAmJiBub2RlLm9wZXJhdG9yID09PSBcInw+XCI7XG4gICAgICBjb25zdCBwYXJ0cyA9IHByaW50QmluYXJ5aXNoRXhwcmVzc2lvbnMocGF0aCwgcHJpbnQsIG9wdGlvbnMsIGZhbHNlLCBpc0luc2lkZVBhcmVudGhlc2lzKTtcbiAgICAgIGlmIChpc0luc2lkZVBhcmVudGhlc2lzKSB7XG4gICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgIH1cbiAgICAgIGlmIChpc0hhY2tQaXBlbGluZSkge1xuICAgICAgICByZXR1cm4gZ3JvdXAocGFydHMpO1xuICAgICAgfVxuICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24ocGFyZW50KSAmJiBwYXJlbnQuY2FsbGVlID09PSBub2RlIHx8IHBhcmVudC50eXBlID09PSBcIlVuYXJ5RXhwcmVzc2lvblwiIHx8IGlzTWVtYmVyRXhwcmVzc2lvbihwYXJlbnQpICYmICFwYXJlbnQuY29tcHV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwKFtpbmRlbnQoW3NvZnRsaW5lLCAuLi5wYXJ0c10pLCBzb2Z0bGluZV0pO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2hvdWxkTm90SW5kZW50ID0gcGFyZW50LnR5cGUgPT09IFwiUmV0dXJuU3RhdGVtZW50XCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVGhyb3dTdGF0ZW1lbnRcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJKU1hFeHByZXNzaW9uQ29udGFpbmVyXCIgJiYgcGFyZW50UGFyZW50LnR5cGUgPT09IFwiSlNYQXR0cmlidXRlXCIgfHwgbm9kZS5vcGVyYXRvciAhPT0gXCJ8XCIgJiYgcGFyZW50LnR5cGUgPT09IFwiSnNFeHByZXNzaW9uUm9vdFwiIHx8IG5vZGUudHlwZSAhPT0gXCJOR1BpcGVFeHByZXNzaW9uXCIgJiYgKHBhcmVudC50eXBlID09PSBcIk5HUm9vdFwiICYmIG9wdGlvbnMucGFyc2VyID09PSBcIl9fbmdfYmluZGluZ1wiIHx8IHBhcmVudC50eXBlID09PSBcIk5HTWljcm9zeW50YXhFeHByZXNzaW9uXCIgJiYgcGFyZW50UGFyZW50LnR5cGUgPT09IFwiTkdNaWNyb3N5bnRheFwiICYmIHBhcmVudFBhcmVudC5ib2R5Lmxlbmd0aCA9PT0gMSkgfHwgbm9kZSA9PT0gcGFyZW50LmJvZHkgJiYgcGFyZW50LnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiB8fCBub2RlICE9PSBwYXJlbnQuYm9keSAmJiBwYXJlbnQudHlwZSA9PT0gXCJGb3JTdGF0ZW1lbnRcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIiAmJiBwYXJlbnRQYXJlbnQudHlwZSAhPT0gXCJSZXR1cm5TdGF0ZW1lbnRcIiAmJiBwYXJlbnRQYXJlbnQudHlwZSAhPT0gXCJUaHJvd1N0YXRlbWVudFwiICYmICFpc0NhbGxFeHByZXNzaW9uKHBhcmVudFBhcmVudCkgfHwgcGFyZW50LnR5cGUgPT09IFwiVGVtcGxhdGVMaXRlcmFsXCI7XG4gICAgICBjb25zdCBzaG91bGRJbmRlbnRJZklubGluaW5nID0gcGFyZW50LnR5cGUgPT09IFwiQXNzaWdubWVudEV4cHJlc3Npb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJWYXJpYWJsZURlY2xhcmF0b3JcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJDbGFzc1Byb3BlcnR5XCIgfHwgcGFyZW50LnR5cGUgPT09IFwiUHJvcGVydHlEZWZpbml0aW9uXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVFNBYnN0cmFjdFByb3BlcnR5RGVmaW5pdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIkNsYXNzUHJpdmF0ZVByb3BlcnR5XCIgfHwgaXNPYmplY3RQcm9wZXJ0eShwYXJlbnQpO1xuICAgICAgY29uc3Qgc2FtZVByZWNlZGVuY2VTdWJFeHByZXNzaW9uID0gaXNCaW5hcnlpc2gobm9kZS5sZWZ0KSAmJiBzaG91bGRGbGF0dGVuKG5vZGUub3BlcmF0b3IsIG5vZGUubGVmdC5vcGVyYXRvcik7XG4gICAgICBpZiAoc2hvdWxkTm90SW5kZW50IHx8IHNob3VsZElubGluZUxvZ2ljYWxFeHByZXNzaW9uKG5vZGUpICYmICFzYW1lUHJlY2VkZW5jZVN1YkV4cHJlc3Npb24gfHwgIXNob3VsZElubGluZUxvZ2ljYWxFeHByZXNzaW9uKG5vZGUpICYmIHNob3VsZEluZGVudElmSW5saW5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwKHBhcnRzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBoYXNKc3ggPSBpc0pzeE5vZGUobm9kZS5yaWdodCk7XG4gICAgICBjb25zdCBmaXJzdEdyb3VwSW5kZXggPSBwYXJ0cy5maW5kSW5kZXgoKHBhcnQpID0+IHR5cGVvZiBwYXJ0ICE9PSBcInN0cmluZ1wiICYmICFBcnJheS5pc0FycmF5KHBhcnQpICYmIHBhcnQudHlwZSA9PT0gXCJncm91cFwiKTtcbiAgICAgIGNvbnN0IGhlYWRQYXJ0cyA9IHBhcnRzLnNsaWNlKDAsIGZpcnN0R3JvdXBJbmRleCA9PT0gLTEgPyAxIDogZmlyc3RHcm91cEluZGV4ICsgMSk7XG4gICAgICBjb25zdCByZXN0ID0gcGFydHMuc2xpY2UoaGVhZFBhcnRzLmxlbmd0aCwgaGFzSnN4ID8gLTEgOiB2b2lkIDApO1xuICAgICAgY29uc3QgZ3JvdXBJZCA9IFN5bWJvbChcImxvZ2ljYWxDaGFpbi1cIiArICsrdWlkKTtcbiAgICAgIGNvbnN0IGNoYWluID0gZ3JvdXAoWy4uLmhlYWRQYXJ0cywgaW5kZW50KHJlc3QpXSwge1xuICAgICAgICBpZDogZ3JvdXBJZFxuICAgICAgfSk7XG4gICAgICBpZiAoIWhhc0pzeCkge1xuICAgICAgICByZXR1cm4gY2hhaW47XG4gICAgICB9XG4gICAgICBjb25zdCBqc3hQYXJ0ID0gZ2V0TGFzdChwYXJ0cyk7XG4gICAgICByZXR1cm4gZ3JvdXAoW2NoYWluLCBpbmRlbnRJZkJyZWFrKGpzeFBhcnQsIHtcbiAgICAgICAgZ3JvdXBJZFxuICAgICAgfSldKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRCaW5hcnlpc2hFeHByZXNzaW9ucyhwYXRoLCBwcmludCwgb3B0aW9ucywgaXNOZXN0ZWQsIGlzSW5zaWRlUGFyZW50aGVzaXMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIWlzQmluYXJ5aXNoKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBbZ3JvdXAocHJpbnQoKSldO1xuICAgICAgfVxuICAgICAgbGV0IHBhcnRzID0gW107XG4gICAgICBpZiAoc2hvdWxkRmxhdHRlbihub2RlLm9wZXJhdG9yLCBub2RlLmxlZnQub3BlcmF0b3IpKSB7XG4gICAgICAgIHBhcnRzID0gcGF0aC5jYWxsKChsZWZ0KSA9PiBwcmludEJpbmFyeWlzaEV4cHJlc3Npb25zKGxlZnQsIHByaW50LCBvcHRpb25zLCB0cnVlLCBpc0luc2lkZVBhcmVudGhlc2lzKSwgXCJsZWZ0XCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChncm91cChwcmludChcImxlZnRcIikpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNob3VsZElubGluZSA9IHNob3VsZElubGluZUxvZ2ljYWxFeHByZXNzaW9uKG5vZGUpO1xuICAgICAgY29uc3QgbGluZUJlZm9yZU9wZXJhdG9yID0gKG5vZGUub3BlcmF0b3IgPT09IFwifD5cIiB8fCBub2RlLnR5cGUgPT09IFwiTkdQaXBlRXhwcmVzc2lvblwiIHx8IG5vZGUub3BlcmF0b3IgPT09IFwifFwiICYmIG9wdGlvbnMucGFyc2VyID09PSBcIl9fdnVlX2V4cHJlc3Npb25cIikgJiYgIWhhc0xlYWRpbmdPd25MaW5lQ29tbWVudChvcHRpb25zLm9yaWdpbmFsVGV4dCwgbm9kZS5yaWdodCk7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IG5vZGUudHlwZSA9PT0gXCJOR1BpcGVFeHByZXNzaW9uXCIgPyBcInxcIiA6IG5vZGUub3BlcmF0b3I7XG4gICAgICBjb25zdCByaWdodFN1ZmZpeCA9IG5vZGUudHlwZSA9PT0gXCJOR1BpcGVFeHByZXNzaW9uXCIgJiYgbm9kZS5hcmd1bWVudHMubGVuZ3RoID4gMCA/IGdyb3VwKGluZGVudChbc29mdGxpbmUsIFwiOiBcIiwgam9pbihbc29mdGxpbmUsIFwiOlwiLCBpZkJyZWFrKFwiIFwiKV0sIHBhdGgubWFwKHByaW50LCBcImFyZ3VtZW50c1wiKS5tYXAoKGFyZykgPT4gYWxpZ24oMiwgZ3JvdXAoYXJnKSkpKV0pKSA6IFwiXCI7XG4gICAgICBsZXQgcmlnaHQ7XG4gICAgICBpZiAoc2hvdWxkSW5saW5lKSB7XG4gICAgICAgIHJpZ2h0ID0gW29wZXJhdG9yLCBcIiBcIiwgcHJpbnQoXCJyaWdodFwiKSwgcmlnaHRTdWZmaXhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNIYWNrUGlwZWxpbmUgPSBpc0VuYWJsZWRIYWNrUGlwZWxpbmUob3B0aW9ucykgJiYgb3BlcmF0b3IgPT09IFwifD5cIjtcbiAgICAgICAgY29uc3QgcmlnaHRDb250ZW50ID0gaXNIYWNrUGlwZWxpbmUgPyBwYXRoLmNhbGwoKGxlZnQpID0+IHByaW50QmluYXJ5aXNoRXhwcmVzc2lvbnMobGVmdCwgcHJpbnQsIG9wdGlvbnMsIHRydWUsIGlzSW5zaWRlUGFyZW50aGVzaXMpLCBcInJpZ2h0XCIpIDogcHJpbnQoXCJyaWdodFwiKTtcbiAgICAgICAgcmlnaHQgPSBbbGluZUJlZm9yZU9wZXJhdG9yID8gbGluZSA6IFwiXCIsIG9wZXJhdG9yLCBsaW5lQmVmb3JlT3BlcmF0b3IgPyBcIiBcIiA6IGxpbmUsIHJpZ2h0Q29udGVudCwgcmlnaHRTdWZmaXhdO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBjb25zdCBzaG91bGRCcmVhayA9IGhhc0NvbW1lbnQobm9kZS5sZWZ0LCBDb21tZW50Q2hlY2tGbGFncy5UcmFpbGluZyB8IENvbW1lbnRDaGVja0ZsYWdzLkxpbmUpO1xuICAgICAgY29uc3Qgc2hvdWxkR3JvdXAgPSBzaG91bGRCcmVhayB8fCAhKGlzSW5zaWRlUGFyZW50aGVzaXMgJiYgbm9kZS50eXBlID09PSBcIkxvZ2ljYWxFeHByZXNzaW9uXCIpICYmIHBhcmVudC50eXBlICE9PSBub2RlLnR5cGUgJiYgbm9kZS5sZWZ0LnR5cGUgIT09IG5vZGUudHlwZSAmJiBub2RlLnJpZ2h0LnR5cGUgIT09IG5vZGUudHlwZTtcbiAgICAgIHBhcnRzLnB1c2gobGluZUJlZm9yZU9wZXJhdG9yID8gXCJcIiA6IFwiIFwiLCBzaG91bGRHcm91cCA/IGdyb3VwKHJpZ2h0LCB7XG4gICAgICAgIHNob3VsZEJyZWFrXG4gICAgICB9KSA6IHJpZ2h0KTtcbiAgICAgIGlmIChpc05lc3RlZCAmJiBoYXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IHByaW50ZWQgPSBjbGVhbkRvYyhwcmludENvbW1lbnRzKHBhdGgsIHBhcnRzLCBvcHRpb25zKSk7XG4gICAgICAgIGlmIChpc0NvbmNhdChwcmludGVkKSB8fCBwcmludGVkLnR5cGUgPT09IFwiZmlsbFwiKSB7XG4gICAgICAgICAgcmV0dXJuIGdldERvY1BhcnRzKHByaW50ZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcHJpbnRlZF07XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZElubGluZUxvZ2ljYWxFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiTG9naWNhbEV4cHJlc3Npb25cIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5yaWdodC50eXBlID09PSBcIk9iamVjdEV4cHJlc3Npb25cIiAmJiBub2RlLnJpZ2h0LnByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnJpZ2h0LnR5cGUgPT09IFwiQXJyYXlFeHByZXNzaW9uXCIgJiYgbm9kZS5yaWdodC5lbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzSnN4Tm9kZShub2RlLnJpZ2h0KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRCaW5hcnlpc2hFeHByZXNzaW9uLFxuICAgICAgc2hvdWxkSW5saW5lTG9naWNhbEV4cHJlc3Npb25cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2FuZ3VsYXIgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L2FuZ3VsYXIuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lLFxuICAgICAgICBncm91cFxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGhhc05vZGUsXG4gICAgICBoYXNDb21tZW50LFxuICAgICAgZ2V0Q29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRCaW5hcnlpc2hFeHByZXNzaW9uXG4gICAgfSA9IHJlcXVpcmVfYmluYXJ5aXNoKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRBbmd1bGFyKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKCFub2RlLnR5cGUuc3RhcnRzV2l0aChcIk5HXCIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJOR1Jvb3RcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwibm9kZVwiKSwgIWhhc0NvbW1lbnQobm9kZS5ub2RlKSA/IFwiXCIgOiBcIiAvL1wiICsgZ2V0Q29tbWVudHMobm9kZS5ub2RlKVswXS52YWx1ZS50cmltRW5kKCldO1xuICAgICAgICBjYXNlIFwiTkdQaXBlRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludEJpbmFyeWlzaEV4cHJlc3Npb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiTkdDaGFpbmVkRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBncm91cChqb2luKFtcIjtcIiwgbGluZV0sIHBhdGgubWFwKChjaGlsZFBhdGgpID0+IGhhc05nU2lkZUVmZmVjdChjaGlsZFBhdGgpID8gcHJpbnQoKSA6IFtcIihcIiwgcHJpbnQoKSwgXCIpXCJdLCBcImV4cHJlc3Npb25zXCIpKSk7XG4gICAgICAgIGNhc2UgXCJOR0VtcHR5RXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBjYXNlIFwiTkdRdW90ZWRFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFtub2RlLnByZWZpeCwgXCI6IFwiLCBub2RlLnZhbHVlLnRyaW0oKV07XG4gICAgICAgIGNhc2UgXCJOR01pY3Jvc3ludGF4XCI6XG4gICAgICAgICAgcmV0dXJuIHBhdGgubWFwKChjaGlsZFBhdGgsIGluZGV4KSA9PiBbaW5kZXggPT09IDAgPyBcIlwiIDogaXNOZ0Zvck9mKGNoaWxkUGF0aC5nZXRWYWx1ZSgpLCBpbmRleCwgbm9kZSkgPyBcIiBcIiA6IFtcIjtcIiwgbGluZV0sIHByaW50KCldLCBcImJvZHlcIik7XG4gICAgICAgIGNhc2UgXCJOR01pY3Jvc3ludGF4S2V5XCI6XG4gICAgICAgICAgcmV0dXJuIC9eWyRfYS16XVtcXHckXSooPzotWyRfYS16XVtcXHckXSkqJC9pLnRlc3Qobm9kZS5uYW1lKSA/IG5vZGUubmFtZSA6IEpTT04uc3RyaW5naWZ5KG5vZGUubmFtZSk7XG4gICAgICAgIGNhc2UgXCJOR01pY3Jvc3ludGF4RXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJleHByZXNzaW9uXCIpLCBub2RlLmFsaWFzID09PSBudWxsID8gXCJcIiA6IFtcIiBhcyBcIiwgcHJpbnQoXCJhbGlhc1wiKV1dO1xuICAgICAgICBjYXNlIFwiTkdNaWNyb3N5bnRheEtleWVkRXhwcmVzc2lvblwiOiB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoLmdldE5hbWUoKTtcbiAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkTm90UHJpbnRDb2xvbiA9IGlzTmdGb3JPZihub2RlLCBpbmRleCwgcGFyZW50Tm9kZSkgfHwgKGluZGV4ID09PSAxICYmIChub2RlLmtleS5uYW1lID09PSBcInRoZW5cIiB8fCBub2RlLmtleS5uYW1lID09PSBcImVsc2VcIikgfHwgaW5kZXggPT09IDIgJiYgbm9kZS5rZXkubmFtZSA9PT0gXCJlbHNlXCIgJiYgcGFyZW50Tm9kZS5ib2R5W2luZGV4IC0gMV0udHlwZSA9PT0gXCJOR01pY3Jvc3ludGF4S2V5ZWRFeHByZXNzaW9uXCIgJiYgcGFyZW50Tm9kZS5ib2R5W2luZGV4IC0gMV0ua2V5Lm5hbWUgPT09IFwidGhlblwiKSAmJiBwYXJlbnROb2RlLmJvZHlbMF0udHlwZSA9PT0gXCJOR01pY3Jvc3ludGF4RXhwcmVzc2lvblwiO1xuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJrZXlcIiksIHNob3VsZE5vdFByaW50Q29sb24gPyBcIiBcIiA6IFwiOiBcIiwgcHJpbnQoXCJleHByZXNzaW9uXCIpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiTkdNaWNyb3N5bnRheExldFwiOlxuICAgICAgICAgIHJldHVybiBbXCJsZXQgXCIsIHByaW50KFwia2V5XCIpLCBub2RlLnZhbHVlID09PSBudWxsID8gXCJcIiA6IFtcIiA9IFwiLCBwcmludChcInZhbHVlXCIpXV07XG4gICAgICAgIGNhc2UgXCJOR01pY3Jvc3ludGF4QXNcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwia2V5XCIpLCBcIiBhcyBcIiwgcHJpbnQoXCJhbGlhc1wiKV07XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIEFuZ3VsYXIgbm9kZSB0eXBlOiAke0pTT04uc3RyaW5naWZ5KG5vZGUudHlwZSl9LmApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpc05nRm9yT2Yobm9kZSwgaW5kZXgsIHBhcmVudE5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiTkdNaWNyb3N5bnRheEtleWVkRXhwcmVzc2lvblwiICYmIG5vZGUua2V5Lm5hbWUgPT09IFwib2ZcIiAmJiBpbmRleCA9PT0gMSAmJiBwYXJlbnROb2RlLmJvZHlbMF0udHlwZSA9PT0gXCJOR01pY3Jvc3ludGF4TGV0XCIgJiYgcGFyZW50Tm9kZS5ib2R5WzBdLnZhbHVlID09PSBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNOZ1NpZGVFZmZlY3QocGF0aCkge1xuICAgICAgcmV0dXJuIGhhc05vZGUocGF0aC5nZXRWYWx1ZSgpLCAobm9kZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgIGNhc2Ugdm9pZCAwOlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIGNhc2UgXCJDYWxsRXhwcmVzc2lvblwiOlxuICAgICAgICAgIGNhc2UgXCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgY2FzZSBcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCI6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50QW5ndWxhclxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfanN4ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9qc3guanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBwcmludENvbW1lbnRzLFxuICAgICAgcHJpbnREYW5nbGluZ0NvbW1lbnRzXG4gICAgfSA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBjb25kaXRpb25hbEdyb3VwLFxuICAgICAgICBmaWxsLFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBsaW5lU3VmZml4Qm91bmRhcnksXG4gICAgICAgIGpvaW5cbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICB3aWxsQnJlYWtcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBnZXRMYXN0LFxuICAgICAgZ2V0UHJlZmVycmVkUXVvdGVcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGlzSnN4Tm9kZSxcbiAgICAgIHJhd1RleHQsXG4gICAgICBpc0xpdGVyYWwsXG4gICAgICBpc0NhbGxFeHByZXNzaW9uLFxuICAgICAgaXNTdHJpbmdMaXRlcmFsLFxuICAgICAgaXNCaW5hcnlpc2gsXG4gICAgICBoYXNDb21tZW50LFxuICAgICAgQ29tbWVudENoZWNrRmxhZ3MsXG4gICAgICBoYXNOb2RlSWdub3JlQ29tbWVudFxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciBwYXRoTmVlZHNQYXJlbnMgPSByZXF1aXJlX25lZWRzX3BhcmVucygpO1xuICAgIHZhciB7XG4gICAgICB3aWxsUHJpbnRPd25Db21tZW50c1xuICAgIH0gPSByZXF1aXJlX2NvbW1lbnRzMigpO1xuICAgIHZhciBpc0VtcHR5U3RyaW5nT3JBbnlMaW5lID0gKGRvYzIpID0+IGRvYzIgPT09IFwiXCIgfHwgZG9jMiA9PT0gbGluZSB8fCBkb2MyID09PSBoYXJkbGluZSB8fCBkb2MyID09PSBzb2Z0bGluZTtcbiAgICBmdW5jdGlvbiBwcmludEpzeEVsZW1lbnRJbnRlcm5hbChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiSlNYRWxlbWVudFwiICYmIGlzRW1wdHlKc3hFbGVtZW50KG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBbcHJpbnQoXCJvcGVuaW5nRWxlbWVudFwiKSwgcHJpbnQoXCJjbG9zaW5nRWxlbWVudFwiKV07XG4gICAgICB9XG4gICAgICBjb25zdCBvcGVuaW5nTGluZXMgPSBub2RlLnR5cGUgPT09IFwiSlNYRWxlbWVudFwiID8gcHJpbnQoXCJvcGVuaW5nRWxlbWVudFwiKSA6IHByaW50KFwib3BlbmluZ0ZyYWdtZW50XCIpO1xuICAgICAgY29uc3QgY2xvc2luZ0xpbmVzID0gbm9kZS50eXBlID09PSBcIkpTWEVsZW1lbnRcIiA/IHByaW50KFwiY2xvc2luZ0VsZW1lbnRcIikgOiBwcmludChcImNsb3NpbmdGcmFnbWVudFwiKTtcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBub2RlLmNoaWxkcmVuWzBdLnR5cGUgPT09IFwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lclwiICYmIChub2RlLmNoaWxkcmVuWzBdLmV4cHJlc3Npb24udHlwZSA9PT0gXCJUZW1wbGF0ZUxpdGVyYWxcIiB8fCBub2RlLmNoaWxkcmVuWzBdLmV4cHJlc3Npb24udHlwZSA9PT0gXCJUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb25cIikpIHtcbiAgICAgICAgcmV0dXJuIFtvcGVuaW5nTGluZXMsIC4uLnBhdGgubWFwKHByaW50LCBcImNoaWxkcmVuXCIpLCBjbG9zaW5nTGluZXNdO1xuICAgICAgfVxuICAgICAgbm9kZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICBpZiAoaXNKc3hXaGl0ZXNwYWNlRXhwcmVzc2lvbihjaGlsZCkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogXCJKU1hUZXh0XCIsXG4gICAgICAgICAgICB2YWx1ZTogXCIgXCIsXG4gICAgICAgICAgICByYXc6IFwiIFwiXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGNvbnRhaW5zVGFnID0gbm9kZS5jaGlsZHJlbi5zb21lKGlzSnN4Tm9kZSk7XG4gICAgICBjb25zdCBjb250YWluc011bHRpcGxlRXhwcmVzc2lvbnMgPSBub2RlLmNoaWxkcmVuLmZpbHRlcigoY2hpbGQpID0+IGNoaWxkLnR5cGUgPT09IFwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lclwiKS5sZW5ndGggPiAxO1xuICAgICAgY29uc3QgY29udGFpbnNNdWx0aXBsZUF0dHJpYnV0ZXMgPSBub2RlLnR5cGUgPT09IFwiSlNYRWxlbWVudFwiICYmIG5vZGUub3BlbmluZ0VsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGggPiAxO1xuICAgICAgbGV0IGZvcmNlZEJyZWFrID0gd2lsbEJyZWFrKG9wZW5pbmdMaW5lcykgfHwgY29udGFpbnNUYWcgfHwgY29udGFpbnNNdWx0aXBsZUF0dHJpYnV0ZXMgfHwgY29udGFpbnNNdWx0aXBsZUV4cHJlc3Npb25zO1xuICAgICAgY29uc3QgaXNNZHhCbG9jayA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpLnJvb3RNYXJrZXIgPT09IFwibWR4XCI7XG4gICAgICBjb25zdCByYXdKc3hXaGl0ZXNwYWNlID0gb3B0aW9ucy5zaW5nbGVRdW90ZSA/IFwieycgJ31cIiA6ICd7XCIgXCJ9JztcbiAgICAgIGNvbnN0IGpzeFdoaXRlc3BhY2UgPSBpc01keEJsb2NrID8gXCIgXCIgOiBpZkJyZWFrKFtyYXdKc3hXaGl0ZXNwYWNlLCBzb2Z0bGluZV0sIFwiIFwiKTtcbiAgICAgIGNvbnN0IGlzRmFjZWJvb2tUcmFuc2xhdGlvblRhZyA9IG5vZGUub3BlbmluZ0VsZW1lbnQgJiYgbm9kZS5vcGVuaW5nRWxlbWVudC5uYW1lICYmIG5vZGUub3BlbmluZ0VsZW1lbnQubmFtZS5uYW1lID09PSBcImZidFwiO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBwcmludEpzeENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50LCBqc3hXaGl0ZXNwYWNlLCBpc0ZhY2Vib29rVHJhbnNsYXRpb25UYWcpO1xuICAgICAgY29uc3QgY29udGFpbnNUZXh0ID0gbm9kZS5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gaXNNZWFuaW5nZnVsSnN4VGV4dChjaGlsZCkpO1xuICAgICAgZm9yIChsZXQgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGlzUGFpck9mRW1wdHlTdHJpbmdzID0gY2hpbGRyZW5baV0gPT09IFwiXCIgJiYgY2hpbGRyZW5baSArIDFdID09PSBcIlwiO1xuICAgICAgICBjb25zdCBpc1BhaXJPZkhhcmRsaW5lcyA9IGNoaWxkcmVuW2ldID09PSBoYXJkbGluZSAmJiBjaGlsZHJlbltpICsgMV0gPT09IFwiXCIgJiYgY2hpbGRyZW5baSArIDJdID09PSBoYXJkbGluZTtcbiAgICAgICAgY29uc3QgaXNMaW5lRm9sbG93ZWRCeUpzeFdoaXRlc3BhY2UgPSAoY2hpbGRyZW5baV0gPT09IHNvZnRsaW5lIHx8IGNoaWxkcmVuW2ldID09PSBoYXJkbGluZSkgJiYgY2hpbGRyZW5baSArIDFdID09PSBcIlwiICYmIGNoaWxkcmVuW2kgKyAyXSA9PT0ganN4V2hpdGVzcGFjZTtcbiAgICAgICAgY29uc3QgaXNKc3hXaGl0ZXNwYWNlRm9sbG93ZWRCeUxpbmUgPSBjaGlsZHJlbltpXSA9PT0ganN4V2hpdGVzcGFjZSAmJiBjaGlsZHJlbltpICsgMV0gPT09IFwiXCIgJiYgKGNoaWxkcmVuW2kgKyAyXSA9PT0gc29mdGxpbmUgfHwgY2hpbGRyZW5baSArIDJdID09PSBoYXJkbGluZSk7XG4gICAgICAgIGNvbnN0IGlzRG91YmxlSnN4V2hpdGVzcGFjZSA9IGNoaWxkcmVuW2ldID09PSBqc3hXaGl0ZXNwYWNlICYmIGNoaWxkcmVuW2kgKyAxXSA9PT0gXCJcIiAmJiBjaGlsZHJlbltpICsgMl0gPT09IGpzeFdoaXRlc3BhY2U7XG4gICAgICAgIGNvbnN0IGlzUGFpck9mSGFyZE9yU29mdExpbmVzID0gY2hpbGRyZW5baV0gPT09IHNvZnRsaW5lICYmIGNoaWxkcmVuW2kgKyAxXSA9PT0gXCJcIiAmJiBjaGlsZHJlbltpICsgMl0gPT09IGhhcmRsaW5lIHx8IGNoaWxkcmVuW2ldID09PSBoYXJkbGluZSAmJiBjaGlsZHJlbltpICsgMV0gPT09IFwiXCIgJiYgY2hpbGRyZW5baSArIDJdID09PSBzb2Z0bGluZTtcbiAgICAgICAgaWYgKGlzUGFpck9mSGFyZGxpbmVzICYmIGNvbnRhaW5zVGV4dCB8fCBpc1BhaXJPZkVtcHR5U3RyaW5ncyB8fCBpc0xpbmVGb2xsb3dlZEJ5SnN4V2hpdGVzcGFjZSB8fCBpc0RvdWJsZUpzeFdoaXRlc3BhY2UgfHwgaXNQYWlyT2ZIYXJkT3JTb2Z0TGluZXMpIHtcbiAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaSwgMik7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNKc3hXaGl0ZXNwYWNlRm9sbG93ZWRCeUxpbmUpIHtcbiAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaSArIDEsIDIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBpc0VtcHR5U3RyaW5nT3JBbnlMaW5lKGdldExhc3QoY2hpbGRyZW4pKSkge1xuICAgICAgICBjaGlsZHJlbi5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChjaGlsZHJlbi5sZW5ndGggPiAxICYmIGlzRW1wdHlTdHJpbmdPckFueUxpbmUoY2hpbGRyZW5bMF0pICYmIGlzRW1wdHlTdHJpbmdPckFueUxpbmUoY2hpbGRyZW5bMV0pKSB7XG4gICAgICAgIGNoaWxkcmVuLnNoaWZ0KCk7XG4gICAgICAgIGNoaWxkcmVuLnNoaWZ0KCk7XG4gICAgICB9XG4gICAgICBjb25zdCBtdWx0aWxpbmVDaGlsZHJlbiA9IFtdO1xuICAgICAgZm9yIChjb25zdCBbaSwgY2hpbGRdIG9mIGNoaWxkcmVuLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAoY2hpbGQgPT09IGpzeFdoaXRlc3BhY2UpIHtcbiAgICAgICAgICBpZiAoaSA9PT0gMSAmJiBjaGlsZHJlbltpIC0gMV0gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgbXVsdGlsaW5lQ2hpbGRyZW4ucHVzaChyYXdKc3hXaGl0ZXNwYWNlKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtdWx0aWxpbmVDaGlsZHJlbi5wdXNoKFtyYXdKc3hXaGl0ZXNwYWNlLCBoYXJkbGluZV0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSBjaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBtdWx0aWxpbmVDaGlsZHJlbi5wdXNoKHJhd0pzeFdoaXRlc3BhY2UpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbltpIC0gMV0gPT09IFwiXCIgJiYgY2hpbGRyZW5baSAtIDJdID09PSBoYXJkbGluZSkge1xuICAgICAgICAgICAgbXVsdGlsaW5lQ2hpbGRyZW4ucHVzaChyYXdKc3hXaGl0ZXNwYWNlKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtdWx0aWxpbmVDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgaWYgKHdpbGxCcmVhayhjaGlsZCkpIHtcbiAgICAgICAgICBmb3JjZWRCcmVhayA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBjb250YWluc1RleHQgPyBmaWxsKG11bHRpbGluZUNoaWxkcmVuKSA6IGdyb3VwKG11bHRpbGluZUNoaWxkcmVuLCB7XG4gICAgICAgIHNob3VsZEJyZWFrOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlmIChpc01keEJsb2NrKSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgICAgY29uc3QgbXVsdGlMaW5lRWxlbSA9IGdyb3VwKFtvcGVuaW5nTGluZXMsIGluZGVudChbaGFyZGxpbmUsIGNvbnRlbnRdKSwgaGFyZGxpbmUsIGNsb3NpbmdMaW5lc10pO1xuICAgICAgaWYgKGZvcmNlZEJyZWFrKSB7XG4gICAgICAgIHJldHVybiBtdWx0aUxpbmVFbGVtO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbmRpdGlvbmFsR3JvdXAoW2dyb3VwKFtvcGVuaW5nTGluZXMsIC4uLmNoaWxkcmVuLCBjbG9zaW5nTGluZXNdKSwgbXVsdGlMaW5lRWxlbV0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEpzeENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50LCBqc3hXaGl0ZXNwYWNlLCBpc0ZhY2Vib29rVHJhbnNsYXRpb25UYWcpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBwYXRoLmVhY2goKGNoaWxkUGF0aCwgaSwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZFBhdGguZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGlzTGl0ZXJhbChjaGlsZCkpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gcmF3VGV4dChjaGlsZCk7XG4gICAgICAgICAgaWYgKGlzTWVhbmluZ2Z1bEpzeFRleHQoY2hpbGQpKSB7XG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQobWF0Y2hKc3hXaGl0ZXNwYWNlUmVnZXgpO1xuICAgICAgICAgICAgaWYgKHdvcmRzWzBdID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goXCJcIik7XG4gICAgICAgICAgICAgIHdvcmRzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgIGlmICgvXFxuLy50ZXN0KHdvcmRzWzBdKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBjaGlsZHJlbltpICsgMV07XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChzZXBhcmF0b3JXaXRoV2hpdGVzcGFjZShpc0ZhY2Vib29rVHJhbnNsYXRpb25UYWcsIHdvcmRzWzFdLCBjaGlsZCwgbmV4dCkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goanN4V2hpdGVzcGFjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd29yZHMuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBlbmRXaGl0ZXNwYWNlO1xuICAgICAgICAgICAgaWYgKGdldExhc3Qod29yZHMpID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgIHdvcmRzLnBvcCgpO1xuICAgICAgICAgICAgICBlbmRXaGl0ZXNwYWNlID0gd29yZHMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod29yZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgW2kyLCB3b3JkXSBvZiB3b3Jkcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgaWYgKGkyICUgMiA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2gobGluZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaCh3b3JkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVuZFdoaXRlc3BhY2UgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBpZiAoL1xcbi8udGVzdChlbmRXaGl0ZXNwYWNlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBjaGlsZHJlbltpICsgMV07XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChzZXBhcmF0b3JXaXRoV2hpdGVzcGFjZShpc0ZhY2Vib29rVHJhbnNsYXRpb25UYWcsIGdldExhc3QocGFydHMpLCBjaGlsZCwgbmV4dCkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goanN4V2hpdGVzcGFjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBjaGlsZHJlbltpICsgMV07XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goc2VwYXJhdG9yTm9XaGl0ZXNwYWNlKGlzRmFjZWJvb2tUcmFuc2xhdGlvblRhZywgZ2V0TGFzdChwYXJ0cyksIGNoaWxkLCBuZXh0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICgvXFxuLy50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICBpZiAodGV4dC5tYXRjaCgvXFxuL2cpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChcIlwiLCBoYXJkbGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJcIiwganN4V2hpdGVzcGFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHByaW50ZWRDaGlsZCA9IHByaW50KCk7XG4gICAgICAgICAgcGFydHMucHVzaChwcmludGVkQ2hpbGQpO1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBjaGlsZHJlbltpICsgMV07XG4gICAgICAgICAgY29uc3QgZGlyZWN0bHlGb2xsb3dlZEJ5TWVhbmluZ2Z1bFRleHQgPSBuZXh0ICYmIGlzTWVhbmluZ2Z1bEpzeFRleHQobmV4dCk7XG4gICAgICAgICAgaWYgKGRpcmVjdGx5Rm9sbG93ZWRCeU1lYW5pbmdmdWxUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFdvcmQgPSB0cmltSnN4V2hpdGVzcGFjZShyYXdUZXh0KG5leHQpKS5zcGxpdChtYXRjaEpzeFdoaXRlc3BhY2VSZWdleClbMF07XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHNlcGFyYXRvck5vV2hpdGVzcGFjZShpc0ZhY2Vib29rVHJhbnNsYXRpb25UYWcsIGZpcnN0V29yZCwgY2hpbGQsIG5leHQpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBcImNoaWxkcmVuXCIpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXBhcmF0b3JOb1doaXRlc3BhY2UoaXNGYWNlYm9va1RyYW5zbGF0aW9uVGFnLCBjaGlsZCwgY2hpbGROb2RlLCBuZXh0Tm9kZSkge1xuICAgICAgaWYgKGlzRmFjZWJvb2tUcmFuc2xhdGlvblRhZykge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZE5vZGUudHlwZSA9PT0gXCJKU1hFbGVtZW50XCIgJiYgIWNoaWxkTm9kZS5jbG9zaW5nRWxlbWVudCB8fCBuZXh0Tm9kZSAmJiBuZXh0Tm9kZS50eXBlID09PSBcIkpTWEVsZW1lbnRcIiAmJiAhbmV4dE5vZGUuY2xvc2luZ0VsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkLmxlbmd0aCA9PT0gMSA/IHNvZnRsaW5lIDogaGFyZGxpbmU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc29mdGxpbmU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNlcGFyYXRvcldpdGhXaGl0ZXNwYWNlKGlzRmFjZWJvb2tUcmFuc2xhdGlvblRhZywgY2hpbGQsIGNoaWxkTm9kZSwgbmV4dE5vZGUpIHtcbiAgICAgIGlmIChpc0ZhY2Vib29rVHJhbnNsYXRpb25UYWcpIHtcbiAgICAgICAgcmV0dXJuIGhhcmRsaW5lO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gY2hpbGROb2RlLnR5cGUgPT09IFwiSlNYRWxlbWVudFwiICYmICFjaGlsZE5vZGUuY2xvc2luZ0VsZW1lbnQgfHwgbmV4dE5vZGUgJiYgbmV4dE5vZGUudHlwZSA9PT0gXCJKU1hFbGVtZW50XCIgJiYgIW5leHROb2RlLmNsb3NpbmdFbGVtZW50ID8gaGFyZGxpbmUgOiBzb2Z0bGluZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXJkbGluZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWF5YmVXcmFwSnN4RWxlbWVudEluUGFyZW5zKHBhdGgsIGVsZW0sIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW07XG4gICAgICB9XG4gICAgICBjb25zdCBOT19XUkFQX1BBUkVOVFMgPSB7XG4gICAgICAgIEFycmF5RXhwcmVzc2lvbjogdHJ1ZSxcbiAgICAgICAgSlNYQXR0cmlidXRlOiB0cnVlLFxuICAgICAgICBKU1hFbGVtZW50OiB0cnVlLFxuICAgICAgICBKU1hFeHByZXNzaW9uQ29udGFpbmVyOiB0cnVlLFxuICAgICAgICBKU1hGcmFnbWVudDogdHJ1ZSxcbiAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogdHJ1ZSxcbiAgICAgICAgQ2FsbEV4cHJlc3Npb246IHRydWUsXG4gICAgICAgIE9wdGlvbmFsQ2FsbEV4cHJlc3Npb246IHRydWUsXG4gICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogdHJ1ZSxcbiAgICAgICAgSnNFeHByZXNzaW9uUm9vdDogdHJ1ZVxuICAgICAgfTtcbiAgICAgIGlmIChOT19XUkFQX1BBUkVOVFNbcGFyZW50LnR5cGVdKSB7XG4gICAgICAgIHJldHVybiBlbGVtO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2hvdWxkQnJlYWsgPSBwYXRoLm1hdGNoKHZvaWQgMCwgKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiLCBpc0NhbGxFeHByZXNzaW9uLCAobm9kZSkgPT4gbm9kZS50eXBlID09PSBcIkpTWEV4cHJlc3Npb25Db250YWluZXJcIik7XG4gICAgICBjb25zdCBuZWVkc1BhcmVucyA9IHBhdGhOZWVkc1BhcmVucyhwYXRoLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBncm91cChbbmVlZHNQYXJlbnMgPyBcIlwiIDogaWZCcmVhayhcIihcIiksIGluZGVudChbc29mdGxpbmUsIGVsZW1dKSwgc29mdGxpbmUsIG5lZWRzUGFyZW5zID8gXCJcIiA6IGlmQnJlYWsoXCIpXCIpXSwge1xuICAgICAgICBzaG91bGRCcmVha1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SnN4QXR0cmlidXRlKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJuYW1lXCIpKTtcbiAgICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIGlmIChpc1N0cmluZ0xpdGVyYWwobm9kZS52YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCByYXcgPSByYXdUZXh0KG5vZGUudmFsdWUpO1xuICAgICAgICAgIGxldCBmaW5hbCA9IHJhdy5zbGljZSgxLCAtMSkucmVwbGFjZSgvJmFwb3M7L2csIFwiJ1wiKS5yZXBsYWNlKC8mcXVvdDsvZywgJ1wiJyk7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZXNjYXBlZCxcbiAgICAgICAgICAgIHF1b3RlLFxuICAgICAgICAgICAgcmVnZXhcbiAgICAgICAgICB9ID0gZ2V0UHJlZmVycmVkUXVvdGUoZmluYWwsIG9wdGlvbnMuanN4U2luZ2xlUXVvdGUgPyBcIidcIiA6ICdcIicpO1xuICAgICAgICAgIGZpbmFsID0gZmluYWwucmVwbGFjZShyZWdleCwgZXNjYXBlZCk7XG4gICAgICAgICAgcmVzID0gW3F1b3RlLCBmaW5hbCwgcXVvdGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcyA9IHByaW50KFwidmFsdWVcIik7XG4gICAgICAgIH1cbiAgICAgICAgcGFydHMucHVzaChcIj1cIiwgcmVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRKc3hFeHByZXNzaW9uQ29udGFpbmVyKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3Qgc2hvdWxkSW5saW5lID0gKG5vZGUyLCBwYXJlbnQpID0+IG5vZGUyLnR5cGUgPT09IFwiSlNYRW1wdHlFeHByZXNzaW9uXCIgfHwgIWhhc0NvbW1lbnQobm9kZTIpICYmIChub2RlMi50eXBlID09PSBcIkFycmF5RXhwcmVzc2lvblwiIHx8IG5vZGUyLnR5cGUgPT09IFwiT2JqZWN0RXhwcmVzc2lvblwiIHx8IG5vZGUyLnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiB8fCBub2RlMi50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiICYmIChzaG91bGRJbmxpbmUobm9kZTIuYXJndW1lbnQsIG5vZGUyKSB8fCBub2RlMi5hcmd1bWVudC50eXBlID09PSBcIkpTWEVsZW1lbnRcIikgfHwgaXNDYWxsRXhwcmVzc2lvbihub2RlMikgfHwgbm9kZTIudHlwZSA9PT0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIiB8fCBub2RlMi50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiIHx8IG5vZGUyLnR5cGUgPT09IFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCIgfHwgbm9kZTIudHlwZSA9PT0gXCJEb0V4cHJlc3Npb25cIiB8fCBpc0pzeE5vZGUocGFyZW50KSAmJiAobm9kZTIudHlwZSA9PT0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIiB8fCBpc0JpbmFyeWlzaChub2RlMikpKTtcbiAgICAgIGlmIChzaG91bGRJbmxpbmUobm9kZS5leHByZXNzaW9uLCBwYXRoLmdldFBhcmVudE5vZGUoMCkpKSB7XG4gICAgICAgIHJldHVybiBncm91cChbXCJ7XCIsIHByaW50KFwiZXhwcmVzc2lvblwiKSwgbGluZVN1ZmZpeEJvdW5kYXJ5LCBcIn1cIl0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdyb3VwKFtcIntcIiwgaW5kZW50KFtzb2Z0bGluZSwgcHJpbnQoXCJleHByZXNzaW9uXCIpXSksIHNvZnRsaW5lLCBsaW5lU3VmZml4Qm91bmRhcnksIFwifVwiXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SnN4T3BlbmluZ0VsZW1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBuYW1lSGFzQ29tbWVudHMgPSBub2RlLm5hbWUgJiYgaGFzQ29tbWVudChub2RlLm5hbWUpIHx8IG5vZGUudHlwZVBhcmFtZXRlcnMgJiYgaGFzQ29tbWVudChub2RlLnR5cGVQYXJhbWV0ZXJzKTtcbiAgICAgIGlmIChub2RlLnNlbGZDbG9zaW5nICYmIG5vZGUuYXR0cmlidXRlcy5sZW5ndGggPT09IDAgJiYgIW5hbWVIYXNDb21tZW50cykge1xuICAgICAgICByZXR1cm4gW1wiPFwiLCBwcmludChcIm5hbWVcIiksIHByaW50KFwidHlwZVBhcmFtZXRlcnNcIiksIFwiIC8+XCJdO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuYXR0cmlidXRlcyAmJiBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoID09PSAxICYmIG5vZGUuYXR0cmlidXRlc1swXS52YWx1ZSAmJiBpc1N0cmluZ0xpdGVyYWwobm9kZS5hdHRyaWJ1dGVzWzBdLnZhbHVlKSAmJiAhbm9kZS5hdHRyaWJ1dGVzWzBdLnZhbHVlLnZhbHVlLmluY2x1ZGVzKFwiXFxuXCIpICYmICFuYW1lSGFzQ29tbWVudHMgJiYgIWhhc0NvbW1lbnQobm9kZS5hdHRyaWJ1dGVzWzBdKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXAoW1wiPFwiLCBwcmludChcIm5hbWVcIiksIHByaW50KFwidHlwZVBhcmFtZXRlcnNcIiksIFwiIFwiLCAuLi5wYXRoLm1hcChwcmludCwgXCJhdHRyaWJ1dGVzXCIpLCBub2RlLnNlbGZDbG9zaW5nID8gXCIgLz5cIiA6IFwiPlwiXSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsYXN0QXR0ckhhc1RyYWlsaW5nQ29tbWVudHMgPSBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoID4gMCAmJiBoYXNDb21tZW50KGdldExhc3Qobm9kZS5hdHRyaWJ1dGVzKSwgQ29tbWVudENoZWNrRmxhZ3MuVHJhaWxpbmcpO1xuICAgICAgY29uc3QgYnJhY2tldFNhbWVMaW5lID0gbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMCAmJiAhbmFtZUhhc0NvbW1lbnRzIHx8IChvcHRpb25zLmJyYWNrZXRTYW1lTGluZSB8fCBvcHRpb25zLmpzeEJyYWNrZXRTYW1lTGluZSkgJiYgKCFuYW1lSGFzQ29tbWVudHMgfHwgbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aCA+IDApICYmICFsYXN0QXR0ckhhc1RyYWlsaW5nQ29tbWVudHM7XG4gICAgICBjb25zdCBzaG91bGRCcmVhayA9IG5vZGUuYXR0cmlidXRlcyAmJiBub2RlLmF0dHJpYnV0ZXMuc29tZSgoYXR0cikgPT4gYXR0ci52YWx1ZSAmJiBpc1N0cmluZ0xpdGVyYWwoYXR0ci52YWx1ZSkgJiYgYXR0ci52YWx1ZS52YWx1ZS5pbmNsdWRlcyhcIlxcblwiKSk7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVMaW5lID0gb3B0aW9ucy5zaW5nbGVBdHRyaWJ1dGVQZXJMaW5lICYmIG5vZGUuYXR0cmlidXRlcy5sZW5ndGggPiAxID8gaGFyZGxpbmUgOiBsaW5lO1xuICAgICAgcmV0dXJuIGdyb3VwKFtcIjxcIiwgcHJpbnQoXCJuYW1lXCIpLCBwcmludChcInR5cGVQYXJhbWV0ZXJzXCIpLCBpbmRlbnQocGF0aC5tYXAoKCkgPT4gW2F0dHJpYnV0ZUxpbmUsIHByaW50KCldLCBcImF0dHJpYnV0ZXNcIikpLCBub2RlLnNlbGZDbG9zaW5nID8gbGluZSA6IGJyYWNrZXRTYW1lTGluZSA/IFwiPlwiIDogc29mdGxpbmUsIG5vZGUuc2VsZkNsb3NpbmcgPyBcIi8+XCIgOiBicmFja2V0U2FtZUxpbmUgPyBcIlwiIDogXCI+XCJdLCB7XG4gICAgICAgIHNob3VsZEJyZWFrXG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRKc3hDbG9zaW5nRWxlbWVudChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBwYXJ0cy5wdXNoKFwiPC9cIik7XG4gICAgICBjb25zdCBwcmludGVkID0gcHJpbnQoXCJuYW1lXCIpO1xuICAgICAgaWYgKGhhc0NvbW1lbnQobm9kZS5uYW1lLCBDb21tZW50Q2hlY2tGbGFncy5MZWFkaW5nIHwgQ29tbWVudENoZWNrRmxhZ3MuTGluZSkpIHtcbiAgICAgICAgcGFydHMucHVzaChpbmRlbnQoW2hhcmRsaW5lLCBwcmludGVkXSksIGhhcmRsaW5lKTtcbiAgICAgIH0gZWxzZSBpZiAoaGFzQ29tbWVudChub2RlLm5hbWUsIENvbW1lbnRDaGVja0ZsYWdzLkxlYWRpbmcgfCBDb21tZW50Q2hlY2tGbGFncy5CbG9jaykpIHtcbiAgICAgICAgcGFydHMucHVzaChcIiBcIiwgcHJpbnRlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKHByaW50ZWQpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChcIj5cIik7XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SnN4T3BlbmluZ0Nsb3NpbmdGcmFnbWVudChwYXRoLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3Qgbm9kZUhhc0NvbW1lbnQgPSBoYXNDb21tZW50KG5vZGUpO1xuICAgICAgY29uc3QgaGFzT3duTGluZUNvbW1lbnQgPSBoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkxpbmUpO1xuICAgICAgY29uc3QgaXNPcGVuaW5nRnJhZ21lbnQgPSBub2RlLnR5cGUgPT09IFwiSlNYT3BlbmluZ0ZyYWdtZW50XCI7XG4gICAgICByZXR1cm4gW2lzT3BlbmluZ0ZyYWdtZW50ID8gXCI8XCIgOiBcIjwvXCIsIGluZGVudChbaGFzT3duTGluZUNvbW1lbnQgPyBoYXJkbGluZSA6IG5vZGVIYXNDb21tZW50ICYmICFpc09wZW5pbmdGcmFnbWVudCA/IFwiIFwiIDogXCJcIiwgcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUpXSksIGhhc093bkxpbmVDb21tZW50ID8gaGFyZGxpbmUgOiBcIlwiLCBcIj5cIl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SnN4RWxlbWVudChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3QgZWxlbSA9IHByaW50Q29tbWVudHMocGF0aCwgcHJpbnRKc3hFbGVtZW50SW50ZXJuYWwocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBtYXliZVdyYXBKc3hFbGVtZW50SW5QYXJlbnMocGF0aCwgZWxlbSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SnN4RW1wdHlFeHByZXNzaW9uKHBhdGgsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCByZXF1aXJlc0hhcmRsaW5lID0gaGFzQ29tbWVudChub2RlLCBDb21tZW50Q2hlY2tGbGFncy5MaW5lKTtcbiAgICAgIHJldHVybiBbcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsICFyZXF1aXJlc0hhcmRsaW5lKSwgcmVxdWlyZXNIYXJkbGluZSA/IGhhcmRsaW5lIDogXCJcIl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SnN4U3ByZWFkQXR0cmlidXRlKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgcmV0dXJuIFtcIntcIiwgcGF0aC5jYWxsKChwKSA9PiB7XG4gICAgICAgIGNvbnN0IHByaW50ZWQgPSBbXCIuLi5cIiwgcHJpbnQoKV07XG4gICAgICAgIGNvbnN0IG5vZGUyID0gcC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIWhhc0NvbW1lbnQobm9kZTIpIHx8ICF3aWxsUHJpbnRPd25Db21tZW50cyhwKSkge1xuICAgICAgICAgIHJldHVybiBwcmludGVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbaW5kZW50KFtzb2Z0bGluZSwgcHJpbnRDb21tZW50cyhwLCBwcmludGVkLCBvcHRpb25zKV0pLCBzb2Z0bGluZV07XG4gICAgICB9LCBub2RlLnR5cGUgPT09IFwiSlNYU3ByZWFkQXR0cmlidXRlXCIgPyBcImFyZ3VtZW50XCIgOiBcImV4cHJlc3Npb25cIiksIFwifVwiXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRKc3gocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIW5vZGUudHlwZS5zdGFydHNXaXRoKFwiSlNYXCIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJKU1hBdHRyaWJ1dGVcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRKc3hBdHRyaWJ1dGUocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiSlNYSWRlbnRpZmllclwiOlxuICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZS5uYW1lKTtcbiAgICAgICAgY2FzZSBcIkpTWE5hbWVzcGFjZWROYW1lXCI6XG4gICAgICAgICAgcmV0dXJuIGpvaW4oXCI6XCIsIFtwcmludChcIm5hbWVzcGFjZVwiKSwgcHJpbnQoXCJuYW1lXCIpXSk7XG4gICAgICAgIGNhc2UgXCJKU1hNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIGpvaW4oXCIuXCIsIFtwcmludChcIm9iamVjdFwiKSwgcHJpbnQoXCJwcm9wZXJ0eVwiKV0pO1xuICAgICAgICBjYXNlIFwiSlNYU3ByZWFkQXR0cmlidXRlXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50SnN4U3ByZWFkQXR0cmlidXRlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkpTWFNwcmVhZENoaWxkXCI6IHtcbiAgICAgICAgICBjb25zdCBwcmludEpzeFNwcmVhZENoaWxkID0gcHJpbnRKc3hTcHJlYWRBdHRyaWJ1dGU7XG4gICAgICAgICAgcmV0dXJuIHByaW50SnN4U3ByZWFkQ2hpbGQocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJKU1hFeHByZXNzaW9uQ29udGFpbmVyXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50SnN4RXhwcmVzc2lvbkNvbnRhaW5lcihwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJKU1hGcmFnbWVudFwiOlxuICAgICAgICBjYXNlIFwiSlNYRWxlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBwcmludEpzeEVsZW1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiSlNYT3BlbmluZ0VsZW1lbnRcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRKc3hPcGVuaW5nRWxlbWVudChwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJKU1hDbG9zaW5nRWxlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBwcmludEpzeENsb3NpbmdFbGVtZW50KHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkpTWE9wZW5pbmdGcmFnbWVudFwiOlxuICAgICAgICBjYXNlIFwiSlNYQ2xvc2luZ0ZyYWdtZW50XCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50SnN4T3BlbmluZ0Nsb3NpbmdGcmFnbWVudChwYXRoLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBcIkpTWEVtcHR5RXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludEpzeEVtcHR5RXhwcmVzc2lvbihwYXRoLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBcIkpTWFRleHRcIjpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJKU1hUZXN0IHNob3VsZCBiZSBoYW5kbGVkIGJ5IEpTWEVsZW1lbnRcIik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIEpTWCBub2RlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkobm9kZS50eXBlKX0uYCk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBqc3hXaGl0ZXNwYWNlQ2hhcnMgPSBcIiBcXG5cXHJcdFwiO1xuICAgIHZhciBtYXRjaEpzeFdoaXRlc3BhY2VSZWdleCA9IG5ldyBSZWdFeHAoXCIoW1wiICsganN4V2hpdGVzcGFjZUNoYXJzICsgXCJdKylcIik7XG4gICAgdmFyIGNvbnRhaW5zTm9uSnN4V2hpdGVzcGFjZVJlZ2V4ID0gbmV3IFJlZ0V4cChcIlteXCIgKyBqc3hXaGl0ZXNwYWNlQ2hhcnMgKyBcIl1cIik7XG4gICAgdmFyIHRyaW1Kc3hXaGl0ZXNwYWNlID0gKHRleHQpID0+IHRleHQucmVwbGFjZShuZXcgUmVnRXhwKFwiKD86XlwiICsgbWF0Y2hKc3hXaGl0ZXNwYWNlUmVnZXguc291cmNlICsgXCJ8XCIgKyBtYXRjaEpzeFdoaXRlc3BhY2VSZWdleC5zb3VyY2UgKyBcIiQpXCIpLCBcIlwiKTtcbiAgICBmdW5jdGlvbiBpc0VtcHR5SnN4RWxlbWVudChub2RlKSB7XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcbiAgICAgIHJldHVybiBpc0xpdGVyYWwoY2hpbGQpICYmICFpc01lYW5pbmdmdWxKc3hUZXh0KGNoaWxkKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNNZWFuaW5nZnVsSnN4VGV4dChub2RlKSB7XG4gICAgICByZXR1cm4gaXNMaXRlcmFsKG5vZGUpICYmIChjb250YWluc05vbkpzeFdoaXRlc3BhY2VSZWdleC50ZXN0KHJhd1RleHQobm9kZSkpIHx8ICEvXFxuLy50ZXN0KHJhd1RleHQobm9kZSkpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNKc3hXaGl0ZXNwYWNlRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcIkpTWEV4cHJlc3Npb25Db250YWluZXJcIiAmJiBpc0xpdGVyYWwobm9kZS5leHByZXNzaW9uKSAmJiBub2RlLmV4cHJlc3Npb24udmFsdWUgPT09IFwiIFwiICYmICFoYXNDb21tZW50KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc0pzeElnbm9yZUNvbW1lbnQocGF0aCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgaWYgKCFwYXJlbnQgfHwgIW5vZGUgfHwgIWlzSnN4Tm9kZShub2RlKSB8fCAhaXNKc3hOb2RlKHBhcmVudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKTtcbiAgICAgIGxldCBwcmV2U2libGluZyA9IG51bGw7XG4gICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gcGFyZW50LmNoaWxkcmVuW2kgLSAxXTtcbiAgICAgICAgaWYgKGNhbmRpZGF0ZS50eXBlID09PSBcIkpTWFRleHRcIiAmJiAhaXNNZWFuaW5nZnVsSnN4VGV4dChjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJldlNpYmxpbmcgPSBjYW5kaWRhdGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXZTaWJsaW5nICYmIHByZXZTaWJsaW5nLnR5cGUgPT09IFwiSlNYRXhwcmVzc2lvbkNvbnRhaW5lclwiICYmIHByZXZTaWJsaW5nLmV4cHJlc3Npb24udHlwZSA9PT0gXCJKU1hFbXB0eUV4cHJlc3Npb25cIiAmJiBoYXNOb2RlSWdub3JlQ29tbWVudChwcmV2U2libGluZy5leHByZXNzaW9uKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgaGFzSnN4SWdub3JlQ29tbWVudCxcbiAgICAgIHByaW50SnN4XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9taXNjID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9taXNjLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgaXNOb25FbXB0eUFycmF5XG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGpvaW4sXG4gICAgICAgIGxpbmVcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBpc0Zsb3dBbm5vdGF0aW9uQ29tbWVudFxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIGZ1bmN0aW9uIHByaW50T3B0aW9uYWxUb2tlbihwYXRoKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKCFub2RlLm9wdGlvbmFsIHx8IG5vZGUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgbm9kZSA9PT0gcGF0aC5nZXRQYXJlbnROb2RlKCkua2V5KSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJPcHRpb25hbENhbGxFeHByZXNzaW9uXCIgfHwgbm9kZS50eXBlID09PSBcIk9wdGlvbmFsTWVtYmVyRXhwcmVzc2lvblwiICYmIG5vZGUuY29tcHV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIFwiPy5cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcIj9cIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnREZWZpbml0ZVRva2VuKHBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoLmdldFZhbHVlKCkuZGVmaW5pdGUgfHwgcGF0aC5tYXRjaCh2b2lkIDAsIChub2RlLCBuYW1lKSA9PiBuYW1lID09PSBcImlkXCIgJiYgbm9kZS50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRvclwiICYmIG5vZGUuZGVmaW5pdGUpID8gXCIhXCIgOiBcIlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEZ1bmN0aW9uVHlwZVBhcmFtZXRlcnMocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IGZ1biA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChmdW4udHlwZUFyZ3VtZW50cykge1xuICAgICAgICByZXR1cm4gcHJpbnQoXCJ0eXBlQXJndW1lbnRzXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGZ1bi50eXBlUGFyYW1ldGVycykge1xuICAgICAgICByZXR1cm4gcHJpbnQoXCJ0eXBlUGFyYW1ldGVyc1wiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFR5cGVBbm5vdGF0aW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKCFub2RlLnR5cGVBbm5vdGF0aW9uKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgY29uc3QgaXNGdW5jdGlvbkRlY2xhcmF0aW9uSWRlbnRpZmllciA9IHBhcmVudE5vZGUudHlwZSA9PT0gXCJEZWNsYXJlRnVuY3Rpb25cIiAmJiBwYXJlbnROb2RlLmlkID09PSBub2RlO1xuICAgICAgaWYgKGlzRmxvd0Fubm90YXRpb25Db21tZW50KG9wdGlvbnMub3JpZ2luYWxUZXh0LCBub2RlLnR5cGVBbm5vdGF0aW9uKSkge1xuICAgICAgICByZXR1cm4gW1wiIC8qOiBcIiwgcHJpbnQoXCJ0eXBlQW5ub3RhdGlvblwiKSwgXCIgKi9cIl07XG4gICAgICB9XG4gICAgICByZXR1cm4gW2lzRnVuY3Rpb25EZWNsYXJhdGlvbklkZW50aWZpZXIgPyBcIlwiIDogXCI6IFwiLCBwcmludChcInR5cGVBbm5vdGF0aW9uXCIpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRCaW5kRXhwcmVzc2lvbkNhbGxlZShwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgcmV0dXJuIFtcIjo6XCIsIHByaW50KFwiY2FsbGVlXCIpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRUeXBlU2NyaXB0TW9kaWZpZXJzKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKCFpc05vbkVtcHR5QXJyYXkobm9kZS5tb2RpZmllcnMpKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtqb2luKFwiIFwiLCBwYXRoLm1hcChwcmludCwgXCJtb2RpZmllcnNcIikpLCBcIiBcIl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkanVzdENsYXVzZShub2RlLCBjbGF1c2UsIGZvcmNlU3BhY2UpIHtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiRW1wdHlTdGF0ZW1lbnRcIikge1xuICAgICAgICByZXR1cm4gXCI7XCI7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIkJsb2NrU3RhdGVtZW50XCIgfHwgZm9yY2VTcGFjZSkge1xuICAgICAgICByZXR1cm4gW1wiIFwiLCBjbGF1c2VdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluZGVudChbbGluZSwgY2xhdXNlXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50UmVzdFNwcmVhZChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgcmV0dXJuIFtcIi4uLlwiLCBwcmludChcImFyZ3VtZW50XCIpLCBwcmludFR5cGVBbm5vdGF0aW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KV07XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50T3B0aW9uYWxUb2tlbixcbiAgICAgIHByaW50RGVmaW5pdGVUb2tlbixcbiAgICAgIHByaW50RnVuY3Rpb25UeXBlUGFyYW1ldGVycyxcbiAgICAgIHByaW50QmluZEV4cHJlc3Npb25DYWxsZWUsXG4gICAgICBwcmludFR5cGVTY3JpcHRNb2RpZmllcnMsXG4gICAgICBwcmludFR5cGVBbm5vdGF0aW9uLFxuICAgICAgcHJpbnRSZXN0U3ByZWFkLFxuICAgICAgYWRqdXN0Q2xhdXNlXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9hcnJheTQgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L2FycmF5LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgcHJpbnREYW5nbGluZ0NvbW1lbnRzXG4gICAgfSA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgc29mdGxpbmUsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBmaWxsXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgZ2V0TGFzdCxcbiAgICAgIGhhc05ld2xpbmVcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIHNob3VsZFByaW50Q29tbWEsXG4gICAgICBoYXNDb21tZW50LFxuICAgICAgQ29tbWVudENoZWNrRmxhZ3MsXG4gICAgICBpc05leHRMaW5lRW1wdHksXG4gICAgICBpc051bWVyaWNMaXRlcmFsLFxuICAgICAgaXNTaWduZWROdW1lcmljTGl0ZXJhbFxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydFxuICAgIH0gPSByZXF1aXJlX2xvYygpO1xuICAgIHZhciB7XG4gICAgICBwcmludE9wdGlvbmFsVG9rZW4sXG4gICAgICBwcmludFR5cGVBbm5vdGF0aW9uXG4gICAgfSA9IHJlcXVpcmVfbWlzYygpO1xuICAgIGZ1bmN0aW9uIHByaW50QXJyYXkocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgY29uc3Qgb3BlbkJyYWNrZXQgPSBub2RlLnR5cGUgPT09IFwiVHVwbGVFeHByZXNzaW9uXCIgPyBcIiNbXCIgOiBcIltcIjtcbiAgICAgIGNvbnN0IGNsb3NlQnJhY2tldCA9IFwiXVwiO1xuICAgICAgaWYgKG5vZGUuZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmICghaGFzQ29tbWVudChub2RlLCBDb21tZW50Q2hlY2tGbGFncy5EYW5nbGluZykpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKG9wZW5CcmFja2V0LCBjbG9zZUJyYWNrZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAoW29wZW5CcmFja2V0LCBwcmludERhbmdsaW5nQ29tbWVudHMocGF0aCwgb3B0aW9ucyksIHNvZnRsaW5lLCBjbG9zZUJyYWNrZXRdKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxhc3RFbGVtID0gZ2V0TGFzdChub2RlLmVsZW1lbnRzKTtcbiAgICAgICAgY29uc3QgY2FuSGF2ZVRyYWlsaW5nQ29tbWEgPSAhKGxhc3RFbGVtICYmIGxhc3RFbGVtLnR5cGUgPT09IFwiUmVzdEVsZW1lbnRcIik7XG4gICAgICAgIGNvbnN0IG5lZWRzRm9yY2VkVHJhaWxpbmdDb21tYSA9IGxhc3RFbGVtID09PSBudWxsO1xuICAgICAgICBjb25zdCBncm91cElkID0gU3ltYm9sKFwiYXJyYXlcIik7XG4gICAgICAgIGNvbnN0IHNob3VsZEJyZWFrID0gIW9wdGlvbnMuX19pbkplc3RFYWNoICYmIG5vZGUuZWxlbWVudHMubGVuZ3RoID4gMSAmJiBub2RlLmVsZW1lbnRzLmV2ZXJ5KChlbGVtZW50LCBpLCBlbGVtZW50cykgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlID0gZWxlbWVudCAmJiBlbGVtZW50LnR5cGU7XG4gICAgICAgICAgaWYgKGVsZW1lbnRUeXBlICE9PSBcIkFycmF5RXhwcmVzc2lvblwiICYmIGVsZW1lbnRUeXBlICE9PSBcIk9iamVjdEV4cHJlc3Npb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGVsZW1lbnRzW2kgKyAxXTtcbiAgICAgICAgICBpZiAobmV4dEVsZW1lbnQgJiYgZWxlbWVudFR5cGUgIT09IG5leHRFbGVtZW50LnR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXRlbXNLZXkgPSBlbGVtZW50VHlwZSA9PT0gXCJBcnJheUV4cHJlc3Npb25cIiA/IFwiZWxlbWVudHNcIiA6IFwicHJvcGVydGllc1wiO1xuICAgICAgICAgIHJldHVybiBlbGVtZW50W2l0ZW1zS2V5XSAmJiBlbGVtZW50W2l0ZW1zS2V5XS5sZW5ndGggPiAxO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2hvdWxkVXNlQ29uY2lzZUZvcm1hdHRpbmcgPSBpc0NvbmNpc2VseVByaW50ZWRBcnJheShub2RlLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgdHJhaWxpbmdDb21tYSA9ICFjYW5IYXZlVHJhaWxpbmdDb21tYSA/IFwiXCIgOiBuZWVkc0ZvcmNlZFRyYWlsaW5nQ29tbWEgPyBcIixcIiA6ICFzaG91bGRQcmludENvbW1hKG9wdGlvbnMpID8gXCJcIiA6IHNob3VsZFVzZUNvbmNpc2VGb3JtYXR0aW5nID8gaWZCcmVhayhcIixcIiwgXCJcIiwge1xuICAgICAgICAgIGdyb3VwSWRcbiAgICAgICAgfSkgOiBpZkJyZWFrKFwiLFwiKTtcbiAgICAgICAgcGFydHMucHVzaChncm91cChbb3BlbkJyYWNrZXQsIGluZGVudChbc29mdGxpbmUsIHNob3VsZFVzZUNvbmNpc2VGb3JtYXR0aW5nID8gcHJpbnRBcnJheUl0ZW1zQ29uY2lzZWx5KHBhdGgsIG9wdGlvbnMsIHByaW50LCB0cmFpbGluZ0NvbW1hKSA6IFtwcmludEFycmF5SXRlbXMocGF0aCwgb3B0aW9ucywgXCJlbGVtZW50c1wiLCBwcmludCksIHRyYWlsaW5nQ29tbWFdLCBwcmludERhbmdsaW5nQ29tbWVudHMocGF0aCwgb3B0aW9ucywgdHJ1ZSldKSwgc29mdGxpbmUsIGNsb3NlQnJhY2tldF0sIHtcbiAgICAgICAgICBzaG91bGRCcmVhayxcbiAgICAgICAgICBpZDogZ3JvdXBJZFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKHByaW50T3B0aW9uYWxUb2tlbihwYXRoKSwgcHJpbnRUeXBlQW5ub3RhdGlvbihwYXRoLCBvcHRpb25zLCBwcmludCkpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0NvbmNpc2VseVByaW50ZWRBcnJheShub2RlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbm9kZS5lbGVtZW50cy5sZW5ndGggPiAxICYmIG5vZGUuZWxlbWVudHMuZXZlcnkoKGVsZW1lbnQpID0+IGVsZW1lbnQgJiYgKGlzTnVtZXJpY0xpdGVyYWwoZWxlbWVudCkgfHwgaXNTaWduZWROdW1lcmljTGl0ZXJhbChlbGVtZW50KSAmJiAhaGFzQ29tbWVudChlbGVtZW50LmFyZ3VtZW50KSkgJiYgIWhhc0NvbW1lbnQoZWxlbWVudCwgQ29tbWVudENoZWNrRmxhZ3MuVHJhaWxpbmcgfCBDb21tZW50Q2hlY2tGbGFncy5MaW5lLCAoY29tbWVudCkgPT4gIWhhc05ld2xpbmUob3B0aW9ucy5vcmlnaW5hbFRleHQsIGxvY1N0YXJ0KGNvbW1lbnQpLCB7XG4gICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgfSkpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRBcnJheUl0ZW1zKHBhdGgsIG9wdGlvbnMsIHByaW50UGF0aCwgcHJpbnQpIHtcbiAgICAgIGNvbnN0IHByaW50ZWRFbGVtZW50cyA9IFtdO1xuICAgICAgbGV0IHNlcGFyYXRvclBhcnRzID0gW107XG4gICAgICBwYXRoLmVhY2goKGNoaWxkUGF0aCkgPT4ge1xuICAgICAgICBwcmludGVkRWxlbWVudHMucHVzaChzZXBhcmF0b3JQYXJ0cywgZ3JvdXAocHJpbnQoKSkpO1xuICAgICAgICBzZXBhcmF0b3JQYXJ0cyA9IFtcIixcIiwgbGluZV07XG4gICAgICAgIGlmIChjaGlsZFBhdGguZ2V0VmFsdWUoKSAmJiBpc05leHRMaW5lRW1wdHkoY2hpbGRQYXRoLmdldFZhbHVlKCksIG9wdGlvbnMpKSB7XG4gICAgICAgICAgc2VwYXJhdG9yUGFydHMucHVzaChzb2Z0bGluZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIHByaW50UGF0aCk7XG4gICAgICByZXR1cm4gcHJpbnRlZEVsZW1lbnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEFycmF5SXRlbXNDb25jaXNlbHkocGF0aCwgb3B0aW9ucywgcHJpbnQsIHRyYWlsaW5nQ29tbWEpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBwYXRoLmVhY2goKGNoaWxkUGF0aCwgaSwgZWxlbWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgaXNMYXN0ID0gaSA9PT0gZWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgcGFydHMucHVzaChbcHJpbnQoKSwgaXNMYXN0ID8gdHJhaWxpbmdDb21tYSA6IFwiLFwiXSk7XG4gICAgICAgIGlmICghaXNMYXN0KSB7XG4gICAgICAgICAgcGFydHMucHVzaChpc05leHRMaW5lRW1wdHkoY2hpbGRQYXRoLmdldFZhbHVlKCksIG9wdGlvbnMpID8gW2hhcmRsaW5lLCBoYXJkbGluZV0gOiBoYXNDb21tZW50KGVsZW1lbnRzW2kgKyAxXSwgQ29tbWVudENoZWNrRmxhZ3MuTGVhZGluZyB8IENvbW1lbnRDaGVja0ZsYWdzLkxpbmUpID8gaGFyZGxpbmUgOiBsaW5lKTtcbiAgICAgICAgfVxuICAgICAgfSwgXCJlbGVtZW50c1wiKTtcbiAgICAgIHJldHVybiBmaWxsKHBhcnRzKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRBcnJheSxcbiAgICAgIHByaW50QXJyYXlJdGVtcyxcbiAgICAgIGlzQ29uY2lzZWx5UHJpbnRlZEFycmF5XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jYWxsX2FyZ3VtZW50cyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvY2FsbC1hcmd1bWVudHMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBwcmludERhbmdsaW5nQ29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9jb21tZW50cygpO1xuICAgIHZhciB7XG4gICAgICBnZXRMYXN0LFxuICAgICAgZ2V0UGVudWx0aW1hdGVcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGdldEZ1bmN0aW9uUGFyYW1ldGVycyxcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBDb21tZW50Q2hlY2tGbGFncyxcbiAgICAgIGlzRnVuY3Rpb25Db21wb3NpdGlvbkFyZ3MsXG4gICAgICBpc0pzeE5vZGUsXG4gICAgICBpc0xvbmdDdXJyaWVkQ2FsbEV4cHJlc3Npb24sXG4gICAgICBzaG91bGRQcmludENvbW1hLFxuICAgICAgZ2V0Q2FsbEFyZ3VtZW50cyxcbiAgICAgIGl0ZXJhdGVDYWxsQXJndW1lbnRzUGF0aCxcbiAgICAgIGlzTmV4dExpbmVFbXB0eSxcbiAgICAgIGlzQ2FsbEV4cHJlc3Npb24sXG4gICAgICBpc1N0cmluZ0xpdGVyYWwsXG4gICAgICBpc09iamVjdFByb3BlcnR5XG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGxpbmUsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgY29uZGl0aW9uYWxHcm91cCxcbiAgICAgICAgaWZCcmVhayxcbiAgICAgICAgYnJlYWtQYXJlbnRcbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICB3aWxsQnJlYWtcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBBcmdFeHBhbnNpb25CYWlsb3V0XG4gICAgfSA9IHJlcXVpcmVfZXJyb3JzKCk7XG4gICAgdmFyIHtcbiAgICAgIGlzQ29uY2lzZWx5UHJpbnRlZEFycmF5XG4gICAgfSA9IHJlcXVpcmVfYXJyYXk0KCk7XG4gICAgZnVuY3Rpb24gcHJpbnRDYWxsQXJndW1lbnRzKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgaXNEeW5hbWljSW1wb3J0ID0gbm9kZS50eXBlID09PSBcIkltcG9ydEV4cHJlc3Npb25cIjtcbiAgICAgIGNvbnN0IGFyZ3MgPSBnZXRDYWxsQXJndW1lbnRzKG5vZGUpO1xuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbXCIoXCIsIHByaW50RGFuZ2xpbmdDb21tZW50cyhwYXRoLCBvcHRpb25zLCB0cnVlKSwgXCIpXCJdO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVhY3RIb29rQ2FsbFdpdGhEZXBzQXJyYXkoYXJncykpIHtcbiAgICAgICAgcmV0dXJuIFtcIihcIiwgcHJpbnQoW1wiYXJndW1lbnRzXCIsIDBdKSwgXCIsIFwiLCBwcmludChbXCJhcmd1bWVudHNcIiwgMV0pLCBcIilcIl07XG4gICAgICB9XG4gICAgICBsZXQgYW55QXJnRW1wdHlMaW5lID0gZmFsc2U7XG4gICAgICBsZXQgaGFzRW1wdHlMaW5lRm9sbG93aW5nRmlyc3RBcmcgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGxhc3RBcmdJbmRleCA9IGFyZ3MubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IHByaW50ZWRBcmd1bWVudHMgPSBbXTtcbiAgICAgIGl0ZXJhdGVDYWxsQXJndW1lbnRzUGF0aChwYXRoLCAoYXJnUGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgYXJnID0gYXJnUGF0aC5nZXROb2RlKCk7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW3ByaW50KCldO1xuICAgICAgICBpZiAoaW5kZXggPT09IGxhc3RBcmdJbmRleCkge1xuICAgICAgICB9IGVsc2UgaWYgKGlzTmV4dExpbmVFbXB0eShhcmcsIG9wdGlvbnMpKSB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBoYXNFbXB0eUxpbmVGb2xsb3dpbmdGaXJzdEFyZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFueUFyZ0VtcHR5TGluZSA9IHRydWU7XG4gICAgICAgICAgcGFydHMucHVzaChcIixcIiwgaGFyZGxpbmUsIGhhcmRsaW5lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwiLFwiLCBsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICBwcmludGVkQXJndW1lbnRzLnB1c2gocGFydHMpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBtYXliZVRyYWlsaW5nQ29tbWEgPSAhKGlzRHluYW1pY0ltcG9ydCB8fCBub2RlLmNhbGxlZSAmJiBub2RlLmNhbGxlZS50eXBlID09PSBcIkltcG9ydFwiKSAmJiBzaG91bGRQcmludENvbW1hKG9wdGlvbnMsIFwiYWxsXCIpID8gXCIsXCIgOiBcIlwiO1xuICAgICAgZnVuY3Rpb24gYWxsQXJnc0Jyb2tlbk91dCgpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwKFtcIihcIiwgaW5kZW50KFtsaW5lLCAuLi5wcmludGVkQXJndW1lbnRzXSksIG1heWJlVHJhaWxpbmdDb21tYSwgbGluZSwgXCIpXCJdLCB7XG4gICAgICAgICAgc2hvdWxkQnJlYWs6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoYW55QXJnRW1wdHlMaW5lIHx8IHBhdGguZ2V0UGFyZW50Tm9kZSgpLnR5cGUgIT09IFwiRGVjb3JhdG9yXCIgJiYgaXNGdW5jdGlvbkNvbXBvc2l0aW9uQXJncyhhcmdzKSkge1xuICAgICAgICByZXR1cm4gYWxsQXJnc0Jyb2tlbk91dCgpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2hvdWxkR3JvdXBGaXJzdCA9IHNob3VsZEdyb3VwRmlyc3RBcmcoYXJncyk7XG4gICAgICBjb25zdCBzaG91bGRHcm91cExhc3QgPSBzaG91bGRHcm91cExhc3RBcmcoYXJncywgb3B0aW9ucyk7XG4gICAgICBpZiAoc2hvdWxkR3JvdXBGaXJzdCB8fCBzaG91bGRHcm91cExhc3QpIHtcbiAgICAgICAgaWYgKHNob3VsZEdyb3VwRmlyc3QgPyBwcmludGVkQXJndW1lbnRzLnNsaWNlKDEpLnNvbWUod2lsbEJyZWFrKSA6IHByaW50ZWRBcmd1bWVudHMuc2xpY2UoMCwgLTEpLnNvbWUod2lsbEJyZWFrKSkge1xuICAgICAgICAgIHJldHVybiBhbGxBcmdzQnJva2VuT3V0KCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHByaW50ZWRFeHBhbmRlZCA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHBhdGgudHJ5KCgpID0+IHtcbiAgICAgICAgICAgIGl0ZXJhdGVDYWxsQXJndW1lbnRzUGF0aChwYXRoLCAoYXJnUGF0aCwgaSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoc2hvdWxkR3JvdXBGaXJzdCAmJiBpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcHJpbnRlZEV4cGFuZGVkID0gW1twcmludChbXSwge1xuICAgICAgICAgICAgICAgICAgZXhwYW5kRmlyc3RBcmc6IHRydWVcbiAgICAgICAgICAgICAgICB9KSwgcHJpbnRlZEFyZ3VtZW50cy5sZW5ndGggPiAxID8gXCIsXCIgOiBcIlwiLCBoYXNFbXB0eUxpbmVGb2xsb3dpbmdGaXJzdEFyZyA/IGhhcmRsaW5lIDogbGluZSwgaGFzRW1wdHlMaW5lRm9sbG93aW5nRmlyc3RBcmcgPyBoYXJkbGluZSA6IFwiXCJdLCAuLi5wcmludGVkQXJndW1lbnRzLnNsaWNlKDEpXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoc2hvdWxkR3JvdXBMYXN0ICYmIGkgPT09IGxhc3RBcmdJbmRleCkge1xuICAgICAgICAgICAgICAgIHByaW50ZWRFeHBhbmRlZCA9IFsuLi5wcmludGVkQXJndW1lbnRzLnNsaWNlKDAsIC0xKSwgcHJpbnQoW10sIHtcbiAgICAgICAgICAgICAgICAgIGV4cGFuZExhc3RBcmc6IHRydWVcbiAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChjYXVnaHQpIHtcbiAgICAgICAgICBpZiAoY2F1Z2h0IGluc3RhbmNlb2YgQXJnRXhwYW5zaW9uQmFpbG91dCkge1xuICAgICAgICAgICAgcmV0dXJuIGFsbEFyZ3NCcm9rZW5PdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgY2F1Z2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcHJpbnRlZEFyZ3VtZW50cy5zb21lKHdpbGxCcmVhaykgPyBicmVha1BhcmVudCA6IFwiXCIsIGNvbmRpdGlvbmFsR3JvdXAoW1tcIihcIiwgLi4ucHJpbnRlZEV4cGFuZGVkLCBcIilcIl0sIHNob3VsZEdyb3VwRmlyc3QgPyBbXCIoXCIsIGdyb3VwKHByaW50ZWRFeHBhbmRlZFswXSwge1xuICAgICAgICAgIHNob3VsZEJyZWFrOiB0cnVlXG4gICAgICAgIH0pLCAuLi5wcmludGVkRXhwYW5kZWQuc2xpY2UoMSksIFwiKVwiXSA6IFtcIihcIiwgLi4ucHJpbnRlZEFyZ3VtZW50cy5zbGljZSgwLCAtMSksIGdyb3VwKGdldExhc3QocHJpbnRlZEV4cGFuZGVkKSwge1xuICAgICAgICAgIHNob3VsZEJyZWFrOiB0cnVlXG4gICAgICAgIH0pLCBcIilcIl0sIGFsbEFyZ3NCcm9rZW5PdXQoKV0pXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRlbnRzID0gW1wiKFwiLCBpbmRlbnQoW3NvZnRsaW5lLCAuLi5wcmludGVkQXJndW1lbnRzXSksIGlmQnJlYWsobWF5YmVUcmFpbGluZ0NvbW1hKSwgc29mdGxpbmUsIFwiKVwiXTtcbiAgICAgIGlmIChpc0xvbmdDdXJyaWVkQ2FsbEV4cHJlc3Npb24ocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdyb3VwKGNvbnRlbnRzLCB7XG4gICAgICAgIHNob3VsZEJyZWFrOiBwcmludGVkQXJndW1lbnRzLnNvbWUod2lsbEJyZWFrKSB8fCBhbnlBcmdFbXB0eUxpbmVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb3VsZEdyb3VwQXJnKGFyZywgYXJyb3dDaGFpblJlY3Vyc2lvbiA9IGZhbHNlKSB7XG4gICAgICByZXR1cm4gYXJnLnR5cGUgPT09IFwiT2JqZWN0RXhwcmVzc2lvblwiICYmIChhcmcucHJvcGVydGllcy5sZW5ndGggPiAwIHx8IGhhc0NvbW1lbnQoYXJnKSkgfHwgYXJnLnR5cGUgPT09IFwiQXJyYXlFeHByZXNzaW9uXCIgJiYgKGFyZy5lbGVtZW50cy5sZW5ndGggPiAwIHx8IGhhc0NvbW1lbnQoYXJnKSkgfHwgYXJnLnR5cGUgPT09IFwiVFNUeXBlQXNzZXJ0aW9uXCIgJiYgY291bGRHcm91cEFyZyhhcmcuZXhwcmVzc2lvbikgfHwgYXJnLnR5cGUgPT09IFwiVFNBc0V4cHJlc3Npb25cIiAmJiBjb3VsZEdyb3VwQXJnKGFyZy5leHByZXNzaW9uKSB8fCBhcmcudHlwZSA9PT0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIiB8fCBhcmcudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiICYmICghYXJnLnJldHVyblR5cGUgfHwgIWFyZy5yZXR1cm5UeXBlLnR5cGVBbm5vdGF0aW9uIHx8IGFyZy5yZXR1cm5UeXBlLnR5cGVBbm5vdGF0aW9uLnR5cGUgIT09IFwiVFNUeXBlUmVmZXJlbmNlXCIgfHwgaXNOb25FbXB0eUJsb2NrU3RhdGVtZW50KGFyZy5ib2R5KSkgJiYgKGFyZy5ib2R5LnR5cGUgPT09IFwiQmxvY2tTdGF0ZW1lbnRcIiB8fCBhcmcuYm9keS50eXBlID09PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgJiYgY291bGRHcm91cEFyZyhhcmcuYm9keSwgdHJ1ZSkgfHwgYXJnLmJvZHkudHlwZSA9PT0gXCJPYmplY3RFeHByZXNzaW9uXCIgfHwgYXJnLmJvZHkudHlwZSA9PT0gXCJBcnJheUV4cHJlc3Npb25cIiB8fCAhYXJyb3dDaGFpblJlY3Vyc2lvbiAmJiAoaXNDYWxsRXhwcmVzc2lvbihhcmcuYm9keSkgfHwgYXJnLmJvZHkudHlwZSA9PT0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIikgfHwgaXNKc3hOb2RlKGFyZy5ib2R5KSkgfHwgYXJnLnR5cGUgPT09IFwiRG9FeHByZXNzaW9uXCIgfHwgYXJnLnR5cGUgPT09IFwiTW9kdWxlRXhwcmVzc2lvblwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGRHcm91cExhc3RBcmcoYXJncywgb3B0aW9ucykge1xuICAgICAgY29uc3QgbGFzdEFyZyA9IGdldExhc3QoYXJncyk7XG4gICAgICBjb25zdCBwZW51bHRpbWF0ZUFyZyA9IGdldFBlbnVsdGltYXRlKGFyZ3MpO1xuICAgICAgcmV0dXJuICFoYXNDb21tZW50KGxhc3RBcmcsIENvbW1lbnRDaGVja0ZsYWdzLkxlYWRpbmcpICYmICFoYXNDb21tZW50KGxhc3RBcmcsIENvbW1lbnRDaGVja0ZsYWdzLlRyYWlsaW5nKSAmJiBjb3VsZEdyb3VwQXJnKGxhc3RBcmcpICYmICghcGVudWx0aW1hdGVBcmcgfHwgcGVudWx0aW1hdGVBcmcudHlwZSAhPT0gbGFzdEFyZy50eXBlKSAmJiAoYXJncy5sZW5ndGggIT09IDIgfHwgcGVudWx0aW1hdGVBcmcudHlwZSAhPT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiIHx8IGxhc3RBcmcudHlwZSAhPT0gXCJBcnJheUV4cHJlc3Npb25cIikgJiYgIShhcmdzLmxlbmd0aCA+IDEgJiYgbGFzdEFyZy50eXBlID09PSBcIkFycmF5RXhwcmVzc2lvblwiICYmIGlzQ29uY2lzZWx5UHJpbnRlZEFycmF5KGxhc3RBcmcsIG9wdGlvbnMpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2hvdWxkR3JvdXBGaXJzdEFyZyhhcmdzKSB7XG4gICAgICBpZiAoYXJncy5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgW2ZpcnN0QXJnLCBzZWNvbmRBcmddID0gYXJncztcbiAgICAgIGlmIChmaXJzdEFyZy50eXBlID09PSBcIk1vZHVsZUV4cHJlc3Npb25cIiAmJiBpc1R5cGVNb2R1bGVPYmplY3RFeHByZXNzaW9uKHNlY29uZEFyZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gIWhhc0NvbW1lbnQoZmlyc3RBcmcpICYmIChmaXJzdEFyZy50eXBlID09PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiIHx8IGZpcnN0QXJnLnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiAmJiBmaXJzdEFyZy5ib2R5LnR5cGUgPT09IFwiQmxvY2tTdGF0ZW1lbnRcIikgJiYgc2Vjb25kQXJnLnR5cGUgIT09IFwiRnVuY3Rpb25FeHByZXNzaW9uXCIgJiYgc2Vjb25kQXJnLnR5cGUgIT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiAmJiBzZWNvbmRBcmcudHlwZSAhPT0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIiAmJiAhY291bGRHcm91cEFyZyhzZWNvbmRBcmcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1JlYWN0SG9va0NhbGxXaXRoRGVwc0FycmF5KGFyZ3MpIHtcbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA9PT0gMiAmJiBhcmdzWzBdLnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiAmJiBnZXRGdW5jdGlvblBhcmFtZXRlcnMoYXJnc1swXSkubGVuZ3RoID09PSAwICYmIGFyZ3NbMF0uYm9keS50eXBlID09PSBcIkJsb2NrU3RhdGVtZW50XCIgJiYgYXJnc1sxXS50eXBlID09PSBcIkFycmF5RXhwcmVzc2lvblwiICYmICFhcmdzLnNvbWUoKGFyZykgPT4gaGFzQ29tbWVudChhcmcpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNOb25FbXB0eUJsb2NrU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiQmxvY2tTdGF0ZW1lbnRcIiAmJiAobm9kZS5ib2R5LnNvbWUoKG5vZGUyKSA9PiBub2RlMi50eXBlICE9PSBcIkVtcHR5U3RhdGVtZW50XCIpIHx8IGhhc0NvbW1lbnQobm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuRGFuZ2xpbmcpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNUeXBlTW9kdWxlT2JqZWN0RXhwcmVzc2lvbihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcIk9iamVjdEV4cHJlc3Npb25cIiAmJiBub2RlLnByb3BlcnRpZXMubGVuZ3RoID09PSAxICYmIGlzT2JqZWN0UHJvcGVydHkobm9kZS5wcm9wZXJ0aWVzWzBdKSAmJiBub2RlLnByb3BlcnRpZXNbMF0ua2V5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUucHJvcGVydGllc1swXS5rZXkubmFtZSA9PT0gXCJ0eXBlXCIgJiYgaXNTdHJpbmdMaXRlcmFsKG5vZGUucHJvcGVydGllc1swXS52YWx1ZSkgJiYgbm9kZS5wcm9wZXJ0aWVzWzBdLnZhbHVlLnZhbHVlID09PSBcIm1vZHVsZVwiO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmludENhbGxBcmd1bWVudHM7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbWVtYmVyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9tZW1iZXIuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgbGFiZWxcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBpc051bWVyaWNMaXRlcmFsLFxuICAgICAgaXNNZW1iZXJFeHByZXNzaW9uLFxuICAgICAgaXNDYWxsRXhwcmVzc2lvblxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBwcmludE9wdGlvbmFsVG9rZW5cbiAgICB9ID0gcmVxdWlyZV9taXNjKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRNZW1iZXJFeHByZXNzaW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBsZXQgZmlyc3ROb25NZW1iZXJQYXJlbnQ7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBkbyB7XG4gICAgICAgIGZpcnN0Tm9uTWVtYmVyUGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKGkpO1xuICAgICAgICBpKys7XG4gICAgICB9IHdoaWxlIChmaXJzdE5vbk1lbWJlclBhcmVudCAmJiAoaXNNZW1iZXJFeHByZXNzaW9uKGZpcnN0Tm9uTWVtYmVyUGFyZW50KSB8fCBmaXJzdE5vbk1lbWJlclBhcmVudC50eXBlID09PSBcIlRTTm9uTnVsbEV4cHJlc3Npb25cIikpO1xuICAgICAgY29uc3Qgb2JqZWN0RG9jID0gcHJpbnQoXCJvYmplY3RcIik7XG4gICAgICBjb25zdCBsb29rdXBEb2MgPSBwcmludE1lbWJlckxvb2t1cChwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICBjb25zdCBzaG91bGRJbmxpbmUgPSBmaXJzdE5vbk1lbWJlclBhcmVudCAmJiAoZmlyc3ROb25NZW1iZXJQYXJlbnQudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCIgfHwgZmlyc3ROb25NZW1iZXJQYXJlbnQudHlwZSA9PT0gXCJCaW5kRXhwcmVzc2lvblwiIHx8IGZpcnN0Tm9uTWVtYmVyUGFyZW50LnR5cGUgPT09IFwiQXNzaWdubWVudEV4cHJlc3Npb25cIiAmJiBmaXJzdE5vbk1lbWJlclBhcmVudC5sZWZ0LnR5cGUgIT09IFwiSWRlbnRpZmllclwiKSB8fCBub2RlLmNvbXB1dGVkIHx8IG5vZGUub2JqZWN0LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgIWlzTWVtYmVyRXhwcmVzc2lvbihwYXJlbnQpIHx8IChwYXJlbnQudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiIHx8IHBhcmVudC50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRvclwiKSAmJiAoaXNDYWxsRXhwcmVzc2lvbihub2RlLm9iamVjdCkgJiYgbm9kZS5vYmplY3QuYXJndW1lbnRzLmxlbmd0aCA+IDAgfHwgbm9kZS5vYmplY3QudHlwZSA9PT0gXCJUU05vbk51bGxFeHByZXNzaW9uXCIgJiYgaXNDYWxsRXhwcmVzc2lvbihub2RlLm9iamVjdC5leHByZXNzaW9uKSAmJiBub2RlLm9iamVjdC5leHByZXNzaW9uLmFyZ3VtZW50cy5sZW5ndGggPiAwIHx8IG9iamVjdERvYy5sYWJlbCA9PT0gXCJtZW1iZXItY2hhaW5cIik7XG4gICAgICByZXR1cm4gbGFiZWwob2JqZWN0RG9jLmxhYmVsID09PSBcIm1lbWJlci1jaGFpblwiID8gXCJtZW1iZXItY2hhaW5cIiA6IFwibWVtYmVyXCIsIFtvYmplY3REb2MsIHNob3VsZElubGluZSA/IGxvb2t1cERvYyA6IGdyb3VwKGluZGVudChbc29mdGxpbmUsIGxvb2t1cERvY10pKV0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludE1lbWJlckxvb2t1cChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBwcmludChcInByb3BlcnR5XCIpO1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IG9wdGlvbmFsID0gcHJpbnRPcHRpb25hbFRva2VuKHBhdGgpO1xuICAgICAgaWYgKCFub2RlLmNvbXB1dGVkKSB7XG4gICAgICAgIHJldHVybiBbb3B0aW9uYWwsIFwiLlwiLCBwcm9wZXJ0eV07XG4gICAgICB9XG4gICAgICBpZiAoIW5vZGUucHJvcGVydHkgfHwgaXNOdW1lcmljTGl0ZXJhbChub2RlLnByb3BlcnR5KSkge1xuICAgICAgICByZXR1cm4gW29wdGlvbmFsLCBcIltcIiwgcHJvcGVydHksIFwiXVwiXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91cChbb3B0aW9uYWwsIFwiW1wiLCBpbmRlbnQoW3NvZnRsaW5lLCBwcm9wZXJ0eV0pLCBzb2Z0bGluZSwgXCJdXCJdKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRNZW1iZXJFeHByZXNzaW9uLFxuICAgICAgcHJpbnRNZW1iZXJMb29rdXBcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX21lbWJlcl9jaGFpbiA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvbWVtYmVyLWNoYWluLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgcHJpbnRDb21tZW50c1xuICAgIH0gPSByZXF1aXJlX2NvbW1lbnRzKCk7XG4gICAgdmFyIHtcbiAgICAgIGdldExhc3QsXG4gICAgICBpc05leHRMaW5lRW1wdHlBZnRlckluZGV4LFxuICAgICAgZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlckluZGV4XG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciBwYXRoTmVlZHNQYXJlbnMgPSByZXF1aXJlX25lZWRzX3BhcmVucygpO1xuICAgIHZhciB7XG4gICAgICBpc0NhbGxFeHByZXNzaW9uLFxuICAgICAgaXNNZW1iZXJFeHByZXNzaW9uLFxuICAgICAgaXNGdW5jdGlvbk9yQXJyb3dFeHByZXNzaW9uLFxuICAgICAgaXNMb25nQ3VycmllZENhbGxFeHByZXNzaW9uLFxuICAgICAgaXNNZW1iZXJpc2gsXG4gICAgICBpc051bWVyaWNMaXRlcmFsLFxuICAgICAgaXNTaW1wbGVDYWxsQXJndW1lbnQsXG4gICAgICBoYXNDb21tZW50LFxuICAgICAgQ29tbWVudENoZWNrRmxhZ3MsXG4gICAgICBpc05leHRMaW5lRW1wdHlcbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICB2YXIge1xuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGpvaW4sXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBjb25kaXRpb25hbEdyb3VwLFxuICAgICAgICBicmVha1BhcmVudCxcbiAgICAgICAgbGFiZWxcbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICB3aWxsQnJlYWtcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciBwcmludENhbGxBcmd1bWVudHMgPSByZXF1aXJlX2NhbGxfYXJndW1lbnRzKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50TWVtYmVyTG9va3VwXG4gICAgfSA9IHJlcXVpcmVfbWVtYmVyKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T3B0aW9uYWxUb2tlbixcbiAgICAgIHByaW50RnVuY3Rpb25UeXBlUGFyYW1ldGVycyxcbiAgICAgIHByaW50QmluZEV4cHJlc3Npb25DYWxsZWVcbiAgICB9ID0gcmVxdWlyZV9taXNjKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRNZW1iZXJDaGFpbihwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBjb25zdCBpc0V4cHJlc3Npb25TdGF0ZW1lbnQgPSAhcGFyZW50IHx8IHBhcmVudC50eXBlID09PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIjtcbiAgICAgIGNvbnN0IHByaW50ZWROb2RlcyA9IFtdO1xuICAgICAgZnVuY3Rpb24gc2hvdWxkSW5zZXJ0RW1wdHlMaW5lQWZ0ZXIobm9kZTIpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG9yaWdpbmFsVGV4dFxuICAgICAgICB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3QgbmV4dENoYXJJbmRleCA9IGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXJJbmRleChvcmlnaW5hbFRleHQsIG5vZGUyLCBsb2NFbmQpO1xuICAgICAgICBjb25zdCBuZXh0Q2hhciA9IG9yaWdpbmFsVGV4dC5jaGFyQXQobmV4dENoYXJJbmRleCk7XG4gICAgICAgIGlmIChuZXh0Q2hhciA9PT0gXCIpXCIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dENoYXJJbmRleCAhPT0gZmFsc2UgJiYgaXNOZXh0TGluZUVtcHR5QWZ0ZXJJbmRleChvcmlnaW5hbFRleHQsIG5leHRDaGFySW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOZXh0TGluZUVtcHR5KG5vZGUyLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHJlYyhwYXRoMikge1xuICAgICAgICBjb25zdCBub2RlMiA9IHBhdGgyLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChpc0NhbGxFeHByZXNzaW9uKG5vZGUyKSAmJiAoaXNNZW1iZXJpc2gobm9kZTIuY2FsbGVlKSB8fCBpc0NhbGxFeHByZXNzaW9uKG5vZGUyLmNhbGxlZSkpKSB7XG4gICAgICAgICAgcHJpbnRlZE5vZGVzLnVuc2hpZnQoe1xuICAgICAgICAgICAgbm9kZTogbm9kZTIsXG4gICAgICAgICAgICBwcmludGVkOiBbcHJpbnRDb21tZW50cyhwYXRoMiwgW3ByaW50T3B0aW9uYWxUb2tlbihwYXRoMiksIHByaW50RnVuY3Rpb25UeXBlUGFyYW1ldGVycyhwYXRoMiwgb3B0aW9ucywgcHJpbnQpLCBwcmludENhbGxBcmd1bWVudHMocGF0aDIsIG9wdGlvbnMsIHByaW50KV0sIG9wdGlvbnMpLCBzaG91bGRJbnNlcnRFbXB0eUxpbmVBZnRlcihub2RlMikgPyBoYXJkbGluZSA6IFwiXCJdXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcGF0aDIuY2FsbCgoY2FsbGVlKSA9PiByZWMoY2FsbGVlKSwgXCJjYWxsZWVcIik7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNNZW1iZXJpc2gobm9kZTIpKSB7XG4gICAgICAgICAgcHJpbnRlZE5vZGVzLnVuc2hpZnQoe1xuICAgICAgICAgICAgbm9kZTogbm9kZTIsXG4gICAgICAgICAgICBuZWVkc1BhcmVuczogcGF0aE5lZWRzUGFyZW5zKHBhdGgyLCBvcHRpb25zKSxcbiAgICAgICAgICAgIHByaW50ZWQ6IHByaW50Q29tbWVudHMocGF0aDIsIGlzTWVtYmVyRXhwcmVzc2lvbihub2RlMikgPyBwcmludE1lbWJlckxvb2t1cChwYXRoMiwgb3B0aW9ucywgcHJpbnQpIDogcHJpbnRCaW5kRXhwcmVzc2lvbkNhbGxlZShwYXRoMiwgb3B0aW9ucywgcHJpbnQpLCBvcHRpb25zKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHBhdGgyLmNhbGwoKG9iamVjdCkgPT4gcmVjKG9iamVjdCksIFwib2JqZWN0XCIpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGUyLnR5cGUgPT09IFwiVFNOb25OdWxsRXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgcHJpbnRlZE5vZGVzLnVuc2hpZnQoe1xuICAgICAgICAgICAgbm9kZTogbm9kZTIsXG4gICAgICAgICAgICBwcmludGVkOiBwcmludENvbW1lbnRzKHBhdGgyLCBcIiFcIiwgb3B0aW9ucylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwYXRoMi5jYWxsKChleHByZXNzaW9uKSA9PiByZWMoZXhwcmVzc2lvbiksIFwiZXhwcmVzc2lvblwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludGVkTm9kZXMudW5zaGlmdCh7XG4gICAgICAgICAgICBub2RlOiBub2RlMixcbiAgICAgICAgICAgIHByaW50ZWQ6IHByaW50KClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIHByaW50ZWROb2Rlcy51bnNoaWZ0KHtcbiAgICAgICAgbm9kZSxcbiAgICAgICAgcHJpbnRlZDogW3ByaW50T3B0aW9uYWxUb2tlbihwYXRoKSwgcHJpbnRGdW5jdGlvblR5cGVQYXJhbWV0ZXJzKHBhdGgsIG9wdGlvbnMsIHByaW50KSwgcHJpbnRDYWxsQXJndW1lbnRzKHBhdGgsIG9wdGlvbnMsIHByaW50KV1cbiAgICAgIH0pO1xuICAgICAgaWYgKG5vZGUuY2FsbGVlKSB7XG4gICAgICAgIHBhdGguY2FsbCgoY2FsbGVlKSA9PiByZWMoY2FsbGVlKSwgXCJjYWxsZWVcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBncm91cHMgPSBbXTtcbiAgICAgIGxldCBjdXJyZW50R3JvdXAgPSBbcHJpbnRlZE5vZGVzWzBdXTtcbiAgICAgIGxldCBpID0gMTtcbiAgICAgIGZvciAoOyBpIDwgcHJpbnRlZE5vZGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmIChwcmludGVkTm9kZXNbaV0ubm9kZS50eXBlID09PSBcIlRTTm9uTnVsbEV4cHJlc3Npb25cIiB8fCBpc0NhbGxFeHByZXNzaW9uKHByaW50ZWROb2Rlc1tpXS5ub2RlKSB8fCBpc01lbWJlckV4cHJlc3Npb24ocHJpbnRlZE5vZGVzW2ldLm5vZGUpICYmIHByaW50ZWROb2Rlc1tpXS5ub2RlLmNvbXB1dGVkICYmIGlzTnVtZXJpY0xpdGVyYWwocHJpbnRlZE5vZGVzW2ldLm5vZGUucHJvcGVydHkpKSB7XG4gICAgICAgICAgY3VycmVudEdyb3VwLnB1c2gocHJpbnRlZE5vZGVzW2ldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc0NhbGxFeHByZXNzaW9uKHByaW50ZWROb2Rlc1swXS5ub2RlKSkge1xuICAgICAgICBmb3IgKDsgaSArIDEgPCBwcmludGVkTm9kZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBpZiAoaXNNZW1iZXJpc2gocHJpbnRlZE5vZGVzW2ldLm5vZGUpICYmIGlzTWVtYmVyaXNoKHByaW50ZWROb2Rlc1tpICsgMV0ubm9kZSkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRHcm91cC5wdXNoKHByaW50ZWROb2Rlc1tpXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZ3JvdXBzLnB1c2goY3VycmVudEdyb3VwKTtcbiAgICAgIGN1cnJlbnRHcm91cCA9IFtdO1xuICAgICAgbGV0IGhhc1NlZW5DYWxsRXhwcmVzc2lvbiA9IGZhbHNlO1xuICAgICAgZm9yICg7IGkgPCBwcmludGVkTm9kZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKGhhc1NlZW5DYWxsRXhwcmVzc2lvbiAmJiBpc01lbWJlcmlzaChwcmludGVkTm9kZXNbaV0ubm9kZSkpIHtcbiAgICAgICAgICBpZiAocHJpbnRlZE5vZGVzW2ldLm5vZGUuY29tcHV0ZWQgJiYgaXNOdW1lcmljTGl0ZXJhbChwcmludGVkTm9kZXNbaV0ubm9kZS5wcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRHcm91cC5wdXNoKHByaW50ZWROb2Rlc1tpXSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZ3JvdXBzLnB1c2goY3VycmVudEdyb3VwKTtcbiAgICAgICAgICBjdXJyZW50R3JvdXAgPSBbXTtcbiAgICAgICAgICBoYXNTZWVuQ2FsbEV4cHJlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDYWxsRXhwcmVzc2lvbihwcmludGVkTm9kZXNbaV0ubm9kZSkgfHwgcHJpbnRlZE5vZGVzW2ldLm5vZGUudHlwZSA9PT0gXCJJbXBvcnRFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICBoYXNTZWVuQ2FsbEV4cHJlc3Npb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRHcm91cC5wdXNoKHByaW50ZWROb2Rlc1tpXSk7XG4gICAgICAgIGlmIChoYXNDb21tZW50KHByaW50ZWROb2Rlc1tpXS5ub2RlLCBDb21tZW50Q2hlY2tGbGFncy5UcmFpbGluZykpIHtcbiAgICAgICAgICBncm91cHMucHVzaChjdXJyZW50R3JvdXApO1xuICAgICAgICAgIGN1cnJlbnRHcm91cCA9IFtdO1xuICAgICAgICAgIGhhc1NlZW5DYWxsRXhwcmVzc2lvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudEdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZ3JvdXBzLnB1c2goY3VycmVudEdyb3VwKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlzRmFjdG9yeShuYW1lKSB7XG4gICAgICAgIHJldHVybiAvXltBLVpdfF5bJF9dKyQvLnRlc3QobmFtZSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc1Nob3J0KG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG5hbWUubGVuZ3RoIDw9IG9wdGlvbnMudGFiV2lkdGg7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBzaG91bGROb3RXcmFwKGdyb3VwczIpIHtcbiAgICAgICAgY29uc3QgaGFzQ29tcHV0ZWQgPSBncm91cHMyWzFdLmxlbmd0aCA+IDAgJiYgZ3JvdXBzMlsxXVswXS5ub2RlLmNvbXB1dGVkO1xuICAgICAgICBpZiAoZ3JvdXBzMlswXS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdE5vZGUgPSBncm91cHMyWzBdWzBdLm5vZGU7XG4gICAgICAgICAgcmV0dXJuIGZpcnN0Tm9kZS50eXBlID09PSBcIlRoaXNFeHByZXNzaW9uXCIgfHwgZmlyc3ROb2RlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIChpc0ZhY3RvcnkoZmlyc3ROb2RlLm5hbWUpIHx8IGlzRXhwcmVzc2lvblN0YXRlbWVudCAmJiBpc1Nob3J0KGZpcnN0Tm9kZS5uYW1lKSB8fCBoYXNDb21wdXRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGFzdE5vZGUgPSBnZXRMYXN0KGdyb3VwczJbMF0pLm5vZGU7XG4gICAgICAgIHJldHVybiBpc01lbWJlckV4cHJlc3Npb24obGFzdE5vZGUpICYmIGxhc3ROb2RlLnByb3BlcnR5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIChpc0ZhY3RvcnkobGFzdE5vZGUucHJvcGVydHkubmFtZSkgfHwgaGFzQ29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2hvdWxkTWVyZ2UgPSBncm91cHMubGVuZ3RoID49IDIgJiYgIWhhc0NvbW1lbnQoZ3JvdXBzWzFdWzBdLm5vZGUpICYmIHNob3VsZE5vdFdyYXAoZ3JvdXBzKTtcbiAgICAgIGZ1bmN0aW9uIHByaW50R3JvdXAocHJpbnRlZEdyb3VwKSB7XG4gICAgICAgIGNvbnN0IHByaW50ZWQgPSBwcmludGVkR3JvdXAubWFwKCh0dXBsZSkgPT4gdHVwbGUucHJpbnRlZCk7XG4gICAgICAgIGlmIChwcmludGVkR3JvdXAubGVuZ3RoID4gMCAmJiBnZXRMYXN0KHByaW50ZWRHcm91cCkubmVlZHNQYXJlbnMpIHtcbiAgICAgICAgICByZXR1cm4gW1wiKFwiLCAuLi5wcmludGVkLCBcIilcIl07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBwcmludEluZGVudGVkR3JvdXAoZ3JvdXBzMikge1xuICAgICAgICBpZiAoZ3JvdXBzMi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZW50KGdyb3VwKFtoYXJkbGluZSwgam9pbihoYXJkbGluZSwgZ3JvdXBzMi5tYXAocHJpbnRHcm91cCkpXSkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJpbnRlZEdyb3VwcyA9IGdyb3Vwcy5tYXAocHJpbnRHcm91cCk7XG4gICAgICBjb25zdCBvbmVMaW5lID0gcHJpbnRlZEdyb3VwcztcbiAgICAgIGNvbnN0IGN1dG9mZiA9IHNob3VsZE1lcmdlID8gMyA6IDI7XG4gICAgICBjb25zdCBmbGF0R3JvdXBzID0gZ3JvdXBzLmZsYXQoKTtcbiAgICAgIGNvbnN0IG5vZGVIYXNDb21tZW50ID0gZmxhdEdyb3Vwcy5zbGljZSgxLCAtMSkuc29tZSgobm9kZTIpID0+IGhhc0NvbW1lbnQobm9kZTIubm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuTGVhZGluZykpIHx8IGZsYXRHcm91cHMuc2xpY2UoMCwgLTEpLnNvbWUoKG5vZGUyKSA9PiBoYXNDb21tZW50KG5vZGUyLm5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLlRyYWlsaW5nKSkgfHwgZ3JvdXBzW2N1dG9mZl0gJiYgaGFzQ29tbWVudChncm91cHNbY3V0b2ZmXVswXS5ub2RlLCBDb21tZW50Q2hlY2tGbGFncy5MZWFkaW5nKTtcbiAgICAgIGlmIChncm91cHMubGVuZ3RoIDw9IGN1dG9mZiAmJiAhbm9kZUhhc0NvbW1lbnQpIHtcbiAgICAgICAgaWYgKGlzTG9uZ0N1cnJpZWRDYWxsRXhwcmVzc2lvbihwYXRoKSkge1xuICAgICAgICAgIHJldHVybiBvbmVMaW5lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBncm91cChvbmVMaW5lKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhc3ROb2RlQmVmb3JlSW5kZW50ID0gZ2V0TGFzdChncm91cHNbc2hvdWxkTWVyZ2UgPyAxIDogMF0pLm5vZGU7XG4gICAgICBjb25zdCBzaG91bGRIYXZlRW1wdHlMaW5lQmVmb3JlSW5kZW50ID0gIWlzQ2FsbEV4cHJlc3Npb24obGFzdE5vZGVCZWZvcmVJbmRlbnQpICYmIHNob3VsZEluc2VydEVtcHR5TGluZUFmdGVyKGxhc3ROb2RlQmVmb3JlSW5kZW50KTtcbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gW3ByaW50R3JvdXAoZ3JvdXBzWzBdKSwgc2hvdWxkTWVyZ2UgPyBncm91cHMuc2xpY2UoMSwgMikubWFwKHByaW50R3JvdXApIDogXCJcIiwgc2hvdWxkSGF2ZUVtcHR5TGluZUJlZm9yZUluZGVudCA/IGhhcmRsaW5lIDogXCJcIiwgcHJpbnRJbmRlbnRlZEdyb3VwKGdyb3Vwcy5zbGljZShzaG91bGRNZXJnZSA/IDIgOiAxKSldO1xuICAgICAgY29uc3QgY2FsbEV4cHJlc3Npb25zID0gcHJpbnRlZE5vZGVzLm1hcCgoe1xuICAgICAgICBub2RlOiBub2RlMlxuICAgICAgfSkgPT4gbm9kZTIpLmZpbHRlcihpc0NhbGxFeHByZXNzaW9uKTtcbiAgICAgIGZ1bmN0aW9uIGxhc3RHcm91cFdpbGxCcmVha0FuZE90aGVyQ2FsbHNIYXZlRnVuY3Rpb25Bcmd1bWVudHMoKSB7XG4gICAgICAgIGNvbnN0IGxhc3RHcm91cE5vZGUgPSBnZXRMYXN0KGdldExhc3QoZ3JvdXBzKSkubm9kZTtcbiAgICAgICAgY29uc3QgbGFzdEdyb3VwRG9jID0gZ2V0TGFzdChwcmludGVkR3JvdXBzKTtcbiAgICAgICAgcmV0dXJuIGlzQ2FsbEV4cHJlc3Npb24obGFzdEdyb3VwTm9kZSkgJiYgd2lsbEJyZWFrKGxhc3RHcm91cERvYykgJiYgY2FsbEV4cHJlc3Npb25zLnNsaWNlKDAsIC0xKS5zb21lKChub2RlMikgPT4gbm9kZTIuYXJndW1lbnRzLnNvbWUoaXNGdW5jdGlvbk9yQXJyb3dFeHByZXNzaW9uKSk7XG4gICAgICB9XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgaWYgKG5vZGVIYXNDb21tZW50IHx8IGNhbGxFeHByZXNzaW9ucy5sZW5ndGggPiAyICYmIGNhbGxFeHByZXNzaW9ucy5zb21lKChleHByKSA9PiAhZXhwci5hcmd1bWVudHMuZXZlcnkoKGFyZykgPT4gaXNTaW1wbGVDYWxsQXJndW1lbnQoYXJnLCAwKSkpIHx8IHByaW50ZWRHcm91cHMuc2xpY2UoMCwgLTEpLnNvbWUod2lsbEJyZWFrKSB8fCBsYXN0R3JvdXBXaWxsQnJlYWtBbmRPdGhlckNhbGxzSGF2ZUZ1bmN0aW9uQXJndW1lbnRzKCkpIHtcbiAgICAgICAgcmVzdWx0ID0gZ3JvdXAoZXhwYW5kZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gW3dpbGxCcmVhayhvbmVMaW5lKSB8fCBzaG91bGRIYXZlRW1wdHlMaW5lQmVmb3JlSW5kZW50ID8gYnJlYWtQYXJlbnQgOiBcIlwiLCBjb25kaXRpb25hbEdyb3VwKFtvbmVMaW5lLCBleHBhbmRlZF0pXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsYWJlbChcIm1lbWJlci1jaGFpblwiLCByZXN1bHQpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmludE1lbWJlckNoYWluO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NhbGxfZXhwcmVzc2lvbiA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvY2FsbC1leHByZXNzaW9uLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgam9pbixcbiAgICAgICAgZ3JvdXBcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciBwYXRoTmVlZHNQYXJlbnMgPSByZXF1aXJlX25lZWRzX3BhcmVucygpO1xuICAgIHZhciB7XG4gICAgICBnZXRDYWxsQXJndW1lbnRzLFxuICAgICAgaGFzRmxvd0Fubm90YXRpb25Db21tZW50LFxuICAgICAgaXNDYWxsRXhwcmVzc2lvbixcbiAgICAgIGlzTWVtYmVyaXNoLFxuICAgICAgaXNTdHJpbmdMaXRlcmFsLFxuICAgICAgaXNUZW1wbGF0ZU9uSXRzT3duTGluZSxcbiAgICAgIGlzVGVzdENhbGwsXG4gICAgICBpdGVyYXRlQ2FsbEFyZ3VtZW50c1BhdGhcbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICB2YXIgcHJpbnRNZW1iZXJDaGFpbiA9IHJlcXVpcmVfbWVtYmVyX2NoYWluKCk7XG4gICAgdmFyIHByaW50Q2FsbEFyZ3VtZW50cyA9IHJlcXVpcmVfY2FsbF9hcmd1bWVudHMoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRPcHRpb25hbFRva2VuLFxuICAgICAgcHJpbnRGdW5jdGlvblR5cGVQYXJhbWV0ZXJzXG4gICAgfSA9IHJlcXVpcmVfbWlzYygpO1xuICAgIGZ1bmN0aW9uIHByaW50Q2FsbEV4cHJlc3Npb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBjb25zdCBpc05ldyA9IG5vZGUudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCI7XG4gICAgICBjb25zdCBpc0R5bmFtaWNJbXBvcnQgPSBub2RlLnR5cGUgPT09IFwiSW1wb3J0RXhwcmVzc2lvblwiO1xuICAgICAgY29uc3Qgb3B0aW9uYWwgPSBwcmludE9wdGlvbmFsVG9rZW4ocGF0aCk7XG4gICAgICBjb25zdCBhcmdzID0gZ2V0Q2FsbEFyZ3VtZW50cyhub2RlKTtcbiAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDAgJiYgKCFpc0R5bmFtaWNJbXBvcnQgJiYgIWlzTmV3ICYmIGlzQ29tbW9uc0pzT3JBbWRDYWxsKG5vZGUsIHBhcmVudE5vZGUpIHx8IGFyZ3MubGVuZ3RoID09PSAxICYmIGlzVGVtcGxhdGVPbkl0c093bkxpbmUoYXJnc1swXSwgb3B0aW9ucy5vcmlnaW5hbFRleHQpIHx8ICFpc05ldyAmJiBpc1Rlc3RDYWxsKG5vZGUsIHBhcmVudE5vZGUpKSkge1xuICAgICAgICBjb25zdCBwcmludGVkID0gW107XG4gICAgICAgIGl0ZXJhdGVDYWxsQXJndW1lbnRzUGF0aChwYXRoLCAoKSA9PiB7XG4gICAgICAgICAgcHJpbnRlZC5wdXNoKHByaW50KCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFtpc05ldyA/IFwibmV3IFwiIDogXCJcIiwgcHJpbnQoXCJjYWxsZWVcIiksIG9wdGlvbmFsLCBwcmludEZ1bmN0aW9uVHlwZVBhcmFtZXRlcnMocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBcIihcIiwgam9pbihcIiwgXCIsIHByaW50ZWQpLCBcIilcIl07XG4gICAgICB9XG4gICAgICBjb25zdCBpc0lkZW50aWZpZXJXaXRoRmxvd0Fubm90YXRpb24gPSAob3B0aW9ucy5wYXJzZXIgPT09IFwiYmFiZWxcIiB8fCBvcHRpb25zLnBhcnNlciA9PT0gXCJiYWJlbC1mbG93XCIpICYmIG5vZGUuY2FsbGVlICYmIG5vZGUuY2FsbGVlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIGhhc0Zsb3dBbm5vdGF0aW9uQ29tbWVudChub2RlLmNhbGxlZS50cmFpbGluZ0NvbW1lbnRzKTtcbiAgICAgIGlmIChpc0lkZW50aWZpZXJXaXRoRmxvd0Fubm90YXRpb24pIHtcbiAgICAgICAgbm9kZS5jYWxsZWUudHJhaWxpbmdDb21tZW50c1swXS5wcmludGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNEeW5hbWljSW1wb3J0ICYmICFpc05ldyAmJiBpc01lbWJlcmlzaChub2RlLmNhbGxlZSkgJiYgIXBhdGguY2FsbCgocGF0aDIpID0+IHBhdGhOZWVkc1BhcmVucyhwYXRoMiwgb3B0aW9ucyksIFwiY2FsbGVlXCIpKSB7XG4gICAgICAgIHJldHVybiBwcmludE1lbWJlckNoYWluKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRlbnRzID0gW2lzTmV3ID8gXCJuZXcgXCIgOiBcIlwiLCBpc0R5bmFtaWNJbXBvcnQgPyBcImltcG9ydFwiIDogcHJpbnQoXCJjYWxsZWVcIiksIG9wdGlvbmFsLCBpc0lkZW50aWZpZXJXaXRoRmxvd0Fubm90YXRpb24gPyBgLyo6OiAke25vZGUuY2FsbGVlLnRyYWlsaW5nQ29tbWVudHNbMF0udmFsdWUuc2xpY2UoMikudHJpbSgpfSAqL2AgOiBcIlwiLCBwcmludEZ1bmN0aW9uVHlwZVBhcmFtZXRlcnMocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBwcmludENhbGxBcmd1bWVudHMocGF0aCwgb3B0aW9ucywgcHJpbnQpXTtcbiAgICAgIGlmIChpc0R5bmFtaWNJbXBvcnQgfHwgaXNDYWxsRXhwcmVzc2lvbihub2RlLmNhbGxlZSkpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwKGNvbnRlbnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNDb21tb25zSnNPckFtZENhbGwobm9kZSwgcGFyZW50Tm9kZSkge1xuICAgICAgaWYgKG5vZGUuY2FsbGVlLnR5cGUgIT09IFwiSWRlbnRpZmllclwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmNhbGxlZS5uYW1lID09PSBcInJlcXVpcmVcIikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmNhbGxlZS5uYW1lID09PSBcImRlZmluZVwiKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBnZXRDYWxsQXJndW1lbnRzKG5vZGUpO1xuICAgICAgICByZXR1cm4gcGFyZW50Tm9kZS50eXBlID09PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiAmJiAoYXJncy5sZW5ndGggPT09IDEgfHwgYXJncy5sZW5ndGggPT09IDIgJiYgYXJnc1swXS50eXBlID09PSBcIkFycmF5RXhwcmVzc2lvblwiIHx8IGFyZ3MubGVuZ3RoID09PSAzICYmIGlzU3RyaW5nTGl0ZXJhbChhcmdzWzBdKSAmJiBhcmdzWzFdLnR5cGUgPT09IFwiQXJyYXlFeHByZXNzaW9uXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludENhbGxFeHByZXNzaW9uXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9hc3NpZ25tZW50ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9hc3NpZ25tZW50LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgaXNOb25FbXB0eUFycmF5LFxuICAgICAgZ2V0U3RyaW5nV2lkdGhcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGxpbmUsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGluZGVudElmQnJlYWssXG4gICAgICAgIGxpbmVTdWZmaXhCb3VuZGFyeVxuICAgICAgfSxcbiAgICAgIHV0aWxzOiB7XG4gICAgICAgIGNsZWFuRG9jLFxuICAgICAgICB3aWxsQnJlYWssXG4gICAgICAgIGNhbkJyZWFrXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgaGFzTGVhZGluZ093bkxpbmVDb21tZW50LFxuICAgICAgaXNCaW5hcnlpc2gsXG4gICAgICBpc1N0cmluZ0xpdGVyYWwsXG4gICAgICBpc0xpdGVyYWwsXG4gICAgICBpc051bWVyaWNMaXRlcmFsLFxuICAgICAgaXNDYWxsRXhwcmVzc2lvbixcbiAgICAgIGlzTWVtYmVyRXhwcmVzc2lvbixcbiAgICAgIGdldENhbGxBcmd1bWVudHMsXG4gICAgICByYXdUZXh0LFxuICAgICAgaGFzQ29tbWVudCxcbiAgICAgIGlzU2lnbmVkTnVtZXJpY0xpdGVyYWwsXG4gICAgICBpc09iamVjdFByb3BlcnR5XG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIHNob3VsZElubGluZUxvZ2ljYWxFeHByZXNzaW9uXG4gICAgfSA9IHJlcXVpcmVfYmluYXJ5aXNoKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q2FsbEV4cHJlc3Npb25cbiAgICB9ID0gcmVxdWlyZV9jYWxsX2V4cHJlc3Npb24oKTtcbiAgICBmdW5jdGlvbiBwcmludEFzc2lnbm1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQsIGxlZnREb2MsIG9wZXJhdG9yLCByaWdodFByb3BlcnR5TmFtZSkge1xuICAgICAgY29uc3QgbGF5b3V0ID0gY2hvb3NlTGF5b3V0KHBhdGgsIG9wdGlvbnMsIHByaW50LCBsZWZ0RG9jLCByaWdodFByb3BlcnR5TmFtZSk7XG4gICAgICBjb25zdCByaWdodERvYyA9IHByaW50KHJpZ2h0UHJvcGVydHlOYW1lLCB7XG4gICAgICAgIGFzc2lnbm1lbnRMYXlvdXQ6IGxheW91dFxuICAgICAgfSk7XG4gICAgICBzd2l0Y2ggKGxheW91dCkge1xuICAgICAgICBjYXNlIFwiYnJlYWstYWZ0ZXItb3BlcmF0b3JcIjpcbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW2dyb3VwKGxlZnREb2MpLCBvcGVyYXRvciwgZ3JvdXAoaW5kZW50KFtsaW5lLCByaWdodERvY10pKV0pO1xuICAgICAgICBjYXNlIFwibmV2ZXItYnJlYWstYWZ0ZXItb3BlcmF0b3JcIjpcbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW2dyb3VwKGxlZnREb2MpLCBvcGVyYXRvciwgXCIgXCIsIHJpZ2h0RG9jXSk7XG4gICAgICAgIGNhc2UgXCJmbHVpZFwiOiB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBJZCA9IFN5bWJvbChcImFzc2lnbm1lbnRcIik7XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKFtncm91cChsZWZ0RG9jKSwgb3BlcmF0b3IsIGdyb3VwKGluZGVudChsaW5lKSwge1xuICAgICAgICAgICAgaWQ6IGdyb3VwSWRcbiAgICAgICAgICB9KSwgbGluZVN1ZmZpeEJvdW5kYXJ5LCBpbmRlbnRJZkJyZWFrKHJpZ2h0RG9jLCB7XG4gICAgICAgICAgICBncm91cElkXG4gICAgICAgICAgfSldKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiYnJlYWstbGhzXCI6XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKFtsZWZ0RG9jLCBvcGVyYXRvciwgXCIgXCIsIGdyb3VwKHJpZ2h0RG9jKV0pO1xuICAgICAgICBjYXNlIFwiY2hhaW5cIjpcbiAgICAgICAgICByZXR1cm4gW2dyb3VwKGxlZnREb2MpLCBvcGVyYXRvciwgbGluZSwgcmlnaHREb2NdO1xuICAgICAgICBjYXNlIFwiY2hhaW4tdGFpbFwiOlxuICAgICAgICAgIHJldHVybiBbZ3JvdXAobGVmdERvYyksIG9wZXJhdG9yLCBpbmRlbnQoW2xpbmUsIHJpZ2h0RG9jXSldO1xuICAgICAgICBjYXNlIFwiY2hhaW4tdGFpbC1hcnJvdy1jaGFpblwiOlxuICAgICAgICAgIHJldHVybiBbZ3JvdXAobGVmdERvYyksIG9wZXJhdG9yLCByaWdodERvY107XG4gICAgICAgIGNhc2UgXCJvbmx5LWxlZnRcIjpcbiAgICAgICAgICByZXR1cm4gbGVmdERvYztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRBc3NpZ25tZW50RXhwcmVzc2lvbihwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIHJldHVybiBwcmludEFzc2lnbm1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQsIHByaW50KFwibGVmdFwiKSwgW1wiIFwiLCBub2RlLm9wZXJhdG9yXSwgXCJyaWdodFwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRWYXJpYWJsZURlY2xhcmF0b3IocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIHJldHVybiBwcmludEFzc2lnbm1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQsIHByaW50KFwiaWRcIiksIFwiID1cIiwgXCJpbml0XCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjaG9vc2VMYXlvdXQocGF0aCwgb3B0aW9ucywgcHJpbnQsIGxlZnREb2MsIHJpZ2h0UHJvcGVydHlOYW1lKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcmlnaHROb2RlID0gbm9kZVtyaWdodFByb3BlcnR5TmFtZV07XG4gICAgICBpZiAoIXJpZ2h0Tm9kZSkge1xuICAgICAgICByZXR1cm4gXCJvbmx5LWxlZnRcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzVGFpbCA9ICFpc0Fzc2lnbm1lbnQocmlnaHROb2RlKTtcbiAgICAgIGNvbnN0IHNob3VsZFVzZUNoYWluRm9ybWF0dGluZyA9IHBhdGgubWF0Y2goaXNBc3NpZ25tZW50LCBpc0Fzc2lnbm1lbnRPclZhcmlhYmxlRGVjbGFyYXRvciwgKG5vZGUyKSA9PiAhaXNUYWlsIHx8IG5vZGUyLnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiICYmIG5vZGUyLnR5cGUgIT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKTtcbiAgICAgIGlmIChzaG91bGRVc2VDaGFpbkZvcm1hdHRpbmcpIHtcbiAgICAgICAgcmV0dXJuICFpc1RhaWwgPyBcImNoYWluXCIgOiByaWdodE5vZGUudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiICYmIHJpZ2h0Tm9kZS5ib2R5LnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiA/IFwiY2hhaW4tdGFpbC1hcnJvdy1jaGFpblwiIDogXCJjaGFpbi10YWlsXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBpc0hlYWRPZkxvbmdDaGFpbiA9ICFpc1RhaWwgJiYgaXNBc3NpZ25tZW50KHJpZ2h0Tm9kZS5yaWdodCk7XG4gICAgICBpZiAoaXNIZWFkT2ZMb25nQ2hhaW4gfHwgaGFzTGVhZGluZ093bkxpbmVDb21tZW50KG9wdGlvbnMub3JpZ2luYWxUZXh0LCByaWdodE5vZGUpKSB7XG4gICAgICAgIHJldHVybiBcImJyZWFrLWFmdGVyLW9wZXJhdG9yXCI7XG4gICAgICB9XG4gICAgICBpZiAocmlnaHROb2RlLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJiByaWdodE5vZGUuY2FsbGVlLm5hbWUgPT09IFwicmVxdWlyZVwiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcImpzb241XCIgfHwgb3B0aW9ucy5wYXJzZXIgPT09IFwianNvblwiKSB7XG4gICAgICAgIHJldHVybiBcIm5ldmVyLWJyZWFrLWFmdGVyLW9wZXJhdG9yXCI7XG4gICAgICB9XG4gICAgICBpZiAoaXNDb21wbGV4RGVzdHJ1Y3R1cmluZyhub2RlKSB8fCBpc0NvbXBsZXhUeXBlQWxpYXNQYXJhbXMobm9kZSkgfHwgaGFzQ29tcGxleFR5cGVBbm5vdGF0aW9uKG5vZGUpIHx8IGlzQXJyb3dGdW5jdGlvblZhcmlhYmxlRGVjbGFyYXRvcihub2RlKSAmJiBjYW5CcmVhayhsZWZ0RG9jKSkge1xuICAgICAgICByZXR1cm4gXCJicmVhay1saHNcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhhc1Nob3J0S2V5ID0gaXNPYmplY3RQcm9wZXJ0eVdpdGhTaG9ydEtleShub2RlLCBsZWZ0RG9jLCBvcHRpb25zKTtcbiAgICAgIGlmIChwYXRoLmNhbGwoKCkgPT4gc2hvdWxkQnJlYWtBZnRlck9wZXJhdG9yKHBhdGgsIG9wdGlvbnMsIHByaW50LCBoYXNTaG9ydEtleSksIHJpZ2h0UHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gXCJicmVhay1hZnRlci1vcGVyYXRvclwiO1xuICAgICAgfVxuICAgICAgaWYgKGhhc1Nob3J0S2V5IHx8IHJpZ2h0Tm9kZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiIHx8IHJpZ2h0Tm9kZS50eXBlID09PSBcIlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvblwiIHx8IHJpZ2h0Tm9kZS50eXBlID09PSBcIkJvb2xlYW5MaXRlcmFsXCIgfHwgaXNOdW1lcmljTGl0ZXJhbChyaWdodE5vZGUpIHx8IHJpZ2h0Tm9kZS50eXBlID09PSBcIkNsYXNzRXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiBcIm5ldmVyLWJyZWFrLWFmdGVyLW9wZXJhdG9yXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJmbHVpZFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGRCcmVha0FmdGVyT3BlcmF0b3IocGF0aCwgb3B0aW9ucywgcHJpbnQsIGhhc1Nob3J0S2V5KSB7XG4gICAgICBjb25zdCByaWdodE5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoaXNCaW5hcnlpc2gocmlnaHROb2RlKSAmJiAhc2hvdWxkSW5saW5lTG9naWNhbEV4cHJlc3Npb24ocmlnaHROb2RlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAocmlnaHROb2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIlN0cmluZ0xpdGVyYWxUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICBjYXNlIFwiU2VxdWVuY2VFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGNhc2UgXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjoge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICB9ID0gcmlnaHROb2RlO1xuICAgICAgICAgIHJldHVybiBpc0JpbmFyeWlzaCh0ZXN0KSAmJiAhc2hvdWxkSW5saW5lTG9naWNhbEV4cHJlc3Npb24odGVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkNsYXNzRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBpc05vbkVtcHR5QXJyYXkocmlnaHROb2RlLmRlY29yYXRvcnMpO1xuICAgICAgfVxuICAgICAgaWYgKGhhc1Nob3J0S2V5KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGxldCBub2RlID0gcmlnaHROb2RlO1xuICAgICAgY29uc3QgcHJvcGVydGllc0ZvclBhdGggPSBbXTtcbiAgICAgIGZvciAoOyA7ICkge1xuICAgICAgICBpZiAobm9kZS50eXBlID09PSBcIlVuYXJ5RXhwcmVzc2lvblwiKSB7XG4gICAgICAgICAgbm9kZSA9IG5vZGUuYXJndW1lbnQ7XG4gICAgICAgICAgcHJvcGVydGllc0ZvclBhdGgucHVzaChcImFyZ3VtZW50XCIpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gXCJUU05vbk51bGxFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICBub2RlID0gbm9kZS5leHByZXNzaW9uO1xuICAgICAgICAgIHByb3BlcnRpZXNGb3JQYXRoLnB1c2goXCJleHByZXNzaW9uXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNTdHJpbmdMaXRlcmFsKG5vZGUpIHx8IHBhdGguY2FsbCgoKSA9PiBpc1Bvb3JseUJyZWFrYWJsZU1lbWJlck9yQ2FsbENoYWluKHBhdGgsIG9wdGlvbnMsIHByaW50KSwgLi4ucHJvcGVydGllc0ZvclBhdGgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0NvbXBsZXhEZXN0cnVjdHVyaW5nKG5vZGUpIHtcbiAgICAgIGlmIChpc0Fzc2lnbm1lbnRPclZhcmlhYmxlRGVjbGFyYXRvcihub2RlKSkge1xuICAgICAgICBjb25zdCBsZWZ0Tm9kZSA9IG5vZGUubGVmdCB8fCBub2RlLmlkO1xuICAgICAgICByZXR1cm4gbGVmdE5vZGUudHlwZSA9PT0gXCJPYmplY3RQYXR0ZXJuXCIgJiYgbGVmdE5vZGUucHJvcGVydGllcy5sZW5ndGggPiAyICYmIGxlZnROb2RlLnByb3BlcnRpZXMuc29tZSgocHJvcGVydHkpID0+IGlzT2JqZWN0UHJvcGVydHkocHJvcGVydHkpICYmICghcHJvcGVydHkuc2hvcnRoYW5kIHx8IHByb3BlcnR5LnZhbHVlICYmIHByb3BlcnR5LnZhbHVlLnR5cGUgPT09IFwiQXNzaWdubWVudFBhdHRlcm5cIikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0Fzc2lnbm1lbnQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0Fzc2lnbm1lbnRPclZhcmlhYmxlRGVjbGFyYXRvcihub2RlKSB7XG4gICAgICByZXR1cm4gaXNBc3NpZ25tZW50KG5vZGUpIHx8IG5vZGUudHlwZSA9PT0gXCJWYXJpYWJsZURlY2xhcmF0b3JcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNDb21wbGV4VHlwZUFsaWFzUGFyYW1zKG5vZGUpIHtcbiAgICAgIGNvbnN0IHR5cGVQYXJhbXMgPSBnZXRUeXBlUGFyYW1ldGVyc0Zyb21UeXBlQWxpYXMobm9kZSk7XG4gICAgICBpZiAoaXNOb25FbXB0eUFycmF5KHR5cGVQYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRQcm9wZXJ0eU5hbWUgPSBub2RlLnR5cGUgPT09IFwiVFNUeXBlQWxpYXNEZWNsYXJhdGlvblwiID8gXCJjb25zdHJhaW50XCIgOiBcImJvdW5kXCI7XG4gICAgICAgIGlmICh0eXBlUGFyYW1zLmxlbmd0aCA+IDEgJiYgdHlwZVBhcmFtcy5zb21lKChwYXJhbSkgPT4gcGFyYW1bY29uc3RyYWludFByb3BlcnR5TmFtZV0gfHwgcGFyYW0uZGVmYXVsdCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRUeXBlUGFyYW1ldGVyc0Zyb21UeXBlQWxpYXMobm9kZSkge1xuICAgICAgaWYgKGlzVHlwZUFsaWFzKG5vZGUpICYmIG5vZGUudHlwZVBhcmFtZXRlcnMgJiYgbm9kZS50eXBlUGFyYW1ldGVycy5wYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUudHlwZVBhcmFtZXRlcnMucGFyYW1zO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzVHlwZUFsaWFzKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiVFNUeXBlQWxpYXNEZWNsYXJhdGlvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJUeXBlQWxpYXNcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzQ29tcGxleFR5cGVBbm5vdGF0aW9uKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiVmFyaWFibGVEZWNsYXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3Qge1xuICAgICAgICB0eXBlQW5ub3RhdGlvblxuICAgICAgfSA9IG5vZGUuaWQ7XG4gICAgICBpZiAoIXR5cGVBbm5vdGF0aW9uIHx8ICF0eXBlQW5ub3RhdGlvbi50eXBlQW5ub3RhdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlUGFyYW1zID0gZ2V0VHlwZVBhcmFtZXRlcnNGcm9tVHlwZVJlZmVyZW5jZSh0eXBlQW5ub3RhdGlvbi50eXBlQW5ub3RhdGlvbik7XG4gICAgICByZXR1cm4gaXNOb25FbXB0eUFycmF5KHR5cGVQYXJhbXMpICYmIHR5cGVQYXJhbXMubGVuZ3RoID4gMSAmJiB0eXBlUGFyYW1zLnNvbWUoKHBhcmFtKSA9PiBpc05vbkVtcHR5QXJyYXkoZ2V0VHlwZVBhcmFtZXRlcnNGcm9tVHlwZVJlZmVyZW5jZShwYXJhbSkpIHx8IHBhcmFtLnR5cGUgPT09IFwiVFNDb25kaXRpb25hbFR5cGVcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzQXJyb3dGdW5jdGlvblZhcmlhYmxlRGVjbGFyYXRvcihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRvclwiICYmIG5vZGUuaW5pdCAmJiBub2RlLmluaXQudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRUeXBlUGFyYW1ldGVyc0Zyb21UeXBlUmVmZXJlbmNlKG5vZGUpIHtcbiAgICAgIGlmIChpc1R5cGVSZWZlcmVuY2Uobm9kZSkgJiYgbm9kZS50eXBlUGFyYW1ldGVycyAmJiBub2RlLnR5cGVQYXJhbWV0ZXJzLnBhcmFtcykge1xuICAgICAgICByZXR1cm4gbm9kZS50eXBlUGFyYW1ldGVycy5wYXJhbXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNUeXBlUmVmZXJlbmNlKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiVFNUeXBlUmVmZXJlbmNlXCIgfHwgbm9kZS50eXBlID09PSBcIkdlbmVyaWNUeXBlQW5ub3RhdGlvblwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1Bvb3JseUJyZWFrYWJsZU1lbWJlck9yQ2FsbENoYWluKHBhdGgsIG9wdGlvbnMsIHByaW50LCBkZWVwID0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBnb0RlZXBlciA9ICgpID0+IGlzUG9vcmx5QnJlYWthYmxlTWVtYmVyT3JDYWxsQ2hhaW4ocGF0aCwgb3B0aW9ucywgcHJpbnQsIHRydWUpO1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJUU05vbk51bGxFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHBhdGguY2FsbChnb0RlZXBlciwgXCJleHByZXNzaW9uXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICAgICAgY29uc3QgZG9jMiA9IHByaW50Q2FsbEV4cHJlc3Npb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBpZiAoZG9jMi5sYWJlbCA9PT0gXCJtZW1iZXItY2hhaW5cIikge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcmdzID0gZ2V0Q2FsbEFyZ3VtZW50cyhub2RlKTtcbiAgICAgICAgY29uc3QgaXNQb29ybHlCcmVha2FibGVDYWxsID0gYXJncy5sZW5ndGggPT09IDAgfHwgYXJncy5sZW5ndGggPT09IDEgJiYgaXNMb25lU2hvcnRBcmd1bWVudChhcmdzWzBdLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFpc1Bvb3JseUJyZWFrYWJsZUNhbGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb25XaXRoQ29tcGxleFR5cGVBcmd1bWVudHMobm9kZSwgcHJpbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoLmNhbGwoZ29EZWVwZXIsIFwiY2FsbGVlXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTWVtYmVyRXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgICByZXR1cm4gcGF0aC5jYWxsKGdvRGVlcGVyLCBcIm9iamVjdFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWVwICYmIChub2RlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiIHx8IG5vZGUudHlwZSA9PT0gXCJUaGlzRXhwcmVzc2lvblwiKTtcbiAgICB9XG4gICAgdmFyIExPTkVfU0hPUlRfQVJHVU1FTlRfVEhSRVNIT0xEX1JBVEUgPSAwLjI1O1xuICAgIGZ1bmN0aW9uIGlzTG9uZVNob3J0QXJndW1lbnQobm9kZSwge1xuICAgICAgcHJpbnRXaWR0aFxuICAgIH0pIHtcbiAgICAgIGlmIChoYXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRocmVzaG9sZCA9IHByaW50V2lkdGggKiBMT05FX1NIT1JUX0FSR1VNRU5UX1RIUkVTSE9MRF9SQVRFO1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJUaGlzRXhwcmVzc2lvblwiIHx8IG5vZGUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgbm9kZS5uYW1lLmxlbmd0aCA8PSB0aHJlc2hvbGQgfHwgaXNTaWduZWROdW1lcmljTGl0ZXJhbChub2RlKSAmJiAhaGFzQ29tbWVudChub2RlLmFyZ3VtZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlZ2V4cFBhdHRlcm4gPSBub2RlLnR5cGUgPT09IFwiTGl0ZXJhbFwiICYmIFwicmVnZXhcIiBpbiBub2RlICYmIG5vZGUucmVnZXgucGF0dGVybiB8fCBub2RlLnR5cGUgPT09IFwiUmVnRXhwTGl0ZXJhbFwiICYmIG5vZGUucGF0dGVybjtcbiAgICAgIGlmIChyZWdleHBQYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiByZWdleHBQYXR0ZXJuLmxlbmd0aCA8PSB0aHJlc2hvbGQ7XG4gICAgICB9XG4gICAgICBpZiAoaXNTdHJpbmdMaXRlcmFsKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiByYXdUZXh0KG5vZGUpLmxlbmd0aCA8PSB0aHJlc2hvbGQ7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiKSB7XG4gICAgICAgIHJldHVybiBub2RlLmV4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCAmJiBub2RlLnF1YXNpc1swXS52YWx1ZS5yYXcubGVuZ3RoIDw9IHRocmVzaG9sZCAmJiAhbm9kZS5xdWFzaXNbMF0udmFsdWUucmF3LmluY2x1ZGVzKFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzTGl0ZXJhbChub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNPYmplY3RQcm9wZXJ0eVdpdGhTaG9ydEtleShub2RlLCBrZXlEb2MsIG9wdGlvbnMpIHtcbiAgICAgIGlmICghaXNPYmplY3RQcm9wZXJ0eShub2RlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBrZXlEb2MgPSBjbGVhbkRvYyhrZXlEb2MpO1xuICAgICAgY29uc3QgTUlOX09WRVJMQVBfRk9SX0JSRUFLID0gMztcbiAgICAgIHJldHVybiB0eXBlb2Yga2V5RG9jID09PSBcInN0cmluZ1wiICYmIGdldFN0cmluZ1dpZHRoKGtleURvYykgPCBvcHRpb25zLnRhYldpZHRoICsgTUlOX09WRVJMQVBfRk9SX0JSRUFLO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0NhbGxFeHByZXNzaW9uV2l0aENvbXBsZXhUeXBlQXJndW1lbnRzKG5vZGUsIHByaW50KSB7XG4gICAgICBjb25zdCB0eXBlQXJncyA9IGdldFR5cGVBcmd1bWVudHNGcm9tQ2FsbEV4cHJlc3Npb24obm9kZSk7XG4gICAgICBpZiAoaXNOb25FbXB0eUFycmF5KHR5cGVBcmdzKSkge1xuICAgICAgICBpZiAodHlwZUFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlQXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdEFyZyA9IHR5cGVBcmdzWzBdO1xuICAgICAgICAgIGlmIChmaXJzdEFyZy50eXBlID09PSBcIlRTVW5pb25UeXBlXCIgfHwgZmlyc3RBcmcudHlwZSA9PT0gXCJVbmlvblR5cGVBbm5vdGF0aW9uXCIgfHwgZmlyc3RBcmcudHlwZSA9PT0gXCJUU0ludGVyc2VjdGlvblR5cGVcIiB8fCBmaXJzdEFyZy50eXBlID09PSBcIkludGVyc2VjdGlvblR5cGVBbm5vdGF0aW9uXCIgfHwgZmlyc3RBcmcudHlwZSA9PT0gXCJUU1R5cGVMaXRlcmFsXCIgfHwgZmlyc3RBcmcudHlwZSA9PT0gXCJPYmplY3RUeXBlQW5ub3RhdGlvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHlwZUFyZ3NLZXlOYW1lID0gbm9kZS50eXBlUGFyYW1ldGVycyA/IFwidHlwZVBhcmFtZXRlcnNcIiA6IFwidHlwZUFyZ3VtZW50c1wiO1xuICAgICAgICBpZiAod2lsbEJyZWFrKHByaW50KHR5cGVBcmdzS2V5TmFtZSkpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0VHlwZUFyZ3VtZW50c0Zyb21DYWxsRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlUGFyYW1ldGVycyAmJiBub2RlLnR5cGVQYXJhbWV0ZXJzLnBhcmFtcyB8fCBub2RlLnR5cGVBcmd1bWVudHMgJiYgbm9kZS50eXBlQXJndW1lbnRzLnBhcmFtcztcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRWYXJpYWJsZURlY2xhcmF0b3IsXG4gICAgICBwcmludEFzc2lnbm1lbnRFeHByZXNzaW9uLFxuICAgICAgcHJpbnRBc3NpZ25tZW50LFxuICAgICAgaXNBcnJvd0Z1bmN0aW9uVmFyaWFibGVEZWNsYXJhdG9yXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9mdW5jdGlvbl9wYXJhbWV0ZXJzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9mdW5jdGlvbi1wYXJhbWV0ZXJzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgZ2V0TmV4dE5vblNwYWNlTm9uQ29tbWVudENoYXJhY3RlclxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnREYW5nbGluZ0NvbW1lbnRzXG4gICAgfSA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBpZkJyZWFrXG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgcmVtb3ZlTGluZXMsXG4gICAgICAgIHdpbGxCcmVha1xuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGdldEZ1bmN0aW9uUGFyYW1ldGVycyxcbiAgICAgIGl0ZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNQYXRoLFxuICAgICAgaXNTaW1wbGVUeXBlLFxuICAgICAgaXNUZXN0Q2FsbCxcbiAgICAgIGlzVHlwZUFubm90YXRpb25BRnVuY3Rpb24sXG4gICAgICBpc09iamVjdFR5cGUsXG4gICAgICBpc09iamVjdFR5cGVQcm9wZXJ0eUFGdW5jdGlvbixcbiAgICAgIGhhc1Jlc3RQYXJhbWV0ZXIsXG4gICAgICBzaG91bGRQcmludENvbW1hLFxuICAgICAgaGFzQ29tbWVudCxcbiAgICAgIGlzTmV4dExpbmVFbXB0eVxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBsb2NFbmRcbiAgICB9ID0gcmVxdWlyZV9sb2MoKTtcbiAgICB2YXIge1xuICAgICAgQXJnRXhwYW5zaW9uQmFpbG91dFxuICAgIH0gPSByZXF1aXJlX2Vycm9ycygpO1xuICAgIHZhciB7XG4gICAgICBwcmludEZ1bmN0aW9uVHlwZVBhcmFtZXRlcnNcbiAgICB9ID0gcmVxdWlyZV9taXNjKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRGdW5jdGlvblBhcmFtZXRlcnMocGF0aCwgcHJpbnQsIG9wdGlvbnMsIGV4cGFuZEFyZywgcHJpbnRUeXBlUGFyYW1zKSB7XG4gICAgICBjb25zdCBmdW5jdGlvbk5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKGZ1bmN0aW9uTm9kZSk7XG4gICAgICBjb25zdCB0eXBlUGFyYW1zID0gcHJpbnRUeXBlUGFyYW1zID8gcHJpbnRGdW5jdGlvblR5cGVQYXJhbWV0ZXJzKHBhdGgsIG9wdGlvbnMsIHByaW50KSA6IFwiXCI7XG4gICAgICBpZiAocGFyYW1ldGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFt0eXBlUGFyYW1zLCBcIihcIiwgcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUsIChjb21tZW50KSA9PiBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVyKG9wdGlvbnMub3JpZ2luYWxUZXh0LCBjb21tZW50LCBsb2NFbmQpID09PSBcIilcIiksIFwiKVwiXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgY29uc3QgaXNQYXJhbWV0ZXJzSW5UZXN0Q2FsbCA9IGlzVGVzdENhbGwocGFyZW50KTtcbiAgICAgIGNvbnN0IHNob3VsZEh1Z1BhcmFtZXRlcnMgPSBzaG91bGRIdWdGdW5jdGlvblBhcmFtZXRlcnMoZnVuY3Rpb25Ob2RlKTtcbiAgICAgIGNvbnN0IHByaW50ZWQgPSBbXTtcbiAgICAgIGl0ZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNQYXRoKHBhdGgsIChwYXJhbWV0ZXJQYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBpc0xhc3RQYXJhbWV0ZXIgPSBpbmRleCA9PT0gcGFyYW1ldGVycy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoaXNMYXN0UGFyYW1ldGVyICYmIGZ1bmN0aW9uTm9kZS5yZXN0KSB7XG4gICAgICAgICAgcHJpbnRlZC5wdXNoKFwiLi4uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHByaW50ZWQucHVzaChwcmludCgpKTtcbiAgICAgICAgaWYgKGlzTGFzdFBhcmFtZXRlcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwcmludGVkLnB1c2goXCIsXCIpO1xuICAgICAgICBpZiAoaXNQYXJhbWV0ZXJzSW5UZXN0Q2FsbCB8fCBzaG91bGRIdWdQYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgcHJpbnRlZC5wdXNoKFwiIFwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc05leHRMaW5lRW1wdHkocGFyYW1ldGVyc1tpbmRleF0sIG9wdGlvbnMpKSB7XG4gICAgICAgICAgcHJpbnRlZC5wdXNoKGhhcmRsaW5lLCBoYXJkbGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRlZC5wdXNoKGxpbmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChleHBhbmRBcmcpIHtcbiAgICAgICAgaWYgKHdpbGxCcmVhayh0eXBlUGFyYW1zKSB8fCB3aWxsQnJlYWsocHJpbnRlZCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXJnRXhwYW5zaW9uQmFpbG91dCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBncm91cChbcmVtb3ZlTGluZXModHlwZVBhcmFtcyksIFwiKFwiLCByZW1vdmVMaW5lcyhwcmludGVkKSwgXCIpXCJdKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhhc05vdFBhcmFtZXRlckRlY29yYXRvciA9IHBhcmFtZXRlcnMuZXZlcnkoKG5vZGUpID0+ICFub2RlLmRlY29yYXRvcnMpO1xuICAgICAgaWYgKHNob3VsZEh1Z1BhcmFtZXRlcnMgJiYgaGFzTm90UGFyYW1ldGVyRGVjb3JhdG9yKSB7XG4gICAgICAgIHJldHVybiBbdHlwZVBhcmFtcywgXCIoXCIsIC4uLnByaW50ZWQsIFwiKVwiXTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1BhcmFtZXRlcnNJblRlc3RDYWxsKSB7XG4gICAgICAgIHJldHVybiBbdHlwZVBhcmFtcywgXCIoXCIsIC4uLnByaW50ZWQsIFwiKVwiXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzRmxvd1Nob3J0aGFuZFdpdGhPbmVBcmcgPSAoaXNPYmplY3RUeXBlUHJvcGVydHlBRnVuY3Rpb24ocGFyZW50KSB8fCBpc1R5cGVBbm5vdGF0aW9uQUZ1bmN0aW9uKHBhcmVudCkgfHwgcGFyZW50LnR5cGUgPT09IFwiVHlwZUFsaWFzXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVW5pb25UeXBlQW5ub3RhdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIlRTVW5pb25UeXBlXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiSW50ZXJzZWN0aW9uVHlwZUFubm90YXRpb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJGdW5jdGlvblR5cGVBbm5vdGF0aW9uXCIgJiYgcGFyZW50LnJldHVyblR5cGUgPT09IGZ1bmN0aW9uTm9kZSkgJiYgcGFyYW1ldGVycy5sZW5ndGggPT09IDEgJiYgcGFyYW1ldGVyc1swXS5uYW1lID09PSBudWxsICYmIGZ1bmN0aW9uTm9kZS50aGlzICE9PSBwYXJhbWV0ZXJzWzBdICYmIHBhcmFtZXRlcnNbMF0udHlwZUFubm90YXRpb24gJiYgZnVuY3Rpb25Ob2RlLnR5cGVQYXJhbWV0ZXJzID09PSBudWxsICYmIGlzU2ltcGxlVHlwZShwYXJhbWV0ZXJzWzBdLnR5cGVBbm5vdGF0aW9uKSAmJiAhZnVuY3Rpb25Ob2RlLnJlc3Q7XG4gICAgICBpZiAoaXNGbG93U2hvcnRoYW5kV2l0aE9uZUFyZykge1xuICAgICAgICBpZiAob3B0aW9ucy5hcnJvd1BhcmVucyA9PT0gXCJhbHdheXNcIikge1xuICAgICAgICAgIHJldHVybiBbXCIoXCIsIC4uLnByaW50ZWQsIFwiKVwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJpbnRlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbdHlwZVBhcmFtcywgXCIoXCIsIGluZGVudChbc29mdGxpbmUsIC4uLnByaW50ZWRdKSwgaWZCcmVhayghaGFzUmVzdFBhcmFtZXRlcihmdW5jdGlvbk5vZGUpICYmIHNob3VsZFByaW50Q29tbWEob3B0aW9ucywgXCJhbGxcIikgPyBcIixcIiA6IFwiXCIpLCBzb2Z0bGluZSwgXCIpXCJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGRIdWdGdW5jdGlvblBhcmFtZXRlcnMobm9kZSkge1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBnZXRGdW5jdGlvblBhcmFtZXRlcnMobm9kZSk7XG4gICAgICBpZiAocGFyYW1ldGVycy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgW3BhcmFtZXRlcl0gPSBwYXJhbWV0ZXJzO1xuICAgICAgcmV0dXJuICFoYXNDb21tZW50KHBhcmFtZXRlcikgJiYgKHBhcmFtZXRlci50eXBlID09PSBcIk9iamVjdFBhdHRlcm5cIiB8fCBwYXJhbWV0ZXIudHlwZSA9PT0gXCJBcnJheVBhdHRlcm5cIiB8fCBwYXJhbWV0ZXIudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgcGFyYW1ldGVyLnR5cGVBbm5vdGF0aW9uICYmIChwYXJhbWV0ZXIudHlwZUFubm90YXRpb24udHlwZSA9PT0gXCJUeXBlQW5ub3RhdGlvblwiIHx8IHBhcmFtZXRlci50eXBlQW5ub3RhdGlvbi50eXBlID09PSBcIlRTVHlwZUFubm90YXRpb25cIikgJiYgaXNPYmplY3RUeXBlKHBhcmFtZXRlci50eXBlQW5ub3RhdGlvbi50eXBlQW5ub3RhdGlvbikgfHwgcGFyYW1ldGVyLnR5cGUgPT09IFwiRnVuY3Rpb25UeXBlUGFyYW1cIiAmJiBpc09iamVjdFR5cGUocGFyYW1ldGVyLnR5cGVBbm5vdGF0aW9uKSB8fCBwYXJhbWV0ZXIudHlwZSA9PT0gXCJBc3NpZ25tZW50UGF0dGVyblwiICYmIChwYXJhbWV0ZXIubGVmdC50eXBlID09PSBcIk9iamVjdFBhdHRlcm5cIiB8fCBwYXJhbWV0ZXIubGVmdC50eXBlID09PSBcIkFycmF5UGF0dGVyblwiKSAmJiAocGFyYW1ldGVyLnJpZ2h0LnR5cGUgPT09IFwiSWRlbnRpZmllclwiIHx8IHBhcmFtZXRlci5yaWdodC50eXBlID09PSBcIk9iamVjdEV4cHJlc3Npb25cIiAmJiBwYXJhbWV0ZXIucmlnaHQucHJvcGVydGllcy5sZW5ndGggPT09IDAgfHwgcGFyYW1ldGVyLnJpZ2h0LnR5cGUgPT09IFwiQXJyYXlFeHByZXNzaW9uXCIgJiYgcGFyYW1ldGVyLnJpZ2h0LmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRSZXR1cm5UeXBlTm9kZShmdW5jdGlvbk5vZGUpIHtcbiAgICAgIGxldCByZXR1cm5UeXBlTm9kZTtcbiAgICAgIGlmIChmdW5jdGlvbk5vZGUucmV0dXJuVHlwZSkge1xuICAgICAgICByZXR1cm5UeXBlTm9kZSA9IGZ1bmN0aW9uTm9kZS5yZXR1cm5UeXBlO1xuICAgICAgICBpZiAocmV0dXJuVHlwZU5vZGUudHlwZUFubm90YXRpb24pIHtcbiAgICAgICAgICByZXR1cm5UeXBlTm9kZSA9IHJldHVyblR5cGVOb2RlLnR5cGVBbm5vdGF0aW9uO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS50eXBlQW5ub3RhdGlvbikge1xuICAgICAgICByZXR1cm5UeXBlTm9kZSA9IGZ1bmN0aW9uTm9kZS50eXBlQW5ub3RhdGlvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXR1cm5UeXBlTm9kZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2hvdWxkR3JvdXBGdW5jdGlvblBhcmFtZXRlcnMoZnVuY3Rpb25Ob2RlLCByZXR1cm5UeXBlRG9jKSB7XG4gICAgICBjb25zdCByZXR1cm5UeXBlTm9kZSA9IGdldFJldHVyblR5cGVOb2RlKGZ1bmN0aW9uTm9kZSk7XG4gICAgICBpZiAoIXJldHVyblR5cGVOb2RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGVQYXJhbWV0ZXJzID0gZnVuY3Rpb25Ob2RlLnR5cGVQYXJhbWV0ZXJzICYmIGZ1bmN0aW9uTm9kZS50eXBlUGFyYW1ldGVycy5wYXJhbXM7XG4gICAgICBpZiAodHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IHR5cGVQYXJhbWV0ZXIgPSB0eXBlUGFyYW1ldGVyc1swXTtcbiAgICAgICAgICBpZiAodHlwZVBhcmFtZXRlci5jb25zdHJhaW50IHx8IHR5cGVQYXJhbWV0ZXIuZGVmYXVsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGdldEZ1bmN0aW9uUGFyYW1ldGVycyhmdW5jdGlvbk5vZGUpLmxlbmd0aCA9PT0gMSAmJiAoaXNPYmplY3RUeXBlKHJldHVyblR5cGVOb2RlKSB8fCB3aWxsQnJlYWsocmV0dXJuVHlwZURvYykpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludEZ1bmN0aW9uUGFyYW1ldGVycyxcbiAgICAgIHNob3VsZEh1Z0Z1bmN0aW9uUGFyYW1ldGVycyxcbiAgICAgIHNob3VsZEdyb3VwRnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV90eXBlX2Fubm90YXRpb24gPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L3R5cGUtYW5ub3RhdGlvbi5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q29tbWVudHMsXG4gICAgICBwcmludERhbmdsaW5nQ29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9jb21tZW50cygpO1xuICAgIHZhciB7XG4gICAgICBpc05vbkVtcHR5QXJyYXlcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGdyb3VwLFxuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBhbGlnbixcbiAgICAgICAgaWZCcmVha1xuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHBhdGhOZWVkc1BhcmVucyA9IHJlcXVpcmVfbmVlZHNfcGFyZW5zKCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0XG4gICAgfSA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIHtcbiAgICAgIGlzU2ltcGxlVHlwZSxcbiAgICAgIGlzT2JqZWN0VHlwZSxcbiAgICAgIGhhc0xlYWRpbmdPd25MaW5lQ29tbWVudCxcbiAgICAgIGlzT2JqZWN0VHlwZVByb3BlcnR5QUZ1bmN0aW9uLFxuICAgICAgc2hvdWxkUHJpbnRDb21tYVxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBwcmludEFzc2lnbm1lbnRcbiAgICB9ID0gcmVxdWlyZV9hc3NpZ25tZW50KCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50RnVuY3Rpb25QYXJhbWV0ZXJzLFxuICAgICAgc2hvdWxkR3JvdXBGdW5jdGlvblBhcmFtZXRlcnNcbiAgICB9ID0gcmVxdWlyZV9mdW5jdGlvbl9wYXJhbWV0ZXJzKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50QXJyYXlJdGVtc1xuICAgIH0gPSByZXF1aXJlX2FycmF5NCgpO1xuICAgIGZ1bmN0aW9uIHNob3VsZEh1Z1R5cGUobm9kZSkge1xuICAgICAgaWYgKGlzU2ltcGxlVHlwZShub2RlKSB8fCBpc09iamVjdFR5cGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIlVuaW9uVHlwZUFubm90YXRpb25cIiB8fCBub2RlLnR5cGUgPT09IFwiVFNVbmlvblR5cGVcIikge1xuICAgICAgICBjb25zdCB2b2lkQ291bnQgPSBub2RlLnR5cGVzLmZpbHRlcigobm9kZTIpID0+IG5vZGUyLnR5cGUgPT09IFwiVm9pZFR5cGVBbm5vdGF0aW9uXCIgfHwgbm9kZTIudHlwZSA9PT0gXCJUU1ZvaWRLZXl3b3JkXCIgfHwgbm9kZTIudHlwZSA9PT0gXCJOdWxsTGl0ZXJhbFR5cGVBbm5vdGF0aW9uXCIgfHwgbm9kZTIudHlwZSA9PT0gXCJUU051bGxLZXl3b3JkXCIpLmxlbmd0aDtcbiAgICAgICAgY29uc3QgaGFzT2JqZWN0ID0gbm9kZS50eXBlcy5zb21lKChub2RlMikgPT4gbm9kZTIudHlwZSA9PT0gXCJPYmplY3RUeXBlQW5ub3RhdGlvblwiIHx8IG5vZGUyLnR5cGUgPT09IFwiVFNUeXBlTGl0ZXJhbFwiIHx8IG5vZGUyLnR5cGUgPT09IFwiR2VuZXJpY1R5cGVBbm5vdGF0aW9uXCIgfHwgbm9kZTIudHlwZSA9PT0gXCJUU1R5cGVSZWZlcmVuY2VcIik7XG4gICAgICAgIGlmIChub2RlLnR5cGVzLmxlbmd0aCAtIDEgPT09IHZvaWRDb3VudCAmJiBoYXNPYmplY3QpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludE9wYXF1ZVR5cGUocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IHNlbWkgPSBvcHRpb25zLnNlbWkgPyBcIjtcIiA6IFwiXCI7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIHBhcnRzLnB1c2goXCJvcGFxdWUgdHlwZSBcIiwgcHJpbnQoXCJpZFwiKSwgcHJpbnQoXCJ0eXBlUGFyYW1ldGVyc1wiKSk7XG4gICAgICBpZiAobm9kZS5zdXBlcnR5cGUpIHtcbiAgICAgICAgcGFydHMucHVzaChcIjogXCIsIHByaW50KFwic3VwZXJ0eXBlXCIpKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmltcGx0eXBlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCIgPSBcIiwgcHJpbnQoXCJpbXBsdHlwZVwiKSk7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKHNlbWkpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFR5cGVBbGlhcyhwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgc2VtaSA9IG9wdGlvbnMuc2VtaSA/IFwiO1wiIDogXCJcIjtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgaWYgKG5vZGUuZGVjbGFyZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKFwidHlwZSBcIiwgcHJpbnQoXCJpZFwiKSwgcHJpbnQoXCJ0eXBlUGFyYW1ldGVyc1wiKSk7XG4gICAgICBjb25zdCByaWdodFByb3BlcnR5TmFtZSA9IG5vZGUudHlwZSA9PT0gXCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCIgPyBcInR5cGVBbm5vdGF0aW9uXCIgOiBcInJpZ2h0XCI7XG4gICAgICByZXR1cm4gW3ByaW50QXNzaWdubWVudChwYXRoLCBvcHRpb25zLCBwcmludCwgcGFydHMsIFwiID1cIiwgcmlnaHRQcm9wZXJ0eU5hbWUpLCBzZW1pXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRJbnRlcnNlY3Rpb25UeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgdHlwZXMgPSBwYXRoLm1hcChwcmludCwgXCJ0eXBlc1wiKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgbGV0IHdhc0luZGVudGVkID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godHlwZXNbaV0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0VHlwZShub2RlLnR5cGVzW2kgLSAxXSkgJiYgaXNPYmplY3RUeXBlKG5vZGUudHlwZXNbaV0pKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goW1wiICYgXCIsIHdhc0luZGVudGVkID8gaW5kZW50KHR5cGVzW2ldKSA6IHR5cGVzW2ldXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzT2JqZWN0VHlwZShub2RlLnR5cGVzW2kgLSAxXSkgJiYgIWlzT2JqZWN0VHlwZShub2RlLnR5cGVzW2ldKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGluZGVudChbXCIgJlwiLCBsaW5lLCB0eXBlc1tpXV0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaSA+IDEpIHtcbiAgICAgICAgICAgIHdhc0luZGVudGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2goXCIgJiBcIiwgaSA+IDEgPyBpbmRlbnQodHlwZXNbaV0pIDogdHlwZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZ3JvdXAocmVzdWx0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRVbmlvblR5cGUocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIGNvbnN0IHNob3VsZEluZGVudCA9IHBhcmVudC50eXBlICE9PSBcIlR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiVFNUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvblwiICYmIHBhcmVudC50eXBlICE9PSBcIkdlbmVyaWNUeXBlQW5ub3RhdGlvblwiICYmIHBhcmVudC50eXBlICE9PSBcIlRTVHlwZVJlZmVyZW5jZVwiICYmIHBhcmVudC50eXBlICE9PSBcIlRTVHlwZUFzc2VydGlvblwiICYmIHBhcmVudC50eXBlICE9PSBcIlR1cGxlVHlwZUFubm90YXRpb25cIiAmJiBwYXJlbnQudHlwZSAhPT0gXCJUU1R1cGxlVHlwZVwiICYmICEocGFyZW50LnR5cGUgPT09IFwiRnVuY3Rpb25UeXBlUGFyYW1cIiAmJiAhcGFyZW50Lm5hbWUgJiYgcGF0aC5nZXRQYXJlbnROb2RlKDEpLnRoaXMgIT09IHBhcmVudCkgJiYgISgocGFyZW50LnR5cGUgPT09IFwiVHlwZUFsaWFzXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdG9yXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVFNUeXBlQWxpYXNEZWNsYXJhdGlvblwiKSAmJiBoYXNMZWFkaW5nT3duTGluZUNvbW1lbnQob3B0aW9ucy5vcmlnaW5hbFRleHQsIG5vZGUpKTtcbiAgICAgIGNvbnN0IHNob3VsZEh1ZyA9IHNob3VsZEh1Z1R5cGUobm9kZSk7XG4gICAgICBjb25zdCBwcmludGVkID0gcGF0aC5tYXAoKHR5cGVQYXRoKSA9PiB7XG4gICAgICAgIGxldCBwcmludGVkVHlwZSA9IHByaW50KCk7XG4gICAgICAgIGlmICghc2hvdWxkSHVnKSB7XG4gICAgICAgICAgcHJpbnRlZFR5cGUgPSBhbGlnbigyLCBwcmludGVkVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByaW50Q29tbWVudHModHlwZVBhdGgsIHByaW50ZWRUeXBlLCBvcHRpb25zKTtcbiAgICAgIH0sIFwidHlwZXNcIik7XG4gICAgICBpZiAoc2hvdWxkSHVnKSB7XG4gICAgICAgIHJldHVybiBqb2luKFwiIHwgXCIsIHByaW50ZWQpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2hvdWxkQWRkU3RhcnRMaW5lID0gc2hvdWxkSW5kZW50ICYmICFoYXNMZWFkaW5nT3duTGluZUNvbW1lbnQob3B0aW9ucy5vcmlnaW5hbFRleHQsIG5vZGUpO1xuICAgICAgY29uc3QgY29kZSA9IFtpZkJyZWFrKFtzaG91bGRBZGRTdGFydExpbmUgPyBsaW5lIDogXCJcIiwgXCJ8IFwiXSksIGpvaW4oW2xpbmUsIFwifCBcIl0sIHByaW50ZWQpXTtcbiAgICAgIGlmIChwYXRoTmVlZHNQYXJlbnMocGF0aCwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwKFtpbmRlbnQoY29kZSksIHNvZnRsaW5lXSk7XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50LnR5cGUgPT09IFwiVHVwbGVUeXBlQW5ub3RhdGlvblwiICYmIHBhcmVudC50eXBlcy5sZW5ndGggPiAxIHx8IHBhcmVudC50eXBlID09PSBcIlRTVHVwbGVUeXBlXCIgJiYgcGFyZW50LmVsZW1lbnRUeXBlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiBncm91cChbaW5kZW50KFtpZkJyZWFrKFtcIihcIiwgc29mdGxpbmVdKSwgY29kZV0pLCBzb2Z0bGluZSwgaWZCcmVhayhcIilcIildKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91cChzaG91bGRJbmRlbnQgPyBpbmRlbnQoY29kZSkgOiBjb2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRGdW5jdGlvblR5cGUocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKDApO1xuICAgICAgY29uc3QgcGFyZW50UGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKDEpO1xuICAgICAgY29uc3QgcGFyZW50UGFyZW50UGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKDIpO1xuICAgICAgbGV0IGlzQXJyb3dGdW5jdGlvblR5cGVBbm5vdGF0aW9uID0gbm9kZS50eXBlID09PSBcIlRTRnVuY3Rpb25UeXBlXCIgfHwgISgocGFyZW50LnR5cGUgPT09IFwiT2JqZWN0VHlwZVByb3BlcnR5XCIgfHwgcGFyZW50LnR5cGUgPT09IFwiT2JqZWN0VHlwZUludGVybmFsU2xvdFwiKSAmJiAhcGFyZW50LnZhcmlhbmNlICYmICFwYXJlbnQub3B0aW9uYWwgJiYgbG9jU3RhcnQocGFyZW50KSA9PT0gbG9jU3RhcnQobm9kZSkgfHwgcGFyZW50LnR5cGUgPT09IFwiT2JqZWN0VHlwZUNhbGxQcm9wZXJ0eVwiIHx8IHBhcmVudFBhcmVudFBhcmVudCAmJiBwYXJlbnRQYXJlbnRQYXJlbnQudHlwZSA9PT0gXCJEZWNsYXJlRnVuY3Rpb25cIik7XG4gICAgICBsZXQgbmVlZHNDb2xvbiA9IGlzQXJyb3dGdW5jdGlvblR5cGVBbm5vdGF0aW9uICYmIChwYXJlbnQudHlwZSA9PT0gXCJUeXBlQW5ub3RhdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIlRTVHlwZUFubm90YXRpb25cIik7XG4gICAgICBjb25zdCBuZWVkc1BhcmVucyA9IG5lZWRzQ29sb24gJiYgaXNBcnJvd0Z1bmN0aW9uVHlwZUFubm90YXRpb24gJiYgKHBhcmVudC50eXBlID09PSBcIlR5cGVBbm5vdGF0aW9uXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiVFNUeXBlQW5ub3RhdGlvblwiKSAmJiBwYXJlbnRQYXJlbnQudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiO1xuICAgICAgaWYgKGlzT2JqZWN0VHlwZVByb3BlcnR5QUZ1bmN0aW9uKHBhcmVudCkpIHtcbiAgICAgICAgaXNBcnJvd0Z1bmN0aW9uVHlwZUFubm90YXRpb24gPSB0cnVlO1xuICAgICAgICBuZWVkc0NvbG9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkc1BhcmVucykge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiKFwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnNEb2MgPSBwcmludEZ1bmN0aW9uUGFyYW1ldGVycyhwYXRoLCBwcmludCwgb3B0aW9ucywgZmFsc2UsIHRydWUpO1xuICAgICAgY29uc3QgcmV0dXJuVHlwZURvYyA9IG5vZGUucmV0dXJuVHlwZSB8fCBub2RlLnByZWRpY2F0ZSB8fCBub2RlLnR5cGVBbm5vdGF0aW9uID8gW2lzQXJyb3dGdW5jdGlvblR5cGVBbm5vdGF0aW9uID8gXCIgPT4gXCIgOiBcIjogXCIsIHByaW50KFwicmV0dXJuVHlwZVwiKSwgcHJpbnQoXCJwcmVkaWNhdGVcIiksIHByaW50KFwidHlwZUFubm90YXRpb25cIildIDogXCJcIjtcbiAgICAgIGNvbnN0IHNob3VsZEdyb3VwUGFyYW1ldGVycyA9IHNob3VsZEdyb3VwRnVuY3Rpb25QYXJhbWV0ZXJzKG5vZGUsIHJldHVyblR5cGVEb2MpO1xuICAgICAgcGFydHMucHVzaChzaG91bGRHcm91cFBhcmFtZXRlcnMgPyBncm91cChwYXJhbWV0ZXJzRG9jKSA6IHBhcmFtZXRlcnNEb2MpO1xuICAgICAgaWYgKHJldHVyblR5cGVEb2MpIHtcbiAgICAgICAgcGFydHMucHVzaChyZXR1cm5UeXBlRG9jKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkc1BhcmVucykge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiKVwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91cChwYXJ0cyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50VHVwbGVUeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgdHlwZXNGaWVsZCA9IG5vZGUudHlwZSA9PT0gXCJUU1R1cGxlVHlwZVwiID8gXCJlbGVtZW50VHlwZXNcIiA6IFwidHlwZXNcIjtcbiAgICAgIGNvbnN0IHR5cGVzID0gbm9kZVt0eXBlc0ZpZWxkXTtcbiAgICAgIGNvbnN0IGlzTm9uRW1wdHlUdXBsZSA9IGlzTm9uRW1wdHlBcnJheSh0eXBlcyk7XG4gICAgICBjb25zdCBicmFja2V0c0RlbGltaXRlckxpbmUgPSBpc05vbkVtcHR5VHVwbGUgPyBzb2Z0bGluZSA6IFwiXCI7XG4gICAgICByZXR1cm4gZ3JvdXAoW1wiW1wiLCBpbmRlbnQoW2JyYWNrZXRzRGVsaW1pdGVyTGluZSwgcHJpbnRBcnJheUl0ZW1zKHBhdGgsIG9wdGlvbnMsIHR5cGVzRmllbGQsIHByaW50KV0pLCBpZkJyZWFrKGlzTm9uRW1wdHlUdXBsZSAmJiBzaG91bGRQcmludENvbW1hKG9wdGlvbnMsIFwiYWxsXCIpID8gXCIsXCIgOiBcIlwiKSwgcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUpLCBicmFja2V0c0RlbGltaXRlckxpbmUsIFwiXVwiXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SW5kZXhlZEFjY2Vzc1R5cGUocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBsZWZ0RGVsaW1pdGVyID0gbm9kZS50eXBlID09PSBcIk9wdGlvbmFsSW5kZXhlZEFjY2Vzc1R5cGVcIiAmJiBub2RlLm9wdGlvbmFsID8gXCI/LltcIiA6IFwiW1wiO1xuICAgICAgcmV0dXJuIFtwcmludChcIm9iamVjdFR5cGVcIiksIGxlZnREZWxpbWl0ZXIsIHByaW50KFwiaW5kZXhUeXBlXCIpLCBcIl1cIl07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SlNEb2NUeXBlKHBhdGgsIHByaW50LCB0b2tlbikge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIHJldHVybiBbbm9kZS5wb3N0Zml4ID8gXCJcIiA6IHRva2VuLCBwcmludChcInR5cGVBbm5vdGF0aW9uXCIpLCBub2RlLnBvc3RmaXggPyB0b2tlbiA6IFwiXCJdO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludE9wYXF1ZVR5cGUsXG4gICAgICBwcmludFR5cGVBbGlhcyxcbiAgICAgIHByaW50SW50ZXJzZWN0aW9uVHlwZSxcbiAgICAgIHByaW50VW5pb25UeXBlLFxuICAgICAgcHJpbnRGdW5jdGlvblR5cGUsXG4gICAgICBwcmludFR1cGxlVHlwZSxcbiAgICAgIHByaW50SW5kZXhlZEFjY2Vzc1R5cGUsXG4gICAgICBzaG91bGRIdWdUeXBlLFxuICAgICAgcHJpbnRKU0RvY1R5cGVcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3R5cGVfcGFyYW1ldGVycyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvdHlwZS1wYXJhbWV0ZXJzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgcHJpbnREYW5nbGluZ0NvbW1lbnRzXG4gICAgfSA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBpZkJyZWFrXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgaXNUZXN0Q2FsbCxcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBDb21tZW50Q2hlY2tGbGFncyxcbiAgICAgIGlzVFNYRmlsZSxcbiAgICAgIHNob3VsZFByaW50Q29tbWEsXG4gICAgICBnZXRGdW5jdGlvblBhcmFtZXRlcnMsXG4gICAgICBpc09iamVjdFR5cGVcbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICB2YXIge1xuICAgICAgY3JlYXRlR3JvdXBJZE1hcHBlclxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgc2hvdWxkSHVnVHlwZVxuICAgIH0gPSByZXF1aXJlX3R5cGVfYW5ub3RhdGlvbigpO1xuICAgIHZhciB7XG4gICAgICBpc0Fycm93RnVuY3Rpb25WYXJpYWJsZURlY2xhcmF0b3JcbiAgICB9ID0gcmVxdWlyZV9hc3NpZ25tZW50KCk7XG4gICAgdmFyIGdldFR5cGVQYXJhbWV0ZXJzR3JvdXBJZCA9IGNyZWF0ZUdyb3VwSWRNYXBwZXIoXCJ0eXBlUGFyYW1ldGVyc1wiKTtcbiAgICBmdW5jdGlvbiBwcmludFR5cGVQYXJhbWV0ZXJzKHBhdGgsIG9wdGlvbnMsIHByaW50LCBwYXJhbXNLZXkpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIW5vZGVbcGFyYW1zS2V5XSkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlW3BhcmFtc0tleV0pKSB7XG4gICAgICAgIHJldHVybiBwcmludChwYXJhbXNLZXkpO1xuICAgICAgfVxuICAgICAgY29uc3QgZ3JhbmRwYXJlbnQgPSBwYXRoLmdldE5vZGUoMik7XG4gICAgICBjb25zdCBpc1BhcmFtZXRlckluVGVzdENhbGwgPSBncmFuZHBhcmVudCAmJiBpc1Rlc3RDYWxsKGdyYW5kcGFyZW50KTtcbiAgICAgIGNvbnN0IGlzQXJyb3dGdW5jdGlvblZhcmlhYmxlID0gcGF0aC5tYXRjaCgobm9kZTIpID0+ICEobm9kZTJbcGFyYW1zS2V5XS5sZW5ndGggPT09IDEgJiYgaXNPYmplY3RUeXBlKG5vZGUyW3BhcmFtc0tleV1bMF0pKSwgdm9pZCAwLCAobm9kZTIsIG5hbWUpID0+IG5hbWUgPT09IFwidHlwZUFubm90YXRpb25cIiwgKG5vZGUyKSA9PiBub2RlMi50eXBlID09PSBcIklkZW50aWZpZXJcIiwgaXNBcnJvd0Z1bmN0aW9uVmFyaWFibGVEZWNsYXJhdG9yKTtcbiAgICAgIGNvbnN0IHNob3VsZElubGluZSA9ICFpc0Fycm93RnVuY3Rpb25WYXJpYWJsZSAmJiAoaXNQYXJhbWV0ZXJJblRlc3RDYWxsIHx8IG5vZGVbcGFyYW1zS2V5XS5sZW5ndGggPT09IDAgfHwgbm9kZVtwYXJhbXNLZXldLmxlbmd0aCA9PT0gMSAmJiAobm9kZVtwYXJhbXNLZXldWzBdLnR5cGUgPT09IFwiTnVsbGFibGVUeXBlQW5ub3RhdGlvblwiIHx8IHNob3VsZEh1Z1R5cGUobm9kZVtwYXJhbXNLZXldWzBdKSkpO1xuICAgICAgaWYgKHNob3VsZElubGluZSkge1xuICAgICAgICByZXR1cm4gW1wiPFwiLCBqb2luKFwiLCBcIiwgcGF0aC5tYXAocHJpbnQsIHBhcmFtc0tleSkpLCBwcmludERhbmdsaW5nQ29tbWVudHNGb3JJbmxpbmUocGF0aCwgb3B0aW9ucyksIFwiPlwiXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRyYWlsaW5nQ29tbWEgPSBub2RlLnR5cGUgPT09IFwiVFNUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvblwiID8gXCJcIiA6IGdldEZ1bmN0aW9uUGFyYW1ldGVycyhub2RlKS5sZW5ndGggPT09IDEgJiYgaXNUU1hGaWxlKG9wdGlvbnMpICYmICFub2RlW3BhcmFtc0tleV1bMF0uY29uc3RyYWludCAmJiBwYXRoLmdldFBhcmVudE5vZGUoKS50eXBlID09PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgPyBcIixcIiA6IHNob3VsZFByaW50Q29tbWEob3B0aW9ucywgXCJhbGxcIikgPyBpZkJyZWFrKFwiLFwiKSA6IFwiXCI7XG4gICAgICByZXR1cm4gZ3JvdXAoW1wiPFwiLCBpbmRlbnQoW3NvZnRsaW5lLCBqb2luKFtcIixcIiwgbGluZV0sIHBhdGgubWFwKHByaW50LCBwYXJhbXNLZXkpKV0pLCB0cmFpbGluZ0NvbW1hLCBzb2Z0bGluZSwgXCI+XCJdLCB7XG4gICAgICAgIGlkOiBnZXRUeXBlUGFyYW1ldGVyc0dyb3VwSWQobm9kZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludERhbmdsaW5nQ29tbWVudHNGb3JJbmxpbmUocGF0aCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmICghaGFzQ29tbWVudChub2RlLCBDb21tZW50Q2hlY2tGbGFncy5EYW5nbGluZykpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBoYXNPbmx5QmxvY2tDb21tZW50cyA9ICFoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkxpbmUpO1xuICAgICAgY29uc3QgcHJpbnRlZCA9IHByaW50RGFuZ2xpbmdDb21tZW50cyhwYXRoLCBvcHRpb25zLCBoYXNPbmx5QmxvY2tDb21tZW50cyk7XG4gICAgICBpZiAoaGFzT25seUJsb2NrQ29tbWVudHMpIHtcbiAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gW3ByaW50ZWQsIGhhcmRsaW5lXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRUeXBlUGFyYW1ldGVyKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgaWYgKHBhcmVudC50eXBlID09PSBcIlRTTWFwcGVkVHlwZVwiKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJbXCIsIHByaW50KFwibmFtZVwiKSk7XG4gICAgICAgIGlmIChub2RlLmNvbnN0cmFpbnQpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwiIGluIFwiLCBwcmludChcImNvbnN0cmFpbnRcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJlbnQubmFtZVR5cGUpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwiIGFzIFwiLCBwYXRoLmNhbGxQYXJlbnQoKCkgPT4gcHJpbnQoXCJuYW1lVHlwZVwiKSkpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnRzLnB1c2goXCJdXCIpO1xuICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS52YXJpYW5jZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwidmFyaWFuY2VcIikpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuaW4pIHtcbiAgICAgICAgcGFydHMucHVzaChcImluIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLm91dCkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwib3V0IFwiKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJuYW1lXCIpKTtcbiAgICAgIGlmIChub2RlLmJvdW5kKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCI6IFwiLCBwcmludChcImJvdW5kXCIpKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmNvbnN0cmFpbnQpIHtcbiAgICAgICAgcGFydHMucHVzaChcIiBleHRlbmRzIFwiLCBwcmludChcImNvbnN0cmFpbnRcIikpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuZGVmYXVsdCkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiID0gXCIsIHByaW50KFwiZGVmYXVsdFwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50VHlwZVBhcmFtZXRlcixcbiAgICAgIHByaW50VHlwZVBhcmFtZXRlcnMsXG4gICAgICBnZXRUeXBlUGFyYW1ldGVyc0dyb3VwSWRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3Byb3BlcnR5ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9wcm9wZXJ0eS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9jb21tZW50cygpO1xuICAgIHZhciB7XG4gICAgICBwcmludFN0cmluZyxcbiAgICAgIHByaW50TnVtYmVyXG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBpc051bWVyaWNMaXRlcmFsLFxuICAgICAgaXNTaW1wbGVOdW1iZXIsXG4gICAgICBpc1N0cmluZ0xpdGVyYWwsXG4gICAgICBpc1N0cmluZ1Byb3BTYWZlVG9VbnF1b3RlLFxuICAgICAgcmF3VGV4dFxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBwcmludEFzc2lnbm1lbnRcbiAgICB9ID0gcmVxdWlyZV9hc3NpZ25tZW50KCk7XG4gICAgdmFyIG5lZWRzUXVvdGVQcm9wcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpO1xuICAgIGZ1bmN0aW9uIHByaW50UHJvcGVydHlLZXkocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldE5vZGUoKTtcbiAgICAgIGlmIChub2RlLmNvbXB1dGVkKSB7XG4gICAgICAgIHJldHVybiBbXCJbXCIsIHByaW50KFwia2V5XCIpLCBcIl1cIl07XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAga2V5XG4gICAgICB9ID0gbm9kZTtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiQ2xhc3NQcml2YXRlUHJvcGVydHlcIiAmJiBrZXkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIpIHtcbiAgICAgICAgcmV0dXJuIFtcIiNcIiwgcHJpbnQoXCJrZXlcIildO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucXVvdGVQcm9wcyA9PT0gXCJjb25zaXN0ZW50XCIgJiYgIW5lZWRzUXVvdGVQcm9wcy5oYXMocGFyZW50KSkge1xuICAgICAgICBjb25zdCBvYmplY3RIYXNTdHJpbmdQcm9wID0gKHBhcmVudC5wcm9wZXJ0aWVzIHx8IHBhcmVudC5ib2R5IHx8IHBhcmVudC5tZW1iZXJzKS5zb21lKChwcm9wKSA9PiAhcHJvcC5jb21wdXRlZCAmJiBwcm9wLmtleSAmJiBpc1N0cmluZ0xpdGVyYWwocHJvcC5rZXkpICYmICFpc1N0cmluZ1Byb3BTYWZlVG9VbnF1b3RlKHByb3AsIG9wdGlvbnMpKTtcbiAgICAgICAgbmVlZHNRdW90ZVByb3BzLnNldChwYXJlbnQsIG9iamVjdEhhc1N0cmluZ1Byb3ApO1xuICAgICAgfVxuICAgICAgaWYgKChrZXkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgfHwgaXNOdW1lcmljTGl0ZXJhbChrZXkpICYmIGlzU2ltcGxlTnVtYmVyKHByaW50TnVtYmVyKHJhd1RleHQoa2V5KSkpICYmIFN0cmluZyhrZXkudmFsdWUpID09PSBwcmludE51bWJlcihyYXdUZXh0KGtleSkpICYmICEob3B0aW9ucy5wYXJzZXIgPT09IFwidHlwZXNjcmlwdFwiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcImJhYmVsLXRzXCIpKSAmJiAob3B0aW9ucy5wYXJzZXIgPT09IFwianNvblwiIHx8IG9wdGlvbnMucXVvdGVQcm9wcyA9PT0gXCJjb25zaXN0ZW50XCIgJiYgbmVlZHNRdW90ZVByb3BzLmdldChwYXJlbnQpKSkge1xuICAgICAgICBjb25zdCBwcm9wID0gcHJpbnRTdHJpbmcoSlNPTi5zdHJpbmdpZnkoa2V5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiID8ga2V5Lm5hbWUgOiBrZXkudmFsdWUudG9TdHJpbmcoKSksIG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gcGF0aC5jYWxsKChrZXlQYXRoKSA9PiBwcmludENvbW1lbnRzKGtleVBhdGgsIHByb3AsIG9wdGlvbnMpLCBcImtleVwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N0cmluZ1Byb3BTYWZlVG9VbnF1b3RlKG5vZGUsIG9wdGlvbnMpICYmIChvcHRpb25zLnF1b3RlUHJvcHMgPT09IFwiYXMtbmVlZGVkXCIgfHwgb3B0aW9ucy5xdW90ZVByb3BzID09PSBcImNvbnNpc3RlbnRcIiAmJiAhbmVlZHNRdW90ZVByb3BzLmdldChwYXJlbnQpKSkge1xuICAgICAgICByZXR1cm4gcGF0aC5jYWxsKChrZXlQYXRoKSA9PiBwcmludENvbW1lbnRzKGtleVBhdGgsIC9eXFxkLy50ZXN0KGtleS52YWx1ZSkgPyBwcmludE51bWJlcihrZXkudmFsdWUpIDoga2V5LnZhbHVlLCBvcHRpb25zKSwgXCJrZXlcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJpbnQoXCJrZXlcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50UHJvcGVydHkocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAobm9kZS5zaG9ydGhhbmQpIHtcbiAgICAgICAgcmV0dXJuIHByaW50KFwidmFsdWVcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJpbnRBc3NpZ25tZW50KHBhdGgsIG9wdGlvbnMsIHByaW50LCBwcmludFByb3BlcnR5S2V5KHBhdGgsIG9wdGlvbnMsIHByaW50KSwgXCI6XCIsIFwidmFsdWVcIik7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50UHJvcGVydHksXG4gICAgICBwcmludFByb3BlcnR5S2V5XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9mdW5jdGlvbiA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvZnVuY3Rpb24uanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuICAgIHZhciB7XG4gICAgICBwcmludERhbmdsaW5nQ29tbWVudHMsXG4gICAgICBwcmludENvbW1lbnRzU2VwYXJhdGVseVxuICAgIH0gPSByZXF1aXJlX2NvbW1lbnRzKCk7XG4gICAgdmFyIGdldExhc3QgPSByZXF1aXJlX2dldF9sYXN0KCk7XG4gICAgdmFyIHtcbiAgICAgIGdldE5leHROb25TcGFjZU5vbkNvbW1lbnRDaGFyYWN0ZXJJbmRleFxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgc29mdGxpbmUsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGlmQnJlYWssXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBqb2luLFxuICAgICAgICBpbmRlbnRJZkJyZWFrXG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgcmVtb3ZlTGluZXMsXG4gICAgICAgIHdpbGxCcmVha1xuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIEFyZ0V4cGFuc2lvbkJhaWxvdXRcbiAgICB9ID0gcmVxdWlyZV9lcnJvcnMoKTtcbiAgICB2YXIge1xuICAgICAgZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzLFxuICAgICAgaGFzTGVhZGluZ093bkxpbmVDb21tZW50LFxuICAgICAgaXNGbG93QW5ub3RhdGlvbkNvbW1lbnQsXG4gICAgICBpc0pzeE5vZGUsXG4gICAgICBpc1RlbXBsYXRlT25JdHNPd25MaW5lLFxuICAgICAgc2hvdWxkUHJpbnRDb21tYSxcbiAgICAgIHN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuLFxuICAgICAgaXNCaW5hcnlpc2gsXG4gICAgICBpc0xpbmVDb21tZW50LFxuICAgICAgaGFzQ29tbWVudCxcbiAgICAgIGdldENvbW1lbnRzLFxuICAgICAgQ29tbWVudENoZWNrRmxhZ3MsXG4gICAgICBpc0NhbGxMaWtlRXhwcmVzc2lvbixcbiAgICAgIGlzQ2FsbEV4cHJlc3Npb24sXG4gICAgICBnZXRDYWxsQXJndW1lbnRzLFxuICAgICAgaGFzTmFrZWRMZWZ0U2lkZSxcbiAgICAgIGdldExlZnRTaWRlXG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYygpO1xuICAgIHZhciB7XG4gICAgICBwcmludEZ1bmN0aW9uUGFyYW1ldGVycyxcbiAgICAgIHNob3VsZEdyb3VwRnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgfSA9IHJlcXVpcmVfZnVuY3Rpb25fcGFyYW1ldGVycygpO1xuICAgIHZhciB7XG4gICAgICBwcmludFByb3BlcnR5S2V5XG4gICAgfSA9IHJlcXVpcmVfcHJvcGVydHkoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRGdW5jdGlvblR5cGVQYXJhbWV0ZXJzXG4gICAgfSA9IHJlcXVpcmVfbWlzYygpO1xuICAgIGZ1bmN0aW9uIHByaW50RnVuY3Rpb24ocGF0aCwgcHJpbnQsIG9wdGlvbnMsIGFyZ3MpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBsZXQgZXhwYW5kQXJnID0gZmFsc2U7XG4gICAgICBpZiAoKG5vZGUudHlwZSA9PT0gXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiKSAmJiBhcmdzICYmIGFyZ3MuZXhwYW5kTGFzdEFyZykge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24ocGFyZW50KSAmJiBnZXRDYWxsQXJndW1lbnRzKHBhcmVudCkubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGV4cGFuZEFyZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIlRTRGVjbGFyZUZ1bmN0aW9uXCIgJiYgbm9kZS5kZWNsYXJlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJkZWNsYXJlIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmFzeW5jKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJhc3luYyBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5nZW5lcmF0b3IpIHtcbiAgICAgICAgcGFydHMucHVzaChcImZ1bmN0aW9uKiBcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiZnVuY3Rpb24gXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuaWQpIHtcbiAgICAgICAgcGFydHMucHVzaChwcmludChcImlkXCIpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnNEb2MgPSBwcmludEZ1bmN0aW9uUGFyYW1ldGVycyhwYXRoLCBwcmludCwgb3B0aW9ucywgZXhwYW5kQXJnKTtcbiAgICAgIGNvbnN0IHJldHVyblR5cGVEb2MgPSBwcmludFJldHVyblR5cGUocGF0aCwgcHJpbnQsIG9wdGlvbnMpO1xuICAgICAgY29uc3Qgc2hvdWxkR3JvdXBQYXJhbWV0ZXJzID0gc2hvdWxkR3JvdXBGdW5jdGlvblBhcmFtZXRlcnMobm9kZSwgcmV0dXJuVHlwZURvYyk7XG4gICAgICBwYXJ0cy5wdXNoKHByaW50RnVuY3Rpb25UeXBlUGFyYW1ldGVycyhwYXRoLCBvcHRpb25zLCBwcmludCksIGdyb3VwKFtzaG91bGRHcm91cFBhcmFtZXRlcnMgPyBncm91cChwYXJhbWV0ZXJzRG9jKSA6IHBhcmFtZXRlcnNEb2MsIHJldHVyblR5cGVEb2NdKSwgbm9kZS5ib2R5ID8gXCIgXCIgOiBcIlwiLCBwcmludChcImJvZHlcIikpO1xuICAgICAgaWYgKG9wdGlvbnMuc2VtaSAmJiAobm9kZS5kZWNsYXJlIHx8ICFub2RlLmJvZHkpKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCI7XCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludE1ldGhvZChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0Tm9kZSgpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBraW5kXG4gICAgICB9ID0gbm9kZTtcbiAgICAgIGNvbnN0IHZhbHVlID0gbm9kZS52YWx1ZSB8fCBub2RlO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGlmICgha2luZCB8fCBraW5kID09PSBcImluaXRcIiB8fCBraW5kID09PSBcIm1ldGhvZFwiIHx8IGtpbmQgPT09IFwiY29uc3RydWN0b3JcIikge1xuICAgICAgICBpZiAodmFsdWUuYXN5bmMpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwiYXN5bmMgXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQub2soa2luZCA9PT0gXCJnZXRcIiB8fCBraW5kID09PSBcInNldFwiKTtcbiAgICAgICAgcGFydHMucHVzaChraW5kLCBcIiBcIik7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUuZ2VuZXJhdG9yKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCIqXCIpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChwcmludFByb3BlcnR5S2V5KHBhdGgsIG9wdGlvbnMsIHByaW50KSwgbm9kZS5vcHRpb25hbCB8fCBub2RlLmtleS5vcHRpb25hbCA/IFwiP1wiIDogXCJcIik7XG4gICAgICBpZiAobm9kZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcGFydHMucHVzaChwcmludE1ldGhvZEludGVybmFsKHBhdGgsIG9wdGlvbnMsIHByaW50KSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09IFwiRnVuY3Rpb25FeHByZXNzaW9uXCIpIHtcbiAgICAgICAgcGFydHMucHVzaChwYXRoLmNhbGwoKHBhdGgyKSA9PiBwcmludE1ldGhvZEludGVybmFsKHBhdGgyLCBvcHRpb25zLCBwcmludCksIFwidmFsdWVcIikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChwcmludChcInZhbHVlXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRNZXRob2RJbnRlcm5hbChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0Tm9kZSgpO1xuICAgICAgY29uc3QgcGFyYW1ldGVyc0RvYyA9IHByaW50RnVuY3Rpb25QYXJhbWV0ZXJzKHBhdGgsIHByaW50LCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IHJldHVyblR5cGVEb2MgPSBwcmludFJldHVyblR5cGUocGF0aCwgcHJpbnQsIG9wdGlvbnMpO1xuICAgICAgY29uc3Qgc2hvdWxkR3JvdXBQYXJhbWV0ZXJzID0gc2hvdWxkR3JvdXBGdW5jdGlvblBhcmFtZXRlcnMobm9kZSwgcmV0dXJuVHlwZURvYyk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtwcmludEZ1bmN0aW9uVHlwZVBhcmFtZXRlcnMocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBncm91cChbc2hvdWxkR3JvdXBQYXJhbWV0ZXJzID8gZ3JvdXAocGFyYW1ldGVyc0RvYykgOiBwYXJhbWV0ZXJzRG9jLCByZXR1cm5UeXBlRG9jXSldO1xuICAgICAgaWYgKG5vZGUuYm9keSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBwcmludChcImJvZHlcIikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChvcHRpb25zLnNlbWkgPyBcIjtcIiA6IFwiXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEFycm93RnVuY3Rpb25TaWduYXR1cmUocGF0aCwgb3B0aW9ucywgcHJpbnQsIGFyZ3MpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgaWYgKG5vZGUuYXN5bmMpIHtcbiAgICAgICAgcGFydHMucHVzaChcImFzeW5jIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaG91bGRQcmludFBhcmFtc1dpdGhvdXRQYXJlbnMocGF0aCwgb3B0aW9ucykpIHtcbiAgICAgICAgcGFydHMucHVzaChwcmludChbXCJwYXJhbXNcIiwgMF0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGV4cGFuZEFyZyA9IGFyZ3MgJiYgKGFyZ3MuZXhwYW5kTGFzdEFyZyB8fCBhcmdzLmV4cGFuZEZpcnN0QXJnKTtcbiAgICAgICAgbGV0IHJldHVyblR5cGVEb2MgPSBwcmludFJldHVyblR5cGUocGF0aCwgcHJpbnQsIG9wdGlvbnMpO1xuICAgICAgICBpZiAoZXhwYW5kQXJnKSB7XG4gICAgICAgICAgaWYgKHdpbGxCcmVhayhyZXR1cm5UeXBlRG9jKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ0V4cGFuc2lvbkJhaWxvdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuVHlwZURvYyA9IGdyb3VwKHJlbW92ZUxpbmVzKHJldHVyblR5cGVEb2MpKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGdyb3VwKFtwcmludEZ1bmN0aW9uUGFyYW1ldGVycyhwYXRoLCBwcmludCwgb3B0aW9ucywgZXhwYW5kQXJnLCB0cnVlKSwgcmV0dXJuVHlwZURvY10pKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhbmdsaW5nID0gcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUsIChjb21tZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRDaGFyYWN0ZXIgPSBnZXROZXh0Tm9uU3BhY2VOb25Db21tZW50Q2hhcmFjdGVySW5kZXgob3B0aW9ucy5vcmlnaW5hbFRleHQsIGNvbW1lbnQsIGxvY0VuZCk7XG4gICAgICAgIHJldHVybiBuZXh0Q2hhcmFjdGVyICE9PSBmYWxzZSAmJiBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShuZXh0Q2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyICsgMikgPT09IFwiPT5cIjtcbiAgICAgIH0pO1xuICAgICAgaWYgKGRhbmdsaW5nKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCIgXCIsIGRhbmdsaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRBcnJvd0NoYWluKHBhdGgsIGFyZ3MsIHNpZ25hdHVyZXMsIHNob3VsZEJyZWFrLCBib2R5RG9jLCB0YWlsTm9kZSkge1xuICAgICAgY29uc3QgbmFtZSA9IHBhdGguZ2V0TmFtZSgpO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBjb25zdCBpc0NhbGxlZSA9IGlzQ2FsbExpa2VFeHByZXNzaW9uKHBhcmVudCkgJiYgbmFtZSA9PT0gXCJjYWxsZWVcIjtcbiAgICAgIGNvbnN0IGlzQXNzaWdubWVudFJocyA9IEJvb2xlYW4oYXJncyAmJiBhcmdzLmFzc2lnbm1lbnRMYXlvdXQpO1xuICAgICAgY29uc3Qgc2hvdWxkUHV0Qm9keU9uU2VwYXJhdGVMaW5lID0gdGFpbE5vZGUuYm9keS50eXBlICE9PSBcIkJsb2NrU3RhdGVtZW50XCIgJiYgdGFpbE5vZGUuYm9keS50eXBlICE9PSBcIk9iamVjdEV4cHJlc3Npb25cIiAmJiB0YWlsTm9kZS5ib2R5LnR5cGUgIT09IFwiU2VxdWVuY2VFeHByZXNzaW9uXCI7XG4gICAgICBjb25zdCBzaG91bGRCcmVha0JlZm9yZUNoYWluID0gaXNDYWxsZWUgJiYgc2hvdWxkUHV0Qm9keU9uU2VwYXJhdGVMaW5lIHx8IGFyZ3MgJiYgYXJncy5hc3NpZ25tZW50TGF5b3V0ID09PSBcImNoYWluLXRhaWwtYXJyb3ctY2hhaW5cIjtcbiAgICAgIGNvbnN0IGdyb3VwSWQgPSBTeW1ib2woXCJhcnJvdy1jaGFpblwiKTtcbiAgICAgIGlmICh0YWlsTm9kZS5ib2R5LnR5cGUgPT09IFwiU2VxdWVuY2VFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgYm9keURvYyA9IGdyb3VwKFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgYm9keURvY10pLCBzb2Z0bGluZSwgXCIpXCJdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91cChbZ3JvdXAoaW5kZW50KFtpc0NhbGxlZSB8fCBpc0Fzc2lnbm1lbnRSaHMgPyBzb2Z0bGluZSA6IFwiXCIsIGdyb3VwKGpvaW4oW1wiID0+XCIsIGxpbmVdLCBzaWduYXR1cmVzKSwge1xuICAgICAgICBzaG91bGRCcmVha1xuICAgICAgfSldKSwge1xuICAgICAgICBpZDogZ3JvdXBJZCxcbiAgICAgICAgc2hvdWxkQnJlYWs6IHNob3VsZEJyZWFrQmVmb3JlQ2hhaW5cbiAgICAgIH0pLCBcIiA9PlwiLCBpbmRlbnRJZkJyZWFrKHNob3VsZFB1dEJvZHlPblNlcGFyYXRlTGluZSA/IGluZGVudChbbGluZSwgYm9keURvY10pIDogW1wiIFwiLCBib2R5RG9jXSwge1xuICAgICAgICBncm91cElkXG4gICAgICB9KSwgaXNDYWxsZWUgPyBpZkJyZWFrKHNvZnRsaW5lLCBcIlwiLCB7XG4gICAgICAgIGdyb3VwSWRcbiAgICAgIH0pIDogXCJcIl0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEFycm93RnVuY3Rpb24ocGF0aCwgb3B0aW9ucywgcHJpbnQsIGFyZ3MpIHtcbiAgICAgIGxldCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IFtdO1xuICAgICAgY29uc3QgYm9keSA9IFtdO1xuICAgICAgbGV0IGNoYWluU2hvdWxkQnJlYWsgPSBmYWxzZTtcbiAgICAgIChmdW5jdGlvbiByZWMoKSB7XG4gICAgICAgIGNvbnN0IGRvYzIgPSBwcmludEFycm93RnVuY3Rpb25TaWduYXR1cmUocGF0aCwgb3B0aW9ucywgcHJpbnQsIGFyZ3MpO1xuICAgICAgICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBzaWduYXR1cmVzLnB1c2goZG9jMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgbGVhZGluZyxcbiAgICAgICAgICAgIHRyYWlsaW5nXG4gICAgICAgICAgfSA9IHByaW50Q29tbWVudHNTZXBhcmF0ZWx5KHBhdGgsIG9wdGlvbnMpO1xuICAgICAgICAgIHNpZ25hdHVyZXMucHVzaChbbGVhZGluZywgZG9jMl0pO1xuICAgICAgICAgIGJvZHkudW5zaGlmdCh0cmFpbGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgY2hhaW5TaG91bGRCcmVhayA9IGNoYWluU2hvdWxkQnJlYWsgfHwgbm9kZS5yZXR1cm5UeXBlICYmIGdldEZ1bmN0aW9uUGFyYW1ldGVycyhub2RlKS5sZW5ndGggPiAwIHx8IG5vZGUudHlwZVBhcmFtZXRlcnMgfHwgZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKG5vZGUpLnNvbWUoKHBhcmFtKSA9PiBwYXJhbS50eXBlICE9PSBcIklkZW50aWZpZXJcIik7XG4gICAgICAgIGlmIChub2RlLmJvZHkudHlwZSAhPT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiIHx8IGFyZ3MgJiYgYXJncy5leHBhbmRMYXN0QXJnKSB7XG4gICAgICAgICAgYm9keS51bnNoaWZ0KHByaW50KFwiYm9keVwiLCBhcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZSA9IG5vZGUuYm9keTtcbiAgICAgICAgICBwYXRoLmNhbGwocmVjLCBcImJvZHlcIik7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiBwcmludEFycm93Q2hhaW4ocGF0aCwgYXJncywgc2lnbmF0dXJlcywgY2hhaW5TaG91bGRCcmVhaywgYm9keSwgbm9kZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJ0cyA9IHNpZ25hdHVyZXM7XG4gICAgICBwYXJ0cy5wdXNoKFwiID0+XCIpO1xuICAgICAgaWYgKCFoYXNMZWFkaW5nT3duTGluZUNvbW1lbnQob3B0aW9ucy5vcmlnaW5hbFRleHQsIG5vZGUuYm9keSkgJiYgKG5vZGUuYm9keS50eXBlID09PSBcIkFycmF5RXhwcmVzc2lvblwiIHx8IG5vZGUuYm9keS50eXBlID09PSBcIk9iamVjdEV4cHJlc3Npb25cIiB8fCBub2RlLmJvZHkudHlwZSA9PT0gXCJCbG9ja1N0YXRlbWVudFwiIHx8IGlzSnN4Tm9kZShub2RlLmJvZHkpIHx8IGlzVGVtcGxhdGVPbkl0c093bkxpbmUobm9kZS5ib2R5LCBvcHRpb25zLm9yaWdpbmFsVGV4dCkgfHwgbm9kZS5ib2R5LnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiB8fCBub2RlLmJvZHkudHlwZSA9PT0gXCJEb0V4cHJlc3Npb25cIikpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwKFsuLi5wYXJ0cywgXCIgXCIsIGJvZHldKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmJvZHkudHlwZSA9PT0gXCJTZXF1ZW5jZUV4cHJlc3Npb25cIikge1xuICAgICAgICByZXR1cm4gZ3JvdXAoWy4uLnBhcnRzLCBncm91cChbXCIgKFwiLCBpbmRlbnQoW3NvZnRsaW5lLCBib2R5XSksIHNvZnRsaW5lLCBcIilcIl0pXSk7XG4gICAgICB9XG4gICAgICBjb25zdCBzaG91bGRBZGRTb2Z0TGluZSA9IChhcmdzICYmIGFyZ3MuZXhwYW5kTGFzdEFyZyB8fCBwYXRoLmdldFBhcmVudE5vZGUoKS50eXBlID09PSBcIkpTWEV4cHJlc3Npb25Db250YWluZXJcIikgJiYgIWhhc0NvbW1lbnQobm9kZSk7XG4gICAgICBjb25zdCBwcmludFRyYWlsaW5nQ29tbWEgPSBhcmdzICYmIGFyZ3MuZXhwYW5kTGFzdEFyZyAmJiBzaG91bGRQcmludENvbW1hKG9wdGlvbnMsIFwiYWxsXCIpO1xuICAgICAgY29uc3Qgc2hvdWxkQWRkUGFyZW5zID0gbm9kZS5ib2R5LnR5cGUgPT09IFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIgJiYgIXN0YXJ0c1dpdGhOb0xvb2thaGVhZFRva2VuKG5vZGUuYm9keSwgZmFsc2UpO1xuICAgICAgcmV0dXJuIGdyb3VwKFsuLi5wYXJ0cywgZ3JvdXAoW2luZGVudChbbGluZSwgc2hvdWxkQWRkUGFyZW5zID8gaWZCcmVhayhcIlwiLCBcIihcIikgOiBcIlwiLCBib2R5LCBzaG91bGRBZGRQYXJlbnMgPyBpZkJyZWFrKFwiXCIsIFwiKVwiKSA6IFwiXCJdKSwgc2hvdWxkQWRkU29mdExpbmUgPyBbaWZCcmVhayhwcmludFRyYWlsaW5nQ29tbWEgPyBcIixcIiA6IFwiXCIpLCBzb2Z0bGluZV0gOiBcIlwiXSldKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2FuUHJpbnRQYXJhbXNXaXRob3V0UGFyZW5zKG5vZGUpIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBnZXRGdW5jdGlvblBhcmFtZXRlcnMobm9kZSk7XG4gICAgICByZXR1cm4gcGFyYW1ldGVycy5sZW5ndGggPT09IDEgJiYgIW5vZGUudHlwZVBhcmFtZXRlcnMgJiYgIWhhc0NvbW1lbnQobm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuRGFuZ2xpbmcpICYmIHBhcmFtZXRlcnNbMF0udHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgIXBhcmFtZXRlcnNbMF0udHlwZUFubm90YXRpb24gJiYgIWhhc0NvbW1lbnQocGFyYW1ldGVyc1swXSkgJiYgIXBhcmFtZXRlcnNbMF0ub3B0aW9uYWwgJiYgIW5vZGUucHJlZGljYXRlICYmICFub2RlLnJldHVyblR5cGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZFByaW50UGFyYW1zV2l0aG91dFBhcmVucyhwYXRoLCBvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucy5hcnJvd1BhcmVucyA9PT0gXCJhbHdheXNcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5hcnJvd1BhcmVucyA9PT0gXCJhdm9pZFwiKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICAgIHJldHVybiBjYW5QcmludFBhcmFtc1dpdGhvdXRQYXJlbnMobm9kZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50UmV0dXJuVHlwZShwYXRoLCBwcmludCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHJldHVyblR5cGUgPSBwcmludChcInJldHVyblR5cGVcIik7XG4gICAgICBpZiAobm9kZS5yZXR1cm5UeXBlICYmIGlzRmxvd0Fubm90YXRpb25Db21tZW50KG9wdGlvbnMub3JpZ2luYWxUZXh0LCBub2RlLnJldHVyblR5cGUpKSB7XG4gICAgICAgIHJldHVybiBbXCIgLyo6IFwiLCByZXR1cm5UeXBlLCBcIiAqL1wiXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnRzID0gW3JldHVyblR5cGVdO1xuICAgICAgaWYgKG5vZGUucmV0dXJuVHlwZSAmJiBub2RlLnJldHVyblR5cGUudHlwZUFubm90YXRpb24pIHtcbiAgICAgICAgcGFydHMudW5zaGlmdChcIjogXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUucHJlZGljYXRlKSB7XG4gICAgICAgIHBhcnRzLnB1c2gobm9kZS5yZXR1cm5UeXBlID8gXCIgXCIgOiBcIjogXCIsIHByaW50KFwicHJlZGljYXRlXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRSZXR1cm5PclRocm93QXJndW1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBzZW1pID0gb3B0aW9ucy5zZW1pID8gXCI7XCIgOiBcIlwiO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGlmIChub2RlLmFyZ3VtZW50KSB7XG4gICAgICAgIGlmIChyZXR1cm5Bcmd1bWVudEhhc0xlYWRpbmdDb21tZW50KG9wdGlvbnMsIG5vZGUuYXJndW1lbnQpKSB7XG4gICAgICAgICAgcGFydHMucHVzaChbXCIgKFwiLCBpbmRlbnQoW2hhcmRsaW5lLCBwcmludChcImFyZ3VtZW50XCIpXSksIGhhcmRsaW5lLCBcIilcIl0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQmluYXJ5aXNoKG5vZGUuYXJndW1lbnQpIHx8IG5vZGUuYXJndW1lbnQudHlwZSA9PT0gXCJTZXF1ZW5jZUV4cHJlc3Npb25cIikge1xuICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAoW2lmQnJlYWsoXCIgKFwiLCBcIiBcIiksIGluZGVudChbc29mdGxpbmUsIHByaW50KFwiYXJndW1lbnRcIildKSwgc29mdGxpbmUsIGlmQnJlYWsoXCIpXCIpXSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRzLnB1c2goXCIgXCIsIHByaW50KFwiYXJndW1lbnRcIikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBjb21tZW50cyA9IGdldENvbW1lbnRzKG5vZGUpO1xuICAgICAgY29uc3QgbGFzdENvbW1lbnQgPSBnZXRMYXN0KGNvbW1lbnRzKTtcbiAgICAgIGNvbnN0IGlzTGFzdENvbW1lbnRMaW5lID0gbGFzdENvbW1lbnQgJiYgaXNMaW5lQ29tbWVudChsYXN0Q29tbWVudCk7XG4gICAgICBpZiAoaXNMYXN0Q29tbWVudExpbmUpIHtcbiAgICAgICAgcGFydHMucHVzaChzZW1pKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkRhbmdsaW5nKSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBwcmludERhbmdsaW5nQ29tbWVudHMocGF0aCwgb3B0aW9ucywgdHJ1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0xhc3RDb21tZW50TGluZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKHNlbWkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFJldHVyblN0YXRlbWVudChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgcmV0dXJuIFtcInJldHVyblwiLCBwcmludFJldHVybk9yVGhyb3dBcmd1bWVudChwYXRoLCBvcHRpb25zLCBwcmludCldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFRocm93U3RhdGVtZW50KHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICByZXR1cm4gW1widGhyb3dcIiwgcHJpbnRSZXR1cm5PclRocm93QXJndW1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmV0dXJuQXJndW1lbnRIYXNMZWFkaW5nQ29tbWVudChvcHRpb25zLCBhcmd1bWVudCkge1xuICAgICAgaWYgKGhhc0xlYWRpbmdPd25MaW5lQ29tbWVudChvcHRpb25zLm9yaWdpbmFsVGV4dCwgYXJndW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGhhc05ha2VkTGVmdFNpZGUoYXJndW1lbnQpKSB7XG4gICAgICAgIGxldCBsZWZ0TW9zdCA9IGFyZ3VtZW50O1xuICAgICAgICBsZXQgbmV3TGVmdE1vc3Q7XG4gICAgICAgIHdoaWxlIChuZXdMZWZ0TW9zdCA9IGdldExlZnRTaWRlKGxlZnRNb3N0KSkge1xuICAgICAgICAgIGxlZnRNb3N0ID0gbmV3TGVmdE1vc3Q7XG4gICAgICAgICAgaWYgKGhhc0xlYWRpbmdPd25MaW5lQ29tbWVudChvcHRpb25zLm9yaWdpbmFsVGV4dCwgbGVmdE1vc3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRGdW5jdGlvbixcbiAgICAgIHByaW50QXJyb3dGdW5jdGlvbixcbiAgICAgIHByaW50TWV0aG9kLFxuICAgICAgcHJpbnRSZXR1cm5TdGF0ZW1lbnQsXG4gICAgICBwcmludFRocm93U3RhdGVtZW50LFxuICAgICAgcHJpbnRNZXRob2RJbnRlcm5hbCxcbiAgICAgIHNob3VsZFByaW50UGFyYW1zV2l0aG91dFBhcmVuc1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZGVjb3JhdG9ycyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvZGVjb3JhdG9ycy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGlzTm9uRW1wdHlBcnJheSxcbiAgICAgIGhhc05ld2xpbmVcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGxpbmUsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBqb2luLFxuICAgICAgICBicmVha1BhcmVudCxcbiAgICAgICAgZ3JvdXBcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYygpO1xuICAgIHZhciB7XG4gICAgICBnZXRQYXJlbnRFeHBvcnREZWNsYXJhdGlvblxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIGZ1bmN0aW9uIHByaW50Q2xhc3NNZW1iZXJEZWNvcmF0b3JzKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgcmV0dXJuIGdyb3VwKFtqb2luKGxpbmUsIHBhdGgubWFwKHByaW50LCBcImRlY29yYXRvcnNcIikpLCBoYXNOZXdsaW5lQmV0d2Vlbk9yQWZ0ZXJEZWNvcmF0b3JzKG5vZGUsIG9wdGlvbnMpID8gaGFyZGxpbmUgOiBsaW5lXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50RGVjb3JhdG9yc0JlZm9yZUV4cG9ydChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgcmV0dXJuIFtqb2luKGhhcmRsaW5lLCBwYXRoLm1hcChwcmludCwgXCJkZWNsYXJhdGlvblwiLCBcImRlY29yYXRvcnNcIikpLCBoYXJkbGluZV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50RGVjb3JhdG9ycyhwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGVjb3JhdG9yc1xuICAgICAgfSA9IG5vZGU7XG4gICAgICBpZiAoIWlzTm9uRW1wdHlBcnJheShkZWNvcmF0b3JzKSB8fCBoYXNEZWNvcmF0b3JzQmVmb3JlRXhwb3J0KHBhdGguZ2V0UGFyZW50Tm9kZSgpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzaG91bGRCcmVhayA9IG5vZGUudHlwZSA9PT0gXCJDbGFzc0V4cHJlc3Npb25cIiB8fCBub2RlLnR5cGUgPT09IFwiQ2xhc3NEZWNsYXJhdGlvblwiIHx8IGhhc05ld2xpbmVCZXR3ZWVuT3JBZnRlckRlY29yYXRvcnMobm9kZSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gW2dldFBhcmVudEV4cG9ydERlY2xhcmF0aW9uKHBhdGgpID8gaGFyZGxpbmUgOiBzaG91bGRCcmVhayA/IGJyZWFrUGFyZW50IDogXCJcIiwgam9pbihsaW5lLCBwYXRoLm1hcChwcmludCwgXCJkZWNvcmF0b3JzXCIpKSwgbGluZV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc05ld2xpbmVCZXR3ZWVuT3JBZnRlckRlY29yYXRvcnMobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5vZGUuZGVjb3JhdG9ycy5zb21lKChkZWNvcmF0b3IpID0+IGhhc05ld2xpbmUob3B0aW9ucy5vcmlnaW5hbFRleHQsIGxvY0VuZChkZWNvcmF0b3IpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc0RlY29yYXRvcnNCZWZvcmVFeHBvcnQobm9kZSkge1xuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiAmJiBub2RlLnR5cGUgIT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiICYmIG5vZGUudHlwZSAhPT0gXCJEZWNsYXJlRXhwb3J0RGVjbGFyYXRpb25cIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBkZWNvcmF0b3JzID0gbm9kZS5kZWNsYXJhdGlvbiAmJiBub2RlLmRlY2xhcmF0aW9uLmRlY29yYXRvcnM7XG4gICAgICByZXR1cm4gaXNOb25FbXB0eUFycmF5KGRlY29yYXRvcnMpICYmIGxvY1N0YXJ0KG5vZGUsIHtcbiAgICAgICAgaWdub3JlRGVjb3JhdG9yczogdHJ1ZVxuICAgICAgfSkgPiBsb2NTdGFydChkZWNvcmF0b3JzWzBdKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnREZWNvcmF0b3JzLFxuICAgICAgcHJpbnRDbGFzc01lbWJlckRlY29yYXRvcnMsXG4gICAgICBwcmludERlY29yYXRvcnNCZWZvcmVFeHBvcnQsXG4gICAgICBoYXNEZWNvcmF0b3JzQmVmb3JlRXhwb3J0XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jbGFzcyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvY2xhc3MuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBpc05vbkVtcHR5QXJyYXksXG4gICAgICBjcmVhdGVHcm91cElkTWFwcGVyXG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludENvbW1lbnRzLFxuICAgICAgcHJpbnREYW5nbGluZ0NvbW1lbnRzXG4gICAgfSA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBpZkJyZWFrXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgaGFzQ29tbWVudCxcbiAgICAgIENvbW1lbnRDaGVja0ZsYWdzXG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGdldFR5cGVQYXJhbWV0ZXJzR3JvdXBJZFxuICAgIH0gPSByZXF1aXJlX3R5cGVfcGFyYW1ldGVycygpO1xuICAgIHZhciB7XG4gICAgICBwcmludE1ldGhvZFxuICAgIH0gPSByZXF1aXJlX2Z1bmN0aW9uKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T3B0aW9uYWxUb2tlbixcbiAgICAgIHByaW50VHlwZUFubm90YXRpb24sXG4gICAgICBwcmludERlZmluaXRlVG9rZW5cbiAgICB9ID0gcmVxdWlyZV9taXNjKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50UHJvcGVydHlLZXlcbiAgICB9ID0gcmVxdWlyZV9wcm9wZXJ0eSgpO1xuICAgIHZhciB7XG4gICAgICBwcmludEFzc2lnbm1lbnRcbiAgICB9ID0gcmVxdWlyZV9hc3NpZ25tZW50KCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q2xhc3NNZW1iZXJEZWNvcmF0b3JzXG4gICAgfSA9IHJlcXVpcmVfZGVjb3JhdG9ycygpO1xuICAgIGZ1bmN0aW9uIHByaW50Q2xhc3MocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgaWYgKG5vZGUuZGVjbGFyZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5hYnN0cmFjdCkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiYWJzdHJhY3QgXCIpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChcImNsYXNzXCIpO1xuICAgICAgY29uc3QgZ3JvdXBNb2RlID0gbm9kZS5pZCAmJiBoYXNDb21tZW50KG5vZGUuaWQsIENvbW1lbnRDaGVja0ZsYWdzLlRyYWlsaW5nKSB8fCBub2RlLnR5cGVQYXJhbWV0ZXJzICYmIGhhc0NvbW1lbnQobm9kZS50eXBlUGFyYW1ldGVycywgQ29tbWVudENoZWNrRmxhZ3MuVHJhaWxpbmcpIHx8IG5vZGUuc3VwZXJDbGFzcyAmJiBoYXNDb21tZW50KG5vZGUuc3VwZXJDbGFzcykgfHwgaXNOb25FbXB0eUFycmF5KG5vZGUuZXh0ZW5kcykgfHwgaXNOb25FbXB0eUFycmF5KG5vZGUubWl4aW5zKSB8fCBpc05vbkVtcHR5QXJyYXkobm9kZS5pbXBsZW1lbnRzKTtcbiAgICAgIGNvbnN0IHBhcnRzR3JvdXAgPSBbXTtcbiAgICAgIGNvbnN0IGV4dGVuZHNQYXJ0cyA9IFtdO1xuICAgICAgaWYgKG5vZGUuaWQpIHtcbiAgICAgICAgcGFydHNHcm91cC5wdXNoKFwiIFwiLCBwcmludChcImlkXCIpKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzR3JvdXAucHVzaChwcmludChcInR5cGVQYXJhbWV0ZXJzXCIpKTtcbiAgICAgIGlmIChub2RlLnN1cGVyQ2xhc3MpIHtcbiAgICAgICAgY29uc3QgcHJpbnRlZCA9IFtwcmludFN1cGVyQ2xhc3MocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBwcmludChcInN1cGVyVHlwZVBhcmFtZXRlcnNcIildO1xuICAgICAgICBjb25zdCBwcmludGVkV2l0aENvbW1lbnRzID0gcGF0aC5jYWxsKChzdXBlckNsYXNzKSA9PiBbXCJleHRlbmRzIFwiLCBwcmludENvbW1lbnRzKHN1cGVyQ2xhc3MsIHByaW50ZWQsIG9wdGlvbnMpXSwgXCJzdXBlckNsYXNzXCIpO1xuICAgICAgICBpZiAoZ3JvdXBNb2RlKSB7XG4gICAgICAgICAgZXh0ZW5kc1BhcnRzLnB1c2gobGluZSwgZ3JvdXAocHJpbnRlZFdpdGhDb21tZW50cykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV4dGVuZHNQYXJ0cy5wdXNoKFwiIFwiLCBwcmludGVkV2l0aENvbW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXh0ZW5kc1BhcnRzLnB1c2gocHJpbnRMaXN0KHBhdGgsIG9wdGlvbnMsIHByaW50LCBcImV4dGVuZHNcIikpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kc1BhcnRzLnB1c2gocHJpbnRMaXN0KHBhdGgsIG9wdGlvbnMsIHByaW50LCBcIm1peGluc1wiKSwgcHJpbnRMaXN0KHBhdGgsIG9wdGlvbnMsIHByaW50LCBcImltcGxlbWVudHNcIikpO1xuICAgICAgaWYgKGdyb3VwTW9kZSkge1xuICAgICAgICBsZXQgcHJpbnRlZFBhcnRzR3JvdXA7XG4gICAgICAgIGlmIChzaG91bGRJbmRlbnRPbmx5SGVyaXRhZ2VDbGF1c2VzKG5vZGUpKSB7XG4gICAgICAgICAgcHJpbnRlZFBhcnRzR3JvdXAgPSBbLi4ucGFydHNHcm91cCwgaW5kZW50KGV4dGVuZHNQYXJ0cyldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50ZWRQYXJ0c0dyb3VwID0gaW5kZW50KFsuLi5wYXJ0c0dyb3VwLCBleHRlbmRzUGFydHNdKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGdyb3VwKHByaW50ZWRQYXJ0c0dyb3VwLCB7XG4gICAgICAgICAgaWQ6IGdldEhlcml0YWdlR3JvdXBJZChub2RlKVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKC4uLnBhcnRzR3JvdXAsIC4uLmV4dGVuZHNQYXJ0cyk7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBwcmludChcImJvZHlcIikpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICB2YXIgZ2V0SGVyaXRhZ2VHcm91cElkID0gY3JlYXRlR3JvdXBJZE1hcHBlcihcImhlcml0YWdlR3JvdXBcIik7XG4gICAgZnVuY3Rpb24gcHJpbnRIYXJkbGluZUFmdGVySGVyaXRhZ2Uobm9kZSkge1xuICAgICAgcmV0dXJuIGlmQnJlYWsoaGFyZGxpbmUsIFwiXCIsIHtcbiAgICAgICAgZ3JvdXBJZDogZ2V0SGVyaXRhZ2VHcm91cElkKG5vZGUpXG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzTXVsdGlwbGVIZXJpdGFnZShub2RlKSB7XG4gICAgICByZXR1cm4gW1wic3VwZXJDbGFzc1wiLCBcImV4dGVuZHNcIiwgXCJtaXhpbnNcIiwgXCJpbXBsZW1lbnRzXCJdLmZpbHRlcigoa2V5KSA9PiBCb29sZWFuKG5vZGVba2V5XSkpLmxlbmd0aCA+IDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZEluZGVudE9ubHlIZXJpdGFnZUNsYXVzZXMobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZVBhcmFtZXRlcnMgJiYgIWhhc0NvbW1lbnQobm9kZS50eXBlUGFyYW1ldGVycywgQ29tbWVudENoZWNrRmxhZ3MuVHJhaWxpbmcgfCBDb21tZW50Q2hlY2tGbGFncy5MaW5lKSAmJiAhaGFzTXVsdGlwbGVIZXJpdGFnZShub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRMaXN0KHBhdGgsIG9wdGlvbnMsIHByaW50LCBsaXN0TmFtZSkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmICghaXNOb25FbXB0eUFycmF5KG5vZGVbbGlzdE5hbWVdKSkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByaW50ZWRMZWFkaW5nQ29tbWVudHMgPSBwcmludERhbmdsaW5nQ29tbWVudHMocGF0aCwgb3B0aW9ucywgdHJ1ZSwgKHtcbiAgICAgICAgbWFya2VyXG4gICAgICB9KSA9PiBtYXJrZXIgPT09IGxpc3ROYW1lKTtcbiAgICAgIHJldHVybiBbc2hvdWxkSW5kZW50T25seUhlcml0YWdlQ2xhdXNlcyhub2RlKSA/IGlmQnJlYWsoXCIgXCIsIGxpbmUsIHtcbiAgICAgICAgZ3JvdXBJZDogZ2V0VHlwZVBhcmFtZXRlcnNHcm91cElkKG5vZGUudHlwZVBhcmFtZXRlcnMpXG4gICAgICB9KSA6IGxpbmUsIHByaW50ZWRMZWFkaW5nQ29tbWVudHMsIHByaW50ZWRMZWFkaW5nQ29tbWVudHMgJiYgaGFyZGxpbmUsIGxpc3ROYW1lLCBncm91cChpbmRlbnQoW2xpbmUsIGpvaW4oW1wiLFwiLCBsaW5lXSwgcGF0aC5tYXAocHJpbnQsIGxpc3ROYW1lKSldKSldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFN1cGVyQ2xhc3MocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IHByaW50ZWQgPSBwcmludChcInN1cGVyQ2xhc3NcIik7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIGlmIChwYXJlbnQudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiBncm91cChpZkJyZWFrKFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgcHJpbnRlZF0pLCBzb2Z0bGluZSwgXCIpXCJdLCBwcmludGVkKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJpbnRlZDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRDbGFzc01ldGhvZChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBpZiAoaXNOb25FbXB0eUFycmF5KG5vZGUuZGVjb3JhdG9ycykpIHtcbiAgICAgICAgcGFydHMucHVzaChwcmludENsYXNzTWVtYmVyRGVjb3JhdG9ycyhwYXRoLCBvcHRpb25zLCBwcmludCkpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuYWNjZXNzaWJpbGl0eSkge1xuICAgICAgICBwYXJ0cy5wdXNoKG5vZGUuYWNjZXNzaWJpbGl0eSArIFwiIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnJlYWRvbmx5KSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJyZWFkb25seSBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5kZWNsYXJlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJkZWNsYXJlIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnN0YXRpYykge1xuICAgICAgICBwYXJ0cy5wdXNoKFwic3RhdGljIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb25cIiB8fCBub2RlLmFic3RyYWN0KSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5vdmVycmlkZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwib3ZlcnJpZGUgXCIpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChwcmludE1ldGhvZChwYXRoLCBvcHRpb25zLCBwcmludCkpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsYXNzUHJvcGVydHkocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgY29uc3Qgc2VtaSA9IG9wdGlvbnMuc2VtaSA/IFwiO1wiIDogXCJcIjtcbiAgICAgIGlmIChpc05vbkVtcHR5QXJyYXkobm9kZS5kZWNvcmF0b3JzKSkge1xuICAgICAgICBwYXJ0cy5wdXNoKHByaW50Q2xhc3NNZW1iZXJEZWNvcmF0b3JzKHBhdGgsIG9wdGlvbnMsIHByaW50KSk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5hY2Nlc3NpYmlsaXR5KSB7XG4gICAgICAgIHBhcnRzLnB1c2gobm9kZS5hY2Nlc3NpYmlsaXR5ICsgXCIgXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuZGVjbGFyZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5zdGF0aWMpIHtcbiAgICAgICAgcGFydHMucHVzaChcInN0YXRpYyBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIlRTQWJzdHJhY3RQcm9wZXJ0eURlZmluaXRpb25cIiB8fCBub2RlLmFic3RyYWN0KSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5vdmVycmlkZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwib3ZlcnJpZGUgXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUucmVhZG9ubHkpIHtcbiAgICAgICAgcGFydHMucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnZhcmlhbmNlKSB7XG4gICAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJ2YXJpYW5jZVwiKSk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIkNsYXNzQWNjZXNzb3JQcm9wZXJ0eVwiKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJhY2Nlc3NvciBcIik7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKHByaW50UHJvcGVydHlLZXkocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBwcmludE9wdGlvbmFsVG9rZW4ocGF0aCksIHByaW50RGVmaW5pdGVUb2tlbihwYXRoKSwgcHJpbnRUeXBlQW5ub3RhdGlvbihwYXRoLCBvcHRpb25zLCBwcmludCkpO1xuICAgICAgcmV0dXJuIFtwcmludEFzc2lnbm1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQsIHBhcnRzLCBcIiA9XCIsIFwidmFsdWVcIiksIHNlbWldO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludENsYXNzLFxuICAgICAgcHJpbnRDbGFzc01ldGhvZCxcbiAgICAgIHByaW50Q2xhc3NQcm9wZXJ0eSxcbiAgICAgIHByaW50SGFyZGxpbmVBZnRlckhlcml0YWdlXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pbnRlcmZhY2UgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L2ludGVyZmFjZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGlzTm9uRW1wdHlBcnJheVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgaWZCcmVha1xuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBpZGVudGl0eSxcbiAgICAgIENvbW1lbnRDaGVja0ZsYWdzXG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGdldFR5cGVQYXJhbWV0ZXJzR3JvdXBJZFxuICAgIH0gPSByZXF1aXJlX3R5cGVfcGFyYW1ldGVycygpO1xuICAgIHZhciB7XG4gICAgICBwcmludFR5cGVTY3JpcHRNb2RpZmllcnNcbiAgICB9ID0gcmVxdWlyZV9taXNjKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRJbnRlcmZhY2UocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgaWYgKG5vZGUuZGVjbGFyZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcIlRTSW50ZXJmYWNlRGVjbGFyYXRpb25cIikge1xuICAgICAgICBwYXJ0cy5wdXNoKG5vZGUuYWJzdHJhY3QgPyBcImFic3RyYWN0IFwiIDogXCJcIiwgcHJpbnRUeXBlU2NyaXB0TW9kaWZpZXJzKHBhdGgsIG9wdGlvbnMsIHByaW50KSk7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKFwiaW50ZXJmYWNlXCIpO1xuICAgICAgY29uc3QgcGFydHNHcm91cCA9IFtdO1xuICAgICAgY29uc3QgZXh0ZW5kc1BhcnRzID0gW107XG4gICAgICBpZiAobm9kZS50eXBlICE9PSBcIkludGVyZmFjZVR5cGVBbm5vdGF0aW9uXCIpIHtcbiAgICAgICAgcGFydHNHcm91cC5wdXNoKFwiIFwiLCBwcmludChcImlkXCIpLCBwcmludChcInR5cGVQYXJhbWV0ZXJzXCIpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNob3VsZEluZGVudE9ubHlIZXJpdGFnZUNsYXVzZXMgPSBub2RlLnR5cGVQYXJhbWV0ZXJzICYmICFoYXNDb21tZW50KG5vZGUudHlwZVBhcmFtZXRlcnMsIENvbW1lbnRDaGVja0ZsYWdzLlRyYWlsaW5nIHwgQ29tbWVudENoZWNrRmxhZ3MuTGluZSk7XG4gICAgICBpZiAoaXNOb25FbXB0eUFycmF5KG5vZGUuZXh0ZW5kcykpIHtcbiAgICAgICAgZXh0ZW5kc1BhcnRzLnB1c2goc2hvdWxkSW5kZW50T25seUhlcml0YWdlQ2xhdXNlcyA/IGlmQnJlYWsoXCIgXCIsIGxpbmUsIHtcbiAgICAgICAgICBncm91cElkOiBnZXRUeXBlUGFyYW1ldGVyc0dyb3VwSWQobm9kZS50eXBlUGFyYW1ldGVycylcbiAgICAgICAgfSkgOiBsaW5lLCBcImV4dGVuZHMgXCIsIChub2RlLmV4dGVuZHMubGVuZ3RoID09PSAxID8gaWRlbnRpdHkgOiBpbmRlbnQpKGpvaW4oW1wiLFwiLCBsaW5lXSwgcGF0aC5tYXAocHJpbnQsIFwiZXh0ZW5kc1wiKSkpKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmlkICYmIGhhc0NvbW1lbnQobm9kZS5pZCwgQ29tbWVudENoZWNrRmxhZ3MuVHJhaWxpbmcpIHx8IGlzTm9uRW1wdHlBcnJheShub2RlLmV4dGVuZHMpKSB7XG4gICAgICAgIGlmIChzaG91bGRJbmRlbnRPbmx5SGVyaXRhZ2VDbGF1c2VzKSB7XG4gICAgICAgICAgcGFydHMucHVzaChncm91cChbLi4ucGFydHNHcm91cCwgaW5kZW50KGV4dGVuZHNQYXJ0cyldKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFydHMucHVzaChncm91cChpbmRlbnQoWy4uLnBhcnRzR3JvdXAsIC4uLmV4dGVuZHNQYXJ0c10pKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRzLnB1c2goLi4ucGFydHNHcm91cCwgLi4uZXh0ZW5kc1BhcnRzKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2goXCIgXCIsIHByaW50KFwiYm9keVwiKSk7XG4gICAgICByZXR1cm4gZ3JvdXAocGFydHMpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludEludGVyZmFjZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbW9kdWxlID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9tb2R1bGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBpc05vbkVtcHR5QXJyYXlcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lLFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBoYXJkbGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIHByaW50RGFuZ2xpbmdDb21tZW50c1xuICAgIH0gPSByZXF1aXJlX2NvbW1lbnRzKCk7XG4gICAgdmFyIHtcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBDb21tZW50Q2hlY2tGbGFncyxcbiAgICAgIHNob3VsZFByaW50Q29tbWEsXG4gICAgICBuZWVkc0hhcmRsaW5lQWZ0ZXJEYW5nbGluZ0NvbW1lbnQsXG4gICAgICBpc1N0cmluZ0xpdGVyYWwsXG4gICAgICByYXdUZXh0XG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgaGFzU2FtZUxvY1xuICAgIH0gPSByZXF1aXJlX2xvYygpO1xuICAgIHZhciB7XG4gICAgICBoYXNEZWNvcmF0b3JzQmVmb3JlRXhwb3J0LFxuICAgICAgcHJpbnREZWNvcmF0b3JzQmVmb3JlRXhwb3J0XG4gICAgfSA9IHJlcXVpcmVfZGVjb3JhdG9ycygpO1xuICAgIGZ1bmN0aW9uIHByaW50SW1wb3J0RGVjbGFyYXRpb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBzZW1pID0gb3B0aW9ucy5zZW1pID8gXCI7XCIgOiBcIlwiO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaW1wb3J0S2luZFxuICAgICAgfSA9IG5vZGU7XG4gICAgICBwYXJ0cy5wdXNoKFwiaW1wb3J0XCIpO1xuICAgICAgaWYgKGltcG9ydEtpbmQgJiYgaW1wb3J0S2luZCAhPT0gXCJ2YWx1ZVwiKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCIgXCIsIGltcG9ydEtpbmQpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChwcmludE1vZHVsZVNwZWNpZmllcnMocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBwcmludE1vZHVsZVNvdXJjZShwYXRoLCBvcHRpb25zLCBwcmludCksIHByaW50SW1wb3J0QXNzZXJ0aW9ucyhwYXRoLCBvcHRpb25zLCBwcmludCksIHNlbWkpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEV4cG9ydERlY2xhcmF0aW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGlmIChoYXNEZWNvcmF0b3JzQmVmb3JlRXhwb3J0KG5vZGUpKSB7XG4gICAgICAgIHBhcnRzLnB1c2gocHJpbnREZWNvcmF0b3JzQmVmb3JlRXhwb3J0KHBhdGgsIG9wdGlvbnMsIHByaW50KSk7XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIGV4cG9ydEtpbmQsXG4gICAgICAgIGRlY2xhcmF0aW9uXG4gICAgICB9ID0gbm9kZTtcbiAgICAgIHBhcnRzLnB1c2goXCJleHBvcnRcIik7XG4gICAgICBjb25zdCBpc0RlZmF1bHRFeHBvcnQgPSBub2RlLmRlZmF1bHQgfHwgdHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIjtcbiAgICAgIGlmIChpc0RlZmF1bHRFeHBvcnQpIHtcbiAgICAgICAgcGFydHMucHVzaChcIiBkZWZhdWx0XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0NvbW1lbnQobm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuRGFuZ2xpbmcpKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCIgXCIsIHByaW50RGFuZ2xpbmdDb21tZW50cyhwYXRoLCBvcHRpb25zLCB0cnVlKSk7XG4gICAgICAgIGlmIChuZWVkc0hhcmRsaW5lQWZ0ZXJEYW5nbGluZ0NvbW1lbnQobm9kZSkpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRlY2xhcmF0aW9uKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCIgXCIsIHByaW50KFwiZGVjbGFyYXRpb25cIikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChleHBvcnRLaW5kID09PSBcInR5cGVcIiA/IFwiIHR5cGVcIiA6IFwiXCIsIHByaW50TW9kdWxlU3BlY2lmaWVycyhwYXRoLCBvcHRpb25zLCBwcmludCksIHByaW50TW9kdWxlU291cmNlKHBhdGgsIG9wdGlvbnMsIHByaW50KSwgcHJpbnRJbXBvcnRBc3NlcnRpb25zKHBhdGgsIG9wdGlvbnMsIHByaW50KSk7XG4gICAgICB9XG4gICAgICBpZiAoc2hvdWxkRXhwb3J0RGVjbGFyYXRpb25QcmludFNlbWkobm9kZSwgb3B0aW9ucykpIHtcbiAgICAgICAgcGFydHMucHVzaChcIjtcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50RXhwb3J0QWxsRGVjbGFyYXRpb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBzZW1pID0gb3B0aW9ucy5zZW1pID8gXCI7XCIgOiBcIlwiO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZXhwb3J0S2luZCxcbiAgICAgICAgZXhwb3J0ZWRcbiAgICAgIH0gPSBub2RlO1xuICAgICAgcGFydHMucHVzaChcImV4cG9ydFwiKTtcbiAgICAgIGlmIChleHBvcnRLaW5kID09PSBcInR5cGVcIikge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiIHR5cGVcIik7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKFwiICpcIik7XG4gICAgICBpZiAoZXhwb3J0ZWQpIHtcbiAgICAgICAgcGFydHMucHVzaChcIiBhcyBcIiwgcHJpbnQoXCJleHBvcnRlZFwiKSk7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKHByaW50TW9kdWxlU291cmNlKHBhdGgsIG9wdGlvbnMsIHByaW50KSwgcHJpbnRJbXBvcnRBc3NlcnRpb25zKHBhdGgsIG9wdGlvbnMsIHByaW50KSwgc2VtaSk7XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZEV4cG9ydERlY2xhcmF0aW9uUHJpbnRTZW1pKG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIGlmICghb3B0aW9ucy5zZW1pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVjbGFyYXRpb25cbiAgICAgIH0gPSBub2RlO1xuICAgICAgY29uc3QgaXNEZWZhdWx0RXhwb3J0ID0gbm9kZS5kZWZhdWx0IHx8IHR5cGUgPT09IFwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCI7XG4gICAgICBpZiAoIWRlY2xhcmF0aW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3Qge1xuICAgICAgICB0eXBlOiBkZWNsYXJhdGlvblR5cGVcbiAgICAgIH0gPSBkZWNsYXJhdGlvbjtcbiAgICAgIGlmIChpc0RlZmF1bHRFeHBvcnQgJiYgZGVjbGFyYXRpb25UeXBlICE9PSBcIkNsYXNzRGVjbGFyYXRpb25cIiAmJiBkZWNsYXJhdGlvblR5cGUgIT09IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiICYmIGRlY2xhcmF0aW9uVHlwZSAhPT0gXCJUU0ludGVyZmFjZURlY2xhcmF0aW9uXCIgJiYgZGVjbGFyYXRpb25UeXBlICE9PSBcIkRlY2xhcmVDbGFzc1wiICYmIGRlY2xhcmF0aW9uVHlwZSAhPT0gXCJEZWNsYXJlRnVuY3Rpb25cIiAmJiBkZWNsYXJhdGlvblR5cGUgIT09IFwiVFNEZWNsYXJlRnVuY3Rpb25cIiAmJiBkZWNsYXJhdGlvblR5cGUgIT09IFwiRW51bURlY2xhcmF0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50TW9kdWxlU291cmNlKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKCFub2RlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBpZiAoIXNob3VsZE5vdFByaW50U3BlY2lmaWVycyhub2RlLCBvcHRpb25zKSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiIGZyb21cIik7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBwcmludChcInNvdXJjZVwiKSk7XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50TW9kdWxlU3BlY2lmaWVycyhwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChzaG91bGROb3RQcmludFNwZWNpZmllcnMobm9kZSwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJ0cyA9IFtcIiBcIl07XG4gICAgICBpZiAoaXNOb25FbXB0eUFycmF5KG5vZGUuc3BlY2lmaWVycykpIHtcbiAgICAgICAgY29uc3Qgc3RhbmRhbG9uZVNwZWNpZmllcnMgPSBbXTtcbiAgICAgICAgY29uc3QgZ3JvdXBlZFNwZWNpZmllcnMgPSBbXTtcbiAgICAgICAgcGF0aC5lYWNoKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzcGVjaWZpZXJUeXBlID0gcGF0aC5nZXRWYWx1ZSgpLnR5cGU7XG4gICAgICAgICAgaWYgKHNwZWNpZmllclR5cGUgPT09IFwiRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyXCIgfHwgc3BlY2lmaWVyVHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0U3BlY2lmaWVyXCIgfHwgc3BlY2lmaWVyVHlwZSA9PT0gXCJJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXJcIiB8fCBzcGVjaWZpZXJUeXBlID09PSBcIkltcG9ydERlZmF1bHRTcGVjaWZpZXJcIikge1xuICAgICAgICAgICAgc3RhbmRhbG9uZVNwZWNpZmllcnMucHVzaChwcmludCgpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNpZmllclR5cGUgPT09IFwiRXhwb3J0U3BlY2lmaWVyXCIgfHwgc3BlY2lmaWVyVHlwZSA9PT0gXCJJbXBvcnRTcGVjaWZpZXJcIikge1xuICAgICAgICAgICAgZ3JvdXBlZFNwZWNpZmllcnMucHVzaChwcmludCgpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHNwZWNpZmllciB0eXBlICR7SlNPTi5zdHJpbmdpZnkoc3BlY2lmaWVyVHlwZSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBcInNwZWNpZmllcnNcIik7XG4gICAgICAgIHBhcnRzLnB1c2goam9pbihcIiwgXCIsIHN0YW5kYWxvbmVTcGVjaWZpZXJzKSk7XG4gICAgICAgIGlmIChncm91cGVkU3BlY2lmaWVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKHN0YW5kYWxvbmVTcGVjaWZpZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCIsIFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY2FuQnJlYWsgPSBncm91cGVkU3BlY2lmaWVycy5sZW5ndGggPiAxIHx8IHN0YW5kYWxvbmVTcGVjaWZpZXJzLmxlbmd0aCA+IDAgfHwgbm9kZS5zcGVjaWZpZXJzLnNvbWUoKG5vZGUyKSA9PiBoYXNDb21tZW50KG5vZGUyKSk7XG4gICAgICAgICAgaWYgKGNhbkJyZWFrKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGdyb3VwKFtcIntcIiwgaW5kZW50KFtvcHRpb25zLmJyYWNrZXRTcGFjaW5nID8gbGluZSA6IHNvZnRsaW5lLCBqb2luKFtcIixcIiwgbGluZV0sIGdyb3VwZWRTcGVjaWZpZXJzKV0pLCBpZkJyZWFrKHNob3VsZFByaW50Q29tbWEob3B0aW9ucykgPyBcIixcIiA6IFwiXCIpLCBvcHRpb25zLmJyYWNrZXRTcGFjaW5nID8gbGluZSA6IHNvZnRsaW5lLCBcIn1cIl0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChbXCJ7XCIsIG9wdGlvbnMuYnJhY2tldFNwYWNpbmcgPyBcIiBcIiA6IFwiXCIsIC4uLmdyb3VwZWRTcGVjaWZpZXJzLCBvcHRpb25zLmJyYWNrZXRTcGFjaW5nID8gXCIgXCIgOiBcIlwiLCBcIn1cIl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChcInt9XCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGROb3RQcmludFNwZWNpZmllcnMobm9kZSwgb3B0aW9ucykge1xuICAgICAgY29uc3Qge1xuICAgICAgICB0eXBlLFxuICAgICAgICBpbXBvcnRLaW5kLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHNwZWNpZmllcnNcbiAgICAgIH0gPSBub2RlO1xuICAgICAgaWYgKHR5cGUgIT09IFwiSW1wb3J0RGVjbGFyYXRpb25cIiB8fCBpc05vbkVtcHR5QXJyYXkoc3BlY2lmaWVycykgfHwgaW1wb3J0S2luZCA9PT0gXCJ0eXBlXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEve1xccyp9Ly50ZXN0KG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGxvY1N0YXJ0KG5vZGUpLCBsb2NTdGFydChzb3VyY2UpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SW1wb3J0QXNzZXJ0aW9ucyhwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0Tm9kZSgpO1xuICAgICAgaWYgKGlzTm9uRW1wdHlBcnJheShub2RlLmFzc2VydGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBbXCIgYXNzZXJ0IHtcIiwgb3B0aW9ucy5icmFja2V0U3BhY2luZyA/IFwiIFwiIDogXCJcIiwgam9pbihcIiwgXCIsIHBhdGgubWFwKHByaW50LCBcImFzc2VydGlvbnNcIikpLCBvcHRpb25zLmJyYWNrZXRTcGFjaW5nID8gXCIgXCIgOiBcIlwiLCBcIn1cIl07XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRNb2R1bGVTcGVjaWZpZXIocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldE5vZGUoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdHlwZVxuICAgICAgfSA9IG5vZGU7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgY29uc3Qga2luZCA9IHR5cGUgPT09IFwiSW1wb3J0U3BlY2lmaWVyXCIgPyBub2RlLmltcG9ydEtpbmQgOiBub2RlLmV4cG9ydEtpbmQ7XG4gICAgICBpZiAoa2luZCAmJiBraW5kICE9PSBcInZhbHVlXCIpIHtcbiAgICAgICAgcGFydHMucHVzaChraW5kLCBcIiBcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBpc0ltcG9ydCA9IHR5cGUuc3RhcnRzV2l0aChcIkltcG9ydFwiKTtcbiAgICAgIGNvbnN0IGxlZnRTaWRlUHJvcGVydHkgPSBpc0ltcG9ydCA/IFwiaW1wb3J0ZWRcIiA6IFwibG9jYWxcIjtcbiAgICAgIGNvbnN0IHJpZ2h0U2lkZVByb3BlcnR5ID0gaXNJbXBvcnQgPyBcImxvY2FsXCIgOiBcImV4cG9ydGVkXCI7XG4gICAgICBjb25zdCBsZWZ0U2lkZU5vZGUgPSBub2RlW2xlZnRTaWRlUHJvcGVydHldO1xuICAgICAgY29uc3QgcmlnaHRTaWRlTm9kZSA9IG5vZGVbcmlnaHRTaWRlUHJvcGVydHldO1xuICAgICAgbGV0IGxlZnQgPSBcIlwiO1xuICAgICAgbGV0IHJpZ2h0ID0gXCJcIjtcbiAgICAgIGlmICh0eXBlID09PSBcIkV4cG9ydE5hbWVzcGFjZVNwZWNpZmllclwiIHx8IHR5cGUgPT09IFwiSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyXCIpIHtcbiAgICAgICAgbGVmdCA9IFwiKlwiO1xuICAgICAgfSBlbHNlIGlmIChsZWZ0U2lkZU5vZGUpIHtcbiAgICAgICAgbGVmdCA9IHByaW50KGxlZnRTaWRlUHJvcGVydHkpO1xuICAgICAgfVxuICAgICAgaWYgKHJpZ2h0U2lkZU5vZGUgJiYgIWlzU2hvcnRoYW5kU3BlY2lmaWVyKG5vZGUpKSB7XG4gICAgICAgIHJpZ2h0ID0gcHJpbnQocmlnaHRTaWRlUHJvcGVydHkpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChsZWZ0LCBsZWZ0ICYmIHJpZ2h0ID8gXCIgYXMgXCIgOiBcIlwiLCByaWdodCk7XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU2hvcnRoYW5kU3BlY2lmaWVyKHNwZWNpZmllcikge1xuICAgICAgaWYgKHNwZWNpZmllci50eXBlICE9PSBcIkltcG9ydFNwZWNpZmllclwiICYmIHNwZWNpZmllci50eXBlICE9PSBcIkV4cG9ydFNwZWNpZmllclwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbG9jYWwsXG4gICAgICAgIFtzcGVjaWZpZXIudHlwZSA9PT0gXCJJbXBvcnRTcGVjaWZpZXJcIiA/IFwiaW1wb3J0ZWRcIiA6IFwiZXhwb3J0ZWRcIl06IGltcG9ydGVkT3JFeHBvcnRlZFxuICAgICAgfSA9IHNwZWNpZmllcjtcbiAgICAgIGlmIChsb2NhbC50eXBlICE9PSBpbXBvcnRlZE9yRXhwb3J0ZWQudHlwZSB8fCAhaGFzU2FtZUxvYyhsb2NhbCwgaW1wb3J0ZWRPckV4cG9ydGVkKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTdHJpbmdMaXRlcmFsKGxvY2FsKSkge1xuICAgICAgICByZXR1cm4gbG9jYWwudmFsdWUgPT09IGltcG9ydGVkT3JFeHBvcnRlZC52YWx1ZSAmJiByYXdUZXh0KGxvY2FsKSA9PT0gcmF3VGV4dChpbXBvcnRlZE9yRXhwb3J0ZWQpO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChsb2NhbC50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6XG4gICAgICAgICAgcmV0dXJuIGxvY2FsLm5hbWUgPT09IGltcG9ydGVkT3JFeHBvcnRlZC5uYW1lO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRJbXBvcnREZWNsYXJhdGlvbixcbiAgICAgIHByaW50RXhwb3J0RGVjbGFyYXRpb24sXG4gICAgICBwcmludEV4cG9ydEFsbERlY2xhcmF0aW9uLFxuICAgICAgcHJpbnRNb2R1bGVTcGVjaWZpZXJcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX29iamVjdCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvb2JqZWN0LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgcHJpbnREYW5nbGluZ0NvbW1lbnRzXG4gICAgfSA9IHJlcXVpcmVfY29tbWVudHMoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgc29mdGxpbmUsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGlmQnJlYWssXG4gICAgICAgIGhhcmRsaW5lXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgZ2V0TGFzdCxcbiAgICAgIGhhc05ld2xpbmVJblJhbmdlLFxuICAgICAgaGFzTmV3bGluZSxcbiAgICAgIGlzTm9uRW1wdHlBcnJheVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgc2hvdWxkUHJpbnRDb21tYSxcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBnZXRDb21tZW50cyxcbiAgICAgIENvbW1lbnRDaGVja0ZsYWdzLFxuICAgICAgaXNOZXh0TGluZUVtcHR5XG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T3B0aW9uYWxUb2tlbixcbiAgICAgIHByaW50VHlwZUFubm90YXRpb25cbiAgICB9ID0gcmVxdWlyZV9taXNjKCk7XG4gICAgdmFyIHtcbiAgICAgIHNob3VsZEh1Z0Z1bmN0aW9uUGFyYW1ldGVyc1xuICAgIH0gPSByZXF1aXJlX2Z1bmN0aW9uX3BhcmFtZXRlcnMoKTtcbiAgICB2YXIge1xuICAgICAgc2hvdWxkSHVnVHlwZVxuICAgIH0gPSByZXF1aXJlX3R5cGVfYW5ub3RhdGlvbigpO1xuICAgIHZhciB7XG4gICAgICBwcmludEhhcmRsaW5lQWZ0ZXJIZXJpdGFnZVxuICAgIH0gPSByZXF1aXJlX2NsYXNzKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRPYmplY3QocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IHNlbWkgPSBvcHRpb25zLnNlbWkgPyBcIjtcIiA6IFwiXCI7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgbGV0IHByb3BlcnRpZXNGaWVsZDtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiVFNUeXBlTGl0ZXJhbFwiKSB7XG4gICAgICAgIHByb3BlcnRpZXNGaWVsZCA9IFwibWVtYmVyc1wiO1xuICAgICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IFwiVFNJbnRlcmZhY2VCb2R5XCIpIHtcbiAgICAgICAgcHJvcGVydGllc0ZpZWxkID0gXCJib2R5XCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wZXJ0aWVzRmllbGQgPSBcInByb3BlcnRpZXNcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzVHlwZUFubm90YXRpb24gPSBub2RlLnR5cGUgPT09IFwiT2JqZWN0VHlwZUFubm90YXRpb25cIjtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IFtwcm9wZXJ0aWVzRmllbGRdO1xuICAgICAgaWYgKGlzVHlwZUFubm90YXRpb24pIHtcbiAgICAgICAgZmllbGRzLnB1c2goXCJpbmRleGVyc1wiLCBcImNhbGxQcm9wZXJ0aWVzXCIsIFwiaW50ZXJuYWxTbG90c1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpcnN0UHJvcGVydHkgPSBmaWVsZHMubWFwKChmaWVsZCkgPT4gbm9kZVtmaWVsZF1bMF0pLnNvcnQoKGEsIGIpID0+IGxvY1N0YXJ0KGEpIC0gbG9jU3RhcnQoYikpWzBdO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKDApO1xuICAgICAgY29uc3QgaXNGbG93SW50ZXJmYWNlTGlrZUJvZHkgPSBpc1R5cGVBbm5vdGF0aW9uICYmIHBhcmVudCAmJiAocGFyZW50LnR5cGUgPT09IFwiSW50ZXJmYWNlRGVjbGFyYXRpb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJEZWNsYXJlSW50ZXJmYWNlXCIgfHwgcGFyZW50LnR5cGUgPT09IFwiRGVjbGFyZUNsYXNzXCIpICYmIHBhdGguZ2V0TmFtZSgpID09PSBcImJvZHlcIjtcbiAgICAgIGNvbnN0IHNob3VsZEJyZWFrID0gbm9kZS50eXBlID09PSBcIlRTSW50ZXJmYWNlQm9keVwiIHx8IGlzRmxvd0ludGVyZmFjZUxpa2VCb2R5IHx8IG5vZGUudHlwZSA9PT0gXCJPYmplY3RQYXR0ZXJuXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiICYmIHBhcmVudC50eXBlICE9PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiICYmIHBhcmVudC50eXBlICE9PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiT2JqZWN0TWV0aG9kXCIgJiYgcGFyZW50LnR5cGUgIT09IFwiQ2xhc3NNZXRob2RcIiAmJiBwYXJlbnQudHlwZSAhPT0gXCJDbGFzc1ByaXZhdGVNZXRob2RcIiAmJiBwYXJlbnQudHlwZSAhPT0gXCJBc3NpZ25tZW50UGF0dGVyblwiICYmIHBhcmVudC50eXBlICE9PSBcIkNhdGNoQ2xhdXNlXCIgJiYgbm9kZS5wcm9wZXJ0aWVzLnNvbWUoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS52YWx1ZSAmJiAocHJvcGVydHkudmFsdWUudHlwZSA9PT0gXCJPYmplY3RQYXR0ZXJuXCIgfHwgcHJvcGVydHkudmFsdWUudHlwZSA9PT0gXCJBcnJheVBhdHRlcm5cIikpIHx8IG5vZGUudHlwZSAhPT0gXCJPYmplY3RQYXR0ZXJuXCIgJiYgZmlyc3RQcm9wZXJ0eSAmJiBoYXNOZXdsaW5lSW5SYW5nZShvcHRpb25zLm9yaWdpbmFsVGV4dCwgbG9jU3RhcnQobm9kZSksIGxvY1N0YXJ0KGZpcnN0UHJvcGVydHkpKTtcbiAgICAgIGNvbnN0IHNlcGFyYXRvciA9IGlzRmxvd0ludGVyZmFjZUxpa2VCb2R5ID8gXCI7XCIgOiBub2RlLnR5cGUgPT09IFwiVFNJbnRlcmZhY2VCb2R5XCIgfHwgbm9kZS50eXBlID09PSBcIlRTVHlwZUxpdGVyYWxcIiA/IGlmQnJlYWsoc2VtaSwgXCI7XCIpIDogXCIsXCI7XG4gICAgICBjb25zdCBsZWZ0QnJhY2UgPSBub2RlLnR5cGUgPT09IFwiUmVjb3JkRXhwcmVzc2lvblwiID8gXCIje1wiIDogbm9kZS5leGFjdCA/IFwie3xcIiA6IFwie1wiO1xuICAgICAgY29uc3QgcmlnaHRCcmFjZSA9IG5vZGUuZXhhY3QgPyBcInx9XCIgOiBcIn1cIjtcbiAgICAgIGNvbnN0IHByb3BzQW5kTG9jID0gW107XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICBwYXRoLmVhY2goKGNoaWxkUGF0aCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5vZGUyID0gY2hpbGRQYXRoLmdldFZhbHVlKCk7XG4gICAgICAgICAgcHJvcHNBbmRMb2MucHVzaCh7XG4gICAgICAgICAgICBub2RlOiBub2RlMixcbiAgICAgICAgICAgIHByaW50ZWQ6IHByaW50KCksXG4gICAgICAgICAgICBsb2M6IGxvY1N0YXJ0KG5vZGUyKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBmaWVsZCk7XG4gICAgICB9XG4gICAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcHJvcHNBbmRMb2Muc29ydCgoYSwgYikgPT4gYS5sb2MgLSBiLmxvYyk7XG4gICAgICB9XG4gICAgICBsZXQgc2VwYXJhdG9yUGFydHMgPSBbXTtcbiAgICAgIGNvbnN0IHByb3BzID0gcHJvcHNBbmRMb2MubWFwKChwcm9wKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5zZXBhcmF0b3JQYXJ0cywgZ3JvdXAocHJvcC5wcmludGVkKV07XG4gICAgICAgIHNlcGFyYXRvclBhcnRzID0gW3NlcGFyYXRvciwgbGluZV07XG4gICAgICAgIGlmICgocHJvcC5ub2RlLnR5cGUgPT09IFwiVFNQcm9wZXJ0eVNpZ25hdHVyZVwiIHx8IHByb3Aubm9kZS50eXBlID09PSBcIlRTTWV0aG9kU2lnbmF0dXJlXCIgfHwgcHJvcC5ub2RlLnR5cGUgPT09IFwiVFNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsYXJhdGlvblwiKSAmJiBoYXNDb21tZW50KHByb3Aubm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuUHJldHRpZXJJZ25vcmUpKSB7XG4gICAgICAgICAgc2VwYXJhdG9yUGFydHMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOZXh0TGluZUVtcHR5KHByb3Aubm9kZSwgb3B0aW9ucykpIHtcbiAgICAgICAgICBzZXBhcmF0b3JQYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICBpZiAobm9kZS5pbmV4YWN0KSB7XG4gICAgICAgIGxldCBwcmludGVkO1xuICAgICAgICBpZiAoaGFzQ29tbWVudChub2RlLCBDb21tZW50Q2hlY2tGbGFncy5EYW5nbGluZykpIHtcbiAgICAgICAgICBjb25zdCBoYXNMaW5lQ29tbWVudHMgPSBoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkxpbmUpO1xuICAgICAgICAgIGNvbnN0IHByaW50ZWREYW5nbGluZ0NvbW1lbnRzID0gcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUpO1xuICAgICAgICAgIHByaW50ZWQgPSBbcHJpbnRlZERhbmdsaW5nQ29tbWVudHMsIGhhc0xpbmVDb21tZW50cyB8fCBoYXNOZXdsaW5lKG9wdGlvbnMub3JpZ2luYWxUZXh0LCBsb2NFbmQoZ2V0TGFzdChnZXRDb21tZW50cyhub2RlKSkpKSA/IGhhcmRsaW5lIDogbGluZSwgXCIuLi5cIl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRlZCA9IFtcIi4uLlwiXTtcbiAgICAgICAgfVxuICAgICAgICBwcm9wcy5wdXNoKFsuLi5zZXBhcmF0b3JQYXJ0cywgLi4ucHJpbnRlZF0pO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFzdEVsZW0gPSBnZXRMYXN0KG5vZGVbcHJvcGVydGllc0ZpZWxkXSk7XG4gICAgICBjb25zdCBjYW5IYXZlVHJhaWxpbmdTZXBhcmF0b3IgPSAhKG5vZGUuaW5leGFjdCB8fCBsYXN0RWxlbSAmJiBsYXN0RWxlbS50eXBlID09PSBcIlJlc3RFbGVtZW50XCIgfHwgbGFzdEVsZW0gJiYgKGxhc3RFbGVtLnR5cGUgPT09IFwiVFNQcm9wZXJ0eVNpZ25hdHVyZVwiIHx8IGxhc3RFbGVtLnR5cGUgPT09IFwiVFNDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb25cIiB8fCBsYXN0RWxlbS50eXBlID09PSBcIlRTTWV0aG9kU2lnbmF0dXJlXCIgfHwgbGFzdEVsZW0udHlwZSA9PT0gXCJUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uXCIpICYmIGhhc0NvbW1lbnQobGFzdEVsZW0sIENvbW1lbnRDaGVja0ZsYWdzLlByZXR0aWVySWdub3JlKSk7XG4gICAgICBsZXQgY29udGVudDtcbiAgICAgIGlmIChwcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKCFoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkRhbmdsaW5nKSkge1xuICAgICAgICAgIHJldHVybiBbbGVmdEJyYWNlLCByaWdodEJyYWNlLCBwcmludFR5cGVBbm5vdGF0aW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KV07XG4gICAgICAgIH1cbiAgICAgICAgY29udGVudCA9IGdyb3VwKFtsZWZ0QnJhY2UsIHByaW50RGFuZ2xpbmdDb21tZW50cyhwYXRoLCBvcHRpb25zKSwgc29mdGxpbmUsIHJpZ2h0QnJhY2UsIHByaW50T3B0aW9uYWxUb2tlbihwYXRoKSwgcHJpbnRUeXBlQW5ub3RhdGlvbihwYXRoLCBvcHRpb25zLCBwcmludCldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRlbnQgPSBbaXNGbG93SW50ZXJmYWNlTGlrZUJvZHkgJiYgaXNOb25FbXB0eUFycmF5KG5vZGUucHJvcGVydGllcykgPyBwcmludEhhcmRsaW5lQWZ0ZXJIZXJpdGFnZShwYXJlbnQpIDogXCJcIiwgbGVmdEJyYWNlLCBpbmRlbnQoW29wdGlvbnMuYnJhY2tldFNwYWNpbmcgPyBsaW5lIDogc29mdGxpbmUsIC4uLnByb3BzXSksIGlmQnJlYWsoY2FuSGF2ZVRyYWlsaW5nU2VwYXJhdG9yICYmIChzZXBhcmF0b3IgIT09IFwiLFwiIHx8IHNob3VsZFByaW50Q29tbWEob3B0aW9ucykpID8gc2VwYXJhdG9yIDogXCJcIiksIG9wdGlvbnMuYnJhY2tldFNwYWNpbmcgPyBsaW5lIDogc29mdGxpbmUsIHJpZ2h0QnJhY2UsIHByaW50T3B0aW9uYWxUb2tlbihwYXRoKSwgcHJpbnRUeXBlQW5ub3RhdGlvbihwYXRoLCBvcHRpb25zLCBwcmludCldO1xuICAgICAgfVxuICAgICAgaWYgKHBhdGgubWF0Y2goKG5vZGUyKSA9PiBub2RlMi50eXBlID09PSBcIk9iamVjdFBhdHRlcm5cIiAmJiAhbm9kZTIuZGVjb3JhdG9ycywgKG5vZGUyLCBuYW1lLCBudW1iZXIpID0+IHNob3VsZEh1Z0Z1bmN0aW9uUGFyYW1ldGVycyhub2RlMikgJiYgKG5hbWUgPT09IFwicGFyYW1zXCIgfHwgbmFtZSA9PT0gXCJwYXJhbWV0ZXJzXCIgfHwgbmFtZSA9PT0gXCJ0aGlzXCIgfHwgbmFtZSA9PT0gXCJyZXN0XCIpICYmIG51bWJlciA9PT0gMCkgfHwgcGF0aC5tYXRjaChzaG91bGRIdWdUeXBlLCAobm9kZTIsIG5hbWUpID0+IG5hbWUgPT09IFwidHlwZUFubm90YXRpb25cIiwgKG5vZGUyLCBuYW1lKSA9PiBuYW1lID09PSBcInR5cGVBbm5vdGF0aW9uXCIsIChub2RlMiwgbmFtZSwgbnVtYmVyKSA9PiBzaG91bGRIdWdGdW5jdGlvblBhcmFtZXRlcnMobm9kZTIpICYmIChuYW1lID09PSBcInBhcmFtc1wiIHx8IG5hbWUgPT09IFwicGFyYW1ldGVyc1wiIHx8IG5hbWUgPT09IFwidGhpc1wiIHx8IG5hbWUgPT09IFwicmVzdFwiKSAmJiBudW1iZXIgPT09IDApIHx8ICFzaG91bGRCcmVhayAmJiBwYXRoLm1hdGNoKChub2RlMikgPT4gbm9kZTIudHlwZSA9PT0gXCJPYmplY3RQYXR0ZXJuXCIsIChub2RlMikgPT4gbm9kZTIudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiIHx8IG5vZGUyLnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdG9yXCIpKSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdyb3VwKGNvbnRlbnQsIHtcbiAgICAgICAgc2hvdWxkQnJlYWtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludE9iamVjdFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZmxvdyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvZmxvdy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG4gICAgdmFyIHtcbiAgICAgIHByaW50RGFuZ2xpbmdDb21tZW50c1xuICAgIH0gPSByZXF1aXJlX2NvbW1lbnRzKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50U3RyaW5nLFxuICAgICAgcHJpbnROdW1iZXJcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGluZGVudFxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGdldFBhcmVudEV4cG9ydERlY2xhcmF0aW9uLFxuICAgICAgaXNGdW5jdGlvbk5vdGF0aW9uLFxuICAgICAgaXNHZXR0ZXJPclNldHRlcixcbiAgICAgIHJhd1RleHQsXG4gICAgICBzaG91bGRQcmludENvbW1hXG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q2xhc3NcbiAgICB9ID0gcmVxdWlyZV9jbGFzcygpO1xuICAgIHZhciB7XG4gICAgICBwcmludE9wYXF1ZVR5cGUsXG4gICAgICBwcmludFR5cGVBbGlhcyxcbiAgICAgIHByaW50SW50ZXJzZWN0aW9uVHlwZSxcbiAgICAgIHByaW50VW5pb25UeXBlLFxuICAgICAgcHJpbnRGdW5jdGlvblR5cGUsXG4gICAgICBwcmludFR1cGxlVHlwZSxcbiAgICAgIHByaW50SW5kZXhlZEFjY2Vzc1R5cGVcbiAgICB9ID0gcmVxdWlyZV90eXBlX2Fubm90YXRpb24oKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRJbnRlcmZhY2VcbiAgICB9ID0gcmVxdWlyZV9pbnRlcmZhY2UoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRUeXBlUGFyYW1ldGVyLFxuICAgICAgcHJpbnRUeXBlUGFyYW1ldGVyc1xuICAgIH0gPSByZXF1aXJlX3R5cGVfcGFyYW1ldGVycygpO1xuICAgIHZhciB7XG4gICAgICBwcmludEV4cG9ydERlY2xhcmF0aW9uLFxuICAgICAgcHJpbnRFeHBvcnRBbGxEZWNsYXJhdGlvblxuICAgIH0gPSByZXF1aXJlX21vZHVsZSgpO1xuICAgIHZhciB7XG4gICAgICBwcmludEFycmF5SXRlbXNcbiAgICB9ID0gcmVxdWlyZV9hcnJheTQoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRPYmplY3RcbiAgICB9ID0gcmVxdWlyZV9vYmplY3QoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRQcm9wZXJ0eUtleVxuICAgIH0gPSByZXF1aXJlX3Byb3BlcnR5KCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T3B0aW9uYWxUb2tlbixcbiAgICAgIHByaW50VHlwZUFubm90YXRpb24sXG4gICAgICBwcmludFJlc3RTcHJlYWRcbiAgICB9ID0gcmVxdWlyZV9taXNjKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRGbG93KHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3Qgc2VtaSA9IG9wdGlvbnMuc2VtaSA/IFwiO1wiIDogXCJcIjtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiRGVjbGFyZUNsYXNzXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50Rmxvd0RlY2xhcmF0aW9uKHBhdGgsIHByaW50Q2xhc3MocGF0aCwgb3B0aW9ucywgcHJpbnQpKTtcbiAgICAgICAgY2FzZSBcIkRlY2xhcmVGdW5jdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludEZsb3dEZWNsYXJhdGlvbihwYXRoLCBbXCJmdW5jdGlvbiBcIiwgcHJpbnQoXCJpZFwiKSwgbm9kZS5wcmVkaWNhdGUgPyBcIiBcIiA6IFwiXCIsIHByaW50KFwicHJlZGljYXRlXCIpLCBzZW1pXSk7XG4gICAgICAgIGNhc2UgXCJEZWNsYXJlTW9kdWxlXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50Rmxvd0RlY2xhcmF0aW9uKHBhdGgsIFtcIm1vZHVsZSBcIiwgcHJpbnQoXCJpZFwiKSwgXCIgXCIsIHByaW50KFwiYm9keVwiKV0pO1xuICAgICAgICBjYXNlIFwiRGVjbGFyZU1vZHVsZUV4cG9ydHNcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93RGVjbGFyYXRpb24ocGF0aCwgW1wibW9kdWxlLmV4cG9ydHNcIiwgXCI6IFwiLCBwcmludChcInR5cGVBbm5vdGF0aW9uXCIpLCBzZW1pXSk7XG4gICAgICAgIGNhc2UgXCJEZWNsYXJlVmFyaWFibGVcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93RGVjbGFyYXRpb24ocGF0aCwgW1widmFyIFwiLCBwcmludChcImlkXCIpLCBzZW1pXSk7XG4gICAgICAgIGNhc2UgXCJEZWNsYXJlT3BhcXVlVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBwcmludEZsb3dEZWNsYXJhdGlvbihwYXRoLCBwcmludE9wYXF1ZVR5cGUocGF0aCwgb3B0aW9ucywgcHJpbnQpKTtcbiAgICAgICAgY2FzZSBcIkRlY2xhcmVJbnRlcmZhY2VcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93RGVjbGFyYXRpb24ocGF0aCwgcHJpbnRJbnRlcmZhY2UocGF0aCwgb3B0aW9ucywgcHJpbnQpKTtcbiAgICAgICAgY2FzZSBcIkRlY2xhcmVUeXBlQWxpYXNcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93RGVjbGFyYXRpb24ocGF0aCwgcHJpbnRUeXBlQWxpYXMocGF0aCwgb3B0aW9ucywgcHJpbnQpKTtcbiAgICAgICAgY2FzZSBcIkRlY2xhcmVFeHBvcnREZWNsYXJhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludEZsb3dEZWNsYXJhdGlvbihwYXRoLCBwcmludEV4cG9ydERlY2xhcmF0aW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KSk7XG4gICAgICAgIGNhc2UgXCJEZWNsYXJlRXhwb3J0QWxsRGVjbGFyYXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93RGVjbGFyYXRpb24ocGF0aCwgcHJpbnRFeHBvcnRBbGxEZWNsYXJhdGlvbihwYXRoLCBvcHRpb25zLCBwcmludCkpO1xuICAgICAgICBjYXNlIFwiT3BhcXVlVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBwcmludE9wYXF1ZVR5cGUocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiVHlwZUFsaWFzXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50VHlwZUFsaWFzKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkludGVyc2VjdGlvblR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50SW50ZXJzZWN0aW9uVHlwZShwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJVbmlvblR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50VW5pb25UeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGdW5jdGlvblR5cGUocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiVHVwbGVUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludFR1cGxlVHlwZShwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJHZW5lcmljVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiaWRcIiksIHByaW50VHlwZVBhcmFtZXRlcnMocGF0aCwgb3B0aW9ucywgcHJpbnQsIFwidHlwZVBhcmFtZXRlcnNcIildO1xuICAgICAgICBjYXNlIFwiSW5kZXhlZEFjY2Vzc1R5cGVcIjpcbiAgICAgICAgY2FzZSBcIk9wdGlvbmFsSW5kZXhlZEFjY2Vzc1R5cGVcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRJbmRleGVkQWNjZXNzVHlwZShwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludChcInR5cGVBbm5vdGF0aW9uXCIpO1xuICAgICAgICBjYXNlIFwiVHlwZVBhcmFtZXRlclwiOlxuICAgICAgICAgIHJldHVybiBwcmludFR5cGVQYXJhbWV0ZXIocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiVHlwZW9mVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gW1widHlwZW9mIFwiLCBwcmludChcImFyZ3VtZW50XCIpXTtcbiAgICAgICAgY2FzZSBcIkV4aXN0c1R5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFwiKlwiO1xuICAgICAgICBjYXNlIFwiRW1wdHlUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBcImVtcHR5XCI7XG4gICAgICAgIGNhc2UgXCJNaXhlZFR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFwibWl4ZWRcIjtcbiAgICAgICAgY2FzZSBcIkFycmF5VHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZWxlbWVudFR5cGVcIiksIFwiW11cIl07XG4gICAgICAgIGNhc2UgXCJCb29sZWFuTGl0ZXJhbFR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyhub2RlLnZhbHVlKTtcbiAgICAgICAgY2FzZSBcIkVudW1EZWNsYXJhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBbXCJlbnVtIFwiLCBwcmludChcImlkXCIpLCBcIiBcIiwgcHJpbnQoXCJib2R5XCIpXTtcbiAgICAgICAgY2FzZSBcIkVudW1Cb29sZWFuQm9keVwiOlxuICAgICAgICBjYXNlIFwiRW51bU51bWJlckJvZHlcIjpcbiAgICAgICAgY2FzZSBcIkVudW1TdHJpbmdCb2R5XCI6XG4gICAgICAgIGNhc2UgXCJFbnVtU3ltYm9sQm9keVwiOiB7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJFbnVtU3ltYm9sQm9keVwiIHx8IG5vZGUuZXhwbGljaXRUeXBlKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IG51bGw7XG4gICAgICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFwiRW51bUJvb2xlYW5Cb2R5XCI6XG4gICAgICAgICAgICAgICAgdHlwZSA9IFwiYm9vbGVhblwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiRW51bU51bWJlckJvZHlcIjpcbiAgICAgICAgICAgICAgICB0eXBlID0gXCJudW1iZXJcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIkVudW1TdHJpbmdCb2R5XCI6XG4gICAgICAgICAgICAgICAgdHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJFbnVtU3ltYm9sQm9keVwiOlxuICAgICAgICAgICAgICAgIHR5cGUgPSBcInN5bWJvbFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHMucHVzaChcIm9mIFwiLCB0eXBlLCBcIiBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLm1lbWJlcnMubGVuZ3RoID09PSAwICYmICFub2RlLmhhc1Vua25vd25NZW1iZXJzKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGdyb3VwKFtcIntcIiwgcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMpLCBzb2Z0bGluZSwgXCJ9XCJdKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1lbWJlcnMgPSBub2RlLm1lbWJlcnMubGVuZ3RoID4gMCA/IFtoYXJkbGluZSwgcHJpbnRBcnJheUl0ZW1zKHBhdGgsIG9wdGlvbnMsIFwibWVtYmVyc1wiLCBwcmludCksIG5vZGUuaGFzVW5rbm93bk1lbWJlcnMgfHwgc2hvdWxkUHJpbnRDb21tYShvcHRpb25zKSA/IFwiLFwiIDogXCJcIl0gOiBbXTtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAoW1wie1wiLCBpbmRlbnQoWy4uLm1lbWJlcnMsIC4uLm5vZGUuaGFzVW5rbm93bk1lbWJlcnMgPyBbaGFyZGxpbmUsIFwiLi4uXCJdIDogW11dKSwgcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUpLCBoYXJkbGluZSwgXCJ9XCJdKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRW51bUJvb2xlYW5NZW1iZXJcIjpcbiAgICAgICAgY2FzZSBcIkVudW1OdW1iZXJNZW1iZXJcIjpcbiAgICAgICAgY2FzZSBcIkVudW1TdHJpbmdNZW1iZXJcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiaWRcIiksIFwiID0gXCIsIHR5cGVvZiBub2RlLmluaXQgPT09IFwib2JqZWN0XCIgPyBwcmludChcImluaXRcIikgOiBTdHJpbmcobm9kZS5pbml0KV07XG4gICAgICAgIGNhc2UgXCJFbnVtRGVmYXVsdGVkTWVtYmVyXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50KFwiaWRcIik7XG4gICAgICAgIGNhc2UgXCJGdW5jdGlvblR5cGVQYXJhbVwiOiB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IG5vZGUubmFtZSA/IHByaW50KFwibmFtZVwiKSA6IHBhdGguZ2V0UGFyZW50Tm9kZSgpLnRoaXMgPT09IG5vZGUgPyBcInRoaXNcIiA6IFwiXCI7XG4gICAgICAgICAgcmV0dXJuIFtuYW1lLCBwcmludE9wdGlvbmFsVG9rZW4ocGF0aCksIG5hbWUgPyBcIjogXCIgOiBcIlwiLCBwcmludChcInR5cGVBbm5vdGF0aW9uXCIpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiSW50ZXJmYWNlRGVjbGFyYXRpb25cIjpcbiAgICAgICAgY2FzZSBcIkludGVyZmFjZVR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50SW50ZXJmYWNlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkNsYXNzSW1wbGVtZW50c1wiOlxuICAgICAgICBjYXNlIFwiSW50ZXJmYWNlRXh0ZW5kc1wiOlxuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJpZFwiKSwgcHJpbnQoXCJ0eXBlUGFyYW1ldGVyc1wiKV07XG4gICAgICAgIGNhc2UgXCJOdWxsYWJsZVR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFtcIj9cIiwgcHJpbnQoXCJ0eXBlQW5ub3RhdGlvblwiKV07XG4gICAgICAgIGNhc2UgXCJWYXJpYW5jZVwiOiB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAga2luZFxuICAgICAgICAgIH0gPSBub2RlO1xuICAgICAgICAgIGFzc2VydC5vayhraW5kID09PSBcInBsdXNcIiB8fCBraW5kID09PSBcIm1pbnVzXCIpO1xuICAgICAgICAgIHJldHVybiBraW5kID09PSBcInBsdXNcIiA/IFwiK1wiIDogXCItXCI7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVDYWxsUHJvcGVydHlcIjpcbiAgICAgICAgICBpZiAobm9kZS5zdGF0aWMpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJzdGF0aWMgXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwidmFsdWVcIikpO1xuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVJbmRleGVyXCI6IHtcbiAgICAgICAgICByZXR1cm4gW25vZGUuc3RhdGljID8gXCJzdGF0aWMgXCIgOiBcIlwiLCBub2RlLnZhcmlhbmNlID8gcHJpbnQoXCJ2YXJpYW5jZVwiKSA6IFwiXCIsIFwiW1wiLCBwcmludChcImlkXCIpLCBub2RlLmlkID8gXCI6IFwiIDogXCJcIiwgcHJpbnQoXCJrZXlcIiksIFwiXTogXCIsIHByaW50KFwidmFsdWVcIildO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJPYmplY3RUeXBlUHJvcGVydHlcIjoge1xuICAgICAgICAgIGxldCBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgaWYgKG5vZGUucHJvdG8pIHtcbiAgICAgICAgICAgIG1vZGlmaWVyID0gXCJwcm90byBcIjtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUuc3RhdGljKSB7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwic3RhdGljIFwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW21vZGlmaWVyLCBpc0dldHRlck9yU2V0dGVyKG5vZGUpID8gbm9kZS5raW5kICsgXCIgXCIgOiBcIlwiLCBub2RlLnZhcmlhbmNlID8gcHJpbnQoXCJ2YXJpYW5jZVwiKSA6IFwiXCIsIHByaW50UHJvcGVydHlLZXkocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBwcmludE9wdGlvbmFsVG9rZW4ocGF0aCksIGlzRnVuY3Rpb25Ob3RhdGlvbihub2RlKSA/IFwiXCIgOiBcIjogXCIsIHByaW50KFwidmFsdWVcIildO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJPYmplY3RUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludE9iamVjdChwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJPYmplY3RUeXBlSW50ZXJuYWxTbG90XCI6XG4gICAgICAgICAgcmV0dXJuIFtub2RlLnN0YXRpYyA/IFwic3RhdGljIFwiIDogXCJcIiwgXCJbW1wiLCBwcmludChcImlkXCIpLCBcIl1dXCIsIHByaW50T3B0aW9uYWxUb2tlbihwYXRoKSwgbm9kZS5tZXRob2QgPyBcIlwiIDogXCI6IFwiLCBwcmludChcInZhbHVlXCIpXTtcbiAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVTcHJlYWRQcm9wZXJ0eVwiOlxuICAgICAgICAgIHJldHVybiBwcmludFJlc3RTcHJlYWQocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiUXVhbGlmaWVkVHlwZW9mSWRlbnRpZmllclwiOlxuICAgICAgICBjYXNlIFwiUXVhbGlmaWVkVHlwZUlkZW50aWZpZXJcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwicXVhbGlmaWNhdGlvblwiKSwgXCIuXCIsIHByaW50KFwiaWRcIildO1xuICAgICAgICBjYXNlIFwiU3RyaW5nTGl0ZXJhbFR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50U3RyaW5nKHJhd1RleHQobm9kZSksIG9wdGlvbnMpO1xuICAgICAgICBjYXNlIFwiTnVtYmVyTGl0ZXJhbFR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBub2RlLnZhbHVlLCBcIm51bWJlclwiKTtcbiAgICAgICAgY2FzZSBcIkJpZ0ludExpdGVyYWxUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIGlmIChub2RlLmV4dHJhKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJpbnROdW1iZXIobm9kZS5leHRyYS5yYXcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHJpbnROdW1iZXIobm9kZS5yYXcpO1xuICAgICAgICBjYXNlIFwiVHlwZUNhc3RFeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wiKFwiLCBwcmludChcImV4cHJlc3Npb25cIiksIHByaW50VHlwZUFubm90YXRpb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBcIilcIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvblwiOlxuICAgICAgICBjYXNlIFwiVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb25cIjoge1xuICAgICAgICAgIGNvbnN0IHByaW50ZWQgPSBwcmludFR5cGVQYXJhbWV0ZXJzKHBhdGgsIG9wdGlvbnMsIHByaW50LCBcInBhcmFtc1wiKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5wYXJzZXIgPT09IFwiZmxvd1wiKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGxvY1N0YXJ0KG5vZGUpO1xuICAgICAgICAgICAgY29uc3QgZW5kID0gbG9jRW5kKG5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY29tbWVudFN0YXJ0SW5kZXggPSBvcHRpb25zLm9yaWdpbmFsVGV4dC5sYXN0SW5kZXhPZihcIi8qXCIsIHN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1lbnRFbmRJbmRleCA9IG9wdGlvbnMub3JpZ2luYWxUZXh0LmluZGV4T2YoXCIqL1wiLCBlbmQpO1xuICAgICAgICAgICAgaWYgKGNvbW1lbnRTdGFydEluZGV4ICE9PSAtMSAmJiBjb21tZW50RW5kSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnQgPSBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShjb21tZW50U3RhcnRJbmRleCArIDIsIGNvbW1lbnRFbmRJbmRleCkudHJpbSgpO1xuICAgICAgICAgICAgICBpZiAoY29tbWVudC5zdGFydHNXaXRoKFwiOjpcIikgJiYgIWNvbW1lbnQuaW5jbHVkZXMoXCIvKlwiKSAmJiAhY29tbWVudC5pbmNsdWRlcyhcIiovXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcIi8qOjogXCIsIHByaW50ZWQsIFwiICovXCJdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwcmludGVkO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJJbmZlcnJlZFByZWRpY2F0ZVwiOlxuICAgICAgICAgIHJldHVybiBcIiVjaGVja3NcIjtcbiAgICAgICAgY2FzZSBcIkRlY2xhcmVkUHJlZGljYXRlXCI6XG4gICAgICAgICAgcmV0dXJuIFtcIiVjaGVja3MoXCIsIHByaW50KFwidmFsdWVcIiksIFwiKVwiXTtcbiAgICAgICAgY2FzZSBcIkFueVR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFwiYW55XCI7XG4gICAgICAgIGNhc2UgXCJCb29sZWFuVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgICAgIGNhc2UgXCJCaWdJbnRUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBcImJpZ2ludFwiO1xuICAgICAgICBjYXNlIFwiTnVsbExpdGVyYWxUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgY2FzZSBcIk51bWJlclR5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XG4gICAgICAgIGNhc2UgXCJTeW1ib2xUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBcInN5bWJvbFwiO1xuICAgICAgICBjYXNlIFwiU3RyaW5nVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICAgICAgY2FzZSBcIlZvaWRUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBcInZvaWRcIjtcbiAgICAgICAgY2FzZSBcIlRoaXNUeXBlQW5ub3RhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBcInRoaXNcIjtcbiAgICAgICAgY2FzZSBcIk5vZGVcIjpcbiAgICAgICAgY2FzZSBcIlByaW50YWJsZVwiOlxuICAgICAgICBjYXNlIFwiU291cmNlTG9jYXRpb25cIjpcbiAgICAgICAgY2FzZSBcIlBvc2l0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJTdGF0ZW1lbnRcIjpcbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJQYXR0ZXJuXCI6XG4gICAgICAgIGNhc2UgXCJFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJEZWNsYXJhdGlvblwiOlxuICAgICAgICBjYXNlIFwiU3BlY2lmaWVyXCI6XG4gICAgICAgIGNhc2UgXCJOYW1lZFNwZWNpZmllclwiOlxuICAgICAgICBjYXNlIFwiQ29tbWVudFwiOlxuICAgICAgICBjYXNlIFwiTWVtYmVyVHlwZUFubm90YXRpb25cIjpcbiAgICAgICAgY2FzZSBcIlR5cGVcIjpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bnByaW50YWJsZSB0eXBlOiBcIiArIEpTT04uc3RyaW5naWZ5KG5vZGUudHlwZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEZsb3dEZWNsYXJhdGlvbihwYXRoLCBwcmludGVkKSB7XG4gICAgICBjb25zdCBwYXJlbnRFeHBvcnREZWNsID0gZ2V0UGFyZW50RXhwb3J0RGVjbGFyYXRpb24ocGF0aCk7XG4gICAgICBpZiAocGFyZW50RXhwb3J0RGVjbCkge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyZW50RXhwb3J0RGVjbC50eXBlLCBcIkRlY2xhcmVFeHBvcnREZWNsYXJhdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gW1wiZGVjbGFyZSBcIiwgcHJpbnRlZF07XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50Rmxvd1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaXNfdHNfa2V5d29yZF90eXBlID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy91dGlscy9pcy10cy1rZXl3b3JkLXR5cGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIGlzVHNLZXl3b3JkVHlwZSh7XG4gICAgICB0eXBlXG4gICAgfSkge1xuICAgICAgcmV0dXJuIHR5cGUuc3RhcnRzV2l0aChcIlRTXCIpICYmIHR5cGUuZW5kc1dpdGgoXCJLZXl3b3JkXCIpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBpc1RzS2V5d29yZFR5cGU7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdGVybmFyeSA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvdGVybmFyeS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGhhc05ld2xpbmVJblJhbmdlXG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBpc0pzeE5vZGUsXG4gICAgICBnZXRDb21tZW50cyxcbiAgICAgIGlzQ2FsbEV4cHJlc3Npb24sXG4gICAgICBpc01lbWJlckV4cHJlc3Npb25cbiAgICB9ID0gcmVxdWlyZV91dGlsczcoKTtcbiAgICB2YXIge1xuICAgICAgbG9jU3RhcnQsXG4gICAgICBsb2NFbmRcbiAgICB9ID0gcmVxdWlyZV9sb2MoKTtcbiAgICB2YXIgaXNCbG9ja0NvbW1lbnQgPSByZXF1aXJlX2lzX2Jsb2NrX2NvbW1lbnQoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgc29mdGxpbmUsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGFsaWduLFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBkZWRlbnQsXG4gICAgICAgIGJyZWFrUGFyZW50XG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICBmdW5jdGlvbiBjb25kaXRpb25hbEV4cHJlc3Npb25DaGFpbkNvbnRhaW5zSnN4KG5vZGUpIHtcbiAgICAgIGNvbnN0IGNvbmRpdGlvbmFsRXhwcmVzc2lvbnMgPSBbbm9kZV07XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29uZGl0aW9uYWxFeHByZXNzaW9ucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uYWxFeHByZXNzaW9uID0gY29uZGl0aW9uYWxFeHByZXNzaW9uc1tpbmRleF07XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgW1widGVzdFwiLCBcImNvbnNlcXVlbnRcIiwgXCJhbHRlcm5hdGVcIl0pIHtcbiAgICAgICAgICBjb25zdCBub2RlMiA9IGNvbmRpdGlvbmFsRXhwcmVzc2lvbltwcm9wZXJ0eV07XG4gICAgICAgICAgaWYgKGlzSnN4Tm9kZShub2RlMikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZTIudHlwZSA9PT0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIikge1xuICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9ucy5wdXNoKG5vZGUyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRUZXJuYXJ5VGVzdChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IGlzQ29uZGl0aW9uYWxFeHByZXNzaW9uID0gbm9kZS50eXBlID09PSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiO1xuICAgICAgY29uc3QgYWx0ZXJuYXRlTm9kZVByb3BlcnR5TmFtZSA9IGlzQ29uZGl0aW9uYWxFeHByZXNzaW9uID8gXCJhbHRlcm5hdGVcIiA6IFwiZmFsc2VUeXBlXCI7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgIGNvbnN0IHByaW50ZWQgPSBpc0NvbmRpdGlvbmFsRXhwcmVzc2lvbiA/IHByaW50KFwidGVzdFwiKSA6IFtwcmludChcImNoZWNrVHlwZVwiKSwgXCIgXCIsIFwiZXh0ZW5kc1wiLCBcIiBcIiwgcHJpbnQoXCJleHRlbmRzVHlwZVwiKV07XG4gICAgICBpZiAocGFyZW50LnR5cGUgPT09IG5vZGUudHlwZSAmJiBwYXJlbnRbYWx0ZXJuYXRlTm9kZVByb3BlcnR5TmFtZV0gPT09IG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGFsaWduKDIsIHByaW50ZWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgfVxuICAgIHZhciBhbmNlc3Rvck5hbWVNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcChbW1wiQXNzaWdubWVudEV4cHJlc3Npb25cIiwgXCJyaWdodFwiXSwgW1wiVmFyaWFibGVEZWNsYXJhdG9yXCIsIFwiaW5pdFwiXSwgW1wiUmV0dXJuU3RhdGVtZW50XCIsIFwiYXJndW1lbnRcIl0sIFtcIlRocm93U3RhdGVtZW50XCIsIFwiYXJndW1lbnRcIl0sIFtcIlVuYXJ5RXhwcmVzc2lvblwiLCBcImFyZ3VtZW50XCJdLCBbXCJZaWVsZEV4cHJlc3Npb25cIiwgXCJhcmd1bWVudFwiXV0pO1xuICAgIGZ1bmN0aW9uIHNob3VsZEV4dHJhSW5kZW50Rm9yQ29uZGl0aW9uYWxFeHByZXNzaW9uKHBhdGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAobm9kZS50eXBlICE9PSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGxldCBwYXJlbnQ7XG4gICAgICBsZXQgY2hpbGQgPSBub2RlO1xuICAgICAgZm9yIChsZXQgYW5jZXN0b3JDb3VudCA9IDA7ICFwYXJlbnQ7IGFuY2VzdG9yQ291bnQrKykge1xuICAgICAgICBjb25zdCBub2RlMiA9IHBhdGguZ2V0UGFyZW50Tm9kZShhbmNlc3RvckNvdW50KTtcbiAgICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24obm9kZTIpICYmIG5vZGUyLmNhbGxlZSA9PT0gY2hpbGQgfHwgaXNNZW1iZXJFeHByZXNzaW9uKG5vZGUyKSAmJiBub2RlMi5vYmplY3QgPT09IGNoaWxkIHx8IG5vZGUyLnR5cGUgPT09IFwiVFNOb25OdWxsRXhwcmVzc2lvblwiICYmIG5vZGUyLmV4cHJlc3Npb24gPT09IGNoaWxkKSB7XG4gICAgICAgICAgY2hpbGQgPSBub2RlMjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZTIudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCIgJiYgbm9kZTIuY2FsbGVlID09PSBjaGlsZCB8fCBub2RlMi50eXBlID09PSBcIlRTQXNFeHByZXNzaW9uXCIgJiYgbm9kZTIuZXhwcmVzc2lvbiA9PT0gY2hpbGQpIHtcbiAgICAgICAgICBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoYW5jZXN0b3JDb3VudCArIDEpO1xuICAgICAgICAgIGNoaWxkID0gbm9kZTI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFyZW50ID0gbm9kZTI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZCA9PT0gbm9kZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyZW50W2FuY2VzdG9yTmFtZU1hcC5nZXQocGFyZW50LnR5cGUpXSA9PT0gY2hpbGQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50VGVybmFyeShwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IGlzQ29uZGl0aW9uYWxFeHByZXNzaW9uID0gbm9kZS50eXBlID09PSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiO1xuICAgICAgY29uc3QgY29uc2VxdWVudE5vZGVQcm9wZXJ0eU5hbWUgPSBpc0NvbmRpdGlvbmFsRXhwcmVzc2lvbiA/IFwiY29uc2VxdWVudFwiIDogXCJ0cnVlVHlwZVwiO1xuICAgICAgY29uc3QgYWx0ZXJuYXRlTm9kZVByb3BlcnR5TmFtZSA9IGlzQ29uZGl0aW9uYWxFeHByZXNzaW9uID8gXCJhbHRlcm5hdGVcIiA6IFwiZmFsc2VUeXBlXCI7XG4gICAgICBjb25zdCB0ZXN0Tm9kZVByb3BlcnR5TmFtZXMgPSBpc0NvbmRpdGlvbmFsRXhwcmVzc2lvbiA/IFtcInRlc3RcIl0gOiBbXCJjaGVja1R5cGVcIiwgXCJleHRlbmRzVHlwZVwiXTtcbiAgICAgIGNvbnN0IGNvbnNlcXVlbnROb2RlID0gbm9kZVtjb25zZXF1ZW50Tm9kZVByb3BlcnR5TmFtZV07XG4gICAgICBjb25zdCBhbHRlcm5hdGVOb2RlID0gbm9kZVthbHRlcm5hdGVOb2RlUHJvcGVydHlOYW1lXTtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBsZXQganN4TW9kZSA9IGZhbHNlO1xuICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBjb25zdCBpc1BhcmVudFRlc3QgPSBwYXJlbnQudHlwZSA9PT0gbm9kZS50eXBlICYmIHRlc3ROb2RlUHJvcGVydHlOYW1lcy5zb21lKChwcm9wKSA9PiBwYXJlbnRbcHJvcF0gPT09IG5vZGUpO1xuICAgICAgbGV0IGZvcmNlTm9JbmRlbnQgPSBwYXJlbnQudHlwZSA9PT0gbm9kZS50eXBlICYmICFpc1BhcmVudFRlc3Q7XG4gICAgICBsZXQgY3VycmVudFBhcmVudDtcbiAgICAgIGxldCBwcmV2aW91c1BhcmVudDtcbiAgICAgIGxldCBpID0gMDtcbiAgICAgIGRvIHtcbiAgICAgICAgcHJldmlvdXNQYXJlbnQgPSBjdXJyZW50UGFyZW50IHx8IG5vZGU7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoaSk7XG4gICAgICAgIGkrKztcbiAgICAgIH0gd2hpbGUgKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC50eXBlID09PSBub2RlLnR5cGUgJiYgdGVzdE5vZGVQcm9wZXJ0eU5hbWVzLmV2ZXJ5KChwcm9wKSA9PiBjdXJyZW50UGFyZW50W3Byb3BdICE9PSBwcmV2aW91c1BhcmVudCkpO1xuICAgICAgY29uc3QgZmlyc3ROb25Db25kaXRpb25hbFBhcmVudCA9IGN1cnJlbnRQYXJlbnQgfHwgcGFyZW50O1xuICAgICAgY29uc3QgbGFzdENvbmRpdGlvbmFsUGFyZW50ID0gcHJldmlvdXNQYXJlbnQ7XG4gICAgICBpZiAoaXNDb25kaXRpb25hbEV4cHJlc3Npb24gJiYgKGlzSnN4Tm9kZShub2RlW3Rlc3ROb2RlUHJvcGVydHlOYW1lc1swXV0pIHx8IGlzSnN4Tm9kZShjb25zZXF1ZW50Tm9kZSkgfHwgaXNKc3hOb2RlKGFsdGVybmF0ZU5vZGUpIHx8IGNvbmRpdGlvbmFsRXhwcmVzc2lvbkNoYWluQ29udGFpbnNKc3gobGFzdENvbmRpdGlvbmFsUGFyZW50KSkpIHtcbiAgICAgICAganN4TW9kZSA9IHRydWU7XG4gICAgICAgIGZvcmNlTm9JbmRlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCB3cmFwID0gKGRvYzIpID0+IFtpZkJyZWFrKFwiKFwiKSwgaW5kZW50KFtzb2Z0bGluZSwgZG9jMl0pLCBzb2Z0bGluZSwgaWZCcmVhayhcIilcIildO1xuICAgICAgICBjb25zdCBpc05pbCA9IChub2RlMikgPT4gbm9kZTIudHlwZSA9PT0gXCJOdWxsTGl0ZXJhbFwiIHx8IG5vZGUyLnR5cGUgPT09IFwiTGl0ZXJhbFwiICYmIG5vZGUyLnZhbHVlID09PSBudWxsIHx8IG5vZGUyLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUyLm5hbWUgPT09IFwidW5kZWZpbmVkXCI7XG4gICAgICAgIHBhcnRzLnB1c2goXCIgPyBcIiwgaXNOaWwoY29uc2VxdWVudE5vZGUpID8gcHJpbnQoY29uc2VxdWVudE5vZGVQcm9wZXJ0eU5hbWUpIDogd3JhcChwcmludChjb25zZXF1ZW50Tm9kZVByb3BlcnR5TmFtZSkpLCBcIiA6IFwiLCBhbHRlcm5hdGVOb2RlLnR5cGUgPT09IG5vZGUudHlwZSB8fCBpc05pbChhbHRlcm5hdGVOb2RlKSA/IHByaW50KGFsdGVybmF0ZU5vZGVQcm9wZXJ0eU5hbWUpIDogd3JhcChwcmludChhbHRlcm5hdGVOb2RlUHJvcGVydHlOYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFydCA9IFtsaW5lLCBcIj8gXCIsIGNvbnNlcXVlbnROb2RlLnR5cGUgPT09IG5vZGUudHlwZSA/IGlmQnJlYWsoXCJcIiwgXCIoXCIpIDogXCJcIiwgYWxpZ24oMiwgcHJpbnQoY29uc2VxdWVudE5vZGVQcm9wZXJ0eU5hbWUpKSwgY29uc2VxdWVudE5vZGUudHlwZSA9PT0gbm9kZS50eXBlID8gaWZCcmVhayhcIlwiLCBcIilcIikgOiBcIlwiLCBsaW5lLCBcIjogXCIsIGFsdGVybmF0ZU5vZGUudHlwZSA9PT0gbm9kZS50eXBlID8gcHJpbnQoYWx0ZXJuYXRlTm9kZVByb3BlcnR5TmFtZSkgOiBhbGlnbigyLCBwcmludChhbHRlcm5hdGVOb2RlUHJvcGVydHlOYW1lKSldO1xuICAgICAgICBwYXJ0cy5wdXNoKHBhcmVudC50eXBlICE9PSBub2RlLnR5cGUgfHwgcGFyZW50W2FsdGVybmF0ZU5vZGVQcm9wZXJ0eU5hbWVdID09PSBub2RlIHx8IGlzUGFyZW50VGVzdCA/IHBhcnQgOiBvcHRpb25zLnVzZVRhYnMgPyBkZWRlbnQoaW5kZW50KHBhcnQpKSA6IGFsaWduKE1hdGgubWF4KDAsIG9wdGlvbnMudGFiV2lkdGggLSAyKSwgcGFydCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgY29tbWVudHMgPSBbLi4udGVzdE5vZGVQcm9wZXJ0eU5hbWVzLm1hcCgocHJvcGVydHlOYW1lKSA9PiBnZXRDb21tZW50cyhub2RlW3Byb3BlcnR5TmFtZV0pKSwgZ2V0Q29tbWVudHMoY29uc2VxdWVudE5vZGUpLCBnZXRDb21tZW50cyhhbHRlcm5hdGVOb2RlKV0uZmxhdCgpO1xuICAgICAgY29uc3Qgc2hvdWxkQnJlYWsgPSBjb21tZW50cy5zb21lKChjb21tZW50KSA9PiBpc0Jsb2NrQ29tbWVudChjb21tZW50KSAmJiBoYXNOZXdsaW5lSW5SYW5nZShvcHRpb25zLm9yaWdpbmFsVGV4dCwgbG9jU3RhcnQoY29tbWVudCksIGxvY0VuZChjb21tZW50KSkpO1xuICAgICAgY29uc3QgbWF5YmVHcm91cCA9IChkb2MyKSA9PiBwYXJlbnQgPT09IGZpcnN0Tm9uQ29uZGl0aW9uYWxQYXJlbnQgPyBncm91cChkb2MyLCB7XG4gICAgICAgIHNob3VsZEJyZWFrXG4gICAgICB9KSA6IHNob3VsZEJyZWFrID8gW2RvYzIsIGJyZWFrUGFyZW50XSA6IGRvYzI7XG4gICAgICBjb25zdCBicmVha0Nsb3NpbmdQYXJlbiA9ICFqc3hNb2RlICYmIChpc01lbWJlckV4cHJlc3Npb24ocGFyZW50KSB8fCBwYXJlbnQudHlwZSA9PT0gXCJOR1BpcGVFeHByZXNzaW9uXCIgJiYgcGFyZW50LmxlZnQgPT09IG5vZGUpICYmICFwYXJlbnQuY29tcHV0ZWQ7XG4gICAgICBjb25zdCBzaG91bGRFeHRyYUluZGVudCA9IHNob3VsZEV4dHJhSW5kZW50Rm9yQ29uZGl0aW9uYWxFeHByZXNzaW9uKHBhdGgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gbWF5YmVHcm91cChbcHJpbnRUZXJuYXJ5VGVzdChwYXRoLCBvcHRpb25zLCBwcmludCksIGZvcmNlTm9JbmRlbnQgPyBwYXJ0cyA6IGluZGVudChwYXJ0cyksIGlzQ29uZGl0aW9uYWxFeHByZXNzaW9uICYmIGJyZWFrQ2xvc2luZ1BhcmVuICYmICFzaG91bGRFeHRyYUluZGVudCA/IHNvZnRsaW5lIDogXCJcIl0pO1xuICAgICAgcmV0dXJuIGlzUGFyZW50VGVzdCB8fCBzaG91bGRFeHRyYUluZGVudCA/IGdyb3VwKFtpbmRlbnQoW3NvZnRsaW5lLCByZXN1bHRdKSwgc29mdGxpbmVdKSA6IHJlc3VsdDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRUZXJuYXJ5XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zdGF0ZW1lbnQgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L3N0YXRlbWVudC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGhhcmRsaW5lXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIgcGF0aE5lZWRzUGFyZW5zID0gcmVxdWlyZV9uZWVkc19wYXJlbnMoKTtcbiAgICB2YXIge1xuICAgICAgZ2V0TGVmdFNpZGVQYXRoTmFtZSxcbiAgICAgIGhhc05ha2VkTGVmdFNpZGUsXG4gICAgICBpc0pzeE5vZGUsXG4gICAgICBpc1RoZU9ubHlKc3hFbGVtZW50SW5NYXJrZG93bixcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBDb21tZW50Q2hlY2tGbGFncyxcbiAgICAgIGlzTmV4dExpbmVFbXB0eVxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBzaG91bGRQcmludFBhcmFtc1dpdGhvdXRQYXJlbnNcbiAgICB9ID0gcmVxdWlyZV9mdW5jdGlvbigpO1xuICAgIGZ1bmN0aW9uIHByaW50U3RhdGVtZW50U2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQsIHByb3BlcnR5KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGNvbnN0IGlzQ2xhc3NCb2R5ID0gbm9kZS50eXBlID09PSBcIkNsYXNzQm9keVwiO1xuICAgICAgY29uc3QgbGFzdFN0YXRlbWVudCA9IGdldExhc3RTdGF0ZW1lbnQobm9kZVtwcm9wZXJ0eV0pO1xuICAgICAgcGF0aC5lYWNoKChwYXRoMiwgaW5kZXgsIHN0YXRlbWVudHMpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZTIgPSBwYXRoMi5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAobm9kZTIudHlwZSA9PT0gXCJFbXB0eVN0YXRlbWVudFwiKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByaW50ZWQgPSBwcmludCgpO1xuICAgICAgICBpZiAoIW9wdGlvbnMuc2VtaSAmJiAhaXNDbGFzc0JvZHkgJiYgIWlzVGhlT25seUpzeEVsZW1lbnRJbk1hcmtkb3duKG9wdGlvbnMsIHBhdGgyKSAmJiBzdGF0ZW1lbnROZWVkc0FTSVByb3RlY3Rpb24ocGF0aDIsIG9wdGlvbnMpKSB7XG4gICAgICAgICAgaWYgKGhhc0NvbW1lbnQobm9kZTIsIENvbW1lbnRDaGVja0ZsYWdzLkxlYWRpbmcpKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFtdLCB7XG4gICAgICAgICAgICAgIG5lZWRzU2VtaTogdHJ1ZVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiO1wiLCBwcmludGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFydHMucHVzaChwcmludGVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMuc2VtaSAmJiBpc0NsYXNzQm9keSAmJiBpc0NsYXNzUHJvcGVydHkobm9kZTIpICYmIHNob3VsZFByaW50U2VtaWNvbG9uQWZ0ZXJDbGFzc1Byb3BlcnR5KG5vZGUyLCBzdGF0ZW1lbnRzW2luZGV4ICsgMV0pKSB7XG4gICAgICAgICAgcGFydHMucHVzaChcIjtcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUyICE9PSBsYXN0U3RhdGVtZW50KSB7XG4gICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgaWYgKGlzTmV4dExpbmVFbXB0eShub2RlMiwgb3B0aW9ucykpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goaGFyZGxpbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgcHJvcGVydHkpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRMYXN0U3RhdGVtZW50KHN0YXRlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSBzdGF0ZW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0YXRlbWVudHNbaV07XG4gICAgICAgIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gXCJFbXB0eVN0YXRlbWVudFwiKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzdGF0ZW1lbnROZWVkc0FTSVByb3RlY3Rpb24ocGF0aCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0Tm9kZSgpO1xuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdGguY2FsbCgoY2hpbGRQYXRoKSA9PiBleHByZXNzaW9uTmVlZHNBU0lQcm90ZWN0aW9uKGNoaWxkUGF0aCwgb3B0aW9ucyksIFwiZXhwcmVzc2lvblwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXhwcmVzc2lvbk5lZWRzQVNJUHJvdGVjdGlvbihwYXRoLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIlBhcmVudGhlc2l6ZWRFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJUeXBlQ2FzdEV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIkFycmF5RXhwcmVzc2lvblwiOlxuICAgICAgICBjYXNlIFwiQXJyYXlQYXR0ZXJuXCI6XG4gICAgICAgIGNhc2UgXCJUZW1wbGF0ZUxpdGVyYWxcIjpcbiAgICAgICAgY2FzZSBcIlRlbXBsYXRlRWxlbWVudFwiOlxuICAgICAgICBjYXNlIFwiUmVnRXhwTGl0ZXJhbFwiOlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjYXNlIFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIjoge1xuICAgICAgICAgIGlmICghc2hvdWxkUHJpbnRQYXJhbXNXaXRob3V0UGFyZW5zKHBhdGgsIG9wdGlvbnMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlVuYXJ5RXhwcmVzc2lvblwiOiB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgcHJlZml4LFxuICAgICAgICAgICAgb3BlcmF0b3JcbiAgICAgICAgICB9ID0gbm9kZTtcbiAgICAgICAgICBpZiAocHJlZml4ICYmIChvcGVyYXRvciA9PT0gXCIrXCIgfHwgb3BlcmF0b3IgPT09IFwiLVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJCaW5kRXhwcmVzc2lvblwiOiB7XG4gICAgICAgICAgaWYgKCFub2RlLm9iamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJMaXRlcmFsXCI6IHtcbiAgICAgICAgICBpZiAobm9kZS5yZWdleCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBpZiAoaXNKc3hOb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwYXRoTmVlZHNQYXJlbnMocGF0aCwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIWhhc05ha2VkTGVmdFNpZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdGguY2FsbCgoY2hpbGRQYXRoKSA9PiBleHByZXNzaW9uTmVlZHNBU0lQcm90ZWN0aW9uKGNoaWxkUGF0aCwgb3B0aW9ucyksIC4uLmdldExlZnRTaWRlUGF0aE5hbWUocGF0aCwgbm9kZSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEJvZHkocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIHJldHVybiBwcmludFN0YXRlbWVudFNlcXVlbmNlKHBhdGgsIG9wdGlvbnMsIHByaW50LCBcImJvZHlcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50U3dpdGNoQ2FzZUNvbnNlcXVlbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIHJldHVybiBwcmludFN0YXRlbWVudFNlcXVlbmNlKHBhdGgsIG9wdGlvbnMsIHByaW50LCBcImNvbnNlcXVlbnRcIik7XG4gICAgfVxuICAgIHZhciBpc0NsYXNzUHJvcGVydHkgPSAoe1xuICAgICAgdHlwZVxuICAgIH0pID0+IHR5cGUgPT09IFwiQ2xhc3NQcm9wZXJ0eVwiIHx8IHR5cGUgPT09IFwiUHJvcGVydHlEZWZpbml0aW9uXCIgfHwgdHlwZSA9PT0gXCJDbGFzc1ByaXZhdGVQcm9wZXJ0eVwiIHx8IHR5cGUgPT09IFwiQ2xhc3NBY2Nlc3NvclByb3BlcnR5XCI7XG4gICAgZnVuY3Rpb24gc2hvdWxkUHJpbnRTZW1pY29sb25BZnRlckNsYXNzUHJvcGVydHkobm9kZSwgbmV4dE5vZGUpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBub2RlLmtleSAmJiBub2RlLmtleS5uYW1lO1xuICAgICAgaWYgKChuYW1lID09PSBcInN0YXRpY1wiIHx8IG5hbWUgPT09IFwiZ2V0XCIgfHwgbmFtZSA9PT0gXCJzZXRcIikgJiYgIW5vZGUudmFsdWUgJiYgIW5vZGUudHlwZUFubm90YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIW5leHROb2RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0Tm9kZS5zdGF0aWMgfHwgbmV4dE5vZGUuYWNjZXNzaWJpbGl0eSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIW5leHROb2RlLmNvbXB1dGVkKSB7XG4gICAgICAgIGNvbnN0IG5hbWUyID0gbmV4dE5vZGUua2V5ICYmIG5leHROb2RlLmtleS5uYW1lO1xuICAgICAgICBpZiAobmFtZTIgPT09IFwiaW5cIiB8fCBuYW1lMiA9PT0gXCJpbnN0YW5jZW9mXCIpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ2xhc3NQcm9wZXJ0eShuZXh0Tm9kZSkgJiYgbmV4dE5vZGUudmFyaWFuY2UgJiYgIW5leHROb2RlLnN0YXRpYyAmJiAhbmV4dE5vZGUuZGVjbGFyZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAobmV4dE5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiQ2xhc3NQcm9wZXJ0eVwiOlxuICAgICAgICBjYXNlIFwiUHJvcGVydHlEZWZpbml0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJUU0Fic3RyYWN0UHJvcGVydHlEZWZpbml0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIG5leHROb2RlLmNvbXB1dGVkO1xuICAgICAgICBjYXNlIFwiTWV0aG9kRGVmaW5pdGlvblwiOlxuICAgICAgICBjYXNlIFwiVFNBYnN0cmFjdE1ldGhvZERlZmluaXRpb25cIjpcbiAgICAgICAgY2FzZSBcIkNsYXNzTWV0aG9kXCI6XG4gICAgICAgIGNhc2UgXCJDbGFzc1ByaXZhdGVNZXRob2RcIjoge1xuICAgICAgICAgIGNvbnN0IGlzQXN5bmMgPSBuZXh0Tm9kZS52YWx1ZSA/IG5leHROb2RlLnZhbHVlLmFzeW5jIDogbmV4dE5vZGUuYXN5bmM7XG4gICAgICAgICAgaWYgKGlzQXN5bmMgfHwgbmV4dE5vZGUua2luZCA9PT0gXCJnZXRcIiB8fCBuZXh0Tm9kZS5raW5kID09PSBcInNldFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzR2VuZXJhdG9yID0gbmV4dE5vZGUudmFsdWUgPyBuZXh0Tm9kZS52YWx1ZS5nZW5lcmF0b3IgOiBuZXh0Tm9kZS5nZW5lcmF0b3I7XG4gICAgICAgICAgaWYgKG5leHROb2RlLmNvbXB1dGVkIHx8IGlzR2VuZXJhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJUU0luZGV4U2lnbmF0dXJlXCI6XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50Qm9keSxcbiAgICAgIHByaW50U3dpdGNoQ2FzZUNvbnNlcXVlbnRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2Jsb2NrID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9ibG9jay5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIHByaW50RGFuZ2xpbmdDb21tZW50c1xuICAgIH0gPSByZXF1aXJlX2NvbW1lbnRzKCk7XG4gICAgdmFyIHtcbiAgICAgIGlzTm9uRW1wdHlBcnJheVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIGluZGVudFxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGhhc0NvbW1lbnQsXG4gICAgICBDb21tZW50Q2hlY2tGbGFncyxcbiAgICAgIGlzTmV4dExpbmVFbXB0eVxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBwcmludEhhcmRsaW5lQWZ0ZXJIZXJpdGFnZVxuICAgIH0gPSByZXF1aXJlX2NsYXNzKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Qm9keVxuICAgIH0gPSByZXF1aXJlX3N0YXRlbWVudCgpO1xuICAgIGZ1bmN0aW9uIHByaW50QmxvY2socGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJTdGF0aWNCbG9ja1wiKSB7XG4gICAgICAgIHBhcnRzLnB1c2goXCJzdGF0aWMgXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJDbGFzc0JvZHlcIiAmJiBpc05vbkVtcHR5QXJyYXkobm9kZS5ib2R5KSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgICAgcGFydHMucHVzaChwcmludEhhcmRsaW5lQWZ0ZXJIZXJpdGFnZShwYXJlbnQpKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2goXCJ7XCIpO1xuICAgICAgY29uc3QgcHJpbnRlZCA9IHByaW50QmxvY2tCb2R5KHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgIGlmIChwcmludGVkKSB7XG4gICAgICAgIHBhcnRzLnB1c2goaW5kZW50KFtoYXJkbGluZSwgcHJpbnRlZF0pLCBoYXJkbGluZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgICAgY29uc3QgcGFyZW50UGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKDEpO1xuICAgICAgICBpZiAoIShwYXJlbnQudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiIHx8IHBhcmVudC50eXBlID09PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiIHx8IHBhcmVudC50eXBlID09PSBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJPYmplY3RNZXRob2RcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJDbGFzc01ldGhvZFwiIHx8IHBhcmVudC50eXBlID09PSBcIkNsYXNzUHJpdmF0ZU1ldGhvZFwiIHx8IHBhcmVudC50eXBlID09PSBcIkZvclN0YXRlbWVudFwiIHx8IHBhcmVudC50eXBlID09PSBcIldoaWxlU3RhdGVtZW50XCIgfHwgcGFyZW50LnR5cGUgPT09IFwiRG9XaGlsZVN0YXRlbWVudFwiIHx8IHBhcmVudC50eXBlID09PSBcIkRvRXhwcmVzc2lvblwiIHx8IHBhcmVudC50eXBlID09PSBcIkNhdGNoQ2xhdXNlXCIgJiYgIXBhcmVudFBhcmVudC5maW5hbGl6ZXIgfHwgcGFyZW50LnR5cGUgPT09IFwiVFNNb2R1bGVEZWNsYXJhdGlvblwiIHx8IHBhcmVudC50eXBlID09PSBcIlRTRGVjbGFyZUZ1bmN0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIlN0YXRpY0Jsb2NrXCIgfHwgbm9kZS50eXBlID09PSBcIkNsYXNzQm9keVwiKSkge1xuICAgICAgICAgIHBhcnRzLnB1c2goaGFyZGxpbmUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKFwifVwiKTtcbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRCbG9ja0JvZHkocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBub2RlSGFzRGlyZWN0aXZlcyA9IGlzTm9uRW1wdHlBcnJheShub2RlLmRpcmVjdGl2ZXMpO1xuICAgICAgY29uc3Qgbm9kZUhhc0JvZHkgPSBub2RlLmJvZHkuc29tZSgobm9kZTIpID0+IG5vZGUyLnR5cGUgIT09IFwiRW1wdHlTdGF0ZW1lbnRcIik7XG4gICAgICBjb25zdCBub2RlSGFzQ29tbWVudCA9IGhhc0NvbW1lbnQobm9kZSwgQ29tbWVudENoZWNrRmxhZ3MuRGFuZ2xpbmcpO1xuICAgICAgaWYgKCFub2RlSGFzRGlyZWN0aXZlcyAmJiAhbm9kZUhhc0JvZHkgJiYgIW5vZGVIYXNDb21tZW50KSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGlmIChub2RlSGFzRGlyZWN0aXZlcykge1xuICAgICAgICBwYXRoLmVhY2goKGNoaWxkUGF0aCwgaW5kZXgsIGRpcmVjdGl2ZXMpID0+IHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KCkpO1xuICAgICAgICAgIGlmIChpbmRleCA8IGRpcmVjdGl2ZXMubGVuZ3RoIC0gMSB8fCBub2RlSGFzQm9keSB8fCBub2RlSGFzQ29tbWVudCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgICBpZiAoaXNOZXh0TGluZUVtcHR5KGNoaWxkUGF0aC5nZXRWYWx1ZSgpLCBvcHRpb25zKSkge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIFwiZGlyZWN0aXZlc1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlSGFzQm9keSkge1xuICAgICAgICBwYXJ0cy5wdXNoKHByaW50Qm9keShwYXRoLCBvcHRpb25zLCBwcmludCkpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGVIYXNDb21tZW50KSB7XG4gICAgICAgIHBhcnRzLnB1c2gocHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiUHJvZ3JhbVwiKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQudHlwZSAhPT0gXCJNb2R1bGVFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludEJsb2NrLFxuICAgICAgcHJpbnRCbG9ja0JvZHlcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3R5cGVzY3JpcHQgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWpzL3ByaW50L3R5cGVzY3JpcHQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBwcmludERhbmdsaW5nQ29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9jb21tZW50cygpO1xuICAgIHZhciB7XG4gICAgICBoYXNOZXdsaW5lSW5SYW5nZVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBjb25kaXRpb25hbEdyb3VwLFxuICAgICAgICBpZkJyZWFrXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgaXNMaXRlcmFsLFxuICAgICAgZ2V0VHlwZVNjcmlwdE1hcHBlZFR5cGVNb2RpZmllcixcbiAgICAgIHNob3VsZFByaW50Q29tbWEsXG4gICAgICBpc0NhbGxFeHByZXNzaW9uLFxuICAgICAgaXNNZW1iZXJFeHByZXNzaW9uXG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIGlzVHNLZXl3b3JkVHlwZSA9IHJlcXVpcmVfaXNfdHNfa2V5d29yZF90eXBlKCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T3B0aW9uYWxUb2tlbixcbiAgICAgIHByaW50VHlwZVNjcmlwdE1vZGlmaWVyc1xuICAgIH0gPSByZXF1aXJlX21pc2MoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRUZXJuYXJ5XG4gICAgfSA9IHJlcXVpcmVfdGVybmFyeSgpO1xuICAgIHZhciB7XG4gICAgICBwcmludEZ1bmN0aW9uUGFyYW1ldGVycyxcbiAgICAgIHNob3VsZEdyb3VwRnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgfSA9IHJlcXVpcmVfZnVuY3Rpb25fcGFyYW1ldGVycygpO1xuICAgIHZhciB7XG4gICAgICBwcmludFRlbXBsYXRlTGl0ZXJhbFxuICAgIH0gPSByZXF1aXJlX3RlbXBsYXRlX2xpdGVyYWwoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRBcnJheUl0ZW1zXG4gICAgfSA9IHJlcXVpcmVfYXJyYXk0KCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T2JqZWN0XG4gICAgfSA9IHJlcXVpcmVfb2JqZWN0KCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q2xhc3NQcm9wZXJ0eSxcbiAgICAgIHByaW50Q2xhc3NNZXRob2RcbiAgICB9ID0gcmVxdWlyZV9jbGFzcygpO1xuICAgIHZhciB7XG4gICAgICBwcmludFR5cGVQYXJhbWV0ZXIsXG4gICAgICBwcmludFR5cGVQYXJhbWV0ZXJzXG4gICAgfSA9IHJlcXVpcmVfdHlwZV9wYXJhbWV0ZXJzKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50UHJvcGVydHlLZXlcbiAgICB9ID0gcmVxdWlyZV9wcm9wZXJ0eSgpO1xuICAgIHZhciB7XG4gICAgICBwcmludEZ1bmN0aW9uLFxuICAgICAgcHJpbnRNZXRob2RJbnRlcm5hbFxuICAgIH0gPSByZXF1aXJlX2Z1bmN0aW9uKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50SW50ZXJmYWNlXG4gICAgfSA9IHJlcXVpcmVfaW50ZXJmYWNlKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50QmxvY2tcbiAgICB9ID0gcmVxdWlyZV9ibG9jaygpO1xuICAgIHZhciB7XG4gICAgICBwcmludFR5cGVBbGlhcyxcbiAgICAgIHByaW50SW50ZXJzZWN0aW9uVHlwZSxcbiAgICAgIHByaW50VW5pb25UeXBlLFxuICAgICAgcHJpbnRGdW5jdGlvblR5cGUsXG4gICAgICBwcmludFR1cGxlVHlwZSxcbiAgICAgIHByaW50SW5kZXhlZEFjY2Vzc1R5cGUsXG4gICAgICBwcmludEpTRG9jVHlwZVxuICAgIH0gPSByZXF1aXJlX3R5cGVfYW5ub3RhdGlvbigpO1xuICAgIGZ1bmN0aW9uIHByaW50VHlwZXNjcmlwdChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmICghbm9kZS50eXBlLnN0YXJ0c1dpdGgoXCJUU1wiKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXNUc0tleXdvcmRUeXBlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBub2RlLnR5cGUuc2xpY2UoMiwgLTcpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBzZW1pID0gb3B0aW9ucy5zZW1pID8gXCI7XCIgOiBcIlwiO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJUU1RoaXNUeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIFwidGhpc1wiO1xuICAgICAgICBjYXNlIFwiVFNUeXBlQXNzZXJ0aW9uXCI6IHtcbiAgICAgICAgICBjb25zdCBzaG91bGRCcmVha0FmdGVyQ2FzdCA9ICEobm9kZS5leHByZXNzaW9uLnR5cGUgPT09IFwiQXJyYXlFeHByZXNzaW9uXCIgfHwgbm9kZS5leHByZXNzaW9uLnR5cGUgPT09IFwiT2JqZWN0RXhwcmVzc2lvblwiKTtcbiAgICAgICAgICBjb25zdCBjYXN0R3JvdXAgPSBncm91cChbXCI8XCIsIGluZGVudChbc29mdGxpbmUsIHByaW50KFwidHlwZUFubm90YXRpb25cIildKSwgc29mdGxpbmUsIFwiPlwiXSk7XG4gICAgICAgICAgY29uc3QgZXhwckNvbnRlbnRzID0gW2lmQnJlYWsoXCIoXCIpLCBpbmRlbnQoW3NvZnRsaW5lLCBwcmludChcImV4cHJlc3Npb25cIildKSwgc29mdGxpbmUsIGlmQnJlYWsoXCIpXCIpXTtcbiAgICAgICAgICBpZiAoc2hvdWxkQnJlYWtBZnRlckNhc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25hbEdyb3VwKFtbY2FzdEdyb3VwLCBwcmludChcImV4cHJlc3Npb25cIildLCBbY2FzdEdyb3VwLCBncm91cChleHByQ29udGVudHMsIHtcbiAgICAgICAgICAgICAgc2hvdWxkQnJlYWs6IHRydWVcbiAgICAgICAgICAgIH0pXSwgW2Nhc3RHcm91cCwgcHJpbnQoXCJleHByZXNzaW9uXCIpXV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW2Nhc3RHcm91cCwgcHJpbnQoXCJleHByZXNzaW9uXCIpXSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlRTRGVjbGFyZUZ1bmN0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50RnVuY3Rpb24ocGF0aCwgcHJpbnQsIG9wdGlvbnMpO1xuICAgICAgICBjYXNlIFwiVFNFeHBvcnRBc3NpZ25tZW50XCI6XG4gICAgICAgICAgcmV0dXJuIFtcImV4cG9ydCA9IFwiLCBwcmludChcImV4cHJlc3Npb25cIiksIHNlbWldO1xuICAgICAgICBjYXNlIFwiVFNNb2R1bGVCbG9ja1wiOlxuICAgICAgICAgIHJldHVybiBwcmludEJsb2NrKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTSW50ZXJmYWNlQm9keVwiOlxuICAgICAgICBjYXNlIFwiVFNUeXBlTGl0ZXJhbFwiOlxuICAgICAgICAgIHJldHVybiBwcmludE9iamVjdChwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50VHlwZUFsaWFzKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTUXVhbGlmaWVkTmFtZVwiOlxuICAgICAgICAgIHJldHVybiBqb2luKFwiLlwiLCBbcHJpbnQoXCJsZWZ0XCIpLCBwcmludChcInJpZ2h0XCIpXSk7XG4gICAgICAgIGNhc2UgXCJUU0Fic3RyYWN0TWV0aG9kRGVmaW5pdGlvblwiOlxuICAgICAgICBjYXNlIFwiVFNEZWNsYXJlTWV0aG9kXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50Q2xhc3NNZXRob2QocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiVFNBYnN0cmFjdFByb3BlcnR5RGVmaW5pdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludENsYXNzUHJvcGVydHkocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiVFNJbnRlcmZhY2VIZXJpdGFnZVwiOlxuICAgICAgICBjYXNlIFwiVFNFeHByZXNzaW9uV2l0aFR5cGVBcmd1bWVudHNcIjpcbiAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwiZXhwcmVzc2lvblwiKSk7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJ0eXBlUGFyYW1ldGVyc1wiKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgY2FzZSBcIlRTVGVtcGxhdGVMaXRlcmFsVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBwcmludFRlbXBsYXRlTGl0ZXJhbChwYXRoLCBwcmludCwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgXCJUU05hbWVkVHVwbGVNZW1iZXJcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwibGFiZWxcIiksIG5vZGUub3B0aW9uYWwgPyBcIj9cIiA6IFwiXCIsIFwiOiBcIiwgcHJpbnQoXCJlbGVtZW50VHlwZVwiKV07XG4gICAgICAgIGNhc2UgXCJUU1Jlc3RUeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIFtcIi4uLlwiLCBwcmludChcInR5cGVBbm5vdGF0aW9uXCIpXTtcbiAgICAgICAgY2FzZSBcIlRTT3B0aW9uYWxUeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcInR5cGVBbm5vdGF0aW9uXCIpLCBcIj9cIl07XG4gICAgICAgIGNhc2UgXCJUU0ludGVyZmFjZURlY2xhcmF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50SW50ZXJmYWNlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTQ2xhc3NJbXBsZW1lbnRzXCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcImV4cHJlc3Npb25cIiksIHByaW50KFwidHlwZVBhcmFtZXRlcnNcIildO1xuICAgICAgICBjYXNlIFwiVFNUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25cIjpcbiAgICAgICAgY2FzZSBcIlRTVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRUeXBlUGFyYW1ldGVycyhwYXRoLCBvcHRpb25zLCBwcmludCwgXCJwYXJhbXNcIik7XG4gICAgICAgIGNhc2UgXCJUU1R5cGVQYXJhbWV0ZXJcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRUeXBlUGFyYW1ldGVyKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTQXNFeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwiZXhwcmVzc2lvblwiKSwgXCIgYXMgXCIsIHByaW50KFwidHlwZUFubm90YXRpb25cIikpO1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGlmIChpc0NhbGxFeHByZXNzaW9uKHBhcmVudCkgJiYgcGFyZW50LmNhbGxlZSA9PT0gbm9kZSB8fCBpc01lbWJlckV4cHJlc3Npb24ocGFyZW50KSAmJiBwYXJlbnQub2JqZWN0ID09PSBub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXAoW2luZGVudChbc29mdGxpbmUsIC4uLnBhcnRzXSksIHNvZnRsaW5lXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiVFNBcnJheVR5cGVcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZWxlbWVudFR5cGVcIiksIFwiW11cIl07XG4gICAgICAgIGNhc2UgXCJUU1Byb3BlcnR5U2lnbmF0dXJlXCI6IHtcbiAgICAgICAgICBpZiAobm9kZS5yZWFkb25seSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChwcmludFByb3BlcnR5S2V5KHBhdGgsIG9wdGlvbnMsIHByaW50KSwgcHJpbnRPcHRpb25hbFRva2VuKHBhdGgpKTtcbiAgICAgICAgICBpZiAobm9kZS50eXBlQW5ub3RhdGlvbikge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIjogXCIsIHByaW50KFwidHlwZUFubm90YXRpb25cIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS5pbml0aWFsaXplcikge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIiA9IFwiLCBwcmludChcImluaXRpYWxpemVyXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJUU1BhcmFtZXRlclByb3BlcnR5XCI6XG4gICAgICAgICAgaWYgKG5vZGUuYWNjZXNzaWJpbGl0eSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChub2RlLmFjY2Vzc2liaWxpdHkgKyBcIiBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLmV4cG9ydCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcImV4cG9ydCBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLnN0YXRpYykge1xuICAgICAgICAgICAgcGFydHMucHVzaChcInN0YXRpYyBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLm92ZXJyaWRlKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwib3ZlcnJpZGUgXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS5yZWFkb25seSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChwcmludChcInBhcmFtZXRlclwiKSk7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICBjYXNlIFwiVFNUeXBlUXVlcnlcIjpcbiAgICAgICAgICByZXR1cm4gW1widHlwZW9mIFwiLCBwcmludChcImV4cHJOYW1lXCIpLCBwcmludChcInR5cGVQYXJhbWV0ZXJzXCIpXTtcbiAgICAgICAgY2FzZSBcIlRTSW5kZXhTaWduYXR1cmVcIjoge1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGNvbnN0IHRyYWlsaW5nQ29tbWEgPSBub2RlLnBhcmFtZXRlcnMubGVuZ3RoID4gMSA/IGlmQnJlYWsoc2hvdWxkUHJpbnRDb21tYShvcHRpb25zKSA/IFwiLFwiIDogXCJcIikgOiBcIlwiO1xuICAgICAgICAgIGNvbnN0IHBhcmFtZXRlcnNHcm91cCA9IGdyb3VwKFtpbmRlbnQoW3NvZnRsaW5lLCBqb2luKFtcIiwgXCIsIHNvZnRsaW5lXSwgcGF0aC5tYXAocHJpbnQsIFwicGFyYW1ldGVyc1wiKSldKSwgdHJhaWxpbmdDb21tYSwgc29mdGxpbmVdKTtcbiAgICAgICAgICByZXR1cm4gW25vZGUuZXhwb3J0ID8gXCJleHBvcnQgXCIgOiBcIlwiLCBub2RlLmFjY2Vzc2liaWxpdHkgPyBbbm9kZS5hY2Nlc3NpYmlsaXR5LCBcIiBcIl0gOiBcIlwiLCBub2RlLnN0YXRpYyA/IFwic3RhdGljIFwiIDogXCJcIiwgbm9kZS5yZWFkb25seSA/IFwicmVhZG9ubHkgXCIgOiBcIlwiLCBub2RlLmRlY2xhcmUgPyBcImRlY2xhcmUgXCIgOiBcIlwiLCBcIltcIiwgbm9kZS5wYXJhbWV0ZXJzID8gcGFyYW1ldGVyc0dyb3VwIDogXCJcIiwgbm9kZS50eXBlQW5ub3RhdGlvbiA/IFwiXTogXCIgOiBcIl1cIiwgbm9kZS50eXBlQW5ub3RhdGlvbiA/IHByaW50KFwidHlwZUFubm90YXRpb25cIikgOiBcIlwiLCBwYXJlbnQudHlwZSA9PT0gXCJDbGFzc0JvZHlcIiA/IHNlbWkgOiBcIlwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiVFNUeXBlUHJlZGljYXRlXCI6XG4gICAgICAgICAgcmV0dXJuIFtub2RlLmFzc2VydHMgPyBcImFzc2VydHMgXCIgOiBcIlwiLCBwcmludChcInBhcmFtZXRlck5hbWVcIiksIG5vZGUudHlwZUFubm90YXRpb24gPyBbXCIgaXMgXCIsIHByaW50KFwidHlwZUFubm90YXRpb25cIildIDogXCJcIl07XG4gICAgICAgIGNhc2UgXCJUU05vbk51bGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcImV4cHJlc3Npb25cIiksIFwiIVwiXTtcbiAgICAgICAgY2FzZSBcIlRTSW1wb3J0VHlwZVwiOlxuICAgICAgICAgIHJldHVybiBbIW5vZGUuaXNUeXBlT2YgPyBcIlwiIDogXCJ0eXBlb2YgXCIsIFwiaW1wb3J0KFwiLCBwcmludChub2RlLnBhcmFtZXRlciA/IFwicGFyYW1ldGVyXCIgOiBcImFyZ3VtZW50XCIpLCBcIilcIiwgIW5vZGUucXVhbGlmaWVyID8gXCJcIiA6IFtcIi5cIiwgcHJpbnQoXCJxdWFsaWZpZXJcIildLCBwcmludFR5cGVQYXJhbWV0ZXJzKHBhdGgsIG9wdGlvbnMsIHByaW50LCBcInR5cGVQYXJhbWV0ZXJzXCIpXTtcbiAgICAgICAgY2FzZSBcIlRTTGl0ZXJhbFR5cGVcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnQoXCJsaXRlcmFsXCIpO1xuICAgICAgICBjYXNlIFwiVFNJbmRleGVkQWNjZXNzVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBwcmludEluZGV4ZWRBY2Nlc3NUeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb25cIjpcbiAgICAgICAgY2FzZSBcIlRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJUU0NvbnN0cnVjdG9yVHlwZVwiOiB7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJUU0NvbnN0cnVjdG9yVHlwZVwiICYmIG5vZGUuYWJzdHJhY3QpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiVFNDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb25cIikge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIm5ldyBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAocHJpbnRGdW5jdGlvblBhcmFtZXRlcnMocGF0aCwgcHJpbnQsIG9wdGlvbnMsIGZhbHNlLCB0cnVlKSkpO1xuICAgICAgICAgIGlmIChub2RlLnJldHVyblR5cGUgfHwgbm9kZS50eXBlQW5ub3RhdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaXNUeXBlID0gbm9kZS50eXBlID09PSBcIlRTQ29uc3RydWN0b3JUeXBlXCI7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGlzVHlwZSA/IFwiID0+IFwiIDogXCI6IFwiLCBwcmludChcInJldHVyblR5cGVcIiksIHByaW50KFwidHlwZUFubm90YXRpb25cIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlRTVHlwZU9wZXJhdG9yXCI6XG4gICAgICAgICAgcmV0dXJuIFtub2RlLm9wZXJhdG9yLCBcIiBcIiwgcHJpbnQoXCJ0eXBlQW5ub3RhdGlvblwiKV07XG4gICAgICAgIGNhc2UgXCJUU01hcHBlZFR5cGVcIjoge1xuICAgICAgICAgIGNvbnN0IHNob3VsZEJyZWFrID0gaGFzTmV3bGluZUluUmFuZ2Uob3B0aW9ucy5vcmlnaW5hbFRleHQsIGxvY1N0YXJ0KG5vZGUpLCBsb2NFbmQobm9kZSkpO1xuICAgICAgICAgIHJldHVybiBncm91cChbXCJ7XCIsIGluZGVudChbb3B0aW9ucy5icmFja2V0U3BhY2luZyA/IGxpbmUgOiBzb2Z0bGluZSwgbm9kZS5yZWFkb25seSA/IFtnZXRUeXBlU2NyaXB0TWFwcGVkVHlwZU1vZGlmaWVyKG5vZGUucmVhZG9ubHksIFwicmVhZG9ubHlcIiksIFwiIFwiXSA6IFwiXCIsIHByaW50VHlwZVNjcmlwdE1vZGlmaWVycyhwYXRoLCBvcHRpb25zLCBwcmludCksIHByaW50KFwidHlwZVBhcmFtZXRlclwiKSwgbm9kZS5vcHRpb25hbCA/IGdldFR5cGVTY3JpcHRNYXBwZWRUeXBlTW9kaWZpZXIobm9kZS5vcHRpb25hbCwgXCI/XCIpIDogXCJcIiwgbm9kZS50eXBlQW5ub3RhdGlvbiA/IFwiOiBcIiA6IFwiXCIsIHByaW50KFwidHlwZUFubm90YXRpb25cIiksIGlmQnJlYWsoc2VtaSldKSwgcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUpLCBvcHRpb25zLmJyYWNrZXRTcGFjaW5nID8gbGluZSA6IHNvZnRsaW5lLCBcIn1cIl0sIHtcbiAgICAgICAgICAgIHNob3VsZEJyZWFrXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlRTTWV0aG9kU2lnbmF0dXJlXCI6IHtcbiAgICAgICAgICBjb25zdCBraW5kID0gbm9kZS5raW5kICYmIG5vZGUua2luZCAhPT0gXCJtZXRob2RcIiA/IGAke25vZGUua2luZH0gYCA6IFwiXCI7XG4gICAgICAgICAgcGFydHMucHVzaChub2RlLmFjY2Vzc2liaWxpdHkgPyBbbm9kZS5hY2Nlc3NpYmlsaXR5LCBcIiBcIl0gOiBcIlwiLCBraW5kLCBub2RlLmV4cG9ydCA/IFwiZXhwb3J0IFwiIDogXCJcIiwgbm9kZS5zdGF0aWMgPyBcInN0YXRpYyBcIiA6IFwiXCIsIG5vZGUucmVhZG9ubHkgPyBcInJlYWRvbmx5IFwiIDogXCJcIiwgbm9kZS5hYnN0cmFjdCA/IFwiYWJzdHJhY3QgXCIgOiBcIlwiLCBub2RlLmRlY2xhcmUgPyBcImRlY2xhcmUgXCIgOiBcIlwiLCBub2RlLmNvbXB1dGVkID8gXCJbXCIgOiBcIlwiLCBwcmludChcImtleVwiKSwgbm9kZS5jb21wdXRlZCA/IFwiXVwiIDogXCJcIiwgcHJpbnRPcHRpb25hbFRva2VuKHBhdGgpKTtcbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzRG9jID0gcHJpbnRGdW5jdGlvblBhcmFtZXRlcnMocGF0aCwgcHJpbnQsIG9wdGlvbnMsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICBjb25zdCByZXR1cm5UeXBlUHJvcGVydHlOYW1lID0gbm9kZS5yZXR1cm5UeXBlID8gXCJyZXR1cm5UeXBlXCIgOiBcInR5cGVBbm5vdGF0aW9uXCI7XG4gICAgICAgICAgY29uc3QgcmV0dXJuVHlwZU5vZGUgPSBub2RlW3JldHVyblR5cGVQcm9wZXJ0eU5hbWVdO1xuICAgICAgICAgIGNvbnN0IHJldHVyblR5cGVEb2MgPSByZXR1cm5UeXBlTm9kZSA/IHByaW50KHJldHVyblR5cGVQcm9wZXJ0eU5hbWUpIDogXCJcIjtcbiAgICAgICAgICBjb25zdCBzaG91bGRHcm91cFBhcmFtZXRlcnMgPSBzaG91bGRHcm91cEZ1bmN0aW9uUGFyYW1ldGVycyhub2RlLCByZXR1cm5UeXBlRG9jKTtcbiAgICAgICAgICBwYXJ0cy5wdXNoKHNob3VsZEdyb3VwUGFyYW1ldGVycyA/IGdyb3VwKHBhcmFtZXRlcnNEb2MpIDogcGFyYW1ldGVyc0RvYyk7XG4gICAgICAgICAgaWYgKHJldHVyblR5cGVOb2RlKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiOiBcIiwgZ3JvdXAocmV0dXJuVHlwZURvYykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZ3JvdXAocGFydHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJUU05hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uXCI6XG4gICAgICAgICAgcGFydHMucHVzaChcImV4cG9ydCBhcyBuYW1lc3BhY2UgXCIsIHByaW50KFwiaWRcIikpO1xuICAgICAgICAgIGlmIChvcHRpb25zLnNlbWkpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCI7XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZ3JvdXAocGFydHMpO1xuICAgICAgICBjYXNlIFwiVFNFbnVtRGVjbGFyYXRpb25cIjpcbiAgICAgICAgICBpZiAobm9kZS5kZWNsYXJlKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLm1vZGlmaWVycykge1xuICAgICAgICAgICAgcGFydHMucHVzaChwcmludFR5cGVTY3JpcHRNb2RpZmllcnMocGF0aCwgb3B0aW9ucywgcHJpbnQpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5vZGUuY29uc3QpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJjb25zdCBcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnRzLnB1c2goXCJlbnVtIFwiLCBwcmludChcImlkXCIpLCBcIiBcIik7XG4gICAgICAgICAgaWYgKG5vZGUubWVtYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAoW1wie1wiLCBwcmludERhbmdsaW5nQ29tbWVudHMocGF0aCwgb3B0aW9ucyksIHNvZnRsaW5lLCBcIn1cIl0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChncm91cChbXCJ7XCIsIGluZGVudChbaGFyZGxpbmUsIHByaW50QXJyYXlJdGVtcyhwYXRoLCBvcHRpb25zLCBcIm1lbWJlcnNcIiwgcHJpbnQpLCBzaG91bGRQcmludENvbW1hKG9wdGlvbnMsIFwiZXM1XCIpID8gXCIsXCIgOiBcIlwiXSksIHByaW50RGFuZ2xpbmdDb21tZW50cyhwYXRoLCBvcHRpb25zLCB0cnVlKSwgaGFyZGxpbmUsIFwifVwiXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICAgIGNhc2UgXCJUU0VudW1NZW1iZXJcIjpcbiAgICAgICAgICBpZiAobm9kZS5jb21wdXRlZCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIltcIiwgcHJpbnQoXCJpZFwiKSwgXCJdXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwiaWRcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS5pbml0aWFsaXplcikge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIiA9IFwiLCBwcmludChcImluaXRpYWxpemVyXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICBjYXNlIFwiVFNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvblwiOlxuICAgICAgICAgIGlmIChub2RlLmlzRXhwb3J0KSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiZXhwb3J0IFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChcImltcG9ydCBcIik7XG4gICAgICAgICAgaWYgKG5vZGUuaW1wb3J0S2luZCAmJiBub2RlLmltcG9ydEtpbmQgIT09IFwidmFsdWVcIikge1xuICAgICAgICAgICAgcGFydHMucHVzaChub2RlLmltcG9ydEtpbmQsIFwiIFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChwcmludChcImlkXCIpLCBcIiA9IFwiLCBwcmludChcIm1vZHVsZVJlZmVyZW5jZVwiKSk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2VtaSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIjtcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBncm91cChwYXJ0cyk7XG4gICAgICAgIGNhc2UgXCJUU0V4dGVybmFsTW9kdWxlUmVmZXJlbmNlXCI6XG4gICAgICAgICAgcmV0dXJuIFtcInJlcXVpcmUoXCIsIHByaW50KFwiZXhwcmVzc2lvblwiKSwgXCIpXCJdO1xuICAgICAgICBjYXNlIFwiVFNNb2R1bGVEZWNsYXJhdGlvblwiOiB7XG4gICAgICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICAgICAgY29uc3QgaXNFeHRlcm5hbE1vZHVsZSA9IGlzTGl0ZXJhbChub2RlLmlkKTtcbiAgICAgICAgICBjb25zdCBwYXJlbnRJc0RlY2xhcmF0aW9uID0gcGFyZW50LnR5cGUgPT09IFwiVFNNb2R1bGVEZWNsYXJhdGlvblwiO1xuICAgICAgICAgIGNvbnN0IGJvZHlJc0RlY2xhcmF0aW9uID0gbm9kZS5ib2R5ICYmIG5vZGUuYm9keS50eXBlID09PSBcIlRTTW9kdWxlRGVjbGFyYXRpb25cIjtcbiAgICAgICAgICBpZiAocGFyZW50SXNEZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIi5cIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRlY2xhcmUpIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChcImRlY2xhcmUgXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHMucHVzaChwcmludFR5cGVTY3JpcHRNb2RpZmllcnMocGF0aCwgb3B0aW9ucywgcHJpbnQpKTtcbiAgICAgICAgICAgIGNvbnN0IHRleHRCZXR3ZWVuTm9kZUFuZEl0c0lkID0gb3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2UobG9jU3RhcnQobm9kZSksIGxvY1N0YXJ0KG5vZGUuaWQpKTtcbiAgICAgICAgICAgIGNvbnN0IGlzR2xvYmFsRGVjbGFyYXRpb24gPSBub2RlLmlkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmIG5vZGUuaWQubmFtZSA9PT0gXCJnbG9iYWxcIiAmJiAhL25hbWVzcGFjZXxtb2R1bGUvLnRlc3QodGV4dEJldHdlZW5Ob2RlQW5kSXRzSWQpO1xuICAgICAgICAgICAgaWYgKCFpc0dsb2JhbERlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goaXNFeHRlcm5hbE1vZHVsZSB8fCAvKD86XnxcXHMpbW9kdWxlKD86XFxzfCQpLy50ZXN0KHRleHRCZXR3ZWVuTm9kZUFuZEl0c0lkKSA/IFwibW9kdWxlIFwiIDogXCJuYW1lc3BhY2UgXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwiaWRcIikpO1xuICAgICAgICAgIGlmIChib2R5SXNEZWNsYXJhdGlvbikge1xuICAgICAgICAgICAgcGFydHMucHVzaChwcmludChcImJvZHlcIikpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5ib2R5KSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBncm91cChwcmludChcImJvZHlcIikpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChzZW1pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJUU0NvbmRpdGlvbmFsVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBwcmludFRlcm5hcnkocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiVFNJbmZlclR5cGVcIjpcbiAgICAgICAgICByZXR1cm4gW1wiaW5mZXJcIiwgXCIgXCIsIHByaW50KFwidHlwZVBhcmFtZXRlclwiKV07XG4gICAgICAgIGNhc2UgXCJUU0ludGVyc2VjdGlvblR5cGVcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRJbnRlcnNlY3Rpb25UeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTVW5pb25UeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50VW5pb25UeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTRnVuY3Rpb25UeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50RnVuY3Rpb25UeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTVHVwbGVUeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50VHVwbGVUeXBlKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTVHlwZVJlZmVyZW5jZVwiOlxuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJ0eXBlTmFtZVwiKSwgcHJpbnRUeXBlUGFyYW1ldGVycyhwYXRoLCBvcHRpb25zLCBwcmludCwgXCJ0eXBlUGFyYW1ldGVyc1wiKV07XG4gICAgICAgIGNhc2UgXCJUU1R5cGVBbm5vdGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50KFwidHlwZUFubm90YXRpb25cIik7XG4gICAgICAgIGNhc2UgXCJUU0VtcHR5Qm9keUZ1bmN0aW9uRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludE1ldGhvZEludGVybmFsKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRTSlNEb2NBbGxUeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIFwiKlwiO1xuICAgICAgICBjYXNlIFwiVFNKU0RvY1Vua25vd25UeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIFwiP1wiO1xuICAgICAgICBjYXNlIFwiVFNKU0RvY051bGxhYmxlVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBwcmludEpTRG9jVHlwZShwYXRoLCBwcmludCwgXCI/XCIpO1xuICAgICAgICBjYXNlIFwiVFNKU0RvY05vbk51bGxhYmxlVHlwZVwiOlxuICAgICAgICAgIHJldHVybiBwcmludEpTRG9jVHlwZShwYXRoLCBwcmludCwgXCIhXCIpO1xuICAgICAgICBjYXNlIFwiVFNJbnN0YW50aWF0aW9uRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJleHByZXNzaW9uXCIpLCBwcmludChcInR5cGVQYXJhbWV0ZXJzXCIpXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gVHlwZVNjcmlwdCBub2RlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkobm9kZS50eXBlKX0uYCk7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50VHlwZXNjcmlwdFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29tbWVudCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnQvY29tbWVudC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGhhc05ld2xpbmVcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGpvaW4sXG4gICAgICAgIGhhcmRsaW5lXG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgcmVwbGFjZVRleHRFbmRPZkxpbmVcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBpc0xpbmVDb21tZW50XG4gICAgfSA9IHJlcXVpcmVfdXRpbHM3KCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jKCk7XG4gICAgdmFyIGlzQmxvY2tDb21tZW50ID0gcmVxdWlyZV9pc19ibG9ja19jb21tZW50KCk7XG4gICAgZnVuY3Rpb24gcHJpbnRDb21tZW50KGNvbW1lbnRQYXRoLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBjb21tZW50ID0gY29tbWVudFBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChpc0xpbmVDb21tZW50KGNvbW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShsb2NTdGFydChjb21tZW50KSwgbG9jRW5kKGNvbW1lbnQpKS50cmltRW5kKCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNCbG9ja0NvbW1lbnQoY29tbWVudCkpIHtcbiAgICAgICAgaWYgKGlzSW5kZW50YWJsZUJsb2NrQ29tbWVudChjb21tZW50KSkge1xuICAgICAgICAgIGNvbnN0IHByaW50ZWQgPSBwcmludEluZGVudGFibGVCbG9ja0NvbW1lbnQoY29tbWVudCk7XG4gICAgICAgICAgaWYgKGNvbW1lbnQudHJhaWxpbmcgJiYgIWhhc05ld2xpbmUob3B0aW9ucy5vcmlnaW5hbFRleHQsIGxvY1N0YXJ0KGNvbW1lbnQpLCB7XG4gICAgICAgICAgICBiYWNrd2FyZHM6IHRydWVcbiAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgcmV0dXJuIFtoYXJkbGluZSwgcHJpbnRlZF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwcmludGVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbW1lbnRFbmQgPSBsb2NFbmQoY29tbWVudCk7XG4gICAgICAgIGNvbnN0IGlzSW5zaWRlRmxvd0NvbW1lbnQgPSBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShjb21tZW50RW5kIC0gMywgY29tbWVudEVuZCkgPT09IFwiKi0vXCI7XG4gICAgICAgIHJldHVybiBbXCIvKlwiLCByZXBsYWNlVGV4dEVuZE9mTGluZShjb21tZW50LnZhbHVlKSwgaXNJbnNpZGVGbG93Q29tbWVudCA/IFwiKi0vXCIgOiBcIiovXCJdO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGEgY29tbWVudDogXCIgKyBKU09OLnN0cmluZ2lmeShjb21tZW50KSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSW5kZW50YWJsZUJsb2NrQ29tbWVudChjb21tZW50KSB7XG4gICAgICBjb25zdCBsaW5lcyA9IGAqJHtjb21tZW50LnZhbHVlfSpgLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgcmV0dXJuIGxpbmVzLmxlbmd0aCA+IDEgJiYgbGluZXMuZXZlcnkoKGxpbmUpID0+IGxpbmUudHJpbSgpWzBdID09PSBcIipcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50SW5kZW50YWJsZUJsb2NrQ29tbWVudChjb21tZW50KSB7XG4gICAgICBjb25zdCBsaW5lcyA9IGNvbW1lbnQudmFsdWUuc3BsaXQoXCJcXG5cIik7XG4gICAgICByZXR1cm4gW1wiLypcIiwgam9pbihoYXJkbGluZSwgbGluZXMubWFwKChsaW5lLCBpbmRleCkgPT4gaW5kZXggPT09IDAgPyBsaW5lLnRyaW1FbmQoKSA6IFwiIFwiICsgKGluZGV4IDwgbGluZXMubGVuZ3RoIC0gMSA/IGxpbmUudHJpbSgpIDogbGluZS50cmltU3RhcnQoKSkpKSwgXCIqL1wiXTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRDb21tZW50XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9saXRlcmFsID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludC9saXRlcmFsLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgcHJpbnRTdHJpbmcsXG4gICAgICBwcmludE51bWJlclxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICBmdW5jdGlvbiBwcmludExpdGVyYWwocGF0aCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0Tm9kZSgpO1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIlJlZ0V4cExpdGVyYWxcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRSZWdleChub2RlKTtcbiAgICAgICAgY2FzZSBcIkJpZ0ludExpdGVyYWxcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRCaWdJbnQobm9kZS5iaWdpbnQgfHwgbm9kZS5leHRyYS5yYXcpO1xuICAgICAgICBjYXNlIFwiTnVtZXJpY0xpdGVyYWxcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnROdW1iZXIobm9kZS5leHRyYS5yYXcpO1xuICAgICAgICBjYXNlIFwiU3RyaW5nTGl0ZXJhbFwiOlxuICAgICAgICAgIHJldHVybiBwcmludFN0cmluZyhub2RlLmV4dHJhLnJhdywgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgXCJOdWxsTGl0ZXJhbFwiOlxuICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgY2FzZSBcIkJvb2xlYW5MaXRlcmFsXCI6XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyhub2RlLnZhbHVlKTtcbiAgICAgICAgY2FzZSBcIkRlY2ltYWxMaXRlcmFsXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50TnVtYmVyKG5vZGUudmFsdWUpICsgXCJtXCI7XG4gICAgICAgIGNhc2UgXCJMaXRlcmFsXCI6IHtcbiAgICAgICAgICBpZiAobm9kZS5yZWdleCkge1xuICAgICAgICAgICAgcmV0dXJuIHByaW50UmVnZXgobm9kZS5yZWdleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub2RlLmJpZ2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIHByaW50QmlnSW50KG5vZGUucmF3KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5vZGUuZGVjaW1hbCkge1xuICAgICAgICAgICAgcmV0dXJuIHByaW50TnVtYmVyKG5vZGUuZGVjaW1hbCkgKyBcIm1cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9ID0gbm9kZTtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJpbnROdW1iZXIobm9kZS5yYXcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJpbnRTdHJpbmcobm9kZS5yYXcsIG9wdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEJpZ0ludChyYXcpIHtcbiAgICAgIHJldHVybiByYXcudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRSZWdleCh7XG4gICAgICBwYXR0ZXJuLFxuICAgICAgZmxhZ3NcbiAgICB9KSB7XG4gICAgICBmbGFncyA9IFsuLi5mbGFnc10uc29ydCgpLmpvaW4oXCJcIik7XG4gICAgICByZXR1cm4gYC8ke3BhdHRlcm59LyR7ZmxhZ3N9YDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRMaXRlcmFsXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wcmludGVyX2VzdHJlZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtanMvcHJpbnRlci1lc3RyZWUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBwcmludERhbmdsaW5nQ29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9jb21tZW50cygpO1xuICAgIHZhciB7XG4gICAgICBoYXNOZXdsaW5lXG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lLFxuICAgICAgICBoYXJkbGluZSxcbiAgICAgICAgc29mdGxpbmUsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpbmRlbnRcbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICByZXBsYWNlVGV4dEVuZE9mTGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIGVtYmVkID0gcmVxdWlyZV9lbWJlZCgpO1xuICAgIHZhciBjbGVhbiA9IHJlcXVpcmVfY2xlYW4oKTtcbiAgICB2YXIge1xuICAgICAgaW5zZXJ0UHJhZ21hXG4gICAgfSA9IHJlcXVpcmVfcHJhZ21hKCk7XG4gICAgdmFyIGhhbmRsZUNvbW1lbnRzID0gcmVxdWlyZV9jb21tZW50czIoKTtcbiAgICB2YXIgcGF0aE5lZWRzUGFyZW5zID0gcmVxdWlyZV9uZWVkc19wYXJlbnMoKTtcbiAgICB2YXIgcHJlcHJvY2VzcyA9IHJlcXVpcmVfcHJpbnRfcHJlcHJvY2VzcygpO1xuICAgIHZhciB7XG4gICAgICBoYXNGbG93U2hvcnRoYW5kQW5ub3RhdGlvbkNvbW1lbnQsXG4gICAgICBoYXNDb21tZW50LFxuICAgICAgQ29tbWVudENoZWNrRmxhZ3MsXG4gICAgICBpc1RoZU9ubHlKc3hFbGVtZW50SW5NYXJrZG93bixcbiAgICAgIGlzTGluZUNvbW1lbnQsXG4gICAgICBpc05leHRMaW5lRW1wdHksXG4gICAgICBuZWVkc0hhcmRsaW5lQWZ0ZXJEYW5nbGluZ0NvbW1lbnQsXG4gICAgICByYXdUZXh0LFxuICAgICAgaGFzSWdub3JlQ29tbWVudCxcbiAgICAgIGlzQ2FsbEV4cHJlc3Npb24sXG4gICAgICBpc01lbWJlckV4cHJlc3Npb24sXG4gICAgICBtYXJrZXJGb3JJZldpdGhvdXRCbG9ja0FuZFNhbWVMaW5lQ29tbWVudFxuICAgIH0gPSByZXF1aXJlX3V0aWxzNygpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYygpO1xuICAgIHZhciBpc0Jsb2NrQ29tbWVudCA9IHJlcXVpcmVfaXNfYmxvY2tfY29tbWVudCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludEh0bWxCaW5kaW5nLFxuICAgICAgaXNWdWVFdmVudEJpbmRpbmdFeHByZXNzaW9uXG4gICAgfSA9IHJlcXVpcmVfaHRtbF9iaW5kaW5nKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50QW5ndWxhclxuICAgIH0gPSByZXF1aXJlX2FuZ3VsYXIoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRKc3gsXG4gICAgICBoYXNKc3hJZ25vcmVDb21tZW50XG4gICAgfSA9IHJlcXVpcmVfanN4KCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Rmxvd1xuICAgIH0gPSByZXF1aXJlX2Zsb3coKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRUeXBlc2NyaXB0XG4gICAgfSA9IHJlcXVpcmVfdHlwZXNjcmlwdCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludE9wdGlvbmFsVG9rZW4sXG4gICAgICBwcmludEJpbmRFeHByZXNzaW9uQ2FsbGVlLFxuICAgICAgcHJpbnRUeXBlQW5ub3RhdGlvbixcbiAgICAgIGFkanVzdENsYXVzZSxcbiAgICAgIHByaW50UmVzdFNwcmVhZCxcbiAgICAgIHByaW50RGVmaW5pdGVUb2tlblxuICAgIH0gPSByZXF1aXJlX21pc2MoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRJbXBvcnREZWNsYXJhdGlvbixcbiAgICAgIHByaW50RXhwb3J0RGVjbGFyYXRpb24sXG4gICAgICBwcmludEV4cG9ydEFsbERlY2xhcmF0aW9uLFxuICAgICAgcHJpbnRNb2R1bGVTcGVjaWZpZXJcbiAgICB9ID0gcmVxdWlyZV9tb2R1bGUoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRUZXJuYXJ5XG4gICAgfSA9IHJlcXVpcmVfdGVybmFyeSgpO1xuICAgIHZhciB7XG4gICAgICBwcmludFRlbXBsYXRlTGl0ZXJhbFxuICAgIH0gPSByZXF1aXJlX3RlbXBsYXRlX2xpdGVyYWwoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRBcnJheVxuICAgIH0gPSByZXF1aXJlX2FycmF5NCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludE9iamVjdFxuICAgIH0gPSByZXF1aXJlX29iamVjdCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludENsYXNzLFxuICAgICAgcHJpbnRDbGFzc01ldGhvZCxcbiAgICAgIHByaW50Q2xhc3NQcm9wZXJ0eVxuICAgIH0gPSByZXF1aXJlX2NsYXNzKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50UHJvcGVydHlcbiAgICB9ID0gcmVxdWlyZV9wcm9wZXJ0eSgpO1xuICAgIHZhciB7XG4gICAgICBwcmludEZ1bmN0aW9uLFxuICAgICAgcHJpbnRBcnJvd0Z1bmN0aW9uLFxuICAgICAgcHJpbnRNZXRob2QsXG4gICAgICBwcmludFJldHVyblN0YXRlbWVudCxcbiAgICAgIHByaW50VGhyb3dTdGF0ZW1lbnRcbiAgICB9ID0gcmVxdWlyZV9mdW5jdGlvbigpO1xuICAgIHZhciB7XG4gICAgICBwcmludENhbGxFeHByZXNzaW9uXG4gICAgfSA9IHJlcXVpcmVfY2FsbF9leHByZXNzaW9uKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50VmFyaWFibGVEZWNsYXJhdG9yLFxuICAgICAgcHJpbnRBc3NpZ25tZW50RXhwcmVzc2lvblxuICAgIH0gPSByZXF1aXJlX2Fzc2lnbm1lbnQoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRCaW5hcnlpc2hFeHByZXNzaW9uXG4gICAgfSA9IHJlcXVpcmVfYmluYXJ5aXNoKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50U3dpdGNoQ2FzZUNvbnNlcXVlbnRcbiAgICB9ID0gcmVxdWlyZV9zdGF0ZW1lbnQoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRNZW1iZXJFeHByZXNzaW9uXG4gICAgfSA9IHJlcXVpcmVfbWVtYmVyKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50QmxvY2ssXG4gICAgICBwcmludEJsb2NrQm9keVxuICAgIH0gPSByZXF1aXJlX2Jsb2NrKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q29tbWVudFxuICAgIH0gPSByZXF1aXJlX2NvbW1lbnQoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRMaXRlcmFsXG4gICAgfSA9IHJlcXVpcmVfbGl0ZXJhbCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludERlY29yYXRvcnNcbiAgICB9ID0gcmVxdWlyZV9kZWNvcmF0b3JzKCk7XG4gICAgZnVuY3Rpb24gZ2VuZXJpY1ByaW50KHBhdGgsIG9wdGlvbnMsIHByaW50LCBhcmdzKSB7XG4gICAgICBjb25zdCBwcmludGVkID0gcHJpbnRQYXRoTm9QYXJlbnMocGF0aCwgb3B0aW9ucywgcHJpbnQsIGFyZ3MpO1xuICAgICAgaWYgKCFwcmludGVkKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdHlwZVxuICAgICAgfSA9IG5vZGU7XG4gICAgICBpZiAodHlwZSA9PT0gXCJDbGFzc01ldGhvZFwiIHx8IHR5cGUgPT09IFwiQ2xhc3NQcml2YXRlTWV0aG9kXCIgfHwgdHlwZSA9PT0gXCJDbGFzc1Byb3BlcnR5XCIgfHwgdHlwZSA9PT0gXCJDbGFzc0FjY2Vzc29yUHJvcGVydHlcIiB8fCB0eXBlID09PSBcIlByb3BlcnR5RGVmaW5pdGlvblwiIHx8IHR5cGUgPT09IFwiVFNBYnN0cmFjdFByb3BlcnR5RGVmaW5pdGlvblwiIHx8IHR5cGUgPT09IFwiQ2xhc3NQcml2YXRlUHJvcGVydHlcIiB8fCB0eXBlID09PSBcIk1ldGhvZERlZmluaXRpb25cIiB8fCB0eXBlID09PSBcIlRTQWJzdHJhY3RNZXRob2REZWZpbml0aW9uXCIgfHwgdHlwZSA9PT0gXCJUU0RlY2xhcmVNZXRob2RcIikge1xuICAgICAgICByZXR1cm4gcHJpbnRlZDtcbiAgICAgIH1cbiAgICAgIGxldCBwYXJ0cyA9IFtwcmludGVkXTtcbiAgICAgIGNvbnN0IHByaW50ZWREZWNvcmF0b3JzID0gcHJpbnREZWNvcmF0b3JzKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgIGNvbnN0IGlzQ2xhc3NFeHByZXNzaW9uV2l0aERlY29yYXRvcnMgPSBub2RlLnR5cGUgPT09IFwiQ2xhc3NFeHByZXNzaW9uXCIgJiYgcHJpbnRlZERlY29yYXRvcnM7XG4gICAgICBpZiAocHJpbnRlZERlY29yYXRvcnMpIHtcbiAgICAgICAgcGFydHMgPSBbLi4ucHJpbnRlZERlY29yYXRvcnMsIHByaW50ZWRdO1xuICAgICAgICBpZiAoIWlzQ2xhc3NFeHByZXNzaW9uV2l0aERlY29yYXRvcnMpIHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAocGFydHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBuZWVkc1BhcmVucyA9IHBhdGhOZWVkc1BhcmVucyhwYXRoLCBvcHRpb25zKTtcbiAgICAgIGlmICghbmVlZHNQYXJlbnMpIHtcbiAgICAgICAgaWYgKGFyZ3MgJiYgYXJncy5uZWVkc1NlbWkpIHtcbiAgICAgICAgICBwYXJ0cy51bnNoaWZ0KFwiO1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAxICYmIHBhcnRzWzBdID09PSBwcmludGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgfVxuICAgICAgaWYgKGlzQ2xhc3NFeHByZXNzaW9uV2l0aERlY29yYXRvcnMpIHtcbiAgICAgICAgcGFydHMgPSBbaW5kZW50KFtsaW5lLCAuLi5wYXJ0c10pXTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnVuc2hpZnQoXCIoXCIpO1xuICAgICAgaWYgKGFyZ3MgJiYgYXJncy5uZWVkc1NlbWkpIHtcbiAgICAgICAgcGFydHMudW5zaGlmdChcIjtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaGFzRmxvd1Nob3J0aGFuZEFubm90YXRpb25Db21tZW50KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IFtjb21tZW50XSA9IG5vZGUudHJhaWxpbmdDb21tZW50cztcbiAgICAgICAgcGFydHMucHVzaChcIiAvKlwiLCBjb21tZW50LnZhbHVlLnRyaW1TdGFydCgpLCBcIiovXCIpO1xuICAgICAgICBjb21tZW50LnByaW50ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQ2xhc3NFeHByZXNzaW9uV2l0aERlY29yYXRvcnMpIHtcbiAgICAgICAgcGFydHMucHVzaChsaW5lKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2goXCIpXCIpO1xuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFBhdGhOb1BhcmVucyhwYXRoLCBvcHRpb25zLCBwcmludCwgYXJncykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHNlbWkgPSBvcHRpb25zLnNlbWkgPyBcIjtcIiA6IFwiXCI7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHByaW50ZXIgb2YgW3ByaW50TGl0ZXJhbCwgcHJpbnRIdG1sQmluZGluZywgcHJpbnRBbmd1bGFyLCBwcmludEpzeCwgcHJpbnRGbG93LCBwcmludFR5cGVzY3JpcHRdKSB7XG4gICAgICAgIGNvbnN0IHByaW50ZWQgPSBwcmludGVyKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgaWYgKHR5cGVvZiBwcmludGVkICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCBwYXJ0cyA9IFtdO1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIkpzRXhwcmVzc2lvblJvb3RcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnQoXCJub2RlXCIpO1xuICAgICAgICBjYXNlIFwiSnNvblJvb3RcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwibm9kZVwiKSwgaGFyZGxpbmVdO1xuICAgICAgICBjYXNlIFwiRmlsZVwiOlxuICAgICAgICAgIGlmIChub2RlLnByb2dyYW0gJiYgbm9kZS5wcm9ncmFtLmludGVycHJldGVyKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFtcInByb2dyYW1cIiwgXCJpbnRlcnByZXRlclwiXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwicHJvZ3JhbVwiKSk7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICBjYXNlIFwiUHJvZ3JhbVwiOlxuICAgICAgICAgIHJldHVybiBwcmludEJsb2NrQm9keShwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJFbXB0eVN0YXRlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICBjYXNlIFwiRXhwcmVzc2lvblN0YXRlbWVudFwiOiB7XG4gICAgICAgICAgaWYgKG5vZGUuZGlyZWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gW3ByaW50RGlyZWN0aXZlKG5vZGUuZXhwcmVzc2lvbiwgb3B0aW9ucyksIHNlbWldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0aW9ucy5wYXJzZXIgPT09IFwiX192dWVfZXZlbnRfYmluZGluZ1wiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcIl9fdnVlX3RzX2V2ZW50X2JpbmRpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICBpZiAocGFyZW50LnR5cGUgPT09IFwiUHJvZ3JhbVwiICYmIHBhcmVudC5ib2R5Lmxlbmd0aCA9PT0gMSAmJiBwYXJlbnQuYm9keVswXSA9PT0gbm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZXhwcmVzc2lvblwiKSwgaXNWdWVFdmVudEJpbmRpbmdFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbikgPyBcIjtcIiA6IFwiXCJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkYW5nbGluZ0NvbW1lbnQgPSBwcmludERhbmdsaW5nQ29tbWVudHMocGF0aCwgb3B0aW9ucywgdHJ1ZSwgKHtcbiAgICAgICAgICAgIG1hcmtlclxuICAgICAgICAgIH0pID0+IG1hcmtlciA9PT0gbWFya2VyRm9ySWZXaXRob3V0QmxvY2tBbmRTYW1lTGluZUNvbW1lbnQpO1xuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJleHByZXNzaW9uXCIpLCBpc1RoZU9ubHlKc3hFbGVtZW50SW5NYXJrZG93bihvcHRpb25zLCBwYXRoKSA/IFwiXCIgOiBzZW1pLCBkYW5nbGluZ0NvbW1lbnQgPyBbXCIgXCIsIGRhbmdsaW5nQ29tbWVudF0gOiBcIlwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiUGFyZW50aGVzaXplZEV4cHJlc3Npb25cIjoge1xuICAgICAgICAgIGNvbnN0IHNob3VsZEh1ZyA9ICFoYXNDb21tZW50KG5vZGUuZXhwcmVzc2lvbikgJiYgKG5vZGUuZXhwcmVzc2lvbi50eXBlID09PSBcIk9iamVjdEV4cHJlc3Npb25cIiB8fCBub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gXCJBcnJheUV4cHJlc3Npb25cIik7XG4gICAgICAgICAgaWYgKHNob3VsZEh1Zykge1xuICAgICAgICAgICAgcmV0dXJuIFtcIihcIiwgcHJpbnQoXCJleHByZXNzaW9uXCIpLCBcIilcIl07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBncm91cChbXCIoXCIsIGluZGVudChbc29mdGxpbmUsIHByaW50KFwiZXhwcmVzc2lvblwiKV0pLCBzb2Z0bGluZSwgXCIpXCJdKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiQXNzaWdubWVudEV4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRBc3NpZ25tZW50RXhwcmVzc2lvbihwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJWYXJpYWJsZURlY2xhcmF0b3JcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRWYXJpYWJsZURlY2xhcmF0b3IocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiQmluYXJ5RXhwcmVzc2lvblwiOlxuICAgICAgICBjYXNlIFwiTG9naWNhbEV4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRCaW5hcnlpc2hFeHByZXNzaW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkFzc2lnbm1lbnRQYXR0ZXJuXCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcImxlZnRcIiksIFwiID0gXCIsIHByaW50KFwicmlnaHRcIildO1xuICAgICAgICBjYXNlIFwiT3B0aW9uYWxNZW1iZXJFeHByZXNzaW9uXCI6XG4gICAgICAgIGNhc2UgXCJNZW1iZXJFeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gcHJpbnRNZW1iZXJFeHByZXNzaW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiTWV0YVByb3BlcnR5XCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcIm1ldGFcIiksIFwiLlwiLCBwcmludChcInByb3BlcnR5XCIpXTtcbiAgICAgICAgY2FzZSBcIkJpbmRFeHByZXNzaW9uXCI6XG4gICAgICAgICAgaWYgKG5vZGUub2JqZWN0KSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KFwib2JqZWN0XCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChncm91cChpbmRlbnQoW3NvZnRsaW5lLCBwcmludEJpbmRFeHByZXNzaW9uQ2FsbGVlKHBhdGgsIG9wdGlvbnMsIHByaW50KV0pKSk7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICBjYXNlIFwiSWRlbnRpZmllclwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtub2RlLm5hbWUsIHByaW50T3B0aW9uYWxUb2tlbihwYXRoKSwgcHJpbnREZWZpbml0ZVRva2VuKHBhdGgpLCBwcmludFR5cGVBbm5vdGF0aW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlY4SW50cmluc2ljSWRlbnRpZmllclwiOlxuICAgICAgICAgIHJldHVybiBbXCIlXCIsIG5vZGUubmFtZV07XG4gICAgICAgIGNhc2UgXCJTcHJlYWRFbGVtZW50XCI6XG4gICAgICAgIGNhc2UgXCJTcHJlYWRFbGVtZW50UGF0dGVyblwiOlxuICAgICAgICBjYXNlIFwiU3ByZWFkUHJvcGVydHlcIjpcbiAgICAgICAgY2FzZSBcIlNwcmVhZFByb3BlcnR5UGF0dGVyblwiOlxuICAgICAgICBjYXNlIFwiUmVzdEVsZW1lbnRcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRSZXN0U3ByZWFkKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIjpcbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludEZ1bmN0aW9uKHBhdGgsIHByaW50LCBvcHRpb25zLCBhcmdzKTtcbiAgICAgICAgY2FzZSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50QXJyb3dGdW5jdGlvbihwYXRoLCBvcHRpb25zLCBwcmludCwgYXJncyk7XG4gICAgICAgIGNhc2UgXCJZaWVsZEV4cHJlc3Npb25cIjpcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwieWllbGRcIik7XG4gICAgICAgICAgaWYgKG5vZGUuZGVsZWdhdGUpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCIqXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZS5hcmd1bWVudCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIiBcIiwgcHJpbnQoXCJhcmd1bWVudFwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgY2FzZSBcIkF3YWl0RXhwcmVzc2lvblwiOiB7XG4gICAgICAgICAgcGFydHMucHVzaChcImF3YWl0XCIpO1xuICAgICAgICAgIGlmIChub2RlLmFyZ3VtZW50KSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBwcmludChcImFyZ3VtZW50XCIpKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24ocGFyZW50KSAmJiBwYXJlbnQuY2FsbGVlID09PSBub2RlIHx8IGlzTWVtYmVyRXhwcmVzc2lvbihwYXJlbnQpICYmIHBhcmVudC5vYmplY3QgPT09IG5vZGUpIHtcbiAgICAgICAgICAgICAgcGFydHMgPSBbaW5kZW50KFtzb2Z0bGluZSwgLi4ucGFydHNdKSwgc29mdGxpbmVdO1xuICAgICAgICAgICAgICBjb25zdCBwYXJlbnRBd2FpdE9yQmxvY2sgPSBwYXRoLmZpbmRBbmNlc3Rvcigobm9kZTIpID0+IG5vZGUyLnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIgfHwgbm9kZTIudHlwZSA9PT0gXCJCbG9ja1N0YXRlbWVudFwiKTtcbiAgICAgICAgICAgICAgaWYgKCFwYXJlbnRBd2FpdE9yQmxvY2sgfHwgcGFyZW50QXdhaXRPckJsb2NrLnR5cGUgIT09IFwiQXdhaXRFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXAocGFydHMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50RXhwb3J0RGVjbGFyYXRpb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiRXhwb3J0QWxsRGVjbGFyYXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRFeHBvcnRBbGxEZWNsYXJhdGlvbihwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJJbXBvcnREZWNsYXJhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludEltcG9ydERlY2xhcmF0aW9uKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkltcG9ydFNwZWNpZmllclwiOlxuICAgICAgICBjYXNlIFwiRXhwb3J0U3BlY2lmaWVyXCI6XG4gICAgICAgIGNhc2UgXCJJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXJcIjpcbiAgICAgICAgY2FzZSBcIkV4cG9ydE5hbWVzcGFjZVNwZWNpZmllclwiOlxuICAgICAgICBjYXNlIFwiSW1wb3J0RGVmYXVsdFNwZWNpZmllclwiOlxuICAgICAgICBjYXNlIFwiRXhwb3J0RGVmYXVsdFNwZWNpZmllclwiOlxuICAgICAgICAgIHJldHVybiBwcmludE1vZHVsZVNwZWNpZmllcihwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJJbXBvcnRBdHRyaWJ1dGVcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwia2V5XCIpLCBcIjogXCIsIHByaW50KFwidmFsdWVcIildO1xuICAgICAgICBjYXNlIFwiSW1wb3J0XCI6XG4gICAgICAgICAgcmV0dXJuIFwiaW1wb3J0XCI7XG4gICAgICAgIGNhc2UgXCJCbG9ja1N0YXRlbWVudFwiOlxuICAgICAgICBjYXNlIFwiU3RhdGljQmxvY2tcIjpcbiAgICAgICAgY2FzZSBcIkNsYXNzQm9keVwiOlxuICAgICAgICAgIHJldHVybiBwcmludEJsb2NrKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRocm93U3RhdGVtZW50XCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50VGhyb3dTdGF0ZW1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiUmV0dXJuU3RhdGVtZW50XCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50UmV0dXJuU3RhdGVtZW50KHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIk5ld0V4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIkltcG9ydEV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIk9wdGlvbmFsQ2FsbEV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIkNhbGxFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50Q2FsbEV4cHJlc3Npb24ocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiT2JqZWN0RXhwcmVzc2lvblwiOlxuICAgICAgICBjYXNlIFwiT2JqZWN0UGF0dGVyblwiOlxuICAgICAgICBjYXNlIFwiUmVjb3JkRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludE9iamVjdChwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJPYmplY3RQcm9wZXJ0eVwiOlxuICAgICAgICBjYXNlIFwiUHJvcGVydHlcIjpcbiAgICAgICAgICBpZiAobm9kZS5tZXRob2QgfHwgbm9kZS5raW5kID09PSBcImdldFwiIHx8IG5vZGUua2luZCA9PT0gXCJzZXRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHByaW50TWV0aG9kKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByaW50UHJvcGVydHkocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiT2JqZWN0TWV0aG9kXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50TWV0aG9kKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkRlY29yYXRvclwiOlxuICAgICAgICAgIHJldHVybiBbXCJAXCIsIHByaW50KFwiZXhwcmVzc2lvblwiKV07XG4gICAgICAgIGNhc2UgXCJBcnJheUV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIkFycmF5UGF0dGVyblwiOlxuICAgICAgICBjYXNlIFwiVHVwbGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50QXJyYXkocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiU2VxdWVuY2VFeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoMCk7XG4gICAgICAgICAgaWYgKHBhcmVudC50eXBlID09PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiB8fCBwYXJlbnQudHlwZSA9PT0gXCJGb3JTdGF0ZW1lbnRcIikge1xuICAgICAgICAgICAgY29uc3QgcGFydHMyID0gW107XG4gICAgICAgICAgICBwYXRoLmVhY2goKGV4cHJlc3Npb25QYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICBwYXJ0czIucHVzaChwcmludCgpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJ0czIucHVzaChcIixcIiwgaW5kZW50KFtsaW5lLCBwcmludCgpXSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBcImV4cHJlc3Npb25zXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwKHBhcnRzMik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBncm91cChqb2luKFtcIixcIiwgbGluZV0sIHBhdGgubWFwKHByaW50LCBcImV4cHJlc3Npb25zXCIpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlRoaXNFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFwidGhpc1wiO1xuICAgICAgICBjYXNlIFwiU3VwZXJcIjpcbiAgICAgICAgICByZXR1cm4gXCJzdXBlclwiO1xuICAgICAgICBjYXNlIFwiRGlyZWN0aXZlXCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcInZhbHVlXCIpLCBzZW1pXTtcbiAgICAgICAgY2FzZSBcIkRpcmVjdGl2ZUxpdGVyYWxcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnREaXJlY3RpdmUobm9kZSwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgXCJVbmFyeUV4cHJlc3Npb25cIjpcbiAgICAgICAgICBwYXJ0cy5wdXNoKG5vZGUub3BlcmF0b3IpO1xuICAgICAgICAgIGlmICgvW2Etel0kLy50ZXN0KG5vZGUub3BlcmF0b3IpKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhc0NvbW1lbnQobm9kZS5hcmd1bWVudCkpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAoW1wiKFwiLCBpbmRlbnQoW3NvZnRsaW5lLCBwcmludChcImFyZ3VtZW50XCIpXSksIHNvZnRsaW5lLCBcIilcIl0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChwcmludChcImFyZ3VtZW50XCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICBjYXNlIFwiVXBkYXRlRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJhcmd1bWVudFwiKSwgbm9kZS5vcGVyYXRvcik7XG4gICAgICAgICAgaWYgKG5vZGUucHJlZml4KSB7XG4gICAgICAgICAgICBwYXJ0cy5yZXZlcnNlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgY2FzZSBcIkNvbmRpdGlvbmFsRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludFRlcm5hcnkocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwiVmFyaWFibGVEZWNsYXJhdGlvblwiOiB7XG4gICAgICAgICAgY29uc3QgcHJpbnRlZCA9IHBhdGgubWFwKHByaW50LCBcImRlY2xhcmF0aW9uc1wiKTtcbiAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICAgICAgY29uc3QgaXNQYXJlbnRGb3JMb29wID0gcGFyZW50Tm9kZS50eXBlID09PSBcIkZvclN0YXRlbWVudFwiIHx8IHBhcmVudE5vZGUudHlwZSA9PT0gXCJGb3JJblN0YXRlbWVudFwiIHx8IHBhcmVudE5vZGUudHlwZSA9PT0gXCJGb3JPZlN0YXRlbWVudFwiO1xuICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gbm9kZS5kZWNsYXJhdGlvbnMuc29tZSgoZGVjbCkgPT4gZGVjbC5pbml0KTtcbiAgICAgICAgICBsZXQgZmlyc3RWYXJpYWJsZTtcbiAgICAgICAgICBpZiAocHJpbnRlZC5sZW5ndGggPT09IDEgJiYgIWhhc0NvbW1lbnQobm9kZS5kZWNsYXJhdGlvbnNbMF0pKSB7XG4gICAgICAgICAgICBmaXJzdFZhcmlhYmxlID0gcHJpbnRlZFswXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHByaW50ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZmlyc3RWYXJpYWJsZSA9IGluZGVudChwcmludGVkWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMgPSBbbm9kZS5kZWNsYXJlID8gXCJkZWNsYXJlIFwiIDogXCJcIiwgbm9kZS5raW5kLCBmaXJzdFZhcmlhYmxlID8gW1wiIFwiLCBmaXJzdFZhcmlhYmxlXSA6IFwiXCIsIGluZGVudChwcmludGVkLnNsaWNlKDEpLm1hcCgocCkgPT4gW1wiLFwiLCBoYXNWYWx1ZSAmJiAhaXNQYXJlbnRGb3JMb29wID8gaGFyZGxpbmUgOiBsaW5lLCBwXSkpXTtcbiAgICAgICAgICBpZiAoIShpc1BhcmVudEZvckxvb3AgJiYgcGFyZW50Tm9kZS5ib2R5ICE9PSBub2RlKSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChzZW1pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKHBhcnRzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiV2l0aFN0YXRlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBncm91cChbXCJ3aXRoIChcIiwgcHJpbnQoXCJvYmplY3RcIiksIFwiKVwiLCBhZGp1c3RDbGF1c2Uobm9kZS5ib2R5LCBwcmludChcImJvZHlcIikpXSk7XG4gICAgICAgIGNhc2UgXCJJZlN0YXRlbWVudFwiOiB7XG4gICAgICAgICAgY29uc3QgY29uID0gYWRqdXN0Q2xhdXNlKG5vZGUuY29uc2VxdWVudCwgcHJpbnQoXCJjb25zZXF1ZW50XCIpKTtcbiAgICAgICAgICBjb25zdCBvcGVuaW5nID0gZ3JvdXAoW1wiaWYgKFwiLCBncm91cChbaW5kZW50KFtzb2Z0bGluZSwgcHJpbnQoXCJ0ZXN0XCIpXSksIHNvZnRsaW5lXSksIFwiKVwiLCBjb25dKTtcbiAgICAgICAgICBwYXJ0cy5wdXNoKG9wZW5pbmcpO1xuICAgICAgICAgIGlmIChub2RlLmFsdGVybmF0ZSkge1xuICAgICAgICAgICAgY29uc3QgY29tbWVudE9uT3duTGluZSA9IGhhc0NvbW1lbnQobm9kZS5jb25zZXF1ZW50LCBDb21tZW50Q2hlY2tGbGFncy5UcmFpbGluZyB8IENvbW1lbnRDaGVja0ZsYWdzLkxpbmUpIHx8IG5lZWRzSGFyZGxpbmVBZnRlckRhbmdsaW5nQ29tbWVudChub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGVsc2VPblNhbWVMaW5lID0gbm9kZS5jb25zZXF1ZW50LnR5cGUgPT09IFwiQmxvY2tTdGF0ZW1lbnRcIiAmJiAhY29tbWVudE9uT3duTGluZTtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZWxzZU9uU2FtZUxpbmUgPyBcIiBcIiA6IGhhcmRsaW5lKTtcbiAgICAgICAgICAgIGlmIChoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkRhbmdsaW5nKSkge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50RGFuZ2xpbmdDb21tZW50cyhwYXRoLCBvcHRpb25zLCB0cnVlKSwgY29tbWVudE9uT3duTGluZSA/IGhhcmRsaW5lIDogXCIgXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHMucHVzaChcImVsc2VcIiwgZ3JvdXAoYWRqdXN0Q2xhdXNlKG5vZGUuYWx0ZXJuYXRlLCBwcmludChcImFsdGVybmF0ZVwiKSwgbm9kZS5hbHRlcm5hdGUudHlwZSA9PT0gXCJJZlN0YXRlbWVudFwiKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkZvclN0YXRlbWVudFwiOiB7XG4gICAgICAgICAgY29uc3QgYm9keSA9IGFkanVzdENsYXVzZShub2RlLmJvZHksIHByaW50KFwiYm9keVwiKSk7XG4gICAgICAgICAgY29uc3QgZGFuZ2xpbmcgPSBwcmludERhbmdsaW5nQ29tbWVudHMocGF0aCwgb3B0aW9ucywgdHJ1ZSk7XG4gICAgICAgICAgY29uc3QgcHJpbnRlZENvbW1lbnRzID0gZGFuZ2xpbmcgPyBbZGFuZ2xpbmcsIHNvZnRsaW5lXSA6IFwiXCI7XG4gICAgICAgICAgaWYgKCFub2RlLmluaXQgJiYgIW5vZGUudGVzdCAmJiAhbm9kZS51cGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBbcHJpbnRlZENvbW1lbnRzLCBncm91cChbXCJmb3IgKDs7KVwiLCBib2R5XSldO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW3ByaW50ZWRDb21tZW50cywgZ3JvdXAoW1wiZm9yIChcIiwgZ3JvdXAoW2luZGVudChbc29mdGxpbmUsIHByaW50KFwiaW5pdFwiKSwgXCI7XCIsIGxpbmUsIHByaW50KFwidGVzdFwiKSwgXCI7XCIsIGxpbmUsIHByaW50KFwidXBkYXRlXCIpXSksIHNvZnRsaW5lXSksIFwiKVwiLCBib2R5XSldO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJXaGlsZVN0YXRlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBncm91cChbXCJ3aGlsZSAoXCIsIGdyb3VwKFtpbmRlbnQoW3NvZnRsaW5lLCBwcmludChcInRlc3RcIildKSwgc29mdGxpbmVdKSwgXCIpXCIsIGFkanVzdENsYXVzZShub2RlLmJvZHksIHByaW50KFwiYm9keVwiKSldKTtcbiAgICAgICAgY2FzZSBcIkZvckluU3RhdGVtZW50XCI6XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKFtcImZvciAoXCIsIHByaW50KFwibGVmdFwiKSwgXCIgaW4gXCIsIHByaW50KFwicmlnaHRcIiksIFwiKVwiLCBhZGp1c3RDbGF1c2Uobm9kZS5ib2R5LCBwcmludChcImJvZHlcIikpXSk7XG4gICAgICAgIGNhc2UgXCJGb3JPZlN0YXRlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBncm91cChbXCJmb3JcIiwgbm9kZS5hd2FpdCA/IFwiIGF3YWl0XCIgOiBcIlwiLCBcIiAoXCIsIHByaW50KFwibGVmdFwiKSwgXCIgb2YgXCIsIHByaW50KFwicmlnaHRcIiksIFwiKVwiLCBhZGp1c3RDbGF1c2Uobm9kZS5ib2R5LCBwcmludChcImJvZHlcIikpXSk7XG4gICAgICAgIGNhc2UgXCJEb1doaWxlU3RhdGVtZW50XCI6IHtcbiAgICAgICAgICBjb25zdCBjbGF1c2UgPSBhZGp1c3RDbGF1c2Uobm9kZS5ib2R5LCBwcmludChcImJvZHlcIikpO1xuICAgICAgICAgIGNvbnN0IGRvQm9keSA9IGdyb3VwKFtcImRvXCIsIGNsYXVzZV0pO1xuICAgICAgICAgIHBhcnRzID0gW2RvQm9keV07XG4gICAgICAgICAgaWYgKG5vZGUuYm9keS50eXBlID09PSBcIkJsb2NrU3RhdGVtZW50XCIpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCIgXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChcIndoaWxlIChcIiwgZ3JvdXAoW2luZGVudChbc29mdGxpbmUsIHByaW50KFwidGVzdFwiKV0pLCBzb2Z0bGluZV0pLCBcIilcIiwgc2VtaSk7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJEb0V4cHJlc3Npb25cIjpcbiAgICAgICAgICByZXR1cm4gW25vZGUuYXN5bmMgPyBcImFzeW5jIFwiIDogXCJcIiwgXCJkbyBcIiwgcHJpbnQoXCJib2R5XCIpXTtcbiAgICAgICAgY2FzZSBcIkJyZWFrU3RhdGVtZW50XCI6XG4gICAgICAgICAgcGFydHMucHVzaChcImJyZWFrXCIpO1xuICAgICAgICAgIGlmIChub2RlLmxhYmVsKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBwcmludChcImxhYmVsXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChzZW1pKTtcbiAgICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICAgIGNhc2UgXCJDb250aW51ZVN0YXRlbWVudFwiOlxuICAgICAgICAgIHBhcnRzLnB1c2goXCJjb250aW51ZVwiKTtcbiAgICAgICAgICBpZiAobm9kZS5sYWJlbCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIiBcIiwgcHJpbnQoXCJsYWJlbFwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnRzLnB1c2goc2VtaSk7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICBjYXNlIFwiTGFiZWxlZFN0YXRlbWVudFwiOlxuICAgICAgICAgIGlmIChub2RlLmJvZHkudHlwZSA9PT0gXCJFbXB0eVN0YXRlbWVudFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW3ByaW50KFwibGFiZWxcIiksIFwiOjtcIl07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJsYWJlbFwiKSwgXCI6IFwiLCBwcmludChcImJvZHlcIildO1xuICAgICAgICBjYXNlIFwiVHJ5U3RhdGVtZW50XCI6XG4gICAgICAgICAgcmV0dXJuIFtcInRyeSBcIiwgcHJpbnQoXCJibG9ja1wiKSwgbm9kZS5oYW5kbGVyID8gW1wiIFwiLCBwcmludChcImhhbmRsZXJcIildIDogXCJcIiwgbm9kZS5maW5hbGl6ZXIgPyBbXCIgZmluYWxseSBcIiwgcHJpbnQoXCJmaW5hbGl6ZXJcIildIDogXCJcIl07XG4gICAgICAgIGNhc2UgXCJDYXRjaENsYXVzZVwiOlxuICAgICAgICAgIGlmIChub2RlLnBhcmFtKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJIYXNDb21tZW50cyA9IGhhc0NvbW1lbnQobm9kZS5wYXJhbSwgKGNvbW1lbnQpID0+ICFpc0Jsb2NrQ29tbWVudChjb21tZW50KSB8fCBjb21tZW50LmxlYWRpbmcgJiYgaGFzTmV3bGluZShvcHRpb25zLm9yaWdpbmFsVGV4dCwgbG9jRW5kKGNvbW1lbnQpKSB8fCBjb21tZW50LnRyYWlsaW5nICYmIGhhc05ld2xpbmUob3B0aW9ucy5vcmlnaW5hbFRleHQsIGxvY1N0YXJ0KGNvbW1lbnQpLCB7XG4gICAgICAgICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBwcmludChcInBhcmFtXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFtcImNhdGNoIFwiLCBwYXJhbWV0ZXJIYXNDb21tZW50cyA/IFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgcGFyYW1dKSwgc29mdGxpbmUsIFwiKSBcIl0gOiBbXCIoXCIsIHBhcmFtLCBcIikgXCJdLCBwcmludChcImJvZHlcIildO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW1wiY2F0Y2ggXCIsIHByaW50KFwiYm9keVwiKV07XG4gICAgICAgIGNhc2UgXCJTd2l0Y2hTdGF0ZW1lbnRcIjpcbiAgICAgICAgICByZXR1cm4gW2dyb3VwKFtcInN3aXRjaCAoXCIsIGluZGVudChbc29mdGxpbmUsIHByaW50KFwiZGlzY3JpbWluYW50XCIpXSksIHNvZnRsaW5lLCBcIilcIl0pLCBcIiB7XCIsIG5vZGUuY2FzZXMubGVuZ3RoID4gMCA/IGluZGVudChbaGFyZGxpbmUsIGpvaW4oaGFyZGxpbmUsIHBhdGgubWFwKChjYXNlUGF0aCwgaW5kZXgsIGNhc2VzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYXNlTm9kZSA9IGNhc2VQYXRoLmdldFZhbHVlKCk7XG4gICAgICAgICAgICByZXR1cm4gW3ByaW50KCksIGluZGV4ICE9PSBjYXNlcy5sZW5ndGggLSAxICYmIGlzTmV4dExpbmVFbXB0eShjYXNlTm9kZSwgb3B0aW9ucykgPyBoYXJkbGluZSA6IFwiXCJdO1xuICAgICAgICAgIH0sIFwiY2FzZXNcIikpXSkgOiBcIlwiLCBoYXJkbGluZSwgXCJ9XCJdO1xuICAgICAgICBjYXNlIFwiU3dpdGNoQ2FzZVwiOiB7XG4gICAgICAgICAgaWYgKG5vZGUudGVzdCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcImNhc2UgXCIsIHByaW50KFwidGVzdFwiKSwgXCI6XCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiZGVmYXVsdDpcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYXNDb21tZW50KG5vZGUsIENvbW1lbnRDaGVja0ZsYWdzLkRhbmdsaW5nKSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIiBcIiwgcHJpbnREYW5nbGluZ0NvbW1lbnRzKHBhdGgsIG9wdGlvbnMsIHRydWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY29uc2VxdWVudCA9IG5vZGUuY29uc2VxdWVudC5maWx0ZXIoKG5vZGUyKSA9PiBub2RlMi50eXBlICE9PSBcIkVtcHR5U3RhdGVtZW50XCIpO1xuICAgICAgICAgIGlmIChjb25zZXF1ZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnMgPSBwcmludFN3aXRjaENhc2VDb25zZXF1ZW50KHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goY29uc2VxdWVudC5sZW5ndGggPT09IDEgJiYgY29uc2VxdWVudFswXS50eXBlID09PSBcIkJsb2NrU3RhdGVtZW50XCIgPyBbXCIgXCIsIGNvbnNdIDogaW5kZW50KFtoYXJkbGluZSwgY29uc10pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJEZWJ1Z2dlclN0YXRlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBbXCJkZWJ1Z2dlclwiLCBzZW1pXTtcbiAgICAgICAgY2FzZSBcIkNsYXNzRGVjbGFyYXRpb25cIjpcbiAgICAgICAgY2FzZSBcIkNsYXNzRXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBwcmludENsYXNzKHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIkNsYXNzTWV0aG9kXCI6XG4gICAgICAgIGNhc2UgXCJDbGFzc1ByaXZhdGVNZXRob2RcIjpcbiAgICAgICAgY2FzZSBcIk1ldGhvZERlZmluaXRpb25cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRDbGFzc01ldGhvZChwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJDbGFzc1Byb3BlcnR5XCI6XG4gICAgICAgIGNhc2UgXCJQcm9wZXJ0eURlZmluaXRpb25cIjpcbiAgICAgICAgY2FzZSBcIkNsYXNzUHJpdmF0ZVByb3BlcnR5XCI6XG4gICAgICAgIGNhc2UgXCJDbGFzc0FjY2Vzc29yUHJvcGVydHlcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRDbGFzc1Byb3BlcnR5KHBhdGgsIG9wdGlvbnMsIHByaW50KTtcbiAgICAgICAgY2FzZSBcIlRlbXBsYXRlRWxlbWVudFwiOlxuICAgICAgICAgIHJldHVybiByZXBsYWNlVGV4dEVuZE9mTGluZShub2RlLnZhbHVlLnJhdyk7XG4gICAgICAgIGNhc2UgXCJUZW1wbGF0ZUxpdGVyYWxcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRUZW1wbGF0ZUxpdGVyYWwocGF0aCwgcHJpbnQsIG9wdGlvbnMpO1xuICAgICAgICBjYXNlIFwiVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcInRhZ1wiKSwgcHJpbnQoXCJ0eXBlUGFyYW1ldGVyc1wiKSwgcHJpbnQoXCJxdWFzaVwiKV07XG4gICAgICAgIGNhc2UgXCJQcml2YXRlSWRlbnRpZmllclwiOlxuICAgICAgICAgIHJldHVybiBbXCIjXCIsIHByaW50KFwibmFtZVwiKV07XG4gICAgICAgIGNhc2UgXCJQcml2YXRlTmFtZVwiOlxuICAgICAgICAgIHJldHVybiBbXCIjXCIsIHByaW50KFwiaWRcIildO1xuICAgICAgICBjYXNlIFwiSW50ZXJwcmV0ZXJEaXJlY3RpdmVcIjpcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwiIyFcIiwgbm9kZS52YWx1ZSwgaGFyZGxpbmUpO1xuICAgICAgICAgIGlmIChpc05leHRMaW5lRW1wdHkobm9kZSwgb3B0aW9ucykpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goaGFyZGxpbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICAgIGNhc2UgXCJUb3BpY1JlZmVyZW5jZVwiOlxuICAgICAgICAgIHJldHVybiBcIiVcIjtcbiAgICAgICAgY2FzZSBcIkFyZ3VtZW50UGxhY2Vob2xkZXJcIjpcbiAgICAgICAgICByZXR1cm4gXCI/XCI7XG4gICAgICAgIGNhc2UgXCJNb2R1bGVFeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwibW9kdWxlIHtcIik7XG4gICAgICAgICAgY29uc3QgcHJpbnRlZCA9IHByaW50KFwiYm9keVwiKTtcbiAgICAgICAgICBpZiAocHJpbnRlZCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChpbmRlbnQoW2hhcmRsaW5lLCBwcmludGVkXSksIGhhcmRsaW5lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMucHVzaChcIn1cIik7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIEpTT04uc3RyaW5naWZ5KG5vZGUudHlwZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludERpcmVjdGl2ZShub2RlLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCByYXcgPSByYXdUZXh0KG5vZGUpO1xuICAgICAgY29uc3QgcmF3Q29udGVudCA9IHJhdy5zbGljZSgxLCAtMSk7XG4gICAgICBpZiAocmF3Q29udGVudC5pbmNsdWRlcygnXCInKSB8fCByYXdDb250ZW50LmluY2x1ZGVzKFwiJ1wiKSkge1xuICAgICAgICByZXR1cm4gcmF3O1xuICAgICAgfVxuICAgICAgY29uc3QgZW5jbG9zaW5nUXVvdGUgPSBvcHRpb25zLnNpbmdsZVF1b3RlID8gXCInXCIgOiAnXCInO1xuICAgICAgcmV0dXJuIGVuY2xvc2luZ1F1b3RlICsgcmF3Q29udGVudCArIGVuY2xvc2luZ1F1b3RlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjYW5BdHRhY2hDb21tZW50KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgJiYgIWlzQmxvY2tDb21tZW50KG5vZGUpICYmICFpc0xpbmVDb21tZW50KG5vZGUpICYmIG5vZGUudHlwZSAhPT0gXCJFbXB0eVN0YXRlbWVudFwiICYmIG5vZGUudHlwZSAhPT0gXCJUZW1wbGF0ZUVsZW1lbnRcIiAmJiBub2RlLnR5cGUgIT09IFwiSW1wb3J0XCIgJiYgbm9kZS50eXBlICE9PSBcIlRTRW1wdHlCb2R5RnVuY3Rpb25FeHByZXNzaW9uXCI7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByZXByb2Nlc3MsXG4gICAgICBwcmludDogZ2VuZXJpY1ByaW50LFxuICAgICAgZW1iZWQsXG4gICAgICBpbnNlcnRQcmFnbWEsXG4gICAgICBtYXNzYWdlQXN0Tm9kZTogY2xlYW4sXG4gICAgICBoYXNQcmV0dGllcklnbm9yZShwYXRoKSB7XG4gICAgICAgIHJldHVybiBoYXNJZ25vcmVDb21tZW50KHBhdGgpIHx8IGhhc0pzeElnbm9yZUNvbW1lbnQocGF0aCk7XG4gICAgICB9LFxuICAgICAgd2lsbFByaW50T3duQ29tbWVudHM6IGhhbmRsZUNvbW1lbnRzLndpbGxQcmludE93bkNvbW1lbnRzLFxuICAgICAgY2FuQXR0YWNoQ29tbWVudCxcbiAgICAgIHByaW50Q29tbWVudCxcbiAgICAgIGlzQmxvY2tDb21tZW50LFxuICAgICAgaGFuZGxlQ29tbWVudHM6IHtcbiAgICAgICAgYXZvaWRBc3RNdXRhdGlvbjogdHJ1ZSxcbiAgICAgICAgb3duTGluZTogaGFuZGxlQ29tbWVudHMuaGFuZGxlT3duTGluZUNvbW1lbnQsXG4gICAgICAgIGVuZE9mTGluZTogaGFuZGxlQ29tbWVudHMuaGFuZGxlRW5kT2ZMaW5lQ29tbWVudCxcbiAgICAgICAgcmVtYWluaW5nOiBoYW5kbGVDb21tZW50cy5oYW5kbGVSZW1haW5pbmdDb21tZW50XG4gICAgICB9LFxuICAgICAgZ2V0Q29tbWVudENoaWxkTm9kZXM6IGhhbmRsZUNvbW1lbnRzLmdldENvbW1lbnRDaGlsZE5vZGVzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wcmludGVyX2VzdHJlZV9qc29uID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wcmludGVyLWVzdHJlZS1qc29uLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgam9pblxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHByZXByb2Nlc3MgPSByZXF1aXJlX3ByaW50X3ByZXByb2Nlc3MoKTtcbiAgICBmdW5jdGlvbiBnZW5lcmljUHJpbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiSnNvblJvb3RcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwibm9kZVwiKSwgaGFyZGxpbmVdO1xuICAgICAgICBjYXNlIFwiQXJyYXlFeHByZXNzaW9uXCI6IHtcbiAgICAgICAgICBpZiAobm9kZS5lbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIltdXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHByaW50ZWQgPSBwYXRoLm1hcCgoKSA9PiBwYXRoLmdldFZhbHVlKCkgPT09IG51bGwgPyBcIm51bGxcIiA6IHByaW50KCksIFwiZWxlbWVudHNcIik7XG4gICAgICAgICAgcmV0dXJuIFtcIltcIiwgaW5kZW50KFtoYXJkbGluZSwgam9pbihbXCIsXCIsIGhhcmRsaW5lXSwgcHJpbnRlZCldKSwgaGFyZGxpbmUsIFwiXVwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiT2JqZWN0RXhwcmVzc2lvblwiOlxuICAgICAgICAgIHJldHVybiBub2RlLnByb3BlcnRpZXMubGVuZ3RoID09PSAwID8gXCJ7fVwiIDogW1wie1wiLCBpbmRlbnQoW2hhcmRsaW5lLCBqb2luKFtcIixcIiwgaGFyZGxpbmVdLCBwYXRoLm1hcChwcmludCwgXCJwcm9wZXJ0aWVzXCIpKV0pLCBoYXJkbGluZSwgXCJ9XCJdO1xuICAgICAgICBjYXNlIFwiT2JqZWN0UHJvcGVydHlcIjpcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwia2V5XCIpLCBcIjogXCIsIHByaW50KFwidmFsdWVcIildO1xuICAgICAgICBjYXNlIFwiVW5hcnlFeHByZXNzaW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFtub2RlLm9wZXJhdG9yID09PSBcIitcIiA/IFwiXCIgOiBub2RlLm9wZXJhdG9yLCBwcmludChcImFyZ3VtZW50XCIpXTtcbiAgICAgICAgY2FzZSBcIk51bGxMaXRlcmFsXCI6XG4gICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICBjYXNlIFwiQm9vbGVhbkxpdGVyYWxcIjpcbiAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xuICAgICAgICBjYXNlIFwiU3RyaW5nTGl0ZXJhbFwiOlxuICAgICAgICBjYXNlIFwiTnVtZXJpY0xpdGVyYWxcIjpcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobm9kZS52YWx1ZSk7XG4gICAgICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6IHtcbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC50eXBlID09PSBcIk9iamVjdFByb3BlcnR5XCIgJiYgcGFyZW50LmtleSA9PT0gbm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG5vZGUubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBub2RlLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlRlbXBsYXRlTGl0ZXJhbFwiOlxuICAgICAgICAgIHJldHVybiBwcmludChbXCJxdWFzaXNcIiwgMF0pO1xuICAgICAgICBjYXNlIFwiVGVtcGxhdGVFbGVtZW50XCI6XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG5vZGUudmFsdWUuY29va2VkKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgSlNPTi5zdHJpbmdpZnkobm9kZS50eXBlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBpZ25vcmVkUHJvcGVydGllcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcInN0YXJ0XCIsIFwiZW5kXCIsIFwiZXh0cmFcIiwgXCJsb2NcIiwgXCJjb21tZW50c1wiLCBcImxlYWRpbmdDb21tZW50c1wiLCBcInRyYWlsaW5nQ29tbWVudHNcIiwgXCJpbm5lckNvbW1lbnRzXCIsIFwiZXJyb3JzXCIsIFwicmFuZ2VcIiwgXCJ0b2tlbnNcIl0pO1xuICAgIGZ1bmN0aW9uIGNsZWFuKG5vZGUsIG5ld05vZGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdHlwZVxuICAgICAgfSA9IG5vZGU7XG4gICAgICBpZiAodHlwZSA9PT0gXCJPYmplY3RQcm9wZXJ0eVwiICYmIG5vZGUua2V5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XG4gICAgICAgIG5ld05vZGUua2V5ID0ge1xuICAgICAgICAgIHR5cGU6IFwiU3RyaW5nTGl0ZXJhbFwiLFxuICAgICAgICAgIHZhbHVlOiBub2RlLmtleS5uYW1lXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBcIlVuYXJ5RXhwcmVzc2lvblwiICYmIG5vZGUub3BlcmF0b3IgPT09IFwiK1wiKSB7XG4gICAgICAgIHJldHVybiBuZXdOb2RlLmFyZ3VtZW50O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IFwiQXJyYXlFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIGVsZW1lbnRdIG9mIG5vZGUuZWxlbWVudHMuZW50cmllcygpKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG5ld05vZGUuZWxlbWVudHMuc3BsaWNlKGluZGV4LCAwLCB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiTnVsbExpdGVyYWxcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJTdHJpbmdMaXRlcmFsXCIsXG4gICAgICAgICAgdmFsdWU6IG5vZGUucXVhc2lzWzBdLnZhbHVlLmNvb2tlZFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBjbGVhbi5pZ25vcmVkUHJvcGVydGllcyA9IGlnbm9yZWRQcm9wZXJ0aWVzO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByZXByb2Nlc3MsXG4gICAgICBwcmludDogZ2VuZXJpY1ByaW50LFxuICAgICAgbWFzc2FnZUFzdE5vZGU6IGNsZWFuXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jb21tb25fb3B0aW9ucyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvY29tbW9uL2NvbW1vbi1vcHRpb25zLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgQ0FURUdPUllfQ09NTU9OID0gXCJDb21tb25cIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBicmFja2V0U3BhY2luZzoge1xuICAgICAgICBzaW5jZTogXCIwLjAuMFwiLFxuICAgICAgICBjYXRlZ29yeTogQ0FURUdPUllfQ09NTU9OLFxuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgc3BhY2VzIGJldHdlZW4gYnJhY2tldHMuXCIsXG4gICAgICAgIG9wcG9zaXRlRGVzY3JpcHRpb246IFwiRG8gbm90IHByaW50IHNwYWNlcyBiZXR3ZWVuIGJyYWNrZXRzLlwiXG4gICAgICB9LFxuICAgICAgc2luZ2xlUXVvdGU6IHtcbiAgICAgICAgc2luY2U6IFwiMC4wLjBcIixcbiAgICAgICAgY2F0ZWdvcnk6IENBVEVHT1JZX0NPTU1PTixcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJVc2Ugc2luZ2xlIHF1b3RlcyBpbnN0ZWFkIG9mIGRvdWJsZSBxdW90ZXMuXCJcbiAgICAgIH0sXG4gICAgICBwcm9zZVdyYXA6IHtcbiAgICAgICAgc2luY2U6IFwiMS44LjJcIixcbiAgICAgICAgY2F0ZWdvcnk6IENBVEVHT1JZX0NPTU1PTixcbiAgICAgICAgdHlwZTogXCJjaG9pY2VcIixcbiAgICAgICAgZGVmYXVsdDogW3tcbiAgICAgICAgICBzaW5jZTogXCIxLjguMlwiLFxuICAgICAgICAgIHZhbHVlOiB0cnVlXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzaW5jZTogXCIxLjkuMFwiLFxuICAgICAgICAgIHZhbHVlOiBcInByZXNlcnZlXCJcbiAgICAgICAgfV0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkhvdyB0byB3cmFwIHByb3NlLlwiLFxuICAgICAgICBjaG9pY2VzOiBbe1xuICAgICAgICAgIHNpbmNlOiBcIjEuOS4wXCIsXG4gICAgICAgICAgdmFsdWU6IFwiYWx3YXlzXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiV3JhcCBwcm9zZSBpZiBpdCBleGNlZWRzIHRoZSBwcmludCB3aWR0aC5cIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgc2luY2U6IFwiMS45LjBcIixcbiAgICAgICAgICB2YWx1ZTogXCJuZXZlclwiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkRvIG5vdCB3cmFwIHByb3NlLlwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzaW5jZTogXCIxLjkuMFwiLFxuICAgICAgICAgIHZhbHVlOiBcInByZXNlcnZlXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiV3JhcCBwcm9zZSBhcy1pcy5cIlxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIGJyYWNrZXRTYW1lTGluZToge1xuICAgICAgICBzaW5jZTogXCIyLjQuMFwiLFxuICAgICAgICBjYXRlZ29yeTogQ0FURUdPUllfQ09NTU9OLFxuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlB1dCA+IG9mIG9wZW5pbmcgdGFncyBvbiB0aGUgbGFzdCBsaW5lIGluc3RlYWQgb2Ygb24gYSBuZXcgbGluZS5cIlxuICAgICAgfSxcbiAgICAgIHNpbmdsZUF0dHJpYnV0ZVBlckxpbmU6IHtcbiAgICAgICAgc2luY2U6IFwiMi42LjBcIixcbiAgICAgICAgY2F0ZWdvcnk6IENBVEVHT1JZX0NPTU1PTixcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmZvcmNlIHNpbmdsZSBhdHRyaWJ1dGUgcGVyIGxpbmUgaW4gSFRNTCwgVnVlIGFuZCBKU1guXCJcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX29wdGlvbnMyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9vcHRpb25zLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgY29tbW9uT3B0aW9ucyA9IHJlcXVpcmVfY29tbW9uX29wdGlvbnMoKTtcbiAgICB2YXIgQ0FURUdPUllfSkFWQVNDUklQVCA9IFwiSmF2YVNjcmlwdFwiO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGFycm93UGFyZW5zOiB7XG4gICAgICAgIHNpbmNlOiBcIjEuOS4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9KQVZBU0NSSVBULFxuICAgICAgICB0eXBlOiBcImNob2ljZVwiLFxuICAgICAgICBkZWZhdWx0OiBbe1xuICAgICAgICAgIHNpbmNlOiBcIjEuOS4wXCIsXG4gICAgICAgICAgdmFsdWU6IFwiYXZvaWRcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgc2luY2U6IFwiMi4wLjBcIixcbiAgICAgICAgICB2YWx1ZTogXCJhbHdheXNcIlxuICAgICAgICB9XSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSBwYXJlbnRoZXNlcyBhcm91bmQgYSBzb2xlIGFycm93IGZ1bmN0aW9uIHBhcmFtZXRlci5cIixcbiAgICAgICAgY2hvaWNlczogW3tcbiAgICAgICAgICB2YWx1ZTogXCJhbHdheXNcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBbHdheXMgaW5jbHVkZSBwYXJlbnMuIEV4YW1wbGU6IGAoeCkgPT4geGBcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsdWU6IFwiYXZvaWRcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPbWl0IHBhcmVucyB3aGVuIHBvc3NpYmxlLiBFeGFtcGxlOiBgeCA9PiB4YFwiXG4gICAgICAgIH1dXG4gICAgICB9LFxuICAgICAgYnJhY2tldFNhbWVMaW5lOiBjb21tb25PcHRpb25zLmJyYWNrZXRTYW1lTGluZSxcbiAgICAgIGJyYWNrZXRTcGFjaW5nOiBjb21tb25PcHRpb25zLmJyYWNrZXRTcGFjaW5nLFxuICAgICAganN4QnJhY2tldFNhbWVMaW5lOiB7XG4gICAgICAgIHNpbmNlOiBcIjAuMTcuMFwiLFxuICAgICAgICBjYXRlZ29yeTogQ0FURUdPUllfSkFWQVNDUklQVCxcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlB1dCA+IG9uIHRoZSBsYXN0IGxpbmUgaW5zdGVhZCBvZiBhdCBhIG5ldyBsaW5lLlwiLFxuICAgICAgICBkZXByZWNhdGVkOiBcIjIuNC4wXCJcbiAgICAgIH0sXG4gICAgICBzZW1pOiB7XG4gICAgICAgIHNpbmNlOiBcIjEuMC4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9KQVZBU0NSSVBULFxuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgc2VtaWNvbG9ucy5cIixcbiAgICAgICAgb3Bwb3NpdGVEZXNjcmlwdGlvbjogXCJEbyBub3QgcHJpbnQgc2VtaWNvbG9ucywgZXhjZXB0IGF0IHRoZSBiZWdpbm5pbmcgb2YgbGluZXMgd2hpY2ggbWF5IG5lZWQgdGhlbS5cIlxuICAgICAgfSxcbiAgICAgIHNpbmdsZVF1b3RlOiBjb21tb25PcHRpb25zLnNpbmdsZVF1b3RlLFxuICAgICAganN4U2luZ2xlUXVvdGU6IHtcbiAgICAgICAgc2luY2U6IFwiMS4xNS4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9KQVZBU0NSSVBULFxuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlVzZSBzaW5nbGUgcXVvdGVzIGluIEpTWC5cIlxuICAgICAgfSxcbiAgICAgIHF1b3RlUHJvcHM6IHtcbiAgICAgICAgc2luY2U6IFwiMS4xNy4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9KQVZBU0NSSVBULFxuICAgICAgICB0eXBlOiBcImNob2ljZVwiLFxuICAgICAgICBkZWZhdWx0OiBcImFzLW5lZWRlZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDaGFuZ2Ugd2hlbiBwcm9wZXJ0aWVzIGluIG9iamVjdHMgYXJlIHF1b3RlZC5cIixcbiAgICAgICAgY2hvaWNlczogW3tcbiAgICAgICAgICB2YWx1ZTogXCJhcy1uZWVkZWRcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPbmx5IGFkZCBxdW90ZXMgYXJvdW5kIG9iamVjdCBwcm9wZXJ0aWVzIHdoZXJlIHJlcXVpcmVkLlwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJjb25zaXN0ZW50XCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiSWYgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGluIGFuIG9iamVjdCByZXF1aXJlcyBxdW90ZXMsIHF1b3RlIGFsbCBwcm9wZXJ0aWVzLlwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJwcmVzZXJ2ZVwiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlJlc3BlY3QgdGhlIGlucHV0IHVzZSBvZiBxdW90ZXMgaW4gb2JqZWN0IHByb3BlcnRpZXMuXCJcbiAgICAgICAgfV1cbiAgICAgIH0sXG4gICAgICB0cmFpbGluZ0NvbW1hOiB7XG4gICAgICAgIHNpbmNlOiBcIjAuMC4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9KQVZBU0NSSVBULFxuICAgICAgICB0eXBlOiBcImNob2ljZVwiLFxuICAgICAgICBkZWZhdWx0OiBbe1xuICAgICAgICAgIHNpbmNlOiBcIjAuMC4wXCIsXG4gICAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzaW5jZTogXCIwLjE5LjBcIixcbiAgICAgICAgICB2YWx1ZTogXCJub25lXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIHNpbmNlOiBcIjIuMC4wXCIsXG4gICAgICAgICAgdmFsdWU6IFwiZXM1XCJcbiAgICAgICAgfV0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IHRyYWlsaW5nIGNvbW1hcyB3aGVyZXZlciBwb3NzaWJsZSB3aGVuIG11bHRpLWxpbmUuXCIsXG4gICAgICAgIGNob2ljZXM6IFt7XG4gICAgICAgICAgdmFsdWU6IFwiZXM1XCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiVHJhaWxpbmcgY29tbWFzIHdoZXJlIHZhbGlkIGluIEVTNSAob2JqZWN0cywgYXJyYXlzLCBldGMuKVwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJub25lXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiTm8gdHJhaWxpbmcgY29tbWFzLlwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJhbGxcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUcmFpbGluZyBjb21tYXMgd2hlcmV2ZXIgcG9zc2libGUgKGluY2x1ZGluZyBmdW5jdGlvbiBhcmd1bWVudHMpLlwiXG4gICAgICAgIH1dXG4gICAgICB9LFxuICAgICAgc2luZ2xlQXR0cmlidXRlUGVyTGluZTogY29tbW9uT3B0aW9ucy5zaW5nbGVBdHRyaWJ1dGVQZXJMaW5lXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJzZXJzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9wYXJzZS9wYXJzZXJzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBnZXQgYmFiZWwoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vycy5iYWJlbDtcbiAgICAgIH0sXG4gICAgICBnZXQgXCJiYWJlbC1mbG93XCIoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vyc1tcImJhYmVsLWZsb3dcIl07XG4gICAgICB9LFxuICAgICAgZ2V0IFwiYmFiZWwtdHNcIigpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1iYWJlbC5qc1wiKS5wYXJzZXJzW1wiYmFiZWwtdHNcIl07XG4gICAgICB9LFxuICAgICAgZ2V0IGpzb24oKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vycy5qc29uO1xuICAgICAgfSxcbiAgICAgIGdldCBqc29uNSgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1iYWJlbC5qc1wiKS5wYXJzZXJzLmpzb241O1xuICAgICAgfSxcbiAgICAgIGdldCBcImpzb24tc3RyaW5naWZ5XCIoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vyc1tcImpzb24tc3RyaW5naWZ5XCJdO1xuICAgICAgfSxcbiAgICAgIGdldCBfX2pzX2V4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vycy5fX2pzX2V4cHJlc3Npb247XG4gICAgICB9LFxuICAgICAgZ2V0IF9fdnVlX2V4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vycy5fX3Z1ZV9leHByZXNzaW9uO1xuICAgICAgfSxcbiAgICAgIGdldCBfX3Z1ZV90c19leHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLWJhYmVsLmpzXCIpLnBhcnNlcnMuX192dWVfdHNfZXhwcmVzc2lvbjtcbiAgICAgIH0sXG4gICAgICBnZXQgX192dWVfZXZlbnRfYmluZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1iYWJlbC5qc1wiKS5wYXJzZXJzLl9fdnVlX2V2ZW50X2JpbmRpbmc7XG4gICAgICB9LFxuICAgICAgZ2V0IF9fdnVlX3RzX2V2ZW50X2JpbmRpbmcoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vycy5fX3Z1ZV90c19ldmVudF9iaW5kaW5nO1xuICAgICAgfSxcbiAgICAgIGdldCBmbG93KCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLWZsb3cuanNcIikucGFyc2Vycy5mbG93O1xuICAgICAgfSxcbiAgICAgIGdldCB0eXBlc2NyaXB0KCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLXR5cGVzY3JpcHQuanNcIikucGFyc2Vycy50eXBlc2NyaXB0O1xuICAgICAgfSxcbiAgICAgIGdldCBfX25nX2FjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1hbmd1bGFyLmpzXCIpLnBhcnNlcnMuX19uZ19hY3Rpb247XG4gICAgICB9LFxuICAgICAgZ2V0IF9fbmdfYmluZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1hbmd1bGFyLmpzXCIpLnBhcnNlcnMuX19uZ19iaW5kaW5nO1xuICAgICAgfSxcbiAgICAgIGdldCBfX25nX2ludGVycG9sYXRpb24oKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYW5ndWxhci5qc1wiKS5wYXJzZXJzLl9fbmdfaW50ZXJwb2xhdGlvbjtcbiAgICAgIH0sXG4gICAgICBnZXQgX19uZ19kaXJlY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYW5ndWxhci5qc1wiKS5wYXJzZXJzLl9fbmdfZGlyZWN0aXZlO1xuICAgICAgfSxcbiAgICAgIGdldCBhY29ybigpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1lc3ByZWUuanNcIikucGFyc2Vycy5hY29ybjtcbiAgICAgIH0sXG4gICAgICBnZXQgZXNwcmVlKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLWVzcHJlZS5qc1wiKS5wYXJzZXJzLmVzcHJlZTtcbiAgICAgIH0sXG4gICAgICBnZXQgbWVyaXlhaCgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1tZXJpeWFoLmpzXCIpLnBhcnNlcnMubWVyaXlhaDtcbiAgICAgIH0sXG4gICAgICBnZXQgX19iYWJlbF9lc3RyZWUoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItYmFiZWwuanNcIikucGFyc2Vycy5fX2JhYmVsX2VzdHJlZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX0phdmFTY3JpcHQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL0phdmFTY3JpcHQuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJKYXZhU2NyaXB0XCIsXG4gICAgICB0eXBlOiBcInByb2dyYW1taW5nXCIsXG4gICAgICB0bVNjb3BlOiBcInNvdXJjZS5qc1wiLFxuICAgICAgYWNlTW9kZTogXCJqYXZhc2NyaXB0XCIsXG4gICAgICBjb2RlbWlycm9yTW9kZTogXCJqYXZhc2NyaXB0XCIsXG4gICAgICBjb2RlbWlycm9yTWltZVR5cGU6IFwidGV4dC9qYXZhc2NyaXB0XCIsXG4gICAgICBjb2xvcjogXCIjZjFlMDVhXCIsXG4gICAgICBhbGlhc2VzOiBbXCJqc1wiLCBcIm5vZGVcIl0sXG4gICAgICBleHRlbnNpb25zOiBbXCIuanNcIiwgXCIuX2pzXCIsIFwiLmJvbmVzXCIsIFwiLmNqc1wiLCBcIi5lc1wiLCBcIi5lczZcIiwgXCIuZnJhZ1wiLCBcIi5nc1wiLCBcIi5qYWtlXCIsIFwiLmphdmFzY3JpcHRcIiwgXCIuanNiXCIsIFwiLmpzY2FkXCIsIFwiLmpzZmxcIiwgXCIuanNsaWJcIiwgXCIuanNtXCIsIFwiLmpzcHJlXCIsIFwiLmpzc1wiLCBcIi5qc3hcIiwgXCIubWpzXCIsIFwiLm5qc1wiLCBcIi5wYWNcIiwgXCIuc2pzXCIsIFwiLnNzanNcIiwgXCIueHNqc1wiLCBcIi54c2pzbGliXCJdLFxuICAgICAgZmlsZW5hbWVzOiBbXCJKYWtlZmlsZVwiXSxcbiAgICAgIGludGVycHJldGVyczogW1wiY2hha3JhXCIsIFwiZDhcIiwgXCJnanNcIiwgXCJqc1wiLCBcIm5vZGVcIiwgXCJub2RlanNcIiwgXCJxanNcIiwgXCJyaGlub1wiLCBcInY4XCIsIFwidjgtc2hlbGxcIl0sXG4gICAgICBsYW5ndWFnZUlkOiAxODNcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX1R5cGVTY3JpcHQgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL1R5cGVTY3JpcHQuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJUeXBlU2NyaXB0XCIsXG4gICAgICB0eXBlOiBcInByb2dyYW1taW5nXCIsXG4gICAgICBjb2xvcjogXCIjMzE3OGM2XCIsXG4gICAgICBhbGlhc2VzOiBbXCJ0c1wiXSxcbiAgICAgIGludGVycHJldGVyczogW1wiZGVub1wiLCBcInRzLW5vZGVcIl0sXG4gICAgICBleHRlbnNpb25zOiBbXCIudHNcIiwgXCIuY3RzXCIsIFwiLm10c1wiXSxcbiAgICAgIHRtU2NvcGU6IFwic291cmNlLnRzXCIsXG4gICAgICBhY2VNb2RlOiBcInR5cGVzY3JpcHRcIixcbiAgICAgIGNvZGVtaXJyb3JNb2RlOiBcImphdmFzY3JpcHRcIixcbiAgICAgIGNvZGVtaXJyb3JNaW1lVHlwZTogXCJhcHBsaWNhdGlvbi90eXBlc2NyaXB0XCIsXG4gICAgICBsYW5ndWFnZUlkOiAzNzhcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX1RTWCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvbGluZ3Vpc3QtbGFuZ3VhZ2VzL2RhdGEvVFNYLmpzb25cIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIG5hbWU6IFwiVFNYXCIsXG4gICAgICB0eXBlOiBcInByb2dyYW1taW5nXCIsXG4gICAgICBjb2xvcjogXCIjMzE3OGM2XCIsXG4gICAgICBncm91cDogXCJUeXBlU2NyaXB0XCIsXG4gICAgICBleHRlbnNpb25zOiBbXCIudHN4XCJdLFxuICAgICAgdG1TY29wZTogXCJzb3VyY2UudHN4XCIsXG4gICAgICBhY2VNb2RlOiBcImphdmFzY3JpcHRcIixcbiAgICAgIGNvZGVtaXJyb3JNb2RlOiBcImpzeFwiLFxuICAgICAgY29kZW1pcnJvck1pbWVUeXBlOiBcInRleHQvanN4XCIsXG4gICAgICBsYW5ndWFnZUlkOiA5NDkwMTkyNFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfSlNPTiA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvbGluZ3Vpc3QtbGFuZ3VhZ2VzL2RhdGEvSlNPTi5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBuYW1lOiBcIkpTT05cIixcbiAgICAgIHR5cGU6IFwiZGF0YVwiLFxuICAgICAgY29sb3I6IFwiIzI5MjkyOVwiLFxuICAgICAgdG1TY29wZTogXCJzb3VyY2UuanNvblwiLFxuICAgICAgYWNlTW9kZTogXCJqc29uXCIsXG4gICAgICBjb2RlbWlycm9yTW9kZTogXCJqYXZhc2NyaXB0XCIsXG4gICAgICBjb2RlbWlycm9yTWltZVR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgYWxpYXNlczogW1wiZ2VvanNvblwiLCBcImpzb25sXCIsIFwidG9wb2pzb25cIl0sXG4gICAgICBleHRlbnNpb25zOiBbXCIuanNvblwiLCBcIi40REZvcm1cIiwgXCIuNERQcm9qZWN0XCIsIFwiLmF2c2NcIiwgXCIuZ2VvanNvblwiLCBcIi5nbHRmXCIsIFwiLmhhclwiLCBcIi5pY2VcIiwgXCIuSlNPTi10bUxhbmd1YWdlXCIsIFwiLmpzb25sXCIsIFwiLm1jbWV0YVwiLCBcIi50ZnN0YXRlXCIsIFwiLnRmc3RhdGUuYmFja3VwXCIsIFwiLnRvcG9qc29uXCIsIFwiLndlYmFwcFwiLCBcIi53ZWJtYW5pZmVzdFwiLCBcIi55eVwiLCBcIi55eXBcIl0sXG4gICAgICBmaWxlbmFtZXM6IFtcIi5hcmNjb25maWdcIiwgXCIuYXV0by1jaGFuZ2Vsb2dcIiwgXCIuYzhyY1wiLCBcIi5odG1saGludHJjXCIsIFwiLmltZ2JvdGNvbmZpZ1wiLCBcIi5ueWNyY1wiLCBcIi50ZXJuLWNvbmZpZ1wiLCBcIi50ZXJuLXByb2plY3RcIiwgXCIud2F0Y2htYW5jb25maWdcIiwgXCJQaXBmaWxlLmxvY2tcIiwgXCJjb21wb3Nlci5sb2NrXCIsIFwibWNtb2QuaW5mb1wiXSxcbiAgICAgIGxhbmd1YWdlSWQ6IDE3NFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfSlNPTl93aXRoX0NvbW1lbnRzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9saW5ndWlzdC1sYW5ndWFnZXMvZGF0YS9KU09OIHdpdGggQ29tbWVudHMuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJKU09OIHdpdGggQ29tbWVudHNcIixcbiAgICAgIHR5cGU6IFwiZGF0YVwiLFxuICAgICAgY29sb3I6IFwiIzI5MjkyOVwiLFxuICAgICAgZ3JvdXA6IFwiSlNPTlwiLFxuICAgICAgdG1TY29wZTogXCJzb3VyY2UuanNcIixcbiAgICAgIGFjZU1vZGU6IFwiamF2YXNjcmlwdFwiLFxuICAgICAgY29kZW1pcnJvck1vZGU6IFwiamF2YXNjcmlwdFwiLFxuICAgICAgY29kZW1pcnJvck1pbWVUeXBlOiBcInRleHQvamF2YXNjcmlwdFwiLFxuICAgICAgYWxpYXNlczogW1wianNvbmNcIl0sXG4gICAgICBleHRlbnNpb25zOiBbXCIuanNvbmNcIiwgXCIuY29kZS1zbmlwcGV0c1wiLCBcIi5zdWJsaW1lLWJ1aWxkXCIsIFwiLnN1YmxpbWUtY29tbWFuZHNcIiwgXCIuc3VibGltZS1jb21wbGV0aW9uc1wiLCBcIi5zdWJsaW1lLWtleW1hcFwiLCBcIi5zdWJsaW1lLW1hY3JvXCIsIFwiLnN1YmxpbWUtbWVudVwiLCBcIi5zdWJsaW1lLW1vdXNlbWFwXCIsIFwiLnN1YmxpbWUtcHJvamVjdFwiLCBcIi5zdWJsaW1lLXNldHRpbmdzXCIsIFwiLnN1YmxpbWUtdGhlbWVcIiwgXCIuc3VibGltZS13b3Jrc3BhY2VcIiwgXCIuc3VibGltZV9tZXRyaWNzXCIsIFwiLnN1YmxpbWVfc2Vzc2lvblwiXSxcbiAgICAgIGZpbGVuYW1lczogW1wiLmJhYmVscmNcIiwgXCIuZGV2Y29udGFpbmVyLmpzb25cIiwgXCIuZXNsaW50cmMuanNvblwiLCBcIi5qc2NzcmNcIiwgXCIuanNoaW50cmNcIiwgXCIuanNsaW50cmNcIiwgXCJhcGktZXh0cmFjdG9yLmpzb25cIiwgXCJkZXZjb250YWluZXIuanNvblwiLCBcImpzY29uZmlnLmpzb25cIiwgXCJsYW5ndWFnZS1jb25maWd1cmF0aW9uLmpzb25cIiwgXCJ0c2NvbmZpZy5qc29uXCIsIFwidHNsaW50Lmpzb25cIl0sXG4gICAgICBsYW5ndWFnZUlkOiA0MjNcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX0pTT041ID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9saW5ndWlzdC1sYW5ndWFnZXMvZGF0YS9KU09ONS5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBuYW1lOiBcIkpTT041XCIsXG4gICAgICB0eXBlOiBcImRhdGFcIixcbiAgICAgIGNvbG9yOiBcIiMyNjdDQjlcIixcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5qc29uNVwiXSxcbiAgICAgIHRtU2NvcGU6IFwic291cmNlLmpzXCIsXG4gICAgICBhY2VNb2RlOiBcImphdmFzY3JpcHRcIixcbiAgICAgIGNvZGVtaXJyb3JNb2RlOiBcImphdmFzY3JpcHRcIixcbiAgICAgIGNvZGVtaXJyb3JNaW1lVHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICBsYW5ndWFnZUlkOiAxNzVcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xhbmd1YWdlX2pzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1qcy9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGNyZWF0ZUxhbmd1YWdlID0gcmVxdWlyZV9jcmVhdGVfbGFuZ3VhZ2UoKTtcbiAgICB2YXIgZXN0cmVlUHJpbnRlciA9IHJlcXVpcmVfcHJpbnRlcl9lc3RyZWUoKTtcbiAgICB2YXIgZXN0cmVlSnNvblByaW50ZXIgPSByZXF1aXJlX3ByaW50ZXJfZXN0cmVlX2pzb24oKTtcbiAgICB2YXIgb3B0aW9ucyA9IHJlcXVpcmVfb3B0aW9uczIoKTtcbiAgICB2YXIgcGFyc2VycyA9IHJlcXVpcmVfcGFyc2VycygpO1xuICAgIHZhciBsYW5ndWFnZXMgPSBbY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9KYXZhU2NyaXB0KCksIChkYXRhKSA9PiAoe1xuICAgICAgc2luY2U6IFwiMC4wLjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImJhYmVsXCIsIFwiYWNvcm5cIiwgXCJlc3ByZWVcIiwgXCJtZXJpeWFoXCIsIFwiYmFiZWwtZmxvd1wiLCBcImJhYmVsLXRzXCIsIFwiZmxvd1wiLCBcInR5cGVzY3JpcHRcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wiamF2YXNjcmlwdFwiLCBcIm1vbmdvXCJdLFxuICAgICAgaW50ZXJwcmV0ZXJzOiBbLi4uZGF0YS5pbnRlcnByZXRlcnMsIFwienhcIl0sXG4gICAgICBleHRlbnNpb25zOiBbLi4uZGF0YS5leHRlbnNpb25zLmZpbHRlcigoZXh0ZW5zaW9uKSA9PiBleHRlbnNpb24gIT09IFwiLmpzeFwiKSwgXCIud3hzXCJdXG4gICAgfSkpLCBjcmVhdGVMYW5ndWFnZShyZXF1aXJlX0phdmFTY3JpcHQoKSwgKCkgPT4gKHtcbiAgICAgIG5hbWU6IFwiRmxvd1wiLFxuICAgICAgc2luY2U6IFwiMC4wLjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImZsb3dcIiwgXCJiYWJlbC1mbG93XCJdLFxuICAgICAgdnNjb2RlTGFuZ3VhZ2VJZHM6IFtcImphdmFzY3JpcHRcIl0sXG4gICAgICBhbGlhc2VzOiBbXSxcbiAgICAgIGZpbGVuYW1lczogW10sXG4gICAgICBleHRlbnNpb25zOiBbXCIuanMuZmxvd1wiXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9KYXZhU2NyaXB0KCksICgpID0+ICh7XG4gICAgICBuYW1lOiBcIkpTWFwiLFxuICAgICAgc2luY2U6IFwiMC4wLjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImJhYmVsXCIsIFwiYmFiZWwtZmxvd1wiLCBcImJhYmVsLXRzXCIsIFwiZmxvd1wiLCBcInR5cGVzY3JpcHRcIiwgXCJlc3ByZWVcIiwgXCJtZXJpeWFoXCJdLFxuICAgICAgdnNjb2RlTGFuZ3VhZ2VJZHM6IFtcImphdmFzY3JpcHRyZWFjdFwiXSxcbiAgICAgIGFsaWFzZXM6IHZvaWQgMCxcbiAgICAgIGZpbGVuYW1lczogdm9pZCAwLFxuICAgICAgZXh0ZW5zaW9uczogW1wiLmpzeFwiXSxcbiAgICAgIGdyb3VwOiBcIkphdmFTY3JpcHRcIixcbiAgICAgIGludGVycHJldGVyczogdm9pZCAwLFxuICAgICAgdG1TY29wZTogXCJzb3VyY2UuanMuanN4XCIsXG4gICAgICBhY2VNb2RlOiBcImphdmFzY3JpcHRcIixcbiAgICAgIGNvZGVtaXJyb3JNb2RlOiBcImpzeFwiLFxuICAgICAgY29kZW1pcnJvck1pbWVUeXBlOiBcInRleHQvanN4XCIsXG4gICAgICBjb2xvcjogdm9pZCAwXG4gICAgfSkpLCBjcmVhdGVMYW5ndWFnZShyZXF1aXJlX1R5cGVTY3JpcHQoKSwgKCkgPT4gKHtcbiAgICAgIHNpbmNlOiBcIjEuNC4wXCIsXG4gICAgICBwYXJzZXJzOiBbXCJ0eXBlc2NyaXB0XCIsIFwiYmFiZWwtdHNcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1widHlwZXNjcmlwdFwiXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9UU1goKSwgKCkgPT4gKHtcbiAgICAgIHNpbmNlOiBcIjEuNC4wXCIsXG4gICAgICBwYXJzZXJzOiBbXCJ0eXBlc2NyaXB0XCIsIFwiYmFiZWwtdHNcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1widHlwZXNjcmlwdHJlYWN0XCJdXG4gICAgfSkpLCBjcmVhdGVMYW5ndWFnZShyZXF1aXJlX0pTT04oKSwgKCkgPT4gKHtcbiAgICAgIG5hbWU6IFwiSlNPTi5zdHJpbmdpZnlcIixcbiAgICAgIHNpbmNlOiBcIjEuMTMuMFwiLFxuICAgICAgcGFyc2VyczogW1wianNvbi1zdHJpbmdpZnlcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wianNvblwiXSxcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5pbXBvcnRtYXBcIl0sXG4gICAgICBmaWxlbmFtZXM6IFtcInBhY2thZ2UuanNvblwiLCBcInBhY2thZ2UtbG9jay5qc29uXCIsIFwiY29tcG9zZXIuanNvblwiXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9KU09OKCksIChkYXRhKSA9PiAoe1xuICAgICAgc2luY2U6IFwiMS41LjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImpzb25cIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wianNvblwiXSxcbiAgICAgIGV4dGVuc2lvbnM6IGRhdGEuZXh0ZW5zaW9ucy5maWx0ZXIoKGV4dGVuc2lvbikgPT4gZXh0ZW5zaW9uICE9PSBcIi5qc29ubFwiKVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9KU09OX3dpdGhfQ29tbWVudHMoKSwgKGRhdGEpID0+ICh7XG4gICAgICBzaW5jZTogXCIxLjUuMFwiLFxuICAgICAgcGFyc2VyczogW1wianNvblwiXSxcbiAgICAgIHZzY29kZUxhbmd1YWdlSWRzOiBbXCJqc29uY1wiXSxcbiAgICAgIGZpbGVuYW1lczogWy4uLmRhdGEuZmlsZW5hbWVzLCBcIi5lc2xpbnRyY1wiLCBcIi5zd2NyY1wiXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9KU09ONSgpLCAoKSA9PiAoe1xuICAgICAgc2luY2U6IFwiMS4xMy4wXCIsXG4gICAgICBwYXJzZXJzOiBbXCJqc29uNVwiXSxcbiAgICAgIHZzY29kZUxhbmd1YWdlSWRzOiBbXCJqc29uNVwiXVxuICAgIH0pKV07XG4gICAgdmFyIHByaW50ZXJzID0ge1xuICAgICAgZXN0cmVlOiBlc3RyZWVQcmludGVyLFxuICAgICAgXCJlc3RyZWUtanNvblwiOiBlc3RyZWVKc29uUHJpbnRlclxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHByaW50ZXJzLFxuICAgICAgcGFyc2Vyc1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY2xlYW4yID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1jc3MvY2xlYW4uanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBpc0Zyb250TWF0dGVyTm9kZVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIgZ2V0TGFzdCA9IHJlcXVpcmVfZ2V0X2xhc3QoKTtcbiAgICB2YXIgaWdub3JlZFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJyYXdcIiwgXCJyYXdzXCIsIFwic291cmNlSW5kZXhcIiwgXCJzb3VyY2VcIiwgXCJiZWZvcmVcIiwgXCJhZnRlclwiLCBcInRyYWlsaW5nQ29tbWFcIl0pO1xuICAgIGZ1bmN0aW9uIGNsZWFuKGFzdCwgbmV3T2JqLCBwYXJlbnQpIHtcbiAgICAgIGlmIChpc0Zyb250TWF0dGVyTm9kZShhc3QpICYmIGFzdC5sYW5nID09PSBcInlhbWxcIikge1xuICAgICAgICBkZWxldGUgbmV3T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcImNzcy1jb21tZW50XCIgJiYgcGFyZW50LnR5cGUgPT09IFwiY3NzLXJvb3RcIiAmJiBwYXJlbnQubm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAocGFyZW50Lm5vZGVzWzBdID09PSBhc3QgfHwgaXNGcm9udE1hdHRlck5vZGUocGFyZW50Lm5vZGVzWzBdKSAmJiBwYXJlbnQubm9kZXNbMV0gPT09IGFzdCkge1xuICAgICAgICAgIGRlbGV0ZSBuZXdPYmoudGV4dDtcbiAgICAgICAgICBpZiAoL15cXCpcXHMqQCg/OmZvcm1hdHxwcmV0dGllcilcXHMqJC8udGVzdChhc3QudGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyZW50LnR5cGUgPT09IFwiY3NzLXJvb3RcIiAmJiBnZXRMYXN0KHBhcmVudC5ub2RlcykgPT09IGFzdCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwidmFsdWUtcm9vdFwiKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdPYmoudGV4dDtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJtZWRpYS1xdWVyeVwiIHx8IGFzdC50eXBlID09PSBcIm1lZGlhLXF1ZXJ5LWxpc3RcIiB8fCBhc3QudHlwZSA9PT0gXCJtZWRpYS1mZWF0dXJlLWV4cHJlc3Npb25cIikge1xuICAgICAgICBkZWxldGUgbmV3T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcImNzcy1ydWxlXCIpIHtcbiAgICAgICAgZGVsZXRlIG5ld09iai5wYXJhbXM7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwic2VsZWN0b3ItY29tYmluYXRvclwiKSB7XG4gICAgICAgIG5ld09iai52YWx1ZSA9IG5ld09iai52YWx1ZS5yZXBsYWNlKC9cXHMrL2csIFwiIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJtZWRpYS1mZWF0dXJlXCIpIHtcbiAgICAgICAgbmV3T2JqLnZhbHVlID0gbmV3T2JqLnZhbHVlLnJlcGxhY2UoLyAvZywgXCJcIik7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwidmFsdWUtd29yZFwiICYmIChhc3QuaXNDb2xvciAmJiBhc3QuaXNIZXggfHwgW1wiaW5pdGlhbFwiLCBcImluaGVyaXRcIiwgXCJ1bnNldFwiLCBcInJldmVydFwiXS5pbmNsdWRlcyhuZXdPYmoudmFsdWUucmVwbGFjZSgpLnRvTG93ZXJDYXNlKCkpKSB8fCBhc3QudHlwZSA9PT0gXCJtZWRpYS1mZWF0dXJlXCIgfHwgYXN0LnR5cGUgPT09IFwic2VsZWN0b3Itcm9vdC1pbnZhbGlkXCIgfHwgYXN0LnR5cGUgPT09IFwic2VsZWN0b3ItcHNldWRvXCIpIHtcbiAgICAgICAgbmV3T2JqLnZhbHVlID0gbmV3T2JqLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwiY3NzLWRlY2xcIikge1xuICAgICAgICBuZXdPYmoucHJvcCA9IG5ld09iai5wcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwiY3NzLWF0cnVsZVwiIHx8IGFzdC50eXBlID09PSBcImNzcy1pbXBvcnRcIikge1xuICAgICAgICBuZXdPYmoubmFtZSA9IG5ld09iai5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwidmFsdWUtbnVtYmVyXCIpIHtcbiAgICAgICAgbmV3T2JqLnVuaXQgPSBuZXdPYmoudW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuICAgICAgaWYgKChhc3QudHlwZSA9PT0gXCJtZWRpYS1mZWF0dXJlXCIgfHwgYXN0LnR5cGUgPT09IFwibWVkaWEta2V5d29yZFwiIHx8IGFzdC50eXBlID09PSBcIm1lZGlhLXR5cGVcIiB8fCBhc3QudHlwZSA9PT0gXCJtZWRpYS11bmtub3duXCIgfHwgYXN0LnR5cGUgPT09IFwibWVkaWEtdXJsXCIgfHwgYXN0LnR5cGUgPT09IFwibWVkaWEtdmFsdWVcIiB8fCBhc3QudHlwZSA9PT0gXCJzZWxlY3Rvci1hdHRyaWJ1dGVcIiB8fCBhc3QudHlwZSA9PT0gXCJzZWxlY3Rvci1zdHJpbmdcIiB8fCBhc3QudHlwZSA9PT0gXCJzZWxlY3Rvci1jbGFzc1wiIHx8IGFzdC50eXBlID09PSBcInNlbGVjdG9yLWNvbWJpbmF0b3JcIiB8fCBhc3QudHlwZSA9PT0gXCJ2YWx1ZS1zdHJpbmdcIikgJiYgbmV3T2JqLnZhbHVlKSB7XG4gICAgICAgIG5ld09iai52YWx1ZSA9IGNsZWFuQ1NTU3RyaW5ncyhuZXdPYmoudmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcInNlbGVjdG9yLWF0dHJpYnV0ZVwiKSB7XG4gICAgICAgIG5ld09iai5hdHRyaWJ1dGUgPSBuZXdPYmouYXR0cmlidXRlLnRyaW0oKTtcbiAgICAgICAgaWYgKG5ld09iai5uYW1lc3BhY2UpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIG5ld09iai5uYW1lc3BhY2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG5ld09iai5uYW1lc3BhY2UgPSBuZXdPYmoubmFtZXNwYWNlLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChuZXdPYmoubmFtZXNwYWNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBuZXdPYmoubmFtZXNwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld09iai52YWx1ZSkge1xuICAgICAgICAgIG5ld09iai52YWx1ZSA9IG5ld09iai52YWx1ZS50cmltKCkucmVwbGFjZSgvXltcIiddfFtcIiddJC9nLCBcIlwiKTtcbiAgICAgICAgICBkZWxldGUgbmV3T2JqLnF1b3RlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKChhc3QudHlwZSA9PT0gXCJtZWRpYS12YWx1ZVwiIHx8IGFzdC50eXBlID09PSBcIm1lZGlhLXR5cGVcIiB8fCBhc3QudHlwZSA9PT0gXCJ2YWx1ZS1udW1iZXJcIiB8fCBhc3QudHlwZSA9PT0gXCJzZWxlY3Rvci1yb290LWludmFsaWRcIiB8fCBhc3QudHlwZSA9PT0gXCJzZWxlY3Rvci1jbGFzc1wiIHx8IGFzdC50eXBlID09PSBcInNlbGVjdG9yLWNvbWJpbmF0b3JcIiB8fCBhc3QudHlwZSA9PT0gXCJzZWxlY3Rvci10YWdcIikgJiYgbmV3T2JqLnZhbHVlKSB7XG4gICAgICAgIG5ld09iai52YWx1ZSA9IG5ld09iai52YWx1ZS5yZXBsYWNlKC8oW1xcZCsuRWUtXSspKFtBLVphLXpdKikvZywgKG1hdGNoLCBudW1TdHIsIHVuaXQpID0+IHtcbiAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIobnVtU3RyKTtcbiAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG51bSkgPyBtYXRjaCA6IG51bSArIHVuaXQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwic2VsZWN0b3ItdGFnXCIpIHtcbiAgICAgICAgY29uc3QgbG93ZXJjYXNlZFZhbHVlID0gYXN0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChbXCJmcm9tXCIsIFwidG9cIl0uaW5jbHVkZXMobG93ZXJjYXNlZFZhbHVlKSkge1xuICAgICAgICAgIG5ld09iai52YWx1ZSA9IGxvd2VyY2FzZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcImNzcy1hdHJ1bGVcIiAmJiBhc3QubmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInN1cHBvcnRzXCIpIHtcbiAgICAgICAgZGVsZXRlIG5ld09iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJzZWxlY3Rvci11bmtub3duXCIpIHtcbiAgICAgICAgZGVsZXRlIG5ld09iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJ2YWx1ZS1jb21tYV9ncm91cFwiKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gYXN0Lmdyb3Vwcy5maW5kSW5kZXgoKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1udW1iZXJcIiAmJiBub2RlLnVuaXQgPT09IFwiLi4uXCIpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgbmV3T2JqLmdyb3Vwc1tpbmRleF0udW5pdCA9IFwiXCI7XG4gICAgICAgICAgbmV3T2JqLmdyb3Vwcy5zcGxpY2UoaW5kZXggKyAxLCAwLCB7XG4gICAgICAgICAgICB0eXBlOiBcInZhbHVlLXdvcmRcIixcbiAgICAgICAgICAgIHZhbHVlOiBcIi4uLlwiLFxuICAgICAgICAgICAgaXNDb2xvcjogZmFsc2UsXG4gICAgICAgICAgICBpc0hleDogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjbGVhbi5pZ25vcmVkUHJvcGVydGllcyA9IGlnbm9yZWRQcm9wZXJ0aWVzO1xuICAgIGZ1bmN0aW9uIGNsZWFuQ1NTU3RyaW5ncyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLycvZywgJ1wiJykucmVwbGFjZSgvXFxcXChbXlxcZEEtRmEtZl0pL2csIFwiJDFcIik7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGNsZWFuO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3ByaW50ID0gX19jb21tb25KUzIoe1xuICBcInNyYy91dGlscy9mcm9udC1tYXR0ZXIvcHJpbnQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBoYXJkbGluZSxcbiAgICAgICAgbWFya0FzUm9vdFxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgZnVuY3Rpb24gcHJpbnQobm9kZSwgdGV4dFRvRG9jKSB7XG4gICAgICBpZiAobm9kZS5sYW5nID09PSBcInlhbWxcIikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG5vZGUudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCBkb2MyID0gdmFsdWUgPyB0ZXh0VG9Eb2ModmFsdWUsIHtcbiAgICAgICAgICBwYXJzZXI6IFwieWFtbFwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzdHJpcFRyYWlsaW5nSGFyZGxpbmU6IHRydWVcbiAgICAgICAgfSkgOiBcIlwiO1xuICAgICAgICByZXR1cm4gbWFya0FzUm9vdChbbm9kZS5zdGFydERlbGltaXRlciwgaGFyZGxpbmUsIGRvYzIsIGRvYzIgPyBoYXJkbGluZSA6IFwiXCIsIG5vZGUuZW5kRGVsaW1pdGVyXSk7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHByaW50O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2VtYmVkMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtY3NzL2VtYmVkLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgaGFyZGxpbmVcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciBwcmludEZyb250TWF0dGVyID0gcmVxdWlyZV9wcmludCgpO1xuICAgIGZ1bmN0aW9uIGVtYmVkKHBhdGgsIHByaW50LCB0ZXh0VG9Eb2MpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcImZyb250LW1hdHRlclwiKSB7XG4gICAgICAgIGNvbnN0IGRvYzIgPSBwcmludEZyb250TWF0dGVyKG5vZGUsIHRleHRUb0RvYyk7XG4gICAgICAgIHJldHVybiBkb2MyID8gW2RvYzIsIGhhcmRsaW5lXSA6IFwiXCI7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGVtYmVkO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvdXRpbHMvZnJvbnQtbWF0dGVyL3BhcnNlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZnJvbnRNYXR0ZXJSZWdleCA9IG5ldyBSZWdFeHAoXCJeKD88c3RhcnREZWxpbWl0ZXI+LXszfXxcXFxcK3szfSkoPzxsYW5ndWFnZT5bXlxcXFxuXSopXFxcXG4oPzp8KD88dmFsdWU+Lio/KVxcXFxuKSg/PGVuZERlbGltaXRlcj5cXFxcazxzdGFydERlbGltaXRlcj58XFxcXC57M30pW15cXFxcU1xcXFxuXSooPzpcXFxcbnwkKVwiLCBcInNcIik7XG4gICAgZnVuY3Rpb24gcGFyc2UodGV4dCkge1xuICAgICAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKGZyb250TWF0dGVyUmVnZXgpO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IHRleHRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RhcnREZWxpbWl0ZXIsXG4gICAgICAgIGxhbmd1YWdlLFxuICAgICAgICB2YWx1ZSA9IFwiXCIsXG4gICAgICAgIGVuZERlbGltaXRlclxuICAgICAgfSA9IG1hdGNoLmdyb3VwcztcbiAgICAgIGxldCBsYW5nID0gbGFuZ3VhZ2UudHJpbSgpIHx8IFwieWFtbFwiO1xuICAgICAgaWYgKHN0YXJ0RGVsaW1pdGVyID09PSBcIisrK1wiKSB7XG4gICAgICAgIGxhbmcgPSBcInRvbWxcIjtcbiAgICAgIH1cbiAgICAgIGlmIChsYW5nICE9PSBcInlhbWxcIiAmJiBzdGFydERlbGltaXRlciAhPT0gZW5kRGVsaW1pdGVyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogdGV4dFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgW3Jhd10gPSBtYXRjaDtcbiAgICAgIGNvbnN0IGZyb250TWF0dGVyID0ge1xuICAgICAgICB0eXBlOiBcImZyb250LW1hdHRlclwiLFxuICAgICAgICBsYW5nLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgc3RhcnREZWxpbWl0ZXIsXG4gICAgICAgIGVuZERlbGltaXRlcixcbiAgICAgICAgcmF3OiByYXcucmVwbGFjZSgvXFxuJC8sIFwiXCIpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbnRNYXR0ZXIsXG4gICAgICAgIGNvbnRlbnQ6IHJhdy5yZXBsYWNlKC9bXlxcbl0vZywgXCIgXCIpICsgdGV4dC5zbGljZShyYXcubGVuZ3RoKVxuICAgICAgfTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gcGFyc2U7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJhZ21hMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtY3NzL3ByYWdtYS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGpzUHJhZ21hID0gcmVxdWlyZV9wcmFnbWEoKTtcbiAgICB2YXIgcGFyc2VGcm9udE1hdHRlciA9IHJlcXVpcmVfcGFyc2U0KCk7XG4gICAgZnVuY3Rpb24gaGFzUHJhZ21hKHRleHQpIHtcbiAgICAgIHJldHVybiBqc1ByYWdtYS5oYXNQcmFnbWEocGFyc2VGcm9udE1hdHRlcih0ZXh0KS5jb250ZW50KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zZXJ0UHJhZ21hKHRleHQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZnJvbnRNYXR0ZXIsXG4gICAgICAgIGNvbnRlbnRcbiAgICAgIH0gPSBwYXJzZUZyb250TWF0dGVyKHRleHQpO1xuICAgICAgcmV0dXJuIChmcm9udE1hdHRlciA/IGZyb250TWF0dGVyLnJhdyArIFwiXFxuXFxuXCIgOiBcIlwiKSArIGpzUHJhZ21hLmluc2VydFByYWdtYShjb250ZW50KTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgaGFzUHJhZ21hLFxuICAgICAgaW5zZXJ0UHJhZ21hXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV91dGlsczggPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWNzcy91dGlscy9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGNvbG9yQWRqdXN0ZXJGdW5jdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJyZWRcIiwgXCJncmVlblwiLCBcImJsdWVcIiwgXCJhbHBoYVwiLCBcImFcIiwgXCJyZ2JcIiwgXCJodWVcIiwgXCJoXCIsIFwic2F0dXJhdGlvblwiLCBcInNcIiwgXCJsaWdodG5lc3NcIiwgXCJsXCIsIFwid2hpdGVuZXNzXCIsIFwid1wiLCBcImJsYWNrbmVzc1wiLCBcImJcIiwgXCJ0aW50XCIsIFwic2hhZGVcIiwgXCJibGVuZFwiLCBcImJsZW5kYVwiLCBcImNvbnRyYXN0XCIsIFwiaHNsXCIsIFwiaHNsYVwiLCBcImh3YlwiLCBcImh3YmFcIl0pO1xuICAgIGZ1bmN0aW9uIGdldEFuY2VzdG9yQ291bnRlcihwYXRoLCB0eXBlT3JUeXBlcykge1xuICAgICAgY29uc3QgdHlwZXMgPSBBcnJheS5pc0FycmF5KHR5cGVPclR5cGVzKSA/IHR5cGVPclR5cGVzIDogW3R5cGVPclR5cGVzXTtcbiAgICAgIGxldCBjb3VudGVyID0gLTE7XG4gICAgICBsZXQgYW5jZXN0b3JOb2RlO1xuICAgICAgd2hpbGUgKGFuY2VzdG9yTm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgrK2NvdW50ZXIpKSB7XG4gICAgICAgIGlmICh0eXBlcy5pbmNsdWRlcyhhbmNlc3Rvck5vZGUudHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gY291bnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRBbmNlc3Rvck5vZGUocGF0aCwgdHlwZU9yVHlwZXMpIHtcbiAgICAgIGNvbnN0IGNvdW50ZXIgPSBnZXRBbmNlc3RvckNvdW50ZXIocGF0aCwgdHlwZU9yVHlwZXMpO1xuICAgICAgcmV0dXJuIGNvdW50ZXIgPT09IC0xID8gbnVsbCA6IHBhdGguZ2V0UGFyZW50Tm9kZShjb3VudGVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0UHJvcE9mRGVjbE5vZGUocGF0aCkge1xuICAgICAgdmFyIF9kZWNsQW5jZXN0b3JOb2RlJHBybztcbiAgICAgIGNvbnN0IGRlY2xBbmNlc3Rvck5vZGUgPSBnZXRBbmNlc3Rvck5vZGUocGF0aCwgXCJjc3MtZGVjbFwiKTtcbiAgICAgIHJldHVybiBkZWNsQW5jZXN0b3JOb2RlID09PSBudWxsIHx8IGRlY2xBbmNlc3Rvck5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVjbEFuY2VzdG9yTm9kZSRwcm8gPSBkZWNsQW5jZXN0b3JOb2RlLnByb3ApID09PSBudWxsIHx8IF9kZWNsQW5jZXN0b3JOb2RlJHBybyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlY2xBbmNlc3Rvck5vZGUkcHJvLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHZhciB3aWRlS2V5d29yZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJpbml0aWFsXCIsIFwiaW5oZXJpdFwiLCBcInVuc2V0XCIsIFwicmV2ZXJ0XCJdKTtcbiAgICBmdW5jdGlvbiBpc1dpZGVLZXl3b3Jkcyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHdpZGVLZXl3b3Jkcy5oYXModmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzS2V5ZnJhbWVBdFJ1bGVLZXl3b3JkcyhwYXRoLCB2YWx1ZSkge1xuICAgICAgY29uc3QgYXRSdWxlQW5jZXN0b3JOb2RlID0gZ2V0QW5jZXN0b3JOb2RlKHBhdGgsIFwiY3NzLWF0cnVsZVwiKTtcbiAgICAgIHJldHVybiAoYXRSdWxlQW5jZXN0b3JOb2RlID09PSBudWxsIHx8IGF0UnVsZUFuY2VzdG9yTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXRSdWxlQW5jZXN0b3JOb2RlLm5hbWUpICYmIGF0UnVsZUFuY2VzdG9yTm9kZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoXCJrZXlmcmFtZXNcIikgJiYgW1wiZnJvbVwiLCBcInRvXCJdLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYXliZVRvTG93ZXJDYXNlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaW5jbHVkZXMoXCIkXCIpIHx8IHZhbHVlLmluY2x1ZGVzKFwiQFwiKSB8fCB2YWx1ZS5pbmNsdWRlcyhcIiNcIikgfHwgdmFsdWUuc3RhcnRzV2l0aChcIiVcIikgfHwgdmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoXCI6LS1cIikgfHwgdmFsdWUuaW5jbHVkZXMoXCIoXCIpICYmIHZhbHVlLmluY2x1ZGVzKFwiKVwiKSA/IHZhbHVlIDogdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zaWRlVmFsdWVGdW5jdGlvbk5vZGUocGF0aCwgZnVuY3Rpb25OYW1lKSB7XG4gICAgICB2YXIgX2Z1bmNBbmNlc3Rvck5vZGUkdmFsO1xuICAgICAgY29uc3QgZnVuY0FuY2VzdG9yTm9kZSA9IGdldEFuY2VzdG9yTm9kZShwYXRoLCBcInZhbHVlLWZ1bmNcIik7XG4gICAgICByZXR1cm4gKGZ1bmNBbmNlc3Rvck5vZGUgPT09IG51bGwgfHwgZnVuY0FuY2VzdG9yTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9mdW5jQW5jZXN0b3JOb2RlJHZhbCA9IGZ1bmNBbmNlc3Rvck5vZGUudmFsdWUpID09PSBudWxsIHx8IF9mdW5jQW5jZXN0b3JOb2RlJHZhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Z1bmNBbmNlc3Rvck5vZGUkdmFsLnRvTG93ZXJDYXNlKCkpID09PSBmdW5jdGlvbk5hbWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluc2lkZUlDU1NSdWxlTm9kZShwYXRoKSB7XG4gICAgICB2YXIgX3J1bGVBbmNlc3Rvck5vZGUkcmF3O1xuICAgICAgY29uc3QgcnVsZUFuY2VzdG9yTm9kZSA9IGdldEFuY2VzdG9yTm9kZShwYXRoLCBcImNzcy1ydWxlXCIpO1xuICAgICAgY29uc3Qgc2VsZWN0b3IgPSBydWxlQW5jZXN0b3JOb2RlID09PSBudWxsIHx8IHJ1bGVBbmNlc3Rvck5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfcnVsZUFuY2VzdG9yTm9kZSRyYXcgPSBydWxlQW5jZXN0b3JOb2RlLnJhd3MpID09PSBudWxsIHx8IF9ydWxlQW5jZXN0b3JOb2RlJHJhdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3J1bGVBbmNlc3Rvck5vZGUkcmF3LnNlbGVjdG9yO1xuICAgICAgcmV0dXJuIHNlbGVjdG9yICYmIChzZWxlY3Rvci5zdGFydHNXaXRoKFwiOmltcG9ydFwiKSB8fCBzZWxlY3Rvci5zdGFydHNXaXRoKFwiOmV4cG9ydFwiKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluc2lkZUF0UnVsZU5vZGUocGF0aCwgYXRSdWxlTmFtZU9yQXRSdWxlTmFtZXMpIHtcbiAgICAgIGNvbnN0IGF0UnVsZU5hbWVzID0gQXJyYXkuaXNBcnJheShhdFJ1bGVOYW1lT3JBdFJ1bGVOYW1lcykgPyBhdFJ1bGVOYW1lT3JBdFJ1bGVOYW1lcyA6IFthdFJ1bGVOYW1lT3JBdFJ1bGVOYW1lc107XG4gICAgICBjb25zdCBhdFJ1bGVBbmNlc3Rvck5vZGUgPSBnZXRBbmNlc3Rvck5vZGUocGF0aCwgXCJjc3MtYXRydWxlXCIpO1xuICAgICAgcmV0dXJuIGF0UnVsZUFuY2VzdG9yTm9kZSAmJiBhdFJ1bGVOYW1lcy5pbmNsdWRlcyhhdFJ1bGVBbmNlc3Rvck5vZGUubmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zaWRlVVJMRnVuY3Rpb25JbkltcG9ydEF0UnVsZU5vZGUocGF0aCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IGF0UnVsZUFuY2VzdG9yTm9kZSA9IGdldEFuY2VzdG9yTm9kZShwYXRoLCBcImNzcy1hdHJ1bGVcIik7XG4gICAgICByZXR1cm4gKGF0UnVsZUFuY2VzdG9yTm9kZSA9PT0gbnVsbCB8fCBhdFJ1bGVBbmNlc3Rvck5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGF0UnVsZUFuY2VzdG9yTm9kZS5uYW1lKSA9PT0gXCJpbXBvcnRcIiAmJiBub2RlLmdyb3Vwc1swXS52YWx1ZSA9PT0gXCJ1cmxcIiAmJiBub2RlLmdyb3Vwcy5sZW5ndGggPT09IDI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzVVJMRnVuY3Rpb25Ob2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwidmFsdWUtZnVuY1wiICYmIG5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ1cmxcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNMYXN0Tm9kZShwYXRoLCBub2RlKSB7XG4gICAgICB2YXIgX3BhdGgkZ2V0UGFyZW50Tm9kZTtcbiAgICAgIGNvbnN0IG5vZGVzID0gKF9wYXRoJGdldFBhcmVudE5vZGUgPSBwYXRoLmdldFBhcmVudE5vZGUoKSkgPT09IG51bGwgfHwgX3BhdGgkZ2V0UGFyZW50Tm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3BhdGgkZ2V0UGFyZW50Tm9kZS5ub2RlcztcbiAgICAgIHJldHVybiBub2RlcyAmJiBub2Rlcy5pbmRleE9mKG5vZGUpID09PSBub2Rlcy5sZW5ndGggLSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0RldGFjaGVkUnVsZXNldERlY2xhcmF0aW9uTm9kZShub2RlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHNlbGVjdG9yXG4gICAgICB9ID0gbm9kZTtcbiAgICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiAvXkAuKzouKiQvLnRlc3Qoc2VsZWN0b3IpIHx8IHNlbGVjdG9yLnZhbHVlICYmIC9eQC4rOi4qJC8udGVzdChzZWxlY3Rvci52YWx1ZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRm9yS2V5d29yZE5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS13b3JkXCIgJiYgW1wiZnJvbVwiLCBcInRocm91Z2hcIiwgXCJlbmRcIl0uaW5jbHVkZXMobm9kZS52YWx1ZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSWZFbHNlS2V5d29yZE5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS13b3JkXCIgJiYgW1wiYW5kXCIsIFwib3JcIiwgXCJub3RcIl0uaW5jbHVkZXMobm9kZS52YWx1ZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRWFjaEtleXdvcmROb2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwidmFsdWUtd29yZFwiICYmIG5vZGUudmFsdWUgPT09IFwiaW5cIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNNdWx0aXBsaWNhdGlvbk5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1vcGVyYXRvclwiICYmIG5vZGUudmFsdWUgPT09IFwiKlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0RpdmlzaW9uTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcInZhbHVlLW9wZXJhdG9yXCIgJiYgbm9kZS52YWx1ZSA9PT0gXCIvXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzQWRkaXRpb25Ob2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwidmFsdWUtb3BlcmF0b3JcIiAmJiBub2RlLnZhbHVlID09PSBcIitcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTdWJ0cmFjdGlvbk5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1vcGVyYXRvclwiICYmIG5vZGUudmFsdWUgPT09IFwiLVwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc01vZHVsb05vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1vcGVyYXRvclwiICYmIG5vZGUudmFsdWUgPT09IFwiJVwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc01hdGhPcGVyYXRvck5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIGlzTXVsdGlwbGljYXRpb25Ob2RlKG5vZGUpIHx8IGlzRGl2aXNpb25Ob2RlKG5vZGUpIHx8IGlzQWRkaXRpb25Ob2RlKG5vZGUpIHx8IGlzU3VidHJhY3Rpb25Ob2RlKG5vZGUpIHx8IGlzTW9kdWxvTm9kZShub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNFcXVhbGl0eU9wZXJhdG9yTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcInZhbHVlLXdvcmRcIiAmJiBbXCI9PVwiLCBcIiE9XCJdLmluY2x1ZGVzKG5vZGUudmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1JlbGF0aW9uYWxPcGVyYXRvck5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS13b3JkXCIgJiYgW1wiPFwiLCBcIj5cIiwgXCI8PVwiLCBcIj49XCJdLmluY2x1ZGVzKG5vZGUudmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1NDU1NDb250cm9sRGlyZWN0aXZlTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcImNzcy1hdHJ1bGVcIiAmJiBbXCJpZlwiLCBcImVsc2VcIiwgXCJmb3JcIiwgXCJlYWNoXCIsIFwid2hpbGVcIl0uaW5jbHVkZXMobm9kZS5uYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNEZXRhY2hlZFJ1bGVzZXRDYWxsTm9kZShub2RlKSB7XG4gICAgICB2YXIgX25vZGUkcmF3cztcbiAgICAgIHJldHVybiAoKF9ub2RlJHJhd3MgPSBub2RlLnJhd3MpID09PSBudWxsIHx8IF9ub2RlJHJhd3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJHJhd3MucGFyYW1zKSAmJiAvXlxcKFxccypcXCkkLy50ZXN0KG5vZGUucmF3cy5wYXJhbXMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1RlbXBsYXRlUGxhY2Vob2xkZXJOb2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLm5hbWUuc3RhcnRzV2l0aChcInByZXR0aWVyLXBsYWNlaG9sZGVyXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1RlbXBsYXRlUHJvcE5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUucHJvcC5zdGFydHNXaXRoKFwiQHByZXR0aWVyLXBsYWNlaG9sZGVyXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1Bvc3Rjc3NTaW1wbGVWYXJOb2RlKGN1cnJlbnROb2RlLCBuZXh0Tm9kZSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlLnZhbHVlID09PSBcIiQkXCIgJiYgY3VycmVudE5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1mdW5jXCIgJiYgKG5leHROb2RlID09PSBudWxsIHx8IG5leHROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuZXh0Tm9kZS50eXBlKSA9PT0gXCJ2YWx1ZS13b3JkXCIgJiYgIW5leHROb2RlLnJhd3MuYmVmb3JlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNDb21wb3Nlc05vZGUobm9kZSkge1xuICAgICAgdmFyIF9ub2RlJHZhbHVlLCBfbm9kZSR2YWx1ZSRncm91cDtcbiAgICAgIHJldHVybiAoKF9ub2RlJHZhbHVlID0gbm9kZS52YWx1ZSkgPT09IG51bGwgfHwgX25vZGUkdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJHZhbHVlLnR5cGUpID09PSBcInZhbHVlLXJvb3RcIiAmJiAoKF9ub2RlJHZhbHVlJGdyb3VwID0gbm9kZS52YWx1ZS5ncm91cCkgPT09IG51bGwgfHwgX25vZGUkdmFsdWUkZ3JvdXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJHZhbHVlJGdyb3VwLnR5cGUpID09PSBcInZhbHVlLXZhbHVlXCIgJiYgbm9kZS5wcm9wLnRvTG93ZXJDYXNlKCkgPT09IFwiY29tcG9zZXNcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzUGFyZW5zQXJvdW5kTm9kZShub2RlKSB7XG4gICAgICB2YXIgX25vZGUkdmFsdWUyLCBfbm9kZSR2YWx1ZTIkZ3JvdXAsIF9ub2RlJHZhbHVlMiRncm91cCRncjtcbiAgICAgIHJldHVybiAoKF9ub2RlJHZhbHVlMiA9IG5vZGUudmFsdWUpID09PSBudWxsIHx8IF9ub2RlJHZhbHVlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJHZhbHVlMiRncm91cCA9IF9ub2RlJHZhbHVlMi5ncm91cCkgPT09IG51bGwgfHwgX25vZGUkdmFsdWUyJGdyb3VwID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX25vZGUkdmFsdWUyJGdyb3VwJGdyID0gX25vZGUkdmFsdWUyJGdyb3VwLmdyb3VwKSA9PT0gbnVsbCB8fCBfbm9kZSR2YWx1ZTIkZ3JvdXAkZ3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJHZhbHVlMiRncm91cCRnci50eXBlKSA9PT0gXCJ2YWx1ZS1wYXJlbl9ncm91cFwiICYmIG5vZGUudmFsdWUuZ3JvdXAuZ3JvdXAub3BlbiAhPT0gbnVsbCAmJiBub2RlLnZhbHVlLmdyb3VwLmdyb3VwLmNsb3NlICE9PSBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNFbXB0eVJhd0JlZm9yZShub2RlKSB7XG4gICAgICB2YXIgX25vZGUkcmF3czI7XG4gICAgICByZXR1cm4gKChfbm9kZSRyYXdzMiA9IG5vZGUucmF3cykgPT09IG51bGwgfHwgX25vZGUkcmF3czIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJHJhd3MyLmJlZm9yZSkgPT09IFwiXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzS2V5VmFsdWVQYWlyTm9kZShub2RlKSB7XG4gICAgICB2YXIgX25vZGUkZ3JvdXBzLCBfbm9kZSRncm91cHMkO1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1jb21tYV9ncm91cFwiICYmICgoX25vZGUkZ3JvdXBzID0gbm9kZS5ncm91cHMpID09PSBudWxsIHx8IF9ub2RlJGdyb3VwcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdyb3VwcyQgPSBfbm9kZSRncm91cHNbMV0pID09PSBudWxsIHx8IF9ub2RlJGdyb3VwcyQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGdyb3VwcyQudHlwZSkgPT09IFwidmFsdWUtY29sb25cIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNLZXlWYWx1ZVBhaXJJblBhcmVuR3JvdXBOb2RlKG5vZGUpIHtcbiAgICAgIHZhciBfbm9kZSRncm91cHMyO1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1wYXJlbl9ncm91cFwiICYmICgoX25vZGUkZ3JvdXBzMiA9IG5vZGUuZ3JvdXBzKSA9PT0gbnVsbCB8fCBfbm9kZSRncm91cHMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbm9kZSRncm91cHMyWzBdKSAmJiBpc0tleVZhbHVlUGFpck5vZGUobm9kZS5ncm91cHNbMF0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1NDU1NNYXBJdGVtTm9kZShwYXRoKSB7XG4gICAgICB2YXIgX2RlY2xOb2RlJHByb3A7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKG5vZGUuZ3JvdXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnRQYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKDEpO1xuICAgICAgaWYgKCFpc0tleVZhbHVlUGFpckluUGFyZW5Hcm91cE5vZGUobm9kZSkgJiYgIShwYXJlbnRQYXJlbnROb2RlICYmIGlzS2V5VmFsdWVQYWlySW5QYXJlbkdyb3VwTm9kZShwYXJlbnRQYXJlbnROb2RlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVjbE5vZGUgPSBnZXRBbmNlc3Rvck5vZGUocGF0aCwgXCJjc3MtZGVjbFwiKTtcbiAgICAgIGlmIChkZWNsTm9kZSAhPT0gbnVsbCAmJiBkZWNsTm9kZSAhPT0gdm9pZCAwICYmIChfZGVjbE5vZGUkcHJvcCA9IGRlY2xOb2RlLnByb3ApICE9PSBudWxsICYmIF9kZWNsTm9kZSRwcm9wICE9PSB2b2lkIDAgJiYgX2RlY2xOb2RlJHByb3Auc3RhcnRzV2l0aChcIiRcIikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNLZXlWYWx1ZVBhaXJJblBhcmVuR3JvdXBOb2RlKHBhcmVudFBhcmVudE5vZGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudFBhcmVudE5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1mdW5jXCIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSW5saW5lVmFsdWVDb21tZW50Tm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcInZhbHVlLWNvbW1lbnRcIiAmJiBub2RlLmlubGluZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNIYXNoTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcInZhbHVlLXdvcmRcIiAmJiBub2RlLnZhbHVlID09PSBcIiNcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNMZWZ0Q3VybHlCcmFjZU5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJ2YWx1ZS13b3JkXCIgJiYgbm9kZS52YWx1ZSA9PT0gXCJ7XCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzUmlnaHRDdXJseUJyYWNlTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcInZhbHVlLXdvcmRcIiAmJiBub2RlLnZhbHVlID09PSBcIn1cIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNXb3JkTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gW1widmFsdWUtd29yZFwiLCBcInZhbHVlLWF0d29yZFwiXS5pbmNsdWRlcyhub2RlLnR5cGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0NvbG9uTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZS50eXBlKSA9PT0gXCJ2YWx1ZS1jb2xvblwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0tleUluVmFsdWVQYWlyTm9kZShub2RlLCBwYXJlbnROb2RlKSB7XG4gICAgICBpZiAoIWlzS2V5VmFsdWVQYWlyTm9kZShwYXJlbnROb2RlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIGdyb3Vwc1xuICAgICAgfSA9IHBhcmVudE5vZGU7XG4gICAgICBjb25zdCBpbmRleCA9IGdyb3Vwcy5pbmRleE9mKG5vZGUpO1xuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNDb2xvbk5vZGUoZ3JvdXBzW2luZGV4ICsgMV0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc01lZGlhQW5kU3VwcG9ydHNLZXl3b3Jkcyhub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZSAmJiBbXCJub3RcIiwgXCJhbmRcIiwgXCJvclwiXS5pbmNsdWRlcyhub2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0NvbG9yQWRqdXN0ZXJGdW5jTm9kZShub2RlKSB7XG4gICAgICBpZiAobm9kZS50eXBlICE9PSBcInZhbHVlLWZ1bmNcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sb3JBZGp1c3RlckZ1bmN0aW9ucy5oYXMobm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGFzdExpbmVIYXNJbmxpbmVDb21tZW50KHRleHQpIHtcbiAgICAgIHJldHVybiAvXFwvXFwvLy50ZXN0KHRleHQuc3BsaXQoL1tcXG5cXHJdLykucG9wKCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0F0V29yZFBsYWNlaG9sZGVyTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZS50eXBlKSA9PT0gXCJ2YWx1ZS1hdHdvcmRcIiAmJiBub2RlLnZhbHVlLnN0YXJ0c1dpdGgoXCJwcmV0dGllci1wbGFjZWhvbGRlci1cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzQ29uZmlndXJhdGlvbk5vZGUobm9kZSwgcGFyZW50Tm9kZSkge1xuICAgICAgdmFyIF9ub2RlJG9wZW4sIF9ub2RlJGNsb3NlO1xuICAgICAgaWYgKCgoX25vZGUkb3BlbiA9IG5vZGUub3BlbikgPT09IG51bGwgfHwgX25vZGUkb3BlbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkb3Blbi52YWx1ZSkgIT09IFwiKFwiIHx8ICgoX25vZGUkY2xvc2UgPSBub2RlLmNsb3NlKSA9PT0gbnVsbCB8fCBfbm9kZSRjbG9zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkY2xvc2UudmFsdWUpICE9PSBcIilcIiB8fCBub2RlLmdyb3Vwcy5zb21lKChncm91cCkgPT4gZ3JvdXAudHlwZSAhPT0gXCJ2YWx1ZS1jb21tYV9ncm91cFwiKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50Tm9kZS50eXBlID09PSBcInZhbHVlLWNvbW1hX2dyb3VwXCIpIHtcbiAgICAgICAgY29uc3QgcHJldklkeCA9IHBhcmVudE5vZGUuZ3JvdXBzLmluZGV4T2Yobm9kZSkgLSAxO1xuICAgICAgICBjb25zdCBtYXliZVdpdGhOb2RlID0gcGFyZW50Tm9kZS5ncm91cHNbcHJldklkeF07XG4gICAgICAgIGlmICgobWF5YmVXaXRoTm9kZSA9PT0gbnVsbCB8fCBtYXliZVdpdGhOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtYXliZVdpdGhOb2RlLnR5cGUpID09PSBcInZhbHVlLXdvcmRcIiAmJiBtYXliZVdpdGhOb2RlLnZhbHVlID09PSBcIndpdGhcIikge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzUGFyZW5Hcm91cE5vZGUobm9kZSkge1xuICAgICAgdmFyIF9ub2RlJG9wZW4yLCBfbm9kZSRjbG9zZTI7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcInZhbHVlLXBhcmVuX2dyb3VwXCIgJiYgKChfbm9kZSRvcGVuMiA9IG5vZGUub3BlbikgPT09IG51bGwgfHwgX25vZGUkb3BlbjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJG9wZW4yLnZhbHVlKSA9PT0gXCIoXCIgJiYgKChfbm9kZSRjbG9zZTIgPSBub2RlLmNsb3NlKSA9PT0gbnVsbCB8fCBfbm9kZSRjbG9zZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGNsb3NlMi52YWx1ZSkgPT09IFwiKVwiO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBnZXRBbmNlc3RvckNvdW50ZXIsXG4gICAgICBnZXRBbmNlc3Rvck5vZGUsXG4gICAgICBnZXRQcm9wT2ZEZWNsTm9kZSxcbiAgICAgIG1heWJlVG9Mb3dlckNhc2UsXG4gICAgICBpbnNpZGVWYWx1ZUZ1bmN0aW9uTm9kZSxcbiAgICAgIGluc2lkZUlDU1NSdWxlTm9kZSxcbiAgICAgIGluc2lkZUF0UnVsZU5vZGUsXG4gICAgICBpbnNpZGVVUkxGdW5jdGlvbkluSW1wb3J0QXRSdWxlTm9kZSxcbiAgICAgIGlzS2V5ZnJhbWVBdFJ1bGVLZXl3b3JkcyxcbiAgICAgIGlzV2lkZUtleXdvcmRzLFxuICAgICAgaXNMYXN0Tm9kZSxcbiAgICAgIGlzU0NTU0NvbnRyb2xEaXJlY3RpdmVOb2RlLFxuICAgICAgaXNEZXRhY2hlZFJ1bGVzZXREZWNsYXJhdGlvbk5vZGUsXG4gICAgICBpc1JlbGF0aW9uYWxPcGVyYXRvck5vZGUsXG4gICAgICBpc0VxdWFsaXR5T3BlcmF0b3JOb2RlLFxuICAgICAgaXNNdWx0aXBsaWNhdGlvbk5vZGUsXG4gICAgICBpc0RpdmlzaW9uTm9kZSxcbiAgICAgIGlzQWRkaXRpb25Ob2RlLFxuICAgICAgaXNTdWJ0cmFjdGlvbk5vZGUsXG4gICAgICBpc01vZHVsb05vZGUsXG4gICAgICBpc01hdGhPcGVyYXRvck5vZGUsXG4gICAgICBpc0VhY2hLZXl3b3JkTm9kZSxcbiAgICAgIGlzRm9yS2V5d29yZE5vZGUsXG4gICAgICBpc1VSTEZ1bmN0aW9uTm9kZSxcbiAgICAgIGlzSWZFbHNlS2V5d29yZE5vZGUsXG4gICAgICBoYXNDb21wb3Nlc05vZGUsXG4gICAgICBoYXNQYXJlbnNBcm91bmROb2RlLFxuICAgICAgaGFzRW1wdHlSYXdCZWZvcmUsXG4gICAgICBpc0RldGFjaGVkUnVsZXNldENhbGxOb2RlLFxuICAgICAgaXNUZW1wbGF0ZVBsYWNlaG9sZGVyTm9kZSxcbiAgICAgIGlzVGVtcGxhdGVQcm9wTm9kZSxcbiAgICAgIGlzUG9zdGNzc1NpbXBsZVZhck5vZGUsXG4gICAgICBpc0tleVZhbHVlUGFpck5vZGUsXG4gICAgICBpc0tleVZhbHVlUGFpckluUGFyZW5Hcm91cE5vZGUsXG4gICAgICBpc0tleUluVmFsdWVQYWlyTm9kZSxcbiAgICAgIGlzU0NTU01hcEl0ZW1Ob2RlLFxuICAgICAgaXNJbmxpbmVWYWx1ZUNvbW1lbnROb2RlLFxuICAgICAgaXNIYXNoTm9kZSxcbiAgICAgIGlzTGVmdEN1cmx5QnJhY2VOb2RlLFxuICAgICAgaXNSaWdodEN1cmx5QnJhY2VOb2RlLFxuICAgICAgaXNXb3JkTm9kZSxcbiAgICAgIGlzQ29sb25Ob2RlLFxuICAgICAgaXNNZWRpYUFuZFN1cHBvcnRzS2V5d29yZHMsXG4gICAgICBpc0NvbG9yQWRqdXN0ZXJGdW5jTm9kZSxcbiAgICAgIGxhc3RMaW5lSGFzSW5saW5lQ29tbWVudCxcbiAgICAgIGlzQXRXb3JkUGxhY2Vob2xkZXJOb2RlLFxuICAgICAgaXNDb25maWd1cmF0aW9uTm9kZSxcbiAgICAgIGlzUGFyZW5Hcm91cE5vZGVcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xpbmVfY29sdW1uX3RvX2luZGV4ID0gX19jb21tb25KUzIoe1xuICBcInNyYy91dGlscy9saW5lLWNvbHVtbi10by1pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZnVuY3Rpb24obGluZUNvbHVtbiwgdGV4dCkge1xuICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZUNvbHVtbi5saW5lIC0gMTsgKytpKSB7XG4gICAgICAgIGluZGV4ID0gdGV4dC5pbmRleE9mKFwiXFxuXCIsIGluZGV4KSArIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZXggKyBsaW5lQ29sdW1uLmNvbHVtbjtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xvYzIgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWNzcy9sb2MuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBza2lwRXZlcnl0aGluZ0J1dE5ld0xpbmVcbiAgICB9ID0gcmVxdWlyZV9za2lwKCk7XG4gICAgdmFyIGdldExhc3QgPSByZXF1aXJlX2dldF9sYXN0KCk7XG4gICAgdmFyIGxpbmVDb2x1bW5Ub0luZGV4ID0gcmVxdWlyZV9saW5lX2NvbHVtbl90b19pbmRleCgpO1xuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUxvY1N0YXJ0KG5vZGUsIHRleHQpIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS5zb3VyY2VJbmRleCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gbm9kZS5zb3VyY2VJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlLnNvdXJjZSA/IGxpbmVDb2x1bW5Ub0luZGV4KG5vZGUuc291cmNlLnN0YXJ0LCB0ZXh0KSAtIDEgOiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVMb2NFbmQobm9kZSwgdGV4dCkge1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJjc3MtY29tbWVudFwiICYmIG5vZGUuaW5saW5lKSB7XG4gICAgICAgIHJldHVybiBza2lwRXZlcnl0aGluZ0J1dE5ld0xpbmUodGV4dCwgbm9kZS5zb3VyY2Uuc3RhcnRPZmZzZXQpO1xuICAgICAgfVxuICAgICAgY29uc3QgZW5kTm9kZSA9IG5vZGUubm9kZXMgJiYgZ2V0TGFzdChub2RlLm5vZGVzKTtcbiAgICAgIGlmIChlbmROb2RlICYmIG5vZGUuc291cmNlICYmICFub2RlLnNvdXJjZS5lbmQpIHtcbiAgICAgICAgbm9kZSA9IGVuZE5vZGU7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2UuZW5kKSB7XG4gICAgICAgIHJldHVybiBsaW5lQ29sdW1uVG9JbmRleChub2RlLnNvdXJjZS5lbmQsIHRleHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUxvYyhub2RlLCB0ZXh0KSB7XG4gICAgICBpZiAobm9kZS5zb3VyY2UpIHtcbiAgICAgICAgbm9kZS5zb3VyY2Uuc3RhcnRPZmZzZXQgPSBjYWxjdWxhdGVMb2NTdGFydChub2RlLCB0ZXh0KTtcbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kT2Zmc2V0ID0gY2FsY3VsYXRlTG9jRW5kKG5vZGUsIHRleHQpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gbm9kZSkge1xuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGVba2V5XTtcbiAgICAgICAgaWYgKGtleSA9PT0gXCJzb3VyY2VcIiB8fCAhY2hpbGQgfHwgdHlwZW9mIGNoaWxkICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IFwidmFsdWUtcm9vdFwiIHx8IGNoaWxkLnR5cGUgPT09IFwidmFsdWUtdW5rbm93blwiKSB7XG4gICAgICAgICAgY2FsY3VsYXRlVmFsdWVOb2RlTG9jKGNoaWxkLCBnZXRWYWx1ZVJvb3RPZmZzZXQobm9kZSksIGNoaWxkLnRleHQgfHwgY2hpbGQudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbGN1bGF0ZUxvYyhjaGlsZCwgdGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlVmFsdWVOb2RlTG9jKG5vZGUsIHJvb3RPZmZzZXQsIHRleHQpIHtcbiAgICAgIGlmIChub2RlLnNvdXJjZSkge1xuICAgICAgICBub2RlLnNvdXJjZS5zdGFydE9mZnNldCA9IGNhbGN1bGF0ZUxvY1N0YXJ0KG5vZGUsIHRleHQpICsgcm9vdE9mZnNldDtcbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kT2Zmc2V0ID0gY2FsY3VsYXRlTG9jRW5kKG5vZGUsIHRleHQpICsgcm9vdE9mZnNldDtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG5vZGUpIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlW2tleV07XG4gICAgICAgIGlmIChrZXkgPT09IFwic291cmNlXCIgfHwgIWNoaWxkIHx8IHR5cGVvZiBjaGlsZCAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhbGN1bGF0ZVZhbHVlTm9kZUxvYyhjaGlsZCwgcm9vdE9mZnNldCwgdGV4dCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFZhbHVlUm9vdE9mZnNldChub2RlKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gbm9kZS5zb3VyY2Uuc3RhcnRPZmZzZXQ7XG4gICAgICBpZiAodHlwZW9mIG5vZGUucHJvcCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXN1bHQgKz0gbm9kZS5wcm9wLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiY3NzLWF0cnVsZVwiICYmIHR5cGVvZiBub2RlLm5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmVzdWx0ICs9IDEgKyBub2RlLm5hbWUubGVuZ3RoICsgbm9kZS5yYXdzLmFmdGVyTmFtZS5tYXRjaCgvXlxccyo6P1xccyovKVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50eXBlICE9PSBcImNzcy1hdHJ1bGVcIiAmJiBub2RlLnJhd3MgJiYgdHlwZW9mIG5vZGUucmF3cy5iZXR3ZWVuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlc3VsdCArPSBub2RlLnJhd3MuYmV0d2Vlbi5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXBsYWNlUXVvdGVzSW5JbmxpbmVDb21tZW50cyh0ZXh0KSB7XG4gICAgICBsZXQgc3RhdGUgPSBcImluaXRpYWxcIjtcbiAgICAgIGxldCBzdGF0ZVRvUmV0dXJuRnJvbVF1b3RlcyA9IFwiaW5pdGlhbFwiO1xuICAgICAgbGV0IGlubGluZUNvbW1lbnRTdGFydEluZGV4O1xuICAgICAgbGV0IGlubGluZUNvbW1lbnRDb250YWluc1F1b3RlcyA9IGZhbHNlO1xuICAgICAgY29uc3QgaW5saW5lQ29tbWVudHNUb1JlcGxhY2UgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjID0gdGV4dFtpXTtcbiAgICAgICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICAgIGNhc2UgXCJpbml0aWFsXCI6XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBcInNpbmdsZS1xdW90ZXNcIjtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA9PT0gJ1wiJykge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFwiZG91YmxlLXF1b3Rlc1wiO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoYyA9PT0gXCJ1XCIgfHwgYyA9PT0gXCJVXCIpICYmIHRleHQuc2xpY2UoaSwgaSArIDQpLnRvTG93ZXJDYXNlKCkgPT09IFwidXJsKFwiKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gXCJ1cmxcIjtcbiAgICAgICAgICAgICAgaSArPSAzO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjID09PSBcIipcIiAmJiB0ZXh0W2kgLSAxXSA9PT0gXCIvXCIpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBcImNvbW1lbnQtYmxvY2tcIjtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCIvXCIgJiYgdGV4dFtpIC0gMV0gPT09IFwiL1wiKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gXCJjb21tZW50LWlubGluZVwiO1xuICAgICAgICAgICAgICBpbmxpbmVDb21tZW50U3RhcnRJbmRleCA9IGkgLSAxO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIGNhc2UgXCJzaW5nbGUtcXVvdGVzXCI6XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCInXCIgJiYgdGV4dFtpIC0gMV0gIT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVUb1JldHVybkZyb21RdW90ZXM7XG4gICAgICAgICAgICAgIHN0YXRlVG9SZXR1cm5Gcm9tUXVvdGVzID0gXCJpbml0aWFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCJcXG5cIiB8fCBjID09PSBcIlxcclwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgY2FzZSBcImRvdWJsZS1xdW90ZXNcIjpcbiAgICAgICAgICAgIGlmIChjID09PSAnXCInICYmIHRleHRbaSAtIDFdICE9PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlVG9SZXR1cm5Gcm9tUXVvdGVzO1xuICAgICAgICAgICAgICBzdGF0ZVRvUmV0dXJuRnJvbVF1b3RlcyA9IFwiaW5pdGlhbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT09IFwiXFxuXCIgfHwgYyA9PT0gXCJcXHJcIikge1xuICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgICAgIGlmIChjID09PSBcIilcIikge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFwiaW5pdGlhbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT09IFwiXFxuXCIgfHwgYyA9PT0gXCJcXHJcIikge1xuICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjID09PSBcIidcIikge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFwic2luZ2xlLXF1b3Rlc1wiO1xuICAgICAgICAgICAgICBzdGF0ZVRvUmV0dXJuRnJvbVF1b3RlcyA9IFwidXJsXCI7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT09ICdcIicpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBcImRvdWJsZS1xdW90ZXNcIjtcbiAgICAgICAgICAgICAgc3RhdGVUb1JldHVybkZyb21RdW90ZXMgPSBcInVybFwiO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIGNhc2UgXCJjb21tZW50LWJsb2NrXCI6XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCIvXCIgJiYgdGV4dFtpIC0gMV0gPT09IFwiKlwiKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gXCJpbml0aWFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBjYXNlIFwiY29tbWVudC1pbmxpbmVcIjpcbiAgICAgICAgICAgIGlmIChjID09PSAnXCInIHx8IGMgPT09IFwiJ1wiIHx8IGMgPT09IFwiKlwiKSB7XG4gICAgICAgICAgICAgIGlubGluZUNvbW1lbnRDb250YWluc1F1b3RlcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA9PT0gXCJcXG5cIiB8fCBjID09PSBcIlxcclwiKSB7XG4gICAgICAgICAgICAgIGlmIChpbmxpbmVDb21tZW50Q29udGFpbnNRdW90ZXMpIHtcbiAgICAgICAgICAgICAgICBpbmxpbmVDb21tZW50c1RvUmVwbGFjZS5wdXNoKFtpbmxpbmVDb21tZW50U3RhcnRJbmRleCwgaV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHN0YXRlID0gXCJpbml0aWFsXCI7XG4gICAgICAgICAgICAgIGlubGluZUNvbW1lbnRDb250YWluc1F1b3RlcyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgW3N0YXJ0LCBlbmRdIG9mIGlubGluZUNvbW1lbnRzVG9SZXBsYWNlKSB7XG4gICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDAsIHN0YXJ0KSArIHRleHQuc2xpY2Uoc3RhcnQsIGVuZCkucmVwbGFjZSgvW1wiJypdL2csIFwiIFwiKSArIHRleHQuc2xpY2UoZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBsb2NTdGFydChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5zb3VyY2Uuc3RhcnRPZmZzZXQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxvY0VuZChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5zb3VyY2UuZW5kT2Zmc2V0O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZCxcbiAgICAgIGNhbGN1bGF0ZUxvYyxcbiAgICAgIHJlcGxhY2VRdW90ZXNJbklubGluZUNvbW1lbnRzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9pc19sZXNzX3BhcnNlciA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtY3NzL3V0aWxzL2lzLWxlc3MtcGFyc2VyLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBpc0xlc3NQYXJzZXIob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucGFyc2VyID09PSBcImNzc1wiIHx8IG9wdGlvbnMucGFyc2VyID09PSBcImxlc3NcIjtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gaXNMZXNzUGFyc2VyO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2lzX3Njc3MgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWNzcy91dGlscy9pcy1zY3NzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBpc1NDU1MocGFyc2VyLCB0ZXh0KSB7XG4gICAgICBjb25zdCBoYXNFeHBsaWNpdFBhcnNlckNob2ljZSA9IHBhcnNlciA9PT0gXCJsZXNzXCIgfHwgcGFyc2VyID09PSBcInNjc3NcIjtcbiAgICAgIGNvbnN0IElTX1BPU1NJQkxZX1NDU1MgPSAvKD86XFx3XFxzKjpcXHMqW146fV0rfCMpe3xAaW1wb3J0W15cXG5dKyg/OnVybHwsKS87XG4gICAgICByZXR1cm4gaGFzRXhwbGljaXRQYXJzZXJDaG9pY2UgPyBwYXJzZXIgPT09IFwic2Nzc1wiIDogSVNfUE9TU0lCTFlfU0NTUy50ZXN0KHRleHQpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBpc1NDU1M7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY3NzX3VuaXRzX2V2YWx1YXRlID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1jc3MvdXRpbHMvY3NzLXVuaXRzLmV2YWx1YXRlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBlbTogXCJlbVwiLFxuICAgICAgcmVtOiBcInJlbVwiLFxuICAgICAgZXg6IFwiZXhcIixcbiAgICAgIHJleDogXCJyZXhcIixcbiAgICAgIGNhcDogXCJjYXBcIixcbiAgICAgIHJjYXA6IFwicmNhcFwiLFxuICAgICAgY2g6IFwiY2hcIixcbiAgICAgIHJjaDogXCJyY2hcIixcbiAgICAgIGljOiBcImljXCIsXG4gICAgICByaWM6IFwicmljXCIsXG4gICAgICBsaDogXCJsaFwiLFxuICAgICAgcmxoOiBcInJsaFwiLFxuICAgICAgdnc6IFwidndcIixcbiAgICAgIHN2dzogXCJzdndcIixcbiAgICAgIGx2dzogXCJsdndcIixcbiAgICAgIGR2dzogXCJkdndcIixcbiAgICAgIHZoOiBcInZoXCIsXG4gICAgICBzdmg6IFwic3ZoXCIsXG4gICAgICBsdmg6IFwibHZoXCIsXG4gICAgICBkdmg6IFwiZHZoXCIsXG4gICAgICB2aTogXCJ2aVwiLFxuICAgICAgc3ZpOiBcInN2aVwiLFxuICAgICAgbHZpOiBcImx2aVwiLFxuICAgICAgZHZpOiBcImR2aVwiLFxuICAgICAgdmI6IFwidmJcIixcbiAgICAgIHN2YjogXCJzdmJcIixcbiAgICAgIGx2YjogXCJsdmJcIixcbiAgICAgIGR2YjogXCJkdmJcIixcbiAgICAgIHZtaW46IFwidm1pblwiLFxuICAgICAgc3ZtaW46IFwic3ZtaW5cIixcbiAgICAgIGx2bWluOiBcImx2bWluXCIsXG4gICAgICBkdm1pbjogXCJkdm1pblwiLFxuICAgICAgdm1heDogXCJ2bWF4XCIsXG4gICAgICBzdm1heDogXCJzdm1heFwiLFxuICAgICAgbHZtYXg6IFwibHZtYXhcIixcbiAgICAgIGR2bWF4OiBcImR2bWF4XCIsXG4gICAgICBjbTogXCJjbVwiLFxuICAgICAgbW06IFwibW1cIixcbiAgICAgIHE6IFwiUVwiLFxuICAgICAgaW46IFwiaW5cIixcbiAgICAgIHB0OiBcInB0XCIsXG4gICAgICBwYzogXCJwY1wiLFxuICAgICAgcHg6IFwicHhcIixcbiAgICAgIGRlZzogXCJkZWdcIixcbiAgICAgIGdyYWQ6IFwiZ3JhZFwiLFxuICAgICAgcmFkOiBcInJhZFwiLFxuICAgICAgdHVybjogXCJ0dXJuXCIsXG4gICAgICBzOiBcInNcIixcbiAgICAgIG1zOiBcIm1zXCIsXG4gICAgICBoejogXCJIelwiLFxuICAgICAga2h6OiBcImtIelwiLFxuICAgICAgZHBpOiBcImRwaVwiLFxuICAgICAgZHBjbTogXCJkcGNtXCIsXG4gICAgICBkcHB4OiBcImRwcHhcIixcbiAgICAgIHg6IFwieFwiXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wcmludF91bml0ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1jc3MvdXRpbHMvcHJpbnQtdW5pdC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIENTU19VTklUUyA9IHJlcXVpcmVfY3NzX3VuaXRzX2V2YWx1YXRlKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRVbml0KHVuaXQpIHtcbiAgICAgIGNvbnN0IGxvd2VyY2FzZWQgPSB1bml0LnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKENTU19VTklUUywgbG93ZXJjYXNlZCkgPyBDU1NfVU5JVFNbbG93ZXJjYXNlZF0gOiB1bml0O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmludFVuaXQ7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJpbnRlcl9wb3N0Y3NzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1jc3MvcHJpbnRlci1wb3N0Y3NzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZ2V0TGFzdCA9IHJlcXVpcmVfZ2V0X2xhc3QoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnROdW1iZXIsXG4gICAgICBwcmludFN0cmluZyxcbiAgICAgIGhhc05ld2xpbmUsXG4gICAgICBpc0Zyb250TWF0dGVyTm9kZSxcbiAgICAgIGlzTmV4dExpbmVFbXB0eSxcbiAgICAgIGlzTm9uRW1wdHlBcnJheVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBncm91cCxcbiAgICAgICAgZmlsbCxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBkZWRlbnQsXG4gICAgICAgIGlmQnJlYWssXG4gICAgICAgIGJyZWFrUGFyZW50XG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgcmVtb3ZlTGluZXMsXG4gICAgICAgIGdldERvY1BhcnRzXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIgY2xlYW4gPSByZXF1aXJlX2NsZWFuMigpO1xuICAgIHZhciBlbWJlZCA9IHJlcXVpcmVfZW1iZWQyKCk7XG4gICAgdmFyIHtcbiAgICAgIGluc2VydFByYWdtYVxuICAgIH0gPSByZXF1aXJlX3ByYWdtYTIoKTtcbiAgICB2YXIge1xuICAgICAgZ2V0QW5jZXN0b3JOb2RlLFxuICAgICAgZ2V0UHJvcE9mRGVjbE5vZGUsXG4gICAgICBtYXliZVRvTG93ZXJDYXNlLFxuICAgICAgaW5zaWRlVmFsdWVGdW5jdGlvbk5vZGUsXG4gICAgICBpbnNpZGVJQ1NTUnVsZU5vZGUsXG4gICAgICBpbnNpZGVBdFJ1bGVOb2RlLFxuICAgICAgaW5zaWRlVVJMRnVuY3Rpb25JbkltcG9ydEF0UnVsZU5vZGUsXG4gICAgICBpc0tleWZyYW1lQXRSdWxlS2V5d29yZHMsXG4gICAgICBpc1dpZGVLZXl3b3JkcyxcbiAgICAgIGlzTGFzdE5vZGUsXG4gICAgICBpc1NDU1NDb250cm9sRGlyZWN0aXZlTm9kZSxcbiAgICAgIGlzRGV0YWNoZWRSdWxlc2V0RGVjbGFyYXRpb25Ob2RlLFxuICAgICAgaXNSZWxhdGlvbmFsT3BlcmF0b3JOb2RlLFxuICAgICAgaXNFcXVhbGl0eU9wZXJhdG9yTm9kZSxcbiAgICAgIGlzTXVsdGlwbGljYXRpb25Ob2RlLFxuICAgICAgaXNEaXZpc2lvbk5vZGUsXG4gICAgICBpc0FkZGl0aW9uTm9kZSxcbiAgICAgIGlzU3VidHJhY3Rpb25Ob2RlLFxuICAgICAgaXNNYXRoT3BlcmF0b3JOb2RlLFxuICAgICAgaXNFYWNoS2V5d29yZE5vZGUsXG4gICAgICBpc0ZvcktleXdvcmROb2RlLFxuICAgICAgaXNVUkxGdW5jdGlvbk5vZGUsXG4gICAgICBpc0lmRWxzZUtleXdvcmROb2RlLFxuICAgICAgaGFzQ29tcG9zZXNOb2RlLFxuICAgICAgaGFzUGFyZW5zQXJvdW5kTm9kZSxcbiAgICAgIGhhc0VtcHR5UmF3QmVmb3JlLFxuICAgICAgaXNLZXlWYWx1ZVBhaXJOb2RlLFxuICAgICAgaXNLZXlJblZhbHVlUGFpck5vZGUsXG4gICAgICBpc0RldGFjaGVkUnVsZXNldENhbGxOb2RlLFxuICAgICAgaXNUZW1wbGF0ZVBsYWNlaG9sZGVyTm9kZSxcbiAgICAgIGlzVGVtcGxhdGVQcm9wTm9kZSxcbiAgICAgIGlzUG9zdGNzc1NpbXBsZVZhck5vZGUsXG4gICAgICBpc1NDU1NNYXBJdGVtTm9kZSxcbiAgICAgIGlzSW5saW5lVmFsdWVDb21tZW50Tm9kZSxcbiAgICAgIGlzSGFzaE5vZGUsXG4gICAgICBpc0xlZnRDdXJseUJyYWNlTm9kZSxcbiAgICAgIGlzUmlnaHRDdXJseUJyYWNlTm9kZSxcbiAgICAgIGlzV29yZE5vZGUsXG4gICAgICBpc0NvbG9uTm9kZSxcbiAgICAgIGlzTWVkaWFBbmRTdXBwb3J0c0tleXdvcmRzLFxuICAgICAgaXNDb2xvckFkanVzdGVyRnVuY05vZGUsXG4gICAgICBsYXN0TGluZUhhc0lubGluZUNvbW1lbnQsXG4gICAgICBpc0F0V29yZFBsYWNlaG9sZGVyTm9kZSxcbiAgICAgIGlzQ29uZmlndXJhdGlvbk5vZGUsXG4gICAgICBpc1BhcmVuR3JvdXBOb2RlXG4gICAgfSA9IHJlcXVpcmVfdXRpbHM4KCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jMigpO1xuICAgIHZhciBpc0xlc3NQYXJzZXIgPSByZXF1aXJlX2lzX2xlc3NfcGFyc2VyKCk7XG4gICAgdmFyIGlzU0NTUyA9IHJlcXVpcmVfaXNfc2NzcygpO1xuICAgIHZhciBwcmludFVuaXQgPSByZXF1aXJlX3ByaW50X3VuaXQoKTtcbiAgICBmdW5jdGlvbiBzaG91bGRQcmludENvbW1hKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnRyYWlsaW5nQ29tbWEgPT09IFwiZXM1XCIgfHwgb3B0aW9ucy50cmFpbGluZ0NvbW1hID09PSBcImFsbFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZW5lcmljUHJpbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiZnJvbnQtbWF0dGVyXCI6XG4gICAgICAgICAgcmV0dXJuIFtub2RlLnJhdywgaGFyZGxpbmVdO1xuICAgICAgICBjYXNlIFwiY3NzLXJvb3RcIjoge1xuICAgICAgICAgIGNvbnN0IG5vZGVzID0gcHJpbnROb2RlU2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICAgIGNvbnN0IGFmdGVyID0gbm9kZS5yYXdzLmFmdGVyLnRyaW0oKTtcbiAgICAgICAgICByZXR1cm4gW25vZGVzLCBhZnRlciA/IGAgJHthZnRlcn1gIDogXCJcIiwgZ2V0RG9jUGFydHMobm9kZXMpLmxlbmd0aCA+IDAgPyBoYXJkbGluZSA6IFwiXCJdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjc3MtY29tbWVudFwiOiB7XG4gICAgICAgICAgY29uc3QgaXNJbmxpbmVDb21tZW50ID0gbm9kZS5pbmxpbmUgfHwgbm9kZS5yYXdzLmlubGluZTtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gb3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2UobG9jU3RhcnQobm9kZSksIGxvY0VuZChub2RlKSk7XG4gICAgICAgICAgcmV0dXJuIGlzSW5saW5lQ29tbWVudCA/IHRleHQudHJpbUVuZCgpIDogdGV4dDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY3NzLXJ1bGVcIjoge1xuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJzZWxlY3RvclwiKSwgbm9kZS5pbXBvcnRhbnQgPyBcIiAhaW1wb3J0YW50XCIgOiBcIlwiLCBub2RlLm5vZGVzID8gW25vZGUuc2VsZWN0b3IgJiYgbm9kZS5zZWxlY3Rvci50eXBlID09PSBcInNlbGVjdG9yLXVua25vd25cIiAmJiBsYXN0TGluZUhhc0lubGluZUNvbW1lbnQobm9kZS5zZWxlY3Rvci52YWx1ZSkgPyBsaW5lIDogXCIgXCIsIFwie1wiLCBub2RlLm5vZGVzLmxlbmd0aCA+IDAgPyBpbmRlbnQoW2hhcmRsaW5lLCBwcmludE5vZGVTZXF1ZW5jZShwYXRoLCBvcHRpb25zLCBwcmludCldKSA6IFwiXCIsIGhhcmRsaW5lLCBcIn1cIiwgaXNEZXRhY2hlZFJ1bGVzZXREZWNsYXJhdGlvbk5vZGUobm9kZSkgPyBcIjtcIiA6IFwiXCJdIDogXCI7XCJdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjc3MtZGVjbFwiOiB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJldHdlZW46IHJhd0JldHdlZW5cbiAgICAgICAgICB9ID0gbm9kZS5yYXdzO1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWRCZXR3ZWVuID0gcmF3QmV0d2Vlbi50cmltKCk7XG4gICAgICAgICAgY29uc3QgaXNDb2xvbiA9IHRyaW1tZWRCZXR3ZWVuID09PSBcIjpcIjtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBoYXNDb21wb3Nlc05vZGUobm9kZSkgPyByZW1vdmVMaW5lcyhwcmludChcInZhbHVlXCIpKSA6IHByaW50KFwidmFsdWVcIik7XG4gICAgICAgICAgaWYgKCFpc0NvbG9uICYmIGxhc3RMaW5lSGFzSW5saW5lQ29tbWVudCh0cmltbWVkQmV0d2VlbikpIHtcbiAgICAgICAgICAgIHZhbHVlID0gaW5kZW50KFtoYXJkbGluZSwgZGVkZW50KHZhbHVlKV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW25vZGUucmF3cy5iZWZvcmUucmVwbGFjZSgvW1xccztdL2csIFwiXCIpLCBpbnNpZGVJQ1NTUnVsZU5vZGUocGF0aCkgPyBub2RlLnByb3AgOiBtYXliZVRvTG93ZXJDYXNlKG5vZGUucHJvcCksIHRyaW1tZWRCZXR3ZWVuLnN0YXJ0c1dpdGgoXCIvL1wiKSA/IFwiIFwiIDogXCJcIiwgdHJpbW1lZEJldHdlZW4sIG5vZGUuZXh0ZW5kID8gXCJcIiA6IFwiIFwiLCBpc0xlc3NQYXJzZXIob3B0aW9ucykgJiYgbm9kZS5leHRlbmQgJiYgbm9kZS5zZWxlY3RvciA/IFtcImV4dGVuZChcIiwgcHJpbnQoXCJzZWxlY3RvclwiKSwgXCIpXCJdIDogXCJcIiwgdmFsdWUsIG5vZGUucmF3cy5pbXBvcnRhbnQgPyBub2RlLnJhd3MuaW1wb3J0YW50LnJlcGxhY2UoL1xccyohXFxzKmltcG9ydGFudC9pLCBcIiAhaW1wb3J0YW50XCIpIDogbm9kZS5pbXBvcnRhbnQgPyBcIiAhaW1wb3J0YW50XCIgOiBcIlwiLCBub2RlLnJhd3Muc2Nzc0RlZmF1bHQgPyBub2RlLnJhd3Muc2Nzc0RlZmF1bHQucmVwbGFjZSgvXFxzKiFkZWZhdWx0L2ksIFwiICFkZWZhdWx0XCIpIDogbm9kZS5zY3NzRGVmYXVsdCA/IFwiICFkZWZhdWx0XCIgOiBcIlwiLCBub2RlLnJhd3Muc2Nzc0dsb2JhbCA/IG5vZGUucmF3cy5zY3NzR2xvYmFsLnJlcGxhY2UoL1xccyohZ2xvYmFsL2ksIFwiICFnbG9iYWxcIikgOiBub2RlLnNjc3NHbG9iYWwgPyBcIiAhZ2xvYmFsXCIgOiBcIlwiLCBub2RlLm5vZGVzID8gW1wiIHtcIiwgaW5kZW50KFtzb2Z0bGluZSwgcHJpbnROb2RlU2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQpXSksIHNvZnRsaW5lLCBcIn1cIl0gOiBpc1RlbXBsYXRlUHJvcE5vZGUobm9kZSkgJiYgIXBhcmVudE5vZGUucmF3cy5zZW1pY29sb24gJiYgb3B0aW9ucy5vcmlnaW5hbFRleHRbbG9jRW5kKG5vZGUpIC0gMV0gIT09IFwiO1wiID8gXCJcIiA6IG9wdGlvbnMuX19pc0hUTUxTdHlsZUF0dHJpYnV0ZSAmJiBpc0xhc3ROb2RlKHBhdGgsIG5vZGUpID8gaWZCcmVhayhcIjtcIikgOiBcIjtcIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNzcy1hdHJ1bGVcIjoge1xuICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgICAgICBjb25zdCBpc1RlbXBsYXRlUGxhY2Vob2xkZXJOb2RlV2l0aG91dFNlbWlDb2xvbiA9IGlzVGVtcGxhdGVQbGFjZWhvbGRlck5vZGUobm9kZSkgJiYgIXBhcmVudE5vZGUucmF3cy5zZW1pY29sb24gJiYgb3B0aW9ucy5vcmlnaW5hbFRleHRbbG9jRW5kKG5vZGUpIC0gMV0gIT09IFwiO1wiO1xuICAgICAgICAgIGlmIChpc0xlc3NQYXJzZXIob3B0aW9ucykpIHtcbiAgICAgICAgICAgIGlmIChub2RlLm1peGluKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJzZWxlY3RvclwiKSwgbm9kZS5pbXBvcnRhbnQgPyBcIiAhaW1wb3J0YW50XCIgOiBcIlwiLCBpc1RlbXBsYXRlUGxhY2Vob2xkZXJOb2RlV2l0aG91dFNlbWlDb2xvbiA/IFwiXCIgOiBcIjtcIl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZS5mdW5jdGlvbikge1xuICAgICAgICAgICAgICByZXR1cm4gW25vZGUubmFtZSwgcHJpbnQoXCJwYXJhbXNcIiksIGlzVGVtcGxhdGVQbGFjZWhvbGRlck5vZGVXaXRob3V0U2VtaUNvbG9uID8gXCJcIiA6IFwiO1wiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub2RlLnZhcmlhYmxlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXCJAXCIsIG5vZGUubmFtZSwgXCI6IFwiLCBub2RlLnZhbHVlID8gcHJpbnQoXCJ2YWx1ZVwiKSA6IFwiXCIsIG5vZGUucmF3cy5iZXR3ZWVuLnRyaW0oKSA/IG5vZGUucmF3cy5iZXR3ZWVuLnRyaW0oKSArIFwiIFwiIDogXCJcIiwgbm9kZS5ub2RlcyA/IFtcIntcIiwgaW5kZW50KFtub2RlLm5vZGVzLmxlbmd0aCA+IDAgPyBzb2Z0bGluZSA6IFwiXCIsIHByaW50Tm9kZVNlcXVlbmNlKHBhdGgsIG9wdGlvbnMsIHByaW50KV0pLCBzb2Z0bGluZSwgXCJ9XCJdIDogXCJcIiwgaXNUZW1wbGF0ZVBsYWNlaG9sZGVyTm9kZVdpdGhvdXRTZW1pQ29sb24gPyBcIlwiIDogXCI7XCJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW1wiQFwiLCBpc0RldGFjaGVkUnVsZXNldENhbGxOb2RlKG5vZGUpIHx8IG5vZGUubmFtZS5lbmRzV2l0aChcIjpcIikgPyBub2RlLm5hbWUgOiBtYXliZVRvTG93ZXJDYXNlKG5vZGUubmFtZSksIG5vZGUucGFyYW1zID8gW2lzRGV0YWNoZWRSdWxlc2V0Q2FsbE5vZGUobm9kZSkgPyBcIlwiIDogaXNUZW1wbGF0ZVBsYWNlaG9sZGVyTm9kZShub2RlKSA/IG5vZGUucmF3cy5hZnRlck5hbWUgPT09IFwiXCIgPyBcIlwiIDogbm9kZS5uYW1lLmVuZHNXaXRoKFwiOlwiKSA/IFwiIFwiIDogL15cXHMqXFxuXFxzKlxcbi8udGVzdChub2RlLnJhd3MuYWZ0ZXJOYW1lKSA/IFtoYXJkbGluZSwgaGFyZGxpbmVdIDogL15cXHMqXFxuLy50ZXN0KG5vZGUucmF3cy5hZnRlck5hbWUpID8gaGFyZGxpbmUgOiBcIiBcIiA6IFwiIFwiLCBwcmludChcInBhcmFtc1wiKV0gOiBcIlwiLCBub2RlLnNlbGVjdG9yID8gaW5kZW50KFtcIiBcIiwgcHJpbnQoXCJzZWxlY3RvclwiKV0pIDogXCJcIiwgbm9kZS52YWx1ZSA/IGdyb3VwKFtcIiBcIiwgcHJpbnQoXCJ2YWx1ZVwiKSwgaXNTQ1NTQ29udHJvbERpcmVjdGl2ZU5vZGUobm9kZSkgPyBoYXNQYXJlbnNBcm91bmROb2RlKG5vZGUpID8gXCIgXCIgOiBsaW5lIDogXCJcIl0pIDogbm9kZS5uYW1lID09PSBcImVsc2VcIiA/IFwiIFwiIDogXCJcIiwgbm9kZS5ub2RlcyA/IFtpc1NDU1NDb250cm9sRGlyZWN0aXZlTm9kZShub2RlKSA/IFwiXCIgOiBub2RlLnNlbGVjdG9yICYmICFub2RlLnNlbGVjdG9yLm5vZGVzICYmIHR5cGVvZiBub2RlLnNlbGVjdG9yLnZhbHVlID09PSBcInN0cmluZ1wiICYmIGxhc3RMaW5lSGFzSW5saW5lQ29tbWVudChub2RlLnNlbGVjdG9yLnZhbHVlKSB8fCAhbm9kZS5zZWxlY3RvciAmJiB0eXBlb2Ygbm9kZS5wYXJhbXMgPT09IFwic3RyaW5nXCIgJiYgbGFzdExpbmVIYXNJbmxpbmVDb21tZW50KG5vZGUucGFyYW1zKSA/IGxpbmUgOiBcIiBcIiwgXCJ7XCIsIGluZGVudChbbm9kZS5ub2Rlcy5sZW5ndGggPiAwID8gc29mdGxpbmUgOiBcIlwiLCBwcmludE5vZGVTZXF1ZW5jZShwYXRoLCBvcHRpb25zLCBwcmludCldKSwgc29mdGxpbmUsIFwifVwiXSA6IGlzVGVtcGxhdGVQbGFjZWhvbGRlck5vZGVXaXRob3V0U2VtaUNvbG9uID8gXCJcIiA6IFwiO1wiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibWVkaWEtcXVlcnktbGlzdFwiOiB7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgICAgICBwYXRoLmVhY2goKGNoaWxkUGF0aCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZTIgPSBjaGlsZFBhdGguZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChub2RlMi50eXBlID09PSBcIm1lZGlhLXF1ZXJ5XCIgJiYgbm9kZTIudmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHMucHVzaChwcmludCgpKTtcbiAgICAgICAgICB9LCBcIm5vZGVzXCIpO1xuICAgICAgICAgIHJldHVybiBncm91cChpbmRlbnQoam9pbihsaW5lLCBwYXJ0cykpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibWVkaWEtcXVlcnlcIjoge1xuICAgICAgICAgIHJldHVybiBbam9pbihcIiBcIiwgcGF0aC5tYXAocHJpbnQsIFwibm9kZXNcIikpLCBpc0xhc3ROb2RlKHBhdGgsIG5vZGUpID8gXCJcIiA6IFwiLFwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibWVkaWEtdHlwZVwiOiB7XG4gICAgICAgICAgcmV0dXJuIGFkanVzdE51bWJlcnMoYWRqdXN0U3RyaW5ncyhub2RlLnZhbHVlLCBvcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm1lZGlhLWZlYXR1cmUtZXhwcmVzc2lvblwiOiB7XG4gICAgICAgICAgaWYgKCFub2RlLm5vZGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtcIihcIiwgLi4ucGF0aC5tYXAocHJpbnQsIFwibm9kZXNcIiksIFwiKVwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibWVkaWEtZmVhdHVyZVwiOiB7XG4gICAgICAgICAgcmV0dXJuIG1heWJlVG9Mb3dlckNhc2UoYWRqdXN0U3RyaW5ncyhub2RlLnZhbHVlLnJlcGxhY2UoLyArL2csIFwiIFwiKSwgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtZWRpYS1jb2xvblwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtub2RlLnZhbHVlLCBcIiBcIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm1lZGlhLXZhbHVlXCI6IHtcbiAgICAgICAgICByZXR1cm4gYWRqdXN0TnVtYmVycyhhZGp1c3RTdHJpbmdzKG5vZGUudmFsdWUsIG9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibWVkaWEta2V5d29yZFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGFkanVzdFN0cmluZ3Mobm9kZS52YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm1lZGlhLXVybFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGFkanVzdFN0cmluZ3Mobm9kZS52YWx1ZS5yZXBsYWNlKC9edXJsXFwoXFxzKy9naSwgXCJ1cmwoXCIpLnJlcGxhY2UoL1xccytcXCkkL2csIFwiKVwiKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm1lZGlhLXVua25vd25cIjoge1xuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZWxlY3Rvci1yb290XCI6IHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW2luc2lkZUF0UnVsZU5vZGUocGF0aCwgXCJjdXN0b20tc2VsZWN0b3JcIikgPyBbZ2V0QW5jZXN0b3JOb2RlKHBhdGgsIFwiY3NzLWF0cnVsZVwiKS5jdXN0b21TZWxlY3RvciwgbGluZV0gOiBcIlwiLCBqb2luKFtcIixcIiwgaW5zaWRlQXRSdWxlTm9kZShwYXRoLCBbXCJleHRlbmRcIiwgXCJjdXN0b20tc2VsZWN0b3JcIiwgXCJuZXN0XCJdKSA/IGxpbmUgOiBoYXJkbGluZV0sIHBhdGgubWFwKHByaW50LCBcIm5vZGVzXCIpKV0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZWxlY3Rvci1zZWxlY3RvclwiOiB7XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKGluZGVudChwYXRoLm1hcChwcmludCwgXCJub2Rlc1wiKSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZWxlY3Rvci1jb21tZW50XCI6IHtcbiAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic2VsZWN0b3Itc3RyaW5nXCI6IHtcbiAgICAgICAgICByZXR1cm4gYWRqdXN0U3RyaW5ncyhub2RlLnZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic2VsZWN0b3ItdGFnXCI6IHtcbiAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUubm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICAgICAgICBjb25zdCBwcmV2Tm9kZSA9IGluZGV4ICYmIHBhcmVudE5vZGUubm9kZXNbaW5kZXggLSAxXTtcbiAgICAgICAgICByZXR1cm4gW25vZGUubmFtZXNwYWNlID8gW25vZGUubmFtZXNwYWNlID09PSB0cnVlID8gXCJcIiA6IG5vZGUubmFtZXNwYWNlLnRyaW0oKSwgXCJ8XCJdIDogXCJcIiwgcHJldk5vZGUudHlwZSA9PT0gXCJzZWxlY3Rvci1uZXN0aW5nXCIgPyBub2RlLnZhbHVlIDogYWRqdXN0TnVtYmVycyhpc0tleWZyYW1lQXRSdWxlS2V5d29yZHMocGF0aCwgbm9kZS52YWx1ZSkgPyBub2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgOiBub2RlLnZhbHVlKV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInNlbGVjdG9yLWlkXCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wiI1wiLCBub2RlLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic2VsZWN0b3ItY2xhc3NcIjoge1xuICAgICAgICAgIHJldHVybiBbXCIuXCIsIGFkanVzdE51bWJlcnMoYWRqdXN0U3RyaW5ncyhub2RlLnZhbHVlLCBvcHRpb25zKSldO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZWxlY3Rvci1hdHRyaWJ1dGVcIjoge1xuICAgICAgICAgIHJldHVybiBbXCJbXCIsIG5vZGUubmFtZXNwYWNlID8gW25vZGUubmFtZXNwYWNlID09PSB0cnVlID8gXCJcIiA6IG5vZGUubmFtZXNwYWNlLnRyaW0oKSwgXCJ8XCJdIDogXCJcIiwgbm9kZS5hdHRyaWJ1dGUudHJpbSgpLCBub2RlLm9wZXJhdG9yID8gbm9kZS5vcGVyYXRvciA6IFwiXCIsIG5vZGUudmFsdWUgPyBxdW90ZUF0dHJpYnV0ZVZhbHVlKGFkanVzdFN0cmluZ3Mobm9kZS52YWx1ZS50cmltKCksIG9wdGlvbnMpLCBvcHRpb25zKSA6IFwiXCIsIG5vZGUuaW5zZW5zaXRpdmUgPyBcIiBpXCIgOiBcIlwiLCBcIl1cIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInNlbGVjdG9yLWNvbWJpbmF0b3JcIjoge1xuICAgICAgICAgIGlmIChub2RlLnZhbHVlID09PSBcIitcIiB8fCBub2RlLnZhbHVlID09PSBcIj5cIiB8fCBub2RlLnZhbHVlID09PSBcIn5cIiB8fCBub2RlLnZhbHVlID09PSBcIj4+PlwiKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICBjb25zdCBsZWFkaW5nMiA9IHBhcmVudE5vZGUudHlwZSA9PT0gXCJzZWxlY3Rvci1zZWxlY3RvclwiICYmIHBhcmVudE5vZGUubm9kZXNbMF0gPT09IG5vZGUgPyBcIlwiIDogbGluZTtcbiAgICAgICAgICAgIHJldHVybiBbbGVhZGluZzIsIG5vZGUudmFsdWUsIGlzTGFzdE5vZGUocGF0aCwgbm9kZSkgPyBcIlwiIDogXCIgXCJdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBsZWFkaW5nID0gbm9kZS52YWx1ZS50cmltKCkuc3RhcnRzV2l0aChcIihcIikgPyBsaW5lIDogXCJcIjtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGFkanVzdE51bWJlcnMoYWRqdXN0U3RyaW5ncyhub2RlLnZhbHVlLnRyaW0oKSwgb3B0aW9ucykpIHx8IGxpbmU7XG4gICAgICAgICAgcmV0dXJuIFtsZWFkaW5nLCB2YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInNlbGVjdG9yLXVuaXZlcnNhbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtub2RlLm5hbWVzcGFjZSA/IFtub2RlLm5hbWVzcGFjZSA9PT0gdHJ1ZSA/IFwiXCIgOiBub2RlLm5hbWVzcGFjZS50cmltKCksIFwifFwiXSA6IFwiXCIsIG5vZGUudmFsdWVdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZWxlY3Rvci1wc2V1ZG9cIjoge1xuICAgICAgICAgIHJldHVybiBbbWF5YmVUb0xvd2VyQ2FzZShub2RlLnZhbHVlKSwgaXNOb25FbXB0eUFycmF5KG5vZGUubm9kZXMpID8gW1wiKFwiLCBqb2luKFwiLCBcIiwgcGF0aC5tYXAocHJpbnQsIFwibm9kZXNcIikpLCBcIilcIl0gOiBcIlwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic2VsZWN0b3ItbmVzdGluZ1wiOiB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInNlbGVjdG9yLXVua25vd25cIjoge1xuICAgICAgICAgIGNvbnN0IHJ1bGVBbmNlc3Rvck5vZGUgPSBnZXRBbmNlc3Rvck5vZGUocGF0aCwgXCJjc3MtcnVsZVwiKTtcbiAgICAgICAgICBpZiAocnVsZUFuY2VzdG9yTm9kZSAmJiBydWxlQW5jZXN0b3JOb2RlLmlzU0NTU05lc3RlclByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4gYWRqdXN0TnVtYmVycyhhZGp1c3RTdHJpbmdzKG1heWJlVG9Mb3dlckNhc2Uobm9kZS52YWx1ZSksIG9wdGlvbnMpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGlmIChwYXJlbnROb2RlLnJhd3MgJiYgcGFyZW50Tm9kZS5yYXdzLnNlbGVjdG9yKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGxvY1N0YXJ0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBwYXJlbnROb2RlLnJhd3Muc2VsZWN0b3IubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKHN0YXJ0LCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXRoLmdldFBhcmVudE5vZGUoMSk7XG4gICAgICAgICAgaWYgKHBhcmVudE5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1wYXJlbl9ncm91cFwiICYmIGdyYW5kUGFyZW50ICYmIGdyYW5kUGFyZW50LnR5cGUgPT09IFwidmFsdWUtZnVuY1wiICYmIGdyYW5kUGFyZW50LnZhbHVlID09PSBcInNlbGVjdG9yXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gbG9jRW5kKHBhcmVudE5vZGUub3BlbikgKyAxO1xuICAgICAgICAgICAgY29uc3QgZW5kID0gbG9jU3RhcnQocGFyZW50Tm9kZS5jbG9zZSk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RvciA9IG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKHN0YXJ0LCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiBsYXN0TGluZUhhc0lubGluZUNvbW1lbnQoc2VsZWN0b3IpID8gW2JyZWFrUGFyZW50LCBzZWxlY3Rvcl0gOiBzZWxlY3RvcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInZhbHVlLXZhbHVlXCI6XG4gICAgICAgIGNhc2UgXCJ2YWx1ZS1yb290XCI6IHtcbiAgICAgICAgICByZXR1cm4gcHJpbnQoXCJncm91cFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidmFsdWUtY29tbWVudFwiOiB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGxvY1N0YXJ0KG5vZGUpLCBsb2NFbmQobm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ2YWx1ZS1jb21tYV9ncm91cFwiOiB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGNvbnN0IHBhcmVudFBhcmVudE5vZGUgPSBwYXRoLmdldFBhcmVudE5vZGUoMSk7XG4gICAgICAgICAgY29uc3QgZGVjbEFuY2VzdG9yUHJvcCA9IGdldFByb3BPZkRlY2xOb2RlKHBhdGgpO1xuICAgICAgICAgIGNvbnN0IGlzR3JpZFZhbHVlID0gZGVjbEFuY2VzdG9yUHJvcCAmJiBwYXJlbnROb2RlLnR5cGUgPT09IFwidmFsdWUtdmFsdWVcIiAmJiAoZGVjbEFuY2VzdG9yUHJvcCA9PT0gXCJncmlkXCIgfHwgZGVjbEFuY2VzdG9yUHJvcC5zdGFydHNXaXRoKFwiZ3JpZC10ZW1wbGF0ZVwiKSk7XG4gICAgICAgICAgY29uc3QgYXRSdWxlQW5jZXN0b3JOb2RlID0gZ2V0QW5jZXN0b3JOb2RlKHBhdGgsIFwiY3NzLWF0cnVsZVwiKTtcbiAgICAgICAgICBjb25zdCBpc0NvbnRyb2xEaXJlY3RpdmUgPSBhdFJ1bGVBbmNlc3Rvck5vZGUgJiYgaXNTQ1NTQ29udHJvbERpcmVjdGl2ZU5vZGUoYXRSdWxlQW5jZXN0b3JOb2RlKTtcbiAgICAgICAgICBjb25zdCBoYXNJbmxpbmVDb21tZW50ID0gbm9kZS5ncm91cHMuc29tZSgobm9kZTIpID0+IGlzSW5saW5lVmFsdWVDb21tZW50Tm9kZShub2RlMikpO1xuICAgICAgICAgIGNvbnN0IHByaW50ZWQgPSBwYXRoLm1hcChwcmludCwgXCJncm91cHNcIik7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgICAgICBjb25zdCBpbnNpZGVVUkxGdW5jdGlvbiA9IGluc2lkZVZhbHVlRnVuY3Rpb25Ob2RlKHBhdGgsIFwidXJsXCIpO1xuICAgICAgICAgIGxldCBpbnNpZGVTQ1NTSW50ZXJwb2xhdGlvbkluU3RyaW5nID0gZmFsc2U7XG4gICAgICAgICAgbGV0IGRpZEJyZWFrID0gZmFsc2U7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmdyb3Vwcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChwcmludGVkW2ldKTtcbiAgICAgICAgICAgIGNvbnN0IGlQcmV2Tm9kZSA9IG5vZGUuZ3JvdXBzW2kgLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlOb2RlID0gbm9kZS5ncm91cHNbaV07XG4gICAgICAgICAgICBjb25zdCBpTmV4dE5vZGUgPSBub2RlLmdyb3Vwc1tpICsgMV07XG4gICAgICAgICAgICBjb25zdCBpTmV4dE5leHROb2RlID0gbm9kZS5ncm91cHNbaSArIDJdO1xuICAgICAgICAgICAgaWYgKGluc2lkZVVSTEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIGlmIChpTmV4dE5vZGUgJiYgaXNBZGRpdGlvbk5vZGUoaU5leHROb2RlKSB8fCBpc0FkZGl0aW9uTm9kZShpTm9kZSkpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbnNpZGVBdFJ1bGVOb2RlKHBhdGgsIFwiZm9yd2FyZFwiKSAmJiBpTm9kZS50eXBlID09PSBcInZhbHVlLXdvcmRcIiAmJiBpTm9kZS52YWx1ZSAmJiBpUHJldk5vZGUgIT09IHZvaWQgMCAmJiBpUHJldk5vZGUudHlwZSA9PT0gXCJ2YWx1ZS13b3JkXCIgJiYgaVByZXZOb2RlLnZhbHVlID09PSBcImFzXCIgJiYgaU5leHROb2RlLnR5cGUgPT09IFwidmFsdWUtb3BlcmF0b3JcIiAmJiBpTmV4dE5vZGUudmFsdWUgPT09IFwiKlwiKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpTmV4dE5vZGUpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaU5vZGUudHlwZSA9PT0gXCJ2YWx1ZS13b3JkXCIgJiYgaU5vZGUudmFsdWUuZW5kc1dpdGgoXCItXCIpICYmIGlzQXRXb3JkUGxhY2Vob2xkZXJOb2RlKGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc1N0YXJ0U0NTU0ludGVycG9sYXRpb25JblN0cmluZyA9IGlOb2RlLnR5cGUgPT09IFwidmFsdWUtc3RyaW5nXCIgJiYgaU5vZGUudmFsdWUuc3RhcnRzV2l0aChcIiN7XCIpO1xuICAgICAgICAgICAgY29uc3QgaXNFbmRpbmdTQ1NTSW50ZXJwb2xhdGlvbkluU3RyaW5nID0gaW5zaWRlU0NTU0ludGVycG9sYXRpb25JblN0cmluZyAmJiBpTmV4dE5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1zdHJpbmdcIiAmJiBpTmV4dE5vZGUudmFsdWUuZW5kc1dpdGgoXCJ9XCIpO1xuICAgICAgICAgICAgaWYgKGlzU3RhcnRTQ1NTSW50ZXJwb2xhdGlvbkluU3RyaW5nIHx8IGlzRW5kaW5nU0NTU0ludGVycG9sYXRpb25JblN0cmluZykge1xuICAgICAgICAgICAgICBpbnNpZGVTQ1NTSW50ZXJwb2xhdGlvbkluU3RyaW5nID0gIWluc2lkZVNDU1NJbnRlcnBvbGF0aW9uSW5TdHJpbmc7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluc2lkZVNDU1NJbnRlcnBvbGF0aW9uSW5TdHJpbmcpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNDb2xvbk5vZGUoaU5vZGUpIHx8IGlzQ29sb25Ob2RlKGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaU5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1hdHdvcmRcIiAmJiBpTm9kZS52YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpTm9kZS52YWx1ZSA9PT0gXCJ+XCIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaU5vZGUudmFsdWUgJiYgaU5vZGUudmFsdWUuaW5jbHVkZXMoXCJcXFxcXCIpICYmIGlOZXh0Tm9kZSAmJiBpTmV4dE5vZGUudHlwZSAhPT0gXCJ2YWx1ZS1jb21tZW50XCIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaVByZXZOb2RlICYmIGlQcmV2Tm9kZS52YWx1ZSAmJiBpUHJldk5vZGUudmFsdWUuaW5kZXhPZihcIlxcXFxcIikgPT09IGlQcmV2Tm9kZS52YWx1ZS5sZW5ndGggLSAxICYmIGlOb2RlLnR5cGUgPT09IFwidmFsdWUtb3BlcmF0b3JcIiAmJiBpTm9kZS52YWx1ZSA9PT0gXCIvXCIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaU5vZGUudmFsdWUgPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzUG9zdGNzc1NpbXBsZVZhck5vZGUoaU5vZGUsIGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNIYXNoTm9kZShpTm9kZSkgfHwgaXNMZWZ0Q3VybHlCcmFjZU5vZGUoaU5vZGUpIHx8IGlzUmlnaHRDdXJseUJyYWNlTm9kZShpTmV4dE5vZGUpIHx8IGlzTGVmdEN1cmx5QnJhY2VOb2RlKGlOZXh0Tm9kZSkgJiYgaGFzRW1wdHlSYXdCZWZvcmUoaU5leHROb2RlKSB8fCBpc1JpZ2h0Q3VybHlCcmFjZU5vZGUoaU5vZGUpICYmIGhhc0VtcHR5UmF3QmVmb3JlKGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaU5vZGUudmFsdWUgPT09IFwiLS1cIiAmJiBpc0hhc2hOb2RlKGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc01hdGhPcGVyYXRvciA9IGlzTWF0aE9wZXJhdG9yTm9kZShpTm9kZSk7XG4gICAgICAgICAgICBjb25zdCBpc05leHRNYXRoT3BlcmF0b3IgPSBpc01hdGhPcGVyYXRvck5vZGUoaU5leHROb2RlKTtcbiAgICAgICAgICAgIGlmICgoaXNNYXRoT3BlcmF0b3IgJiYgaXNIYXNoTm9kZShpTmV4dE5vZGUpIHx8IGlzTmV4dE1hdGhPcGVyYXRvciAmJiBpc1JpZ2h0Q3VybHlCcmFjZU5vZGUoaU5vZGUpKSAmJiBoYXNFbXB0eVJhd0JlZm9yZShpTmV4dE5vZGUpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpUHJldk5vZGUgJiYgaXNEaXZpc2lvbk5vZGUoaU5vZGUpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluc2lkZVZhbHVlRnVuY3Rpb25Ob2RlKHBhdGgsIFwiY2FsY1wiKSAmJiAoaXNBZGRpdGlvbk5vZGUoaU5vZGUpIHx8IGlzQWRkaXRpb25Ob2RlKGlOZXh0Tm9kZSkgfHwgaXNTdWJ0cmFjdGlvbk5vZGUoaU5vZGUpIHx8IGlzU3VidHJhY3Rpb25Ob2RlKGlOZXh0Tm9kZSkpICYmIGhhc0VtcHR5UmF3QmVmb3JlKGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0NvbG9yQWRqdXN0ZXJOb2RlID0gKGlzQWRkaXRpb25Ob2RlKGlOb2RlKSB8fCBpc1N1YnRyYWN0aW9uTm9kZShpTm9kZSkpICYmIGkgPT09IDAgJiYgKGlOZXh0Tm9kZS50eXBlID09PSBcInZhbHVlLW51bWJlclwiIHx8IGlOZXh0Tm9kZS5pc0hleCkgJiYgcGFyZW50UGFyZW50Tm9kZSAmJiBpc0NvbG9yQWRqdXN0ZXJGdW5jTm9kZShwYXJlbnRQYXJlbnROb2RlKSAmJiAhaGFzRW1wdHlSYXdCZWZvcmUoaU5leHROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVTcGFjZUJlZm9yZU9wZXJhdG9yID0gaU5leHROZXh0Tm9kZSAmJiBpTmV4dE5leHROb2RlLnR5cGUgPT09IFwidmFsdWUtZnVuY1wiIHx8IGlOZXh0TmV4dE5vZGUgJiYgaXNXb3JkTm9kZShpTmV4dE5leHROb2RlKSB8fCBpTm9kZS50eXBlID09PSBcInZhbHVlLWZ1bmNcIiB8fCBpc1dvcmROb2RlKGlOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVTcGFjZUFmdGVyT3BlcmF0b3IgPSBpTmV4dE5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1mdW5jXCIgfHwgaXNXb3JkTm9kZShpTmV4dE5vZGUpIHx8IGlQcmV2Tm9kZSAmJiBpUHJldk5vZGUudHlwZSA9PT0gXCJ2YWx1ZS1mdW5jXCIgfHwgaVByZXZOb2RlICYmIGlzV29yZE5vZGUoaVByZXZOb2RlKTtcbiAgICAgICAgICAgIGlmICghKGlzTXVsdGlwbGljYXRpb25Ob2RlKGlOZXh0Tm9kZSkgfHwgaXNNdWx0aXBsaWNhdGlvbk5vZGUoaU5vZGUpKSAmJiAhaW5zaWRlVmFsdWVGdW5jdGlvbk5vZGUocGF0aCwgXCJjYWxjXCIpICYmICFpc0NvbG9yQWRqdXN0ZXJOb2RlICYmIChpc0RpdmlzaW9uTm9kZShpTmV4dE5vZGUpICYmICFyZXF1aXJlU3BhY2VCZWZvcmVPcGVyYXRvciB8fCBpc0RpdmlzaW9uTm9kZShpTm9kZSkgJiYgIXJlcXVpcmVTcGFjZUFmdGVyT3BlcmF0b3IgfHwgaXNBZGRpdGlvbk5vZGUoaU5leHROb2RlKSAmJiAhcmVxdWlyZVNwYWNlQmVmb3JlT3BlcmF0b3IgfHwgaXNBZGRpdGlvbk5vZGUoaU5vZGUpICYmICFyZXF1aXJlU3BhY2VBZnRlck9wZXJhdG9yIHx8IGlzU3VidHJhY3Rpb25Ob2RlKGlOZXh0Tm9kZSkgfHwgaXNTdWJ0cmFjdGlvbk5vZGUoaU5vZGUpKSAmJiAoaGFzRW1wdHlSYXdCZWZvcmUoaU5leHROb2RlKSB8fCBpc01hdGhPcGVyYXRvciAmJiAoIWlQcmV2Tm9kZSB8fCBpUHJldk5vZGUgJiYgaXNNYXRoT3BlcmF0b3JOb2RlKGlQcmV2Tm9kZSkpKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0lubGluZVZhbHVlQ29tbWVudE5vZGUoaU5vZGUpKSB7XG4gICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLnR5cGUgPT09IFwidmFsdWUtcGFyZW5fZ3JvdXBcIikge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goZGVkZW50KGhhcmRsaW5lKSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQ29udHJvbERpcmVjdGl2ZSAmJiAoaXNFcXVhbGl0eU9wZXJhdG9yTm9kZShpTmV4dE5vZGUpIHx8IGlzUmVsYXRpb25hbE9wZXJhdG9yTm9kZShpTmV4dE5vZGUpIHx8IGlzSWZFbHNlS2V5d29yZE5vZGUoaU5leHROb2RlKSB8fCBpc0VhY2hLZXl3b3JkTm9kZShpTm9kZSkgfHwgaXNGb3JLZXl3b3JkTm9kZShpTm9kZSkpKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goXCIgXCIpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhdFJ1bGVBbmNlc3Rvck5vZGUgJiYgYXRSdWxlQW5jZXN0b3JOb2RlLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJuYW1lc3BhY2VcIikge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNHcmlkVmFsdWUpIHtcbiAgICAgICAgICAgICAgaWYgKGlOb2RlLnNvdXJjZSAmJiBpTmV4dE5vZGUuc291cmNlICYmIGlOb2RlLnNvdXJjZS5zdGFydC5saW5lICE9PSBpTmV4dE5vZGUuc291cmNlLnN0YXJ0LmxpbmUpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgICAgICAgICBkaWRCcmVhayA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChcIiBcIik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNOZXh0TWF0aE9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goXCIgXCIpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpTmV4dE5vZGUgJiYgaU5leHROb2RlLnZhbHVlID09PSBcIi4uLlwiKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQXRXb3JkUGxhY2Vob2xkZXJOb2RlKGlOb2RlKSAmJiBpc0F0V29yZFBsYWNlaG9sZGVyTm9kZShpTmV4dE5vZGUpICYmIGxvY0VuZChpTm9kZSkgPT09IGxvY1N0YXJ0KGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBdFdvcmRQbGFjZWhvbGRlck5vZGUoaU5vZGUpICYmIGlzUGFyZW5Hcm91cE5vZGUoaU5leHROb2RlKSAmJiBsb2NFbmQoaU5vZGUpID09PSBsb2NTdGFydChpTmV4dE5vZGUub3BlbikpIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChzb2Z0bGluZSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlOb2RlLnZhbHVlID09PSBcIndpdGhcIiAmJiBpc1BhcmVuR3JvdXBOb2RlKGlOZXh0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChcIiBcIik7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHMucHVzaChsaW5lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhc0lubGluZUNvbW1lbnQpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goYnJlYWtQYXJlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGlkQnJlYWspIHtcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQoaGFyZGxpbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNDb250cm9sRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXAoaW5kZW50KHBhcnRzKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnNpZGVVUkxGdW5jdGlvbkluSW1wb3J0QXRSdWxlTm9kZShwYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwKGZpbGwocGFydHMpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKGluZGVudChmaWxsKHBhcnRzKSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ2YWx1ZS1wYXJlbl9ncm91cFwiOiB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGlmIChwYXJlbnROb2RlICYmIGlzVVJMRnVuY3Rpb25Ob2RlKHBhcmVudE5vZGUpICYmIChub2RlLmdyb3Vwcy5sZW5ndGggPT09IDEgfHwgbm9kZS5ncm91cHMubGVuZ3RoID4gMCAmJiBub2RlLmdyb3Vwc1swXS50eXBlID09PSBcInZhbHVlLWNvbW1hX2dyb3VwXCIgJiYgbm9kZS5ncm91cHNbMF0uZ3JvdXBzLmxlbmd0aCA+IDAgJiYgbm9kZS5ncm91cHNbMF0uZ3JvdXBzWzBdLnR5cGUgPT09IFwidmFsdWUtd29yZFwiICYmIG5vZGUuZ3JvdXBzWzBdLmdyb3Vwc1swXS52YWx1ZS5zdGFydHNXaXRoKFwiZGF0YTpcIikpKSB7XG4gICAgICAgICAgICByZXR1cm4gW25vZGUub3BlbiA/IHByaW50KFwib3BlblwiKSA6IFwiXCIsIGpvaW4oXCIsXCIsIHBhdGgubWFwKHByaW50LCBcImdyb3Vwc1wiKSksIG5vZGUuY2xvc2UgPyBwcmludChcImNsb3NlXCIpIDogXCJcIl07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbm9kZS5vcGVuKSB7XG4gICAgICAgICAgICBjb25zdCBwcmludGVkMiA9IHBhdGgubWFwKHByaW50LCBcImdyb3Vwc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmludGVkMi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKFtcIixcIiwgbGluZV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcy5wdXNoKHByaW50ZWQyW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBncm91cChpbmRlbnQoZmlsbChyZXMpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzU0NTU01hcEl0ZW0gPSBpc1NDU1NNYXBJdGVtTm9kZShwYXRoKTtcbiAgICAgICAgICBjb25zdCBsYXN0SXRlbSA9IGdldExhc3Qobm9kZS5ncm91cHMpO1xuICAgICAgICAgIGNvbnN0IGlzTGFzdEl0ZW1Db21tZW50ID0gbGFzdEl0ZW0gJiYgbGFzdEl0ZW0udHlwZSA9PT0gXCJ2YWx1ZS1jb21tZW50XCI7XG4gICAgICAgICAgY29uc3QgaXNLZXkgPSBpc0tleUluVmFsdWVQYWlyTm9kZShub2RlLCBwYXJlbnROb2RlKTtcbiAgICAgICAgICBjb25zdCBpc0NvbmZpZ3VyYXRpb24gPSBpc0NvbmZpZ3VyYXRpb25Ob2RlKG5vZGUsIHBhcmVudE5vZGUpO1xuICAgICAgICAgIGNvbnN0IHNob3VsZEJyZWFrID0gaXNDb25maWd1cmF0aW9uIHx8IGlzU0NTU01hcEl0ZW0gJiYgIWlzS2V5O1xuICAgICAgICAgIGNvbnN0IHNob3VsZERlZGVudCA9IGlzQ29uZmlndXJhdGlvbiB8fCBpc0tleTtcbiAgICAgICAgICBjb25zdCBwcmludGVkID0gZ3JvdXAoW25vZGUub3BlbiA/IHByaW50KFwib3BlblwiKSA6IFwiXCIsIGluZGVudChbc29mdGxpbmUsIGpvaW4oW2xpbmVdLCBwYXRoLm1hcCgoY2hpbGRQYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZFBhdGguZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTGFzdCA9IGluZGV4ID09PSBub2RlLmdyb3Vwcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3QgcHJpbnRlZDIgPSBbcHJpbnQoKSwgaXNMYXN0ID8gXCJcIiA6IFwiLFwiXTtcbiAgICAgICAgICAgIGlmIChpc0tleVZhbHVlUGFpck5vZGUoY2hpbGQpICYmIGNoaWxkLnR5cGUgPT09IFwidmFsdWUtY29tbWFfZ3JvdXBcIiAmJiBjaGlsZC5ncm91cHMgJiYgY2hpbGQuZ3JvdXBzWzBdLnR5cGUgIT09IFwidmFsdWUtcGFyZW5fZ3JvdXBcIiAmJiBjaGlsZC5ncm91cHNbMl0gJiYgY2hpbGQuZ3JvdXBzWzJdLnR5cGUgPT09IFwidmFsdWUtcGFyZW5fZ3JvdXBcIikge1xuICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGdldERvY1BhcnRzKHByaW50ZWQyWzBdLmNvbnRlbnRzLmNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgcGFydHNbMV0gPSBncm91cChwYXJ0c1sxXSk7XG4gICAgICAgICAgICAgIHJldHVybiBncm91cChkZWRlbnQocHJpbnRlZDIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNMYXN0ICYmIGNoaWxkLnR5cGUgPT09IFwidmFsdWUtY29tbWFfZ3JvdXBcIiAmJiBpc05vbkVtcHR5QXJyYXkoY2hpbGQuZ3JvdXBzKSkge1xuICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gZ2V0TGFzdChjaGlsZC5ncm91cHMpO1xuICAgICAgICAgICAgICBpZiAobGFzdC5zb3VyY2UgJiYgaXNOZXh0TGluZUVtcHR5KG9wdGlvbnMub3JpZ2luYWxUZXh0LCBsYXN0LCBsb2NFbmQpKSB7XG4gICAgICAgICAgICAgICAgcHJpbnRlZDIucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwcmludGVkMjtcbiAgICAgICAgICB9LCBcImdyb3Vwc1wiKSldKSwgaWZCcmVhayghaXNMYXN0SXRlbUNvbW1lbnQgJiYgaXNTQ1NTKG9wdGlvbnMucGFyc2VyLCBvcHRpb25zLm9yaWdpbmFsVGV4dCkgJiYgaXNTQ1NTTWFwSXRlbSAmJiBzaG91bGRQcmludENvbW1hKG9wdGlvbnMpID8gXCIsXCIgOiBcIlwiKSwgc29mdGxpbmUsIG5vZGUuY2xvc2UgPyBwcmludChcImNsb3NlXCIpIDogXCJcIl0sIHtcbiAgICAgICAgICAgIHNob3VsZEJyZWFrXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHNob3VsZERlZGVudCA/IGRlZGVudChwcmludGVkKSA6IHByaW50ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInZhbHVlLWZ1bmNcIjoge1xuICAgICAgICAgIHJldHVybiBbbm9kZS52YWx1ZSwgaW5zaWRlQXRSdWxlTm9kZShwYXRoLCBcInN1cHBvcnRzXCIpICYmIGlzTWVkaWFBbmRTdXBwb3J0c0tleXdvcmRzKG5vZGUpID8gXCIgXCIgOiBcIlwiLCBwcmludChcImdyb3VwXCIpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidmFsdWUtcGFyZW5cIjoge1xuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ2YWx1ZS1udW1iZXJcIjoge1xuICAgICAgICAgIHJldHVybiBbcHJpbnRDc3NOdW1iZXIobm9kZS52YWx1ZSksIHByaW50VW5pdChub2RlLnVuaXQpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidmFsdWUtb3BlcmF0b3JcIjoge1xuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ2YWx1ZS13b3JkXCI6IHtcbiAgICAgICAgICBpZiAobm9kZS5pc0NvbG9yICYmIG5vZGUuaXNIZXggfHwgaXNXaWRlS2V5d29yZHMobm9kZS52YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ2YWx1ZS1jb2xvblwiOiB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50Tm9kZSAmJiBwYXJlbnROb2RlLmdyb3Vwcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICAgIGNvbnN0IHByZXZOb2RlID0gaW5kZXggJiYgcGFyZW50Tm9kZS5ncm91cHNbaW5kZXggLSAxXTtcbiAgICAgICAgICByZXR1cm4gW25vZGUudmFsdWUsIHByZXZOb2RlICYmIHR5cGVvZiBwcmV2Tm9kZS52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBnZXRMYXN0KHByZXZOb2RlLnZhbHVlKSA9PT0gXCJcXFxcXCIgfHwgaW5zaWRlVmFsdWVGdW5jdGlvbk5vZGUocGF0aCwgXCJ1cmxcIikgPyBcIlwiIDogbGluZV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInZhbHVlLWNvbW1hXCI6IHtcbiAgICAgICAgICByZXR1cm4gW25vZGUudmFsdWUsIFwiIFwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidmFsdWUtc3RyaW5nXCI6IHtcbiAgICAgICAgICByZXR1cm4gcHJpbnRTdHJpbmcobm9kZS5yYXdzLnF1b3RlICsgbm9kZS52YWx1ZSArIG5vZGUucmF3cy5xdW90ZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInZhbHVlLWF0d29yZFwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtcIkBcIiwgbm9kZS52YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInZhbHVlLXVuaWNvZGUtcmFuZ2VcIjoge1xuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ2YWx1ZS11bmtub3duXCI6IHtcbiAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwb3N0Y3NzIHR5cGUgJHtKU09OLnN0cmluZ2lmeShub2RlLnR5cGUpfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludE5vZGVTZXF1ZW5jZShwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIHBhdGguZWFjaCgocGF0aENoaWxkLCBpLCBub2RlcykgPT4ge1xuICAgICAgICBjb25zdCBwcmV2Tm9kZSA9IG5vZGVzW2kgLSAxXTtcbiAgICAgICAgaWYgKHByZXZOb2RlICYmIHByZXZOb2RlLnR5cGUgPT09IFwiY3NzLWNvbW1lbnRcIiAmJiBwcmV2Tm9kZS50ZXh0LnRyaW0oKSA9PT0gXCJwcmV0dGllci1pZ25vcmVcIikge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IHBhdGhDaGlsZC5nZXRWYWx1ZSgpO1xuICAgICAgICAgIHBhcnRzLnB1c2gob3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2UobG9jU3RhcnQoY2hpbGROb2RlKSwgbG9jRW5kKGNoaWxkTm9kZSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKHByaW50KCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpICE9PSBub2Rlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgaWYgKG5vZGVzW2kgKyAxXS50eXBlID09PSBcImNzcy1jb21tZW50XCIgJiYgIWhhc05ld2xpbmUob3B0aW9ucy5vcmlnaW5hbFRleHQsIGxvY1N0YXJ0KG5vZGVzW2kgKyAxXSksIHtcbiAgICAgICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgICAgIH0pICYmICFpc0Zyb250TWF0dGVyTm9kZShub2Rlc1tpXSkgfHwgbm9kZXNbaSArIDFdLnR5cGUgPT09IFwiY3NzLWF0cnVsZVwiICYmIG5vZGVzW2kgKyAxXS5uYW1lID09PSBcImVsc2VcIiAmJiBub2Rlc1tpXS50eXBlICE9PSBcImNzcy1jb21tZW50XCIpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCIgXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKG9wdGlvbnMuX19pc0hUTUxTdHlsZUF0dHJpYnV0ZSA/IGxpbmUgOiBoYXJkbGluZSk7XG4gICAgICAgICAgICBpZiAoaXNOZXh0TGluZUVtcHR5KG9wdGlvbnMub3JpZ2luYWxUZXh0LCBwYXRoQ2hpbGQuZ2V0VmFsdWUoKSwgbG9jRW5kKSAmJiAhaXNGcm9udE1hdHRlck5vZGUobm9kZXNbaV0pKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goaGFyZGxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgXCJub2Rlc1wiKTtcbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgdmFyIFNUUklOR19SRUdFWCA9IC8oW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKlxcMS9ncztcbiAgICB2YXIgTlVNQkVSX1JFR0VYID0gLyg/OlxcZCpcXC5cXGQrfFxcZCtcXC4/KSg/OltFZV1bKy1dP1xcZCspPy9nO1xuICAgIHZhciBTVEFOREFSRF9VTklUX1JFR0VYID0gL1tBLVphLXpdKy9nO1xuICAgIHZhciBXT1JEX1BBUlRfUkVHRVggPSAvWyRAXT9bQS1aX2EtelxcdTAwODAtXFx1RkZGRl1bXFx3XFx1MDA4MC1cXHVGRkZGLV0qL2c7XG4gICAgdmFyIEFESlVTVF9OVU1CRVJTX1JFR0VYID0gbmV3IFJlZ0V4cChTVFJJTkdfUkVHRVguc291cmNlICsgYHwoJHtXT1JEX1BBUlRfUkVHRVguc291cmNlfSk/KCR7TlVNQkVSX1JFR0VYLnNvdXJjZX0pKCR7U1RBTkRBUkRfVU5JVF9SRUdFWC5zb3VyY2V9KT9gLCBcImdcIik7XG4gICAgZnVuY3Rpb24gYWRqdXN0U3RyaW5ncyh2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoU1RSSU5HX1JFR0VYLCAobWF0Y2gpID0+IHByaW50U3RyaW5nKG1hdGNoLCBvcHRpb25zKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHF1b3RlQXR0cmlidXRlVmFsdWUodmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHF1b3RlID0gb3B0aW9ucy5zaW5nbGVRdW90ZSA/IFwiJ1wiIDogJ1wiJztcbiAgICAgIHJldHVybiB2YWx1ZS5pbmNsdWRlcygnXCInKSB8fCB2YWx1ZS5pbmNsdWRlcyhcIidcIikgPyB2YWx1ZSA6IHF1b3RlICsgdmFsdWUgKyBxdW90ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRqdXN0TnVtYmVycyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoQURKVVNUX05VTUJFUlNfUkVHRVgsIChtYXRjaCwgcXVvdGUsIHdvcmRQYXJ0LCBudW1iZXIsIHVuaXQpID0+ICF3b3JkUGFydCAmJiBudW1iZXIgPyBwcmludENzc051bWJlcihudW1iZXIpICsgbWF5YmVUb0xvd2VyQ2FzZSh1bml0IHx8IFwiXCIpIDogbWF0Y2gpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENzc051bWJlcihyYXdOdW1iZXIpIHtcbiAgICAgIHJldHVybiBwcmludE51bWJlcihyYXdOdW1iZXIpLnJlcGxhY2UoL1xcLjAoPz0kfGUpLywgXCJcIik7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50OiBnZW5lcmljUHJpbnQsXG4gICAgICBlbWJlZCxcbiAgICAgIGluc2VydFByYWdtYSxcbiAgICAgIG1hc3NhZ2VBc3ROb2RlOiBjbGVhblxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfb3B0aW9uczMgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWNzcy9vcHRpb25zLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgY29tbW9uT3B0aW9ucyA9IHJlcXVpcmVfY29tbW9uX29wdGlvbnMoKTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBzaW5nbGVRdW90ZTogY29tbW9uT3B0aW9ucy5zaW5nbGVRdW90ZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcGFyc2VyczIgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWNzcy9wYXJzZXJzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBnZXQgY3NzKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLXBvc3Rjc3MuanNcIikucGFyc2Vycy5jc3M7XG4gICAgICB9LFxuICAgICAgZ2V0IGxlc3MoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItcG9zdGNzcy5qc1wiKS5wYXJzZXJzLmxlc3M7XG4gICAgICB9LFxuICAgICAgZ2V0IHNjc3MoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItcG9zdGNzcy5qc1wiKS5wYXJzZXJzLnNjc3M7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9DU1MgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL0NTUy5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBuYW1lOiBcIkNTU1wiLFxuICAgICAgdHlwZTogXCJtYXJrdXBcIixcbiAgICAgIHRtU2NvcGU6IFwic291cmNlLmNzc1wiLFxuICAgICAgYWNlTW9kZTogXCJjc3NcIixcbiAgICAgIGNvZGVtaXJyb3JNb2RlOiBcImNzc1wiLFxuICAgICAgY29kZW1pcnJvck1pbWVUeXBlOiBcInRleHQvY3NzXCIsXG4gICAgICBjb2xvcjogXCIjNTYzZDdjXCIsXG4gICAgICBleHRlbnNpb25zOiBbXCIuY3NzXCJdLFxuICAgICAgbGFuZ3VhZ2VJZDogNTBcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX1Bvc3RDU1MgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL1Bvc3RDU1MuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJQb3N0Q1NTXCIsXG4gICAgICB0eXBlOiBcIm1hcmt1cFwiLFxuICAgICAgY29sb3I6IFwiI2RjM2EwY1wiLFxuICAgICAgdG1TY29wZTogXCJzb3VyY2UucG9zdGNzc1wiLFxuICAgICAgZ3JvdXA6IFwiQ1NTXCIsXG4gICAgICBleHRlbnNpb25zOiBbXCIucGNzc1wiLCBcIi5wb3N0Y3NzXCJdLFxuICAgICAgYWNlTW9kZTogXCJ0ZXh0XCIsXG4gICAgICBsYW5ndWFnZUlkOiAyNjI3NjQ0MzdcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX0xlc3MgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL0xlc3MuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJMZXNzXCIsXG4gICAgICB0eXBlOiBcIm1hcmt1cFwiLFxuICAgICAgY29sb3I6IFwiIzFkMzY1ZFwiLFxuICAgICAgYWxpYXNlczogW1wibGVzcy1jc3NcIl0sXG4gICAgICBleHRlbnNpb25zOiBbXCIubGVzc1wiXSxcbiAgICAgIHRtU2NvcGU6IFwic291cmNlLmNzcy5sZXNzXCIsXG4gICAgICBhY2VNb2RlOiBcImxlc3NcIixcbiAgICAgIGNvZGVtaXJyb3JNb2RlOiBcImNzc1wiLFxuICAgICAgY29kZW1pcnJvck1pbWVUeXBlOiBcInRleHQvY3NzXCIsXG4gICAgICBsYW5ndWFnZUlkOiAxOThcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX1NDU1MgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL1NDU1MuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJTQ1NTXCIsXG4gICAgICB0eXBlOiBcIm1hcmt1cFwiLFxuICAgICAgY29sb3I6IFwiI2M2NTM4Y1wiLFxuICAgICAgdG1TY29wZTogXCJzb3VyY2UuY3NzLnNjc3NcIixcbiAgICAgIGFjZU1vZGU6IFwic2Nzc1wiLFxuICAgICAgY29kZW1pcnJvck1vZGU6IFwiY3NzXCIsXG4gICAgICBjb2RlbWlycm9yTWltZVR5cGU6IFwidGV4dC94LXNjc3NcIixcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5zY3NzXCJdLFxuICAgICAgbGFuZ3VhZ2VJZDogMzI5XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sYW5ndWFnZV9jc3MgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWNzcy9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGNyZWF0ZUxhbmd1YWdlID0gcmVxdWlyZV9jcmVhdGVfbGFuZ3VhZ2UoKTtcbiAgICB2YXIgcHJpbnRlciA9IHJlcXVpcmVfcHJpbnRlcl9wb3N0Y3NzKCk7XG4gICAgdmFyIG9wdGlvbnMgPSByZXF1aXJlX29wdGlvbnMzKCk7XG4gICAgdmFyIHBhcnNlcnMgPSByZXF1aXJlX3BhcnNlcnMyKCk7XG4gICAgdmFyIGxhbmd1YWdlcyA9IFtjcmVhdGVMYW5ndWFnZShyZXF1aXJlX0NTUygpLCAoZGF0YSkgPT4gKHtcbiAgICAgIHNpbmNlOiBcIjEuNC4wXCIsXG4gICAgICBwYXJzZXJzOiBbXCJjc3NcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wiY3NzXCJdLFxuICAgICAgZXh0ZW5zaW9uczogWy4uLmRhdGEuZXh0ZW5zaW9ucywgXCIud3hzc1wiXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9Qb3N0Q1NTKCksICgpID0+ICh7XG4gICAgICBzaW5jZTogXCIxLjQuMFwiLFxuICAgICAgcGFyc2VyczogW1wiY3NzXCJdLFxuICAgICAgdnNjb2RlTGFuZ3VhZ2VJZHM6IFtcInBvc3Rjc3NcIl1cbiAgICB9KSksIGNyZWF0ZUxhbmd1YWdlKHJlcXVpcmVfTGVzcygpLCAoKSA9PiAoe1xuICAgICAgc2luY2U6IFwiMS40LjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImxlc3NcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wibGVzc1wiXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9TQ1NTKCksICgpID0+ICh7XG4gICAgICBzaW5jZTogXCIxLjQuMFwiLFxuICAgICAgcGFyc2VyczogW1wic2Nzc1wiXSxcbiAgICAgIHZzY29kZUxhbmd1YWdlSWRzOiBbXCJzY3NzXCJdXG4gICAgfSkpXTtcbiAgICB2YXIgcHJpbnRlcnMgPSB7XG4gICAgICBwb3N0Y3NzOiBwcmludGVyXG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsYW5ndWFnZXMsXG4gICAgICBvcHRpb25zLFxuICAgICAgcHJpbnRlcnMsXG4gICAgICBwYXJzZXJzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sb2MzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1oYW5kbGViYXJzL2xvYy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgZnVuY3Rpb24gbG9jU3RhcnQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUubG9jLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9jRW5kKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmxvYy5lbmQub2Zmc2V0O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY2xlYW4zID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1oYW5kbGViYXJzL2NsZWFuLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBjbGVhbihhc3QsIG5ld05vZGUpIHtcbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJUZXh0Tm9kZVwiKSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWQgPSBhc3QuY2hhcnMudHJpbSgpO1xuICAgICAgICBpZiAoIXRyaW1tZWQpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBuZXdOb2RlLmNoYXJzID0gdHJpbW1lZC5yZXBsYWNlKC9bXFx0XFxuXFxmXFxyIF0rL2csIFwiIFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJBdHRyTm9kZVwiICYmIGFzdC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiY2xhc3NcIikge1xuICAgICAgICBkZWxldGUgbmV3Tm9kZS52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2xlYW4uaWdub3JlZFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJsb2NcIiwgXCJzZWxmQ2xvc2luZ1wiXSk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gY2xlYW47XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfaHRtbF92b2lkX2VsZW1lbnRzID0gX19jb21tb25KUzIoe1xuICBcInZlbmRvcnMvaHRtbC12b2lkLWVsZW1lbnRzLmpzb25cIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGh0bWxWb2lkRWxlbWVudHM6IFtcImFyZWFcIiwgXCJiYXNlXCIsIFwiYmFzZWZvbnRcIiwgXCJiZ3NvdW5kXCIsIFwiYnJcIiwgXCJjb2xcIiwgXCJjb21tYW5kXCIsIFwiZW1iZWRcIiwgXCJmcmFtZVwiLCBcImhyXCIsIFwiaW1hZ2VcIiwgXCJpbWdcIiwgXCJpbnB1dFwiLCBcImlzaW5kZXhcIiwgXCJrZXlnZW5cIiwgXCJsaW5rXCIsIFwibWVudWl0ZW1cIiwgXCJtZXRhXCIsIFwibmV4dGlkXCIsIFwicGFyYW1cIiwgXCJzb3VyY2VcIiwgXCJ0cmFja1wiLCBcIndiclwiXVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdXRpbHM5ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1oYW5kbGViYXJzL3V0aWxzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgaHRtbFZvaWRFbGVtZW50c1xuICAgIH0gPSByZXF1aXJlX2h0bWxfdm9pZF9lbGVtZW50cygpO1xuICAgIHZhciBnZXRMYXN0ID0gcmVxdWlyZV9nZXRfbGFzdCgpO1xuICAgIGZ1bmN0aW9uIGlzTGFzdE5vZGVPZlNpYmxpbmdzKHBhdGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKDApO1xuICAgICAgaWYgKGlzUGFyZW50T2ZTb21lVHlwZShwYXRoLCBbXCJFbGVtZW50Tm9kZVwiXSkgJiYgZ2V0TGFzdChwYXJlbnROb2RlLmNoaWxkcmVuKSA9PT0gbm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1BhcmVudE9mU29tZVR5cGUocGF0aCwgW1wiQmxvY2tcIl0pICYmIGdldExhc3QocGFyZW50Tm9kZS5ib2R5KSA9PT0gbm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNVcHBlcmNhc2Uoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nLnRvVXBwZXJDYXNlKCkgPT09IHN0cmluZztcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNHbGltbWVyQ29tcG9uZW50KG5vZGUpIHtcbiAgICAgIHJldHVybiBpc05vZGVPZlNvbWVUeXBlKG5vZGUsIFtcIkVsZW1lbnROb2RlXCJdKSAmJiB0eXBlb2Ygbm9kZS50YWcgPT09IFwic3RyaW5nXCIgJiYgIW5vZGUudGFnLnN0YXJ0c1dpdGgoXCI6XCIpICYmIChpc1VwcGVyY2FzZShub2RlLnRhZ1swXSkgfHwgbm9kZS50YWcuaW5jbHVkZXMoXCIuXCIpKTtcbiAgICB9XG4gICAgdmFyIHZvaWRUYWdzID0gbmV3IFNldChodG1sVm9pZEVsZW1lbnRzKTtcbiAgICBmdW5jdGlvbiBpc1ZvaWQobm9kZSkge1xuICAgICAgcmV0dXJuIHZvaWRUYWdzLmhhcyhub2RlLnRhZykgfHwgaXNHbGltbWVyQ29tcG9uZW50KG5vZGUpICYmIG5vZGUuY2hpbGRyZW4uZXZlcnkoKG5vZGUyKSA9PiBpc1doaXRlc3BhY2VOb2RlKG5vZGUyKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzV2hpdGVzcGFjZU5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIGlzTm9kZU9mU29tZVR5cGUobm9kZSwgW1wiVGV4dE5vZGVcIl0pICYmICEvXFxTLy50ZXN0KG5vZGUuY2hhcnMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc05vZGVPZlNvbWVUeXBlKG5vZGUsIHR5cGVzKSB7XG4gICAgICByZXR1cm4gbm9kZSAmJiB0eXBlcy5pbmNsdWRlcyhub2RlLnR5cGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1BhcmVudE9mU29tZVR5cGUocGF0aCwgdHlwZXMpIHtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBwYXRoLmdldFBhcmVudE5vZGUoMCk7XG4gICAgICByZXR1cm4gaXNOb2RlT2ZTb21lVHlwZShwYXJlbnROb2RlLCB0eXBlcyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzUHJldmlvdXNOb2RlT2ZTb21lVHlwZShwYXRoLCB0eXBlcykge1xuICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gZ2V0UHJldmlvdXNOb2RlKHBhdGgpO1xuICAgICAgcmV0dXJuIGlzTm9kZU9mU29tZVR5cGUocHJldmlvdXNOb2RlLCB0eXBlcyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzTmV4dE5vZGVPZlNvbWVUeXBlKHBhdGgsIHR5cGVzKSB7XG4gICAgICBjb25zdCBuZXh0Tm9kZSA9IGdldE5leHROb2RlKHBhdGgpO1xuICAgICAgcmV0dXJuIGlzTm9kZU9mU29tZVR5cGUobmV4dE5vZGUsIHR5cGVzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0U2libGluZ05vZGUocGF0aCwgb2Zmc2V0KSB7XG4gICAgICB2YXIgX3BhdGgkZ2V0UGFyZW50Tm9kZTIsIF9yZWY3LCBfcmVmOCwgX3BhcmVudE5vZGUkY2hpbGRyZW47XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IChfcGF0aCRnZXRQYXJlbnROb2RlMiA9IHBhdGguZ2V0UGFyZW50Tm9kZSgwKSkgIT09IG51bGwgJiYgX3BhdGgkZ2V0UGFyZW50Tm9kZTIgIT09IHZvaWQgMCA/IF9wYXRoJGdldFBhcmVudE5vZGUyIDoge307XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IChfcmVmNyA9IChfcmVmOCA9IChfcGFyZW50Tm9kZSRjaGlsZHJlbiA9IHBhcmVudE5vZGUuY2hpbGRyZW4pICE9PSBudWxsICYmIF9wYXJlbnROb2RlJGNoaWxkcmVuICE9PSB2b2lkIDAgPyBfcGFyZW50Tm9kZSRjaGlsZHJlbiA6IHBhcmVudE5vZGUuYm9keSkgIT09IG51bGwgJiYgX3JlZjggIT09IHZvaWQgMCA/IF9yZWY4IDogcGFyZW50Tm9kZS5wYXJ0cykgIT09IG51bGwgJiYgX3JlZjcgIT09IHZvaWQgMCA/IF9yZWY3IDogW107XG4gICAgICBjb25zdCBpbmRleCA9IGNoaWxkcmVuLmluZGV4T2Yobm9kZSk7XG4gICAgICByZXR1cm4gaW5kZXggIT09IC0xICYmIGNoaWxkcmVuW2luZGV4ICsgb2Zmc2V0XTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0UHJldmlvdXNOb2RlKHBhdGgsIGxvb2tCYWNrID0gMSkge1xuICAgICAgcmV0dXJuIGdldFNpYmxpbmdOb2RlKHBhdGgsIC1sb29rQmFjayk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE5leHROb2RlKHBhdGgpIHtcbiAgICAgIHJldHVybiBnZXRTaWJsaW5nTm9kZShwYXRoLCAxKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNQcmV0dGllcklnbm9yZU5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIGlzTm9kZU9mU29tZVR5cGUobm9kZSwgW1wiTXVzdGFjaGVDb21tZW50U3RhdGVtZW50XCJdKSAmJiB0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBub2RlLnZhbHVlLnRyaW0oKSA9PT0gXCJwcmV0dGllci1pZ25vcmVcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzUHJldHRpZXJJZ25vcmUocGF0aCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzUHJldmlvdXNOb2RlID0gZ2V0UHJldmlvdXNOb2RlKHBhdGgsIDIpO1xuICAgICAgcmV0dXJuIGlzUHJldHRpZXJJZ25vcmVOb2RlKG5vZGUpIHx8IGlzUHJldHRpZXJJZ25vcmVOb2RlKHByZXZpb3VzUHJldmlvdXNOb2RlKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgZ2V0TmV4dE5vZGUsXG4gICAgICBnZXRQcmV2aW91c05vZGUsXG4gICAgICBoYXNQcmV0dGllcklnbm9yZSxcbiAgICAgIGlzTGFzdE5vZGVPZlNpYmxpbmdzLFxuICAgICAgaXNOZXh0Tm9kZU9mU29tZVR5cGUsXG4gICAgICBpc05vZGVPZlNvbWVUeXBlLFxuICAgICAgaXNQYXJlbnRPZlNvbWVUeXBlLFxuICAgICAgaXNQcmV2aW91c05vZGVPZlNvbWVUeXBlLFxuICAgICAgaXNWb2lkLFxuICAgICAgaXNXaGl0ZXNwYWNlTm9kZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJpbnRlcl9nbGltbWVyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1oYW5kbGViYXJzL3ByaW50ZXItZ2xpbW1lci5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGRlZGVudCxcbiAgICAgICAgZmlsbCxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGpvaW4sXG4gICAgICAgIGxpbmUsXG4gICAgICAgIHNvZnRsaW5lXG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgZ2V0RG9jUGFydHMsXG4gICAgICAgIHJlcGxhY2VUZXh0RW5kT2ZMaW5lXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgZ2V0UHJlZmVycmVkUXVvdGUsXG4gICAgICBpc05vbkVtcHR5QXJyYXlcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jMygpO1xuICAgIHZhciBjbGVhbiA9IHJlcXVpcmVfY2xlYW4zKCk7XG4gICAgdmFyIHtcbiAgICAgIGdldE5leHROb2RlLFxuICAgICAgZ2V0UHJldmlvdXNOb2RlLFxuICAgICAgaGFzUHJldHRpZXJJZ25vcmUsXG4gICAgICBpc0xhc3ROb2RlT2ZTaWJsaW5ncyxcbiAgICAgIGlzTmV4dE5vZGVPZlNvbWVUeXBlLFxuICAgICAgaXNOb2RlT2ZTb21lVHlwZSxcbiAgICAgIGlzUGFyZW50T2ZTb21lVHlwZSxcbiAgICAgIGlzUHJldmlvdXNOb2RlT2ZTb21lVHlwZSxcbiAgICAgIGlzVm9pZCxcbiAgICAgIGlzV2hpdGVzcGFjZU5vZGVcbiAgICB9ID0gcmVxdWlyZV91dGlsczkoKTtcbiAgICB2YXIgTkVXTElORVNfVE9fUFJFU0VSVkVfTUFYID0gMjtcbiAgICBmdW5jdGlvbiBwcmludChwYXRoLCBvcHRpb25zLCBwcmludDIpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoaGFzUHJldHRpZXJJZ25vcmUocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGxvY1N0YXJ0KG5vZGUpLCBsb2NFbmQobm9kZSkpO1xuICAgICAgfVxuICAgICAgY29uc3QgZmF2b3JpdGVRdW90ZSA9IG9wdGlvbnMuc2luZ2xlUXVvdGUgPyBcIidcIiA6ICdcIic7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiQmxvY2tcIjpcbiAgICAgICAgY2FzZSBcIlByb2dyYW1cIjpcbiAgICAgICAgY2FzZSBcIlRlbXBsYXRlXCI6IHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAocGF0aC5tYXAocHJpbnQyLCBcImJvZHlcIikpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJFbGVtZW50Tm9kZVwiOiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnRpbmdUYWcgPSBncm91cChwcmludFN0YXJ0aW5nVGFnKHBhdGgsIHByaW50MikpO1xuICAgICAgICAgIGNvbnN0IGVzY2FwZU5leHRFbGVtZW50Tm9kZSA9IG9wdGlvbnMuaHRtbFdoaXRlc3BhY2VTZW5zaXRpdml0eSA9PT0gXCJpZ25vcmVcIiAmJiBpc05leHROb2RlT2ZTb21lVHlwZShwYXRoLCBbXCJFbGVtZW50Tm9kZVwiXSkgPyBzb2Z0bGluZSA6IFwiXCI7XG4gICAgICAgICAgaWYgKGlzVm9pZChub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtzdGFydGluZ1RhZywgZXNjYXBlTmV4dEVsZW1lbnROb2RlXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZW5kaW5nVGFnID0gW1wiPC9cIiwgbm9kZS50YWcsIFwiPlwiXTtcbiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbc3RhcnRpbmdUYWcsIGluZGVudChlbmRpbmdUYWcpLCBlc2NhcGVOZXh0RWxlbWVudE5vZGVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0aW9ucy5odG1sV2hpdGVzcGFjZVNlbnNpdGl2aXR5ID09PSBcImlnbm9yZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW3N0YXJ0aW5nVGFnLCBpbmRlbnQocHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludDIpKSwgaGFyZGxpbmUsIGluZGVudChlbmRpbmdUYWcpLCBlc2NhcGVOZXh0RWxlbWVudE5vZGVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW3N0YXJ0aW5nVGFnLCBpbmRlbnQoZ3JvdXAocHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludDIpKSksIGluZGVudChlbmRpbmdUYWcpLCBlc2NhcGVOZXh0RWxlbWVudE5vZGVdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJCbG9ja1N0YXRlbWVudFwiOiB7XG4gICAgICAgICAgY29uc3QgcHAgPSBwYXRoLmdldFBhcmVudE5vZGUoMSk7XG4gICAgICAgICAgY29uc3QgaXNFbHNlSWYgPSBwcCAmJiBwcC5pbnZlcnNlICYmIHBwLmludmVyc2UuYm9keS5sZW5ndGggPT09IDEgJiYgcHAuaW52ZXJzZS5ib2R5WzBdID09PSBub2RlICYmIHBwLmludmVyc2UuYm9keVswXS5wYXRoLnBhcnRzWzBdID09PSBcImlmXCI7XG4gICAgICAgICAgaWYgKGlzRWxzZUlmKSB7XG4gICAgICAgICAgICByZXR1cm4gW3ByaW50RWxzZUlmQmxvY2socGF0aCwgcHJpbnQyKSwgcHJpbnRQcm9ncmFtKHBhdGgsIHByaW50Miwgb3B0aW9ucyksIHByaW50SW52ZXJzZShwYXRoLCBwcmludDIsIG9wdGlvbnMpXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtwcmludE9wZW5CbG9jayhwYXRoLCBwcmludDIpLCBncm91cChbcHJpbnRQcm9ncmFtKHBhdGgsIHByaW50Miwgb3B0aW9ucyksIHByaW50SW52ZXJzZShwYXRoLCBwcmludDIsIG9wdGlvbnMpLCBwcmludENsb3NlQmxvY2socGF0aCwgcHJpbnQyLCBvcHRpb25zKV0pXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50XCI6IHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW1wie3tcIiwgcHJpbnRQYXRoQW5kUGFyYW1zKHBhdGgsIHByaW50MiksIFwifX1cIl0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJNdXN0YWNoZVN0YXRlbWVudFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKFtwcmludE9wZW5pbmdNdXN0YWNoZShub2RlKSwgcHJpbnRQYXRoQW5kUGFyYW1zKHBhdGgsIHByaW50MiksIHByaW50Q2xvc2luZ011c3RhY2hlKG5vZGUpXSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlN1YkV4cHJlc3Npb25cIjoge1xuICAgICAgICAgIHJldHVybiBncm91cChbXCIoXCIsIHByaW50U3ViRXhwcmVzc2lvblBhdGhBbmRQYXJhbXMocGF0aCwgcHJpbnQyKSwgc29mdGxpbmUsIFwiKVwiXSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkF0dHJOb2RlXCI6IHtcbiAgICAgICAgICBjb25zdCBpc1RleHQgPSBub2RlLnZhbHVlLnR5cGUgPT09IFwiVGV4dE5vZGVcIjtcbiAgICAgICAgICBjb25zdCBpc0VtcHR5VGV4dCA9IGlzVGV4dCAmJiBub2RlLnZhbHVlLmNoYXJzID09PSBcIlwiO1xuICAgICAgICAgIGlmIChpc0VtcHR5VGV4dCAmJiBsb2NTdGFydChub2RlLnZhbHVlKSA9PT0gbG9jRW5kKG5vZGUudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBxdW90ZSA9IGlzVGV4dCA/IGdldFByZWZlcnJlZFF1b3RlKG5vZGUudmFsdWUuY2hhcnMsIGZhdm9yaXRlUXVvdGUpLnF1b3RlIDogbm9kZS52YWx1ZS50eXBlID09PSBcIkNvbmNhdFN0YXRlbWVudFwiID8gZ2V0UHJlZmVycmVkUXVvdGUobm9kZS52YWx1ZS5wYXJ0cy5maWx0ZXIoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gXCJUZXh0Tm9kZVwiKS5tYXAoKHBhcnQpID0+IHBhcnQuY2hhcnMpLmpvaW4oXCJcIiksIGZhdm9yaXRlUXVvdGUpLnF1b3RlIDogXCJcIjtcbiAgICAgICAgICBjb25zdCB2YWx1ZURvYyA9IHByaW50MihcInZhbHVlXCIpO1xuICAgICAgICAgIHJldHVybiBbbm9kZS5uYW1lLCBcIj1cIiwgcXVvdGUsIG5vZGUubmFtZSA9PT0gXCJjbGFzc1wiICYmIHF1b3RlID8gZ3JvdXAoaW5kZW50KHZhbHVlRG9jKSkgOiB2YWx1ZURvYywgcXVvdGVdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJDb25jYXRTdGF0ZW1lbnRcIjoge1xuICAgICAgICAgIHJldHVybiBwYXRoLm1hcChwcmludDIsIFwicGFydHNcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkhhc2hcIjoge1xuICAgICAgICAgIHJldHVybiBqb2luKGxpbmUsIHBhdGgubWFwKHByaW50MiwgXCJwYWlyc1wiKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkhhc2hQYWlyXCI6IHtcbiAgICAgICAgICByZXR1cm4gW25vZGUua2V5LCBcIj1cIiwgcHJpbnQyKFwidmFsdWVcIildO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJUZXh0Tm9kZVwiOiB7XG4gICAgICAgICAgbGV0IHRleHQgPSBub2RlLmNoYXJzLnJlcGxhY2UoL3t7L2csIFwiXFxcXHt7XCIpO1xuICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gZ2V0Q3VycmVudEF0dHJpYnV0ZU5hbWUocGF0aCk7XG4gICAgICAgICAgaWYgKGF0dHJOYW1lKSB7XG4gICAgICAgICAgICBpZiAoYXR0ck5hbWUgPT09IFwiY2xhc3NcIikge1xuICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRDbGFzc2VzID0gdGV4dC50cmltKCkuc3BsaXQoL1xccysvKS5qb2luKFwiIFwiKTtcbiAgICAgICAgICAgICAgbGV0IGxlYWRpbmdTcGFjZTIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgbGV0IHRyYWlsaW5nU3BhY2UyID0gZmFsc2U7XG4gICAgICAgICAgICAgIGlmIChpc1BhcmVudE9mU29tZVR5cGUocGF0aCwgW1wiQ29uY2F0U3RhdGVtZW50XCJdKSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1ByZXZpb3VzTm9kZU9mU29tZVR5cGUocGF0aCwgW1wiTXVzdGFjaGVTdGF0ZW1lbnRcIl0pICYmIC9eXFxzLy50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICAgICAgICBsZWFkaW5nU3BhY2UyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzTmV4dE5vZGVPZlNvbWVUeXBlKHBhdGgsIFtcIk11c3RhY2hlU3RhdGVtZW50XCJdKSAmJiAvXFxzJC8udGVzdCh0ZXh0KSAmJiBmb3JtYXR0ZWRDbGFzc2VzICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNlMiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBbbGVhZGluZ1NwYWNlMiA/IGxpbmUgOiBcIlwiLCBmb3JtYXR0ZWRDbGFzc2VzLCB0cmFpbGluZ1NwYWNlMiA/IGxpbmUgOiBcIlwiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXBsYWNlVGV4dEVuZE9mTGluZSh0ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgd2hpdGVzcGFjZXNPbmx5UkUgPSAvXltcXHRcXG5cXGZcXHIgXSokLztcbiAgICAgICAgICBjb25zdCBpc1doaXRlc3BhY2VPbmx5ID0gd2hpdGVzcGFjZXNPbmx5UkUudGVzdCh0ZXh0KTtcbiAgICAgICAgICBjb25zdCBpc0ZpcnN0RWxlbWVudCA9ICFnZXRQcmV2aW91c05vZGUocGF0aCk7XG4gICAgICAgICAgY29uc3QgaXNMYXN0RWxlbWVudCA9ICFnZXROZXh0Tm9kZShwYXRoKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5odG1sV2hpdGVzcGFjZVNlbnNpdGl2aXR5ICE9PSBcImlnbm9yZVwiKSB7XG4gICAgICAgICAgICBjb25zdCBsZWFkaW5nV2hpdGVzcGFjZXNSRSA9IC9eW1xcdFxcblxcZlxcciBdKi87XG4gICAgICAgICAgICBjb25zdCB0cmFpbGluZ1doaXRlc3BhY2VzUkUgPSAvW1xcdFxcblxcZlxcciBdKiQvO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkVHJpbVRyYWlsaW5nTmV3bGluZXMgPSBpc0xhc3RFbGVtZW50ICYmIGlzUGFyZW50T2ZTb21lVHlwZShwYXRoLCBbXCJUZW1wbGF0ZVwiXSk7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRUcmltTGVhZGluZ05ld2xpbmVzID0gaXNGaXJzdEVsZW1lbnQgJiYgaXNQYXJlbnRPZlNvbWVUeXBlKHBhdGgsIFtcIlRlbXBsYXRlXCJdKTtcbiAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2VPbmx5KSB7XG4gICAgICAgICAgICAgIGlmIChzaG91bGRUcmltTGVhZGluZ05ld2xpbmVzIHx8IHNob3VsZFRyaW1UcmFpbGluZ05ld2xpbmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGV0IGJyZWFrcyA9IFtsaW5lXTtcbiAgICAgICAgICAgICAgY29uc3QgbmV3bGluZXMgPSBjb3VudE5ld0xpbmVzKHRleHQpO1xuICAgICAgICAgICAgICBpZiAobmV3bGluZXMpIHtcbiAgICAgICAgICAgICAgICBicmVha3MgPSBnZW5lcmF0ZUhhcmRsaW5lcyhuZXdsaW5lcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGlzTGFzdE5vZGVPZlNpYmxpbmdzKHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWtzID0gYnJlYWtzLm1hcCgobmV3bGluZSkgPT4gZGVkZW50KG5ld2xpbmUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gYnJlYWtzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2xlYWRdID0gdGV4dC5tYXRjaChsZWFkaW5nV2hpdGVzcGFjZXNSRSk7XG4gICAgICAgICAgICBjb25zdCBbdGFpbF0gPSB0ZXh0Lm1hdGNoKHRyYWlsaW5nV2hpdGVzcGFjZXNSRSk7XG4gICAgICAgICAgICBsZXQgbGVhZEJyZWFrcyA9IFtdO1xuICAgICAgICAgICAgaWYgKGxlYWQpIHtcbiAgICAgICAgICAgICAgbGVhZEJyZWFrcyA9IFtsaW5lXTtcbiAgICAgICAgICAgICAgY29uc3QgbGVhZGluZ05ld2xpbmVzID0gY291bnROZXdMaW5lcyhsZWFkKTtcbiAgICAgICAgICAgICAgaWYgKGxlYWRpbmdOZXdsaW5lcykge1xuICAgICAgICAgICAgICAgIGxlYWRCcmVha3MgPSBnZW5lcmF0ZUhhcmRsaW5lcyhsZWFkaW5nTmV3bGluZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UobGVhZGluZ1doaXRlc3BhY2VzUkUsIFwiXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRyYWlsQnJlYWtzID0gW107XG4gICAgICAgICAgICBpZiAodGFpbCkge1xuICAgICAgICAgICAgICBpZiAoIXNob3VsZFRyaW1UcmFpbGluZ05ld2xpbmVzKSB7XG4gICAgICAgICAgICAgICAgdHJhaWxCcmVha3MgPSBbbGluZV07XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhaWxpbmdOZXdsaW5lcyA9IGNvdW50TmV3TGluZXModGFpbCk7XG4gICAgICAgICAgICAgICAgaWYgKHRyYWlsaW5nTmV3bGluZXMpIHtcbiAgICAgICAgICAgICAgICAgIHRyYWlsQnJlYWtzID0gZ2VuZXJhdGVIYXJkbGluZXModHJhaWxpbmdOZXdsaW5lcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0xhc3ROb2RlT2ZTaWJsaW5ncyhwYXRoKSkge1xuICAgICAgICAgICAgICAgICAgdHJhaWxCcmVha3MgPSB0cmFpbEJyZWFrcy5tYXAoKGhhcmRsaW5lMikgPT4gZGVkZW50KGhhcmRsaW5lMikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKHRyYWlsaW5nV2hpdGVzcGFjZXNSRSwgXCJcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gWy4uLmxlYWRCcmVha3MsIGZpbGwoZ2V0VGV4dFZhbHVlUGFydHModGV4dCkpLCAuLi50cmFpbEJyZWFrc107XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGxpbmVCcmVha3NDb3VudCA9IGNvdW50TmV3TGluZXModGV4dCk7XG4gICAgICAgICAgbGV0IGxlYWRpbmdMaW5lQnJlYWtzQ291bnQgPSBjb3VudExlYWRpbmdOZXdMaW5lcyh0ZXh0KTtcbiAgICAgICAgICBsZXQgdHJhaWxpbmdMaW5lQnJlYWtzQ291bnQgPSBjb3VudFRyYWlsaW5nTmV3TGluZXModGV4dCk7XG4gICAgICAgICAgaWYgKChpc0ZpcnN0RWxlbWVudCB8fCBpc0xhc3RFbGVtZW50KSAmJiBpc1doaXRlc3BhY2VPbmx5ICYmIGlzUGFyZW50T2ZTb21lVHlwZShwYXRoLCBbXCJCbG9ja1wiLCBcIkVsZW1lbnROb2RlXCIsIFwiVGVtcGxhdGVcIl0pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZU9ubHkgJiYgbGluZUJyZWFrc0NvdW50KSB7XG4gICAgICAgICAgICBsZWFkaW5nTGluZUJyZWFrc0NvdW50ID0gTWF0aC5taW4obGluZUJyZWFrc0NvdW50LCBORVdMSU5FU19UT19QUkVTRVJWRV9NQVgpO1xuICAgICAgICAgICAgdHJhaWxpbmdMaW5lQnJlYWtzQ291bnQgPSAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNOZXh0Tm9kZU9mU29tZVR5cGUocGF0aCwgW1wiQmxvY2tTdGF0ZW1lbnRcIiwgXCJFbGVtZW50Tm9kZVwiXSkpIHtcbiAgICAgICAgICAgICAgdHJhaWxpbmdMaW5lQnJlYWtzQ291bnQgPSBNYXRoLm1heCh0cmFpbGluZ0xpbmVCcmVha3NDb3VudCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNQcmV2aW91c05vZGVPZlNvbWVUeXBlKHBhdGgsIFtcIkJsb2NrU3RhdGVtZW50XCIsIFwiRWxlbWVudE5vZGVcIl0pKSB7XG4gICAgICAgICAgICAgIGxlYWRpbmdMaW5lQnJlYWtzQ291bnQgPSBNYXRoLm1heChsZWFkaW5nTGluZUJyZWFrc0NvdW50LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGxlYWRpbmdTcGFjZSA9IFwiXCI7XG4gICAgICAgICAgbGV0IHRyYWlsaW5nU3BhY2UgPSBcIlwiO1xuICAgICAgICAgIGlmICh0cmFpbGluZ0xpbmVCcmVha3NDb3VudCA9PT0gMCAmJiBpc05leHROb2RlT2ZTb21lVHlwZShwYXRoLCBbXCJNdXN0YWNoZVN0YXRlbWVudFwiXSkpIHtcbiAgICAgICAgICAgIHRyYWlsaW5nU3BhY2UgPSBcIiBcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxlYWRpbmdMaW5lQnJlYWtzQ291bnQgPT09IDAgJiYgaXNQcmV2aW91c05vZGVPZlNvbWVUeXBlKHBhdGgsIFtcIk11c3RhY2hlU3RhdGVtZW50XCJdKSkge1xuICAgICAgICAgICAgbGVhZGluZ1NwYWNlID0gXCIgXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0ZpcnN0RWxlbWVudCkge1xuICAgICAgICAgICAgbGVhZGluZ0xpbmVCcmVha3NDb3VudCA9IDA7XG4gICAgICAgICAgICBsZWFkaW5nU3BhY2UgPSBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNMYXN0RWxlbWVudCkge1xuICAgICAgICAgICAgdHJhaWxpbmdMaW5lQnJlYWtzQ291bnQgPSAwO1xuICAgICAgICAgICAgdHJhaWxpbmdTcGFjZSA9IFwiXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL15bXFx0XFxuXFxmXFxyIF0rL2csIGxlYWRpbmdTcGFjZSkucmVwbGFjZSgvW1xcdFxcblxcZlxcciBdKyQvLCB0cmFpbGluZ1NwYWNlKTtcbiAgICAgICAgICByZXR1cm4gWy4uLmdlbmVyYXRlSGFyZGxpbmVzKGxlYWRpbmdMaW5lQnJlYWtzQ291bnQpLCBmaWxsKGdldFRleHRWYWx1ZVBhcnRzKHRleHQpKSwgLi4uZ2VuZXJhdGVIYXJkbGluZXModHJhaWxpbmdMaW5lQnJlYWtzQ291bnQpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiTXVzdGFjaGVDb21tZW50U3RhdGVtZW50XCI6IHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IGxvY1N0YXJ0KG5vZGUpO1xuICAgICAgICAgIGNvbnN0IGVuZCA9IGxvY0VuZChub2RlKTtcbiAgICAgICAgICBjb25zdCBpc0xlZnRXaGl0ZVNwYWNlU2Vuc2l0aXZlID0gb3B0aW9ucy5vcmlnaW5hbFRleHQuY2hhckF0KHN0YXJ0ICsgMikgPT09IFwiflwiO1xuICAgICAgICAgIGNvbnN0IGlzUmlnaHRXaGl0ZXNwYWNlU2Vuc2l0aXZlID0gb3B0aW9ucy5vcmlnaW5hbFRleHQuY2hhckF0KGVuZCAtIDMpID09PSBcIn5cIjtcbiAgICAgICAgICBjb25zdCBkYXNoZXMgPSBub2RlLnZhbHVlLmluY2x1ZGVzKFwifX1cIikgPyBcIi0tXCIgOiBcIlwiO1xuICAgICAgICAgIHJldHVybiBbXCJ7e1wiLCBpc0xlZnRXaGl0ZVNwYWNlU2Vuc2l0aXZlID8gXCJ+XCIgOiBcIlwiLCBcIiFcIiwgZGFzaGVzLCBub2RlLnZhbHVlLCBkYXNoZXMsIGlzUmlnaHRXaGl0ZXNwYWNlU2Vuc2l0aXZlID8gXCJ+XCIgOiBcIlwiLCBcIn19XCJdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJQYXRoRXhwcmVzc2lvblwiOiB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUub3JpZ2luYWw7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkJvb2xlYW5MaXRlcmFsXCI6IHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKG5vZGUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJDb21tZW50U3RhdGVtZW50XCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wiPCEtLVwiLCBub2RlLnZhbHVlLCBcIi0tPlwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiU3RyaW5nTGl0ZXJhbFwiOiB7XG4gICAgICAgICAgaWYgKG5lZWRzT3Bwb3NpdGVRdW90ZShwYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgcHJpbnRGYXZvcml0ZVF1b3RlID0gIW9wdGlvbnMuc2luZ2xlUXVvdGUgPyBcIidcIiA6ICdcIic7XG4gICAgICAgICAgICByZXR1cm4gcHJpbnRTdHJpbmdMaXRlcmFsKG5vZGUudmFsdWUsIHByaW50RmF2b3JpdGVRdW90ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwcmludFN0cmluZ0xpdGVyYWwobm9kZS52YWx1ZSwgZmF2b3JpdGVRdW90ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIk51bWJlckxpdGVyYWxcIjoge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlVuZGVmaW5lZExpdGVyYWxcIjoge1xuICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJOdWxsTGl0ZXJhbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBnbGltbWVyIHR5cGU6IFwiICsgSlNPTi5zdHJpbmdpZnkobm9kZS50eXBlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNvcnRCeUxvYyhhLCBiKSB7XG4gICAgICByZXR1cm4gbG9jU3RhcnQoYSkgLSBsb2NTdGFydChiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRTdGFydGluZ1RhZyhwYXRoLCBwcmludDIpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCB0eXBlcyA9IFtcImF0dHJpYnV0ZXNcIiwgXCJtb2RpZmllcnNcIiwgXCJjb21tZW50c1wiXS5maWx0ZXIoKHByb3BlcnR5KSA9PiBpc05vbkVtcHR5QXJyYXkobm9kZVtwcm9wZXJ0eV0pKTtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0eXBlcy5mbGF0TWFwKCh0eXBlKSA9PiBub2RlW3R5cGVdKS5zb3J0KHNvcnRCeUxvYyk7XG4gICAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZVR5cGUgb2YgdHlwZXMpIHtcbiAgICAgICAgcGF0aC5lYWNoKChhdHRyaWJ1dGVQYXRoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBhdHRyaWJ1dGVzLmluZGV4T2YoYXR0cmlidXRlUGF0aC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICBhdHRyaWJ1dGVzLnNwbGljZShpbmRleCwgMSwgW2xpbmUsIHByaW50MigpXSk7XG4gICAgICAgIH0sIGF0dHJpYnV0ZVR5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTm9uRW1wdHlBcnJheShub2RlLmJsb2NrUGFyYW1zKSkge1xuICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobGluZSwgcHJpbnRCbG9ja1BhcmFtcyhub2RlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW1wiPFwiLCBub2RlLnRhZywgaW5kZW50KGF0dHJpYnV0ZXMpLCBwcmludFN0YXJ0aW5nVGFnRW5kTWFya2VyKG5vZGUpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludDIpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBpc0VtcHR5ID0gbm9kZS5jaGlsZHJlbi5ldmVyeSgobm9kZTIpID0+IGlzV2hpdGVzcGFjZU5vZGUobm9kZTIpKTtcbiAgICAgIGlmIChvcHRpb25zLmh0bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHkgPT09IFwiaWdub3JlXCIgJiYgaXNFbXB0eSkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRoLm1hcCgoY2hpbGRQYXRoLCBjaGlsZEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHByaW50ZWRDaGlsZCA9IHByaW50MigpO1xuICAgICAgICBpZiAoY2hpbGRJbmRleCA9PT0gMCAmJiBvcHRpb25zLmh0bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHkgPT09IFwiaWdub3JlXCIpIHtcbiAgICAgICAgICByZXR1cm4gW3NvZnRsaW5lLCBwcmludGVkQ2hpbGRdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmludGVkQ2hpbGQ7XG4gICAgICB9LCBcImNoaWxkcmVuXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFN0YXJ0aW5nVGFnRW5kTWFya2VyKG5vZGUpIHtcbiAgICAgIGlmIChpc1ZvaWQobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGlmQnJlYWsoW3NvZnRsaW5lLCBcIi8+XCJdLCBbXCIgLz5cIiwgc29mdGxpbmVdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpZkJyZWFrKFtzb2Z0bGluZSwgXCI+XCJdLCBcIj5cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50T3BlbmluZ011c3RhY2hlKG5vZGUpIHtcbiAgICAgIGNvbnN0IG11c3RhY2hlID0gbm9kZS5lc2NhcGVkID09PSBmYWxzZSA/IFwie3t7XCIgOiBcInt7XCI7XG4gICAgICBjb25zdCBzdHJpcCA9IG5vZGUuc3RyaXAgJiYgbm9kZS5zdHJpcC5vcGVuID8gXCJ+XCIgOiBcIlwiO1xuICAgICAgcmV0dXJuIFttdXN0YWNoZSwgc3RyaXBdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NpbmdNdXN0YWNoZShub2RlKSB7XG4gICAgICBjb25zdCBtdXN0YWNoZSA9IG5vZGUuZXNjYXBlZCA9PT0gZmFsc2UgPyBcIn19fVwiIDogXCJ9fVwiO1xuICAgICAgY29uc3Qgc3RyaXAgPSBub2RlLnN0cmlwICYmIG5vZGUuc3RyaXAuY2xvc2UgPyBcIn5cIiA6IFwiXCI7XG4gICAgICByZXR1cm4gW3N0cmlwLCBtdXN0YWNoZV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50T3BlbmluZ0Jsb2NrT3BlbmluZ011c3RhY2hlKG5vZGUpIHtcbiAgICAgIGNvbnN0IG9wZW5pbmcgPSBwcmludE9wZW5pbmdNdXN0YWNoZShub2RlKTtcbiAgICAgIGNvbnN0IHN0cmlwID0gbm9kZS5vcGVuU3RyaXAub3BlbiA/IFwiflwiIDogXCJcIjtcbiAgICAgIHJldHVybiBbb3BlbmluZywgc3RyaXAsIFwiI1wiXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRPcGVuaW5nQmxvY2tDbG9zaW5nTXVzdGFjaGUobm9kZSkge1xuICAgICAgY29uc3QgY2xvc2luZyA9IHByaW50Q2xvc2luZ011c3RhY2hlKG5vZGUpO1xuICAgICAgY29uc3Qgc3RyaXAgPSBub2RlLm9wZW5TdHJpcC5jbG9zZSA/IFwiflwiIDogXCJcIjtcbiAgICAgIHJldHVybiBbc3RyaXAsIGNsb3NpbmddO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NpbmdCbG9ja09wZW5pbmdNdXN0YWNoZShub2RlKSB7XG4gICAgICBjb25zdCBvcGVuaW5nID0gcHJpbnRPcGVuaW5nTXVzdGFjaGUobm9kZSk7XG4gICAgICBjb25zdCBzdHJpcCA9IG5vZGUuY2xvc2VTdHJpcC5vcGVuID8gXCJ+XCIgOiBcIlwiO1xuICAgICAgcmV0dXJuIFtvcGVuaW5nLCBzdHJpcCwgXCIvXCJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NpbmdCbG9ja0Nsb3NpbmdNdXN0YWNoZShub2RlKSB7XG4gICAgICBjb25zdCBjbG9zaW5nID0gcHJpbnRDbG9zaW5nTXVzdGFjaGUobm9kZSk7XG4gICAgICBjb25zdCBzdHJpcCA9IG5vZGUuY2xvc2VTdHJpcC5jbG9zZSA/IFwiflwiIDogXCJcIjtcbiAgICAgIHJldHVybiBbc3RyaXAsIGNsb3NpbmddO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEludmVyc2VCbG9ja09wZW5pbmdNdXN0YWNoZShub2RlKSB7XG4gICAgICBjb25zdCBvcGVuaW5nID0gcHJpbnRPcGVuaW5nTXVzdGFjaGUobm9kZSk7XG4gICAgICBjb25zdCBzdHJpcCA9IG5vZGUuaW52ZXJzZVN0cmlwLm9wZW4gPyBcIn5cIiA6IFwiXCI7XG4gICAgICByZXR1cm4gW29wZW5pbmcsIHN0cmlwXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRJbnZlcnNlQmxvY2tDbG9zaW5nTXVzdGFjaGUobm9kZSkge1xuICAgICAgY29uc3QgY2xvc2luZyA9IHByaW50Q2xvc2luZ011c3RhY2hlKG5vZGUpO1xuICAgICAgY29uc3Qgc3RyaXAgPSBub2RlLmludmVyc2VTdHJpcC5jbG9zZSA/IFwiflwiIDogXCJcIjtcbiAgICAgIHJldHVybiBbc3RyaXAsIGNsb3NpbmddO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludE9wZW5CbG9jayhwYXRoLCBwcmludDIpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBvcGVuaW5nTXVzdGFjaGUgPSBwcmludE9wZW5pbmdCbG9ja09wZW5pbmdNdXN0YWNoZShub2RlKTtcbiAgICAgIGNvbnN0IGNsb3NpbmdNdXN0YWNoZSA9IHByaW50T3BlbmluZ0Jsb2NrQ2xvc2luZ011c3RhY2hlKG5vZGUpO1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IFtwcmludFBhdGgocGF0aCwgcHJpbnQyKV07XG4gICAgICBjb25zdCBwYXJhbXMgPSBwcmludFBhcmFtcyhwYXRoLCBwcmludDIpO1xuICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobGluZSwgcGFyYW1zKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc05vbkVtcHR5QXJyYXkobm9kZS5wcm9ncmFtLmJsb2NrUGFyYW1zKSkge1xuICAgICAgICBjb25zdCBibG9jayA9IHByaW50QmxvY2tQYXJhbXMobm9kZS5wcm9ncmFtKTtcbiAgICAgICAgYXR0cmlidXRlcy5wdXNoKGxpbmUsIGJsb2NrKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91cChbb3BlbmluZ011c3RhY2hlLCBpbmRlbnQoYXR0cmlidXRlcyksIHNvZnRsaW5lLCBjbG9zaW5nTXVzdGFjaGVdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRFbHNlQmxvY2sobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIFtvcHRpb25zLmh0bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHkgPT09IFwiaWdub3JlXCIgPyBoYXJkbGluZSA6IFwiXCIsIHByaW50SW52ZXJzZUJsb2NrT3BlbmluZ011c3RhY2hlKG5vZGUpLCBcImVsc2VcIiwgcHJpbnRJbnZlcnNlQmxvY2tDbG9zaW5nTXVzdGFjaGUobm9kZSldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEVsc2VJZkJsb2NrKHBhdGgsIHByaW50Mikge1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgxKTtcbiAgICAgIHJldHVybiBbcHJpbnRJbnZlcnNlQmxvY2tPcGVuaW5nTXVzdGFjaGUocGFyZW50Tm9kZSksIFwiZWxzZSBpZiBcIiwgcHJpbnRQYXJhbXMocGF0aCwgcHJpbnQyKSwgcHJpbnRJbnZlcnNlQmxvY2tDbG9zaW5nTXVzdGFjaGUocGFyZW50Tm9kZSldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NlQmxvY2socGF0aCwgcHJpbnQyLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKG9wdGlvbnMuaHRtbFdoaXRlc3BhY2VTZW5zaXRpdml0eSA9PT0gXCJpZ25vcmVcIikge1xuICAgICAgICBjb25zdCBlc2NhcGUgPSBibG9ja1N0YXRlbWVudEhhc09ubHlXaGl0ZXNwYWNlSW5Qcm9ncmFtKG5vZGUpID8gc29mdGxpbmUgOiBoYXJkbGluZTtcbiAgICAgICAgcmV0dXJuIFtlc2NhcGUsIHByaW50Q2xvc2luZ0Jsb2NrT3BlbmluZ011c3RhY2hlKG5vZGUpLCBwcmludDIoXCJwYXRoXCIpLCBwcmludENsb3NpbmdCbG9ja0Nsb3NpbmdNdXN0YWNoZShub2RlKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gW3ByaW50Q2xvc2luZ0Jsb2NrT3BlbmluZ011c3RhY2hlKG5vZGUpLCBwcmludDIoXCJwYXRoXCIpLCBwcmludENsb3NpbmdCbG9ja0Nsb3NpbmdNdXN0YWNoZShub2RlKV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGJsb2NrU3RhdGVtZW50SGFzT25seVdoaXRlc3BhY2VJblByb2dyYW0obm9kZSkge1xuICAgICAgcmV0dXJuIGlzTm9kZU9mU29tZVR5cGUobm9kZSwgW1wiQmxvY2tTdGF0ZW1lbnRcIl0pICYmIG5vZGUucHJvZ3JhbS5ib2R5LmV2ZXJ5KChub2RlMikgPT4gaXNXaGl0ZXNwYWNlTm9kZShub2RlMikpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBibG9ja1N0YXRlbWVudEhhc0Vsc2VJZihub2RlKSB7XG4gICAgICByZXR1cm4gYmxvY2tTdGF0ZW1lbnRIYXNFbHNlKG5vZGUpICYmIG5vZGUuaW52ZXJzZS5ib2R5Lmxlbmd0aCA9PT0gMSAmJiBpc05vZGVPZlNvbWVUeXBlKG5vZGUuaW52ZXJzZS5ib2R5WzBdLCBbXCJCbG9ja1N0YXRlbWVudFwiXSkgJiYgbm9kZS5pbnZlcnNlLmJvZHlbMF0ucGF0aC5wYXJ0c1swXSA9PT0gXCJpZlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBibG9ja1N0YXRlbWVudEhhc0Vsc2Uobm9kZSkge1xuICAgICAgcmV0dXJuIGlzTm9kZU9mU29tZVR5cGUobm9kZSwgW1wiQmxvY2tTdGF0ZW1lbnRcIl0pICYmIG5vZGUuaW52ZXJzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRQcm9ncmFtKHBhdGgsIHByaW50Miwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChibG9ja1N0YXRlbWVudEhhc09ubHlXaGl0ZXNwYWNlSW5Qcm9ncmFtKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvZ3JhbSA9IHByaW50MihcInByb2dyYW1cIik7XG4gICAgICBpZiAob3B0aW9ucy5odG1sV2hpdGVzcGFjZVNlbnNpdGl2aXR5ID09PSBcImlnbm9yZVwiKSB7XG4gICAgICAgIHJldHVybiBpbmRlbnQoW2hhcmRsaW5lLCBwcm9ncmFtXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZW50KHByb2dyYW0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEludmVyc2UocGF0aCwgcHJpbnQyLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgaW52ZXJzZSA9IHByaW50MihcImludmVyc2VcIik7XG4gICAgICBjb25zdCBwcmludGVkID0gb3B0aW9ucy5odG1sV2hpdGVzcGFjZVNlbnNpdGl2aXR5ID09PSBcImlnbm9yZVwiID8gW2hhcmRsaW5lLCBpbnZlcnNlXSA6IGludmVyc2U7XG4gICAgICBpZiAoYmxvY2tTdGF0ZW1lbnRIYXNFbHNlSWYobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICB9XG4gICAgICBpZiAoYmxvY2tTdGF0ZW1lbnRIYXNFbHNlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBbcHJpbnRFbHNlQmxvY2sobm9kZSwgb3B0aW9ucyksIGluZGVudChwcmludGVkKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0VGV4dFZhbHVlUGFydHModmFsdWUpIHtcbiAgICAgIHJldHVybiBnZXREb2NQYXJ0cyhqb2luKGxpbmUsIHNwbGl0QnlIdG1sV2hpdGVzcGFjZSh2YWx1ZSkpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BsaXRCeUh0bWxXaGl0ZXNwYWNlKHN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdCgvW1xcdFxcblxcZlxcciBdKy8pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDdXJyZW50QXR0cmlidXRlTmFtZShwYXRoKSB7XG4gICAgICBmb3IgKGxldCBkZXB0aCA9IDA7IGRlcHRoIDwgMjsgZGVwdGgrKykge1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKGRlcHRoKTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS50eXBlID09PSBcIkF0dHJOb2RlXCIpIHtcbiAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZS5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gY291bnROZXdMaW5lcyhzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHR5cGVvZiBzdHJpbmcgPT09IFwic3RyaW5nXCIgPyBzdHJpbmcgOiBcIlwiO1xuICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdChcIlxcblwiKS5sZW5ndGggLSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb3VudExlYWRpbmdOZXdMaW5lcyhzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHR5cGVvZiBzdHJpbmcgPT09IFwic3RyaW5nXCIgPyBzdHJpbmcgOiBcIlwiO1xuICAgICAgY29uc3QgbmV3TGluZXMgPSAoc3RyaW5nLm1hdGNoKC9eKFteXFxTXFxuXFxyXSpbXFxuXFxyXSkrL2cpIHx8IFtdKVswXSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGNvdW50TmV3TGluZXMobmV3TGluZXMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb3VudFRyYWlsaW5nTmV3TGluZXMoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0eXBlb2Ygc3RyaW5nID09PSBcInN0cmluZ1wiID8gc3RyaW5nIDogXCJcIjtcbiAgICAgIGNvbnN0IG5ld0xpbmVzID0gKHN0cmluZy5tYXRjaCgvKFtcXG5cXHJdW15cXFNcXG5cXHJdKikrJC9nKSB8fCBbXSlbMF0gfHwgXCJcIjtcbiAgICAgIHJldHVybiBjb3VudE5ld0xpbmVzKG5ld0xpbmVzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVIYXJkbGluZXMobnVtYmVyID0gMCkge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20oe1xuICAgICAgICBsZW5ndGg6IE1hdGgubWluKG51bWJlciwgTkVXTElORVNfVE9fUFJFU0VSVkVfTUFYKVxuICAgICAgfSkuZmlsbChoYXJkbGluZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50U3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsLCBmYXZvcml0ZVF1b3RlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHF1b3RlLFxuICAgICAgICByZWdleFxuICAgICAgfSA9IGdldFByZWZlcnJlZFF1b3RlKHN0cmluZ0xpdGVyYWwsIGZhdm9yaXRlUXVvdGUpO1xuICAgICAgcmV0dXJuIFtxdW90ZSwgc3RyaW5nTGl0ZXJhbC5yZXBsYWNlKHJlZ2V4LCBgXFxcXCR7cXVvdGV9YCksIHF1b3RlXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbmVlZHNPcHBvc2l0ZVF1b3RlKHBhdGgpIHtcbiAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICBsZXQgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZShpbmRleCk7XG4gICAgICB3aGlsZSAocGFyZW50Tm9kZSAmJiBpc05vZGVPZlNvbWVUeXBlKHBhcmVudE5vZGUsIFtcIlN1YkV4cHJlc3Npb25cIl0pKSB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIHBhcmVudE5vZGUgPSBwYXRoLmdldFBhcmVudE5vZGUoaW5kZXgpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudE5vZGUgJiYgaXNOb2RlT2ZTb21lVHlwZShwYXRoLmdldFBhcmVudE5vZGUoaW5kZXggKyAxKSwgW1wiQ29uY2F0U3RhdGVtZW50XCJdKSAmJiBpc05vZGVPZlNvbWVUeXBlKHBhdGguZ2V0UGFyZW50Tm9kZShpbmRleCArIDIpLCBbXCJBdHRyTm9kZVwiXSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50U3ViRXhwcmVzc2lvblBhdGhBbmRQYXJhbXMocGF0aCwgcHJpbnQyKSB7XG4gICAgICBjb25zdCBwcmludGVkID0gcHJpbnRQYXRoKHBhdGgsIHByaW50Mik7XG4gICAgICBjb25zdCBwYXJhbXMgPSBwcmludFBhcmFtcyhwYXRoLCBwcmludDIpO1xuICAgICAgaWYgKCFwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5kZW50KFtwcmludGVkLCBsaW5lLCBncm91cChwYXJhbXMpXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50UGF0aEFuZFBhcmFtcyhwYXRoLCBwcmludDIpIHtcbiAgICAgIGNvbnN0IHAgPSBwcmludFBhdGgocGF0aCwgcHJpbnQyKTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHByaW50UGFyYW1zKHBhdGgsIHByaW50Mik7XG4gICAgICBpZiAoIXBhcmFtcykge1xuICAgICAgICByZXR1cm4gcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbaW5kZW50KFtwLCBsaW5lLCBwYXJhbXNdKSwgc29mdGxpbmVdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFBhdGgocGF0aCwgcHJpbnQyKSB7XG4gICAgICByZXR1cm4gcHJpbnQyKFwicGF0aFwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRQYXJhbXMocGF0aCwgcHJpbnQyKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHBhdGgubWFwKHByaW50MiwgXCJwYXJhbXNcIik7XG4gICAgICAgIHBhcnRzLnB1c2goLi4ucGFyYW1zKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmhhc2ggJiYgbm9kZS5oYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHByaW50MihcImhhc2hcIik7XG4gICAgICAgIHBhcnRzLnB1c2goaGFzaCk7XG4gICAgICB9XG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGpvaW4obGluZSwgcGFydHMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEJsb2NrUGFyYW1zKG5vZGUpIHtcbiAgICAgIHJldHVybiBbXCJhcyB8XCIsIG5vZGUuYmxvY2tQYXJhbXMuam9pbihcIiBcIiksIFwifFwiXTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnQsXG4gICAgICBtYXNzYWdlQXN0Tm9kZTogY2xlYW5cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlcnMzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1oYW5kbGViYXJzL3BhcnNlcnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGdldCBnbGltbWVyKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLWdsaW1tZXIuanNcIikucGFyc2Vycy5nbGltbWVyO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfSGFuZGxlYmFycyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvbGluZ3Vpc3QtbGFuZ3VhZ2VzL2RhdGEvSGFuZGxlYmFycy5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBuYW1lOiBcIkhhbmRsZWJhcnNcIixcbiAgICAgIHR5cGU6IFwibWFya3VwXCIsXG4gICAgICBjb2xvcjogXCIjZjc5MzFlXCIsXG4gICAgICBhbGlhc2VzOiBbXCJoYnNcIiwgXCJodG1sYmFyc1wiXSxcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5oYW5kbGViYXJzXCIsIFwiLmhic1wiXSxcbiAgICAgIHRtU2NvcGU6IFwidGV4dC5odG1sLmhhbmRsZWJhcnNcIixcbiAgICAgIGFjZU1vZGU6IFwiaGFuZGxlYmFyc1wiLFxuICAgICAgbGFuZ3VhZ2VJZDogMTU1XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sYW5ndWFnZV9oYW5kbGViYXJzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1oYW5kbGViYXJzL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgY3JlYXRlTGFuZ3VhZ2UgPSByZXF1aXJlX2NyZWF0ZV9sYW5ndWFnZSgpO1xuICAgIHZhciBwcmludGVyID0gcmVxdWlyZV9wcmludGVyX2dsaW1tZXIoKTtcbiAgICB2YXIgcGFyc2VycyA9IHJlcXVpcmVfcGFyc2VyczMoKTtcbiAgICB2YXIgbGFuZ3VhZ2VzID0gW2NyZWF0ZUxhbmd1YWdlKHJlcXVpcmVfSGFuZGxlYmFycygpLCAoKSA9PiAoe1xuICAgICAgc2luY2U6IFwiMi4zLjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImdsaW1tZXJcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wiaGFuZGxlYmFyc1wiXVxuICAgIH0pKV07XG4gICAgdmFyIHByaW50ZXJzID0ge1xuICAgICAgZ2xpbW1lcjogcHJpbnRlclxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgcHJpbnRlcnMsXG4gICAgICBwYXJzZXJzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wcmFnbWEzID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1ncmFwaHFsL3ByYWdtYS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgZnVuY3Rpb24gaGFzUHJhZ21hKHRleHQpIHtcbiAgICAgIHJldHVybiAvXlxccyojW15cXFNcXG5dKkAoPzpmb3JtYXR8cHJldHRpZXIpXFxzKig/OlxcbnwkKS8udGVzdCh0ZXh0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zZXJ0UHJhZ21hKHRleHQpIHtcbiAgICAgIHJldHVybiBcIiMgQGZvcm1hdFxcblxcblwiICsgdGV4dDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgaGFzUHJhZ21hLFxuICAgICAgaW5zZXJ0UHJhZ21hXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sb2M0ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1ncmFwaHFsL2xvYy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgZnVuY3Rpb24gbG9jU3RhcnQobm9kZSkge1xuICAgICAgaWYgKHR5cGVvZiBub2RlLnN0YXJ0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBub2RlLnN0YXJ0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGUubG9jICYmIG5vZGUubG9jLnN0YXJ0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBsb2NFbmQobm9kZSkge1xuICAgICAgaWYgKHR5cGVvZiBub2RlLmVuZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gbm9kZS5lbmQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZS5sb2MgJiYgbm9kZS5sb2MuZW5kO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJpbnRlcl9ncmFwaHFsID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1ncmFwaHFsL3ByaW50ZXItZ3JhcGhxbC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGpvaW4sXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgaWZCcmVha1xuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGlzTmV4dExpbmVFbXB0eSxcbiAgICAgIGlzTm9uRW1wdHlBcnJheVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgaW5zZXJ0UHJhZ21hXG4gICAgfSA9IHJlcXVpcmVfcHJhZ21hMygpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYzQoKTtcbiAgICBmdW5jdGlvbiBnZW5lcmljUHJpbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgICBjYXNlIFwiRG9jdW1lbnRcIjoge1xuICAgICAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICAgICAgcGF0aC5lYWNoKChwYXRoQ2hpbGQsIGluZGV4LCBkZWZpbml0aW9ucykgPT4ge1xuICAgICAgICAgICAgcGFydHMucHVzaChwcmludCgpKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gZGVmaW5pdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgICAgICAgaWYgKGlzTmV4dExpbmVFbXB0eShvcHRpb25zLm9yaWdpbmFsVGV4dCwgcGF0aENoaWxkLmdldFZhbHVlKCksIGxvY0VuZCkpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIFwiZGVmaW5pdGlvbnNcIik7XG4gICAgICAgICAgcmV0dXJuIFsuLi5wYXJ0cywgaGFyZGxpbmVdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJPcGVyYXRpb25EZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICBjb25zdCBoYXNPcGVyYXRpb24gPSBvcHRpb25zLm9yaWdpbmFsVGV4dFtsb2NTdGFydChub2RlKV0gIT09IFwie1wiO1xuICAgICAgICAgIGNvbnN0IGhhc05hbWUgPSBCb29sZWFuKG5vZGUubmFtZSk7XG4gICAgICAgICAgcmV0dXJuIFtoYXNPcGVyYXRpb24gPyBub2RlLm9wZXJhdGlvbiA6IFwiXCIsIGhhc09wZXJhdGlvbiAmJiBoYXNOYW1lID8gW1wiIFwiLCBwcmludChcIm5hbWVcIildIDogXCJcIiwgaGFzT3BlcmF0aW9uICYmICFoYXNOYW1lICYmIGlzTm9uRW1wdHlBcnJheShub2RlLnZhcmlhYmxlRGVmaW5pdGlvbnMpID8gXCIgXCIgOiBcIlwiLCBpc05vbkVtcHR5QXJyYXkobm9kZS52YXJpYWJsZURlZmluaXRpb25zKSA/IGdyb3VwKFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgam9pbihbaWZCcmVhayhcIlwiLCBcIiwgXCIpLCBzb2Z0bGluZV0sIHBhdGgubWFwKHByaW50LCBcInZhcmlhYmxlRGVmaW5pdGlvbnNcIikpXSksIHNvZnRsaW5lLCBcIilcIl0pIDogXCJcIiwgcHJpbnREaXJlY3RpdmVzKHBhdGgsIHByaW50LCBub2RlKSwgbm9kZS5zZWxlY3Rpb25TZXQgPyAhaGFzT3BlcmF0aW9uICYmICFoYXNOYW1lID8gXCJcIiA6IFwiIFwiIDogXCJcIiwgcHJpbnQoXCJzZWxlY3Rpb25TZXRcIildO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJGcmFnbWVudERlZmluaXRpb25cIjoge1xuICAgICAgICAgIHJldHVybiBbXCJmcmFnbWVudCBcIiwgcHJpbnQoXCJuYW1lXCIpLCBpc05vbkVtcHR5QXJyYXkobm9kZS52YXJpYWJsZURlZmluaXRpb25zKSA/IGdyb3VwKFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgam9pbihbaWZCcmVhayhcIlwiLCBcIiwgXCIpLCBzb2Z0bGluZV0sIHBhdGgubWFwKHByaW50LCBcInZhcmlhYmxlRGVmaW5pdGlvbnNcIikpXSksIHNvZnRsaW5lLCBcIilcIl0pIDogXCJcIiwgXCIgb24gXCIsIHByaW50KFwidHlwZUNvbmRpdGlvblwiKSwgcHJpbnREaXJlY3RpdmVzKHBhdGgsIHByaW50LCBub2RlKSwgXCIgXCIsIHByaW50KFwic2VsZWN0aW9uU2V0XCIpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiU2VsZWN0aW9uU2V0XCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wie1wiLCBpbmRlbnQoW2hhcmRsaW5lLCBqb2luKGhhcmRsaW5lLCBwcmludFNlcXVlbmNlKHBhdGgsIG9wdGlvbnMsIHByaW50LCBcInNlbGVjdGlvbnNcIikpXSksIGhhcmRsaW5lLCBcIn1cIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkZpZWxkXCI6IHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW25vZGUuYWxpYXMgPyBbcHJpbnQoXCJhbGlhc1wiKSwgXCI6IFwiXSA6IFwiXCIsIHByaW50KFwibmFtZVwiKSwgbm9kZS5hcmd1bWVudHMubGVuZ3RoID4gMCA/IGdyb3VwKFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgam9pbihbaWZCcmVhayhcIlwiLCBcIiwgXCIpLCBzb2Z0bGluZV0sIHByaW50U2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQsIFwiYXJndW1lbnRzXCIpKV0pLCBzb2Z0bGluZSwgXCIpXCJdKSA6IFwiXCIsIHByaW50RGlyZWN0aXZlcyhwYXRoLCBwcmludCwgbm9kZSksIG5vZGUuc2VsZWN0aW9uU2V0ID8gXCIgXCIgOiBcIlwiLCBwcmludChcInNlbGVjdGlvblNldFwiKV0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJOYW1lXCI6IHtcbiAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiU3RyaW5nVmFsdWVcIjoge1xuICAgICAgICAgIGlmIChub2RlLmJsb2NrKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IG5vZGUudmFsdWUucmVwbGFjZSgvXCJcIlwiL2csIFwiXFxcXCQmXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICBsaW5lc1swXSA9IGxpbmVzWzBdLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW5lcy5ldmVyeSgobGluZTIpID0+IGxpbmUyID09PSBcIlwiKSkge1xuICAgICAgICAgICAgICBsaW5lcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGpvaW4oaGFyZGxpbmUsIFsnXCJcIlwiJywgLi4ubGluZXMsICdcIlwiXCInXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBbJ1wiJywgbm9kZS52YWx1ZS5yZXBsYWNlKC9bXCJcXFxcXS9nLCBcIlxcXFwkJlwiKS5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKSwgJ1wiJ107XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkludFZhbHVlXCI6XG4gICAgICAgIGNhc2UgXCJGbG9hdFZhbHVlXCI6XG4gICAgICAgIGNhc2UgXCJFbnVtVmFsdWVcIjoge1xuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJCb29sZWFuVmFsdWVcIjoge1xuICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIk51bGxWYWx1ZVwiOiB7XG4gICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJWYXJpYWJsZVwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtcIiRcIiwgcHJpbnQoXCJuYW1lXCIpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiTGlzdFZhbHVlXCI6IHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW1wiW1wiLCBpbmRlbnQoW3NvZnRsaW5lLCBqb2luKFtpZkJyZWFrKFwiXCIsIFwiLCBcIiksIHNvZnRsaW5lXSwgcGF0aC5tYXAocHJpbnQsIFwidmFsdWVzXCIpKV0pLCBzb2Z0bGluZSwgXCJdXCJdKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiT2JqZWN0VmFsdWVcIjoge1xuICAgICAgICAgIHJldHVybiBncm91cChbXCJ7XCIsIG9wdGlvbnMuYnJhY2tldFNwYWNpbmcgJiYgbm9kZS5maWVsZHMubGVuZ3RoID4gMCA/IFwiIFwiIDogXCJcIiwgaW5kZW50KFtzb2Z0bGluZSwgam9pbihbaWZCcmVhayhcIlwiLCBcIiwgXCIpLCBzb2Z0bGluZV0sIHBhdGgubWFwKHByaW50LCBcImZpZWxkc1wiKSldKSwgc29mdGxpbmUsIGlmQnJlYWsoXCJcIiwgb3B0aW9ucy5icmFja2V0U3BhY2luZyAmJiBub2RlLmZpZWxkcy5sZW5ndGggPiAwID8gXCIgXCIgOiBcIlwiKSwgXCJ9XCJdKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiT2JqZWN0RmllbGRcIjpcbiAgICAgICAgY2FzZSBcIkFyZ3VtZW50XCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwibmFtZVwiKSwgXCI6IFwiLCBwcmludChcInZhbHVlXCIpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRGlyZWN0aXZlXCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wiQFwiLCBwcmludChcIm5hbWVcIiksIG5vZGUuYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBncm91cChbXCIoXCIsIGluZGVudChbc29mdGxpbmUsIGpvaW4oW2lmQnJlYWsoXCJcIiwgXCIsIFwiKSwgc29mdGxpbmVdLCBwcmludFNlcXVlbmNlKHBhdGgsIG9wdGlvbnMsIHByaW50LCBcImFyZ3VtZW50c1wiKSldKSwgc29mdGxpbmUsIFwiKVwiXSkgOiBcIlwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiTmFtZWRUeXBlXCI6IHtcbiAgICAgICAgICByZXR1cm4gcHJpbnQoXCJuYW1lXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJWYXJpYWJsZURlZmluaXRpb25cIjoge1xuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJ2YXJpYWJsZVwiKSwgXCI6IFwiLCBwcmludChcInR5cGVcIiksIG5vZGUuZGVmYXVsdFZhbHVlID8gW1wiID0gXCIsIHByaW50KFwiZGVmYXVsdFZhbHVlXCIpXSA6IFwiXCIsIHByaW50RGlyZWN0aXZlcyhwYXRoLCBwcmludCwgbm9kZSldO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJPYmplY3RUeXBlRXh0ZW5zaW9uXCI6XG4gICAgICAgIGNhc2UgXCJPYmplY3RUeXBlRGVmaW5pdGlvblwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcImRlc2NyaXB0aW9uXCIpLCBub2RlLmRlc2NyaXB0aW9uID8gaGFyZGxpbmUgOiBcIlwiLCBub2RlLmtpbmQgPT09IFwiT2JqZWN0VHlwZUV4dGVuc2lvblwiID8gXCJleHRlbmQgXCIgOiBcIlwiLCBcInR5cGUgXCIsIHByaW50KFwibmFtZVwiKSwgbm9kZS5pbnRlcmZhY2VzLmxlbmd0aCA+IDAgPyBbXCIgaW1wbGVtZW50cyBcIiwgLi4ucHJpbnRJbnRlcmZhY2VzKHBhdGgsIG9wdGlvbnMsIHByaW50KV0gOiBcIlwiLCBwcmludERpcmVjdGl2ZXMocGF0aCwgcHJpbnQsIG5vZGUpLCBub2RlLmZpZWxkcy5sZW5ndGggPiAwID8gW1wiIHtcIiwgaW5kZW50KFtoYXJkbGluZSwgam9pbihoYXJkbGluZSwgcHJpbnRTZXF1ZW5jZShwYXRoLCBvcHRpb25zLCBwcmludCwgXCJmaWVsZHNcIikpXSksIGhhcmRsaW5lLCBcIn1cIl0gOiBcIlwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRmllbGREZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZGVzY3JpcHRpb25cIiksIG5vZGUuZGVzY3JpcHRpb24gPyBoYXJkbGluZSA6IFwiXCIsIHByaW50KFwibmFtZVwiKSwgbm9kZS5hcmd1bWVudHMubGVuZ3RoID4gMCA/IGdyb3VwKFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgam9pbihbaWZCcmVhayhcIlwiLCBcIiwgXCIpLCBzb2Z0bGluZV0sIHByaW50U2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQsIFwiYXJndW1lbnRzXCIpKV0pLCBzb2Z0bGluZSwgXCIpXCJdKSA6IFwiXCIsIFwiOiBcIiwgcHJpbnQoXCJ0eXBlXCIpLCBwcmludERpcmVjdGl2ZXMocGF0aCwgcHJpbnQsIG5vZGUpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiRGlyZWN0aXZlRGVmaW5pdGlvblwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtwcmludChcImRlc2NyaXB0aW9uXCIpLCBub2RlLmRlc2NyaXB0aW9uID8gaGFyZGxpbmUgOiBcIlwiLCBcImRpcmVjdGl2ZSBcIiwgXCJAXCIsIHByaW50KFwibmFtZVwiKSwgbm9kZS5hcmd1bWVudHMubGVuZ3RoID4gMCA/IGdyb3VwKFtcIihcIiwgaW5kZW50KFtzb2Z0bGluZSwgam9pbihbaWZCcmVhayhcIlwiLCBcIiwgXCIpLCBzb2Z0bGluZV0sIHByaW50U2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQsIFwiYXJndW1lbnRzXCIpKV0pLCBzb2Z0bGluZSwgXCIpXCJdKSA6IFwiXCIsIG5vZGUucmVwZWF0YWJsZSA/IFwiIHJlcGVhdGFibGVcIiA6IFwiXCIsIFwiIG9uIFwiLCBqb2luKFwiIHwgXCIsIHBhdGgubWFwKHByaW50LCBcImxvY2F0aW9uc1wiKSldO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJFbnVtVHlwZUV4dGVuc2lvblwiOlxuICAgICAgICBjYXNlIFwiRW51bVR5cGVEZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZGVzY3JpcHRpb25cIiksIG5vZGUuZGVzY3JpcHRpb24gPyBoYXJkbGluZSA6IFwiXCIsIG5vZGUua2luZCA9PT0gXCJFbnVtVHlwZUV4dGVuc2lvblwiID8gXCJleHRlbmQgXCIgOiBcIlwiLCBcImVudW0gXCIsIHByaW50KFwibmFtZVwiKSwgcHJpbnREaXJlY3RpdmVzKHBhdGgsIHByaW50LCBub2RlKSwgbm9kZS52YWx1ZXMubGVuZ3RoID4gMCA/IFtcIiB7XCIsIGluZGVudChbaGFyZGxpbmUsIGpvaW4oaGFyZGxpbmUsIHByaW50U2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQsIFwidmFsdWVzXCIpKV0pLCBoYXJkbGluZSwgXCJ9XCJdIDogXCJcIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkVudW1WYWx1ZURlZmluaXRpb25cIjoge1xuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJkZXNjcmlwdGlvblwiKSwgbm9kZS5kZXNjcmlwdGlvbiA/IGhhcmRsaW5lIDogXCJcIiwgcHJpbnQoXCJuYW1lXCIpLCBwcmludERpcmVjdGl2ZXMocGF0aCwgcHJpbnQsIG5vZGUpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiSW5wdXRWYWx1ZURlZmluaXRpb25cIjoge1xuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJkZXNjcmlwdGlvblwiKSwgbm9kZS5kZXNjcmlwdGlvbiA/IG5vZGUuZGVzY3JpcHRpb24uYmxvY2sgPyBoYXJkbGluZSA6IGxpbmUgOiBcIlwiLCBwcmludChcIm5hbWVcIiksIFwiOiBcIiwgcHJpbnQoXCJ0eXBlXCIpLCBub2RlLmRlZmF1bHRWYWx1ZSA/IFtcIiA9IFwiLCBwcmludChcImRlZmF1bHRWYWx1ZVwiKV0gOiBcIlwiLCBwcmludERpcmVjdGl2ZXMocGF0aCwgcHJpbnQsIG5vZGUpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uXCI6XG4gICAgICAgIGNhc2UgXCJJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZGVzY3JpcHRpb25cIiksIG5vZGUuZGVzY3JpcHRpb24gPyBoYXJkbGluZSA6IFwiXCIsIG5vZGUua2luZCA9PT0gXCJJbnB1dE9iamVjdFR5cGVFeHRlbnNpb25cIiA/IFwiZXh0ZW5kIFwiIDogXCJcIiwgXCJpbnB1dCBcIiwgcHJpbnQoXCJuYW1lXCIpLCBwcmludERpcmVjdGl2ZXMocGF0aCwgcHJpbnQsIG5vZGUpLCBub2RlLmZpZWxkcy5sZW5ndGggPiAwID8gW1wiIHtcIiwgaW5kZW50KFtoYXJkbGluZSwgam9pbihoYXJkbGluZSwgcHJpbnRTZXF1ZW5jZShwYXRoLCBvcHRpb25zLCBwcmludCwgXCJmaWVsZHNcIikpXSksIGhhcmRsaW5lLCBcIn1cIl0gOiBcIlwiXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiU2NoZW1hRXh0ZW5zaW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wiZXh0ZW5kIHNjaGVtYVwiLCBwcmludERpcmVjdGl2ZXMocGF0aCwgcHJpbnQsIG5vZGUpLCAuLi5ub2RlLm9wZXJhdGlvblR5cGVzLmxlbmd0aCA+IDAgPyBbXCIge1wiLCBpbmRlbnQoW2hhcmRsaW5lLCBqb2luKGhhcmRsaW5lLCBwcmludFNlcXVlbmNlKHBhdGgsIG9wdGlvbnMsIHByaW50LCBcIm9wZXJhdGlvblR5cGVzXCIpKV0pLCBoYXJkbGluZSwgXCJ9XCJdIDogW11dO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJTY2hlbWFEZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZGVzY3JpcHRpb25cIiksIG5vZGUuZGVzY3JpcHRpb24gPyBoYXJkbGluZSA6IFwiXCIsIFwic2NoZW1hXCIsIHByaW50RGlyZWN0aXZlcyhwYXRoLCBwcmludCwgbm9kZSksIFwiIHtcIiwgbm9kZS5vcGVyYXRpb25UeXBlcy5sZW5ndGggPiAwID8gaW5kZW50KFtoYXJkbGluZSwgam9pbihoYXJkbGluZSwgcHJpbnRTZXF1ZW5jZShwYXRoLCBvcHRpb25zLCBwcmludCwgXCJvcGVyYXRpb25UeXBlc1wiKSldKSA6IFwiXCIsIGhhcmRsaW5lLCBcIn1cIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIk9wZXJhdGlvblR5cGVEZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwib3BlcmF0aW9uXCIpLCBcIjogXCIsIHByaW50KFwidHlwZVwiKV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkludGVyZmFjZVR5cGVFeHRlbnNpb25cIjpcbiAgICAgICAgY2FzZSBcIkludGVyZmFjZVR5cGVEZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwiZGVzY3JpcHRpb25cIiksIG5vZGUuZGVzY3JpcHRpb24gPyBoYXJkbGluZSA6IFwiXCIsIG5vZGUua2luZCA9PT0gXCJJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uXCIgPyBcImV4dGVuZCBcIiA6IFwiXCIsIFwiaW50ZXJmYWNlIFwiLCBwcmludChcIm5hbWVcIiksIG5vZGUuaW50ZXJmYWNlcy5sZW5ndGggPiAwID8gW1wiIGltcGxlbWVudHMgXCIsIC4uLnByaW50SW50ZXJmYWNlcyhwYXRoLCBvcHRpb25zLCBwcmludCldIDogXCJcIiwgcHJpbnREaXJlY3RpdmVzKHBhdGgsIHByaW50LCBub2RlKSwgbm9kZS5maWVsZHMubGVuZ3RoID4gMCA/IFtcIiB7XCIsIGluZGVudChbaGFyZGxpbmUsIGpvaW4oaGFyZGxpbmUsIHByaW50U2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQsIFwiZmllbGRzXCIpKV0pLCBoYXJkbGluZSwgXCJ9XCJdIDogXCJcIl07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIkZyYWdtZW50U3ByZWFkXCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wiLi4uXCIsIHByaW50KFwibmFtZVwiKSwgcHJpbnREaXJlY3RpdmVzKHBhdGgsIHByaW50LCBub2RlKV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIklubGluZUZyYWdtZW50XCI6IHtcbiAgICAgICAgICByZXR1cm4gW1wiLi4uXCIsIG5vZGUudHlwZUNvbmRpdGlvbiA/IFtcIiBvbiBcIiwgcHJpbnQoXCJ0eXBlQ29uZGl0aW9uXCIpXSA6IFwiXCIsIHByaW50RGlyZWN0aXZlcyhwYXRoLCBwcmludCwgbm9kZSksIFwiIFwiLCBwcmludChcInNlbGVjdGlvblNldFwiKV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIlVuaW9uVHlwZUV4dGVuc2lvblwiOlxuICAgICAgICBjYXNlIFwiVW5pb25UeXBlRGVmaW5pdGlvblwiOiB7XG4gICAgICAgICAgcmV0dXJuIGdyb3VwKFtwcmludChcImRlc2NyaXB0aW9uXCIpLCBub2RlLmRlc2NyaXB0aW9uID8gaGFyZGxpbmUgOiBcIlwiLCBncm91cChbbm9kZS5raW5kID09PSBcIlVuaW9uVHlwZUV4dGVuc2lvblwiID8gXCJleHRlbmQgXCIgOiBcIlwiLCBcInVuaW9uIFwiLCBwcmludChcIm5hbWVcIiksIHByaW50RGlyZWN0aXZlcyhwYXRoLCBwcmludCwgbm9kZSksIG5vZGUudHlwZXMubGVuZ3RoID4gMCA/IFtcIiA9XCIsIGlmQnJlYWsoXCJcIiwgXCIgXCIpLCBpbmRlbnQoW2lmQnJlYWsoW2xpbmUsIFwiICBcIl0pLCBqb2luKFtsaW5lLCBcInwgXCJdLCBwYXRoLm1hcChwcmludCwgXCJ0eXBlc1wiKSldKV0gOiBcIlwiXSldKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiU2NhbGFyVHlwZUV4dGVuc2lvblwiOlxuICAgICAgICBjYXNlIFwiU2NhbGFyVHlwZURlZmluaXRpb25cIjoge1xuICAgICAgICAgIHJldHVybiBbcHJpbnQoXCJkZXNjcmlwdGlvblwiKSwgbm9kZS5kZXNjcmlwdGlvbiA/IGhhcmRsaW5lIDogXCJcIiwgbm9kZS5raW5kID09PSBcIlNjYWxhclR5cGVFeHRlbnNpb25cIiA/IFwiZXh0ZW5kIFwiIDogXCJcIiwgXCJzY2FsYXIgXCIsIHByaW50KFwibmFtZVwiKSwgcHJpbnREaXJlY3RpdmVzKHBhdGgsIHByaW50LCBub2RlKV07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIk5vbk51bGxUeXBlXCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50KFwidHlwZVwiKSwgXCIhXCJdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJMaXN0VHlwZVwiOiB7XG4gICAgICAgICAgcmV0dXJuIFtcIltcIiwgcHJpbnQoXCJ0eXBlXCIpLCBcIl1cIl07XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGdyYXBocWwgdHlwZTogXCIgKyBKU09OLnN0cmluZ2lmeShub2RlLmtpbmQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnREaXJlY3RpdmVzKHBhdGgsIHByaW50LCBub2RlKSB7XG4gICAgICBpZiAobm9kZS5kaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByaW50ZWQgPSBqb2luKGxpbmUsIHBhdGgubWFwKHByaW50LCBcImRpcmVjdGl2ZXNcIikpO1xuICAgICAgaWYgKG5vZGUua2luZCA9PT0gXCJGcmFnbWVudERlZmluaXRpb25cIiB8fCBub2RlLmtpbmQgPT09IFwiT3BlcmF0aW9uRGVmaW5pdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBncm91cChbbGluZSwgcHJpbnRlZF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtcIiBcIiwgZ3JvdXAoaW5kZW50KFtzb2Z0bGluZSwgcHJpbnRlZF0pKV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50U2VxdWVuY2UocGF0aCwgb3B0aW9ucywgcHJpbnQsIHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gcGF0aC5tYXAoKHBhdGgyLCBpbmRleCwgc2VxdWVuY2UpID0+IHtcbiAgICAgICAgY29uc3QgcHJpbnRlZCA9IHByaW50KCk7XG4gICAgICAgIGlmIChpbmRleCA8IHNlcXVlbmNlLmxlbmd0aCAtIDEgJiYgaXNOZXh0TGluZUVtcHR5KG9wdGlvbnMub3JpZ2luYWxUZXh0LCBwYXRoMi5nZXRWYWx1ZSgpLCBsb2NFbmQpKSB7XG4gICAgICAgICAgcmV0dXJuIFtwcmludGVkLCBoYXJkbGluZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICB9LCBwcm9wZXJ0eSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNhbkF0dGFjaENvbW1lbnQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUua2luZCAmJiBub2RlLmtpbmQgIT09IFwiQ29tbWVudFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENvbW1lbnQoY29tbWVudFBhdGgpIHtcbiAgICAgIGNvbnN0IGNvbW1lbnQgPSBjb21tZW50UGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKGNvbW1lbnQua2luZCA9PT0gXCJDb21tZW50XCIpIHtcbiAgICAgICAgcmV0dXJuIFwiI1wiICsgY29tbWVudC52YWx1ZS50cmltRW5kKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgYSBjb21tZW50OiBcIiArIEpTT04uc3RyaW5naWZ5KGNvbW1lbnQpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRJbnRlcmZhY2VzKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXROb2RlKCk7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgY29uc3Qge1xuICAgICAgICBpbnRlcmZhY2VzXG4gICAgICB9ID0gbm9kZTtcbiAgICAgIGNvbnN0IHByaW50ZWQgPSBwYXRoLm1hcCgobm9kZTIpID0+IHByaW50KG5vZGUyKSwgXCJpbnRlcmZhY2VzXCIpO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGludGVyZmFjZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGludGVyZmFjZU5vZGUgPSBpbnRlcmZhY2VzW2luZGV4XTtcbiAgICAgICAgcGFydHMucHVzaChwcmludGVkW2luZGV4XSk7XG4gICAgICAgIGNvbnN0IG5leHRJbnRlcmZhY2VOb2RlID0gaW50ZXJmYWNlc1tpbmRleCArIDFdO1xuICAgICAgICBpZiAobmV4dEludGVyZmFjZU5vZGUpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0QmV0d2VlbiA9IG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGludGVyZmFjZU5vZGUubG9jLmVuZCwgbmV4dEludGVyZmFjZU5vZGUubG9jLnN0YXJ0KTtcbiAgICAgICAgICBjb25zdCBoYXNDb21tZW50ID0gdGV4dEJldHdlZW4uaW5jbHVkZXMoXCIjXCIpO1xuICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRleHRCZXR3ZWVuLnJlcGxhY2UoLyMuKi9nLCBcIlwiKS50cmltKCk7XG4gICAgICAgICAgcGFydHMucHVzaChzZXBhcmF0b3IgPT09IFwiLFwiID8gXCIsXCIgOiBcIiAmXCIsIGhhc0NvbW1lbnQgPyBsaW5lIDogXCIgXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNsZWFuKG5vZGUsIG5ld05vZGUpIHtcbiAgICAgIGlmIChub2RlLmtpbmQgPT09IFwiU3RyaW5nVmFsdWVcIiAmJiBub2RlLmJsb2NrICYmICFub2RlLnZhbHVlLmluY2x1ZGVzKFwiXFxuXCIpKSB7XG4gICAgICAgIG5ld05vZGUudmFsdWUgPSBuZXdOb2RlLnZhbHVlLnRyaW0oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2xlYW4uaWdub3JlZFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJsb2NcIiwgXCJjb21tZW50c1wiXSk7XG4gICAgZnVuY3Rpb24gaGFzUHJldHRpZXJJZ25vcmUocGF0aCkge1xuICAgICAgdmFyIF9ub2RlJGNvbW1lbnRzO1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIHJldHVybiBub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfbm9kZSRjb21tZW50cyA9IG5vZGUuY29tbWVudHMpID09PSBudWxsIHx8IF9ub2RlJGNvbW1lbnRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbm9kZSRjb21tZW50cy5zb21lKChjb21tZW50KSA9PiBjb21tZW50LnZhbHVlLnRyaW0oKSA9PT0gXCJwcmV0dGllci1pZ25vcmVcIik7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50OiBnZW5lcmljUHJpbnQsXG4gICAgICBtYXNzYWdlQXN0Tm9kZTogY2xlYW4sXG4gICAgICBoYXNQcmV0dGllcklnbm9yZSxcbiAgICAgIGluc2VydFByYWdtYSxcbiAgICAgIHByaW50Q29tbWVudCxcbiAgICAgIGNhbkF0dGFjaENvbW1lbnRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX29wdGlvbnM0ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1ncmFwaHFsL29wdGlvbnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBjb21tb25PcHRpb25zID0gcmVxdWlyZV9jb21tb25fb3B0aW9ucygpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGJyYWNrZXRTcGFjaW5nOiBjb21tb25PcHRpb25zLmJyYWNrZXRTcGFjaW5nXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJzZXJzNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtZ3JhcGhxbC9wYXJzZXJzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBnZXQgZ3JhcGhxbCgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1ncmFwaHFsLmpzXCIpLnBhcnNlcnMuZ3JhcGhxbDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX0dyYXBoUUwgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL0dyYXBoUUwuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJHcmFwaFFMXCIsXG4gICAgICB0eXBlOiBcImRhdGFcIixcbiAgICAgIGNvbG9yOiBcIiNlMTAwOThcIixcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5ncmFwaHFsXCIsIFwiLmdxbFwiLCBcIi5ncmFwaHFsc1wiXSxcbiAgICAgIHRtU2NvcGU6IFwic291cmNlLmdyYXBocWxcIixcbiAgICAgIGFjZU1vZGU6IFwidGV4dFwiLFxuICAgICAgbGFuZ3VhZ2VJZDogMTM5XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sYW5ndWFnZV9ncmFwaHFsID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1ncmFwaHFsL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgY3JlYXRlTGFuZ3VhZ2UgPSByZXF1aXJlX2NyZWF0ZV9sYW5ndWFnZSgpO1xuICAgIHZhciBwcmludGVyID0gcmVxdWlyZV9wcmludGVyX2dyYXBocWwoKTtcbiAgICB2YXIgb3B0aW9ucyA9IHJlcXVpcmVfb3B0aW9uczQoKTtcbiAgICB2YXIgcGFyc2VycyA9IHJlcXVpcmVfcGFyc2VyczQoKTtcbiAgICB2YXIgbGFuZ3VhZ2VzID0gW2NyZWF0ZUxhbmd1YWdlKHJlcXVpcmVfR3JhcGhRTCgpLCAoKSA9PiAoe1xuICAgICAgc2luY2U6IFwiMS41LjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImdyYXBocWxcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wiZ3JhcGhxbFwiXVxuICAgIH0pKV07XG4gICAgdmFyIHByaW50ZXJzID0ge1xuICAgICAgZ3JhcGhxbDogcHJpbnRlclxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHByaW50ZXJzLFxuICAgICAgcGFyc2Vyc1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbG9jNSA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtbWFya2Rvd24vbG9jLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBsb2NTdGFydChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxvY0VuZChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0O1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29uc3RhbnRzX2V2YWx1YXRlID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1tYXJrZG93bi9jb25zdGFudHMuZXZhbHVhdGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGNqa1BhdHRlcm46IFwiKD86W1xcXFx1MDJlYS1cXFxcdTAyZWJcXFxcdTExMDAtXFxcXHUxMWZmXFxcXHUyZTgwLVxcXFx1MmU5OVxcXFx1MmU5Yi1cXFxcdTJlZjNcXFxcdTJmMDAtXFxcXHUyZmQ1XFxcXHUyZmYwLVxcXFx1MzAzZlxcXFx1MzA0MS1cXFxcdTMwOTZcXFxcdTMwOTktXFxcXHUzMDlmXFxcXHUzMGExLVxcXFx1MzBmYVxcXFx1MzBmYy1cXFxcdTMwZmZcXFxcdTMxMDUtXFxcXHUzMTJmXFxcXHUzMTMxLVxcXFx1MzE4ZVxcXFx1MzE5MC1cXFxcdTMxOTFcXFxcdTMxOTYtXFxcXHUzMWJhXFxcXHUzMWMwLVxcXFx1MzFlM1xcXFx1MzFmMC1cXFxcdTMyMWVcXFxcdTMyMmEtXFxcXHUzMjQ3XFxcXHUzMjYwLVxcXFx1MzI3ZVxcXFx1MzI4YS1cXFxcdTMyYjBcXFxcdTMyYzAtXFxcXHUzMmNiXFxcXHUzMmQwLVxcXFx1MzM3MFxcXFx1MzM3Yi1cXFxcdTMzN2ZcXFxcdTMzZTAtXFxcXHUzM2ZlXFxcXHUzNDAwLVxcXFx1NGRiNVxcXFx1NGUwMC1cXFxcdTlmZWZcXFxcdWE5NjAtXFxcXHVhOTdjXFxcXHVhYzAwLVxcXFx1ZDdhM1xcXFx1ZDdiMC1cXFxcdWQ3YzZcXFxcdWQ3Y2ItXFxcXHVkN2ZiXFxcXHVmOTAwLVxcXFx1ZmE2ZFxcXFx1ZmE3MC1cXFxcdWZhZDlcXFxcdWZlMTAtXFxcXHVmZTFmXFxcXHVmZTMwLVxcXFx1ZmU2ZlxcXFx1ZmYwMC1cXFxcdWZmZWZdfFtcXFxcdWQ4NDAtXFxcXHVkODY4XFxcXHVkODZhLVxcXFx1ZDg2Y1xcXFx1ZDg2Zi1cXFxcdWQ4NzJcXFxcdWQ4NzQtXFxcXHVkODc5XVtcXFxcdWRjMDAtXFxcXHVkZmZmXXxcXFxcdWQ4MmNbXFxcXHVkYzAwLVxcXFx1ZGQxZVxcXFx1ZGQ1MC1cXFxcdWRkNTJcXFxcdWRkNjQtXFxcXHVkZDY3XXxcXFxcdWQ4M2NbXFxcXHVkZTAwXFxcXHVkZTUwLVxcXFx1ZGU1MV18XFxcXHVkODY5W1xcXFx1ZGMwMC1cXFxcdWRlZDZcXFxcdWRmMDAtXFxcXHVkZmZmXXxcXFxcdWQ4NmRbXFxcXHVkYzAwLVxcXFx1ZGYzNFxcXFx1ZGY0MC1cXFxcdWRmZmZdfFxcXFx1ZDg2ZVtcXFxcdWRjMDAtXFxcXHVkYzFkXFxcXHVkYzIwLVxcXFx1ZGZmZl18XFxcXHVkODczW1xcXFx1ZGMwMC1cXFxcdWRlYTFcXFxcdWRlYjAtXFxcXHVkZmZmXXxcXFxcdWQ4N2FbXFxcXHVkYzAwLVxcXFx1ZGZlMF18XFxcXHVkODdlW1xcXFx1ZGMwMC1cXFxcdWRlMWRdKSg/OltcXFxcdWZlMDAtXFxcXHVmZTBmXXxcXFxcdWRiNDBbXFxcXHVkZDAwLVxcXFx1ZGRlZl0pP1wiLFxuICAgICAga1BhdHRlcm46IFwiW1xcXFx1MTEwMC1cXFxcdTExZmZcXFxcdTMwMDEtXFxcXHUzMDAzXFxcXHUzMDA4LVxcXFx1MzAxMVxcXFx1MzAxMy1cXFxcdTMwMWZcXFxcdTMwMmUtXFxcXHUzMDMwXFxcXHUzMDM3XFxcXHUzMGZiXFxcXHUzMTMxLVxcXFx1MzE4ZVxcXFx1MzIwMC1cXFxcdTMyMWVcXFxcdTMyNjAtXFxcXHUzMjdlXFxcXHVhOTYwLVxcXFx1YTk3Y1xcXFx1YWMwMC1cXFxcdWQ3YTNcXFxcdWQ3YjAtXFxcXHVkN2M2XFxcXHVkN2NiLVxcXFx1ZDdmYlxcXFx1ZmU0NS1cXFxcdWZlNDZcXFxcdWZmNjEtXFxcXHVmZjY1XFxcXHVmZmEwLVxcXFx1ZmZiZVxcXFx1ZmZjMi1cXFxcdWZmYzdcXFxcdWZmY2EtXFxcXHVmZmNmXFxcXHVmZmQyLVxcXFx1ZmZkN1xcXFx1ZmZkYS1cXFxcdWZmZGNdXCIsXG4gICAgICBwdW5jdHVhdGlvblBhdHRlcm46IFwiW1xcXFx1MDAyMS1cXFxcdTAwMmZcXFxcdTAwM2EtXFxcXHUwMDQwXFxcXHUwMDViLVxcXFx1MDA2MFxcXFx1MDA3Yi1cXFxcdTAwN2VcXFxcdTAwYTFcXFxcdTAwYTdcXFxcdTAwYWJcXFxcdTAwYjYtXFxcXHUwMGI3XFxcXHUwMGJiXFxcXHUwMGJmXFxcXHUwMzdlXFxcXHUwMzg3XFxcXHUwNTVhLVxcXFx1MDU1ZlxcXFx1MDU4OS1cXFxcdTA1OGFcXFxcdTA1YmVcXFxcdTA1YzBcXFxcdTA1YzNcXFxcdTA1YzZcXFxcdTA1ZjMtXFxcXHUwNWY0XFxcXHUwNjA5LVxcXFx1MDYwYVxcXFx1MDYwYy1cXFxcdTA2MGRcXFxcdTA2MWJcXFxcdTA2MWUtXFxcXHUwNjFmXFxcXHUwNjZhLVxcXFx1MDY2ZFxcXFx1MDZkNFxcXFx1MDcwMC1cXFxcdTA3MGRcXFxcdTA3ZjctXFxcXHUwN2Y5XFxcXHUwODMwLVxcXFx1MDgzZVxcXFx1MDg1ZVxcXFx1MDk2NC1cXFxcdTA5NjVcXFxcdTA5NzBcXFxcdTA5ZmRcXFxcdTBhNzZcXFxcdTBhZjBcXFxcdTBjNzdcXFxcdTBjODRcXFxcdTBkZjRcXFxcdTBlNGZcXFxcdTBlNWEtXFxcXHUwZTViXFxcXHUwZjA0LVxcXFx1MGYxMlxcXFx1MGYxNFxcXFx1MGYzYS1cXFxcdTBmM2RcXFxcdTBmODVcXFxcdTBmZDAtXFxcXHUwZmQ0XFxcXHUwZmQ5LVxcXFx1MGZkYVxcXFx1MTA0YS1cXFxcdTEwNGZcXFxcdTEwZmJcXFxcdTEzNjAtXFxcXHUxMzY4XFxcXHUxNDAwXFxcXHUxNjZlXFxcXHUxNjliLVxcXFx1MTY5Y1xcXFx1MTZlYi1cXFxcdTE2ZWRcXFxcdTE3MzUtXFxcXHUxNzM2XFxcXHUxN2Q0LVxcXFx1MTdkNlxcXFx1MTdkOC1cXFxcdTE3ZGFcXFxcdTE4MDAtXFxcXHUxODBhXFxcXHUxOTQ0LVxcXFx1MTk0NVxcXFx1MWExZS1cXFxcdTFhMWZcXFxcdTFhYTAtXFxcXHUxYWE2XFxcXHUxYWE4LVxcXFx1MWFhZFxcXFx1MWI1YS1cXFxcdTFiNjBcXFxcdTFiZmMtXFxcXHUxYmZmXFxcXHUxYzNiLVxcXFx1MWMzZlxcXFx1MWM3ZS1cXFxcdTFjN2ZcXFxcdTFjYzAtXFxcXHUxY2M3XFxcXHUxY2QzXFxcXHUyMDEwLVxcXFx1MjAyN1xcXFx1MjAzMC1cXFxcdTIwNDNcXFxcdTIwNDUtXFxcXHUyMDUxXFxcXHUyMDUzLVxcXFx1MjA1ZVxcXFx1MjA3ZC1cXFxcdTIwN2VcXFxcdTIwOGQtXFxcXHUyMDhlXFxcXHUyMzA4LVxcXFx1MjMwYlxcXFx1MjMyOS1cXFxcdTIzMmFcXFxcdTI3NjgtXFxcXHUyNzc1XFxcXHUyN2M1LVxcXFx1MjdjNlxcXFx1MjdlNi1cXFxcdTI3ZWZcXFxcdTI5ODMtXFxcXHUyOTk4XFxcXHUyOWQ4LVxcXFx1MjlkYlxcXFx1MjlmYy1cXFxcdTI5ZmRcXFxcdTJjZjktXFxcXHUyY2ZjXFxcXHUyY2ZlLVxcXFx1MmNmZlxcXFx1MmQ3MFxcXFx1MmUwMC1cXFxcdTJlMmVcXFxcdTJlMzAtXFxcXHUyZTRmXFxcXHUzMDAxLVxcXFx1MzAwM1xcXFx1MzAwOC1cXFxcdTMwMTFcXFxcdTMwMTQtXFxcXHUzMDFmXFxcXHUzMDMwXFxcXHUzMDNkXFxcXHUzMGEwXFxcXHUzMGZiXFxcXHVhNGZlLVxcXFx1YTRmZlxcXFx1YTYwZC1cXFxcdWE2MGZcXFxcdWE2NzNcXFxcdWE2N2VcXFxcdWE2ZjItXFxcXHVhNmY3XFxcXHVhODc0LVxcXFx1YTg3N1xcXFx1YThjZS1cXFxcdWE4Y2ZcXFxcdWE4ZjgtXFxcXHVhOGZhXFxcXHVhOGZjXFxcXHVhOTJlLVxcXFx1YTkyZlxcXFx1YTk1ZlxcXFx1YTljMS1cXFxcdWE5Y2RcXFxcdWE5ZGUtXFxcXHVhOWRmXFxcXHVhYTVjLVxcXFx1YWE1ZlxcXFx1YWFkZS1cXFxcdWFhZGZcXFxcdWFhZjAtXFxcXHVhYWYxXFxcXHVhYmViXFxcXHVmZDNlLVxcXFx1ZmQzZlxcXFx1ZmUxMC1cXFxcdWZlMTlcXFxcdWZlMzAtXFxcXHVmZTUyXFxcXHVmZTU0LVxcXFx1ZmU2MVxcXFx1ZmU2M1xcXFx1ZmU2OFxcXFx1ZmU2YS1cXFxcdWZlNmJcXFxcdWZmMDEtXFxcXHVmZjAzXFxcXHVmZjA1LVxcXFx1ZmYwYVxcXFx1ZmYwYy1cXFxcdWZmMGZcXFxcdWZmMWEtXFxcXHVmZjFiXFxcXHVmZjFmLVxcXFx1ZmYyMFxcXFx1ZmYzYi1cXFxcdWZmM2RcXFxcdWZmM2ZcXFxcdWZmNWJcXFxcdWZmNWRcXFxcdWZmNWYtXFxcXHVmZjY1XXxcXFxcdWQ4MDBbXFxcXHVkZDAwLVxcXFx1ZGQwMlxcXFx1ZGY5ZlxcXFx1ZGZkMF18XFxcXHVkODAxW1xcXFx1ZGQ2Zl18XFxcXHVkODAyW1xcXFx1ZGM1N1xcXFx1ZGQxZlxcXFx1ZGQzZlxcXFx1ZGU1MC1cXFxcdWRlNThcXFxcdWRlN2ZcXFxcdWRlZjAtXFxcXHVkZWY2XFxcXHVkZjM5LVxcXFx1ZGYzZlxcXFx1ZGY5OS1cXFxcdWRmOWNdfFxcXFx1ZDgwM1tcXFxcdWRmNTUtXFxcXHVkZjU5XXxcXFxcdWQ4MDRbXFxcXHVkYzQ3LVxcXFx1ZGM0ZFxcXFx1ZGNiYi1cXFxcdWRjYmNcXFxcdWRjYmUtXFxcXHVkY2MxXFxcXHVkZDQwLVxcXFx1ZGQ0M1xcXFx1ZGQ3NC1cXFxcdWRkNzVcXFxcdWRkYzUtXFxcXHVkZGM4XFxcXHVkZGNkXFxcXHVkZGRiXFxcXHVkZGRkLVxcXFx1ZGRkZlxcXFx1ZGUzOC1cXFxcdWRlM2RcXFxcdWRlYTldfFxcXFx1ZDgwNVtcXFxcdWRjNGItXFxcXHVkYzRmXFxcXHVkYzViXFxcXHVkYzVkXFxcXHVkY2M2XFxcXHVkZGMxLVxcXFx1ZGRkN1xcXFx1ZGU0MS1cXFxcdWRlNDNcXFxcdWRlNjAtXFxcXHVkZTZjXFxcXHVkZjNjLVxcXFx1ZGYzZV18XFxcXHVkODA2W1xcXFx1ZGMzYlxcXFx1ZGRlMlxcXFx1ZGUzZi1cXFxcdWRlNDZcXFxcdWRlOWEtXFxcXHVkZTljXFxcXHVkZTllLVxcXFx1ZGVhMl18XFxcXHVkODA3W1xcXFx1ZGM0MS1cXFxcdWRjNDVcXFxcdWRjNzAtXFxcXHVkYzcxXFxcXHVkZWY3LVxcXFx1ZGVmOFxcXFx1ZGZmZl18XFxcXHVkODA5W1xcXFx1ZGM3MC1cXFxcdWRjNzRdfFxcXFx1ZDgxYVtcXFxcdWRlNmUtXFxcXHVkZTZmXFxcXHVkZWY1XFxcXHVkZjM3LVxcXFx1ZGYzYlxcXFx1ZGY0NF18XFxcXHVkODFiW1xcXFx1ZGU5Ny1cXFxcdWRlOWFcXFxcdWRmZTJdfFxcXFx1ZDgyZltcXFxcdWRjOWZdfFxcXFx1ZDgzNltcXFxcdWRlODctXFxcXHVkZThiXXxcXFxcdWQ4M2FbXFxcXHVkZDVlLVxcXFx1ZGQ1Zl1cIlxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdXRpbHMxMCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtbWFya2Rvd24vdXRpbHMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBnZXRMYXN0XG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYzUoKTtcbiAgICB2YXIge1xuICAgICAgY2prUGF0dGVybixcbiAgICAgIGtQYXR0ZXJuLFxuICAgICAgcHVuY3R1YXRpb25QYXR0ZXJuXG4gICAgfSA9IHJlcXVpcmVfY29uc3RhbnRzX2V2YWx1YXRlKCk7XG4gICAgdmFyIElOTElORV9OT0RFX1RZUEVTID0gW1wibGlxdWlkTm9kZVwiLCBcImlubGluZUNvZGVcIiwgXCJlbXBoYXNpc1wiLCBcImVzQ29tbWVudFwiLCBcInN0cm9uZ1wiLCBcImRlbGV0ZVwiLCBcIndpa2lMaW5rXCIsIFwibGlua1wiLCBcImxpbmtSZWZlcmVuY2VcIiwgXCJpbWFnZVwiLCBcImltYWdlUmVmZXJlbmNlXCIsIFwiZm9vdG5vdGVcIiwgXCJmb290bm90ZVJlZmVyZW5jZVwiLCBcInNlbnRlbmNlXCIsIFwid2hpdGVzcGFjZVwiLCBcIndvcmRcIiwgXCJicmVha1wiLCBcImlubGluZU1hdGhcIl07XG4gICAgdmFyIElOTElORV9OT0RFX1dSQVBQRVJfVFlQRVMgPSBbLi4uSU5MSU5FX05PREVfVFlQRVMsIFwidGFibGVDZWxsXCIsIFwicGFyYWdyYXBoXCIsIFwiaGVhZGluZ1wiXTtcbiAgICB2YXIga1JlZ2V4ID0gbmV3IFJlZ0V4cChrUGF0dGVybik7XG4gICAgdmFyIHB1bmN0dWF0aW9uUmVnZXggPSBuZXcgUmVnRXhwKHB1bmN0dWF0aW9uUGF0dGVybik7XG4gICAgZnVuY3Rpb24gc3BsaXRUZXh0KHRleHQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IEtJTkRfTk9OX0NKSyA9IFwibm9uLWNqa1wiO1xuICAgICAgY29uc3QgS0lORF9DSl9MRVRURVIgPSBcImNqLWxldHRlclwiO1xuICAgICAgY29uc3QgS0lORF9LX0xFVFRFUiA9IFwiay1sZXR0ZXJcIjtcbiAgICAgIGNvbnN0IEtJTkRfQ0pLX1BVTkNUVUFUSU9OID0gXCJjamstcHVuY3R1YXRpb25cIjtcbiAgICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgICBjb25zdCB0b2tlbnMgPSAob3B0aW9ucy5wcm9zZVdyYXAgPT09IFwicHJlc2VydmVcIiA/IHRleHQgOiB0ZXh0LnJlcGxhY2UobmV3IFJlZ0V4cChgKCR7Y2prUGF0dGVybn0pXG4oJHtjamtQYXR0ZXJufSlgLCBcImdcIiksIFwiJDEkMlwiKSkuc3BsaXQoLyhbXFx0XFxuIF0rKS8pO1xuICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHRva2VuXSBvZiB0b2tlbnMuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChpbmRleCAlIDIgPT09IDEpIHtcbiAgICAgICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwid2hpdGVzcGFjZVwiLFxuICAgICAgICAgICAgdmFsdWU6IC9cXG4vLnRlc3QodG9rZW4pID8gXCJcXG5cIiA6IFwiIFwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChpbmRleCA9PT0gMCB8fCBpbmRleCA9PT0gdG9rZW5zLmxlbmd0aCAtIDEpICYmIHRva2VuID09PSBcIlwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5uZXJUb2tlbnMgPSB0b2tlbi5zcGxpdChuZXcgUmVnRXhwKGAoJHtjamtQYXR0ZXJufSlgKSk7XG4gICAgICAgIGZvciAoY29uc3QgW2lubmVySW5kZXgsIGlubmVyVG9rZW5dIG9mIGlubmVyVG9rZW5zLmVudHJpZXMoKSkge1xuICAgICAgICAgIGlmICgoaW5uZXJJbmRleCA9PT0gMCB8fCBpbm5lckluZGV4ID09PSBpbm5lclRva2Vucy5sZW5ndGggLSAxKSAmJiBpbm5lclRva2VuID09PSBcIlwiKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlubmVySW5kZXggJSAyID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoaW5uZXJUb2tlbiAhPT0gXCJcIikge1xuICAgICAgICAgICAgICBhcHBlbmROb2RlKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIndvcmRcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5uZXJUb2tlbixcbiAgICAgICAgICAgICAgICBraW5kOiBLSU5EX05PTl9DSkssXG4gICAgICAgICAgICAgICAgaGFzTGVhZGluZ1B1bmN0dWF0aW9uOiBwdW5jdHVhdGlvblJlZ2V4LnRlc3QoaW5uZXJUb2tlblswXSksXG4gICAgICAgICAgICAgICAgaGFzVHJhaWxpbmdQdW5jdHVhdGlvbjogcHVuY3R1YXRpb25SZWdleC50ZXN0KGdldExhc3QoaW5uZXJUb2tlbikpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFwcGVuZE5vZGUocHVuY3R1YXRpb25SZWdleC50ZXN0KGlubmVyVG9rZW4pID8ge1xuICAgICAgICAgICAgdHlwZTogXCJ3b3JkXCIsXG4gICAgICAgICAgICB2YWx1ZTogaW5uZXJUb2tlbixcbiAgICAgICAgICAgIGtpbmQ6IEtJTkRfQ0pLX1BVTkNUVUFUSU9OLFxuICAgICAgICAgICAgaGFzTGVhZGluZ1B1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaGFzVHJhaWxpbmdQdW5jdHVhdGlvbjogdHJ1ZVxuICAgICAgICAgIH0gOiB7XG4gICAgICAgICAgICB0eXBlOiBcIndvcmRcIixcbiAgICAgICAgICAgIHZhbHVlOiBpbm5lclRva2VuLFxuICAgICAgICAgICAga2luZDoga1JlZ2V4LnRlc3QoaW5uZXJUb2tlbikgPyBLSU5EX0tfTEVUVEVSIDogS0lORF9DSl9MRVRURVIsXG4gICAgICAgICAgICBoYXNMZWFkaW5nUHVuY3R1YXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaGFzVHJhaWxpbmdQdW5jdHVhdGlvbjogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgZnVuY3Rpb24gYXBwZW5kTm9kZShub2RlKSB7XG4gICAgICAgIGNvbnN0IGxhc3ROb2RlID0gZ2V0TGFzdChub2Rlcyk7XG4gICAgICAgIGlmIChsYXN0Tm9kZSAmJiBsYXN0Tm9kZS50eXBlID09PSBcIndvcmRcIikge1xuICAgICAgICAgIGlmIChsYXN0Tm9kZS5raW5kID09PSBLSU5EX05PTl9DSksgJiYgbm9kZS5raW5kID09PSBLSU5EX0NKX0xFVFRFUiAmJiAhbGFzdE5vZGUuaGFzVHJhaWxpbmdQdW5jdHVhdGlvbiB8fCBsYXN0Tm9kZS5raW5kID09PSBLSU5EX0NKX0xFVFRFUiAmJiBub2RlLmtpbmQgPT09IEtJTkRfTk9OX0NKSyAmJiAhbm9kZS5oYXNMZWFkaW5nUHVuY3R1YXRpb24pIHtcbiAgICAgICAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcIndoaXRlc3BhY2VcIixcbiAgICAgICAgICAgICAgdmFsdWU6IFwiIFwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFpc0JldHdlZW4oS0lORF9OT05fQ0pLLCBLSU5EX0NKS19QVU5DVFVBVElPTikgJiYgIVtsYXN0Tm9kZS52YWx1ZSwgbm9kZS52YWx1ZV0uc29tZSgodmFsdWUpID0+IC9cXHUzMDAwLy50ZXN0KHZhbHVlKSkpIHtcbiAgICAgICAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiBcIndoaXRlc3BhY2VcIixcbiAgICAgICAgICAgICAgdmFsdWU6IFwiXCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICBmdW5jdGlvbiBpc0JldHdlZW4oa2luZDEsIGtpbmQyKSB7XG4gICAgICAgICAgcmV0dXJuIGxhc3ROb2RlLmtpbmQgPT09IGtpbmQxICYmIG5vZGUua2luZCA9PT0ga2luZDIgfHwgbGFzdE5vZGUua2luZCA9PT0ga2luZDIgJiYgbm9kZS5raW5kID09PSBraW5kMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRPcmRlcmVkTGlzdEl0ZW1JbmZvKG9yZGVyTGlzdEl0ZW0sIG9yaWdpbmFsVGV4dCkge1xuICAgICAgY29uc3QgWywgbnVtYmVyVGV4dCwgbWFya2VyLCBsZWFkaW5nU3BhY2VzXSA9IG9yaWdpbmFsVGV4dC5zbGljZShvcmRlckxpc3RJdGVtLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgb3JkZXJMaXN0SXRlbS5wb3NpdGlvbi5lbmQub2Zmc2V0KS5tYXRjaCgvXlxccyooXFxkKykoXFwufFxcKSkoXFxzKikvKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG51bWJlclRleHQsXG4gICAgICAgIG1hcmtlcixcbiAgICAgICAgbGVhZGluZ1NwYWNlc1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzR2l0RGlmZkZyaWVuZGx5T3JkZXJlZExpc3Qobm9kZSwgb3B0aW9ucykge1xuICAgICAgaWYgKCFub2RlLm9yZGVyZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBmaXJzdE51bWJlciA9IE51bWJlcihnZXRPcmRlcmVkTGlzdEl0ZW1JbmZvKG5vZGUuY2hpbGRyZW5bMF0sIG9wdGlvbnMub3JpZ2luYWxUZXh0KS5udW1iZXJUZXh0KTtcbiAgICAgIGNvbnN0IHNlY29uZE51bWJlciA9IE51bWJlcihnZXRPcmRlcmVkTGlzdEl0ZW1JbmZvKG5vZGUuY2hpbGRyZW5bMV0sIG9wdGlvbnMub3JpZ2luYWxUZXh0KS5udW1iZXJUZXh0KTtcbiAgICAgIGlmIChmaXJzdE51bWJlciA9PT0gMCAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgY29uc3QgdGhpcmROdW1iZXIgPSBOdW1iZXIoZ2V0T3JkZXJlZExpc3RJdGVtSW5mbyhub2RlLmNoaWxkcmVuWzJdLCBvcHRpb25zLm9yaWdpbmFsVGV4dCkubnVtYmVyVGV4dCk7XG4gICAgICAgIHJldHVybiBzZWNvbmROdW1iZXIgPT09IDEgJiYgdGhpcmROdW1iZXIgPT09IDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2Vjb25kTnVtYmVyID09PSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRGZW5jZWRDb2RlQmxvY2tWYWx1ZShub2RlLCBvcmlnaW5hbFRleHQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdmFsdWVcbiAgICAgIH0gPSBub2RlO1xuICAgICAgaWYgKG5vZGUucG9zaXRpb24uZW5kLm9mZnNldCA9PT0gb3JpZ2luYWxUZXh0Lmxlbmd0aCAmJiB2YWx1ZS5lbmRzV2l0aChcIlxcblwiKSAmJiBvcmlnaW5hbFRleHQuZW5kc1dpdGgoXCJcXG5cIikpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFwQXN0KGFzdCwgaGFuZGxlcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHByZW9yZGVyKG5vZGUsIGluZGV4LCBwYXJlbnRTdGFjaykge1xuICAgICAgICBjb25zdCBuZXdOb2RlID0gT2JqZWN0LmFzc2lnbih7fSwgaGFuZGxlcihub2RlLCBpbmRleCwgcGFyZW50U3RhY2spKTtcbiAgICAgICAgaWYgKG5ld05vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBuZXdOb2RlLmNoaWxkcmVuID0gbmV3Tm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleDIpID0+IHByZW9yZGVyKGNoaWxkLCBpbmRleDIsIFtuZXdOb2RlLCAuLi5wYXJlbnRTdGFja10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3Tm9kZTtcbiAgICAgIH0oYXN0LCBudWxsLCBbXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzQXV0b2xpbmsobm9kZSkge1xuICAgICAgaWYgKChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUudHlwZSkgIT09IFwibGlua1wiIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IFtjaGlsZF0gPSBub2RlLmNoaWxkcmVuO1xuICAgICAgcmV0dXJuIGxvY1N0YXJ0KG5vZGUpID09PSBsb2NTdGFydChjaGlsZCkgJiYgbG9jRW5kKG5vZGUpID09PSBsb2NFbmQoY2hpbGQpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBtYXBBc3QsXG4gICAgICBzcGxpdFRleHQsXG4gICAgICBwdW5jdHVhdGlvblBhdHRlcm4sXG4gICAgICBnZXRGZW5jZWRDb2RlQmxvY2tWYWx1ZSxcbiAgICAgIGdldE9yZGVyZWRMaXN0SXRlbUluZm8sXG4gICAgICBoYXNHaXREaWZmRnJpZW5kbHlPcmRlcmVkTGlzdCxcbiAgICAgIElOTElORV9OT0RFX1RZUEVTLFxuICAgICAgSU5MSU5FX05PREVfV1JBUFBFUl9UWVBFUyxcbiAgICAgIGlzQXV0b2xpbmtcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2VtYmVkMyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtbWFya2Rvd24vZW1iZWQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBpbmZlclBhcnNlckJ5TGFuZ3VhZ2UsXG4gICAgICBnZXRNYXhDb250aW51b3VzQ291bnRcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBtYXJrQXNSb290XG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgcmVwbGFjZUVuZE9mTGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHByaW50RnJvbnRNYXR0ZXIgPSByZXF1aXJlX3ByaW50KCk7XG4gICAgdmFyIHtcbiAgICAgIGdldEZlbmNlZENvZGVCbG9ja1ZhbHVlXG4gICAgfSA9IHJlcXVpcmVfdXRpbHMxMCgpO1xuICAgIGZ1bmN0aW9uIGVtYmVkKHBhdGgsIHByaW50LCB0ZXh0VG9Eb2MsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcImNvZGVcIiAmJiBub2RlLmxhbmcgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gaW5mZXJQYXJzZXJCeUxhbmd1YWdlKG5vZGUubGFuZywgb3B0aW9ucyk7XG4gICAgICAgIGlmIChwYXJzZXIpIHtcbiAgICAgICAgICBjb25zdCBzdHlsZVVuaXQgPSBvcHRpb25zLl9faW5Kc1RlbXBsYXRlID8gXCJ+XCIgOiBcImBcIjtcbiAgICAgICAgICBjb25zdCBzdHlsZSA9IHN0eWxlVW5pdC5yZXBlYXQoTWF0aC5tYXgoMywgZ2V0TWF4Q29udGludW91c0NvdW50KG5vZGUudmFsdWUsIHN0eWxlVW5pdCkgKyAxKSk7XG4gICAgICAgICAgY29uc3QgbmV3T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHBhcnNlclxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKG5vZGUubGFuZyA9PT0gXCJ0c3hcIikge1xuICAgICAgICAgICAgbmV3T3B0aW9ucy5maWxlcGF0aCA9IFwiZHVtbXkudHN4XCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRvYzIgPSB0ZXh0VG9Eb2MoZ2V0RmVuY2VkQ29kZUJsb2NrVmFsdWUobm9kZSwgb3B0aW9ucy5vcmlnaW5hbFRleHQpLCBuZXdPcHRpb25zLCB7XG4gICAgICAgICAgICBzdHJpcFRyYWlsaW5nSGFyZGxpbmU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gbWFya0FzUm9vdChbc3R5bGUsIG5vZGUubGFuZywgbm9kZS5tZXRhID8gXCIgXCIgKyBub2RlLm1ldGEgOiBcIlwiLCBoYXJkbGluZSwgcmVwbGFjZUVuZE9mTGluZShkb2MyKSwgaGFyZGxpbmUsIHN0eWxlXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJmcm9udC1tYXR0ZXJcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGcm9udE1hdHRlcihub2RlLCB0ZXh0VG9Eb2MpO1xuICAgICAgICBjYXNlIFwiaW1wb3J0RXhwb3J0XCI6XG4gICAgICAgICAgcmV0dXJuIFt0ZXh0VG9Eb2Mobm9kZS52YWx1ZSwge1xuICAgICAgICAgICAgcGFyc2VyOiBcImJhYmVsXCJcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBzdHJpcFRyYWlsaW5nSGFyZGxpbmU6IHRydWVcbiAgICAgICAgICB9KSwgaGFyZGxpbmVdO1xuICAgICAgICBjYXNlIFwianN4XCI6XG4gICAgICAgICAgcmV0dXJuIHRleHRUb0RvYyhgPCQ+JHtub2RlLnZhbHVlfTwvJD5gLCB7XG4gICAgICAgICAgICBwYXJzZXI6IFwiX19qc19leHByZXNzaW9uXCIsXG4gICAgICAgICAgICByb290TWFya2VyOiBcIm1keFwiXG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZW1iZWQ7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJhZ21hNCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtbWFya2Rvd24vcHJhZ21hLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgcGFyc2VGcm9udE1hdHRlciA9IHJlcXVpcmVfcGFyc2U0KCk7XG4gICAgdmFyIHByYWdtYXMgPSBbXCJmb3JtYXRcIiwgXCJwcmV0dGllclwiXTtcbiAgICBmdW5jdGlvbiBzdGFydFdpdGhQcmFnbWEodGV4dCkge1xuICAgICAgY29uc3QgcHJhZ21hID0gYEAoJHtwcmFnbWFzLmpvaW4oXCJ8XCIpfSlgO1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKFtgPCEtLVxcXFxzKiR7cHJhZ21hfVxcXFxzKi0tPmAsIGB7XFxcXHMqXFxcXC9cXFxcKlxcXFxzKiR7cHJhZ21hfVxcXFxzKlxcXFwqXFxcXC9cXFxccyp9YCwgYDwhLS0uKlxccj9cbltcXFxcc1xcXFxTXSooXnxcbilbXlxcXFxTXG5dKiR7cHJhZ21hfVteXFxcXFNcbl0qKCR8XG4pW1xcXFxzXFxcXFNdKlxuLiotLT5gXS5qb2luKFwifFwiKSwgXCJtXCIpO1xuICAgICAgY29uc3QgbWF0Y2hlZCA9IHRleHQubWF0Y2gocmVnZXgpO1xuICAgICAgcmV0dXJuIChtYXRjaGVkID09PSBudWxsIHx8IG1hdGNoZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1hdGNoZWQuaW5kZXgpID09PSAwO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBzdGFydFdpdGhQcmFnbWEsXG4gICAgICBoYXNQcmFnbWE6ICh0ZXh0KSA9PiBzdGFydFdpdGhQcmFnbWEocGFyc2VGcm9udE1hdHRlcih0ZXh0KS5jb250ZW50LnRyaW1TdGFydCgpKSxcbiAgICAgIGluc2VydFByYWdtYTogKHRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZXh0cmFjdGVkID0gcGFyc2VGcm9udE1hdHRlcih0ZXh0KTtcbiAgICAgICAgY29uc3QgcHJhZ21hID0gYDwhLS0gQCR7cHJhZ21hc1swXX0gLS0+YDtcbiAgICAgICAgcmV0dXJuIGV4dHJhY3RlZC5mcm9udE1hdHRlciA/IGAke2V4dHJhY3RlZC5mcm9udE1hdHRlci5yYXd9XG5cbiR7cHJhZ21hfVxuXG4ke2V4dHJhY3RlZC5jb250ZW50fWAgOiBgJHtwcmFnbWF9XG5cbiR7ZXh0cmFjdGVkLmNvbnRlbnR9YDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3ByaW50X3ByZXByb2Nlc3MyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1tYXJrZG93bi9wcmludC1wcmVwcm9jZXNzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZ2V0TGFzdCA9IHJlcXVpcmVfZ2V0X2xhc3QoKTtcbiAgICB2YXIge1xuICAgICAgZ2V0T3JkZXJlZExpc3RJdGVtSW5mbyxcbiAgICAgIG1hcEFzdCxcbiAgICAgIHNwbGl0VGV4dFxuICAgIH0gPSByZXF1aXJlX3V0aWxzMTAoKTtcbiAgICB2YXIgaXNTaW5nbGVDaGFyUmVnZXggPSAvXi4kL3N1O1xuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3MoYXN0LCBvcHRpb25zKSB7XG4gICAgICBhc3QgPSByZXN0b3JlVW5lc2NhcGVkQ2hhcmFjdGVyKGFzdCwgb3B0aW9ucyk7XG4gICAgICBhc3QgPSBtZXJnZUNvbnRpbnVvdXNUZXh0cyhhc3QpO1xuICAgICAgYXN0ID0gdHJhbnNmb3JtSW5saW5lQ29kZShhc3QpO1xuICAgICAgYXN0ID0gdHJhbnNmb3JtSW5kZW50ZWRDb2RlYmxvY2tBbmRNYXJrSXRzUGFyZW50TGlzdChhc3QsIG9wdGlvbnMpO1xuICAgICAgYXN0ID0gbWFya0FsaWduZWRMaXN0KGFzdCwgb3B0aW9ucyk7XG4gICAgICBhc3QgPSBzcGxpdFRleHRJbnRvU2VudGVuY2VzKGFzdCwgb3B0aW9ucyk7XG4gICAgICBhc3QgPSB0cmFuc2Zvcm1JbXBvcnRFeHBvcnQoYXN0KTtcbiAgICAgIGFzdCA9IG1lcmdlQ29udGludW91c0ltcG9ydEV4cG9ydChhc3QpO1xuICAgICAgcmV0dXJuIGFzdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtSW1wb3J0RXhwb3J0KGFzdCkge1xuICAgICAgcmV0dXJuIG1hcEFzdChhc3QsIChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiaW1wb3J0XCIgJiYgbm9kZS50eXBlICE9PSBcImV4cG9ydFwiKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbm9kZSksIHt9LCB7XG4gICAgICAgICAgdHlwZTogXCJpbXBvcnRFeHBvcnRcIlxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm1JbmxpbmVDb2RlKGFzdCkge1xuICAgICAgcmV0dXJuIG1hcEFzdChhc3QsIChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiaW5saW5lQ29kZVwiKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbm9kZSksIHt9LCB7XG4gICAgICAgICAgdmFsdWU6IG5vZGUudmFsdWUucmVwbGFjZSgvXFxzKy9nLCBcIiBcIilcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzdG9yZVVuZXNjYXBlZENoYXJhY3Rlcihhc3QsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBtYXBBc3QoYXN0LCAobm9kZSkgPT4gbm9kZS50eXBlICE9PSBcInRleHRcIiB8fCBub2RlLnZhbHVlID09PSBcIipcIiB8fCBub2RlLnZhbHVlID09PSBcIl9cIiB8fCAhaXNTaW5nbGVDaGFyUmVnZXgudGVzdChub2RlLnZhbHVlKSB8fCBub2RlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCA9PT0gbm9kZS52YWx1ZS5sZW5ndGggPyBub2RlIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBub2RlKSwge30sIHtcbiAgICAgICAgdmFsdWU6IG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKG5vZGUucG9zaXRpb24uc3RhcnQub2Zmc2V0LCBub2RlLnBvc2l0aW9uLmVuZC5vZmZzZXQpXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1lcmdlQ29udGludW91c0ltcG9ydEV4cG9ydChhc3QpIHtcbiAgICAgIHJldHVybiBtZXJnZUNoaWxkcmVuKGFzdCwgKHByZXZOb2RlLCBub2RlKSA9PiBwcmV2Tm9kZS50eXBlID09PSBcImltcG9ydEV4cG9ydFwiICYmIG5vZGUudHlwZSA9PT0gXCJpbXBvcnRFeHBvcnRcIiwgKHByZXZOb2RlLCBub2RlKSA9PiAoe1xuICAgICAgICB0eXBlOiBcImltcG9ydEV4cG9ydFwiLFxuICAgICAgICB2YWx1ZTogcHJldk5vZGUudmFsdWUgKyBcIlxcblxcblwiICsgbm9kZS52YWx1ZSxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBzdGFydDogcHJldk5vZGUucG9zaXRpb24uc3RhcnQsXG4gICAgICAgICAgZW5kOiBub2RlLnBvc2l0aW9uLmVuZFxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1lcmdlQ2hpbGRyZW4oYXN0LCBzaG91bGRNZXJnZSwgbWVyZ2VOb2RlKSB7XG4gICAgICByZXR1cm4gbWFwQXN0KGFzdCwgKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLnJlZHVjZSgoY3VycmVudCwgY2hpbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBsYXN0Q2hpbGQgPSBnZXRMYXN0KGN1cnJlbnQpO1xuICAgICAgICAgIGlmIChsYXN0Q2hpbGQgJiYgc2hvdWxkTWVyZ2UobGFzdENoaWxkLCBjaGlsZCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnQuc3BsaWNlKC0xLCAxLCBtZXJnZU5vZGUobGFzdENoaWxkLCBjaGlsZCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50LnB1c2goY2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgfSwgW10pO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBub2RlKSwge30sIHtcbiAgICAgICAgICBjaGlsZHJlblxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtZXJnZUNvbnRpbnVvdXNUZXh0cyhhc3QpIHtcbiAgICAgIHJldHVybiBtZXJnZUNoaWxkcmVuKGFzdCwgKHByZXZOb2RlLCBub2RlKSA9PiBwcmV2Tm9kZS50eXBlID09PSBcInRleHRcIiAmJiBub2RlLnR5cGUgPT09IFwidGV4dFwiLCAocHJldk5vZGUsIG5vZGUpID0+ICh7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB2YWx1ZTogcHJldk5vZGUudmFsdWUgKyBub2RlLnZhbHVlLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHN0YXJ0OiBwcmV2Tm9kZS5wb3NpdGlvbi5zdGFydCxcbiAgICAgICAgICBlbmQ6IG5vZGUucG9zaXRpb24uZW5kXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BsaXRUZXh0SW50b1NlbnRlbmNlcyhhc3QsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBtYXBBc3QoYXN0LCAobm9kZSwgaW5kZXgsIFtwYXJlbnROb2RlXSkgPT4ge1xuICAgICAgICBpZiAobm9kZS50eXBlICE9PSBcInRleHRcIikge1xuICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSA9IG5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlLnR5cGUgPT09IFwicGFyYWdyYXBoXCIpIHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudHJpbVN0YXJ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbmRleCA9PT0gcGFyZW50Tm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW1FbmQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcInNlbnRlbmNlXCIsXG4gICAgICAgICAgcG9zaXRpb246IG5vZGUucG9zaXRpb24sXG4gICAgICAgICAgY2hpbGRyZW46IHNwbGl0VGV4dCh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm1JbmRlbnRlZENvZGVibG9ja0FuZE1hcmtJdHNQYXJlbnRMaXN0KGFzdCwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG1hcEFzdChhc3QsIChub2RlLCBpbmRleCwgcGFyZW50U3RhY2spID0+IHtcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJjb2RlXCIpIHtcbiAgICAgICAgICBjb25zdCBpc0luZGVudGVkID0gL15cXG4/KD86IHs0LH18XFx0KS8udGVzdChvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0KSk7XG4gICAgICAgICAgbm9kZS5pc0luZGVudGVkID0gaXNJbmRlbnRlZDtcbiAgICAgICAgICBpZiAoaXNJbmRlbnRlZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJlbnRTdGFjay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXJlbnRTdGFja1tpXTtcbiAgICAgICAgICAgICAgaWYgKHBhcmVudC5oYXNJbmRlbnRlZENvZGVibG9jaykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChwYXJlbnQudHlwZSA9PT0gXCJsaXN0XCIpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaGFzSW5kZW50ZWRDb2RlYmxvY2sgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1hcmtBbGlnbmVkTGlzdChhc3QsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBtYXBBc3QoYXN0LCAobm9kZSwgaW5kZXgsIHBhcmVudFN0YWNrKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFwibGlzdFwiICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50U3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhcmVudFN0YWNrW2ldO1xuICAgICAgICAgICAgaWYgKHBhcmVudC50eXBlID09PSBcImxpc3RcIiAmJiAhcGFyZW50LmlzQWxpZ25lZCkge1xuICAgICAgICAgICAgICBub2RlLmlzQWxpZ25lZCA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbm9kZS5pc0FsaWduZWQgPSBpc0FsaWduZWQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9KTtcbiAgICAgIGZ1bmN0aW9uIGdldExpc3RJdGVtU3RhcnQobGlzdEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGxpc3RJdGVtLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCA/IC0xIDogbGlzdEl0ZW0uY2hpbGRyZW5bMF0ucG9zaXRpb24uc3RhcnQuY29sdW1uIC0gMTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGlzQWxpZ25lZChsaXN0KSB7XG4gICAgICAgIGlmICghbGlzdC5vcmRlcmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2ZpcnN0SXRlbSwgc2Vjb25kSXRlbV0gPSBsaXN0LmNoaWxkcmVuO1xuICAgICAgICBjb25zdCBmaXJzdEluZm8gPSBnZXRPcmRlcmVkTGlzdEl0ZW1JbmZvKGZpcnN0SXRlbSwgb3B0aW9ucy5vcmlnaW5hbFRleHQpO1xuICAgICAgICBpZiAoZmlyc3RJbmZvLmxlYWRpbmdTcGFjZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpcnN0U3RhcnQgPSBnZXRMaXN0SXRlbVN0YXJ0KGZpcnN0SXRlbSk7XG4gICAgICAgIGlmIChmaXJzdFN0YXJ0ID09PSAtMSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGlzdC5jaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gZmlyc3RTdGFydCAlIG9wdGlvbnMudGFiV2lkdGggPT09IDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2Vjb25kU3RhcnQgPSBnZXRMaXN0SXRlbVN0YXJ0KHNlY29uZEl0ZW0pO1xuICAgICAgICBpZiAoZmlyc3RTdGFydCAhPT0gc2Vjb25kU3RhcnQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0U3RhcnQgJSBvcHRpb25zLnRhYldpZHRoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2Vjb25kSW5mbyA9IGdldE9yZGVyZWRMaXN0SXRlbUluZm8oc2Vjb25kSXRlbSwgb3B0aW9ucy5vcmlnaW5hbFRleHQpO1xuICAgICAgICByZXR1cm4gc2Vjb25kSW5mby5sZWFkaW5nU3BhY2VzLmxlbmd0aCA+IDE7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHByZXByb2Nlc3M7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY2xlYW40ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1tYXJrZG93bi9jbGVhbi5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGlzRnJvbnRNYXR0ZXJOb2RlXG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBzdGFydFdpdGhQcmFnbWFcbiAgICB9ID0gcmVxdWlyZV9wcmFnbWE0KCk7XG4gICAgdmFyIGlnbm9yZWRQcm9wZXJ0aWVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wicG9zaXRpb25cIiwgXCJyYXdcIl0pO1xuICAgIGZ1bmN0aW9uIGNsZWFuKGFzdCwgbmV3T2JqLCBwYXJlbnQpIHtcbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJmcm9udC1tYXR0ZXJcIiB8fCBhc3QudHlwZSA9PT0gXCJjb2RlXCIgfHwgYXN0LnR5cGUgPT09IFwieWFtbFwiIHx8IGFzdC50eXBlID09PSBcImltcG9ydFwiIHx8IGFzdC50eXBlID09PSBcImV4cG9ydFwiIHx8IGFzdC50eXBlID09PSBcImpzeFwiKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoYXN0LnR5cGUgPT09IFwibGlzdFwiKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdPYmouaXNBbGlnbmVkO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcImxpc3RcIiB8fCBhc3QudHlwZSA9PT0gXCJsaXN0SXRlbVwiKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdPYmouc3ByZWFkO1xuICAgICAgICBkZWxldGUgbmV3T2JqLmxvb3NlO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcInRleHRcIikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJpbmxpbmVDb2RlXCIpIHtcbiAgICAgICAgbmV3T2JqLnZhbHVlID0gYXN0LnZhbHVlLnJlcGxhY2UoL1tcXHRcXG4gXSsvZywgXCIgXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcIndpa2lMaW5rXCIpIHtcbiAgICAgICAgbmV3T2JqLnZhbHVlID0gYXN0LnZhbHVlLnRyaW0oKS5yZXBsYWNlKC9bXFx0XFxuXSsvZywgXCIgXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGFzdC50eXBlID09PSBcImRlZmluaXRpb25cIiB8fCBhc3QudHlwZSA9PT0gXCJsaW5rUmVmZXJlbmNlXCIpIHtcbiAgICAgICAgbmV3T2JqLmxhYmVsID0gYXN0LmxhYmVsLnRyaW0oKS5yZXBsYWNlKC9bXFx0XFxuIF0rL2csIFwiIFwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuICAgICAgaWYgKChhc3QudHlwZSA9PT0gXCJkZWZpbml0aW9uXCIgfHwgYXN0LnR5cGUgPT09IFwibGlua1wiIHx8IGFzdC50eXBlID09PSBcImltYWdlXCIpICYmIGFzdC50aXRsZSkge1xuICAgICAgICBuZXdPYmoudGl0bGUgPSBhc3QudGl0bGUucmVwbGFjZSgvXFxcXChbXCInKV0pL2csIFwiJDFcIik7XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50ICYmIHBhcmVudC50eXBlID09PSBcInJvb3RcIiAmJiBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiAocGFyZW50LmNoaWxkcmVuWzBdID09PSBhc3QgfHwgaXNGcm9udE1hdHRlck5vZGUocGFyZW50LmNoaWxkcmVuWzBdKSAmJiBwYXJlbnQuY2hpbGRyZW5bMV0gPT09IGFzdCkgJiYgYXN0LnR5cGUgPT09IFwiaHRtbFwiICYmIHN0YXJ0V2l0aFByYWdtYShhc3QudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBjbGVhbi5pZ25vcmVkUHJvcGVydGllcyA9IGlnbm9yZWRQcm9wZXJ0aWVzO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGNsZWFuO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3ByaW50ZXJfbWFya2Rvd24gPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLW1hcmtkb3duL3ByaW50ZXItbWFya2Rvd24uanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBnZXRMYXN0LFxuICAgICAgZ2V0TWluTm90UHJlc2VudENvbnRpbnVvdXNDb3VudCxcbiAgICAgIGdldE1heENvbnRpbnVvdXNDb3VudCxcbiAgICAgIGdldFN0cmluZ1dpZHRoLFxuICAgICAgaXNOb25FbXB0eUFycmF5XG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBicmVha1BhcmVudCxcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgbGl0ZXJhbGxpbmUsXG4gICAgICAgIG1hcmtBc1Jvb3QsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgaWZCcmVhayxcbiAgICAgICAgZmlsbCxcbiAgICAgICAgYWxpZ24sXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGhhcmRsaW5lV2l0aG91dEJyZWFrUGFyZW50XG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgbm9ybWFsaXplRG9jLFxuICAgICAgICByZXBsYWNlVGV4dEVuZE9mTGluZVxuICAgICAgfSxcbiAgICAgIHByaW50ZXI6IHtcbiAgICAgICAgcHJpbnREb2NUb1N0cmluZ1xuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIGVtYmVkID0gcmVxdWlyZV9lbWJlZDMoKTtcbiAgICB2YXIge1xuICAgICAgaW5zZXJ0UHJhZ21hXG4gICAgfSA9IHJlcXVpcmVfcHJhZ21hNCgpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYzUoKTtcbiAgICB2YXIgcHJlcHJvY2VzcyA9IHJlcXVpcmVfcHJpbnRfcHJlcHJvY2VzczIoKTtcbiAgICB2YXIgY2xlYW4gPSByZXF1aXJlX2NsZWFuNCgpO1xuICAgIHZhciB7XG4gICAgICBnZXRGZW5jZWRDb2RlQmxvY2tWYWx1ZSxcbiAgICAgIGhhc0dpdERpZmZGcmllbmRseU9yZGVyZWRMaXN0LFxuICAgICAgc3BsaXRUZXh0LFxuICAgICAgcHVuY3R1YXRpb25QYXR0ZXJuLFxuICAgICAgSU5MSU5FX05PREVfVFlQRVMsXG4gICAgICBJTkxJTkVfTk9ERV9XUkFQUEVSX1RZUEVTLFxuICAgICAgaXNBdXRvbGlua1xuICAgIH0gPSByZXF1aXJlX3V0aWxzMTAoKTtcbiAgICB2YXIgVFJBSUxJTkdfSEFSRExJTkVfTk9ERVMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJpbXBvcnRFeHBvcnRcIl0pO1xuICAgIHZhciBTSU5HTEVfTElORV9OT0RFX1RZUEVTID0gW1wiaGVhZGluZ1wiLCBcInRhYmxlQ2VsbFwiLCBcImxpbmtcIiwgXCJ3aWtpTGlua1wiXTtcbiAgICB2YXIgU0lCTElOR19OT0RFX1RZUEVTID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wibGlzdEl0ZW1cIiwgXCJkZWZpbml0aW9uXCIsIFwiZm9vdG5vdGVEZWZpbml0aW9uXCJdKTtcbiAgICBmdW5jdGlvbiBnZW5lcmljUHJpbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoc2hvdWxkUmVtYWluVGhlU2FtZUNvbnRlbnQocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHNwbGl0VGV4dChvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0KSwgb3B0aW9ucykubWFwKChub2RlMikgPT4gbm9kZTIudHlwZSA9PT0gXCJ3b3JkXCIgPyBub2RlMi52YWx1ZSA6IG5vZGUyLnZhbHVlID09PSBcIlwiID8gXCJcIiA6IHByaW50TGluZShwYXRoLCBub2RlMi52YWx1ZSwgb3B0aW9ucykpO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImZyb250LW1hdHRlclwiOlxuICAgICAgICAgIHJldHVybiBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgY2FzZSBcInJvb3RcIjpcbiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW25vcm1hbGl6ZURvYyhwcmludFJvb3QocGF0aCwgb3B0aW9ucywgcHJpbnQpKSwgIVRSQUlMSU5HX0hBUkRMSU5FX05PREVTLmhhcyhnZXRMYXN0RGVzY2VuZGFudE5vZGUobm9kZSkudHlwZSkgPyBoYXJkbGluZSA6IFwiXCJdO1xuICAgICAgICBjYXNlIFwicGFyYWdyYXBoXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQsIHtcbiAgICAgICAgICAgIHBvc3Rwcm9jZXNzb3I6IGZpbGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSBcInNlbnRlbmNlXCI6XG4gICAgICAgICAgcmV0dXJuIHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICBjYXNlIFwid29yZFwiOiB7XG4gICAgICAgICAgbGV0IGVzY2FwZWRWYWx1ZSA9IG5vZGUudmFsdWUucmVwbGFjZSgvXFwqL2csIFwiXFxcXCQmXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChbYChefCR7cHVuY3R1YXRpb25QYXR0ZXJufSkoXyspYCwgYChfKykoJHtwdW5jdHVhdGlvblBhdHRlcm59fCQpYF0uam9pbihcInxcIiksIFwiZ1wiKSwgKF8sIHRleHQxLCB1bmRlcnNjb3JlMSwgdW5kZXJzY29yZTIsIHRleHQyKSA9PiAodW5kZXJzY29yZTEgPyBgJHt0ZXh0MX0ke3VuZGVyc2NvcmUxfWAgOiBgJHt1bmRlcnNjb3JlMn0ke3RleHQyfWApLnJlcGxhY2UoL18vZywgXCJcXFxcX1wiKSk7XG4gICAgICAgICAgY29uc3QgaXNGaXJzdFNlbnRlbmNlID0gKG5vZGUyLCBuYW1lLCBpbmRleCkgPT4gbm9kZTIudHlwZSA9PT0gXCJzZW50ZW5jZVwiICYmIGluZGV4ID09PSAwO1xuICAgICAgICAgIGNvbnN0IGlzTGFzdENoaWxkQXV0b2xpbmsgPSAobm9kZTIsIG5hbWUsIGluZGV4KSA9PiBpc0F1dG9saW5rKG5vZGUyLmNoaWxkcmVuW2luZGV4IC0gMV0pO1xuICAgICAgICAgIGlmIChlc2NhcGVkVmFsdWUgIT09IG5vZGUudmFsdWUgJiYgKHBhdGgubWF0Y2godm9pZCAwLCBpc0ZpcnN0U2VudGVuY2UsIGlzTGFzdENoaWxkQXV0b2xpbmspIHx8IHBhdGgubWF0Y2godm9pZCAwLCBpc0ZpcnN0U2VudGVuY2UsIChub2RlMiwgbmFtZSwgaW5kZXgpID0+IG5vZGUyLnR5cGUgPT09IFwiZW1waGFzaXNcIiAmJiBpbmRleCA9PT0gMCwgaXNMYXN0Q2hpbGRBdXRvbGluaykpKSB7XG4gICAgICAgICAgICBlc2NhcGVkVmFsdWUgPSBlc2NhcGVkVmFsdWUucmVwbGFjZSgvXihcXFxcP1sqX10pKy8sIChwcmVmaXgpID0+IHByZWZpeC5yZXBsYWNlKC9cXFxcL2csIFwiXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGVzY2FwZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwid2hpdGVzcGFjZVwiOiB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50Tm9kZS5jaGlsZHJlbi5pbmRleE9mKG5vZGUpO1xuICAgICAgICAgIGNvbnN0IG5leHROb2RlID0gcGFyZW50Tm9kZS5jaGlsZHJlbltpbmRleCArIDFdO1xuICAgICAgICAgIGNvbnN0IHByb3NlV3JhcCA9IG5leHROb2RlICYmIC9ePnxeKD86WyorLV18I3sxLDZ9fFxcZCtbKS5dKSQvLnRlc3QobmV4dE5vZGUudmFsdWUpID8gXCJuZXZlclwiIDogb3B0aW9ucy5wcm9zZVdyYXA7XG4gICAgICAgICAgcmV0dXJuIHByaW50TGluZShwYXRoLCBub2RlLnZhbHVlLCB7XG4gICAgICAgICAgICBwcm9zZVdyYXBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZW1waGFzaXNcIjoge1xuICAgICAgICAgIGxldCBzdHlsZTtcbiAgICAgICAgICBpZiAoaXNBdXRvbGluayhub2RlLmNoaWxkcmVuWzBdKSkge1xuICAgICAgICAgICAgc3R5bGUgPSBvcHRpb25zLm9yaWdpbmFsVGV4dFtub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBwYXRoLmdldFBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50Tm9kZS5jaGlsZHJlbi5pbmRleE9mKG5vZGUpO1xuICAgICAgICAgICAgY29uc3QgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkcmVuW2luZGV4IC0gMV07XG4gICAgICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGRyZW5baW5kZXggKyAxXTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1ByZXZPck5leHRXb3JkID0gcHJldk5vZGUgJiYgcHJldk5vZGUudHlwZSA9PT0gXCJzZW50ZW5jZVwiICYmIHByZXZOb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgZ2V0TGFzdChwcmV2Tm9kZS5jaGlsZHJlbikudHlwZSA9PT0gXCJ3b3JkXCIgJiYgIWdldExhc3QocHJldk5vZGUuY2hpbGRyZW4pLmhhc1RyYWlsaW5nUHVuY3R1YXRpb24gfHwgbmV4dE5vZGUgJiYgbmV4dE5vZGUudHlwZSA9PT0gXCJzZW50ZW5jZVwiICYmIG5leHROb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgbmV4dE5vZGUuY2hpbGRyZW5bMF0udHlwZSA9PT0gXCJ3b3JkXCIgJiYgIW5leHROb2RlLmNoaWxkcmVuWzBdLmhhc0xlYWRpbmdQdW5jdHVhdGlvbjtcbiAgICAgICAgICAgIHN0eWxlID0gaGFzUHJldk9yTmV4dFdvcmQgfHwgZ2V0QW5jZXN0b3JOb2RlKHBhdGgsIFwiZW1waGFzaXNcIikgPyBcIipcIiA6IFwiX1wiO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW3N0eWxlLCBwcmludENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50KSwgc3R5bGVdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzdHJvbmdcIjpcbiAgICAgICAgICByZXR1cm4gW1wiKipcIiwgcHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludCksIFwiKipcIl07XG4gICAgICAgIGNhc2UgXCJkZWxldGVcIjpcbiAgICAgICAgICByZXR1cm4gW1wifn5cIiwgcHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludCksIFwifn5cIl07XG4gICAgICAgIGNhc2UgXCJpbmxpbmVDb2RlXCI6IHtcbiAgICAgICAgICBjb25zdCBiYWNrdGlja0NvdW50ID0gZ2V0TWluTm90UHJlc2VudENvbnRpbnVvdXNDb3VudChub2RlLnZhbHVlLCBcImBcIik7XG4gICAgICAgICAgY29uc3Qgc3R5bGUgPSBcImBcIi5yZXBlYXQoYmFja3RpY2tDb3VudCB8fCAxKTtcbiAgICAgICAgICBjb25zdCBnYXAgPSBiYWNrdGlja0NvdW50ICYmICEvXlxccy8udGVzdChub2RlLnZhbHVlKSA/IFwiIFwiIDogXCJcIjtcbiAgICAgICAgICByZXR1cm4gW3N0eWxlLCBnYXAsIG5vZGUudmFsdWUsIGdhcCwgc3R5bGVdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ3aWtpTGlua1wiOiB7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gXCJcIjtcbiAgICAgICAgICBpZiAob3B0aW9ucy5wcm9zZVdyYXAgPT09IFwicHJlc2VydmVcIikge1xuICAgICAgICAgICAgY29udGVudHMgPSBub2RlLnZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250ZW50cyA9IG5vZGUudmFsdWUucmVwbGFjZSgvW1xcdFxcbl0rL2csIFwiIFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtcIltbXCIsIGNvbnRlbnRzLCBcIl1dXCJdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgc3dpdGNoIChvcHRpb25zLm9yaWdpbmFsVGV4dFtub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldF0pIHtcbiAgICAgICAgICAgIGNhc2UgXCI8XCI6IHtcbiAgICAgICAgICAgICAgY29uc3QgbWFpbHRvID0gXCJtYWlsdG86XCI7XG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IG5vZGUudXJsLnN0YXJ0c1dpdGgobWFpbHRvKSAmJiBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCArIDEsIG5vZGUucG9zaXRpb24uc3RhcnQub2Zmc2V0ICsgMSArIG1haWx0by5sZW5ndGgpICE9PSBtYWlsdG8gPyBub2RlLnVybC5zbGljZShtYWlsdG8ubGVuZ3RoKSA6IG5vZGUudXJsO1xuICAgICAgICAgICAgICByZXR1cm4gW1wiPFwiLCB1cmwsIFwiPlwiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJbXCI6XG4gICAgICAgICAgICAgIHJldHVybiBbXCJbXCIsIHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBcIl0oXCIsIHByaW50VXJsKG5vZGUudXJsLCBcIilcIiksIHByaW50VGl0bGUobm9kZS50aXRsZSwgb3B0aW9ucyksIFwiKVwiXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgICAgIHJldHVybiBbXCIhW1wiLCBub2RlLmFsdCB8fCBcIlwiLCBcIl0oXCIsIHByaW50VXJsKG5vZGUudXJsLCBcIilcIiksIHByaW50VGl0bGUobm9kZS50aXRsZSwgb3B0aW9ucyksIFwiKVwiXTtcbiAgICAgICAgY2FzZSBcImJsb2NrcXVvdGVcIjpcbiAgICAgICAgICByZXR1cm4gW1wiPiBcIiwgYWxpZ24oXCI+IFwiLCBwcmludENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50KSldO1xuICAgICAgICBjYXNlIFwiaGVhZGluZ1wiOlxuICAgICAgICAgIHJldHVybiBbXCIjXCIucmVwZWF0KG5vZGUuZGVwdGgpICsgXCIgXCIsIHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQpXTtcbiAgICAgICAgY2FzZSBcImNvZGVcIjoge1xuICAgICAgICAgIGlmIChub2RlLmlzSW5kZW50ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFsaWdubWVudCA9IFwiIFwiLnJlcGVhdCg0KTtcbiAgICAgICAgICAgIHJldHVybiBhbGlnbihhbGlnbm1lbnQsIFthbGlnbm1lbnQsIC4uLnJlcGxhY2VUZXh0RW5kT2ZMaW5lKG5vZGUudmFsdWUsIGhhcmRsaW5lKV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzdHlsZVVuaXQgPSBvcHRpb25zLl9faW5Kc1RlbXBsYXRlID8gXCJ+XCIgOiBcImBcIjtcbiAgICAgICAgICBjb25zdCBzdHlsZSA9IHN0eWxlVW5pdC5yZXBlYXQoTWF0aC5tYXgoMywgZ2V0TWF4Q29udGludW91c0NvdW50KG5vZGUudmFsdWUsIHN0eWxlVW5pdCkgKyAxKSk7XG4gICAgICAgICAgcmV0dXJuIFtzdHlsZSwgbm9kZS5sYW5nIHx8IFwiXCIsIG5vZGUubWV0YSA/IFwiIFwiICsgbm9kZS5tZXRhIDogXCJcIiwgaGFyZGxpbmUsIC4uLnJlcGxhY2VUZXh0RW5kT2ZMaW5lKGdldEZlbmNlZENvZGVCbG9ja1ZhbHVlKG5vZGUsIG9wdGlvbnMub3JpZ2luYWxUZXh0KSwgaGFyZGxpbmUpLCBoYXJkbGluZSwgc3R5bGVdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJodG1sXCI6IHtcbiAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJlbnROb2RlLnR5cGUgPT09IFwicm9vdFwiICYmIGdldExhc3QocGFyZW50Tm9kZS5jaGlsZHJlbikgPT09IG5vZGUgPyBub2RlLnZhbHVlLnRyaW1FbmQoKSA6IG5vZGUudmFsdWU7XG4gICAgICAgICAgY29uc3QgaXNIdG1sQ29tbWVudCA9IC9ePCEtLS4qLS0+JC9zLnRlc3QodmFsdWUpO1xuICAgICAgICAgIHJldHVybiByZXBsYWNlVGV4dEVuZE9mTGluZSh2YWx1ZSwgaXNIdG1sQ29tbWVudCA/IGhhcmRsaW5lIDogbWFya0FzUm9vdChsaXRlcmFsbGluZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJsaXN0XCI6IHtcbiAgICAgICAgICBjb25zdCBudGhTaWJsaW5nSW5kZXggPSBnZXROdGhMaXN0U2libGluZ0luZGV4KG5vZGUsIHBhdGguZ2V0UGFyZW50Tm9kZSgpKTtcbiAgICAgICAgICBjb25zdCBpc0dpdERpZmZGcmllbmRseU9yZGVyZWRMaXN0ID0gaGFzR2l0RGlmZkZyaWVuZGx5T3JkZXJlZExpc3Qobm9kZSwgb3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuIHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQsIHtcbiAgICAgICAgICAgIHByb2Nlc3NvcjogKGNoaWxkUGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gZ2V0UHJlZml4KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkUGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMiAmJiBjaGlsZE5vZGUuY2hpbGRyZW5bMV0udHlwZSA9PT0gXCJodG1sXCIgJiYgY2hpbGROb2RlLmNoaWxkcmVuWzBdLnBvc2l0aW9uLnN0YXJ0LmNvbHVtbiAhPT0gY2hpbGROb2RlLmNoaWxkcmVuWzFdLnBvc2l0aW9uLnN0YXJ0LmNvbHVtbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbcHJlZml4LCBwcmludExpc3RJdGVtKGNoaWxkUGF0aCwgb3B0aW9ucywgcHJpbnQsIHByZWZpeCldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBbcHJlZml4LCBhbGlnbihcIiBcIi5yZXBlYXQocHJlZml4Lmxlbmd0aCksIHByaW50TGlzdEl0ZW0oY2hpbGRQYXRoLCBvcHRpb25zLCBwcmludCwgcHJlZml4KSldO1xuICAgICAgICAgICAgICBmdW5jdGlvbiBnZXRQcmVmaXgoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3UHJlZml4ID0gbm9kZS5vcmRlcmVkID8gKGluZGV4ID09PSAwID8gbm9kZS5zdGFydCA6IGlzR2l0RGlmZkZyaWVuZGx5T3JkZXJlZExpc3QgPyAxIDogbm9kZS5zdGFydCArIGluZGV4KSArIChudGhTaWJsaW5nSW5kZXggJSAyID09PSAwID8gXCIuIFwiIDogXCIpIFwiKSA6IG50aFNpYmxpbmdJbmRleCAlIDIgPT09IDAgPyBcIi0gXCIgOiBcIiogXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuaXNBbGlnbmVkIHx8IG5vZGUuaGFzSW5kZW50ZWRDb2RlYmxvY2sgPyBhbGlnbkxpc3RQcmVmaXgocmF3UHJlZml4LCBvcHRpb25zKSA6IHJhd1ByZWZpeDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ0aGVtYXRpY0JyZWFrXCI6IHtcbiAgICAgICAgICBjb25zdCBjb3VudGVyID0gZ2V0QW5jZXN0b3JDb3VudGVyKHBhdGgsIFwibGlzdFwiKTtcbiAgICAgICAgICBpZiAoY291bnRlciA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi0tLVwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBudGhTaWJsaW5nSW5kZXggPSBnZXROdGhMaXN0U2libGluZ0luZGV4KHBhdGguZ2V0UGFyZW50Tm9kZShjb3VudGVyKSwgcGF0aC5nZXRQYXJlbnROb2RlKGNvdW50ZXIgKyAxKSk7XG4gICAgICAgICAgcmV0dXJuIG50aFNpYmxpbmdJbmRleCAlIDIgPT09IDAgPyBcIioqKlwiIDogXCItLS1cIjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibGlua1JlZmVyZW5jZVwiOlxuICAgICAgICAgIHJldHVybiBbXCJbXCIsIHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBcIl1cIiwgbm9kZS5yZWZlcmVuY2VUeXBlID09PSBcImZ1bGxcIiA/IFtcIltcIiwgbm9kZS5pZGVudGlmaWVyLCBcIl1cIl0gOiBub2RlLnJlZmVyZW5jZVR5cGUgPT09IFwiY29sbGFwc2VkXCIgPyBcIltdXCIgOiBcIlwiXTtcbiAgICAgICAgY2FzZSBcImltYWdlUmVmZXJlbmNlXCI6XG4gICAgICAgICAgc3dpdGNoIChub2RlLnJlZmVyZW5jZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJmdWxsXCI6XG4gICAgICAgICAgICAgIHJldHVybiBbXCIhW1wiLCBub2RlLmFsdCB8fCBcIlwiLCBcIl1bXCIsIG5vZGUuaWRlbnRpZmllciwgXCJdXCJdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIFtcIiFbXCIsIG5vZGUuYWx0LCBcIl1cIiwgbm9kZS5yZWZlcmVuY2VUeXBlID09PSBcImNvbGxhcHNlZFwiID8gXCJbXVwiIDogXCJcIl07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZGVmaW5pdGlvblwiOiB7XG4gICAgICAgICAgY29uc3QgbGluZU9yU3BhY2UgPSBvcHRpb25zLnByb3NlV3JhcCA9PT0gXCJhbHdheXNcIiA/IGxpbmUgOiBcIiBcIjtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAoW1wiW1wiLCBub2RlLmlkZW50aWZpZXIsIFwiXTpcIiwgaW5kZW50KFtsaW5lT3JTcGFjZSwgcHJpbnRVcmwobm9kZS51cmwpLCBub2RlLnRpdGxlID09PSBudWxsID8gXCJcIiA6IFtsaW5lT3JTcGFjZSwgcHJpbnRUaXRsZShub2RlLnRpdGxlLCBvcHRpb25zLCBmYWxzZSldXSldKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZm9vdG5vdGVcIjpcbiAgICAgICAgICByZXR1cm4gW1wiW15cIiwgcHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludCksIFwiXVwiXTtcbiAgICAgICAgY2FzZSBcImZvb3Rub3RlUmVmZXJlbmNlXCI6XG4gICAgICAgICAgcmV0dXJuIFtcIlteXCIsIG5vZGUuaWRlbnRpZmllciwgXCJdXCJdO1xuICAgICAgICBjYXNlIFwiZm9vdG5vdGVEZWZpbml0aW9uXCI6IHtcbiAgICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpLmNoaWxkcmVuW3BhdGguZ2V0TmFtZSgpICsgMV07XG4gICAgICAgICAgY29uc3Qgc2hvdWxkSW5saW5lRm9vdG5vdGUgPSBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBub2RlLmNoaWxkcmVuWzBdLnR5cGUgPT09IFwicGFyYWdyYXBoXCIgJiYgKG9wdGlvbnMucHJvc2VXcmFwID09PSBcIm5ldmVyXCIgfHwgb3B0aW9ucy5wcm9zZVdyYXAgPT09IFwicHJlc2VydmVcIiAmJiBub2RlLmNoaWxkcmVuWzBdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPT09IG5vZGUuY2hpbGRyZW5bMF0ucG9zaXRpb24uZW5kLmxpbmUpO1xuICAgICAgICAgIHJldHVybiBbXCJbXlwiLCBub2RlLmlkZW50aWZpZXIsIFwiXTogXCIsIHNob3VsZElubGluZUZvb3Rub3RlID8gcHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludCkgOiBncm91cChbYWxpZ24oXCIgXCIucmVwZWF0KDQpLCBwcmludENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50LCB7XG4gICAgICAgICAgICBwcm9jZXNzb3I6IChjaGlsZFBhdGgsIGluZGV4KSA9PiBpbmRleCA9PT0gMCA/IGdyb3VwKFtzb2Z0bGluZSwgcHJpbnQoKV0pIDogcHJpbnQoKVxuICAgICAgICAgIH0pKSwgbmV4dE5vZGUgJiYgbmV4dE5vZGUudHlwZSA9PT0gXCJmb290bm90ZURlZmluaXRpb25cIiA/IHNvZnRsaW5lIDogXCJcIl0pXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRUYWJsZShwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJ0YWJsZUNlbGxcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIGNhc2UgXCJicmVha1wiOlxuICAgICAgICAgIHJldHVybiAvXFxzLy50ZXN0KG9wdGlvbnMub3JpZ2luYWxUZXh0W25vZGUucG9zaXRpb24uc3RhcnQub2Zmc2V0XSkgPyBbXCIgIFwiLCBtYXJrQXNSb290KGxpdGVyYWxsaW5lKV0gOiBbXCJcXFxcXCIsIGhhcmRsaW5lXTtcbiAgICAgICAgY2FzZSBcImxpcXVpZE5vZGVcIjpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZVRleHRFbmRPZkxpbmUobm9kZS52YWx1ZSwgaGFyZGxpbmUpO1xuICAgICAgICBjYXNlIFwiaW1wb3J0RXhwb3J0XCI6XG4gICAgICAgICAgcmV0dXJuIFtub2RlLnZhbHVlLCBoYXJkbGluZV07XG4gICAgICAgIGNhc2UgXCJlc0NvbW1lbnRcIjpcbiAgICAgICAgICByZXR1cm4gW1wiey8qIFwiLCBub2RlLnZhbHVlLCBcIiAqL31cIl07XG4gICAgICAgIGNhc2UgXCJqc3hcIjpcbiAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICAgICAgY2FzZSBcIm1hdGhcIjpcbiAgICAgICAgICByZXR1cm4gW1wiJCRcIiwgaGFyZGxpbmUsIG5vZGUudmFsdWUgPyBbLi4ucmVwbGFjZVRleHRFbmRPZkxpbmUobm9kZS52YWx1ZSwgaGFyZGxpbmUpLCBoYXJkbGluZV0gOiBcIlwiLCBcIiQkXCJdO1xuICAgICAgICBjYXNlIFwiaW5saW5lTWF0aFwiOiB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGxvY1N0YXJ0KG5vZGUpLCBsb2NFbmQobm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ0YWJsZVJvd1wiOlxuICAgICAgICBjYXNlIFwibGlzdEl0ZW1cIjpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWFya2Rvd24gdHlwZSAke0pTT04uc3RyaW5naWZ5KG5vZGUudHlwZSl9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50TGlzdEl0ZW0ocGF0aCwgb3B0aW9ucywgcHJpbnQsIGxpc3RQcmVmaXgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBwcmVmaXggPSBub2RlLmNoZWNrZWQgPT09IG51bGwgPyBcIlwiIDogbm9kZS5jaGVja2VkID8gXCJbeF0gXCIgOiBcIlsgXSBcIjtcbiAgICAgIHJldHVybiBbcHJlZml4LCBwcmludENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50LCB7XG4gICAgICAgIHByb2Nlc3NvcjogKGNoaWxkUGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgY2hpbGRQYXRoLmdldFZhbHVlKCkudHlwZSAhPT0gXCJsaXN0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBhbGlnbihcIiBcIi5yZXBlYXQocHJlZml4Lmxlbmd0aCksIHByaW50KCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBcIiBcIi5yZXBlYXQoY2xhbXAob3B0aW9ucy50YWJXaWR0aCAtIGxpc3RQcmVmaXgubGVuZ3RoLCAwLCAzKSk7XG4gICAgICAgICAgcmV0dXJuIFthbGlnbm1lbnQsIGFsaWduKGFsaWdubWVudCwgcHJpbnQoKSldO1xuICAgICAgICB9XG4gICAgICB9KV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFsaWduTGlzdFByZWZpeChwcmVmaXgsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxTcGFjZXMgPSBnZXRBZGRpdGlvbmFsU3BhY2VzKCk7XG4gICAgICByZXR1cm4gcHJlZml4ICsgXCIgXCIucmVwZWF0KGFkZGl0aW9uYWxTcGFjZXMgPj0gNCA/IDAgOiBhZGRpdGlvbmFsU3BhY2VzKTtcbiAgICAgIGZ1bmN0aW9uIGdldEFkZGl0aW9uYWxTcGFjZXMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3RTcGFjZXMgPSBwcmVmaXgubGVuZ3RoICUgb3B0aW9ucy50YWJXaWR0aDtcbiAgICAgICAgcmV0dXJuIHJlc3RTcGFjZXMgPT09IDAgPyAwIDogb3B0aW9ucy50YWJXaWR0aCAtIHJlc3RTcGFjZXM7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE50aExpc3RTaWJsaW5nSW5kZXgobm9kZSwgcGFyZW50Tm9kZSkge1xuICAgICAgcmV0dXJuIGdldE50aFNpYmxpbmdJbmRleChub2RlLCBwYXJlbnROb2RlLCAoc2libGluZ05vZGUpID0+IHNpYmxpbmdOb2RlLm9yZGVyZWQgPT09IG5vZGUub3JkZXJlZCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE50aFNpYmxpbmdJbmRleChub2RlLCBwYXJlbnROb2RlLCBjb25kaXRpb24pIHtcbiAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgZm9yIChjb25zdCBjaGlsZE5vZGUgb2YgcGFyZW50Tm9kZS5jaGlsZHJlbikge1xuICAgICAgICBpZiAoY2hpbGROb2RlLnR5cGUgPT09IG5vZGUudHlwZSAmJiBjb25kaXRpb24oY2hpbGROb2RlKSkge1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hpbGROb2RlID09PSBub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEFuY2VzdG9yQ291bnRlcihwYXRoLCB0eXBlT3JUeXBlcykge1xuICAgICAgY29uc3QgdHlwZXMgPSBBcnJheS5pc0FycmF5KHR5cGVPclR5cGVzKSA/IHR5cGVPclR5cGVzIDogW3R5cGVPclR5cGVzXTtcbiAgICAgIGxldCBjb3VudGVyID0gLTE7XG4gICAgICBsZXQgYW5jZXN0b3JOb2RlO1xuICAgICAgd2hpbGUgKGFuY2VzdG9yTm9kZSA9IHBhdGguZ2V0UGFyZW50Tm9kZSgrK2NvdW50ZXIpKSB7XG4gICAgICAgIGlmICh0eXBlcy5pbmNsdWRlcyhhbmNlc3Rvck5vZGUudHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gY291bnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRBbmNlc3Rvck5vZGUocGF0aCwgdHlwZU9yVHlwZXMpIHtcbiAgICAgIGNvbnN0IGNvdW50ZXIgPSBnZXRBbmNlc3RvckNvdW50ZXIocGF0aCwgdHlwZU9yVHlwZXMpO1xuICAgICAgcmV0dXJuIGNvdW50ZXIgPT09IC0xID8gbnVsbCA6IHBhdGguZ2V0UGFyZW50Tm9kZShjb3VudGVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRMaW5lKHBhdGgsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucy5wcm9zZVdyYXAgPT09IFwicHJlc2VydmVcIiAmJiB2YWx1ZSA9PT0gXCJcXG5cIikge1xuICAgICAgICByZXR1cm4gaGFyZGxpbmU7XG4gICAgICB9XG4gICAgICBjb25zdCBpc0JyZWFrYWJsZSA9IG9wdGlvbnMucHJvc2VXcmFwID09PSBcImFsd2F5c1wiICYmICFnZXRBbmNlc3Rvck5vZGUocGF0aCwgU0lOR0xFX0xJTkVfTk9ERV9UWVBFUyk7XG4gICAgICByZXR1cm4gdmFsdWUgIT09IFwiXCIgPyBpc0JyZWFrYWJsZSA/IGxpbmUgOiBcIiBcIiA6IGlzQnJlYWthYmxlID8gc29mdGxpbmUgOiBcIlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFRhYmxlKHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgY29sdW1uTWF4V2lkdGhzID0gW107XG4gICAgICBjb25zdCBjb250ZW50cyA9IHBhdGgubWFwKChyb3dQYXRoKSA9PiByb3dQYXRoLm1hcCgoY2VsbFBhdGgsIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBwcmludERvY1RvU3RyaW5nKHByaW50KCksIG9wdGlvbnMpLmZvcm1hdHRlZDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBnZXRTdHJpbmdXaWR0aCh0ZXh0KTtcbiAgICAgICAgY29sdW1uTWF4V2lkdGhzW2NvbHVtbkluZGV4XSA9IE1hdGgubWF4KGNvbHVtbk1heFdpZHRoc1tjb2x1bW5JbmRleF0gfHwgMywgd2lkdGgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRleHQsXG4gICAgICAgICAgd2lkdGhcbiAgICAgICAgfTtcbiAgICAgIH0sIFwiY2hpbGRyZW5cIiksIFwiY2hpbGRyZW5cIik7XG4gICAgICBjb25zdCBhbGlnbmVkVGFibGUgPSBwcmludFRhYmxlQ29udGVudHMoZmFsc2UpO1xuICAgICAgaWYgKG9wdGlvbnMucHJvc2VXcmFwICE9PSBcIm5ldmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIFticmVha1BhcmVudCwgYWxpZ25lZFRhYmxlXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbXBhY3RUYWJsZSA9IHByaW50VGFibGVDb250ZW50cyh0cnVlKTtcbiAgICAgIHJldHVybiBbYnJlYWtQYXJlbnQsIGdyb3VwKGlmQnJlYWsoY29tcGFjdFRhYmxlLCBhbGlnbmVkVGFibGUpKV07XG4gICAgICBmdW5jdGlvbiBwcmludFRhYmxlQ29udGVudHMoaXNDb21wYWN0KSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW3ByaW50Um93KGNvbnRlbnRzWzBdLCBpc0NvbXBhY3QpLCBwcmludEFsaWduKGlzQ29tcGFjdCldO1xuICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHBhcnRzLnB1c2goam9pbihoYXJkbGluZVdpdGhvdXRCcmVha1BhcmVudCwgY29udGVudHMuc2xpY2UoMSkubWFwKChyb3dDb250ZW50cykgPT4gcHJpbnRSb3cocm93Q29udGVudHMsIGlzQ29tcGFjdCkpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGpvaW4oaGFyZGxpbmVXaXRob3V0QnJlYWtQYXJlbnQsIHBhcnRzKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHByaW50QWxpZ24oaXNDb21wYWN0KSB7XG4gICAgICAgIGNvbnN0IGFsaWduMiA9IGNvbHVtbk1heFdpZHRocy5tYXAoKHdpZHRoLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFsaWduMyA9IG5vZGUuYWxpZ25baW5kZXhdO1xuICAgICAgICAgIGNvbnN0IGZpcnN0ID0gYWxpZ24zID09PSBcImNlbnRlclwiIHx8IGFsaWduMyA9PT0gXCJsZWZ0XCIgPyBcIjpcIiA6IFwiLVwiO1xuICAgICAgICAgIGNvbnN0IGxhc3QgPSBhbGlnbjMgPT09IFwiY2VudGVyXCIgfHwgYWxpZ24zID09PSBcInJpZ2h0XCIgPyBcIjpcIiA6IFwiLVwiO1xuICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IGlzQ29tcGFjdCA/IFwiLVwiIDogXCItXCIucmVwZWF0KHdpZHRoIC0gMik7XG4gICAgICAgICAgcmV0dXJuIGAke2ZpcnN0fSR7bWlkZGxlfSR7bGFzdH1gO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGB8ICR7YWxpZ24yLmpvaW4oXCIgfCBcIil9IHxgO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcHJpbnRSb3cocm93Q29udGVudHMsIGlzQ29tcGFjdCkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gcm93Q29udGVudHMubWFwKCh7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICB3aWR0aFxuICAgICAgICB9LCBjb2x1bW5JbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChpc0NvbXBhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzcGFjZXMgPSBjb2x1bW5NYXhXaWR0aHNbY29sdW1uSW5kZXhdIC0gd2lkdGg7XG4gICAgICAgICAgY29uc3QgYWxpZ24yID0gbm9kZS5hbGlnbltjb2x1bW5JbmRleF07XG4gICAgICAgICAgbGV0IGJlZm9yZSA9IDA7XG4gICAgICAgICAgaWYgKGFsaWduMiA9PT0gXCJyaWdodFwiKSB7XG4gICAgICAgICAgICBiZWZvcmUgPSBzcGFjZXM7XG4gICAgICAgICAgfSBlbHNlIGlmIChhbGlnbjIgPT09IFwiY2VudGVyXCIpIHtcbiAgICAgICAgICAgIGJlZm9yZSA9IE1hdGguZmxvb3Ioc3BhY2VzIC8gMik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFmdGVyID0gc3BhY2VzIC0gYmVmb3JlO1xuICAgICAgICAgIHJldHVybiBgJHtcIiBcIi5yZXBlYXQoYmVmb3JlKX0ke3RleHR9JHtcIiBcIi5yZXBlYXQoYWZ0ZXIpfWA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYHwgJHtjb2x1bW5zLmpvaW4oXCIgfCBcIil9IHxgO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFJvb3QocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZVJhbmdlcyA9IFtdO1xuICAgICAgbGV0IGlnbm9yZVN0YXJ0ID0gbnVsbDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgIH0gPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBmb3IgKGNvbnN0IFtpbmRleCwgY2hpbGROb2RlXSBvZiBjaGlsZHJlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgc3dpdGNoIChpc1ByZXR0aWVySWdub3JlKGNoaWxkTm9kZSkpIHtcbiAgICAgICAgICBjYXNlIFwic3RhcnRcIjpcbiAgICAgICAgICAgIGlmIChpZ25vcmVTdGFydCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZ25vcmVTdGFydCA9IHtcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IGNoaWxkTm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICBpZiAoaWdub3JlU3RhcnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgaWdub3JlUmFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBpZ25vcmVTdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IHtcbiAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBjaGlsZE5vZGUucG9zaXRpb24uc3RhcnQub2Zmc2V0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWdub3JlU3RhcnQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJpbnRDaGlsZHJlbihwYXRoLCBvcHRpb25zLCBwcmludCwge1xuICAgICAgICBwcm9jZXNzb3I6IChjaGlsZFBhdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGlnbm9yZVJhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVSYW5nZSA9IGlnbm9yZVJhbmdlc1swXTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gaWdub3JlUmFuZ2Uuc3RhcnQuaW5kZXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbltpZ25vcmVSYW5nZS5zdGFydC5pbmRleF0udmFsdWUsIG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGlnbm9yZVJhbmdlLnN0YXJ0Lm9mZnNldCwgaWdub3JlUmFuZ2UuZW5kLm9mZnNldCksIGNoaWxkcmVuW2lnbm9yZVJhbmdlLmVuZC5pbmRleF0udmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlnbm9yZVJhbmdlLnN0YXJ0LmluZGV4IDwgaW5kZXggJiYgaW5kZXggPCBpZ25vcmVSYW5nZS5lbmQuaW5kZXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSBpZ25vcmVSYW5nZS5lbmQuaW5kZXgpIHtcbiAgICAgICAgICAgICAgaWdub3JlUmFuZ2VzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByaW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50LCBldmVudHMgPSB7fSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwb3N0cHJvY2Vzc29yXG4gICAgICB9ID0gZXZlbnRzO1xuICAgICAgY29uc3QgcHJvY2Vzc29yID0gZXZlbnRzLnByb2Nlc3NvciB8fCAoKCkgPT4gcHJpbnQoKSk7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgIGxldCBsYXN0Q2hpbGROb2RlO1xuICAgICAgcGF0aC5lYWNoKChjaGlsZFBhdGgsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkUGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzb3IoY2hpbGRQYXRoLCBpbmRleCk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIHBhcnRzLFxuICAgICAgICAgICAgcHJldk5vZGU6IGxhc3RDaGlsZE5vZGUsXG4gICAgICAgICAgICBwYXJlbnROb2RlOiBub2RlLFxuICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHNob3VsZFByZVByaW50SGFyZGxpbmUoY2hpbGROb2RlLCBkYXRhKSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgICBpZiAobGFzdENoaWxkTm9kZSAmJiBUUkFJTElOR19IQVJETElORV9OT0RFUy5oYXMobGFzdENoaWxkTm9kZS50eXBlKSkge1xuICAgICAgICAgICAgICBpZiAoc2hvdWxkUHJlUHJpbnRUcmlwbGVIYXJkbGluZShjaGlsZE5vZGUsIGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChzaG91bGRQcmVQcmludERvdWJsZUhhcmRsaW5lKGNoaWxkTm9kZSwgZGF0YSkgfHwgc2hvdWxkUHJlUHJpbnRUcmlwbGVIYXJkbGluZShjaGlsZE5vZGUsIGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHNob3VsZFByZVByaW50VHJpcGxlSGFyZGxpbmUoY2hpbGROb2RlLCBkYXRhKSkge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goaGFyZGxpbmUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICBsYXN0Q2hpbGROb2RlID0gY2hpbGROb2RlO1xuICAgICAgICB9XG4gICAgICB9LCBcImNoaWxkcmVuXCIpO1xuICAgICAgcmV0dXJuIHBvc3Rwcm9jZXNzb3IgPyBwb3N0cHJvY2Vzc29yKHBhcnRzKSA6IHBhcnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRMYXN0RGVzY2VuZGFudE5vZGUobm9kZSkge1xuICAgICAgbGV0IGN1cnJlbnQgPSBub2RlO1xuICAgICAgd2hpbGUgKGlzTm9uRW1wdHlBcnJheShjdXJyZW50LmNoaWxkcmVuKSkge1xuICAgICAgICBjdXJyZW50ID0gZ2V0TGFzdChjdXJyZW50LmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1ByZXR0aWVySWdub3JlKG5vZGUpIHtcbiAgICAgIGxldCBtYXRjaDtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiaHRtbFwiKSB7XG4gICAgICAgIG1hdGNoID0gbm9kZS52YWx1ZS5tYXRjaCgvXjwhLS1cXHMqcHJldHRpZXItaWdub3JlKD86LShzdGFydHxlbmQpKT9cXHMqLS0+JC8pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNvbW1lbnQ7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiZXNDb21tZW50XCIpIHtcbiAgICAgICAgICBjb21tZW50ID0gbm9kZTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IFwicGFyYWdyYXBoXCIgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgbm9kZS5jaGlsZHJlblswXS50eXBlID09PSBcImVzQ29tbWVudFwiKSB7XG4gICAgICAgICAgY29tbWVudCA9IG5vZGUuY2hpbGRyZW5bMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgICBtYXRjaCA9IGNvbW1lbnQudmFsdWUubWF0Y2goL15wcmV0dGllci1pZ25vcmUoPzotKHN0YXJ0fGVuZCkpPyQvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gfHwgXCJuZXh0XCIgOiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2hvdWxkUHJlUHJpbnRIYXJkbGluZShub2RlLCBkYXRhKSB7XG4gICAgICBjb25zdCBpc0ZpcnN0Tm9kZSA9IGRhdGEucGFydHMubGVuZ3RoID09PSAwO1xuICAgICAgY29uc3QgaXNJbmxpbmVOb2RlID0gSU5MSU5FX05PREVfVFlQRVMuaW5jbHVkZXMobm9kZS50eXBlKTtcbiAgICAgIGNvbnN0IGlzSW5saW5lSFRNTCA9IG5vZGUudHlwZSA9PT0gXCJodG1sXCIgJiYgSU5MSU5FX05PREVfV1JBUFBFUl9UWVBFUy5pbmNsdWRlcyhkYXRhLnBhcmVudE5vZGUudHlwZSk7XG4gICAgICByZXR1cm4gIWlzRmlyc3ROb2RlICYmICFpc0lubGluZU5vZGUgJiYgIWlzSW5saW5lSFRNTDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2hvdWxkUHJlUHJpbnREb3VibGVIYXJkbGluZShub2RlLCBkYXRhKSB7XG4gICAgICB2YXIgX2RhdGEkcHJldk5vZGUsIF9kYXRhJHByZXZOb2RlMiwgX2RhdGEkcHJldk5vZGUzO1xuICAgICAgY29uc3QgaXNTZXF1ZW5jZSA9IChkYXRhLnByZXZOb2RlICYmIGRhdGEucHJldk5vZGUudHlwZSkgPT09IG5vZGUudHlwZTtcbiAgICAgIGNvbnN0IGlzU2libGluZ05vZGUgPSBpc1NlcXVlbmNlICYmIFNJQkxJTkdfTk9ERV9UWVBFUy5oYXMobm9kZS50eXBlKTtcbiAgICAgIGNvbnN0IGlzSW5UaWdodExpc3RJdGVtID0gZGF0YS5wYXJlbnROb2RlLnR5cGUgPT09IFwibGlzdEl0ZW1cIiAmJiAhZGF0YS5wYXJlbnROb2RlLmxvb3NlO1xuICAgICAgY29uc3QgaXNQcmV2Tm9kZUxvb3NlTGlzdEl0ZW0gPSAoKF9kYXRhJHByZXZOb2RlID0gZGF0YS5wcmV2Tm9kZSkgPT09IG51bGwgfHwgX2RhdGEkcHJldk5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kYXRhJHByZXZOb2RlLnR5cGUpID09PSBcImxpc3RJdGVtXCIgJiYgZGF0YS5wcmV2Tm9kZS5sb29zZTtcbiAgICAgIGNvbnN0IGlzUHJldk5vZGVQcmV0dGllcklnbm9yZSA9IGlzUHJldHRpZXJJZ25vcmUoZGF0YS5wcmV2Tm9kZSkgPT09IFwibmV4dFwiO1xuICAgICAgY29uc3QgaXNCbG9ja0h0bWxXaXRob3V0QmxhbmtMaW5lQmV0d2VlblByZXZIdG1sID0gbm9kZS50eXBlID09PSBcImh0bWxcIiAmJiAoKF9kYXRhJHByZXZOb2RlMiA9IGRhdGEucHJldk5vZGUpID09PSBudWxsIHx8IF9kYXRhJHByZXZOb2RlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RhdGEkcHJldk5vZGUyLnR5cGUpID09PSBcImh0bWxcIiAmJiBkYXRhLnByZXZOb2RlLnBvc2l0aW9uLmVuZC5saW5lICsgMSA9PT0gbm9kZS5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgY29uc3QgaXNIdG1sRGlyZWN0QWZ0ZXJMaXN0SXRlbSA9IG5vZGUudHlwZSA9PT0gXCJodG1sXCIgJiYgZGF0YS5wYXJlbnROb2RlLnR5cGUgPT09IFwibGlzdEl0ZW1cIiAmJiAoKF9kYXRhJHByZXZOb2RlMyA9IGRhdGEucHJldk5vZGUpID09PSBudWxsIHx8IF9kYXRhJHByZXZOb2RlMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RhdGEkcHJldk5vZGUzLnR5cGUpID09PSBcInBhcmFncmFwaFwiICYmIGRhdGEucHJldk5vZGUucG9zaXRpb24uZW5kLmxpbmUgKyAxID09PSBub2RlLnBvc2l0aW9uLnN0YXJ0LmxpbmU7XG4gICAgICByZXR1cm4gaXNQcmV2Tm9kZUxvb3NlTGlzdEl0ZW0gfHwgIShpc1NpYmxpbmdOb2RlIHx8IGlzSW5UaWdodExpc3RJdGVtIHx8IGlzUHJldk5vZGVQcmV0dGllcklnbm9yZSB8fCBpc0Jsb2NrSHRtbFdpdGhvdXRCbGFua0xpbmVCZXR3ZWVuUHJldkh0bWwgfHwgaXNIdG1sRGlyZWN0QWZ0ZXJMaXN0SXRlbSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZFByZVByaW50VHJpcGxlSGFyZGxpbmUobm9kZSwgZGF0YSkge1xuICAgICAgY29uc3QgaXNQcmV2Tm9kZUxpc3QgPSBkYXRhLnByZXZOb2RlICYmIGRhdGEucHJldk5vZGUudHlwZSA9PT0gXCJsaXN0XCI7XG4gICAgICBjb25zdCBpc0luZGVudGVkQ29kZSA9IG5vZGUudHlwZSA9PT0gXCJjb2RlXCIgJiYgbm9kZS5pc0luZGVudGVkO1xuICAgICAgcmV0dXJuIGlzUHJldk5vZGVMaXN0ICYmIGlzSW5kZW50ZWRDb2RlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzaG91bGRSZW1haW5UaGVTYW1lQ29udGVudChwYXRoKSB7XG4gICAgICBjb25zdCBhbmNlc3Rvck5vZGUgPSBnZXRBbmNlc3Rvck5vZGUocGF0aCwgW1wibGlua1JlZmVyZW5jZVwiLCBcImltYWdlUmVmZXJlbmNlXCJdKTtcbiAgICAgIHJldHVybiBhbmNlc3Rvck5vZGUgJiYgKGFuY2VzdG9yTm9kZS50eXBlICE9PSBcImxpbmtSZWZlcmVuY2VcIiB8fCBhbmNlc3Rvck5vZGUucmVmZXJlbmNlVHlwZSAhPT0gXCJmdWxsXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFVybCh1cmwsIGRhbmdlcm91c0NoYXJPckNoYXJzID0gW10pIHtcbiAgICAgIGNvbnN0IGRhbmdlcm91c0NoYXJzID0gW1wiIFwiLCAuLi5BcnJheS5pc0FycmF5KGRhbmdlcm91c0NoYXJPckNoYXJzKSA/IGRhbmdlcm91c0NoYXJPckNoYXJzIDogW2Rhbmdlcm91c0NoYXJPckNoYXJzXV07XG4gICAgICByZXR1cm4gbmV3IFJlZ0V4cChkYW5nZXJvdXNDaGFycy5tYXAoKHgpID0+IGBcXFxcJHt4fWApLmpvaW4oXCJ8XCIpKS50ZXN0KHVybCkgPyBgPCR7dXJsfT5gIDogdXJsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFRpdGxlKHRpdGxlLCBvcHRpb25zLCBwcmludFNwYWNlID0gdHJ1ZSkge1xuICAgICAgaWYgKCF0aXRsZSkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmIChwcmludFNwYWNlKSB7XG4gICAgICAgIHJldHVybiBcIiBcIiArIHByaW50VGl0bGUodGl0bGUsIG9wdGlvbnMsIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZSgvXFxcXChbXCInKV0pL2csIFwiJDFcIik7XG4gICAgICBpZiAodGl0bGUuaW5jbHVkZXMoJ1wiJykgJiYgdGl0bGUuaW5jbHVkZXMoXCInXCIpICYmICF0aXRsZS5pbmNsdWRlcyhcIilcIikpIHtcbiAgICAgICAgcmV0dXJuIGAoJHt0aXRsZX0pYDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpbmdsZUNvdW50ID0gdGl0bGUuc3BsaXQoXCInXCIpLmxlbmd0aCAtIDE7XG4gICAgICBjb25zdCBkb3VibGVDb3VudCA9IHRpdGxlLnNwbGl0KCdcIicpLmxlbmd0aCAtIDE7XG4gICAgICBjb25zdCBxdW90ZSA9IHNpbmdsZUNvdW50ID4gZG91YmxlQ291bnQgPyAnXCInIDogZG91YmxlQ291bnQgPiBzaW5nbGVDb3VudCA/IFwiJ1wiIDogb3B0aW9ucy5zaW5nbGVRdW90ZSA/IFwiJ1wiIDogJ1wiJztcbiAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZSgvXFxcXC8sIFwiXFxcXFxcXFxcIik7XG4gICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UobmV3IFJlZ0V4cChgKCR7cXVvdGV9KWAsIFwiZ1wiKSwgXCJcXFxcJDFcIik7XG4gICAgICByZXR1cm4gYCR7cXVvdGV9JHt0aXRsZX0ke3F1b3RlfWA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNsYW1wKHZhbHVlLCBtaW4sIG1heCkge1xuICAgICAgcmV0dXJuIHZhbHVlIDwgbWluID8gbWluIDogdmFsdWUgPiBtYXggPyBtYXggOiB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzUHJldHRpZXJJZ25vcmUocGF0aCkge1xuICAgICAgY29uc3QgaW5kZXggPSBOdW1iZXIocGF0aC5nZXROYW1lKCkpO1xuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByZXZOb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCkuY2hpbGRyZW5baW5kZXggLSAxXTtcbiAgICAgIHJldHVybiBpc1ByZXR0aWVySWdub3JlKHByZXZOb2RlKSA9PT0gXCJuZXh0XCI7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByZXByb2Nlc3MsXG4gICAgICBwcmludDogZ2VuZXJpY1ByaW50LFxuICAgICAgZW1iZWQsXG4gICAgICBtYXNzYWdlQXN0Tm9kZTogY2xlYW4sXG4gICAgICBoYXNQcmV0dGllcklnbm9yZSxcbiAgICAgIGluc2VydFByYWdtYVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfb3B0aW9uczUgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLW1hcmtkb3duL29wdGlvbnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBjb21tb25PcHRpb25zID0gcmVxdWlyZV9jb21tb25fb3B0aW9ucygpO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByb3NlV3JhcDogY29tbW9uT3B0aW9ucy5wcm9zZVdyYXAsXG4gICAgICBzaW5nbGVRdW90ZTogY29tbW9uT3B0aW9ucy5zaW5nbGVRdW90ZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcGFyc2VyczUgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLW1hcmtkb3duL3BhcnNlcnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGdldCByZW1hcmsoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItbWFya2Rvd24uanNcIikucGFyc2Vycy5yZW1hcms7XG4gICAgICB9LFxuICAgICAgZ2V0IG1hcmtkb3duKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLW1hcmtkb3duLmpzXCIpLnBhcnNlcnMucmVtYXJrO1xuICAgICAgfSxcbiAgICAgIGdldCBtZHgoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItbWFya2Rvd24uanNcIikucGFyc2Vycy5tZHg7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9NYXJrZG93biA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvbGluZ3Vpc3QtbGFuZ3VhZ2VzL2RhdGEvTWFya2Rvd24uanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJNYXJrZG93blwiLFxuICAgICAgdHlwZTogXCJwcm9zZVwiLFxuICAgICAgY29sb3I6IFwiIzA4M2ZhMVwiLFxuICAgICAgYWxpYXNlczogW1wicGFuZG9jXCJdLFxuICAgICAgYWNlTW9kZTogXCJtYXJrZG93blwiLFxuICAgICAgY29kZW1pcnJvck1vZGU6IFwiZ2ZtXCIsXG4gICAgICBjb2RlbWlycm9yTWltZVR5cGU6IFwidGV4dC94LWdmbVwiLFxuICAgICAgd3JhcDogdHJ1ZSxcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5tZFwiLCBcIi5saXZlbWRcIiwgXCIubWFya2Rvd25cIiwgXCIubWRvd25cIiwgXCIubWR3blwiLCBcIi5tZHhcIiwgXCIubWtkXCIsIFwiLm1rZG5cIiwgXCIubWtkb3duXCIsIFwiLnJvbm5cIiwgXCIuc2NkXCIsIFwiLndvcmtib29rXCJdLFxuICAgICAgZmlsZW5hbWVzOiBbXCJjb250ZW50cy5sclwiXSxcbiAgICAgIHRtU2NvcGU6IFwic291cmNlLmdmbVwiLFxuICAgICAgbGFuZ3VhZ2VJZDogMjIyXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sYW5ndWFnZV9tYXJrZG93biA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtbWFya2Rvd24vaW5kZXguanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBjcmVhdGVMYW5ndWFnZSA9IHJlcXVpcmVfY3JlYXRlX2xhbmd1YWdlKCk7XG4gICAgdmFyIHByaW50ZXIgPSByZXF1aXJlX3ByaW50ZXJfbWFya2Rvd24oKTtcbiAgICB2YXIgb3B0aW9ucyA9IHJlcXVpcmVfb3B0aW9uczUoKTtcbiAgICB2YXIgcGFyc2VycyA9IHJlcXVpcmVfcGFyc2VyczUoKTtcbiAgICB2YXIgbGFuZ3VhZ2VzID0gW2NyZWF0ZUxhbmd1YWdlKHJlcXVpcmVfTWFya2Rvd24oKSwgKGRhdGEpID0+ICh7XG4gICAgICBzaW5jZTogXCIxLjguMFwiLFxuICAgICAgcGFyc2VyczogW1wibWFya2Rvd25cIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wibWFya2Rvd25cIl0sXG4gICAgICBmaWxlbmFtZXM6IFsuLi5kYXRhLmZpbGVuYW1lcywgXCJSRUFETUVcIl0sXG4gICAgICBleHRlbnNpb25zOiBkYXRhLmV4dGVuc2lvbnMuZmlsdGVyKChleHRlbnNpb24pID0+IGV4dGVuc2lvbiAhPT0gXCIubWR4XCIpXG4gICAgfSkpLCBjcmVhdGVMYW5ndWFnZShyZXF1aXJlX01hcmtkb3duKCksICgpID0+ICh7XG4gICAgICBuYW1lOiBcIk1EWFwiLFxuICAgICAgc2luY2U6IFwiMS4xNS4wXCIsXG4gICAgICBwYXJzZXJzOiBbXCJtZHhcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wibWR4XCJdLFxuICAgICAgZmlsZW5hbWVzOiBbXSxcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5tZHhcIl1cbiAgICB9KSldO1xuICAgIHZhciBwcmludGVycyA9IHtcbiAgICAgIG1kYXN0OiBwcmludGVyXG4gICAgfTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsYW5ndWFnZXMsXG4gICAgICBvcHRpb25zLFxuICAgICAgcHJpbnRlcnMsXG4gICAgICBwYXJzZXJzXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9jbGVhbjUgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvY2xlYW4uanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBpc0Zyb250TWF0dGVyTm9kZVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICB2YXIgaWdub3JlZFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJzb3VyY2VTcGFuXCIsIFwic3RhcnRTb3VyY2VTcGFuXCIsIFwiZW5kU291cmNlU3BhblwiLCBcIm5hbWVTcGFuXCIsIFwidmFsdWVTcGFuXCJdKTtcbiAgICBmdW5jdGlvbiBjbGVhbihhc3QsIG5ld05vZGUpIHtcbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJ0ZXh0XCIgfHwgYXN0LnR5cGUgPT09IFwiY29tbWVudFwiKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGlzRnJvbnRNYXR0ZXJOb2RlKGFzdCkgfHwgYXN0LnR5cGUgPT09IFwieWFtbFwiIHx8IGFzdC50eXBlID09PSBcInRvbWxcIikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJhdHRyaWJ1dGVcIikge1xuICAgICAgICBkZWxldGUgbmV3Tm9kZS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhc3QudHlwZSA9PT0gXCJkb2NUeXBlXCIpIHtcbiAgICAgICAgZGVsZXRlIG5ld05vZGUudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGNsZWFuLmlnbm9yZWRQcm9wZXJ0aWVzID0gaWdub3JlZFByb3BlcnRpZXM7XG4gICAgbW9kdWxlMi5leHBvcnRzID0gY2xlYW47XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfY29uc3RhbnRzX2V2YWx1YXRlMiA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtaHRtbC9jb25zdGFudHMuZXZhbHVhdGUuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIENTU19ESVNQTEFZX1RBR1M6IHtcbiAgICAgICAgYXJlYTogXCJub25lXCIsXG4gICAgICAgIGJhc2U6IFwibm9uZVwiLFxuICAgICAgICBiYXNlZm9udDogXCJub25lXCIsXG4gICAgICAgIGRhdGFsaXN0OiBcIm5vbmVcIixcbiAgICAgICAgaGVhZDogXCJub25lXCIsXG4gICAgICAgIGxpbms6IFwibm9uZVwiLFxuICAgICAgICBtZXRhOiBcIm5vbmVcIixcbiAgICAgICAgbm9lbWJlZDogXCJub25lXCIsXG4gICAgICAgIG5vZnJhbWVzOiBcIm5vbmVcIixcbiAgICAgICAgcGFyYW06IFwiYmxvY2tcIixcbiAgICAgICAgcnA6IFwibm9uZVwiLFxuICAgICAgICBzY3JpcHQ6IFwiYmxvY2tcIixcbiAgICAgICAgc291cmNlOiBcImJsb2NrXCIsXG4gICAgICAgIHN0eWxlOiBcIm5vbmVcIixcbiAgICAgICAgdGVtcGxhdGU6IFwiaW5saW5lXCIsXG4gICAgICAgIHRyYWNrOiBcImJsb2NrXCIsXG4gICAgICAgIHRpdGxlOiBcIm5vbmVcIixcbiAgICAgICAgaHRtbDogXCJibG9ja1wiLFxuICAgICAgICBib2R5OiBcImJsb2NrXCIsXG4gICAgICAgIGFkZHJlc3M6IFwiYmxvY2tcIixcbiAgICAgICAgYmxvY2txdW90ZTogXCJibG9ja1wiLFxuICAgICAgICBjZW50ZXI6IFwiYmxvY2tcIixcbiAgICAgICAgZGl2OiBcImJsb2NrXCIsXG4gICAgICAgIGZpZ3VyZTogXCJibG9ja1wiLFxuICAgICAgICBmaWdjYXB0aW9uOiBcImJsb2NrXCIsXG4gICAgICAgIGZvb3RlcjogXCJibG9ja1wiLFxuICAgICAgICBmb3JtOiBcImJsb2NrXCIsXG4gICAgICAgIGhlYWRlcjogXCJibG9ja1wiLFxuICAgICAgICBocjogXCJibG9ja1wiLFxuICAgICAgICBsZWdlbmQ6IFwiYmxvY2tcIixcbiAgICAgICAgbGlzdGluZzogXCJibG9ja1wiLFxuICAgICAgICBtYWluOiBcImJsb2NrXCIsXG4gICAgICAgIHA6IFwiYmxvY2tcIixcbiAgICAgICAgcGxhaW50ZXh0OiBcImJsb2NrXCIsXG4gICAgICAgIHByZTogXCJibG9ja1wiLFxuICAgICAgICB4bXA6IFwiYmxvY2tcIixcbiAgICAgICAgc2xvdDogXCJjb250ZW50c1wiLFxuICAgICAgICBydWJ5OiBcInJ1YnlcIixcbiAgICAgICAgcnQ6IFwicnVieS10ZXh0XCIsXG4gICAgICAgIGFydGljbGU6IFwiYmxvY2tcIixcbiAgICAgICAgYXNpZGU6IFwiYmxvY2tcIixcbiAgICAgICAgaDE6IFwiYmxvY2tcIixcbiAgICAgICAgaDI6IFwiYmxvY2tcIixcbiAgICAgICAgaDM6IFwiYmxvY2tcIixcbiAgICAgICAgaDQ6IFwiYmxvY2tcIixcbiAgICAgICAgaDU6IFwiYmxvY2tcIixcbiAgICAgICAgaDY6IFwiYmxvY2tcIixcbiAgICAgICAgaGdyb3VwOiBcImJsb2NrXCIsXG4gICAgICAgIG5hdjogXCJibG9ja1wiLFxuICAgICAgICBzZWN0aW9uOiBcImJsb2NrXCIsXG4gICAgICAgIGRpcjogXCJibG9ja1wiLFxuICAgICAgICBkZDogXCJibG9ja1wiLFxuICAgICAgICBkbDogXCJibG9ja1wiLFxuICAgICAgICBkdDogXCJibG9ja1wiLFxuICAgICAgICBvbDogXCJibG9ja1wiLFxuICAgICAgICB1bDogXCJibG9ja1wiLFxuICAgICAgICBsaTogXCJsaXN0LWl0ZW1cIixcbiAgICAgICAgdGFibGU6IFwidGFibGVcIixcbiAgICAgICAgY2FwdGlvbjogXCJ0YWJsZS1jYXB0aW9uXCIsXG4gICAgICAgIGNvbGdyb3VwOiBcInRhYmxlLWNvbHVtbi1ncm91cFwiLFxuICAgICAgICBjb2w6IFwidGFibGUtY29sdW1uXCIsXG4gICAgICAgIHRoZWFkOiBcInRhYmxlLWhlYWRlci1ncm91cFwiLFxuICAgICAgICB0Ym9keTogXCJ0YWJsZS1yb3ctZ3JvdXBcIixcbiAgICAgICAgdGZvb3Q6IFwidGFibGUtZm9vdGVyLWdyb3VwXCIsXG4gICAgICAgIHRyOiBcInRhYmxlLXJvd1wiLFxuICAgICAgICB0ZDogXCJ0YWJsZS1jZWxsXCIsXG4gICAgICAgIHRoOiBcInRhYmxlLWNlbGxcIixcbiAgICAgICAgZmllbGRzZXQ6IFwiYmxvY2tcIixcbiAgICAgICAgYnV0dG9uOiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICBkZXRhaWxzOiBcImJsb2NrXCIsXG4gICAgICAgIHN1bW1hcnk6IFwiYmxvY2tcIixcbiAgICAgICAgZGlhbG9nOiBcImJsb2NrXCIsXG4gICAgICAgIG1ldGVyOiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICBwcm9ncmVzczogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgb2JqZWN0OiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICB2aWRlbzogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgYXVkaW86IFwiaW5saW5lLWJsb2NrXCIsXG4gICAgICAgIHNlbGVjdDogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgb3B0aW9uOiBcImJsb2NrXCIsXG4gICAgICAgIG9wdGdyb3VwOiBcImJsb2NrXCJcbiAgICAgIH0sXG4gICAgICBDU1NfRElTUExBWV9ERUZBVUxUOiBcImlubGluZVwiLFxuICAgICAgQ1NTX1dISVRFX1NQQUNFX1RBR1M6IHtcbiAgICAgICAgbGlzdGluZzogXCJwcmVcIixcbiAgICAgICAgcGxhaW50ZXh0OiBcInByZVwiLFxuICAgICAgICBwcmU6IFwicHJlXCIsXG4gICAgICAgIHhtcDogXCJwcmVcIixcbiAgICAgICAgbm9icjogXCJub3dyYXBcIixcbiAgICAgICAgdGFibGU6IFwiaW5pdGlhbFwiLFxuICAgICAgICB0ZXh0YXJlYTogXCJwcmUtd3JhcFwiXG4gICAgICB9LFxuICAgICAgQ1NTX1dISVRFX1NQQUNFX0RFRkFVTFQ6IFwibm9ybWFsXCJcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2lzX3Vua25vd25fbmFtZXNwYWNlID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1odG1sL3V0aWxzL2lzLXVua25vd24tbmFtZXNwYWNlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBpc1Vua25vd25OYW1lc3BhY2Uobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJlbGVtZW50XCIgJiYgIW5vZGUuaGFzRXhwbGljaXROYW1lc3BhY2UgJiYgIVtcImh0bWxcIiwgXCJzdmdcIl0uaW5jbHVkZXMobm9kZS5uYW1lc3BhY2UpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBpc1Vua25vd25OYW1lc3BhY2U7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfdXRpbHMxMSA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtaHRtbC91dGlscy9pbmRleC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGluZmVyUGFyc2VyQnlMYW5ndWFnZSxcbiAgICAgIGlzRnJvbnRNYXR0ZXJOb2RlXG4gICAgfSA9IHJlcXVpcmVfdXRpbCgpO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBsaW5lLFxuICAgICAgICBoYXJkbGluZSxcbiAgICAgICAgam9pblxuICAgICAgfSxcbiAgICAgIHV0aWxzOiB7XG4gICAgICAgIGdldERvY1BhcnRzLFxuICAgICAgICByZXBsYWNlVGV4dEVuZE9mTGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIENTU19ESVNQTEFZX1RBR1MsXG4gICAgICBDU1NfRElTUExBWV9ERUZBVUxULFxuICAgICAgQ1NTX1dISVRFX1NQQUNFX1RBR1MsXG4gICAgICBDU1NfV0hJVEVfU1BBQ0VfREVGQVVMVFxuICAgIH0gPSByZXF1aXJlX2NvbnN0YW50c19ldmFsdWF0ZTIoKTtcbiAgICB2YXIgaXNVbmtub3duTmFtZXNwYWNlID0gcmVxdWlyZV9pc191bmtub3duX25hbWVzcGFjZSgpO1xuICAgIHZhciBIVE1MX1dISVRFU1BBQ0UgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJcdFwiLCBcIlxcblwiLCBcIlxcZlwiLCBcIlxcclwiLCBcIiBcIl0pO1xuICAgIHZhciBodG1sVHJpbVN0YXJ0ID0gKHN0cmluZykgPT4gc3RyaW5nLnJlcGxhY2UoL15bXFx0XFxuXFxmXFxyIF0rLywgXCJcIik7XG4gICAgdmFyIGh0bWxUcmltRW5kID0gKHN0cmluZykgPT4gc3RyaW5nLnJlcGxhY2UoL1tcXHRcXG5cXGZcXHIgXSskLywgXCJcIik7XG4gICAgdmFyIGh0bWxUcmltID0gKHN0cmluZykgPT4gaHRtbFRyaW1TdGFydChodG1sVHJpbUVuZChzdHJpbmcpKTtcbiAgICB2YXIgaHRtbFRyaW1MZWFkaW5nQmxhbmtMaW5lcyA9IChzdHJpbmcpID0+IHN0cmluZy5yZXBsYWNlKC9eW1xcdFxcZlxcciBdKlxcbi9nLCBcIlwiKTtcbiAgICB2YXIgaHRtbFRyaW1QcmVzZXJ2ZUluZGVudGF0aW9uID0gKHN0cmluZykgPT4gaHRtbFRyaW1MZWFkaW5nQmxhbmtMaW5lcyhodG1sVHJpbUVuZChzdHJpbmcpKTtcbiAgICB2YXIgc3BsaXRCeUh0bWxXaGl0ZXNwYWNlID0gKHN0cmluZykgPT4gc3RyaW5nLnNwbGl0KC9bXFx0XFxuXFxmXFxyIF0rLyk7XG4gICAgdmFyIGdldExlYWRpbmdIdG1sV2hpdGVzcGFjZSA9IChzdHJpbmcpID0+IHN0cmluZy5tYXRjaCgvXltcXHRcXG5cXGZcXHIgXSovKVswXTtcbiAgICB2YXIgZ2V0TGVhZGluZ0FuZFRyYWlsaW5nSHRtbFdoaXRlc3BhY2UgPSAoc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBbLCBsZWFkaW5nV2hpdGVzcGFjZSwgdGV4dCwgdHJhaWxpbmdXaGl0ZXNwYWNlXSA9IHN0cmluZy5tYXRjaCgvXihbXFx0XFxuXFxmXFxyIF0qKSguKj8pKFtcXHRcXG5cXGZcXHIgXSopJC9zKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlYWRpbmdXaGl0ZXNwYWNlLFxuICAgICAgICB0cmFpbGluZ1doaXRlc3BhY2UsXG4gICAgICAgIHRleHRcbiAgICAgIH07XG4gICAgfTtcbiAgICB2YXIgaGFzSHRtbFdoaXRlc3BhY2UgPSAoc3RyaW5nKSA9PiAvW1xcdFxcblxcZlxcciBdLy50ZXN0KHN0cmluZyk7XG4gICAgZnVuY3Rpb24gc2hvdWxkUHJlc2VydmVDb250ZW50KG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiaWVDb25kaXRpb25hbENvbW1lbnRcIiAmJiBub2RlLmxhc3RDaGlsZCAmJiAhbm9kZS5sYXN0Q2hpbGQuaXNTZWxmQ2xvc2luZyAmJiAhbm9kZS5sYXN0Q2hpbGQuZW5kU291cmNlU3Bhbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiaWVDb25kaXRpb25hbENvbW1lbnRcIiAmJiAhbm9kZS5jb21wbGV0ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZUxpa2VOb2RlKG5vZGUpICYmIG5vZGUuY2hpbGRyZW4uc29tZSgoY2hpbGQpID0+IGNoaWxkLnR5cGUgIT09IFwidGV4dFwiICYmIGNoaWxkLnR5cGUgIT09IFwiaW50ZXJwb2xhdGlvblwiKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1Z1ZU5vbkh0bWxCbG9jayhub2RlLCBvcHRpb25zKSAmJiAhaXNTY3JpcHRMaWtlVGFnKG5vZGUpICYmIG5vZGUudHlwZSAhPT0gXCJpbnRlcnBvbGF0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1ByZXR0aWVySWdub3JlKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiYXR0cmlidXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCFub2RlLnBhcmVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIW5vZGUucHJldikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNQcmV0dGllcklnbm9yZShub2RlLnByZXYpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1ByZXR0aWVySWdub3JlKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiY29tbWVudFwiICYmIG5vZGUudmFsdWUudHJpbSgpID09PSBcInByZXR0aWVyLWlnbm9yZVwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1RleHRMaWtlTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcInRleHRcIiB8fCBub2RlLnR5cGUgPT09IFwiY29tbWVudFwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1NjcmlwdExpa2VUYWcobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gXCJlbGVtZW50XCIgJiYgKG5vZGUuZnVsbE5hbWUgPT09IFwic2NyaXB0XCIgfHwgbm9kZS5mdWxsTmFtZSA9PT0gXCJzdHlsZVwiIHx8IG5vZGUuZnVsbE5hbWUgPT09IFwic3ZnOnN0eWxlXCIgfHwgaXNVbmtub3duTmFtZXNwYWNlKG5vZGUpICYmIChub2RlLm5hbWUgPT09IFwic2NyaXB0XCIgfHwgbm9kZS5uYW1lID09PSBcInN0eWxlXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2FuSGF2ZUludGVycG9sYXRpb24obm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4gJiYgIWlzU2NyaXB0TGlrZVRhZyhub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU2Vuc2l0aXZlTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gaXNTY3JpcHRMaWtlVGFnKG5vZGUpIHx8IG5vZGUudHlwZSA9PT0gXCJpbnRlcnBvbGF0aW9uXCIgfHwgaXNJbmRlbnRhdGlvblNlbnNpdGl2ZU5vZGUobm9kZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSW5kZW50YXRpb25TZW5zaXRpdmVOb2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiBnZXROb2RlQ3NzU3R5bGVXaGl0ZVNwYWNlKG5vZGUpLnN0YXJ0c1dpdGgoXCJwcmVcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlTm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBpc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZSA9IF9pc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZU5vZGUoKTtcbiAgICAgIGlmIChpc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZSAmJiAhbm9kZS5wcmV2ICYmIG5vZGUucGFyZW50ICYmIG5vZGUucGFyZW50LnRhZ0RlZmluaXRpb24gJiYgbm9kZS5wYXJlbnQudGFnRGVmaW5pdGlvbi5pZ25vcmVGaXJzdExmKSB7XG4gICAgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiaW50ZXJwb2xhdGlvblwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlO1xuICAgICAgZnVuY3Rpb24gX2lzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlTm9kZSgpIHtcbiAgICAgICAgaWYgKGlzRnJvbnRNYXR0ZXJOb2RlKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgobm9kZS50eXBlID09PSBcInRleHRcIiB8fCBub2RlLnR5cGUgPT09IFwiaW50ZXJwb2xhdGlvblwiKSAmJiBub2RlLnByZXYgJiYgKG5vZGUucHJldi50eXBlID09PSBcInRleHRcIiB8fCBub2RlLnByZXYudHlwZSA9PT0gXCJpbnRlcnBvbGF0aW9uXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFub2RlLnBhcmVudCB8fCBub2RlLnBhcmVudC5jc3NEaXNwbGF5ID09PSBcIm5vbmVcIikge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcmVMaWtlTm9kZShub2RlLnBhcmVudCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5vZGUucHJldiAmJiAobm9kZS5wYXJlbnQudHlwZSA9PT0gXCJyb290XCIgfHwgaXNQcmVMaWtlTm9kZShub2RlKSAmJiBub2RlLnBhcmVudCB8fCBpc1NjcmlwdExpa2VUYWcobm9kZS5wYXJlbnQpIHx8IGlzVnVlQ3VzdG9tQmxvY2sobm9kZS5wYXJlbnQsIG9wdGlvbnMpIHx8ICFpc0ZpcnN0Q2hpbGRMZWFkaW5nU3BhY2VTZW5zaXRpdmVDc3NEaXNwbGF5KG5vZGUucGFyZW50LmNzc0Rpc3BsYXkpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5wcmV2ICYmICFpc05leHRMZWFkaW5nU3BhY2VTZW5zaXRpdmVDc3NEaXNwbGF5KG5vZGUucHJldi5jc3NEaXNwbGF5KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlTm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgICBpZiAoaXNGcm9udE1hdHRlck5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKChub2RlLnR5cGUgPT09IFwidGV4dFwiIHx8IG5vZGUudHlwZSA9PT0gXCJpbnRlcnBvbGF0aW9uXCIpICYmIG5vZGUubmV4dCAmJiAobm9kZS5uZXh0LnR5cGUgPT09IFwidGV4dFwiIHx8IG5vZGUubmV4dC50eXBlID09PSBcImludGVycG9sYXRpb25cIikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIW5vZGUucGFyZW50IHx8IG5vZGUucGFyZW50LmNzc0Rpc3BsYXkgPT09IFwibm9uZVwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZUxpa2VOb2RlKG5vZGUucGFyZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICghbm9kZS5uZXh0ICYmIChub2RlLnBhcmVudC50eXBlID09PSBcInJvb3RcIiB8fCBpc1ByZUxpa2VOb2RlKG5vZGUpICYmIG5vZGUucGFyZW50IHx8IGlzU2NyaXB0TGlrZVRhZyhub2RlLnBhcmVudCkgfHwgaXNWdWVDdXN0b21CbG9jayhub2RlLnBhcmVudCwgb3B0aW9ucykgfHwgIWlzTGFzdENoaWxkVHJhaWxpbmdTcGFjZVNlbnNpdGl2ZUNzc0Rpc3BsYXkobm9kZS5wYXJlbnQuY3NzRGlzcGxheSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLm5leHQgJiYgIWlzUHJldlRyYWlsaW5nU3BhY2VTZW5zaXRpdmVDc3NEaXNwbGF5KG5vZGUubmV4dC5jc3NEaXNwbGF5KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNEYW5nbGluZ1NwYWNlU2Vuc2l0aXZlTm9kZShub2RlKSB7XG4gICAgICByZXR1cm4gaXNEYW5nbGluZ1NwYWNlU2Vuc2l0aXZlQ3NzRGlzcGxheShub2RlLmNzc0Rpc3BsYXkpICYmICFpc1NjcmlwdExpa2VUYWcobm9kZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcmNlTmV4dEVtcHR5TGluZShub2RlKSB7XG4gICAgICByZXR1cm4gaXNGcm9udE1hdHRlck5vZGUobm9kZSkgfHwgbm9kZS5uZXh0ICYmIG5vZGUuc291cmNlU3Bhbi5lbmQgJiYgbm9kZS5zb3VyY2VTcGFuLmVuZC5saW5lICsgMSA8IG5vZGUubmV4dC5zb3VyY2VTcGFuLnN0YXJ0LmxpbmU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcmNlQnJlYWtDb250ZW50KG5vZGUpIHtcbiAgICAgIHJldHVybiBmb3JjZUJyZWFrQ2hpbGRyZW4obm9kZSkgfHwgbm9kZS50eXBlID09PSBcImVsZW1lbnRcIiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgKFtcImJvZHlcIiwgXCJzY3JpcHRcIiwgXCJzdHlsZVwiXS5pbmNsdWRlcyhub2RlLm5hbWUpIHx8IG5vZGUuY2hpbGRyZW4uc29tZSgoY2hpbGQpID0+IGhhc05vblRleHRDaGlsZChjaGlsZCkpKSB8fCBub2RlLmZpcnN0Q2hpbGQgJiYgbm9kZS5maXJzdENoaWxkID09PSBub2RlLmxhc3RDaGlsZCAmJiBub2RlLmZpcnN0Q2hpbGQudHlwZSAhPT0gXCJ0ZXh0XCIgJiYgaGFzTGVhZGluZ0xpbmVCcmVhayhub2RlLmZpcnN0Q2hpbGQpICYmICghbm9kZS5sYXN0Q2hpbGQuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlIHx8IGhhc1RyYWlsaW5nTGluZUJyZWFrKG5vZGUubGFzdENoaWxkKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcmNlQnJlYWtDaGlsZHJlbihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcImVsZW1lbnRcIiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgKFtcImh0bWxcIiwgXCJoZWFkXCIsIFwidWxcIiwgXCJvbFwiLCBcInNlbGVjdFwiXS5pbmNsdWRlcyhub2RlLm5hbWUpIHx8IG5vZGUuY3NzRGlzcGxheS5zdGFydHNXaXRoKFwidGFibGVcIikgJiYgbm9kZS5jc3NEaXNwbGF5ICE9PSBcInRhYmxlLWNlbGxcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByZWZlckhhcmRsaW5lQXNMZWFkaW5nU3BhY2VzKG5vZGUpIHtcbiAgICAgIHJldHVybiBwcmVmZXJIYXJkbGluZUFzU3Vycm91bmRpbmdTcGFjZXMobm9kZSkgfHwgbm9kZS5wcmV2ICYmIHByZWZlckhhcmRsaW5lQXNUcmFpbGluZ1NwYWNlcyhub2RlLnByZXYpIHx8IGhhc1N1cnJvdW5kaW5nTGluZUJyZWFrKG5vZGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmVmZXJIYXJkbGluZUFzVHJhaWxpbmdTcGFjZXMobm9kZSkge1xuICAgICAgcmV0dXJuIHByZWZlckhhcmRsaW5lQXNTdXJyb3VuZGluZ1NwYWNlcyhub2RlKSB8fCBub2RlLnR5cGUgPT09IFwiZWxlbWVudFwiICYmIG5vZGUuZnVsbE5hbWUgPT09IFwiYnJcIiB8fCBoYXNTdXJyb3VuZGluZ0xpbmVCcmVhayhub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzU3Vycm91bmRpbmdMaW5lQnJlYWsobm9kZSkge1xuICAgICAgcmV0dXJuIGhhc0xlYWRpbmdMaW5lQnJlYWsobm9kZSkgJiYgaGFzVHJhaWxpbmdMaW5lQnJlYWsobm9kZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc0xlYWRpbmdMaW5lQnJlYWsobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzTGVhZGluZ1NwYWNlcyAmJiAobm9kZS5wcmV2ID8gbm9kZS5wcmV2LnNvdXJjZVNwYW4uZW5kLmxpbmUgPCBub2RlLnNvdXJjZVNwYW4uc3RhcnQubGluZSA6IG5vZGUucGFyZW50LnR5cGUgPT09IFwicm9vdFwiIHx8IG5vZGUucGFyZW50LnN0YXJ0U291cmNlU3Bhbi5lbmQubGluZSA8IG5vZGUuc291cmNlU3Bhbi5zdGFydC5saW5lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzVHJhaWxpbmdMaW5lQnJlYWsobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzVHJhaWxpbmdTcGFjZXMgJiYgKG5vZGUubmV4dCA/IG5vZGUubmV4dC5zb3VyY2VTcGFuLnN0YXJ0LmxpbmUgPiBub2RlLnNvdXJjZVNwYW4uZW5kLmxpbmUgOiBub2RlLnBhcmVudC50eXBlID09PSBcInJvb3RcIiB8fCBub2RlLnBhcmVudC5lbmRTb3VyY2VTcGFuICYmIG5vZGUucGFyZW50LmVuZFNvdXJjZVNwYW4uc3RhcnQubGluZSA+IG5vZGUuc291cmNlU3Bhbi5lbmQubGluZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByZWZlckhhcmRsaW5lQXNTdXJyb3VuZGluZ1NwYWNlcyhub2RlKSB7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiaWVDb25kaXRpb25hbENvbW1lbnRcIjpcbiAgICAgICAgY2FzZSBcImNvbW1lbnRcIjpcbiAgICAgICAgY2FzZSBcImRpcmVjdGl2ZVwiOlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjYXNlIFwiZWxlbWVudFwiOlxuICAgICAgICAgIHJldHVybiBbXCJzY3JpcHRcIiwgXCJzZWxlY3RcIl0uaW5jbHVkZXMobm9kZS5uYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0TGFzdERlc2NlbmRhbnQobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUubGFzdENoaWxkID8gZ2V0TGFzdERlc2NlbmRhbnQobm9kZS5sYXN0Q2hpbGQpIDogbm9kZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzTm9uVGV4dENoaWxkKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4uc29tZSgoY2hpbGQpID0+IGNoaWxkLnR5cGUgIT09IFwidGV4dFwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2luZmVyU2NyaXB0UGFyc2VyKG5vZGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgbGFuZ1xuICAgICAgfSA9IG5vZGUuYXR0ck1hcDtcbiAgICAgIGlmICh0eXBlID09PSBcIm1vZHVsZVwiIHx8IHR5cGUgPT09IFwidGV4dC9qYXZhc2NyaXB0XCIgfHwgdHlwZSA9PT0gXCJ0ZXh0L2JhYmVsXCIgfHwgdHlwZSA9PT0gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgfHwgbGFuZyA9PT0gXCJqc3hcIikge1xuICAgICAgICByZXR1cm4gXCJiYWJlbFwiO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IFwiYXBwbGljYXRpb24veC10eXBlc2NyaXB0XCIgfHwgbGFuZyA9PT0gXCJ0c1wiIHx8IGxhbmcgPT09IFwidHN4XCIpIHtcbiAgICAgICAgcmV0dXJuIFwidHlwZXNjcmlwdFwiO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IFwidGV4dC9tYXJrZG93blwiKSB7XG4gICAgICAgIHJldHVybiBcIm1hcmtkb3duXCI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gXCJ0ZXh0L2h0bWxcIikge1xuICAgICAgICByZXR1cm4gXCJodG1sXCI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSAmJiAodHlwZS5lbmRzV2l0aChcImpzb25cIikgfHwgdHlwZS5lbmRzV2l0aChcImltcG9ydG1hcFwiKSkgfHwgdHlwZSA9PT0gXCJzcGVjdWxhdGlvbnJ1bGVzXCIpIHtcbiAgICAgICAgcmV0dXJuIFwianNvblwiO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IFwidGV4dC94LWhhbmRsZWJhcnMtdGVtcGxhdGVcIikge1xuICAgICAgICByZXR1cm4gXCJnbGltbWVyXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluZmVyU3R5bGVQYXJzZXIobm9kZSwgb3B0aW9ucykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsYW5nXG4gICAgICB9ID0gbm9kZS5hdHRyTWFwO1xuICAgICAgaWYgKCFsYW5nIHx8IGxhbmcgPT09IFwicG9zdGNzc1wiIHx8IGxhbmcgPT09IFwiY3NzXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiY3NzXCI7XG4gICAgICB9XG4gICAgICBpZiAobGFuZyA9PT0gXCJzY3NzXCIpIHtcbiAgICAgICAgcmV0dXJuIFwic2Nzc1wiO1xuICAgICAgfVxuICAgICAgaWYgKGxhbmcgPT09IFwibGVzc1wiKSB7XG4gICAgICAgIHJldHVybiBcImxlc3NcIjtcbiAgICAgIH1cbiAgICAgIGlmIChsYW5nID09PSBcInN0eWx1c1wiKSB7XG4gICAgICAgIHJldHVybiBpbmZlclBhcnNlckJ5TGFuZ3VhZ2UoXCJzdHlsdXNcIiwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluZmVyU2NyaXB0UGFyc2VyKG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChub2RlLm5hbWUgPT09IFwic2NyaXB0XCIgJiYgIW5vZGUuYXR0ck1hcC5zcmMpIHtcbiAgICAgICAgaWYgKCFub2RlLmF0dHJNYXAubGFuZyAmJiAhbm9kZS5hdHRyTWFwLnR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gXCJiYWJlbFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfaW5mZXJTY3JpcHRQYXJzZXIobm9kZSk7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5uYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIGluZmVyU3R5bGVQYXJzZXIobm9kZSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucyAmJiBpc1Z1ZU5vbkh0bWxCbG9jayhub2RlLCBvcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gX2luZmVyU2NyaXB0UGFyc2VyKG5vZGUpIHx8ICEoXCJzcmNcIiBpbiBub2RlLmF0dHJNYXApICYmIGluZmVyUGFyc2VyQnlMYW5ndWFnZShub2RlLmF0dHJNYXAubGFuZywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzQmxvY2tMaWtlQ3NzRGlzcGxheShjc3NEaXNwbGF5KSB7XG4gICAgICByZXR1cm4gY3NzRGlzcGxheSA9PT0gXCJibG9ja1wiIHx8IGNzc0Rpc3BsYXkgPT09IFwibGlzdC1pdGVtXCIgfHwgY3NzRGlzcGxheS5zdGFydHNXaXRoKFwidGFibGVcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRmlyc3RDaGlsZExlYWRpbmdTcGFjZVNlbnNpdGl2ZUNzc0Rpc3BsYXkoY3NzRGlzcGxheSkge1xuICAgICAgcmV0dXJuICFpc0Jsb2NrTGlrZUNzc0Rpc3BsYXkoY3NzRGlzcGxheSkgJiYgY3NzRGlzcGxheSAhPT0gXCJpbmxpbmUtYmxvY2tcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNMYXN0Q2hpbGRUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlQ3NzRGlzcGxheShjc3NEaXNwbGF5KSB7XG4gICAgICByZXR1cm4gIWlzQmxvY2tMaWtlQ3NzRGlzcGxheShjc3NEaXNwbGF5KSAmJiBjc3NEaXNwbGF5ICE9PSBcImlubGluZS1ibG9ja1wiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1ByZXZUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlQ3NzRGlzcGxheShjc3NEaXNwbGF5KSB7XG4gICAgICByZXR1cm4gIWlzQmxvY2tMaWtlQ3NzRGlzcGxheShjc3NEaXNwbGF5KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNOZXh0TGVhZGluZ1NwYWNlU2Vuc2l0aXZlQ3NzRGlzcGxheShjc3NEaXNwbGF5KSB7XG4gICAgICByZXR1cm4gIWlzQmxvY2tMaWtlQ3NzRGlzcGxheShjc3NEaXNwbGF5KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNEYW5nbGluZ1NwYWNlU2Vuc2l0aXZlQ3NzRGlzcGxheShjc3NEaXNwbGF5KSB7XG4gICAgICByZXR1cm4gIWlzQmxvY2tMaWtlQ3NzRGlzcGxheShjc3NEaXNwbGF5KSAmJiBjc3NEaXNwbGF5ICE9PSBcImlubGluZS1ibG9ja1wiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1ByZUxpa2VOb2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiBnZXROb2RlQ3NzU3R5bGVXaGl0ZVNwYWNlKG5vZGUpLnN0YXJ0c1dpdGgoXCJwcmVcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvdW50UGFyZW50cyhwYXRoLCBwcmVkaWNhdGUpIHtcbiAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSBwYXRoLnN0YWNrLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGF0aC5zdGFja1tpXTtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvdW50ZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1BhcmVudChub2RlLCBmbikge1xuICAgICAgbGV0IGN1cnJlbnQgPSBub2RlO1xuICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgaWYgKGZuKGN1cnJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXROb2RlQ3NzU3R5bGVEaXNwbGF5KG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChub2RlLnByZXYgJiYgbm9kZS5wcmV2LnR5cGUgPT09IFwiY29tbWVudFwiKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gbm9kZS5wcmV2LnZhbHVlLm1hdGNoKC9eXFxzKmRpc3BsYXk6XFxzKihbYS16XSspXFxzKiQvKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoWzFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgaXNJblN2Z0ZvcmVpZ25PYmplY3QgPSBmYWxzZTtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiZWxlbWVudFwiICYmIG5vZGUubmFtZXNwYWNlID09PSBcInN2Z1wiKSB7XG4gICAgICAgIGlmIChoYXNQYXJlbnQobm9kZSwgKHBhcmVudCkgPT4gcGFyZW50LmZ1bGxOYW1lID09PSBcInN2Zzpmb3JlaWduT2JqZWN0XCIpKSB7XG4gICAgICAgICAgaXNJblN2Z0ZvcmVpZ25PYmplY3QgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBub2RlLm5hbWUgPT09IFwic3ZnXCIgPyBcImlubGluZS1ibG9ja1wiIDogXCJibG9ja1wiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG9wdGlvbnMuaHRtbFdoaXRlc3BhY2VTZW5zaXRpdml0eSkge1xuICAgICAgICBjYXNlIFwic3RyaWN0XCI6XG4gICAgICAgICAgcmV0dXJuIFwiaW5saW5lXCI7XG4gICAgICAgIGNhc2UgXCJpZ25vcmVcIjpcbiAgICAgICAgICByZXR1cm4gXCJibG9ja1wiO1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMucGFyc2VyID09PSBcInZ1ZVwiICYmIG5vZGUucGFyZW50ICYmIG5vZGUucGFyZW50LnR5cGUgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJibG9ja1wiO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcImVsZW1lbnRcIiAmJiAoIW5vZGUubmFtZXNwYWNlIHx8IGlzSW5TdmdGb3JlaWduT2JqZWN0IHx8IGlzVW5rbm93bk5hbWVzcGFjZShub2RlKSkgJiYgQ1NTX0RJU1BMQVlfVEFHU1tub2RlLm5hbWVdIHx8IENTU19ESVNQTEFZX0RFRkFVTFQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Tm9kZUNzc1N0eWxlV2hpdGVTcGFjZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlID09PSBcImVsZW1lbnRcIiAmJiAoIW5vZGUubmFtZXNwYWNlIHx8IGlzVW5rbm93bk5hbWVzcGFjZShub2RlKSkgJiYgQ1NTX1dISVRFX1NQQUNFX1RBR1Nbbm9kZS5uYW1lXSB8fCBDU1NfV0hJVEVfU1BBQ0VfREVGQVVMVDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0TWluSW5kZW50YXRpb24odGV4dCkge1xuICAgICAgbGV0IG1pbkluZGVudGF0aW9uID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgZm9yIChjb25zdCBsaW5lVGV4dCBvZiB0ZXh0LnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgICAgIGlmIChsaW5lVGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUhUTUxfV0hJVEVTUEFDRS5oYXMobGluZVRleHRbMF0pKSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZW50YXRpb24gPSBnZXRMZWFkaW5nSHRtbFdoaXRlc3BhY2UobGluZVRleHQpLmxlbmd0aDtcbiAgICAgICAgaWYgKGxpbmVUZXh0Lmxlbmd0aCA9PT0gaW5kZW50YXRpb24pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZW50YXRpb24gPCBtaW5JbmRlbnRhdGlvbikge1xuICAgICAgICAgIG1pbkluZGVudGF0aW9uID0gaW5kZW50YXRpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBtaW5JbmRlbnRhdGlvbiA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZID8gMCA6IG1pbkluZGVudGF0aW9uO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWRlbnRTdHJpbmcodGV4dCwgbWluSW5kZW50ID0gZ2V0TWluSW5kZW50YXRpb24odGV4dCkpIHtcbiAgICAgIHJldHVybiBtaW5JbmRlbnQgPT09IDAgPyB0ZXh0IDogdGV4dC5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmVUZXh0KSA9PiBsaW5lVGV4dC5zbGljZShtaW5JbmRlbnQpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb3VudENoYXJzKHRleHQsIGNoYXIpIHtcbiAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGV4dFtpXSA9PT0gY2hhcikge1xuICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvdW50ZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVuZXNjYXBlUXVvdGVFbnRpdGllcyh0ZXh0KSB7XG4gICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC8mYXBvczsvZywgXCInXCIpLnJlcGxhY2UoLyZxdW90Oy9nLCAnXCInKTtcbiAgICB9XG4gICAgdmFyIHZ1ZVJvb3RFbGVtZW50c1NldCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcInRlbXBsYXRlXCIsIFwic3R5bGVcIiwgXCJzY3JpcHRcIl0pO1xuICAgIGZ1bmN0aW9uIGlzVnVlQ3VzdG9tQmxvY2sobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIGlzVnVlU2ZjQmxvY2sobm9kZSwgb3B0aW9ucykgJiYgIXZ1ZVJvb3RFbGVtZW50c1NldC5oYXMobm9kZS5mdWxsTmFtZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzVnVlU2ZjQmxvY2sobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucGFyc2VyID09PSBcInZ1ZVwiICYmIG5vZGUudHlwZSA9PT0gXCJlbGVtZW50XCIgJiYgbm9kZS5wYXJlbnQudHlwZSA9PT0gXCJyb290XCIgJiYgbm9kZS5mdWxsTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcImh0bWxcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNWdWVOb25IdG1sQmxvY2sobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIGlzVnVlU2ZjQmxvY2sobm9kZSwgb3B0aW9ucykgJiYgKGlzVnVlQ3VzdG9tQmxvY2sobm9kZSwgb3B0aW9ucykgfHwgbm9kZS5hdHRyTWFwLmxhbmcgJiYgbm9kZS5hdHRyTWFwLmxhbmcgIT09IFwiaHRtbFwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNWdWVTbG90QXR0cmlidXRlKGF0dHJpYnV0ZSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5mdWxsTmFtZTtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lLmNoYXJBdCgwKSA9PT0gXCIjXCIgfHwgYXR0cmlidXRlTmFtZSA9PT0gXCJzbG90LXNjb3BlXCIgfHwgYXR0cmlidXRlTmFtZSA9PT0gXCJ2LXNsb3RcIiB8fCBhdHRyaWJ1dGVOYW1lLnN0YXJ0c1dpdGgoXCJ2LXNsb3Q6XCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1Z1ZVNmY0JpbmRpbmdzQXR0cmlidXRlKGF0dHJpYnV0ZSwgb3B0aW9ucykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGF0dHJpYnV0ZS5wYXJlbnQ7XG4gICAgICBpZiAoIWlzVnVlU2ZjQmxvY2soZWxlbWVudCwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFnTmFtZSA9IGVsZW1lbnQuZnVsbE5hbWU7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLmZ1bGxOYW1lO1xuICAgICAgcmV0dXJuIHRhZ05hbWUgPT09IFwic2NyaXB0XCIgJiYgYXR0cmlidXRlTmFtZSA9PT0gXCJzZXR1cFwiIHx8IHRhZ05hbWUgPT09IFwic3R5bGVcIiAmJiBhdHRyaWJ1dGVOYW1lID09PSBcInZhcnNcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0VGV4dFZhbHVlUGFydHMobm9kZSwgdmFsdWUgPSBub2RlLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbm9kZS5wYXJlbnQuaXNXaGl0ZXNwYWNlU2Vuc2l0aXZlID8gbm9kZS5wYXJlbnQuaXNJbmRlbnRhdGlvblNlbnNpdGl2ZSA/IHJlcGxhY2VUZXh0RW5kT2ZMaW5lKHZhbHVlKSA6IHJlcGxhY2VUZXh0RW5kT2ZMaW5lKGRlZGVudFN0cmluZyhodG1sVHJpbVByZXNlcnZlSW5kZW50YXRpb24odmFsdWUpKSwgaGFyZGxpbmUpIDogZ2V0RG9jUGFydHMoam9pbihsaW5lLCBzcGxpdEJ5SHRtbFdoaXRlc3BhY2UodmFsdWUpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzVnVlU2NyaXB0VGFnKG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBpc1Z1ZVNmY0Jsb2NrKG5vZGUsIG9wdGlvbnMpICYmIG5vZGUubmFtZSA9PT0gXCJzY3JpcHRcIjtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgaHRtbFRyaW0sXG4gICAgICBodG1sVHJpbVByZXNlcnZlSW5kZW50YXRpb24sXG4gICAgICBoYXNIdG1sV2hpdGVzcGFjZSxcbiAgICAgIGdldExlYWRpbmdBbmRUcmFpbGluZ0h0bWxXaGl0ZXNwYWNlLFxuICAgICAgY2FuSGF2ZUludGVycG9sYXRpb24sXG4gICAgICBjb3VudENoYXJzLFxuICAgICAgY291bnRQYXJlbnRzLFxuICAgICAgZGVkZW50U3RyaW5nLFxuICAgICAgZm9yY2VCcmVha0NoaWxkcmVuLFxuICAgICAgZm9yY2VCcmVha0NvbnRlbnQsXG4gICAgICBmb3JjZU5leHRFbXB0eUxpbmUsXG4gICAgICBnZXRMYXN0RGVzY2VuZGFudCxcbiAgICAgIGdldE5vZGVDc3NTdHlsZURpc3BsYXksXG4gICAgICBnZXROb2RlQ3NzU3R5bGVXaGl0ZVNwYWNlLFxuICAgICAgaGFzUHJldHRpZXJJZ25vcmUsXG4gICAgICBpbmZlclNjcmlwdFBhcnNlcixcbiAgICAgIGlzVnVlQ3VzdG9tQmxvY2ssXG4gICAgICBpc1Z1ZU5vbkh0bWxCbG9jayxcbiAgICAgIGlzVnVlU2NyaXB0VGFnLFxuICAgICAgaXNWdWVTbG90QXR0cmlidXRlLFxuICAgICAgaXNWdWVTZmNCaW5kaW5nc0F0dHJpYnV0ZSxcbiAgICAgIGlzVnVlU2ZjQmxvY2ssXG4gICAgICBpc0RhbmdsaW5nU3BhY2VTZW5zaXRpdmVOb2RlLFxuICAgICAgaXNJbmRlbnRhdGlvblNlbnNpdGl2ZU5vZGUsXG4gICAgICBpc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZU5vZGUsXG4gICAgICBpc1ByZUxpa2VOb2RlLFxuICAgICAgaXNTY3JpcHRMaWtlVGFnLFxuICAgICAgaXNUZXh0TGlrZU5vZGUsXG4gICAgICBpc1RyYWlsaW5nU3BhY2VTZW5zaXRpdmVOb2RlLFxuICAgICAgaXNXaGl0ZXNwYWNlU2Vuc2l0aXZlTm9kZSxcbiAgICAgIGlzVW5rbm93bk5hbWVzcGFjZSxcbiAgICAgIHByZWZlckhhcmRsaW5lQXNMZWFkaW5nU3BhY2VzLFxuICAgICAgcHJlZmVySGFyZGxpbmVBc1RyYWlsaW5nU3BhY2VzLFxuICAgICAgc2hvdWxkUHJlc2VydmVDb250ZW50LFxuICAgICAgdW5lc2NhcGVRdW90ZUVudGl0aWVzLFxuICAgICAgZ2V0VGV4dFZhbHVlUGFydHNcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NoYXJzID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWh0bWwtcGFyc2VyL2xpYi9jb21waWxlci9zcmMvY2hhcnMuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZXhwb3J0czIuJEVPRiA9IDA7XG4gICAgZXhwb3J0czIuJEJTUEFDRSA9IDg7XG4gICAgZXhwb3J0czIuJFRBQiA9IDk7XG4gICAgZXhwb3J0czIuJExGID0gMTA7XG4gICAgZXhwb3J0czIuJFZUQUIgPSAxMTtcbiAgICBleHBvcnRzMi4kRkYgPSAxMjtcbiAgICBleHBvcnRzMi4kQ1IgPSAxMztcbiAgICBleHBvcnRzMi4kU1BBQ0UgPSAzMjtcbiAgICBleHBvcnRzMi4kQkFORyA9IDMzO1xuICAgIGV4cG9ydHMyLiREUSA9IDM0O1xuICAgIGV4cG9ydHMyLiRIQVNIID0gMzU7XG4gICAgZXhwb3J0czIuJCQgPSAzNjtcbiAgICBleHBvcnRzMi4kUEVSQ0VOVCA9IDM3O1xuICAgIGV4cG9ydHMyLiRBTVBFUlNBTkQgPSAzODtcbiAgICBleHBvcnRzMi4kU1EgPSAzOTtcbiAgICBleHBvcnRzMi4kTFBBUkVOID0gNDA7XG4gICAgZXhwb3J0czIuJFJQQVJFTiA9IDQxO1xuICAgIGV4cG9ydHMyLiRTVEFSID0gNDI7XG4gICAgZXhwb3J0czIuJFBMVVMgPSA0MztcbiAgICBleHBvcnRzMi4kQ09NTUEgPSA0NDtcbiAgICBleHBvcnRzMi4kTUlOVVMgPSA0NTtcbiAgICBleHBvcnRzMi4kUEVSSU9EID0gNDY7XG4gICAgZXhwb3J0czIuJFNMQVNIID0gNDc7XG4gICAgZXhwb3J0czIuJENPTE9OID0gNTg7XG4gICAgZXhwb3J0czIuJFNFTUlDT0xPTiA9IDU5O1xuICAgIGV4cG9ydHMyLiRMVCA9IDYwO1xuICAgIGV4cG9ydHMyLiRFUSA9IDYxO1xuICAgIGV4cG9ydHMyLiRHVCA9IDYyO1xuICAgIGV4cG9ydHMyLiRRVUVTVElPTiA9IDYzO1xuICAgIGV4cG9ydHMyLiQwID0gNDg7XG4gICAgZXhwb3J0czIuJDcgPSA1NTtcbiAgICBleHBvcnRzMi4kOSA9IDU3O1xuICAgIGV4cG9ydHMyLiRBID0gNjU7XG4gICAgZXhwb3J0czIuJEUgPSA2OTtcbiAgICBleHBvcnRzMi4kRiA9IDcwO1xuICAgIGV4cG9ydHMyLiRYID0gODg7XG4gICAgZXhwb3J0czIuJFogPSA5MDtcbiAgICBleHBvcnRzMi4kTEJSQUNLRVQgPSA5MTtcbiAgICBleHBvcnRzMi4kQkFDS1NMQVNIID0gOTI7XG4gICAgZXhwb3J0czIuJFJCUkFDS0VUID0gOTM7XG4gICAgZXhwb3J0czIuJENBUkVUID0gOTQ7XG4gICAgZXhwb3J0czIuJF8gPSA5NTtcbiAgICBleHBvcnRzMi4kYSA9IDk3O1xuICAgIGV4cG9ydHMyLiRiID0gOTg7XG4gICAgZXhwb3J0czIuJGUgPSAxMDE7XG4gICAgZXhwb3J0czIuJGYgPSAxMDI7XG4gICAgZXhwb3J0czIuJG4gPSAxMTA7XG4gICAgZXhwb3J0czIuJHIgPSAxMTQ7XG4gICAgZXhwb3J0czIuJHQgPSAxMTY7XG4gICAgZXhwb3J0czIuJHUgPSAxMTc7XG4gICAgZXhwb3J0czIuJHYgPSAxMTg7XG4gICAgZXhwb3J0czIuJHggPSAxMjA7XG4gICAgZXhwb3J0czIuJHogPSAxMjI7XG4gICAgZXhwb3J0czIuJExCUkFDRSA9IDEyMztcbiAgICBleHBvcnRzMi4kQkFSID0gMTI0O1xuICAgIGV4cG9ydHMyLiRSQlJBQ0UgPSAxMjU7XG4gICAgZXhwb3J0czIuJE5CU1AgPSAxNjA7XG4gICAgZXhwb3J0czIuJFBJUEUgPSAxMjQ7XG4gICAgZXhwb3J0czIuJFRJTERBID0gMTI2O1xuICAgIGV4cG9ydHMyLiRBVCA9IDY0O1xuICAgIGV4cG9ydHMyLiRCVCA9IDk2O1xuICAgIGZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjb2RlKSB7XG4gICAgICByZXR1cm4gY29kZSA+PSBleHBvcnRzMi4kVEFCICYmIGNvZGUgPD0gZXhwb3J0czIuJFNQQUNFIHx8IGNvZGUgPT0gZXhwb3J0czIuJE5CU1A7XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzV2hpdGVzcGFjZSA9IGlzV2hpdGVzcGFjZTtcbiAgICBmdW5jdGlvbiBpc0RpZ2l0KGNvZGUpIHtcbiAgICAgIHJldHVybiBleHBvcnRzMi4kMCA8PSBjb2RlICYmIGNvZGUgPD0gZXhwb3J0czIuJDk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzRGlnaXQgPSBpc0RpZ2l0O1xuICAgIGZ1bmN0aW9uIGlzQXNjaWlMZXR0ZXIoY29kZSkge1xuICAgICAgcmV0dXJuIGNvZGUgPj0gZXhwb3J0czIuJGEgJiYgY29kZSA8PSBleHBvcnRzMi4keiB8fCBjb2RlID49IGV4cG9ydHMyLiRBICYmIGNvZGUgPD0gZXhwb3J0czIuJFo7XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzQXNjaWlMZXR0ZXIgPSBpc0FzY2lpTGV0dGVyO1xuICAgIGZ1bmN0aW9uIGlzQXNjaWlIZXhEaWdpdChjb2RlKSB7XG4gICAgICByZXR1cm4gY29kZSA+PSBleHBvcnRzMi4kYSAmJiBjb2RlIDw9IGV4cG9ydHMyLiRmIHx8IGNvZGUgPj0gZXhwb3J0czIuJEEgJiYgY29kZSA8PSBleHBvcnRzMi4kRiB8fCBpc0RpZ2l0KGNvZGUpO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc0FzY2lpSGV4RGlnaXQgPSBpc0FzY2lpSGV4RGlnaXQ7XG4gICAgZnVuY3Rpb24gaXNOZXdMaW5lKGNvZGUpIHtcbiAgICAgIHJldHVybiBjb2RlID09PSBleHBvcnRzMi4kTEYgfHwgY29kZSA9PT0gZXhwb3J0czIuJENSO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc05ld0xpbmUgPSBpc05ld0xpbmU7XG4gICAgZnVuY3Rpb24gaXNPY3RhbERpZ2l0KGNvZGUpIHtcbiAgICAgIHJldHVybiBleHBvcnRzMi4kMCA8PSBjb2RlICYmIGNvZGUgPD0gZXhwb3J0czIuJDc7XG4gICAgfVxuICAgIGV4cG9ydHMyLmlzT2N0YWxEaWdpdCA9IGlzT2N0YWxEaWdpdDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9zdGF0aWNfc3ltYm9sID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWh0bWwtcGFyc2VyL2xpYi9jb21waWxlci9zcmMvYW90L3N0YXRpY19zeW1ib2wuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIFN0YXRpY1N5bWJvbCA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKGZpbGVQYXRoLCBuYW1lLCBtZW1iZXJzKSB7XG4gICAgICAgIHRoaXMuZmlsZVBhdGggPSBmaWxlUGF0aDtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5tZW1iZXJzID0gbWVtYmVycztcbiAgICAgIH1cbiAgICAgIGFzc2VydE5vTWVtYmVycygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVtYmVycy5sZW5ndGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYElsbGVnYWwgc3RhdGU6IHN5bWJvbCB3aXRob3V0IG1lbWJlcnMgZXhwZWN0ZWQsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeSh0aGlzKX0uYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLlN0YXRpY1N5bWJvbCA9IFN0YXRpY1N5bWJvbDtcbiAgICB2YXIgU3RhdGljU3ltYm9sQ2FjaGUgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICB9XG4gICAgICBnZXQoZGVjbGFyYXRpb25GaWxlLCBuYW1lLCBtZW1iZXJzKSB7XG4gICAgICAgIG1lbWJlcnMgPSBtZW1iZXJzIHx8IFtdO1xuICAgICAgICBjb25zdCBtZW1iZXJTdWZmaXggPSBtZW1iZXJzLmxlbmd0aCA/IGAuJHttZW1iZXJzLmpvaW4oXCIuXCIpfWAgOiBcIlwiO1xuICAgICAgICBjb25zdCBrZXkgPSBgXCIke2RlY2xhcmF0aW9uRmlsZX1cIi4ke25hbWV9JHttZW1iZXJTdWZmaXh9YDtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gbmV3IFN0YXRpY1N5bWJvbChkZWNsYXJhdGlvbkZpbGUsIG5hbWUsIG1lbWJlcnMpO1xuICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuU3RhdGljU3ltYm9sQ2FjaGUgPSBTdGF0aWNTeW1ib2xDYWNoZTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV91dGlsMyA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvYW5ndWxhci1odG1sLXBhcnNlci9saWIvY29tcGlsZXIvc3JjL3V0aWwuanNcIihleHBvcnRzMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzMiwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIERBU0hfQ0FTRV9SRUdFWFAgPSAvLSsoW2EtejAtOV0pL2c7XG4gICAgZnVuY3Rpb24gZGFzaENhc2VUb0NhbWVsQ2FzZShpbnB1dCkge1xuICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoREFTSF9DQVNFX1JFR0VYUCwgKC4uLm0pID0+IG1bMV0udG9VcHBlckNhc2UoKSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmRhc2hDYXNlVG9DYW1lbENhc2UgPSBkYXNoQ2FzZVRvQ2FtZWxDYXNlO1xuICAgIGZ1bmN0aW9uIHNwbGl0QXRDb2xvbihpbnB1dCwgZGVmYXVsdFZhbHVlcykge1xuICAgICAgcmV0dXJuIF9zcGxpdEF0KGlucHV0LCBcIjpcIiwgZGVmYXVsdFZhbHVlcyk7XG4gICAgfVxuICAgIGV4cG9ydHMyLnNwbGl0QXRDb2xvbiA9IHNwbGl0QXRDb2xvbjtcbiAgICBmdW5jdGlvbiBzcGxpdEF0UGVyaW9kKGlucHV0LCBkZWZhdWx0VmFsdWVzKSB7XG4gICAgICByZXR1cm4gX3NwbGl0QXQoaW5wdXQsIFwiLlwiLCBkZWZhdWx0VmFsdWVzKTtcbiAgICB9XG4gICAgZXhwb3J0czIuc3BsaXRBdFBlcmlvZCA9IHNwbGl0QXRQZXJpb2Q7XG4gICAgZnVuY3Rpb24gX3NwbGl0QXQoaW5wdXQsIGNoYXJhY3RlciwgZGVmYXVsdFZhbHVlcykge1xuICAgICAgY29uc3QgY2hhcmFjdGVySW5kZXggPSBpbnB1dC5pbmRleE9mKGNoYXJhY3Rlcik7XG4gICAgICBpZiAoY2hhcmFjdGVySW5kZXggPT0gLTEpXG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWVzO1xuICAgICAgcmV0dXJuIFtpbnB1dC5zbGljZSgwLCBjaGFyYWN0ZXJJbmRleCkudHJpbSgpLCBpbnB1dC5zbGljZShjaGFyYWN0ZXJJbmRleCArIDEpLnRyaW0oKV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZpc2l0VmFsdWUodmFsdWUsIHZpc2l0b3IsIGNvbnRleHQpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFycmF5KHZhbHVlLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N0cmljdFN0cmluZ01hcCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTdHJpbmdNYXAodmFsdWUsIGNvbnRleHQpO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHJpbWl0aXZlKHZhbHVlLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0T3RoZXIodmFsdWUsIGNvbnRleHQpO1xuICAgIH1cbiAgICBleHBvcnRzMi52aXNpdFZhbHVlID0gdmlzaXRWYWx1ZTtcbiAgICBmdW5jdGlvbiBpc0RlZmluZWQodmFsKSB7XG4gICAgICByZXR1cm4gdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdm9pZCAwO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc0RlZmluZWQgPSBpc0RlZmluZWQ7XG4gICAgZnVuY3Rpb24gbm9VbmRlZmluZWQodmFsKSB7XG4gICAgICByZXR1cm4gdmFsID09PSB2b2lkIDAgPyBudWxsIDogdmFsO1xuICAgIH1cbiAgICBleHBvcnRzMi5ub1VuZGVmaW5lZCA9IG5vVW5kZWZpbmVkO1xuICAgIHZhciBWYWx1ZVRyYW5zZm9ybWVyID0gY2xhc3Mge1xuICAgICAgdmlzaXRBcnJheShhcnIsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIGFyci5tYXAoKHZhbHVlKSA9PiB2aXNpdFZhbHVlKHZhbHVlLCB0aGlzLCBjb250ZXh0KSk7XG4gICAgICB9XG4gICAgICB2aXNpdFN0cmluZ01hcChtYXAsIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB2aXNpdFZhbHVlKG1hcFtrZXldLCB0aGlzLCBjb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2aXNpdFByaW1pdGl2ZSh2YWx1ZSwgY29udGV4dCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2aXNpdE90aGVyKHZhbHVlLCBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLlZhbHVlVHJhbnNmb3JtZXIgPSBWYWx1ZVRyYW5zZm9ybWVyO1xuICAgIGV4cG9ydHMyLlN5bmNBc3luYyA9IHtcbiAgICAgIGFzc2VydFN5bmM6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoaXNQcm9taXNlKHZhbHVlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSWxsZWdhbCBzdGF0ZTogdmFsdWUgY2Fubm90IGJlIGEgcHJvbWlzZWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICB0aGVuOiAodmFsdWUsIGNiKSA9PiB7XG4gICAgICAgIHJldHVybiBpc1Byb21pc2UodmFsdWUpID8gdmFsdWUudGhlbihjYikgOiBjYih2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgYWxsOiAoc3luY0FzeW5jVmFsdWVzKSA9PiB7XG4gICAgICAgIHJldHVybiBzeW5jQXN5bmNWYWx1ZXMuc29tZShpc1Byb21pc2UpID8gUHJvbWlzZS5hbGwoc3luY0FzeW5jVmFsdWVzKSA6IHN5bmNBc3luY1ZhbHVlcztcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGVycm9yKG1zZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnRlcm5hbCBFcnJvcjogJHttc2d9YCk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmVycm9yID0gZXJyb3I7XG4gICAgZnVuY3Rpb24gc3ludGF4RXJyb3IobXNnLCBwYXJzZUVycm9ycykge1xuICAgICAgY29uc3QgZXJyb3IyID0gRXJyb3IobXNnKTtcbiAgICAgIGVycm9yMltFUlJPUl9TWU5UQVhfRVJST1JdID0gdHJ1ZTtcbiAgICAgIGlmIChwYXJzZUVycm9ycylcbiAgICAgICAgZXJyb3IyW0VSUk9SX1BBUlNFX0VSUk9SU10gPSBwYXJzZUVycm9ycztcbiAgICAgIHJldHVybiBlcnJvcjI7XG4gICAgfVxuICAgIGV4cG9ydHMyLnN5bnRheEVycm9yID0gc3ludGF4RXJyb3I7XG4gICAgdmFyIEVSUk9SX1NZTlRBWF9FUlJPUiA9IFwibmdTeW50YXhFcnJvclwiO1xuICAgIHZhciBFUlJPUl9QQVJTRV9FUlJPUlMgPSBcIm5nUGFyc2VFcnJvcnNcIjtcbiAgICBmdW5jdGlvbiBpc1N5bnRheEVycm9yKGVycm9yMikge1xuICAgICAgcmV0dXJuIGVycm9yMltFUlJPUl9TWU5UQVhfRVJST1JdO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc1N5bnRheEVycm9yID0gaXNTeW50YXhFcnJvcjtcbiAgICBmdW5jdGlvbiBnZXRQYXJzZUVycm9ycyhlcnJvcjIpIHtcbiAgICAgIHJldHVybiBlcnJvcjJbRVJST1JfUEFSU0VfRVJST1JTXSB8fCBbXTtcbiAgICB9XG4gICAgZXhwb3J0czIuZ2V0UGFyc2VFcnJvcnMgPSBnZXRQYXJzZUVycm9ycztcbiAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAocykge1xuICAgICAgcmV0dXJuIHMucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXF1cXC9cXFxcXSkvZywgXCJcXFxcJDFcIik7XG4gICAgfVxuICAgIGV4cG9ydHMyLmVzY2FwZVJlZ0V4cCA9IGVzY2FwZVJlZ0V4cDtcbiAgICB2YXIgU1RSSU5HX01BUF9QUk9UTyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSk7XG4gICAgZnVuY3Rpb24gaXNTdHJpY3RTdHJpbmdNYXAob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiAmJiBvYmogIT09IG51bGwgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IFNUUklOR19NQVBfUFJPVE87XG4gICAgfVxuICAgIGZ1bmN0aW9uIHV0ZjhFbmNvZGUoc3RyKSB7XG4gICAgICBsZXQgZW5jb2RlZCA9IFwiXCI7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBsZXQgY29kZVBvaW50ID0gc3RyLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICBpZiAoY29kZVBvaW50ID49IDU1Mjk2ICYmIGNvZGVQb2ludCA8PSA1NjMxOSAmJiBzdHIubGVuZ3RoID4gaW5kZXggKyAxKSB7XG4gICAgICAgICAgY29uc3QgbG93ID0gc3RyLmNoYXJDb2RlQXQoaW5kZXggKyAxKTtcbiAgICAgICAgICBpZiAobG93ID49IDU2MzIwICYmIGxvdyA8PSA1NzM0Mykge1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IChjb2RlUG9pbnQgLSA1NTI5NiA8PCAxMCkgKyBsb3cgLSA1NjMyMCArIDY1NTM2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29kZVBvaW50IDw9IDEyNykge1xuICAgICAgICAgIGVuY29kZWQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlUG9pbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8PSAyMDQ3KSB7XG4gICAgICAgICAgZW5jb2RlZCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCA+PiA2ICYgMzEgfCAxOTIsIGNvZGVQb2ludCAmIDYzIHwgMTI4KTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPD0gNjU1MzUpIHtcbiAgICAgICAgICBlbmNvZGVkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50ID4+IDEyIHwgMjI0LCBjb2RlUG9pbnQgPj4gNiAmIDYzIHwgMTI4LCBjb2RlUG9pbnQgJiA2MyB8IDEyOCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDw9IDIwOTcxNTEpIHtcbiAgICAgICAgICBlbmNvZGVkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50ID4+IDE4ICYgNyB8IDI0MCwgY29kZVBvaW50ID4+IDEyICYgNjMgfCAxMjgsIGNvZGVQb2ludCA+PiA2ICYgNjMgfCAxMjgsIGNvZGVQb2ludCAmIDYzIHwgMTI4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGVuY29kZWQ7XG4gICAgfVxuICAgIGV4cG9ydHMyLnV0ZjhFbmNvZGUgPSB1dGY4RW5jb2RlO1xuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeSh0b2tlbikge1xuICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gXCJbXCIgKyB0b2tlbi5tYXAoc3RyaW5naWZ5KS5qb2luKFwiLCBcIikgKyBcIl1cIjtcbiAgICAgIH1cbiAgICAgIGlmICh0b2tlbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBcIlwiICsgdG9rZW47XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4ub3ZlcnJpZGRlbk5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGAke3Rva2VuLm92ZXJyaWRkZW5OYW1lfWA7XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4ubmFtZSkge1xuICAgICAgICByZXR1cm4gYCR7dG9rZW4ubmFtZX1gO1xuICAgICAgfVxuICAgICAgaWYgKCF0b2tlbi50b1N0cmluZykge1xuICAgICAgICByZXR1cm4gXCJvYmplY3RcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IHRva2VuLnRvU3RyaW5nKCk7XG4gICAgICBpZiAocmVzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFwiXCIgKyByZXM7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdMaW5lSW5kZXggPSByZXMuaW5kZXhPZihcIlxcblwiKTtcbiAgICAgIHJldHVybiBuZXdMaW5lSW5kZXggPT09IC0xID8gcmVzIDogcmVzLnN1YnN0cmluZygwLCBuZXdMaW5lSW5kZXgpO1xuICAgIH1cbiAgICBleHBvcnRzMi5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUZvcndhcmRSZWYodHlwZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZS5oYXNPd25Qcm9wZXJ0eShcIl9fZm9yd2FyZF9yZWZfX1wiKSkge1xuICAgICAgICByZXR1cm4gdHlwZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICB9XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlc29sdmVGb3J3YXJkUmVmID0gcmVzb2x2ZUZvcndhcmRSZWY7XG4gICAgZnVuY3Rpb24gaXNQcm9taXNlKG9iaikge1xuICAgICAgcmV0dXJuICEhb2JqICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gXCJmdW5jdGlvblwiO1xuICAgIH1cbiAgICBleHBvcnRzMi5pc1Byb21pc2UgPSBpc1Byb21pc2U7XG4gICAgdmFyIFZlcnNpb24gPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihmdWxsKSB7XG4gICAgICAgIHRoaXMuZnVsbCA9IGZ1bGw7XG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IGZ1bGwuc3BsaXQoXCIuXCIpO1xuICAgICAgICB0aGlzLm1ham9yID0gc3BsaXRzWzBdO1xuICAgICAgICB0aGlzLm1pbm9yID0gc3BsaXRzWzFdO1xuICAgICAgICB0aGlzLnBhdGNoID0gc3BsaXRzLnNsaWNlKDIpLmpvaW4oXCIuXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuVmVyc2lvbiA9IFZlcnNpb247XG4gICAgdmFyIF9fd2luZG93ID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3c7XG4gICAgdmFyIF9fc2VsZiA9IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUgJiYgc2VsZjtcbiAgICB2YXIgX19nbG9iYWwgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbDtcbiAgICB2YXIgX2dsb2JhbCA9IF9fZ2xvYmFsIHx8IF9fd2luZG93IHx8IF9fc2VsZjtcbiAgICBleHBvcnRzMi5nbG9iYWwgPSBfZ2xvYmFsO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NvbXBpbGVfbWV0YWRhdGEgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2FuZ3VsYXItaHRtbC1wYXJzZXIvbGliL2NvbXBpbGVyL3NyYy9jb21waWxlX21ldGFkYXRhLmpzXCIoZXhwb3J0czIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0czIsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH0pO1xuICAgIHZhciBzdGF0aWNfc3ltYm9sXzEgPSByZXF1aXJlX3N0YXRpY19zeW1ib2woKTtcbiAgICB2YXIgdXRpbF8xID0gcmVxdWlyZV91dGlsMygpO1xuICAgIHZhciBIT1NUX1JFR19FWFAgPSAvXig/Oig/OlxcWyhbXlxcXV0rKVxcXSl8KD86XFwoKFteXFwpXSspXFwpKSl8KFxcQFstXFx3XSspJC87XG4gICAgZnVuY3Rpb24gc2FuaXRpemVJZGVudGlmaWVyKG5hbWUpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlcGxhY2UoL1xcVy9nLCBcIl9cIik7XG4gICAgfVxuICAgIGV4cG9ydHMyLnNhbml0aXplSWRlbnRpZmllciA9IHNhbml0aXplSWRlbnRpZmllcjtcbiAgICB2YXIgX2Fub255bW91c1R5cGVJbmRleCA9IDA7XG4gICAgZnVuY3Rpb24gaWRlbnRpZmllck5hbWUoY29tcGlsZUlkZW50aWZpZXIpIHtcbiAgICAgIGlmICghY29tcGlsZUlkZW50aWZpZXIgfHwgIWNvbXBpbGVJZGVudGlmaWVyLnJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlZiA9IGNvbXBpbGVJZGVudGlmaWVyLnJlZmVyZW5jZTtcbiAgICAgIGlmIChyZWYgaW5zdGFuY2VvZiBzdGF0aWNfc3ltYm9sXzEuU3RhdGljU3ltYm9sKSB7XG4gICAgICAgIHJldHVybiByZWYubmFtZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWZbXCJfX2Fub255bW91c1R5cGVcIl0pIHtcbiAgICAgICAgcmV0dXJuIHJlZltcIl9fYW5vbnltb3VzVHlwZVwiXTtcbiAgICAgIH1cbiAgICAgIGxldCBpZGVudGlmaWVyID0gdXRpbF8xLnN0cmluZ2lmeShyZWYpO1xuICAgICAgaWYgKGlkZW50aWZpZXIuaW5kZXhPZihcIihcIikgPj0gMCkge1xuICAgICAgICBpZGVudGlmaWVyID0gYGFub255bW91c18ke19hbm9ueW1vdXNUeXBlSW5kZXgrK31gO1xuICAgICAgICByZWZbXCJfX2Fub255bW91c1R5cGVcIl0gPSBpZGVudGlmaWVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWRlbnRpZmllciA9IHNhbml0aXplSWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpZGVudGlmaWVyO1xuICAgIH1cbiAgICBleHBvcnRzMi5pZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXJOYW1lO1xuICAgIGZ1bmN0aW9uIGlkZW50aWZpZXJNb2R1bGVVcmwoY29tcGlsZUlkZW50aWZpZXIpIHtcbiAgICAgIGNvbnN0IHJlZiA9IGNvbXBpbGVJZGVudGlmaWVyLnJlZmVyZW5jZTtcbiAgICAgIGlmIChyZWYgaW5zdGFuY2VvZiBzdGF0aWNfc3ltYm9sXzEuU3RhdGljU3ltYm9sKSB7XG4gICAgICAgIHJldHVybiByZWYuZmlsZVBhdGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gYC4vJHt1dGlsXzEuc3RyaW5naWZ5KHJlZil9YDtcbiAgICB9XG4gICAgZXhwb3J0czIuaWRlbnRpZmllck1vZHVsZVVybCA9IGlkZW50aWZpZXJNb2R1bGVVcmw7XG4gICAgZnVuY3Rpb24gdmlld0NsYXNzTmFtZShjb21wVHlwZSwgZW1iZWRkZWRUZW1wbGF0ZUluZGV4KSB7XG4gICAgICByZXR1cm4gYFZpZXdfJHtpZGVudGlmaWVyTmFtZSh7XG4gICAgICAgIHJlZmVyZW5jZTogY29tcFR5cGVcbiAgICAgIH0pfV8ke2VtYmVkZGVkVGVtcGxhdGVJbmRleH1gO1xuICAgIH1cbiAgICBleHBvcnRzMi52aWV3Q2xhc3NOYW1lID0gdmlld0NsYXNzTmFtZTtcbiAgICBmdW5jdGlvbiByZW5kZXJlclR5cGVOYW1lKGNvbXBUeXBlKSB7XG4gICAgICByZXR1cm4gYFJlbmRlclR5cGVfJHtpZGVudGlmaWVyTmFtZSh7XG4gICAgICAgIHJlZmVyZW5jZTogY29tcFR5cGVcbiAgICAgIH0pfWA7XG4gICAgfVxuICAgIGV4cG9ydHMyLnJlbmRlcmVyVHlwZU5hbWUgPSByZW5kZXJlclR5cGVOYW1lO1xuICAgIGZ1bmN0aW9uIGhvc3RWaWV3Q2xhc3NOYW1lKGNvbXBUeXBlKSB7XG4gICAgICByZXR1cm4gYEhvc3RWaWV3XyR7aWRlbnRpZmllck5hbWUoe1xuICAgICAgICByZWZlcmVuY2U6IGNvbXBUeXBlXG4gICAgICB9KX1gO1xuICAgIH1cbiAgICBleHBvcnRzMi5ob3N0Vmlld0NsYXNzTmFtZSA9IGhvc3RWaWV3Q2xhc3NOYW1lO1xuICAgIGZ1bmN0aW9uIGNvbXBvbmVudEZhY3RvcnlOYW1lKGNvbXBUeXBlKSB7XG4gICAgICByZXR1cm4gYCR7aWRlbnRpZmllck5hbWUoe1xuICAgICAgICByZWZlcmVuY2U6IGNvbXBUeXBlXG4gICAgICB9KX1OZ0ZhY3RvcnlgO1xuICAgIH1cbiAgICBleHBvcnRzMi5jb21wb25lbnRGYWN0b3J5TmFtZSA9IGNvbXBvbmVudEZhY3RvcnlOYW1lO1xuICAgIHZhciBDb21waWxlU3VtbWFyeUtpbmQ7XG4gICAgKGZ1bmN0aW9uKENvbXBpbGVTdW1tYXJ5S2luZDIpIHtcbiAgICAgIENvbXBpbGVTdW1tYXJ5S2luZDJbQ29tcGlsZVN1bW1hcnlLaW5kMltcIlBpcGVcIl0gPSAwXSA9IFwiUGlwZVwiO1xuICAgICAgQ29tcGlsZVN1bW1hcnlLaW5kMltDb21waWxlU3VtbWFyeUtpbmQyW1wiRGlyZWN0aXZlXCJdID0gMV0gPSBcIkRpcmVjdGl2ZVwiO1xuICAgICAgQ29tcGlsZVN1bW1hcnlLaW5kMltDb21waWxlU3VtbWFyeUtpbmQyW1wiTmdNb2R1bGVcIl0gPSAyXSA9IFwiTmdNb2R1bGVcIjtcbiAgICAgIENvbXBpbGVTdW1tYXJ5S2luZDJbQ29tcGlsZVN1bW1hcnlLaW5kMltcIkluamVjdGFibGVcIl0gPSAzXSA9IFwiSW5qZWN0YWJsZVwiO1xuICAgIH0pKENvbXBpbGVTdW1tYXJ5S2luZCA9IGV4cG9ydHMyLkNvbXBpbGVTdW1tYXJ5S2luZCB8fCAoZXhwb3J0czIuQ29tcGlsZVN1bW1hcnlLaW5kID0ge30pKTtcbiAgICBmdW5jdGlvbiB0b2tlbk5hbWUodG9rZW4pIHtcbiAgICAgIHJldHVybiB0b2tlbi52YWx1ZSAhPSBudWxsID8gc2FuaXRpemVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSA6IGlkZW50aWZpZXJOYW1lKHRva2VuLmlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBleHBvcnRzMi50b2tlbk5hbWUgPSB0b2tlbk5hbWU7XG4gICAgZnVuY3Rpb24gdG9rZW5SZWZlcmVuY2UodG9rZW4pIHtcbiAgICAgIGlmICh0b2tlbi5pZGVudGlmaWVyICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRva2VuLmlkZW50aWZpZXIucmVmZXJlbmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBleHBvcnRzMi50b2tlblJlZmVyZW5jZSA9IHRva2VuUmVmZXJlbmNlO1xuICAgIHZhciBDb21waWxlU3R5bGVzaGVldE1ldGFkYXRhID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3Ioe1xuICAgICAgICBtb2R1bGVVcmwsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgc3R5bGVVcmxzXG4gICAgICB9ID0ge30pIHtcbiAgICAgICAgdGhpcy5tb2R1bGVVcmwgPSBtb2R1bGVVcmwgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zdHlsZXMgPSBfbm9ybWFsaXplQXJyYXkoc3R5bGVzKTtcbiAgICAgICAgdGhpcy5zdHlsZVVybHMgPSBfbm9ybWFsaXplQXJyYXkoc3R5bGVVcmxzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLkNvbXBpbGVTdHlsZXNoZWV0TWV0YWRhdGEgPSBDb21waWxlU3R5bGVzaGVldE1ldGFkYXRhO1xuICAgIHZhciBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKHtcbiAgICAgICAgZW5jYXBzdWxhdGlvbixcbiAgICAgICAgdGVtcGxhdGUsXG4gICAgICAgIHRlbXBsYXRlVXJsLFxuICAgICAgICBodG1sQXN0LFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIHN0eWxlVXJscyxcbiAgICAgICAgZXh0ZXJuYWxTdHlsZXNoZWV0cyxcbiAgICAgICAgYW5pbWF0aW9ucyxcbiAgICAgICAgbmdDb250ZW50U2VsZWN0b3JzLFxuICAgICAgICBpbnRlcnBvbGF0aW9uLFxuICAgICAgICBpc0lubGluZSxcbiAgICAgICAgcHJlc2VydmVXaGl0ZXNwYWNlc1xuICAgICAgfSkge1xuICAgICAgICB0aGlzLmVuY2Fwc3VsYXRpb24gPSBlbmNhcHN1bGF0aW9uO1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgIHRoaXMudGVtcGxhdGVVcmwgPSB0ZW1wbGF0ZVVybDtcbiAgICAgICAgdGhpcy5odG1sQXN0ID0gaHRtbEFzdDtcbiAgICAgICAgdGhpcy5zdHlsZXMgPSBfbm9ybWFsaXplQXJyYXkoc3R5bGVzKTtcbiAgICAgICAgdGhpcy5zdHlsZVVybHMgPSBfbm9ybWFsaXplQXJyYXkoc3R5bGVVcmxzKTtcbiAgICAgICAgdGhpcy5leHRlcm5hbFN0eWxlc2hlZXRzID0gX25vcm1hbGl6ZUFycmF5KGV4dGVybmFsU3R5bGVzaGVldHMpO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbnMgPSBhbmltYXRpb25zID8gZmxhdHRlbihhbmltYXRpb25zKSA6IFtdO1xuICAgICAgICB0aGlzLm5nQ29udGVudFNlbGVjdG9ycyA9IG5nQ29udGVudFNlbGVjdG9ycyB8fCBbXTtcbiAgICAgICAgaWYgKGludGVycG9sYXRpb24gJiYgaW50ZXJwb2xhdGlvbi5sZW5ndGggIT0gMikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJ2ludGVycG9sYXRpb24nIHNob3VsZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBzeW1ib2wuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvbjtcbiAgICAgICAgdGhpcy5pc0lubGluZSA9IGlzSW5saW5lO1xuICAgICAgICB0aGlzLnByZXNlcnZlV2hpdGVzcGFjZXMgPSBwcmVzZXJ2ZVdoaXRlc3BhY2VzO1xuICAgICAgfVxuICAgICAgdG9TdW1tYXJ5KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5nQ29udGVudFNlbGVjdG9yczogdGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnMsXG4gICAgICAgICAgZW5jYXBzdWxhdGlvbjogdGhpcy5lbmNhcHN1bGF0aW9uLFxuICAgICAgICAgIHN0eWxlczogdGhpcy5zdHlsZXMsXG4gICAgICAgICAgYW5pbWF0aW9uczogdGhpcy5hbmltYXRpb25zXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5Db21waWxlVGVtcGxhdGVNZXRhZGF0YSA9IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhO1xuICAgIHZhciBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEgPSBjbGFzcyB7XG4gICAgICBzdGF0aWMgY3JlYXRlKHtcbiAgICAgICAgaXNIb3N0LFxuICAgICAgICB0eXBlLFxuICAgICAgICBpc0NvbXBvbmVudCxcbiAgICAgICAgc2VsZWN0b3IsXG4gICAgICAgIGV4cG9ydEFzLFxuICAgICAgICBjaGFuZ2VEZXRlY3Rpb24sXG4gICAgICAgIGlucHV0cyxcbiAgICAgICAgb3V0cHV0cyxcbiAgICAgICAgaG9zdCxcbiAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICB2aWV3UHJvdmlkZXJzLFxuICAgICAgICBxdWVyaWVzLFxuICAgICAgICBndWFyZHMsXG4gICAgICAgIHZpZXdRdWVyaWVzLFxuICAgICAgICBlbnRyeUNvbXBvbmVudHMsXG4gICAgICAgIHRlbXBsYXRlLFxuICAgICAgICBjb21wb25lbnRWaWV3VHlwZSxcbiAgICAgICAgcmVuZGVyZXJUeXBlLFxuICAgICAgICBjb21wb25lbnRGYWN0b3J5XG4gICAgICB9KSB7XG4gICAgICAgIGNvbnN0IGhvc3RMaXN0ZW5lcnMgPSB7fTtcbiAgICAgICAgY29uc3QgaG9zdFByb3BlcnRpZXMgPSB7fTtcbiAgICAgICAgY29uc3QgaG9zdEF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgaWYgKGhvc3QgIT0gbnVsbCkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKGhvc3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBob3N0W2tleV07XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0ga2V5Lm1hdGNoKEhPU1RfUkVHX0VYUCk7XG4gICAgICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBob3N0QXR0cmlidXRlc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoZXNbMV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICBob3N0UHJvcGVydGllc1ttYXRjaGVzWzFdXSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaGVzWzJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgaG9zdExpc3RlbmVyc1ttYXRjaGVzWzJdXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlucHV0c01hcCA9IHt9O1xuICAgICAgICBpZiAoaW5wdXRzICE9IG51bGwpIHtcbiAgICAgICAgICBpbnB1dHMuZm9yRWFjaCgoYmluZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSB1dGlsXzEuc3BsaXRBdENvbG9uKGJpbmRDb25maWcsIFtiaW5kQ29uZmlnLCBiaW5kQ29uZmlnXSk7XG4gICAgICAgICAgICBpbnB1dHNNYXBbcGFydHNbMF1dID0gcGFydHNbMV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3V0cHV0c01hcCA9IHt9O1xuICAgICAgICBpZiAob3V0cHV0cyAhPSBudWxsKSB7XG4gICAgICAgICAgb3V0cHV0cy5mb3JFYWNoKChiaW5kQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHV0aWxfMS5zcGxpdEF0Q29sb24oYmluZENvbmZpZywgW2JpbmRDb25maWcsIGJpbmRDb25maWddKTtcbiAgICAgICAgICAgIG91dHB1dHNNYXBbcGFydHNbMF1dID0gcGFydHNbMV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEoe1xuICAgICAgICAgIGlzSG9zdCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGlzQ29tcG9uZW50OiAhIWlzQ29tcG9uZW50LFxuICAgICAgICAgIHNlbGVjdG9yLFxuICAgICAgICAgIGV4cG9ydEFzLFxuICAgICAgICAgIGNoYW5nZURldGVjdGlvbixcbiAgICAgICAgICBpbnB1dHM6IGlucHV0c01hcCxcbiAgICAgICAgICBvdXRwdXRzOiBvdXRwdXRzTWFwLFxuICAgICAgICAgIGhvc3RMaXN0ZW5lcnMsXG4gICAgICAgICAgaG9zdFByb3BlcnRpZXMsXG4gICAgICAgICAgaG9zdEF0dHJpYnV0ZXMsXG4gICAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICAgIHZpZXdQcm92aWRlcnMsXG4gICAgICAgICAgcXVlcmllcyxcbiAgICAgICAgICBndWFyZHMsXG4gICAgICAgICAgdmlld1F1ZXJpZXMsXG4gICAgICAgICAgZW50cnlDb21wb25lbnRzLFxuICAgICAgICAgIHRlbXBsYXRlLFxuICAgICAgICAgIGNvbXBvbmVudFZpZXdUeXBlLFxuICAgICAgICAgIHJlbmRlcmVyVHlwZSxcbiAgICAgICAgICBjb21wb25lbnRGYWN0b3J5XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3RydWN0b3Ioe1xuICAgICAgICBpc0hvc3QsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGlzQ29tcG9uZW50LFxuICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgZXhwb3J0QXMsXG4gICAgICAgIGNoYW5nZURldGVjdGlvbixcbiAgICAgICAgaW5wdXRzLFxuICAgICAgICBvdXRwdXRzLFxuICAgICAgICBob3N0TGlzdGVuZXJzLFxuICAgICAgICBob3N0UHJvcGVydGllcyxcbiAgICAgICAgaG9zdEF0dHJpYnV0ZXMsXG4gICAgICAgIHByb3ZpZGVycyxcbiAgICAgICAgdmlld1Byb3ZpZGVycyxcbiAgICAgICAgcXVlcmllcyxcbiAgICAgICAgZ3VhcmRzLFxuICAgICAgICB2aWV3UXVlcmllcyxcbiAgICAgICAgZW50cnlDb21wb25lbnRzLFxuICAgICAgICB0ZW1wbGF0ZSxcbiAgICAgICAgY29tcG9uZW50Vmlld1R5cGUsXG4gICAgICAgIHJlbmRlcmVyVHlwZSxcbiAgICAgICAgY29tcG9uZW50RmFjdG9yeVxuICAgICAgfSkge1xuICAgICAgICB0aGlzLmlzSG9zdCA9ICEhaXNIb3N0O1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmlzQ29tcG9uZW50ID0gaXNDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICAgICAgdGhpcy5leHBvcnRBcyA9IGV4cG9ydEFzO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvbiA9IGNoYW5nZURldGVjdGlvbjtcbiAgICAgICAgdGhpcy5pbnB1dHMgPSBpbnB1dHM7XG4gICAgICAgIHRoaXMub3V0cHV0cyA9IG91dHB1dHM7XG4gICAgICAgIHRoaXMuaG9zdExpc3RlbmVycyA9IGhvc3RMaXN0ZW5lcnM7XG4gICAgICAgIHRoaXMuaG9zdFByb3BlcnRpZXMgPSBob3N0UHJvcGVydGllcztcbiAgICAgICAgdGhpcy5ob3N0QXR0cmlidXRlcyA9IGhvc3RBdHRyaWJ1dGVzO1xuICAgICAgICB0aGlzLnByb3ZpZGVycyA9IF9ub3JtYWxpemVBcnJheShwcm92aWRlcnMpO1xuICAgICAgICB0aGlzLnZpZXdQcm92aWRlcnMgPSBfbm9ybWFsaXplQXJyYXkodmlld1Byb3ZpZGVycyk7XG4gICAgICAgIHRoaXMucXVlcmllcyA9IF9ub3JtYWxpemVBcnJheShxdWVyaWVzKTtcbiAgICAgICAgdGhpcy5ndWFyZHMgPSBndWFyZHM7XG4gICAgICAgIHRoaXMudmlld1F1ZXJpZXMgPSBfbm9ybWFsaXplQXJyYXkodmlld1F1ZXJpZXMpO1xuICAgICAgICB0aGlzLmVudHJ5Q29tcG9uZW50cyA9IF9ub3JtYWxpemVBcnJheShlbnRyeUNvbXBvbmVudHMpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50Vmlld1R5cGUgPSBjb21wb25lbnRWaWV3VHlwZTtcbiAgICAgICAgdGhpcy5yZW5kZXJlclR5cGUgPSByZW5kZXJlclR5cGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgICB9XG4gICAgICB0b1N1bW1hcnkoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VtbWFyeUtpbmQ6IENvbXBpbGVTdW1tYXJ5S2luZC5EaXJlY3RpdmUsXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgIGlzQ29tcG9uZW50OiB0aGlzLmlzQ29tcG9uZW50LFxuICAgICAgICAgIHNlbGVjdG9yOiB0aGlzLnNlbGVjdG9yLFxuICAgICAgICAgIGV4cG9ydEFzOiB0aGlzLmV4cG9ydEFzLFxuICAgICAgICAgIGlucHV0czogdGhpcy5pbnB1dHMsXG4gICAgICAgICAgb3V0cHV0czogdGhpcy5vdXRwdXRzLFxuICAgICAgICAgIGhvc3RMaXN0ZW5lcnM6IHRoaXMuaG9zdExpc3RlbmVycyxcbiAgICAgICAgICBob3N0UHJvcGVydGllczogdGhpcy5ob3N0UHJvcGVydGllcyxcbiAgICAgICAgICBob3N0QXR0cmlidXRlczogdGhpcy5ob3N0QXR0cmlidXRlcyxcbiAgICAgICAgICBwcm92aWRlcnM6IHRoaXMucHJvdmlkZXJzLFxuICAgICAgICAgIHZpZXdQcm92aWRlcnM6IHRoaXMudmlld1Byb3ZpZGVycyxcbiAgICAgICAgICBxdWVyaWVzOiB0aGlzLnF1ZXJpZXMsXG4gICAgICAgICAgZ3VhcmRzOiB0aGlzLmd1YXJkcyxcbiAgICAgICAgICB2aWV3UXVlcmllczogdGhpcy52aWV3UXVlcmllcyxcbiAgICAgICAgICBlbnRyeUNvbXBvbmVudHM6IHRoaXMuZW50cnlDb21wb25lbnRzLFxuICAgICAgICAgIGNoYW5nZURldGVjdGlvbjogdGhpcy5jaGFuZ2VEZXRlY3Rpb24sXG4gICAgICAgICAgdGVtcGxhdGU6IHRoaXMudGVtcGxhdGUgJiYgdGhpcy50ZW1wbGF0ZS50b1N1bW1hcnkoKSxcbiAgICAgICAgICBjb21wb25lbnRWaWV3VHlwZTogdGhpcy5jb21wb25lbnRWaWV3VHlwZSxcbiAgICAgICAgICByZW5kZXJlclR5cGU6IHRoaXMucmVuZGVyZXJUeXBlLFxuICAgICAgICAgIGNvbXBvbmVudEZhY3Rvcnk6IHRoaXMuY29tcG9uZW50RmFjdG9yeVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhID0gQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhO1xuICAgIHZhciBDb21waWxlUGlwZU1ldGFkYXRhID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3Ioe1xuICAgICAgICB0eXBlLFxuICAgICAgICBuYW1lLFxuICAgICAgICBwdXJlXG4gICAgICB9KSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMucHVyZSA9ICEhcHVyZTtcbiAgICAgIH1cbiAgICAgIHRvU3VtbWFyeSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdW1tYXJ5S2luZDogQ29tcGlsZVN1bW1hcnlLaW5kLlBpcGUsXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICBwdXJlOiB0aGlzLnB1cmVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLkNvbXBpbGVQaXBlTWV0YWRhdGEgPSBDb21waWxlUGlwZU1ldGFkYXRhO1xuICAgIHZhciBDb21waWxlU2hhbGxvd01vZHVsZU1ldGFkYXRhID0gY2xhc3Mge1xuICAgIH07XG4gICAgZXhwb3J0czIuQ29tcGlsZVNoYWxsb3dNb2R1bGVNZXRhZGF0YSA9IENvbXBpbGVTaGFsbG93TW9kdWxlTWV0YWRhdGE7XG4gICAgdmFyIENvbXBpbGVOZ01vZHVsZU1ldGFkYXRhID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3Ioe1xuICAgICAgICB0eXBlLFxuICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgIGRlY2xhcmVkRGlyZWN0aXZlcyxcbiAgICAgICAgZXhwb3J0ZWREaXJlY3RpdmVzLFxuICAgICAgICBkZWNsYXJlZFBpcGVzLFxuICAgICAgICBleHBvcnRlZFBpcGVzLFxuICAgICAgICBlbnRyeUNvbXBvbmVudHMsXG4gICAgICAgIGJvb3RzdHJhcENvbXBvbmVudHMsXG4gICAgICAgIGltcG9ydGVkTW9kdWxlcyxcbiAgICAgICAgZXhwb3J0ZWRNb2R1bGVzLFxuICAgICAgICBzY2hlbWFzLFxuICAgICAgICB0cmFuc2l0aXZlTW9kdWxlLFxuICAgICAgICBpZFxuICAgICAgfSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlIHx8IG51bGw7XG4gICAgICAgIHRoaXMuZGVjbGFyZWREaXJlY3RpdmVzID0gX25vcm1hbGl6ZUFycmF5KGRlY2xhcmVkRGlyZWN0aXZlcyk7XG4gICAgICAgIHRoaXMuZXhwb3J0ZWREaXJlY3RpdmVzID0gX25vcm1hbGl6ZUFycmF5KGV4cG9ydGVkRGlyZWN0aXZlcyk7XG4gICAgICAgIHRoaXMuZGVjbGFyZWRQaXBlcyA9IF9ub3JtYWxpemVBcnJheShkZWNsYXJlZFBpcGVzKTtcbiAgICAgICAgdGhpcy5leHBvcnRlZFBpcGVzID0gX25vcm1hbGl6ZUFycmF5KGV4cG9ydGVkUGlwZXMpO1xuICAgICAgICB0aGlzLnByb3ZpZGVycyA9IF9ub3JtYWxpemVBcnJheShwcm92aWRlcnMpO1xuICAgICAgICB0aGlzLmVudHJ5Q29tcG9uZW50cyA9IF9ub3JtYWxpemVBcnJheShlbnRyeUNvbXBvbmVudHMpO1xuICAgICAgICB0aGlzLmJvb3RzdHJhcENvbXBvbmVudHMgPSBfbm9ybWFsaXplQXJyYXkoYm9vdHN0cmFwQ29tcG9uZW50cyk7XG4gICAgICAgIHRoaXMuaW1wb3J0ZWRNb2R1bGVzID0gX25vcm1hbGl6ZUFycmF5KGltcG9ydGVkTW9kdWxlcyk7XG4gICAgICAgIHRoaXMuZXhwb3J0ZWRNb2R1bGVzID0gX25vcm1hbGl6ZUFycmF5KGV4cG9ydGVkTW9kdWxlcyk7XG4gICAgICAgIHRoaXMuc2NoZW1hcyA9IF9ub3JtYWxpemVBcnJheShzY2hlbWFzKTtcbiAgICAgICAgdGhpcy5pZCA9IGlkIHx8IG51bGw7XG4gICAgICAgIHRoaXMudHJhbnNpdGl2ZU1vZHVsZSA9IHRyYW5zaXRpdmVNb2R1bGUgfHwgbnVsbDtcbiAgICAgIH1cbiAgICAgIHRvU3VtbWFyeSgpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlMyA9IHRoaXMudHJhbnNpdGl2ZU1vZHVsZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdW1tYXJ5S2luZDogQ29tcGlsZVN1bW1hcnlLaW5kLk5nTW9kdWxlLFxuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICBlbnRyeUNvbXBvbmVudHM6IG1vZHVsZTMuZW50cnlDb21wb25lbnRzLFxuICAgICAgICAgIHByb3ZpZGVyczogbW9kdWxlMy5wcm92aWRlcnMsXG4gICAgICAgICAgbW9kdWxlczogbW9kdWxlMy5tb2R1bGVzLFxuICAgICAgICAgIGV4cG9ydGVkRGlyZWN0aXZlczogbW9kdWxlMy5leHBvcnRlZERpcmVjdGl2ZXMsXG4gICAgICAgICAgZXhwb3J0ZWRQaXBlczogbW9kdWxlMy5leHBvcnRlZFBpcGVzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5Db21waWxlTmdNb2R1bGVNZXRhZGF0YSA9IENvbXBpbGVOZ01vZHVsZU1ldGFkYXRhO1xuICAgIHZhciBUcmFuc2l0aXZlQ29tcGlsZU5nTW9kdWxlTWV0YWRhdGEgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVzU2V0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gW107XG4gICAgICAgIHRoaXMuZXhwb3J0ZWREaXJlY3RpdmVzU2V0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5leHBvcnRlZERpcmVjdGl2ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5waXBlc1NldCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMucGlwZXMgPSBbXTtcbiAgICAgICAgdGhpcy5leHBvcnRlZFBpcGVzU2V0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5leHBvcnRlZFBpcGVzID0gW107XG4gICAgICAgIHRoaXMubW9kdWxlc1NldCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMubW9kdWxlcyA9IFtdO1xuICAgICAgICB0aGlzLmVudHJ5Q29tcG9uZW50c1NldCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuZW50cnlDb21wb25lbnRzID0gW107XG4gICAgICAgIHRoaXMucHJvdmlkZXJzID0gW107XG4gICAgICB9XG4gICAgICBhZGRQcm92aWRlcihwcm92aWRlciwgbW9kdWxlMykge1xuICAgICAgICB0aGlzLnByb3ZpZGVycy5wdXNoKHtcbiAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgICBtb2R1bGU6IG1vZHVsZTNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBhZGREaXJlY3RpdmUoaWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpcmVjdGl2ZXNTZXQuaGFzKGlkLnJlZmVyZW5jZSkpIHtcbiAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXNTZXQuYWRkKGlkLnJlZmVyZW5jZSk7XG4gICAgICAgICAgdGhpcy5kaXJlY3RpdmVzLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRFeHBvcnRlZERpcmVjdGl2ZShpZCkge1xuICAgICAgICBpZiAoIXRoaXMuZXhwb3J0ZWREaXJlY3RpdmVzU2V0LmhhcyhpZC5yZWZlcmVuY2UpKSB7XG4gICAgICAgICAgdGhpcy5leHBvcnRlZERpcmVjdGl2ZXNTZXQuYWRkKGlkLnJlZmVyZW5jZSk7XG4gICAgICAgICAgdGhpcy5leHBvcnRlZERpcmVjdGl2ZXMucHVzaChpZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFkZFBpcGUoaWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBpcGVzU2V0LmhhcyhpZC5yZWZlcmVuY2UpKSB7XG4gICAgICAgICAgdGhpcy5waXBlc1NldC5hZGQoaWQucmVmZXJlbmNlKTtcbiAgICAgICAgICB0aGlzLnBpcGVzLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRFeHBvcnRlZFBpcGUoaWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmV4cG9ydGVkUGlwZXNTZXQuaGFzKGlkLnJlZmVyZW5jZSkpIHtcbiAgICAgICAgICB0aGlzLmV4cG9ydGVkUGlwZXNTZXQuYWRkKGlkLnJlZmVyZW5jZSk7XG4gICAgICAgICAgdGhpcy5leHBvcnRlZFBpcGVzLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRNb2R1bGUoaWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZHVsZXNTZXQuaGFzKGlkLnJlZmVyZW5jZSkpIHtcbiAgICAgICAgICB0aGlzLm1vZHVsZXNTZXQuYWRkKGlkLnJlZmVyZW5jZSk7XG4gICAgICAgICAgdGhpcy5tb2R1bGVzLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRFbnRyeUNvbXBvbmVudChlYykge1xuICAgICAgICBpZiAoIXRoaXMuZW50cnlDb21wb25lbnRzU2V0LmhhcyhlYy5jb21wb25lbnRUeXBlKSkge1xuICAgICAgICAgIHRoaXMuZW50cnlDb21wb25lbnRzU2V0LmFkZChlYy5jb21wb25lbnRUeXBlKTtcbiAgICAgICAgICB0aGlzLmVudHJ5Q29tcG9uZW50cy5wdXNoKGVjKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuVHJhbnNpdGl2ZUNvbXBpbGVOZ01vZHVsZU1ldGFkYXRhID0gVHJhbnNpdGl2ZUNvbXBpbGVOZ01vZHVsZU1ldGFkYXRhO1xuICAgIGZ1bmN0aW9uIF9ub3JtYWxpemVBcnJheShvYmopIHtcbiAgICAgIHJldHVybiBvYmogfHwgW107XG4gICAgfVxuICAgIHZhciBQcm92aWRlck1ldGEgPSBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3Rvcih0b2tlbiwge1xuICAgICAgICB1c2VDbGFzcyxcbiAgICAgICAgdXNlVmFsdWUsXG4gICAgICAgIHVzZUV4aXN0aW5nLFxuICAgICAgICB1c2VGYWN0b3J5LFxuICAgICAgICBkZXBzLFxuICAgICAgICBtdWx0aVxuICAgICAgfSkge1xuICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgIHRoaXMudXNlQ2xhc3MgPSB1c2VDbGFzcyB8fCBudWxsO1xuICAgICAgICB0aGlzLnVzZVZhbHVlID0gdXNlVmFsdWU7XG4gICAgICAgIHRoaXMudXNlRXhpc3RpbmcgPSB1c2VFeGlzdGluZztcbiAgICAgICAgdGhpcy51c2VGYWN0b3J5ID0gdXNlRmFjdG9yeSB8fCBudWxsO1xuICAgICAgICB0aGlzLmRlcGVuZGVuY2llcyA9IGRlcHMgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5tdWx0aSA9ICEhbXVsdGk7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5Qcm92aWRlck1ldGEgPSBQcm92aWRlck1ldGE7XG4gICAgZnVuY3Rpb24gZmxhdHRlbihsaXN0KSB7XG4gICAgICByZXR1cm4gbGlzdC5yZWR1Y2UoKGZsYXQsIGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgZmxhdEl0ZW0gPSBBcnJheS5pc0FycmF5KGl0ZW0pID8gZmxhdHRlbihpdGVtKSA6IGl0ZW07XG4gICAgICAgIHJldHVybiBmbGF0LmNvbmNhdChmbGF0SXRlbSk7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuICAgIGV4cG9ydHMyLmZsYXR0ZW4gPSBmbGF0dGVuO1xuICAgIGZ1bmN0aW9uIGppdFNvdXJjZVVybCh1cmwpIHtcbiAgICAgIHJldHVybiB1cmwucmVwbGFjZSgvKFxcdys6XFwvXFwvW1xcdzotXSspPyhcXC8rKT8vLCBcIm5nOi8vL1wiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdGVtcGxhdGVTb3VyY2VVcmwobmdNb2R1bGVUeXBlLCBjb21wTWV0YSwgdGVtcGxhdGVNZXRhKSB7XG4gICAgICBsZXQgdXJsO1xuICAgICAgaWYgKHRlbXBsYXRlTWV0YS5pc0lubGluZSkge1xuICAgICAgICBpZiAoY29tcE1ldGEudHlwZS5yZWZlcmVuY2UgaW5zdGFuY2VvZiBzdGF0aWNfc3ltYm9sXzEuU3RhdGljU3ltYm9sKSB7XG4gICAgICAgICAgdXJsID0gYCR7Y29tcE1ldGEudHlwZS5yZWZlcmVuY2UuZmlsZVBhdGh9LiR7Y29tcE1ldGEudHlwZS5yZWZlcmVuY2UubmFtZX0uaHRtbGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsID0gYCR7aWRlbnRpZmllck5hbWUobmdNb2R1bGVUeXBlKX0vJHtpZGVudGlmaWVyTmFtZShjb21wTWV0YS50eXBlKX0uaHRtbGA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IHRlbXBsYXRlTWV0YS50ZW1wbGF0ZVVybDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21wTWV0YS50eXBlLnJlZmVyZW5jZSBpbnN0YW5jZW9mIHN0YXRpY19zeW1ib2xfMS5TdGF0aWNTeW1ib2wgPyB1cmwgOiBqaXRTb3VyY2VVcmwodXJsKTtcbiAgICB9XG4gICAgZXhwb3J0czIudGVtcGxhdGVTb3VyY2VVcmwgPSB0ZW1wbGF0ZVNvdXJjZVVybDtcbiAgICBmdW5jdGlvbiBzaGFyZWRTdHlsZXNoZWV0Sml0VXJsKG1ldGEsIGlkKSB7XG4gICAgICBjb25zdCBwYXRoUGFydHMgPSBtZXRhLm1vZHVsZVVybC5zcGxpdCgvXFwvXFxcXC9nKTtcbiAgICAgIGNvbnN0IGJhc2VOYW1lID0gcGF0aFBhcnRzW3BhdGhQYXJ0cy5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBqaXRTb3VyY2VVcmwoYGNzcy8ke2lkfSR7YmFzZU5hbWV9Lm5nc3R5bGUuanNgKTtcbiAgICB9XG4gICAgZXhwb3J0czIuc2hhcmVkU3R5bGVzaGVldEppdFVybCA9IHNoYXJlZFN0eWxlc2hlZXRKaXRVcmw7XG4gICAgZnVuY3Rpb24gbmdNb2R1bGVKaXRVcmwobW9kdWxlTWV0YSkge1xuICAgICAgcmV0dXJuIGppdFNvdXJjZVVybChgJHtpZGVudGlmaWVyTmFtZShtb2R1bGVNZXRhLnR5cGUpfS9tb2R1bGUubmdmYWN0b3J5LmpzYCk7XG4gICAgfVxuICAgIGV4cG9ydHMyLm5nTW9kdWxlSml0VXJsID0gbmdNb2R1bGVKaXRVcmw7XG4gICAgZnVuY3Rpb24gdGVtcGxhdGVKaXRVcmwobmdNb2R1bGVUeXBlLCBjb21wTWV0YSkge1xuICAgICAgcmV0dXJuIGppdFNvdXJjZVVybChgJHtpZGVudGlmaWVyTmFtZShuZ01vZHVsZVR5cGUpfS8ke2lkZW50aWZpZXJOYW1lKGNvbXBNZXRhLnR5cGUpfS5uZ2ZhY3RvcnkuanNgKTtcbiAgICB9XG4gICAgZXhwb3J0czIudGVtcGxhdGVKaXRVcmwgPSB0ZW1wbGF0ZUppdFVybDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wYXJzZV91dGlsID0gX19jb21tb25KUzIoe1xuICBcIm5vZGVfbW9kdWxlcy9hbmd1bGFyLWh0bWwtcGFyc2VyL2xpYi9jb21waWxlci9zcmMvcGFyc2VfdXRpbC5qc1wiKGV4cG9ydHMyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMyLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgY2hhcnMgPSByZXF1aXJlX2NoYXJzKCk7XG4gICAgdmFyIGNvbXBpbGVfbWV0YWRhdGFfMSA9IHJlcXVpcmVfY29tcGlsZV9tZXRhZGF0YSgpO1xuICAgIHZhciBQYXJzZUxvY2F0aW9uID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoZmlsZSwgb2Zmc2V0LCBsaW5lLCBjb2wpIHtcbiAgICAgICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgICAgIHRoaXMuY29sID0gY29sO1xuICAgICAgfVxuICAgICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9mZnNldCAhPSBudWxsID8gYCR7dGhpcy5maWxlLnVybH1AJHt0aGlzLmxpbmV9OiR7dGhpcy5jb2x9YCA6IHRoaXMuZmlsZS51cmw7XG4gICAgICB9XG4gICAgICBtb3ZlQnkoZGVsdGEpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5maWxlLmNvbnRlbnQ7XG4gICAgICAgIGNvbnN0IGxlbiA9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIGxldCBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgbGV0IGxpbmUgPSB0aGlzLmxpbmU7XG4gICAgICAgIGxldCBjb2wgPSB0aGlzLmNvbDtcbiAgICAgICAgd2hpbGUgKG9mZnNldCA+IDAgJiYgZGVsdGEgPCAwKSB7XG4gICAgICAgICAgb2Zmc2V0LS07XG4gICAgICAgICAgZGVsdGErKztcbiAgICAgICAgICBjb25zdCBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0KG9mZnNldCk7XG4gICAgICAgICAgaWYgKGNoID09IGNoYXJzLiRMRikge1xuICAgICAgICAgICAgbGluZS0tO1xuICAgICAgICAgICAgY29uc3QgcHJpb3JMaW5lID0gc291cmNlLnN1YnN0cigwLCBvZmZzZXQgLSAxKS5sYXN0SW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJzLiRMRikpO1xuICAgICAgICAgICAgY29sID0gcHJpb3JMaW5lID4gMCA/IG9mZnNldCAtIHByaW9yTGluZSA6IG9mZnNldDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBsZW4gJiYgZGVsdGEgPiAwKSB7XG4gICAgICAgICAgY29uc3QgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgIGRlbHRhLS07XG4gICAgICAgICAgaWYgKGNoID09IGNoYXJzLiRMRikge1xuICAgICAgICAgICAgbGluZSsrO1xuICAgICAgICAgICAgY29sID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sKys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUGFyc2VMb2NhdGlvbih0aGlzLmZpbGUsIG9mZnNldCwgbGluZSwgY29sKTtcbiAgICAgIH1cbiAgICAgIGdldENvbnRleHQobWF4Q2hhcnMsIG1heExpbmVzKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmZpbGUuY29udGVudDtcbiAgICAgICAgbGV0IHN0YXJ0T2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGlmIChzdGFydE9mZnNldCAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID4gY29udGVudC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IGNvbnRlbnQubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0O1xuICAgICAgICAgIGxldCBjdHhDaGFycyA9IDA7XG4gICAgICAgICAgbGV0IGN0eExpbmVzID0gMDtcbiAgICAgICAgICB3aGlsZSAoY3R4Q2hhcnMgPCBtYXhDaGFycyAmJiBzdGFydE9mZnNldCA+IDApIHtcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0LS07XG4gICAgICAgICAgICBjdHhDaGFycysrO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnRbc3RhcnRPZmZzZXRdID09IFwiXFxuXCIpIHtcbiAgICAgICAgICAgICAgaWYgKCsrY3R4TGluZXMgPT0gbWF4TGluZXMpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjdHhDaGFycyA9IDA7XG4gICAgICAgICAgY3R4TGluZXMgPSAwO1xuICAgICAgICAgIHdoaWxlIChjdHhDaGFycyA8IG1heENoYXJzICYmIGVuZE9mZnNldCA8IGNvbnRlbnQubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgZW5kT2Zmc2V0Kys7XG4gICAgICAgICAgICBjdHhDaGFycysrO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnRbZW5kT2Zmc2V0XSA9PSBcIlxcblwiKSB7XG4gICAgICAgICAgICAgIGlmICgrK2N0eExpbmVzID09IG1heExpbmVzKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJlZm9yZTogY29udGVudC5zdWJzdHJpbmcoc3RhcnRPZmZzZXQsIHRoaXMub2Zmc2V0KSxcbiAgICAgICAgICAgIGFmdGVyOiBjb250ZW50LnN1YnN0cmluZyh0aGlzLm9mZnNldCwgZW5kT2Zmc2V0ICsgMSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuUGFyc2VMb2NhdGlvbiA9IFBhcnNlTG9jYXRpb247XG4gICAgdmFyIFBhcnNlU291cmNlRmlsZSA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKGNvbnRlbnQsIHVybCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xuICAgICAgICB0aGlzLnVybCA9IHVybDtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4cG9ydHMyLlBhcnNlU291cmNlRmlsZSA9IFBhcnNlU291cmNlRmlsZTtcbiAgICB2YXIgUGFyc2VTb3VyY2VTcGFuID0gY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCwgZGV0YWlscyA9IG51bGwpIHtcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICAgICAgdGhpcy5kZXRhaWxzID0gZGV0YWlscztcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydC5maWxlLmNvbnRlbnQuc3Vic3RyaW5nKHRoaXMuc3RhcnQub2Zmc2V0LCB0aGlzLmVuZC5vZmZzZXQpO1xuICAgICAgfVxuICAgIH07XG4gICAgZXhwb3J0czIuUGFyc2VTb3VyY2VTcGFuID0gUGFyc2VTb3VyY2VTcGFuO1xuICAgIGV4cG9ydHMyLkVNUFRZX1BBUlNFX0xPQ0FUSU9OID0gbmV3IFBhcnNlTG9jYXRpb24obmV3IFBhcnNlU291cmNlRmlsZShcIlwiLCBcIlwiKSwgMCwgMCwgMCk7XG4gICAgZXhwb3J0czIuRU1QVFlfU09VUkNFX1NQQU4gPSBuZXcgUGFyc2VTb3VyY2VTcGFuKGV4cG9ydHMyLkVNUFRZX1BBUlNFX0xPQ0FUSU9OLCBleHBvcnRzMi5FTVBUWV9QQVJTRV9MT0NBVElPTik7XG4gICAgdmFyIFBhcnNlRXJyb3JMZXZlbDtcbiAgICAoZnVuY3Rpb24oUGFyc2VFcnJvckxldmVsMikge1xuICAgICAgUGFyc2VFcnJvckxldmVsMltQYXJzZUVycm9yTGV2ZWwyW1wiV0FSTklOR1wiXSA9IDBdID0gXCJXQVJOSU5HXCI7XG4gICAgICBQYXJzZUVycm9yTGV2ZWwyW1BhcnNlRXJyb3JMZXZlbDJbXCJFUlJPUlwiXSA9IDFdID0gXCJFUlJPUlwiO1xuICAgIH0pKFBhcnNlRXJyb3JMZXZlbCA9IGV4cG9ydHMyLlBhcnNlRXJyb3JMZXZlbCB8fCAoZXhwb3J0czIuUGFyc2VFcnJvckxldmVsID0ge30pKTtcbiAgICB2YXIgUGFyc2VFcnJvciA9IGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKHNwYW4sIG1zZywgbGV2ZWwgPSBQYXJzZUVycm9yTGV2ZWwuRVJST1IpIHtcbiAgICAgICAgdGhpcy5zcGFuID0gc3BhbjtcbiAgICAgICAgdGhpcy5tc2cgPSBtc2c7XG4gICAgICAgIHRoaXMubGV2ZWwgPSBsZXZlbDtcbiAgICAgIH1cbiAgICAgIGNvbnRleHR1YWxNZXNzYWdlKCkge1xuICAgICAgICBjb25zdCBjdHggPSB0aGlzLnNwYW4uc3RhcnQuZ2V0Q29udGV4dCgxMDAsIDMpO1xuICAgICAgICByZXR1cm4gY3R4ID8gYCR7dGhpcy5tc2d9IChcIiR7Y3R4LmJlZm9yZX1bJHtQYXJzZUVycm9yTGV2ZWxbdGhpcy5sZXZlbF19IC0+XSR7Y3R4LmFmdGVyfVwiKWAgOiB0aGlzLm1zZztcbiAgICAgIH1cbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBjb25zdCBkZXRhaWxzID0gdGhpcy5zcGFuLmRldGFpbHMgPyBgLCAke3RoaXMuc3Bhbi5kZXRhaWxzfWAgOiBcIlwiO1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5jb250ZXh0dWFsTWVzc2FnZSgpfTogJHt0aGlzLnNwYW4uc3RhcnR9JHtkZXRhaWxzfWA7XG4gICAgICB9XG4gICAgfTtcbiAgICBleHBvcnRzMi5QYXJzZUVycm9yID0gUGFyc2VFcnJvcjtcbiAgICBmdW5jdGlvbiB0eXBlU291cmNlU3BhbihraW5kLCB0eXBlKSB7XG4gICAgICBjb25zdCBtb2R1bGVVcmwgPSBjb21waWxlX21ldGFkYXRhXzEuaWRlbnRpZmllck1vZHVsZVVybCh0eXBlKTtcbiAgICAgIGNvbnN0IHNvdXJjZUZpbGVOYW1lID0gbW9kdWxlVXJsICE9IG51bGwgPyBgaW4gJHtraW5kfSAke2NvbXBpbGVfbWV0YWRhdGFfMS5pZGVudGlmaWVyTmFtZSh0eXBlKX0gaW4gJHttb2R1bGVVcmx9YCA6IGBpbiAke2tpbmR9ICR7Y29tcGlsZV9tZXRhZGF0YV8xLmlkZW50aWZpZXJOYW1lKHR5cGUpfWA7XG4gICAgICBjb25zdCBzb3VyY2VGaWxlID0gbmV3IFBhcnNlU291cmNlRmlsZShcIlwiLCBzb3VyY2VGaWxlTmFtZSk7XG4gICAgICByZXR1cm4gbmV3IFBhcnNlU291cmNlU3BhbihuZXcgUGFyc2VMb2NhdGlvbihzb3VyY2VGaWxlLCAtMSwgLTEsIC0xKSwgbmV3IFBhcnNlTG9jYXRpb24oc291cmNlRmlsZSwgLTEsIC0xLCAtMSkpO1xuICAgIH1cbiAgICBleHBvcnRzMi50eXBlU291cmNlU3BhbiA9IHR5cGVTb3VyY2VTcGFuO1xuICAgIGZ1bmN0aW9uIHIzSml0VHlwZVNvdXJjZVNwYW4oa2luZCwgdHlwZU5hbWUsIHNvdXJjZVVybCkge1xuICAgICAgY29uc3Qgc291cmNlRmlsZU5hbWUgPSBgaW4gJHtraW5kfSAke3R5cGVOYW1lfSBpbiAke3NvdXJjZVVybH1gO1xuICAgICAgY29uc3Qgc291cmNlRmlsZSA9IG5ldyBQYXJzZVNvdXJjZUZpbGUoXCJcIiwgc291cmNlRmlsZU5hbWUpO1xuICAgICAgcmV0dXJuIG5ldyBQYXJzZVNvdXJjZVNwYW4obmV3IFBhcnNlTG9jYXRpb24oc291cmNlRmlsZSwgLTEsIC0xLCAtMSksIG5ldyBQYXJzZUxvY2F0aW9uKHNvdXJjZUZpbGUsIC0xLCAtMSwgLTEpKTtcbiAgICB9XG4gICAgZXhwb3J0czIucjNKaXRUeXBlU291cmNlU3BhbiA9IHIzSml0VHlwZVNvdXJjZVNwYW47XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJpbnRfcHJlcHJvY2VzczMgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvcHJpbnQtcHJlcHJvY2Vzcy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIFBhcnNlU291cmNlU3BhblxuICAgIH0gPSByZXF1aXJlX3BhcnNlX3V0aWwoKTtcbiAgICB2YXIge1xuICAgICAgaHRtbFRyaW0sXG4gICAgICBnZXRMZWFkaW5nQW5kVHJhaWxpbmdIdG1sV2hpdGVzcGFjZSxcbiAgICAgIGhhc0h0bWxXaGl0ZXNwYWNlLFxuICAgICAgY2FuSGF2ZUludGVycG9sYXRpb24sXG4gICAgICBnZXROb2RlQ3NzU3R5bGVEaXNwbGF5LFxuICAgICAgaXNEYW5nbGluZ1NwYWNlU2Vuc2l0aXZlTm9kZSxcbiAgICAgIGlzSW5kZW50YXRpb25TZW5zaXRpdmVOb2RlLFxuICAgICAgaXNMZWFkaW5nU3BhY2VTZW5zaXRpdmVOb2RlLFxuICAgICAgaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlTm9kZSxcbiAgICAgIGlzV2hpdGVzcGFjZVNlbnNpdGl2ZU5vZGUsXG4gICAgICBpc1Z1ZVNjcmlwdFRhZ1xuICAgIH0gPSByZXF1aXJlX3V0aWxzMTEoKTtcbiAgICB2YXIgUFJFUFJPQ0VTU19QSVBFTElORSA9IFtyZW1vdmVJZ25vcmFibGVGaXJzdExmLCBtZXJnZUlmQ29uZGl0aW9uYWxTdGFydEVuZENvbW1lbnRJbnRvRWxlbWVudE9wZW5pbmdUYWcsIG1lcmdlQ2RhdGFJbnRvVGV4dCwgZXh0cmFjdEludGVycG9sYXRpb24sIGV4dHJhY3RXaGl0ZXNwYWNlcywgYWRkQ3NzRGlzcGxheSwgYWRkSXNTZWxmQ2xvc2luZywgYWRkSGFzSHRtQ29tcG9uZW50Q2xvc2luZ1RhZywgYWRkSXNTcGFjZVNlbnNpdGl2ZSwgbWVyZ2VTaW1wbGVFbGVtZW50SW50b1RleHQsIG1hcmtUc1NjcmlwdF07XG4gICAgZnVuY3Rpb24gcHJlcHJvY2Vzcyhhc3QsIG9wdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgZm4gb2YgUFJFUFJPQ0VTU19QSVBFTElORSkge1xuICAgICAgICBmbihhc3QsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFzdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVtb3ZlSWdub3JhYmxlRmlyc3RMZihhc3QpIHtcbiAgICAgIGFzdC53YWxrKChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiZWxlbWVudFwiICYmIG5vZGUudGFnRGVmaW5pdGlvbi5pZ25vcmVGaXJzdExmICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBub2RlLmNoaWxkcmVuWzBdLnR5cGUgPT09IFwidGV4dFwiICYmIG5vZGUuY2hpbGRyZW5bMF0udmFsdWVbMF0gPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gbm9kZS5jaGlsZHJlblswXTtcbiAgICAgICAgICBpZiAodGV4dC52YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRleHQudmFsdWUgPSB0ZXh0LnZhbHVlLnNsaWNlKDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1lcmdlSWZDb25kaXRpb25hbFN0YXJ0RW5kQ29tbWVudEludG9FbGVtZW50T3BlbmluZ1RhZyhhc3QpIHtcbiAgICAgIGNvbnN0IGlzVGFyZ2V0ID0gKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gXCJlbGVtZW50XCIgJiYgbm9kZS5wcmV2ICYmIG5vZGUucHJldi50eXBlID09PSBcImllQ29uZGl0aW9uYWxTdGFydENvbW1lbnRcIiAmJiBub2RlLnByZXYuc291cmNlU3Bhbi5lbmQub2Zmc2V0ID09PSBub2RlLnN0YXJ0U291cmNlU3Bhbi5zdGFydC5vZmZzZXQgJiYgbm9kZS5maXJzdENoaWxkICYmIG5vZGUuZmlyc3RDaGlsZC50eXBlID09PSBcImllQ29uZGl0aW9uYWxFbmRDb21tZW50XCIgJiYgbm9kZS5maXJzdENoaWxkLnNvdXJjZVNwYW4uc3RhcnQub2Zmc2V0ID09PSBub2RlLnN0YXJ0U291cmNlU3Bhbi5lbmQub2Zmc2V0O1xuICAgICAgYXN0LndhbGsoKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGlmICghaXNUYXJnZXQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaWVDb25kaXRpb25hbFN0YXJ0Q29tbWVudCA9IGNoaWxkLnByZXY7XG4gICAgICAgICAgICBjb25zdCBpZUNvbmRpdGlvbmFsRW5kQ29tbWVudCA9IGNoaWxkLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKGllQ29uZGl0aW9uYWxTdGFydENvbW1lbnQpO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRTb3VyY2VTcGFuID0gbmV3IFBhcnNlU291cmNlU3BhbihpZUNvbmRpdGlvbmFsU3RhcnRDb21tZW50LnNvdXJjZVNwYW4uc3RhcnQsIGllQ29uZGl0aW9uYWxFbmRDb21tZW50LnNvdXJjZVNwYW4uZW5kKTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVNwYW4gPSBuZXcgUGFyc2VTb3VyY2VTcGFuKHN0YXJ0U291cmNlU3Bhbi5zdGFydCwgY2hpbGQuc291cmNlU3Bhbi5lbmQpO1xuICAgICAgICAgICAgY2hpbGQuY29uZGl0aW9uID0gaWVDb25kaXRpb25hbFN0YXJ0Q29tbWVudC5jb25kaXRpb247XG4gICAgICAgICAgICBjaGlsZC5zb3VyY2VTcGFuID0gc291cmNlU3BhbjtcbiAgICAgICAgICAgIGNoaWxkLnN0YXJ0U291cmNlU3BhbiA9IHN0YXJ0U291cmNlU3BhbjtcbiAgICAgICAgICAgIGNoaWxkLnJlbW92ZUNoaWxkKGllQ29uZGl0aW9uYWxFbmRDb21tZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtZXJnZU5vZGVJbnRvVGV4dChhc3QsIHNob3VsZE1lcmdlLCBnZXRWYWx1ZSkge1xuICAgICAgYXN0LndhbGsoKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlICE9PSBcInRleHRcIiAmJiAhc2hvdWxkTWVyZ2UoY2hpbGQpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgIT09IFwidGV4dFwiKSB7XG4gICAgICAgICAgICAgIGNoaWxkLnR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgICAgICAgY2hpbGQudmFsdWUgPSBnZXRWYWx1ZShjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcmV2Q2hpbGQgPSBjaGlsZC5wcmV2O1xuICAgICAgICAgICAgaWYgKCFwcmV2Q2hpbGQgfHwgcHJldkNoaWxkLnR5cGUgIT09IFwidGV4dFwiKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldkNoaWxkLnZhbHVlICs9IGNoaWxkLnZhbHVlO1xuICAgICAgICAgICAgcHJldkNoaWxkLnNvdXJjZVNwYW4gPSBuZXcgUGFyc2VTb3VyY2VTcGFuKHByZXZDaGlsZC5zb3VyY2VTcGFuLnN0YXJ0LCBjaGlsZC5zb3VyY2VTcGFuLmVuZCk7XG4gICAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgICAgICAgIGktLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtZXJnZUNkYXRhSW50b1RleHQoYXN0KSB7XG4gICAgICByZXR1cm4gbWVyZ2VOb2RlSW50b1RleHQoYXN0LCAobm9kZSkgPT4gbm9kZS50eXBlID09PSBcImNkYXRhXCIsIChub2RlKSA9PiBgPCFbQ0RBVEFbJHtub2RlLnZhbHVlfV1dPmApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtZXJnZVNpbXBsZUVsZW1lbnRJbnRvVGV4dChhc3QpIHtcbiAgICAgIGNvbnN0IGlzU2ltcGxlRWxlbWVudCA9IChub2RlKSA9PiBub2RlLnR5cGUgPT09IFwiZWxlbWVudFwiICYmIG5vZGUuYXR0cnMubGVuZ3RoID09PSAwICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIG5vZGUuZmlyc3RDaGlsZC50eXBlID09PSBcInRleHRcIiAmJiAhaGFzSHRtbFdoaXRlc3BhY2Uobm9kZS5jaGlsZHJlblswXS52YWx1ZSkgJiYgIW5vZGUuZmlyc3RDaGlsZC5oYXNMZWFkaW5nU3BhY2VzICYmICFub2RlLmZpcnN0Q2hpbGQuaGFzVHJhaWxpbmdTcGFjZXMgJiYgbm9kZS5pc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZSAmJiAhbm9kZS5oYXNMZWFkaW5nU3BhY2VzICYmIG5vZGUuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlICYmICFub2RlLmhhc1RyYWlsaW5nU3BhY2VzICYmIG5vZGUucHJldiAmJiBub2RlLnByZXYudHlwZSA9PT0gXCJ0ZXh0XCIgJiYgbm9kZS5uZXh0ICYmIG5vZGUubmV4dC50eXBlID09PSBcInRleHRcIjtcbiAgICAgIGFzdC53YWxrKChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAoIWlzU2ltcGxlRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcmV2Q2hpbGQgPSBjaGlsZC5wcmV2O1xuICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gY2hpbGQubmV4dDtcbiAgICAgICAgICAgIHByZXZDaGlsZC52YWx1ZSArPSBgPCR7Y2hpbGQucmF3TmFtZX0+YCArIGNoaWxkLmZpcnN0Q2hpbGQudmFsdWUgKyBgPC8ke2NoaWxkLnJhd05hbWV9PmAgKyBuZXh0Q2hpbGQudmFsdWU7XG4gICAgICAgICAgICBwcmV2Q2hpbGQuc291cmNlU3BhbiA9IG5ldyBQYXJzZVNvdXJjZVNwYW4ocHJldkNoaWxkLnNvdXJjZVNwYW4uc3RhcnQsIG5leHRDaGlsZC5zb3VyY2VTcGFuLmVuZCk7XG4gICAgICAgICAgICBwcmV2Q2hpbGQuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlID0gbmV4dENoaWxkLmlzVHJhaWxpbmdTcGFjZVNlbnNpdGl2ZTtcbiAgICAgICAgICAgIHByZXZDaGlsZC5oYXNUcmFpbGluZ1NwYWNlcyA9IG5leHRDaGlsZC5oYXNUcmFpbGluZ1NwYWNlcztcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZChuZXh0Q2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGV4dHJhY3RJbnRlcnBvbGF0aW9uKGFzdCwgb3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMucGFyc2VyID09PSBcImh0bWxcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbnRlcnBvbGF0aW9uUmVnZXggPSAve3soLis/KX19L3M7XG4gICAgICBhc3Qud2Fsaygobm9kZSkgPT4ge1xuICAgICAgICBpZiAoIWNhbkhhdmVJbnRlcnBvbGF0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgIGlmIChjaGlsZC50eXBlICE9PSBcInRleHRcIikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBzdGFydFNvdXJjZVNwYW4gPSBjaGlsZC5zb3VyY2VTcGFuLnN0YXJ0O1xuICAgICAgICAgIGxldCBlbmRTb3VyY2VTcGFuID0gbnVsbDtcbiAgICAgICAgICBjb25zdCBjb21wb25lbnRzID0gY2hpbGQudmFsdWUuc3BsaXQoaW50ZXJwb2xhdGlvblJlZ2V4KTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpKyssIHN0YXJ0U291cmNlU3BhbiA9IGVuZFNvdXJjZVNwYW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29tcG9uZW50c1tpXTtcbiAgICAgICAgICAgIGlmIChpICUgMiA9PT0gMCkge1xuICAgICAgICAgICAgICBlbmRTb3VyY2VTcGFuID0gc3RhcnRTb3VyY2VTcGFuLm1vdmVCeSh2YWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG5vZGUuaW5zZXJ0Q2hpbGRCZWZvcmUoY2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICBzb3VyY2VTcGFuOiBuZXcgUGFyc2VTb3VyY2VTcGFuKHN0YXJ0U291cmNlU3BhbiwgZW5kU291cmNlU3BhbilcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuZFNvdXJjZVNwYW4gPSBzdGFydFNvdXJjZVNwYW4ubW92ZUJ5KHZhbHVlLmxlbmd0aCArIDQpO1xuICAgICAgICAgICAgbm9kZS5pbnNlcnRDaGlsZEJlZm9yZShjaGlsZCwge1xuICAgICAgICAgICAgICB0eXBlOiBcImludGVycG9sYXRpb25cIixcbiAgICAgICAgICAgICAgc291cmNlU3BhbjogbmV3IFBhcnNlU291cmNlU3BhbihzdGFydFNvdXJjZVNwYW4sIGVuZFNvdXJjZVNwYW4pLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogdmFsdWUubGVuZ3RoID09PSAwID8gW10gOiBbe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHNvdXJjZVNwYW46IG5ldyBQYXJzZVNvdXJjZVNwYW4oc3RhcnRTb3VyY2VTcGFuLm1vdmVCeSgyKSwgZW5kU291cmNlU3Bhbi5tb3ZlQnkoLTIpKVxuICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXh0cmFjdFdoaXRlc3BhY2VzKGFzdCkge1xuICAgICAgYXN0LndhbGsoKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBub2RlLmNoaWxkcmVuWzBdLnR5cGUgPT09IFwidGV4dFwiICYmIGh0bWxUcmltKG5vZGUuY2hpbGRyZW5bMF0udmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIG5vZGUuaGFzRGFuZ2xpbmdTcGFjZXMgPSBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1doaXRlc3BhY2VTZW5zaXRpdmUgPSBpc1doaXRlc3BhY2VTZW5zaXRpdmVOb2RlKG5vZGUpO1xuICAgICAgICBjb25zdCBpc0luZGVudGF0aW9uU2Vuc2l0aXZlID0gaXNJbmRlbnRhdGlvblNlbnNpdGl2ZU5vZGUobm9kZSk7XG4gICAgICAgIGlmICghaXNXaGl0ZXNwYWNlU2Vuc2l0aXZlKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGxlYWRpbmdXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICB0cmFpbGluZ1doaXRlc3BhY2VcbiAgICAgICAgICAgIH0gPSBnZXRMZWFkaW5nQW5kVHJhaWxpbmdIdG1sV2hpdGVzcGFjZShjaGlsZC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBwcmV2Q2hpbGQgPSBjaGlsZC5wcmV2O1xuICAgICAgICAgICAgY29uc3QgbmV4dENoaWxkID0gY2hpbGQubmV4dDtcbiAgICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICBpZiAobGVhZGluZ1doaXRlc3BhY2UgfHwgdHJhaWxpbmdXaGl0ZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuICAgICAgICAgICAgICAgICAgcHJldkNoaWxkLmhhc1RyYWlsaW5nU3BhY2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHRDaGlsZCkge1xuICAgICAgICAgICAgICAgICAgbmV4dENoaWxkLmhhc0xlYWRpbmdTcGFjZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hpbGQudmFsdWUgPSB0ZXh0O1xuICAgICAgICAgICAgICBjaGlsZC5zb3VyY2VTcGFuID0gbmV3IFBhcnNlU291cmNlU3BhbihjaGlsZC5zb3VyY2VTcGFuLnN0YXJ0Lm1vdmVCeShsZWFkaW5nV2hpdGVzcGFjZS5sZW5ndGgpLCBjaGlsZC5zb3VyY2VTcGFuLmVuZC5tb3ZlQnkoLXRyYWlsaW5nV2hpdGVzcGFjZS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgaWYgKGxlYWRpbmdXaGl0ZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuICAgICAgICAgICAgICAgICAgcHJldkNoaWxkLmhhc1RyYWlsaW5nU3BhY2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2hpbGQuaGFzTGVhZGluZ1NwYWNlcyA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHRyYWlsaW5nV2hpdGVzcGFjZSkge1xuICAgICAgICAgICAgICAgIGNoaWxkLmhhc1RyYWlsaW5nU3BhY2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dENoaWxkKSB7XG4gICAgICAgICAgICAgICAgICBuZXh0Q2hpbGQuaGFzTGVhZGluZ1NwYWNlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5vZGUuaXNXaGl0ZXNwYWNlU2Vuc2l0aXZlID0gaXNXaGl0ZXNwYWNlU2Vuc2l0aXZlO1xuICAgICAgICBub2RlLmlzSW5kZW50YXRpb25TZW5zaXRpdmUgPSBpc0luZGVudGF0aW9uU2Vuc2l0aXZlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZElzU2VsZkNsb3NpbmcoYXN0KSB7XG4gICAgICBhc3Qud2Fsaygobm9kZSkgPT4ge1xuICAgICAgICBub2RlLmlzU2VsZkNsb3NpbmcgPSAhbm9kZS5jaGlsZHJlbiB8fCBub2RlLnR5cGUgPT09IFwiZWxlbWVudFwiICYmIChub2RlLnRhZ0RlZmluaXRpb24uaXNWb2lkIHx8IG5vZGUuc3RhcnRTb3VyY2VTcGFuID09PSBub2RlLmVuZFNvdXJjZVNwYW4pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZEhhc0h0bUNvbXBvbmVudENsb3NpbmdUYWcoYXN0LCBvcHRpb25zKSB7XG4gICAgICBhc3Qud2Fsaygobm9kZSkgPT4ge1xuICAgICAgICBpZiAobm9kZS50eXBlICE9PSBcImVsZW1lbnRcIikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmhhc0h0bUNvbXBvbmVudENsb3NpbmdUYWcgPSBub2RlLmVuZFNvdXJjZVNwYW4gJiYgL148XFxzKlxcL1xccypcXC9cXHMqPiQvLnRlc3Qob3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2Uobm9kZS5lbmRTb3VyY2VTcGFuLnN0YXJ0Lm9mZnNldCwgbm9kZS5lbmRTb3VyY2VTcGFuLmVuZC5vZmZzZXQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRDc3NEaXNwbGF5KGFzdCwgb3B0aW9ucykge1xuICAgICAgYXN0LndhbGsoKG5vZGUpID0+IHtcbiAgICAgICAgbm9kZS5jc3NEaXNwbGF5ID0gZ2V0Tm9kZUNzc1N0eWxlRGlzcGxheShub2RlLCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRJc1NwYWNlU2Vuc2l0aXZlKGFzdCwgb3B0aW9ucykge1xuICAgICAgYXN0LndhbGsoKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgIH0gPSBub2RlO1xuICAgICAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBub2RlLmlzRGFuZ2xpbmdTcGFjZVNlbnNpdGl2ZSA9IGlzRGFuZ2xpbmdTcGFjZVNlbnNpdGl2ZU5vZGUobm9kZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBjaGlsZC5pc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZSA9IGlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlTm9kZShjaGlsZCwgb3B0aW9ucyk7XG4gICAgICAgICAgY2hpbGQuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlID0gaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlTm9kZShjaGlsZCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baW5kZXhdO1xuICAgICAgICAgIGNoaWxkLmlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlID0gaW5kZXggPT09IDAgPyBjaGlsZC5pc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZSA6IGNoaWxkLnByZXYuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlICYmIGNoaWxkLmlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlO1xuICAgICAgICAgIGNoaWxkLmlzVHJhaWxpbmdTcGFjZVNlbnNpdGl2ZSA9IGluZGV4ID09PSBjaGlsZHJlbi5sZW5ndGggLSAxID8gY2hpbGQuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlIDogY2hpbGQubmV4dC5pc0xlYWRpbmdTcGFjZVNlbnNpdGl2ZSAmJiBjaGlsZC5pc1RyYWlsaW5nU3BhY2VTZW5zaXRpdmU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYXJrVHNTY3JpcHQoYXN0LCBvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucy5wYXJzZXIgPT09IFwidnVlXCIpIHtcbiAgICAgICAgY29uc3QgdnVlU2NyaXB0VGFnID0gYXN0LmNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiBpc1Z1ZVNjcmlwdFRhZyhjaGlsZCwgb3B0aW9ucykpO1xuICAgICAgICBpZiAoIXZ1ZVNjcmlwdFRhZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9ID0gdnVlU2NyaXB0VGFnLmF0dHJNYXA7XG4gICAgICAgIGlmIChsYW5nID09PSBcInRzXCIgfHwgbGFuZyA9PT0gXCJ0eXBlc2NyaXB0XCIpIHtcbiAgICAgICAgICBvcHRpb25zLl9fc2hvdWxkX3BhcnNlX3Z1ZV90ZW1wbGF0ZV93aXRoX3RzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmVwcm9jZXNzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3ByYWdtYTUgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvcHJhZ21hLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBoYXNQcmFnbWEodGV4dCkge1xuICAgICAgcmV0dXJuIC9eXFxzKjwhLS1cXHMqQCg/OmZvcm1hdHxwcmV0dGllcilcXHMqLS0+Ly50ZXN0KHRleHQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpbnNlcnRQcmFnbWEodGV4dCkge1xuICAgICAgcmV0dXJuIFwiPCEtLSBAZm9ybWF0IC0tPlxcblxcblwiICsgdGV4dC5yZXBsYWNlKC9eXFxzKlxcbi8sIFwiXCIpO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBoYXNQcmFnbWEsXG4gICAgICBpbnNlcnRQcmFnbWFcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xvYzYgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvbG9jLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBmdW5jdGlvbiBsb2NTdGFydChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5zb3VyY2VTcGFuLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9jRW5kKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnNvdXJjZVNwYW4uZW5kLm9mZnNldDtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbG9jU3RhcnQsXG4gICAgICBsb2NFbmRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3RhZyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtaHRtbC9wcmludC90YWcuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuICAgIHZhciB7XG4gICAgICBpc05vbkVtcHR5QXJyYXlcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGluZGVudCxcbiAgICAgICAgam9pbixcbiAgICAgICAgbGluZSxcbiAgICAgICAgc29mdGxpbmUsXG4gICAgICAgIGhhcmRsaW5lXG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgcmVwbGFjZVRleHRFbmRPZkxpbmVcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydCxcbiAgICAgIGxvY0VuZFxuICAgIH0gPSByZXF1aXJlX2xvYzYoKTtcbiAgICB2YXIge1xuICAgICAgaXNUZXh0TGlrZU5vZGUsXG4gICAgICBnZXRMYXN0RGVzY2VuZGFudCxcbiAgICAgIGlzUHJlTGlrZU5vZGUsXG4gICAgICBoYXNQcmV0dGllcklnbm9yZSxcbiAgICAgIHNob3VsZFByZXNlcnZlQ29udGVudCxcbiAgICAgIGlzVnVlU2ZjQmxvY2tcbiAgICB9ID0gcmVxdWlyZV91dGlsczExKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRDbG9zaW5nVGFnKG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBbbm9kZS5pc1NlbGZDbG9zaW5nID8gXCJcIiA6IHByaW50Q2xvc2luZ1RhZ1N0YXJ0KG5vZGUsIG9wdGlvbnMpLCBwcmludENsb3NpbmdUYWdFbmQobm9kZSwgb3B0aW9ucyldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NpbmdUYWdTdGFydChub2RlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbm9kZS5sYXN0Q2hpbGQgJiYgbmVlZHNUb0JvcnJvd1BhcmVudENsb3NpbmdUYWdTdGFydE1hcmtlcihub2RlLmxhc3RDaGlsZCkgPyBcIlwiIDogW3ByaW50Q2xvc2luZ1RhZ1ByZWZpeChub2RlLCBvcHRpb25zKSwgcHJpbnRDbG9zaW5nVGFnU3RhcnRNYXJrZXIobm9kZSwgb3B0aW9ucyldO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NpbmdUYWdFbmQobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIChub2RlLm5leHQgPyBuZWVkc1RvQm9ycm93UHJldkNsb3NpbmdUYWdFbmRNYXJrZXIobm9kZS5uZXh0KSA6IG5lZWRzVG9Cb3Jyb3dMYXN0Q2hpbGRDbG9zaW5nVGFnRW5kTWFya2VyKG5vZGUucGFyZW50KSkgPyBcIlwiIDogW3ByaW50Q2xvc2luZ1RhZ0VuZE1hcmtlcihub2RlLCBvcHRpb25zKSwgcHJpbnRDbG9zaW5nVGFnU3VmZml4KG5vZGUsIG9wdGlvbnMpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRDbG9zaW5nVGFnUHJlZml4KG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZWVkc1RvQm9ycm93TGFzdENoaWxkQ2xvc2luZ1RhZ0VuZE1hcmtlcihub2RlKSA/IHByaW50Q2xvc2luZ1RhZ0VuZE1hcmtlcihub2RlLmxhc3RDaGlsZCwgb3B0aW9ucykgOiBcIlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NpbmdUYWdTdWZmaXgobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5lZWRzVG9Cb3Jyb3dQYXJlbnRDbG9zaW5nVGFnU3RhcnRNYXJrZXIobm9kZSkgPyBwcmludENsb3NpbmdUYWdTdGFydE1hcmtlcihub2RlLnBhcmVudCwgb3B0aW9ucykgOiBuZWVkc1RvQm9ycm93TmV4dE9wZW5pbmdUYWdTdGFydE1hcmtlcihub2RlKSA/IHByaW50T3BlbmluZ1RhZ1N0YXJ0TWFya2VyKG5vZGUubmV4dCkgOiBcIlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsb3NpbmdUYWdTdGFydE1hcmtlcihub2RlLCBvcHRpb25zKSB7XG4gICAgICBhc3NlcnQoIW5vZGUuaXNTZWxmQ2xvc2luZyk7XG4gICAgICBpZiAoc2hvdWxkTm90UHJpbnRDbG9zaW5nVGFnKG5vZGUsIG9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImllQ29uZGl0aW9uYWxDb21tZW50XCI6XG4gICAgICAgICAgcmV0dXJuIFwiPCFcIjtcbiAgICAgICAgY2FzZSBcImVsZW1lbnRcIjpcbiAgICAgICAgICBpZiAobm9kZS5oYXNIdG1Db21wb25lbnRDbG9zaW5nVGFnKSB7XG4gICAgICAgICAgICByZXR1cm4gXCI8Ly9cIjtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGA8LyR7bm9kZS5yYXdOYW1lfWA7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50Q2xvc2luZ1RhZ0VuZE1hcmtlcihub2RlLCBvcHRpb25zKSB7XG4gICAgICBpZiAoc2hvdWxkTm90UHJpbnRDbG9zaW5nVGFnKG5vZGUsIG9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImllQ29uZGl0aW9uYWxDb21tZW50XCI6XG4gICAgICAgIGNhc2UgXCJpZUNvbmRpdGlvbmFsRW5kQ29tbWVudFwiOlxuICAgICAgICAgIHJldHVybiBcIltlbmRpZl0tLT5cIjtcbiAgICAgICAgY2FzZSBcImllQ29uZGl0aW9uYWxTdGFydENvbW1lbnRcIjpcbiAgICAgICAgICByZXR1cm4gXCJdPjwhLS0+XCI7XG4gICAgICAgIGNhc2UgXCJpbnRlcnBvbGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFwifX1cIjtcbiAgICAgICAgY2FzZSBcImVsZW1lbnRcIjpcbiAgICAgICAgICBpZiAobm9kZS5pc1NlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIvPlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gXCI+XCI7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZE5vdFByaW50Q2xvc2luZ1RhZyhub2RlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gIW5vZGUuaXNTZWxmQ2xvc2luZyAmJiAhbm9kZS5lbmRTb3VyY2VTcGFuICYmIChoYXNQcmV0dGllcklnbm9yZShub2RlKSB8fCBzaG91bGRQcmVzZXJ2ZUNvbnRlbnQobm9kZS5wYXJlbnQsIG9wdGlvbnMpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbmVlZHNUb0JvcnJvd1ByZXZDbG9zaW5nVGFnRW5kTWFya2VyKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnByZXYgJiYgbm9kZS5wcmV2LnR5cGUgIT09IFwiZG9jVHlwZVwiICYmICFpc1RleHRMaWtlTm9kZShub2RlLnByZXYpICYmIG5vZGUuaXNMZWFkaW5nU3BhY2VTZW5zaXRpdmUgJiYgIW5vZGUuaGFzTGVhZGluZ1NwYWNlcztcbiAgICB9XG4gICAgZnVuY3Rpb24gbmVlZHNUb0JvcnJvd0xhc3RDaGlsZENsb3NpbmdUYWdFbmRNYXJrZXIobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUubGFzdENoaWxkICYmIG5vZGUubGFzdENoaWxkLmlzVHJhaWxpbmdTcGFjZVNlbnNpdGl2ZSAmJiAhbm9kZS5sYXN0Q2hpbGQuaGFzVHJhaWxpbmdTcGFjZXMgJiYgIWlzVGV4dExpa2VOb2RlKGdldExhc3REZXNjZW5kYW50KG5vZGUubGFzdENoaWxkKSkgJiYgIWlzUHJlTGlrZU5vZGUobm9kZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5lZWRzVG9Cb3Jyb3dQYXJlbnRDbG9zaW5nVGFnU3RhcnRNYXJrZXIobm9kZSkge1xuICAgICAgcmV0dXJuICFub2RlLm5leHQgJiYgIW5vZGUuaGFzVHJhaWxpbmdTcGFjZXMgJiYgbm9kZS5pc1RyYWlsaW5nU3BhY2VTZW5zaXRpdmUgJiYgaXNUZXh0TGlrZU5vZGUoZ2V0TGFzdERlc2NlbmRhbnQobm9kZSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBuZWVkc1RvQm9ycm93TmV4dE9wZW5pbmdUYWdTdGFydE1hcmtlcihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5uZXh0ICYmICFpc1RleHRMaWtlTm9kZShub2RlLm5leHQpICYmIGlzVGV4dExpa2VOb2RlKG5vZGUpICYmIG5vZGUuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlICYmICFub2RlLmhhc1RyYWlsaW5nU3BhY2VzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRQcmV0dGllcklnbm9yZUF0dHJpYnV0ZUNvbW1lbnREYXRhKHZhbHVlKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLnRyaW0oKS5tYXRjaCgvXnByZXR0aWVyLWlnbm9yZS1hdHRyaWJ1dGUoPzpcXHMrKC4rKSk/JC9zKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCFtYXRjaFsxXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaFsxXS5zcGxpdCgvXFxzKy8pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBuZWVkc1RvQm9ycm93UGFyZW50T3BlbmluZ1RhZ0VuZE1hcmtlcihub2RlKSB7XG4gICAgICByZXR1cm4gIW5vZGUucHJldiAmJiBub2RlLmlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlICYmICFub2RlLmhhc0xlYWRpbmdTcGFjZXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50QXR0cmlidXRlcyhwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmICghaXNOb25FbXB0eUFycmF5KG5vZGUuYXR0cnMpKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlzU2VsZkNsb3NpbmcgPyBcIiBcIiA6IFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBpZ25vcmVBdHRyaWJ1dGVEYXRhID0gbm9kZS5wcmV2ICYmIG5vZGUucHJldi50eXBlID09PSBcImNvbW1lbnRcIiAmJiBnZXRQcmV0dGllcklnbm9yZUF0dHJpYnV0ZUNvbW1lbnREYXRhKG5vZGUucHJldi52YWx1ZSk7XG4gICAgICBjb25zdCBoYXNQcmV0dGllcklnbm9yZUF0dHJpYnV0ZSA9IHR5cGVvZiBpZ25vcmVBdHRyaWJ1dGVEYXRhID09PSBcImJvb2xlYW5cIiA/ICgpID0+IGlnbm9yZUF0dHJpYnV0ZURhdGEgOiBBcnJheS5pc0FycmF5KGlnbm9yZUF0dHJpYnV0ZURhdGEpID8gKGF0dHJpYnV0ZSkgPT4gaWdub3JlQXR0cmlidXRlRGF0YS5pbmNsdWRlcyhhdHRyaWJ1dGUucmF3TmFtZSkgOiAoKSA9PiBmYWxzZTtcbiAgICAgIGNvbnN0IHByaW50ZWRBdHRyaWJ1dGVzID0gcGF0aC5tYXAoKGF0dHJpYnV0ZVBhdGgpID0+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlUGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgICByZXR1cm4gaGFzUHJldHRpZXJJZ25vcmVBdHRyaWJ1dGUoYXR0cmlidXRlKSA/IHJlcGxhY2VUZXh0RW5kT2ZMaW5lKG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGxvY1N0YXJ0KGF0dHJpYnV0ZSksIGxvY0VuZChhdHRyaWJ1dGUpKSkgOiBwcmludCgpO1xuICAgICAgfSwgXCJhdHRyc1wiKTtcbiAgICAgIGNvbnN0IGZvcmNlTm90VG9CcmVha0F0dHJDb250ZW50ID0gbm9kZS50eXBlID09PSBcImVsZW1lbnRcIiAmJiBub2RlLmZ1bGxOYW1lID09PSBcInNjcmlwdFwiICYmIG5vZGUuYXR0cnMubGVuZ3RoID09PSAxICYmIG5vZGUuYXR0cnNbMF0uZnVsbE5hbWUgPT09IFwic3JjXCIgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gICAgICBjb25zdCBzaG91bGRQcmludEF0dHJpYnV0ZVBlckxpbmUgPSBvcHRpb25zLnNpbmdsZUF0dHJpYnV0ZVBlckxpbmUgJiYgbm9kZS5hdHRycy5sZW5ndGggPiAxICYmICFpc1Z1ZVNmY0Jsb2NrKG5vZGUsIG9wdGlvbnMpO1xuICAgICAgY29uc3QgYXR0cmlidXRlTGluZSA9IHNob3VsZFByaW50QXR0cmlidXRlUGVyTGluZSA/IGhhcmRsaW5lIDogbGluZTtcbiAgICAgIGNvbnN0IHBhcnRzID0gW2luZGVudChbZm9yY2VOb3RUb0JyZWFrQXR0ckNvbnRlbnQgPyBcIiBcIiA6IGxpbmUsIGpvaW4oYXR0cmlidXRlTGluZSwgcHJpbnRlZEF0dHJpYnV0ZXMpXSldO1xuICAgICAgaWYgKG5vZGUuZmlyc3RDaGlsZCAmJiBuZWVkc1RvQm9ycm93UGFyZW50T3BlbmluZ1RhZ0VuZE1hcmtlcihub2RlLmZpcnN0Q2hpbGQpIHx8IG5vZGUuaXNTZWxmQ2xvc2luZyAmJiBuZWVkc1RvQm9ycm93TGFzdENoaWxkQ2xvc2luZ1RhZ0VuZE1hcmtlcihub2RlLnBhcmVudCkgfHwgZm9yY2VOb3RUb0JyZWFrQXR0ckNvbnRlbnQpIHtcbiAgICAgICAgcGFydHMucHVzaChub2RlLmlzU2VsZkNsb3NpbmcgPyBcIiBcIiA6IFwiXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChvcHRpb25zLmJyYWNrZXRTYW1lTGluZSA/IG5vZGUuaXNTZWxmQ2xvc2luZyA/IFwiIFwiIDogXCJcIiA6IG5vZGUuaXNTZWxmQ2xvc2luZyA/IGxpbmUgOiBzb2Z0bGluZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50T3BlbmluZ1RhZ0VuZChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5maXJzdENoaWxkICYmIG5lZWRzVG9Cb3Jyb3dQYXJlbnRPcGVuaW5nVGFnRW5kTWFya2VyKG5vZGUuZmlyc3RDaGlsZCkgPyBcIlwiIDogcHJpbnRPcGVuaW5nVGFnRW5kTWFya2VyKG5vZGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludE9wZW5pbmdUYWcocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICByZXR1cm4gW3ByaW50T3BlbmluZ1RhZ1N0YXJ0KG5vZGUsIG9wdGlvbnMpLCBwcmludEF0dHJpYnV0ZXMocGF0aCwgb3B0aW9ucywgcHJpbnQpLCBub2RlLmlzU2VsZkNsb3NpbmcgPyBcIlwiIDogcHJpbnRPcGVuaW5nVGFnRW5kKG5vZGUpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRPcGVuaW5nVGFnU3RhcnQobm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5vZGUucHJldiAmJiBuZWVkc1RvQm9ycm93TmV4dE9wZW5pbmdUYWdTdGFydE1hcmtlcihub2RlLnByZXYpID8gXCJcIiA6IFtwcmludE9wZW5pbmdUYWdQcmVmaXgobm9kZSwgb3B0aW9ucyksIHByaW50T3BlbmluZ1RhZ1N0YXJ0TWFya2VyKG5vZGUpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRPcGVuaW5nVGFnUHJlZml4KG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZWVkc1RvQm9ycm93UGFyZW50T3BlbmluZ1RhZ0VuZE1hcmtlcihub2RlKSA/IHByaW50T3BlbmluZ1RhZ0VuZE1hcmtlcihub2RlLnBhcmVudCkgOiBuZWVkc1RvQm9ycm93UHJldkNsb3NpbmdUYWdFbmRNYXJrZXIobm9kZSkgPyBwcmludENsb3NpbmdUYWdFbmRNYXJrZXIobm9kZS5wcmV2LCBvcHRpb25zKSA6IFwiXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50T3BlbmluZ1RhZ1N0YXJ0TWFya2VyKG5vZGUpIHtcbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJpZUNvbmRpdGlvbmFsQ29tbWVudFwiOlxuICAgICAgICBjYXNlIFwiaWVDb25kaXRpb25hbFN0YXJ0Q29tbWVudFwiOlxuICAgICAgICAgIHJldHVybiBgPCEtLVtpZiAke25vZGUuY29uZGl0aW9ufWA7XG4gICAgICAgIGNhc2UgXCJpZUNvbmRpdGlvbmFsRW5kQ29tbWVudFwiOlxuICAgICAgICAgIHJldHVybiBcIjwhLS08IVwiO1xuICAgICAgICBjYXNlIFwiaW50ZXJwb2xhdGlvblwiOlxuICAgICAgICAgIHJldHVybiBcInt7XCI7XG4gICAgICAgIGNhc2UgXCJkb2NUeXBlXCI6XG4gICAgICAgICAgcmV0dXJuIFwiPCFET0NUWVBFXCI7XG4gICAgICAgIGNhc2UgXCJlbGVtZW50XCI6XG4gICAgICAgICAgaWYgKG5vZGUuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gYDwhLS1baWYgJHtub2RlLmNvbmRpdGlvbn1dPjwhLS0+PCR7bm9kZS5yYXdOYW1lfWA7XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBgPCR7bm9kZS5yYXdOYW1lfWA7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50T3BlbmluZ1RhZ0VuZE1hcmtlcihub2RlKSB7XG4gICAgICBhc3NlcnQoIW5vZGUuaXNTZWxmQ2xvc2luZyk7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiaWVDb25kaXRpb25hbENvbW1lbnRcIjpcbiAgICAgICAgICByZXR1cm4gXCJdPlwiO1xuICAgICAgICBjYXNlIFwiZWxlbWVudFwiOlxuICAgICAgICAgIGlmIChub2RlLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIFwiPjwhLS08IVtlbmRpZl0tLT5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIFwiPlwiO1xuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBwcmludENsb3NpbmdUYWcsXG4gICAgICBwcmludENsb3NpbmdUYWdTdGFydCxcbiAgICAgIHByaW50Q2xvc2luZ1RhZ1N0YXJ0TWFya2VyLFxuICAgICAgcHJpbnRDbG9zaW5nVGFnRW5kTWFya2VyLFxuICAgICAgcHJpbnRDbG9zaW5nVGFnU3VmZml4LFxuICAgICAgcHJpbnRDbG9zaW5nVGFnRW5kLFxuICAgICAgbmVlZHNUb0JvcnJvd0xhc3RDaGlsZENsb3NpbmdUYWdFbmRNYXJrZXIsXG4gICAgICBuZWVkc1RvQm9ycm93UGFyZW50Q2xvc2luZ1RhZ1N0YXJ0TWFya2VyLFxuICAgICAgbmVlZHNUb0JvcnJvd1ByZXZDbG9zaW5nVGFnRW5kTWFya2VyLFxuICAgICAgcHJpbnRPcGVuaW5nVGFnLFxuICAgICAgcHJpbnRPcGVuaW5nVGFnU3RhcnQsXG4gICAgICBwcmludE9wZW5pbmdUYWdQcmVmaXgsXG4gICAgICBwcmludE9wZW5pbmdUYWdTdGFydE1hcmtlcixcbiAgICAgIHByaW50T3BlbmluZ1RhZ0VuZE1hcmtlcixcbiAgICAgIG5lZWRzVG9Cb3Jyb3dOZXh0T3BlbmluZ1RhZ1N0YXJ0TWFya2VyLFxuICAgICAgbmVlZHNUb0JvcnJvd1BhcmVudE9wZW5pbmdUYWdFbmRNYXJrZXJcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlX3NyY3NldCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvcGFyc2Utc3Jjc2V0L3NyYy9wYXJzZS1zcmNzZXQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIChmdW5jdGlvbihyb290LCBmYWN0b3J5KSB7XG4gICAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcbiAgICAgICAgZGVmaW5lKFtdLCBmYWN0b3J5KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZTIgPT09IFwib2JqZWN0XCIgJiYgbW9kdWxlMi5leHBvcnRzKSB7XG4gICAgICAgIG1vZHVsZTIuZXhwb3J0cyA9IGZhY3RvcnkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3QucGFyc2VTcmNzZXQgPSBmYWN0b3J5KCk7XG4gICAgICB9XG4gICAgfSkoZXhwb3J0czIsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBsb2dnZXIgPSBvcHRpb25zICYmIG9wdGlvbnMubG9nZ2VyIHx8IGNvbnNvbGU7XG4gICAgICAgIGZ1bmN0aW9uIGlzU3BhY2UoYzIpIHtcbiAgICAgICAgICByZXR1cm4gYzIgPT09IFwiIFwiIHx8IGMyID09PSBcIlx0XCIgfHwgYzIgPT09IFwiXFxuXCIgfHwgYzIgPT09IFwiXFxmXCIgfHwgYzIgPT09IFwiXFxyXCI7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29sbGVjdENoYXJhY3RlcnMocmVnRXgpIHtcbiAgICAgICAgICB2YXIgY2hhcnMsIG1hdGNoID0gcmVnRXguZXhlYyhpbnB1dC5zdWJzdHJpbmcocG9zKSk7XG4gICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBjaGFycyA9IG1hdGNoWzBdO1xuICAgICAgICAgICAgcG9zICs9IGNoYXJzLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBjaGFycztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLCByZWdleExlYWRpbmdTcGFjZXMgPSAvXlsgXFx0XFxuXFxyXFx1MDAwY10rLywgcmVnZXhMZWFkaW5nQ29tbWFzT3JTcGFjZXMgPSAvXlssIFxcdFxcblxcclxcdTAwMGNdKy8sIHJlZ2V4TGVhZGluZ05vdFNwYWNlcyA9IC9eW14gXFx0XFxuXFxyXFx1MDAwY10rLywgcmVnZXhUcmFpbGluZ0NvbW1hcyA9IC9bLF0rJC8sIHJlZ2V4Tm9uTmVnYXRpdmVJbnRlZ2VyID0gL15cXGQrJC8sIHJlZ2V4RmxvYXRpbmdQb2ludCA9IC9eLT8oPzpbMC05XSt8WzAtOV0qXFwuWzAtOV0rKSg/OltlRV1bKy1dP1swLTldKyk/JC8sIHVybCwgZGVzY3JpcHRvcnMsIGN1cnJlbnREZXNjcmlwdG9yLCBzdGF0ZSwgYywgcG9zID0gMCwgY2FuZGlkYXRlcyA9IFtdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGNvbGxlY3RDaGFyYWN0ZXJzKHJlZ2V4TGVhZGluZ0NvbW1hc09yU3BhY2VzKTtcbiAgICAgICAgICBpZiAocG9zID49IGlucHV0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlcztcbiAgICAgICAgICB9XG4gICAgICAgICAgdXJsID0gY29sbGVjdENoYXJhY3RlcnMocmVnZXhMZWFkaW5nTm90U3BhY2VzKTtcbiAgICAgICAgICBkZXNjcmlwdG9ycyA9IFtdO1xuICAgICAgICAgIGlmICh1cmwuc2xpY2UoLTEpID09PSBcIixcIikge1xuICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UocmVnZXhUcmFpbGluZ0NvbW1hcywgXCJcIik7XG4gICAgICAgICAgICBwYXJzZURlc2NyaXB0b3JzKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRva2VuaXplKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRva2VuaXplKCkge1xuICAgICAgICAgIGNvbGxlY3RDaGFyYWN0ZXJzKHJlZ2V4TGVhZGluZ1NwYWNlcyk7XG4gICAgICAgICAgY3VycmVudERlc2NyaXB0b3IgPSBcIlwiO1xuICAgICAgICAgIHN0YXRlID0gXCJpbiBkZXNjcmlwdG9yXCI7XG4gICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGMgPSBpbnB1dC5jaGFyQXQocG9zKTtcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gXCJpbiBkZXNjcmlwdG9yXCIpIHtcbiAgICAgICAgICAgICAgaWYgKGlzU3BhY2UoYykpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goY3VycmVudERlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgICAgY3VycmVudERlc2NyaXB0b3IgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgc3RhdGUgPSBcImFmdGVyIGRlc2NyaXB0b3JcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gXCIsXCIpIHtcbiAgICAgICAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goY3VycmVudERlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXJzZURlc2NyaXB0b3JzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT09IFwiKFwiKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERlc2NyaXB0b3IgPSBjdXJyZW50RGVzY3JpcHRvciArIGM7XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBcImluIHBhcmVuc1wiO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goY3VycmVudERlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXJzZURlc2NyaXB0b3JzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREZXNjcmlwdG9yID0gY3VycmVudERlc2NyaXB0b3IgKyBjO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBcImluIHBhcmVuc1wiKSB7XG4gICAgICAgICAgICAgIGlmIChjID09PSBcIilcIikge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREZXNjcmlwdG9yID0gY3VycmVudERlc2NyaXB0b3IgKyBjO1xuICAgICAgICAgICAgICAgIHN0YXRlID0gXCJpbiBkZXNjcmlwdG9yXCI7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goY3VycmVudERlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIHBhcnNlRGVzY3JpcHRvcnMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERlc2NyaXB0b3IgPSBjdXJyZW50RGVzY3JpcHRvciArIGM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFwiYWZ0ZXIgZGVzY3JpcHRvclwiKSB7XG4gICAgICAgICAgICAgIGlmIChpc1NwYWNlKGMpKSB7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHBhcnNlRGVzY3JpcHRvcnMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBcImluIGRlc2NyaXB0b3JcIjtcbiAgICAgICAgICAgICAgICBwb3MgLT0gMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9zICs9IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHBhcnNlRGVzY3JpcHRvcnMoKSB7XG4gICAgICAgICAgdmFyIHBFcnJvciA9IGZhbHNlLCB3LCBkLCBoLCBpLCBjYW5kaWRhdGUgPSB7fSwgZGVzYywgbGFzdENoYXIsIHZhbHVlLCBpbnRWYWwsIGZsb2F0VmFsO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkZXNjcmlwdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZGVzYyA9IGRlc2NyaXB0b3JzW2ldO1xuICAgICAgICAgICAgbGFzdENoYXIgPSBkZXNjW2Rlc2MubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB2YWx1ZSA9IGRlc2Muc3Vic3RyaW5nKDAsIGRlc2MubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICBpbnRWYWwgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICAgICAgZmxvYXRWYWwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChyZWdleE5vbk5lZ2F0aXZlSW50ZWdlci50ZXN0KHZhbHVlKSAmJiBsYXN0Q2hhciA9PT0gXCJ3XCIpIHtcbiAgICAgICAgICAgICAgaWYgKHcgfHwgZCkge1xuICAgICAgICAgICAgICAgIHBFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGludFZhbCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdyA9IGludFZhbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZWdleEZsb2F0aW5nUG9pbnQudGVzdCh2YWx1ZSkgJiYgbGFzdENoYXIgPT09IFwieFwiKSB7XG4gICAgICAgICAgICAgIGlmICh3IHx8IGQgfHwgaCkge1xuICAgICAgICAgICAgICAgIHBFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGZsb2F0VmFsIDwgMCkge1xuICAgICAgICAgICAgICAgIHBFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZCA9IGZsb2F0VmFsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlZ2V4Tm9uTmVnYXRpdmVJbnRlZ2VyLnRlc3QodmFsdWUpICYmIGxhc3RDaGFyID09PSBcImhcIikge1xuICAgICAgICAgICAgICBpZiAoaCB8fCBkKSB7XG4gICAgICAgICAgICAgICAgcEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaW50VmFsID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoID0gaW50VmFsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXBFcnJvcikge1xuICAgICAgICAgICAgY2FuZGlkYXRlLnVybCA9IHVybDtcbiAgICAgICAgICAgIGlmICh3KSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZS53ID0gdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZS5kID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoKSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZS5oID0gaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChjYW5kaWRhdGUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobG9nZ2VyICYmIGxvZ2dlci5lcnJvcikge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBzcmNzZXQgZGVzY3JpcHRvciBmb3VuZCBpbiAnXCIgKyBpbnB1dCArIFwiJyBhdCAnXCIgKyBkZXNjICsgXCInLlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfc3ludGF4X2F0dHJpYnV0ZSA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtaHRtbC9zeW50YXgtYXR0cmlidXRlLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgcGFyc2VTcmNzZXQgPSByZXF1aXJlX3BhcnNlX3NyY3NldCgpO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICBmdW5jdGlvbiBwcmludEltZ1NyY3NldCh2YWx1ZSkge1xuICAgICAgY29uc3Qgc3Jjc2V0ID0gcGFyc2VTcmNzZXQodmFsdWUsIHtcbiAgICAgICAgbG9nZ2VyOiB7XG4gICAgICAgICAgZXJyb3IobWVzc2FnZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBoYXNXID0gc3Jjc2V0LnNvbWUoKHtcbiAgICAgICAgd1xuICAgICAgfSkgPT4gdyk7XG4gICAgICBjb25zdCBoYXNIID0gc3Jjc2V0LnNvbWUoKHtcbiAgICAgICAgaFxuICAgICAgfSkgPT4gaCk7XG4gICAgICBjb25zdCBoYXNYID0gc3Jjc2V0LnNvbWUoKHtcbiAgICAgICAgZFxuICAgICAgfSkgPT4gZCk7XG4gICAgICBpZiAoaGFzVyArIGhhc0ggKyBoYXNYID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXhlZCBkZXNjcmlwdG9yIGluIHNyY3NldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gaGFzVyA/IFwid1wiIDogaGFzSCA/IFwiaFwiIDogXCJkXCI7XG4gICAgICBjb25zdCB1bml0ID0gaGFzVyA/IFwid1wiIDogaGFzSCA/IFwiaFwiIDogXCJ4XCI7XG4gICAgICBjb25zdCBnZXRNYXggPSAodmFsdWVzKSA9PiBNYXRoLm1heCguLi52YWx1ZXMpO1xuICAgICAgY29uc3QgdXJscyA9IHNyY3NldC5tYXAoKHNyYykgPT4gc3JjLnVybCk7XG4gICAgICBjb25zdCBtYXhVcmxMZW5ndGggPSBnZXRNYXgodXJscy5tYXAoKHVybCkgPT4gdXJsLmxlbmd0aCkpO1xuICAgICAgY29uc3QgZGVzY3JpcHRvcnMgPSBzcmNzZXQubWFwKChzcmMpID0+IHNyY1trZXldKS5tYXAoKGRlc2NyaXB0b3IpID0+IGRlc2NyaXB0b3IgPyBkZXNjcmlwdG9yLnRvU3RyaW5nKCkgOiBcIlwiKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3JMZWZ0TGVuZ3RocyA9IGRlc2NyaXB0b3JzLm1hcCgoZGVzY3JpcHRvcikgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IGRlc2NyaXB0b3IuaW5kZXhPZihcIi5cIik7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gLTEgPyBkZXNjcmlwdG9yLmxlbmd0aCA6IGluZGV4O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBtYXhEZXNjcmlwdG9yTGVmdExlbmd0aCA9IGdldE1heChkZXNjcmlwdG9yTGVmdExlbmd0aHMpO1xuICAgICAgcmV0dXJuIGpvaW4oW1wiLFwiLCBsaW5lXSwgdXJscy5tYXAoKHVybCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbdXJsXTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzW2luZGV4XTtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICBjb25zdCB1cmxQYWRkaW5nID0gbWF4VXJsTGVuZ3RoIC0gdXJsLmxlbmd0aCArIDE7XG4gICAgICAgICAgY29uc3QgZGVzY3JpcHRvclBhZGRpbmcgPSBtYXhEZXNjcmlwdG9yTGVmdExlbmd0aCAtIGRlc2NyaXB0b3JMZWZ0TGVuZ3Roc1tpbmRleF07XG4gICAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gXCIgXCIucmVwZWF0KHVybFBhZGRpbmcgKyBkZXNjcmlwdG9yUGFkZGluZyk7XG4gICAgICAgICAgcGFydHMucHVzaChpZkJyZWFrKGFsaWdubWVudCwgXCIgXCIpLCBkZXNjcmlwdG9yICsgdW5pdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENsYXNzTmFtZXModmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50cmltKCkuc3BsaXQoL1xccysvKS5qb2luKFwiIFwiKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRJbWdTcmNzZXQsXG4gICAgICBwcmludENsYXNzTmFtZXNcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3N5bnRheF92dWUgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvc3ludGF4LXZ1ZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGdyb3VwXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICBmdW5jdGlvbiBwcmludFZ1ZUZvcih2YWx1ZSwgdGV4dFRvRG9jKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxlZnQsXG4gICAgICAgIG9wZXJhdG9yLFxuICAgICAgICByaWdodFxuICAgICAgfSA9IHBhcnNlVnVlRm9yKHZhbHVlKTtcbiAgICAgIHJldHVybiBbZ3JvdXAodGV4dFRvRG9jKGBmdW5jdGlvbiBfKCR7bGVmdH0pIHt9YCwge1xuICAgICAgICBwYXJzZXI6IFwiYmFiZWxcIixcbiAgICAgICAgX19pc1Z1ZUZvckJpbmRpbmdMZWZ0OiB0cnVlXG4gICAgICB9KSksIFwiIFwiLCBvcGVyYXRvciwgXCIgXCIsIHRleHRUb0RvYyhyaWdodCwge1xuICAgICAgICBwYXJzZXI6IFwiX19qc19leHByZXNzaW9uXCJcbiAgICAgIH0sIHtcbiAgICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiB0cnVlXG4gICAgICB9KV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlVnVlRm9yKHZhbHVlKSB7XG4gICAgICBjb25zdCBmb3JBbGlhc1JFID0gLyguKj8pXFxzKyhpbnxvZilcXHMrKC4qKS9zO1xuICAgICAgY29uc3QgZm9ySXRlcmF0b3JSRSA9IC8sKFteLFxcXX1dKikoPzosKFteLFxcXX1dKikpPyQvO1xuICAgICAgY29uc3Qgc3RyaXBQYXJlbnNSRSA9IC9eXFwofFxcKSQvZztcbiAgICAgIGNvbnN0IGluTWF0Y2ggPSB2YWx1ZS5tYXRjaChmb3JBbGlhc1JFKTtcbiAgICAgIGlmICghaW5NYXRjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgIHJlcy5mb3IgPSBpbk1hdGNoWzNdLnRyaW0oKTtcbiAgICAgIGlmICghcmVzLmZvcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpLnJlcGxhY2Uoc3RyaXBQYXJlbnNSRSwgXCJcIik7XG4gICAgICBjb25zdCBpdGVyYXRvck1hdGNoID0gYWxpYXMubWF0Y2goZm9ySXRlcmF0b3JSRSk7XG4gICAgICBpZiAoaXRlcmF0b3JNYXRjaCkge1xuICAgICAgICByZXMuYWxpYXMgPSBhbGlhcy5yZXBsYWNlKGZvckl0ZXJhdG9yUkUsIFwiXCIpO1xuICAgICAgICByZXMuaXRlcmF0b3IxID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAgICAgIGlmIChpdGVyYXRvck1hdGNoWzJdKSB7XG4gICAgICAgICAgcmVzLml0ZXJhdG9yMiA9IGl0ZXJhdG9yTWF0Y2hbMl0udHJpbSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuYWxpYXMgPSBhbGlhcztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxlZnQgPSBbcmVzLmFsaWFzLCByZXMuaXRlcmF0b3IxLCByZXMuaXRlcmF0b3IyXTtcbiAgICAgIGlmIChsZWZ0LnNvbWUoKHBhcnQsIGluZGV4KSA9PiAhcGFydCAmJiAoaW5kZXggPT09IDAgfHwgbGVmdC5zbGljZShpbmRleCArIDEpLnNvbWUoQm9vbGVhbikpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBsZWZ0LmZpbHRlcihCb29sZWFuKS5qb2luKFwiLFwiKSxcbiAgICAgICAgb3BlcmF0b3I6IGluTWF0Y2hbMl0sXG4gICAgICAgIHJpZ2h0OiByZXMuZm9yXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludFZ1ZUJpbmRpbmdzKHZhbHVlLCB0ZXh0VG9Eb2MpIHtcbiAgICAgIHJldHVybiB0ZXh0VG9Eb2MoYGZ1bmN0aW9uIF8oJHt2YWx1ZX0pIHt9YCwge1xuICAgICAgICBwYXJzZXI6IFwiYmFiZWxcIixcbiAgICAgICAgX19pc1Z1ZUJpbmRpbmdzOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNWdWVFdmVudEJpbmRpbmdFeHByZXNzaW9uKGV2ZW50QmluZGluZ1ZhbHVlKSB7XG4gICAgICBjb25zdCBmbkV4cFJFID0gL14oPzpbXFx3JF0rfFxcKFteKV0qXFwpKVxccyo9PnxeZnVuY3Rpb25cXHMqXFwoLztcbiAgICAgIGNvbnN0IHNpbXBsZVBhdGhSRSA9IC9eWyRBLVpfYS16XVtcXHckXSooPzpcXC5bJEEtWl9hLXpdW1xcdyRdKnxcXFsnW14nXSonXXxcXFtcIlteXCJdKlwiXXxcXFtcXGQrXXxcXFtbJEEtWl9hLXpdW1xcdyRdKl0pKiQvO1xuICAgICAgY29uc3QgdmFsdWUgPSBldmVudEJpbmRpbmdWYWx1ZS50cmltKCk7XG4gICAgICByZXR1cm4gZm5FeHBSRS50ZXN0KHZhbHVlKSB8fCBzaW1wbGVQYXRoUkUudGVzdCh2YWx1ZSk7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGlzVnVlRXZlbnRCaW5kaW5nRXhwcmVzc2lvbixcbiAgICAgIHByaW50VnVlRm9yLFxuICAgICAgcHJpbnRWdWVCaW5kaW5nc1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZ2V0X25vZGVfY29udGVudCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UtaHRtbC9nZXQtbm9kZS1jb250ZW50LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgbmVlZHNUb0JvcnJvd1BhcmVudENsb3NpbmdUYWdTdGFydE1hcmtlcixcbiAgICAgIHByaW50Q2xvc2luZ1RhZ1N0YXJ0TWFya2VyLFxuICAgICAgbmVlZHNUb0JvcnJvd0xhc3RDaGlsZENsb3NpbmdUYWdFbmRNYXJrZXIsXG4gICAgICBwcmludENsb3NpbmdUYWdFbmRNYXJrZXIsXG4gICAgICBuZWVkc1RvQm9ycm93UGFyZW50T3BlbmluZ1RhZ0VuZE1hcmtlcixcbiAgICAgIHByaW50T3BlbmluZ1RhZ0VuZE1hcmtlclxuICAgIH0gPSByZXF1aXJlX3RhZygpO1xuICAgIGZ1bmN0aW9uIGdldE5vZGVDb250ZW50KG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIGxldCBzdGFydCA9IG5vZGUuc3RhcnRTb3VyY2VTcGFuLmVuZC5vZmZzZXQ7XG4gICAgICBpZiAobm9kZS5maXJzdENoaWxkICYmIG5lZWRzVG9Cb3Jyb3dQYXJlbnRPcGVuaW5nVGFnRW5kTWFya2VyKG5vZGUuZmlyc3RDaGlsZCkpIHtcbiAgICAgICAgc3RhcnQgLT0gcHJpbnRPcGVuaW5nVGFnRW5kTWFya2VyKG5vZGUpLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGxldCBlbmQgPSBub2RlLmVuZFNvdXJjZVNwYW4uc3RhcnQub2Zmc2V0O1xuICAgICAgaWYgKG5vZGUubGFzdENoaWxkICYmIG5lZWRzVG9Cb3Jyb3dQYXJlbnRDbG9zaW5nVGFnU3RhcnRNYXJrZXIobm9kZS5sYXN0Q2hpbGQpKSB7XG4gICAgICAgIGVuZCArPSBwcmludENsb3NpbmdUYWdTdGFydE1hcmtlcihub2RlLCBvcHRpb25zKS5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKG5lZWRzVG9Cb3Jyb3dMYXN0Q2hpbGRDbG9zaW5nVGFnRW5kTWFya2VyKG5vZGUpKSB7XG4gICAgICAgIGVuZCAtPSBwcmludENsb3NpbmdUYWdFbmRNYXJrZXIobm9kZS5sYXN0Q2hpbGQsIG9wdGlvbnMpLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gZ2V0Tm9kZUNvbnRlbnQ7XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZW1iZWQ0ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1odG1sL2VtYmVkLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgYnJlYWtQYXJlbnQsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBoYXJkbGluZSxcbiAgICAgICAgaW5kZW50LFxuICAgICAgICBsaW5lLFxuICAgICAgICBmaWxsLFxuICAgICAgICBzb2Z0bGluZVxuICAgICAgfSxcbiAgICAgIHV0aWxzOiB7XG4gICAgICAgIG1hcERvYyxcbiAgICAgICAgcmVwbGFjZVRleHRFbmRPZkxpbmVcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciBwcmludEZyb250TWF0dGVyID0gcmVxdWlyZV9wcmludCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludENsb3NpbmdUYWcsXG4gICAgICBwcmludENsb3NpbmdUYWdTdWZmaXgsXG4gICAgICBuZWVkc1RvQm9ycm93UHJldkNsb3NpbmdUYWdFbmRNYXJrZXIsXG4gICAgICBwcmludE9wZW5pbmdUYWdQcmVmaXgsXG4gICAgICBwcmludE9wZW5pbmdUYWdcbiAgICB9ID0gcmVxdWlyZV90YWcoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRJbWdTcmNzZXQsXG4gICAgICBwcmludENsYXNzTmFtZXNcbiAgICB9ID0gcmVxdWlyZV9zeW50YXhfYXR0cmlidXRlKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50VnVlRm9yLFxuICAgICAgcHJpbnRWdWVCaW5kaW5ncyxcbiAgICAgIGlzVnVlRXZlbnRCaW5kaW5nRXhwcmVzc2lvblxuICAgIH0gPSByZXF1aXJlX3N5bnRheF92dWUoKTtcbiAgICB2YXIge1xuICAgICAgaXNTY3JpcHRMaWtlVGFnLFxuICAgICAgaXNWdWVOb25IdG1sQmxvY2ssXG4gICAgICBpbmZlclNjcmlwdFBhcnNlcixcbiAgICAgIGh0bWxUcmltUHJlc2VydmVJbmRlbnRhdGlvbixcbiAgICAgIGRlZGVudFN0cmluZyxcbiAgICAgIHVuZXNjYXBlUXVvdGVFbnRpdGllcyxcbiAgICAgIGlzVnVlU2xvdEF0dHJpYnV0ZSxcbiAgICAgIGlzVnVlU2ZjQmluZGluZ3NBdHRyaWJ1dGUsXG4gICAgICBnZXRUZXh0VmFsdWVQYXJ0c1xuICAgIH0gPSByZXF1aXJlX3V0aWxzMTEoKTtcbiAgICB2YXIgZ2V0Tm9kZUNvbnRlbnQgPSByZXF1aXJlX2dldF9ub2RlX2NvbnRlbnQoKTtcbiAgICBmdW5jdGlvbiBwcmludEVtYmVkZGVkQXR0cmlidXRlVmFsdWUobm9kZSwgaHRtbFRleHRUb0RvYywgb3B0aW9ucykge1xuICAgICAgY29uc3QgaXNLZXlNYXRjaGVkID0gKHBhdHRlcm5zKSA9PiBuZXcgUmVnRXhwKHBhdHRlcm5zLmpvaW4oXCJ8XCIpKS50ZXN0KG5vZGUuZnVsbE5hbWUpO1xuICAgICAgY29uc3QgZ2V0VmFsdWUgPSAoKSA9PiB1bmVzY2FwZVF1b3RlRW50aXRpZXMobm9kZS52YWx1ZSk7XG4gICAgICBsZXQgc2hvdWxkSHVnID0gZmFsc2U7XG4gICAgICBjb25zdCBfX29uSHRtbEJpbmRpbmdSb290ID0gKHJvb3QsIG9wdGlvbnMyKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvb3ROb2RlID0gcm9vdC50eXBlID09PSBcIk5HUm9vdFwiID8gcm9vdC5ub2RlLnR5cGUgPT09IFwiTkdNaWNyb3N5bnRheFwiICYmIHJvb3Qubm9kZS5ib2R5Lmxlbmd0aCA9PT0gMSAmJiByb290Lm5vZGUuYm9keVswXS50eXBlID09PSBcIk5HTWljcm9zeW50YXhFeHByZXNzaW9uXCIgPyByb290Lm5vZGUuYm9keVswXS5leHByZXNzaW9uIDogcm9vdC5ub2RlIDogcm9vdC50eXBlID09PSBcIkpzRXhwcmVzc2lvblJvb3RcIiA/IHJvb3Qubm9kZSA6IHJvb3Q7XG4gICAgICAgIGlmIChyb290Tm9kZSAmJiAocm9vdE5vZGUudHlwZSA9PT0gXCJPYmplY3RFeHByZXNzaW9uXCIgfHwgcm9vdE5vZGUudHlwZSA9PT0gXCJBcnJheUV4cHJlc3Npb25cIiB8fCBvcHRpb25zMi5wYXJzZXIgPT09IFwiX192dWVfZXhwcmVzc2lvblwiICYmIChyb290Tm9kZS50eXBlID09PSBcIlRlbXBsYXRlTGl0ZXJhbFwiIHx8IHJvb3ROb2RlLnR5cGUgPT09IFwiU3RyaW5nTGl0ZXJhbFwiKSkpIHtcbiAgICAgICAgICBzaG91bGRIdWcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgcHJpbnRIdWcgPSAoZG9jMikgPT4gZ3JvdXAoZG9jMik7XG4gICAgICBjb25zdCBwcmludEV4cGFuZCA9IChkb2MyLCBjYW5IYXZlVHJhaWxpbmdXaGl0ZXNwYWNlID0gdHJ1ZSkgPT4gZ3JvdXAoW2luZGVudChbc29mdGxpbmUsIGRvYzJdKSwgY2FuSGF2ZVRyYWlsaW5nV2hpdGVzcGFjZSA/IHNvZnRsaW5lIDogXCJcIl0pO1xuICAgICAgY29uc3QgcHJpbnRNYXliZUh1ZyA9IChkb2MyKSA9PiBzaG91bGRIdWcgPyBwcmludEh1Zyhkb2MyKSA6IHByaW50RXhwYW5kKGRvYzIpO1xuICAgICAgY29uc3QgYXR0cmlidXRlVGV4dFRvRG9jID0gKGNvZGUsIG9wdHMpID0+IGh0bWxUZXh0VG9Eb2MoY29kZSwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIF9fb25IdG1sQmluZGluZ1Jvb3QsXG4gICAgICAgIF9fZW1iZWRkZWRJbkh0bWw6IHRydWVcbiAgICAgIH0sIG9wdHMpKTtcbiAgICAgIGlmIChub2RlLmZ1bGxOYW1lID09PSBcInNyY3NldFwiICYmIChub2RlLnBhcmVudC5mdWxsTmFtZSA9PT0gXCJpbWdcIiB8fCBub2RlLnBhcmVudC5mdWxsTmFtZSA9PT0gXCJzb3VyY2VcIikpIHtcbiAgICAgICAgcmV0dXJuIHByaW50RXhwYW5kKHByaW50SW1nU3Jjc2V0KGdldFZhbHVlKCkpKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmZ1bGxOYW1lID09PSBcImNsYXNzXCIgJiYgIW9wdGlvbnMucGFyZW50UGFyc2VyKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCF2YWx1ZS5pbmNsdWRlcyhcInt7XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIHByaW50Q2xhc3NOYW1lcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmZ1bGxOYW1lID09PSBcInN0eWxlXCIgJiYgIW9wdGlvbnMucGFyZW50UGFyc2VyKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCF2YWx1ZS5pbmNsdWRlcyhcInt7XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIHByaW50RXhwYW5kKGF0dHJpYnV0ZVRleHRUb0RvYyh2YWx1ZSwge1xuICAgICAgICAgICAgcGFyc2VyOiBcImNzc1wiLFxuICAgICAgICAgICAgX19pc0hUTUxTdHlsZUF0dHJpYnV0ZTogdHJ1ZVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucGFyc2VyID09PSBcInZ1ZVwiKSB7XG4gICAgICAgIGlmIChub2RlLmZ1bGxOYW1lID09PSBcInYtZm9yXCIpIHtcbiAgICAgICAgICByZXR1cm4gcHJpbnRWdWVGb3IoZ2V0VmFsdWUoKSwgYXR0cmlidXRlVGV4dFRvRG9jKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNWdWVTbG90QXR0cmlidXRlKG5vZGUpIHx8IGlzVnVlU2ZjQmluZGluZ3NBdHRyaWJ1dGUobm9kZSwgb3B0aW9ucykpIHtcbiAgICAgICAgICByZXR1cm4gcHJpbnRWdWVCaW5kaW5ncyhnZXRWYWx1ZSgpLCBhdHRyaWJ1dGVUZXh0VG9Eb2MpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZ1ZUV2ZW50QmluZGluZ1BhdHRlcm5zID0gW1wiXkBcIiwgXCJedi1vbjpcIl07XG4gICAgICAgIGNvbnN0IHZ1ZUV4cHJlc3Npb25CaW5kaW5nUGF0dGVybnMgPSBbXCJeOlwiLCBcIl52LWJpbmQ6XCJdO1xuICAgICAgICBjb25zdCBqc0V4cHJlc3Npb25CaW5kaW5nUGF0dGVybnMgPSBbXCJedi1cIl07XG4gICAgICAgIGlmIChpc0tleU1hdGNoZWQodnVlRXZlbnRCaW5kaW5nUGF0dGVybnMpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRWYWx1ZSgpO1xuICAgICAgICAgIGNvbnN0IHBhcnNlciA9IGlzVnVlRXZlbnRCaW5kaW5nRXhwcmVzc2lvbih2YWx1ZSkgPyBcIl9fanNfZXhwcmVzc2lvblwiIDogb3B0aW9ucy5fX3Nob3VsZF9wYXJzZV92dWVfdGVtcGxhdGVfd2l0aF90cyA/IFwiX192dWVfdHNfZXZlbnRfYmluZGluZ1wiIDogXCJfX3Z1ZV9ldmVudF9iaW5kaW5nXCI7XG4gICAgICAgICAgcmV0dXJuIHByaW50TWF5YmVIdWcoYXR0cmlidXRlVGV4dFRvRG9jKHZhbHVlLCB7XG4gICAgICAgICAgICBwYXJzZXJcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzS2V5TWF0Y2hlZCh2dWVFeHByZXNzaW9uQmluZGluZ1BhdHRlcm5zKSkge1xuICAgICAgICAgIHJldHVybiBwcmludE1heWJlSHVnKGF0dHJpYnV0ZVRleHRUb0RvYyhnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgICBwYXJzZXI6IFwiX192dWVfZXhwcmVzc2lvblwiXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0tleU1hdGNoZWQoanNFeHByZXNzaW9uQmluZGluZ1BhdHRlcm5zKSkge1xuICAgICAgICAgIHJldHVybiBwcmludE1heWJlSHVnKGF0dHJpYnV0ZVRleHRUb0RvYyhnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgICBwYXJzZXI6IFwiX19qc19leHByZXNzaW9uXCJcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnBhcnNlciA9PT0gXCJhbmd1bGFyXCIpIHtcbiAgICAgICAgY29uc3QgbmdUZXh0VG9Eb2MgPSAoY29kZSwgb3B0cykgPT4gYXR0cmlidXRlVGV4dFRvRG9jKGNvZGUsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0cyksIHt9LCB7XG4gICAgICAgICAgdHJhaWxpbmdDb21tYTogXCJub25lXCJcbiAgICAgICAgfSkpO1xuICAgICAgICBjb25zdCBuZ0RpcmVjdGl2ZUJpbmRpbmdQYXR0ZXJucyA9IFtcIl5cXFxcKlwiXTtcbiAgICAgICAgY29uc3QgbmdTdGF0ZW1lbnRCaW5kaW5nUGF0dGVybnMgPSBbXCJeXFxcXCguK1xcXFwpJFwiLCBcIl5vbi1cIl07XG4gICAgICAgIGNvbnN0IG5nRXhwcmVzc2lvbkJpbmRpbmdQYXR0ZXJucyA9IFtcIl5cXFxcWy4rXFxcXF0kXCIsIFwiXmJpbmQob24pPy1cIiwgXCJebmctKGlmfHNob3d8aGlkZXxjbGFzc3xzdHlsZSkkXCJdO1xuICAgICAgICBjb25zdCBuZ0kxOG5QYXR0ZXJucyA9IFtcIl5pMThuKC0uKyk/JFwiXTtcbiAgICAgICAgaWYgKGlzS2V5TWF0Y2hlZChuZ1N0YXRlbWVudEJpbmRpbmdQYXR0ZXJucykpIHtcbiAgICAgICAgICByZXR1cm4gcHJpbnRNYXliZUh1ZyhuZ1RleHRUb0RvYyhnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgICBwYXJzZXI6IFwiX19uZ19hY3Rpb25cIlxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNLZXlNYXRjaGVkKG5nRXhwcmVzc2lvbkJpbmRpbmdQYXR0ZXJucykpIHtcbiAgICAgICAgICByZXR1cm4gcHJpbnRNYXliZUh1ZyhuZ1RleHRUb0RvYyhnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgICBwYXJzZXI6IFwiX19uZ19iaW5kaW5nXCJcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzS2V5TWF0Y2hlZChuZ0kxOG5QYXR0ZXJucykpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZTIgPSBnZXRWYWx1ZSgpLnRyaW0oKTtcbiAgICAgICAgICByZXR1cm4gcHJpbnRFeHBhbmQoZmlsbChnZXRUZXh0VmFsdWVQYXJ0cyhub2RlLCB2YWx1ZTIpKSwgIXZhbHVlMi5pbmNsdWRlcyhcIkBAXCIpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNLZXlNYXRjaGVkKG5nRGlyZWN0aXZlQmluZGluZ1BhdHRlcm5zKSkge1xuICAgICAgICAgIHJldHVybiBwcmludE1heWJlSHVnKG5nVGV4dFRvRG9jKGdldFZhbHVlKCksIHtcbiAgICAgICAgICAgIHBhcnNlcjogXCJfX25nX2RpcmVjdGl2ZVwiXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludGVycG9sYXRpb25SZWdleCA9IC97eyguKz8pfX0vcztcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoaW50ZXJwb2xhdGlvblJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgcGFydF0gb2YgdmFsdWUuc3BsaXQoaW50ZXJwb2xhdGlvblJlZ2V4KS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCAlIDIgPT09IDApIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChyZXBsYWNlVGV4dEVuZE9mTGluZShwYXJ0KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goZ3JvdXAoW1wie3tcIiwgaW5kZW50KFtsaW5lLCBuZ1RleHRUb0RvYyhwYXJ0LCB7XG4gICAgICAgICAgICAgICAgICBwYXJzZXI6IFwiX19uZ19pbnRlcnBvbGF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICBfX2lzSW5IdG1sSW50ZXJwb2xhdGlvbjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pXSksIGxpbmUsIFwifX1cIl0pKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChcInt7XCIsIHJlcGxhY2VUZXh0RW5kT2ZMaW5lKHBhcnQpLCBcIn19XCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBncm91cChwYXJ0cyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbWJlZChwYXRoLCBwcmludCwgdGV4dFRvRG9jLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImVsZW1lbnRcIjoge1xuICAgICAgICAgIGlmIChpc1NjcmlwdExpa2VUYWcobm9kZSkgfHwgbm9kZS50eXBlID09PSBcImludGVycG9sYXRpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW5vZGUuaXNTZWxmQ2xvc2luZyAmJiBpc1Z1ZU5vbkh0bWxCbG9jayhub2RlLCBvcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gaW5mZXJTY3JpcHRQYXJzZXIobm9kZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoIXBhcnNlcikge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZ2V0Tm9kZUNvbnRlbnQobm9kZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBsZXQgaXNFbXB0eSA9IC9eXFxzKiQvLnRlc3QoY29udGVudCk7XG4gICAgICAgICAgICBsZXQgZG9jMiA9IFwiXCI7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkpIHtcbiAgICAgICAgICAgICAgZG9jMiA9IHRleHRUb0RvYyhodG1sVHJpbVByZXNlcnZlSW5kZW50YXRpb24oY29udGVudCksIHtcbiAgICAgICAgICAgICAgICBwYXJzZXIsXG4gICAgICAgICAgICAgICAgX19lbWJlZGRlZEluSHRtbDogdHJ1ZVxuICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiB0cnVlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpc0VtcHR5ID0gZG9jMiA9PT0gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbcHJpbnRPcGVuaW5nVGFnUHJlZml4KG5vZGUsIG9wdGlvbnMpLCBncm91cChwcmludE9wZW5pbmdUYWcocGF0aCwgb3B0aW9ucywgcHJpbnQpKSwgaXNFbXB0eSA/IFwiXCIgOiBoYXJkbGluZSwgZG9jMiwgaXNFbXB0eSA/IFwiXCIgOiBoYXJkbGluZSwgcHJpbnRDbG9zaW5nVGFnKG5vZGUsIG9wdGlvbnMpLCBwcmludENsb3NpbmdUYWdTdWZmaXgobm9kZSwgb3B0aW9ucyldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidGV4dFwiOiB7XG4gICAgICAgICAgaWYgKGlzU2NyaXB0TGlrZVRhZyhub2RlLnBhcmVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IGluZmVyU2NyaXB0UGFyc2VyKG5vZGUucGFyZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChwYXJzZXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJzZXIgPT09IFwibWFya2Rvd25cIiA/IGRlZGVudFN0cmluZyhub2RlLnZhbHVlLnJlcGxhY2UoL15bXlxcU1xcbl0qXFxuLywgXCJcIikpIDogbm9kZS52YWx1ZTtcbiAgICAgICAgICAgICAgY29uc3QgdGV4dFRvRG9jT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBwYXJzZXIsXG4gICAgICAgICAgICAgICAgX19lbWJlZGRlZEluSHRtbDogdHJ1ZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBpZiAob3B0aW9ucy5wYXJzZXIgPT09IFwiaHRtbFwiICYmIHBhcnNlciA9PT0gXCJiYWJlbFwiKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNvdXJjZVR5cGUgPSBcInNjcmlwdFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJNYXBcbiAgICAgICAgICAgICAgICB9ID0gbm9kZS5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGF0dHJNYXAgJiYgKGF0dHJNYXAudHlwZSA9PT0gXCJtb2R1bGVcIiB8fCBhdHRyTWFwLnR5cGUgPT09IFwidGV4dC9iYWJlbFwiICYmIGF0dHJNYXBbXCJkYXRhLXR5cGVcIl0gPT09IFwibW9kdWxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICBzb3VyY2VUeXBlID0gXCJtb2R1bGVcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGV4dFRvRG9jT3B0aW9ucy5fX2JhYmVsU291cmNlVHlwZSA9IHNvdXJjZVR5cGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFticmVha1BhcmVudCwgcHJpbnRPcGVuaW5nVGFnUHJlZml4KG5vZGUsIG9wdGlvbnMpLCB0ZXh0VG9Eb2ModmFsdWUsIHRleHRUb0RvY09wdGlvbnMsIHtcbiAgICAgICAgICAgICAgICBzdHJpcFRyYWlsaW5nSGFyZGxpbmU6IHRydWVcbiAgICAgICAgICAgICAgfSksIHByaW50Q2xvc2luZ1RhZ1N1ZmZpeChub2RlLCBvcHRpb25zKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChub2RlLnBhcmVudC50eXBlID09PSBcImludGVycG9sYXRpb25cIikge1xuICAgICAgICAgICAgY29uc3QgdGV4dFRvRG9jT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgX19pc0luSHRtbEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgIF9fZW1iZWRkZWRJbkh0bWw6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5wYXJzZXIgPT09IFwiYW5ndWxhclwiKSB7XG4gICAgICAgICAgICAgIHRleHRUb0RvY09wdGlvbnMucGFyc2VyID0gXCJfX25nX2ludGVycG9sYXRpb25cIjtcbiAgICAgICAgICAgICAgdGV4dFRvRG9jT3B0aW9ucy50cmFpbGluZ0NvbW1hID0gXCJub25lXCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMucGFyc2VyID09PSBcInZ1ZVwiKSB7XG4gICAgICAgICAgICAgIHRleHRUb0RvY09wdGlvbnMucGFyc2VyID0gb3B0aW9ucy5fX3Nob3VsZF9wYXJzZV92dWVfdGVtcGxhdGVfd2l0aF90cyA/IFwiX192dWVfdHNfZXhwcmVzc2lvblwiIDogXCJfX3Z1ZV9leHByZXNzaW9uXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0ZXh0VG9Eb2NPcHRpb25zLnBhcnNlciA9IFwiX19qc19leHByZXNzaW9uXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW2luZGVudChbbGluZSwgdGV4dFRvRG9jKG5vZGUudmFsdWUsIHRleHRUb0RvY09wdGlvbnMsIHtcbiAgICAgICAgICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiB0cnVlXG4gICAgICAgICAgICB9KV0pLCBub2RlLnBhcmVudC5uZXh0ICYmIG5lZWRzVG9Cb3Jyb3dQcmV2Q2xvc2luZ1RhZ0VuZE1hcmtlcihub2RlLnBhcmVudC5uZXh0KSA/IFwiIFwiIDogbGluZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJhdHRyaWJ1dGVcIjoge1xuICAgICAgICAgIGlmICghbm9kZS52YWx1ZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgvXlBSRVRUSUVSX0hUTUxfUExBQ0VIT0xERVJfXFxkK19cXGQrX0lOX0pTJC8udGVzdChvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnZhbHVlU3Bhbi5zdGFydC5vZmZzZXQsIG5vZGUudmFsdWVTcGFuLmVuZC5vZmZzZXQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtub2RlLnJhd05hbWUsIFwiPVwiLCBub2RlLnZhbHVlXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMucGFyc2VyID09PSBcImx3Y1wiKSB7XG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0aW9uUmVnZXggPSAvXnsuKn0kL3M7XG4gICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGlvblJlZ2V4LnRlc3Qob3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2Uobm9kZS52YWx1ZVNwYW4uc3RhcnQub2Zmc2V0LCBub2RlLnZhbHVlU3Bhbi5lbmQub2Zmc2V0KSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtub2RlLnJhd05hbWUsIFwiPVwiLCBub2RlLnZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZW1iZWRkZWRBdHRyaWJ1dGVWYWx1ZURvYyA9IHByaW50RW1iZWRkZWRBdHRyaWJ1dGVWYWx1ZShub2RlLCAoY29kZSwgb3B0cykgPT4gdGV4dFRvRG9jKGNvZGUsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgX19pc0luSHRtbEF0dHJpYnV0ZTogdHJ1ZSxcbiAgICAgICAgICAgIF9fZW1iZWRkZWRJbkh0bWw6IHRydWVcbiAgICAgICAgICB9LCBvcHRzKSwge1xuICAgICAgICAgICAgc3RyaXBUcmFpbGluZ0hhcmRsaW5lOiB0cnVlXG4gICAgICAgICAgfSksIG9wdGlvbnMpO1xuICAgICAgICAgIGlmIChlbWJlZGRlZEF0dHJpYnV0ZVZhbHVlRG9jKSB7XG4gICAgICAgICAgICByZXR1cm4gW25vZGUucmF3TmFtZSwgJz1cIicsIGdyb3VwKG1hcERvYyhlbWJlZGRlZEF0dHJpYnV0ZVZhbHVlRG9jLCAoZG9jMikgPT4gdHlwZW9mIGRvYzIgPT09IFwic3RyaW5nXCIgPyBkb2MyLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpIDogZG9jMikpLCAnXCInXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImZyb250LW1hdHRlclwiOlxuICAgICAgICAgIHJldHVybiBwcmludEZyb250TWF0dGVyKG5vZGUsIHRleHRUb0RvYyk7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IGVtYmVkO1xuICB9XG59KTtcbnZhciByZXF1aXJlX2NoaWxkcmVuID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1odG1sL3ByaW50L2NoaWxkcmVuLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgYnJlYWtQYXJlbnQsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBsaW5lLFxuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgaGFyZGxpbmVcbiAgICAgIH0sXG4gICAgICB1dGlsczoge1xuICAgICAgICByZXBsYWNlVGV4dEVuZE9mTGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfSA9IHJlcXVpcmVfbG9jNigpO1xuICAgIHZhciB7XG4gICAgICBmb3JjZUJyZWFrQ2hpbGRyZW4sXG4gICAgICBmb3JjZU5leHRFbXB0eUxpbmUsXG4gICAgICBpc1RleHRMaWtlTm9kZSxcbiAgICAgIGhhc1ByZXR0aWVySWdub3JlLFxuICAgICAgcHJlZmVySGFyZGxpbmVBc0xlYWRpbmdTcGFjZXNcbiAgICB9ID0gcmVxdWlyZV91dGlsczExKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T3BlbmluZ1RhZ1ByZWZpeCxcbiAgICAgIG5lZWRzVG9Cb3Jyb3dOZXh0T3BlbmluZ1RhZ1N0YXJ0TWFya2VyLFxuICAgICAgcHJpbnRPcGVuaW5nVGFnU3RhcnRNYXJrZXIsXG4gICAgICBuZWVkc1RvQm9ycm93UHJldkNsb3NpbmdUYWdFbmRNYXJrZXIsXG4gICAgICBwcmludENsb3NpbmdUYWdFbmRNYXJrZXIsXG4gICAgICBwcmludENsb3NpbmdUYWdTdWZmaXgsXG4gICAgICBuZWVkc1RvQm9ycm93UGFyZW50Q2xvc2luZ1RhZ1N0YXJ0TWFya2VyXG4gICAgfSA9IHJlcXVpcmVfdGFnKCk7XG4gICAgZnVuY3Rpb24gcHJpbnRDaGlsZChjaGlsZFBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGNoaWxkUGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKGhhc1ByZXR0aWVySWdub3JlKGNoaWxkKSkge1xuICAgICAgICByZXR1cm4gW3ByaW50T3BlbmluZ1RhZ1ByZWZpeChjaGlsZCwgb3B0aW9ucyksIC4uLnJlcGxhY2VUZXh0RW5kT2ZMaW5lKG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGxvY1N0YXJ0KGNoaWxkKSArIChjaGlsZC5wcmV2ICYmIG5lZWRzVG9Cb3Jyb3dOZXh0T3BlbmluZ1RhZ1N0YXJ0TWFya2VyKGNoaWxkLnByZXYpID8gcHJpbnRPcGVuaW5nVGFnU3RhcnRNYXJrZXIoY2hpbGQpLmxlbmd0aCA6IDApLCBsb2NFbmQoY2hpbGQpIC0gKGNoaWxkLm5leHQgJiYgbmVlZHNUb0JvcnJvd1ByZXZDbG9zaW5nVGFnRW5kTWFya2VyKGNoaWxkLm5leHQpID8gcHJpbnRDbG9zaW5nVGFnRW5kTWFya2VyKGNoaWxkLCBvcHRpb25zKS5sZW5ndGggOiAwKSkpLCBwcmludENsb3NpbmdUYWdTdWZmaXgoY2hpbGQsIG9wdGlvbnMpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmludCgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludEJldHdlZW5MaW5lKHByZXZOb2RlLCBuZXh0Tm9kZSkge1xuICAgICAgcmV0dXJuIGlzVGV4dExpa2VOb2RlKHByZXZOb2RlKSAmJiBpc1RleHRMaWtlTm9kZShuZXh0Tm9kZSkgPyBwcmV2Tm9kZS5pc1RyYWlsaW5nU3BhY2VTZW5zaXRpdmUgPyBwcmV2Tm9kZS5oYXNUcmFpbGluZ1NwYWNlcyA/IHByZWZlckhhcmRsaW5lQXNMZWFkaW5nU3BhY2VzKG5leHROb2RlKSA/IGhhcmRsaW5lIDogbGluZSA6IFwiXCIgOiBwcmVmZXJIYXJkbGluZUFzTGVhZGluZ1NwYWNlcyhuZXh0Tm9kZSkgPyBoYXJkbGluZSA6IHNvZnRsaW5lIDogbmVlZHNUb0JvcnJvd05leHRPcGVuaW5nVGFnU3RhcnRNYXJrZXIocHJldk5vZGUpICYmIChoYXNQcmV0dGllcklnbm9yZShuZXh0Tm9kZSkgfHwgbmV4dE5vZGUuZmlyc3RDaGlsZCB8fCBuZXh0Tm9kZS5pc1NlbGZDbG9zaW5nIHx8IG5leHROb2RlLnR5cGUgPT09IFwiZWxlbWVudFwiICYmIG5leHROb2RlLmF0dHJzLmxlbmd0aCA+IDApIHx8IHByZXZOb2RlLnR5cGUgPT09IFwiZWxlbWVudFwiICYmIHByZXZOb2RlLmlzU2VsZkNsb3NpbmcgJiYgbmVlZHNUb0JvcnJvd1ByZXZDbG9zaW5nVGFnRW5kTWFya2VyKG5leHROb2RlKSA/IFwiXCIgOiAhbmV4dE5vZGUuaXNMZWFkaW5nU3BhY2VTZW5zaXRpdmUgfHwgcHJlZmVySGFyZGxpbmVBc0xlYWRpbmdTcGFjZXMobmV4dE5vZGUpIHx8IG5lZWRzVG9Cb3Jyb3dQcmV2Q2xvc2luZ1RhZ0VuZE1hcmtlcihuZXh0Tm9kZSkgJiYgcHJldk5vZGUubGFzdENoaWxkICYmIG5lZWRzVG9Cb3Jyb3dQYXJlbnRDbG9zaW5nVGFnU3RhcnRNYXJrZXIocHJldk5vZGUubGFzdENoaWxkKSAmJiBwcmV2Tm9kZS5sYXN0Q2hpbGQubGFzdENoaWxkICYmIG5lZWRzVG9Cb3Jyb3dQYXJlbnRDbG9zaW5nVGFnU3RhcnRNYXJrZXIocHJldk5vZGUubGFzdENoaWxkLmxhc3RDaGlsZCkgPyBoYXJkbGluZSA6IG5leHROb2RlLmhhc0xlYWRpbmdTcGFjZXMgPyBsaW5lIDogc29mdGxpbmU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAoZm9yY2VCcmVha0NoaWxkcmVuKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBbYnJlYWtQYXJlbnQsIC4uLnBhdGgubWFwKChjaGlsZFBhdGgpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGUgPSBjaGlsZFBhdGguZ2V0VmFsdWUoKTtcbiAgICAgICAgICBjb25zdCBwcmV2QmV0d2VlbkxpbmUgPSAhY2hpbGROb2RlLnByZXYgPyBcIlwiIDogcHJpbnRCZXR3ZWVuTGluZShjaGlsZE5vZGUucHJldiwgY2hpbGROb2RlKTtcbiAgICAgICAgICByZXR1cm4gWyFwcmV2QmV0d2VlbkxpbmUgPyBcIlwiIDogW3ByZXZCZXR3ZWVuTGluZSwgZm9yY2VOZXh0RW1wdHlMaW5lKGNoaWxkTm9kZS5wcmV2KSA/IGhhcmRsaW5lIDogXCJcIl0sIHByaW50Q2hpbGQoY2hpbGRQYXRoLCBvcHRpb25zLCBwcmludCldO1xuICAgICAgICB9LCBcImNoaWxkcmVuXCIpXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGdyb3VwSWRzID0gbm9kZS5jaGlsZHJlbi5tYXAoKCkgPT4gU3ltYm9sKFwiXCIpKTtcbiAgICAgIHJldHVybiBwYXRoLm1hcCgoY2hpbGRQYXRoLCBjaGlsZEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkUGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoaXNUZXh0TGlrZU5vZGUoY2hpbGROb2RlKSkge1xuICAgICAgICAgIGlmIChjaGlsZE5vZGUucHJldiAmJiBpc1RleHRMaWtlTm9kZShjaGlsZE5vZGUucHJldikpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZCZXR3ZWVuTGluZTIgPSBwcmludEJldHdlZW5MaW5lKGNoaWxkTm9kZS5wcmV2LCBjaGlsZE5vZGUpO1xuICAgICAgICAgICAgaWYgKHByZXZCZXR3ZWVuTGluZTIpIHtcbiAgICAgICAgICAgICAgaWYgKGZvcmNlTmV4dEVtcHR5TGluZShjaGlsZE5vZGUucHJldikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2hhcmRsaW5lLCBoYXJkbGluZSwgcHJpbnRDaGlsZChjaGlsZFBhdGgsIG9wdGlvbnMsIHByaW50KV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFtwcmV2QmV0d2VlbkxpbmUyLCBwcmludENoaWxkKGNoaWxkUGF0aCwgb3B0aW9ucywgcHJpbnQpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByaW50Q2hpbGQoY2hpbGRQYXRoLCBvcHRpb25zLCBwcmludCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldlBhcnRzID0gW107XG4gICAgICAgIGNvbnN0IGxlYWRpbmdQYXJ0cyA9IFtdO1xuICAgICAgICBjb25zdCB0cmFpbGluZ1BhcnRzID0gW107XG4gICAgICAgIGNvbnN0IG5leHRQYXJ0cyA9IFtdO1xuICAgICAgICBjb25zdCBwcmV2QmV0d2VlbkxpbmUgPSBjaGlsZE5vZGUucHJldiA/IHByaW50QmV0d2VlbkxpbmUoY2hpbGROb2RlLnByZXYsIGNoaWxkTm9kZSkgOiBcIlwiO1xuICAgICAgICBjb25zdCBuZXh0QmV0d2VlbkxpbmUgPSBjaGlsZE5vZGUubmV4dCA/IHByaW50QmV0d2VlbkxpbmUoY2hpbGROb2RlLCBjaGlsZE5vZGUubmV4dCkgOiBcIlwiO1xuICAgICAgICBpZiAocHJldkJldHdlZW5MaW5lKSB7XG4gICAgICAgICAgaWYgKGZvcmNlTmV4dEVtcHR5TGluZShjaGlsZE5vZGUucHJldikpIHtcbiAgICAgICAgICAgIHByZXZQYXJ0cy5wdXNoKGhhcmRsaW5lLCBoYXJkbGluZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChwcmV2QmV0d2VlbkxpbmUgPT09IGhhcmRsaW5lKSB7XG4gICAgICAgICAgICBwcmV2UGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc1RleHRMaWtlTm9kZShjaGlsZE5vZGUucHJldikpIHtcbiAgICAgICAgICAgICAgbGVhZGluZ1BhcnRzLnB1c2gocHJldkJldHdlZW5MaW5lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxlYWRpbmdQYXJ0cy5wdXNoKGlmQnJlYWsoXCJcIiwgc29mdGxpbmUsIHtcbiAgICAgICAgICAgICAgICBncm91cElkOiBncm91cElkc1tjaGlsZEluZGV4IC0gMV1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dEJldHdlZW5MaW5lKSB7XG4gICAgICAgICAgaWYgKGZvcmNlTmV4dEVtcHR5TGluZShjaGlsZE5vZGUpKSB7XG4gICAgICAgICAgICBpZiAoaXNUZXh0TGlrZU5vZGUoY2hpbGROb2RlLm5leHQpKSB7XG4gICAgICAgICAgICAgIG5leHRQYXJ0cy5wdXNoKGhhcmRsaW5lLCBoYXJkbGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChuZXh0QmV0d2VlbkxpbmUgPT09IGhhcmRsaW5lKSB7XG4gICAgICAgICAgICBpZiAoaXNUZXh0TGlrZU5vZGUoY2hpbGROb2RlLm5leHQpKSB7XG4gICAgICAgICAgICAgIG5leHRQYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhaWxpbmdQYXJ0cy5wdXNoKG5leHRCZXR3ZWVuTGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4ucHJldlBhcnRzLCBncm91cChbLi4ubGVhZGluZ1BhcnRzLCBncm91cChbcHJpbnRDaGlsZChjaGlsZFBhdGgsIG9wdGlvbnMsIHByaW50KSwgLi4udHJhaWxpbmdQYXJ0c10sIHtcbiAgICAgICAgICBpZDogZ3JvdXBJZHNbY2hpbGRJbmRleF1cbiAgICAgICAgfSldKSwgLi4ubmV4dFBhcnRzXTtcbiAgICAgIH0sIFwiY2hpbGRyZW5cIik7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByaW50Q2hpbGRyZW5cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2VsZW1lbnQgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvcHJpbnQvZWxlbWVudC5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGJyZWFrUGFyZW50LFxuICAgICAgICBkZWRlbnRUb1Jvb3QsXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBpbmRlbnRJZkJyZWFrLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIGxpbmUsXG4gICAgICAgIHNvZnRsaW5lXG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgcmVwbGFjZVRleHRFbmRPZkxpbmVcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciBnZXROb2RlQ29udGVudCA9IHJlcXVpcmVfZ2V0X25vZGVfY29udGVudCgpO1xuICAgIHZhciB7XG4gICAgICBzaG91bGRQcmVzZXJ2ZUNvbnRlbnQsXG4gICAgICBpc1NjcmlwdExpa2VUYWcsXG4gICAgICBpc1Z1ZUN1c3RvbUJsb2NrLFxuICAgICAgY291bnRQYXJlbnRzLFxuICAgICAgZm9yY2VCcmVha0NvbnRlbnRcbiAgICB9ID0gcmVxdWlyZV91dGlsczExKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50T3BlbmluZ1RhZ1ByZWZpeCxcbiAgICAgIHByaW50T3BlbmluZ1RhZyxcbiAgICAgIHByaW50Q2xvc2luZ1RhZ1N1ZmZpeCxcbiAgICAgIHByaW50Q2xvc2luZ1RhZyxcbiAgICAgIG5lZWRzVG9Cb3Jyb3dQcmV2Q2xvc2luZ1RhZ0VuZE1hcmtlcixcbiAgICAgIG5lZWRzVG9Cb3Jyb3dMYXN0Q2hpbGRDbG9zaW5nVGFnRW5kTWFya2VyXG4gICAgfSA9IHJlcXVpcmVfdGFnKCk7XG4gICAgdmFyIHtcbiAgICAgIHByaW50Q2hpbGRyZW5cbiAgICB9ID0gcmVxdWlyZV9jaGlsZHJlbigpO1xuICAgIGZ1bmN0aW9uIHByaW50RWxlbWVudChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZUNvbnRlbnQobm9kZSwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIFtwcmludE9wZW5pbmdUYWdQcmVmaXgobm9kZSwgb3B0aW9ucyksIGdyb3VwKHByaW50T3BlbmluZ1RhZyhwYXRoLCBvcHRpb25zLCBwcmludCkpLCAuLi5yZXBsYWNlVGV4dEVuZE9mTGluZShnZXROb2RlQ29udGVudChub2RlLCBvcHRpb25zKSksIC4uLnByaW50Q2xvc2luZ1RhZyhub2RlLCBvcHRpb25zKSwgcHJpbnRDbG9zaW5nVGFnU3VmZml4KG5vZGUsIG9wdGlvbnMpXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNob3VsZEh1Z0NvbnRlbnQgPSBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBub2RlLmZpcnN0Q2hpbGQudHlwZSA9PT0gXCJpbnRlcnBvbGF0aW9uXCIgJiYgbm9kZS5maXJzdENoaWxkLmlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlICYmICFub2RlLmZpcnN0Q2hpbGQuaGFzTGVhZGluZ1NwYWNlcyAmJiBub2RlLmxhc3RDaGlsZC5pc1RyYWlsaW5nU3BhY2VTZW5zaXRpdmUgJiYgIW5vZGUubGFzdENoaWxkLmhhc1RyYWlsaW5nU3BhY2VzO1xuICAgICAgY29uc3QgYXR0ckdyb3VwSWQgPSBTeW1ib2woXCJlbGVtZW50LWF0dHItZ3JvdXAtaWRcIik7XG4gICAgICBjb25zdCBwcmludFRhZyA9IChkb2MyKSA9PiBncm91cChbZ3JvdXAocHJpbnRPcGVuaW5nVGFnKHBhdGgsIG9wdGlvbnMsIHByaW50KSwge1xuICAgICAgICBpZDogYXR0ckdyb3VwSWRcbiAgICAgIH0pLCBkb2MyLCBwcmludENsb3NpbmdUYWcobm9kZSwgb3B0aW9ucyldKTtcbiAgICAgIGNvbnN0IHByaW50Q2hpbGRyZW5Eb2MgPSAoY2hpbGRyZW5Eb2MpID0+IHtcbiAgICAgICAgaWYgKHNob3VsZEh1Z0NvbnRlbnQpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZW50SWZCcmVhayhjaGlsZHJlbkRvYywge1xuICAgICAgICAgICAgZ3JvdXBJZDogYXR0ckdyb3VwSWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGlzU2NyaXB0TGlrZVRhZyhub2RlKSB8fCBpc1Z1ZUN1c3RvbUJsb2NrKG5vZGUsIG9wdGlvbnMpKSAmJiBub2RlLnBhcmVudC50eXBlID09PSBcInJvb3RcIiAmJiBvcHRpb25zLnBhcnNlciA9PT0gXCJ2dWVcIiAmJiAhb3B0aW9ucy52dWVJbmRlbnRTY3JpcHRBbmRTdHlsZSkge1xuICAgICAgICAgIHJldHVybiBjaGlsZHJlbkRvYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZW50KGNoaWxkcmVuRG9jKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBwcmludExpbmVCZWZvcmVDaGlsZHJlbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKHNob3VsZEh1Z0NvbnRlbnQpIHtcbiAgICAgICAgICByZXR1cm4gaWZCcmVhayhzb2Z0bGluZSwgXCJcIiwge1xuICAgICAgICAgICAgZ3JvdXBJZDogYXR0ckdyb3VwSWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5maXJzdENoaWxkLmhhc0xlYWRpbmdTcGFjZXMgJiYgbm9kZS5maXJzdENoaWxkLmlzTGVhZGluZ1NwYWNlU2Vuc2l0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuZmlyc3RDaGlsZC50eXBlID09PSBcInRleHRcIiAmJiBub2RlLmlzV2hpdGVzcGFjZVNlbnNpdGl2ZSAmJiBub2RlLmlzSW5kZW50YXRpb25TZW5zaXRpdmUpIHtcbiAgICAgICAgICByZXR1cm4gZGVkZW50VG9Sb290KHNvZnRsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc29mdGxpbmU7XG4gICAgICB9O1xuICAgICAgY29uc3QgcHJpbnRMaW5lQWZ0ZXJDaGlsZHJlbiA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgbmVlZHNUb0JvcnJvdyA9IG5vZGUubmV4dCA/IG5lZWRzVG9Cb3Jyb3dQcmV2Q2xvc2luZ1RhZ0VuZE1hcmtlcihub2RlLm5leHQpIDogbmVlZHNUb0JvcnJvd0xhc3RDaGlsZENsb3NpbmdUYWdFbmRNYXJrZXIobm9kZS5wYXJlbnQpO1xuICAgICAgICBpZiAobmVlZHNUb0JvcnJvdykge1xuICAgICAgICAgIGlmIChub2RlLmxhc3RDaGlsZC5oYXNUcmFpbGluZ1NwYWNlcyAmJiBub2RlLmxhc3RDaGlsZC5pc1RyYWlsaW5nU3BhY2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIiBcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZEh1Z0NvbnRlbnQpIHtcbiAgICAgICAgICByZXR1cm4gaWZCcmVhayhzb2Z0bGluZSwgXCJcIiwge1xuICAgICAgICAgICAgZ3JvdXBJZDogYXR0ckdyb3VwSWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5sYXN0Q2hpbGQuaGFzVHJhaWxpbmdTcGFjZXMgJiYgbm9kZS5sYXN0Q2hpbGQuaXNUcmFpbGluZ1NwYWNlU2Vuc2l0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChub2RlLmxhc3RDaGlsZC50eXBlID09PSBcImNvbW1lbnRcIiB8fCBub2RlLmxhc3RDaGlsZC50eXBlID09PSBcInRleHRcIiAmJiBub2RlLmlzV2hpdGVzcGFjZVNlbnNpdGl2ZSAmJiBub2RlLmlzSW5kZW50YXRpb25TZW5zaXRpdmUpICYmIG5ldyBSZWdFeHAoYFxcXFxuW1xcXFx0IF17JHtvcHRpb25zLnRhYldpZHRoICogY291bnRQYXJlbnRzKHBhdGgsIChub2RlMikgPT4gbm9kZTIucGFyZW50ICYmIG5vZGUyLnBhcmVudC50eXBlICE9PSBcInJvb3RcIil9fSRgKS50ZXN0KG5vZGUubGFzdENoaWxkLnZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb2Z0bGluZTtcbiAgICAgIH07XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHByaW50VGFnKG5vZGUuaGFzRGFuZ2xpbmdTcGFjZXMgJiYgbm9kZS5pc0RhbmdsaW5nU3BhY2VTZW5zaXRpdmUgPyBsaW5lIDogXCJcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJpbnRUYWcoW2ZvcmNlQnJlYWtDb250ZW50KG5vZGUpID8gYnJlYWtQYXJlbnQgOiBcIlwiLCBwcmludENoaWxkcmVuRG9jKFtwcmludExpbmVCZWZvcmVDaGlsZHJlbigpLCBwcmludENoaWxkcmVuKHBhdGgsIG9wdGlvbnMsIHByaW50KV0pLCBwcmludExpbmVBZnRlckNoaWxkcmVuKCldKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRFbGVtZW50XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9wcmludGVyX2h0bWwgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvcHJpbnRlci1odG1sLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgZmlsbCxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBsaXRlcmFsbGluZVxuICAgICAgfSxcbiAgICAgIHV0aWxzOiB7XG4gICAgICAgIGNsZWFuRG9jLFxuICAgICAgICBnZXREb2NQYXJ0cyxcbiAgICAgICAgaXNDb25jYXQsXG4gICAgICAgIHJlcGxhY2VUZXh0RW5kT2ZMaW5lXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIgY2xlYW4gPSByZXF1aXJlX2NsZWFuNSgpO1xuICAgIHZhciB7XG4gICAgICBjb3VudENoYXJzLFxuICAgICAgdW5lc2NhcGVRdW90ZUVudGl0aWVzLFxuICAgICAgZ2V0VGV4dFZhbHVlUGFydHNcbiAgICB9ID0gcmVxdWlyZV91dGlsczExKCk7XG4gICAgdmFyIHByZXByb2Nlc3MgPSByZXF1aXJlX3ByaW50X3ByZXByb2Nlc3MzKCk7XG4gICAgdmFyIHtcbiAgICAgIGluc2VydFByYWdtYVxuICAgIH0gPSByZXF1aXJlX3ByYWdtYTUoKTtcbiAgICB2YXIge1xuICAgICAgbG9jU3RhcnQsXG4gICAgICBsb2NFbmRcbiAgICB9ID0gcmVxdWlyZV9sb2M2KCk7XG4gICAgdmFyIGVtYmVkID0gcmVxdWlyZV9lbWJlZDQoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRDbG9zaW5nVGFnU3VmZml4LFxuICAgICAgcHJpbnRDbG9zaW5nVGFnRW5kLFxuICAgICAgcHJpbnRPcGVuaW5nVGFnUHJlZml4LFxuICAgICAgcHJpbnRPcGVuaW5nVGFnU3RhcnRcbiAgICB9ID0gcmVxdWlyZV90YWcoKTtcbiAgICB2YXIge1xuICAgICAgcHJpbnRFbGVtZW50XG4gICAgfSA9IHJlcXVpcmVfZWxlbWVudCgpO1xuICAgIHZhciB7XG4gICAgICBwcmludENoaWxkcmVuXG4gICAgfSA9IHJlcXVpcmVfY2hpbGRyZW4oKTtcbiAgICBmdW5jdGlvbiBnZW5lcmljUHJpbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwiZnJvbnQtbWF0dGVyXCI6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2VUZXh0RW5kT2ZMaW5lKG5vZGUucmF3KTtcbiAgICAgICAgY2FzZSBcInJvb3RcIjpcbiAgICAgICAgICBpZiAob3B0aW9ucy5fX29uSHRtbFJvb3QpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuX19vbkh0bWxSb290KG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW2dyb3VwKHByaW50Q2hpbGRyZW4ocGF0aCwgb3B0aW9ucywgcHJpbnQpKSwgaGFyZGxpbmVdO1xuICAgICAgICBjYXNlIFwiZWxlbWVudFwiOlxuICAgICAgICBjYXNlIFwiaWVDb25kaXRpb25hbENvbW1lbnRcIjoge1xuICAgICAgICAgIHJldHVybiBwcmludEVsZW1lbnQocGF0aCwgb3B0aW9ucywgcHJpbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJpZUNvbmRpdGlvbmFsU3RhcnRDb21tZW50XCI6XG4gICAgICAgIGNhc2UgXCJpZUNvbmRpdGlvbmFsRW5kQ29tbWVudFwiOlxuICAgICAgICAgIHJldHVybiBbcHJpbnRPcGVuaW5nVGFnU3RhcnQobm9kZSksIHByaW50Q2xvc2luZ1RhZ0VuZChub2RlKV07XG4gICAgICAgIGNhc2UgXCJpbnRlcnBvbGF0aW9uXCI6XG4gICAgICAgICAgcmV0dXJuIFtwcmludE9wZW5pbmdUYWdTdGFydChub2RlLCBvcHRpb25zKSwgLi4ucGF0aC5tYXAocHJpbnQsIFwiY2hpbGRyZW5cIiksIHByaW50Q2xvc2luZ1RhZ0VuZChub2RlLCBvcHRpb25zKV07XG4gICAgICAgIGNhc2UgXCJ0ZXh0XCI6IHtcbiAgICAgICAgICBpZiAobm9kZS5wYXJlbnQudHlwZSA9PT0gXCJpbnRlcnBvbGF0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYWlsaW5nTmV3bGluZVJlZ2V4ID0gL1xcblteXFxTXFxuXSokLztcbiAgICAgICAgICAgIGNvbnN0IGhhc1RyYWlsaW5nTmV3bGluZSA9IHRyYWlsaW5nTmV3bGluZVJlZ2V4LnRlc3Qobm9kZS52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGhhc1RyYWlsaW5nTmV3bGluZSA/IG5vZGUudmFsdWUucmVwbGFjZSh0cmFpbGluZ05ld2xpbmVSZWdleCwgXCJcIikgOiBub2RlLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5yZXBsYWNlVGV4dEVuZE9mTGluZSh2YWx1ZSksIGhhc1RyYWlsaW5nTmV3bGluZSA/IGhhcmRsaW5lIDogXCJcIl07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHByaW50ZWQgPSBjbGVhbkRvYyhbcHJpbnRPcGVuaW5nVGFnUHJlZml4KG5vZGUsIG9wdGlvbnMpLCAuLi5nZXRUZXh0VmFsdWVQYXJ0cyhub2RlKSwgcHJpbnRDbG9zaW5nVGFnU3VmZml4KG5vZGUsIG9wdGlvbnMpXSk7XG4gICAgICAgICAgaWYgKGlzQ29uY2F0KHByaW50ZWQpIHx8IHByaW50ZWQudHlwZSA9PT0gXCJmaWxsXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxsKGdldERvY1BhcnRzKHByaW50ZWQpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByaW50ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImRvY1R5cGVcIjpcbiAgICAgICAgICByZXR1cm4gW2dyb3VwKFtwcmludE9wZW5pbmdUYWdTdGFydChub2RlLCBvcHRpb25zKSwgXCIgXCIsIG5vZGUudmFsdWUucmVwbGFjZSgvXmh0bWxcXGIvaSwgXCJodG1sXCIpLnJlcGxhY2UoL1xccysvZywgXCIgXCIpXSksIHByaW50Q2xvc2luZ1RhZ0VuZChub2RlLCBvcHRpb25zKV07XG4gICAgICAgIGNhc2UgXCJjb21tZW50XCI6IHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50T3BlbmluZ1RhZ1ByZWZpeChub2RlLCBvcHRpb25zKSwgLi4ucmVwbGFjZVRleHRFbmRPZkxpbmUob3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2UobG9jU3RhcnQobm9kZSksIGxvY0VuZChub2RlKSksIGxpdGVyYWxsaW5lKSwgcHJpbnRDbG9zaW5nVGFnU3VmZml4KG5vZGUsIG9wdGlvbnMpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiYXR0cmlidXRlXCI6IHtcbiAgICAgICAgICBpZiAobm9kZS52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUucmF3TmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB1bmVzY2FwZVF1b3RlRW50aXRpZXMobm9kZS52YWx1ZSk7XG4gICAgICAgICAgY29uc3Qgc2luZ2xlUXVvdGVDb3VudCA9IGNvdW50Q2hhcnModmFsdWUsIFwiJ1wiKTtcbiAgICAgICAgICBjb25zdCBkb3VibGVRdW90ZUNvdW50ID0gY291bnRDaGFycyh2YWx1ZSwgJ1wiJyk7XG4gICAgICAgICAgY29uc3QgcXVvdGUgPSBzaW5nbGVRdW90ZUNvdW50IDwgZG91YmxlUXVvdGVDb3VudCA/IFwiJ1wiIDogJ1wiJztcbiAgICAgICAgICByZXR1cm4gW25vZGUucmF3TmFtZSwgXCI9XCIsIHF1b3RlLCAuLi5yZXBsYWNlVGV4dEVuZE9mTGluZShxdW90ZSA9PT0gJ1wiJyA/IHZhbHVlLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpIDogdmFsdWUucmVwbGFjZSgvJy9nLCBcIiZhcG9zO1wiKSksIHF1b3RlXTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBub2RlIHR5cGUgJHtub2RlLnR5cGV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIHByZXByb2Nlc3MsXG4gICAgICBwcmludDogZ2VuZXJpY1ByaW50LFxuICAgICAgaW5zZXJ0UHJhZ21hLFxuICAgICAgbWFzc2FnZUFzdE5vZGU6IGNsZWFuLFxuICAgICAgZW1iZWRcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX29wdGlvbnM2ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1odG1sL29wdGlvbnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBjb21tb25PcHRpb25zID0gcmVxdWlyZV9jb21tb25fb3B0aW9ucygpO1xuICAgIHZhciBDQVRFR09SWV9IVE1MID0gXCJIVE1MXCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgYnJhY2tldFNhbWVMaW5lOiBjb21tb25PcHRpb25zLmJyYWNrZXRTYW1lTGluZSxcbiAgICAgIGh0bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHk6IHtcbiAgICAgICAgc2luY2U6IFwiMS4xNS4wXCIsXG4gICAgICAgIGNhdGVnb3J5OiBDQVRFR09SWV9IVE1MLFxuICAgICAgICB0eXBlOiBcImNob2ljZVwiLFxuICAgICAgICBkZWZhdWx0OiBcImNzc1wiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIb3cgdG8gaGFuZGxlIHdoaXRlc3BhY2VzIGluIEhUTUwuXCIsXG4gICAgICAgIGNob2ljZXM6IFt7XG4gICAgICAgICAgdmFsdWU6IFwiY3NzXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiUmVzcGVjdCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBDU1MgZGlzcGxheSBwcm9wZXJ0eS5cIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsdWU6IFwic3RyaWN0XCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiV2hpdGVzcGFjZXMgYXJlIGNvbnNpZGVyZWQgc2Vuc2l0aXZlLlwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJpZ25vcmVcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXaGl0ZXNwYWNlcyBhcmUgY29uc2lkZXJlZCBpbnNlbnNpdGl2ZS5cIlxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgIHNpbmdsZUF0dHJpYnV0ZVBlckxpbmU6IGNvbW1vbk9wdGlvbnMuc2luZ2xlQXR0cmlidXRlUGVyTGluZSxcbiAgICAgIHZ1ZUluZGVudFNjcmlwdEFuZFN0eWxlOiB7XG4gICAgICAgIHNpbmNlOiBcIjEuMTkuMFwiLFxuICAgICAgICBjYXRlZ29yeTogQ0FURUdPUllfSFRNTCxcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJbmRlbnQgc2NyaXB0IGFuZCBzdHlsZSB0YWdzIGluIFZ1ZSBmaWxlcy5cIlxuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcGFyc2VyczYgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLWh0bWwvcGFyc2Vycy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgZ2V0IGh0bWwoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItaHRtbC5qc1wiKS5wYXJzZXJzLmh0bWw7XG4gICAgICB9LFxuICAgICAgZ2V0IHZ1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhcnNlci1odG1sLmpzXCIpLnBhcnNlcnMudnVlO1xuICAgICAgfSxcbiAgICAgIGdldCBhbmd1bGFyKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLWh0bWwuanNcIikucGFyc2Vycy5hbmd1bGFyO1xuICAgICAgfSxcbiAgICAgIGdldCBsd2MoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYXJzZXItaHRtbC5qc1wiKS5wYXJzZXJzLmx3YztcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX0hUTUwgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL0hUTUwuanNvblwiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbmFtZTogXCJIVE1MXCIsXG4gICAgICB0eXBlOiBcIm1hcmt1cFwiLFxuICAgICAgdG1TY29wZTogXCJ0ZXh0Lmh0bWwuYmFzaWNcIixcbiAgICAgIGFjZU1vZGU6IFwiaHRtbFwiLFxuICAgICAgY29kZW1pcnJvck1vZGU6IFwiaHRtbG1peGVkXCIsXG4gICAgICBjb2RlbWlycm9yTWltZVR5cGU6IFwidGV4dC9odG1sXCIsXG4gICAgICBjb2xvcjogXCIjZTM0YzI2XCIsXG4gICAgICBhbGlhc2VzOiBbXCJ4aHRtbFwiXSxcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5odG1sXCIsIFwiLmh0YVwiLCBcIi5odG1cIiwgXCIuaHRtbC5obFwiLCBcIi5pbmNcIiwgXCIueGh0XCIsIFwiLnhodG1sXCJdLFxuICAgICAgbGFuZ3VhZ2VJZDogMTQ2XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9WdWUgPSBfX2NvbW1vbkpTMih7XG4gIFwibm9kZV9tb2R1bGVzL2xpbmd1aXN0LWxhbmd1YWdlcy9kYXRhL1Z1ZS5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBuYW1lOiBcIlZ1ZVwiLFxuICAgICAgdHlwZTogXCJtYXJrdXBcIixcbiAgICAgIGNvbG9yOiBcIiM0MWI4ODNcIixcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi52dWVcIl0sXG4gICAgICB0bVNjb3BlOiBcInRleHQuaHRtbC52dWVcIixcbiAgICAgIGFjZU1vZGU6IFwiaHRtbFwiLFxuICAgICAgbGFuZ3VhZ2VJZDogMzkxXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sYW5ndWFnZV9odG1sID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS1odG1sL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgY3JlYXRlTGFuZ3VhZ2UgPSByZXF1aXJlX2NyZWF0ZV9sYW5ndWFnZSgpO1xuICAgIHZhciBwcmludGVyID0gcmVxdWlyZV9wcmludGVyX2h0bWwoKTtcbiAgICB2YXIgb3B0aW9ucyA9IHJlcXVpcmVfb3B0aW9uczYoKTtcbiAgICB2YXIgcGFyc2VycyA9IHJlcXVpcmVfcGFyc2VyczYoKTtcbiAgICB2YXIgbGFuZ3VhZ2VzID0gW2NyZWF0ZUxhbmd1YWdlKHJlcXVpcmVfSFRNTCgpLCAoKSA9PiAoe1xuICAgICAgbmFtZTogXCJBbmd1bGFyXCIsXG4gICAgICBzaW5jZTogXCIxLjE1LjBcIixcbiAgICAgIHBhcnNlcnM6IFtcImFuZ3VsYXJcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wiaHRtbFwiXSxcbiAgICAgIGV4dGVuc2lvbnM6IFtcIi5jb21wb25lbnQuaHRtbFwiXSxcbiAgICAgIGZpbGVuYW1lczogW11cbiAgICB9KSksIGNyZWF0ZUxhbmd1YWdlKHJlcXVpcmVfSFRNTCgpLCAoZGF0YSkgPT4gKHtcbiAgICAgIHNpbmNlOiBcIjEuMTUuMFwiLFxuICAgICAgcGFyc2VyczogW1wiaHRtbFwiXSxcbiAgICAgIHZzY29kZUxhbmd1YWdlSWRzOiBbXCJodG1sXCJdLFxuICAgICAgZXh0ZW5zaW9uczogWy4uLmRhdGEuZXh0ZW5zaW9ucywgXCIubWptbFwiXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9IVE1MKCksICgpID0+ICh7XG4gICAgICBuYW1lOiBcIkxpZ2h0bmluZyBXZWIgQ29tcG9uZW50c1wiLFxuICAgICAgc2luY2U6IFwiMS4xNy4wXCIsXG4gICAgICBwYXJzZXJzOiBbXCJsd2NcIl0sXG4gICAgICB2c2NvZGVMYW5ndWFnZUlkczogW1wiaHRtbFwiXSxcbiAgICAgIGV4dGVuc2lvbnM6IFtdLFxuICAgICAgZmlsZW5hbWVzOiBbXVxuICAgIH0pKSwgY3JlYXRlTGFuZ3VhZ2UocmVxdWlyZV9WdWUoKSwgKCkgPT4gKHtcbiAgICAgIHNpbmNlOiBcIjEuMTAuMFwiLFxuICAgICAgcGFyc2VyczogW1widnVlXCJdLFxuICAgICAgdnNjb2RlTGFuZ3VhZ2VJZHM6IFtcInZ1ZVwiXVxuICAgIH0pKV07XG4gICAgdmFyIHByaW50ZXJzID0ge1xuICAgICAgaHRtbDogcHJpbnRlclxuICAgIH07XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgcHJpbnRlcnMsXG4gICAgICBvcHRpb25zLFxuICAgICAgcGFyc2Vyc1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJhZ21hNiA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UteWFtbC9wcmFnbWEuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIGlzUHJhZ21hKHRleHQpIHtcbiAgICAgIHJldHVybiAvXlxccypAKD86cHJldHRpZXJ8Zm9ybWF0KVxccyokLy50ZXN0KHRleHQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNQcmFnbWEodGV4dCkge1xuICAgICAgcmV0dXJuIC9eXFxzKiNbXlxcU1xcbl0qQCg/OnByZXR0aWVyfGZvcm1hdClcXHMqPyg/OlxcbnwkKS8udGVzdCh0ZXh0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zZXJ0UHJhZ21hKHRleHQpIHtcbiAgICAgIHJldHVybiBgIyBAZm9ybWF0XG5cbiR7dGV4dH1gO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBpc1ByYWdtYSxcbiAgICAgIGhhc1ByYWdtYSxcbiAgICAgIGluc2VydFByYWdtYVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfbG9jNyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UteWFtbC9sb2MuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIGxvY1N0YXJ0KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9jRW5kKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGxvY1N0YXJ0LFxuICAgICAgbG9jRW5kXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9lbWJlZDUgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLXlhbWwvZW1iZWQuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIGZ1bmN0aW9uIGVtYmVkKHBhdGgsIHByaW50LCB0ZXh0VG9Eb2MsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBpZiAobm9kZS50eXBlID09PSBcInJvb3RcIiAmJiBvcHRpb25zLmZpbGVwYXRoICYmIC8oPzpbL1xcXFxdfF4pXFwuKD86cHJldHRpZXJ8c3R5bGVsaW50KXJjJC8udGVzdChvcHRpb25zLmZpbGVwYXRoKSkge1xuICAgICAgICByZXR1cm4gdGV4dFRvRG9jKG9wdGlvbnMub3JpZ2luYWxUZXh0LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICAgIHBhcnNlcjogXCJqc29uXCJcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBlbWJlZDtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV91dGlsczEyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS15YW1sL3V0aWxzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgZ2V0TGFzdCxcbiAgICAgIGlzTm9uRW1wdHlBcnJheVxuICAgIH0gPSByZXF1aXJlX3V0aWwoKTtcbiAgICBmdW5jdGlvbiBnZXRBbmNlc3RvckNvdW50KHBhdGgsIGZpbHRlcikge1xuICAgICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgICAgY29uc3QgcGF0aFN0YWNrTGVuZ3RoID0gcGF0aC5zdGFjay5sZW5ndGggLSAxO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoU3RhY2tMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHBhdGguc3RhY2tbaV07XG4gICAgICAgIGlmIChpc05vZGUodmFsdWUpICYmIGZpbHRlcih2YWx1ZSkpIHtcbiAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjb3VudGVyO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc05vZGUodmFsdWUsIHR5cGVzKSB7XG4gICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLnR5cGUgPT09IFwic3RyaW5nXCIgJiYgKCF0eXBlcyB8fCB0eXBlcy5pbmNsdWRlcyh2YWx1ZS50eXBlKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG1hcE5vZGUobm9kZSwgY2FsbGJhY2ssIHBhcmVudCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKFwiY2hpbGRyZW5cIiBpbiBub2RlID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBub2RlKSwge30sIHtcbiAgICAgICAgY2hpbGRyZW46IG5vZGUuY2hpbGRyZW4ubWFwKChjaGlsZE5vZGUpID0+IG1hcE5vZGUoY2hpbGROb2RlLCBjYWxsYmFjaywgbm9kZSkpXG4gICAgICB9KSA6IG5vZGUsIHBhcmVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlZmluZVNob3J0Y3V0KHgsIGtleSwgZ2V0dGVyKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwga2V5LCB7XG4gICAgICAgIGdldDogZ2V0dGVyLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzTmV4dExpbmVFbXB0eShub2RlLCB0ZXh0KSB7XG4gICAgICBsZXQgbmV3bGluZUNvdW50ID0gMDtcbiAgICAgIGNvbnN0IHRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSBub2RlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSAxOyBpIDwgdGV4dExlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoYXIgPSB0ZXh0W2ldO1xuICAgICAgICBpZiAoY2hhciA9PT0gXCJcXG5cIikge1xuICAgICAgICAgIG5ld2xpbmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdsaW5lQ291bnQgPT09IDEgJiYgL1xcUy8udGVzdChjaGFyKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3bGluZUNvdW50ID09PSAyKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNMYXN0RGVzY2VuZGFudE5vZGUocGF0aCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJ0YWdcIjpcbiAgICAgICAgY2FzZSBcImFuY2hvclwiOlxuICAgICAgICBjYXNlIFwiY29tbWVudFwiOlxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhdGhTdGFja0xlbmd0aCA9IHBhdGguc3RhY2subGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwYXRoU3RhY2tMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gcGF0aC5zdGFja1tpXTtcbiAgICAgICAgY29uc3QgcGFyZW50SXRlbSA9IHBhdGguc3RhY2tbaSAtIDFdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJlbnRJdGVtKSAmJiB0eXBlb2YgaXRlbSA9PT0gXCJudW1iZXJcIiAmJiBpdGVtICE9PSBwYXJlbnRJdGVtLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRMYXN0RGVzY2VuZGFudE5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIGlzTm9uRW1wdHlBcnJheShub2RlLmNoaWxkcmVuKSA/IGdldExhc3REZXNjZW5kYW50Tm9kZShnZXRMYXN0KG5vZGUuY2hpbGRyZW4pKSA6IG5vZGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzUHJldHRpZXJJZ25vcmUoY29tbWVudCkge1xuICAgICAgcmV0dXJuIGNvbW1lbnQudmFsdWUudHJpbSgpID09PSBcInByZXR0aWVyLWlnbm9yZVwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNQcmV0dGllcklnbm9yZShwYXRoKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJkb2N1bWVudEJvZHlcIikge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IHBhdGguZ2V0UGFyZW50Tm9kZSgpO1xuICAgICAgICByZXR1cm4gaGFzRW5kQ29tbWVudHMoZG9jdW1lbnQuaGVhZCkgJiYgaXNQcmV0dGllcklnbm9yZShnZXRMYXN0KGRvY3VtZW50LmhlYWQuZW5kQ29tbWVudHMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNMZWFkaW5nQ29tbWVudHMobm9kZSkgJiYgaXNQcmV0dGllcklnbm9yZShnZXRMYXN0KG5vZGUubGVhZGluZ0NvbW1lbnRzKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzRW1wdHlOb2RlKG5vZGUpIHtcbiAgICAgIHJldHVybiAhaXNOb25FbXB0eUFycmF5KG5vZGUuY2hpbGRyZW4pICYmICFoYXNDb21tZW50cyhub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzQ29tbWVudHMobm9kZSkge1xuICAgICAgcmV0dXJuIGhhc0xlYWRpbmdDb21tZW50cyhub2RlKSB8fCBoYXNNaWRkbGVDb21tZW50cyhub2RlKSB8fCBoYXNJbmRpY2F0b3JDb21tZW50KG5vZGUpIHx8IGhhc1RyYWlsaW5nQ29tbWVudChub2RlKSB8fCBoYXNFbmRDb21tZW50cyhub2RlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzTGVhZGluZ0NvbW1lbnRzKG5vZGUpIHtcbiAgICAgIHJldHVybiBpc05vbkVtcHR5QXJyYXkobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLmxlYWRpbmdDb21tZW50cyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc01pZGRsZUNvbW1lbnRzKG5vZGUpIHtcbiAgICAgIHJldHVybiBpc05vbkVtcHR5QXJyYXkobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLm1pZGRsZUNvbW1lbnRzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzSW5kaWNhdG9yQ29tbWVudChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLmluZGljYXRvckNvbW1lbnQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1RyYWlsaW5nQ29tbWVudChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLnRyYWlsaW5nQ29tbWVudDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzRW5kQ29tbWVudHMobm9kZSkge1xuICAgICAgcmV0dXJuIGlzTm9uRW1wdHlBcnJheShub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUuZW5kQ29tbWVudHMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzcGxpdFdpdGhTaW5nbGVTcGFjZSh0ZXh0KSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgbGV0IGxhc3RQYXJ0O1xuICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHRleHQuc3BsaXQoLyggKykvKSkge1xuICAgICAgICBpZiAocGFydCAhPT0gXCIgXCIpIHtcbiAgICAgICAgICBpZiAobGFzdFBhcnQgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHBhcnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKChwYXJ0cy5wb3AoKSB8fCBcIlwiKSArIHBhcnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChsYXN0UGFydCA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcGFydHMudW5zaGlmdChcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0UGFydCA9IHBhcnQ7XG4gICAgICB9XG4gICAgICBpZiAobGFzdFBhcnQgPT09IFwiIFwiKSB7XG4gICAgICAgIHBhcnRzLnB1c2goKHBhcnRzLnBvcCgpIHx8IFwiXCIpICsgXCIgXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcnRzWzBdID09PSBcIlwiKSB7XG4gICAgICAgIHBhcnRzLnNoaWZ0KCk7XG4gICAgICAgIHBhcnRzLnVuc2hpZnQoXCIgXCIgKyAocGFydHMuc2hpZnQoKSB8fCBcIlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEZsb3dTY2FsYXJMaW5lQ29udGVudHMobm9kZVR5cGUsIGNvbnRlbnQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJhd0xpbmVDb250ZW50cyA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIikubWFwKChsaW5lQ29udGVudCwgaW5kZXgsIGxpbmVDb250ZW50cykgPT4gaW5kZXggPT09IDAgJiYgaW5kZXggPT09IGxpbmVDb250ZW50cy5sZW5ndGggLSAxID8gbGluZUNvbnRlbnQgOiBpbmRleCAhPT0gMCAmJiBpbmRleCAhPT0gbGluZUNvbnRlbnRzLmxlbmd0aCAtIDEgPyBsaW5lQ29udGVudC50cmltKCkgOiBpbmRleCA9PT0gMCA/IGxpbmVDb250ZW50LnRyaW1FbmQoKSA6IGxpbmVDb250ZW50LnRyaW1TdGFydCgpKTtcbiAgICAgIGlmIChvcHRpb25zLnByb3NlV3JhcCA9PT0gXCJwcmVzZXJ2ZVwiKSB7XG4gICAgICAgIHJldHVybiByYXdMaW5lQ29udGVudHMubWFwKChsaW5lQ29udGVudCkgPT4gbGluZUNvbnRlbnQubGVuZ3RoID09PSAwID8gW10gOiBbbGluZUNvbnRlbnRdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByYXdMaW5lQ29udGVudHMubWFwKChsaW5lQ29udGVudCkgPT4gbGluZUNvbnRlbnQubGVuZ3RoID09PSAwID8gW10gOiBzcGxpdFdpdGhTaW5nbGVTcGFjZShsaW5lQ29udGVudCkpLnJlZHVjZSgocmVkdWNlZCwgbGluZUNvbnRlbnRXb3JkcywgaW5kZXgpID0+IGluZGV4ICE9PSAwICYmIHJhd0xpbmVDb250ZW50c1tpbmRleCAtIDFdLmxlbmd0aCA+IDAgJiYgbGluZUNvbnRlbnRXb3Jkcy5sZW5ndGggPiAwICYmICEobm9kZVR5cGUgPT09IFwicXVvdGVEb3VibGVcIiAmJiBnZXRMYXN0KGdldExhc3QocmVkdWNlZCkpLmVuZHNXaXRoKFwiXFxcXFwiKSkgPyBbLi4ucmVkdWNlZC5zbGljZSgwLCAtMSksIFsuLi5nZXRMYXN0KHJlZHVjZWQpLCAuLi5saW5lQ29udGVudFdvcmRzXV0gOiBbLi4ucmVkdWNlZCwgbGluZUNvbnRlbnRXb3Jkc10sIFtdKS5tYXAoKGxpbmVDb250ZW50V29yZHMpID0+IG9wdGlvbnMucHJvc2VXcmFwID09PSBcIm5ldmVyXCIgPyBbbGluZUNvbnRlbnRXb3Jkcy5qb2luKFwiIFwiKV0gOiBsaW5lQ29udGVudFdvcmRzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0QmxvY2tWYWx1ZUxpbmVDb250ZW50cyhub2RlLCB7XG4gICAgICBwYXJlbnRJbmRlbnQsXG4gICAgICBpc0xhc3REZXNjZW5kYW50LFxuICAgICAgb3B0aW9uc1xuICAgIH0pIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBub2RlLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPT09IG5vZGUucG9zaXRpb24uZW5kLmxpbmUgPyBcIlwiIDogb3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2Uobm9kZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQsIG5vZGUucG9zaXRpb24uZW5kLm9mZnNldCkubWF0Y2goL15bXlxcbl0qXFxuKC4qKSQvcylbMV07XG4gICAgICBsZXQgbGVhZGluZ1NwYWNlQ291bnQ7XG4gICAgICBpZiAobm9kZS5pbmRlbnQgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGNvbnRlbnQubWF0Y2goL14oPzxsZWFkaW5nU3BhY2U+ICopW15cXG5cXHIgXS9tKTtcbiAgICAgICAgbGVhZGluZ1NwYWNlQ291bnQgPSBtYXRjaGVzID8gbWF0Y2hlcy5ncm91cHMubGVhZGluZ1NwYWNlLmxlbmd0aCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlYWRpbmdTcGFjZUNvdW50ID0gbm9kZS5pbmRlbnQgLSAxICsgcGFyZW50SW5kZW50O1xuICAgICAgfVxuICAgICAgY29uc3QgcmF3TGluZUNvbnRlbnRzID0gY29udGVudC5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmVDb250ZW50KSA9PiBsaW5lQ29udGVudC5zbGljZShsZWFkaW5nU3BhY2VDb3VudCkpO1xuICAgICAgaWYgKG9wdGlvbnMucHJvc2VXcmFwID09PSBcInByZXNlcnZlXCIgfHwgbm9kZS50eXBlID09PSBcImJsb2NrTGl0ZXJhbFwiKSB7XG4gICAgICAgIHJldHVybiByZW1vdmVVbm5lY2Vzc2FyeVRyYWlsaW5nTmV3bGluZXMocmF3TGluZUNvbnRlbnRzLm1hcCgobGluZUNvbnRlbnQpID0+IGxpbmVDb250ZW50Lmxlbmd0aCA9PT0gMCA/IFtdIDogW2xpbmVDb250ZW50XSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlbW92ZVVubmVjZXNzYXJ5VHJhaWxpbmdOZXdsaW5lcyhyYXdMaW5lQ29udGVudHMubWFwKChsaW5lQ29udGVudCkgPT4gbGluZUNvbnRlbnQubGVuZ3RoID09PSAwID8gW10gOiBzcGxpdFdpdGhTaW5nbGVTcGFjZShsaW5lQ29udGVudCkpLnJlZHVjZSgocmVkdWNlZCwgbGluZUNvbnRlbnRXb3JkcywgaW5kZXgpID0+IGluZGV4ICE9PSAwICYmIHJhd0xpbmVDb250ZW50c1tpbmRleCAtIDFdLmxlbmd0aCA+IDAgJiYgbGluZUNvbnRlbnRXb3Jkcy5sZW5ndGggPiAwICYmICEvXlxccy8udGVzdChsaW5lQ29udGVudFdvcmRzWzBdKSAmJiAhL15cXHN8XFxzJC8udGVzdChnZXRMYXN0KHJlZHVjZWQpKSA/IFsuLi5yZWR1Y2VkLnNsaWNlKDAsIC0xKSwgWy4uLmdldExhc3QocmVkdWNlZCksIC4uLmxpbmVDb250ZW50V29yZHNdXSA6IFsuLi5yZWR1Y2VkLCBsaW5lQ29udGVudFdvcmRzXSwgW10pLm1hcCgobGluZUNvbnRlbnRXb3JkcykgPT4gbGluZUNvbnRlbnRXb3Jkcy5yZWR1Y2UoKHJlZHVjZWQsIHdvcmQpID0+IHJlZHVjZWQubGVuZ3RoID4gMCAmJiAvXFxzJC8udGVzdChnZXRMYXN0KHJlZHVjZWQpKSA/IFsuLi5yZWR1Y2VkLnNsaWNlKDAsIC0xKSwgZ2V0TGFzdChyZWR1Y2VkKSArIFwiIFwiICsgd29yZF0gOiBbLi4ucmVkdWNlZCwgd29yZF0sIFtdKSkubWFwKChsaW5lQ29udGVudFdvcmRzKSA9PiBvcHRpb25zLnByb3NlV3JhcCA9PT0gXCJuZXZlclwiID8gW2xpbmVDb250ZW50V29yZHMuam9pbihcIiBcIildIDogbGluZUNvbnRlbnRXb3JkcykpO1xuICAgICAgZnVuY3Rpb24gcmVtb3ZlVW5uZWNlc3NhcnlUcmFpbGluZ05ld2xpbmVzKGxpbmVDb250ZW50cykge1xuICAgICAgICBpZiAobm9kZS5jaG9tcGluZyA9PT0gXCJrZWVwXCIpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0TGFzdChsaW5lQ29udGVudHMpLmxlbmd0aCA9PT0gMCA/IGxpbmVDb250ZW50cy5zbGljZSgwLCAtMSkgOiBsaW5lQ29udGVudHM7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRyYWlsaW5nTmV3bGluZUNvdW50ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGxpbmVDb250ZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaW5lQ29udGVudHNbaV0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0cmFpbGluZ05ld2xpbmVDb3VudCsrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYWlsaW5nTmV3bGluZUNvdW50ID09PSAwID8gbGluZUNvbnRlbnRzIDogdHJhaWxpbmdOZXdsaW5lQ291bnQgPj0gMiAmJiAhaXNMYXN0RGVzY2VuZGFudCA/IGxpbmVDb250ZW50cy5zbGljZSgwLCAtKHRyYWlsaW5nTmV3bGluZUNvdW50IC0gMSkpIDogbGluZUNvbnRlbnRzLnNsaWNlKDAsIC10cmFpbGluZ05ld2xpbmVDb3VudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSW5saW5lTm9kZShub2RlKSB7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwicGxhaW5cIjpcbiAgICAgICAgY2FzZSBcInF1b3RlRG91YmxlXCI6XG4gICAgICAgIGNhc2UgXCJxdW90ZVNpbmdsZVwiOlxuICAgICAgICBjYXNlIFwiYWxpYXNcIjpcbiAgICAgICAgY2FzZSBcImZsb3dNYXBwaW5nXCI6XG4gICAgICAgIGNhc2UgXCJmbG93U2VxdWVuY2VcIjpcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGdldExhc3QsXG4gICAgICBnZXRBbmNlc3RvckNvdW50LFxuICAgICAgaXNOb2RlLFxuICAgICAgaXNFbXB0eU5vZGUsXG4gICAgICBpc0lubGluZU5vZGUsXG4gICAgICBtYXBOb2RlLFxuICAgICAgZGVmaW5lU2hvcnRjdXQsXG4gICAgICBpc05leHRMaW5lRW1wdHksXG4gICAgICBpc0xhc3REZXNjZW5kYW50Tm9kZSxcbiAgICAgIGdldEJsb2NrVmFsdWVMaW5lQ29udGVudHMsXG4gICAgICBnZXRGbG93U2NhbGFyTGluZUNvbnRlbnRzLFxuICAgICAgZ2V0TGFzdERlc2NlbmRhbnROb2RlLFxuICAgICAgaGFzUHJldHRpZXJJZ25vcmUsXG4gICAgICBoYXNMZWFkaW5nQ29tbWVudHMsXG4gICAgICBoYXNNaWRkbGVDb21tZW50cyxcbiAgICAgIGhhc0luZGljYXRvckNvbW1lbnQsXG4gICAgICBoYXNUcmFpbGluZ0NvbW1lbnQsXG4gICAgICBoYXNFbmRDb21tZW50c1xuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfcHJpbnRfcHJlcHJvY2VzczQgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLXlhbWwvcHJpbnQtcHJlcHJvY2Vzcy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGRlZmluZVNob3J0Y3V0LFxuICAgICAgbWFwTm9kZVxuICAgIH0gPSByZXF1aXJlX3V0aWxzMTIoKTtcbiAgICBmdW5jdGlvbiBwcmVwcm9jZXNzKGFzdCkge1xuICAgICAgcmV0dXJuIG1hcE5vZGUoYXN0LCBkZWZpbmVTaG9ydGN1dHMpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZpbmVTaG9ydGN1dHMobm9kZSkge1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImRvY3VtZW50XCI6XG4gICAgICAgICAgZGVmaW5lU2hvcnRjdXQobm9kZSwgXCJoZWFkXCIsICgpID0+IG5vZGUuY2hpbGRyZW5bMF0pO1xuICAgICAgICAgIGRlZmluZVNob3J0Y3V0KG5vZGUsIFwiYm9keVwiLCAoKSA9PiBub2RlLmNoaWxkcmVuWzFdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRvY3VtZW50Qm9keVwiOlxuICAgICAgICBjYXNlIFwic2VxdWVuY2VJdGVtXCI6XG4gICAgICAgIGNhc2UgXCJmbG93U2VxdWVuY2VJdGVtXCI6XG4gICAgICAgIGNhc2UgXCJtYXBwaW5nS2V5XCI6XG4gICAgICAgIGNhc2UgXCJtYXBwaW5nVmFsdWVcIjpcbiAgICAgICAgICBkZWZpbmVTaG9ydGN1dChub2RlLCBcImNvbnRlbnRcIiwgKCkgPT4gbm9kZS5jaGlsZHJlblswXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJtYXBwaW5nSXRlbVwiOlxuICAgICAgICBjYXNlIFwiZmxvd01hcHBpbmdJdGVtXCI6XG4gICAgICAgICAgZGVmaW5lU2hvcnRjdXQobm9kZSwgXCJrZXlcIiwgKCkgPT4gbm9kZS5jaGlsZHJlblswXSk7XG4gICAgICAgICAgZGVmaW5lU2hvcnRjdXQobm9kZSwgXCJ2YWx1ZVwiLCAoKSA9PiBub2RlLmNoaWxkcmVuWzFdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmVwcm9jZXNzO1xuICB9XG59KTtcbnZhciByZXF1aXJlX21pc2MyID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS15YW1sL3ByaW50L21pc2MuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBzb2Z0bGluZSxcbiAgICAgICAgYWxpZ25cbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBoYXNFbmRDb21tZW50cyxcbiAgICAgIGlzTmV4dExpbmVFbXB0eSxcbiAgICAgIGlzTm9kZVxuICAgIH0gPSByZXF1aXJlX3V0aWxzMTIoKTtcbiAgICB2YXIgcHJpbnRlZEVtcHR5TGluZUNhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gICAgZnVuY3Rpb24gcHJpbnROZXh0RW1wdHlMaW5lKHBhdGgsIG9yaWdpbmFsVGV4dCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHJvb3QgPSBwYXRoLnN0YWNrWzBdO1xuICAgICAgbGV0IGlzTmV4dEVtcHR5TGluZVByaW50ZWRTZXQ7XG4gICAgICBpZiAocHJpbnRlZEVtcHR5TGluZUNhY2hlLmhhcyhyb290KSkge1xuICAgICAgICBpc05leHRFbXB0eUxpbmVQcmludGVkU2V0ID0gcHJpbnRlZEVtcHR5TGluZUNhY2hlLmdldChyb290KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlzTmV4dEVtcHR5TGluZVByaW50ZWRTZXQgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgICAgICBwcmludGVkRW1wdHlMaW5lQ2FjaGUuc2V0KHJvb3QsIGlzTmV4dEVtcHR5TGluZVByaW50ZWRTZXQpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc05leHRFbXB0eUxpbmVQcmludGVkU2V0Lmhhcyhub2RlLnBvc2l0aW9uLmVuZC5saW5lKSkge1xuICAgICAgICBpc05leHRFbXB0eUxpbmVQcmludGVkU2V0LmFkZChub2RlLnBvc2l0aW9uLmVuZC5saW5lKTtcbiAgICAgICAgaWYgKGlzTmV4dExpbmVFbXB0eShub2RlLCBvcmlnaW5hbFRleHQpICYmICFzaG91bGRQcmludEVuZENvbW1lbnRzKHBhdGguZ2V0UGFyZW50Tm9kZSgpKSkge1xuICAgICAgICAgIHJldHVybiBzb2Z0bGluZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZFByaW50RW5kQ29tbWVudHMobm9kZSkge1xuICAgICAgcmV0dXJuIGhhc0VuZENvbW1lbnRzKG5vZGUpICYmICFpc05vZGUobm9kZSwgW1wiZG9jdW1lbnRIZWFkXCIsIFwiZG9jdW1lbnRCb2R5XCIsIFwiZmxvd01hcHBpbmdcIiwgXCJmbG93U2VxdWVuY2VcIl0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhbGlnbldpdGhTcGFjZXMod2lkdGgsIGRvYzIpIHtcbiAgICAgIHJldHVybiBhbGlnbihcIiBcIi5yZXBlYXQod2lkdGgpLCBkb2MyKTtcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgYWxpZ25XaXRoU3BhY2VzLFxuICAgICAgc2hvdWxkUHJpbnRFbmRDb21tZW50cyxcbiAgICAgIHByaW50TmV4dEVtcHR5TGluZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfZmxvd19tYXBwaW5nX3NlcXVlbmNlID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS15YW1sL3ByaW50L2Zsb3ctbWFwcGluZy1zZXF1ZW5jZS5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHtcbiAgICAgIGJ1aWxkZXJzOiB7XG4gICAgICAgIGlmQnJlYWssXG4gICAgICAgIGxpbmUsXG4gICAgICAgIHNvZnRsaW5lLFxuICAgICAgICBoYXJkbGluZSxcbiAgICAgICAgam9pblxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGlzRW1wdHlOb2RlLFxuICAgICAgZ2V0TGFzdCxcbiAgICAgIGhhc0VuZENvbW1lbnRzXG4gICAgfSA9IHJlcXVpcmVfdXRpbHMxMigpO1xuICAgIHZhciB7XG4gICAgICBwcmludE5leHRFbXB0eUxpbmUsXG4gICAgICBhbGlnbldpdGhTcGFjZXNcbiAgICB9ID0gcmVxdWlyZV9taXNjMigpO1xuICAgIGZ1bmN0aW9uIHByaW50Rmxvd01hcHBpbmcocGF0aCwgcHJpbnQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBpc01hcHBpbmcgPSBub2RlLnR5cGUgPT09IFwiZmxvd01hcHBpbmdcIjtcbiAgICAgIGNvbnN0IG9wZW5NYXJrZXIgPSBpc01hcHBpbmcgPyBcIntcIiA6IFwiW1wiO1xuICAgICAgY29uc3QgY2xvc2VNYXJrZXIgPSBpc01hcHBpbmcgPyBcIn1cIiA6IFwiXVwiO1xuICAgICAgbGV0IGJyYWNrZXRTcGFjaW5nID0gc29mdGxpbmU7XG4gICAgICBpZiAoaXNNYXBwaW5nICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBvcHRpb25zLmJyYWNrZXRTcGFjaW5nKSB7XG4gICAgICAgIGJyYWNrZXRTcGFjaW5nID0gbGluZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhc3RJdGVtID0gZ2V0TGFzdChub2RlLmNoaWxkcmVuKTtcbiAgICAgIGNvbnN0IGlzTGFzdEl0ZW1FbXB0eU1hcHBpbmdJdGVtID0gbGFzdEl0ZW0gJiYgbGFzdEl0ZW0udHlwZSA9PT0gXCJmbG93TWFwcGluZ0l0ZW1cIiAmJiBpc0VtcHR5Tm9kZShsYXN0SXRlbS5rZXkpICYmIGlzRW1wdHlOb2RlKGxhc3RJdGVtLnZhbHVlKTtcbiAgICAgIHJldHVybiBbb3Blbk1hcmtlciwgYWxpZ25XaXRoU3BhY2VzKG9wdGlvbnMudGFiV2lkdGgsIFticmFja2V0U3BhY2luZywgcHJpbnRDaGlsZHJlbihwYXRoLCBwcmludCwgb3B0aW9ucyksIG9wdGlvbnMudHJhaWxpbmdDb21tYSA9PT0gXCJub25lXCIgPyBcIlwiIDogaWZCcmVhayhcIixcIiksIGhhc0VuZENvbW1lbnRzKG5vZGUpID8gW2hhcmRsaW5lLCBqb2luKGhhcmRsaW5lLCBwYXRoLm1hcChwcmludCwgXCJlbmRDb21tZW50c1wiKSldIDogXCJcIl0pLCBpc0xhc3RJdGVtRW1wdHlNYXBwaW5nSXRlbSA/IFwiXCIgOiBicmFja2V0U3BhY2luZywgY2xvc2VNYXJrZXJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENoaWxkcmVuKHBhdGgsIHByaW50LCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFydHMgPSBwYXRoLm1hcCgoY2hpbGRQYXRoLCBpbmRleCkgPT4gW3ByaW50KCksIGluZGV4ID09PSBub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDEgPyBcIlwiIDogW1wiLFwiLCBsaW5lLCBub2RlLmNoaWxkcmVuW2luZGV4XS5wb3NpdGlvbi5zdGFydC5saW5lICE9PSBub2RlLmNoaWxkcmVuW2luZGV4ICsgMV0ucG9zaXRpb24uc3RhcnQubGluZSA/IHByaW50TmV4dEVtcHR5TGluZShjaGlsZFBhdGgsIG9wdGlvbnMub3JpZ2luYWxUZXh0KSA6IFwiXCJdXSwgXCJjaGlsZHJlblwiKTtcbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJpbnRGbG93TWFwcGluZyxcbiAgICAgIHByaW50Rmxvd1NlcXVlbmNlOiBwcmludEZsb3dNYXBwaW5nXG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9tYXBwaW5nX2l0ZW0gPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLXlhbWwvcHJpbnQvbWFwcGluZy1pdGVtLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIge1xuICAgICAgYnVpbGRlcnM6IHtcbiAgICAgICAgY29uZGl0aW9uYWxHcm91cCxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBpZkJyZWFrLFxuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lXG4gICAgICB9XG4gICAgfSA9IHJlcXVpcmUoXCIuL2RvYy5qc1wiKTtcbiAgICB2YXIge1xuICAgICAgaGFzTGVhZGluZ0NvbW1lbnRzLFxuICAgICAgaGFzTWlkZGxlQ29tbWVudHMsXG4gICAgICBoYXNUcmFpbGluZ0NvbW1lbnQsXG4gICAgICBoYXNFbmRDb21tZW50cyxcbiAgICAgIGlzTm9kZSxcbiAgICAgIGlzRW1wdHlOb2RlLFxuICAgICAgaXNJbmxpbmVOb2RlXG4gICAgfSA9IHJlcXVpcmVfdXRpbHMxMigpO1xuICAgIHZhciB7XG4gICAgICBhbGlnbldpdGhTcGFjZXNcbiAgICB9ID0gcmVxdWlyZV9taXNjMigpO1xuICAgIGZ1bmN0aW9uIHByaW50TWFwcGluZ0l0ZW0obm9kZSwgcGFyZW50Tm9kZSwgcGF0aCwgcHJpbnQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAga2V5LFxuICAgICAgICB2YWx1ZVxuICAgICAgfSA9IG5vZGU7XG4gICAgICBjb25zdCBpc0VtcHR5TWFwcGluZ0tleSA9IGlzRW1wdHlOb2RlKGtleSk7XG4gICAgICBjb25zdCBpc0VtcHR5TWFwcGluZ1ZhbHVlID0gaXNFbXB0eU5vZGUodmFsdWUpO1xuICAgICAgaWYgKGlzRW1wdHlNYXBwaW5nS2V5ICYmIGlzRW1wdHlNYXBwaW5nVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFwiOiBcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByaW50ZWRLZXkgPSBwcmludChcImtleVwiKTtcbiAgICAgIGNvbnN0IHNwYWNlQmVmb3JlQ29sb24gPSBuZWVkc1NwYWNlSW5Gcm9udE9mTWFwcGluZ1ZhbHVlKG5vZGUpID8gXCIgXCIgOiBcIlwiO1xuICAgICAgaWYgKGlzRW1wdHlNYXBwaW5nVmFsdWUpIHtcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJmbG93TWFwcGluZ0l0ZW1cIiAmJiBwYXJlbnROb2RlLnR5cGUgPT09IFwiZmxvd01hcHBpbmdcIikge1xuICAgICAgICAgIHJldHVybiBwcmludGVkS2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IFwibWFwcGluZ0l0ZW1cIiAmJiBpc0Fic29sdXRlbHlQcmludGVkQXNTaW5nbGVMaW5lTm9kZShrZXkuY29udGVudCwgb3B0aW9ucykgJiYgIWhhc1RyYWlsaW5nQ29tbWVudChrZXkuY29udGVudCkgJiYgKCFwYXJlbnROb2RlLnRhZyB8fCBwYXJlbnROb2RlLnRhZy52YWx1ZSAhPT0gXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gW3ByaW50ZWRLZXksIHNwYWNlQmVmb3JlQ29sb24sIFwiOlwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wiPyBcIiwgYWxpZ25XaXRoU3BhY2VzKDIsIHByaW50ZWRLZXkpXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByaW50ZWRWYWx1ZSA9IHByaW50KFwidmFsdWVcIik7XG4gICAgICBpZiAoaXNFbXB0eU1hcHBpbmdLZXkpIHtcbiAgICAgICAgcmV0dXJuIFtcIjogXCIsIGFsaWduV2l0aFNwYWNlcygyLCBwcmludGVkVmFsdWUpXTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNMZWFkaW5nQ29tbWVudHModmFsdWUpIHx8ICFpc0lubGluZU5vZGUoa2V5LmNvbnRlbnQpKSB7XG4gICAgICAgIHJldHVybiBbXCI/IFwiLCBhbGlnbldpdGhTcGFjZXMoMiwgcHJpbnRlZEtleSksIGhhcmRsaW5lLCBqb2luKFwiXCIsIHBhdGgubWFwKHByaW50LCBcInZhbHVlXCIsIFwibGVhZGluZ0NvbW1lbnRzXCIpLm1hcCgoY29tbWVudCkgPT4gW2NvbW1lbnQsIGhhcmRsaW5lXSkpLCBcIjogXCIsIGFsaWduV2l0aFNwYWNlcygyLCBwcmludGVkVmFsdWUpXTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1NpbmdsZUxpbmVOb2RlKGtleS5jb250ZW50KSAmJiAhaGFzTGVhZGluZ0NvbW1lbnRzKGtleS5jb250ZW50KSAmJiAhaGFzTWlkZGxlQ29tbWVudHMoa2V5LmNvbnRlbnQpICYmICFoYXNUcmFpbGluZ0NvbW1lbnQoa2V5LmNvbnRlbnQpICYmICFoYXNFbmRDb21tZW50cyhrZXkpICYmICFoYXNMZWFkaW5nQ29tbWVudHModmFsdWUuY29udGVudCkgJiYgIWhhc01pZGRsZUNvbW1lbnRzKHZhbHVlLmNvbnRlbnQpICYmICFoYXNFbmRDb21tZW50cyh2YWx1ZSkgJiYgaXNBYnNvbHV0ZWx5UHJpbnRlZEFzU2luZ2xlTGluZU5vZGUodmFsdWUuY29udGVudCwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIFtwcmludGVkS2V5LCBzcGFjZUJlZm9yZUNvbG9uLCBcIjogXCIsIHByaW50ZWRWYWx1ZV07XG4gICAgICB9XG4gICAgICBjb25zdCBncm91cElkID0gU3ltYm9sKFwibWFwcGluZ0tleVwiKTtcbiAgICAgIGNvbnN0IGdyb3VwZWRLZXkgPSBncm91cChbaWZCcmVhayhcIj8gXCIpLCBncm91cChhbGlnbldpdGhTcGFjZXMoMiwgcHJpbnRlZEtleSksIHtcbiAgICAgICAgaWQ6IGdyb3VwSWRcbiAgICAgIH0pXSk7XG4gICAgICBjb25zdCBleHBsaWNpdE1hcHBpbmdWYWx1ZSA9IFtoYXJkbGluZSwgXCI6IFwiLCBhbGlnbldpdGhTcGFjZXMoMiwgcHJpbnRlZFZhbHVlKV07XG4gICAgICBjb25zdCBpbXBsaWNpdE1hcHBpbmdWYWx1ZVBhcnRzID0gW3NwYWNlQmVmb3JlQ29sb24sIFwiOlwiXTtcbiAgICAgIGlmIChoYXNMZWFkaW5nQ29tbWVudHModmFsdWUuY29udGVudCkgfHwgaGFzRW5kQ29tbWVudHModmFsdWUpICYmIHZhbHVlLmNvbnRlbnQgJiYgIWlzTm9kZSh2YWx1ZS5jb250ZW50LCBbXCJtYXBwaW5nXCIsIFwic2VxdWVuY2VcIl0pIHx8IHBhcmVudE5vZGUudHlwZSA9PT0gXCJtYXBwaW5nXCIgJiYgaGFzVHJhaWxpbmdDb21tZW50KGtleS5jb250ZW50KSAmJiBpc0lubGluZU5vZGUodmFsdWUuY29udGVudCkgfHwgaXNOb2RlKHZhbHVlLmNvbnRlbnQsIFtcIm1hcHBpbmdcIiwgXCJzZXF1ZW5jZVwiXSkgJiYgdmFsdWUuY29udGVudC50YWcgPT09IG51bGwgJiYgdmFsdWUuY29udGVudC5hbmNob3IgPT09IG51bGwpIHtcbiAgICAgICAgaW1wbGljaXRNYXBwaW5nVmFsdWVQYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuY29udGVudCkge1xuICAgICAgICBpbXBsaWNpdE1hcHBpbmdWYWx1ZVBhcnRzLnB1c2gobGluZSk7XG4gICAgICB9XG4gICAgICBpbXBsaWNpdE1hcHBpbmdWYWx1ZVBhcnRzLnB1c2gocHJpbnRlZFZhbHVlKTtcbiAgICAgIGNvbnN0IGltcGxpY2l0TWFwcGluZ1ZhbHVlID0gYWxpZ25XaXRoU3BhY2VzKG9wdGlvbnMudGFiV2lkdGgsIGltcGxpY2l0TWFwcGluZ1ZhbHVlUGFydHMpO1xuICAgICAgaWYgKGlzQWJzb2x1dGVseVByaW50ZWRBc1NpbmdsZUxpbmVOb2RlKGtleS5jb250ZW50LCBvcHRpb25zKSAmJiAhaGFzTGVhZGluZ0NvbW1lbnRzKGtleS5jb250ZW50KSAmJiAhaGFzTWlkZGxlQ29tbWVudHMoa2V5LmNvbnRlbnQpICYmICFoYXNFbmRDb21tZW50cyhrZXkpKSB7XG4gICAgICAgIHJldHVybiBjb25kaXRpb25hbEdyb3VwKFtbcHJpbnRlZEtleSwgaW1wbGljaXRNYXBwaW5nVmFsdWVdXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29uZGl0aW9uYWxHcm91cChbW2dyb3VwZWRLZXksIGlmQnJlYWsoZXhwbGljaXRNYXBwaW5nVmFsdWUsIGltcGxpY2l0TWFwcGluZ1ZhbHVlLCB7XG4gICAgICAgIGdyb3VwSWRcbiAgICAgIH0pXV0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0Fic29sdXRlbHlQcmludGVkQXNTaW5nbGVMaW5lTm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwicGxhaW5cIjpcbiAgICAgICAgY2FzZSBcInF1b3RlU2luZ2xlXCI6XG4gICAgICAgIGNhc2UgXCJxdW90ZURvdWJsZVwiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYWxpYXNcIjpcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5wcm9zZVdyYXAgPT09IFwicHJlc2VydmVcIikge1xuICAgICAgICByZXR1cm4gbm9kZS5wb3NpdGlvbi5zdGFydC5saW5lID09PSBub2RlLnBvc2l0aW9uLmVuZC5saW5lO1xuICAgICAgfVxuICAgICAgaWYgKC9cXFxcJC9tLnRlc3Qob3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2Uobm9kZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQsIG5vZGUucG9zaXRpb24uZW5kLm9mZnNldCkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAob3B0aW9ucy5wcm9zZVdyYXApIHtcbiAgICAgICAgY2FzZSBcIm5ldmVyXCI6XG4gICAgICAgICAgcmV0dXJuICFub2RlLnZhbHVlLmluY2x1ZGVzKFwiXFxuXCIpO1xuICAgICAgICBjYXNlIFwiYWx3YXlzXCI6XG4gICAgICAgICAgcmV0dXJuICEvW1xcbiBdLy50ZXN0KG5vZGUudmFsdWUpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbmVlZHNTcGFjZUluRnJvbnRPZk1hcHBpbmdWYWx1ZShub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5rZXkuY29udGVudCAmJiBub2RlLmtleS5jb250ZW50LnR5cGUgPT09IFwiYWxpYXNcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNTaW5nbGVMaW5lTm9kZShub2RlKSB7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwicGxhaW5cIjpcbiAgICAgICAgY2FzZSBcInF1b3RlRG91YmxlXCI6XG4gICAgICAgIGNhc2UgXCJxdW90ZVNpbmdsZVwiOlxuICAgICAgICAgIHJldHVybiBub2RlLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPT09IG5vZGUucG9zaXRpb24uZW5kLmxpbmU7XG4gICAgICAgIGNhc2UgXCJhbGlhc1wiOlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0gcHJpbnRNYXBwaW5nSXRlbTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9ibG9jazIgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLXlhbWwvcHJpbnQvYmxvY2suanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBkZWRlbnQsXG4gICAgICAgIGRlZGVudFRvUm9vdCxcbiAgICAgICAgZmlsbCxcbiAgICAgICAgaGFyZGxpbmUsXG4gICAgICAgIGpvaW4sXG4gICAgICAgIGxpbmUsXG4gICAgICAgIGxpdGVyYWxsaW5lLFxuICAgICAgICBtYXJrQXNSb290XG4gICAgICB9LFxuICAgICAgdXRpbHM6IHtcbiAgICAgICAgZ2V0RG9jUGFydHNcbiAgICAgIH1cbiAgICB9ID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuICAgIHZhciB7XG4gICAgICBnZXRBbmNlc3RvckNvdW50LFxuICAgICAgZ2V0QmxvY2tWYWx1ZUxpbmVDb250ZW50cyxcbiAgICAgIGhhc0luZGljYXRvckNvbW1lbnQsXG4gICAgICBpc0xhc3REZXNjZW5kYW50Tm9kZSxcbiAgICAgIGlzTm9kZVxuICAgIH0gPSByZXF1aXJlX3V0aWxzMTIoKTtcbiAgICB2YXIge1xuICAgICAgYWxpZ25XaXRoU3BhY2VzXG4gICAgfSA9IHJlcXVpcmVfbWlzYzIoKTtcbiAgICBmdW5jdGlvbiBwcmludEJsb2NrKHBhdGgsIHByaW50LCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBub2RlID0gcGF0aC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgcGFyZW50SW5kZW50ID0gZ2V0QW5jZXN0b3JDb3VudChwYXRoLCAoYW5jZXN0b3JOb2RlKSA9PiBpc05vZGUoYW5jZXN0b3JOb2RlLCBbXCJzZXF1ZW5jZVwiLCBcIm1hcHBpbmdcIl0pKTtcbiAgICAgIGNvbnN0IGlzTGFzdERlc2NlbmRhbnQgPSBpc0xhc3REZXNjZW5kYW50Tm9kZShwYXRoKTtcbiAgICAgIGNvbnN0IHBhcnRzID0gW25vZGUudHlwZSA9PT0gXCJibG9ja0ZvbGRlZFwiID8gXCI+XCIgOiBcInxcIl07XG4gICAgICBpZiAobm9kZS5pbmRlbnQgIT09IG51bGwpIHtcbiAgICAgICAgcGFydHMucHVzaChub2RlLmluZGVudC50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmNob21waW5nICE9PSBcImNsaXBcIikge1xuICAgICAgICBwYXJ0cy5wdXNoKG5vZGUuY2hvbXBpbmcgPT09IFwia2VlcFwiID8gXCIrXCIgOiBcIi1cIik7XG4gICAgICB9XG4gICAgICBpZiAoaGFzSW5kaWNhdG9yQ29tbWVudChub2RlKSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiLCBwcmludChcImluZGljYXRvckNvbW1lbnRcIikpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGluZUNvbnRlbnRzID0gZ2V0QmxvY2tWYWx1ZUxpbmVDb250ZW50cyhub2RlLCB7XG4gICAgICAgIHBhcmVudEluZGVudCxcbiAgICAgICAgaXNMYXN0RGVzY2VuZGFudCxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgfSk7XG4gICAgICBjb25zdCBjb250ZW50c1BhcnRzID0gW107XG4gICAgICBmb3IgKGNvbnN0IFtpbmRleCwgbGluZVdvcmRzXSBvZiBsaW5lQ29udGVudHMuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgIGNvbnRlbnRzUGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGVudHNQYXJ0cy5wdXNoKGZpbGwoZ2V0RG9jUGFydHMoam9pbihsaW5lLCBsaW5lV29yZHMpKSkpO1xuICAgICAgICBpZiAoaW5kZXggIT09IGxpbmVDb250ZW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgY29udGVudHNQYXJ0cy5wdXNoKGxpbmVXb3Jkcy5sZW5ndGggPT09IDAgPyBoYXJkbGluZSA6IG1hcmtBc1Jvb3QobGl0ZXJhbGxpbmUpKTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLmNob21waW5nID09PSBcImtlZXBcIiAmJiBpc0xhc3REZXNjZW5kYW50KSB7XG4gICAgICAgICAgY29udGVudHNQYXJ0cy5wdXNoKGRlZGVudFRvUm9vdChsaW5lV29yZHMubGVuZ3RoID09PSAwID8gaGFyZGxpbmUgOiBsaXRlcmFsbGluZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5pbmRlbnQgPT09IG51bGwpIHtcbiAgICAgICAgcGFydHMucHVzaChkZWRlbnQoYWxpZ25XaXRoU3BhY2VzKG9wdGlvbnMudGFiV2lkdGgsIGNvbnRlbnRzUGFydHMpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKGRlZGVudFRvUm9vdChhbGlnbldpdGhTcGFjZXMobm9kZS5pbmRlbnQgLSAxICsgcGFyZW50SW5kZW50LCBjb250ZW50c1BhcnRzKSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBwcmludEJsb2NrO1xuICB9XG59KTtcbnZhciByZXF1aXJlX3ByaW50ZXJfeWFtbCA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2UteWFtbC9wcmludGVyLXlhbWwuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciB7XG4gICAgICBidWlsZGVyczoge1xuICAgICAgICBicmVha1BhcmVudCxcbiAgICAgICAgZmlsbCxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGhhcmRsaW5lLFxuICAgICAgICBqb2luLFxuICAgICAgICBsaW5lLFxuICAgICAgICBsaW5lU3VmZml4LFxuICAgICAgICBsaXRlcmFsbGluZVxuICAgICAgfSxcbiAgICAgIHV0aWxzOiB7XG4gICAgICAgIGdldERvY1BhcnRzLFxuICAgICAgICByZXBsYWNlVGV4dEVuZE9mTGluZVxuICAgICAgfVxuICAgIH0gPSByZXF1aXJlKFwiLi9kb2MuanNcIik7XG4gICAgdmFyIHtcbiAgICAgIGlzUHJldmlvdXNMaW5lRW1wdHlcbiAgICB9ID0gcmVxdWlyZV91dGlsKCk7XG4gICAgdmFyIHtcbiAgICAgIGluc2VydFByYWdtYSxcbiAgICAgIGlzUHJhZ21hXG4gICAgfSA9IHJlcXVpcmVfcHJhZ21hNigpO1xuICAgIHZhciB7XG4gICAgICBsb2NTdGFydFxuICAgIH0gPSByZXF1aXJlX2xvYzcoKTtcbiAgICB2YXIgZW1iZWQgPSByZXF1aXJlX2VtYmVkNSgpO1xuICAgIHZhciB7XG4gICAgICBnZXRGbG93U2NhbGFyTGluZUNvbnRlbnRzLFxuICAgICAgZ2V0TGFzdERlc2NlbmRhbnROb2RlLFxuICAgICAgaGFzTGVhZGluZ0NvbW1lbnRzLFxuICAgICAgaGFzTWlkZGxlQ29tbWVudHMsXG4gICAgICBoYXNUcmFpbGluZ0NvbW1lbnQsXG4gICAgICBoYXNFbmRDb21tZW50cyxcbiAgICAgIGhhc1ByZXR0aWVySWdub3JlLFxuICAgICAgaXNMYXN0RGVzY2VuZGFudE5vZGUsXG4gICAgICBpc05vZGUsXG4gICAgICBpc0lubGluZU5vZGVcbiAgICB9ID0gcmVxdWlyZV91dGlsczEyKCk7XG4gICAgdmFyIHByZXByb2Nlc3MgPSByZXF1aXJlX3ByaW50X3ByZXByb2Nlc3M0KCk7XG4gICAgdmFyIHtcbiAgICAgIGFsaWduV2l0aFNwYWNlcyxcbiAgICAgIHByaW50TmV4dEVtcHR5TGluZSxcbiAgICAgIHNob3VsZFByaW50RW5kQ29tbWVudHNcbiAgICB9ID0gcmVxdWlyZV9taXNjMigpO1xuICAgIHZhciB7XG4gICAgICBwcmludEZsb3dNYXBwaW5nLFxuICAgICAgcHJpbnRGbG93U2VxdWVuY2VcbiAgICB9ID0gcmVxdWlyZV9mbG93X21hcHBpbmdfc2VxdWVuY2UoKTtcbiAgICB2YXIgcHJpbnRNYXBwaW5nSXRlbSA9IHJlcXVpcmVfbWFwcGluZ19pdGVtKCk7XG4gICAgdmFyIHByaW50QmxvY2sgPSByZXF1aXJlX2Jsb2NrMigpO1xuICAgIGZ1bmN0aW9uIGdlbmVyaWNQcmludChwYXRoLCBvcHRpb25zLCBwcmludCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBhdGguZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgICBpZiAobm9kZS50eXBlICE9PSBcIm1hcHBpbmdWYWx1ZVwiICYmIGhhc0xlYWRpbmdDb21tZW50cyhub2RlKSkge1xuICAgICAgICBwYXJ0cy5wdXNoKFtqb2luKGhhcmRsaW5lLCBwYXRoLm1hcChwcmludCwgXCJsZWFkaW5nQ29tbWVudHNcIikpLCBoYXJkbGluZV0pO1xuICAgICAgfVxuICAgICAgY29uc3Qge1xuICAgICAgICB0YWcsXG4gICAgICAgIGFuY2hvclxuICAgICAgfSA9IG5vZGU7XG4gICAgICBpZiAodGFnKSB7XG4gICAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJ0YWdcIikpO1xuICAgICAgfVxuICAgICAgaWYgKHRhZyAmJiBhbmNob3IpIHtcbiAgICAgICAgcGFydHMucHVzaChcIiBcIik7XG4gICAgICB9XG4gICAgICBpZiAoYW5jaG9yKSB7XG4gICAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJhbmNob3JcIikpO1xuICAgICAgfVxuICAgICAgbGV0IG5leHRFbXB0eUxpbmUgPSBcIlwiO1xuICAgICAgaWYgKGlzTm9kZShub2RlLCBbXCJtYXBwaW5nXCIsIFwic2VxdWVuY2VcIiwgXCJjb21tZW50XCIsIFwiZGlyZWN0aXZlXCIsIFwibWFwcGluZ0l0ZW1cIiwgXCJzZXF1ZW5jZUl0ZW1cIl0pICYmICFpc0xhc3REZXNjZW5kYW50Tm9kZShwYXRoKSkge1xuICAgICAgICBuZXh0RW1wdHlMaW5lID0gcHJpbnROZXh0RW1wdHlMaW5lKHBhdGgsIG9wdGlvbnMub3JpZ2luYWxUZXh0KTtcbiAgICAgIH1cbiAgICAgIGlmICh0YWcgfHwgYW5jaG9yKSB7XG4gICAgICAgIGlmIChpc05vZGUobm9kZSwgW1wic2VxdWVuY2VcIiwgXCJtYXBwaW5nXCJdKSAmJiAhaGFzTWlkZGxlQ29tbWVudHMobm9kZSkpIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKGhhcmRsaW5lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFwiIFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGhhc01pZGRsZUNvbW1lbnRzKG5vZGUpKSB7XG4gICAgICAgIHBhcnRzLnB1c2goW25vZGUubWlkZGxlQ29tbWVudHMubGVuZ3RoID09PSAxID8gXCJcIiA6IGhhcmRsaW5lLCBqb2luKGhhcmRsaW5lLCBwYXRoLm1hcChwcmludCwgXCJtaWRkbGVDb21tZW50c1wiKSksIGhhcmRsaW5lXSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gcGF0aC5nZXRQYXJlbnROb2RlKCk7XG4gICAgICBpZiAoaGFzUHJldHRpZXJJZ25vcmUocGF0aCkpIHtcbiAgICAgICAgcGFydHMucHVzaChyZXBsYWNlVGV4dEVuZE9mTGluZShvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0KS50cmltRW5kKCksIGxpdGVyYWxsaW5lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKGdyb3VwKHByaW50Tm9kZShub2RlLCBwYXJlbnROb2RlLCBwYXRoLCBvcHRpb25zLCBwcmludCkpKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNUcmFpbGluZ0NvbW1lbnQobm9kZSkgJiYgIWlzTm9kZShub2RlLCBbXCJkb2N1bWVudFwiLCBcImRvY3VtZW50SGVhZFwiXSkpIHtcbiAgICAgICAgcGFydHMucHVzaChsaW5lU3VmZml4KFtub2RlLnR5cGUgPT09IFwibWFwcGluZ1ZhbHVlXCIgJiYgIW5vZGUuY29udGVudCA/IFwiXCIgOiBcIiBcIiwgcGFyZW50Tm9kZS50eXBlID09PSBcIm1hcHBpbmdLZXlcIiAmJiBwYXRoLmdldFBhcmVudE5vZGUoMikudHlwZSA9PT0gXCJtYXBwaW5nXCIgJiYgaXNJbmxpbmVOb2RlKG5vZGUpID8gXCJcIiA6IGJyZWFrUGFyZW50LCBwcmludChcInRyYWlsaW5nQ29tbWVudFwiKV0pKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaG91bGRQcmludEVuZENvbW1lbnRzKG5vZGUpKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWxpZ25XaXRoU3BhY2VzKG5vZGUudHlwZSA9PT0gXCJzZXF1ZW5jZUl0ZW1cIiA/IDIgOiAwLCBbaGFyZGxpbmUsIGpvaW4oaGFyZGxpbmUsIHBhdGgubWFwKChwYXRoMikgPT4gW2lzUHJldmlvdXNMaW5lRW1wdHkob3B0aW9ucy5vcmlnaW5hbFRleHQsIHBhdGgyLmdldFZhbHVlKCksIGxvY1N0YXJ0KSA/IGhhcmRsaW5lIDogXCJcIiwgcHJpbnQoKV0sIFwiZW5kQ29tbWVudHNcIikpXSkpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChuZXh0RW1wdHlMaW5lKTtcbiAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnROb2RlKG5vZGUsIHBhcmVudE5vZGUsIHBhdGgsIG9wdGlvbnMsIHByaW50KSB7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIFwicm9vdFwiOiB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICB9ID0gbm9kZTtcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgICAgIHBhdGguZWFjaCgoY2hpbGRQYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBjaGlsZHJlbltpbmRleF07XG4gICAgICAgICAgICBjb25zdCBuZXh0RG9jdW1lbnQgPSBjaGlsZHJlbltpbmRleCArIDFdO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goaGFyZGxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHMucHVzaChwcmludCgpKTtcbiAgICAgICAgICAgIGlmIChzaG91bGRQcmludERvY3VtZW50RW5kTWFya2VyKGRvY3VtZW50LCBuZXh0RG9jdW1lbnQpKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goaGFyZGxpbmUsIFwiLi4uXCIpO1xuICAgICAgICAgICAgICBpZiAoaGFzVHJhaWxpbmdDb21tZW50KGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goXCIgXCIsIHByaW50KFwidHJhaWxpbmdDb21tZW50XCIpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXh0RG9jdW1lbnQgJiYgIWhhc1RyYWlsaW5nQ29tbWVudChuZXh0RG9jdW1lbnQuaGVhZCkpIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSwgXCItLS1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgXCJjaGlsZHJlblwiKTtcbiAgICAgICAgICBjb25zdCBsYXN0RGVzY2VuZGFudE5vZGUgPSBnZXRMYXN0RGVzY2VuZGFudE5vZGUobm9kZSk7XG4gICAgICAgICAgaWYgKCFpc05vZGUobGFzdERlc2NlbmRhbnROb2RlLCBbXCJibG9ja0xpdGVyYWxcIiwgXCJibG9ja0ZvbGRlZFwiXSkgfHwgbGFzdERlc2NlbmRhbnROb2RlLmNob21waW5nICE9PSBcImtlZXBcIikge1xuICAgICAgICAgICAgcGFydHMucHVzaChoYXJkbGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZG9jdW1lbnRcIjoge1xuICAgICAgICAgIGNvbnN0IG5leHREb2N1bWVudCA9IHBhcmVudE5vZGUuY2hpbGRyZW5bcGF0aC5nZXROYW1lKCkgKyAxXTtcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgICAgIGlmIChzaG91bGRQcmludERvY3VtZW50SGVhZEVuZE1hcmtlcihub2RlLCBuZXh0RG9jdW1lbnQsIHBhcmVudE5vZGUsIG9wdGlvbnMpID09PSBcImhlYWRcIikge1xuICAgICAgICAgICAgaWYgKG5vZGUuaGVhZC5jaGlsZHJlbi5sZW5ndGggPiAwIHx8IG5vZGUuaGVhZC5lbmRDb21tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2gocHJpbnQoXCJoZWFkXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXNUcmFpbGluZ0NvbW1lbnQobm9kZS5oZWFkKSkge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKFtcIi0tLVwiLCBcIiBcIiwgcHJpbnQoW1wiaGVhZFwiLCBcInRyYWlsaW5nQ29tbWVudFwiXSldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goXCItLS1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzaG91bGRQcmludERvY3VtZW50Qm9keShub2RlKSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChwcmludChcImJvZHlcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gam9pbihoYXJkbGluZSwgcGFydHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJkb2N1bWVudEhlYWRcIjpcbiAgICAgICAgICByZXR1cm4gam9pbihoYXJkbGluZSwgWy4uLnBhdGgubWFwKHByaW50LCBcImNoaWxkcmVuXCIpLCAuLi5wYXRoLm1hcChwcmludCwgXCJlbmRDb21tZW50c1wiKV0pO1xuICAgICAgICBjYXNlIFwiZG9jdW1lbnRCb2R5XCI6IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIGVuZENvbW1lbnRzXG4gICAgICAgICAgfSA9IG5vZGU7XG4gICAgICAgICAgbGV0IHNlcGFyYXRvciA9IFwiXCI7XG4gICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgZW5kQ29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdERlc2NlbmRhbnROb2RlID0gZ2V0TGFzdERlc2NlbmRhbnROb2RlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzTm9kZShsYXN0RGVzY2VuZGFudE5vZGUsIFtcImJsb2NrRm9sZGVkXCIsIFwiYmxvY2tMaXRlcmFsXCJdKSkge1xuICAgICAgICAgICAgICBpZiAobGFzdERlc2NlbmRhbnROb2RlLmNob21waW5nICE9PSBcImtlZXBcIikge1xuICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9IFtoYXJkbGluZSwgaGFyZGxpbmVdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXBhcmF0b3IgPSBoYXJkbGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtqb2luKGhhcmRsaW5lLCBwYXRoLm1hcChwcmludCwgXCJjaGlsZHJlblwiKSksIHNlcGFyYXRvciwgam9pbihoYXJkbGluZSwgcGF0aC5tYXAocHJpbnQsIFwiZW5kQ29tbWVudHNcIikpXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZGlyZWN0aXZlXCI6XG4gICAgICAgICAgcmV0dXJuIFtcIiVcIiwgam9pbihcIiBcIiwgW25vZGUubmFtZSwgLi4ubm9kZS5wYXJhbWV0ZXJzXSldO1xuICAgICAgICBjYXNlIFwiY29tbWVudFwiOlxuICAgICAgICAgIHJldHVybiBbXCIjXCIsIG5vZGUudmFsdWVdO1xuICAgICAgICBjYXNlIFwiYWxpYXNcIjpcbiAgICAgICAgICByZXR1cm4gW1wiKlwiLCBub2RlLnZhbHVlXTtcbiAgICAgICAgY2FzZSBcInRhZ1wiOlxuICAgICAgICAgIHJldHVybiBvcHRpb25zLm9yaWdpbmFsVGV4dC5zbGljZShub2RlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbm9kZS5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgY2FzZSBcImFuY2hvclwiOlxuICAgICAgICAgIHJldHVybiBbXCImXCIsIG5vZGUudmFsdWVdO1xuICAgICAgICBjYXNlIFwicGxhaW5cIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93U2NhbGFyQ29udGVudChub2RlLnR5cGUsIG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKG5vZGUucG9zaXRpb24uc3RhcnQub2Zmc2V0LCBub2RlLnBvc2l0aW9uLmVuZC5vZmZzZXQpLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBcInF1b3RlRG91YmxlXCI6XG4gICAgICAgIGNhc2UgXCJxdW90ZVNpbmdsZVwiOiB7XG4gICAgICAgICAgY29uc3Qgc2luZ2xlUXVvdGUgPSBcIidcIjtcbiAgICAgICAgICBjb25zdCBkb3VibGVRdW90ZSA9ICdcIic7XG4gICAgICAgICAgY29uc3QgcmF3ID0gb3B0aW9ucy5vcmlnaW5hbFRleHQuc2xpY2Uobm9kZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQgKyAxLCBub2RlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSAxKTtcbiAgICAgICAgICBpZiAobm9kZS50eXBlID09PSBcInF1b3RlU2luZ2xlXCIgJiYgcmF3LmluY2x1ZGVzKFwiXFxcXFwiKSB8fCBub2RlLnR5cGUgPT09IFwicXVvdGVEb3VibGVcIiAmJiAvXFxcXFteXCJdLy50ZXN0KHJhdykpIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsUXVvdGUgPSBub2RlLnR5cGUgPT09IFwicXVvdGVEb3VibGVcIiA/IGRvdWJsZVF1b3RlIDogc2luZ2xlUXVvdGU7XG4gICAgICAgICAgICByZXR1cm4gW29yaWdpbmFsUXVvdGUsIHByaW50Rmxvd1NjYWxhckNvbnRlbnQobm9kZS50eXBlLCByYXcsIG9wdGlvbnMpLCBvcmlnaW5hbFF1b3RlXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJhdy5pbmNsdWRlcyhkb3VibGVRdW90ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbc2luZ2xlUXVvdGUsIHByaW50Rmxvd1NjYWxhckNvbnRlbnQobm9kZS50eXBlLCBub2RlLnR5cGUgPT09IFwicXVvdGVEb3VibGVcIiA/IHJhdy5yZXBsYWNlKC9cXFxcXCIvZywgZG91YmxlUXVvdGUpLnJlcGxhY2UoLycvZywgc2luZ2xlUXVvdGUucmVwZWF0KDIpKSA6IHJhdywgb3B0aW9ucyksIHNpbmdsZVF1b3RlXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJhdy5pbmNsdWRlcyhzaW5nbGVRdW90ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbZG91YmxlUXVvdGUsIHByaW50Rmxvd1NjYWxhckNvbnRlbnQobm9kZS50eXBlLCBub2RlLnR5cGUgPT09IFwicXVvdGVTaW5nbGVcIiA/IHJhdy5yZXBsYWNlKC8nJy9nLCBzaW5nbGVRdW90ZSkgOiByYXcsIG9wdGlvbnMpLCBkb3VibGVRdW90ZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHF1b3RlID0gb3B0aW9ucy5zaW5nbGVRdW90ZSA/IHNpbmdsZVF1b3RlIDogZG91YmxlUXVvdGU7XG4gICAgICAgICAgcmV0dXJuIFtxdW90ZSwgcHJpbnRGbG93U2NhbGFyQ29udGVudChub2RlLnR5cGUsIHJhdywgb3B0aW9ucyksIHF1b3RlXTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiYmxvY2tGb2xkZWRcIjpcbiAgICAgICAgY2FzZSBcImJsb2NrTGl0ZXJhbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIHByaW50QmxvY2socGF0aCwgcHJpbnQsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtYXBwaW5nXCI6XG4gICAgICAgIGNhc2UgXCJzZXF1ZW5jZVwiOlxuICAgICAgICAgIHJldHVybiBqb2luKGhhcmRsaW5lLCBwYXRoLm1hcChwcmludCwgXCJjaGlsZHJlblwiKSk7XG4gICAgICAgIGNhc2UgXCJzZXF1ZW5jZUl0ZW1cIjpcbiAgICAgICAgICByZXR1cm4gW1wiLSBcIiwgYWxpZ25XaXRoU3BhY2VzKDIsIG5vZGUuY29udGVudCA/IHByaW50KFwiY29udGVudFwiKSA6IFwiXCIpXTtcbiAgICAgICAgY2FzZSBcIm1hcHBpbmdLZXlcIjpcbiAgICAgICAgY2FzZSBcIm1hcHBpbmdWYWx1ZVwiOlxuICAgICAgICAgIHJldHVybiAhbm9kZS5jb250ZW50ID8gXCJcIiA6IHByaW50KFwiY29udGVudFwiKTtcbiAgICAgICAgY2FzZSBcIm1hcHBpbmdJdGVtXCI6XG4gICAgICAgIGNhc2UgXCJmbG93TWFwcGluZ0l0ZW1cIjoge1xuICAgICAgICAgIHJldHVybiBwcmludE1hcHBpbmdJdGVtKG5vZGUsIHBhcmVudE5vZGUsIHBhdGgsIHByaW50LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZmxvd01hcHBpbmdcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93TWFwcGluZyhwYXRoLCBwcmludCwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgXCJmbG93U2VxdWVuY2VcIjpcbiAgICAgICAgICByZXR1cm4gcHJpbnRGbG93U2VxdWVuY2UocGF0aCwgcHJpbnQsIG9wdGlvbnMpO1xuICAgICAgICBjYXNlIFwiZmxvd1NlcXVlbmNlSXRlbVwiOlxuICAgICAgICAgIHJldHVybiBwcmludChcImNvbnRlbnRcIik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG5vZGUgdHlwZSAke25vZGUudHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2hvdWxkUHJpbnREb2N1bWVudEJvZHkoZG9jdW1lbnQpIHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5ib2R5LmNoaWxkcmVuLmxlbmd0aCA+IDAgfHwgaGFzRW5kQ29tbWVudHMoZG9jdW1lbnQuYm9keSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZFByaW50RG9jdW1lbnRFbmRNYXJrZXIoZG9jdW1lbnQsIG5leHREb2N1bWVudCkge1xuICAgICAgcmV0dXJuIGhhc1RyYWlsaW5nQ29tbWVudChkb2N1bWVudCkgfHwgbmV4dERvY3VtZW50ICYmIChuZXh0RG9jdW1lbnQuaGVhZC5jaGlsZHJlbi5sZW5ndGggPiAwIHx8IGhhc0VuZENvbW1lbnRzKG5leHREb2N1bWVudC5oZWFkKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNob3VsZFByaW50RG9jdW1lbnRIZWFkRW5kTWFya2VyKGRvY3VtZW50LCBuZXh0RG9jdW1lbnQsIHJvb3QsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChyb290LmNoaWxkcmVuWzBdID09PSBkb2N1bWVudCAmJiAvLS0tKD86XFxzfCQpLy50ZXN0KG9wdGlvbnMub3JpZ2luYWxUZXh0LnNsaWNlKGxvY1N0YXJ0KGRvY3VtZW50KSwgbG9jU3RhcnQoZG9jdW1lbnQpICsgNCkpIHx8IGRvY3VtZW50LmhlYWQuY2hpbGRyZW4ubGVuZ3RoID4gMCB8fCBoYXNFbmRDb21tZW50cyhkb2N1bWVudC5oZWFkKSB8fCBoYXNUcmFpbGluZ0NvbW1lbnQoZG9jdW1lbnQuaGVhZCkpIHtcbiAgICAgICAgcmV0dXJuIFwiaGVhZFwiO1xuICAgICAgfVxuICAgICAgaWYgKHNob3VsZFByaW50RG9jdW1lbnRFbmRNYXJrZXIoZG9jdW1lbnQsIG5leHREb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHREb2N1bWVudCA/IFwicm9vdFwiIDogZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByaW50Rmxvd1NjYWxhckNvbnRlbnQobm9kZVR5cGUsIGNvbnRlbnQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGxpbmVDb250ZW50cyA9IGdldEZsb3dTY2FsYXJMaW5lQ29udGVudHMobm9kZVR5cGUsIGNvbnRlbnQsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIGpvaW4oaGFyZGxpbmUsIGxpbmVDb250ZW50cy5tYXAoKGxpbmVDb250ZW50V29yZHMpID0+IGZpbGwoZ2V0RG9jUGFydHMoam9pbihsaW5lLCBsaW5lQ29udGVudFdvcmRzKSkpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNsZWFuKG5vZGUsIG5ld05vZGUpIHtcbiAgICAgIGlmIChpc05vZGUobmV3Tm9kZSkpIHtcbiAgICAgICAgZGVsZXRlIG5ld05vZGUucG9zaXRpb247XG4gICAgICAgIHN3aXRjaCAobmV3Tm9kZS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBcImNvbW1lbnRcIjpcbiAgICAgICAgICAgIGlmIChpc1ByYWdtYShuZXdOb2RlLnZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJxdW90ZURvdWJsZVwiOlxuICAgICAgICAgIGNhc2UgXCJxdW90ZVNpbmdsZVwiOlxuICAgICAgICAgICAgbmV3Tm9kZS50eXBlID0gXCJxdW90ZVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgcHJlcHJvY2VzcyxcbiAgICAgIGVtYmVkLFxuICAgICAgcHJpbnQ6IGdlbmVyaWNQcmludCxcbiAgICAgIG1hc3NhZ2VBc3ROb2RlOiBjbGVhbixcbiAgICAgIGluc2VydFByYWdtYVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfb3B0aW9uczcgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2xhbmd1YWdlLXlhbWwvb3B0aW9ucy5qc1wiKGV4cG9ydHMyLCBtb2R1bGUyKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGNvbW1vbk9wdGlvbnMgPSByZXF1aXJlX2NvbW1vbl9vcHRpb25zKCk7XG4gICAgbW9kdWxlMi5leHBvcnRzID0ge1xuICAgICAgYnJhY2tldFNwYWNpbmc6IGNvbW1vbk9wdGlvbnMuYnJhY2tldFNwYWNpbmcsXG4gICAgICBzaW5nbGVRdW90ZTogY29tbW9uT3B0aW9ucy5zaW5nbGVRdW90ZSxcbiAgICAgIHByb3NlV3JhcDogY29tbW9uT3B0aW9ucy5wcm9zZVdyYXBcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX3BhcnNlcnM3ID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS15YW1sL3BhcnNlcnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IHtcbiAgICAgIGdldCB5YW1sKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFyc2VyLXlhbWwuanNcIikucGFyc2Vycy55YW1sO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHJlcXVpcmVfWUFNTCA9IF9fY29tbW9uSlMyKHtcbiAgXCJub2RlX21vZHVsZXMvbGluZ3Vpc3QtbGFuZ3VhZ2VzL2RhdGEvWUFNTC5qc29uXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBuYW1lOiBcIllBTUxcIixcbiAgICAgIHR5cGU6IFwiZGF0YVwiLFxuICAgICAgY29sb3I6IFwiI2NiMTcxZVwiLFxuICAgICAgdG1TY29wZTogXCJzb3VyY2UueWFtbFwiLFxuICAgICAgYWxpYXNlczogW1wieW1sXCJdLFxuICAgICAgZXh0ZW5zaW9uczogW1wiLnltbFwiLCBcIi5taXJcIiwgXCIucmVla1wiLCBcIi5ydml6XCIsIFwiLnN1YmxpbWUtc3ludGF4XCIsIFwiLnN5bnRheFwiLCBcIi55YW1sXCIsIFwiLnlhbWwtdG1sYW5ndWFnZVwiLCBcIi55YW1sLnNlZFwiLCBcIi55bWwubXlzcWxcIl0sXG4gICAgICBmaWxlbmFtZXM6IFtcIi5jbGFuZy1mb3JtYXRcIiwgXCIuY2xhbmctdGlkeVwiLCBcIi5nZW1yY1wiLCBcIkNJVEFUSU9OLmNmZlwiLCBcImdsaWRlLmxvY2tcIiwgXCJ5YXJuLmxvY2tcIl0sXG4gICAgICBhY2VNb2RlOiBcInlhbWxcIixcbiAgICAgIGNvZGVtaXJyb3JNb2RlOiBcInlhbWxcIixcbiAgICAgIGNvZGVtaXJyb3JNaW1lVHlwZTogXCJ0ZXh0L3gteWFtbFwiLFxuICAgICAgbGFuZ3VhZ2VJZDogNDA3XG4gICAgfTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sYW5ndWFnZV95YW1sID0gX19jb21tb25KUzIoe1xuICBcInNyYy9sYW5ndWFnZS15YW1sL2luZGV4LmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgY3JlYXRlTGFuZ3VhZ2UgPSByZXF1aXJlX2NyZWF0ZV9sYW5ndWFnZSgpO1xuICAgIHZhciBwcmludGVyID0gcmVxdWlyZV9wcmludGVyX3lhbWwoKTtcbiAgICB2YXIgb3B0aW9ucyA9IHJlcXVpcmVfb3B0aW9uczcoKTtcbiAgICB2YXIgcGFyc2VycyA9IHJlcXVpcmVfcGFyc2VyczcoKTtcbiAgICB2YXIgbGFuZ3VhZ2VzID0gW2NyZWF0ZUxhbmd1YWdlKHJlcXVpcmVfWUFNTCgpLCAoZGF0YSkgPT4gKHtcbiAgICAgIHNpbmNlOiBcIjEuMTQuMFwiLFxuICAgICAgcGFyc2VyczogW1wieWFtbFwiXSxcbiAgICAgIHZzY29kZUxhbmd1YWdlSWRzOiBbXCJ5YW1sXCIsIFwiYW5zaWJsZVwiLCBcImhvbWUtYXNzaXN0YW50XCJdLFxuICAgICAgZmlsZW5hbWVzOiBbLi4uZGF0YS5maWxlbmFtZXMuZmlsdGVyKChmaWxlbmFtZSkgPT4gZmlsZW5hbWUgIT09IFwieWFybi5sb2NrXCIpLCBcIi5wcmV0dGllcnJjXCIsIFwiLnN0eWxlbGludHJjXCJdXG4gICAgfSkpXTtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsYW5ndWFnZXMsXG4gICAgICBwcmludGVyczoge1xuICAgICAgICB5YW1sOiBwcmludGVyXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHBhcnNlcnNcbiAgICB9O1xuICB9XG59KTtcbnZhciByZXF1aXJlX2xhbmd1YWdlcyA9IF9fY29tbW9uSlMyKHtcbiAgXCJzcmMvbGFuZ3VhZ2VzLmpzXCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBbcmVxdWlyZV9sYW5ndWFnZV9qcygpLCByZXF1aXJlX2xhbmd1YWdlX2NzcygpLCByZXF1aXJlX2xhbmd1YWdlX2hhbmRsZWJhcnMoKSwgcmVxdWlyZV9sYW5ndWFnZV9ncmFwaHFsKCksIHJlcXVpcmVfbGFuZ3VhZ2VfbWFya2Rvd24oKSwgcmVxdWlyZV9sYW5ndWFnZV9odG1sKCksIHJlcXVpcmVfbGFuZ3VhZ2VfeWFtbCgpXTtcbiAgfVxufSk7XG52YXIgcmVxdWlyZV9sb2FkX3BsdWdpbnMgPSBfX2NvbW1vbkpTMih7XG4gIFwic3JjL2NvbW1vbi9sb2FkLXBsdWdpbnMuanNcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuICAgIHZhciBmYXN0R2xvYiA9IHJlcXVpcmVfb3V0NCgpO1xuICAgIHZhciBwYXJ0aXRpb24gPSByZXF1aXJlX3BhcnRpdGlvbigpO1xuICAgIHZhciB1bmlxQnlLZXkgPSByZXF1aXJlX3VuaXFfYnlfa2V5KCk7XG4gICAgdmFyIGludGVybmFsUGx1Z2lucyA9IHJlcXVpcmVfbGFuZ3VhZ2VzKCk7XG4gICAgdmFyIHtcbiAgICAgIGRlZmF1bHQ6IG1lbTIsXG4gICAgICBtZW1DbGVhcjogbWVtQ2xlYXIyXG4gICAgfSA9IChpbml0X2Rpc3QoKSwgX190b0NvbW1vbkpTKGRpc3RfZXhwb3J0cykpO1xuICAgIHZhciB0aGlyZFBhcnR5ID0gcmVxdWlyZShcIi4vdGhpcmQtcGFydHkuanNcIik7XG4gICAgdmFyIHJlc29sdmUgPSByZXF1aXJlX3Jlc29sdmUyKCk7XG4gICAgdmFyIG1lbW9pemVkTG9hZCA9IG1lbTIobG9hZCwge1xuICAgICAgY2FjaGVLZXk6IEpTT04uc3RyaW5naWZ5XG4gICAgfSk7XG4gICAgdmFyIG1lbW9pemVkU2VhcmNoID0gbWVtMihmaW5kUGx1Z2luc0luTm9kZU1vZHVsZXMpO1xuICAgIHZhciBjbGVhckNhY2hlID0gKCkgPT4ge1xuICAgICAgbWVtQ2xlYXIyKG1lbW9pemVkTG9hZCk7XG4gICAgICBtZW1DbGVhcjIobWVtb2l6ZWRTZWFyY2gpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gbG9hZChwbHVnaW5zMiwgcGx1Z2luU2VhcmNoRGlycykge1xuICAgICAgaWYgKCFwbHVnaW5zMikge1xuICAgICAgICBwbHVnaW5zMiA9IFtdO1xuICAgICAgfVxuICAgICAgaWYgKHBsdWdpblNlYXJjaERpcnMgPT09IGZhbHNlKSB7XG4gICAgICAgIHBsdWdpblNlYXJjaERpcnMgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBsdWdpblNlYXJjaERpcnMgPSBwbHVnaW5TZWFyY2hEaXJzIHx8IFtdO1xuICAgICAgICBpZiAocGx1Z2luU2VhcmNoRGlycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBhdXRvTG9hZERpciA9IHRoaXJkUGFydHkuZmluZFBhcmVudERpcihfX2Rpcm5hbWUsIFwibm9kZV9tb2R1bGVzXCIpO1xuICAgICAgICAgIGlmIChhdXRvTG9hZERpcikge1xuICAgICAgICAgICAgcGx1Z2luU2VhcmNoRGlycyA9IFthdXRvTG9hZERpcl07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBbZXh0ZXJuYWxQbHVnaW5OYW1lcywgZXh0ZXJuYWxQbHVnaW5JbnN0YW5jZXNdID0gcGFydGl0aW9uKHBsdWdpbnMyLCAocGx1Z2luKSA9PiB0eXBlb2YgcGx1Z2luID09PSBcInN0cmluZ1wiKTtcbiAgICAgIGNvbnN0IGV4dGVybmFsTWFudWFsTG9hZFBsdWdpbkluZm9zID0gZXh0ZXJuYWxQbHVnaW5OYW1lcy5tYXAoKHBsdWdpbk5hbWUpID0+IHtcbiAgICAgICAgbGV0IHJlcXVpcmVQYXRoO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcXVpcmVQYXRoID0gcmVzb2x2ZShwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgcGx1Z2luTmFtZSkpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXF1aXJlUGF0aCA9IHJlc29sdmUocGx1Z2luTmFtZSwge1xuICAgICAgICAgICAgcGF0aHM6IFtwcm9jZXNzLmN3ZCgpXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogcGx1Z2luTmFtZSxcbiAgICAgICAgICByZXF1aXJlUGF0aFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRlcm5hbEF1dG9Mb2FkUGx1Z2luSW5mb3MgPSBwbHVnaW5TZWFyY2hEaXJzLmZsYXRNYXAoKHBsdWdpblNlYXJjaERpcikgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZFBsdWdpblNlYXJjaERpciA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBwbHVnaW5TZWFyY2hEaXIpO1xuICAgICAgICBjb25zdCBub2RlTW9kdWxlc0RpciA9IHBhdGgucmVzb2x2ZShyZXNvbHZlZFBsdWdpblNlYXJjaERpciwgXCJub2RlX21vZHVsZXNcIik7XG4gICAgICAgIGlmICghaXNEaXJlY3Rvcnkobm9kZU1vZHVsZXNEaXIpICYmICFpc0RpcmVjdG9yeShyZXNvbHZlZFBsdWdpblNlYXJjaERpcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cGx1Z2luU2VhcmNoRGlyfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYSBkaXJlY3RvcnlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVtb2l6ZWRTZWFyY2gobm9kZU1vZHVsZXNEaXIpLm1hcCgocGx1Z2luTmFtZSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBwbHVnaW5OYW1lLFxuICAgICAgICAgIHJlcXVpcmVQYXRoOiByZXNvbHZlKHBsdWdpbk5hbWUsIHtcbiAgICAgICAgICAgIHBhdGhzOiBbcmVzb2x2ZWRQbHVnaW5TZWFyY2hEaXJdXG4gICAgICAgICAgfSlcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRlcm5hbFBsdWdpbnMgPSBbLi4udW5pcUJ5S2V5KFsuLi5leHRlcm5hbE1hbnVhbExvYWRQbHVnaW5JbmZvcywgLi4uZXh0ZXJuYWxBdXRvTG9hZFBsdWdpbkluZm9zXSwgXCJyZXF1aXJlUGF0aFwiKS5tYXAoKGV4dGVybmFsUGx1Z2luSW5mbykgPT4gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIG5hbWU6IGV4dGVybmFsUGx1Z2luSW5mby5uYW1lXG4gICAgICB9LCByZXF1aXJlKGV4dGVybmFsUGx1Z2luSW5mby5yZXF1aXJlUGF0aCkpKSwgLi4uZXh0ZXJuYWxQbHVnaW5JbnN0YW5jZXNdO1xuICAgICAgcmV0dXJuIFsuLi5pbnRlcm5hbFBsdWdpbnMsIC4uLmV4dGVybmFsUGx1Z2luc107XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpbmRQbHVnaW5zSW5Ob2RlTW9kdWxlcyhub2RlTW9kdWxlc0Rpcikge1xuICAgICAgY29uc3QgcGx1Z2luUGFja2FnZUpzb25QYXRocyA9IGZhc3RHbG9iLnN5bmMoW1wicHJldHRpZXItcGx1Z2luLSovcGFja2FnZS5qc29uXCIsIFwiQCovcHJldHRpZXItcGx1Z2luLSovcGFja2FnZS5qc29uXCIsIFwiQHByZXR0aWVyL3BsdWdpbi0qL3BhY2thZ2UuanNvblwiXSwge1xuICAgICAgICBjd2Q6IG5vZGVNb2R1bGVzRGlyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwbHVnaW5QYWNrYWdlSnNvblBhdGhzLm1hcChwYXRoLmRpcm5hbWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0RpcmVjdG9yeShkaXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmcy5zdGF0U3luYyhkaXIpLmlzRGlyZWN0b3J5KCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUyLmV4cG9ydHMgPSB7XG4gICAgICBsb2FkUGx1Z2luczogbWVtb2l6ZWRMb2FkLFxuICAgICAgY2xlYXJDYWNoZVxuICAgIH07XG4gIH1cbn0pO1xudmFyIHtcbiAgdmVyc2lvblxufSA9IHJlcXVpcmUoXCIuL3BhY2thZ2UuanNvblwiKTtcbnZhciBjb3JlID0gcmVxdWlyZV9jb3JlKCk7XG52YXIge1xuICBnZXRTdXBwb3J0SW5mb1xufSA9IHJlcXVpcmVfc3VwcG9ydCgpO1xudmFyIGdldEZpbGVJbmZvID0gcmVxdWlyZV9nZXRfZmlsZV9pbmZvKCk7XG52YXIgc2hhcmVkVXRpbCA9IHJlcXVpcmVfdXRpbF9zaGFyZWQoKTtcbnZhciBwbHVnaW5zID0gcmVxdWlyZV9sb2FkX3BsdWdpbnMoKTtcbnZhciBjb25maWcgPSByZXF1aXJlX3Jlc29sdmVfY29uZmlnKCk7XG52YXIgZG9jID0gcmVxdWlyZShcIi4vZG9jLmpzXCIpO1xuZnVuY3Rpb24gX3dpdGhQbHVnaW5zKGZuLCBvcHRzQXJnSWR4ID0gMSkge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBvcHRzID0gYXJnc1tvcHRzQXJnSWR4XSB8fCB7fTtcbiAgICBhcmdzW29wdHNBcmdJZHhdID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRzKSwge30sIHtcbiAgICAgIHBsdWdpbnM6IHBsdWdpbnMubG9hZFBsdWdpbnMob3B0cy5wbHVnaW5zLCBvcHRzLnBsdWdpblNlYXJjaERpcnMpXG4gICAgfSk7XG4gICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICB9O1xufVxuZnVuY3Rpb24gd2l0aFBsdWdpbnMoZm4sIG9wdHNBcmdJZHgpIHtcbiAgY29uc3QgcmVzdWx0aW5nRm4gPSBfd2l0aFBsdWdpbnMoZm4sIG9wdHNBcmdJZHgpO1xuICBpZiAoZm4uc3luYykge1xuICAgIHJlc3VsdGluZ0ZuLnN5bmMgPSBfd2l0aFBsdWdpbnMoZm4uc3luYywgb3B0c0FyZ0lkeCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdGluZ0ZuO1xufVxudmFyIGZvcm1hdFdpdGhDdXJzb3IgPSB3aXRoUGx1Z2lucyhjb3JlLmZvcm1hdFdpdGhDdXJzb3IpO1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGZvcm1hdFdpdGhDdXJzb3IsXG4gIGZvcm1hdCh0ZXh0LCBvcHRzKSB7XG4gICAgcmV0dXJuIGZvcm1hdFdpdGhDdXJzb3IodGV4dCwgb3B0cykuZm9ybWF0dGVkO1xuICB9LFxuICBjaGVjayh0ZXh0LCBvcHRzKSB7XG4gICAgY29uc3Qge1xuICAgICAgZm9ybWF0dGVkXG4gICAgfSA9IGZvcm1hdFdpdGhDdXJzb3IodGV4dCwgb3B0cyk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZCA9PT0gdGV4dDtcbiAgfSxcbiAgZG9jLFxuICByZXNvbHZlQ29uZmlnOiBjb25maWcucmVzb2x2ZUNvbmZpZyxcbiAgcmVzb2x2ZUNvbmZpZ0ZpbGU6IGNvbmZpZy5yZXNvbHZlQ29uZmlnRmlsZSxcbiAgY2xlYXJDb25maWdDYWNoZSgpIHtcbiAgICBjb25maWcuY2xlYXJDYWNoZSgpO1xuICAgIHBsdWdpbnMuY2xlYXJDYWNoZSgpO1xuICB9LFxuICBnZXRGaWxlSW5mbzogd2l0aFBsdWdpbnMoZ2V0RmlsZUluZm8pLFxuICBnZXRTdXBwb3J0SW5mbzogd2l0aFBsdWdpbnMoZ2V0U3VwcG9ydEluZm8sIDApLFxuICB2ZXJzaW9uLFxuICB1dGlsOiBzaGFyZWRVdGlsLFxuICBfX2ludGVybmFsOiB7XG4gICAgZXJyb3JzOiByZXF1aXJlX2Vycm9ycygpLFxuICAgIGNvcmVPcHRpb25zOiByZXF1aXJlX2NvcmVfb3B0aW9ucygpLFxuICAgIGNyZWF0ZUlnbm9yZXI6IHJlcXVpcmVfY3JlYXRlX2lnbm9yZXIoKSxcbiAgICBvcHRpb25zTW9kdWxlOiByZXF1aXJlX29wdGlvbnMoKSxcbiAgICBvcHRpb25zTm9ybWFsaXplcjogcmVxdWlyZV9vcHRpb25zX25vcm1hbGl6ZXIoKSxcbiAgICB1dGlsczoge1xuICAgICAgYXJyYXlpZnk6IHJlcXVpcmVfYXJyYXlpZnkoKSxcbiAgICAgIGdldExhc3Q6IHJlcXVpcmVfZ2V0X2xhc3QoKSxcbiAgICAgIHBhcnRpdGlvbjogcmVxdWlyZV9wYXJ0aXRpb24oKSxcbiAgICAgIGlzTm9uRW1wdHlBcnJheTogcmVxdWlyZV91dGlsKCkuaXNOb25FbXB0eUFycmF5XG4gICAgfVxuICB9LFxuICBfX2RlYnVnOiB7XG4gICAgcGFyc2U6IHdpdGhQbHVnaW5zKGNvcmUucGFyc2UpLFxuICAgIGZvcm1hdEFTVDogd2l0aFBsdWdpbnMoY29yZS5mb3JtYXRBU1QpLFxuICAgIGZvcm1hdERvYzogd2l0aFBsdWdpbnMoY29yZS5mb3JtYXREb2MpLFxuICAgIHByaW50VG9Eb2M6IHdpdGhQbHVnaW5zKGNvcmUucHJpbnRUb0RvYyksXG4gICAgcHJpbnREb2NUb1N0cmluZzogd2l0aFBsdWdpbnMoY29yZS5wcmludERvY1RvU3RyaW5nKVxuICB9XG59O1xuIiwgIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tZW1iZXItYWNjZXNzaWJpbGl0eSAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICdAYWN0aW9ucy9naXRodWIvbGliL2NvbnRleHQnO1xuaW1wb3J0ICogYXMgbmNvbmYgZnJvbSAnbmNvbmYnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCBBY3Rpb24gZnJvbSAnLi9BY3Rpb24nO1xuaW1wb3J0IHsgcmVwb3NpdG9yeUZpbmRlciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgTG9nVGFzayBmcm9tICcuL2xvZ3Rhc2snO1xuaW1wb3J0IHsgd29ya2luZ0RpcmVjdG9yeSB9IGZyb20gJy4vd29ya2luZy1kaXJlY3RvcnknO1xuXG5jb25zdCBsb2cgPSBuZXcgTG9nVGFzaygnaW5wdXRzJyk7XG5wcm9jZXNzLmNoZGlyKHdvcmtpbmdEaXJlY3RvcnkoKSk7XG5jb25zdCBnaXRodWJFdmVudFBhdGggPSBwcm9jZXNzLmVudlsnR0lUSFVCX0VWRU5UX1BBVEgnXSA/PyAnJztcbmxldCBnaXRodWJFdmVudDogQ29udGV4dCB8IG51bGwgPSBudWxsO1xudHJ5IHtcbiAgZ2l0aHViRXZlbnQgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhnaXRodWJFdmVudFBhdGgsICd1dGY4JykpIGFzIENvbnRleHQ7XG59IGNhdGNoIHtcbiAgLy8gRmlsZSBub3QgdGhlcmVcbiAgbG9nLmRlYnVnKGBHSVRIVUJfRVZFTlRfUEFUSCBub3QgZm91bmQ6ICR7Z2l0aHViRXZlbnRQYXRofWApO1xufVxuY29uc3QgY29uZmlnRmlsZU5hbWUgPSAnLmdoYWRvY3MuanNvbic7XG5jb25zdCBwYXRoc0FjdGlvbiA9ICdwYXRoczphY3Rpb24nO1xuY29uc3QgcGF0aHNSZWFkbWUgPSAncGF0aHM6cmVhZG1lJztcbmV4cG9ydCBjb25zdCBjb25maWdLZXlzOiBzdHJpbmdbXSA9IFtcbiAgJ3NhdmUnLFxuICBwYXRoc0FjdGlvbixcbiAgcGF0aHNSZWFkbWUsXG4gICdzaG93X2xvZ28nLFxuICAndmVyc2lvbmluZzplbmFibGVkJyxcbiAgJ3ZlcnNpb25pbmc6b3ZlcnJpZGUnLFxuICAndmVyc2lvbmluZzpwcmVmaXgnLFxuICAndmVyc2lvbmluZzpicmFuY2gnLFxuICAnb3duZXInLFxuICAncmVwbycsXG4gICd0aXRsZV9wcmVmaXgnLFxuICAncHJldHR5Jyxcbl07XG5pbnRlcmZhY2UgS1ZQYWlyVHlwZSB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5wdXRzIHtcbiAgcHVibGljIGNvbmZpZzogbmNvbmYuUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb25maWcgPSBuZXcgbmNvbmYuUHJvdmlkZXIoKTtcbiAgICBjb25zdCByZXBvc2l0b3J5RGV0YWlsID0gcmVwb3NpdG9yeUZpbmRlcihudWxsLCBnaXRodWJFdmVudCk7XG4gICAgaWYgKHByb2Nlc3MuZW52WydHSVRIVUJfQUNUSU9OJ10pIHtcbiAgICAgIGxvZy5pbmZvKCdydW5uaW5nIGluIEdpdEh1YiBhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWcudXNlKCdtZW1vcnknKTtcbiAgICB0aGlzLmNvbmZpZy5lbnYoe1xuICAgICAgbG93ZXJDYXNlOiB0cnVlLFxuICAgICAgcGFyc2VWYWx1ZXM6IHRydWUsXG4gICAgICBtYXRjaDogL15JTlBVVF8vLFxuICAgICAgdHJhbnNmb3JtOiAob2JqOiBLVlBhaXJUeXBlKTogdW5kZWZpbmVkIHwgS1ZQYWlyVHlwZSA9PiB7XG4gICAgICAgIGlmIChvYmoua2V5LnN0YXJ0c1dpdGgoJ2lucHV0XycpKSB7XG4gICAgICAgICAgY29uc3QgbmV3T2JqOiBLVlBhaXJUeXBlID0ge1xuICAgICAgICAgICAga2V5OiBvYmoua2V5LFxuICAgICAgICAgICAgdmFsdWU6IG9iai52YWx1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGtleVBhcnNlZCA9IG9iai5rZXkucmVwbGFjZSgvXihJTlBVVHxpbnB1dClfLywgJycpO1xuICAgICAgICAgIHN3aXRjaCAoa2V5UGFyc2VkKSB7XG4gICAgICAgICAgICBjYXNlICdyZWFkbWUnOlxuICAgICAgICAgICAgICBuZXdPYmoua2V5ID0gcGF0aHNSZWFkbWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWN0aW9uJzpcbiAgICAgICAgICAgICAgbmV3T2JqLmtleSA9IHBhdGhzQWN0aW9uO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnNpb25pbmdfZW5hYmxlZCc6XG4gICAgICAgICAgICAgIG5ld09iai5rZXkgPSAndmVyc2lvbmluZzplbmFibGVkJztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJzaW9uX3ByZWZpeCc6XG4gICAgICAgICAgICAgIG5ld09iai5rZXkgPSAndmVyc2lvbmluZzpwcmVmaXgnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnNpb25pbmdfZGVmYXVsdF9icmFuY2gnOlxuICAgICAgICAgICAgICBuZXdPYmoua2V5ID0gJ3ZlcnNpb25pbmc6YnJhbmNoJztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJzaW9uX292ZXJyaWRlJzpcbiAgICAgICAgICAgICAgbmV3T2JqLmtleSA9ICd2ZXJzaW9uaW5nOm92ZXJyaWRlJztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBuZXdPYmoua2V5ID0ga2V5UGFyc2VkO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jb25maWcuc2V0KG5ld09iai5rZXksIG5ld09iai52YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIG5ld09iajtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZy5hcmd2KHtcbiAgICAgICdzYXZlJzoge1xuICAgICAgICBhbGlhczogJ3NhdmUnLFxuICAgICAgICBkZXNjcmliZTogYFNhdmUgdGhpcyBjb25maWcgdG8gJHtjb25maWdGaWxlTmFtZX1gLFxuICAgICAgICBwYXJzZVZhbHVlczogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgfSxcbiAgICAgICdwYXRoczphY3Rpb24nOiB7XG4gICAgICAgIGFsaWFzOiBbJ3BhdGhzQWN0aW9uJywgJ2FjdGlvbiddLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpYmU6ICdQYXRoIHRvIHRoZSBhY3Rpb24ueW1sJyxcbiAgICAgIH0sXG4gICAgICAncGF0aHM6cmVhZG1lJzoge1xuICAgICAgICBhbGlhczogWydwYXRoc1JlYWRtZScsICdyZWFkbWUnXSxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaWJlOiAnUGF0aCB0byB0aGUgUkVBRE1FIGZpbGUnLFxuICAgICAgfSxcbiAgICAgICdzaG93X2xvZ28nOiB7XG4gICAgICAgIGFsaWFzOiAnbG9nbycsXG4gICAgICAgIGRlc2NyaWJlOiBcIkRpc3BsYXkgdGhlIGFjdGlvbidzIGxvZ28gaW4gdGhlIFJFQURNRVwiLFxuICAgICAgfSxcbiAgICAgICdvd25lcic6IHtcbiAgICAgICAgYWxpYXM6ICdvd25lcicsXG4gICAgICAgIGRlc2NyaWJlOiAnVGhlIEdpdEh1YiBBY3Rpb24gcmVwb3NpdG9yeSBvd25lci4gaS5lOiBgYml0ZmxpZ2h0LWRldm9wc2AnLFxuICAgICAgfSxcbiAgICAgICdyZXBvJzoge1xuICAgICAgICBhbGlhczogJ3JlcG8nLFxuICAgICAgICBkZXNjcmliZTogJ1RoZSBHaXRIdWIgQWN0aW9uIHJlcG9zaXRvcnkgbmFtZS4gaS5lOiBgZ2l0aHViLWFjdGlvbi1yZWFkbWUtZ2VuZXJhdG9yYCcsXG4gICAgICB9LFxuICAgICAgJ3ByZXR0aWVyJzoge1xuICAgICAgICBhbGlhczogJ3ByZXR0eScsXG4gICAgICAgIGRlc2NyaWJlOiAnRm9ybWF0IHRoZSBtYXJrZG93biB1c2luZyBwcmV0dGllciBmb3JtYXR0ZXInLFxuICAgICAgICBwYXJzZVZhbHVlczogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgfSxcbiAgICAgICd2ZXJzaW9uaW5nOmVuYWJsZWQnOiB7XG4gICAgICAgIGFsaWFzOiBbJ3ZlcnNpb25pbmcnLCAndmVyc2lvbmluZ19lbmFibGVkJ10sXG4gICAgICAgIGRlc2NyaWJlOlxuICAgICAgICAgICdFbmFibGUgdGhlIHVwZGF0ZSBvZiB0aGUgdXNhZ2UgdmVyc2lvbiB0byBtYXRjaCB0aGUgbGF0ZXN0IHZlcnNpb24gaW4gdGhlIHBhY2thZ2UuanNvbiBmaWxlJyxcbiAgICAgICAgcGFyc2VWYWx1ZXM6IHRydWUsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIH0sXG4gICAgICAndmVyc2lvbmluZzpvdmVycmlkZSc6IHtcbiAgICAgICAgYWxpYXM6IFsnc2V0dmVyc2lvbicsICd2ZXJzaW9uaW5nX292ZXJyaWRlJywgJ3ZlcnNpb25fb3ZlcnJpZGUnXSxcbiAgICAgICAgZGVzY3JpYmU6ICdTZXQgYSBzcGVjaWZpYyB2ZXJzaW9uIHRvIGRpc3BsYXkgaW4gdGhlIFJFQURNRS5tZCcsXG4gICAgICAgIHBhcnNlVmFsdWVzOiB0cnVlLFxuICAgICAgfSxcbiAgICAgICd2ZXJzaW9uaW5nOnByZWZpeCc6IHtcbiAgICAgICAgYWxpYXM6IFsndnAnLCAndmVyc2lvbl9wcmVmaXgnXSxcbiAgICAgICAgZGVzY3JpYmU6IFwiUHJlZml4IHRoZSB2ZXJzaW9uIHdpdGggdGhpcyB2YWx1ZSAoaWYgaXQgaXNuJ3QgYWxyZWFkeSBwcmVmaXhlZClcIixcbiAgICAgICAgcGFyc2VWYWx1ZXM6IHRydWUsXG4gICAgICB9LFxuICAgICAgJ3ZlcnNpb25pbmc6YnJhbmNoJzoge1xuICAgICAgICBhbGlhczogWydicmFuY2gnLCAndmVyc2lvbmluZ19kZWZhdWx0X2JyYW5jaCddLFxuICAgICAgICBkZXNjcmliZTogJ0lmIHZlcnNpb25pbmcgaXMgZGlzYWJsZWQgc2hvdyB0aGlzIGJyYW5jaCBpbnN0ZWFkJyxcbiAgICAgICAgcGFyc2VWYWx1ZXM6IHRydWUsXG4gICAgICB9LFxuICAgICAgJ3RpdGxlX3ByZWZpeCc6IHtcbiAgICAgICAgYWxpYXM6IFsncHJlZml4JywgJ3RpdGxlX3ByZWZpeCddLFxuICAgICAgICBkZXNjcmliZTogJ0FkZCBhIHByZWZpeCB0byB0aGUgUkVBRE1FIHRpdGxlJyxcbiAgICAgICAgcGFyc2VWYWx1ZXM6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWcuZmlsZSh7IGZpbGU6IGNvbmZpZ0ZpbGVOYW1lLCBkaXI6IHdvcmtpbmdEaXJlY3RvcnkoKSB9KTtcbiAgICB0aGlzLmNvbmZpZy5kZWZhdWx0cyh7XG4gICAgICBzYXZlOiB0cnVlLFxuICAgICAgb3duZXI6IHJlcG9zaXRvcnlEZXRhaWw/Lm93bmVyLFxuICAgICAgcmVwbzogcmVwb3NpdG9yeURldGFpbD8ucmVwbyxcbiAgICAgIHBhdGhzOiB7XG4gICAgICAgIGFjdGlvbjogJ2FjdGlvbi55bWwnLFxuICAgICAgICByZWFkbWU6ICdSRUFETUUubWQnLFxuICAgICAgfSxcbiAgICAgIHNob3dfbG9nbzogdHJ1ZSxcbiAgICAgIHByZXR0eTogdHJ1ZSxcbiAgICAgIHZlcnNpb25pbmc6IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgb3ZlcnJpZGU6ICcnLFxuICAgICAgICBwcmVmaXg6ICd2JyxcbiAgICAgICAgYnJhbmNoOiAnbWFpbicsXG4gICAgICB9LFxuICAgICAgdGl0bGVfcHJlZml4OiAnR2l0SHViIEFjdGlvbjogJyxcbiAgICAgIHNlY3Rpb25zOiBbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ3VzYWdlJywgJ2lucHV0cycsICdvdXRwdXRzJywgJ2NvbnRlbnRzJ10sXG4gICAgfSk7XG4gICAgdGhpcy5jb25maWcucmVxdWlyZWQoWydvd25lcicsICdyZXBvJ10pO1xuICAgIGZvciAoY29uc3QgayBvZiBjb25maWdLZXlzKSB7XG4gICAgICBsb2cuZGVidWcoYCR7a306ICR7dGhpcy5jb25maWcuZ2V0KGspfWApO1xuICAgIH1cblxuICAgIHRoaXMuc2VjdGlvbnMgPSB0aGlzLmNvbmZpZy5nZXQoJ3NlY3Rpb25zJykgYXMgc3RyaW5nW107XG4gICAgdGhpcy5yZWFkbWVQYXRoID0gcGF0aC5yZWxhdGl2ZSh3b3JraW5nRGlyZWN0b3J5KCksIHRoaXMuY29uZmlnLmdldChwYXRoc1JlYWRtZSkgYXMgc3RyaW5nKTtcbiAgICBjb25zdCBhY3Rpb25QYXRoID0gcGF0aC5yZWxhdGl2ZSh3b3JraW5nRGlyZWN0b3J5KCksIHRoaXMuY29uZmlnLmdldChwYXRoc0FjdGlvbikgYXMgc3RyaW5nKTtcblxuICAgIHRoaXMuYWN0aW9uID0gbmV3IEFjdGlvbihhY3Rpb25QYXRoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWN0aW9uczogc3RyaW5nW107XG5cbiAgcHVibGljIHJlYWRtZVBhdGg6IHN0cmluZztcblxuICBwdWJsaWMgYWN0aW9uOiBBY3Rpb247XG59XG4iLCAiXG4vKiEganMteWFtbCA0LjEuMCBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwgQGxpY2Vuc2UgTUlUICovXG5mdW5jdGlvbiBpc05vdGhpbmcoc3ViamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBzdWJqZWN0ID09PSAndW5kZWZpbmVkJykgfHwgKHN1YmplY3QgPT09IG51bGwpO1xufVxuXG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHN1YmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygc3ViamVjdCA9PT0gJ29iamVjdCcpICYmIChzdWJqZWN0ICE9PSBudWxsKTtcbn1cblxuXG5mdW5jdGlvbiB0b0FycmF5KHNlcXVlbmNlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNlcXVlbmNlKSkgcmV0dXJuIHNlcXVlbmNlO1xuICBlbHNlIGlmIChpc05vdGhpbmcoc2VxdWVuY2UpKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIFsgc2VxdWVuY2UgXTtcbn1cblxuXG5mdW5jdGlvbiBleHRlbmQodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGluZGV4LCBsZW5ndGgsIGtleSwgc291cmNlS2V5cztcblxuICBpZiAoc291cmNlKSB7XG4gICAgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuXG5mdW5jdGlvbiByZXBlYXQoc3RyaW5nLCBjb3VudCkge1xuICB2YXIgcmVzdWx0ID0gJycsIGN5Y2xlO1xuXG4gIGZvciAoY3ljbGUgPSAwOyBjeWNsZSA8IGNvdW50OyBjeWNsZSArPSAxKSB7XG4gICAgcmVzdWx0ICs9IHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZVplcm8obnVtYmVyKSB7XG4gIHJldHVybiAobnVtYmVyID09PSAwKSAmJiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSAxIC8gbnVtYmVyKTtcbn1cblxuXG52YXIgaXNOb3RoaW5nXzEgICAgICA9IGlzTm90aGluZztcbnZhciBpc09iamVjdF8xICAgICAgID0gaXNPYmplY3Q7XG52YXIgdG9BcnJheV8xICAgICAgICA9IHRvQXJyYXk7XG52YXIgcmVwZWF0XzEgICAgICAgICA9IHJlcGVhdDtcbnZhciBpc05lZ2F0aXZlWmVyb18xID0gaXNOZWdhdGl2ZVplcm87XG52YXIgZXh0ZW5kXzEgICAgICAgICA9IGV4dGVuZDtcblxudmFyIGNvbW1vbiA9IHtcblx0aXNOb3RoaW5nOiBpc05vdGhpbmdfMSxcblx0aXNPYmplY3Q6IGlzT2JqZWN0XzEsXG5cdHRvQXJyYXk6IHRvQXJyYXlfMSxcblx0cmVwZWF0OiByZXBlYXRfMSxcblx0aXNOZWdhdGl2ZVplcm86IGlzTmVnYXRpdmVaZXJvXzEsXG5cdGV4dGVuZDogZXh0ZW5kXzFcbn07XG5cbi8vIFlBTUwgZXJyb3IgY2xhc3MuIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODQ1ODk4NFxuXG5cbmZ1bmN0aW9uIGZvcm1hdEVycm9yKGV4Y2VwdGlvbiwgY29tcGFjdCkge1xuICB2YXIgd2hlcmUgPSAnJywgbWVzc2FnZSA9IGV4Y2VwdGlvbi5yZWFzb24gfHwgJyh1bmtub3duIHJlYXNvbiknO1xuXG4gIGlmICghZXhjZXB0aW9uLm1hcmspIHJldHVybiBtZXNzYWdlO1xuXG4gIGlmIChleGNlcHRpb24ubWFyay5uYW1lKSB7XG4gICAgd2hlcmUgKz0gJ2luIFwiJyArIGV4Y2VwdGlvbi5tYXJrLm5hbWUgKyAnXCIgJztcbiAgfVxuXG4gIHdoZXJlICs9ICcoJyArIChleGNlcHRpb24ubWFyay5saW5lICsgMSkgKyAnOicgKyAoZXhjZXB0aW9uLm1hcmsuY29sdW1uICsgMSkgKyAnKSc7XG5cbiAgaWYgKCFjb21wYWN0ICYmIGV4Y2VwdGlvbi5tYXJrLnNuaXBwZXQpIHtcbiAgICB3aGVyZSArPSAnXFxuXFxuJyArIGV4Y2VwdGlvbi5tYXJrLnNuaXBwZXQ7XG4gIH1cblxuICByZXR1cm4gbWVzc2FnZSArICcgJyArIHdoZXJlO1xufVxuXG5cbmZ1bmN0aW9uIFlBTUxFeGNlcHRpb24kMShyZWFzb24sIG1hcmspIHtcbiAgLy8gU3VwZXIgY29uc3RydWN0b3JcbiAgRXJyb3IuY2FsbCh0aGlzKTtcblxuICB0aGlzLm5hbWUgPSAnWUFNTEV4Y2VwdGlvbic7XG4gIHRoaXMucmVhc29uID0gcmVhc29uO1xuICB0aGlzLm1hcmsgPSBtYXJrO1xuICB0aGlzLm1lc3NhZ2UgPSBmb3JtYXRFcnJvcih0aGlzLCBmYWxzZSk7XG5cbiAgLy8gSW5jbHVkZSBzdGFjayB0cmFjZSBpbiBlcnJvciBvYmplY3RcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgLy8gQ2hyb21lIGFuZCBOb2RlSlNcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGRiwgSUUgMTArIGFuZCBTYWZhcmkgNisuIEZhbGxiYWNrIGZvciBvdGhlcnNcbiAgICB0aGlzLnN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjayB8fCAnJztcbiAgfVxufVxuXG5cbi8vIEluaGVyaXQgZnJvbSBFcnJvclxuWUFNTEV4Y2VwdGlvbiQxLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbllBTUxFeGNlcHRpb24kMS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBZQU1MRXhjZXB0aW9uJDE7XG5cblxuWUFNTEV4Y2VwdGlvbiQxLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGNvbXBhY3QpIHtcbiAgcmV0dXJuIHRoaXMubmFtZSArICc6ICcgKyBmb3JtYXRFcnJvcih0aGlzLCBjb21wYWN0KTtcbn07XG5cblxudmFyIGV4Y2VwdGlvbiA9IFlBTUxFeGNlcHRpb24kMTtcblxuLy8gZ2V0IHNuaXBwZXQgZm9yIGEgc2luZ2xlIGxpbmUsIHJlc3BlY3RpbmcgbWF4TGVuZ3RoXG5mdW5jdGlvbiBnZXRMaW5lKGJ1ZmZlciwgbGluZVN0YXJ0LCBsaW5lRW5kLCBwb3NpdGlvbiwgbWF4TGluZUxlbmd0aCkge1xuICB2YXIgaGVhZCA9ICcnO1xuICB2YXIgdGFpbCA9ICcnO1xuICB2YXIgbWF4SGFsZkxlbmd0aCA9IE1hdGguZmxvb3IobWF4TGluZUxlbmd0aCAvIDIpIC0gMTtcblxuICBpZiAocG9zaXRpb24gLSBsaW5lU3RhcnQgPiBtYXhIYWxmTGVuZ3RoKSB7XG4gICAgaGVhZCA9ICcgLi4uICc7XG4gICAgbGluZVN0YXJ0ID0gcG9zaXRpb24gLSBtYXhIYWxmTGVuZ3RoICsgaGVhZC5sZW5ndGg7XG4gIH1cblxuICBpZiAobGluZUVuZCAtIHBvc2l0aW9uID4gbWF4SGFsZkxlbmd0aCkge1xuICAgIHRhaWwgPSAnIC4uLic7XG4gICAgbGluZUVuZCA9IHBvc2l0aW9uICsgbWF4SGFsZkxlbmd0aCAtIHRhaWwubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdHI6IGhlYWQgKyBidWZmZXIuc2xpY2UobGluZVN0YXJ0LCBsaW5lRW5kKS5yZXBsYWNlKC9cXHQvZywgJ1x1MjE5MicpICsgdGFpbCxcbiAgICBwb3M6IHBvc2l0aW9uIC0gbGluZVN0YXJ0ICsgaGVhZC5sZW5ndGggLy8gcmVsYXRpdmUgcG9zaXRpb25cbiAgfTtcbn1cblxuXG5mdW5jdGlvbiBwYWRTdGFydChzdHJpbmcsIG1heCkge1xuICByZXR1cm4gY29tbW9uLnJlcGVhdCgnICcsIG1heCAtIHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xufVxuXG5cbmZ1bmN0aW9uIG1ha2VTbmlwcGV0KG1hcmssIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IE9iamVjdC5jcmVhdGUob3B0aW9ucyB8fCBudWxsKTtcblxuICBpZiAoIW1hcmsuYnVmZmVyKSByZXR1cm4gbnVsbDtcblxuICBpZiAoIW9wdGlvbnMubWF4TGVuZ3RoKSBvcHRpb25zLm1heExlbmd0aCA9IDc5O1xuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5kZW50ICAgICAgIT09ICdudW1iZXInKSBvcHRpb25zLmluZGVudCAgICAgID0gMTtcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmxpbmVzQmVmb3JlICE9PSAnbnVtYmVyJykgb3B0aW9ucy5saW5lc0JlZm9yZSA9IDM7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5saW5lc0FmdGVyICAhPT0gJ251bWJlcicpIG9wdGlvbnMubGluZXNBZnRlciAgPSAyO1xuXG4gIHZhciByZSA9IC9cXHI/XFxufFxccnxcXDAvZztcbiAgdmFyIGxpbmVTdGFydHMgPSBbIDAgXTtcbiAgdmFyIGxpbmVFbmRzID0gW107XG4gIHZhciBtYXRjaDtcbiAgdmFyIGZvdW5kTGluZU5vID0gLTE7XG5cbiAgd2hpbGUgKChtYXRjaCA9IHJlLmV4ZWMobWFyay5idWZmZXIpKSkge1xuICAgIGxpbmVFbmRzLnB1c2gobWF0Y2guaW5kZXgpO1xuICAgIGxpbmVTdGFydHMucHVzaChtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG5cbiAgICBpZiAobWFyay5wb3NpdGlvbiA8PSBtYXRjaC5pbmRleCAmJiBmb3VuZExpbmVObyA8IDApIHtcbiAgICAgIGZvdW5kTGluZU5vID0gbGluZVN0YXJ0cy5sZW5ndGggLSAyO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmb3VuZExpbmVObyA8IDApIGZvdW5kTGluZU5vID0gbGluZVN0YXJ0cy5sZW5ndGggLSAxO1xuXG4gIHZhciByZXN1bHQgPSAnJywgaSwgbGluZTtcbiAgdmFyIGxpbmVOb0xlbmd0aCA9IE1hdGgubWluKG1hcmsubGluZSArIG9wdGlvbnMubGluZXNBZnRlciwgbGluZUVuZHMubGVuZ3RoKS50b1N0cmluZygpLmxlbmd0aDtcbiAgdmFyIG1heExpbmVMZW5ndGggPSBvcHRpb25zLm1heExlbmd0aCAtIChvcHRpb25zLmluZGVudCArIGxpbmVOb0xlbmd0aCArIDMpO1xuXG4gIGZvciAoaSA9IDE7IGkgPD0gb3B0aW9ucy5saW5lc0JlZm9yZTsgaSsrKSB7XG4gICAgaWYgKGZvdW5kTGluZU5vIC0gaSA8IDApIGJyZWFrO1xuICAgIGxpbmUgPSBnZXRMaW5lKFxuICAgICAgbWFyay5idWZmZXIsXG4gICAgICBsaW5lU3RhcnRzW2ZvdW5kTGluZU5vIC0gaV0sXG4gICAgICBsaW5lRW5kc1tmb3VuZExpbmVObyAtIGldLFxuICAgICAgbWFyay5wb3NpdGlvbiAtIChsaW5lU3RhcnRzW2ZvdW5kTGluZU5vXSAtIGxpbmVTdGFydHNbZm91bmRMaW5lTm8gLSBpXSksXG4gICAgICBtYXhMaW5lTGVuZ3RoXG4gICAgKTtcbiAgICByZXN1bHQgPSBjb21tb24ucmVwZWF0KCcgJywgb3B0aW9ucy5pbmRlbnQpICsgcGFkU3RhcnQoKG1hcmsubGluZSAtIGkgKyAxKS50b1N0cmluZygpLCBsaW5lTm9MZW5ndGgpICtcbiAgICAgICcgfCAnICsgbGluZS5zdHIgKyAnXFxuJyArIHJlc3VsdDtcbiAgfVxuXG4gIGxpbmUgPSBnZXRMaW5lKG1hcmsuYnVmZmVyLCBsaW5lU3RhcnRzW2ZvdW5kTGluZU5vXSwgbGluZUVuZHNbZm91bmRMaW5lTm9dLCBtYXJrLnBvc2l0aW9uLCBtYXhMaW5lTGVuZ3RoKTtcbiAgcmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJyAnLCBvcHRpb25zLmluZGVudCkgKyBwYWRTdGFydCgobWFyay5saW5lICsgMSkudG9TdHJpbmcoKSwgbGluZU5vTGVuZ3RoKSArXG4gICAgJyB8ICcgKyBsaW5lLnN0ciArICdcXG4nO1xuICByZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnLScsIG9wdGlvbnMuaW5kZW50ICsgbGluZU5vTGVuZ3RoICsgMyArIGxpbmUucG9zKSArICdeJyArICdcXG4nO1xuXG4gIGZvciAoaSA9IDE7IGkgPD0gb3B0aW9ucy5saW5lc0FmdGVyOyBpKyspIHtcbiAgICBpZiAoZm91bmRMaW5lTm8gKyBpID49IGxpbmVFbmRzLmxlbmd0aCkgYnJlYWs7XG4gICAgbGluZSA9IGdldExpbmUoXG4gICAgICBtYXJrLmJ1ZmZlcixcbiAgICAgIGxpbmVTdGFydHNbZm91bmRMaW5lTm8gKyBpXSxcbiAgICAgIGxpbmVFbmRzW2ZvdW5kTGluZU5vICsgaV0sXG4gICAgICBtYXJrLnBvc2l0aW9uIC0gKGxpbmVTdGFydHNbZm91bmRMaW5lTm9dIC0gbGluZVN0YXJ0c1tmb3VuZExpbmVObyArIGldKSxcbiAgICAgIG1heExpbmVMZW5ndGhcbiAgICApO1xuICAgIHJlc3VsdCArPSBjb21tb24ucmVwZWF0KCcgJywgb3B0aW9ucy5pbmRlbnQpICsgcGFkU3RhcnQoKG1hcmsubGluZSArIGkgKyAxKS50b1N0cmluZygpLCBsaW5lTm9MZW5ndGgpICtcbiAgICAgICcgfCAnICsgbGluZS5zdHIgKyAnXFxuJztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQucmVwbGFjZSgvXFxuJC8sICcnKTtcbn1cblxuXG52YXIgc25pcHBldCA9IG1ha2VTbmlwcGV0O1xuXG52YXIgVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TID0gW1xuICAna2luZCcsXG4gICdtdWx0aScsXG4gICdyZXNvbHZlJyxcbiAgJ2NvbnN0cnVjdCcsXG4gICdpbnN0YW5jZU9mJyxcbiAgJ3ByZWRpY2F0ZScsXG4gICdyZXByZXNlbnQnLFxuICAncmVwcmVzZW50TmFtZScsXG4gICdkZWZhdWx0U3R5bGUnLFxuICAnc3R5bGVBbGlhc2VzJ1xuXTtcblxudmFyIFlBTUxfTk9ERV9LSU5EUyA9IFtcbiAgJ3NjYWxhcicsXG4gICdzZXF1ZW5jZScsXG4gICdtYXBwaW5nJ1xuXTtcblxuZnVuY3Rpb24gY29tcGlsZVN0eWxlQWxpYXNlcyhtYXApIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuXG4gIGlmIChtYXAgIT09IG51bGwpIHtcbiAgICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgICBtYXBbc3R5bGVdLmZvckVhY2goZnVuY3Rpb24gKGFsaWFzKSB7XG4gICAgICAgIHJlc3VsdFtTdHJpbmcoYWxpYXMpXSA9IHN0eWxlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBUeXBlJDEodGFnLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAoVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCdVbmtub3duIG9wdGlvbiBcIicgKyBuYW1lICsgJ1wiIGlzIG1ldCBpbiBkZWZpbml0aW9uIG9mIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gICAgfVxuICB9KTtcblxuICAvLyBUT0RPOiBBZGQgdGFnIGZvcm1hdCBjaGVjay5cbiAgdGhpcy5vcHRpb25zICAgICAgID0gb3B0aW9uczsgLy8ga2VlcCBvcmlnaW5hbCBvcHRpb25zIGluIGNhc2UgdXNlciB3YW50cyB0byBleHRlbmQgdGhpcyB0eXBlIGxhdGVyXG4gIHRoaXMudGFnICAgICAgICAgICA9IHRhZztcbiAgdGhpcy5raW5kICAgICAgICAgID0gb3B0aW9uc1sna2luZCddICAgICAgICAgIHx8IG51bGw7XG4gIHRoaXMucmVzb2x2ZSAgICAgICA9IG9wdGlvbnNbJ3Jlc29sdmUnXSAgICAgICB8fCBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9O1xuICB0aGlzLmNvbnN0cnVjdCAgICAgPSBvcHRpb25zWydjb25zdHJ1Y3QnXSAgICAgfHwgZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGE7IH07XG4gIHRoaXMuaW5zdGFuY2VPZiAgICA9IG9wdGlvbnNbJ2luc3RhbmNlT2YnXSAgICB8fCBudWxsO1xuICB0aGlzLnByZWRpY2F0ZSAgICAgPSBvcHRpb25zWydwcmVkaWNhdGUnXSAgICAgfHwgbnVsbDtcbiAgdGhpcy5yZXByZXNlbnQgICAgID0gb3B0aW9uc1sncmVwcmVzZW50J10gICAgIHx8IG51bGw7XG4gIHRoaXMucmVwcmVzZW50TmFtZSA9IG9wdGlvbnNbJ3JlcHJlc2VudE5hbWUnXSB8fCBudWxsO1xuICB0aGlzLmRlZmF1bHRTdHlsZSAgPSBvcHRpb25zWydkZWZhdWx0U3R5bGUnXSAgfHwgbnVsbDtcbiAgdGhpcy5tdWx0aSAgICAgICAgID0gb3B0aW9uc1snbXVsdGknXSAgICAgICAgIHx8IGZhbHNlO1xuICB0aGlzLnN0eWxlQWxpYXNlcyAgPSBjb21waWxlU3R5bGVBbGlhc2VzKG9wdGlvbnNbJ3N0eWxlQWxpYXNlcyddIHx8IG51bGwpO1xuXG4gIGlmIChZQU1MX05PREVfS0lORFMuaW5kZXhPZih0aGlzLmtpbmQpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1Vua25vd24ga2luZCBcIicgKyB0aGlzLmtpbmQgKyAnXCIgaXMgc3BlY2lmaWVkIGZvciBcIicgKyB0YWcgKyAnXCIgWUFNTCB0eXBlLicpO1xuICB9XG59XG5cbnZhciB0eXBlID0gVHlwZSQxO1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4qL1xuXG5cblxuXG5cbmZ1bmN0aW9uIGNvbXBpbGVMaXN0KHNjaGVtYSwgbmFtZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgc2NoZW1hW25hbWVdLmZvckVhY2goZnVuY3Rpb24gKGN1cnJlbnRUeXBlKSB7XG4gICAgdmFyIG5ld0luZGV4ID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgIHJlc3VsdC5mb3JFYWNoKGZ1bmN0aW9uIChwcmV2aW91c1R5cGUsIHByZXZpb3VzSW5kZXgpIHtcbiAgICAgIGlmIChwcmV2aW91c1R5cGUudGFnID09PSBjdXJyZW50VHlwZS50YWcgJiZcbiAgICAgICAgICBwcmV2aW91c1R5cGUua2luZCA9PT0gY3VycmVudFR5cGUua2luZCAmJlxuICAgICAgICAgIHByZXZpb3VzVHlwZS5tdWx0aSA9PT0gY3VycmVudFR5cGUubXVsdGkpIHtcblxuICAgICAgICBuZXdJbmRleCA9IHByZXZpb3VzSW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXN1bHRbbmV3SW5kZXhdID0gY3VycmVudFR5cGU7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZnVuY3Rpb24gY29tcGlsZU1hcCgvKiBsaXN0cy4uLiAqLykge1xuICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICBzY2FsYXI6IHt9LFxuICAgICAgICBzZXF1ZW5jZToge30sXG4gICAgICAgIG1hcHBpbmc6IHt9LFxuICAgICAgICBmYWxsYmFjazoge30sXG4gICAgICAgIG11bHRpOiB7XG4gICAgICAgICAgc2NhbGFyOiBbXSxcbiAgICAgICAgICBzZXF1ZW5jZTogW10sXG4gICAgICAgICAgbWFwcGluZzogW10sXG4gICAgICAgICAgZmFsbGJhY2s6IFtdXG4gICAgICAgIH1cbiAgICAgIH0sIGluZGV4LCBsZW5ndGg7XG5cbiAgZnVuY3Rpb24gY29sbGVjdFR5cGUodHlwZSkge1xuICAgIGlmICh0eXBlLm11bHRpKSB7XG4gICAgICByZXN1bHQubXVsdGlbdHlwZS5raW5kXS5wdXNoKHR5cGUpO1xuICAgICAgcmVzdWx0Lm11bHRpWydmYWxsYmFjayddLnB1c2godHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFt0eXBlLmtpbmRdW3R5cGUudGFnXSA9IHJlc3VsdFsnZmFsbGJhY2snXVt0eXBlLnRhZ10gPSB0eXBlO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGFyZ3VtZW50c1tpbmRleF0uZm9yRWFjaChjb2xsZWN0VHlwZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBTY2hlbWEkMShkZWZpbml0aW9uKSB7XG4gIHJldHVybiB0aGlzLmV4dGVuZChkZWZpbml0aW9uKTtcbn1cblxuXG5TY2hlbWEkMS5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24gZXh0ZW5kKGRlZmluaXRpb24pIHtcbiAgdmFyIGltcGxpY2l0ID0gW107XG4gIHZhciBleHBsaWNpdCA9IFtdO1xuXG4gIGlmIChkZWZpbml0aW9uIGluc3RhbmNlb2YgdHlwZSkge1xuICAgIC8vIFNjaGVtYS5leHRlbmQodHlwZSlcbiAgICBleHBsaWNpdC5wdXNoKGRlZmluaXRpb24pO1xuXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkZWZpbml0aW9uKSkge1xuICAgIC8vIFNjaGVtYS5leHRlbmQoWyB0eXBlMSwgdHlwZTIsIC4uLiBdKVxuICAgIGV4cGxpY2l0ID0gZXhwbGljaXQuY29uY2F0KGRlZmluaXRpb24pO1xuXG4gIH0gZWxzZSBpZiAoZGVmaW5pdGlvbiAmJiAoQXJyYXkuaXNBcnJheShkZWZpbml0aW9uLmltcGxpY2l0KSB8fCBBcnJheS5pc0FycmF5KGRlZmluaXRpb24uZXhwbGljaXQpKSkge1xuICAgIC8vIFNjaGVtYS5leHRlbmQoeyBleHBsaWNpdDogWyB0eXBlMSwgdHlwZTIsIC4uLiBdLCBpbXBsaWNpdDogWyB0eXBlMSwgdHlwZTIsIC4uLiBdIH0pXG4gICAgaWYgKGRlZmluaXRpb24uaW1wbGljaXQpIGltcGxpY2l0ID0gaW1wbGljaXQuY29uY2F0KGRlZmluaXRpb24uaW1wbGljaXQpO1xuICAgIGlmIChkZWZpbml0aW9uLmV4cGxpY2l0KSBleHBsaWNpdCA9IGV4cGxpY2l0LmNvbmNhdChkZWZpbml0aW9uLmV4cGxpY2l0KTtcblxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1NjaGVtYS5leHRlbmQgYXJndW1lbnQgc2hvdWxkIGJlIGEgVHlwZSwgWyBUeXBlIF0sICcgK1xuICAgICAgJ29yIGEgc2NoZW1hIGRlZmluaXRpb24gKHsgaW1wbGljaXQ6IFsuLi5dLCBleHBsaWNpdDogWy4uLl0gfSknKTtcbiAgfVxuXG4gIGltcGxpY2l0LmZvckVhY2goZnVuY3Rpb24gKHR5cGUkMSkge1xuICAgIGlmICghKHR5cGUkMSBpbnN0YW5jZW9mIHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCdTcGVjaWZpZWQgbGlzdCBvZiBZQU1MIHR5cGVzIChvciBhIHNpbmdsZSBUeXBlIG9iamVjdCkgY29udGFpbnMgYSBub24tVHlwZSBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUkMS5sb2FkS2luZCAmJiB0eXBlJDEubG9hZEtpbmQgIT09ICdzY2FsYXInKSB7XG4gICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCdUaGVyZSBpcyBhIG5vbi1zY2FsYXIgdHlwZSBpbiB0aGUgaW1wbGljaXQgbGlzdCBvZiBhIHNjaGVtYS4gSW1wbGljaXQgcmVzb2x2aW5nIG9mIHN1Y2ggdHlwZXMgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSQxLm11bHRpKSB7XG4gICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCdUaGVyZSBpcyBhIG11bHRpIHR5cGUgaW4gdGhlIGltcGxpY2l0IGxpc3Qgb2YgYSBzY2hlbWEuIE11bHRpIHRhZ3MgY2FuIG9ubHkgYmUgbGlzdGVkIGFzIGV4cGxpY2l0LicpO1xuICAgIH1cbiAgfSk7XG5cbiAgZXhwbGljaXQuZm9yRWFjaChmdW5jdGlvbiAodHlwZSQxKSB7XG4gICAgaWYgKCEodHlwZSQxIGluc3RhbmNlb2YgdHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1NwZWNpZmllZCBsaXN0IG9mIFlBTUwgdHlwZXMgKG9yIGEgc2luZ2xlIFR5cGUgb2JqZWN0KSBjb250YWlucyBhIG5vbi1UeXBlIG9iamVjdC4nKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciByZXN1bHQgPSBPYmplY3QuY3JlYXRlKFNjaGVtYSQxLnByb3RvdHlwZSk7XG5cbiAgcmVzdWx0LmltcGxpY2l0ID0gKHRoaXMuaW1wbGljaXQgfHwgW10pLmNvbmNhdChpbXBsaWNpdCk7XG4gIHJlc3VsdC5leHBsaWNpdCA9ICh0aGlzLmV4cGxpY2l0IHx8IFtdKS5jb25jYXQoZXhwbGljaXQpO1xuXG4gIHJlc3VsdC5jb21waWxlZEltcGxpY2l0ID0gY29tcGlsZUxpc3QocmVzdWx0LCAnaW1wbGljaXQnKTtcbiAgcmVzdWx0LmNvbXBpbGVkRXhwbGljaXQgPSBjb21waWxlTGlzdChyZXN1bHQsICdleHBsaWNpdCcpO1xuICByZXN1bHQuY29tcGlsZWRUeXBlTWFwICA9IGNvbXBpbGVNYXAocmVzdWx0LmNvbXBpbGVkSW1wbGljaXQsIHJlc3VsdC5jb21waWxlZEV4cGxpY2l0KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG52YXIgc2NoZW1hID0gU2NoZW1hJDE7XG5cbnZhciBzdHIgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c3RyJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiAnJzsgfVxufSk7XG5cbnZhciBzZXEgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c2VxJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdOyB9XG59KTtcblxudmFyIG1hcCA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptYXAnLCB7XG4gIGtpbmQ6ICdtYXBwaW5nJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTsgfVxufSk7XG5cbnZhciBmYWlsc2FmZSA9IG5ldyBzY2hlbWEoe1xuICBleHBsaWNpdDogW1xuICAgIHN0cixcbiAgICBzZXEsXG4gICAgbWFwXG4gIF1cbn0pO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE51bGwoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiAobWF4ID09PSAxICYmIGRhdGEgPT09ICd+JykgfHxcbiAgICAgICAgIChtYXggPT09IDQgJiYgKGRhdGEgPT09ICdudWxsJyB8fCBkYXRhID09PSAnTnVsbCcgfHwgZGF0YSA9PT0gJ05VTEwnKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNOdWxsKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09PSBudWxsO1xufVxuXG52YXIgX251bGwgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bnVsbCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sTnVsbCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sTnVsbCxcbiAgcHJlZGljYXRlOiBpc051bGwsXG4gIHJlcHJlc2VudDoge1xuICAgIGNhbm9uaWNhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ34nOyAgICB9LFxuICAgIGxvd2VyY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ251bGwnOyB9LFxuICAgIHVwcGVyY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ05VTEwnOyB9LFxuICAgIGNhbWVsY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ051bGwnOyB9LFxuICAgIGVtcHR5OiAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gJyc7ICAgICB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEJvb2xlYW4oZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aDtcblxuICByZXR1cm4gKG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gJ3RydWUnIHx8IGRhdGEgPT09ICdUcnVlJyB8fCBkYXRhID09PSAnVFJVRScpKSB8fFxuICAgICAgICAgKG1heCA9PT0gNSAmJiAoZGF0YSA9PT0gJ2ZhbHNlJyB8fCBkYXRhID09PSAnRmFsc2UnIHx8IGRhdGEgPT09ICdGQUxTRScpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEJvb2xlYW4oZGF0YSkge1xuICByZXR1cm4gZGF0YSA9PT0gJ3RydWUnIHx8XG4gICAgICAgICBkYXRhID09PSAnVHJ1ZScgfHxcbiAgICAgICAgIGRhdGEgPT09ICdUUlVFJztcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbn1cblxudmFyIGJvb2wgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQm9vbGVhbixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sQm9vbGVhbixcbiAgcHJlZGljYXRlOiBpc0Jvb2xlYW4sXG4gIHJlcHJlc2VudDoge1xuICAgIGxvd2VyY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ3RydWUnIDogJ2ZhbHNlJzsgfSxcbiAgICB1cHBlcmNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICdUUlVFJyA6ICdGQUxTRSc7IH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAnVHJ1ZScgOiAnRmFsc2UnOyB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuXG5mdW5jdGlvbiBpc0hleENvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHx8XG4gICAgICAgICAoKDB4NDEvKiBBICovIDw9IGMpICYmIChjIDw9IDB4NDYvKiBGICovKSkgfHxcbiAgICAgICAgICgoMHg2MS8qIGEgKi8gPD0gYykgJiYgKGMgPD0gMHg2Ni8qIGYgKi8pKTtcbn1cblxuZnVuY3Rpb24gaXNPY3RDb2RlKGMpIHtcbiAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzNy8qIDcgKi8pKTtcbn1cblxuZnVuY3Rpb24gaXNEZWNDb2RlKGMpIHtcbiAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxJbnRlZ2VyKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGgsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBoYXNEaWdpdHMgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIGlmICghbWF4KSByZXR1cm4gZmFsc2U7XG5cbiAgY2ggPSBkYXRhW2luZGV4XTtcblxuICAvLyBzaWduXG4gIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpIHtcbiAgICBjaCA9IGRhdGFbKytpbmRleF07XG4gIH1cblxuICBpZiAoY2ggPT09ICcwJykge1xuICAgIC8vIDBcbiAgICBpZiAoaW5kZXggKyAxID09PSBtYXgpIHJldHVybiB0cnVlO1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcblxuICAgIC8vIGJhc2UgMiwgYmFzZSA4LCBiYXNlIDE2XG5cbiAgICBpZiAoY2ggPT09ICdiJykge1xuICAgICAgLy8gYmFzZSAyXG4gICAgICBpbmRleCsrO1xuXG4gICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoY2ggIT09ICcwJyAmJiBjaCAhPT0gJzEnKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gICAgfVxuXG5cbiAgICBpZiAoY2ggPT09ICd4Jykge1xuICAgICAgLy8gYmFzZSAxNlxuICAgICAgaW5kZXgrKztcblxuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFpc0hleENvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG5cblxuICAgIGlmIChjaCA9PT0gJ28nKSB7XG4gICAgICAvLyBiYXNlIDhcbiAgICAgIGluZGV4Kys7XG5cbiAgICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICAgIGlmICghaXNPY3RDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gICAgfVxuICB9XG5cbiAgLy8gYmFzZSAxMCAoZXhjZXB0IDApXG5cbiAgLy8gdmFsdWUgc2hvdWxkIG5vdCBzdGFydCB3aXRoIGBfYDtcbiAgaWYgKGNoID09PSAnXycpIHJldHVybiBmYWxzZTtcblxuICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICBpZiAoIWlzRGVjQ29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICB9XG5cbiAgLy8gU2hvdWxkIGhhdmUgZGlnaXRzIGFuZCBzaG91bGQgbm90IGVuZCB3aXRoIGBfYFxuICBpZiAoIWhhc0RpZ2l0cyB8fCBjaCA9PT0gJ18nKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxJbnRlZ2VyKGRhdGEpIHtcbiAgdmFyIHZhbHVlID0gZGF0YSwgc2lnbiA9IDEsIGNoO1xuXG4gIGlmICh2YWx1ZS5pbmRleE9mKCdfJykgIT09IC0xKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9fL2csICcnKTtcbiAgfVxuXG4gIGNoID0gdmFsdWVbMF07XG5cbiAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgIGlmIChjaCA9PT0gJy0nKSBzaWduID0gLTE7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgICBjaCA9IHZhbHVlWzBdO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnMCcpIHJldHVybiAwO1xuXG4gIGlmIChjaCA9PT0gJzAnKSB7XG4gICAgaWYgKHZhbHVlWzFdID09PSAnYicpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIDIpO1xuICAgIGlmICh2YWx1ZVsxXSA9PT0gJ3gnKSByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCAxNik7XG4gICAgaWYgKHZhbHVlWzFdID09PSAnbycpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIDgpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgMTApO1xufVxuXG5mdW5jdGlvbiBpc0ludGVnZXIob2JqZWN0KSB7XG4gIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkpID09PSAnW29iamVjdCBOdW1iZXJdJyAmJlxuICAgICAgICAgKG9iamVjdCAlIDEgPT09IDAgJiYgIWNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cblxudmFyIGludCA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEludGVnZXIsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEludGVnZXIsXG4gIHByZWRpY2F0ZTogaXNJbnRlZ2VyLFxuICByZXByZXNlbnQ6IHtcbiAgICBiaW5hcnk6ICAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqID49IDAgPyAnMGInICsgb2JqLnRvU3RyaW5nKDIpIDogJy0wYicgKyBvYmoudG9TdHJpbmcoMikuc2xpY2UoMSk7IH0sXG4gICAgb2N0YWw6ICAgICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzBvJyAgKyBvYmoudG9TdHJpbmcoOCkgOiAnLTBvJyAgKyBvYmoudG9TdHJpbmcoOCkuc2xpY2UoMSk7IH0sXG4gICAgZGVjaW1hbDogICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iai50b1N0cmluZygxMCk7IH0sXG4gICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuICAgIGhleGFkZWNpbWFsOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcweCcgKyBvYmoudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgOiAgJy0weCcgKyBvYmoudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSk7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnZGVjaW1hbCcsXG4gIHN0eWxlQWxpYXNlczoge1xuICAgIGJpbmFyeTogICAgICBbIDIsICAnYmluJyBdLFxuICAgIG9jdGFsOiAgICAgICBbIDgsICAnb2N0JyBdLFxuICAgIGRlY2ltYWw6ICAgICBbIDEwLCAnZGVjJyBdLFxuICAgIGhleGFkZWNpbWFsOiBbIDE2LCAnaGV4JyBdXG4gIH1cbn0pO1xuXG52YXIgWUFNTF9GTE9BVF9QQVRURVJOID0gbmV3IFJlZ0V4cChcbiAgLy8gMi41ZTQsIDIuNSBhbmQgaW50ZWdlcnNcbiAgJ14oPzpbLStdPyg/OlswLTldWzAtOV9dKikoPzpcXFxcLlswLTlfXSopPyg/OltlRV1bLStdP1swLTldKyk/JyArXG4gIC8vIC4yZTQsIC4yXG4gIC8vIHNwZWNpYWwgY2FzZSwgc2VlbXMgbm90IGZyb20gc3BlY1xuICAnfFxcXFwuWzAtOV9dKyg/OltlRV1bLStdP1swLTldKyk/JyArXG4gIC8vIC5pbmZcbiAgJ3xbLStdP1xcXFwuKD86aW5mfEluZnxJTkYpJyArXG4gIC8vIC5uYW5cbiAgJ3xcXFxcLig/Om5hbnxOYU58TkFOKSkkJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sRmxvYXQoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghWUFNTF9GTE9BVF9QQVRURVJOLnRlc3QoZGF0YSkgfHxcbiAgICAgIC8vIFF1aWNrIGhhY2sgdG8gbm90IGFsbG93IGludGVnZXJzIGVuZCB3aXRoIGBfYFxuICAgICAgLy8gUHJvYmFibHkgc2hvdWxkIHVwZGF0ZSByZWdleHAgJiBjaGVjayBzcGVlZFxuICAgICAgZGF0YVtkYXRhLmxlbmd0aCAtIDFdID09PSAnXycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEZsb2F0KGRhdGEpIHtcbiAgdmFyIHZhbHVlLCBzaWduO1xuXG4gIHZhbHVlICA9IGRhdGEucmVwbGFjZSgvXy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgc2lnbiAgID0gdmFsdWVbMF0gPT09ICctJyA/IC0xIDogMTtcblxuICBpZiAoJystJy5pbmRleE9mKHZhbHVlWzBdKSA+PSAwKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gJy5pbmYnKSB7XG4gICAgcmV0dXJuIChzaWduID09PSAxKSA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcblxuICB9IGVsc2UgaWYgKHZhbHVlID09PSAnLm5hbicpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG4gIHJldHVybiBzaWduICogcGFyc2VGbG9hdCh2YWx1ZSwgMTApO1xufVxuXG5cbnZhciBTQ0lFTlRJRklDX1dJVEhPVVRfRE9UID0gL15bLStdP1swLTldK2UvO1xuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sRmxvYXQob2JqZWN0LCBzdHlsZSkge1xuICB2YXIgcmVzO1xuXG4gIGlmIChpc05hTihvYmplY3QpKSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICcubmFuJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLk5BTic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy5OYU4nO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLmluZic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy5JTkYnO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICcuSW5mJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy0uaW5mJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLS5JTkYnO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICctLkluZic7XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKSB7XG4gICAgcmV0dXJuICctMC4wJztcbiAgfVxuXG4gIHJlcyA9IG9iamVjdC50b1N0cmluZygxMCk7XG5cbiAgLy8gSlMgc3RyaW5naWZpZXIgY2FuIGJ1aWxkIHNjaWVudGlmaWMgZm9ybWF0IHdpdGhvdXQgZG90czogNWUtMTAwLFxuICAvLyB3aGlsZSBZQU1MIHJlcXVyZXMgZG90OiA1LmUtMTAwLiBGaXggaXQgd2l0aCBzaW1wbGUgaGFja1xuXG4gIHJldHVybiBTQ0lFTlRJRklDX1dJVEhPVVRfRE9ULnRlc3QocmVzKSA/IHJlcy5yZXBsYWNlKCdlJywgJy5lJykgOiByZXM7XG59XG5cbmZ1bmN0aW9uIGlzRmxvYXQob2JqZWN0KSB7XG4gIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IE51bWJlcl0nKSAmJlxuICAgICAgICAgKG9iamVjdCAlIDEgIT09IDAgfHwgY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpO1xufVxuXG52YXIgZmxvYXQgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEZsb2F0LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxGbG9hdCxcbiAgcHJlZGljYXRlOiBpc0Zsb2F0LFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxGbG9hdCxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG5cbnZhciBqc29uID0gZmFpbHNhZmUuZXh0ZW5kKHtcbiAgaW1wbGljaXQ6IFtcbiAgICBfbnVsbCxcbiAgICBib29sLFxuICAgIGludCxcbiAgICBmbG9hdFxuICBdXG59KTtcblxudmFyIGNvcmUgPSBqc29uO1xuXG52YXIgWUFNTF9EQVRFX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gICdeKFswLTldWzAtOV1bMC05XVswLTldKScgICAgICAgICAgKyAvLyBbMV0geWVhclxuICAnLShbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzJdIG1vbnRoXG4gICctKFswLTldWzAtOV0pJCcpOyAgICAgICAgICAgICAgICAgICAvLyBbM10gZGF5XG5cbnZhciBZQU1MX1RJTUVTVEFNUF9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICAnXihbMC05XVswLTldWzAtOV1bMC05XSknICAgICAgICAgICsgLy8gWzFdIHllYXJcbiAgJy0oWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICArIC8vIFsyXSBtb250aFxuICAnLShbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICsgLy8gWzNdIGRheVxuICAnKD86W1R0XXxbIFxcXFx0XSspJyAgICAgICAgICAgICAgICAgKyAvLyAuLi5cbiAgJyhbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICArIC8vIFs0XSBob3VyXG4gICc6KFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNV0gbWludXRlXG4gICc6KFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNl0gc2Vjb25kXG4gICcoPzpcXFxcLihbMC05XSopKT8nICAgICAgICAgICAgICAgICArIC8vIFs3XSBmcmFjdGlvblxuICAnKD86WyBcXFxcdF0qKFp8KFstK10pKFswLTldWzAtOV0/KScgKyAvLyBbOF0gdHogWzldIHR6X3NpZ24gWzEwXSB0el9ob3VyXG4gICcoPzo6KFswLTldWzAtOV0pKT8pKT8kJyk7ICAgICAgICAgICAvLyBbMTFdIHR6X21pbnV0ZVxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbFRpbWVzdGFtcChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmIChZQU1MX0RBVEVfUkVHRVhQLmV4ZWMoZGF0YSkgIT09IG51bGwpIHJldHVybiB0cnVlO1xuICBpZiAoWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSkgIT09IG51bGwpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAoZGF0YSkge1xuICB2YXIgbWF0Y2gsIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmcmFjdGlvbiA9IDAsXG4gICAgICBkZWx0YSA9IG51bGwsIHR6X2hvdXIsIHR6X21pbnV0ZSwgZGF0ZTtcblxuICBtYXRjaCA9IFlBTUxfREFURV9SRUdFWFAuZXhlYyhkYXRhKTtcbiAgaWYgKG1hdGNoID09PSBudWxsKSBtYXRjaCA9IFlBTUxfVElNRVNUQU1QX1JFR0VYUC5leGVjKGRhdGEpO1xuXG4gIGlmIChtYXRjaCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdEYXRlIHJlc29sdmUgZXJyb3InKTtcblxuICAvLyBtYXRjaDogWzFdIHllYXIgWzJdIG1vbnRoIFszXSBkYXlcblxuICB5ZWFyID0gKyhtYXRjaFsxXSk7XG4gIG1vbnRoID0gKyhtYXRjaFsyXSkgLSAxOyAvLyBKUyBtb250aCBzdGFydHMgd2l0aCAwXG4gIGRheSA9ICsobWF0Y2hbM10pO1xuXG4gIGlmICghbWF0Y2hbNF0pIHsgLy8gbm8gaG91clxuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5KSk7XG4gIH1cblxuICAvLyBtYXRjaDogWzRdIGhvdXIgWzVdIG1pbnV0ZSBbNl0gc2Vjb25kIFs3XSBmcmFjdGlvblxuXG4gIGhvdXIgPSArKG1hdGNoWzRdKTtcbiAgbWludXRlID0gKyhtYXRjaFs1XSk7XG4gIHNlY29uZCA9ICsobWF0Y2hbNl0pO1xuXG4gIGlmIChtYXRjaFs3XSkge1xuICAgIGZyYWN0aW9uID0gbWF0Y2hbN10uc2xpY2UoMCwgMyk7XG4gICAgd2hpbGUgKGZyYWN0aW9uLmxlbmd0aCA8IDMpIHsgLy8gbWlsbGktc2Vjb25kc1xuICAgICAgZnJhY3Rpb24gKz0gJzAnO1xuICAgIH1cbiAgICBmcmFjdGlvbiA9ICtmcmFjdGlvbjtcbiAgfVxuXG4gIC8vIG1hdGNoOiBbOF0gdHogWzldIHR6X3NpZ24gWzEwXSB0el9ob3VyIFsxMV0gdHpfbWludXRlXG5cbiAgaWYgKG1hdGNoWzldKSB7XG4gICAgdHpfaG91ciA9ICsobWF0Y2hbMTBdKTtcbiAgICB0el9taW51dGUgPSArKG1hdGNoWzExXSB8fCAwKTtcbiAgICBkZWx0YSA9ICh0el9ob3VyICogNjAgKyB0el9taW51dGUpICogNjAwMDA7IC8vIGRlbHRhIGluIG1pbGktc2Vjb25kc1xuICAgIGlmIChtYXRjaFs5XSA9PT0gJy0nKSBkZWx0YSA9IC1kZWx0YTtcbiAgfVxuXG4gIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZnJhY3Rpb24pKTtcblxuICBpZiAoZGVsdGEpIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSAtIGRlbHRhKTtcblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbFRpbWVzdGFtcChvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgcmV0dXJuIG9iamVjdC50b0lTT1N0cmluZygpO1xufVxuXG52YXIgdGltZXN0YW1wID0gbmV3IHR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnRpbWVzdGFtcCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sVGltZXN0YW1wLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAsXG4gIGluc3RhbmNlT2Y6IERhdGUsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbFRpbWVzdGFtcFxufSk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sTWVyZ2UoZGF0YSkge1xuICByZXR1cm4gZGF0YSA9PT0gJzw8JyB8fCBkYXRhID09PSBudWxsO1xufVxuXG52YXIgbWVyZ2UgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bWVyZ2UnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE1lcmdlXG59KTtcblxuLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlKi9cblxuXG5cblxuXG4vLyBbIDY0LCA2NSwgNjYgXSAtPiBbIHBhZGRpbmcsIENSLCBMRiBdXG52YXIgQkFTRTY0X01BUCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVxcblxccic7XG5cblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxCaW5hcnkoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBjb2RlLCBpZHgsIGJpdGxlbiA9IDAsIG1heCA9IGRhdGEubGVuZ3RoLCBtYXAgPSBCQVNFNjRfTUFQO1xuXG4gIC8vIENvbnZlcnQgb25lIGJ5IG9uZS5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgY29kZSA9IG1hcC5pbmRleE9mKGRhdGEuY2hhckF0KGlkeCkpO1xuXG4gICAgLy8gU2tpcCBDUi9MRlxuICAgIGlmIChjb2RlID4gNjQpIGNvbnRpbnVlO1xuXG4gICAgLy8gRmFpbCBvbiBpbGxlZ2FsIGNoYXJhY3RlcnNcbiAgICBpZiAoY29kZSA8IDApIHJldHVybiBmYWxzZTtcblxuICAgIGJpdGxlbiArPSA2O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGFueSBiaXRzIGxlZnQsIHNvdXJjZSB3YXMgY29ycnVwdGVkXG4gIHJldHVybiAoYml0bGVuICUgOCkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxCaW5hcnkoZGF0YSkge1xuICB2YXIgaWR4LCB0YWlsYml0cyxcbiAgICAgIGlucHV0ID0gZGF0YS5yZXBsYWNlKC9bXFxyXFxuPV0vZywgJycpLCAvLyByZW1vdmUgQ1IvTEYgJiBwYWRkaW5nIHRvIHNpbXBsaWZ5IHNjYW5cbiAgICAgIG1heCA9IGlucHV0Lmxlbmd0aCxcbiAgICAgIG1hcCA9IEJBU0U2NF9NQVAsXG4gICAgICBiaXRzID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIC8vIENvbGxlY3QgYnkgNio0IGJpdHMgKDMgYnl0ZXMpXG5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSA0ID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDE2KSAmIDB4RkYpO1xuICAgICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gOCkgJiAweEZGKTtcbiAgICAgIHJlc3VsdC5wdXNoKGJpdHMgJiAweEZGKTtcbiAgICB9XG5cbiAgICBiaXRzID0gKGJpdHMgPDwgNikgfCBtYXAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaWR4KSk7XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB0YWlsYml0cyA9IChtYXggJSA0KSAqIDY7XG5cbiAgaWYgKHRhaWxiaXRzID09PSAwKSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTYpICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gOCkgJiAweEZGKTtcbiAgICByZXN1bHQucHVzaChiaXRzICYgMHhGRik7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDE4KSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTApICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMikgJiAweEZGKTtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTIpIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiA0KSAmIDB4RkYpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxCaW5hcnkob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHZhciByZXN1bHQgPSAnJywgYml0cyA9IDAsIGlkeCwgdGFpbCxcbiAgICAgIG1heCA9IG9iamVjdC5sZW5ndGgsXG4gICAgICBtYXAgPSBCQVNFNjRfTUFQO1xuXG4gIC8vIENvbnZlcnQgZXZlcnkgdGhyZWUgYnl0ZXMgdG8gNCBBU0NJSSBjaGFyYWN0ZXJzLlxuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGlmICgoaWR4ICUgMyA9PT0gMCkgJiYgaWR4KSB7XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDE4KSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMikgJiAweDNGXTtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNikgJiAweDNGXTtcbiAgICAgIHJlc3VsdCArPSBtYXBbYml0cyAmIDB4M0ZdO1xuICAgIH1cblxuICAgIGJpdHMgPSAoYml0cyA8PCA4KSArIG9iamVjdFtpZHhdO1xuICB9XG5cbiAgLy8gRHVtcCB0YWlsXG5cbiAgdGFpbCA9IG1heCAlIDM7XG5cbiAgaWYgKHRhaWwgPT09IDApIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDE4KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTIpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbYml0cyAmIDB4M0ZdO1xuICB9IGVsc2UgaWYgKHRhaWwgPT09IDIpIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEwKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDIpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gIH0gZWxzZSBpZiAodGFpbCA9PT0gMSkge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDQpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc0JpbmFyeShvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAgJ1tvYmplY3QgVWludDhBcnJheV0nO1xufVxuXG52YXIgYmluYXJ5ID0gbmV3IHR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmJpbmFyeScsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQmluYXJ5LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCaW5hcnksXG4gIHByZWRpY2F0ZTogaXNCaW5hcnksXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEJpbmFyeVxufSk7XG5cbnZhciBfaGFzT3duUHJvcGVydHkkMyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX3RvU3RyaW5nJDIgICAgICAgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE9tYXAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIG9iamVjdEtleXMgPSBbXSwgaW5kZXgsIGxlbmd0aCwgcGFpciwgcGFpcktleSwgcGFpckhhc0tleSxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG4gICAgcGFpckhhc0tleSA9IGZhbHNlO1xuXG4gICAgaWYgKF90b1N0cmluZyQyLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKHBhaXJLZXkgaW4gcGFpcikge1xuICAgICAgaWYgKF9oYXNPd25Qcm9wZXJ0eSQzLmNhbGwocGFpciwgcGFpcktleSkpIHtcbiAgICAgICAgaWYgKCFwYWlySGFzS2V5KSBwYWlySGFzS2V5ID0gdHJ1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwYWlySGFzS2V5KSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqZWN0S2V5cy5pbmRleE9mKHBhaXJLZXkpID09PSAtMSkgb2JqZWN0S2V5cy5wdXNoKHBhaXJLZXkpO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxPbWFwKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogW107XG59XG5cbnZhciBvbWFwID0gbmV3IHR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm9tYXAnLCB7XG4gIGtpbmQ6ICdzZXF1ZW5jZScsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sT21hcCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sT21hcFxufSk7XG5cbnZhciBfdG9TdHJpbmckMSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIGluZGV4LCBsZW5ndGgsIHBhaXIsIGtleXMsIHJlc3VsdCxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgcmVzdWx0ID0gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuXG4gICAgaWYgKF90b1N0cmluZyQxLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpIHJldHVybiBmYWxzZTtcblxuICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gIHZhciBpbmRleCwgbGVuZ3RoLCBwYWlyLCBrZXlzLCByZXN1bHQsXG4gICAgICBvYmplY3QgPSBkYXRhO1xuXG4gIHJlc3VsdCA9IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhwYWlyKTtcblxuICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBwYWlycyA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpwYWlycycsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxQYWlycyxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sUGFpcnNcbn0pO1xuXG52YXIgX2hhc093blByb3BlcnR5JDIgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbFNldChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIga2V5LCBvYmplY3QgPSBkYXRhO1xuXG4gIGZvciAoa2V5IGluIG9iamVjdCkge1xuICAgIGlmIChfaGFzT3duUHJvcGVydHkkMi5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgaWYgKG9iamVjdFtrZXldICE9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxTZXQoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTtcbn1cblxudmFyIHNldCA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpzZXQnLCB7XG4gIGtpbmQ6ICdtYXBwaW5nJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxTZXQsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFNldFxufSk7XG5cbnZhciBfZGVmYXVsdCA9IGNvcmUuZXh0ZW5kKHtcbiAgaW1wbGljaXQ6IFtcbiAgICB0aW1lc3RhbXAsXG4gICAgbWVyZ2VcbiAgXSxcbiAgZXhwbGljaXQ6IFtcbiAgICBiaW5hcnksXG4gICAgb21hcCxcbiAgICBwYWlycyxcbiAgICBzZXRcbiAgXVxufSk7XG5cbi8qZXNsaW50LWRpc2FibGUgbWF4LWxlbixuby11c2UtYmVmb3JlLWRlZmluZSovXG5cblxuXG5cblxuXG5cbnZhciBfaGFzT3duUHJvcGVydHkkMSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cblxudmFyIENPTlRFWFRfRkxPV19JTiAgID0gMTtcbnZhciBDT05URVhUX0ZMT1dfT1VUICA9IDI7XG52YXIgQ09OVEVYVF9CTE9DS19JTiAgPSAzO1xudmFyIENPTlRFWFRfQkxPQ0tfT1VUID0gNDtcblxuXG52YXIgQ0hPTVBJTkdfQ0xJUCAgPSAxO1xudmFyIENIT01QSU5HX1NUUklQID0gMjtcbnZhciBDSE9NUElOR19LRUVQICA9IDM7XG5cblxudmFyIFBBVFRFUk5fTk9OX1BSSU5UQUJMRSAgICAgICAgID0gL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdGLVxceDg0XFx4ODYtXFx4OUZcXHVGRkZFXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0vO1xudmFyIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTID0gL1tcXHg4NVxcdTIwMjhcXHUyMDI5XS87XG52YXIgUEFUVEVSTl9GTE9XX0lORElDQVRPUlMgICAgICAgPSAvWyxcXFtcXF1cXHtcXH1dLztcbnZhciBQQVRURVJOX1RBR19IQU5ETEUgICAgICAgICAgICA9IC9eKD86IXwhIXwhW2EtelxcLV0rISkkL2k7XG52YXIgUEFUVEVSTl9UQUdfVVJJICAgICAgICAgICAgICAgPSAvXig/OiF8W14sXFxbXFxdXFx7XFx9XSkoPzolWzAtOWEtZl17Mn18WzAtOWEtelxcLSM7XFwvXFw/OkAmPVxcK1xcJCxfXFwuIX5cXConXFwoXFwpXFxbXFxdXSkqJC9pO1xuXG5cbmZ1bmN0aW9uIF9jbGFzcyhvYmopIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopOyB9XG5cbmZ1bmN0aW9uIGlzX0VPTChjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwQS8qIExGICovKSB8fCAoYyA9PT0gMHgwRC8qIENSICovKTtcbn1cblxuZnVuY3Rpb24gaXNfV0hJVEVfU1BBQ0UoYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8IChjID09PSAweDIwLyogU3BhY2UgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19XU19PUl9FT0woYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgyMC8qIFNwYWNlICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MEEvKiBMRiAqLykgfHxcbiAgICAgICAgIChjID09PSAweDBELyogQ1IgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19GTE9XX0lORElDQVRPUihjKSB7XG4gIHJldHVybiBjID09PSAweDJDLyogLCAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg1Qi8qIFsgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4NUQvKiBdICovIHx8XG4gICAgICAgICBjID09PSAweDdCLyogeyAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg3RC8qIH0gKi87XG59XG5cbmZ1bmN0aW9uIGZyb21IZXhDb2RlKGMpIHtcbiAgdmFyIGxjO1xuXG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlKi9cbiAgbGMgPSBjIHwgMHgyMDtcblxuICBpZiAoKDB4NjEvKiBhICovIDw9IGxjKSAmJiAobGMgPD0gMHg2Ni8qIGYgKi8pKSB7XG4gICAgcmV0dXJuIGxjIC0gMHg2MSArIDEwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVkSGV4TGVuKGMpIHtcbiAgaWYgKGMgPT09IDB4NzgvKiB4ICovKSB7IHJldHVybiAyOyB9XG4gIGlmIChjID09PSAweDc1LyogdSAqLykgeyByZXR1cm4gNDsgfVxuICBpZiAoYyA9PT0gMHg1NS8qIFUgKi8pIHsgcmV0dXJuIDg7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGZyb21EZWNpbWFsQ29kZShjKSB7XG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFc2NhcGVTZXF1ZW5jZShjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIGluZGVudCAqL1xuICByZXR1cm4gKGMgPT09IDB4MzAvKiAwICovKSA/ICdcXHgwMCcgOlxuICAgICAgICAoYyA9PT0gMHg2MS8qIGEgKi8pID8gJ1xceDA3JyA6XG4gICAgICAgIChjID09PSAweDYyLyogYiAqLykgPyAnXFx4MDgnIDpcbiAgICAgICAgKGMgPT09IDB4NzQvKiB0ICovKSA/ICdcXHgwOScgOlxuICAgICAgICAoYyA9PT0gMHgwOS8qIFRhYiAqLykgPyAnXFx4MDknIDpcbiAgICAgICAgKGMgPT09IDB4NkUvKiBuICovKSA/ICdcXHgwQScgOlxuICAgICAgICAoYyA9PT0gMHg3Ni8qIHYgKi8pID8gJ1xceDBCJyA6XG4gICAgICAgIChjID09PSAweDY2LyogZiAqLykgPyAnXFx4MEMnIDpcbiAgICAgICAgKGMgPT09IDB4NzIvKiByICovKSA/ICdcXHgwRCcgOlxuICAgICAgICAoYyA9PT0gMHg2NS8qIGUgKi8pID8gJ1xceDFCJyA6XG4gICAgICAgIChjID09PSAweDIwLyogU3BhY2UgKi8pID8gJyAnIDpcbiAgICAgICAgKGMgPT09IDB4MjIvKiBcIiAqLykgPyAnXFx4MjInIDpcbiAgICAgICAgKGMgPT09IDB4MkYvKiAvICovKSA/ICcvJyA6XG4gICAgICAgIChjID09PSAweDVDLyogXFwgKi8pID8gJ1xceDVDJyA6XG4gICAgICAgIChjID09PSAweDRFLyogTiAqLykgPyAnXFx4ODUnIDpcbiAgICAgICAgKGMgPT09IDB4NUYvKiBfICovKSA/ICdcXHhBMCcgOlxuICAgICAgICAoYyA9PT0gMHg0Qy8qIEwgKi8pID8gJ1xcdTIwMjgnIDpcbiAgICAgICAgKGMgPT09IDB4NTAvKiBQICovKSA/ICdcXHUyMDI5JyA6ICcnO1xufVxuXG5mdW5jdGlvbiBjaGFyRnJvbUNvZGVwb2ludChjKSB7XG4gIGlmIChjIDw9IDB4RkZGRikge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICB9XG4gIC8vIEVuY29kZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXJcbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2I0NvZGVfcG9pbnRzX1UuMkIwMTAwMDBfdG9fVS4yQjEwRkZGRlxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAoKGMgLSAweDAxMDAwMCkgPj4gMTApICsgMHhEODAwLFxuICAgICgoYyAtIDB4MDEwMDAwKSAmIDB4MDNGRikgKyAweERDMDBcbiAgKTtcbn1cblxudmFyIHNpbXBsZUVzY2FwZUNoZWNrID0gbmV3IEFycmF5KDI1Nik7IC8vIGludGVnZXIsIGZvciBmYXN0IGFjY2Vzc1xudmFyIHNpbXBsZUVzY2FwZU1hcCA9IG5ldyBBcnJheSgyNTYpO1xuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuICBzaW1wbGVFc2NhcGVDaGVja1tpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpID8gMSA6IDA7XG4gIHNpbXBsZUVzY2FwZU1hcFtpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpO1xufVxuXG5cbmZ1bmN0aW9uIFN0YXRlJDEoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdGhpcy5pbnB1dCA9IGlucHV0O1xuXG4gIHRoaXMuZmlsZW5hbWUgID0gb3B0aW9uc1snZmlsZW5hbWUnXSAgfHwgbnVsbDtcbiAgdGhpcy5zY2hlbWEgICAgPSBvcHRpb25zWydzY2hlbWEnXSAgICB8fCBfZGVmYXVsdDtcbiAgdGhpcy5vbldhcm5pbmcgPSBvcHRpb25zWydvbldhcm5pbmcnXSB8fCBudWxsO1xuICAvLyAoSGlkZGVuKSBSZW1vdmU/IG1ha2VzIHRoZSBsb2FkZXIgdG8gZXhwZWN0IFlBTUwgMS4xIGRvY3VtZW50c1xuICAvLyBpZiBzdWNoIGRvY3VtZW50cyBoYXZlIG5vIGV4cGxpY2l0ICVZQU1MIGRpcmVjdGl2ZVxuICB0aGlzLmxlZ2FjeSAgICA9IG9wdGlvbnNbJ2xlZ2FjeSddICAgIHx8IGZhbHNlO1xuXG4gIHRoaXMuanNvbiAgICAgID0gb3B0aW9uc1snanNvbiddICAgICAgfHwgZmFsc2U7XG4gIHRoaXMubGlzdGVuZXIgID0gb3B0aW9uc1snbGlzdGVuZXInXSAgfHwgbnVsbDtcblxuICB0aGlzLmltcGxpY2l0VHlwZXMgPSB0aGlzLnNjaGVtYS5jb21waWxlZEltcGxpY2l0O1xuICB0aGlzLnR5cGVNYXAgICAgICAgPSB0aGlzLnNjaGVtYS5jb21waWxlZFR5cGVNYXA7XG5cbiAgdGhpcy5sZW5ndGggICAgID0gaW5wdXQubGVuZ3RoO1xuICB0aGlzLnBvc2l0aW9uICAgPSAwO1xuICB0aGlzLmxpbmUgICAgICAgPSAwO1xuICB0aGlzLmxpbmVTdGFydCAgPSAwO1xuICB0aGlzLmxpbmVJbmRlbnQgPSAwO1xuXG4gIC8vIHBvc2l0aW9uIG9mIGZpcnN0IGxlYWRpbmcgdGFiIGluIHRoZSBjdXJyZW50IGxpbmUsXG4gIC8vIHVzZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyB0YWJzIGluIHRoZSBpbmRlbnRhdGlvblxuICB0aGlzLmZpcnN0VGFiSW5MaW5lID0gLTE7XG5cbiAgdGhpcy5kb2N1bWVudHMgPSBbXTtcblxuICAvKlxuICB0aGlzLnZlcnNpb247XG4gIHRoaXMuY2hlY2tMaW5lQnJlYWtzO1xuICB0aGlzLnRhZ01hcDtcbiAgdGhpcy5hbmNob3JNYXA7XG4gIHRoaXMudGFnO1xuICB0aGlzLmFuY2hvcjtcbiAgdGhpcy5raW5kO1xuICB0aGlzLnJlc3VsdDsqL1xuXG59XG5cblxuZnVuY3Rpb24gZ2VuZXJhdGVFcnJvcihzdGF0ZSwgbWVzc2FnZSkge1xuICB2YXIgbWFyayA9IHtcbiAgICBuYW1lOiAgICAgc3RhdGUuZmlsZW5hbWUsXG4gICAgYnVmZmVyOiAgIHN0YXRlLmlucHV0LnNsaWNlKDAsIC0xKSwgLy8gb21pdCB0cmFpbGluZyBcXDBcbiAgICBwb3NpdGlvbjogc3RhdGUucG9zaXRpb24sXG4gICAgbGluZTogICAgIHN0YXRlLmxpbmUsXG4gICAgY29sdW1uOiAgIHN0YXRlLnBvc2l0aW9uIC0gc3RhdGUubGluZVN0YXJ0XG4gIH07XG5cbiAgbWFyay5zbmlwcGV0ID0gc25pcHBldChtYXJrKTtcblxuICByZXR1cm4gbmV3IGV4Y2VwdGlvbihtZXNzYWdlLCBtYXJrKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihzdGF0ZSwgbWVzc2FnZSkge1xuICB0aHJvdyBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dXYXJuaW5nKHN0YXRlLCBtZXNzYWdlKSB7XG4gIGlmIChzdGF0ZS5vbldhcm5pbmcpIHtcbiAgICBzdGF0ZS5vbldhcm5pbmcuY2FsbChudWxsLCBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSk7XG4gIH1cbn1cblxuXG52YXIgZGlyZWN0aXZlSGFuZGxlcnMgPSB7XG5cbiAgWUFNTDogZnVuY3Rpb24gaGFuZGxlWWFtbERpcmVjdGl2ZShzdGF0ZSwgbmFtZSwgYXJncykge1xuXG4gICAgdmFyIG1hdGNoLCBtYWpvciwgbWlub3I7XG5cbiAgICBpZiAoc3RhdGUudmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mICVZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1lBTUwgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBtYXRjaCA9IC9eKFswLTldKylcXC4oWzAtOV0rKSQvLmV4ZWMoYXJnc1swXSk7XG5cbiAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIGFyZ3VtZW50IG9mIHRoZSBZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIG1ham9yID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICBtaW5vciA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG5cbiAgICBpZiAobWFqb3IgIT09IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgWUFNTCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCcpO1xuICAgIH1cblxuICAgIHN0YXRlLnZlcnNpb24gPSBhcmdzWzBdO1xuICAgIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IChtaW5vciA8IDIpO1xuXG4gICAgaWYgKG1pbm9yICE9PSAxICYmIG1pbm9yICE9PSAyKSB7XG4gICAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICd1bnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Jyk7XG4gICAgfVxuICB9LFxuXG4gIFRBRzogZnVuY3Rpb24gaGFuZGxlVGFnRGlyZWN0aXZlKHN0YXRlLCBuYW1lLCBhcmdzKSB7XG5cbiAgICB2YXIgaGFuZGxlLCBwcmVmaXg7XG5cbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdUQUcgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSB0d28gYXJndW1lbnRzJyk7XG4gICAgfVxuXG4gICAgaGFuZGxlID0gYXJnc1swXTtcbiAgICBwcmVmaXggPSBhcmdzWzFdO1xuXG4gICAgaWYgKCFQQVRURVJOX1RBR19IQU5ETEUudGVzdChoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCB0YWcgaGFuZGxlIChmaXJzdCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5JDEuY2FsbChzdGF0ZS50YWdNYXAsIGhhbmRsZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0aGVyZSBpcyBhIHByZXZpb3VzbHkgZGVjbGFyZWQgc3VmZml4IGZvciBcIicgKyBoYW5kbGUgKyAnXCIgdGFnIGhhbmRsZScpO1xuICAgIH1cblxuICAgIGlmICghUEFUVEVSTl9UQUdfVVJJLnRlc3QocHJlZml4KSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2lsbC1mb3JtZWQgdGFnIHByZWZpeCAoc2Vjb25kIGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwcmVmaXggPSBkZWNvZGVVUklDb21wb25lbnQocHJlZml4KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgcHJlZml4IGlzIG1hbGZvcm1lZDogJyArIHByZWZpeCk7XG4gICAgfVxuXG4gICAgc3RhdGUudGFnTWFwW2hhbmRsZV0gPSBwcmVmaXg7XG4gIH1cbn07XG5cblxuZnVuY3Rpb24gY2FwdHVyZVNlZ21lbnQoc3RhdGUsIHN0YXJ0LCBlbmQsIGNoZWNrSnNvbikge1xuICB2YXIgX3Bvc2l0aW9uLCBfbGVuZ3RoLCBfY2hhcmFjdGVyLCBfcmVzdWx0O1xuXG4gIGlmIChzdGFydCA8IGVuZCkge1xuICAgIF9yZXN1bHQgPSBzdGF0ZS5pbnB1dC5zbGljZShzdGFydCwgZW5kKTtcblxuICAgIGlmIChjaGVja0pzb24pIHtcbiAgICAgIGZvciAoX3Bvc2l0aW9uID0gMCwgX2xlbmd0aCA9IF9yZXN1bHQubGVuZ3RoOyBfcG9zaXRpb24gPCBfbGVuZ3RoOyBfcG9zaXRpb24gKz0gMSkge1xuICAgICAgICBfY2hhcmFjdGVyID0gX3Jlc3VsdC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG4gICAgICAgIGlmICghKF9jaGFyYWN0ZXIgPT09IDB4MDkgfHxcbiAgICAgICAgICAgICAgKDB4MjAgPD0gX2NoYXJhY3RlciAmJiBfY2hhcmFjdGVyIDw9IDB4MTBGRkZGKSkpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZXhwZWN0ZWQgdmFsaWQgSlNPTiBjaGFyYWN0ZXInKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoUEFUVEVSTl9OT05fUFJJTlRBQkxFLnRlc3QoX3Jlc3VsdCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0aGUgc3RyZWFtIGNvbnRhaW5zIG5vbi1wcmludGFibGUgY2hhcmFjdGVycycpO1xuICAgIH1cblxuICAgIHN0YXRlLnJlc3VsdCArPSBfcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWFwcGluZ3Moc3RhdGUsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG92ZXJyaWRhYmxlS2V5cykge1xuICB2YXIgc291cmNlS2V5cywga2V5LCBpbmRleCwgcXVhbnRpdHk7XG5cbiAgaWYgKCFjb21tb24uaXNPYmplY3Qoc291cmNlKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW5ub3QgbWVyZ2UgbWFwcGluZ3M7IHRoZSBwcm92aWRlZCBzb3VyY2Ugb2JqZWN0IGlzIHVuYWNjZXB0YWJsZScpO1xuICB9XG5cbiAgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG5cbiAgZm9yIChpbmRleCA9IDAsIHF1YW50aXR5ID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgcXVhbnRpdHk7IGluZGV4ICs9IDEpIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcblxuICAgIGlmICghX2hhc093blByb3BlcnR5JDEuY2FsbChkZXN0aW5hdGlvbiwga2V5KSkge1xuICAgICAgZGVzdGluYXRpb25ba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgb3ZlcnJpZGFibGVLZXlzW2tleV0gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLFxuICBzdGFydExpbmUsIHN0YXJ0TGluZVN0YXJ0LCBzdGFydFBvcykge1xuXG4gIHZhciBpbmRleCwgcXVhbnRpdHk7XG5cbiAgLy8gVGhlIG91dHB1dCBpcyBhIHBsYWluIG9iamVjdCBoZXJlLCBzbyBrZXlzIGNhbiBvbmx5IGJlIHN0cmluZ3MuXG4gIC8vIFdlIG5lZWQgdG8gY29udmVydCBrZXlOb2RlIHRvIGEgc3RyaW5nLCBidXQgZG9pbmcgc28gY2FuIGhhbmcgdGhlIHByb2Nlc3NcbiAgLy8gKGRlZXBseSBuZXN0ZWQgYXJyYXlzIHRoYXQgZXhwbG9kZSBleHBvbmVudGlhbGx5IHVzaW5nIGFsaWFzZXMpLlxuICBpZiAoQXJyYXkuaXNBcnJheShrZXlOb2RlKSkge1xuICAgIGtleU5vZGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChrZXlOb2RlKTtcblxuICAgIGZvciAoaW5kZXggPSAwLCBxdWFudGl0eSA9IGtleU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShrZXlOb2RlW2luZGV4XSkpIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25lc3RlZCBhcnJheXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW5zaWRlIGtleXMnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBrZXlOb2RlID09PSAnb2JqZWN0JyAmJiBfY2xhc3Moa2V5Tm9kZVtpbmRleF0pID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICBrZXlOb2RlW2luZGV4XSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEF2b2lkIGNvZGUgZXhlY3V0aW9uIGluIGxvYWQoKSB2aWEgdG9TdHJpbmcgcHJvcGVydHlcbiAgLy8gKHN0aWxsIHVzZSBpdHMgb3duIHRvU3RyaW5nIGZvciBhcnJheXMsIHRpbWVzdGFtcHMsXG4gIC8vIGFuZCB3aGF0ZXZlciB1c2VyIHNjaGVtYSBleHRlbnNpb25zIGhhcHBlbiB0byBoYXZlIEBAdG9TdHJpbmdUYWcpXG4gIGlmICh0eXBlb2Yga2V5Tm9kZSA9PT0gJ29iamVjdCcgJiYgX2NsYXNzKGtleU5vZGUpID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIGtleU5vZGUgPSAnW29iamVjdCBPYmplY3RdJztcbiAgfVxuXG5cbiAga2V5Tm9kZSA9IFN0cmluZyhrZXlOb2RlKTtcblxuICBpZiAoX3Jlc3VsdCA9PT0gbnVsbCkge1xuICAgIF9yZXN1bHQgPSB7fTtcbiAgfVxuXG4gIGlmIChrZXlUYWcgPT09ICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU5vZGUpKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSB2YWx1ZU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZVtpbmRleF0sIG92ZXJyaWRhYmxlS2V5cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZSwgb3ZlcnJpZGFibGVLZXlzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFzdGF0ZS5qc29uICYmXG4gICAgICAgICFfaGFzT3duUHJvcGVydHkkMS5jYWxsKG92ZXJyaWRhYmxlS2V5cywga2V5Tm9kZSkgJiZcbiAgICAgICAgX2hhc093blByb3BlcnR5JDEuY2FsbChfcmVzdWx0LCBrZXlOb2RlKSkge1xuICAgICAgc3RhdGUubGluZSA9IHN0YXJ0TGluZSB8fCBzdGF0ZS5saW5lO1xuICAgICAgc3RhdGUubGluZVN0YXJ0ID0gc3RhcnRMaW5lU3RhcnQgfHwgc3RhdGUubGluZVN0YXJ0O1xuICAgICAgc3RhdGUucG9zaXRpb24gPSBzdGFydFBvcyB8fCBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGVkIG1hcHBpbmcga2V5Jyk7XG4gICAgfVxuXG4gICAgLy8gdXNlZCBmb3IgdGhpcyBzcGVjaWZpYyBrZXkgb25seSBiZWNhdXNlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBpcyBzbG93XG4gICAgaWYgKGtleU5vZGUgPT09ICdfX3Byb3RvX18nKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX3Jlc3VsdCwga2V5Tm9kZSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogdmFsdWVOb2RlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3Jlc3VsdFtrZXlOb2RlXSA9IHZhbHVlTm9kZTtcbiAgICB9XG4gICAgZGVsZXRlIG92ZXJyaWRhYmxlS2V5c1trZXlOb2RlXTtcbiAgfVxuXG4gIHJldHVybiBfcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZWFkTGluZUJyZWFrKHN0YXRlKSB7XG4gIHZhciBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHgwQS8qIExGICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24rKztcbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgwRC8qIENSICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24rKztcbiAgICBpZiAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MEEvKiBMRiAqLykge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2EgbGluZSBicmVhayBpcyBleHBlY3RlZCcpO1xuICB9XG5cbiAgc3RhdGUubGluZSArPSAxO1xuICBzdGF0ZS5saW5lU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgc3RhdGUuZmlyc3RUYWJJbkxpbmUgPSAtMTtcbn1cblxuZnVuY3Rpb24gc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgYWxsb3dDb21tZW50cywgY2hlY2tJbmRlbnQpIHtcbiAgdmFyIGxpbmVCcmVha3MgPSAwLFxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICBpZiAoY2ggPT09IDB4MDkvKiBUYWIgKi8gJiYgc3RhdGUuZmlyc3RUYWJJbkxpbmUgPT09IC0xKSB7XG4gICAgICAgIHN0YXRlLmZpcnN0VGFiSW5MaW5lID0gc3RhdGUucG9zaXRpb247XG4gICAgICB9XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGFsbG93Q29tbWVudHMgJiYgY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICBkbyB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH0gd2hpbGUgKGNoICE9PSAweDBBLyogTEYgKi8gJiYgY2ggIT09IDB4MEQvKiBDUiAqLyAmJiBjaCAhPT0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIHJlYWRMaW5lQnJlYWsoc3RhdGUpO1xuXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgbGluZUJyZWFrcysrO1xuICAgICAgc3RhdGUubGluZUluZGVudCA9IDA7XG5cbiAgICAgIHdoaWxlIChjaCA9PT0gMHgyMC8qIFNwYWNlICovKSB7XG4gICAgICAgIHN0YXRlLmxpbmVJbmRlbnQrKztcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoY2hlY2tJbmRlbnQgIT09IC0xICYmIGxpbmVCcmVha3MgIT09IDAgJiYgc3RhdGUubGluZUluZGVudCA8IGNoZWNrSW5kZW50KSB7XG4gICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAnZGVmaWNpZW50IGluZGVudGF0aW9uJyk7XG4gIH1cblxuICByZXR1cm4gbGluZUJyZWFrcztcbn1cblxuZnVuY3Rpb24gdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbixcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24pO1xuXG4gIC8vIENvbmRpdGlvbiBzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0IGlzIHRlc3RlZFxuICAvLyBpbiBwYXJlbnQgb24gZWFjaCBjYWxsLCBmb3IgZWZmaWNpZW5jeS4gTm8gbmVlZHMgdG8gdGVzdCBoZXJlIGFnYWluLlxuICBpZiAoKGNoID09PSAweDJELyogLSAqLyB8fCBjaCA9PT0gMHgyRS8qIC4gKi8pICYmXG4gICAgICBjaCA9PT0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24gKyAxKSAmJlxuICAgICAgY2ggPT09IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uICsgMikpIHtcblxuICAgIF9wb3NpdGlvbiArPSAzO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDAgfHwgaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBjb3VudCkge1xuICBpZiAoY291bnQgPT09IDEpIHtcbiAgICBzdGF0ZS5yZXN1bHQgKz0gJyAnO1xuICB9IGVsc2UgaWYgKGNvdW50ID4gMSkge1xuICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBjb3VudCAtIDEpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gcmVhZFBsYWluU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50LCB3aXRoaW5GbG93Q29sbGVjdGlvbikge1xuICB2YXIgcHJlY2VkaW5nLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgY2FwdHVyZVN0YXJ0LFxuICAgICAgY2FwdHVyZUVuZCxcbiAgICAgIGhhc1BlbmRpbmdDb250ZW50LFxuICAgICAgX2xpbmUsXG4gICAgICBfbGluZVN0YXJ0LFxuICAgICAgX2xpbmVJbmRlbnQsXG4gICAgICBfa2luZCA9IHN0YXRlLmtpbmQsXG4gICAgICBfcmVzdWx0ID0gc3RhdGUucmVzdWx0LFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoaXNfV1NfT1JfRU9MKGNoKSAgICAgIHx8XG4gICAgICBpc19GTE9XX0lORElDQVRPUihjaCkgfHxcbiAgICAgIGNoID09PSAweDIzLyogIyAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjYvKiAmICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyQS8qICogKi8gICAgfHxcbiAgICAgIGNoID09PSAweDIxLyogISAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4N0MvKiB8ICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgzRS8qID4gKi8gICAgfHxcbiAgICAgIGNoID09PSAweDI3LyogJyAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjIvKiBcIiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjUvKiAlICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg0MC8qIEAgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDYwLyogYCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChjaCA9PT0gMHgzRi8qID8gKi8gfHwgY2ggPT09IDB4MkQvKiAtICovKSB7XG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpIHx8XG4gICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihmb2xsb3dpbmcpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIHByZWNlZGluZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gLSAxKTtcblxuICAgICAgaWYgKGlzX1dTX09SX0VPTChwcmVjZWRpbmcpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICgoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB8fFxuICAgICAgICAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgICBicmVhaztcblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgICAgX2xpbmVTdGFydCA9IHN0YXRlLmxpbmVTdGFydDtcbiAgICAgIF9saW5lSW5kZW50ID0gc3RhdGUubGluZUluZGVudDtcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCAtMSk7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID49IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSB0cnVlO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uID0gY2FwdHVyZUVuZDtcbiAgICAgICAgc3RhdGUubGluZSA9IF9saW5lO1xuICAgICAgICBzdGF0ZS5saW5lU3RhcnQgPSBfbGluZVN0YXJ0O1xuICAgICAgICBzdGF0ZS5saW5lSW5kZW50ID0gX2xpbmVJbmRlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNQZW5kaW5nQ29udGVudCkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgZmFsc2UpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc3RhdGUubGluZSAtIF9saW5lKTtcbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbiArIDE7XG4gICAgfVxuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgZmFsc2UpO1xuXG4gIGlmIChzdGF0ZS5yZXN1bHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSBfa2luZDtcbiAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZWFkU2luZ2xlUXVvdGVkU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjaCxcbiAgICAgIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyNy8qICcgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuICBzdGF0ZS5wb3NpdGlvbisrO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKChjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pKSAhPT0gMCkge1xuICAgIGlmIChjaCA9PT0gMHgyNy8qICcgKi8pIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgaWYgKGNoID09PSAweDI3LyogJyAqLykge1xuICAgICAgICBjYXB0dXJlU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIG5vZGVJbmRlbnQpKTtcbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIH0gZWxzZSBpZiAoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyJyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhcicpO1xufVxuXG5mdW5jdGlvbiByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjYXB0dXJlU3RhcnQsXG4gICAgICBjYXB0dXJlRW5kLFxuICAgICAgaGV4TGVuZ3RoLFxuICAgICAgaGV4UmVzdWx0LFxuICAgICAgdG1wLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjIvKiBcIiAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIHN0YXRlLnBvc2l0aW9uKys7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDIyLyogXCIgKi8pIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4NUMvKiBcXCAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCk7XG5cbiAgICAgICAgLy8gVE9ETzogcmV3b3JrIHRvIGlubGluZSBmbiB3aXRoIG5vIHR5cGUgY2FzdD9cbiAgICAgIH0gZWxzZSBpZiAoY2ggPCAyNTYgJiYgc2ltcGxlRXNjYXBlQ2hlY2tbY2hdKSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBzaW1wbGVFc2NhcGVNYXBbY2hdO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgICB9IGVsc2UgaWYgKCh0bXAgPSBlc2NhcGVkSGV4TGVuKGNoKSkgPiAwKSB7XG4gICAgICAgIGhleExlbmd0aCA9IHRtcDtcbiAgICAgICAgaGV4UmVzdWx0ID0gMDtcblxuICAgICAgICBmb3IgKDsgaGV4TGVuZ3RoID4gMDsgaGV4TGVuZ3RoLS0pIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoKHRtcCA9IGZyb21IZXhDb2RlKGNoKSkgPj0gMCkge1xuICAgICAgICAgICAgaGV4UmVzdWx0ID0gKGhleFJlc3VsdCA8PCA0KSArIHRtcDtcblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZXhwZWN0ZWQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNoYXJGcm9tQ29kZXBvaW50KGhleFJlc3VsdCk7XG5cbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3Vua25vd24gZXNjYXBlIHNlcXVlbmNlJyk7XG4gICAgICB9XG5cbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgdHJ1ZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXInKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRGbG93Q29sbGVjdGlvbihzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgcmVhZE5leHQgPSB0cnVlLFxuICAgICAgX2xpbmUsXG4gICAgICBfbGluZVN0YXJ0LFxuICAgICAgX3BvcyxcbiAgICAgIF90YWcgICAgID0gc3RhdGUudGFnLFxuICAgICAgX3Jlc3VsdCxcbiAgICAgIF9hbmNob3IgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgdGVybWluYXRvcixcbiAgICAgIGlzUGFpcixcbiAgICAgIGlzRXhwbGljaXRQYWlyLFxuICAgICAgaXNNYXBwaW5nLFxuICAgICAgb3ZlcnJpZGFibGVLZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgIGtleU5vZGUsXG4gICAgICBrZXlUYWcsXG4gICAgICB2YWx1ZU5vZGUsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHg1Qi8qIFsgKi8pIHtcbiAgICB0ZXJtaW5hdG9yID0gMHg1RDsvKiBdICovXG4gICAgaXNNYXBwaW5nID0gZmFsc2U7XG4gICAgX3Jlc3VsdCA9IFtdO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDdCLyogeyAqLykge1xuICAgIHRlcm1pbmF0b3IgPSAweDdEOy8qIH0gKi9cbiAgICBpc01hcHBpbmcgPSB0cnVlO1xuICAgIF9yZXN1bHQgPSB7fTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gdGVybWluYXRvcikge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgc3RhdGUua2luZCA9IGlzTWFwcGluZyA/ICdtYXBwaW5nJyA6ICdzZXF1ZW5jZSc7XG4gICAgICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghcmVhZE5leHQpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdtaXNzZWQgY29tbWEgYmV0d2VlbiBmbG93IGNvbGxlY3Rpb24gZW50cmllcycpO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MkMvKiAsICovKSB7XG4gICAgICAvLyBcImZsb3cgY29sbGVjdGlvbiBlbnRyaWVzIGNhbiBuZXZlciBiZSBjb21wbGV0ZWx5IGVtcHR5XCIsIGFzIHBlciBZQU1MIDEuMiwgc2VjdGlvbiA3LjRcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsIFwiZXhwZWN0ZWQgdGhlIG5vZGUgY29udGVudCwgYnV0IGZvdW5kICcsJ1wiKTtcbiAgICB9XG5cbiAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IGZhbHNlO1xuXG4gICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcbiAgICAgICAgaXNQYWlyID0gaXNFeHBsaWNpdFBhaXIgPSB0cnVlO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7IC8vIFNhdmUgdGhlIGN1cnJlbnQgbGluZS5cbiAgICBfbGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0O1xuICAgIF9wb3MgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAga2V5VGFnID0gc3RhdGUudGFnO1xuICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKChpc0V4cGxpY2l0UGFpciB8fCBzdGF0ZS5saW5lID09PSBfbGluZSkgJiYgY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBpc1BhaXIgPSB0cnVlO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG4gICAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB2YWx1ZU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKGlzTWFwcGluZykge1xuICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgX2xpbmUsIF9saW5lU3RhcnQsIF9wb3MpO1xuICAgIH0gZWxzZSBpZiAoaXNQYWlyKSB7XG4gICAgICBfcmVzdWx0LnB1c2goc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgbnVsbCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgX2xpbmUsIF9saW5lU3RhcnQsIF9wb3MpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3Jlc3VsdC5wdXNoKGtleU5vZGUpO1xuICAgIH1cblxuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMHgyQy8qICwgKi8pIHtcbiAgICAgIHJlYWROZXh0ID0gdHJ1ZTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVhZE5leHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBmbG93IGNvbGxlY3Rpb24nKTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjYXB0dXJlU3RhcnQsXG4gICAgICBmb2xkaW5nLFxuICAgICAgY2hvbXBpbmcgICAgICAgPSBDSE9NUElOR19DTElQLFxuICAgICAgZGlkUmVhZENvbnRlbnQgPSBmYWxzZSxcbiAgICAgIGRldGVjdGVkSW5kZW50ID0gZmFsc2UsXG4gICAgICB0ZXh0SW5kZW50ICAgICA9IG5vZGVJbmRlbnQsXG4gICAgICBlbXB0eUxpbmVzICAgICA9IDAsXG4gICAgICBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlLFxuICAgICAgdG1wLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4N0MvKiB8ICovKSB7XG4gICAgZm9sZGluZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDNFLyogPiAqLykge1xuICAgIGZvbGRpbmcgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAweDJCLyogKyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICAgIGlmIChDSE9NUElOR19DTElQID09PSBjaG9tcGluZykge1xuICAgICAgICBjaG9tcGluZyA9IChjaCA9PT0gMHgyQi8qICsgKi8pID8gQ0hPTVBJTkdfS0VFUCA6IENIT01QSU5HX1NUUklQO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3JlcGVhdCBvZiBhIGNob21waW5nIG1vZGUgaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICgodG1wID0gZnJvbURlY2ltYWxDb2RlKGNoKSkgPj0gMCkge1xuICAgICAgaWYgKHRtcCA9PT0gMCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGV4cGxpY2l0IGluZGVudGF0aW9uIHdpZHRoIG9mIGEgYmxvY2sgc2NhbGFyOyBpdCBjYW5ub3QgYmUgbGVzcyB0aGFuIG9uZScpO1xuICAgICAgfSBlbHNlIGlmICghZGV0ZWN0ZWRJbmRlbnQpIHtcbiAgICAgICAgdGV4dEluZGVudCA9IG5vZGVJbmRlbnQgKyB0bXAgLSAxO1xuICAgICAgICBkZXRlY3RlZEluZGVudCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAncmVwZWF0IG9mIGFuIGluZGVudGF0aW9uIHdpZHRoIGlkZW50aWZpZXInKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKTtcblxuICAgIGlmIChjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgICB3aGlsZSAoIWlzX0VPTChjaCkgJiYgKGNoICE9PSAwKSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG4gICAgc3RhdGUubGluZUluZGVudCA9IDA7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgd2hpbGUgKCghZGV0ZWN0ZWRJbmRlbnQgfHwgc3RhdGUubGluZUluZGVudCA8IHRleHRJbmRlbnQpICYmXG4gICAgICAgICAgIChjaCA9PT0gMHgyMC8qIFNwYWNlICovKSkge1xuICAgICAgc3RhdGUubGluZUluZGVudCsrO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmICghZGV0ZWN0ZWRJbmRlbnQgJiYgc3RhdGUubGluZUluZGVudCA+IHRleHRJbmRlbnQpIHtcbiAgICAgIHRleHRJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50O1xuICAgIH1cblxuICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBlbXB0eUxpbmVzKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBFbmQgb2YgdGhlIHNjYWxhci5cbiAgICBpZiAoc3RhdGUubGluZUluZGVudCA8IHRleHRJbmRlbnQpIHtcblxuICAgICAgLy8gUGVyZm9ybSB0aGUgY2hvbXBpbmcuXG4gICAgICBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0tFRVApIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0NMSVApIHtcbiAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB0aGUgc2NhbGFyIGlzIG5vdCBlbXB0eS5cbiAgICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gJ1xcbic7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQnJlYWsgdGhpcyBgd2hpbGVgIGN5Y2xlIGFuZCBnbyB0byB0aGUgZnVuY2l0b24ncyBlcGlsb2d1ZS5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEZvbGRlZCBzdHlsZTogdXNlIGZhbmN5IHJ1bGVzIHRvIGhhbmRsZSBsaW5lIGJyZWFrcy5cbiAgICBpZiAoZm9sZGluZykge1xuXG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgKG1vcmUtaW5kZW50ZWQgbGluZXMpIGFyZSBub3QgZm9sZGVkLlxuICAgICAgaWYgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IHRydWU7XG4gICAgICAgIC8vIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGNvbnRlbnQgbGluZSAoY2YuIEV4YW1wbGUgOC4xKVxuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuXG4gICAgICAvLyBFbmQgb2YgbW9yZS1pbmRlbnRlZCBibG9jay5cbiAgICAgIH0gZWxzZSBpZiAoYXRNb3JlSW5kZW50ZWQpIHtcbiAgICAgICAgYXRNb3JlSW5kZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGVtcHR5TGluZXMgKyAxKTtcblxuICAgICAgLy8gSnVzdCBvbmUgbGluZSBicmVhayAtIHBlcmNlaXZlIGFzIHRoZSBzYW1lIGxpbmUuXG4gICAgICB9IGVsc2UgaWYgKGVtcHR5TGluZXMgPT09IDApIHtcbiAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB3ZSBoYXZlIGFscmVhZHkgcmVhZCBzb21lIHNjYWxhciBjb250ZW50LlxuICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgLy8gU2V2ZXJhbCBsaW5lIGJyZWFrcyAtIHBlcmNlaXZlIGFzIGRpZmZlcmVudCBsaW5lcy5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBlbXB0eUxpbmVzKTtcbiAgICAgIH1cblxuICAgIC8vIExpdGVyYWwgc3R5bGU6IGp1c3QgYWRkIGV4YWN0IG51bWJlciBvZiBsaW5lIGJyZWFrcyBiZXR3ZWVuIGNvbnRlbnQgbGluZXMuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEtlZXAgYWxsIGxpbmUgYnJlYWtzIGV4Y2VwdCB0aGUgaGVhZGVyIGxpbmUgYnJlYWsuXG4gICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgIH1cblxuICAgIGRpZFJlYWRDb250ZW50ID0gdHJ1ZTtcbiAgICBkZXRlY3RlZEluZGVudCA9IHRydWU7XG4gICAgZW1wdHlMaW5lcyA9IDA7XG4gICAgY2FwdHVyZVN0YXJ0ID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB3aGlsZSAoIWlzX0VPTChjaCkgJiYgKGNoICE9PSAwKSkge1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCBmYWxzZSk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIF9saW5lLFxuICAgICAgX3RhZyAgICAgID0gc3RhdGUudGFnLFxuICAgICAgX2FuY2hvciAgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgX3Jlc3VsdCAgID0gW10sXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICBkZXRlY3RlZCAgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIC8vIHRoZXJlIGlzIGEgbGVhZGluZyB0YWIgYmVmb3JlIHRoaXMgdG9rZW4sIHNvIGl0IGNhbid0IGJlIGEgYmxvY2sgc2VxdWVuY2UvbWFwcGluZztcbiAgLy8gaXQgY2FuIHN0aWxsIGJlIGZsb3cgc2VxdWVuY2UvbWFwcGluZyBvciBhIHNjYWxhclxuICBpZiAoc3RhdGUuZmlyc3RUYWJJbkxpbmUgIT09IC0xKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgaWYgKHN0YXRlLmZpcnN0VGFiSW5MaW5lICE9PSAtMSkge1xuICAgICAgc3RhdGUucG9zaXRpb24gPSBzdGF0ZS5maXJzdFRhYkluTGluZTtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWIgY2hhcmFjdGVycyBtdXN0IG5vdCBiZSB1c2VkIGluIGluZGVudGF0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKGNoICE9PSAweDJELyogLSAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgaWYgKCFpc19XU19PUl9FT0woZm9sbG93aW5nKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICBpZiAoc3RhdGUubGluZUluZGVudCA8PSBub2RlSW5kZW50KSB7XG4gICAgICAgIF9yZXN1bHQucHVzaChudWxsKTtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgX3Jlc3VsdC5wdXNoKHN0YXRlLnJlc3VsdCk7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmICgoc3RhdGUubGluZSA9PT0gX2xpbmUgfHwgc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQpICYmIChjaCAhPT0gMCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgaW5kZW50YXRpb24gb2YgYSBzZXF1ZW5jZSBlbnRyeScpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkZXRlY3RlZCkge1xuICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICBzdGF0ZS5raW5kID0gJ3NlcXVlbmNlJztcbiAgICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrTWFwcGluZyhzdGF0ZSwgbm9kZUluZGVudCwgZmxvd0luZGVudCkge1xuICB2YXIgZm9sbG93aW5nLFxuICAgICAgYWxsb3dDb21wYWN0LFxuICAgICAgX2xpbmUsXG4gICAgICBfa2V5TGluZSxcbiAgICAgIF9rZXlMaW5lU3RhcnQsXG4gICAgICBfa2V5UG9zLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIF9hbmNob3IgICAgICAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBfcmVzdWx0ICAgICAgID0ge30sXG4gICAgICBvdmVycmlkYWJsZUtleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAga2V5VGFnICAgICAgICA9IG51bGwsXG4gICAgICBrZXlOb2RlICAgICAgID0gbnVsbCxcbiAgICAgIHZhbHVlTm9kZSAgICAgPSBudWxsLFxuICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWQgICAgICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgLy8gdGhlcmUgaXMgYSBsZWFkaW5nIHRhYiBiZWZvcmUgdGhpcyB0b2tlbiwgc28gaXQgY2FuJ3QgYmUgYSBibG9jayBzZXF1ZW5jZS9tYXBwaW5nO1xuICAvLyBpdCBjYW4gc3RpbGwgYmUgZmxvdyBzZXF1ZW5jZS9tYXBwaW5nIG9yIGEgc2NhbGFyXG4gIGlmIChzdGF0ZS5maXJzdFRhYkluTGluZSAhPT0gLTEpIHJldHVybiBmYWxzZTtcblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBpZiAoIWF0RXhwbGljaXRLZXkgJiYgc3RhdGUuZmlyc3RUYWJJbkxpbmUgIT09IC0xKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiA9IHN0YXRlLmZpcnN0VGFiSW5MaW5lO1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhYiBjaGFyYWN0ZXJzIG11c3Qgbm90IGJlIHVzZWQgaW4gaW5kZW50YXRpb24nKTtcbiAgICB9XG5cbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG4gICAgX2xpbmUgPSBzdGF0ZS5saW5lOyAvLyBTYXZlIHRoZSBjdXJyZW50IGxpbmUuXG5cbiAgICAvL1xuICAgIC8vIEV4cGxpY2l0IG5vdGF0aW9uIGNhc2UuIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgYmxvY2tzOlxuICAgIC8vIGZpcnN0IGZvciB0aGUga2V5IChkZW5vdGVkIGJ5IFwiP1wiKSBhbmQgc2Vjb25kIGZvciB0aGUgdmFsdWUgKGRlbm90ZWQgYnkgXCI6XCIpXG4gICAgLy9cbiAgICBpZiAoKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgzQS8qIDogKi8pICYmIGlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgzRi8qID8gKi8pIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgbnVsbCwgX2tleUxpbmUsIF9rZXlMaW5lU3RhcnQsIF9rZXlQb3MpO1xuICAgICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICBhdEV4cGxpY2l0S2V5ID0gdHJ1ZTtcbiAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTtcblxuICAgICAgfSBlbHNlIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgIC8vIGkuZS4gMHgzQS8qIDogKi8gPT09IGNoYXJhY3RlciBhZnRlciB0aGUgZXhwbGljaXQga2V5LlxuICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgIGFsbG93Q29tcGFjdCA9IHRydWU7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbmNvbXBsZXRlIGV4cGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBrZXkgbm9kZSBpcyBtaXNzZWQ7IG9yIGZvbGxvd2VkIGJ5IGEgbm9uLXRhYnVsYXRlZCBlbXB0eSBsaW5lJyk7XG4gICAgICB9XG5cbiAgICAgIHN0YXRlLnBvc2l0aW9uICs9IDE7XG4gICAgICBjaCA9IGZvbGxvd2luZztcblxuICAgIC8vXG4gICAgLy8gSW1wbGljaXQgbm90YXRpb24gY2FzZS4gRmxvdy1zdHlsZSBub2RlIGFzIHRoZSBrZXkgZmlyc3QsIHRoZW4gXCI6XCIsIGFuZCB0aGUgdmFsdWUuXG4gICAgLy9cbiAgICB9IGVsc2Uge1xuICAgICAgX2tleUxpbmUgPSBzdGF0ZS5saW5lO1xuICAgICAgX2tleUxpbmVTdGFydCA9IHN0YXRlLmxpbmVTdGFydDtcbiAgICAgIF9rZXlQb3MgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgICAgaWYgKCFjb21wb3NlTm9kZShzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX09VVCwgZmFsc2UsIHRydWUpKSB7XG4gICAgICAgIC8vIE5laXRoZXIgaW1wbGljaXQgbm9yIGV4cGxpY2l0IG5vdGF0aW9uLlxuICAgICAgICAvLyBSZWFkaW5nIGlzIGRvbmUuIEdvIHRvIHRoZSBlcGlsb2d1ZS5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSkge1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgICAgaWYgKCFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBleHBlY3RlZCBhZnRlciB0aGUga2V5LXZhbHVlIHNlcGFyYXRvciB3aXRoaW4gYSBibG9jayBtYXBwaW5nJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsLCBfa2V5TGluZSwgX2tleUxpbmVTdGFydCwgX2tleVBvcyk7XG4gICAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICAgIGFsbG93Q29tcGFjdCA9IGZhbHNlO1xuICAgICAgICAgIGtleVRhZyA9IHN0YXRlLnRhZztcbiAgICAgICAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuXG4gICAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0ZWQpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2FuIG5vdCByZWFkIGFuIGltcGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBjb2xvbiBpcyBtaXNzZWQnKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCB0aGUgcmVzdWx0IG9mIGBjb21wb3NlTm9kZWAuXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmIChkZXRlY3RlZCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2FuIG5vdCByZWFkIGEgYmxvY2sgbWFwcGluZyBlbnRyeTsgYSBtdWx0aWxpbmUga2V5IG1heSBub3QgYmUgYW4gaW1wbGljaXQga2V5Jyk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBLZWVwIHRoZSByZXN1bHQgb2YgYGNvbXBvc2VOb2RlYC5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIENvbW1vbiByZWFkaW5nIGNvZGUgZm9yIGJvdGggZXhwbGljaXQgYW5kIGltcGxpY2l0IG5vdGF0aW9ucy5cbiAgICAvL1xuICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkge1xuICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgX2tleUxpbmUgPSBzdGF0ZS5saW5lO1xuICAgICAgICBfa2V5TGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0O1xuICAgICAgICBfa2V5UG9zID0gc3RhdGUucG9zaXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9CTE9DS19PVVQsIHRydWUsIGFsbG93Q29tcGFjdCkpIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlTm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgX2tleUxpbmUsIF9rZXlMaW5lU3RhcnQsIF9rZXlQb3MpO1xuICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoKHN0YXRlLmxpbmUgPT09IF9saW5lIHx8IHN0YXRlLmxpbmVJbmRlbnQgPiBub2RlSW5kZW50KSAmJiAoY2ggIT09IDApKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGluZGVudGF0aW9uIG9mIGEgbWFwcGluZyBlbnRyeScpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIEVwaWxvZ3VlLlxuICAvL1xuXG4gIC8vIFNwZWNpYWwgY2FzZTogbGFzdCBtYXBwaW5nJ3Mgbm9kZSBjb250YWlucyBvbmx5IHRoZSBrZXkgaW4gZXhwbGljaXQgbm90YXRpb24uXG4gIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwsIF9rZXlMaW5lLCBfa2V5TGluZVN0YXJ0LCBfa2V5UG9zKTtcbiAgfVxuXG4gIC8vIEV4cG9zZSB0aGUgcmVzdWx0aW5nIG1hcHBpbmcuXG4gIGlmIChkZXRlY3RlZCkge1xuICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICBzdGF0ZS5raW5kID0gJ21hcHBpbmcnO1xuICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gZGV0ZWN0ZWQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRUYWdQcm9wZXJ0eShzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uLFxuICAgICAgaXNWZXJiYXRpbSA9IGZhbHNlLFxuICAgICAgaXNOYW1lZCAgICA9IGZhbHNlLFxuICAgICAgdGFnSGFuZGxlLFxuICAgICAgdGFnTmFtZSxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDIxLyogISAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChzdGF0ZS50YWcgIT09IG51bGwpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgYSB0YWcgcHJvcGVydHknKTtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4M0MvKiA8ICovKSB7XG4gICAgaXNWZXJiYXRpbSA9IHRydWU7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7XG4gICAgaXNOYW1lZCA9IHRydWU7XG4gICAgdGFnSGFuZGxlID0gJyEhJztcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgfSBlbHNlIHtcbiAgICB0YWdIYW5kbGUgPSAnISc7XG4gIH1cblxuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICBpZiAoaXNWZXJiYXRpbSkge1xuICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgd2hpbGUgKGNoICE9PSAwICYmIGNoICE9PSAweDNFLyogPiAqLyk7XG5cbiAgICBpZiAoc3RhdGUucG9zaXRpb24gPCBzdGF0ZS5sZW5ndGgpIHtcbiAgICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgdmVyYmF0aW0gdGFnJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuXG4gICAgICBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7XG4gICAgICAgIGlmICghaXNOYW1lZCkge1xuICAgICAgICAgIHRhZ0hhbmRsZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiAtIDEsIHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgICAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KHRhZ0hhbmRsZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lZCB0YWcgaGFuZGxlIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVycycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlzTmFtZWQgPSB0cnVlO1xuICAgICAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBleGNsYW1hdGlvbiBtYXJrcycpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICB0YWdOYW1lID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoUEFUVEVSTl9GTE9XX0lORElDQVRPUlMudGVzdCh0YWdOYW1lKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0YWdOYW1lICYmICFQQVRURVJOX1RBR19VUkkudGVzdCh0YWdOYW1lKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgbmFtZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnM6ICcgKyB0YWdOYW1lKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgdGFnTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudCh0YWdOYW1lKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBuYW1lIGlzIG1hbGZvcm1lZDogJyArIHRhZ05hbWUpO1xuICB9XG5cbiAgaWYgKGlzVmVyYmF0aW0pIHtcbiAgICBzdGF0ZS50YWcgPSB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5JDEuY2FsbChzdGF0ZS50YWdNYXAsIHRhZ0hhbmRsZSkpIHtcbiAgICBzdGF0ZS50YWcgPSBzdGF0ZS50YWdNYXBbdGFnSGFuZGxlXSArIHRhZ05hbWU7XG5cbiAgfSBlbHNlIGlmICh0YWdIYW5kbGUgPT09ICchJykge1xuICAgIHN0YXRlLnRhZyA9ICchJyArIHRhZ05hbWU7XG5cbiAgfSBlbHNlIGlmICh0YWdIYW5kbGUgPT09ICchIScpIHtcbiAgICBzdGF0ZS50YWcgPSAndGFnOnlhbWwub3JnLDIwMDI6JyArIHRhZ05hbWU7XG5cbiAgfSBlbHNlIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5kZWNsYXJlZCB0YWcgaGFuZGxlIFwiJyArIHRhZ0hhbmRsZSArICdcIicpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjYvKiAmICovKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiBhbiBhbmNob3IgcHJvcGVydHknKTtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpICYmICFpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBpZiAoc3RhdGUucG9zaXRpb24gPT09IF9wb3NpdGlvbikge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lIG9mIGFuIGFuY2hvciBub2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyJyk7XG4gIH1cblxuICBzdGF0ZS5hbmNob3IgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJlYWRBbGlhcyhzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uLCBhbGlhcyxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDJBLyogKiAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpICYmICFpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBpZiAoc3RhdGUucG9zaXRpb24gPT09IF9wb3NpdGlvbikge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lIG9mIGFuIGFsaWFzIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXInKTtcbiAgfVxuXG4gIGFsaWFzID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKCFfaGFzT3duUHJvcGVydHkkMS5jYWxsKHN0YXRlLmFuY2hvck1hcCwgYWxpYXMpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuaWRlbnRpZmllZCBhbGlhcyBcIicgKyBhbGlhcyArICdcIicpO1xuICB9XG5cbiAgc3RhdGUucmVzdWx0ID0gc3RhdGUuYW5jaG9yTWFwW2FsaWFzXTtcbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29tcG9zZU5vZGUoc3RhdGUsIHBhcmVudEluZGVudCwgbm9kZUNvbnRleHQsIGFsbG93VG9TZWVrLCBhbGxvd0NvbXBhY3QpIHtcbiAgdmFyIGFsbG93QmxvY2tTdHlsZXMsXG4gICAgICBhbGxvd0Jsb2NrU2NhbGFycyxcbiAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyxcbiAgICAgIGluZGVudFN0YXR1cyA9IDEsIC8vIDE6IHRoaXM+cGFyZW50LCAwOiB0aGlzPXBhcmVudCwgLTE6IHRoaXM8cGFyZW50XG4gICAgICBhdE5ld0xpbmUgID0gZmFsc2UsXG4gICAgICBoYXNDb250ZW50ID0gZmFsc2UsXG4gICAgICB0eXBlSW5kZXgsXG4gICAgICB0eXBlUXVhbnRpdHksXG4gICAgICB0eXBlTGlzdCxcbiAgICAgIHR5cGUsXG4gICAgICBmbG93SW5kZW50LFxuICAgICAgYmxvY2tJbmRlbnQ7XG5cbiAgaWYgKHN0YXRlLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUubGlzdGVuZXIoJ29wZW4nLCBzdGF0ZSk7XG4gIH1cblxuICBzdGF0ZS50YWcgICAgPSBudWxsO1xuICBzdGF0ZS5hbmNob3IgPSBudWxsO1xuICBzdGF0ZS5raW5kICAgPSBudWxsO1xuICBzdGF0ZS5yZXN1bHQgPSBudWxsO1xuXG4gIGFsbG93QmxvY2tTdHlsZXMgPSBhbGxvd0Jsb2NrU2NhbGFycyA9IGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9XG4gICAgQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0IHx8XG4gICAgQ09OVEVYVF9CTE9DS19JTiAgPT09IG5vZGVDb250ZXh0O1xuXG4gIGlmIChhbGxvd1RvU2Vlaykge1xuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgIGF0TmV3TGluZSA9IHRydWU7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAwO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHtcbiAgICB3aGlsZSAocmVhZFRhZ1Byb3BlcnR5KHN0YXRlKSB8fCByZWFkQW5jaG9yUHJvcGVydHkoc3RhdGUpKSB7XG4gICAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICAgIGF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGFsbG93QmxvY2tTdHlsZXM7XG5cbiAgICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zKSB7XG4gICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYXROZXdMaW5lIHx8IGFsbG93Q29tcGFjdDtcbiAgfVxuXG4gIGlmIChpbmRlbnRTdGF0dXMgPT09IDEgfHwgQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0KSB7XG4gICAgaWYgKENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQgfHwgQ09OVEVYVF9GTE9XX09VVCA9PT0gbm9kZUNvbnRleHQpIHtcbiAgICAgIGZsb3dJbmRlbnQgPSBwYXJlbnRJbmRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsb3dJbmRlbnQgPSBwYXJlbnRJbmRlbnQgKyAxO1xuICAgIH1cblxuICAgIGJsb2NrSW5kZW50ID0gc3RhdGUucG9zaXRpb24gLSBzdGF0ZS5saW5lU3RhcnQ7XG5cbiAgICBpZiAoaW5kZW50U3RhdHVzID09PSAxKSB7XG4gICAgICBpZiAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zICYmXG4gICAgICAgICAgKHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBibG9ja0luZGVudCkgfHxcbiAgICAgICAgICAgcmVhZEJsb2NrTWFwcGluZyhzdGF0ZSwgYmxvY2tJbmRlbnQsIGZsb3dJbmRlbnQpKSB8fFxuICAgICAgICAgIHJlYWRGbG93Q29sbGVjdGlvbihzdGF0ZSwgZmxvd0luZGVudCkpIHtcbiAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKGFsbG93QmxvY2tTY2FsYXJzICYmIHJlYWRCbG9ja1NjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkpIHx8XG4gICAgICAgICAgICByZWFkU2luZ2xlUXVvdGVkU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSB8fFxuICAgICAgICAgICAgcmVhZERvdWJsZVF1b3RlZFNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlYWRBbGlhcyhzdGF0ZSkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzdGF0ZS50YWcgIT09IG51bGwgfHwgc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYWxpYXMgbm9kZSBzaG91bGQgbm90IGhhdmUgYW55IHByb3BlcnRpZXMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWFkUGxhaW5TY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQsIENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQpKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc3RhdGUudGFnID09PSBudWxsKSB7XG4gICAgICAgICAgICBzdGF0ZS50YWcgPSAnPyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpbmRlbnRTdGF0dXMgPT09IDApIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZTogYmxvY2sgc2VxdWVuY2VzIGFyZSBhbGxvd2VkIHRvIGhhdmUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbCBhcyB0aGUgcGFyZW50LlxuICAgICAgLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyNzk5Nzg0XG4gICAgICBoYXNDb250ZW50ID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zICYmIHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBibG9ja0luZGVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnRhZyA9PT0gbnVsbCkge1xuICAgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgIH1cblxuICB9IGVsc2UgaWYgKHN0YXRlLnRhZyA9PT0gJz8nKSB7XG4gICAgLy8gSW1wbGljaXQgcmVzb2x2aW5nIGlzIG5vdCBhbGxvd2VkIGZvciBub24tc2NhbGFyIHR5cGVzLCBhbmQgJz8nXG4gICAgLy8gbm9uLXNwZWNpZmljIHRhZyBpcyBvbmx5IGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gcGxhaW4gc2NhbGFycy5cbiAgICAvL1xuICAgIC8vIFdlIG9ubHkgbmVlZCB0byBjaGVjayBraW5kIGNvbmZvcm1pdHkgaW4gY2FzZSB1c2VyIGV4cGxpY2l0bHkgYXNzaWducyAnPydcbiAgICAvLyB0YWcsIGZvciBleGFtcGxlIGxpa2UgdGhpczogXCIhPD8+IFswXVwiXG4gICAgLy9cbiAgICBpZiAoc3RhdGUucmVzdWx0ICE9PSBudWxsICYmIHN0YXRlLmtpbmQgIT09ICdzY2FsYXInKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITw/PiB0YWc7IGl0IHNob3VsZCBiZSBcInNjYWxhclwiLCBub3QgXCInICsgc3RhdGUua2luZCArICdcIicpO1xuICAgIH1cblxuICAgIGZvciAodHlwZUluZGV4ID0gMCwgdHlwZVF1YW50aXR5ID0gc3RhdGUuaW1wbGljaXRUeXBlcy5sZW5ndGg7IHR5cGVJbmRleCA8IHR5cGVRdWFudGl0eTsgdHlwZUluZGV4ICs9IDEpIHtcbiAgICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW3R5cGVJbmRleF07XG5cbiAgICAgIGlmICh0eXBlLnJlc29sdmUoc3RhdGUucmVzdWx0KSkgeyAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWRcbiAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTtcbiAgICAgICAgc3RhdGUudGFnID0gdHlwZS50YWc7XG4gICAgICAgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RhdGUudGFnICE9PSAnIScpIHtcbiAgICBpZiAoX2hhc093blByb3BlcnR5JDEuY2FsbChzdGF0ZS50eXBlTWFwW3N0YXRlLmtpbmQgfHwgJ2ZhbGxiYWNrJ10sIHN0YXRlLnRhZykpIHtcbiAgICAgIHR5cGUgPSBzdGF0ZS50eXBlTWFwW3N0YXRlLmtpbmQgfHwgJ2ZhbGxiYWNrJ11bc3RhdGUudGFnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbG9va2luZyBmb3IgbXVsdGkgdHlwZVxuICAgICAgdHlwZSA9IG51bGw7XG4gICAgICB0eXBlTGlzdCA9IHN0YXRlLnR5cGVNYXAubXVsdGlbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXTtcblxuICAgICAgZm9yICh0eXBlSW5kZXggPSAwLCB0eXBlUXVhbnRpdHkgPSB0eXBlTGlzdC5sZW5ndGg7IHR5cGVJbmRleCA8IHR5cGVRdWFudGl0eTsgdHlwZUluZGV4ICs9IDEpIHtcbiAgICAgICAgaWYgKHN0YXRlLnRhZy5zbGljZSgwLCB0eXBlTGlzdFt0eXBlSW5kZXhdLnRhZy5sZW5ndGgpID09PSB0eXBlTGlzdFt0eXBlSW5kZXhdLnRhZykge1xuICAgICAgICAgIHR5cGUgPSB0eXBlTGlzdFt0eXBlSW5kZXhdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5rbm93biB0YWcgITwnICsgc3RhdGUudGFnICsgJz4nKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucmVzdWx0ICE9PSBudWxsICYmIHR5cGUua2luZCAhPT0gc3RhdGUua2luZCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuYWNjZXB0YWJsZSBub2RlIGtpbmQgZm9yICE8JyArIHN0YXRlLnRhZyArICc+IHRhZzsgaXQgc2hvdWxkIGJlIFwiJyArIHR5cGUua2luZCArICdcIiwgbm90IFwiJyArIHN0YXRlLmtpbmQgKyAnXCInKTtcbiAgICB9XG5cbiAgICBpZiAoIXR5cGUucmVzb2x2ZShzdGF0ZS5yZXN1bHQsIHN0YXRlLnRhZykpIHsgLy8gYHN0YXRlLnJlc3VsdGAgdXBkYXRlZCBpbiByZXNvbHZlciBpZiBtYXRjaGVkXG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2Fubm90IHJlc29sdmUgYSBub2RlIHdpdGggITwnICsgc3RhdGUudGFnICsgJz4gZXhwbGljaXQgdGFnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnJlc3VsdCA9IHR5cGUuY29uc3RydWN0KHN0YXRlLnJlc3VsdCwgc3RhdGUudGFnKTtcbiAgICAgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUubGlzdGVuZXIoJ2Nsb3NlJywgc3RhdGUpO1xuICB9XG4gIHJldHVybiBzdGF0ZS50YWcgIT09IG51bGwgfHwgIHN0YXRlLmFuY2hvciAhPT0gbnVsbCB8fCBoYXNDb250ZW50O1xufVxuXG5mdW5jdGlvbiByZWFkRG9jdW1lbnQoc3RhdGUpIHtcbiAgdmFyIGRvY3VtZW50U3RhcnQgPSBzdGF0ZS5wb3NpdGlvbixcbiAgICAgIF9wb3NpdGlvbixcbiAgICAgIGRpcmVjdGl2ZU5hbWUsXG4gICAgICBkaXJlY3RpdmVBcmdzLFxuICAgICAgaGFzRGlyZWN0aXZlcyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgc3RhdGUudmVyc2lvbiA9IG51bGw7XG4gIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IHN0YXRlLmxlZ2FjeTtcbiAgc3RhdGUudGFnTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RhdGUuYW5jaG9yTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gMCB8fCBjaCAhPT0gMHgyNS8qICUgKi8pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGRpcmVjdGl2ZU5hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgICBkaXJlY3RpdmVBcmdzID0gW107XG5cbiAgICBpZiAoZGlyZWN0aXZlTmFtZS5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlIG5hbWUgbXVzdCBub3QgYmUgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgaW4gbGVuZ3RoJyk7XG4gICAgfVxuXG4gICAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX0VPTChjaCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzX0VPTChjaCkpIGJyZWFrO1xuXG4gICAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgZGlyZWN0aXZlQXJncy5wdXNoKHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pKTtcbiAgICB9XG5cbiAgICBpZiAoY2ggIT09IDApIHJlYWRMaW5lQnJlYWsoc3RhdGUpO1xuXG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eSQxLmNhbGwoZGlyZWN0aXZlSGFuZGxlcnMsIGRpcmVjdGl2ZU5hbWUpKSB7XG4gICAgICBkaXJlY3RpdmVIYW5kbGVyc1tkaXJlY3RpdmVOYW1lXShzdGF0ZSwgZGlyZWN0aXZlTmFtZSwgZGlyZWN0aXZlQXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ3Vua25vd24gZG9jdW1lbnQgZGlyZWN0aXZlIFwiJyArIGRpcmVjdGl2ZU5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH1cblxuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IDAgJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pICAgICA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKSA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAyKSA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbiArPSAzO1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICB9IGVsc2UgaWYgKGhhc0RpcmVjdGl2ZXMpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlcyBlbmQgbWFyayBpcyBleHBlY3RlZCcpO1xuICB9XG5cbiAgY29tcG9zZU5vZGUoc3RhdGUsIHN0YXRlLmxpbmVJbmRlbnQgLSAxLCBDT05URVhUX0JMT0NLX09VVCwgZmFsc2UsIHRydWUpO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmNoZWNrTGluZUJyZWFrcyAmJlxuICAgICAgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MudGVzdChzdGF0ZS5pbnB1dC5zbGljZShkb2N1bWVudFN0YXJ0LCBzdGF0ZS5wb3NpdGlvbikpKSB7XG4gICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAnbm9uLUFTQ0lJIGxpbmUgYnJlYWtzIGFyZSBpbnRlcnByZXRlZCBhcyBjb250ZW50Jyk7XG4gIH1cblxuICBzdGF0ZS5kb2N1bWVudHMucHVzaChzdGF0ZS5yZXN1bHQpO1xuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcblxuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgyRS8qIC4gKi8pIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uICs9IDM7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA8IChzdGF0ZS5sZW5ndGggLSAxKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdlbmQgb2YgdGhlIHN0cmVhbSBvciBhIGRvY3VtZW50IHNlcGFyYXRvciBpcyBleHBlY3RlZCcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaW5wdXQgPSBTdHJpbmcoaW5wdXQpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5wdXQubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAvLyBBZGQgdGFpbGluZyBgXFxuYCBpZiBub3QgZXhpc3RzXG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoaW5wdXQubGVuZ3RoIC0gMSkgIT09IDB4MEEvKiBMRiAqLyAmJlxuICAgICAgICBpbnB1dC5jaGFyQ29kZUF0KGlucHV0Lmxlbmd0aCAtIDEpICE9PSAweDBELyogQ1IgKi8pIHtcbiAgICAgIGlucHV0ICs9ICdcXG4nO1xuICAgIH1cblxuICAgIC8vIFN0cmlwIEJPTVxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHN0YXRlID0gbmV3IFN0YXRlJDEoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIHZhciBudWxscG9zID0gaW5wdXQuaW5kZXhPZignXFwwJyk7XG5cbiAgaWYgKG51bGxwb3MgIT09IC0xKSB7XG4gICAgc3RhdGUucG9zaXRpb24gPSBudWxscG9zO1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdudWxsIGJ5dGUgaXMgbm90IGFsbG93ZWQgaW4gaW5wdXQnKTtcbiAgfVxuXG4gIC8vIFVzZSAwIGFzIHN0cmluZyB0ZXJtaW5hdG9yLiBUaGF0IHNpZ25pZmljYW50bHkgc2ltcGxpZmllcyBib3VuZHMgY2hlY2suXG4gIHN0YXRlLmlucHV0ICs9ICdcXDAnO1xuXG4gIHdoaWxlIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgyMC8qIFNwYWNlICovKSB7XG4gICAgc3RhdGUubGluZUluZGVudCArPSAxO1xuICAgIHN0YXRlLnBvc2l0aW9uICs9IDE7XG4gIH1cblxuICB3aGlsZSAoc3RhdGUucG9zaXRpb24gPCAoc3RhdGUubGVuZ3RoIC0gMSkpIHtcbiAgICByZWFkRG9jdW1lbnQoc3RhdGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlLmRvY3VtZW50cztcbn1cblxuXG5mdW5jdGlvbiBsb2FkQWxsJDEoaW5wdXQsIGl0ZXJhdG9yLCBvcHRpb25zKSB7XG4gIGlmIChpdGVyYXRvciAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlcmF0b3IgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMgPSBpdGVyYXRvcjtcbiAgICBpdGVyYXRvciA9IG51bGw7XG4gIH1cblxuICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyk7XG5cbiAgaWYgKHR5cGVvZiBpdGVyYXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBkb2N1bWVudHM7XG4gIH1cblxuICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGRvY3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgaXRlcmF0b3IoZG9jdW1lbnRzW2luZGV4XSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBsb2FkJDEoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIGRvY3VtZW50cyA9IGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIGlmIChkb2N1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgLyplc2xpbnQtZGlzYWJsZSBuby11bmRlZmluZWQqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBkb2N1bWVudHNbMF07XG4gIH1cbiAgdGhyb3cgbmV3IGV4Y2VwdGlvbignZXhwZWN0ZWQgYSBzaW5nbGUgZG9jdW1lbnQgaW4gdGhlIHN0cmVhbSwgYnV0IGZvdW5kIG1vcmUnKTtcbn1cblxuXG52YXIgbG9hZEFsbF8xID0gbG9hZEFsbCQxO1xudmFyIGxvYWRfMSAgICA9IGxvYWQkMTtcblxudmFyIGxvYWRlciA9IHtcblx0bG9hZEFsbDogbG9hZEFsbF8xLFxuXHRsb2FkOiBsb2FkXzFcbn07XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUqL1xuXG5cblxuXG5cbnZhciBfdG9TdHJpbmcgICAgICAgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBDSEFSX0JPTSAgICAgICAgICAgICAgICAgID0gMHhGRUZGO1xudmFyIENIQVJfVEFCICAgICAgICAgICAgICAgICAgPSAweDA5OyAvKiBUYWIgKi9cbnZhciBDSEFSX0xJTkVfRkVFRCAgICAgICAgICAgID0gMHgwQTsgLyogTEYgKi9cbnZhciBDSEFSX0NBUlJJQUdFX1JFVFVSTiAgICAgID0gMHgwRDsgLyogQ1IgKi9cbnZhciBDSEFSX1NQQUNFICAgICAgICAgICAgICAgID0gMHgyMDsgLyogU3BhY2UgKi9cbnZhciBDSEFSX0VYQ0xBTUFUSU9OICAgICAgICAgID0gMHgyMTsgLyogISAqL1xudmFyIENIQVJfRE9VQkxFX1FVT1RFICAgICAgICAgPSAweDIyOyAvKiBcIiAqL1xudmFyIENIQVJfU0hBUlAgICAgICAgICAgICAgICAgPSAweDIzOyAvKiAjICovXG52YXIgQ0hBUl9QRVJDRU5UICAgICAgICAgICAgICA9IDB4MjU7IC8qICUgKi9cbnZhciBDSEFSX0FNUEVSU0FORCAgICAgICAgICAgID0gMHgyNjsgLyogJiAqL1xudmFyIENIQVJfU0lOR0xFX1FVT1RFICAgICAgICAgPSAweDI3OyAvKiAnICovXG52YXIgQ0hBUl9BU1RFUklTSyAgICAgICAgICAgICA9IDB4MkE7IC8qICogKi9cbnZhciBDSEFSX0NPTU1BICAgICAgICAgICAgICAgID0gMHgyQzsgLyogLCAqL1xudmFyIENIQVJfTUlOVVMgICAgICAgICAgICAgICAgPSAweDJEOyAvKiAtICovXG52YXIgQ0hBUl9DT0xPTiAgICAgICAgICAgICAgICA9IDB4M0E7IC8qIDogKi9cbnZhciBDSEFSX0VRVUFMUyAgICAgICAgICAgICAgID0gMHgzRDsgLyogPSAqL1xudmFyIENIQVJfR1JFQVRFUl9USEFOICAgICAgICAgPSAweDNFOyAvKiA+ICovXG52YXIgQ0hBUl9RVUVTVElPTiAgICAgICAgICAgICA9IDB4M0Y7IC8qID8gKi9cbnZhciBDSEFSX0NPTU1FUkNJQUxfQVQgICAgICAgID0gMHg0MDsgLyogQCAqL1xudmFyIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCAgPSAweDVCOyAvKiBbICovXG52YXIgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCA9IDB4NUQ7IC8qIF0gKi9cbnZhciBDSEFSX0dSQVZFX0FDQ0VOVCAgICAgICAgID0gMHg2MDsgLyogYCAqL1xudmFyIENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUICAgPSAweDdCOyAvKiB7ICovXG52YXIgQ0hBUl9WRVJUSUNBTF9MSU5FICAgICAgICA9IDB4N0M7IC8qIHwgKi9cbnZhciBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVQgID0gMHg3RDsgLyogfSAqL1xuXG52YXIgRVNDQVBFX1NFUVVFTkNFUyA9IHt9O1xuXG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDBdICAgPSAnXFxcXDAnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA3XSAgID0gJ1xcXFxhJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwOF0gICA9ICdcXFxcYic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDldICAgPSAnXFxcXHQnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBBXSAgID0gJ1xcXFxuJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQl0gICA9ICdcXFxcdic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MENdICAgPSAnXFxcXGYnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBEXSAgID0gJ1xcXFxyJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgxQl0gICA9ICdcXFxcZSc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjJdICAgPSAnXFxcXFwiJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHg1Q10gICA9ICdcXFxcXFxcXCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4ODVdICAgPSAnXFxcXE4nO1xuRVNDQVBFX1NFUVVFTkNFU1sweEEwXSAgID0gJ1xcXFxfJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgyMDI4XSA9ICdcXFxcTCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjAyOV0gPSAnXFxcXFAnO1xuXG52YXIgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVggPSBbXG4gICd5JywgJ1knLCAneWVzJywgJ1llcycsICdZRVMnLCAnb24nLCAnT24nLCAnT04nLFxuICAnbicsICdOJywgJ25vJywgJ05vJywgJ05PJywgJ29mZicsICdPZmYnLCAnT0ZGJ1xuXTtcblxudmFyIERFUFJFQ0FURURfQkFTRTYwX1NZTlRBWCA9IC9eWy0rXT9bMC05X10rKD86OlswLTlfXSspKyg/OlxcLlswLTlfXSopPyQvO1xuXG5mdW5jdGlvbiBjb21waWxlU3R5bGVNYXAoc2NoZW1hLCBtYXApIHtcbiAgdmFyIHJlc3VsdCwga2V5cywgaW5kZXgsIGxlbmd0aCwgdGFnLCBzdHlsZSwgdHlwZTtcblxuICBpZiAobWFwID09PSBudWxsKSByZXR1cm4ge307XG5cbiAgcmVzdWx0ID0ge307XG4gIGtleXMgPSBPYmplY3Qua2V5cyhtYXApO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB0YWcgPSBrZXlzW2luZGV4XTtcbiAgICBzdHlsZSA9IFN0cmluZyhtYXBbdGFnXSk7XG5cbiAgICBpZiAodGFnLnNsaWNlKDAsIDIpID09PSAnISEnKSB7XG4gICAgICB0YWcgPSAndGFnOnlhbWwub3JnLDIwMDI6JyArIHRhZy5zbGljZSgyKTtcbiAgICB9XG4gICAgdHlwZSA9IHNjaGVtYS5jb21waWxlZFR5cGVNYXBbJ2ZhbGxiYWNrJ11bdGFnXTtcblxuICAgIGlmICh0eXBlICYmIF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHR5cGUuc3R5bGVBbGlhc2VzLCBzdHlsZSkpIHtcbiAgICAgIHN0eWxlID0gdHlwZS5zdHlsZUFsaWFzZXNbc3R5bGVdO1xuICAgIH1cblxuICAgIHJlc3VsdFt0YWddID0gc3R5bGU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBlbmNvZGVIZXgoY2hhcmFjdGVyKSB7XG4gIHZhciBzdHJpbmcsIGhhbmRsZSwgbGVuZ3RoO1xuXG4gIHN0cmluZyA9IGNoYXJhY3Rlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblxuICBpZiAoY2hhcmFjdGVyIDw9IDB4RkYpIHtcbiAgICBoYW5kbGUgPSAneCc7XG4gICAgbGVuZ3RoID0gMjtcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPD0gMHhGRkZGKSB7XG4gICAgaGFuZGxlID0gJ3UnO1xuICAgIGxlbmd0aCA9IDQ7XG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyIDw9IDB4RkZGRkZGRkYpIHtcbiAgICBoYW5kbGUgPSAnVSc7XG4gICAgbGVuZ3RoID0gODtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCdjb2RlIHBvaW50IHdpdGhpbiBhIHN0cmluZyBtYXkgbm90IGJlIGdyZWF0ZXIgdGhhbiAweEZGRkZGRkZGJyk7XG4gIH1cblxuICByZXR1cm4gJ1xcXFwnICsgaGFuZGxlICsgY29tbW9uLnJlcGVhdCgnMCcsIGxlbmd0aCAtIHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xufVxuXG5cbnZhciBRVU9USU5HX1RZUEVfU0lOR0xFID0gMSxcbiAgICBRVU9USU5HX1RZUEVfRE9VQkxFID0gMjtcblxuZnVuY3Rpb24gU3RhdGUob3B0aW9ucykge1xuICB0aGlzLnNjaGVtYSAgICAgICAgPSBvcHRpb25zWydzY2hlbWEnXSB8fCBfZGVmYXVsdDtcbiAgdGhpcy5pbmRlbnQgICAgICAgID0gTWF0aC5tYXgoMSwgKG9wdGlvbnNbJ2luZGVudCddIHx8IDIpKTtcbiAgdGhpcy5ub0FycmF5SW5kZW50ID0gb3B0aW9uc1snbm9BcnJheUluZGVudCddIHx8IGZhbHNlO1xuICB0aGlzLnNraXBJbnZhbGlkICAgPSBvcHRpb25zWydza2lwSW52YWxpZCddIHx8IGZhbHNlO1xuICB0aGlzLmZsb3dMZXZlbCAgICAgPSAoY29tbW9uLmlzTm90aGluZyhvcHRpb25zWydmbG93TGV2ZWwnXSkgPyAtMSA6IG9wdGlvbnNbJ2Zsb3dMZXZlbCddKTtcbiAgdGhpcy5zdHlsZU1hcCAgICAgID0gY29tcGlsZVN0eWxlTWFwKHRoaXMuc2NoZW1hLCBvcHRpb25zWydzdHlsZXMnXSB8fCBudWxsKTtcbiAgdGhpcy5zb3J0S2V5cyAgICAgID0gb3B0aW9uc1snc29ydEtleXMnXSB8fCBmYWxzZTtcbiAgdGhpcy5saW5lV2lkdGggICAgID0gb3B0aW9uc1snbGluZVdpZHRoJ10gfHwgODA7XG4gIHRoaXMubm9SZWZzICAgICAgICA9IG9wdGlvbnNbJ25vUmVmcyddIHx8IGZhbHNlO1xuICB0aGlzLm5vQ29tcGF0TW9kZSAgPSBvcHRpb25zWydub0NvbXBhdE1vZGUnXSB8fCBmYWxzZTtcbiAgdGhpcy5jb25kZW5zZUZsb3cgID0gb3B0aW9uc1snY29uZGVuc2VGbG93J10gfHwgZmFsc2U7XG4gIHRoaXMucXVvdGluZ1R5cGUgICA9IG9wdGlvbnNbJ3F1b3RpbmdUeXBlJ10gPT09ICdcIicgPyBRVU9USU5HX1RZUEVfRE9VQkxFIDogUVVPVElOR19UWVBFX1NJTkdMRTtcbiAgdGhpcy5mb3JjZVF1b3RlcyAgID0gb3B0aW9uc1snZm9yY2VRdW90ZXMnXSB8fCBmYWxzZTtcbiAgdGhpcy5yZXBsYWNlciAgICAgID0gdHlwZW9mIG9wdGlvbnNbJ3JlcGxhY2VyJ10gPT09ICdmdW5jdGlvbicgPyBvcHRpb25zWydyZXBsYWNlciddIDogbnVsbDtcblxuICB0aGlzLmltcGxpY2l0VHlwZXMgPSB0aGlzLnNjaGVtYS5jb21waWxlZEltcGxpY2l0O1xuICB0aGlzLmV4cGxpY2l0VHlwZXMgPSB0aGlzLnNjaGVtYS5jb21waWxlZEV4cGxpY2l0O1xuXG4gIHRoaXMudGFnID0gbnVsbDtcbiAgdGhpcy5yZXN1bHQgPSAnJztcblxuICB0aGlzLmR1cGxpY2F0ZXMgPSBbXTtcbiAgdGhpcy51c2VkRHVwbGljYXRlcyA9IG51bGw7XG59XG5cbi8vIEluZGVudHMgZXZlcnkgbGluZSBpbiBhIHN0cmluZy4gRW1wdHkgbGluZXMgKFxcbiBvbmx5KSBhcmUgbm90IGluZGVudGVkLlxuZnVuY3Rpb24gaW5kZW50U3RyaW5nKHN0cmluZywgc3BhY2VzKSB7XG4gIHZhciBpbmQgPSBjb21tb24ucmVwZWF0KCcgJywgc3BhY2VzKSxcbiAgICAgIHBvc2l0aW9uID0gMCxcbiAgICAgIG5leHQgPSAtMSxcbiAgICAgIHJlc3VsdCA9ICcnLFxuICAgICAgbGluZSxcbiAgICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKHBvc2l0aW9uIDwgbGVuZ3RoKSB7XG4gICAgbmV4dCA9IHN0cmluZy5pbmRleE9mKCdcXG4nLCBwb3NpdGlvbik7XG4gICAgaWYgKG5leHQgPT09IC0xKSB7XG4gICAgICBsaW5lID0gc3RyaW5nLnNsaWNlKHBvc2l0aW9uKTtcbiAgICAgIHBvc2l0aW9uID0gbGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lID0gc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBuZXh0ICsgMSk7XG4gICAgICBwb3NpdGlvbiA9IG5leHQgKyAxO1xuICAgIH1cblxuICAgIGlmIChsaW5lLmxlbmd0aCAmJiBsaW5lICE9PSAnXFxuJykgcmVzdWx0ICs9IGluZDtcblxuICAgIHJlc3VsdCArPSBsaW5lO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpIHtcbiAgcmV0dXJuICdcXG4nICsgY29tbW9uLnJlcGVhdCgnICcsIHN0YXRlLmluZGVudCAqIGxldmVsKTtcbn1cblxuZnVuY3Rpb24gdGVzdEltcGxpY2l0UmVzb2x2aW5nKHN0YXRlLCBzdHIpIHtcbiAgdmFyIGluZGV4LCBsZW5ndGgsIHR5cGU7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHN0YXRlLmltcGxpY2l0VHlwZXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW2luZGV4XTtcblxuICAgIGlmICh0eXBlLnJlc29sdmUoc3RyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBbMzNdIHMtd2hpdGUgOjo9IHMtc3BhY2UgfCBzLXRhYlxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGMpIHtcbiAgcmV0dXJuIGMgPT09IENIQVJfU1BBQ0UgfHwgYyA9PT0gQ0hBUl9UQUI7XG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGNhbiBiZSBwcmludGVkIHdpdGhvdXQgZXNjYXBpbmcuXG4vLyBGcm9tIFlBTUwgMS4yOiBcImFueSBhbGxvd2VkIGNoYXJhY3RlcnMga25vd24gdG8gYmUgbm9uLXByaW50YWJsZVxuLy8gc2hvdWxkIGFsc28gYmUgZXNjYXBlZC4gW0hvd2V2ZXIsXSBUaGlzIGlzblx1MjAxOXQgbWFuZGF0b3J5XCJcbi8vIERlcml2ZWQgZnJvbSBuYi1jaGFyIC0gXFx0IC0gI3g4NSAtICN4QTAgLSAjeDIwMjggLSAjeDIwMjkuXG5mdW5jdGlvbiBpc1ByaW50YWJsZShjKSB7XG4gIHJldHVybiAgKDB4MDAwMjAgPD0gYyAmJiBjIDw9IDB4MDAwMDdFKVxuICAgICAgfHwgKCgweDAwMEExIDw9IGMgJiYgYyA8PSAweDAwRDdGRikgJiYgYyAhPT0gMHgyMDI4ICYmIGMgIT09IDB4MjAyOSlcbiAgICAgIHx8ICgoMHgwRTAwMCA8PSBjICYmIGMgPD0gMHgwMEZGRkQpICYmIGMgIT09IENIQVJfQk9NKVxuICAgICAgfHwgICgweDEwMDAwIDw9IGMgJiYgYyA8PSAweDEwRkZGRik7XG59XG5cbi8vIFszNF0gbnMtY2hhciA6Oj0gbmItY2hhciAtIHMtd2hpdGVcbi8vIFsyN10gbmItY2hhciA6Oj0gYy1wcmludGFibGUgLSBiLWNoYXIgLSBjLWJ5dGUtb3JkZXItbWFya1xuLy8gWzI2XSBiLWNoYXIgIDo6PSBiLWxpbmUtZmVlZCB8IGItY2FycmlhZ2UtcmV0dXJuXG4vLyBJbmNsdWRpbmcgcy13aGl0ZSAoZm9yIHNvbWUgcmVhc29uLCBleGFtcGxlcyBkb2Vzbid0IG1hdGNoIHNwZWNzIGluIHRoaXMgYXNwZWN0KVxuLy8gbnMtY2hhciA6Oj0gYy1wcmludGFibGUgLSBiLWxpbmUtZmVlZCAtIGItY2FycmlhZ2UtcmV0dXJuIC0gYy1ieXRlLW9yZGVyLW1hcmtcbmZ1bmN0aW9uIGlzTnNDaGFyT3JXaGl0ZXNwYWNlKGMpIHtcbiAgcmV0dXJuIGlzUHJpbnRhYmxlKGMpXG4gICAgJiYgYyAhPT0gQ0hBUl9CT01cbiAgICAvLyAtIGItY2hhclxuICAgICYmIGMgIT09IENIQVJfQ0FSUklBR0VfUkVUVVJOXG4gICAgJiYgYyAhPT0gQ0hBUl9MSU5FX0ZFRUQ7XG59XG5cbi8vIFsxMjddICBucy1wbGFpbi1zYWZlKGMpIDo6PSBjID0gZmxvdy1vdXQgIFx1MjFEMiBucy1wbGFpbi1zYWZlLW91dFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmbG93LWluICAgXHUyMUQyIG5zLXBsYWluLXNhZmUtaW5cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYmxvY2sta2V5IFx1MjFEMiBucy1wbGFpbi1zYWZlLW91dFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmbG93LWtleSAgXHUyMUQyIG5zLXBsYWluLXNhZmUtaW5cbi8vIFsxMjhdIG5zLXBsYWluLXNhZmUtb3V0IDo6PSBucy1jaGFyXG4vLyBbMTI5XSAgbnMtcGxhaW4tc2FmZS1pbiA6Oj0gbnMtY2hhciAtIGMtZmxvdy1pbmRpY2F0b3Jcbi8vIFsxMzBdICBucy1wbGFpbi1jaGFyKGMpIDo6PSAgKCBucy1wbGFpbi1zYWZlKGMpIC0gXHUyMDFDOlx1MjAxRCAtIFx1MjAxQyNcdTIwMUQgKVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoIC8qIEFuIG5zLWNoYXIgcHJlY2VkaW5nICovIFx1MjAxQyNcdTIwMUQgKVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoIFx1MjAxQzpcdTIwMUQgLyogRm9sbG93ZWQgYnkgYW4gbnMtcGxhaW4tc2FmZShjKSAqLyApXG5mdW5jdGlvbiBpc1BsYWluU2FmZShjLCBwcmV2LCBpbmJsb2NrKSB7XG4gIHZhciBjSXNOc0NoYXJPcldoaXRlc3BhY2UgPSBpc05zQ2hhck9yV2hpdGVzcGFjZShjKTtcbiAgdmFyIGNJc05zQ2hhciA9IGNJc05zQ2hhck9yV2hpdGVzcGFjZSAmJiAhaXNXaGl0ZXNwYWNlKGMpO1xuICByZXR1cm4gKFxuICAgIC8vIG5zLXBsYWluLXNhZmVcbiAgICBpbmJsb2NrID8gLy8gYyA9IGZsb3ctaW5cbiAgICAgIGNJc05zQ2hhck9yV2hpdGVzcGFjZVxuICAgICAgOiBjSXNOc0NoYXJPcldoaXRlc3BhY2VcbiAgICAgICAgLy8gLSBjLWZsb3ctaW5kaWNhdG9yXG4gICAgICAgICYmIGMgIT09IENIQVJfQ09NTUFcbiAgICAgICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUXG4gICAgICAgICYmIGMgIT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVRcbiAgICAgICAgJiYgYyAhPT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNLRVRcbiAgICAgICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUXG4gIClcbiAgICAvLyBucy1wbGFpbi1jaGFyXG4gICAgJiYgYyAhPT0gQ0hBUl9TSEFSUCAvLyBmYWxzZSBvbiAnIydcbiAgICAmJiAhKHByZXYgPT09IENIQVJfQ09MT04gJiYgIWNJc05zQ2hhcikgLy8gZmFsc2Ugb24gJzogJ1xuICAgIHx8IChpc05zQ2hhck9yV2hpdGVzcGFjZShwcmV2KSAmJiAhaXNXaGl0ZXNwYWNlKHByZXYpICYmIGMgPT09IENIQVJfU0hBUlApIC8vIGNoYW5nZSB0byB0cnVlIG9uICdbXiBdIydcbiAgICB8fCAocHJldiA9PT0gQ0hBUl9DT0xPTiAmJiBjSXNOc0NoYXIpOyAvLyBjaGFuZ2UgdG8gdHJ1ZSBvbiAnOlteIF0nXG59XG5cbi8vIFNpbXBsaWZpZWQgdGVzdCBmb3IgdmFsdWVzIGFsbG93ZWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBwbGFpbiBzdHlsZS5cbmZ1bmN0aW9uIGlzUGxhaW5TYWZlRmlyc3QoYykge1xuICAvLyBVc2VzIGEgc3Vic2V0IG9mIG5zLWNoYXIgLSBjLWluZGljYXRvclxuICAvLyB3aGVyZSBucy1jaGFyID0gbmItY2hhciAtIHMtd2hpdGUuXG4gIC8vIE5vIHN1cHBvcnQgb2YgKCAoIFx1MjAxQz9cdTIwMUQgfCBcdTIwMUM6XHUyMDFEIHwgXHUyMDFDLVx1MjAxRCApIC8qIEZvbGxvd2VkIGJ5IGFuIG5zLXBsYWluLXNhZmUoYykpICovICkgcGFydFxuICByZXR1cm4gaXNQcmludGFibGUoYykgJiYgYyAhPT0gQ0hBUl9CT01cbiAgICAmJiAhaXNXaGl0ZXNwYWNlKGMpIC8vIC0gcy13aGl0ZVxuICAgIC8vIC0gKGMtaW5kaWNhdG9yIDo6PVxuICAgIC8vIFx1MjAxQy1cdTIwMUQgfCBcdTIwMUM/XHUyMDFEIHwgXHUyMDFDOlx1MjAxRCB8IFx1MjAxQyxcdTIwMUQgfCBcdTIwMUNbXHUyMDFEIHwgXHUyMDFDXVx1MjAxRCB8IFx1MjAxQ3tcdTIwMUQgfCBcdTIwMUN9XHUyMDFEXG4gICAgJiYgYyAhPT0gQ0hBUl9NSU5VU1xuICAgICYmIGMgIT09IENIQVJfUVVFU1RJT05cbiAgICAmJiBjICE9PSBDSEFSX0NPTE9OXG4gICAgJiYgYyAhPT0gQ0hBUl9DT01NQVxuICAgICYmIGMgIT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVFxuICAgIC8vIHwgXHUyMDFDI1x1MjAxRCB8IFx1MjAxQyZcdTIwMUQgfCBcdTIwMUMqXHUyMDFEIHwgXHUyMDFDIVx1MjAxRCB8IFx1MjAxQ3xcdTIwMUQgfCBcdTIwMUM9XHUyMDFEIHwgXHUyMDFDPlx1MjAxRCB8IFx1MjAxQydcdTIwMUQgfCBcdTIwMUNcIlx1MjAxRFxuICAgICYmIGMgIT09IENIQVJfU0hBUlBcbiAgICAmJiBjICE9PSBDSEFSX0FNUEVSU0FORFxuICAgICYmIGMgIT09IENIQVJfQVNURVJJU0tcbiAgICAmJiBjICE9PSBDSEFSX0VYQ0xBTUFUSU9OXG4gICAgJiYgYyAhPT0gQ0hBUl9WRVJUSUNBTF9MSU5FXG4gICAgJiYgYyAhPT0gQ0hBUl9FUVVBTFNcbiAgICAmJiBjICE9PSBDSEFSX0dSRUFURVJfVEhBTlxuICAgICYmIGMgIT09IENIQVJfU0lOR0xFX1FVT1RFXG4gICAgJiYgYyAhPT0gQ0hBUl9ET1VCTEVfUVVPVEVcbiAgICAvLyB8IFx1MjAxQyVcdTIwMUQgfCBcdTIwMUNAXHUyMDFEIHwgXHUyMDFDYFx1MjAxRClcbiAgICAmJiBjICE9PSBDSEFSX1BFUkNFTlRcbiAgICAmJiBjICE9PSBDSEFSX0NPTU1FUkNJQUxfQVRcbiAgICAmJiBjICE9PSBDSEFSX0dSQVZFX0FDQ0VOVDtcbn1cblxuLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gcGxhaW4gc3R5bGUuXG5mdW5jdGlvbiBpc1BsYWluU2FmZUxhc3QoYykge1xuICAvLyBqdXN0IG5vdCB3aGl0ZXNwYWNlIG9yIGNvbG9uLCBpdCB3aWxsIGJlIGNoZWNrZWQgdG8gYmUgcGxhaW4gY2hhcmFjdGVyIGxhdGVyXG4gIHJldHVybiAhaXNXaGl0ZXNwYWNlKGMpICYmIGMgIT09IENIQVJfQ09MT047XG59XG5cbi8vIFNhbWUgYXMgJ3N0cmluZycuY29kZVBvaW50QXQocG9zKSwgYnV0IHdvcmtzIGluIG9sZGVyIGJyb3dzZXJzLlxuZnVuY3Rpb24gY29kZVBvaW50QXQoc3RyaW5nLCBwb3MpIHtcbiAgdmFyIGZpcnN0ID0gc3RyaW5nLmNoYXJDb2RlQXQocG9zKSwgc2Vjb25kO1xuICBpZiAoZmlyc3QgPj0gMHhEODAwICYmIGZpcnN0IDw9IDB4REJGRiAmJiBwb3MgKyAxIDwgc3RyaW5nLmxlbmd0aCkge1xuICAgIHNlY29uZCA9IHN0cmluZy5jaGFyQ29kZUF0KHBvcyArIDEpO1xuICAgIGlmIChzZWNvbmQgPj0gMHhEQzAwICYmIHNlY29uZCA8PSAweERGRkYpIHtcbiAgICAgIC8vIGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nI3N1cnJvZ2F0ZS1mb3JtdWxhZVxuICAgICAgcmV0dXJuIChmaXJzdCAtIDB4RDgwMCkgKiAweDQwMCArIHNlY29uZCAtIDB4REMwMCArIDB4MTAwMDA7XG4gICAgfVxuICB9XG4gIHJldHVybiBmaXJzdDtcbn1cblxuLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGJsb2NrIGluZGVudGF0aW9uIGluZGljYXRvciBpcyByZXF1aXJlZC5cbmZ1bmN0aW9uIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSB7XG4gIHZhciBsZWFkaW5nU3BhY2VSZSA9IC9eXFxuKiAvO1xuICByZXR1cm4gbGVhZGluZ1NwYWNlUmUudGVzdChzdHJpbmcpO1xufVxuXG52YXIgU1RZTEVfUExBSU4gICA9IDEsXG4gICAgU1RZTEVfU0lOR0xFICA9IDIsXG4gICAgU1RZTEVfTElURVJBTCA9IDMsXG4gICAgU1RZTEVfRk9MREVEICA9IDQsXG4gICAgU1RZTEVfRE9VQkxFICA9IDU7XG5cbi8vIERldGVybWluZXMgd2hpY2ggc2NhbGFyIHN0eWxlcyBhcmUgcG9zc2libGUgYW5kIHJldHVybnMgdGhlIHByZWZlcnJlZCBzdHlsZS5cbi8vIGxpbmVXaWR0aCA9IC0xID0+IG5vIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IHN0ci5sZW5ndGggPiAwLlxuLy8gUG9zdC1jb25kaXRpb25zOlxuLy8gICAgU1RZTEVfUExBSU4gb3IgU1RZTEVfU0lOR0xFID0+IG5vIFxcbiBhcmUgaW4gdGhlIHN0cmluZy5cbi8vICAgIFNUWUxFX0xJVEVSQUwgPT4gbm8gbGluZXMgYXJlIHN1aXRhYmxlIGZvciBmb2xkaW5nIChvciBsaW5lV2lkdGggaXMgLTEpLlxuLy8gICAgU1RZTEVfRk9MREVEID0+IGEgbGluZSA+IGxpbmVXaWR0aCBhbmQgY2FuIGJlIGZvbGRlZCAoYW5kIGxpbmVXaWR0aCAhPSAtMSkuXG5mdW5jdGlvbiBjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBpbmRlbnRQZXJMZXZlbCwgbGluZVdpZHRoLFxuICB0ZXN0QW1iaWd1b3VzVHlwZSwgcXVvdGluZ1R5cGUsIGZvcmNlUXVvdGVzLCBpbmJsb2NrKSB7XG5cbiAgdmFyIGk7XG4gIHZhciBjaGFyID0gMDtcbiAgdmFyIHByZXZDaGFyID0gbnVsbDtcbiAgdmFyIGhhc0xpbmVCcmVhayA9IGZhbHNlO1xuICB2YXIgaGFzRm9sZGFibGVMaW5lID0gZmFsc2U7IC8vIG9ubHkgY2hlY2tlZCBpZiBzaG91bGRUcmFja1dpZHRoXG4gIHZhciBzaG91bGRUcmFja1dpZHRoID0gbGluZVdpZHRoICE9PSAtMTtcbiAgdmFyIHByZXZpb3VzTGluZUJyZWFrID0gLTE7IC8vIGNvdW50IHRoZSBmaXJzdCBsaW5lIGNvcnJlY3RseVxuICB2YXIgcGxhaW4gPSBpc1BsYWluU2FmZUZpcnN0KGNvZGVQb2ludEF0KHN0cmluZywgMCkpXG4gICAgICAgICAgJiYgaXNQbGFpblNhZmVMYXN0KGNvZGVQb2ludEF0KHN0cmluZywgc3RyaW5nLmxlbmd0aCAtIDEpKTtcblxuICBpZiAoc2luZ2xlTGluZU9ubHkgfHwgZm9yY2VRdW90ZXMpIHtcbiAgICAvLyBDYXNlOiBubyBibG9jayBzdHlsZXMuXG4gICAgLy8gQ2hlY2sgZm9yIGRpc2FsbG93ZWQgY2hhcmFjdGVycyB0byBydWxlIG91dCBwbGFpbiBhbmQgc2luZ2xlLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBjaGFyID49IDB4MTAwMDAgPyBpICs9IDIgOiBpKyspIHtcbiAgICAgIGNoYXIgPSBjb2RlUG9pbnRBdChzdHJpbmcsIGkpO1xuICAgICAgaWYgKCFpc1ByaW50YWJsZShjaGFyKSkge1xuICAgICAgICByZXR1cm4gU1RZTEVfRE9VQkxFO1xuICAgICAgfVxuICAgICAgcGxhaW4gPSBwbGFpbiAmJiBpc1BsYWluU2FmZShjaGFyLCBwcmV2Q2hhciwgaW5ibG9jayk7XG4gICAgICBwcmV2Q2hhciA9IGNoYXI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIENhc2U6IGJsb2NrIHN0eWxlcyBwZXJtaXR0ZWQuXG4gICAgZm9yIChpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGNoYXIgPj0gMHgxMDAwMCA/IGkgKz0gMiA6IGkrKykge1xuICAgICAgY2hhciA9IGNvZGVQb2ludEF0KHN0cmluZywgaSk7XG4gICAgICBpZiAoY2hhciA9PT0gQ0hBUl9MSU5FX0ZFRUQpIHtcbiAgICAgICAgaGFzTGluZUJyZWFrID0gdHJ1ZTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgYW55IGxpbmUgY2FuIGJlIGZvbGRlZC5cbiAgICAgICAgaWYgKHNob3VsZFRyYWNrV2lkdGgpIHtcbiAgICAgICAgICBoYXNGb2xkYWJsZUxpbmUgPSBoYXNGb2xkYWJsZUxpbmUgfHxcbiAgICAgICAgICAgIC8vIEZvbGRhYmxlIGxpbmUgPSB0b28gbG9uZywgYW5kIG5vdCBtb3JlLWluZGVudGVkLlxuICAgICAgICAgICAgKGkgLSBwcmV2aW91c0xpbmVCcmVhayAtIDEgPiBsaW5lV2lkdGggJiZcbiAgICAgICAgICAgICBzdHJpbmdbcHJldmlvdXNMaW5lQnJlYWsgKyAxXSAhPT0gJyAnKTtcbiAgICAgICAgICBwcmV2aW91c0xpbmVCcmVhayA9IGk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWlzUHJpbnRhYmxlKGNoYXIpKSB7XG4gICAgICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gICAgICB9XG4gICAgICBwbGFpbiA9IHBsYWluICYmIGlzUGxhaW5TYWZlKGNoYXIsIHByZXZDaGFyLCBpbmJsb2NrKTtcbiAgICAgIHByZXZDaGFyID0gY2hhcjtcbiAgICB9XG4gICAgLy8gaW4gY2FzZSB0aGUgZW5kIGlzIG1pc3NpbmcgYSBcXG5cbiAgICBoYXNGb2xkYWJsZUxpbmUgPSBoYXNGb2xkYWJsZUxpbmUgfHwgKHNob3VsZFRyYWNrV2lkdGggJiZcbiAgICAgIChpIC0gcHJldmlvdXNMaW5lQnJlYWsgLSAxID4gbGluZVdpZHRoICYmXG4gICAgICAgc3RyaW5nW3ByZXZpb3VzTGluZUJyZWFrICsgMV0gIT09ICcgJykpO1xuICB9XG4gIC8vIEFsdGhvdWdoIGV2ZXJ5IHN0eWxlIGNhbiByZXByZXNlbnQgXFxuIHdpdGhvdXQgZXNjYXBpbmcsIHByZWZlciBibG9jayBzdHlsZXNcbiAgLy8gZm9yIG11bHRpbGluZSwgc2luY2UgdGhleSdyZSBtb3JlIHJlYWRhYmxlIGFuZCB0aGV5IGRvbid0IGFkZCBlbXB0eSBsaW5lcy5cbiAgLy8gQWxzbyBwcmVmZXIgZm9sZGluZyBhIHN1cGVyLWxvbmcgbGluZS5cbiAgaWYgKCFoYXNMaW5lQnJlYWsgJiYgIWhhc0ZvbGRhYmxlTGluZSkge1xuICAgIC8vIFN0cmluZ3MgaW50ZXJwcmV0YWJsZSBhcyBhbm90aGVyIHR5cGUgaGF2ZSB0byBiZSBxdW90ZWQ7XG4gICAgLy8gZS5nLiB0aGUgc3RyaW5nICd0cnVlJyB2cy4gdGhlIGJvb2xlYW4gdHJ1ZS5cbiAgICBpZiAocGxhaW4gJiYgIWZvcmNlUXVvdGVzICYmICF0ZXN0QW1iaWd1b3VzVHlwZShzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gU1RZTEVfUExBSU47XG4gICAgfVxuICAgIHJldHVybiBxdW90aW5nVHlwZSA9PT0gUVVPVElOR19UWVBFX0RPVUJMRSA/IFNUWUxFX0RPVUJMRSA6IFNUWUxFX1NJTkdMRTtcbiAgfVxuICAvLyBFZGdlIGNhc2U6IGJsb2NrIGluZGVudGF0aW9uIGluZGljYXRvciBjYW4gb25seSBoYXZlIG9uZSBkaWdpdC5cbiAgaWYgKGluZGVudFBlckxldmVsID4gOSAmJiBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZykpIHtcbiAgICByZXR1cm4gU1RZTEVfRE9VQkxFO1xuICB9XG4gIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyBibG9jayBzdHlsZXMgYXJlIHZhbGlkLlxuICAvLyBQcmVmZXIgbGl0ZXJhbCBzdHlsZSB1bmxlc3Mgd2Ugd2FudCB0byBmb2xkLlxuICBpZiAoIWZvcmNlUXVvdGVzKSB7XG4gICAgcmV0dXJuIGhhc0ZvbGRhYmxlTGluZSA/IFNUWUxFX0ZPTERFRCA6IFNUWUxFX0xJVEVSQUw7XG4gIH1cbiAgcmV0dXJuIHF1b3RpbmdUeXBlID09PSBRVU9USU5HX1RZUEVfRE9VQkxFID8gU1RZTEVfRE9VQkxFIDogU1RZTEVfU0lOR0xFO1xufVxuXG4vLyBOb3RlOiBsaW5lIGJyZWFraW5nL2ZvbGRpbmcgaXMgaW1wbGVtZW50ZWQgZm9yIG9ubHkgdGhlIGZvbGRlZCBzdHlsZS5cbi8vIE5CLiBXZSBkcm9wIHRoZSBsYXN0IHRyYWlsaW5nIG5ld2xpbmUgKGlmIGFueSkgb2YgYSByZXR1cm5lZCBibG9jayBzY2FsYXJcbi8vICBzaW5jZSB0aGUgZHVtcGVyIGFkZHMgaXRzIG93biBuZXdsaW5lLiBUaGlzIGFsd2F5cyB3b3Jrczpcbi8vICAgIFx1MjAyMiBObyBlbmRpbmcgbmV3bGluZSA9PiB1bmFmZmVjdGVkOyBhbHJlYWR5IHVzaW5nIHN0cmlwIFwiLVwiIGNob21waW5nLlxuLy8gICAgXHUyMDIyIEVuZGluZyBuZXdsaW5lICAgID0+IHJlbW92ZWQgdGhlbiByZXN0b3JlZC5cbi8vICBJbXBvcnRhbnRseSwgdGhpcyBrZWVwcyB0aGUgXCIrXCIgY2hvbXAgaW5kaWNhdG9yIGZyb20gZ2FpbmluZyBhbiBleHRyYSBsaW5lLlxuZnVuY3Rpb24gd3JpdGVTY2FsYXIoc3RhdGUsIHN0cmluZywgbGV2ZWwsIGlza2V5LCBpbmJsb2NrKSB7XG4gIHN0YXRlLmR1bXAgPSAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gc3RhdGUucXVvdGluZ1R5cGUgPT09IFFVT1RJTkdfVFlQRV9ET1VCTEUgPyAnXCJcIicgOiBcIicnXCI7XG4gICAgfVxuICAgIGlmICghc3RhdGUubm9Db21wYXRNb2RlKSB7XG4gICAgICBpZiAoREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVguaW5kZXhPZihzdHJpbmcpICE9PSAtMSB8fCBERVBSRUNBVEVEX0JBU0U2MF9TWU5UQVgudGVzdChzdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5xdW90aW5nVHlwZSA9PT0gUVVPVElOR19UWVBFX0RPVUJMRSA/ICgnXCInICsgc3RyaW5nICsgJ1wiJykgOiAoXCInXCIgKyBzdHJpbmcgKyBcIidcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGluZGVudCA9IHN0YXRlLmluZGVudCAqIE1hdGgubWF4KDEsIGxldmVsKTsgLy8gbm8gMC1pbmRlbnQgc2NhbGFyc1xuICAgIC8vIEFzIGluZGVudGF0aW9uIGdldHMgZGVlcGVyLCBsZXQgdGhlIHdpZHRoIGRlY3JlYXNlIG1vbm90b25pY2FsbHlcbiAgICAvLyB0byB0aGUgbG93ZXIgYm91bmQgbWluKHN0YXRlLmxpbmVXaWR0aCwgNDApLlxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIGltcGxpZXNcbiAgICAvLyAgc3RhdGUubGluZVdpZHRoIFx1MjI2NCA0MCArIHN0YXRlLmluZGVudDogd2lkdGggaXMgZml4ZWQgYXQgdGhlIGxvd2VyIGJvdW5kLlxuICAgIC8vICBzdGF0ZS5saW5lV2lkdGggPiA0MCArIHN0YXRlLmluZGVudDogd2lkdGggZGVjcmVhc2VzIHVudGlsIHRoZSBsb3dlciBib3VuZC5cbiAgICAvLyBUaGlzIGJlaGF2ZXMgYmV0dGVyIHRoYW4gYSBjb25zdGFudCBtaW5pbXVtIHdpZHRoIHdoaWNoIGRpc2FsbG93cyBuYXJyb3dlciBvcHRpb25zLFxuICAgIC8vIG9yIGFuIGluZGVudCB0aHJlc2hvbGQgd2hpY2ggY2F1c2VzIHRoZSB3aWR0aCB0byBzdWRkZW5seSBpbmNyZWFzZS5cbiAgICB2YXIgbGluZVdpZHRoID0gc3RhdGUubGluZVdpZHRoID09PSAtMVxuICAgICAgPyAtMSA6IE1hdGgubWF4KE1hdGgubWluKHN0YXRlLmxpbmVXaWR0aCwgNDApLCBzdGF0ZS5saW5lV2lkdGggLSBpbmRlbnQpO1xuXG4gICAgLy8gV2l0aG91dCBrbm93aW5nIGlmIGtleXMgYXJlIGltcGxpY2l0L2V4cGxpY2l0LCBhc3N1bWUgaW1wbGljaXQgZm9yIHNhZmV0eS5cbiAgICB2YXIgc2luZ2xlTGluZU9ubHkgPSBpc2tleVxuICAgICAgLy8gTm8gYmxvY2sgc3R5bGVzIGluIGZsb3cgbW9kZS5cbiAgICAgIHx8IChzdGF0ZS5mbG93TGV2ZWwgPiAtMSAmJiBsZXZlbCA+PSBzdGF0ZS5mbG93TGV2ZWwpO1xuICAgIGZ1bmN0aW9uIHRlc3RBbWJpZ3VpdHkoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdGVzdEltcGxpY2l0UmVzb2x2aW5nKHN0YXRlLCBzdHJpbmcpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY2hvb3NlU2NhbGFyU3R5bGUoc3RyaW5nLCBzaW5nbGVMaW5lT25seSwgc3RhdGUuaW5kZW50LCBsaW5lV2lkdGgsXG4gICAgICB0ZXN0QW1iaWd1aXR5LCBzdGF0ZS5xdW90aW5nVHlwZSwgc3RhdGUuZm9yY2VRdW90ZXMgJiYgIWlza2V5LCBpbmJsb2NrKSkge1xuXG4gICAgICBjYXNlIFNUWUxFX1BMQUlOOlxuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgY2FzZSBTVFlMRV9TSU5HTEU6XG4gICAgICAgIHJldHVybiBcIidcIiArIHN0cmluZy5yZXBsYWNlKC8nL2csIFwiJydcIikgKyBcIidcIjtcbiAgICAgIGNhc2UgU1RZTEVfTElURVJBTDpcbiAgICAgICAgcmV0dXJuICd8JyArIGJsb2NrSGVhZGVyKHN0cmluZywgc3RhdGUuaW5kZW50KVxuICAgICAgICAgICsgZHJvcEVuZGluZ05ld2xpbmUoaW5kZW50U3RyaW5nKHN0cmluZywgaW5kZW50KSk7XG4gICAgICBjYXNlIFNUWUxFX0ZPTERFRDpcbiAgICAgICAgcmV0dXJuICc+JyArIGJsb2NrSGVhZGVyKHN0cmluZywgc3RhdGUuaW5kZW50KVxuICAgICAgICAgICsgZHJvcEVuZGluZ05ld2xpbmUoaW5kZW50U3RyaW5nKGZvbGRTdHJpbmcoc3RyaW5nLCBsaW5lV2lkdGgpLCBpbmRlbnQpKTtcbiAgICAgIGNhc2UgU1RZTEVfRE9VQkxFOlxuICAgICAgICByZXR1cm4gJ1wiJyArIGVzY2FwZVN0cmluZyhzdHJpbmcpICsgJ1wiJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBleGNlcHRpb24oJ2ltcG9zc2libGUgZXJyb3I6IGludmFsaWQgc2NhbGFyIHN0eWxlJyk7XG4gICAgfVxuICB9KCkpO1xufVxuXG4vLyBQcmUtY29uZGl0aW9uczogc3RyaW5nIGlzIHZhbGlkIGZvciBhIGJsb2NrIHNjYWxhciwgMSA8PSBpbmRlbnRQZXJMZXZlbCA8PSA5LlxuZnVuY3Rpb24gYmxvY2tIZWFkZXIoc3RyaW5nLCBpbmRlbnRQZXJMZXZlbCkge1xuICB2YXIgaW5kZW50SW5kaWNhdG9yID0gbmVlZEluZGVudEluZGljYXRvcihzdHJpbmcpID8gU3RyaW5nKGluZGVudFBlckxldmVsKSA6ICcnO1xuXG4gIC8vIG5vdGUgdGhlIHNwZWNpYWwgY2FzZTogdGhlIHN0cmluZyAnXFxuJyBjb3VudHMgYXMgYSBcInRyYWlsaW5nXCIgZW1wdHkgbGluZS5cbiAgdmFyIGNsaXAgPSAgICAgICAgICBzdHJpbmdbc3RyaW5nLmxlbmd0aCAtIDFdID09PSAnXFxuJztcbiAgdmFyIGtlZXAgPSBjbGlwICYmIChzdHJpbmdbc3RyaW5nLmxlbmd0aCAtIDJdID09PSAnXFxuJyB8fCBzdHJpbmcgPT09ICdcXG4nKTtcbiAgdmFyIGNob21wID0ga2VlcCA/ICcrJyA6IChjbGlwID8gJycgOiAnLScpO1xuXG4gIHJldHVybiBpbmRlbnRJbmRpY2F0b3IgKyBjaG9tcCArICdcXG4nO1xufVxuXG4vLyAoU2VlIHRoZSBub3RlIGZvciB3cml0ZVNjYWxhci4pXG5mdW5jdGlvbiBkcm9wRW5kaW5nTmV3bGluZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICdcXG4nID8gc3RyaW5nLnNsaWNlKDAsIC0xKSA6IHN0cmluZztcbn1cblxuLy8gTm90ZTogYSBsb25nIGxpbmUgd2l0aG91dCBhIHN1aXRhYmxlIGJyZWFrIHBvaW50IHdpbGwgZXhjZWVkIHRoZSB3aWR0aCBsaW1pdC5cbi8vIFByZS1jb25kaXRpb25zOiBldmVyeSBjaGFyIGluIHN0ciBpc1ByaW50YWJsZSwgc3RyLmxlbmd0aCA+IDAsIHdpZHRoID4gMC5cbmZ1bmN0aW9uIGZvbGRTdHJpbmcoc3RyaW5nLCB3aWR0aCkge1xuICAvLyBJbiBmb2xkZWQgc3R5bGUsICRrJCBjb25zZWN1dGl2ZSBuZXdsaW5lcyBvdXRwdXQgYXMgJGsrMSQgbmV3bGluZXNcdTIwMTRcbiAgLy8gdW5sZXNzIHRoZXkncmUgYmVmb3JlIG9yIGFmdGVyIGEgbW9yZS1pbmRlbnRlZCBsaW5lLCBvciBhdCB0aGUgdmVyeVxuICAvLyBiZWdpbm5pbmcgb3IgZW5kLCBpbiB3aGljaCBjYXNlICRrJCBtYXBzIHRvICRrJC5cbiAgLy8gVGhlcmVmb3JlLCBwYXJzZSBlYWNoIGNodW5rIGFzIG5ld2xpbmUocykgZm9sbG93ZWQgYnkgYSBjb250ZW50IGxpbmUuXG4gIHZhciBsaW5lUmUgPSAvKFxcbispKFteXFxuXSopL2c7XG5cbiAgLy8gZmlyc3QgbGluZSAocG9zc2libHkgYW4gZW1wdHkgbGluZSlcbiAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5leHRMRiA9IHN0cmluZy5pbmRleE9mKCdcXG4nKTtcbiAgICBuZXh0TEYgPSBuZXh0TEYgIT09IC0xID8gbmV4dExGIDogc3RyaW5nLmxlbmd0aDtcbiAgICBsaW5lUmUubGFzdEluZGV4ID0gbmV4dExGO1xuICAgIHJldHVybiBmb2xkTGluZShzdHJpbmcuc2xpY2UoMCwgbmV4dExGKSwgd2lkdGgpO1xuICB9KCkpO1xuICAvLyBJZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGZpcnN0IGNvbnRlbnQgbGluZSB5ZXQsIGRvbid0IGFkZCBhbiBleHRyYSBcXG4uXG4gIHZhciBwcmV2TW9yZUluZGVudGVkID0gc3RyaW5nWzBdID09PSAnXFxuJyB8fCBzdHJpbmdbMF0gPT09ICcgJztcbiAgdmFyIG1vcmVJbmRlbnRlZDtcblxuICAvLyByZXN0IG9mIHRoZSBsaW5lc1xuICB2YXIgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSBsaW5lUmUuZXhlYyhzdHJpbmcpKSkge1xuICAgIHZhciBwcmVmaXggPSBtYXRjaFsxXSwgbGluZSA9IG1hdGNoWzJdO1xuICAgIG1vcmVJbmRlbnRlZCA9IChsaW5lWzBdID09PSAnICcpO1xuICAgIHJlc3VsdCArPSBwcmVmaXhcbiAgICAgICsgKCFwcmV2TW9yZUluZGVudGVkICYmICFtb3JlSW5kZW50ZWQgJiYgbGluZSAhPT0gJydcbiAgICAgICAgPyAnXFxuJyA6ICcnKVxuICAgICAgKyBmb2xkTGluZShsaW5lLCB3aWR0aCk7XG4gICAgcHJldk1vcmVJbmRlbnRlZCA9IG1vcmVJbmRlbnRlZDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdyZWVkeSBsaW5lIGJyZWFraW5nLlxuLy8gUGlja3MgdGhlIGxvbmdlc3QgbGluZSB1bmRlciB0aGUgbGltaXQgZWFjaCB0aW1lLFxuLy8gb3RoZXJ3aXNlIHNldHRsZXMgZm9yIHRoZSBzaG9ydGVzdCBsaW5lIG92ZXIgdGhlIGxpbWl0LlxuLy8gTkIuIE1vcmUtaW5kZW50ZWQgbGluZXMgKmNhbm5vdCogYmUgZm9sZGVkLCBhcyB0aGF0IHdvdWxkIGFkZCBhbiBleHRyYSBcXG4uXG5mdW5jdGlvbiBmb2xkTGluZShsaW5lLCB3aWR0aCkge1xuICBpZiAobGluZSA9PT0gJycgfHwgbGluZVswXSA9PT0gJyAnKSByZXR1cm4gbGluZTtcblxuICAvLyBTaW5jZSBhIG1vcmUtaW5kZW50ZWQgbGluZSBhZGRzIGEgXFxuLCBicmVha3MgY2FuJ3QgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZS5cbiAgdmFyIGJyZWFrUmUgPSAvIFteIF0vZzsgLy8gbm90ZTogdGhlIG1hdGNoIGluZGV4IHdpbGwgYWx3YXlzIGJlIDw9IGxlbmd0aC0yLlxuICB2YXIgbWF0Y2g7XG4gIC8vIHN0YXJ0IGlzIGFuIGluY2x1c2l2ZSBpbmRleC4gZW5kLCBjdXJyLCBhbmQgbmV4dCBhcmUgZXhjbHVzaXZlLlxuICB2YXIgc3RhcnQgPSAwLCBlbmQsIGN1cnIgPSAwLCBuZXh0ID0gMDtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuXG4gIC8vIEludmFyaWFudHM6IDAgPD0gc3RhcnQgPD0gbGVuZ3RoLTEuXG4gIC8vICAgMCA8PSBjdXJyIDw9IG5leHQgPD0gbWF4KDAsIGxlbmd0aC0yKS4gY3VyciAtIHN0YXJ0IDw9IHdpZHRoLlxuICAvLyBJbnNpZGUgdGhlIGxvb3A6XG4gIC8vICAgQSBtYXRjaCBpbXBsaWVzIGxlbmd0aCA+PSAyLCBzbyBjdXJyIGFuZCBuZXh0IGFyZSA8PSBsZW5ndGgtMi5cbiAgd2hpbGUgKChtYXRjaCA9IGJyZWFrUmUuZXhlYyhsaW5lKSkpIHtcbiAgICBuZXh0ID0gbWF0Y2guaW5kZXg7XG4gICAgLy8gbWFpbnRhaW4gaW52YXJpYW50OiBjdXJyIC0gc3RhcnQgPD0gd2lkdGhcbiAgICBpZiAobmV4dCAtIHN0YXJ0ID4gd2lkdGgpIHtcbiAgICAgIGVuZCA9IChjdXJyID4gc3RhcnQpID8gY3VyciA6IG5leHQ7IC8vIGRlcml2ZSBlbmQgPD0gbGVuZ3RoLTJcbiAgICAgIHJlc3VsdCArPSAnXFxuJyArIGxpbmUuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAvLyBza2lwIHRoZSBzcGFjZSB0aGF0IHdhcyBvdXRwdXQgYXMgXFxuXG4gICAgICBzdGFydCA9IGVuZCArIDE7ICAgICAgICAgICAgICAgICAgICAvLyBkZXJpdmUgc3RhcnQgPD0gbGVuZ3RoLTFcbiAgICB9XG4gICAgY3VyciA9IG5leHQ7XG4gIH1cblxuICAvLyBCeSB0aGUgaW52YXJpYW50cywgc3RhcnQgPD0gbGVuZ3RoLTEsIHNvIHRoZXJlIGlzIHNvbWV0aGluZyBsZWZ0IG92ZXIuXG4gIC8vIEl0IGlzIGVpdGhlciB0aGUgd2hvbGUgc3RyaW5nIG9yIGEgcGFydCBzdGFydGluZyBmcm9tIG5vbi13aGl0ZXNwYWNlLlxuICByZXN1bHQgKz0gJ1xcbic7XG4gIC8vIEluc2VydCBhIGJyZWFrIGlmIHRoZSByZW1haW5kZXIgaXMgdG9vIGxvbmcgYW5kIHRoZXJlIGlzIGEgYnJlYWsgYXZhaWxhYmxlLlxuICBpZiAobGluZS5sZW5ndGggLSBzdGFydCA+IHdpZHRoICYmIGN1cnIgPiBzdGFydCkge1xuICAgIHJlc3VsdCArPSBsaW5lLnNsaWNlKHN0YXJ0LCBjdXJyKSArICdcXG4nICsgbGluZS5zbGljZShjdXJyICsgMSk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ICs9IGxpbmUuc2xpY2Uoc3RhcnQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5zbGljZSgxKTsgLy8gZHJvcCBleHRyYSBcXG4gam9pbmVyXG59XG5cbi8vIEVzY2FwZXMgYSBkb3VibGUtcXVvdGVkIHN0cmluZy5cbmZ1bmN0aW9uIGVzY2FwZVN0cmluZyhzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgY2hhciA9IDA7XG4gIHZhciBlc2NhcGVTZXE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBjaGFyID49IDB4MTAwMDAgPyBpICs9IDIgOiBpKyspIHtcbiAgICBjaGFyID0gY29kZVBvaW50QXQoc3RyaW5nLCBpKTtcbiAgICBlc2NhcGVTZXEgPSBFU0NBUEVfU0VRVUVOQ0VTW2NoYXJdO1xuXG4gICAgaWYgKCFlc2NhcGVTZXEgJiYgaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgIHJlc3VsdCArPSBzdHJpbmdbaV07XG4gICAgICBpZiAoY2hhciA+PSAweDEwMDAwKSByZXN1bHQgKz0gc3RyaW5nW2kgKyAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9IGVzY2FwZVNlcSB8fCBlbmNvZGVIZXgoY2hhcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG93U2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBvYmplY3QpIHtcbiAgdmFyIF9yZXN1bHQgPSAnJyxcbiAgICAgIF90YWcgICAgPSBzdGF0ZS50YWcsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIHZhbHVlO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHZhbHVlID0gb2JqZWN0W2luZGV4XTtcblxuICAgIGlmIChzdGF0ZS5yZXBsYWNlcikge1xuICAgICAgdmFsdWUgPSBzdGF0ZS5yZXBsYWNlci5jYWxsKG9iamVjdCwgU3RyaW5nKGluZGV4KSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFdyaXRlIG9ubHkgdmFsaWQgZWxlbWVudHMsIHB1dCBudWxsIGluc3RlYWQgb2YgaW52YWxpZCBlbGVtZW50cy5cbiAgICBpZiAod3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgdmFsdWUsIGZhbHNlLCBmYWxzZSkgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgIHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG51bGwsIGZhbHNlLCBmYWxzZSkpKSB7XG5cbiAgICAgIGlmIChfcmVzdWx0ICE9PSAnJykgX3Jlc3VsdCArPSAnLCcgKyAoIXN0YXRlLmNvbmRlbnNlRmxvdyA/ICcgJyA6ICcnKTtcbiAgICAgIF9yZXN1bHQgKz0gc3RhdGUuZHVtcDtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gJ1snICsgX3Jlc3VsdCArICddJztcbn1cblxuZnVuY3Rpb24gd3JpdGVCbG9ja1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBjb21wYWN0KSB7XG4gIHZhciBfcmVzdWx0ID0gJycsXG4gICAgICBfdGFnICAgID0gc3RhdGUudGFnLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGgsXG4gICAgICB2YWx1ZTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB2YWx1ZSA9IG9iamVjdFtpbmRleF07XG5cbiAgICBpZiAoc3RhdGUucmVwbGFjZXIpIHtcbiAgICAgIHZhbHVlID0gc3RhdGUucmVwbGFjZXIuY2FsbChvYmplY3QsIFN0cmluZyhpbmRleCksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBXcml0ZSBvbmx5IHZhbGlkIGVsZW1lbnRzLCBwdXQgbnVsbCBpbnN0ZWFkIG9mIGludmFsaWQgZWxlbWVudHMuXG4gICAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICB3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgbnVsbCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpKSkge1xuXG4gICAgICBpZiAoIWNvbXBhY3QgfHwgX3Jlc3VsdCAhPT0gJycpIHtcbiAgICAgICAgX3Jlc3VsdCArPSBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgICAgX3Jlc3VsdCArPSAnLSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0ICs9ICctICc7XG4gICAgICB9XG5cbiAgICAgIF9yZXN1bHQgKz0gc3RhdGUuZHVtcDtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gX3Jlc3VsdCB8fCAnW10nOyAvLyBFbXB0eSBzZXF1ZW5jZSBpZiBubyB2YWxpZCB2YWx1ZXMuXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvd01hcHBpbmcoc3RhdGUsIGxldmVsLCBvYmplY3QpIHtcbiAgdmFyIF9yZXN1bHQgICAgICAgPSAnJyxcbiAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoLFxuICAgICAgb2JqZWN0S2V5LFxuICAgICAgb2JqZWN0VmFsdWUsXG4gICAgICBwYWlyQnVmZmVyO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcblxuICAgIHBhaXJCdWZmZXIgPSAnJztcbiAgICBpZiAoX3Jlc3VsdCAhPT0gJycpIHBhaXJCdWZmZXIgKz0gJywgJztcblxuICAgIGlmIChzdGF0ZS5jb25kZW5zZUZsb3cpIHBhaXJCdWZmZXIgKz0gJ1wiJztcblxuICAgIG9iamVjdEtleSA9IG9iamVjdEtleUxpc3RbaW5kZXhdO1xuICAgIG9iamVjdFZhbHVlID0gb2JqZWN0W29iamVjdEtleV07XG5cbiAgICBpZiAoc3RhdGUucmVwbGFjZXIpIHtcbiAgICAgIG9iamVjdFZhbHVlID0gc3RhdGUucmVwbGFjZXIuY2FsbChvYmplY3QsIG9iamVjdEtleSwgb2JqZWN0VmFsdWUpO1xuICAgIH1cblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0S2V5LCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIGtleTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuZHVtcC5sZW5ndGggPiAxMDI0KSBwYWlyQnVmZmVyICs9ICc/ICc7XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXAgKyAoc3RhdGUuY29uZGVuc2VGbG93ID8gJ1wiJyA6ICcnKSArICc6JyArIChzdGF0ZS5jb25kZW5zZUZsb3cgPyAnJyA6ICcgJyk7XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdFZhbHVlLCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIHZhbHVlLlxuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIC8vIEJvdGgga2V5IGFuZCB2YWx1ZSBhcmUgdmFsaWQuXG4gICAgX3Jlc3VsdCArPSBwYWlyQnVmZmVyO1xuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9ICd7JyArIF9yZXN1bHQgKyAnfSc7XG59XG5cbmZ1bmN0aW9uIHdyaXRlQmxvY2tNYXBwaW5nKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBjb21wYWN0KSB7XG4gIHZhciBfcmVzdWx0ICAgICAgID0gJycsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCksXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIG9iamVjdEtleSxcbiAgICAgIG9iamVjdFZhbHVlLFxuICAgICAgZXhwbGljaXRQYWlyLFxuICAgICAgcGFpckJ1ZmZlcjtcblxuICAvLyBBbGxvdyBzb3J0aW5nIGtleXMgc28gdGhhdCB0aGUgb3V0cHV0IGZpbGUgaXMgZGV0ZXJtaW5pc3RpY1xuICBpZiAoc3RhdGUuc29ydEtleXMgPT09IHRydWUpIHtcbiAgICAvLyBEZWZhdWx0IHNvcnRpbmdcbiAgICBvYmplY3RLZXlMaXN0LnNvcnQoKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhdGUuc29ydEtleXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBDdXN0b20gc29ydCBmdW5jdGlvblxuICAgIG9iamVjdEtleUxpc3Quc29ydChzdGF0ZS5zb3J0S2V5cyk7XG4gIH0gZWxzZSBpZiAoc3RhdGUuc29ydEtleXMpIHtcbiAgICAvLyBTb21ldGhpbmcgaXMgd3JvbmdcbiAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCdzb3J0S2V5cyBtdXN0IGJlIGEgYm9vbGVhbiBvciBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpckJ1ZmZlciA9ICcnO1xuXG4gICAgaWYgKCFjb21wYWN0IHx8IF9yZXN1bHQgIT09ICcnKSB7XG4gICAgICBwYWlyQnVmZmVyICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICB9XG5cbiAgICBvYmplY3RLZXkgPSBvYmplY3RLZXlMaXN0W2luZGV4XTtcbiAgICBvYmplY3RWYWx1ZSA9IG9iamVjdFtvYmplY3RLZXldO1xuXG4gICAgaWYgKHN0YXRlLnJlcGxhY2VyKSB7XG4gICAgICBvYmplY3RWYWx1ZSA9IHN0YXRlLnJlcGxhY2VyLmNhbGwob2JqZWN0LCBvYmplY3RLZXksIG9iamVjdFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RLZXksIHRydWUsIHRydWUsIHRydWUpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIGtleS5cbiAgICB9XG5cbiAgICBleHBsaWNpdFBhaXIgPSAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJz8nKSB8fFxuICAgICAgICAgICAgICAgICAgIChzdGF0ZS5kdW1wICYmIHN0YXRlLmR1bXAubGVuZ3RoID4gMTAyNCk7XG5cbiAgICBpZiAoZXhwbGljaXRQYWlyKSB7XG4gICAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIHBhaXJCdWZmZXIgKz0gJz8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFpckJ1ZmZlciArPSAnPyAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIGlmIChleHBsaWNpdFBhaXIpIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgIH1cblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIG9iamVjdFZhbHVlLCB0cnVlLCBleHBsaWNpdFBhaXIpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIHZhbHVlLlxuICAgIH1cblxuICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gJzonO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYWlyQnVmZmVyICs9ICc6ICc7XG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgLy8gQm90aCBrZXkgYW5kIHZhbHVlIGFyZSB2YWxpZC5cbiAgICBfcmVzdWx0ICs9IHBhaXJCdWZmZXI7XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gX3Jlc3VsdCB8fCAne30nOyAvLyBFbXB0eSBtYXBwaW5nIGlmIG5vIHZhbGlkIHBhaXJzLlxufVxuXG5mdW5jdGlvbiBkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIGV4cGxpY2l0KSB7XG4gIHZhciBfcmVzdWx0LCB0eXBlTGlzdCwgaW5kZXgsIGxlbmd0aCwgdHlwZSwgc3R5bGU7XG5cbiAgdHlwZUxpc3QgPSBleHBsaWNpdCA/IHN0YXRlLmV4cGxpY2l0VHlwZXMgOiBzdGF0ZS5pbXBsaWNpdFR5cGVzO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSB0eXBlTGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdHlwZSA9IHR5cGVMaXN0W2luZGV4XTtcblxuICAgIGlmICgodHlwZS5pbnN0YW5jZU9mICB8fCB0eXBlLnByZWRpY2F0ZSkgJiZcbiAgICAgICAgKCF0eXBlLmluc3RhbmNlT2YgfHwgKCh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JykgJiYgKG9iamVjdCBpbnN0YW5jZW9mIHR5cGUuaW5zdGFuY2VPZikpKSAmJlxuICAgICAgICAoIXR5cGUucHJlZGljYXRlICB8fCB0eXBlLnByZWRpY2F0ZShvYmplY3QpKSkge1xuXG4gICAgICBpZiAoZXhwbGljaXQpIHtcbiAgICAgICAgaWYgKHR5cGUubXVsdGkgJiYgdHlwZS5yZXByZXNlbnROYW1lKSB7XG4gICAgICAgICAgc3RhdGUudGFnID0gdHlwZS5yZXByZXNlbnROYW1lKG9iamVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUudGFnID0gdHlwZS50YWc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnRhZyA9ICc/JztcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUucmVwcmVzZW50KSB7XG4gICAgICAgIHN0eWxlID0gc3RhdGUuc3R5bGVNYXBbdHlwZS50YWddIHx8IHR5cGUuZGVmYXVsdFN0eWxlO1xuXG4gICAgICAgIGlmIChfdG9TdHJpbmcuY2FsbCh0eXBlLnJlcHJlc2VudCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHtcbiAgICAgICAgICBfcmVzdWx0ID0gdHlwZS5yZXByZXNlbnQob2JqZWN0LCBzdHlsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5yZXByZXNlbnQsIHN0eWxlKSkge1xuICAgICAgICAgIF9yZXN1bHQgPSB0eXBlLnJlcHJlc2VudFtzdHlsZV0ob2JqZWN0LCBzdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGV4Y2VwdGlvbignITwnICsgdHlwZS50YWcgKyAnPiB0YWcgcmVzb2x2ZXIgYWNjZXB0cyBub3QgXCInICsgc3R5bGUgKyAnXCIgc3R5bGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLmR1bXAgPSBfcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFNlcmlhbGl6ZXMgYG9iamVjdGAgYW5kIHdyaXRlcyBpdCB0byBnbG9iYWwgYHJlc3VsdGAuXG4vLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcywgb3IgZmFsc2Ugb24gaW52YWxpZCBvYmplY3QuXG4vL1xuZnVuY3Rpb24gd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBibG9jaywgY29tcGFjdCwgaXNrZXksIGlzYmxvY2tzZXEpIHtcbiAgc3RhdGUudGFnID0gbnVsbDtcbiAgc3RhdGUuZHVtcCA9IG9iamVjdDtcblxuICBpZiAoIWRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgZmFsc2UpKSB7XG4gICAgZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCB0cnVlKTtcbiAgfVxuXG4gIHZhciB0eXBlID0gX3RvU3RyaW5nLmNhbGwoc3RhdGUuZHVtcCk7XG4gIHZhciBpbmJsb2NrID0gYmxvY2s7XG4gIHZhciB0YWdTdHI7XG5cbiAgaWYgKGJsb2NrKSB7XG4gICAgYmxvY2sgPSAoc3RhdGUuZmxvd0xldmVsIDwgMCB8fCBzdGF0ZS5mbG93TGV2ZWwgPiBsZXZlbCk7XG4gIH1cblxuICB2YXIgb2JqZWN0T3JBcnJheSA9IHR5cGUgPT09ICdbb2JqZWN0IE9iamVjdF0nIHx8IHR5cGUgPT09ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBkdXBsaWNhdGVJbmRleCxcbiAgICAgIGR1cGxpY2F0ZTtcblxuICBpZiAob2JqZWN0T3JBcnJheSkge1xuICAgIGR1cGxpY2F0ZUluZGV4ID0gc3RhdGUuZHVwbGljYXRlcy5pbmRleE9mKG9iamVjdCk7XG4gICAgZHVwbGljYXRlID0gZHVwbGljYXRlSW5kZXggIT09IC0xO1xuICB9XG5cbiAgaWYgKChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHx8IGR1cGxpY2F0ZSB8fCAoc3RhdGUuaW5kZW50ICE9PSAyICYmIGxldmVsID4gMCkpIHtcbiAgICBjb21wYWN0ID0gZmFsc2U7XG4gIH1cblxuICBpZiAoZHVwbGljYXRlICYmIHN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSkge1xuICAgIHN0YXRlLmR1bXAgPSAnKnJlZl8nICsgZHVwbGljYXRlSW5kZXg7XG4gIH0gZWxzZSB7XG4gICAgaWYgKG9iamVjdE9yQXJyYXkgJiYgZHVwbGljYXRlICYmICFzdGF0ZS51c2VkRHVwbGljYXRlc1tkdXBsaWNhdGVJbmRleF0pIHtcbiAgICAgIHN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgaWYgKGJsb2NrICYmIChPYmplY3Qua2V5cyhzdGF0ZS5kdW1wKS5sZW5ndGggIT09IDApKSB7XG4gICAgICAgIHdyaXRlQmxvY2tNYXBwaW5nKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCwgY29tcGFjdCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVGbG93TWFwcGluZyhzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXApO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArICcgJyArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIGlmIChibG9jayAmJiAoc3RhdGUuZHVtcC5sZW5ndGggIT09IDApKSB7XG4gICAgICAgIGlmIChzdGF0ZS5ub0FycmF5SW5kZW50ICYmICFpc2Jsb2Nrc2VxICYmIGxldmVsID4gMCkge1xuICAgICAgICAgIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwgLSAxLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZUJsb2NrU2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlRmxvd1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgU3RyaW5nXScpIHtcbiAgICAgIGlmIChzdGF0ZS50YWcgIT09ICc/Jykge1xuICAgICAgICB3cml0ZVNjYWxhcihzdGF0ZSwgc3RhdGUuZHVtcCwgbGV2ZWwsIGlza2V5LCBpbmJsb2NrKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdbb2JqZWN0IFVuZGVmaW5lZF0nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS5za2lwSW52YWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgdGhyb3cgbmV3IGV4Y2VwdGlvbigndW5hY2NlcHRhYmxlIGtpbmQgb2YgYW4gb2JqZWN0IHRvIGR1bXAgJyArIHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHtcbiAgICAgIC8vIE5lZWQgdG8gZW5jb2RlIGFsbCBjaGFyYWN0ZXJzIGV4Y2VwdCB0aG9zZSBhbGxvd2VkIGJ5IHRoZSBzcGVjOlxuICAgICAgLy9cbiAgICAgIC8vIFszNV0gbnMtZGVjLWRpZ2l0ICAgIDo6PSAgWyN4MzAtI3gzOV0gLyogMC05ICovXG4gICAgICAvLyBbMzZdIG5zLWhleC1kaWdpdCAgICA6Oj0gIG5zLWRlYy1kaWdpdFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgfCBbI3g0MS0jeDQ2XSAvKiBBLUYgKi8gfCBbI3g2MS0jeDY2XSAvKiBhLWYgKi9cbiAgICAgIC8vIFszN10gbnMtYXNjaWktbGV0dGVyIDo6PSAgWyN4NDEtI3g1QV0gLyogQS1aICovIHwgWyN4NjEtI3g3QV0gLyogYS16ICovXG4gICAgICAvLyBbMzhdIG5zLXdvcmQtY2hhciAgICA6Oj0gIG5zLWRlYy1kaWdpdCB8IG5zLWFzY2lpLWxldHRlciB8IFx1MjAxQy1cdTIwMURcbiAgICAgIC8vIFszOV0gbnMtdXJpLWNoYXIgICAgIDo6PSAgXHUyMDFDJVx1MjAxRCBucy1oZXgtZGlnaXQgbnMtaGV4LWRpZ2l0IHwgbnMtd29yZC1jaGFyIHwgXHUyMDFDI1x1MjAxRFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgfCBcdTIwMUM7XHUyMDFEIHwgXHUyMDFDL1x1MjAxRCB8IFx1MjAxQz9cdTIwMUQgfCBcdTIwMUM6XHUyMDFEIHwgXHUyMDFDQFx1MjAxRCB8IFx1MjAxQyZcdTIwMUQgfCBcdTIwMUM9XHUyMDFEIHwgXHUyMDFDK1x1MjAxRCB8IFx1MjAxQyRcdTIwMUQgfCBcdTIwMUMsXHUyMDFEXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB8IFx1MjAxQ19cdTIwMUQgfCBcdTIwMUMuXHUyMDFEIHwgXHUyMDFDIVx1MjAxRCB8IFx1MjAxQ35cdTIwMUQgfCBcdTIwMUMqXHUyMDFEIHwgXHUyMDFDJ1x1MjAxRCB8IFx1MjAxQyhcdTIwMUQgfCBcdTIwMUMpXHUyMDFEIHwgXHUyMDFDW1x1MjAxRCB8IFx1MjAxQ11cdTIwMURcbiAgICAgIC8vXG4gICAgICAvLyBBbHNvIG5lZWQgdG8gZW5jb2RlICchJyBiZWNhdXNlIGl0IGhhcyBzcGVjaWFsIG1lYW5pbmcgKGVuZCBvZiB0YWcgcHJlZml4KS5cbiAgICAgIC8vXG4gICAgICB0YWdTdHIgPSBlbmNvZGVVUkkoXG4gICAgICAgIHN0YXRlLnRhZ1swXSA9PT0gJyEnID8gc3RhdGUudGFnLnNsaWNlKDEpIDogc3RhdGUudGFnXG4gICAgICApLnJlcGxhY2UoLyEvZywgJyUyMScpO1xuXG4gICAgICBpZiAoc3RhdGUudGFnWzBdID09PSAnIScpIHtcbiAgICAgICAgdGFnU3RyID0gJyEnICsgdGFnU3RyO1xuICAgICAgfSBlbHNlIGlmICh0YWdTdHIuc2xpY2UoMCwgMTgpID09PSAndGFnOnlhbWwub3JnLDIwMDI6Jykge1xuICAgICAgICB0YWdTdHIgPSAnISEnICsgdGFnU3RyLnNsaWNlKDE4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhZ1N0ciA9ICchPCcgKyB0YWdTdHIgKyAnPic7XG4gICAgICB9XG5cbiAgICAgIHN0YXRlLmR1bXAgPSB0YWdTdHIgKyAnICcgKyBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZXREdXBsaWNhdGVSZWZlcmVuY2VzKG9iamVjdCwgc3RhdGUpIHtcbiAgdmFyIG9iamVjdHMgPSBbXSxcbiAgICAgIGR1cGxpY2F0ZXNJbmRleGVzID0gW10sXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBpbnNwZWN0Tm9kZShvYmplY3QsIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gZHVwbGljYXRlc0luZGV4ZXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHN0YXRlLmR1cGxpY2F0ZXMucHVzaChvYmplY3RzW2R1cGxpY2F0ZXNJbmRleGVzW2luZGV4XV0pO1xuICB9XG4gIHN0YXRlLnVzZWREdXBsaWNhdGVzID0gbmV3IEFycmF5KGxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3ROb2RlKG9iamVjdCwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpIHtcbiAgdmFyIG9iamVjdEtleUxpc3QsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBpZiAob2JqZWN0ICE9PSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgaW5kZXggPSBvYmplY3RzLmluZGV4T2Yob2JqZWN0KTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBpZiAoZHVwbGljYXRlc0luZGV4ZXMuaW5kZXhPZihpbmRleCkgPT09IC0xKSB7XG4gICAgICAgIGR1cGxpY2F0ZXNJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3RzLnB1c2gob2JqZWN0KTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBpbnNwZWN0Tm9kZShvYmplY3RbaW5kZXhdLCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBpbnNwZWN0Tm9kZShvYmplY3Rbb2JqZWN0S2V5TGlzdFtpbmRleF1dLCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZHVtcCQxKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBTdGF0ZShvcHRpb25zKTtcblxuICBpZiAoIXN0YXRlLm5vUmVmcykgZ2V0RHVwbGljYXRlUmVmZXJlbmNlcyhpbnB1dCwgc3RhdGUpO1xuXG4gIHZhciB2YWx1ZSA9IGlucHV0O1xuXG4gIGlmIChzdGF0ZS5yZXBsYWNlcikge1xuICAgIHZhbHVlID0gc3RhdGUucmVwbGFjZXIuY2FsbCh7ICcnOiB2YWx1ZSB9LCAnJywgdmFsdWUpO1xuICB9XG5cbiAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgMCwgdmFsdWUsIHRydWUsIHRydWUpKSByZXR1cm4gc3RhdGUuZHVtcCArICdcXG4nO1xuXG4gIHJldHVybiAnJztcbn1cblxudmFyIGR1bXBfMSA9IGR1bXAkMTtcblxudmFyIGR1bXBlciA9IHtcblx0ZHVtcDogZHVtcF8xXG59O1xuXG5mdW5jdGlvbiByZW5hbWVkKGZyb20sIHRvKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiB5YW1sLicgKyBmcm9tICsgJyBpcyByZW1vdmVkIGluIGpzLXlhbWwgNC4gJyArXG4gICAgICAnVXNlIHlhbWwuJyArIHRvICsgJyBpbnN0ZWFkLCB3aGljaCBpcyBub3cgc2FmZSBieSBkZWZhdWx0LicpO1xuICB9O1xufVxuXG5cbnZhciBUeXBlICAgICAgICAgICAgICAgID0gdHlwZTtcbnZhciBTY2hlbWEgICAgICAgICAgICAgID0gc2NoZW1hO1xudmFyIEZBSUxTQUZFX1NDSEVNQSAgICAgPSBmYWlsc2FmZTtcbnZhciBKU09OX1NDSEVNQSAgICAgICAgID0ganNvbjtcbnZhciBDT1JFX1NDSEVNQSAgICAgICAgID0gY29yZTtcbnZhciBERUZBVUxUX1NDSEVNQSAgICAgID0gX2RlZmF1bHQ7XG52YXIgbG9hZCAgICAgICAgICAgICAgICA9IGxvYWRlci5sb2FkO1xudmFyIGxvYWRBbGwgICAgICAgICAgICAgPSBsb2FkZXIubG9hZEFsbDtcbnZhciBkdW1wICAgICAgICAgICAgICAgID0gZHVtcGVyLmR1bXA7XG52YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IGV4Y2VwdGlvbjtcblxuLy8gUmUtZXhwb3J0IGFsbCB0eXBlcyBpbiBjYXNlIHVzZXIgd2FudHMgdG8gY3JlYXRlIGN1c3RvbSBzY2hlbWFcbnZhciB0eXBlcyA9IHtcbiAgYmluYXJ5OiAgICBiaW5hcnksXG4gIGZsb2F0OiAgICAgZmxvYXQsXG4gIG1hcDogICAgICAgbWFwLFxuICBudWxsOiAgICAgIF9udWxsLFxuICBwYWlyczogICAgIHBhaXJzLFxuICBzZXQ6ICAgICAgIHNldCxcbiAgdGltZXN0YW1wOiB0aW1lc3RhbXAsXG4gIGJvb2w6ICAgICAgYm9vbCxcbiAgaW50OiAgICAgICBpbnQsXG4gIG1lcmdlOiAgICAgbWVyZ2UsXG4gIG9tYXA6ICAgICAgb21hcCxcbiAgc2VxOiAgICAgICBzZXEsXG4gIHN0cjogICAgICAgc3RyXG59O1xuXG4vLyBSZW1vdmVkIGZ1bmN0aW9ucyBmcm9tIEpTLVlBTUwgMy4wLnhcbnZhciBzYWZlTG9hZCAgICAgICAgICAgID0gcmVuYW1lZCgnc2FmZUxvYWQnLCAnbG9hZCcpO1xudmFyIHNhZmVMb2FkQWxsICAgICAgICAgPSByZW5hbWVkKCdzYWZlTG9hZEFsbCcsICdsb2FkQWxsJyk7XG52YXIgc2FmZUR1bXAgICAgICAgICAgICA9IHJlbmFtZWQoJ3NhZmVEdW1wJywgJ2R1bXAnKTtcblxudmFyIGpzWWFtbCA9IHtcblx0VHlwZTogVHlwZSxcblx0U2NoZW1hOiBTY2hlbWEsXG5cdEZBSUxTQUZFX1NDSEVNQTogRkFJTFNBRkVfU0NIRU1BLFxuXHRKU09OX1NDSEVNQTogSlNPTl9TQ0hFTUEsXG5cdENPUkVfU0NIRU1BOiBDT1JFX1NDSEVNQSxcblx0REVGQVVMVF9TQ0hFTUE6IERFRkFVTFRfU0NIRU1BLFxuXHRsb2FkOiBsb2FkLFxuXHRsb2FkQWxsOiBsb2FkQWxsLFxuXHRkdW1wOiBkdW1wLFxuXHRZQU1MRXhjZXB0aW9uOiBZQU1MRXhjZXB0aW9uLFxuXHR0eXBlczogdHlwZXMsXG5cdHNhZmVMb2FkOiBzYWZlTG9hZCxcblx0c2FmZUxvYWRBbGw6IHNhZmVMb2FkQWxsLFxuXHRzYWZlRHVtcDogc2FmZUR1bXBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGpzWWFtbDtcbmV4cG9ydCB7IENPUkVfU0NIRU1BLCBERUZBVUxUX1NDSEVNQSwgRkFJTFNBRkVfU0NIRU1BLCBKU09OX1NDSEVNQSwgU2NoZW1hLCBUeXBlLCBZQU1MRXhjZXB0aW9uLCBkdW1wLCBsb2FkLCBsb2FkQWxsLCBzYWZlRHVtcCwgc2FmZUxvYWQsIHNhZmVMb2FkQWxsLCB0eXBlcyB9O1xuIiwgIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tZW1iZXItYWNjZXNzaWJpbGl0eSAqL1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICdqcy15YW1sJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQgTG9nVGFzayBmcm9tICcuL2xvZ3Rhc2snO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0VHlwZSB7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFR5cGUge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUnVucyB7XG4gIHVzaW5nOiBzdHJpbmc7XG4gIG1haW46IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmRpbmcge1xuICBjb2xvcjogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBJbnB1dHNUeXBlID0geyBbaWQ6IHN0cmluZ106IElucHV0VHlwZSB9O1xuZXhwb3J0IHR5cGUgT3V0cHV0c1R5cGUgPSB7IFtpZDogc3RyaW5nXTogT3V0cHV0VHlwZSB9O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBY3Rpb24ge1xuICAvLyBMb2FkIHRoZSBhY3Rpb24ueW1sXG5cbiAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZztcblxuICBwdWJsaWMgYnJhbmRpbmc6IEJyYW5kaW5nO1xuXG4gIHB1YmxpYyBpbnB1dHM6IElucHV0c1R5cGU7XG5cbiAgcHVibGljIG91dHB1dHM6IE91dHB1dHNUeXBlO1xuXG4gIHB1YmxpYyBydW5zOiBSdW5zO1xuXG4gIGNvbnN0cnVjdG9yKGFjdGlvblBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGxvZyA9IG5ldyBMb2dUYXNrKCdhY3Rpb24nKTtcbiAgICBsZXQgdG1wQWN0aW9uWWFtbCA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGxvZy5kZWJ1ZyhgbG9hZGluZyBhY3Rpb24ueW1sIGZyb20gJHthY3Rpb25QYXRofWApO1xuICAgICAgdG1wQWN0aW9uWWFtbCA9IHlhbWwubG9hZChmcy5yZWFkRmlsZVN5bmMoYWN0aW9uUGF0aCwgJ3V0ZjgnKSkgYXMgQWN0aW9uO1xuICAgICAgbG9nLnN1Y2Nlc3MoJ2xvYWRlZCBjb25maWd1cmF0aW9uIHN1Y2Nlc3NmdWxseScpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgbG9nLmVycm9yKGBmYWlsZWQgdG8gbG9hZCAke2FjdGlvblBhdGh9YCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdG1wQWN0aW9uWWFtbCAhPT0gJ29iamVjdCcgfHwgdG1wQWN0aW9uWWFtbCA9PT0gbnVsbCkge1xuICAgICAgbG9nLmVycm9yKFwiYWN0aW9uLnltbCBmaWxlIHJlYWQgaW4gaXNuJ3QgYW4gb2JqZWN0IChubyB5YW1sIGluIGl0KVwiKTtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uWWFtbCA9IHRtcEFjdGlvbllhbWwgYXMgQWN0aW9uO1xuICAgIHRoaXMubmFtZSA9IGFjdGlvbllhbWwubmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gYWN0aW9uWWFtbC5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmJyYW5kaW5nID0gYWN0aW9uWWFtbC5icmFuZGluZztcbiAgICB0aGlzLmlucHV0cyA9IGFjdGlvbllhbWwuaW5wdXRzO1xuICAgIHRoaXMub3V0cHV0cyA9IGFjdGlvbllhbWwub3V0cHV0cztcbiAgICB0aGlzLnJ1bnMgPSBhY3Rpb25ZYW1sLnJ1bnM7XG4gIH1cbn1cbiIsICJpbXBvcnQgKiBhcyBjb3JlIGZyb20gJ0BhY3Rpb25zL2NvcmUnO1xuaW1wb3J0ICogYXMgQ2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgZW1vamkgZnJvbSAnbm9kZS1lbW9qaSc7XG5cbmNvbnN0IGNoYWxrID0gbmV3IENoYWxrLkluc3RhbmNlKCk7XG5jbGFzcyBMb2dUYXNrIHtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIHN0YXRpYyBpbmdyb3VwX3NldHRpbmc6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgc3RhdGljIGluZGVudFdpZHRoID0gNTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lLnRyaW0oKTtcbiAgICBpZiAoTG9nVGFzay5pbmdyb3VwX3NldHRpbmdbdGhpcy5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBMb2dUYXNrLmluZ3JvdXBfc2V0dGluZ1t0aGlzLm5hbWVdID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGluZ3JvdXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIExvZ1Rhc2suaW5ncm91cF9zZXR0aW5nW3RoaXMubmFtZV0gfHwgZmFsc2U7XG4gIH1cblxuICBzZXQgaW5ncm91cCh2YWx1ZTogYm9vbGVhbikge1xuICAgIExvZ1Rhc2suaW5ncm91cF9zZXR0aW5nW3RoaXMubmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIGxvZ1N0ZXAoZW1vamlTdHI6IHN0cmluZywgc3RlcDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3RlcC5sZW5ndGggPiBMb2dUYXNrLmluZGVudFdpZHRoKSB7XG4gICAgICBMb2dUYXNrLmluZGVudFdpZHRoID0gc3RlcC5sZW5ndGg7XG4gICAgfVxuICAgIGxldCBkZXNjO1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSAnU1RBUlQnOlxuICAgICAgICBkZXNjID0gY2hhbGsueWVsbG93QnJpZ2h0KGAke2Rlc2NyaXB0aW9ufWApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0lORk8nOlxuICAgICAgICBkZXNjID0gY2hhbGsuZ3JlZW4oYCR7ZGVzY3JpcHRpb259YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnV0FSTic6XG4gICAgICAgIGRlc2MgPSBjaGFsay55ZWxsb3coYCR7ZGVzY3JpcHRpb259YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnU1VDQ0VTUyc6XG4gICAgICAgIGRlc2MgPSBjaGFsay5ncmVlbkJyaWdodChgJHtkZXNjcmlwdGlvbn1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdGQUlMVVJFJzpcbiAgICAgICAgZGVzYyA9IGNoYWxrLnJlZEJyaWdodChgJHtkZXNjcmlwdGlvbn1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFUlJPUic6XG4gICAgICAgIGRlc2MgPSBjaGFsay5yZWRCcmlnaHQoYCR7ZGVzY3JpcHRpb259YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnIyMjIyMnOlxuICAgICAgICBkZXNjID0gY2hhbGsuY3lhbihgJHtkZXNjcmlwdGlvbn1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkZXNjID0gY2hhbGsud2hpdGUoYCR7ZGVzY3JpcHRpb259YCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluZ3JvdXAgJiYgIXByb2Nlc3MuZW52WydHSVRIVUJfQUNUSU9OUyddKSB7XG4gICAgICBjb25zdCBpbmRlbnRTdHIgPSBbLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogTG9nVGFzay5pbmRlbnRXaWR0aCB9KS5maWxsKCcgJyldLmpvaW4oJycpO1xuICAgICAgcmV0dXJuIGNoYWxrLmdyYXkoYCR7aW5kZW50U3RyfSAgICR7ZW1vamlTdHJ9OiAke3RoaXMubmFtZX0gPiAke2Rlc2N9YCk7XG4gICAgfVxuICAgIGNvbnN0IHN0ZXBTdHIgPSBbXG4gICAgICAuLi5zdGVwLFxuICAgICAgLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogTG9nVGFzay5pbmRlbnRXaWR0aCAtIHN0ZXAubGVuZ3RoIH0pLmZpbGwoJyAnKSxcbiAgICBdLmpvaW4oJycpO1xuICAgIHJldHVybiBgWyR7c3RlcFN0cn1dICR7ZW1vamlTdHJ9OiAke2Rlc2N9YDtcbiAgfVxuXG4gIGRlYnVnKGRlc2NyaXB0aW9uID0gJycpOiB2b2lkIHtcbiAgICBpZiAocHJvY2Vzcy5lbnZbJ0RFQlVHJ10gPT09ICd0cnVlJykge1xuICAgICAgY29uc3QgbXNnID0gdGhpcy5sb2dTdGVwKCdcdUQ4M0RcdURDNDFcdUZFMEZcdTIwMERcdUQ4M0RcdURERThcdUZFMEYnLCAnREVCVUcnLCBkZXNjcmlwdGlvbik7XG4gICAgICBpZiAoIXByb2Nlc3MuZW52WydHSVRIVUJfQUNUSU9OUyddKSB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcobXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvcmUuZGVidWcobXNnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGFydChkZXNjcmlwdGlvbiA9ICcnKTogdm9pZCB7XG4gICAgY29uc3QgZGVzYyA9IGRlc2NyaXB0aW9uID09PSAnJyA/IGBTdGFydGluZyAke3RoaXMubmFtZX0uLi5gIDogZGVzY3JpcHRpb247XG4gICAgY29uc3QgbXNnID0gdGhpcy5sb2dTdGVwKGVtb2ppLmdldCgncm9ja2V0JyksICdTVEFSVCcsIGRlc2MpO1xuICAgIHRoaXMuaW5ncm91cCA9IHRydWU7XG4gICAgaWYgKCFwcm9jZXNzLmVudlsnR0lUSFVCX0FDVElPTlMnXSkge1xuICAgICAgY29uc29sZS5pbmZvKG1zZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvcmUuc3RhcnRHcm91cChtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGluZm8oZGVzY3JpcHRpb24gPSAnJyk6IHZvaWQge1xuICAgIGNvbnN0IG1zZyA9IHRoaXMubG9nU3RlcChlbW9qaS5nZXQoJ3NwYXJrbGVzJyksICdJTkZPJywgZGVzY3JpcHRpb24pO1xuICAgIGlmICghcHJvY2Vzcy5lbnZbJ0dJVEhVQl9BQ1RJT05TJ10pIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhtc2cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3JlLmluZm8obXNnKTtcbiAgICB9XG4gIH1cblxuICB3YXJuKGRlc2NyaXB0aW9uID0gJycpOiB2b2lkIHtcbiAgICBjb25zdCBtc2cgPSB0aGlzLmxvZ1N0ZXAoZW1vamkuZ2V0KCdhbmdlcicpLCAnV0FSTicsIGRlc2NyaXB0aW9uKTtcbiAgICBpZiAoIXByb2Nlc3MuZW52WydHSVRIVUJfQUNUSU9OUyddKSB7XG4gICAgICBjb25zb2xlLmluZm8obXNnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29yZS5pbmZvKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgc3VjY2VzcyhkZXNjcmlwdGlvbiA9ICcnLCBpbmdyb3VwID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGRlc2MgPSBkZXNjcmlwdGlvbiA9PT0gJycgPyBgQ29tcGxldGVkICR7dGhpcy5uYW1lfS5gIDogZGVzY3JpcHRpb247XG4gICAgaWYgKGluZ3JvdXApIHtcbiAgICAgIHRoaXMuaW5ncm91cCA9IGZhbHNlO1xuICAgICAgaWYgKHByb2Nlc3MuZW52WydHSVRIVUJfQUNUSU9OUyddKSB7XG4gICAgICAgIGNvcmUuZW5kR3JvdXAoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbXNnID0gdGhpcy5sb2dTdGVwKGVtb2ppLmdldCgnd2hpdGVfY2hlY2tfbWFyaycpLCAnU1VDQ0VTUycsIGNoYWxrLmdyZWVuKGRlc2MpKTtcbiAgICBpZiAoIXByb2Nlc3MuZW52WydHSVRIVUJfQUNUSU9OUyddKSB7XG4gICAgICBjb25zb2xlLmluZm8obXNnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29yZS5pbmZvKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgZmFpbChkZXNjcmlwdGlvbiA9ICcnLCBpbmdyb3VwID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGRlc2MgPSBkZXNjcmlwdGlvbiA9PT0gJycgPyBgRmFpbGVkICR7dGhpcy5uYW1lfS5gIDogZGVzY3JpcHRpb247XG4gICAgaWYgKGluZ3JvdXApIHtcbiAgICAgIHRoaXMuaW5ncm91cCA9IGZhbHNlO1xuICAgICAgaWYgKHByb2Nlc3MuZW52WydHSVRIVUJfQUNUSU9OUyddKSB7XG4gICAgICAgIGNvcmUuZW5kR3JvdXAoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbXNnID0gdGhpcy5sb2dTdGVwKGVtb2ppLmdldCgneCcpLCAnRkFJTFVSRScsIGNoYWxrLnJlZChkZXNjKSk7XG4gICAgaWYgKCFwcm9jZXNzLmVudlsnR0lUSFVCX0FDVElPTlMnXSkge1xuICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3JlLnNldEZhaWxlZChtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGVycm9yKGRlc2NyaXB0aW9uID0gJycpOiB2b2lkIHtcbiAgICBjb25zdCBtc2cgPSB0aGlzLmxvZ1N0ZXAoZW1vamkuZ2V0KCd4JyksICdFUlJPUicsIGNoYWxrLmJnUmVkQnJpZ2h0KGRlc2NyaXB0aW9uKSk7XG4gICAgaWYgKCFwcm9jZXNzLmVudlsnR0lUSFVCX0FDVElPTlMnXSkge1xuICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3JlLmVycm9yKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgdGl0bGUoZGVzY3JpcHRpb24gPSAnJyk6IHZvaWQge1xuICAgIGNvbnN0IG1zZyA9IHRoaXMubG9nU3RlcCgnXHVEODNEXHVEQ0QzJywgJyMjIyMjJywgY2hhbGsueWVsbG93QnJpZ2h0KGRlc2NyaXB0aW9uKSk7XG4gICAgaWYgKCFwcm9jZXNzLmVudlsnR0lUSFVCX0FDVElPTlMnXSkge1xuICAgICAgY29uc29sZS5pbmZvKG1zZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvcmUuaW5mbyhtc2cpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2dUYXNrO1xuIiwgImltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJ0BhY3Rpb25zL2dpdGh1Yi9saWIvY29udGV4dCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdub2RlOmZzJztcblxuaW1wb3J0IExvZ1Rhc2sgZnJvbSAnLi9sb2d0YXNrJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBUZXh0KHRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgY29udGVudDogc3RyaW5nW10sIHByZXBlbmQgPSAnJyk6IHN0cmluZ1tdIHtcbiAgLy8gQ29uc3RyYWluIHRoZSB3aWR0aCBvZiB0aGUgZGVzY3JpcHRpb25cbiAgaWYgKCF0ZXh0KSByZXR1cm4gY29udGVudDtcblxuICBjb25zdCB3aWR0aCA9IDgwO1xuICBsZXQgZGVzY3JpcHRpb24gPSB0ZXh0XG4gICAgLnRyaW1FbmQoKVxuICAgIC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpIC8vIENvbnZlcnQgQ1IgdG8gTEZcbiAgICAucmVwbGFjZSgvICsvZywgJyAnKSAvLyAgICBTcXVhc2ggY29uc2VjdXRpdmUgc3BhY2VzXG4gICAgLnJlcGxhY2UoLyBcXG4vZywgJ1xcbicpOyAvLyAgU3F1YXNoIHNwYWNlIGZvbGxvd2VkIGJ5IG5ld2xpbmVcbiAgd2hpbGUgKGRlc2NyaXB0aW9uKSB7XG4gICAgLy8gTG9uZ2VyIHRoYW4gd2lkdGg/IEZpbmQgYSBzcGFjZSB0byBicmVhayBhcGFydFxuICAgIGxldCBzZWdtZW50OiBzdHJpbmc7XG4gICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCA+IHdpZHRoKSB7XG4gICAgICBzZWdtZW50ID0gZGVzY3JpcHRpb24uc2xpY2UoMCwgTWF0aC5tYXgoMCwgd2lkdGggKyAxKSk7XG4gICAgICB3aGlsZSAoIXNlZ21lbnQuZW5kc1dpdGgoJyAnKSAmJiAhc2VnbWVudC5lbmRzV2l0aCgnXFxuJykgJiYgc2VnbWVudCkge1xuICAgICAgICBzZWdtZW50ID0gc2VnbWVudC5zbGljZSgwLCBNYXRoLm1heCgwLCBzZWdtZW50Lmxlbmd0aCAtIDEpKTtcbiAgICAgIH1cblxuICAgICAgLy8gVHJpbW1lZCB0b28gbXVjaD9cbiAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA8IHdpZHRoICogMC42Nykge1xuICAgICAgICBzZWdtZW50ID0gZGVzY3JpcHRpb247XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZ21lbnQgPSBkZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgbmV3bGluZVxuICAgIGNvbnN0IG5ld2xpbmVJbmRleCA9IHNlZ21lbnQuaW5kZXhPZignXFxuJyk7XG4gICAgaWYgKG5ld2xpbmVJbmRleCA+PSAwKSB7XG4gICAgICBzZWdtZW50ID0gc2VnbWVudC5zbGljZSgwLCBNYXRoLm1heCgwLCBuZXdsaW5lSW5kZXggKyAxKSk7XG4gICAgfVxuICAgIGNvbnRlbnQucHVzaChgJHtwcmVwZW5kfSR7c2VnbWVudH1gLnRyaW1FbmQoKSk7XG4gICAgLy8gUmVtYWluaW5nXG4gICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5zbGljZShzZWdtZW50Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlcG8ge1xuICBvd25lcjogc3RyaW5nO1xuICByZXBvOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvc2l0b3J5RmluZGVyKFxuICBpbnB1dFJlcG86IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIGNvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQgfCBudWxsLFxuKTogUmVwbyB8IG51bGwge1xuICBjb25zdCBsb2cgPSBuZXcgTG9nVGFzaygncmVwb3NpdG9yeUZpbmRlcicpO1xuICBjb25zdCBvYmogPSB7fSBhcyB1bmtub3duO1xuICBjb25zdCByZXN1bHQgPSBvYmogYXMgUmVwbztcbiAgaWYgKGlucHV0UmVwbykge1xuICAgIFtyZXN1bHQub3duZXIsIHJlc3VsdC5yZXBvXSA9IGlucHV0UmVwby5zcGxpdCgnLycpIGFzIFtzdHJpbmcsIHN0cmluZ107XG4gICAgbG9nLmluZm8oYHJlcG9zaXRvcnlGaW5kZXIgdXNpbmcgaW5wdXQgJHtpbnB1dFJlcG99IGFuZCByZXR1cm5zICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmIChwcm9jZXNzLmVudlsnR0lUSFVCX1JFUE9TSVRPUlknXSkge1xuICAgIFtyZXN1bHQub3duZXIsIHJlc3VsdC5yZXBvXSA9IHByb2Nlc3MuZW52WydHSVRIVUJfUkVQT1NJVE9SWSddLnNwbGl0KCcvJykgYXMgW3N0cmluZywgc3RyaW5nXTtcbiAgICBsb2cuaW5mbyhcbiAgICAgIGByZXBvc2l0b3J5RmluZGVyIHVzaW5nIEdJVEhVQl9SRVBPU0lUT1JZICR7XG4gICAgICAgIHByb2Nlc3MuZW52WydHSVRIVUJfUkVQT1NJVE9SWSddXG4gICAgICB9IGFuZCByZXR1cm5zICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gLFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY29udGV4dCkge1xuICAgIHJlc3VsdC5vd25lciA9IGNvbnRleHQucmVwby5vd25lcjtcbiAgICByZXN1bHQucmVwbyA9IGNvbnRleHQucmVwby5yZXBvO1xuXG4gICAgbG9nLmluZm8oXG4gICAgICBgcmVwb3NpdG9yeUZpbmRlciB1c2luZyBHSVRIVUJfUkVQT1NJVE9SWSAke1xuICAgICAgICBwcm9jZXNzLmVudlsnR0lUSFVCX1JFUE9TSVRPUlknXVxuICAgICAgfSBhbmQgcmV0dXJucyAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCxcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52WydJTlBVVF9PV05FUiddICYmIHByb2Nlc3MuZW52WydJTlBVVF9SRVBPJ10pIHtcbiAgICByZXN1bHQub3duZXIgPSBwcm9jZXNzLmVudlsnSU5QVVRfT1dORVInXTtcbiAgICByZXN1bHQucmVwbyA9IHByb2Nlc3MuZW52WydJTlBVVF9SRVBPJ107XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKCcuZ2l0L2NvbmZpZycsICd1dGY4Jyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC11bnNhZmUtcmVnZXhcbiAgICBjb25zdCBwYXR0ZXJuID0gL3VybCggKT89KCApPy4qZ2l0aHViXFwuY29tWy86XSg/PG93bmVyPi4qKVxcLyg/PHJlcG8+LiopXFwuZ2l0LztcblxuICAgIGludGVyZmFjZSBPd25lclJlcG9JbnRlcmZhY2UgZXh0ZW5kcyBSZWdFeHBFeGVjQXJyYXkge1xuICAgICAgZ3JvdXBzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgb3duZXI/OiBzdHJpbmc7XG4gICAgICAgIHJlcG8/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdHMgPSBmaWxlQ29udGVudC5tYXRjaChwYXR0ZXJuKSBhcyBPd25lclJlcG9JbnRlcmZhY2U7XG4gICAgaWYgKHJlc3VsdHMgIT09IG51bGwpIHtcbiAgICAgIGxvZy5kZWJ1ZyhKU09OLnN0cmluZ2lmeShyZXN1bHRzLmdyb3VwcykpO1xuICAgICAgcmVzdWx0Lm93bmVyID0gcmVzdWx0cy5ncm91cHMub3duZXIgPz8gJyc7XG4gICAgICByZXN1bHQucmVwbyA9IHJlc3VsdHMuZ3JvdXBzLnJlcG8gPz8gJyc7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gY2FuJ3QgZmluZCBpdFxuICAgIGxvZy5kZWJ1ZyhgQ291bGRuJ3QgZmluZCBhbnkgb3duZXIgb3IgcmVwbzogJHtlcnJvcn1gKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiB3b3JraW5nRGlyZWN0b3J5KCk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9jZXNzLmVudlsnR0lUSFVCX1dPUktTUEFDRSddID8/IHByb2Nlc3MuZW52WydJTklUX0NXRCddID8/IHByb2Nlc3MuY3dkKCk7XG59XG5leHBvcnQgZGVmYXVsdCB3b3JraW5nRGlyZWN0b3J5O1xuIiwgImltcG9ydCBJbnB1dHMsIHsgY29uZmlnS2V5cyB9IGZyb20gJy4vaW5wdXRzJztcbmltcG9ydCBMb2dUYXNrIGZyb20gJy4vbG9ndGFzayc7XG5cbi8vIFRoaXMgc2NyaXB0IHJlYnVpbGRzIHRoZSB1c2FnZSBzZWN0aW9uIGluIHRoZSBSRUFETUUubWQgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBhY3Rpb24ueW1sXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYXZlKGlucHV0czogSW5wdXRzKTogdm9pZCB7XG4gIGNvbnN0IGxvZyA9IG5ldyBMb2dUYXNrKCdzYXZlJyk7XG4gIGlmIChpbnB1dHMuY29uZmlnLmdldCgnc2F2ZScpLnRvU3RyaW5nKCkgPT09ICd0cnVlJykge1xuICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhjb25maWdLZXlzKSkge1xuICAgICAgaW5wdXRzLmNvbmZpZy5zZXQoaywgaW5wdXRzLmNvbmZpZy5nZXQoaykpO1xuICAgIH1cbiAgICBpbnB1dHMuY29uZmlnLnNhdmUoKGVycjogYW55KSA9PiB7XG4gICAgICBpZiAoZXJyICYmICdtZXNzYWdlJyBpbiBlcnIgJiYgZXJyLm1lc3NhZ2UpIHtcbiAgICAgICAgbG9nLmVycm9yKGVyci5tZXNzYWdlIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKCdDb25maWd1cmF0aW9uIHNhdmVkIHN1Y2Nlc3NmdWxseS4nKTtcbiAgICB9KTtcbiAgfVxufVxuIiwgImltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICdwcmV0dGllcic7XG5cbmltcG9ydCB7IGVuZFRva2VuRm9ybWF0LCBzdGFydFRva2VuRm9ybWF0IH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IExvZ1Rhc2sgZnJvbSAnLi9sb2d0YXNrJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVhZG1lV3JpdGVyKFxuICBjb250ZW50OiBzdHJpbmdbXSxcbiAgdG9rZW5OYW1lOiBzdHJpbmcsXG4gIHJlYWRtZVBhdGg6IHN0cmluZyxcbik6IHZvaWQge1xuICBjb25zdCBsb2cgPSBuZXcgTG9nVGFzayh0b2tlbk5hbWUpO1xuXG4gIGlmICghY29udGVudCkge1xuICAgIGxvZy5pbmZvKGByZWFkbWVXcml0ZXIgcGFzc2VkIG5vIGNvbnRlbnQgZnJvbSAke3Rva2VuTmFtZX0gcGFyc2VyYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxvZy5pbmZvKGBMb29raW5nIGZvciB0aGUgJHt0b2tlbk5hbWV9IHRva2VuIGluICR7cmVhZG1lUGF0aH1gKTtcbiAgLy8gTG9hZCB0aGUgUkVBRE1FXG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkbWUgPSBmcy5yZWFkRmlsZVN5bmMocmVhZG1lUGF0aCkudG9TdHJpbmcoKTtcblxuICBjb25zdCBzdGFydFRva2VuID0gc3RhcnRUb2tlbkZvcm1hdC5yZXBsYWNlKCclcycsIHRva2VuTmFtZSk7XG4gIGNvbnN0IGVuZFRva2VuID0gZW5kVG9rZW5Gb3JtYXQucmVwbGFjZSgnJXMnLCB0b2tlbk5hbWUpO1xuXG4gIC8vIEZpbmQgdGhlIHN0YXJ0IHRva2VuXG4gIGNvbnN0IHN0YXJ0VG9rZW5JbmRleCA9IG9yaWdpbmFsUmVhZG1lLmluZGV4T2Yoc3RhcnRUb2tlbik7XG4gIGlmIChzdGFydFRva2VuSW5kZXggPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdGFydCB0b2tlbiAnJHtzdGFydFRva2VufScgbm90IGZvdW5kYCk7XG4gIH1cbiAgbG9nLmluZm8oYEZvdW5kIHRoZSBzdGFydCAke3Rva2VuTmFtZX0gdG9rZW5gKTtcblxuICAvLyBGaW5kIHRoZSBlbmQgdG9rZW5cbiAgY29uc3QgZW5kVG9rZW5JbmRleCA9IG9yaWdpbmFsUmVhZG1lLmluZGV4T2YoZW5kVG9rZW4pO1xuICBpZiAoZW5kVG9rZW5JbmRleCA8IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCB0b2tlbiAnJHtlbmRUb2tlbn0nIG5vdCBmb3VuZGApO1xuICB9IGVsc2UgaWYgKGVuZFRva2VuSW5kZXggPCBzdGFydFRva2VuSW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXJ0IHRva2VuIG11c3QgYXBwZWFyIGJlZm9yZSBlbmQgdG9rZW4nKTtcbiAgfVxuICBsb2cuaW5mbyhgRm91bmQgdGhlIGVuZCAke3Rva2VuTmFtZX0gdG9rZW5gKTtcbiAgLy8gQnVpbGQgdGhlIG5ldyBSRUFETUVcbiAgY29uc3QgbmV3UmVhZG1lOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBsZW46IG51bWJlciA9IHN0YXJ0VG9rZW4ubGVuZ3RoO1xuXG4gIG5ld1JlYWRtZS5wdXNoKFxuICAgIG9yaWdpbmFsUmVhZG1lLnNsaWNlKDAsIE1hdGgubWF4KDAsIHN0YXJ0VG9rZW5JbmRleCArIGxlbikpLCAvLyBBcHBlbmQgdGhlIGJlZ2lubmluZ1xuICAgIC4uLmNvbnRlbnQsXG4gICAgb3JpZ2luYWxSZWFkbWUuc2xpY2UoZW5kVG9rZW5JbmRleCksIC8vIEFwcGVuZCB0aGUgZW5kXG4gICk7XG5cbiAgY29uc3QgZmlsZUNvbnRlbnQgPSBuZXdSZWFkbWUuam9pbihFT0wpO1xuICAvLyBXcml0ZSB0aGUgbmV3IFJFQURNRVxuICBmcy53cml0ZUZpbGVTeW5jKHJlYWRtZVBhdGgsIGZvcm1hdChmaWxlQ29udGVudCwgeyBzZW1pOiBmYWxzZSwgcGFyc2VyOiAnbWFya2Rvd24nIH0pKTtcbiAgbG9nLmluZm8oYHN1Y2Nlc3NmdWxseSB1cGRhdGVkIHRoZSAke3Rva2VuTmFtZX0gc2VjdGlvbmApO1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbmluZyB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHByZWZpeDogc3RyaW5nO1xuICBvdmVycmlkZTogc3RyaW5nO1xuICBicmFuY2g6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aHMge1xuICBhY3Rpb246IHN0cmluZztcbiAgcmVhZG1lOiBzdHJpbmc7XG59XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBHSEFjdGlvbkRvY3NDb25maWcge1xuICBvd25lcjogc3RyaW5nO1xuXG4gIHJlcG86IHN0cmluZztcblxuICB0aXRsZV9wcmVmaXg6IHN0cmluZztcblxuICB0aXRsZTogc3RyaW5nO1xuXG4gIHBhdGhzOiBQYXRocztcblxuICBzaG93X2xvZ286IGJvb2xlYW47XG5cbiAgdmVyc2lvbmluZzogVmVyc2lvbmluZztcblxuICByZWFkbWVQYXRoOiBzdHJpbmc7XG5cbiAgb3V0cGF0aDogc3RyaW5nO1xuXG4gIHByZXR0eTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHN0YXJ0VG9rZW5Gb3JtYXQgPSAnPCEtLSBzdGFydCAlcyAtLT4nO1xuZXhwb3J0IGNvbnN0IGVuZFRva2VuRm9ybWF0ID0gJzwhLS0gZW5kICVzIC0tPic7XG4iLCAiaW1wb3J0IHR5cGUgSW5wdXRzIGZyb20gJy4uL2lucHV0cyc7XG5pbXBvcnQgTG9nVGFzayBmcm9tICcuLi9sb2d0YXNrJztcbmltcG9ydCB1cGRhdGVSZWFkbWUgZnJvbSAnLi4vcmVhZG1lLXdyaXRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVwZGF0ZURlc2NyaXB0aW9uKHRva2VuOiBzdHJpbmcsIGlucHV0czogSW5wdXRzKTogdm9pZCB7XG4gIGNvbnN0IGxvZyA9IG5ldyBMb2dUYXNrKHRva2VuKTtcbiAgbGV0IGRlc2MgPSAnJztcbiAgLy8gQnVpbGQgdGhlIG5ldyBSRUFETUVcbiAgY29uc3QgY29udGVudDogc3RyaW5nW10gPSBbXTtcbiAgLy8gQnVpbGQgdGhlIG5ldyBkZXNjcmlwdGlvbiBzZWN0aW9uXG4gIGlmIChpbnB1dHMuYWN0aW9uLmRlc2NyaXB0aW9uKSB7XG4gICAgbG9nLnN0YXJ0KCk7XG4gICAgZGVzYyA9IGlucHV0cy5hY3Rpb24uZGVzY3JpcHRpb24ucmVwbGFjZSgnXFxuJywgJ1xcblxcbicpO1xuXG4gICAgbG9nLmluZm8oYFdyaXRpbmcgJHtkZXNjLmxlbmd0aH0gY2hhcmFjdGVycyB0byB0aGUgZGVzY3JpcHRpb24gc2VjdGlvbmApO1xuICAgIGNvbnRlbnQucHVzaChkZXNjKTtcbiAgICB1cGRhdGVSZWFkbWUoY29udGVudCwgdG9rZW4sIGlucHV0cy5yZWFkbWVQYXRoKTtcbiAgICBsb2cuc3VjY2VzcygpO1xuICB9XG59XG4iLCAiZXhwb3J0IHR5cGUgTWFya2Rvd25BcnJheVJvd1R5cGUgPSBzdHJpbmdbXVtdO1xuZXhwb3J0IHR5cGUgTWFya2Rvd25BcnJheUl0ZW1UeXBlID0gc3RyaW5nO1xuLyoqXG4gKiBGaWxscyB0aGUgd2lkdGggb2YgdGhlIGNlbGwuXG4gKiBAcGFyYW0gdGV4dFxuICogQHBhcmFtIHdpZHRoXG4gKiBAcGFyYW0gcGFkZGluZ1N0YXJ0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsV2lkdGgodGV4dDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBwYWRkaW5nU3RhcnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgJyAnLnJlcGVhdChwYWRkaW5nU3RhcnQpICsgdGV4dCArICcgJy5yZXBlYXQoTWF0aC5tYXgoMSwgd2lkdGggLSB0ZXh0Lmxlbmd0aCAtIHBhZGRpbmdTdGFydCkpXG4gICk7XG59XG4vKipcbiAqIEVzY2FwZSBhIHRleHQgc28gaXQgY2FuIGJlIHVzZWQgaW4gYSBtYXJrZG93biB0YWJsZVxuICogQHBhcmFtIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duRXNjYXBlVGFibGVDZWxsKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoL1xcbi9nLCAnPGJyIC8+JykucmVwbGFjZSgvXFx8L2csICdcXFxcfCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya2Rvd25Fc2NhcGVJbmxpbmVDb2RlKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIHJlcGxhY2UgZ3JhdmUgYWNjZW50cyB3aXRoIDxjb2RlPiBIVE1MIGVsZW1lbnQgdG8gcmVzb2x2ZSB1bmljb2RlIGNoYXJhY3RlciBpbiBtYXJrZG93blxuICAvLyBsZXQgaXNDbG9zaW5nVGFnID0gZmFsc2U7XG4gIHJldHVybiBjb250ZW50LnJlcGxhY2UoLyhbXFxzKl9dfF4pYChbXmBdKylgKFtcXHMqX118JCkvZywgJyQxPGNvZGU+JDI8L2NvZGU+JDMnKTtcblxuICAvLyA/LmZvckVhY2goKG1hdGNoKSA9PiB7XG4gIC8vICAgaWYgKCFpc0Nsb3NpbmdUYWcpIHtcbiAgLy8gICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UobWF0Y2gsICc8Y29kZT4nKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShtYXRjaCwgJzwvY29kZT4nKTtcbiAgLy8gICB9XG4gIC8vICAgaXNDbG9zaW5nVGFnID0gIWlzQ2xvc2luZ1RhZztcbiAgLy8gfSk7XG4gIC8vIHJldHVybiBjb250ZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBcnJheU9mQXJyYXlzVG9NYXJrZG93blRhYmxlKHByb3ZpZGVkVGFibGVDb250ZW50OiBNYXJrZG93bkFycmF5Um93VHlwZSk6IHN0cmluZyB7XG4gIGNvbnN0IHRhYmxlQ29udGVudDogTWFya2Rvd25BcnJheVJvd1R5cGUgPSBbXTtcbiAgY29uc3Qgb3V0cHV0U3RyaW5ncyA9IFtdO1xuICAvLyBDbG9uZSB0aGUgYXJyYXlzIHNvIHdlIGRvbid0IG1vZGlmeSB0aGUgb3JpZ2luYWxcbiAgZm9yIChjb25zdCByb3dBIG9mIHByb3ZpZGVkVGFibGVDb250ZW50KSB7XG4gICAgdGFibGVDb250ZW50LnB1c2goWy4uLnJvd0FdIGFzIHN0cmluZ1tdKTtcbiAgfVxuICBjb25zdCBtYXhSb3dzID0gdGFibGVDb250ZW50Lmxlbmd0aDtcbiAgbGV0IG1heENvbHMgPSAwO1xuICBsZXQgbWluQ29scyA9IDA7XG4gIC8vIEZpbmQgdGhlIG1heCBhbmQgbWluIGNvbHVtbnMgc28gd2UgY2FuIHBhZCB0aGUgcm93c1xuICBmb3IgKGNvbnN0IFtpLCBlXSBvZiB0YWJsZUNvbnRlbnQuZW50cmllcygpKSB7XG4gICAgaWYgKHRhYmxlQ29udGVudFtpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBudW1Db2xzID0gZS5sZW5ndGg7XG4gICAgICBpZiAobnVtQ29scyA+IG1heENvbHMpIHtcbiAgICAgICAgbWF4Q29scyA9IG51bUNvbHM7XG4gICAgICB9XG4gICAgICBpZiAobnVtQ29scyA8IG1pbkNvbHMgfHwgbWluQ29scyA9PT0gMCkge1xuICAgICAgICBtaW5Db2xzID0gbnVtQ29scztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKG1heENvbHMgIT09IG1pbkNvbHMpIHtcbiAgICBmb3IgKGNvbnN0IFtpLCBlXSBvZiB0YWJsZUNvbnRlbnQuZW50cmllcygpKSB7XG4gICAgICBpZiAodHlwZW9mIHRhYmxlQ29udGVudFtpXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGFibGVDb250ZW50W2ldID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWF4Q29scyB9KS5maWxsKCcnKSBhcyBzdHJpbmdbXTtcbiAgICAgIH0gZWxzZSBpZiAoZS5sZW5ndGggPCBtYXhDb2xzKSB7XG4gICAgICAgIHRhYmxlQ29udGVudFtpXSA9IFtcbiAgICAgICAgICAuLi5lLFxuICAgICAgICAgIC4uLkFycmF5LmZyb20oeyBsZW5ndGg6IG1heENvbHMgLSBlLmxlbmd0aCB9KS5maWxsKCd1bmRlZmluZWQnKSxcbiAgICAgICAgXSBhcyBzdHJpbmdbXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgbWFya2Rvd25BcnJheVJvd3NMZW5ndGggPSBtYXhSb3dzICsgMTtcbiAgY29uc3QgbWFya2Rvd25BcnJheUVudHJpZXNMZW5ndGggPSBtYXhDb2xzICogMiArIDE7XG4gIGNvbnN0IG1hcmtkb3duQXJyYXlzOiBNYXJrZG93bkFycmF5Um93VHlwZSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IG1hcmtkb3duQXJyYXlSb3dzTGVuZ3RoIH0pLmZpbGwoXG4gICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogbWFya2Rvd25BcnJheUVudHJpZXNMZW5ndGggfSkuZmlsbCgnfCcgYXMgc3RyaW5nKSBhcyBzdHJpbmdbXSxcbiAgKSBhcyBNYXJrZG93bkFycmF5Um93VHlwZTtcbiAgZm9yIChjb25zdCBbaSwgcm93XSBvZiBtYXJrZG93bkFycmF5cy5lbnRyaWVzKCkpIHtcbiAgICBsZXQgY29sID0gMDtcblxuICAgIGNvbnN0IGlkeCA9IGkgPiAxID8gaSAtIDEgOiAwO1xuICAgIGNvbnN0IGRhdGFSb3cgPSB0YWJsZUNvbnRlbnRbaWR4XSBhcyBzdHJpbmdbXTtcbiAgICBmb3IgKGNvbnN0IFtqXSBvZiByb3cuZW50cmllcygpKSB7XG4gICAgICBsZXQgY29udGVudCA9IG1hcmtkb3duRXNjYXBlVGFibGVDZWxsKGRhdGFSb3dbY29sXSA/PyAnJyk7XG5cbiAgICAgIGNvbnRlbnQgPSBtYXJrZG93bkVzY2FwZUlubGluZUNvZGUoY29udGVudCk7XG5cbiAgICAgIGlmIChqICUgMiA9PT0gMSkge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIChtYXJrZG93bkFycmF5c1tpXSBhcyBzdHJpbmdbXSlbal0gPSBgICoqJHtjb250ZW50LnRyaW0oKX0qKiBgO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDEpIHtcbiAgICAgICAgICAobWFya2Rvd25BcnJheXNbaV0gYXMgc3RyaW5nW10pW2pdID0gJy0tLSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKG1hcmtkb3duQXJyYXlzW2ldIGFzIHN0cmluZ1tdKVtqXSA9IGAgJHtjb250ZW50LnRyaW0oKX0gYDtcbiAgICAgICAgfVxuICAgICAgICBjb2wgKz0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0cHV0U3RyaW5ncy5wdXNoKGAkeyhtYXJrZG93bkFycmF5c1tpXSBhcyBzdHJpbmdbXSkuam9pbignJyl9XFxuYCk7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0U3RyaW5ncy5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXJyYXlPZkFycmF5c1RvTWFya2Rvd25UYWJsZTtcbiIsICJpbXBvcnQgdHlwZSBJbnB1dHMgZnJvbSAnLi4vaW5wdXRzJztcbmltcG9ydCBMb2dUYXNrIGZyb20gJy4uL2xvZ3Rhc2snO1xuaW1wb3J0IG1hcmtkb3duZXIgZnJvbSAnLi4vbWFya2Rvd25lcic7XG5pbXBvcnQgdXBkYXRlUmVhZG1lIGZyb20gJy4uL3JlYWRtZS13cml0ZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVJbnB1dHModG9rZW46IHN0cmluZywgaW5wdXRzOiBJbnB1dHMpOiB2b2lkIHtcbiAgY29uc3QgbG9nID0gbmV3IExvZ1Rhc2sodG9rZW4pO1xuICAvLyBCdWlsZCB0aGUgbmV3IFJFQURNRVxuICBjb25zdCBjb250ZW50OiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBtYXJrZG93bkFycmF5OiBzdHJpbmdbXVtdID0gW1snSW5wdXQnLCAnRGVzY3JpcHRpb24nLCAnRGVmYXVsdCcsICdSZXF1aXJlZCddXTtcbiAgY29uc3QgdmFycyA9IGlucHV0cy5hY3Rpb24uaW5wdXRzO1xuICBjb25zdCB0SSA9IHZhcnMgPyBPYmplY3Qua2V5cyh2YXJzKS5sZW5ndGggOiAwO1xuICBpZiAodEkgPiAwKSB7XG4gICAgbG9nLnN0YXJ0KCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFycykpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgY29uc3QgdmFsdWVzID0gdmFyc1trZXldO1xuICAgICAgY29uc3Qgcm93OiBzdHJpbmdbXSA9IFtcbiAgICAgICAgYCoqXFxgJHtrZXkudHJpbSgpfVxcYCoqYCxcbiAgICAgICAgdmFsdWVzPy5kZXNjcmlwdGlvbj8udHJpbSgpLnJlcGxhY2UoJ1xcbicsICc8YnIgLz4nKSA/PyAnJyxcbiAgICAgICAgdmFsdWVzPy5kZWZhdWx0ID8gYFxcYCR7dmFsdWVzLmRlZmF1bHR9XFxgYCA6ICcnLFxuICAgICAgICB2YWx1ZXM/LnJlcXVpcmVkID8gJyoqdHJ1ZSoqJyA6ICdfX2ZhbHNlX18nLFxuICAgICAgXTtcbiAgICAgIGxvZy5kZWJ1ZyhKU09OLnN0cmluZ2lmeShyb3cpKTtcbiAgICAgIG1hcmtkb3duQXJyYXkucHVzaChyb3cpO1xuICAgIH1cbiAgICBjb250ZW50LnB1c2gobWFya2Rvd25lcihtYXJrZG93bkFycmF5KSk7XG4gICAgbG9nLmluZm8oYEFjdGlvbiBoYXMgJHt0SX0gdG90YWwgJHt0b2tlbn1gKTtcbiAgICB1cGRhdGVSZWFkbWUoY29udGVudCwgdG9rZW4sIGlucHV0cy5yZWFkbWVQYXRoKTtcbiAgICBsb2cuc3VjY2VzcygpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5kZWJ1ZyhgQWN0aW9uIGhhcyBubyAke3Rva2VufWApO1xuICB9XG59XG4iLCAiaW1wb3J0IHR5cGUgSW5wdXRzIGZyb20gJy4uL2lucHV0cyc7XG5pbXBvcnQgTG9nVGFzayBmcm9tICcuLi9sb2d0YXNrJztcbmltcG9ydCBtYXJrZG93bmVyIGZyb20gJy4uL21hcmtkb3duZXInO1xuaW1wb3J0IHVwZGF0ZVJlYWRtZSBmcm9tICcuLi9yZWFkbWUtd3JpdGVyJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlT3V0cHV0cyh0b2tlbjogc3RyaW5nLCBpbnB1dHM6IElucHV0cyk6IHZvaWQge1xuICBjb25zdCBsb2cgPSBuZXcgTG9nVGFzayh0b2tlbik7XG5cbiAgLy8gQnVpbGQgdGhlIG5ldyBSRUFETUVcbiAgY29uc3QgY29udGVudDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgbWFya2Rvd25BcnJheTogc3RyaW5nW11bXSA9IFtcbiAgICBbJyoqT3V0cHV0KionLCAnKipEZXNjcmlwdGlvbioqJywgJyoqRGVmYXVsdCoqJywgJyoqUmVxdWlyZWQqKiddLFxuICBdO1xuICBjb25zdCB2YXJzID0gaW5wdXRzLmFjdGlvbi5vdXRwdXRzO1xuICBjb25zdCB0SSA9IHZhcnMgPyBPYmplY3Qua2V5cyh2YXJzKS5sZW5ndGggOiAwO1xuICBpZiAodEkgPiAwKSB7XG4gICAgbG9nLnN0YXJ0KCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFycykpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgY29uc3QgdmFsdWVzID0gdmFyc1trZXldO1xuICAgICAgY29uc3Qgcm93OiBzdHJpbmdbXSA9IFtcbiAgICAgICAgYFxcYCR7a2V5LnRyaW0oKX1cXGBgLFxuICAgICAgICB2YWx1ZXM/LmRlc2NyaXB0aW9uPy50cmltKCkucmVwbGFjZSgnXFxuJywgJyAnKSA/PyAnJyxcbiAgICAgIF07XG4gICAgICBsb2cuZGVidWcoSlNPTi5zdHJpbmdpZnkocm93KSk7XG4gICAgICBtYXJrZG93bkFycmF5LnB1c2gocm93KTtcbiAgICB9XG4gICAgY29udGVudC5wdXNoKG1hcmtkb3duZXIobWFya2Rvd25BcnJheSkpO1xuICAgIGxvZy5pbmZvKGBBY3Rpb24gaGFzICR7dEl9IHRvdGFsICR7dG9rZW59YCk7XG4gICAgdXBkYXRlUmVhZG1lKGNvbnRlbnQsIHRva2VuLCBpbnB1dHMucmVhZG1lUGF0aCk7XG4gICAgbG9nLnN1Y2Nlc3MoKTtcbiAgfSBlbHNlIHtcbiAgICBsb2cuZGVidWcoYEFjdGlvbiBoYXMgbm8gJHt0b2tlbn1gKTtcbiAgfVxufVxuIiwgImltcG9ydCB0eXBlIElucHV0cyBmcm9tICcuLi9pbnB1dHMnO1xuaW1wb3J0IExvZ1Rhc2sgZnJvbSAnLi4vbG9ndGFzayc7XG5pbXBvcnQgdXBkYXRlUmVhZG1lIGZyb20gJy4uL3JlYWRtZS13cml0ZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVUaXRsZSh0b2tlbjogc3RyaW5nLCBpbnB1dHM6IElucHV0cyk6IHZvaWQge1xuICBjb25zdCBsb2cgPSBuZXcgTG9nVGFzayh0b2tlbik7XG4gIC8vIEJ1aWxkIHRoZSBuZXcgUkVBRE1FXG4gIGNvbnN0IGNvbnRlbnQ6IHN0cmluZ1tdID0gW107XG4gIGxldCBuYW1lID0gJyc7XG4gIGlmIChpbnB1dHMuYWN0aW9uLm5hbWUpIHtcbiAgICBsb2cuc3RhcnQoKTtcbiAgICBuYW1lID0gaW5wdXRzLmFjdGlvbi5uYW1lO1xuXG4gICAgbG9nLmluZm8oYFdyaXRpbmcgJHtuYW1lLmxlbmd0aH0gY2hhcmFjdGVycyB0byB0aGUgdGl0bGVgKTtcbiAgICBjb25zdCB0aXRsZSA9IGAjICR7aW5wdXRzLmNvbmZpZy5nZXQoJ3RpdGxlX3ByZWZpeCcpIGFzIHN0cmluZ30ke2lucHV0cy5hY3Rpb24ubmFtZX1gO1xuICAgIGxvZy5pbmZvKGBUaXRsZTogJHt0aXRsZX1gKTtcbiAgICAvLyBCdWlsZCB0aGUgbmV3IHVzYWdlIHNlY3Rpb25cbiAgICBjb250ZW50LnB1c2godGl0bGUpO1xuXG4gICAgdXBkYXRlUmVhZG1lKGNvbnRlbnQsIHRva2VuLCBpbnB1dHMucmVhZG1lUGF0aCk7XG4gICAgbG9nLnN1Y2Nlc3MoKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IHdyYXBUZXh0IH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgdHlwZSBJbnB1dHMgZnJvbSAnLi4vaW5wdXRzJztcbmltcG9ydCBMb2dUYXNrIGZyb20gJy4uL2xvZ3Rhc2snO1xuaW1wb3J0IHJlYWRtZVdyaXRlciBmcm9tICcuLi9yZWFkbWUtd3JpdGVyJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlVXNhZ2UodG9rZW46IHN0cmluZywgaW5wdXRzOiBJbnB1dHMpOiB2b2lkIHtcbiAgY29uc3QgbG9nID0gbmV3IExvZ1Rhc2sodG9rZW4pO1xuICBsb2cuc3RhcnQoKTtcbiAgY29uc3QgYWN0aW9uTmFtZSA9IGAke2lucHV0cy5jb25maWcuZ2V0KCdvd25lcicpIGFzIHN0cmluZ30vJHtpbnB1dHMuY29uZmlnLmdldCgncmVwbycpfWA7XG4gIGxvZy5pbmZvKGBBY3Rpb24gbmFtZTogJHthY3Rpb25OYW1lfWApO1xuICBsZXQgdmVyc2lvblN0cmluZzogc3RyaW5nO1xuICBpZiAoKGlucHV0cy5jb25maWcuZ2V0KCd2ZXJzaW9uaW5nOmVuYWJsZWQnKSBhcyBzdHJpbmcpID09PSAndHJ1ZScpIHtcbiAgICBjb25zdCBvUmlkZSA9IGlucHV0cy5jb25maWcuZ2V0KCd2ZXJzaW9uaW5nOm92ZXJyaWRlJykgYXMgc3RyaW5nO1xuICAgIHZlcnNpb25TdHJpbmcgPVxuICAgICAgb1JpZGUgJiYgb1JpZGUubGVuZ3RoID4gMCA/IG9SaWRlIDogcHJvY2Vzcy5lbnZbJ25wbV9wYWNrYWdlX3ZlcnNpb24nXSA/PyAnMC4wLjAnO1xuXG4gICAgaWYgKFxuICAgICAgdmVyc2lvblN0cmluZyAmJlxuICAgICAgIXZlcnNpb25TdHJpbmcuc3RhcnRzV2l0aChpbnB1dHMuY29uZmlnLmdldCgndmVyc2lvbmluZzpwcmVmaXgnKSBhcyBzdHJpbmcpXG4gICAgKSB7XG4gICAgICB2ZXJzaW9uU3RyaW5nID0gYCR7aW5wdXRzLmNvbmZpZy5nZXQoJ3ZlcnNpb25pbmc6cHJlZml4JykgYXMgc3RyaW5nfSR7dmVyc2lvblN0cmluZ31gO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2ZXJzaW9uU3RyaW5nID0gaW5wdXRzLmNvbmZpZy5nZXQoJ3ZlcnNpb25pbmc6YnJhbmNoJykgYXMgc3RyaW5nO1xuICB9XG4gIGxvZy5pbmZvKGBWZXJzaW9uIHN0cmluZzogJHt2ZXJzaW9uU3RyaW5nfWApO1xuXG4gIGNvbnN0IGFjdGlvblJlZmVyZW5jZSA9IGAke2FjdGlvbk5hbWV9QCR7dmVyc2lvblN0cmluZ31gO1xuXG4gIGlmICghYWN0aW9uUmVmZXJlbmNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQYXJhbWV0ZXIgYWN0aW9uUmVmZXJlbmNlIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICAvLyBCdWlsZCB0aGUgbmV3IFJFQURNRVxuICBjb25zdCBjb250ZW50OiBzdHJpbmdbXSA9IFtdO1xuICAvLyBCdWlsZCB0aGUgbmV3IHVzYWdlIHNlY3Rpb25cbiAgY29udGVudC5wdXNoKCdgYGB5YW1sJywgYC0gdXNlczogJHthY3Rpb25SZWZlcmVuY2V9YCwgJyAgd2l0aDonKTtcblxuICBjb25zdCBpbnAgPSBpbnB1dHMuYWN0aW9uLmlucHV0cztcbiAgbGV0IGZpcnN0SW5wdXQgPSB0cnVlO1xuICBpZiAoaW5wKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoaW5wKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICBjb25zdCBpbnB1dCA9IGlucFtrZXldO1xuICAgICAgaWYgKGlucHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTGluZSBicmVhayBiZXR3ZWVuIGlucHV0c1xuICAgICAgICBpZiAoIWZpcnN0SW5wdXQpIHtcbiAgICAgICAgICBjb250ZW50LnB1c2goJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29uc3RyYWluIHRoZSB3aWR0aCBvZiB0aGUgZGVzY3JpcHRpb24sIGFuZCBhcHBlbmQgaXRcbiAgICAgICAgd3JhcFRleHQoaW5wdXQuZGVzY3JpcHRpb24sIGNvbnRlbnQsICcgICAgIyAnKTtcblxuICAgICAgICBpZiAoaW5wdXQuZGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gQXBwZW5kIGJsYW5rIGxpbmUgaWYgZGVzY3JpcHRpb24gaGFkIHBhcmFncmFwaHNcbiAgICAgICAgICBpZiAoaW5wdXQuZGVzY3JpcHRpb24/LnRyaW1FbmQoKS5tYXRjaCgvXFxuICpcXHI/XFxuLykpIHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaCgnICAgICMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBEZWZhdWx0XG4gICAgICAgICAgY29udGVudC5wdXNoKGAgICAgIyBEZWZhdWx0OiAke2lucHV0LmRlZmF1bHR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbnB1dCBuYW1lXG4gICAgICAgIGNvbnRlbnQucHVzaChgICAgICR7a2V5fTogJydgKTtcblxuICAgICAgICBmaXJzdElucHV0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29udGVudC5wdXNoKCdgYGBcXG4nKTtcblxuICByZWFkbWVXcml0ZXIoY29udGVudCwgdG9rZW4sIGlucHV0cy5yZWFkbWVQYXRoKTtcbiAgbG9nLnN1Y2Nlc3MoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSBJbnB1dHMgZnJvbSAnLi4vaW5wdXRzJztcbmltcG9ydCBMb2dUYXNrIGZyb20gJy4uL2xvZ3Rhc2snO1xuaW1wb3J0IHVwZGF0ZURlc2NyaXB0aW9uIGZyb20gJy4vdXBkYXRlLWRlc2NyaXB0aW9uJztcbmltcG9ydCB1cGRhdGVJbnB1dHMgZnJvbSAnLi91cGRhdGUtaW5wdXRzJztcbmltcG9ydCB1cGRhdGVPdXRwdXRzIGZyb20gJy4vdXBkYXRlLW91dHB1dHMnO1xuaW1wb3J0IHVwZGF0ZVRpdGxlIGZyb20gJy4vdXBkYXRlLXRpdGxlJztcbmltcG9ydCB1cGRhdGVVc2FnZSBmcm9tICcuL3VwZGF0ZS11c2FnZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVwZGF0ZVNlY3Rpb24oc2VjdGlvbjogc3RyaW5nLCBpbnB1dHM6IElucHV0cyk6IHZvaWQge1xuICBjb25zdCBsb2cgPSBuZXcgTG9nVGFzaygndXBkYXRlU2VjdGlvbicpO1xuICB0cnkge1xuICAgIHN3aXRjaCAoc2VjdGlvbikge1xuICAgICAgY2FzZSAndXNhZ2UnOiB7XG4gICAgICAgIHVwZGF0ZVVzYWdlKHNlY3Rpb24sIGlucHV0cyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndGl0bGUnOiB7XG4gICAgICAgIHVwZGF0ZVRpdGxlKHNlY3Rpb24sIGlucHV0cyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZGVzY3JpcHRpb24nOiB7XG4gICAgICAgIHVwZGF0ZURlc2NyaXB0aW9uKHNlY3Rpb24sIGlucHV0cyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnaW5wdXRzJzoge1xuICAgICAgICB1cGRhdGVJbnB1dHMoc2VjdGlvbiwgaW5wdXRzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdvdXRwdXRzJzoge1xuICAgICAgICB1cGRhdGVPdXRwdXRzKHNlY3Rpb24sIGlucHV0cyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBsb2cuZGVidWcoYHVua25vd24gc2VjdGlvbiAke3NlY3Rpb259YCk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKGVycm9yICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlKSBsb2cuZmFpbChlcnJvci5tZXNzYWdlIGFzIHN0cmluZyk7XG4gIH1cbn1cbiIsICJpbXBvcnQgSW5wdXRzIGZyb20gJy4vaW5wdXRzJztcbmltcG9ydCBMb2dUYXNrIGZyb20gJy4vbG9ndGFzayc7XG5pbXBvcnQgc2F2ZSBmcm9tICcuL3NhdmUnO1xuaW1wb3J0IHVwZGF0ZVNlY3Rpb24gZnJvbSAnLi9zZWN0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBpbnB1dHMgPSBuZXcgSW5wdXRzKCk7XG4vLyBUaGlzIHNjcmlwdCByZWJ1aWxkcyB0aGUgdXNhZ2Ugc2VjdGlvbiBpbiB0aGUgUkVBRE1FLm1kIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgYWN0aW9uLnltbFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2VuZXJhdGVEb2NzKCk6IHZvaWQge1xuICBjb25zdCBsb2cgPSBuZXcgTG9nVGFzaygnZ2VuZXJhdGluZyByZWFkbWUnKTtcbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgaW5wdXRzLnNlY3Rpb25zKSB7XG4gICAgICB1cGRhdGVTZWN0aW9uKHNlY3Rpb24sIGlucHV0cyk7XG4gICAgfVxuICAgIHNhdmUoaW5wdXRzKTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmIChlcnJvciAmJiAnbWVzc2FnZScgaW4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSkgbG9nLmVycm9yKGVycm9yLm1lc3NhZ2UgYXMgc3RyaW5nKTtcbiAgfVxufVxuIiwgIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IGdlbmVyYXRlRG9jcyBmcm9tICcuL2dlbmVyYXRlLWRvY3MnO1xuXG5nZW5lcmF0ZURvY3MoKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7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QUMsR0FBRSxjQUFhLENBQUMsRUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFJLE1BQUssSUFBSSxHQUFFLEVBQUUsSUFBSSxNQUFLLElBQUksR0FBRSxFQUFFLElBQUksTUFBSyxhQUFhLEdBQUUsRUFBRSxJQUFJLE1BQUssSUFBSSxHQUFFLEVBQUUsSUFBSSxNQUFLLElBQUUsR0FBRSxFQUFFLElBQUksTUFBSyxDQUFDLENBQUMsR0FBRSxFQUFFLElBQUksTUFBSyxJQUFFLEdBQUUsRUFBRSxJQUFJLE1BQUssQ0FBQyxDQUFDLEdBQUUsRUFBRSxJQUFJLE1BQUssTUFBTSxHQUFFLEVBQUUsSUFBSSxNQUFLLENBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBSSxNQUFLLEtBQUUsR0FBRSxFQUFFLElBQUksTUFBSyxJQUFJLEdBQUUsRUFBRSxJQUFJLE1BQUssSUFBRSxHQUFFLEVBQUUsSUFBSSxNQUFLLE1BQU0sR0FBRSxHQUFHLElBQUksTUFBSyxFQUFFLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxHQUFHLElBQUksTUFBSyxDQUFDLENBQUMsR0FBRSxHQUFHLElBQUksTUFBSyxJQUFJLEdBQUUsR0FBRyxJQUFJLE1BQUssSUFBSSxHQUFFLEdBQUcsSUFBSSxNQUFLLENBQUMsQ0FBQyxHQUFFLEdBQUcsSUFBSSxNQUFLLENBQUMsQ0FBQyxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxHQUFHLElBQUksTUFBSyxLQUFFLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEdBQUcsSUFBSSxNQUFLLEtBQUUsR0FBRSxHQUFHLElBQUksTUFBSyxLQUFFLEdBQUUsR0FBRyxJQUFJLE1BQUssS0FBRSxHQUFFLEdBQUcsSUFBSSxNQUFLLE1BQU0sR0FBRSxHQUFHLElBQUksTUFBSyxJQUFJLEdBQUUsR0FBRyxJQUFJLE1BQUssTUFBTSxHQUFFLEVBQUUsTUFBSyxJQUFHQSxJQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBR1IsSUFBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLEdBQUVNLElBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHQyxJQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssR0FBRSxJQUFJLEVBQUUsSUFBSSxHQUFFLEdBQUcsR0FBRSxLQUFLLEtBQUcsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLEdBQUUsRUFBRSxNQUFLLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsZ0JBQWMsRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxHQUFFLEtBQUssSUFBSSxHQUFFLEdBQUc7QUFBQSxNQUFDO0FBQUEsTUFBQyxXQUFXUCxJQUFFTSxJQUFFO0FBQUMsZUFBTyxFQUFFLDZCQUE0QixDQUFDTixJQUFFTSxFQUFDLEdBQUUsVUFBVSxNQUFNLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxNQUFJLEtBQUssSUFBSSxFQUFFLE1BQUssR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLE1BQUssR0FBRSxNQUFLLEdBQUcsSUFBRyxVQUFLTixNQUFHLFdBQVNNLE9BQUksRUFBRSxNQUFLLEdBQUUsWUFBVSxPQUFPTixLQUFFQSxLQUFFLFFBQU8sR0FBRyxHQUFFLEtBQUssUUFBUSxFQUFFLE1BQUssR0FBRSxHQUFHLENBQUMsR0FBRSxLQUFLLFNBQVMsRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFTSxNQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxnQkFBZ0IsV0FBVyxDQUFDLElBQUc7QUFBQSxNQUFJO0FBQUEsTUFBQyxLQUFLTixJQUFFTSxJQUFFO0FBQUMsZUFBTyxLQUFLLFdBQVdOLElBQUVNLEVBQUM7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RSxVQUFVLE1BQU0sR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsT0FBT0EsRUFBQyxHQUFFO0FBQUEsTUFBSTtBQUFBLE1BQUMsT0FBT0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxTQUFTQSxFQUFDO0FBQUEsTUFBQztBQUFBLE1BQUMsUUFBUUEsSUFBRU0sSUFBRTtBQUFDLGVBQU8sRUFBRSwyQkFBMEIsQ0FBQ04sSUFBRU0sRUFBQyxHQUFFLFVBQVUsTUFBTSxHQUFFLE1BQU0sUUFBUU4sRUFBQyxJQUFFQSxHQUFFLFFBQVMsQ0FBQUEsT0FBRyxLQUFLLFFBQVEsR0FBR0EsRUFBQyxDQUFFLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFFBQVFBLElBQUVNLEVBQUMsR0FBRTtBQUFBLE1BQUk7QUFBQSxNQUFDLEtBQUtOLElBQUVNLElBQUU7QUFBQyxVQUFFLE1BQUssR0FBRSxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssR0FBRUEsSUFBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxLQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxRQUFRLEtBQUtOLEVBQUM7QUFBQSxNQUFDO0FBQUEsTUFBQyxZQUFZQSxLQUFFLE1BQUc7QUFBQyxlQUFPLEVBQUUsYUFBWSxDQUFDQSxFQUFDLEdBQUUsVUFBVSxNQUFNLEdBQUUsRUFBRSxNQUFLLEdBQUVBLElBQUUsR0FBRyxHQUFFO0FBQUEsTUFBSTtBQUFBLE1BQUMsS0FBS0EsSUFBRTtBQUFDLFlBQUcsRUFBRSxzQkFBcUIsQ0FBQ0EsRUFBQyxHQUFFLFVBQVUsTUFBTSxHQUFFLGFBQVcsT0FBT0EsTUFBRyxVQUFLQTtBQUFFLGdCQUFNLElBQUksRUFBRSw4REFBOEQ7QUFBRSxlQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxPQUFPQSxFQUFDLEdBQUU7QUFBQSxNQUFJO0FBQUEsTUFBQyxhQUFZO0FBQUMsZUFBTyxLQUFLLFNBQU8sS0FBSyxPQUFPLFVBQVEsQ0FBQztBQUFBLE1BQUM7QUFBQSxNQUFDLE1BQU0sY0FBY0Es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RUEsS0FBRSxRQUFJQSxNQUFHLEVBQUUsTUFBSyxJQUFHTixJQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsRUFBRSxNQUFLLEdBQUUsT0FBRyxHQUFHO0FBQUUsY0FBTVEsS0FBRSxLQUFLLElBQUlSLElBQUUsQ0FBQyxDQUFDTSxFQUFDLEdBQUVHLEtBQUUsS0FBSztBQUFPLGVBQU8sRUFBRSxNQUFLLEdBQUUsR0FBRyxFQUFFLFVBQVUsS0FBSyxNQUFNLEdBQUUsRUFBRUQsRUFBQyxJQUFFQSxHQUFFLEtBQU0sQ0FBQVIsUUFBSSxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLEtBQUssTUFBSyxFQUFFLE1BQUssR0FBRSxHQUFHLEdBQUVBLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDLEdBQUVBLEdBQUcsRUFBRSxNQUFPLENBQUFBLE9BQUc7QUFBQyxnQkFBTSxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFQSxJQUFFLEtBQUssT0FBTyxNQUFLLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxHQUFFQTtBQUFBLFFBQUMsQ0FBRSxFQUFFLFFBQVMsTUFBSTtBQUFDLGVBQUssSUFBSSxHQUFFLEtBQUssU0FBT1M7QUFBQSxRQUFDLENBQUUsS0FBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLEtBQUssTUFBSyxFQUFFLE1BQUssR0FBRSxHQUFHLEdBQUVELElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDLEdBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxTQUFPQyxJQUFFRDtBQUFBLE1BQUU7QUFBQSxNQUFDLFdBQVdSLElBQUVNLElBQUVDLElBQUU7QUFBQyxjQUFNQyxLQUFFLEtBQUssTUFBTVIsSUFBRU0sSUFBRUMsRUFBQztBQUFFLGVBQU8sRUFBRUMsRUFBQyxJQUFFQSxLQUFFLFFBQVEsUUFBUUEsRUFBQztBQUFBLE1BQUM7QUFB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LG9CQUFJLFdBQVEsSUFBRSxvQkFBSSxXQUFRLElBQUUsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUcsb0JBQUksV0FBUSxLQUFHLG9CQUFJLFdBQVEsS0FBRyxvQkFBSSxXQUFRLEtBQUtBLElBQUU7QUFBQyxZQUFHLENBQUNBLEdBQUUsS0FBRyxDQUFDQSxHQUFFO0FBQU0saUJBQU9BO0FBQUUsUUFBQUEsR0FBRSxFQUFFLEtBQUssTUFBTUEsR0FBRSxHQUFFQSxHQUFFLEtBQUs7QUFBRSxZQUFHO0FBQUMsaUJBQU9BLEdBQUU7QUFBQSxRQUFLLFNBQU9BLElBQU47QUFBQSxRQUFTO0FBQUMsZUFBT0E7QUFBQSxNQUFDO0FBQUEsTUFBQyxDQUFDLE1BQUs7QUFBQyxlQUFNLEVBQUMsS0FBSSxJQUFJQSxPQUFJO0FBQUMsZUFBSyxJQUFJLEtBQUcsUUFBUSxJQUFJLEdBQUdBLEVBQUMsR0FBRSxFQUFFLE1BQUssR0FBRSxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsVUFBUSxFQUFFLE1BQUssSUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLElBQUUsTUFBSyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxJQUFFQSxHQUFFLEtBQUssR0FBRyxHQUFFLEdBQUc7QUFBQSxRQUFDLEdBQUUsT0FBTSxJQUFJQSxPQUFJO0FBQUMsZUFBSyxJQUFJLEtBQUcsUUFBUSxNQUFNLEdBQUdBLEVBQUMsR0FBRSxFQUFFLE1BQUssR0FBRSxNQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsVUFBUSxFQUFFLE1BQUssSUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLElBQUUsTUFBSyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxJQUFFQSxHQUFFLEtBQUssR0FBRyxHQUFFLEdBQUc7QUFBQSxRQUFDLEVBQUM7QUFBQSxNQUFDO0FBQUEsTUFBQyxDQUFDLElBQUlBLElBQUU7QUFBQyxVQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQVMsQ0FBQU0sT0FBRztBQUFDLGNBQUcsb0JBQWtCQTtBQUFFO0FBQU8sZ0JBQU1DLEtBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFRDtBQUFHLGdCQUFNLFFBQVFDLEVBQUMsSUFBRUEsR0FBRSxTQUFTUCxFQUFDLEtBQUdPLEdBQUUsT0FBT0EsR0FBRSxRQUFRUCxFQUFDLEdBQUUsQ0FBQyxJQUFFLFlBQVUsT0FBT08sTUFBRyxPQUFPQSxHQUFFUDtBQUFBLFFBQUUsQ0FBRSxHQUFFLE9BQU8sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLGdCQUFnQixFQUFFQTtBQUFBLE1BQUU7QUFBQSxNQUFDLENBQUMsSUFBSUEsSUFBRU0sSUFBRUMsSUFBRTtBQUFDLFVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRUEsUUFBSyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsUUFBUSxZQUFZUCxJQUFFTSxFQUFDLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxFQUFFQyxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUMsQ0FBQyxNQUFLO0FBQUMsVUFBRSxNQUFLLEdBQUUsR0FBRyxFQUFFLEtBQUssRUFBQyxTQUFRLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRSxlQUFjLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxjQUFjLE1BQU0sQ0FBQyxHQUFFLGFBQVksRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFLFFBQU8sRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFLFFBQU8sRUFBRSxNQUFLLElBQUcsR0FB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TUFBQztBQUFBLE1BQUMsQ0FBQyxJQUFJQSxJQUFFO0FBQUMsY0FBTU0sS0FBRU4sTUFBRztBQUFJLFlBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFTTtBQUFHLGlCQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRUE7QUFBRyxZQUFJQyxLQUFFLENBQUM7QUFBRSxZQUFHO0FBQUMsY0FBSUQsS0FBRU4sTUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUU7QUFBYSxXQUFDQSxNQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLFFBQVFNLEVBQUMsTUFBSUEsS0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxRQUFRQSxFQUFDO0FBQUcsZ0JBQU1FLEtBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU9GLElBQUcsQ0FBQ04sSUFBRU0sT0FBSUEsR0FBRSxTQUFTLGNBQWMsSUFBRSxpQkFBZSxNQUFPO0FBQUUsWUFBRUUsSUFBRSxRQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxHQUFFRCxLQUFFLEtBQUssTUFBTSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsYUFBYUMsSUFBRSxNQUFNLENBQUM7QUFBQSxRQUFDLFNBQU9SLElBQU47QUFBQSxRQUFTO0FBQUMsZUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUVNLE1BQUdDLE1BQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRUQ7QUFBQSxNQUFFO0FBQUEsTUFBQyxDQUFDLElBQUlOLElBQUVNLElBQUU7QUFBQyxTQUFDQSxLQUFFLENBQUMsRUFBRSxPQUFPQSxFQUFDLEdBQUcsUUFBUyxDQUFBQSxPQUFHO0FBQUMsVUFBQUEsS0FBRSxLQUFLLElBQUlBLEVBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUVOLElBQUcsS0FBS00sRUFBQztBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsSUFBSU4sSUFBRU0sSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGFBQUssSUFBSVIsSUFBRU0sSUFBRUMsSUFBRUMsSUFBRyxDQUFDUixJQUFFTSxJQUFFQyxPQUFJO0FBQUMsWUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFUCxJQUFHTSxNQUFHQztBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsSUFBSVAsSUFBRU0sSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGFBQUssSUFBSVIsSUFBRU0sSUFBRUMsSUFBRUMsSUFBRyxDQUFDUixJQUFFTSxJQUFFQyxPQUFJO0FBQUMsWUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFUCxJQUFHTSxPQUFJLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRU4sSUFBR00sT0FBSSxDQUFDLEdBQUcsT0FBT0MsRUFBQztBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsSUFBSVAsSUFBRU0sSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUcsTUFBTSxRQUFRRixFQUFDO0FBQUUsVUFBQUEsR0FBRSxRQUFTLENBQUFELE9BQUc7QUFBQyxZQUFBTixHQUFFTSxJQUFFRSxFQUFDO0FBQUEsVUFBQyxDQUFFO0FBQUEsa0JBQVcsQ0FBQVIsT0FBRyxZQUFVLE9BQU9BLElBQUdPLEVBQUM7QUFBRSxxQkFBVUQsTUFBSyxFQUFFQyxFQUFDO0FBQUUsWUFBQVAsR0FBRU0sSUFBRUMsR0FBRUQsR0FBRTtBQUFBO0FBQU8sVUFBQUcsR0FBRUgsSUFBRSxLQUFLLElBQUlDLEVBQUMsR0FBRUMsRUFBQztBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsSUFBSVIsSUFBRTtBQUFDLGVBQU0sZ0JBQWNBLEtBQUUsZ0JBQWNBO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxJQUFJQSxJQUFFTSxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLE9BQU1OLElBQUVNLEVBQUMsR0FBRTtBQUFBLE1BQUk7QUFBQSxNQUFDLENBQUMsTUFBSztBQUFDLFlBQUlOLElBQUVNLElBQUVDLElBQUVDLElBQUVDLElBQUVKLElBQUVKLElBQUVDLElBQUVDLElBQUVDLElBQUVTLElBQUVIO0FBQUUsY0FBTUUsS0FBRSxFQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsSUFBSTtBQUFFLFlBQUlFO0FBQUUsVUFBRUYsSUFBRSxRQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxHQUFFWixLQUFFLE1BQUtNLEtBQUUsTUFBS0MsS0FBRSxNQUFLQyxLQUFFLE1BQUtDLEtBQUUsTUFBS0osS0FBRSxNQUFLSixLQUFFLE1BQUtDLEtBQUUsTUFBS0MsS0FBRSxNQUFLQyxLQUFFLE1BQUtTLEtBQUUsTUFBS0gsS0FBRSxNQUFNLEVBQUMsU0FBUSxFQUFDLElBQUksTUFBTUosSUFBRTtBQUFDLFlBQUVOLElBQUUsSUFBR00sSUFBRSxHQUFHO0FBQUEsUUFBQyxFQUFDLEVBQUUsT0FBTSxlQUFjUSxJQUFFLGFBQVksRUFBQyxJQUFJLE1BQU1kLElBQUU7QUFBQyxZQUFFTSxJQUFFLEdBQUVOLElBQUUsR0FBRztBQUFBLFFBQUMsRUFBQyxFQUFFLE9BQU0sUUFBTyxFQUFDLElBQUksTUFBTUEsSUFBRTtBQUFDLFlBQUVPLElBQUUsR0FBRVAsSUFBRSxHQUFHO0FBQUEsUUFBQyxFQUFDLEVBQUUsT0FBTSxRQUFPLEVBQUMsSUFBSSxNQUFNQSxJQUFFO0FBQUMsWUFBRVEsSUFBRSxJQUFHUixJQUFFLEdBQUc7QUFBQSxRQUFDLEVBQUMsRUFBRSxPQUFNLFdBQVUsRUFBQyxJQUFJLE1BQU1BLElBQUU7QUFBQyxZQUFFUyxJQUFFLEdBQUVULElBQUUsR0FBRztBQUFBLFFBQUMsRUFBQyxFQUFFLE9BQU0sV0FBVSxFQUFDLElBQUksTUFBTUEsSUFBRTtBQUFDLFlBQUVLLElBQUUsR0FBRUwsSUFBRSxHQUFHO0FBQUEsUUFBQyxFQUFDLEVBQUUsT0FBTSxRQUFPLEtBQUssUUFBTyxRQUFPLEVBQUMsSUFBSSxNQUFNQSxJQUFFO0FBQUMsWUFBRUMsSUFBRSxJQUFHRCxJQUFFLEdBQUc7QUFBQSxRQUFDLEVBQUMsRUFBRSxPQUFNLGdCQUFlLEVBQUMsSUFBSSxNQUFNQSxJQUFFO0FBQUMsWUFBRUUsSUFBRSxJQUFHRixJQUFFLEdBQUc7QUFBQSxRQUFDLEVBQUMsRUFBRSxPQUFNLGVBQWMsRUFBQyxJQUFJLE1BQU1BLElBQUU7QUFBQyxZQUFFRyxJQUFFLElBQUdILElBQUUsR0FBRztBQUFBLFFBQUMsRUFBQyxFQUFFLE9BQU0sbUJBQWtCLEVBQUMsSUFBSSxNQUFNQSxJQUFFO0FBQUMsWUFBRUksSUFBRSxHQUFFSixJQUFFLEdBQUc7QUFBQSxRQUFDLEVBQUMsRUFBRSxPQUFNLFNBQVEsRUFBQyxJQUFJLE1BQU1BLElBQUU7QUFBQyxZQUFFYSxJQUFFLElBQUdiLElBQUUsR0FBRztBQUFBLFFBQUMsRUFBQyxFQUFFLE9BQU0sY0FBYSxFQUFDLElBQUksTUFBTUEsSUFBRTtBQUFDLFlBQUVVLElBQUUsSUFBR1YsSUFBRSxHQUFHO0FBQUEsUUFBQyxFQUFDLEVBQUUsTUFBSyxJQUFFWSxJQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxnQkFBY0UsSUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsU0FBUyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxFQUFFLFNBQVMsR0FBRSxFQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsU0FBUztBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsSUFBSWQsSUFBRU0sSUFBRTtBQUFDLGVBQU8sRUFBRUEsSUFBRyxDQUFBQSxRQUFJTixHQUFFTSxFQUFDLEdBQUVBLEdBQUc7QUFBQSxNQUFDO0FBQUEsTUFBQyxxQkFBb0I7QUFBQyxlQUFNLEVBQUMsb0JBQW1CLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRSxZQUFXLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRSxjQUFhLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRSxtQkFBa0IsS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLGlCQUFnQixLQUFLLElBQUksS0FBSyxJQUFJLEdBQUUsd0JBQXVCLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRSxrQkFBaUIsS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLHVCQUFzQixLQUFLLElBQUksS0FBSyxJQUFJLEdBQUUsa0JBQWlCLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRSxpQkFBZ0IsS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLGFBQVksS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLE9BQU0sS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLGVBQWMsS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFFLGtDQUFpQyxLQUFLLElBQUksS0FBSyxJQUFJLEdBQUUsY0FBYSxLQUFLLElBQUksS0FBSyxJQUFJLEVBQUM7QUFBQSxNQUFDO0FBQUEsTUFBQyxDQUFDLE1BQUs7QUFBQyxlQUFPLEVBQUUsTUFBSyxHQUFFLEdBQUc7QUFBQSxNQUFDO0FBQUEsTUFBQyxDQUFDLE1BQUs7QUFBQyxlQUFPLEVBQUUsTUFBSyxHQUFFLEdBQUc7QUFBQSxNQUFDO0FBQUEsTUFBQyxDQUFDLE1BQUs7QUFBQyxlQUFPLEVBQUUsTUFBSyxHQUFFLEdBQUc7QUFBQSxNQUFDO0FBQUEsTUFBQyxDQUFDLE1BQUs7QUFBQyxlQUFPLEVBQUUsTUFBSyxHQUFFLEdBQUc7QUFBQSxNQUFDO0FBQUEsTUFBQyxDQUFDLE1BQUs7QUFBQyxlQUFPLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxDQUFDO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxNQUFLO0FBQUMsZUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxNQUFLO0FBQUMsZUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxNQUFLO0FBQUMsZUFBTSxDQUFDLENBQUMsRUFBRSxNQUFLLElBQUcsR0FBRztBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsTUFBSztBQUFDLGVBQU8sRUFBRSxNQUFLLEdBQUUsR0FBRztBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsSUFBSU4sSUFBRU0sSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUdEO0FBQUUsaUJBQU9QO0FBQUUsWUFBRyxFQUFFQSxFQUFDO0FBQUUsaUJBQU9BO0FBQUUsUUFBQU0sT0FBSU4sS0FBRSxLQUFLLElBQUlBLEVBQUM7QUFBRyxnQkFBTyxLQUFLLElBQUksRUFBRSwrQkFBNkIsV0FBUyxLQUFLLElBQUksRUFBRSxpQ0FBK0JBLEtBQUUsS0FBSyxJQUFJQSxFQUFDLElBQUdRLE9BQUlSLEtBQUUsRUFBRUEsSUFBRSxNQUFLLEVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRSxjQUFjLEdBQUUsS0FBRSxJQUFHQTtBQUFBLE1BQUM7QUFBQSxNQUFDLENBQUMsSUFBSUEsS0FBRSxDQUFDLEdBQUU7QUFBQyxVQUFFLE1BQUssSUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUc7QUFBRSxjQUFNTSxLQUFFLENBQUM7QUFBRSxRQUFBQSxHQUFFLFFBQU0sRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFNBQU8sQ0FBQyxHQUFFQSxHQUFFLGdCQUFjLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxpQkFBZSxDQUFDO0FBQUUsY0FBTUMsS0FBRSxDQUFDO0FBQUUsUUFBQUQsR0FBRSxNQUFNLFFBQVMsQ0FBQUEsT0FBRztBQUFDLFVBQUFDLEdBQUVELE1BQUcsT0FBSU4sR0FBRU0sT0FBSSxDQUFDLEdBQUcsUUFBUyxDQUFBTixPQUFHO0FBQUMsWUFBQU8sR0FBRVAsTUFBRztBQUFBLFVBQUUsQ0FBRTtBQUFBLFFBQUMsQ0FBRSxHQUFFLE9BQU8sT0FBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEdBQUUsT0FBTyxLQUFLLEVBQUUsTUFBSyxHQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQVEsQ0FBQ0EsSUFBRU0sT0FBSTtBQUFDLGdCQUFNRSxLQUFFLEVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRUYsSUFBRyxPQUFRLENBQUFOLE9BQUcsRUFBRUEsTUFBS08sR0FBRztBQUFFLGlCQUFPQyxHQUFFLFNBQU8sTUFBSVIsR0FBRU0sTUFBR0UsS0FBR1I7QUFBQSxRQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQUssR0FBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGVBQU0sQ0FBQyxTQUFRLFdBQVUsVUFBUyxrQkFBaUIsU0FBUSxhQUFZLFVBQVMsZUFBZSxFQUFFLFFBQVMsQ0FBQUEsT0FBRztBQUFDLFVBQUFNLEdBQUVOLE9BQUksRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFQSxPQUFJLENBQUMsR0FBRyxPQUFRLENBQUFBLE9BQUcsQ0FBQ08sR0FBRVAsR0FBRztBQUFBLFFBQUMsQ0FBRSxHQUFFLENBQUMsUUFBTyxPQUFNLFNBQVEsV0FBVSxzQkFBcUIsVUFBUyxXQUFVLG1CQUFrQixvQkFBbUIsbUJBQW1CLEVBQUUsUUFBUyxDQUFBQSxPQUFHO0FBQUMsVUFBQU0sR0FBRU4sTUFBRyxFQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRUEsS0FBSSxDQUFBQSxPQUFHLENBQUNPLEdBQUVQLEdBQUc7QUFBQSxRQUFDLENBQUUsR0FBRU0sR0FBRSxZQUFVLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxXQUFVLEVBQUUsTUFBSyxJQUFHQSxJQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLElBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE1BQU1DLEVBQUMsSUFBRSxFQUFFLE1BQUssRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsSUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsTUFBTUEsRUFBQyxJQUFFLFNBQVNQLElBQUVNLElBQUVDLElBQUU7QUFBQyxnQkFBTUMsS0FBRUQsR0FBRSxLQUFLLElBQUdFLEtBQUVGLEdBQUUsS0FBSyxLQUFJRixLQUFFLEVBQUMsZ0JBQWUsU0FBU0UsSUFBRTtBQUFDLGtCQUFNQyxLQUFFUixHQUFFLG9CQUFvQixHQUFFSyxLQUFFRSxHQUFFLEVBQUUsVUFBUUEsR0FBRSxRQUFNQSxHQUFFLE1BQU0sU0FBTyxLQUFHUCxHQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxTQUFTO0FBQU8sWUFBQVEsR0FBRSxNQUFJSCxLQUFFRyxHQUFFLEVBQUUsT0FBS0gsS0FBRUcsR0FBRSxFQUFFLFNBQU9ILEtBQUVHLEdBQUUsRUFBRSxNQUFJLFdBQVNBLEdBQUUsRUFBRSxTQUFPRixHQUFFLEtBQUtFLEdBQUUsRUFBRSxTQUFPQSxHQUFFLEVBQUUsT0FBTyxRQUFRLFFBQU9ILEdBQUUsU0FBUyxDQUFDLEVBQUUsUUFBUSxPQUFNRyxHQUFFLEVBQUUsSUFBSSxTQUFTLENBQUMsSUFBRSxJQUFJLElBQUVGLEdBQUUsS0FBS0csR0FBRSw2REFBNEQsNkRBQTRESixJQUFFQSxHQUFFLFNBQVMsR0FBRUcsR0FBRSxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsSUFBRUgsS0FBRUcsR0FBRSxFQUFFLFFBQU0sV0FBU0EsR0FBRSxFQUFFLFNBQU9GLEdBQUUsS0FBS0UsR0FBRSxFQUFFLFNBQU9BLEdBQUUsRUFBRSxPQUFPLFFBQVEsUUFBT0gsR0FBRSxTQUFTLENBQUMsRUFBRSxRQUFRLE9BQU1HLEdBQUUsRUFBRSxJQUFJLFNBQVMsQ0FBQyxJQUFFLElBQUksSUFBRUYsR0FBRSxLQUFLRyxHQUFFLHdEQUF1RCx3REFBdURKLElBQUVBLEdBQUUsU0FBUyxHQUFFRyxHQUFFLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQztBQUFBLFVBQUcsR0FBRSxpQkFBZ0IsU0FBU1IsSUFBRU8sSUFBRTtBQUFDLFlBQUFBLEtBQUVQLE1BQUdNLEdBQUUsS0FBS0csR0FBRSw2REFBNEQsNkRBQTRERixJQUFFQSxLQUFFLElBQUdQLEtBQUUsRUFBRSxDQUFDO0FBQUEsVUFBQyxHQUFFLG1CQUFrQixTQUFTQSxJQUFFTyxJQUFFO0FBQUMsZ0JBQUlDLEtBQUU7QUFBSyx1QkFBVUYsTUFBSyxPQUFPLEtBQUtDLEVBQUM7QUFBRSxxQkFBTyxVQUFVLGVBQWUsS0FBS1AsSUFBRU0sRUFBQyxLQUFHLFdBQVNOLEdBQUVNLFFBQUtFLEtBQUVBLE1BQUcsQ0FBQyxHQUFFQSxHQUFFRixNQUFHQyxHQUFFRDtBQUFJLGdCQUFHRSxJQUFFO0FBQUMsb0JBQU1SLEtBQUUsQ0FBQztBQUFFLHlCQUFVTSxNQUFLLE9BQU8sS0FBS0UsRUFBQyxHQUFFO0FBQUMsc0JBQU1ELEtBQUVDLEdBQUVGO0FBQUcsZ0JBQUFDLE1BQUdQLEdBQUUsUUFBUU8sRUFBQyxJQUFFLEtBQUdQLEdBQUUsS0FBS08sRUFBQztBQUFBLGNBQUM7QUFBQyxvQkFBTUEsS0FBRVAsR0FBRSxTQUFPO0FBQUEsRUFBS0EsR0FBRSxLQUFLLElBQUksTUFBSTtBQUFHLGNBQUFNLEdBQUUsS0FBS0csR0FBRSxpQ0FBZ0Msa0NBQWlDLE9BQU8sS0FBS0QsRUFBQyxFQUFFLFFBQU8sT0FBTyxLQUFLQSxFQUFDLEVBQUUsS0FBSyxJQUFJLElBQUVELEVBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxVQUFDLEdBQUUsa0JBQWlCLFNBQVNBLElBQUVDLElBQUVQLElBQUVDLElBQUVDLEtBQUUsTUFBRztBQUFDLGdCQUFJQztBQUFFLGtCQUFNUyxLQUFFYixHQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLFlBQVksR0FBRVUsS0FBRSxDQUFDLEdBQUVDLEtBQUVYLEdBQUUsbUJBQW1CLEVBQUUsV0FBVztBQUFFLGdCQUFHLE9BQU8sS0FBS08sRUFBQyxFQUFFLFFBQVMsQ0FBQUQsT0FBRztBQUFDLGdCQUFFLFNBQVNBLEVBQUMsS0FBRyxPQUFPLFVBQVUsZUFBZSxLQUFLTCxJQUFFSyxFQUFDLEtBQUcsT0FBTyxVQUFVLGVBQWUsS0FBS04sR0FBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsR0FBRU0sRUFBQyxLQUFHRCxHQUFFLDRCQUE0QkMsSUFBRUUsRUFBQyxLQUFHRSxHQUFFLEtBQUtKLEVBQUM7QUFBQSxZQUFDLENBQUUsR0FBRUgsT0FBSVEsR0FBRSxTQUFTLFNBQU8sS0FBR0UsR0FBRSxTQUFPLEtBQUdYLE9BQUlLLEdBQUUsRUFBRSxNQUFNSSxHQUFFLFNBQVMsTUFBTSxFQUFFLFFBQVMsQ0FBQVgsT0FBRztBQUFDLGNBQUFhLEdBQUUsU0FBUyxLQUFHYixFQUFDLEtBQUdVLEdBQUUsS0FBSyxLQUFHVixFQUFDO0FBQUEsWUFBQyxDQUFFLEdBQUVHLElBQUU7QUFBQyxvQkFBTUcsTUFBRyxVQUFRRixLQUFFSixHQUFFLG9CQUFvQixFQUFFLE1BQUksV0FBU0ksS0FBRSxTQUFPQSxHQUFFLFFBQU0sR0FBRUksS0FBRUcsR0FBRSxTQUFTLFNBQU9MO0FBQUUsY0FBQUUsS0FBRUQsR0FBRSxFQUFFLFVBQVFBLEdBQUUsRUFBRSxNQUFNQyxFQUFDLEVBQUUsUUFBUyxDQUFBUixPQUFHO0FBQUMsZ0JBQUFBLEtBQUUsT0FBT0EsRUFBQyxHQUFFVyxHQUFFLFNBQVMsU0FBU1gsRUFBQyxLQUFHVSxHQUFFLFNBQVNWLEVBQUMsS0FBR1UsR0FBRSxLQUFLVixFQUFDO0FBQUEsY0FBQyxDQUFFO0FBQUEsWUFBQztBQUFDLFlBQUFVLEdBQUUsVUFBUUosR0FBRSxLQUFLRyxHQUFFLHdCQUF1Qix5QkFBd0JDLEdBQUUsUUFBT0EsR0FBRSxJQUFLLENBQUFWLE9BQUdBLEdBQUUsS0FBSyxJQUFFQSxLQUFFLElBQUlBLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQUEsVUFBQyxHQUFFLGlCQUFnQixTQUFTTyxJQUFFO0FBQUMsa0JBQU1DLEtBQUVSLEdBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxHQUFFSyxLQUFFLENBQUMsR0FBRUosS0FBRUQsR0FBRSxtQkFBbUIsRUFBRSxXQUFXO0FBQUUsb0JBQU9DLEdBQUUsU0FBUyxTQUFPLEtBQUdPLEdBQUUsU0FBTyxNQUFJRCxHQUFFLEVBQUUsTUFBTU4sR0FBRSxTQUFTLE1BQU0sRUFBRSxRQUFTLENBQUFELE9BQUc7QUFBQyxjQUFBUSxHQUFFLFNBQVMsS0FBR1IsRUFBQyxLQUFHSyxHQUFFLEtBQUssS0FBR0wsRUFBQztBQUFBLFlBQUMsQ0FBRSxHQUFFSyxHQUFFLFNBQU8sTUFBSUMsR0FBRSxLQUFLRyxHQUFFLHVCQUFzQix3QkFBdUJKLEdBQUUsUUFBT0EsR0FBRSxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUU7QUFBQSxVQUFHLEdBQUUsNkJBQTRCLFNBQVNDLElBQUVDLElBQUU7QUFBQyxnQkFBRyxDQUFDLE9BQU8sVUFBVSxlQUFlLEtBQUtBLElBQUVELEVBQUM7QUFBRSxxQkFBTTtBQUFHLGtCQUFNRSxLQUFFUixHQUFFLE9BQU87QUFBVyxtQkFBTSxDQUFDTSxJQUFFLEdBQUdDLEdBQUVELEdBQUUsRUFBRSxLQUFNLENBQUFOLE9BQUcsQ0FBQyxPQUFPLFVBQVUsZUFBZSxLQUFLUSxJQUFFUixFQUFDLEtBQUcsQ0FBQ1EsR0FBRUYsR0FBRztBQUFBLFVBQUMsR0FBRSxnQkFBZSxTQUFTQyxJQUFFO0FBQUMsa0JBQU1FLEtBQUVULEdBQUUsV0FBVyxHQUFFSyxLQUFFLENBQUM7QUFBRSxnQkFBRyxDQUFDLE9BQU8sS0FBS0ksR0FBRSxPQUFPLEVBQUU7QUFBTztBQUFPLG1CQUFPLEtBQUtGLEVBQUMsRUFBRSxRQUFTLENBQUFQLE9BQUc7QUFBQyxxQkFBSyxFQUFFLFFBQVFBLEVBQUMsS0FBRyxPQUFPLFVBQVUsZUFBZSxLQUFLUyxHQUFFLFNBQVFULEVBQUMsS0FBRyxDQUFDLEVBQUUsT0FBT08sR0FBRVAsR0FBRSxFQUFFLFFBQVMsQ0FBQU0sT0FBRztBQUFDLHVCQUFLRyxHQUFFLFFBQVFULElBQUcsUUFBUU0sRUFBQyxLQUFHLFdBQVNBLE9BQUlELEdBQUVMLE9BQUlLLEdBQUVMLE9BQUksQ0FBQyxHQUFHLE9BQU9NLEVBQUM7QUFBQSxjQUFFLENBQUU7QUFBQSxZQUFDLENBQUU7QUFBRSxrQkFBTUwsS0FBRSxPQUFPLEtBQUtJLEVBQUM7QUFBRSxnQkFBRyxDQUFDSixHQUFFO0FBQU87QUFBTyxnQkFBSUMsS0FBRU0sR0FBRSxpQkFBaUI7QUFBRSxZQUFBUCxHQUFFLFFBQVMsQ0FBQUQsT0FBRztBQUFDLGNBQUFFLE1BQUc7QUFBQSxJQUFPTSxHQUFFLHdDQUF1Q1IsSUFBRU0sR0FBRSxrQkFBa0JELEdBQUVMLEdBQUUsR0FBRU0sR0FBRSxrQkFBa0JHLEdBQUUsUUFBUVQsR0FBRSxDQUFDO0FBQUEsWUFBRyxDQUFFLEdBQUVNLEdBQUUsS0FBS0osRUFBQztBQUFBLFVBQUMsRUFBQztBQUFFLGNBQUlELEtBQUUsQ0FBQztBQUFFLG1CQUFTQyxHQUFFRixJQUFFTSxJQUFFO0FBQUMsa0JBQU1DLEtBQUUsT0FBT0QsRUFBQztBQUFFLG1CQUFNLFlBQVUsUUFBT0EsS0FBRSxNQUFNQyxFQUFDLElBQUVELEtBQUVDLE1BQUdELEtBQUVOLEdBQUUsRUFBRSxVQUFRTSxLQUFFQSxHQUFFLE1BQU0sVUFBVSxLQUFHQSxLQUFFQSxHQUFFLE1BQU0sWUFBWSxFQUFFLElBQUdBLEtBQUUsQ0FBQyxPQUFPLFVBQVUsZUFBZSxLQUFLTixJQUFFTSxFQUFDLEtBQUdBLEtBQUUsT0FBTyxVQUFVLGVBQWUsS0FBS04sSUFBRU0sRUFBQyxHQUFFQTtBQUFBLFVBQUM7QUFBQyxVQUFBRCxHQUFFLFVBQVEsU0FBU0MsSUFBRUUsSUFBRTtBQUFDLGNBQUUseUNBQXdDLENBQUNGLElBQUVFLEVBQUMsR0FBRSxVQUFVLE1BQU0sR0FBRSxZQUFVLE9BQU9GLEtBQUUsT0FBTyxLQUFLQSxFQUFDLEVBQUUsUUFBUyxDQUFBTixPQUFHO0FBQUMsY0FBQUssR0FBRSxRQUFRTCxJQUFFTSxHQUFFTixHQUFFO0FBQUEsWUFBQyxDQUFFLEtBQUdBLEdBQUUsT0FBT00sRUFBQyxHQUFFTCxHQUFFSyxRQUFLTCxHQUFFSyxNQUFHLENBQUMsSUFBRyxNQUFNLFFBQVFFLEVBQUMsSUFBRUEsR0FBRSxRQUFTLENBQUFSLE9BQUdLLEdBQUUsUUFBUUMsSUFBRU4sRUFBQyxDQUFFLEtBQUcsRUFBRVEsSUFBRSxRQUFPRCxFQUFDLEdBQUVOLEdBQUVLLElBQUcsS0FBS0UsRUFBQztBQUFBLFVBQUcsR0FBRUgsR0FBRSxhQUFXLFdBQVU7QUFBQyxtQkFBT0o7QUFBQSxVQUFDLEdBQUVJLEdBQUUsZUFBYSxTQUFTTCxJQUFFO0FBQUMsa0JBQU1PLEtBQUUsQ0FBQztBQUFFLGdCQUFHLE9BQU8sS0FBS04sRUFBQyxFQUFFLFFBQVMsQ0FBQUssT0FBRztBQUFDLG9CQUFNRSxLQUFFRjtBQUFFLGVBQUNMLEdBQUVLLE9BQUksQ0FBQyxHQUFHLFFBQVMsQ0FBQUEsT0FBRztBQUFDLG9CQUFJRyxLQUFFRDtBQUFFLHNCQUFNSCxLQUFFQztBQUFFLGdCQUFBRyxLQUFFUCxHQUFFRixJQUFFUyxFQUFDLEdBQUVILEtBQUVKLEdBQUVGLElBQUVNLEVBQUMsR0FBRUcsTUFBRyxDQUFDSCxNQUFHQyxHQUFFLEtBQUssSUFBSUMsU0FBUUgsSUFBRztBQUFBLGNBQUMsQ0FBRTtBQUFBLFlBQUMsQ0FBRSxHQUFFRSxHQUFFLFFBQU87QUFBQyxrQkFBSVAsS0FBRSxHQUFHUSxHQUFFLHNCQUFzQjtBQUFBO0FBQU0sY0FBQUQsR0FBRSxRQUFTLENBQUFELE9BQUc7QUFBQyxnQkFBQU4sTUFBR007QUFBQSxjQUFDLENBQUUsR0FBRUEsR0FBRSxLQUFLTixFQUFDO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBRSxjQUFJSSxLQUFFLENBQUM7QUFBRSxVQUFBQyxHQUFFLFlBQVUsU0FBU0MsSUFBRUMsSUFBRTtBQUFDLGNBQUUsa0NBQWlDLENBQUNELElBQUVDLEVBQUMsR0FBRSxVQUFVLE1BQU0sR0FBRSxZQUFVLE9BQU9ELEtBQUUsT0FBTyxLQUFLQSxFQUFDLEVBQUUsUUFBUyxDQUFBTixPQUFHO0FBQUMsY0FBQUssR0FBRSxVQUFVTCxJQUFFTSxHQUFFTixHQUFFO0FBQUEsWUFBQyxDQUFFLEtBQUdBLEdBQUUsT0FBT00sRUFBQyxHQUFFRixHQUFFRSxRQUFLRixHQUFFRSxNQUFHLENBQUMsSUFBRyxNQUFNLFFBQVFDLEVBQUMsSUFBRUEsR0FBRSxRQUFTLENBQUFQLE9BQUdLLEdBQUUsVUFBVUMsSUFBRU4sRUFBQyxDQUFFLElBQUVJLEdBQUVFLElBQUcsS0FBS0MsRUFBQztBQUFBLFVBQUUsR0FBRUYsR0FBRSxpQkFBZSxNQUFJRCxJQUFFQyxHQUFFLGNBQVksU0FBU0ksSUFBRTtBQUFDLG1CQUFPLEtBQUtBLEVBQUMsRUFBRSxRQUFTLENBQUFULE9BQUc7QUFBQyxjQUFBSSxHQUFFSixPQUFJSSxHQUFFSixJQUFHLFFBQVMsQ0FBQU8sT0FBRztBQUFDLGdCQUFBQSxNQUFHLFdBQVNFLEdBQUVULE9BQUksV0FBU1MsR0FBRUYsT0FBSUQsR0FBRSxLQUFLRSxHQUFFLDhDQUE2Q1IsSUFBRU8sRUFBQyxDQUFDO0FBQUEsY0FBQyxDQUFFO0FBQUEsWUFBQyxDQUFFLEdBQUVQLEdBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsbUJBQWlCLE9BQU8sS0FBS0ksRUFBQyxFQUFFLFFBQVMsQ0FBQUosT0FBRztBQUFDLGNBQUFJLEdBQUVKLElBQUcsUUFBUyxDQUFBSyxPQUFHO0FBQUMsZ0JBQUFBLE1BQUcsV0FBU0ksR0FBRUYsR0FBRSxPQUFPLFVBQVVQLEVBQUMsTUFBSSxXQUFTUyxHQUFFRixHQUFFLE9BQU8sVUFBVUYsRUFBQyxNQUFJQyxHQUFFLEtBQUtFLEdBQUUsOENBQTZDUixJQUFFSyxFQUFDLENBQUM7QUFBQSxjQUFDLENBQUU7QUFBQSxZQUFDLENBQUU7QUFBQSxVQUFDLEdBQUVBLEdBQUUsb0JBQWtCLFNBQVNMLElBQUVPLElBQUU7QUFBQyxZQUFBQSxLQUFFQSxHQUFFLEtBQU0sQ0FBQ1AsSUFBRU0sT0FBSUEsR0FBRSxTQUFPTixHQUFFLE1BQU87QUFBRSxnQkFBSVMsS0FBRSxNQUFLSixLQUFFLElBQUU7QUFBRSxxQkFBUUMsSUFBRUUsS0FBRSxHQUFFLFlBQVVGLEtBQUVDLEdBQUVDLE1BQUlBLE1BQUk7QUFBQyxvQkFBTUQsS0FBRSxFQUFFUCxJQUFFTSxFQUFDO0FBQUUsY0FBQUMsTUFBRyxLQUFHQSxLQUFFRixPQUFJQSxLQUFFRSxJQUFFRSxLQUFFSDtBQUFBLFlBQUU7QUFBQyxZQUFBRyxNQUFHSCxHQUFFLEtBQUtFLEdBQUUsb0JBQW1CQyxFQUFDLENBQUM7QUFBQSxVQUFDLEdBQUVKLEdBQUUsUUFBTSxTQUFTTCxJQUFFO0FBQUMsbUJBQU9DLEtBQUUsRUFBRUEsSUFBRyxDQUFBSyxPQUFHLENBQUNOLEdBQUVNLEdBQUcsR0FBRUYsS0FBRSxFQUFFQSxJQUFHLENBQUFFLE9BQUcsQ0FBQ04sR0FBRU0sR0FBRyxHQUFFRDtBQUFBLFVBQUM7QUFBRSxnQkFBTVEsS0FBRSxDQUFDO0FBQUUsaUJBQU9SLEdBQUUsU0FBTyxXQUFVO0FBQUMsWUFBQVEsR0FBRSxLQUFLLEVBQUMsU0FBUVosSUFBRSxhQUFZRyxHQUFDLENBQUM7QUFBQSxVQUFDLEdBQUVDLEdBQUUsV0FBUyxXQUFVO0FBQUMsa0JBQU1MLEtBQUVhLEdBQUUsSUFBSTtBQUFFLGNBQUViLElBQUUsUUFBT08sRUFBQyxHQUFHLEVBQUMsU0FBUU4sSUFBRSxhQUFZRyxHQUFDLElBQUVKO0FBQUEsVUFBRSxHQUFFSztBQUFBLFFBQUMsRUFBRSxNQUFLLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxJQUFFLEVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRSxNQUFNLElBQUUsU0FBU0wsSUFBRU0sSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGlCQUFPLElBQUksRUFBRVIsSUFBRU0sSUFBRUMsSUFBRUMsRUFBQztBQUFBLFFBQUMsRUFBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxHQUFFLEVBQUUsTUFBSyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxLQUFHLEVBQUUsTUFBSyxHQUFFLFNBQVNSLElBQUVNLElBQUVDLElBQUVDLElBQUU7QUFBQyxpQkFBTyxJQUFJLEVBQUVSLElBQUVNLElBQUVDLElBQUVDLEVBQUM7QUFBQSxRQUFDLEVBQUUsTUFBSyxFQUFFLE1BQUssSUFBRyxHQUFHLEdBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsTUFBTSxHQUFFLEVBQUUsTUFBSyxHQUFFLE1BQUssR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLElBQUcsR0FBRyxHQUFFLEVBQUUsTUFBSyxHQUFFLE1BQUssR0FBRyxHQUFFLEVBQUUsTUFBSyxHQUFFLE9BQUcsR0FBRyxHQUFFLEtBQUssU0FBTyxPQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUMsQ0FBQyxJQUFJUixJQUFFTSxJQUFFO0FBQUMsZUFBTyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsS0FBSyxTQUFTTixJQUFFTSxFQUFDO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxJQUFJTixJQUFFTyxJQUFFQyxJQUFFQyxLQUFFLEdBQUVKLEtBQUUsT0FBRztBQUFDLFlBQUlKLEtBQUUsQ0FBQyxDQUFDTyxNQUFHSDtBQUFFLFFBQUFMLEtBQUVBLE1BQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxLQUFLLElBQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLGdCQUFjLEtBQUssSUFBSTtBQUFFLGNBQU1FLEtBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxjQUFjLGVBQWNDLEtBQUUsT0FBTyxPQUFPLENBQUMsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsZUFBYyxFQUFDLGNBQWEsS0FBRSxDQUFDLEdBQUVDLEtBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLE9BQU8sU0FBU0osSUFBRSxPQUFPLE9BQU8sQ0FBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsR0FBRSxFQUFDLGVBQWMsRUFBQyw0QkFBMkIsT0FBRyxHQUFHRyxHQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVVLEtBQUUsT0FBTyxPQUFPVCxHQUFFLE1BQUssRUFBRSxNQUFLLElBQUcsR0FBRyxDQUFDO0FBQUUsWUFBSU87QUFBRSxjQUFNQyxLQUFFUixHQUFFO0FBQVEsWUFBSVUsS0FBRSxPQUFHVSxLQUFFO0FBQUcsZUFBTyxLQUFLWCxFQUFDLEVBQUUsUUFBUyxDQUFBYixPQUFHO0FBQUMsVUFBQUEsT0FBSSxFQUFFLE1BQUssR0FBRSxHQUFHLEtBQUdhLEdBQUViLE1BQUdjLEtBQUUsT0FBR2QsT0FBSSxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUdhLEdBQUViLFFBQUt3QixLQUFFO0FBQUEsUUFBRyxDQUFFLEdBQUVYLEdBQUUsS0FBRyxLQUFLLElBQUcsS0FBSyxTQUFPVCxJQUFFLE1BQUlLLE1BQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLHVCQUF1QjtBQUFFLFlBQUc7QUFBQyxjQUFHLEtBQUssSUFBSSxHQUFFRjtBQUFFLG1CQUFPLEtBQUssSUFBSU0sSUFBRVgsSUFBRSxDQUFDLENBQUNNLElBQUUsS0FBRTtBQUFFLGNBQUcsRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFO0FBQUMsYUFBQyxFQUFFLE1BQUssR0FBRSxHQUFHLENBQUMsRUFBRSxPQUFPSSxHQUFFLEVBQUUsTUFBSyxHQUFFLEdBQUcsTUFBSSxDQUFDLENBQUMsRUFBRSxPQUFRLENBQUFaLE9BQUdBLEdBQUUsU0FBTyxDQUFFLEVBQUUsU0FBUyxLQUFHYSxHQUFFLEVBQUVBLEdBQUUsRUFBRSxTQUFPLEVBQUUsTUFBSUEsR0FBRSxFQUFFLElBQUksR0FBRUMsS0FBRTtBQUFBLFVBQUc7QUFBQyxZQUFFLE1BQUssR0FBRSxPQUFHLEdBQUc7QUFBRSxnQkFBTVgsS0FBRSxFQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsWUFBWSxHQUFFWSxLQUFFLEVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRSxpQkFBaUJGLElBQUVHLEtBQUVGLE1BQUdDLE1BQUdWO0FBQUUsY0FBR1EsR0FBRSxFQUFFLFFBQU87QUFBQyxnQkFBR1YsR0FBRSxRQUFPO0FBQUMsa0JBQUlIO0FBQUUsdUJBQVFNLElBQUVDLEtBQUVFLE1BQUcsR0FBRSxXQUFTSSxHQUFFLEVBQUVOLEtBQUdBLE1BQUk7QUFBQyxvQkFBR0QsS0FBRSxPQUFPTyxHQUFFLEVBQUVOLEdBQUUsR0FBRUosR0FBRSxTQUFTRyxFQUFDLEtBQUdBLE9BQUksRUFBRSxNQUFLLEdBQUUsR0FBRyxHQUFFO0FBQUMsd0JBQU1OLEtBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRyxFQUFFLFdBQVdNLElBQUUsTUFBS0YsSUFBRUcsS0FBRSxHQUFFRixJQUFFUyxNQUFHVSxNQUFHbkIsRUFBQztBQUFFLHlCQUFPLEtBQUssSUFBSUwsSUFBRUUsSUFBRSxDQUFDLENBQUNNLElBQUUsS0FBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUcsQ0FBQ1IsTUFBR00sT0FBSSxFQUFFLE1BQUssR0FBRSxHQUFHLEdBQUU7QUFBQyxrQkFBQU4sS0FBRU07QUFBRTtBQUFBLGdCQUFLO0FBQUEsY0FBQztBQUFDLGVBQUMsRUFBRSxNQUFLLEdBQUUsR0FBRyxFQUFFLGtCQUFrQixLQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBR04sTUFBRyxDQUFDZ0IsTUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsa0JBQWtCaEIsSUFBRUcsRUFBQztBQUFBLFlBQUM7QUFBQyxjQUFFLE1BQUssR0FBRSxHQUFHLEtBQUdVLEdBQUUsRUFBRSxTQUFTLEVBQUUsTUFBSyxHQUFFLEdBQUcsQ0FBQyxLQUFHLENBQUNFLE9BQUksRUFBRSxNQUFLLEdBQUUsR0FBRyxLQUFHLEVBQUUsSUFBRSxHQUFFLEtBQUsscUJBQXFCLEdBQUUsS0FBSyxLQUFLLENBQUM7QUFBQSxVQUFFO0FBQUMsY0FBRyxFQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsa0JBQWtCLEtBQUcsQ0FBQ0MsSUFBRTtBQUFDLGtCQUFNaEIsS0FBRSxFQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsV0FBVyxNQUFLLE1BQUtJLElBQUUsR0FBRUMsSUFBRVMsTUFBR1UsTUFBR25CLEVBQUM7QUFBRSxtQkFBTyxLQUFLLElBQUlMLElBQUVFLElBQUUsQ0FBQyxDQUFDTSxJQUFFLEtBQUU7QUFBQSxVQUFDO0FBQUMsY0FBR08sSUFBRTtBQUFDLGNBQUUsTUFBSyxHQUFFLEdBQUcsS0FBRyxFQUFFLElBQUU7QUFBRSxrQkFBTVIsTUFBR1AsS0FBRSxDQUFDLEVBQUUsT0FBT0EsRUFBQyxHQUFHLE1BQU1BLEdBQUUsUUFBUSxLQUFLLEVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRSxlQUFlLElBQUUsQ0FBQztBQUFFLG1CQUFPLEVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRSxjQUFjTyxJQUFHLENBQUNQLElBQUVPLE9BQUk7QUFBQyxrQkFBR1A7QUFBRSxzQkFBTSxJQUFJLEVBQUVBLEdBQUUsT0FBTztBQUFFLGVBQUNPLE1BQUcsQ0FBQyxHQUFHLFFBQVMsQ0FBQVAsT0FBRztBQUFDLGtCQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsSUFBSUEsRUFBQztBQUFBLGNBQUMsQ0FBRSxHQUFFLEtBQUssS0FBSyxDQUFDO0FBQUEsWUFBQyxDQUFFLEdBQUUsS0FBSyxJQUFJYSxJQUFFLENBQUNYLElBQUUsQ0FBQyxDQUFDTSxJQUFFLEtBQUU7QUFBQSxVQUFDO0FBQUMsY0FBRyxFQUFFLE1BQUssR0FBRSxHQUFHLE1BQUlNLE1BQUcsRUFBRSxNQUFLLEdBQUUsR0FBRyxLQUFHLEVBQUUsSUFBRSxHQUFFYixLQUFFLE1BQUcsS0FBSyxTQUFTLEtBQUssR0FBRSxLQUFLLEtBQUssQ0FBQyxLQUFHdUIsT0FBSSxFQUFFLE1BQUssR0FBRSxHQUFHLEtBQUcsRUFBRSxJQUFFLEdBQUV2QixLQUFFLE1BQUcsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFlBQVksS0FBSyxHQUFFLEtBQUssS0FBSyxDQUFDLEtBQUksQ0FBQ0EsTUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsZUFBZSxTQUFPLE1BQUlBLEtBQUUsT0FBTyxLQUFLWSxFQUFDLEVBQUUsS0FBTSxDQUFBYixPQUFHLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxlQUFlLFFBQVFBLEVBQUMsS0FBRyxLQUFHLFNBQUthLEdBQUViLEdBQUcsSUFBRyxDQUFDQyxJQUFFO0FBQUMsZ0JBQUdHLEdBQUU7QUFBTSxvQkFBTSxJQUFJLEVBQUVBLEdBQUUsTUFBTSxPQUFPO0FBQUUsZ0JBQUcsQ0FBQ1csSUFBRTtBQUFDLG9CQUFNZixLQUFFLEtBQUssSUFBSVksSUFBRSxDQUFDLEdBQUVSLEdBQUUsS0FBSztBQUFFLGNBQUFJLE9BQUlHLEtBQUUsRUFBRUUsSUFBRSxNQUFLLEVBQUUsTUFBSyxHQUFFLEdBQUcsRUFBRSxjQUFjLEdBQUUsSUFBRSxJQUFHRixLQUFFLEtBQUssSUFBSVgsSUFBRSxRQUFNVyxLQUFFQSxLQUFFRSxFQUFDLEdBQUUsRUFBRUYsRUFBQyxLQUFHLENBQUNILE9BQUlHLEtBQUVBLEdBQUUsS0FBTSxNQUFJLEVBQUVFLElBQUUsTUFBSyxFQUFFLE1BQUssR0FBRSxHQUFHLEVBQUUsY0FBYyxHQUFFLEtBQUUsQ0FBRTtBQUFBLFlBQUU7QUFBQSxVQUFDO0FBQUEsUUFBQyxTQUFPYixJQUFOO0FBQVMsY0FBRyxFQUFFQSxjQUFhO0FBQUcsa0JBQU1BO0FBQUUsWUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLEtBQUtBLEdBQUUsU0FBUUEsRUFBQztBQUFBLFFBQUM7QUFBQyxlQUFPLEtBQUssSUFBSSxRQUFNVyxLQUFFQSxLQUFFRSxJQUFFWCxJQUFFLENBQUMsQ0FBQ00sSUFBRSxJQUFFO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxJQUFJUixJQUFFTyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsY0FBTUosS0FBRSxFQUFDLEdBQUcsS0FBSyxtQkFBbUIsRUFBQztBQUFFLGVBQU8sQ0FBQUosT0FBRztBQUFDLGNBQUdPO0FBQUUsa0JBQU0sSUFBSSxFQUFFQSxHQUFFLE9BQU87QUFBRSxZQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsZUFBZVAsRUFBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxrQkFBa0JBLElBQUVJLEVBQUM7QUFBRSxjQUFJSCxLQUFFO0FBQUcsWUFBRSxNQUFLLElBQUcsR0FBRyxNQUFJQSxLQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxnQkFBZ0JELEVBQUMsSUFBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEtBQUcsQ0FBQ0MsS0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsaUJBQWlCRCxJQUFFRCxJQUFFTyxJQUFFLENBQUMsQ0FBQ0UsRUFBQyxJQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsS0FBRyxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsaUJBQWlCUixJQUFFRCxJQUFFLENBQUMsR0FBRSxPQUFHLEtBQUUsR0FBRSxFQUFFLE1BQUssSUFBRyxHQUFHLEVBQUUsZUFBZUMsRUFBQyxHQUFFLEVBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxhQUFhQSxFQUFDLEdBQUUsRUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLFlBQVlBLEVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxNQUFLO0FBQUMsVUFBRSxNQUFLLEdBQUUsTUFBRyxHQUFHO0FBQUEsTUFBQztBQUFBLE1BQUMsQ0FBQyxJQUFJRCxJQUFFO0FBQUMsWUFBRyxZQUFVLE9BQU9BO0FBQUUsWUFBRSxNQUFLLElBQUcsR0FBRyxFQUFFLElBQUlBLE1BQUc7QUFBQTtBQUFRLHFCQUFVTSxNQUFLTjtBQUFFLGNBQUUsTUFBSyxJQUFHLEdBQUcsRUFBRSxJQUFJTSxNQUFHO0FBQUEsTUFBRTtBQUFBLElBQUM7QUFBQyxRQUFJO0FBQUosUUFBTztBQUFHLFFBQUssRUFBQyxjQUFhLEdBQUUsSUFBRSxRQUFRO0FBQS9CLFFBQXFDLEVBQUMsU0FBUSxHQUFFLElBQUUsUUFBUTtBQUExRCxRQUFrRSxFQUFDLFNBQVEsR0FBRSxJQUFFLFFBQVE7QUFBdkYsUUFBK0YsS0FBRztBQUFsRyxRQUFrSCxLQUFHO0FBQXdCLFFBQUk7QUFBSixRQUFPLEtBQUcsRUFBQyxRQUFPLEVBQUMsZ0JBQWUsRUFBRSxnQkFBZSxhQUFZLEVBQUUsWUFBVyxHQUFFLE9BQU0sa0JBQWlCLFFBQU8sZ0JBQXlCLFFBQU8sQ0FBQU4sT0FBRyxRQUFRLElBQUlBLEtBQUcsZUFBYywyQkFBMkIsbUJBQWtCLEdBQUUsU0FBUSxJQUFHLGNBQWEsVUFBUSxLQUFHLFVBQVEsS0FBRyxTQUFPLFdBQVMsV0FBUyxVQUFRLFNBQU8sUUFBUSxTQUFPLFdBQVMsS0FBRyxTQUFPLEdBQUcsYUFBVyxXQUFTLEtBQUcsS0FBRyxRQUFRLElBQUksR0FBRSxRQUFPLElBQUcsTUFBSyxRQUFRLFNBQVEsU0FBUSxFQUFDLE1BQUssTUFBSSxRQUFRLE1BQUssS0FBSSxRQUFRLEtBQUksYUFBWSxDQUFDQSxJQUFFTSxPQUFJLFFBQVEsWUFBWU4sSUFBRU0sRUFBQyxHQUFFLFVBQVMsTUFBSSxRQUFRLFVBQVMsTUFBSyxDQUFBTixPQUFHO0FBQUMsY0FBUSxLQUFLQSxFQUFDO0FBQUEsSUFBQyxHQUFFLFVBQVMsUUFBUSxVQUFTLFlBQVcsV0FBUyxRQUFRLE9BQU8sVUFBUSxRQUFRLE9BQU8sVUFBUSxLQUFJLEdBQUUsY0FBYSxJQUFHLFNBQWdCLGtCQUFpQiw2QkFBNkIsYUFBWSx3QkFBd0IsTUFBSyxHQUFHLEVBQUMsV0FBVSxHQUFHLFdBQVUsWUFBWSxHQUFFLGFBQVksTUFBRSxDQUFDLEVBQUM7QUFBRSxRQUFNLE1BQUksVUFBUSxLQUFHLFNBQU8sV0FBUyxXQUFTLFVBQVEsU0FBTyxRQUFRLFFBQU0sV0FBUyxLQUFHLFNBQU8sR0FBRywwQkFBd0IsT0FBTyxRQUFRLElBQUksc0JBQXNCLElBQUU7QUFBRyxRQUFHLFdBQVMsUUFBUSxTQUFRO0FBQUMsVUFBRyxPQUFPLFFBQVEsUUFBUSxNQUFNLFVBQVUsRUFBRSxFQUFFLElBQUU7QUFBRyxjQUFNLE1BQU0sK0NBQStDLCtGQUErRjtBQUFBLElBQUM7QUFBQyxRQUFNLEtBQUc7QUFBd0IsUUFBSTtBQUFKLFFBQU8sS0FBRyxFQUFDLGNBQWEsR0FBRSxpQkFBZ0IsSUFBRyxRQUFPLEtBQUcsSUFBRyxDQUFDQSxLQUFFLENBQUMsR0FBRU0sS0FBRSxHQUFHLFFBQVEsSUFBSSxHQUFFQyxPQUFJO0FBQUMsWUFBTUMsS0FBRSxJQUFJLEdBQUdSLElBQUVNLElBQUVDLElBQUUsRUFBRTtBQUFFLGFBQU8sT0FBTyxlQUFlQyxJQUFFLFFBQU8sRUFBQyxLQUFJLE1BQUlBLEdBQUUsTUFBTSxHQUFFLFlBQVcsS0FBRSxDQUFDLEdBQUVBLEdBQUUsS0FBSyxHQUFFQSxHQUFFLFFBQVEsR0FBRUE7QUFBQSxJQUFDLElBQUcsU0FBUSxHQUFFLFdBQVUsR0FBRSxXQUFVLEdBQUUsY0FBYSxHQUFFLFFBQU8sSUFBRyxhQUFZLEdBQUUsUUFBTyxFQUFDO0FBQUUsSUFBQVQsUUFBTyxVQUFRO0FBQUE7QUFBQTs7O0FDQXI5M0Q7QUFBQSwwQ0FBQThCLFNBQUE7QUFBQTtBQUlBLFFBQU0sRUFBQyxPQUFPLFlBQVcsSUFBSTtBQUU3QixTQUFLLFlBQVksUUFBUSxRQUFRLElBQUksQ0FBQztBQUV0QyxJQUFBQSxRQUFPLFVBQVU7QUFFakIsYUFBUyxLQUFLLGFBQWEsS0FBSztBQUM5QixZQUFNLE9BQU8sTUFBTSxhQUFhLEtBQUssT0FBTztBQUM1QyxtQkFBYSxJQUFJO0FBRWpCLGFBQU87QUFBQSxJQUNUO0FBRUEsYUFBUyxhQUFhLEtBQUssS0FBSyxRQUFRO0FBQ3RDLGFBQU8sZUFBZSxLQUFLLEtBQUs7QUFBQSxRQUM5QixjQUFjO0FBQUEsUUFDZCxZQUFZO0FBQUEsUUFDWixLQUFLO0FBQUEsTUFDUCxDQUFDO0FBQUEsSUFDSDtBQUNBLGFBQVMsYUFBYSxLQUFLLEtBQUs7QUFDOUIsWUFBTSxPQUFPLE9BQU8seUJBQXlCLEtBQUssR0FBRztBQUNyRCxVQUFJLE9BQU8sU0FBUyxhQUFhO0FBQy9CLGVBQU8sS0FBSztBQUFBLE1BQ2Q7QUFBQSxJQUNGO0FBU0EsYUFBUyxhQUFhLE1BQU07QUFDMUI7QUFBQSxRQUNFLEdBQUcsT0FBTyxLQUFLLElBQUk7QUFBQSxRQUNuQixHQUFHLE9BQU8sb0JBQW9CLEtBQUssWUFBWSxTQUFTO0FBQUEsTUFDMUQsRUFBRSxRQUFRLFNBQU87QUFDZixZQUFJLFFBQVEsUUFBUTtBQUNsQix1QkFBYSxNQUFNLEtBQUssYUFBYSxNQUFNLEdBQUcsQ0FBQztBQUFBLFFBQ2pELFdBQVcsT0FBTyxLQUFLLFNBQVMsWUFBWTtBQUMxQyxlQUFLLE9BQU8sS0FBSyxLQUFLLEtBQUssSUFBSTtBQUFBLFFBQ2pDLE9BQU87QUFDTCx1QkFBYSxNQUFNLE1BQU0sTUFBTSxLQUFLLEVBQUU7QUFDdEMsdUJBQWEsTUFBTSxVQUFVLE1BQU0sS0FBSyxNQUFNO0FBQUEsUUFDaEQ7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUE7QUFBQTs7O0FDcERBO0FBQUE7QUFPQSxRQUFJLE9BQU8sUUFBUTtBQUFuQixRQUNJQyxVQUFTO0FBRGIsUUFFSSxTQUFTLGlCQUFvQjtBQVFqQyxRQUFJLE9BQU8sUUFBUSxPQUFPLFNBQVUsU0FBUyxPQUFPO0FBQ2xELGFBQU8sS0FBSyxNQUFNLE9BQU87QUFFekIsZ0JBQWlCLFdBQVcsQ0FBQztBQUM3QixXQUFLLE9BQVc7QUFDaEIsV0FBSyxXQUFZLFFBQVEsYUFBYSxTQUFXLFFBQVEsV0FBVztBQUNwRSxXQUFLLFVBQVc7QUFDaEIsV0FBSyxRQUFXO0FBRWhCLFVBQUcsT0FBTyxRQUFRLGFBQWEsV0FBVztBQUN4QyxhQUFLLFdBQVksUUFBUTtBQUN6QixlQUFPLFFBQVE7QUFBQSxNQUVqQixPQUFPO0FBQ0wsYUFBSyxXQUFXO0FBQUEsTUFDbEI7QUFFQSxVQUFJLE9BQU8sUUFBUSxjQUFjLFlBQVk7QUFDekMsYUFBSyxZQUFZLFFBQVE7QUFDekIsZUFBTyxRQUFRO0FBQUEsTUFDbkIsT0FBTztBQUNILGFBQUssWUFBWTtBQUFBLE1BQ3JCO0FBQUEsSUFDRjtBQUdBLFNBQUssU0FBUyxNQUFNLE1BQU07QUFNMUIsU0FBSyxVQUFVLFdBQVcsV0FBWTtBQUNwQyxXQUFLLFNBQVM7QUFDZCxhQUFPLEtBQUs7QUFBQSxJQUNkO0FBT0EsU0FBSyxVQUFVLFdBQVcsV0FBWTtBQUNwQyxVQUFJQyxRQUFPLE1BQ1AsT0FBTztBQUVYLGNBQVEsUUFBUSxLQUFLLE9BQU8sSUFDMUIsS0FBSyxVQUNMLE9BQU8sS0FBSyxZQUFZLFdBQ3RCLGdCQUFpQixRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLEtBQUssT0FBTyxJQUM1RCxnQkFBaUIsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLFVBQUksT0FBTyxLQUFLLFVBQVUsVUFBVTtBQUFFLGNBQU0sTUFBTSxLQUFLLEtBQUs7QUFBQSxNQUFFO0FBRTlELGFBQU8sTUFBTTtBQUViLFVBQUksQ0FBQyxNQUFNO0FBQ1Q7QUFBQSxNQUNGO0FBRUEsVUFBSSxLQUFLLFdBQVc7QUFDbEIsZUFBT0QsUUFBTyxVQUFVLE1BQU0sS0FBSyxTQUFTO0FBQUEsTUFDOUM7QUFFQSxVQUFJLFlBQVk7QUFFaEIsVUFBRyxLQUFLLFVBQVU7QUFDaEIsYUFBSyxXQUFXO0FBQ2hCLG9CQUFZO0FBQUEsTUFDZDtBQUVBLGFBQU8sS0FBSyxJQUFJLEVBQUUsUUFBUSxTQUFVLEtBQUs7QUFDdkMsWUFBSSxNQUFNLEtBQUs7QUFFZixZQUFJLE9BQU8sUUFBUSxhQUFhO0FBQzlCLGNBQUlDLE1BQUssYUFBYTtBQUNwQixrQkFBTUQsUUFBTyxZQUFZLEdBQUc7QUFBQSxVQUM5QjtBQUVBLFVBQUFDLE1BQUssSUFBSSxLQUFLLEdBQUc7QUFBQSxRQUNuQjtBQUFBLE1BQ0YsQ0FBQztBQUVELFdBQUssV0FBVyxNQUFNO0FBQ3RCLFdBQUssT0FBVyxNQUFNO0FBRXRCLFVBQUksV0FBVztBQUNiLGFBQUssV0FBVztBQUFBLE1BQ2xCO0FBQ0EsYUFBTyxLQUFLO0FBQUEsSUFDZDtBQUVBLGFBQVMsUUFBUSxLQUFLO0FBQ3BCLGNBQVEsT0FBTyxRQUFRLGNBQWMsT0FBTyxRQUFRLGFBQWMsVUFBVTtBQUFBLElBQzlFO0FBQUE7QUFBQTs7O0FDL0dBO0FBQUE7QUFPQSxRQUFJLE9BQU8sUUFBUTtBQUFuQixRQUNJQyxVQUFTO0FBRGIsUUFFSSxTQUFTLGlCQUFvQjtBQVFqQyxRQUFJLE1BQU0sUUFBUSxNQUFNLFNBQVUsU0FBUztBQUN6QyxhQUFPLEtBQUssTUFBTSxPQUFPO0FBRXpCLGdCQUFpQixXQUFXLENBQUM7QUFDN0IsV0FBSyxPQUFZO0FBQ2pCLFdBQUssV0FBWSxRQUFRLGFBQWEsU0FBWSxRQUFRLFdBQVc7QUFDckUsV0FBSyxZQUFZLFFBQVEsYUFBYSxDQUFDO0FBQ3ZDLFdBQUssWUFBWSxRQUFRLGFBQWE7QUFDdEMsV0FBSyxjQUFjLFFBQVEsZUFBZTtBQUMxQyxXQUFLLFlBQVksUUFBUSxhQUFhO0FBRXRDLFVBQUssQ0FBQyxFQUFHLFNBQVMsS0FBSyxRQUFRLEtBQUssTUFBTSxxQkFDbkMsT0FBTyxZQUFZLFVBQVU7QUFDbEMsYUFBSyxRQUFRLFFBQVE7QUFBQSxNQUN2QjtBQUVBLFVBQUksbUJBQW1CLE9BQU87QUFDNUIsYUFBSyxZQUFZO0FBQUEsTUFDbkI7QUFBQSxJQUNGO0FBR0EsU0FBSyxTQUFTLEtBQUssTUFBTTtBQU16QixRQUFJLFVBQVUsV0FBVyxXQUFZO0FBQ25DLFdBQUssUUFBUTtBQUNiLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFNQSxRQUFJLFVBQVUsVUFBVSxXQUFZO0FBQ2xDLFVBQUlDLFFBQU87QUFFWCxVQUFJLE1BQU0sUUFBUTtBQUVsQixVQUFJLEtBQUssV0FBVztBQUNsQixjQUFNLENBQUM7QUFDUCxlQUFPLEtBQUssUUFBUSxHQUFHLEVBQUUsUUFBUSxTQUFVLEtBQUs7QUFDOUMsY0FBSSxJQUFJLFlBQVksS0FBSyxRQUFRLElBQUk7QUFBQSxRQUN2QyxDQUFDO0FBQUEsTUFDSDtBQUVBLFVBQUksS0FBSyxXQUFXO0FBQ2xCLGNBQU1ELFFBQU8sVUFBVSxLQUFLLEtBQUssU0FBUztBQUFBLE1BQzVDO0FBRUEsVUFBSSxZQUFZO0FBRWhCLFVBQUcsS0FBSyxVQUFVO0FBQ2hCLGFBQUssV0FBVztBQUNoQixvQkFBWTtBQUFBLE1BQ2Q7QUFFQSxhQUFPLEtBQUssR0FBRyxFQUFFLE9BQU8sU0FBVSxLQUFLO0FBQ3JDLFlBQUlDLE1BQUssU0FBU0EsTUFBSyxVQUFVLFFBQVE7QUFDdkMsaUJBQU8sSUFBSSxNQUFNQSxNQUFLLEtBQUssS0FBS0EsTUFBSyxVQUFVLFFBQVEsR0FBRyxNQUFNO0FBQUEsUUFDbEUsV0FDU0EsTUFBSyxPQUFPO0FBQ25CLGlCQUFPLElBQUksTUFBTUEsTUFBSyxLQUFLO0FBQUEsUUFDN0IsT0FDSztBQUNILGlCQUFPLENBQUNBLE1BQUssVUFBVSxVQUFVQSxNQUFLLFVBQVUsUUFBUSxHQUFHLE1BQU07QUFBQSxRQUNuRTtBQUFBLE1BQ0YsQ0FBQyxFQUFFLFFBQVEsU0FBVSxLQUFLO0FBRXhCLFlBQUksTUFBTSxJQUFJO0FBRWQsWUFBSUEsTUFBSyxhQUFhO0FBQ3BCLGdCQUFNRCxRQUFPLFlBQVksR0FBRztBQUFBLFFBQzlCO0FBRUEsUUFBQUMsTUFBSyxJQUFJLEtBQUssR0FBRztBQUFBLE1BQ25CLENBQUM7QUFFRCxVQUFJLFdBQVc7QUFDYixhQUFLLFdBQVc7QUFBQSxNQUNsQjtBQUVBLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFBQTtBQUFBOzs7QUN2R0E7QUFBQTtBQU9BLFFBQUksS0FBSyxRQUFRO0FBQWpCLFFBQ0lDLE1BQUssUUFBUTtBQURqQixRQUVJQyxRQUFPLFFBQVE7QUFGbkIsUUFHSSxPQUFPLFFBQVE7QUFIbkIsUUFJSSxTQUFTLFFBQVE7QUFKckIsUUFLSSxVQUFVO0FBTGQsUUFNSSxTQUFTLGlCQUFvQjtBQUVqQyxRQUFJLFNBQVNELElBQUcsVUFBVUMsTUFBSztBQUEvQixRQUNJLGFBQWFELElBQUcsY0FBY0MsTUFBSztBQVF2QyxRQUFJLE9BQU8sUUFBUSxPQUFPLFNBQVUsU0FBUztBQUMzQyxVQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsTUFBTTtBQUM3QixjQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFBQSxNQUNsRDtBQUVBLGFBQU8sS0FBSyxNQUFNLE9BQU87QUFFekIsV0FBSyxPQUFVO0FBQ2YsV0FBSyxPQUFVLFFBQVE7QUFDdkIsV0FBSyxNQUFVLFFBQVEsT0FBVSxRQUFRLElBQUk7QUFDN0MsV0FBSyxTQUFVLFFBQVEsVUFBVSxRQUFRO0FBQ3pDLFdBQUssU0FBVSxRQUFRO0FBQ3ZCLFdBQUssVUFBVSxRQUFRLGdCQUNsQixRQUFRLFdBQ1I7QUFDTCxXQUFLLE1BQVUsRUFBRSxRQUFRLFFBQVE7QUFFakMsVUFBSSxLQUFLLFFBQVE7QUFDZixhQUFLLFNBQVMsT0FBTyxTQUFTLEtBQUssTUFBTSxLQUFLLE9BQU8sS0FBSyxXQUFXLFdBQ2pFLEVBQUUsUUFBUSxLQUFLLE9BQU8sU0FBUyxFQUFFLElBQ2pDLEtBQUs7QUFFVCxhQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sT0FBTztBQUNyQyxZQUFJLEtBQUssT0FBTyxZQUFZO0FBQzFCLGVBQUssT0FBTyxTQUFTRCxJQUFHLGFBQWEsS0FBSyxPQUFPLFlBQVksTUFBTTtBQUFBLFFBQ3JFO0FBRUEsWUFBSSxDQUFDLEtBQUssT0FBTyxRQUFRO0FBQ3ZCLGdCQUFNLElBQUksTUFBTSxrQ0FBa0M7QUFBQSxRQUNwRDtBQUFBLE1BQ0Y7QUFFQSxVQUFJLFFBQVEsUUFBUTtBQUNsQixhQUFLLE9BQU8sS0FBSyxHQUFHO0FBQUEsTUFDdEI7QUFBQSxJQUNGO0FBR0EsU0FBSyxTQUFTLE1BQU0sTUFBTTtBQVMxQixTQUFLLFVBQVUsT0FBTyxTQUFVLE9BQU8sVUFBVTtBQUMvQyxXQUFLLFdBQVcsS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLElBQzVDO0FBVUEsU0FBSyxVQUFVLGFBQWEsU0FBVUMsT0FBTUMsU0FBUSxVQUFVO0FBQzVELFVBQUksQ0FBQyxVQUFVO0FBQ2IsbUJBQVdBO0FBQ1gsUUFBQUEsVUFBUyxLQUFLO0FBQUEsTUFDaEI7QUFFQSxNQUFBRixJQUFHLFVBQVVDLE9BQU0sS0FBSyxVQUFVQyxPQUFNLEdBQUcsUUFBUTtBQUFBLElBQ3JEO0FBT0EsU0FBSyxVQUFVLFdBQVcsV0FBWTtBQUNwQyxNQUFBRixJQUFHLGNBQWMsS0FBSyxNQUFNLEtBQUssVUFBVSxDQUFDO0FBQzVDLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFPQSxTQUFLLFVBQVUsT0FBTyxTQUFVLFVBQVU7QUFDeEMsVUFBSUcsUUFBTztBQUVYLGFBQU9BLE1BQUssTUFBTSxTQUFVQyxTQUFRO0FBQ2xDLFlBQUksQ0FBQ0EsU0FBUTtBQUNYLGlCQUFPLFNBQVMsTUFBTSxDQUFDLENBQUM7QUFBQSxRQUMxQjtBQUtBLFFBQUFKLElBQUcsU0FBU0csTUFBSyxNQUFNLFNBQVUsS0FBSyxNQUFNO0FBQzFDLGNBQUksS0FBSztBQUNQLG1CQUFPLFNBQVMsR0FBRztBQUFBLFVBQ3JCO0FBRUEsY0FBSTtBQUVGLGdCQUFJLGFBQWEsS0FBSyxTQUFTO0FBQy9CLGdCQUFJLFdBQVcsT0FBTyxDQUFDLE1BQU0sVUFBVTtBQUNyQywyQkFBYSxXQUFXLE9BQU8sQ0FBQztBQUFBLFlBQ2xDO0FBRUEsWUFBQUEsTUFBSyxRQUFRQSxNQUFLLE1BQU0sVUFBVTtBQUFBLFVBQ3BDLFNBQ08sSUFBUDtBQUNFLG1CQUFPLFNBQVMsSUFBSSxNQUFNLDZDQUE2Q0EsTUFBSyxPQUFPLFFBQVEsR0FBRyxPQUFPLENBQUM7QUFBQSxVQUN4RztBQUVBLG1CQUFTLE1BQU1BLE1BQUssS0FBSztBQUFBLFFBQzNCLENBQUM7QUFBQSxNQUNILENBQUM7QUFBQSxJQUNIO0FBT0EsU0FBSyxVQUFVLFdBQVcsV0FBWTtBQUNwQyxVQUFJLENBQUMsV0FBVyxLQUFLLElBQUksR0FBRztBQUMxQixhQUFLLFFBQVEsQ0FBQztBQUNkLGVBQU8sS0FBSztBQUFBLE1BQ2Q7QUFLQSxVQUFJO0FBRUYsWUFBSSxXQUFXSCxJQUFHLGFBQWEsS0FBSyxNQUFNLE1BQU07QUFDaEQsWUFBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLFVBQVU7QUFDbkMscUJBQVcsU0FBUyxPQUFPLENBQUM7QUFBQSxRQUM5QjtBQUVBLGFBQUssUUFBUSxLQUFLLE1BQU0sUUFBUTtBQUFBLE1BQ2xDLFNBQ08sSUFBUDtBQUNFLGNBQU0sSUFBSSxNQUFNLDZDQUE2QyxLQUFLLE9BQU8sUUFBUSxHQUFHLE9BQU87QUFBQSxNQUM3RjtBQUVBLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFPQSxTQUFLLFVBQVUsWUFBWSxTQUFVRSxTQUFRO0FBQzNDLFVBQUksT0FBTyxLQUFLO0FBQ2hCLFVBQUksQ0FBQ0EsU0FBUTtBQUNULFFBQUFBLFVBQVMsS0FBSztBQUFBLE1BQ2xCO0FBRUEsVUFBSSxLQUFLLFFBQVE7QUFDZixZQUFJQyxRQUFPO0FBQ1gsZUFBTyxPQUFPLEtBQUssSUFBSSxFQUFFLE9BQU8sU0FBVSxLQUFLLEtBQUs7QUFDbEQsY0FBSSxRQUFRRCxRQUFPLFVBQVUsS0FBSyxJQUFJO0FBQ3RDLGNBQUksS0FBSyxPQUFPLFlBQVksRUFBRTtBQUM5QixjQUFJLFNBQVMsT0FBTyxlQUFlQyxNQUFLLE9BQU8sS0FBS0EsTUFBSyxPQUFPLFFBQVEsRUFBRTtBQUMxRSxjQUFJLGFBQWEsT0FBTyxPQUFPLE9BQU8sUUFBUSxLQUFLO0FBQ25ELHdCQUFjLE9BQU8sTUFBTSxLQUFLO0FBQ2hDLGNBQUksT0FBTyxFQUFFLEtBQUtBLE1BQUssT0FBTyxLQUFLLE9BQU8sWUFBWSxJQUFJLEdBQUcsU0FBUyxLQUFLLEVBQUU7QUFDN0UsaUJBQU87QUFBQSxRQUNULEdBQUcsQ0FBQyxDQUFDO0FBQUEsTUFDUDtBQUVBLFVBQUksY0FBY0QsUUFBTyxVQUFVLE1BQU0sTUFBTSxLQUFLLE9BQU87QUFDM0QsVUFBSSxXQUFXLEtBQUssT0FBTyxZQUFZLE1BQU0sRUFBRSxNQUFNLEdBQUc7QUFFeEQsYUFBTyxlQUFlLFdBQVcsR0FBRyxNQUFNO0FBQUEsSUFDNUM7QUFPQSxTQUFLLFVBQVUsUUFBUSxTQUFVLFVBQVU7QUFDekMsVUFBSSxTQUFTLEtBQUssT0FBTyxNQUFNLFFBQVE7QUFFdkMsVUFBSSxLQUFLLFFBQVE7QUFDZixZQUFJQyxRQUFPO0FBQ1gsaUJBQVMsT0FBTyxLQUFLLE1BQU0sRUFBRSxPQUFPLFNBQVUsS0FBSyxLQUFLO0FBQ3RELGNBQUksUUFBUSxPQUFPO0FBRW5CLGNBQUksQ0FBQyxNQUFNLElBQUk7QUFDYixrQkFBTSxJQUFJLE1BQU0sc0lBQXNJO0FBQUEsVUFDeEo7QUFDQSxjQUFJLFdBQVcsT0FBTyxpQkFBaUIsTUFBTSxLQUFLQSxNQUFLLE9BQU8sUUFBUSxPQUFPLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQztBQUVsRyxjQUFJLFlBQVksU0FBUyxPQUFPLE1BQU0sT0FBTyxPQUFPLE1BQU07QUFDMUQsdUJBQWEsU0FBUyxNQUFNLE1BQU07QUFDbEMsY0FBSSxPQUFPQSxNQUFLLE9BQU8sTUFBTSxTQUFTO0FBQ3RDLGlCQUFPO0FBQUEsUUFDVCxHQUFHLENBQUMsQ0FBQztBQUFBLE1BQ1A7QUFFQSxhQUFPO0FBQUEsSUFFVDtBQVNBLFNBQUssVUFBVSxTQUFTLFNBQVUsTUFBTTtBQUN0QyxVQUFJLFVBQVUsTUFDVixVQUNBLFVBQ0E7QUFFSixhQUFPLFFBQVEsUUFBUSxJQUFJO0FBRTNCLFVBQUksS0FBSyxLQUFLLE9BQU8sS0FBSztBQUt4QixZQUFJO0FBQ0Ysa0JBQVFILElBQUcsU0FBU0EsSUFBRyxhQUFhLEtBQUssSUFBSSxDQUFDO0FBQzlDLGNBQUksTUFBTSxPQUFPLEdBQUc7QUFDbEIsdUJBQVcsS0FBSztBQUNoQixzQkFBVTtBQUFBLFVBQ1o7QUFBQSxRQUNGLFNBQ08sSUFBUDtBQUFBLFFBSUE7QUFBQSxNQUNGO0FBRUEsVUFBSSxXQUFXLE1BQU07QUFLbkIsWUFBSTtBQUNGLGNBQUksT0FBT0EsSUFBRyxTQUFTQSxJQUFHLGFBQWEsSUFBSSxDQUFDO0FBQzVDLG9CQUFVLEtBQUssWUFBWTtBQUFBLFFBQzdCLFNBQ08sSUFBUDtBQUNFLGlCQUFPO0FBQUEsUUFDVDtBQUFBLE1BQ0Y7QUFFQSxhQUFPLFNBQVM7QUFJZCxZQUFJO0FBQ0Ysa0JBQVFBLElBQUcsU0FBU0EsSUFBRyxhQUFhLFdBQVdDLE1BQUssS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDMUUsb0JBQVUsTUFBTSxZQUFZO0FBQUEsUUFDOUIsU0FDTyxJQUFQO0FBQ0UscUJBQVc7QUFDWCxpQkFBT0EsTUFBSyxRQUFRLElBQUk7QUFFeEIsY0FBSSxhQUFhLE1BQU07QUFLckIsZ0JBQUk7QUFDRixzQkFBUUQsSUFBRyxTQUFTQSxJQUFHLGFBQWEsV0FBV0MsTUFBSyxLQUFLLEtBQUssS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzlFLGtCQUFJLE1BQU0sWUFBWSxHQUFHO0FBQ3ZCLDJCQUFXO0FBQUEsY0FDYjtBQUFBLFlBQ0YsU0FDT0ksS0FBUDtBQUFBLFlBSUE7QUFFQSxzQkFBVTtBQUFBLFVBQ1o7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQU9BLFdBQUssT0FBTyxZQUFZLEtBQUs7QUFFN0IsYUFBTztBQUFBLElBQ1Q7QUFBQTtBQUFBOzs7QUNoVUE7QUFBQTtBQU9BLFFBQUksT0FBTyxRQUFRO0FBQW5CLFFBQ0ksU0FBUyxpQkFBb0I7QUFFakMsUUFBSSxVQUFVLFFBQVEsVUFBVSxTQUFTQyxTQUFTLFNBQVM7QUFDekQsYUFBTyxLQUFLLE1BQU0sT0FBTztBQUV6QixnQkFBZ0IsV0FBVyxDQUFDO0FBQzVCLFdBQUssT0FBVztBQUNoQixXQUFLLFdBQVc7QUFDaEIsV0FBSyxRQUFXLFFBQVEsU0FBUztBQUFBLElBQ25DO0FBR0EsU0FBSyxTQUFTLFNBQVMsTUFBTTtBQU03QixZQUFRLFVBQVUsV0FBVyxXQUFZO0FBQ3ZDLGFBQU8sS0FBSztBQUFBLElBQ2Q7QUFBQTtBQUFBOzs7QUM1QkE7QUFBQSw2Q0FBQUMsU0FBQTtBQU9BLFFBQUlDLFVBQVM7QUFBYixRQUNJQyxZQUFXLG1CQUE0QjtBQUszQyxRQUFJQyxTQUFRSCxRQUFPLFVBQVUsSUFBSUUsVUFBUztBQUsxQyxJQUFBQyxPQUFNLFVBQVUsa0JBQTJCO0FBSzNDLElBQUFBLE9BQU0saUJBQWlCLFFBQVEsV0FBWTtBQUN2QyxhQUFPLGVBQStCO0FBQUEsSUFDMUMsQ0FBQztBQUVELElBQUFBLE9BQU0saUJBQWlCLE9BQU8sV0FBWTtBQUN0QyxhQUFPLGNBQThCO0FBQUEsSUFDekMsQ0FBQztBQUVELElBQUFBLE9BQU0saUJBQWlCLFFBQVEsV0FBWTtBQUN2QyxhQUFPLGVBQStCO0FBQUEsSUFDMUMsQ0FBQztBQUVELElBQUFBLE9BQU0saUJBQWlCLFdBQVcsV0FBWTtBQUMxQyxhQUFPLGtCQUFrQztBQUFBLElBQzdDLENBQUM7QUFFRCxJQUFBQSxPQUFNLGlCQUFpQixVQUFVLFdBQVk7QUFDekMsYUFBTyxpQkFBaUM7QUFBQSxJQUM1QyxDQUFDO0FBS0QsSUFBQUEsT0FBTSxNQUFnQkYsUUFBTztBQUM3QixJQUFBRSxPQUFNLE9BQWdCRixRQUFPO0FBQzdCLElBQUFFLE9BQU0sWUFBZ0JGLFFBQU87QUFDN0IsSUFBQUUsT0FBTSxnQkFBZ0JGLFFBQU87QUFDN0IsSUFBQUUsT0FBTSxVQUFnQjtBQUN0QixJQUFBQSxPQUFNLFdBQWdCRDtBQUFBO0FBQUE7Ozs7Ozs7O0FDekN0QixhQUFnQixlQUFlLE9BQVU7QUFDdkMsVUFBSSxVQUFVLFFBQVEsVUFBVSxRQUFXO0FBQ3pDLGVBQU87aUJBQ0UsT0FBTyxVQUFVLFlBQVksaUJBQWlCLFFBQVE7QUFDL0QsZUFBTzs7QUFFVCxhQUFPLEtBQUssVUFBVSxLQUFLO0lBQzdCO0FBUEEsWUFBQSxpQkFBQTtBQWVBLGFBQWdCLG9CQUNkLHNCQUEwQztBQUUxQyxVQUFJLENBQUMsT0FBTyxLQUFLLG9CQUFvQixFQUFFLFFBQVE7QUFDN0MsZUFBTyxDQUFBOztBQUdULGFBQU87UUFDTCxPQUFPLHFCQUFxQjtRQUM1QixNQUFNLHFCQUFxQjtRQUMzQixNQUFNLHFCQUFxQjtRQUMzQixTQUFTLHFCQUFxQjtRQUM5QixLQUFLLHFCQUFxQjtRQUMxQixXQUFXLHFCQUFxQjs7SUFFcEM7QUFmQSxZQUFBLHNCQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCQSxRQUFBLEtBQUEsYUFBQSxRQUFBLEtBQUE7QUFDQSxRQUFBLFVBQUE7QUFxQkEsYUFBZ0IsYUFDZCxTQUNBLFlBQ0EsU0FBWTtBQUVaLFlBQU0sTUFBTSxJQUFJLFFBQVEsU0FBUyxZQUFZLE9BQU87QUFDcEQsY0FBUSxPQUFPLE1BQU0sSUFBSSxTQUFRLElBQUssR0FBRyxHQUFHO0lBQzlDO0FBUEEsWUFBQSxlQUFBO0FBU0EsYUFBZ0IsTUFBTSxNQUFjLFVBQVUsSUFBRTtBQUM5QyxtQkFBYSxNQUFNLENBQUEsR0FBSSxPQUFPO0lBQ2hDO0FBRkEsWUFBQSxRQUFBO0FBSUEsUUFBTSxhQUFhO0FBRW5CLFFBQU0sVUFBTixNQUFhO01BS1gsWUFBWSxTQUFpQixZQUErQixTQUFlO0FBQ3pFLFlBQUksQ0FBQyxTQUFTO0FBQ1osb0JBQVU7O0FBR1osYUFBSyxVQUFVO0FBQ2YsYUFBSyxhQUFhO0FBQ2xCLGFBQUssVUFBVTtNQUNqQjtNQUVBLFdBQVE7QUFDTixZQUFJLFNBQVMsYUFBYSxLQUFLO0FBRS9CLFlBQUksS0FBSyxjQUFjLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRSxTQUFTLEdBQUc7QUFDOUQsb0JBQVU7QUFDVixjQUFJLFFBQVE7QUFDWixxQkFBVyxPQUFPLEtBQUssWUFBWTtBQUNqQyxnQkFBSSxLQUFLLFdBQVcsZUFBZSxHQUFHLEdBQUc7QUFDdkMsb0JBQU0sTUFBTSxLQUFLLFdBQVc7QUFDNUIsa0JBQUksS0FBSztBQUNQLG9CQUFJLE9BQU87QUFDVCwwQkFBUTt1QkFDSDtBQUNMLDRCQUFVOztBQUdaLDBCQUFVLEdBQUcsT0FBTyxlQUFlLEdBQUc7Ozs7O0FBTTlDLGtCQUFVLEdBQUcsYUFBYSxXQUFXLEtBQUssT0FBTztBQUNqRCxlQUFPO01BQ1Q7O0FBR0YsYUFBUyxXQUFXLEdBQU07QUFDeEIsYUFBTyxRQUFBLGVBQWUsQ0FBQyxFQUNwQixRQUFRLE1BQU0sS0FBSyxFQUNuQixRQUFRLE9BQU8sS0FBSyxFQUNwQixRQUFRLE9BQU8sS0FBSztJQUN6QjtBQUVBLGFBQVMsZUFBZSxHQUFNO0FBQzVCLGFBQU8sUUFBQSxlQUFlLENBQUMsRUFDcEIsUUFBUSxNQUFNLEtBQUssRUFDbkIsUUFBUSxPQUFPLEtBQUssRUFDcEIsUUFBUSxPQUFPLEtBQUssRUFDcEIsUUFBUSxNQUFNLEtBQUssRUFDbkIsUUFBUSxNQUFNLEtBQUs7SUFDeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEZBLFFBQUFFLE1BQUEsYUFBQSxRQUFBLEtBQUE7QUFDQSxRQUFBLEtBQUEsYUFBQSxRQUFBLEtBQUE7QUFDQSxRQUFBLFVBQUE7QUFFQSxhQUFnQixhQUFhLFNBQWlCLFNBQVk7QUFDeEQsWUFBTSxXQUFXLFFBQVEsSUFBSSxVQUFVO0FBQ3ZDLFVBQUksQ0FBQyxVQUFVO0FBQ2IsY0FBTSxJQUFJLE1BQ1Isd0RBQXdELFNBQVM7O0FBR3JFLFVBQUksQ0FBQ0EsSUFBRyxXQUFXLFFBQVEsR0FBRztBQUM1QixjQUFNLElBQUksTUFBTSx5QkFBeUIsVUFBVTs7QUFHckQsTUFBQUEsSUFBRyxlQUFlLFVBQVUsR0FBRyxRQUFBLGVBQWUsT0FBTyxJQUFJLEdBQUcsT0FBTztRQUNqRSxVQUFVO09BQ1g7SUFDSDtBQWRBLFlBQUEsZUFBQTs7Ozs7QUNUQTtBQUFBO0FBQUE7QUFFQSxXQUFPLGVBQWUsU0FBUyxjQUFjO0FBQUEsTUFDM0MsT0FBTztBQUFBLElBQ1QsQ0FBQztBQUNELFlBQVEsVUFBVTtBQUVsQixRQUFJLFVBQVUsdUJBQXVCLFFBQVEsU0FBUztBQUV0RCxhQUFTLHVCQUF1QixLQUFLO0FBQUUsYUFBTyxPQUFPLElBQUksYUFBYSxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQUEsSUFBRztBQUU5RixRQUFNLFlBQVksSUFBSSxXQUFXLEdBQUc7QUFFcEMsUUFBSSxVQUFVLFVBQVU7QUFFeEIsYUFBUyxNQUFNO0FBQ2IsVUFBSSxVQUFVLFVBQVUsU0FBUyxJQUFJO0FBQ25DLGdCQUFRLFFBQVEsZUFBZSxTQUFTO0FBRXhDLGtCQUFVO0FBQUEsTUFDWjtBQUVBLGFBQU8sVUFBVSxNQUFNLFNBQVMsV0FBVyxFQUFFO0FBQUEsSUFDL0M7QUFBQTtBQUFBOzs7QUN2QkE7QUFBQTtBQUFBO0FBRUEsV0FBTyxlQUFlLFNBQVMsY0FBYztBQUFBLE1BQzNDLE9BQU87QUFBQSxJQUNULENBQUM7QUFDRCxZQUFRLFVBQVU7QUFDbEIsUUFBSUMsWUFBVztBQUNmLFlBQVEsVUFBVUE7QUFBQTtBQUFBOzs7QUNQbEI7QUFBQTtBQUFBO0FBRUEsV0FBTyxlQUFlLFNBQVMsY0FBYztBQUFBLE1BQzNDLE9BQU87QUFBQSxJQUNULENBQUM7QUFDRCxZQUFRLFVBQVU7QUFFbEIsUUFBSSxTQUFTLHVCQUF1QixlQUFxQjtBQUV6RCxhQUFTLHVCQUF1QixLQUFLO0FBQUUsYUFBTyxPQUFPLElBQUksYUFBYSxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQUEsSUFBRztBQUU5RixhQUFTLFNBQVMsTUFBTTtBQUN0QixhQUFPLE9BQU8sU0FBUyxZQUFZLE9BQU8sUUFBUSxLQUFLLElBQUk7QUFBQSxJQUM3RDtBQUVBLFFBQUlDLFlBQVc7QUFDZixZQUFRLFVBQVVBO0FBQUE7QUFBQTs7O0FDaEJsQjtBQUFBO0FBQUE7QUFFQSxXQUFPLGVBQWUsU0FBUyxjQUFjO0FBQUEsTUFDM0MsT0FBTztBQUFBLElBQ1QsQ0FBQztBQUNELFlBQVEsVUFBVTtBQUVsQixRQUFJLFlBQVksdUJBQXVCLGtCQUF3QjtBQUUvRCxhQUFTLHVCQUF1QixLQUFLO0FBQUUsYUFBTyxPQUFPLElBQUksYUFBYSxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQUEsSUFBRztBQU05RixRQUFNLFlBQVksQ0FBQztBQUVuQixhQUFTLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxHQUFHO0FBQzVCLGdCQUFVLE1BQU0sSUFBSSxLQUFPLFNBQVMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUEsSUFDbkQ7QUFFQSxhQUFTLFVBQVUsS0FBSyxTQUFTLEdBQUc7QUFHbEMsWUFBTSxRQUFRLFVBQVUsSUFBSSxTQUFTLE1BQU0sVUFBVSxJQUFJLFNBQVMsTUFBTSxVQUFVLElBQUksU0FBUyxNQUFNLFVBQVUsSUFBSSxTQUFTLE1BQU0sTUFBTSxVQUFVLElBQUksU0FBUyxNQUFNLFVBQVUsSUFBSSxTQUFTLE1BQU0sTUFBTSxVQUFVLElBQUksU0FBUyxNQUFNLFVBQVUsSUFBSSxTQUFTLE1BQU0sTUFBTSxVQUFVLElBQUksU0FBUyxNQUFNLFVBQVUsSUFBSSxTQUFTLE1BQU0sTUFBTSxVQUFVLElBQUksU0FBUyxPQUFPLFVBQVUsSUFBSSxTQUFTLE9BQU8sVUFBVSxJQUFJLFNBQVMsT0FBTyxVQUFVLElBQUksU0FBUyxPQUFPLFVBQVUsSUFBSSxTQUFTLE9BQU8sVUFBVSxJQUFJLFNBQVMsTUFBTSxZQUFZO0FBTXZnQixVQUFJLEVBQUUsR0FBRyxVQUFVLFNBQVMsSUFBSSxHQUFHO0FBQ2pDLGNBQU0sVUFBVSw2QkFBNkI7QUFBQSxNQUMvQztBQUVBLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSUMsWUFBVztBQUNmLFlBQVEsVUFBVUE7QUFBQTtBQUFBOzs7QUN0Q2xCO0FBQUE7QUFBQTtBQUVBLFdBQU8sZUFBZSxTQUFTLGNBQWM7QUFBQSxNQUMzQyxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsWUFBUSxVQUFVO0FBRWxCLFFBQUksT0FBTyx1QkFBdUIsYUFBbUI7QUFFckQsUUFBSSxhQUFhLHVCQUF1QixtQkFBeUI7QUFFakUsYUFBUyx1QkFBdUIsS0FBSztBQUFFLGFBQU8sT0FBTyxJQUFJLGFBQWEsTUFBTSxFQUFFLFNBQVMsSUFBSTtBQUFBLElBQUc7QUFNOUYsUUFBSTtBQUVKLFFBQUk7QUFHSixRQUFJLGFBQWE7QUFDakIsUUFBSSxhQUFhO0FBRWpCLGFBQVMsR0FBRyxTQUFTLEtBQUssUUFBUTtBQUNoQyxVQUFJLElBQUksT0FBTyxVQUFVO0FBQ3pCLFlBQU0sSUFBSSxPQUFPLElBQUksTUFBTSxFQUFFO0FBQzdCLGdCQUFVLFdBQVcsQ0FBQztBQUN0QixVQUFJLE9BQU8sUUFBUSxRQUFRO0FBQzNCLFVBQUksV0FBVyxRQUFRLGFBQWEsU0FBWSxRQUFRLFdBQVc7QUFJbkUsVUFBSSxRQUFRLFFBQVEsWUFBWSxNQUFNO0FBQ3BDLGNBQU0sWUFBWSxRQUFRLFdBQVcsUUFBUSxPQUFPLEtBQUssU0FBUztBQUVsRSxZQUFJLFFBQVEsTUFBTTtBQUVoQixpQkFBTyxVQUFVLENBQUMsVUFBVSxLQUFLLEdBQU0sVUFBVSxJQUFJLFVBQVUsSUFBSSxVQUFVLElBQUksVUFBVSxJQUFJLFVBQVUsRUFBRTtBQUFBLFFBQzdHO0FBRUEsWUFBSSxZQUFZLE1BQU07QUFFcEIscUJBQVcsYUFBYSxVQUFVLE1BQU0sSUFBSSxVQUFVLE1BQU07QUFBQSxRQUM5RDtBQUFBLE1BQ0Y7QUFNQSxVQUFJLFFBQVEsUUFBUSxVQUFVLFNBQVksUUFBUSxRQUFRLEtBQUssSUFBSTtBQUduRSxVQUFJLFFBQVEsUUFBUSxVQUFVLFNBQVksUUFBUSxRQUFRLGFBQWE7QUFFdkUsWUFBTSxLQUFLLFFBQVEsY0FBYyxRQUFRLGNBQWM7QUFFdkQsVUFBSSxLQUFLLEtBQUssUUFBUSxhQUFhLFFBQVc7QUFDNUMsbUJBQVcsV0FBVyxJQUFJO0FBQUEsTUFDNUI7QUFJQSxXQUFLLEtBQUssS0FBSyxRQUFRLGVBQWUsUUFBUSxVQUFVLFFBQVc7QUFDakUsZ0JBQVE7QUFBQSxNQUNWO0FBR0EsVUFBSSxTQUFTLEtBQU87QUFDbEIsY0FBTSxJQUFJLE1BQU0saURBQWlEO0FBQUEsTUFDbkU7QUFFQSxtQkFBYTtBQUNiLG1CQUFhO0FBQ2Isa0JBQVk7QUFFWixlQUFTO0FBRVQsWUFBTSxPQUFPLFFBQVEsYUFBYSxNQUFRLFNBQVM7QUFDbkQsUUFBRSxPQUFPLE9BQU8sS0FBSztBQUNyQixRQUFFLE9BQU8sT0FBTyxLQUFLO0FBQ3JCLFFBQUUsT0FBTyxPQUFPLElBQUk7QUFDcEIsUUFBRSxPQUFPLEtBQUs7QUFFZCxZQUFNLE1BQU0sUUFBUSxhQUFjLE1BQVE7QUFDMUMsUUFBRSxPQUFPLFFBQVEsSUFBSTtBQUNyQixRQUFFLE9BQU8sTUFBTTtBQUVmLFFBQUUsT0FBTyxRQUFRLEtBQUssS0FBTTtBQUU1QixRQUFFLE9BQU8sUUFBUSxLQUFLO0FBRXRCLFFBQUUsT0FBTyxhQUFhLElBQUk7QUFFMUIsUUFBRSxPQUFPLFdBQVc7QUFFcEIsZUFBUyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUMxQixVQUFFLElBQUksS0FBSyxLQUFLO0FBQUEsTUFDbEI7QUFFQSxhQUFPLFFBQVEsR0FBRyxXQUFXLFNBQVMsQ0FBQztBQUFBLElBQ3pDO0FBRUEsUUFBSUMsWUFBVztBQUNmLFlBQVEsVUFBVUE7QUFBQTtBQUFBOzs7QUMxR2xCO0FBQUE7QUFBQTtBQUVBLFdBQU8sZUFBZSxTQUFTLGNBQWM7QUFBQSxNQUMzQyxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsWUFBUSxVQUFVO0FBRWxCLFFBQUksWUFBWSx1QkFBdUIsa0JBQXdCO0FBRS9ELGFBQVMsdUJBQXVCLEtBQUs7QUFBRSxhQUFPLE9BQU8sSUFBSSxhQUFhLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFBQSxJQUFHO0FBRTlGLGFBQVMsTUFBTSxNQUFNO0FBQ25CLFVBQUksRUFBRSxHQUFHLFVBQVUsU0FBUyxJQUFJLEdBQUc7QUFDakMsY0FBTSxVQUFVLGNBQWM7QUFBQSxNQUNoQztBQUVBLFVBQUk7QUFDSixZQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUU7QUFFN0IsVUFBSSxNQUFNLElBQUksU0FBUyxLQUFLLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPO0FBQ2xELFVBQUksS0FBSyxNQUFNLEtBQUs7QUFDcEIsVUFBSSxLQUFLLE1BQU0sSUFBSTtBQUNuQixVQUFJLEtBQUssSUFBSTtBQUViLFVBQUksTUFBTSxJQUFJLFNBQVMsS0FBSyxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTztBQUNuRCxVQUFJLEtBQUssSUFBSTtBQUViLFVBQUksTUFBTSxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTztBQUNwRCxVQUFJLEtBQUssSUFBSTtBQUViLFVBQUksTUFBTSxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTztBQUNwRCxVQUFJLEtBQUssSUFBSTtBQUdiLFVBQUksT0FBTyxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxnQkFBZ0I7QUFDbkUsVUFBSSxNQUFNLElBQUksYUFBYztBQUM1QixVQUFJLE1BQU0sTUFBTSxLQUFLO0FBQ3JCLFVBQUksTUFBTSxNQUFNLEtBQUs7QUFDckIsVUFBSSxNQUFNLE1BQU0sSUFBSTtBQUNwQixVQUFJLE1BQU0sSUFBSTtBQUNkLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSUMsWUFBVztBQUNmLFlBQVEsVUFBVUE7QUFBQTtBQUFBOzs7QUM1Q2xCO0FBQUE7QUFBQTtBQUVBLFdBQU8sZUFBZSxTQUFTLGNBQWM7QUFBQSxNQUMzQyxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsWUFBUSxVQUFVQztBQUNsQixZQUFRLE1BQU0sUUFBUSxNQUFNO0FBRTVCLFFBQUksYUFBYSx1QkFBdUIsbUJBQXlCO0FBRWpFLFFBQUksU0FBUyx1QkFBdUIsZUFBcUI7QUFFekQsYUFBUyx1QkFBdUIsS0FBSztBQUFFLGFBQU8sT0FBTyxJQUFJLGFBQWEsTUFBTSxFQUFFLFNBQVMsSUFBSTtBQUFBLElBQUc7QUFFOUYsYUFBUyxjQUFjQyxNQUFLO0FBQzFCLE1BQUFBLE9BQU0sU0FBUyxtQkFBbUJBLElBQUcsQ0FBQztBQUV0QyxZQUFNLFFBQVEsQ0FBQztBQUVmLGVBQVMsSUFBSSxHQUFHLElBQUlBLEtBQUksUUFBUSxFQUFFLEdBQUc7QUFDbkMsY0FBTSxLQUFLQSxLQUFJLFdBQVcsQ0FBQyxDQUFDO0FBQUEsTUFDOUI7QUFFQSxhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQU0sTUFBTTtBQUNaLFlBQVEsTUFBTTtBQUNkLFFBQU1DLE9BQU07QUFDWixZQUFRLE1BQU1BO0FBRWQsYUFBU0YsVUFBUyxNQUFNLFNBQVMsVUFBVTtBQUN6QyxlQUFTLGFBQWEsT0FBTyxXQUFXLEtBQUssUUFBUTtBQUNuRCxZQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzdCLGtCQUFRLGNBQWMsS0FBSztBQUFBLFFBQzdCO0FBRUEsWUFBSSxPQUFPLGNBQWMsVUFBVTtBQUNqQyx1QkFBYSxHQUFHLE9BQU8sU0FBUyxTQUFTO0FBQUEsUUFDM0M7QUFFQSxZQUFJLFVBQVUsV0FBVyxJQUFJO0FBQzNCLGdCQUFNLFVBQVUsa0VBQWtFO0FBQUEsUUFDcEY7QUFLQSxZQUFJLFFBQVEsSUFBSSxXQUFXLEtBQUssTUFBTSxNQUFNO0FBQzVDLGNBQU0sSUFBSSxTQUFTO0FBQ25CLGNBQU0sSUFBSSxPQUFPLFVBQVUsTUFBTTtBQUNqQyxnQkFBUSxTQUFTLEtBQUs7QUFDdEIsY0FBTSxLQUFLLE1BQU0sS0FBSyxLQUFPO0FBQzdCLGNBQU0sS0FBSyxNQUFNLEtBQUssS0FBTztBQUU3QixZQUFJLEtBQUs7QUFDUCxtQkFBUyxVQUFVO0FBRW5CLG1CQUFTLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxHQUFHO0FBQzNCLGdCQUFJLFNBQVMsS0FBSyxNQUFNO0FBQUEsVUFDMUI7QUFFQSxpQkFBTztBQUFBLFFBQ1Q7QUFFQSxnQkFBUSxHQUFHLFdBQVcsU0FBUyxLQUFLO0FBQUEsTUFDdEM7QUFHQSxVQUFJO0FBQ0YscUJBQWEsT0FBTztBQUFBLE1BQ3RCLFNBQVMsS0FBUDtBQUFBLE1BQWE7QUFHZixtQkFBYSxNQUFNO0FBQ25CLG1CQUFhLE1BQU1FO0FBQ25CLGFBQU87QUFBQSxJQUNUO0FBQUE7QUFBQTs7O0FDN0VBO0FBQUE7QUFBQTtBQUVBLFdBQU8sZUFBZSxTQUFTLGNBQWM7QUFBQSxNQUMzQyxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsWUFBUSxVQUFVO0FBRWxCLFFBQUksVUFBVSx1QkFBdUIsUUFBUSxTQUFTO0FBRXRELGFBQVMsdUJBQXVCLEtBQUs7QUFBRSxhQUFPLE9BQU8sSUFBSSxhQUFhLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFBQSxJQUFHO0FBRTlGLGFBQVMsSUFBSSxPQUFPO0FBQ2xCLFVBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN4QixnQkFBUSxPQUFPLEtBQUssS0FBSztBQUFBLE1BQzNCLFdBQVcsT0FBTyxVQUFVLFVBQVU7QUFDcEMsZ0JBQVEsT0FBTyxLQUFLLE9BQU8sTUFBTTtBQUFBLE1BQ25DO0FBRUEsYUFBTyxRQUFRLFFBQVEsV0FBVyxLQUFLLEVBQUUsT0FBTyxLQUFLLEVBQUUsT0FBTztBQUFBLElBQ2hFO0FBRUEsUUFBSUMsWUFBVztBQUNmLFlBQVEsVUFBVUE7QUFBQTtBQUFBOzs7QUN0QmxCO0FBQUE7QUFBQTtBQUVBLFdBQU8sZUFBZSxTQUFTLGNBQWM7QUFBQSxNQUMzQyxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsWUFBUSxVQUFVO0FBRWxCLFFBQUksS0FBSyx1QkFBdUIsYUFBbUI7QUFFbkQsUUFBSSxNQUFNLHVCQUF1QixhQUFtQjtBQUVwRCxhQUFTLHVCQUF1QixLQUFLO0FBQUUsYUFBTyxPQUFPLElBQUksYUFBYSxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQUEsSUFBRztBQUU5RixRQUFNLE1BQU0sR0FBRyxHQUFHLFNBQVMsTUFBTSxJQUFNLElBQUksT0FBTztBQUNsRCxRQUFJQyxZQUFXO0FBQ2YsWUFBUSxVQUFVQTtBQUFBO0FBQUE7OztBQ2ZsQjtBQUFBO0FBQUE7QUFFQSxXQUFPLGVBQWUsU0FBUyxjQUFjO0FBQUEsTUFDM0MsT0FBTztBQUFBLElBQ1QsQ0FBQztBQUNELFlBQVEsVUFBVTtBQUVsQixRQUFJLE9BQU8sdUJBQXVCLGFBQW1CO0FBRXJELFFBQUksYUFBYSx1QkFBdUIsbUJBQXlCO0FBRWpFLGFBQVMsdUJBQXVCLEtBQUs7QUFBRSxhQUFPLE9BQU8sSUFBSSxhQUFhLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFBQSxJQUFHO0FBRTlGLGFBQVMsR0FBRyxTQUFTLEtBQUssUUFBUTtBQUNoQyxnQkFBVSxXQUFXLENBQUM7QUFFdEIsWUFBTSxPQUFPLFFBQVEsV0FBVyxRQUFRLE9BQU8sS0FBSyxTQUFTO0FBRzdELFdBQUssS0FBSyxLQUFLLEtBQUssS0FBTztBQUMzQixXQUFLLEtBQUssS0FBSyxLQUFLLEtBQU87QUFFM0IsVUFBSSxLQUFLO0FBQ1AsaUJBQVMsVUFBVTtBQUVuQixpQkFBUyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRztBQUMzQixjQUFJLFNBQVMsS0FBSyxLQUFLO0FBQUEsUUFDekI7QUFFQSxlQUFPO0FBQUEsTUFDVDtBQUVBLGNBQVEsR0FBRyxXQUFXLFNBQVMsSUFBSTtBQUFBLElBQ3JDO0FBRUEsUUFBSUMsWUFBVztBQUNmLFlBQVEsVUFBVUE7QUFBQTtBQUFBOzs7QUNwQ2xCO0FBQUE7QUFBQTtBQUVBLFdBQU8sZUFBZSxTQUFTLGNBQWM7QUFBQSxNQUMzQyxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsWUFBUSxVQUFVO0FBRWxCLFFBQUksVUFBVSx1QkFBdUIsUUFBUSxTQUFTO0FBRXRELGFBQVMsdUJBQXVCLEtBQUs7QUFBRSxhQUFPLE9BQU8sSUFBSSxhQUFhLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFBQSxJQUFHO0FBRTlGLGFBQVMsS0FBSyxPQUFPO0FBQ25CLFVBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN4QixnQkFBUSxPQUFPLEtBQUssS0FBSztBQUFBLE1BQzNCLFdBQVcsT0FBTyxVQUFVLFVBQVU7QUFDcEMsZ0JBQVEsT0FBTyxLQUFLLE9BQU8sTUFBTTtBQUFBLE1BQ25DO0FBRUEsYUFBTyxRQUFRLFFBQVEsV0FBVyxNQUFNLEVBQUUsT0FBTyxLQUFLLEVBQUUsT0FBTztBQUFBLElBQ2pFO0FBRUEsUUFBSUMsWUFBVztBQUNmLFlBQVEsVUFBVUE7QUFBQTtBQUFBOzs7QUN0QmxCO0FBQUE7QUFBQTtBQUVBLFdBQU8sZUFBZSxTQUFTLGNBQWM7QUFBQSxNQUMzQyxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQ0QsWUFBUSxVQUFVO0FBRWxCLFFBQUksS0FBSyx1QkFBdUIsYUFBbUI7QUFFbkQsUUFBSSxPQUFPLHVCQUF1QixjQUFvQjtBQUV0RCxhQUFTLHVCQUF1QixLQUFLO0FBQUUsYUFBTyxPQUFPLElBQUksYUFBYSxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQUEsSUFBRztBQUU5RixRQUFNLE1BQU0sR0FBRyxHQUFHLFNBQVMsTUFBTSxJQUFNLEtBQUssT0FBTztBQUNuRCxRQUFJQyxZQUFXO0FBQ2YsWUFBUSxVQUFVQTtBQUFBO0FBQUE7OztBQ2ZsQjtBQUFBO0FBQUE7QUFFQSxXQUFPLGVBQWUsU0FBUyxjQUFjO0FBQUEsTUFDM0MsT0FBTztBQUFBLElBQ1QsQ0FBQztBQUNELFlBQVEsVUFBVTtBQUNsQixRQUFJQyxZQUFXO0FBQ2YsWUFBUSxVQUFVQTtBQUFBO0FBQUE7OztBQ1BsQjtBQUFBO0FBQUE7QUFFQSxXQUFPLGVBQWUsU0FBUyxjQUFjO0FBQUEsTUFDM0MsT0FBTztBQUFBLElBQ1QsQ0FBQztBQUNELFlBQVEsVUFBVTtBQUVsQixRQUFJLFlBQVksdUJBQXVCLGtCQUF3QjtBQUUvRCxhQUFTLHVCQUF1QixLQUFLO0FBQUUsYUFBTyxPQUFPLElBQUksYUFBYSxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQUEsSUFBRztBQUU5RixhQUFTLFFBQVEsTUFBTTtBQUNyQixVQUFJLEVBQUUsR0FBRyxVQUFVLFNBQVMsSUFBSSxHQUFHO0FBQ2pDLGNBQU0sVUFBVSxjQUFjO0FBQUEsTUFDaEM7QUFFQSxhQUFPLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFBQSxJQUN4QztBQUVBLFFBQUlDLFlBQVc7QUFDZixZQUFRLFVBQVVBO0FBQUE7QUFBQTs7O0FDcEJsQjtBQUFBO0FBQUE7QUFFQSxXQUFPLGVBQWUsU0FBUyxjQUFjO0FBQUEsTUFDM0MsT0FBTztBQUFBLElBQ1QsQ0FBQztBQUNELFdBQU8sZUFBZSxTQUFTLE1BQU07QUFBQSxNQUNuQyxZQUFZO0FBQUEsTUFDWixLQUFLLFdBQVk7QUFDZixlQUFPLEdBQUc7QUFBQSxNQUNaO0FBQUEsSUFDRixDQUFDO0FBQ0QsV0FBTyxlQUFlLFNBQVMsTUFBTTtBQUFBLE1BQ25DLFlBQVk7QUFBQSxNQUNaLEtBQUssV0FBWTtBQUNmLGVBQU8sSUFBSTtBQUFBLE1BQ2I7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPLGVBQWUsU0FBUyxNQUFNO0FBQUEsTUFDbkMsWUFBWTtBQUFBLE1BQ1osS0FBSyxXQUFZO0FBQ2YsZUFBTyxJQUFJO0FBQUEsTUFDYjtBQUFBLElBQ0YsQ0FBQztBQUNELFdBQU8sZUFBZSxTQUFTLE1BQU07QUFBQSxNQUNuQyxZQUFZO0FBQUEsTUFDWixLQUFLLFdBQVk7QUFDZixlQUFPLElBQUk7QUFBQSxNQUNiO0FBQUEsSUFDRixDQUFDO0FBQ0QsV0FBTyxlQUFlLFNBQVMsT0FBTztBQUFBLE1BQ3BDLFlBQVk7QUFBQSxNQUNaLEtBQUssV0FBWTtBQUNmLGVBQU8sS0FBSztBQUFBLE1BQ2Q7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPLGVBQWUsU0FBUyxXQUFXO0FBQUEsTUFDeEMsWUFBWTtBQUFBLE1BQ1osS0FBSyxXQUFZO0FBQ2YsZUFBTyxTQUFTO0FBQUEsTUFDbEI7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPLGVBQWUsU0FBUyxZQUFZO0FBQUEsTUFDekMsWUFBWTtBQUFBLE1BQ1osS0FBSyxXQUFZO0FBQ2YsZUFBTyxVQUFVO0FBQUEsTUFDbkI7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPLGVBQWUsU0FBUyxhQUFhO0FBQUEsTUFDMUMsWUFBWTtBQUFBLE1BQ1osS0FBSyxXQUFZO0FBQ2YsZUFBTyxXQUFXO0FBQUEsTUFDcEI7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPLGVBQWUsU0FBUyxTQUFTO0FBQUEsTUFDdEMsWUFBWTtBQUFBLE1BQ1osS0FBSyxXQUFZO0FBQ2YsZUFBTyxPQUFPO0FBQUEsTUFDaEI7QUFBQSxJQUNGLENBQUM7QUFFRCxRQUFJLEtBQUssdUJBQXVCLFlBQWtCO0FBRWxELFFBQUksTUFBTSx1QkFBdUIsWUFBa0I7QUFFbkQsUUFBSSxNQUFNLHVCQUF1QixZQUFrQjtBQUVuRCxRQUFJLE1BQU0sdUJBQXVCLFlBQWtCO0FBRW5ELFFBQUksT0FBTyx1QkFBdUIsYUFBbUI7QUFFckQsUUFBSSxXQUFXLHVCQUF1QixpQkFBdUI7QUFFN0QsUUFBSSxZQUFZLHVCQUF1QixrQkFBd0I7QUFFL0QsUUFBSSxhQUFhLHVCQUF1QixtQkFBeUI7QUFFakUsUUFBSSxTQUFTLHVCQUF1QixlQUFxQjtBQUV6RCxhQUFTLHVCQUF1QixLQUFLO0FBQUUsYUFBTyxPQUFPLElBQUksYUFBYSxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQUEsSUFBRztBQUFBO0FBQUE7Ozs7Ozs7O0FDOUU5RixhQUFnQixZQUFZLFFBQVc7QUFDckMsWUFBTSxXQUFXLE9BQU8sYUFBYTtBQUVyQyxVQUFJLFlBQVksTUFBTSxHQUFHO0FBQ3ZCLGVBQU87O0FBR1QsWUFBTSxZQUFZLE1BQUs7QUFDckIsWUFBSSxVQUFVO0FBQ1osaUJBQU8sUUFBUSxJQUFJLGtCQUFrQixRQUFRLElBQUk7ZUFDNUM7QUFDTCxpQkFBTyxRQUFRLElBQUksaUJBQWlCLFFBQVEsSUFBSTs7TUFFcEQsR0FBRTtBQUVGLFVBQUksVUFBVTtBQUNaLGVBQU8sSUFBSSxJQUFJLFFBQVE7YUFDbEI7QUFDTCxlQUFPOztJQUVYO0FBcEJBLFlBQUEsY0FBQTtBQXNCQSxhQUFnQixZQUFZLFFBQVc7QUFDckMsVUFBSSxDQUFDLE9BQU8sVUFBVTtBQUNwQixlQUFPOztBQUdULFlBQU0sVUFBVSxRQUFRLElBQUksZUFBZSxRQUFRLElBQUksZUFBZTtBQUN0RSxVQUFJLENBQUMsU0FBUztBQUNaLGVBQU87O0FBSVQsVUFBSTtBQUNKLFVBQUksT0FBTyxNQUFNO0FBQ2Ysa0JBQVUsT0FBTyxPQUFPLElBQUk7aUJBQ25CLE9BQU8sYUFBYSxTQUFTO0FBQ3RDLGtCQUFVO2lCQUNELE9BQU8sYUFBYSxVQUFVO0FBQ3ZDLGtCQUFVOztBQUlaLFlBQU0sZ0JBQWdCLENBQUMsT0FBTyxTQUFTLFlBQVcsQ0FBRTtBQUNwRCxVQUFJLE9BQU8sWUFBWSxVQUFVO0FBQy9CLHNCQUFjLEtBQUssR0FBRyxjQUFjLE1BQU0sU0FBUzs7QUFJckQsaUJBQVcsb0JBQW9CLFFBQzVCLE1BQU0sR0FBRyxFQUNULElBQUksT0FBSyxFQUFFLEtBQUksRUFBRyxZQUFXLENBQUUsRUFDL0IsT0FBTyxPQUFLLENBQUMsR0FBRztBQUNqQixZQUFJLGNBQWMsS0FBSyxPQUFLLE1BQU0sZ0JBQWdCLEdBQUc7QUFDbkQsaUJBQU87OztBQUlYLGFBQU87SUFDVDtBQXJDQSxZQUFBLGNBQUE7Ozs7O0FDdEJBO0FBQUE7QUFBQTtBQUVBLFFBQUksTUFBTSxRQUFRO0FBQ2xCLFFBQUksTUFBTSxRQUFRO0FBQ2xCLFFBQUksT0FBTyxRQUFRO0FBQ25CLFFBQUksUUFBUSxRQUFRO0FBQ3BCLFFBQUksU0FBUyxRQUFRO0FBQ3JCLFFBQUksU0FBUyxRQUFRO0FBQ3JCLFFBQUksT0FBTyxRQUFRO0FBR25CLFlBQVEsZUFBZTtBQUN2QixZQUFRLGdCQUFnQjtBQUN4QixZQUFRLGdCQUFnQjtBQUN4QixZQUFRLGlCQUFpQjtBQUd6QixhQUFTLGFBQWEsU0FBUztBQUM3QixVQUFJLFFBQVEsSUFBSSxlQUFlLE9BQU87QUFDdEMsWUFBTSxVQUFVLEtBQUs7QUFDckIsYUFBTztBQUFBLElBQ1Q7QUFFQSxhQUFTLGNBQWMsU0FBUztBQUM5QixVQUFJLFFBQVEsSUFBSSxlQUFlLE9BQU87QUFDdEMsWUFBTSxVQUFVLEtBQUs7QUFDckIsWUFBTSxlQUFlO0FBQ3JCLFlBQU0sY0FBYztBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUVBLGFBQVMsY0FBYyxTQUFTO0FBQzlCLFVBQUksUUFBUSxJQUFJLGVBQWUsT0FBTztBQUN0QyxZQUFNLFVBQVUsTUFBTTtBQUN0QixhQUFPO0FBQUEsSUFDVDtBQUVBLGFBQVMsZUFBZSxTQUFTO0FBQy9CLFVBQUksUUFBUSxJQUFJLGVBQWUsT0FBTztBQUN0QyxZQUFNLFVBQVUsTUFBTTtBQUN0QixZQUFNLGVBQWU7QUFDckIsWUFBTSxjQUFjO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBR0EsYUFBUyxlQUFlLFNBQVM7QUFDL0IsVUFBSUMsUUFBTztBQUNYLE1BQUFBLE1BQUssVUFBVSxXQUFXLENBQUM7QUFDM0IsTUFBQUEsTUFBSyxlQUFlQSxNQUFLLFFBQVEsU0FBUyxDQUFDO0FBQzNDLE1BQUFBLE1BQUssYUFBYUEsTUFBSyxRQUFRLGNBQWMsS0FBSyxNQUFNO0FBQ3hELE1BQUFBLE1BQUssV0FBVyxDQUFDO0FBQ2pCLE1BQUFBLE1BQUssVUFBVSxDQUFDO0FBRWhCLE1BQUFBLE1BQUssR0FBRyxRQUFRLFNBQVMsT0FBTyxRQUFRLE1BQU0sTUFBTSxjQUFjO0FBQ2hFLFlBQUlDLFdBQVUsVUFBVSxNQUFNLE1BQU0sWUFBWTtBQUNoRCxpQkFBUyxJQUFJLEdBQUcsTUFBTUQsTUFBSyxTQUFTLFFBQVEsSUFBSSxLQUFLLEVBQUUsR0FBRztBQUN4RCxjQUFJLFVBQVVBLE1BQUssU0FBUztBQUM1QixjQUFJLFFBQVEsU0FBU0MsU0FBUSxRQUFRLFFBQVEsU0FBU0EsU0FBUSxNQUFNO0FBR2xFLFlBQUFELE1BQUssU0FBUyxPQUFPLEdBQUcsQ0FBQztBQUN6QixvQkFBUSxRQUFRLFNBQVMsTUFBTTtBQUMvQjtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQ0EsZUFBTyxRQUFRO0FBQ2YsUUFBQUEsTUFBSyxhQUFhLE1BQU07QUFBQSxNQUMxQixDQUFDO0FBQUEsSUFDSDtBQUNBLFNBQUssU0FBUyxnQkFBZ0IsT0FBTyxZQUFZO0FBRWpELG1CQUFlLFVBQVUsYUFBYSxTQUFTLFdBQVcsS0FBSyxNQUFNLE1BQU0sY0FBYztBQUN2RixVQUFJQSxRQUFPO0FBQ1gsVUFBSSxVQUFVLGFBQWEsRUFBQyxTQUFTLElBQUcsR0FBR0EsTUFBSyxTQUFTLFVBQVUsTUFBTSxNQUFNLFlBQVksQ0FBQztBQUU1RixVQUFJQSxNQUFLLFFBQVEsVUFBVSxLQUFLLFlBQVk7QUFFMUMsUUFBQUEsTUFBSyxTQUFTLEtBQUssT0FBTztBQUMxQjtBQUFBLE1BQ0Y7QUFHQSxNQUFBQSxNQUFLLGFBQWEsU0FBUyxTQUFTLFFBQVE7QUFDMUMsZUFBTyxHQUFHLFFBQVEsTUFBTTtBQUN4QixlQUFPLEdBQUcsU0FBUyxlQUFlO0FBQ2xDLGVBQU8sR0FBRyxlQUFlLGVBQWU7QUFDeEMsWUFBSSxTQUFTLE1BQU07QUFFbkIsaUJBQVMsU0FBUztBQUNoQixVQUFBQSxNQUFLLEtBQUssUUFBUSxRQUFRLE9BQU87QUFBQSxRQUNuQztBQUVBLGlCQUFTLGdCQUFnQixLQUFLO0FBQzVCLFVBQUFBLE1BQUssYUFBYSxNQUFNO0FBQ3hCLGlCQUFPLGVBQWUsUUFBUSxNQUFNO0FBQ3BDLGlCQUFPLGVBQWUsU0FBUyxlQUFlO0FBQzlDLGlCQUFPLGVBQWUsZUFBZSxlQUFlO0FBQUEsUUFDdEQ7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBRUEsbUJBQWUsVUFBVSxlQUFlLFNBQVMsYUFBYSxTQUFTLElBQUk7QUFDekUsVUFBSUEsUUFBTztBQUNYLFVBQUksY0FBYyxDQUFDO0FBQ25CLE1BQUFBLE1BQUssUUFBUSxLQUFLLFdBQVc7QUFFN0IsVUFBSSxpQkFBaUIsYUFBYSxDQUFDLEdBQUdBLE1BQUssY0FBYztBQUFBLFFBQ3ZELFFBQVE7QUFBQSxRQUNSLE1BQU0sUUFBUSxPQUFPLE1BQU0sUUFBUTtBQUFBLFFBQ25DLE9BQU87QUFBQSxRQUNQLFNBQVM7QUFBQSxVQUNQLE1BQU0sUUFBUSxPQUFPLE1BQU0sUUFBUTtBQUFBLFFBQ3JDO0FBQUEsTUFDRixDQUFDO0FBQ0QsVUFBSSxRQUFRLGNBQWM7QUFDeEIsdUJBQWUsZUFBZSxRQUFRO0FBQUEsTUFDeEM7QUFDQSxVQUFJLGVBQWUsV0FBVztBQUM1Qix1QkFBZSxVQUFVLGVBQWUsV0FBVyxDQUFDO0FBQ3BELHVCQUFlLFFBQVEseUJBQXlCLFdBQzVDLElBQUksT0FBTyxlQUFlLFNBQVMsRUFBRSxTQUFTLFFBQVE7QUFBQSxNQUM1RDtBQUVBLE1BQUFFLE9BQU0sd0JBQXdCO0FBQzlCLFVBQUksYUFBYUYsTUFBSyxRQUFRLGNBQWM7QUFDNUMsaUJBQVcsOEJBQThCO0FBQ3pDLGlCQUFXLEtBQUssWUFBWSxVQUFVO0FBQ3RDLGlCQUFXLEtBQUssV0FBVyxTQUFTO0FBQ3BDLGlCQUFXLEtBQUssV0FBVyxTQUFTO0FBQ3BDLGlCQUFXLEtBQUssU0FBUyxPQUFPO0FBQ2hDLGlCQUFXLElBQUk7QUFFZixlQUFTLFdBQVcsS0FBSztBQUV2QixZQUFJLFVBQVU7QUFBQSxNQUNoQjtBQUVBLGVBQVMsVUFBVSxLQUFLLFFBQVEsTUFBTTtBQUVwQyxnQkFBUSxTQUFTLFdBQVc7QUFDMUIsb0JBQVUsS0FBSyxRQUFRLElBQUk7QUFBQSxRQUM3QixDQUFDO0FBQUEsTUFDSDtBQUVBLGVBQVMsVUFBVSxLQUFLLFFBQVEsTUFBTTtBQUNwQyxtQkFBVyxtQkFBbUI7QUFDOUIsZUFBTyxtQkFBbUI7QUFFMUIsWUFBSSxJQUFJLGVBQWUsS0FBSztBQUMxQixVQUFBRTtBQUFBLFlBQU07QUFBQSxZQUNKLElBQUk7QUFBQSxVQUFVO0FBQ2hCLGlCQUFPLFFBQVE7QUFDZixjQUFJQyxTQUFRLElBQUksTUFBTSwyREFDSixJQUFJLFVBQVU7QUFDaEMsVUFBQUEsT0FBTSxPQUFPO0FBQ2Isa0JBQVEsUUFBUSxLQUFLLFNBQVNBLE1BQUs7QUFDbkMsVUFBQUgsTUFBSyxhQUFhLFdBQVc7QUFDN0I7QUFBQSxRQUNGO0FBQ0EsWUFBSSxLQUFLLFNBQVMsR0FBRztBQUNuQixVQUFBRSxPQUFNLHNDQUFzQztBQUM1QyxpQkFBTyxRQUFRO0FBQ2YsY0FBSUMsU0FBUSxJQUFJLE1BQU0sc0NBQXNDO0FBQzVELFVBQUFBLE9BQU0sT0FBTztBQUNiLGtCQUFRLFFBQVEsS0FBSyxTQUFTQSxNQUFLO0FBQ25DLFVBQUFILE1BQUssYUFBYSxXQUFXO0FBQzdCO0FBQUEsUUFDRjtBQUNBLFFBQUFFLE9BQU0sc0NBQXNDO0FBQzVDLFFBQUFGLE1BQUssUUFBUUEsTUFBSyxRQUFRLFFBQVEsV0FBVyxLQUFLO0FBQ2xELGVBQU8sR0FBRyxNQUFNO0FBQUEsTUFDbEI7QUFFQSxlQUFTLFFBQVEsT0FBTztBQUN0QixtQkFBVyxtQkFBbUI7QUFFOUIsUUFBQUU7QUFBQSxVQUFNO0FBQUEsVUFDQSxNQUFNO0FBQUEsVUFBUyxNQUFNO0FBQUEsUUFBSztBQUNoQyxZQUFJQyxTQUFRLElBQUksTUFBTSxzREFDVyxNQUFNLE9BQU87QUFDOUMsUUFBQUEsT0FBTSxPQUFPO0FBQ2IsZ0JBQVEsUUFBUSxLQUFLLFNBQVNBLE1BQUs7QUFDbkMsUUFBQUgsTUFBSyxhQUFhLFdBQVc7QUFBQSxNQUMvQjtBQUFBLElBQ0Y7QUFFQSxtQkFBZSxVQUFVLGVBQWUsU0FBUyxhQUFhLFFBQVE7QUFDcEUsVUFBSSxNQUFNLEtBQUssUUFBUSxRQUFRLE1BQU07QUFDckMsVUFBSSxRQUFRLElBQUk7QUFDZDtBQUFBLE1BQ0Y7QUFDQSxXQUFLLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFFMUIsVUFBSSxVQUFVLEtBQUssU0FBUyxNQUFNO0FBQ2xDLFVBQUksU0FBUztBQUdYLGFBQUssYUFBYSxTQUFTLFNBQVNJLFNBQVE7QUFDMUMsa0JBQVEsUUFBUSxTQUFTQSxPQUFNO0FBQUEsUUFDakMsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBRUEsYUFBUyxtQkFBbUIsU0FBUyxJQUFJO0FBQ3ZDLFVBQUlKLFFBQU87QUFDWCxxQkFBZSxVQUFVLGFBQWEsS0FBS0EsT0FBTSxTQUFTLFNBQVMsUUFBUTtBQUN6RSxZQUFJLGFBQWEsUUFBUSxRQUFRLFVBQVUsTUFBTTtBQUNqRCxZQUFJLGFBQWEsYUFBYSxDQUFDLEdBQUdBLE1BQUssU0FBUztBQUFBLFVBQzlDO0FBQUEsVUFDQSxZQUFZLGFBQWEsV0FBVyxRQUFRLFFBQVEsRUFBRSxJQUFJLFFBQVE7QUFBQSxRQUNwRSxDQUFDO0FBR0QsWUFBSSxlQUFlLElBQUksUUFBUSxHQUFHLFVBQVU7QUFDNUMsUUFBQUEsTUFBSyxRQUFRQSxNQUFLLFFBQVEsUUFBUSxNQUFNLEtBQUs7QUFDN0MsV0FBRyxZQUFZO0FBQUEsTUFDakIsQ0FBQztBQUFBLElBQ0g7QUFHQSxhQUFTLFVBQVUsTUFBTSxNQUFNLGNBQWM7QUFDM0MsVUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM1QixlQUFPO0FBQUEsVUFDTDtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUVBLGFBQVMsYUFBYSxRQUFRO0FBQzVCLGVBQVMsSUFBSSxHQUFHLE1BQU0sVUFBVSxRQUFRLElBQUksS0FBSyxFQUFFLEdBQUc7QUFDcEQsWUFBSSxZQUFZLFVBQVU7QUFDMUIsWUFBSSxPQUFPLGNBQWMsVUFBVTtBQUNqQyxjQUFJLE9BQU8sT0FBTyxLQUFLLFNBQVM7QUFDaEMsbUJBQVMsSUFBSSxHQUFHLFNBQVMsS0FBSyxRQUFRLElBQUksUUFBUSxFQUFFLEdBQUc7QUFDckQsZ0JBQUksSUFBSSxLQUFLO0FBQ2IsZ0JBQUksVUFBVSxPQUFPLFFBQVc7QUFDOUIscUJBQU8sS0FBSyxVQUFVO0FBQUEsWUFDeEI7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUdBLFFBQUlFO0FBQ0osUUFBSSxRQUFRLElBQUksY0FBYyxhQUFhLEtBQUssUUFBUSxJQUFJLFVBQVUsR0FBRztBQUN2RSxNQUFBQSxTQUFRLFdBQVc7QUFDakIsWUFBSSxPQUFPLE1BQU0sVUFBVSxNQUFNLEtBQUssU0FBUztBQUMvQyxZQUFJLE9BQU8sS0FBSyxPQUFPLFVBQVU7QUFDL0IsZUFBSyxLQUFLLGFBQWEsS0FBSztBQUFBLFFBQzlCLE9BQU87QUFDTCxlQUFLLFFBQVEsU0FBUztBQUFBLFFBQ3hCO0FBQ0EsZ0JBQVEsTUFBTSxNQUFNLFNBQVMsSUFBSTtBQUFBLE1BQ25DO0FBQUEsSUFDRixPQUFPO0FBQ0wsTUFBQUEsU0FBUSxXQUFXO0FBQUEsTUFBQztBQUFBLElBQ3RCO0FBQ0EsWUFBUSxRQUFRQTtBQUFBO0FBQUE7OztBQ3ZRaEIsSUFBQUcsa0JBQUE7QUFBQSwwQ0FBQUMsU0FBQTtBQUFBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0VqQixRQUFBLE9BQUEsYUFBQSxRQUFBLE9BQUE7QUFDQSxRQUFBLFFBQUEsYUFBQSxRQUFBLFFBQUE7QUFHQSxRQUFBLEtBQUEsYUFBQSxlQUFBO0FBQ0EsUUFBQSxTQUFBLGFBQUEsaUJBQUE7QUFFQSxRQUFZO0FBQVosS0FBQSxTQUFZQyxZQUFTO0FBQ25CLE1BQUFBLFdBQUFBLFdBQUEsUUFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxxQkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxzQkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxtQkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxjQUFBLE9BQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGlCQUFBLE9BQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGNBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsaUJBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsdUJBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsdUJBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsZ0JBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsa0JBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEscUJBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsZUFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxjQUFBLE9BQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLHNCQUFBLE9BQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLG1CQUFBLE9BQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGlDQUFBLE9BQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLG9CQUFBLE9BQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGNBQUEsT0FBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsVUFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxxQkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSx5QkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxvQkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxnQkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSx3QkFBQSxPQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxvQkFBQSxPQUFBO0lBQ0YsR0E1QlksWUFBQSxRQUFBLGNBQUEsUUFBQSxZQUFTLENBQUEsRUFBQTtBQThCckIsUUFBWTtBQUFaLEtBQUEsU0FBWUMsVUFBTztBQUNqQixNQUFBQSxTQUFBLFlBQUE7QUFDQSxNQUFBQSxTQUFBLGlCQUFBO0lBQ0YsR0FIWSxVQUFBLFFBQUEsWUFBQSxRQUFBLFVBQU8sQ0FBQSxFQUFBO0FBS25CLFFBQVk7QUFBWixLQUFBLFNBQVlDLGFBQVU7QUFDcEIsTUFBQUEsWUFBQSxxQkFBQTtJQUNGLEdBRlksYUFBQSxRQUFBLGVBQUEsUUFBQSxhQUFVLENBQUEsRUFBQTtBQVF0QixhQUFnQixZQUFZLFdBQWlCO0FBQzNDLFlBQU0sV0FBVyxHQUFHLFlBQVksSUFBSSxJQUFJLFNBQVMsQ0FBQztBQUNsRCxhQUFPLFdBQVcsU0FBUyxPQUFPO0lBQ3BDO0FBSEEsWUFBQSxjQUFBO0FBS0EsUUFBTSxvQkFBOEI7TUFDbEMsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7O0FBRVosUUFBTSx5QkFBbUM7TUFDdkMsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVOztBQUVaLFFBQU0scUJBQStCLENBQUMsV0FBVyxPQUFPLFVBQVUsTUFBTTtBQUN4RSxRQUFNLDRCQUE0QjtBQUNsQyxRQUFNLDhCQUE4QjtBQUVwQyxRQUFhLGtCQUFiLGNBQXFDLE1BQUs7TUFDeEMsWUFBWSxTQUFpQixZQUFrQjtBQUM3QyxjQUFNLE9BQU87QUFDYixhQUFLLE9BQU87QUFDWixhQUFLLGFBQWE7QUFDbEIsZUFBTyxlQUFlLE1BQU0sZ0JBQWdCLFNBQVM7TUFDdkQ7O0FBTkYsWUFBQSxrQkFBQTtBQVlBLFFBQWEscUJBQWIsTUFBK0I7TUFDN0IsWUFBWSxTQUE2QjtBQUN2QyxhQUFLLFVBQVU7TUFDakI7TUFHTSxXQUFROztBQUNaLGlCQUFPLElBQUksUUFBZ0IsQ0FBTSxZQUFVLFVBQUEsTUFBQSxRQUFBLFFBQUEsYUFBQTtBQUN6QyxnQkFBSSxTQUFTLE9BQU8sTUFBTSxDQUFDO0FBRTNCLGlCQUFLLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBaUI7QUFDeEMsdUJBQVMsT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUM7WUFDeEMsQ0FBQztBQUVELGlCQUFLLFFBQVEsR0FBRyxPQUFPLE1BQUs7QUFDMUIsc0JBQVEsT0FBTyxTQUFRLENBQUU7WUFDM0IsQ0FBQztVQUNILENBQUMsQ0FBQTtRQUNILENBQUM7OztBQWxCSCxZQUFBLHFCQUFBO0FBcUJBLGFBQWdCLFFBQVEsWUFBa0I7QUFDeEMsWUFBTSxZQUFpQixJQUFJLElBQUksVUFBVTtBQUN6QyxhQUFPLFVBQVUsYUFBYTtJQUNoQztBQUhBLFlBQUEsVUFBQTtBQUtBLFFBQWEsYUFBYixNQUF1QjtNQWlCckIsWUFDRSxXQUNBLFVBQ0EsZ0JBQW1DO0FBZjdCLGFBQUEsa0JBQWtCO0FBRWxCLGFBQUEsa0JBQWtCO0FBQ2xCLGFBQUEsMEJBQTBCO0FBQzFCLGFBQUEsZ0JBQWdCO0FBQ2hCLGFBQUEsZ0JBQWdCO0FBQ2hCLGFBQUEsY0FBYztBQUdkLGFBQUEsYUFBYTtBQUNiLGFBQUEsWUFBWTtBQU9sQixhQUFLLFlBQVk7QUFDakIsYUFBSyxXQUFXLFlBQVksQ0FBQTtBQUM1QixhQUFLLGlCQUFpQjtBQUN0QixZQUFJLGdCQUFnQjtBQUNsQixjQUFJLGVBQWUsa0JBQWtCLE1BQU07QUFDekMsaUJBQUssa0JBQWtCLGVBQWU7O0FBR3hDLGVBQUssaUJBQWlCLGVBQWU7QUFFckMsY0FBSSxlQUFlLGtCQUFrQixNQUFNO0FBQ3pDLGlCQUFLLGtCQUFrQixlQUFlOztBQUd4QyxjQUFJLGVBQWUsMEJBQTBCLE1BQU07QUFDakQsaUJBQUssMEJBQTBCLGVBQWU7O0FBR2hELGNBQUksZUFBZSxnQkFBZ0IsTUFBTTtBQUN2QyxpQkFBSyxnQkFBZ0IsS0FBSyxJQUFJLGVBQWUsY0FBYyxDQUFDOztBQUc5RCxjQUFJLGVBQWUsYUFBYSxNQUFNO0FBQ3BDLGlCQUFLLGFBQWEsZUFBZTs7QUFHbkMsY0FBSSxlQUFlLGdCQUFnQixNQUFNO0FBQ3ZDLGlCQUFLLGdCQUFnQixlQUFlOztBQUd0QyxjQUFJLGVBQWUsY0FBYyxNQUFNO0FBQ3JDLGlCQUFLLGNBQWMsZUFBZTs7O01BR3hDO01BRU0sUUFDSixZQUNBLG1CQUE0Qzs7QUFFNUMsaUJBQU8sS0FBSyxRQUFRLFdBQVcsWUFBWSxNQUFNLHFCQUFxQixDQUFBLENBQUU7UUFDMUUsQ0FBQzs7TUFFSyxJQUNKLFlBQ0EsbUJBQTRDOztBQUU1QyxpQkFBTyxLQUFLLFFBQVEsT0FBTyxZQUFZLE1BQU0scUJBQXFCLENBQUEsQ0FBRTtRQUN0RSxDQUFDOztNQUVLLElBQ0osWUFDQSxtQkFBNEM7O0FBRTVDLGlCQUFPLEtBQUssUUFBUSxVQUFVLFlBQVksTUFBTSxxQkFBcUIsQ0FBQSxDQUFFO1FBQ3pFLENBQUM7O01BRUssS0FDSixZQUNBLE1BQ0EsbUJBQTRDOztBQUU1QyxpQkFBTyxLQUFLLFFBQVEsUUFBUSxZQUFZLE1BQU0scUJBQXFCLENBQUEsQ0FBRTtRQUN2RSxDQUFDOztNQUVLLE1BQ0osWUFDQSxNQUNBLG1CQUE0Qzs7QUFFNUMsaUJBQU8sS0FBSyxRQUFRLFNBQVMsWUFBWSxNQUFNLHFCQUFxQixDQUFBLENBQUU7UUFDeEUsQ0FBQzs7TUFFSyxJQUNKLFlBQ0EsTUFDQSxtQkFBNEM7O0FBRTVDLGlCQUFPLEtBQUssUUFBUSxPQUFPLFlBQVksTUFBTSxxQkFBcUIsQ0FBQSxDQUFFO1FBQ3RFLENBQUM7O01BRUssS0FDSixZQUNBLG1CQUE0Qzs7QUFFNUMsaUJBQU8sS0FBSyxRQUFRLFFBQVEsWUFBWSxNQUFNLHFCQUFxQixDQUFBLENBQUU7UUFDdkUsQ0FBQzs7TUFFSyxXQUNKLE1BQ0EsWUFDQSxRQUNBLG1CQUE0Qzs7QUFFNUMsaUJBQU8sS0FBSyxRQUFRLE1BQU0sWUFBWSxRQUFRLGlCQUFpQjtRQUNqRSxDQUFDOztNQU1LLFFBQ0osWUFDQSxvQkFBOEMsQ0FBQSxHQUFFOztBQUVoRCw0QkFBa0IsUUFBUSxVQUFVLEtBQUssNEJBQ3ZDLG1CQUNBLFFBQVEsUUFDUixXQUFXLGVBQWU7QUFFNUIsZ0JBQU0sTUFBMEIsTUFBTSxLQUFLLElBQ3pDLFlBQ0EsaUJBQWlCO0FBRW5CLGlCQUFPLEtBQUssaUJBQW9CLEtBQUssS0FBSyxjQUFjO1FBQzFELENBQUM7O01BRUssU0FDSixZQUNBLEtBQ0Esb0JBQThDLENBQUEsR0FBRTs7QUFFaEQsZ0JBQU0sT0FBZSxLQUFLLFVBQVUsS0FBSyxNQUFNLENBQUM7QUFDaEQsNEJBQWtCLFFBQVEsVUFBVSxLQUFLLDRCQUN2QyxtQkFDQSxRQUFRLFFBQ1IsV0FBVyxlQUFlO0FBRTVCLDRCQUFrQixRQUFRLGVBQWUsS0FBSyw0QkFDNUMsbUJBQ0EsUUFBUSxhQUNSLFdBQVcsZUFBZTtBQUU1QixnQkFBTSxNQUEwQixNQUFNLEtBQUssS0FDekMsWUFDQSxNQUNBLGlCQUFpQjtBQUVuQixpQkFBTyxLQUFLLGlCQUFvQixLQUFLLEtBQUssY0FBYztRQUMxRCxDQUFDOztNQUVLLFFBQ0osWUFDQSxLQUNBLG9CQUE4QyxDQUFBLEdBQUU7O0FBRWhELGdCQUFNLE9BQWUsS0FBSyxVQUFVLEtBQUssTUFBTSxDQUFDO0FBQ2hELDRCQUFrQixRQUFRLFVBQVUsS0FBSyw0QkFDdkMsbUJBQ0EsUUFBUSxRQUNSLFdBQVcsZUFBZTtBQUU1Qiw0QkFBa0IsUUFBUSxlQUFlLEtBQUssNEJBQzVDLG1CQUNBLFFBQVEsYUFDUixXQUFXLGVBQWU7QUFFNUIsZ0JBQU0sTUFBMEIsTUFBTSxLQUFLLElBQ3pDLFlBQ0EsTUFDQSxpQkFBaUI7QUFFbkIsaUJBQU8sS0FBSyxpQkFBb0IsS0FBSyxLQUFLLGNBQWM7UUFDMUQsQ0FBQzs7TUFFSyxVQUNKLFlBQ0EsS0FDQSxvQkFBOEMsQ0FBQSxHQUFFOztBQUVoRCxnQkFBTSxPQUFlLEtBQUssVUFBVSxLQUFLLE1BQU0sQ0FBQztBQUNoRCw0QkFBa0IsUUFBUSxVQUFVLEtBQUssNEJBQ3ZDLG1CQUNBLFFBQVEsUUFDUixXQUFXLGVBQWU7QUFFNUIsNEJBQWtCLFFBQVEsZUFBZSxLQUFLLDRCQUM1QyxtQkFDQSxRQUFRLGFBQ1IsV0FBVyxlQUFlO0FBRTVCLGdCQUFNLE1BQTBCLE1BQU0sS0FBSyxNQUN6QyxZQUNBLE1BQ0EsaUJBQWlCO0FBRW5CLGlCQUFPLEtBQUssaUJBQW9CLEtBQUssS0FBSyxjQUFjO1FBQzFELENBQUM7O01BT0ssUUFDSixNQUNBLFlBQ0EsTUFDQSxTQUFrQzs7QUFFbEMsY0FBSSxLQUFLLFdBQVc7QUFDbEIsa0JBQU0sSUFBSSxNQUFNLG1DQUFtQzs7QUFHckQsZ0JBQU0sWUFBWSxJQUFJLElBQUksVUFBVTtBQUNwQyxjQUFJQyxRQUF3QixLQUFLLGdCQUFnQixNQUFNLFdBQVcsT0FBTztBQUd6RSxnQkFBTSxXQUNKLEtBQUssaUJBQWlCLG1CQUFtQixTQUFTLElBQUksSUFDbEQsS0FBSyxjQUFjLElBQ25CO0FBQ04sY0FBSSxXQUFXO0FBRWYsY0FBSTtBQUNKLGFBQUc7QUFDRCx1QkFBVyxNQUFNLEtBQUssV0FBV0EsT0FBTSxJQUFJO0FBRzNDLGdCQUNFLFlBQ0EsU0FBUyxXQUNULFNBQVMsUUFBUSxlQUFlLFVBQVUsY0FDMUM7QUFDQSxrQkFBSTtBQUVKLHlCQUFXLFdBQVcsS0FBSyxVQUFVO0FBQ25DLG9CQUFJLFFBQVEsd0JBQXdCLFFBQVEsR0FBRztBQUM3QywwQ0FBd0I7QUFDeEI7OztBQUlKLGtCQUFJLHVCQUF1QjtBQUN6Qix1QkFBTyxzQkFBc0IscUJBQXFCLE1BQU1BLE9BQU0sSUFBSTtxQkFDN0Q7QUFHTCx1QkFBTzs7O0FBSVgsZ0JBQUkscUJBQTZCLEtBQUs7QUFDdEMsbUJBQ0UsU0FBUyxRQUFRLGNBQ2pCLGtCQUFrQixTQUFTLFNBQVMsUUFBUSxVQUFVLEtBQ3RELEtBQUssbUJBQ0wscUJBQXFCLEdBQ3JCO0FBQ0Esb0JBQU0sY0FDSixTQUFTLFFBQVEsUUFBUTtBQUMzQixrQkFBSSxDQUFDLGFBQWE7QUFFaEI7O0FBRUYsb0JBQU0sb0JBQW9CLElBQUksSUFBSSxXQUFXO0FBQzdDLGtCQUNFLFVBQVUsYUFBYSxZQUN2QixVQUFVLGFBQWEsa0JBQWtCLFlBQ3pDLENBQUMsS0FBSyx5QkFDTjtBQUNBLHNCQUFNLElBQUksTUFDUiw4S0FBOEs7O0FBTWxMLG9CQUFNLFNBQVMsU0FBUTtBQUd2QixrQkFBSSxrQkFBa0IsYUFBYSxVQUFVLFVBQVU7QUFDckQsMkJBQVcsVUFBVSxTQUFTO0FBRTVCLHNCQUFJLE9BQU8sWUFBVyxNQUFPLGlCQUFpQjtBQUM1QywyQkFBTyxRQUFROzs7O0FBTXJCLGNBQUFBLFFBQU8sS0FBSyxnQkFBZ0IsTUFBTSxtQkFBbUIsT0FBTztBQUM1RCx5QkFBVyxNQUFNLEtBQUssV0FBV0EsT0FBTSxJQUFJO0FBQzNDOztBQUdGLGdCQUNFLENBQUMsU0FBUyxRQUFRLGNBQ2xCLENBQUMsdUJBQXVCLFNBQVMsU0FBUyxRQUFRLFVBQVUsR0FDNUQ7QUFFQSxxQkFBTzs7QUFHVCx3QkFBWTtBQUVaLGdCQUFJLFdBQVcsVUFBVTtBQUN2QixvQkFBTSxTQUFTLFNBQVE7QUFDdkIsb0JBQU0sS0FBSywyQkFBMkIsUUFBUTs7bUJBRXpDLFdBQVc7QUFFcEIsaUJBQU87UUFDVCxDQUFDOztNQUtELFVBQU87QUFDTCxZQUFJLEtBQUssUUFBUTtBQUNmLGVBQUssT0FBTyxRQUFPOztBQUdyQixhQUFLLFlBQVk7TUFDbkI7TUFPTSxXQUNKQSxPQUNBLE1BQTJDOztBQUUzQyxpQkFBTyxJQUFJLFFBQTRCLENBQUMsU0FBUyxXQUFVO0FBQ3pELHFCQUFTLGtCQUFrQixLQUFhLEtBQXdCO0FBQzlELGtCQUFJLEtBQUs7QUFDUCx1QkFBTyxHQUFHO3lCQUNELENBQUMsS0FBSztBQUVmLHVCQUFPLElBQUksTUFBTSxlQUFlLENBQUM7cUJBQzVCO0FBQ0wsd0JBQVEsR0FBRzs7WUFFZjtBQUVBLGlCQUFLLHVCQUF1QkEsT0FBTSxNQUFNLGlCQUFpQjtVQUMzRCxDQUFDO1FBQ0gsQ0FBQzs7TUFRRCx1QkFDRUEsT0FDQSxNQUNBLFVBQXlEO0FBRXpELFlBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsY0FBSSxDQUFDQSxNQUFLLFFBQVEsU0FBUztBQUN6QixZQUFBQSxNQUFLLFFBQVEsVUFBVSxDQUFBOztBQUV6QixVQUFBQSxNQUFLLFFBQVEsUUFBUSxvQkFBb0IsT0FBTyxXQUFXLE1BQU0sTUFBTTs7QUFHekUsWUFBSSxpQkFBaUI7QUFDckIsaUJBQVMsYUFBYSxLQUFhLEtBQXdCO0FBQ3pELGNBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsNkJBQWlCO0FBQ2pCLHFCQUFTLEtBQUssR0FBRzs7UUFFckI7QUFFQSxjQUFNLE1BQTBCQSxNQUFLLFdBQVcsUUFDOUNBLE1BQUssU0FDTCxDQUFDLFFBQTZCO0FBQzVCLGdCQUFNLE1BQTBCLElBQUksbUJBQW1CLEdBQUc7QUFDMUQsdUJBQWEsUUFBVyxHQUFHO1FBQzdCLENBQUM7QUFHSCxZQUFJO0FBQ0osWUFBSSxHQUFHLFVBQVUsVUFBTztBQUN0QixtQkFBUztRQUNYLENBQUM7QUFHRCxZQUFJLFdBQVcsS0FBSyxrQkFBa0IsSUFBSSxLQUFPLE1BQUs7QUFDcEQsY0FBSSxRQUFRO0FBQ1YsbUJBQU8sSUFBRzs7QUFFWix1QkFBYSxJQUFJLE1BQU0sb0JBQW9CQSxNQUFLLFFBQVEsTUFBTSxDQUFDO1FBQ2pFLENBQUM7QUFFRCxZQUFJLEdBQUcsU0FBUyxTQUFTLEtBQUc7QUFHMUIsdUJBQWEsR0FBRztRQUNsQixDQUFDO0FBRUQsWUFBSSxRQUFRLE9BQU8sU0FBUyxVQUFVO0FBQ3BDLGNBQUksTUFBTSxNQUFNLE1BQU07O0FBR3hCLFlBQUksUUFBUSxPQUFPLFNBQVMsVUFBVTtBQUNwQyxlQUFLLEdBQUcsU0FBUyxXQUFBO0FBQ2YsZ0JBQUksSUFBRztVQUNULENBQUM7QUFFRCxlQUFLLEtBQUssR0FBRztlQUNSO0FBQ0wsY0FBSSxJQUFHOztNQUVYO01BT0EsU0FBUyxXQUFpQjtBQUN4QixjQUFNLFlBQVksSUFBSSxJQUFJLFNBQVM7QUFDbkMsZUFBTyxLQUFLLFVBQVUsU0FBUztNQUNqQztNQUVRLGdCQUNOLFFBQ0EsWUFDQSxTQUFrQztBQUVsQyxjQUFNQSxRQUF5QyxDQUFBO0FBRS9DLFFBQUFBLE1BQUssWUFBWTtBQUNqQixjQUFNLFdBQW9CQSxNQUFLLFVBQVUsYUFBYTtBQUN0RCxRQUFBQSxNQUFLLGFBQWEsV0FBVyxRQUFRO0FBQ3JDLGNBQU0sY0FBc0IsV0FBVyxNQUFNO0FBRTdDLFFBQUFBLE1BQUssVUFBK0IsQ0FBQTtBQUNwQyxRQUFBQSxNQUFLLFFBQVEsT0FBT0EsTUFBSyxVQUFVO0FBQ25DLFFBQUFBLE1BQUssUUFBUSxPQUFPQSxNQUFLLFVBQVUsT0FDL0IsU0FBU0EsTUFBSyxVQUFVLElBQUksSUFDNUI7QUFDSixRQUFBQSxNQUFLLFFBQVEsUUFDVkEsTUFBSyxVQUFVLFlBQVksT0FBT0EsTUFBSyxVQUFVLFVBQVU7QUFDOUQsUUFBQUEsTUFBSyxRQUFRLFNBQVM7QUFDdEIsUUFBQUEsTUFBSyxRQUFRLFVBQVUsS0FBSyxjQUFjLE9BQU87QUFDakQsWUFBSSxLQUFLLGFBQWEsTUFBTTtBQUMxQixVQUFBQSxNQUFLLFFBQVEsUUFBUSxnQkFBZ0IsS0FBSzs7QUFHNUMsUUFBQUEsTUFBSyxRQUFRLFFBQVEsS0FBSyxVQUFVQSxNQUFLLFNBQVM7QUFHbEQsWUFBSSxLQUFLLFVBQVU7QUFDakIscUJBQVcsV0FBVyxLQUFLLFVBQVU7QUFDbkMsb0JBQVEsZUFBZUEsTUFBSyxPQUFPOzs7QUFJdkMsZUFBT0E7TUFDVDtNQUVRLGNBQ04sU0FBa0M7QUFFbEMsWUFBSSxLQUFLLGtCQUFrQixLQUFLLGVBQWUsU0FBUztBQUN0RCxpQkFBTyxPQUFPLE9BQ1osQ0FBQSxHQUNBLGNBQWMsS0FBSyxlQUFlLE9BQU8sR0FDekMsY0FBYyxXQUFXLENBQUEsQ0FBRSxDQUFDOztBQUloQyxlQUFPLGNBQWMsV0FBVyxDQUFBLENBQUU7TUFDcEM7TUFFUSw0QkFDTixtQkFDQSxRQUNBQyxXQUFnQjtBQUVoQixZQUFJO0FBQ0osWUFBSSxLQUFLLGtCQUFrQixLQUFLLGVBQWUsU0FBUztBQUN0RCx5QkFBZSxjQUFjLEtBQUssZUFBZSxPQUFPLEVBQUU7O0FBRTVELGVBQU8sa0JBQWtCLFdBQVcsZ0JBQWdCQTtNQUN0RDtNQUVRLFVBQVUsV0FBYztBQUM5QixZQUFJO0FBQ0osY0FBTSxXQUFXLEdBQUcsWUFBWSxTQUFTO0FBQ3pDLGNBQU0sV0FBVyxZQUFZLFNBQVM7QUFFdEMsWUFBSSxLQUFLLGNBQWMsVUFBVTtBQUMvQixrQkFBUSxLQUFLOztBQUdmLFlBQUksS0FBSyxjQUFjLENBQUMsVUFBVTtBQUNoQyxrQkFBUSxLQUFLOztBQUlmLFlBQUksT0FBTztBQUNULGlCQUFPOztBQUdULGNBQU0sV0FBVyxVQUFVLGFBQWE7QUFDeEMsWUFBSSxhQUFhO0FBQ2pCLFlBQUksS0FBSyxnQkFBZ0I7QUFDdkIsdUJBQWEsS0FBSyxlQUFlLGNBQWMsS0FBSyxZQUFZOztBQUlsRSxZQUFJLFlBQVksU0FBUyxVQUFVO0FBQ2pDLGdCQUFNLGVBQWU7WUFDbkI7WUFDQSxXQUFXLEtBQUs7WUFDaEIsT0FBSyxPQUFBLE9BQUEsT0FBQSxPQUFBLENBQUEsSUFDRSxTQUFTLFlBQVksU0FBUyxhQUFhO2NBQzlDLFdBQVcsR0FBRyxTQUFTLFlBQVksU0FBUzthQUM1QyxHQUFBLEVBQ0YsTUFBTSxTQUFTLFVBQ2YsTUFBTSxTQUFTLEtBQUksQ0FBQTs7QUFJdkIsY0FBSTtBQUNKLGdCQUFNLFlBQVksU0FBUyxhQUFhO0FBQ3hDLGNBQUksVUFBVTtBQUNaLDBCQUFjLFlBQVksT0FBTyxpQkFBaUIsT0FBTztpQkFDcEQ7QUFDTCwwQkFBYyxZQUFZLE9BQU8sZ0JBQWdCLE9BQU87O0FBRzFELGtCQUFRLFlBQVksWUFBWTtBQUNoQyxlQUFLLGNBQWM7O0FBSXJCLFlBQUksS0FBSyxjQUFjLENBQUMsT0FBTztBQUM3QixnQkFBTSxVQUFVLEVBQUMsV0FBVyxLQUFLLFlBQVksV0FBVTtBQUN2RCxrQkFBUSxXQUFXLElBQUksTUFBTSxNQUFNLE9BQU8sSUFBSSxJQUFJLEtBQUssTUFBTSxPQUFPO0FBQ3BFLGVBQUssU0FBUzs7QUFJaEIsWUFBSSxDQUFDLE9BQU87QUFDVixrQkFBUSxXQUFXLE1BQU0sY0FBYyxLQUFLOztBQUc5QyxZQUFJLFlBQVksS0FBSyxpQkFBaUI7QUFJcEMsZ0JBQU0sVUFBVSxPQUFPLE9BQU8sTUFBTSxXQUFXLENBQUEsR0FBSTtZQUNqRCxvQkFBb0I7V0FDckI7O0FBR0gsZUFBTztNQUNUO01BRWMsMkJBQTJCLGFBQW1COztBQUMxRCx3QkFBYyxLQUFLLElBQUksMkJBQTJCLFdBQVc7QUFDN0QsZ0JBQU0sS0FBYSw4QkFBOEIsS0FBSyxJQUFJLEdBQUcsV0FBVztBQUN4RSxpQkFBTyxJQUFJLFFBQVEsYUFBVyxXQUFXLE1BQU0sUUFBTyxHQUFJLEVBQUUsQ0FBQztRQUMvRCxDQUFDOztNQUVhLGlCQUNaLEtBQ0EsU0FBNEI7O0FBRTVCLGlCQUFPLElBQUksUUFBOEIsQ0FBTyxTQUFTLFdBQVUsVUFBQSxNQUFBLFFBQUEsUUFBQSxhQUFBO0FBQ2pFLGtCQUFNLGFBQWEsSUFBSSxRQUFRLGNBQWM7QUFFN0Msa0JBQU0sV0FBaUM7Y0FDckM7Y0FDQSxRQUFRO2NBQ1IsU0FBUyxDQUFBOztBQUlYLGdCQUFJLGVBQWUsVUFBVSxVQUFVO0FBQ3JDLHNCQUFRLFFBQVE7O0FBS2xCLHFCQUFTLHFCQUFxQixLQUFVLE9BQVU7QUFDaEQsa0JBQUksT0FBTyxVQUFVLFVBQVU7QUFDN0Isc0JBQU0sSUFBSSxJQUFJLEtBQUssS0FBSztBQUN4QixvQkFBSSxDQUFDLE1BQU0sRUFBRSxRQUFPLENBQUUsR0FBRztBQUN2Qix5QkFBTzs7O0FBSVgscUJBQU87WUFDVDtBQUVBLGdCQUFJO0FBQ0osZ0JBQUk7QUFFSixnQkFBSTtBQUNGLHlCQUFXLE1BQU0sSUFBSSxTQUFRO0FBQzdCLGtCQUFJLFlBQVksU0FBUyxTQUFTLEdBQUc7QUFDbkMsb0JBQUksV0FBVyxRQUFRLGtCQUFrQjtBQUN2Qyx3QkFBTSxLQUFLLE1BQU0sVUFBVSxvQkFBb0I7dUJBQzFDO0FBQ0wsd0JBQU0sS0FBSyxNQUFNLFFBQVE7O0FBRzNCLHlCQUFTLFNBQVM7O0FBR3BCLHVCQUFTLFVBQVUsSUFBSSxRQUFRO3FCQUN4QixLQUFQOztBQUtGLGdCQUFJLGFBQWEsS0FBSztBQUNwQixrQkFBSTtBQUdKLGtCQUFJLE9BQU8sSUFBSSxTQUFTO0FBQ3RCLHNCQUFNLElBQUk7eUJBQ0QsWUFBWSxTQUFTLFNBQVMsR0FBRztBQUUxQyxzQkFBTTtxQkFDRDtBQUNMLHNCQUFNLG9CQUFvQjs7QUFHNUIsb0JBQU0sTUFBTSxJQUFJLGdCQUFnQixLQUFLLFVBQVU7QUFDL0Msa0JBQUksU0FBUyxTQUFTO0FBRXRCLHFCQUFPLEdBQUc7bUJBQ0w7QUFDTCxzQkFBUSxRQUFROztVQUVwQixDQUFDLENBQUE7UUFDSCxDQUFDOzs7QUFqcEJILFlBQUEsYUFBQTtBQW9wQkEsUUFBTSxnQkFBZ0IsQ0FBQyxRQUNyQixPQUFPLEtBQUssR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFRLE9BQVEsRUFBRSxFQUFFLFlBQVcsS0FBTSxJQUFJLElBQUssSUFBSSxDQUFBLENBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNod0IvRSxRQUFhLHlCQUFiLE1BQW1DO01BSWpDLFlBQVksVUFBa0IsVUFBZ0I7QUFDNUMsYUFBSyxXQUFXO0FBQ2hCLGFBQUssV0FBVztNQUNsQjtNQUVBLGVBQWUsU0FBNEI7QUFDekMsWUFBSSxDQUFDLFFBQVEsU0FBUztBQUNwQixnQkFBTSxNQUFNLDRCQUE0Qjs7QUFFMUMsZ0JBQVEsUUFBUSxtQkFBbUIsU0FBUyxPQUFPLEtBQ2pELEdBQUcsS0FBSyxZQUFZLEtBQUssVUFBVSxFQUNuQyxTQUFTLFFBQVE7TUFDckI7TUFHQSwwQkFBdUI7QUFDckIsZUFBTztNQUNUO01BRU0sdUJBQW9COztBQUN4QixnQkFBTSxJQUFJLE1BQU0saUJBQWlCO1FBQ25DLENBQUM7OztBQXpCSCxZQUFBLHlCQUFBO0FBNEJBLFFBQWEsMEJBQWIsTUFBb0M7TUFHbEMsWUFBWSxPQUFhO0FBQ3ZCLGFBQUssUUFBUTtNQUNmO01BSUEsZUFBZSxTQUE0QjtBQUN6QyxZQUFJLENBQUMsUUFBUSxTQUFTO0FBQ3BCLGdCQUFNLE1BQU0sNEJBQTRCOztBQUUxQyxnQkFBUSxRQUFRLG1CQUFtQixVQUFVLEtBQUs7TUFDcEQ7TUFHQSwwQkFBdUI7QUFDckIsZUFBTztNQUNUO01BRU0sdUJBQW9COztBQUN4QixnQkFBTSxJQUFJLE1BQU0saUJBQWlCO1FBQ25DLENBQUM7OztBQXZCSCxZQUFBLDBCQUFBO0FBMEJBLFFBQWEsdUNBQWIsTUFBaUQ7TUFJL0MsWUFBWSxPQUFhO0FBQ3ZCLGFBQUssUUFBUTtNQUNmO01BSUEsZUFBZSxTQUE0QjtBQUN6QyxZQUFJLENBQUMsUUFBUSxTQUFTO0FBQ3BCLGdCQUFNLE1BQU0sNEJBQTRCOztBQUUxQyxnQkFBUSxRQUFRLG1CQUFtQixTQUFTLE9BQU8sS0FDakQsT0FBTyxLQUFLLE9BQU8sRUFDbkIsU0FBUyxRQUFRO01BQ3JCO01BR0EsMEJBQXVCO0FBQ3JCLGVBQU87TUFDVDtNQUVNLHVCQUFvQjs7QUFDeEIsZ0JBQU0sSUFBSSxNQUFNLGlCQUFpQjtRQUNuQyxDQUFDOzs7QUExQkgsWUFBQSx1Q0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZEQSxRQUFBLGdCQUFBO0FBQ0EsUUFBQSxTQUFBO0FBQ0EsUUFBQSxTQUFBO0FBS0EsUUFBYSxhQUFiLE1BQXVCO01BQ2IsT0FBTyxpQkFDYixhQUFhLE1BQ2IsV0FBVyxJQUFFO0FBRWIsY0FBTSxpQkFBaUM7VUFDckMsY0FBYztVQUNkLFlBQVk7O0FBR2QsZUFBTyxJQUFJLGNBQUEsV0FDVCx1QkFDQSxDQUFDLElBQUksT0FBQSx3QkFBd0IsV0FBVyxnQkFBZSxDQUFFLENBQUMsR0FDMUQsY0FBYztNQUVsQjtNQUVRLE9BQU8sa0JBQWU7QUFDNUIsY0FBTSxRQUFRLFFBQVEsSUFBSTtBQUMxQixZQUFJLENBQUMsT0FBTztBQUNWLGdCQUFNLElBQUksTUFDUiwyREFBMkQ7O0FBRy9ELGVBQU87TUFDVDtNQUVRLE9BQU8sZ0JBQWE7QUFDMUIsY0FBTSxhQUFhLFFBQVEsSUFBSTtBQUMvQixZQUFJLENBQUMsWUFBWTtBQUNmLGdCQUFNLElBQUksTUFBTSx5REFBeUQ7O0FBRTNFLGVBQU87TUFDVDtNQUVRLE9BQWEsUUFBUSxjQUFvQjs7O0FBQy9DLGdCQUFNLGFBQWEsV0FBVyxpQkFBZ0I7QUFFOUMsZ0JBQU0sTUFBTSxNQUFNLFdBQ2YsUUFBdUIsWUFBWSxFQUNuQyxNQUFNLENBQUFDLFdBQVE7QUFDYixrQkFBTSxJQUFJLE1BQ1I7O3VCQUNhQSxPQUFNOzt5QkFDSkEsT0FBTSxPQUFPLFNBQVM7VUFFekMsQ0FBQztBQUVILGdCQUFNLFlBQVEsS0FBRyxJQUFJLFlBQU0sUUFBQSxPQUFBLFNBQUEsU0FBQSxHQUFFO0FBQzdCLGNBQUksQ0FBQyxVQUFVO0FBQ2Isa0JBQU0sSUFBSSxNQUFNLCtDQUErQzs7QUFFakUsaUJBQU87OztNQUdULE9BQWEsV0FBVyxVQUFpQjs7QUFDdkMsY0FBSTtBQUVGLGdCQUFJLGVBQXVCLFdBQVcsY0FBYTtBQUNuRCxnQkFBSSxVQUFVO0FBQ1osb0JBQU0sa0JBQWtCLG1CQUFtQixRQUFRO0FBQ25ELDZCQUFlLEdBQUcseUJBQXlCOztBQUc3QyxtQkFBQSxNQUFNLG1CQUFtQixjQUFjO0FBRXZDLGtCQUFNLFdBQVcsTUFBTSxXQUFXLFFBQVEsWUFBWTtBQUN0RCxtQkFBQSxVQUFVLFFBQVE7QUFDbEIsbUJBQU87bUJBQ0FBLFFBQVA7QUFDQSxrQkFBTSxJQUFJLE1BQU0sa0JBQWtCQSxPQUFNLFNBQVM7O1FBRXJELENBQUM7OztBQXhFSCxZQUFBLGFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNWQSxRQUFBLE9BQUEsUUFBQTtBQUNBLFFBQUEsT0FBQSxRQUFBO0FBQ0EsUUFBTSxFQUFDLFFBQVEsWUFBWSxVQUFTLElBQUksS0FBQTtBQUUzQixZQUFBLGtCQUFrQjtBQUNsQixZQUFBLG1CQUNYO0FBK0NGLFFBQU0sVUFBTixNQUFhO01BSVgsY0FBQTtBQUNFLGFBQUssVUFBVTtNQUNqQjtNQVFjLFdBQVE7O0FBQ3BCLGNBQUksS0FBSyxXQUFXO0FBQ2xCLG1CQUFPLEtBQUs7O0FBR2QsZ0JBQU0sY0FBYyxRQUFRLElBQUksUUFBQTtBQUNoQyxjQUFJLENBQUMsYUFBYTtBQUNoQixrQkFBTSxJQUFJLE1BQ1IsNENBQTRDLFFBQUEsNEVBQTRFOztBQUk1SCxjQUFJO0FBQ0Ysa0JBQU0sT0FBTyxhQUFhLEtBQUEsVUFBVSxPQUFPLEtBQUEsVUFBVSxJQUFJO21CQUN6RCxJQUFBO0FBQ0Esa0JBQU0sSUFBSSxNQUNSLG1DQUFtQyxxRUFBcUU7O0FBSTVHLGVBQUssWUFBWTtBQUNqQixpQkFBTyxLQUFLO1FBQ2QsQ0FBQzs7TUFXTyxLQUNOLEtBQ0EsU0FDQSxRQUF1QyxDQUFBLEdBQUU7QUFFekMsY0FBTSxZQUFZLE9BQU8sUUFBUSxLQUFLLEVBQ25DLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxNQUFNLElBQUksUUFBUSxRQUFRLEVBQzFDLEtBQUssRUFBRTtBQUVWLFlBQUksQ0FBQyxTQUFTO0FBQ1osaUJBQU8sSUFBSSxNQUFNOztBQUduQixlQUFPLElBQUksTUFBTSxhQUFhLFlBQVk7TUFDNUM7TUFTTSxNQUFNLFNBQTZCOztBQUN2QyxnQkFBTSxZQUFZLENBQUMsRUFBQyxZQUFPLFFBQVAsWUFBTyxTQUFBLFNBQVAsUUFBUztBQUM3QixnQkFBTSxXQUFXLE1BQU0sS0FBSyxTQUFRO0FBQ3BDLGdCQUFNLFlBQVksWUFBWSxZQUFZO0FBQzFDLGdCQUFNLFVBQVUsVUFBVSxLQUFLLFNBQVMsRUFBQyxVQUFVLE9BQU0sQ0FBQztBQUMxRCxpQkFBTyxLQUFLLFlBQVc7UUFDekIsQ0FBQzs7TUFPSyxRQUFLOztBQUNULGlCQUFPLEtBQUssWUFBVyxFQUFHLE1BQU0sRUFBQyxXQUFXLEtBQUksQ0FBQztRQUNuRCxDQUFDOztNQU9ELFlBQVM7QUFDUCxlQUFPLEtBQUs7TUFDZDtNQU9BLGdCQUFhO0FBQ1gsZUFBTyxLQUFLLFFBQVEsV0FBVztNQUNqQztNQU9BLGNBQVc7QUFDVCxhQUFLLFVBQVU7QUFDZixlQUFPO01BQ1Q7TUFVQSxPQUFPLE1BQWMsU0FBUyxPQUFLO0FBQ2pDLGFBQUssV0FBVztBQUNoQixlQUFPLFNBQVMsS0FBSyxPQUFNLElBQUs7TUFDbEM7TUFPQSxTQUFNO0FBQ0osZUFBTyxLQUFLLE9BQU8sS0FBQSxHQUFHO01BQ3hCO01BVUEsYUFBYSxNQUFjLE1BQWE7QUFDdEMsY0FBTSxRQUFLLE9BQUEsT0FBQSxDQUFBLEdBQ0wsUUFBUSxFQUFDLEtBQUksQ0FBRTtBQUVyQixjQUFNLFVBQVUsS0FBSyxLQUFLLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUs7QUFDL0QsZUFBTyxLQUFLLE9BQU8sT0FBTyxFQUFFLE9BQU07TUFDcEM7TUFVQSxRQUFRLE9BQWlCLFVBQVUsT0FBSztBQUN0QyxjQUFNLE1BQU0sVUFBVSxPQUFPO0FBQzdCLGNBQU0sWUFBWSxNQUFNLElBQUksVUFBUSxLQUFLLEtBQUssTUFBTSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUU7QUFDbEUsY0FBTSxVQUFVLEtBQUssS0FBSyxLQUFLLFNBQVM7QUFDeEMsZUFBTyxLQUFLLE9BQU8sT0FBTyxFQUFFLE9BQU07TUFDcEM7TUFTQSxTQUFTLE1BQXVCO0FBQzlCLGNBQU0sWUFBWSxLQUNmLElBQUksU0FBTTtBQUNULGdCQUFNLFFBQVEsSUFDWCxJQUFJLFVBQU87QUFDVixnQkFBSSxPQUFPLFNBQVMsVUFBVTtBQUM1QixxQkFBTyxLQUFLLEtBQUssTUFBTSxJQUFJOztBQUc3QixrQkFBTSxFQUFDLFFBQVEsTUFBTSxTQUFTLFFBQU8sSUFBSTtBQUN6QyxrQkFBTSxNQUFNLFNBQVMsT0FBTztBQUM1QixrQkFBTSxRQUFLLE9BQUEsT0FBQSxPQUFBLE9BQUEsQ0FBQSxHQUNMLFdBQVcsRUFBQyxRQUFPLENBQUUsR0FDckIsV0FBVyxFQUFDLFFBQU8sQ0FBRTtBQUczQixtQkFBTyxLQUFLLEtBQUssS0FBSyxNQUFNLEtBQUs7VUFDbkMsQ0FBQyxFQUNBLEtBQUssRUFBRTtBQUVWLGlCQUFPLEtBQUssS0FBSyxNQUFNLEtBQUs7UUFDOUIsQ0FBQyxFQUNBLEtBQUssRUFBRTtBQUVWLGNBQU0sVUFBVSxLQUFLLEtBQUssU0FBUyxTQUFTO0FBQzVDLGVBQU8sS0FBSyxPQUFPLE9BQU8sRUFBRSxPQUFNO01BQ3BDO01BVUEsV0FBVyxPQUFlLFNBQWU7QUFDdkMsY0FBTSxVQUFVLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssSUFBSSxPQUFPO0FBQzFFLGVBQU8sS0FBSyxPQUFPLE9BQU8sRUFBRSxPQUFNO01BQ3BDO01BV0EsU0FBUyxLQUFhLEtBQWEsU0FBNkI7QUFDOUQsY0FBTSxFQUFDLE9BQU8sT0FBTSxJQUFJLFdBQVcsQ0FBQTtBQUNuQyxjQUFNLFFBQUssT0FBQSxPQUFBLE9BQUEsT0FBQSxDQUFBLEdBQ0wsU0FBUyxFQUFDLE1BQUssQ0FBRSxHQUNqQixVQUFVLEVBQUMsT0FBTSxDQUFFO0FBR3pCLGNBQU0sVUFBVSxLQUFLLEtBQUssT0FBTyxNQUFJLE9BQUEsT0FBQSxFQUFHLEtBQUssSUFBRyxHQUFLLEtBQUssQ0FBQTtBQUMxRCxlQUFPLEtBQUssT0FBTyxPQUFPLEVBQUUsT0FBTTtNQUNwQztNQVVBLFdBQVcsTUFBYyxPQUF1QjtBQUM5QyxjQUFNLE1BQU0sSUFBSTtBQUNoQixjQUFNLGFBQWEsQ0FBQyxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUNoRSxNQUNBO0FBQ0osY0FBTSxVQUFVLEtBQUssS0FBSyxZQUFZLElBQUk7QUFDMUMsZUFBTyxLQUFLLE9BQU8sT0FBTyxFQUFFLE9BQU07TUFDcEM7TUFPQSxlQUFZO0FBQ1YsY0FBTSxVQUFVLEtBQUssS0FBSyxNQUFNLElBQUk7QUFDcEMsZUFBTyxLQUFLLE9BQU8sT0FBTyxFQUFFLE9BQU07TUFDcEM7TUFPQSxXQUFRO0FBQ04sY0FBTSxVQUFVLEtBQUssS0FBSyxNQUFNLElBQUk7QUFDcEMsZUFBTyxLQUFLLE9BQU8sT0FBTyxFQUFFLE9BQU07TUFDcEM7TUFVQSxTQUFTLE1BQWMsTUFBYTtBQUNsQyxjQUFNLFFBQUssT0FBQSxPQUFBLENBQUEsR0FDTCxRQUFRLEVBQUMsS0FBSSxDQUFFO0FBRXJCLGNBQU0sVUFBVSxLQUFLLEtBQUssY0FBYyxNQUFNLEtBQUs7QUFDbkQsZUFBTyxLQUFLLE9BQU8sT0FBTyxFQUFFLE9BQU07TUFDcEM7TUFVQSxRQUFRLE1BQWMsTUFBWTtBQUNoQyxjQUFNLFVBQVUsS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFDLEtBQUksQ0FBQztBQUMzQyxlQUFPLEtBQUssT0FBTyxPQUFPLEVBQUUsT0FBTTtNQUNwQzs7QUFHRixRQUFNLFdBQVcsSUFBSSxRQUFPO0FBS2YsWUFBQSxrQkFBa0I7QUFDbEIsWUFBQSxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFXdkIsUUFBQUMsUUFBQSxhQUFBLFFBQUEsT0FBQTtBQVNBLGFBQWdCLFlBQVksS0FBVztBQUNyQyxhQUFPLElBQUksUUFBUSxTQUFTLEdBQUc7SUFDakM7QUFGQSxZQUFBLGNBQUE7QUFXQSxhQUFnQixZQUFZLEtBQVc7QUFDckMsYUFBTyxJQUFJLFFBQVEsUUFBUSxJQUFJO0lBQ2pDO0FBRkEsWUFBQSxjQUFBO0FBWUEsYUFBZ0IsZUFBZSxLQUFXO0FBQ3hDLGFBQU8sSUFBSSxRQUFRLFVBQVVBLE1BQUssR0FBRztJQUN2QztBQUZBLFlBQUEsaUJBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaENBLFFBQUEsWUFBQTtBQUNBLFFBQUEsaUJBQUE7QUFDQSxRQUFBLFVBQUE7QUFFQSxRQUFBLEtBQUEsYUFBQSxRQUFBLEtBQUE7QUFDQSxRQUFBQyxRQUFBLGFBQUEsUUFBQSxPQUFBO0FBQ0EsUUFBQSxTQUFBO0FBRUEsUUFBQSxlQUFBO0FBZ0JBLFFBQVk7QUFBWixLQUFBLFNBQVlDLFdBQVE7QUFJbEIsTUFBQUEsVUFBQUEsVUFBQSxhQUFBLEtBQUE7QUFLQSxNQUFBQSxVQUFBQSxVQUFBLGFBQUEsS0FBQTtJQUNGLEdBVlksV0FBQSxRQUFBLGFBQUEsUUFBQSxXQUFRLENBQUEsRUFBQTtBQTJEcEIsYUFBZ0IsZUFBZSxNQUFjLEtBQVE7QUFDbkQsWUFBTSxlQUFlLFFBQUEsZUFBZSxHQUFHO0FBQ3ZDLGNBQVEsSUFBSSxRQUFRO0FBRXBCLFlBQU0sV0FBVyxRQUFRLElBQUksaUJBQWlCO0FBQzlDLFVBQUksVUFBVTtBQUNaLGNBQU0sWUFBWSxnQkFBZ0IsT0FBQSxHQUFNO0FBR3hDLFlBQUksS0FBSyxTQUFTLFNBQVMsR0FBRztBQUM1QixnQkFBTSxJQUFJLE1BQ1IsNERBQTRELFlBQVk7O0FBSTVFLFlBQUksYUFBYSxTQUFTLFNBQVMsR0FBRztBQUNwQyxnQkFBTSxJQUFJLE1BQ1IsNkRBQTZELFlBQVk7O0FBSTdFLGNBQU0sZUFBZSxHQUFHLFNBQVMsWUFBWSxHQUFHLE1BQU0sZUFBZSxHQUFHLE1BQU07QUFDOUUsdUJBQUEsYUFBaUIsT0FBTyxZQUFZO2FBQy9CO0FBQ0wsa0JBQUEsYUFBYSxXQUFXLEVBQUMsS0FBSSxHQUFHLFlBQVk7O0lBRWhEO0FBMUJBLFlBQUEsaUJBQUE7QUFnQ0EsYUFBZ0IsVUFBVSxRQUFjO0FBQ3RDLGdCQUFBLGFBQWEsWUFBWSxDQUFBLEdBQUksTUFBTTtJQUNyQztBQUZBLFlBQUEsWUFBQTtBQVFBLGFBQWdCLFFBQVEsV0FBaUI7QUFDdkMsWUFBTSxXQUFXLFFBQVEsSUFBSSxrQkFBa0I7QUFDL0MsVUFBSSxVQUFVO0FBQ1osdUJBQUEsYUFBaUIsUUFBUSxTQUFTO2FBQzdCO0FBQ0wsa0JBQUEsYUFBYSxZQUFZLENBQUEsR0FBSSxTQUFTOztBQUV4QyxjQUFRLElBQUksVUFBVSxHQUFHLFlBQVlELE1BQUssWUFBWSxRQUFRLElBQUk7SUFDcEU7QUFSQSxZQUFBLFVBQUE7QUFtQkEsYUFBZ0IsU0FBUyxNQUFjLFNBQXNCO0FBQzNELFlBQU0sTUFDSixRQUFRLElBQUksU0FBUyxLQUFLLFFBQVEsTUFBTSxHQUFHLEVBQUUsWUFBVyxRQUFTO0FBQ25FLFVBQUksV0FBVyxRQUFRLFlBQVksQ0FBQyxLQUFLO0FBQ3ZDLGNBQU0sSUFBSSxNQUFNLG9DQUFvQyxNQUFNOztBQUc1RCxVQUFJLFdBQVcsUUFBUSxtQkFBbUIsT0FBTztBQUMvQyxlQUFPOztBQUdULGFBQU8sSUFBSSxLQUFJO0lBQ2pCO0FBWkEsWUFBQSxXQUFBO0FBc0JBLGFBQWdCLGtCQUNkLE1BQ0EsU0FBc0I7QUFFdEIsWUFBTUUsVUFBbUIsU0FBUyxNQUFNLE9BQU8sRUFDNUMsTUFBTSxJQUFJLEVBQ1YsT0FBTyxPQUFLLE1BQU0sRUFBRTtBQUV2QixhQUFPQTtJQUNUO0FBVEEsWUFBQSxvQkFBQTtBQXFCQSxhQUFnQixnQkFBZ0IsTUFBYyxTQUFzQjtBQUNsRSxZQUFNLFlBQVksQ0FBQyxRQUFRLFFBQVEsTUFBTTtBQUN6QyxZQUFNLGFBQWEsQ0FBQyxTQUFTLFNBQVMsT0FBTztBQUM3QyxZQUFNLE1BQU0sU0FBUyxNQUFNLE9BQU87QUFDbEMsVUFBSSxVQUFVLFNBQVMsR0FBRztBQUFHLGVBQU87QUFDcEMsVUFBSSxXQUFXLFNBQVMsR0FBRztBQUFHLGVBQU87QUFDckMsWUFBTSxJQUFJLFVBQ1IsNkRBQTZEOzJFQUNpQjtJQUVsRjtBQVZBLFlBQUEsa0JBQUE7QUFtQkEsYUFBZ0IsVUFBVSxNQUFjLE9BQVU7QUFDaEQsY0FBUSxPQUFPLE1BQU0sR0FBRyxHQUFHO0FBQzNCLGdCQUFBLGFBQWEsY0FBYyxFQUFDLEtBQUksR0FBRyxLQUFLO0lBQzFDO0FBSEEsWUFBQSxZQUFBO0FBVUEsYUFBZ0IsZUFBZSxTQUFnQjtBQUM3QyxnQkFBQSxNQUFNLFFBQVEsVUFBVSxPQUFPLEtBQUs7SUFDdEM7QUFGQSxZQUFBLGlCQUFBO0FBYUEsYUFBZ0JDLFdBQVUsU0FBdUI7QUFDL0MsY0FBUSxXQUFXLFNBQVM7QUFFNUIsTUFBQUMsT0FBTSxPQUFPO0lBQ2Y7QUFKQSxZQUFBLFlBQUFEO0FBYUEsYUFBZ0IsVUFBTztBQUNyQixhQUFPLFFBQVEsSUFBSSxvQkFBb0I7SUFDekM7QUFGQSxZQUFBLFVBQUE7QUFRQSxhQUFnQkUsT0FBTSxTQUFlO0FBQ25DLGdCQUFBLGFBQWEsU0FBUyxDQUFBLEdBQUksT0FBTztJQUNuQztBQUZBLFlBQUEsUUFBQUE7QUFTQSxhQUFnQkQsT0FDZCxTQUNBLGFBQW1DLENBQUEsR0FBRTtBQUVyQyxnQkFBQSxhQUNFLFNBQ0EsUUFBQSxvQkFBb0IsVUFBVSxHQUM5QixtQkFBbUIsUUFBUSxRQUFRLFNBQVEsSUFBSyxPQUFPO0lBRTNEO0FBVEEsWUFBQSxRQUFBQTtBQWdCQSxhQUFnQixRQUNkLFNBQ0EsYUFBbUMsQ0FBQSxHQUFFO0FBRXJDLGdCQUFBLGFBQ0UsV0FDQSxRQUFBLG9CQUFvQixVQUFVLEdBQzlCLG1CQUFtQixRQUFRLFFBQVEsU0FBUSxJQUFLLE9BQU87SUFFM0Q7QUFUQSxZQUFBLFVBQUE7QUFnQkEsYUFBZ0IsT0FDZCxTQUNBLGFBQW1DLENBQUEsR0FBRTtBQUVyQyxnQkFBQSxhQUNFLFVBQ0EsUUFBQSxvQkFBb0IsVUFBVSxHQUM5QixtQkFBbUIsUUFBUSxRQUFRLFNBQVEsSUFBSyxPQUFPO0lBRTNEO0FBVEEsWUFBQSxTQUFBO0FBZUEsYUFBZ0JFLE1BQUssU0FBZTtBQUNsQyxjQUFRLE9BQU8sTUFBTSxVQUFVLEdBQUcsR0FBRztJQUN2QztBQUZBLFlBQUEsT0FBQUE7QUFXQSxhQUFnQkMsWUFBVyxNQUFZO0FBQ3JDLGdCQUFBLE1BQU0sU0FBUyxJQUFJO0lBQ3JCO0FBRkEsWUFBQSxhQUFBQTtBQU9BLGFBQWdCQyxZQUFRO0FBQ3RCLGdCQUFBLE1BQU0sVUFBVTtJQUNsQjtBQUZBLFlBQUEsV0FBQUE7QUFZQSxhQUFzQixNQUFTLE1BQWMsSUFBb0I7O0FBQy9ELFFBQUFELFlBQVcsSUFBSTtBQUVmLFlBQUk7QUFFSixZQUFJO0FBQ0YsbUJBQVMsTUFBTSxHQUFFOztBQUVqQixVQUFBQyxVQUFROztBQUdWLGVBQU87TUFDVCxDQUFDOztBQVpELFlBQUEsUUFBQTtBQXlCQSxhQUFnQixVQUFVLE1BQWMsT0FBVTtBQUNoRCxnQkFBQSxhQUFhLGNBQWMsRUFBQyxLQUFJLEdBQUcsS0FBSztJQUMxQztBQUZBLFlBQUEsWUFBQTtBQVVBLGFBQWdCLFNBQVMsTUFBWTtBQUNuQyxhQUFPLFFBQVEsSUFBSSxTQUFTLFdBQVc7SUFDekM7QUFGQSxZQUFBLFdBQUE7QUFJQSxhQUFzQixXQUFXLEtBQVk7O0FBQzNDLGVBQU8sTUFBTSxhQUFBLFdBQVcsV0FBVyxHQUFHO01BQ3hDLENBQUM7O0FBRkQsWUFBQSxhQUFBO0FBT0EsUUFBQSxZQUFBO0FBQVEsV0FBQSxlQUFBLFNBQUEsV0FBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFVBQUE7SUFBTyxFQUFBLENBQUE7QUFLZixRQUFBLFlBQUE7QUFBUSxXQUFBLGVBQUEsU0FBQSxtQkFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFVBQUE7SUFBZSxFQUFBLENBQUE7QUFLdkIsUUFBQSxlQUFBO0FBQVEsV0FBQSxlQUFBLFNBQUEsZUFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLGFBQUE7SUFBVyxFQUFBLENBQUE7QUFBRSxXQUFBLGVBQUEsU0FBQSxlQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsYUFBQTtJQUFXLEVBQUEsQ0FBQTtBQUFFLFdBQUEsZUFBQSxTQUFBLGtCQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsYUFBQTtJQUFjLEVBQUEsQ0FBQTs7Ozs7QUN0WWhEO0FBQUEsNENBQUFDLFNBQUE7QUFBQTtBQUVBLElBQUFBLFFBQU8sVUFBVSxDQUFDLE1BQU0sT0FBTyxRQUFRLFNBQVM7QUFDL0MsWUFBTSxTQUFTLEtBQUssV0FBVyxHQUFHLElBQUksS0FBTSxLQUFLLFdBQVcsSUFBSSxNQUFNO0FBQ3RFLFlBQU0sV0FBVyxLQUFLLFFBQVEsU0FBUyxJQUFJO0FBQzNDLFlBQU0scUJBQXFCLEtBQUssUUFBUSxJQUFJO0FBQzVDLGFBQU8sYUFBYSxPQUFPLHVCQUF1QixNQUFNLFdBQVc7QUFBQSxJQUNwRTtBQUFBO0FBQUE7OztBQ1BBO0FBQUEscUVBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQU0sS0FBSyxRQUFRO0FBQ25CLFFBQU0sTUFBTSxRQUFRO0FBQ3BCLFFBQU0sVUFBVTtBQUVoQixRQUFNLEVBQUMsSUFBRyxJQUFJO0FBRWQsUUFBSTtBQUNKLFFBQUksUUFBUSxVQUFVLEtBQ3JCLFFBQVEsV0FBVyxLQUNuQixRQUFRLGFBQWEsS0FDckIsUUFBUSxhQUFhLEdBQUc7QUFDeEIsbUJBQWE7QUFBQSxJQUNkLFdBQVcsUUFBUSxPQUFPLEtBQ3pCLFFBQVEsUUFBUSxLQUNoQixRQUFRLFlBQVksS0FDcEIsUUFBUSxjQUFjLEdBQUc7QUFDekIsbUJBQWE7QUFBQSxJQUNkO0FBRUEsUUFBSSxpQkFBaUIsS0FBSztBQUN6QixVQUFJLElBQUksZ0JBQWdCLFFBQVE7QUFDL0IscUJBQWE7QUFBQSxNQUNkLFdBQVcsSUFBSSxnQkFBZ0IsU0FBUztBQUN2QyxxQkFBYTtBQUFBLE1BQ2QsT0FBTztBQUNOLHFCQUFhLElBQUksWUFBWSxXQUFXLElBQUksSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLGFBQWEsRUFBRSxHQUFHLENBQUM7QUFBQSxNQUMxRjtBQUFBLElBQ0Q7QUFFQSxhQUFTLGVBQWUsT0FBTztBQUM5QixVQUFJLFVBQVUsR0FBRztBQUNoQixlQUFPO0FBQUEsTUFDUjtBQUVBLGFBQU87QUFBQSxRQUNOO0FBQUEsUUFDQSxVQUFVO0FBQUEsUUFDVixRQUFRLFNBQVM7QUFBQSxRQUNqQixRQUFRLFNBQVM7QUFBQSxNQUNsQjtBQUFBLElBQ0Q7QUFFQSxhQUFTLGNBQWMsWUFBWSxhQUFhO0FBQy9DLFVBQUksZUFBZSxHQUFHO0FBQ3JCLGVBQU87QUFBQSxNQUNSO0FBRUEsVUFBSSxRQUFRLFdBQVcsS0FDdEIsUUFBUSxZQUFZLEtBQ3BCLFFBQVEsaUJBQWlCLEdBQUc7QUFDNUIsZUFBTztBQUFBLE1BQ1I7QUFFQSxVQUFJLFFBQVEsV0FBVyxHQUFHO0FBQ3pCLGVBQU87QUFBQSxNQUNSO0FBRUEsVUFBSSxjQUFjLENBQUMsZUFBZSxlQUFlLFFBQVc7QUFDM0QsZUFBTztBQUFBLE1BQ1I7QUFFQSxZQUFNLE1BQU0sY0FBYztBQUUxQixVQUFJLElBQUksU0FBUyxRQUFRO0FBQ3hCLGVBQU87QUFBQSxNQUNSO0FBRUEsVUFBSSxRQUFRLGFBQWEsU0FBUztBQUdqQyxjQUFNLFlBQVksR0FBRyxRQUFRLEVBQUUsTUFBTSxHQUFHO0FBQ3hDLFlBQ0MsT0FBTyxVQUFVLEVBQUUsS0FBSyxNQUN4QixPQUFPLFVBQVUsRUFBRSxLQUFLLE9BQ3ZCO0FBQ0QsaUJBQU8sT0FBTyxVQUFVLEVBQUUsS0FBSyxRQUFRLElBQUk7QUFBQSxRQUM1QztBQUVBLGVBQU87QUFBQSxNQUNSO0FBRUEsVUFBSSxRQUFRLEtBQUs7QUFDaEIsWUFBSSxDQUFDLFVBQVUsWUFBWSxZQUFZLGFBQWEsa0JBQWtCLFdBQVcsRUFBRSxLQUFLLFVBQVEsUUFBUSxHQUFHLEtBQUssSUFBSSxZQUFZLFlBQVk7QUFDM0ksaUJBQU87QUFBQSxRQUNSO0FBRUEsZUFBTztBQUFBLE1BQ1I7QUFFQSxVQUFJLHNCQUFzQixLQUFLO0FBQzlCLGVBQU8sZ0NBQWdDLEtBQUssSUFBSSxnQkFBZ0IsSUFBSSxJQUFJO0FBQUEsTUFDekU7QUFFQSxVQUFJLElBQUksY0FBYyxhQUFhO0FBQ2xDLGVBQU87QUFBQSxNQUNSO0FBRUEsVUFBSSxrQkFBa0IsS0FBSztBQUMxQixjQUFNLFVBQVUsVUFBVSxJQUFJLHdCQUF3QixJQUFJLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRTtBQUUzRSxnQkFBUSxJQUFJO0FBQUEsZUFDTjtBQUNKLG1CQUFPLFdBQVcsSUFBSSxJQUFJO0FBQUEsZUFDdEI7QUFDSixtQkFBTztBQUFBO0FBQUEsTUFHVjtBQUVBLFVBQUksaUJBQWlCLEtBQUssSUFBSSxJQUFJLEdBQUc7QUFDcEMsZUFBTztBQUFBLE1BQ1I7QUFFQSxVQUFJLDhEQUE4RCxLQUFLLElBQUksSUFBSSxHQUFHO0FBQ2pGLGVBQU87QUFBQSxNQUNSO0FBRUEsVUFBSSxlQUFlLEtBQUs7QUFDdkIsZUFBTztBQUFBLE1BQ1I7QUFFQSxhQUFPO0FBQUEsSUFDUjtBQUVBLGFBQVMsZ0JBQWdCLFFBQVE7QUFDaEMsWUFBTSxRQUFRLGNBQWMsUUFBUSxVQUFVLE9BQU8sS0FBSztBQUMxRCxhQUFPLGVBQWUsS0FBSztBQUFBLElBQzVCO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUEsTUFDaEIsZUFBZTtBQUFBLE1BQ2YsUUFBUSxlQUFlLGNBQWMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUN6RCxRQUFRLGVBQWUsY0FBYyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUFBLElBQzFEO0FBQUE7QUFBQTs7O0FDdElBO0FBQUEsK0NBQUFDLFNBQUE7QUFBQTtBQUVBLFFBQU0sbUJBQW1CLENBQUMsUUFBUSxXQUFXLGFBQWE7QUFDekQsVUFBSSxRQUFRLE9BQU8sUUFBUSxTQUFTO0FBQ3BDLFVBQUksVUFBVSxJQUFJO0FBQ2pCLGVBQU87QUFBQSxNQUNSO0FBRUEsWUFBTSxrQkFBa0IsVUFBVTtBQUNsQyxVQUFJLFdBQVc7QUFDZixVQUFJLGNBQWM7QUFDbEIsU0FBRztBQUNGLHVCQUFlLE9BQU8sT0FBTyxVQUFVLFFBQVEsUUFBUSxJQUFJLFlBQVk7QUFDdkUsbUJBQVcsUUFBUTtBQUNuQixnQkFBUSxPQUFPLFFBQVEsV0FBVyxRQUFRO0FBQUEsTUFDM0MsU0FBUyxVQUFVO0FBRW5CLHFCQUFlLE9BQU8sT0FBTyxRQUFRO0FBQ3JDLGFBQU87QUFBQSxJQUNSO0FBRUEsUUFBTSxpQ0FBaUMsQ0FBQyxRQUFRLFFBQVEsU0FBUyxVQUFVO0FBQzFFLFVBQUksV0FBVztBQUNmLFVBQUksY0FBYztBQUNsQixTQUFHO0FBQ0YsY0FBTSxRQUFRLE9BQU8sUUFBUSxPQUFPO0FBQ3BDLHVCQUFlLE9BQU8sT0FBTyxXQUFXLFFBQVEsUUFBUSxJQUFJLFNBQVMsUUFBUSxJQUFJLFVBQVUsUUFBUSxTQUFTLFFBQVE7QUFDcEgsbUJBQVcsUUFBUTtBQUNuQixnQkFBUSxPQUFPLFFBQVEsTUFBTSxRQUFRO0FBQUEsTUFDdEMsU0FBUyxVQUFVO0FBRW5CLHFCQUFlLE9BQU8sT0FBTyxRQUFRO0FBQ3JDLGFBQU87QUFBQSxJQUNSO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUEsTUFDaEI7QUFBQSxNQUNBO0FBQUEsSUFDRDtBQUFBO0FBQUE7OztBQ3RDQTtBQUFBLG9EQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFNLGlCQUFpQjtBQUN2QixRQUFNLGNBQWM7QUFDcEIsUUFBTSxlQUFlO0FBQ3JCLFFBQU0sZUFBZTtBQUVyQixRQUFNLFVBQVUsb0JBQUksSUFBSTtBQUFBLE1BQ3ZCLENBQUMsS0FBSyxJQUFJO0FBQUEsTUFDVixDQUFDLEtBQUssSUFBSTtBQUFBLE1BQ1YsQ0FBQyxLQUFLLEdBQUk7QUFBQSxNQUNWLENBQUMsS0FBSyxJQUFJO0FBQUEsTUFDVixDQUFDLEtBQUssSUFBSTtBQUFBLE1BQ1YsQ0FBQyxLQUFLLElBQUk7QUFBQSxNQUNWLENBQUMsS0FBSyxJQUFJO0FBQUEsTUFDVixDQUFDLE1BQU0sSUFBSTtBQUFBLE1BQ1gsQ0FBQyxLQUFLLE1BQVE7QUFBQSxNQUNkLENBQUMsS0FBSyxNQUFRO0FBQUEsSUFDZixDQUFDO0FBRUQsYUFBU0MsVUFBUyxHQUFHO0FBQ3BCLFlBQU0sSUFBSSxFQUFFLE9BQU87QUFDbkIsWUFBTSxVQUFVLEVBQUUsT0FBTztBQUV6QixVQUFLLEtBQUssQ0FBQyxXQUFXLEVBQUUsV0FBVyxLQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsV0FBVyxHQUFJO0FBQzFFLGVBQU8sT0FBTyxhQUFhLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7QUFBQSxNQUNwRDtBQUVBLFVBQUksS0FBSyxTQUFTO0FBQ2pCLGVBQU8sT0FBTyxjQUFjLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUFBLE1BQ3pEO0FBRUEsYUFBTyxRQUFRLElBQUksQ0FBQyxLQUFLO0FBQUEsSUFDMUI7QUFFQSxhQUFTLGVBQWUsTUFBTSxZQUFZO0FBQ3pDLFlBQU0sVUFBVSxDQUFDO0FBQ2pCLFlBQU0sU0FBUyxXQUFXLEtBQUssRUFBRSxNQUFNLFVBQVU7QUFDakQsVUFBSTtBQUVKLGlCQUFXLFNBQVMsUUFBUTtBQUMzQixjQUFNLFNBQVMsT0FBTyxLQUFLO0FBQzNCLFlBQUksQ0FBQyxPQUFPLE1BQU0sTUFBTSxHQUFHO0FBQzFCLGtCQUFRLEtBQUssTUFBTTtBQUFBLFFBQ3BCLFdBQVksVUFBVSxNQUFNLE1BQU0sWUFBWSxHQUFJO0FBQ2pELGtCQUFRLEtBQUssUUFBUSxHQUFHLFFBQVEsY0FBYyxDQUFDLEdBQUcsUUFBUSxjQUFjLFNBQVNBLFVBQVMsTUFBTSxJQUFJLFNBQVMsQ0FBQztBQUFBLFFBQy9HLE9BQU87QUFDTixnQkFBTSxJQUFJLE1BQU0sMENBQTBDLG9CQUFvQixRQUFRO0FBQUEsUUFDdkY7QUFBQSxNQUNEO0FBRUEsYUFBTztBQUFBLElBQ1I7QUFFQSxhQUFTLFdBQVcsT0FBTztBQUMxQixrQkFBWSxZQUFZO0FBRXhCLFlBQU0sVUFBVSxDQUFDO0FBQ2pCLFVBQUk7QUFFSixjQUFRLFVBQVUsWUFBWSxLQUFLLEtBQUssT0FBTyxNQUFNO0FBQ3BELGNBQU0sT0FBTyxRQUFRO0FBRXJCLFlBQUksUUFBUSxJQUFJO0FBQ2YsZ0JBQU0sT0FBTyxlQUFlLE1BQU0sUUFBUSxFQUFFO0FBQzVDLGtCQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFBQSxRQUNqQyxPQUFPO0FBQ04sa0JBQVEsS0FBSyxDQUFDLElBQUksQ0FBQztBQUFBLFFBQ3BCO0FBQUEsTUFDRDtBQUVBLGFBQU87QUFBQSxJQUNSO0FBRUEsYUFBUyxXQUFXQyxRQUFPLFFBQVE7QUFDbEMsWUFBTSxVQUFVLENBQUM7QUFFakIsaUJBQVcsU0FBUyxRQUFRO0FBQzNCLG1CQUFXLFNBQVMsTUFBTSxRQUFRO0FBQ2pDLGtCQUFRLE1BQU0sTUFBTSxNQUFNLFVBQVUsT0FBTyxNQUFNLE1BQU0sQ0FBQztBQUFBLFFBQ3pEO0FBQUEsTUFDRDtBQUVBLFVBQUksVUFBVUE7QUFDZCxpQkFBVyxDQUFDLFdBQVdDLE9BQU0sS0FBSyxPQUFPLFFBQVEsT0FBTyxHQUFHO0FBQzFELFlBQUksQ0FBQyxNQUFNLFFBQVFBLE9BQU0sR0FBRztBQUMzQjtBQUFBLFFBQ0Q7QUFFQSxZQUFJLEVBQUUsYUFBYSxVQUFVO0FBQzVCLGdCQUFNLElBQUksTUFBTSx3QkFBd0IsV0FBVztBQUFBLFFBQ3BEO0FBRUEsa0JBQVVBLFFBQU8sU0FBUyxJQUFJLFFBQVEsV0FBVyxHQUFHQSxPQUFNLElBQUksUUFBUTtBQUFBLE1BQ3ZFO0FBRUEsYUFBTztBQUFBLElBQ1I7QUFFQSxJQUFBSCxRQUFPLFVBQVUsQ0FBQ0UsUUFBTyxjQUFjO0FBQ3RDLFlBQU0sU0FBUyxDQUFDO0FBQ2hCLFlBQU0sU0FBUyxDQUFDO0FBQ2hCLFVBQUksUUFBUSxDQUFDO0FBR2IsZ0JBQVUsUUFBUSxnQkFBZ0IsQ0FBQyxHQUFHLGlCQUFpQixTQUFTLE9BQU8sT0FBTyxjQUFjO0FBQzNGLFlBQUksaUJBQWlCO0FBQ3BCLGdCQUFNLEtBQUtELFVBQVMsZUFBZSxDQUFDO0FBQUEsUUFDckMsV0FBVyxPQUFPO0FBQ2pCLGdCQUFNLFNBQVMsTUFBTSxLQUFLLEVBQUU7QUFDNUIsa0JBQVEsQ0FBQztBQUNULGlCQUFPLEtBQUssT0FBTyxXQUFXLElBQUksU0FBUyxXQUFXQyxRQUFPLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDNUUsaUJBQU8sS0FBSyxFQUFDLFNBQVMsUUFBUSxXQUFXLEtBQUssRUFBQyxDQUFDO0FBQUEsUUFDakQsV0FBVyxPQUFPO0FBQ2pCLGNBQUksT0FBTyxXQUFXLEdBQUc7QUFDeEIsa0JBQU0sSUFBSSxNQUFNLDhDQUE4QztBQUFBLFVBQy9EO0FBRUEsaUJBQU8sS0FBSyxXQUFXQSxRQUFPLE1BQU0sRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDckQsa0JBQVEsQ0FBQztBQUNULGlCQUFPLElBQUk7QUFBQSxRQUNaLE9BQU87QUFDTixnQkFBTSxLQUFLLFNBQVM7QUFBQSxRQUNyQjtBQUFBLE1BQ0QsQ0FBQztBQUVELGFBQU8sS0FBSyxNQUFNLEtBQUssRUFBRSxDQUFDO0FBRTFCLFVBQUksT0FBTyxTQUFTLEdBQUc7QUFDdEIsY0FBTSxhQUFhLHFDQUFxQyxPQUFPLHlCQUF5QixPQUFPLFdBQVcsSUFBSSxLQUFLO0FBQ25ILGNBQU0sSUFBSSxNQUFNLFVBQVU7QUFBQSxNQUMzQjtBQUVBLGFBQU8sT0FBTyxLQUFLLEVBQUU7QUFBQSxJQUN0QjtBQUFBO0FBQUE7OztBQ3JJQTtBQUFBLGdEQUFBRSxTQUFBO0FBQUE7QUFDQSxRQUFNLGFBQWE7QUFDbkIsUUFBTSxFQUFDLFFBQVEsYUFBYSxRQUFRLFlBQVcsSUFBSTtBQUNuRCxRQUFNO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxJQUNELElBQUk7QUFFSixRQUFNLEVBQUMsUUFBTyxJQUFJO0FBR2xCLFFBQU0sZUFBZTtBQUFBLE1BQ3BCO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRDtBQUVBLFFBQU0sU0FBUyx1QkFBTyxPQUFPLElBQUk7QUFFakMsUUFBTSxlQUFlLENBQUMsUUFBUSxVQUFVLENBQUMsTUFBTTtBQUM5QyxVQUFJLFFBQVEsU0FBUyxFQUFFLE9BQU8sVUFBVSxRQUFRLEtBQUssS0FBSyxRQUFRLFNBQVMsS0FBSyxRQUFRLFNBQVMsSUFBSTtBQUNwRyxjQUFNLElBQUksTUFBTSxxREFBcUQ7QUFBQSxNQUN0RTtBQUdBLFlBQU0sYUFBYSxjQUFjLFlBQVksUUFBUTtBQUNyRCxhQUFPLFFBQVEsUUFBUSxVQUFVLFNBQVksYUFBYSxRQUFRO0FBQUEsSUFDbkU7QUFFQSxRQUFNLGFBQU4sTUFBaUI7QUFBQSxNQUNoQixZQUFZLFNBQVM7QUFFcEIsZUFBTyxhQUFhLE9BQU87QUFBQSxNQUM1QjtBQUFBLElBQ0Q7QUFFQSxRQUFNLGVBQWUsYUFBVztBQUMvQixZQUFNQyxTQUFRLENBQUM7QUFDZixtQkFBYUEsUUFBTyxPQUFPO0FBRTNCLE1BQUFBLE9BQU0sV0FBVyxJQUFJLGVBQWUsU0FBU0EsT0FBTSxVQUFVLEdBQUcsVUFBVTtBQUUxRSxhQUFPLGVBQWVBLFFBQU9DLE9BQU0sU0FBUztBQUM1QyxhQUFPLGVBQWVELE9BQU0sVUFBVUEsTUFBSztBQUUzQyxNQUFBQSxPQUFNLFNBQVMsY0FBYyxNQUFNO0FBQ2xDLGNBQU0sSUFBSSxNQUFNLDBFQUEwRTtBQUFBLE1BQzNGO0FBRUEsTUFBQUEsT0FBTSxTQUFTLFdBQVc7QUFFMUIsYUFBT0EsT0FBTTtBQUFBLElBQ2Q7QUFFQSxhQUFTQyxPQUFNLFNBQVM7QUFDdkIsYUFBTyxhQUFhLE9BQU87QUFBQSxJQUM1QjtBQUVBLGVBQVcsQ0FBQyxXQUFXLEtBQUssS0FBSyxPQUFPLFFBQVEsVUFBVSxHQUFHO0FBQzVELGFBQU8sYUFBYTtBQUFBLFFBQ25CLE1BQU07QUFDTCxnQkFBTSxVQUFVLGNBQWMsTUFBTSxhQUFhLE1BQU0sTUFBTSxNQUFNLE9BQU8sS0FBSyxPQUFPLEdBQUcsS0FBSyxRQUFRO0FBQ3RHLGlCQUFPLGVBQWUsTUFBTSxXQUFXLEVBQUMsT0FBTyxRQUFPLENBQUM7QUFDdkQsaUJBQU87QUFBQSxRQUNSO0FBQUEsTUFDRDtBQUFBLElBQ0Q7QUFFQSxXQUFPLFVBQVU7QUFBQSxNQUNoQixNQUFNO0FBQ0wsY0FBTSxVQUFVLGNBQWMsTUFBTSxLQUFLLFNBQVMsSUFBSTtBQUN0RCxlQUFPLGVBQWUsTUFBTSxXQUFXLEVBQUMsT0FBTyxRQUFPLENBQUM7QUFDdkQsZUFBTztBQUFBLE1BQ1I7QUFBQSxJQUNEO0FBRUEsUUFBTSxhQUFhLENBQUMsT0FBTyxPQUFPLFdBQVcsT0FBTyxPQUFPLE9BQU8sUUFBUSxTQUFTO0FBRW5GLGVBQVcsU0FBUyxZQUFZO0FBQy9CLGFBQU8sU0FBUztBQUFBLFFBQ2YsTUFBTTtBQUNMLGdCQUFNLEVBQUMsTUFBSyxJQUFJO0FBQ2hCLGlCQUFPLFlBQWEsWUFBWTtBQUMvQixrQkFBTSxTQUFTLGFBQWEsV0FBVyxNQUFNLGFBQWEsUUFBUSxPQUFPLEdBQUcsVUFBVSxHQUFHLFdBQVcsTUFBTSxPQUFPLEtBQUssT0FBTztBQUM3SCxtQkFBTyxjQUFjLE1BQU0sUUFBUSxLQUFLLFFBQVE7QUFBQSxVQUNqRDtBQUFBLFFBQ0Q7QUFBQSxNQUNEO0FBQUEsSUFDRDtBQUVBLGVBQVcsU0FBUyxZQUFZO0FBQy9CLFlBQU0sVUFBVSxPQUFPLE1BQU0sR0FBRyxZQUFZLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0QsYUFBTyxXQUFXO0FBQUEsUUFDakIsTUFBTTtBQUNMLGdCQUFNLEVBQUMsTUFBSyxJQUFJO0FBQ2hCLGlCQUFPLFlBQWEsWUFBWTtBQUMvQixrQkFBTSxTQUFTLGFBQWEsV0FBVyxRQUFRLGFBQWEsUUFBUSxPQUFPLEdBQUcsVUFBVSxHQUFHLFdBQVcsUUFBUSxPQUFPLEtBQUssT0FBTztBQUNqSSxtQkFBTyxjQUFjLE1BQU0sUUFBUSxLQUFLLFFBQVE7QUFBQSxVQUNqRDtBQUFBLFFBQ0Q7QUFBQSxNQUNEO0FBQUEsSUFDRDtBQUVBLFFBQU0sUUFBUSxPQUFPLGlCQUFpQixNQUFNO0FBQUEsSUFBQyxHQUFHO0FBQUEsTUFDL0MsR0FBRztBQUFBLE1BQ0gsT0FBTztBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osTUFBTTtBQUNMLGlCQUFPLEtBQUssV0FBVztBQUFBLFFBQ3hCO0FBQUEsUUFDQSxJQUFJLE9BQU87QUFDVixlQUFLLFdBQVcsUUFBUTtBQUFBLFFBQ3pCO0FBQUEsTUFDRDtBQUFBLElBQ0QsQ0FBQztBQUVELFFBQU0sZUFBZSxDQUFDLE1BQU0sT0FBTyxXQUFXO0FBQzdDLFVBQUk7QUFDSixVQUFJO0FBQ0osVUFBSSxXQUFXLFFBQVc7QUFDekIsa0JBQVU7QUFDVixtQkFBVztBQUFBLE1BQ1osT0FBTztBQUNOLGtCQUFVLE9BQU8sVUFBVTtBQUMzQixtQkFBVyxRQUFRLE9BQU87QUFBQSxNQUMzQjtBQUVBLGFBQU87QUFBQSxRQUNOO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0Q7QUFBQSxJQUNEO0FBRUEsUUFBTSxnQkFBZ0IsQ0FBQ0MsT0FBTSxTQUFTLGFBQWE7QUFDbEQsWUFBTSxVQUFVLElBQUksZUFBZTtBQUNsQyxZQUFJLFFBQVEsV0FBVyxFQUFFLEtBQUssUUFBUSxXQUFXLEdBQUcsR0FBRyxHQUFHO0FBRXpELGlCQUFPLFdBQVcsU0FBUyxTQUFTLFNBQVMsR0FBRyxVQUFVLENBQUM7QUFBQSxRQUM1RDtBQUlBLGVBQU8sV0FBVyxTQUFVLFdBQVcsV0FBVyxJQUFNLEtBQUssV0FBVyxLQUFNLFdBQVcsS0FBSyxHQUFHLENBQUM7QUFBQSxNQUNuRztBQUlBLGFBQU8sZUFBZSxTQUFTLEtBQUs7QUFFcEMsY0FBUSxhQUFhQTtBQUNyQixjQUFRLFVBQVU7QUFDbEIsY0FBUSxXQUFXO0FBRW5CLGFBQU87QUFBQSxJQUNSO0FBRUEsUUFBTSxhQUFhLENBQUNBLE9BQU0sV0FBVztBQUNwQyxVQUFJQSxNQUFLLFNBQVMsS0FBSyxDQUFDLFFBQVE7QUFDL0IsZUFBT0EsTUFBSyxXQUFXLEtBQUs7QUFBQSxNQUM3QjtBQUVBLFVBQUksU0FBU0EsTUFBSztBQUVsQixVQUFJLFdBQVcsUUFBVztBQUN6QixlQUFPO0FBQUEsTUFDUjtBQUVBLFlBQU0sRUFBQyxTQUFTLFNBQVEsSUFBSTtBQUM1QixVQUFJLE9BQU8sUUFBUSxNQUFRLE1BQU0sSUFBSTtBQUNwQyxlQUFPLFdBQVcsUUFBVztBQUk1QixtQkFBUyxpQkFBaUIsUUFBUSxPQUFPLE9BQU8sT0FBTyxJQUFJO0FBRTNELG1CQUFTLE9BQU87QUFBQSxRQUNqQjtBQUFBLE1BQ0Q7QUFLQSxZQUFNLFVBQVUsT0FBTyxRQUFRLElBQUk7QUFDbkMsVUFBSSxZQUFZLElBQUk7QUFDbkIsaUJBQVMsK0JBQStCLFFBQVEsVUFBVSxTQUFTLE9BQU87QUFBQSxNQUMzRTtBQUVBLGFBQU8sVUFBVSxTQUFTO0FBQUEsSUFDM0I7QUFFQSxRQUFJO0FBQ0osUUFBTSxXQUFXLENBQUNGLFdBQVUsWUFBWTtBQUN2QyxZQUFNLENBQUMsV0FBVyxJQUFJO0FBRXRCLFVBQUksQ0FBQyxRQUFRLFdBQVcsS0FBSyxDQUFDLFFBQVEsWUFBWSxHQUFHLEdBQUc7QUFHdkQsZUFBTyxRQUFRLEtBQUssR0FBRztBQUFBLE1BQ3hCO0FBRUEsWUFBTSxhQUFhLFFBQVEsTUFBTSxDQUFDO0FBQ2xDLFlBQU0sUUFBUSxDQUFDLFlBQVksSUFBSSxFQUFFO0FBRWpDLGVBQVMsSUFBSSxHQUFHLElBQUksWUFBWSxRQUFRLEtBQUs7QUFDNUMsY0FBTTtBQUFBLFVBQ0wsT0FBTyxXQUFXLElBQUksRUFBRSxFQUFFLFFBQVEsV0FBVyxNQUFNO0FBQUEsVUFDbkQsT0FBTyxZQUFZLElBQUksRUFBRTtBQUFBLFFBQzFCO0FBQUEsTUFDRDtBQUVBLFVBQUksYUFBYSxRQUFXO0FBQzNCLG1CQUFXO0FBQUEsTUFDWjtBQUVBLGFBQU8sU0FBU0EsUUFBTyxNQUFNLEtBQUssRUFBRSxDQUFDO0FBQUEsSUFDdEM7QUFFQSxXQUFPLGlCQUFpQkMsT0FBTSxXQUFXLE1BQU07QUFFL0MsUUFBTUQsU0FBUUMsT0FBTTtBQUNwQixJQUFBRCxPQUFNLGdCQUFnQjtBQUN0QixJQUFBQSxPQUFNLFNBQVNDLE9BQU0sRUFBQyxPQUFPLGNBQWMsWUFBWSxRQUFRLEVBQUMsQ0FBQztBQUNqRSxJQUFBRCxPQUFNLE9BQU8sZ0JBQWdCO0FBRTdCLElBQUFELFFBQU8sVUFBVUM7QUFBQTtBQUFBOzs7QUNwT2pCO0FBQUEsZ0RBQUFHLFNBQUE7QUFDQSxRQUFJLGFBQWEsT0FBTyxVQUFVLFlBQVksVUFBVSxPQUFPLFdBQVcsVUFBVTtBQUVwRixJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNIakI7QUFBQSwwQ0FBQUMsU0FBQTtBQUFBLFFBQUksYUFBYTtBQUdqQixRQUFJLFdBQVcsT0FBTyxRQUFRLFlBQVksUUFBUSxLQUFLLFdBQVcsVUFBVTtBQUc1RSxRQUFJLE9BQU8sY0FBYyxZQUFZLFNBQVMsYUFBYSxFQUFFO0FBRTdELElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ1JqQjtBQUFBLDRDQUFBQyxTQUFBO0FBQUEsUUFBSSxPQUFPO0FBR1gsUUFBSUMsVUFBUyxLQUFLO0FBRWxCLElBQUFELFFBQU8sVUFBVUM7QUFBQTtBQUFBOzs7QUNMakI7QUFBQSwrQ0FBQUMsU0FBQTtBQVFBLGFBQVMsVUFBVSxRQUFRLE9BQU87QUFDaEMsVUFBSSxRQUFRLElBQ1IsU0FBUyxPQUFPO0FBRXBCLGdCQUFVLFFBQVEsTUFBTSxNQUFNO0FBQzlCLGFBQU8sRUFBRSxRQUFRLFFBQVE7QUFDdkIsY0FBTSxTQUFTLE9BQU87QUFBQSxNQUN4QjtBQUNBLGFBQU87QUFBQSxJQUNUO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDbkJqQjtBQUFBLCtDQUFBQyxTQUFBO0FBQUEsUUFBSUMsVUFBUztBQUdiLFFBQUksY0FBYyxPQUFPO0FBR3pCLFFBQUksaUJBQWlCLFlBQVk7QUFPakMsUUFBSSx1QkFBdUIsWUFBWTtBQUd2QyxRQUFJLGlCQUFpQkEsVUFBU0EsUUFBTyxjQUFjO0FBU25ELGFBQVMsVUFBVSxPQUFPO0FBQ3hCLFVBQUksUUFBUSxlQUFlLEtBQUssT0FBTyxjQUFjLEdBQ2pELE1BQU0sTUFBTTtBQUVoQixVQUFJO0FBQ0YsY0FBTSxrQkFBa0I7QUFDeEIsWUFBSSxXQUFXO0FBQUEsTUFDakIsU0FBUyxHQUFQO0FBQUEsTUFBVztBQUViLFVBQUksU0FBUyxxQkFBcUIsS0FBSyxLQUFLO0FBQzVDLFVBQUksVUFBVTtBQUNaLFlBQUksT0FBTztBQUNULGdCQUFNLGtCQUFrQjtBQUFBLFFBQzFCLE9BQU87QUFDTCxpQkFBTyxNQUFNO0FBQUEsUUFDZjtBQUFBLE1BQ0Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUVBLElBQUFELFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQzdDakI7QUFBQSxvREFBQUUsU0FBQTtBQUNBLFFBQUksY0FBYyxPQUFPO0FBT3pCLFFBQUksdUJBQXVCLFlBQVk7QUFTdkMsYUFBUyxlQUFlLE9BQU87QUFDN0IsYUFBTyxxQkFBcUIsS0FBSyxLQUFLO0FBQUEsSUFDeEM7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNyQmpCO0FBQUEsZ0RBQUFDLFNBQUE7QUFBQSxRQUFJQyxVQUFTO0FBQWIsUUFDSSxZQUFZO0FBRGhCLFFBRUksaUJBQWlCO0FBR3JCLFFBQUksVUFBVTtBQUFkLFFBQ0ksZUFBZTtBQUduQixRQUFJLGlCQUFpQkEsVUFBU0EsUUFBTyxjQUFjO0FBU25ELGFBQVMsV0FBVyxPQUFPO0FBQ3pCLFVBQUksU0FBUyxNQUFNO0FBQ2pCLGVBQU8sVUFBVSxTQUFZLGVBQWU7QUFBQSxNQUM5QztBQUNBLGFBQVEsa0JBQWtCLGtCQUFrQixPQUFPLEtBQUssSUFDcEQsVUFBVSxLQUFLLElBQ2YsZUFBZSxLQUFLO0FBQUEsSUFDMUI7QUFFQSxJQUFBRCxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUMzQmpCO0FBQUEsNkNBQUFFLFNBQUE7QUF5QkEsYUFBU0MsVUFBUyxPQUFPO0FBQ3ZCLFVBQUlDLFFBQU8sT0FBTztBQUNsQixhQUFPLFNBQVMsU0FBU0EsU0FBUSxZQUFZQSxTQUFRO0FBQUEsSUFDdkQ7QUFFQSxJQUFBRixRQUFPLFVBQVVDO0FBQUE7QUFBQTs7O0FDOUJqQjtBQUFBLCtDQUFBRSxTQUFBO0FBQUEsUUFBSSxhQUFhO0FBQWpCLFFBQ0lDLFlBQVc7QUFHZixRQUFJLFdBQVc7QUFBZixRQUNJLFVBQVU7QUFEZCxRQUVJLFNBQVM7QUFGYixRQUdJLFdBQVc7QUFtQmYsYUFBUyxXQUFXLE9BQU87QUFDekIsVUFBSSxDQUFDQSxVQUFTLEtBQUssR0FBRztBQUNwQixlQUFPO0FBQUEsTUFDVDtBQUdBLFVBQUksTUFBTSxXQUFXLEtBQUs7QUFDMUIsYUFBTyxPQUFPLFdBQVcsT0FBTyxVQUFVLE9BQU8sWUFBWSxPQUFPO0FBQUEsSUFDdEU7QUFFQSxJQUFBRCxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNwQ2pCO0FBQUEsZ0RBQUFFLFNBQUE7QUFBQSxRQUFJLE9BQU87QUFHWCxRQUFJLGFBQWEsS0FBSztBQUV0QixJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNMakI7QUFBQSw4Q0FBQUMsU0FBQTtBQUFBLFFBQUksYUFBYTtBQUdqQixRQUFJLGFBQWMsV0FBVztBQUMzQixVQUFJLE1BQU0sU0FBUyxLQUFLLGNBQWMsV0FBVyxRQUFRLFdBQVcsS0FBSyxZQUFZLEVBQUU7QUFDdkYsYUFBTyxNQUFPLG1CQUFtQixNQUFPO0FBQUEsSUFDMUMsRUFBRTtBQVNGLGFBQVMsU0FBUyxNQUFNO0FBQ3RCLGFBQU8sQ0FBQyxDQUFDLGNBQWUsY0FBYztBQUFBLElBQ3hDO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDbkJqQjtBQUFBLDhDQUFBQyxTQUFBO0FBQ0EsUUFBSSxZQUFZLFNBQVM7QUFHekIsUUFBSSxlQUFlLFVBQVU7QUFTN0IsYUFBUyxTQUFTLE1BQU07QUFDdEIsVUFBSSxRQUFRLE1BQU07QUFDaEIsWUFBSTtBQUNGLGlCQUFPLGFBQWEsS0FBSyxJQUFJO0FBQUEsUUFDL0IsU0FBUyxHQUFQO0FBQUEsUUFBVztBQUNiLFlBQUk7QUFDRixpQkFBUSxPQUFPO0FBQUEsUUFDakIsU0FBUyxHQUFQO0FBQUEsUUFBVztBQUFBLE1BQ2Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ3pCakI7QUFBQSxrREFBQUMsU0FBQTtBQUFBLFFBQUksYUFBYTtBQUFqQixRQUNJLFdBQVc7QUFEZixRQUVJQyxZQUFXO0FBRmYsUUFHSSxXQUFXO0FBTWYsUUFBSSxlQUFlO0FBR25CLFFBQUksZUFBZTtBQUduQixRQUFJLFlBQVksU0FBUztBQUF6QixRQUNJLGNBQWMsT0FBTztBQUd6QixRQUFJLGVBQWUsVUFBVTtBQUc3QixRQUFJLGlCQUFpQixZQUFZO0FBR2pDLFFBQUksYUFBYTtBQUFBLE1BQU8sTUFDdEIsYUFBYSxLQUFLLGNBQWMsRUFBRSxRQUFRLGNBQWMsTUFBTSxFQUM3RCxRQUFRLDBEQUEwRCxPQUFPLElBQUk7QUFBQSxJQUNoRjtBQVVBLGFBQVMsYUFBYSxPQUFPO0FBQzNCLFVBQUksQ0FBQ0EsVUFBUyxLQUFLLEtBQUssU0FBUyxLQUFLLEdBQUc7QUFDdkMsZUFBTztBQUFBLE1BQ1Q7QUFDQSxVQUFJLFVBQVUsV0FBVyxLQUFLLElBQUksYUFBYTtBQUMvQyxhQUFPLFFBQVEsS0FBSyxTQUFTLEtBQUssQ0FBQztBQUFBLElBQ3JDO0FBRUEsSUFBQUQsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDOUNqQjtBQUFBLDhDQUFBRSxTQUFBO0FBUUEsYUFBUyxTQUFTLFFBQVEsS0FBSztBQUM3QixhQUFPLFVBQVUsT0FBTyxTQUFZLE9BQU87QUFBQSxJQUM3QztBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ1pqQjtBQUFBLCtDQUFBQyxTQUFBO0FBQUEsUUFBSSxlQUFlO0FBQW5CLFFBQ0ksV0FBVztBQVVmLGFBQVMsVUFBVSxRQUFRLEtBQUs7QUFDOUIsVUFBSSxRQUFRLFNBQVMsUUFBUSxHQUFHO0FBQ2hDLGFBQU8sYUFBYSxLQUFLLElBQUksUUFBUTtBQUFBLElBQ3ZDO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDaEJqQjtBQUFBLDhDQUFBQyxTQUFBO0FBQUEsUUFBSSxZQUFZO0FBQWhCLFFBQ0ksT0FBTztBQUdYLFFBQUksV0FBVyxVQUFVLE1BQU0sVUFBVTtBQUV6QyxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNOakI7QUFBQSx5Q0FBQUMsU0FBQTtBQUFBLFFBQUksWUFBWTtBQUFoQixRQUNJLE9BQU87QUFHWCxRQUFJQyxPQUFNLFVBQVUsTUFBTSxLQUFLO0FBRS9CLElBQUFELFFBQU8sVUFBVUM7QUFBQTtBQUFBOzs7QUNOakI7QUFBQSw2Q0FBQUMsU0FBQTtBQUFBLFFBQUksWUFBWTtBQUFoQixRQUNJLE9BQU87QUFHWCxRQUFJQyxXQUFVLFVBQVUsTUFBTSxTQUFTO0FBRXZDLElBQUFELFFBQU8sVUFBVUM7QUFBQTtBQUFBOzs7QUNOakI7QUFBQSx5Q0FBQUMsU0FBQTtBQUFBLFFBQUksWUFBWTtBQUFoQixRQUNJLE9BQU87QUFHWCxRQUFJQyxPQUFNLFVBQVUsTUFBTSxLQUFLO0FBRS9CLElBQUFELFFBQU8sVUFBVUM7QUFBQTtBQUFBOzs7QUNOakI7QUFBQSw2Q0FBQUMsU0FBQTtBQUFBLFFBQUksWUFBWTtBQUFoQixRQUNJLE9BQU87QUFHWCxRQUFJQyxXQUFVLFVBQVUsTUFBTSxTQUFTO0FBRXZDLElBQUFELFFBQU8sVUFBVUM7QUFBQTtBQUFBOzs7QUNOakI7QUFBQSw0Q0FBQUMsU0FBQTtBQUFBLFFBQUksV0FBVztBQUFmLFFBQ0lDLE9BQU07QUFEVixRQUVJQyxXQUFVO0FBRmQsUUFHSUMsT0FBTTtBQUhWLFFBSUlDLFdBQVU7QUFKZCxRQUtJLGFBQWE7QUFMakIsUUFNSSxXQUFXO0FBR2YsUUFBSSxTQUFTO0FBQWIsUUFDSSxZQUFZO0FBRGhCLFFBRUksYUFBYTtBQUZqQixRQUdJLFNBQVM7QUFIYixRQUlJLGFBQWE7QUFFakIsUUFBSSxjQUFjO0FBR2xCLFFBQUkscUJBQXFCLFNBQVMsUUFBUTtBQUExQyxRQUNJLGdCQUFnQixTQUFTSCxJQUFHO0FBRGhDLFFBRUksb0JBQW9CLFNBQVNDLFFBQU87QUFGeEMsUUFHSSxnQkFBZ0IsU0FBU0MsSUFBRztBQUhoQyxRQUlJLG9CQUFvQixTQUFTQyxRQUFPO0FBU3hDLFFBQUksU0FBUztBQUdiLFFBQUssWUFBWSxPQUFPLElBQUksU0FBUyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxlQUN4REgsUUFBTyxPQUFPLElBQUlBLE1BQUcsS0FBSyxVQUMxQkMsWUFBVyxPQUFPQSxTQUFRLFFBQVEsQ0FBQyxLQUFLLGNBQ3hDQyxRQUFPLE9BQU8sSUFBSUEsTUFBRyxLQUFLLFVBQzFCQyxZQUFXLE9BQU8sSUFBSUEsVUFBTyxLQUFLLFlBQWE7QUFDbEQsZUFBUyxTQUFTLE9BQU87QUFDdkIsWUFBSSxTQUFTLFdBQVcsS0FBSyxHQUN6QixPQUFPLFVBQVUsWUFBWSxNQUFNLGNBQWMsUUFDakQsYUFBYSxPQUFPLFNBQVMsSUFBSSxJQUFJO0FBRXpDLFlBQUksWUFBWTtBQUNkLGtCQUFRO0FBQUEsaUJBQ0Q7QUFBb0IscUJBQU87QUFBQSxpQkFDM0I7QUFBZSxxQkFBTztBQUFBLGlCQUN0QjtBQUFtQixxQkFBTztBQUFBLGlCQUMxQjtBQUFlLHFCQUFPO0FBQUEsaUJBQ3RCO0FBQW1CLHFCQUFPO0FBQUE7QUFBQSxRQUVuQztBQUNBLGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUVBLElBQUFKLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ3pEakI7QUFBQSw2Q0FBQUssU0FBQTtBQUNBLFFBQUksbUJBQW1CO0FBNEJ2QixhQUFTLFNBQVMsT0FBTztBQUN2QixhQUFPLE9BQU8sU0FBUyxZQUNyQixRQUFRLE1BQU0sUUFBUSxLQUFLLEtBQUssU0FBUztBQUFBLElBQzdDO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDbENqQjtBQUFBLGdEQUFBQyxTQUFBO0FBQUEsUUFBSSxhQUFhO0FBQWpCLFFBQ0ksV0FBVztBQTJCZixhQUFTLFlBQVksT0FBTztBQUMxQixhQUFPLFNBQVMsUUFBUSxTQUFTLE1BQU0sTUFBTSxLQUFLLENBQUMsV0FBVyxLQUFLO0FBQUEsSUFDckU7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNoQ2pCO0FBQUEsNENBQUFDLFNBQUE7QUF1QkEsUUFBSSxVQUFVLE1BQU07QUFFcEIsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDekJqQjtBQUFBLGlEQUFBQyxTQUFBO0FBd0JBLGFBQVMsYUFBYSxPQUFPO0FBQzNCLGFBQU8sU0FBUyxRQUFRLE9BQU8sU0FBUztBQUFBLElBQzFDO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDNUJqQjtBQUFBLDZDQUFBQyxTQUFBO0FBQUEsUUFBSSxhQUFhO0FBQWpCLFFBQ0ksVUFBVTtBQURkLFFBRUksZUFBZTtBQUduQixRQUFJLFlBQVk7QUFtQmhCLGFBQVMsU0FBUyxPQUFPO0FBQ3ZCLGFBQU8sT0FBTyxTQUFTLFlBQ3BCLENBQUMsUUFBUSxLQUFLLEtBQUssYUFBYSxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUs7QUFBQSxJQUNwRTtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQzdCakI7QUFBQSxxREFBQUMsU0FBQTtBQU9BLGFBQVMsZ0JBQWdCLFVBQVU7QUFDakMsVUFBSSxNQUNBLFNBQVMsQ0FBQztBQUVkLGFBQU8sRUFBRSxPQUFPLFNBQVMsS0FBSyxHQUFHLE1BQU07QUFDckMsZUFBTyxLQUFLLEtBQUssS0FBSztBQUFBLE1BQ3hCO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNqQmpCO0FBQUEsZ0RBQUFDLFNBQUE7QUFPQSxhQUFTLFdBQVdDLE1BQUs7QUFDdkIsVUFBSSxRQUFRLElBQ1IsU0FBUyxNQUFNQSxLQUFJLElBQUk7QUFFM0IsTUFBQUEsS0FBSSxRQUFRLFNBQVMsT0FBTyxLQUFLO0FBQy9CLGVBQU8sRUFBRSxTQUFTLENBQUMsS0FBSyxLQUFLO0FBQUEsTUFDL0IsQ0FBQztBQUNELGFBQU87QUFBQSxJQUNUO0FBRUEsSUFBQUQsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDakJqQjtBQUFBLGdEQUFBRSxTQUFBO0FBT0EsYUFBUyxXQUFXQyxNQUFLO0FBQ3ZCLFVBQUksUUFBUSxJQUNSLFNBQVMsTUFBTUEsS0FBSSxJQUFJO0FBRTNCLE1BQUFBLEtBQUksUUFBUSxTQUFTLE9BQU87QUFDMUIsZUFBTyxFQUFFLFNBQVM7QUFBQSxNQUNwQixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1Q7QUFFQSxJQUFBRCxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNqQmpCO0FBQUEsa0RBQUFFLFNBQUE7QUFPQSxhQUFTLGFBQWEsUUFBUTtBQUM1QixhQUFPLE9BQU8sTUFBTSxFQUFFO0FBQUEsSUFDeEI7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNYakI7QUFBQSxnREFBQUMsU0FBQTtBQUNBLFFBQUksZ0JBQWdCO0FBQXBCLFFBQ0ksb0JBQW9CO0FBRHhCLFFBRUksd0JBQXdCO0FBRjVCLFFBR0ksc0JBQXNCO0FBSDFCLFFBSUksZUFBZSxvQkFBb0Isd0JBQXdCO0FBSi9ELFFBS0ksYUFBYTtBQUdqQixRQUFJLFFBQVE7QUFHWixRQUFJLGVBQWUsT0FBTyxNQUFNLFFBQVEsZ0JBQWlCLGVBQWUsYUFBYSxHQUFHO0FBU3hGLGFBQVMsV0FBVyxRQUFRO0FBQzFCLGFBQU8sYUFBYSxLQUFLLE1BQU07QUFBQSxJQUNqQztBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ3pCakI7QUFBQSxvREFBQUMsU0FBQTtBQUNBLFFBQUksZ0JBQWdCO0FBQXBCLFFBQ0ksb0JBQW9CO0FBRHhCLFFBRUksd0JBQXdCO0FBRjVCLFFBR0ksc0JBQXNCO0FBSDFCLFFBSUksZUFBZSxvQkFBb0Isd0JBQXdCO0FBSi9ELFFBS0ksYUFBYTtBQUdqQixRQUFJLFdBQVcsTUFBTSxnQkFBZ0I7QUFBckMsUUFDSSxVQUFVLE1BQU0sZUFBZTtBQURuQyxRQUVJLFNBQVM7QUFGYixRQUdJLGFBQWEsUUFBUSxVQUFVLE1BQU0sU0FBUztBQUhsRCxRQUlJLGNBQWMsT0FBTyxnQkFBZ0I7QUFKekMsUUFLSSxhQUFhO0FBTGpCLFFBTUksYUFBYTtBQU5qQixRQU9JLFFBQVE7QUFHWixRQUFJLFdBQVcsYUFBYTtBQUE1QixRQUNJLFdBQVcsTUFBTSxhQUFhO0FBRGxDLFFBRUksWUFBWSxRQUFRLFFBQVEsUUFBUSxDQUFDLGFBQWEsWUFBWSxVQUFVLEVBQUUsS0FBSyxHQUFHLElBQUksTUFBTSxXQUFXLFdBQVc7QUFGdEgsUUFHSSxRQUFRLFdBQVcsV0FBVztBQUhsQyxRQUlJLFdBQVcsUUFBUSxDQUFDLGNBQWMsVUFBVSxLQUFLLFNBQVMsWUFBWSxZQUFZLFFBQVEsRUFBRSxLQUFLLEdBQUcsSUFBSTtBQUc1RyxRQUFJLFlBQVksT0FBTyxTQUFTLFFBQVEsU0FBUyxPQUFPLFdBQVcsT0FBTyxHQUFHO0FBUzdFLGFBQVMsZUFBZSxRQUFRO0FBQzlCLGFBQU8sT0FBTyxNQUFNLFNBQVMsS0FBSyxDQUFDO0FBQUEsSUFDckM7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUN2Q2pCO0FBQUEsbURBQUFDLFNBQUE7QUFBQSxRQUFJLGVBQWU7QUFBbkIsUUFDSSxhQUFhO0FBRGpCLFFBRUksaUJBQWlCO0FBU3JCLGFBQVMsY0FBYyxRQUFRO0FBQzdCLGFBQU8sV0FBVyxNQUFNLElBQ3BCLGVBQWUsTUFBTSxJQUNyQixhQUFhLE1BQU07QUFBQSxJQUN6QjtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ2pCakI7QUFBQSw4Q0FBQUMsU0FBQTtBQVNBLGFBQVMsU0FBUyxPQUFPLFVBQVU7QUFDakMsVUFBSSxRQUFRLElBQ1IsU0FBUyxTQUFTLE9BQU8sSUFBSSxNQUFNLFFBQ25DLFNBQVMsTUFBTSxNQUFNO0FBRXpCLGFBQU8sRUFBRSxRQUFRLFFBQVE7QUFDdkIsZUFBTyxTQUFTLFNBQVMsTUFBTSxRQUFRLE9BQU8sS0FBSztBQUFBLE1BQ3JEO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNwQmpCO0FBQUEsZ0RBQUFDLFNBQUE7QUFBQSxRQUFJLFdBQVc7QUFZZixhQUFTLFdBQVcsUUFBUSxPQUFPO0FBQ2pDLGFBQU8sU0FBUyxPQUFPLFNBQVMsS0FBSztBQUNuQyxlQUFPLE9BQU87QUFBQSxNQUNoQixDQUFDO0FBQUEsSUFDSDtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ2xCakI7QUFBQSwrQ0FBQUMsU0FBQTtBQVNBLGFBQVMsVUFBVSxHQUFHLFVBQVU7QUFDOUIsVUFBSSxRQUFRLElBQ1IsU0FBUyxNQUFNLENBQUM7QUFFcEIsYUFBTyxFQUFFLFFBQVEsR0FBRztBQUNsQixlQUFPLFNBQVMsU0FBUyxLQUFLO0FBQUEsTUFDaEM7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ25CakI7QUFBQSxxREFBQUMsU0FBQTtBQUFBLFFBQUksYUFBYTtBQUFqQixRQUNJLGVBQWU7QUFHbkIsUUFBSSxVQUFVO0FBU2QsYUFBUyxnQkFBZ0IsT0FBTztBQUM5QixhQUFPLGFBQWEsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLO0FBQUEsSUFDckQ7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNqQmpCO0FBQUEsZ0RBQUFDLFNBQUE7QUFBQSxRQUFJLGtCQUFrQjtBQUF0QixRQUNJLGVBQWU7QUFHbkIsUUFBSSxjQUFjLE9BQU87QUFHekIsUUFBSSxpQkFBaUIsWUFBWTtBQUdqQyxRQUFJLHVCQUF1QixZQUFZO0FBb0J2QyxRQUFJLGNBQWMsZ0JBQWdCLFdBQVc7QUFBRSxhQUFPO0FBQUEsSUFBVyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsU0FBUyxPQUFPO0FBQ3hHLGFBQU8sYUFBYSxLQUFLLEtBQUssZUFBZSxLQUFLLE9BQU8sUUFBUSxLQUMvRCxDQUFDLHFCQUFxQixLQUFLLE9BQU8sUUFBUTtBQUFBLElBQzlDO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDbkNqQjtBQUFBLDhDQUFBQyxTQUFBO0FBYUEsYUFBUyxZQUFZO0FBQ25CLGFBQU87QUFBQSxJQUNUO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDakJqQjtBQUFBLDZDQUFBQyxTQUFBO0FBQUEsUUFBSSxPQUFPO0FBQVgsUUFDSSxZQUFZO0FBR2hCLFFBQUksY0FBYyxPQUFPLFdBQVcsWUFBWSxXQUFXLENBQUMsUUFBUSxZQUFZO0FBR2hGLFFBQUksYUFBYSxlQUFlLE9BQU9BLFdBQVUsWUFBWUEsV0FBVSxDQUFDQSxRQUFPLFlBQVlBO0FBRzNGLFFBQUksZ0JBQWdCLGNBQWMsV0FBVyxZQUFZO0FBR3pELFFBQUlDLFVBQVMsZ0JBQWdCLEtBQUssU0FBUztBQUczQyxRQUFJLGlCQUFpQkEsVUFBU0EsUUFBTyxXQUFXO0FBbUJoRCxRQUFJLFdBQVcsa0JBQWtCO0FBRWpDLElBQUFELFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ3JDakI7QUFBQSw2Q0FBQUUsU0FBQTtBQUNBLFFBQUksbUJBQW1CO0FBR3ZCLFFBQUksV0FBVztBQVVmLGFBQVMsUUFBUSxPQUFPLFFBQVE7QUFDOUIsVUFBSUMsUUFBTyxPQUFPO0FBQ2xCLGVBQVMsVUFBVSxPQUFPLG1CQUFtQjtBQUU3QyxhQUFPLENBQUMsQ0FBQyxXQUNOQSxTQUFRLFlBQ05BLFNBQVEsWUFBWSxTQUFTLEtBQUssS0FBSyxPQUNyQyxRQUFRLE1BQU0sUUFBUSxLQUFLLEtBQUssUUFBUTtBQUFBLElBQ2pEO0FBRUEsSUFBQUQsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDeEJqQjtBQUFBLHNEQUFBRSxTQUFBO0FBQUEsUUFBSSxhQUFhO0FBQWpCLFFBQ0ksV0FBVztBQURmLFFBRUksZUFBZTtBQUduQixRQUFJLFVBQVU7QUFBZCxRQUNJLFdBQVc7QUFEZixRQUVJLFVBQVU7QUFGZCxRQUdJLFVBQVU7QUFIZCxRQUlJLFdBQVc7QUFKZixRQUtJLFVBQVU7QUFMZCxRQU1JLFNBQVM7QUFOYixRQU9JLFlBQVk7QUFQaEIsUUFRSSxZQUFZO0FBUmhCLFFBU0ksWUFBWTtBQVRoQixRQVVJLFNBQVM7QUFWYixRQVdJLFlBQVk7QUFYaEIsUUFZSSxhQUFhO0FBRWpCLFFBQUksaUJBQWlCO0FBQXJCLFFBQ0ksY0FBYztBQURsQixRQUVJLGFBQWE7QUFGakIsUUFHSSxhQUFhO0FBSGpCLFFBSUksVUFBVTtBQUpkLFFBS0ksV0FBVztBQUxmLFFBTUksV0FBVztBQU5mLFFBT0ksV0FBVztBQVBmLFFBUUksa0JBQWtCO0FBUnRCLFFBU0ksWUFBWTtBQVRoQixRQVVJLFlBQVk7QUFHaEIsUUFBSSxpQkFBaUIsQ0FBQztBQUN0QixtQkFBZSxjQUFjLGVBQWUsY0FDNUMsZUFBZSxXQUFXLGVBQWUsWUFDekMsZUFBZSxZQUFZLGVBQWUsWUFDMUMsZUFBZSxtQkFBbUIsZUFBZSxhQUNqRCxlQUFlLGFBQWE7QUFDNUIsbUJBQWUsV0FBVyxlQUFlLFlBQ3pDLGVBQWUsa0JBQWtCLGVBQWUsV0FDaEQsZUFBZSxlQUFlLGVBQWUsV0FDN0MsZUFBZSxZQUFZLGVBQWUsV0FDMUMsZUFBZSxVQUFVLGVBQWUsYUFDeEMsZUFBZSxhQUFhLGVBQWUsYUFDM0MsZUFBZSxVQUFVLGVBQWUsYUFDeEMsZUFBZSxjQUFjO0FBUzdCLGFBQVMsaUJBQWlCLE9BQU87QUFDL0IsYUFBTyxhQUFhLEtBQUssS0FDdkIsU0FBUyxNQUFNLE1BQU0sS0FBSyxDQUFDLENBQUMsZUFBZSxXQUFXLEtBQUs7QUFBQSxJQUMvRDtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQzNEakI7QUFBQSwrQ0FBQUMsU0FBQTtBQU9BLGFBQVMsVUFBVSxNQUFNO0FBQ3ZCLGFBQU8sU0FBUyxPQUFPO0FBQ3JCLGVBQU8sS0FBSyxLQUFLO0FBQUEsTUFDbkI7QUFBQSxJQUNGO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDYmpCO0FBQUEsOENBQUFDLFNBQUE7QUFBQSxRQUFJLGFBQWE7QUFHakIsUUFBSSxjQUFjLE9BQU8sV0FBVyxZQUFZLFdBQVcsQ0FBQyxRQUFRLFlBQVk7QUFHaEYsUUFBSSxhQUFhLGVBQWUsT0FBT0EsV0FBVSxZQUFZQSxXQUFVLENBQUNBLFFBQU8sWUFBWUE7QUFHM0YsUUFBSSxnQkFBZ0IsY0FBYyxXQUFXLFlBQVk7QUFHekQsUUFBSSxjQUFjLGlCQUFpQixXQUFXO0FBRzlDLFFBQUksV0FBWSxXQUFXO0FBQ3pCLFVBQUk7QUFFRixZQUFJLFFBQVEsY0FBYyxXQUFXLFdBQVcsV0FBVyxRQUFRLE1BQU0sRUFBRTtBQUUzRSxZQUFJLE9BQU87QUFDVCxpQkFBTztBQUFBLFFBQ1Q7QUFHQSxlQUFPLGVBQWUsWUFBWSxXQUFXLFlBQVksUUFBUSxNQUFNO0FBQUEsTUFDekUsU0FBUyxHQUFQO0FBQUEsTUFBVztBQUFBLElBQ2YsRUFBRTtBQUVGLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQzdCakI7QUFBQSxpREFBQUMsU0FBQTtBQUFBLFFBQUksbUJBQW1CO0FBQXZCLFFBQ0ksWUFBWTtBQURoQixRQUVJLFdBQVc7QUFHZixRQUFJLG1CQUFtQixZQUFZLFNBQVM7QUFtQjVDLFFBQUksZUFBZSxtQkFBbUIsVUFBVSxnQkFBZ0IsSUFBSTtBQUVwRSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUMxQmpCO0FBQUEsbURBQUFDLFNBQUE7QUFBQSxRQUFJLFlBQVk7QUFBaEIsUUFDSSxjQUFjO0FBRGxCLFFBRUksVUFBVTtBQUZkLFFBR0ksV0FBVztBQUhmLFFBSUksVUFBVTtBQUpkLFFBS0ksZUFBZTtBQUduQixRQUFJLGNBQWMsT0FBTztBQUd6QixRQUFJLGlCQUFpQixZQUFZO0FBVWpDLGFBQVMsY0FBYyxPQUFPLFdBQVc7QUFDdkMsVUFBSSxRQUFRLFFBQVEsS0FBSyxHQUNyQixRQUFRLENBQUMsU0FBUyxZQUFZLEtBQUssR0FDbkMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLFNBQVMsS0FBSyxHQUMzQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLGFBQWEsS0FBSyxHQUMxRCxjQUFjLFNBQVMsU0FBUyxVQUFVLFFBQzFDLFNBQVMsY0FBYyxVQUFVLE1BQU0sUUFBUSxNQUFNLElBQUksQ0FBQyxHQUMxRCxTQUFTLE9BQU87QUFFcEIsZUFBUyxPQUFPLE9BQU87QUFDckIsYUFBSyxhQUFhLGVBQWUsS0FBSyxPQUFPLEdBQUcsTUFDNUMsRUFBRSxnQkFFQyxPQUFPLFlBRU4sV0FBVyxPQUFPLFlBQVksT0FBTyxhQUVyQyxXQUFXLE9BQU8sWUFBWSxPQUFPLGdCQUFnQixPQUFPLGlCQUU3RCxRQUFRLEtBQUssTUFBTSxLQUNsQjtBQUNOLGlCQUFPLEtBQUssR0FBRztBQUFBLFFBQ2pCO0FBQUEsTUFDRjtBQUNBLGFBQU87QUFBQSxJQUNUO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDaERqQjtBQUFBLGlEQUFBQyxTQUFBO0FBQ0EsUUFBSSxjQUFjLE9BQU87QUFTekIsYUFBUyxZQUFZLE9BQU87QUFDMUIsVUFBSSxPQUFPLFNBQVMsTUFBTSxhQUN0QixRQUFTLE9BQU8sUUFBUSxjQUFjLEtBQUssYUFBYztBQUU3RCxhQUFPLFVBQVU7QUFBQSxJQUNuQjtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ2pCakI7QUFBQSw2Q0FBQUMsU0FBQTtBQVFBLGFBQVMsUUFBUSxNQUFNLFdBQVc7QUFDaEMsYUFBTyxTQUFTLEtBQUs7QUFDbkIsZUFBTyxLQUFLLFVBQVUsR0FBRyxDQUFDO0FBQUEsTUFDNUI7QUFBQSxJQUNGO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDZGpCO0FBQUEsZ0RBQUFDLFNBQUE7QUFBQSxRQUFJLFVBQVU7QUFHZCxRQUFJLGFBQWEsUUFBUSxPQUFPLE1BQU0sTUFBTTtBQUU1QyxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUNMakI7QUFBQSw4Q0FBQUMsU0FBQTtBQUFBLFFBQUksY0FBYztBQUFsQixRQUNJLGFBQWE7QUFHakIsUUFBSSxjQUFjLE9BQU87QUFHekIsUUFBSSxpQkFBaUIsWUFBWTtBQVNqQyxhQUFTLFNBQVMsUUFBUTtBQUN4QixVQUFJLENBQUMsWUFBWSxNQUFNLEdBQUc7QUFDeEIsZUFBTyxXQUFXLE1BQU07QUFBQSxNQUMxQjtBQUNBLFVBQUksU0FBUyxDQUFDO0FBQ2QsZUFBUyxPQUFPLE9BQU8sTUFBTSxHQUFHO0FBQzlCLFlBQUksZUFBZSxLQUFLLFFBQVEsR0FBRyxLQUFLLE9BQU8sZUFBZTtBQUM1RCxpQkFBTyxLQUFLLEdBQUc7QUFBQSxRQUNqQjtBQUFBLE1BQ0Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQzdCakI7QUFBQSx5Q0FBQUMsU0FBQTtBQUFBLFFBQUksZ0JBQWdCO0FBQXBCLFFBQ0ksV0FBVztBQURmLFFBRUksY0FBYztBQThCbEIsYUFBUyxLQUFLLFFBQVE7QUFDcEIsYUFBTyxZQUFZLE1BQU0sSUFBSSxjQUFjLE1BQU0sSUFBSSxTQUFTLE1BQU07QUFBQSxJQUN0RTtBQUVBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ3BDakI7QUFBQSwyQ0FBQUMsU0FBQTtBQUFBLFFBQUksYUFBYTtBQUFqQixRQUNJLE9BQU87QUE0QlgsYUFBUyxPQUFPLFFBQVE7QUFDdEIsYUFBTyxVQUFVLE9BQU8sQ0FBQyxJQUFJLFdBQVcsUUFBUSxLQUFLLE1BQU0sQ0FBQztBQUFBLElBQzlEO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDakNqQjtBQUFBLDRDQUFBQyxTQUFBO0FBQUEsUUFBSUMsVUFBUztBQUFiLFFBQ0ksWUFBWTtBQURoQixRQUVJLFNBQVM7QUFGYixRQUdJLGNBQWM7QUFIbEIsUUFJSSxXQUFXO0FBSmYsUUFLSSxrQkFBa0I7QUFMdEIsUUFNSSxhQUFhO0FBTmpCLFFBT0ksYUFBYTtBQVBqQixRQVFJLGdCQUFnQjtBQVJwQixRQVNJLFNBQVM7QUFHYixRQUFJLFNBQVM7QUFBYixRQUNJLFNBQVM7QUFHYixRQUFJLGNBQWNBLFVBQVNBLFFBQU8sV0FBVztBQXlCN0MsYUFBU0MsU0FBUSxPQUFPO0FBQ3RCLFVBQUksQ0FBQyxPQUFPO0FBQ1YsZUFBTyxDQUFDO0FBQUEsTUFDVjtBQUNBLFVBQUksWUFBWSxLQUFLLEdBQUc7QUFDdEIsZUFBTyxTQUFTLEtBQUssSUFBSSxjQUFjLEtBQUssSUFBSSxVQUFVLEtBQUs7QUFBQSxNQUNqRTtBQUNBLFVBQUksZUFBZSxNQUFNLGNBQWM7QUFDckMsZUFBTyxnQkFBZ0IsTUFBTSxhQUFhLENBQUM7QUFBQSxNQUM3QztBQUNBLFVBQUksTUFBTSxPQUFPLEtBQUssR0FDbEIsT0FBTyxPQUFPLFNBQVMsYUFBYyxPQUFPLFNBQVMsYUFBYTtBQUV0RSxhQUFPLEtBQUssS0FBSztBQUFBLElBQ25CO0FBRUEsSUFBQUYsUUFBTyxVQUFVRTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7QUN6RGpCLElBQUFDLGlCQUFBO0FBQUEsa0RBQUFDLFNBQUE7QUFDQSxRQUFJQyxXQUFVO0FBQ2QsUUFBSSxjQUFjO0FBT2xCLFFBQUksaUJBQWlCO0FBTXJCLFFBQUksaUJBQWlCO0FBUXJCLGFBQVMsWUFBYUMsTUFBSztBQUN6QixVQUFJLGFBQWFBLEtBQUksUUFBUSxHQUFHO0FBQ2hDLFVBQUksYUFBYSxJQUFJO0FBRW5CLFlBQUksZUFBZUEsS0FBSSxTQUFTLEdBQUc7QUFDakMsVUFBQUEsT0FBTUEsS0FBSSxVQUFVLEdBQUcsVUFBVTtBQUNqQyxpQkFBTyxZQUFZQSxJQUFHO0FBQUEsUUFDeEIsT0FBTztBQUNMLFVBQUFBLE9BQU1BLEtBQUksT0FBTyxhQUFhLENBQUM7QUFDL0IsaUJBQU8sWUFBWUEsSUFBRztBQUFBLFFBQ3hCO0FBQUEsTUFDRjtBQUVBLGFBQU9BO0FBQUEsSUFDVDtBQVFBLGFBQVMsV0FBWUEsTUFBSztBQUN4QixhQUFRLE9BQU9BLFNBQVEsWUFBWUEsS0FBSSxTQUFTLElBQUssTUFBTUEsT0FBTSxNQUFNQTtBQUFBLElBQ3pFO0FBUUEsYUFBUyxhQUFjQSxNQUFLO0FBQzFCLGFBQVEsT0FBT0EsU0FBUSxZQUFZQSxLQUFJLE9BQU8sTUFBTyxXQUFXQSxJQUFHLElBQUlBO0FBQUEsSUFDekU7QUFNQSxRQUFJLG1CQUFtQixPQUFPLGFBQWEsS0FBSztBQUNoRCxRQUFJLGtCQUFrQixJQUFJLE9BQU8sa0JBQWtCLEdBQUc7QUFJdEQsYUFBUyxTQUFVLE1BQU07QUFDdkIsYUFBTyxLQUFLLFFBQVEsaUJBQWlCLEVBQUU7QUFBQSxJQUN6QztBQUtBLFFBQUksY0FBYyxPQUFPLEtBQUssV0FBVyxFQUFFLE9BQU8sU0FBUyxHQUFFLEdBQUc7QUFDOUQsUUFBRSxTQUFTLFlBQVksRUFBRSxLQUFLO0FBQzlCLGFBQU87QUFBQSxJQUNULEdBQUcsQ0FBQyxDQUFDO0FBS0wsUUFBSSxRQUFRO0FBQUEsTUFDVixPQUFPO0FBQUEsSUFDVDtBQU9BLFVBQU0sT0FBTyxTQUFTLEtBQU1DLFFBQU87QUFDakMsVUFBSSxZQUFZLFNBQVNBLE1BQUssSUFBSTtBQUNoQyxlQUFPQTtBQUFBLE1BQ1QsV0FBVyxZQUFZLGVBQWVBLE1BQUssR0FBRztBQUM1QyxlQUFPLFlBQVlBO0FBQUEsTUFDckI7QUFFQSxhQUFPLGFBQWFBLE1BQUs7QUFBQSxJQUMzQjtBQU9BLFVBQU0sTUFBTSxTQUFTQyxLQUFLRCxRQUFPO0FBQy9CLE1BQUFBLFNBQVEsWUFBWUEsTUFBSztBQUV6QixhQUFPLE1BQU0sS0FBS0EsTUFBSztBQUFBLElBQ3pCO0FBT0EsVUFBTSxPQUFPLFNBQVMsS0FBTSxZQUFZO0FBQ3RDLGFBQU8sTUFBTSxXQUFXLFVBQVUsS0FBSyxNQUFNLFdBQVcsVUFBVTtBQUFBLElBQ3BFO0FBT0EsVUFBTSxhQUFhLFNBQVMsV0FBWSxNQUFNO0FBQzVDLFVBQUksV0FBVyxZQUFZLElBQUk7QUFDL0IsVUFBSUEsU0FBUSxZQUFZO0FBRXhCLGFBQU9BLFNBQVMsRUFBRSxPQUFPQSxRQUFPLEtBQUssU0FBUyxJQUFLO0FBQUEsSUFDckQ7QUFPQSxVQUFNLGFBQWEsU0FBUyxXQUFZLE1BQU07QUFDNUMsVUFBSSxXQUFXLFNBQVMsSUFBSTtBQUM1QixVQUFJLE9BQU8sWUFBWTtBQUd2QixhQUFPLE9BQVEsRUFBRSxPQUFPLFlBQVksT0FBTyxLQUFLLEtBQUssSUFBSztBQUFBLElBQzVEO0FBUUEsVUFBTSxXQUFXLFNBQVMsU0FBVSxZQUFZO0FBQzlDLGFBQU8sTUFBTSxlQUFlLFVBQVUsS0FBSyxNQUFNLGVBQWUsVUFBVTtBQUFBLElBQzVFO0FBT0EsVUFBTSxpQkFBaUIsU0FBUyxlQUFnQixNQUFNO0FBQ3BELFVBQUksU0FBUyxNQUFNLFdBQVcsSUFBSTtBQUNsQyxhQUFPLENBQUMsQ0FBQyxVQUFVLE9BQU8sUUFBUSxZQUFZLElBQUk7QUFBQSxJQUNwRDtBQU9BLFVBQU0saUJBQWlCLFNBQVMsZUFBZ0IsTUFBTTtBQUNwRCxVQUFJLFNBQVMsTUFBTSxXQUFXLElBQUk7QUFDbEMsYUFBTyxDQUFDLENBQUMsVUFBVSxTQUFTLE9BQU8sS0FBSyxNQUFNLFNBQVMsSUFBSTtBQUFBLElBQzdEO0FBUUEsVUFBTSxRQUFRLFNBQVMsTUFBTyxZQUFZLGVBQWU7QUFDdkQsVUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM5QixVQUFJLE9BQU8sWUFBWTtBQUV2QixhQUFPLGdCQUFnQixXQUFXLElBQUksSUFBSTtBQUFBLElBQzVDO0FBU0EsVUFBTSxVQUFVLFNBQVMsUUFBU0QsTUFBSyxZQUFZRyxTQUFRO0FBQ3pELFVBQUksQ0FBQ0g7QUFBSyxlQUFPO0FBRWpCLGFBQU9BLEtBQUksTUFBTSxjQUFjLEVBQ3BCLElBQUksU0FBUyxXQUFXLEdBQUcsR0FBRztBQUU3QixZQUFJLElBQUksTUFBTTtBQUFHLGlCQUFPO0FBQ3hCLFlBQUlDLFNBQVEsTUFBTSxLQUFLLENBQUM7QUFDeEIsWUFBSSxZQUFZQSxPQUFNLFFBQVEsR0FBRyxJQUFJO0FBRXJDLFlBQUksYUFBYSxPQUFPLGVBQWUsWUFBWTtBQUNqRCxpQkFBTyxXQUFXLENBQUM7QUFBQSxRQUNyQjtBQUVBLFlBQUksQ0FBQyxhQUFhLE9BQU9FLFlBQVcsWUFBWTtBQUM5QyxpQkFBT0EsUUFBT0YsUUFBTyxDQUFDO0FBQUEsUUFDeEI7QUFFQSxlQUFPQTtBQUFBLE1BQ1QsQ0FBQyxFQUNBLEtBQUssRUFBRTtBQUFBLElBRXBCO0FBTUEsVUFBTSxTQUFTLFNBQVMsU0FBVTtBQUNoQyxVQUFJLFlBQVksT0FBTyxLQUFLLFdBQVc7QUFDdkMsVUFBSSxjQUFjLEtBQUssTUFBTSxLQUFLLE9BQU8sSUFBSSxVQUFVLE1BQU07QUFDN0QsVUFBSSxNQUFNLFVBQVU7QUFDcEIsVUFBSUEsU0FBUSxNQUFNLEtBQUssR0FBRztBQUMxQixhQUFPLEVBQUUsS0FBVSxPQUFPQSxPQUFNO0FBQUEsSUFDbEM7QUFPQSxVQUFNLFNBQVMsU0FBUyxPQUFRRCxNQUFLO0FBQ25DLFVBQUksWUFBWSxPQUFPLEtBQUssV0FBVztBQUN2QyxVQUFJLFVBQVUsWUFBWUEsSUFBRztBQUM3QixVQUFJLGVBQWUsVUFBVSxPQUFPLFNBQVMsS0FBSztBQUNoRCxlQUFPLElBQUksU0FBUyxFQUFFLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDN0MsQ0FBQztBQUNELGFBQU8sYUFBYSxJQUFJLFNBQVMsS0FBSztBQUNwQyxlQUFPO0FBQUEsVUFDTDtBQUFBLFVBQ0EsT0FBTyxNQUFNLEtBQUssR0FBRztBQUFBLFFBQ3ZCO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQU9BLFVBQU0sWUFBWSxTQUFTLFVBQVdBLE1BQUs7QUFDekMsVUFBSSxDQUFDQTtBQUFLLGVBQU87QUFDakIsVUFBSSxRQUFRRCxTQUFRQyxJQUFHO0FBRXZCLGFBQU8sTUFBTSxJQUFJLFNBQVMsTUFBTTtBQUM5QixlQUFPLE1BQU0sTUFBTSxNQUFNLElBQUksS0FBSztBQUFBLE1BQ3BDLENBQUMsRUFBRSxLQUFLLEVBQUU7QUFBQSxJQUNaO0FBU0EsVUFBTSxVQUFVLFNBQVMsUUFBU0EsTUFBSyxhQUFhLGFBQWE7QUFDL0QsVUFBSSxDQUFDQTtBQUFLLGVBQU87QUFFakIsVUFBSUksV0FBVSxPQUFPLGdCQUFnQixhQUFhLGNBQWMsV0FBVztBQUFFLGVBQU87QUFBQSxNQUFhO0FBQ2pHLFVBQUksUUFBUUwsU0FBUUMsSUFBRztBQUV2QixVQUFJLFdBQVcsTUFBTSxJQUFJLFNBQVMsTUFBTSxLQUFLO0FBQzNDLFlBQUlDLFNBQVEsTUFBTSxXQUFXLElBQUk7QUFFakMsWUFBSUEsVUFBUyxlQUFlLE1BQU0sTUFBTSxPQUFPLEtBQUs7QUFDbEQsZ0JBQU0sTUFBTSxLQUFLO0FBQUEsUUFDbkI7QUFFQSxlQUFPQSxTQUFRRyxTQUFRSCxNQUFLLElBQUk7QUFBQSxNQUNsQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0FBRVYsYUFBTyxjQUFjLFNBQVMsUUFBUSxnQkFBZ0IsRUFBRSxJQUFJO0FBQUEsSUFDOUQ7QUFRQSxVQUFNLFFBQVEsU0FBUyxNQUFPRCxNQUFLO0FBQ2pDLGFBQU8sTUFBTSxRQUFRQSxNQUFLLElBQUksSUFBSTtBQUFBLElBQ3BDO0FBRUEsSUFBQUYsUUFBTyxVQUFVO0FBQUE7QUFBQTs7O0FDOVNqQjtBQUFBLDhDQUFBTyxTQUFBO0FBQUEsSUFBQUEsUUFBTyxVQUFVO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWpCO0FBQUEsMENBQUFDLFNBQUE7QUFBQSxLQUFDLFNBQVUsU0FBUztBQUNsQixVQUFJLE9BQU8sWUFBWSxZQUFZLE9BQU9BLFlBQVcsVUFBVTtBQUM3RCxRQUFBQSxRQUFPLFVBQVUsUUFBUTtBQUFBLE1BQzNCLFdBQVcsT0FBTyxXQUFXLGNBQWMsT0FBTyxLQUFLO0FBQ3JELGVBQU8sT0FBTztBQUFBLE1BQ2hCLE9BQU87QUFDTCxZQUFJLE9BQ0YsT0FBTyxlQUFlLGNBQ2xCLGFBQ0EsT0FBTyxXQUFXLGNBQ2xCLFNBQ0EsT0FBTyxTQUFTLGNBQ2hCLE9BQ0EsUUFBUSxDQUFDO0FBQ2YsYUFBSyxNQUFNLFFBQVE7QUFBQSxNQUNyQjtBQUFBLElBQ0YsR0FBRyxXQUFXO0FBQ1o7QUFDQSxVQUFJQyxxQkFBb0IsT0FBTztBQUMvQixVQUFJQyxjQUFhLENBQUMsSUFBSSxRQUFRLFNBQVMsWUFBWTtBQUNqRCxlQUFPLFFBQVEsR0FBRyxHQUFHRCxtQkFBa0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxHQUFHLEdBQUcsSUFBSTtBQUFBLE1BQzdGO0FBR0EsVUFBSSxxQkFBcUJDLFlBQVc7QUFBQSxRQUNsQyxzQkFBc0JDLFVBQVNILFNBQVE7QUFDckMsY0FBSUksWUFBVyxPQUFPO0FBQ3RCLGNBQUlDLGFBQVksT0FBTztBQUN2QixjQUFJQyxvQkFBbUIsT0FBTztBQUM5QixjQUFJQyxzQkFBcUIsT0FBTztBQUNoQyxjQUFJQyxnQkFBZSxPQUFPO0FBQzFCLGNBQUlDLGdCQUFlLE9BQU8sVUFBVTtBQUNwQyxjQUFJLFFBQVEsQ0FBQyxJQUFJLFFBQVEsU0FBUyxTQUFTO0FBQ3pDLG1CQUFPLE9BQU8sT0FBTyxHQUFHLEdBQUdGLG9CQUFtQixFQUFFLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSTtBQUFBLFVBQ25FO0FBQ0EsY0FBSUcsZUFBYyxDQUFDLElBQUksUUFBUSxTQUFTLFlBQVk7QUFDbEQsbUJBQU8sUUFBUSxHQUFHLEdBQUdILG9CQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNO0FBQUEsY0FDdEQsU0FBUyxDQUFDO0FBQUEsWUFDWixHQUFHLFNBQVMsR0FBRyxHQUFHLElBQUk7QUFBQSxVQUN4QjtBQUNBLGNBQUksV0FBVyxDQUFDLFFBQVEsUUFBUTtBQUM5QixxQkFBUyxRQUFRO0FBQ2YsY0FBQUYsV0FBVSxRQUFRLE1BQU07QUFBQSxnQkFDdEIsS0FBSyxJQUFJO0FBQUEsZ0JBQ1QsWUFBWTtBQUFBLGNBQ2QsQ0FBQztBQUFBLFVBQ0w7QUFDQSxjQUFJTSxlQUFjLENBQUMsSUFBSSxNQUFNLFFBQVEsU0FBUztBQUM1QyxnQkFBSSxRQUFRLE9BQU8sU0FBUyxZQUFZLE9BQU8sU0FBUyxZQUFZO0FBQ2xFLHVCQUFTLE9BQU9KLG9CQUFtQixJQUFJO0FBQ3JDLG9CQUFJLENBQUNFLGNBQWEsS0FBSyxJQUFJLEdBQUcsS0FBSyxRQUFRO0FBQ3pDLGtCQUFBSixXQUFVLElBQUksS0FBSztBQUFBLG9CQUNqQixLQUFLLE1BQU0sS0FBSztBQUFBLG9CQUNoQixZQUFZLEVBQUUsT0FBT0Msa0JBQWlCLE1BQU0sR0FBRyxNQUFNLEtBQUs7QUFBQSxrQkFDNUQsQ0FBQztBQUFBLFlBQ1A7QUFDQSxtQkFBTztBQUFBLFVBQ1Q7QUFDQSxjQUFJTSxXQUFVLENBQUMsS0FBSyxZQUFZLFlBQVksU0FBUyxPQUFPLE9BQU9SLFVBQVNJLGNBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHRyxhQUFZLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxhQUFhTixXQUFVLFFBQVEsV0FBVztBQUFBLFlBQ3BMLE9BQU87QUFBQSxZQUNQLFlBQVk7QUFBQSxVQUNkLENBQUMsSUFBSSxRQUFRLEdBQUc7QUFDaEIsY0FBSSxlQUFlLENBQUMsUUFBUU0sYUFBWU4sV0FBVSxDQUFDLEdBQUcsY0FBYztBQUFBLFlBQ2xFLE9BQU87QUFBQSxVQUNULENBQUMsR0FBRyxHQUFHO0FBQ1AsY0FBSSxzQkFBc0IsTUFBTTtBQUFBLFlBQzlCLHFCQUFxQjtBQUFBLFlBQ3JCO0FBQUEsVUFDRixDQUFDO0FBQ0QsY0FBSSx1QkFBdUJLLGFBQVk7QUFBQSxZQUNyQywrQkFBK0JHLFdBQVVDLFVBQVM7QUFDaEQ7QUFDQSxrQ0FBb0I7QUFDcEIsdUJBQVMsT0FBTyxPQUFPO0FBQ3JCLG9CQUFJLE9BQU87QUFDVCw2QkFBVyxRQUFRLE9BQU87QUFDeEIsOEJBQVUsSUFBSTtBQUFBLGtCQUNoQjtBQUFBLGdCQUNGO0FBQ0EsdUJBQU87QUFBQSxrQkFDTCxNQUFNO0FBQUEsa0JBQ047QUFBQSxnQkFDRjtBQUFBLGNBQ0Y7QUFDQSx1QkFBUyxPQUFPLFVBQVU7QUFDeEIsb0JBQUksT0FBTztBQUNULDRCQUFVLFFBQVE7QUFBQSxnQkFDcEI7QUFDQSx1QkFBTztBQUFBLGtCQUNMLE1BQU07QUFBQSxrQkFDTjtBQUFBLGdCQUNGO0FBQUEsY0FDRjtBQUNBLHVCQUFTLE1BQU0sZUFBZSxVQUFVO0FBQ3RDLG9CQUFJLE9BQU87QUFDVCw0QkFBVSxRQUFRO0FBQUEsZ0JBQ3BCO0FBQ0EsdUJBQU87QUFBQSxrQkFDTCxNQUFNO0FBQUEsa0JBQ047QUFBQSxrQkFDQSxHQUFHO0FBQUEsZ0JBQ0w7QUFBQSxjQUNGO0FBQ0EsdUJBQVMsTUFBTSxVQUFVO0FBQ3ZCLG9CQUFJLE9BQU8sVUFBVSxTQUFTLEtBQUssVUFBVSxPQUFPLFNBQVMsVUFBVSxLQUFLLENBQUM7QUFDN0Usb0JBQUksT0FBTztBQUNULDRCQUFVLFFBQVE7QUFBQSxnQkFDcEI7QUFDQSx1QkFBTztBQUFBLGtCQUNMLE1BQU07QUFBQSxrQkFDTixJQUFJLEtBQUs7QUFBQSxrQkFDVDtBQUFBLGtCQUNBLE9BQU8sUUFBUSxLQUFLLFdBQVc7QUFBQSxrQkFDL0IsZ0JBQWdCLEtBQUs7QUFBQSxnQkFDdkI7QUFBQSxjQUNGO0FBQ0EsdUJBQVMsYUFBYSxVQUFVO0FBQzlCLHVCQUFPLE1BQU0sT0FBTyxtQkFBbUIsUUFBUTtBQUFBLGNBQ2pEO0FBQ0EsdUJBQVMsV0FBVyxVQUFVO0FBQzVCLHVCQUFPLE1BQU07QUFBQSxrQkFDWCxNQUFNO0FBQUEsZ0JBQ1IsR0FBRyxRQUFRO0FBQUEsY0FDYjtBQUNBLHVCQUFTLE9BQU8sVUFBVTtBQUN4Qix1QkFBTyxNQUFNLElBQUksUUFBUTtBQUFBLGNBQzNCO0FBQ0EsdUJBQVMsaUJBQWlCLFFBQVEsTUFBTTtBQUN0Qyx1QkFBTyxNQUFNLE9BQU8sSUFBSSxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHO0FBQUEsa0JBQ2pFLGdCQUFnQjtBQUFBLGdCQUNsQixDQUFDLENBQUM7QUFBQSxjQUNKO0FBQ0EsdUJBQVMsS0FBSyxPQUFPO0FBQ25CLG9CQUFJLE9BQU87QUFDVCw2QkFBVyxRQUFRLE9BQU87QUFDeEIsOEJBQVUsSUFBSTtBQUFBLGtCQUNoQjtBQUFBLGdCQUNGO0FBQ0EsdUJBQU87QUFBQSxrQkFDTCxNQUFNO0FBQUEsa0JBQ047QUFBQSxnQkFDRjtBQUFBLGNBQ0Y7QUFDQSx1QkFBUyxRQUFRLGVBQWUsY0FBYztBQUM1QyxvQkFBSSxPQUFPLFVBQVUsU0FBUyxLQUFLLFVBQVUsT0FBTyxTQUFTLFVBQVUsS0FBSyxDQUFDO0FBQzdFLG9CQUFJLE9BQU87QUFDVCxzQkFBSSxlQUFlO0FBQ2pCLDhCQUFVLGFBQWE7QUFBQSxrQkFDekI7QUFDQSxzQkFBSSxjQUFjO0FBQ2hCLDhCQUFVLFlBQVk7QUFBQSxrQkFDeEI7QUFBQSxnQkFDRjtBQUNBLHVCQUFPO0FBQUEsa0JBQ0wsTUFBTTtBQUFBLGtCQUNOO0FBQUEsa0JBQ0E7QUFBQSxrQkFDQSxTQUFTLEtBQUs7QUFBQSxnQkFDaEI7QUFBQSxjQUNGO0FBQ0EsdUJBQVMsY0FBYyxVQUFVLE1BQU07QUFDckMsdUJBQU87QUFBQSxrQkFDTCxNQUFNO0FBQUEsa0JBQ047QUFBQSxrQkFDQSxTQUFTLEtBQUs7QUFBQSxrQkFDZCxRQUFRLEtBQUs7QUFBQSxnQkFDZjtBQUFBLGNBQ0Y7QUFDQSx1QkFBUyxXQUFXLFVBQVU7QUFDNUIsb0JBQUksT0FBTztBQUNULDRCQUFVLFFBQVE7QUFBQSxnQkFDcEI7QUFDQSx1QkFBTztBQUFBLGtCQUNMLE1BQU07QUFBQSxrQkFDTjtBQUFBLGdCQUNGO0FBQUEsY0FDRjtBQUNBLGtCQUFJLHFCQUFxQjtBQUFBLGdCQUN2QixNQUFNO0FBQUEsY0FDUjtBQUNBLGtCQUFJLGNBQWM7QUFBQSxnQkFDaEIsTUFBTTtBQUFBLGNBQ1I7QUFDQSxrQkFBSSxPQUFPO0FBQUEsZ0JBQ1QsTUFBTTtBQUFBLGNBQ1I7QUFDQSxrQkFBSSw2QkFBNkI7QUFBQSxnQkFDL0IsTUFBTTtBQUFBLGdCQUNOLE1BQU07QUFBQSxjQUNSO0FBQ0Esa0JBQUksZ0NBQWdDO0FBQUEsZ0JBQ2xDLE1BQU07QUFBQSxnQkFDTixNQUFNO0FBQUEsZ0JBQ04sU0FBUztBQUFBLGNBQ1g7QUFDQSxrQkFBSSxPQUFPO0FBQUEsZ0JBQ1QsTUFBTTtBQUFBLGNBQ1I7QUFDQSxrQkFBSSxXQUFXO0FBQUEsZ0JBQ2IsTUFBTTtBQUFBLGdCQUNOLE1BQU07QUFBQSxjQUNSO0FBQ0Esa0JBQUksV0FBVyxPQUFPLENBQUMsNEJBQTRCLFdBQVcsQ0FBQztBQUMvRCxrQkFBSSxjQUFjLE9BQU8sQ0FBQywrQkFBK0IsV0FBVyxDQUFDO0FBQ3JFLGtCQUFJLFNBQVM7QUFBQSxnQkFDWCxNQUFNO0FBQUEsZ0JBQ04sYUFBYSxPQUFPLFFBQVE7QUFBQSxjQUM5QjtBQUNBLHVCQUFTLEtBQUssS0FBSyxLQUFLO0FBQ3RCLHNCQUFNLE1BQU0sQ0FBQztBQUNiLHlCQUFTLElBQUksR0FBRyxJQUFJLElBQUksUUFBUSxLQUFLO0FBQ25DLHNCQUFJLE1BQU0sR0FBRztBQUNYLHdCQUFJLEtBQUssR0FBRztBQUFBLGtCQUNkO0FBQ0Esc0JBQUksS0FBSyxJQUFJLEVBQUU7QUFBQSxnQkFDakI7QUFDQSx1QkFBTyxPQUFPLEdBQUc7QUFBQSxjQUNuQjtBQUNBLHVCQUFTLGtCQUFrQixLQUFLLE1BQU0sVUFBVTtBQUM5QyxvQkFBSSxVQUFVO0FBQ2Qsb0JBQUksT0FBTyxHQUFHO0FBQ1osMkJBQVMsSUFBSSxHQUFHLElBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxHQUFHLEVBQUUsR0FBRztBQUNwRCw4QkFBVSxPQUFPLE9BQU87QUFBQSxrQkFDMUI7QUFDQSw0QkFBVSxNQUFNLE9BQU8sVUFBVSxPQUFPO0FBQ3hDLDRCQUFVLE1BQU0sT0FBTyxtQkFBbUIsT0FBTztBQUFBLGdCQUNuRDtBQUNBLHVCQUFPO0FBQUEsY0FDVDtBQUNBLHVCQUFTLE1BQU0sUUFBUSxVQUFVO0FBQy9CLHVCQUFPO0FBQUEsa0JBQ0wsTUFBTTtBQUFBLGtCQUNOLE9BQU87QUFBQSxrQkFDUDtBQUFBLGdCQUNGO0FBQUEsY0FDRjtBQUNBLGNBQUFBLFNBQVEsVUFBVTtBQUFBLGdCQUNoQjtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGNBQ0Y7QUFBQSxZQUNGO0FBQUEsVUFDRixDQUFDO0FBQ0QsY0FBSSxzQkFBc0JKLGFBQVk7QUFBQSxZQUNwQyw0QkFBNEJHLFdBQVVDLFVBQVM7QUFDN0M7QUFDQSxrQ0FBb0I7QUFDcEIsdUJBQVMsZUFBZSxNQUFNO0FBQzVCLHNCQUFNLFFBQVEsS0FBSyxRQUFRLElBQUk7QUFDL0Isb0JBQUksU0FBUyxHQUFHO0FBQ2QseUJBQU8sS0FBSyxPQUFPLFFBQVEsQ0FBQyxNQUFNLE9BQU8sU0FBUztBQUFBLGdCQUNwRDtBQUNBLHVCQUFPO0FBQUEsY0FDVDtBQUNBLHVCQUFTLHdCQUF3QixPQUFPO0FBQ3RDLHdCQUFRO0FBQUEsdUJBQ0Q7QUFDSCwyQkFBTztBQUFBLHVCQUNKO0FBQ0gsMkJBQU87QUFBQTtBQUVQLDJCQUFPO0FBQUE7QUFBQSxjQUViO0FBQ0EsdUJBQVMsb0JBQW9CLE1BQU0sS0FBSztBQUN0QyxvQkFBSTtBQUNKLHdCQUFRO0FBQUEsdUJBQ0Q7QUFDSCw0QkFBUTtBQUNSO0FBQUEsdUJBQ0c7QUFDSCw0QkFBUTtBQUNSO0FBQUEsdUJBQ0c7QUFDSCw0QkFBUTtBQUNSO0FBQUE7QUFFQSwwQkFBTSxJQUFJLE1BQU0sb0JBQW9CLE9BQU8sS0FBSyxVQUFVLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFBQTtBQUV4RSxzQkFBTSxhQUFhLEtBQUssTUFBTSxLQUFLO0FBQ25DLHVCQUFPLGFBQWEsV0FBVyxTQUFTO0FBQUEsY0FDMUM7QUFDQSx1QkFBUyxtQkFBbUIsTUFBTTtBQUNoQyx1QkFBTyxLQUFLLFFBQVEsVUFBVSxJQUFJO0FBQUEsY0FDcEM7QUFDQSxjQUFBQSxTQUFRLFVBQVU7QUFBQSxnQkFDaEI7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxjQUNGO0FBQUEsWUFDRjtBQUFBLFVBQ0YsQ0FBQztBQUNELGNBQUksbUJBQW1CSixhQUFZO0FBQUEsWUFDakMsd0JBQXdCRyxXQUFVQyxVQUFTO0FBQ3pDO0FBQ0Esa0NBQW9CO0FBQ3BCLGtCQUFJLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxTQUFTO0FBQ3hDLGNBQUFBLFNBQVEsVUFBVTtBQUFBLFlBQ3BCO0FBQUEsVUFDRixDQUFDO0FBQ0QsbUJBQVMsWUFBWTtBQUNuQixnQkFBSTtBQUFBLGNBQ0YsWUFBWTtBQUFBLFlBQ2QsSUFBSSxVQUFVLFNBQVMsS0FBSyxVQUFVLE9BQU8sU0FBUyxVQUFVLEtBQUssQ0FBQztBQUN0RSxrQkFBTSxVQUFVLENBQUMsZ0lBQWdJLDBEQUEwRCxFQUFFLEtBQUssR0FBRztBQUNyTixtQkFBTyxJQUFJLE9BQU8sU0FBUyxZQUFZLFNBQVMsR0FBRztBQUFBLFVBQ3JEO0FBQ0EsY0FBSSxrQkFBa0IsTUFBTTtBQUFBLFlBQzFCLDZEQUE2RDtBQUMzRCxrQ0FBb0I7QUFBQSxZQUN0QjtBQUFBLFVBQ0YsQ0FBQztBQUNELG1CQUFTLFVBQVUsUUFBUTtBQUN6QixnQkFBSSxPQUFPLFdBQVcsVUFBVTtBQUM5QixvQkFBTSxJQUFJLFVBQVUsNkJBQTZCLE9BQU8sT0FBTyxRQUFRLEdBQUcsQ0FBQztBQUFBLFlBQzdFO0FBQ0EsbUJBQU8sT0FBTyxRQUFRLFVBQVUsR0FBRyxFQUFFO0FBQUEsVUFDdkM7QUFDQSxjQUFJLGtCQUFrQixNQUFNO0FBQUEsWUFDMUIscUNBQXFDO0FBQ25DLGtDQUFvQjtBQUNwQiw4QkFBZ0I7QUFBQSxZQUNsQjtBQUFBLFVBQ0YsQ0FBQztBQUNELG1CQUFTLHFCQUFxQixXQUFXO0FBQ3ZDLGdCQUFJLENBQUMsT0FBTyxVQUFVLFNBQVMsR0FBRztBQUNoQyxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxtQkFBTyxhQUFhLFNBQVMsYUFBYSxRQUFRLGNBQWMsUUFBUSxjQUFjLFFBQVEsU0FBUyxhQUFhLGFBQWEsU0FBUyxjQUFjLFNBQVMsU0FBUyxhQUFhLGFBQWEsU0FBUyxTQUFTLGFBQWEsYUFBYSxTQUFTLFNBQVMsYUFBYSxhQUFhLFNBQVMsU0FBUyxhQUFhLGFBQWEsU0FBUyxTQUFTLGFBQWEsYUFBYSxTQUFTLFNBQVMsYUFBYSxhQUFhLFNBQVMsU0FBUyxhQUFhLGFBQWEsU0FBUyxTQUFTLGFBQWEsYUFBYSxTQUFTLFNBQVMsYUFBYSxhQUFhLFNBQVMsVUFBVSxhQUFhLGFBQWEsVUFBVSxVQUFVLGFBQWEsYUFBYSxVQUFVLFVBQVUsYUFBYSxhQUFhO0FBQUEsVUFDL3FCO0FBQ0EsY0FBSSwrQkFBK0IsTUFBTTtBQUFBLFlBQ3ZDLGtEQUFrRDtBQUNoRCxrQ0FBb0I7QUFBQSxZQUN0QjtBQUFBLFVBQ0YsQ0FBQztBQUNELGNBQUlDLHVCQUFzQkwsYUFBWTtBQUFBLFlBQ3BDLG9DQUFvQ0csV0FBVUMsVUFBUztBQUNyRDtBQUNBLGtDQUFvQjtBQUNwQixjQUFBQSxTQUFRLFVBQVUsV0FBVztBQUMzQix1QkFBTztBQUFBLGNBQ1Q7QUFBQSxZQUNGO0FBQUEsVUFDRixDQUFDO0FBQ0QsY0FBSSx1QkFBdUIsQ0FBQztBQUM1QixtQkFBUyxzQkFBc0I7QUFBQSxZQUM3QixTQUFTLE1BQU07QUFBQSxVQUNqQixDQUFDO0FBQ0QsbUJBQVMsWUFBWSxRQUFRO0FBQzNCLGdCQUFJLE9BQU8sV0FBVyxZQUFZLE9BQU8sV0FBVyxHQUFHO0FBQ3JELHFCQUFPO0FBQUEsWUFDVDtBQUNBLHFCQUFTLFVBQVUsTUFBTTtBQUN6QixnQkFBSSxPQUFPLFdBQVcsR0FBRztBQUN2QixxQkFBTztBQUFBLFlBQ1Q7QUFDQSxxQkFBUyxPQUFPLFNBQVMsR0FBRyxtQkFBbUIsU0FBUyxHQUFHLElBQUk7QUFDL0QsZ0JBQUksUUFBUTtBQUNaLHFCQUFTLFFBQVEsR0FBRyxRQUFRLE9BQU8sUUFBUSxTQUFTO0FBQ2xELG9CQUFNLFlBQVksT0FBTyxZQUFZLEtBQUs7QUFDMUMsa0JBQUksYUFBYSxNQUFNLGFBQWEsT0FBTyxhQUFhLEtBQUs7QUFDM0Q7QUFBQSxjQUNGO0FBQ0Esa0JBQUksYUFBYSxPQUFPLGFBQWEsS0FBSztBQUN4QztBQUFBLGNBQ0Y7QUFDQSxrQkFBSSxZQUFZLE9BQU87QUFDckI7QUFBQSxjQUNGO0FBQ0EsdUJBQVMscUJBQXFCLFNBQVMsSUFBSSxJQUFJO0FBQUEsWUFDakQ7QUFDQSxtQkFBTztBQUFBLFVBQ1Q7QUFDQSxjQUFJO0FBQ0osY0FBSSxvQkFBb0IsTUFBTTtBQUFBLFlBQzVCLHVDQUF1QztBQUNyQyxrQ0FBb0I7QUFDcEIsOEJBQWdCO0FBQ2hCLDJDQUE2QjtBQUM3QixtQ0FBcUJGLFNBQVFHLHFCQUFvQixDQUFDO0FBQUEsWUFDcEQ7QUFBQSxVQUNGLENBQUM7QUFDRCxjQUFJLDJCQUEyQkwsYUFBWTtBQUFBLFlBQ3pDLGdDQUFnQ0csV0FBVUMsVUFBUztBQUNqRDtBQUNBLGtDQUFvQjtBQUNwQixrQkFBSSxnQkFBZ0Isa0JBQWtCLEdBQUcsYUFBYSxvQkFBb0IsR0FBRztBQUM3RSxrQkFBSSxnQkFBZ0I7QUFDcEIsdUJBQVMsZUFBZSxNQUFNO0FBQzVCLG9CQUFJLENBQUMsTUFBTTtBQUNULHlCQUFPO0FBQUEsZ0JBQ1Q7QUFDQSxvQkFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEdBQUc7QUFDN0IseUJBQU8sS0FBSztBQUFBLGdCQUNkO0FBQ0EsdUJBQU8sYUFBYSxJQUFJO0FBQUEsY0FDMUI7QUFDQSxjQUFBQSxTQUFRLFVBQVU7QUFBQSxZQUNwQjtBQUFBLFVBQ0YsQ0FBQztBQUNELGNBQUksb0JBQW9CSixhQUFZO0FBQUEsWUFDbEMsNEJBQTRCRyxXQUFVQyxVQUFTO0FBQzdDO0FBQ0Esa0NBQW9CO0FBQ3BCLGtCQUFJLFVBQVUsaUJBQWlCO0FBQy9CLGtCQUFJO0FBQUEsZ0JBQ0Y7QUFBQSxnQkFDQTtBQUFBLGNBQ0YsSUFBSSxxQkFBcUI7QUFDekIsa0JBQUksV0FBVyxDQUFDLFFBQVEsTUFBTSxRQUFRLEdBQUcsS0FBSyxPQUFPLElBQUksU0FBUztBQUNsRSxrQkFBSSxjQUFjLENBQUMsUUFBUTtBQUN6QixvQkFBSSxNQUFNLFFBQVEsR0FBRyxHQUFHO0FBQ3RCLHlCQUFPO0FBQUEsZ0JBQ1Q7QUFDQSxvQkFBSSxJQUFJLFNBQVMsWUFBWSxJQUFJLFNBQVMsUUFBUTtBQUNoRCx3QkFBTSxJQUFJLE1BQU0sMkNBQTJDO0FBQUEsZ0JBQzdEO0FBQ0EsdUJBQU8sSUFBSTtBQUFBLGNBQ2I7QUFDQSxrQkFBSSwrQkFBK0IsQ0FBQztBQUNwQyx1QkFBUyxZQUFZLEtBQUssU0FBUyxRQUFRLGlDQUFpQztBQUMxRSxzQkFBTSxZQUFZLENBQUMsR0FBRztBQUN0Qix1QkFBTyxVQUFVLFNBQVMsR0FBRztBQUMzQix3QkFBTSxPQUFPLFVBQVUsSUFBSTtBQUMzQixzQkFBSSxTQUFTLDhCQUE4QjtBQUN6QywyQkFBTyxVQUFVLElBQUksQ0FBQztBQUN0QjtBQUFBLGtCQUNGO0FBQ0Esc0JBQUksUUFBUTtBQUNWLDhCQUFVLEtBQUssTUFBTSw0QkFBNEI7QUFBQSxrQkFDbkQ7QUFDQSxzQkFBSSxDQUFDLFdBQVcsUUFBUSxJQUFJLE1BQU0sT0FBTztBQUN2Qyx3QkFBSSxTQUFTLElBQUksS0FBSyxLQUFLLFNBQVMsUUFBUTtBQUMxQyw0QkFBTSxRQUFRLFlBQVksSUFBSTtBQUM5QiwrQkFBUyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHO0FBQ25ELGtDQUFVLEtBQUssTUFBTSxFQUFFO0FBQUEsc0JBQ3pCO0FBQUEsb0JBQ0YsV0FBVyxLQUFLLFNBQVMsWUFBWTtBQUNuQywwQkFBSSxLQUFLLGNBQWM7QUFDckIsa0NBQVUsS0FBSyxLQUFLLFlBQVk7QUFBQSxzQkFDbEM7QUFDQSwwQkFBSSxLQUFLLGVBQWU7QUFDdEIsa0NBQVUsS0FBSyxLQUFLLGFBQWE7QUFBQSxzQkFDbkM7QUFBQSxvQkFDRixXQUFXLEtBQUssU0FBUyxXQUFXLEtBQUssZ0JBQWdCO0FBQ3ZELDBCQUFJLGlDQUFpQztBQUNuQyxpQ0FBUyxLQUFLLEtBQUssZUFBZSxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUc7QUFDakUsb0NBQVUsS0FBSyxLQUFLLGVBQWUsRUFBRTtBQUFBLHdCQUN2QztBQUFBLHNCQUNGLE9BQU87QUFDTCxrQ0FBVSxLQUFLLEtBQUssUUFBUTtBQUFBLHNCQUM5QjtBQUFBLG9CQUNGLFdBQVcsS0FBSyxVQUFVO0FBQ3hCLGdDQUFVLEtBQUssS0FBSyxRQUFRO0FBQUEsb0JBQzlCO0FBQUEsa0JBQ0Y7QUFBQSxnQkFDRjtBQUFBLGNBQ0Y7QUFDQSx1QkFBUyxPQUFPLEtBQUssSUFBSTtBQUN2QixzQkFBTSxTQUF5QixvQkFBSSxJQUFJO0FBQ3ZDLHVCQUFPLElBQUksR0FBRztBQUNkLHlCQUFTLElBQUksTUFBTTtBQUNqQixzQkFBSSxPQUFPLElBQUksSUFBSSxHQUFHO0FBQ3BCLDJCQUFPLE9BQU8sSUFBSSxJQUFJO0FBQUEsa0JBQ3hCO0FBQ0Esd0JBQU0sU0FBUyxTQUFTLElBQUk7QUFDNUIseUJBQU8sSUFBSSxNQUFNLE1BQU07QUFDdkIseUJBQU87QUFBQSxnQkFDVDtBQUNBLHlCQUFTLFNBQVMsTUFBTTtBQUN0QixzQkFBSSxNQUFNLFFBQVEsSUFBSSxHQUFHO0FBQ3ZCLDJCQUFPLEdBQUcsS0FBSyxJQUFJLEdBQUcsQ0FBQztBQUFBLGtCQUN6QjtBQUNBLHNCQUFJLEtBQUssU0FBUyxZQUFZLEtBQUssU0FBUyxRQUFRO0FBQ2xELDBCQUFNLFFBQVEsS0FBSyxNQUFNLElBQUksR0FBRztBQUNoQywyQkFBTyxHQUFHLE9BQU8sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUc7QUFBQSxzQkFDbkQ7QUFBQSxvQkFDRixDQUFDLENBQUM7QUFBQSxrQkFDSjtBQUNBLHNCQUFJLEtBQUssU0FBUyxZQUFZO0FBQzVCLDBCQUFNLGdCQUFnQixLQUFLLGlCQUFpQixJQUFJLEtBQUssYUFBYTtBQUNsRSwwQkFBTSxlQUFlLEtBQUssZ0JBQWdCLElBQUksS0FBSyxZQUFZO0FBQy9ELDJCQUFPLEdBQUcsT0FBTyxPQUFPLE9BQU8sT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRztBQUFBLHNCQUNuRDtBQUFBLHNCQUNBO0FBQUEsb0JBQ0YsQ0FBQyxDQUFDO0FBQUEsa0JBQ0o7QUFDQSxzQkFBSSxLQUFLLFNBQVMsV0FBVyxLQUFLLGdCQUFnQjtBQUNoRCwwQkFBTSxpQkFBaUIsS0FBSyxlQUFlLElBQUksR0FBRztBQUNsRCwwQkFBTSxXQUFXLGVBQWU7QUFDaEMsMkJBQU8sR0FBRyxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHO0FBQUEsc0JBQ25EO0FBQUEsc0JBQ0E7QUFBQSxvQkFDRixDQUFDLENBQUM7QUFBQSxrQkFDSjtBQUNBLHNCQUFJLEtBQUssVUFBVTtBQUNqQiwwQkFBTSxXQUFXLElBQUksS0FBSyxRQUFRO0FBQ2xDLDJCQUFPLEdBQUcsT0FBTyxPQUFPLE9BQU8sT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRztBQUFBLHNCQUNuRDtBQUFBLG9CQUNGLENBQUMsQ0FBQztBQUFBLGtCQUNKO0FBQ0EseUJBQU8sR0FBRyxJQUFJO0FBQUEsZ0JBQ2hCO0FBQUEsY0FDRjtBQUNBLHVCQUFTLFVBQVUsS0FBSyxJQUFJLGNBQWM7QUFDeEMsb0JBQUksU0FBUztBQUNiLG9CQUFJLGFBQWE7QUFDakIseUJBQVMsbUJBQW1CLE1BQU07QUFDaEMsd0JBQU0sY0FBYyxHQUFHLElBQUk7QUFDM0Isc0JBQUksZ0JBQWdCLFFBQVE7QUFDMUIsaUNBQWE7QUFDYiw2QkFBUztBQUFBLGtCQUNYO0FBQ0Esc0JBQUksWUFBWTtBQUNkLDJCQUFPO0FBQUEsa0JBQ1Q7QUFBQSxnQkFDRjtBQUNBLDRCQUFZLEtBQUssa0JBQWtCO0FBQ25DLHVCQUFPO0FBQUEsY0FDVDtBQUNBLHVCQUFTLFlBQVksS0FBSztBQUN4QixvQkFBSSxJQUFJLFNBQVMsV0FBVyxJQUFJLE9BQU87QUFDckMseUJBQU87QUFBQSxnQkFDVDtBQUNBLG9CQUFJLElBQUksU0FBUyxVQUFVLElBQUksTUFBTTtBQUNuQyx5QkFBTztBQUFBLGdCQUNUO0FBQ0Esb0JBQUksSUFBSSxTQUFTLGdCQUFnQjtBQUMvQix5QkFBTztBQUFBLGdCQUNUO0FBQUEsY0FDRjtBQUNBLHVCQUFTLFVBQVUsS0FBSztBQUN0Qix1QkFBTyxVQUFVLEtBQUssYUFBYSxLQUFLO0FBQUEsY0FDMUM7QUFDQSx1QkFBUyxpQkFBaUIsWUFBWTtBQUNwQyxvQkFBSSxXQUFXLFNBQVMsR0FBRztBQUN6Qix3QkFBTSxjQUFjLFFBQVEsVUFBVTtBQUN0QyxzQkFBSSxDQUFDLFlBQVksa0JBQWtCLENBQUMsWUFBWSxPQUFPO0FBQ3JELGdDQUFZLFFBQVE7QUFBQSxrQkFDdEI7QUFBQSxnQkFDRjtBQUNBLHVCQUFPO0FBQUEsY0FDVDtBQUNBLHVCQUFTLGdCQUFnQixLQUFLO0FBQzVCLHNCQUFNLG9CQUFvQyxvQkFBSSxJQUFJO0FBQ2xELHNCQUFNLGFBQWEsQ0FBQztBQUNwQix5QkFBUyx5QkFBeUIsTUFBTTtBQUN0QyxzQkFBSSxLQUFLLFNBQVMsZ0JBQWdCO0FBQ2hDLHFDQUFpQixVQUFVO0FBQUEsa0JBQzdCO0FBQ0Esc0JBQUksS0FBSyxTQUFTLFNBQVM7QUFDekIsK0JBQVcsS0FBSyxJQUFJO0FBQ3BCLHdCQUFJLGtCQUFrQixJQUFJLElBQUksR0FBRztBQUMvQiw2QkFBTztBQUFBLG9CQUNUO0FBQ0Esc0NBQWtCLElBQUksSUFBSTtBQUFBLGtCQUM1QjtBQUFBLGdCQUNGO0FBQ0EseUJBQVMsd0JBQXdCLE1BQU07QUFDckMsc0JBQUksS0FBSyxTQUFTLFNBQVM7QUFDekIsMEJBQU0sUUFBUSxXQUFXLElBQUk7QUFDN0Isd0JBQUksTUFBTSxPQUFPO0FBQ2YsdUNBQWlCLFVBQVU7QUFBQSxvQkFDN0I7QUFBQSxrQkFDRjtBQUFBLGdCQUNGO0FBQ0EsNEJBQVksS0FBSywwQkFBMEIseUJBQXlCLElBQUk7QUFBQSxjQUMxRTtBQUNBLHVCQUFTLGNBQWMsS0FBSztBQUMxQixvQkFBSSxJQUFJLFNBQVMsVUFBVSxDQUFDLElBQUksTUFBTTtBQUNwQyx5QkFBTyxJQUFJLE9BQU8sS0FBSztBQUFBLGdCQUN6QjtBQUNBLG9CQUFJLElBQUksU0FBUyxZQUFZO0FBQzNCLHlCQUFPLElBQUksZ0JBQWdCO0FBQUEsZ0JBQzdCO0FBQ0EsdUJBQU87QUFBQSxjQUNUO0FBQ0EsdUJBQVMsWUFBWSxLQUFLO0FBQ3hCLHVCQUFPLE9BQU8sS0FBSyxhQUFhO0FBQUEsY0FDbEM7QUFDQSxrQkFBSSxhQUFhLENBQUMsS0FBSyxZQUFZLE9BQU8sSUFBSSxTQUFTLFVBQVUsSUFBSSxRQUFRLFdBQVcsUUFBUSxTQUFTO0FBQ3pHLHVCQUFTLGdDQUFnQyxLQUFLO0FBQzVDLG9CQUFJLENBQUMsS0FBSztBQUNSLHlCQUFPO0FBQUEsZ0JBQ1Q7QUFDQSxvQkFBSSxTQUFTLEdBQUcsS0FBSyxJQUFJLFNBQVMsUUFBUTtBQUN4Qyx3QkFBTSxRQUFRLFlBQVksR0FBRztBQUM3Qix5QkFBTyxNQUFNLFNBQVMsS0FBSyxXQUFXLEdBQUcsTUFBTSxNQUFNLEVBQUUsQ0FBQyxHQUFHO0FBQ3pELDBCQUFNLFVBQVU7QUFBQSxrQkFDbEI7QUFDQSxzQkFBSSxNQUFNLFNBQVMsR0FBRztBQUNwQiwwQkFBTSxXQUFXLGdDQUFnQyxRQUFRLEtBQUssQ0FBQztBQUMvRCwwQkFBTSxNQUFNLFNBQVMsS0FBSztBQUFBLGtCQUM1QjtBQUNBLHlCQUFPLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHO0FBQUEsb0JBQzVFO0FBQUEsa0JBQ0YsQ0FBQztBQUFBLGdCQUNIO0FBQ0Esd0JBQVEsSUFBSTtBQUFBLHVCQUNMO0FBQUEsdUJBQ0E7QUFBQSx1QkFDQTtBQUFBLHVCQUNBO0FBQUEsdUJBQ0E7QUFBQSx1QkFDQSxTQUFTO0FBQ1osMEJBQU0sV0FBVyxnQ0FBZ0MsSUFBSSxRQUFRO0FBQzdELDJCQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUc7QUFBQSxzQkFDL0M7QUFBQSxvQkFDRixDQUFDO0FBQUEsa0JBQ0g7QUFBQSx1QkFDSyxZQUFZO0FBQ2YsMEJBQU0sZ0JBQWdCLGdDQUFnQyxJQUFJLGFBQWE7QUFDdkUsMEJBQU0sZUFBZSxnQ0FBZ0MsSUFBSSxZQUFZO0FBQ3JFLDJCQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUc7QUFBQSxzQkFDL0M7QUFBQSxzQkFDQTtBQUFBLG9CQUNGLENBQUM7QUFBQSxrQkFDSDtBQUFBO0FBRUYsdUJBQU87QUFBQSxjQUNUO0FBQ0EsdUJBQVMsc0JBQXNCLEtBQUs7QUFDbEMsdUJBQU8sZ0NBQWdDLFNBQVMsR0FBRyxDQUFDO0FBQUEsY0FDdEQ7QUFDQSx1QkFBUyxXQUFXLEtBQUs7QUFDdkIsd0JBQVEsSUFBSTtBQUFBLHVCQUNMO0FBQ0gsd0JBQUksSUFBSSxNQUFNLE1BQU0sQ0FBQyxTQUFTLFNBQVMsRUFBRSxHQUFHO0FBQzFDLDZCQUFPO0FBQUEsb0JBQ1Q7QUFDQTtBQUFBLHVCQUNHO0FBQ0gsd0JBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLGdCQUFnQjtBQUNqRSw2QkFBTztBQUFBLG9CQUNUO0FBQ0Esd0JBQUksSUFBSSxTQUFTLFNBQVMsV0FBVyxJQUFJLFNBQVMsT0FBTyxJQUFJLE1BQU0sSUFBSSxTQUFTLFVBQVUsSUFBSSxTQUFTLElBQUksU0FBUyxtQkFBbUIsSUFBSSxnQkFBZ0I7QUFDekosNkJBQU8sSUFBSTtBQUFBLG9CQUNiO0FBQ0E7QUFBQSx1QkFDRztBQUFBLHVCQUNBO0FBQUEsdUJBQ0E7QUFBQSx1QkFDQTtBQUNILHdCQUFJLENBQUMsSUFBSSxVQUFVO0FBQ2pCLDZCQUFPO0FBQUEsb0JBQ1Q7QUFDQTtBQUFBLHVCQUNHO0FBQ0gsd0JBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksZUFBZTtBQUMzQyw2QkFBTztBQUFBLG9CQUNUO0FBQ0E7QUFBQTtBQUVKLG9CQUFJLENBQUMsU0FBUyxHQUFHLEdBQUc7QUFDbEIseUJBQU87QUFBQSxnQkFDVDtBQUNBLHNCQUFNLFFBQVEsQ0FBQztBQUNmLDJCQUFXLFFBQVEsWUFBWSxHQUFHLEdBQUc7QUFDbkMsc0JBQUksQ0FBQyxNQUFNO0FBQ1Q7QUFBQSxrQkFDRjtBQUNBLHdCQUFNLENBQUMsZ0JBQWdCLFNBQVMsSUFBSSxTQUFTLElBQUksSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLElBQUk7QUFDOUUsc0JBQUksT0FBTyxnQkFBZ0IsWUFBWSxPQUFPLFFBQVEsS0FBSyxNQUFNLFVBQVU7QUFDekUsMEJBQU0sTUFBTSxTQUFTLE1BQU07QUFBQSxrQkFDN0IsT0FBTztBQUNMLDBCQUFNLEtBQUssV0FBVztBQUFBLGtCQUN4QjtBQUNBLHdCQUFNLEtBQUssR0FBRyxTQUFTO0FBQUEsZ0JBQ3pCO0FBQ0Esb0JBQUksTUFBTSxXQUFXLEdBQUc7QUFDdEIseUJBQU87QUFBQSxnQkFDVDtBQUNBLG9CQUFJLE1BQU0sV0FBVyxHQUFHO0FBQ3RCLHlCQUFPLE1BQU07QUFBQSxnQkFDZjtBQUNBLHVCQUFPLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHO0FBQUEsa0JBQzVFO0FBQUEsZ0JBQ0YsQ0FBQztBQUFBLGNBQ0g7QUFDQSx1QkFBUyxTQUFTLEtBQUs7QUFDckIsdUJBQU8sT0FBTyxLQUFLLENBQUMsZUFBZSxXQUFXLFVBQVUsQ0FBQztBQUFBLGNBQzNEO0FBQ0EsdUJBQVMsZUFBZSxPQUFPO0FBQzdCLHNCQUFNLFdBQVcsQ0FBQztBQUNsQixzQkFBTSxZQUFZLE1BQU0sT0FBTyxPQUFPO0FBQ3RDLHVCQUFPLFVBQVUsU0FBUyxHQUFHO0FBQzNCLHdCQUFNLE9BQU8sVUFBVSxNQUFNO0FBQzdCLHNCQUFJLENBQUMsTUFBTTtBQUNUO0FBQUEsa0JBQ0Y7QUFDQSxzQkFBSSxTQUFTLElBQUksR0FBRztBQUNsQiw4QkFBVSxRQUFRLEdBQUcsWUFBWSxJQUFJLENBQUM7QUFDdEM7QUFBQSxrQkFDRjtBQUNBLHNCQUFJLFNBQVMsU0FBUyxLQUFLLE9BQU8sUUFBUSxRQUFRLE1BQU0sWUFBWSxPQUFPLFNBQVMsVUFBVTtBQUM1Riw2QkFBUyxTQUFTLFNBQVMsTUFBTTtBQUNqQztBQUFBLGtCQUNGO0FBQ0EsMkJBQVMsS0FBSyxJQUFJO0FBQUEsZ0JBQ3BCO0FBQ0EsdUJBQU87QUFBQSxjQUNUO0FBQ0EsdUJBQVMsYUFBYSxLQUFLO0FBQ3pCLHVCQUFPLE9BQU8sS0FBSyxDQUFDLGVBQWU7QUFDakMsc0JBQUksTUFBTSxRQUFRLFVBQVUsR0FBRztBQUM3QiwyQkFBTyxlQUFlLFVBQVU7QUFBQSxrQkFDbEM7QUFDQSxzQkFBSSxDQUFDLFdBQVcsT0FBTztBQUNyQiwyQkFBTztBQUFBLGtCQUNUO0FBQ0EseUJBQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsR0FBRztBQUFBLG9CQUN0RCxPQUFPLGVBQWUsV0FBVyxLQUFLO0FBQUEsa0JBQ3hDLENBQUM7QUFBQSxnQkFDSCxDQUFDO0FBQUEsY0FDSDtBQUNBLHVCQUFTLGlCQUFpQixLQUFLO0FBQzdCLHVCQUFPLE9BQU8sS0FBSyxDQUFDLGVBQWUsT0FBTyxlQUFlLFlBQVksV0FBVyxTQUFTLElBQUksSUFBSSxxQkFBcUIsVUFBVSxJQUFJLFVBQVU7QUFBQSxjQUNoSjtBQUNBLHVCQUFTLHFCQUFxQixNQUFNO0FBQ2xDLG9CQUFJLGNBQWMsVUFBVSxTQUFTLEtBQUssVUFBVSxPQUFPLFNBQVMsVUFBVSxLQUFLO0FBQ25GLHVCQUFPLEtBQUssYUFBYSxLQUFLLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFBQSxjQUM3QztBQUNBLHVCQUFTLFdBQVcsS0FBSztBQUN2QixvQkFBSSxJQUFJLFNBQVMsUUFBUTtBQUN2Qix5QkFBTztBQUFBLGdCQUNUO0FBQUEsY0FDRjtBQUNBLHVCQUFTLFNBQVMsS0FBSztBQUNyQix1QkFBTyxVQUFVLEtBQUssWUFBWSxLQUFLO0FBQUEsY0FDekM7QUFDQSxjQUFBQSxTQUFRLFVBQVU7QUFBQSxnQkFDaEI7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGLENBQUM7QUFDRCxjQUFJLHNCQUFzQkosYUFBWTtBQUFBLFlBQ3BDLDhCQUE4QkcsV0FBVUMsVUFBUztBQUMvQztBQUNBLGtDQUFvQjtBQUNwQixrQkFBSTtBQUFBLGdCQUNGO0FBQUEsY0FDRixJQUFJLG9CQUFvQjtBQUN4QixrQkFBSSxVQUFVLGlCQUFpQjtBQUMvQixrQkFBSSxpQkFBaUIseUJBQXlCO0FBQzlDLGtCQUFJO0FBQUEsZ0JBQ0Y7QUFBQSxnQkFDQTtBQUFBLGdCQUNBO0FBQUEsY0FDRixJQUFJLHFCQUFxQjtBQUN6QixrQkFBSTtBQUFBLGdCQUNGO0FBQUEsZ0JBQ0E7QUFBQSxjQUNGLElBQUksa0JBQWtCO0FBQ3RCLGtCQUFJO0FBQ0osa0JBQUksYUFBYTtBQUNqQixrQkFBSSxZQUFZO0FBQ2hCLHVCQUFTLGFBQWE7QUFDcEIsdUJBQU87QUFBQSxrQkFDTCxPQUFPO0FBQUEsa0JBQ1AsUUFBUTtBQUFBLGtCQUNSLE9BQU8sQ0FBQztBQUFBLGdCQUNWO0FBQUEsY0FDRjtBQUNBLHVCQUFTLFdBQVcsS0FBSyxTQUFTO0FBQ2hDLHVCQUFPLFlBQVksS0FBSztBQUFBLGtCQUN0QixNQUFNO0FBQUEsZ0JBQ1IsR0FBRyxPQUFPO0FBQUEsY0FDWjtBQUNBLHVCQUFTLFVBQVUsU0FBUyxZQUFZLFNBQVM7QUFDL0Msb0JBQUksZUFBZSxPQUFPLG1CQUFtQjtBQUMzQyx5QkFBTyxRQUFRLFFBQVEsV0FBVztBQUFBLGdCQUNwQztBQUNBLG9CQUFJLGFBQWEsR0FBRztBQUNsQix5QkFBTyxZQUFZLFNBQVM7QUFBQSxvQkFDMUIsTUFBTTtBQUFBLGtCQUNSLEdBQUcsT0FBTztBQUFBLGdCQUNaO0FBQ0Esb0JBQUksQ0FBQyxZQUFZO0FBQ2YseUJBQU87QUFBQSxnQkFDVDtBQUNBLG9CQUFJLFdBQVcsU0FBUyxRQUFRO0FBQzlCLHlCQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUc7QUFBQSxvQkFDbkQsTUFBTTtBQUFBLGtCQUNSLENBQUM7QUFBQSxnQkFDSDtBQUNBLHNCQUFNLFlBQVksT0FBTyxlQUFlLFdBQVcsZ0JBQWdCO0FBQ25FLHVCQUFPLFlBQVksU0FBUztBQUFBLGtCQUMxQixNQUFNO0FBQUEsa0JBQ04sR0FBRztBQUFBLGdCQUNMLEdBQUcsT0FBTztBQUFBLGNBQ1o7QUFDQSx1QkFBUyxZQUFZLEtBQUssU0FBUyxTQUFTO0FBQzFDLHNCQUFNLFFBQVEsUUFBUSxTQUFTLFdBQVcsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxPQUFPO0FBQ3pGLG9CQUFJLFFBQVE7QUFDWixvQkFBSSxTQUFTO0FBQ2Isb0JBQUksV0FBVztBQUNmLG9CQUFJLGFBQWE7QUFDakIsMkJBQVcsUUFBUSxPQUFPO0FBQ3hCLDBCQUFRLEtBQUs7QUFBQSx5QkFDTjtBQUNILDRCQUFNO0FBQ04sMEJBQUksUUFBUSxTQUFTO0FBQ25CLGdDQUFRLENBQUM7QUFBQSxzQkFDWCxPQUFPO0FBQ0wsa0NBQVUsUUFBUSxRQUFRO0FBQUEsc0JBQzVCO0FBQ0E7QUFBQSx5QkFDRztBQUNILDRCQUFNO0FBQ04sK0JBQVMsS0FBSztBQUNkLGdDQUFVLEtBQUssRUFBRTtBQUNqQjtBQUFBLHlCQUNHO0FBQ0gsa0NBQVk7QUFDWixvQ0FBYyxLQUFLO0FBQ25CO0FBQUE7QUFFQSw0QkFBTSxJQUFJLE1BQU0sb0JBQW9CLE9BQU8sS0FBSyxNQUFNLEdBQUcsQ0FBQztBQUFBO0FBQUEsZ0JBRWhFO0FBQ0EsNEJBQVk7QUFDWix1QkFBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHO0FBQUEsa0JBQy9DO0FBQUEsa0JBQ0E7QUFBQSxrQkFDQTtBQUFBLGdCQUNGLENBQUM7QUFDRCx5QkFBUyxRQUFRLE9BQU87QUFDdEIsMkJBQVMsSUFBSSxPQUFPLEtBQUs7QUFDekIsNEJBQVUsUUFBUSxXQUFXO0FBQUEsZ0JBQy9CO0FBQ0EseUJBQVMsVUFBVSxPQUFPO0FBQ3hCLDJCQUFTLElBQUksT0FBTyxLQUFLO0FBQ3pCLDRCQUFVO0FBQUEsZ0JBQ1o7QUFDQSx5QkFBUyxRQUFRO0FBQ2Ysc0JBQUksUUFBUSxTQUFTO0FBQ25CLDhCQUFVO0FBQUEsa0JBQ1osT0FBTztBQUNMLGdDQUFZO0FBQUEsa0JBQ2Q7QUFBQSxnQkFDRjtBQUNBLHlCQUFTLFlBQVk7QUFDbkIsc0JBQUksV0FBVyxHQUFHO0FBQ2hCLDRCQUFRLFFBQVE7QUFBQSxrQkFDbEI7QUFDQSw0QkFBVTtBQUFBLGdCQUNaO0FBQ0EseUJBQVMsY0FBYztBQUNyQixzQkFBSSxhQUFhLEdBQUc7QUFDbEIsOEJBQVUsVUFBVTtBQUFBLGtCQUN0QjtBQUNBLDRCQUFVO0FBQUEsZ0JBQ1o7QUFDQSx5QkFBUyxZQUFZO0FBQ25CLDZCQUFXO0FBQ1gsK0JBQWE7QUFBQSxnQkFDZjtBQUFBLGNBQ0Y7QUFDQSx1QkFBUyxLQUFLLEtBQUs7QUFDakIsb0JBQUksSUFBSSxXQUFXLEdBQUc7QUFDcEIseUJBQU87QUFBQSxnQkFDVDtBQUNBLG9CQUFJLFlBQVk7QUFDaEIsdUJBQU8sSUFBSSxTQUFTLEtBQUssT0FBTyxRQUFRLEdBQUcsTUFBTSxZQUFZLFdBQVcsS0FBSyxRQUFRLEdBQUcsQ0FBQyxHQUFHO0FBQzFGLCtCQUFhLElBQUksSUFBSSxFQUFFO0FBQUEsZ0JBQ3pCO0FBQ0Esb0JBQUksSUFBSSxTQUFTLEtBQUssT0FBTyxRQUFRLEdBQUcsTUFBTSxVQUFVO0FBQ3RELHdCQUFNLFVBQVUsUUFBUSxHQUFHLEVBQUUsUUFBUSxXQUFXLEVBQUU7QUFDbEQsK0JBQWEsUUFBUSxHQUFHLEVBQUUsU0FBUyxRQUFRO0FBQzNDLHNCQUFJLElBQUksU0FBUyxLQUFLO0FBQUEsZ0JBQ3hCO0FBQ0EsdUJBQU87QUFBQSxjQUNUO0FBQ0EsdUJBQVMsS0FBSyxNQUFNLGNBQWMsT0FBTyxTQUFTLGVBQWUsWUFBWTtBQUMzRSxvQkFBSSxVQUFVLGFBQWE7QUFDM0Isc0JBQU0sT0FBTyxDQUFDLElBQUk7QUFDbEIsc0JBQU0sTUFBTSxDQUFDO0FBQ2IsdUJBQU8sU0FBUyxHQUFHO0FBQ2pCLHNCQUFJLEtBQUssV0FBVyxHQUFHO0FBQ3JCLHdCQUFJLFlBQVksR0FBRztBQUNqQiw2QkFBTztBQUFBLG9CQUNUO0FBQ0EseUJBQUssS0FBSyxhQUFhLFVBQVUsRUFBRTtBQUNuQztBQUNBO0FBQUEsa0JBQ0Y7QUFDQSx3QkFBTSxDQUFDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxJQUFJO0FBQ2xDLHNCQUFJLE9BQU8sUUFBUSxVQUFVO0FBQzNCLHdCQUFJLEtBQUssR0FBRztBQUNaLDZCQUFTLGVBQWUsR0FBRztBQUFBLGtCQUM3QixXQUFXLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLDBCQUFNLFFBQVEsWUFBWSxHQUFHO0FBQzdCLDZCQUFTLElBQUksTUFBTSxTQUFTLEdBQUcsS0FBSyxHQUFHLEtBQUs7QUFDMUMsMkJBQUssS0FBSyxDQUFDLEtBQUssTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUFBLG9CQUNqQztBQUFBLGtCQUNGLE9BQU87QUFDTCw0QkFBUSxJQUFJO0FBQUEsMkJBQ0w7QUFDSCw2QkFBSyxLQUFLLENBQUMsV0FBVyxLQUFLLE9BQU8sR0FBRyxNQUFNLElBQUksUUFBUSxDQUFDO0FBQ3hEO0FBQUEsMkJBQ0c7QUFDSCw2QkFBSyxLQUFLLENBQUMsVUFBVSxLQUFLLElBQUksR0FBRyxPQUFPLEdBQUcsTUFBTSxJQUFJLFFBQVEsQ0FBQztBQUM5RDtBQUFBLDJCQUNHO0FBQ0gsaUNBQVMsS0FBSyxHQUFHO0FBQ2pCO0FBQUEsMkJBQ0csU0FBUztBQUNaLDRCQUFJLGNBQWMsSUFBSSxPQUFPO0FBQzNCLGlDQUFPO0FBQUEsd0JBQ1Q7QUFDQSw4QkFBTSxZQUFZLElBQUksUUFBUSxhQUFhO0FBQzNDLDZCQUFLLEtBQUssQ0FBQyxLQUFLLFdBQVcsSUFBSSxrQkFBa0IsY0FBYyxhQUFhLFFBQVEsSUFBSSxjQUFjLElBQUksSUFBSSxRQUFRLENBQUM7QUFDdkgsNEJBQUksSUFBSSxJQUFJO0FBQ1YsdUNBQWEsSUFBSSxNQUFNO0FBQUEsd0JBQ3pCO0FBQ0E7QUFBQSxzQkFDRjtBQUFBLDJCQUNLO0FBQ0gsaUNBQVMsSUFBSSxJQUFJLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxLQUFLO0FBQzlDLCtCQUFLLEtBQUssQ0FBQyxLQUFLLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUFBLHdCQUNyQztBQUNBO0FBQUEsMkJBQ0c7QUFBQSwyQkFDQSxtQkFBbUI7QUFDdEIsOEJBQU0sWUFBWSxJQUFJLFVBQVUsYUFBYSxJQUFJLFdBQVc7QUFDNUQsNEJBQUksY0FBYyxZQUFZO0FBQzVCLGdDQUFNLGdCQUFnQixJQUFJLFNBQVMsYUFBYSxJQUFJLGdCQUFnQixJQUFJLFNBQVMsSUFBSSxXQUFXLE9BQU8sSUFBSSxRQUFRO0FBQ25ILDhCQUFJLGVBQWU7QUFDakIsaUNBQUssS0FBSyxDQUFDLEtBQUssTUFBTSxhQUFhLENBQUM7QUFBQSwwQkFDdEM7QUFBQSx3QkFDRjtBQUNBLDRCQUFJLGNBQWMsV0FBVztBQUMzQixnQ0FBTSxlQUFlLElBQUksU0FBUyxhQUFhLElBQUksZUFBZSxJQUFJLFNBQVMsT0FBTyxJQUFJLFFBQVEsSUFBSSxJQUFJO0FBQzFHLDhCQUFJLGNBQWM7QUFDaEIsaUNBQUssS0FBSyxDQUFDLEtBQUssTUFBTSxZQUFZLENBQUM7QUFBQSwwQkFDckM7QUFBQSx3QkFDRjtBQUNBO0FBQUEsc0JBQ0Y7QUFBQSwyQkFDSztBQUNILGdDQUFRO0FBQUEsK0JBQ0Q7QUFDSCxnQ0FBSSxDQUFDLElBQUksTUFBTTtBQUNiLGtDQUFJLENBQUMsSUFBSSxNQUFNO0FBQ2Isb0NBQUksS0FBSyxHQUFHO0FBQ1oseUNBQVM7QUFBQSw4QkFDWDtBQUNBO0FBQUEsNEJBQ0Y7QUFDQSxtQ0FBTztBQUFBLCtCQUNKO0FBQ0gsbUNBQU87QUFBQTtBQUVYO0FBQUEsMkJBQ0c7QUFDSCx3Q0FBZ0I7QUFDaEI7QUFBQSwyQkFDRztBQUNILDRCQUFJLGVBQWU7QUFDakIsaUNBQU87QUFBQSx3QkFDVDtBQUNBO0FBQUEsMkJBQ0c7QUFDSCw2QkFBSyxLQUFLLENBQUMsS0FBSyxNQUFNLElBQUksUUFBUSxDQUFDO0FBQ25DO0FBQUE7QUFBQSxrQkFFTjtBQUFBLGdCQUNGO0FBQ0EsdUJBQU87QUFBQSxjQUNUO0FBQ0EsdUJBQVMsaUJBQWlCLEtBQUssU0FBUztBQUN0QywrQkFBZSxDQUFDO0FBQ2hCLHNCQUFNLFFBQVEsUUFBUTtBQUN0QixzQkFBTSxVQUFVLHdCQUF3QixRQUFRLFNBQVM7QUFDekQsb0JBQUksTUFBTTtBQUNWLHNCQUFNLE9BQU8sQ0FBQyxDQUFDLFdBQVcsR0FBRyxZQUFZLEdBQUcsQ0FBQztBQUM3QyxzQkFBTSxNQUFNLENBQUM7QUFDYixvQkFBSSxrQkFBa0I7QUFDdEIsb0JBQUksYUFBYSxDQUFDO0FBQ2xCLHVCQUFPLEtBQUssU0FBUyxHQUFHO0FBQ3RCLHdCQUFNLENBQUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLElBQUk7QUFDbkMsc0JBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsMEJBQU0sWUFBWSxZQUFZLE9BQU8sS0FBSyxRQUFRLE9BQU8sT0FBTyxJQUFJO0FBQ3BFLHdCQUFJLEtBQUssU0FBUztBQUNsQiwyQkFBTyxlQUFlLFNBQVM7QUFBQSxrQkFDakMsV0FBVyxTQUFTLElBQUksR0FBRztBQUN6QiwwQkFBTSxRQUFRLFlBQVksSUFBSTtBQUM5Qiw2QkFBUyxJQUFJLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxLQUFLO0FBQzFDLDJCQUFLLEtBQUssQ0FBQyxLQUFLLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFBQSxvQkFDakM7QUFBQSxrQkFDRixPQUFPO0FBQ0wsNEJBQVEsS0FBSztBQUFBLDJCQUNOO0FBQ0gsNEJBQUksS0FBSyxPQUFPLFdBQVc7QUFDM0I7QUFBQSwyQkFDRztBQUNILDZCQUFLLEtBQUssQ0FBQyxXQUFXLEtBQUssT0FBTyxHQUFHLE1BQU0sS0FBSyxRQUFRLENBQUM7QUFDekQ7QUFBQSwyQkFDRztBQUNILDZCQUFLLEtBQUssQ0FBQyxVQUFVLEtBQUssS0FBSyxHQUFHLE9BQU8sR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ2hFO0FBQUEsMkJBQ0c7QUFDSCwrQkFBTyxLQUFLLEdBQUc7QUFDZjtBQUFBLDJCQUNHO0FBQ0gsZ0NBQVE7QUFBQSwrQkFDRDtBQUNILGdDQUFJLENBQUMsaUJBQWlCO0FBQ3BCLG1DQUFLLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxhQUFhLFdBQVcsS0FBSyxRQUFRLENBQUM7QUFDbkU7QUFBQSw0QkFDRjtBQUFBLCtCQUNHLFlBQVk7QUFDZiw4Q0FBa0I7QUFDbEIsa0NBQU0sT0FBTyxDQUFDLEtBQUssV0FBVyxLQUFLLFFBQVE7QUFDM0Msa0NBQU0sTUFBTSxRQUFRO0FBQ3BCLGtDQUFNLGdCQUFnQixXQUFXLFNBQVM7QUFDMUMsZ0NBQUksQ0FBQyxLQUFLLFNBQVMsS0FBSyxNQUFNLE1BQU0sS0FBSyxTQUFTLGFBQWEsR0FBRztBQUNoRSxtQ0FBSyxLQUFLLElBQUk7QUFBQSw0QkFDaEIsT0FBTztBQUNMLGtDQUFJLEtBQUssZ0JBQWdCO0FBQ3ZCLHNDQUFNLGVBQWUsUUFBUSxLQUFLLGNBQWM7QUFDaEQsb0NBQUksS0FBSyxPQUFPO0FBQ2QsdUNBQUssS0FBSyxDQUFDLEtBQUssWUFBWSxZQUFZLENBQUM7QUFDekM7QUFBQSxnQ0FDRixPQUFPO0FBQ0wsMkNBQVMsSUFBSSxHQUFHLElBQUksS0FBSyxlQUFlLFNBQVMsR0FBRyxLQUFLO0FBQ3ZELHdDQUFJLEtBQUssS0FBSyxlQUFlLFFBQVE7QUFDbkMsMkNBQUssS0FBSyxDQUFDLEtBQUssWUFBWSxZQUFZLENBQUM7QUFDekM7QUFBQSxvQ0FDRixPQUFPO0FBQ0wsNENBQU0sUUFBUSxLQUFLLGVBQWU7QUFDbEMsNENBQU0sTUFBTSxDQUFDLEtBQUssV0FBVyxLQUFLO0FBQ2xDLDBDQUFJLEtBQUssS0FBSyxNQUFNLEtBQUssU0FBUyxhQUFhLEdBQUc7QUFDaEQsNkNBQUssS0FBSyxHQUFHO0FBQ2I7QUFBQSxzQ0FDRjtBQUFBLG9DQUNGO0FBQUEsa0NBQ0Y7QUFBQSxnQ0FDRjtBQUFBLDhCQUNGLE9BQU87QUFDTCxxQ0FBSyxLQUFLLENBQUMsS0FBSyxZQUFZLEtBQUssUUFBUSxDQUFDO0FBQUEsOEJBQzVDO0FBQUEsNEJBQ0Y7QUFDQTtBQUFBLDBCQUNGO0FBQUE7QUFFRiw0QkFBSSxLQUFLLElBQUk7QUFDWCx1Q0FBYSxLQUFLLE1BQU0sUUFBUSxJQUFJLEVBQUU7QUFBQSx3QkFDeEM7QUFDQTtBQUFBLDJCQUNHLFFBQVE7QUFDWCw4QkFBTSxNQUFNLFFBQVE7QUFDcEIsOEJBQU07QUFBQSwwQkFDSjtBQUFBLHdCQUNGLElBQUk7QUFDSiw0QkFBSSxNQUFNLFdBQVcsR0FBRztBQUN0QjtBQUFBLHdCQUNGO0FBQ0EsOEJBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSTtBQUM5Qiw4QkFBTSxpQkFBaUIsQ0FBQyxLQUFLLFdBQVcsT0FBTztBQUMvQyw4QkFBTSxrQkFBa0IsQ0FBQyxLQUFLLFlBQVksT0FBTztBQUNqRCw4QkFBTSxjQUFjLEtBQUssZ0JBQWdCLENBQUMsR0FBRyxLQUFLLFNBQVMsV0FBVyxTQUFTLEdBQUcsSUFBSTtBQUN0Riw0QkFBSSxNQUFNLFdBQVcsR0FBRztBQUN0Qiw4QkFBSSxhQUFhO0FBQ2YsaUNBQUssS0FBSyxjQUFjO0FBQUEsMEJBQzFCLE9BQU87QUFDTCxpQ0FBSyxLQUFLLGVBQWU7QUFBQSwwQkFDM0I7QUFDQTtBQUFBLHdCQUNGO0FBQ0EsOEJBQU0sb0JBQW9CLENBQUMsS0FBSyxXQUFXLFVBQVU7QUFDckQsOEJBQU0scUJBQXFCLENBQUMsS0FBSyxZQUFZLFVBQVU7QUFDdkQsNEJBQUksTUFBTSxXQUFXLEdBQUc7QUFDdEIsOEJBQUksYUFBYTtBQUNmLGlDQUFLLEtBQUssbUJBQW1CLGNBQWM7QUFBQSwwQkFDN0MsT0FBTztBQUNMLGlDQUFLLEtBQUssb0JBQW9CLGVBQWU7QUFBQSwwQkFDL0M7QUFDQTtBQUFBLHdCQUNGO0FBQ0EsOEJBQU0sT0FBTyxHQUFHLENBQUM7QUFDakIsOEJBQU0sZUFBZSxDQUFDLEtBQUssTUFBTSxLQUFLLEtBQUssQ0FBQztBQUM1Qyw4QkFBTSxnQkFBZ0IsTUFBTTtBQUM1Qiw4QkFBTSwrQkFBK0IsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxTQUFTLFlBQVksYUFBYSxDQUFDO0FBQzFGLDhCQUFNLDRCQUE0QixLQUFLLDhCQUE4QixDQUFDLEdBQUcsS0FBSyxTQUFTLFdBQVcsU0FBUyxHQUFHLElBQUk7QUFDbEgsNEJBQUksMkJBQTJCO0FBQzdCLCtCQUFLLEtBQUssY0FBYyxtQkFBbUIsY0FBYztBQUFBLHdCQUMzRCxXQUFXLGFBQWE7QUFDdEIsK0JBQUssS0FBSyxjQUFjLG9CQUFvQixjQUFjO0FBQUEsd0JBQzVELE9BQU87QUFDTCwrQkFBSyxLQUFLLGNBQWMsb0JBQW9CLGVBQWU7QUFBQSx3QkFDN0Q7QUFDQTtBQUFBLHNCQUNGO0FBQUEsMkJBQ0s7QUFBQSwyQkFDQSxtQkFBbUI7QUFDdEIsOEJBQU0sWUFBWSxLQUFLLFVBQVUsYUFBYSxLQUFLLFdBQVc7QUFDOUQsNEJBQUksY0FBYyxZQUFZO0FBQzVCLGdDQUFNLGdCQUFnQixLQUFLLFNBQVMsYUFBYSxLQUFLLGdCQUFnQixLQUFLLFNBQVMsS0FBSyxXQUFXLE9BQU8sS0FBSyxRQUFRO0FBQ3hILDhCQUFJLGVBQWU7QUFDakIsaUNBQUssS0FBSyxDQUFDLEtBQUssTUFBTSxhQUFhLENBQUM7QUFBQSwwQkFDdEM7QUFBQSx3QkFDRjtBQUNBLDRCQUFJLGNBQWMsV0FBVztBQUMzQixnQ0FBTSxlQUFlLEtBQUssU0FBUyxhQUFhLEtBQUssZUFBZSxLQUFLLFNBQVMsT0FBTyxLQUFLLFFBQVEsSUFBSSxLQUFLO0FBQy9HLDhCQUFJLGNBQWM7QUFDaEIsaUNBQUssS0FBSyxDQUFDLEtBQUssTUFBTSxZQUFZLENBQUM7QUFBQSwwQkFDckM7QUFBQSx3QkFDRjtBQUNBO0FBQUEsc0JBQ0Y7QUFBQSwyQkFDSztBQUNILG1DQUFXLEtBQUssQ0FBQyxLQUFLLE1BQU0sS0FBSyxRQUFRLENBQUM7QUFDMUM7QUFBQSwyQkFDRztBQUNILDRCQUFJLFdBQVcsU0FBUyxHQUFHO0FBQ3pCLCtCQUFLLEtBQUssQ0FBQyxLQUFLLE1BQU07QUFBQSw0QkFDcEIsTUFBTTtBQUFBLDRCQUNOLE1BQU07QUFBQSwwQkFDUixDQUFDLENBQUM7QUFBQSx3QkFDSjtBQUNBO0FBQUEsMkJBQ0c7QUFDSCxnQ0FBUTtBQUFBLCtCQUNEO0FBQ0gsZ0NBQUksQ0FBQyxLQUFLLE1BQU07QUFDZCxrQ0FBSSxDQUFDLEtBQUssTUFBTTtBQUNkLG9DQUFJLEtBQUssR0FBRztBQUNaLHVDQUFPO0FBQUEsOEJBQ1Q7QUFDQTtBQUFBLDRCQUNGLE9BQU87QUFDTCxnREFBa0I7QUFBQSw0QkFDcEI7QUFBQSwrQkFDRztBQUNILGdDQUFJLFdBQVcsU0FBUyxHQUFHO0FBQ3pCLG1DQUFLLEtBQUssQ0FBQyxLQUFLLE1BQU0sSUFBSSxHQUFHLEdBQUcsV0FBVyxRQUFRLENBQUM7QUFDcEQsMkNBQWEsQ0FBQztBQUNkO0FBQUEsNEJBQ0Y7QUFDQSxnQ0FBSSxLQUFLLFNBQVM7QUFDaEIsa0NBQUksSUFBSSxNQUFNO0FBQ1osb0NBQUksS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLO0FBQ2hDLHNDQUFNLElBQUksS0FBSztBQUFBLDhCQUNqQixPQUFPO0FBQ0wsb0NBQUksS0FBSyxPQUFPO0FBQ2hCLHNDQUFNO0FBQUEsOEJBQ1I7QUFBQSw0QkFDRixPQUFPO0FBQ0wscUNBQU8sS0FBSyxHQUFHO0FBQ2Ysa0NBQUksS0FBSyxVQUFVLElBQUksS0FBSztBQUM1QixvQ0FBTSxJQUFJO0FBQUEsNEJBQ1o7QUFDQTtBQUFBO0FBRUo7QUFBQSwyQkFDRztBQUNILDZCQUFLLEtBQUssQ0FBQyxLQUFLLE1BQU0sS0FBSyxRQUFRLENBQUM7QUFDcEM7QUFBQTtBQUFBO0FBQUEsa0JBR047QUFDQSxzQkFBSSxLQUFLLFdBQVcsS0FBSyxXQUFXLFNBQVMsR0FBRztBQUM5Qyx5QkFBSyxLQUFLLEdBQUcsV0FBVyxRQUFRLENBQUM7QUFDakMsaUNBQWEsQ0FBQztBQUFBLGtCQUNoQjtBQUFBLGdCQUNGO0FBQ0Esc0JBQU0seUJBQXlCLElBQUksUUFBUSxPQUFPLFdBQVc7QUFDN0Qsb0JBQUksMkJBQTJCLElBQUk7QUFDakMsd0JBQU0sOEJBQThCLElBQUksUUFBUSxPQUFPLGFBQWEseUJBQXlCLENBQUM7QUFDOUYsd0JBQU0sZUFBZSxJQUFJLE1BQU0sR0FBRyxzQkFBc0IsRUFBRSxLQUFLLEVBQUU7QUFDakUsd0JBQU0sZUFBZSxJQUFJLE1BQU0seUJBQXlCLEdBQUcsMkJBQTJCLEVBQUUsS0FBSyxFQUFFO0FBQy9GLHdCQUFNLGNBQWMsSUFBSSxNQUFNLDhCQUE4QixDQUFDLEVBQUUsS0FBSyxFQUFFO0FBQ3RFLHlCQUFPO0FBQUEsb0JBQ0wsV0FBVyxlQUFlLGVBQWU7QUFBQSxvQkFDekMsaUJBQWlCLGFBQWE7QUFBQSxvQkFDOUIsZ0JBQWdCO0FBQUEsa0JBQ2xCO0FBQUEsZ0JBQ0Y7QUFDQSx1QkFBTztBQUFBLGtCQUNMLFdBQVcsSUFBSSxLQUFLLEVBQUU7QUFBQSxnQkFDeEI7QUFBQSxjQUNGO0FBQ0EsY0FBQUEsU0FBUSxVQUFVO0FBQUEsZ0JBQ2hCO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGLENBQUM7QUFDRCxjQUFJLG9CQUFvQkosYUFBWTtBQUFBLFlBQ2xDLDRCQUE0QkcsV0FBVUMsVUFBUztBQUM3QztBQUNBLGtDQUFvQjtBQUNwQixrQkFBSTtBQUFBLGdCQUNGO0FBQUEsZ0JBQ0E7QUFBQSxjQUNGLElBQUksa0JBQWtCO0FBQ3RCLHVCQUFTLFdBQVcsS0FBSztBQUN2QixvQkFBSSxDQUFDLEtBQUs7QUFDUix5QkFBTztBQUFBLGdCQUNUO0FBQ0Esb0JBQUksU0FBUyxHQUFHLEdBQUc7QUFDakIsd0JBQU0sTUFBTSxDQUFDO0FBQ2IsNkJBQVcsUUFBUSxZQUFZLEdBQUcsR0FBRztBQUNuQyx3QkFBSSxTQUFTLElBQUksR0FBRztBQUNsQiwwQkFBSSxLQUFLLEdBQUcsV0FBVyxJQUFJLEVBQUUsS0FBSztBQUFBLG9CQUNwQyxPQUFPO0FBQ0wsNEJBQU0sWUFBWSxXQUFXLElBQUk7QUFDakMsMEJBQUksY0FBYyxJQUFJO0FBQ3BCLDRCQUFJLEtBQUssU0FBUztBQUFBLHNCQUNwQjtBQUFBLG9CQUNGO0FBQUEsa0JBQ0Y7QUFDQSx5QkFBTztBQUFBLG9CQUNMLE1BQU07QUFBQSxvQkFDTixPQUFPO0FBQUEsa0JBQ1Q7QUFBQSxnQkFDRjtBQUNBLG9CQUFJLElBQUksU0FBUyxZQUFZO0FBQzNCLHlCQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUc7QUFBQSxvQkFDL0MsZUFBZSxXQUFXLElBQUksYUFBYTtBQUFBLG9CQUMzQyxjQUFjLFdBQVcsSUFBSSxZQUFZO0FBQUEsa0JBQzNDLENBQUM7QUFBQSxnQkFDSDtBQUNBLG9CQUFJLElBQUksU0FBUyxTQUFTO0FBQ3hCLHlCQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUc7QUFBQSxvQkFDL0MsVUFBVSxXQUFXLElBQUksUUFBUTtBQUFBLG9CQUNqQyxnQkFBZ0IsSUFBSSxrQkFBa0IsSUFBSSxlQUFlLElBQUksVUFBVTtBQUFBLGtCQUN6RSxDQUFDO0FBQUEsZ0JBQ0g7QUFDQSxvQkFBSSxJQUFJLFNBQVMsUUFBUTtBQUN2Qix5QkFBTztBQUFBLG9CQUNMLE1BQU07QUFBQSxvQkFDTixPQUFPLElBQUksTUFBTSxJQUFJLFVBQVU7QUFBQSxrQkFDakM7QUFBQSxnQkFDRjtBQUNBLG9CQUFJLElBQUksVUFBVTtBQUNoQix5QkFBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHO0FBQUEsb0JBQy9DLFVBQVUsV0FBVyxJQUFJLFFBQVE7QUFBQSxrQkFDbkMsQ0FBQztBQUFBLGdCQUNIO0FBQ0EsdUJBQU87QUFBQSxjQUNUO0FBQ0EsdUJBQVMsZ0JBQWdCLEtBQUs7QUFDNUIsc0JBQU0saUJBQWlDLHVCQUFPLE9BQU8sSUFBSTtBQUN6RCxzQkFBTSxxQkFBcUMsb0JBQUksSUFBSTtBQUNuRCx1QkFBTyxTQUFTLFdBQVcsR0FBRyxDQUFDO0FBQy9CLHlCQUFTLFNBQVMsTUFBTSxPQUFPLGFBQWE7QUFDMUMsc0JBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsMkJBQU8sS0FBSyxVQUFVLElBQUk7QUFBQSxrQkFDNUI7QUFDQSxzQkFBSSxTQUFTLElBQUksR0FBRztBQUNsQiwwQkFBTSxVQUFVLFlBQVksSUFBSSxFQUFFLElBQUksUUFBUSxFQUFFLE9BQU8sT0FBTztBQUM5RCwyQkFBTyxRQUFRLFdBQVcsSUFBSSxRQUFRLEtBQUssSUFBSSxPQUFPLFFBQVEsS0FBSyxJQUFJLEdBQUcsR0FBRztBQUFBLGtCQUMvRTtBQUNBLHNCQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLDBCQUFNLGtCQUFrQixNQUFNLFFBQVEsV0FBVyxLQUFLLFlBQVksUUFBUSxNQUFNLFlBQVksUUFBUSxHQUFHLFNBQVM7QUFDaEgsd0JBQUksS0FBSyxTQUFTO0FBQ2hCLDZCQUFPLGtCQUFrQixnQkFBZ0I7QUFBQSxvQkFDM0M7QUFDQSx3QkFBSSxLQUFLLE1BQU07QUFDYiw2QkFBTyxrQkFBa0IsYUFBYTtBQUFBLG9CQUN4QztBQUNBLHdCQUFJLEtBQUssTUFBTTtBQUNiLDZCQUFPO0FBQUEsb0JBQ1Q7QUFDQSwyQkFBTztBQUFBLGtCQUNUO0FBQ0Esc0JBQUksS0FBSyxTQUFTLGdCQUFnQjtBQUNoQywwQkFBTSxnQkFBZ0IsTUFBTSxRQUFRLFdBQVcsS0FBSyxZQUFZLFFBQVEsTUFBTSxZQUFZLFFBQVEsR0FBRyxTQUFTLFVBQVUsWUFBWSxRQUFRLEdBQUc7QUFDL0ksMkJBQU8sZ0JBQWdCLFNBQVM7QUFBQSxrQkFDbEM7QUFDQSxzQkFBSSxLQUFLLFNBQVMsUUFBUTtBQUN4QiwyQkFBTztBQUFBLGtCQUNUO0FBQ0Esc0JBQUksS0FBSyxTQUFTLFVBQVU7QUFDMUIsMkJBQU8sWUFBWSxTQUFTLEtBQUssUUFBUSxJQUFJO0FBQUEsa0JBQy9DO0FBQ0Esc0JBQUksS0FBSyxTQUFTLFNBQVM7QUFDekIsMkJBQU8sS0FBSyxNQUFNLE9BQU8sb0JBQW9CLGtCQUFrQixTQUFTLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksWUFBWSxTQUFTLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxFQUFFLFNBQVMsU0FBUyxnQkFBZ0IsU0FBUyxLQUFLLFFBQVEsSUFBSSxNQUFNLFdBQVcsS0FBSyxVQUFVLEtBQUssQ0FBQyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSTtBQUFBLGtCQUN4UztBQUNBLHNCQUFJLEtBQUssU0FBUyxZQUFZO0FBQzVCLDJCQUFPLGFBQWEsU0FBUyxLQUFLLGFBQWEsS0FBSyxLQUFLLGVBQWUsT0FBTyxTQUFTLEtBQUssWUFBWSxJQUFJLE9BQU8sS0FBSyxXQUFXLENBQUMsS0FBSyxlQUFlLFNBQVMsTUFBTSxnQkFBZ0IsT0FBTyxhQUFhLEtBQUssT0FBTyxHQUFHLElBQUksSUFBSSxNQUFNO0FBQUEsa0JBQzNPO0FBQ0Esc0JBQUksS0FBSyxTQUFTLG1CQUFtQjtBQUNuQywwQkFBTSxlQUFlLENBQUM7QUFDdEIsd0JBQUksS0FBSyxRQUFRO0FBQ2YsbUNBQWEsS0FBSyxjQUFjO0FBQUEsb0JBQ2xDO0FBQ0Esd0JBQUksS0FBSyxTQUFTO0FBQ2hCLG1DQUFhLEtBQUssWUFBWSxPQUFPLGFBQWEsS0FBSyxPQUFPLENBQUMsQ0FBQztBQUFBLG9CQUNsRTtBQUNBLDBCQUFNLFVBQVUsYUFBYSxTQUFTLElBQUksT0FBTyxPQUFPLGFBQWEsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJO0FBQ3pGLDJCQUFPLGlCQUFpQixPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUMsRUFBRSxPQUFPLFNBQVMsR0FBRztBQUFBLGtCQUM3RTtBQUNBLHNCQUFJLEtBQUssU0FBUyxTQUFTO0FBQ3pCLDBCQUFNLGVBQWUsQ0FBQztBQUN0Qix3QkFBSSxLQUFLLFNBQVMsS0FBSyxVQUFVLGNBQWM7QUFDN0MsbUNBQWEsS0FBSyxtQkFBbUI7QUFBQSxvQkFDdkM7QUFDQSx3QkFBSSxLQUFLLElBQUk7QUFDWCxtQ0FBYSxLQUFLLE9BQU8sT0FBTyxhQUFhLEtBQUssRUFBRSxDQUFDLENBQUM7QUFBQSxvQkFDeEQ7QUFDQSwwQkFBTSxVQUFVLGFBQWEsU0FBUyxJQUFJLE9BQU8sT0FBTyxhQUFhLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSTtBQUN6Rix3QkFBSSxLQUFLLGdCQUFnQjtBQUN2Qiw2QkFBTyxxQkFBcUIsT0FBTyxLQUFLLGVBQWUsSUFBSSxDQUFDLFNBQVMsU0FBUyxJQUFJLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsT0FBTyxTQUFTLEdBQUc7QUFBQSxvQkFDMUg7QUFDQSwyQkFBTyxTQUFTLE9BQU8sU0FBUyxLQUFLLFFBQVEsQ0FBQyxFQUFFLE9BQU8sU0FBUyxHQUFHO0FBQUEsa0JBQ3JFO0FBQ0Esc0JBQUksS0FBSyxTQUFTLFFBQVE7QUFDeEIsMkJBQU8sU0FBUyxPQUFPLEtBQUssTUFBTSxJQUFJLENBQUMsU0FBUyxTQUFTLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUk7QUFBQSxrQkFDbEY7QUFDQSxzQkFBSSxLQUFLLFNBQVMsZUFBZTtBQUMvQiwyQkFBTyxnQkFBZ0IsU0FBUyxLQUFLLFFBQVEsSUFBSTtBQUFBLGtCQUNuRDtBQUNBLHNCQUFJLEtBQUssU0FBUyx3QkFBd0I7QUFDeEMsMkJBQU87QUFBQSxrQkFDVDtBQUNBLHNCQUFJLEtBQUssU0FBUyxTQUFTO0FBQ3pCLDJCQUFPLFNBQVMsT0FBTyxLQUFLLFVBQVUsS0FBSyxLQUFLLEdBQUcsSUFBSSxFQUFFLE9BQU8sU0FBUyxLQUFLLFFBQVEsR0FBRyxHQUFHO0FBQUEsa0JBQzlGO0FBQ0Esd0JBQU0sSUFBSSxNQUFNLHNCQUFzQixLQUFLLElBQUk7QUFBQSxnQkFDakQ7QUFDQSx5QkFBUyxhQUFhLElBQUk7QUFDeEIsc0JBQUksT0FBTyxPQUFPLFVBQVU7QUFDMUIsMkJBQU8sS0FBSyxVQUFVLE9BQU8sRUFBRSxDQUFDO0FBQUEsa0JBQ2xDO0FBQ0Esc0JBQUksTUFBTSxnQkFBZ0I7QUFDeEIsMkJBQU8sZUFBZTtBQUFBLGtCQUN4QjtBQUNBLHdCQUFNLFNBQVMsT0FBTyxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSztBQUMxQywyQkFBUyxVQUFVLEtBQUssV0FBVztBQUNqQywwQkFBTSxNQUFNLFVBQVUsVUFBVSxJQUFJLEtBQUssT0FBTyxPQUFPLElBQUk7QUFDM0Qsd0JBQUksQ0FBQyxtQkFBbUIsSUFBSSxHQUFHLEdBQUc7QUFDaEMseUNBQW1CLElBQUksR0FBRztBQUMxQiw2QkFBTyxlQUFlLE1BQU0sY0FBYyxPQUFPLEtBQUssVUFBVSxHQUFHLEdBQUcsR0FBRztBQUFBLG9CQUMzRTtBQUFBLGtCQUNGO0FBQUEsZ0JBQ0Y7QUFBQSxjQUNGO0FBQ0EsY0FBQUEsU0FBUSxVQUFVO0FBQUEsZ0JBQ2hCO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGLENBQUM7QUFDRCw4QkFBb0I7QUFDcEIsVUFBQWQsUUFBTyxVQUFVO0FBQUEsWUFDZixVQUFVLHFCQUFxQjtBQUFBLFlBQy9CLFNBQVMsb0JBQW9CO0FBQUEsWUFDN0IsT0FBTyxrQkFBa0I7QUFBQSxZQUN6QixPQUFPLGtCQUFrQjtBQUFBLFVBQzNCO0FBQUEsUUFDRjtBQUFBLE1BQ0YsQ0FBQztBQUNELGFBQU8sbUJBQW1CO0FBQUEsSUFDNUIsQ0FBQztBQUFBO0FBQUE7OztBQy8yQ0Q7QUFBQSxrREFBQWdCLFNBQUE7QUFBQTtBQUdBLFFBQUlDLHFCQUFvQixPQUFPO0FBQy9CLFFBQUlDLGNBQWEsQ0FBQyxJQUFJLFFBQVEsU0FBUyxZQUFZO0FBQ2pELGFBQU8sUUFBUSxHQUFHLEdBQUdELG1CQUFrQixFQUFFLEVBQUUsTUFBTSxNQUFNO0FBQUEsUUFDckQsU0FBUyxDQUFDO0FBQUEsTUFDWixHQUFHLFNBQVMsR0FBRyxHQUFHLElBQUk7QUFBQSxJQUN4QjtBQUNBLFFBQUksdUJBQXVCQyxZQUFXO0FBQUEsTUFDcEMsK0RBQStELFVBQVVDLFVBQVM7QUFDaEY7QUFDQSxZQUFJQyxRQUFPLFFBQVE7QUFDbkIsWUFBSSxTQUFTLFFBQVE7QUFDckIsWUFBSUMsTUFBSyxRQUFRO0FBQ2pCLFlBQUksY0FBYyxDQUFDLFNBQVMsVUFBVSxXQUFXO0FBQy9DLGNBQUksT0FBTyxZQUFZLFVBQVU7QUFDL0Isa0JBQU0sSUFBSSxVQUFVLHdEQUF3RCxPQUFPLFdBQVc7QUFBQSxVQUNoRztBQUNBLGNBQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsa0JBQU0sSUFBSSxVQUFVLHlEQUF5RCxPQUFPLFlBQVk7QUFBQSxVQUNsRztBQUNBLGNBQUk7QUFDRixzQkFBVUEsSUFBRyxhQUFhLE9BQU87QUFBQSxVQUNuQyxTQUFTLEtBQVA7QUFDQSxnQkFBSSxJQUFJLFNBQVMsVUFBVTtBQUN6Qix3QkFBVUQsTUFBSyxRQUFRLE9BQU87QUFBQSxZQUNoQyxXQUFXLFFBQVE7QUFDakIscUJBQU87QUFBQSxZQUNULE9BQU87QUFDTCxvQkFBTTtBQUFBLFlBQ1I7QUFBQSxVQUNGO0FBQ0EsZ0JBQU0sV0FBV0EsTUFBSyxLQUFLLFNBQVMsU0FBUztBQUM3QyxnQkFBTSxrQkFBa0IsTUFBTSxPQUFPLGlCQUFpQixVQUFVO0FBQUEsWUFDOUQsSUFBSTtBQUFBLFlBQ0osVUFBVTtBQUFBLFlBQ1YsT0FBTyxPQUFPLGlCQUFpQixPQUFPO0FBQUEsVUFDeEMsQ0FBQztBQUNELGNBQUksUUFBUTtBQUNWLGdCQUFJO0FBQ0YscUJBQU8sZ0JBQWdCO0FBQUEsWUFDekIsU0FBUyxLQUFQO0FBQ0EscUJBQU87QUFBQSxZQUNUO0FBQUEsVUFDRjtBQUNBLGlCQUFPLGdCQUFnQjtBQUFBLFFBQ3pCO0FBQ0EsUUFBQUQsU0FBUSxVQUFVLENBQUMsU0FBUyxhQUFhLFlBQVksU0FBUyxRQUFRO0FBQ3RFLFFBQUFBLFNBQVEsUUFBUSxTQUFTLENBQUMsU0FBUyxhQUFhLFlBQVksU0FBUyxVQUFVLElBQUk7QUFBQSxNQUNyRjtBQUFBLElBQ0YsQ0FBQztBQUNELFFBQUksd0JBQXdCRCxZQUFXO0FBQUEsTUFDckMsd0NBQXdDLFVBQVVDLFVBQVM7QUFDekQ7QUFDQSxRQUFBQSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0FBQUEsTUFDOUI7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJLHVCQUF1QkQsWUFBVztBQUFBLE1BQ3BDLHFDQUFxQyxVQUFVQyxVQUFTO0FBQ3REO0FBQ0EsWUFBSUMsUUFBTyxRQUFRO0FBQ25CLFlBQUksY0FBYyxxQkFBcUI7QUFDdkMsWUFBSSxlQUFlLHNCQUFzQjtBQUN6QyxRQUFBRCxTQUFRLFVBQVUsQ0FBQyxhQUFhO0FBQzlCLGNBQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsa0JBQU0sSUFBSSxVQUFVLG1CQUFtQjtBQUFBLFVBQ3pDO0FBQ0EsZ0JBQU0sYUFBYSxhQUFhLFVBQVU7QUFDMUMsZ0JBQU0sTUFBTSxhQUFhQyxNQUFLLFFBQVEsVUFBVSxJQUFJO0FBQ3BELGdCQUFNLFdBQVcsWUFBWSxLQUFLLFFBQVE7QUFDMUMsZ0JBQU0sWUFBWSxRQUFRLE1BQU07QUFDaEMsY0FBSSxhQUFhLFVBQVUsUUFBUTtBQUNqQyxnQkFBSSxJQUFJLFVBQVUsT0FBTyxTQUFTO0FBQ2xDLG1CQUFPLEtBQUs7QUFDVixrQkFBSSxVQUFVLE9BQU8sU0FBUyxHQUFHLE9BQU8sVUFBVTtBQUNoRCwwQkFBVSxPQUFPLFNBQVMsT0FBTyxHQUFHLENBQUM7QUFBQSxjQUN2QztBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBQ0EsaUJBQU8sUUFBUSxNQUFNO0FBQ3JCLGdCQUFNLFNBQVMsUUFBUSxNQUFNO0FBQzdCLGlCQUFPLFdBQVcsU0FBUyxRQUFRLFlBQVksT0FBTyxRQUFRLFFBQVE7QUFBQSxRQUN4RTtBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJLHNCQUFzQkYsWUFBVztBQUFBLE1BQ25DLG9DQUFvQyxVQUFVQyxVQUFTO0FBQ3JEO0FBQ0EsUUFBQUEsU0FBUSxVQUFVLFNBQVMsV0FBVyxLQUFLO0FBQ3pDLGNBQUksQ0FBQyxLQUFLO0FBQ1IsbUJBQU87QUFBQSxVQUNUO0FBQ0EsaUJBQU8sZUFBZSxTQUFTLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxVQUFVLEtBQUssSUFBSSxrQkFBa0I7QUFBQSxRQUNoRztBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJLG1CQUFtQkQsWUFBVztBQUFBLE1BQ2hDLGlDQUFpQyxVQUFVQyxVQUFTO0FBQ2xEO0FBQ0EsWUFBSSxPQUFPLFFBQVE7QUFDbkIsWUFBSSxhQUFhLG9CQUFvQjtBQUNyQyxZQUFJLFVBQVUsU0FBUyxTQUFTLE1BQU0sWUFBWTtBQUNoRCxjQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixRQUFRO0FBQ3hDLHlCQUFhLFFBQVEsQ0FBQztBQUN0QixtQkFBTyxNQUFNO0FBQUEsVUFDZjtBQUNBLGNBQUksZUFBZSxTQUFTLGFBQWEsU0FBUztBQUNoRCxnQkFBSSxDQUFDLE1BQU07QUFDVCxxQkFBTyxJQUFJLGFBQWEsT0FBTztBQUFBLFlBQ2pDO0FBQ0Esc0JBQVUsbUJBQW1CLFFBQVEsUUFBUSxVQUFVLFdBQVcsS0FBSztBQUN2RSxrQkFBTSxLQUFLLE1BQU0sT0FBTztBQUN4QixrQkFBTSxrQkFBa0IsTUFBTSxZQUFZO0FBQzFDLGlCQUFLLE9BQU87QUFDWixtQkFBTyxlQUFlLE1BQU0sV0FBVztBQUFBLGNBQ3JDLGNBQWM7QUFBQSxjQUNkLFlBQVk7QUFBQSxjQUNaLEtBQUssV0FBVztBQUNkLG9CQUFJLGFBQWEsUUFBUSxNQUFNLFFBQVE7QUFDdkMseUJBQVMsT0FBTyxZQUFZO0FBQzFCLHNCQUFJLENBQUMsV0FBVyxlQUFlLEdBQUcsR0FBRztBQUNuQztBQUFBLGtCQUNGO0FBQ0Esc0JBQUksV0FBVyxXQUFXO0FBQzFCLHNCQUFJLGFBQWEsVUFBVTtBQUN6QixpQ0FBYSxTQUFTLFFBQVEsS0FBSyxNQUFNLFVBQVUsS0FBSztBQUN4RCx3QkFBSSxDQUFDLFdBQVcsVUFBVSxHQUFHO0FBQzNCLG1DQUFhLENBQUMsVUFBVTtBQUFBLG9CQUMxQjtBQUFBLGtCQUNGO0FBQUEsZ0JBQ0Y7QUFDQSx1QkFBTyxXQUFXLEtBQUssSUFBSTtBQUFBLGNBQzdCO0FBQUEsY0FDQSxLQUFLLFNBQVMsR0FBRztBQUNmLDBCQUFVO0FBQUEsY0FDWjtBQUFBLFlBQ0YsQ0FBQztBQUNELGdCQUFJLG1CQUFtQjtBQUN2QixnQkFBSSxrQkFBa0IsT0FBTyx5QkFBeUIsTUFBTSxPQUFPO0FBQ25FLGdCQUFJLGNBQWMsZ0JBQWdCO0FBQ2xDLGdCQUFJLGFBQWEsZ0JBQWdCO0FBQ2pDLG1CQUFPLGdCQUFnQjtBQUN2QixtQkFBTyxnQkFBZ0I7QUFDdkIsNEJBQWdCLE1BQU0sU0FBUyxVQUFVO0FBQ3ZDLGlDQUFtQjtBQUFBLFlBQ3JCO0FBQ0EsNEJBQWdCLE1BQU0sV0FBVztBQUMvQixrQkFBSSxTQUFTLHFCQUFxQixjQUFjLFlBQVksS0FBSyxJQUFJLElBQUksYUFBYSxNQUFNLFNBQVM7QUFDckcsa0JBQUksQ0FBQyxrQkFBa0I7QUFDckIsc0JBQU0sS0FBSyxLQUFLLE9BQU8sT0FBTyxLQUFLO0FBQUEsY0FDckM7QUFDQSxrQkFBSSxZQUFZO0FBQ2hCLHVCQUFTLE9BQU8sWUFBWTtBQUMxQixvQkFBSSxDQUFDLFdBQVcsZUFBZSxHQUFHLEdBQUc7QUFDbkM7QUFBQSxnQkFDRjtBQUNBLG9CQUFJLFdBQVcsV0FBVztBQUMxQixvQkFBSSxVQUFVLFVBQVU7QUFDdEIsc0JBQUksT0FBTyxTQUFTLEtBQUssS0FBSyxJQUFJO0FBQ2xDLHNCQUFJLE1BQU07QUFDUiwwQkFBTSxPQUFPLGFBQWEsR0FBRyxTQUFTLElBQUk7QUFBQSxrQkFDNUM7QUFBQSxnQkFDRjtBQUNBLG9CQUFJLFdBQVcsVUFBVTtBQUN2QiwyQkFBUyxNQUFNLEtBQUssTUFBTSxLQUFLO0FBQUEsZ0JBQ2pDO0FBQUEsY0FDRjtBQUNBLHFCQUFPLE1BQU0sS0FBSyxJQUFJO0FBQUEsWUFDeEI7QUFDQSxtQkFBTyxlQUFlLE1BQU0sU0FBUyxlQUFlO0FBQUEsVUFDdEQ7QUFDQSxjQUFJLE9BQU8sZ0JBQWdCO0FBQ3pCLG1CQUFPLGVBQWUsYUFBYSxXQUFXLE1BQU0sU0FBUztBQUM3RCxtQkFBTyxlQUFlLGNBQWMsS0FBSztBQUFBLFVBQzNDLE9BQU87QUFDTCxpQkFBSyxTQUFTLGNBQWMsS0FBSztBQUFBLFVBQ25DO0FBQ0EsaUJBQU87QUFBQSxRQUNUO0FBQ0EsZ0JBQVEsU0FBUyxTQUFTRyxNQUFLLEtBQUs7QUFDbEMsaUJBQU87QUFBQSxZQUNMLFNBQVMsU0FBUyxHQUFHLFNBQVM7QUFDNUIsa0JBQUksS0FBSztBQUNULGtCQUFJLEdBQUc7QUFDTCx3QkFBUSxNQUFNLE1BQU1BLEtBQUksUUFBUSxNQUFNLEVBQUUsU0FBUyxDQUFDO0FBQUEsY0FDcEQ7QUFDQSxxQkFBTztBQUFBLFlBQ1Q7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUNBLGdCQUFRLE9BQU8sU0FBU0EsTUFBSyxLQUFLO0FBQ2hDLGlCQUFPO0FBQUEsWUFDTCxNQUFNLFNBQVMsR0FBRztBQUNoQixrQkFBSSxLQUFLO0FBQ1Qsa0JBQUksR0FBRztBQUNMLHVCQUFPQSxLQUFJLFFBQVEsTUFBTSxFQUFFLFNBQVMsQ0FBQztBQUFBLGNBQ3ZDO0FBQ0EscUJBQU87QUFBQSxZQUNUO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFDQSxRQUFBSCxTQUFRLFVBQVU7QUFBQSxNQUNwQjtBQUFBLElBQ0YsQ0FBQztBQUNELFFBQUksd0NBQXdDRCxZQUFXO0FBQUEsTUFDckQsc0RBQXNELFVBQVVDLFVBQVM7QUFDdkU7QUFDQSxZQUFJLFNBQVMsQ0FBQyxTQUFTO0FBQ3JCLGdCQUFNLElBQUksS0FBSyxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxZQUFZO0FBQ3RELGlCQUFPLFFBQVEsRUFBRSxTQUFTLElBQUksTUFBTSxNQUFNO0FBQUEsUUFDNUM7QUFDQSxZQUFJLGFBQWEsQ0FBQyxHQUFHLEtBQUssWUFBWTtBQUNwQyxjQUFJLENBQUMsS0FBSztBQUNSLG1CQUFPO0FBQUEsY0FDTCxTQUFTLEVBQUUsVUFBVTtBQUFBLGNBQ3JCLFVBQVU7QUFBQSxZQUNaO0FBQUEsVUFDRjtBQUNBLGdCQUFNLFdBQVcsRUFBRSxRQUFRLE1BQU0sMkNBQTJDO0FBQzVFLGdCQUFNLFNBQVMsV0FBVyxDQUFDLFNBQVMsS0FBSyxFQUFFLFFBQVEsTUFBTSw0QkFBNEIsSUFBSSxJQUFJLFNBQVMsSUFBSTtBQUMxRyxnQkFBTSxNQUFNLFdBQVcsRUFBRSxRQUFRLFFBQVEsdUJBQXVCLG9CQUFvQixLQUFLLFVBQVUsU0FBUyxFQUFFLE1BQU0sT0FBTyxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7QUFDaEosY0FBSSxXQUFXLFFBQVEsV0FBVyxRQUFRO0FBQ3hDLGtCQUFNLFFBQVEsVUFBVSxVQUFVLElBQUksU0FBUztBQUMvQyxrQkFBTSxNQUFNLFNBQVMsV0FBVyxJQUFJLFNBQVMsSUFBSSxTQUFTLFNBQVM7QUFDbkUsa0JBQU0sU0FBUyxVQUFVLElBQUksS0FBSyxTQUFTLElBQUksTUFBTSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLO0FBQzlGLGtCQUFNLE9BQU8sUUFBUSxRQUFRLEtBQUs7QUFDbEMsbUJBQU87QUFBQSxjQUNMLFNBQVMsTUFBTSxrQkFBa0IsT0FBTyxLQUFLLFVBQVUsS0FBSztBQUFBLGNBQzVELFVBQVU7QUFBQSxZQUNaO0FBQUEsVUFDRixPQUFPO0FBQ0wsbUJBQU87QUFBQSxjQUNMLFNBQVMsTUFBTSxtQkFBbUIsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDO0FBQUEsY0FDMUQsVUFBVTtBQUFBLFlBQ1o7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUNBLFlBQUksaUJBQWlCLGNBQWMsWUFBWTtBQUFBLFVBQzdDLFlBQVksSUFBSSxLQUFLLFNBQVMsUUFBUTtBQUNwQyxzQkFBVSxXQUFXO0FBQ3JCLGtCQUFNLFdBQVcsV0FBVyxJQUFJLEtBQUssT0FBTztBQUM1QyxrQkFBTSxTQUFTLE9BQU87QUFDdEIsbUJBQU8sT0FBTyxNQUFNLFFBQVE7QUFDNUIsaUJBQUssT0FBTztBQUNaLGlCQUFLLGNBQWM7QUFDbkIsa0JBQU0sa0JBQWtCLE1BQU0sVUFBVSxLQUFLLFdBQVc7QUFBQSxVQUMxRDtBQUFBLFVBQ0EsSUFBSSxPQUFPO0FBQ1QsbUJBQU8sS0FBSyxZQUFZO0FBQUEsVUFDMUI7QUFBQSxVQUNBLElBQUksS0FBSyxHQUFHO0FBQUEsVUFDWjtBQUFBLFVBQ0EsS0FBSyxPQUFPLGVBQWU7QUFDekIsbUJBQU8sS0FBSyxZQUFZO0FBQUEsVUFDMUI7QUFBQSxRQUNGO0FBQ0EsWUFBSSxVQUFVLE9BQU8sSUFBSSxRQUFRO0FBQ2pDLFlBQUksV0FBVyxPQUFPLElBQUksU0FBUztBQUNuQyxZQUFJLFdBQVc7QUFDZixZQUFJLFVBQVU7QUFDZCxZQUFJLFlBQVksQ0FBQyxLQUFLLFNBQVMsWUFBWTtBQUN6QyxnQkFBTSxZQUFZLFNBQVMsR0FBRztBQUM5QixvQkFBVSxXQUFXO0FBQ3JCLGNBQUk7QUFDRixrQkFBTSxDQUFDLEVBQUUsVUFBVSxNQUFNLFNBQVMsSUFBSSxJQUFJLFVBQVUsTUFBTSxPQUFPLEtBQUssVUFBVSxNQUFNLFFBQVEsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzVHLGtCQUFNLFNBQVMsS0FBSyxNQUFNLFdBQVcsT0FBTztBQUM1QyxnQkFBSSxVQUFVLE9BQU8sV0FBVyxVQUFVO0FBQ3hDLHFCQUFPLFlBQVk7QUFDbkIscUJBQU8sV0FBVztBQUFBLFlBQ3BCO0FBQ0EsbUJBQU87QUFBQSxVQUNULFNBQVMsR0FBUDtBQUNBLGdCQUFJLE9BQU8sUUFBUSxZQUFZLENBQUMsT0FBTyxTQUFTLEdBQUcsR0FBRztBQUNwRCxvQkFBTSxlQUFlLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxXQUFXO0FBQzFELG9CQUFNLE9BQU8sT0FBTyxJQUFJLFVBQVUsZ0JBQWdCLGVBQWUsbUJBQW1CLE9BQU8sR0FBRyxHQUFHLEdBQUc7QUFBQSxnQkFDbEcsTUFBTTtBQUFBLGdCQUNOLGFBQWE7QUFBQSxjQUNmLENBQUM7QUFBQSxZQUNIO0FBQ0Esa0JBQU0sSUFBSSxlQUFlLEdBQUcsV0FBVyxTQUFTLFNBQVM7QUFBQSxVQUMzRDtBQUFBLFFBQ0Y7QUFDQSxZQUFJLFdBQVcsQ0FBQyxRQUFRLE9BQU8sR0FBRyxFQUFFLFFBQVEsV0FBVyxFQUFFO0FBQ3pELFFBQUFBLFNBQVEsVUFBVTtBQUNsQixrQkFBVSxpQkFBaUI7QUFDM0Isa0JBQVUsZUFBZSxDQUFDLEtBQUssWUFBWTtBQUN6QyxjQUFJO0FBQ0YsbUJBQU8sS0FBSyxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU87QUFBQSxVQUMxQyxTQUFTLEdBQVA7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJSSxpQkFBZ0JMLFlBQVc7QUFBQSxNQUM3Qix3RUFBd0UsVUFBVTtBQUNoRjtBQUNBLGlCQUFTLGFBQWE7QUFDdEIsaUJBQVMsa0JBQWtCO0FBQzNCLFlBQUksS0FBSztBQUNULFlBQUksS0FBSztBQUNULFlBQUksa0JBQWtCLFdBQVc7QUFDL0IsbUJBQVMsaUJBQWlCLFFBQVE7QUFDaEMsaUJBQUssU0FBUztBQUNkLGdCQUFJLFVBQVUsQ0FBQyxDQUFDO0FBQ2hCLHFCQUFTLFNBQVMsR0FBRyxTQUFTLE9BQU8sVUFBVTtBQUM3QyxzQkFBUSxPQUFPO0FBQUEscUJBQ1I7QUFDSCw0QkFBVSxHQUFHO0FBQ2IsMEJBQVEsS0FBSyxNQUFNO0FBQ25CO0FBQUEscUJBQ0c7QUFDSCw0QkFBVSxHQUFHO0FBQ2Isc0JBQUksT0FBTyxZQUFZLElBQUk7QUFDekIsOEJBQVUsR0FBRztBQUFBLGtCQUNmO0FBQ0EsMEJBQVEsS0FBSyxNQUFNO0FBQ25CO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQSxZQUVOO0FBQ0EsaUJBQUssVUFBVTtBQUFBLFVBQ2pCO0FBQ0EsMkJBQWlCLFVBQVUsbUJBQW1CLFNBQVMsT0FBTztBQUM1RCxnQkFBSSxRQUFRLEtBQUssUUFBUSxLQUFLLE9BQU8sUUFBUTtBQUMzQyxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxnQkFBSSxPQUFPO0FBQ1gsZ0JBQUksVUFBVSxLQUFLO0FBQ25CLG1CQUFPLFFBQVEsT0FBTyxNQUFNLE9BQU87QUFDakM7QUFBQSxZQUNGO0FBQ0EsZ0JBQUksU0FBUyxRQUFRLFFBQVE7QUFDN0IsbUJBQU87QUFBQSxjQUNMO0FBQUEsY0FDQTtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBQ0EsMkJBQWlCLFVBQVUsbUJBQW1CLFNBQVMsVUFBVTtBQUMvRCxnQkFBSSxPQUFPLFNBQVMsTUFBTSxTQUFTLFNBQVM7QUFDNUMsZ0JBQUksT0FBTyxLQUFLLFFBQVEsS0FBSyxRQUFRLFFBQVE7QUFDM0MscUJBQU87QUFBQSxZQUNUO0FBQ0EsZ0JBQUksU0FBUyxLQUFLLFNBQVMsS0FBSyxhQUFhLElBQUksR0FBRztBQUNsRCxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxtQkFBTyxLQUFLLFFBQVEsUUFBUTtBQUFBLFVBQzlCO0FBQ0EsMkJBQWlCLFVBQVUsZUFBZSxTQUFTLE1BQU07QUFDdkQsZ0JBQUksU0FBUyxLQUFLLFFBQVE7QUFDMUIsZ0JBQUksYUFBYSxTQUFTLEtBQUssUUFBUSxTQUFTLElBQUksS0FBSyxPQUFPLFNBQVMsS0FBSyxRQUFRLE9BQU87QUFDN0YsbUJBQU8sYUFBYTtBQUFBLFVBQ3RCO0FBQ0EsaUJBQU87QUFBQSxRQUNULEVBQUU7QUFDRixpQkFBUyxrQkFBa0I7QUFDM0IsaUJBQVMsYUFBYTtBQUFBLE1BQ3hCO0FBQUEsSUFDRixDQUFDO0FBQ0QsUUFBSSxvQkFBb0JBLFlBQVc7QUFBQSxNQUNqQyxrQ0FBa0MsVUFBVTtBQUMxQyxlQUFPLGVBQWUsVUFBVSxjQUFjO0FBQUEsVUFDNUMsT0FBTztBQUFBLFFBQ1QsQ0FBQztBQUNELGlCQUFTLFVBQVU7QUFDbkIsaUJBQVMsZUFBZSxTQUFTLE9BQU87QUFDdEMsY0FBSSxRQUFRO0FBQUEsWUFDVixNQUFNO0FBQUEsWUFDTixPQUFPLE1BQU07QUFBQSxZQUNiLFFBQVE7QUFBQSxVQUNWO0FBQ0EsY0FBSSxNQUFNO0FBQ1Isa0JBQU0sT0FBTyxVQUFVLE1BQU0sU0FBUyxDQUFDLEVBQUUsTUFBTSxNQUFNLE1BQU07QUFBQSxtQkFDcEQsTUFBTTtBQUNiLGtCQUFNLE9BQU87QUFBQSxtQkFDTixNQUFNO0FBQ2Isa0JBQU0sT0FBTyxXQUFXLE1BQU0sU0FBUyxDQUFDLENBQUMsTUFBTTtBQUFBLG1CQUN4QyxNQUFNO0FBQ2Isa0JBQU0sT0FBTztBQUFBLG1CQUNOLE1BQU07QUFDYixrQkFBTSxPQUFPO0FBQUEsbUJBQ04sTUFBTTtBQUNiLGtCQUFNLE9BQU87QUFBQSxtQkFDTixNQUFNO0FBQ2Isa0JBQU0sT0FBTztBQUFBLG1CQUNOLE1BQU07QUFDYixrQkFBTSxPQUFPO0FBQ2YsaUJBQU87QUFBQSxRQUNUO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUNELFFBQUkscUJBQXFCQSxZQUFXO0FBQUEsTUFDbEMsb0VBQW9FLFVBQVU7QUFDNUU7QUFDQSxlQUFPLGVBQWUsVUFBVSxjQUFjO0FBQUEsVUFDNUMsT0FBTztBQUFBLFFBQ1QsQ0FBQztBQUNELGlCQUFTLG1CQUFtQjtBQUM1QixpQkFBUyxtQkFBbUI7QUFDNUIsaUJBQVMsb0JBQW9CO0FBQzdCLFlBQUksK0JBQStCO0FBQ25DLFlBQUksMEJBQTBCO0FBQzlCLFlBQUksMEJBQTBCLElBQUksT0FBTyxNQUFNLCtCQUErQixHQUFHO0FBQ2pGLFlBQUkscUJBQXFCLElBQUksT0FBTyxNQUFNLCtCQUErQiwwQkFBMEIsR0FBRztBQUN0Ryx1Q0FBK0IsMEJBQTBCO0FBQ3pELFlBQUksNkJBQTZCLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEtBQUssSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxNQUFNLEtBQUssTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEtBQUssTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsR0FBRyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLE9BQU8sSUFBSSxNQUFNLEdBQUcsS0FBSyxHQUFHLE1BQU0sSUFBSSxNQUFNLE1BQU0sS0FBSyxNQUFNLElBQUk7QUFDLzdELFlBQUksd0JBQXdCLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdB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QUc7QUFBQSxVQUM3QixjQUFjLENBQUMsS0FBSyxHQUFHLEdBQUc7QUFBQSxVQUMxQixZQUFZLENBQUMsS0FBSyxJQUFJLEdBQUc7QUFBQSxVQUN6QixlQUFlLENBQUMsR0FBRyxLQUFLLEdBQUc7QUFBQSxVQUMzQixXQUFXLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUN6QixXQUFXLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUN6QixjQUFjLENBQUMsSUFBSSxLQUFLLEdBQUc7QUFBQSxVQUMzQixhQUFhLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFBQSxVQUN6QixlQUFlLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUM3QixlQUFlLENBQUMsSUFBSSxLQUFLLEVBQUU7QUFBQSxVQUMzQixXQUFXLENBQUMsS0FBSyxHQUFHLEdBQUc7QUFBQSxVQUN2QixhQUFhLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUMzQixjQUFjLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUM1QixRQUFRLENBQUMsS0FBSyxLQUFLLENBQUM7QUFBQSxVQUNwQixhQUFhLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFBQSxVQUMxQixRQUFRLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUN0QixTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7QUFBQSxVQUNuQixlQUFlLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFBQSxVQUM1QixRQUFRLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUN0QixZQUFZLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUMxQixXQUFXLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUN6QixhQUFhLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFBQSxVQUN6QixVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUc7QUFBQSxVQUNyQixTQUFTLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUN2QixTQUFTLENBQUMsS0FBSyxLQUFLLEdBQUc7QUFBQSxVQUN2QixZQUFZLENBQUMsS0FBSyxLQUFLLEdB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LFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxRQUNQLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxRQUNQLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLElBQUk7QUFBQSxRQUNOLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLElBQUk7QUFBQSxRQUNOLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLElBQUk7QUFBQSxRQUNOLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLElBQUk7QUFBQSxZQUNGLEtBQUs7QUFBQSxZQUNMLElBQUk7QUFBQSxVQUNOO0FBQUEsUUFDRixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsUUFDTixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsUUFDTixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsUUFDUCxHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsWUFDRixLQUFLLENBQUMsMEJBQTBCLG9CQUFvQjtBQUFBLFVBQ3REO0FBQUEsUUFDRixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsWUFDSCxTQUFTO0FBQUEsVUFDWDtBQUFBLFFBQ0YsR0FBRztBQUFBLFVBQ0QsTUFBTTtBQUFBLFVBQ04sVUFBVTtBQUFBLFVBQ1YsS0FBSztBQUFBLFVBQ0wsSUFBSTtBQUFBLFlBQ0YsbUJBQW1CO0FBQUEsVUFDckI7QUFBQSxRQUNGLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxRQUNQLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxRQUNQLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLElBQUk7QUFBQSxZQUNGLG1CQUFtQjtBQUFBLFVBQ3JCO0FBQUEsUUFDRixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsUUFDTixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsUUFDUCxHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsUUFDTixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsUUFDUCxHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLLENBQUMsZUFBZSxVQUFVO0FBQUEsVUFDL0IsSUFBSTtBQUFBLFlBQ0YsS0FBSyxDQUFDLGVBQWUsV0FBVztBQUFBLFVBQ2xDO0FBQUEsUUFDRixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsUUFDUCxHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsWUFDRixLQUFLO0FBQUEsWUFDTCxJQUFJO0FBQUEsVUFDTjtBQUFBLFFBQ0YsR0FBRztBQUFBLFVBQ0QsTUFBTTtBQUFBLFVBQ04sVUFBVTtBQUFBLFVBQ1YsS0FBSztBQUFBLFVBQ0wsSUFBSTtBQUFBLFlBQ0YsS0FBSztBQUFBLFlBQ0wsSUFBSTtBQUFBLFVBQ047QUFBQSxRQUNGLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLElBQUk7QUFBQSxZQUNGLGlCQUFpQjtBQUFBLFVBQ25CO0FBQUEsUUFDRixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsUUFDTixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsUUFDTixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsWUFDRixLQUFLO0FBQUEsWUFDTCxJQUFJO0FBQUEsVUFDTjtBQUFBLFFBQ0YsR0FBRztBQUFBLFVBQ0QsTUFBTTtBQUFBLFVBQ04sVUFBVTtBQUFBLFVBQ1YsS0FBSztBQUFBLFVBQ0wsSUFBSTtBQUFBLFlBQ0YsaUJBQWlCO0FBQUEsVUFDbkI7QUFBQSxRQUNGLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxVQUNMLElBQUk7QUFBQSxRQUNOLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUs7QUFBQSxRQUNQLEdBQUc7QUFBQSxVQUNELE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxVQUNWLEtBQUssQ0FBQyxXQUFXLFFBQVE7QUFBQSxRQUMzQixHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsUUFDUCxHQUFHO0FBQUEsVUFDRCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTCxJQUFJO0FBQUEsWUFDRixLQUFLO0FBQUEsWUFDTCxJQUFJO0FBQUEsVUFDTjtBQUFBLFFBQ0YsR0FBRztBQUFBLFVBQ0QsTUFBTTtBQUFBLFVBQ04sVUFBVTtBQUFBLFVBQ1YsS0FBSztBQUFBLFFBQ1AsR0FBRztBQUFBLFVBQ0QsTUFBTTtBQUFBLFVBQ04sVUFBVTtBQUFBLFVBQ1YsS0FBSztBQUFBLFFBQ1AsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJLGtCQUFrQkQsWUFBVztBQUFBLE1BQy9CLGdDQUFnQyxVQUFVO0FBQ3hDO0FBQ0EsWUFBSSxVQUFVLGdCQUFnQjtBQUM5QixZQUFJLE1BQU0sUUFBUTtBQUNsQixlQUFPLGVBQWUsVUFBVSxZQUFZO0FBQUEsVUFDMUMsT0FBTyxRQUFRLElBQUksU0FBUyxHQUFHO0FBQzdCLG1CQUFPLEVBQUU7QUFBQSxVQUNYLENBQUM7QUFBQSxRQUNILENBQUM7QUFDRCxpQkFBUyxPQUFPO0FBQ2hCLGlCQUFTLE9BQU87QUFDaEIsZ0JBQVEsUUFBUSxTQUFTLFFBQVE7QUFDL0IsZ0JBQU0sT0FBTyxNQUFNLFFBQVEsT0FBTyxHQUFHLElBQUksT0FBTyxNQUFNLENBQUMsT0FBTyxHQUFHO0FBQ2pFLGdCQUFNLE9BQU8sS0FBSyxNQUFNLFNBQVMsS0FBSztBQUNwQyxtQkFBTyxTQUFTLEdBQUc7QUFBQSxVQUNyQixDQUFDO0FBQ0QsbUJBQVMsT0FBTyxZQUFZO0FBQzVCLGNBQUksTUFBTTtBQUNSLHFCQUFTLE9BQU8sT0FBTztBQUN2QixvQkFBUSxPQUFPLE9BQU87QUFBQSxtQkFDZjtBQUNILHlCQUFTLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTztBQUM3QjtBQUFBLG1CQUNHO0FBQ0gsb0JBQUksU0FBUyxPQUFPLElBQUk7QUFDdEIsMkJBQVMsT0FBTyxPQUFPLEdBQUcsT0FBTyxPQUFPLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxHQUFHO0FBQUEsZ0JBQzNFLFdBQVcsU0FBUyxPQUFPLElBQUk7QUFDN0IsMkJBQVMsT0FBTyxPQUFPLEdBQUcsSUFBSSxLQUFLLFNBQVMsS0FBSztBQUMvQywyQkFBTyxDQUFDLENBQUMsSUFBSTtBQUFBLGtCQUNmLENBQUM7QUFBQSxnQkFDSCxPQUFPO0FBQ0wsMkJBQVMsT0FBTyxTQUFTLE9BQU8sRUFBRTtBQUFBLGdCQUNwQztBQUNBO0FBQUE7QUFFQSx5QkFBUyxPQUFPO0FBQUE7QUFBQSxVQUV0QjtBQUFBLFFBQ0YsQ0FBQztBQUNELGlCQUFTLE9BQU8sQ0FBQyxFQUFFLElBQUksTUFBTSxJQUFJLDBCQUEwQixJQUFJLGdCQUFnQixJQUFJLFVBQVUsU0FBUyxRQUFRO0FBQzlHLGlCQUFTLFNBQVMsS0FBSztBQUNyQixjQUFJLE9BQU8sUUFBUTtBQUNqQixtQkFBTyxDQUFDLENBQUMsSUFBSTtBQUNmLGlCQUFPLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTSxTQUFTLEdBQUc7QUFDeEMsbUJBQU8sSUFBSSxPQUFPLElBQUk7QUFBQSxVQUN4QixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUM7QUFDRCxJQUFBRixRQUFPLFVBQVU7QUFBQSxNQUNmLGFBQWFrRCxlQUFjLEVBQUU7QUFBQSxNQUM3QixpQkFBaUJBLGVBQWMsRUFBRTtBQUFBLE1BQ2pDLGVBQWUsd0JBQXdCLEVBQUU7QUFBQSxNQUN6QyxVQUFVLGtCQUFrQjtBQUFBLE1BQzVCLE1BQU0sTUFBTSxnQkFBZ0IsRUFBRTtBQUFBLElBQ2hDO0FBQUE7QUFBQTs7O0FDanhSQTtBQUFBLG1EQUFBRSxTQUFBO0FBQUEsS0FBQyxTQUFTLEdBQUU7QUFBQyxVQUFHLE9BQU8sV0FBUyxZQUFVLE9BQU9BLFdBQVE7QUFBUyxRQUFBQSxRQUFPLFVBQVEsRUFBRTtBQUFBLGVBQVUsT0FBTyxVQUFRLGNBQVksT0FBTztBQUFJLGVBQU8sQ0FBQztBQUFBLFdBQU07QUFBQyxZQUFJLElBQUUsT0FBTyxhQUFXLE1BQUksYUFBVyxPQUFPLFNBQU8sTUFBSSxTQUFPLE9BQU8sT0FBSyxNQUFJLE9BQUssUUFBTSxDQUFDO0FBQUUsVUFBRSxrQkFBZ0IsRUFBRSxtQkFBaUIsQ0FBQyxHQUFFLEVBQUUsZ0JBQWdCLFFBQU0sRUFBRTtBQUFBLE1BQUM7QUFBQSxJQUFDLEdBQUcsV0FBVTtBQUFDO0FBQWEsVUFBSSxJQUFFLENBQUMsR0FBRSxNQUFJLE9BQUssS0FBRyxHQUFHLElBQUUsRUFBQyxTQUFRLENBQUMsRUFBQyxHQUFHLFNBQVEsQ0FBQyxHQUFFLEVBQUU7QUFBUyxVQUFJLElBQUUsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLEVBQUUsUUFBTSxRQUFNO0FBQUEsUUFBQztBQUFFLFdBQUcsVUFBUSxHQUFHLE9BQU8sY0FBWSxZQUFVLFVBQVUsS0FBRyxHQUFHLE9BQU8sVUFBUSxZQUFVLE1BQU0sS0FBRyxHQUFHLE9BQU8sUUFBTSxZQUFVLElBQUksS0FBRyxHQUFHLE9BQU8sVUFBUSxZQUFVLE1BQU0sS0FBRyxXQUFVO0FBQUMsaUJBQU87QUFBQSxRQUFJLEVBQUUsS0FBRyxTQUFTLGFBQWEsRUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUc7QUFBQyxtQkFBTSxDQUFDLENBQUMsRUFBRTtBQUFBLFVBQUMsUUFBQztBQUFNLG1CQUFNO0FBQUEsVUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLENBQUMsR0FBRyxXQUFVO0FBQUMsaUJBQU8sT0FBTyxlQUFlLENBQUMsR0FBRSxHQUFFLEVBQUMsS0FBSSxXQUFVO0FBQUMsbUJBQU87QUFBQSxVQUFDLEVBQUMsQ0FBQyxFQUFFLE1BQUk7QUFBQSxRQUFDLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLENBQUMsR0FBRyxXQUFVO0FBQUMsY0FBSSxJQUFFLFdBQVU7QUFBQSxVQUFDLEVBQUUsS0FBSztBQUFFLGlCQUFPLE9BQU8sS0FBRyxjQUFZLEVBQUUsZUFBZSxXQUFXO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxVQUFVO0FBQUssV0FBRyxVQUFRLEtBQUcsR0FBRyxLQUFLLEVBQUUsSUFBRSxXQUFVO0FBQUMsaUJBQU8sR0FBRyxNQUFNLElBQUcsU0FBUztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxRQUFJO0FBQUM7QUFBYSxZQUFJLEtBQUcsQ0FBQyxFQUFFLHNCQUFxQixLQUFHLE9BQU8sMEJBQXlCLEtBQUcsTUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFDLEdBQUUsRUFBQyxHQUFFLENBQUM7QUFBRSxXQUFHLElBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsR0FBRyxNQUFLLENBQUM7QUFBRSxpQkFBTSxDQUFDLENBQUMsS0FBRyxFQUFFO0FBQUEsUUFBVSxJQUFFO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxpQkFBTSxFQUFDLFlBQVcsRUFBRSxJQUFFLElBQUcsY0FBYSxFQUFFLElBQUUsSUFBRyxVQUFTLEVBQUUsSUFBRSxJQUFHLE9BQU0sRUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxHQUFHLE1BQUssS0FBRyxHQUFHLE1BQUssS0FBRyxNQUFJLEdBQUcsS0FBSyxJQUFHLEVBQUU7QUFBRSxXQUFHLFVBQVEsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLEdBQUcsQ0FBQztBQUFBLFFBQUMsSUFBRSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLFdBQVU7QUFBQyxtQkFBTyxHQUFHLE1BQU0sR0FBRSxTQUFTO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUUsS0FBRyxHQUFHLEdBQUcsS0FBSztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFFBQU8sS0FBRyxHQUFHLEdBQUcsS0FBSztBQUFFLFdBQUcsVUFBUSxHQUFHLFdBQVU7QUFBQyxpQkFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLHFCQUFxQixDQUFDO0FBQUEsUUFBQyxDQUFDLElBQUUsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxDQUFDLEtBQUcsV0FBUyxHQUFHLEdBQUUsRUFBRSxJQUFFLEdBQUcsQ0FBQztBQUFBLFFBQUMsSUFBRTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUc7QUFBVSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsY0FBRyxLQUFHO0FBQUssa0JBQU0sR0FBRywwQkFBd0IsQ0FBQztBQUFFLGlCQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLEtBQUc7QUFBQSxRQUFVO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLEtBQUcsV0FBUyxNQUFJLE9BQUssR0FBRyxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsQ0FBQyxJQUFFLElBQUU7QUFBQSxRQUFNO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsaUJBQU8sVUFBVSxTQUFPLElBQUUsR0FBRyxHQUFHLEVBQUUsSUFBRSxHQUFHLE1BQUksR0FBRyxHQUFHO0FBQUEsUUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsR0FBRyxDQUFDLEVBQUUsYUFBYTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsR0FBRyxhQUFZLFdBQVcsS0FBRztBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsU0FBUSxLQUFHLEdBQUcsTUFBSyxLQUFHLE1BQUksR0FBRyxZQUFVLE1BQUksR0FBRyxTQUFRLEtBQUcsTUFBSSxHQUFHLElBQUcsSUFBRztBQUFHLGVBQUssS0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFHLEtBQUcsR0FBRyxLQUFHLElBQUUsSUFBRSxFQUFFLEdBQUcsS0FBRyxHQUFHO0FBQUssU0FBQyxNQUFJLE9BQUssS0FBRyxHQUFHLE1BQU0sYUFBYSxJQUFHLENBQUMsTUFBSSxHQUFHLE1BQUksUUFBTSxLQUFHLEdBQUcsTUFBTSxlQUFlLEdBQUUsT0FBSyxLQUFHLENBQUMsR0FBRztBQUFNLFdBQUcsVUFBUTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsQ0FBQyxDQUFDLE9BQU8seUJBQXVCLENBQUMsR0FBRyxXQUFVO0FBQUMsY0FBSSxJQUFFLE9BQU87QUFBRSxpQkFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFHLEVBQUUsT0FBTyxDQUFDLGFBQVksV0FBUyxDQUFDLE9BQU8sUUFBTSxNQUFJLEtBQUc7QUFBQSxRQUFFLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLE1BQUksQ0FBQyxPQUFPLFFBQU0sT0FBTyxPQUFPLFlBQVU7QUFBQSxNQUFRLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sT0FBTyxLQUFHO0FBQUEsUUFBUSxJQUFFLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLFFBQVE7QUFBRSxpQkFBTyxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsV0FBVSxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUc7QUFBQyxtQkFBTyxHQUFHLENBQUM7QUFBQSxVQUFDLFFBQUM7QUFBTSxtQkFBTTtBQUFBLFVBQVE7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFVLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFHLEdBQUcsQ0FBQztBQUFFLG1CQUFPO0FBQUUsZ0JBQU0sR0FBRyxHQUFHLENBQUMsSUFBRSxvQkFBb0I7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxFQUFFO0FBQUcsaUJBQU8sS0FBRyxPQUFLLFNBQU8sR0FBRyxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBVSxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxjQUFJLEdBQUU7QUFBRSxjQUFHLE1BQUksWUFBVSxHQUFHLElBQUUsRUFBRSxRQUFRLEtBQUcsQ0FBQyxHQUFHLElBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQyxLQUFHLEdBQUcsSUFBRSxFQUFFLE9BQU8sS0FBRyxDQUFDLEdBQUcsSUFBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEtBQUcsTUFBSSxZQUFVLEdBQUcsSUFBRSxFQUFFLFFBQVEsS0FBRyxDQUFDLEdBQUcsSUFBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUsbUJBQU87QUFBRSxnQkFBTSxHQUFHLHlDQUF5QztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFdBQUcsVUFBUTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLE9BQU87QUFBZSxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxjQUFHO0FBQUMsZUFBRyxJQUFHLEdBQUUsRUFBQyxPQUFNLEdBQUUsY0FBYSxNQUFHLFVBQVMsS0FBRSxDQUFDO0FBQUEsVUFBQyxRQUFDO0FBQU0sZUFBRyxLQUFHO0FBQUEsVUFBQztBQUFDLGlCQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLHNCQUFxQixLQUFHLEdBQUcsT0FBSyxHQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUUsV0FBRyxVQUFRO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFNBQUMsR0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsaUJBQU8sR0FBRyxPQUFLLEdBQUcsS0FBRyxNQUFJLFNBQU8sSUFBRSxDQUFDO0FBQUEsUUFBRSxHQUFHLFlBQVcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFDLFNBQVEsVUFBUyxNQUFLLEtBQUcsU0FBTyxVQUFTLFdBQVUsZ0RBQStDLFNBQVEsNERBQTJELFFBQU8sc0NBQXFDLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDLEVBQUUsY0FBYztBQUFFLFdBQUcsVUFBUSxPQUFPLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEtBQUssT0FBTyxHQUFFLEtBQUcsR0FBRyxHQUFHLFFBQVE7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU0sYUFBVyxNQUFJLFNBQU8sS0FBRyxLQUFHLE9BQUssR0FBRyxFQUFFLEtBQUcsSUFBRyxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSyxHQUFFLEtBQUcsR0FBRyxRQUFPLEtBQUcsTUFBSSxHQUFHLEtBQUksS0FBRyxLQUFHLEtBQUcsTUFBSSxHQUFHLGlCQUFlO0FBQUcsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUcsQ0FBQyxHQUFHLElB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QUFDO0FBQUUsY0FBSSxHQUFHLFNBQU8sS0FBRyxHQUFHLFVBQVEsR0FBRyxRQUFNLElBQUksT0FBSSxLQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUMsS0FBRyxDQUFDO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxRQUFDLE1BQUksS0FBRyxHQUFHLE9BQU8sR0FBRSxHQUFHLE1BQUksTUFBRyxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxFQUFFLE1BQUksQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFHLFlBQUksSUFBRyxJQUFHLElBQUcsSUFBRztBQUFHLFdBQUcsVUFBUSxFQUFDLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFNBQVEsSUFBRyxXQUFVLEdBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxNQUFJLE9BQU8sMEJBQXlCLEtBQUcsR0FBRyxJQUFHLE1BQU0sR0FBRSxLQUFHLE1BQUksV0FBVTtBQUFBLFFBQUMsRUFBRSxTQUFPLGFBQVksS0FBRyxPQUFLLENBQUMsTUFBSSxNQUFJLEdBQUcsSUFBRyxNQUFNLEVBQUU7QUFBYyxXQUFHLFVBQVEsRUFBQyxRQUFPLElBQUcsUUFBTyxJQUFHLGNBQWEsR0FBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxjQUFhLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRyxTQUFRLEtBQUcsT0FBTyxNQUFNLEVBQUUsTUFBTSxRQUFRO0FBQUUsU0FBQyxHQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLElBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBTyxPQUFHLElBQUUsSUFBRSxDQUFDLENBQUMsRUFBRSxhQUFXLE9BQUcsSUFBRSxJQUFFLENBQUMsQ0FBQyxFQUFFLGNBQVksT0FBRyxJQUFFLEtBQUcsRUFBRSxTQUFPLFNBQU8sRUFBRSxPQUFLLEdBQUU7QUFBRSxjQUFHLEdBQUcsQ0FBQyxNQUFJLE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FBRSxDQUFDLE1BQUksY0FBWSxJQUFFLE1BQUksT0FBTyxDQUFDLEVBQUUsUUFBUSxzQkFBcUIsSUFBSSxJQUFFLE9BQU0sQ0FBQyxHQUFHLEdBQUUsTUFBTSxLQUFHLE1BQUksRUFBRSxTQUFPLE1BQUksR0FBRyxHQUFFLFFBQU8sQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxXQUFTLEVBQUUsU0FBTyxHQUFHLEtBQUssT0FBTyxLQUFHLFdBQVMsSUFBRSxFQUFFLEtBQUksTUFBSSxJQUFHO0FBQUMsZ0JBQUUsRUFBRSxLQUFHLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRTtBQUFBLFVBQU07QUFBTSxnQkFBRSxDQUFDLEtBQUcsRUFBRSxPQUFLLElBQUUsUUFBSSxPQUFPLEVBQUU7QUFBRyxjQUFFLEVBQUUsS0FBRyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxRQUFDLEdBQUcsU0FBUyxXQUFVLFlBQVcsV0FBVTtBQUFDLGlCQUFPLEdBQUcsSUFBSSxLQUFHLEdBQUcsSUFBSSxFQUFFLFVBQVEsR0FBRyxJQUFJO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsS0FBSyxNQUFLLEtBQUcsS0FBSztBQUFNLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsQ0FBQztBQUFFLGlCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFJLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsS0FBSyxLQUFJLEtBQUcsS0FBSztBQUFJLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxpQkFBTyxJQUFFLElBQUUsR0FBRyxJQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEtBQUs7QUFBSSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sSUFBRSxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsZ0JBQWdCLElBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEVBQUUsTUFBTTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRTtBQUFFLGdCQUFHLEtBQUcsS0FBRyxHQUFFO0FBQUMscUJBQUssSUFBRTtBQUFHLG9CQUFHLElBQUUsRUFBRSxNQUFLLEtBQUc7QUFBRSx5QkFBTTtBQUFBLFlBQUU7QUFBTSxxQkFBSyxJQUFFLEdBQUU7QUFBSSxxQkFBSSxLQUFHLEtBQUssTUFBSSxFQUFFLE9BQUs7QUFBRSx5QkFBTyxLQUFHLEtBQUc7QUFBRSxtQkFBTSxDQUFDLEtBQUc7QUFBQSxVQUFFO0FBQUEsUUFBQztBQUFFLFdBQUcsVUFBUSxFQUFDLFVBQVMsR0FBRyxJQUFFLEdBQUUsU0FBUSxHQUFHLEtBQUUsRUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxTQUFRLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBRSxlQUFJLEtBQUs7QUFBRSxhQUFDLEdBQUcsSUFBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLGlCQUFLLEVBQUUsU0FBTztBQUFHLGVBQUcsR0FBRSxJQUFFLEVBQUUsSUFBSSxNQUFJLENBQUMsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFHLGlCQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsV0FBRyxVQUFRLENBQUMsZUFBYyxrQkFBaUIsaUJBQWdCLHdCQUF1QixrQkFBaUIsWUFBVyxTQUFTO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsUUFBSTtBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLE9BQU8sVUFBUyxXQUFXO0FBQUUsV0FBRyxJQUFFLE9BQU8sdUJBQXFCLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLFFBQUk7QUFBQyxXQUFHLElBQUUsT0FBTztBQUFBLE1BQXFCLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNO0FBQUUsV0FBRyxVQUFRLEdBQUcsV0FBVSxTQUFTLEtBQUcsU0FBUyxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUUsR0FBRztBQUFFLGlCQUFPLElBQUUsR0FBRyxHQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQVEsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFHLGFBQUMsR0FBRyxHQUFFLENBQUMsS0FBRyxFQUFFLEtBQUcsR0FBRyxHQUFFLENBQUMsTUFBSSxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxtQkFBa0IsS0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLEdBQUcsQ0FBQztBQUFHLGlCQUFPLEtBQUcsS0FBRyxPQUFHLEtBQUcsS0FBRyxRQUFHLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLEdBQUcsWUFBVSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLENBQUMsRUFBRSxRQUFRLElBQUcsR0FBRyxFQUFFLFlBQVk7QUFBQSxRQUFDLEdBQUUsS0FBRyxHQUFHLE9BQUssQ0FBQyxHQUFFLEtBQUcsR0FBRyxTQUFPLEtBQUksS0FBRyxHQUFHLFdBQVM7QUFBSSxXQUFHLFVBQVE7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxjQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFFLGNBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUcsTUFBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDLElBQUUsS0FBRyxHQUFHLE1BQUksQ0FBQyxHQUFHLFdBQVU7QUFBRSxpQkFBSSxLQUFLLEdBQUU7QUFBQyxrQkFBRyxJQUFFLEVBQUUsSUFBRyxFQUFFLGVBQWEsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLFNBQU8sSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsTUFBSSxPQUFLLEdBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxLQUFHLE1BQUksUUFBTztBQUFDLG9CQUFHLE9BQU8sS0FBRyxPQUFPO0FBQUU7QUFBUyxtQkFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZUFBQyxFQUFFLFFBQU0sS0FBRyxFQUFFLFNBQU8sR0FBRyxHQUFFLFFBQU8sSUFBRSxHQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsTUFBSTtBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFFO0FBQUUsV0FBRyxFQUFDLFFBQU8sS0FBRSxHQUFFLEVBQUMsWUFBVyxHQUFFLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxNQUFJO0FBQUMsV0FBRztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsTUFBTSxXQUFTLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsQ0FBQyxLQUFHO0FBQUEsUUFBTztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFL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VUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsQ0FBQyxFQUFFO0FBQUEsVUFBTztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLEtBQUcsR0FBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLEtBQUcsRUFBRSxFQUFFO0FBQUksZ0JBQUUsRUFBRSxRQUFRLEdBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRSxFQUFFLEVBQUUsUUFBUSxHQUFFLElBQUk7QUFBRSxnQkFBSSxLQUFHO0FBQUcsbUJBQUssT0FBSztBQUFHLG1CQUFHLEdBQUUsSUFBRSxFQUFFLFFBQVEsR0FBRSxHQUFHLE9BQU8sR0FBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBRSxnQkFBRSxFQUFFLFFBQVEsR0FBRSxFQUFFLEVBQUUsVUFBVTtBQUFFLGdCQUFJLElBQUUsdUJBQU8sT0FBTyxJQUFJLEdBQUUsS0FBRyxFQUFFLFFBQVEsR0FBRSxFQUFFLEVBQUUsUUFBUSxHQUFFLEVBQUUsRUFBRSxVQUFVLEdBQUU7QUFBRSxtQkFBSyxJQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUc7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRyxRQUFRLEdBQUUsRUFBRTtBQUFFLHFCQUFPLEVBQUUsRUFBRSxPQUFLLFlBQVUsTUFBTSxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUUsRUFBRSxFQUFFLE1BQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFJLENBQUMsSUFBRSxFQUFFLEVBQUUsTUFBSTtBQUFBLFlBQUM7QUFBQyxtQkFBTSxFQUFDLFVBQVMsSUFBRyxTQUFRLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLElBQUUsSUFBRyxTQUFRLEtBQUcsQ0FBQyxFQUFDLElBQUUsR0FBRSxLQUFHLEdBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxLQUFHLEVBQUUsRUFBRSxLQUFJLEtBQUcsT0FBTSxJQUFFLE1BQUssSUFBRSxPQUFNLElBQUUsT0FBTyxLQUFLLEVBQUUsR0FBRSxJQUFFLEVBQUUsSUFBSSxPQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFFLE9BQUssRUFBRSxPQUFPLEVBQUUsR0FBRSxDQUFDLENBQUMsRUFBRSxJQUFJLE9BQUcsSUFBRSxNQUFJLElBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUFFLGdCQUFHLENBQUMsR0FBRTtBQUFDLGtCQUFHLEVBQUUsV0FBUztBQUFFLHVCQUFNO0FBQUcsa0JBQUcsRUFBRSxXQUFTLEtBQUcsQ0FBQyxNQUFNLFFBQVEsR0FBRyxFQUFFLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxFQUFFO0FBQUksdUJBQU0sR0FBRyxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLE9BQUcsR0FBRyxPQUFPLEdBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUU7QUFBRSxtQkFBTyxLQUFHLEtBQUcsSUFBRSxLQUFHLE9BQUssS0FBRyxFQUFFLFNBQU8sSUFBRSxJQUFFLE1BQUksSUFBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxRQUFJLElBQUksT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyw0QkFBNEIsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxFQUFFLFFBQVEsSUFBSTtBQUFFLG1CQUFPLEtBQUcsSUFBRSxFQUFFLE9BQU8sSUFBRSxDQUFDLE1BQUk7QUFBQSxJQUM1MEQsU0FBTyxPQUFLO0FBQUEsVUFBSTtBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG9CQUFPO0FBQUEsbUJBQU87QUFBSyx1QkFBTTtBQUFBLG1CQUFTO0FBQU8sdUJBQU07QUFBQTtBQUFBO0FBQ3RFLHVCQUFNO0FBQUE7QUFBQTtBQUFBLFVBQ2Q7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJO0FBQUUsb0JBQU87QUFBQSxtQkFBTztBQUFBO0FBQ3JDLG9CQUFFO0FBQU07QUFBQSxtQkFBVTtBQUFLLG9CQUFFO0FBQU07QUFBQSxtQkFBVTtBQUFBO0FBQ3pDLG9CQUFFO0FBQVE7QUFBQTtBQUFjLHNCQUFNLElBQUksTUFBTSxvQkFBb0IsT0FBTyxLQUFLLFVBQVUsQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFBO0FBQUUsZ0JBQUksSUFBRSxFQUFFLE1BQU0sQ0FBQztBQUFFLG1CQUFPLElBQUUsRUFBRSxTQUFPO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsUUFBUSxVQUFTO0FBQUEsQ0FDeks7QUFBQSxVQUFDO0FBQUMsWUFBRSxVQUFRLEVBQUMsZ0JBQWUsR0FBRSx5QkFBd0IsR0FBRSxxQkFBb0IsR0FBRSxvQkFBbUIsRUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsNEJBQTRCLEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLGNBQUcsRUFBQyxtQkFBa0IsR0FBRSxPQUFNLEdBQUUsU0FBUSxHQUFFLE9BQU0sRUFBQyxJQUFFLEdBQUcsR0FBRSxFQUFDLG9CQUFtQixFQUFDLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsa0JBQUksSUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFPLENBQUM7QUFBRyxnQkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsU0FBUSxHQUFFLFVBQVMsRUFBQyxJQUFFLEVBQUUsQ0FBQztBQUFFLG1CQUFNLEVBQUMsU0FBUSxHQUFFLE1BQUssR0FBRSxTQUFRLEdBQUUsVUFBUyxFQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU87QUFBRSxtQkFBTyxFQUFFLFNBQVMsVUFBVSxLQUFHLEVBQUUsU0FBUyxRQUFRO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsU0FBUSxHQUFFLE1BQUssR0FBRSxTQUFRLEdBQUUsVUFBUyxFQUFDLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBQyxTQUFRLE9BQU8sT0FBTyxFQUFDLFFBQU8sR0FBRSxHQUFFLENBQUMsR0FBRSxVQUFTLEVBQUUsVUFBVSxFQUFDLENBQUM7QUFBRSxvQkFBTyxJQUFFLEdBQUcsT0FBTyxHQUFFO0FBQUEsQ0FDbG9CLElBQUUsTUFBSSxFQUFFLENBQUMsS0FBRyxFQUFFLFdBQVc7QUFBQSxDQUN6QixJQUFFO0FBQUEsSUFDRDtBQUFBO0FBQUEsS0FFQztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVEsRUFBQyxXQUFVLEdBQUUsY0FBYSxFQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyxrQ0FBa0MsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sTUFBTSxRQUFRLENBQUMsS0FBRyxFQUFFLFNBQU87QUFBQSxVQUFDO0FBQUMsWUFBRSxVQUFRO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyx5QkFBeUIsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsY0FBSSxJQUFFLEdBQUc7QUFBRSxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsa0JBQWlCLEVBQUMsSUFBRSxLQUFHLENBQUM7QUFBRSxnQkFBRyxDQUFDLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsZUFBYSxFQUFFLFlBQVksY0FBWSxFQUFFO0FBQVcsa0JBQUcsRUFBRSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxFQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsbUJBQU8sRUFBRSxRQUFNLEVBQUUsTUFBTSxLQUFHLEVBQUU7QUFBQSxVQUFLO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxRQUFNLEVBQUUsTUFBTSxLQUFHLEVBQUU7QUFBQSxVQUFHO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLG1CQUFPLE9BQU8sVUFBVSxDQUFDLEtBQUcsTUFBSSxFQUFFLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLG1CQUFPLE9BQU8sVUFBVSxDQUFDLEtBQUcsTUFBSSxFQUFFLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUEsVUFBQztBQUFDLFlBQUUsVUFBUSxFQUFDLFVBQVMsR0FBRSxRQUFPLEdBQUUsaUJBQWdCLEdBQUUsWUFBVyxFQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQywrQ0FBK0MsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsY0FBRyxFQUFDLFdBQVUsRUFBQyxJQUFFLEdBQUcsR0FBRSxFQUFDLFVBQVMsR0FBRSxRQUFPLEVBQUMsSUFBRSxHQUFHO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sSUFBRSxPQUFPLEtBQUcsYUFBVyxFQUFDLE9BQU0sRUFBQyxJQUFFLEdBQUUsT0FBTyxPQUFPLEVBQUMsV0FBVSxVQUFTLFdBQVUsR0FBRSxVQUFTLEdBQUUsUUFBTyxFQUFDLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLG9DQUFvQyxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsSUFBSSxZQUFZLElBQUUsT0FBSyxFQUFFLE1BQU0sT0FBSyxNQUFJLEVBQUUsTUFBTSxTQUFPLEdBQUc7QUFBRSxtQkFBTyxFQUFFLE1BQUksR0FBRTtBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLDBEQUEwRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsU0FBUSxHQUFFLEtBQUksRUFBQyxJQUFFO0FBQUUsbUJBQU8sRUFBRSxFQUFFLFFBQVEsV0FBVSxFQUFFLEdBQUUsRUFBQyxPQUFNLEVBQUMsTUFBSyxJQUFFLEVBQUUsT0FBSyxHQUFFLFFBQU8sSUFBRSxFQUFFLFNBQU8sSUFBRSxFQUFDLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLDhDQUE4QyxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBRyxFQUFDLE1BQUssRUFBQyxJQUFFO0FBQUUsbUJBQU8sRUFBRSxXQUFXLElBQUksS0FBRyxFQUFFLFNBQVMsU0FBUztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLDRDQUE0QyxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsb0JBQUksSUFBSSxDQUFDLFNBQVEsZ0JBQWUsV0FBVyxDQUFDLEdBQUUsSUFBRSxPQUFHLEVBQUUsSUFBSSxLQUFHLE9BQUssU0FBTyxFQUFFLElBQUk7QUFBRSxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLGdEQUFnRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsQ0FBQyxLQUFHLEVBQUUsTUFBTSxPQUFLLE9BQUssVUFBVSxLQUFLLEVBQUUsS0FBSztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHdCQUF3QixHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsT0FBRyxFQUFFLEVBQUUsU0FBTztBQUFHLFlBQUUsVUFBUTtBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsa0RBQWtELEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsTUFBTSxRQUFRLENBQUMsR0FBRTtBQUFDLHVCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTztBQUFJLGtCQUFFLEtBQUcsRUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFDLGdCQUFHLEtBQUcsT0FBTyxLQUFHLFlBQVUsT0FBTyxFQUFFLFFBQU0sVUFBUztBQUFDLGtCQUFJLElBQUUsT0FBTyxLQUFLLENBQUM7QUFBRSx1QkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBSSxrQkFBRSxFQUFFLE1BQUksRUFBRSxFQUFFLEVBQUUsS0FBSSxDQUFDO0FBQUUscUJBQU8sRUFBRSxDQUFDLEtBQUc7QUFBQSxZQUFDO0FBQUMsbUJBQU87QUFBQSxVQUFDO0FBQUMsWUFBRSxVQUFRO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQywwREFBMEQsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsY0FBSSxJQUFFLEdBQUc7QUFBRSxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsT0FBTSxHQUFFLEtBQUksRUFBQyxJQUFFLEVBQUU7QUFBSSxrQkFBTSxFQUFFLEdBQUUsRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFFLFNBQU8sRUFBQyxHQUFFLEtBQUksRUFBQyxNQUFLLEVBQUUsTUFBSyxRQUFPLEVBQUUsU0FBTyxFQUFDLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLGtEQUFrRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRztBQUFFLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUU7QUFBVyxnQkFBRyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQUU7QUFBTyxnQkFBSSxJQUFFLEVBQUU7QUFBVyxhQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBRyxFQUFFLFdBQVMsRUFBRSxVQUFRLEVBQUUsS0FBSyxPQUFHO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUksQ0FBQztBQUFFLHFCQUFNLENBQUMsS0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDO0FBQUEsWUFBQyxDQUFDLE1BQUksRUFBRSxHQUFFLDREQUE0RDtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGNBQUUsU0FBTyxPQUFLLEVBQUUsYUFBVyxDQUFDLEVBQUUsVUFBVSxLQUFLLE9BQUcsRUFBRSxTQUFPLEdBQUcsS0FBRyxFQUFFLGVBQWEsRUFBRSxVQUFRLFFBQU0sRUFBRSxHQUFFLDhDQUE4QztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsdUJBQXNCLEdBQUUsdUJBQXNCLEVBQUMsSUFBRSxFQUFFO0FBQWMsY0FBRSxHQUFFLE9BQUc7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBSSxDQUFDO0FBQUUsa0JBQUcsQ0FBQztBQUFFO0FBQU8sa0JBQUksSUFBRSxFQUFFLElBQUksQ0FBQztBQUFFLG9CQUFJLE1BQUksRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUEsWUFBRSxDQUFDO0FBQUEsVUFBQztBQUFDLFlBQUUsVUFBUSxFQUFDLDJCQUEwQixFQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyw2Q0FBNkMsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsY0FBRyxFQUFDLFVBQVMsR0FBRSxRQUFPLEVBQUMsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsRUFBQywyQkFBMEIsRUFBQyxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUc7QUFBRSxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUUsV0FBUyxnQkFBYyxhQUFhLEtBQUssRUFBRSxZQUFZLEtBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFdBQVMsZ0JBQWMsRUFBRSxXQUFTLFVBQVEsRUFBRSxXQUFTLFdBQVMsRUFBRSxXQUFTLFlBQVUsRUFBRSxXQUFTLFdBQVU7QUFBQyxrQkFBSSxJQUFFLG9CQUFJO0FBQUksa0JBQUUsRUFBRSxHQUFFLE9BQUc7QUFBQyxrQkFBRSxtQkFBaUIsRUFBRSxnQkFBZ0IsS0FBSyxDQUFDLEtBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsT0FBRztBQUFDLG9CQUFHLEVBQUUsU0FBTywyQkFBMEI7QUFBQyxzQkFBRyxFQUFDLFlBQVcsRUFBQyxJQUFFO0FBQUUsc0JBQUcsRUFBRSxTQUFPO0FBQXFCLDJCQUFPLEVBQUUsUUFBTSxFQUFFLE9BQU07QUFBRSxzQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLHNCQUFHLENBQUMsRUFBRSxJQUFJLENBQUM7QUFBRSwyQkFBTyxFQUFFLFFBQU0sT0FBTyxPQUFPLE9BQU8sT0FBTyxDQUFDLEdBQUUsRUFBRSxLQUFLLEdBQUUsQ0FBQyxHQUFFLEVBQUMsZUFBYyxLQUFFLENBQUMsR0FBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLG1CQUFPLElBQUUsRUFBRSxHQUFFLE9BQUc7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVU7QUFBa0IseUJBQU8sRUFBRSxFQUFFLFVBQVU7QUFBQSxxQkFBTSxxQkFBb0I7QUFBQyxzQkFBRyxFQUFFLENBQUM7QUFBRSwyQkFBTyxFQUFFLENBQUM7QUFBRTtBQUFBLGdCQUFLO0FBQUEscUJBQUssdUJBQXNCO0FBQUMsc0JBQUksSUFBRSxFQUFFLEVBQUUsWUFBWTtBQUFFLHVCQUFHLEVBQUUsUUFBTSxFQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsZ0JBQUs7QUFBQSxxQkFBSztBQUFzQix5QkFBTyxFQUFFLEVBQUUsY0FBYyxLQUFHLEVBQUUsZUFBZSxTQUFPLGlCQUFlLEVBQUUsZUFBZSxRQUFNLENBQUMsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsSUFBRyxFQUFFO0FBQUEscUJBQW1CO0FBQWtCLHNCQUFHLE9BQU8sRUFBRSxRQUFNLFVBQVM7QUFBQyx3QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLHNCQUFFLE9BQUssRUFBQyxNQUFLLGNBQWEsTUFBSyxFQUFFLE1BQUssT0FBTSxDQUFDLEdBQUUsSUFBRSxFQUFFLEtBQUssTUFBTSxFQUFDO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFVO0FBQW1CLHNCQUFHLEVBQUUsV0FBUyxjQUFhO0FBQUMsd0JBQUksSUFBRSxFQUFFLFdBQVcsS0FBSyxPQUFHLEVBQUUsU0FBTyxjQUFZLEVBQUUsTUFBTSxTQUFPLCtCQUErQjtBQUFFLHlCQUFHLEVBQUUsRUFBRSxPQUFNLG1CQUFtQjtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVSxzQkFBcUI7QUFBQyxzQkFBSSxJQUFFLEVBQUUsRUFBRSxXQUFXO0FBQUUsb0JBQUUsUUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUU7QUFBQSxnQkFBSztBQUFBLHFCQUFLO0FBQWlCLG9CQUFFLHdCQUFzQjtBQUFHO0FBQUEscUJBQVUsd0JBQXVCO0FBQUMsc0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRTtBQUFFLHNCQUFHLEVBQUUsV0FBUyxhQUFXLEtBQUcsRUFBRSxTQUFPLGNBQWE7QUFBQyx3QkFBSSxJQUFFLEVBQUUsYUFBYSxNQUFNLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUUscUJBQUMsRUFBRSxXQUFXLEdBQUcsS0FBRyxFQUFFLFdBQVcsR0FBRyxPQUFLLEVBQUUsV0FBUyxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRSxFQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsRUFBQyxNQUFLLFdBQVUsT0FBTSxFQUFFLFNBQVMsTUFBSyxLQUFJLEVBQUMsQ0FBQztBQUFBLGtCQUFFO0FBQUM7QUFBQSxnQkFBSztBQUFBO0FBQUEsWUFBRSxDQUFDLEdBQUU7QUFBRSxxQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLGFBQWEsRUFBRSxDQUFDLE9BQUssUUFBTSxFQUFFLFFBQU0sQ0FBQyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFBLFlBQUU7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQU8sRUFBRTtBQUFBLG1CQUFVO0FBQWlCLGtCQUFFLE9BQUssMEJBQXlCLEVBQUUsU0FBTyxFQUFFLEVBQUUsTUFBTTtBQUFFO0FBQUEsbUJBQVU7QUFBbUIsa0JBQUUsT0FBSyw0QkFBMkIsRUFBRSxTQUFPLEVBQUUsRUFBRSxNQUFNO0FBQUU7QUFBQSxtQkFBVTtBQUFzQixrQkFBRSxhQUFXLEVBQUUsRUFBRSxVQUFVO0FBQUU7QUFBQTtBQUFNLG1CQUFPO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsU0FBTyx1QkFBcUIsRUFBRSxNQUFNLFNBQU8sdUJBQXFCLEVBQUUsYUFBVyxFQUFFLE1BQU07QUFBQSxVQUFRO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxDQUFDLElBQUUsRUFBRSxFQUFDLE1BQUsscUJBQW9CLFVBQVMsRUFBRSxVQUFTLE1BQUssRUFBRSxFQUFDLE1BQUsscUJBQW9CLFVBQVMsRUFBRSxVQUFTLE1BQUssRUFBRSxNQUFLLE9BQU0sRUFBRSxNQUFNLE1BQUssT0FBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUUsRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUMsQ0FBQyxHQUFFLE9BQU0sRUFBRSxNQUFNLE9BQU0sT0FBTSxDQUFDLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFO0FBQUEsVUFBQztBQUFDLFlBQUUsVUFBUTtBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsMENBQTBDLEdBQUU7QUFBQztBQUFhLFlBQUUsR0FBRSxPQUFPLGVBQWUsR0FBRSxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEtBQUc7QUFBSyxxQkFBTSxDQUFDO0FBQUUsZ0JBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxPQUFPLEtBQUssQ0FBQyxHQUFFLEdBQUU7QUFBRSxpQkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBSSxrQkFBRSxFQUFFLElBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFHLE9BQUssRUFBRSxLQUFHLEVBQUU7QUFBSSxtQkFBTztBQUFBLFVBQUM7QUFBQyxjQUFJLElBQUUsTUFBSztBQUFBLFlBQUMsWUFBWSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFLLE9BQUssUUFBTyxLQUFLLFNBQU8sUUFBTyxLQUFLLFFBQU0sUUFBTyxLQUFLLE9BQUssR0FBRSxLQUFLLFNBQU8sR0FBRSxLQUFLLFFBQU07QUFBQSxZQUFDO0FBQUEsVUFBQyxHQUFFLElBQUUsTUFBSztBQUFBLFlBQUMsWUFBWSxHQUFFLEdBQUU7QUFBQyxtQkFBSyxRQUFNLFFBQU8sS0FBSyxNQUFJLFFBQU8sS0FBSyxXQUFTLFFBQU8sS0FBSyxpQkFBZSxRQUFPLEtBQUssUUFBTSxHQUFFLEtBQUssTUFBSTtBQUFBLFlBQUM7QUFBQSxVQUFDO0FBQUUsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRyxFQUFDLE1BQUssR0FBRSxRQUFPLEdBQUUsT0FBTSxFQUFDLElBQUU7QUFBRSxtQkFBTyxJQUFJLEVBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxDQUFDO0FBQUEsVUFBQztBQUFDLGNBQUksSUFBRSxPQUFPLE9BQU8sRUFBQyxhQUFZLDZCQUE0Qix1QkFBc0IsMENBQXlDLENBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLGdCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLEVBQUUsU0FBTztBQUFFLG1CQUFNLEVBQUMsTUFBSztBQUFDLHFCQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUUsTUFBSSxFQUFFLElBQUcsSUFBSTtBQUFBLFlBQUMsR0FBRSxJQUFJLEdBQUU7QUFBQyxnQkFBRSxPQUFPLENBQUMsR0FBRSxHQUFFLE1BQUksTUFBSSxJQUFFLEVBQUUsS0FBRyxJQUFFLEVBQUUsSUFBRyxJQUFJO0FBQUEsWUFBQyxFQUFDO0FBQUEsVUFBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsTUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLElBQUksT0FBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLE9BQUc7QUFBQyxnQkFBRyxDQUFDLEVBQUMsQ0FBQyxJQUFFO0FBQUUsbUJBQU0sQ0FBQyxDQUFDO0FBQUEsVUFBQyxDQUFDLEVBQUUsSUFBSSxPQUFHO0FBQUMsZ0JBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRTtBQUFFLG1CQUFNLENBQUMsR0FBRSxPQUFPLEtBQUcsYUFBVyxFQUFDLE9BQU0sR0FBRSxZQUFXLE1BQUUsSUFBRSxPQUFPLEVBQUUsV0FBUyxXQUFTLE9BQU8sT0FBTyxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsUUFBUSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUUsQ0FBQztBQUFBLFVBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBQyxnQkFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUUsbUJBQU8sT0FBTyxlQUFlLEdBQUUsR0FBRSxPQUFPLE9BQU8sRUFBQyxjQUFhLEtBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxVQUFDLEdBQUUsT0FBTyxPQUFPLElBQUksS0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFLFFBQUksRUFBQyx5QkFBd0IsRUFBRSwyREFBMEQsRUFBQyxNQUFLLEVBQUUsc0JBQXFCLENBQUMsR0FBRSxxQkFBb0IsRUFBRSxxRUFBb0UsRUFBQyxNQUFLLEVBQUUsc0JBQXFCLENBQUMsRUFBQyxJQUFHLElBQUUsRUFBQyxjQUFhLCtCQUE4QixzQkFBcUIseUJBQXdCLG1CQUFrQix5QkFBd0IseUJBQXdCLDZCQUE0Qix1QkFBc0IsMEJBQXlCLGdCQUFlLG9CQUFtQixnQkFBZSxvQkFBbUIsY0FBYSxZQUFXLGtCQUFpQiwyQkFBMEIsWUFBVyxjQUFhLGVBQWMsZ0NBQStCLHlCQUF3Qiw0QkFBMkIsYUFBWSxnQkFBZSxrQkFBaUIsRUFBQyxNQUFLLG9CQUFtQixPQUFNLG9CQUFtQixHQUFFLG9CQUFtQix3QkFBdUIsaUJBQWdCLG1CQUFrQixHQUFFLElBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsTUFBSyxHQUFFLFFBQU8sRUFBQyxJQUFFO0FBQUUsbUJBQU8sTUFBSSxxQkFBbUIsRUFBRSxpQkFBaUIsT0FBTyxDQUFDLEtBQUcsRUFBRTtBQUFBLFVBQUUsR0FBRSxJQUFFLFFBQUksRUFBQyxxQkFBb0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRTtBQUFFLG1CQUFNLEtBQUssT0FBTyxHQUFFLDRCQUE0QjtBQUFBLFVBQUMsQ0FBQyxHQUFFLGtCQUFpQixFQUFFLDZEQUE2RCxHQUFFLHVDQUFzQyxFQUFFLDBFQUEwRSxHQUFFLHdCQUF1QixFQUFFLDZEQUE2RCxHQUFFLHFDQUFvQyxFQUFFLDBEQUEwRCxHQUFFLGdDQUErQixFQUFFLHNEQUFzRCxHQUFFLHdCQUF1QixFQUFFLGtGQUFrRixHQUFFLHlCQUF3QixFQUFFLGlEQUFpRCxHQUFFLGdCQUFlLEVBQUUsc0RBQXNELEdBQUUsZ0JBQWUsRUFBRSx5REFBeUQsR0FBRSx3QkFBdUIsRUFBRSxpRUFBaUUsR0FBRSx1QkFBc0IsRUFBRSxtREFBbUQsR0FBRSw4QkFBNkIsRUFBRSw0REFBNEQsR0FBRSx1QkFBc0IsRUFBRSwyQ0FBMkMsR0FBRSxvQkFBbUIsRUFBRSx5Q0FBeUMsR0FBRSx3QkFBdUIsRUFBRSxtQ0FBbUMsR0FBRSwrQkFBOEIsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRTtBQUFFLG1CQUFNLDBCQUEwQixPQUFPLEdBQUUsZUFBZTtBQUFBLFVBQUMsQ0FBQyxHQUFFLHVCQUFzQixFQUFFLG1LQUFtSyxHQUFFLHNCQUFxQixFQUFFLGlGQUFpRixHQUFFLHNCQUFxQixFQUFFLGtIQUFrSCxHQUFFLG9CQUFtQixFQUFFLGlEQUFpRCxHQUFFLHNCQUFxQixFQUFFLCtDQUErQyxHQUFFLG9CQUFtQixFQUFFLDBDQUEwQyxHQUFFLHdCQUF1QixFQUFFLG9HQUFvRyxHQUFFLHNCQUFxQixFQUFFLDBDQUEwQyxHQUFFLHdCQUF1QixFQUFFLDZDQUE2QyxHQUFFLGlCQUFnQixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLFlBQVcsRUFBQyxJQUFFO0FBQUUsbUJBQU0sSUFBSSxPQUFPLEdBQUUsbUVBQW1FO0FBQUEsVUFBQyxDQUFDLEdBQUUsZ0JBQWUsRUFBRSxxQ0FBcUMsR0FBRSxzQkFBcUIsRUFBRSxvQ0FBb0MsR0FBRSxrQkFBaUIsRUFBRSxvQ0FBb0MsR0FBRSw0QkFBMkIsRUFBRSx5QkFBeUIsR0FBRSx1QkFBc0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxXQUFVLEdBQUUsWUFBVyxFQUFDLElBQUU7QUFBRSxtQkFBTSxxR0FBcUcsT0FBTyxHQUFFLFFBQVEsRUFBRSxPQUFPLEdBQUUsMEJBQTBCO0FBQUEsVUFBQyxDQUFDLEdBQUUsK0JBQThCLEVBQUUsZ0VBQWdFLEdBQUUsd0JBQXVCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsTUFBSyxFQUFDLElBQUU7QUFBRSxtQkFBTSxJQUFJLE9BQU8sTUFBSSxtQkFBaUIsV0FBUyxVQUFTLDBEQUEwRDtBQUFBLFVBQUMsQ0FBQyxHQUFFLFlBQVcsRUFBRSx5REFBeUQsR0FBRSxVQUFTLEVBQUUsK0RBQStELEdBQUUsbUNBQWtDLEVBQUUscUVBQXFFLEdBQUUsc0JBQXFCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsTUFBSyxFQUFDLElBQUU7QUFBRSxtQkFBTSxlQUFlLE9BQU8sTUFBSSxtQkFBaUIsVUFBUSxZQUFXLEdBQUc7QUFBQSxVQUFDLENBQUMsR0FBRSw4QkFBNkIsRUFBRSw0RUFBNEUsR0FBRSxlQUFjLEVBQUUsK0JBQStCLEdBQUUsdUJBQXNCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsWUFBVyxFQUFDLElBQUU7QUFBRSxtQkFBTSxzRkFBc0YsT0FBTyxHQUFFLGNBQWM7QUFBQSxVQUFDLENBQUMsR0FBRSxpQ0FBZ0MsRUFBRSw0REFBNEQsR0FBRSxpQkFBZ0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxrQkFBaUIsRUFBQyxJQUFFO0FBQUUsbUJBQU0sK0JBQStCLE9BQU8sTUFBSSxJQUFFLGlCQUFlLHdCQUF1QixHQUFHO0FBQUEsVUFBQyxDQUFDLEdBQUUsNEJBQTJCLEVBQUUsa0NBQWtDLEdBQUUsMEJBQXlCLEVBQUUscUNBQXFDLEdBQUUsMkJBQTBCLEVBQUUsOEVBQThFLEdBQUUsc0JBQXFCLEVBQUUsd0JBQXdCLEdBQUUsa0JBQWlCLEVBQUUsMkJBQTJCLEdBQUUsNkJBQTRCLEVBQUUseUNBQXlDLEdBQUUsZ0JBQWUsRUFBRSxrQkFBa0IsR0FBRSxjQUFhLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsT0FBTSxFQUFDLElBQUU7QUFBRSxtQkFBTSw0QkFBNEIsT0FBTyxHQUFFLEdBQUc7QUFBQSxVQUFDLENBQUMsR0FBRSx1QkFBc0IsRUFBRSxnQ0FBZ0MsR0FBRSwrQkFBOEIsRUFBRSxzQ0FBc0MsR0FBRSw0QkFBMkIsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxjQUFhLEVBQUMsSUFBRTtBQUFFLG1CQUFNLDhCQUE4QixPQUFPLEdBQUUsR0FBRztBQUFBLFVBQUMsQ0FBQyxHQUFFLG1CQUFrQixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLGdCQUFlLEVBQUMsSUFBRTtBQUFFLG1CQUFNLHNCQUFzQixPQUFPLEdBQUUsR0FBRztBQUFBLFVBQUMsQ0FBQyxHQUFFLFlBQVcsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRTtBQUFFLG1CQUFNLDZCQUE2QixPQUFPLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxVQUFDLENBQUMsR0FBRSxtQkFBa0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRTtBQUFFLG1CQUFNLHFDQUFxQyxPQUFPLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxVQUFDLENBQUMsR0FBRSxlQUFjLEVBQUUsaUJBQWlCLEdBQUUsMEJBQXlCLEVBQUUsZ0VBQWdFLEdBQUUsMEJBQXlCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsWUFBVyxFQUFDLElBQUU7QUFBRSxtQkFBTSx5QkFBeUIsT0FBTyxHQUFFLElBQUk7QUFBQSxVQUFDLENBQUMsR0FBRSxnQ0FBK0IsRUFBRSwyQ0FBMkMsR0FBRSwrQkFBOEIsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxnQkFBZSxFQUFDLElBQUU7QUFBRSxtQkFBTSxpQkFBaUIsT0FBTyxHQUFFLGtCQUFrQjtBQUFBLFVBQUMsQ0FBQyxHQUFFLCtCQUE4QixFQUFFLDRCQUE0QixHQUFFLHVCQUFzQixFQUFFLHdFQUF3RSxHQUFFLDhCQUE2QixFQUFFLG1DQUFtQyxHQUFFLG9CQUFtQixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLFdBQVUsRUFBQyxJQUFFO0FBQUUsbUJBQU0sVUFBVSxPQUFPLEdBQUUsd0JBQXdCO0FBQUEsVUFBQyxDQUFDLEdBQUUscUJBQW9CLEVBQUUsNkVBQTZFLEdBQUUsMkJBQTBCLEVBQUUsdUNBQXVDLEdBQUUsc0JBQXFCLEVBQUUsa0NBQWtDLEdBQUUsa0JBQWlCLEVBQUUsMkJBQTJCLEdBQUUsdUJBQXNCLEVBQUUsNkRBQTZELEdBQUUsa0JBQWlCLEVBQUUsb0JBQW9CLEdBQUUsZUFBYyxFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLGVBQWMsRUFBQyxJQUFFO0FBQUUsbUJBQU0saUVBQWlFLE9BQU8sRUFBRSxJQUFJLE9BQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxHQUFFLEdBQUc7QUFBQSxVQUFDLENBQUMsR0FBRSxxQkFBb0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxlQUFjLEVBQUMsSUFBRTtBQUFFLG1CQUFNLHFGQUFxRixPQUFPLEVBQUUsSUFBSSxPQUFHLEtBQUssVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksR0FBRSxHQUFHO0FBQUEsVUFBQyxDQUFDLEdBQUUsc0JBQXFCLEVBQUUsNENBQTRDLEdBQUUsMkJBQTBCLEVBQUUscUZBQXFGLEdBQUUsa0NBQWlDLEVBQUUsK0NBQStDLEdBQUUsNkJBQTRCLEVBQUUsOERBQThELEdBQUUsbUNBQWtDLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsS0FBSSxFQUFDLElBQUU7QUFBRSxtQkFBTSxrQkFBa0IsT0FBTyxHQUFFLHdDQUF3QztBQUFBLFVBQUMsQ0FBQyxHQUFFLGtDQUFpQyxFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLG1CQUFrQixFQUFDLElBQUU7QUFBRSxtQkFBTSw2REFBNkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFFLElBQUk7QUFBQSxVQUFDLENBQUMsR0FBRSx1QkFBc0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxXQUFVLEVBQUMsSUFBRTtBQUFFLG1CQUFNLFdBQVcsT0FBTyxHQUFFLG1CQUFtQjtBQUFBLFVBQUMsQ0FBQyxHQUFFLDBCQUF5QixFQUFFLDJCQUEyQixHQUFFLG1CQUFrQixFQUFFLDhCQUE4QixHQUFFLGtCQUFpQixFQUFFLGtDQUFrQyxHQUFFLGtCQUFpQixFQUFFLG1DQUFtQyxHQUFFLGtDQUFpQyxFQUFFLDZGQUE2RixHQUFFLG1CQUFrQixFQUFFLHlGQUF5RixHQUFFLHVCQUFzQixFQUFFLDBEQUEwRCxHQUFFLDRCQUEyQixFQUFFLDREQUE0RCxHQUFFLHVCQUFzQixFQUFFLGlFQUFpRSxHQUFFLFdBQVUsRUFBRSxzQkFBc0IsR0FBRSxvQkFBbUIsRUFBRSxnREFBZ0QsR0FBRSxrQkFBaUIsRUFBRSx1Q0FBdUMsR0FBRSxxQkFBb0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxnQkFBZSxFQUFDLElBQUU7QUFBRSxtQkFBTSw4REFBOEQsT0FBTyxHQUFFLCtCQUErQixFQUFFLE9BQU8sR0FBRSxZQUFZO0FBQUEsVUFBQyxDQUFDLEdBQUUsMEJBQXlCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsZ0JBQWUsRUFBQyxJQUFFO0FBQUUsbUJBQU0sMkJBQTJCLE9BQU8sR0FBRSxHQUFHO0FBQUEsVUFBQyxDQUFDLEdBQUUsMkNBQTBDLEVBQUUsbUlBQW1JLEdBQUUsNkNBQTRDLEVBQUUscUlBQXFJLEdBQUUsOENBQTZDLEVBQUUsc0lBQXNJLEdBQUUsZUFBYyxFQUFFLG1EQUFtRCxHQUFFLG1CQUFrQixFQUFFLCtDQUErQyxHQUFFLGdCQUFlLEVBQUUsMEhBQTBILEdBQUUsaUJBQWdCLEVBQUUsdURBQXVELEdBQUUsaUJBQWdCLEVBQUUsbUpBQW1KLEdBQUUsbUJBQWtCLEVBQUUsNENBQTRDLEdBQUUsbUJBQWtCLEVBQUUsaURBQWlELEdBQUUsMENBQXlDLEVBQUUsa0lBQWtJLEdBQUUsNENBQTJDLEVBQUUsb0lBQW9JLEdBQUUsNkNBQTRDLEVBQUUscUlBQXFJLEdBQUUsK0JBQThCLEVBQUUsa0NBQWtDLEdBQUUsa0NBQWlDLEVBQUUsMEZBQTBGLEdBQUUsMEJBQXlCLEVBQUUsb0NBQW9DLEdBQUUsd0JBQXVCLEVBQUUseURBQXlELEdBQUUsbUJBQWtCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsU0FBUSxFQUFDLElBQUU7QUFBRSxtQkFBTSx1QkFBdUIsT0FBTyxHQUFFLElBQUk7QUFBQSxVQUFDLENBQUMsR0FBRSw0QkFBMkIsRUFBRSw2REFBNkQsR0FBRSw4QkFBNkIsRUFBRSxrRUFBa0UsR0FBRSxxQkFBb0IsRUFBRSxpRUFBaUUsR0FBRSw0QkFBMkIsRUFBRSx5REFBeUQsR0FBRSx3QkFBdUIsRUFBRSwwQkFBMEIsR0FBRSx3QkFBdUIsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxjQUFhLEVBQUMsSUFBRTtBQUFFLG1CQUFNLDZCQUE2QixPQUFPLEdBQUUsSUFBSTtBQUFBLFVBQUMsQ0FBQyxHQUFFLGlCQUFnQixFQUFFLHdEQUF3RCxHQUFFLGlCQUFnQixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLFVBQVMsR0FBRSxZQUFXLEVBQUMsSUFBRTtBQUFFLG1CQUFNLG1CQUFtQixPQUFPLElBQUUsS0FBSyxPQUFPLEdBQUUsSUFBSSxJQUFFLEVBQUUsRUFBRSxPQUFPLElBQUUsZUFBZSxPQUFPLEdBQUUsR0FBRyxJQUFFLEVBQUU7QUFBQSxVQUFDLENBQUMsR0FBRSxvQ0FBbUMsRUFBRSxrRkFBa0YsR0FBRSxpQkFBZ0IsRUFBRSxpREFBaUQsR0FBRSw0QkFBMkIsRUFBRSxxREFBcUQsR0FBRSwwQkFBeUIsRUFBRSw2RUFBNkUsR0FBRSxtQkFBa0IsRUFBRSwyREFBMkQsR0FBRSx5QkFBd0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxRQUFPLEdBQUUsdUJBQXNCLEVBQUMsSUFBRTtBQUFFLG1CQUFNLG9DQUFvQyxPQUFPLEdBQUUsTUFBTSxFQUFFLE9BQU8sR0FBRSxHQUFHLEVBQUUsT0FBTyxHQUFFLEdBQUc7QUFBQSxVQUFDLENBQUMsR0FBRSwrQkFBOEIsRUFBRSxtREFBbUQsR0FBRSw4QkFBNkIsRUFBRSxrRUFBa0UsR0FBRSxrQkFBaUIsRUFBRSx1SEFBdUgsR0FBRSxxQkFBb0IsRUFBRSx1QkFBdUIsR0FBRSxvQkFBbUIsRUFBRSxrQ0FBa0MsR0FBRSxvQkFBbUIsRUFBRSwrQkFBK0IsR0FBRSxzQkFBcUIsRUFBRSx3QkFBd0IsR0FBRSxrQkFBaUIsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxnQkFBZSxFQUFDLElBQUU7QUFBRSxtQkFBTSxlQUFlLE9BQU8sR0FBRSw4QkFBOEI7QUFBQSxVQUFDLENBQUMsR0FBRSx3QkFBdUIsRUFBRSx1REFBdUQsR0FBRSxrQkFBaUIsRUFBRSx1REFBdUQsR0FBRSwyQkFBMEIsRUFBRSxvREFBb0QsRUFBQyxJQUFHLElBQUUsUUFBSSxFQUFDLGNBQWEsRUFBRSx5Q0FBeUMsR0FBRSxxQkFBb0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxlQUFjLEVBQUMsSUFBRTtBQUFFLG1CQUFNLGlCQUFpQixPQUFPLEdBQUUsbUJBQW1CO0FBQUEsVUFBQyxDQUFDLEdBQUUsNEJBQTJCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsYUFBWSxFQUFDLElBQUU7QUFBRSxtQkFBTSxZQUFZLE9BQU8sR0FBRSxtQkFBbUI7QUFBQSxVQUFDLENBQUMsR0FBRSxnQkFBZSxFQUFFLHFGQUFxRixHQUFFLHFCQUFvQixFQUFFLHdEQUF3RCxHQUFFLG9CQUFtQixFQUFFLHVEQUF1RCxHQUFFLFlBQVcsRUFBRSx3QkFBd0IsRUFBQyxJQUFHLElBQUUsb0JBQUksSUFBSSxDQUFDLDJCQUEwQix3QkFBdUIseUJBQXdCLGlCQUFpQixDQUFDLEdBQUUsSUFBRSxRQUFJLEVBQUMsbUJBQWtCLEVBQUUsdUpBQXVKLEdBQUUsNEJBQTJCLEVBQUUsaUhBQWlILEdBQUUsa0JBQWlCLEVBQUUsNERBQTRELEdBQUUsNEJBQTJCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsT0FBTSxFQUFDLElBQUU7QUFBRSxtQkFBTSx1QkFBdUIsT0FBTyxHQUFFLG9CQUFvQixFQUFFLE9BQU8sR0FBRSxrSEFBa0gsRUFBRSxPQUFPLEdBQUUsTUFBTTtBQUFBLFVBQUMsQ0FBQyxHQUFFLGlCQUFnQixFQUFFLHlHQUF5RyxHQUFFLHlCQUF3QixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLE1BQUssRUFBQyxJQUFFO0FBQUUsbUJBQU0scURBQXFELE9BQU8sRUFBRSxFQUFDLE1BQUssRUFBQyxDQUFDLEdBQUUsa0NBQWtDO0FBQUEsVUFBQyxDQUFDLEdBQUUscUJBQW9CLEVBQUUsbUdBQW1HLEdBQUUsZ0NBQStCLEVBQUUsaUVBQWlFLEdBQUUsZ0NBQStCLEVBQUUsb0VBQW9FLEdBQUUscUJBQW9CLEVBQUUsOERBQThELEdBQUUsd0JBQXVCLEVBQUUsc0VBQXNFLEdBQUUsbUNBQWtDLEVBQUUsaUhBQWlILEVBQUMsSUFBRyxJQUFFLENBQUMsV0FBVztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsV0FBVSxFQUFDLElBQUUsR0FBRSxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsbUJBQU8sU0FBUyxFQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFDLEtBQUksR0FBRSxTQUFRLEVBQUMsSUFBRTtBQUFFLHFCQUFPLEVBQUUsYUFBWSxPQUFPLE9BQU8sQ0FBQyxHQUFFLEdBQUUsRUFBQyxLQUFJLEVBQUMsQ0FBQyxHQUFFLEVBQUMsUUFBTztBQUFDLG9CQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsT0FBSyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxFQUFDLEtBQUksSUFBSSxFQUFFLFVBQVMsSUFBRSxFQUFFLE9BQUssS0FBSyxJQUFJLE1BQUssWUFBVyxJQUFFLEVBQUUsU0FBTyxLQUFLLElBQUksUUFBTyxXQUFVLElBQUUsRUFBRSxRQUFNLEtBQUssSUFBSSxLQUFLLEdBQUUsU0FBUSxPQUFPLE9BQU8sQ0FBQyxHQUFFLEtBQUssU0FBUSxFQUFFLE9BQU8sRUFBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLFNBQVEsRUFBQyxPQUFNLEdBQUUsWUFBVyxNQUFFLEdBQUUsU0FBUSxFQUFDLE1BQUs7QUFBQyx1QkFBTSxHQUFHLE9BQU8sRUFBRSxLQUFLLE9BQU8sR0FBRSxJQUFJLEVBQUUsT0FBTyxLQUFLLElBQUksTUFBSyxHQUFHLEVBQUUsT0FBTyxLQUFLLElBQUksUUFBTyxHQUFHO0FBQUEsY0FBQyxHQUFFLElBQUksR0FBRTtBQUFDLHVCQUFPLGVBQWUsTUFBSyxXQUFVLEVBQUMsT0FBTSxFQUFDLENBQUM7QUFBQSxjQUFDLEVBQUMsR0FBRSxLQUFJLEVBQUMsU0FBUSxhQUFZLFlBQVcsS0FBRSxHQUFFLGVBQWMsbUJBQWtCLEtBQUcsRUFBQyxTQUFRLHlCQUF3QixZQUFXLEtBQUUsRUFBQyxDQUFDO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFPLE9BQU8sT0FBTyxFQUFDLFdBQVUsT0FBTyxLQUFHLFdBQVMsTUFBSSxJQUFFLEVBQUMsR0FBRSxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsTUFBTSxRQUFRLENBQUM7QUFBRSxxQkFBTyxPQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBRSxnQkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQztBQUFFLHFCQUFRLEtBQUssT0FBTyxLQUFLLENBQUM7QUFBRSxnQkFBRSxLQUFHLEVBQUUsT0FBTyxPQUFPLEVBQUMsTUFBSyxFQUFFLGFBQVksWUFBVyxFQUFDLEdBQUUsSUFBRSxFQUFDLGNBQWEsRUFBQyxJQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLG1CQUFPO0FBQUEsVUFBQztBQUFDLGNBQUksSUFBRSxPQUFPLE9BQU8sQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxLQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxnQkFBZSxFQUFDLElBQUUsUUFBTyxLQUFHLENBQUMsR0FBRSxNQUFJLEVBQUUsR0FBRSxHQUFFLEVBQUMsWUFBVyxPQUFHLE9BQU0sRUFBRSxHQUFFLENBQUM7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxtQkFBTyxHQUFHLEVBQUUsSUFBSSxPQUFNLE9BQU8sR0FBRSxHQUFHLEVBQUUsSUFBSSxLQUFJLE9BQU8sR0FBRTtBQUFBLFVBQUM7QUFBQyxjQUFJLEtBQUcsT0FBRyxjQUFjLEVBQUM7QUFBQSxZQUFDLFFBQU87QUFBQyxrQkFBSSxJQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFBRSxxQkFBTyxLQUFLLFFBQVEsV0FBUyxFQUFFLFNBQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFHO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQW1CLEdBQUU7QUFBQyxrQkFBRyxFQUFDLFNBQVEsR0FBRSxPQUFNLEVBQUMsSUFBRSxHQUFFLElBQUU7QUFBSyxrQkFBRztBQUFDLG9CQUFFLElBQUksT0FBTyxHQUFFLENBQUM7QUFBQSxjQUFDLFFBQUM7QUFBQSxjQUFNO0FBQUMsa0JBQUksSUFBRSxLQUFLLG1CQUFtQixDQUFDO0FBQUUscUJBQU8sRUFBRSxRQUFNLEVBQUMsU0FBUSxHQUFFLE9BQU0sRUFBQyxHQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQW1CLEdBQUU7QUFBQyxrQkFBSTtBQUFFLGtCQUFHO0FBQUMsb0JBQUUsT0FBTyxDQUFDO0FBQUEsY0FBQyxRQUFDO0FBQU0sb0JBQUU7QUFBQSxjQUFJO0FBQUMsa0JBQUksSUFBRSxLQUFLLG1CQUFtQixDQUFDO0FBQUUscUJBQU8sRUFBRSxTQUFPLE9BQU8sRUFBRSxTQUFPLENBQUMsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFvQixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLG1CQUFtQixJQUFJO0FBQUUscUJBQU8sRUFBRSxVQUFRLE9BQU8sRUFBRSxTQUFPLENBQUMsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFtQixHQUFFO0FBQUMscUJBQU8sS0FBSyxhQUFhLEdBQUUsU0FBUztBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFtQixHQUFFO0FBQUMscUJBQU8sS0FBSyxtQkFBbUIsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFvQixHQUFFO0FBQUMscUJBQU8sS0FBSyxtQkFBbUIsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLHFCQUFPLEtBQUssbUJBQW1CLElBQUk7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRTtBQUFDLHFCQUFPLEtBQUssbUJBQW1CLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxPQUFNLElBQUUsS0FBSyxZQUFZLEVBQUUsT0FBTSxFQUFFLElBQUksS0FBSyxHQUFFLElBQUUsS0FBSyxZQUFZLEVBQUUsT0FBTSxFQUFFLElBQUksS0FBSztBQUFFLHFCQUFPLEVBQUUsUUFBTSxFQUFFLE1BQU0saUJBQWdCLEVBQUUsTUFBSSxFQUFFLE1BQU0sS0FBSSxFQUFFLGFBQVcsS0FBSyxhQUFhLEdBQUUsV0FBVSxFQUFFLElBQUksR0FBRyxHQUFFLEVBQUUsWUFBVSxFQUFFLE1BQU0sSUFBSSxNQUFNLEdBQUUsRUFBRSxHQUFFLEtBQUssYUFBYSxHQUFFLHVCQUFzQixFQUFFLElBQUksR0FBRztBQUFBLFlBQUM7QUFBQSxZQUFDLGFBQWEsR0FBRSxHQUFFO0FBQUMsb0JBQU0sYUFBYSxHQUFFLENBQUMsR0FBRSxFQUFFLGFBQVc7QUFBQSxZQUFFO0FBQUEsWUFBQyxpQkFBaUIsR0FBRTtBQUFDLG1CQUFHLFFBQU0sS0FBSyxpQkFBaUIsQ0FBQyxJQUFFLEtBQUssaUJBQWlCLEVBQUUsS0FBSyxJQUFFLE1BQU0saUJBQWlCLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyw2QkFBNkIsR0FBRTtBQUFDLHFCQUFPLEVBQUUsTUFBTTtBQUFBLFlBQU07QUFBQSxZQUFDLGlCQUFpQixHQUFFO0FBQUMsa0JBQUk7QUFBRSxxQkFBTyxFQUFFLFNBQU8seUJBQXVCLEVBQUUsV0FBVyxTQUFPLGFBQVcsT0FBTyxFQUFFLFdBQVcsU0FBTyxZQUFVLEdBQUcsSUFBRSxFQUFFLFdBQVcsVUFBUSxRQUFNLEVBQUU7QUFBQSxZQUFjO0FBQUEsWUFBQyxlQUFlLEdBQUU7QUFBQyx1QkFBUSxJQUFFLFVBQVUsUUFBTyxJQUFFLElBQUksTUFBTSxJQUFFLElBQUUsSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksa0JBQUUsSUFBRSxLQUFHLFVBQVU7QUFBRyxvQkFBTSxlQUFlLEdBQUUsR0FBRyxDQUFDO0FBQUUsa0JBQUksSUFBRSxFQUFFLFdBQVcsSUFBSSxPQUFHLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztBQUFFLGdCQUFFLE9BQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFFLE9BQU8sRUFBRTtBQUFBLFlBQVU7QUFBQSxZQUFDLGdCQUFnQixHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFLLFlBQVksR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLGVBQWMsSUFBRSxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxpQkFBZSxFQUFFLGdCQUFlLE9BQU8sRUFBRSxpQkFBZ0IsRUFBRSxLQUFLLEtBQUssQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLGtCQUFJLElBQUUsTUFBTSxpQkFBaUI7QUFBRSxxQkFBTyxLQUFLLGdCQUFnQixVQUFTLGVBQWUsSUFBRSxLQUFLLHNDQUFzQyxDQUFDLElBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxzQ0FBc0MsR0FBRTtBQUFDLGtCQUFJLElBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUFFLHFCQUFPLElBQUUsR0FBRSxPQUFPLEVBQUUsSUFBRyxFQUFFLE9BQUssR0FBRSxFQUFFLE9BQUsscUJBQW9CO0FBQUEsWUFBQztBQUFBLFlBQUMsY0FBYyxHQUFFO0FBQUMscUJBQU8sS0FBSyxnQkFBZ0IsVUFBUyxlQUFlLElBQUUsRUFBRSxTQUFPLHNCQUFvQixNQUFNLGNBQWMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFO0FBQUMscUJBQU8sS0FBSyxnQkFBZ0IsVUFBUyxlQUFlLElBQUUsRUFBRSxPQUFLLE1BQU0saUJBQWlCLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxhQUFhLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsTUFBTSxhQUFhLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsTUFBSSxFQUFFLE1BQU0sS0FBSSxPQUFPLEVBQUUsT0FBTTtBQUFBLFlBQUM7QUFBQSxZQUFDLGtCQUFrQixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRztBQUFHLG9CQUFNLGtCQUFrQixHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsYUFBVyxFQUFFLEtBQUssU0FBTztBQUFBLFlBQWdCO0FBQUEsWUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsT0FBRyxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsT0FBSyxFQUFFLE1BQUssSUFBRSxNQUFNLFlBQVksR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsT0FBSyxzQkFBcUIsT0FBTyxFQUFFLE1BQUssRUFBRSxRQUFNLEdBQUUsTUFBSSx5QkFBdUIsRUFBRSxXQUFTLFFBQUksSUFBRSxvQkFBbUIsS0FBSyxXQUFXLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFvQjtBQUFDLGtCQUFJLElBQUUsTUFBTSxtQkFBbUIsR0FBRyxTQUFTO0FBQUUscUJBQU8sS0FBSyxnQkFBZ0IsVUFBUyxlQUFlLE1BQUksRUFBRSxPQUFLLHVCQUFzQjtBQUFBLFlBQUM7QUFBQSxZQUFDLDRCQUEyQjtBQUFDLGtCQUFJLElBQUUsTUFBTSwwQkFBMEIsR0FBRyxTQUFTO0FBQUUscUJBQU8sS0FBSyxnQkFBZ0IsVUFBUyxlQUFlLE1BQUksRUFBRSxPQUFLLHNCQUFxQixFQUFFLFdBQVMsUUFBSTtBQUFBLFlBQUM7QUFBQSxZQUFDLGtCQUFrQixHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLE1BQU0sa0JBQWtCLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLHFCQUFPLE1BQUksRUFBRSxPQUFLLFlBQVcsRUFBRSxTQUFPLGFBQVcsRUFBRSxPQUFLLFNBQVEsRUFBRSxZQUFVLFFBQUk7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxNQUFNLG9CQUFvQixHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxxQkFBTyxNQUFJLEVBQUUsT0FBSyxRQUFPLEVBQUUsT0FBSyxhQUFZO0FBQUEsWUFBQztBQUFBLFlBQUMsWUFBWSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxVQUFVLFFBQU8sSUFBRSxJQUFJLE1BQU0sSUFBRSxJQUFFLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRTtBQUFJLGtCQUFFLElBQUUsS0FBRyxVQUFVO0FBQUcscUJBQU8sTUFBSSxhQUFXLFVBQVEsTUFBTSxZQUFZLEdBQUUsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsYUFBYSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxLQUFHLFFBQU0sS0FBSyxpQkFBaUIsQ0FBQyxJQUFFLEtBQUssYUFBYSxFQUFFLE9BQU0sQ0FBQyxJQUFFLE1BQU0sYUFBYSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxhQUFhLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRztBQUFHLGtCQUFHLEtBQUcsUUFBTSxLQUFLLGlCQUFpQixDQUFDLEdBQUU7QUFBQyxvQkFBRyxFQUFDLEtBQUksR0FBRSxPQUFNLEVBQUMsSUFBRTtBQUFFLHFCQUFLLGNBQWMsQ0FBQyxLQUFHLEtBQUssV0FBVyxlQUFlLEtBQUssaUJBQWlCLENBQUMsR0FBRSxFQUFFLElBQUksS0FBSyxHQUFFLEtBQUssYUFBYSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQU0sc0JBQU0sYUFBYSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQ0FBaUMsR0FBRTtBQUFDLGdCQUFFLFNBQU8sU0FBTyxFQUFFLFNBQU8sUUFBTSxLQUFLLE1BQU0sRUFBRSxvQkFBbUIsRUFBQyxJQUFHLEVBQUUsSUFBRyxDQUFDLElBQUUsRUFBRSxTQUFPLEtBQUssTUFBTSxFQUFFLGtCQUFpQixFQUFDLElBQUcsRUFBRSxJQUFHLENBQUMsSUFBRSxNQUFNLGlDQUFpQyxHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUEsWUFBQyxxQkFBcUIsR0FBRSxHQUFFO0FBQUMsa0JBQUcsTUFBTSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsRUFBRSxPQUFPLFNBQU8sVUFBUztBQUFDLG9CQUFHLEVBQUUsT0FBSyxvQkFBbUIsRUFBRSxTQUFPLEVBQUUsVUFBVSxJQUFHLEtBQUssVUFBVSxrQkFBa0IsR0FBRTtBQUFDLHNCQUFJO0FBQUUsb0JBQUUsY0FBWSxJQUFFLEVBQUUsVUFBVSxPQUFLLE9BQUssSUFBRTtBQUFBLGdCQUFJO0FBQUMsdUJBQU8sRUFBRSxXQUFVLE9BQU8sRUFBRTtBQUFBLGNBQU07QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLHNCQUFzQixHQUFFO0FBQUMsZ0JBQUUsU0FBTyxzQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLHNCQUFPLE1BQU0sWUFBWSxDQUFDLEdBQUUsRUFBRTtBQUFBLHFCQUFVO0FBQXVCLG9CQUFFLFdBQVM7QUFBSztBQUFBLHFCQUFVO0FBQXlCLG9CQUFFLFdBQVcsV0FBUyxLQUFHLEVBQUUsV0FBVyxHQUFHLFNBQU8sK0JBQTZCLEVBQUUsT0FBSyx3QkFBdUIsRUFBRSxXQUFTLEVBQUUsV0FBVyxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQVk7QUFBQTtBQUFNLHFCQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMsZUFBZSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLE1BQU0sZUFBZSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxrQkFBRyxFQUFFLHFCQUFvQjtBQUFDLHFCQUFJLEVBQUUsU0FBTyw4QkFBNEIsRUFBRSxTQUFPLDhCQUE0QixFQUFFLE9BQUssRUFBRSxLQUFLLFVBQVUsQ0FBQyxJQUFHLEVBQUUsTUFBSztBQUFDLHNCQUFJLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLHlCQUFPLEVBQUUsYUFBVyxHQUFFLEtBQUssV0FBVyxHQUFFLGlCQUFpQjtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFLLGlCQUFDLEVBQUUsU0FBTyxzQkFBb0IsRUFBRSxTQUFPLHNCQUFvQixFQUFFLFdBQVM7QUFBSSxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLHlCQUF5QixHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLHNCQUFvQixJQUFFLEVBQUUsYUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWdCLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU87QUFBQSxZQUFpQjtBQUFBLFlBQUMsaUJBQWlCLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sY0FBWSxFQUFFLFNBQU8sVUFBUSxDQUFDLEVBQUU7QUFBQSxZQUFNO0FBQUEsWUFBQyxlQUFlLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFVBQVEsRUFBRSxTQUFPLFNBQU8sRUFBRSxTQUFPO0FBQUEsWUFBSztBQUFBLFlBQUMsYUFBYSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsTUFBTSxhQUFhLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQkFBaUIsR0FBRTtBQUFDLGtCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLEtBQUssTUFBTTtBQUFjLG9CQUFNLGlCQUFpQixHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQyxHQUFFLElBQUUsTUFBSztBQUFBLFlBQUMsWUFBWSxHQUFFLEdBQUU7QUFBQyxtQkFBSyxRQUFNLFFBQU8sS0FBSyxnQkFBYyxRQUFPLEtBQUssUUFBTSxHQUFFLEtBQUssZ0JBQWMsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRSxJQUFFLEVBQUMsT0FBTSxJQUFJLEVBQUUsR0FBRyxHQUFFLFFBQU8sSUFBSSxFQUFFLE1BQU0sR0FBRSxRQUFPLElBQUksRUFBRSxPQUFPLEdBQUUsUUFBTyxJQUFJLEVBQUUsa0JBQWlCLElBQUUsRUFBQztBQUFFLFlBQUUsV0FBUyxJQUFJLEVBQUUsS0FBSSxJQUFFO0FBQUUsY0FBSSxJQUFFLE1BQUcsSUFBRSxNQUFHLEtBQUcsTUFBRyxJQUFFLE1BQUcsS0FBRyxNQUFHLEtBQUcsTUFBRyxLQUFHLE1BQUs7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLGtCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUM7QUFBRSxtQkFBSyxRQUFNLFFBQU8sS0FBSyxVQUFRLFFBQU8sS0FBSyxhQUFXLFFBQU8sS0FBSyxhQUFXLFFBQU8sS0FBSyxtQkFBaUIsUUFBTyxLQUFLLFNBQU8sUUFBTyxLQUFLLFdBQVMsUUFBTyxLQUFLLFNBQU8sUUFBTyxLQUFLLFVBQVEsUUFBTyxLQUFLLFFBQU0sUUFBTyxLQUFLLFFBQU0sR0FBRSxLQUFLLFVBQVEsRUFBRSxTQUFRLEtBQUssYUFBVyxDQUFDLENBQUMsRUFBRSxZQUFXLEtBQUssYUFBVyxDQUFDLENBQUMsRUFBRSxZQUFXLEtBQUssbUJBQWlCLENBQUMsQ0FBQyxFQUFFLGtCQUFpQixLQUFLLFNBQU8sQ0FBQyxDQUFDLEVBQUUsUUFBTyxLQUFLLFdBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBUyxLQUFLLFNBQU8sQ0FBQyxDQUFDLEVBQUUsUUFBTyxLQUFLLFVBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUSxLQUFLLFFBQU0sRUFBRSxTQUFPLE9BQUssRUFBRSxRQUFNLE1BQUssS0FBSyxnQkFBYztBQUFBLFlBQUk7QUFBQSxVQUFDLEdBQUUsS0FBRyxvQkFBSTtBQUFJLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUM7QUFBRSxjQUFFLFVBQVE7QUFBRSxnQkFBSSxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsbUJBQU8sR0FBRyxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxHQUFFLEVBQUMsWUFBVyxHQUFFLE9BQU0sRUFBQyxDQUFDO0FBQUEsVUFBQztBQUFDLGNBQUksS0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUM7QUFBRSxnQkFBSSxHQUFFLEdBQUUsR0FBRTtBQUFFLG1CQUFNLEVBQUUsSUFBRyxHQUFHLEtBQUssQ0FBQyxHQUFFLEdBQUcsTUFBTSxJQUFFLEVBQUUsVUFBUSxPQUFLLElBQUUsRUFBRSxHQUFFLEdBQUcsTUFBTSxJQUFFLEVBQUUsZUFBYSxPQUFLLElBQUUsS0FBRSxHQUFFLEdBQUcsTUFBTSxJQUFFLEVBQUUsZUFBYSxPQUFLLElBQUUsS0FBRSxHQUFFLEdBQUcsTUFBTSxJQUFFLEVBQUUsV0FBUyxPQUFLLElBQUUsS0FBRSxHQUFFLEdBQUcsS0FBSyxJQUFJLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRTtBQUFBLFVBQUU7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRyxDQUFDO0FBQUUsZ0JBQUksR0FBRSxHQUFFLEdBQUU7QUFBRSxtQkFBTSxFQUFFLElBQUcsR0FBRyxJQUFJLEdBQUUsRUFBRSxHQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUUsR0FBRyxNQUFNLElBQUUsRUFBRSxVQUFRLE9BQUssSUFBRSxFQUFFLEdBQUUsR0FBRyxNQUFNLElBQUUsRUFBRSxlQUFhLE9BQUssSUFBRSxLQUFFLEdBQUUsR0FBRyxNQUFNLElBQUUsRUFBRSxlQUFhLE9BQUssSUFBRSxLQUFFLEdBQUUsR0FBRyxNQUFNLElBQUUsRUFBRSxXQUFTLE9BQUssSUFBRSxLQUFFLEdBQUUsR0FBRyxLQUFLLElBQUksR0FBRyxRQUFPLENBQUMsQ0FBQyxHQUFFO0FBQUEsVUFBRTtBQUFDLGNBQUksS0FBRyxFQUFDLFVBQVMsRUFBRSxLQUFJLEVBQUMsWUFBVyxHQUFFLFlBQVcsRUFBQyxDQUFDLEdBQUUsY0FBYSxFQUFFLE1BQUssRUFBQyxZQUFXLEdBQUUsWUFBVyxFQUFDLENBQUMsR0FBRSxhQUFZLEVBQUUsTUFBSyxFQUFDLFlBQVcsR0FBRSxZQUFXLEVBQUMsQ0FBQyxHQUFFLFVBQVMsRUFBRSxHQUFHLEdBQUUsYUFBWSxFQUFFLElBQUksR0FBRSxRQUFPLEVBQUUsS0FBSSxFQUFDLFlBQVcsR0FBRSxZQUFXLEVBQUMsQ0FBQyxHQUFFLFdBQVUsRUFBRSxNQUFLLEVBQUMsWUFBVyxHQUFFLFlBQVcsRUFBQyxDQUFDLEdBQUUsWUFBVyxFQUFFLE1BQUssRUFBQyxZQUFXLEdBQUUsWUFBVyxFQUFDLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRyxHQUFFLFdBQVUsRUFBRSxJQUFJLEdBQUUsUUFBTyxFQUFFLEtBQUksRUFBQyxZQUFXLEdBQUUsWUFBVyxFQUFDLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRyxHQUFFLE9BQU0sRUFBRSxLQUFJLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxNQUFLLEVBQUUsS0FBSSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsT0FBTSxFQUFFLEtBQUksRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLGFBQVksRUFBRSxNQUFLLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRyxHQUFFLFVBQVMsRUFBRSxLQUFJLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxhQUFZLEVBQUUsSUFBSSxHQUFFLE9BQU0sRUFBRSxNQUFLLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxVQUFTLEVBQUUsVUFBVSxHQUFFLFVBQVMsRUFBRSxPQUFNLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxXQUFVLEVBQUUsS0FBSSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsY0FBYSxFQUFFLE1BQUssRUFBQyxZQUFXLEdBQUUsWUFBVyxFQUFDLENBQUMsR0FBRSxjQUFhLEVBQUUsUUFBTyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsaUJBQWdCLEVBQUUsU0FBUSxFQUFDLFlBQVcsR0FBRSxZQUFXLEVBQUMsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFHLEdBQUUsTUFBSyxFQUFFLEtBQUksRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLHNCQUFxQixFQUFFLE9BQU8sR0FBRSxJQUFHLEVBQUUsS0FBSSxFQUFDLFlBQVcsR0FBRSxVQUFTLEVBQUMsQ0FBQyxHQUFFLFFBQU8sRUFBRSxNQUFLLEVBQUMsWUFBVyxHQUFFLFVBQVMsRUFBQyxDQUFDLEdBQUUsYUFBWSxFQUFFLE1BQUssRUFBQyxZQUFXLEdBQUUsVUFBUyxFQUFDLENBQUMsR0FBRSxXQUFVLEVBQUUsTUFBSyxFQUFDLFlBQVcsR0FBRSxVQUFTLEVBQUMsQ0FBQyxHQUFFLGNBQWEsRUFBRSxNQUFLLEVBQUMsWUFBVyxHQUFFLFVBQVMsRUFBQyxDQUFDLEdBQUUsUUFBTyxFQUFFLFNBQVEsRUFBQyxRQUFPLElBQUcsU0FBUSxJQUFHLFlBQVcsRUFBQyxDQUFDLEdBQUUsTUFBSyxFQUFFLEtBQUksRUFBQyxZQUFXLEdBQUUsUUFBTyxJQUFHLFlBQVcsRUFBQyxDQUFDLEdBQUUsT0FBTSxFQUFFLEtBQUksRUFBQyxZQUFXLEdBQUUsUUFBTyxJQUFHLFlBQVcsRUFBQyxDQUFDLEdBQUUsYUFBWSxFQUFFLE1BQUssRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFVBQVMsRUFBRSxNQUFLLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxVQUFTLEdBQUcsTUFBSyxDQUFDLEdBQUUsbUJBQWtCLEdBQUcsTUFBSyxDQUFDLEdBQUUsV0FBVSxHQUFHLE1BQUssQ0FBQyxHQUFFLFlBQVcsR0FBRyxNQUFLLENBQUMsR0FBRSxXQUFVLEdBQUcsS0FBSSxDQUFDLEdBQUUsWUFBVyxHQUFHLEtBQUksQ0FBQyxHQUFFLFlBQVcsR0FBRyxLQUFJLENBQUMsR0FBRSxVQUFTLEdBQUcsaUJBQWdCLENBQUMsR0FBRSxJQUFHLEdBQUcsYUFBWSxDQUFDLEdBQUUsSUFBRyxHQUFHLGFBQVksQ0FBQyxHQUFFLFlBQVcsR0FBRyxhQUFZLENBQUMsR0FBRSxVQUFTLEdBQUcsYUFBWSxDQUFDLEdBQUUsV0FBVSxHQUFHLGFBQVksQ0FBQyxHQUFFLFdBQVUsR0FBRyxhQUFZLENBQUMsR0FBRSxTQUFRLEVBQUUsT0FBTSxFQUFDLFlBQVcsR0FBRSxPQUFNLEdBQUUsUUFBTyxJQUFHLFlBQVcsRUFBQyxDQUFDLEdBQUUsUUFBTyxFQUFFLEtBQUksRUFBQyxPQUFNLElBQUcsWUFBVyxFQUFDLENBQUMsR0FBRSxNQUFLLEVBQUUsS0FBSSxFQUFDLE9BQU0sR0FBRSxDQUFDLEdBQUUsT0FBTSxHQUFHLEtBQUksRUFBRSxHQUFFLFVBQVMsRUFBRSxNQUFLLEVBQUMsWUFBVyxHQUFFLE9BQU0sSUFBRyxrQkFBaUIsS0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLE1BQUssRUFBQyxZQUFXLEdBQUUsT0FBTSxFQUFDLENBQUMsR0FBRSxhQUFZLEVBQUUsY0FBYSxFQUFDLFlBQVcsR0FBRSxPQUFNLEVBQUMsQ0FBQyxHQUFFLFFBQU8sRUFBRSxPQUFPLEdBQUUsT0FBTSxFQUFFLFFBQU8sRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFFBQU8sRUFBRSxPQUFPLEdBQUUsV0FBVSxFQUFFLFVBQVUsR0FBRSxXQUFVLEVBQUUsVUFBVSxHQUFFLFVBQVMsRUFBRSxXQUFVLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxPQUFNLEVBQUUsUUFBTyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsVUFBUyxFQUFFLFNBQVMsR0FBRSxXQUFVLEVBQUUsWUFBVyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUksR0FBRSxTQUFRLEVBQUUsVUFBUyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsU0FBUSxFQUFFLFFBQVEsR0FBRSxRQUFPLEVBQUUsU0FBUSxFQUFDLFlBQVcsR0FBRSxRQUFPLElBQUcsWUFBVyxFQUFDLENBQUMsR0FBRSxNQUFLLEVBQUUsS0FBSyxHQUFFLE1BQUssRUFBRSxLQUFLLEdBQUUsUUFBTyxFQUFFLE9BQU8sR0FBRSxPQUFNLEVBQUUsTUFBTSxHQUFFLE1BQUssRUFBRSxPQUFNLEVBQUMsWUFBVyxHQUFFLFlBQVcsRUFBQyxDQUFDLEdBQUUsT0FBTSxFQUFFLFFBQU8sRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFFBQU8sRUFBRSxTQUFRLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxRQUFPLEVBQUUsU0FBUSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsVUFBUyxFQUFFLFdBQVUsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFNBQVEsRUFBRSxRQUFRLEdBQUUsU0FBUSxFQUFFLFVBQVMsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLE9BQU0sRUFBRSxRQUFPLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxPQUFNLEVBQUUsUUFBTyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsUUFBTyxFQUFFLFNBQVEsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFNBQVEsRUFBRSxVQUFTLEVBQUMsWUFBVyxHQUFFLFFBQU8sSUFBRyxZQUFXLEVBQUMsQ0FBQyxHQUFFLE9BQU0sRUFBRSxRQUFPLEVBQUMsWUFBVyxHQUFFLFFBQU8sSUFBRyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFNBQVEsRUFBRSxVQUFTLEVBQUMsWUFBVyxHQUFFLFFBQU8sSUFBRyxZQUFXLEVBQUMsQ0FBQyxHQUFFLEtBQUksRUFBRSxNQUFLLEVBQUMsUUFBTyxJQUFHLFlBQVcsRUFBQyxDQUFDLEdBQUUsTUFBSyxFQUFFLE9BQU0sRUFBQyxRQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxTQUFRLEVBQUMsUUFBTyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsTUFBSyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsU0FBUSxFQUFFLFVBQVMsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFFBQU8sRUFBRSxTQUFRLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxRQUFPLEVBQUUsU0FBUSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsT0FBTSxFQUFFLFFBQU8sRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLE1BQUssRUFBRSxPQUFNLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxNQUFLLEVBQUUsT0FBTSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsT0FBTSxFQUFFLFFBQU8sRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLEtBQUksRUFBRSxNQUFLLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxPQUFNLEVBQUUsUUFBTyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsTUFBSyxFQUFFLE9BQU0sRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFNBQVEsRUFBRSxVQUFTLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxRQUFPLEVBQUUsU0FBUSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsVUFBUyxFQUFFLFdBQVUsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFNBQVEsRUFBRSxVQUFTLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxVQUFTLEVBQUUsV0FBVSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsU0FBUSxFQUFFLFVBQVMsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLGFBQVksRUFBRSxjQUFhLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxZQUFXLEVBQUUsYUFBWSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsUUFBTyxFQUFFLFNBQVEsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLEtBQUksRUFBRSxNQUFLLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxTQUFRLEVBQUUsVUFBUyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsUUFBTyxFQUFFLFNBQVEsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFVBQVMsRUFBRSxXQUFVLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxRQUFPLEVBQUUsU0FBUSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsV0FBVSxFQUFFLFlBQVcsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFNBQVEsRUFBRSxVQUFTLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxXQUFVLEVBQUUsWUFBVyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsVUFBUyxFQUFFLFdBQVUsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLE9BQU0sRUFBRSxRQUFPLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxTQUFRLEVBQUUsVUFBUyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsWUFBVyxFQUFFLGFBQVksRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFlBQVcsRUFBRSxhQUFZLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxPQUFNLEVBQUUsUUFBTyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsU0FBUSxFQUFFLFVBQVMsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLE1BQUssRUFBRSxRQUFPLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxRQUFPLEVBQUUsVUFBUyxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsS0FBSSxFQUFFLE9BQU0sRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLFFBQU8sRUFBRSxVQUFTLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxTQUFRLEVBQUUsV0FBVSxFQUFDLFlBQVcsRUFBQyxDQUFDLEdBQUUsUUFBTyxFQUFFLFVBQVMsRUFBQyxZQUFXLEVBQUMsQ0FBQyxHQUFFLGFBQVksRUFBRSxTQUFRLEVBQUMsWUFBVyxFQUFDLENBQUMsR0FBRSxLQUFJLEVBQUUsS0FBSyxHQUFFLFNBQVEsRUFBRSxTQUFTLEdBQUUsU0FBUSxFQUFFLFdBQVUsRUFBQyxZQUFXLEtBQUUsQ0FBQyxHQUFFLGFBQVksRUFBRSxlQUFjLEVBQUMsWUFBVyxLQUFFLENBQUMsR0FBRSxXQUFVLEVBQUUsV0FBVyxHQUFFLGFBQVksRUFBRSxNQUFLLEVBQUMsWUFBVyxLQUFFLENBQUMsRUFBQztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEtBQUcsTUFBSSxLQUFHO0FBQUEsVUFBRztBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEtBQUc7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sS0FBRyxNQUFJLEtBQUc7QUFBQSxVQUFHO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sS0FBRyxNQUFJLEtBQUc7QUFBQSxVQUFHO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sR0FBRztBQUFBLFVBQUU7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxHQUFHO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEtBQUcsTUFBSSxLQUFHO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEtBQUcsT0FBSyxLQUFHO0FBQUEsVUFBRztBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEtBQUcsTUFBSSxLQUFHO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEtBQUcsTUFBSSxLQUFHO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEtBQUcsTUFBSSxLQUFHO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLE1BQUk7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sR0FBRztBQUFBLFVBQUU7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxLQUFHLE9BQUssS0FBRztBQUFBLFVBQUc7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxLQUFHLE9BQUssS0FBRztBQUFBLFVBQUc7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxHQUFHO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEdBQUc7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sR0FBRyxPQUFLO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLE1BQUk7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sS0FBRyxNQUFJLEtBQUc7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sR0FBRztBQUFBLFVBQUU7QUFBQyxhQUFHLEdBQUcsZ0JBQWMsT0FBRztBQUFDLGNBQUUsSUFBSTtBQUFBLFVBQUMsR0FBRSxHQUFHLEdBQUcsZ0JBQWMsR0FBRyxHQUFHLGdCQUFjLEdBQUcsSUFBSSxnQkFBYyxPQUFHO0FBQUMsY0FBRSxLQUFLLEVBQUUsS0FBSztBQUFBLFVBQUMsR0FBRSxHQUFHLElBQUksZ0JBQWMsT0FBRztBQUFDLGNBQUUsRUFBRSxTQUFPLE9BQUssRUFBRSxXQUFTLEVBQUUsSUFBSSxJQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVE7QUFBQSxVQUFDLEdBQUUsR0FBRyxLQUFLLGdCQUFjLE9BQUc7QUFBQyxjQUFFLEtBQUssRUFBRSxRQUFPLEVBQUUsTUFBTTtBQUFBLFVBQUM7QUFBRSxjQUFJLEtBQUcsZ3JJQUErcUksS0FBRywrakZBQThqRixLQUFHLElBQUksT0FBTyxNQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsSUFBSSxPQUFPLE1BQUksS0FBRyxLQUFHLEdBQUc7QUFBRSxlQUFHLEtBQUc7QUFBSyxjQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEtBQUksSUFBRyxJQUFHLEtBQUksSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsS0FBSSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEtBQUksSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUksSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxLQUFJLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEtBQUksSUFBRyxLQUFJLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsS0FBSSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxJQUFHLEtBQUksR0FBRSxJQUFHLEtBQUksS0FBSSxLQUFJLElBQUcsS0FBSSxNQUFLLElBQUcsSUFBRyxNQUFLLE1BQUssS0FBSSxNQUFLLEtBQUksR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsTUFBSyxHQUFFLE1BQUssSUFBRyxHQUFFLE1BQUssR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsS0FBSSxNQUFLLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsTUFBSyxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsTUFBSyxJQUFHLEtBQUksSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksSUFBRyxJQUFHLElBQUcsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLElBQUcsR0FBRSxHQUFFLE1BQUssR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLE1BQUssT0FBTSxJQUFHLE1BQUssR0FBRSxLQUFJLEdBQUUsTUFBSyxJQUFHLE1BQUssTUFBSyxLQUFJLE1BQUssSUFBSSxHQUFFLEtBQUcsQ0FBQyxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsS0FBSSxJQUFHLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEtBQUksSUFBRyxLQUFJLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLE9BQU0sR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsTUFBSyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxPQUFNLEdBQUUsTUFBSyxJQUFHLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxNQUFLLElBQUcsS0FBSSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsTUFBSyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLElBQUcsTUFBSyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsTUFBSyxHQUFFLFFBQU8sR0FBRztBQUFFLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRTtBQUFNLHFCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxJQUFFLEdBQUUsS0FBRyxHQUFFO0FBQUMsa0JBQUcsS0FBRyxFQUFFLElBQUcsSUFBRTtBQUFFLHVCQUFNO0FBQUcsa0JBQUcsS0FBRyxFQUFFLElBQUUsSUFBRyxLQUFHO0FBQUUsdUJBQU07QUFBQSxZQUFFO0FBQUMsbUJBQU07QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sSUFBRSxLQUFHLE1BQUksS0FBRyxLQUFHLEtBQUcsT0FBRyxJQUFFLEtBQUcsTUFBSSxLQUFHLEtBQUcsTUFBSSxPQUFHLEtBQUcsUUFBTSxLQUFHLE9BQUssR0FBRyxLQUFLLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBRSxHQUFHLEdBQUUsRUFBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxJQUFFLEtBQUcsTUFBSSxLQUFHLElBQUUsS0FBRyxPQUFHLElBQUUsS0FBRyxRQUFHLEtBQUcsS0FBRyxPQUFHLElBQUUsS0FBRyxNQUFJLEtBQUcsS0FBRyxNQUFJLE9BQUcsS0FBRyxRQUFNLEtBQUcsT0FBSyxHQUFHLEtBQUssT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBQSxVQUFDO0FBQUMsY0FBSSxLQUFHLEVBQUMsU0FBUSxDQUFDLFNBQVEsUUFBTyxTQUFRLFlBQVcsWUFBVyxXQUFVLE1BQUssUUFBTyxXQUFVLE9BQU0sWUFBVyxNQUFLLFVBQVMsVUFBUyxTQUFRLE9BQU0sT0FBTSxTQUFRLFNBQVEsUUFBTyxPQUFNLFFBQU8sU0FBUSxTQUFRLFdBQVUsVUFBUyxVQUFTLFFBQU8sUUFBTyxTQUFRLE1BQUssY0FBYSxVQUFTLFFBQU8sUUFBUSxHQUFFLFFBQU8sQ0FBQyxjQUFhLGFBQVksT0FBTSxXQUFVLFdBQVUsYUFBWSxVQUFTLFVBQVMsT0FBTyxHQUFFLFlBQVcsQ0FBQyxRQUFPLFdBQVcsRUFBQyxHQUFFLEtBQUcsSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFFLEtBQUcsSUFBSSxJQUFJLEdBQUcsTUFBTSxHQUFFLEtBQUcsSUFBSSxJQUFJLEdBQUcsVUFBVTtBQUFFLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsbUJBQU8sS0FBRyxNQUFJLFdBQVMsTUFBSTtBQUFBLFVBQU07QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG1CQUFPLEdBQUcsR0FBRSxDQUFDLEtBQUcsR0FBRyxJQUFJLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sR0FBRyxJQUFJLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxtQkFBTyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEdBQUcsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxHQUFHLElBQUksQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxHQUFHLENBQUM7QUFBQSxVQUFDO0FBQUMsY0FBSSxLQUFHLG9CQUFJLElBQUksQ0FBQyxTQUFRLFFBQU8sU0FBUSxZQUFXLFlBQVcsV0FBVSxNQUFLLFFBQU8sV0FBVSxPQUFNLFlBQVcsTUFBSyxVQUFTLFVBQVMsU0FBUSxPQUFNLE9BQU0sU0FBUSxTQUFRLFFBQU8sT0FBTSxRQUFPLFNBQVEsU0FBUSxXQUFVLFVBQVMsVUFBUyxRQUFPLFFBQU8sU0FBUSxNQUFLLGNBQWEsVUFBUyxRQUFPLFVBQVMsY0FBYSxhQUFZLE9BQU0sV0FBVSxXQUFVLGFBQVksVUFBUyxVQUFTLFNBQVEsUUFBTyxhQUFZLFFBQU8sT0FBTyxDQUFDO0FBQUUsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sR0FBRyxJQUFJLENBQUM7QUFBQSxVQUFDO0FBQUMsY0FBSSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxLQUFHLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLEtBQUksS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLE1BQUssS0FBRyxNQUFLLEtBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRyxLQUFHLEtBQUcsSUFBRSxLQUFHLEdBQUUsS0FBRyxLQUFHLElBQUUsS0FBRyxHQUFFLEtBQUcsS0FBRyxJQUFFLEtBQUcsR0FBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUcsS0FBRyxJQUFFLEtBQUcsSUFBRSxHQUFFLEtBQUcsS0FBRyxLQUFHLEtB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TztBQUFFLHVCQUFNO0FBQUcsa0JBQUksSUFBRSxLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQU0sTUFBSSxDQUFDO0FBQUUsa0JBQUcsTUFBSTtBQUFHLHVCQUFNO0FBQUcsa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBSSxtQkFBSSxLQUFLLE1BQU0sT0FBSyxHQUFFLENBQUMsR0FBRyxDQUFDLEtBQUcsRUFBRSxLQUFLLE1BQU0sTUFBSSxLQUFLO0FBQVEsb0JBQUUsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFNLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEtBQUssTUFBTSxNQUFNLElBQUUsR0FBRSxLQUFLLE1BQU0sR0FBRztBQUFFLHFCQUFPLEtBQUssWUFBWSxJQUFHLENBQUMsR0FBRTtBQUFBLFlBQUU7QUFBQSxZQUFDLHNCQUFzQixHQUFFO0FBQUMsa0JBQUksSUFBRSxNQUFJLEtBQUcsS0FBRyxJQUFHLElBQUUsR0FBRSxJQUFFLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxNQUFJLENBQUM7QUFBRSxvQkFBSSxNQUFJLE1BQUksT0FBSyxLQUFJLElBQUUsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFNLE1BQUksQ0FBQyxHQUFFLElBQUUsS0FBSSxNQUFJLE1BQUksQ0FBQyxLQUFLLE1BQU0sV0FBUyxLQUFJLElBQUUsTUFBSSxLQUFHLEtBQUcsS0FBSSxLQUFLLFNBQVMsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQW1CLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxNQUFJLENBQUM7QUFBRSxrQkFBRyxNQUFJLEdBQUU7QUFBQyxxQkFBSyxNQUFNLFdBQVcsS0FBSyxNQUFNLE1BQUksQ0FBQyxNQUFJLEtBQUcsS0FBSyxTQUFTLElBQUcsQ0FBQyxJQUFFLEtBQUssU0FBUyxNQUFJLE1BQUksS0FBRyxJQUFHLENBQUM7QUFBRTtBQUFBLGNBQU07QUFBQyxrQkFBRyxNQUFJLEtBQUk7QUFBQyxvQkFBRyxNQUFJLElBQUc7QUFBQyx1QkFBSyxTQUFTLElB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QUUsT0FBTSxFQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxRQUFRLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsTUFBRyxJQUFFLEtBQUssTUFBTSxLQUFJLElBQUUsTUFBSSxLQUFHLEdBQUcsTUFBSSxHQUFHLFdBQVUsSUFBRSxNQUFJLEtBQUcsR0FBRyxNQUFJLE1BQUksS0FBRyxHQUFHLE1BQUksTUFBSSxJQUFFLEdBQUcsTUFBSSxHQUFHLEtBQUksSUFBRSxPQUFHLElBQUU7QUFBRSx1QkFBUSxJQUFFLEdBQUUsSUFBRSxLQUFHLE9BQUssSUFBRSxJQUFFLEdBQUUsSUFBRSxHQUFFLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFNLEdBQUcsR0FBRTtBQUFFLG9CQUFHLE1BQUksTUFBSSxNQUFJLFFBQU87QUFBQyxzQkFBSSxJQUFFLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxNQUFJLENBQUMsR0FBRSxJQUFFLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxNQUFJLENBQUM7QUFBRSx1QkFBRyxPQUFPLE1BQU0sQ0FBQyxLQUFHLENBQUMsRUFBRSxDQUFDLEtBQUcsRUFBRSxJQUFJLENBQUMsS0FBRyxFQUFFLElBQUksQ0FBQyxNQUFJLEtBQUssTUFBTSxFQUFFLDRCQUEyQixFQUFDLElBQUcsS0FBSyxNQUFNLFlBQVksRUFBQyxDQUFDLElBQUUsS0FBSyxNQUFNLEVBQUUsa0NBQWlDLEVBQUMsSUFBRyxLQUFLLE1BQU0sWUFBWSxFQUFDLENBQUMsR0FBRSxFQUFFLEtBQUssTUFBTTtBQUFJO0FBQUEsZ0JBQVE7QUFBQyxvQkFBRyxLQUFHLEtBQUcsSUFBRSxJQUFFLEtBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFFLEtBQUcsS0FBRyxHQUFHLENBQUMsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRSxLQUFHO0FBQUUsc0JBQUcsS0FBSyxRQUFR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QUksS0FBSSxLQUFJLE1BQUssS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLE1BQUssUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sS0FBSSxRQUFPLFFBQU8sUUFBTyxNQUFLLFFBQU8sS0FBSSxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLE1BQUssUUFBTyxLQUFJLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxPQUFNLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLEtBQUksUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sS0FBSSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxTQUFRLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxTQUFRLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxTQUFRLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLElBQUcsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFNBQVEsR0FBRSxLQUFHLEVBQUUsT0FBSyxLQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQUksRUFBQyxrQkFBaUIsRUFBRSw4REFBOEQsR0FBRSwwQkFBeUIsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxnQkFBZSxFQUFDLElBQUU7QUFBRSxtQkFBTSwrQ0FBK0MsT0FBTyxHQUFFLElBQUk7QUFBQSxVQUFDLENBQUMsR0FBRSwyQkFBMEIsRUFBRSxnREFBZ0QsR0FBRSw4QkFBNkIsRUFBRSwwR0FBMEcsR0FBRSxpQkFBZ0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxZQUFXLEdBQUUsWUFBVyxFQUFDLElBQUU7QUFBRSxtQkFBTSxxQkFBcUIsT0FBTyxHQUFFLG1CQUFtQixFQUFFLE9BQU8sR0FBRSxVQUFVLEVBQUUsT0FBTyxHQUFFLE1BQU07QUFBQSxVQUFDLENBQUMsR0FBRSxxQkFBb0IsRUFBRSxnRUFBZ0UsR0FBRSx3QkFBdUIsRUFBRSw0QkFBNEIsR0FBRSw4QkFBNkIsRUFBRSxrR0FBa0csRUFBQyxFQUFFO0FBQUUsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sSUFBRSxFQUFFLFNBQU8sd0JBQXNCLEVBQUUsU0FBTyx1QkFBcUI7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsZ0JBQUcsRUFBRSxTQUFPO0FBQWdCLHFCQUFPLEVBQUU7QUFBSyxnQkFBRyxFQUFFLFNBQU87QUFBb0IscUJBQU8sRUFBRSxVQUFVLE9BQUssTUFBSSxFQUFFLEtBQUs7QUFBSyxnQkFBRyxFQUFFLFNBQU87QUFBc0IscUJBQU8sR0FBRyxFQUFFLE1BQU0sSUFBRSxNQUFJLEdBQUcsRUFBRSxRQUFRO0FBQUUsa0JBQU0sSUFBSSxNQUFNLCtCQUE2QixFQUFFLElBQUk7QUFBQSxVQUFDO0FBQUMsY0FBSSxLQUFHLE9BQUcsY0FBYyxFQUFDO0FBQUEsWUFBQyxlQUFjO0FBQUMsa0JBQUksSUFBRSxJQUFHLElBQUUsS0FBSyxNQUFNO0FBQUkseUJBQU87QUFBQyxvQkFBRyxLQUFLLE1BQU0sT0FBSyxLQUFLO0FBQU8sd0JBQU0sS0FBSyxNQUFNLEdBQUcsd0JBQXVCLEVBQUMsSUFBRyxLQUFLLE1BQU0sU0FBUSxDQUFDO0FBQUUsb0JBQUksSUFBRSxLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQU0sR0FBRztBQUFFLHdCQUFPO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFJLDJCQUFPLEtBQUssTUFBTSxRQUFNLEtBQUssTUFBTSxRQUFNLE1BQUksTUFBSSxLQUFLLE1BQU0sc0JBQW9CLEVBQUUsS0FBSyxNQUFNLEtBQUksS0FBSyxZQUFZLEdBQUcsS0FBRyxNQUFNLGlCQUFpQixDQUFDLEtBQUcsS0FBRyxLQUFLLE1BQU0sTUFBTSxHQUFFLEtBQUssTUFBTSxHQUFHLEdBQUUsS0FBSyxZQUFZLEtBQUksQ0FBQztBQUFBLHVCQUFRO0FBQUcseUJBQUcsS0FBSyxNQUFNLE1BQU0sR0FBRSxLQUFLLE1BQU0sR0FBRyxHQUFFLEtBQUcsS0FBSyxjQUFjLEdBQUUsSUFBRSxLQUFLLE1BQU07QUFBSTtBQUFBLHVCQUFXO0FBQUEsdUJBQVE7QUFBQTtBQUFZLHVCQUFHLENBQUMsS0FBRyxLQUFHLEtBQUssTUFBTSxNQUFNLEdBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRSxLQUFHLEtBQUssZUFBZSxJQUFFLEdBQUUsSUFBRSxLQUFLLE1BQU0sT0FBSyxFQUFFLEtBQUssTUFBTTtBQUFBO0FBQUEsY0FBSTtBQUFBLFlBQUM7QUFBQSxZQUFDLGVBQWUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFNLEdBQUcsR0FBRTtBQUFFLHFCQUFNLEVBQUUsS0FBSyxNQUFNLEtBQUksTUFBSSxNQUFJLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxHQUFHLE1BQUksTUFBSSxFQUFFLEtBQUssTUFBTSxLQUFJLElBQUUsSUFBRTtBQUFBLElBQ3prdkU7QUFBQSxLQUNDLElBQUUsT0FBTyxhQUFhLENBQUMsR0FBRSxFQUFFLEtBQUssTUFBTSxTQUFRLEtBQUssTUFBTSxZQUFVLEtBQUssTUFBTSxLQUFJO0FBQUEsWUFBQztBQUFBLFlBQUMsY0FBYyxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFHLElBQUUsRUFBRSxLQUFLLE1BQU07QUFBSSx5QkFBTztBQUFDLG9CQUFHLEtBQUssTUFBTSxPQUFLLEtBQUs7QUFBTyx3QkFBTSxLQUFLLE1BQU0sRUFBRSxvQkFBbUIsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxvQkFBSSxJQUFFLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxHQUFHO0FBQUUsb0JBQUcsTUFBSTtBQUFFO0FBQU0sc0JBQUksTUFBSSxLQUFHLEtBQUssTUFBTSxNQUFNLEdBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRSxLQUFHLEtBQUssY0FBYyxHQUFFLElBQUUsS0FBSyxNQUFNLE9BQUssR0FBRyxDQUFDLEtBQUcsS0FBRyxLQUFLLE1BQU0sTUFBTSxHQUFFLEtBQUssTUFBTSxHQUFHLEdBQUUsS0FBRyxLQUFLLGVBQWUsS0FBRSxHQUFFLElBQUUsS0FBSyxNQUFNLE9BQUssRUFBRSxLQUFLLE1BQU07QUFBQSxjQUFHO0FBQUMscUJBQU8sS0FBRyxLQUFLLE1BQU0sTUFBTSxHQUFFLEtBQUssTUFBTSxLQUFLLEdBQUUsS0FBSyxZQUFZLEtBQUksQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGdCQUFlO0FBQUMsa0JBQUksSUFBRSxFQUFFLEtBQUssTUFBTTtBQUFJLGtCQUFHLEtBQUssZUFBZSxLQUFLLE1BQU0sR0FBRyxNQUFJLElBQUc7QUFBQyxrQkFBRSxLQUFLLE1BQU07QUFBSSxvQkFBSSxJQUFFO0FBQUcscUJBQUssZUFBZSxLQUFLLE1BQU0sR0FBRyxNQUFJLFFBQU0sSUFBRSxJQUFHLEVBQUUsS0FBSyxNQUFNO0FBQUssb0JBQUksSUFBRSxLQUFLLFFBQVEsR0FBRSxRQUFPLE9BQUcsTUFBTTtBQUFFLG9CQUFHLE1BQUksUUFBTSxLQUFLLGVBQWUsS0FBSyxNQUFNLEdBQUcsTUFBSTtBQUFHLHlCQUFNLEVBQUUsS0FBSyxNQUFNLEtBQUksT0FBTyxjQUFjLENBQUM7QUFBQSxjQUFDLE9BQUs7QUFBQyxvQkFBSSxJQUFFLEdBQUUsSUFBRTtBQUFHLHVCQUFLLE1BQUksTUFBSSxLQUFLLE1BQU0sTUFBSSxLQUFLLFVBQVEsRUFBRSxJQUFFLEtBQUssZUFBZSxLQUFLLE1BQU0sR0FBRyxLQUFHO0FBQUssb0JBQUUsS0FBSyxNQUFNO0FBQUksb0JBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsS0FBSyxNQUFNLE1BQU0sR0FBRSxLQUFLLE1BQU0sR0FBRyxHQUFFLElBQUUsR0FBRztBQUFHLHNCQUFHLEVBQUUsS0FBSyxNQUFNLEtBQUk7QUFBRSwyQkFBTztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEtBQUssTUFBTSxNQUFJLEdBQUU7QUFBQSxZQUFHO0FBQUEsWUFBQyxjQUFhO0FBQUMsa0JBQUksR0FBRSxJQUFFLEtBQUssTUFBTTtBQUFJO0FBQUcsb0JBQUUsS0FBSyxNQUFNLFdBQVcsRUFBRSxLQUFLLE1BQU0sR0FBRztBQUFBLHFCQUFRLEdBQUcsQ0FBQyxLQUFHLE1BQUk7QUFBSSxxQkFBTyxLQUFLLFlBQVksS0FBSSxLQUFLLE1BQU0sTUFBTSxHQUFFLEtBQUssTUFBTSxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxxQkFBb0I7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEtBQUssTUFBTSxHQUFHLElBQUUsRUFBRSxPQUFLLEtBQUssTUFBTSxRQUFNLEdBQUcsS0FBSyxNQUFNLElBQUksSUFBRSxFQUFFLE9BQUssR0FBRyxLQUFLLE1BQU0sSUFBSSxJQUFFLEtBQUssV0FBVyxHQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssV0FBVyxHQUFFLGVBQWU7QUFBQSxZQUFDO0FBQUEsWUFBQyx5QkFBd0I7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxPQUFNLElBQUUsS0FBSyxNQUFNLFVBQVMsSUFBRSxLQUFLLG1CQUFtQjtBQUFFLGtCQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFBRSx1QkFBTztBQUFFLGtCQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsWUFBVSxHQUFFLEVBQUUsT0FBSyxLQUFLLG1CQUFtQixHQUFFLEtBQUssV0FBVyxHQUFFLG1CQUFtQjtBQUFBLFlBQUM7QUFBQSxZQUFDLHNCQUFxQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUssdUJBQXVCO0FBQUUsa0JBQUcsRUFBRSxTQUFPO0FBQW9CLHVCQUFPO0FBQUUscUJBQUssS0FBSyxJQUFJLEVBQUUsS0FBRztBQUFDLG9CQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLGtCQUFFLFNBQU8sR0FBRSxFQUFFLFdBQVMsS0FBSyxtQkFBbUIsR0FBRSxJQUFFLEtBQUssV0FBVyxHQUFFLHFCQUFxQjtBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLHlCQUF3QjtBQUFDLGtCQUFJO0FBQUUsc0JBQU8sS0FBSyxNQUFNO0FBQUEscUJBQVc7QUFBRSx5QkFBTyxJQUFFLEtBQUssVUFBVSxHQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssR0FBRSxLQUFLLEtBQUssR0FBRSxJQUFFLEtBQUssNEJBQTRCLEdBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxXQUFXLFNBQU8sd0JBQXNCLEtBQUssTUFBTSxHQUFHLGtCQUFpQixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUU7QUFBQSxxQkFBTztBQUFBLHFCQUFTO0FBQUkseUJBQU8sS0FBSyxjQUFjO0FBQUE7QUFBVSx3QkFBTSxLQUFLLE1BQU0sR0FBRyxxQkFBb0IsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQSxZQUFDLDBCQUF5QjtBQUFDLGtCQUFJLElBQUUsS0FBSyxZQUFZLEtBQUssTUFBTSxjQUFjLE9BQU0sS0FBSyxNQUFNLGFBQWE7QUFBRSxxQkFBTyxLQUFLLGFBQWEsR0FBRSxzQkFBcUIsS0FBSyxNQUFNLFFBQVE7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRTtBQUFDLHFCQUFPLEtBQUssS0FBSyxHQUFFLEVBQUUsYUFBVyxLQUFLLGdCQUFnQixHQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sR0FBRSxLQUFLLE1BQU0scUJBQW1CLE1BQUcsS0FBSyxPQUFPLENBQUMsR0FBRSxLQUFLLFdBQVcsR0FBRSxnQkFBZ0I7QUFBQSxZQUFDO0FBQUEsWUFBQyw0QkFBNEIsR0FBRSxHQUFFO0FBQUMsa0JBQUcsS0FBSyxNQUFNLENBQUM7QUFBRSxrQkFBRSxhQUFXLEtBQUssd0JBQXdCO0FBQUEsbUJBQU07QUFBQyxvQkFBSSxJQUFFLEtBQUssZ0JBQWdCO0FBQUUsa0JBQUUsYUFBVztBQUFBLGNBQUM7QUFBQyxxQkFBTyxLQUFLLFdBQVcsQ0FBQyxHQUFFLEtBQUssTUFBTSxxQkFBbUIsTUFBRyxLQUFLLE9BQU8sQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLHdCQUF3QjtBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFtQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxNQUFNLENBQUMsS0FBRyxLQUFLLFdBQVcsRUFBRSxLQUFLLEdBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxPQUFPLEVBQUUsR0FBRSxFQUFFLFdBQVMsS0FBSyx3QkFBd0IsR0FBRSxLQUFLLFdBQVcsRUFBRSxNQUFNLEdBQUUsS0FBSyxNQUFNLHFCQUFtQixNQUFHLEtBQUssT0FBTyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsb0JBQW9CLE1BQUksRUFBRSxPQUFLLEtBQUssdUJBQXVCLEdBQUUsRUFBRSxRQUFNLEtBQUssSUFBSSxFQUFFLElBQUUsS0FBSyx1QkFBdUIsSUFBRSxNQUFLLEtBQUssV0FBVyxHQUFFLGNBQWM7QUFBQSxZQUFFO0FBQUEsWUFBQyx5QkFBeUIsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUscUJBQU8sS0FBSyxJQUFJLEdBQUcsSUFBRSxLQUFLLFdBQVcsR0FBRSxvQkFBb0IsS0FBRyxFQUFFLE9BQUssS0FBSyxvQkFBb0IsR0FBRSxLQUFLLGdDQUFnQyxDQUFDO0FBQUEsWUFBRTtBQUFBLFlBQUMsZ0NBQWdDLEdBQUU7QUFBQyxrQkFBSSxJQUFFLENBQUM7QUFBRSxxQkFBSyxDQUFDLEtBQUssTUFBTSxFQUFFLEtBQUcsQ0FBQyxLQUFLLE1BQU0sR0FBRztBQUFHLGtCQUFFLEtBQUssS0FBSyxrQkFBa0IsQ0FBQztBQUFFLHFCQUFPLEVBQUUsYUFBVyxHQUFFLEVBQUUsY0FBWSxLQUFLLElBQUksRUFBRSxHQUFFLEtBQUssT0FBTyxHQUFHLEdBQUUsS0FBSyxXQUFXLEdBQUUsbUJBQW1CO0FBQUEsWUFBQztBQUFBLFlBQUMseUJBQXlCLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEtBQUssSUFBSSxHQUFHLElBQUUsS0FBSyxXQUFXLEdBQUUsb0JBQW9CLEtBQUcsRUFBRSxPQUFLLEtBQUssb0JBQW9CLEdBQUUsS0FBSyxPQUFPLEdBQUcsR0FBRSxLQUFLLFdBQVcsR0FBRSxtQkFBbUI7QUFBQSxZQUFFO0FBQUEsWUFBQyxrQkFBa0IsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxLQUFLLHlCQUF5QixHQUFFLENBQUMsR0FBRSxJQUFFO0FBQUssa0JBQUcsQ0FBQyxFQUFFLGFBQVk7QUFBQztBQUFFO0FBQU8sNEJBQU8sS0FBSyxNQUFNO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxJQUFFLEtBQUssTUFBTSxPQUFNLElBQUUsS0FBSyxNQUFNLFVBQVMsS0FBSyxLQUFLLEdBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRTtBQUFDLDhCQUFFLEtBQUsseUJBQXlCLEdBQUUsQ0FBQztBQUFFLGdDQUFNO0FBQUEsd0JBQUM7QUFBQywwQkFBRSxLQUFLLEtBQUssa0JBQWtCLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFJLDBCQUFFLEtBQUssS0FBSyxjQUFjLENBQUM7QUFBRTtBQUFBLDJCQUFXLEdBQUU7QUFBQyw0QkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLDZCQUFLLFdBQVcsRUFBRSxLQUFLLEdBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxNQUFNLEVBQUUsSUFBRSxFQUFFLEtBQUssS0FBSyxvQkFBb0IsQ0FBQyxDQUFDLElBQUUsRUFBRSxLQUFLLEtBQUssNEJBQTRCLEdBQUUsRUFBRSxNQUFNLENBQUM7QUFBRTtBQUFBLHNCQUFLO0FBQUE7QUFBUyw4QkFBTSxLQUFLLFdBQVc7QUFBQTtBQUFFLG1CQUFHLENBQUMsS0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFHLE1BQUksT0FBSyxLQUFLLE1BQU0sR0FBRywyQkFBMEIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxJQUFFLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLElBQUUsS0FBSyxNQUFNLEdBQUcsMEJBQXlCLEVBQUMsSUFBRyxHQUFFLGdCQUFlLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFFLENBQUMsR0FBRyxDQUFDLEtBQUcsQ0FBQyxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsSUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUcsS0FBSyxNQUFNLEdBQUcsMEJBQXlCLEVBQUMsSUFBRyxHQUFFLGdCQUFlLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyxrQkFBRyxHQUFHLENBQUMsS0FBRyxFQUFFLGtCQUFnQixHQUFFLEVBQUUsa0JBQWdCLE1BQUksRUFBRSxpQkFBZSxHQUFFLEVBQUUsaUJBQWUsSUFBRyxFQUFFLFdBQVMsR0FBRSxLQUFLLE1BQU0sRUFBRTtBQUFFLHNCQUFNLEtBQUssTUFBTSxHQUFHLDhCQUE2QixFQUFDLElBQUcsS0FBSyxNQUFNLFNBQVEsQ0FBQztBQUFFLHFCQUFPLEdBQUcsQ0FBQyxJQUFFLEtBQUssV0FBVyxHQUFFLGFBQWEsSUFBRSxLQUFLLFdBQVcsR0FBRSxZQUFZO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWlCO0FBQUMsa0JBQUksSUFBRSxLQUFLLE1BQU0sT0FBTSxJQUFFLEtBQUssTUFBTTtBQUFTLHFCQUFPLEtBQUssS0FBSyxHQUFFLEtBQUssa0JBQWtCLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLFdBQVcsR0FBRTtBQUFDLGtCQUFHLEVBQUMsU0FBUSxFQUFDLElBQUUsS0FBSztBQUFNLGdCQUFFLEVBQUUsU0FBTyxLQUFHO0FBQUEsWUFBQztBQUFBLFlBQUMsY0FBYyxHQUFFO0FBQUMscUJBQU8sS0FBSyxNQUFNLEdBQUcsSUFBRSxLQUFLLGFBQWEsS0FBSyxNQUFNLE9BQU0sU0FBUyxJQUFFLEtBQUssTUFBTSxHQUFHLElBQUUsS0FBSyxnQkFBZ0IsSUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxHQUFHLE1BQUksTUFBSSxLQUFLLGFBQWEsR0FBRyxHQUFFLEtBQUssZ0JBQWdCLEtBQUcsTUFBTSxjQUFjLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxZQUFXO0FBQUMsbUJBQUssV0FBVyxFQUFFLGlCQUFlLE1BQU0sVUFBVTtBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFdBQVc7QUFBRSxrQkFBRyxNQUFJLEVBQUU7QUFBTyx1QkFBTyxLQUFLLGFBQWE7QUFBRSxrQkFBRyxNQUFJLEVBQUUsVUFBUSxNQUFJLEVBQUUsUUFBTztBQUFDLG9CQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEtBQUssWUFBWTtBQUFFLG9CQUFHLE1BQUk7QUFBRyx5QkFBTSxFQUFFLEtBQUssTUFBTSxLQUFJLEtBQUssWUFBWSxHQUFHO0FBQUUscUJBQUksTUFBSSxNQUFJLE1BQUksT0FBSyxNQUFJLEVBQUU7QUFBTyx5QkFBTyxLQUFLLGNBQWMsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxNQUFJLE1BQUksS0FBSyxNQUFNLHNCQUFvQixLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQU0sTUFBSSxDQUFDLE1BQUksTUFBSSxFQUFFLEtBQUssTUFBTSxLQUFJLEtBQUssWUFBWSxHQUFHLEtBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGNBQWMsR0FBRTtBQUFDLGtCQUFHLEVBQUMsU0FBUSxHQUFFLE1BQUssRUFBQyxJQUFFLEtBQUs7QUFBTSxrQkFBRyxNQUFJLE1BQUksTUFBSTtBQUFJLGtCQUFFLE9BQU8sSUFBRyxHQUFFLEVBQUUsTUFBTSxHQUFFLEtBQUssTUFBTSxxQkFBbUI7QUFBQSx1QkFBVyxNQUFJO0FBQUksa0JBQUUsS0FBSyxFQUFFLE1BQU07QUFBQSx1QkFBVSxNQUFJLEtBQUk7QUFBQyxvQkFBSSxJQUFFLEVBQUUsRUFBRSxTQUFPO0FBQUcsc0JBQUksRUFBRSxVQUFRLE1BQUksTUFBSSxNQUFJLEVBQUUsVUFBUSxFQUFFLElBQUksR0FBRSxLQUFLLE1BQU0scUJBQW1CLEVBQUUsRUFBRSxTQUFPLE9BQUssRUFBRSxXQUFTLEtBQUssV0FBVyxFQUFFLE1BQU0sR0FBRSxLQUFLLE1BQU0scUJBQW1CO0FBQUEsY0FBRztBQUFNLHFCQUFLLE1BQU0scUJBQW1CLEdBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQSxVQUFDLEdBQUUsS0FBRyxjQUFjLEdBQUU7QUFBQSxZQUFDLGNBQWE7QUFBQyxvQkFBTSxHQUFHLFNBQVMsR0FBRSxLQUFLLFFBQU0sb0JBQUksT0FBSSxLQUFLLFFBQU0sb0JBQUksT0FBSSxLQUFLLGFBQVcsb0JBQUksT0FBSSxLQUFLLFVBQVEsb0JBQUksT0FBSSxLQUFLLHFCQUFtQixvQkFBSTtBQUFBLFlBQUc7QUFBQSxVQUFDLEdBQUUsS0FBRyxjQUFjLEdBQUU7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsWUFBWSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxhQUFhO0FBQUUsa0JBQUcsSUFBRSxJQUFHO0FBQUMscUJBQUssbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLEVBQUUsbUJBQW1CLElBQUksQ0FBQztBQUFFO0FBQUEsY0FBTTtBQUFDLG9CQUFNLFlBQVksR0FBRyxTQUFTLEdBQUUsSUFBRSxPQUFLLElBQUUsT0FBSyxLQUFLLDBCQUEwQixHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBSyxtQkFBbUIsR0FBRSxDQUFDLElBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFHLElBQUUsTUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUUsSUFBRSxNQUFJLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRSxJQUFFLE1BQUksRUFBRSxRQUFRLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFvQixHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRTtBQUFDLG9CQUFHLElBQUUsSUFBRztBQUFDLHNCQUFJLElBQUUsQ0FBQyxFQUFFLElBQUUsS0FBSSxJQUFFLEVBQUUsV0FBVyxJQUFJLENBQUM7QUFBRSx5QkFBTyxNQUFJO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTTtBQUFBLGNBQUU7QUFBQyxxQkFBTyxJQUFFLE1BQUksRUFBRSxRQUFRLElBQUksQ0FBQyxJQUFFLEVBQUUsUUFBUSxJQUFJLENBQUMsSUFBRSxDQUFDLEVBQUUsSUFBRSxNQUFJLFFBQUcsSUFBRSxNQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBRSxPQUFHLE1BQU0sb0JBQW9CLEdBQUcsU0FBUztBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFdBQVcsSUFBRyxFQUFDLE1BQUssRUFBQyxJQUFFO0FBQUUsZUFBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUcsQ0FBQyxFQUFFLG1CQUFtQixJQUFJLENBQUMsS0FBRyxNQUFNLGlCQUFpQixDQUFDO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxNQUFJLE9BQU8sZUFBZSxLQUFLLEdBQUUsQ0FBQyxLQUFHLEVBQUU7QUFBRyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxnQkFBRyxLQUFHO0FBQUssb0JBQU0sSUFBSSxNQUFNLGNBQWMsT0FBTyxHQUFFLFNBQVMsQ0FBQztBQUFFLG1CQUFPO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLGdCQUFHLENBQUM7QUFBRSxvQkFBTSxJQUFJLE1BQU0sYUFBYTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBQSxVQUFDO0FBQUMsY0FBSSxJQUFFLEVBQUUsT0FBSyxLQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFFBQUksRUFBQyxpQ0FBZ0MsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxZQUFXLEVBQUMsSUFBRTtBQUFFLG1CQUFNLFdBQVcsT0FBTyxHQUFFLGdFQUFnRTtBQUFBLFVBQUMsQ0FBQyxHQUFFLGdDQUErQixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLGNBQWEsRUFBQyxJQUFFO0FBQUUsbUJBQU0sYUFBYSxPQUFPLEdBQUUsNkRBQTZEO0FBQUEsVUFBQyxDQUFDLEdBQUUsbUNBQWtDLEVBQUUsNkRBQTZELEdBQUUsaUNBQWdDLEVBQUUsMENBQTBDLEdBQUUsZ0JBQWUsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRTtBQUFFLG1CQUFNLHFCQUFxQixPQUFPLEdBQUUsSUFBSTtBQUFBLFVBQUMsQ0FBQyxHQUFFLHVCQUFzQixFQUFFLG1EQUFtRCxHQUFFLHdCQUF1QixFQUFFLG9EQUFvRCxHQUFFLHFFQUFvRSxFQUFFLDRHQUE0RyxHQUFFLDhCQUE2QixFQUFFLDZEQUE2RCxHQUFFLGlCQUFnQixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLE1BQUssRUFBQyxJQUFFO0FBQUUsbUJBQU0sK0JBQStCLE9BQU8sR0FBRSxPQUFPO0FBQUEsVUFBQyxDQUFDLEdBQUUsaUNBQWdDLEVBQUUsbURBQW1ELEdBQUUsa0NBQWlDLEVBQUUsMkRBQTJELEdBQUUsZ0NBQStCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsVUFBUyxFQUFDLElBQUU7QUFBRSxtQkFBTTtBQUFBLFVBQXNDLENBQUMsR0FBRSxtQkFBa0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRTtBQUFFLG1CQUFNLHdCQUF3QixPQUFPLEdBQUUsSUFBSTtBQUFBLFVBQUMsQ0FBQyxHQUFFLHlCQUF3QixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFO0FBQUUsbUJBQU0sSUFBSSxPQUFPLEdBQUUseUJBQXlCO0FBQUEsVUFBQyxDQUFDLEdBQUUsb0JBQW1CLEVBQUUscUNBQXFDLEdBQUUscUJBQW9CLEVBQUUsc0NBQXNDLEdBQUUsbUNBQWtDLEVBQUUsOERBQThELEdBQUUsMEJBQXlCLEVBQUUsNENBQTRDLEdBQUUsdUJBQXNCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsV0FBVSxFQUFDLElBQUU7QUFBRSxtQkFBTSxJQUFJLE9BQU8sRUFBRSxJQUFHLGtDQUFrQyxFQUFFLE9BQU8sRUFBRSxJQUFHLGFBQWE7QUFBQSxVQUFDLENBQUMsR0FBRSwyQkFBMEIsRUFBRSx1REFBdUQsR0FBRSxnQ0FBK0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRTtBQUFFLG1CQUFNLDREQUE0RCxPQUFPLEdBQUUsS0FBSztBQUFBLFVBQUMsQ0FBQyxHQUFFLDBCQUF5QixFQUFFLHNEQUFzRCxHQUFFLDJCQUEwQixFQUFFLDBEQUEwRCxHQUFFLHlCQUF3QixFQUFFLHFEQUFxRCxHQUFFLHVDQUFzQyxFQUFFLG1EQUFtRCxHQUFFLDZCQUE0QixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLFVBQVMsRUFBQyxJQUFFO0FBQUUsbUJBQU0sSUFBSSxPQUFPLEdBQUUsNENBQTRDO0FBQUEsVUFBQyxDQUFDLEdBQUUsZ0NBQStCLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsVUFBUyxFQUFDLElBQUU7QUFBRSxtQkFBTSxJQUFJLE9BQU8sR0FBRSwrQ0FBK0M7QUFBQSxVQUFDLENBQUMsR0FBRSx5Q0FBd0MsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRTtBQUFFLG1CQUFNLElBQUksT0FBTyxHQUFFLHFGQUFxRjtBQUFBLFVBQUMsQ0FBQyxHQUFFLHVCQUFzQixFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLGtCQUFpQixFQUFDLElBQUU7QUFBRSxtQkFBTSxJQUFJLE9BQU8sRUFBRSxJQUFHLDJCQUEyQixFQUFFLE9BQU8sRUFBRSxJQUFHLGFBQWE7QUFBQSxVQUFDLENBQUMsR0FBRSx5QkFBd0IsRUFBRSx5REFBeUQsR0FBRSxzQkFBcUIsRUFBRSw2REFBNkQsR0FBRSxrQ0FBaUMsRUFBRSwwREFBMEQsR0FBRSxtQ0FBa0MsRUFBRSw0REFBNEQsR0FBRSwwQ0FBeUMsRUFBRSxrRkFBa0YsR0FBRSw0QkFBMkIsRUFBRSx1REFBdUQsR0FBRSx1QkFBc0IsRUFBRSw0R0FBNEcsR0FBRSxtQkFBa0IsRUFBRSxnRkFBZ0YsR0FBRSwyQkFBMEIsRUFBRSx1REFBdUQsR0FBRSxnQ0FBK0IsRUFBRSxPQUFHO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRTtBQUFFLG1CQUFNLDREQUE0RCxPQUFPLEdBQUUsS0FBSztBQUFBLFVBQUMsQ0FBQyxHQUFFLDRCQUEyQixFQUFFLG1GQUFtRixHQUFFLHdCQUF1QixFQUFFLGdIQUFnSCxHQUFFLHVCQUFzQixFQUFFLG1HQUFtRyxHQUFFLHVDQUFzQyxFQUFFLHFEQUFxRCxHQUFFLG1DQUFrQyxFQUFFLDhDQUE4QyxHQUFFLGdDQUErQixFQUFFLHdEQUF3RCxHQUFFLHlDQUF3QyxFQUFFLE9BQUc7QUFBQyxnQkFBRyxFQUFDLG1CQUFrQixFQUFDLElBQUU7QUFBRSxtQkFBTSx5QkFBeUIsT0FBTyxHQUFFLGlEQUFpRCxFQUFFLE9BQU8sR0FBRSxLQUFLO0FBQUEsVUFBQyxDQUFDLEdBQUUsK0JBQThCLEVBQUUsK0NBQStDLEdBQUUsMkJBQTBCLEVBQUUsbUhBQW1ILEdBQUUsd0NBQXVDLEVBQUUsa0ZBQWtGLEdBQUUsaUNBQWdDLEVBQUUsMEdBQTBHLEdBQUUsaUNBQWdDLEVBQUUsMEdBQTBHLEdBQUUsNkJBQTRCLEVBQUUsdUVBQXVFLEdBQUUsb0JBQW1CLEVBQUUsOEVBQThFLEdBQUUsMEJBQXlCLEVBQUUsd0NBQXdDLEdBQUUsK0JBQThCLEVBQUUsNkNBQTZDLEdBQUUsK0JBQThCLEVBQUUscURBQXFELEdBQUUsa0NBQWlDLEVBQUUsbUVBQW1FLEdBQUUsbUNBQWtDLEVBQUUsT0FBRztBQUFDLGdCQUFHLEVBQUMsTUFBSyxFQUFDLElBQUU7QUFBRSxtQkFBTSx5RkFBeUYsT0FBTyxHQUFFLEdBQUc7QUFBQSxVQUFDLENBQUMsRUFBQyxFQUFFO0FBQUUsbUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQU87QUFBQSxtQkFBTztBQUFNLHVCQUFNO0FBQUEsbUJBQW1CO0FBQVUsdUJBQU07QUFBQSxtQkFBdUI7QUFBUyx1QkFBTTtBQUFBLG1CQUFzQjtBQUFRLHVCQUFNO0FBQUEsbUJBQXFCO0FBQVMsdUJBQU07QUFBQSxtQkFBc0I7QUFBUyx1QkFBTTtBQUFBLG1CQUFzQjtBQUFTLHVCQUFNO0FBQUEsbUJBQXNCO0FBQVMsdUJBQU07QUFBQSxtQkFBc0I7QUFBWSx1QkFBTTtBQUFBLG1CQUF5QjtBQUFVLHVCQUFNO0FBQUE7QUFBMkI7QUFBQTtBQUFBLFVBQU87QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxNQUFJLGFBQVcsTUFBSSxZQUFVLE1BQUk7QUFBQSxVQUFXO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sTUFBSSxRQUFNLE1BQUk7QUFBQSxVQUFLO0FBQUMsY0FBSSxLQUFHLE9BQUcsY0FBYyxFQUFDO0FBQUEsWUFBQyxrQkFBaUI7QUFBQyxxQkFBTztBQUFBLFlBQUU7QUFBQSxZQUFDLGlCQUFnQjtBQUFDLHFCQUFPLEVBQUUsS0FBSyxNQUFNLElBQUk7QUFBQSxZQUFDO0FBQUEsWUFBQywyQkFBMEI7QUFBQyxzQkFBTyxLQUFLLE1BQU0sQ0FBQyxLQUFHLEtBQUssTUFBTSxDQUFDLEtBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxHQUFHLEtBQUcsS0FBSyxzQkFBc0IsTUFBSSxDQUFDLEtBQUssc0JBQXNCO0FBQUEsWUFBQztBQUFBLFlBQUMsK0JBQThCO0FBQUMscUJBQU8sS0FBSyxLQUFLLEdBQUUsS0FBSyx5QkFBeUI7QUFBQSxZQUFDO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRSxHQUFFO0FBQUMsa0JBQUcsQ0FBQyxFQUFFLEtBQUssTUFBTSxJQUFJLEtBQUcsS0FBSyxNQUFNLFNBQU87QUFBRztBQUFPLGtCQUFJLElBQUUsS0FBSyxNQUFNO0FBQU0sa0JBQUcsRUFBRSxRQUFRLENBQUMsTUFBSSxJQUFHO0FBQUMsb0JBQUcsS0FBRyxLQUFLLHdCQUF3QjtBQUFFO0FBQU8sb0JBQUcsS0FBSyxXQUFXLEtBQUssNkJBQTZCLEtBQUssSUFBSSxDQUFDO0FBQUUseUJBQU87QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsaUJBQWlCLEdBQUU7QUFBQyxrQkFBRyxFQUFDLFVBQVMsR0FBRSxrQkFBaUIsR0FBRSxxQkFBb0IsR0FBRSwrQkFBOEIsR0FBRSxlQUFjLElBQUUsRUFBRSw0QkFBMkIsSUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxNQUFJO0FBQUMsc0JBQUksS0FBRyxFQUFFLE1BQUksS0FBSyxNQUFNLEVBQUUsdUJBQXNCLEVBQUMsSUFBRyxHQUFFLGtCQUFpQixDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLE1BQUk7QUFBQyxpQkFBQyxFQUFFLE1BQUksTUFBSSxLQUFHLEVBQUUsTUFBSSxNQUFJLE1BQUksS0FBSyxNQUFNLEVBQUUsdUJBQXNCLEVBQUMsSUFBRyxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsRUFBQyxDQUFDO0FBQUEsY0FBQztBQUFFLHlCQUFPO0FBQUMsb0JBQUcsRUFBQyxVQUFTLEVBQUMsSUFBRSxLQUFLLE9BQU0sSUFBRSxLQUFLLGdCQUFnQixFQUFFLE9BQU8sS0FBRyxPQUFLLElBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFFLG9CQUFHLENBQUM7QUFBRTtBQUFNLG1CQUFHLENBQUMsSUFBRSxFQUFFLGdCQUFjLEtBQUssTUFBTSxFQUFFLGdDQUErQixFQUFDLElBQUcsR0FBRSxVQUFTLEVBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBRSxHQUFFLEdBQUUsVUFBVSxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsUUFBUSxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsVUFBVSxHQUFFLEVBQUUsZ0JBQWMsS0FBRyxHQUFHLENBQUMsS0FBRyxFQUFFLE1BQUksS0FBSyxNQUFNLEVBQUUsbUJBQWtCLEVBQUMsSUFBRyxHQUFFLFVBQVMsRUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFHLE1BQUcsRUFBRSxHQUFFLEdBQUUsTUFBSyxLQUFLLE1BQUksT0FBTyxlQUFlLEtBQUssR0FBRSxDQUFDLElBQUUsS0FBSyxNQUFNLEVBQUUsbUJBQWtCLEVBQUMsSUFBRyxHQUFFLFVBQVMsRUFBQyxDQUFDLEtBQUcsRUFBRSxHQUFFLEdBQUUsVUFBUyxVQUFVLEdBQUUsRUFBRSxHQUFFLEdBQUUsVUFBUyxVQUFVLEdBQUUsRUFBRSxHQUFFLEdBQUUsWUFBVyxVQUFVLEdBQUUsRUFBRSxHQUFFLEdBQUUsWUFBVyxVQUFVLEdBQUUsRUFBRSxHQUFFLEdBQUUsV0FBVSxVQUFVLEdBQUUsRUFBRSxHQUFFLEdBQUUsVUFBUyxVQUFVLElBQUcsRUFBRSxLQUFHLE9BQUksS0FBRyxRQUFNLEVBQUUsU0FBUyxDQUFDLEtBQUcsS0FBSyxNQUFNLEdBQUUsRUFBQyxJQUFHLEdBQUUsVUFBUyxFQUFDLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQW1CLEdBQUU7QUFBQyxzQkFBTztBQUFBLHFCQUFPO0FBQUEscUJBQWtCO0FBQWMseUJBQU8sS0FBSyxNQUFNLENBQUM7QUFBQSxxQkFBTTtBQUF3Qix5QkFBTyxLQUFLLE1BQU0sQ0FBQztBQUFBLHFCQUFNO0FBQW9CLHlCQUFPLEtBQUssTUFBTSxDQUFDO0FBQUEscUJBQU07QUFBNEIseUJBQU8sS0FBSyxNQUFNLEVBQUU7QUFBQTtBQUFFLG9CQUFNLElBQUksTUFBTSxhQUFhO0FBQUEsWUFBQztBQUFBLFlBQUMsWUFBWSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLENBQUM7QUFBRSxxQkFBSyxDQUFDLEtBQUssbUJBQW1CLENBQUM7QUFBRyxrQkFBRSxLQUFLLEVBQUUsQ0FBQztBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMscUJBQXFCLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxLQUFLLDJCQUEyQixHQUFFLEdBQUUsTUFBRyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQywyQkFBMkIsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRyxxQkFBSyxDQUFDLEtBQUssbUJBQW1CLENBQUMsS0FBRztBQUFDLG9CQUFFO0FBQUcsb0JBQUksSUFBRSxFQUFFO0FBQUUsb0JBQUcsS0FBRztBQUFLO0FBQU8sb0JBQUcsRUFBRSxLQUFLLENBQUMsR0FBRSxLQUFLLElBQUksRUFBRSxHQUFFO0FBQUMsc0JBQUUsS0FBSyxNQUFNO0FBQWE7QUFBQSxnQkFBUTtBQUFDLG9CQUFHLEtBQUssbUJBQW1CLENBQUM7QUFBRTtBQUFNLHFCQUFHLEtBQUssT0FBTyxFQUFFO0FBQUU7QUFBQSxjQUFNO0FBQUMscUJBQU8sTUFBSSxFQUFFLFFBQU0sSUFBRztBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFxQixHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssT0FBTyxDQUFDLElBQUUsS0FBSyxPQUFPLEVBQUU7QUFBRyxrQkFBSSxJQUFFLEtBQUsscUJBQXFCLEdBQUUsR0FBRSxDQUFDO0FBQUUscUJBQU8sSUFBRSxLQUFLLE9BQU8sQ0FBQyxJQUFFLEtBQUssT0FBTyxFQUFFLEdBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBbUI7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEtBQUssT0FBTyxFQUFFLEdBQUUsS0FBSyxPQUFPLEVBQUUsR0FBRSxLQUFLLE1BQU0sR0FBRyxLQUFHLEtBQUssTUFBTSxFQUFFLCtCQUE4QixFQUFDLElBQUcsS0FBSyxNQUFNLFNBQVEsQ0FBQyxHQUFFLEVBQUUsV0FBUyxLQUFLLGNBQWMsR0FBRSxLQUFLLE9BQU8sRUFBRSxHQUFFLEtBQUssSUFBSSxFQUFFLE1BQUksRUFBRSxZQUFVLEtBQUssa0JBQWtCLElBQUcsS0FBSyxNQUFNLEVBQUUsTUFBSSxFQUFFLGlCQUFlLEtBQUsscUJBQXFCLElBQUcsS0FBSyxXQUFXLEdBQUUsY0FBYztBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFtQjtBQUFDLGtCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLE1BQUcsSUFBRSxLQUFLLGdCQUFnQixDQUFDO0FBQUUscUJBQUssS0FBSyxJQUFJLEVBQUUsS0FBRztBQUFDLG9CQUFJLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLGtCQUFFLE9BQUssR0FBRSxFQUFFLFFBQU0sS0FBSyxnQkFBZ0IsQ0FBQyxHQUFFLElBQUUsS0FBSyxXQUFXLEdBQUUsaUJBQWlCO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMsdUJBQXNCO0FBQUMsa0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxxQkFBTyxFQUFFLFdBQVMsS0FBSyxrQkFBa0IsR0FBRSxDQUFDLEtBQUssc0JBQXNCLEtBQUcsS0FBSyxNQUFNLEVBQUUsTUFBSSxFQUFFLGlCQUFlLEtBQUsscUJBQXFCLElBQUcsS0FBSyxXQUFXLEdBQUUsaUJBQWlCO0FBQUEsWUFBQztBQUFBLFlBQUMseUJBQXlCLEdBQUU7QUFBQyxtQkFBSyxLQUFLO0FBQUUsa0JBQUksSUFBRSxLQUFLLGdCQUFnQixDQUFDO0FBQUUscUJBQU8sRUFBRSxnQkFBYyxHQUFFLEVBQUUsaUJBQWUsS0FBSyxzQkFBc0IsS0FBRSxHQUFFLEVBQUUsVUFBUSxPQUFHLEtBQUssV0FBVyxHQUFFLGlCQUFpQjtBQUFBLFlBQUM7QUFBQSxZQUFDLHNCQUFxQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxLQUFLLEdBQUUsS0FBSyxXQUFXLEdBQUUsWUFBWTtBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxPQUFPLEVBQUUsR0FBRSxLQUFLLE1BQU0sRUFBRSxJQUFFLEVBQUUsV0FBUyxLQUFLLGtCQUFrQixJQUFFLEVBQUUsV0FBUyxLQUFLLGtCQUFrQixHQUFFLENBQUMsS0FBSyxzQkFBc0IsS0FBRyxLQUFLLE1BQU0sRUFBRSxNQUFJLEVBQUUsaUJBQWUsS0FBSyxxQkFBcUIsSUFBRyxLQUFLLFdBQVcsR0FBRSxhQUFhO0FBQUEsWUFBQztBQUFBLFlBQUMsc0JBQXNCLEdBQUU7QUFBQyxtQkFBSyxpQkFBaUIsRUFBQyxVQUFTLEdBQUUsa0JBQWlCLENBQUMsTUFBSyxLQUFLLEdBQUUscUJBQW9CLENBQUMsVUFBUyxXQUFVLGFBQVksWUFBVyxXQUFVLFlBQVcsVUFBVSxHQUFFLGVBQWMsRUFBRSwrQkFBOEIsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFxQixHQUFFO0FBQUMsbUJBQUssaUJBQWlCLEVBQUMsVUFBUyxHQUFFLGtCQUFpQixDQUFDLEdBQUUscUJBQW9CLENBQUMsTUFBSyxLQUFLLEdBQUUsZUFBYyxFQUFFLHdDQUF1QyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsdUJBQXNCO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsS0FBSyxxQkFBcUIsS0FBSyxJQUFJLEdBQUUsSUFBRSxLQUFLLFVBQVU7QUFBRSxxQkFBTyxFQUFFLENBQUMsR0FBRSxFQUFFLE9BQUssS0FBSyx5QkFBeUIsR0FBRSxFQUFFLGFBQVcsS0FBSyxtQkFBbUIsRUFBRSxHQUFFLEVBQUUsVUFBUSxLQUFLLG1CQUFtQixFQUFFLEdBQUUsS0FBSyxXQUFXLEdBQUUsaUJBQWlCO0FBQUEsWUFBQztBQUFBLFlBQUMseUJBQXlCLEdBQUU7QUFBQyxrQkFBRyxLQUFLLE1BQU0sRUFBRTtBQUFFLHVCQUFPLEtBQUssc0JBQXNCLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBc0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUsbUJBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxNQUFNLEdBQUcsSUFBRSxLQUFLLEtBQUssSUFBRSxLQUFLLFdBQVc7QUFBRSxrQkFBSSxJQUFFLEVBQUMsT0FBTSxHQUFFO0FBQUUscUJBQU8sRUFBRSxTQUFPLEtBQUsscUJBQXFCLDZCQUE0QixLQUFLLHFCQUFxQixLQUFLLE1BQUssQ0FBQyxHQUFFLE9BQUcsTUFBRyxDQUFDLEdBQUUsRUFBRSxPQUFPLFdBQVMsS0FBRyxLQUFLLE1BQU0sRUFBRSxxQkFBb0IsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsVUFBUSxNQUFJLEtBQUssU0FBUyxHQUFFLGlCQUFnQixFQUFFLEtBQUssR0FBRSxLQUFLLFdBQVcsR0FBRSw0QkFBNEI7QUFBQSxZQUFDO0FBQUEsWUFBQyxnQ0FBK0I7QUFBQyxrQkFBRyxLQUFLLFVBQVUsRUFBRSxTQUFPO0FBQUcsdUJBQU87QUFBSyxtQkFBSyxLQUFLO0FBQUUsa0JBQUksSUFBRSxLQUFLLHFCQUFxQjtBQUFFLHFCQUFPLEVBQUUsa0JBQWdCLEtBQUssTUFBTSxFQUFFLGdCQUFlLEVBQUMsSUFBRyxFQUFFLFVBQVMsTUFBSyxRQUFPLENBQUMsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGdCQUFnQixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLE1BQUksSUFBRyxJQUFFLGNBQWEsSUFBRTtBQUFpQixnQkFBRSxpQkFBZSxLQUFLLHlCQUF5QixHQUFFLEtBQUssT0FBTyxFQUFFLEdBQUUsRUFBRSxLQUFHLEtBQUssK0JBQStCLEdBQUUsSUFBRSxFQUFFLEtBQUcsS0FBSyxxQ0FBcUMsQ0FBQyxJQUFFLEtBQUssTUFBTSxDQUFDLE1BQUksRUFBRSxLQUFHLEtBQUsscUNBQXFDLENBQUM7QUFBQSxZQUFFO0FBQUEsWUFBQyxpQ0FBZ0M7QUFBQyxxQkFBTyxLQUFLLGlCQUFpQixJQUFHLEVBQUUsRUFBRSxJQUFJLFFBQUksRUFBRSxTQUFPLGdCQUFjLEVBQUUsU0FBTyxpQkFBZSxFQUFFLFNBQU8sbUJBQWlCLEVBQUUsU0FBTyxrQkFBZ0IsS0FBSyxNQUFNLEVBQUUsbUNBQWtDLEVBQUMsSUFBRyxHQUFFLE1BQUssRUFBRSxLQUFJLENBQUMsR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsNkJBQTRCO0FBQUMsZUFBQyxLQUFLLElBQUksRUFBRSxLQUFHLENBQUMsS0FBSyxpQkFBaUIsS0FBRyxLQUFLLE9BQU8sRUFBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLHVCQUF1QixHQUFFLEdBQUU7QUFBQyxxQkFBTyxLQUFLLGdCQUFnQixJQUFHLENBQUMsR0FBRSxLQUFLLDJCQUEyQixHQUFFLEtBQUssV0FBVyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxrQ0FBaUM7QUFBQyxxQkFBTyxLQUFLLEtBQUssR0FBRSxFQUFFLEtBQUssTUFBTSxJQUFJLEtBQUcsS0FBSyxLQUFLLEdBQUUsS0FBSyxNQUFNLEVBQUUsS0FBRztBQUFBLFlBQUU7QUFBQSxZQUFDLHlCQUF5QixHQUFFO0FBQUMsa0JBQUcsRUFBRSxLQUFLLE1BQU0sQ0FBQyxLQUFHLEtBQUssWUFBWSxLQUFLLGdDQUFnQyxLQUFLLElBQUksQ0FBQztBQUFHO0FBQU8sbUJBQUssT0FBTyxDQUFDO0FBQUUsa0JBQUksSUFBRSxLQUFLLGdCQUFnQjtBQUFFLGdCQUFFLGlCQUFlLEtBQUssc0JBQXNCLEdBQUUsS0FBSyxpQkFBaUIsQ0FBQyxHQUFFLEtBQUssT0FBTyxDQUFDLEdBQUUsRUFBRSxhQUFXLENBQUMsQ0FBQztBQUFFLGtCQUFJLElBQUUsS0FBSyx5QkFBeUI7QUFBRSxxQkFBTyxNQUFJLEVBQUUsaUJBQWUsSUFBRyxLQUFLLDJCQUEyQixHQUFFLEtBQUssV0FBVyxHQUFFLGtCQUFrQjtBQUFBLFlBQUM7QUFBQSxZQUFDLGlDQUFpQyxHQUFFLEdBQUU7QUFBQyxtQkFBSyxJQUFJLEVBQUUsTUFBSSxFQUFFLFdBQVM7QUFBSSxrQkFBSSxJQUFFO0FBQUUsa0JBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMscUJBQUcsS0FBSyxNQUFNLEVBQUUsNEJBQTJCLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBRSxvQkFBSSxJQUFFO0FBQUUsa0JBQUUsUUFBTSxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLGlDQUFnQyxFQUFDLElBQUcsS0FBSyxNQUFNLFlBQVksRUFBQyxDQUFDLEdBQUUsS0FBSyxnQkFBZ0IsSUFBRyxDQUFDLEdBQUUsS0FBSywyQkFBMkI7QUFBRSxvQkFBSSxJQUFFLGNBQWEsSUFBRTtBQUFpQixvQkFBRyxFQUFFLFNBQU87QUFBTSxvQkFBRSxHQUFHLFNBQU8sTUFBSSxLQUFLLE1BQU0sRUFBRSxnQkFBZSxFQUFDLElBQUcsS0FBSyxNQUFNLFlBQVksRUFBQyxDQUFDLEdBQUUsS0FBSyxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUcsS0FBSyxNQUFNLEVBQUUsbUNBQWtDLEVBQUMsSUFBRyxLQUFLLE1BQU0sWUFBWSxFQUFDLENBQUM7QUFBQSx5QkFBVyxFQUFFLFNBQU8sT0FBTTtBQUFDLHNCQUFHLEVBQUUsR0FBRyxXQUFTO0FBQUUseUJBQUssTUFBTSxFQUFFLGdCQUFlLEVBQUMsSUFBRyxLQUFLLE1BQU0sWUFBWSxFQUFDLENBQUM7QUFBQSx1QkFBTTtBQUFDLHdCQUFJLElBQUUsRUFBRSxHQUFHO0FBQUcseUJBQUssWUFBWSxDQUFDLEtBQUcsS0FBSyxNQUFNLEVBQUUsbUNBQWtDLEVBQUMsSUFBRyxLQUFLLE1BQU0sWUFBWSxFQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sZ0JBQWMsRUFBRSxZQUFVLEtBQUssTUFBTSxFQUFFLHVDQUFzQyxFQUFDLElBQUcsS0FBSyxNQUFNLFlBQVksRUFBQyxDQUFDLEdBQUUsRUFBRSxTQUFPLGlCQUFlLEtBQUssTUFBTSxFQUFFLG1DQUFrQyxFQUFDLElBQUcsS0FBSyxNQUFNLFlBQVksRUFBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQyxvQkFBRSxNQUFJLEtBQUssTUFBTSxFQUFFLGdDQUErQixFQUFDLElBQUcsRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFNLG9CQUFFLE9BQUs7QUFBUyx1QkFBTyxLQUFLLFdBQVcsR0FBRSxtQkFBbUI7QUFBQSxjQUFDLE9BQUs7QUFBQyxvQkFBSSxJQUFFO0FBQUUsc0JBQUksRUFBRSxXQUFTO0FBQUksb0JBQUksSUFBRSxLQUFLLHlCQUF5QjtBQUFFLHVCQUFPLE1BQUksRUFBRSxpQkFBZSxJQUFHLEtBQUssMkJBQTJCLEdBQUUsS0FBSyxXQUFXLEdBQUUscUJBQXFCO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFtQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUsa0JBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRTtBQUFFLHVCQUFPLEtBQUssdUJBQXVCLDhCQUE2QixDQUFDO0FBQUUsa0JBQUcsS0FBSyxNQUFNLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUsdUJBQU8sS0FBSyxLQUFLLEdBQUUsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSxJQUFFLEtBQUssdUJBQXVCLG1DQUFrQyxDQUFDLEtBQUcsRUFBRSxNQUFJLEtBQUssaUJBQWlCLEdBQUUsS0FBSyxHQUFFLEtBQUssaUNBQWlDLEdBQUUsS0FBRTtBQUFBLGNBQUU7QUFBQyxtQkFBSyxpQkFBaUIsRUFBQyxVQUFTLEdBQUUsa0JBQWlCLENBQUMsVUFBVSxHQUFFLHFCQUFvQixDQUFDLFdBQVUsWUFBVyxXQUFVLGFBQVksVUFBUyxVQUFTLFVBQVUsRUFBQyxDQUFDO0FBQUUsa0JBQUksSUFBRSxLQUFLLHlCQUF5QixDQUFDO0FBQUUscUJBQU8sTUFBSSxLQUFLLGtCQUFrQixDQUFDLEdBQUUsQ0FBQyxFQUFFLFlBQVUsRUFBRSxJQUFJLFNBQU8saUJBQWUsRUFBRSxJQUFJLFNBQU8sU0FBTyxFQUFFLElBQUksU0FBTyxVQUFRLEtBQUsseUJBQXlCLE1BQUksRUFBRSxPQUFLLEVBQUUsSUFBSSxNQUFLLEtBQUssa0JBQWtCLENBQUMsSUFBRyxLQUFLLGlDQUFpQyxHQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVE7QUFBQSxZQUFFO0FBQUEsWUFBQyxxQkFBb0I7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsVUFBUSxLQUFLLHlCQUF5QixHQUFFLEtBQUssV0FBVyxHQUFFLGVBQWU7QUFBQSxZQUFDO0FBQUEsWUFBQywyQkFBMEI7QUFBQyxtQkFBSyxPQUFPLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssWUFBWSxlQUFjLEtBQUssa0JBQWtCLEtBQUssSUFBSSxDQUFDO0FBQUUscUJBQU8sS0FBSyxPQUFPLENBQUMsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLHdCQUF1QjtBQUFDLHFCQUFPLEtBQUssS0FBSyxHQUFFLEtBQUssSUFBSSxFQUFFLElBQUUsS0FBSyxhQUFhLEdBQUcsS0FBRyxLQUFLLGFBQWEsR0FBRyxLQUFHLEtBQUssS0FBSyxHQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBSSxLQUFLLEtBQUssR0FBRSxDQUFDLEtBQUssZUFBZSxLQUFHLFNBQUksS0FBSyxLQUFLLEdBQUUsS0FBSyxNQUFNLEVBQUU7QUFBQSxZQUFHO0FBQUEsWUFBQyw2QkFBNEI7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsT0FBSyxLQUFLLHlCQUF5QixHQUFFLEVBQUUsYUFBVyxLQUFLLHNCQUFzQixFQUFFLEdBQUUsS0FBSyxXQUFXLEdBQUUsaUJBQWlCO0FBQUEsWUFBQztBQUFBLFlBQUMsb0JBQW1CO0FBQUMsa0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxxQkFBTyxLQUFLLE9BQU8sQ0FBQyxHQUFFLEtBQUssTUFBTSxFQUFFLEtBQUcsRUFBRSxXQUFTLEtBQUssTUFBTSxPQUFNLEtBQUssS0FBSyxHQUFFLEtBQUssaUJBQWlCLEdBQUcsS0FBRyxLQUFLLGNBQWMsR0FBRyxNQUFJLEVBQUUsV0FBUyxPQUFJLEtBQUssT0FBTyxDQUFDLEdBQUUsRUFBRSxnQkFBYyxLQUFLLDJCQUEyQixHQUFFLEVBQUUsV0FBUyxLQUFLLGNBQWMsRUFBRSxJQUFFLEtBQUssWUFBWSxJQUFFLE1BQUssS0FBSyxPQUFPLENBQUMsR0FBRSxLQUFLLE1BQU0sRUFBRSxLQUFHLEVBQUUsV0FBUyxLQUFLLE1BQU0sT0FBTSxLQUFLLEtBQUssR0FBRSxLQUFLLE9BQU8sRUFBRSxLQUFHLEtBQUssSUFBSSxFQUFFLE1BQUksRUFBRSxXQUFTLE9BQUksRUFBRSxpQkFBZSxLQUFLLGVBQWUsR0FBRSxLQUFLLFVBQVUsR0FBRSxLQUFLLE9BQU8sQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLGNBQWM7QUFBQSxZQUFDO0FBQUEsWUFBQyxtQkFBa0I7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLGdCQUFFLGVBQWEsS0FBSyxxQkFBcUIscUJBQW9CLEtBQUssd0JBQXdCLEtBQUssSUFBSSxHQUFFLE1BQUcsS0FBRTtBQUFFLGtCQUFJLElBQUUsT0FBRyxJQUFFO0FBQUsscUJBQU8sRUFBRSxhQUFhLFFBQVEsT0FBRztBQUFDLG9CQUFJO0FBQUUsb0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRTtBQUFFLHFCQUFHLE1BQUksZ0JBQWMsTUFBSSxvQkFBa0IsRUFBRSxNQUFJLHdCQUFzQixFQUFFLGFBQVcsS0FBSyxNQUFNLEVBQUUsNEJBQTJCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxJQUFFLEtBQUcsTUFBSSx3QkFBc0IsRUFBRSxZQUFVLE1BQUksa0JBQWlCLE1BQUksaUJBQWUsSUFBRSxFQUFFLGdCQUFlLElBQUUsRUFBRTtBQUFNLG9CQUFJLElBQUUsTUFBSTtBQUFxQixxQkFBRyxJQUFFLE1BQUksT0FBSyxJQUFFLEdBQUUsTUFBSSxLQUFHLEtBQUssTUFBTSxFQUFFLGtDQUFpQyxFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsYUFBYTtBQUFBLFlBQUM7QUFBQSxZQUFDLDBCQUF5QjtBQUFDLGtCQUFHLEVBQUMsT0FBTSxHQUFFLFVBQVMsRUFBQyxJQUFFLEtBQUssT0FBTSxJQUFFLEtBQUssSUFBSSxFQUFFLEdBQUUsSUFBRSxLQUFLLFlBQVksR0FBRSxJQUFFLEtBQUssSUFBSSxFQUFFO0FBQUUsa0JBQUcsS0FBSyxJQUFJLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLGtCQUFFLFdBQVMsR0FBRSxFQUFFLFNBQU8scUJBQW1CLENBQUMsRUFBRSxrQkFBZ0IsRUFBRSxTQUFTLFNBQU8sZUFBYSxFQUFFLFFBQU0sRUFBRSxZQUFVLEtBQUssTUFBTSxFQUFFLHlCQUF3QixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsRUFBRSxRQUFNLElBQUcsRUFBRSxjQUFZLEtBQUssWUFBWSxHQUFFLElBQUUsS0FBSyxXQUFXLEdBQUUsb0JBQW9CO0FBQUEsY0FBQyxXQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssZ0JBQWdCLENBQUM7QUFBRSxrQkFBRSxpQkFBZSxHQUFFLElBQUUsS0FBSyxXQUFXLEdBQUUsZ0JBQWdCO0FBQUEsY0FBQztBQUFDLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSxrQkFBRSxpQkFBZSxHQUFFLElBQUUsS0FBSyxXQUFXLEdBQUUsWUFBWTtBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEwQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxPQUFPLEVBQUUsR0FBRSxFQUFFLGlCQUFlLEtBQUssWUFBWSxHQUFFLEtBQUssT0FBTyxFQUFFLEdBQUUsS0FBSyxXQUFXLEdBQUUscUJBQXFCO0FBQUEsWUFBQztBQUFBLFlBQUMsaUNBQWlDLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sTUFBSSx3QkFBc0IsRUFBRSxXQUFTLENBQUMsQ0FBQyxHQUFFLEtBQUcsS0FBSyxLQUFLLEdBQUUsS0FBSyxLQUFLLElBQUcsS0FBSyxnQkFBZ0IsSUFBRyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLHlCQUF3QjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sRUFBRSxXQUFTLE1BQUk7QUFBQyx3QkFBTyxLQUFLLE1BQU07QUFBQSx1QkFBVztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFRO0FBQUcsMkJBQU8sS0FBSyxjQUFjO0FBQUE7QUFBVSwwQkFBTSxLQUFLLFdBQVc7QUFBQTtBQUFBLGNBQUUsR0FBRyxHQUFFLEtBQUssV0FBVyxHQUFFLGVBQWU7QUFBQSxZQUFDO0FBQUEsWUFBQyw2QkFBNEI7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsVUFBUSxLQUFLLGNBQWMsS0FBRSxHQUFFLEtBQUssV0FBVyxHQUFFLGVBQWU7QUFBQSxZQUFDO0FBQUEsWUFBQyw0QkFBMkI7QUFBQyxxQkFBTyxLQUFLLE1BQU0sU0FBTyxLQUFLLFlBQVksSUFBRSxNQUFNLDBCQUEwQjtBQUFBLFlBQUM7QUFBQSxZQUFDLHFDQUFvQztBQUFDLGtCQUFJLElBQUUsS0FBSyxvQkFBb0I7QUFBRSxxQkFBTyxLQUFLLGFBQWEsR0FBRyxLQUFHLENBQUMsS0FBSyxzQkFBc0IsSUFBRSxLQUFLLHlCQUF5QixDQUFDLElBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBcUI7QUFBQyxzQkFBTyxLQUFLLE1BQU07QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFRO0FBQUcseUJBQU8sS0FBSyx1QkFBdUI7QUFBQSxxQkFBTztBQUFHLHNCQUFHLEtBQUssTUFBTSxVQUFRLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEtBQUssVUFBVSxHQUFFLElBQUUsS0FBSyxVQUFVO0FBQUUsd0JBQUcsRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPO0FBQUksNEJBQU0sS0FBSyxXQUFXO0FBQUUsMkJBQU8sRUFBRSxVQUFRLEtBQUssZ0JBQWdCLEdBQUUsS0FBSyxXQUFXLEdBQUUsZUFBZTtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFHLHlCQUFPLEtBQUssbUNBQW1DO0FBQUEscUJBQU87QUFBRyx5QkFBTyxLQUFLLGlCQUFpQjtBQUFBLHFCQUFPO0FBQUcseUJBQU8sS0FBSyxrQkFBa0I7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEtBQUssWUFBWSxLQUFLLHNCQUFzQixLQUFLLElBQUksQ0FBQyxJQUFFLEtBQUssa0JBQWtCLElBQUUsS0FBSyxtQkFBbUI7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEtBQUssaUJBQWlCO0FBQUEscUJBQU87QUFBRyx5QkFBTyxLQUFLLHlCQUF5QjtBQUFBLHFCQUFPO0FBQUEscUJBQVE7QUFBRyx5QkFBTyxLQUFLLDJCQUEyQjtBQUFBLHlCQUFVO0FBQUMsc0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRSxLQUFLO0FBQU0sc0JBQUcsRUFBRSxDQUFDLEtBQUcsTUFBSSxNQUFJLE1BQUksSUFBRztBQUFDLHdCQUFJLElBQUUsTUFBSSxLQUFHLGtCQUFnQixNQUFJLEtBQUcsa0JBQWdCLEdBQUcsS0FBSyxNQUFNLEtBQUs7QUFBRSx3QkFBRyxNQUFJLFVBQVEsS0FBSyxrQkFBa0IsTUFBSSxJQUFHO0FBQUMsMEJBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSw2QkFBTyxLQUFLLEtBQUssR0FBRSxLQUFLLFdBQVcsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxLQUFLLHFCQUFxQjtBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQTtBQUFFLG9CQUFNLEtBQUssV0FBVztBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEwQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxvQkFBb0I7QUFBRSxxQkFBSyxDQUFDLEtBQUssc0JBQXNCLEtBQUcsS0FBSyxJQUFJLENBQUM7QUFBRyxvQkFBRyxLQUFLLE1BQU0sQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxLQUFLLGdCQUFnQixDQUFDO0FBQUUsb0JBQUUsY0FBWSxHQUFFLEtBQUssT0FBTyxDQUFDLEdBQUUsSUFBRSxLQUFLLFdBQVcsR0FBRSxhQUFhO0FBQUEsZ0JBQUMsT0FBSztBQUFDLHNCQUFJLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLG9CQUFFLGFBQVcsR0FBRSxFQUFFLFlBQVUsS0FBSyxZQUFZLEdBQUUsS0FBSyxPQUFPLENBQUMsR0FBRSxJQUFFLEtBQUssV0FBVyxHQUFFLHFCQUFxQjtBQUFBLGdCQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBcUI7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVSxHQUFFLElBQUUsS0FBSyxNQUFNO0FBQU0scUJBQU8sS0FBSyxLQUFLLEdBQUUsRUFBRSxXQUFTLEdBQUUsRUFBRSxpQkFBZSxLQUFLLDRCQUE0QixHQUFFLE1BQUksY0FBWSxLQUFLLGlDQUFpQyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsZ0JBQWdCO0FBQUEsWUFBQztBQUFBLFlBQUMsaUNBQWlDLEdBQUU7QUFBQyxzQkFBTyxFQUFFLGVBQWU7QUFBQSxxQkFBVTtBQUFBLHFCQUFrQjtBQUFjO0FBQUE7QUFBZSx1QkFBSyxNQUFNLEVBQUUsb0JBQW1CLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUsbUJBQUssaUJBQWlCLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsT0FBSyxLQUFLLHlCQUF5QixHQUFFLEVBQUUsYUFBVyxLQUFLLFdBQVcsTUFBSSxLQUFLLDhCQUE4QixDQUFDLEdBQUUsRUFBRSxnQkFBYyxLQUFLLFdBQVcsR0FBRSxpQkFBaUIsR0FBRSxLQUFLLFdBQVcsR0FBRSxhQUFhO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0NBQStCO0FBQUMsa0JBQUcsS0FBSyxJQUFJLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxvQ0FBb0MsTUFBSSxLQUFLLFlBQVksQ0FBQztBQUFFLG9CQUFHLEtBQUssTUFBTSxxQ0FBbUMsQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUFFLHlCQUFPO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDhCQUE2QjtBQUFDLHFCQUFPLEdBQUcsS0FBSyxNQUFNLElBQUksS0FBRyxDQUFDLEtBQUssTUFBTSxjQUFZLEtBQUssb0JBQW9CLElBQUUsS0FBSyxhQUFhLEdBQUcsSUFBRSxLQUFLLGlCQUFpQixJQUFFLEtBQUssaUNBQWlDLE1BQUksS0FBSyx5QkFBeUIsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLCtCQUErQixHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVLEdBQUUsSUFBRSxLQUFLLElBQUksQ0FBQyxHQUFFLElBQUUsQ0FBQztBQUFFO0FBQUcsa0JBQUUsS0FBSyxFQUFFLENBQUM7QUFBQSxxQkFBUSxLQUFLLElBQUksQ0FBQztBQUFHLHFCQUFPLEVBQUUsV0FBUyxLQUFHLENBQUMsSUFBRSxFQUFFLE1BQUksRUFBRSxRQUFNLEdBQUUsS0FBSyxXQUFXLEdBQUUsQ0FBQztBQUFBLFlBQUU7QUFBQSxZQUFDLGtDQUFpQztBQUFDLHFCQUFPLEtBQUssK0JBQStCLHNCQUFxQixLQUFLLDRCQUE0QixLQUFLLElBQUksR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsMkJBQTBCO0FBQUMscUJBQU8sS0FBSywrQkFBK0IsZUFBYyxLQUFLLGdDQUFnQyxLQUFLLElBQUksR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsMEJBQXlCO0FBQUMscUJBQU8sS0FBSyxNQUFNLEVBQUUsSUFBRSxPQUFHLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxZQUFZLEtBQUsscUNBQXFDLEtBQUssSUFBSSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsdUJBQXNCO0FBQUMsa0JBQUcsRUFBRSxLQUFLLE1BQU0sSUFBSSxLQUFHLEtBQUssTUFBTSxFQUFFO0FBQUUsdUJBQU8sS0FBSyxLQUFLLEdBQUU7QUFBRyxrQkFBRyxLQUFLLE1BQU0sQ0FBQyxHQUFFO0FBQUMsb0JBQUcsRUFBQyxRQUFPLEVBQUMsSUFBRSxLQUFLLE9BQU0sSUFBRSxFQUFFO0FBQU8sb0JBQUc7QUFBQyx5QkFBTyxLQUFLLGdCQUFnQixHQUFFLElBQUUsR0FBRSxFQUFFLFdBQVM7QUFBQSxnQkFBQyxRQUFDO0FBQU0seUJBQU07QUFBQSxnQkFBRTtBQUFBLGNBQUM7QUFBQyxrQkFBRyxLQUFLLE1BQU0sQ0FBQyxHQUFFO0FBQUMscUJBQUssS0FBSztBQUFFLG9CQUFHLEVBQUMsUUFBTyxFQUFDLElBQUUsS0FBSyxPQUFNLElBQUUsRUFBRTtBQUFPLG9CQUFHO0FBQUMseUJBQU8sS0FBSyxpQkFBaUIsR0FBRSxJQUFHLElBQUUsR0FBRSxFQUFFLFdBQVM7QUFBQSxnQkFBQyxRQUFDO0FBQU0seUJBQU07QUFBQSxnQkFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTTtBQUFBLFlBQUU7QUFBQSxZQUFDLHVDQUFzQztBQUFDLHFCQUFPLEtBQUssS0FBSyxHQUFFLENBQUMsRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxxQkFBcUIsTUFBSSxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLE1BQUksS0FBSyxLQUFLLEdBQUUsS0FBSyxNQUFNLEVBQUU7QUFBQSxZQUFJO0FBQUEsWUFBQyxxQ0FBcUMsR0FBRTtBQUFDLHFCQUFPLEtBQUssU0FBUyxNQUFJO0FBQUMsb0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxxQkFBSyxPQUFPLENBQUM7QUFBRSxvQkFBSSxJQUFFLEtBQUssVUFBVSxHQUFFLElBQUUsQ0FBQyxDQUFDLEtBQUssV0FBVyxLQUFLLDRCQUE0QixLQUFLLElBQUksQ0FBQztBQUFFLG9CQUFHLEtBQUcsS0FBSyxNQUFNLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsS0FBSyxtQ0FBbUM7QUFBRSx5QkFBTyxFQUFFLFNBQU8sZ0JBQWMsRUFBRSxnQkFBYyxHQUFFLEVBQUUsVUFBUSxNQUFHLEVBQUUsaUJBQWUsTUFBSyxJQUFFLEtBQUssV0FBVyxHQUFFLGlCQUFpQixNQUFJLEtBQUssMkJBQTJCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxPQUFJLEVBQUUsaUJBQWUsR0FBRSxLQUFLLFdBQVcsR0FBRSxrQkFBa0I7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsS0FBSyxlQUFlLEtBQUcsS0FBSyxXQUFXLEtBQUssMkJBQTJCLEtBQUssSUFBSSxDQUFDO0FBQUUsb0JBQUcsQ0FBQztBQUFFLHlCQUFPLEtBQUcsRUFBRSxnQkFBYyxLQUFLLGdCQUFnQixHQUFFLEVBQUUsVUFBUSxHQUFFLEVBQUUsaUJBQWUsTUFBSyxFQUFFLGlCQUFlLEtBQUssV0FBVyxHQUFFLGlCQUFpQixHQUFFLEtBQUssV0FBVyxHQUFFLGtCQUFrQixLQUFHLEtBQUssc0JBQXNCLE9BQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsS0FBSyxzQkFBc0IsS0FBRTtBQUFFLHVCQUFPLEVBQUUsZ0JBQWMsR0FBRSxFQUFFLGlCQUFlLEdBQUUsRUFBRSxVQUFRLEdBQUUsRUFBRSxpQkFBZSxLQUFLLFdBQVcsR0FBRSxpQkFBaUIsR0FBRSxLQUFLLFdBQVcsR0FBRSxrQkFBa0I7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQywwQ0FBeUM7QUFBQyxxQkFBTyxLQUFLLE1BQU0sRUFBRSxJQUFFLEtBQUsscUNBQXFDLEVBQUUsSUFBRTtBQUFBLFlBQU07QUFBQSxZQUFDLDJCQUEwQjtBQUFDLHFCQUFPLEtBQUssTUFBTSxFQUFFLElBQUUsS0FBSyxzQkFBc0IsSUFBRTtBQUFBLFlBQU07QUFBQSxZQUFDLGlCQUFnQjtBQUFDLHFCQUFPLEtBQUssbUJBQW1CLEVBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyw2QkFBNEI7QUFBQyxrQkFBSSxJQUFFLEtBQUssZ0JBQWdCO0FBQUUsa0JBQUcsS0FBSyxhQUFhLEdBQUcsS0FBRyxDQUFDLEtBQUssc0JBQXNCO0FBQUUsdUJBQU8sS0FBSyxLQUFLLEdBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyw4QkFBNkI7QUFBQyxrQkFBRyxLQUFLLE1BQU0sU0FBTztBQUFJLHVCQUFNO0FBQUcsa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBWSxxQkFBTyxLQUFLLEtBQUssR0FBRSxDQUFDLEVBQUUsS0FBSyxNQUFNLElBQUksS0FBRyxDQUFDLEtBQUssTUFBTSxFQUFFLElBQUUsU0FBSSxLQUFHLEtBQUssTUFBTSxFQUFFLDRCQUEyQixFQUFDLElBQUcsS0FBSyxNQUFNLGlCQUFnQixjQUFhLFVBQVMsQ0FBQyxHQUFFO0FBQUEsWUFBRztBQUFBLFlBQUMsd0JBQXVCO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsTUFBRyxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRyxLQUFLLFVBQVU7QUFBRSxxQkFBTyxLQUFLLFNBQVMsTUFBSTtBQUFDLHFCQUFHLEtBQUssT0FBTyxFQUFFLEdBQUUsRUFBRSxpQkFBZSxLQUFLLFlBQVk7QUFBQSxjQUFDLENBQUMsR0FBRSxLQUFLLFdBQVcsR0FBRSxrQkFBa0I7QUFBQSxZQUFDO0FBQUEsWUFBQyxjQUFhO0FBQUMsaUJBQUcsS0FBSyxNQUFNLE1BQU07QUFBRSxrQkFBSSxJQUFFLEtBQUssMEJBQTBCO0FBQUUsa0JBQUcsS0FBSyxNQUFNLHFDQUFtQyxLQUFLLHNCQUFzQixLQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFBRSx1QkFBTztBQUFFLGtCQUFJLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLHFCQUFPLEVBQUUsWUFBVSxHQUFFLEVBQUUsY0FBWSxLQUFLLG9DQUFvQyxNQUFJLEtBQUssMEJBQTBCLENBQUMsR0FBRSxLQUFLLE9BQU8sRUFBRSxHQUFFLEVBQUUsV0FBUyxLQUFLLGlDQUFpQyxNQUFJLEtBQUssWUFBWSxDQUFDLEdBQUUsS0FBSyxPQUFPLEVBQUUsR0FBRSxFQUFFLFlBQVUsS0FBSyxpQ0FBaUMsTUFBSSxLQUFLLFlBQVksQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLG1CQUFtQjtBQUFBLFlBQUM7QUFBQSxZQUFDLGlDQUFnQztBQUFDLHFCQUFPLEtBQUssYUFBYSxHQUFHLEtBQUcsS0FBSyxVQUFVLEVBQUUsU0FBTztBQUFBLFlBQUU7QUFBQSxZQUFDLDRCQUEyQjtBQUFDLHFCQUFPLEtBQUssd0JBQXdCLElBQUUsS0FBSyxpQ0FBaUMsZ0JBQWdCLElBQUUsS0FBSyxNQUFNLEVBQUUsSUFBRSxLQUFLLGlDQUFpQyxtQkFBbUIsSUFBRSxLQUFLLCtCQUErQixJQUFFLEtBQUssaUNBQWlDLHFCQUFvQixJQUFFLElBQUUsS0FBSyx5QkFBeUI7QUFBQSxZQUFDO0FBQUEsWUFBQyx1QkFBc0I7QUFBQyxtQkFBSyxnQkFBZ0IsY0FBYSwwQkFBMEIsS0FBRyxLQUFLLE1BQU0sRUFBRSx1QkFBc0IsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssVUFBVSxHQUFFLElBQUUsS0FBSyw4QkFBOEI7QUFBRSxxQkFBTyxFQUFFLGlCQUFlLEtBQUcsS0FBSyxvQkFBb0IsR0FBRSxLQUFLLE9BQU8sRUFBRSxHQUFFLEVBQUUsYUFBVyxLQUFLLGdCQUFnQixHQUFFLEtBQUssV0FBVyxHQUFFLGlCQUFpQjtBQUFBLFlBQUM7QUFBQSxZQUFDLHNCQUFzQixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUsscUJBQXFCLHlCQUF3QixNQUFJO0FBQUMsb0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSx1QkFBTyxFQUFFLGFBQVcsS0FBSyxrQkFBa0IsR0FBRSxLQUFLLE1BQU0sRUFBRSxNQUFJLEVBQUUsaUJBQWUsS0FBSyxxQkFBcUIsSUFBRyxLQUFLLFdBQVcsR0FBRSwrQkFBK0I7QUFBQSxjQUFDLENBQUM7QUFBRSxxQkFBTyxFQUFFLFVBQVEsS0FBSyxNQUFNLEVBQUUseUJBQXdCLEVBQUMsSUFBRyxHQUFFLE9BQU0sRUFBQyxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyw0QkFBNEIsR0FBRTtBQUFDLGtCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUM7QUFBRSxrQkFBRyxLQUFLLHNCQUFzQjtBQUFFLHVCQUFPO0FBQUssbUJBQUssaUJBQWlCLEdBQUcsR0FBRSxFQUFFLFlBQVUsRUFBRSxVQUFRLE9BQUksRUFBRSxLQUFLLE1BQU0sSUFBSSxLQUFHLEVBQUUsS0FBRyxLQUFLLGdCQUFnQixHQUFFLEtBQUssZ0JBQWdCLEVBQUUsSUFBRyxFQUFFLE1BQUksRUFBRSxLQUFHLE1BQUssS0FBSyxNQUFNLEVBQUUsc0JBQXFCLEVBQUMsSUFBRyxLQUFLLE1BQU0sU0FBUSxDQUFDLElBQUcsRUFBRSxpQkFBZSxLQUFLLHlCQUF5QixLQUFLLHNCQUFzQixLQUFLLElBQUksQ0FBQyxHQUFFLEtBQUssSUFBSSxFQUFFLE1BQUksRUFBRSxVQUFRLEtBQUssc0JBQXNCLFNBQVM7QUFBRyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsT0FBSyxLQUFLLFNBQVMsS0FBSyx5QkFBeUIsS0FBSyxJQUFJLENBQUMsR0FBRSxFQUFFLE9BQUssS0FBSyxXQUFXLEdBQUUsaUJBQWlCLEdBQUUsS0FBSyxXQUFXLEdBQUUsd0JBQXdCO0FBQUEsWUFBQztBQUFBLFlBQUMsNEJBQTRCLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUcsS0FBSyxnQkFBZ0IsR0FBRSxLQUFLLGdCQUFnQixFQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsaUJBQWUsS0FBSyxTQUFTLE1BQUk7QUFBQyxvQkFBRyxFQUFFLGlCQUFlLEtBQUsseUJBQXlCLEtBQUssc0JBQXNCLEtBQUssSUFBSSxDQUFDLEdBQUUsS0FBSyxPQUFPLEVBQUUsR0FBRSxLQUFLLGFBQWEsR0FBRyxLQUFHLEtBQUssVUFBVSxFQUFFLFNBQU8sSUFBRztBQUFDLHNCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUseUJBQU8sS0FBSyxLQUFLLEdBQUUsS0FBSyxXQUFXLEdBQUUsb0JBQW9CO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxLQUFLLFlBQVk7QUFBQSxjQUFDLENBQUMsR0FBRSxLQUFLLFVBQVUsR0FBRSxLQUFLLFdBQVcsR0FBRSx3QkFBd0I7QUFBQSxZQUFDO0FBQUEsWUFBQyxjQUFjLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUFRLG1CQUFLLE1BQU0sVUFBUSxDQUFDLEVBQUUsRUFBRTtBQUFFLGtCQUFHO0FBQUMsdUJBQU8sRUFBRTtBQUFBLGNBQUMsVUFBQztBQUFRLHFCQUFLLE1BQU0sVUFBUTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUFPLG1CQUFLLE1BQU0sU0FBTztBQUFHLGtCQUFHO0FBQUMsdUJBQU8sRUFBRTtBQUFBLGNBQUMsVUFBQztBQUFRLHFCQUFLLE1BQU0sU0FBTztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQ0FBb0MsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNO0FBQWtDLG1CQUFLLE1BQU0sb0NBQWtDO0FBQUcsa0JBQUc7QUFBQyx1QkFBTyxFQUFFO0FBQUEsY0FBQyxVQUFDO0FBQVEscUJBQUssTUFBTSxvQ0FBa0M7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsaUNBQWlDLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUFrQyxtQkFBSyxNQUFNLG9DQUFrQztBQUFHLGtCQUFHO0FBQUMsdUJBQU8sRUFBRTtBQUFBLGNBQUMsVUFBQztBQUFRLHFCQUFLLE1BQU0sb0NBQWtDO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFtQixHQUFFO0FBQUMscUJBQU8sS0FBSyxNQUFNLENBQUMsSUFBRSxLQUFLLG9CQUFvQixJQUFFO0FBQUEsWUFBTTtBQUFBLFlBQUMsc0JBQXNCLEdBQUU7QUFBQyxxQkFBTyxLQUFLLGtCQUFrQixNQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBcUI7QUFBQyxxQkFBTyxLQUFLLGtCQUFrQixNQUFJLEtBQUssS0FBSyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWtCLEdBQUU7QUFBQyxxQkFBTyxLQUFLLFNBQVMsT0FBSyxFQUFFLEdBQUUsS0FBSyxZQUFZLEVBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBbUI7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsS0FBRyxLQUFLLE1BQU0sR0FBRyxJQUFFLEtBQUssY0FBYyxJQUFFLEtBQUssZ0JBQWdCLElBQUUsR0FBRSxLQUFLLElBQUksRUFBRSxNQUFJLEVBQUUsY0FBWSxLQUFLLHdCQUF3QixJQUFHLEtBQUssV0FBVyxHQUFFLGNBQWM7QUFBQSxZQUFDO0FBQUEsWUFBQyx1QkFBdUIsR0FBRTtBQUFDLGtCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLFVBQVEsRUFBRSxRQUFNLE9BQUksRUFBRSxZQUFVLEVBQUUsVUFBUSxPQUFJLEtBQUssaUJBQWlCLEdBQUcsR0FBRSxFQUFFLEtBQUcsS0FBSyxnQkFBZ0IsR0FBRSxLQUFLLGdCQUFnQixFQUFFLElBQUcsRUFBRSxRQUFNLEtBQUcsRUFBRSxHQUFFLEtBQUssT0FBTyxDQUFDLEdBQUUsRUFBRSxVQUFRLEtBQUsscUJBQXFCLGVBQWMsS0FBSyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsR0FBRSxLQUFLLE9BQU8sQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLG1CQUFtQjtBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFvQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxNQUFNLE1BQU0sRUFBRSxHQUFFLEtBQUssT0FBTyxDQUFDLEdBQUUsS0FBSyw0QkFBNEIsRUFBRSxPQUFLLENBQUMsR0FBRSxRQUFPLE1BQUcsQ0FBQyxHQUFFLEtBQUssTUFBTSxLQUFLLEdBQUUsS0FBSyxXQUFXLEdBQUUsZUFBZTtBQUFBLFlBQUM7QUFBQSxZQUFDLG9DQUFvQyxHQUFFO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUc7QUFBRyxrQkFBRyxFQUFFLEtBQUcsS0FBSyxnQkFBZ0IsR0FBRSxLQUFHLEtBQUssZ0JBQWdCLEVBQUUsSUFBRyxFQUFFLEdBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQUssb0NBQW9DLEdBQUUsSUFBRSxHQUFFLEVBQUUsT0FBSztBQUFBLGNBQUM7QUFBTSxxQkFBSyxNQUFNLE1BQU0sRUFBRSxHQUFFLEtBQUssVUFBVSxNQUFNLEVBQUUsR0FBRSxFQUFFLE9BQUssS0FBSyxtQkFBbUIsR0FBRSxLQUFLLFVBQVUsS0FBSyxHQUFFLEtBQUssTUFBTSxLQUFLO0FBQUUscUJBQU8sS0FBSyxXQUFXLEdBQUUscUJBQXFCO0FBQUEsWUFBQztBQUFBLFlBQUMsd0NBQXdDLEdBQUU7QUFBQyxxQkFBTyxLQUFLLGFBQWEsR0FBRyxLQUFHLEVBQUUsU0FBTyxNQUFHLEVBQUUsS0FBRyxLQUFLLGdCQUFnQixLQUFHLEtBQUssTUFBTSxHQUFHLElBQUUsRUFBRSxLQUFHLEtBQUssY0FBYyxJQUFFLEtBQUssV0FBVyxHQUFFLEtBQUssTUFBTSxDQUFDLEtBQUcsS0FBSyxNQUFNLE1BQU0sRUFBRSxHQUFFLEtBQUssVUFBVSxNQUFNLEVBQUUsR0FBRSxFQUFFLE9BQUssS0FBSyxtQkFBbUIsR0FBRSxLQUFLLFVBQVUsS0FBSyxHQUFFLEtBQUssTUFBTSxLQUFLLEtBQUcsS0FBSyxVQUFVLEdBQUUsS0FBSyxXQUFXLEdBQUUscUJBQXFCO0FBQUEsWUFBQztBQUFBLFlBQUMsK0JBQStCLEdBQUUsR0FBRTtBQUFDLGdCQUFFLFdBQVMsS0FBRyxPQUFHLEVBQUUsS0FBRyxLQUFLLGdCQUFnQixHQUFFLEtBQUssZ0JBQWdCLEVBQUUsSUFBRyxFQUFFLEdBQUUsS0FBSyxPQUFPLEVBQUU7QUFBRSxrQkFBSSxJQUFFLEtBQUssdUJBQXVCO0FBQUUscUJBQU8sRUFBRSxlQUFhLFVBQVEsRUFBRSxTQUFPLCtCQUE2QixLQUFLLE1BQU0sRUFBRSwwQkFBeUIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEdBQUUsS0FBSyxVQUFVLEdBQUUsS0FBSyxXQUFXLEdBQUUsMkJBQTJCO0FBQUEsWUFBQztBQUFBLFlBQUMsOEJBQTZCO0FBQUMscUJBQU8sS0FBSyxhQUFhLEdBQUcsS0FBRyxLQUFLLGtCQUFrQixNQUFJO0FBQUEsWUFBRTtBQUFBLFlBQUMseUJBQXdCO0FBQUMscUJBQU8sS0FBSyw0QkFBNEIsSUFBRSxLQUFLLCtCQUErQixJQUFFLEtBQUssa0JBQWtCLEtBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQ0FBZ0M7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLGtCQUFHLEtBQUssaUJBQWlCLEdBQUcsR0FBRSxLQUFLLE9BQU8sRUFBRSxHQUFFLENBQUMsS0FBSyxNQUFNLEdBQUc7QUFBRSxzQkFBTSxLQUFLLFdBQVc7QUFBRSxxQkFBTyxFQUFFLGFBQVcsS0FBSyxjQUFjLEdBQUUsS0FBSyxPQUFPLEVBQUUsR0FBRSxLQUFLLFdBQVcsR0FBRSwyQkFBMkI7QUFBQSxZQUFDO0FBQUEsWUFBQyxZQUFZLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxNQUFNLEdBQUUsSUFBRSxFQUFFO0FBQUUscUJBQU8sS0FBSyxRQUFNLEdBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxtQkFBbUIsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxTQUFTLE9BQUcsRUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFLGtCQUFHLEVBQUUsRUFBRSxXQUFTLENBQUMsRUFBRTtBQUFNLHVCQUFPLEVBQUUsVUFBUSxLQUFLLFFBQU0sRUFBRSxZQUFXLEVBQUU7QUFBQSxZQUFJO0FBQUEsWUFBQyxXQUFXLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxNQUFNLEdBQUUsSUFBRSxFQUFFO0FBQUUsa0JBQUcsTUFBSSxVQUFRLE1BQUk7QUFBRyx1QkFBTztBQUFFLG1CQUFLLFFBQU07QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRTtBQUFDLGtCQUFHLEtBQUssaUJBQWlCO0FBQUU7QUFBTyxrQkFBSSxJQUFFLEtBQUssTUFBTSxNQUFLO0FBQUUscUJBQU8sS0FBSyxhQUFhLEVBQUUsTUFBSSxJQUFFLElBQUcsSUFBRSxRQUFPLEtBQUssbUJBQW1CLE1BQUk7QUFBQyxvQkFBRyxNQUFJO0FBQUcseUJBQU8sRUFBRSxVQUFRLE1BQUcsS0FBSyx1QkFBdUIsR0FBRSxPQUFHLElBQUU7QUFBRSxvQkFBRyxNQUFJO0FBQUcseUJBQU8sRUFBRSxVQUFRLE1BQUcsS0FBSyxXQUFXLEdBQUUsTUFBRyxLQUFFO0FBQUUsb0JBQUcsTUFBSTtBQUFJLHlCQUFPLEtBQUssdUJBQXVCLEdBQUUsRUFBQyxTQUFRLEtBQUUsQ0FBQztBQUFFLG9CQUFHLE1BQUk7QUFBSSx5QkFBTyxLQUFLLHdDQUF3QyxDQUFDO0FBQUUsb0JBQUcsTUFBSSxNQUFJLE1BQUk7QUFBRyx5QkFBTSxDQUFDLEtBQUssTUFBTSxFQUFFLEtBQUcsQ0FBQyxLQUFLLHNCQUFzQixNQUFNLEtBQUcsRUFBRSxVQUFRLE1BQUcsS0FBSyxrQkFBa0IsR0FBRSxLQUFHLEtBQUssTUFBTSxPQUFNLElBQUUsTUFBSSxLQUFLLE9BQU8sRUFBRSxHQUFFLEtBQUssdUJBQXVCLEdBQUUsRUFBQyxPQUFNLE1BQUcsU0FBUSxLQUFFLENBQUM7QUFBRyxvQkFBRyxNQUFJLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEtBQUssNEJBQTRCLEdBQUUsRUFBQyxTQUFRLEtBQUUsQ0FBQztBQUFFLHNCQUFHO0FBQUUsMkJBQU87QUFBQSxnQkFBQztBQUFDLG9CQUFHLEVBQUUsQ0FBQztBQUFFLHlCQUFPLEtBQUssbUJBQW1CLEdBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDhCQUE2QjtBQUFDLHFCQUFPLEtBQUssbUJBQW1CLEtBQUssVUFBVSxHQUFFLEtBQUssTUFBTSxPQUFNLElBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQywyQkFBMkIsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFVLFdBQVU7QUFBQyxzQkFBSSxJQUFFLEtBQUssa0JBQWtCLENBQUM7QUFBRSxzQkFBRztBQUFFLDJCQUFPLEVBQUUsVUFBUSxNQUFHO0FBQUU7QUFBQSxnQkFBSztBQUFBLHFCQUFLO0FBQVMsc0JBQUcsS0FBSyxNQUFNLENBQUMsR0FBRTtBQUFDLHlCQUFLLE1BQU0sTUFBTSxFQUFFLEdBQUUsS0FBSyxVQUFVLE1BQU0sRUFBRTtBQUFFLHdCQUFJLElBQUU7QUFBRSwyQkFBTyxFQUFFLFNBQU8sTUFBRyxFQUFFLEtBQUcsR0FBRSxFQUFFLE9BQUssS0FBSyxtQkFBbUIsR0FBRSxLQUFLLE1BQU0sS0FBSyxHQUFFLEtBQUssVUFBVSxLQUFLLEdBQUUsS0FBSyxXQUFXLEdBQUUscUJBQXFCO0FBQUEsa0JBQUM7QUFBQztBQUFBO0FBQWMseUJBQU8sS0FBSyxtQkFBbUIsR0FBRSxFQUFFLE1BQUssS0FBRTtBQUFBO0FBQUEsWUFBRTtBQUFBLFlBQUMsbUJBQW1CLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQU87QUFBQSxxQkFBTztBQUFXLHNCQUFHLEtBQUssc0JBQXNCLENBQUMsTUFBSSxLQUFLLE1BQU0sRUFBRSxLQUFHLEVBQUUsS0FBSyxNQUFNLElBQUk7QUFBRywyQkFBTyxLQUFLLDJCQUEyQixDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFTLHNCQUFHLEtBQUssc0JBQXNCLENBQUMsR0FBRTtBQUFDLHdCQUFHLEtBQUssTUFBTSxHQUFHO0FBQUUsNkJBQU8sS0FBSyx3Q0FBd0MsQ0FBQztBQUFFLHdCQUFHLEVBQUUsS0FBSyxNQUFNLElBQUk7QUFBRSw2QkFBTyxLQUFLLG9DQUFvQyxDQUFDO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFVO0FBQVksc0JBQUcsS0FBSyxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsS0FBSyxNQUFNLElBQUk7QUFBRSwyQkFBTyxLQUFLLG9DQUFvQyxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFPLHNCQUFHLEtBQUssc0JBQXNCLENBQUMsS0FBRyxFQUFFLEtBQUssTUFBTSxJQUFJO0FBQUUsMkJBQU8sS0FBSyw0QkFBNEIsQ0FBQztBQUFFO0FBQUE7QUFBQSxZQUFNO0FBQUEsWUFBQyxzQkFBc0IsR0FBRTtBQUFDLHFCQUFPLElBQUUsS0FBSyxzQkFBc0IsSUFBRSxTQUFJLEtBQUssS0FBSyxHQUFFLFFBQUksQ0FBQyxLQUFLLGlCQUFpQjtBQUFBLFlBQUM7QUFBQSxZQUFDLG9DQUFvQyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxDQUFDLEtBQUssTUFBTSxFQUFFO0FBQUU7QUFBTyxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUF1QixtQkFBSyxNQUFNLHlCQUF1QjtBQUFHLGtCQUFJLElBQUUsS0FBSyxtQkFBbUIsTUFBSTtBQUFDLG9CQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsaUJBQWUsS0FBSyxzQkFBc0IsR0FBRSxNQUFNLG9CQUFvQixDQUFDLEdBQUUsRUFBRSxhQUFXLEtBQUssd0NBQXdDLEdBQUUsS0FBSyxPQUFPLEVBQUUsR0FBRTtBQUFBLGNBQUMsQ0FBQztBQUFFLGtCQUFHLEtBQUssTUFBTSx5QkFBdUIsR0FBRSxDQUFDLENBQUM7QUFBRSx1QkFBTyxLQUFLLHFCQUFxQixHQUFFLE1BQUssSUFBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLG1DQUFrQztBQUFDLGtCQUFHLEtBQUssVUFBVSxNQUFJO0FBQUcsdUJBQU8sS0FBSyxxQkFBcUI7QUFBQSxZQUFDO0FBQUEsWUFBQyx1QkFBc0I7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEVBQUUsU0FBTyxLQUFLLFNBQVMsTUFBSSxLQUFLLGNBQWMsT0FBSyxLQUFLLE9BQU8sRUFBRSxHQUFFLEtBQUsscUJBQXFCLDZCQUE0QixLQUFLLFlBQVksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUUsRUFBRSxPQUFPLFdBQVMsS0FBRyxLQUFLLE1BQU0sRUFBRSxvQkFBbUIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEtBQUssT0FBTyxFQUFFLEdBQUUsS0FBSyxXQUFXLEdBQUUsOEJBQThCO0FBQUEsWUFBQztBQUFBLFlBQUMsdUJBQXNCO0FBQUMscUJBQU8sR0FBRyxLQUFLLE1BQU0sSUFBSTtBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEwQjtBQUFDLHFCQUFPLEtBQUsscUJBQXFCLElBQUUsUUFBRyxNQUFNLHlCQUF5QjtBQUFBLFlBQUM7QUFBQSxZQUFDLHdCQUF3QixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxPQUFNLElBQUUsS0FBSyxNQUFNLFVBQVMsR0FBRSxJQUFFLE9BQUcsSUFBRTtBQUFHLGtCQUFHLE1BQUksUUFBTztBQUFDLG9CQUFJLElBQUUsQ0FBQztBQUFFLHFCQUFLLGlCQUFpQixFQUFDLFVBQVMsR0FBRSxrQkFBaUIsQ0FBQyxVQUFTLFdBQVUsYUFBWSxZQUFXLFVBQVUsRUFBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLGVBQWMsSUFBRSxFQUFFLFVBQVMsSUFBRSxFQUFFLFVBQVMsTUFBSSxVQUFLLEtBQUcsS0FBRyxNQUFJLEtBQUssTUFBTSxFQUFFLDZCQUE0QixFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsS0FBSyxrQkFBa0I7QUFBRSxtQkFBSyw2QkFBNkIsQ0FBQztBQUFFLGtCQUFJLElBQUUsS0FBSyxrQkFBa0IsRUFBRSxPQUFNLEVBQUUsSUFBSSxPQUFNLENBQUM7QUFBRSxrQkFBRyxLQUFHLEtBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsV0FBUyxFQUFFLGFBQVcsSUFBRyxNQUFJLEVBQUUsZ0JBQWMsSUFBRyxNQUFJLEVBQUUsV0FBUyxJQUFHLE1BQUksRUFBRSxXQUFTLElBQUcsRUFBRSxTQUFPLGdCQUFjLEVBQUUsU0FBTyx1QkFBcUIsS0FBSyxNQUFNLEVBQUUsa0NBQWlDLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFFLFlBQVUsR0FBRSxLQUFLLFdBQVcsR0FBRSxxQkFBcUI7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxXQUFTLEVBQUUsYUFBVyxJQUFHO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWtCLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8seUJBQXVCLE1BQU0sa0JBQWtCLEVBQUUsU0FBUyxLQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQywyQkFBMkIsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUc7QUFBRyxtQkFBSyxNQUFNLEVBQUUsTUFBSSxFQUFFLGFBQVcsS0FBSyxxQ0FBcUMsRUFBRTtBQUFHLGtCQUFJLElBQUUsTUFBSSx3QkFBc0Isc0JBQW9CLE1BQUksaUJBQWUsTUFBSSx1QkFBcUIsb0JBQWtCO0FBQU8sa0JBQUcsS0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUcsS0FBSyxpQkFBaUIsR0FBRTtBQUFDLHFCQUFLLFdBQVcsR0FBRSxDQUFDO0FBQUU7QUFBQSxjQUFNO0FBQUMsa0JBQUcsTUFBSSx1QkFBcUIsS0FBSyxNQUFNLHFCQUFtQixLQUFLLE1BQU0sRUFBRSxrQ0FBaUMsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsVUFBUztBQUFDLHNCQUFNLDJCQUEyQixHQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsY0FBTTtBQUFDLG9CQUFNLDJCQUEyQixHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDRCQUE0QixHQUFFO0FBQUMsZUFBQyxFQUFFLFFBQU0sRUFBRSxLQUFHLEtBQUssZ0JBQWdCLEVBQUUsSUFBRyxFQUFFLElBQUUsTUFBTSw0QkFBNEIsR0FBRyxTQUFTO0FBQUEsWUFBQztBQUFBLFlBQUMsMkJBQTJCLEdBQUU7QUFBQyxnQkFBRSxRQUFRLE9BQUc7QUFBQyxpQkFBQyxLQUFHLE9BQUssU0FBTyxFQUFFLFVBQVEsMEJBQXdCLEtBQUssTUFBTSxFQUFFLDBCQUF5QixFQUFDLElBQUcsRUFBRSxlQUFjLENBQUM7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQkFBaUIsR0FBRSxHQUFFO0FBQUMscUJBQU8sS0FBSywyQkFBMkIsQ0FBQyxHQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsaUJBQWdCO0FBQUMsa0JBQUksSUFBRSxNQUFNLGVBQWUsR0FBRyxTQUFTO0FBQUUscUJBQU8sRUFBRSxTQUFPLHFCQUFtQixLQUFLLDJCQUEyQixFQUFFLFFBQVEsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGVBQWUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsQ0FBQyxLQUFLLHNCQUFzQixLQUFHLEtBQUssTUFBTSxFQUFFLEdBQUU7QUFBQyxxQkFBSyxNQUFNLHFCQUFtQixPQUFHLEtBQUssS0FBSztBQUFFLG9CQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsYUFBVyxHQUFFLEtBQUssV0FBVyxHQUFFLHFCQUFxQjtBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFO0FBQUcsa0JBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLGtCQUFrQixNQUFJLElBQUc7QUFBQyxvQkFBRztBQUFFLHlCQUFPLEVBQUUsT0FBSyxNQUFHO0FBQUUsa0JBQUUsc0JBQW9CLElBQUUsTUFBRyxLQUFLLEtBQUs7QUFBQSxjQUFDO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMsb0JBQUksR0FBRSxJQUFFLEtBQUssbUJBQW1CLE1BQUk7QUFBQyxzQkFBRyxDQUFDLEtBQUcsS0FBSyxxQkFBcUIsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxLQUFLLG9DQUFvQyxHQUFFLENBQUM7QUFBRSx3QkFBRztBQUFFLDZCQUFPO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxJQUFFLEtBQUssaUNBQWlDO0FBQUUsc0JBQUcsQ0FBQztBQUFFLDBCQUFNLEtBQUssV0FBVztBQUFFLHNCQUFHLEtBQUcsQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUFFLDBCQUFNLElBQUUsS0FBSyxNQUFNLFlBQVksR0FBRSxLQUFLLFdBQVc7QUFBRSxzQkFBRyxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEtBQUssOEJBQThCLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSwyQkFBTyxFQUFFLGlCQUFlLEdBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFHLENBQUMsS0FBRyxLQUFLLElBQUksRUFBRSxHQUFFO0FBQUMsd0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUsMkJBQU8sRUFBRSxTQUFPLEdBQUUsRUFBRSxZQUFVLEtBQUssNkJBQTZCLElBQUcsS0FBRSxHQUFFLEtBQUssMkJBQTJCLEVBQUUsU0FBUyxHQUFFLEVBQUUsaUJBQWUsR0FBRSxFQUFFLHdCQUFzQixFQUFFLFdBQVMsSUFBRyxLQUFLLHFCQUFxQixHQUFFLEVBQUUsbUJBQW1CO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxHQUFHLEtBQUssTUFBTSxJQUFJLEtBQUcsS0FBSyxNQUFNLFNBQU87QUFBRywwQkFBTSxLQUFLLFdBQVc7QUFBRSxzQkFBSSxJQUFFLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLGFBQVcsR0FBRSxFQUFFLGlCQUFlLEdBQUUsS0FBSyxXQUFXLEdBQUUsMkJBQTJCO0FBQUEsZ0JBQUMsQ0FBQztBQUFFLG9CQUFHLEtBQUcsS0FBSyxXQUFXLEdBQUUsRUFBRSxHQUFFO0FBQUUseUJBQU87QUFBQSxjQUFDO0FBQUMscUJBQU8sTUFBTSxlQUFlLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGVBQWUsR0FBRTtBQUFDLGtCQUFJO0FBQUUsb0JBQU0sZUFBZSxDQUFDO0FBQUUsa0JBQUcsRUFBQyxRQUFPLEVBQUMsSUFBRTtBQUFFLGdCQUFFLFNBQU8sK0JBQTZCLEdBQUcsSUFBRSxFQUFFLFVBQVEsUUFBTSxFQUFFLG1CQUFpQixFQUFFLGlCQUFlLEVBQUUsZ0JBQWUsRUFBRSxTQUFPLEVBQUU7QUFBQSxZQUFXO0FBQUEsWUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxHQUFHLEVBQUUsSUFBRSxLQUFHLENBQUMsS0FBSyxzQkFBc0IsS0FBRyxLQUFLLGFBQWEsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUsa0JBQUUsYUFBVztBQUFFLG9CQUFJLElBQUUsS0FBSyw4QkFBOEI7QUFBRSx1QkFBTyxJQUFFLEVBQUUsaUJBQWUsSUFBRSxFQUFFLGlCQUFlLEtBQUssb0JBQW9CLEdBQUUsS0FBSyxXQUFXLEdBQUUsZ0JBQWdCLEdBQUUsS0FBSyxhQUFhLEdBQUUsS0FBSyxZQUFZLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sTUFBTSxZQUFZLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFLLE1BQU0sb0JBQWtCLE1BQU0sa0JBQWtCLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyx3QkFBdUI7QUFBQSxZQUFDO0FBQUEsWUFBQyxZQUFZLEdBQUU7QUFBQyxrQkFBRyxFQUFFLGFBQVcsU0FBUSxFQUFFLEtBQUssTUFBTSxJQUFJLEtBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxvQkFBRyxLQUFLLGFBQWEsR0FBRyxLQUFHLEVBQUUsU0FBTyxNQUFJLEVBQUUsU0FBTyxNQUFJLEVBQUUsU0FBTyxPQUFLLEVBQUUsYUFBVyxRQUFPLEtBQUssS0FBSyxHQUFFLElBQUUsS0FBSyxVQUFVLElBQUcsRUFBRSxLQUFLLE1BQU0sSUFBSSxLQUFHLEVBQUUsU0FBTztBQUFHLHlCQUFPLEtBQUssK0JBQStCLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxNQUFNLFlBQVksQ0FBQztBQUFFLHFCQUFPLEVBQUUsZUFBYSxVQUFRLEVBQUUsV0FBVyxTQUFPLEtBQUcsRUFBRSxXQUFXLEdBQUcsU0FBTyw0QkFBMEIsS0FBSyxNQUFNLEVBQUUsd0NBQXVDLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLGtCQUFHLEtBQUssTUFBTSxFQUFFO0FBQUUsdUJBQU8sS0FBSyxLQUFLLEdBQUUsS0FBSyxhQUFhLEdBQUcsS0FBRyxLQUFLLGtCQUFrQixNQUFJLE1BQUksRUFBRSxhQUFXLFFBQU8sS0FBSyxLQUFLLEtBQUcsRUFBRSxhQUFXLFNBQVEsS0FBSywrQkFBK0IsR0FBRSxJQUFFO0FBQUUsa0JBQUcsS0FBSyxJQUFJLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUU7QUFBRSx1QkFBTyxFQUFFLGFBQVcsS0FBSyxnQkFBZ0IsR0FBRSxLQUFLLFVBQVUsR0FBRSxLQUFLLFdBQVcsR0FBRSxvQkFBb0I7QUFBQSxjQUFDLFdBQVMsS0FBSyxjQUFjLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUU7QUFBRSx1QkFBTyxLQUFLLGlCQUFpQixHQUFHLEdBQUUsRUFBRSxLQUFHLEtBQUssZ0JBQWdCLEdBQUUsS0FBSyxVQUFVLEdBQUUsS0FBSyxXQUFXLEdBQUUsOEJBQThCO0FBQUEsY0FBQztBQUFNLHVCQUFPLEtBQUssYUFBYSxHQUFHLEtBQUcsS0FBSyxVQUFVLEVBQUUsU0FBTyxLQUFHLEtBQUssS0FBSyxHQUFFLEVBQUUsYUFBVyxVQUFRLEVBQUUsYUFBVyxTQUFRLE1BQU0sWUFBWSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWlCO0FBQUMscUJBQU8sS0FBSyxhQUFhLEdBQUcsS0FBRyxLQUFLLFVBQVUsRUFBRSxTQUFPO0FBQUEsWUFBRTtBQUFBLFlBQUMsK0JBQThCO0FBQUMsa0JBQUcsS0FBSyxnQkFBZ0IsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUsdUJBQU8sS0FBSyxLQUFLLEdBQUUsRUFBRSxXQUFTLE1BQUcsS0FBSyxXQUFXLEdBQUUsTUFBRyxJQUFFLEdBQUU7QUFBQSxjQUFDO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyw0QkFBNEIsS0FBSyxVQUFVLENBQUM7QUFBRSxvQkFBRztBQUFFLHlCQUFPO0FBQUEsY0FBQztBQUFDLHFCQUFPLE1BQU0sNkJBQTZCO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWtCLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLE9BQUcsRUFBQyxrQkFBaUIsRUFBQyxJQUFFLEtBQUssT0FBTSxJQUFFLE1BQU0sa0JBQWtCLEdBQUUsR0FBRSxLQUFHLENBQUM7QUFBRSxrQkFBRyxDQUFDO0FBQUUsdUJBQU87QUFBRSx1QkFBTyxFQUFDLElBQUcsR0FBRSxNQUFLLEVBQUMsS0FBSSxFQUFFO0FBQWEsaUJBQUMsTUFBSSxNQUFJLFdBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWUsS0FBSyxNQUFNLEVBQUUsdUNBQXNDLEVBQUMsSUFBRyxFQUFDLENBQUMsSUFBRSxFQUFFLFNBQU8sbUJBQWlCLEVBQUUsU0FBTyxvQkFBa0IsRUFBRSxTQUFPLG9CQUFrQixFQUFFLFNBQU8sb0JBQWtCLEVBQUUsU0FBTyxxQkFBbUIsRUFBRSxZQUFZLFNBQU8sTUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFHLEtBQUssTUFBTSxFQUFFLHFFQUFvRSxFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUcscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBc0IsR0FBRSxHQUFFO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLHNCQUFzQixNQUFNLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHVCQUFPLEtBQUssT0FBTyxFQUFFLEdBQUUsS0FBSyx1QkFBdUIsR0FBRSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFHLEtBQUssYUFBYSxHQUFHO0FBQUUsdUJBQU8sS0FBSyx1QkFBdUIsS0FBSyxVQUFVLENBQUM7QUFBRSxrQkFBRyxLQUFLLGFBQWEsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLDRCQUE0QixLQUFLLFVBQVUsQ0FBQztBQUFFLG9CQUFHO0FBQUUseUJBQU87QUFBQSxjQUFDO0FBQUMscUJBQU8sTUFBTSxzQkFBc0IsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsc0JBQXFCO0FBQUMscUJBQU8sS0FBSyxnQkFBZ0IsQ0FBQyxVQUFTLGFBQVksU0FBUyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQW1CLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsS0FBSyxPQUFHLEdBQUcsQ0FBQyxJQUFFLEVBQUUsa0JBQWdCLElBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLDBCQUF5QjtBQUFDLHFCQUFPLEtBQUssYUFBYSxHQUFHLEtBQUcsS0FBSyxrQkFBa0IsTUFBSTtBQUFBLFlBQUc7QUFBQSxZQUFDLGlCQUFpQixHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsQ0FBQyxXQUFVLFdBQVUsVUFBUyxhQUFZLFlBQVcsWUFBVyxZQUFXLFFBQVE7QUFBRSxtQkFBSyxpQkFBaUIsRUFBQyxVQUFTLEdBQUUsa0JBQWlCLEdBQUUscUJBQW9CLENBQUMsTUFBSyxLQUFLLEdBQUUsK0JBQThCLE1BQUcsZUFBYyxFQUFFLHdDQUF1QyxDQUFDO0FBQUUsa0JBQUksSUFBRSxNQUFJO0FBQUMscUJBQUssd0JBQXdCLEtBQUcsS0FBSyxLQUFLLEdBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxtQkFBbUIsR0FBRSxDQUFDLEtBQUcsS0FBSyxNQUFNLEVBQUUsK0JBQThCLEVBQUMsSUFBRyxLQUFLLE1BQU0sWUFBWSxFQUFDLENBQUMsR0FBRSxLQUFLLHNCQUFzQixHQUFFLENBQUMsS0FBRyxLQUFLLDZCQUE2QixHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsRUFBRSxNQUFNO0FBQUEsY0FBQztBQUFFLGdCQUFFLFVBQVEsS0FBSyxtQkFBbUIsQ0FBQyxJQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyw2QkFBNkIsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyx5QkFBeUIsQ0FBQztBQUFFLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxLQUFLLEtBQUssQ0FBQyxHQUFFLEVBQUUsWUFBVSxLQUFLLE1BQU0sRUFBRSwyQkFBMEIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsaUJBQWUsS0FBSyxNQUFNLEVBQUUsZ0NBQStCLEVBQUMsSUFBRyxHQUFFLFVBQVMsRUFBRSxjQUFhLENBQUMsR0FBRSxFQUFFLFdBQVMsS0FBSyxNQUFNLEVBQUUsMEJBQXlCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFFLFlBQVUsS0FBSyxNQUFNLEVBQUUsMkJBQTBCLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBRTtBQUFBLGNBQU07QUFBQyxlQUFDLEtBQUssTUFBTSxtQkFBaUIsRUFBRSxZQUFVLEtBQUssTUFBTSxFQUFFLG1DQUFrQyxFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsRUFBRSxhQUFXLEVBQUUsaUJBQWUsS0FBSyxNQUFNLEVBQUUsdUJBQXNCLEVBQUMsSUFBRyxFQUFDLENBQUMsSUFBRyxNQUFNLDZCQUE2QixHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsNkJBQTZCLEdBQUU7QUFBQyxtQkFBSyxJQUFJLEVBQUUsTUFBSSxFQUFFLFdBQVMsT0FBSSxFQUFFLFlBQVUsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSx3QkFBdUIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLHVCQUFzQixFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMseUJBQXlCLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUUsU0FBTyxlQUFhLEtBQUssMkJBQTJCLEdBQUUsQ0FBQyxJQUFFLFdBQVMsTUFBTSx5QkFBeUIsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsK0JBQThCO0FBQUMscUJBQU8sS0FBSyxxQkFBcUIsSUFBRSxPQUFHLE1BQU0sNkJBQTZCO0FBQUEsWUFBQztBQUFBLFlBQUMsaUJBQWlCLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxDQUFDLEtBQUssTUFBTSwwQkFBd0IsQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUFFLHVCQUFPLE1BQU0saUJBQWlCLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssU0FBUyxNQUFJLE1BQU0saUJBQWlCLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSxxQkFBTyxFQUFFLFFBQU0sRUFBRSxVQUFRLEtBQUssUUFBTSxFQUFFLFlBQVcsRUFBRSxTQUFPLEVBQUUsU0FBTyxNQUFNLDJCQUEyQixHQUFFLEVBQUUsS0FBSyxHQUFFO0FBQUEsWUFBRTtBQUFBLFlBQUMsZUFBZSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLElBQUUsTUFBTSxlQUFlLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBSyxJQUFJLEVBQUUsTUFBSSxFQUFFLFdBQVMsTUFBRyxLQUFLLGlCQUFpQixDQUFDLElBQUcsS0FBSyxNQUFNLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsYUFBVyxHQUFFLEVBQUUsaUJBQWUsS0FBSyxzQkFBc0IsR0FBRSxLQUFLLFdBQVcsR0FBRSxzQkFBc0I7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyx1QkFBdUIsR0FBRTtBQUFDLGtCQUFHLENBQUMsS0FBSyxNQUFNLG9CQUFrQixLQUFLLGFBQWEsR0FBRztBQUFFLHVCQUFPLEtBQUssbUJBQW1CLE1BQUksS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO0FBQUUsa0JBQUksSUFBRSxLQUFLLE1BQU0sT0FBTSxJQUFFLEtBQUssTUFBTSxVQUFTLElBQUUsS0FBSyxjQUFjLEdBQUc7QUFBRSxrQkFBRyxNQUFJLEtBQUssYUFBYSxHQUFHLEtBQUcsQ0FBQyxLQUFLLDZCQUE2QjtBQUFHLHNCQUFNLEtBQUssTUFBTSxFQUFFLG1DQUFrQyxFQUFDLElBQUcsS0FBSyxNQUFNLFNBQVEsQ0FBQztBQUFFLGtCQUFJLElBQUUsRUFBRSxLQUFLLE1BQU0sSUFBSSxLQUFHLEtBQUssNEJBQTRCLEtBQUcsTUFBTSx1QkFBdUIsQ0FBQztBQUFFLHFCQUFPLE1BQUksRUFBRSxTQUFPLDRCQUEwQixFQUFFLFNBQU8sNEJBQTBCLE9BQUssRUFBRSxhQUFXLFNBQVEsTUFBSSxLQUFLLG1CQUFtQixHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxPQUFJLEtBQUc7QUFBQSxZQUFJO0FBQUEsWUFBQyxhQUFhLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQUksQ0FBQyxLQUFHLE1BQUksS0FBSyxhQUFhLEdBQUc7QUFBRTtBQUFPLG9CQUFNLGFBQWEsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFRLEtBQUcsRUFBRTtBQUFFLGtCQUFJLElBQUUsS0FBSyx5QkFBeUIsS0FBSyxzQkFBc0IsS0FBSyxJQUFJLENBQUM7QUFBRSxvQkFBSSxFQUFFLGlCQUFlO0FBQUEsWUFBRTtBQUFBLFlBQUMsNkJBQTZCLEdBQUU7QUFBQyxlQUFDLEVBQUUsWUFBVSxLQUFLLElBQUksRUFBRSxNQUFJLEVBQUUsV0FBUztBQUFJLGtCQUFJLElBQUUsS0FBSyx5QkFBeUI7QUFBRSxvQkFBSSxFQUFFLGlCQUFlO0FBQUEsWUFBRTtBQUFBLFlBQUMsbUJBQW1CLEdBQUU7QUFBQyxrQkFBRyxLQUFLLDZCQUE2QixDQUFDLEdBQUUsS0FBSyxNQUFNLG9CQUFrQixLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLGlDQUFnQyxFQUFDLElBQUcsS0FBSyxNQUFNLFNBQVEsQ0FBQyxHQUFFLEVBQUUsWUFBVSxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMsb0JBQUcsRUFBQyxLQUFJLEVBQUMsSUFBRTtBQUFFLHFCQUFLLE1BQU0sRUFBRSxnQ0FBK0IsRUFBQyxJQUFHLEtBQUssTUFBTSxVQUFTLGNBQWEsRUFBRSxTQUFPLGdCQUFjLENBQUMsRUFBRSxXQUFTLEVBQUUsT0FBSyxJQUFJLE9BQU8sS0FBSyxNQUFNLE1BQU0sRUFBRSxPQUFNLEVBQUUsR0FBRyxHQUFFLEdBQUcsRUFBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQywwQkFBMEIsR0FBRTtBQUFDLHFCQUFPLEVBQUUsWUFBVSxLQUFLLE1BQU0sRUFBRSwyQkFBMEIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEVBQUUsaUJBQWUsS0FBSyxNQUFNLEVBQUUsZ0NBQStCLEVBQUMsSUFBRyxHQUFFLFVBQVMsRUFBRSxjQUFhLENBQUMsR0FBRSxLQUFLLDZCQUE2QixDQUFDLEdBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGdCQUFnQixHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyx5QkFBeUI7QUFBRSxtQkFBRyxLQUFHLEtBQUssTUFBTSxFQUFFLDhCQUE2QixFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUUsa0JBQUcsRUFBQyxTQUFRLElBQUUsT0FBRyxNQUFLLEVBQUMsSUFBRTtBQUFFLG9CQUFJLE1BQUksU0FBTyxNQUFJLFVBQVEsS0FBSyxNQUFNLEVBQUUsaUJBQWdCLEVBQUMsSUFBRyxHQUFFLE1BQUssRUFBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLGlCQUFlLElBQUcsTUFBTSxnQkFBZ0IsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyx1QkFBdUIsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyx5QkFBeUI7QUFBRSxvQkFBSSxFQUFFLGlCQUFlLElBQUcsTUFBTSx1QkFBdUIsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGlDQUFpQyxHQUFFLEdBQUU7QUFBQyxnQkFBRSxTQUFPLHNCQUFvQixFQUFFLFNBQU8sc0JBQW9CLENBQUMsRUFBRSxNQUFNLFFBQU0sTUFBTSxpQ0FBaUMsR0FBRSxDQUFDO0FBQUEsWUFBRTtBQUFBLFlBQUMsZ0JBQWdCLEdBQUU7QUFBQyxvQkFBTSxnQkFBZ0IsQ0FBQyxHQUFFLEVBQUUsZUFBYSxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLE9BQUssRUFBRSxzQkFBb0IsS0FBSyxpQ0FBaUMsSUFBRyxLQUFLLGNBQWMsR0FBRyxNQUFJLEVBQUUsYUFBVyxLQUFLLHNCQUFzQixZQUFZO0FBQUEsWUFBRTtBQUFBLFlBQUMsa0JBQWtCLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUsseUJBQXlCO0FBQUUsb0JBQUksRUFBRSxpQkFBZTtBQUFHLHVCQUFRLElBQUUsVUFBVSxRQUFPLElBQUUsSUFBSSxNQUFNLElBQUUsSUFBRSxJQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxrQkFBRSxJQUFFLEtBQUcsVUFBVTtBQUFHLG9CQUFNLGtCQUFrQixHQUFFLEdBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFvQixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUsseUJBQXlCO0FBQUUsb0JBQUksRUFBRSxpQkFBZSxJQUFHLE1BQU0sb0JBQW9CLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMsb0JBQU0sV0FBVyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUcsU0FBTyxnQkFBYyxDQUFDLEtBQUssc0JBQXNCLEtBQUcsS0FBSyxJQUFJLEVBQUUsTUFBSSxFQUFFLFdBQVM7QUFBSSxrQkFBSSxJQUFFLEtBQUsseUJBQXlCO0FBQUUsb0JBQUksRUFBRSxHQUFHLGlCQUFlLEdBQUUsS0FBSyxpQkFBaUIsRUFBRSxFQUFFO0FBQUEsWUFBRTtBQUFBLFlBQUMsa0NBQWtDLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEtBQUssTUFBTSxFQUFFLE1BQUksRUFBRSxhQUFXLEtBQUssc0JBQXNCLElBQUcsTUFBTSxrQ0FBa0MsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQWtCO0FBQUMsdUJBQVEsSUFBRSxVQUFVLFFBQU8sSUFBRSxJQUFJLE1BQU0sQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxrQkFBRSxLQUFHLFVBQVU7QUFBRyxrQkFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFFLGtCQUFJLEdBQUUsR0FBRTtBQUFFLGtCQUFHLEtBQUssVUFBVSxLQUFLLE1BQUksS0FBSyxNQUFNLEdBQUcsS0FBRyxLQUFLLE1BQU0sRUFBRSxJQUFHO0FBQUMsb0JBQUcsSUFBRSxLQUFLLE1BQU0sTUFBTSxHQUFFLElBQUUsS0FBSyxTQUFTLE1BQUksTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRTtBQUFNLHlCQUFPLEVBQUU7QUFBSyxvQkFBRyxFQUFDLFNBQVEsRUFBQyxJQUFFLEtBQUssT0FBTSxLQUFHLEVBQUUsRUFBRSxTQUFPO0FBQUcsaUJBQUMsT0FBSyxFQUFFLFVBQVEsT0FBSyxFQUFFLFdBQVMsRUFBRSxJQUFJO0FBQUEsY0FBQztBQUFDLGtCQUFHLEdBQUcsSUFBRSxNQUFJLFFBQU0sRUFBRSxVQUFRLENBQUMsS0FBSyxNQUFNLEVBQUU7QUFBRSx1QkFBTyxNQUFNLGlCQUFpQixHQUFHLENBQUM7QUFBRSxrQkFBSTtBQUFFLGtCQUFFLEtBQUcsS0FBSyxNQUFNLE1BQU07QUFBRSxrQkFBSSxJQUFFLEtBQUssU0FBUyxPQUFHO0FBQUMsb0JBQUksSUFBRyxJQUFHO0FBQUcsb0JBQUUsS0FBSyxzQkFBc0I7QUFBRSxvQkFBSSxLQUFHLE1BQU0saUJBQWlCLEdBQUcsQ0FBQztBQUFFLHdCQUFPLEdBQUcsU0FBTyw4QkFBNEIsS0FBRyxHQUFHLFVBQVEsUUFBTSxHQUFHLGtCQUFnQixFQUFFLEtBQUksS0FBRyxNQUFJLE9BQUssU0FBTyxHQUFHLE9BQU8sWUFBVSxLQUFHLEtBQUssMkJBQTJCLElBQUcsQ0FBQyxHQUFFLEdBQUcsaUJBQWUsR0FBRSxLQUFLLFVBQVUsS0FBSyxLQUFHLEdBQUcsZUFBZSxPQUFPLFdBQVMsS0FBRyxHQUFHLEtBQUcsR0FBRyxlQUFlLFVBQVEsUUFBTSxHQUFHLGtCQUFnQixHQUFHLGVBQWUsT0FBTyxHQUFHLFlBQVc7QUFBQSxjQUFFLEdBQUUsQ0FBQztBQUFFLGtCQUFHLENBQUMsRUFBRSxTQUFPLENBQUMsRUFBRTtBQUFRLHVCQUFPLEtBQUcsS0FBSyw2QkFBNkIsQ0FBQyxHQUFFLEVBQUU7QUFBSyxrQkFBRyxDQUFDLE1BQUksR0FBRyxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsR0FBRSxJQUFFLEtBQUssU0FBUyxNQUFJLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEVBQUU7QUFBTyx1QkFBTyxFQUFFO0FBQUssbUJBQUksSUFBRSxNQUFJLFFBQU0sRUFBRTtBQUFLLHVCQUFPLEtBQUssUUFBTSxFQUFFLFdBQVUsRUFBRTtBQUFLLGtCQUFHLEVBQUU7QUFBSyx1QkFBTyxLQUFLLFFBQU0sRUFBRSxXQUFVLEtBQUcsS0FBSyw2QkFBNkIsQ0FBQyxHQUFFLEVBQUU7QUFBSyxtQkFBSSxJQUFFLE1BQUksUUFBTSxFQUFFO0FBQUssdUJBQU8sS0FBSyxRQUFNLEVBQUUsV0FBVSxFQUFFO0FBQUsscUJBQU0sSUFBRSxNQUFJLFFBQU0sRUFBRSxTQUFPLEVBQUUsUUFBTSxFQUFFLFNBQU8sRUFBRSxTQUFPLElBQUUsTUFBSSxRQUFNLEVBQUUsU0FBTyxFQUFFLFVBQVEsSUFBRSxNQUFJLE9BQUssU0FBTyxFQUFFLFVBQVEsRUFBRSxXQUFTLElBQUUsTUFBSSxPQUFLLFNBQU8sRUFBRTtBQUFBLFlBQU07QUFBQSxZQUFDLDZCQUE2QixHQUFFO0FBQUMsa0JBQUk7QUFBRSxnQkFBRSxPQUFPLFdBQVMsS0FBRyxHQUFHLElBQUUsRUFBRSxVQUFRLFFBQU0sRUFBRSxrQkFBZ0IsS0FBSyxnQkFBZ0IsY0FBYSwwQkFBMEIsS0FBRyxLQUFLLE1BQU0sRUFBRSx3QkFBdUIsRUFBQyxJQUFHLEVBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGdCQUFnQixHQUFFO0FBQUMscUJBQU0sQ0FBQyxLQUFLLFVBQVUsS0FBSyxLQUFHLEtBQUssTUFBTSxFQUFFLElBQUUsS0FBSyxxQkFBcUIsSUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsV0FBVyxHQUFFO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxTQUFTLE9BQUc7QUFBQyxzQkFBSSxJQUFFLEtBQUsscUNBQXFDLEVBQUU7QUFBRSwwQkFBTyxLQUFLLG1CQUFtQixLQUFHLENBQUMsS0FBSyxNQUFNLEVBQUUsTUFBSSxFQUFFLEdBQUU7QUFBQSxnQkFBQyxDQUFDO0FBQUUsb0JBQUcsRUFBRTtBQUFRO0FBQU8sa0JBQUUsV0FBUyxFQUFFLFVBQVEsS0FBSyxRQUFNLEVBQUUsWUFBVyxFQUFFLGFBQVcsRUFBRTtBQUFBLGNBQUs7QUFBQyxxQkFBTyxNQUFNLFdBQVcsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDZCQUE2QixHQUFFO0FBQUMsbUJBQUssSUFBSSxFQUFFLE1BQUksRUFBRSxTQUFPLGdCQUFjLENBQUMsS0FBSyxNQUFNLG9CQUFrQixDQUFDLEtBQUssTUFBTSxVQUFRLEtBQUssTUFBTSxFQUFFLG1CQUFrQixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsRUFBRSxXQUFTO0FBQUksa0JBQUksSUFBRSxLQUFLLHlCQUF5QjtBQUFFLHFCQUFPLE1BQUksRUFBRSxpQkFBZSxJQUFHLEtBQUssaUJBQWlCLENBQUMsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGFBQWEsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFVO0FBQXVCLHlCQUFPLEtBQUssYUFBYSxFQUFFLFlBQVcsQ0FBQztBQUFBLHFCQUFNO0FBQXNCLHlCQUFNO0FBQUE7QUFBVyx5QkFBTyxNQUFNLGFBQWEsR0FBRSxDQUFDO0FBQUE7QUFBQSxZQUFFO0FBQUEsWUFBQyxhQUFhLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRztBQUFHLHNCQUFPLEVBQUU7QUFBQSxxQkFBVTtBQUEwQix1QkFBSyxvQ0FBb0MsR0FBRSxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFBLHFCQUFxQjtBQUFBLHFCQUEwQjtBQUFrQixzQkFBRSxLQUFLLGdCQUFnQixpQ0FBaUMsRUFBRSwrQkFBOEIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxJQUFFLEtBQUssTUFBTSxFQUFFLCtCQUE4QixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSyxhQUFhLEVBQUUsWUFBVyxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUF1QixtQkFBQyxLQUFHLEVBQUUsS0FBSyxTQUFPLDJCQUF5QixFQUFFLE9BQUssS0FBSyxvQkFBb0IsRUFBRSxJQUFJO0FBQUE7QUFBVyx3QkFBTSxhQUFhLEdBQUUsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFBLFlBQUMsb0NBQW9DLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUUsV0FBVztBQUFBLHFCQUFVO0FBQUEscUJBQXFCO0FBQUEscUJBQTBCO0FBQUEscUJBQXNCO0FBQTBCLHVCQUFLLGFBQWEsRUFBRSxZQUFXLENBQUM7QUFBRTtBQUFBO0FBQWMsd0JBQU0sYUFBYSxHQUFFLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQSxZQUFDLHNCQUFzQixHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVU7QUFBQSxxQkFBcUI7QUFBQSxxQkFBc0I7QUFBc0IsdUJBQUssc0JBQXNCLEVBQUUsWUFBVyxLQUFFO0FBQUU7QUFBQTtBQUFjLHdCQUFNLHNCQUFzQixHQUFFLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQSxZQUFDLFlBQVksR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEVBQUMsc0JBQXFCLE1BQUcscUJBQW9CLGFBQVkscUJBQW9CLGNBQWEsaUJBQWdCLE1BQUksTUFBSSxDQUFDLE1BQUksQ0FBQyxjQUFhLElBQUUsR0FBRSxrQkFBaUIsTUFBSSxNQUFJLENBQUMsTUFBSSxDQUFDLGNBQWEsSUFBRSxFQUFDLEdBQUUsQ0FBQyxLQUFHLE1BQU0sWUFBWSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLHNCQUFPLEtBQUssTUFBTTtBQUFBLHFCQUFXO0FBQUcseUJBQU8sS0FBSyxnQkFBZ0IsSUFBRTtBQUFBO0FBQVUseUJBQU8sTUFBTSxpQkFBaUI7QUFBQTtBQUFBLFlBQUU7QUFBQSxZQUFDLDZCQUE2QixHQUFFO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLGlDQUFpQztBQUFFLG9CQUFHLEtBQUssTUFBTSxFQUFFLEdBQUU7QUFBQyxzQkFBSSxJQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFBRSx5QkFBTyxFQUFFLGlCQUFlLEdBQUU7QUFBQSxnQkFBQztBQUFDLHFCQUFLLFdBQVcsTUFBSyxFQUFFO0FBQUEsY0FBQztBQUFDLHFCQUFPLE1BQU0sNkJBQTZCLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRTtBQUFDLHFCQUFPLEtBQUssTUFBTSxvQkFBa0IsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLGtCQUFrQixNQUFJLEtBQUcsS0FBSyxLQUFLLEdBQUUsU0FBSSxNQUFNLG9CQUFvQixDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWU7QUFBQyxxQkFBTyxLQUFLLE1BQU0sRUFBRSxLQUFHLE1BQU0sY0FBYztBQUFBLFlBQUM7QUFBQSxZQUFDLGtCQUFpQjtBQUFDLHFCQUFPLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxNQUFNLGdCQUFnQjtBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFtQjtBQUFDLGtCQUFJLElBQUUsTUFBTSxrQkFBa0IsR0FBRyxTQUFTO0FBQUUscUJBQU8sRUFBRSxTQUFPLHVCQUFxQixFQUFFLGtCQUFnQixFQUFFLE1BQU0sUUFBTSxFQUFFLGVBQWUsU0FBTyxLQUFLLE1BQU0sRUFBRSwyQkFBMEIsRUFBQyxJQUFHLEVBQUUsZUFBYyxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQkFBaUIsR0FBRTtBQUFDLGtCQUFHLEtBQUssTUFBTSxRQUFPO0FBQUMsb0JBQUcsTUFBSTtBQUFHLHlCQUFPLEtBQUssU0FBUyxJQUFHLENBQUM7QUFBRSxvQkFBRyxNQUFJO0FBQUcseUJBQU8sS0FBSyxTQUFTLElBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxNQUFNLGlCQUFpQixDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsZUFBYztBQUFDLGtCQUFHLEVBQUMsTUFBSyxFQUFDLElBQUUsS0FBSztBQUFNLG9CQUFJLE1BQUksS0FBSyxNQUFNLE9BQUssR0FBRSxLQUFLLGFBQWEsS0FBRyxNQUFJLE9BQUssS0FBSyxNQUFNLE9BQUssR0FBRSxLQUFLLGFBQWE7QUFBQSxZQUFFO0FBQUEsWUFBQyxZQUFXO0FBQUMsa0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRSxLQUFLO0FBQU0scUJBQU8sTUFBSSxNQUFJLEtBQUssTUFBTSxPQUFLLEdBQUUsS0FBSyxTQUFTLElBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQkFBaUIsR0FBRTtBQUFDLHVCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsaUJBQUMsS0FBRyxPQUFLLFNBQU8sRUFBRSxVQUFRLDJCQUF5QixFQUFFLEtBQUcsS0FBSyxvQkFBb0IsQ0FBQztBQUFBLGNBQUU7QUFBQyxvQkFBTSxpQkFBaUIsR0FBRyxTQUFTO0FBQUEsWUFBQztBQUFBLFlBQUMsb0JBQW9CLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFdBQVcsaUJBQWUsRUFBRSxnQkFBZSxLQUFLLGlCQUFpQixFQUFFLFlBQVcsRUFBRSxlQUFlLElBQUksR0FBRyxHQUFFLEVBQUU7QUFBQSxZQUFVO0FBQUEsWUFBQyxpQkFBaUIsR0FBRTtBQUFDLHFCQUFPLEtBQUssTUFBTSxFQUFFLElBQUUsRUFBRSxNQUFNLE9BQUcsS0FBSyxhQUFhLEdBQUUsSUFBRSxDQUFDLElBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLHdCQUF1QjtBQUFDLHFCQUFPLEtBQUssTUFBTSxFQUFFLEtBQUcsTUFBTSxzQkFBc0I7QUFBQSxZQUFDO0FBQUEsWUFBQywwQkFBeUI7QUFBQyxxQkFBTyxNQUFNLHdCQUF3QixLQUFHLEtBQUssZ0JBQWdCO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0NBQWdDLEdBQUU7QUFBQyxrQkFBRyxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssbUJBQW1CLE1BQUksS0FBSyxpQ0FBaUMsQ0FBQztBQUFFLHNCQUFJLEVBQUUsaUJBQWU7QUFBQSxjQUFFO0FBQUMscUJBQU8sTUFBTSxnQ0FBZ0MsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGtDQUFrQyxHQUFFO0FBQUMsa0JBQUksSUFBRSxNQUFNLGtDQUFrQyxDQUFDLEdBQUUsSUFBRSxLQUFLLDZCQUE2QixDQUFDLEVBQUU7QUFBRyxxQkFBTyxLQUFHLEtBQUssWUFBWSxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsd0JBQXVCO0FBQUMsa0JBQUksSUFBRSxNQUFNLHNCQUFzQixHQUFFLElBQUUsS0FBSyx5QkFBeUI7QUFBRSxxQkFBTyxNQUFJLEVBQUUsaUJBQWUsR0FBRSxLQUFLLGlCQUFpQixDQUFDLElBQUc7QUFBQSxZQUFDO0FBQUEsWUFBQyxtQkFBbUIsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNO0FBQWlCLG1CQUFLLE1BQU0sbUJBQWlCO0FBQUcsa0JBQUc7QUFBQyx1QkFBTyxFQUFFO0FBQUEsY0FBQyxVQUFDO0FBQVEscUJBQUssTUFBTSxtQkFBaUI7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsV0FBVyxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBZ0IsbUJBQUssTUFBTSxrQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7QUFBUyxrQkFBRztBQUFDLHlCQUFRLElBQUUsVUFBVSxRQUFPLElBQUUsSUFBSSxNQUFNLElBQUUsSUFBRSxJQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxvQkFBRSxJQUFFLEtBQUcsVUFBVTtBQUFHLHVCQUFPLE1BQU0sV0FBVyxHQUFFLEdBQUcsQ0FBQztBQUFBLGNBQUMsVUFBQztBQUFRLHFCQUFLLE1BQU0sa0JBQWdCO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEyQixHQUFFO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEVBQUU7QUFBRSx1QkFBTyxFQUFFLFdBQVMsTUFBRyxLQUFLLFdBQVcsR0FBRSxNQUFHLEtBQUU7QUFBRSxrQkFBRyxLQUFLLGFBQWEsR0FBRyxHQUFFO0FBQUMsb0JBQUcsQ0FBQyxLQUFLLHNCQUFzQjtBQUFFLHlCQUFPLEVBQUUsV0FBUyxNQUFHLEtBQUssTUFBTSxFQUFFLDBDQUF5QyxFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSyw0QkFBNEIsQ0FBQztBQUFBLGNBQUM7QUFBTSxxQkFBSyxXQUFXLE1BQUssRUFBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGNBQWE7QUFBQyxrQkFBSSxJQUFFLE1BQU0sWUFBWSxHQUFHLFNBQVM7QUFBRSxrQkFBRyxFQUFFLGFBQVcsS0FBSyxVQUFVLFFBQVEsSUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLE9BQUssQ0FBQyxDQUFDLEVBQUUsT0FBTTtBQUFDLG9CQUFHLEVBQUMsS0FBSSxFQUFDLElBQUU7QUFBRSxxQkFBSyxNQUFNLEVBQUUsaUNBQWdDLEVBQUMsSUFBRyxHQUFFLFlBQVcsRUFBRSxTQUFPLGdCQUFjLENBQUMsRUFBRSxXQUFTLEVBQUUsT0FBSyxJQUFJLE9BQU8sS0FBSyxNQUFNLE1BQU0sRUFBRSxPQUFNLEVBQUUsR0FBRyxHQUFFLEdBQUcsRUFBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMsMkJBQTBCO0FBQUMscUJBQU8sS0FBSyxnQkFBZ0IsRUFBRTtBQUFBLFlBQUk7QUFBQSxZQUFDLDhCQUE2QjtBQUFDLHFCQUFNLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixjQUFhLEtBQUs7QUFBQSxZQUFDO0FBQUEsWUFBQyxRQUFPO0FBQUMscUJBQU8sS0FBSyw0QkFBNEIsTUFBSSxLQUFLLE1BQU0sbUJBQWlCLE9BQUksTUFBTSxNQUFNO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWU7QUFBQyxxQkFBTyxLQUFLLDRCQUE0QixNQUFJLEtBQUssTUFBTSxtQkFBaUIsT0FBSSxNQUFNLGNBQWM7QUFBQSxZQUFDO0FBQUEsWUFBQyxxQkFBcUIsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFNLENBQUMsS0FBRyxLQUFHLEtBQUssbUNBQW1DLEdBQUUsT0FBRyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsaUJBQWlCLE1BQUksRUFBRSxhQUFXLFNBQVEsTUFBTSxxQkFBcUIsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUU7QUFBQSxZQUFDLHFCQUFxQixHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU0sQ0FBQyxLQUFHLEtBQUcsS0FBSyxtQ0FBbUMsR0FBRSxNQUFHLENBQUMsR0FBRSxLQUFLLFdBQVcsR0FBRSxpQkFBaUIsTUFBSSxFQUFFLGFBQVcsU0FBUSxNQUFNLHFCQUFxQixHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBRTtBQUFBLFlBQUMsbUNBQW1DLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFFLGFBQVcsU0FBUSxJQUFFLElBQUUsVUFBUSxZQUFXLElBQUUsRUFBRSxJQUFHLEdBQUUsSUFBRSxPQUFHLElBQUUsTUFBRyxJQUFFLEVBQUUsSUFBSTtBQUFNLGtCQUFHLEtBQUssYUFBYSxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssZ0JBQWdCO0FBQUUsb0JBQUcsS0FBSyxhQUFhLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsS0FBSyxnQkFBZ0I7QUFBRSxxQkFBRyxLQUFLLE1BQU0sSUFBSSxLQUFHLElBQUUsTUFBRyxJQUFFLEdBQUUsSUFBRSxJQUFFLEtBQUssZ0JBQWdCLElBQUUsS0FBSyxzQkFBc0IsR0FBRSxJQUFFLFVBQUssSUFBRSxHQUFFLElBQUU7QUFBQSxnQkFBRztBQUFNLHFCQUFHLEtBQUssTUFBTSxJQUFJLEtBQUcsSUFBRSxPQUFHLElBQUUsSUFBRSxLQUFLLGdCQUFnQixJQUFFLEtBQUssc0JBQXNCLE1BQUksSUFBRSxNQUFHLElBQUU7QUFBQSxjQUFFO0FBQU0sbUJBQUcsS0FBSyxNQUFNLElBQUksTUFBSSxJQUFFLE1BQUcsS0FBRyxJQUFFLEtBQUssZ0JBQWdCLElBQUUsR0FBRSxLQUFLLGFBQWEsRUFBRSxLQUFHLEtBQUssa0JBQWtCLEVBQUUsTUFBSyxFQUFFLElBQUksT0FBTSxNQUFHLElBQUUsS0FBRyxJQUFFLEtBQUssc0JBQXNCO0FBQUcsbUJBQUcsS0FBRyxLQUFLLE1BQU0sSUFBRSxFQUFFLGtDQUFnQyxFQUFFLGlDQUFnQyxFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFHLEdBQUUsRUFBRSxLQUFHO0FBQUUsa0JBQUksSUFBRSxJQUFFLGVBQWE7QUFBYSxnQkFBRSxLQUFHLElBQUUsU0FBTyxTQUFRLEtBQUcsS0FBSyxjQUFjLEVBQUUsTUFBSSxFQUFFLEtBQUcsSUFBRSxLQUFLLGdCQUFnQixJQUFFLEtBQUssc0JBQXNCLElBQUcsRUFBRSxPQUFLLEVBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxJQUFHLEtBQUcsS0FBSyxnQkFBZ0IsRUFBRSxJQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFFLG1CQUFTLEdBQUcsR0FBRTtBQUFDLGdCQUFHLEVBQUUsU0FBTztBQUFtQixxQkFBTTtBQUFHLGdCQUFHLEVBQUMsVUFBUyxHQUFFLFVBQVMsRUFBQyxJQUFFO0FBQUUsbUJBQU8sS0FBRyxFQUFFLFNBQU8sb0JBQWtCLEVBQUUsU0FBTyxxQkFBbUIsRUFBRSxZQUFZLFNBQU8sS0FBRyxRQUFHLEdBQUcsRUFBRSxNQUFNO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEVBQUUsU0FBTyxlQUFhLE9BQUcsRUFBRSxTQUFPLHNCQUFvQixFQUFFLFdBQVMsUUFBRyxHQUFHLEVBQUUsTUFBTTtBQUFBLFVBQUM7QUFBQyxjQUFJLEtBQUcsRUFBRSxPQUFLLEtBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsUUFBSSxFQUFDLHFCQUFvQixFQUFFLDJCQUEyQixHQUFFLGlCQUFnQixFQUFFLGtDQUFrQyxFQUFDLEVBQUUsR0FBRSxLQUFHLE9BQUcsY0FBYyxFQUFDO0FBQUEsWUFBQyxpQkFBaUIsR0FBRTtBQUFDLGtCQUFHLEtBQUssTUFBTSxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHVCQUFPLEtBQUssS0FBSyxHQUFFLEtBQUssY0FBYyxHQUFFLEVBQUUsT0FBSyxNQUFNLGdCQUFnQixJQUFFLEdBQUUsS0FBSyxjQUFjLEdBQUUsS0FBSyxPQUFPLEdBQUcsR0FBRSxLQUFLLGtCQUFrQixHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWtCLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsQ0FBQyxFQUFFLEVBQUUsZ0JBQWMsRUFBRSxTQUFPO0FBQWUscUJBQU8sRUFBRSxlQUFhLEdBQUUsSUFBRSxJQUFFLEtBQUssV0FBVyxHQUFFLGFBQWE7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQkFBaUIsR0FBRTtBQUFDLHFCQUFPLE1BQUksTUFBSSxLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQU0sTUFBSSxDQUFDLE1BQUksS0FBRyxLQUFLLFNBQVMsS0FBSSxDQUFDLElBQUUsTUFBTSxpQkFBaUIsR0FBRyxTQUFTO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWU7QUFBQyxxQkFBTyxLQUFLLGlCQUFpQixZQUFZLEtBQUcsTUFBTSxjQUFjLEdBQUcsU0FBUztBQUFBLFlBQUM7QUFBQSxZQUFDLGtCQUFpQjtBQUFDLHFCQUFPLEtBQUssaUJBQWlCLFlBQVksS0FBRyxNQUFNLGdCQUFnQixHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRTtBQUFDLG9CQUFJLFVBQVEsTUFBTSxrQkFBa0IsR0FBRyxTQUFTO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQWtCO0FBQUMscUJBQU8sS0FBSyxpQkFBaUIsU0FBUyxLQUFHLE1BQU0saUJBQWlCLEdBQUcsU0FBUztBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLHVCQUFRLElBQUUsVUFBVSxRQUFPLElBQUUsSUFBSSxNQUFNLElBQUUsSUFBRSxJQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxrQkFBRSxJQUFFLEtBQUcsVUFBVTtBQUFHLHFCQUFPLE1BQUksaUJBQWUsTUFBTSxZQUFZLEdBQUUsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsYUFBYSxHQUFFO0FBQUMsbUJBQUcsRUFBRSxTQUFPLGlCQUFlLEVBQUUsaUJBQWUsZUFBYSxFQUFFLGVBQWEsWUFBVSxNQUFNLGFBQWEsR0FBRyxTQUFTO0FBQUEsWUFBQztBQUFBLFlBQUMsTUFBTSxHQUFFO0FBQUMscUJBQU8sTUFBTSxNQUFNLENBQUMsSUFBRSxPQUFHLENBQUMsS0FBSyxhQUFhLEVBQUUsS0FBRyxJQUFFLFFBQUcsS0FBSyxVQUFVLEVBQUUsU0FBTztBQUFBLFlBQUc7QUFBQSxZQUFDLG9CQUFvQixHQUFFO0FBQUMsZ0JBQUUsU0FBTyxFQUFFLE1BQU0sU0FBTyxpQkFBZSxNQUFNLG9CQUFvQixHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUEsWUFBQyx5QkFBeUIsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxTQUFPLGlCQUFlLEVBQUUsU0FBTyxFQUFFLE1BQU07QUFBYyx1QkFBTyxNQUFNLHlCQUF5QixHQUFHLFNBQVM7QUFBRSxrQkFBRyxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRTtBQUFFLHVCQUFPLEVBQUUsUUFBTSxLQUFLLGtCQUFrQixHQUFFLFlBQVksR0FBRSxLQUFLLEtBQUssR0FBRSxFQUFFLE9BQUssS0FBSyxlQUFlLE9BQU8sR0FBRSxLQUFLLFdBQVcsR0FBRSxrQkFBa0I7QUFBQSxjQUFDO0FBQUMscUJBQU8sS0FBSyxVQUFVLEdBQUUsRUFBRSxPQUFLLEVBQUUsTUFBSyxLQUFLLGtCQUFrQixHQUFFLFdBQVc7QUFBQSxZQUFDO0FBQUEsWUFBQyxhQUFZO0FBQUMscUJBQU8sS0FBSyxpQkFBaUIsZ0JBQWdCLEtBQUcsTUFBTSxXQUFXLEdBQUcsU0FBUztBQUFBLFlBQUM7QUFBQSxZQUFDLGtCQUFpQjtBQUFDLHFCQUFPLEtBQUssaUJBQWlCLFlBQVksS0FBRyxNQUFNLGdCQUFnQixHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUEsWUFBQyxXQUFXLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFFLHFCQUFtQjtBQUFrQixtQkFBSyxLQUFLLEdBQUUsS0FBSyxlQUFlLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssTUFBTSxRQUFPLElBQUUsS0FBSyxpQkFBaUIsWUFBWTtBQUFFLGtCQUFHO0FBQUUsb0JBQUcsS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sR0FBRyxLQUFHLEtBQUssTUFBTSxDQUFDO0FBQUUsb0JBQUUsS0FBRztBQUFBLHFCQUFNO0FBQUMsc0JBQUcsS0FBRyxDQUFDO0FBQUUsMkJBQU8sRUFBRSxLQUFHLE1BQUssRUFBRSxPQUFLLEtBQUssa0JBQWtCLEdBQUUsV0FBVyxHQUFFLEtBQUssV0FBVyxHQUFFLENBQUM7QUFBRSx3QkFBTSxLQUFLLE1BQU0sR0FBRyxxQkFBb0IsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBQSxnQkFBQztBQUFBO0FBQU0scUJBQUssYUFBYSxHQUFFLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEtBQUssZ0JBQWdCLENBQUMsR0FBRSxFQUFFLE9BQUssS0FBSyxpQkFBaUIsV0FBVyxLQUFHLEtBQUssZUFBZSxDQUFDLENBQUMsRUFBRSxZQUFXLENBQUMsR0FBRSxLQUFLLFdBQVcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsWUFBWSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLGlCQUFpQixZQUFZO0FBQUUsa0JBQUcsQ0FBQztBQUFFLHVCQUFPLE1BQU0sWUFBWSxHQUFHLFNBQVM7QUFBRSxrQkFBRyxDQUFDLEtBQUssYUFBYSxFQUFFLEtBQUcsQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUFFLHVCQUFPLEVBQUUsYUFBVyxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUssRUFBRSxjQUFZLEtBQUssa0JBQWtCLEdBQUUsYUFBYSxHQUFFLEtBQUssV0FBVyxHQUFFLHdCQUF3QjtBQUFFLG1CQUFLLGFBQWEsbUJBQW1CO0FBQUUsa0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxxQkFBTyxFQUFFLFdBQVMsR0FBRSxFQUFFLGFBQVcsQ0FBQyxLQUFLLFdBQVcsR0FBRSx3QkFBd0IsQ0FBQyxHQUFFLE1BQU0sWUFBWSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsMkJBQTBCO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxlQUFlO0FBQUUsb0JBQUcsS0FBSyxxQkFBcUIsR0FBRSxNQUFNLEtBQUcsS0FBSyxNQUFNLFdBQVcsR0FBRyxHQUFHLEdBQUUsS0FBSyxvQkFBb0IsSUFBRSxDQUFDLENBQUM7QUFBRSx5QkFBTTtBQUFBLGNBQUU7QUFBQyxxQkFBTyxNQUFNLHlCQUF5QjtBQUFBLFlBQUM7QUFBQSxZQUFDLGlDQUFpQyxHQUFFO0FBQUMscUJBQU8sRUFBRSxjQUFZLEVBQUUsV0FBVyxTQUFPLElBQUUsT0FBRyxNQUFNLGlDQUFpQyxHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUEsWUFBQyxZQUFZLEdBQUU7QUFBQyxrQkFBRyxFQUFDLFlBQVcsRUFBQyxJQUFFO0FBQUUsbUJBQUcsUUFBTSxFQUFFLFdBQVMsRUFBRSxhQUFXLEVBQUUsT0FBTyxPQUFHLEVBQUUsU0FBUyxTQUFPLGFBQWEsSUFBRyxNQUFNLFlBQVksQ0FBQyxHQUFFLEVBQUUsYUFBVztBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxpQkFBaUIsWUFBWTtBQUFFLGtCQUFHLENBQUM7QUFBRSx1QkFBTyxNQUFNLFlBQVksR0FBRyxTQUFTO0FBQUUsa0JBQUcsRUFBRSxhQUFXLENBQUMsR0FBRSxDQUFDLEtBQUssYUFBYSxFQUFFLEtBQUcsQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUFFLHVCQUFPLEVBQUUsU0FBTyxLQUFLLGtCQUFrQixHQUFFLGVBQWUsR0FBRSxLQUFLLFVBQVUsR0FBRSxLQUFLLFdBQVcsR0FBRSxtQkFBbUI7QUFBRSxrQkFBSSxJQUFFLEtBQUssZ0JBQWdCLENBQUM7QUFBRSxxQkFBTyxFQUFFLFFBQU0sR0FBRSxLQUFLLFdBQVcsR0FBRSx3QkFBd0IsR0FBRSxFQUFFLFdBQVcsS0FBSyxDQUFDLEdBQUUsS0FBSyxJQUFJLEVBQUUsTUFBSSxLQUFLLDhCQUE4QixDQUFDLEtBQUcsS0FBSywyQkFBMkIsQ0FBQyxJQUFHLEtBQUssaUJBQWlCLEVBQUUsR0FBRSxFQUFFLFNBQU8sS0FBSyxrQkFBa0IsR0FBRSxLQUFLLFVBQVUsR0FBRSxLQUFLLFdBQVcsR0FBRSxtQkFBbUI7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBbUI7QUFBQyxxQkFBTyxLQUFLLGlCQUFpQixlQUFlLEtBQUcsTUFBTSxrQkFBa0IsR0FBRyxTQUFTO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWU7QUFBQyxtQkFBSyxNQUFNLFFBQU0sS0FBSyxNQUFNLGNBQWMsU0FBTyxLQUFLLE1BQU0sR0FBRyxpQkFBZ0IsRUFBQyxJQUFHLEtBQUssTUFBTSxjQUFhLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQyxHQUFFLEtBQUcsT0FBRyxjQUFjLEVBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLGtCQUFHLEtBQUssTUFBTSxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssTUFBTSxVQUFTLElBQUUsS0FBSyxVQUFVO0FBQUUsb0JBQUcsS0FBSyxLQUFLLEdBQUUsRUFBRSxLQUFLLE1BQU0sSUFBSSxHQUFFO0FBQUMsc0JBQUksSUFBRSxLQUFLLG9CQUFvQixLQUFLLE1BQU0sS0FBSyxHQUFFLElBQUUsS0FBSyxpQkFBaUIsR0FBRSxDQUFDO0FBQUUsc0JBQUcsRUFBRSxPQUFLLHlCQUF3QixLQUFLLE1BQU0sRUFBRTtBQUFFLDJCQUFPO0FBQUEsZ0JBQUM7QUFBQyxxQkFBSyxXQUFXLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWU7QUFBQyxxQkFBTyxLQUFLLGlCQUFpQixLQUFHLE1BQU0sY0FBYyxHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFFLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRSxPQUFPLEtBQUcsV0FBUyxDQUFDLEdBQUUsQ0FBQyxDQUFDLElBQUUsR0FBRSxJQUFFLE9BQU8sS0FBSyxDQUFDLEdBQUUsSUFBRSxFQUFFLFdBQVM7QUFBRSxtQkFBTyxFQUFFLEtBQUssT0FBRztBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPLEtBQUcsTUFBSTtBQUFFO0FBQUMsb0JBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRTtBQUFFLG9CQUFHLE1BQUk7QUFBRSx5QkFBTTtBQUFHLHlCQUFRLEtBQUs7QUFBRSxzQkFBRyxFQUFFLE9BQUssRUFBRTtBQUFHLDJCQUFNO0FBQUcsdUJBQU07QUFBQSxjQUFFO0FBQUEsWUFBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsS0FBSyxPQUFHLE1BQU0sUUFBUSxDQUFDLElBQUUsRUFBRSxPQUFLLElBQUUsTUFBSSxDQUFDO0FBQUUsbUJBQU8sS0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFFLEVBQUUsR0FBRyxLQUFHO0FBQUEsVUFBSTtBQUFDLGNBQUksS0FBRyxDQUFDLFdBQVUsVUFBUyxRQUFPLE9BQU8sR0FBRSxLQUFHLENBQUMsTUFBSyxNQUFLLEtBQUksS0FBSSxHQUFHLEdBQUUsS0FBRyxDQUFDLFFBQU8sS0FBSztBQUFFLG1CQUFTLEdBQUcsR0FBRTtBQUFDLGdCQUFHLEdBQUcsR0FBRSxZQUFZLEdBQUU7QUFBQyxrQkFBRyxHQUFHLEdBQUUsbUJBQW1CO0FBQUUsc0JBQU0sSUFBSSxNQUFNLGlFQUFpRTtBQUFFLGtCQUFJLElBQUUsR0FBRyxHQUFFLGNBQWEsd0JBQXdCO0FBQUUsa0JBQUcsS0FBRztBQUFLLHNCQUFNLElBQUksTUFBTSxpUUFBaVE7QUFBRSxrQkFBRyxPQUFPLEtBQUc7QUFBVSxzQkFBTSxJQUFJLE1BQU0sNkNBQTZDO0FBQUEsWUFBQztBQUFDLGdCQUFHLEdBQUcsR0FBRSxNQUFNLEtBQUcsR0FBRyxHQUFFLFlBQVk7QUFBRSxvQkFBTSxJQUFJLE1BQU0sNkNBQTZDO0FBQUUsZ0JBQUcsR0FBRyxHQUFFLGNBQWMsS0FBRyxHQUFHLEdBQUUsYUFBYTtBQUFFLG9CQUFNLElBQUksTUFBTSxzREFBc0Q7QUFBRSxnQkFBRyxHQUFHLEdBQUUsa0JBQWtCLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsR0FBRSxvQkFBbUIsVUFBVTtBQUFFLGtCQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxJQUFJLE9BQUcsSUFBSSxPQUFPLEdBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQUUsc0JBQU0sSUFBSSxNQUFNLDZFQUE2RSxPQUFPLEdBQUUsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsa0JBQWlCLEVBQUMsWUFBVyxPQUFNLENBQUMsQ0FBQztBQUFFLGtCQUFHLE1BQUksUUFBTztBQUFDLG9CQUFHLEdBQUcsR0FBRSxjQUFjO0FBQUUsd0JBQU0sSUFBSSxNQUFNLDBEQUEwRDtBQUFFLG9CQUFHLEdBQUcsR0FBRSxhQUFhO0FBQUUsd0JBQU0sSUFBSSxNQUFNLHlEQUF5RDtBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLG9CQUFtQixZQUFZO0FBQUUsb0JBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLElBQUksT0FBRyxJQUFJLE9BQU8sR0FBRSxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUk7QUFBRSx3QkFBTSxJQUFJLE1BQU0saUhBQWlILE9BQU8sR0FBRSxHQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFHLE1BQUksT0FBSztBQUFFLHdCQUFNLElBQUksTUFBTSx3SUFBd0k7QUFBQSxjQUFDLFdBQVMsTUFBSSxXQUFTO0FBQUUsc0JBQU0sSUFBSSxNQUFNLHdIQUF3SDtBQUFBLFlBQUM7QUFBQyxnQkFBRyxHQUFHLEdBQUUsa0JBQWtCLEdBQUU7QUFBQyxrQkFBRyxHQUFHLEdBQUUsa0JBQWtCO0FBQUUsc0JBQU0sSUFBSSxNQUFNLCtEQUErRDtBQUFFLGtCQUFHLEdBQUcsR0FBRSxvQkFBbUIsU0FBUyxNQUFJO0FBQVcsc0JBQU0sSUFBSSxNQUFNLHNKQUFzSjtBQUFBLFlBQUM7QUFBQyxnQkFBRyxHQUFHLEdBQUUsZ0JBQWdCLEtBQUcsQ0FBQyxHQUFHLFNBQVMsR0FBRyxHQUFFLGtCQUFpQixZQUFZLENBQUM7QUFBRSxvQkFBTSxJQUFJLE1BQU0saUZBQStFLEdBQUcsSUFBSSxPQUFHLElBQUksT0FBTyxHQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQUUsZ0JBQUcsR0FBRyxHQUFFLG9CQUFvQixLQUFHLENBQUMsR0FBRyxHQUFFLGVBQWUsR0FBRTtBQUFDLGtCQUFJLElBQUUsSUFBSSxNQUFNLDhGQUE4RjtBQUFFLG9CQUFNLEVBQUUsaUJBQWUsaUJBQWdCO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBQyxjQUFJLEtBQUcsRUFBQyxRQUFPLElBQUcsS0FBSSxJQUFHLE1BQUssSUFBRyxZQUFXLElBQUcsYUFBWSxJQUFHLGNBQWEsR0FBRSxHQUFFLEtBQUcsT0FBTyxLQUFLLEVBQUUsR0FBRSxLQUFHLEVBQUMsWUFBVyxVQUFTLGdCQUFlLFFBQU8sYUFBWSxHQUFFLFdBQVUsR0FBRSwyQkFBMEIsT0FBRyw0QkFBMkIsT0FBRyw2QkFBNEIsT0FBRyx5QkFBd0IsT0FBRyx3QkFBdUIsT0FBRyxTQUFRLENBQUMsR0FBRSxZQUFXLE1BQUssUUFBTyxPQUFHLFFBQU8sT0FBRyxnQ0FBK0IsT0FBRyxlQUFjLE9BQUcsZUFBYyxLQUFFO0FBQUUsbUJBQVMsR0FBRyxHQUFFO0FBQUMsZ0JBQUksSUFBRSxDQUFDO0FBQUUscUJBQVEsS0FBSyxPQUFPLEtBQUssRUFBRTtBQUFFLGdCQUFFLEtBQUcsS0FBRyxFQUFFLE1BQUksT0FBSyxFQUFFLEtBQUcsR0FBRztBQUFHLG1CQUFPO0FBQUEsVUFBQztBQUFDLGNBQUksS0FBRyxDQUFDLEdBQUUsTUFBSSxPQUFPLGVBQWUsS0FBSyxHQUFFLENBQUMsS0FBRyxFQUFFLElBQUcsS0FBRyxPQUFHLEVBQUUsU0FBTyw0QkFBMEIsR0FBRyxFQUFFLFVBQVUsSUFBRSxHQUFFLEtBQUcsY0FBYyxHQUFFO0FBQUEsWUFBQyxhQUFhLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRztBQUFHLGtCQUFJLEdBQUU7QUFBRSxrQkFBSTtBQUFFLHVCQUFRLEVBQUUsU0FBTyw4QkFBNEIsSUFBRSxFQUFFLFVBQVEsUUFBTSxFQUFFLG1CQUFpQixJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxTQUFPLGVBQWEsS0FBSyxnQkFBZ0IsaUNBQWlDLEVBQUUsZ0NBQStCLEVBQUMsSUFBRyxFQUFDLENBQUMsSUFBRSxFQUFFLFNBQU8sc0JBQW9CLEtBQUssTUFBTSxFQUFFLGdDQUErQixFQUFDLElBQUcsRUFBQyxDQUFDLElBQUUsS0FBSyxNQUFNLEVBQUUsZ0NBQStCLEVBQUMsSUFBRyxFQUFDLENBQUMsSUFBRyxFQUFFO0FBQUEscUJBQVU7QUFBQSxxQkFBaUI7QUFBQSxxQkFBb0I7QUFBQSxxQkFBbUI7QUFBQSxxQkFBd0I7QUFBYztBQUFBLHFCQUFVO0FBQW1CLG9CQUFFLE9BQUs7QUFBZ0IsMkJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxXQUFXLFFBQU8sSUFBRSxJQUFFLEdBQUUsSUFBRSxHQUFFLEtBQUk7QUFBQyx3QkFBSTtBQUFFLHdCQUFJLElBQUUsRUFBRSxXQUFXLElBQUcsSUFBRSxNQUFJO0FBQUUseUJBQUssaUNBQWlDLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLFNBQU8sa0JBQWdCLElBQUUsRUFBRSxVQUFRLFFBQU0sRUFBRSxvQkFBa0IsS0FBSyxNQUFNLEVBQUUsbUJBQWtCLEVBQUMsSUFBRyxFQUFFLE1BQU0saUJBQWdCLENBQUM7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVUsa0JBQWlCO0FBQUMsc0JBQUcsRUFBQyxLQUFJLEdBQUUsT0FBTSxFQUFDLElBQUU7QUFBRSx1QkFBSyxjQUFjLENBQUMsS0FBRyxLQUFLLFdBQVcsZUFBZSxLQUFLLGlCQUFpQixDQUFDLEdBQUUsRUFBRSxJQUFJLEtBQUssR0FBRSxLQUFLLGFBQWEsR0FBRSxDQUFDO0FBQUU7QUFBQSxnQkFBSztBQUFBLHFCQUFLO0FBQWdCLHdCQUFNLElBQUksTUFBTSw4SEFBOEg7QUFBQSxxQkFBTTtBQUFrQixvQkFBRSxPQUFLLGdCQUFlLEtBQUssaUJBQWlCLEVBQUUsV0FBVSxJQUFFLEVBQUUsVUFBUSxPQUFLLFNBQU8sRUFBRSxrQkFBaUIsQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBdUIsb0JBQUUsYUFBVyxPQUFLLEtBQUssTUFBTSxFQUFFLHVCQUFzQixFQUFDLElBQUcsRUFBRSxLQUFLLElBQUksSUFBRyxDQUFDLEdBQUUsRUFBRSxPQUFLLHFCQUFvQixPQUFPLEVBQUUsVUFBUyxLQUFLLGFBQWEsRUFBRSxNQUFLLENBQUM7QUFBRTtBQUFBLHFCQUFVO0FBQTBCLHVCQUFLLGFBQWEsR0FBRSxDQUFDO0FBQUU7QUFBQTtBQUFBLFlBQU07QUFBQSxZQUFDLGlDQUFpQyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsU0FBTztBQUFlLHFCQUFLLE1BQU0sRUFBRSxTQUFPLFNBQU8sRUFBRSxTQUFPLFFBQU0sRUFBRSxxQkFBbUIsRUFBRSxrQkFBaUIsRUFBQyxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsdUJBQVUsRUFBRSxTQUFPLGlCQUFnQjtBQUFDLGtCQUFFLE9BQUs7QUFBYyxvQkFBSSxJQUFFLEVBQUU7QUFBUyxxQkFBSyxzQkFBc0IsR0FBRSxLQUFFLEdBQUUsS0FBSyxhQUFhLEdBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBSyxNQUFNLEVBQUUsbUJBQWtCLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBQSxjQUFDO0FBQU0scUJBQUssYUFBYSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQkFBaUIsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsU0FBTztBQUFFLHVCQUFRLElBQUUsR0FBRSxLQUFHLEdBQUUsS0FBSTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLG9CQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsc0JBQUcsRUFBRSxTQUFPLGlCQUFnQjtBQUFDLHNCQUFFLE9BQUs7QUFBYyx3QkFBSSxJQUFFLEVBQUU7QUFBUyx5QkFBSyxzQkFBc0IsR0FBRSxJQUFFLEdBQUUsS0FBSyxhQUFhLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQU0seUJBQUssYUFBYSxHQUFFLENBQUM7QUFBRSxvQkFBRSxTQUFPLGtCQUFnQixJQUFFLElBQUUsS0FBSyxNQUFNLEVBQUUsbUJBQWtCLEVBQUMsSUFBRyxFQUFDLENBQUMsSUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLG1CQUFrQixFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsYUFBYSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVU7QUFBQSxxQkFBaUI7QUFBQSxxQkFBb0I7QUFBQSxxQkFBbUI7QUFBQSxxQkFBd0I7QUFBYyx5QkFBTTtBQUFBLHFCQUFPLG9CQUFtQjtBQUFDLHNCQUFJLElBQUUsRUFBRSxXQUFXLFNBQU87QUFBRSx5QkFBTyxFQUFFLFdBQVcsTUFBTSxDQUFDLEdBQUUsTUFBSSxFQUFFLFNBQU8sbUJBQWlCLE1BQUksS0FBRyxFQUFFLFNBQU8sb0JBQWtCLEtBQUssYUFBYSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLHFCQUFLO0FBQWlCLHlCQUFPLEtBQUssYUFBYSxFQUFFLEtBQUs7QUFBQSxxQkFBTTtBQUFnQix5QkFBTyxLQUFLLGFBQWEsRUFBRSxRQUFRO0FBQUEscUJBQU07QUFBa0IseUJBQU8sRUFBRSxTQUFTLE1BQU0sT0FBRyxNQUFJLFFBQU0sS0FBSyxhQUFhLENBQUMsQ0FBQztBQUFBLHFCQUFNO0FBQXVCLHlCQUFPLEVBQUUsYUFBVztBQUFBLHFCQUFRO0FBQTBCLHlCQUFPLEtBQUssYUFBYSxFQUFFLFVBQVU7QUFBQSxxQkFBTTtBQUFBLHFCQUF1QjtBQUEyQix5QkFBTSxDQUFDO0FBQUE7QUFBVSx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFBLFlBQUMsaUJBQWlCLEdBQUUsR0FBRTtBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMscUJBQXFCLEdBQUUsR0FBRTtBQUFDLG1CQUFLLGlCQUFpQixHQUFFLENBQUM7QUFBRSx1QkFBUSxLQUFLO0FBQUUsaUJBQUMsS0FBRyxPQUFLLFNBQU8sRUFBRSxVQUFRLHFCQUFtQixLQUFLLHFCQUFxQixFQUFFLFFBQVE7QUFBQSxZQUFDO0FBQUEsWUFBQyxZQUFZLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxLQUFLLEdBQUUsRUFBRSxXQUFTLEtBQUssd0JBQXdCLEdBQUUsUUFBTyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsZUFBZTtBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxLQUFLLEdBQUUsRUFBRSxXQUFTLEtBQUssaUJBQWlCLEdBQUUsS0FBSyxXQUFXLEdBQUUsYUFBYTtBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLHNCQUFPLEtBQUssTUFBTTtBQUFBLHFCQUFXLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHlCQUFPLEtBQUssS0FBSyxHQUFFLEVBQUUsV0FBUyxLQUFLLGlCQUFpQixHQUFFLElBQUcsSUFBRSxHQUFFLEtBQUssV0FBVyxHQUFFLGNBQWM7QUFBQSxnQkFBQztBQUFBLHFCQUFNO0FBQUUseUJBQU8sS0FBSyxnQkFBZ0IsR0FBRSxJQUFFO0FBQUE7QUFBRSxxQkFBTyxLQUFLLGdCQUFnQjtBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxDQUFDLEdBQUUsSUFBRTtBQUFHLHFCQUFLLENBQUMsS0FBSyxJQUFJLENBQUM7QUFBRyxvQkFBRyxJQUFFLElBQUUsUUFBRyxLQUFLLE9BQU8sRUFBRSxHQUFFLEtBQUcsS0FBSyxNQUFNLEVBQUU7QUFBRSxvQkFBRSxLQUFLLElBQUk7QUFBQSxxQkFBTTtBQUFDLHNCQUFHLEtBQUssSUFBSSxDQUFDO0FBQUU7QUFBTSxzQkFBRyxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMsd0JBQUcsRUFBRSxLQUFLLEtBQUssNkJBQTZCLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxHQUFFLENBQUMsS0FBSyxvQkFBb0IsQ0FBQyxHQUFFO0FBQUMsMkJBQUssT0FBTyxDQUFDO0FBQUU7QUFBQSxvQkFBSztBQUFBLGtCQUFDLE9BQUs7QUFBQyx3QkFBSSxJQUFFLENBQUM7QUFBRSx5QkFBSSxLQUFLLE1BQU0sRUFBRSxLQUFHLEtBQUssVUFBVSxZQUFZLEtBQUcsS0FBSyxNQUFNLEVBQUUsK0JBQThCLEVBQUMsSUFBRyxLQUFLLE1BQU0sU0FBUSxDQUFDLEdBQUUsS0FBSyxNQUFNLEVBQUU7QUFBRyx3QkFBRSxLQUFLLEtBQUssZUFBZSxDQUFDO0FBQUUsc0JBQUUsS0FBSyxLQUFLLHdCQUF3QixHQUFFLENBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLHlCQUF5QixHQUFFO0FBQUMscUJBQU8sS0FBSyxLQUFLLEdBQUUsRUFBRSxXQUFTLEtBQUssZ0JBQWdCLEdBQUUsS0FBSyxvQkFBb0IsR0FBRyxHQUFFLEtBQUssV0FBVyxHQUFFLGFBQWE7QUFBQSxZQUFDO0FBQUEsWUFBQyx1QkFBc0I7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVSxHQUFFLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxVQUFTLEVBQUMsSUFBRSxLQUFLO0FBQU0scUJBQU8sTUFBSSxLQUFHLEtBQUsseUJBQXlCLENBQUMsS0FBRyxNQUFJLE9BQUssS0FBSyxhQUFhLHdCQUF1QixDQUFDLEdBQUUsS0FBSyxXQUFXLGVBQWUsS0FBSyxNQUFNLE9BQU0sQ0FBQyxHQUFFLEVBQUUsTUFBSSxLQUFLLGlCQUFpQixLQUFHLEtBQUssa0JBQWtCLENBQUMsR0FBRSxFQUFFLFNBQU8sT0FBRyxLQUFLLGtCQUFrQixHQUFFLEdBQUUsR0FBRSxPQUFHLE9BQUcsTUFBRyxLQUFFLEdBQUU7QUFBQSxZQUFFO0FBQUEsWUFBQyx3QkFBd0IsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLGtCQUFrQjtBQUFFLG1CQUFLLDZCQUE2QixDQUFDO0FBQUUsa0JBQUksSUFBRSxLQUFLLGtCQUFrQixFQUFFLE9BQU0sRUFBRSxJQUFJLE9BQU0sQ0FBQztBQUFFLHFCQUFPLEVBQUUsV0FBUyxFQUFFLGFBQVcsSUFBRztBQUFBLFlBQUM7QUFBQSxZQUFDLDZCQUE2QixHQUFFO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxHQUFFLEdBQUU7QUFBRSxrQkFBRyxLQUFHLElBQUUsTUFBSSxPQUFLLElBQUUsS0FBSyxNQUFNLFVBQVMsS0FBRyxJQUFFLE1BQUksT0FBSyxJQUFFLEtBQUssTUFBTSxPQUFNLEtBQUcsSUFBRSxNQUFJLE9BQUssSUFBRSxLQUFLLGlCQUFpQixHQUFFLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFBRSx1QkFBTztBQUFFLGtCQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsT0FBSyxHQUFFLEVBQUUsUUFBTSxLQUFLLHdCQUF3QixHQUFFLEtBQUssV0FBVyxHQUFFLG1CQUFtQjtBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEVBQUMsbUJBQWtCLFFBQU8sYUFBWSxZQUFXLGdCQUFlLFNBQVEseUJBQXdCLGNBQWEsY0FBYSxZQUFXLGVBQWMsYUFBWSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxVQUFVLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUMsSUFBRyxHQUFFLFNBQVEsSUFBRSxJQUFHLGNBQWEsSUFBRSxPQUFHLG1CQUFrQixJQUFFLE9BQUcsMEJBQXlCLElBQUUsRUFBRSxJQUFFLEtBQUksMEJBQXlCLElBQUUsTUFBRSxJQUFFO0FBQUUsa0JBQUk7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBSyxrQkFBRyxLQUFLLGVBQWUsQ0FBQztBQUFFO0FBQU8sa0JBQUcsTUFBSSxvQkFBbUI7QUFBQyxzQkFBSSxNQUFJLEtBQUssTUFBTSxFQUFFLCtCQUE4QixFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUU7QUFBQSxjQUFNO0FBQUMsa0JBQUcsRUFBRSxTQUFPLGNBQWE7QUFBQyxxQkFBSyxnQkFBZ0IsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEVBQUMsTUFBSyxFQUFDLElBQUU7QUFBRSxzQkFBSSxFQUFFLElBQUksQ0FBQyxJQUFFLEtBQUssTUFBTSxFQUFFLFdBQVUsRUFBQyxJQUFHLEVBQUMsQ0FBQyxJQUFFLEVBQUUsSUFBSSxDQUFDO0FBQUc7QUFBQSxjQUFNO0FBQUMsa0JBQUksSUFBRSxLQUFLLFlBQVksRUFBRSxNQUFLLEVBQUUsTUFBSSxJQUFFLEVBQUUsVUFBUSxRQUFNLEVBQUUsa0JBQWdCLEVBQUUsU0FBTyx3QkFBdUIsQ0FBQztBQUFFLGtCQUFHLE1BQUk7QUFBRztBQUFPLGtCQUFHLE1BQUksT0FBRztBQUFDLG9CQUFJLElBQUUsTUFBSSxLQUFHLEVBQUUsYUFBVyxFQUFFO0FBQWtCLHFCQUFLLE1BQU0sR0FBRSxFQUFDLElBQUcsR0FBRSxVQUFTLEVBQUUsU0FBTyxxQkFBbUIsRUFBQyxNQUFLLG9CQUFtQixRQUFPLEVBQUUsT0FBTSxJQUFFLEVBQUMsTUFBSyxFQUFFLEtBQUksRUFBQyxDQUFDO0FBQUU7QUFBQSxjQUFNO0FBQUMsa0JBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRSxNQUFNLFFBQVEsQ0FBQyxJQUFFLElBQUUsQ0FBQyxHQUFFLE1BQUkseUJBQXlCLEdBQUUsSUFBRSxFQUFFLFNBQU8sa0JBQWdCLEVBQUUsU0FBTyxtQkFBaUIsRUFBRSxTQUFPLDRCQUEwQixJQUFFO0FBQUUsdUJBQVEsS0FBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUU7QUFBRSxxQkFBRyxLQUFLLFVBQVUsR0FBRSxFQUFDLElBQUcsR0FBRSxTQUFRLEdBQUUsY0FBYSxHQUFFLDBCQUF5QixHQUFFLG1CQUFrQixHQUFFLDBCQUF5QixFQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsT0FBRyxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRyxFQUFFLElBQUU7QUFBSSxtQkFBSyxNQUFNLFdBQVMsSUFBRSxHQUFHLEVBQUUsTUFBSyxLQUFLLFFBQVEsSUFBRSxHQUFHLEVBQUUsSUFBSSxPQUFLLE1BQUksS0FBRyxLQUFLLE1BQU0sRUFBRSxxQkFBb0IsRUFBQyxJQUFHLEdBQUUsZUFBYyxFQUFFLEtBQUksQ0FBQyxJQUFFLEtBQUssTUFBTSxFQUFFLDRCQUEyQixFQUFDLElBQUcsR0FBRSxhQUFZLEVBQUUsS0FBSSxDQUFDLElBQUcsQ0FBQyxLQUFHLEVBQUUsU0FBTyxTQUFPLEtBQUssTUFBTSxFQUFFLHFCQUFvQixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsSUFBRSxNQUFJLEtBQUssMEJBQTBCLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDBCQUEwQixHQUFFLEdBQUU7QUFBQyxtQkFBSyxNQUFNLFlBQVksRUFBRSxNQUFLLEdBQUUsRUFBRSxJQUFJLEtBQUs7QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBc0IsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFVO0FBQTBCLHVCQUFLLHNCQUFzQixFQUFFLFlBQVcsQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBQSxxQkFBaUI7QUFBbUI7QUFBQSxxQkFBVTtBQUFBLHFCQUFzQjtBQUFtQixzQkFBRztBQUFFO0FBQUE7QUFBYyx1QkFBSyxNQUFNLEVBQUUsOEJBQTZCLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQSxZQUFDLG9CQUFvQixHQUFFO0FBQUMscUJBQU8sS0FBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sS0FBSyxrQkFBa0IsTUFBSSxJQUFFLEVBQUUsb0JBQWtCLEVBQUUsa0JBQWlCLEVBQUMsSUFBRyxLQUFLLE1BQU0sU0FBUSxDQUFDLEdBQUUsUUFBSTtBQUFBLFlBQUU7QUFBQSxVQUFDLEdBQUUsS0FBRyxjQUFjLEdBQUU7QUFBQSxZQUFDLFdBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsU0FBTyxtQkFBaUIsS0FBSyxlQUFlLENBQUMsS0FBRyxFQUFFLFlBQVUsRUFBRTtBQUFVO0FBQU8sa0JBQUksSUFBRSxFQUFFO0FBQUksbUJBQUksRUFBRSxTQUFPLGVBQWEsRUFBRSxPQUFLLEVBQUUsV0FBUyxhQUFZO0FBQUMsb0JBQUcsR0FBRTtBQUFDLHVCQUFLLE1BQU0sRUFBRSxlQUFjLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBRTtBQUFBLGdCQUFNO0FBQUMsa0JBQUUsU0FBTyxJQUFFLEVBQUUsbUJBQWlCLFNBQU8sRUFBRSxpQkFBZSxFQUFFLElBQUksU0FBTyxLQUFLLE1BQU0sRUFBRSxnQkFBZSxFQUFDLElBQUcsRUFBQyxDQUFDLElBQUcsRUFBRSxPQUFLO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFxQixHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sNkJBQTJCLEVBQUUsVUFBUTtBQUFBLFlBQUM7QUFBQSxZQUFDLGdCQUFlO0FBQUMsbUJBQUssbUJBQW1CLEdBQUUsS0FBSyxVQUFVO0FBQUUsa0JBQUksSUFBRSxLQUFLLGdCQUFnQjtBQUFFLHFCQUFPLEtBQUssTUFBTSxHQUFHLEtBQUcsS0FBSyxXQUFXLEdBQUUsS0FBSywwQkFBMEIsR0FBRSxFQUFFLFdBQVMsS0FBSyxNQUFNLFVBQVMsRUFBRSxTQUFPLEtBQUssTUFBTSxRQUFPLEtBQUssUUFBUSxXQUFTLEVBQUUsU0FBTyxLQUFLLFNBQVE7QUFBQSxZQUFDO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBRSxLQUFLLGNBQWMsTUFBSSxLQUFLLG9CQUFvQixDQUFDLENBQUMsSUFBRSxLQUFLLFdBQVcsTUFBSSxLQUFLLG9CQUFvQixDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUssaUJBQWlCLENBQUM7QUFBRSxrQkFBRyxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUscUJBQUksRUFBRSxjQUFZLENBQUMsQ0FBQyxHQUFFLEtBQUssSUFBSSxFQUFFO0FBQUcsb0JBQUUsWUFBWSxLQUFLLEtBQUssaUJBQWlCLENBQUMsQ0FBQztBQUFFLHVCQUFPLEtBQUssaUJBQWlCLEVBQUUsV0FBVyxHQUFFLEtBQUssV0FBVyxHQUFFLG9CQUFvQjtBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEyQixHQUFFLEdBQUU7QUFBQyxxQkFBTyxLQUFLLGNBQWMsTUFBSSxLQUFLLGlCQUFpQixHQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLHdCQUF3QixHQUFFLEdBQUU7QUFBQyxxQkFBTyxLQUFLLFdBQVcsTUFBSSxLQUFLLGlCQUFpQixHQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEyQixHQUFFLEdBQUU7QUFBQyxrQkFBSTtBQUFFLGdCQUFFLHlCQUF1QixJQUFFLEtBQUcsT0FBSyxTQUFPLEVBQUUsUUFBTSxPQUFLLElBQUUsS0FBSyxNQUFNO0FBQUEsWUFBUTtBQUFBLFlBQUMsaUJBQWlCLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU07QUFBUyxrQkFBRyxLQUFLLGFBQWEsR0FBRyxLQUFHLEtBQUssVUFBVSxVQUFTO0FBQUMsb0JBQUksSUFBRSxLQUFLLFdBQVc7QUFBRSx1QkFBTyxNQUFJLElBQUUsRUFBRSxLQUFLLE1BQUssR0FBRSxHQUFFLENBQUMsSUFBRztBQUFBLGNBQUM7QUFBQyxrQkFBSTtBQUFFLGtCQUFFLElBQUUsU0FBSSxJQUFFLElBQUksTUFBRyxJQUFFO0FBQUksa0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRSxLQUFLO0FBQU0sZUFBQyxNQUFJLE1BQUksRUFBRSxDQUFDLE9BQUssS0FBSyxNQUFNLG1CQUFpQixLQUFLLE1BQU07QUFBTyxrQkFBSSxJQUFFLEtBQUssc0JBQXNCLENBQUM7QUFBRSxrQkFBRyxNQUFJLElBQUUsRUFBRSxLQUFLLE1BQUssR0FBRSxHQUFFLENBQUMsSUFBRyxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssWUFBWSxHQUFFLENBQUMsR0FBRSxJQUFFLEtBQUssTUFBTTtBQUFNLHVCQUFPLEVBQUUsV0FBUyxHQUFFLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxhQUFhLEdBQUUsSUFBRSxHQUFFLEVBQUUsT0FBSyxHQUFFLEVBQUUsa0JBQWdCLFFBQU0sRUFBRSxlQUFlLFNBQU8sTUFBSSxFQUFFLGlCQUFlLE9BQU0sRUFBRSxzQkFBb0IsUUFBTSxFQUFFLG1CQUFtQixTQUFPLE1BQUksRUFBRSxxQkFBbUIsT0FBTSxFQUFFLGlCQUFlLFFBQU0sRUFBRSxjQUFjLFNBQU8sTUFBSSxLQUFLLDBCQUEwQixDQUFDLEdBQUUsRUFBRSxnQkFBYyxTQUFPLEVBQUUsT0FBSyxHQUFFLEtBQUssS0FBSyxHQUFFLEVBQUUsUUFBTSxLQUFLLGlCQUFpQixHQUFFLEtBQUssVUFBVSxHQUFFLEVBQUMsSUFBRyxLQUFLLFdBQVcsR0FBRSxzQkFBc0IsRUFBQyxDQUFDLEdBQUU7QUFBQSxjQUFDO0FBQU0scUJBQUcsS0FBSyxzQkFBc0IsR0FBRSxJQUFFO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBc0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUssTUFBTSxrQkFBaUIsSUFBRSxLQUFLLGFBQWEsQ0FBQztBQUFFLHFCQUFPLEtBQUsscUJBQXFCLEdBQUUsQ0FBQyxJQUFFLElBQUUsS0FBSyxpQkFBaUIsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsS0FBSyxJQUFJLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsT0FBSyxHQUFFLEVBQUUsYUFBVyxLQUFLLHdCQUF3QixHQUFFLEtBQUssT0FBTyxFQUFFLEdBQUUsRUFBRSxZQUFVLEtBQUssaUJBQWlCLEdBQUUsS0FBSyxXQUFXLEdBQUUsdUJBQXVCO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMseUJBQXlCLEdBQUU7QUFBQyxxQkFBTyxLQUFLLE1BQU0sR0FBRyxJQUFFLEtBQUssaUJBQWlCLElBQUUsS0FBSyxnQkFBZ0IsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGFBQWEsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUssTUFBTSxrQkFBaUIsSUFBRSxLQUFLLHlCQUF5QixDQUFDO0FBQUUscUJBQU8sS0FBSyxxQkFBcUIsR0FBRSxDQUFDLElBQUUsSUFBRSxLQUFLLFlBQVksR0FBRSxHQUFFLEdBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEtBQUssY0FBYyxDQUFDLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssaUJBQWlCLENBQUM7QUFBRSxpQkFBQyxLQUFHLEdBQUcsRUFBRSxLQUFHLENBQUMsS0FBSyxVQUFVLFNBQU8sQ0FBQyxLQUFLLE1BQU0sRUFBRSxNQUFJLEtBQUssTUFBTSxFQUFFLHFCQUFvQixFQUFDLElBQUcsR0FBRSxnQkFBZSxFQUFDLENBQUMsR0FBRSxLQUFLLFdBQVcsZUFBZSxHQUFFLEVBQUUsSUFBSSxLQUFLO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNO0FBQUssa0JBQUcsR0FBRyxDQUFDLE1BQUksS0FBSyxVQUFVLFNBQU8sQ0FBQyxLQUFLLE1BQU0sRUFBRSxJQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxJQUFFLEdBQUU7QUFBQyxzQkFBRyxNQUFJLElBQUc7QUFBQyx3QkFBRyxLQUFLLGFBQWEsa0JBQWtCLEdBQUUsS0FBSyxNQUFNO0FBQTJCLDZCQUFPO0FBQUUseUJBQUssNkJBQTZCLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUsb0JBQUUsT0FBSyxHQUFFLEVBQUUsV0FBUyxLQUFLLE1BQU07QUFBTSxzQkFBSSxJQUFFLE1BQUksTUFBSSxNQUFJLElBQUcsSUFBRSxNQUFJO0FBQUcsc0JBQUcsTUFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEtBQUssS0FBSyxHQUFFLE1BQUksTUFBSSxLQUFLLFVBQVUsQ0FBQyxvQkFBbUIsRUFBQyxVQUFTLFVBQVMsQ0FBQyxDQUFDLEtBQUcsS0FBSyxNQUFNLFNBQU8sTUFBSSxLQUFLLFVBQVU7QUFBUywwQkFBTSxLQUFLLE1BQU0sRUFBRSxrQ0FBaUMsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxvQkFBRSxRQUFNLEtBQUsscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLEtBQUcsSUFBRSxzQkFBb0Isa0JBQWtCO0FBQUUsc0JBQUksSUFBRSxLQUFLLE1BQU07QUFBSyxzQkFBRyxNQUFJLE1BQUksTUFBSSxNQUFJLE9BQUssS0FBRyxNQUFJO0FBQUcsMEJBQU0sS0FBSyxNQUFNLEVBQUUsMkJBQTBCLEVBQUMsSUFBRyxLQUFLLE1BQU0sU0FBUSxDQUFDO0FBQUUseUJBQU8sS0FBSyxZQUFZLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFxQixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxPQUFNLElBQUUsS0FBSyxNQUFNO0FBQVMsc0JBQU87QUFBQSxxQkFBUTtBQUFHLDBCQUFPLEtBQUssZ0JBQWdCLG9CQUFtQixVQUFVO0FBQUEseUJBQU87QUFBTyw2QkFBTyxLQUFLLHdCQUF3QixNQUFJLEtBQUssa0JBQWtCLENBQUM7QUFBQSx5QkFBTTtBQUFRLDZCQUFPLEtBQUssd0JBQXdCLE1BQUk7QUFBQyw0QkFBRyxLQUFLLFVBQVUsWUFBVSxLQUFLLGFBQWEsR0FBRztBQUFFLGdDQUFNLEtBQUssTUFBTSxFQUFFLG1CQUFrQixFQUFDLElBQUcsS0FBSyxNQUFNLFNBQVEsQ0FBQztBQUFFLCtCQUFPLEtBQUssOEJBQThCLEtBQUsseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLHNCQUFDLENBQUM7QUFBQSx5QkFBTTtBQUFTLDZCQUFPLEtBQUssK0JBQStCLE1BQUksS0FBSyx3QkFBd0IsQ0FBQyxDQUFDO0FBQUE7QUFBQTtBQUFVLHlCQUFPLEtBQUsseUJBQXlCLEdBQUUsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFBLFlBQUMseUJBQXlCLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU07QUFBUyxxQkFBTyxLQUFLLFlBQVksS0FBSyx5QkFBeUIsR0FBRSxHQUFFLEdBQUUsR0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBbUI7QUFBQyxrQkFBSTtBQUFFLGtCQUFHLEVBQUMsVUFBUyxFQUFDLElBQUUsS0FBSyxPQUFNLElBQUUsS0FBSyxpQkFBaUI7QUFBRSxxQkFBTyxFQUFFLElBQUksRUFBRSxJQUFJLEtBQUcsR0FBRyxJQUFFLEVBQUUsVUFBUSxRQUFNLEVBQUUsa0JBQWdCLEtBQUssTUFBTSxFQUFFLHlCQUF3QixFQUFDLElBQUcsR0FBRSxNQUFLLEVBQUUsS0FBSSxDQUFDLEdBQUUsS0FBSyxzQ0FBc0MsS0FBRyxLQUFLLE1BQU0sRUFBRSxpQkFBZ0IsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsMkJBQTJCLEdBQUU7QUFBQyxtQkFBSyxNQUFNLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSxvQ0FBbUMsRUFBQyxJQUFHLEVBQUUsU0FBUSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWdCLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUssYUFBYSxFQUFFO0FBQUUsa0JBQUcsS0FBRyxLQUFLLGVBQWUsR0FBRTtBQUFDLHFCQUFLLEtBQUs7QUFBRSxvQkFBSSxJQUFFLEtBQUssV0FBVyxHQUFFLENBQUM7QUFBRSx1QkFBTyxLQUFHLEtBQUssMkJBQTJCLENBQUMsR0FBRTtBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxFQUFFLEdBQUUsSUFBRSxLQUFLLFVBQVU7QUFBRSxrQkFBRyxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUU7QUFBQyxrQkFBRSxXQUFTLEtBQUssTUFBTSxPQUFNLEVBQUUsU0FBTyxNQUFHLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxhQUFhLGtCQUFrQjtBQUFFLG9CQUFJLElBQUUsS0FBSyxNQUFNLEVBQUU7QUFBRSxvQkFBRyxLQUFLLEtBQUssR0FBRSxFQUFFLFdBQVMsS0FBSyxnQkFBZ0IsTUFBSyxJQUFFLEdBQUUsS0FBSyxzQkFBc0IsR0FBRSxJQUFFLEdBQUUsS0FBSyxNQUFNLFVBQVEsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFTLG9CQUFFLFNBQU8sZUFBYSxLQUFLLE1BQU0sRUFBRSxjQUFhLEVBQUMsSUFBRyxFQUFDLENBQUMsSUFBRSxLQUFLLHlCQUF5QixDQUFDLEtBQUcsS0FBSyxNQUFNLEVBQUUsb0JBQW1CLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFHLENBQUM7QUFBRSx5QkFBTyxLQUFHLEtBQUssMkJBQTJCLENBQUMsR0FBRSxLQUFLLFdBQVcsR0FBRSxpQkFBaUI7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxHQUFFLENBQUM7QUFBRSxrQkFBRyxHQUFFO0FBQUMsb0JBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRSxLQUFLO0FBQU0scUJBQUksS0FBSyxVQUFVLGFBQWEsSUFBRSxHQUFHLENBQUMsSUFBRSxHQUFHLENBQUMsS0FBRyxDQUFDLEtBQUssTUFBTSxFQUFFLE1BQUksQ0FBQyxLQUFLLGlCQUFpQjtBQUFFLHlCQUFPLEtBQUssZUFBZSxFQUFFLHdCQUF1QixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRztBQUFFLHVCQUFPLEtBQUssVUFBVSxFQUFFLFVBQVMsRUFBQyxJQUFHLEtBQUssV0FBVyxHQUFFLGtCQUFrQixFQUFDLENBQUMsR0FBRTtBQUFFLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUssb0JBQW9CLENBQUM7QUFBRSxrQkFBRyxLQUFLLHNCQUFzQixHQUFFLEtBQUU7QUFBRSx1QkFBTztBQUFFLHFCQUFLLEdBQUcsS0FBSyxNQUFNLElBQUksS0FBRyxDQUFDLEtBQUssbUJBQW1CLEtBQUc7QUFBQyxvQkFBSSxJQUFFLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSxrQkFBRSxXQUFTLEtBQUssTUFBTSxPQUFNLEVBQUUsU0FBTyxPQUFHLEVBQUUsV0FBUyxHQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssVUFBVSxHQUFFLEVBQUMsSUFBRyxJQUFFLEtBQUssV0FBVyxHQUFFLGtCQUFrQixFQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sVUFBUyxJQUFFLEtBQUssTUFBTSxrQkFBaUIsSUFBRSxLQUFLLGNBQWMsQ0FBQztBQUFFLHFCQUFPLEtBQUsscUJBQXFCLEdBQUUsQ0FBQyxJQUFFLElBQUUsS0FBSyxnQkFBZ0IsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBQyxxQkFBb0IsT0FBRyxpQkFBZ0IsS0FBSyxxQkFBcUIsQ0FBQyxHQUFFLE1BQUssTUFBRTtBQUFFO0FBQUcsb0JBQUUsS0FBSyxlQUFlLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCO0FBQUEscUJBQVMsQ0FBQyxFQUFFO0FBQU0scUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxlQUFlLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUMsTUFBSyxFQUFDLElBQUUsS0FBSztBQUFNLGtCQUFHLENBQUMsS0FBRyxNQUFJO0FBQUcsdUJBQU8sS0FBSyxVQUFVLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLGtCQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFPLEtBQUssOEJBQThCLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFO0FBQUcsa0JBQUcsTUFBSSxJQUFHO0FBQUMsb0JBQUcsS0FBRyxLQUFLLGtCQUFrQixNQUFJO0FBQUcseUJBQU8sRUFBRSxPQUFLLE1BQUc7QUFBRSxrQkFBRSxzQkFBb0IsSUFBRSxNQUFHLEtBQUssS0FBSztBQUFBLGNBQUM7QUFBQyxrQkFBRyxDQUFDLEtBQUcsS0FBSyxNQUFNLEVBQUU7QUFBRSx1QkFBTyxLQUFLLGdDQUFnQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRTtBQUFDLG9CQUFJLElBQUUsS0FBSyxJQUFJLENBQUM7QUFBRSx1QkFBTyxLQUFHLEtBQUcsS0FBSyxJQUFJLEVBQUUsSUFBRSxLQUFLLFlBQVksR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsS0FBRyxFQUFFLE9BQUssTUFBRztBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxZQUFZLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxTQUFPLEdBQUUsRUFBRSxXQUFTLEdBQUUsS0FBRyxFQUFFLFdBQVMsS0FBSyxnQkFBZ0IsR0FBRSxLQUFLLE9BQU8sQ0FBQyxLQUFHLEtBQUssTUFBTSxHQUFHLEtBQUcsRUFBRSxTQUFPLFdBQVMsS0FBSyxNQUFNLEVBQUUsbUJBQWtCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxLQUFLLFdBQVcsZUFBZSxLQUFLLE1BQU0sT0FBTSxLQUFLLE1BQU0sUUFBUSxHQUFFLEVBQUUsV0FBUyxLQUFLLGlCQUFpQixLQUFHLEVBQUUsV0FBUyxLQUFLLGdCQUFnQixJQUFFLEdBQUUsRUFBRSx1QkFBcUIsRUFBRSxXQUFTLEdBQUUsS0FBSyxXQUFXLEdBQUUsMEJBQTBCLEtBQUcsS0FBSyxXQUFXLEdBQUUsa0JBQWtCO0FBQUEsWUFBQztBQUFBLFlBQUMsVUFBVSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLFNBQU8sR0FBRSxLQUFLLEtBQUssR0FBRSxFQUFFLFNBQU8sS0FBSyxnQkFBZ0IsR0FBRSxFQUFFLE9BQUssTUFBRyxLQUFLLGdCQUFnQixLQUFLLFdBQVcsR0FBRSxnQkFBZ0IsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGdDQUFnQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSx3QkFBdUIsSUFBRTtBQUFLLG1CQUFLLE1BQU0seUJBQXVCLE1BQUcsS0FBSyxLQUFLO0FBQUUsa0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUsZ0JBQUUsU0FBTztBQUFFLGtCQUFHLEVBQUMsaUJBQWdCLEdBQUUscUJBQW9CLEVBQUMsSUFBRTtBQUFFLHFCQUFPLE1BQUksS0FBSyxnQkFBZ0IsTUFBTSxHQUFHLENBQUMsR0FBRSxJQUFFLElBQUksT0FBSSxNQUFJLEVBQUUsV0FBUyxJQUFHLElBQUUsRUFBRSxZQUFVLEtBQUssNkJBQTZCLEVBQUUsSUFBRSxFQUFFLFlBQVUsS0FBSyw2QkFBNkIsSUFBRyxFQUFFLFNBQU8sVUFBUyxFQUFFLFNBQU8sU0FBUSxHQUFFLENBQUMsR0FBRSxLQUFLLHFCQUFxQixHQUFFLENBQUMsR0FBRSxLQUFHLEtBQUssc0JBQXNCLEtBQUcsQ0FBQyxLQUFHLEVBQUUsT0FBSyxNQUFHLEtBQUssMEJBQTBCLENBQUMsR0FBRSxLQUFLLGdCQUFnQixrQkFBa0IsR0FBRSxLQUFLLGdCQUFnQixLQUFLLEdBQUUsSUFBRSxLQUFLLGtDQUFrQyxLQUFLLFlBQVksR0FBRSxDQUFDLEdBQUUsQ0FBQyxNQUFJLE1BQUksS0FBSyxzQkFBc0IsR0FBRSxJQUFFLEdBQUUsS0FBSyxnQkFBZ0IsS0FBSyxJQUFHLEtBQUssc0JBQXNCLENBQUMsSUFBRyxLQUFLLE1BQU0seUJBQXVCLEdBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBc0IsR0FBRSxHQUFFO0FBQUMsbUJBQUsscUJBQXFCLEVBQUUsV0FBVSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsOEJBQThCLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLE1BQUksR0FBRSxFQUFFLFFBQU0sS0FBSyxjQUFjLElBQUUsR0FBRSxFQUFFLHVCQUFxQixLQUFLLE1BQU0sRUFBRSw0QkFBMkIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLDBCQUEwQjtBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFxQixHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLGdCQUFjLEVBQUUsU0FBTyxXQUFTLEtBQUssTUFBTSxjQUFjLFVBQVEsRUFBRSxPQUFLLENBQUMsS0FBSyxtQkFBbUIsS0FBRyxFQUFFLE1BQUksRUFBRSxVQUFRLEtBQUcsRUFBRSxVQUFRLEtBQUssTUFBTTtBQUFBLFlBQWdCO0FBQUEsWUFBQyxxQkFBcUIsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxPQUFPLFNBQU87QUFBUyxvQkFBRyxFQUFFLFVBQVUsV0FBUyxNQUFJLEtBQUssVUFBVSxrQkFBa0IsS0FBRyxLQUFLLGFBQWEsa0JBQWtCLElBQUcsRUFBRSxVQUFVLFdBQVMsS0FBRyxFQUFFLFVBQVUsU0FBTztBQUFFLHVCQUFLLE1BQU0sRUFBRSxpQkFBZ0IsRUFBQyxJQUFHLEdBQUUsa0JBQWlCLEtBQUssVUFBVSxrQkFBa0IsS0FBRyxLQUFLLFVBQVUsa0JBQWtCLElBQUUsSUFBRSxFQUFDLENBQUM7QUFBQTtBQUFPLDJCQUFRLEtBQUssRUFBRTtBQUFVLHNCQUFFLFNBQU8sbUJBQWlCLEtBQUssTUFBTSxFQUFFLDBCQUF5QixFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUUscUJBQU8sS0FBSyxXQUFXLEdBQUUsSUFBRSwyQkFBeUIsZ0JBQWdCO0FBQUEsWUFBQztBQUFBLFlBQUMsNkJBQTZCLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsTUFBRyxJQUFFLEtBQUssTUFBTTtBQUEyQixtQkFBSSxLQUFLLE1BQU0sNkJBQTJCLE9BQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFHO0FBQUMsb0JBQUc7QUFBRSxzQkFBRTtBQUFBLHlCQUFXLEtBQUssT0FBTyxFQUFFLEdBQUUsS0FBSyxNQUFNLENBQUMsR0FBRTtBQUFDLHVCQUFHLENBQUMsS0FBSyxVQUFVLGtCQUFrQixLQUFHLENBQUMsS0FBSyxVQUFVLGtCQUFrQixLQUFHLEtBQUssTUFBTSxFQUFFLGlDQUFnQyxFQUFDLElBQUcsS0FBSyxNQUFNLGdCQUFlLENBQUMsR0FBRSxLQUFHLEtBQUssNEJBQTRCLENBQUMsR0FBRSxLQUFLLEtBQUs7QUFBRTtBQUFBLGdCQUFLO0FBQUMsa0JBQUUsS0FBSyxLQUFLLGtCQUFrQixPQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEtBQUssTUFBTSw2QkFBMkIsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLHdCQUF1QjtBQUFDLHFCQUFPLEtBQUssTUFBTSxFQUFFLEtBQUcsQ0FBQyxLQUFLLG1CQUFtQjtBQUFBLFlBQUM7QUFBQSxZQUFDLGtDQUFrQyxHQUFFLEdBQUU7QUFBQyxrQkFBSTtBQUFFLHFCQUFPLEtBQUssa0NBQWtDLENBQUMsR0FBRSxLQUFLLE9BQU8sRUFBRSxHQUFFLEtBQUsscUJBQXFCLEdBQUUsRUFBRSxXQUFVLE9BQUksSUFBRSxFQUFFLFVBQVEsT0FBSyxTQUFPLEVBQUUsZ0JBQWdCLEdBQUUsRUFBRSxpQkFBZSxHQUFHLEdBQUUsRUFBRSxhQUFhLEdBQUUsRUFBRSxPQUFPLG9CQUFrQixHQUFHLEdBQUUsRUFBRSxPQUFPLGdCQUFnQixHQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWlCO0FBQUMsa0JBQUksSUFBRSxLQUFLLE1BQU0sT0FBTSxJQUFFLEtBQUssTUFBTTtBQUFTLHFCQUFPLEtBQUssZ0JBQWdCLEtBQUssY0FBYyxHQUFFLEdBQUUsR0FBRSxJQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsY0FBYyxHQUFFO0FBQUMsa0JBQUksR0FBRSxFQUFDLE1BQUssRUFBQyxJQUFFLEtBQUs7QUFBTSxzQkFBTztBQUFBLHFCQUFRO0FBQUcseUJBQU8sS0FBSyxXQUFXO0FBQUEscUJBQU87QUFBRyx5QkFBTyxJQUFFLEtBQUssVUFBVSxHQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssTUFBTSxFQUFFLElBQUUsS0FBSyx3QkFBd0IsQ0FBQyxLQUFHLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxNQUFNLEVBQUUsbUJBQWtCLEVBQUMsSUFBRyxLQUFLLE1BQU0sZ0JBQWUsQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLFFBQVE7QUFBQSxxQkFBUTtBQUFHLHlCQUFPLElBQUUsS0FBSyxVQUFVLEdBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxXQUFXLEdBQUUsZ0JBQWdCO0FBQUEscUJBQU87QUFBRyx5QkFBTyxLQUFLLFFBQVEsS0FBSyxVQUFVLEdBQUUsS0FBRTtBQUFBLHFCQUFPO0FBQUEscUJBQVE7QUFBRyx5QkFBTyxLQUFLLFdBQVcsR0FBRSxLQUFLLG1CQUFtQixLQUFLLE1BQU0sS0FBSztBQUFBLHFCQUFPO0FBQUkseUJBQU8sS0FBSyxvQkFBb0IsS0FBSyxNQUFNLEtBQUs7QUFBQSxxQkFBTztBQUFJLHlCQUFPLEtBQUssbUJBQW1CLEtBQUssTUFBTSxLQUFLO0FBQUEscUJBQU87QUFBSSx5QkFBTyxLQUFLLG9CQUFvQixLQUFLLE1BQU0sS0FBSztBQUFBLHFCQUFPO0FBQUkseUJBQU8sS0FBSyxtQkFBbUIsS0FBSyxNQUFNLEtBQUs7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEtBQUssaUJBQWlCO0FBQUEscUJBQU87QUFBRyx5QkFBTyxLQUFLLG9CQUFvQixJQUFFO0FBQUEscUJBQU87QUFBRyx5QkFBTyxLQUFLLG9CQUFvQixLQUFFO0FBQUEscUJBQU8sSUFBRztBQUFDLHNCQUFJLElBQUUsS0FBSyxNQUFNLHFCQUFtQixLQUFLLE1BQU07QUFBTSx5QkFBTyxLQUFLLG1DQUFtQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQSxxQkFBTTtBQUFBLHFCQUFPO0FBQUUseUJBQU8sS0FBSyxlQUFlLEtBQUssTUFBTSxTQUFPLElBQUUsSUFBRSxHQUFFLE9BQUcsSUFBRTtBQUFBLHFCQUFPO0FBQUUseUJBQU8sS0FBSyxlQUFlLEdBQUUsTUFBRyxPQUFHLENBQUM7QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUUseUJBQU8sS0FBSyxnQkFBZ0IsS0FBSyxNQUFNLFNBQU8sSUFBRSxJQUFFLEdBQUUsT0FBRyxJQUFFO0FBQUEscUJBQU87QUFBRSx5QkFBTyxLQUFLLGdCQUFnQixHQUFFLE9BQUcsT0FBRyxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTyxLQUFLLDRCQUE0QjtBQUFBLHFCQUFPO0FBQUcsdUJBQUssZ0JBQWdCO0FBQUEscUJBQU87QUFBRyx5QkFBTyxJQUFFLEtBQUssVUFBVSxHQUFFLEtBQUssZUFBZSxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsS0FBRTtBQUFBLHFCQUFPO0FBQUcseUJBQU8sS0FBSyxvQkFBb0I7QUFBQSxxQkFBTztBQUFBLHFCQUFRO0FBQUcseUJBQU8sS0FBSyxjQUFjLEtBQUU7QUFBQSxxQkFBTyxJQUFHO0FBQUMsc0JBQUUsS0FBSyxVQUFVLEdBQUUsS0FBSyxLQUFLLEdBQUUsRUFBRSxTQUFPO0FBQUssc0JBQUksSUFBRSxFQUFFLFNBQU8sS0FBSyxnQkFBZ0I7QUFBRSxzQkFBRyxFQUFFLFNBQU87QUFBbUIsMkJBQU8sS0FBSyxXQUFXLEdBQUUsZ0JBQWdCO0FBQUUsd0JBQU0sS0FBSyxNQUFNLEVBQUUsaUJBQWdCLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLHFCQUFNO0FBQUkseUJBQU8sS0FBSyxNQUFNLEVBQUUscUJBQW9CLEVBQUMsSUFBRyxLQUFLLE1BQU0sVUFBUyxnQkFBZSxLQUFLLE1BQU0sTUFBSyxDQUFDLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEtBQUssa0NBQWtDLElBQUcsR0FBRztBQUFBLHFCQUFPO0FBQUcseUJBQU8sS0FBSyxrQ0FBa0MsSUFBRyxHQUFHO0FBQUEscUJBQU87QUFBQSxxQkFBUTtBQUFHLHlCQUFPLEtBQUssb0JBQW9CLE1BQU07QUFBQSxxQkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVEsSUFBRztBQUFDLHNCQUFJLElBQUUsS0FBSyxnQkFBZ0Isb0JBQW1CLFVBQVU7QUFBRSxzQkFBRztBQUFFLDJCQUFPLEtBQUssb0JBQW9CLENBQUM7QUFBRSx3QkFBTSxLQUFLLFdBQVc7QUFBQSxnQkFBQztBQUFBLHFCQUFNLElBQUc7QUFBQyxzQkFBSSxJQUFFLEtBQUssTUFBTSxZQUFZLEtBQUssZUFBZSxDQUFDO0FBQUUsc0JBQUcsR0FBRyxDQUFDLEtBQUcsTUFBSSxJQUFHO0FBQUMseUJBQUssZ0JBQWdCLENBQUMsT0FBTSxRQUFPLFlBQVksQ0FBQztBQUFFO0FBQUEsa0JBQUs7QUFBTSwwQkFBTSxLQUFLLFdBQVc7QUFBQSxnQkFBQztBQUFBO0FBQVMsc0JBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQyx3QkFBRyxLQUFLLGFBQWEsR0FBRyxLQUFHLEtBQUssa0JBQWtCLE1BQUksT0FBSyxDQUFDLEtBQUssc0JBQXNCO0FBQUUsNkJBQU8sS0FBSyxzQkFBc0I7QUFBRSx3QkFBSSxJQUFFLEtBQUssTUFBTSxxQkFBbUIsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU0sYUFBWSxJQUFFLEtBQUssZ0JBQWdCO0FBQUUsd0JBQUcsQ0FBQyxLQUFHLEVBQUUsU0FBTyxXQUFTLENBQUMsS0FBSyxtQkFBbUIsR0FBRTtBQUFDLDBCQUFHLEVBQUMsTUFBSyxFQUFDLElBQUUsS0FBSztBQUFNLDBCQUFHLE1BQUk7QUFBRywrQkFBTyxLQUFLLGtDQUFrQyxDQUFDLEdBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxjQUFjLEtBQUssZ0JBQWdCLENBQUMsR0FBRSxRQUFPLElBQUU7QUFBRSwwQkFBRyxFQUFFLENBQUM7QUFBRSwrQkFBTyxLQUFLLGtCQUFrQixNQUFJLEtBQUcsS0FBSyw2QkFBNkIsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUU7QUFBRSwwQkFBRyxNQUFJO0FBQUcsK0JBQU8sS0FBSyxrQ0FBa0MsQ0FBQyxHQUFFLEtBQUssUUFBUSxLQUFLLGdCQUFnQixDQUFDLEdBQUUsSUFBRTtBQUFBLG9CQUFDO0FBQUMsMkJBQU8sS0FBRyxLQUFLLE1BQU0sRUFBRSxLQUFHLENBQUMsS0FBSyxtQkFBbUIsS0FBRyxLQUFLLEtBQUssR0FBRSxLQUFLLHFCQUFxQixLQUFLLGdCQUFnQixDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBRSxLQUFHO0FBQUEsa0JBQUM7QUFBTSwwQkFBTSxLQUFLLFdBQVc7QUFBQTtBQUFBLFlBQUU7QUFBQSxZQUFDLGtDQUFrQyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssZ0JBQWdCLG9CQUFtQixVQUFVO0FBQUUsa0JBQUc7QUFBRSx1QkFBTyxLQUFLLE1BQU0sT0FBSyxHQUFFLEtBQUssTUFBTSxRQUFNLEdBQUUsS0FBSyxNQUFNLE9BQU0sS0FBSyxNQUFNLE9BQU0sS0FBSyxNQUFNLFNBQU8sRUFBRSxLQUFLLE1BQU0sUUFBTyxFQUFFLEdBQUUsS0FBSyxvQkFBb0IsQ0FBQztBQUFFLG9CQUFNLEtBQUssV0FBVztBQUFBLFlBQUM7QUFBQSxZQUFDLG9CQUFvQixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFVBQVUsR0FBRSxJQUFFLEtBQUssTUFBTSxVQUFTLElBQUUsS0FBSyxNQUFNO0FBQUsscUJBQU8sS0FBSyxLQUFLLEdBQUUsS0FBSyxxQkFBcUIsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLHFCQUFxQixHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsS0FBSyxnQ0FBZ0MsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFDLG9CQUFJLElBQUUsTUFBSSxVQUFRLGtDQUFnQztBQUFpQix1QkFBTyxLQUFLLHdDQUF3QyxLQUFHLEtBQUssTUFBTSxNQUFJLFVBQVEsRUFBRSx5QkFBdUIsRUFBRSxrQkFBaUIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEtBQUssdUJBQXVCLEdBQUUsS0FBSyxXQUFXLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBTSxzQkFBTSxLQUFLLE1BQU0sRUFBRSw0QkFBMkIsRUFBQyxJQUFHLEdBQUUsT0FBTSxHQUFHLENBQUMsRUFBQyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0NBQWdDLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQU87QUFBQSxxQkFBTztBQUFPLHlCQUFPLEtBQUssVUFBVSxDQUFDLG9CQUFtQixFQUFDLFlBQVcsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQUEscUJBQU07QUFBUSx5QkFBTyxNQUFJO0FBQUE7QUFBVyx3QkFBTSxLQUFLLE1BQU0sRUFBRSw0QkFBMkIsRUFBQyxJQUFHLEVBQUMsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFBLFlBQUMsNkJBQTZCLEdBQUU7QUFBQyxtQkFBSyxVQUFVLE1BQU0sR0FBRyxNQUFHLEtBQUssVUFBVSxRQUFRLENBQUM7QUFBRSxrQkFBSSxJQUFFLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQztBQUFFLHFCQUFPLEtBQUssVUFBVSxLQUFLLEdBQUUsS0FBSyxzQkFBc0IsS0FBRyxLQUFLLE1BQU0sRUFBRSwyQkFBMEIsRUFBQyxJQUFHLEtBQUssTUFBTSxZQUFZLEVBQUMsQ0FBQyxHQUFFLEtBQUssT0FBTyxFQUFFLEdBQUUsS0FBSyxxQkFBcUIsR0FBRSxHQUFFLElBQUUsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLFFBQVEsR0FBRSxHQUFFO0FBQUMsbUJBQUssYUFBYSxlQUFlLEdBQUUsS0FBRyxLQUFLLGFBQWEsb0JBQW9CLEdBQUUsRUFBRSxRQUFNLEdBQUUsS0FBSyxLQUFLO0FBQUUsa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBTyxxQkFBTyxLQUFLLE1BQU0sU0FBTyxDQUFDLEdBQUUsS0FBRyxLQUFLLFVBQVUsTUFBTSxFQUFFLEdBQUUsRUFBRSxPQUFLLEtBQUssV0FBVyxHQUFFLEtBQUssVUFBVSxLQUFLLEtBQUcsRUFBRSxPQUFLLEtBQUssV0FBVyxHQUFFLEtBQUssTUFBTSxTQUFPLEdBQUUsS0FBSyxXQUFXLEdBQUUsY0FBYztBQUFBLFlBQUM7QUFBQSxZQUFDLGFBQVk7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEtBQUssS0FBSyxHQUFFLEtBQUssTUFBTSxFQUFFLEtBQUcsQ0FBQyxLQUFLLE1BQU0sb0JBQWtCLENBQUMsS0FBSyxRQUFRLDBCQUF3QixLQUFLLE1BQU0sRUFBRSxpQkFBZ0IsRUFBQyxJQUFHLEVBQUMsQ0FBQyxJQUFFLENBQUMsS0FBSyxNQUFNLGNBQVksQ0FBQyxLQUFLLFFBQVEsMkJBQXlCLEtBQUssTUFBTSxFQUFFLGlCQUFnQixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsQ0FBQyxLQUFLLE1BQU0sRUFBRSxLQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBRyxDQUFDLEtBQUssTUFBTSxFQUFFLEtBQUcsS0FBSyxNQUFNLEVBQUUsa0JBQWlCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxLQUFLLFdBQVcsR0FBRSxPQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQWtCO0FBQUMsa0JBQUksSUFBRSxLQUFLLFVBQVUsR0FBRSxJQUFFLEtBQUssWUFBWSxLQUFLLE1BQU0sUUFBTSxHQUFFLElBQUksRUFBRSxLQUFLLE1BQU0sU0FBUSxLQUFLLE1BQU0sUUFBTSxJQUFFLEtBQUssTUFBTSxXQUFVLEtBQUssTUFBTSxRQUFNLENBQUMsQ0FBQyxHQUFFLElBQUUsS0FBSyxNQUFNO0FBQU0scUJBQU8sS0FBSyxLQUFLLEdBQUUsRUFBRSxLQUFHLEtBQUssaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLGFBQWE7QUFBQSxZQUFDO0FBQUEsWUFBQyw4QkFBNkI7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLGtCQUFHLEtBQUssS0FBSyxHQUFFLEtBQUssVUFBVSxZQUFVLEtBQUssTUFBTSxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssaUJBQWlCLEtBQUssZ0JBQWdCLENBQUMsR0FBRSxVQUFVO0FBQUUsdUJBQU8sS0FBSyxLQUFLLEdBQUUsS0FBSyxNQUFNLEdBQUcsSUFBRSxLQUFLLGFBQWEsY0FBYyxJQUFFLEtBQUssVUFBVSxjQUFjLEtBQUcsS0FBSyxXQUFXLEdBQUUsS0FBSyxrQkFBa0IsR0FBRSxHQUFFLE1BQU07QUFBQSxjQUFDO0FBQUMscUJBQU8sS0FBSyxjQUFjLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxPQUFLO0FBQUUsa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBWSxxQkFBTyxFQUFFLFdBQVMsS0FBSyxnQkFBZ0IsSUFBRSxJQUFHLEVBQUUsU0FBUyxTQUFPLEtBQUcsTUFBSSxLQUFLLE1BQU0sRUFBRSx5QkFBd0IsRUFBQyxJQUFHLEVBQUUsVUFBUyxRQUFPLEVBQUUsTUFBSyx1QkFBc0IsRUFBQyxDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsY0FBYztBQUFBLFlBQUM7QUFBQSxZQUFDLHdCQUF3QixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLGlCQUFpQixLQUFLLGdCQUFnQixDQUFDLEdBQUUsUUFBUTtBQUFFLHFCQUFPLEtBQUssS0FBSyxHQUFFLEtBQUssYUFBYSxHQUFHLE1BQUksS0FBSyxZQUFVLEtBQUssTUFBTSxFQUFFLHlCQUF3QixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsS0FBSyxvQkFBa0IsT0FBSSxLQUFLLGtCQUFrQixHQUFFLEdBQUUsTUFBTTtBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFtQixHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEtBQUssU0FBUyxHQUFFLFlBQVcsQ0FBQyxHQUFFLEtBQUssU0FBUyxHQUFFLE9BQU0sS0FBSyxNQUFNLE1BQU0sRUFBRSxPQUFNLEtBQUssTUFBTSxHQUFHLENBQUMsR0FBRSxFQUFFLFFBQU0sR0FBRSxLQUFLLEtBQUssR0FBRSxLQUFLLFdBQVcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsYUFBYSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLHFCQUFPLEtBQUssbUJBQW1CLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQW1CLEdBQUU7QUFBQyxxQkFBTyxLQUFLLGFBQWEsR0FBRSxlQUFlO0FBQUEsWUFBQztBQUFBLFlBQUMsb0JBQW9CLEdBQUU7QUFBQyxxQkFBTyxLQUFLLGFBQWEsR0FBRSxnQkFBZ0I7QUFBQSxZQUFDO0FBQUEsWUFBQyxtQkFBbUIsR0FBRTtBQUFDLHFCQUFPLEtBQUssYUFBYSxHQUFFLGVBQWU7QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRTtBQUFDLHFCQUFPLEtBQUssYUFBYSxHQUFFLGdCQUFnQjtBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFtQixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLGFBQWEsRUFBRSxPQUFNLGVBQWU7QUFBRSxxQkFBTyxFQUFFLFVBQVEsRUFBRSxTQUFRLEVBQUUsUUFBTSxFQUFFLE9BQU07QUFBQSxZQUFDO0FBQUEsWUFBQyxvQkFBb0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sRUFBRSxRQUFNLEdBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxXQUFXLEdBQUUsZ0JBQWdCO0FBQUEsWUFBQztBQUFBLFlBQUMsbUJBQWtCO0FBQUMsa0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxxQkFBTyxLQUFLLEtBQUssR0FBRSxLQUFLLFdBQVcsR0FBRSxhQUFhO0FBQUEsWUFBQztBQUFBLFlBQUMsbUNBQW1DLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxPQUFNLElBQUUsS0FBSyxNQUFNLFVBQVM7QUFBRSxtQkFBSyxLQUFLLEdBQUUsS0FBSyxnQkFBZ0IsTUFBTSxHQUFHLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssTUFBTSx3QkFBdUIsSUFBRSxLQUFLLE1BQU07QUFBMkIsbUJBQUssTUFBTSx5QkFBdUIsTUFBRyxLQUFLLE1BQU0sNkJBQTJCO0FBQUcsa0JBQUksSUFBRSxLQUFLLE1BQU0sT0FBTSxJQUFFLEtBQUssTUFBTSxVQUFTLElBQUUsQ0FBQyxHQUFFLElBQUUsSUFBSSxNQUFHLElBQUUsTUFBRyxHQUFFO0FBQUUscUJBQUssQ0FBQyxLQUFLLE1BQU0sRUFBRSxLQUFHO0FBQUMsb0JBQUc7QUFBRSxzQkFBRTtBQUFBLHlCQUFXLEtBQUssT0FBTyxJQUFHLEVBQUUsMEJBQXdCLE9BQUssT0FBSyxFQUFFLHFCQUFxQixHQUFFLEtBQUssTUFBTSxFQUFFLEdBQUU7QUFBQyxzQkFBRSxLQUFLLE1BQU07QUFBUztBQUFBLGdCQUFLO0FBQUMsb0JBQUcsS0FBSyxNQUFNLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsS0FBSyxNQUFNLE9BQU0sSUFBRSxLQUFLLE1BQU07QUFBUyxzQkFBRyxJQUFFLEtBQUssTUFBTSxVQUFTLEVBQUUsS0FBSyxLQUFLLGVBQWUsS0FBSyxpQkFBaUIsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsS0FBSyxvQkFBb0IsRUFBRTtBQUFFO0FBQUEsZ0JBQUs7QUFBTSxvQkFBRSxLQUFLLEtBQUssd0JBQXdCLEdBQUUsS0FBSyxjQUFjLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBYyxtQkFBSyxPQUFPLEVBQUUsR0FBRSxLQUFLLE1BQU0seUJBQXVCLEdBQUUsS0FBSyxNQUFNLDZCQUEyQjtBQUFFLGtCQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEtBQUcsS0FBSyxpQkFBaUIsQ0FBQyxNQUFJLElBQUUsS0FBSyxXQUFXLENBQUMsTUFBSSxLQUFLLDBCQUEwQixDQUFDLEdBQUUsS0FBSyxnQkFBZ0Isa0JBQWtCLEdBQUUsS0FBSyxnQkFBZ0IsS0FBSyxHQUFFLEtBQUsscUJBQXFCLEdBQUUsR0FBRSxLQUFFLEdBQUUsTUFBSSxLQUFLLGdCQUFnQixLQUFLLEdBQUUsRUFBRSxVQUFRLEtBQUssV0FBVyxLQUFLLE1BQU0sZUFBZSxHQUFFLEtBQUcsS0FBSyxXQUFXLENBQUMsR0FBRSxLQUFHLEtBQUssV0FBVyxDQUFDLEdBQUUsS0FBSyxzQkFBc0IsR0FBRSxJQUFFLEdBQUUsS0FBSyxxQkFBcUIsR0FBRSxJQUFFLEdBQUUsRUFBRSxTQUFPLEtBQUcsSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBRSxjQUFZLEdBQUUsS0FBSyxXQUFXLEdBQUUsb0JBQW9CLEdBQUUsS0FBSyxpQkFBaUIsR0FBRSxDQUFDLEtBQUcsSUFBRSxFQUFFLElBQUcsS0FBSyxnQkFBZ0IsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFFO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxDQUFDLEtBQUssUUFBUTtBQUErQix1QkFBTyxLQUFLLFNBQVMsR0FBRSxpQkFBZ0IsSUFBRSxHQUFFLEtBQUssU0FBUyxHQUFFLGNBQWEsQ0FBQyxHQUFFLEtBQUssd0JBQXdCLEdBQUUsR0FBRSxLQUFLLE1BQU0sY0FBYyxLQUFLLEdBQUU7QUFBRSxrQkFBSSxJQUFFLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLGFBQVcsR0FBRSxLQUFLLFdBQVcsR0FBRSx5QkFBeUIsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFO0FBQUMscUJBQU0sQ0FBQyxLQUFLLG1CQUFtQjtBQUFBLFlBQUM7QUFBQSxZQUFDLFdBQVcsR0FBRTtBQUFDLGtCQUFHLEtBQUssSUFBSSxFQUFFO0FBQUUsdUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxlQUFlLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxzQkFBcUI7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLGtCQUFHLEtBQUssS0FBSyxHQUFFLEtBQUssTUFBTSxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssaUJBQWlCLEtBQUssZ0JBQWdCLENBQUMsR0FBRSxLQUFLO0FBQUUscUJBQUssS0FBSztBQUFFLG9CQUFJLElBQUUsS0FBSyxrQkFBa0IsR0FBRSxHQUFFLFFBQVE7QUFBRSx1QkFBTSxDQUFDLEtBQUssTUFBTSxzQkFBb0IsQ0FBQyxLQUFLLE1BQU0sV0FBUyxLQUFLLE1BQU0sRUFBRSxxQkFBb0IsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFO0FBQUEsY0FBQztBQUFDLHFCQUFPLEtBQUssU0FBUyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsU0FBUyxHQUFFO0FBQUMsa0JBQUcsS0FBSyxlQUFlLENBQUMsR0FBRSxLQUFLLElBQUksRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLGNBQWMsRUFBRTtBQUFFLHFCQUFLLGlCQUFpQixDQUFDLEdBQUUsRUFBRSxZQUFVO0FBQUEsY0FBQztBQUFNLGtCQUFFLFlBQVUsQ0FBQztBQUFFLHFCQUFPLEtBQUssV0FBVyxHQUFFLGVBQWU7QUFBQSxZQUFDO0FBQUEsWUFBQyxlQUFlLEdBQUU7QUFBQyxnQkFBRSxTQUFPLEtBQUssZ0JBQWdCLEdBQUUsRUFBRSxPQUFPLFNBQU8sV0FBUyxLQUFLLE1BQU0sRUFBRSw0QkFBMkIsRUFBQyxJQUFHLEVBQUUsT0FBTSxDQUFDLElBQUUsS0FBSyxnQkFBZ0IsRUFBRSxNQUFNLElBQUUsS0FBSyxNQUFNLEVBQUUsdUJBQXNCLEVBQUMsSUFBRyxLQUFLLE1BQU0sY0FBYSxDQUFDLElBQUUsS0FBSyxJQUFJLEVBQUUsS0FBRyxLQUFLLE1BQU0sRUFBRSx1QkFBc0IsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxxQkFBcUIsR0FBRTtBQUFDLGtCQUFHLEVBQUMsT0FBTSxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsT0FBTSxFQUFDLElBQUUsS0FBSyxPQUFNLElBQUUsSUFBRSxHQUFFLElBQUUsS0FBSyxZQUFZLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFJLFNBQU8sS0FBRyxLQUFLLE1BQU0sRUFBRSwrQkFBOEIsRUFBQyxJQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUMsQ0FBQztBQUFHLGtCQUFJLElBQUUsS0FBSyxNQUFNLEVBQUUsR0FBRSxJQUFFLElBQUUsS0FBRyxJQUFHLElBQUUsSUFBRTtBQUFFLHFCQUFPLEVBQUUsUUFBTSxFQUFDLEtBQUksS0FBSyxNQUFNLE1BQU0sR0FBRSxDQUFDLEVBQUUsUUFBUSxVQUFTO0FBQUEsQ0FDcDJpRyxHQUFFLFFBQU8sTUFBSSxPQUFLLE9BQUssRUFBRSxNQUFNLEdBQUUsQ0FBQyxFQUFDLEdBQUUsRUFBRSxPQUFLLEdBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxXQUFXLEdBQUUsaUJBQWlCLEdBQUUsS0FBSyxpQkFBaUIsR0FBRSxFQUFFLEtBQUssTUFBTSxlQUFjLENBQUMsQ0FBQyxHQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsY0FBYyxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxnQkFBRSxjQUFZLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUsscUJBQXFCLENBQUM7QUFBRSxtQkFBSSxFQUFFLFNBQU8sQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFFO0FBQU0sa0JBQUUsWUFBWSxLQUFLLEtBQUssMEJBQTBCLENBQUMsR0FBRSxLQUFLLHlCQUF5QixHQUFFLEVBQUUsT0FBTyxLQUFLLElBQUUsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDO0FBQUUscUJBQU8sS0FBSyxXQUFXLEdBQUUsaUJBQWlCO0FBQUEsWUFBQztBQUFBLFlBQUMsNEJBQTJCO0FBQUMscUJBQU8sS0FBSyxnQkFBZ0I7QUFBQSxZQUFDO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFHLEtBQUssYUFBYSxnQkFBZ0I7QUFBRSxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUEyQixtQkFBSyxNQUFNLDZCQUEyQjtBQUFHLGtCQUFJLElBQUUsdUJBQU8sT0FBTyxJQUFJLEdBQUUsSUFBRSxNQUFHLElBQUUsS0FBSyxVQUFVO0FBQUUsbUJBQUksRUFBRSxhQUFXLENBQUMsR0FBRSxLQUFLLEtBQUssR0FBRSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUc7QUFBQyxvQkFBRztBQUFFLHNCQUFFO0FBQUEseUJBQVcsS0FBSyxPQUFPLEVBQUUsR0FBRSxLQUFLLE1BQU0sQ0FBQyxHQUFFO0FBQUMsdUJBQUssNEJBQTRCLENBQUM7QUFBRTtBQUFBLGdCQUFLO0FBQUMsb0JBQUk7QUFBRSxvQkFBRSxJQUFFLEtBQUsscUJBQXFCLEtBQUcsSUFBRSxLQUFLLHdCQUF3QixDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxLQUFHLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxLQUFHLEVBQUUsU0FBTyxtQkFBaUIsS0FBSyxNQUFNLEVBQUUsdUJBQXNCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFFLGFBQVcsS0FBSyxTQUFTLEdBQUUsYUFBWSxJQUFFLEdBQUUsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUFBLGNBQUM7QUFBQyxtQkFBSyxLQUFLLEdBQUUsS0FBSyxNQUFNLDZCQUEyQjtBQUFFLGtCQUFJLElBQUU7QUFBbUIscUJBQU8sSUFBRSxJQUFFLGtCQUFnQixNQUFJLElBQUUscUJBQW9CLEtBQUssV0FBVyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyw0QkFBNEIsR0FBRTtBQUFDLG1CQUFLLFNBQVMsR0FBRSxpQkFBZ0IsS0FBSyxNQUFNLFlBQVksR0FBRSxLQUFLLFNBQVMsR0FBRSxvQkFBbUIsS0FBSyxNQUFNLGlCQUFnQixLQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMseUJBQXlCLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEVBQUUsWUFBVSxFQUFFLElBQUksU0FBTyxpQkFBZSxLQUFLLHNCQUFzQixLQUFHLEtBQUssTUFBTSxDQUFDLEtBQUcsS0FBSyxNQUFNLEVBQUU7QUFBQSxZQUFFO0FBQUEsWUFBQyx3QkFBd0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsQ0FBQztBQUFFLGtCQUFHLEtBQUssTUFBTSxFQUFFO0FBQUUscUJBQUksS0FBSyxVQUFVLFlBQVksS0FBRyxLQUFLLE1BQU0sRUFBRSw4QkFBNkIsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUMsR0FBRSxLQUFLLE1BQU0sRUFBRTtBQUFHLG9CQUFFLEtBQUssS0FBSyxlQUFlLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssVUFBVSxHQUFFLElBQUUsT0FBRyxJQUFFLE9BQUcsR0FBRTtBQUFFLGtCQUFHLEtBQUssTUFBTSxFQUFFO0FBQUUsdUJBQU8sRUFBRSxVQUFRLEtBQUssV0FBVyxHQUFFLEtBQUssWUFBWTtBQUFFLGdCQUFFLFdBQVMsRUFBRSxhQUFXLEdBQUUsSUFBRSxDQUFDLElBQUcsRUFBRSxTQUFPLE9BQUcsTUFBSSxJQUFFLEtBQUssTUFBTSxPQUFNLElBQUUsS0FBSyxNQUFNO0FBQVUsa0JBQUksSUFBRSxLQUFLLElBQUksRUFBRTtBQUFFLG1CQUFLLGdDQUFnQyxDQUFDO0FBQUUsa0JBQUksSUFBRSxLQUFLLE1BQU0sYUFBWSxJQUFFLEtBQUssa0JBQWtCLEdBQUUsQ0FBQztBQUFFLGtCQUFHLENBQUMsS0FBRyxDQUFDLEtBQUcsS0FBSyx5QkFBeUIsQ0FBQyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUssc0JBQUksV0FBUyxDQUFDLEtBQUssc0JBQXNCLE1BQUksSUFBRSxNQUFHLEtBQUssa0NBQWtDLENBQUMsR0FBRSxJQUFFLEtBQUssSUFBSSxFQUFFLEdBQUUsS0FBSyxrQkFBa0IsQ0FBQyxLQUFJLE1BQUksU0FBTyxNQUFJLFdBQVMsSUFBRSxNQUFHLEtBQUssa0NBQWtDLENBQUMsR0FBRSxFQUFFLE9BQUssR0FBRSxLQUFLLE1BQU0sRUFBRSxNQUFJLElBQUUsTUFBRyxLQUFLLE1BQU0sRUFBRSxxQkFBb0IsRUFBQyxJQUFHLEtBQUssTUFBTSxZQUFZLEdBQUUsTUFBSyxFQUFDLENBQUMsR0FBRSxLQUFLLEtBQUssSUFBRyxLQUFLLGtCQUFrQixDQUFDO0FBQUEsY0FBRTtBQUFDLHFCQUFPLEtBQUssa0JBQWtCLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxPQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsa0NBQWtDLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sUUFBTSxJQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsNkJBQTZCLEdBQUU7QUFBQyxxQkFBTyxFQUFFO0FBQUEsWUFBTTtBQUFBLFlBQUMsd0JBQXdCLEdBQUU7QUFBQyxrQkFBSTtBQUFFLGtCQUFJLElBQUUsS0FBSyxrQ0FBa0MsQ0FBQyxHQUFFLElBQUUsS0FBSyw2QkFBNkIsQ0FBQztBQUFFLGdCQUFFLFdBQVMsS0FBRyxLQUFLLE1BQU0sRUFBRSxTQUFPLFFBQU0sRUFBRSxpQkFBZSxFQUFFLGdCQUFlLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFFLFNBQU8sV0FBUyxJQUFFLEVBQUUsRUFBRSxTQUFPLE9BQUssT0FBSyxTQUFPLEVBQUUsVUFBUSxpQkFBZSxLQUFLLE1BQU0sRUFBRSx3QkFBdUIsRUFBQyxJQUFHLEVBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGtCQUFrQixHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRztBQUFFLHVCQUFPLEtBQUssWUFBWSxHQUFFLEdBQUUsT0FBRyxPQUFHLE9BQUcsY0FBYyxHQUFFLEtBQUssd0JBQXdCLENBQUMsR0FBRTtBQUFFLGtCQUFHLEtBQUcsS0FBRyxLQUFLLE1BQU0sRUFBRTtBQUFFLHVCQUFPLEtBQUcsS0FBSyxXQUFXLEdBQUUsRUFBRSxPQUFLLFVBQVMsRUFBRSxTQUFPLE1BQUcsS0FBSyxZQUFZLEdBQUUsR0FBRSxHQUFFLE9BQUcsT0FBRyxjQUFjO0FBQUEsWUFBQztBQUFBLFlBQUMsb0JBQW9CLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsWUFBVSxPQUFHLEtBQUssSUFBSSxFQUFFO0FBQUUsdUJBQU8sRUFBRSxRQUFNLElBQUUsS0FBSyxrQkFBa0IsS0FBSyxNQUFNLE9BQU0sS0FBSyxNQUFNLFFBQVEsSUFBRSxLQUFLLHdCQUF3QixDQUFDLEdBQUUsS0FBSyxXQUFXLEdBQUUsZ0JBQWdCO0FBQUUsa0JBQUcsQ0FBQyxFQUFFLFlBQVUsRUFBRSxJQUFJLFNBQU8sY0FBYTtBQUFDLG9CQUFHLEtBQUssa0JBQWtCLEVBQUUsSUFBSSxNQUFLLEVBQUUsSUFBSSxJQUFJLE9BQU0sTUFBRyxLQUFFLEdBQUU7QUFBRSxvQkFBRSxRQUFNLEtBQUssa0JBQWtCLEdBQUUsR0FBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQUEseUJBQVUsS0FBSyxNQUFNLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsS0FBSyxNQUFNO0FBQVMsdUJBQUcsT0FBSyxFQUFFLHVCQUFxQixTQUFPLEVBQUUscUJBQW1CLEtBQUcsS0FBSyxNQUFNLEVBQUUsNkJBQTRCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFFLFFBQU0sS0FBSyxrQkFBa0IsR0FBRSxHQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFBQSxnQkFBQztBQUFNLG9CQUFFLFFBQU0sR0FBRyxFQUFFLEdBQUc7QUFBRSx1QkFBTyxFQUFFLFlBQVUsTUFBRyxLQUFLLFdBQVcsR0FBRSxnQkFBZ0I7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWtCLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxrQkFBa0IsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEtBQUcsS0FBSyxvQkFBb0IsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUscUJBQU8sS0FBRyxLQUFLLFdBQVcsR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGtCQUFrQixHQUFFLEdBQUU7QUFBQyxrQkFBRyxLQUFLLElBQUksQ0FBQztBQUFFLGtCQUFFLFdBQVMsTUFBRyxFQUFFLE1BQUksS0FBSyx3QkFBd0IsR0FBRSxLQUFLLE9BQU8sQ0FBQztBQUFBLG1CQUFNO0FBQUMsb0JBQUcsRUFBQyxNQUFLLEdBQUUsT0FBTSxFQUFDLElBQUUsS0FBSyxPQUFNO0FBQUUsb0JBQUcsR0FBRyxDQUFDO0FBQUUsc0JBQUUsS0FBSyxnQkFBZ0IsSUFBRTtBQUFBO0FBQU8sMEJBQU87QUFBQSx5QkFBUTtBQUFJLDBCQUFFLEtBQUssb0JBQW9CLENBQUM7QUFBRTtBQUFBLHlCQUFXO0FBQUksMEJBQUUsS0FBSyxtQkFBbUIsQ0FBQztBQUFFO0FBQUEseUJBQVc7QUFBSSwwQkFBRSxLQUFLLG1CQUFtQixDQUFDO0FBQUU7QUFBQSx5QkFBVztBQUFJLDBCQUFFLEtBQUssb0JBQW9CLENBQUM7QUFBRTtBQUFBLHlCQUFXLEtBQUk7QUFBQywwQkFBSSxJQUFFLEtBQUssTUFBTTtBQUFTLDJCQUFHLE9BQUssRUFBRSxrQkFBZ0IsU0FBTyxFQUFFLGdCQUFjLEtBQUcsS0FBSyxNQUFNLEVBQUUsd0JBQXVCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxJQUFFLEtBQUssaUJBQWlCO0FBQUU7QUFBQSxvQkFBSztBQUFBO0FBQVMsNEJBQU0sS0FBSyxXQUFXO0FBQUE7QUFBRSxrQkFBRSxNQUFJLEdBQUUsTUFBSSxRQUFNLEVBQUUsV0FBUztBQUFBLGNBQUc7QUFBQyxxQkFBTyxFQUFFO0FBQUEsWUFBRztBQUFBLFlBQUMsYUFBYSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxLQUFHLE1BQUssRUFBRSxZQUFVLE9BQUcsRUFBRSxRQUFNLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRztBQUFHLG1CQUFLLGFBQWEsR0FBRSxDQUFDLEdBQUUsRUFBRSxZQUFVLENBQUMsQ0FBQztBQUFFLGtCQUFJLElBQUU7QUFBRSxxQkFBTyxLQUFLLE1BQU0sTUFBTSxLQUFHLE1BQUksSUFBRSxLQUFHLE1BQUksSUFBRSxLQUFHLEVBQUUsR0FBRSxLQUFLLFVBQVUsTUFBTSxHQUFHLEdBQUUsRUFBRSxTQUFTLENBQUMsR0FBRSxLQUFLLG9CQUFvQixHQUFFLENBQUMsR0FBRSxLQUFLLDJCQUEyQixHQUFFLEdBQUUsSUFBRSxHQUFFLEtBQUssVUFBVSxLQUFLLEdBQUUsS0FBSyxNQUFNLEtBQUssR0FBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGVBQWUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFHLEtBQUssYUFBYSxnQkFBZ0I7QUFBRSxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUEyQixtQkFBSyxNQUFNLDZCQUEyQjtBQUFHLGtCQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQU8sS0FBSyxLQUFLLEdBQUUsRUFBRSxXQUFTLEtBQUssY0FBYyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFLLE1BQU0sNkJBQTJCLEdBQUUsS0FBSyxXQUFXLEdBQUUsSUFBRSxvQkFBa0IsaUJBQWlCO0FBQUEsWUFBQztBQUFBLFlBQUMscUJBQXFCLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBSyxNQUFNLE1BQU0sS0FBRyxFQUFFO0FBQUUsa0JBQUksSUFBRSxHQUFHLEdBQUUsS0FBRTtBQUFFLGVBQUMsS0FBSyxNQUFNLENBQUMsS0FBRyxLQUFLLFVBQVUsVUFBUSxLQUFHLEtBQUksS0FBSyxVQUFVLE1BQU0sQ0FBQyxHQUFFLEtBQUssYUFBYSxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUF1QixxQkFBTyxNQUFJLEtBQUssTUFBTSx5QkFBdUIsTUFBRyxLQUFLLDJCQUEyQixHQUFFLEdBQUUsQ0FBQyxJQUFHLEtBQUssTUFBTSx5QkFBdUIsT0FBRyxLQUFLLGtCQUFrQixHQUFFLElBQUUsR0FBRSxLQUFLLFVBQVUsS0FBSyxHQUFFLEtBQUssTUFBTSxLQUFLLEdBQUUsS0FBSyxNQUFNLHlCQUF1QixHQUFFLEtBQUssV0FBVyxHQUFFLHlCQUF5QjtBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEyQixHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFLLGlCQUFpQixHQUFFLEdBQUUsS0FBRSxHQUFFLEVBQUUsU0FBTztBQUFBLFlBQUM7QUFBQSxZQUFDLDJCQUEyQixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRztBQUFHLG1CQUFLLGtCQUFrQixHQUFFLE9BQUcsQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsT0FBRyxJQUFFLEtBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQztBQUFFLGtCQUFHLEtBQUssZ0JBQWdCLE1BQU0sR0FBRyxDQUFDLEdBQUU7QUFBRSxrQkFBRSxPQUFLLEtBQUssaUJBQWlCLEdBQUUsS0FBSyxZQUFZLEdBQUUsT0FBRyxHQUFFLEtBQUU7QUFBQSxtQkFBTTtBQUFDLG9CQUFJLElBQUUsS0FBSyxNQUFNLFFBQU8sSUFBRSxLQUFLLE1BQU07QUFBTyxxQkFBSyxNQUFNLFNBQU8sQ0FBQyxHQUFFLEtBQUssVUFBVSxNQUFNLEtBQUssVUFBVSxhQUFhLElBQUUsRUFBRSxHQUFFLEVBQUUsT0FBSyxLQUFLLFdBQVcsTUFBRyxPQUFHLE9BQUc7QUFBQyxzQkFBSSxJQUFFLENBQUMsS0FBSyxrQkFBa0IsRUFBRSxNQUFNO0FBQUUsdUJBQUcsS0FBRyxLQUFLLE1BQU0sRUFBRSw4QkFBNkIsRUFBQyxLQUFJLEVBQUUsU0FBTyxZQUFVLEVBQUUsU0FBTyxrQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsTUFBSSxFQUFFLElBQUksSUFBSSxNQUFJLEVBQUMsQ0FBQztBQUFFLHNCQUFJLElBQUUsQ0FBQyxLQUFHLEtBQUssTUFBTTtBQUFPLHVCQUFLLFlBQVksR0FBRSxDQUFDLEtBQUssTUFBTSxVQUFRLENBQUMsS0FBRyxDQUFDLEtBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUssTUFBTSxVQUFRLEVBQUUsTUFBSSxLQUFLLGdCQUFnQixFQUFFLElBQUcsSUFBRyxDQUFDO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFLEtBQUssVUFBVSxLQUFLLEdBQUUsS0FBSyxNQUFNLFNBQU87QUFBQSxjQUFDO0FBQUMsbUJBQUssZ0JBQWdCLEtBQUs7QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRTtBQUFDLHFCQUFPLEVBQUUsU0FBTztBQUFBLFlBQVk7QUFBQSxZQUFDLGtCQUFrQixHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUUsR0FBRTtBQUFJLG9CQUFHLENBQUMsS0FBSyxrQkFBa0IsRUFBRSxFQUFFO0FBQUUseUJBQU07QUFBRyxxQkFBTTtBQUFBLFlBQUU7QUFBQSxZQUFDLFlBQVksR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRyxNQUFHLElBQUUsQ0FBQyxLQUFHLG9CQUFJLE9BQUksSUFBRSxFQUFDLE1BQUssbUJBQWtCO0FBQUUsdUJBQVEsS0FBSyxFQUFFO0FBQU8scUJBQUssVUFBVSxHQUFFLEVBQUMsSUFBRyxHQUFFLFNBQVEsSUFBRyxjQUFhLEdBQUUsbUJBQWtCLEVBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGNBQWMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRyxxQkFBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUc7QUFBQyxvQkFBRztBQUFFLHNCQUFFO0FBQUEseUJBQVcsS0FBSyxPQUFPLEVBQUUsR0FBRSxLQUFLLE1BQU0sQ0FBQyxHQUFFO0FBQUMsdUJBQUcsS0FBSyw0QkFBNEIsQ0FBQyxHQUFFLEtBQUssS0FBSztBQUFFO0FBQUEsZ0JBQUs7QUFBQyxrQkFBRSxLQUFLLEtBQUssa0JBQWtCLEdBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMsa0JBQWtCLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUk7QUFBRSxrQkFBRyxLQUFLLE1BQU0sRUFBRTtBQUFFLHFCQUFHLEtBQUssTUFBTSxFQUFFLGlCQUFnQixFQUFDLElBQUcsS0FBSyxNQUFNLFlBQVksR0FBRSxZQUFXLElBQUcsQ0FBQyxHQUFFLElBQUU7QUFBQSx1QkFBYSxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLE1BQU0sT0FBTSxJQUFFLEtBQUssTUFBTTtBQUFTLG9CQUFFLEtBQUssZUFBZSxLQUFLLFlBQVksQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsV0FBUyxLQUFLLE1BQU0sRUFBRSxHQUFFO0FBQUMscUJBQUssYUFBYSxvQkFBb0IsR0FBRSxLQUFHLEtBQUssTUFBTSxFQUFFLCtCQUE4QixFQUFDLElBQUcsS0FBSyxNQUFNLFNBQVEsQ0FBQztBQUFFLG9CQUFJLElBQUUsS0FBSyxVQUFVO0FBQUUscUJBQUssS0FBSyxHQUFFLElBQUUsS0FBSyxXQUFXLEdBQUUscUJBQXFCO0FBQUEsY0FBQztBQUFNLG9CQUFFLEtBQUssd0JBQXdCLEdBQUUsS0FBSyxjQUFjO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUEsWUFBQyxnQkFBZ0IsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxVQUFVLEdBQUUsSUFBRSxLQUFLLG9CQUFvQixFQUFFLE9BQU0sQ0FBQztBQUFFLHFCQUFPLEtBQUssaUJBQWlCLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE9BQUssR0FBRSxFQUFFLElBQUksaUJBQWUsR0FBRSxLQUFLLFdBQVcsR0FBRSxZQUFZO0FBQUEsWUFBQztBQUFBLFlBQUMsb0JBQW9CLEdBQUUsR0FBRTtBQUFDLGtCQUFJLEdBQUUsRUFBQyxVQUFTLEdBQUUsTUFBSyxFQUFDLElBQUUsS0FBSztBQUFNLGtCQUFHLEdBQUcsQ0FBQztBQUFFLG9CQUFFLEtBQUssTUFBTTtBQUFBO0FBQVcsc0JBQU0sS0FBSyxXQUFXO0FBQUUsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxxQkFBTyxJQUFFLEtBQUcsS0FBSyxhQUFhLEdBQUcsSUFBRSxLQUFLLGtCQUFrQixHQUFFLEdBQUUsR0FBRSxLQUFFLEdBQUUsS0FBSyxLQUFLLEdBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxrQkFBa0IsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsU0FBTyxNQUFJLENBQUMsR0FBRyxDQUFDO0FBQUU7QUFBTyxrQkFBRyxNQUFJLFNBQVE7QUFBQyxvQkFBRyxLQUFLLFVBQVUsVUFBUztBQUFDLHVCQUFLLE1BQU0sRUFBRSx3QkFBdUIsRUFBQyxJQUFHLEVBQUMsQ0FBQztBQUFFO0FBQUEsZ0JBQU07QUFBQSxjQUFDLFdBQVMsTUFBSSxTQUFRO0FBQUMsb0JBQUcsS0FBSyxVQUFVLFVBQVM7QUFBQyx1QkFBSyxNQUFNLEVBQUUsd0JBQXVCLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBRTtBQUFBLGdCQUFNO0FBQUMsb0JBQUcsS0FBSyxNQUFNLGVBQWM7QUFBQyx1QkFBSyxNQUFNLEVBQUUscUNBQW9DLEVBQUMsSUFBRyxFQUFDLENBQUM7QUFBRTtBQUFBLGdCQUFNO0FBQUMscUJBQUssZ0JBQWdCLGdDQUFnQyxFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUEsY0FBQyxXQUFTLE1BQUksZUFBYSxLQUFLLE1BQU0saUNBQWdDO0FBQUMscUJBQUssTUFBTSxFQUFFLGtCQUFpQixFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUU7QUFBQSxjQUFNO0FBQUMsa0JBQUcsS0FBRyxHQUFHLENBQUMsR0FBRTtBQUFDLHFCQUFLLE1BQU0sRUFBRSxtQkFBa0IsRUFBQyxJQUFHLEdBQUUsU0FBUSxFQUFDLENBQUM7QUFBRTtBQUFBLGNBQU07QUFBQyxlQUFDLEtBQUssTUFBTSxTQUFPLElBQUUsS0FBRyxLQUFHLElBQUksR0FBRSxLQUFLLFFBQVEsS0FBRyxLQUFLLE1BQU0sRUFBRSx3QkFBdUIsRUFBQyxJQUFHLEdBQUUsY0FBYSxFQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxpQkFBZ0I7QUFBQyxxQkFBTSxDQUFDLEVBQUUsS0FBSyxVQUFVLFlBQVUsS0FBSyxRQUFRLDZCQUEyQixDQUFDLEtBQUssTUFBTTtBQUFBLFlBQVc7QUFBQSxZQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLFlBQVksR0FBRSxDQUFDO0FBQUUscUJBQU8sS0FBSyxnQkFBZ0IsZ0NBQWdDLEVBQUUsZ0NBQStCLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxLQUFLLElBQUksRUFBRSxLQUFHLEtBQUssTUFBTSxFQUFFLG1CQUFrQixFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsQ0FBQyxLQUFLLE1BQU0sY0FBWSxDQUFDLEtBQUssUUFBUSw4QkFBNEIsS0FBSyxpQkFBaUIsSUFBRSxLQUFLLDhCQUE0QixPQUFHLEtBQUssb0JBQWtCLE9BQUksS0FBSyxNQUFNLGNBQVksRUFBRSxXQUFTLEtBQUssZ0JBQWdCLE1BQUssSUFBRSxJQUFHLEtBQUssV0FBVyxHQUFFLGlCQUFpQjtBQUFBLFlBQUM7QUFBQSxZQUFDLG1CQUFrQjtBQUFDLGtCQUFHLEtBQUssc0JBQXNCO0FBQUUsdUJBQU07QUFBRyxrQkFBRyxFQUFDLE1BQUssRUFBQyxJQUFFLEtBQUs7QUFBTSxxQkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxHQUFHLENBQUMsS0FBRyxNQUFJLE9BQUssTUFBSSxNQUFJLEtBQUssVUFBVSxhQUFhLEtBQUcsTUFBSTtBQUFBLFlBQUU7QUFBQSxZQUFDLGFBQVk7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLG1CQUFLLGdCQUFnQixnQ0FBZ0MsRUFBRSxrQkFBaUIsRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEtBQUssS0FBSztBQUFFLGtCQUFJLElBQUUsT0FBRyxJQUFFO0FBQUssa0JBQUcsQ0FBQyxLQUFLLHNCQUFzQjtBQUFFLHdCQUFPLElBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRSxLQUFLLE1BQU07QUFBQSx1QkFBVztBQUFBLHVCQUFRO0FBQUEsdUJBQVM7QUFBQSx1QkFBTztBQUFBLHVCQUFRO0FBQUEsdUJBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFRO0FBQUcsd0JBQUcsQ0FBQztBQUFFO0FBQUE7QUFBYyx3QkFBRSxLQUFLLGlCQUFpQjtBQUFBO0FBQUUscUJBQU8sRUFBRSxXQUFTLEdBQUUsRUFBRSxXQUFTLEdBQUUsS0FBSyxXQUFXLEdBQUUsaUJBQWlCO0FBQUEsWUFBQztBQUFBLFlBQUMsNkJBQTZCLEdBQUUsR0FBRTtBQUFDLG1CQUFLLFVBQVUsQ0FBQyxvQkFBbUIsRUFBQyxVQUFTLFFBQU8sQ0FBQyxDQUFDLEtBQUcsRUFBRSxTQUFPLHdCQUFzQixLQUFLLE1BQU0sRUFBRSxnQ0FBK0IsRUFBQyxJQUFHLEVBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLDhCQUE4QixHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxZQUFZLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEtBQUssa0JBQWtCLENBQUMsS0FBRyxFQUFFLFNBQU8sR0FBRSxLQUFLLFdBQVcsR0FBRSxzQkFBc0IsTUFBSSxLQUFLLG1DQUFtQyxDQUFDLEdBQUUsRUFBRSxhQUFXLEdBQUUsS0FBSyxXQUFXLEdBQUUseUJBQXlCO0FBQUEsWUFBRTtBQUFBLFlBQUMsa0JBQWtCLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVU7QUFBbUIseUJBQU0sQ0FBQyxFQUFFLFlBQVUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNO0FBQUEscUJBQU07QUFBYSx5QkFBTTtBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQSxZQUFDLG1DQUFtQyxHQUFFO0FBQUMsa0JBQUcsS0FBSyxNQUFNLEVBQUU7QUFBRSxzQkFBTSxLQUFLLE1BQU0sRUFBRSxxQkFBb0IsRUFBQyxJQUFHLEtBQUssTUFBTSxTQUFRLENBQUM7QUFBRSxtQkFBSyxzQ0FBc0MsS0FBRyxLQUFLLE1BQU0sRUFBRSxxQkFBb0IsRUFBQyxJQUFHLEVBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLHdCQUF3QixHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBYSxtQkFBSyxNQUFNLGVBQWEsRUFBQywwQkFBeUIsR0FBRSxlQUFjLEtBQUk7QUFBRSxrQkFBRztBQUFDLHVCQUFPLEVBQUU7QUFBQSxjQUFDLFVBQUM7QUFBUSxxQkFBSyxNQUFNLGVBQWE7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsbUNBQW1DLEdBQUU7QUFBQyxrQkFBRyxLQUFLLFVBQVUsQ0FBQyxvQkFBbUIsRUFBQyxVQUFTLFFBQU8sQ0FBQyxDQUFDLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUssTUFBTTtBQUFhLHFCQUFLLE1BQU0sZUFBYSxFQUFDLDBCQUF5QixHQUFFLGVBQWMsS0FBSTtBQUFFLG9CQUFHO0FBQUMseUJBQU8sRUFBRTtBQUFBLGdCQUFDLFVBQUM7QUFBUSx1QkFBSyxNQUFNLGVBQWE7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBTSx1QkFBTyxFQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsK0JBQStCLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTTtBQUFVLG1CQUFLLE1BQU0sWUFBVTtBQUFHLGtCQUFHO0FBQUMsdUJBQU8sRUFBRTtBQUFBLGNBQUMsVUFBQztBQUFRLHFCQUFLLE1BQU0sWUFBVTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxXQUFXLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVSxhQUFhO0FBQUUsa0JBQUcsS0FBRyxDQUFDLEdBQUU7QUFBQyxxQkFBSyxVQUFVLE1BQU0sSUFBRSxFQUFFO0FBQUUsb0JBQUc7QUFBQyx5QkFBTyxFQUFFO0FBQUEsZ0JBQUMsVUFBQztBQUFRLHVCQUFLLFVBQVUsS0FBSztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyxjQUFjLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssVUFBVSxhQUFhO0FBQUUsa0JBQUcsS0FBRyxHQUFFO0FBQUMscUJBQUssVUFBVSxNQUFNLElBQUUsQ0FBQyxFQUFFO0FBQUUsb0JBQUc7QUFBQyx5QkFBTyxFQUFFO0FBQUEsZ0JBQUMsVUFBQztBQUFRLHVCQUFLLFVBQVUsS0FBSztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFDO0FBQUEsWUFBQyx5QkFBd0I7QUFBQyxtQkFBSyxNQUFNLGFBQWEsZ0JBQWM7QUFBQSxZQUFDO0FBQUEsWUFBQywwQ0FBeUM7QUFBQyxxQkFBTyxLQUFLLE1BQU0sYUFBYSw0QkFBMEI7QUFBQSxZQUFDO0FBQUEsWUFBQyx3Q0FBdUM7QUFBQyxxQkFBTyxLQUFLLE1BQU0sYUFBYSxpQkFBZSxRQUFNLEtBQUssTUFBTSxhQUFhLGlCQUFlO0FBQUEsWUFBQztBQUFBLFlBQUMsd0JBQXdCLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxPQUFNLElBQUUsS0FBSyxNQUFNO0FBQVMsbUJBQUssTUFBTSxtQkFBaUIsS0FBSyxNQUFNO0FBQU0sa0JBQUksSUFBRSxLQUFLLE1BQU07QUFBMkIsbUJBQUssTUFBTSw2QkFBMkI7QUFBRyxrQkFBSSxJQUFFLEtBQUssWUFBWSxLQUFLLHlCQUF5QixHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUscUJBQU8sS0FBSyxNQUFNLDZCQUEyQixHQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsd0JBQXVCO0FBQUMsbUJBQUssYUFBYSxjQUFjO0FBQUUsa0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRSxtQkFBSyxLQUFLLEdBQUUsS0FBSyxJQUFJLENBQUM7QUFBRSxrQkFBSSxJQUFFLEtBQUssaUJBQWlCLElBQUU7QUFBRSxtQkFBSyxtQkFBbUI7QUFBRSxrQkFBSSxJQUFFLEtBQUssVUFBVTtBQUFFLGtCQUFHO0FBQUMsa0JBQUUsT0FBSyxLQUFLLGFBQWEsR0FBRSxHQUFFLFFBQVE7QUFBQSxjQUFDLFVBQUM7QUFBUSxrQkFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTyxLQUFLLElBQUksQ0FBQyxHQUFFLEtBQUssV0FBVyxHQUFFLGtCQUFrQjtBQUFBLFlBQUM7QUFBQSxZQUFDLGdDQUFnQyxHQUFFO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRSxLQUFHLEVBQUMsTUFBSyxPQUFNLEdBQUUsS0FBRyxFQUFDLE1BQUssU0FBUSxHQUFFLEtBQUcsR0FBRUMsTUFBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxvQkFBbUIsS0FBRztBQUFtQixtQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsRUFBQyxNQUFLLEVBQUMsSUFBRTtBQUFFLGtCQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUM7QUFBQyxzQkFBRyxNQUFJLEtBQUk7QUFBQyx3QkFBRyxFQUFDLEtBQUksR0FBRSxPQUFNLEdBQUUsT0FBTSxHQUFFLEtBQUksRUFBQyxJQUFFLEdBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLEVBQUUsT0FBTSxDQUFDO0FBQUUsc0JBQUUsT0FBTyxHQUFFLEdBQUUsSUFBSSxHQUFHLEVBQUMsTUFBSyxHQUFHLEVBQUUsR0FBRSxPQUFNLEtBQUksT0FBTSxHQUFFLEtBQUksR0FBRSxVQUFTLEVBQUUsT0FBTSxRQUFPLEVBQUMsQ0FBQyxHQUFFLElBQUksR0FBRyxFQUFDLE1BQUssR0FBRyxHQUFHLEdBQUUsT0FBTSxHQUFFLE9BQU0sR0FBRSxLQUFJLEdBQUUsVUFBUyxHQUFFLFFBQU8sRUFBRSxJQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUk7QUFBQSxrQkFBUTtBQUFDLHNCQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsd0JBQUcsRUFBQyxLQUFJLEdBQUUsT0FBTSxHQUFFLE9BQU0sR0FBRSxLQUFJLEVBQUMsSUFBRSxHQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxFQUFFLE9BQU0sQ0FBQyxHQUFFO0FBQUUsc0JBQUUsV0FBVyxDQUFDLE1BQUksS0FBRyxJQUFFLElBQUksR0FBRyxFQUFDLE1BQUssR0FBRyxFQUFFLEdBQUUsT0FBTSxLQUFJLE9BQU0sR0FBRSxLQUFJLEdBQUUsVUFBUyxFQUFFLE9BQU0sUUFBTyxFQUFDLENBQUMsSUFBRSxJQUFFLElBQUksR0FBRyxFQUFDLE1BQUssR0FBRyxDQUFDLEdBQUUsT0FBTSxLQUFJLE9BQU0sR0FBRSxLQUFJLEdBQUUsVUFBUyxFQUFFLE9BQU0sUUFBTyxFQUFDLENBQUM7QUFBRSx3QkFBSSxHQUFFLEdBQUUsR0FBRTtBQUFFLDBCQUFJLE1BQUksSUFBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLEVBQUUsS0FBSSxFQUFFLEdBQUUsSUFBRSxNQUFJLE9BQUssT0FBSyxFQUFFLE1BQU0sR0FBRSxFQUFFLEdBQUUsSUFBRSxJQUFJLEdBQUcsRUFBQyxNQUFLLEdBQUcsRUFBRSxHQUFFLE9BQU0sS0FBSSxPQUFNLEdBQUUsS0FBSSxHQUFFLFVBQVMsR0FBRSxRQUFPLEVBQUUsSUFBRyxDQUFDLE1BQUksSUFBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLEVBQUUsS0FBSSxFQUFFLEdBQUUsSUFBRSxNQUFJLE9B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RSxNQUFNLFNBQU8sT0FBSSxFQUFFLGNBQWM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsZ0JBQUksSUFBRSxDQUFDO0FBQUUscUJBQVEsS0FBSyxPQUFPLEtBQUssQ0FBQztBQUFFLGdCQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUU7QUFBRSxtQkFBTztBQUFBLFVBQUM7QUFBQyxjQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsbUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFO0FBQUcsbUJBQU8sS0FBRyxRQUFNLEVBQUUsWUFBVSxHQUFHLEVBQUUsT0FBTyxHQUFFLElBQUUsR0FBRyxFQUFFLE9BQU8sSUFBRyxJQUFJLEVBQUUsR0FBRSxDQUFDO0FBQUEsVUFBQztBQUFDLGNBQUksS0FBRyxDQUFDO0FBQUUsbUJBQVMsR0FBRyxHQUFFO0FBQUMsZ0JBQUksSUFBRSxHQUFHLE9BQU8sT0FBRyxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLEtBQUssR0FBRyxHQUFFLElBQUUsR0FBRztBQUFHLGdCQUFHLENBQUMsR0FBRTtBQUFDLGtCQUFFO0FBQUcsdUJBQVEsS0FBSztBQUFFLG9CQUFFLEdBQUcsR0FBRyxDQUFDO0FBQUUsaUJBQUcsS0FBRztBQUFBLFlBQUM7QUFBQyxtQkFBTztBQUFBLFVBQUM7QUFBQyxZQUFFLFFBQU0sSUFBRyxFQUFFLGtCQUFnQixJQUFHLEVBQUUsV0FBUztBQUFBLFFBQUUsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsZ0NBQWdDLEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHO0FBQUUsbUJBQVMsSUFBRztBQUFDLGdCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUMsR0FBRSxFQUFDLGVBQWMsSUFBRSxLQUFFLElBQUU7QUFBRSxtQkFBTyxTQUFTLEdBQUU7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QU07QUFBQyxZQUFJLE1BQUksR0FBRyxHQUFFLE1BQUksSUFBSSxDQUFDLEVBQUUsUUFBUSxHQUFFLE1BQUksSUFBSSxHQUFHLEtBQUs7QUFBRSxZQUFJLFVBQVEsU0FBUyxJQUFHO0FBQUMsaUJBQU8sSUFBSSxJQUFJLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxNQUFJLEdBQUcsQ0FBQyxLQUFJLFFBQU07QUFBQyxZQUFJLE1BQUksR0FBRyxHQUFFLE1BQUksR0FBRyxHQUFFLE1BQUksR0FBRyxHQUFFLE1BQUksSUFBSSxHQUFFLEtBQUcsSUFBSSxRQUFPLE1BQUksSUFBSSxHQUFHLEtBQUs7QUFBRSxZQUFJLFVBQVEsSUFBSSxXQUFVO0FBQUMsaUJBQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQztBQUFBLFFBQUMsQ0FBQyxJQUFFLFNBQVMsSUFBRztBQUFDLGlCQUFPLElBQUksRUFBRSxLQUFHLFdBQVMsSUFBSSxJQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUU7QUFBQSxRQUFDLElBQUU7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHLEdBQUUsTUFBSSxJQUFJO0FBQVUsWUFBSSxVQUFRLFNBQVMsSUFBRztBQUFDLGNBQUcsTUFBSTtBQUFLLGtCQUFNLElBQUksMEJBQXdCLEVBQUU7QUFBRSxpQkFBTztBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxJQUFJLEdBQUUsTUFBSSxHQUFHO0FBQUUsWUFBSSxVQUFRLFNBQVMsSUFBRztBQUFDLGlCQUFPLElBQUksSUFBSSxFQUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxLQUFJLFFBQU07QUFBQyxZQUFJLFVBQVEsU0FBUyxJQUFHO0FBQUMsaUJBQU8sT0FBTyxNQUFJO0FBQUEsUUFBVTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxNQUFJLEdBQUc7QUFBRSxZQUFJLFVBQVEsU0FBUyxJQUFHO0FBQUMsaUJBQU8sT0FBTyxNQUFJLFdBQVMsT0FBSyxPQUFLLElBQUksRUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxTQUFTLElBQUc7QUFBQyxpQkFBTyxJQUFJLEVBQUUsSUFBRSxLQUFHO0FBQUEsUUFBTTtBQUFFLFlBQUksVUFBUSxTQUFTLElBQUcsSUFBRztBQUFDLGlCQUFPLFVBQVUsU0FBTyxJQUFFLElBQUksR0FBRyxHQUFHLElBQUUsR0FBRyxPQUFLLEdBQUcsSUFBSTtBQUFBLFFBQUc7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLE1BQUksR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHO0FBQUUsWUFBSSxVQUFRLElBQUksQ0FBQyxFQUFFLGFBQWE7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLE1BQUksR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHO0FBQUUsWUFBSSxVQUFRLElBQUksYUFBWSxXQUFXLEtBQUc7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLE1BQUksR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHLEdBQUUsS0FBRyxJQUFJLEdBQUUsTUFBSSxJQUFJLFNBQVEsTUFBSSxJQUFJLE1BQUssTUFBSSxPQUFLLElBQUksWUFBVSxPQUFLLElBQUksU0FBUSxNQUFJLE9BQUssSUFBSSxJQUFHLElBQUc7QUFBRyxnQkFBTSxLQUFHLElBQUksTUFBTSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUcsS0FBRyxHQUFHLEtBQUcsSUFBRSxJQUFFLEVBQUUsR0FBRyxLQUFHLEdBQUc7QUFBSyxTQUFDLE1BQUksT0FBSyxLQUFHLEdBQUcsTUFBTSxhQUFhLElBQUcsQ0FBQyxNQUFJLEdBQUcsTUFBSSxRQUFNLEtBQUcsR0FBRyxNQUFNLGVBQWUsR0FBRSxPQUFLLEtBQUcsQ0FBQyxHQUFHO0FBQU0sWUFBSSxVQUFRO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxLQUFJLFFBQU07QUFBQyxZQUFJLE1BQUksSUFBSSxHQUFFLE1BQUksR0FBRztBQUFFLFlBQUksVUFBUSxDQUFDLENBQUMsT0FBTyx5QkFBdUIsQ0FBQyxJQUFJLFdBQVU7QUFBQyxjQUFJLEtBQUcsT0FBTztBQUFFLGlCQUFNLENBQUMsT0FBTyxFQUFFLEtBQUcsRUFBRSxPQUFPLEVBQUUsYUFBWSxXQUFTLENBQUMsT0FBTyxRQUFNLE9BQUssTUFBSTtBQUFBLFFBQUUsQ0FBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxNQUFJLEdBQUc7QUFBRSxZQUFJLFVBQVEsT0FBSyxDQUFDLE9BQU8sUUFBTSxPQUFPLE9BQU8sWUFBVTtBQUFBLE1BQVEsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxNQUFJLEdBQUcsR0FBRSxNQUFJLEdBQUcsR0FBRSxNQUFJLEdBQUcsR0FBRSxNQUFJLElBQUksR0FBRSxNQUFJLEdBQUcsR0FBRSxNQUFJLElBQUk7QUFBTyxZQUFJLFVBQVEsTUFBSSxTQUFTLElBQUc7QUFBQyxpQkFBTyxPQUFPLE1BQUk7QUFBQSxRQUFRLElBQUUsU0FBUyxJQUFHO0FBQUMsY0FBSSxLQUFHLElBQUksUUFBUTtBQUFFLGlCQUFPLElBQUksRUFBRSxLQUFHLElBQUksR0FBRyxXQUFVLElBQUksRUFBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksTUFBSSxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxNQUFJLEdBQUcsR0FBRSxNQUFJLElBQUk7QUFBTyxZQUFJLFVBQVEsU0FBUyxJQUFHO0FBQUMsY0FBRztBQUFDLG1CQUFPLElBQUksRUFBRTtBQUFBLFVBQUMsUUFBQztBQUFNLG1CQUFNO0FBQUEsVUFBUTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLE1BQUksR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxJQUFJLEdBQUUsTUFBSSxJQUFJO0FBQVUsWUFBSSxVQUFRLFNBQVMsSUFBRztBQUFDLGNBQUcsSUFBSSxFQUFFO0FBQUUsbUJBQU87QUFBRyxnQkFBTSxJQUFJLElBQUksRUFBRSxJQUFFLG9CQUFvQjtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLE1BQUksR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxJQUFJO0FBQUUsWUFBSSxVQUFRLFNBQVMsSUFBRyxJQUFHO0FBQUMsY0FBSSxLQUFHLEdBQUc7QUFBSSxpQkFBTyxNQUFJLE9BQUssU0FBTyxJQUFJLEVBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxNQUFJLEdBQUcsQ0FBQyxLQUFJLFFBQU07QUFBQyxZQUFJLE1BQUksR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLE1BQUksSUFBSTtBQUFVLFlBQUksVUFBUSxTQUFTLElBQUcsSUFBRztBQUFDLGNBQUksSUFBRztBQUFHLGNBQUcsT0FBSyxZQUFVLEdBQUcsS0FBRyxHQUFHLFFBQVEsS0FBRyxDQUFDLEdBQUcsS0FBRyxHQUFHLElBQUcsRUFBRSxDQUFDLEtBQUcsR0FBRyxLQUFHLEdBQUcsT0FBTyxLQUFHLENBQUMsR0FBRyxLQUFHLEdBQUcsSUFBRyxFQUFFLENBQUMsS0FBRyxPQUFLLFlBQVUsR0FBRyxLQUFHLEdBQUcsUUFBUSxLQUFHLENBQUMsR0FBRyxLQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxtQkFBTztBQUFHLGdCQUFNLElBQUkseUNBQXlDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksTUFBSSxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxVQUFRO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxLQUFJLFFBQU07QUFBQyxZQUFJLE1BQUksR0FBRyxHQUFFLE1BQUksT0FBTztBQUFlLFlBQUksVUFBUSxTQUFTLElBQUcsSUFBRztBQUFDLGNBQUc7QUFBQyxnQkFBSSxLQUFJLElBQUcsRUFBQyxPQUFNLElBQUcsY0FBYSxNQUFHLFVBQVMsS0FBRSxDQUFDO0FBQUEsVUFBQyxRQUFDO0FBQU0sZ0JBQUksTUFBSTtBQUFBLFVBQUU7QUFBQyxpQkFBTztBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxzQkFBcUIsTUFBSSxJQUFJLFFBQU0sSUFBSSxLQUFJLENBQUMsQ0FBQztBQUFFLFlBQUksVUFBUTtBQUFBLE1BQUcsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxNQUFJLElBQUksR0FBRSxNQUFJLEdBQUc7QUFBRSxTQUFDLElBQUksVUFBUSxTQUFTLElBQUcsSUFBRztBQUFDLGlCQUFPLElBQUksUUFBTSxJQUFJLE1BQUksT0FBSyxTQUFPLEtBQUcsQ0FBQztBQUFBLFFBQUUsR0FBRyxZQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBQyxTQUFRLFVBQVMsTUFBSyxNQUFJLFNBQU8sVUFBUyxXQUFVLGdEQUErQyxTQUFRLDREQUEyRCxRQUFPLHNDQUFxQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxNQUFJLEdBQUcsQ0FBQyxLQUFJLFFBQU07QUFBQyxZQUFJLE1BQUksR0FBRyxHQUFFLE1BQUksR0FBRyxHQUFFLE1BQUksSUFBSTtBQUFPLFlBQUksVUFBUSxTQUFTLElBQUc7QUFBQyxpQkFBTyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxNQUFJLEdBQUcsR0FBRSxNQUFJLElBQUksR0FBRSxNQUFJLElBQUksQ0FBQyxFQUFFLGNBQWM7QUFBRSxZQUFJLFVBQVEsT0FBTyxVQUFRLFNBQVMsSUFBRyxJQUFHO0FBQUMsaUJBQU8sSUFBSSxJQUFJLEVBQUUsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsS0FBSSxRQUFNO0FBQUMsWUFBSSxNQUFJLEdBQUcsR0FBRSxNQUFJLEdBQUUsTUFBSSxLQUFLLE9BQU8sR0FBRSxNQUFJLElBQUksR0FBRyxRQUFRO0FBQUUsWUFBSSxVQUFRLFNBQVMsSUFBRztBQUFDLGlCQUFNLGFBQVcsT0FBSyxTQUFPLEtBQUcsTUFBSSxPQUFLLElBQUksRUFBRSxNQUFJLEtBQUksRUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLE1BQUksR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsS0FBRyxJQUFJLEtBQUssR0FBRSxLQUFHLElBQUksUUFBTyxNQUFJLE1BQUksR0FBRyxLQUFJLE1BQUksTUFBSSxLQUFHLE1BQUksR0FBRyxpQkFBZTtBQUFJLFlBQUksVUFBUSxTQUFTLElBQUc7QUFBQyxjQUFHLENBQUMsSUFBSSxJQUFHLEVBQUUsS0FBRyxFQUFFLE9BQUssT0FBTyxHQUFHLE9BQUssV0FBVTtBQUFDLGdCQUFJLEtBQUcsWUFBVTtBQUFHLG1CQUFLLElBQUksSUFBRyxFQUFFLElBQUUsR0FBRyxNQUFJLEdBQUcsTUFBSSxPQUFLLE1BQUksR0FBRyxNQUFJLElBQUksRUFB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LElBQUcsSUFBRztBQUFDLGNBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxrQkFBTSxJQUFJLEdBQUcsR0FBRztBQUFFLGlCQUFPLEdBQUcsU0FBTyxJQUFHLElBQUksSUFBRyxJQUFHLEVBQUUsR0FBRTtBQUFBLFFBQUUsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLGlCQUFPLElBQUksSUFBRyxFQUFFLEtBQUcsQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLGlCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsUUFBQyxNQUFJLEtBQUcsSUFBSSxPQUFPLEdBQUUsSUFBSSxNQUFJLE1BQUcsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLGNBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxrQkFBTSxJQUFJLEdBQUcsR0FBRztBQUFFLGlCQUFPLEdBQUcsU0FBTyxJQUFHLElBQUksSUFBRyxJQUFHLEVBQUUsR0FBRTtBQUFBLFFBQUUsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLGlCQUFPLEdBQUcsSUFBRyxFQUFFLElBQUUsR0FBRyxNQUFJLENBQUM7QUFBQSxRQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyxpQkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLFFBQUM7QUFBRyxZQUFJLElBQUcsS0FBSSxJQUFHLEtBQUk7QUFBRyxZQUFJLFVBQVEsRUFBQyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxTQUFRLEtBQUksV0FBVSxJQUFHO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxNQUFJLEdBQUcsQ0FBQyxLQUFJLFFBQU07QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLE1BQUksR0FBRyxHQUFFLE1BQUksU0FBUyxXQUFVLE1BQUksTUFBSSxPQUFPLDBCQUF5QixLQUFHLElBQUksS0FBSSxNQUFNLEdBQUUsTUFBSSxNQUFJLFdBQVU7QUFBQSxRQUFDLEVBQUUsU0FBTyxhQUFZLE1BQUksT0FBSyxDQUFDLE1BQUksTUFBSSxJQUFJLEtBQUksTUFBTSxFQUFFO0FBQWMsWUFBSSxVQUFRLEVBQUMsUUFBTyxJQUFHLFFBQU8sS0FBSSxjQUFhLElBQUc7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLE1BQUksR0FBRyxDQUFDLEtBQUksUUFBTTtBQUFDLFlBQUksTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUUsTUFBSSxJQUFJLEdBQUUsTUFBSSxJQUFJLEVBQUUsY0FBYSxNQUFJLElBQUksS0FBSSxNQUFJLElBQUksU0FBUSxNQUFJLE9BQU8sTUFBTSxFQUFFLE1BQU0sUUFBUTtBQUFFLFNBQUMsSUFBSSxVQUFRLFNBQVMsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLGNBQUksS0FBRyxLQUFHLENBQUMsQ0FBQyxHQUFHLFNBQU8sT0FBRyxLQUFHLEtBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBVyxPQUFHLEtBQUcsS0FBRyxDQUFDLENBQUMsR0FBRyxjQUFZLE9BQUcsS0FBRyxNQUFJLEdBQUcsU0FBTyxTQUFPLEdBQUcsT0FBSyxJQUFHO0FBQUcsY0FBRyxJQUFJLEVBQUUsTUFBSSxPQUFPLEVBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxNQUFJLGNBQVksS0FBRyxNQUFJLE9BQU8sRUFBRSxFQUFFLFFBQVEsc0JBQXFCLElBQUksSUFBRSxPQUFNLENBQUMsSUFBSSxJQUFHLE1BQU0sS0FBRyxPQUFLLEdBQUcsU0FBTyxPQUFLLElBQUksSUFBRyxRQUFPLEVBQUUsR0FBRSxLQUFHLElBQUksRUFBRSxHQUFFLEdBQUcsV0FBUyxHQUFHLFNBQU8sSUFBSSxLQUFLLE9BQU8sTUFBSSxXQUFTLEtBQUcsRUFBRSxLQUFJLE9BQUssS0FBSTtBQUFDLGlCQUFHLEdBQUcsTUFBSSxLQUFHLElBQUksSUFBRyxFQUFFO0FBQUU7QUFBQSxVQUFNO0FBQU0saUJBQUcsQ0FBQyxNQUFJLEdBQUcsUUFBTSxLQUFHLFFBQUksT0FBTyxHQUFHO0FBQUksZUFBRyxHQUFHLE1BQUksS0FBRyxJQUFJLElBQUcs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QyxtQkFBUyxHQUFHLElBQUc7QUFBQyxnQkFBSSxNQUFJLEdBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFHLEdBQUcsRUFBRTtBQUFJLGlCQUFHLEdBQUcsUUFBUSxJQUFHLEVBQUUsRUFBRSxRQUFRLElBQUcsRUFBRSxFQUFFLFFBQVEsSUFBRyxJQUFJO0FBQUUsZ0JBQUksS0FBRztBQUFHLG1CQUFLLE9BQUs7QUFBSSxtQkFBRyxJQUFHLEtBQUcsR0FBRyxRQUFRLElBQUcsR0FBRyxPQUFPLElBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQUUsaUJBQUcsR0FBRyxRQUFRLElBQUcsRUFBRSxFQUFFLFVBQVU7QUFBRSxnQkFBSSxLQUFHLHVCQUFPLE9BQU8sSUFBSSxHQUFFLEtBQUcsR0FBRyxRQUFRLElBQUcsRUFBRSxFQUFFLFFBQVEsSUFBRyxFQUFFLEVBQUUsVUFBVSxHQUFFO0FBQUcsbUJBQUssS0FBRyxHQUFHLEtBQUssRUFBRSxLQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLEdBQUcsUUFBUSxJQUFHLEVBQUU7QUFBRSxxQkFBTyxHQUFHLEdBQUcsT0FBSyxZQUFVLE1BQU0sUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFFLEdBQUcsR0FBRyxNQUFJLEdBQUcsT0FBTyxHQUFHLEdBQUcsS0FBSSxFQUFFLElBQUUsR0FBRyxHQUFHLE1BQUk7QUFBQSxZQUFFO0FBQUMsbUJBQU0sRUFBQyxVQUFTLElBQUcsU0FBUSxHQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsSUFBRztBQUFDLGdCQUFHLEVBQUMsVUFBUyxLQUFHLElBQUcsU0FBUSxLQUFHLENBQUMsRUFBQyxJQUFFLElBQUcsTUFBSSxHQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBRyxHQUFHLEVBQUUsS0FBSSxLQUFHLE9BQU0sS0FBRyxNQUFLLEtBQUcsT0FBTSxLQUFHLE9BQU8sS0FBSyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUksUUFBSSxHQUFHLElBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBRyxPQUFLLEdBQUcsT0FBTyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxRQUFJLEtBQUcsTUFBSSxLQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUU7QUFBRSxnQkFBRyxDQUFDLElBQUc7QUFBQyxrQkFBRyxHQUFHLFdBQVM7QUFBRSx1QkFBTTtBQUFHLGtCQUFHLEdBQUcsV0FBUyxLQUFHLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRztBQUFJLHVCQUFNLEdBQUcsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUcsR0FBRyxJQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxnQkFBSSxLQUFHLEdBQUcsTUFBTSxFQUFFLEVBQUUsSUFBSSxRQUFJLEdBQUcsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFFO0FBQUcsbUJBQU8sS0FBRyxNQUFJLEtBQUcsS0FBRyxPQUFLLE1BQUksR0FBRyxTQUFPLEtBQUcsS0FBRyxNQUFJLEtBQUc7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxtQkFBTyxHQUFHLE9BQU8sRUFBRSxFQUFFLElBQUksUUFBSSxJQUFJLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsTUFBSSxHQUFHLEVBQUMsNEJBQTRCLElBQUcsSUFBRztBQUFDO0FBQWEsYUFBRztBQUFFLG1CQUFTLEdBQUcsSUFBRztBQUFDLGdCQUFJLEtBQUcsR0FBRyxRQUFRLElBQUk7QUFBRSxtQkFBTyxNQUFJLElBQUUsR0FBRyxPQUFPLEtBQUcsQ0FBQyxNQUFJO0FBQUEsSUFDNS9ELFNBQU8sT0FBSztBQUFBLFVBQUk7QUFBQyxtQkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBTztBQUFBLG1CQUFRO0FBQUssdUJB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QUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUksTUFBSSxHQUFHLEVBQUMscUNBQW9DO0FBQUMsYUFBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsS0FBSSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEtBQUksS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsS0FBSSxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLE9BQU0sS0FBRyxPQUFNLEtBQUcsT0FBTSxLQUFHLE1BQUssS0FBRyxPQUFNLEtBQUcsTUFBSyxLQUFHLE9BQU0sS0FBRyxPQUFNLEtBQUcsS0FBSSxLQUFHLE1BQUssS0FBRyxRQUFPLEtBQUcsTUFBSyxLQUFHLEdBQUUsS0FBRyxTQUFRLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxTQUFRLEtBQUcsU0FBUSxLQUFHLEdBQUUsS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsV0FBVSxLQUFHLFlBQVcsS0FBRyxRQUFPLEtBQUcsU0FBUSxLQUFHLE9BQU0sS0FBRyxNQUFLLEtBQUcsWUFBVyxLQUFHLE1BQUssS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxRQUFPLEtBQUcsTUFBSyxLQUFHLE9BQU0sS0FBRyxHQUFFLEtBQUcsVUFBUyxLQUFHLE9BQU0sS0FBRyxVQUFTLEtBQUcsV0FBVSxLQUFHLFdBQVUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLFNBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsTUFBSyxLQUFHLElBQUcsS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLE1BQUssS0FBRyxPQUFNLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsb2FBQW1hLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLG9hQUFtYSxNQUFJLEVBQUMsV0FBVSxJQUFHLFVBQVMsSUFBRyxhQUFZLElBQUcsWUFBVyxJQUFHLE9BQU0sSUFBRyxRQUFPLElBQUcsWUFBVyxJQUFHLGVBQWMsSUFBRyxjQUFhLElBQUcsUUFBTyxJQUFHLFVBQVMsSUFBRyxPQUFNLElBQUcsU0FBUSxJQUFHLE9BQU0sSUFBRyxXQUFVLElBQUcsUUFBTyxJQUFHLGNBQWEsSUFBRyxjQUFhLElBQUcsWUFBVyxJQUFHLFNBQVEsSUFBRyxjQUFhLElBQUcsTUFBSyxJQUFHLFFBQU8sSUFBRyxRQUFPLElBQUcsUUFBTyxJQUFHLE9BQU0sSUFBRyxjQUFhLElBQUcsT0FBTSxJQUFHLFFBQU8sSUFBRyxhQUFZLElBQUcsT0FBTSxJQUFHLFFBQU8sSUFBRyxLQUFJLElBQUcsU0FBUSxJQUFHLFFBQU8sSUFBRyxPQUFNLElBQUcsUUFBTyxJQUFHLFFBQU8sSUFBRyxVQUFTLElBQUcsV0FBVSxJQUFHLGNBQWEsSUFBRyxVQUFTLElBQUcsV0FBVSxJQUFHLGFBQVksSUFBRyxRQUFPLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxRQUFPLElBQUcsUUFBTyxJQUFHLFNBQVEsSUFBRyxRQUFPLElBQUcsU0FBUSxJQUFHLFFBQU8sSUFBRyxRQUFPLElBQUcsYUFBWSxJQUFHLFFBQU8sSUFBRyxPQUFNLElBQUcsUUFBTyxJQUFHLFFBQU8sSUFBRyxVQUFTLElBQUcsU0FBUSxJQUFHLFdBQVUsSUFBRyxVQUFTLElBQUcsU0FBUSxJQUFHLFFBQU8sSUFBRyxPQUFNLElBQUcsWUFBVyxJQUFHLFdBQVUsSUFBRyxPQUFNLElBQUcsT0FBTSxJQUFHLFFBQU8sSUFBRyxpQkFBZ0IsSUFBRyxZQUFXLElBQUcsUUFBTyxJQUFHLE9BQU0sSUFBRyxRQUFPLElBQUcsT0FBTSxJQUFHLFFBQU8sSUFBRyxPQUFNLElBQUcsV0FBVSxJQUFHLFNBQVEsSUFBRyxhQUFZLElBQUcsT0FBTSxJQUFHLGNBQWEsSUFBRyx1QkFBc0IsSUFBRyxpQkFBZ0IsSUFBRyx1QkFBc0IsSUFBRyxlQUFjLElBQUcsa0JBQWlCLElBQUcsUUFBTyxJQUFHLFFBQU8sSUFBRyxTQUFRLElBQUcsUUFBTyxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsUUFBTyxJQUFHLFFBQU8sSUFBRyxRQUFPLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFFBQU8sSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFdBQVUsSUFBRyxTQUFRLElBQUcsVUFBUyxJQUFHLE9BQU0sSUFBRyxTQUFRLElBQUcsUUFBTyxJQUFHLG1CQUFrQixJQUFHLHdCQUF1QixJQUFHLFVBQVMsSUFBRyxVQUFTLElBQUcsUUFBTyxJQUFHLG1CQUFrQixJQUFHLGdCQUFlLElBQUcsZUFBYyxJQUFHLGdCQUFlLElBQUcsZ0JBQWUsSUFBRyxrQkFBaUIsSUFBRyxnQkFBZSxJQUFHLGlCQUFnQixJQUFHLFFBQU8sSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxVQUFTLElBQUcsU0FBUSxJQUFHLFFBQU8sSUFBRyxVQUFTLElBQUcsU0FBUSxJQUFHLFVBQVMsSUFBRyxhQUFZLElBQUcsWUFBVyxJQUFHLFFBQU8sSUFBRyxTQUFRLElBQUcsV0FBVSxJQUFHLFlBQVcsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxTQUFRLElBQUcsU0FBUSxJQUFHLFNBQVEsSUFBRyxNQUFLLElBQUcsTUFBSyxJQUFHLE1BQUssSUFBRyxNQUFLLElB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LENBQUMsR0FBRSxJQUFFLElBQUc7QUFBQywyQkFBUSxJQUFFLElBQUUsR0FBRSxJQUFFLE1BQUksSUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFHLElBQUc7QUFBSTtBQUFDLHNCQUFHLElBQUUsSUFBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUUsSUFBRSxHQUFFLEtBQUcsRUFBRSxNQUFNLEdBQUUsQ0FBQyxLQUFHLEtBQUcsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEtBQUc7QUFBRTtBQUFNLHNCQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRSxHQUFFLEVBQUUsSUFBRSxPQUFLLElBQUUsRUFBRSxXQUFXLENBQUMsS0FBRyxRQUFNLE9BQUssSUFBRSxLQUFHLEtBQUcsSUFBRyxJQUFFLE1BQUksSUFBRSxJQUFFLE9BQU0sSUFBRSxPQUFLLElBQUUsT0FBSyxJQUFFLEdBQUUsRUFBRSxJQUFFLE9BQUssSUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFHLFFBQU0sT0FBSyxJQUFFLEtBQUcsS0FBRyxJQUFHLElBQUUsTUFBSSxJQUFFLElBQUUsU0FBUSxJQUFFLE1BQUksS0FBRyxTQUFPLElBQUUsV0FBUyxJQUFFLE9BQUssSUFBRSxHQUFFLEVBQUUsSUFBRSxPQUFLLElBQUUsRUFBRSxXQUFXLENBQUMsS0FBRyxRQUFNLE1BQUksSUFBRSxRQUFNLElBQUUsSUFBRSxZQUFVLEtBQUcsS0FBSSxJQUFFLFNBQU8sSUFBRSxhQUFXLElBQUUsU0FBUSxJQUFFLEtBQUcsS0FBRyxHQUFFLEtBQUcsWUFBVSxJQUFFLEtBQUcsS0FBRyxPQUFPLGFBQWEsU0FBTyxLQUFHLEtBQUksTUFBSSxJQUFFLEtBQUssSUFBRSxLQUFHLE9BQU8sYUFBYSxDQUFDLEdBQUUsRUFBRSxTQUFPLE9BQUssRUFBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHFCQUFPLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFLLElBQUUsR0FBRSxLQUFLLElBQUUsR0FBRSxLQUFLLElBQUU7QUFBQSxZQUFDO0FBQUMsZUFBRyxVQUFVLFdBQVMsV0FBVTtBQUFDLHNCQUFPLEtBQUs7QUFBQSxxQkFBUTtBQUFFLHlCQUFPLEtBQUs7QUFBQTtBQUFVLHFCQUFHLElBQUk7QUFBQSxxQkFBTztBQUFFLHNCQUFHLEdBQUcsS0FBSyxDQUFDO0FBQUUsMkJBQU8sS0FBSyxJQUFFLEdBQUUsS0FBSztBQUFFLHVCQUFLLElBQUU7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEtBQUs7QUFBQTtBQUFBLFlBQUUsR0FBRSxHQUFHLFVBQVUsVUFBUSxXQUFVO0FBQUMsa0JBQUksSUFBRSxLQUFLLFNBQVM7QUFBRSxxQkFBTyxLQUFLLEtBQUcsSUFBRSxJQUFFLEdBQUcsQ0FBQztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsUUFBTSxXQUFVO0FBQUMsa0JBQUksSUFBRSxLQUFLLEtBQUcsSUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFFLEtBQUs7QUFBRSxxQkFBTyxJQUFJLEdBQUcsS0FBSyxHQUFFLEdBQUUsS0FBSyxDQUFDO0FBQUEsWUFBQztBQUFFLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRyxHQUFFLEdBQUUsRUFBRSxNQUFNO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEdBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRyxDQUFDLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxpQkFBRyxHQUFHLGtCQUFpQixDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEtBQUk7QUFBQyxpQkFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxLQUFHLElBQUcsRUFBRSxLQUFHLEdBQUU7QUFBQyxvQkFBRyxLQUFHLEVBQUUsRUFBRTtBQUFPLHlCQUFPLEVBQUUsS0FBRyxPQUFPLGFBQWEsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLE1BQUksRUFBRSxJQUFFLElBQUc7QUFBRSxtQkFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsRUFBRSxLQUFHLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLE1BQUksS0FBRyxFQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFLElBQUU7QUFBQTtBQUFXLHNCQUFHLEtBQUcsRUFBRSxFQUFFO0FBQU8sMkJBQU87QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsRUFBRSxXQUFXLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsRUFBRTtBQUFBO0FBQUEsWUFBRztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRTtBQUFJLHVCQUFPLEdBQUcsRUFBRSxLQUFJLENBQUM7QUFBRSxrQkFBRyxPQUFPLEtBQUc7QUFBVyx1QkFBTztBQUFFLGtCQUFJLElBQUUsRUFBRSxTQUFPO0FBQUUsa0JBQUcsTUFBSTtBQUFFLHVCQUFPLEVBQUUsTUFBTSxNQUFLLENBQUM7QUFBRSxrQkFBSSxJQUFFLEVBQUUsU0FBTyxHQUFFLElBQUUsSUFBRSxJQUFFO0FBQUUscUJBQU8sS0FBRyxJQUFFLEVBQUUsTUFBTSxNQUFLLENBQUMsSUFBRSxJQUFFLElBQUUsR0FBRyxFQUFFLE1BQU0sTUFBSyxFQUFFLE1BQU0sR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUUsV0FBVTtBQUFDLHlCQUFRLElBQUUsVUFBVSxVQUFRLElBQUUsSUFBRSxVQUFVLFFBQU8sSUFBRSxJQUFJLE1BQU0sRUFBRSxTQUFPLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBSSxvQkFBRSxLQUFHLEVBQUU7QUFBRyx5QkFBUSxJQUFFLEdBQUUsSUFBRSxVQUFVLFFBQU87QUFBSSxvQkFBRSxFQUFFLFNBQU8sS0FBRyxVQUFVO0FBQUcsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEtBQUk7QUFBQyxpQkFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxLQUFHLEVBQUUsU0FBTyxLQUFHLEdBQUcsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxTQUFTLENBQUMsSUFBRSxLQUFLLElBQUksQ0FBQyxLQUFHLHlCQUF1QixJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsTUFBTSxDQUFDLElBQUUsSUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFLElBQUUsTUFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsZ0JBQUksTUFBSSxLQUFLLFFBQU0sS0FBSyxLQUFLLHFCQUFxQixLQUFHO0FBQUsscUJBQVMsSUFBSSxHQUFFO0FBQUMsa0JBQUc7QUFBSSx1QkFBTyxLQUFLLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQztBQUFFLGtCQUFJLElBQUU7QUFBRSxrQkFBRyxLQUFHO0FBQUUsdUJBQU0sS0FBRztBQUFFLGtCQUFHLEtBQUc7QUFBRSx1QkFBSyxLQUFHO0FBQUcsdUJBQUcsR0FBRTtBQUFBO0FBQVMsdUJBQUssSUFBRTtBQUFHLHVCQUFHLEdBQUU7QUFBSSxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxJQUFFLElBQUksR0FBRyxhQUFhLENBQUM7QUFBRSxnQkFBRSxLQUFHO0FBQUUsa0JBQUksSUFBRSxJQUFJLEdBQUcsV0FBVyxFQUFFLE1BQU07QUFBRSxxQkFBTyxFQUFFLEtBQUc7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRyxLQUFLLElBQUksR0FBRSxHQUFHO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQU07QUFBQSxZQUFDO0FBQUMscUJBQVMsS0FBSTtBQUFDLGlCQUFHLEdBQUcsZ0JBQWdCO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBSyxLQUFHLElBQUUsSUFBRyxLQUFLLEtBQUcsSUFBRSxJQUFHLEtBQUssS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLGVBQUcsVUFBVSxjQUFZLE1BQUssR0FBRyxVQUFVLE9BQUssV0FBVTtBQUFDLHFCQUFPLElBQUksR0FBRyxLQUFLLElBQUcsS0FBSyxJQUFHLEtBQUssRUFBRTtBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsV0FBUyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxLQUFLLEtBQUcsRUFBRSxLQUFHLElBQUUsS0FBSyxLQUFHLEVBQUUsS0FBRyxLQUFHLEtBQUssS0FBRyxFQUFFLEtBQUcsSUFBRSxLQUFLLEtBQUcsRUFBRSxLQUFHLEtBQUcsS0FBSyxLQUFHLEVBQUUsS0FBRyxJQUFFLEtBQUssS0FBRyxFQUFFLEtBQUcsS0FBRztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsVUFBUSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBSSxJQUFHLElBQUUsRUFBRSxNQUFJO0FBQUcscUJBQU8sSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsS0FBSyxLQUFHLEVBQUUsS0FBRyxJQUFFLEtBQUssS0FBRyxFQUFFLEtBQUcsS0FBRyxLQUFLLEtBQUcsRUFBRSxLQUFHLElBQUUsS0FBSyxLQUFHLEVBQUUsS0FBRyxLQUFHO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxNQUFJLFdBQVU7QUFBQyxrQkFBSSxJQUFFLENBQUMsS0FBSyxJQUFHLElBQUUsQ0FBQyxLQUFLLE1BQUksS0FBRyxLQUFJLElBQUUsQ0FBQyxLQUFLLE1BQUksS0FBRztBQUFJLHFCQUFPLElBQUksR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsTUFBSSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssS0FBRyxFQUFFLElBQUcsSUFBRSxLQUFLLEtBQUcsRUFBRSxNQUFJLEtBQUcsS0FBSSxJQUFFLEtBQUssS0FBRyxFQUFFLE1BQUksS0FBRztBQUFJLHFCQUFPLElBQUksR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsTUFBSSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssS0FBRyxFQUFFLElBQUcsSUFBRSxLQUFLLEtBQUcsRUFBRSxNQUFJLEtBQUcsS0FBSSxJQUFFLEtBQUssS0FBRyxFQUFFLE1BQUksS0FBRztBQUFJLHFCQUFPLElBQUksR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsTUFBSSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssS0FBRyxFQUFFLElBQUcsS0FBRyxJQUFFLEtBQUcsS0FBRyxLQUFLLEtBQUcsRUFBRSxLQUFHLEtBQUssS0FBRyxFQUFFLElBQUcsS0FBRyxJQUFFLEtBQUcsS0FBRyxLQUFLLEtBQUcsRUFBRSxLQUFHLEtBQUssS0FBRyxFQUFFLEtBQUcsS0FBSyxLQUFHLEVBQUU7QUFBRyxxQkFBTyxJQUFJLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLFNBQU8sV0FBVTtBQUFDLHNCQUFPLEtBQUssS0FBRyxLQUFLLEtBQUcsS0FBSyxPQUFLO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxRQUFNLFdBQVU7QUFBQyxxQkFBTyxLQUFLLE1BQUksS0FBRztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsTUFBSSxTQUFTLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEdBQUcsS0FBSyxLQUFHLEVBQUUsSUFBRyxLQUFLLEtBQUcsRUFBRSxJQUFHLEtBQUssS0FBRyxFQUFFLEVBQUU7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLEtBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sSUFBSSxHQUFHLEtBQUssS0FBRyxFQUFFLElBQUcsS0FBSyxLQUFHLEVBQUUsSUFBRyxLQUFLLEtBQUcsRUFBRSxFQUFFO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxNQUFJLFNBQVMsR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRyxLQUFLLEtBQUcsRUFBRSxJQUFHLEtBQUssS0FBRyxFQUFFLElBQUcsS0FBSyxLQUFHLEVBQUUsRUFBRTtBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsYUFBVyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxJQUFFLElBQUUsSUFBRyxLQUFHLElBQUUsT0FBSyxJQUFFLEtBQUcsSUFBSSxHQUFHLEtBQUssTUFBSSxHQUFFLEtBQUssTUFBSSxJQUFFLEtBQUssTUFBSSxLQUFHLEdBQUUsS0FBSyxNQUFJLElBQUUsS0FBSyxNQUFJLEtBQUcsQ0FBQyxJQUFFLElBQUUsS0FBRyxJQUFJLEdBQUcsR0FBRSxLQUFLLE1BQUksSUFBRSxJQUFHLEtBQUssTUFBSSxJQUFFLEtBQUcsS0FBSyxNQUFJLEtBQUcsQ0FBQyxJQUFFLElBQUksR0FBRyxHQUFFLEdBQUUsS0FBSyxNQUFJLElBQUUsRUFBRTtBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsdUJBQXFCLFNBQVMsR0FBRTtBQUFDLHFCQUFPLElBQUUsSUFBRSxJQUFHLEtBQUcsSUFBRSxPQUFLLElBQUUsS0FBRyxJQUFJLEdBQUcsS0FBSyxNQUFJLElBQUUsS0FBSyxNQUFJLEtBQUcsR0FBRSxLQUFLLE1BQUksSUFBRSxLQUFLLE1BQUksS0FBRyxHQUFFLEtBQUssTUFBSSxDQUFDLElBQUUsSUFBRSxLQUFHLElBQUksR0FBRyxLQUFLLE1BQUksSUFBRSxLQUFHLEtBQUssTUFBSSxLQUFHLEdBQUUsS0FBSyxNQUFJLElBQUUsSUFBRyxDQUFDLElBQUUsSUFBSSxHQUFHLEtBQUssTUFBSSxJQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxjQUFZLFNBQVMsR0FBRTtBQUFDLGtCQUFHLElBQUUsSUFBRSxJQUFHLEtBQUc7QUFBRSx1QkFBTztBQUFLLGtCQUFJLElBQUUsS0FBSyxNQUFJLE1BQUk7QUFBRyxrQkFBRyxJQUFFO0FBQUcsdUJBQU8sSUFBSSxHQUFHLEtBQUssTUFBSSxJQUFFLEtBQUssTUFBSSxLQUFHLEdBQUUsS0FBSyxNQUFJLElBQUUsS0FBRyxLQUFHLEdBQUUsS0FBSyxNQUFJLE1BQUksTUFBSSxFQUFFO0FBQUUsa0JBQUksSUFBRSxLQUFLLE1BQUksTUFBSTtBQUFHLHFCQUFPLElBQUUsS0FBRyxJQUFJLEdBQUcsS0FBSyxNQUFJLElBQUUsS0FBRyxLQUFLLE1BQUksS0FBRyxHQUFFLEtBQUssTUFBSSxNQUFJLElBQUUsTUFBSSxJQUFHLElBQUUsRUFBRSxJQUFFLElBQUksR0FBRyxLQUFLLE1BQUksTUFBSSxJQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxPQUFLLFdBQVU7QUFBQyxtQkFBSyxLQUFHLEtBQUssTUFBSSxJQUFFLEtBQUssTUFBSSxJQUFHLEtBQUssTUFBSSxLQUFLLE1BQUksSUFBRSxLQUFLLE1BQUksTUFBSSxJQUFHLEtBQUssS0FBRyxLQUFLLE1BQUksSUFBRTtBQUFBLFlBQUUsR0FBRSxHQUFHLFVBQVUsT0FBSyxXQUFVO0FBQUMsbUJBQUssTUFBSSxLQUFLLE9BQUssSUFBRSxLQUFLLE1BQUksTUFBSSxJQUFHLEtBQUssTUFBSSxLQUFLLE9BQUssSUFBRSxLQUFLLE1BQUksTUFBSSxJQUFHLEtBQUssS0FBRyxLQUFLLE9BQUs7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLFVBQVEsU0FBUyxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsS0FBSyxLQUFLLEdBQUUsSUFBRSxFQUFFLEtBQUssR0FBRSxJQUFFLElBQUksR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBUyxDQUFDLElBQUU7QUFBRyxxQkFBSSxFQUFFLEtBQUs7QUFBRSxxQkFBSyxLQUFHO0FBQUcscUJBQUksRUFBRSxLQUFLLEdBQUUsRUFBRSxTQUFTLENBQUMsS0FBRyxNQUFJLEVBQUUsTUFBSyxJQUFFLEVBQUUsSUFBSSxDQUFDLElBQUcsRUFBRSxLQUFLO0FBQUUscUJBQU0sRUFBQyxVQUFTLEdBQUUsU0FBUSxFQUFDO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxNQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUU7QUFBSyxnQkFBRSxPQUFPLEtBQUcsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRSxLQUFHLEVBQUU7QUFBRyxnQkFBRSxLQUFHLE9BQUssSUFBRSxFQUFFLElBQUksSUFBRyxFQUFFLEtBQUcsT0FBSyxJQUFFLEVBQUUsSUFBSTtBQUFHLGtCQUFJLElBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtBQUFTLHFCQUFPLElBQUUsT0FBSyxJQUFFLEVBQUUsSUFBSSxJQUFHO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxNQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUU7QUFBSyxnQkFBRSxPQUFPLEtBQUcsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEtBQUcsT0FBSyxJQUFFLEVBQUUsSUFBSSxJQUFHLEVBQUUsS0FBRyxPQUFLLElBQUUsRUFBRSxJQUFJO0FBQUcsa0JBQUksSUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO0FBQVEscUJBQU8sSUFBRSxPQUFLLElBQUUsRUFBRSxJQUFJLElBQUc7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLFFBQU0sV0FBVTtBQUFDLHFCQUFPLEtBQUssS0FBRyxLQUFLLE1BQUk7QUFBQSxZQUFFLEdBQUUsR0FBRyxVQUFVLFVBQVEsV0FBVTtBQUFDLHNCQUFPLEtBQUssTUFBSSxNQUFJLEtBQUssSUFBSSxHQUFFLEVBQUUsSUFBRSxLQUFLLEtBQUcsS0FBSyxJQUFJLEdBQUUsRUFBRSxJQUFFLEtBQUs7QUFBQSxZQUFFLEdBQUUsR0FBRyxVQUFVLFVBQVEsV0FBVTtBQUFDLHFCQUFNLENBQUMsS0FBSyxNQUFJLEdBQUUsS0FBSyxLQUFHLElBQUcsS0FBSyxNQUFJLElBQUcsS0FBSyxNQUFJLElBQUUsSUFBRyxLQUFLLEtBQUcsSUFBRyxLQUFLLE1BQUksSUFBRyxLQUFLLE1BQUksSUFBRSxJQUFHLEtBQUssS0FBRyxFQUFFO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxPQUFLLFdBQVU7QUFBQyxxQkFBTyxLQUFLLE1BQUksS0FBSyxLQUFHLE9BQUs7QUFBQSxZQUFFLEdBQUUsR0FBRyxVQUFVLE9BQUssV0FBVTtBQUFDLHFCQUFPLEtBQUssT0FBSyxJQUFFLEtBQUcsS0FBSyxNQUFJO0FBQUEsWUFBRTtBQUFFLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsQ0FBQyxTQUFTLENBQUM7QUFBRSx1QkFBTyxNQUFNLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUUsSUFBRSxJQUFFLEdBQUcsR0FBRSxHQUFFLEVBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxLQUFLO0FBQUUsa0JBQUksSUFBRSxLQUFHLEtBQUcsSUFBRSxLQUFHLEtBQUcsSUFBRSxLQUFHLEtBQUcsSUFBRSxJQUFFO0FBQUcsb0JBQUksSUFBRSxDQUFDO0FBQUcsa0JBQUksSUFBRSxJQUFJLENBQUMsSUFBRTtBQUFLLG1CQUFHLEtBQUcsSUFBRSxHQUFFLEtBQUcsS0FBSyxJQUFJLEdBQUUsQ0FBQyxFQUFFLE1BQUksS0FBRyxLQUFLLElBQUksR0FBRSxJQUFFLEVBQUUsR0FBRSxJQUFFLE9BQUssS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLE1BQUksS0FBRztBQUFJLGtCQUFJLElBQUUsS0FBSyxJQUFJLEdBQUUsRUFBRSxHQUFFLElBQUUsSUFBRTtBQUFFLG1CQUFHLElBQUUsS0FBRztBQUFFLGtCQUFJLElBQUUsSUFBRTtBQUFFLG1CQUFHLElBQUUsS0FBRztBQUFFLGtCQUFJLElBQUUsSUFBRTtBQUFFLHFCQUFPLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFFLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE1BQU0sSUFBRyxFQUFFLEtBQUssTUFBTSxHQUFFLEVBQUUsTUFBTSxJQUFHLEVBQUUsT0FBSyxFQUFFLFVBQVEsQ0FBQyxHQUFFLEVBQUUsZUFBYTtBQUFHLHlCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxRQUFPO0FBQUksb0JBQUUsS0FBSyxLQUFHLEtBQUcsRUFBRSxNQUFNLElBQUcsRUFBRSxLQUFLLEVBQUUsS0FBRyxFQUFFLE1BQU0sSUFBRyxFQUFFLEdBQUUsRUFBRSxNQUFNLElBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBTSxJQUFHLEVBQUUsS0FBSyxFQUFFO0FBQUE7QUFBUSx5QkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLEtBQUssUUFBTztBQUFJLG9CQUFFLE1BQU0sSUFBRyxFQUFFLEtBQUssRUFBRTtBQUFFLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUEscUJBQU87QUFBRywyQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLEtBQUssUUFBTztBQUFJLHNCQUFFLE1BQU0sR0FBRSxFQUFFLEtBQUssRUFBRTtBQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBTztBQUFFLDJCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxRQUFPO0FBQUksc0JBQUUsTUFBTSxJQUFHLEVBQUUsS0FBSyxFQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFFLDJCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxRQUFPO0FBQUksc0JBQUUsTUFBTSxJQUFHLEVBQUUsS0FBSyxFQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsTUFBTSxHQUFFLENBQUM7QUFBRSwyQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLEtBQUssUUFBTztBQUFJLHNCQUFFLE1BQU0sSUFBRyxFQUFFLEtBQUssRUFBRTtBQUFFO0FBQUEscUJBQVc7QUFBRSwyQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLEtBQUssU0FBTyxHQUFFO0FBQUksNkJBQVEsSUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksd0JBQUUsTUFBTSxHQUFFLEVBQUUsRUFBRTtBQUFFO0FBQUEscUJBQVc7QUFBRSwyQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLEtBQUssUUFBTztBQUFJLDZCQUFRLElBQUUsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSx3QkFBRSxNQUFNLEdBQUUsRUFBRSxFQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFFLDJCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxRQUFPLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUFFLHNCQUFFLE1BQU0sSUFBRyxDQUFDO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsMkJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxLQUFLLFNBQU8sR0FBRSxLQUFJO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUksQ0FBQztBQUFFLHNCQUFFLE1BQU0sSUFBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxNQUFNLElBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFHLDJCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsS0FBSyxTQUFPLEdBQUUsS0FBSTtBQUFDLDZCQUFRLElBQUUsRUFBRSxJQUFJLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSx3QkFBRSxNQUFNLEdBQUUsRUFBRSxFQUFFO0FBQUUsNkJBQVEsSUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksd0JBQUUsTUFBTSxHQUFFLEVBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQTtBQUFNLGdCQUFFLE1BQUksSUFBRSxFQUFFLEtBQUssVUFBUSxHQUFFLEVBQUUsTUFBSSxJQUFFLEVBQUUsS0FBSyxVQUFRO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBTztBQUFBLHFCQUFRO0FBQUcseUJBQU87QUFBQTtBQUFVLHlCQUFPO0FBQUE7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLElBQUc7QUFBRSxzQkFBTztBQUFBLHFCQUFRO0FBQUUsc0JBQUUsRUFBRTtBQUFhO0FBQUEscUJBQVc7QUFBRSxzQkFBRSxFQUFFO0FBQWE7QUFBQSxxQkFBVztBQUFFLHNCQUFFLEVBQUU7QUFBVTtBQUFBLHFCQUFXO0FBQUUsc0JBQUUsRUFBRTtBQUFXO0FBQUEscUJBQVc7QUFBRSxzQkFBRSxFQUFFO0FBQVc7QUFBQSxxQkFBVztBQUFFLHNCQUFFLEVBQUU7QUFBWTtBQUFBLHFCQUFXO0FBQUUsc0JBQUUsRUFBRTtBQUFXO0FBQUEscUJBQVc7QUFBRSxzQkFBRSxFQUFFO0FBQVc7QUFBQSxxQkFBVztBQUFFLHNCQUFFLEVBQUU7QUFBVztBQUFBLHFCQUFXO0FBQUUsc0JBQUUsRUFBRTtBQUFXO0FBQUEscUJBQVc7QUFBRyxzQkFBRSxFQUFFO0FBQWE7QUFBQSxxQkFBVztBQUFHLHNCQUFFLEVBQUU7QUFBYTtBQUFBLHFCQUFXO0FBQUcsc0JBQUUsRUFBRTtBQUFXO0FBQUE7QUFBTSxtQkFBRyxHQUFHLG1DQUFtQztBQUFFLGtCQUFJLElBQUUsSUFBSSxFQUFFLElBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxJQUFFLElB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cUJBQVE7QUFBRyxzQkFBSSxJQUFFLEtBQUssS0FBSyxJQUFFLElBQUUsSUFBRyxJQUFFLEtBQUssS0FBSyxJQUFFLElBQUU7QUFBRyx5QkFBTSxDQUFDLElBQUcsR0FBRSxDQUFDO0FBQUE7QUFBVSx5QkFBTyxLQUFLLEtBQUs7QUFBQTtBQUFBLFlBQUcsR0FBRSxHQUFHLFVBQVUsTUFBSSxTQUFTLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEtBQUs7QUFBQSxxQkFBVztBQUFFLHVCQUFLLEtBQUssSUFBRSxJQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBSyxLQUFLLElBQUUsSUFBRSxLQUFHLEdBQUcsQ0FBQztBQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUTtBQUFHLHVCQUFLLEtBQUssSUFBRSxJQUFFLEtBQUcsRUFBRSxJQUFHLEtBQUssS0FBSyxJQUFFLElBQUUsS0FBRyxFQUFFO0FBQUc7QUFBQTtBQUFjLHVCQUFLLEtBQUssS0FBRztBQUFFO0FBQUE7QUFBTSxxQkFBTztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsT0FBSyxTQUFTLEdBQUU7QUFBQyxzQkFBTyxLQUFLO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsc0JBQUcsS0FBRztBQUFFLHlCQUFLLEtBQUssS0FBSyxDQUFDO0FBQUE7QUFBTyw2QkFBUSxJQUFFLEdBQUUsSUFBRSxLQUFLLEtBQUssUUFBTztBQUFJLDJCQUFLLEtBQUssS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFRO0FBQUcsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsc0JBQUcsS0FBRztBQUFFLHlCQUFLLEtBQUssS0FBSyxDQUFDO0FBQUE7QUFBTyw2QkFBUSxJQUFFLEdBQUUsSUFBRSxLQUFLLEtBQUssUUFBTztBQUFJLDJCQUFLLEtBQUssS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFO0FBQUU7QUFBQTtBQUFjLHVCQUFLLEtBQUssS0FB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QUMsR0FBRTtBQUFBLFlBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHFCQUFPLEdBQUcsQ0FBQyxJQUFFLEtBQUcsRUFBRSxVQUFRLEdBQUcsMkJBQTJCLEdBQUUsS0FBRyxLQUFHLEVBQUUsVUFBUSxLQUFHLEtBQUcsSUFBRSxJQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFLElBQUksR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGlCQUFHLEdBQUcsU0FBUSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsUUFBUTtBQUFFLGVBQUMsSUFBRSxLQUFHLElBQUUsT0FBSyxHQUFHLGtEQUFrRDtBQUFFLGtCQUFJLElBQUUsRUFBRSxRQUFRLEdBQUUsSUFBRSxJQUFFLElBQUcsSUFBRSxLQUFHLElBQUUsR0FBRSxJQUFFLENBQUM7QUFBRSxrQkFBRyxLQUFHO0FBQUcseUJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRSxLQUFJO0FBQUMsc0JBQUksSUFBRSxFQUFFLFFBQVE7QUFBRSxzQkFBRyxLQUFHLElBQUc7QUFBQyx3QkFBSSxJQUFFLEVBQUUsUUFBUSxHQUFFLElBQUUsRUFBRSxRQUFRO0FBQUUseUJBQUcsS0FBRyxHQUFHLG1EQUFtRCxHQUFFLElBQUU7QUFBQSxrQkFBQztBQUFDLG9CQUFFLEtBQUssQ0FBQztBQUFBLGdCQUFDO0FBQUE7QUFBTSx5QkFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksb0JBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQztBQUFFLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxJQUFJLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQU87QUFBQSxxQkFBUTtBQUFFLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxzQkFBRSxLQUFHLEVBQUUsT0FBTztBQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBTztBQUFHLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxzQkFBRSxLQUFHLEVBQUUsT0FBTztBQUFFO0FBQUEscUJBQVc7QUFBRSwyQkFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksc0JBQUUsS0FBRyxFQUFFLFFBQVE7QUFBRTtBQUFBLHFCQUFXO0FBQUUsMkJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRTtBQUFJLHNCQUFFLEtBQUcsRUFBRSxRQUFRO0FBQUU7QUFBQSxxQkFBVztBQUFFLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxzQkFBRSxLQUFHLEVBQUUsUUFBUTtBQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRSxPQUFPO0FBQUUsdUJBQUcsR0FBRywwREFBMEQ7QUFBRSwyQkFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksc0JBQUUsS0FBRyxFQUFFLFFBQVE7QUFBRTtBQUFBLHFCQUFXO0FBQUUsMkJBQVEsS0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsS0FBSTtBQUFDLDZCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSx5QkFBRyxLQUFHLEVBQUUsT0FBTztBQUFFLHdCQUFJLElBQUUsR0FBRyxFQUFFO0FBQUUsc0JBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRSwyQkFBUSxLQUFHLElBQUksTUFBTSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxLQUFJO0FBQUMsNkJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRTtBQUFJLHlCQUFHLEtBQUcsRUFBRSxPQUFPO0FBQUUsd0JBQUksSUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsc0JBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRSwyQkFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEdBQUcsRUFBRSxRQUFRLENBQUM7QUFBRSxzQkFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFHLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUUsS0FBSTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztBQUFFLHNCQUFFLElBQUksR0FBRSxDQUFDLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRywyQkFBUSxLQUFHLElBQUksTUFBTSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxLQUFJO0FBQUMsNkJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRTtBQUFJLHlCQUFHLEtBQUcsRUFBRSxPQUFPO0FBQUUsNkJBQVEsS0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRTtBQUFJLHlCQUFHLEtBQUcsRUFBRSxPQUFPO0FBQUUsd0JBQUksS0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsc0JBQUUsSUFBSSxHQUFFLENBQUMsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUM7QUFBQTtBQUFNLHFCQUFPLEVBQUUsTUFBSSxJQUFFLEtBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxLQUFLLEtBQUssR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBRSxHQUFHLEdBQUUsVUFBVSxHQUFFLElBQUUsS0FBRyxLQUFHLE1BQUksS0FBRyxJQUFHLElBQUUsR0FBRyxHQUFFLFNBQVMsR0FBRSxLQUFHLEdBQUUsSUFBRSxLQUFHLEtBQUcsTUFBSSxLQUFHLEtBQUksS0FBRyxLQUFHLEtBQUcsS0FBRyxhQUFXO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBSSxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxJQUFFO0FBQUUsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQU87QUFBQSxxQkFBTztBQUFHLHNCQUFFLE9BQUssSUFBRTtBQUFJLHNCQUFJLElBQUUsR0FBRSxJQUFFO0FBQUUsdUJBQUksSUFBRSxHQUFFLElBQUUsS0FBRyxFQUFFLEtBQUssUUFBTyxLQUFHO0FBQUUsd0JBQUUsRUFBRSxLQUFLLElBQUUsS0FBRyxFQUFFLEtBQUssSUFBRSxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUUsTUFBSSxLQUFHLEVBQUUsS0FBSyxJQUFFLE1BQUksSUFBRyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsMEJBQU8sSUFBRSxHQUFFLElBQUU7QUFBQSx5QkFBUTtBQUFFLDBCQUFFLEVBQUUsS0FBSyxJQUFFLE1BQUk7QUFBQSx5QkFBUTtBQUFFLDJCQUFHLEVBQUUsS0FBSyxJQUFFLE1BQUk7QUFBQSx5QkFBTztBQUFFLDJCQUFHLEVBQUUsS0FBSyxJQUFFLElBQUcsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFBO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUUsc0JBQUUsT0FBSyxJQUFFO0FBQUksc0JBQUksSUFBRSxHQUFFLElBQUU7QUFBRSx1QkFBSSxJQUFFLEdBQUUsSUFBRSxLQUFHLEVBQUUsS0FBSyxRQUFPLEtBQUc7QUFBRSx3QkFBRSxFQUFFLEtBQUssSUFBRSxLQUFHLEVBQUUsS0FBSyxJQUFFLE1BQUksSUFBRyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsbUJBQUMsSUFBRSxNQUFJLE1BQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUU7QUFBRztBQUFBLHFCQUFXO0FBQUUsc0JBQUUsT0FBSyxJQUFFO0FBQUksMkJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRTtBQUFJLHdCQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUssRUFBRTtBQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBTztBQUFFLHNCQUFFLE9BQUssSUFBRTtBQUFJLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSx3QkFBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUUsc0JBQUUsT0FBSyxJQUFFLEtBQUksS0FBRztBQUFFLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSx3QkFBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUcsdUJBQUc7QUFBQSxxQkFBTztBQUFFLHNCQUFFLE9BQUssSUFBRTtBQUFJLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSx3QkFBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUcsdUJBQUc7QUFBQSxxQkFBTztBQUFFLHNCQUFFLE9BQUssSUFBRTtBQUFJLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSx3QkFBRSxHQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUU7QUFBRTtBQUFBO0FBQU0scUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUcsR0FBRSxFQUFFLFFBQVE7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFLE9BQU87QUFB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RSxLQUFLLEdBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLEdBQUUsSUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxNQUFLO0FBQUMscUJBQU0sQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLElBQUUsS0FBRyxHQUFHLGNBQWMsR0FBRSxJQUFJLEdBQUcsSUFBRSxJQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU0sRUFBRSxHQUFHLEdBQUUsR0FBRSxLQUFFLEtBQUc7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsSUFBRTtBQUFFLG9CQUFHLEtBQUcsTUFBSSxLQUFHLEVBQUUsS0FBRyxFQUFFLEtBQUcsS0FBRyxLQUFHLEVBQUUsRUFBRTtBQUFRLHVCQUFHLEtBQUcsRUFBRSxJQUFFLEdBQUUsRUFBRSxJQUFFLE1BQUksRUFBRSxJQUFFLEdBQUcsR0FBRSxPQUFPLGFBQWEsQ0FBQyxDQUFDLEdBQUUsRUFBRSxJQUFFLEtBQUcsRUFBRSxJQUFFLElBQUU7QUFBQTtBQUFRLHVCQUFJLEVBQUUsS0FBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRSxJQUFFLEdBQUU7QUFBSSxzQkFBRSxFQUFFLEtBQUc7QUFBRSxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSTtBQUFFLGtCQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLEtBQUcsTUFBSSxNQUFJLElBQUUsRUFBRSxRQUFRLE1BQUssQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBTyxLQUFHLE1BQUksS0FBRyxjQUFjLEtBQUss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RSxJQUFFLEtBQUcsSUFBRSxHQUFFLElBQUUsRUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRTtBQUFFLHFCQUFPLEdBQUcsS0FBRyxJQUFFLEdBQUUsS0FBRyxFQUFFLElBQUUsS0FBRyxFQUFFLEtBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUUsR0FBRSxLQUFJO0FBQUMsb0JBQUcsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBRztBQUFDLDJCQUFRLElBQUUsSUFBRSxHQUFFLElBQUUsTUFBSSxJQUFFLEVBQUUsV0FBVyxDQUFDLEtBQUcsSUFBRztBQUFJO0FBQUMsc0JBQUcsSUFBRSxJQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRSxJQUFFLEdBQUUsS0FBRyxFQUFFLE1BQU0sR0FBRSxDQUFDLEtBQUcsS0FBRyxFQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsS0FBRztBQUFFO0FBQU0sc0JBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFFLE1BQUksS0FBRyxPQUFPLGFBQWEsTUFBSSxLQUFHLENBQUMsR0FBRSxLQUFHLE9BQU8sYUFBYSxLQUFHLElBQUUsRUFBRSxLQUFHLElBQUUsU0FBTyxLQUFHLEtBQUcsS0FBRyxPQUFPLGFBQWEsS0FBRyxLQUFHLElBQUcsS0FBRyxLQUFHLElBQUUsSUFBRyxLQUFHLElBQUUsRUFBRSxJQUFFLEtBQUcsU0FBTyxJQUFFLEtBQUcsTUFBSSxJQUFFLEVBQUUsV0FBVyxJQUFFLENBQUMsS0FBRyxNQUFJLElBQUUsS0FBRyxLQUFHLGtCQUFnQixLQUFJLEtBQUcsS0FBRyxNQUFJLElBQUUsVUFBUyxLQUFHLE9BQU8sYUFBYSxLQUFHLEtBQUcsSUFBRyxLQUFHLEtBQUcsS0FBRyxJQUFHLEtBQUcsS0FBRyxJQUFFLElBQUcsS0FBRyxJQUFFLEVBQUUsSUFBRyxFQUFFLFNB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QUEsdUJBQVc7QUFBQSx1QkFBUTtBQUFHLHdCQUFFLEdBQUUsS0FBRztBQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBUztBQUFHLHlCQUFHO0FBQUU7QUFBQTtBQUFNLHFCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxNQUFJLEtBQUcsS0FBRyxJQUFFLEtBQUcsS0FBRyxNQUFJLEtBQUcsS0FBRyxJQUFFLEtBQUcsS0FBRyxNQUFJLEtBQUcsS0FBRyxJQUFFLEtBQUc7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsSUFBSSxHQUFHLElBQUcsV0FBVSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsVUFBUyxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxlQUFDLElBQUUsS0FBRyxLQUFHLE1BQUksR0FBRyxFQUFFO0FBQUUsdUJBQVEsSUFBRSxHQUFHLENBQUM7QUFBSSxvQkFBRyxLQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFHLElBQUc7QUFBQyxzQkFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBRyxLQUFHO0FBQUU7QUFBTSxxQkFBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsSUFBSSxJQUFJLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQyxLQUFHLEdBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMscUJBQU8sS0FBRyxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLE1BQUksR0FBRyxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLEtBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRSxNQUFJLElBQUUsR0FBRyxDQUFDLElBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLE9BQUssR0FBRSxJQUFFLElBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFFLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxlQUFDLElBQUUsS0FBRyxLQUFHLE1BQUksR0FBRyxFQUFFO0FBQUUsa0JBQUksSUFBRTtBQUFFLG1CQUFJLEtBQUksSUFBRSxHQUFFO0FBQUksb0JBQUcsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsSUFBRztBQUFDLHNCQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFHLEtBQUc7QUFBRTtBQUFNLHNCQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsS0FBRyxHQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHFCQUFPLEtBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRSxJQUFFLElBQUUsR0FBRSxLQUFHLE9BQUssSUFBRSxNQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE1BQU0sQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHVCQUFRLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUUsR0FBRyxFQUFF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LEdBQUU7QUFBQyxxQkFBTyxJQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsTUFBTTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxrQkFBRSxHQUFHLENBQUMsR0FBRSxHQUFHLElBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHFCQUFPLE1BQUksS0FBRyxFQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEtBQUk7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUssT0FBSztBQUFBLFlBQUM7QUFBQyxlQUFHLFlBQVUsSUFBSSxNQUFHLEdBQUcsVUFBVSxXQUFTLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSztBQUFLLG1CQUFLLE9BQUssR0FBRyxJQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRSxLQUFLLE1BQUssR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxTQUFPLFdBQVU7QUFBQyxxQkFBTyxHQUFHLEtBQUssSUFBSTtBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsUUFBTSxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssT0FBTztBQUFFLGtCQUFHLElBQUUsS0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUUsQ0FBQyxHQUFFLElBQUUsS0FBSztBQUFLLHFCQUFLLE9BQUssR0FBRSxHQUFHLEdBQUUsR0FBRSxLQUFLLE1BQUssR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEdBQUcsR0FBRSxHQUFFLEtBQUssTUFBSyxHQUFFLENBQUMsR0FBRTtBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsT0FBSyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUssT0FBTztBQUFFLHFCQUFPLEdBQUcsS0FBSyxNQUFLLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsV0FBUyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEtBQUssTUFBSyxDQUFDO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxRQUFNLFdBQVU7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLGNBQVk7QUFBRyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG1CQUFLLFVBQVEsQ0FBQyxHQUFFLEtBQUssT0FBSyxHQUFFLEtBQUssWUFBVTtBQUFBLFlBQUM7QUFBQyxlQUFHLFVBQVUsS0FBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxLQUFLLE9BQUs7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLHVCQUFxQixTQUFTLEdBQUU7QUFBQyx1QkFBUSxJQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsU0FBTyxHQUFFO0FBQUkscUJBQUcsRUFBRSxLQUFHLElBQUcsQ0FBQyxLQUFLLFFBQVEsT0FBSyxLQUFLLFFBQVEsS0FBRyxPQUFPLFdBQVc7QUFBQSxZQUFFLEdBQUUsR0FBRyxVQUFVLFFBQU0sU0FBUyxHQUFFO0FBQUMscUJBQU0sTUFBTSxLQUFLLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFLEdBQUUsR0FBRyxVQUFVLFNBQU8sU0FBUyxHQUFFO0FBQUMsa0JBQUcsQ0FBQyxLQUFLLFFBQVEsTUFBSSxLQUFLLFdBQVU7QUFBQyxvQkFBSSxJQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssSUFBSSxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUUsc0JBQUksTUFBSSxLQUFLLHFCQUFxQixDQUFDLEdBQUUsS0FBSyxRQUFRLEtBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUFBLGNBQUU7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLFNBQU8sU0FBUyxHQUFFO0FBQUMsa0JBQUcsS0FBRztBQUFFLHVCQUFPO0FBQUUsa0JBQUksSUFBRSxLQUFLLE1BQU0sQ0FBQztBQUFFLHFCQUFPLEtBQUssUUFBUSxLQUFHLEtBQUcsS0FBSyxPQUFPLENBQUMsR0FBRSxLQUFLLFFBQVEsS0FBRyxJQUFFO0FBQUEsWUFBRSxHQUFFLEdBQUcsVUFBVSxRQUFNLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUUsbUJBQUssT0FBTyxDQUFDLE1BQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxJQUFHLElBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUUsR0FBRyxJQUFFLGVBQWU7QUFBRyxrQkFBSSxJQUFFLGVBQWUsS0FBSyxDQUFDO0FBQUUsa0JBQUUsS0FBRyxFQUFFLE1BQUksR0FBRSxLQUFLLE9BQU8sQ0FBQyxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsSUFBRyxJQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBRSxFQUFFLElBQUcsS0FBSyxPQUFPLENBQUMsTUFBSSxJQUFFLEdBQUcsR0FBRSxHQUFHLElBQUcsSUFBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBRSxHQUFHLElBQUUsRUFBRSxJQUFHLEtBQUsscUJBQXFCLEtBQUssTUFBTSxDQUFDLENBQUM7QUFBQSxZQUFDLEdBQUUsR0FBRyxVQUFVLFFBQU0sU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFLLE1BQU0sQ0FBQyxHQUFFLElBQUUsSUFBSSxPQUFPLEtBQUcsSUFBRSxFQUFFO0FBQUUsbUJBQUssT0FBTyxDQUFDLE1BQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxJQUFHLElBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUUsR0FBRyxJQUFFLEVBQUUsSUFBRyxLQUFLLE9BQU8sQ0FBQyxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsSUFBRyxJQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBRSxFQUFFO0FBQUcsdUJBQVEsS0FBSyxLQUFLO0FBQVEsa0JBQUUsTUFBTSxDQUFDLE1BQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxJQUFHLElBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFFLHVCQUF1QjtBQUFHLHFCQUFPLEtBQUssUUFBUTtBQUFBLFlBQUUsR0FBRSxHQUFHLFVBQVUsVUFBUSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUssTUFBTSxDQUFDO0FBQUUsbUJBQUssT0FBTyxDQUFDLEtBQUcsR0FBRyxJQUFFLEVBQUUsR0FBRSxLQUFLLE9BQU8sQ0FBQyxLQUFHLEdBQUcsSUFBRSxFQUFFO0FBQUUsa0JBQUksSUFBRSxJQUFJLE9BQU8sS0FBRyxJQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFLENBQUM7QUFBRSx1QkFBUSxLQUFLLEtBQUssU0FBUTtBQUFDLG9CQUFJLElBQUUsRUFBRSxNQUFNLENBQUM7QUFBRSxxQkFBRyxDQUFDLEVBQUUsRUFBRSxRQUFNLEVBQUUsRUFBRSxNQUFJLE1BQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUFBLGNBQUU7QUFBQyxxQkFBTztBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsU0FBTyxTQUFTLEdBQUU7QUFBQyxrQkFBRyxLQUFHO0FBQUUsdUJBQU07QUFBRyxrQkFBSSxJQUFFLEtBQUssTUFBTSxDQUFDO0FBQUUscUJBQU8sS0FBSyxRQUFRLEtBQUcsSUFBRTtBQUFBLFlBQUMsR0FBRSxHQUFHLFVBQVUsU0FBTyxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLENBQUMsQ0FBQyxLQUFLLFFBQVE7QUFBRyxxQkFBTyxPQUFPLEtBQUssUUFBUSxJQUFHO0FBQUEsWUFBQyxHQUFFLEdBQUcsVUFBVSxPQUFLLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxVQUFRLEVBQUUsVUFBUSxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUUsRUFBRSxHQUFFLEVBQUUsUUFBTSxFQUFFLFVBQVEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJ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S0FBRyxPQUFLLElBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxTQUFPLENBQUM7QUFBRyxvQkFBSSxJQUFFLEVBQUU7QUFBUSxxQkFBRyxFQUFFLFNBQU8sRUFBRSxNQUFNLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFHLGtCQUFHLEVBQUUsV0FBUyxFQUFFLFFBQVEsVUFBUSxFQUFFLFFBQVEsT0FBTztBQUFNLGtCQUFFLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFBQSxtQkFBTTtBQUFDLGtCQUFFLFdBQVcsRUFBRSxTQUFPLENBQUMsS0FBRyxPQUFLLElBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxTQUFPLENBQUM7QUFBRyxvQkFBSSxJQUFFLEVBQUU7QUFBUSxxQkFBRyxFQUFFLE9BQUssRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGlCQUFHLFFBQU0sV0FBUyxHQUFHLE1BQUksSUFBSSxVQUFPLElBQUUsS0FBRyxDQUFDO0FBQUUsa0JBQUksSUFBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxPQUFLLEdBQUUsRUFBRSxTQUFPLEVBQUUsU0FBTyxFQUFFLE9BQU8sSUFBRSxHQUFFLEVBQUUsUUFBTSxHQUFFLEVBQUUsU0FBTyxHQUFFLEdBQUcsSUFBSSxLQUFHLElBQUcsQ0FBQyxHQUFHLGVBQWEsSUFBRSxHQUFHLGlCQUFlLEdBQUcsY0FBWSxJQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBUSxJQUFFLENBQUMsR0FBRSxLQUFHO0FBQUMsd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsc0JBQUUsU0FBTztBQUFFO0FBQUEsdUJBQVc7QUFBRSxzQkFBRSxTQUFPO0FBQUU7QUFBQSx1QkFBVztBQUFFLHNCQUFFLFNBQU87QUFBRTtBQUFBLHVCQUFXO0FBQUUs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LEtBQUcsTUFBSztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHFCQUFPLE1BQUksSUFBRSxLQUFHLEVBQUUsSUFBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsS0FBRyxFQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLE1BQUs7QUFBQyxpQkFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxLQUFHLEdBQUcsQ0FBQyxLQUFHLElBQUksR0FBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsTUFBSztBQUFDLHFCQUFNLENBQUMsR0FBRSxFQUFFLGFBQWEsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxNQUFLO0FBQUMscUJBQU8sYUFBVyxJQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUksR0FBRyxXQUFTLEdBQUcsUUFBUSxZQUFVLEdBQUcsUUFBUSxZQUFVLEtBQUcsS0FBRztBQUFPLHFCQUFTLE1BQUs7QUFBQyxxQkFBTSxDQUFDLEdBQUUsRUFBRSxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLE1BQUs7QUFBQyxpQkFBRyxHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFHLElBQUUsR0FBRyxDQUFDO0FBQUUsa0JBQUcsRUFBRSxXQUFTLEVBQUUsUUFBUSxPQUFLLEVBQUUsUUFBUSxJQUFJLE1BQUk7QUFBSyx1QkFBTyxHQUFH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QUFBQyxxQkFBTyxFQUFFLFVBQVEsSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRyxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFHLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxHQUFHLEdBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLElBQUksR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwwQ0FBMEMsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxJQUFJLEdBQUUsS0FBRyxFQUFFLGtFQUFrRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxlQUFlLEdBQUUsRUFBRSxlQUFlLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDO0FBQUUsZUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsSUFBRyxFQUFFO0FBQUUsZ0JBQUksTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLGlDQUFpQyxHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLHdCQUF3QixHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLFdBQVcsR0FBRSxNQUFJLEVBQUUsb0JBQW9CLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLFFBQVEsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLEVBQUUsNEJBQTRCLEdBQUUsTUFBSSxFQUFFLG1DQUFtQyxHQUFFLE1BQUksRUFBRSxnQ0FBZ0MsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxNQUFJLEVBQUUsWUFBWSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLE1BQUssQ0FBQyxHQUFFLE1BQUksRUFBRSwyQkFBMkIsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxNQUFLLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxNQUFLLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxNQUFLLEVBQUUsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSwwQkFBMEIsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLDRCQUE0QixDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEdBQUcsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFO0FBQUEsQ0FDNXE2QyxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtDQUFrQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxRQUFRLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHVEQUF1RCxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRTtBQUFBLENBQ2xSLENBQUMsR0FBRSxNQUFJLEVBQUUsMERBQTBELEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFO0FBQUEsQ0FDdkksQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsV0FBVyxHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxFQUFFLGtDQUFrQyxHQUFFLE1BQUksRUFBRSxhQUFhLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxpREFBaUQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLG1CQUFtQixHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUscUJBQXFCLENBQUMsR0FBRSxNQUFJLEVBQUUsZUFBZSxHQUFFLE1BQUksRUFBRSxnQkFBZ0IsR0FBRSxNQUFJLEVBQUUseUJBQXlCLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSw0QkFBNEIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxRQUFRLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLE1BQU0sQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBQSw2Q0FDcnFCLEdBQUUsRUFBRTtBQUFBLHlEQUNRLEdBQUUsRUFBRTtBQUFBLDBEQUNILEdBQUUsRUFBRTtBQUFBO0FBQUEsNkRBRUQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxtQkFBbUIsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUksRUFBRSwwQ0FBMEMsR0FBRSxNQUFJLEVBQUUsd0NBQXdDLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLGFBQWEsR0FBRSxJQUFHLENBQUMsR0FBRSxNQUFJLEVBQUUsdUJBQXVCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw2QkFBNkIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsY0FBYyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsa0NBQWtDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwwQ0FBMEMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHNCQUFzQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGdDQUFnQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG1DQUFtQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHNDQUFzQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsbUJBQW1CLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxrQkFBa0IsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxxQ0FBcUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNEJBQTRCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxvQ0FBb0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsOEJBQThCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxzQ0FBc0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsa0NBQWtDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwwQ0FBMEMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsc0NBQXNDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHdDQUF3QyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw2QkFBNkIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsaUNBQWlDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1Q0FBdUMsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUscUNBQXFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSw2Q0FBNkMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDZCQUE2QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsNEJBQTRCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsbUNBQW1DLEdBQUUsTUFBSSxFQUFFLDhCQUE4QixHQUFFLE1BQUksRUFBRSwyQkFBMkIsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1QkFBdUIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHVCQUF1QixHQUFFLE1BQUksRUFBRSx3QkFBd0IsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUseUJBQXlCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxpQ0FBaUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsd0JBQXdCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNkJBQTZCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxxQ0FBcUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNkJBQTZCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxxQ0FBcUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxrQ0FBa0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxpQ0FBaUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxnQ0FBZ0MsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHdDQUF3QyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxvQ0FBb0MsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLDRDQUE0QyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSw2QkFBNkIsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHFDQUFxQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHlDQUF5QyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGtDQUFrQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMENBQTBDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkNBQTZDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsc0NBQXNDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBDQUEwQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0RBQWtELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNkNBQTZDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxxREFBcUQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMkNBQTJDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxtREFBbUQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHVDQUF1QyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsbUNBQW1DLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxzQkFBc0IsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGVBQWUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw4QkFBOEIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGlCQUFpQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsc0JBQXNCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSw4QkFBOEIsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsdUJBQXVCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwrQkFBK0IsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsa0NBQWtDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwwQ0FBMEMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMEJBQTBCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxrQ0FBa0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsbUJBQW1CLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwyQkFBMkIsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHFDQUFxQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsZ0NBQWdDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSx3Q0FBd0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsc0NBQXNDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSw4Q0FBOEMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtCQUErQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdUNBQXVDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsdUNBQXVDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBDQUEwQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0RBQWtELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGdEQUFnRCxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsd0RBQXdELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1Q0FBdUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDZCQUE2QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxrQ0FBa0MsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLDBDQUEwQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSw4Q0FBOEMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHNEQUFzRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsbUNBQW1DLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwyQ0FBMkMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsdUNBQXVDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwrQ0FBK0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHlCQUF5QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNkNBQTZDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxxREFBcUQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGtEQUFrRCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsNkNBQTZDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1Q0FBdUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsOEJBQThCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJCQUEyQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUNBQW1DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG1DQUFtQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMkNBQTJDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGdDQUFnQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsd0NBQXdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJCQUEyQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUNBQW1DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG1DQUFtQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMkNBQTJDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGlDQUFpQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUseUNBQXlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDhCQUE4QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsc0NBQXNDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtCQUErQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdUNBQXVDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGdDQUFnQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsd0NBQXdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGdDQUFnQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsd0NBQXdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGlDQUFpQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUseUNBQXlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGtDQUFrQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMENBQTBDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGtDQUFrQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMENBQTBDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9DQUFvQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNENBQTRDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDhCQUE4QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsc0NBQXNDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJCQUEyQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUNBQW1DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9DQUFvQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNENBQTRDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkNBQTZDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDhCQUE4QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsc0NBQXNDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJCQUEyQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUNBQW1DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJCQUEyQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUNBQW1DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxxQ0FBcUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsb0NBQW9DLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG1DQUFtQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1Q0FBdUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUseUNBQXlDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsc0NBQXNDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSwwQ0FBMEMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsOENBQThDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsWUFBWSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMkNBQTJDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSwrQ0FBK0MsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHVEQUF1RCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxnREFBZ0QsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHdEQUF3RCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSwrQ0FBK0MsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHVEQUF1RCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHVDQUF1QyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxpQ0FBaUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsZ0NBQWdDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsdUNBQXVDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsZ0NBQWdDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSx3Q0FBd0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNEJBQTRCLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxvQ0FBb0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHNDQUFzQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxzQ0FBc0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGdDQUFnQyxHQUFFLE1BQUksRUFBRSxpQ0FBaUMsR0FBRSxNQUFJLEVBQUUsNkNBQTZDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHFDQUFxQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsc0NBQXNDLEdBQUUsTUFBSSxFQUFFLHNDQUFzQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx5Q0FBeUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDJDQUEyQyxHQUFFLE1BQUksRUFBRSw0Q0FBNEMsR0FBRSxNQUFJLEVBQUUsMkNBQTJDLEdBQUUsTUFBSSxFQUFFLDBDQUEwQyxHQUFFLE1BQUksRUFBRSwwQ0FBMEMsR0FBRSxNQUFJLEVBQUUsMENBQTBDLEdBQUUsTUFBSSxFQUFFLDZDQUE2QyxHQUFFLE1BQUksRUFBRSw2Q0FBNkMsR0FBRSxNQUFJLEVBQUUsOENBQThDLEdBQUUsTUFBSSxFQUFFLDRDQUE0QyxHQUFFLE1BQUksRUFBRSw2Q0FBNkMsR0FBRSxNQUFJLEVBQUUsNkNBQTZDLEdBQUUsTUFBSSxFQUFFLDhDQUE4QyxHQUFFLE1BQUksRUFBRSwwQ0FBMEMsR0FBRSxNQUFJLEVBQUUseUNBQXlDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHFDQUFxQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxFQUFFLHFDQUFxQyxHQUFFLE1BQUksRUFBRSx3Q0FBd0MsR0FBRSxNQUFJLEVBQUUsMkNBQTJDLEdBQUUsTUFBSSxFQUFFLHFDQUFxQyxHQUFFLE1BQUksRUFBRSwwQ0FBMEMsR0FBRSxNQUFJLEVBQUUsd0NBQXdDLEdBQUUsTUFBSSxFQUFFLDZDQUE2QyxHQUFFLE1BQUksRUFBRSxtQ0FBbUMsR0FBRSxNQUFJLEVBQUUsbUNBQW1DLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksRUFBRSxpQ0FBaUMsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxFQUFFLGlDQUFpQyxHQUFFLE1BQUksRUFBRSxnQ0FBZ0MsR0FBRSxNQUFJLEVBQUUsZ0NBQWdDLEdBQUUsTUFBSSxFQUFFLGdDQUFnQyxHQUFFLE1BQUksRUFBRSxrQ0FBa0MsR0FBRSxNQUFJLEVBQUUsZ0NBQWdDLEdBQUUsTUFBSSxFQUFFLG1DQUFtQyxHQUFFLE1BQUksRUFBRSwrQkFBK0IsR0FBRSxNQUFJLEVBQUUsdUNBQXVDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsaUNBQWlDLEdBQUUsTUFBSSxFQUFFLGdDQUFnQyxHQUFFLE1BQUksRUFBRSwrQkFBK0IsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxFQUFFLGtDQUFrQyxHQUFFLE1BQUksRUFBRSxnQ0FBZ0MsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxFQUFFLGlDQUFpQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMENBQTBDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1Q0FBdUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxxQ0FBcUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLDZDQUE2QyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSwyQ0FBMkMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLG1EQUFtRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsb0RBQW9ELEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSw0Q0FBNEMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxtREFBbUQsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSw4Q0FBOEMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxxREFBcUQsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJDQUEyQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGtEQUFrRCxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMkNBQTJDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0RBQWtELENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNkNBQTZDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxxREFBcUQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxnREFBZ0QsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHdEQUF3RCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxpREFBaUQsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHlEQUF5RCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSw4Q0FBOEMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHNEQUFzRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsd0NBQXdDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw0Q0FBNEMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxtREFBbUQsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGlEQUFpRCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNDQUFzQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOENBQThDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGtDQUFrQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMENBQTBDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGdDQUFnQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsd0NBQXdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw0Q0FBNEMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw0Q0FBNEMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSwwQ0FBMEMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGtEQUFrRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSwwQ0FBMEMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGtEQUFrRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsbURBQW1ELEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkNBQTZDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGlDQUFpQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUseUNBQXlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZDQUE2QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscURBQXFELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9DQUFvQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNENBQTRDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkNBQTZDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGtDQUFrQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMENBQTBDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlDQUF5QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaURBQWlELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkNBQTZDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNDQUFzQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOENBQThDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9DQUFvQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNENBQTRDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9DQUFvQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNENBQTRDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZDQUE2QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscURBQXFELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJDQUEyQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbURBQW1ELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtCQUErQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdUNBQXVDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHdCQUF3QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsZ0NBQWdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHdDQUF3QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsZ0RBQWdELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHVCQUF1QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsK0JBQStCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNDQUFzQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOENBQThDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlDQUF5QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaURBQWlELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJCQUEyQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUNBQW1DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDJCQUEyQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUNBQW1DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHdCQUF3QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsZ0NBQWdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDhCQUE4QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsc0NBQXNDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtCQUErQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdUNBQXVDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHdDQUF3QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsZ0RBQWdELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsZ0NBQWdDLEdBQUUsTUFBSSxFQUFFLCtCQUErQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxtQ0FBbUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMENBQTBDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGtEQUFrRCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSwyQ0FBMkMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDREQUE0RCxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0VBQW9FLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsK0RBQStELEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSx1RUFBdUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGlEQUFpRCxHQUFFLE1BQUksRUFBRSxtREFBbUQsR0FBRSxNQUFJLEVBQUUsa0RBQWtELEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHFEQUFxRCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNEQUFzRCxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOERBQThELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsc0RBQXNELEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSw4REFBOEQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxtREFBbUQsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLDJEQUEyRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlEQUF5RCxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUVBQWlFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHVEQUF1RCxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsK0RBQStELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsNkRBQTZELEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxxRUFBcUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSx1REFBdUQsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLCtEQUErRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSx5REFBeUQsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGlFQUFpRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSx3REFBd0QsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGdFQUFnRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUscURBQXFELEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSw0REFBNEQsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLG9FQUFvRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGdFQUFnRSxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsd0VBQXdFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1REFBdUQsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsaUVBQWlFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLCtDQUErQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxxQ0FBcUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUscUNBQXFDLEdBQUUsTUFBSSxFQUFFLDJDQUEyQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSw2Q0FBNkMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHFEQUFxRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSwwQ0FBMEMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGtEQUFrRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1Q0FBdUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsdUNBQXVDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxpQ0FBaUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGdEQUFnRCxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsd0RBQXdELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtDQUErQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdURBQXVELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtDQUErQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdURBQXVELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtDQUErQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdURBQXVELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1Q0FBdUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1REFBdUQsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlEQUF5RCxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUVBQWlFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMkRBQTJELEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxtRUFBbUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHVEQUF1RCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHVEQUF1RCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsd0RBQXdELEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHlEQUF5RCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx1REFBdUQsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMENBQTBDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxrREFBa0QsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxzQ0FBc0MsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLDhDQUE4QyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsK0JBQStCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBDQUEwQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0RBQWtELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsc0NBQXNDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSw4Q0FBOEMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLCtCQUErQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSx3Q0FBd0MsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGdEQUFnRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHVDQUF1QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsK0NBQStDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw2QkFBNkIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsaUNBQWlDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLCtCQUErQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsNENBQTRDLEdBQUUsTUFBSSxFQUFFLDRDQUE0QyxHQUFFLE1BQUksRUFBRSw4Q0FBOEMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHFEQUFxRCxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxzREFBc0QsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsOEJBQThCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSwwQ0FBMEMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxtQ0FBbUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsb0NBQW9DLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx3Q0FBd0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxxQ0FBcUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxrQ0FBa0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsaUNBQWlDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGlDQUFpQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxzQ0FBc0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsbUNBQW1DLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGdDQUFnQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxrQ0FBa0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsNEJBQTRCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHNDQUFzQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLCtCQUErQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGtDQUFrQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMENBQTBDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxrQ0FBa0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsOEJBQThCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxpQ0FBaUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsOEJBQThCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFQyxPQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSx1QkFBdUIsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLCtCQUErQixDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSx5QkFBeUIsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLGlDQUFpQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG1CQUFtQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMkJBQTJCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFCQUFxQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkJBQTZCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFCQUFxQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkJBQTZCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9CQUFvQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNEJBQTRCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9CQUFvQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNEJBQTRCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNCQUFzQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOEJBQThCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNCQUFzQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOEJBQThCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNCQUFzQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOEJBQThCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHVCQUF1QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsK0JBQStCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNCQUFzQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOEJBQThCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNCQUFzQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOEJBQThCLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHdCQUF3QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsZ0NBQWdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHdCQUF3QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsZ0NBQWdDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNCQUFzQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOEJBQThCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFCQUFxQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkJBQTZCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHVCQUF1QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsK0JBQStCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkNBQTZDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFCQUFxQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkJBQTZCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRCQUE0QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0NBQW9DLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHNCQUFzQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsOEJBQThCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFCQUFxQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkJBQTZCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDZCQUE2QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUscUNBQXFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDhCQUE4QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsc0NBQXNDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDJCQUEyQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDhCQUE4QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsK0JBQStCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSwyQ0FBMkMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUseUNBQXlDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxpREFBaUQsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsdUNBQXVDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwrQ0FBK0MsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGlDQUFpQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw4QkFBOEIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLCtCQUErQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsdUNBQXVDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkNBQTZDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDhCQUE4QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsc0NBQXNDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG1DQUFtQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMkNBQTJDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG1DQUFtQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMkNBQTJDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDRCQUE0QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHNDQUFzQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx5Q0FBeUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxpQ0FBaUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsOENBQThDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG9DQUFvQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNENBQTRDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG1DQUFtQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMkNBQTJDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsbUNBQW1DLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwyQ0FBMkMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsbUNBQW1DLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxvREFBb0QsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUscUNBQXFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDBCQUEwQixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsZ0RBQWdELEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDhDQUE4QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsc0RBQXNELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDRDQUE0QyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsb0RBQW9ELENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxnQ0FBZ0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxxQ0FBcUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx3Q0FBd0MsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMkNBQTJDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxtQ0FBbUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsaUNBQWlDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHdCQUF3QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUseUJBQXlCLEdBQUUsTUFBSSxFQUFFLHdCQUF3QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSwrQkFBK0IsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUscUNBQXFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLDhCQUE4QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSw4QkFBOEIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHVCQUF1QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0NBQWtDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHlCQUF5QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx3QkFBd0IsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsaUNBQWlDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSwyQkFBMkIsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLHlCQUF5QixHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsTUFBSyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxNQUFLLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsTUFBSyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxNQUFLLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsTUFBSyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsTUFBSyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLE1BQUssQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLGtCQUFrQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMEJBQTBCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHFCQUFxQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsNkJBQTZCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLG1CQUFtQixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsMkJBQTJCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLHVCQUF1QixHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsK0JBQStCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxRQUFRLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsSUFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLCtDQUErQyxHQUFFLEtBQUksRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssRUFBRSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxFQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBSSxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBSSxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUksR0FBRSxDQUFDLEdBQUUsTUFBSyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBSSxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUksR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxNQUFLLElBQUksR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFJLEdBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsSUFBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsSUFBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsSUFBRyxLQUFLLEdBQUUsQ0FBQyxHQUFFLElBQUcsS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxPQUFNLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sS0FBSyxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxLQUFLLEdBQUUsQ0FBQyxHQUFFLE9BQU0sRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEtBQUssR0FBRSxDQUFDLEdBQUUsT0FBTSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxJQUFHLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxJQUFHLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLE1BQU0sR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsTUFBTSxHQUFFLENBQUMsR0FBRSxJQUFHLE1BQU0sR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLE1BQU0sR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBTyxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQU8sTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFPLEtBQUssQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG9HQUFvRyxHQUFFLE1BQUksRUFBRSw0REFBNEQsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxFQUFFLDBCQUEwQixHQUFFLE1BQUksRUFBRSw4Q0FBOEMsR0FBRSxNQUFJLEVBQUUsZ0RBQWdELEdBQUUsTUFBSSxFQUFFLHlCQUF5QixHQUFFLE1BQUksRUFBRSwyQkFBMkIsR0FBRSxNQUFJLEVBQUUsNEJBQTRCLEdBQUUsTUFBSSxFQUFFLDJCQUEyQixHQUFFLE1BQUksRUFBRSw4Q0FBOEMs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R0FBRSxNQUFJLEVBQUUsb0NBQW9DLEdBQUUsTUFBSSxFQUFFLDREQUE0RCxHQUFFLE1BQUksRUFBRSxpRUFBaUUsR0FBRSxNQUFJLEVBQUUsa0RBQWtELEdBQUUsTUFBSSxFQUFFLHFEQUFxRCxHQUFFLE1BQUksRUFBRSxnREFBZ0QsR0FBRSxNQUFJLEVBQUUseURBQXlELEdBQUUsTUFBSSxFQUFFLHNEQUFzRCxHQUFFLE1BQUksRUFBRSxrREFBa0QsR0FBRSxNQUFJLEVBQUUsd0NBQXdDLEdBQUUsTUFBSSxFQUFFLHNDQUFzQyxHQUFFLE1BQUksRUFBRSwwREFBMEQsR0FBRSxNQUFJLEVBQUUsMERBQTBELEdBQUUsTUFBSSxFQUFFLHlEQUF5RCxHQUFFLE1BQUksRUFBRSxrREFBa0QsR0FBRSxNQUFJLEVBQUUseURBQXlELEdBQUUsTUFBSSxFQUFFLDREQUE0RCxHQUFFLE1BQUksRUFBRSwwQ0FBMEMsR0FBRSxNQUFJLEVBQUUsMENBQTBDLEdBQUUsTUFBSSxFQUFFLDBDQUEwQyxHQUFFLE1BQUksRUFBRSwwR0FBMEcsR0FBRSxNQUFJLEVBQUUsbUdBQW1HLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMkRBQTJELEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHFHQUFxRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUscURBQXFELEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMENBQTBDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsbUdBQW1HLENBQUMsR0FBRSxNQUFJLENB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QyxDQUFDLENBQUMsR0FBRSxFQUFFLDJHQUEyRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsZUFBZSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSw0QkFBNEIsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxJQUFJLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsRUFBRSwyQ0FBMkMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGdEQUFnRCxHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLEVBQUUsdUNBQXVDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMEJBQTBCLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUseUJBQXlCLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLG1EQUFtRCxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsbUJBQW1CLEdBQUUsTUFBSSxFQUFFLDZCQUE2QixHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLDZDQUE2QyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHNFQUFzRSxHQUFFLE1BQUksRUFBRSxvREFBb0QsR0FBRSxNQUFJLEVBQUUsd0VBQXdFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLElBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLDJCQUEyQixDQUFDLEdBQUUsTUFBSSxFQUFFLCtCQUErQixHQUFFLE1BQUksRUFBRSw4Q0FBOEMsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSx1QkFBdUIsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxFQUFFLG1FQUFtRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSw0RUFBNEUsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsZ0dBQWdHLENBQUMsR0FBRSxNQUFJLEVBQUUsbUJBQW1CLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSwwQ0FBMEMsR0FBRSxJQUFHLENBQUMsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsY0FBYyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHVCQUF1QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsSUFBRyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsWUFBWSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEdBQUcsR0FBRSxNQUFJLEVBQUUsR0FBRyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEdBQUcsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRUQsR0FBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEdBQUcsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksRUFBRSxhQUFhLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsWUFBWSxHQUFFLE1BQUksRUFBRSxXQUFXLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsV0FBVyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsV0FBVyxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksRUFBRSxXQUFXLEdBQUUsTUFBSSxFQUFFLFdBQVcsR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsWUFBWSxHQUFFLE1BQUksRUFBRSxXQUFXLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsa0JBQWtCLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsY0FBYyxHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLGVBQWUsR0FBRSxNQUFJLEVBQUUsa0JBQWtCLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxXQUFXLEdBQUUsTUFBSSxFQUFFLFdBQVcsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxhQUFhLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLEVBQUUsbUJBQW1CLEdBQUUsTUFBSSxFQUFFLHNCQUFzQixHQUFFLE1BQUksRUFBRSxhQUFhLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsV0FBVyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFdBQVcsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsWUFBWSxHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsZUFBZSxHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxFQUFFLGVBQWUsR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLGlCQUFpQixHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxrQkFBa0IsR0FBRSxNQUFJLEVBQUUsWUFBWSxHQUFFLE1BQUksRUFBRSxnQkFBZ0IsR0FBRSxNQUFJLEVBQUUseUJBQXlCLEdBQUUsTUFBSSxFQUFFLHlCQUF5QixHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUseUJBQXlCLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUscUJBQXFCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxLQUFLLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksQ0FBQyxHQUFFLEtBQUssR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxNQUFNLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUksR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxFQUFFLElBQUksR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxRQUFRLEdBQUUsTUFBSSxFQUFFLEtBQUssR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsTUFBTSxHQUFFLE1BQUksRUFBRSxLQUFLLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBSSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFJLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsdUJBQXVCLEdBQUUsTUFBSSxFQUFFLG9DQUFvQyxHQUFFLE1BQUksRUFBRSxvQ0FBb0MsR0FBRSxNQUFJLEVBQUUsb0NBQW9DLEdBQUUsTUFBSSxFQUFFLGtDQUFrQyxHQUFFLE1BQUksRUFBRSxrQ0FBa0MsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxFQUFFLGtDQUFrQyxHQUFFLE1BQUksRUFBRSx3Q0FBd0MsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxFQUFFLGtDQUFrQyxHQUFFLE1BQUksRUFBRSxrQ0FBa0MsR0FBRSxNQUFJLEVBQUUsa0NBQWtDLEdBQUUsTUFBSSxFQUFFLHdCQUF3QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFQSxHQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxxQkFBcUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLEVBQUUsK0JBQStCLEdBQUUsTUFBSSxFQUFFLCtCQUErQixHQUFFLE1BQUksRUFBRSwrQkFBK0IsR0FBRSxNQUFJLEVBQUUsNkJBQTZCLEdBQUUsTUFBSSxFQUFFLDZCQUE2QixHQUFFLE1BQUksRUFBRSw2QkFBNkIsR0FBRSxNQUFJLEVBQUUsNkJBQTZCLEdBQUUsTUFBSSxFQUFFLG1DQUFtQyxHQUFFLE1BQUksRUFBRSxzQ0FBc0MsR0FBRSxNQUFJLEVBQUUsNkJBQTZCLEdBQUUsTUFBSSxFQUFFLDZCQUE2QixHQUFFLE1BQUksRUFBRSw2QkFBNkIsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRUEsR0FBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUs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RSxDQUFDLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsa0NBQWtDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUseUNBQXlDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsc0NBQXNDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsUUFBUSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHlIQUF5SCxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsNkNBQTZDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUVBLEdBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRUEsR0FBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUVBLEdBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsMEJBQTBCLEdBQUUsS0FBSSxDQUFDLEdBQUUsTUFBSSxFQUFFLDRFQUE0RSxHQUFFLE1BQUksRUFBRSxxRUFBcUUsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSx5QkFBeUIsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEVBQUUsMkJBQTJCLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLHFEQUFxRCxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsbUNBQW1DLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFNBQVMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxnQkFBZ0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxtQkFBbUIsR0FBRSxNQUFJLEVBQUUsbUJBQW1CLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsNkJBQTZCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsMEJBQTBCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGVBQWUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxzQkFBc0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxnQkFBZ0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLDBCQUEwQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxzQkFBc0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSx3QkFBd0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHFCQUFxQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxnQkFBZ0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxnQkFBZ0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsYUFBYSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxtQkFBbUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGlCQUFpQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZUFBZSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGlCQUFpQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSx5QkFBeUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxzQkFBc0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsa0JBQWtCLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUseUJBQXlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHVCQUF1QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUscUJBQXFCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsa0JBQWtCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxrQkFBa0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGNBQWMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZUFBZSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHdCQUF3QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLDBCQUEwQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG9CQUFvQixHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsb0JBQW9CLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZUFBZSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLG9EQUFvRCxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxxQkFBcUIsR0FBRSxNQUFJLEVBQUUsbURBQW1ELEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG9CQUFvQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxhQUFhLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsY0FBYyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsa0JBQWtCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFdBQVcsR0FBRSxNQUFJLEVBQUUsbUJBQW1CLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxrQkFBa0IsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxxQkFBcUIsR0FBRSxNQUFJLEVBQUUsWUFBWSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFdBQVcsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGlCQUFpQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFdBQVcsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxrQkFBa0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtEQUFrRCxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxrQkFBa0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxrQkFBa0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxzQkFBc0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGtCQUFrQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZUFBZSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsY0FBYyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG9CQUFvQixHQUFFLE1BQUksRUFBRSxnREFBZ0QsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsS0FBSyxHQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxFQUFFLHFCQUFxQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsb0JBQW9CLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxtQkFBbUIsR0FBRSxNQUFJLEVBQUUscUJBQXFCLEdBQUUsTUFBSSxFQUFFLHFCQUFxQixHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxFQUFFLHNCQUFzQixHQUFFLE1BQUksRUFBRSxzQkFBc0IsR0FBRSxNQUFJLEVBQUUsc0JBQXNCLEdBQUUsTUFBSSxFQUFFLHNCQUFzQixHQUFFLE1BQUksRUFBRSx1QkFBdUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSx3QkFBd0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHdCQUF3QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGVBQWUsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxPQUFPLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsc0JBQXNCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsd0RBQXdELEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsd0JBQXdCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSx3QkFBd0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHlCQUF5QixHQUFFLE1BQUksRUFBRSxhQUFhLEdBQUUsTUFBSSxFQUFFLHFCQUFxQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUseUJBQXlCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSx1QkFBdUIsR0FBRSxNQUFJLEVBQUUsV0FBVyxHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLDJCQUEyQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHFCQUFxQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLDRCQUE0QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHNCQUFzQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsMkJBQTJCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUscUJBQXFCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSw2QkFBNkIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLDZCQUE2QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsNkJBQTZCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsOEJBQThCLEdBQUUsTUFBSSxFQUFFLHNCQUFzQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLDBCQUEwQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGVBQWUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsZ0JBQWdCLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxZQUFZLEdBQUUsTUFBSSxFQUFFLGlCQUFpQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGlCQUFpQixHQUFFLE1BQUksRUFBRSxhQUFhLEdBQUUsTUFBSSxFQUFFLGFBQWEsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxtQkFBbUIsR0FBRSxNQUFJLEVBQUUsb0JBQW9CLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxjQUFjLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsb0JBQW9CLEdBQUUsTUFBSSxFQUFFLG9CQUFvQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLHdCQUF3QixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLGdCQUFnQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUscUJBQXFCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsV0FBVyxHQUFFLE1BQUksRUFBRSxtQkFBbUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxlQUFlLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSx3QkFBd0IsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFVBQVUsR0FBRSxNQUFJLEVBQUUsaUJBQWlCLEdBQUUsTUFBSSxFQUFFLE1BQU0sR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsbUJBQW1CLEdBQUUsTUFBSSxFQUFFLG1CQUFtQixHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRUEsR0FBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxNQUFLLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLE1BQUssQ0FBQyxHQUFFLE1BQUksRUFBRSx3Q0FBd0MsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxRQUFRLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxJQUFHLENBQUMsR0FBRSxNQUFJLENBQUMsSUFBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRyxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsc0JBQXNCLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLGlDQUFpQyxHQUFFLElBQUcsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUseUJBQXlCLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFQSxHQUFFLEdBQUUsTUFBSSxFQUFFQSxHQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxpQkFBaUIsR0FBRSxNQUFJLEVBQUUsOEJBQThCLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSx5QkFBeUIsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLG9DQUFvQyxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxJQUFHLEVBQUUsY0FBYyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSwrQ0FBK0MsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsNkRBQTZELEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLG9EQUFvRCxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLE1BQUssRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLCtDQUErQyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxTQUFTLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxrQkFBa0IsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsb0JBQW9CLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEVBQUUsT0FBTyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEtBQUksRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFJLEVBQUUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLGVBQWUsR0FBRSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSx1REFBdUQsR0FBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxFQUFFLDJCQUEyQixHQUFFLElBQUcsRUFBRSxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsUUFBUSxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFFBQVEsR0FBRSxNQUFJLEVBQUUsVUFBVSxHQUFFLE1BQUksRUFBRSxVQUFVLEdBQUUsTUFBSSxFQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsU0FBUyxHQUFFLE1BQUksRUFBRSxFQUFFLEdBQUUsTUFBSSxFQUFFLFlBQVksR0FBRSxNQUFJLEVBQUUsRUFBRSxHQUFFLE1BQUksRUFBRSwyQkFBMkIsR0FBRSxNQUFJLEVBQUUsdUJBQXVCLEdBQUUsTUFBSSxFQUFFLE9BQU8sR0FBRSxNQUFJLEVBQUUsa0JBQWtCO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU87QUFBRSxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU0sQ0FBQyxJQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTSxDQUFDLElBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU0sQ0FBQyxJQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQTtBQUFVLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUE7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxPQUFPLEtBQUc7QUFBUyx1QkFBTztBQUFFLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQTtBQUFVLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPO0FBQUUsc0JBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRyxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLEtBQUcsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU0sQ0FBQyxJQUFHLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUcsc0JBQUksS0FBRyxFQUFFO0FBQUcseUJBQU0sQ0FBQyxJQUFHLElBQUcsR0FBRyxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRyxzQkFBSSxLQUFHLEVBQUU7QUFBRyx5QkFBTSxDQUFDLElBQUcsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRTtBQUFHLHlCQUFNLENBQUMsSUFBRyxJQUFHLElBQUcsR0FBRyxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRyxzQkFBSSxLQUFHLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx5QkFBTSxDQUFDLElBQUcsR0FBRSxJQUFHLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU0sQ0FBQyxJQUFHLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU0sQ0FBQyxJQUFHLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUcsc0JBQUksS0FBRyxFQUFFO0FBQUcseUJBQU0sQ0FBQyxJQUFHLElBQUcsR0FBRyxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRyxzQkFBSSxLQUFHLEVBQUU7QUFBRyx5QkFBTSxDQUFDLElBQUcsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRTtBQUFHLHlCQUFNLENBQUMsSUFBRyxJQUFHLElBQUcsR0FBRyxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRyxzQkFBSSxLQUFHLEVBQUU7QUFBRyx5QkFBTSxDQUFDLElBQUcsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFHLHNCQUFJLEtBQUcsRUFBRTtBQUFHLHlCQUFNLENBQUMsSUFBRyxJQUFHLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBO0FBQVUsc0JBQUksS0FBRyxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcseUJBQU0sQ0FBQyxJQUFHLEdBQUUsSUFBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxPQUFLLEtBQUcsRUFBRSxLQUFHLEdBQUUsS0FBRztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSyxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFLLENBQUMsR0FBRSxJQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMsZUFBRyxDQUFDO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLElBQUUsQ0FBQyxJQUFFO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUk7QUFBRyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsSUFBRSxJQUFFLENBQUM7QUFBRSxxQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sSUFBRSxNQUFJO0FBQUEsWUFBRztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQyxnQkFBSSxDQUFDO0FBQUUsZ0JBQUksTUFBSSxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHFCQUFTLElBQUksR0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsT0FBSTtBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx3QkFBRztBQUFDLHlCQUFHLENBQUM7QUFBQSxvQkFBQyxTQUFPLEdBQU47QUFBUywwQkFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsT0FBSztBQUFHLDhCQUFNO0FBQUUsMEJBQUksSUFBRTtBQUFBLG9CQUFDO0FBQUMsd0JBQUksSUFBRTtBQUFFO0FBQUEsa0JBQVE7QUFBQyx5QkFBTztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRyxDQUFDLEdBQUUsR0FBRztBQUFFLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHlCQUFPO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsSUFBRSxHQUFHLElBQUcsR0FBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUMsS0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUsb0JBQUcsQ0FBQztBQUFFLHlCQUFPO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGVBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLElBQUksQ0FBQyxLQUFHLEdBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sSUFBSSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sTUFBSSxJQUFFLEtBQUcsT0FBSyxJQUFFLElBQUUsSUFBRSxLQUFHO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsSUFBSSxDQUFDLEVBQUUsSUFBRyxNQUFJLElBQUUsSUFBSSxDQUFDLElBQUUsS0FBRyxJQUFFO0FBQUUsZUFBRyxDQUFDO0FBQUUsZ0JBQUksTUFBSSxJQUFJLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBUSxJQUFFLEdBQUUsSUFBRSxPQUFJO0FBQUMsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUc7QUFBQSxnQkFBUTtBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxJQUFFLEVBQUUsS0FBRyxHQUFHLEdBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sSUFBRSxFQUFFLEtBQUcsR0FBRyxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsT0FBSTtBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUU7QUFBRTtBQUFBLGdCQUFRO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBRSx1QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsT0FBSTtBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRTtBQUFBLGdCQUFRO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxPQUFJO0FBQUMsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFHLG9CQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUUsc0JBQUksSUFBRTtBQUFFO0FBQUEsZ0JBQVE7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsR0FBRSxJQUFFLE9BQUk7QUFBQyxvQkFBRyxHQUFFO0FBQUMs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QUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sS0FBRyxLQUFHLEtBQUcsS0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFFLElBQUUsS0FBRyxNQUFJLEtBQUcsS0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFFLElBQUUsS0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sS0FBRyxLQUFHLEtBQUcsS0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFFLElBQUUsS0FBRyxNQUFJLEtBQUcsS0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFFLElBQUUsS0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRztBQUFHLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLFNBQU8sSUFBRSxJQUFFLEdBQUUsSUFBRTtBQUFFLGtCQUFHLEVBQUUsSUFBRTtBQUFHLHlCQUFRLElBQUUsT0FBSTtBQUFDLG9CQUFFLEdBQUUsRUFBRSxJQUFFLEVBQUU7QUFBRSxzQkFBSSxJQUFFLElBQUUsSUFBRTtBQUFFLHNCQUFHLE1BQUksR0FBRTtBQUFDLHdCQUFJLElBQUU7QUFBRTtBQUFBLGtCQUFRO0FBQUM7QUFBQSxnQkFBSztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLFNBQU87QUFBRSxrQkFBRyxNQUFJO0FBQUUsdUJBQU0sQ0FBQyxDQUFDO0FBQUUsa0JBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxJQUFFLElBQUUsR0FBRSxJQUFFO0FBQUUsa0JBQUcsRUFBRSxJQUFFO0FBQUcseUJBQVEsSUFBRSxPQUFJO0FBQUMsb0JBQUUsSUFBRSxLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUUsRUFBRTtBQUFFLHNCQUFJLElBQUUsSUFBRSxJQUFFO0FBQUUsc0JBQUcsTUFBSSxHQUFFO0FBQUMsd0JBQUksSUFBRTtBQUFFO0FBQUEsa0JBQVE7QUFBQztBQUFBLGdCQUFLO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUc7QUFBRSx5QkFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxRQUFLO0FBQUMsc0JBQUcsR0FBRTtBQUFDLHdCQUFJLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUc7QUFBQSxrQkFBUTtBQUFDLDJCQUFRLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxPQUFJO0FBQUMsd0JBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsRUFBRTtBQUFHLHdCQUFFLElBQUUsS0FBRyxFQUFFO0FBQUcsMEJBQUksSUFBRSxJQUFFLElBQUUsR0FBRSxJQUFFO0FBQUU7QUFBQSxvQkFBUTtBQUFDLDJCQUFPO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHFCQUFNLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxlQUFHLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxLQUFHLEdBQUcsS0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxNQUFJLEtBQUcsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsR0FBRTtBQUFDLHVCQUFNLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxLQUFHLEdBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRSxFQUFFLEtBQUc7QUFBRSxxQkFBSSxLQUFHLElBQUUsS0FBRyxJQUFHO0FBQUMsc0JBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLElBQUUsRUFBRSxFQUFFO0FBQUUsd0JBQUcsS0FBRyxFQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUsd0JBQUcsSUFBRztBQUFDLDBCQUFJLElBQUUsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBRSw2QkFBTyxFQUFFLEVBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxHQUFHLEdBQUc7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsR0FBRztBQUFBLGdCQUFDO0FBQUMscUJBQUksS0FBRyxJQUFFLEtBQUcsSUFBRztBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRTtBQUFFLHdCQUFHLE1BQUksRUFBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxFQUFF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R0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRTtBQUFHLHVCQUFHLElBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLGtCQUFRO0FBQUMseUJBQU87QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsR0FBRTtBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsSUFBRyxFQUFFO0FBQUUseUJBQU0sQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHLEdBQUU7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUUseUJBQU0sQ0FBQyxHQUFFLElBQUcsR0FBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsR0FBRSxLQUFHLE9BQUk7QUFBQyxzQkFBRyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxJQUFHLEtBQUc7QUFB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QkFBQztBQUFDLHlCQUFPO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxJQUFFLEdBQUcsSUFBRyxHQUFFLEVBQUUsSUFBRyxDQUFDLElBQUUsR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsSUFBRyxJQUFHLEVBQUU7QUFBRSxzQkFBRyxPQUFLO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsc0JBQUcsS0FBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDJCQUFNLENBQUMsR0FBRSxHQUFHLElBQUcsSUFBRyxHQUFFLEdBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLGtCQUFDO0FBQUMsc0JBQUksSUFBRSxHQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUUsR0FBRyxFQUFFLElBQUcsSUFBRyxHQUFFLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFHO0FBQUMsdUJBQVMsRUFBRSxJQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUU7QUFBRyxzQkFBRyxFQUFFLENBQUMsS0FBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUU7QUFBRSwyQkFBTyxFQUFFLEVBQUUsSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFFLElBQUcsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUMsV0FBUyxDQUFDO0FBQUUseUJBQU87QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxJQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEVBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMsc0JBQUssQ0FBQyxHQUFFLElBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUcsR0FBRTtBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx3QkFBRyxFQUFFLE1BQUksRUFBRSxJQUFHO0FBQUMsMEJBQUksSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsNkJBQU8sS0FBRyxFQUFFLElBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxvQkFBQztBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFFLDJCQUFPLEtBQUcsRUFBRSxJQUFHLElBQUcsR0FBRyxJQUFHLElBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUUsR0FBRyxJQUFHLElBQUcsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHO0FBQUEsZ0JBQUM7QUFBTSxzQkFBSSxLQUFHO0FBQUUsdUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsRUFBRSxJQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRSx5QkFBTyxLQUFHLE9BQUssTUFBSSxNQUFJLEtBQUcsSUFBRSxHQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsSUFBRSxHQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLElBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLHlCQUFPLEtBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRyxJQUFHLEVBQUUsSUFBRSxHQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsR0FBRyxJQUFHLElBQUUsR0FBRztBQUFHLHNCQUFHLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFHO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyx5QkFBUSxJQUFFLElBQUcsSUFBRSxPQUFJO0FBQUMsc0JBQUcsR0FBRTtBQUFDLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFO0FBQUc7QUFBQSxrQkFBUTtBQUFDLHlCQUFPO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxPQUFJO0FBQUMsc0JBQUcsSUFBRztBQUFDLHdCQUFHLElBQUc7QUFBQywwQkFBSSxLQUFHLEdBQUcsSUFB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RyxHQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUU7QUFBRSx5QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyx5QkFBUSxJQUFFLElBQUcsSUFBRSxPQUFJO0FBQUMsc0JBQUcsR0FBRTtBQUFDLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFO0FBQUc7QUFBQSxrQkFBUTtBQUFDLHlCQUFPO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyxvQkFBRyxJQUFHO0FBQUMsc0JBQUksSUFBRSxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUU7QUFBRSx5QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsU0FBUyxJQUFHLEdBQUU7QUFBQyx5QkFBUSxJQUFFLEdBQUUsSUFBRSxPQUFJO0FBQUMsc0JBQUcsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUUsd0JBQUcsT0FBSyxHQUFFO0FBQUMsMEJBQUcsS0FBRyxJQUFHO0FBQUMsNEJBQUksSUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLENBQUM7QUFBRTtBQUFBLHNCQUFRO0FBQUMsMEJBQUksSUFBRTtBQUFHO0FBQUEsb0JBQVE7QUFBQyx3QkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxDQUFDO0FBQUEsa0JBQUM7QUFBTSx3QkFBSSxLQUFHO0FBQUUseUJBQU8sU0FBUyxHQUFFO0FBQUMsMkJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUEsY0FBQyxHQUFFLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxlQUFHLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsS0FBRyxHQUFFLEVBQUUsS0FBRyxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxLQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsS0FBRyxFQUFFLEtBQUcsSUFBRSxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxFQUFFLEtBQUcsRUFBRSxJQUFHLEVBQUUsS0FBRyxFQUFFLEtBQUcsSUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLElBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxJQUFFO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUksQ0FBQyxJQUFHLEtBQUksR0FBRyxDQUFDLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxLQUFHLEdBQUUsRUFBRSxLQUFHLEdBQUUsRUFBRSxLQUFHLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyxxQkFBTyxLQUFHLEVBQUUsS0FBRyxFQUFFLEtBQUcsSUFBRSxHQUFFLEVBQUUsS0FBRyxHQUFFLEVBQUUsS0FBRyxHQUFFLE1BQUksRUFBRSxLQUFHLEdBQUUsRUFBRSxLQUFHLEdBQUUsRUFBRSxLQUFHLEdBQUU7QUFBQSxZQUFFO0FBQUMsZ0JBQUksTUFBSSxDQUFDLElBQUcsS0FBSSxHQUFHLENBQUMsQ0FBQztBQUFFLHFCQUFTLElBQUksR0FBRTtBQUFDLG9CQUFNO0FBQUEsWUFBRztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEtBQUc7QUFBSSxrQkFBRztBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFFLENBQUM7QUFBRSx1QkFBTyxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxTQUFPLEdBQU47QUFBUyxzQkFBTSxJQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyx3QkFBTTtBQUFBLGdCQUFDLEdBQUU7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxxQkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxPQUFJO0FBQUMsb0JBQUcsRUFBRSxNQUFJLElBQUUsSUFBRSxJQUFHO0FBQUMsb0JBQUUsS0FBRyxJQUFFLEVBQUUsS0FBRztBQUFFO0FBQUEsZ0JBQVE7QUFBQyxxQkFBRyxFQUFFLFFBQU0sSUFBRSxJQUFFLE1BQUksS0FBRyxFQUFFLEtBQUcsS0FBRyxHQUFHLEdBQUc7QUFBRyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxFQUFFO0FBQUUsb0JBQUcsR0FBRyxFQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLEdBQUUsRUFBRSxLQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUcsSUFBRSxNQUFJLEVBQUUsSUFBRztBQUFDLHVCQUFJLElBQUUsSUFBRSxNQUFJLEVBQUU7QUFBRywyQkFBTztBQUFFLHdCQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQSxnQkFBQztBQUFDLHNCQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sRUFBRSxNQUFJLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFFLElBQUUsSUFBRTtBQUFFLGtCQUFHO0FBQUUsb0JBQUksSUFBRTtBQUFBO0FBQU8sb0JBQUksSUFBRSxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsT0FBSyxHQUFHLENBQUMsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFO0FBQUcsbUJBQUcsR0FBRyxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFLEtBQUcsSUFBRTtBQUFFLHFCQUFPLEVBQUUsS0FBRyxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxLQUFHLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsS0FBRyxJQUFFO0FBQUUscUJBQU8sRUFBRSxLQUFHLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEtBQUcsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE9BQUssSUFBRSxLQUFHO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFFLElBQUUsRUFBRSxLQUFHLElBQUUsR0FBRSxJQUFFLElBQUUsSUFBRSxJQUFFO0FBQUUsa0JBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQUcsRUFBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUc7QUFBRSxvQkFBSSxJQUFFO0FBQUEsY0FBQztBQUFNLG9CQUFJLElBQUU7QUFBRSxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEtBQUcsRUFBRSxLQUFHLElBQUUsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUscUJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEtBQUcsRUFBRSxLQUFHLElBQUUsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRyxPQUFPLEtBQUc7QUFBUyx3QkFBTztBQUFBLHVCQUFRO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBO0FBQVksMkJBQU87QUFBQTtBQUFBO0FBQVMsd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsMkJBQU8sRUFBRTtBQUFBLHVCQUFRO0FBQUUsMkJBQU8sRUFBRTtBQUFBO0FBQVcsMkJBQU8sR0FBRyxLQUFJLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxPQUFJO0FBQUMsb0JBQUcsT0FBTyxLQUFHO0FBQVMseUJBQU87QUFBRSx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBRyxHQUFFLEdBQUc7QUFBRSx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBYztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFHLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFjO0FBQUUsd0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQUcsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQWM7QUFBRSx3QkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBRyxHQUFFLEdBQUc7QUFBRSx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBYztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFHLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFjO0FBQUUsd0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQUcsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQWM7QUFBRSx3QkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBRyxHQUFFLEdBQUc7QUFBRSx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBYztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFHLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFjO0FBQUUsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsdUJBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFjO0FBQUUsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsdUJBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFjO0FBQUcsd0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQUcsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQWM7QUFBRyx3QkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBRyxHQUFFLEdBQUc7QUFBRSx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBYztBQUFHLHdCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFHLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFjO0FBQUcsd0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQUcsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUE7QUFBaUIsd0JBQUksS0FBRyxFQUFFO0FBQUcsdUJBQUcsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRTtBQUFHO0FBQUE7QUFBQSxjQUFTO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPO0FBQUUsc0JBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTSxDQUFDLElBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU0sQ0FBQyxJQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsSUFBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUE7QUFBVSx5QkFBTSxDQUFDLElBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsb0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTztBQUFBLGdCQUFDO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBTSx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsb0JBQUM7QUFBRSwyQkFBTSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFFLHdCQUFJLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxvQkFBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsb0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsb0JBQUM7QUFBRSwyQkFBTSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUMsR0FBRSxHQUFFLElBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLElBQUUsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUM7QUFBRSwyQkFBTSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUMsR0FBRTtBQUFBLG9CQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRTtBQUFBLG9CQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFHLHdCQUFJLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUM7QUFBRSwyQkFBTSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFHLHdCQUFJLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUM7QUFBRSwyQkFBTSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQTtBQUFVLHdCQUFJLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFPLEVBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQSxvQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsb0JBQUM7QUFBRSwyQkFBTSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLENBQUMsR0FBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUU7QUFBRSxrQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLG9CQUFHLE9BQU8sS0FBRztBQUFTLHlCQUFPO0FBQUUsd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUc7QUFBQSx1QkFBVztBQUFHLHdCQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFFO0FBQUU7QUFBQTtBQUFjLDBCQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQTtBQUFBLGNBQUU7QUFBTSx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsOEJBQU8sRUFBRTtBQUFBLDZCQUFTO0FBQUUsaUNBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLDZCQUFPO0FBQUUsOEJBQUUsR0FBRSxJQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFLEdBQUUsSUFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRSxHQUFFLElBQUU7QUFBRTtBQUFBLDZCQUFXO0FBQUcsOEJBQUUsR0FBRSxJQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHLDhCQUFFLEdBQUUsSUFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRSxHQUFFLElBQUU7QUFBRTtBQUFBO0FBQU0sMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsOEJBQU8sRUFBRTtBQUFBLDZCQUFTO0FBQUUsaUNBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLDZCQUFPO0FBQUUsOEJBQUUsR0FBRSxJQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFLEdBQUUsSUFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRSxHQUFFLElBQUU7QUFBRTtBQUFBLDZCQUFXO0FBQUcsOEJBQUUsR0FBRSxJQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHLDhCQUFFLEdBQUUsSUFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRSxHQUFFLElBQUU7QUFBRTtBQUFBO0FBQU0sMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQUU7QUFBQTtBQUFPLDhCQUFPLEVBQUU7QUFBQSw2QkFBUztBQUFFLGlDQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUE7QUFBYyw4QkFBRTtBQUFBO0FBQUUsMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQUU7QUFBQTtBQUFPLDhCQUFPLEVBQUU7QUFBQSw2QkFBUztBQUFFLGlDQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUE7QUFBYyw4QkFBRTtBQUFBO0FBQUUsMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQUU7QUFBQTtBQUFPLDhCQUFPLEVBQUU7QUFBQSw2QkFBUztBQUFFLGlDQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUE7QUFBYyw4QkFBRTtBQUFBO0FBQUUsMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQUU7QUFBQTtBQUFPLDhCQUFPLEVBQUU7QUFBQSw2QkFBUztBQUFFLGlDQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUE7QUFBYyw4QkFBRTtBQUFBO0FBQUUsMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQUU7QUFBQTtBQUFPLDhCQUFPLEVBQUU7QUFBQSw2QkFBUztBQUFFLGlDQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUE7QUFBYyw4QkFBRTtBQUFBO0FBQUUsMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQUU7QUFBQTtBQUFPLDhCQUFPLEVBQUU7QUFBQSw2QkFBUztBQUFFLGlDQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFHO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUE7QUFBYyw4QkFBRTtBQUFBO0FBQUUsMEJBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxLQUFHLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMkJBQUc7QUFBQTtBQUFPLDhCQUFPLEVBQUU7QUFBQSw2QkFBUztBQUFFLDhCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEVBQUUsRUFBRTtBQUFFLGlDQUFNLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxHQUFFLEVBQUU7QUFBQSw2QkFBTztBQUFHO0FBQUEsNkJBQVc7QUFBRyw4QkFBRTtBQUFFO0FBQUEsNkJBQVc7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QUFBQztBQUFBLHFCQUFXO0FBQUUsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRSxzQkFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFFLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUUsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRSxzQkFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFFLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsd0JBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLDRCQUFNO0FBQUcsd0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFFLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSx3QkFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw0QkFBTTtBQUFHLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUUsd0JBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNEJBQU07QUFBRyx3QkFBSSxLQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRyxzQkFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUsd0JBQUksSUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRyxzQkFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFHLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFDO0FBQUE7QUFBTSxvQkFBTTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxzQkFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRSxzQkFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxzQkFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLHdCQUFNO0FBQUEscUJBQVE7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxzQkFBRyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLHdCQUFNO0FBQUEscUJBQVE7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsR0FBRSxFQUFFLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLGtCQUFDO0FBQUMsd0JBQU07QUFBQSxxQkFBUTtBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxJQUFFLEdBQUc7QUFBRyxzQkFBRyxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQyx3QkFBTTtBQUFBLHFCQUFRO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLHNCQUFHLE9BQU8sTUFBSSxZQUFVLEdBQUcsT0FBSyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsR0FBRyxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFDLHdCQUFNO0FBQUEscUJBQVE7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsc0JBQUcsT0FBTyxNQUFJLFlBQVUsR0FBRyxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLGtCQUFDO0FBQUMsd0JBQU07QUFBQSxxQkFBUTtBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyxzQkFBRyxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQyx3QkFBTTtBQUFBLHFCQUFRO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsc0JBQUcsT0FBTyxNQUFJLFlBQVUsR0FBRyxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQyx3QkFBTTtBQUFBLHFCQUFRO0FBQUcsc0JBQUksSUFBRSxHQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLElBQUcsQ0FBQztBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLElBQUcsQ0FBQztBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUU7QUFBQSxxQkFBTztBQUFHLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsd0JBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFFLDRCQUFNO0FBQUcsd0JBQUksSUFBRSxHQUFHLElBQUcsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsSUFBRyxJQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFHLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSx3QkFBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw0QkFBTTtBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLEdBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLENBQUMsSUFBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLHFCQUFPO0FBQUcsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsc0JBQUcsR0FBRyxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLHFCQUFPO0FBQUcsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxJQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFHLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsQ0FBQyxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQztBQUFBLHFCQUFXO0FBQUcsc0JBQUksSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsc0JBQUcsT0FBTyxNQUFJO0FBQVMsNEJBQU87QUFBQSwyQkFBUztBQUFFLCtCQUFPLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSwyQkFBTztBQUFFLCtCQUFPLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSwyQkFBTztBQUFFLDRCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxJQUFHO0FBQUMsOEJBQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUUsaUNBQU0sQ0FBQyxHQUFFLENBQUMsSUFBRyxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLHdCQUFDO0FBQUMsOEJBQU07QUFBQTtBQUFXLCtCQUFPLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQTtBQUFBO0FBQU8sNEJBQU8sR0FBRztBQUFBLDJCQUFTO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsNEJBQUksS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHLEdBQUcsSUFBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywrQkFBTSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLDJCQUFPO0FBQUcsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBO0FBQVUsK0JBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBO0FBQUE7QUFBRyxvQkFBTTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFNLENBQUMsR0FBRSxDQUFDLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsa0JBQUcsS0FBRztBQUFFLHVCQUFPO0FBQUUsa0JBQUksSUFBRSxNQUFJLElBQUUsS0FBRyxJQUFHLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxzQkFBTztBQUFBLHFCQUFRO0FBQUUscUJBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLHFCQUFHLEdBQUUsR0FBRSxHQUFFLElBQUUsSUFBRSxHQUFFLENBQUM7QUFBRTtBQUFBO0FBQWMsc0JBQUksSUFBRTtBQUFFLHNCQUFHLElBQUUsR0FBRTtBQUFDLHdCQUFJLElBQUU7QUFBRSx1QkFBRyxHQUFFLENBQUMsTUFBSSxNQUFJLEdBQUcsR0FBRSxDQUFDLE1BQUksTUFBSSxHQUFHLEdBQUUsQ0FBQyxNQUFJLE9BQUssSUFBRSxHQUFFLElBQUUsSUFBRyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsR0FBRSxJQUFFLElBQUUsQ0FBQztBQUFBLGtCQUFFO0FBQU0sd0JBQUU7QUFBRSxzQkFBRyxHQUFFO0FBQUMsd0JBQUksSUFBRTtBQUFFLHdCQUFHLElBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxNQUFJLElBQUc7QUFBQywwQkFBSSxJQUFFO0FBQUUsNkJBQUssR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQyxNQUFJLE9BQUssSUFBRSxHQUFFLElBQUUsSUFBRyxNQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsR0FBRSxJQUFFLElBQUUsQ0FBQztBQUFBLG9CQUFFO0FBQU0sMEJBQUU7QUFBRSx5QkFBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLElBQUUsSUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFBO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcs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LDZCQUFXO0FBQUUsOEJBQUksSUFBRTtBQUFFO0FBQUE7QUFBTSx3QkFBRSxLQUFHLEVBQUUsS0FBRyxJQUFFO0FBQUUsMEJBQUksSUFBRSxJQUFFLElBQUU7QUFBRSwwQkFBRyxNQUFJLEdBQUU7QUFBQyw0QkFBSSxJQUFFO0FBQUU7QUFBQSxzQkFBUTtBQUFDO0FBQUEsb0JBQUs7QUFBQyxzQkFBRyxFQUFFLE9BQUssR0FBRyxDQUFDO0FBQUUsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBQSx1QkFBTTtBQUFDLHdCQUFJLElBQUUsR0FBRyxFQUFFLEVBQUU7QUFBRSxzQkFBRSxLQUFHO0FBQUUsd0JBQUksS0FBRyxHQUFHLENBQUMsSUFBRSxJQUFFLEdBQUUsS0FBRztBQUFFLHdCQUFHLEVBQUUsS0FBRztBQUFHLCtCQUFRLEtBQUcsUUFBSztBQUFDLDRCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxLQUFHO0FBQUUsNEJBQUcsTUFBSTtBQUFHLGlDQUFLLEtBQUcsS0FBRyxJQUFFLE1BQUksS0FBRyxLQUFHLElBQUUsS0FBRztBQUFBLGlDQUFVLE1BQUk7QUFBRyxnQ0FBSSxLQUFHLEtBQUcsSUFBRSxLQUFHO0FBQUEsaUNBQVUsTUFBSTtBQUFHLCtCQUFHO0FBQUE7QUFBTyxrQ0FBTztBQUFBLGlDQUFTO0FBQUUsaUNBQUcsR0FBRSxFQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsTUFBSyxHQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLGlDQUFXO0FBQUUsaUNBQUcsR0FBRSxFQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsTUFBSyxHQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLGlDQUFXO0FBQUcsaUNBQUcsR0FBRSxFQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsTUFBSyxHQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLGlDQUFXO0FBQUcsaUNBQUcsR0FBRSxFQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsTUFBSyxHQUFHLEdBQUUsRUFBRSxJQUFHLEVB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Qyx5QkFBTyxHQUFHLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLE1BQUs7QUFBQSxnQkFBQyxHQUFFLElBQUUsQ0FBQyxLQUFJLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUUsR0FBRSxJQUFFO0FBQUUsb0JBQUcsRUFBRSxJQUFFO0FBQUcsMkJBQVEsSUFBRSxPQUFJO0FBQUMsd0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHlCQUFHLElBQUUsS0FBRyxPQUFLLE1BQUksRUFBRSxPQUFLLE1BQUksRUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLElBQUcsRUFBRSxNQUFJLEtBQUksRUFBRSxDQUFDO0FBQUUsd0JBQUksSUFBRSxJQUFFLElBQUU7QUFBRSx3QkFBRyxNQUFJLEdBQUU7QUFBQywwQkFBSSxJQUFFO0FBQUU7QUFBQSxvQkFBUTtBQUFDO0FBQUEsa0JBQUs7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUcsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRyxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUcsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUU7QUFBSTtBQUFBO0FBQWMsc0JBQUksSUFBRTtBQUFBO0FBQUkscUJBQU8sR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFHLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUcsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUEscUJBQU87QUFBRyxzQkFBSSxJQUFFO0FBQUk7QUFBQTtBQUFjLHNCQUFJLElBQUU7QUFBQTtBQUFJLHFCQUFPLEdBQUcsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRyxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFHLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUEscUJBQU87QUFBRyxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUcsc0JBQUksSUFBRTtBQUFJO0FBQUE7QUFBYyxzQkFBSSxJQUFFO0FBQUE7QUFBSSxxQkFBTyxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUU7QUFBSTtBQUFBLHFCQUFXO0FBQUcsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBRyxzQkFBSSxJQUFFO0FBQUk7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUcsc0JBQUksSUFBRTtBQUFJO0FBQUEscUJBQVc7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUU7QUFBSTtBQUFBO0FBQWMsc0JBQUksSUFBRTtBQUFBO0FBQUkscUJBQU8sR0FBRyxHQUFFLElBQUksR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFFLHdCQUFJLEtBQUc7QUFBRztBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRztBQUFHO0FBQUE7QUFBYyx3QkFBSSxLQUFHO0FB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OEJBQUksS0FBRyxHQUFHLENBQUM7QUFBRSw2QkFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsSUFBRyxHQUFFLE1BQUksS0FBRyxLQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFFLE9BQUssS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRSxNQUFJLEtBQUcsS0FBRyxLQUFHLENBQUM7QUFBRSw4QkFBSSxLQUFHO0FBQUc7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsNkJBQUcsSUFBRyxHQUFFLEVBQUU7QUFBRSw4QkFBSSxLQUFHO0FBQUc7QUFBQTtBQUFNLDBCQUFJLElBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLElBQUUsSUFBRSxHQUFFLEVBQUU7QUFBRSw2QkFBTyxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRywyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU87QUFBQSxvQkFBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEdBQUc7QUFBQSx1QkFBTztBQUFFLDJCQUFPLEdBQUcsR0FBRSxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEtBQUksRUFBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxLQUFJLEVBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUUsMkJBQU8sR0FBRyxHQUFFLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsS0FBSSxFQUFFLEVBQUU7QUFBQSx1QkFBTztB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U0FBUyxJQUFHLElBQUcsR0FBRTtBQUFDLCtCQUFPLFNBQVMsR0FBRTtBQUFDLGlDQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFBLHdCQUFDO0FBQUEsc0JBQUMsRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFO0FBQUc7QUFBQSxvQkFBUTtBQUFDLHdCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsSUFBRSxHQUFFLElBQUUsU0FBUyxJQUFHLElBQUcsSUFBRztBQUFDLDZCQUFPLFNBQVMsSUFBRztBQUFDLCtCQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFBLHNCQUFDO0FBQUEsb0JBQUMsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFO0FBQUc7QUFBQSx1QkFBYztBQUFHLDBCQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQSx1QkFBTztBQUFHLHdCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRztBQUFFLDJCQUFPLFNBQVMsSUFBRztBQUFDLDZCQUFPLEdBQUcsR0FBRSxJQUFHLEVBQUU7QUFBQSxvQkFBQztBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxFQUFFO0FBQUcsMkJBQU8sU0FBUyxJQUFHO0FBQUMsNkJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsS0FBSSxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsb0JBQUM7QUFBQSx1QkFBTztBQUFHLHdCQUFJLEtBQUcsRUFBRTtBQUFHLDJCQUFPLFNBQVMsSUFBRztBQUFDLDZCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRTtBQUFBLG9CQUFDO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUU7QUFBRyx3QkFBRyxPQUFPLE1BQUk7QUFBUyw4QkFBTztBQUFBLDZCQUFTO0FBQUUsaUNBQU8sSUFBRSxLQUFHLEdBQUcsSUFBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLGlDQUFPLElBQUUsS0FBRyxHQUFHLElBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsNkJBQU87QUFBRSxnQ0FBSyxDQUFDLEdBQUUsSUFBRyxHQUFHO0FBQUE7QUFBVSxpQ0FBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUE7QUFBTyw4QkFBTyxHQUFHO0FBQUEsNkJBQVM7QUFBRSxpQ0FBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLDZCQUFPO0FBQUUsaUNBQU8sSUFBRSxLQUFHLEdBQUcsSUFBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLGlDQUFPLElBQUUsS0FBRyxHQUFHLElBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsNkJBQU87QUFBRSxpQ0FBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLDZCQUFPO0FBQUUsaUNBQU8sSUFBRSxLQUFHLEdBQUcsSUFBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLGlDQUFPLElBQUUsS0FBRyxHQUFHLElBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsNkJBQU87QUFBRSxpQ0FBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLDZCQUFPO0FBQUUsaUNBQU8sSUFBRSxLQUFHLEdBQUcsSUFBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFFLGlDQUFPLElBQUUsS0FBRyxHQUFHLElBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsNkJBQU87QUFBRSw4QkFBSSxLQUFHLEdBQUc7QUFBRyxpQ0FBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxFQUFFLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSw2QkFBTztBQUFHLGlDQUFPLElBQUUsS0FBRyxHQUFHLElBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUE7QUFBVSxpQ0FBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUE7QUFBVSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSwyQkFBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEVBQUUsSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUE7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU8sSUFBRSxLQUFHLEdBQUcsSUFBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQU8sU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQU8sU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQU8sU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUseUJBQU8sU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLFNBQVMsSUFBRyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEscUJBQU87QUFBRyxzQkFBSSxLQUFHLEVBQUU7QUFBRyx5QkFBTyxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLEdBQUUsR0FBRSxJQUFHLENBQUM7QUFBQSxrQkFBQztBQUFBLHFCQUFPO0FBQUcsd0JBQUssQ0FBQyxHQUFFLElBQUcsR0FBRztBQUFBO0FBQVUsd0JBQUssQ0FBQyxHQUFFLElBQUcsR0FBRztBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLElBQUUsS0FBRyxHQUFHLElBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sU0FBUyxHQUFFO0FBQUMseUJBQU8sSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSxxQkFBTyxJQUFFLEtBQUcsR0FBRyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFH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QUMscUJBQU8sRUFBRSxFQUFFLEtBQUksQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxLQUFHLEVBQUUsS0FBRyxJQUFFLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLE1BQUksR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUc7QUFBRSxxQkFBTyxLQUFHLEdBQUcsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxpQkFBRyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSTtBQUFFLGtCQUFJLEtBQUcsRUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxLQUFHLElBQUUsSUFBRTtBQUFFLHFCQUFPLEVBQUUsTUFBSSxHQUFFLEVBQUUsS0FBRyxFQUFFLEtBQUcsRUFBRSxNQUFJLEdBQUUsRUFBRSxFQUFFLEtBQUksRUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsS0FBSSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcscUJBQU8sR0FBRyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsS0FBRyxFQUFFLEtBQUcsSUFBRSxHQUFFLEVBQUUsRUFBRSxLQUFJLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyx5QkFBTztBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFJLElBQUcsSUFB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QUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxtQkFBSSxHQUFHLEdBQUUsRUFBRSxFQUFFLE9BQUk7QUFBQyxvQkFBRyxJQUFFLEVBQUUsS0FBSTtBQUFDLHFCQUFHLEdBQUUsQ0FBQztBQUFFO0FBQUEsZ0JBQVE7QUFBQyx1QkFBTyxFQUFFLE1BQUksSUFBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSSxHQUFFLEVBQUUsTUFBSSxHQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxHQUFHLEVBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxHQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsTUFBSSxHQUFFLEVBQUUsTUFBSSxHQUFFLEVBQUUsS0FBRyxFQUFFLElBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxNQUFJLEVBQUUsTUFBSSxJQUFFO0FBQUUscUJBQU8sS0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsS0FBSSxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsT0FBSTtBQUFDLG9CQUFJLElBQUUsSUFBRSxJQUFFLElBQUU7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUcsS0FBRyxHQUFFO0FBQUMsdUJBQUcsRUFBRSxLQUFJLElBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksSUFBRSxJQUFFLEtBQUc7QUFBRTtBQUFBLGtCQUFRO0FBQUMseUJBQU8sR0FBRyxFQUFFLEtBQUksSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE9BQUssS0FBRyxHQUFHLEtBQUksR0FBRyxFQUFFLElBQUcsR0FBRyxDQUFDLElBQUU7QUFBQSxZQUFHO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sRUFBRSxPQUFLLEtBQUcsR0FBRyxLQUFJLEdBQUcsRUFBRSxJQUFHLEdBQUcsQ0FBQyxJQUFFO0FBQUEsWUFBRztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFHLEtBQUksQ0FBQztBQUFFLGlCQUFHLEdBQUUsQ0FBQztBQUFFLGtCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsaUJBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksS0FBSSxLQUFJLEtBQUksQ0FBQztBQUFFLHFCQUFPLEVBQUUsTUFBSSxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsS0FBSSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxFQUFFLE1BQUksU0FBUyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsRUFBRSxNQUFJLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxLQUFHLEtBQUcsS0FBRyxLQUFHLEdBQUcsR0FBRyxDQUFDLElBQUUsSUFBRSxLQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFHO0FBQUEsY0FBQyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMscUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksTUFBSTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRztBQUFBLFlBQUM7QUFBQyxnQkFBSSxNQUFJLEdBQUcsQ0FBQyxHQUFFLE1BQUksR0FBRyxHQUFHLEdBQUUsTUFBSSxHQUFHLEVBQUU7QUFBRSxlQUFHLEdBQUc7QUFBRSxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxnQkFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsS0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxJQUFFLElBQUUsR0FBRSxJQUFFO0FBQUUsdUJBQU8sS0FBRyxLQUFHLEdBQUcsRUFBRSxLQUFHLElBQUUsS0FBRyxLQUFHLEdBQUcsRUFBRSxJQUFHLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyxxQkFBTyxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFO0FBQUUsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU87QUFBRSxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyxzQkFBRyxHQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsT0FBTyxLQUFHO0FBQVMsNEJBQU87QUFBQSwyQkFBUTtBQUFFLCtCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsMkJBQU87QUFBRSwrQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSwyQkFBTztBQUFFLDRCQUFJLElBQUUsRUFBRSxNQUFJLEVBQUUsTUFBSSxJQUFFO0FBQUUsK0JBQU8sS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSwyQkFBTztBQUFFLCtCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLEtBQUksQ0FBQztBQUFBLDJCQUFPO0FBQUUsK0JBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQTtBQUFVLCtCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUE7QUFBQTtBQUFPLDRCQUFPLEVBQUU7QUFBQSwyQkFBUztBQUFFLDRCQUFJLElBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsR0FBRSxJQUFFLEVBQUUsTUFBSSxFQUFFLE1BQUksSUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRywrQkFBTyxLQUFHLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEVBQUUsTUFBSSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxHQUFHLENBQUMsSUFBRSxJQUFFLEtBQUcsR0FBRyxDQUFDLElBQUUsQ0FBQyxDQUFDO0FBQUEsMkJBQU87QUFBRSwrQkFBTztBQUFBO0FBQVUsNEJBQUksSUFBRSxFQUFFO0FBQUcsK0JBQU8sR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQztBQUFBO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxzQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxJQUFHLENBQUMsQ0FBQztBQUFFLHNCQUFFLFFBQU0sR0FBRyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxLQUFJLENBQUM7QUFBRyx3QkFBSSxJQUFFLEVBQUU7QUFBSSwyQkFBTyxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQUcsR0FBRSxDQUFDO0FBQUUsc0JBQUksSUFBRSxJQUFJLEdBQUcsSUFBRyxDQUFDLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdB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QUc7QUFBRSxzQkFBSSxJQUFFLElBQUUsSUFBRTtBQUFFLHNCQUFHLE1BQUksR0FBRTtBQUFDLHdCQUFJLElBQUU7QUFBRTtBQUFBLGtCQUFRO0FBQUM7QUFBQSxnQkFBSztBQUFDLHFCQUFNLENBQUMsR0FBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRyxJQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRyxTQUFPLEdBQUUsSUFBRSxJQUFFLElBQUUsSUFBRTtBQUFFLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLHFCQUFHLEtBQUcsR0FBRyxFQUFFLFNBQU8sSUFBRSxJQUFFLEtBQUcsTUFBSSxHQUFHLEVBQUUsU0FBTyxJQUFFLElBQUUsS0FBRyxPQUFLLElBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxJQUFHLEtBQUcsR0FBRyxHQUFHLEdBQUUsRUFBRSxLQUFHO0FBQUUsb0JBQUksSUFBRTtBQUFBLGNBQUM7QUFBTSxvQkFBSSxJQUFFO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRyxTQUFPO0FBQUUscUJBQU8sR0FBRyxHQUFFLElBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBRztBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFHLEtBQUksR0FBRSxFQUFFLEVBQUU7QUFBRSx1QkFBTztBQUFBLGNBQUMsU0FBTyxHQUFOO0FBQVMsb0JBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxNQUFJLElBQUc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBRyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRTtBQUFBLGdCQUFDO0FBQUMsc0JBQU07QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFJLE1BQUssRUFBRSxHQUFHLEtBQUksR0FBRSxFQUFFLEVBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxDQUFDLEVBQUUsSUFBRSxLQUFHLEdBQUUsTUFBSSxFQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLGtCQUFHO0FBQUMsb0JBQUksSUFBRSxJQUFJLEdBQUUsRUFBRSxFQUFFO0FBQUUsdUJBQU87QUFBQSxjQUFDLFNBQU8sR0FBTjtBQUFTLG9CQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxJQUFHLENBQUMsRUFBRSxJQUFFO0FBQUcsc0JBQU07QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLE1BQUk7QUFBRSx1QkFBTztBQUFFLHVCQUFRLElBQUUsRUFBRSxTQUFPLElBQUUsSUFBRSxHQUFFLElBQUUsT0FBSTtBQUFDLG9CQUFHLEtBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLElBQUUsSUFBRSxHQUFFLElB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LEdBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFHLEVBQUUsSUFBRyxFQUFFLEtBQUcsRUFBRTtBQUFHLGtCQUFJLElBQUUsR0FBRSxLQUFHLEVBQUU7QUFBRyxnQkFBRSxLQUFHLEdBQUcsU0FBUyxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLEVBQUUsSUFBRyxDQUFDLElBQUUsS0FBRyxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQyxHQUFFLElBQUcsQ0FBQztBQUFFLGtCQUFJLEtBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsZ0JBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsS0FBRyxHQUFHLFNBQVMsR0FBRSxJQUFHO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUcsS0FBSSxJQUFHLEVBQUUsRUFBRTtBQUFFLHVCQUFPLEdBQUcsR0FBRyxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsS0FBRyxJQUFHLEVBQUUsS0FBRztBQUFHLGtCQUFJLEtBQUcsRUFBRTtBQUFHLGdCQUFFLEtBQUcsR0FBRyxTQUFTLEdBQUUsSUFBRztBQUFDLHVCQUFPLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRSxLQUFHLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUUsa0JBQUksS0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsR0FBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxJQUFJLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQU8sSUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxJQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxNQUFJO0FBQUUsb0JBQUksSUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsbUJBQU07QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRyxLQUFJLENBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSxTQUFPLElBQUUsSUFBRSxHQUFFLElBQUU7QUFBRSxvQkFBRyxFQUFFLElBQUU7QUFBRywyQkFBUSxJQUFFLE9BQUk7QUFBQyx3QkFBSSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUU7QUFBRSxzQkFBRSxLQUFHLEdBQUcsR0FBRyxJQUFHLEVBQUUsSUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxFQUFFLEVBQUU7QUFBRSx3QkFBSSxJQUFFLElBQUUsSUFBRTtBQUFFLHdCQUFHLE1BQUksR0FBRTtBQUFDLDBCQUFJLElBQUU7QUFBRTtBQUFBLG9CQUFRO0FBQUM7QUFBQSxrQkFBSztBQUFDLG9CQUFJLElBQUU7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxFQUFFLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEdBQUcsTUFBSSxHQUFHLEtBQUcsRUFBRSxLQUFHLEtBQUcsSUFBRSxHQUFFLEVBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxNQUFJLEdBQUcsRUFBRSxJQUFHLENBQUMsRUFBRSxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUc7QUFBRSx1QkFBTztBQUFFLGtCQUFJLElBQUUsR0FBRyxJQUFHLEVBQUUsRUFBRTtBQUFFLHFCQUFPLEVBQUUsS0FBRyxFQUFFLElBQUcsSUFBSSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRztBQUFFLHVCQUFPO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsTUFBSTtBQUFFLHlCQUFRLElBQUUsT0FBSTtBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUU7QUFBRyxzQkFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLGtCQUFRO0FBQUM7QUFBQSxnQkFBSztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFFLG1CQUFJLElBQUUsSUFBRSxPQUFLLEtBQUcsR0FBRyxNQUFJLEdBQUcsRUFBRSxJQUFHLENBQUMsRUFBRSxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxJQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRTtBQUFBLGNBQUM7QUFBQyxrQkFBRyxDQUFDO0FBQUUsb0JBQUksSUFBRTtBQUFFLHFCQUFPLEdBQUcsRUFBRSxJQUFHLENBQUMsRUFBRSxJQUFFLEtBQUcsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsU0FBTyxPQUFJO0FBQUMsb0JBQUcsRUFBRSxLQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsR0FBRSxDQUFDLEVBQUUsSUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsc0JBQUU7QUFBSyx3QkFBSSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEdBQUUsRUFBRSxFQUFFLElBQUU7QUFBQSxrQkFBRyxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUUsc0JBQUcsT0FBTyxLQUFHO0FBQVMsNEJBQU87QUFBQSwyQkFBUTtBQUFFLDRCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTztBQUFBLDBCQUFFO0FBQUEsd0JBQUMsRUFBRSxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxHQUFHLElBQUU7QUFBQSwwQkFBRztBQUFBLHdCQUFDLEVBQUUsQ0FBQztBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLG1DQUFPLEdBQUcsSUFBRSxJQUFJLElBQUU7QUFBQSwwQkFBRztBQUFBLHdCQUFDLEVBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxFQUFFLEdBQUcsR0FBRyxJQUFFLEtBQUksRUFBRTtBQUFBLDBCQUFDO0FBQUEsd0JBQUMsRUFBRSxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUcsSUFBRztBQUFDLG1DQUFPLEdBQUcsSUFBRSxNQUFJLElBQUc7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsQ0FBQztBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLG1DQUFPLEVBQUUsSUFBRyxFQUFFO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLG1DQUFPLEVBQUUsSUFBRyxHQUFHLElBQUUsR0FBRztBQUFBLDBCQUFDO0FBQUEsd0JBQUMsRUFBRSxHQUFFLENBQUM7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRyxJQUFHO0FBQUMsaUNBQU8sU0FBUyxJQUFHO0FBQUMsbUNBQU8sRUFBRSxJQUFHLEdBQUcsSUFBRSxJQUFJLElBQUUsR0FBRztBQUFBLDBCQUFDO0FBQUEsd0JBQUMsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLG1DQUFPLEVBQUUsSUFBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLEtBQUksRUFBRSxDQUFDO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLElBQUcsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLElBQUcsSUFBRyxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUUsU0FBUyxJQUFHLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLG1DQUFPLEVBQUUsSUFBRyxJQUFHLEdBQUcsSUFBRSxHQUFHO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxFQUFFLElBQUcsSUFBRyxHQUFHLElBQUUsSUFBSSxJQUFFLEdBQUc7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxFQUFFLElBQUcsSUFBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLEtBQUksRUFBRSxDQUFDO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLEdBQUUsSUFBRyxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUUsU0FBUyxJQUFHLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLG1DQUFPLEVBQUUsSUFBRyxHQUFHLElBQUUsS0FBSSxFQUFFO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxFQUFFLElBQUcsR0FBRyxJQUFFLElBQUksSUFBRSxLQUFJLEVBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxFQUFFLElBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRSxLQUFJLEVBQUUsR0FBRSxFQUFFO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRyxJQUFHO0FBQUMsaUNBQU8sU0FBUyxJQUFHO0FBQUMsbUNBQU8sRUFBRSxHQUFHLEdBQUcsSUFBRSxLQUFJLElBQUcsRUFBRTtBQUFBLDBCQUFDO0FBQUEsd0JBQUMsRUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxTQUFTLElBQUc7QUFBQyxtQ0FBTyxFQUFFLEdBQUcsR0FBRyxJQUFFLEtBQUksSUFBRyxHQUFHLElBQUUsR0FBRztBQUFBLDBCQUFDO0FBQUEsd0JBQUMsRUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUcsSUFBRyxJQUFHO0FBQUMsaUNBQU8sU0FBUyxJQUFHO0FBQUMsbUNBQU8sRUFBRSxHQUFHLEdBQUcsSUFBRSxLQUFJLElBQUcsR0FBRyxJQUFFLElBQUksSUFBRSxHQUFHO0FBQUEsMEJBQUM7QUFBQSx3QkFBQyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRyxJQUFHO0FBQUMsaUNBQU8sU0FBUyxJQUFHO0FBQUMsZ0NBQUksS0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLEtBQUksRUFBRTtBQUFFLG1DQUFPLEVBQUUsR0FBRyxHQUFHLElBQUUsS0FBSSxJQUFHLEVBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsSUFBRyxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLENBQUM7QUFBRSwyQkFBRyxDQUFDO0FBQUUsNEJBQUksSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLG1DQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUM7QUFBRSwyQkFBRyxDQUFDO0FBQUUsNEJBQUksSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLGdDQUFJLEtBQUcsR0FBRyxJQUFFO0FBQUksbUNBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRTtBQUFBLDBCQUFDO0FBQUEsd0JBQUMsRUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUUsMkJBQUcsQ0FBQztBQUFFLDRCQUFJLElBQUUsU0FBUyxJQUFHLElBQUcsSUFBRztBQUFDLGlDQUFPLFNBQVMsSUFBRztBQUFDLGdDQUFJLEtBQUcsR0FBRyxJQUFFLElBQUksSUFBRTtBQUFJLG1DQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsSUFBRyxJQUFHLEVBQUU7QUFBRTtBQUFBO0FBQWMsNEJBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQztBQUFFLDJCQUFHLENBQUM7QUFBRSw0QkFBSSxJQUFFLFNBQVMsSUFBRyxJQUFHO0FBQUMsaUNBQU8sU0FBUyxJQUFHO0FBQUMsZ0NBQUksS0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLEtBQUksRUFBRTtBQUFFLG1DQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsSUFBRyxDQUFDO0FBQUE7QUFBQTtBQUFPLHdCQUFJLElBQUU7QUFBRSxxQkFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBSztBQUFBLGdCQUFRO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLFNBQU8sR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxJQUFFLElBQUUsR0FBRSxJQUFFO0FBQUUsa0JBQUcsRUFBRSxJQUFFO0FBQUcseUJBQVEsSUFBRSxPQUFJO0FBQUMsc0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxFQUFFLElBQUU7QUFBRyxzQkFBRyxPQUFPLEtBQUc7QUFBUyw0QkFBTztBQUFBLDJCQUFRO0FBQUUsNEJBQUksSUFBRSxTQUFTLEdBQUU7QUFBQyxtQ0FBUyxFQUFFLEdBQUU7QUFBQyxnQ0FBSSxJQUFFLEVBQUUsSUFBRTtBQUFHLGdDQUFHLE1BQUk7QUFBRSxvQ0FBSyxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUUsbUNBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSwwQkFBQztBQUFDLGlDQUFPO0FBQUEsd0JBQUMsRUFBRSxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsQ0FBQztBQUFFLDBCQUFFLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsaUNBQU8sU0FBUyxHQUFFO0FBQUMsZ0NBQUksSUFBRSxFQUFFLElBQUU7QUFBRyxnQ0FBRyxNQUFJO0FBQUUsb0NBQUssQ0FBQyxHQUFFLElBQUcsQ0FBQztBQUFFLGdDQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsbUNBQU8sT0FBSyxJQUFFLEVBQUUsS0FBRyxPQUFLLElBQUUsSUFBSSxDQUFDLElBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFFLDRCQUFJLElBQUU7QUFBRTtBQUFBO0FBQWMsNEJBQUksSUFBRSxTQUFTLEdBQUU7QUFBQyxnQ0FBSyxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUEsd0JBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUE7QUFBQTtBQUFPLHdCQUFJLElBQUUsRUFBRSxPQUFLLElBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxJQUFFLEVBQUU7QUFBRyxvQkFBRSxJQUFFLEtBQUc7QUFBRSxzQkFBSSxJQUFFLElBQUUsSUFBRTtBQUFFLHNCQUFHLE1BQUksR0FBRTtBQUFDLHdCQUFJLElBQUU7QUFBRTtBQUFBLGtCQUFRO0FBQUM7QUFBQSxnQkFBSztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLElBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxJQUFFLEdBQUcsR0FBRztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsR0FBRyxDQUFDLE1BQUksS0FBRyxFQUFFLFNBQU8sS0FBRyxFQUFFLFNBQU8sR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxTQUFPLElBQUUsSUFBRSxHQUFFLElBQUU7QUFBRSxvQkFBRyxFQUFFLElBQUU7QUFBRywyQkFBUSxJQUFFLE9BQUk7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRSxJQUFHLElBQUUsR0FBRyxHQUFFLENBQUMsRUFBRSxJQUFFO0FBQUcsd0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQUcsTUFBSSxHQUFFO0FBQUMsNEJBQUksSUFBRTtBQUFFLDRCQUFHLEdBQUcsQ0FBQyxNQUFJLEtBQUcsRUFBRSxTQUFPLE1BQUk7QUFBRSxtQ0FBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLElBQUUsUUFBSztBQUFDLDhCQUFFLElBQUUsS0FBRyxFQUFFLElBQUU7QUFBRyxnQ0FBSSxJQUFFLElBQUUsSUFBRTtBQUFFLGdDQUFHLE1BQUksR0FBRTtBQUFDLGtDQUFJLElBQUU7QUFBRTtBQUFBLDRCQUFRO0FBQUM7QUFBQSwwQkFBSztBQUFBO0FBQU0sOEJBQUU7QUFBRSw0QkFBRztBQUFFLGdDQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQSxzQkFBQztBQUFNLDBCQUFFLElBQUUsS0FBRztBQUFBO0FBQU8sd0JBQUUsT0FBSyxLQUFHLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRSxJQUFHLENBQUM7QUFBRSx3QkFBSSxJQUFFLElBQUUsSUFBRTtBQUFFLHdCQUFHLE1BQUksR0FBRTtBQUFDLDBCQUFJLElBQUU7QUFBRTtBQUFBLG9CQUFRO0FBQUM7QUFBQSxrQkFBSztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLG9CQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxJQUFFLEdBQUcsRUFBRSxJQUFHLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRztBQUFBLFlBQUM7QUFBQyxnQkFBRztBQUFDLGlCQUFHLEdBQUc7QUFBQSxZQUFDLFNBQU8sR0FBTjtBQUFTLGtCQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsTUFBSTtBQUFHLHNCQUFNO0FBQUEsWUFBQztBQUFDLGdCQUFHO0FBQUMsaUJBQUcsR0FBRztBQUFBLFlBQUMsU0FBTyxHQUFOO0FBQVMsa0JBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxNQUFJO0FBQUcsc0JBQU07QUFBQSxZQUFDO0FBQUMsZUFBRyxJQUFHLEdBQUcsS0FBRyxHQUFHLElBQUcsR0FBRztBQUFFLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sTUFBSSxLQUFHLEVBQUUsS0FBRyxNQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSSxNQUFJLEtBQUcsS0FBRyxFQUFFLEdBQUUsRUFBRSxNQUFJLE1BQUksSUFBRSxLQUFHLEVBQUUsR0FBRSxFQUFFLEtBQUcsSUFBRSxFQUFFLEtBQUcsTUFBSSxLQUFHLEVBQUUsS0FBRyxNQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSSxNQUFJLElBQUUsS0FBRyxFQUFFLEdBQUUsRUFBRSxLQUFHLElBQUUsRUFBRSxLQUFHLE1BQUksS0FBRyxFQUFFLEtBQUcsTUFBSSxJQUFFLENBQUMsR0FBRSxFQUFFLEtBQUcsSUFBRSxFQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsSUFBRyxLQUFHLE1BQUssS0FBRztBQUFPLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLE1BQUksS0FBRyxJQUFFO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUksR0FBRyxPQUFNLEtBQUcsQ0FBQyxJQUFHLEtBQUksR0FBRyxDQUFDLENBQUMsR0FBRSxNQUFJLEdBQUc7QUFBTSxnQkFBSSxLQUFJLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQU07QUFBQSxZQUFDO0FBQUMsZUFBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE9BQUssS0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsSUFBRTtBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sYUFBYSxNQUFJLElBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUksR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUksR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUksR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUksR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUksR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUksR0FBRyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLEdBQUcsS0FBSSxHQUFHO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUscUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sR0FBRyxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxHQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUUsZ0JBQUksS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEdBQUcsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxHQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUUscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBRSxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRyxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxHQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsR0FBRyxLQUFJLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUUsZ0JBQUksS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxHQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxxQkFBTyxHQUFHLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBRSxFQUFFLEdBQUUsR0FBRyxJQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsR0FBRyxLQUFJLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxJQUFHO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsSUFBRztBQUFDLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHO0FBQUUseUJBQU8sR0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLDBCQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLDZCQUFTLEdBQUcsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxHQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUksSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLGtCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFFLElBQUcsU0FBUyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLG1CQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxJQUFHLEdBQUc7QUFBQSxnQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLHNCQUFJLElBQUUsRUFBRTtBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsbUJBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLElBQUcsR0FBRztBQUFBLGdCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRTtBQUFFLHlCQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSw2QkFBUyxFQUFFLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUMsMkJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGtCQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUU7QUFBRSxpQkFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFTLEVBQUUsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLEdBQUcsS0FBSSxJQUFHLElBQUcsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLEdBQUcsS0FBSSxJQUFHLElBQUcsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFHLEVBQUUs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QU87QUFBRSxzQkFBSSxLQUFHLEVBQUU7QUFBRyxzQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxJQUFHO0FBQUMsc0JBQUUsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRSxHQUFHLElBQUcsS0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLDZCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsb0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBRSxzQkFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsa0JBQUM7QUFBTSxzQkFBRSxHQUFFLEdBQUc7QUFBRSx5QkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHNCQUFJLEtBQUcsRUFBRTtBQUFHLHNCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLElBQUc7QUFBQyxzQkFBRSxHQUFFLEdBQUc7QUFBRSx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxvQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFFLHNCQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxrQkFBQztBQUFNLHNCQUFFLEdBQUUsR0FBRztBQUFFLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsc0JBQUksS0FBRyxFQUFFO0FBQUcsc0JBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsSUFBRztBQUFDLHNCQUFFLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUUsR0FBRyxJQUFHLEtBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLG9CQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUUsc0JBQUUsR0FBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGtCQUFDO0FBQU0sc0JBQUUsR0FBRSxHQUFHO0FBQUUseUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxzQkFBSSxLQUFHLEVBQUU7QUFBRyxzQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxJQUFHO0FBQUMsc0JBQUUsR0FBRSxHQUFHO0FBQUUsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLDZCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsb0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBRSxzQkFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsa0JBQUM7QUFBTSxzQkFBRSxHQUFFLEdBQUc7QUFBRSx5QkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHNCQUFJLEtBQUcsRUFBRTtBQUFHLHNCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLElBQUc7QUFBQyxzQkFBRSxHQUFFLEdBQUc7QUFBRSx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxvQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFFLHNCQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxrQkFBQztBQUFNLHNCQUFFLEdBQUUsR0FBRztBQUFFLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsc0JBQUksS0FBRyxFQUFFO0FBQUcsc0JBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsSUFBRztBQUFDLHNCQUFFLEdBQUUsR0FBRztBQUFFLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLG9CQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUUsc0JBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGtCQUFDO0FBQU0sc0JBQUUsR0FBRSxHQUFHO0FBQUUseUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBVSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFBLFlBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxPQUFLO0FBQUUsdUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsbUJBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRUMsSUFBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUU7QUFBRSxpQkFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRTtBQUFFLHlCQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSw2QkFBUyxFQUFFLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUMsMkJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGtCQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUU7QUFBRSxpQkFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRTtBQUFFLHlCQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSw2QkFBUyxFQUFFLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUMsMkJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGtCQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsR0FBRyxLQUFJLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElB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QVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLEtBQUcsRUFBRTtBQUFHLGtCQUFHLElBQUc7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxJQUFHLEdBQUc7QUFBQSxnQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsSUFBRyxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUU7QUFBRSxpQkFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUE7QUFBVSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBO0FBQUEsWUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsSUFBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLElBQUcsR0FBRztBQUFBLGdCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsdUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sR0FBRyxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxH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LEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLDJCQUFTLEVBQUUsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQyx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFO0FBQUUseUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLDZCQUFTLEVBQUUsR0FBRTtBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsa0JBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFO0FBQUUseUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLDZCQUFTLEVBQUUsR0FBRTtBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsa0JBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUU7QUFBRSx1QkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsdUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsMkJBQVMsRUFBRSxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxnQkFBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLHFCQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUU7QUFBRSx5QkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsNkJBQVMsRUFBRSxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFDLDJCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxrQkFBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsaUJBQUcsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEdBQUcsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQUEsWUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyxzQkFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxLQUFHLEdBQUc7QUFBRyx5QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxJQUFHLEdBQUc7QUFBQSxnQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUksSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksS0FBRyxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLEtBQUc7QUFBRSxpQkFBRyxTQUFTLElBQUcsSUFBRztBQUFDLHNCQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLEtBQUcsR0FBRztBQUFHLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUU7QUFBQSxjQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxLQUFHLEVBQUU7QUFBRyxrQkFBRyxJQUFHO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLEtBQUcsRUFBRTtBQUFHLGtCQUFHLElBQUc7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxJQUFHLEdBQUc7QUFBQSxnQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLGtCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFFLEVBQUUsR0FBRSxHQUFHLElBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEdBQUcsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFO0FBQUcsbUJBQUcsSUFBRyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLG1CQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsR0FBRyxLQUFJLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUU7QUFBRSx1QkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsdUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsMkJBQVMsRUFBRSxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxnQkFBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxzQkFBSSxLQUFHLEVBQUU7QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRyxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsc0JBQUksS0FBRyxFQUFFO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsR0FBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLHNCQUFJLEtBQUcsRUFBRTtBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLG1CQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUcsS0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLElBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLG1CQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxtQkFBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsSUFBRyxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBO0FBQVUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQTtBQUFBLFlBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLGtCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFO0FBQUUsdUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHVCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLDJCQUFTLEVBQUUsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQyx5QkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxnQkFBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsbUJBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRyxLQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxpQkFBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUUsRUFBRSxHQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQVUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFBLFlBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxHQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEdBQUcsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFO0FBQUUseUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLDZCQUFTLEVBQUUsR0FBRTtBQUFDLDZCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsa0JBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBVSx5QkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFBLFlBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRTtBQUFFLHlCQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSw2QkFBUyxFQUFFLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUMsMkJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGtCQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBVSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQUEsWUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSxvQkFBRSxJQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUsb0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBRSxvQkFBRSxJQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUsb0JBQUUsSUFBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHNCQUFHLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEdBQUU7QUFBQyxzQkFBRSxHQUFFLEdBQUc7QUFBRSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLEdBQUc7QUFBQSxvQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxvQkFBQztBQUFFLHNCQUFFLEdBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxrQkFBQztBQUFNLHNCQUFFLEdBQUUsR0FBRztBQUFFLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQVUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUUsb0JBQUUsSUFBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFFLHNCQUFHLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLElBQUc7QUFBQyxzQkFBRSxHQUFFLEdBQUc7QUFBRSx3QkFBSSxJQUFFLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxJQUFHLEdBQUc7QUFBQSxvQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxvQkFBQztBQUFFLHNCQUFFLEdBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxrQkFBQztBQUFNLHNCQUFFLEdBQUUsR0FBRztBQUFFLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQUEsWUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLGtCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUU7QUFBRSx5QkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsNkJBQVMsRUFBRSxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFDLDJCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxrQkFBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQTtBQUFVLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBO0FBQVUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQTtBQUFBLFlBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUE7QUFBVSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBO0FBQUEsWUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLG1CQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUcsS0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUUsRUFBRSxHQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBO0FBQVUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQTtBQUFBLFlBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLGtCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSx1QkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRTtBQUFFLHlCQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSw2QkFBUyxFQUFFLEdBQUU7QUFBQyw2QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUMsMkJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGtCQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsSUFBRyxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUU7QUFBRSxpQkFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFF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QUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxLQUFJLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsS0FBSSxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFHLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUcsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsR0FBRyxLQUFJLElBQUcsQ0FBQyxHQUFFLElBQUcsS0FBSSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sR0FBRyxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUU7QUFBRSx5QkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsNkJBQVMsRUFBRSxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFDLDJCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxrQkFBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsdUJBQU8sRUFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyxrQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsdUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLHVCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUU7QUFBRSxxQkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLHlCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRyxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxJQUFHO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRSxJQUFHLElBQUU7QUFBRSxpQkFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxHQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxnQkFBSSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRyxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBVSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQUEsWUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLGtCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSx1QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFO0FBQUUseUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLDZCQUFTLEVBQUUsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsa0JBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQVUseUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUU7QUFBRSx5QkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsNkJBQVMsRUFBRSxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxvQkFBQztBQUFDLDJCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxrQkFBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsR0FBRyxLQUFJLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUUsZ0JBQUksS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUUsRUFBRSxHQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxxQkFBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBO0FBQVUseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQTtBQUFBLFlBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLElBQUc7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksTUFBSSxDQUFDLEdBQUUsSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxJQUFHLFNBQVMsSUFBRztBQUFDLHVCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsbUJBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLElBQUcsR0FBRztBQUFBLGdCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPLElBQUUsRUFBRSxHQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRztBQUFFLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLE1BQUksQ0FBQyxHQUFFLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsaUJBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsbUJBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLElBQUcsR0FBRztBQUFBLGdCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksTUFBSSxDQUFDLEdBQUUsSUFBRyxLQUFJLElBQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUs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LElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksTUFBSSxDQUFDLEdBQUUsSUFBRyxLQUFJLElBQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLE1BQUksQ0FBQyxHQUFFLEtBQUksSUFBRyxLQUFJLElBQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSxvQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUUseUJBQU8sRUFBRSxJQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsb0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEVBQUUsSUFBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQTtBQUFVLG9CQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBRSx5QkFBTyxFQUFFLElBQUksSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBQSxZQUFFLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLENBQUMsR0FBRSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsR0FBRztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsR0FBRztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUsZ0JBQUksTUFBSSxDQUFDLEdBQUUsSUFBRyxLQUFJLElBQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUcsR0FBRTtBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsSUFBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxLQUFHLEVBQUU7QUFBRyxrQkFBRyxJQUFHO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsSUFBSSxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxLQUFHLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksS0FBRztBQUFFLGlCQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsc0JBQUksRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsR0FBRyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLElBQUksSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUU7QUFBQSxjQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsSUFBRyxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxHQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxJQUFHLEdBQUcsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGdCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxHQUFHO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxNQUFJLENBQUMsR0FBRSxJQUFHLEtBQUksSUFBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFNLGtCQUFFLEdBQUUsR0FBRztBQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxnQkFBSSxNQUFJLENBQUMsR0FBRSxJQUFHLEtBQUksSUFBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLE1BQUksQ0FBQyxHQUFFLElBQUcsS0FBSSxJQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsa0JBQUUsSUFBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFFLGlCQUFHLFNBQVMsR0FBRSxJQUFHO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FB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cUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRyxHQUFFO0FBQUMsa0JBQUUsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxJQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsSUFBRyxTQUFTLElBQUc7QUFBQyx1QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUksSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksS0FBRyxFQUFFO0FBQUcsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRyxLQUFJLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLEtBQUcsRUFBRTtBQUFHLGtCQUFHLElBQUc7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBRSxrQkFBRSxHQUFHLElBQUksSUFBRyxHQUFFLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksS0FBRyxFQUFFO0FBQUcsa0JBQUcsSUFBRztBQUFDLGtCQUFFLEdBQUUsR0FBRztBQUFFLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLElBQUcsR0FBRztBQUFBLGdCQUFDLEdBQUUsS0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUUsa0JBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBTSxrQkFBRSxHQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyxrQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUUsdUJBQU8sRUFBRSxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxLQUFJLEtBQUksS0FBSSxLQUFJLElBQUcsS0FBSSxJQUFHLEdBQUcsQ0FBQztBQUFFLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUUsY0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSxrQkFBSSxJQUFFO0FBQUUsaUJBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsR0FBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLEdBQUc7QUFBQSxnQkFBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFFLGtCQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUcsZ0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLGtCQUFJLElBQUU7QUFBRSxxQkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxLQUFJLENBQUMsR0FBRSxJQUFHLEtBQUksSUFBRyxHQUFHLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxxQkFBTyxNQUFJLElBQUUsSUFBRSxFQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUscUJBQU8sTUFBSSxJQUFFLElBQUUsRUFBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEdBQUcsR0FBRSxHQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxNQUFJLE1BQUksSUFBRSxJQUFFO0FBQUcsdUJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBSSxDQUFDO0FBQUUscUJBQU8sRUFBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRyxHQUFHLEtBQUksU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLElBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFJLEtBQUcsRUFBRTtBQUFJLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE9BQUssTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUcsSUFBRSxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRTtBQUFFLG9CQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRSxFQUFFO0FBQUE7QUFBTyxzQkFBSSxLQUFHO0FBQUUsb0JBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFFLEVBQUU7QUFBQTtBQUFPLHNCQUFJLEtBQUc7QUFBRSxvQkFBSSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUUsR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSxzQkFBRyxJQUFHO0FBQUMsd0JBQUcsR0FBRztBQUFHLDZCQUFNLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLE9BQUssTUFBSSxLQUFHLElBQUU7QUFBRywyQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLHlCQUFNLENBQUMsR0FBRSxJQUFHLENBQUM7QUFBQSxnQkFBQyxHQUFFLEtBQUksQ0FBQztBQUFFLHVCQUFPLEVBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUcsRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLG9CQUFHO0FBQUUsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLENBQUM7QUFBQTtBQUFPLHNCQUFJLEtBQUc7QUFBRSxvQkFBSSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFFLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENB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LElBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsSUFBRyxHQUFFLENBQUM7QUFBQTtBQUFVLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUcsSUFBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFFLElBQUcsR0FBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDO0FBQUUsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLEtBQUc7QUFBRSxzQkFBRyxHQUFHLE9BQUssR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRztBQUFHLHdCQUFHLEdBQUcsT0FBSztBQUFFLDBCQUFJLEtBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRTtBQUFBO0FBQU8sMkJBQUc7QUFBQSxrQkFBQztBQUFNLHlCQUFHO0FBQUUsc0JBQUc7QUFBRyx3QkFBSSxLQUFHLE9BQUssS0FBRyxJQUFFLEdBQUUsS0FBRyxPQUFLLE9BQUssS0FBRyxJQUFFO0FBQUEsZ0JBQUU7QUFBTSxzQkFBSSxLQUFHO0FBQUUsdUJBQU8sT0FBSyxNQUFJLE9BQUssTUFBSSxPQUFLLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHO0FBQUUsd0JBQUcsT0FBSyxNQUFJLE9BQUssTUFBSSxPQUFLLEdBQUU7QUFBQywwQkFBSSxLQUFHO0FBQUUsMkJBQUc7QUFBQSxvQkFBQztBQUFDLHdCQUFHLENBQUM7QUFBRywwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFFLHdCQUFJLEtBQUc7QUFBRztBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFFLHdCQUFHLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxJQUFHO0FBQUMsMEJBQUksS0FBRztBQUFFLDJCQUFHO0FBQUEsb0JBQUM7QUFBQyx3QkFBRyxDQUFDO0FBQUcsMEJBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSx3QkFBSSxLQUFHO0FBQUc7QUFBQSx1QkFBVztBQUFFLHdCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFFLHdCQUFHLE9BQUssTUFBSSxPQUFLLElBQUc7QUFBQywwQkFBSSxLQUFHO0FBQUUsMkJBQUc7QUFBQSxvQkFBQztBQUFDLHdCQUFHLENBQUM7QUFBRywwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsd0JBQUksS0FBRztBQUFHO0FBQUE7QUFBYyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBO0FBQUUsdUJBQU8sTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUcsRUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsS0FBSSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxLQUFJLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE9BQUssTUFBSSxNQUFJLE1BQUksT0FBSyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsb0JBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFFLHdCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUE7QUFBVSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFFLHdCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHdCQUFHLEdBQUU7QUFBQywwQkFBSSxLQUFHO0FBQUUsMEJBQUcsR0FBRyxPQUFLLEdBQUU7QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBRyw0QkFBRyxHQUFHLE9BQUs7QUFBRyw4QkFBSSxLQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBRyxHQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUE7QUFBTywrQkFBRztBQUFBLHNCQUFDO0FBQU0sNkJBQUc7QUFBRSwwQkFBRztBQUFHLDRCQUFJLEtBQUcsT0FBSyxLQUFHLElBQUUsR0FBRSxLQUFHLE9BQUssTUFBSSxLQUFHLElBQUU7QUFBQSxvQkFBRTtBQUFNLDBCQUFJLEtBQUc7QUFBRSwyQkFBTyxPQUFLLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxFQUFFO0FBQUUsMkJBQU8sT0FBSyxNQUFJLE9BQUssS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRTtBQUFFLDJCQUFPLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxLQUFHLElBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQTtBQUFVLHdCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUU7QUFBRSwyQkFBTyxPQUFLLE1BQUksT0FBSyxNQUFJLE9BQUssS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxTQUFTLElBQUc7QUFBQyxzQkFBRyxHQUFHLE9BQUssR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRTtBQUFFLDJCQUFPLE9BQUssS0FBRyxLQUFHLENBQUMsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUU7QUFBRSx5QkFBTyxPQUFLLEtBQUcsS0FBRyxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE9BQUssTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFFLHdCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUE7QUFBVSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FB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QUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQTtBQUFVLDJCQUFPO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcseUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsR0FBRyxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFF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LElBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxNQUFJLElBQUUsSUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsS0FBRyxHQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxLQUFHLEdBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSxnQkFBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxNQUFJLE9BQUssTUFBSSxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEtBQUksQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyxzQkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsSUFBRztBQUFDLHlCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksT0FBSyxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxNQUFJLE9BQUssTUFBSSxPQUFLLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSztBQUFFLHlCQUFPO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFHLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFHLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUE7QUFBVSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxNQUFJLE9BQUssS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxLQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsT0FBSyxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcseUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUU7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsT0FBSyxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxJQUFHO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEtBQUcsR0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLEtBQUcsT0FBSyxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLFNBQVMsSUFBRztBQUFDLDBCQUFPLEdBQUc7QUFBQSx5QkFBUztBQUFFLDBCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsK0JBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxzQkFBQyxHQUFFLEtBQUcsR0FBRztBQUFHLDZCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxTQUFTLElBQUc7QUFBQywrQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLHNCQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUcsNkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLCtCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsc0JBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRyw2QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFFLDBCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsK0JBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxzQkFBQyxHQUFFLEtBQUcsR0FBRztBQUFHLDZCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBO0FBQVUsMEJBQUksS0FBRyxTQUFTLElBQUc7QUFBQywrQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLHNCQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUcsNkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUE7QUFBQSxnQkFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE9BQUssTUFBSSxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsd0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsb0JBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQTtBQUFVLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRTtBQUFFLHVCQUFPLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxLQUFHLE9BQUssTUFBSSxPQUFLLEtBQUcsT0FBSyxNQUFJLE9BQUssS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsT0FBSyxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxJQUFHO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxNQUFJLE9BQUssTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcseUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcseUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxJQUFHO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcseUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsT0FBSyxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsb0JBQUcsRUFBRSxPQUFLO0FBQUUsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEtBQUcsR0FBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLGtCQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQTtBQUFPLHNCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxLQUFHLEdBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDLEdBQUUsS0FBRyxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUE7QUFBVSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEtBQUksQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsS0FBSSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFFLEVBQUUsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFFLHdCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUUsMkJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxJQUFHLEVBQUU7QUFBRSwyQkFBTyxPQUFLLEtBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLElBQUcsRUFBRTtBQUFFLDJCQUFPLE9BQUssS0FBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRTtBQUFFLDJCQUFPLE9BQUssS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLElBQUcsRUFBRTtBQUFFLDJCQUFPLE9BQUssS0FBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsSUFBRyxFQUFFO0FBQUUsMkJBQU8sT0FBSyxLQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQztBQUFBO0FBQVUsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxJQUFHLEVBQUU7QUFBRSwyQkFBTyxPQUFLLEtBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLElBQUcsSUFBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsS0FBRyxHQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEtBQUcsR0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxNQUFJLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxNQUFJLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxJQUFFLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxPQUFPLEtBQUc7QUFBUyx5QkFBTztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksT0FBSyxNQUFJLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxJQUFFLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUUsRUFBRTtBQUFBO0FBQVUsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUUsRUFBRTtBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEtBQUksQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxLQUFHLEdBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSxnQkFBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLE9BQUssS0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHlCQUFPLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsR0FBRyxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxPQUFLLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFFLHdCQUFJLElBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsd0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLG9CQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcsMkJBQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUE7QUFBVSwyQkFBTztBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBO0FBQVUsd0JBQUksS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsa0JBQUksTUFBSTtBQUFFLHVCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLE1BQUksRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEtBQUksR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxNQUFJLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLE1BQUksRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFHO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxNQUFJLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLE1BQUksRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxLQUFJLENBQUMsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFHO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxNQUFJLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLE1BQUksRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFHO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxNQUFJLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLE1BQUksRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFHO0FBQUE7QUFBVSx3QkFBSSxNQUFJLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLE1BQUksRUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFHO0FBQUE7QUFBQSxjQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLElBQUcsSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksSUFBRyxLQUFJLEdBQUUsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLEdBQUUsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksR0FBRSxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksR0FBRSxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxxQkFBUyxJQUFJLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVM7QUFBRSx5QkFBTztBQUFBLHFCQUFPO0FBQUUseUJBQU87QUFBQTtBQUFVLHlCQUFPO0FBQUE7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxnQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUc7QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsWUFBQztBQUFFLGNBQUUsS0FBSSxTQUFTLEdBQUUsR0FBRTtBQUFDLGdCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRztBQUFFLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxrQkFBRSxHQUFFLEdBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUU7QUFBRyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSxzQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRSxFQUFFO0FBQUcsc0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUU7QUFBQSx1QkFBVztBQUFFLHNCQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRSx3QkFBSSxJQUFFLEVBQUU7QUFBRyxzQkFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBRTtBQUFBLHVCQUFXO0FBQUUsc0JBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRztBQUFFO0FBQUE7QUFBYyxzQkFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUUsd0JBQUksSUFBRSxFQUFFO0FBQUcsc0JBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUE7QUFBRSxrQkFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQU0sa0JBQUUsR0FBRSxHQUFHO0FBQUUscUJBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxJQUFJLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxJQUFJLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUUsS0FBSSxDQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsS0FBRyxFQUFFLEtBQUc7QUFBRSxxQkFBTyxNQUFJLElBQUUsRUFBRSxLQUFHLEVBQUUsS0FBRyxJQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsa0JBQUc7QUFBRSxvQkFBRztBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsSUFBSSxDQUFDLEdBQUUsSUFBRSxJQUFJLENBQUMsSUFBRSxJQUFFLEdBQUUsSUFBRSxNQUFJLElBQUUsR0FBRyxFQUFFLElBQUcsRUFBRSxFQUFFLElBQUU7QUFBQTtBQUFPLHNCQUFJLElBQUU7QUFBQTtBQUFRLG9CQUFJLElBQUUsS0FBRyxHQUFFLElBQUU7QUFBRSxrQkFBRyxNQUFJLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFFLHVCQUFPLE1BQUksSUFBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRSxDQUFDLE1BQUksSUFBRSxJQUFFO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksR0FBRyxLQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxLQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLElBQUcsQ0FBQyxFQUFFO0FBQUcscUJBQU8sR0FBRyxHQUFFLEdBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUMsQ0FBQyxHQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDLENBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLHNCQUFJLElBQUUsRUFBRSxHQUFHO0FBQUcseUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxPQUFLLElBQUUsRUFBRSxHQUFHLEdBQUcsS0FBRyxFQUFFLEdBQUcsR0FBRztBQUFHLDJCQUFPLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEVBQUUsR0FBRztBQUFHLHlCQUFPLEdBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQywyQkFBTyxFQUFFLE9BQUssSUFBRSxJQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRTtBQUFBLGtCQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUcsRUFBRTtBQUFBO0FBQVUseUJBQU87QUFBQTtBQUFBLFlBQUUsQ0FBQztBQUFFLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFHLEVBQUUsSUFBRyxJQUFFLEtBQUcsRUFBRTtBQUFHLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFHLEVBQUUsSUFBRyxJQUFFLEtBQUcsRUFBRTtBQUFHLHFCQUFNLENBQUMsS0FBRyxDQUFDLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBRyxFQUFFLElBQUcsSUFBRSxLQUFHLEVBQUU7QUFBRyxxQkFBTSxDQUFDLEtBQUcsQ0FBQyxLQUFHLENBQUMsSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxHQUFFO0FBQUMsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUUseUJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUU7QUFBQSxjQUFDO0FBQU0sb0JBQUksSUFBRTtBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUcsR0FBRTtBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBUSxJQUFFLEdBQUUsSUFBRSxPQUFJO0FBQUMsb0JBQUcsT0FBTyxLQUFHO0FBQVMseUJBQU87QUFBRSxvQkFBRyxFQUFFLE9BQUs7QUFBRSx5QkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUU7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUc7QUFBRSxvQkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRSxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sSUFBSSxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUE7QUFBTyxvQkFBSSxJQUFFO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLFNBQVMsR0FBRTtBQUFDLHVCQUFPLElBQUksR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxPQUFPLEtBQUcsV0FBUyxJQUFFLEVBQUUsT0FBSyxJQUFFLElBQUUsRUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRTtBQUFFLGtCQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsb0JBQUcsT0FBTyxLQUFHO0FBQVMseUJBQU0sQ0FBQyxHQUFFLENBQUM7QUFBRSxrQkFBRSxPQUFLLE1BQUksSUFBRTtBQUFBLGNBQUUsV0FBUyxFQUFFLE9BQUs7QUFBRSx1QkFBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLE1BQUksSUFBRTtBQUFBLG1CQUFPO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsb0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUU7QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRTtBQUFFLG9CQUFFO0FBQUEsY0FBQztBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBRSxzQkFBSSxJQUFFLEVBQUU7QUFBRztBQUFBLHFCQUFXO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQTtBQUFFLHFCQUFNLENBQUMsR0FBRSxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRTtBQUFFLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxNQUFJLElBQUUsSUFBRTtBQUFFLGtCQUFHLEdBQUU7QUFBQyxvQkFBRyxNQUFJLEdBQUU7QUFBQyxzQkFBSSxJQUFFLE1BQUksSUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLElBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBTSxvQkFBSSxJQUFFO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxtQkFBSSxJQUFFLElBQUUsS0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxFQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxHQUFHLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsbUJBQUksSUFBRSxJQUFFLEtBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsS0FBRyxHQUFHLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxrQkFBRyxPQUFPLEtBQUc7QUFBUyx1QkFBTSxDQUFDLEdBQUUsQ0FBQztBQUFFLGtCQUFHLEVBQUUsT0FBSztBQUFFLHVCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFFLGtCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHFCQUFPLEdBQUcsSUFBSSxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFNLENBQUMsR0FBRSxDQUFDO0FBQUUsa0JBQUcsRUFBRSxPQUFLO0FBQUUsdUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUsa0JBQUksSUFBRSxJQUFJLEdBQUUsRUFBRSxFQUFFO0FBQUUscUJBQU8sR0FBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPLElBQUksR0FBRSxDQUFDO0FBQUUsa0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyxvQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLHNCQUFHLEVBQUUsT0FBSztBQUFFLDJCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBRSxzQkFBRyxJQUFFLEVBQUUsSUFBRztBQUFDLHdCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLDJCQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQyx5QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDLE9BQUs7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxvQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLHNCQUFHLEVBQUUsT0FBSztBQUFFLDJCQUFPLElBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQUksSUFBRSxJQUFFLEtBQUc7QUFBRSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSx1QkFBSSxJQUFFLElBQUUsS0FBRyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsMkJBQU8sR0FBRyxHQUFHLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBUSxJQUFFLE9BQUk7QUFBQyxvQkFBRyxPQUFPLEtBQUc7QUFBUyx3QkFBTTtBQUFHLG9CQUFHLEVBQUUsT0FBSztBQUFFLHlCQUFPLEVBQUU7QUFBRyxvQkFBRyxPQUFPLEVBQUUsTUFBSTtBQUFTLHlCQUFPLEVBQUU7QUFBRyxvQkFBSSxJQUFFLEVBQUU7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHVCQUFRLElBQUUsT0FBSTtBQUFDLG9CQUFHLE9BQU8sS0FBRztBQUFTLHlCQUFPO0FBQUUsb0JBQUcsRUFBRSxPQUFLO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEVBQUUsRUFBRTtBQUFFLG9CQUFHLE9BQU8sRUFBRSxNQUFJO0FBQVMseUJBQU0sQ0FBQyxHQUFFLEVBQUUsRUFBRTtBQUFFLG9CQUFJLElBQUUsRUFBRTtBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxPQUFJO0FBQUMsb0JBQUcsT0FBTyxLQUFHO0FBQVMsd0JBQU07QUFBRyxvQkFBRyxFQUFFLE9BQUs7QUFBRSx5QkFBTyxFQUFFO0FBQUcsb0JBQUcsT0FBTyxFQUFFLE1BQUk7QUFBUyx5QkFBTyxFQUFFO0FBQUcsb0JBQUksSUFBRSxFQUFFO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyx1QkFBUSxJQUFFLE9BQUk7QUFBQyxvQkFBRyxPQUFPLEtBQUc7QUFBUyx5QkFBTztBQUFFLG9CQUFHLEVBQUUsT0FBSztBQUFFLHlCQUFNLENBQUMsR0FBRSxFQUFFLEVBQUU7QUFBRSxvQkFBRyxPQUFPLEVBQUUsTUFBSTtBQUFTLHlCQUFNLENBQUMsR0FBRSxFQUFFLEVBQUU7QUFBRSxvQkFBSSxJQUFFLEVBQUU7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPLEdBQUcsR0FBRztBQUFFLGtCQUFHLEVBQUUsT0FBSztBQUFFLHVCQUFPO0FBQUUsa0JBQUcsT0FBTyxFQUFFLE1BQUk7QUFBUyx1QkFBTyxFQUFFO0FBQUcsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcscUJBQU8sR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPO0FBQUUsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU87QUFBRSxrQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHFCQUFPLEdBQUcsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPO0FBQUUsa0JBQUcsRUFBRSxPQUFLO0FBQUUsdUJBQU87QUFBRSxrQkFBSSxJQUFFLEdBQUcsRUFBRSxFQUFFO0FBQUUsc0JBQU8sR0FBRyxFQUFFLEVBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsR0FBRSxJQUFFLE9BQUk7QUFBQyxvQkFBRyxPQUFPLEtBQUc7QUFBUyx5QkFBTztBQUFFLG9CQUFHLEVBQUUsT0FBSztBQUFFLHlCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsSUFBSSxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRztBQUFFLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsT0FBTyxLQUFHLFdBQVMsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUcsT0FBTyxNQUFJO0FBQVMseUJBQU0sQ0FBQyxHQUFFLEVBQUU7QUFBRSxvQkFBRyxHQUFHLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxJQUFHLEtBQUcsRUFBRSxFQUFFLElBQUcsSUFBRyxDQUFDO0FBQUUseUJBQU8sT0FBSyxJQUFFLEtBQUcsS0FBRyxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEVBQUUsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFFLG9CQUFHLE9BQUs7QUFBRSx5QkFBTztBQUFHLG9CQUFHLEtBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEVBQUU7QUFBRSx5QkFBTyxPQUFLLEtBQUcsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEVBQUUsSUFBRyxFQUFFO0FBQUUsdUJBQU8sT0FBSyxLQUFHLEtBQUcsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRztBQUFDLG9CQUFHLE9BQU8sTUFBSTtBQUFTLHlCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFFLG9CQUFHLEdBQUcsT0FBSyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLEVBQUUsSUFBRyxJQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFPLE1BQUksSUFBRSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUUsSUFBRSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFLElBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEVBQUUsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFFLG9CQUFHLE9BQUs7QUFBRSx5QkFBTSxDQUFDLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBRSxvQkFBRyxLQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcseUJBQU0sQ0FBQyxHQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRztBQUFDLHlCQUFRLElBQUUsUUFBSztBQUFDLHNCQUFHLE9BQU8sS0FBRztBQUFTLDJCQUFPO0FBQUUsc0JBQUcsRUFBRSxPQUFLO0FBQUUsMkJBQU8sRUFBRSxFQUFFLElBQUcsSUFBRyxFQUFFLEVBQUUsTUFBSSxJQUFFLElBQUU7QUFBRSxzQkFBSSxLQUFHLEVBQUUsRUFBRSxJQUFHLElBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxPQUFLLElBQUUsSUFBRTtBQUFFLHNCQUFHO0FBQUcsMkJBQU87QUFBRyxzQkFBSSxLQUFHLEtBQUcsS0FBRyxFQUFFLEtBQUcsRUFBRSxJQUFHLElBQUU7QUFBQSxnQkFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRztBQUFDLG9CQUFHLE9BQU8sTUFBSTtBQUFTLHlCQUFPO0FBQUcsb0JBQUcsR0FBRyxPQUFLO0FBQUUseUJBQU8sRUFBRSxFQUFFLElBQUcsSUFBRyxHQUFHLEVBQUUsTUFBSSxJQUFFLEtBQUc7QUFBRyxvQkFBSSxJQUFFLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEVBQUUsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFFLG9CQUFHLE9BQUssR0FBRTtBQUFDLHNCQUFHLE9BQU8sTUFBSTtBQUFTLDJCQUFPO0FBQUUsc0JBQUcsT0FBTyxLQUFHO0FBQVMsMkJBQU87QUFBRyxzQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFF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QUksT0FBSyxNQUFJLE9BQUs7QUFBRyx5QkFBTztBQUFHLG9CQUFJLElBQUU7QUFBRSxvQkFBRyxDQUFDLEdBQUcsRUFBRSxHQUFFO0FBQUMsc0JBQUksS0FBRyxJQUFJLEVBQUU7QUFBRSx1QkFBRyxFQUFFLEVBQUUsSUFBRyxJQUFHLEVBQUUsTUFBSSxJQUFFO0FBQUEsZ0JBQUU7QUFBQyxvQkFBRyxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFO0FBQUUsc0JBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUseUJBQUcsRUFBRSxFQUFFLElBQUcsSUFBRyxFQUFFLE1BQUksSUFBRTtBQUFBLGtCQUFFO0FBQUMsc0JBQUcsQ0FBQztBQUFFLDJCQUFPLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxJQUFFLEdBQUc7QUFBRyxzQkFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsd0JBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDBCQUFHLElBQUc7QUFBQyw0QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyw0QkFBRyxJQUFHO0FBQUMsOEJBQUcsR0FBRyxJQUFHO0FBQUMsZ0NBQUksS0FBRyxFQUFFLElBQUcsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGtDQUFHLE9BQUssR0FBRTtBQUFDLG9DQUFHLElBQUc7QUFBQyxzQ0FBSSxLQUFHLEdBQUc7QUFBRyxzQ0FBRyxJQUFHO0FBQUMsd0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxPQUFLLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxJQUFFLElBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUM7QUFBRSwyQ0FBTSxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUEsa0NBQUM7QUFBQSxnQ0FBQztBQUFBLDhCQUFDLFdBQVMsT0FBSyxLQUFHLElBQUc7QUFBQyxvQ0FBSSxLQUFHLEdBQUc7QUFBRyxvQ0FBRyxJQUFHO0FBQUMsc0NBQUksS0FBRyxHQUFHO0FBQUcsc0NBQUcsSUFBRztBQUFDLHdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFFLHdDQUFHLE9BQUs7QUFBRSwwQ0FBSSxJQUFFLEVBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLElBQUUsSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxHQUFFLElBQUU7QUFBQSw2Q0FBVSxJQUFFLElBQUc7QUFBQywwQ0FBSSxLQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUU7QUFBRSwwQ0FBRyxPQUFLO0FBQUUsNENBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSwrQ0FBVSxJQUFFO0FBQUcsNENBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQU8sNENBQUksS0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxPQUFLLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLElBQUUsSUFBRSxLQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxLQUFHO0FBQUcsMENBQUksSUFBRTtBQUFBLG9DQUFFLE9BQUs7QUFBQywwQ0FBSSxLQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUU7QUFBRSwwQ0FBRyxPQUFLO0FBQUUsNENBQUksSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSwrQ0FBVSxJQUFFO0FBQUcsNENBQUksSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQU8sNENBQUksS0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRSxPQUFLLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLElBQUUsSUFBRSxLQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUUsMENBQUksSUFBRTtBQUFBLG9DQUFDO0FBQUMsMkNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGtDQUFDO0FBQUEsZ0NBQUM7QUFBQSw4QkFBQztBQUFDLHVDQUFRLEtBQUcsTUFBSSxHQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsS0FBRyxLQUFHLEdBQUUsR0FBRyxFQUFFLEdBQUUsS0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBSztBQUFDLG9DQUFHLElBQUc7QUFBQyxzQ0FBRyxJQUFHO0FBQUMsd0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUUsd0NBQUcsT0FBSyxHQUFFO0FBQUMsMENBQUksS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLG9DQUFRO0FBQUMsd0NBQUcsS0FBRyxJQUFHO0FBQUMsMENBQUksS0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRTtBQUFFO0FBQUEsb0NBQVE7QUFBQyx3Q0FBSSxLQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUU7QUFBQSxrQ0FBUTtBQUFDLHNDQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBQSxnQ0FBQztBQUFNLHNDQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSx1Q0FBTSxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUEsOEJBQUM7QUFBQSw0QkFBQyxHQUFFLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyxrQ0FBRyxPQUFLLEdBQUU7QUFBQyxvQ0FBRyxJQUFHO0FBQUMsc0NBQUksS0FBRyxHQUFHO0FBQUcsc0NBQUcsSUFBRztBQUFDLHdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsT0FBSyxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsSUFBRSxLQUFHLEtBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUUsMkNBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRTtBQUFBLGtDQUFDO0FBQUEsZ0NBQUM7QUFBQSw4QkFBQyxXQUFTLE9BQUssS0FBRyxJQUFHO0FBQUMsb0NBQUksS0FBRyxHQUFHO0FBQUcsb0NBQUcsSUFBRztBQUFDLHNDQUFJLEtBQUcsR0FBRztBQUFHLHNDQUFHLElBQUc7QUFBQyx3Q0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUU7QUFBRSx3Q0FBRyxPQUFLO0FBQUUsMENBQUksSUFBRSxFQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRSxNQUFJLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxJQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUEsNkNBQVUsS0FBRyxJQUFHO0FBQUMsMENBQUksS0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUUsMENBQUcsT0FBSztBQUFFLDRDQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsK0NBQVUsS0FBRztBQUFHLDRDQUFJLEtBQUcsRUFBRSxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsT0FBSyxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxJQUFFLEtBQUcsS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBRztBQUFBO0FBQVEsNENBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFFLDBDQUFJLElBQUU7QUFBQSxvQ0FBRSxPQUFLO0FBQUMsMENBQUksS0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUUsMENBQUcsT0FBSztBQUFFLDRDQUFJLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsK0NBQVUsS0FBRztBQUFHLDRDQUFJLEtBQUcsRUFBRSxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsT0FBSyxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxJQUFFLEtBQUcsS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUUsSUFBRTtBQUFBO0FBQU8sNENBQUksSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFFLDBDQUFJLElBQUU7QUFBQSxvQ0FBQztBQUFDLDJDQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxrQ0FBQztBQUFBLGdDQUFDO0FBQUEsOEJBQUM7QUFBQyx1Q0FBUSxLQUFHLE1BQUksR0FBRSxLQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLEtBQUcsS0FBRyxHQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxHQUFHLFFBQUs7QUFBQyxvQ0FBRyxJQUFHO0FBQUMsc0NBQUcsSUFBRztBQUFDLHdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFFLHdDQUFHLE9BQUssR0FBRTtBQUFDLDBDQUFJLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUU7QUFBQSxvQ0FBUTtBQUFDLHdDQUFHLElBQUUsSUFBRztBQUFD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Qyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUksMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBO0FBQWMsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFFLCtCQUFPO0FBQUE7QUFBQTtBQUFPLDBCQUFPO0FBQUEseUJBQVE7QUFBRSwwQkFBRyxPQUFPLEtBQUcsWUFBVSxDQUFDO0FBQUUsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksSUFBRSxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxJQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFFLGlDQUFPO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FBQUUsNEJBQUcsQ0FBQztBQUFHLGlDQUFPO0FBQUEsc0JBQUU7QUFBQztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyw0QkFBSSxLQUFHLE1BQUksS0FBRyxJQUFFO0FB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QUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQVE7QUFBRywrQkFBTztBQUFBLDJCQUFRO0FBQUksK0JBQU87QUFBQSwyQkFBUTtBQUFJLCtCQUFPO0FBQUEsMkJBQVE7QUFBSSwrQkFBTztBQUFBLDJCQUFRO0FBQUksK0JBQU87QUFBQSwyQkFBUTtBQUFJLCtCQUFPO0FBQUEsMkJBQVE7QUFBSSwrQkFBTztBQUFBLDJCQUFRO0FBQUksK0JBQU87QUFBQSwyQkFBUTtBQUFJLCtCQUFPO0FBQUE7QUFBVywrQkFBTztBQUFBO0FBQUcsMEJBQU87QUFBQSx5QkFBUztBQUFFLDZCQUFPO0FBQUEseUJBQU87QUFBRSw2QkFBTztBQUFBLHlCQUFPO0FBQUUsNkJBQU87QUFBQSx5QkFBUTtBQUFFLDZCQUFPO0FBQUEseUJBQVE7QUFBRSw2QkFBTztBQUFBLHlCQUFRO0FBQUUsNkJBQU87QUFBQSx5QkFBUTtBQUFFLDZCQUFPO0FBQUEseUJBQVE7QUFBRSw2QkFBTztBQUFBLHlCQUFRO0FBQUUsNkJBQU87QUFBQSx5QkFBUTtBQUFFLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQTtBQUFXLDZCQUFPO0FBQUE7QUFBQSxnQkFBRztBQUFNLDBCQUFPLEdBQUc7QUFBQSx5QkFBUztBQUFFLDZCQUFPO0FBQUEseUJBQU87QUFBRSw2QkFBTztBQUFBLHlCQUFPO0FBQUUsNkJBQU87QUFBQSx5QkFBTztBQUFFLDZCQUFPO0FBQUEseUJBQU87QUFBRSw2QkFBTztBQUFBLHlCQUFPO0FBQUUsNkJBQU87QUFBQSx5QkFBTztBQUFFLDZCQUFPO0FBQUEseUJBQU87QUFBRSw2QkFBTztBQUFBLHlCQUFPO0FBQUUsNkJBQU87QUFBQSx5QkFBUTtBQUFFLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVE7QUFBRyw2QkFBTztBQUFBO0FBQVcsNkJBQU87QUFBQTtBQUFBLGNBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHFCQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRTtBQUFBLFlBQUMsQ0FBQztBQUFFLGdCQUFJLE1BQUksQ0FBQyxJQUFHLEtBQUksR0FBRyxDQUFDLENBQUM7QUFBRSxlQUFHLENBQUM7QUFBRSxnQkFBSSxLQUFHLENBQUMsSUFBRyxLQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUUsTUFBSSxHQUFFLE1BQUksR0FBRSxNQUFJLEdBQUUsTUFBSSxHQUFFLE1BQUksR0FBRSxNQUFJLEdBQUUsTUFBSSxHQUFFLE1BQUksR0FBRSxNQUFJLEdBQUUsTUFBSTtBQUFFLHFCQUFTLEVBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsT0FBSyxFQUFFO0FBQUcsdUJBQU07QUFBRyxrQkFBSSxJQUFFLEVBQUUsR0FBRyxJQUFFLEVBQUU7QUFBSSxxQkFBTyxFQUFFLEtBQUcsRUFBRSxLQUFHLElBQUUsR0FBRSxNQUFJLE9BQUssRUFBRSxPQUFLLE1BQUksRUFBRSxLQUFHLEVBQUUsS0FBRyxJQUFFLElBQUcsRUFBRSxLQUFHLEVBQUUsS0FBSTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsS0FBRyxFQUFFLElBQUcsRUFBRSxNQUFJLEVBQUUsSUFBRyxFQUFFLE1BQUksRUFBRSxJQUFHLEVBQUUsTUFBSSxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsS0FBRyxFQUFFLElBQUcsRUFBRSxLQUFHLEVBQUUsSUFBRyxFQUFFLEtBQUcsRUFBRSxJQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsS0FBRyxFQUFFLElBQUcsRUFBRSxLQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUcsRUFBRSxLQUFJLEVBQUU7QUFBQSxZQUFHO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxLQUFHLEVBQUUsSUFBRyxFQUFFLEtBQUcsRUFBRSxJQUFHLEVBQUUsS0FBRyxFQUFFLElBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUcsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUcsRUFBRSxLQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxLQUFHLEVBQUUsS0FBRyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHFCQUFPLEtBQUcsS0FBRyxLQUFHLEtBQUcsR0FBRyxFQUFFLFNBQU8sSUFBRSxJQUFFLEtBQUcsS0FBRyxJQUFJLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEdBQUcsRUFBRSxJQUFHLENBQUMsRUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxPQUFJO0FBQUMsb0JBQUcsSUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUU7QUFBRyxzQkFBRyxLQUFHLEdBQUU7QUFBQyx3QkFBRyxLQUFHO0FBQUUsMEJBQUcsS0FBRztBQUFFLDRCQUFHLEtBQUcsR0FBRTtBQUFDLDhCQUFHLEtBQUc7QUFBRSxrQ0FBTTtBQUFHLDZCQUFHLEdBQUUsR0FBRSxLQUFHLE1BQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLElBQUUsSUFBRSxHQUFFLE1BQUksTUFBSSxLQUFHLEtBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRSxJQUFFLElBQUUsR0FBRSxNQUFJLE1BQUksSUFBRSxLQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsSUFBRSxJQUFFLEdBQUUsS0FBRyxJQUFFLEVBQUU7QUFBRSw4QkFBSSxJQUFFLElBQUUsSUFBRTtBQUFBLHdCQUFDLE9BQUs7QUFBQyw2QkFBRyxHQUFFLEdBQUUsS0FBRyxNQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxJQUFFLElBQUUsR0FBRSxNQUFJLE1BQUksSUFBRSxLQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsSUFBRSxJQUFFLEdBQUUsS0FBRyxJQUFFLEVBQUU7QUFBRSw4QkFBSSxJQUFFLElBQUUsSUFBRTtBQUFBLHdCQUFDO0FBQUEsMkJBQUs7QUFBQywyQkFBRyxHQUFFLEdBQUUsS0FBRyxNQUFJLElBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxJQUFFLElBQUUsR0FBRSxLQUFHLElBQUUsRUFBRTtBQUFFLDRCQUFJLElBQUUsSUFBRSxJQUFFO0FBQUEsc0JBQUM7QUFBQSx5QkFBSztBQUFDLHlCQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsMEJBQUksSUFBRSxJQUFFLElBQUU7QUFBQSxvQkFBQztBQUFDLHdCQUFJLElBQUUsR0FBRSxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBRSxJQUFFO0FBQUU7QUFBQSxrQkFBUTtBQUFDLHdCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsT0FBSTtBQUFDLG9CQUFHLElBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFO0FBQUUsc0JBQUcsTUFBSTtBQUFFLHdCQUFHLE1BQUk7QUFBRSwwQkFBRyxNQUFJO0FBQUUsNEJBQUU7QUFBQSwyQkFBTTtBQUFDLDRCQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLElBQUUsQ0FBQyxHQUFFLEtBQUcsTUFBSSxJQUFFLE9BQUssSUFBRSxJQUFFO0FBQUUsNEJBQUc7QUFBRSw4QkFBSSxJQUFFO0FBQUE7QUFBTyw4QkFBSSxLQUFHLE1BQUksSUFBRSxPQUFLLElBQUUsSUFBRSxHQUFFLElBQUUsT0FBSyxNQUFJLElBQUUsT0FBSyxJQUFFLElBQUU7QUFBRyw0QkFBRztBQUFFLGdDQUFNO0FBQUcsMEJBQUUsSUFBRSxNQUFJLElBQUUsTUFBSSxNQUFJLElBQUUsT0FBSyxNQUFJLElBQUUsT0FBSyxJQUFFLElBQUU7QUFBRyw0QkFBSSxJQUFFLElBQUUsSUFBRTtBQUFBLHNCQUFDO0FBQUEsNkJBQVMsTUFBSSxHQUFFO0FBQUMsMEJBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLElBQUUsQ0FBQyxHQUFFLEtBQUcsSUFBRSxPQUFLLE1BQUksSUFBRSxPQUFLLElBQUUsSUFBRSxJQUFHLEtBQUcsTUFBSSxJQUFFLE9BQUssSUFBRSxJQUFFLEdBQUUsSUFBRSxPQUFLLE1BQUksSUFBRSxPQUFLLElBQUUsSUFBRTtBQUFHLDBCQUFHO0FBQUUsNEJBQUksS0FBRztBQUFBO0FBQU8sNEJBQUksS0FBRyxTQUFPLElBQUUsSUFBRSxHQUFFLEtBQUcsT0FBSyxLQUFHLFFBQU0sSUFBRTtBQUFHLDBCQUFHO0FBQUcsOEJBQU07QUFBRyx3QkFBRSxJQUFFLEtBQUc7QUFBRSwwQkFBSSxJQUFFLElBQUUsSUFBRTtBQUFBLG9CQUFDLE9BQUs7QUFBQywwQkFBSSxLQUFHLEdBQUcsR0FBRSxJQUFFLElBQUUsQ0FBQztBQUFFLDJCQUFJLE9BQUssSUFBRSxPQUFLO0FBQUUsOEJBQU07QUFBRyx3QkFBRSxJQUFFLE1BQUksSUFBRSxPQUFLLElBQUUsS0FBRztBQUFHLDBCQUFJLElBQUUsSUFBRSxJQUFFO0FBQUEsb0JBQUM7QUFBQSwyQkFBUyxNQUFJO0FBQUUsd0JBQUU7QUFBQSx1QkFBTTtBQUFDLHNCQUFFLElBQUUsS0FBRztBQUFFLHdCQUFJLElBQUUsSUFBRSxJQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBRztBQUFFLDBCQUFNO0FBQUcsc0JBQUksSUFBRSxJQUFFLElBQUUsR0FBRSxJQUFFO0FBQUU7QUFBQSxnQkFBUTtBQUFDLHVCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksR0FBRztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxLQUFHLElBQUUsR0FBRSxJQUFFLEdBQUcsSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyxtQkFBSSxJQUFFLElBQUUsTUFBSSxFQUFFLFNBQU87QUFBRSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEtBQUcsSUFBRSxHQUFFLElBQUUsR0FBRyxJQUFFLElBQUUsQ0FBQztBQUFFLHFCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUcsRUFBRSxJQUFHLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsS0FBRyxJQUFFLEdBQUUsSUFBRSxHQUFHLElBQUUsSUFBRSxDQUFDO0FBQUUscUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFHLEVBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxTQUFPLEdBQUUsSUFBRSxHQUFHLElBQUUsSUFBRSxDQUFDO0FBQUUscUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUcsRUFBRSxLQUFHLElBQUUsR0FBRTtBQUFBLFlBQUM7QUFBQyxnQkFBSSxNQUFJO0FBQUUscUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEdBQUUsS0FBSSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUc7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxNQUFJLEVBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRSxJQUFFO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBRSxjQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLG9CQUFJLElBQUU7QUFBRSxvQkFBRyxNQUFJO0FBQUUsc0JBQUcsTUFBSTtBQUFFLDRCQUFPO0FBQUEsMkJBQVE7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFJLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUs7QUFBRSxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxPQUFPLEtBQUcsWUFBVSxPQUFLO0FBQUUsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUksNEJBQUcsT0FBTyxLQUFHLFlBQVUsT0FBSztBQUFFLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFJLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUs7QUFBRSxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxPQUFPLEtBQUcsWUFBVSxPQUFLO0FBQUUsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUksNEJBQUcsT0FBTyxLQUFHLFlBQVUsT0FBSztBQUFFLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFJLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUs7QUFBRSxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxPQUFPLEtBQUcsWUFBVSxPQUFLO0FBQUUsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUksNEJBQUcsT0FBTyxLQUFHLFlBQVUsT0FBSztBQUFFLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFJLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUs7QUFBRSxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxPQUFPLEtBQUcsWUFBVSxPQUFLO0FBQUUsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUksNEJBQUcsT0FBTyxLQUFHLFlBQVUsT0FBSztBQUFFLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFJLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUs7QUFBRSxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxPQUFPLEtBQUcsWUFBVSxPQUFLO0FBQUUsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUksNEJBQUcsT0FBTyxLQUFHLFlBQVUsT0FBSztBQUFFLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFJLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUs7QUFBRSxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxPQUFPLEtBQUcsWUFBVSxPQUFLO0FBQUUsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUksNEJBQUcsT0FBTyxLQUFHLFlBQVUsT0FBSztBQUFFLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFJLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUs7QUFBRSxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBSSw0QkFBRyxPQUFPLEtBQUcsWUFBVSxPQUFLO0FBQUUsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUksNEJBQUcsT0FBTyxLQUFHLFlBQVUsT0FBSztBQUFFLGlDQUFPO0FBQUU7QUFBQTtBQUFjLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRSxpQ0FBTztBQUFBO0FBQUE7QUFBTyw0QkFBTztBQUFBLDJCQUFRO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRyxpQ0FBTztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsaUNBQU87QUFBRTtBQUFBO0FBQWMsNEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLGlDQUFPO0FBQUE7QUFBQSx5QkFBVSxNQUFJO0FBQUUsMEJBQU87QUFBQSx5QkFBUTtBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBO0FBQWMsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUE7QUFBQTtBQUFPLDBCQUFPO0FBQUEseUJBQVE7QUFBRSwwQkFBRyxPQUFPLEtBQUcsWUFBVSxDQUFDO0FBQUUsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFFLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFFLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRSwrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRSwwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUUsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFFLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFFLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRSwrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRSwwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUUsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUUsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFFLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFFLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRSwrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRSwwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUUsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFHLCtCQUFPO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUk7QUFBRywrQkFBTztBQUFFO0FBQUEseUJBQVc7QUFBRywwQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJO0FBQUcsK0JBQU87QUFBRTtBQUFBLHlCQUFXO0FBQUcsMEJBQUcsT0FBTyxLQUFHLFlBQVUsTUFBSTtBQUFH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TztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUE7QUFBWSwrQkFBTztBQUFBO0FBQUksMEJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQTtBQUFZLDZCQUFPO0FBQUE7QUFBQSxnQkFBSTtBQUFDLG9CQUFHLE1BQUk7QUFBRSwwQkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUE7QUFBWSw2QkFBTztBQUFBO0FBQUksd0JBQU87QUFBQSx1QkFBUTtBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQTtBQUFZLDJCQUFPO0FBQUE7QUFBQSxjQUFJO0FBQU0sd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUE7QUFBWSwyQkFBTztBQUFBO0FBQUEsWUFBSTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsb0JBQUksSUFBRTtBQUFFLG9CQUFHLE1BQUksR0FBRTtBQUFDLHNCQUFHLE1BQUk7QUFBRSw0QkFBTztBQUFBLDJCQUFRO0FBQUcsK0JBQU87QUFBQSwyQkFBUztBQUFHLCtCQUFPO0FBQUEsMkJBQVM7QUFBRywrQkFBTztBQUFBLDJCQUFTO0FBQUcsK0JBQU87QUFBQSwyQkFBUztBQUFHLCtCQUFPO0FBQUEsMkJBQVM7QUFBRywrQkFBTztBQUFBLDJCQUFTO0FBQUcsK0JBQU87QUFBQSwyQkFBUztBQUFHLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUEsMkJBQVM7QUFBSSwrQkFBTztBQUFBLDJCQUFTO0FBQUksK0JBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPO0FBQUE7QUFBWSwrQkFBTztBQUFBO0FBQUksMEJBQU87QUFBQSx5QkFBUTtBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQTtBQUFZLDZCQUFPO0FBQUE7QUFBQSxnQkFBSTtBQUFDLG9CQUFHLE1BQUk7QUFBRSwwQkFBTztBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU87QUFBQSx5QkFBUztBQUFHLDZCQUFPO0FBQUE7QUFBWSw2QkFBTztBQUFBO0FBQUksd0JBQU87QUFBQSx1QkFBUTtBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRSwyQkFBTztBQUFBLHVCQUFTO0FBQUUsMkJBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQSx1QkFBUztBQUFHLDJCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTztBQUFBLHVCQUFTO0FBQUcsMkJBQU87QUFBQTtBQUFZLDJCQUFPO0FBQUE7QUFBQSxjQUFJO0FBQU0sd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsMkJBQU8sRUFBRSxHQUFHO0FBQUEsdUJBQVE7QUFBRSwyQkFBTyxFQUFFLEdBQUcsR0FBRztBQUFBLHVCQUFRO0FBQUUsd0JBQUksSUFBRSxHQUFHLEtBQUksRUFBRSxFQUFFO0FBQUUsMkJBQU8sR0FBRyxLQUFJLEdBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHVCQUFPO0FBQUUsMkJBQU8sRUFBRSxLQUFHLE1BQUk7QUFBQSx1QkFBUztBQUFBLHVCQUFPO0FBQUUsMkJBQU8sRUFBRTtBQUFBLHVCQUFRO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxFQUFFO0FBQUE7QUFBVywyQkFBTyxFQUFFO0FBQUE7QUFBQSxZQUFHO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxHQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFHLEVBQUUsSUFBRyxJQUFFO0FBQUUsa0JBQUcsT0FBTyxLQUFHO0FBQVMsb0JBQUcsT0FBSztBQUFFLHNCQUFJLElBQUUsS0FBSSxJQUFFO0FBQUE7QUFBUyxzQkFBRTtBQUFBO0FBQU8sd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsd0JBQUksSUFBRSxLQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRSxLQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUEsdUJBQU87QUFBRSx3QkFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBTztBQUFHLHdCQUFJLElBQUUsS0FBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFBLHVCQUFPO0FBQUcsd0JBQUksSUFBRSxLQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxJQUFFLEtBQUksSUFBRTtBQUFJO0FBQUE7QUFBYyx3QkFBSSxJQUFFLEtBQUksSUFBRTtBQUFBO0FBQUksa0JBQUc7QUFBRSxvQkFBSSxJQUFFLEtBQUksSUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUUscUJBQU8sSUFBRSxHQUFHLEdBQUUsR0FBRyxLQUFJLENBQUMsQ0FBQyxJQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLElBQUUsR0FBRTtBQUFDLG9CQUFHLEtBQUcsR0FBRTtBQUFDLHNCQUFHLEtBQUcsR0FBRTtBQUFDLHdCQUFHLEtBQUc7QUFBRSw2QkFBTTtBQUFHLHdCQUFHLEtBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBRyw2QkFBTztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsS0FBRyxHQUFFO0FBQUMsMEJBQUcsS0FBRyxHQUFFO0FBQUMsNEJBQUcsS0FBRyxHQUFFO0FBQUMsOEJBQUksSUFBRSxLQUFHLEtBQUcsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFHLGlDQUFPO0FBQUEsd0JBQUM7QUFBQywrQkFBTztBQUFBLHNCQUFDO0FBQUMsNkJBQU07QUFBQSxvQkFBRTtBQUFDLHdCQUFHLEtBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBRyw2QkFBTztBQUFBLG9CQUFDO0FBQUMsMkJBQU87QUFBQSxrQkFBQztBQUFDLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTyxHQUFHLEtBQUksSUFBRSxJQUFFLENBQUMsSUFBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHFCQUFNO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLElBQUcsSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtB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QUU7QUFBQywwQkFBSSxJQUFFLEtBQUcsS0FBRyxJQUFFLEdBQUUsSUFBRSxLQUFHO0FBQUcsNkJBQU87QUFBQSxvQkFBQztBQUFDLDJCQUFPO0FBQUEsa0JBQUM7QUFBQyx5QkFBTTtBQUFBLGdCQUFFO0FBQUMsdUJBQU8sR0FBRyxLQUFJLElBQUUsSUFBRSxDQUFDLElBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLGtCQUFHLEtBQUcsR0FBRTtBQUFDLG9CQUFHLEtBQUcsR0FBRTtBQUFDLHNCQUFHLEtBQUcsR0FBRTtBQUFDLHdCQUFHLEtBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBRyw2QkFBTztBQUFBLG9CQUFDO0FBQUMsMkJBQU87QUFBQSxrQkFBQztBQUFDLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTyxHQUFHLEtBQUksQ0FBQyxJQUFFLElBQUU7QUFBQSxjQUFDO0FBQUMscUJBQU07QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLElBQUcsSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsSUFBRyxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLElBQUUsR0FBRTtBQUFDLG9CQUFHLEtBQUcsR0FBRTtBQUFDLHNCQUFHLEtBQUcsR0FBRTtBQUFDLHdCQUFHLEtBQUc7QUFBRSw2QkFBTTtBQUFHLHdCQUFHLEtBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBRyw2QkFBTztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsS0FBRyxHQUFFO0FBQUMsMEJBQUcsS0FBRyxHQUFFO0FBQUMsNEJBQUcsS0FBRyxHQUFFO0FBQUMsOEJBQUksSUFBRSxLQUFHLEtBQUcsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFHLGlDQUFPO0FBQUEsd0JBQUM7QUFBQywrQkFBTztBQUFBLHNCQUFDO0FBQUMsNkJBQU07QUFBQSxvQkFBRTtBQUFDLHdCQUFHLEtBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBRyw2QkFBTztBQUFBLG9CQUFDO0FBQUMsMkJBQU87QUFBQSxrQkFBQztBQUFDLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTyxHQUFHLEtBQUksSUFBRSxJQUFFLENBQUMsSUFBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHFCQUFNO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsSUFBRyxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxrQkFBRyxJQUFFLEdBQUU7QUFBQyxvQkFBRyxLQUFHLEdBQUU7QUFBQyxzQkFBRyxLQUFHLEdBQUU7QUFBQyx3QkFBRyxLQUFHO0FBQUUsNkJBQU07QUFBRyx3QkFBRyxLQUFHLEdBQUU7QUFBQywwQkFBSSxJQUFFLEtBQUcsS0FBRyxJQUFFLEdBQUUsSUFBRSxLQUFHO0FBQUcsNkJBQU87QUFBQSxvQkFBQztBQUFDLHdCQUFHLEtBQUcsR0FBRTtBQUFDLDBCQUFHLEtBQUcsR0FBRTtBQUFDLDRCQUFHLEtBQUcsR0FBRTtBQUFDLDhCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBRyxpQ0FBTztBQUFBLHdCQUFDO0FBQUMsK0JBQU87QUFBQSxzQkFBQztBQUFDLDZCQUFNO0FBQUEsb0JBQUU7QUFBQyx3QkFBRyxLQUFHLEdBQUU7QUFBQywwQkFBSSxJQUFFLEtBQUcsS0FBRyxJQUFFLEdBQUUsSUFBRSxLQUFHO0FBQUcsNkJBQU87QUFBQSxvQkFBQztBQUFDLDJCQUFPO0FBQUEsa0JBQUM7QUFBQyx5QkFBTTtBQUFBLGdCQUFFO0FBQUMsdUJBQU8sR0FBRyxLQUFJLElBQUUsSUFBRSxDQUFDLElBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsR0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsS0FBSSxJQUFFLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyx5QkFBTztBQUFDLG1CQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRyxLQUFJLElBQUUsSUFBRSxDQUFDLElBQUUsSUFBRTtBQUFFLG9CQUFHLElBQUUsTUFBSTtBQUFFLHNCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUE7QUFBTywwQkFBTztBQUFBLHlCQUFRO0FBQUUsMEJBQUksSUFBRTtBQUFFO0FBQUEseUJBQVc7QUFBRSwwQkFBSSxJQUFFO0FBQUU7QUFBQSx5QkFBVztBQUFFLDBCQUFJLElBQUU7QUFBRTtBQUFBO0FBQWMsMEJBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDLDRCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLDRCQUFHLE1BQUk7QUFBRSw4QkFBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSxnQ0FBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUE7QUFBTyxnQ0FBSSxJQUFFLEVBQUUsQ0FBQztBQUFBLGlDQUFVLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSxxQ0FBTztBQUFDLGdDQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLGdDQUFHLE1BQUksR0FBRTtBQUFDLGtDQUFJLElBQUUsTUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSw0QkFBSztBQUFBLDBCQUFDO0FBQUE7QUFBTSw4QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBLHNCQUFDO0FBQU0sNEJBQUksSUFBRSxFQUFFLENBQUM7QUFBQTtBQUFFLG9CQUFHLElBQUUsTUFBSTtBQUFFLHdCQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBRSx3QkFBTztBQUFBLHVCQUFRO0FBQUU7QUFBQSx1QkFBYztBQUFFLDJCQUFPO0FBQUE7QUFBVSx3QkFBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQUU7QUFBUywyQkFBTyxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUE7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFFLEVBQUUsR0FBRyxLQUFHO0FBQUUscUJBQU0sQ0FBQyxHQUFFLElBQUksQ0FBQyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRTtBQUFFLGtCQUFHLE9BQU8sS0FBRztBQUFTLG9CQUFFO0FBQUE7QUFBTyx3QkFBTyxFQUFFO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFLEVBQUUsR0FBRztBQUFHO0FBQUEsdUJBQVc7QUFBRSwyQkFBTyxFQUFFLEdBQUc7QUFBQSx1QkFBUTtBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEVBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxFQUFFO0FBQUE7QUFBVyx3QkFBRTtBQUFBO0FBQUUscUJBQU8sSUFBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDLElBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDLElBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsSUFBSSxDQUFDLElBQUUsSUFBRSxHQUFFLENBQUM7QUFBRSxxQkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHFCQUFPLE1BQUksS0FBRyxPQUFLLEdBQUcsR0FBRSxJQUFFLElBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxHQUFFLElBQUUsSUFBRSxDQUFDLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLElBQUUsSUFBRTtBQUFFLHFCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsRUFBRSxHQUFHLEdBQUcsS0FBRyxFQUFFLEdBQUcsS0FBRyxJQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEdBQUcsR0FBRSxDQUFDLE1BQUk7QUFBRyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBQTtBQUFPLG9CQUFJLElBQUUsR0FBRSxJQUFFO0FBQUUsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHNCQUFHO0FBQUMsd0JBQUksSUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUUsSUFBRTtBQUFBLGtCQUFDLFNBQU8sR0FBTjtBQUFTLHdCQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxPQUFLO0FBQUcsNEJBQU07QUFBRSx3QkFBSSxJQUFFLEdBQUcsR0FBRyxLQUFJLENBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQUM7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUUsc0JBQUc7QUFBQyx3QkFBSSxJQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUEsa0JBQUMsU0FBTyxHQUFOO0FBQVMsd0JBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxFQUFFLE9BQUs7QUFBRyw0QkFBTTtBQUFFLHdCQUFJLElBQUUsR0FBRyxHQUFHLEtBQUksQ0FBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQztBQUFBO0FBQWMsc0JBQUc7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUU7QUFBQSxrQkFBQyxTQUFPLEdBQU47QUFBUyx3QkFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsT0FBSztBQUFHLDRCQUFNO0FBQUUsd0JBQUksSUFBRSxHQUFHLEdBQUcsS0FBSSxDQUFDLENBQUM7QUFBQSxrQkFBQztBQUFBO0FBQUUsa0JBQUksSUFBRSxJQUFFLENBQUMsSUFBRTtBQUFFLHFCQUFNLENBQUMsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLEdBQUcsR0FBRSxDQUFDLE1BQUk7QUFBRyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBQTtBQUFPLG9CQUFJLElBQUUsR0FBRSxJQUFFO0FBQUUsa0JBQUcsS0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxJQUFJLENBQUM7QUFBRSxvQkFBRztBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFBLGdCQUFDLFNBQU8sR0FBTjtBQUFTLHNCQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxPQUFLO0FBQUcsMEJBQU07QUFBRSxzQkFBSSxJQUFFLEdBQUcsR0FBRyxLQUFJLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRTtBQUFBLGNBQUMsT0FBSztBQUFDLG9CQUFJLElBQUUsSUFBSSxDQUFDO0FBQUUsb0JBQUc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUEsZ0JBQUMsU0FBTyxHQUFOO0FBQVMsc0JBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxFQUFFLE9BQUs7QUFBRywwQkFBTTtBQUFFLHNCQUFJLElBQUUsR0FBRyxHQUFHLEtBQUksQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsSUFBRSxDQUFDLElBQUU7QUFBRSxxQkFBTSxDQUFDLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEdBQUcsQ0FBQyxJQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxLQUFHLEdBQUUsSUFBRSxFQUFFLEtBQUcsQ0FBQztBQUFFLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsR0FBRSxJQUFHLEdBQUcsQ0FBQyxJQUFFLElBQUUsS0FBRyxJQUFFLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsRUFBRSxHQUFHLElBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLFNBQU8sR0FBRSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxHQUFHLEdBQUUsSUFBRSxHQUFHLEVBQUUsU0FBTyxDQUFDLEdBQUUsSUFBRSxPQUFJO0FBQUMsbUJBQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxHQUFHLEtBQUksSUFBRSxJQUFFLENBQUMsSUFBRSxJQUFFO0FBQUUsb0JBQUcsSUFBRSxNQUFJO0FBQUUsc0JBQUksSUFBRSxFQUFFLENBQUM7QUFBQTtBQUFPLDBCQUFPO0FBQUEseUJBQVE7QUFBRSwwQkFBSSxJQUFFO0FBQUU7QUFBQSx5QkFBVztBQUFFLGlDQUFPO0FBQUMsMkJBQUcsR0FBRSxDQUFDO0FBQUUsNEJBQUksSUFBRSxFQUFFLENBQUM7QUFBRSw0QkFBRyxLQUFHO0FBQUUsOEJBQUcsS0FBRztBQUFFLGdDQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBQTtBQUFRLGdDQUFJLElBQUU7QUFBQTtBQUFPLDhCQUFJLElBQUU7QUFBRyw0QkFBRyxNQUFJLEdBQUU7QUFBQyw4QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsd0JBQUs7QUFBQSxzQkFBQztBQUFDO0FBQUE7QUFBYywwQkFBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxHQUFFO0FBQUMsNEJBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsNEJBQUcsTUFBSTtBQUFFLDhCQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSTtBQUFFLGdDQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsSUFBRSxHQUFFLElBQUUsS0FBRyxFQUFFLENBQUM7QUFBQTtBQUFPLGdDQUFJLElBQUUsRUFBRSxDQUFDO0FBQUEsaUNBQVUsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSTtBQUFFLHFDQUFPO0FBQUMsZ0NBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsZ0NBQUcsTUFBSSxHQUFFO0FBQUMsa0NBQUksSUFBRSxNQUFJLElBQUUsSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBLDRCQUFLO0FBQUEsMEJBQUM7QUFBQTtBQUFNLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUEsc0JBQUM7QUFBTSw0QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUUsb0JBQUcsSUFBRSxNQUFJO0FBQUUseUJBQU8sR0FBRyxHQUFHO0FBQUUsd0JBQU87QUFBQSx1QkFBUTtBQUFFLHdCQUFJLElBQUUsSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsR0FBRyxLQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxHQUFFLEtBQUcsTUFBSSxLQUFHLFFBQU0sSUFBRTtBQUFHLHdCQUFHO0FBQUcsMEJBQUksS0FBRztBQUFBO0FBQVEsMEJBQUksS0FBRyxTQUFPLElBQUUsSUFBRSxHQUFFLEtBQUcsT0FBSyxLQUFHLEtBQUcsSUFBRTtBQUFHLHdCQUFJLEtBQUcsS0FBRyxJQUFJLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRTtBQUFFLHVCQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFjO0FBQUUsd0JBQUksS0FBRyxJQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxHQUFHLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxJQUFFLElBQUksR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFFLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVC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R0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLEtBQUcsSUFBRSxDQUFDLENBQUM7QUFBQTtBQUFVLHVCQUFHLEdBQUUsQ0FBQztBQUFFO0FBQUE7QUFBQSxjQUFTO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQUksSUFBRSxJQUFFLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxpQkFBRyxDQUFDO0FBQUUsa0JBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEdBQUcsS0FBSSxJQUFFLElBQUUsQ0FBQyxJQUFFLElBQUU7QUFBRSxrQkFBRyxLQUFHLE1BQUk7QUFBRSxvQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQU8sd0JBQU87QUFBQSx1QkFBUTtBQUFFLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHVCQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSx3QkFBRyxNQUFJO0FBQUUsMEJBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFBLDZCQUFVLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSxpQ0FBTztBQUFDLDRCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLDRCQUFHLE1BQUksR0FBRTtBQUFDLDhCQUFJLElBQUUsTUFBSSxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx3QkFBSztBQUFBLHNCQUFDO0FBQUE7QUFBTSwwQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFHLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBO0FBQWMsd0JBQUksSUFBRTtBQUFBO0FBQUUsa0JBQUcsS0FBRyxNQUFJO0FBQUUsdUJBQU8sR0FBRyxHQUFHO0FBQUUsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFHLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFHLEtBQUksQ0FBQyxDQUFDO0FBQUUseUJBQU8sTUFBSSxJQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksSUFBRSxHQUFFLE1BQUksSUFBRSxLQUFHLENBQUMsR0FBRSxDQUFDLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFHLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFHLEtBQUksR0FBRyxHQUFFLEdBQUUsR0FBRyxDQUFDLElBQUUsSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcsc0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQyxJQUFFO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQTtBQUFVLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUE7QUFBQSxZQUFFO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsR0FBRSxJQUFFLE9BQUk7QUFBQyxtQkFBRyxDQUFDO0FBQUUsb0JBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUcsS0FBSSxJQUFFLElBQUUsQ0FBQyxJQUFFLElBQUU7QUFBRSxvQkFBRyxJQUFFLE1BQUk7QUFBRSxzQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQU8sMEJBQU87QUFBQSx5QkFBUTtBQUFFLDBCQUFJLElBQUU7QUFBRTtBQUFBLHlCQUFXO0FBQUUsaUNBQU87QUFBQywyQkFBRyxHQUFFLENBQUM7QUFBRSw0QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLDRCQUFHLEtBQUc7QUFBRSw4QkFBRyxLQUFHO0FBQUUsZ0NBQUksSUFBRSxLQUFHLEtBQUcsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFBO0FBQVEsZ0NBQUksSUFBRSxHQUFHLEtBQUksQ0FBQyxJQUFFLElBQUU7QUFBQTtBQUFPLDhCQUFJLElBQUU7QUFBRyw0QkFBRyxNQUFJLEdBQUU7QUFBQyw4QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsd0JBQUs7QUFBQSxzQkFBQztBQUFDO0FBQUEseUJBQVc7QUFBRSwwQkFBSSxJQUFFO0FBQUU7QUFBQSx5QkFBVztBQUFFLDBCQUFJLElBQUU7QUFBRTtBQUFBO0FBQWMsMEJBQUksSUFBRTtBQUFBO0FBQUUsb0JBQUcsSUFBRSxNQUFJO0FBQUUseUJBQU8sR0FBRyxHQUFHO0FBQUUsd0JBQU87QUFBQSx1QkFBUTtBQUFFLHdCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsd0JBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLDZCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHVCQUFHLEdBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQWM7QUFBRSx1QkFBRyxHQUFFLEdBQUc7QUFBRSx3QkFBSSxJQUFFLElBQUksR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxLQUFHO0FBQUUsdUJBQUcsR0FBRSxFQUFFLEVBQUU7QUFBRSx3QkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBRyxTQUFTLElBQUc7QUFBQyw2QkFBTyxHQUFHLEdBQUUsRUFBRTtBQUFBLG9CQUFDLEdBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRSxJQUFHLElBQUU7QUFBRTtBQUFBLHVCQUFjO0FBQUUsd0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDO0FBQUUsMkJBQU8sR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFFLDJCQUFPLEdBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDO0FBQUE7QUFBVSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsS0FBRyxLQUFHLEdBQUUsSUFBRSxHQUFHLEtBQUcsSUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsSUFBRyxJQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUU7QUFBRTtBQUFBO0FBQUEsY0FBUztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsT0FBSTtBQUFDLG1CQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRyxLQUFJLElBQUUsSUFBRSxDQUFDLElBQUUsSUFBRTtBQUFFLG9CQUFHLElBQUUsTUFBSTtBQUFFLHNCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUE7QUFBTywwQkFBTztBQUFBLHlCQUFRO0FBQUUsMEJBQUks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TyxFQUFFLEVBQUU7QUFBQTtBQUFBLG9CQUFFO0FBQUE7QUFBUywyQkFBTyxFQUFFLEVBQUU7QUFBQTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQztBQUFPLHNCQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFJO0FBQUUsMkJBQU8sRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDO0FBQU8sc0JBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQUk7QUFBRSwyQkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUM7QUFBTyxzQkFBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBSTtBQUFFLDJCQUFPLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQztBQUFPLHNCQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFJO0FBQUUsMkJBQU8sRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDO0FBQU8sc0JBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQUk7QUFBRSwyQkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUM7QUFBTyxzQkFBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBSTtBQUFFLDJCQUFPLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQztBQUFPLHNCQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFJO0FBQUUsMkJBQU8sRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDO0FBQU8sc0JBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQUk7QUFBRSwyQkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsbUJBQUcsSUFBRyxFQUFFO0FBQUUsb0JBQUksS0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUUsb0JBQUcsT0FBSyxHQUFFO0FBQUM7QUFBTyx3QkFBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBSTtBQUFFLDZCQUFPLEVBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU8sT0FBSyxJQUFFLEVBQUUsRUFBRSxJQUFFLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQztBQUFFLDZCQUFPO0FBQUMsd0JBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFJO0FBQUUsaUNBQU87QUFBQywyQkFBRyxJQUFHLEVBQUU7QUFBRSw0QkFBSSxLQUFHLElBQUksRUFBRSxFQUFFLENBQUM7QUFBRSw0QkFBRyxJQUFFLE9BQUs7QUFBRSxpQ0FBTyxFQUFFLEVBQUU7QUFBRSxnQ0FBTztBQUFBLCtCQUFTO0FBQUUsbUNBQU8sRUFBRSxFQUFFO0FBQUEsK0JBQU87QUFBRSxtQ0FBTyxFQUFFLEVBQUU7QUFBQSwrQkFBTztBQUFFO0FBQUEsK0JBQWM7QUFBRSxxQ0FBUztBQUFBO0FBQVUsbUNBQU8sR0FBRyxFQUFFO0FBQUE7QUFBQSxzQkFBRTtBQUFDLDJCQUFPLEVBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUEsY0FBQztBQUFDLGlCQUFHLENBQUM7QUFBRSxrQkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLEtBQUcsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxHQUFHLEtBQUksSUFBRSxJQUFFLENBQUMsSUFBRSxJQUFFO0FBQUUsa0JBQUcsS0FBRyxPQUFLO0FBQUUsb0JBQUksS0FBRyxFQUFFLENBQUM7QUFBQTtBQUFPLHdCQUFPO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxLQUFHO0FBQUc7QUFBQSx1QkFBVztBQUFFLHdCQUFJLEtBQUc7QUFBRztBQUFBLHVCQUFXO0FBQUUsd0JBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDO0FBQU8sNEJBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDLDhCQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx3QkFBSztBQUFBLG9CQUFDO0FBQU0sMEJBQUksS0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRztBQUFFO0FBQUEsdUJBQVc7QUFBRSx1QkFBRyxHQUFFLENBQUM7QUFBRSx3QkFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxLQUFHLE1BQUksRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQyxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxLQUFHO0FBQUU7QUFBQSx1QkFBVztBQUFFLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFHLEtBQUcsT0FBSyxJQUFFLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLEtBQUc7QUFBRztBQUFBLHVCQUFXO0FBQUUsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEdBQUcsS0FBSSxLQUFHLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRSxJQUFHLEtBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsS0FBRyxFQUFFLENBQUMsS0FBRyxPQUFLLElBQUUsS0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRztBQUFHO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHO0FBQUc7QUFBQSx1QkFBVztBQUFHLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLElBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUFFLHdCQUFHLElBQUUsTUFBSTtBQUFFLDBCQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUE7QUFBTyw4QkFBTztBQUFBLDZCQUFRO0FBQUUsNkJBQUcsR0FBRSxFQUFFO0FBQUUs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QUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEscUNBQVc7QUFBRTtBQUFBLHFDQUFjO0FBQUUsc0NBQUksS0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHFDQUFXO0FBQUUsc0NBQUksS0FBRyxHQUFHLENBQUM7QUFBRTtBQUFBO0FBQWMsc0NBQUksS0FBRyxHQUFHLENBQUM7QUFBQTtBQUFFO0FBQUEsMEJBQUs7QUFBQztBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRyxHQUFHLENBQUM7QUFBRTtBQUFBO0FBQWMsOEJBQUksS0FBRyxHQUFHLENBQUM7QUFBQTtBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHO0FBQUc7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUc7QUFBRztBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUUsSUFBRyxLQUFHLE9BQUssS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLEtBQUcsRUFBRSxDQUFDLEtBQUcsT0FBSyxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsS0FBRyxFQUFFLENBQUMsS0FBRyxPQUFLLElBQUUsS0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsd0JBQUcsT0FBSztBQUFFLDBCQUFJLEtBQUc7QUFBQSw2QkFBVyxPQUFLLEdBQUU7QUFBQyx5QkFBRyxHQUFFLEVBQUU7QUFBRSwwQkFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxLQUFHLE9BQUssSUFBRSxLQUFHLE9BQUssS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLEtBQUcsRUFBRSxDQUFDLEtBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUM7QUFBTSwwQkFBSSxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEdBQUcsS0FBSSxLQUFHLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRSxJQUFHLEtBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsS0FBRyxFQUFFLENBQUMsS0FBRyxPQUFLLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQyxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLElBQUU7QUFBRyx3QkFBRyxPQUFLLEdBQUU7QUFBQywwQkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEdBQUcsS0FBSSxLQUFHLEtBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFHLDBCQUFHLE9BQUs7QUFBRSw0QkFBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDLDhCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRTtBQUFHLDhCQUFHLE9BQUssS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSxnQ0FBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLElBQUUsSUFBRyxLQUFHLE9BQUssS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFBO0FBQU8sZ0NBQUksS0FBRyxFQUFFLENBQUM7QUFBQSx3QkFBQztBQUFNLDhCQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUE7QUFBTyw0QkFBSSxLQUFHLE9BQUssS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQU0sMEJBQUksS0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRztBQUFHO0FBQUEsdUJBQVc7QUFBRyx3QkFBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxHQUFFO0FBQUMsMEJBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsMEJBQUcsT0FBSztBQUFFLDRCQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsS0FBRyxFQUFFLENBQUM7QUFBQSwrQkFBVSxPQUFLLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJO0FBQUUsbUNBQU87QUFBQyw4QkFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSw4QkFBRyxPQUFLLEdBQUU7QUFBQyxnQ0FBSSxLQUFHLE9BQUssSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsMEJBQUs7QUFBQSx3QkFBQztBQUFBO0FBQU0sNEJBQUksS0FBRyxFQUFFLENBQUM7QUFBQSxvQkFBQztBQUFNLDBCQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUc7QUFBRztBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUc7QUFBRztBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxHQUFHLEtBQUksSUFBRSxLQUFHLENBQUMsSUFBRSxJQUFFLElBQUUsSUFBRyxLQUFHLE1BQUksSUFBRSxLQUFHLE1BQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLEtBQUcsRUFBRSxDQUFDLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUc7QUFBRztBQUFBO0FBQWMsd0JBQUksS0FBRztBQUFBO0FBQUcsa0JBQUcsS0FBRyxPQUFLO0FBQUUsdUJBQU8sR0FBRyxHQUFHO0FBQUUsa0JBQUksSUFBRTtBQUFHLGtCQUFHLE1BQUk7QUFBRSx3QkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSx1QkFBTztBQUFHLHdCQUFJLElBQUUsRUFBRTtBQUFHLHdCQUFJLENBQUM7QUFBRSx3QkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEVBQUUsRUFBRTtBQUFFLHVCQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxJQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLEdBQUc7QUFBRSx3QkFBRyxLQUFHLEdBQUU7QUFBQywwQkFBRyxFQUFFLElBQUU7QUFBRywrQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsMEJBQUksS0FBRyxHQUFHLElBQUcsR0FBRztBQUFFLDBCQUFHLEtBQUcsSUFBRztBQUFDLDRCQUFHLEVBQUUsSUFBRTtBQUFJLGlDQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw0QkFBSSxLQUFHLEdBQUcsSUFBRyxHQUFHO0FBQUUsNEJBQUcsS0FBRyxJQUFHO0FBQUMsOEJBQUcsRUFBRSxJQUFFO0FBQUksbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSx3QkFBQyxPQUFLO0FBQUMsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsd0JBQUM7QUFBQSxzQkFBQyxPQUFLO0FBQUMsNEJBQUksS0FBRyxHQUFHLElBQUcsR0FBRztBQUFFLDRCQUFHLEtBQUcsSUFBRztBQUFDLDhCQUFHLEVBQUUsSUFBRTtBQUFJLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsd0JBQUMsT0FBSztBQUFDLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHdCQUFDO0FBQUEsc0JBQUM7QUFBQSxvQkFBQyxPQUFLO0FBQUMsMEJBQUksS0FBRyxHQUFHLElBQUcsR0FBRztBQUFFLDBCQUFHLEtBQUcsSUFBRztBQUFDLDRCQUFHLEVBQUUsSUFBRTtBQUFJLGlDQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw0QkFBSSxLQUFHLEdBQUcsSUFBRyxHQUFHO0FBQUUsNEJBQUcsS0FBRyxJQUFHO0FBQUMsOEJBQUcsRUFBRSxJQUFFO0FBQUksbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSx3QkFBQyxPQUFLO0FBQUMsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsd0JBQUM7QUFBQSxzQkFBQyxPQUFLO0FBQUMsNEJBQUksS0FBRyxHQUFHLElBQUcsR0FBRztBQUFFLDRCQUFHLEtBQUcsSUFBRztBQUFDLDhCQUFHLEVBQUUsSUFBRTtBQUFJLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsd0JBQUMsT0FBSztBQUFDLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDhCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsOEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLG1DQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHdCQUFDO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFDLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUcsd0JBQUksS0FBRyxFQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRTtBQUFBO0FBQVUsd0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFBRSxzQkFBTztBQUFBLHFCQUFRO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRyx5QkFBTSxDQUFDLEdBQUUsSUFBRyxHQUFHLElBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsc0JBQUcsRUFBRSxJQUFHO0FBQUMsd0JBQUksS0FBRyxFQUFFLEtBQUcsSUFBSSxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQU8sR0FBRyxHQUFHLEdBQUUsS0FBRyxJQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUcsR0FBRSxLQUFHLElBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQUcsSUFBRyxHQUFHLElBQUcsR0FBRSxHQUFHLEVBQUUsSUFBRSxJQUFFLENBQUMsQ0FBQztBQUFFLHNCQUFJLEtBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRztBQUFHLHlCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUcsSUFBRyxJQUFHLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUcsRUFBRTtBQUFHLDJCQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUscUJBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFJLEtBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsSUFBRSxHQUFFLEtBQUcsTUFBSSxFQUFFLENBQUM7QUFBRSx5QkFBTyxPQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsR0FBRztBQUFBLHFCQUFPO0FBQUUsc0JBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUcseUJBQU0sQ0FBQyxHQUFFLElBQUcsR0FBRyxJQUFHLElBQUcsR0FBRyxJQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTyxFQUFFLE9BQUssSUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxFQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRztBQUFBLHFCQUFPO0FBQUUsc0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLHFCQUFHLElBQUcsRUFBRTtBQUFFLHNCQUFJLEtBQUcsSUFBSSxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFO0FBQUUseUJBQU0sQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLHFCQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFHLElBQUksR0FBRSxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFH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QUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHFCQUFHLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBRSxzQkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLElBQUUsSUFBRyxLQUFHLE9BQUssSUFBRSxJQUFFLEdBQUUsS0FBRyxNQUFJLEVBQUUsQ0FBQztBQUFFLHlCQUFPLE9BQUssSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxHQUFHO0FBQUEscUJBQU87QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEscUJBQU87QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEscUJBQU87QUFBQSxxQkFBUTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQTtBQUFVLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLGlCQUFHLENBQUM7QUFBRSxrQkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsR0FBRyxLQUFJLElBQUUsSUFBRSxDQUFDLElBQUUsSUFBRTtBQUFFLGtCQUFHLElBQUUsTUFBSTtBQUFFLG9CQUFJLElBQUUsRUFBRSxDQUFDO0FBQUE7QUFBTyx3QkFBTztBQUFBLHVCQUFRO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEdBQUU7QUFBQztBQUFPLDRCQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEdBQUU7QUFBQyw4QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsd0JBQUs7QUFBQSxvQkFBQztBQUFNLDBCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUUsdUJBQUcsR0FBRSxDQUFDO0FBQUUsd0JBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUE7QUFBYyx1QkFBRyxHQUFFLENBQUM7QUFBRSx3QkFBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFFLE1BQUksSUFBRSxJQUFFLE1BQUksSUFBRSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUUsa0JBQUcsSUFBRSxNQUFJO0FBQUUsdUJBQU8sR0FBRyxHQUFHO0FBQUUsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxHQUFFLElBQUU7QUFBRTtBQUFFLCtCQUFPO0FBQUMseUJBQUcsQ0FBQztBQUFFLDBCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxHQUFHLEtBQUksSUFBRSxJQUFFLENBQUMsSUFBRSxJQUFFO0FBQUUsMEJBQUcsSUFBRSxNQUFJO0FBQUUsNEJBQUksS0FBRyxFQUFFLENBQUM7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QUFFLEtBQUc7QUFBQTtBQUFPLHdEQUFJLEtBQUc7QUFBQTtBQUFTLHNEQUFJLEtBQUc7QUFBQTtBQUFTLG9EQUFJLEtBQUc7QUFBQTtBQUFTLGtEQUFJLEtBQUc7QUFBQTtBQUFTLGdEQUFJLEtBQUc7QUFBQTtBQUFTLDhDQUFJLEtBQUc7QUFBQTtBQUFTLDRDQUFJLEtBQUc7QUFBQSw2Q0FBWSxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsa0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxvREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHVEQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyxzREFBSSxLQUFHO0FBQUE7QUFBUyxvREFBSSxLQUFHO0FBQUE7QUFBUyxrREFBSSxLQUFHO0FBQUE7QUFBUyxnREFBSSxLQUFHO0FBQUE7QUFBUyw4Q0FBSSxLQUFHO0FBQUE7QUFBUyw0Q0FBSSxLQUFHO0FBQUE7QUFBUywwQ0FBSSxLQUFHO0FBQUksd0NBQUcsQ0FBQztBQUFHLDBDQUFJLEtBQUc7QUFBQSxrQ0FBRTtBQUFNLHdDQUFJLEtBQUc7QUFBQSxxQ0FBUTtBQUFDLHNDQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxLQUFHO0FBQUUsc0NBQUcsS0FBRztBQUFHLHdDQUFHLElBQUU7QUFBRywwQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDRDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsOENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxnREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGtEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsb0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxzREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHlEQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFB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QUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxLQUFHO0FBQUUsa0NBQUcsS0FBRztBQUFFLG9DQUFHLElBQUUsR0FBRTtBQUFDLHNDQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxLQUFHO0FBQUUsc0NBQUcsS0FBRztBQUFHLHdDQUFHLElBQUU7QUFBRywwQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDRDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsOENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxnREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGtEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsb0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxzREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHlEQUFHLEdBQUUsSUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyx3REFBSSxLQUFHO0FBQUE7QUFBUyxzREFBSSxLQUFHO0FBQUE7QUFBUyxvREFBSSxLQUFHO0FBQUE7QUFBUyxrREFBSSxLQUFHO0FBQUE7QUFBUyxnREFBSSxLQUFHO0FBQUE7QUFBUyw4Q0FBSSxLQUFHO0FBQUE7QUFBUyw0Q0FBSSxLQUFHO0FBQUE7QUFBUywwQ0FBSSxLQUFHO0FBQUEsMkNBQVksR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsa0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxxREFBRyxHQUFFLElBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sb0RBQUksS0FBRztBQUFBO0FBQVMsa0RBQUksS0FBRztBQUFBO0FBQVMsZ0RBQUksS0FBRztBQUFBO0FBQVMsOENBQUksS0FBRztBQUFBO0FBQVMsNENBQUksS0FBRztBQUFBO0FBQVMsMENBQUksS0FBRztBQUFBO0FBQVMsd0NBQUks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QUFBTyxzREFBSSxJQUFFO0FBQUE7QUFBUyxvREFBSSxJQUFFO0FBQUE7QUFBUyxrREFBSSxJQUFFO0FBQUE7QUFBUyxnREFBSSxJQUFFO0FBQUE7QUFBUyw4Q0FBSSxJQUFFO0FBQUE7QUFBUyw0Q0FBSSxJQUFFO0FBQUE7QUFBUywwQ0FBSSxJQUFFO0FBQUEsMkNBQVksR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsa0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxxREFBRyxHQUFFLEtBQUcsR0FBRSxJQUFFLEdBQUUsSUFBRTtBQUFBO0FBQU8sb0RBQUksSUFBRTtBQUFBO0FBQVMsa0RBQUksSUFBRTtBQUFBO0FBQVMsZ0RBQUksSUFBRTtBQUFBO0FBQVMsOENBQUksSUFBRTtBQUFBO0FBQVMsNENBQUksSUFBRTtBQUFBO0FBQVMsMENBQUksSUFBRTtBQUFBO0FBQVMsd0NBQUksSUFBRTtBQUFJLHNDQUFHLENBQUM7QUFBRSx3Q0FBSSxJQUFFO0FBQUEsZ0NBQUM7QUFBTSxzQ0FBSSxJQUFFO0FBQUEsbUNBQVE7QUFBQyxvQ0FBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsS0FBRztBQUFFLG9DQUFHLEtBQUc7QUFBRyxzQ0FBRyxJQUFFO0FBQUcsd0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSwwQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDRDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsOENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxnREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGtEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsb0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx1REFBRyxHQUFFLEtBQUcsR0FBRSxJQUFFLEdBQUUsS0FBRztBQUFBO0FBQU8sc0RBQUksS0FBRztBQUFBO0FBQVMsb0RBQUksS0FBRztBQUFBO0FBQVMsa0RBQUksS0FBRztBQUFBO0FBQVMsZ0RBQUksS0FBRztBQUFBO0FBQVMsOENBQUksS0FBRztBQUFBO0FBQVMsNENBQUksS0FBRztBQUFBO0FBQVMsMENBQUksS0FBRztBQUFBO0FBQVMsd0NBQUksS0FBRztBQUFBLHlDQUFZLEdBQUcsR0FBRSxHQUFHO0FBQUUsc0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsbURBQUcsR0FBRSxLQUFHLEdBQUUsSUFBRSxHQUFFLEtBQUc7QUFBQTtBQUFPLGtEQUFJLEtBQUc7QUFBQTtBQUFTLGdEQUFJLEtBQUc7QUFBQTtBQUFTLDhDQUFJLEtBQUc7QUFBQTtBQUFTLDRDQUFJLEtBQUc7QUFBQTtBQUFTLDBDQUFJLEtBQUc7QUFBQTtBQUFTLHdDQUFJLEtBQUc7QUFBQTtBQUFTLHNDQUFJLEtBQUc7QUFBSSxvQ0FBRyxDQUFDO0FBQUcsc0NBQUksSUFBRTtBQUFBLDhCQUFFO0FBQUMsa0NBQUcsQ0FBQztBQUFFLG9DQUFJLElBQUU7QUFBQSw0QkFBQztBQUFNLGtDQUFJLElBQUU7QUFBQSwrQkFBUTtBQUFDLGdDQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxLQUFHO0FBQUUsZ0NBQUcsS0FBRztBQUFHLGtDQUFHLElBQUUsSUFBRztBQUFDLG9DQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxLQUFHO0FBQUUsb0NBQUcsS0FBRztBQUFHLHNDQUFHLElBQUU7QUFBRyx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsa0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxvREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHVEQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyxzREFBSSxLQUFHO0FBQUE7QUFBUyxvREFBSSxLQUFHO0FBQUE7QUFBUyxrREFBSSxLQUFHO0FBQUE7QUFBUyxnREFBSSxLQUFHO0FBQUE7QUFBUyw4Q0FBSSxLQUFHO0FBQUE7QUFBUyw0Q0FBSSxLQUFHO0FBQUE7QUFBUywwQ0FBSSxLQUFHO0FBQUE7QUFBUyx3Q0FBSSxLQUFHO0FBQUEseUNBQVksR0FBRyxHQUFFLEdBQUc7QUFBRSxzQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHdDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsMENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw0Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDhDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsZ0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxtREFBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sa0RBQUksS0FBRztBQUFBO0FBQVMsZ0RBQUksS0FBRztBQUFBO0FBQVMsOENBQUksS0FBRztBQUFBO0FBQVMsNENBQUksS0FBRztBQUFBO0FBQVMsMENBQUksS0FBRztBQUFBO0FBQVMsd0NBQUksS0FBRztBQUFBO0FBQVMsc0NBQUksS0FBRztBQUFJLG9DQUFHLENBQUM7QUFBRyxzQ0FBSSxLQUFHO0FBQUEsOEJBQUU7QUFBTSxvQ0FBSSxLQUFHO0FBQUEsaUNBQVE7QUFBQyxrQ0FBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsS0FBRztBQUFFLGtDQUFHLEtBQUc7QUFBRyxvQ0FBRyxJQUFFO0FBQUcsc0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsa0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxxREFBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sb0RBQUksS0FBRztBQUFBO0FBQVMsa0RBQUksS0FBRztBQUFBO0FBQVMsZ0RBQUksS0FBRztBQUFBO0FBQVMsOENBQUksS0FBRztBQUFBO0FBQVMsNENBQUksS0FBRztBQUFBO0FBQVMsMENBQUksS0FBRztBQUFBO0FBQVMsd0NBQUksS0FBRztBQUFBO0FBQVMsc0NBQUksS0FBRztBQUFBLHVDQUFZLEdBQUcsR0FBRSxHQUFHO0FBQUUsb0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxzQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHdDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsMENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw0Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDhDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsaURBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLGdEQUFJLEtBQUc7QUFBQTtBQUFTLDhDQUFJLEtBQUc7QUFBQTtBQUFTLDRDQUFJLEtBQUc7QUFBQTtBQUFTLDBDQUFJLEtBQUc7QUFBQTtBQUFTLHdDQUFJLEtBQUc7QUFBQTtBQUFTLHNDQUFJLEtBQUc7QUFBQTtBQUFTLG9DQUFJLEtBQUc7QUFBSSxrQ0FBRyxDQUFDO0FBQUcsb0NBQUksS0FBRztBQUFBLDRCQUFFO0FBQUMsZ0NBQUcsQ0FBQztBQUFHLGtDQUFJLElBQUU7QUFBQSwwQkFBRTtBQUFDLDhCQUFHLENBQUM7QUFBRyxnQ0FBSSxLQUFHO0FBQUEsd0JBQUM7QUFBTSw4QkFBSSxLQUFHO0FBQUEsMkJBQVE7QUFBQyw0QkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsS0FBRztBQUFFLDRCQUFHLEtBQUc7QUFBRyw4QkFBRyxJQUFFLElBQUc7QUFBQyxnQ0FBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsS0FBRztBQUFFLGdDQUFHLEtBQUc7QUFBRyxrQ0FBRyxJQUFFLElBQUc7QUFBQyxvQ0FBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsS0FBRztBQUFFLG9DQUFHLEtBQUc7QUFBRyxzQ0FBRyxJQUFFO0FBQUcsd0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSwwQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDRDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsOENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxnREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGtEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsb0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx1REFBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sc0RBQUksS0FBRztBQUFBO0FBQVMsb0RBQUksS0FBRztBQUFBO0FBQVMsa0RBQUksS0FBRztBQUFBO0FBQVMsZ0RBQUksS0FBRztBQUFBO0FBQVMsOENBQUksS0FBRztBQUFBO0FBQVMsNENBQUksS0FBRztBQUFBO0FBQVMsMENBQUksS0FBRztBQUFBO0FBQVMsd0NBQUksS0FBRztBQUFBLHlDQUFZLEdBQUcsR0FBRSxHQUFHO0FBQUUsc0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsbURBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLGtEQUFJLEtBQUc7QUFBQTtBQUFTLGdEQUFJLEtBQUc7QUFBQTtBQUFTLDhDQUFJLEtBQUc7QUFBQTtBQUFTLDRDQUFJLEtBQUc7QUFBQTtBQUFTLDBDQUFJLEtBQUc7QUFBQTtBQUFTLHdDQUFJLEtBQUc7QUFBQTtBQUFTLHNDQUFJLEtBQUc7QUFBSSxvQ0FBRyxDQUFDO0FBQUcsc0NBQUksS0FBRztBQUFBLDhCQUFFO0FBQU0sb0NBQUksS0FBRztBQUFBLGlDQUFRO0FBQUMsa0NBQUksS0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFFLEtBQUc7QUFBRSxrQ0FBRyxLQUFHO0FBQUcsb0NBQUcsSUFBRTtBQUFHLHNDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsd0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSwwQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDRDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsOENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxnREFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGtEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUscURBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLG9EQUFJLEtBQUc7QUFBQTtBQUFTLGtEQUFJLEtBQUc7QUFBQTtBQUFTLGdEQUFJLEtBQUc7QUFBQTtBQUFTLDhDQUFJLEtBQUc7QUFBQTtBQUFTLDRDQUFJLEtBQUc7QUFBQTtBQUFTLDBDQUFJLEtBQUc7QUFBQTtBQUFTLHdDQUFJLEtBQUc7QUFBQTtBQUFTLHNDQUFJLEtBQUc7QUFBQSx1Q0FBWSxHQUFHLEdBQUUsR0FBRztBQUFFLG9DQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsc0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGlEQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyxnREFBSSxLQUFHO0FBQUE7QUFBUyw4Q0FBSSxLQUFHO0FBQUE7QUFBUyw0Q0FBSSxLQUFHO0FBQUE7QUFBUywwQ0FBSSxLQUFHO0FBQUE7QUFBUyx3Q0FBSSxLQUFHO0FBQUE7QUFBUyxzQ0FBSSxLQUFHO0FBQUE7QUFBUyxvQ0FBSSxLQUFHO0FBQUksa0NBQUcsQ0FBQztBQUFHLG9DQUFJLEtBQUc7QUFBQSw0QkFBRTtBQUFDLGdDQUFHLENBQUM7QUFBRyxrQ0FBSSxLQUFHO0FBQUEsMEJBQUU7QUFBTSxnQ0FBSSxLQUFHO0FBQUEsNkJBQVE7QUFBQyw4QkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsS0FBRztBQUFFLDhCQUFHLEtBQUc7QUFBRyxnQ0FBRyxJQUFFLElBQUc7QUFBQyxrQ0FBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsS0FBRztBQUFFLGtDQUFHLEtBQUc7QUFBRyxvQ0FBRyxJQUFFO0FBQUcsc0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsa0RBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxxREFBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sb0RBQUksS0FBRztBQUFBO0FBQVMsa0RBQUksS0FBRztBQUFBO0FBQVMsZ0RBQUksS0FBRztBQUFBO0FBQVMsOENBQUksS0FBRztBQUFBO0FBQVMsNENBQUksS0FBRztBQUFBO0FBQVMsMENBQUksS0FBRztBQUFBO0FBQVMsd0NBQUksS0FBRztBQUFBO0FBQVMsc0NBQUksS0FBRztBQUFBLHVDQUFZLEdBQUcsR0FBRSxHQUFHO0FBQUUsb0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxzQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHdDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsMENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw0Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDhDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsaURBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLGdEQUFJLEtBQUc7QUFBQTtBQUFTLDhDQUFJLEtBQUc7QUFBQTtBQUFTLDRDQUFJLEtBQUc7QUFBQTtBQUFTLDBDQUFJLEtBQUc7QUFBQTtBQUFTLHdDQUFJLEtBQUc7QUFBQTtBQUFTLHNDQUFJLEtBQUc7QUFBQTtBQUFTLG9DQUFJLEtBQUc7QUFBSSxrQ0FBRyxDQUFDO0FBQUcsb0NBQUksS0FBRztBQUFBLDRCQUFFO0FBQU0sa0NBQUksS0FBRztBQUFBLCtCQUFRO0FBQUMsZ0NBQUksS0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFFLEtBQUc7QUFBRSxnQ0FBRyxLQUFHO0FBQUcsa0NBQUcsSUFBRTtBQUFHLG9DQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsc0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSx3Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDBDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw4Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLGdEQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsbURBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLGtEQUFJLEtBQUc7QUFBQTtBQUFTLGdEQUFJLEtBQUc7QUFBQTtBQUFTLDhDQUFJLEtBQUc7QUFBQTtBQUFTLDRDQUFJLEtBQUc7QUFBQTtBQUFTLDBDQUFJLEtBQUc7QUFBQTtBQUFTLHdDQUFJLEtBQUc7QUFBQTtBQUFTLHNDQUFJLEtBQUc7QUFBQTtBQUFTLG9DQUFJLEtBQUc7QUFBQSxxQ0FBWSxHQUFHLEdBQUUsR0FBRztBQUFFLGtDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsb0NBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSxzQ0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLHdDQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsMENBQUcsR0FBRyxHQUFFLEdBQUc7QUFBRSw0Q0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLCtDQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyw4Q0FBSSxLQUFHO0FBQUE7QUFBUyw0Q0FBSSxLQUFHO0FBQUE7QUFBUywwQ0FBSSxLQUFHO0FBQUE7QUFBUyx3Q0FBSSxLQUFHO0FBQUE7QUFBUyxzQ0FBSSxLQUFHO0FBQUE7QUFBUyxvQ0FBSSxLQUFHO0FBQUE7QUFBUyxrQ0FBSSxLQUFHO0FBQUksZ0NBQUcsQ0FBQztBQUFHLGtDQUFJLEtBQUc7QUFBQSwwQkFBRTtBQUFDLDhCQUFHLENBQUM7QUFBRyxnQ0FBSSxLQUFHO0FBQUEsd0JBQUU7QUFBQyw0QkFBRyxDQUFDO0FBQUcsOEJBQUksS0FBRztBQUFBLHNCQUFFO0FBQUMsMEJBQUcsQ0FBQyxJQUFHO0FBQUMsNEJBQUksS0FBRztBQUFHLDZCQUFHO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFDLHdCQUFJLEtBQUcsS0FBRyxLQUFHO0FBQUUseUJBQUcsR0FBRyxHQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsR0FBRSxHQUFHLEtBQUksR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUU7QUFBQTtBQUFpQix3QkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFO0FBQUU7QUFBQTtBQUFBLGNBQVM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxpQkFBRyxDQUFDO0FBQUUsa0JBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsS0FBRyxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsR0FBRyxLQUFJLElBQUUsSUFBRSxDQUFDLElBQUUsSUFBRTtBQUFFLGtCQUFHLEtBQUcsTUFBSTtBQUFFLG9CQUFJLElBQUUsRUFBRSxDQUFDO0FBQUE7QUFBTyx3QkFBTztBQUFBLHVCQUFRO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFFLHdCQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEdBQUU7QUFBQztBQUFPLDRCQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEdBQUU7QUFBQyw4QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsd0JBQUs7QUFBQSxvQkFBQztBQUFNLDBCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUUsdUJBQUcsR0FBRSxDQUFDO0FBQUUsd0JBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFFLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx1QkFBRyxHQUFFLENBQUM7QUFBRSx3QkFBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxJQUFFLE1BQUksSUFBRSxJQUFFLE1BQUksSUFBRSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEdBQUU7QUFBQywwQkFBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSwwQkFBRyxNQUFJO0FBQUUsNEJBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFBLCtCQUFVLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSxtQ0FBTztBQUFDLDhCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLDhCQUFHLE1BQUksR0FBRTtBQUFDLGdDQUFJLElBQUUsTUFBSSxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwwQkFBSztBQUFBLHdCQUFDO0FBQUE7QUFBTSw0QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQU0sMEJBQUksSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBO0FBQWMsd0JBQUksSUFBRTtBQUFBO0FBQUUsa0JBQUcsS0FBRyxNQUFJO0FBQUUsdUJBQU8sR0FBRyxHQUFHO0FBQUUsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTSxDQUFDLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcseUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFHLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUU7QUFBRSxxQkFBRyxJQUFHLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLElBQUUsSUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLElBQUcsR0FBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUUscUJBQUcsSUFBRyxDQUFDO0FBQUUsc0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEscUJBQU87QUFBRywyQkFBUSxJQUFFLEVBQUUsUUFBSztBQUFDLHVCQUFHLENBQUM7QUFBRSx3QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFHLElBQUUsR0FBRyxLQUFJLEtBQUcsSUFBRSxDQUFDLElBQUUsSUFBRTtBQUFFLHdCQUFHLElBQUUsT0FBSztBQUFFLDBCQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUE7QUFBTyw4QkFBTztBQUFBLDZCQUFTO0FBQUUsOEJBQUksS0FBRztBQUFFO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBRTtBQUFBO0FBQWMsOEJBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDLGdDQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLGdDQUFHLE9BQUs7QUFBRSxrQ0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSxvQ0FBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxLQUFHLE1BQUksRUFBRSxDQUFDO0FBQUE7QUFBTyxvQ0FBSSxLQUFHLEVBQUUsQ0FBQztBQUFBLHFDQUFVLE9BQUssS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSx5Q0FBTztBQUFDLG9DQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLG9DQUFHLE9BQUssR0FBRTtBQUFDLHNDQUFJLEtBQUcsT0FBSyxJQUFFLElBQUUsR0FBRSxLQUFHLE1BQUksRUFBRSxDQUFDO0FBQUU7QUFBQSxnQ0FBSztBQUFBLDhCQUFDO0FBQUE7QUFBTSxrQ0FBSSxLQUFHLEVBQUUsQ0FBQztBQUFBLDBCQUFDO0FBQU0sZ0NBQUksS0FBRyxFQUFFLENBQUM7QUFBQTtBQUFFLHdCQUFHLElBQUUsT0FBSztBQUFFLDRCQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBRSw0QkFBTztBQUFBLDJCQUFTO0FBQUU7QUFBQSwyQkFBYztBQUFFO0FBQUE7QUFBYyw0QkFBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQUU7QUFBUyw0QkFBSSxHQUFFLENBQUM7QUFBQTtBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQUE7QUFBUyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsaUJBQUcsQ0FBQztBQUFFLGtCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsa0JBQUcsS0FBRztBQUFFLG9CQUFHLEtBQUc7QUFBRSxzQkFBRyxLQUFHO0FBQUUsd0JBQUcsS0FBRztBQUFFLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBQTtBQUFPLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBQSwyQkFBVSxLQUFHO0FBQUUsd0JBQUcsS0FBRztBQUFFLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBQTtBQUFPLDBCQUFJLElBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxJQUFFLEtBQUc7QUFBQSwyQkFBVSxLQUFHO0FBQUUsd0JBQUksSUFBRSxLQUFHLEtBQUcsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFBO0FBQU8sd0JBQUksSUFBRSxLQUFHLEtBQUcsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFBO0FBQU8sc0JBQUksSUFBRSxHQUFHLEtBQUksQ0FBQyxJQUFFLElBQUU7QUFBQTtBQUFPLG9CQUFJLElBQUU7QUFBRyxrQkFBRyxJQUFFLE1BQUk7QUFBRSxvQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQU8sd0JBQU87QUFBQSx1QkFBUTtBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDO0FBQU8sNEJBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx3QkFBSztBQUFBLG9CQUFDO0FBQU0sMEJBQUksSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRSx1QkFBRyxHQUFFLENBQUM7QUFBRSx3QkFBSSxJQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHVCQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsTUFBSSxJQUFFLElBQUUsTUFBSSxJQUFFLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQTtBQUFjLHdCQUFJLElBQUU7QUFBQTtBQUFFLGtCQUFHLElBQUUsTUFBSTtBQUFFLHVCQUFPLEdBQUcsR0FBRztBQUFFLHNCQUFPO0FBQUEscUJBQVE7QUFBRSx5QkFBTSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsR0FBRSxHQUFFLEVBQUUsSUFBRyxHQUFFLENBQUMsQ0FBQztBQUFBLHFCQUFPO0FBQUUsc0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUcseUJBQU0sQ0FBQyxHQUFFLElBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQUcsSUFBRyxHQUFHO0FBQUUsc0JBQUksSUFBRSxJQUFJLEdBQUUsSUFBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQTtBQUFVLHNCQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUM7QUFB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LENBQUMsTUFBSSxLQUFHLElBQUksRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLElBQUksRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLElBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGlCQUFHLENBQUM7QUFBRSxrQkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLEtBQUcsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxHQUFHLEtBQUksSUFBRSxJQUFFLENBQUMsSUFBRSxJQUFFO0FBQUUsa0JBQUcsS0FBRyxPQUFLO0FBQUUsb0JBQUksSUFBRSxFQUFFLENBQUM7QUFBQTtBQUFPLHdCQUFPO0FBQUEsdUJBQVM7QUFBRSx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFFLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUUsd0JBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDO0FBQU8sNEJBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksR0FBRTtBQUFDLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx3QkFBSztBQUFBLG9CQUFDO0FBQU0sMEJBQUksSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRSx1QkFBRyxHQUFFLENBQUM7QUFBRSx3QkFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLE1BQUksRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxHQUFFO0FBQUMsMEJBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsS0FBRyxJQUFFO0FBQUcsMEJBQUcsT0FBSyxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBSTtBQUFFLDRCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFHLElBQUUsT0FBSyxLQUFHLElBQUksRUFBRSxDQUFDLENBQUMsTUFBSSxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUE7QUFBTyw0QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQU0sMEJBQUksSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksSUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsd0JBQUcsSUFBRSxPQUFLO0FBQUUsMEJBQUksSUFBRSxFQUFFLENBQUM7QUFBQTtBQUFPLDhCQUFPO0FBQUEsNkJBQVM7QUFBRSxxQ0FBTztBQUFDLGdDQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLGdDQUFHLElBQUUsT0FBSztBQUFFLGtDQUFJLElBQUUsRUFBRSxDQUFDO0FBQUE7QUFBTyxzQ0FBTztBQUFBLHFDQUFTO0FBQUU7QUFBQSxxQ0FBYztBQUFFLHNDQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSxxQ0FBVztBQUFFLHNDQUFJLElBQUUsR0FBRyxDQUFDO0FBQUU7QUFBQTtBQUFjLHNDQUFJLElBQUUsR0FBRyxDQUFDO0FBQUE7QUFBRTtBQUFBLDBCQUFLO0FBQUM7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUU7QUFBQTtBQUFjLDhCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUE7QUFBRTtBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxPQUFLLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsS0FBRyxFQUFFLENBQUMsSUFBRSxPQUFLLElBQUUsRUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLHdCQUFHLE9BQUssR0FBRTtBQUFDLHlCQUFHLEdBQUUsQ0FBQztBQUFFLDBCQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLDBCQUFHLElBQUUsT0FBSztBQUFFLDRCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUE7QUFBTyxnQ0FBTztBQUFBLCtCQUFTO0FBQUUsdUNBQU87QUFBQyxrQ0FBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSxrQ0FBRyxJQUFFLE9BQUs7QUFBRSxvQ0FBSSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQU8sd0NBQU87QUFBQSx1Q0FBUztBQUFFO0FBQUEsdUNBQWM7QUFBRSx3Q0FBSSxJQUFFLEdBQUcsQ0FBQztBQUFFO0FBQUE7QUFBYyx3Q0FBSSxJQUFFLEdBQUcsQ0FBQztBQUFBO0FBQUU7QUFBQSw0QkFBSztBQUFDO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxJQUFFLEdBQUcsQ0FBQztBQUFFO0FBQUE7QUFBYyxnQ0FBSSxJQUFFLEdBQUcsQ0FBQztBQUFBO0FBQUEsb0JBQUU7QUFBTSwwQkFBSSxJQUFFLE9BQUssSUFBRSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSx3QkFBRyxJQUFFLE9BQUs7QUFBRSwwQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQU8sOEJBQU87QUFBQSw2QkFBUztBQUFFLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQTtBQUFjLDhCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUE7QUFBRTtBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsd0JBQUcsSUFBRSxPQUFLO0FBQUUsMEJBQUksSUFBRSxFQUFFLENBQUM7QUFBQTtBQUFPLDhCQUFPO0FBQUEsNkJBQVM7QUFBRSw4QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFO0FBQUE7QUFBYyw4QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFBO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFHLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFHLElBQUUsT0FBSyxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFHLHdCQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSwwQkFBRyxPQUFLO0FBQUUsNEJBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFBLCtCQUFVLE9BQUssS0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQUk7QUFBRSxtQ0FBTztBQUFDLDhCQUFJLEtBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLDhCQUFHLE9BQUssR0FBRTtBQUFDLGdDQUFJLElBQUUsT0FBSyxJQUFFLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwwQkFBSztBQUFBLHdCQUFDO0FBQUE7QUFBTSw0QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQU0sMEJBQUksSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLElBQUUsSUFBRyxJQUFFLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRyxJQUFFLE1BQUksSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUE7QUFBYyx3QkFBSSxJQUFFO0FBQUE7QUFBRyxrQkFBRyxLQUFHLE1BQUk7QUFBRSx1QkFBTyxHQUFHLEdBQUc7QUFBRSxrQkFBSSxLQUFHO0FBQUUsa0JBQUcsTUFBSTtBQUFHLHdCQUFPO0FBQUEsdUJBQVM7QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLEVBQUU7QUFBRyx3QkFBSSxDQUFDO0FBQUUsd0JBQUksS0FBRyxHQUFHLEdBQUUsSUFBRyxFQUFFLEVBQUU7QUFBRSx1QkFBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsSUFBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxJQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUcsSUFBRyxHQUFHO0FBQUUsd0JBQUcsS0FBRyxHQUFFO0FBQUMsMEJBQUcsRUFBRSxJQUFFO0FBQUcsK0JBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDBCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSwrQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsMEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLCtCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSwwQkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDBCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSwrQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsMEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLCtCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSwwQkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDBCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSwrQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsMEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLCtCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxvQkFBQyxPQUFLO0FBQUMsMEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLCtCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSwwQkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDBCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSwrQkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHO0FBQUUsMEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLCtCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUc7QUFBRSwwQkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFLDBCQUFHLENBQUMsR0FBRyxJQUFHLEdBQUc7QUFBRSwrQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUUsMEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRztBQUFFLCtCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRSwwQkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLG9CQUFDO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUEsdUJBQU87QUFBRyx3QkFBSSxLQUFHLEVBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUEsdUJBQU87QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUE7QUFBVSwyQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUE7QUFBRSxzQkFBTztBQUFBLHFCQUFTO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRyx5QkFBTSxDQUFDLEdBQUUsSUFBRyxHQUFHLElBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsc0JBQUcsRUFBRSxJQUFHO0FBQUMsd0JBQUksS0FBRyxFQUFFLEtBQUcsSUFBSSxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQU8sR0FBRyxHQUFHLEdBQUUsS0FBRyxJQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUcsR0FBRSxLQUFHLElBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUksS0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUcseUJBQU0sQ0FBQyxHQUFFLElBQUcsR0FBRyxJQUFHLElBQUcsR0FBRyxJQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSxzQkFBRyxFQUFFO0FBQUcsMkJBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBRSxxQkFBRyxDQUFDLEdBQUUsR0FBRyxDQUFDO0FBQUUsc0JBQUksS0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQUksSUFBRSxJQUFFLEdBQUUsS0FBRyxNQUFJLEVBQUUsQ0FBQztBQUFFLHlCQUFPLE9BQUssSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxHQUFHO0FBQUEscUJBQU87QUFBRSxzQkFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRyx5QkFBTSxDQUFDLEdBQUUsSUFBRyxHQUFHLElBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxDQUFDLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUU7QUFBRSxxQkFBRyxJQUFHLEVBQUU7QUFBRSxzQkFBSSxLQUFHLElBQUksR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsSUFBRyxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsSUFBRyxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEscUJBQU87QUFBRSx5QkFBTyxHQUFHLEdBQUUsR0FBRSxTQUFTLEdBQUUsSUFBRztBQUFDLDZCQUFTLEdBQUcsSUFBRztBQUFDLDBCQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBSSxHQUFFO0FBQUMsNEJBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFJO0FBQUUscUNBQU87QUFBQyxnQ0FBSSxLQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBRSxnQ0FBRyxJ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QUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEscUJBQU87QUFBQSxxQkFBUTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUcsR0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFBVSx5QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLFNBQVMsR0FBRTtBQUFDLHlCQUFRLElBQUUsR0FBRSxJQUFFLE9BQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRTtBQUFFLDBCQUFPLEVBQUU7QUFBQSx5QkFBUztBQUFFLDBCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsSUFBSSxHQUFFLENBQUMsR0FBRSxJQUFFLE1BQUksSUFBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFHLDBCQUFHLE1BQUk7QUFBRSwrQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUsMEJBQUksSUFBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUM7QUFBRSw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsS0FBSSxDQUFDLEdBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMEJBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUU7QUFBQTtBQUFpQiwwQkFBSSxJQUFFLEVBQUU7QUFBRztBQUFBO0FBQUEsZ0JBQVM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUksR0FBRyxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUcsR0FBRSxNQUFJLEdBQUcsR0FBRyxHQUFFLE1BQUksR0FBRyxHQUFHLEdBQUUsTUFBSSxHQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFFLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU0sQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUksQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLHNCQUFJLEtBQUcsRUFBRSxLQUFJLENBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUUsc0JBQUksS0FBRyxFQUFFLEtBQUksQ0FBQztBQUFFO0FBQUEscUJBQVc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsS0FBSSxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLHNCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEVBQUUsR0FBRSxJQUFFLEVBQUU7QUFBRyxxQkFBRyxDQUFDO0FBQUUsc0JBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxJQUFFLEdBQUcsS0FBSSxJQUFFLElBQUUsQ0FBQyxJQUFFLElBQUU7QUFBRSxzQkFBRyxJQUFFLE1BQUk7QUFBRSx3QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQU8sNEJBQU87QUFBQSwyQkFBUTtBQUFFLDRCQUFJLElBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksSUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxJQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFFLDJCQUFHLEdBQUUsQ0FBQztBQUFFLDRCQUFJLElBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFJLElBQUUsSUFBRSxHQUFFLElBQUUsS0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksSUFBRTtBQUFFO0FBQUE7QUFBYyw0QkFBSSxJQUFFO0FBQUE7QUFBRSxzQkFBRyxJQUFFLE1BQUk7QUFBRSx3QkFBSSxJQUFFLEdBQUcsR0FBRztBQUFBO0FBQU8sNEJBQU87QUFBQSwyQkFBUTtBQUFFLDRCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsMkJBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSw0QkFBSSxJQUFFLEdBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksSUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQTtBQUFjLDJCQUFHLENBQUM7QUFBRSw0QkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUE7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLElBQUksSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHO0FBQUcsc0JBQUcsT0FBSztBQUFFLHdCQUFJLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFFLENBQUMsQ0FBQztBQUFBO0FBQU8sd0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUU7QUFBRSxzQkFBSSxLQUFHO0FBQUU7QUFBQSxxQkFBVztBQUFFLHNCQUFJLEtBQUcsRUFBRSxLQUFJLENBQUM7QUFBRTtBQUFBO0FBQWMsc0JBQUksS0FBRyxFQUFFLEtBQUksQ0FBQztBQUFBO0FBQUUsa0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxJQUFJLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxJQUFHLEdBQUcsRUFBRTtBQUFFLHFCQUFPLEVBQUUsS0FBRyxJQUFHLEVBQUUsS0FBRyxFQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRSxFQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUU7QUFBRyxxQkFBTyxJQUFFLEVBQUUsR0FBRyxLQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBRyxFQUFFLElBQUcsSUFBRSxLQUFHLEVBQUU7QUFBRyxrQkFBRztBQUFDLG9CQUFJLElBQUUsR0FBRSxJQUFFLElBQUksQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFO0FBQUEsY0FBQyxTQUFPLEdBQU47QUFBUyxvQkFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBRyx3QkFBTTtBQUFFLG9CQUFJLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxJQUFJLEdBQUc7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxJQUFFLEVBQUUsS0FBRyxJQUFHLElBQUUsSUFBSSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFFLHFCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxFQUFFLElBQUksRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUk7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUU7QUFBRyxnQkFBRSxHQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxFQUFFO0FBQUUsa0JBQUksSUFBRSxFQUFFO0FBQUkscUJBQU8sS0FBRyxFQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksS0FBRyxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUcsTUFBSTtBQUFFLHVCQUFPLElBQUksRUFBRSxJQUFJLEVBQUU7QUFBRSxrQkFBRyxNQUFJLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBSTtBQUFHLGtCQUFFLE1BQUksR0FBRyxDQUFDO0FBQUUsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sSUFBRSxFQUFFLEdBQUcsS0FBRyxHQUFHLENBQUMsRUFBRTtBQUFBLGNBQUU7QUFBQyxvQkFBSyxDQUFDLEdBQUUsSUFBRyxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEdBQUUsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxHQUFFLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksR0FBRSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxHQUFFLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEdBQUUsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxHQUFFLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxHQUFFLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLE1BQUksSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksR0FBRSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsR0FBRztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxJQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxFQUFFO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxJQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxFQUFFO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEdBQUUsRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsR0FBRztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxHQUFHLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEdBQUUsR0FBRSxFQUFFLEtBQUksR0FBRSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEdBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLElBQUU7QUFBRSxrQkFBRyxLQUFHLEdBQUU7QUFBQyxvQkFBRyxJQUFFLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFHO0FBQUUsdUJBQUcsSUFBRSxJQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsTUFBSSxJQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxNQUFJLElBQUU7QUFBQSxnQkFBRTtBQUFBLGNBQUMsT0FBSztBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLEdBQUc7QUFBRSxxQkFBRyxJQUFFLElBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLE1BQUksSUFBRSxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsTUFBSSxJQUFFO0FBQUEsY0FBRTtBQUFDLHFCQUFPLElBQUUsSUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRyxJQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyxvQkFBRyxNQUFJO0FBQUcseUJBQU87QUFBQSxjQUFDLFdBQVMsRUFBRSxPQUFLLEtBQUcsR0FBRyxFQUFFLEVBQUU7QUFBRSx1QkFBTztBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsSUFBRSxJQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHdCQUFPO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFHLDJCQUFPO0FBQUE7QUFBQSx1QkFBVSxFQUFFLE9BQUssS0FBRyxHQUFHLEVBQUUsRUFBRTtBQUFFLHVCQUFPO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxJQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU8sT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLEtBQUcsR0FBRyxFQUFFLEVBQUUsSUFBRSxJQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsSUFBSSxDQUFDO0FBQUUsa0JBQUc7QUFBRSxvQkFBSSxJQUFFO0FBQUEsbUJBQU07QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHO0FBQUUsc0JBQUksSUFBRTtBQUFBLHFCQUFNO0FBQUMsc0JBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsMkJBQU87QUFBRSxzQkFBSSxJQUFFO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLElBQUU7QUFBRSxxQkFBTyxLQUFHLElBQUUsSUFBRSxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsTUFBSSxJQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxNQUFJLElBQUUsSUFBRyxJQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsQ0FBQyxFQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLENBQUMsRUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsSUFBRSxFQUFFLEtBQUcsR0FBRyxHQUFHO0FBQUUscUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxDQUFDLEVBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxFQUFFO0FBQUcscUJBQU8sS0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLElBQUksSUFBRyxFQUFFLEdBQUcsRUFBRSxLQUFHLElBQUUsSUFBRTtBQUFBLGNBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFHLEdBQUUsQ0FBQyxFQUFFLFFBQUs7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUcsRUFBRSxJQUFJLEVBQUUsSUFBRSxJQUFFLElBQUU7QUFBRSxzQkFBRztBQUFFLDJCQUFPO0FBQUUsc0JBQUksSUFBRTtBQUFFO0FBQUEsZ0JBQVE7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLElBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRyxJQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsSUFBRSxHQUFHLENBQUM7QUFBRSxrQkFBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRyxJQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsRUFBRSxHQUFHLEtBQUcsSUFBRTtBQUFBO0FBQU8sb0JBQUksSUFBRTtBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLGtCQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsb0JBQUksSUFBRSxJQUFFLElBQUU7QUFBRSxvQkFBRyxLQUFHLE1BQUksR0FBRTtBQUFDLHNCQUFHLEVBQUUsTUFBSSxJQUFFLElBQUUsT0FBSztBQUFHLDJCQUFPO0FBQUEsZ0JBQUMsT0FBSztBQUFDLHNCQUFJLElBQUUsTUFBSSxJQUFFLElBQUU7QUFBRSxzQkFBRyxDQUFDO0FBQUUsMkJBQU87QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxrQkFBRyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsS0FBRyxJQUFJLENBQUM7QUFBRSx1QkFBTztBQUFFLGtCQUFJLElBQUU7QUFBRSxrQkFBRyxPQUFPLEtBQUc7QUFBUyx3QkFBTztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBRyx3QkFBRTtBQUFFO0FBQUE7QUFBQTtBQUFXLGtCQUFFLE9BQUssTUFBSSxJQUFFO0FBQUcscUJBQU8sSUFBRSxJQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxrQkFBRyxNQUFJLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU8sT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLElBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQyxrQkFBRztBQUFFLHVCQUFPO0FBQUUsa0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLGtCQUFHLE9BQU8sS0FBRztBQUFTLHdCQUFPO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUcsMkJBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUk7QUFBQTtBQUFjLDJCQUFPO0FBQUE7QUFBQTtBQUFPLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFFLHdCQUFHLElBQUksRUFBRSxFQUFFO0FBQUUsNkJBQU87QUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFHO0FBQUE7QUFBYywyQkFBTztBQUFBO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUMsTUFBSSxLQUFHLElBQUU7QUFBRSxrQkFBRztBQUFFLG9CQUFJLElBQUU7QUFBQSxtQkFBTTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLE1BQUksS0FBRyxJQUFFO0FBQUUsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsTUFBSSxLQUFHLElBQUU7QUFBRSxzQkFBRztBQUFFLHdCQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsRUFBRSxHQUFHLElBQUcsSUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQUssSUFBRSxJQUFFO0FBQUE7QUFBTyx3QkFBSSxJQUFFO0FBQUEsZ0JBQUM7QUFBTSxzQkFBSSxJQUFFO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsa0JBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyxvQkFBSSxJQUFFO0FBQUUscUJBQUksTUFBSSxNQUFJLE1BQUksUUFBTSxJQUFFLElBQUc7QUFBRSx5QkFBTztBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQU87QUFBRSxrQkFBRyxHQUFHLENBQUM7QUFBRSx1QkFBTztBQUFHLGtCQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxxQkFBTyxJQUFFLENBQUMsSUFBRyxHQUFFLEVBQUUsRUFBRSxJQUFFLENBQUMsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsSUFBSSxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxLQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRTtBQUFJLHFCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLHFCQUFPLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUk7QUFBRyxrQkFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLGtCQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFJLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxJQUFFLEVBQUUsR0FBRyxLQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQUcsZ0JBQUUsSUFBSSxLQUFHO0FBQUUsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxnQkFBRSxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUUsa0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxJQUFHLENBQUM7QUFBRSxnQkFBRSxHQUFHLEtBQUc7QUFBRSxrQkFBSSxJQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUsZ0JBQUUsR0FBRyxLQUFHO0FBQUUsa0JBQUksSUFBRSxFQUFFLElBQUk7QUFBRyxxQkFBTyxFQUFFLE1BQUksRUFBRSxLQUFHLEVBQUUsSUFBRyxFQUFFLEtBQUcsR0FBRSxNQUFJLElBQUksQ0FBQyxHQUFFLEVBQUUsS0FBRyxHQUFFO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEtBQUcsR0FBRyxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxnQkFBRSxJQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxJQUFJLEVBQUU7QUFBRSxrQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLElBQUksSUFBRyxDQUFDO0FBQUUscUJBQU8sRUFBRSxJQUFJLEtBQUcsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBSSxJQUFHLElBQUUsSUFBRSxFQUFFLEtBQUcsR0FBRyxHQUFHO0FBQUUsZ0JBQUUsSUFBSSxLQUFHO0FBQUUsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxJQUFJLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsSUFBSSxLQUFHLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxrQkFBRyxHQUFHLENBQUMsTUFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsRUFBRSxJQUFHLElBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLEdBQUcsR0FBRyxNQUFJLEVBQUUsR0FBRyxLQUFHLElBQUU7QUFBQSxnQkFBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUcsS0FBRyxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUU7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxxQkFBTyxHQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLEdBQUc7QUFBRyxrQkFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRyxHQUFHLE1BQUksRUFBRSxHQUFHLEtBQUcsSUFBRTtBQUFBLGdCQUFDLENBQUMsR0FBRSxDQUFDO0FBQUUsbUJBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFHLEtBQUcsSUFBRSxHQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFJLElBQUU7QUFBQSxjQUFDO0FBQU0sb0JBQUksSUFBRTtBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxLQUFJLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFFLEVBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUscUJBQU8sSUFBRSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUU7QUFBRSxxQkFBTyxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssS0FBRyxHQUFHLEVBQUUsSUFBRyxDQUFDLE1BQUksSUFBRSxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUcsQ0FBQyxJQUFHLEtBQUksR0FBRyxDQUFDLENBQUM7QUFBRSxxQkFBUyxJQUFJLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBSTtBQUFHLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsQ0FBQztBQUFFLGtCQUFFLElBQUksS0FBRztBQUFFLG9CQUFJLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFNLG9CQUFJLElBQUU7QUFBRSxxQkFBTSxDQUFDLEdBQUUsRUFBRSxHQUFHLElBQUcsRUFBRSxHQUFHLElBQUcsRUFBRSxHQUFHLElBQUcsRUFBRSxJQUFJLElBQUcsRUFBRSxJQUFJLElBQUcsRUFBRSxJQUFJLElBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLG9CQUFHLEVBQUUsSUFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUU7QUFBRSwyQkFBUSxJQUFFLEVBQUUsR0FBRyxRQUFLO0FBQUMsd0JBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsRUFBRTtBQUFHLHdCQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUUsMEJBQUksSUFBRTtBQUFFO0FBQUEsb0JBQVE7QUFBQywyQkFBTztBQUFBLGtCQUFDO0FBQUMsb0JBQUksSUFBRTtBQUFBLGNBQUM7QUFBTSxvQkFBSSxJQUFFO0FBQUUscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFHLEtBQUcsRUFBRSxJQUFHLEVBQUUsR0FBRyxLQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUcsS0FBRyxFQUFFLElBQUcsRUFBRSxJQUFJLEtBQUcsRUFBRSxJQUFHLEVBQUUsSUFBSSxLQUFHLEVBQUUsSUFBRyxFQUFFLElBQUksS0FBRyxFQUFFO0FBQUcsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxJQUFJLElBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUsSUFBSSxLQUFHLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFJLENBQUM7QUFBRSxrQkFBRztBQUFDLG9CQUFJLElBQUUsSUFBSSxHQUFFLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFFLHVCQUFPO0FBQUEsY0FBQyxTQUFPLEdBQU47QUFBUyxvQkFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLE1BQUk7QUFBRyx5QkFBTyxJQUFJLEdBQUUsQ0FBQztBQUFFLHNCQUFNO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHFCQUFPLElBQUUsRUFBRSxLQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxrQkFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFPLE1BQUksSUFBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMsZ0JBQUksTUFBSSxHQUFHLEtBQUksU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLENBQUMsRUFBRTtBQUFHLHVCQUFTLEdBQUcsSUFBRyxJQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksS0FBRyxTQUFTLEdBQUU7QUFBQywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsRUFBRTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLEVBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcs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QUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLEVBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxHQUFFO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsSUFBRyxDQUFDO0FBQUUsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSx5QkFBTyxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFPLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLElBQUcsRUFBRSxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHLElBQUcsR0FBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHLElBQUcsR0FBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLG9CQUFHO0FBQUUsc0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUc7QUFBQTtBQUFPLHNCQUFJLEtBQUcsR0FBRSxLQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxJQUFHLENBQUM7QUFBRSxvQkFBSSxLQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxJQUFHLENBQUM7QUFBRSx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLElBQUcsRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxJQUFHLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUcsR0FBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsRUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUcsR0FBRyxPQUFLLEdBQUU7QUFBQyxzQkFBSSxJQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFNLENBQUMsR0FBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLEdBQUc7QUFBRyx5QkFBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsR0FBRyxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxJQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUc7QUFBRyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFFLEtBQUksSUFBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsSUFBRyxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsSUFBRyxDQUFDO0FBQUUsdUJBQU8sTUFBSSxLQUFHLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLElBQUUsR0FBRyxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRztBQUFHLHlCQUFTLEVBQUUsSUFBRztBQUFDLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsRUFBRSxHQUFFLEdBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHO0FBQUcsb0JBQUcsTUFBSSxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxrQkFBQztBQUFFLHlCQUFPLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLEVBQUUsR0FBRSxHQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFO0FBQUUsdUJBQU8sR0FBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDLEdBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxJQUFFLEdBQUcsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUc7QUFBRyx5QkFBUyxFQUFFLElBQUc7QUFBQyx5QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLEVBQUU7QUFBRSx1QkFBTyxHQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLElBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsb0JBQUcsTUFBSSxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsSUFBRztBQUFDLHlCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsSUFBRyxFQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRSxJQUFHLEVBQUU7QUFBRSx1QkFBTyxHQUFHLFNBQVMsSUFBRztBQUFDLHlCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLElBQUUsR0FBRyxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRztBQUFHLHlCQUFTLEVBQUUsSUFBRztBQUFDLHlCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFFLElBQUcsRUFBRSxHQUFFLEdBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxJQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRyxHQUFHLElBQUUsSUFBRyxJQUFHLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHO0FBQUcseUJBQVMsRUFBRSxJQUFHO0FBQUMseUJB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RSxFQUFFLEdBQUcsU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxFQUFFLEdBQUcsSUFBRyxHQUFHLElBQUUsRUFBRSxJQUFFLElBQUUsSUFBRTtBQUFBLGdCQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSx1QkFBTyxHQUFHLENBQUMsTUFBSSxJQUFFLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUcsRUFBRTtBQUFBLGNBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUUsQ0FBQyxHQUFFLFNBQVMsSUFBRyxJQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxJQUFFLEtBQUcsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQyxDQUFDO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxrQkFBRztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsSUFBSSxDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUksSUFBRyxHQUFF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QUFDO0FBQUUsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEdBQUcsU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRyxHQUFFLFdBQVUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsZUFBRyxLQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRyxHQUFFLElBQUUsRUFBRSxTQUFPLEdBQUUsSUFBRSxHQUFHLFNBQU8sR0FBRSxJQUFFLEdBQUcsSUFBRSxJQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRTtBQUFFLGtCQUFHLEVBQUUsSUFBRTtBQUFHLHlCQUFRLElBQUUsT0FBSTtBQUFDLHNCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLEVBQUUsSUFBRSxFQUFFO0FBQUUscUJBQUcsR0FBRSxDQUFDLEVBQUUsSUFBRSxLQUFHO0FBQUUsc0JBQUksSUFBRSxJQUFFLElBQUU7QUFBRSxzQkFBRyxNQUFJLEdBQUU7QUFBQyx3QkFBSSxJQUFFO0FBQUU7QUFBQSxrQkFBUTtBQUFDO0FBQUEsZ0JBQUs7QUFBQyxrQkFBSSxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUU7QUFBRSxrQkFBRyxFQUFFLElBQUU7QUFBRyx5QkFBUSxJQUFFLE9BQUk7QUFBQyxzQkFBSSxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUcsSUFBRyxDQUFDLEVBQUUsSUFBRSxFQUFFO0FBQUUscUJBQUcsR0FBRSxDQUFDLEVBQUUsSUFBRSxLQUFHO0FBQUUsc0JBQUksSUFBRSxJQUFFLElBQUU7QUFBRSxzQkFBRyxNQUFJLEdBQUU7QUFBQyx3QkFBSSxJQUFFO0FBQUU7QUFBQSxrQkFBUTtBQUFDO0FBQUEsZ0JBQUs7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLENBQUMsRUFBRTtBQUFHLHVCQUFTLEdBQUcsR0FBRSxJQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxFQUFFLEVBQUUsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsRUFBRSxHQUFHLElBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG9CQUFJLElBQUUsR0FBRyxJQUFHLEtBQUcsRUFBRSxJQUFFO0FBQUksb0JBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFHLEVBQUUsRUFBRSxJQUFFLElBQUUsSUFBRSxHQUFFLEtBQUcsT0FBSyxFQUFFLElBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFO0FBQUcseUJBQU87QUFBQSxnQkFBRTtBQUFDLG9CQUFJLEtBQUcsS0FBRyxHQUFHLEVBQUUsSUFBRyxFQUFFLElBQUUsR0FBRyxFQUFFLElBQUUsSUFBRSxHQUFFLEtBQUcsT0FBSyxFQUFFLElBQUUsTUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFO0FBQUcsdUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxvQkFBSSxJQUFFLEdBQUcsSUFBRyxLQUFHLEVBQUUsSUFBRTtBQUFJLG9CQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsRUFBRSxJQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBRSxJQUFFLElBQUUsR0FBRSxLQUFHLE9BQUssRUFBRSxJQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRTtBQUFHLHlCQUFPO0FBQUEsZ0JBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRSxJQUFFLElBQUUsR0FBRSxLQUFHLE9BQUssRUFBRSxJQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsR0FBRTtBQUFHLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsdUJBQU8sTUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFFLEtBQUksR0FBRSxHQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxvQkFBSSxJQUFFLEdBQUc7QUFBRyxtQkFBRyxFQUFFLEVBQUUsR0FBRyxJQUFFLElBQUcsQ0FBQyxHQUFFLENBQUM7QUFBRSxvQkFBSSxLQUFHLEdBQUc7QUFBRyx1QkFBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTyxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU0s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QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBSSx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFJLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUksd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBSSx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFJLHdCQUFJLElBQUU7QUFBSTtBQUFBLHVCQUFXO0FBQUksd0JBQUksSUFBRTtBQUFJO0FBQUEsdUJBQVc7QUFBSSx3QkFBSSxJQUFFO0FBQUk7QUFBQSx1QkFBVztBQUFJLHdCQUFJLElBQUU7QUFBSTtBQUFBO0FBQWMsd0JBQUU7QUFBQTtBQUFBO0FBQU8sd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsd0JBQUksSUFBRSxFQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFFLHdCQUFJLElBQUUsRUFBRSxLQUFHLE1BQUk7QUFBSTtBQUFBO0FBQWMsd0JBQUU7QUFBQTtBQUFFLGtCQUFHLEdBQUU7QUFBQyxtQkFBRyxLQUFJLENBQUM7QUFBRSxvQkFBSSxJQUFFO0FBQUEsY0FBRztBQUFDLHFCQUFPLEdBQUcsQ0FBQyxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLElBQUksQ0FBQztBQUFFLHFCQUFNLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsaUJBQUcsR0FBRSxFQUFFO0FBQUUsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLElBQUksQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLE9BQUssRUFBRSxLQUFHLElBQUUsR0FBRSxJQUFFLE1BQUksRUFBRSxPQUFLLEVBQUUsS0FBRyxJQUFFO0FBQUcscUJBQU8sSUFBRSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLE9BQUssSUFBRSxJQUFFO0FBQUUsa0JBQUc7QUFBRSx5QkFBUSxJQUFFLEVBQUUsUUFBSztBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsR0FBRyxJQUFHLElBQUUsR0FBRSxJQUFFLEVBQUU7QUFBRyx3QkFBRyxFQUFFLEdBQUcsR0FBRyxPQUFLLEtBQUcsQ0FBQyxFQUFFLElBQUc7QUFBQywwQkFBSSxJQUFFO0FBQUUsMEJBQUU7QUFBQSxvQkFBQztBQUFDLHdCQUFHLENBQUM7QUFBRSwwQkFBSSxJQUFFO0FBQUUsd0JBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUU7QUFBRTtBQUFBLG9CQUFRO0FBQUMsMkJBQU87QUFBQSxrQkFBQztBQUFDLHlCQUFPO0FBQUEsZ0JBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBUSxJQUFFLE9BQUk7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBRyxvQkFBRyxFQUFFLE9BQUssSUFBRztBQUFDLHNCQUFJLElBQUUsRUFBRSxHQUFHO0FBQUcsc0JBQUcsRUFBRSxHQUFHLE9BQUs7QUFBRywyQkFBTztBQUFFLHNCQUFJLElBQUU7QUFBRTtBQUFBLGdCQUFRO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLElBQUUsRUFBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsSUFBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLElBQUU7QUFBRSxxQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyxxQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLG9CQUFHLE9BQU8sTUFBSSxVQUFTO0FBQUMsc0JBQUcsT0FBSyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSwyQkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsT0FBSyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSwyQkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLElBQUcsRUFBRTtBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLElBQUksR0FBRSxJQUFHLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLElBQUcsRUFBRTtBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsRUFBRTtBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLElBQUksR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLElBQUksR0FBRSxFQUFFO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFFLGdCQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sSUFBRSxHQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxHQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLFNBQVMsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLE1BQUksS0FBRyxJQUFFO0FBQUUsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQUcsQ0FBQztBQUFFLHNCQUFJLEtBQUc7QUFBQSxnQkFBRTtBQUFNLHNCQUFJLEtBQUc7QUFBRSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsS0FBRyxFQUFFO0FBQUcsb0JBQUcsR0FBRyxD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LEVBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLE1BQUksR0FBRyxHQUFFLEdBQUcsR0FBRTtBQUFBLGtCQUFHO0FBQUMsc0JBQUcsT0FBSztBQUFHLDJCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxNQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyx5QkFBUyxHQUFHLElBQUc7QUFBQyxzQkFBRyxDQUFDLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRSwyQkFBTSxDQUFDLElBQUcsQ0FBQyxHQUFFLElBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFLEdBQUUsRUFBRTtBQUFFLHFCQUFHLElBQUcsQ0FBQztBQUFFLHNCQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUseUJBQU8sSUFBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLElBQUUsQ0FBQyxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEtBQUksR0FBRSxDQUFDLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFF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RSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsNkJBQU0sQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFBLHlCQUFRO0FBQUcsMEJBQUksS0FBRyxHQUFHLENBQUM7QUFBRSw2QkFBTyxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsT0FBSyxLQUFHLElBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQUE7QUFBTywwQkFBTyxHQUFHO0FBQUEseUJBQVM7QUFBRSwwQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyw0QkFBSSxHQUFHLEdBQUUsRUFBRTtBQUFFLDBCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsNkJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLENBQUM7QUFBRSx5QkFBRyxHQUFFLENBQUMsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUUsMEJBQUksS0FBRyxHQUFHLENBQUM7QUFBRSw2QkFBTyxPQUFLLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLDZCQUFPLEdBQUcsR0FBRSxDQUFDLElBQUcsR0FBRyxJQUFHLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFFLDJCQUFHO0FBQUU7QUFBQTtBQUFNLG9CQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBRSxJQUFHLENBQUM7QUFBRSx1QkFBTyxLQUFHLENBQUMsR0FBRSxHQUFFLEdBQUcsRUFBRSxLQUFHLEdBQUcsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRztBQUFBLGNBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFO0FBQUUsb0JBQUcsT0FBTyxLQUFHO0FBQVMsMEJBQU87QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBSSwwQkFBRTtBQUFFO0FBQUE7QUFBQTtBQUFXLG9CQUFFLE9BQUssTUFBSSxJQUFFO0FBQUcsdUJBQU8sSUFBRSxJQUFFO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUM7QUFBRSxvQkFBRyxPQUFPLE1BQUk7QUFBUywwQkFBTztBQUFBLHlCQUFTO0FBQUcsNkJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQUEseUJBQVUsR0FBRyxPQUFLO0FBQUUseUJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSx1QkFBTztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxxQkFBRyxHQUFFLENBQUM7QUFBRSwyQkFBUSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxPQUFJO0FBQUMsd0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSx3QkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLDBCQUFJLEtBQUc7QUFBRSwyQkFBSSxPQUFLLEtBQUcsT0FBSyxRQUFNLEtBQUcsSUFBRyxJQUFHO0FBQUMsNEJBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSwrQkFBTyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxz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QSx1QkFBUztBQUFFLHdCQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFFLDBCQUFHLE9BQU8sTUFBSSxZQUFVLEVBQUUsS0FBRyxLQUFHLEtBQUcsT0FBSyxJQUFHO0FBQUMsNEJBQUksS0FBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUUsNkJBQUc7QUFBQSxzQkFBQztBQUFDLDBCQUFHLENBQUM7QUFBRyw0QkFBSSxLQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUUsMEJBQUksS0FBRztBQUFBLG9CQUFFO0FBQU0sMEJBQUksS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxLQUFHLEVBQUUsSUFBRyxFQUFFO0FBQUU7QUFBQTtBQUFNLG9CQUFHLEdBQUcsT0FBSztBQUFFLHNCQUFJLEtBQUc7QUFBQSxxQkFBTztBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFHLHNCQUFHLEVBQUU7QUFBSSx3QkFBSSxLQUFHO0FBQUEsdUJBQU87QUFBQyx3QkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSx3QkFBRyxPQUFPLE1BQUk7QUFBUywwQkFBRyxPQUFLO0FBQUUsNEJBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxNQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFBLCtCQUFVLE9BQUssR0FBRTtBQUFDLDJCQUFHLEdBQUUsQ0FBQztBQUFFLDRCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxzQkFBQztBQUFNLDZCQUFHO0FBQUE7QUFBTywyQkFBRztBQUFFLHdC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RUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUUseUNBQUcsSUFBRyxFQUFFO0FBQUUsMENBQUksS0FBRyxJQUFHLEtBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFBLG9DQUFFO0FBQUMsMkNBQU0sQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLE9BQUssSUFBRSxJQUFFLEdBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxrQ0FBQztBQUFBLGdDQUFDLEVBQUUsSUFBRyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBRSxxQ0FBRztBQUFBLDhCQUFDO0FBQUMsa0NBQUcsQ0FBQztBQUFHLG9DQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLElBQUcsSUFBRyxJQUFHO0FBQUMseUNBQU8sU0FBUyxJQUFHO0FBQUMsd0NBQUksS0FBRyxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSx1Q0FBRyxJQUFHLENBQUM7QUFBRSx3Q0FBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLE1BQUksS0FBRyxJQUFFO0FBQUUsd0NBQUcsSUFBRztBQUFDLDBDQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUseUNBQUcsSUFBRyxFQUFFO0FBQUUsMENBQUksS0FBRyxDQUFDLEdBQUUsRUFBRTtBQUFBLG9DQUFDO0FBQU0sMENBQUksS0FBRztBQUFHLHdDQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUU7QUFBRSx1Q0FBRyxJQUFHLENBQUM7QUFBRSx3Q0FBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHVDQUFHLElBQUcsRUFBRTtBQUFFLHdDQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUU7QUFBRSwyQ0FBTSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsT0FBSyxJQUFFLElBQUUsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFB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R0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxPQUFLLElBQUUsSUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLCtDQUFNLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxzQ0FBQztBQUFBLG9DQUFDLEVBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUUseUNBQUc7QUFBQSxrQ0FBQztBQUFBLGdDQUFDO0FBQUEsOEJBQUM7QUFBQyxrQ0FBSSxLQUFHO0FBQUUsc0NBQU87QUFBQSxxQ0FBUztBQUFFLHVDQUFHO0FBQUU7QUFBQSxxQ0FBVztBQUFFLHNDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRztBQUFFLHNDQUFHLE9BQU8sTUFBSSxVQUFTO0FBQUMsd0NBQUksS0FBRztBQUFFLHdDQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxJQUFHLENBQUMsSUFBRztBQUFDLHlDQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUUsMENBQUksS0FBRztBQUFHLDJDQUFHO0FBQUEsb0NBQUM7QUFBQSxrQ0FBQztBQUFDLHNDQUFHLENBQUMsSUFBRztBQUFDLHdDQUFJLEtBQUcsTUFBSSxJQUFFLElBQUUsR0FBRSxLQUFHO0FBQUUsd0NBQUcsR0FBRyxPQUFLLEdBQUU7QUFBQywwQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUc7QUFBRSwwQ0FBRyxHQUFFO0FBQUMsNENBQUksS0FBRztBQUFFLHlDQUFDLEdBQUcsS0FBSSxFQUFFLE1BQUksQ0FBQyxNQUFJLENBQUMsR0FBRyxLQUFJLEVBQUUsT0FBSyxLQUFHLElBQUcsT0FBSyxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLElBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFBLHNDQUFFO0FBQUEsb0NBQUM7QUFBQyx3Q0FBSSxLQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUc7QUFBRSx5Q0FBRyxHQUFFLEtBQUc7QUFBQSxrQ0FBQztBQUFDO0FBQUE7QUFBTSxrQ0FBRyxDQUFDO0FBQUcsb0NBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxNQUFJLElBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSxpQ0FBVztBQUFFLG1DQUFHO0FBQUU7QUFBQTtBQUFNLDhCQUFHLElBQUc7QUFBQyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyxnQ0FBRSxHQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFLGdDQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUNBQU8sU0FBUyxJQUFHO0FBQUMsb0NBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsSUFBSSxJQUFHLEVBQUUsSUFBRSxFQUFFLEdBQUUsRUFBRSxJQUFFLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBRSx1Q0FBTSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsT0FBSyxJQUFFLElBQUUsR0FBRSxPQUFLLElBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSw4QkFBQztBQUFBLDRCQUFDLEVBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSwwQkFBQztBQUFBLHdCQUFDO0FBQUMsMkJBQUcsSUFBRyxFQUFFO0FBQUUsNEJBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFFLGlDQUFTO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFBLGdCQUFDLEdBQUUsRUFBRTtBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxNQUFJLEtBQUcsSUFBRTtBQUFFLG9CQUFHLEdBQUU7QUFBQyxxQkFBRyxHQUFFLEVBQUU7QUFBRSwyQkFBUSxLQUFHLE9BQUk7QUFBQyx3QkFBSSxLQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHdCQUFHLE9BQU8sTUFBSSxZQUFVLE9BQUssR0FBRTtBQUFDLHlCQUFHLEdBQUUsQ0FBQztBQUFFLDBCQUFJLEtBQUc7QUFBRztBQUFBLG9CQUFRO0FBQUMsd0JBQUksS0FBRyxJQUFJLEdBQUUsR0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLGtCQUFLO0FBQUEsZ0JBQUM7QUFBTSxzQkFBSSxLQUFHO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRTtBQUFHLHVCQUFPLElBQUks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LEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxNQUFJLEtBQUcsSUFBRSxHQUFFLEtBQUcsS0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQUcsSUFBRyxFQUFFO0FBQUUsMkJBQVEsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsT0FBSTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsd0JBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQywwQkFBSSxLQUFHO0FBQUUsMkJBQUksT0FBSyxNQUFJLE9BQUssUUFBTSxLQUFHLElBQUcsSUFBRztBQUFDLDRCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUU7QUFBRSwrQkFBTyxHQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQyx3QkFBSSxLQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUU7QUFBRSx1QkFBRyxFQUFFLE1BQUksTUFBSSxHQUFHLElBQUcsQ0FBQztBQUFFLHdCQUFJLEtBQUc7QUFBQSxrQkFBRTtBQUFBLGdCQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUsdUJBQU87QUFBQSxjQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFTLEdBQUcsSUFBRztBQUFDLDJCQUFRLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLE9BQUk7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyx3QkFBRyxHQUFHLEVBQUUsTUFBSSxNQUFJLElBQUksR0FBRSxFQUFFLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLElBQUc7QUFBQywrQkFBTyxTQUFTLElBQUc7QUFBQyxpQ0FBTyxHQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSx3QkFBQztBQUFBLHNCQUFDLEVBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxvQkFBUTtBQUFDLHdCQUFHLEdBQUcsRUFBRSxNQUFJO0FBQUcsMEJBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsK0JBQU8sRUFBRSxHQUFHLElBQUcsWUFBVyxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsc0JBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBO0FBQU8sMEJBQUksS0FBRztBQUFHLDJCQUFNLENBQUMsR0FBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFHLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBRSx1QkFBTSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHVCQUFPLE9BQU8sS0FBRyxZQUFVLE1BQUksS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFO0FBQUcseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU8sR0FBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsd0JBQU8sR0FBRztBQUFBLHVCQUFTO0FBQUUsd0JBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxLQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxLQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxLQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLENBQUMsSUFBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUUsR0FBRyxJQUFHLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxJQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQTtBQUFjLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFBO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFO0FBQUEsY0FBQyxDQUFDO0FBQUUsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsQ0FBQyxNQUFJLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLENBQUMsQ0FBQztBQUFFLHFCQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUseUJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLEtBQUc7QUFBRSx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUM7QUFBRSx1QkFBTyxPQUFPLE1BQUksWUFBVSxPQUFLLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxJQUFHLENBQUMsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUksSUFBRztBQUFDLHNCQUFHLE9BQU8sTUFBSSxZQUFVLE9BQUssSUFBRztBQUFDLHVCQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQyxNQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsSUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBRSxtQkFBRyxJQUFHLENBQUM7QUFBRSxvQkFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUUsdUJBQU8sR0FBRyxFQUFFLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU0sQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsT0FBSztBQUFFLHlCQUFPLEVBQUU7QUFBRyxvQkFBSSxJQUFFLEVBQUUsR0FBRztBQUFHLHVCQUFPLEdBQUcsU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLElBQUUsRUFBRSxLQUFHO0FBQUcsb0JBQUcsRUFBRSxPQUFLO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUEscUJBQU87QUFBQyxzQkFBSSxJQUFFLEVBQUUsR0FBRztBQUFHLHFCQUFHLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxDQUFDO0FBQUUsc0JBQUksSUFBRSxFQUFFO0FBQUEsZ0JBQUU7QUFBQyxvQkFBRSxFQUFFLEVBQUUsS0FBSSxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUUsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLHVCQUFPLEVBQUUsT0FBSyxNQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLElBQUUsSUFBRyxFQUFFLEVBQUUsS0FBSSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFFLHVCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEVBQUUsRUFBRTtBQUFFLHVCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLHNCQUFJLElBQUUsSUFBRSxLQUFHLEdBQUUsSUFBRTtBQUFFLHNCQUFHLElBQUUsTUFBSSxJQUFFLE1BQUksT0FBSyxJQUFFLEtBQUcsS0FBRyxJQUFFLElBQUUsT0FBSyxNQUFJLElBQUUsSUFBRztBQUFFLDJCQUFPLEdBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSx1QkFBTyxNQUFJLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHFCQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUksS0FBRyxFQUFFLEVBQUUsS0FBSSxFQUFFO0FBQUUseUJBQU8sR0FBRyxJQUFHLENBQUMsR0FBRTtBQUFBLGdCQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLENBQUMsTUFBSSxJQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHFCQUFHLElBQUcsQ0FBQztBQUFFLHNCQUFJLEtBQUcsRUFBRSxFQUFFO0FBQUUseUJBQU8sR0FBRyxJQUFHLENBQUMsR0FBRTtBQUFBLGdCQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSx1QkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLFNBQVMsR0FBRTtBQUFDLHFCQUFHLEdBQUUsQ0FBQztBQUFFLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsS0FBRztBQUFFLHNCQUFHLE9BQU8sS0FBRyxZQUFVLE1BQUksSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxFQUFFLEVBQUUsS0FBSSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSx5QkFBRztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsQ0FBQztBQUFHLHdCQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxLQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxHQUFFLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFFLHlCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUU7QUFBQSxnQkFBRSxHQUFFLENBQUM7QUFBRSx1QkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFFLG9CQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQUcsc0JBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFHLENBQUMsR0FBRTtBQUFDLHFC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QUFHLDRCQUFJLEtBQUcsS0FBRyxHQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsSUFBRyxHQUFHLEVBQUU7QUFBQSxvQkFBQztBQUFNLDJCQUFHO0FBQUUsd0JBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRTtBQUFFO0FBQUEsb0JBQVE7QUFBQztBQUFBLGtCQUFLO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSxvQkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLHNCQUFJLElBQUUsR0FBRyxJQUFHLElBQUU7QUFBRSxzQkFBRyxPQUFLLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsSUFBRyxLQUFHLEVBQUU7QUFBRyx3QkFBRyxHQUFHLE9BQUssR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRztBQUFHLDBCQUFHLE9BQU8sTUFBSTtBQUFTLDJCQUFHLEdBQUUsR0FBRztBQUFBLDJCQUFNO0FBQUMsNEJBQUksS0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFO0FBQUUsMkJBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQyx3QkFBSSxLQUFHLEVBQUU7QUFBQSxrQkFBRSxXQUFTLE9BQUssR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRTtBQUFHLHdCQUFHLEdBQUcsT0FBSyxHQUFFO0FBQUMsMEJBQUksS0FBRyxHQUFHO0FBQUcsNkJBQU8sTUFBSSxZQUFVLEdBQUcsR0FBRSxDQUFDLElBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBQSxvQkFBQztBQUFDLHdCQUFJLEtBQUcsR0FBRztBQUFBLGtCQUFFO0FBQU0sd0JBQUU7QUFBRSxzQkFBRyxDQUFDLEdBQUU7QUFBQyx3QkFBSSxJQUFFO0FBQUcseUJBQUc7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUcsQ0FBQztBQUFHLHNCQUFJLElBQUUsRUFBRTtBQUFHLG9CQUFJLElBQUUsRUFBRSxHQUFHLElBQUcsS0FBRyxFQUFFO0FBQUcsb0JBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyxzQkFBSSxLQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUUsd0JBQUcsT0FBSztBQUFHLDBCQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUEsNkJBQVcsT0FBSztBQUFHLDBCQUFJLEtBQUcsR0FBRztBQUFBO0FBQVEsMkJBQUc7QUFBRSx3QkFBRyxDQUFDLElBQUc7QUFBQywwQkFBSSxLQUFHO0FBQUcsMkJBQUc7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsQ0FBQztBQUFHLHdCQUFJLEtBQUc7QUFBRSxzQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxnQkFBQyxPQUFLO0FBQUMsc0JBQUksS0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQztBQUFFLHNCQUFHLE9BQU8sTUFBSSxZQUFVLE9BQUssR0FBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFO0FBQUUseUJBQUc7QUFBQSxrQkFBQztBQUFDLHNCQUFHLENBQUM7QUFBRyx3QkFBSSxLQUFHO0FBQUUsc0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxFQUFFLEdBQUUsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU0sQ0FBQyxHQUFFLEdBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxPQUFPLEtBQUcsV0FBUyxJQUFFLEVBQUUsT0FBSyxJQUFFLElBQUUsRUFBRTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUUsSUFBRTtBQUFFLHFCQUFPLE1BQUksSUFBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsTUFBSSxJQUFFLElBQUU7QUFBRSxrQkFBRyxHQUFFO0FBQUMsb0JBQUcsTUFBSSxHQUFFO0FBQUMsc0JBQUksSUFBRSxNQUFJLElBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxJQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFHLENBQUMsSUFBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLEVBQUU7QUFBQSxjQUFDO0FBQU0sb0JBQUksSUFBRTtBQUFFLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUU7QUFBRSxxQkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxtQkFBSSxJQUFFLElBQUUsS0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsRUFBRSxJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsdUJBQU8sR0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEs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QUFFLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQztBQUFFLG9CQUFHLE9BQU8sRUFBRSxNQUFJO0FBQVMseUJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUM7QUFBRSxvQkFBSSxJQUFFLEVBQUU7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHFCQUFPLE9BQU8sS0FBRyxXQUFTLElBQUUsRUFBRSxPQUFLLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPO0FBQUUsa0JBQUcsRUFBRSxPQUFLO0FBQUUsdUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRyxFQUFFLEVBQUU7QUFBRSxrQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxxQkFBTyxHQUFHLEdBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLGtCQUFHLEVBQUUsT0FBSztBQUFFLHVCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxxQkFBTyxHQUFHLElBQUksR0FBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU87QUFBRSxrQkFBRyxFQUFFLE9BQUs7QUFBRSx1QkFBTyxHQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQztBQUFFLGtCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRTtBQUFFLHFCQUFPLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLGtCQUFHLEVBQUUsT0FBSztBQUFFLHVCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFLElBQUksR0FBRSxHQUFFLEVBQUUsRUFBRTtBQUFFLHFCQUFPLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFJLEdBQUUsR0FBRTtBQUFDLGtCQUFHLE9BQU8sS0FBRztBQUFTLHVCQUFPO0FBQUUsa0JBQUcsRUFBRSxPQUFLLEtBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyxvQkFBRyxFQUFFLE9BQUs7QUFBRSx5QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsSUFBSSxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSx1QkFBTyxHQUFHLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLE9BQU8sS0FBRyxXQUFTLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUcsT0FBTyxLQUFHO0FBQVMsdUJBQU8sSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFFLGtCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsb0JBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyxzQkFBRyxFQUFFLE9BQUs7QUFBRSwyQkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQUcsSUFBRSxFQUFFLElBQUc7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRywyQkFBTyxHQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQyxPQUFLO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsb0JBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyxzQkFBRyxFQUFFLE9BQUs7QUFBRSwyQkFBTyxJQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLHNCQUFJLElBQUUsRUFBRTtBQUFHLHVCQUFJLElBQUUsSUFBRSxLQUFHO0FBQUUsMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFFLHVCQUFJLElBQUUsSUFBRSxLQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRywyQkFBTyxHQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLElBQUksR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxPQUFPLEtBQUc7QUFBUyx1QkFBTztBQUFFLGtCQUFHLEVB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LElBQUUsS0FBRyxJQUFFLEVBQUUsS0FBRyxFQUFFLElBQUcsSUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxPQUFJO0FBQUMsc0JBQUcsT0FBTyxLQUFHO0FBQVMsMkJBQU87QUFBRSxzQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsTUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRTtBQUFFLDJCQUFPO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEVBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUUsc0JBQUcsT0FBSztBQUFFLDJCQUFNLENBQUMsR0FBRSxFQUFFLEVBQUU7QUFBRSxzQkFBSSxLQUFHLEtBQUcsS0FBRyxFQUFFLEtBQUcsRUFBRSxJQUFHLElBQUU7QUFBQSxnQkFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsT0FBSTtBQUFDLHNCQUFHLE9BQU8sS0FBRztBQUFTLDJCQUFPO0FBQUUsc0JBQUcsRUFBRSxPQUFLO0FBQUUsMkJBQU8sRUFBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsTUFBSSxJQUFFLElBQUU7QUFBRSxzQkFBSSxJQUFFLEVBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRSxNQUFJLElBQUUsSUFBRTtBQUFFLHNCQUFHO0FBQUUsMkJBQU87QUFBRSxzQkFBSSxLQUFHLEtBQUcsSUFBRSxFQUFFLEtBQUcsRUFBRSxJQUFHLElBQUU7QUFBQSxnQkFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLE9BQU8sS0FBRztBQUFTLHlCQUFPO0FBQUUsb0JBQUcsRUFBRSxPQUFLO0FBQUUseUJBQU8sRUFBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsTUFBSSxJQUFFLEtBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRTtBQUFFLG9CQUFHLE9BQUs7QUFBRSx5QkFBTyxJQUFJLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEtBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSx5QkFBTyxNQUFJLEtBQUcsSUFBRSxHQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsSUFBRSxHQUFHLElBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLE9BQU8sS0FBRztBQUFTLHlCQUFNLENBQUMsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSxvQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUsc0JBQUcsT0FBSyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLDJCQUFPLE1BQUksS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSx5QkFBTyxLQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUcsT0FBSyxH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RyxFQUFFLElBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxHQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFFLDJCQUFPLEdBQUcsRUFBRSxHQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFBLGdCQUFDLE9BQUs7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLHNCQUFHLE1BQUksRUFBRSxJQUFHO0FBQUMsd0JBQUksS0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxHQUFHLEVBQUU7QUFBRSwyQkFBTyxHQUFHLEVBQUUsR0FBRSxFQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUc7QUFBRSx1QkFBSSxPQUFPLEtBQUcsWUFBVSxFQUFFLE9BQUssT0FBSyxLQUFHLElBQUc7QUFBRywwQkFBSyxDQUFDLEdBQUUsSUFBRyxHQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRyxJQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLElBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLHVCQUFPLEdBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRyxFQUFFLEVBQUUsR0FBRSxJQUFHLElBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRTtBQUFFLG9CQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsc0JBQUksS0FBRztBQUFFLHNCQUFFO0FBQUEsZ0JBQUMsV0FBUyxFQUFFLE9BQUssR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRTtBQUFHLHNCQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsd0JBQUcsRUFBRSxNQUFJLEVBQUUsSUFBRztBQUFDLDBCQUFJLEtBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRSxFQUFFLEdBQUUsRUFBRSxJQUFHLEdBQUcsRUFBRTtBQUFFLDZCQUFPLEtBQUcsR0FBRyxJQUFHLElBQUcsR0FBRyxHQUFFLElBQUcsR0FBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQyx3QkFBSSxLQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLEdBQUUsR0FBRyxJQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRyxFQUFFLEVBQUU7QUFBRSwyQkFBTyxLQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUcsR0FBRSxJQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRSxJQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxDQUFDO0FBQUUsc0JBQUcsT0FBTyxLQUFHO0FBQVMsd0JBQUksS0FBRztBQUFBLHVCQUFNO0FBQUMsd0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUU7QUFBRyw2QkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsK0JBQU8sSUFBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsc0JBQUMsR0FBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUU7QUFBRywyQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsNkJBQU8sSUFBRSxHQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUUsRUFBRSxJQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsb0JBQUMsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLE9BQU8sS0FBRztBQUFTLHlCQUFPO0FBQUksb0JBQUcsRUFBRSxPQUFLO0FBQUUseUJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBRyxFQUFFLEVBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLG9CQUFHLElBQUc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxFQUFFO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFHLE9BQUk7QUFBQyxzQkFBRyxHQUFFO0FBQUMsd0JBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUcsRUFBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEdBQUcsRUFBRTtBQUFFLDBCQUFHLE9BQUssR0FBRTtBQUFDLDRCQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRyxHQUFHLEVBQUU7QUFBRSw0QkFBRyxPQUFLLEdBQUU7QUFBQyw4QkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFLElBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRztBQUFHO0FBQUEsd0JBQVE7QUFBQywrQkFBTztBQUFBLHNCQUFFO0FBQUMsNkJBQU87QUFBQSxvQkFBRTtBQUFDLDJCQUFPO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLE1BQUk7QUFBRyx5QkFBTztBQUFBLGdCQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyx5QkFBUSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsT0FBSTtBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBRyxJQUFHO0FBQUMsMEJBQUksS0FBRyxFQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsR0FBRyxFQUFFLE1BQUksSUFBRSxJQUFFO0FBQUUsMEJBQUcsSUFBRztBQUFDLDRCQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRyxHQUFHLEVBQUU7QUFBRSw0QkFBRyxJQUFHO0FBQUMsOEJBQUksS0FBRyxHQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUc7QUFBRztBQUFBLHdCQUFRO0FBQUMsNEJBQUksS0FBRztBQUFBLHNCQUFFO0FBQU0sNEJBQUksS0FBRztBQUFBLG9CQUFFO0FBQU0sMEJBQUksS0FBRztBQUFHLDJCQUFPO0FBQUEsa0JBQUU7QUFBQyx5QkFBTyxLQUFHLElBQUU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxxQkFBTSxDQUFDLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxJQUFHLEtBQUksS0FBSSxJQUFHLEdBQUUsSUFBRyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsU0FBUyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxJQUFFLE9BQUssT0FBSyxLQUFHLElBQUU7QUFBRyxzQkFBRztBQUFFLHdCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFPLEtBQUcsRUFBRSxJQUFHLEdBQUcsSUFBRyxFQUFFLElBQUU7QUFBQSxvQkFBRSxHQUFFLEVBQUU7QUFBQTtBQUFPLHdCQUFJLEtBQUcsRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxJQUFHLENBQUM7QUFBQSxnQkFBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsS0FBRyxFQUFFLEtBQUc7QUFBQSxjQUFDLEdBQUUsS0FBSSxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsWUFBQyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsSUFBSSxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUUscUJBQU8sTUFBSSxJQUFFLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLElBQUU7QUFBQSxZQUFDLENBQUMsQ0FBQztBQUFFLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRztBQUFHLHFCQUFPLEdBQUcsR0FBRSxHQUFHLElBQUUsSUFBRSxFQUFFLEdBQUcsSUFBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLElBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFPLEVBQUU7QUFBQSxxQkFBUztBQUFFLHNCQUFJLElBQUUsRUFBRSxHQUFHO0FBQUcseUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxPQUFLLElBQUUsRUFBRSxHQUFHLEdBQUcsS0FBRyxFQUFFLEdBQUcsR0FBRztBQUFHLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsa0JBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFFLHNCQUFJLElBQUUsRUFBRSxHQUFHO0FBQUcseUJBQU8sR0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLDJCQUFPLEVBQUUsT0FBSyxJQUFFLElBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLENBQUM7QUFBQTtBQUFVLHlCQUFPLEdBQUcsR0FBRztBQUFBO0FBQUEsWUFBRTtBQUFDLGdCQUFJLEtBQUcsR0FBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLElBQUksRUFBRSxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLElBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQVMsRUFBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxvQkFBRyxPQUFPLE1BQUks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SyxLQUFHO0FBQUEsd0JBQUU7QUFBQyw4QkFBSSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsR0FBRyxDQUFDO0FBQUUsNEJBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFFLEVBQUU7QUFBRTtBQUFBLHNCQUFRO0FBQUEsb0JBQUM7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRztBQUFHLHdCQUFHLEdBQUcsSUFBRyxHQUFHO0FBQUUsMEJBQUksS0FBRztBQUFBLHlCQUFPO0FBQUMsMEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsTUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLE1BQUksS0FBRyxLQUFHLElBQUU7QUFBRywyQkFBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSwwQkFBSSxJQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUcsSUFBRyxLQUFHLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsK0JBQU8sU0FBUyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxNQUFJLEdBQUcsT0FBSyxLQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUU7QUFBQSx3QkFBQztBQUFBLHNCQUFDLEVBQUUsRUFBRTtBQUFFLDBCQUFHLE9BQU8sTUFBSSxVQUFTO0FBQUMsNEJBQUksSUFBRTtBQUFFLDRCQUFHLElBQUc7QUFBQyw4QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUUsOEJBQUcsT0FBSyxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsQ0FBQyxJQUFFLE1BQUksSUFBRSxHQUFFLEtBQUcsS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDO0FBQUcsZ0NBQUksS0FBRztBQUFBLHdCQUFFO0FBQU0sOEJBQUU7QUFBRSw0QkFBRztBQUFFLDhCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxzQkFBQztBQUFNLGdDQUFPLEdBQUc7QUFBQSwrQkFBUztBQUFFLCtCQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsZ0NBQUksS0FBRztBQUFHO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUc7QUFBRywrQkFBRyxHQUFFLEVBQUU7QUFBRSxnQ0FBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLElBQUcsR0FBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUcsR0FBRztBQUFHLCtCQUFHLEdBQUUsRUFBRTtBQUFFLGdDQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRyxHQUFFLENBQUM7QUFBRTtBQUFBO0FBQWMsZ0NBQUksS0FBRyxHQUFHO0FBQUcsK0JBQUcsR0FBRSxFQUFFO0FBQUUsZ0NBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsR0FBRSxJQUFHLEdBQUUsQ0FBQztBQUFBO0FBQUUsMEJBQUksS0FBRztBQUFBLG9CQUFFO0FBQUMsd0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUsd0JBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQywwQkFBSSxLQUFHLEtBQUcsSUFBRSxHQUFFLEtBQUc7QUFBRSwyQkFBRyxPQUFLLElBQUUsTUFBSSxLQUFHLElBQUUsT0FBSyxNQUFJLEtBQUcsS0FBRyxPQUFLLEtBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxLQUFHLEtBQUcsR0FBRSxPQUFLLEtBQUc7QUFBQSxvQkFBRTtBQUFDLDBCQUFJLEdBQUcsSUFBRyxDQUFDO0FBQUUsd0JBQUksS0FBRztBQUFBLGtCQUFFO0FBQUEsZ0JBQUMsR0FBRSxFQUFFO0FBQUUsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRTtBQUFFLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLG1CQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUUsb0JBQUksSUFBRSxHQUFHLEVBQUUsR0FBRSxLQUFHLEtBQUcsR0FBRyxFQUFFO0FBQUUsdUJBQU8sTUFBSSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHO0FBQUcsd0JBQU8sR0FBRztBQUFBLHVCQUFTO0FBQUUsMkJBQU8sR0FBRyxHQUFFLElBQUcsR0FBRyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFFLDJCQUFPLEdBQUcsR0FBRSxJQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsc0JBQUUsR0FBRyxJQUFHLElBQUcsQ0FBQyxLQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUU7QUFBQTtBQUFVLDJCQUFPLEdBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQTtBQUFBLGNBQUc7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRztBQUFDLG9CQUFHLEdBQUcsT0FBSyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsT0FBSyxJQUFFLEVBQUUsSUFBRyxHQUFHLEVBQUUsSUFBRTtBQUFHLHlCQUFPLEVBQUUsSUFBRyxHQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsSUFBRyxHQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxPQUFLLElBQUUsS0FBRyxFQUFFLElBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxJQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLEtBQUcsR0FBRyxLQUFHLElBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxNQUFJLE1BQUksSUFBRTtBQUFFLG9CQUFHLElBQUc7QUFBQyxzQkFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyx1QkFBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQztBQUFFLHdCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxNQUFJLEdBQUcsRUFBRTtBQUFFLDBCQUFJLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxJQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLE1BQUksRUFBRSxJQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRSxJQUFHLEtBQUc7QUFBQSxnQkFBRTtBQUFNLHNCQUFJLEtBQUc7QUFBRyx1QkFBTztBQUFBLGNBQUU7QUFBQyxrQkFBSSxJQUFFLFNBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxHQUFHLElBQUksSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFFLHVCQUFTLEVBQUUsSUFBRztBQUFDLG1CQUFHLEVBQUUsTUFBSSxNQUFJLEdBQUcsSUFBRyxFQUFFO0FBQUUsb0JBQUksS0FBRyxFQUFFLEdBQUcsS0FBSSxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxNQUFJLEtBQUcsSUFBRSxHQUFFLEtBQUcsT0FBSyxHQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUcsS0FBSSxFQUFFLENBQUM7QUFBRyx1QkFBTSxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUU7QUFBRSxnQkFBRSxHQUFFLFNBQVMsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxvQkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLHNCQUFJLEtBQUcsS0FBRyxJQUFFLEdBQUUsS0FBRztBQUFFLHNCQUFHLElBQUUsT0FBSyxJQUFFLE9BQUssT0FBSyxLQUFHLEtBQUcsS0FBRyxLQUFHLElBQUUsT0FBSyxNQUFJLEtBQUcsSUFBRyxJQUFHO0FBQUMsd0JBQUksSUFBRSxPQUFLLEtBQUcsSUFBRTtBQUFFLHdCQUFHO0FBQUUsMEJBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQywrQkFBTyxHQUFHLElBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRyxLQUFJLElBQUcsRUFBRTtBQUFBLHNCQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLENBQUMsQ0FBQztBQUFBO0FBQU8sMEJBQUksS0FBRztBQUFFLDJCQUFPLEdBQUcsRUFBRSxNQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLEVBQUU7QUFBRSx1QkFBTyxHQUFHLEVBQUUsTUFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQyxDQUFDO0FBQUUsdUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyx5QkFBUyxHQUFHLElBQUc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsSUFBRyxJQUFJLElBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFFLElBQUUsRUFBRSxRQUFNLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsSUFBRyxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUM7QUFBRSxxQkFBRyxHQUFFLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsT0FBSyxHQUFHLENBQUMsTUFBSSxLQUFHLElBQUU7QUFBRyxzQkFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxHQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRSxNQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxJQUFHLEVBQUUsQ0FBQyxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUU7QUFBQSxvQkFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUc7QUFBRyx3QkFBRyxJQUFHO0FBQUMseUJBQUcsQ0FBQyxNQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsMEJBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUEsb0JBQUM7QUFBTSwwQkFBSSxLQUFHO0FBQUcsd0JBQUksS0FBRztBQUFBLGtCQUFFO0FBQU0sd0JBQUksS0FBRztBQUFHLHNCQUFJLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQUcsR0FBRSxDQUFDO0FBQUUsc0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHO0FBQUUsdUJBQU8sU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksSUFBRSxJQUFJLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEVBQUUsR0FBRyxLQUFJLElBQUcsQ0FBQztBQUFFLHVCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRTtBQUFFLG9CQUFHLE9BQU8sTUFBSTtBQUFTLHNCQUFHLE9BQUssSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsdUJBQUcsRUFBRTtBQUFFLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxrQkFBQyxXQUFTLE9BQUssSUFBRztBQUFDLHdCQUFJLElBQUUsR0FBRyxFQUFFO0FBQUUsdUJBQUcsRUFBRTtBQUFFLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxrQkFBQztBQUFNLHdCQUFFO0FBQUE7QUFBTyxzQkFBRTtBQUFFLG9CQUFHO0FBQUUsc0JBQUksS0FBRztBQUFFLG9CQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHO0FBQUUsc0JBQUcsQ0FBQyxNQUFJLENBQUMsT0FBSyxLQUFHLElBQUcsQ0FBQztBQUFHLDJCQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFHLE9BQUssR0FBRyxFQUFFLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBRztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFHLEdBQUcsRUFBRSxNQUFJLE1BQUksQ0FBQyxHQUFHLEdBQUUsRUFBRSxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSx5QkFBTyxHQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUc7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUsc0JBQUcsTUFBSSxPQUFPLE1BQUksVUFBUztBQUFDLHdCQUFHLE9BQUssR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRSxLQUFHO0FBQUUsMkJBQUc7QUFBQSxvQkFBQyxXQUFTLE9BQUssSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsRUFBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLE1BQUksSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxHQUFHLEtBQUksS0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsSUFBRyxLQUFHO0FBQUcsMkJBQUc7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsQ0FBQztBQUFHLHdCQUFJLEtBQUcsR0FBRyxFQUFFLElBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRyxLQUFJLEtBQUksRUFBRSxDQUFDLEtBQUcsSUFBSSxJQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxFQUFFLEVBQUUsSUFBRyxFQUFFLENBQUM7QUFBRSxzQkFBSSxLQUFHLEVBQUUsRUFBRSxJQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRSxHQUFHLEVBQUUsTUFBSSxLQUFHLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxJQUFFLEVBQUUsRUFBRSxLQUFJLEVBQUUsR0FBRSxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUU7QUFBRyxzQkFBRztBQUFFLHdCQUFJLEtBQUcsSUFBSSxJQUFHLENBQUMsR0FBRSxLQUFHO0FBQUE7QUFBUSx3QkFBSSxLQUFHLEdBQUUsS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxHQUFHLElBQUcsS0FBRyxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRyxFQUFFLENBQUM7QUFBRSxrQkFBRSxJQUFHLEdBQUcsSUFBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFNLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksS0FBRztBQUFFLHVCQUFTLEdBQUcsSUFBRztBQUFDLHVCQUFPLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLG1CQUFHLElBQUcsRUFBRTtBQUFFLHlCQUFRLEtBQUcsR0FBRSxLQUFHLE9BQUk7QUFBQyxzQkFBSSxJQUFFLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyx3QkFBSSxLQUFHLEVBQUUsR0FBRyxLQUFJLElBQUcsRUFBRTtBQUFFLHdCQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsMEJBQUksS0FBRyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxLQUFJLEVBQUUsQ0FBQztBQUFBLDZCQUFVLEdBQUcsR0FBRyxPQUFLO0FBQUUsMEJBQUksS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLDBCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRztBQUFFLDJCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxJQUFHLElBQUUsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRTtBQUFHLHNCQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUU7QUFBQyx3QkFBSSxLQUFHLElBQUcsS0FBRztBQUFHO0FBQUEsa0JBQVE7QUFBQyxzQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFO0FBQUcsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLElBQUcsR0FBRyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRSxJQUFHO0FBQUMseUJBQU8sR0FBRyxHQUFHLEtBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBRSx1QkFBTSxDQUFDLEdBQUUsSUFBRyxHQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLEdBQUcsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsQ0FBQztBQUFBLFlBQUMsRUFBRSxFQUFFLEdBQUUsS0FBRyxJQUFJLEVBQUUsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFHLHdCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxHQUFHLEdBQUc7QUFBRyx3QkFBRyxHQUFHLElBQUcsR0FBRyxHQUFFO0FBQUMsMEJBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRyxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUcsR0FBRztBQUFFLDRCQUFHLENBQUM7QUFBRyxpQ0FBTztBQUFBLHNCQUFFO0FBQUEsb0JBQUMsT0FBSztBQUFDLDBCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUc7QUFBRSwwQkFBRyxDQUFDO0FBQUcsK0JBQU87QUFBQSxvQkFBRTtBQUFDO0FBQUEsdUJBQVc7QUFBQSx1QkFBTztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBRztBQUFBO0FBQWMsMkJBQU87QUFBQTtBQUFFLHVCQUFPO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUMsR0FBRSxLQUFHLEVBQUU7QUFBRyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFHLHlCQUFNLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLElBQUcsR0FBRSxJQUFHLENBQUM7QUFBRSwyQkFBTSxDQUFD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QUcsR0FBRyxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUcsR0FBRztBQUFFLDRCQUFHLENBQUM7QUFBRyxpQ0FBTztBQUFBLHNCQUFFO0FBQUEsb0JBQUMsT0FBSztBQUFDLDBCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUc7QUFBRSwwQkFBRyxDQUFDO0FBQUcsK0JBQU87QUFBQSxvQkFBRTtBQUFDO0FBQUEsdUJBQVc7QUFBQSx1QkFBUTtBQUFHO0FBQUE7QUFBYywyQkFBTztBQUFBO0FBQUUsdUJBQU87QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFO0FBQUUsb0JBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQyxzQkFBSSxLQUFHLElBQUUsS0FBRztBQUFFLHNCQUFHLEVBQUUsS0FBRyxPQUFLLElBQUc7QUFBQyw0QkFBTztBQUFBLDJCQUFTO0FBQUUsNEJBQUksS0FBRztBQUFJO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHO0FBQUk7QUFBQSwyQkFBVztBQUFFLDRCQUFJLEtBQUc7QUFBSTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksS0FBRztBQUFJO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHO0FBQUk7QUFBQSwyQkFBVztBQUFFLDRCQUFJLEtBQUc7QUFBSTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksS0FBRztBQUFJO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHO0FBQUk7QUFBQSwyQkFBVztBQUFFLDRCQUFJLEtBQUc7QUFBSTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksS0FBRztBQUFJO0FBQUEsMkJBQVc7QUFBRyw0QkFBSSxLQUFHO0FBQUk7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUc7QUFBSTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksS0FBRztBQUFJO0FBQUEsMkJBQVc7QUFBRyw0QkFBSSxLQUFHO0FBQUk7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUc7QUFBSTtBQUFBO0FBQWMsNEJBQUksS0FBRztBQUFBO0FBQUksd0JBQUksS0FBRztBQUFHLHdCQUFFO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFHLENBQUM7QUFBRSxzQkFBSSxLQUFHO0FBQUUsdUJBQU8sT0FBSyxLQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUEsY0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLFNBQVMsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEdBQUcsQ0FBQyxNQUFJLElBQUc7QUFBQyxxQkFBRyxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFFLHFCQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRztBQUFHLHlCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQztBQUFFLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRztBQUFDLHlCQUFRLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxRQUFLO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRyxPQUFPLE1BQUksWUFBVSxPQUFLLElBQUc7QUFBQyx3QkFBRSxNQUFJLEdBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsSUFBRyxJQUFFLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSx3QkFBRyxPQUFPLE1BQUksWUFBVSxFQUFFLEtBQUcsS0FBRyxLQUFHLE9BQUssSUFBRztBQUFDLHlCQUFHLEdBQUUsQ0FBQyxJQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBRSwwQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsMkJBQUc7QUFBQSxvQkFBQztBQUFDLHdCQUFHLENBQUM7QUFBRywwQkFBSSxLQUFHLEdBQUUsS0FBRztBQUFFLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUc7QUFBRztBQUFBLGtCQUFRO0FBQUMseUJBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx5QkFBUSxLQUFHLEdBQUUsS0FBRyxPQUFJO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRyxPQUFPLE1BQUksWUFBVSxPQUFLLElBQUc7QUFBQyx1QkFBRyxDQUFDO0FBQUUsd0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRyxHQUFFLElBQUcsR0FBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUU7QUFBRztBQUFBLGtCQUFRO0FBQUMseUJBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx5QkFBUSxLQUFHLEdBQUUsS0FBRyxPQUFJO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRyxPQUFPLE1BQUksWUFBVSxPQUFLLElBQUc7QUFBQyx1QkFBRyxDQUFDO0FBQUUsd0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFHLEdBQUUsSUFBRyxHQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHO0FBQUEsa0JBQVE7QUFBQyx5QkFBTSxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSxvQkFBRyxPQUFPLE1BQUksWUFBVSxPQUFLLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRTtBQUFFLHVCQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxDQUFDO0FBQUcsc0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRTtBQUFFLHVCQUFP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R0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRztBQUFFLG9CQUFHLE9BQU8sTUFBSTtBQUFTLHNCQUFHLE9BQUs7QUFBRyx3QkFBSSxLQUFHO0FBQUEsMkJBQVksT0FBSztBQUFHLHdCQUFJLEtBQUc7QUFBQTtBQUFTLHlCQUFHO0FBQUE7QUFBTyx1QkFBRztBQUFFLG9CQUFHO0FBQUcsc0JBQUksS0FBRztBQUFFLG9CQUFHLElBQUc7QUFBQyxxQkFBRyxDQUFDO0FBQUUsc0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUcsc0JBQUUsRUFBRSxHQUFFLEVBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUUscUJBQUcsT0FBSyxNQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxNQUFJLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFHLHNCQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUcsR0FBRyxDQUFDO0FBQUUseUJBQU87QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSxvQkFBRyxPQUFPLEtBQUc7QUFBUyxzQkFBRyxPQUFLO0FBQUUsd0JBQUksS0FBRztBQUFBLDJCQUFZLE9BQUs7QUFBRSx3QkFBSSxLQUFHO0FBQUE7QUFBUyx5QkFBRztBQUFBO0FBQU8sdUJBQUc7QUFBRSxvQkFBRztBQUFHLHNCQUFJLEtBQUc7QUFBRSxvQkFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQUUsRUFBRSxHQUFFLEVBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUUscUJBQUcsT0FBSyxNQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxNQUFJLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFHLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQUcsQ0FBQztBQUFFLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLElBQUcsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsSUFBRSxFQUFFLEtBQUksS0FBRyxHQUFFLEtBQUcsRUFBRSxRQUFNLElBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFB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Q0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHNCQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQUcsR0FBRSxHQUFHO0FBQUUsd0JBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHFCQUFHLEdBQUUsQ0FBQztBQUFFLHNCQUFJLEtBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFFLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLElBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxJQUFFLEVBQUUsS0FBRyxHQUFFLEtBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxJ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QUFDLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFPLE9BQU8sTUFBSSxZQUFVLEdBQUcsT0FBSyxLQUFHLENBQUMsR0FBRyxHQUFHLElBQUcsR0FBRyxJQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUcsS0FBSSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsS0FBRyxHQUFHLEtBQUksQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFO0FBQUEsa0JBQUU7QUFBQyxzQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFFLHNCQUFHLE9BQU8sTUFBSTtBQUFTLHdCQUFHLE9BQUs7QUFBRywwQkFBSSxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsNkJBQVUsT0FBSztBQUFHLDBCQUFJLElBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBQTtBQUFPLDBCQUFFO0FBQUE7QUFBTyx3QkFBRTtBQUFFLHNCQUFHO0FBQUUsd0JBQUksSUFBRSxHQUFHLENBQUMsSUFBRSxFQUFFLElBQUcsQ0FBQyxJQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRztBQUFFLHNCQUFHLE9BQU8sTUFBSSxZQUFVLEdBQUcsT0FBSyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRyxFQUFFO0FBQUUseUJBQUc7QUFBQSxrQkFBQztBQUFDLHNCQUFHLENBQUM7QUFBRyx3QkFBSSxLQUFHO0FBQUcsc0JBQUksS0FBRztBQUFFLHNCQUFHLEdBQUcsQ0FBQyxNQUFJLEdBQUU7QUFBQyx3QkFBSSxLQUFHO0FBQUUsd0JBQUcsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLE1BQUksT0FBSyxLQUFHLElBQUcsQ0FBQyxJQUFHO0FBQUMsMEJBQUksS0FBRztBQUFHLDJCQUFHO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFDLHNCQUFHLENBQUM7QUFBRyx3QkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLE1BQUksSUFBSSxHQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsMEJBQU07QUFBQSxrQkFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSxzQkFBRyxPQUFPLE1BQUksWUFBVSxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUUseUJBQUc7QUFBQSxrQkFBQztBQUFDLHNCQUFHLENBQUM7QUFBRyx3QkFBSSxLQUFHO0FBQUUseUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGdCQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQztBQUFFLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUseUJBQVEsSUFBRSxPQUFJO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLHdCQUFJLEtBQUc7QUFBRSx5QkFBSSxPQUFLLE1BQUksT0FBSyxRQUFNLEtBQUcsSUFBRyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFHLEdBQUUsRUFBRTtBQUFFLDBCQUFJLEtBQUcsR0FBRyxDQUFDLE1BQUksSUFBRSxHQUFHLENBQUMsRUFBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLDZCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFFLHNCQUFHLE9BQU8sTUFBSSxZQUFVLEdBQUcsT0FBSyxLQUFHLENBQUMsR0FBRyxHQUFHLElBQUcsR0FBRyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFHLEdBQUUsR0FBRztBQUFFLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFFLHdCQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxDQUFDO0FBQUUsd0JBQUksS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUUsc0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUUscUJBQUcsQ0FBQyxNQUFJLE1BQUksR0FBRyxHQUFFLENBQUM7QUFBRSxzQkFBSSxJQUFFO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxtQkFBRyxHQUFFLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxNQUFJLEtBQUcsSUFBRSxHQUFFLElBQUUsS0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxDQUFDLEdBQUU7QUFBQSxjQUFDLENBQUM7QUFBRSx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztB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LEtBQUcsR0FBRztBQUFHLHlCQUFPLEdBQUcsSUFBRyxLQUFJLEdBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsd0JBQU87QUFBQSx1QkFBUztBQUFFLDJCQUFPO0FBQUEsdUJBQVE7QUFBRSx3QkFBSSxLQUFHLEtBQUcsS0FBRyxHQUFFLEtBQUcsTUFBSSxHQUFHLElBQUcsS0FBRyxNQUFJLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSx3QkFBRyxPQUFPLE1BQUksWUFBVSxPQUFLLElBQUc7QUFBQywwQkFBSSxLQUFHLElBQUksQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsRUFBRSxJQUFJLElBQUcsS0FBRyxHQUFHLEdBQUc7QUFBRywwQkFBRyxJQUFHO0FBQUMsNEJBQUksS0FBRyxHQUFHO0FBQUcsMEJBQUUsSUFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxHQUFHLEVBQUU7QUFBQSxzQkFBQztBQUFNLDJCQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUUsMEJBQUksS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUc7QUFBRywyQkFBRztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsQ0FBQztBQUFHLDBCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUsdUJBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRyxHQUFHLE9BQUssTUFBSSxHQUFHLE9BQUssTUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRztBQUFHLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsRUFBRSxDQUFDLElBQUUsQ0FBQyxJQUFHLEVBQUU7QUFBRSwyQkFBTyxHQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBQTtBQUFVLHdCQUFJLElBQUUsS0FBRyxLQUFHLEdBQUUsSUFBRSxLQUFHLEVBQUUsSUFBRyxJQUFFLEtBQUcsRUFBRSxJQUFHLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLElBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsQ0FBQyxDQUFDLElBQUUsQ0FBQyxJQUFHLEVBQUU7QUFBRSwyQkFBTyxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBQTtBQUFBLGNBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLElBQUUsRUFBRSxLQUFHO0FBQUUsdUJBQU8sRUFBRSxHQUFFLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHVCQUFHLElBQUcsRUFBRTtBQUFFLHdCQUFJLEtBQUcsRUFBRSxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBRSx3QkFBRyxHQUFHLEVBQUUsTUFBSTtBQUFFLDBCQUFJLEtBQUcsR0FBRSxLQUFHO0FBQUEseUJBQU07QUFBQywwQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUc7QUFBRSwwQkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLDRCQUFJLEtBQUcsT0FBSyxLQUFHLElBQUU7QUFBRSw0QkFBRyxDQUFDLElBQUc7QUFBQyw4QkFBSSxLQUFHO0FBQUcsK0JBQUc7QUFBQSx3QkFBQztBQUFBLHNCQUFDO0FBQUMsMEJBQUcsQ0FBQztBQUFHLDRCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUksSUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxHQUFHLEtBQUksS0FBSSxFQUFFLENBQUMsQ0FBQztBQUFFLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUc7QUFBQSxvQkFBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFH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QUFFLEtBQUcsR0FBRztBQUFHLDZCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUcsNkJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLHlCQUFPO0FBQUcsNkJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRSxLQUFJLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFHLDZCQUFNLENBQUMsR0FBRSxFQUFFLEdBQUcsS0FBSSxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxHQUFHLEtBQUksQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLElBQUUsTUFBSSxHQUFHLEtBQUcsQ0FBQyxJQUFHLEdBQUcsRUFBRSxJQUFFLENBQUMsSUFBRyxHQUFHLEVBQUU7QUFBRSw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEseUJBQU87QUFBQSx5QkFBUTtBQUFHLHlCQUFHLENBQUM7QUFBRSwwQkFBSSxLQUFHLE9BQUssS0FBRyxJQUFFLEdBQUUsS0FBRyxLQUFHLE1BQUk7QUFBSSw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLHlCQUFPO0FBQUEseUJBQVE7QUFBSSw2QkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBO0FBQUE7QUFBTywwQkFBTyxHQUFHO0FBQUEseUJBQVM7QUFBRSwwQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUUsNkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFFLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxHQUFHO0FBQUcseUJBQUcsTUFBSSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsQ0FBQztBQUFFLDBCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBRSw2QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFFLDBCQUFJLEtBQUcsRUFBRSxHQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUUsNkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBQTtBQUFFLG9CQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLEdBQUcsS0FBSSxHQUFFLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLG1CQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLEtBQUc7QUFBRSx1QkFBTyxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssTUFBSSxHQUFHLENBQUMsR0FBRSxLQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRSxLQUFJLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUUsR0FBRSxFQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSxvQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFHO0FBQUUsc0JBQUksS0FBRyxHQUFFLEtBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUU7QUFBQTtBQUFRLDJCQUFRLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEtBQUcsT0FBSTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRztBQUFFLHdCQUFHLE9BQU8sTUFBSSxZQUFVLE9BQUssR0FBRTtBQUFDLHlCQUFHLEdBQUUsQ0FBQztBQUFFLDBCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRztBQUFFLDBCQUFHLE9BQU8sTUFBSSxZQUFVLEdBQUcsT0FBSyxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsMkJBQUcsQ0FBQztBQUFFLDRCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRTtBQUFFLDJCQUFHLENBQUM7QUFBRSw0QkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLDRCQUFHLENBQUMsSUFBRztBQUFDLDhCQUFJLElBQUUsSUFBRyxLQUFHO0FBQUc7QUFBQSx3QkFBUTtBQUFDLDRCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRyxHQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUUsNkJBQUcsR0FBRSxLQUFHO0FBQUEsc0JBQUM7QUFBQywwQkFBRyxDQUFDO0FBQUcsOEJBQUssQ0FBQyxHQUFFLElBQUcsR0FBRztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsQ0FBQyxJQUFHO0FBQUMseUJBQUcsS0FBSSxDQUFDO0FBQUUsMEJBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsb0JBQUM7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxJQUFFLEdBQUc7QUFBRztBQUFBLGtCQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFTLEdBQUcsSUFBRyxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxHQUFFLEdBQUUsRUFBRTtBQUFFLHVCQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyxxQkFBRyxJQUFHLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUcsRUFBRSxHQUFFLElBQUU7QUFBRSxzQkFBRyxPQUFPLEtBQUc7QUFBUyx3QkFBRyxNQUFJO0FBQUUsMEJBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFBLDZCQUFVLE1BQUk7QUFBRywwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUE7QUFBTywwQkFBRTtBQUFBO0FBQU8sd0JBQUU7QUFBRSxzQkFBRztBQUFFLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBRSx5QkFBTyxHQUFHLElBQUcsQ0FBQyxHQUFFO0FBQUEsZ0JBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsT0FBSyxJQUFFLEdBQUcsS0FBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFFLHVCQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLEtBQUcsRUFBRTtBQUFHLHlCQUFTLEdBQUcsSUFBRztBQUFDLHlCQUFPLEdBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRztBQUFDLHlCQUFPLEdBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHdCQUFPLEdBQUc7QUFBQSx1QkFBUztBQUFFLHdCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxJQUFFLEdBQUcsSUFBRyxLQUFHLEVBQUUsS0FBSSxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEtBQUksS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUUsR0FBRyxJQUFHLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRSxHQUFHLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLElBQUUsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFHLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUcsd0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcs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QUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFHLEtBQUksQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxFQUFFLElBQUcsU0FBUyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsR0FBRyxHQUFFLENBQUMsTUFBSTtBQUFHLHNCQUFJLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyxzQkFBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxzQkFBRyxHQUFHLEVBQUUsS0FBRyxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUUsR0FBRyxLQUFJLEtBQUksRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFHLElBQUcsR0FBRyxLQUFJLEdBQUcsS0FBSSxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxHQUFHLEtBQUksRUFBRTtBQUFFLHlCQUFNLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRTtBQUFBLGdCQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxJQUFHLElBQUU7QUFBRSxvQkFBRyxDQUFDLEVBQUUsSUFBRztBQUFDLHNCQUFJLEtBQUc7QUFBRSxzQkFBRyxDQUFDLEVBQUUsTUFBSSxFQUFFLE9BQUssS0FBRyxJQUFHLENBQUMsSUFBRztBQUFDLHdCQUFJLEtBQUcsSUFBSSxDQUFDO0FBQUUsd0JBQUU7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUcsQ0FBQztBQUFFLHNCQUFJLEtBQUc7QUFBRSxvQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLE1BQUksR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsS0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLE9BQUssR0FBRyxFQUFFLE1BQUksS0FBRyxJQUFFO0FBQUcsc0JBQUksR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFFLG9CQUFJLEtBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRztBQUFHLGtCQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUcsSUFBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSx1QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLElB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QUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw2QkFBRyxJQUFJLEtBQUc7QUFBQSx3QkFBRTtBQUFNLDZCQUFHLEdBQUc7QUFBRSwrQkFBTSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxzQkFBQztBQUFDLDBCQUFJLEtBQUcsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLCtCQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQztBQUFBLHNCQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRztBQUFHLDZCQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxHQUFHLEVBQUU7QUFBQTtBQUFBO0FBQU8sMEJBQU8sR0FBRztBQUFBLHlCQUFTO0FBQUUsMEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSw2QkFBTSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyw2QkFBTyxNQUFJLEdBQUcsSUFBRyxFQUFFLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFBRSxvQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHVCQUFNLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUU7QUFBRSx1QkFBTSxDQUFDLEdBQUUsSUFBRyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFHLEVBQUUsTUFBSSxLQUFHLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSx3QkFBRyxHQUFFO0FBQUMsMEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRztBQUFFLDBCQUFHLEdBQUc7QUFBRywyQkFBRyxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUc7QUFBQSwyQkFBTTtBQUFDLDRCQUFJLEtBQUc7QUFBRSx5QkFBQyxHQUFHLE1BQUksQ0FBQyxHQUFHLE9BQUssS0FBRyxHQUFFLEtBQUcsSUFBRyxNQUFJLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxzQkFBQztBQUFBLG9CQUFDLE9BQUs7QUFBQywwQkFBSSxLQUFHLEdBQUc7QUFBRywwQkFBRyxHQUFHO0FBQUcsMkJBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSwyQkFBTTtBQUFDLDRCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUc7QUFBRSx5QkFBQyxDQUFDLE1BQUksR0FBRyxNQUFJLEdBQUcsUUFBTSxLQUFHLElBQUcsT0FBSyxHQUFHLEtBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQyxJQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxzQkFBRTtBQUFBLG9CQUFDO0FBQUMsMkJBQU0sQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxHQUFHLEtBQUksRUFBRSxDQUFDLENBQUM7QUFBQSxrQkFBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUUsR0FBRyxJQUFHLElBQUcsR0FBRyxJQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUUsdUJBQU8sR0FBRyxPQUFLLElBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLEVBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRztBQUFDLHdCQUFPLEdBQUc7QUFBQSx1QkFBUztBQUFFLHdCQUFJLElBQUUsR0FBRyxJQUFHLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLElBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSx1QkFBTztBQUFFLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRztBQUFFLDJCQUFPLEdBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxHQUFHLEtBQUcsR0FBRyxJQUFHLEdBQUcsTUFBSSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxJQUFHLENBQUMsTUFBSSxHQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUUsMkJBQU8sR0FBRyxHQUFHO0FBQUE7QUFBVSx3QkFBSSxLQUFHLEdBQUcsR0FBRyxHQUFHO0FBQUcsMkJBQU8sR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQTtBQUFBLGNBQUc7QUFBQyx1QkFBUyxFQUFFLElBQUcsSUFBRyxHQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFLHdCQUFHO0FBQUcsMEJBQUc7QUFBRyw0QkFBSSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sNEJBQUksS0FBRyxHQUFHLEtBQUksS0FBRztBQUFBLDZCQUFVO0FBQUcsMEJBQUksS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLDBCQUFJLEtBQUcsR0FBRSxLQUFHO0FBQUUsd0JBQUksS0FBRyxHQUFHLEdBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLE1BQUksS0FBRyxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxHQUFHLEtBQUksRUFBRSxDQUFDLENBQUM7QUFBQSxrQkFBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxJQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUUsR0FBRyxJQUFHLElBQUcsR0FBRyxJQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLElBQUUsR0FBRyxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFNLENBQUMsR0FBRSxHQUFFLElBQUcsR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHO0FBQUUsdUJBQU8sU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEdBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLElBQUc7QUFBQyxzQkFBRyxDQUFDLE1BQUksQ0FBQyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSx3QkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLDBCQUFJLElBQUU7QUFBRSwwQkFBRyxNQUFJLElBQUc7QUFBQyw0QkFBRyxPQUFLO0FBQUcsOEJBQUU7QUFBQSxpQ0FBVSxFQUFFLE1BQUksS0FBSTtBQUFDLDhCQUFJLEtBQUcsRUFBRSxFQUFFO0FBQUUsaUNBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFO0FBQUEsd0JBQUM7QUFBQSxzQkFBQyxPQUFLO0FBQUMsNEJBQUcsT0FBSyxJQUFHO0FBQUMsOEJBQUcsRUFBRSxPQUFLO0FBQUUsZ0NBQUksSUFBRSxFQUFFLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLGtDQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsaUNBQUcsSUFBRyxFQUFFO0FBQUUsa0NBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEVBQUUsR0FBRyxLQUFJLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLElBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRyxLQUFJLEVBQUU7QUFBRSxxQ0FBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsNEJBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLElBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQTtBQUFPLGdDQUFJLEtBQUcsRUFBRSxFQUFFO0FBQUUsaUNBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFO0FBQUEsd0JBQUM7QUFBQyw0QkFBRyxFQUFFLE1BQUk7QUFBSSxrQ0FBTztBQUFBLGlDQUFTO0FBQUUsa0NBQUU7QUFBRTtBQUFBLGlDQUFXO0FBQUEsaUNBQU87QUFBRSxrQ0FBSSxLQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQztBQUFFLHFDQUFNLENBQUMsR0FBRSxJQUFHLEVBQUUsRUFBRTtBQUFBO0FBQUEsc0JBQUU7QUFBQywwQkFBRyxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxFQUFFLElBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRSxFQUFFO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFDLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLEVBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxFQUFFLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsSUFBRyxFQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUc7QUFBRyx1QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxHQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUUsU0FBUyxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxxQkFBRyxJQUFHLENBQUM7QUFBRSwyQkFBUSxLQUFHLEdBQUUsS0FBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsT0FBSTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFO0FBQUUsd0JBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQywwQkFBSSxJQUFFO0FBQUUsMkJBQUksT0FBSyxLQUFHLE9BQUssUUFBTSxJQUFFLElBQUcsR0FBRTtBQUFDLDRCQUFJLEtBQUcsS0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsQ0FBQyxJQUFFLElBQUcsSUFBRSxFQUFFLEVBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLCtCQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsR0FBRyxFQUFFLE1BQUk7QUFBRywwQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLCtCQUFPLEdBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUEsc0JBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUU7QUFBQSx5QkFBTTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUc7QUFBRSwwQkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLDRCQUFJLEtBQUc7QUFBRSw0QkFBRyxNQUFJO0FBQUcsaUNBQUssTUFBSSxNQUFJLE9BQUssS0FBRztBQUFBLGlDQUFXLE9BQUs7QUFBRyw4QkFBRyxNQUFJO0FBQUcsaUNBQUc7QUFBQTtBQUFPLG9DQUFPO0FBQUEsbUNB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QUFBLDRCQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRTtBQUFBLDBCQUFDO0FBQUMsOEJBQUksS0FBRztBQUFBLHdCQUFFO0FBQUMsNEJBQUcsQ0FBQyxJQUFHO0FBQUMsOEJBQUksS0FBRztBQUFHLDhCQUFFO0FBQUEsd0JBQUM7QUFBQSxzQkFBQztBQUFDLDBCQUFHLENBQUM7QUFBRSw0QkFBSSxLQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLDBCQUFJLEtBQUc7QUFBQSxvQkFBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUc7QUFBRSx3QkFBRyxHQUFHLE9BQUssS0FBRyxHQUFHLEVBQUUsTUFBSSxHQUFFO0FBQUMsMEJBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUM7QUFBRSwyQkFBRztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsQ0FBQztBQUFHLDBCQUFJLEtBQUc7QUFBRSx3QkFBSSxLQUFHLEVBQUUsRUFBRSxJQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUsd0JBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQywwQkFBSSxLQUFHLEtBQUcsSUFBRSxHQUFFLEtBQUc7QUFBRSwwQkFBRyxLQUFHLE9BQUssSUFBRSxNQUFJLEtBQUcsSUFBRSxPQUFLLE1BQUksS0FBRyxLQUFHLE9BQUssSUFBRSxHQUFHLEVBQUUsSUFBRSxLQUFHLEdBQUUsQ0FBQyxJQUFHO0FBQUMsNEJBQUksS0FBRztBQUFHLDZCQUFHO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFDLHdCQUFHLENBQUMsSUFBRztBQUFDLDBC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QUFHLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSxpQ0FBRztBQUFBLDBCQUFDO0FBQUMsOEJBQUcsQ0FBQztBQUFHLGdDQUFJLEtBQUc7QUFBRyxpQ0FBTSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUcsS0FBSSxFQUFFLENBQUMsQ0FBQztBQUFBLHdCQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLElBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLENBQUM7QUFBRSwrQkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxJQUFHLEVBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRyxFQUFFO0FBQUEsc0JBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFFLDZCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLElBQUc7QUFBQyx3QkFBSSxLQUFHLEVBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLHdCQUFHLElBQUc7QUFBQywwQkFBSSxLQUFHO0FBQUUsMEJBQUcsT0FBTyxNQUFJLFlBQVUsT0FBSyxJQUFHO0FBQUMsMkJBQUcsSUFBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUUsNEJBQUksSUFBRTtBQUFBLHNCQUFDO0FBQU0sNkJBQUc7QUFBRSwwQkFBRztBQUFHLDRCQUFJLElBQUU7QUFBQSxvQkFBQyxPQUFLO0FBQUMsMEJBQUksSUFBRTtBQUFFLDBCQUFHLE9BQU8sTUFBSSxZQUFVLE9BQUssSUFBRztBQUFDLDJCQUFHLEVBQUU7QUFBRSw0QkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUEsc0JBQUM7QUFBTSw0QkFBRTtBQUFFLDBCQUFHO0FBQUUsNEJBQUksSUFBRTtBQUFBLG9CQUFDO0FBQUMsd0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUsd0JBQUcsT0FBTyxNQUFJLFlBQVUsRUFBRSxLQUFHO0FBQUksOEJBQU87QUFBQSw2QkFBUztBQUFFLDZCQUFHLEVBQUU7QUFBRSw4QkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUc7QUFBRSw4QkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLGdDQUFJLEtBQUc7QUFBRSxnQ0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsR0FBRSxLQUFHLElBQUcsQ0FBQztBQUFHLGtDQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUEsMEJBQUM7QUFBTSxpQ0FBRztBQUFFLDhCQUFHO0FBQUcsZ0NBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLE1BQUksR0FBRyxFQUFFO0FBQUUsOEJBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUUsRUFBRTtBQUFFLCtCQUFHO0FBQUU7QUFBQSw2QkFBVztBQUFBLDZCQUFPO0FBQUUsNkJBQUcsR0FBRSxFQUFFO0FBQUUsOEJBQUksS0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUUsQ0FBQztBQUFFLCtCQUFHO0FBQUU7QUFBQTtBQUFNLHdCQUFHLENBQUMsSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRztBQUFFLDBCQUFHLE9BQU8sTUFBSSxVQUFTO0FBQUMsNEJBQUksS0FBRztBQUFFLDRCQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxHQUFFLEtBQUcsSUFBRyxDQUFDO0FBQUcsOEJBQUksS0FBRyxDQUFDLEdBQUUsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLG1DQUFPO0FBQUEsMEJBQUUsQ0FBQztBQUFBLHNCQUFDO0FBQU0sNkJBQUc7QUFBRSwwQkFBRztBQUFHLDRCQUFJLEtBQUcsR0FBRyxFQUFFLElBQUUsR0FBRyxFQUFFLElBQUUsR0FBRyxFQUFFO0FBQUUsMEJBQUcsT0FBTyxLQUFHO0FBQVMsNEJBQUcsR0FBRyxPQUFLO0FBQUUsOEJBQUksS0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLG1DQUFPLEVBQUUsR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLDBCQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBO0FBQU8sOEJBQUksS0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLG1DQUFPLEVBQUUsR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLDBCQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHO0FBQUE7QUFBUSw0QkFBSSxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsaUNBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsd0JBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxFQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxJQUFHLEtBQUc7QUFBRywwQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxDQUFDO0FBQUEsb0JBQUM7QUFBQyx3QkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcs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QUcsSUFBRyxDQUFDO0FBQUUsd0JBQUcsR0FBRyxFQUFFLE1BQUk7QUFBRywwQkFBSSxJQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQywrQkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxzQkFBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUE7QUFBTywwQkFBSSxLQUFHO0FBQUUsd0JBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUUsMkJBQU0sQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxrQkFBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxJQUFHLEdBQUU7QUFBQywyQkFBTyxHQUFHLEdBQUcsSUFBRyxZQUFXLEVBQUUsR0FBRSxJQUFHLElBQUcsQ0FBQztBQUFBLGtCQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUE7QUFBTyxzQkFBSSxLQUFHO0FBQUcsb0JBQUksS0FBRyxHQUFHLEVBQUUsTUFBSSxLQUFHLElBQUU7QUFBRSxvQkFBRyxJQUFHO0FBQUMsc0JBQUUsR0FBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxzQkFBSSxLQUFHLENBQUMsR0FBRSxJQUFJLElBQUcsRUFBRSxJQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBTSxzQkFBSSxLQUFHO0FBQUcsb0JBQUksS0FBRyxHQUFHLEdBQUUsU0FBUyxJQUFHO0FBQUMsc0JBQUksSUFBRSxHQUFHLEVBQUU7QUFBRSxzQkFBRyxHQUFHLElBQUcsQ0FBQyxHQUFFO0FBQUMsdUJBQUcsSUFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxH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QUUsR0FBRSxLQUFHLE9BQUssR0FBRyxFQUFFLE1BQUksS0FBRyxJQUFFO0FBQUE7QUFBUSw0QkFBSSxLQUFHO0FBQUcsMEJBQUcsSUFBRztBQUFDLDRCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsMkJBQUcsRUFBRTtBQUFFLDRCQUFJLEtBQUc7QUFBQSxzQkFBRTtBQUFNLDRCQUFJLEtBQUc7QUFBRywwQkFBSSxJQUFFLEdBQUcsRUFBRSxNQUFJLEtBQUcsSUFBRTtBQUFFLDBCQUFHO0FBQUUsNEJBQUksSUFBRSxJQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRSxLQUFHLElBQUUsR0FBRyxHQUFFLEVBQUU7QUFBQTtBQUFPLDRCQUFJLElBQUU7QUFBRSwwQkFBRyxHQUFFO0FBQUMsNEJBQUksSUFBRSxHQUFHLEVBQUU7QUFBRSwyQkFBRyxFQUFFO0FBQUUsNEJBQUksSUFBRTtBQUFBLHNCQUFDO0FBQU0sNEJBQUksSUFBRTtBQUFFLDBCQUFJLEtBQUcsRUFBRSxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxJQUFFO0FBQUUsMEJBQUcsQ0FBQyxNQUFJLElBQUc7QUFBQyw0QkFBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyw0QkFBRTtBQUFBLHNCQUFDO0FBQUMsMEJBQUcsQ0FBQztBQUFFLDRCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUc7QUFBRywwQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUsMEJBQUcsQ0FBQyxLQUFHLENBQUMsTUFBSSxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssR0FBRTtBQUFDLDRCQUFJLEtBQUcsR0FBRztBQUFHLDRCQUFHLEdBQUcsSUFBRyxHQUFHLEdBQUU7QUFBQyw4QkFBRyxDQUFDLEdBQUcsSUFBRyxHQUFHLEdBQUU7QUFBQyxnQ0FBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsRUFBRSxLQUFJLEVBQUUsRUFBRTtBQUFHLGdDQUFHLEVBQUUsRUFBRSxHQUFFO0FBQUMsa0NBQUksS0FBRyxFQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSxtQ0FBRztBQUFBLDRCQUFDLE9BQUs7QUFBQyxnQ0FBRSxJQUFHLEVBQUUsR0FBRSxFQUFFLElBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUUsa0NBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLFNBQVMsSUFBRztBQUFDLHVDQUFPLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSw4QkFBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUUsbUNBQUc7QUFBQSw0QkFBQztBQUFBLDBCQUFDO0FBQUEsd0JBQUMsT0FBSztBQUFDLDhCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxFQUFFLEtBQUksRUFBRSxFQUFFO0FBQUcsOEJBQUcsRUFBRSxFQUFFLEdBQUU7QUFBQyxnQ0FBSSxLQUFHLEVBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLGlDQUFHO0FBQUEsMEJBQUMsT0FBSztBQUFDLDhCQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsSUFB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LENBQUMsS0FBRyxJQUFFLEdBQUUsS0FBRztBQUFBLGtCQUFFO0FBQU0sd0JBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsR0FBRyxJQUFHLElBQUUsRUFBRTtBQUFHLG9CQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUU7QUFBQyxzQkFBRyxHQUFHLEdBQUUsR0FBRztBQUFFLDJCQUFPLEdBQUcsR0FBRSxHQUFHLElBQUUsR0FBRyxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLElBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsS0FBRyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsSUFBRSxJQUFFLEVBQUUsTUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFFLHNCQUFHLEVBQUU7QUFBRywyQkFBTyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFO0FBQUkseUJBQU8sTUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxJQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxFQUFFO0FBQUksdUJBQU8sTUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcscUJBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsSUFBRSxFQUFFLEtBQUcsS0FBSSxJQUFFLElBQUUsRUFBRSxLQUFHLEdBQUUsS0FBRyxHQUFHLENBQUM7QUFBRSxvQkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLHNCQUFJLEtBQUcsS0FBRyxJQUFFO0FBQUUsc0JBQUcsS0FBRyxPQUFLLEdBQUU7QUFBQyx3QkFBRyxFQUFFLE1BQUksS0FBRyxJQUFFLE9BQUssSUFBRztBQUFDLDBCQUFJLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQywrQkFBTztBQUFBLHNCQUFFO0FBQUUsNkJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDLFdBQVMsT0FBSyxHQUFFO0FBQUMsdUJBQUcsQ0FBQztBQUFFLHdCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsd0JBQUcsT0FBTyxLQUFHLFVBQVM7QUFBQywwQkFBSSxLQUFHO0FBQUUsMkJBQUksTUFBSSxLQUFHLE9BQUssT0FBSyxLQUFHLElBQUc7QUFBRywrQkFBTSxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBQSxvQkFBQztBQUFDLDJCQUFPLEdBQUcsQ0FBQyxJQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxJQUFFO0FBQUEsa0JBQUc7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsQ0FBQyxJQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxLQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUk7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsc0JBQUksSUFBRTtBQUFFLHVCQUFJLE1BQUksS0FBRyxPQUFLLE9BQUssSUFBRSxJQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLFNBQVMsR0FBRSxJQUFHO0FBQUMsNkJBQU87QUFBQSxvQkFBQztBQUFFLDJCQUFNLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUcsRUFBRSxPQUFLO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUUsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRztBQUFFLHNCQUFJLEtBQUcsU0FBUyxHQUFFLElBQUc7QUFBQywyQkFBTyxHQUFHLEdBQUcsR0FBRSxXQUFVLEVBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUE7QUFBTyxzQkFBSSxLQUFHO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsSUFBRSxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsY0FBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxjQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFDO0FBQUUsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxNQUFJLElBQUUsSUFBRSxHQUFFLElBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsT0FBSyxJQUFFLEVBQUUsS0FBRyxFQUFFLEdBQUc7QUFBRyx1QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLEtBQUc7QUFBRSx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxHQUFHLElBQUcsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsSUFBRSxFQUFFLElBQUcsS0FBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLHNCQUFJLEdBQUcsR0FBRSxFQUFFLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsRUFBRTtBQUFFLG9CQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUksS0FBRyxHQUFHLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxLQUFHLE1BQUksR0FBRyxDQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsS0FBRyxHQUFHLE9BQUssSUFBRSxHQUFHLElBQUcsR0FBRyxFQUFFLElBQUUsR0FBRyxHQUFHO0FBQUcsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksS0FBRztBQUFFLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsSUFBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFHO0FBQUcsb0JBQUcsS0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUc7QUFBQyxzQkFBSSxJQUFFLEVBQUU7QUFBRyxzQkFBRyxDQUFDO0FBQUUsMkJBQU87QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFPLEtBQUcsR0FBRyxHQUFFLEVBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsRUFBRTtBQUFFLG9CQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsSUFBRTtBQUFFLG9CQUFHLE9BQU8sTUFBSTtBQUFTLHNCQUFHLE1BQUk7QUFBRyx3QkFBRyxNQUFJO0FBQUcsMEJBQUU7QUFBQTtBQUFPLDhCQUFPLEtBQUcsS0FBRztBQUFBLDZCQUFRO0FBQUUsOEJBQUksS0FBRyxHQUFHLEdBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUFFO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRTtBQUFBO0FBQWMsOEJBQUU7QUFBQTtBQUFBLDJCQUFVLE9BQUs7QUFBRSx3QkFBSSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sd0JBQUU7QUFBQTtBQUFPLHNCQUFFO0FBQUUsb0JBQUc7QUFBRSxzQkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxFQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQyxzQkFBRyxPQUFLLElBQUc7QUFBQyx3QkFBRyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHO0FBQUcsMEJBQUcsR0FBRyxPQUFLO0FBQUUsNEJBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLElBQUcsS0FBSSxHQUFFLEdBQUcsRUFBRSxDQUFDO0FBQUEsMkJBQU07QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBRywyQkFBRyxHQUFFLElBQUcsRUFBRTtBQUFFLDRCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBQSxzQkFBQztBQUFDLDBCQUFFLEdBQUcsR0FBRSxFQUFFLElBQUUsR0FBRyxHQUFFLEVBQUU7QUFBRSwwQkFBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLENBQUM7QUFBRSx5QkFBRyxHQUFFLENBQUM7QUFBRSwwQkFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUUsNkJBQU8sR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQywwQkFBSyxDQUFDLEdBQUUsSUFBRyxHQUFHO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxPQUFLLElBQUc7QUFBQyx3QkFBRyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHO0FBQUcsMEJBQUcsR0FBRyxPQUFLO0FBQUUsNEJBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLElBQUcsS0FBSSxHQUFFLEdBQUcsRUFBRSxDQUFDO0FBQUEsMkJBQU07QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBRywyQkFBRyxHQUFFLElBQUcsRUFBRTtBQUFFLDRCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBQSxzQkFBQztBQUFDLHlCQUFHLEdBQUUsRUFBRTtBQUFFLDBC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RyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQyxNQUFJLEtBQUcsSUFBRSxHQUFFLEtBQUcsTUFBSSxDQUFDLEdBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyxrQkFBSSxLQUFHO0FBQUUsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLElBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBRSxFQUFFLE9BQUssR0FBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksSUFBRSxHQUFHLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxJQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRztBQUFFLG9CQUFHLEdBQUcsQ0FBQyxNQUFJLEtBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRTtBQUFDLHNCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLENBQUMsQ0FBQztBQUFFLHVCQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxDQUFDO0FBQUcsc0JBQUksS0FBRztBQUFFLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRztBQUFFLG9CQUFHLEVBQUUsT0FBSztBQUFFLHNCQUFJLEtBQUcsRUFBRTtBQUFBLHFCQUFPO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQUcsc0JBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUcsSUFB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QUksR0FBRyxLQUFJLEdBQUcsS0FBSSxHQUFHLEtBQUksR0FBRyxLQUFJLEdBQUcsS0FBSSxHQUFHLEtBQUksR0FBRyxLQUFJLEdBQUcsS0FBSSxHQUFHLEtBQUksR0FBRyxLQUFJLEdBQUcsS0FBSSxHQUFHLEtBQUksR0FBRyxLQUFJLEdBQUcsS0FBSSxHQUFHLEtBQUksR0FBRyxLQUFJLEdBQUcsS0FBSSxHQUFHLEdBQUcsR0FBRSxLQUFHLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFFLDZCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFO0FBQUUsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEVBQUUsT0FBSztBQUFFLHNCQUFJLEtBQUcsR0FBRSxLQUFHLEVBQUU7QUFBQTtBQUFRLHNCQUFJLEtBQUcsU0FBUyxHQUFFLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLEdBQUcsSUFBRyxHQUFFLEVBQUUsR0FBRSxLQUFHO0FBQUUsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLEtBQUc7QUFBRSx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxHQUFHLElBQUcsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksSUFBRSxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUUsb0JBQUcsR0FBRyxDQUFDLE1BQUk7QUFBRyxzQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUc7QUFBRywyQkFBTSxDQUFDLEdBQUUsSUFBRyxHQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBQSxrQkFBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUE7QUFBTyxzQkFBSSxLQUFHO0FBQUUsb0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHO0FBQUUsb0JBQUcsT0FBTyxNQUFJLFlBQVUsT0FBSyxJQUFHO0FBQUMsc0JBQUksSUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsdUJBQUcsSUFBRyxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxNQUFJLElBQUUsSUFBRTtBQUFFLHdCQUFHLElBQUc7QUFBQyx5QkFBRyxJQUFHLENBQUM7QUFBRSwwQkFBSSxLQUFHLENBQUMsR0FBRSxFQUFFLEdBQUcsS0FBSSxJQUFHLEVBQUUsQ0FBQztBQUFFLHlCQUFHLElBQUcsQ0FBQztBQUFFLDBCQUFJLEtBQUc7QUFBQSxvQkFBRTtBQUFNLDBCQUFJLEtBQUc7QUFBRyx3QkFBSSxLQUFHLEVBQUUsR0FBRyxLQUFJLEVBQUU7QUFBRSx3QkFBRyxHQUFHLEVBQUUsTUFBSTtBQUFHLDBCQUFJLEtBQUc7QUFBQTtBQUFRLDBCQUFJLEtBQUcsRUFBRSxFQUFFLEdBQUUsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLDRCQUFJLEtBQUcsR0FBRztBQUFHLCtCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFBLHNCQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSwyQkFBTSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGtCQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUsdUJBQUc7QUFBQSxnQkFBQztBQUFDLG9CQUFHLENBQUM7QUFBRyxzQkFBSSxJQUFFO0FBQUUsb0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHO0FBQUUsb0JBQUcsT0FBTyxNQUFJLFlBQVUsT0FBSyxJQUFHO0FBQUMscUJBQUcsR0FBRSxFQUFFO0FBQUUsc0JBQUksS0FBRyxFQUFFLEdBQUcsS0FBSSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUMsQ0FBQztBQUFFLHVCQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxDQUFDO0FBQUcsc0JBQUksS0FBRztBQUFFLG9CQUFJLEtBQUcsTUFBSSxJQUFFLElBQUUsR0FBRSxLQUFHLE9BQUssT0FBSyxJQUFFLElBQUU7QUFBRyx1QkFBTyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksS0FBRztBQUFFLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsSUFBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsbUJBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBRSxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksS0FBRztBQUFFLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsbUJBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBRSxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksS0FBRztBQUFFLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsSUFBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUcsbUJBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBRSxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksS0FBRztBQUFFLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsSUFBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFHLENBQUMsQ0FBQztBQUFFLG1CQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsTUFBSSxHQUFHLEVBQUU7QUFBRSx1QkFBTyxNQUFJLEdBQUcsR0FBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyxrQkFBSSxLQUFHO0FBQUUsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxJQUFHLElBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFO0FBQUcsb0JBQUcsRUFBRSxPQUFLLE1BQUksT0FBTyxLQUFHLFlBQVUsTUFBSSxJQUFHO0FBQUMsc0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLEdBQUc7QUFBRyxxQkFBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsRUFBRSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsSUFBRyxLQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFLEtBQUksSUFBRSxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLElBQUUsRUFBRSxFQUFFLElBQUUsRUFBRSxHQUFHLElBQUcsRUFBRTtBQUFFLHlCQUFNLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEVBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSxvQkFBRyxHQUFHLE9BQUs7QUFBRSxzQkFBSSxLQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUE7QUFBUSxzQkFBSSxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsa0JBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFFLHVCQUFNLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLEtBQUc7QUFBRSx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxHQUFHLElBQUcsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxLQUFJLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEVBQUUsT0FBSztBQUFFLHNCQUFJLElBQUUsR0FBRSxLQUFHLEVBQUU7QUFBQTtBQUFRLHNCQUFJLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRyxHQUFFLENBQUMsR0FBRSxLQUFHO0FBQUUsb0JBQUksS0FBRyxFQUFFO0FBQUksb0JBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsRUFBRSxJQUFHLElBQUU7QUFBRSxzQkFBRyxHQUFHLE9BQUssSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRyx3QkFBRyxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsSUFBRSxHQUFHLEVBQUUsSUFBRSxJQUFFO0FBQUUsMEJBQUc7QUFBRyw0QkFBSSxLQUFHLEdBQUcsSUFBRyxHQUFHLEVBQUUsSUFBRSxJQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxDQUFDLE1BQUksS0FBRyxJQUFFO0FBQUE7QUFBTyw0QkFBSSxLQUFHO0FBQUcsMEJBQUksS0FBRyxNQUFJLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRSxHQUFHLEVBQUUsSUFBRSxJQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUc7QUFBRywyQkFBRztBQUFBLG9CQUFDO0FBQUMsMkJBQUssSUFBRTtBQUFBLGtCQUFFO0FBQU0sd0JBQUU7QUFBRSxzQkFBRztBQUFFLHdCQUFJLEtBQUc7QUFBQSxnQkFBQztBQUFNLHNCQUFJLEtBQUc7QUFBRyx1QkFBTSxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUUsSUFBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyxrQkFBSSxLQUFHO0FBQUUsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8s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RSxHQUFHLEdBQUUsU0FBUyxJQUFHO0FBQUMscUJBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUksS0FBRztBQUFFLHNCQUFHLEdBQUcsRUFBRSxNQUFJLEtBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxHQUFHLEtBQUksR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUc7QUFBRyx3QkFBRSxFQUFFLEdBQUcsSUFBRyxJQUFHLEdBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUUsd0JBQUksS0FBRyxDQUFDLEdBQUUsRUFBRTtBQUFFLHlCQUFHO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxDQUFDO0FBQUcsd0JBQUksS0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUc7QUFBRSxzQkFBRyxHQUFHLE9BQUs7QUFBRSx3QkFBSSxLQUFHLEdBQUc7QUFBQSx1QkFBTztBQUFDLHdCQUFJLEtBQUcsR0FBRztBQUFHLHdCQUFHLElBQUc7QUFBQywwQkFBSSxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsK0JBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsc0JBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRztBQUFFLDJCQUFHO0FBQUEsb0JBQUM7QUFBTSwwQkFBSSxLQUFHLEdBQUc7QUFBQSxrQkFBRTtBQUFDLHNCQUFHLENBQUM7QUFBRyx3QkFBSSxLQUFHLElBQUcsS0FBRztBQUFHLHlCQUFNLENBQUMsR0FBRSxJQUFHLEVBQUU7QUFBQSxnQkFBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsb0JBQUc7QUFBRyxzQkFBSSxLQUFHLEVBQUUsSUFBRyxJQUFFLE1BQUksRUFBRSxJQUFHLEtBQUcsSUFBRTtBQUFBO0FBQU8sc0JBQUksS0FBRztBQUFHLHVCQUFPLE1BQUksR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyxxQkFBRyxJQUFHLEVBQUU7QUFBRSxzQkFBSSxLQUFHO0FBQUUsc0JBQUcsR0FBRyxFQUFFLE1BQUksS0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLEdBQUcsS0FBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsR0FBRztBQUFHLHdCQUFFLEVBQUUsR0FBRyxJQUFHLElBQUcsR0FBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBRSx3QkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQUc7QUFBQSxrQkFBQztBQUFDLHNCQUFHLENBQUM7QUFBRyx3QkFBSSxLQUFHO0FBQUUsc0JBQUksS0FBRyxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFFLHNCQUFHLEdBQUcsT0FBSztBQUFFLHdCQUFJLEtBQUcsR0FBRztBQUFBLHVCQUFPO0FBQUMsd0JBQUksS0FBRyxHQUFHO0FBQUcsd0JBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQywrQkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxzQkFBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHO0FBQUUsMkJBQUc7QUFBQSxvQkFBQztBQUFNLDBCQUFJLEtBQUcsR0FBRztBQUFBLGtCQUFFO0FBQUMsc0JBQUcsQ0FBQztBQUFHLHdCQUFJLEtBQUcsSUFBRyxLQUFHO0FBQUcseUJBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLG9CQUFFLEVBQUUsTUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUUsb0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLENBQUM7QUFBRSx1QkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHFCQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUUscUJBQUcsR0FBRSxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUUscUJBQUcsR0FBRSxDQUFDO0FBQUUsc0JBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxJQUFFLEVBQUUsSUFBRyxLQUFHLEtBQUcsR0FBRyxFQUFFO0FBQUUseUJBQU8sTUFBSSxHQUFHLEdBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRyx1QkFBTyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLFNBQVMsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFHLEtBQUksQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxDQUFDO0FBQUUseUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyx5QkFBTyxHQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSxtQkFBRyxHQUFFLEVBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLE1BQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxJQUFFLEdBQUUsS0FBRyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUUsbUJBQUcsQ0FBQztBQUFFLG9CQUFJLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEdBQUcsT0FBSztBQUFFLHNCQUFJLEtBQUcsSUFBRyxLQUFHLEdBQUc7QUFBQTtBQUFRLHNCQUFJLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRyxJQUFHLENBQUMsR0FBRSxLQUFHO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsb0JBQUcsR0FBRyxHQUFFLENBQUMsS0FBRyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsSUFBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxHQUFHLElBQUcsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFHLEVBQUU7QUFBRyxvQkFBRSxHQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUsbUJBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsTUFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLElBQUUsSUFBRyxLQUFHLEVBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSxvQkFBRyxPQUFPLE1BQUksWUFBVSxPQUFLLElBQUc7QUFBQyxxQkFBRyxHQUFFLEVBQUU7QUFBRSxzQkFBSSxLQUFHLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLENBQUM7QUFBRSx1QkFBRztBQUFBLGdCQUFDO0FBQUMsb0JBQUcsQ0FBQztBQUFHLHNCQUFJLEtBQUc7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHO0FBQUUsc0JBQUcsT0FBTyxNQUFJLFlBQVUsT0FBSyxJQUFHO0FBQUMsdUJBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxDQUFDO0FBQUUsd0JBQUksS0FBRztBQUFFLHdCQUFHLEdBQUcsQ0FBQyxNQUFJLEtBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRTtBQUFDLDBCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLENBQUMsQ0FBQztBQUFFLDJCQUFHO0FBQUEsb0JBQUM7QUFBQyx3QkFBRyxDQUFDO0FBQUcsMEJBQUksS0FBRztBQUFBLGtCQUFDO0FBQU0seUJBQUc7QUFBRSxzQkFBRztBQUFHLHdCQUFJLEtBQUc7QUFBRSxzQkFBSSxLQUFHO0FBQUEsZ0JBQUUsT0FBSztBQUFDLHFCQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsbUJBQUcsQ0FBQztBQUFFLG9CQUFJLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEdBQUcsT0FBSztBQUFFLHNCQUFJLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUc7QUFBQSxxQkFBTztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUcsc0JBQUc7QUFBRyx3QkFBSSxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsb0JBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUc7QUFBQSwyQkFBVTtBQUFHLHdCQUFJLEtBQUcsR0FBRSxLQUFHLFNBQVMsSUFBRyxJQUFHO0FBQUMsNkJBQU8sRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsb0JBQUMsR0FBRSxLQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUc7QUFBQSwyQkFBVTtBQUFHLHdCQUFJLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLG9CQUFDLEdBQUUsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyx3QkFBSSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxFQUFFLElBQUcsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLDZCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLG9CQUFDLENBQUMsR0FBRSxLQUFHO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJB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R0FBRSxJQUFHLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUcsRUFBRSxJQUFHLElBQUUsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFHLEtBQUksR0FBRSxDQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUcsSUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRyxJQUFHLEVBQUU7QUFBRSxxQkFBRyxJQUFHLEVBQUU7QUFBRSxzQkFBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLEVBQUU7QUFBRSxxQkFBRyxJQUFHLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHNCQUFHLEdBQUcsRUFBRSxHQUFFLE9BQUs7QUFBRyx3QkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxvQkFBQyxHQUFFLEtBQUcsRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUE7QUFBTyx3QkFBSSxLQUFHO0FBQUcseUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxDQUFDLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRyxLQUFJLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxvQkFBRyxHQUFHLE9BQUs7QUFBRSxzQkFBSSxJQUFFLElBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRztBQUFBLHFCQUFPO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRyxzQkFBRztBQUFHLHdCQUFJLEtBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxvQkFBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxJQUFHLEtBQUc7QUFBQTtBQUFPLHdCQUFJLEtBQUcsR0FBRSxJQUFFLElBQUcsS0FBRyxHQUFFLEtBQUcsRUFBRSxJQUFHLElBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyw2QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxvQkFBQyxDQUFDLEdBQUUsS0FBRztBQUFBLGdCQUFFO0FBQUMsb0JBQUksS0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBRSx1QkFBTSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHFCQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFFLHlCQUFPLE9BQU8sS0FBRyxZQUFVLE1BQUksT0FBSyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsSUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFHLENBQUMsQ0FBQztBQUFFLG1CQUFHLEdBQUUsRUFBRTtBQUFFLG9CQUFJLElBQUUsRUFBRSxHQUFHLEtBQUksS0FBSSxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUcsR0FBRyxPQUFLO0FBQUUsc0JBQUksS0FBRyxHQUFFLElBQUUsR0FBRztBQUFBO0FBQVEsc0JBQUksS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLDJCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLGtCQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLElBQUU7QUFBRSx1QkFBTSxDQUFDLEdBQUUsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxFQUFFO0FBQUUsb0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSx1QkFBTyxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLENBQUMsTUFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUc7QUFBRSxzQkFBRyxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxJQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRztBQUFHLDZCQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFBLG9CQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFHLElBQUcsR0FBRSxFQUFFLENBQUM7QUFBRSx5QkFBRztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsQ0FBQztBQUFHLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUcsS0FBSSxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUUsc0JBQUksS0FBRyxHQUFHLEdBQUUsU0FBUyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSx1QkFBRyxJQUFHLENBQUM7QUFBRSw2QkFBUSxLQUFHLEdBQUUsS0FBRyxPQUFJO0FBQUMsMEJBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSwwQkFBRyxPQUFPLE1BQUksVUFBUztBQUFDLDRCQUFJLEtBQUc7QUFBRSw2QkFBSSxPQUFLLEtBQUcsT0FBSyxRQUFNLEtBQUcsSUFBRyxJQUFHO0FBQUMsOEJBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLE9BQUssSUFBRSxJQUFFLEdBQUUsS0FBRyxNQUFJLEdBQUcsRUFBRTtBQUFFLGlDQUFPLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRTtBQUFBLHdCQUFDO0FBQUEsc0JBQUM7QUFBQywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFJLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUUsMEJBQUc7QUFBRyw0QkFBRyxHQUFHO0FBQUcsOEJBQUcsR0FBRyxPQUFLLElBQUc7QUFBQywrQkFBRyxJQUFHLEVBQUU7QUFBRSxnQ0FBSSxLQUFHO0FBQUEsMEJBQUU7QUFBTSxpQ0FBRztBQUFBO0FBQU8sa0NBQU8sR0FBRztBQUFBLGlDQUFTO0FBQUUsa0NBQUksS0FBRyxHQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUUsa0NBQUc7QUFBRyx3Q0FBTyxHQUFHLEdBQUc7QUFBQSx1Q0FBUztBQUFBLHVDQUFPO0FBQUUseUNBQUc7QUFBRTtBQUFBO0FBQU0sb0NBQUksR0FBRyxJQUFHLEVBQUU7QUFBRSxrQ0FBSSxLQUFHO0FBQUc7QUFBQSxpQ0FBVztBQUFHLGlDQUFHLElBQUcsRUFBRTtBQUFFLGtDQUFJLEtBQUc7QUFBRztBQUFBO0FBQWMsbUNBQUc7QUFBQTtBQUFBO0FBQU8sZ0NBQU8sR0FBRztBQUFBLCtCQUFTO0FBQUUsZ0NBQUksS0FBRyxHQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUUsZ0NBQUc7QUFBRyxzQ0FBTyxHQUFHLEdBQUc7QUFBQSxxQ0FBUztBQUFBLHFDQUFPO0FBQUUsc0NBQUksS0FBRztBQUFHLHVDQUFHO0FBQUU7QUFBQTtBQUFNLGdDQUFHLENBQUM7QUFBRyxrQ0FBSSxLQUFHO0FBQUksZ0NBQUksS0FBRztBQUFHO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHO0FBQUk7QUFBQTtBQUFjLGlDQUFHO0FBQUE7QUFBRSwwQkFBRztBQUFHLDRCQUFJLEtBQUc7QUFBRywwQkFBSSxLQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFO0FBQUEsb0JBQUM7QUFBQSxrQkFBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLE1BQUksR0FBRyxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxHQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxnQkFBQyxHQUFFLENBQUMsSUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLEVBQUU7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsR0FBRztBQUFFLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUcsR0FBRyxPQUFLO0FBQUUsc0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRztBQUFBO0FBQVEsc0JBQUksS0FBRyxHQUFFLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQywyQkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUU7QUFBQSxrQkFBQyxHQUFFLEtBQUcsSUFBRyxLQUFHLEVBQUUsR0FBRyxHQUFHLElBQUcsSUFBRyxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFF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QUFFO0FBQUMsZ0NBQUUsR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsbUNBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsMEJBQUMsR0FBRSxDQUFDO0FBQUEsNkJBQU87QUFBRSw4QkFBRyxHQUFHLEdBQUUsQ0FBQyxNQUFJO0FBQUUsbUNBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLGtDQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUsa0NBQUksS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLGtDQUFHLE9BQU8sTUFBSSxVQUFTO0FBQUMsb0NBQUcsT0FBSztBQUFHLHlDQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSxvQ0FBRyxPQUFLLElBQUc7QUFBQyxxQ0FBRyxHQUFFLEVBQUU7QUFBRSxzQ0FBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHFDQUFHLEdBQUUsRUFBRTtBQUFFLHNDQUFJLEtBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLHlDQUFNLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsZ0NBQUM7QUFBQSw4QkFBQztBQUFDLGtDQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSxxQ0FBTSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSw0QkFBQyxHQUFFLENBQUM7QUFBRTtBQUFBLDZCQUFXO0FBQUUsaUNBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLGdDQUFJLEtBQUcsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHFDQUFPLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBQSw0QkFBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUsbUNBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsMEJBQUMsR0FBRSxDQUFDO0FBQUE7QUFBQSxrQkFBRSxXQUFTLE9BQUs7QUFBRywyQkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFO0FBQUMsMEJBQUksS0FBRyxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQywrQkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLHNCQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsSUFBSSxHQUFFLENBQUM7QUFBRSwwQkFBRyxHQUFHLEVBQUU7QUFBRSw0QkFBSSxLQUFHLEdBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFHLEtBQUksRUFBRSxDQUFDO0FBQUEsK0JBQVUsR0FBRyxFQUFFO0FBQUUsNEJBQUksS0FBRyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUEsK0JBQVUsR0FBRyxFQUFFLE1BQUk7QUFBRyw0QkFBSSxLQUFHLEdBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFHLEtBQUksRUFBRSxDQUFDO0FBQUEsMkJBQU07QUFBQyw0QkFBSSxLQUFHLEVBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRSxLQUFHLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBRSw0QkFBRyxHQUFHLE9BQUs7QUFBRSw4QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUE7QUFBUSw4QkFBSSxLQUFHLEdBQUUsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLG1DQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLDBCQUFDLEdBQUUsS0FBRyxJQUFHLEtBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSw0QkFBSSxLQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsRUFBRTtBQUFBLHNCQUFDO0FBQUMsMEJBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsNkJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxvQkFBQyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFFLDJCQUFNLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGtCQUFDLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUU7QUFBQyxzQkFBRSxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUUsd0JBQUksS0FBRyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUUsMkJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsa0JBQUMsR0FBRSxDQUFDO0FBQUUsb0JBQUcsT0FBTyxNQUFJO0FBQVMsc0JBQUcsTUFBSSxJQUFHO0FBQUMsd0JBQUcsT0FBSyxJQUFHO0FBQUMsMEJBQUcsRUFBRSxJQUFJO0FBQUcsK0JBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLDhCQUFJLEtBQUcsRUFBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsaUNBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsd0JBQUMsR0FBRSxDQUFDO0FBQUEsb0JBQUMsV0FBUyxPQUFLO0FBQUcsNkJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLDRCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQUcsR0FBRSxFQUFFO0FBQUUsNEJBQUksS0FBRyxFQUFFLElBQUksSUFBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSw0QkFBRyxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssS0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFHLEdBQUcsR0FBRTtBQUFDLDZCQUFHLENBQUM7QUFBRSw4QkFBSSxLQUFHLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxLQUFJLEdBQUUsQ0FBQyxDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxJQUFHLEtBQUc7QUFBRywrQkFBRztBQUFBLHdCQUFDO0FBQUMsNEJBQUcsQ0FBQztBQUFHLDhCQUFJLEtBQUc7QUFBRSw0QkFBSSxLQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSwrQkFBTSxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLHNCQUFDLEdBQUUsQ0FBQztBQUFBLGtCQUFDLE9BQUs7QUFBQyx3QkFBSSxLQUFHO0FBQUUseUJBQUksT0FBSyxNQUFJLE1BQUksUUFBTSxLQUFHLElBQUc7QUFBRyw2QkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFO0FBQUMsNEJBQUksS0FBRyxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSwrQkFBTSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxzQkFBQyxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsSUFBRSxJQUFFO0FBQUUsdUJBQU8sR0FBRyxHQUFFLENBQUMsSUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBRSxxQkFBRyxHQUFFLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUc7QUFBRSxzQkFBRyxPQUFPLE1BQUksWUFBVSxHQUFHLE9BQUssS0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFHLEdBQUcsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxHQUFHLEVBQUU7QUFBRSx5QkFBRztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsQ0FBQyxJQUFHO0FBQUMsc0JBQUUsR0FBRSxHQUFFLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsT0FBSyxJQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUcsSUFBRyxLQUFHLElBQUcsS0FBRztBQUFBLGtCQUFDO0FBQUMseUJBQU0sQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxDQUFDLEtBQUcsR0FBRyxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFHLEVBQUU7QUFBRyx5QkFBUyxFQUFFLEdBQUU7QUFBQyxzQkFBRSxHQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQUcsR0FBRSxFQUFFO0FBQUUsc0JBQUksS0FBRyxJQUFJLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUUscUJBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUksSUFBRSxHQUFHLEVBQUU7QUFBRSxzQkFBRyxPQUFPLEtBQUc7QUFBUyx3QkFBRyxNQUFJLEdBQUU7QUFBQywwQkFBRyxPQUFLLEdBQUU7QUFBQyw0QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLDJCQUFHLElBQUcsRUFBRTtBQUFFLDRCQUFJLEtBQUcsR0FBRyxJQUFJLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUsNEJBQUcsT0FBTyxNQUFJLFlBQVUsR0FBRyxPQUFLLEtBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBRyxHQUFHLEdBQUU7QUFBQyw2QkFBRyxFQUFFO0FBQUUsOEJBQUksS0FBRyxLQUFHLENBQUMsR0FBRSxFQUFFLEdBQUcsS0FBSSxHQUFFLEVBQUUsQ0FBQyxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRyxLQUFHO0FBQUcsK0JBQUc7QUFBQSx3QkFBQztBQUFDLDRCQUFHLENBQUM7QUFBRyw4QkFBSSxLQUFHO0FBQUUsNEJBQUksS0FBRyxFQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxzQkFBQztBQUFDLDBCQUFHLEVBQUUsTUFBSTtBQUFHLGdDQUFPLElBQUUsS0FBRztBQUFBLCtCQUFRO0FBQUUsZ0NBQUcsR0FBRTtBQUFDLGtDQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLHFDQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLDRCQUFDO0FBQUM7QUFBQSwrQkFBVztBQUFFLGdDQUFHLEdBQUU7QUFBQyxrQ0FBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSxxQ0FBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSw0QkFBQztBQUFDO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRTtBQUFFLG1DQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQUEsb0JBQUUsT0FBSztBQUFDLDBCQUFJLEtBQUcsSUFBRSxLQUFHO0FBQUUsMEJBQUcsRUFBRSxLQUFHLE9BQUs7QUFBRyxnQ0FBTztBQUFBLCtCQUFTO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyxxQ0FBTyxHQUFHLElBQUcsRUFBRTtBQUFBLDRCQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsSUFBSSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUc7QUFBRSxnQ0FBRyxPQUFPLE1BQUk7QUFBUyxrQ0FBRyxPQUFLO0FBQUcsb0NBQUksS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHlDQUFPLEVBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxnQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsdUNBQVUsT0FBSztBQUFHLG9DQUFJLEtBQUcsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQTtBQUFPLHFDQUFHO0FBQUE7QUFBTyxtQ0FBRztBQUFFLGdDQUFHLElBQUc7QUFBQyxrQ0FBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBRSxrQ0FBRyxHQUFHLE9BQUs7QUFBRSxvQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHO0FBQUE7QUFBUSxvQ0FBSSxLQUFHLEdBQUUsS0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLHlDQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLGdDQUFDLEdBQUUsS0FBRyxJQUFHLEtBQUcsRUFBRSxHQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSxrQ0FBSSxLQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLDRCQUFDO0FBQUMsZ0NBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsbUNBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsK0JBQU87QUFBQSwrQkFBTztBQUFBLCtCQUFPO0FBQUEsK0JBQVE7QUFBQSwrQkFBUTtBQUFHLGdDQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsZ0NBQUcsT0FBTyxNQUFJLFVBQVM7QUFBQyxrQ0FBSSxLQUFHO0FBQUUsa0NBQUcsTUFBSTtBQUFHLG9DQUFHLE1BQUksSUFBRztBQUFDLHNDQUFHLE9BQUssSUFBRztBQUFDLHdDQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFFLHlDQUFHO0FBQUEsa0NBQUM7QUFBQSxnQ0FBQztBQUFNLHdDQUFJLE9BQUssS0FBRztBQUFBLHVDQUFXLE9BQUssSUFBRztBQUFDLG9DQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsU0FBUyxJQUFHO0FBQUMseUNBQU8sRUFBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLGdDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBRSxxQ0FBRztBQUFBLDhCQUFDO0FBQU0sc0NBQUksT0FBSyxLQUFHO0FBQUcsa0NBQUksS0FBRztBQUFFLHNDQUFPO0FBQUEscUNBQVM7QUFBRTtBQUFBLHFDQUFXO0FBQUUsc0NBQUksS0FBRztBQUFFLHlDQUFPLE1BQUksV0FBUyxPQUFLLEtBQUcsR0FBRyxJQUFHLEVBQUUsSUFBRSxPQUFLLEtBQUcsR0FBRyxJQUFHLEVBQUUsSUFBRSxLQUFHLElBQUUsS0FBRztBQUFFLHNDQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsU0FBUyxJQUFHO0FBQUMsMkNBQU8sRUFBRSxHQUFFLElBQUcsQ0FBQztBQUFBLGtDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBRSx1Q0FBRztBQUFFO0FBQUE7QUFBYyx1Q0FBRztBQUFBO0FBQUUsa0NBQUc7QUFBRyx1Q0FBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSw0QkFBQztBQUFDLGtDQUFLLENBQUMsR0FBRSxJQUFHLEdBQUc7QUFBQTtBQUFBLG9CQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUUseUJBQU8sTUFBSSxXQUFTLE9BQUssS0FBRyxHQUFHLElBQUcsRUFBRSxJQUFFLE9BQUssS0FBRyxHQUFHLElBQUcsRUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUUsR0FBRyxJQUFHLENBQUM7QUFBRSxzQkFBSSxLQUFHLEdBQUcsSUFBRyxHQUFFLElBQUcsQ0FBQztBQUFFLHFCQUFHLElBQUcsQ0FBQztBQUFFLHNCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRztBQUFFLHNCQUFHLE9BQU8sTUFBSSxZQUFVLEdBQUcsT0FBSyxLQUFHLENBQUMsR0FBRyxHQUFHLElBQUcsR0FBRyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRTtBQUFFLHlCQUFHO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxDQUFDLElBQUc7QUFBQyxzQkFBRSxHQUFFLElBQUcsRUFBRTtBQUFFLHdCQUFJLEtBQUcsRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxPQUFLLElBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHO0FBQUEsa0JBQUM7QUFBQyx5QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUU7QUFBRSx1QkFBTyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEVBQUU7QUFBQSxZQUFDLEVBQUUsRUFBRSxHQUFFLE1BQUksU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxJQUFFLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLElB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QUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQUs7QUFBQyxzQkFBRyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFO0FBQUcsNEJBQU8sRUFBRTtBQUFBLDJCQUFTO0FBQUUsNEJBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsNEJBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyw4QkFBSSxJQUFFLEVBQUU7QUFBRyw4QkFBRyxDQUFDLEVBQUUsSUFBRztBQUFDLGdDQUFJLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBRztBQUFBLDBCQUFRO0FBQUEsd0JBQUM7QUFBQyw0QkFBSSxLQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUUsNEJBQUc7QUFBRyw4QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBQTtBQUFPLDhCQUFJLEtBQUc7QUFBRSw0QkFBSSxJQUFFLElBQUcsSUFBRSxFQUFFO0FBQUc7QUFBQSwyQkFBYztBQUFFLDRCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRztBQUFHLDRCQUFHLEVBQUUsSUFBRztBQUFDLDZCQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUUsOEJBQUksSUFBRSxFQUFFO0FBQUc7QUFBQSx3QkFBUTtBQUFDLDRCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxHQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFO0FBQUU7QUFBQTtBQUFpQiw0QkFBSSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFHO0FBQUE7QUFBQSxrQkFBUztBQUFDLHNCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFFLHlCQUFNLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsd0JBQU8sRUFBRTtBQUFBLHVCQUFTO0FBQUUsMkJBQU8sRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx1QkFBTztBQUFHLHdCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLHdCQUFHLEVBQUUsTUFBSSxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLElBQUUsSUFBRSxHQUFFLEtBQUcsSUFBRSxFQUFFLElBQUc7QUFBQywwQkFBSSxJQUFFO0FBQUUsMEJBQUcsRUFBRSxPQUFLLEdBQUcsR0FBRSxHQUFHLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxJQUFFLElBQUUsR0FBRSxHQUFFO0FBQUMsNEJBQUksSUFBRSxFQUFFLEtBQUksSUFBRSxLQUFHLEdBQUcsR0FBRSxHQUFHO0FBQUUsNkJBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUE7QUFBVSwyQkFBTSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQTtBQUFBLGNBQUUsQ0FBQztBQUFFLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUseUJBQU8sT0FBTyxLQUFHLFlBQVUsTUFBSSxNQUFJLEdBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRyxLQUFJLENBQUMsQ0FBQyxLQUFHO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHFCQUFHLEdBQUUsQ0FBQztBQUFFLDJCQUFRLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxPQUFJO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLDBCQUFJLElBQUU7QUFBRSwyQkFBSSxNQUFJLEtBQUcsT0FBSyxPQUFLLElBQUUsSUFBRyxHQUFFO0FBQUMsNkJBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxFQUFFLElBQUcsRUFBRSxDQUFDO0FBQUUsNEJBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFHLEdBQUUsQ0FBQztBQUFFLDRCQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUMsTUFBSSxLQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsSUFBRyxDQUFDLENBQUMsSUFBRSxHQUFHLENBQUM7QUFBRSwrQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFDLHdCQUFHLEdBQUcsQ0FBQyxNQUFJO0FBQUcsMEJBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQywrQkFBTyxHQUFHLElBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsc0JBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEseUJBQU07QUFBQywwQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxHQUFHLEtBQUksR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHO0FBQUUsMEJBQUcsT0FBTyxNQUFJLFlBQVUsT0FBSyxJQUFHO0FBQUMsMkJBQUcsR0FBRSxFQUFFO0FBQUUsNEJBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUyxJQUFHO0FBQUMsOEJBQUksS0FBRyxFQUFFLElBQUcsQ0FBQztBQUFFLGlDQUFNLENBQUMsR0FBRSxJQUFHLEVBQUUsRUFBRSxDQUFDO0FBQUEsd0JBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHO0FBQUcsZ0NBQU8sRUFBRTtBQUFBLCtCQUFTO0FBQUUsZ0NBQUksS0FBRyxDQUFDLEdBQUUsRUFBRSxFQUFFO0FBQUU7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRTtBQUFFO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsR0FBRztBQUFFO0FBQUE7QUFBYyxnQ0FBSSxLQUFHLENBQUMsR0FBRSxFQUFFLEVBQUU7QUFBQTtBQUFFLDRCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLHNCQUFDO0FBQU0sNkJBQUc7QUFBRSwwQkFBRyxJQUFHO0FBQUMsNEJBQUksSUFBRSxHQUFHO0FBQUcsNEJBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyw4QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUc7QUFBRSw2QkFBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLEdBQUcsS0FBRyxHQUFHLElBQUcsR0FBRyxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxLQUFHLElBQUcsQ0FBQyxNQUFJLEdBQUcsRUFBRSxLQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBRSw4QkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLG1DQUFPLFNBQVMsSUFBRztBQUFDLGtDQUFJLEtBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUUscUNBQU0sQ0FBQyxHQUFFLElBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSw0QkFBQztBQUFBLDBCQUFDLEVBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLHdCQUFDLE9BQUs7QUFBQyw2QkFBRyxLQUFJLENBQUM7QUFBRSw4QkFBSSxLQUFHO0FBQUEsd0JBQUM7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUc7QUFBRSwwQkFBRyxHQUFHLE9BQUs7QUFBRSw0QkFBSSxLQUFHLElBQUcsS0FBRztBQUFBO0FBQU8sNEJBQUksS0FBRyxHQUFHLENBQUMsTUFBSSxJQUFFLElBQUUsR0FBRSxLQUFHLE1BQUksQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxJQUFHLEtBQUc7QUFBRSx5QkFBRyxDQUFDLE1BQUksS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLDBCQUFJLElBQUUsSUFBRyxJQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUU7QUFBQSxvQkFBUTtBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFO0FBQUUsdUJBQU8sU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUscUJBQUcsR0FBRSxDQUFDO0FBQUUsMkJBQVEsSUFBRSxPQUFJO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLDBCQUFJLElBQUU7QUFBRSwwQkFBRyxNQUFJO0FBQUUsK0JBQUssTUFBSSxJQUFFO0FBQUEsK0JBQVcsS0FBRztBQUFFLGdDQUFPLElBQUUsSUFBRTtBQUFBLCtCQUFRO0FBQUUsZ0NBQUksSUFBRSxHQUFHLENBQUM7QUFBRSwrQkFBRyxHQUFFLENBQUM7QUFBRSxnQ0FBSSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFjO0FBQUUsZ0NBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxTQUFTLElBQUc7QUFBQyxxQ0FBTyxHQUFHLElBQUcsRUFBRSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsNEJBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLENBQUMsQ0FBQztBQUFFLCtCQUFHLENBQUMsTUFBSSxNQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsTUFBSSxLQUFHLEdBQUcsQ0FBQztBQUFHLGdDQUFJLElBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQztBQUFFO0FBQUEsK0JBQWM7QUFBRSxnQ0FBRTtBQUFFO0FBQUE7QUFBTSwwQkFBRyxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFHLEdBQUUsQ0FBQztBQUFFLDRCQUFJLEtBQUcsR0FBRyxDQUFDLE1BQUksS0FBRyxDQUFDLEdBQUUsRUFBRSxFQUFFLElBQUcsQ0FBQyxDQUFDLElBQUUsR0FBRyxDQUFDO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUMsd0JBQUksSUFBRSxHQUFHLEdBQUUsU0FBUyxJQUFHO0FBQUMsMEJBQUksS0FBRyxFQUFFLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRztBQUFFLDBCQUFHLE9BQU8sTUFBSSxZQUFVLE9BQUssSUFBRztBQUFDLDJCQUFHLElBQUcsRUFBRTtBQUFFLDRCQUFJLElBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRyxLQUFJLEVBQUUsQ0FBQztBQUFFLDZCQUFHO0FBQUEsc0JBQUM7QUFBQywwQkFBRyxDQUFDO0FBQUcsNEJBQUksSUFBRTtBQUFFLDZCQUFNLENBQUMsR0FBRSxJQUFHLENBQUM7QUFBQSxvQkFBQyxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLHVCQUFHLENBQUMsTUFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUUsd0JBQUksSUFBRSxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUU7QUFBRSx1QkFBTyxTQUFTLEdBQUU7QUFBQyx5QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsc0JBQUcsTUFBSTtBQUFFLDJCQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHNCQUFHLENBQUM7QUFBRSwyQkFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFHLEtBQUksR0FBRSxHQUFFLENBQUM7QUFBRSx1QkFBTSxDQUFDLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEVBQUUsRUFBRSxHQUFFLE1BQUksSUFBSSxFQUFFLEdBQUUsTUFBSSxHQUFHO0FBQUcscUJBQVMsSUFBSSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUU7QUFBRSxrQkFBRyxPQUFPLEtBQUcsV0FBUyxNQUFJLEtBQUcsRUFBRSxLQUFHLEdBQUcsR0FBRSxFQUFFLElBQUUsRUFBRSxPQUFLLEdBQUcsR0FBRSxDQUFDLElBQUUsTUFBSSxLQUFHLEVBQUUsTUFBSSxHQUFHLEdBQUUsQ0FBQyxJQUFFLEVBQUUsTUFBSSxHQUFHLEdBQUUsRUFBRSxJQUFFLE1BQUksS0FBRyxFQUFFLE9BQUssR0FBRyxHQUFFLENBQUMsSUFBRSxJQUFFLElBQUUsSUFBRSxHQUFFO0FBQUUsb0JBQUcsR0FBRyxDQUFDO0FBQUUscUJBQUcsR0FBRSxFQUFFO0FBQUEscUJBQU07QUFBQyxzQkFBSSxJQUFFO0FBQUUsc0JBQUcsT0FBTyxLQUFHO0FBQVMsNEJBQU87QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFHLDRCQUFJLElBQUU7QUFBRSw0QkFBRTtBQUFFO0FBQUE7QUFBQSwyQkFBYyxFQUFFLE9BQUssS0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFFO0FBQUMsd0JBQUksSUFBRTtBQUFFLHdCQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxDQUFDO0FBQUUsd0JBQUksSUFBRTtBQUFFLHNCQUFJLElBQUU7QUFBRSxzQkFBRztBQUFFLHdCQUFJLElBQUU7QUFBQSx1QkFBTTtBQUFDLHdCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsd0JBQUc7QUFBRSwwQkFBSSxJQUFFO0FBQUEseUJBQU07QUFBQywwQkFBSSxJQUFFO0FBQUUsMEJBQUcsT0FBTyxLQUFHO0FBQVMsZ0NBQU87QUFBQSwrQkFBUTtBQUFBLCtCQUFRO0FBQUEsK0JBQVE7QUFBRztBQUFBO0FBQWMsZ0NBQUU7QUFBQTtBQUFBLCtCQUFVLEVBQUUsT0FBSyxHQUFFO0FBQUMsNEJBQUksSUFBRSxFQUFFO0FBQUcsMkJBQUcsR0FBRSxHQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxNQUFJLElBQUU7QUFBQSxzQkFBRTtBQUFNLDRCQUFFO0FBQUUsMEJBQUcsR0FBRTtBQUFDLDRCQUFJLElBQUU7QUFBRSw0QkFBRTtBQUFBLHNCQUFDO0FBQU0sNEJBQUksSUFBRTtBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxDQUFDO0FBQUUsd0JBQUksSUFBRTtBQUFFLHNCQUFHO0FBQUUsdUJBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU07QUFBQyx3QkFBSSxJQUFFO0FBQUUseUJBQUcsSUFBSSxDQUFDLElBQUUsR0FBRyxHQUFFLEVBQUUsRUFBRSxJQUFFLElBQUU7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMscUJBQU8sR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUksU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsS0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxLQUFHLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLEtBQUcsU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxTQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLE1BQUksU0FBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUMsR0FBRSxNQUFJLFNBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxZQUFDLEdBQUUsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxHQUFHLElBQUcsTUFBSSxJQUFJLEtBQUksTUFBSSxJQUFJLElBQUcsTUFBSSxJQUFJO0FBQUcsY0FBRSxLQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFO0FBQUU7QUFBRSwyQkFBTztBQUFDLHNCQUFHO0FBQUUsNkJBQVEsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsR0FBRyxDQUFDLE9BQUk7QUFBQywwQkFBRyxLQUFHLElBQUUsSUFBRTtBQUFHLDRCQUFJLElBQUU7QUFBQSwyQkFBTTtBQUFDLDRCQUFJLElBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRztBQUFFLDRCQUFHLENBQUMsR0FBRTtBQUFDLDhCQUFJLElBQUUsSUFBRSxJQUFFO0FBQUU7QUFBQSx3QkFBUTtBQUFDLDRCQUFJLElBQUU7QUFBQSxzQkFBQztBQUFDLDBCQUFHLENBQUMsR0FBRTtBQUFDLDRCQUFJLElBQUU7QUFBRSxpQ0FBUztBQUFBLHNCQUFDO0FBQUMsd0JBQUUsSUFBSSxLQUFHLEVBQUU7QUFBRywwQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRTtBQUFBLG9CQUFLO0FBQUE7QUFBTSx3QkFBSSxJQUFFO0FBQUUsc0JBQUcsTUFBSSxHQUFFO0FBQUMsd0JBQUksSUFBRTtBQUFFLHdCQUFHLEdBQUU7QUFBQywwQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRywwQkFBRyxDQUFDLEVBQUUsSUFBRztBQUFDLDRCQUFJLElBQUUsRUFBRSxJQUFHLElBQUU7QUFBRSw0QkFBRyxLQUFHLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxDQUFDLE1BQUksSUFBRztBQUFDLDRCQUFFLElBQUksS0FBRyxFQUFFLEdBQUc7QUFBRyw4QkFBSSxLQUFHLENBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSw4QkFBRSxHQUFFLElBQUU7QUFBQSx3QkFBQztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQyx3QkFBRyxDQUFDO0FBQUUsMEJBQUksS0FBRztBQUFBLGtCQUFDO0FBQU0sd0JBQUksS0FBRztBQUFFLHNCQUFJLEtBQUcsRUFBRSxLQUFJLEdBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU87QUFBQSxrQkFBQyxDQUFDLEdB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SUFBRSxFQUFFLElBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFFLEVBQUU7QUFBRyxxQkFBTyxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx1QkFBUSxJQUFFLE9BQUk7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUssS0FBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsSUFBRyxHQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxHQUFFLENBQUM7QUFBRSxxQkFBTSxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLElBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx1QkFBUSxJQUFFLE9BQUk7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLE9BQU8sS0FBRyxZQUFVLE9BQUssS0FBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBRyxFQUFFO0FBQUcsa0JBQUUsR0FBRyxDQUFDLEtBQUcsRUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUUsa0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxrQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLG9CQUFHLE1BQUk7QUFBRyx5QkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUUsb0JBQUcsTUFBSTtBQUFHLHlCQUFPLEVBQUUsR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxHQUFHLEtBQUksQ0FBQztBQUFFLGtCQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFPLEVBQUUsS0FBSSxHQUFFLENBQUM7QUFBRSxrQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLG9CQUFJLElBQUUsSUFBRSxLQUFHO0FBQUUsb0JBQUcsRUFBRSxLQUFHLE1BQUk7QUFBRywwQkFBTztBQUFBLHlCQUFRO0FBQUUsMEJBQUcsRUFBRSxJQUFJO0FBQUcsK0JBQU8sRUFBRSxHQUFHLEtBQUksQ0FBQztBQUFFO0FBQUEseUJBQVc7QUFBRSw2QkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEseUJBQU87QUFBRyw2QkFBTyxFQUFFLEdBQUcsS0FBSSxHQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEVBQUUsR0FBRyxLQUFJLENBQUM7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEVBQUUsR0FBRyxLQUFJLENBQUM7QUFBQTtBQUFBLGNBQUU7QUFBQyxxQkFBTyxFQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLGtCQUFHLE9BQU8sS0FBRztBQUFTLHdCQUFPO0FBQUEsdUJBQVE7QUFBRSwyQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxHQUFHO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEVBQUUsR0FBRyxJQUFHLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFPO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBRywyQkFBTyxHQUFHLEtBQUksQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUE7QUFBRSxrQkFBRyxHQUFHLENBQUMsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFHLEtBQUksQ0FBQztBQUFFLHVCQUFPLEdBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRTtBQUFBLGNBQUM7QUFBQyxrQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJLE1BQUksR0FBRyxHQUFFLENBQUMsTUFBSSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFHLEtBQUksQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxHQUFHLENBQUMsSUFBRSxFQUFFLEdBQUcsS0FBSSxDQUFDLEtBQUcsR0FBRyxDQUFDLE1BQUksR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsSUFBRyxFQUFFLEdBQUcsS0FBSSxDQUFDO0FBQUEsWUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxxQkFBTyxPQUFPLEtBQUcsWUFBVSxNQUFJLElBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsQ0FBQyxJQUFFO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxrQkFBRyxPQUFPLEtBQUcsWUFBVSxNQUFJLEdBQUU7QUFBQyxvQkFBSSxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDLENBQUMsR0FBRSxFQUFFLEtBQUksU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBRyxFQUFFO0FBQUcscUJBQU8sR0FBRyxHQUFFLFNBQVMsR0FBRTtBQUFDLG9CQUFJLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLE1BQUksR0FBRyxDQUFDLE1BQUksS0FBRyxJQUFFO0FBQUcsdUJBQU8sTUFBSSxJQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLEdBQUcsS0FBSSxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxpQkFBRyxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFLEVBQUUsSUFBRyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxNQUFJLElBQUUsSUFBRTtBQUFBLGNBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxNQUFJLElBQUUsSUFBRSxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLGlCQUFHLEdBQUUsQ0FBQztBQUFFLGtCQUFJLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUscUJBQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSSxTQUFTLEdBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLE1BQUksSUFBRSxJQUFFO0FBQUEsZ0JBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxNQUFJLElBQUUsSUFBRSxHQUFFLElBQUUsS0FBRyxHQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUU7QUFBRSxvQkFBRyxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFO0FBQUUsc0JBQUcsT0FBTyxLQUFHLGFBQVcsTUFBSSxLQUFHLE9BQUssT0FBSyxJQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRyxHQUFFO0FBQUMsMEJBQUksSUFBRSxHQUFHLENBQUM7QUFBRSwwQkFBRTtBQUFBLG9CQUFDLE9BQUs7QUFBQywwQkFBSSxJQUFFO0FBQUUsMEJBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxDQUFDO0FBQUUsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUU7QUFBRSxxQkFBTyxTQUFTLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEdBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxLQUFJLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxHQUFHLENBQUM7QUFBRSxnQkFBSSxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSTtBQUFHLHFCQUFTLElBQUksR0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsSUFBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxJQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLElBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxJQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLElBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLElBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFFLHdCQUFPLEVBQUU7QUFBQSx1QkFBUztBQUFFLHdCQUFJLEtBQUc7QUFBSTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRztBQUFJO0FBQUEsdUJBQVc7QUFBRSx3QkFBSSxLQUFHO0FBQUk7QUFBQSx1QkFBVztBQUFFLHdCQUFJLEtBQUc7QUFBSTtBQUFBLHVCQUFXO0FBQUUsd0JBQUksS0FBRztBQUFJO0FBQUE7QUFBYyx3QkFBSSxLQUFHO0FBQUE7QUFBSSxvQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxJQUFJLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsdUJBQU8sRUFBRSxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTSxDQUFDLEdBQUUsR0FBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFHLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSx1QkFBTyxFQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLE1BQUk7QUFBSSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsSUFBSSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFHO0FBQUMsb0JBQUksSUFBRSxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSx1QkFBTztBQUFBLGNBQUMsUUFBQztBQUFNLHVCQUFPO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQyxnQkFBSSxNQUFJLElBQUksQ0FBQyxHQUFFLEtBQUksS0FBSSxJQUFHLElBQUcsS0FBSSxLQUFJLElBQUcsR0FBRyxDQUFDLEdBQUUsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksU0FBUyxHQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUcsR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sSUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLElBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLE9BQUssSUFBRSxLQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsSUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRTtBQUFFLHNCQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsd0JBQUksSUFBRTtBQUFFLHdCQUFHLE1BQUk7QUFBRSw4QkFBTztBQUFBLDZCQUFRO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRSxHQUFHLEtBQUksR0FBRztBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFLEdBQUcsS0FBSSxHQUFHO0FBQUU7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUUsR0FBRyxLQUFJLEdBQUc7QUFBRTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRSxHQUFHLEtBQUksR0FBRztBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRSxHQUFHLEtBQUksR0FBRztBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUksOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBSSw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFJLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUksOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBSSw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFJLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUksOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBSSw4QkFBSSxJQUFFO0FBQUk7QUFBQTtBQUFjLDhCQUFJLElBQUU7QUFBQTtBQUFBO0FBQVMsOEJBQU87QUFBQSw2QkFBUTtBQUFFLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRSxHQUFHLEtBQUksR0FBRztBQUFFO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLElBQUU7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksSUFBRTtBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxJQUFFO0FBQUk7QUFBQTtBQUFjLDhCQUFJLElBQUU7QUFBQTtBQUFBLGtCQUFJO0FBQU0sNEJBQU8sRUFBRTtBQUFBLDJCQUFTO0FBQUUsNEJBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksS0FBRyxFQUFFLElBQUcsSUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSw0QkFBRztBQUFHLDhCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLEVBQUU7QUFBQTtBQUFPLDhCQUFJLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsNEJBQUcsSUFBRztBQUFDLDhCQUFJLEtBQUcsR0FBRztBQUFHLDhCQUFHLEtBQUc7QUFBRyxnQ0FBSSxJQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRyxFQUFFO0FBQUEsK0JBQU07QUFBQyxvQ0FBTztBQUFBLG1DQUFTO0FBQUUsb0NBQUksS0FBRztBQUFJO0FBQUEsbUNBQVc7QUFBRSxvQ0FBSSxLQUFHO0FBQUk7QUFBQSxtQ0FBVztBQUFFLG9DQUFJLEtBQUc7QUFBSTtBQUFBO0FBQWMsb0NBQUksS0FBRztBQUFBO0FBQUksZ0NBQUksSUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDO0FBQU0sOEJBQUksSUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHO0FBQUcsNEJBQUcsR0FBRyxFQUFFLE1BQUk7QUFBRSw4QkFBSSxJQUFFO0FBQUEsNkJBQU87QUFBQyw4QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLDZCQUFHLElBQUcsR0FBRSxHQUFHLEdBQUcsSUFBRyxDQUFDLENBQUMsQ0FBQztBQUFFLDhCQUFJLElBQUU7QUFBQSx3QkFBRTtBQUFDLDRCQUFJLElBQUUsR0FBRSxLQUFHLEVBQUUsSUFBRyxJQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksSUFBRSxFQUFFLEtBQUcsTUFBSTtBQUFJO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxJQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUUsSUFBRyxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLElBQUcsSUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFFLElBQUcsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBSSxJQUFFLEdBQUcsS0FBSSxHQUFHLEVBQUUsSUFBRyxHQUFHLENBQUM7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksS0FBRyxFQUFFLEtBQUcsTUFBSSxLQUFJLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLElBQUUsR0FBRyxLQUFJLEdBQUcsRUFBRSxJQUFHLEdBQUcsQ0FBQztBQUFFO0FBQUEsMkJBQVc7QUFBRyw0QkFBSSxLQUFHLEdBQUcsS0FBSSxHQUFHLEVBQUUsSUFBRyxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxJQUFHLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksSUFBRSxHQUFHLEtBQUksRUFBRSxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLElBQUUsRUFBRSxLQUFHLEdBQUcsS0FBSSxHQUFHLElBQUUsR0FBRyxLQUFJLEdBQUc7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksS0FBRyxFQUFFLElBQUcsSUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksSUFBRSxHQUFHLEtBQUksR0FBRyxFQUFFLElBQUcsR0FBRyxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFHLDRCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsRUFBRSxLQUFHLE1BQUksS0FBSSxLQUFHLEVBQUUsS0FBRyxHQUFHLEtBQUksRUFBRSxJQUFFLElBQUcsS0FBRyxFQUFFLEtBQUcsTUFBSSxLQUFJLElBQUUsR0FBRyxLQUFJLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxLQUFJLEdBQUcsSUFBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBRTtBQUFBLDJCQUFXO0FBQUcsNEJBQUksSUFBRSxHQUFHLEtBQUksR0FBRyxFQUFFLElBQUcsR0FBRyxDQUFDO0FBQUU7QUFBQTtBQUFjLDRCQUFJLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUE7QUFBRSxzQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsZ0JBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFHLEdBQUU7QUFBQyx3QkFBRztBQUFFLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFBO0FBQU8sMEJBQUksS0FBRztBQUFFLHdCQUFJLElBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQU0sd0JBQUksSUFBRTtBQUFFLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUc7QUFBRyx3QkFBRyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHO0FBQUcsMEJBQUc7QUFBRyw0QkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBQTtBQUFPLDRCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLDBCQUFJLEtBQUc7QUFBQSxvQkFBRTtBQUFNLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRztBQUFHLHdCQUFJLEtBQUc7QUFBQSxrQkFBRTtBQUFNLHdCQUFJLEtBQUc7QUFBRSx5QkFBTyxHQUFHLEdBQUcsR0FBRyxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEtBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyxzQkFBRyxFQUFFLE9BQUs7QUFBRSwyQkFBTyxFQUFFLEVBQUUsRUFBRTtBQUFFLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLE9BQUssSUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxPQUFLLElBQUUsRUFBRSxFQUFFLEVBQUUsSUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsc0JBQUcsT0FBTyxLQUFHO0FBQVMsd0JBQUksS0FBRztBQUFBO0FBQVEsNEJBQU8sRUFBRTtBQUFBLDJCQUFTO0FBQUUsNEJBQUksS0FBRyxHQUFHLEVBQUUsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHLENBQUMsQ0FBQyxFQUFFO0FBQUc7QUFBQSwyQkFBVztBQUFFLDRCQUFJLEtBQUcsRUFBRTtBQUFHO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHLEdBQUcsR0FBRztBQUFFO0FBQUE7QUFBYyw0QkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLElBQUksR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFO0FBQUE7QUFBRSxzQkFBSSxLQUFHO0FBQUUsc0JBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxPQUFLLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBRSx5QkFBRztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsQ0FBQztBQUFHLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsMEJBQU8sRUFBRTtBQUFBLHlCQUFTO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxJQUFHLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEseUJBQU87QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxJQUFHLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEseUJBQU87QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxJQUFHLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEseUJBQU87QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxJQUFHLENBQUM7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEseUJBQU87QUFBRywwQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsSUFBRyxDQUFDO0FBQUEseUJBQU87QUFBRyw2QkFBTyxHQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUEseUJBQU87QUFBRyw2QkFBTyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEVBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRTtBQUFHLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRTtBQUFHLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFO0FBQUcsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBO0FBQVUsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsS0FBRyxNQUFJO0FBQUksNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUE7QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLEdBQUUsRUFBRTtBQUFBLGtCQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDRCQUFPLEdBQUc7QUFBQSwyQkFBUztBQUFFLDRCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLGdDQUFPLEdBQUc7QUFBQSwrQkFBUztBQUFFLGdDQUFJLEtBQUcsR0FBRyxHQUFHLEVBQUU7QUFBRTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRyxFQUFFLEdBQUcsRUFBRTtBQUFFO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsR0FBRztBQUFFO0FBQUE7QUFBYyxnQ0FBSSxLQUFHLEdBQUcsR0FBRztBQUFBO0FBQUUsZ0NBQU8sR0FBRztBQUFBLCtCQUFTO0FBQUUsZ0NBQUksS0FBRyxLQUFJLEtBQUcsR0FBRyxHQUFHLEVBQUU7QUFBRTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxLQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQTtBQUFjLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsS0FBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFBO0FBQUUsNEJBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLCtCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFJLEdBQUcsSUFBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFBLDJCQUFPO0FBQUUsNEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSwrQkFBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSwyQkFBTztBQUFFLDRCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsS0FBSSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsMkJBQU87QUFBRSw0QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsK0JBQU0sQ0FBQyxHQUFFLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxLQUFJLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFO0FBQUE7QUFBVSw0QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLCtCQUFNLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxLQUFJLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUEsa0JBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFFLEVBQUUsSUFBRSxJQUFHLEtBQUcsRUFBRSxFQUFFLEVBQUU7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFO0FBQUcsMEJBQU8sRUFBRTtBQUFBLHlCQUFTO0FBQUUsMEJBQUksSUFBRTtBQUFJO0FBQUEseUJBQVc7QUFBRSwwQkFBSSxJQUFFO0FBQUk7QUFBQTtBQUFjLDBCQUFJLElBQUU7QUFBQTtBQUFJLHNCQUFJLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLEdBQUcsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksS0FBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHlCQUFPLEVBQUUsSUFBRyxFQUFFLEdBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxPQUFLLElBQUUsRUFBRSxFQUFFLEVBQUUsSUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQywwQkFBTyxFQUFFO0FBQUEseUJBQVM7QUFBRSw2QkFBTyxFQUFFLEVBQUUsRUFBRTtBQUFBLHlCQUFPO0FBQUUsNkJBQU8sR0FBRyxFQUFFLEVBQUU7QUFBQTtBQUFVLDZCQUFPLEVBQUUsRUFBRSxFQUFFO0FBQUE7QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRTtBQUFHLHNCQUFHO0FBQUcsd0JBQUksS0FBRyxHQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxJQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFO0FBQUE7QUFBTyx3QkFBSSxJQUFFLEdBQUUsS0FBRyxHQUFFLEtBQUc7QUFBRSxzQkFBRztBQUFFLHdCQUFJLEtBQUcsRUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsS0FBRyxJQUFHLEtBQUcsRUFBRSxJQUFHLEdBQUcsRUFBRTtBQUFBO0FBQU8sd0JBQUksS0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsc0JBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEtBQUksR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLHlCQUFPLEVBQUUsR0FBRSxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLEVBQUU7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFO0FBQUcsMEJBQU8sRUFBRTtBQUFBLHlCQUFTO0FBQUUsMEJBQUksSUFBRSxHQUFFLElBQUUsRUFBRSxFQUFFLEVBQUU7QUFBRTtBQUFBLHlCQUFXO0FBQUUsMEJBQUksSUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFLEVBQUU7QUFBRTtBQUFBO0FBQWMsMEJBQUksSUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFLEVBQUU7QUFBQTtBQUFFLHlCQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyxzQkFBRyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsS0FBSSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRyxJQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBRyxJQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsRUFBRSxHQUFFLEVBQUUsSUFBRTtBQUFHLDJCQUFPLEdBQUcsRUFBRTtBQUFBLGtCQUFDO0FBQUMsc0JBQUksS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLElBQUU7QUFBRyx5QkFBTyxHQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLDBCQUFPLEVBQUU7QUFBQSx5QkFBUztBQUFFLDBCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU8sR0FBRyxHQUFFLEVBQUUsRUFBRTtBQUFBO0FBQVUsNkJBQU8sR0FBRyxFQUFFLEVBQUU7QUFBQTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsMEJBQU8sRUFBRTtBQUFBLHlCQUFTO0FBQUUsMEJBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsSUFBRSxHQUFHO0FBQUcsMEJBQUcsR0FBRyxPQUFLO0FBQUUsNEJBQUksS0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFHLEVBQUU7QUFBQTtBQUFPLDRCQUFJLEtBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUUsMEJBQUksS0FBRyxHQUFHLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEtBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUc7QUFBRywwQkFBRyxJQUFHO0FBQUMsZ0NBQU8sR0FBRztBQUFBLCtCQUFTO0FBQUUsZ0NBQUksS0FBRztBQUFJO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHO0FBQUk7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUc7QUFBSTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRztBQUFJO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHO0FBQUk7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUc7QUFBSTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRztBQUFJO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHO0FBQUk7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUc7QUFBSTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRztBQUFJO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHO0FBQUk7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUc7QUFBSTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRztBQUFJO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHO0FBQUk7QUFBQTtBQUFjLGdDQUFJLEtBQUc7QUFBQTtBQUFJLDRCQUFJLEtBQUc7QUFBQSxzQkFBRTtBQUFNLDRCQUFJLEtBQUc7QUFBSSwwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDhCQUFPLEdBQUc7QUFBQSw2QkFBUztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFHLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUcsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRyw4QkFBSSxLQUFHO0FBQUk7QUFBQTtBQUFjLDhCQUFJLEtBQUc7QUFBQTtBQUFJLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU8sR0FBRyxLQUFJLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUUsNkJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsNkJBQU8sRUFBRSxFQUFFLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRztBQUFHLDZCQUFPLE9BQU8sTUFBSSxZQUFVLEdBQUcsT0FBSyxJQUFFLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsSUFBRSxHQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFO0FBQUcsOEJBQU8sR0FBRztBQUFBLDZCQUFTO0FBQUUsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQTtBQUFjLDhCQUFJLEtBQUc7QUFBQTtBQUFJLDBCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDBCQUFHO0FBQUcsNEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFO0FBQUE7QUFBTyw0QkFBSSxLQUFHLElBQUcsS0FBRyxHQUFHLENBQUM7QUFBRSwwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUM7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxJQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUcsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxHQUFHLElBQUcsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRyw2QkFBTyxHQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUEseUJBQU87QUFBRyw2QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDBCQUFHLEtBQUc7QUFBRywrQkFBTyxFQUFFLEtBQUksR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLDhCQUFPO0FBQUEsNkJBQVM7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQTtBQUFjLDhCQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUE7QUFBRSwwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxJQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxLQUFHLE1BQUksS0FBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBO0FBQVUsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFLE9BQUssSUFBRSxFQUFFLEtBQUcsR0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFFLE9BQUssSUFBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsSUFBRyxJQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksS0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsSUFBRSxNQUFJLEtBQUksSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSx5QkFBTyxFQUFFLEdBQUUsRUFBRSxJQUFHLEVBQUUsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUU7QUFBRyx3QkFBRyxFQUFFLE9BQUs7QUFBRSw2QkFBTyxFQUFFLElBQUcsRUFBRSxFQUFFO0FBQUUsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsd0JBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxvQkFBQztBQUFDLDJCQUFPLEdBQUcsQ0FBQztBQUFBLGtCQUFDO0FBQUMseUJBQU8sR0FBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyx5QkFBTyxJQUFFLE1BQUk7QUFBQSxnQkFBRztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxPQUFLLElBQUUsRUFBRSxFQUFFLEVBQUUsSUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLElBQUUsQ0FBQyxHQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxJQUFFLENBQUMsR0FBRSxLQUFHLElBQUUsRUFBRSxJQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLDBCQUFPLEVBQUU7QUFBQSx5QkFBUztBQUFFLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDBCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU8sR0FBRyxLQUFJLENBQUMsR0FBRSxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsR0FBRyxJQUFHLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDBCQUFJLEtBQUcsRUFBRSxJQUFHLElBQUUsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDBCQUFHLElBQUc7QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBRyw0QkFBRyxHQUFHLE9BQUssS0FBRyxDQUFDLEdBQUcsR0FBRztBQUFHLGlDQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxzQkFBQztBQUFDLDBCQUFHLElBQUc7QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBRyxnQ0FBTyxHQUFHO0FBQUEsK0JBQVM7QUFBRSxnQ0FBSSxLQUFHLEVBQUUsR0FBRyxFQUFFO0FBQUU7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUcsRUFBRSxHQUFHLEVBQUU7QUFBRTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRyxHQUFHLEdBQUcsRUFBRTtBQUFFO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUU7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUcsR0FBRyxHQUFHLEVBQUU7QUFBRTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRyxHQUFHLEdBQUUsR0FBRyxFQUFFO0FBQUU7QUFBQTtBQUFjLGdDQUFJLEtBQUcsR0FBRyxHQUFHLEVBQUU7QUFBQTtBQUFFLDRCQUFJLEtBQUc7QUFBQSxzQkFBRTtBQUFNLDRCQUFJLEtBQUc7QUFBRywwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLE1BQUk7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU8sRUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLE9BQUssSUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFHLE9BQUssWUFBVyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsNkJBQU8sRUFBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRyw2QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyw4QkFBTyxHQUFHO0FBQUEsNkJBQVM7QUFBRSw4QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLFNBQVMsSUFBRztBQUFDLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEtBQUcsTUFBSSxLQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsS0FBSSxHQUFHLElBQUcsR0FBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSxtQ0FBTyxFQUFFLEtBQUksR0FBRyxJQUFHLEdBQUUsRUFBRTtBQUFBLDBCQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxLQUFJLElBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsU0FBUyxJQUFHO0FBQUMsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxLQUFJLEdBQUcsSUFBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLG1DQUFPLEVBQUUsS0FBSSxHQUFHLElBQUcsR0FBRSxFQUFFO0FBQUEsMEJBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLEtBQUksSUFBRyxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUU7QUFBRTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsOEJBQUcsR0FBRyxPQUFLO0FBQUUsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLFNBQVMsSUFBRztBQUFDLGtDQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSxxQ0FBTyxFQUFFLEtBQUksR0FBRyxJQUFHLEdBQUUsRUFBRTtBQUFBLDRCQUFDLEdBQUUsRUFBRTtBQUFBO0FBQU8sZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLFNBQVMsSUFBRztBQUFDLGtDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSxxQ0FBTyxFQUFFLEtBQUksR0FBRyxJQUFHLEdBQUUsRUFBRTtBQUFBLDRCQUFDLEdBQUUsRUFBRTtBQUFFLDhCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxLQUFJLElBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUU7QUFBQTtBQUFjLDhCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxTQUFTLElBQUc7QUFBQyxnQ0FBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsbUNBQU8sRUFBRSxLQUFJLEdBQUcsSUFBRyxHQUFFLEVBQUU7QUFBQSwwQkFBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLEVBQUUsS0FBSSxJQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUUsRUFBRTtBQUFBO0FBQUUsMEJBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxPQUFLLElBQUUsRUFBRSxHQUFHLEVBQUUsSUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDBCQUFHLElBQUc7QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBRyw0QkFBRyxHQUFHLE9BQUssR0FBRTtBQUFDLDhCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSxpQ0FBTyxFQUFFLEtBQUksR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsd0JBQUM7QUFBQSxzQkFBQztBQUFDLDBCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxLQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsK0JBQU8sR0FBRyxPQUFLLElBQUUsR0FBRyxHQUFHLEVBQUUsSUFBRSxHQUFHLEdBQUcsRUFBRTtBQUFBLHNCQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLE9BQUssSUFBRSxHQUFHLEdBQUcsRUFBRSxJQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsT0FBSyxJQUFFLEdBQUcsR0FBRyxFQUFFLElBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxPQUFLLElBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxPQUFLLElBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEtBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxFQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRztBQUFHLDBCQUFHLElBQUc7QUFBQyw0QkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsaUNBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSx3QkFBQztBQUFFLGdDQUFPLEdBQUc7QUFBQSwrQkFBUztBQUFFLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFFLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRSxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUUsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsS0FBSSxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwrQkFBVztBQUFHLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBRTtBQUFBLCtCQUFXO0FBQUcsZ0NBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFFO0FBQUE7QUFBYyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUE7QUFBRSw0QkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxzQkFBQztBQUFNLDRCQUFJLEtBQUc7QUFBRywwQkFBSSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRywwQkFBRyxJQUFHO0FBQUMsNEJBQUksS0FBRyxHQUFHO0FBQUcsNEJBQUcsR0FBRyxPQUFLO0FBQUUsOEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLFNBQVMsSUFBRztBQUFDLGdDQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsS0FBRyxHQUFHLEdBQUcsSUFBRyxHQUFHLEdBQUcsRUFBRSxJQUFFLEdBQUcsSUFBRyxLQUFHLEtBQUcsR0FBRyxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUc7QUFBRSxnQ0FBRztBQUFHLHNDQUFPLEdBQUc7QUFBQSxxQ0FBUztBQUFFLHNDQUFJLEtBQUc7QUFBRztBQUFBLHFDQUFXO0FBQUUsc0NBQUksS0FBRztBQUFHO0FBQUE7QUFBYyx1Q0FBRztBQUFBO0FBQUE7QUFBTyxtQ0FBRztBQUFFLGdDQUFHO0FBQUcsa0NBQUksS0FBRztBQUFHLGdDQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxFQUFFLENBQUM7QUFBRSxtQ0FBTyxFQUFFLEtBQUksSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLDBCQUFDLEdBQUUsRUFBRTtBQUFBO0FBQU8sOEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxFQUFFLEtBQUksR0FBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLENBQUM7QUFBRSw0QkFBSSxLQUFHO0FBQUEsc0JBQUU7QUFBTSw0QkFBSSxLQUFHO0FBQUcsMEJBQUc7QUFBRyw0QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxFQUFFLEtBQUksR0FBRyxJQUFHLEdBQUUsRUFBRSxHQUFFLEVBQUU7QUFBQTtBQUFPLDRCQUFJLEtBQUc7QUFBRyw4QkFBTyxHQUFHO0FBQUEsNkJBQVM7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBO0FBQWMsOEJBQUksS0FBRztBQUFBO0FBQUksMEJBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRSxHQUFHLElBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUcsNkJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRywwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsNkJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUcsMEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUcsSUFBRyxFQUFFO0FBQUE7QUFBVSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQywwQkFBTyxFQUFFO0FBQUEseUJBQVM7QUFBRSwwQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUU7QUFBRyw4QkFBTyxFQUFFO0FBQUEsNkJBQVM7QUFBRSw4QkFBSSxLQUFHLEdBQUUsSUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEVBQUU7QUFBRTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRyxHQUFFLElBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRSxFQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUcsR0FBRSxJQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsRUFBRTtBQUFFO0FBQUE7QUFBYyw4QkFBSSxLQUFHLEVBQUUsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsSUFBRyxJQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUcsRUFBRTtBQUFBO0FBQUUsOEJBQU8sRUFBRTtBQUFBLDZCQUFTO0FBQUUsOEJBQUksS0FBRztBQUFJO0FBQUEsNkJBQVc7QUFBRSw4QkFBSSxLQUFHO0FBQUk7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUc7QUFBSTtBQUFBO0FBQWMsOEJBQUksS0FBRztBQUFBO0FBQUksMEJBQUksS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFFLDZCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBRSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyw4QkFBTyxHQUFHO0FBQUEsNkJBQVM7QUFBRSw4QkFBSSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFHLEVBQUU7QUFBRTtBQUFBLDZCQUFXO0FBQUUsOEJBQUksS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEVBQUUsR0FBRyxFQUFFO0FBQUU7QUFBQSw2QkFBVztBQUFFLDhCQUFJLEtBQUcsR0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUc7QUFBQTtBQUFjLDhCQUFJLEtBQUcsR0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUE7QUFBRSwwQkFBRyxPQUFPLE1BQUk7QUFBUyw0QkFBRztBQUFHLDhCQUFJLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyw4QkFBSSxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQU8sNEJBQUksS0FBRyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRTtBQUFFLDBCQUFJLEtBQUcsTUFBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxFQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQTtBQUFVLDBCQUFJLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDBCQUFHLE9BQU8sTUFBSTtBQUFTLDRCQUFHO0FBQUcsOEJBQUksS0FBRyxHQUFFLEtBQUc7QUFBQTtBQUFPLDhCQUFJLEtBQUcsR0FBRSxLQUFHO0FBQUE7QUFBTyw0QkFBSSxLQUFHLEdBQUUsS0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFO0FBQUUsMEJBQUksS0FBRyxNQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksS0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUU7QUFBRSw2QkFBTyxFQUFFLEtBQUksR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUE7QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFFLDJCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQyx5QkFBTyxHQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksR0FBRSxFQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsMEJBQU8sRUFBRTtBQUFBLHlCQUFTO0FBQUUsMEJBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsMEJBQUcsR0FBRTtBQUFDLDRCQUFJLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFO0FBQUUsK0JBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxzQkFBQztBQUFDLDZCQUFPLEdBQUcsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMEJBQUksS0FBRyxFQUFFO0FBQUcsNkJBQU8sRUFBRSxHQUFHLElBQUcsR0FBRyxFQUFFO0FBQUE7QUFBVSw2QkFBTztBQUFBO0FBQUEsZ0JBQUc7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBRyxFQUFFLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLDRCQUFPLEVBQUU7QUFBQSwyQkFBUztBQUFFLDRCQUFJLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFFLEtBQUcsS0FBSSxLQUFHLEdBQUUsS0FBRyxFQUFFO0FBQUc7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxLQUFJLEtBQUcsSUFBRyxLQUFHLEVBQUU7QUFBRztBQUFBLDJCQUFXO0FBQUUsNEJBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsS0FBSSxLQUFHLElBQUcsS0FBRyxFQUFFO0FBQUc7QUFBQTtBQUFjLDRCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLElBQUcsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEtBQUksS0FBRyxJQUFHLEtBQUcsRUFBRTtBQUFBO0FBQUcsNEJBQU8sR0FBRztBQUFBLDJCQUFTO0FBQUUsNEJBQUksS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxFQUFFLEdBQUcsRUFBRTtBQUFFO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxLQUFHLEdBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHO0FBQUE7QUFBYyw0QkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUcsRUFBRTtBQUFBO0FBQUUsMkJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxHQUFHLElBQUcsR0FBRyxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFHLEVBQUUsT0FBSyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsNEJBQU8sR0FBRztBQUFBLDJCQUFTO0FBQUUsNEJBQUksSUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRyxFQUFFO0FBQUU7QUFBQSwyQkFBVztBQUFFLDRCQUFJLElBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRyxFQUFFLEdBQUcsRUFBRTtBQUFFO0FBQUE7QUFBYyw0QkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRztBQUFBO0FBQUcsd0JBQUc7QUFBRSwwQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsRUFBRSxJQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxLQUFJLElBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQTtBQUFPLDBCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxLQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEVBQUU7QUFBRyx5QkFBTyxFQUFFLEdBQUcsSUFBRyxHQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMseUJBQU8sRUFBRSxPQUFLLElBQUUsR0FBRyxFQUFFLEVBQUUsSUFBRSxHQUFHLEVBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsMEJBQU8sRUFBRTtBQUFBLHlCQUFTO0FBQUUsNkJBQU8sR0FBRyxFQUFFLEVBQUU7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEdBQUcsRUFBRSxFQUFFO0FBQUE7QUFBVSw2QkFBTztBQUFBO0FBQUEsZ0JBQUc7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsS0FBRyxLQUFHO0FBQU8seUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFHLHlCQUFPLEdBQUcsRUFBRSxJQUFHLEVBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEtBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsRUFBRSxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBRSxFQUFFO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxHQUFHLElBQUcsSUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLEdBQUUsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBRSxFQUFFO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsRUFBRSxFQUFFO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFHLEVBQUUsT0FBSztBQUFFLDJCQUFPLEdBQUcsRUFBRSxFQUFFO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEdBQUc7QUFBRyx5QkFBTyxFQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUcsRUFBRSxPQUFLLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsT0FBSyxJQUFFLEVBQUUsRUFBRSxFQUFFLElBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLDJCQUFPLEVBQUUsS0FBSSxFQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEVBQUUsSUFBRyxLQUFHLEdBQUcsSUFBRyxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxHQUFHLElBQUcsR0FBRyxJQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLEtBQUksRUFBRSxJQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxJQUFFLEdBQUcsRUFBRSxFQUFFLElBQUUsRUFBRSxLQUFJLENBQUMsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRyxLQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUcsS0FBRyxJQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLDBCQUFPLEVBQUU7QUFBQSx5QkFBUztBQUFFLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRSxFQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDBCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxLQUFJLEdBQUUsRUFBRSxJQUFHLENBQUM7QUFBQTtBQUFVLDBCQUFJLEtBQUcsRUFBRTtBQUFHLDZCQUFPLEVBQUUsS0FBSSxHQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHlCQUFPLEVBQUUsT0FBSyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsSUFBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUUsRUFBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUUseUJBQU8sRUFBRSxLQUFJLEVBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFHLEVBQUU7QUFBRyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFO0FBQUE7QUFBUyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFO0FBQUkseUJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsc0JBQUc7QUFBRSx3QkFBSSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUU7QUFBQTtBQUFTLHdCQUFJLElBQUUsR0FBRSxJQUFFO0FBQUkseUJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBRyxFQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU0sQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLENBQUMsRUFBRTtBQUFBLGNBQUU7QUFBQyxxQkFBTSxDQUFDLEdBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLENBQUMsRUFBRTtBQUFBLGNBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxFQUFFLEdBQUc7QUFBRSxxQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFO0FBQUcscUJBQU8sR0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLElBQUksR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxJQUFFLENBQUMsSUFBRSxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUcsSUFBRyxHQUFFLEdBQUcsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFHLElBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUcsSUFBRSxHQUFFLElBQUUsRUFBRSxVQUFTLElBQUUsR0FBRyxDQUFDLElBQUUsSUFBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLGNBQWEsSUFBRSxHQUFHLENBQUMsSUFBRSxJQUFFLElBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsSUFBRSxLQUFHLENBQUMsR0FBRSxTQUFTLElBQUc7QUFBQyx1QkFBTyxFQUFFLEtBQUcsQ0FBQyxHQUFFLElBQUcsRUFBRSxFQUFFLEdBQUU7QUFBQSxjQUFDLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxHQUFHLEtBQUcsR0FBRSxLQUFHLE1BQUksR0FBRyxJQUFHLEtBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUUsS0FBRyxNQUFJLEdBQUcsSUFBRyxLQUFHLE1BQUksR0FBRyxJQUFHLEtBQUcsSUFBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLHVCQUFPLEVBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxJQUFFLENBQUMsR0FBRSxJQUFHLEVBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUcsRUFBRSxFQUFFLEVBQUU7QUFBRSxrQkFBRyxNQUFJO0FBQUcsc0JBQUssQ0FBQyxHQUFFLEtBQUksR0FBRyxJQUFHLEdBQUcsRUFBRTtBQUFFLGtCQUFJLEtBQUc7QUFBRSx1QkFBUSxJQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUUsR0FBRSxLQUFHLEdBQUUsSUFBRSxHQUFFLEtBQUcsT0FBSTtBQUFDLG9CQUFHLE9BQUs7QUFBRSxzQkFBSSxLQUFHO0FBQUEscUJBQU07QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRztBQUFFLHNCQUFHLEtBQUcsTUFBSSxFQUFFLEtBQUc7QUFBSSx3QkFBSSxLQUFHO0FBQUE7QUFBTyx5QkFBRztBQUFFLHNCQUFHLElBQUc7QUFBQyx3QkFBSSxLQUFHO0FBQUUsd0JBQUcsTUFBSSxNQUFJLEVBQUUsS0FBRztBQUFJLDBCQUFJLEtBQUc7QUFBQTtBQUFPLDJCQUFHO0FBQUUsd0JBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUc7QUFBRSwwQkFBRyxNQUFJLE1BQUksRUFBRSxLQUFHO0FBQUksNEJBQUksS0FBRztBQUFBO0FBQU8sNkJBQUc7QUFBRSwwQkFBRyxJQUFHO0FBQUMsNEJBQUksS0FBRztBQUFFLDRCQUFHLE1BQUksTUFBSSxFQUFFLEtBQUc7QUFBSSw4QkFBSSxLQUFHO0FBQUE7QUFBTywrQkFBRztBQUFFLDRCQUFHO0FBQUcsOEJBQUksS0FBRztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFDLHNCQUFHLE9BQUssR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFLEtBQUcsS0FBRyxJQUFFO0FBQUU7QUFBQSxrQkFBUTtBQUFDLHNCQUFHLEdBQUcsSUFBRSxLQUFHLEtBQUcsS0FBSTtBQUFDLHdCQUFJLEtBQUcsS0FBRyxJQUFFLEdBQUUsS0FBRyxLQUFHLEtBQUc7QUFBRSx3QkFBRyxJQUFFLE9BQUs7QUFBRSw0QkFBSyxDQUFDLEdBQUUsSUFBRyxHQUFHO0FBQUUsNEJBQU87QUFBQSwyQkFBUztBQUFFLDRCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRTtBQUFBLDJCQUFXO0FBQUUsNEJBQUksTUFBSSxHQUFHLElBQUcsRUFBRSxJQUFFLE9BQUssSUFBRSxHQUFHLElBQUcsS0FBRyxJQUFFLENBQUMsSUFBRTtBQUFHO0FBQUEsMkJBQVc7QUFBRSw0QkFBSSxNQUFJLEdBQUcsSUFBRyxFQUFFLElBQUUsT0FBSyxNQUFJLEdBQUcsSUFBRyxLQUFHLElBQUUsQ0FBQyxJQUFFLE9BQUssSUFBRSxHQUFHLElBQUcsS0FBRyxJQUFFLENBQUMsSUFBRTtBQUFHO0FBQUE7QUFBYyw0QkFBSSxNQUFJLEdBQUcsSUFBRyxFQUFFLElBQUUsTUFBSSxNQUFJLEdBQUcsSUFBRyxLQUFHLElBQUUsQ0FBQyxJQUFFLE9BQUssTUFBSSxHQUFHLElBQUcsS0FBRyxJQUFFLENBQUMsSUFBRSxPQUFLLElBQUUsR0FBRyxJQUFHLEtBQUcsSUFBRSxDQUFDLElBQUU7QUFBQTtBQUFHLHdCQUFJLElBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUc7QUFBRztBQUFBLGtCQUFRO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUSxLQUFHLEtBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsQ0FBQyxPQUFJO0FBQUMsc0JBQUksS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHO0FBQUcsc0JBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRztBQUFHLHdCQUFHLE9BQUssR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRztBQUFHLDBCQUFHLE1BQUksR0FBRyxPQUFLLEdBQUU7QUFBQyw0QkFBSSxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsSUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUc7QUFBQSxzQkFBUTtBQUFBLG9CQUFDLFdBQVMsRUFBRSxLQUFHLEtBQUk7QUFBQywwQkFBSSxJQUFFLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxLQUFHLElBQUksRUFBRSxJQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHO0FBQUU7QUFBQSxvQkFBUTtBQUFDLHdCQUFJLElBQUUsR0FBRyxHQUFHLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsS0FBRyxDQUFDLEdBQUUsS0FBRyxJQUFJLEVBQUUsSUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRztBQUFHO0FBQUEsa0JBQVE7QUFBQyxzQkFBSSxLQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSxzQkFBRztBQUFFLHdCQUFJLEtBQUc7QUFBQTtBQUFRLHdCQUFJLEtBQUcsRUFBRSxJQUFJLElBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxHQUFHLElBQUcsWUFBVyxFQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUUsc0JBQUc7QUFBRSx3QkFBSSxLQUFHO0FBQUE7QUFBUSx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUksSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUcsSUFBRyxJQUFJLEVBQUU7QUFBRSxzQkFBRyxFQUFFLFNB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RyxTQUFTLFVBQVU7QUFBSyxXQUFHLFVBQVEsS0FBRyxHQUFHLEtBQUssRUFBRSxJQUFFLFdBQVU7QUFBQyxpQkFBTyxHQUFHLE1BQU0sSUFBRyxTQUFTO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLFFBQUk7QUFBQztBQUFhLFlBQUksS0FBRyxDQUFDLEVBQUUsc0JBQXFCLEtBQUcsT0FBTywwQkFBeUIsS0FBRyxNQUFJLENBQUMsR0FBRyxLQUFLLEVBQUMsR0FBRSxFQUFDLEdBQUUsQ0FBQztBQUFFLFdBQUcsSUFBRSxLQUFHLFNBQVMsSUFBRztBQUFDLGNBQUksS0FBRyxHQUFHLE1BQUssRUFBRTtBQUFFLGlCQUFNLENBQUMsQ0FBQyxNQUFJLEdBQUc7QUFBQSxRQUFVLElBQUU7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLElBQUcsT0FBSztBQUFDLFdBQUcsVUFBUSxTQUFTLEdBQUUsSUFBRztBQUFDLGlCQUFNLEVBQUMsWUFBVyxFQUFFLElBQUUsSUFBRyxjQUFhLEVBQUUsSUFBRSxJQUFHLFVBQVMsRUFBRSxJQUFFLElBQUcsT0FBTSxHQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsV0FBVSxLQUFHLEdBQUcsTUFBSyxLQUFHLEdBQUcsTUFBSyxLQUFHLE1BQUksR0FBRyxLQUFLLElBQUcsRUFBRTtBQUFFLFdBQUcsVUFBUSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEtBQUcsR0FBRyxDQUFDO0FBQUEsUUFBQyxJQUFFLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEtBQUcsV0FBVTtBQUFDLG1CQUFPLEdBQUcsTUFBTSxHQUFFLFNBQVM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRSxLQUFHLEdBQUcsR0FBRyxLQUFLO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxLQUFHLEdBQUcsR0FBRyxLQUFLO0FBQUUsV0FBRyxVQUFRLEdBQUcsV0FBVTtBQUFDLGlCQUFNLENBQUMsR0FBRyxHQUFHLEVBQUUscUJBQXFCLENBQUM7QUFBQSxRQUFDLENBQUMsSUFBRSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLENBQUMsS0FBRyxXQUFTLEdBQUcsR0FBRSxFQUFFLElBQUUsR0FBRyxDQUFDO0FBQUEsUUFBQyxJQUFFO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFVLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFHLEtBQUc7QUFBSyxrQkFBTSxHQUFHLDBCQUF3QixDQUFDO0FBQUUsaUJBQU87QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLE9BQU8sS0FBRztBQUFBLFFBQVU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLE9BQU8sS0FBRyxXQUFTLE1BQUksT0FBSyxHQUFHLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxDQUFDLElBQUUsSUFBRTtBQUFBLFFBQU07QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFLElBQUc7QUFBQyxpQkFBTyxVQUFVLFNBQU8sSUFBRSxHQUFHLEdBQUcsRUFBRSxJQUFFLEdBQUcsTUFBSSxHQUFHLEdBQUc7QUFBQSxRQUFHO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxHQUFHLENBQUMsRUFBRSxhQUFhO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxHQUFHLGFBQVksV0FBVyxLQUFHO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxTQUFRLEtBQUcsR0FBRyxNQUFLLEtBQUcsTUFBSSxHQUFHLFlBQVUsTUFBSSxHQUFHLFNBQVEsS0FBRyxNQUFJLEdBQUcsSUFBRyxJQUFHO0FBQUcsZUFBSyxLQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUcsS0FBRyxHQUFHLEtBQUcsSUFBRSxJQUFFLEVBQUUsR0FBRyxLQUFHLEdBQUc7QUFBSyxTQUFDLE1BQUksT0FBSyxLQUFH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YSxHQUFFO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxFQUFFLGNBQWEsS0FBRyxHQUFHLEtBQUksS0FBRyxHQUFHLFNBQVEsS0FBRyxPQUFPLE1BQU0sRUFBRSxNQUFNLFFBQVE7QUFBRSxTQUFDLEdBQUcsVUFBUSxTQUFTLEdBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyxjQUFJLEtBQUcsS0FBRyxDQUFDLENBQUMsR0FBRyxTQUFPLE9BQUcsS0FBRyxLQUFHLENBQUMsQ0FBQyxHQUFHLGFBQVcsT0FBRyxLQUFHLEtBQUcsQ0FBQyxDQUFDLEdBQUcsY0FBWSxPQUFHLEtBQUcsTUFBSSxHQUFHLFNBQU8sU0FBTyxHQUFHLE9BQUssSUFBRztBQUFHLGNBQUcsR0FBRyxFQUFFLE1BQUksT0FBTyxFQUFFLEVBQUUsTUFBTSxHQUFFLENBQUMsTUFBSSxjQUFZLEtBQUcsTUFBSSxPQUFPLEVBQUUsRUFBRSxRQUFRLHNCQUFxQixJQUFJLElBQUUsT0FBTSxDQUFDLEdBQUcsSUFBRyxNQUFNLEtBQUcsTUFBSSxHQUFHLFNBQU8sT0FBSyxHQUFHLElBQUcsUUFBTyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxHQUFHLFdBQVMsR0FBRyxTQUFPLEdBQUcsS0FBSyxPQUFPLE1BQUksV0FBUyxLQUFHLEVBQUUsS0FBSSxNQUFJLElBQUc7QUFBQyxpQkFBRyxFQUFFLE1BQUksS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFO0FBQUEsVUFBTTtBQUFNLGlCQUFHLENBQUMsTUFBSSxFQUFFLFFBQU0sS0FBRyxRQUFJLE9BQU8sRUFBRTtBQUFJLGVBQUcsRUFBRSxNQUFJLEtBQUcsR0FBRyxHQUFFLElBQUcsRUFBRTtBQUFBLFFBQUMsR0FBRyxTQUFTLFdBQVUsWUFBVyxXQUFVO0FBQUMsaUJBQU8sR0FBRyxJQUFJLEtBQUcsR0FBRyxJQUFJLEVBQUUsVUFBUSxHQUFHLElBQUk7QUFBQSxRQUFDLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxLQUFLLE1BQUssS0FBRyxLQUFLO0FBQU0sV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUksS0FBRyxDQUFDO0FBQUUsaUJBQU8sT0FBSyxNQUFJLE9BQUssSUFBRSxLQUFHLEtBQUcsSUFBRSxLQUFHLElBQUksRUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxLQUFLLEtBQUksS0FBRyxLQUFLO0FBQUksV0FBRyxVQUFRLFNBQVMsR0FBRSxJQUFHO0FBQUMsY0FBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLGlCQUFPLEtBQUcsSUFBRSxHQUFHLEtBQUcsSUFBRyxDQUFDLElBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsS0FBSztBQUFJLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxJQUFFLElBQUUsR0FBRyxHQUFHLENBQUMsR0FBRSxnQkFBZ0IsSUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsRUFBRSxNQUFNO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLFNBQVMsSUFBRyxJQUFHLElBQUc7QUFBQyxnQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFO0FBQUcsZ0JBQUcsS0FBRyxNQUFJLElBQUc7QUFBQyxxQkFBSyxLQUFHO0FBQUksb0JBQUcsS0FBRyxHQUFHLE9BQU0sTUFBSTtBQUFHLHlCQUFNO0FBQUEsWUFBRTtBQUFNLHFCQUFLLEtBQUcsSUFBRztBQUFLLHFCQUFJLEtBQUcsTUFBTSxPQUFLLEdBQUcsUUFBTTtBQUFHLHlCQUFPLEtBQUcsTUFBSTtBQUFFLG1CQUFNLENBQUMsS0FBRztBQUFBLFVBQUU7QUFBQSxRQUFDO0FBQUUsV0FBRyxVQUFRLEVBQUMsVUFBUyxHQUFHLElBQUUsR0FBRSxTQUFRLEdBQUcsS0FBRSxFQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxFQUFFLFNBQVEsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxJQUFHO0FBQUMsY0FBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRSxLQUFHLENBQUMsR0FBRTtBQUFHLGVBQUksTUFBTTtBQUFHLGFBQUMsR0FBRyxJQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsaUJBQUssR0FBRyxTQUFPO0FBQUksZUFBRyxJQUFHLEtBQUcsR0FBRyxLQUFLLE1BQUksQ0FBQyxHQUFHLElBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUcsaUJBQU87QUFBQSxRQUFFO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsQ0FBQyxlQUFjLGtCQUFpQixpQkFBZ0Isd0JBQXVCLGtCQUFpQixZQUFXLFNBQVM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxRQUFJO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsT0FBTyxVQUFTLFdBQVc7QUFBRSxXQUFHLElBQUUsT0FBTyx1QkFBcUIsU0FBUyxJQUFHO0FBQUMsaUJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEdBQUcsUUFBSTtBQUFDLFdBQUcsSUFBRSxPQUFPO0FBQUEsTUFBcUIsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsQ0FBQyxFQUFFLE1BQU07QUFBRSxXQUFHLFVBQVEsR0FBRyxXQUFVLFNBQVMsS0FBRyxTQUFTLElBQUc7QUFBQyxjQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHO0FBQUUsaUJBQU8sS0FBRyxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsSUFBRTtBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsR0FBRyxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxJQUFHLElBQUc7QUFBQyxtQkFBUSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsZ0JBQUksS0FBRyxHQUFHO0FBQUksYUFBQyxHQUFHLEdBQUUsRUFBRSxLQUFHLEVBQUUsTUFBSSxHQUFHLElBQUcsRUFBRSxNQUFJLEdBQUcsR0FBRSxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLG1CQUFrQixLQUFHLFNBQVMsR0FBRSxJQUFHO0FBQUMsY0FBSSxLQUFHLEdBQUcsR0FBRyxDQUFDO0FBQUcsaUJBQU8sTUFBSSxLQUFHLE9BQUcsTUFBSSxLQUFHLFFBQUcsR0FBRyxFQUFFLElBQUUsR0FBRyxFQUFFLElBQUUsQ0FBQyxDQUFDO0FBQUEsUUFBRSxHQUFFLEtBQUcsR0FBRyxZQUFVLFNBQVMsR0FBRTtBQUFDLGlCQUFPLE9BQU8sQ0FBQyxFQUFFLFFBQVEsSUFBRyxHQUFHLEVBQUUsWUFBWTtBQUFBLFFBQUMsR0FBRSxLQUFHLEdBQUcsT0FBSyxDQUFDLEdBQUUsS0FBRyxHQUFHLFNBQU8sS0FBSSxLQUFHLEdBQUcsV0FBUztBQUFJLFdBQUcsVUFBUTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxHQUFHLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsSUFBRztBQUFDLGNBQUksS0FBRyxFQUFFLFFBQU8sS0FBRyxFQUFFLFFBQU8sS0FBRyxFQUFFLE1BQUssSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUUsY0FBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLEtBQUcsR0FBRyxPQUFLLEdBQUcsSUFBRyxDQUFDLENBQUMsSUFBRSxNQUFJLEdBQUcsT0FBSyxDQUFDLEdBQUcsV0FBVTtB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QUssTUFBTSxJQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUcsS0FBRyxLQUFLLE1BQU0sSUFBRSxFQUFFLElBQUUsTUFBSSxLQUFHLEtBQUcsS0FBSyxNQUFNLElBQUUsRUFBRSxJQUFFLE1BQUksSUFBRTtBQUFBLFVBQUk7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUUsbUJBQU8sS0FBRyxLQUFHLEVBQUUsR0FBRSxHQUFFLElBQUcsS0FBSyxJQUFFLEtBQUcsS0FBRyxFQUFFLEdBQUUsR0FBRSxJQUFHLE1BQU0sSUFBRSxLQUFHLEtBQUcsRUFBRSxHQUFFLEdBQUUsSUFBRyxRQUFRLElBQUUsS0FBRyxLQUFHLEVBQUUsR0FBRSxHQUFFLElBQUcsUUFBUSxJQUFFLElBQUU7QUFBQSxVQUFLO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxLQUFHLElBQUU7QUFBSSxtQkFBTyxLQUFLLE1BQU0sSUFBRSxDQUFDLElBQUUsTUFBSSxLQUFHLElBQUUsTUFBSTtBQUFBLFVBQUc7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLHFGQUFxRixHQUFFLElBQUc7QUFBQyxhQUFHO0FBQUUsbUJBQVMsR0FBRyxJQUFHO0FBQUMsZUFBRyxRQUFNLElBQUcsR0FBRyxVQUFRLElBQUcsR0FBRyxTQUFPLEdBQUUsR0FBRyxVQUFRLElBQUcsR0FBRyxTQUFPLElBQUcsR0FBRyxVQUFRLElBQUcsR0FBRyxXQUFTLEdBQUcsR0FBRSxHQUFHLFVBQVEsR0FBRSxPQUFPLEtBQUssRUFBRSxFQUFFLFFBQVEsT0FBRztBQUFDLGlCQUFHLEtBQUcsR0FBRztBQUFBLFlBQUUsQ0FBQyxHQUFFLEdBQUcsUUFBTSxDQUFDLEdBQUUsR0FBRyxRQUFNLENBQUMsR0FBRSxHQUFHLGFBQVcsQ0FBQztBQUFFLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUU7QUFBRSx1QkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFF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TUFBSSxHQUFHLFFBQU0sT0FBSyxHQUFHLEtBQUcsT0FBSyxRQUFNLElBQUUsR0FBRyxRQUFRLEtBQUksRUFBRSxHQUFFLElBQUUsT0FBSyxJQUFFLEdBQUcsUUFBUSxNQUFLLEVBQUUsR0FBRSxNQUFJLE1BQUksSUFBRSxPQUFLLE1BQUksTUFBSSxHQUFHLFFBQU0sT0FBSyxHQUFHLEtBQUcsT0FBSyxPQUFLLFFBQVEsS0FBSyxHQUFHLEtBQUcsRUFBRSxLQUFHLEdBQUcsS0FBRyxPQUFLLFFBQU0sSUFBRSxHQUFHLFFBQVEsS0FBSSxFQUFFLEdBQUUsSUFBRSxPQUFLLElBQUUsR0FBRyxRQUFRLE1BQUssRUFBRSxHQUFFLE1BQUksTUFBSSxJQUFFLE9BQUssT0FBSyxNQUFJLEdBQUcsUUFBTSxPQUFLLEdBQUcsS0FBRyxPQUFLLFFBQU0sS0FBRyxPQUFLLEtBQUcsR0FBRyxRQUFRLEtBQUksRUFBRSxJQUFHLE9BQUssTUFBSSxHQUFHLEtBQUcsT0FBSyxRQUFNLElBQUUsR0FBRyxRQUFRLEtBQUksRUFBRSxHQUFFLElBQUUsT0FBSyxJQUFFLEdBQUcsUUFBUSxNQUFLLEVBQUUsR0FBRSxNQUFJLE1BQUksSUFBRTtBQUFLLHVCQUFNO0FBQUcsa0JBQUcsR0FBRyxRQUFNLE1BQUs7QUFBQyxvQkFBSSxJQUFFLEdBQUcsS0FBRztBQUFHLHNCQUFJO0FBQUUsb0JBQUksSUFBRSxHQUFHO0FBQUcsb0JBQUcsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxRQUFRLEdBQUUsRUFBRTtBQUFFLHdCQUFJLE9BQUssS0FBRyxJQUFFO0FBQUEsZ0JBQUU7QUFBQyxvQkFBRyxHQUFHLFFBQU07QUFBSSx5QkFBTTtBQUFBLGNBQUU7QUFBTTtBQUFBLFlBQUk7QUFBQyxtQkFBTTtBQUFBLFVBQUUsR0FBRSxLQUFHLFNBQVMsSUFBRztBQUFDLGdCQUFHLEdBQUcsT0FBSztBQUFJLHFCQUFNO0FBQUcscUJBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRyxVQUFRO0FBQUMsa0JBQUcsY0FBYyxLQUFLLEdBQUcsR0FBRztBQUFF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QUFDLGFBQUc7QUFBRSxjQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsQ0FBQyxJQUFHLElBQUcsT0FBSyxHQUFHLElBQUcsSUFBRyxFQUFFLElBQUU7QUFBRSxhQUFHLFVBQVE7QUFBQSxRQUFFLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLHVDQUF1QyxHQUFFLElBQUc7QUFBQyxhQUFHO0FBQUUsY0FBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLENBQUMsSUFBRyxJQUFHLE9BQUssR0FBRyxJQUFHLElBQUcsRUFBRSxNQUFJO0FBQUUsYUFBRyxVQUFRO0FBQUEsUUFBRSxFQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBQyx1Q0FBdUMsR0FBRSxJQUFHO0FBQUMsYUFBRztBQUFFLGNBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxDQUFDLElBQUcsSUFBRyxPQUFLLEdBQUcsSUFBRyxJQUFHLEVBQUUsS0FBRztBQUFFLGFBQUcsVUFBUTtBQUFBLFFBQUUsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsdUNBQXVDLEdBQUUsSUFBRztBQUFDLGFBQUc7QUFBRSxjQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsQ0FBQyxJQUFHLElBQUcsT0FBSyxHQUFHLElBQUcsSUFBRyxFQUFFLEtBQUc7QUFBRSxhQUFHLFVBQVE7QUFBQSxRQUFFLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLHVDQUF1QyxHQUFFLElBQUc7QUFBQyxhQUFHO0FBQUUsY0FBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLENBQUMsSUFBRyxHQUFFLEdBQUUsTUFBSTtBQUFDLG9CQUFPO0FBQUEsbUJBQU87QUFBTSx1QkFBTyxPQUFPLE1BQUksYUFBVyxLQUFHLEdBQUcsVUFBUyxPQUFPLEtBQUcsYUFBVyxJQUFFLEVBQUUsVUFBUyxPQUFLO0FBQUEsbUJBQU07QUFBTSx1QkFBTyxPQUFPLE1BQUksYUFB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QSxVQUFNLEdBQUUsR0FBRyxVQUFVLFVBQVEsV0FBVTtBQUFDLHFCQUFRLEtBQUcsR0FBRSxLQUFHLFVBQVUsUUFBTyxLQUFHLElBQUc7QUFBSyxpQkFBRyxNQUFLLFVBQVUsR0FBRztBQUFFLG1CQUFPLEtBQUs7QUFBQSxVQUFNLEdBQUUsR0FBRyxVQUFVLE1BQUksV0FBVTtBQUFDLGdCQUFHLENBQUMsQ0FBQyxLQUFLLE1BQUs7QUFBQyxrQkFBSSxLQUFHLEtBQUssS0FBSztBQUFNLHFCQUFPLEtBQUssT0FBSyxLQUFLLEtBQUssTUFBSyxLQUFLLE9BQUssS0FBSyxLQUFLLE9BQUssT0FBSyxLQUFLLE9BQUssTUFBSyxLQUFLLFVBQVM7QUFBQSxZQUFFO0FBQUEsVUFBQyxHQUFFLEdBQUcsVUFBVSxRQUFNLFdBQVU7QUFBQyxnQkFBRyxDQUFDLENBQUMsS0FBSyxNQUFLO0FBQUMsa0JBQUksS0FBRyxLQUFLLEtBQUs7QUFBTSxxQkFBTyxLQUFLLE9BQUssS0FBSyxLQUFLLE1BQUssS0FBSyxPQUFLLEtBQUssS0FBSyxPQUFLLE9BQUssS0FBSyxPQUFLLE1BQUssS0FBSyxVQUFTO0FBQUEsWUFBRTtBQUFBLFVBQUMsR0FBRSxHQUFHLFVBQVUsVUFBUSxTQUFTLElBQUcsSUFBRztBQUFDLGlCQUFHLE1BQUk7QUFBSyxxQkFBUSxLQUFHLEtBQUssTUFBSyxJQUFFLEdBQUUsT0FBSyxNQUFLO0FBQUksaUJBQUcsS0FBSyxJQUFHLEdBQUcsT0FBTSxHQUFFLElBQUksR0FBRSxLQUFHLEdBQUc7QUFBQSxVQUFJLEdBQUUsR0FBRyxVQUFVLGlCQUFlLFNBQVMsSUFBRyxJQUFHO0FBQUMsaUJBQUcsTUFBSTtBQUFLLHFCQUFRLEtBQUcsS0FBSyxNQUFLLElBQUUsS0FBSyxTQUFPLEdBQUUsT0FBSyxNQUFLO0FBQUksaUJBQUcsS0FBSyxJQUFHLEdBQUcsT0FBTSxHQUFFLElBQUksR0FBRSxLQUFHLEdBQUc7QUFBQSxVQUFJLEdBQUUsR0FBRyxVQUFVLE1BQUksU0FBUyxJQUFHO0FBQUMscUJBQVEsS0FBRyxH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UUFBTSxJQUFFLElBQUc7QUFBSSxrQkFBRSxFQUFFO0FBQUssbUJBQUssTUFBSSxRQUFNLElBQUUsSUFBRyxLQUFJLElBQUUsRUFBRTtBQUFLLGlCQUFHLEtBQUssRUFBRSxLQUFLO0FBQUUsbUJBQU87QUFBQSxVQUFFLEdBQUUsR0FBRyxVQUFVLGVBQWEsU0FBUyxJQUFHLElBQUc7QUFBQyxpQkFBRyxNQUFJLEtBQUssUUFBTyxLQUFHLE1BQUksTUFBSSxLQUFLLFNBQVEsS0FBRyxNQUFJLEdBQUUsS0FBRyxNQUFJLE1BQUksS0FBSztBQUFRLGdCQUFJLEtBQUcsSUFBSTtBQUFHLGdCQUFHLEtBQUcsTUFBSSxLQUFHO0FBQUUscUJBQU87QUFBRyxpQkFBRyxNQUFJLEtBQUcsSUFBRyxLQUFHLEtBQUssV0FBUyxLQUFHLEtBQUs7QUFBUSxxQkFBUSxJQUFFLEtBQUssUUFBTyxJQUFFLEtBQUssTUFBSyxNQUFJLFFBQU0sSUFBRSxJQUFHO0FBQUksa0JBQUUsRUFBRTtBQUFLLG1CQUFLLE1BQUksUUFBTSxJQUFFLElBQUcsS0FBSSxJQUFFLEVBQUU7QUFBSyxpQkFBRyxLQUFLLEVBQUUsS0FBSztBQUFFLG1CQUFPO0FBQUEsVUFBRSxHQUFFLEdBQUcsVUFBVSxTQUFPLFNBQVMsSUFBRyxJQUFHO0FBQUMsaUJBQUcsS0FBSyxXQUFTLEtBQUcsS0FBSyxTQUFPLElBQUcsS0FBRyxNQUFJLEtBQUcsS0FBSyxTQUFPO0FBQUkscUJBQVEsS0FBRyxHQUFFLElBQUUsS0FBSyxNQUFLLE1BQUksUUFBTSxLQUFHLElBQUc7QUFBSyxrQkFBRSxFQUFFO0FBQUsscUJBQVEsSUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsS0FBRyxJQUFHO0FBQUssZ0JBQUUsS0FBSyxFQUFFLEtBQUssR0FBRSxJQUFFLEtBQUssV0FBVyxDQUFDO0FBQUUsa0JBQUksU0FBTyxJQUFFLEtBQUssT0FBTSxNQUFJLEtBQUssUUFBTSxNQUFJLEtBQUssU0FBTyxJQUFFLEVBQUU7QUFBTSxxQkFBUSxLQUFHLEdBQUUsTUFBSSxVQUFVLFVBQVEsSUFBRSxJQUFFLFVBQVUsU0FBTyxJQUFHO0FBQUssa0JBQUUsR0FBRyxNQUFLLEdBQUUsS0FBRyxJQUFFLEtBQUcsVUFBVSxVQUFRLEtBQUcsSUFBRSxTQUFPLFVBQVUsS0FBRyxFQUFFO0FBQUUsbUJBQU87QUFBQSxVQUFDLEdBQUUsR0FBRyxVQUFVLFVBQVEsV0FBVTtBQUFDLHFCQUFRLEtBQUcsS0FBSyxNQUFLLEtBQUcsS0FBSyxNQUFLLEtBQUcsSUFBRyxPQUFLLE1BQUssS0FBRyxHQUFHLE1BQUs7QUFBQyxrQkFBSSxJQUFFLEdBQUc7QUFBSyxpQkFBRyxPQUFLLEdBQUcsTUFBSyxHQUFHLE9BQUs7QUFBQSxZQUFDO0FBQUMsbUJBQU8sS0FBSyxPQUFLLElBQUcsS0FBSyxPQUFLLElBQUc7QUFBQSxVQUFJO0FBQUUsbUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGdCQUFJLElBQUUsT0FBSyxHQUFHLE9BQUssSUFBSSxHQUFHLElBQUcsTUFBSyxJQUFHLEVBQUUsSUFBRSxJQUFJLEdBQUcsSUFBRyxJQUFHLEdBQUcsTUFBSyxFQUFFO0FBQUUsbUJBQU8sRUFBRSxTQUFPLFNBQU8sR0FBRyxPQUFLLElBQUcsRUFBRSxTQUFPLFNBQU8sR0FBRyxPQUFLLElBQUcsR0FBRyxVQUFTO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsZUFBRyxPQUFLLElBQUksR0FBRyxJQUFHLEdBQUcsTUFBSyxNQUFLLEVBQUUsR0FBRSxHQUFHLFNBQU8sR0FBRyxPQUFLLEdBQUcsT0FBTSxHQUFHO0FBQUEsVUFBUTtBQUFDLG1CQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsZUFBRyxPQUFLLElBQUksR0FBRyxJQUFHLE1BQUssR0FBRyxNQUFLLEVBQUUsR0FBRSxHQUFHLFNBQU8sR0FBRyxPQUFLLEdBQUcsT0FBTSxHQUFHO0FBQUEsVUFBUTtBQUFDLG1CQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRTtBQUFDLGdCQUFHLEVBQUUsZ0JBQWdCO0FBQUkscUJBQU8sSUFB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QyxJQUFJLFlBQVc7QUFBQyxxQkFBTyxLQUFLLEdBQUc7QUFBQSxZQUFNO0FBQUEsWUFBQyxTQUFTLEdBQUUsSUFBRztBQUFDLG1CQUFHLE1BQUk7QUFBSyx1QkFBUSxJQUFFLEtBQUssR0FBRyxNQUFLLE1BQUksUUFBTTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFLLGtCQUFFLE1BQUssR0FBRSxHQUFFLEVBQUUsR0FBRSxJQUFFO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLFFBQVEsR0FBRSxJQUFHO0FBQUMsbUJBQUcsTUFBSTtBQUFLLHVCQUFRLElBQUUsS0FBSyxHQUFHLE1BQUssTUFBSSxRQUFNO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUssa0JBQUUsTUFBSyxHQUFFLEdBQUUsRUFBRSxHQUFFLElBQUU7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsT0FBTTtBQUFDLHFCQUFPLEtBQUssR0FBRyxRQUFRLEVBQUUsSUFBSSxPQUFHLEVBQUUsR0FBRztBQUFBLFlBQUM7QUFBQSxZQUFDLFNBQVE7QUFBQyxxQkFBTyxLQUFLLEdBQUcsUUFBUSxFQUFFLElBQUksT0FBRyxFQUFFLEtBQUs7QUFBQSxZQUFDO0FBQUEsWUFBQyxRQUFPO0FBQUMsbUJBQUssT0FBSyxLQUFLLE1BQUksS0FBSyxHQUFHLFVBQVEsS0FBSyxHQUFHLFFBQVEsT0FBRyxLQUFLLElBQUksRUFBRSxLQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUUsS0FBSyxLQUFHLG9CQUFJLE9BQUksS0FBSyxLQUFHLElBQUksTUFBRyxLQUFLLE1BQUk7QUFBQSxZQUFDO0FBQUEsWUFBQyxPQUFNO0FBQUMscUJBQU8sS0FBSyxHQUFHLElBQUksT0FBRyxFQUFFLE1BQUssQ0FBQyxJQUFFLFFBQUcsRUFBQyxHQUFFLEVBQUUsS0FBSSxHQUFFLEVBQUUsT0FBTSxHQUFFLEVBQUUsT0FBSyxFQUFFLFVBQVEsR0FBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sT0FBRyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsVUFBUztBQUFD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QUFNO0FBQU0sc0JBQUksRUFBRSxPQUFLLEVBQUUsTUFBTSxNQUFJLEtBQUssSUFBSSxJQUFHLEVBQUUsR0FBRyxZQUFZLENBQUM7QUFBRyxxQkFBTyxFQUFFO0FBQUEsWUFBSztBQUFBLFVBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxPQUFLO0FBQUMsZ0JBQUcsQ0FBQyxNQUFJLENBQUMsR0FBRyxVQUFRLENBQUMsRUFBRTtBQUFJLHFCQUFNO0FBQUcsZ0JBQUksSUFBRSxLQUFLLElBQUksSUFBRSxHQUFHO0FBQUksbUJBQU8sR0FBRyxTQUFPLElBQUUsR0FBRyxTQUFPLEVBQUUsT0FBSyxJQUFFLEVBQUU7QUFBQSxVQUFHLEdBQUUsS0FBRyxPQUFHO0FBQUMsZ0JBQUcsRUFBRSxNQUFJLEVBQUU7QUFBSSx1QkFBUSxLQUFHLEVBQUUsR0FBRyxNQUFLLEVBQUUsTUFBSSxFQUFFLE9BQUssT0FBSyxRQUFNO0FBQUMsb0JBQUksSUFBRSxHQUFHO0FBQUssa0JBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRztBQUFBLGNBQUM7QUFBQSxVQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsT0FBSztBQUFDLGdCQUFHLElBQUc7QUFBQyxrQkFBSSxJQUFFLEdBQUc7QUFBTSxnQkFBRSxPQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUksRUFBRSxLQUFLLEdBQUUsRUFBRSxPQUFLLEVBQUUsUUFBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRSxJQUFFLE1BQUs7QUFBQSxZQUFDLFlBQVksR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQUssTUFBSSxHQUFFLEtBQUssUUFBTSxJQUFHLEtBQUssU0FBTyxHQUFFLEtBQUssTUFBSSxHQUFFLEtBQUssU0FBTyxLQUFHO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFHLEdBQUUsTUFBSTtBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFNLGNBQUUsR0FBRSxD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QUcsWUFBWSxNQUFJLE9BQUssT0FBSyxLQUFJLElBQUUsQ0FBQyxJQUFHLE1BQUksR0FBRyxLQUFLLEVBQUUsTUFBTSxLQUFLLEVBQUUsSUFBSSxPQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRSxJQUFFLENBQUMsSUFBRyxNQUFJO0FBQUMsZ0JBQUksSUFBRSxFQUFFLFFBQU0sR0FBRyxFQUFFLGNBQVksR0FBRyxFQUFFO0FBQU8sbUJBQU8sR0FBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLE1BQUk7QUFBQyxpQkFBRyxTQUFRLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxDQUFDO0FBQUUsa0JBQUk7QUFBRSxxQkFBTyxFQUFFLEVBQUUsSUFBRSxJQUFFLEtBQUcsRUFBRSxFQUFFLElBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEtBQUcsR0FBRSxRQUFRLElBQUUsRUFBRSxFQUFFLElBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxJQUFHLE1BQU0sRUFBRSxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFHLEdBQUUsTUFBTSxJQUFFLEtBQUcsR0FBRyxtQkFBa0IsQ0FBQyxHQUFFLElBQUUsS0FBSyxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUUsSUFBSSxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUcsR0FBRSxNQUFNLEtBQUcsSUFBRSxLQUFLLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLElBQUcsSUFBSSxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUcsR0FBRSxNQUFNLEdBQUUsR0FBRyxnQkFBZSxDQUFDLEdBQUU7QUFBQSxZQUFDLENBQUM7QUFBQSxVQUFDLEdBQUUsSUFBRSxDQUFDLElBQUcsTUFBSSxHQUFHLEtBQUssRUFBRSxNQUFNLEtBQUssRUFBRSxJQUFJLE9BQUcsR0FBRyxHQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxHQUFFLEtBQUcsQ0FBQyxJQUFHLE1BQUk7QUFBQyxlQUFHLFNBQVEsSUFBRyxDQUFDO0FBQUUsZ0JBQUksSUFBRSxFQUFFLFFBQU0sR0FBRyxFQUFFLGNBQVksR0FBRyxFQUFFLFFBQU8sSUFBRSxFQUFFLG9CQUFrQixPQUFLO0FBQUcsbUJBQU8sR0FBRyxRQUFRLEdBQUUsQ0FBQyxJQUFHLElBQUcsSUFBRyxHQUFFLE1BQUk7QUFBQyxpQkFBRyxTQUFRLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUUsa0JBQUk7QUFBRSxxQkFBTyxFQUFFLEVBQUUsSUFBRSxJQUFFLEtBQUcsRUFBRSxFQUFFLElBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRyxNQUFNLEVBQUUsT0FBTyxHQUFFLElBQUksRUFBRSxPQUFPLENBQUMsS0FBRyxHQUFFLFFBQVEsSUFBRSxFQUFFLENBQUMsSUFBRSxPQUFLLE1BQUksSUFBRSxLQUFLLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxJQUFHLElBQUksRUFBRSxPQUFPLEdBQUUsSUFBSSxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUcsR0FBRSxNQUFNLElBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxJQUFHLElBQUksRUFBRSxPQUFPLEdBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFHLEdBQUUsUUFBUSxJQUFFLEtBQUcsR0FBRyxtQkFBa0IsQ0FBQyxHQUFFLE9BQUssTUFBSSxPQUFLLE1BQUksSUFBRSxLQUFLLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUUsR0FBRyxFQUFFLE9BQU8sR0FBRSxJQUFJLEVBQUUsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFFLEdBQUUsSUFBSSxJQUFFLElBQUUsS0FBSyxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLEdBQUUsSUFBSSxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUcsR0FBRSxNQUFNLElBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUUsR0FBRyxFQUFFLE9BQU8sR0FBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUcsR0FBRSxRQUFRLE1BQUksR0FBRyxPQUFPLEdBQUUsT0FBSyxNQUFJLE9BQUssTUFBSSxJQUFFLEtBQUssT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sR0FBRSxJQUFJLEVBQUUsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFFLEdBQUUsSUFBSSxJQUFFLElBQUUsS0FBSyxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxHQUFFLElBQUksRUFBRSxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFHLEdBQUUsTUFBTSxJQUFFLElBQUUsS0FBSyxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxHQUFFLElBQUksRUFBRSxPQUFPLENBQUMsS0FBRyxHQUFFLFFBQVEsSUFBRyxHQUFHLGdCQUFlLENBQUMsR0FBRTtBQUFBLFlBQUMsQ0FBQztBQUFBLFVBQUMsR0FBRSxJQUFFLENBQUMsSUFBRyxPQUFLLEdBQUcsa0JBQWlCLElBQUcsQ0FBQyxHQUFFLEdBQUcsTUFBTSxLQUFLLEVBQUUsSUFBSSxPQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBRyxJQUFFLENBQUMsSUFBRyxNQUFJO0FBQUMsaUJBQUcsR0FBRyxLQUFLO0FBQUUsZ0JBQUksSUFBRSxFQUFFLFFBQU0sR0FBRyxFQUFFLGVBQWEsR0FBRyxFQUFFO0FBQVEsbUJBQU8sR0FBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsTUFBSTtBQUFDLGlCQUFHLFVBQVMsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQztBQUFFLGtCQUFJLElBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRSxLQUFHLEVBQUUsRUFBRSxHQUFFLElBQUUsS0FBRyxFQUFFLENBQUMsR0FBRSxJQUFFO0FBQUUscUJBQU8sT0FBSyxPQUFLLE1BQUksS0FBRyxLQUFJLElBQUUsRUFBRSxvQkFBa0IsT0FBSyxJQUFHLElBQUUsT0FBSyxPQUFLLE9BQUssTUFBSSxJQUFFLGFBQVcsSUFBRSxNQUFJLE1BQUksS0FBRyxNQUFJLEtBQUcsSUFBRyxJQUFFLEdBQUUsT0FBSyxPQUFLLEtBQUcsTUFBSyxLQUFHLEtBQUcsQ0FBQyxLQUFHLEdBQUUsS0FBRyxHQUFFLElBQUUsTUFBSSxLQUFHLENBQUMsS0FBRyxHQUFFLElBQUUsTUFBSSxPQUFLLFNBQU8sS0FBRyxLQUFJLElBQUUsS0FBRyxDQUFDLEtBQUcsSUFBRSxLQUFHLENBQUMsS0FBRyxJQUFHLE9BQUssUUFBTSxJQUFFLE9BQU0sSUFBRSxHQUFHLE9BQU8sS0FBRyxJQUFHLEdBQUcsRUFBRSxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFHLElBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRyxNQUFNLEVBQUUsT0FBTyxHQUFFLElBQUksRUFBRSxPQUFPLENBQUMsS0FBRyxHQUFFLFFBQVEsSUFBRSxNQUFJLElBQUUsS0FBSyxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sSUFBRyxJQUFJLEVBQUUsT0FBTyxHQUFFLElBQUksRUFBRSxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFHLEdBQUUsTUFBTSxJQUFHLEdBQUcsaUJBQWdCLENBQUMsR0FBRTtBQUFBLFlBQUMsQ0FBQztBQUFBLFVBQUMsR0FBRSxJQUFFLENBQUMsSUFBRyxPQUFLLEdBQUcsZ0JBQWUsSUFBRyxDQUFDLEdBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxHQUFHLEVBQUUsT0FBTSxFQUFFLElBQUcsSUFBRSxDQUFDLElBQUcsT0FBSyxHQUFHLGVBQWMsSUFBRyxDQUFDLEdBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxHQUFHLEVBQUUsb0JBQWtCLEVBQUUsVUFBUSxFQUFFLE9BQU0sRUFBRSxJQUFHLEtBQUcsUUFBSSxDQUFDLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLE9BQUssRUFBRSxDQUFDLElBQUUsSUFBRSxLQUFHLEVBQUUsRUFBRSxJQUFFLElBQUUsS0FBSyxPQUFPLEdBQUUsTUFBTSxFQUFFLE9BQU8sS0FBRyxPQUFLLEVBQUUsSUFBRSxFQUFFLEVBQUUsSUFBRSxJQUFFLEtBQUssT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLElBQUcsSUFBSSxFQUFFLE9BQU8sS0FBRyxPQUFLLEVBQUUsSUFBRSxLQUFHLElBQUUsS0FBSyxPQUFPLENBQUMsSUFBRSxJQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsT0FBTyxLQUFHLE9BQUssRUFBRSxHQUFFLEVBQUUsQ0FBQyxJQUFFLElBQUUsS0FBRyxFQUFFLENBQUMsSUFBRSxJQUFFLElBQUksT0FBTyxDQUFDLElBQUUsR0FBRSxRQUFRLElBQUUsRUFBRSxDQUFDLElBQUUsSUFBRSxJQUFJLE9BQU8sR0FBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUUsR0FBRSxNQUFNLElBQUUsSUFBRSxJQUFFLEtBQUssT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLEdBQUUsR0FBRyxFQUFFLE9BQU8sR0FBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUUsS0FBRyxJQUFFLElBQUksT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLEdBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFFLEdBQUUsSUFBSSxJQUFFLElBQUUsS0FBSyxPQUFP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LEVBQUUsT0FBTSxDQUFDLEVBQUUsS0FBSyxLQUFLLEtBQUs7QUFBRSxrQkFBRyxFQUFFLGFBQVc7QUFBRyx1QkFBTyxFQUFFLFVBQVEsS0FBRyxPQUFHLElBQUksRUFBRSxLQUFLLE9BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNO0FBQUUsa0JBQUksS0FBRyxLQUFLLGFBQVcsUUFBTSxLQUFLLGFBQVcsU0FBTyxFQUFFLGFBQVcsUUFBTSxFQUFFLGFBQVcsTUFBSyxLQUFHLEtBQUssYUFBVyxRQUFNLEtBQUssYUFBVyxTQUFPLEVBQUUsYUFBVyxRQUFNLEVBQUUsYUFBVyxNQUFLLElBQUUsS0FBSyxPQUFPLFlBQVUsRUFBRSxPQUFPLFNBQVEsS0FBRyxLQUFLLGFBQVcsUUFBTSxLQUFLLGFBQVcsVUFBUSxFQUFFLGFBQVcsUUFBTSxFQUFFLGFBQVcsT0FBTSxLQUFHLEdBQUcsS0FBSyxRQUFPLEtBQUksRUFBRSxRQUFPLENBQUMsTUFBSSxLQUFLLGFBQVcsUUFBTSxLQUFLLGFBQVcsU0FBTyxFQUFFLGFBQVcsUUFBTSxFQUFFLGFBQVcsTUFBSyxJQUFFLEdBQUcsS0FBSyxRQUFPLEtBQUksRUFBRSxRQUFPLENBQUMsTUFBSSxLQUFLLGFBQVcsUUFBTSxLQUFLLGFBQVcsU0FBTyxFQUFFLGFBQVcsUUFBTSxFQUFFLGFBQVc7QUFBSyxxQkFBTyxLQUFHLEtBQUcsS0FBRyxLQUFHLE1BQUk7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFFLGFBQUcsVUFBUTtBQUFHLGNBQUksS0FBRyxHQUFHLEdBQUUsRUFBQyxJQUFHLElBQUcsR0FBRSxHQUFFLElBQUUsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLElBQUUsR0FBRztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsNkNBQTZDLEdBQUUsSUFBRztBQUFDLGFBQUc7QUFBRSxjQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsQ0FBQyxJQUFHLElBQUcsT0FBSztBQUFDLGdCQUFHO0FB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QUcsSUFBRyxLQUFJLEVBQUU7QUFBRSxhQUFHLFVBQVE7QUFBQSxRQUFFLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLDJDQUEyQyxHQUFFLElBQUc7QUFBQyxhQUFHO0FBQUUsY0FBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLENBQUMsSUFBRyxJQUFHLFFBQU0sS0FBRyxJQUFJLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxJQUFJLEdBQUcsSUFBRyxFQUFFLEdBQUUsR0FBRyxXQUFXLEVBQUU7QUFBRyxhQUFHLFVBQVE7QUFBQSxRQUFFLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLHlDQUF5QyxHQUFFLElBQUc7QUFBQyxhQUFHO0FBQUUsY0FBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxhQUFHLFVBQVEsQ0FBQyxJQUFHLElBQUcsT0FBSztBQUFDLGdCQUFJLEtBQUcsQ0FBQyxHQUFFLEtBQUcsTUFBSyxLQUFHLE1BQUssSUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFFLE1BQUksR0FBRyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUUscUJBQVEsS0FBSztBQUFFLGlCQUFHLEdBQUUsSUFBRyxFQUFFLEtBQUcsS0FBRyxHQUFFLE9BQUssS0FBRyxPQUFLLE1BQUksR0FBRyxLQUFLLENBQUMsSUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHLE1BQUssS0FBRztBQUFNLGtCQUFJLEdBQUcsS0FBSyxDQUFDLElBQUcsSUFBSSxDQUFDO0FBQUUsZ0JBQUksSUFBRSxDQUFDO0FBQUUscUJBQU8sQ0FBQyxHQUFFLENBQUMsS0FBSTtBQUFHLG9CQUFJLElBQUUsRUFBRSxLQUFLLENBQUMsSUFBRSxDQUFDLEtBQUcsTUFBSSxFQUFFLEtBQUcsRUFBRSxLQUFLLEdBQUcsSUFBRSxJQUFFLE1BQUksRUFBRSxLQUFHLEVBQUUsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLElBQUUsRUFBRSxLQUFLLEdBQUcsT0FBTyxHQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFFLEVBQUUsS0FBSyxL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QUUsVUFBUyxHQUFHLEdBQUUsY0FBYSxHQUFHLEdBQUUsY0FBYSxHQUFHLEdBQUUsTUFBSyxHQUFHLEdBQUUsT0FBTSxHQUFHLEdBQUUsSUFBRyxHQUFHLEdBQUUsSUFBRyxHQUFHLEdBQUUsSUFBRyxHQUFHLEdBQUUsS0FBSSxHQUFHLEdBQUUsS0FBSSxHQUFHLEdBQUUsS0FBSSxHQUFHLEdBQUUsS0FBSSxHQUFHLEdBQUUsUUFBTyxHQUFHLEdBQUUsWUFBVyxHQUFHLEdBQUUsT0FBTSxHQUFHLEdBQUUsV0FBVSxHQUFHLEdBQUUsZUFBYyxHQUFHLEdBQUUsZUFBYyxHQUFHLEdBQUUsZUFBYyxHQUFHLEdBQUUsWUFBVyxHQUFHLEdBQUUsWUFBVyxHQUFHLEdBQUUsU0FBUSxHQUFHLEdBQUUsS0FBSSxHQUFHLEdBQUUsS0FBSSxHQUFHLEdBQUUsWUFBVyxHQUFHLEdBQUUsZUFBYyxHQUFHLEdBQUUsUUFBTyxHQUFHLEVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQztBQUFFLFdBQUcsSUFBRyxFQUFDLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLEtBQUksTUFBSSxHQUFFLENBQUM7QUFBRSxpQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG1CQUFRLEtBQUcsR0FBRSxLQUFHLEVBQUUsU0FBTyxHQUFFLE1BQUksR0FBRSxNQUFLO0FBQUMsZ0JBQUksS0FBRyxFQUFFO0FBQUksbUJBQUssTUFBSSxFQUFFLE9BQU8sSUFBRyxDQUFDLElBQUUsT0FBSyxRQUFNLEVBQUUsT0FBTyxJQUFHLENBQUMsR0FBRSxRQUFNLE9BQUssRUFBRSxPQUFPLElBQUcsQ0FBQyxHQUFFO0FBQUEsVUFBSztBQUFDLGNBQUc7QUFBRyxtQkFBSyxNQUFLO0FBQUcsZ0JBQUUsUUFBUSxJ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R0FBRTtBQUFDLHFCQUFPLElBQUUsS0FBRztBQUFBLFlBQUU7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRSxRQUFPLEtBQUcsRUFBRTtBQUFPLHFCQUFNLEdBQUcsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxjQUFZO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBTyxFQUFFLE1BQU0sT0FBTyxHQUFHLEdBQUUsRUFBRSxDQUFDLEdBQUUsR0FBRyxVQUFVLEVBQUUsT0FBTyxRQUFPLEdBQUcsU0FBTyxFQUFFLE9BQU8sTUFBTTtBQUFBLFlBQUM7QUFBQyxjQUFFLGNBQVk7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQVEsSUFBRyxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxtQkFBRyxJQUFHLEVBQUUsS0FBRyxHQUFHLE9BQU8sU0FBTyxPQUFLLEtBQUcsR0FBRyxPQUFPLFFBQU8sS0FBRztBQUFBLGNBQUc7QUFBQyxxQkFBTztBQUFBLFlBQUU7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxZQUFZLElBQUcsQ0FBQyxNQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsYUFBVztBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxFQUFFLE9BQU8sR0FBRyxNQUFNLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssV0FBUyxLQUFHLEtBQUksR0FBRyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxJQUFFLEVBQUUsVUFBVSxHQUFH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QUFHLENBQUMsS0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxDQUFDO0FBQUU7QUFBQSxvQkFBTTtBQUFDLG9CQUFFLEtBQUssQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxLQUFLLENBQUM7QUFBRSxrQkFBRyxDQUFDLENBQUMsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsTUFBSSxTQUFPLE1BQUksR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLE1BQUksU0FBTyxNQUFJLEdBQUUsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUUsSUFBRSxTQUFTLEdBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFLElBQUUsU0FBUyxHQUFFLEVBQUUsR0FBRSxFQUFFLENBQUMsS0FBRyxFQUFFLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRSxJQUFFLFNBQVMsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU0sRUFBQyxTQUFRLEdBQUUsT0FBTSxHQUFFLE9BQU0sR0FBRSxPQUFNLEVBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLGtCQUFHLENBQUM7QUFBRSx1QkFBTTtBQUFHLGtCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUscUJBQU8sS0FBRyxFQUFFLEVBQUUsS0FBSyxLQUFHLEVBQUUsS0FBSyxHQUFHLE1BQUssRUFBRSxPQUFPLENBQUMsR0FBRSxFQUFFLEVBQUUsS0FBSyxLQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxJQUFFLEdBQUcsS0FBSSxFQUFFLFFBQVEsVUFBVSxPQUFPLENBQUMsSUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFFLEdBQUcsS0FBSSxFQUFFLFFBQVEsVUFBVSxPQUFPLENBQUMsSUFBRSxHQUFHLE1BQUssRUFBRSxPQUFPLENBQUMsR0FBRSxRQUFJO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLGtCQUFHLENBQUM7QUFBRSx1QkFBTTtBQUFHLGtCQUFJLElBQUUsRUFBRSxTQUFRLElBQUUsRUFBRSxPQUFNLElBQUUsRUFBRSxPQUFNLElBQUUsRUFBRTtBQUFNLGtCQUFHLEVBQUUsQ0FBQztBQUFFLGlCQUFDLE1BQUksT0FBSyxNQUFJLFFBQU0sRUFBRSxLQUFLLEdBQUcsS0FBSSxFQUFFLElBQUksQ0FBQztBQUFBO0FBQU8sd0JBQU87QUFBQSx1QkFBTztBQUFJLHNCQUFFLEtBQUssR0FBRyxNQUFLLENBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFFLFVBQVEsT0FBTyxDQUFDLENBQUM7QUFBRTtBQUFBLHVCQUFVO0FBQUksc0JBQUUsS0FBSyxHQUFHLE1BQUssQ0FBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSSxFQUFFLFVBQVUsRUFBRSxRQUFNLEtBQUcsRUFBRSxDQUFDLElBQUUsVUFBUSxFQUFFLFFBQU0sS0FBRyxFQUFFLENBQUMsSUFBRSxVQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQUU7QUFBQSx1QkFBVTtBQUFBLHVCQUFRO0FBQUssc0JBQUUsS0FBSyxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSx1QkFBVTtBQUFBLHVCQUFTO0FBQUksc0JBQUUsS0FBSyxFQUFFLENBQUMsSUFBRSxHQUFHLE1BQUksT0FBSyxNQUFJLE1BQUssRUFBRSxVQUFVLE9BQU8sQ0FBQyxJQUFFLEVBQUUsQ0FBQyxJQUFFLEdBQUcsTUFBSSxPQUFLLE1BQUksTUFBSyxFQUFFLFVBQVUsT0FBTyxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFFO0FBQUEsdUJB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QUFFLEtBQUcsTUFBSSxNQUFLLEVBQUUsRUFBRSxLQUFHLE1BQUksTUFBSyxFQUFFLEVBQUUsS0FBRyxNQUFJLE1BQUssRUFBRSxFQUFFLEtBQUcsTUFBSSxNQUFLLEVBQUUsRUFBRSxLQUFHLE1BQUksTUFBSyxFQUFFLEVBQUUsS0FBRyxNQUFJLE1BQUssRUFBRSxFQUFFLEtBQUcsTUFBSSxNQUFLLEVBQUUsRUFBRSxLQUFHLE1BQUksTUFBSyxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE9BQUssS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE9BQUssS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE9BQUssS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE9BQUssS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE9BQUssS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE9BQUssS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE9BQUssS0FBSSxFQUFFLEVBQUUsSUFBRSxPQUFLLEtBQUksRUFBRSxFQUFFLElBQUUsT0FBSyxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLElBQUUsTUFBSSxLQUFJLEVBQUUsRUFBRSxJQUFFLE1BQUksS0FBSSxFQUFFLEVBQUUsSUFBRSxNQUFJLEtBQUksRUFBRSxFQUFFLFlBQVUsTUFBSSxhQUFZLEVBQUUsRUFBRSxXQUFTLE1BQUksWUFBVyxFQUFFLEVBQUUsS0FBRyxNQUFJLE1BQUssRUFBRSxFQUFFLFlBQVUsTUFBSSxhQUFZLEVBQUUsRUFBRSxXQUFTLE1BQUksWUFBVyxFQUFFLEVBQUUsTUFBSSxPQUFLLE9BQU0sRUFBRSxFQUFFLFFBQU0sTUFBSSxTQUFRLEVBQUUsRUFBRSxhQUFXLE9BQUssY0FBYSxFQUFFLEVBQUUsZUFBYSxNQUFJLGdCQUFlLEVBQUUsRUFBRSxhQUFXLE1BQUksY0FBYSxFQUFFLEVBQUUsUUFBTSxNQUFJLFNBQVEsRUFBRSxFQUFFLFFBQU0sTUFBSSxTQUFRLEVBQUUs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QUFZLEtBQUksRUFBRSxXQUFTLElBQUcsRUFBRSxVQUFRLEtBQUksRUFBRSxVQUFRLElBQUcsRUFBRSxTQUFPLElBQUcsRUFBRSxLQUFHLElBQUcsRUFBRSxPQUFLLElBQUcsRUFBRSxPQUFLLElBQUcsRUFBRSxTQUFPLElBQUcsRUFBRSxVQUFRLElBQUcsRUFBRSxRQUFNLElBQUcsRUFBRSxVQUFRLElBQUcsRUFBRSxNQUFJLElBQUcsRUFBRSxPQUFLLEtBQUksRUFBRSxXQUFTLElBQUcsRUFBRSxNQUFJLEtBQUksRUFBRSxLQUFHLElBQUcsRUFBRSxhQUFXLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxLQUFHLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxhQUFXLEtBQUksRUFBRSxZQUFVLEtBQUksRUFBRSxZQUFVLEtBQUksRUFBRSxLQUFHLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxNQUFJLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxZQUFVLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxNQUFJLEtBQUksRUFBRSxPQUFLLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxVQUFRLEtBQUksRUFBRSxVQUFRLEtBQUksRUFBRSxZQUFVLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxXQUFTLEtBQUksRUFBRSxNQUFJLEtBQUksRUFBRSxXQUFTLEtBQUksRUFBRSxVQUFRLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxNQUFJLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxPQUFLLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxPQUFLLEtBQUksRUFBRSxNQUFJLEtBQUksRUFBRSxPQUFLLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxZQUFVLEtBQUksRUFBRSxTQUFPLEtBQUksRUFBRSxVQUFRLEtBQUksRUFBRSxNQUFJLEtBQUksRUFBRSxPQUFLLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxPQUFLLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxRQUFNLEtBQUksRUFBRSxLQUFHLEtBQUk7QUFBRyxnQkFBSSxJQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLEdBQUUsSUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsR0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLGdCQUFnQixHQUFFLEVBQUMsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLE9BQU0sSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsTUFBSyxJQUFHLE1BQUssSUFBRyxNQUFLLElBQUcsTUFBSyxJQUFHLE9BQU0sSUFBRyxPQUFNLElBQUcsTUFBSyxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsTUFBSyxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLE1BQUssSUFBRyxNQUFLLElBQUcsTUFBSyxJQUFHLE1BQUssSUFBRyxNQUFLLElBQUcsT0FBTSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsTUFBSyxJQUFHLE1BQUssSUFBRyxLQUFJLElBQUcsTUFBSyxJQUFHLE1BQUssSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLE1BQUssSUFBRyxNQUFLLElBQUcsTUFBSyxJQUFHLE9BQU0sSUFBRyxNQUFLLElBQUcsTUFBSyxJQUFHLE9BQU0sSUFBRyxPQUFNLElBQUcsUUFBTyxJQUFHLE1BQUssSUFBRyxNQUFLLElBQUcsTUFBSyxJQUFHLE9BQU0sSUFBRyxPQUFNLElBQUcsT0FBTSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsSUFBRSxDQUFDLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sS0FBSyxHQUFFLEtBQUcsQ0FBQyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sS0FBSyxHQUFFLElBQUUsQ0FBQyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLEtBQUksTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxNQUFLLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLEtBQUssR0FBRSxJQUFFLENBQUMsS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLEtBQUksTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE1BQUssT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sS0FBSyxHQUFFLElBQUUsQ0FBQyxJQUFHLElBQUcsSUFBRyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxLQUFJLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sTUFBTSxHQUFFLElBQUUsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLEtBQUksTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxR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LE1BQUksS0FBRyxNQUFJLElBQUUsTUFBSyxLQUFHO0FBQUEseUJBQU87QUFBQSx5QkFBTztBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFTO0FBQUEseUJBQVU7QUFBQSx5QkFBVTtBQUFBLHlCQUFVO0FBQUEseUJBQVU7QUFBQSx5QkFBVTtBQUFBLHlCQUFVO0FBQUEseUJBQVU7QUFBQSx5QkFBVTtBQUFBLHlCQUFVO0FBQUEseUJBQVU7QUFBQSx5QkFBVTtBQUFBLHlCQUFVO0FBQUEseUJBQVU7QUFBQSx5QkFBVTtBQUFBLHlCQUFVO0FBQUEseUJBQVc7QUFBTSwwQkFBRyxJQUFHO0FBQUM7QUFBSztBQUFBLHNCQUFRLE9BQUs7QUFBQywrQkFBSyxLQUFHLEtBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQUc7QUFBSywrQkFBTyxLQUFHO0FBQUEsc0JBQUM7QUFBQSx5QkFBTTtBQUFHLDZCQUFPLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxLQUFHLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxNQUFJLE1BQUksR0FBRSxLQUFHLE9BQUssTUFBSSxHQUFFLEtBQUcsT0FBSyxNQUFLLEtBQUc7QUFBQSx5QkFBUztBQUFBLHlCQUFRO0FBQUcsNkJBQU8sS0FBRyxHQUFHLEdBQUUsS0FBRztBQUFBLHlCQUFRO0FBQUcsNkJBQU8sS0FBRyxHQUFHLEtBQUU7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxNQUFJLE1BQUksR0FBRSxLQUFHLE9BQUssTUFBSyxLQUFHO0FBQUEseUJBQVM7QUFBRyw2QkFBTyxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksS0FBRyxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxNQUFJLEdBQUUsS0FBRyxPQUFLLE1BQUksR0FBRSxLQUFHLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxHQUFFLEtBQUcsT0FBSyxNQUFLLEtBQUc7QUFBQSx5QkFBUztBQUFHLDZCQUFPLE1BQUssS0FBRztBQUFBLHlCQUFRO0FBQUcsNkJBQU8sTUFBSyxLQUFHO0FBQUEseUJBQVE7QUFBRywwQkFBRyxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUk7QUFBRywrQkFBTyxNQUFJLEdBQUUsS0FBRztBQUFHLDBCQUFHLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSTtBQUFHLCtCQUFPLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxNQUFJLE1BQUksR0FBRSxLQUFHLE9BQUssTUFBSSxHQUFFLEtBQUc7QUFBSSwwQkFBRyxNQUFLLE1BQUksQ0FBQyxNQUFJLEtBQUcsR0FBRTtBQUFDLDZCQUFHO0FBQUc7QUFBQSxzQkFBUTtBQUFDLDZCQUFPLEtBQUc7QUFBQSx5QkFBUTtBQUFHLDZCQUFPLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxNQUFJLE1BQUksR0FBRSxLQUFHLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxHQUFFLEtBQUcsT0FBSyxNQUFLLEtBQUc7QUFBQSx5QkFBUztBQUFHLDZCQUFPLE1BQUssS0FBRztBQUFBLHlCQUFRO0FBQUcsNkJBQU8sR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxHQUFFLEtBQUcsTUFBSSxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxNQUFJLEdBQUUsS0FBRyxPQUFLLE1BQUssS0FBRztBQUFBLHlCQUFTO0FBQUcsNkJBQU8sRUFBRSxHQUFHLFdBQVcsS0FBRyxDQUFDLENBQUMsS0FBRyxLQUFHLEdBQUcsRUFBRSxPQUFNLEtBQUcsS0FBRyxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxNQUFJLEdBQUUsS0FBRyxPQUFLLE1BQUssS0FBRztBQUFBLHlCQUFTO0FBQUcsMEJBQUcsR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLElBQUc7QUFBQyw2QkFBSSxNQUFJLEdBQUUsS0FBRyxLQUFHLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQUc7QUFBSyw0QkFBRyxLQUFHLEdBQUcsSUFBRyxHQUFHLE1BQU0sSUFBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLEdBQUU7QUFBRztBQUFTLCtCQUFPLEtBQUc7QUFBQSxzQkFBQztBQUFDLDBCQUFHLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxJQUFHO0FBQUMsOEJBQUksR0FBRSxHQUFHLFdBQVcsRUFBRSxNQUFJLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE9BQUssTUFBSTtBQUFHLGlDQUFRLEtBQUcsT0FBRyxLQUFHLElBQUcsS0FBRyxLQUFHO0FBQUMsOEJBQUksS0FBRyxHQUFHLFdBQVcsRUFBRTtBQUFFLDhCQUFHLE9BQUssTUFBSSxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksSUFBRztBQUFDLGtDQUFJLEdBQUUsS0FBRztBQUFHO0FBQUEsMEJBQUs7QUFBQyxnQ0FBSyxFQUFFLEVBQUUsTUFBSSxLQUFHLElBQUcsTUFBSTtBQUFBLHdCQUFFO0FBQUMsNEJBQUcsS0FBRyxHQUFHLElBQUcsR0FBRyxNQUFNLElBQUcsRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLE1BQUksR0FBRyxFQUFFLFlBQVksdUJBQXVCLEdBQUU7QUFBRztBQUFTLCtCQUFPLE9BQUssTUFBSSxJQUFHLEtBQUc7QUFBQSxzQkFBQztBQUFDLDZCQUFPLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxNQUFJLE1BQUksR0FBRSxLQUFHLE9BQUssTUFBSyxLQUFHO0FBQUEseUJBQVM7QUFBRywwQkFBRyxLQUFHLElBQUUsTUFBSSxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUk7QUFBSywrQkFBTyxNQUFJLEdBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRSxHQUFFLE9BQUssR0FBRyxFQUFFLFlBQVksMEJBQTBCLEdBQUUsS0FBRyxNQUFLLEtBQUcsT0FBSyxJQUFHLE1BQUksSUFBRyxLQUFHLEdBQUc7QUFBRSwwQkFBRyxLQUFHLElBQUUsTUFBSSxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUk7QUFBSSwrQkFBTyxNQUFJLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxPQUFLLEdBQUcsRUFBRSxZQUFZLHFCQUFxQixHQUFFLEtBQUcsTUFBSyxLQUFHLE9BQUssSUFBRyxNQUFJLEtBQUksS0FBRyxHQUFHO0FBQUUsMEJBQUcsS0FBRyxJQUFFLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJO0FBQUssK0JBQU8sTUFBSSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsT0FBSyxHQUFHLEVBQUUsWUFBWSxvQkFBb0IsR0FBRSxLQUFHLE1BQUssS0FBRyxPQUFLLElBQUcsTUFBSSxLQUFJLEtBQUcsR0FBRztBQUFFLDBCQUFHLEtBQUcsSUFBRSxLQUFHLEVBQUUsR0FBRyxXQUFXLEtBQUcsQ0FBQyxDQUFDO0FBQUUsK0JBQU8sS0FBRyxLQUFHLEdBQUcsR0FBRSxNQUFJLElBQUcsS0FBRztBQUFBLHlCQUFPO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFHLDZCQUFPLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxNQUFLLEtBQUcsR0FBRyxPQUFNO0FBQUEseUJBQVE7QUFBRyw2QkFBTyxNQUFLLEtBQUc7QUFBQSx5QkFBUTtBQUFHLDZCQUFPLE1BQUssS0FBRztBQUFBLHlCQUFRO0FBQUcsMEJBQUcsRUFBRSxJQUFHLEVBQUUsR0FBRTtBQUFDLDRCQUFHLEtBQUcsRUFBRSxJQUFHLElBQUcsRUFBRSxHQUFFO0FBQUc7QUFBUywrQkFBTyxLQUFHO0FBQUEsc0JBQUM7QUFBQyw2QkFBTyxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksS0FBRyxHQUFHLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxNQUFJLEdBQUUsS0FBRyxPQUFLLE1BQUksR0FBRSxLQUFHLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxHQUFFLEtBQUcsTUFBSSxPQUFLLEtBQUcsR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxHQUFFLEtBQUcsT0FBSyxNQUFLLEtBQUc7QUFBQSx5QkFBUztBQUFHLDBCQUFHLEVBQUUsSUFBRyxFQUFFLEdBQUU7QUFBQyw0QkFBRyxLQUFHLEVBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRTtBQUFHO0FBQVMsK0JBQU8sS0FBRztBQUFBLHNCQUFDO0FBQUMsNkJBQU8sR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLEtBQUcsR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxHQUFFLEtBQUcsT0FBSyxNQUFJLEdBQUUsS0FBRyxNQUFJLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSSxNQUFJLE1BQUksR0FBRSxLQUFHLE9BQUssTUFBSyxLQUFHO0FBQUEseUJBQVM7QUFBRywwQkFBRyxFQUFFLElBQUcsRUFBRSxHQUFFO0FBQUMsNEJBQUcsS0FBRyxFQUFFLElBQUcsSUFBRyxFQUFFLEdBQUU7QUFBRztBQUFTLCtCQUFPLEtBQUc7QUFBQSxzQkFBQztBQUFDLDZCQUFPLE1BQUssS0FBRztBQUFBLHlCQUFRO0FBQUcsNkJBQU8sR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxLQUFHLENBQUMsQ0FBQyxLQUFHLE1BQUksR0FBRSxLQUFHLE1BQUksR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLEtBQUcsR0FBRyxXQUFXLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxHQUFFLEtBQUcsT0FBSyxNQUFJLEdBQUUsS0FBRyxPQUFLLE1BQUssS0FBRztBQUFBLHlCQUFTO0FBQUcsNkJBQU8sTUFBSyxLQUFHO0FBQUEseUJBQVE7QUFBRyw2QkFBTyxNQUFLLEtBQUc7QUFBQSx5QkFBUTtBQUFHLDZCQUFPLEdBQUcsV0FBVyxLQUFH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UUFBTSxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsS0FBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUc7QUFBRyxtQkFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLG9CQUFJLEtBQUcsR0FBRztBQUFFLHVCQUFPLElBQUUsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLEtBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsS0FBSTtBQUFDLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyxxQkFBRztBQUFBLGNBQU07QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQUcsTUFBSSxJQUFHLElBQUUsT0FBSyxTQUFPLEdBQUcsU0FBTyxLQUFHLElBQUcsR0FBRyxNQUFJLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUUsTUFBTSxPQUFPLE1BQUksQ0FBQyxHQUFFLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRSxLQUFHLFFBQU8sS0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLElBQUU7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxnQkFBSSxLQUFHLE9BQU8sVUFBVSxjQUFZLFNBQVMsSUFBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxZQUFZLEVBQUU7QUFBQSxZQUFDLElBQUUsU0FBUyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBTyxrQkFBRyxFQUFFLEtBQUcsS0FBRyxNQUFJLEtBQUk7QUFBQyxvQkFBSSxLQUFHLEdBQUcsV0FBVyxFQUFFO0FBQUUsb0JBQUcsTUFBSSxTQUFPLE1BQUksU0FBTyxLQUFHLEtBQUcsR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxXQUFXLEtBQUcsQ0FBQztBQUFFLHNCQUFHLE1BQUksU0FBTyxNQUFJO0FBQU0sNEJBQU8sS0FBRyxTQUFPLE9BQUssS0FBRyxRQUFNO0FBQUEsZ0JBQUs7QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUUscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sTUFBSSxRQUFNLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUcsRUFBRSxNQUFNLE9BQU8sS0FBRyxNQUFJLE1BQUksT0FBTyxHQUFFLE1BQUk7QUFBTSx1QkFBTyxPQUFPLGFBQWEsRUFBRTtBQUFFLGtCQUFJLEtBQUcsS0FBSyxPQUFPLEtBQUcsU0FBTyxJQUFJLElBQUUsT0FBTSxNQUFJLEtBQUcsU0FBTyxPQUFLO0FBQU0scUJBQU8sT0FBTyxhQUFhLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxnQkFBSSxLQUFHLE9BQU8sZ0JBQWMsU0FBUyxJQUFHO0FBQUMscUJBQU8sT0FBTyxjQUFjLEVBQUU7QUFBQSxZQUFDLElBQUU7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBQSxVQUFFLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLHFCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUcsRUFBRSxpQkFBaUIsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLCtCQUE2QjtBQUFFLHFCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsbUJBQW1CLElBQUcsRUFBRSxrQkFBa0I7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQ0FBOEI7QUFBRSxxQkFBUyxFQUFFLElBQUc7QUFBQyxzQkFBTyxFQUFFLG9CQUFvQixFQUFFO0FBQUEscUJBQVE7QUFBRyx5QkFBTTtBQUFBLHFCQUE0QjtBQUFFLHlCQUFNO0FBQUEscUJBQTRCO0FBQUUseUJBQU07QUFBQSxxQkFBNEI7QUFBRSx5QkFBTTtBQUFBLHFCQUE0QjtBQUFFLHlCQUFNO0FBQUEscUJBQTRCO0FBQUUseUJBQU07QUFBQSxxQkFBNEI7QUFBRSx5QkFBTTtBQUFBLHFCQUE0QjtBQUFFLHlCQUFNO0FBQUEscUJBQTRCO0FBQUUseUJBQU07QUFBQTtBQUF1Qix5QkFBTTtBQUFBO0FBQUEsWUFBVztBQUFDLGNBQUUsd0JBQXNCO0FBQUUscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxRQUFNLEdBQUc7QUFBQSxZQUFNO0FBQUMsY0FBRSxjQUFZO0FBQUUscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxXQUFTO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUUscUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyxxQkFBTyxNQUFJLEdBQUcsU0FBTyxLQUFHLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDJCQUF5QjtBQUFFLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sTUFBSSxHQUFHLE9BQUssTUFBSSxHQUFHO0FBQUEsWUFBRztBQUFDLGNBQUUscUNBQW1DO0FBQUcscUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU8sR0FBRyxTQUFPLEVBQUUsRUFBRSxLQUFHLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDJCQUF5QjtBQUFFLHFCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxJQUFHLEVBQUUsTUFBSTtBQUFBLFlBQU07QUFBQyxjQUFFLHVCQUFxQjtBQUFFLHFCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxFQUFFLElBQUcsRUFBRTtBQUFFLHFCQUFPLE1BQUksR0FBRyxXQUFTLElBQUUsU0FBTztBQUFBLFlBQUU7QUFBQyxjQUFFLGtCQUFnQjtBQUFFLHFCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFHLE9BQU0sR0FBRyxRQUFPLEdBQUcsT0FBTSxHQUFHLE1BQU07QUFBQSxZQUFDO0FBQUMsY0FBRSxpQ0FBK0I7QUFBRSxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFHLE9BQU0sR0FBRyxRQUFPLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEVBQUUsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsS0FBRyxJQUFHLEtBQUcsS0FBRztBQUFHLHFCQUFPLE1BQUksTUFBSSxNQUFJO0FBQUEsWUFBRTtBQUFDLGNBQUUsZ0NBQThCO0FBQUUscUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyxxQkFBTyxNQUFJLEVBQUUsRUFBRSxLQUFHLE1BQUksR0FBRztBQUFBLFlBQUs7QUFBQyxjQUFFLGlDQUErQjtBQUFFLHFCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxLQUFLLElBQUksR0FBRyxPQUFNLEdBQUcsS0FBSyxHQUFFLEtBQUcsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUUscUJBQU8sTUFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLElBQUU7QUFBQSxZQUFNO0FBQUMsY0FBRSx1QkFBcUI7QUFBRSxxQkFBUyxFQUFFLElBQUcsSUFBRztBQUFDLGtCQUFHLEtBQUc7QUFBRSxzQkFBTSxJQUFJLE1BQU0sV0FBVztBQUFFLGtCQUFHLEtBQUc7QUFBRSxzQkFBTSxJQUFJLE1BQU0sWUFBWTtBQUFFLHFCQUFNLEVBQUMsT0FBTSxJQUFHLFFBQU8sR0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGlCQUFlO0FBQUUscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFHLEtBQUssT0FBTSxHQUFHLFNBQVM7QUFBQSxZQUFDO0FBQUMsY0FBRSx5QkFBdUI7QUFBRSxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLEdBQUcsSUFBSSxLQUFHLEdBQUcsY0FBWTtBQUFBLFlBQUM7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMsa0JBQUcsS0FBRztBQUFFLHNCQUFNLElBQUksTUFBTSxlQUFlO0FBQUUscUJBQU0sRUFBQyxNQUFLLElBQUcsV0FBVSxHQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCLEdBQUUsRUFBRSwyQkFBeUIsRUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUM7QUFBRSxxQkFBUyxFQUFFLElBQUc7QUFBQyxrQkFBRyxHQUFHLFdBQVM7QUFBRSx1QkFBTyxFQUFFO0FBQXlCLGtCQUFHLEdBQUcsV0FBUztBQUFFLHVCQUFPLEdBQUc7QUFBRyx1QkFBUSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsS0FBSyxPQUFNLEtBQUcsRUFBRSxHQUFHLElBQUksR0FBRSxLQUFHLEtBQUcsR0FBRyxXQUFVLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxHQUFHLEtBQUssT0FBTSxLQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUUsS0FBRyxLQUFHLEdBQUc7QUFBVSxxQkFBRyxLQUFLLElBQUksSUFBRyxFQUFFLEdBQUUsS0FBRyxLQUFLLElBQUksSUFBRyxNQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsS0FBSyxJQUFJLElBQUcsTUFBSSxLQUFHLEdBQUc7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGlEQUErQztBQUFFLHFCQUFTLEVBQUUsSUFBRztBQUFDLGtCQUFHLE1BQUksR0FBRyxTQUFPLEtBQUk7QUFBQyx5QkFBUSxLQUFHLElBQUcsSUFBRyxLQUFHLEdBQUc7QUFBTyxzQkFBRyxHQUFHLEVBQUUsS0FBRyxHQUFHLEVBQUUsS0FBRyxHQUFHLFNBQU87QUFBSSwyQkFBTztBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0I7QUFBRSxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUscUJBQXFCLElBQUcsS0FBSyxLQUFHLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLGlDQUErQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxJQUFFLEVBQUUsTUFBTSxHQUFHLFVBQVMsRUFBRSxJQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFFLE9BQUcsR0FBRyxHQUFHLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBUSxLQUFHLEdBQUcsUUFBTyxFQUFFLGlCQUFpQixHQUFHLE1BQU07QUFBRyxxQkFBRyxHQUFHLE9BQU87QUFBTyxxQkFBTyxHQUFHO0FBQUEsWUFBTTtBQUFDLGNBQUUsbUNBQWlDO0FBQUUscUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyxnQkFBRSxpQkFBaUIsRUFBRSxNQUFJLEtBQUcsRUFBRSxFQUFFO0FBQUcsa0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxxQkFBTyxHQUFHLFNBQU8sUUFBTSxLQUFHLEdBQUcsU0FBUSxNQUFJLEdBQUcsU0FBTyxRQUFNLE1BQUksR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLFNBQVEsTUFBSSxHQUFHLFNBQU8sUUFBTSxNQUFJLEdBQUcsRUFBRSxJQUFHO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsSUFBRyxFQUFFLHlCQUF5QjtBQUFBLFlBQUM7QUFBQyxjQUFFLDJCQUF5QjtBQUFFLHFCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsSUFBRyxFQUFFLDJDQUEyQztBQUFBLFlBQUM7QUFBQyxjQUFFLHlDQUF1QztBQUFFLHFCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsSUFBRyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHO0FBQUEsY0FBSyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsdUJBQXFCLEdBQUUsRUFBRSw2QkFBMkIsQ0FBQyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssU0FBUSxNQUFLLE1BQUssU0FBUSxPQUFPO0FBQUUscUJBQVMsRUFBRSxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxZQUFZLEdBQUUsS0FBRyw2QkFBNkIsS0FBSyxFQUFFO0FBQUUsa0JBQUcsQ0FBQyxJQUFHO0FBQUMsc0JBQUksR0FBRyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsWUFBWSw4RUFBNkUsTUFBSyxPQUFPLENBQUM7QUFBRTtBQUFBLGNBQU07QUFBQyxrQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyxnQkFBRSxTQUFTLEVBQUUsNEJBQTJCLEVBQUUsS0FBRyxDQUFDLEdBQUcsSUFBRyxJQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsUUFBTyxFQUFFLEdBQUUsRUFBRSxZQUFZLEVBQUU7QUFBRSx1QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFFLEtBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFFLEtBQUcsRUFBRSxhQUFhLElBQUcsRUFBRTtBQUFFLG9CQUFHLE9BQUssS0FBRyxLQUFHLE1BQUksS0FBSSxLQUFHLEdBQUcsWUFBWSxFQUFFLGFBQWEsSUFBRyxtQ0FBbUMsQ0FBQyxHQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7QUFBRSx5QkFBTTtBQUFHLG9CQUFJLEtBQUc7QUFBRyxvQkFBRztBQUFDLHVCQUFHLEdBQUcsU0FBUyxFQUFFO0FBQUEsZ0JBQUMsUUFBQztBQUFNLHlCQUFPLE1BQUksR0FBRyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsWUFBWSx1QkFBc0IsRUFBRSxDQUFDLEdBQUU7QUFBQSxnQkFBRTtBQUFDLG9CQUFHO0FBQUMsb0JBQUUsK0JBQStCLEtBQUssTUFBTSxFQUFFLENBQUM7QUFBQSxnQkFBQyxRQUFDO0FBQU0seUJBQU8sTUFBSSxHQUFHLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxZQUFZLHlCQUF3QixFQUFFLENBQUMsR0FBRTtBQUFBLGdCQUFFO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUUscUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyxrQkFBRztBQUFHLHVCQUFLLEdBQUcsYUFBVztBQUFRLHVCQUFHLEdBQUc7QUFBUyxxQkFBTSxDQUFDLE1BQUksR0FBRyxFQUFFLElBQUUsS0FBRztBQUFBLFlBQU07QUFBQyxjQUFFLGtCQUFnQjtBQUFFLHFCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMscUJBQUssTUFBSTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsb0JBQUcsT0FBSztBQUFPO0FBQU8sb0JBQUc7QUFBRyx5QkFBTztBQUFHLHFCQUFHLEdBQUc7QUFBQSxjQUFNO0FBQUEsWUFBQztBQUFDLGNBQUUsZUFBYTtBQUFFLHFCQUFTLEVBQUUsSUFBRztBQUFDLHNCQUFPLEdBQUcsUUFBTSxPQUFLO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUUscUJBQVMsRUFBRSxJQUFHLElBQUc7QUFBQyxrQkFBRyxPQUFLLFVBQVEsRUFBRSxFQUFFO0FBQUUsdUJBQU87QUFBRyxtQkFBSSxLQUFHLEdBQUcsVUFBUyxNQUFJO0FBQUMsb0JBQUcsRUFBRSxFQUFFO0FBQUUseUJBQU0sQ0FBQyxNQUFJLEdBQUcsRUFBRSxJQUFFLEtBQUc7QUFBTyxxQkFBRyxHQUFHO0FBQUEsY0FBUTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQjtBQUFFLHFCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFPLEdBQUcsVUFBUSxLQUFHLEdBQUcsV0FBVyxDQUFDLE1BQUksTUFBSSxHQUFHLFdBQVcsQ0FBQyxNQUFJLEtBQUcsTUFBSSxLQUFHO0FBQUEsWUFBRTtBQUFDLGNBQUUsMkJBQXlCO0FBQUUscUJBQVMsRUFBRSxJQUFHO0FBQUMsa0JBQUksS0FBRztBQUFHLHFCQUFPLEdBQUcsVUFBUSxLQUFHLEdBQUcsV0FBVyxDQUFDLE1BQUksTUFBSSxHQUFHLFdBQVcsQ0FBQyxNQUFJLE1BQUksR0FBRyxXQUFXLENBQUMsTUFBSSxLQUFHLEdBQUcsT0FBTyxDQUFDLElBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSw2QkFBMkI7QUFBRSxxQkFBUyxFQUFFLElBQUc7QUFBQyxxQkFBTyxFQUFFLEdBQUcsV0FBVztBQUFBLFlBQUM7QUFBQyxjQUFFLFNBQU87QUFBRSxxQkFBUyxFQUFFLElBQUc7QUFBQyxxQkFBTyxHQUFHLG9CQUFrQixHQUFHLEdBQUcsZ0JBQWdCLElBQUUsRUFBRSxHQUFHLGlCQUFpQixJQUFJLElBQUUsRUFBRSxHQUFHLFdBQVc7QUFBQSxZQUFDO0FBQUMsY0FBRSxhQUFXO0FBQUUscUJBQVMsRUFBRSxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLE9BQU87QUFBTyxrQkFBRyxDQUFDLENBQUMsSUFBRztBQUFDLG9CQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFPLEVBQUUsRUFBRTtBQUFFLHdCQUFPLEdBQUc7QUFBQSx1QkFBVztBQUFJLHdCQUFHLEdBQUcsbUJBQWlCLEdBQUcsZ0JBQWdCLGFBQWE7QUFBRyw2QkFBTyxFQUFFLEdBQUcsZ0JBQWdCLGFBQWEsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBSSx3QkFBSSxLQUFHLEdBQUc7QUFBVyw0QkFBTyxHQUFHLFNBQU8sT0FBSyxHQUFHLGNBQWMsU0FBTyxPQUFLLEtBQUcsR0FBRyxPQUFNLEdBQUc7QUFBQSwyQkFBVztBQUFJLCtCQUFPLEdBQUc7QUFBQSwyQkFBVTtBQUFJLDRCQUFJLEtBQUcsR0FBRztBQUFtQiw0QkFBRyxFQUFFLGFBQWEsRUFBRTtBQUFFLGlDQUFPO0FBQUE7QUFBRztBQUFBLHVCQUFXO0FBQUksMkJBQU8sRUFBRSxHQUFHLFVBQVU7QUFBQSx1QkFBTyxLQUFJO0FBQUMsd0JBQUcsR0FBRyxHQUFHLFNBQVMsS0FBRyxHQUFHLEdBQUcsU0FBUztBQUFFLDZCQUFPLEVBQUUsR0FBRyxTQUFTO0FBQUU7QUFBQSxrQkFBSztBQUFBO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHFCQUFPLE1BQUksRUFBRSxhQUFhLEVBQUUsSUFBRSxLQUFHO0FBQUEsWUFBTTtBQUFDLHFCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFHLEVBQUUsYUFBYSxHQUFHLElBQUksS0FBRyxFQUFFLEdBQUcsSUFBSSxNQUFJLEVBQUUsRUFBRSxLQUFHLEVBQUUsb0JBQW9CLEVBQUUsS0FBRyxFQUFFLEtBQUssR0FBRyxnQkFBZ0IsY0FBYSxTQUFTLElBQUc7QUFBQyx1QkFBTyxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUU7QUFBQyxjQUFFLGNBQVk7QUFBRSxxQkFBUyxFQUFFLElBQUc7QUFBQyxxQkFBTyxHQUFHLFFBQU0sRUFBRSxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUUscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxDQUFDLEdBQUc7QUFBQSxZQUFJO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxFQUFFLElBQUc7QUFBQyxzQkFBTyxHQUFHO0FBQUEscUJBQVc7QUFBRyx5QkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVMsS0FBSTtBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFLLHNCQUFHLEdBQUcsU0FBTztBQUFJLDJCQUFPLEdBQUc7QUFBTTtBQUFBLGdCQUFLO0FBQUEscUJBQU07QUFBQSxxQkFBUyxLQUFJO0FBQUMsc0JBQUksS0FBRztBQUFHLDBCQUFPLEVBQUUsNkJBQTZCLEVBQUU7QUFBQSx5QkFBUTtBQUFBLHlCQUFPO0FBQUEseUJBQU87QUFBQSx5QkFBTztBQUFFLDZCQUFPLEVBQUUsbURBQW1ELEdBQUcsSUFBSTtBQUFBLHlCQUFPO0FBQUEseUJBQU87QUFBQSx5QkFBTztBQUFFLDZCQUFPLEdBQUcsVUFBVTtBQUFBO0FBQVc7QUFBQTtBQUFBLGdCQUFPO0FBQUEscUJBQU07QUFBSSx5QkFBTyxFQUFFLEVBQUU7QUFBQSxxQkFBTztBQUFJLHlCQUFPLEVBQUUsRUFBRTtBQUFBLHFCQUFPLEtBQUk7QUFBQyxzQkFBSSxLQUFHLEdBQUc7QUFBVyx5QkFBTyxFQUFFLGFBQWEsRUFBRSxJQUFFLEtBQUc7QUFBQSxnQkFBTTtBQUFBLHFCQUFNO0FBQUksc0JBQUksS0FBRztBQUFHLHNCQUFHLEVBQUUsd0NBQXdDLEVBQUU7QUFBRSwyQkFBTyxHQUFHO0FBQUE7QUFBbUIscUJBQU8sR0FBRztBQUFBLFlBQUk7QUFBQyxjQUFFLGtDQUFnQztBQUFFLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFHLE9BQUs7QUFBTyx1QkFBTyxFQUFFLEVBQUUsTUFBSSxFQUFFLHFCQUFxQixFQUFFLEtBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFHLEVBQUUsa0JBQWtCLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRTtBQUFBLFlBQU87QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFHLEdBQUcsUUFBTztBQUFDLG9CQUFHLEVBQUUscUJBQXFCLEdBQUcsTUFBTSxLQUFHLEVBQUUsaUJBQWlCLEdBQUcsTUFBTTtBQUFFLHlCQUFPLEdBQUcsT0FBTztBQUFLLG9CQUFHLEVBQUUsbUJBQW1CLEdBQUcsTUFBTSxLQUFHLE9BQUssR0FBRyxPQUFPLE9BQU07QUFBQyxzQkFBRyxFQUFFLGFBQWEsR0FBRyxPQUFPLElBQUk7QUFBRSwyQkFBTyxHQUFHLE9BQU87QUFBSyxzQkFBRyxFQUFFLG1CQUFtQixHQUFHLE9BQU8sSUFBSTtBQUFFLDJCQUFPLEVBQUUsbURBQW1ELEdBQUcsT0FBTyxJQUFJO0FBQUEsZ0JBQUMsV0FBUyxFQUFFLHNCQUFzQixHQUFHLE1BQU0sS0FBRyxFQUFFLGFBQWEsR0FBRyxPQUFPLElBQUk7QUFBRSx5QkFBTyxHQUFHLE9BQU87QUFBQSxjQUFJO0FBQU07QUFBQSxZQUFNO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLEdBQUc7QUFBSyxvQkFBRyxFQUFFLGFBQWEsR0FBRyxJQUFJLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEdBQUcsS0FBSztBQUFZLHlCQUFPLEdBQUcsR0FBRyxRQUFPLEVBQUUsRUFBRSxPQUFPLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBRyxFQUFFLGFBQWEsR0FBRyxJQUFJLEtBQUcsR0FBRyxLQUFLLGdCQUFjO0FBQUEsa0JBQUUsQ0FBQztBQUFBLGdCQUFDLE9BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUcsT0FBTyxXQUFXLFFBQVEsRUFBRTtBQUFFLG9CQUFFLE1BQU0sT0FBTyxLQUFHLElBQUcsOERBQThEO0FBQUUsc0JBQUksS0FBRyxHQUFHLEdBQUcsUUFBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQjtBQUFFLHNCQUFHLEtBQUcsR0FBRztBQUFPLDJCQUFNLENBQUMsR0FBRyxHQUFHO0FBQUEsZ0JBQUM7QUFBQyxxQkFBTyxFQUFFO0FBQUEsWUFBVTtBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxLQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSwrQkFBNkI7QUFBRSxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxLQUFLO0FBQVkscUJBQU8sR0FBRyxHQUFHLFFBQU8sRUFBRSxFQUFFLE9BQU8sU0FBUyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxtQkFBbUIsRUFBRSxLQUFHLEdBQUcsZUFBZSxLQUFLLFNBQVMsSUFBRztBQUFDLHlCQUFPLEdBQUcsS0FBSyxnQkFBYztBQUFBLGdCQUFFLENBQUM7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEtBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSw0QkFBMEI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsSUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1DQUFpQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFNLENBQUMsQ0FBQyxHQUFHLElBQUcsRUFBRSxtQkFBbUI7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxrQkFBa0I7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxvQkFBb0I7QUFBQSxZQUFDO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxlQUFlO0FBQUEsWUFBQztBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsZ0JBQWdCO0FBQUEsWUFBQztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsa0JBQWlCLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxpQkFBaUI7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxtQkFBa0IsSUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxFQUFFLG1CQUFtQjtBQUFBLFlBQUM7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxFQUFFLHFCQUFvQixJQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsOEJBQTRCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsa0JBQWtCO0FBQUEsWUFBQztBQUFDLGNBQUUsc0JBQW9CO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsb0JBQW1CLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSw2QkFBMkI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxvQkFBbUIsSUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxFQUFFLG9CQUFvQjtBQUFBLFlBQUM7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxFQUFFLHNCQUFxQixJQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsY0FBYztBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxFQUFFLGNBQWM7QUFBQSxZQUFDO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxFQUFFLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxnQkFBZ0I7QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRSxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxrQkFBa0I7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLGNBQWM7QUFBRSxrQkFBRyxNQUFJLEdBQUcsa0JBQWdCLEdBQUcsZUFBZTtBQUFLLHVCQUFPO0FBQUEsWUFBRTtBQUFDLGNBQUUsa0JBQWdCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxjQUFjO0FBQUUscUJBQU0sQ0FBQyxNQUFJLEVBQUUsWUFBWSxFQUFFLE1BQUksS0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEdBQUUsU0FBUyxJQUFHO0FBQUMsdUJBQU0sQ0FBQyxDQUFDLEdBQUc7QUFBQSxjQUFjLENBQUMsSUFBRyxNQUFJLEdBQUcsa0JBQWdCLEdBQUcsZUFBZTtBQUFBLFlBQUk7QUFBQyxjQUFFLGVBQWE7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsRUFBRTtBQUFFLGtCQUFHLE1BQUksR0FBRztBQUFlLHVCQUFPLEdBQUcsZUFBZTtBQUFLLGtCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsa0JBQUcsTUFBSSxHQUFHLGdCQUFlO0FBQUMsb0JBQUksS0FBRyxHQUFHLGVBQWU7QUFBSyxvQkFBRyxFQUFFLGtCQUFrQixFQUFFLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEVBQUUsS0FBSyxHQUFHLFNBQVEsRUFBRSwwQkFBMEI7QUFBRSx5QkFBTyxNQUFJLEdBQUc7QUFBQSxnQkFBSTtBQUFDLG9CQUFHLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxFQUFFLG9CQUFvQixFQUFFO0FBQUUseUJBQU8sR0FBRztBQUFBLGNBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFXLGtCQUFHLE9BQUssVUFBUSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLHdCQUF3QixJQUFHLEVBQUU7QUFBRSxrQkFBRSxNQUFNLE9BQU8sR0FBRyxTQUFPLEtBQUcsR0FBRyxPQUFLLEdBQUcsRUFBRSxHQUFFLEtBQUcsRUFBRSxRQUFRLElBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxRQUFRLEVBQUUsSUFBRSxHQUFHLE9BQUs7QUFBQSxnQkFBRSxDQUFDLEdBQUUsT0FBSyxHQUFHLGFBQVc7QUFBQSxjQUFHO0FBQUMscUJBQU87QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEtBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxLQUFLLEdBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxFQUFFLEVBQUUsT0FBTyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLFNBQU87QUFBQSxjQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxPQUFPLE1BQUksV0FBUyxLQUFHLE1BQUksT0FBSyxTQUFPLEdBQUcsSUFBSSxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLFNBQU8sTUFBSSxHQUFHLE9BQUssR0FBRyxFQUFFO0FBQUEsY0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLFNBQU8sTUFBSSxTQUFPLEdBQUcsU0FBTyxNQUFJLGFBQVcsYUFBWSxLQUFHLEdBQUcsT0FBSyxFQUFFLG1CQUFtQixHQUFHLElBQUksSUFBRSxJQUFHLEtBQUcsR0FBRyxRQUFNLEdBQUcsS0FBSyxXQUFXLEtBQUssSUFBRSxLQUFHO0FBQUkscUJBQU0sS0FBSyxPQUFPLElBQUcsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sR0FBRyxNQUFLLEdBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUcsRUFBRSxpQkFBaUIsRUFBRTtBQUFFLHVCQUFPLEVBQUU7QUFBVyxrQkFBRyxFQUFFLGlCQUFpQixFQUFFO0FBQUUsdUJBQU8sRUFBRSxNQUFNLE9BQU8sR0FBRyxPQUFPLFNBQU8sR0FBRyxHQUFFLEVBQUUsUUFBUSxHQUFHLE9BQU8sTUFBSyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLG1CQUFtQixFQUFFLElBQUUsR0FBRyxpQkFBZTtBQUFBLGdCQUFNLENBQUM7QUFBRSxrQkFBRyxHQUFHO0FBQWUsdUJBQU8sR0FBRztBQUFlLGtCQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsa0NBQWtDLEVBQUU7QUFBRSxvQkFBRyxHQUFHO0FBQU8seUJBQU87QUFBRyxvQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLG9CQUFHLE1BQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFHLEdBQUc7QUFBZSx5QkFBTyxHQUFHO0FBQUEsY0FBYztBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFVO0FBQUMsY0FBRSx3Q0FBc0M7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLGFBQVcsR0FBRyxhQUFXLEVBQUUsbUJBQW1CLEdBQUcsTUFBTSxLQUFHLE9BQUssR0FBRyxPQUFPLGVBQWUsS0FBRyxHQUFHLE9BQU8sYUFBVztBQUFBLFlBQU07QUFBQyxjQUFFLHdDQUFzQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxNQUFJLEdBQUcsU0FBTztBQUFBLFlBQUU7QUFBQyxjQUFFLGVBQWE7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxnQ0FBOEI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLDJCQUEyQixFQUFFLEtBQUcsQ0FBQyxFQUFFLEdBQUcsUUFBTTtBQUFBLFlBQUc7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsMEJBQTBCLEVBQUUsS0FBRyxDQUFDLEVBQUUsR0FBRyxRQUFNO0FBQUEsWUFBRztBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFHLENBQUMsRUFBRSxHQUFHLFFBQU07QUFBQSxZQUFHO0FBQUMsY0FBRSxjQUFZO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU0sQ0FBQyxFQUFFLEdBQUcsUUFBTSxRQUFNLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUs7QUFBQSxZQUFJO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEVBQUUsS0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBRyxDQUFDLENBQUMsR0FBRztBQUFBLFlBQWdCO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEdBQUcsTUFBTSxLQUFHLEdBQUcsT0FBTyxlQUFhO0FBQUEsWUFBRTtBQUFDLGNBQUUsa0NBQWdDO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxLQUFHLEdBQUcsR0FBRyxNQUFNLEtBQUcsT0FBSyxHQUFHLE9BQU87QUFBQSxZQUFVO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU8sT0FBSyxHQUFHLGNBQWMsU0FBTztBQUFBLFlBQUU7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBRyxFQUFFLGFBQWEsR0FBRyxRQUFRLEtBQUcsR0FBRyxTQUFTLGdCQUFjLFdBQVMsQ0FBQyxHQUFHO0FBQUEsWUFBYTtBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxxQkFBcUIsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsa0NBQWdDO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFHLENBQUMsRUFBRSxHQUFHLFFBQU07QUFBQSxZQUFHO0FBQUMsY0FBRSxpQkFBZTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUkseUJBQU07QUFBQTtBQUFXLHlCQUFNO0FBQUE7QUFBQSxZQUFHO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEVBQUUsS0FBRyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxpQkFBZTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsR0FBRyxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsU0FBTztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE1BQUk7QUFBQSxZQUFHO0FBQUMsY0FBRSxhQUFXO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sTUFBSSxLQUFHLE1BQUk7QUFBQSxZQUFHO0FBQUMsY0FBRSxjQUFZO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxHQUFHLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxVQUFRO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxlQUFlLEtBQUssS0FBRyxHQUFHLGVBQWUsS0FBSztBQUFBLFlBQUM7QUFBQyxjQUFFLGNBQVk7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxLQUFHLE1BQUksTUFBSTtBQUFBLFlBQUU7QUFBQyxjQUFFLGdCQUFjO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxHQUFHLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxNQUFJLE1BQUksTUFBSTtBQUFBLFlBQUU7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsR0FBRyxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU8sT0FBSyxNQUFJLE9BQUs7QUFBQSxZQUFFO0FBQUMsY0FBRSxpQ0FBK0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLGtCQUFrQixFQUFFLEtBQUcsRUFBRSxrQkFBa0IsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUkseUJBQU8sR0FBRyxjQUFZLEdBQUcsT0FBTyxPQUFPO0FBQUEscUJBQWdCO0FBQUkseUJBQU8sR0FBRyxPQUFPO0FBQUEscUJBQWdCO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxHQUFHO0FBQUE7QUFBbUIseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLHNDQUFvQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBRyxFQUFFLGFBQWEsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGlCQUFlO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPLE1BQUksR0FBRyxHQUFHLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSw2QkFBMkI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLGFBQWEsRUFBRSxNQUFJLEdBQUcsb0JBQWtCLEtBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxzQkFBTyxFQUFFLHNCQUFzQixFQUFFLEtBQUcsR0FBRyxFQUFFLE1BQUksRUFBRSxvQkFBb0IsR0FBRyxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsNkNBQTJDO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSwyQkFBMkIsRUFBRSxLQUFHLEVBQUUsb0JBQW9CLEdBQUcsSUFBSTtBQUFBLFlBQUM7QUFBQyxjQUFFLDhDQUE0QztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBRyxxQkFBTTtBQUFBLFlBQUU7QUFBQyxjQUFFLGlCQUFlO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUU7QUFBQSxZQUFNO0FBQUMsY0FBRSw4QkFBNEI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEVBQUUsS0FBRyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsR0FBRyxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsYUFBVztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRTtBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxNQUFJLE9BQUssS0FBRyxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBSyxxQkFBTyxPQUFLLE1BQUksT0FBSyxPQUFLLE9BQUs7QUFBQSxZQUFHO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFNLENBQUMsQ0FBQyxNQUFJLEdBQUcsR0FBRyxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTSxDQUFDLENBQUMsT0FBSyxHQUFHLEdBQUcsSUFBSSxLQUFHLEVBQUUsOEJBQThCLEVBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSw4Q0FBNEM7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxNQUFJLEdBQUcsR0FBRyxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUEsWUFBRTtBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTyxHQUFHLEVBQUU7QUFBQTtBQUFBLFlBQUU7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUcsRUFBRSxjQUFjLEVBQUUsS0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFHLEdBQUcsR0FBRyxNQUFNO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU8sT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUs7QUFBQSxZQUFHO0FBQUMsY0FBRSxpQkFBZTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUEsWUFBSTtBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUEsWUFBSTtBQUFDLGNBQUUsYUFBVztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUs7QUFBQSxZQUFHO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsZUFBZSxHQUFHLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxhQUFXO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU8sR0FBRztBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHO0FBQUssdUJBQU8sT0FBSyxPQUFLLE9BQUs7QUFBQSxjQUFHO0FBQUMscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBSyxxQkFBTyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU8sR0FBRztBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBRyxxQkFBTTtBQUFBLFlBQUU7QUFBQyxjQUFFLDhCQUE0QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUkseUJBQU07QUFBQTtBQUFHLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUscUNBQW1DO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU8sR0FBRztBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU07QUFBQTtBQUFHLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUscUNBQW1DO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU8sR0FBRztBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxvQ0FBa0M7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBSyxxQkFBTyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUs7QUFBQSxZQUFHO0FBQUMsY0FBRSxrREFBZ0Q7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBSyxxQkFBTyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLGtDQUFnQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRTtBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxHQUFHLEVBQUUsRUFBRSxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQU87QUFBQSxxQkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFBLHFCQUFRO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxzQkFBTztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU07QUFBQTtBQUFXLHlCQUFPLEdBQUcsRUFBRTtBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFJLHlCQUFNO0FBQUEscUJBQVE7QUFBSSx5QkFBTyxHQUFHLGFBQVcsTUFBSSxHQUFHLGFBQVc7QUFBQTtBQUFXLHlCQUFNO0FBQUE7QUFBQSxZQUFHO0FBQUMsY0FBRSw2QkFBMkI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQVcseUJBQU8sR0FBRyxFQUFFO0FBQUE7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU8sT0FBSyxPQUFLLE9BQUs7QUFBQSxZQUFHO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLHNCQUFzQixFQUFFLEtBQUcsRUFBRSw2QkFBNkIsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHFDQUFtQztBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQU8sR0FBRztBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBLHFCQUFRO0FBQUkseUJBQU8sTUFBSSxHQUFHLEdBQUcsV0FBVSxFQUFFO0FBQUE7QUFBRSxxQkFBTTtBQUFBLFlBQUU7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxFQUFFLG9CQUFvQixFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLEtBQUssSUFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTSxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsS0FBRyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxDQUFDLEVBQUUscUJBQXFCLElBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRSxnQkFBZ0IsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsc0JBQXNCLEVBQUUsS0FBRyxFQUFFLG1CQUFtQixFQUFFLEtBQUcsRUFBRSxxQkFBcUIsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxRQUFRLEVBQUUsS0FBRyxHQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsUUFBUSxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLDBCQUEwQixFQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU8sT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRTtBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUsa0JBQWdCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU8sT0FBSyxNQUFJLE9BQUs7QUFBQSxZQUFHO0FBQUMsY0FBRSx1QkFBcUI7QUFBRyxxQkFBUyxFQUFFLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBSyxxQkFBTyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLHdCQUFzQjtBQUFFLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUs7QUFBQSxZQUFHO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPLE1BQUksR0FBRyxVQUFRLEdBQUcsT0FBTyxTQUFPLE9BQUssRUFBRSxXQUFXLEVBQUUsSUFBRSxHQUFHLEdBQUcsSUFBSTtBQUFBLFlBQUM7QUFBQyxjQUFFLGdCQUFjO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxHQUFHLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEdBQUcsSUFBSTtBQUFBLFlBQUM7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLEdBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGNBQVk7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU8sT0FBSyxHQUFHLFdBQVMsV0FBUyxHQUFHLE9BQU8sU0FBTyxPQUFLLEdBQUcsT0FBTyxTQUFPLE9BQUssUUFBRyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU8sR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFLEtBQUcsT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUU7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLLE1BQUksT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssTUFBSSxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUsYUFBVztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQUsscUJBQU8sT0FBSyxNQUFJLE9BQUs7QUFBQSxZQUFHO0FBQUMsY0FBRSxpQ0FBK0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBSyxxQkFBTyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxRQUFNLE9BQUssR0FBRyxRQUFNO0FBQUEsWUFBRztBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxPQUFLLEdBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRSxLQUFHLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxFQUFFLGlCQUFpQixFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxRQUFNLE9BQUssR0FBRyxRQUFNO0FBQUEsWUFBRztBQUFDLGNBQUUsYUFBVztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLGdCQUFjO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBTSxxQkFBTSxDQUFDLENBQUMsTUFBSSxHQUFHLFNBQU87QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFNLENBQUMsQ0FBQyxHQUFHO0FBQUEsWUFBSTtBQUFDLGNBQUUsVUFBUTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFNLENBQUMsQ0FBQyxHQUFHO0FBQUEsWUFBVztBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxzQkFBTyxHQUFHO0FBQUEscUJBQVc7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxPQUFLLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLGdCQUFJLEtBQUc7QUFBVyxxQkFBUyxHQUFHLElBQUc7QUFBQyx1QkFBUSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHO0FBQUksb0JBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBTztBQUFDLDJCQUFRLEtBQUcsR0FBRSxLQUFHLEdBQUcsVUFBUSxLQUFHLE1BQUksRUFBRSxpQkFBaUIsR0FBRyxXQUFXLEVBQUUsQ0FBQyxHQUFFO0FBQUs7QUFBQyxzQkFBRyxLQUFHLE9BQUssS0FBRyxLQUFJLE9BQUs7QUFBRSwyQkFBTztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLE9BQUssS0FBRyxTQUFPO0FBQUEsWUFBRTtBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPLE1BQUksR0FBRyxTQUFPO0FBQUEsWUFBRTtBQUFDLGNBQUUsc0JBQW9CO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsa0JBQWdCO0FBQUEsVUFBRSxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxjQUFFLHNCQUFvQixDQUFDLEdBQUUsRUFBRSxnQ0FBOEIsU0FBUSxFQUFFLGlDQUErQixLQUFJLEVBQUUsc0NBQW9DO0FBQUkscUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUU7QUFBYSxrQkFBRztBQUFHLHlCQUFRLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFJLHNCQUFHLEdBQUcsU0FBTztBQUFHLDJCQUFPO0FBQUEsZ0JBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSx1QkFBcUI7QUFBRSxxQkFBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFjLEVBQUUsWUFBVyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLFNBQU87QUFBQSxjQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0I7QUFBRSxxQkFBUyxFQUFFLEdBQUU7QUFBQyxrQkFBSSxLQUFHLElBQUksRUFBRTtBQUFJLGtCQUFHO0FBQUUseUJBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsc0JBQUksS0FBRyxHQUFHO0FBQUkscUJBQUcsSUFBSSxHQUFHLGFBQVksRUFBRTtBQUFBLGdCQUFDO0FBQUMscUJBQU87QUFBQSxZQUFFO0FBQUMsY0FBRSxvQkFBa0I7QUFBRSxxQkFBUyxFQUFFLEdBQUU7QUFBQyxzQkFBTyxFQUFFLFFBQU0sY0FBWTtBQUFBLFlBQUM7QUFBQyxjQUFFLG9CQUFrQjtBQUFFLGdCQUFJLElBQUUsRUFBRTtBQUFFLHFCQUFTLElBQUc7QUFBQyxrQkFBSSxJQUFFLElBQUcsS0FBRyxTQUFTLElBQUc7QUFBQyx1QkFBTyxLQUFHO0FBQUEsY0FBRTtBQUFFLHFCQUFNLEVBQUMsU0FBUSxXQUFVO0FBQUMsdUJBQU87QUFBQSxjQUFDLEdBQUUsT0FBTSxJQUFHLFVBQVMsSUFBRyxjQUFhLElBQUcsZUFBYyxJQUFHLGtCQUFpQixJQUFHLFlBQVcsSUFBRyxvQkFBbUIsSUFBRyxjQUFhLElBQUcsZ0JBQWUsSUFBRyxlQUFjLElBQUcsYUFBWSxTQUFTLElBQUcsSUFBRztBQUFDLHVCQUFPLEdBQUcsRUFBRTtBQUFBLGNBQUMsR0FBRSx3QkFBdUIsSUFBRyxjQUFhLElBQUcsWUFBVyxXQUFVO0FBQUMsdUJBQU8sRUFBRTtBQUFBLGNBQU0sR0FBRSxTQUFRLFdBQVU7QUFBQyx1QkFBTztBQUFBLGNBQUMsR0FBRSxXQUFVLFdBQVU7QUFBQyx1QkFBTztBQUFBLGNBQUMsR0FBRSxXQUFVLFdBQVU7QUFBQyx1QkFBTztBQUFBLGNBQUMsR0FBRSxpQkFBZ0IsV0FBVTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxHQUFFLG9CQUFtQixXQUFVO0FBQUMsdUJBQU07QUFBQSxjQUFFLEdBQUUsdUJBQXNCLFdBQVU7QUFBQyx1QkFBTSxDQUFDLENBQUMsRUFBRSxVQUFRLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFNBQU8sQ0FBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLFdBQVUsV0FBVTtBQUFDLHVCQUFPLEtBQUc7QUFBQSxjQUFHLEdBQUUsZ0JBQWUsRUFBRSxNQUFLLGdCQUFlLEVBQUUsTUFBSyxPQUFNLFdBQVU7QUFBQyx1QkFBTyxJQUFFO0FBQUEsY0FBRSxHQUFFLGFBQVksV0FBVTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxHQUFFLDZCQUE0QixFQUFFLE1BQUsscUNBQW9DLEVBQUUsTUFBSyxzQ0FBcUMsRUFBRSxLQUFJO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxtQkFBaUIsR0FBRyxrQkFBZ0IsRUFBRSxHQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQ0FBOEI7QUFBRyxxQkFBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsa0NBQWtDO0FBQUEsWUFBQztBQUFDLGNBQUUscUNBQW1DO0FBQUUscUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxxQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLGdDQUFnQztBQUFBLFlBQUM7QUFBQyxjQUFFLG1DQUFpQztBQUFFLHFCQUFTLEVBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyxxQkFBTyxNQUFJLE1BQUksR0FBRyxLQUFLLFNBQVMsSUFBRztBQUFDLHVCQUFNLENBQUMsR0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRSxxQkFBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHlCQUFPO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxvQkFBRyxPQUFLO0FBQU87QUFBTyxvQkFBRyxPQUFLO0FBQU8seUJBQU87QUFBRyxvQkFBRyxFQUFFLGFBQWEsQ0FBQztBQUFFO0FBQU8sb0JBQUUsRUFBRTtBQUFBLGNBQU07QUFBQSxZQUFDO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRSxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHVCQUFRLEtBQUcsRUFBRSxRQUFRLEdBQUUsS0FBRyxHQUFHLEtBQUssR0FBRSxDQUFDLEdBQUcsTUFBSyxLQUFHLEdBQUcsS0FBSyxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLE9BQU0sS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFLG9CQUFHO0FBQUcseUJBQU87QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQVEsS0FBRyxFQUFFLEtBQUssR0FBRSxLQUFHLEdBQUcsS0FBSyxHQUFFLENBQUMsR0FBRyxNQUFLLEtBQUcsR0FBRyxLQUFLLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRyxLQUFLO0FBQUUsb0JBQUc7QUFBRyx5QkFBTztBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxhQUFXO0FBQUUscUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxnQkFBRSxRQUFRLFNBQVMsSUFBRyxJQUFHO0FBQUMsbUJBQUcsSUFBSSxJQUFHLEVBQUU7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxjQUFZO0FBQUUscUJBQVMsRUFBRSxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFLFFBQVE7QUFBRSxrQkFBRztBQUFDLHVCQUFPLEVBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBUTtBQUFBLGNBQUMsVUFBQztBQUFRLGtCQUFFLE1BQU0sR0FBRSxFQUFFLGFBQWEsRUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSw4QkFBNEI7QUFBRSxxQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE1BQUksRUFBRTtBQUFBLFlBQUc7QUFBQyxjQUFFLGVBQWE7QUFBRSxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU8sS0FBRyxFQUFFLG1CQUFpQixFQUFFLGdCQUFnQixJQUFJLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEVBQUUsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLGdCQUFFLG9CQUFrQixFQUFFLGtCQUFnQixFQUFFLHFCQUFxQixJQUFHLEVBQUUsZ0JBQWdCLElBQUksSUFBRyxJQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRSxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMsZ0JBQUUsd0NBQXNDLEVBQUUsc0NBQW9DLEVBQUUscUJBQXFCLElBQUcsRUFBRSxvQ0FBb0MsSUFBSSxJQUFHLFFBQU8sRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG9DQUFrQztBQUFHLHFCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxTQUFPLEdBQUcsUUFBTSxDQUFDLEVBQUUsV0FBUyxDQUFDLEdBQUcsV0FBUyxDQUFDLEVBQUUsWUFBVSxDQUFDLEdBQUc7QUFBQSxZQUFRO0FBQUMsY0FBRSw0QkFBMEI7QUFBRSxxQkFBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsNEJBQTBCLEdBQUcsMkJBQXlCLEVBQUUsY0FBWSxHQUFHLGFBQVcsRUFBRSxxQkFBbUIsR0FBRyxvQkFBa0IsRUFBRSxpQkFBZSxHQUFHLGdCQUFjLEVBQUUsRUFBRSxXQUFVLEdBQUcsU0FBUztBQUFBLFlBQUM7QUFBQyxjQUFFLDRCQUEwQjtBQUFFLHFCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMscUJBQU8sTUFBSSxNQUFJLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxNQUFJLEVBQUUsU0FBTyxHQUFHLFFBQU0sRUFBRSxrQkFBZ0IsR0FBRyxpQkFBZSxFQUFFLFlBQVUsR0FBRztBQUFBLFlBQU87QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUUsTUFBSyxLQUFHLEVBQUU7QUFBYyxxQkFBTyxLQUFHLEdBQUcsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBRTtBQUFBLFlBQUU7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU87QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUscUJBQW1CLEdBQUcsb0JBQWtCLEVBQUUsWUFBVSxHQUFHLFdBQVMsRUFBRSxpQkFBZSxHQUFHO0FBQUEsWUFBWTtBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsRUFBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxnQkFBRSxNQUFNLE9BQU8sRUFBRSxXQUFTLEdBQUcsTUFBTTtBQUFFLHVCQUFRLEtBQUcsR0FBRSxLQUFHLEVBQUUsUUFBTyxNQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksS0FBRyxFQUFFLEtBQUksS0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFFLEtBQUcsR0FBRyxTQUFTLFlBQVksR0FBRSxLQUFHLEVBQUUsU0FBUyxFQUFFLElBQUUsTUFBSSxFQUFFLDRCQUE0QixJQUFHLEVBQUUsSUFBRSxFQUFFLHdCQUF3QixJQUFHLE1BQUksT0FBSyxTQUFPLEdBQUcsaUJBQWlCLEdBQUUsS0FBRyxNQUFJLEdBQUcsSUFBSSxJQUFHLEVBQUUsR0FBRSxLQUFHLEtBQUcsQ0FBQyxNQUFJLENBQUMsR0FBRyxJQUFHLEVBQUUsSUFBRTtBQUFHLG9CQUFHO0FBQUcseUJBQU07QUFBQSxjQUFFO0FBQUMscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSwwQkFBd0I7QUFBRSxxQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLENBQUMsSUFBRyxFQUFFLFFBQU0sWUFBVTtBQUFBLFlBQUM7QUFBQyxjQUFFLHFCQUFtQjtBQUFFLHFCQUFTLEVBQUUsR0FBRTtBQUFDLGtCQUFHLEVBQUUsRUFBRSxRQUFNLFVBQVM7QUFBQyxvQkFBSSxNQUFJLEVBQUUsUUFBTSxZQUFVLEtBQUcsRUFBRSxhQUFhLEdBQUUsQ0FBQztBQUFFLHVCQUFLLEVBQUUsU0FBTyxTQUFRLEVBQUUsU0FBTztBQUFBLGNBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQUssS0FBRyxFQUFFLFNBQU87QUFBSyxvQkFBRSxFQUFFO0FBQU8scUJBQU87QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRSxxQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEVBQUUsb0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUUscUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxxQkFBTSxDQUFDLENBQUMsTUFBSSxFQUFFLGVBQWEsS0FBRyxFQUFFLGVBQWEsTUFBSSxDQUFDLEVBQUUsb0JBQWtCLE9BQUs7QUFBQSxZQUFNO0FBQUMsY0FBRSxnQkFBYztBQUFFLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU07QUFBQTtBQUFHLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsd0JBQXNCO0FBQUUscUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxxQkFBTyxFQUFFLE1BQU0sT0FBTyxLQUFHLENBQUMsR0FBRSxFQUFFLGNBQWMsRUFBRSxFQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUseUJBQXVCO0FBQUUscUJBQVMsRUFBRSxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsOEJBQThCLElBQUcsRUFBRSxHQUFHO0FBQUUscUJBQU0sR0FBRyxPQUFPLEdBQUcsVUFBUyxHQUFHLEVBQUUsT0FBTyxHQUFHLE9BQUssR0FBRSxHQUFHLEVBQUUsT0FBTyxHQUFHLFlBQVUsR0FBRSxHQUFHO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUUscUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxnQkFBRSxNQUFNLE9BQU8sS0FBRyxDQUFDO0FBQUUsa0JBQUksS0FBRyxFQUFFLGNBQWMsRUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUc7QUFBSyxrQkFBRyxLQUFHLE1BQUksR0FBRztBQUFPLHVCQUFPLEdBQUcsU0FBTztBQUFFLGtCQUFJLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRyxLQUFHLEtBQUc7QUFBRSxtQkFBSSxFQUFFLE1BQU0sT0FBTyxFQUFFLFlBQVksR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxNQUFJLEVBQUUsWUFBWSxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQUc7QUFBSyxxQkFBTztBQUFBLFlBQUU7QUFBQyxjQUFFLHFCQUFtQjtBQUFFLHFCQUFTLEVBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyxxQkFBTSxFQUFFLE1BQUksR0FBRyxFQUFFLE1BQUksQ0FBQyxFQUFFLFlBQVksSUFBSSxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUUscUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxTQUFPLE9BQUcsRUFBRSxRQUFNLEVBQUUsT0FBSyxFQUFFLE9BQUssS0FBRyxFQUFFLFNBQU87QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFFLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFNLENBQUMsRUFBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRSxxQkFBUyxFQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsa0JBQUcsT0FBSyxVQUFRLEdBQUcsV0FBUztBQUFFLHVCQUFPO0FBQUUsdUJBQVEsS0FBRyxHQUFFLEtBQUcsRUFBRSxVQUFRLEdBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRTtBQUFHO0FBQUMscUJBQU8sRUFBRSxPQUFPLE1BQU0sR0FBRSxHQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsSUFBRyxLQUFFLENBQUMsR0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsa0JBQUcsT0FBSztBQUFPLHVCQUFPO0FBQUUsdUJBQVEsS0FBRyxHQUFFLEtBQUcsRUFBRSxVQUFRLEdBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRTtBQUFHO0FBQUMscUJBQU8sRUFBRSxPQUFPLElBQUcsR0FBRSxFQUFFLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFFO0FBQUEsWUFBUTtBQUFDLHFCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHdDQUFzQztBQUFFLHFCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLHNDQUFvQztBQUFFLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHVDQUFxQztBQUFHLHFCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLHFDQUFtQztBQUFFLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxrQkFBRyxFQUFFLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxLQUFHLElBQUUsTUFBSSxFQUFFLFdBQVcsS0FBRyxDQUFDLE1BQUksSUFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxVQUFVLElBQUcsRUFBRTtBQUFFLHVCQUFNLENBQUMsRUFBRSxFQUFFLGtDQUFrQyxLQUFLLEVBQUUsS0FBRyxFQUFFLHFDQUFxQyxLQUFLLEVBQUUsS0FBRyxHQUFHLEtBQUssRUFBRSxLQUFHLEdBQUcsS0FBSyxFQUFFO0FBQUEsY0FBRTtBQUFDLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBTyxFQUFFLFdBQVcsS0FBRyxDQUFDLE1BQUksTUFBSSxFQUFFLFdBQVcsS0FBRyxDQUFDLE1BQUk7QUFBQSxZQUFFO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLGtCQUFJLEtBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLFNBQVMsSUFBRztBQUFDLHVCQUFNLENBQUMsR0FBRyxPQUFPLEVBQUUsOEJBQThCLEdBQUUsR0FBRyxNQUFNLEdBQUcsRUFBRSxJQUFJLEdBQUUsRUFBRTtBQUFBLGNBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBRyxJQUFJLEVBQUU7QUFBSSxxQkFBTSxFQUFDLHVCQUFzQixJQUFHLFVBQVMsR0FBRTtBQUFFLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFBRSxPQUFPLFNBQVMsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLHlCQUFPLEdBQUcsU0FBTyxLQUFHLENBQUMsR0FBRyxJQUFJLEVBQUU7QUFBQSxnQkFBQyxDQUFDLEVBQUUsSUFBSSxTQUFTLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRyx5QkFBTztBQUFBLGdCQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUMsS0FBRyxHQUFHLElBQUksR0FBRyxPQUFPLEVBQUUsR0FBRSxJQUFFLEdBQUUsUUFBSTtBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSw2QkFBMkI7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxDQUFDLElBQUUsRUFBRSxNQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUcsRUFBRSxTQUFPLEtBQUcsRUFBRSxZQUFZLE1BQUksRUFBRSxDQUFDLEdBQUcsTUFBSyxFQUFFLEtBQUksT0FBRyxJQUFFLElBQUUsTUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFFLEdBQUcsRUFBRSxNQUFNLElBQUcsRUFBRSxJQUFFLEVBQUUsU0FBTyxPQUFLLEVBQUUsVUFBVSxTQUFPLElBQUUsR0FBRyxFQUFFLFVBQVUsSUFBRyxJQUFHLEVBQUUsSUFBRSxFQUFFLFlBQVksTUFBSSxFQUFFLENBQUMsR0FBRyxNQUFLLEVBQUUsS0FBSSxPQUFHLE9BQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRyxxQkFBUyxFQUFFLEdBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsQ0FBQyxLQUFHLENBQUMsRUFBRSxhQUFXLEdBQUcsR0FBRSxFQUFFLElBQUUsRUFBRSxZQUFZLE1BQUksRUFBRSxDQUFDLEdBQUcsTUFBSyxFQUFFLFdBQVcsR0FBRztBQUFBLFlBQUM7QUFBQyxjQUFFLGdDQUE4QjtBQUFFLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxxQkFBTyxPQUFLLFdBQVMsS0FBRyxRQUFJLEdBQUcsRUFBRSxNQUFLLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG9DQUFrQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRSxFQUFFLHFCQUFxQjtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsZ0JBQWMsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEtBQUcsRUFBRSxhQUFhLEtBQUssZ0JBQWM7QUFBQSxZQUFVO0FBQUMsY0FBRSx3Q0FBc0M7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMsa0JBQUcsT0FBSyxXQUFTLEtBQUcsUUFBSSxFQUFFLEVBQUU7QUFBRSx1QkFBTTtBQUFHLGtCQUFJLEtBQUcsRUFBRSxVQUFVLEtBQUcsR0FBRyxNQUFJLEVBQUUsV0FBVyxHQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRztBQUFFLHFCQUFPLEdBQUcsRUFBRSxNQUFJLEtBQUcsR0FBRyxNQUFNLFlBQVksRUFBRSxJQUFJLFNBQVMsSUFBRztBQUFDLHVCQUFPLEVBQUUsZ0JBQWdCLEdBQUcsUUFBUSxVQUFTLEVBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQyxFQUFFLEtBQUs7QUFBQSxDQUN4MzRDLElBQUc7QUFBQSxZQUFFO0FBQUMsY0FBRSw4QkFBNEI7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHFCQUFPLE9BQUssV0FBUyxLQUFHLFFBQUksR0FBRyxFQUFFLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFHO0FBQUMscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBTyxFQUFFLGFBQWEsR0FBRSxJQUFHLElBQUcsRUFBRSxhQUFhO0FBQUEsWUFBQztBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRTtBQUFTLHFCQUFPLE1BQUksR0FBRyxTQUFPO0FBQUEsWUFBQztBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEtBQUk7QUFBQyxxQkFBTSxFQUFDLFFBQU8sRUFBQyxPQUFNLENBQUMsUUFBTyxhQUFZLFFBQU8sY0FBYSxXQUFVLFFBQU8sUUFBUSxHQUFFLFFBQU8sQ0FBQyxTQUFRLFVBQVMsU0FBUyxHQUFFLFNBQVEsQ0FBQyxTQUFRLGFBQVksa0JBQWlCLGtCQUFpQixPQUFNLDZCQUE0QixrQkFBaUIsT0FBTSxnQkFBZSxXQUFVLHFCQUFvQixPQUFNLGdCQUFnQixHQUFFLGtCQUFpQixDQUFDLFFBQU8sSUFBSSxHQUFFLG1CQUFrQixDQUFDLFVBQVMseUJBQXdCLFFBQU8sTUFBSyxnQkFBZ0IsR0FBRSxtQkFBa0IsQ0FBQyxZQUFXLGFBQVksU0FBUSxpQkFBZ0IsY0FBYSxVQUFVLEdBQUUsTUFBSyxDQUFDLFNBQVEsUUFBTyxRQUFPLFNBQVEsUUFBTyxTQUFRLFNBQVEsUUFBTyxRQUFPLFFBQU8sU0FBUSxTQUFRLFNBQVEsU0FBUSxTQUFRLFVBQVMsTUFBTSxHQUFFLEtBQUksQ0FBQyxXQUFVLFFBQU8sUUFBUSxHQUFFLEtBQUksQ0FBQyxXQUFVLFFBQU8sUUFBUSxHQUFFLFNBQVEsRUFBRSxZQUFXLG9CQUFtQixDQUFDLE9BQU0sUUFBTyxVQUFTLFNBQVMsR0FBRSxRQUFPLENBQUMsT0FBTSxRQUFRLEdBQUUsU0FBUSxDQUFDLFdBQVUsUUFBTyxRQUFRLEdBQUUsU0FBUSxDQUFDLFdBQVUsUUFBTyxRQUFRLEdBQUUsVUFBUyxFQUFFLFlBQVcsZUFBYyxFQUFFLFlBQVcsUUFBTyxDQUFDLGVBQWMsWUFBVyxZQUFXLGFBQVksVUFBUyxjQUFhLFVBQVMsT0FBTSxTQUFRLFFBQU8sU0FBUSxhQUFZLFlBQVcsV0FBVSxRQUFPLFNBQVEsVUFBUyxPQUFNLEtBQUssR0FBRSxtQkFBa0IsQ0FBQyxpQkFBZ0IsS0FBSyxFQUFDLEdBQUUsUUFBTyxFQUFDLE9BQU0sQ0FBQyxVQUFVLEVBQUMsR0FBRSxRQUFPLEVBQUMsU0FBUSxFQUFFLFlBQVcsbUJBQWtCLEVBQUUsWUFBVyxRQUFPLENBQUMsWUFBVyxRQUFRLEdBQUUsbUJBQWtCLENBQUMsVUFBUyxXQUFVLDJCQUEyQixHQUFFLGdCQUFlLENBQUMsZUFBZSxFQUFDLEdBQUUsUUFBTyxFQUFDLFNBQVEsQ0FBQyxTQUFTLEdBQUUsa0JBQWlCLENBQUMsUUFBUSxHQUFFLGlCQUFnQixDQUFDLFFBQVEsR0FBRSxRQUFPLENBQUMsUUFBUSxHQUFFLE1BQUssQ0FBQyxhQUFhLEdBQUUsZUFBYyxFQUFFLFlBQVcsdUJBQXNCLEVBQUUsWUFBVyxnQkFBZSxFQUFFLFlBQVcsd0JBQXVCLEVBQUUsWUFBVyxjQUFhLENBQUMsZUFBZSxFQUFDLEdBQUUsUUFBTyxFQUFDLE9BQU0sQ0FBQyxRQUFPLFNBQVMsR0FBRSxtQkFBa0IsQ0FBQyxhQUFhLEdBQUUsUUFBTyxDQUFDLGFBQVksV0FBVSxZQUFXLFdBQVcsR0FBRSxRQUFPLENBQUMsYUFBYSxFQUFDLEdBQUUsUUFBTyxFQUFDLFFBQU8sRUFBRSxZQUFXLGVBQWMsRUFBRSxZQUFXLGdCQUFlLEVBQUUsWUFBVyxvQkFBbUIsQ0FBQyxZQUFZLEdBQUUsbUJBQWtCLENBQUMsVUFBVSxHQUFFLFFBQU8sQ0FBQyxVQUFVLEdBQUUsVUFBUyxDQUFDLGVBQWMsZ0JBQWUsZUFBYyxjQUFjLEdBQUUsb0JBQW1CLENBQUMsVUFBUyxpQkFBZ0IsaUJBQWlCLEVBQUMsR0FBRSxRQUFPLEVBQUMsb0JBQW1CLENBQUMsS0FBSyxHQUFFLFFBQU8sQ0FBQyxZQUFZLEVBQUMsR0FBRSxRQUFPLEVBQUMsT0FBTSxDQUFDLElBQUksR0FBRSxRQUFPLENBQUMsSUFBSSxHQUFFLFdBQVUsQ0FBQyxJQUFJLEdBQUUsWUFBVyxDQUFDLElBQUksR0FBRSxtQkFBa0IsQ0FBQyxJQUFJLEdBQUUsWUFBVyxDQUFDLElBQUksR0FBRSxhQUFZLENBQUMsSUFBSSxHQUFFLFlBQVcsQ0FBQyxJQUFJLEdBQUUsYUFBWSxDQUFDLElBQUksR0FBRSxjQUFhLENBQUMsSUFBSSxHQUFFLGNBQWEsQ0FBQyxJQUFJLEdBQUUsZUFBYyxDQUFDLElBQUksR0FBRSxnQkFBZSxDQUFDLElBQUksR0FBRSxtQkFBa0IsQ0FBQyxRQUFRLEdBQUUsT0FBTSxDQUFDLE9BQU8sRUFBQyxFQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcsZ0JBQUk7QUFBRyxhQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFFLEVBQUUsT0FBSyxLQUFHLFFBQU8sRUFBRSxFQUFFLG1CQUFpQixLQUFHLG9CQUFtQixFQUFFLEVBQUUscUJBQW1CLEtBQUcsc0JBQXFCLEVBQUUsRUFBRSxnQ0FBOEIsS0FBRyxpQ0FBZ0MsRUFBRSxFQUFFLHdCQUFzQixLQUFHO0FBQUEsWUFBdUIsR0FBRyxLQUFHLEVBQUUsd0JBQXNCLEVBQUUsc0JBQW9CLENBQUMsRUFBRTtBQUFFLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxrQkFBSTtBQUFHLGtCQUFHLE1BQUksR0FBRyxHQUFFLEVBQUU7QUFBRSx1QkFBTyxHQUFHLElBQUcsQ0FBQztBQUFFLHNCQUFPLEVBQUU7QUFBQSxxQkFBVyxJQUFHO0FBQUMsc0JBQUksS0FBRyxLQUFHLElBQUUsS0FBRyxLQUFHLEtBQUcsR0FBRyxDQUFDLElBQUUsV0FBUyxLQUFHO0FBQUcseUJBQU8sRUFBRSxjQUFZLE1BQUksR0FBRyxFQUFFLE1BQUssRUFBRSxJQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsTUFBSyxFQUFFLElBQUU7QUFBQSxnQkFBRztBQUFBLHFCQUFNO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRLElBQUc7QUFBQyxzQkFBSSxLQUFHLEtBQUcsS0FBRyxHQUFHLENBQUMsSUFBRSxXQUFTLEtBQUcsSUFBRyxNQUFJLEtBQUcsRUFBRSxhQUFXLFFBQU0sT0FBSyxTQUFPLEtBQUcsR0FBRyxHQUFHLEVBQUUsTUFBSyxFQUFFLENBQUM7QUFBRSwwQkFBTyxFQUFFO0FBQUEseUJBQVc7QUFBRyw2QkFBTSxNQUFJLEtBQUc7QUFBQSx5QkFBUztBQUFHLDZCQUFNLE1BQUksS0FBRztBQUFBLHlCQUFVO0FBQUcsNkJBQU0sTUFBSSxLQUFHO0FBQUEseUJBQVU7QUFBRyw2QkFBTSxNQUFJLEtBQUc7QUFBQTtBQUFJO0FBQUEsZ0JBQUs7QUFBQSxxQkFBTTtBQUFBLHFCQUFPO0FBQUUseUJBQU8sRUFBRTtBQUFBLHFCQUFVO0FBQUcseUJBQU8sS0FBRyxLQUFHLEVBQUUsaUJBQWUsRUFBRSxRQUFNLEVBQUUsS0FBSyxXQUFXLEVBQUUsS0FBSyxTQUFPLENBQUMsTUFBSSxLQUFHLE9BQUssT0FBSyxFQUFFO0FBQUE7QUFBSyxxQkFBTyxFQUFFLE1BQU0sS0FBSyxpQkFBaUIsT0FBTyxFQUFFLE1BQUssc0JBQXNCLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxpQkFBZTtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLFVBQVEsS0FBRyxLQUFHLEVBQUUsaUJBQWUsUUFBRyxFQUFFLGlCQUFpQixDQUFDLEtBQUcsRUFBRSxzQkFBb0IsTUFBSSxDQUFDLEVBQUUsS0FBRyxLQUFHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQVMsQ0FBQyxJQUFFLE1BQUksR0FBRyxDQUFDLElBQUUsTUFBSSxLQUFHO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsU0FBUSxLQUFLLEVBQUUsUUFBUSxPQUFNLEdBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSwrQkFBNkI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFLHFCQUFxQixDQUFDLElBQUUsT0FBSyxLQUFHLEdBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQU8sR0FBRyxTQUFPLE9BQUssR0FBRyxPQUFPLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxtREFBaUQ7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLG9CQUFvQixDQUFDLE1BQUksRUFBRSxLQUFLLFNBQU8sTUFBSSxHQUFHLENBQUM7QUFBQSxZQUFFO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLG9CQUFvQixDQUFDLEtBQUcsRUFBRSxLQUFLLFNBQU87QUFBQSxZQUFFO0FBQUMsY0FBRSxnQ0FBOEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLG9CQUFvQixDQUFDLEtBQUcsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsYUFBYSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sR0FBRyxFQUFFLGdCQUFnQjtBQUFBLFlBQUM7QUFBQyxjQUFFLGlDQUErQjtBQUFFLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsQ0FBQyxLQUFHLEVBQUUsU0FBTyxPQUFLLENBQUMsRUFBRTtBQUFBLFlBQUk7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLDRDQUE0QyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxFQUFFLEVBQUUsUUFBTTtBQUFBLFlBQUs7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPLEVBQUUsT0FBTztBQUFBLHFCQUFXO0FBQUkseUJBQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNO0FBQUEscUJBQU87QUFBSSx5QkFBTyxHQUFHLEVBQUUsT0FBTyxNQUFNLEtBQUcsRUFBRSxhQUFhLEVBQUUsT0FBTyxPQUFPLE1BQU0sS0FBRyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxPQUFPLE1BQU07QUFBQTtBQUFFLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUk7QUFBRyxzQkFBTyxLQUFHLEVBQUUsa0JBQWdCLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxLQUFLLFNBQVMsSUFBRztBQUFDLHVCQUFNLENBQUMsR0FBRyxFQUFFLEtBQUcsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUEsY0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0NBQThCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sTUFBSSxFQUFFLFdBQVcsWUFBVSxNQUFJLEVBQUUsV0FBVyxVQUFRLE1BQUksRUFBRSxXQUFXO0FBQUEsWUFBUTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxpQkFBaUIsQ0FBQyxLQUFHLEdBQUcsbUJBQWlCLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBRyxDQUFDLENBQUMsRUFBRTtBQUFBLFlBQXVCO0FBQUMsY0FBRSw0QkFBMEI7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBaUI7QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUEscUJBQU87QUFBRTtBQUFBO0FBQWMseUJBQU07QUFBQTtBQUFHLHFCQUFPLEVBQUUsb0JBQWtCLFFBQUcsR0FBRyxJQUFHLGNBQWMsS0FBRyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsSUFBRSxPQUFHLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxHQUFHLGtCQUFnQixHQUFHLEVBQUUsS0FBRyxFQUFFLFdBQVcsU0FBTyxPQUFHLENBQUMsR0FBRyxzQkFBb0I7QUFBQSxZQUFFO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUEscUJBQVE7QUFBSSx5QkFBTSxDQUFDLEVBQUUsNENBQTRDLEVBQUU7QUFBQTtBQUFFLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQVcseUJBQU8sRUFBRSxXQUFXLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQyxjQUFFLGtDQUFnQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTyxFQUFFLFdBQVcsQ0FBQyxHQUFFO0FBQUE7QUFBQSxZQUFHO0FBQUMsY0FBRSx5Q0FBdUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUscUNBQW1DO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLGNBQUUsbUNBQWlDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQ0FBbUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLENBQUMsS0FBRyxFQUFFLG9CQUFvQixDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxhQUFhLEVBQUUsUUFBTyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLElBQUcsR0FBRyxNQUFNO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsa0NBQWdDO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyx1QkFBUSxLQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUksbUJBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsc0NBQW9DO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxLQUFHLEVBQUUsQ0FBQyxNQUFJLElBQUUsY0FBWSxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLGNBQVksR0FBRyxFQUFFLFlBQVksV0FBVyxHQUFHLElBQUksSUFBRTtBQUFBLFlBQU07QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsU0FBTyxPQUFLLENBQUMsR0FBRyxFQUFFLFVBQVU7QUFBQSxZQUFDO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUTtBQUFHLHlCQUFPLEVBQUU7QUFBQSxxQkFBaUI7QUFBQSxxQkFBUTtBQUFBLHFCQUFPO0FBQUcseUJBQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJO0FBQUEscUJBQU87QUFBSSx5QkFBTyxHQUFHLEVBQUUsVUFBVSxJQUFFLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxJQUFJLElBQUU7QUFBQTtBQUFlLHlCQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFBQTtBQUFBLFlBQUU7QUFBQyxjQUFFLDJCQUF5QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUkseUJBQU07QUFBQSxxQkFBWTtBQUFBLHFCQUFRO0FBQUcseUJBQU8sRUFBRSxDQUFDLE1BQUksSUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFFLEdBQUcsQ0FBQztBQUFBLHFCQUFPO0FBQUkseUJBQU8sR0FBRyxFQUFFLElBQUksSUFBRSxNQUFJLEdBQUcsRUFBRSxLQUFLO0FBQUEscUJBQU87QUFBSSx5QkFBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLElBQUUsR0FBRyxFQUFFLFVBQVUsSUFBRSxNQUFJLEdBQUcsRUFBRSxJQUFJLElBQUUsRUFBRSxNQUFNLFlBQVksRUFBRSxJQUFJO0FBQUEscUJBQU87QUFBSSx5QkFBTyxHQUFHLEVBQUUsSUFBSSxJQUFFLEdBQUcsRUFBRSxLQUFLO0FBQUE7QUFBVSx5QkFBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQUE7QUFBQSxZQUFFO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxFQUFFLENBQUM7QUFBRSxxQkFBTyxHQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsV0FBVyxFQUFFLE1BQUssR0FBRyxHQUFHO0FBQUUscUJBQU8sR0FBRyxHQUFFLElBQUcsR0FBRyxNQUFJLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLHFCQUFPLEdBQUcsR0FBRSxHQUFHLE9BQU0sR0FBRyxRQUFPLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHNDQUFvQztBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRSxxQkFBTyxHQUFHLElBQUcsR0FBRyxPQUFNLEdBQUcsUUFBTyxJQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSwwQ0FBd0M7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMsZ0JBQUUsTUFBTSx5QkFBeUIsSUFBRyxDQUFDLEdBQUUsRUFBRSxNQUFNLHlCQUF5QixJQUFHLENBQUMsR0FBRSxNQUFJLEVBQUUsTUFBTSxzQkFBc0IsSUFBRyxFQUFFLEtBQUssTUFBTSxHQUFFLEVBQUUsTUFBTSxzQkFBc0IsS0FBRyxJQUFHLEVBQUUsS0FBSyxNQUFNO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLEVBQUMsTUFBSyxHQUFFLE9BQU0sSUFBRyxRQUFPLElBQUcsTUFBSyxHQUFHLE1BQUssVUFBUyxHQUFHLFVBQVMsYUFBWSxHQUFHLE9BQUssS0FBRyxHQUFHLGFBQVksb0JBQW1CLEdBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSx1Q0FBcUM7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU0sRUFBQyxNQUFLLEdBQUUsT0FBTSxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUcsTUFBSyxVQUFTLEdBQUcsVUFBUyxhQUFZLEdBQUcsT0FBSyxLQUFHLEdBQUcsYUFBWSxvQkFBbUIsR0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDBDQUF3QztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLE9BQU8sRUFBRSxlQUFhLFdBQVMsRUFBQyxNQUFLLEVBQUUsTUFBSyxVQUFTLEVBQUUsVUFBUyxhQUFZLEVBQUUsYUFBWSxNQUFLLEVBQUUsS0FBSSxJQUFFLEVBQUU7QUFBQSxZQUFXO0FBQUMsY0FBRSw2Q0FBMkM7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU0sRUFBQyxNQUFLLEdBQUUsT0FBTSxHQUFHLEtBQUksUUFBTyxHQUFHLE1BQUksR0FBRyxLQUFJLE1BQUssR0FBRyxNQUFLLFVBQVMsR0FBRyxVQUFTLGFBQVksR0FBRyxRQUFPO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsY0FBYyxFQUFFLGlCQUFnQixNQUFHLEVBQUUsaUJBQWdCLEVBQUUsTUFBSyxRQUFPLEVBQUU7QUFBRSxpQkFBRyxLQUFLO0FBQUUsa0JBQUksS0FBRyxHQUFHLFlBQVk7QUFBRSxxQkFBTyxFQUFFLHlCQUF5QixJQUFHLEdBQUcsV0FBVyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsV0FBVyxFQUFFLE1BQUssR0FBRyxHQUFHO0FBQUUsa0JBQUcsR0FBRyxRQUFNLEdBQUcsS0FBSyxTQUFPLEtBQUk7QUFBQyxvQkFBSSxLQUFHLEVBQUUsOEJBQThCLEdBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxNQUFLLEtBQUcsRUFBRSw4QkFBOEIsR0FBRSxHQUFHLEtBQUssR0FBRyxFQUFFO0FBQUssb0JBQUcsS0FBRztBQUFHLHlCQUFPLEVBQUUsZUFBZSxJQUFHLEVBQUUsSUFBRyxDQUFDLElBQUUsS0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUseUJBQXlCLElBQUcsR0FBRyxHQUFHO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUksS0FBRztBQUFHLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFJLHNCQUFJLEtBQUcsRUFBRSxXQUFXLEVBQUUsTUFBSyxHQUFFLEtBQUU7QUFBRSx5QkFBTyxPQUFLLEVBQUUsS0FBSyxTQUFPLEVBQUUsZUFBZSxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsRUFBRTtBQUFBLHFCQUFPO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx1QkFBRyxHQUFHO0FBQUs7QUFBQSxxQkFBVztBQUFJLHlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEscUJBQU87QUFBQSxxQkFBUztBQUFJLHNCQUFJLEtBQUcsRUFBRSxXQUFXLEVBQUUsTUFBSyxHQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsV0FBVyxTQUFPLElBQUUsR0FBRyxXQUFXLEdBQUcsTUFBSSxHQUFHO0FBQUkseUJBQU8sRUFBRSx5QkFBeUIsSUFBRyxFQUFFO0FBQUE7QUFBRSxrQkFBRyxPQUFLO0FBQU8sdUJBQU8sR0FBRyxHQUFFLEdBQUcsR0FBRztBQUFFLGdCQUFFLE1BQU0sT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFBRSxrQkFBSSxLQUFHLEVBQUUsRUFBRSxHQUFFLEtBQUcsTUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFFLEdBQUcsTUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFLLEdBQUcsR0FBRztBQUFFLHFCQUFPLE1BQUksRUFBRSxNQUFNLE9BQU8sT0FBSyxHQUFHLEtBQUksaUZBQWlGLEdBQUUsRUFBRSxNQUFNLE9BQU8sT0FBSyxHQUFHLEtBQUksaUZBQWlGLE1BQUksRUFBRSxNQUFNLE9BQU8sTUFBSSxHQUFHLEtBQUksaUZBQWlGLEdBQUUsRUFBRSxNQUFNLE9BQU8sTUFBSSxHQUFHLEtBQUksaUZBQWlGLElBQUcsRUFBRSx5QkFBeUIsSUFBRyxHQUFHLEdBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFLDJCQUF5QixFQUFFLDZCQUEyQjtBQUFBLFlBQU07QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsZUFBYTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsRUFBRSxFQUFFLHlCQUF5QixDQUFDLElBQUU7QUFBQSxZQUFLO0FBQUMsY0FBRSxjQUFZO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxFQUFFLEVBQUUseUJBQXlCLENBQUMsSUFBRSxNQUFJLENBQUMsRUFBRSwrQkFBK0IsR0FBRSxFQUFFLE1BQU07QUFBQSxZQUFFO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxJQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsYUFBVztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsRUFBRSxFQUFFLHFCQUFxQixDQUFDLElBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSxRQUFNO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLE9BQUssRUFBRSxXQUFXLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxjQUFZO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLE9BQUssRUFBRSxXQUFXLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxlQUFlLENBQUMsS0FBRyxFQUFFLGlCQUFlLE9BQUssRUFBRSxLQUFLLGdCQUFjO0FBQUEsWUFBTTtBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsS0FBRyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsT0FBTztBQUFBLFlBQUM7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsU0FBTyxPQUFLLEVBQUUsV0FBVyxTQUFPO0FBQUEsWUFBRTtBQUFDLGNBQUUsc0JBQW9CO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFFO0FBQUEsWUFBUTtBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxzQkFBc0IsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksS0FBRyxDQUFDLEVBQUU7QUFBQSxZQUFXO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixjQUFhLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSw2QkFBMkI7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsU0FBTyxLQUFHLEVBQUUsd0JBQXdCLEdBQUcsTUFBSyxFQUFFLEdBQUcsSUFBRTtBQUFBLFlBQU07QUFBQyxjQUFFLGdDQUE4QjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUksS0FBRyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sTUFBSSxFQUFFLFlBQVksRUFBRSx5QkFBeUIsSUFBRyxFQUFFLEdBQUcsR0FBRSxFQUFFLHdCQUF3QixJQUFHLEVBQUUsR0FBRyxDQUFDLElBQUUsRUFBRSx3QkFBd0IsSUFBRyxFQUFFLEdBQUc7QUFBRSxxQkFBTyxFQUFFLE9BQU8sSUFBRyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLFdBQVcsR0FBRyxNQUFJLENBQUMsTUFBSSxNQUFJLEdBQUcsV0FBVyxHQUFHLE1BQUksQ0FBQyxNQUFJLE1BQUksR0FBRyxXQUFXLEdBQUcsTUFBSSxDQUFDLE1BQUk7QUFBQSxjQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0IsSUFBRyxFQUFFLG9DQUFrQztBQUFrRSxnQkFBSSxLQUFHO0FBQW1FLGNBQUUsdUNBQXFDO0FBQXVFLGdCQUFJLEtBQUc7QUFBNEUscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsT0FBSyxFQUFFLFFBQU0sRUFBRSxRQUFNO0FBQUksdUJBQU07QUFBRyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBLHFCQUFRO0FBQUkseUJBQU8sRUFBRSxPQUFPLFNBQU87QUFBQSxxQkFBUztBQUFJLHlCQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxLQUFHLENBQUMsR0FBRyxDQUFDO0FBQUEscUJBQU87QUFBSSx5QkFBTyxFQUFFLE9BQU8sU0FBTyxPQUFLLEVBQUUsT0FBTyxTQUFPO0FBQUEscUJBQVM7QUFBRyxtQkFBQyxFQUFFLE9BQU8sU0FBTyxPQUFLLEVBQUUsT0FBTyxVQUFRLEtBQUcsRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLE9BQU8sU0FBTyxPQUFLLElBQUUsRUFBRSxTQUFRLEVBQUUsTUFBTSxPQUFPLEVBQUUsU0FBTyxNQUFJLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxLQUFJLGtHQUFrRztBQUFBLHFCQUFPO0FBQUEscUJBQVM7QUFBQSxxQkFBUyxLQUFJO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQU8sc0JBQUcsR0FBRyxTQUFPO0FBQUksMkJBQU07QUFBRyxzQkFBRyxHQUFHLFNBQU87QUFBSSwyQkFBTSxDQUFDLEdBQUc7QUFBUyxzQkFBRyxPQUFLLEdBQUcsUUFBTSxHQUFHLFFBQU07QUFBSSwyQkFBTTtBQUFHLDBCQUFPLEdBQUc7QUFBQSx5QkFBVztBQUFJLDZCQUFPLEVBQUUsaUJBQWlCLEdBQUcsTUFBTSxLQUFHLENBQUMsR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxNQUFJLEdBQUc7QUFBQSx5QkFBZ0I7QUFBSSw2QkFBTyxNQUFJLEdBQUc7QUFBQSx5QkFBZ0I7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBSSw2QkFBTyxNQUFJLEdBQUc7QUFBQSx5QkFBVTtBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUksNkJBQU8sTUFBSSxHQUFHO0FBQUEseUJBQVU7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUksNkJBQU8sTUFBSSxHQUFHO0FBQUEseUJBQVU7QUFBSSw2QkFBTyxNQUFJLEdBQUc7QUFBQSx5QkFBVTtBQUFBLHlCQUFTO0FBQUksNkJBQU8sRUFBRSxTQUFTLEdBQUcsZUFBYyxDQUFDO0FBQUEseUJBQU87QUFBSSw2QkFBTTtBQUFBO0FBQUEsZ0JBQUc7QUFBQTtBQUFFLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBSyxLQUFHO0FBQUMsb0JBQUcsRUFBRSxTQUFPO0FBQUcseUJBQU07QUFBRyxvQkFBRSxFQUFFO0FBQUEsY0FBTTtBQUFDLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBTyxHQUFHLENBQUM7QUFBRSx1QkFBUyxHQUFHLElBQUc7QUFBQyx3QkFBTyxHQUFHO0FBQUEsdUJBQVc7QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLGFBQWEsSUFBRyxFQUFFO0FBQUE7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBTyxHQUFHLENBQUM7QUFBRSx1QkFBUyxHQUFHLElBQUc7QUFBQyx3QkFBTyxHQUFHO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHO0FBQVcsMEJBQUksR0FBRyxFQUFFO0FBQUU7QUFBQSx1QkFBWTtBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJO0FBQUE7QUFBZSx3QkFBRyxFQUFFLGVBQWUsRUFBRSxHQUFFO0FBQUMsMEJBQUcsR0FBRyxRQUFNLEdBQUcsS0FBSyxTQUFPLEtBQUk7QUFBQywyQkFBRyxHQUFHLEtBQUssVUFBVTtBQUFFO0FBQUEsc0JBQU07QUFBQSxvQkFBQztBQUFNLHlCQUFHLEVBQUUsS0FBRyxFQUFFLGFBQWEsSUFBRyxFQUFFO0FBQUE7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxFQUFFLFNBQU8sTUFBSSxFQUFFLGNBQVksS0FBRyxFQUFFLFNBQU8sTUFBSSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsSUFBRTtBQUFBLFlBQU07QUFBQyxjQUFFLDhCQUE0QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFPLEVBQUU7QUFBQSxxQkFBYTtBQUFJLHlCQUFPLEVBQUU7QUFBQTtBQUFBLFlBQVc7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHO0FBQUUsd0JBQU8sRUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTTtBQUFBO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxpQkFBZTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsQ0FBQyxLQUFHLEVBQUUsV0FBVyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLE9BQU8sT0FBTyxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsMkNBQXlDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLElBQUUsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLEtBQUcsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLE1BQU0sS0FBRyxHQUFHLEVBQUUsT0FBTyxNQUFNLE1BQUksS0FBRyxHQUFHLEVBQUUsTUFBTSxJQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLElBQUUsRUFBRSxtQkFBbUIsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxNQUFJLElBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSxxQ0FBbUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFLHNCQUFzQixDQUFDLElBQUUsR0FBRyxDQUFDLEtBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFFLEVBQUUsc0JBQXNCLENBQUMsSUFBRSxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsSUFBRSxFQUFFLG9CQUFvQixDQUFDLEtBQUcsR0FBRyxDQUFDLE1BQUksR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsNkJBQTJCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU07QUFBQTtBQUFHLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsa0NBQWdDO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyx5QkFBTztBQUFDLG9CQUFHLE1BQUksR0FBRyxDQUFDLEdBQUUsRUFBRSxVQUFVLFNBQU87QUFBSSx5QkFBTyxFQUFFO0FBQVUsb0JBQUUsRUFBRTtBQUFBLGNBQVM7QUFBQSxZQUFDO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU07QUFBQSxZQUFDO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxLQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsT0FBTyxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPLFNBQU8sRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLE9BQU8sU0FBTztBQUFBLFlBQUk7QUFBQyxjQUFFLG1EQUFpRDtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsRUFBRSxTQUFPO0FBQUEsWUFBQztBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxFQUFFLFNBQU87QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxXQUFXLE9BQU8sU0FBUyxJQUFHO0FBQUMsb0JBQUcsR0FBRyxTQUFPLEtBQUk7QUFBQyxzQkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFJO0FBQUUseUJBQU8sT0FBSyxNQUFJLENBQUMsQ0FBQyxNQUFJLE9BQUs7QUFBQSxnQkFBRTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsYUFBYSxHQUFHLEdBQUUsRUFBRSxHQUFFLFNBQVMsSUFBRztBQUFDLHVCQUFPLEVBQUUseUJBQXlCLEdBQUcsV0FBVyxJQUFFLEVBQUUsS0FBSyxHQUFHLFlBQVksVUFBUyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUcsR0FBRyxTQUFPO0FBQUEsZ0JBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBTSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsS0FBRyxFQUFFLFdBQVcsUUFBTztBQUFDLG9CQUFJLEtBQUcsRUFBRSxXQUFXLEdBQUc7QUFBVyx1QkFBTyxFQUFFLFFBQVEsSUFBRyxFQUFFLHlCQUF5QjtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQ0FBbUM7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxhQUFhLEdBQUcsR0FBRSxFQUFFLEdBQUUsU0FBUyxJQUFHO0FBQUMsdUJBQU8sRUFBRSx5QkFBeUIsR0FBRyxXQUFXLElBQUUsRUFBRSxLQUFLLEdBQUcsWUFBWSxVQUFTLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBRyxHQUFHLFNBQU87QUFBQSxnQkFBRSxDQUFDLElBQUU7QUFBQSxjQUFNLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxtQ0FBaUM7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQU8sS0FBRyxHQUFHLElBQUcsRUFBRSxJQUFFLEVBQUU7QUFBQSxZQUFVO0FBQUMsY0FBRSx1QkFBcUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLGFBQWEsRUFBRSxRQUFPLEVBQUUsY0FBYztBQUFBLFlBQUM7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsYUFBYSxFQUFFLFFBQU8sRUFBRSx5QkFBeUI7QUFBQSxZQUFDO0FBQUMsY0FBRSxtQ0FBaUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLGFBQWEsRUFBRSxRQUFPLEVBQUUsV0FBVztBQUFBLFlBQUM7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsYUFBYSxFQUFFLFFBQU8sU0FBUyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxZQUFZLEVBQUUsS0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFFLFNBQU8sRUFBRSw4QkFBOEIsRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLGdDQUE4QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsYUFBYSxFQUFFLFFBQU8sRUFBRSwyQ0FBMkM7QUFBQSxZQUFDO0FBQUMsY0FBRSwwQ0FBd0M7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG1CQUFJLEVBQUUsTUFBTSxPQUFPLEVBQUUsU0FBTyxHQUFHLE9BQUk7QUFBQyxvQkFBRyxJQUFFLEVBQUUsUUFBTyxDQUFDO0FBQUUseUJBQU8sRUFBRSxNQUFNLEtBQUs7QUFBRSx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBSSx3QkFBRyxFQUFFLFlBQVksRUFBRSxPQUFPLE1BQU07QUFBRSw2QkFBTztBQUFFLHdCQUFFLEVBQUU7QUFBTztBQUFBLHVCQUFXO0FBQUksc0JBQUUsT0FBTyxTQUFPLE9BQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxNQUFNLElBQUUsSUFBRSxFQUFFLE9BQU8sU0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQUksSUFBRSxFQUFFO0FBQVE7QUFBQSx1QkFBVztBQUFJLHdCQUFHLENBQUM7QUFBRztBQUFBLHVCQUFjO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksMkJBQU87QUFBQTtBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBLHFCQUFRO0FBQUksMEJBQU8sRUFBRSxPQUFPO0FBQUEseUJBQVc7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBSSw2QkFBTTtBQUFBO0FBQVcsNkJBQU07QUFBQTtBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLGlDQUErQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGdCQUFFLGFBQWEsQ0FBQyxNQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxLQUFHLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxNQUFJLEVBQUUsT0FBTyxTQUFPLE1BQUksSUFBRSxFQUFFO0FBQVEsa0JBQUksS0FBRyxHQUFHLEdBQUUsSUFBRTtBQUFFLHFCQUFPLEVBQUUsYUFBYSxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsc0JBQW9CO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxHQUFHLEdBQUUsS0FBRTtBQUFFLGtCQUFHO0FBQUcsd0JBQU8sR0FBRztBQUFBLHVCQUFXO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPO0FBQUE7QUFBQSxZQUFHO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHlCQUFPO0FBQUMsb0JBQUcsSUFBRSxFQUFFLFFBQU8sQ0FBQztBQUFFLHlCQUFPO0FBQUUsd0JBQU8sRUFBRTtBQUFBLHVCQUFXO0FBQUksd0JBQUUsRUFBRTtBQUFPO0FBQUEsdUJBQVc7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksd0JBQUcsQ0FBQztBQUFHO0FBQUEsdUJBQWM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPO0FBQUEsdUJBQU87QUFBSSxzQkFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPLE1BQU0sSUFBRSxJQUFFLEVBQUUsT0FBTyxTQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBSSxJQUFFLEVBQUU7QUFBUTtBQUFBO0FBQUEsY0FBTTtBQUFBLFlBQUM7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxLQUFJO0FBQUMseUJBQVEsS0FBRyxHQUFFLEtBQUcsRUFBRSxRQUFPLEdBQUcsU0FBTztBQUFLLHVCQUFHLElBQUcsS0FBRyxHQUFHO0FBQU8sb0JBQUcsR0FBRyxTQUFPLE9BQUssR0FBRyxlQUFhO0FBQUcseUJBQU87QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsMENBQXdDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLE9BQUssR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFO0FBQUssc0JBQU8sT0FBSyxPQUFLLE9BQUssUUFBTSxFQUFFLFdBQVcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRTtBQUFLLHNCQUFPLE9BQUssT0FBSyxPQUFLLFFBQU0sRUFBRSxXQUFXLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxpQkFBZTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJO0FBQUcscUJBQU0sQ0FBQyxDQUFDLEtBQUcsRUFBRSxzQkFBc0IsQ0FBQyxPQUFLLEtBQUcsRUFBRSxpQkFBZSxRQUFNLE9BQUssU0FBTyxTQUFPLEdBQUcsVUFBUTtBQUFBLFlBQUc7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsQ0FBQyxNQUFJLEVBQUUsOEJBQThCLENBQUMsS0FBRyxFQUFFLHFCQUFxQixDQUFDLE1BQUksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLE1BQU0sS0FBRyxFQUFFLE9BQU8sT0FBTyxjQUFjLFNBQU8sTUFBSSxFQUFFLE9BQU8sT0FBTyxNQUFNLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSwyQ0FBeUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBSSx5QkFBTyxFQUFFO0FBQUEscUJBQWM7QUFBSSx5QkFBTyxHQUFHLEVBQUUsVUFBVSxJQUFFLEVBQUUsYUFBVztBQUFBLHFCQUFZO0FBQUEscUJBQVE7QUFBSSx5QkFBTztBQUFBO0FBQUEsWUFBRTtBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUkseUJBQU8sRUFBRTtBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxFQUFFO0FBQUE7QUFBZ0IseUJBQU8sRUFBRTtBQUFBO0FBQUEsWUFBVztBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRztBQUFDLGtCQUFHLEVBQUUsbUJBQW1CLENBQUMsS0FBRyxFQUFFLG9CQUFvQixFQUFFLElBQUk7QUFBRSx1QkFBTTtBQUFHLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFJLHlCQUFNO0FBQUEscUJBQVE7QUFBSSx5QkFBTyxHQUFHLFNBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxFQUFFLFNBQU8sVUFBUSxHQUFHLFNBQU87QUFBQSxxQkFBUztBQUFJLHlCQUFPLEdBQUcsU0FBTyxXQUFTLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxRQUFNLEdBQUcsU0FBTztBQUFBO0FBQUkscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxlQUFhLFVBQVEsR0FBRyxHQUFFLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEdBQUUsSUFBRyxFQUFFLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFJLHlCQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVEsU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxJQUFHLEdBQUUsRUFBRTtBQUFBLGtCQUFDLENBQUM7QUFBQSxxQkFBTztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxFQUFFLEtBQUssRUFBRSxZQUFXLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsSUFBRyxHQUFFLEVBQUU7QUFBQSxrQkFBQyxDQUFDO0FBQUE7QUFBVSx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQU07QUFBRyxrQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHFCQUFNLENBQUMsQ0FBQyxNQUFJLEdBQUcsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUseUNBQXVDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFO0FBQU8scUJBQU8sR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLE1BQUksR0FBRyxZQUFVLElBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBLHFCQUFRO0FBQUkseUJBQUssRUFBRSxPQUFPLFNBQU87QUFBSyx3QkFBRSxFQUFFO0FBQU8seUJBQU8sRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sS0FBRyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sS0FBRyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sS0FBRyxHQUFHLENBQUM7QUFBQSxxQkFBTztBQUFJLHlCQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTTtBQUFHLHdCQUFFLEVBQUU7QUFBTyx5QkFBTyxFQUFFLE9BQU8sU0FBTyxPQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxLQUFHLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxLQUFHLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxLQUFHLEdBQUcsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEtBQUcsRUFBRSxPQUFPLFNBQU8sS0FBRyxFQUFFLE9BQU8sY0FBYyxTQUFPO0FBQUEscUJBQVM7QUFBRyxzQkFBRyxFQUFFLE9BQU8sU0FBTyxPQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxLQUFHLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxLQUFHLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxLQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFNO0FBQUEscUJBQVE7QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFJLHlCQUFPLEdBQUcsQ0FBQztBQUFBO0FBQVUseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRTtBQUFPLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFPLEdBQUcsZ0JBQWM7QUFBQSxxQkFBTztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxHQUFHLGVBQWE7QUFBQSxxQkFBTztBQUFJLHNCQUFJLEtBQUc7QUFBRyx5QkFBTyxHQUFHLGdCQUFjLEtBQUcsR0FBRyxZQUFZLFNBQU8sT0FBSyxHQUFHLGNBQVksS0FBRyxHQUFHLGdCQUFjO0FBQUEscUJBQU87QUFBQSxxQkFBUztBQUFJLHNCQUFJLEtBQUc7QUFBRyx5QkFBTyxHQUFHLGdCQUFjLEtBQUcsR0FBRyxZQUFZLFNBQU8sT0FBSyxHQUFHLGVBQWE7QUFBQSxxQkFBTztBQUFBLHFCQUFTO0FBQUkseUJBQU8sTUFBSSxHQUFHO0FBQUEscUJBQWdCO0FBQUkseUJBQU8sTUFBSSxHQUFHO0FBQUEscUJBQWdCO0FBQUkseUJBQU8sTUFBSSxHQUFHO0FBQUEscUJBQWdCO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU07QUFBQSxxQkFBUTtBQUFJLHlCQUFPLEdBQUcsZUFBYSxLQUFHLENBQUMsR0FBRyxFQUFFO0FBQUEscUJBQU87QUFBSSx5QkFBTyxHQUFHLGdDQUE4QjtBQUFBO0FBQVUseUJBQU8sR0FBRyxFQUFFO0FBQUE7QUFBQSxZQUFFO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU87QUFBSSxvQkFBRSxFQUFFO0FBQU8scUJBQU8sRUFBRSxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsb0JBQWtCO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxrQkFBa0IsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU87QUFBQSxZQUFlO0FBQUMsY0FBRSxpQ0FBK0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sT0FBSyxFQUFFLGdCQUFnQixTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsMENBQXdDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLGdCQUFnQjtBQUFBLFlBQVU7QUFBQyxjQUFFLHFEQUFtRDtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsRUFBRSxXQUFXLEVBQUUsVUFBVTtBQUFBLFlBQUU7QUFBQyxjQUFFLG1DQUFpQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsU0FBTyxPQUFLLEVBQUUsZ0JBQWdCLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSwwQ0FBd0M7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxpQkFBZTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxDQUFDLEtBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBTTtBQUFBLFlBQU87QUFBQyxjQUFFLGFBQVc7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTSxDQUFDLENBQUMsS0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFNO0FBQUEsWUFBUztBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsc0JBQW9CO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxDQUFDLEtBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBTTtBQUFBLFlBQVE7QUFBQyxjQUFFLFlBQVU7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLG9CQUFvQixDQUFDLEtBQUcsRUFBRSxhQUFhLEVBQUUsUUFBUSxLQUFHLEVBQUUsU0FBUyxnQkFBYyxZQUFVLEVBQUUsaUJBQWUsRUFBRSxjQUFjLFdBQVMsTUFBSSxFQUFFLGNBQWMsR0FBRyxTQUFPLE9BQUssRUFBRSxjQUFjLEdBQUcsU0FBTztBQUFBLFlBQUk7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUcsRUFBRSxTQUFPO0FBQUksdUJBQU07QUFBRyxrQkFBSSxLQUFHLEdBQUUsS0FBRyxHQUFHLFlBQVcsS0FBRyxHQUFHO0FBQVUsa0JBQUcsR0FBRyxTQUFPLE1BQUksR0FBRyxnQkFBYyxhQUFXLEdBQUcsV0FBUztBQUFFLHVCQUFNO0FBQUcsa0JBQUksS0FBRyxHQUFHO0FBQUcscUJBQU0sQ0FBQyxNQUFJLEVBQUUsb0JBQW9CLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxLQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsNENBQTBDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSwwREFBd0Q7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHFCQUFPLEVBQUUsU0FBTyxRQUFNLElBQUUsRUFBRSxPQUFPLFNBQVEsRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFFLGVBQWEsR0FBRyxLQUFHLEdBQUcsRUFBRSxXQUFXLElBQUUsRUFBRSxhQUFZLElBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsZ0JBQWdCLGFBQWEsU0FBTyxLQUFHLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixjQUFhLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLE1BQUksTUFBSSxNQUFJO0FBQUEsWUFBRTtBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFJO0FBQUEsWUFBRTtBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxtQkFBbUIsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxLQUFHLEVBQUUsYUFBYSxDQUFDLEtBQUcsRUFBRSxpQkFBaUIsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsQ0FBQyxLQUFHLEVBQUUsZUFBYSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsTUFBSSxFQUFFLFlBQVksY0FBYyxTQUFPLE1BQUksRUFBRSxZQUFZLGNBQWMsU0FBTyxPQUFLLEVBQUUsUUFBTSxHQUFHLEVBQUUsSUFBSSxLQUFHLEdBQUcsRUFBRSxNQUFLLEVBQUUsWUFBWSxJQUFJLElBQUUsRUFBRSxZQUFZLFFBQU0sRUFBRTtBQUFBLFlBQVc7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUscUJBQU8sTUFBSSxHQUFHLElBQUcsR0FBRyxFQUFFLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLGdDQUE4QjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxRQUFRLEVBQUUsWUFBVyxTQUFTLElBQUc7QUFBQyx1QkFBTyxFQUFFLHFCQUFxQixFQUFFLEtBQUcsRUFBRSxhQUFhLEdBQUcsSUFBSSxLQUFHLEdBQUcsS0FBSyxnQkFBYyxXQUFTLEdBQUcsZUFBYSxHQUFHLEdBQUcsYUFBWSxFQUFFO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFHLEtBQUcsRUFBRSxVQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxjQUFjLFNBQU8sSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxFQUFFLE9BQU8sSUFBSTtBQUFFLHVCQUFPLEdBQUcsRUFBRSxPQUFPLE9BQU0sRUFBRSxLQUFHLEdBQUcsRUFBRSxPQUFPLE1BQUssRUFBRSxPQUFPLE9BQU0sRUFBRTtBQUFBLGNBQUM7QUFBQyxrQkFBRyxLQUFHLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxHQUFHLENBQUMsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxFQUFFLFVBQVUsSUFBRyxFQUFFLFVBQVUsR0FBRyxTQUFPLFdBQVc7QUFBRSxvQkFBRztBQUFHLHlCQUFPO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGdDQUE4QjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUcsRUFBRSxpQkFBaUIsQ0FBQyxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEVBQUUsVUFBVTtBQUFFLHVCQUFPLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxNQUFJLElBQUU7QUFBQSxjQUFNO0FBQUMsa0JBQUcsRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPLE9BQUssRUFBRSwwQkFBMEIsQ0FBQyxNQUFJLEVBQUUsV0FBVyxXQUFTLEtBQUc7QUFBSSx1QkFBTztBQUFBLFlBQUM7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsbUJBQW1CLEVBQUUsTUFBSSxHQUFHLGNBQWMsU0FBTyxNQUFJLEdBQUcsY0FBYyxTQUFPLE9BQUssR0FBRyxHQUFHLE9BQU0sRUFBRTtBQUFFLGtCQUFHLE1BQUksR0FBRyxHQUFFLEdBQUcsSUFBSTtBQUFFLHVCQUFPO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLElBQUUsRUFBRSxPQUFPLE9BQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEtBQUcsRUFBRSxPQUFPLGNBQWMsU0FBTyxLQUFHLEVBQUUsT0FBTyxPQUFLO0FBQU8scUJBQU8sTUFBSSxHQUFHLEVBQUUsT0FBTSxHQUFHLEVBQUUsQ0FBQyxLQUFHLEdBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxFQUFFLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQ0FBOEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sR0FBRTtBQUFDLG9CQUFJLE1BQUksRUFBRSxPQUFPLGNBQWMsU0FBTyxNQUFJLEVBQUUsT0FBTyxjQUFjLFNBQU8sT0FBSyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sTUFBTSxJQUFFLEVBQUUsT0FBTyxTQUFPLEVBQUU7QUFBTyxvQkFBRyxHQUFHLGNBQWMsU0FBTyxNQUFJLEVBQUUsYUFBYSxHQUFHLElBQUk7QUFBRSx5QkFBTyxHQUFHO0FBQUEsY0FBSSxXQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTTtBQUFFLHVCQUFPLEVBQUUsT0FBTztBQUFBLFlBQUk7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsR0FBRyxFQUFFLElBQUUsR0FBRyxDQUFDLE1BQUksR0FBRyxFQUFFLElBQUUsRUFBRSxhQUFhLENBQUMsS0FBRyxHQUFHLEVBQUUsTUFBSSxHQUFHLFdBQVcsU0FBTyxPQUFLLEVBQUUsYUFBYSxHQUFHLFVBQVUsTUFBSSxHQUFHLFdBQVcsZ0JBQWMsWUFBVSxHQUFHLFdBQVcsZ0JBQWMsVUFBUSxHQUFHLFdBQVcsZ0JBQWMsYUFBVyxHQUFHLEdBQUUsR0FBRyxFQUFFLENBQUMsSUFBRSxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsSUFBRSxHQUFHLENBQUMsTUFBSSxHQUFHLEVBQUUsS0FBRyxHQUFHLEVBQUUsWUFBVyxHQUFHLFVBQVUsSUFBRTtBQUFBLFlBQUU7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFLLEdBQUcsR0FBRSxJQUFFO0FBQUcsb0JBQUUsRUFBRTtBQUFNLHFCQUFPO0FBQUEsWUFBQztBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxhQUFhLENBQUMsS0FBRyxFQUFFLGdCQUFjO0FBQUEsWUFBUztBQUFDLGNBQUUsc0JBQW9CO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxhQUFhLENBQUMsS0FBRyxFQUFFLGdCQUFjO0FBQUEsWUFBUTtBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRSwyQkFBMkIsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxNQUFJLEdBQUcsRUFBRSxVQUFVLEtBQUcsR0FBRyxDQUFDLE1BQUk7QUFBQSxZQUFTO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHFCQUFPLE9BQUssS0FBRyxHQUFHLENBQUMsSUFBRSxLQUFHO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxNQUFJLEtBQUcsRUFBRSwyQkFBMkIsRUFBRSxVQUFVLEtBQUcsRUFBRSxhQUFhLEVBQUUsV0FBVyxVQUFVLEtBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxVQUFVLE1BQUksWUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLElBQUksTUFBSSxvQkFBa0IsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFHLEdBQUcsRUFBRSxVQUFVLElBQUcsSUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHFDQUFtQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsMkJBQTJCLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLDBCQUEwQixDQUFDLEtBQUcsR0FBRyxFQUFFLGtCQUFrQjtBQUFBLFlBQUM7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSwyQkFBMkIsQ0FBQyxNQUFJLENBQUMsTUFBSSxFQUFFLFdBQVcsU0FBTyxPQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksS0FBRyxHQUFHLEVBQUUsWUFBVyxJQUFFLE1BQUksR0FBRyxHQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxtQ0FBaUM7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHFCQUFPLEdBQUcsQ0FBQyxNQUFJLENBQUMsTUFBSSxFQUFFLFdBQVcsU0FBTyxPQUFLLEdBQUcsRUFBRSxVQUFVLEtBQUcsR0FBRyxFQUFFLFlBQVcsSUFBRTtBQUFBLFlBQUU7QUFBQyxjQUFFLDBDQUF3QztBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxpQ0FBK0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLDJCQUEyQixDQUFDLElBQUUsRUFBRSxPQUFLLEVBQUU7QUFBQSxZQUFrQjtBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsRUFBRSxpQkFBaUIsQ0FBQyxHQUFFO0FBQUMsb0JBQUcsQ0FBQyxHQUFHLENBQUM7QUFBRSx5QkFBTztBQUFFLG9CQUFJLEtBQUcsRUFBRSxVQUFVO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFLElBQUUsSUFBRSxHQUFHLEVBQUUsS0FBRyxHQUFHLEVBQUUsTUFBSSxjQUFZLElBQUU7QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxjQUFjLFNBQU8sTUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFFLElBQUUsR0FBRyxFQUFFLEtBQUssWUFBVyxJQUFFLEtBQUcsR0FBRyxFQUFFLElBQUksTUFBSSxlQUFhLEVBQUUsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLElBQUUsSUFBRSxHQUFHLEVBQUUsSUFBSTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLGlCQUFpQixDQUFDLEtBQUcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEtBQUcsRUFBRSxXQUFXLFNBQU87QUFBQSxZQUFHO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsRUFBRSwyQkFBMkIsQ0FBQztBQUFFLHVCQUFPLEVBQUU7QUFBSyxrQkFBSSxLQUFHLEdBQUcsRUFBRSxrQkFBa0I7QUFBRSxxQkFBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFFLEtBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSxxREFBbUQ7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLGtCQUFHLElBQUc7QUFBQyxvQkFBRyxFQUFFLGFBQWEsRUFBRTtBQUFFLHlCQUFPLEdBQUc7QUFBWSxvQkFBRyxFQUFFLG9CQUFvQixFQUFFLEtBQUcsRUFBRSxpQkFBaUIsRUFBRTtBQUFFLHlCQUFPLEVBQUUseUJBQXlCLEdBQUcsSUFBSTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxpQ0FBK0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRyxFQUFFLFdBQVcsU0FBTztBQUFJLHVCQUFPO0FBQUUsa0JBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQU87QUFBRSxrQkFBRyxHQUFHLEVBQUUsWUFBVyxJQUFFLEdBQUU7QUFBQyxvQkFBRyxHQUFHLEVBQUUsVUFBVTtBQUFFLHlCQUFPO0FBQUUseUJBQVEsS0FBRyxHQUFFLENBQUMsRUFBRSxhQUFhLEdBQUcsVUFBVTtBQUFHLHVCQUFHLEdBQUc7QUFBVyxvQkFBSSxLQUFHLEdBQUc7QUFBVyxxQkFBSSxHQUFHLGdCQUFjLGFBQVcsR0FBRyxnQkFBYyxZQUFVLEdBQUcsRUFBRSxNQUFJLGNBQVksR0FBRyxDQUFDO0FBQUUseUJBQU87QUFBRSxvQkFBRyxHQUFHLEdBQUUsSUFBRSxLQUFHLEVBQUUsMEJBQTBCLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBRSx5QkFBTztBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUM7QUFBQyxjQUFFLDZDQUEyQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFLLEVBQUUsbUJBQW1CLEVBQUUsS0FBSztBQUFHLG9CQUFFLEVBQUU7QUFBTSxxQkFBTyxFQUFFO0FBQUEsWUFBSztBQUFDLGNBQUUsbUNBQWlDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxtQkFBbUIsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxNQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0NBQThCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxVQUFRLEVBQUUsT0FBTyxTQUFPLFFBQU0sQ0FBQyxFQUFFLDBCQUEwQixDQUFDLEtBQUcsR0FBRyxDQUFDLE1BQUksQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTTtBQUFBLFlBQUM7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUksS0FBRyxFQUFFO0FBQWlCLGVBQUMsQ0FBQyxNQUFJLEVBQUUsR0FBRyxRQUFNLFlBQVUsRUFBRSxHQUFHLFFBQU0sY0FBWSxHQUFHLEVBQUUsS0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFHLEdBQUcsU0FBTyxHQUFHLFFBQU0sR0FBRyxFQUFFLE9BQUssRUFBRSxtQkFBaUI7QUFBQSxZQUFHO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFO0FBQWlCLHVCQUFNO0FBQUcsa0JBQUksS0FBRyxFQUFFO0FBQWlCLHFCQUFPLEdBQUcsU0FBTyxPQUFLLEVBQUUsc0JBQXNCLEVBQUUsS0FBRyxHQUFHLGVBQWEsRUFBRSxlQUFlLEdBQUcsV0FBVztBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUc7QUFBRyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBSSwwQkFBTyxLQUFHLEVBQUUsYUFBYSxFQUFFLGFBQVksU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxJQUFHLElBQUU7QUFBQSxrQkFBQyxDQUFDLE9BQUssUUFBTSxPQUFLLFNBQU8sU0FBTyxHQUFHLFVBQVU7QUFBQSxxQkFBUTtBQUFJLHlCQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFnQixFQUFFLG1CQUFtQjtBQUFBLHFCQUFPO0FBQUkseUJBQU8sRUFBRSxTQUFTLEtBQUcsRUFBRSxRQUFRLEVBQUUsaUJBQWdCLEVBQUUseUJBQXlCLE9BQUssUUFBTSxPQUFLLFNBQU8sU0FBTyxHQUFHLFlBQVcsRUFBRSxtQkFBbUI7QUFBQTtBQUFVLG9CQUFFLE1BQU0sWUFBWSxDQUFDO0FBQUE7QUFBQSxZQUFFO0FBQUMsY0FBRSx1Q0FBcUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLENBQUMsS0FBRyxFQUFFLE1BQU0sa0JBQWtCLEVBQUUsTUFBTTtBQUFBLFlBQUM7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPLEVBQUUsT0FBTztBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxFQUFFO0FBQUEscUJBQVk7QUFBSSx5QkFBTyxFQUFFLE9BQU87QUFBQSxxQkFBWTtBQUFJLHlCQUFPLEdBQUcsRUFBRSxNQUFNLEtBQUcsR0FBRyxFQUFFLFFBQU8sS0FBRSxJQUFFLEVBQUUsU0FBTztBQUFBLHFCQUFZO0FBQUkseUJBQU8sRUFBRSxNQUFNLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxRQUFPLEVBQUUsZ0JBQWdCO0FBQUE7QUFBVTtBQUFBO0FBQUEsWUFBTztBQUFDLGNBQUUsa0NBQWdDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxFQUFFO0FBQUEscUJBQXFCO0FBQUkseUJBQU8sRUFBRSxnQkFBZ0IsU0FBTyxNQUFJLEVBQUUsZ0JBQWdCLGFBQVc7QUFBQSxxQkFBWTtBQUFJLHlCQUFPLEdBQUcsQ0FBQyxJQUFFLEVBQUUsU0FBUyxVQUFRO0FBQUEscUJBQVk7QUFBSSx5QkFBTyxFQUFFLFVBQVU7QUFBQSxxQkFBUTtBQUFJLHlCQUFPLEVBQUUsS0FBSyxTQUFPLEtBQUcsRUFBRSxPQUFLO0FBQUE7QUFBZSx5QkFBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQUE7QUFBQSxZQUFFO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBSSx5QkFBTyxFQUFFLGdCQUFjLEVBQUUsUUFBUSxFQUFFLGFBQWEsZUFBYyxFQUFFLGlCQUFpQjtBQUFBLHFCQUFPO0FBQUkseUJBQU87QUFBQSxxQkFBTztBQUFJLHlCQUFPLEVBQUUsZ0JBQWMsRUFBRSxRQUFRLEVBQUUsY0FBYSxFQUFFLGlCQUFpQjtBQUFBO0FBQVUseUJBQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLGNBQUUsOEJBQTRCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLE9BQUssQ0FBQyxDQUFDLEVBQUUsZ0JBQWMsQ0FBQyxDQUFDLEVBQUUsYUFBYTtBQUFBLFlBQUk7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUcsRUFBRSxNQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxvQkFBRztBQUFHLHlCQUFPO0FBQUEsY0FBRTtBQUFDLGtCQUFHLEVBQUUsZUFBYztBQUFDLG9CQUFJLEtBQUcsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLElBQUUsR0FBRyxFQUFFLGFBQWEsSUFBRSxFQUFFLFFBQVEsRUFBRSxjQUFjLFVBQVMsRUFBRTtBQUFFLG9CQUFHO0FBQUcseUJBQU87QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUc7QUFBRSx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLGtCQUFnQjtBQUFBO0FBQU8scUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUUsb0JBQW9CLENBQUMsSUFBRSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsSUFBRSxRQUFPLEtBQUcsRUFBRSxRQUFRLE1BQUksR0FBRyxNQUFLLEVBQUUsWUFBWTtBQUFFLHFCQUFNLENBQUMsQ0FBQyxNQUFJLEdBQUcsZ0JBQWM7QUFBQSxZQUFLO0FBQUMsY0FBRSw0QkFBMEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLENBQUMsS0FBRyxFQUFFLHVCQUF1QixDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsc0JBQXNCLENBQUMsS0FBRyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsS0FBRyxFQUFFLFdBQVcsY0FBYyxTQUFPLEtBQUcsR0FBRyxFQUFFLFVBQVUsSUFBRTtBQUFBLFlBQU07QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLHNCQUFzQixDQUFDLEtBQUcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEtBQUcsR0FBRyxFQUFFLFVBQVUsTUFBSSxLQUFHLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxLQUFLLE1BQUksRUFBRSxXQUFXLE1BQU0sY0FBYyxTQUFPLE1BQUksRUFBRSxXQUFXLE1BQU0sY0FBYyxTQUFPLE1BQUksRUFBRSxXQUFXLE1BQU0sUUFBTTtBQUFBLFlBQU07QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBSSxzQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLE1BQUksR0FBRztBQUFBLHFCQUFpQjtBQUFJLHlCQUFPLEVBQUU7QUFBQSxxQkFBaUI7QUFBSSx5QkFBTyxFQUFFO0FBQUE7QUFBQSxZQUFZO0FBQUMsY0FBRSwrREFBNkQ7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLG9CQUFvQixDQUFDLElBQUUsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsWUFBWSxJQUFFO0FBQUEsWUFBTTtBQUFDLGNBQUUsdUNBQXFDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsUUFBTSxFQUFFLEtBQUssU0FBTyxNQUFJLEVBQUUsT0FBSztBQUFBLFlBQU07QUFBQyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLGtCQUFJO0FBQUcsaUJBQUcsQ0FBQyxLQUFHLEVBQUUsZUFBZSxDQUFDLEtBQUcsRUFBRSxjQUFjLEVBQUUsV0FBVyxNQUFJLEtBQUcsRUFBRSxTQUFTLElBQUcsR0FBRyxHQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUM7QUFBRyx1QkFBUSxLQUFHLEdBQUUsTUFBSSxHQUFHLFVBQVE7QUFBQyxvQkFBRyxFQUFFLGNBQWMsRUFBRSxNQUFJLEtBQUcsRUFBRSxTQUFTLElBQUcsR0FBRyxHQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUcsR0FBRyxTQUFPLEtBQUk7QUFBQyx1QkFBRyxFQUFFLFNBQVMsS0FBSSxLQUFHLEVBQUUsK0JBQTZCLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQztBQUFFO0FBQUEsZ0JBQUs7QUFBQyxvQkFBRyxHQUFHLFNBQU8sS0FBSTtBQUFDLHVCQUFHLEVBQUUsU0FBUyxLQUFJLEtBQUcsRUFBRSxtQ0FBaUMsRUFBRSwyQkFBMkIsRUFBRSxDQUFDO0FBQUU7QUFBQSxnQkFBSztBQUFDLHFCQUFHLEdBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyxxQkFBTyxNQUFJLEVBQUU7QUFBQSxZQUFVO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLGtCQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsT0FBTyxHQUFHLE1BQUssU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxTQUFPLEtBQUcsQ0FBQyxFQUFFLElBQUU7QUFBQSxjQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxDQUFDLEVBQUUsSUFBRTtBQUFBLFlBQU07QUFBQyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHFCQUFNLENBQUMsRUFBRSxlQUFlLEVBQUUsS0FBRyxDQUFDLEdBQUcsVUFBUSxDQUFDLEVBQUUsUUFBUSxHQUFHLE1BQU0sS0FBRyxDQUFDLEVBQUUsMEJBQTBCLEdBQUcsT0FBTyxNQUFNLEtBQUcsR0FBRyxPQUFPLFdBQVM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFO0FBQU8sa0JBQUcsR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssRUFBRSxTQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxFQUFFLEtBQUcsRUFBRSxtQkFBbUIsQ0FBQyxLQUFHLEVBQUUsY0FBYyxTQUFPO0FBQUcsdUJBQU87QUFBRyxrQkFBRyxHQUFHLFdBQVMsR0FBRyxHQUFHLE1BQU0sTUFBSSxLQUFHLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxHQUFHLGNBQWMsU0FBTztBQUFJLHVCQUFPLEdBQUc7QUFBTyxrQkFBRyxHQUFHLFVBQVEsR0FBRyxPQUFPLFdBQVMsR0FBRyxHQUFHLE9BQU8sTUFBTSxLQUFHLEdBQUcsR0FBRyxPQUFPLE1BQU0sTUFBSSxLQUFHLEdBQUcsR0FBRyxPQUFPLE1BQU07QUFBRyx1QkFBTyxHQUFHLE9BQU87QUFBQSxZQUFNO0FBQUMsY0FBRSw4QkFBNEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRyxFQUFFO0FBQU8sdUJBQU8sRUFBRTtBQUFPLGtCQUFHLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsS0FBSyxhQUFZLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUcsQ0FBQyxDQUFDLElBQUc7QUFBQyxzQkFBSSxLQUFHLEVBQUUsS0FBSyxHQUFHLFlBQVcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxLQUFLLFNBQU8sTUFBSSxHQUFHLEtBQUssZ0JBQWM7QUFBQSxrQkFBRSxDQUFDO0FBQUUseUJBQU8sTUFBSSxHQUFHO0FBQUEsZ0JBQU07QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsOEJBQTRCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxNQUFLO0FBQUMsb0JBQUksS0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLE1BQUssRUFBRTtBQUFFLG9CQUFHO0FBQUcseUJBQU87QUFBQSxjQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsMkNBQXlDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxrQkFBRztBQUFHLHVCQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBRyxHQUFHLFFBQU0sRUFBRSxlQUFlLEdBQUcsSUFBSSxJQUFFLEdBQUcsT0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFFLEtBQUc7QUFBQSxZQUFNO0FBQUMsY0FBRSw0QkFBMEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLGtCQUFHO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFLEtBQUc7QUFBQSxZQUFFO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLGtCQUFHLENBQUMsQ0FBQyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHO0FBQU8sb0JBQUcsTUFBSSxHQUFHLFNBQU8sT0FBSyxFQUFFLGdCQUFnQixHQUFHLEtBQUs7QUFBRSx5QkFBTztBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxhQUFhLEVBQUUsUUFBTyxFQUFFLE9BQU87QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFLEtBQUssYUFBWSxLQUFHLEVBQUUsT0FBTyxPQUFPLE9BQU87QUFBZSxxQkFBTyxNQUFJLEVBQUUsS0FBSyxJQUFHLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsS0FBSyxnQkFBYztBQUFBLGNBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVO0FBQUUscUJBQU0sQ0FBQyxDQUFDLE1BQUksR0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFLG9CQUFvQixDQUFDLElBQUUsRUFBRSxrQkFBZ0IsRUFBRSxlQUFlLE9BQUssRUFBRTtBQUFLLHFCQUFPLEVBQUUsbUJBQWlCLFVBQVEsQ0FBQyxDQUFDLE1BQUksR0FBRyxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsa0JBQWdCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxDQUFDLEVBQUU7QUFBQSxZQUFhO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxnQkFBSTtBQUFHLGFBQUMsU0FBUyxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxPQUFLLEtBQUcsUUFBTyxFQUFFLEVBQUUsV0FBUyxLQUFHLFlBQVcsRUFBRSxFQUFFLFdBQVMsS0FBRztBQUFBLFlBQVUsR0FBRyxLQUFHLEVBQUUsbUJBQWlCLEVBQUUsaUJBQWUsQ0FBQyxFQUFFO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQVEsS0FBRyxFQUFFLFlBQVM7QUFBQyx3QkFBTyxHQUFHO0FBQUEsdUJBQVc7QUFBSSx3QkFBSSxLQUFHLEdBQUcsY0FBYztBQUFLLDJCQUFPLEdBQUcsRUFBRSxLQUFHLEdBQUcsU0FBTyxJQUFFLE9BQUssTUFBSSxHQUFHLEVBQUUsSUFBRSxJQUFFLElBQUU7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksd0JBQUksS0FBRyxHQUFHO0FBQVMsMkJBQU8sT0FBSyxNQUFJLE9BQUssS0FBRyxJQUFFO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsZ0JBQWMsSUFBRSxJQUFFO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSx3QkFBRTtBQUFHO0FBQUEsdUJBQVc7QUFBSSx3QkFBRSxHQUFHO0FBQU87QUFBQSx1QkFBVztBQUFJLHdCQUFHLEdBQUcsU0FBTztBQUFFLDZCQUFPO0FBQUUsd0JBQUUsR0FBRztBQUFPO0FBQUEsdUJBQVc7QUFBSSx3QkFBRyxHQUFHLFNBQU87QUFBRSw2QkFBTztBQUFFLHdCQUFFLEdBQUc7QUFBTztBQUFBO0FBQWMsMkJBQU87QUFBQTtBQUFFLHFCQUFHLEVBQUU7QUFBQSxjQUFNO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLE1BQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSx1Q0FBcUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLHFCQUFxQixDQUFDLEtBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFHLEVBQUUsbUJBQW1CLENBQUMsS0FBRyxFQUFFLHNCQUFzQixDQUFDLEtBQUcsRUFBRSx5QkFBeUIsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDhCQUE0QjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQUssS0FBRyxFQUFFLFNBQU87QUFBSSxvQkFBRSxFQUFFO0FBQU8scUJBQU87QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxHQUFFLEdBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsR0FBRztBQUFBLFlBQUM7QUFBQyxjQUFFLGlDQUErQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFRLElBQUcsS0FBRyxFQUFFLFNBQU87QUFBSyxxQkFBRyxHQUFFLElBQUUsRUFBRTtBQUFPLHFCQUFNLENBQUMsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsK0NBQTZDO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxrQkFBSSxLQUFHLEtBQUcsS0FBRztBQUFFLHFCQUFPLEVBQUUscUJBQXFCLEdBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxNQUFJLFNBQUksSUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFFLEtBQUcsRUFBRSxTQUFPO0FBQUEsWUFBSTtBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHFCQUFLLEtBQUc7QUFBQyxvQkFBRyxNQUFJO0FBQUcseUJBQU07QUFBRyxvQkFBRSxFQUFFO0FBQUEsY0FBTTtBQUFDLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU0sQ0FBQyxFQUFFLGFBQWEsQ0FBQyxLQUFHLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxLQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sS0FBRyxFQUFFLE9BQU8sU0FBTztBQUFBLFlBQUM7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRTtBQUFPLHNCQUFPLEVBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBRSxzQkFBRyxFQUFFLHVCQUF1QixFQUFFO0FBQUUsMkJBQU8sR0FBRztBQUFBLHFCQUFZO0FBQUcsc0JBQUcsRUFBRSxjQUFjLEVBQUU7QUFBRSwyQkFBTyxHQUFHLFNBQU8sSUFBRSxLQUFHO0FBQU8sc0JBQUcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFFO0FBQUMsd0JBQUksS0FBRyxHQUFHO0FBQU8sMkJBQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFHLEdBQUcsU0FBTyxLQUFHLEtBQUc7QUFBQSxrQkFBTSxPQUFLO0FBQUMsd0JBQUksS0FBRyxHQUFHO0FBQU8sMkJBQU8sRUFBRSxtQkFBbUIsRUFBRSxLQUFHLEdBQUcsRUFBRSxNQUFJLE1BQUksR0FBRyxLQUFLLFVBQVEsR0FBRyxXQUFTLEVBQUUscUJBQXFCLEVBQUUsTUFBSSxJQUFFLEtBQUc7QUFBQSxrQkFBTTtBQUFBLHFCQUFNO0FBQUcseUJBQU8sRUFBRSxjQUFjLEVBQUUsS0FBRyxHQUFHLFNBQU8sSUFBRSxLQUFHO0FBQUE7QUFBZTtBQUFBO0FBQUEsWUFBTztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLE1BQU07QUFBQSxZQUFDO0FBQUMsY0FBRSwyQ0FBeUM7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUU7QUFBTyxzQkFBTyxHQUFHO0FBQUEscUJBQVc7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU8sR0FBRyxTQUFPO0FBQUEscUJBQU87QUFBSSx5QkFBTyxHQUFHLFVBQVE7QUFBQSxxQkFBTztBQUFBLHFCQUFTO0FBQUkseUJBQU8sR0FBRyxpQkFBZTtBQUFBLHFCQUFPO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxDQUFDLENBQUMsRUFBRSxRQUFNLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxPQUFLLEdBQUcsQ0FBQyxJQUFFLE9BQUcsR0FBRyxDQUFDLE1BQUksRUFBRSxtQkFBbUIsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxNQUFJLEtBQUcsR0FBRyxDQUFDLEtBQUcsRUFBRSwyQkFBMkIsQ0FBQyxLQUFHLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxTQUFPLEtBQUcsRUFBRSxPQUFPLGNBQWMsU0FBTyxNQUFJLEdBQUcsRUFBRSxPQUFPLEtBQUs7QUFBQSxZQUFFO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFLE9BQU87QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFPLEVBQUU7QUFBQSxxQkFBWTtBQUFJO0FBQUcsd0JBQUUsRUFBRTtBQUFBLHlCQUFhLEVBQUUsT0FBTyxTQUFPO0FBQUsseUJBQU8sR0FBRyxDQUFDO0FBQUE7QUFBQSxZQUFFO0FBQUMsY0FBRSw4QkFBNEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxHQUFHLENBQUMsS0FBRyxFQUFFLGtCQUFrQixDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxxQkFBTyxHQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLG1CQUFtQixDQUFDLElBQUUsRUFBRSxhQUFXLEVBQUU7QUFBQSxZQUFLO0FBQUMsY0FBRSxnQ0FBOEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFNBQU8sTUFBSSxFQUFFLE9BQUssRUFBRSxTQUFPLE1BQUksRUFBRSxjQUFZLEVBQUUsT0FBTztBQUFBLFlBQUs7QUFBQyxjQUFFLDJDQUF5QztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsa0JBQUcsTUFBSSxHQUFHLENBQUMsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxvQkFBb0IsQ0FBQztBQUFFLG9CQUFHO0FBQUcseUJBQU8sR0FBRztBQUFBLGNBQUs7QUFBQyxxQkFBTztBQUFBLFlBQUU7QUFBQyxjQUFFLDJCQUF5QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsR0FBRyxFQUFFLGlCQUFnQixFQUFFO0FBQUUscUJBQU8sTUFBSSxHQUFHLE1BQU0sU0FBTyxJQUFFLEdBQUcsTUFBTSxLQUFHO0FBQUEsWUFBTTtBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQU8sRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLElBQUksU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRztBQUFBLGdCQUFLLENBQUM7QUFBRSxrQkFBSSxLQUFHLEdBQUcsRUFBRSxpQkFBZ0IsR0FBRztBQUFFLHFCQUFPLE1BQUksT0FBSyxTQUFPLEdBQUc7QUFBQSxZQUFLO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLHVCQUF1QixDQUFDLElBQUUsR0FBRyxDQUFDLEtBQUcsRUFBRSxhQUFXLEVBQUUsWUFBWSxDQUFDLEtBQUcsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsS0FBRyxFQUFFO0FBQUEsWUFBVTtBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxHQUFHLEVBQUUsaUJBQWdCLEVBQUU7QUFBRSxxQkFBTyxLQUFHLEdBQUcsUUFBTTtBQUFBLFlBQU07QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUc7QUFBRSx5QkFBUSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUc7QUFBSSxzQkFBRyxHQUFHLFVBQVE7QUFBRywyQkFBTztBQUFBLGdCQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBSyxLQUFHO0FBQUMsb0JBQUcsRUFBRSxTQUFPO0FBQUcseUJBQU87QUFBRSxvQkFBRSxFQUFFO0FBQUEsY0FBTTtBQUFBLFlBQUM7QUFBQyxjQUFFLGNBQVk7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxNQUFJLEtBQUcsS0FBRztBQUFBLFlBQUc7QUFBQyxjQUFFLFlBQVU7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxPQUFLLEtBQUcsS0FBRztBQUFBLFlBQUc7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsQ0FBQyxLQUFHLENBQUMsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sT0FBSyxLQUFHLEtBQUc7QUFBQSxZQUFHO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUUsY0FBYyxDQUFDO0FBQUUscUJBQU8sT0FBSyxVQUFRLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGdDQUE4QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRSxjQUFjLENBQUM7QUFBRSxxQkFBTyxPQUFLLFVBQVEsR0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFO0FBQW9CLHFCQUFNLENBQUMsQ0FBQyxNQUFJLENBQUMsR0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsb0NBQWtDO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sS0FBRyxLQUFHLEtBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSxXQUFTO0FBQUcsZ0JBQUk7QUFBRyxhQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFFLEVBQUUsU0FBTyxLQUFHLFVBQVMsRUFBRSxFQUFFLFlBQVUsS0FBRyxhQUFZLEVBQUUsRUFBRSxRQUFNLEtBQUcsU0FBUSxFQUFFLEVBQUUsVUFBUSxLQUFHLFdBQVUsRUFBRSxFQUFFLGlCQUFlLEtBQUc7QUFBQSxZQUFnQixHQUFHLEtBQUcsRUFBRSxrQkFBZ0IsRUFBRSxnQkFBYyxDQUFDLEVBQUU7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRyxDQUFDO0FBQUUsdUJBQU87QUFBRSxrQkFBSSxLQUFHO0FBQUUsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLG9CQUFFLGtCQUFnQixNQUFJO0FBQUEscUJBQVE7QUFBSSxxQkFBRyxHQUFFLEdBQUcsTUFBSSxNQUFJO0FBQUc7QUFBQTtBQUFNLHFCQUFPLEVBQUUsU0FBTyxNQUFJLElBQUc7QUFBQSxZQUFFO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBTyxFQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxFQUFFLFNBQU8sVUFBUSxFQUFFLGtCQUFnQixVQUFRLEdBQUcsR0FBRSxHQUFHO0FBQUE7QUFBRSxxQkFBTTtBQUFBLFlBQUU7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsb0JBQW9CLENBQUMsS0FBRyxFQUFFLGlCQUFpQixDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSx3QkFBd0IsQ0FBQyxNQUFJLEVBQUUsYUFBVyxNQUFJLEVBQUUsYUFBVyxPQUFLLEVBQUUsaUJBQWlCLEVBQUUsT0FBTztBQUFBLFlBQUM7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRSxxQkFBcUIsQ0FBQztBQUFFLHFCQUFNLENBQUMsQ0FBQyxNQUFJLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGlCQUFlO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUcsRUFBRSxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU87QUFBSyx1QkFBTTtBQUFHLGtCQUFJLEtBQUcsRUFBRSwwQkFBMEIsQ0FBQyxJQUFFLEdBQUcsRUFBRSxrQkFBa0IsSUFBRSxFQUFFO0FBQVcscUJBQU0sQ0FBQyxHQUFHLEVBQUUsS0FBRyxDQUFDLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGdCQUFjO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVE7QUFBRyx5QkFBTyxFQUFFO0FBQUEscUJBQWlCO0FBQUEscUJBQVE7QUFBRSx5QkFBTyxFQUFFLHlCQUF5QixFQUFFLElBQUk7QUFBQSxxQkFBTztBQUFJLHNCQUFJLEtBQUcsRUFBRTtBQUFXLHlCQUFPLEdBQUcsRUFBRSxJQUFFLEVBQUUseUJBQXlCLEdBQUcsSUFBSSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsYUFBVyxLQUFHLEVBQUUsY0FBYyxHQUFHLFFBQVEsSUFBRSxHQUFHLFFBQVEsT0FBSyxHQUFHLFFBQVEsT0FBSztBQUFBO0FBQWUseUJBQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLGNBQUUscUNBQW1DO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUUseUJBQU07QUFBQTtBQUFXLHlCQUFNO0FBQUE7QUFBQSxZQUFHO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLGFBQWEsQ0FBQyxJQUFFLEVBQUUsT0FBTyxDQUFDLElBQUUsRUFBRTtBQUFBLFlBQUk7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsYUFBYSxDQUFDLElBQUUsRUFBRSxjQUFZLEVBQUUseUJBQXlCLEVBQUUsSUFBSTtBQUFBLFlBQUM7QUFBQyxjQUFFLHNDQUFvQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFNLE1BQU0sT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVztBQUFBLFlBQUM7QUFBQyxjQUFFLG1DQUFpQztBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMscUJBQU0sTUFBTSxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG9DQUFrQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsV0FBVyxFQUFFLGFBQVksS0FBSztBQUFBLFlBQUM7QUFBQyxjQUFFLGdCQUFjO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxXQUFXLEVBQUUsYUFBWSxLQUFLO0FBQUEsWUFBQztBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLE1BQUksRUFBRSxnQkFBYztBQUFBLFlBQVE7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsZ0JBQWMsVUFBUSxFQUFFLGdCQUFjO0FBQUEsWUFBUztBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBSyxFQUFFLFNBQU87QUFBSyxvQkFBRSxFQUFFLE9BQU87QUFBTyxxQkFBTztBQUFBLFlBQUM7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRTtBQUFLLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSztBQUFBLFlBQUc7QUFBQyxjQUFFLGtDQUFnQztBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsRUFBRSxHQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLGlCQUFpQixHQUFFLEVBQUUsWUFBWSxLQUFHO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcsZ0JBQUk7QUFBRyxhQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFFLEVBQUUsT0FBSyxLQUFHLFFBQU8sRUFBRSxFQUFFLFFBQU0sS0FBRztBQUFBLFlBQU8sR0FBRyxLQUFHLEVBQUUsa0JBQWdCLEVBQUUsZ0JBQWMsQ0FBQyxFQUFFO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsY0FBWTtBQUFPLHFCQUFPLEdBQUcsRUFBRSxNQUFLLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUkseUJBQU8sS0FBRyxJQUFFO0FBQUEscUJBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTztBQUFBLHFCQUFPO0FBQUksMEJBQU87QUFBQSx5QkFBUztBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQTtBQUFBO0FBQUcscUJBQU87QUFBQSxZQUFDO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxTQUFPLE9BQUssRUFBRSxjQUFZO0FBQU8scUJBQU8sR0FBRyxFQUFFLE1BQUssSUFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxTQUFPLE1BQUksRUFBRSxjQUFjLE9BQUssRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPLE1BQUksRUFBRSxXQUFTLEVBQUU7QUFBQSxZQUFJO0FBQUMsY0FBRSxjQUFZO0FBQUcsZ0JBQUk7QUFBRyxhQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFFLEVBQUUsUUFBTSxLQUFHLFNBQVEsRUFBRSxFQUFFLFNBQU8sS0FBRyxVQUFTLEVBQUUsRUFBRSxRQUFNLEtBQUcsU0FBUSxFQUFFLEVBQUUsYUFBVyxLQUFHLGNBQWEsRUFBRSxFQUFFLGNBQVksS0FBRyxlQUFjLEVBQUUsRUFBRSxXQUFTLEtBQUcsWUFBVyxFQUFFLEVBQUUsWUFBVSxLQUFHLGFBQVksRUFBRSxFQUFFLGFBQVcsS0FBRyxjQUFhLEVBQUUsRUFBRSxZQUFVLEtBQUcsYUFBWSxFQUFFLEVBQUUsYUFBVyxLQUFHLGNBQWEsRUFBRSxFQUFFLGFBQVcsS0FBRyxjQUFhLEVBQUUsRUFBRSxXQUFTLE1BQUksWUFBVyxFQUFFLEVBQUUsYUFBVyxNQUFJLGNBQWEsRUFBRSxFQUFFLFFBQU0sTUFBSSxTQUFRLEVBQUUsRUFBRSxXQUFTLE1BQUksWUFBVyxFQUFFLEVBQUUsaUJBQWUsTUFBSSxrQkFBaUIsRUFBRSxFQUFFLGlCQUFlLE1BQUksa0JBQWlCLEVBQUUsRUFBRSxRQUFNLE1BQUksU0FBUSxFQUFFLEVBQUUsU0FBTyxNQUFJLFVBQVMsRUFBRSxFQUFFLGVBQWEsTUFBSSxnQkFBZSxFQUFFLEVBQUUsU0FBTyxNQUFJLFVBQVMsRUFBRSxFQUFFLFVBQVEsTUFBSSxXQUFVLEVBQUUsRUFBRSxVQUFRLE1BQUksV0FBVSxFQUFFLEVBQUUsU0FBTyxLQUFHLFVBQVMsRUFBRSxFQUFFLFVBQVEsTUFBSTtBQUFBLFlBQVMsR0FBRyxLQUFHLEVBQUUsdUJBQXFCLEVBQUUscUJBQW1CLENBQUMsRUFBRTtBQUFFLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxzQkFBTztBQUFBLHFCQUFRO0FBQUkseUJBQU87QUFBQSxxQkFBTztBQUFJLHlCQUFPO0FBQUEscUJBQU87QUFBSSx5QkFBTztBQUFBLHFCQUFPO0FBQUkseUJBQU87QUFBQSxxQkFBTztBQUFJLDBCQUFPO0FBQUEseUJBQVM7QUFBRyw2QkFBTztBQUFBLHlCQUFPO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUcsNkJBQU87QUFBQTtBQUFVLDZCQUFPLEdBQUcsRUFBRTtBQUFBO0FBQUEscUJBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTztBQUFBLHFCQUFRO0FBQUkseUJBQU87QUFBQSxxQkFBUTtBQUFJLHlCQUFPO0FBQUEscUJBQVE7QUFBSSx5QkFBTyxLQUFHLEtBQUc7QUFBQSxxQkFBUTtBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFPO0FBQUEscUJBQVE7QUFBSSx5QkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVE7QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTztBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBRyx5QkFBTztBQUFBLHFCQUFPO0FBQUcseUJBQU87QUFBQSxxQkFBTztBQUFHLHlCQUFPO0FBQUEscUJBQU87QUFBRyx5QkFBTztBQUFBLHFCQUFPO0FBQUcseUJBQU87QUFBQSxxQkFBTztBQUFHLHlCQUFPO0FBQUEscUJBQU87QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBRyx5QkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU87QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBRyx5QkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBRyx5QkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFHLHlCQUFPO0FBQUEscUJBQVE7QUFBRyx5QkFBTztBQUFBO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSw4QkFBNEI7QUFBRyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE9BQU8sR0FBRSxTQUFTLElBQUc7QUFBQyx3QkFBTyxHQUFHO0FBQUEsdUJBQVc7QUFBSSwyQkFBTSxDQUFDLENBQUMsR0FBRztBQUFBLHVCQUFnQjtBQUFHLDJCQUFNLENBQUMsR0FBRztBQUFBO0FBQXNDLDJCQUFNO0FBQUE7QUFBQSxjQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxLQUFJO0FBQUMsa0JBQUksSUFBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsS0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHO0FBQUcscUJBQU0sRUFBQyxLQUFJLElBQUcsUUFBTyxJQUFHLHNCQUFxQixJQUFHLGdCQUFlLEdBQUU7QUFBRSx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSTtBQUFHLG9CQUFHLEdBQUcsT0FBSyxLQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFFLEtBQUcsR0FBRSxDQUFDLENBQUMsSUFBRztBQUFDLHNCQUFJLEtBQUcsRUFBRSxhQUFhLElBQUcsSUFBRyxFQUFFLFVBQVMsRUFBRTtBQUFFLHNCQUFHLE1BQUk7QUFBRSwyQkFBTyxHQUFHO0FBQUEsZ0JBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUk7QUFBRyxtQkFBRyxRQUFNLEtBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxRQUFRLEdBQUUsT0FBSyxLQUFHLENBQUMsR0FBRSxHQUFHLElBQUksR0FBRyxLQUFLLFVBQVMsRUFBRSxHQUFFLEVBQUUsYUFBYSxJQUFHLEdBQUcsS0FBSyxVQUFTLEVBQUUsMkJBQTJCLE9BQUssT0FBSyxLQUFHLE9BQUcsSUFBRSxFQUFFLE1BQU0sSUFBRyxLQUFHLElBQUcsRUFBRSxhQUFhLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxLQUFHLE1BQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUc7QUFBRyx5QkFBTyxHQUFHLElBQUksRUFBRSxLQUFHLENBQUM7QUFBRSxvQkFBSSxLQUFHLEVBQUUsaUJBQWlCLElBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxJQUFJLEVBQUU7QUFBQSxnQkFBQyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxVQUFRLEdBQUcsUUFBUSxNQUFNLElBQUcsQ0FBQyxHQUFFO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLGdCQUFJLEtBQUc7QUFBUSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsSUFBRyxNQUFNO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEtBQUcsQ0FBQyxFQUFFLEVBQUUsZ0NBQWdDLENBQUMsSUFBRSxFQUFFLGdCQUFjLEVBQUUsS0FBSyxpQkFBZSxFQUFFLEtBQUssRUFBRSxlQUFjLFNBQVMsSUFBRztBQUFDLHVCQUFNLENBQUMsQ0FBQyxHQUFHLFFBQVE7QUFBQSxjQUFhLENBQUM7QUFBQSxZQUFFO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxnQkFBSSxLQUFHLHNEQUFxRCxLQUFHLHNEQUFxRCxLQUFHLHlEQUF3RCxLQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFDLEtBQUksT0FBTSxNQUFLLE9BQU0sTUFBSyxPQUFNLE1BQUssT0FBTSxNQUFLLE9BQU0sTUFBSyxPQUFNLE1BQUssUUFBTyxLQUFJLE9BQU0sS0FBSSxPQUFNLEtBQUksT0FBTSxVQUFTLFdBQVUsVUFBUyxXQUFVLFFBQU8sV0FBVSxRQUFPLFNBQVEsQ0FBQyxDQUFDO0FBQUUscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksR0FBRSxNQUFJLFNBQU8sSUFBSSxNQUFNLEVBQUU7QUFBRSxxQkFBTSxRQUFNO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxrQkFBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsV0FBVyxLQUFHLEVBQUUsTUFBTTtBQUFFLHVCQUFPLE1BQUksTUFBSSxNQUFJLEtBQUcsVUFBUTtBQUFBLGNBQUs7QUFBQyxxQkFBTyxHQUFHLElBQUksQ0FBQyxLQUFHLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLGtCQUFJLEtBQUcsT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLEtBQUc7QUFBRyxxQkFBTyxFQUFFLFFBQVEsSUFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsZUFBYTtBQUFHLGdCQUFJLEtBQUc7QUFBb0IscUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxxQkFBTyxJQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRyxLQUFLLENBQUMsSUFBRSxFQUFFLFFBQVEsSUFBRyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFBQSxjQUFDLENBQUMsSUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLGdCQUFJLEtBQUcsd0NBQXVDLEtBQUcsd0NBQXVDLEtBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUMsS0FBSSxVQUFTLEtBQUksU0FBUSxDQUFDLENBQUM7QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsWUFBWTtBQUFFLHFCQUFNLFFBQU0sS0FBRztBQUFBLFlBQUc7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFdBQVcsQ0FBQyxNQUFJLElBQUUsU0FBTyxHQUFHLElBQUksQ0FBQyxLQUFHLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLGtCQUFJLEtBQUcsT0FBSyxLQUFHLEtBQUc7QUFBRyxxQkFBTyxFQUFFLFFBQVEsSUFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFO0FBQU8scUJBQU8sTUFBSSxLQUFHLEVBQUUsV0FBVyxDQUFDLE1BQUksRUFBRSxXQUFXLEtBQUcsQ0FBQyxLQUFHLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFFLEVBQUUsVUFBVSxHQUFFLEtBQUcsQ0FBQyxJQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUUsV0FBVyxDQUFDO0FBQUUscUJBQU8sTUFBSSxNQUFJLE1BQUksT0FBSyxFQUFFLGVBQWUsR0FBRSxHQUFHLEtBQUcsRUFBRSxlQUFlLEdBQUUsR0FBRztBQUFBLFlBQUM7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLGdCQUFJLEtBQUcsQ0FBQyxJQUFHLE1BQU07QUFBRSxxQkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBUSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFJLEdBQUU7QUFBSyxtQkFBRyxLQUFLLEdBQUcsS0FBRyxLQUFHLEVBQUU7QUFBRSxxQkFBTyxHQUFHO0FBQUEsWUFBRTtBQUFDLGNBQUUsa0JBQWdCO0FBQUcscUJBQVMsS0FBSTtBQUFDLHFCQUFPLEdBQUcsR0FBRztBQUFBLFlB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QTBCLElBQUcsMkJBQTBCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsNEJBQTJCLElBQUcsNEJBQTJCLElBQUcsNEJBQTJCLElBQUcsNEJBQTJCLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcseUJBQXdCLElBQUcseUJBQXdCLElBQUcsbUJBQWtCLElBQUcsbUJBQWtCLElBQUcsaUJBQWdCLElBQUcsaUJBQWdCLElBQUcsa0NBQWlDLElBQUcsa0NBQWlDLElBQUcsK0JBQThCLElBQUcsK0JBQThCLElBQUcseUJBQXdCLElBQUcseUJBQXdCLElBQUcsb0JBQW1CLElBQUcsb0JBQW1CLElBQUcsb0JBQW1CLElBQUcsb0JBQW1CLElBQUcsbUJBQWtCLElBQUcsbUJBQWtCLElBQUcsb0NBQW1DLElBQUcsb0NBQW1DLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcsb0JBQW1CLElBQUcsb0JBQW1CLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcseUJBQXdCLElBQUcseUJBQXdCLElBQUcsb0JBQW1CLElBQUcsb0JBQW1CLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcsMEJBQXlCLElBQUcsK0JBQThCLElBQUcsK0JBQThCLElBQUcsSUFBSSxxQkFBb0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSw2QkFBNEI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSw2QkFBNEI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUseUJBQXdCLElBQUcseUJBQXdCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsMkJBQTBCLElBQUcsMkJBQTBCLElBQUcsc0JBQXFCLElBQUcsc0JBQXFCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcseUJBQXdCLElBQUcseUJBQXdCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsd0JBQXVCLElBQUcsMEJBQXlCLElBQUcsMEJBQXlCLElBQUcsbUJBQWtCLElBQUcsbUJBQWtCLElBQUcsMEJBQXlCLElBQUcsMEJBQXlCLElBQUcsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcsaUJBQWdCLElBQUcsaUJBQWdCLElBQUcscUJBQW9CLElBQUcscUJBQW9CLElBQUcsc0JBQXFCLElBQUcsc0JBQXFCLElBQUcsSUFBSSxxQkFBb0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSxxQkFBb0I7QUFBQyx1QkFBTyxHQUFHLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxHQUFHLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSxxQkFBb0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSxxQkFBb0I7QUFBQyx1QkFBTyxHQUFHLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSxxQkFBb0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSxxQkFBb0I7QUFBQyx1QkFBTyxHQUFHLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSxzQkFBcUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSxzQkFBcUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx3QkFBdUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx3QkFBdUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwyQkFBMEI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsSUFBSSwyQkFBMEI7QUFBQyx1QkFBTyxFQUFFLEdBQUc7QUFBQSxjQUFDLEdBQUUsdUJBQXNCLElBQUcsdUJBQXNCLElBQUcsaUJBQWdCLElBQUcsaUJBQWdCLElBQUcsb0JBQW1CLElBQUcsb0JBQW1CLElBQUcsa0JBQWlCLElBQUcsa0JBQWlCLElBQUcsNkJBQTRCLElBQUcsNkJBQTRCLElBQUcseUJBQXdCLElBQUcseUJBQXdCLElBQUcseUJBQXdCLElBQUcseUJBQXdCLElBQUcsbUJBQWtCLElBQUcsZUFBYyxJQUFHLGVBQWMsSUFBRywwQkFBeUIsSUFBRyw2QkFBNEIsSUFBRyxtQkFBa0IsSUFBRyxvQkFBbUIsSUFBRyxvQkFBbUIsSUFBRyxxQkFBb0IsSUFBRyxxQkFBb0IsSUFBRywwQkFBeUIsSUFBRywwQkFBeUIsSUFBRyxxQkFBb0IsSUFBRyxxQkFBb0IsSUFBRyxrQkFBaUIsSUFBRyxrQkFBaUIsSUFBRyxxQkFBb0IsSUFBRyxxQkFBb0IsSUFBRyxzQkFBcUIsSUFBRyxzQkFBcUIsSUFBRyxtQkFBa0IsSUFBRyxtQkFBa0IsSUFBRywwQkFBeUIsSUFBRywwQkFBeUIsSUFBRyxtQ0FBa0MsSUFBRyxtQ0FBa0MsSUFBRyx3QkFBdUIsSUFBRyx3QkFBdUIsSUFBRyxrQkFBaUIsSUFBRyxrQkFBaUIsSUFBRyxrQkFBaUIsSUFBRyxrQkFBaUIsSUFBRyxjQUFhLElBQUcsY0FBYSxJQUFHLHNCQUFxQixJQUFHLHdCQUF1QixJQUFHLHVCQUFzQixJQUFHLHdCQUF1QixJQUFHLGtDQUFpQyxJQUFHLGtCQUFpQixJQUFHLDJCQUEwQixJQUFHLGtCQUFpQixJQUFHLDJCQUEwQixJQUFHLGtDQUFpQyxJQUFHLGtDQUFpQyxJQUFHLDJCQUEwQixJQUFHLDJCQUEwQixJQUFHLDhCQUE2QixJQUFHLDhCQUE2QixJQUFHLG9DQUFtQyxJQUFHLG9DQUFtQyxJQUFHLFdBQVUsR0FBRSxJQUFJLGNBQWE7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxrQkFBaUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxrQkFBaUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxpQkFBZ0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxpQkFBZ0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSx1QkFBc0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxvQkFBbUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSwwQkFBeUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxrQkFBaUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSwyQkFBMEI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxZQUFXO0FBQUMsdUJBQU8sRUFBRSxFQUFFO0FBQUEsY0FBQyxHQUFFLElBQUksaUJBQWdCO0FBQUMsdUJBQU8sRUFBRSxFQUFFO0FBQUEsY0FBQyxHQUFFLElBQUksaUJBQWdCO0FBQUMsdUJBQU8sRUFBRSxFQUFFO0FBQUEsY0FBQyxHQUFFLElBQUksZUFBYztBQUFDLHVCQUFPLEVBQUUsRUFBRTtBQUFBLGNBQUMsR0FBRSxJQUFJLGVBQWM7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxpQkFBZ0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxvQkFBbUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSx3QkFBdUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSx3QkFBdUI7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSxtQkFBa0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsSUFBSSx5QkFBd0I7QUFBQyx1QkFBTyxFQUFFLEVBQUU7QUFBQSxjQUFDLEdBQUUsNENBQTJDLElBQUcsdUNBQXNDLElBQUcsZ0JBQWUsSUFBRyxxQkFBb0IsSUFBRyw0QkFBMkIsSUFBRyxpQkFBZ0IsSUFBRyxrQkFBaUIsSUFBRyx3QkFBdUIsSUFBRyx3QkFBdUIsSUFBRyx3QkFBdUIsSUFBRyx5QkFBd0IsSUFBRyxzQkFBcUIsSUFBRyx1QkFBc0IsSUFBRyxnQ0FBK0IsSUFBRyxzQkFBcUIsSUFBRyxzQkFBcUIsSUFBRywwQkFBeUIsSUFBRyxtQkFBa0IsSUFBRywrQkFBOEIsSUFBRyxtQkFBa0IsSUFBRyxpQkFBZ0IsSUFBRyxjQUFhLElBQUcsZUFBYyxJQUFHLG9CQUFtQixJQUFHLHdCQUF1QixJQUFHLHdDQUF1QyxJQUFHLHlCQUF3QixJQUFHLHVCQUFzQixJQUFHLHlCQUF3QixJQUFHLGNBQWEsSUFBRyxzQkFBcUIsSUFBRyxvQkFBbUIsSUFBRyxpQkFBZ0IsSUFBRyxhQUFZLElBQUcseUJBQXdCLElBQUcsaUJBQWdCLEdBQUU7QUFBRSxxQkFBTztBQUFFLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSSxVQUFRLE1BQUksRUFBRTtBQUFXLHNCQUFFLENBQUM7QUFBQSx5QkFBVSxFQUFFLFlBQVksQ0FBQyxHQUFFO0FBQUMsc0JBQUcsTUFBSSxVQUFRLEVBQUUscUJBQW1CO0FBQUUsMkJBQU8sRUFBRSxtQkFBaUIsVUFBUSxFQUFFLENBQUMsR0FBRSxFQUFFLE1BQU0seUJBQXlCLENBQUMsR0FBRTtBQUFFLHNCQUFJLEtBQUcsRUFBRSxNQUFNO0FBQUUseUJBQU8sR0FBRyxNQUFJLEVBQUUsS0FBSSxHQUFHLE1BQUksRUFBRSxLQUFJLEdBQUcsbUJBQWlCLEdBQUUsR0FBRyxpQkFBZSxFQUFFLGdCQUFlLEVBQUUsTUFBTSx5QkFBeUIsRUFBRSxHQUFFO0FBQUEsZ0JBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsUUFBTyxLQUFHLE1BQUksS0FBRyxNQUFJLElBQUUsRUFBRSxNQUFNLElBQUU7QUFBRSx1QkFBTyxFQUFFLG1CQUFtQixJQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsbUJBQWlCLENBQUMsQ0FBQyxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsTUFBTSx5QkFBeUIsRUFBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsZUFBZSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFPLEdBQUcsYUFBVyxHQUFHLENBQUMsR0FBRSxHQUFHLFlBQVUsR0FBRyxFQUFFLEdBQUUsR0FBRyxrQkFBZ0IsRUFBRSxHQUFHLFVBQVUsSUFBRSxFQUFFLEdBQUcsU0FBUyxHQUFFLEdBQUcsU0FBTyxRQUFPLEdBQUcsY0FBWSxRQUFPLEdBQUcsU0FBTyxRQUFPLEdBQUcsZ0JBQWMsUUFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLEVBQUU7QUFBRSxvQkFBRyxLQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsT0FBSyxJQUFHO0FBQUcsMEJBQU8sR0FBRztBQUFBLHlCQUFXO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBSSwwQkFBRyxFQUFFLGFBQWEsRUFBRSxHQUFFO0FBQUMsMkJBQUcsa0JBQWdCLEVBQUUsRUFBRTtBQUFFO0FBQUEsc0JBQUs7QUFBQTtBQUFTLHlCQUFHLGtCQUFnQixHQUFHLEVBQUU7QUFBRTtBQUFBO0FBQU0sdUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLElBQUcsRUFBRTtBQUFFLHVCQUFPLEdBQUcsaUJBQWUsR0FBRyxFQUFFLEdBQUUsR0FBRyxrQkFBZ0IsRUFBRSxHQUFHLGNBQWMsR0FBRSxPQUFLLEdBQUcsa0JBQWdCLElBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFFLHVCQUFPLEdBQUcsYUFBVyxHQUFHLEVBQUUsR0FBRSxHQUFHLE9BQUssSUFBRyxHQUFHLGtCQUFnQixFQUFFLEdBQUcsVUFBVSxJQUFFLEdBQUcsR0FBRyxJQUFJLEdBQUUsT0FBSyxHQUFHLGtCQUFnQixJQUFHO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxrQkFBZ0IsRUFBRSxnQkFBYyxFQUFFLGdCQUFlLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSx1QkFBTyxHQUFHLE9BQUssSUFBRyxHQUFHLGtCQUFnQixHQUFHLEdBQUcsSUFBSSxJQUFFLFdBQVUsT0FBSyxHQUFHLGtCQUFnQixJQUFHO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxxQkFBbUIsRUFBRSxtQkFBaUIsRUFBRSxtQkFBa0IsRUFBRSxrQkFBZ0IsRUFBRSxnQkFBYyxFQUFFLGdCQUFlLEdBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUUsdUJBQU8sR0FBRyxrQkFBZ0IsR0FBRyxFQUFFLEdBQUUsR0FBRyxrQkFBZ0IsRUFBRSxHQUFHLGVBQWUsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSx1QkFBTyxHQUFHLFVBQVEsR0FBRyxFQUFFLEdBQUUsR0FBRyxrQkFBZ0IsRUFBRSxHQUFHLE9BQU8sR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUUsdUJBQU8sR0FBRyxjQUFZLElBQUcsR0FBRyxrQkFBZ0IsR0FBRyxHQUFHLFdBQVcsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFFLHVCQUFPLEdBQUcsT0FBSyxJQUFHLEdBQUcsa0JBQWdCLEdBQUcsRUFBRSxHQUFFLE9BQUssR0FBRyxrQkFBZ0IsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxPQUFLLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxzQkFBSSxXQUFTLElBQUU7QUFBRyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxPQUFPLEtBQUcsV0FBUyxJQUFFLEtBQUcsQ0FBQztBQUFFLHVCQUFPLEdBQUcsc0JBQW9CLEdBQUUsSUFBRSxRQUFNLEdBQUcsa0JBQWdCLE9BQU07QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUUsT0FBTyxLQUFHLFdBQVMsSUFBRSxFQUFFLHFCQUFxQixDQUFDLElBQUUsR0FBRztBQUFFLHVCQUFPLEVBQUUsa0JBQWdCLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxjQUFZLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBRSx1QkFBTyxHQUFHLDJCQUF5QixJQUFHLE9BQUssR0FBRyxrQkFBZ0IsT0FBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSw2QkFBNkIsQ0FBQyxHQUFFLE1BQU07QUFBRSx1QkFBTyxFQUFFLGlCQUFlLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsQ0FBQztBQUFFLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsd0JBQU87QUFBQSx1QkFBUTtBQUFFLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUcsR0FBRSxNQUFNO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHLEdBQUUsS0FBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRyxHQUFFLElBQUU7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRyxHQUFFLEdBQUUsUUFBTyxDQUFDO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxzQkFBSSxVQUFRLE1BQUksSUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFHLE1BQUksT0FBSyxJQUFFO0FBQVEsb0JBQUksS0FBRyxFQUFFLHlCQUF5QixFQUFFO0FBQUUsdUJBQU8sR0FBRyxzQkFBb0IsR0FBRSxHQUFHLGNBQVksRUFBRSx5QkFBeUIsQ0FBQyxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUUsTUFBTTtBQUFFLHVCQUFPLEdBQUcsb0JBQWtCLEdBQUUsR0FBRyxpQkFBZSxHQUFFLEtBQUk7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSx1QkFBTyxNQUFJLEdBQUcsZ0JBQWMsR0FBRyxDQUFDLElBQUcsR0FBRyx3QkFBc0IsUUFBTSxHQUFHLGtCQUFnQixXQUFVO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxrQkFBZ0IsSUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRztBQUFFLHNCQUFJLE1BQUk7QUFBRyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsdUJBQU8sS0FBRyxFQUFFLEVBQUUsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFO0FBQUUsdUJBQU8sTUFBSSxLQUFHLElBQUcsR0FBRyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxNQUFJLFdBQVMsSUFBRSxJQUFHLEVBQUUsTUFBTSxPQUFPLEVBQUUsSUFBRSxJQUFHLDhCQUE4QixHQUFFLEVBQUUsTUFBTSxRQUFRLElBQUUsUUFBTSxJQUFHLDJHQUEyRyxHQUFFLEdBQUcsR0FBRSxJQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxzQkFBSSxXQUFTLElBQUUsSUFBRyxFQUFFLE1BQU0sT0FBTyxFQUFFLElBQUUsSUFBRyw4QkFBOEI7QUFBRSxvQkFBSSxLQUFHLEdBQUcsS0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFFLEVBQUUsT0FBTyxDQUFDLElBQUUsSUFBRyxJQUFFLENBQUM7QUFBRSx1QkFBTyxHQUFHLFdBQVMsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRSxXQUFXLEdBQUUsR0FBRyxLQUFHLEVBQUUsTUFBTSxLQUFLLHNEQUFvRCxDQUFDO0FBQUUsb0JBQUksSUFBRSxFQUFFLGdDQUFnQyxFQUFFO0FBQUUsdUJBQU8sRUFBRSxjQUFZLEVBQUUseUJBQXlCLENBQUMsR0FBRSxFQUFFLGtCQUFnQixTQUFRO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsb0JBQW9CLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUUsTUFBTSxPQUFPLEtBQUcsS0FBRyxLQUFHLEtBQUksZUFBZSxHQUFFLEVBQUUsTUFBTSxPQUFPLEtBQUcsTUFBSSxLQUFHLElBQUcsaUZBQWlGLEdBQUUsRUFBRSxNQUFNLE9BQU8sS0FBRyxLQUFHLEtBQUcsSUFBRyxnRUFBZ0UsR0FBRSxFQUFFLE1BQU0sT0FBTyxNQUFJLElBQUcsNkRBQTZEO0FBQUUsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHO0FBQUUsd0JBQU87QUFBQSx1QkFBUTtBQUFJLHlCQUFHO0FBQUk7QUFBQSx1QkFBVztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFRO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSx5QkFBRztBQUFFO0FBQUEsdUJBQVc7QUFBSSx5QkFBRztBQUFTO0FBQUEsdUJBQVc7QUFBSSx5QkFBRztBQUFLO0FBQUEsdUJBQVc7QUFBSSx5QkFBRztBQUFLO0FBQUE7QUFBTSx1QkFBTyxPQUFLLEVBQUUsa0JBQWdCLEtBQUk7QUFBQSxjQUFDO0FBQUMsdUJBQVMsS0FBSTtBQUFDLHVCQUFPLEdBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsS0FBSTtBQUFDLHVCQUFPLEdBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLENBQUM7QUFBRSx1QkFBTyxJQUFFLEtBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxLQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsT0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRSxJQUFFLFFBQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxLQUFHLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRSxJQUFFLE1BQUksRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRSxPQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsTUFBSSxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRSxJQUFFLFNBQU8sRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRSxNQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUUsT0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRSxJQUFFLFNBQU8sRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRSxTQUFPLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsU0FBTyxJQUFFO0FBQUEsY0FBTTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLE9BQUssR0FBRSxHQUFHLFFBQU0sR0FBRyxDQUFDLEdBQUUsR0FBRyxrQkFBZ0IsR0FBRyxHQUFHLElBQUksSUFBRSxFQUFFLEdBQUcsS0FBSyxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLFNBQU8sS0FBRyxFQUFFLFVBQVEsS0FBRyxFQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFHO0FBQUUsdUJBQU8sRUFBRSxhQUFXLEVBQUUsRUFBRSw2Q0FBNkMsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEdBQUcsRUFBRSxVQUFVLElBQUUsT0FBSyxPQUFNO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxlQUFhLElBQUUsRUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUksSUFBRyxJQUFHO0FBQUcsc0JBQUksVUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxPQUFLLEtBQUcsUUFBTyxLQUFHLEdBQUUsS0FBRztBQUFHLG9CQUFJLEtBQUcsR0FBRyxLQUFJLFFBQU8sSUFBRyxFQUFFO0FBQUUsdUJBQU8sR0FBRyxhQUFXLElBQUcsR0FBRyxVQUFRLElBQUcsR0FBRyxpQkFBZSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksSUFBRyxJQUFHO0FBQUcsdUJBQU8sTUFBSSxVQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLE9BQUssS0FBRyxRQUFPLEtBQUcsR0FBRSxLQUFHLEtBQUksRUFBRSxjQUFZLE1BQUksRUFBRSxTQUFPLE1BQUksRUFBRSxlQUFhLE1BQUksRUFBRSxZQUFVLEtBQUcsRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksR0FBRSxHQUFFLElBQUcsSUFBRyxNQUFJLEVBQUUsRUFBRSx5Q0FBeUMsRUFBRSxDQUFDO0FBQUUsdUJBQU8sR0FBRyxpQkFBZSxJQUFHLEdBQUcsZ0JBQWMsSUFBRyxFQUFFLGlCQUFpQixHQUFHLElBQUksSUFBRSxHQUFHLGlCQUFlLEtBQUcsR0FBRyxrQkFBZ0IsR0FBRyxHQUFHLGNBQWMsSUFBRSxHQUFHLEdBQUcsYUFBYSxHQUFFLE9BQUssR0FBRyxrQkFBZ0IsSUFBRyxFQUFFLGlCQUFpQixHQUFHLFNBQVMsSUFBRSxVQUFRLEdBQUcsa0JBQWdCLFFBQU8sTUFBSSxRQUFNLEdBQUcsa0JBQWdCLFFBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLGVBQWEsS0FBRyxFQUFFLGNBQVksTUFBSSxFQUFFLG1CQUFpQixNQUFJLEVBQUUsU0FBTyxNQUFJLEVBQUUsa0JBQWdCLE1BQUksRUFBRSxTQUFPLE1BQUksRUFBRSxnQkFBYyxLQUFHLEVBQUUsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFHO0FBQUUsdUJBQU8sRUFBRSxhQUFXLEVBQUUsRUFBRSw2QkFBNkIsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEdBQUcsRUFBRSxVQUFVLElBQUUsSUFBRSxNQUFLO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxlQUFhLElBQUUsRUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksUUFBTyxHQUFFLENBQUM7QUFBRSx1QkFBTyxHQUFHLE9BQUssSUFBRyxHQUFHLGdCQUFjLElBQUcsR0FBRyxpQkFBZSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxjQUFZLEtBQUcsRUFBRSxTQUFPLE1BQUksRUFBRSxrQkFBZ0IsTUFBSSxFQUFFLFNBQU8sS0FBRyxFQUFFLEdBQUcsR0FBRSxJQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksR0FBRSxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUUsdUJBQU8sR0FBRyxnQkFBYyxNQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBRSxLQUFHLFFBQU8sR0FBRyxtQkFBaUIsTUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUUsS0FBRyxRQUFPLEdBQUcsa0JBQWdCLEdBQUcsR0FBRyxhQUFhLElBQUUsR0FBRyxHQUFHLGdCQUFnQixJQUFFLFVBQVMsRUFBRSx1QkFBdUIsR0FBRyxJQUFJLEtBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFHLEdBQUcsaUJBQWUsR0FBRyxrQkFBZ0IsUUFBTyxNQUFJLEVBQUUsaUJBQWlCLEdBQUcsU0FBUyxJQUFFLE9BQUssR0FBRyxrQkFBZ0IsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLGVBQWEsS0FBRyxFQUFFLGNBQVksTUFBSSxFQUFFLFNBQU8sTUFBSSxFQUFFLG1CQUFpQixPQUFLLFVBQVEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFFLEtBQUcsV0FBUyxFQUFFLHNCQUFvQixPQUFLLFVBQVEsRUFBRSxtQkFBbUIsRUFBRSxJQUFFLEtBQUcsV0FBUyxFQUFFLFNBQU8sTUFBSSxFQUFFLGdCQUFjLEtBQUcsRUFBRSxHQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsS0FBSSxRQUFPLEdBQUUsR0FBRSxJQUFHLElBQUcsRUFBRTtBQUFFLHVCQUFPLEdBQUcsZ0JBQWMsSUFBRyxHQUFHLGlCQUFlLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxjQUFZLEtBQUcsRUFBRSxTQUFPLE1BQUksRUFBRSxrQkFBZ0IsTUFBSSxFQUFFLG1CQUFpQixNQUFJLEVBQUUsZUFBYSxNQUFJLEVBQUUsU0FBTyxLQUFHLEdBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLHVCQUFPLEdBQUcsZ0JBQWMsSUFBRyxHQUFHLGdCQUFjLElBQUcsR0FBRyxrQkFBZ0IsR0FBRyxHQUFHLGFBQWEsSUFBRSxHQUFHLEdBQUcsYUFBYSxJQUFFLE1BQUssT0FBSyxHQUFHLGtCQUFnQixJQUFHLEVBQUUsaUJBQWlCLEdBQUcsU0FBUyxJQUFFLE1BQUksS0FBRyxHQUFHLGtCQUFnQixNQUFJLEdBQUcsa0JBQWdCLE1BQUksT0FBSyxHQUFHLGtCQUFnQixPQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsZUFBYSxLQUFHLEVBQUUsY0FBWSxNQUFJLEVBQUUsa0JBQWdCLE1BQUksRUFBRSxTQUFPLE1BQUksRUFBRSxrQkFBZ0IsTUFBSSxFQUFFLG1CQUFpQixNQUFJLEVBQUUsZUFBYSxNQUFJLEVBQUUsU0FBTyxNQUFJLEVBQUUsU0FBTyxLQUFHLEdBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLEtBQUksR0FBRSxHQUFFLFFBQU8sTUFBTTtBQUFFLHVCQUFPLEdBQUcsT0FBSyxJQUFHLEdBQUcsaUJBQWUsR0FBRyxFQUFFLElBQUUsU0FBUTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLGVBQWEsS0FBRyxFQUFFLGFBQVcsTUFBSSxFQUFFLFNBQU8sS0FBRyxFQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksR0FBRSxHQUFFLFFBQU8sUUFBTyxJQUFHLFFBQU8sRUFBRTtBQUFFLHVCQUFPLEdBQUcsa0JBQWdCLE1BQUs7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLGVBQWEsS0FBRyxFQUFFLGNBQVksTUFBSSxFQUFFLGVBQWEsTUFBSSxFQUFFLFNBQU8sS0FBRyxHQUFHLEdBQUcsR0FBRSxJQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxLQUFJLEdBQUUsR0FBRSxJQUFHLFFBQU8sSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxlQUFhLEtBQUcsRUFBRSxjQUFZLE1BQUksRUFBRSxTQUFPLE1BQUksRUFBRSxlQUFhLE1BQUksRUFBRSxTQUFPLE1BQUksRUFBRSxTQUFPLEtBQUcsR0FBRyxHQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdB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QUFHLFVBQVUsR0FBRSxFQUFFO0FBQUUsdUJBQU8sR0FBRyxRQUFNLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQU8sTUFBSSxXQUFTLElBQUUsR0FBRyxDQUFDLElBQUcsRUFBRSxZQUFVLEtBQUcsRUFBRSxVQUFRLE1BQUksRUFBRSxZQUFVLEtBQUcsRUFBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsS0FBSSxLQUFHLE9BQUssSUFBRSxHQUFHLFlBQVksR0FBRSxFQUFFO0FBQUUsdUJBQU8sR0FBRyxRQUFNLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxLQUFJLEtBQUcsT0FBSyxJQUFFLEdBQUcsS0FBSyxHQUFFLEVBQUU7QUFBRSx1QkFBTyxHQUFHLE9BQUssR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLFlBQVUsS0FBRyxFQUFFLFNBQU8sTUFBSSxFQUFFLFlBQVUsS0FBRyxFQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLE9BQUssR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsU0FBTyxJQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLE9BQUssR0FBRSxHQUFHLFFBQU0sR0FBRSxHQUFHLGtCQUFnQixHQUFHLEdBQUcsSUFBSSxJQUFFLEdBQUcsR0FBRyxLQUFLLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsU0FBTyxLQUFHLEVBQUUsVUFBUSxLQUFHLEVBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRztBQUFFLHVCQUFPLEdBQUcsT0FBSyxHQUFFLEdBQUcsT0FBSyxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLFNBQU8sSUFBRSxFQUFFLEdBQUcsR0FBRSxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLE9BQUssR0FBRSxHQUFHLE9BQUssR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxTQUFPLElBQUUsRUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxPQUFLLEdBQUUsR0FBRyxPQUFLLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsU0FBTyxJQUFFLEVBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQU8sTUFBSSxXQUFTLElBQUUsR0FBRyxDQUFDLElBQUcsRUFBRSxZQUFVLEtBQUcsRUFBRSxVQUFRLE1BQUksRUFBRSxZQUFVLEtBQUcsRUFBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLE9BQUssSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRTtBQUFFLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRztBQUFDLHVCQUFPLE9BQUssV0FBUyxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsWUFBVSxNQUFJLEVBQUUsWUFBVSxLQUFHLEVBQUUsR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLE9BQUssSUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRTtBQUFFLHVCQUFPLEdBQUcsaUJBQWUsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLHVCQUFPLE9BQUssV0FBUyxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsWUFBVSxNQUFJLEVBQUUsbUJBQWlCLE1BQUksRUFBRSxZQUFVLEtBQUcsRUFBRSxHQUFHLEdBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsS0FBSSxHQUFFLENBQUM7QUFBRSx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxZQUFVLEtBQUcsRUFBRSxZQUFVLEtBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRztBQUFFLHVCQUFPLEVBQUUsT0FBSyxHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxTQUFPLElBQUUsRUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRztBQUFFLHVCQUFPLEdBQUcsVUFBUSxHQUFFLEdBQUcsT0FBSyxHQUFHLENBQUMsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxZQUFVLEtBQUcsRUFBRSxTQUFPLEtBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLGlCQUFlLEdBQUUsR0FBRyxXQUFTLEdBQUcsQ0FBQyxHQUFFLEdBQUcsaUJBQWUsSUFBRyxHQUFHLGtCQUFnQixHQUFHLEdBQUcsY0FBYyxJQUFFLEVBQUUsR0FBRyxRQUFRLElBQUUsR0FBRyxHQUFHLGNBQWMsSUFBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsbUJBQWlCLEtBQUcsRUFBRSxhQUFXLE1BQUksRUFBRSxtQkFBaUIsS0FBRyxFQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxVQUFRLEdBQUUsR0FBRyxnQkFBYyxHQUFHLENBQUMsR0FBRSxHQUFHLGFBQVcsSUFBRyxHQUFHLGtCQUFnQixHQUFHLEdBQUcsT0FBTyxJQUFFLEVBQUUsR0FBRyxhQUFhLElBQUUsR0FBRyxHQUFHLFVBQVUsSUFBRSxHQUFFLEdBQUcsa0JBQWdCLEdBQUcsa0JBQWdCLElBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxZQUFVLEtBQUcsRUFBRSxrQkFBZ0IsTUFBSSxFQUFFLGVBQWEsS0FBRyxFQUFFLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxVQUFRLEdBQUUsR0FBRyxnQkFBYyxHQUFHLENBQUMsR0FBRSxHQUFHLGFBQVcsSUFBRyxHQUFHLGtCQUFnQixHQUFHLEdBQUcsT0FBTyxJQUFFLEVBQUUsR0FBRyxhQUFhLElBQUUsR0FBRyxHQUFHLFVBQVUsSUFBRSxHQUFFLE1BQUksR0FBRyxrQkFBZ0IsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLFlBQVUsS0FBRyxFQUFFLGtCQUFnQixNQUFJLEVBQUUsZUFBYSxLQUFHLEVBQUUsR0FBRyxHQUFFLElBQUcsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRztBQUFFLHVCQUFPLEVBQUUsVUFBUSxHQUFFLEVBQUUsa0JBQWdCLEdBQUcsRUFBRSxPQUFPLElBQUUsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsWUFBVSxJQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRztBQUFFLHVCQUFPLEdBQUcsa0JBQWdCLEdBQUUsR0FBRyxXQUFTLEdBQUcsQ0FBQyxHQUFFLEdBQUcsa0JBQWdCLElBQUcsR0FBRyxrQkFBZ0IsR0FBRyxHQUFHLGVBQWUsSUFBRSxFQUFFLEdBQUcsUUFBUSxJQUFFLEdBQUcsR0FBRyxlQUFlLElBQUUsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLG9CQUFrQixLQUFHLEVBQUUsYUFBVyxNQUFJLEVBQUUsb0JBQWtCLEtBQUcsRUFBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSx1QkFBTyxHQUFHLE9BQUssR0FBRSxHQUFHLGdDQUE4QixDQUFDLENBQUMsR0FBRSxHQUFHLGtCQUFnQixHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLFNBQU8sS0FBRyxFQUFFLGtDQUFnQyxLQUFHLEVBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsS0FBSTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFHO0FBQUUsdUJBQU8sRUFBRSxrQkFBZ0IsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLGtCQUFnQixHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLE9BQUssR0FBRSxHQUFHLGNBQVksR0FBRSxHQUFHLGtCQUFnQixHQUFHLEdBQUcsSUFBSSxJQUFFLEdBQUcsR0FBRyxXQUFXLElBQUUsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxTQUFPLEtBQUcsRUFBRSxnQkFBYyxLQUFHLEVBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLGFBQVcsR0FBRyxDQUFDLEdBQUUsRUFBRSxrQkFBZ0IsRUFBRSxFQUFFLFVBQVUsSUFBRSxHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxlQUFhLElBQUUsRUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLGFBQVcsR0FBRSxFQUFFLGtCQUFnQixHQUFHLEVBQUUsVUFBVSxJQUFFLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLGVBQWEsSUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxpQkFBZSxHQUFFLEdBQUcsYUFBVyxHQUFFLEdBQUcsa0JBQWdCLEdBQUcsR0FBRyxjQUFjLElBQUUsR0FBRyxHQUFHLFVBQVUsSUFBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxlQUFhLElBQUUsRUFBRSxHQUFHLEVBQUUsZ0JBQWUsQ0FBQyxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxhQUFXLEVBQUUsRUFBRSx5Q0FBeUMsQ0FBQyxHQUFFLEdBQUcsYUFBVyxHQUFHLENBQUMsR0FBRSxHQUFHLGtCQUFnQixHQUFHLEdBQUcsVUFBVSxJQUFFLEVBQUUsR0FBRyxVQUFVLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsZUFBYSxLQUFHLEVBQUUsZUFBYSxLQUFHLEVBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLGFBQVcsR0FBRyxDQUFDLEdBQUUsRUFBRSxpQkFBZSxFQUFFLEVBQUUsVUFBVSxHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxlQUFhLElBQUUsRUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRztBQUFFLHdCQUFPLEdBQUcsUUFBTSxHQUFFLEdBQUcsUUFBTSxHQUFHLENBQUMsR0FBRSxHQUFHLGtCQUFnQixFQUFFLEdBQUcsS0FBSyxHQUFFO0FBQUEsdUJBQVE7QUFBRyx1QkFBRyxrQkFBZ0I7QUFBSztBQUFBLHVCQUFXO0FBQUksdUJBQUcsa0JBQWdCO0FBQUU7QUFBQTtBQUFjLDJCQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFBQTtBQUFFLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxVQUFRLElBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTSxDQUFDLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx3QkFBTyxPQUFPLEtBQUcsWUFBVSxLQUFHLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxPQUFLLElBQUUsR0FBRyxHQUFFLFFBQU8sUUFBTyxNQUFNLElBQUcsR0FBRyxzQkFBb0IsR0FBRSxHQUFHLFFBQU0sR0FBRSxHQUFHLGtCQUFnQixHQUFHLEdBQUcsbUJBQW1CLElBQUUsR0FBRyxHQUFHLEtBQUssR0FBRSxNQUFJLEdBQUcsa0JBQWdCLEtBQUk7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsd0JBQXNCLEtBQUcsRUFBRSxVQUFRLEtBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxLQUFJLFFBQU8sUUFBTyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxjQUFZLEVBQUUsRUFBRSx5Q0FBeUMsQ0FBQyxHQUFFLEdBQUcsa0JBQWdCLEdBQUcsR0FBRyxJQUFJLElBQUUsR0FBRyxHQUFHLFdBQVcsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsZUFBYSxFQUFFLGFBQVcsRUFBRSxhQUFZLEVBQUUsY0FBWSxFQUFFLFlBQVUsRUFBRSxZQUFXLEVBQUUsa0JBQWdCLEVBQUUsZ0JBQWMsRUFBRSxnQkFBZSxFQUFFLHFCQUFtQixFQUFFLG1CQUFpQixFQUFFLG1CQUFrQixFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxTQUFPLEtBQUcsRUFBRSxnQkFBYyxLQUFHLEdBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsS0FBSSxRQUFPLFFBQU8sQ0FBQztBQUFFLHVCQUFPLEdBQUcsOEJBQTRCLEtBQUcsRUFBRSxFQUFFLHlDQUF5QyxDQUFDLEdBQUUsR0FBRyxrQkFBZ0IsR0FBRyxHQUFHLDJCQUEyQixJQUFFLE1BQUs7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLGVBQWEsRUFBRSxhQUFXLEVBQUUsYUFBWSxFQUFFLGNBQVksRUFBRSxZQUFVLEVBQUUsWUFBVyxFQUFFLGdCQUFjLEVBQUUsY0FBWSxFQUFFLGNBQWEsRUFBRSxrQkFBZ0IsRUFBRSxnQkFBYyxFQUFFLGdCQUFlLEVBQUUscUJBQW1CLEVBQUUsbUJBQWlCLEVBQUUsbUJBQWtCLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLFNBQU8sS0FBRyxFQUFFLGdDQUE4QixLQUFHLEdBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLGFBQVcsRUFBRSxFQUFFLHlDQUF5QyxDQUFDLEdBQUUsRUFBRSxrQkFBZ0IsR0FBRyxFQUFFLFVBQVUsSUFBRSxNQUFJLE9BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLGVBQWEsSUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxPQUFLLEdBQUcsQ0FBQyxHQUFFLEdBQUcsY0FBWSxLQUFHLEVBQUUsRUFBRSx5Q0FBeUMsQ0FBQyxHQUFFLEdBQUcsa0JBQWdCLEdBQUcsR0FBRyxJQUFJLElBQUUsR0FBRyxHQUFHLFdBQVcsSUFBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLFNBQU8sS0FBRyxFQUFFLGdCQUFjLEtBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLHlCQUF5QixHQUFHO0FBQUUsdUJBQU8sR0FBRyxhQUFXLEdBQUcsQ0FBQyxHQUFFLEdBQUcsaUJBQWUsR0FBRSxHQUFHLFNBQU8sSUFBRyxHQUFHLFdBQVMsSUFBRyxHQUFHLE9BQUssSUFBRyxHQUFHLGtCQUFnQixHQUFFLEdBQUcsa0JBQWdCLEdBQUUsR0FBRyxhQUFXLEdBQUUsR0FBRyxvQkFBa0IsT0FBRyxHQUFHLGtCQUFnQixPQUFHLEdBQUcsa0JBQWdCLEVBQUUsR0FBRyxVQUFVLElBQUUsR0FBRyxHQUFHLGNBQWMsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsZUFBYSxPQUFPLE9BQU8sRUFBRSxhQUFhLGNBQWMsSUFBRSxFQUFFLHlCQUF5QixHQUFHO0FBQUUseUJBQVEsTUFBTTtBQUFFLHlCQUFLLGNBQVksRUFBRSxZQUFZLElBQUcsRUFBRSxLQUFHLENBQUMsRUFBRSxZQUFZLEdBQUUsRUFBRSxNQUFJLEdBQUcsTUFBSSxFQUFFO0FBQUssdUJBQU8sR0FBRyxTQUFPLEVBQUUsT0FBTSxHQUFHLGFBQVcsR0FBRyxDQUFDLEdBQUUsR0FBRyxpQkFBZSxFQUFFLGdCQUFlLEdBQUcsb0JBQWtCLElBQUcsR0FBRyxrQkFBZ0IsSUFBRyxHQUFHLDBCQUF3QixJQUFHLEdBQUcsa0JBQWdCLElBQUcsR0FBRyx5QkFBdUIsSUFBRyxHQUFHLGlCQUFlLEVBQUUsR0FBRyxVQUFVLElBQUUsR0FBRyxHQUFHLGNBQWMsR0FBRSxHQUFHLG9CQUFrQixFQUFFLG1CQUFrQjtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxPQUFLLFdBQVMsS0FBRyxFQUFFLG9CQUFtQixPQUFLLFdBQVMsS0FBRyxFQUFFLGtCQUFpQixPQUFLLFdBQVMsS0FBRyxFQUFFLDBCQUF5QixPQUFLLFdBQVMsS0FBRyxFQUFFLGtCQUFpQixPQUFLLFdBQVMsS0FBRyxFQUFFLHlCQUF3QixFQUFFLGVBQWEsS0FBRyxFQUFFLHNCQUFvQixNQUFJLEVBQUUsb0JBQWtCLE1BQUksRUFBRSw0QkFBMEIsTUFBSSxFQUFFLG9CQUFrQixNQUFJLEVBQUUsMkJBQXlCLEtBQUcsRUFBRSxHQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxzQkFBSSxXQUFTLElBQUUsRUFBRTtBQUFZLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxXQUFTLEdBQUUsR0FBRyxjQUFZLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLE9BQUssV0FBUyxLQUFHLEVBQUUsYUFBWSxFQUFFLGdCQUFjLEtBQUcsRUFBRSxhQUFXLEtBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLFlBQVUsR0FBRSxHQUFHLHNCQUFvQixHQUFFLEdBQUcsUUFBTSxJQUFHLEdBQUcsV0FBUyxJQUFHLEdBQUcsT0FBSyxJQUFHLEdBQUcsa0JBQWdCLEVBQUUsWUFBVyxHQUFHLHlCQUF1QixFQUFFLFlBQVcsR0FBRyxnQ0FBOEIsU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSw4QkFBOEIsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxPQUFLLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxLQUFJLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsS0FBSSxDQUFDO0FBQUUsdUJBQU8sR0FBRyxRQUFNLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLElBQUUsTUFBSSxLQUFJLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLE9BQUssRUFBRSxNQUFLLEVBQUUsVUFBUSxHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRztBQUFFLHVCQUFPLEVBQUUsaUJBQWUsSUFBRyxFQUFFLGtCQUFnQixJQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyxzQkFBSSxXQUFTLElBQUU7QUFBSSxvQkFBSSxLQUFHLEdBQUcsR0FBRztBQUFFLHVCQUFPLEdBQUcsT0FBSyxHQUFFLEdBQUcsV0FBUyxHQUFFLEdBQUcsa0JBQWdCLElBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLFlBQVUsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRztBQUFFLHVCQUFPLEVBQUUsV0FBUyxHQUFFLEVBQUUsYUFBYSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxhQUFXLEdBQUUsR0FBRyxXQUFTLEdBQUUsR0FBRyxrQkFBZ0IsR0FBRyxHQUFHLFVBQVUsSUFBRSxHQUFFLEVBQUUsYUFBYSxJQUFHLENBQUMsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsZUFBYSxJQUFFLEVBQUUsR0FBRyxHQUFFLEVBQUUsUUFBUSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBRyxFQUFFLGtCQUFrQixDQUFDLEtBQUcsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEtBQUcsQ0FBQyxFQUFFLFlBQVUsQ0FBQyxFQUFFLFlBQVUsQ0FBQyxFQUFFLElBQUc7QUFBQyxzQkFBRyxFQUFFLHNCQUFzQixDQUFDO0FBQUUsMkJBQU8sRUFBRTtBQUFTLHNCQUFHLEVBQUUsbUJBQW1CLENBQUMsS0FBRyxFQUFFLGFBQWEsRUFBRSxhQUFhO0FBQUUsMkJBQU0sQ0FBQyxFQUFFLE1BQUssRUFBRSxLQUFLO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRztBQUFFLHVCQUFPLEVBQUUsV0FBUyxHQUFHLEVBQUUsWUFBWSxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEVBQUUsRUFBRSxRQUFRLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLGFBQVcsSUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRztBQUFFLHVCQUFPLEVBQUUsV0FBUyxDQUFDLEdBQUUsRUFBRSxXQUFTLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUc7QUFBRSx1QkFBTyxFQUFFLFdBQVMsQ0FBQyxHQUFFLEVBQUUsV0FBUyxHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLGFBQVcsR0FBRSxHQUFHLFVBQVEsR0FBRSxHQUFHLGtCQUFnQixHQUFHLEdBQUcsVUFBVSxJQUFFLEdBQUcsR0FBRyxPQUFPLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsZUFBYSxLQUFHLEVBQUUsWUFBVSxLQUFHLEVBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSTtBQUFPLHlCQUFPO0FBQUUsb0JBQUksSUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFFLEVBQUUseUJBQXlCLEdBQUcsSUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFFLEVBQUUseUJBQXlCLEVBQUUsSUFBRSxFQUFFLG9CQUFvQixDQUFDLElBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxJQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLElBQUUsRUFBRSxvQkFBb0IsRUFBRSxJQUFJO0FBQUUsa0JBQUUsU0FBTyxFQUFFLFFBQU0sSUFBRyxFQUFFLGlCQUFlLEVBQUUsZ0JBQWUsR0FBRyxHQUFFLENBQUM7QUFBRSx5QkFBUSxNQUFNO0FBQUUsb0JBQUUsZUFBZSxFQUFFLEtBQUcsQ0FBQyxFQUFFLGVBQWUsRUFBRSxNQUFJLEVBQUUsTUFBSSxFQUFFO0FBQUssdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEdBQUcsR0FBRyxRQUFPLFFBQU8sUUFBTyxRQUFPLElBQUUsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFFLFFBQU8sR0FBRyxHQUFFLElBQUUsQ0FBQyxHQUFFLFFBQU8sS0FBRyxDQUFDLEVBQUUsSUFBRSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEdBQUcsR0FBRyxRQUFPLFFBQU8sSUFBRSxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUUsUUFBTyxRQUFPLEdBQUcsR0FBRSxJQUFFLENBQUMsR0FBRSxRQUFPLEtBQUcsQ0FBQyxFQUFFLElBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsUUFBTyxRQUFPLE9BQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxHQUFHLFFBQU8sUUFBTyxPQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQUcsUUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sTUFBSSxjQUFZLEVBQUUscUJBQXFCLEdBQUUsR0FBRyxDQUFDLElBQUUsRUFBRSxxQkFBcUIsR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsSUFBRztBQUFDLHVCQUFPLEVBQUUsWUFBWSxDQUFDLElBQUUsR0FBRyxHQUFHLEdBQUUsUUFBTyxDQUFDLEdBQUUsUUFBTyxRQUFPLEVBQUUsSUFBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsUUFBTyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUUsUUFBTyxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUcsSUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUUsUUFBTyxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUcsSUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUUsU0FBUSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxTQUFRLE1BQUksU0FBTyxDQUFDLElBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLFVBQVMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxJQUFHO0FBQUMsdUJBQU8sR0FBRyxVQUFTLGtCQUFpQixDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLFdBQVUsT0FBTSxLQUFHLENBQUMsR0FBRSxHQUFFLEVBQUUsSUFBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUcsSUFBRztBQUFDLHVCQUFPLEdBQUcsV0FBVSxPQUFNLEtBQUcsQ0FBQyxHQUFFLEdBQUUsSUFBRyxFQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxNQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUUsRUFBRSxDQUFDLEdBQUUsUUFBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsQ0FBQztBQUFFLG1CQUFHLElBQUcsY0FBYSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUUsR0FBRyxJQUFHLGdCQUFlLEdBQUcsRUFBRSxZQUFZLENBQUM7QUFBRSxvQkFBSSxLQUFHLEdBQUcsSUFBRyxZQUFXLEdBQUcsRUFBRSxRQUFRLENBQUM7QUFBRSxxQkFBRyxHQUFHLElBQUcsU0FBUSxFQUFFLEtBQUssS0FB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QUFBQyxjQUFFLDJCQUF5QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHVCQUFxQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFB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LHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHdCQUFzQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLGdCQUFjO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPO0FBQUEsWUFBRztBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLGlCQUFlO0FBQUcscUJBQVMs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QUFBLFlBQUc7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLFVBQVE7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxtQkFBaUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxvQkFBa0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFHO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZ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QUUsV0FBVztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxnQkFBZ0IsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsV0FBVztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsV0FBVztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxXQUFXO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsZ0JBQWdCLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLFdBQVc7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsU0FBUyxLQUFHLEVBQUUsR0FBRSxFQUFFLGNBQWMsS0FBRyxFQUFFLEdBQUUsRUFBRSxZQUFZLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLFdBQVc7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxjQUFjLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxhQUFhLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxnQkFBZ0IsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLGNBQWMsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsc0JBQXNCLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsUUFBUSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsYUFBYTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsZUFBZSxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxRQUFRLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxhQUFhO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLE9BQU87QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFdBQVc7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsUUFBUTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLEtBQUs7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxXQUFXLEtBQUcsRUFBRSxHQUFFLEVBQUUsUUFBUSxLQUFHLEVBQUUsR0FBRSxFQUFFLFNBQVM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLGFBQWE7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFFBQVEsS0FBRyxFQUFFLEdBQUUsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLEVBQUUsU0FBUyxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsYUFBYTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsWUFBWTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxJQUFJO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLEVBQUUsU0FBUztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsYUFBYSxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxRQUFRLEtBQUcsRUFBRSxHQUFFLEVBQUUsYUFBYSxLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUksS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLE9BQU87QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLE9BQU87QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLGNBQWMsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsYUFBYSxLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUk7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxRQUFRO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFFBQVE7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxFQUFFLGdCQUFnQixLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUk7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsRUFBRSxnQkFBZ0IsS0FBRyxFQUFFLEdBQUUsRUFBRSxrQkFBa0I7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxFQUFFLGdCQUFnQixLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsYUFBYSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsU0FBUztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsR0FBRyxLQUFHLEVBQUUsR0FBRSxFQUFFLGdCQUFnQixLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsYUFBYSxLQUFHLEVBQUUsR0FBRSxFQUFFLFFBQVE7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLElBQUksS0FBRyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxPQUFPO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxhQUFhLEtBQUcsRUFBRSxHQUFFLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsT0FBTztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxLQUFLO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsU0FBUyxLQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxRQUFRLEtBQUcsRUFBRSxHQUFFLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxFQUFFLFNBQVM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsRUFBRSxjQUFjO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxlQUFlO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFlBQVk7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsRUFBRSxhQUFhLEtBQUcsRUFBRSxHQUFFLEVBQUUsYUFBYTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsU0FBUyxLQUFHLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsRUFBRSxTQUFTO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxXQUFXLEtBQUcsRUFBRSxHQUFFLEVBQUUsU0FBUyxLQUFHLEVBQUUsR0FBRSxFQUFFLFdBQVcsS0FBRyxFQUFFLEdBQUUsRUFBRSxTQUFTO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxXQUFXLEtBQUcsRUFBRSxHQUFFLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxFQUFFLFNBQVM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLGFBQWEsS0FBRyxFQUFFLEdBQUUsRUFBRSxXQUFXLEtBQUcsRUFBRSxHQUFFLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxFQUFFLFNBQVM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsS0FBSztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxFQUFFLFNBQVM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsRUFBRSxTQUFTO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLE9BQU87QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsS0FBSyxLQUFHLEVBQUUsR0FBRSxFQUFFLFNBQVM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFFBQVEsS0FBRyxFQUFFLEdBQUUsRUFBRSxXQUFXLEtBQUcsRUFBRSxHQUFFLEVBQUUsWUFBWTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsbUJBQW1CLEtBQUcsRUFBRSxHQUFFLEVBQUUsS0FBSztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxjQUFjLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxlQUFlLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxPQUFPO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxjQUFjLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxlQUFlLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxPQUFPO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxjQUFjLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsT0FBTztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLFdBQVc7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsU0FBUyxLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUksS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVMsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsZUFBZTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLEVBQUUsWUFBWSxLQUFHLEVBQUUsR0FBRSxFQUFFLGVBQWUsS0FBRyxFQUFFLEdBQUUsRUFBRSxZQUFZO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsYUFBYTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxRQUFRO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxJQUFJLEtBQUcsRUFBRSxHQUFFLEVBQUUsS0FBSztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFFBQVE7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsU0FBUyxLQUFHLEVBQUUsR0FBRSxFQUFFLFlBQVksS0FBRyxFQUFFLEdBQUUsRUFBRSxlQUFlLEtBQUcsRUFBRSxHQUFFLEVBQUUsWUFBWTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxZQUFZLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxTQUFTLEtBQUcsRUFBRSxHQUFFLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsYUFBYTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVSxLQUFHLEVBQUUsR0FBRSxFQUFFLE9BQU87QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLElBQUksS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLGFBQWE7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLElBQUksS0FBRyxFQUFFLEdBQUUsRUFBRSxPQUFPO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLEtBQUs7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsSUFBRyxFQUFFLGFBQWE7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxRQUFRO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxjQUFjLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxRQUFRLEtBQUcsRUFBRSxHQUFFLEVBQUUsY0FBYztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsZUFBZSxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsUUFBUSxLQUFHLEVBQUUsR0FBRSxFQUFFLGVBQWU7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsT0FBTyxLQUFHLEVBQUUsR0FBRSxJQUFHLEVBQUUsYUFBYSxLQUFHLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsVUFBVTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLFdBQVc7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLGNBQWMsS0FBRyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxPQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxJQUFJO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLFVBQVUsS0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJO0FBQUEsdUJBQU87QUFBSSw0QkFBTyxPQUFPLEVBQUUsV0FBUyxXQUFTLFNBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxPQUFPLE1BQUksRUFBRSxHQUFFLElBQUcsRUFBRSxJQUFJO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxPQUFPLEtBQUcsRUFBRSxHQUFFLEVBQUUsSUFBSSxNQUFJLE9BQU8sRUFBRSxXQUFTLFdBQVMsU0FBTyxFQUFFLEdBQUUsSUFBRyxFQUFFLE9BQU87QUFBQSx1QkFBUTtBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLElBQUk7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLElBQUksS0FBRyxFQUFFLEdBQUUsRUFBRSxLQUFLO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFJLDJCQUFPLEVBQUUsR0FBRSxFQUFFLE9BQU8sTUFBSSxFQUFFLGNBQVksRUFBRSxHQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLGNBQWMsTUFBSSxPQUFPLEVBQUUsV0FBUyxXQUFTLFNBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxPQUFPLEtBQUcsRUFBRSxHQUFFLEVBQUUsY0FBYyxLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUksTUFBSSxPQUFPLEVBQUUsV0FBUyxXQUFTLFNBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxPQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxPQUFPLE1BQUksT0FBTyxFQUFFLFdBQVMsV0FBUyxTQUFPLEVBQUUsR0FBRSxJQUFHLEVBQUUsT0FBTztBQUFBLHVCQUFRO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUUsT0FBTyxLQUFHLEVBQUUsR0FBRSxFQUFFLEtBQUssTUFBSSxPQUFPLEVBQUUsV0FBUyxXQUFTLFNBQU8sRUFBRSxHQUFFLElBQUcsRUFBRSxPQUFPO0FBQUEsdUJBQVE7QUFBSSwyQkFBTyxFQUFFLEdBQUUsRUFBRSxPQUFPLEtBQUcsRUFBRSxHQUFF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RSxzQkFBc0IsSUFBRSxRQUFHLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsS0FBSTtBQUFDLHdCQUFPLEdBQUc7QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsTUFBSTtBQUFBLHVCQUFRO0FBQUcsMkJBQU8sR0FBRyxHQUFFLEdBQUcsTUFBSSxLQUFHLEdBQUcsRUFBRSxJQUFFLEdBQUcsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFFLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLEdBQUUsR0FBRztBQUFBO0FBQVUsMkJBQU8sR0FBRztBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksT0FBSyxHQUFHLE1BQUksTUFBSSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sRUFBRSxlQUFlLEdBQUcsQ0FBQyxLQUFHLEdBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSSxPQUFLLEdBQUcsTUFBSSxPQUFLLEdBQUcsRUFBRSxLQUFHLEdBQUcsTUFBSSxPQUFLLEdBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsb0JBQUc7QUFBRyx5QkFBTTtBQUFHLHdCQUFPO0FBQUEsdUJBQVM7QUFBQSx1QkFBTztBQUFBLHVCQUFPO0FBQUUsMkJBQU0sRUFBRSxHQUFHLE1BQUksTUFBSSxPQUFLLEdBQUc7QUFBQSx1QkFBTztBQUFFLDJCQUFPLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSTtBQUFBLHVCQUFRO0FBQUUsMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHLEVBQUUsS0FBRyxHQUFHLE1BQUksTUFBSSxDQUFDO0FBQUEsdUJBQVE7QUFBRSwyQkFBTyxHQUFHLE1BQUksTUFBSSxHQUFHO0FBQUEsdUJBQU87QUFBRyw0QkFBTyxHQUFHO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUEsMkJBQVE7QUFBRywrQkFBTTtBQUFBO0FBQVcsK0JBQU8sR0FBRztBQUFBO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksTUFBSSxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHLE1BQUksS0FBRyxHQUFHLEVBQUUsSUFBRSxLQUFHLEdBQUcsS0FBRyxDQUFDLEdBQUcsSUFBRSxHQUFHLEtBQUcsQ0FBQyxHQUFHO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksTUFBSSxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHLE1BQUksT0FBSyxHQUFHO0FBQUEsdUJBQU87QUFBRyw0QkFBTyxHQUFHO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFHLCtCQUFNO0FBQUE7QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsTUFBSSxNQUFJLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUcsS0FBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRyxJQUFFO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsTUFBSSxNQUFJLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEVBQUUsMkJBQTJCLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sRUFBRSwyQkFBMkIsR0FBRyxDQUFDLEtBQUcsR0FBRyxNQUFJO0FBQUEsdUJBQVE7QUFBRywyQkFBTTtBQUFBO0FBQUcsdUJBQU8sRUFBRSxNQUFNLEtBQUsseUNBQXlDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBRyxFQUFFLE1BQU0sT0FBTyxHQUFHLE1BQUksRUFBRSxHQUFFLEdBQUcsTUFBSSxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHO0FBQUUseUJBQU8sT0FBSyxNQUFJLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSztBQUFBLGdCQUFHO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUMsdUJBQVMsS0FBSTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLEdBQUUsRUFBRSwyQkFBMkIsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUUsRUFBRSx3Q0FBd0MsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLE1BQUksT0FBSyxHQUFHLE1BQUksS0FBRyxHQUFHLEVBQUUsSUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsS0FBSTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFHLEdBQUcsTUFBSTtBQUFFLHlCQUFNO0FBQUcsd0JBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFBLHVCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTyxHQUFHLE1BQUk7QUFBQSx1QkFBUTtBQUFFLDJCQUFPLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSTtBQUFBLHVCQUFRO0FBQUUsMkJBQU8sR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJO0FBQUEsdUJBQVM7QUFBRSwyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUk7QUFBQSx1QkFBUztBQUFHLDJCQUFPLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsTUFBSTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSTtBQUFBLHVCQUFRO0FBQUcsMkJBQU8sR0FBRyxNQUFJO0FBQUEsdUJBQVE7QUFBRywyQkFBTyxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUk7QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSTtBQUFBLHVCQUFRO0FBQUcsMkJBQU8sR0FBRyxNQUFJLE1BQUksR0FBRyxFQUFFO0FBQUE7QUFBVSwyQkFBTTtBQUFBO0FBQUEsY0FBRztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTSxDQUFDLEVBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUcsR0FBRyxNQUFJO0FBQUEsY0FBRztBQUFDLHVCQUFTLEtBQUk7QUFBQyx5QkFBUSxLQUFHLEdBQUUsS0FBRyxJQUFHO0FBQUssc0JBQUcsS0FBRyxLQUFHLE9BQUssR0FBRyxJQUFHLElBQUUsS0FBRyxHQUFHLEVBQUU7QUFBRywyQkFBTTtBQUFHLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FB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RztBQUFFLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLHVCQUFPLEdBQUcsR0FBRyxJQUFFLEdBQUcsSUFBRyxJQUFHLFFBQU8sSUFBRyxHQUFHLElBQUUsR0FBRyxHQUFHLElBQUUsR0FBRyxJQUFHLElBQUcsUUFBTyxJQUFHLEdBQUcsSUFBRSxHQUFHLElBQUUsR0FBRyxJQUFHLElBQUcsUUFBTyxFQUFFLElBQUUsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxNQUFJO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyx3QkFBTyxHQUFHO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUcsMkJBQU07QUFBQTtBQUFHLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBSSxLQUFHLEdBQUc7QUFBRSx1QkFBTyxHQUFHLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsS0FBSTtBQUFDLG9CQUFJO0FBQUcsdUJBQU8sR0FBRyxFQUFFLEtBQUcsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsRUFBRSxLQUFHLEtBQUcsR0FBRyxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLEtBQUcsR0FBRyxNQUFJLE9BQUssR0FBRyxNQUFJLE9BQUssR0FBRyxHQUFFLEdBQUcsTUFBSSxNQUFJLEdBQUcsS0FBRyxHQUFHLE1BQUk7QUFBQSxjQUFJO0FBQUMsdUJBQVMsS0FBSTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLG1CQUFHLEdBQUc7QUFBRSxvQkFBSSxL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RywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVE7QUFBSSwyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHLEVBQUUsSUFBRSxHQUFHLElBQUUsSUFBRSxHQUFHO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHO0FBQUEsdUJBQU8sS0FBSTtBQUFDLHdCQUFJLEtBQUcsR0FBRztBQUFFLDJCQUFPLEdBQUcsTUFBSSxPQUFLLENBQUMsRUFBRSxzQkFBc0IsSUFBRSxHQUFHLEVBQUUsSUFBRTtBQUFBLGtCQUFFO0FBQUEsdUJBQU07QUFBSSwyQkFBTyxHQUFHLEVBQUUsSUFBRSxHQUFHLElBQUUsR0FBRztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRyxFQUFFLElBQUUsR0FBRyxJQUFFLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsRUFBRSxJQUFFLEdBQUcsSUFBRSxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHO0FBQUE7QUFBVSwyQkFBTyxHQUFHO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsd0JBQU8sR0FBRztBQUFBLHVCQUFRO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFB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QUMsdUJBQU8sR0FBRyxHQUFFLENBQUMsRUFBRSxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksTUFBSSxHQUFHLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJLE9BQUssR0FBRyxHQUFFLEdBQUcsTUFBSTtBQUFBLGNBQUs7QUFBQyx1QkFBUyxLQUFJO0FBQUMsb0JBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHO0FBQUUsdUJBQU8sS0FBRyxHQUFHLEdBQUcsd0JBQXdCLFFBQU8sSUFBRyxFQUFFLEdBQUUsRUFBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBSSxLQUFHLEdBQUc7QUFBRSxvQkFBRyxHQUFHLE1BQUksT0FBSyxDQUFDLEVBQUUsc0JBQXNCO0FBQUUseUJBQU8sR0FBRyxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxNQUFJLE1BQUksR0FBRyxJQUFFLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRyxJQUFFLEdBQUcsSUFBRTtBQUFPLHVCQUFPLEdBQUcsR0FBRyx3QkFBd0IsSUFBRyxJQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBRyxLQUFHO0FBQU0seUJBQU8sR0FBRyxPQUFNLEVBQUU7QUFBRSxvQkFBRyxHQUFHO0FBQUUseUJBQU8sR0FBRztBQUFFLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLG9CQUFHLENBQUMsR0FBRyxLQUFHLENBQUMsRUFBRSxzQkFBc0IsS0FBRyxHQUFHLEVBQUUsR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQUcsRUFBRTtBQUFFLHNCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJB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QUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxzQkFBRyxDQUFDLENBQUMsR0FBRyxFQUFFO0FBQUUsMkJBQU8sTUFBSSxHQUFHLElBQUUsS0FBRztBQUFBLGdCQUFNO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx3QkFBTyxHQUFHO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUcsMkJBQU07QUFBQTtBQUFHLHVCQUFNLENBQUMsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsd0JBQU8sR0FBRztBQUFBLHVCQUFRO0FBQUEsdUJBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBSSx3QkFBRyxDQUFDLEdBQUcsRUFBRTtBQUFFO0FBQU0sMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUEsdUJBQVE7QUFBRyx3QkFBRyxHQUFHLE1BQUk7QUFBRyw2QkFBTyxHQUFHO0FBQUU7QUFBQSx1QkFBVztBQUFHLDJCQUFPLEdBQUcsS0FBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRztBQUFBO0FBQUUsdUJBQU8sR0FBRyxFQUFFLFlBQVksbUJBQW1CO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxtQkFBRyxFQUFFO0FBQUUsb0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSx1QkFBTyxHQUFHLEVBQUUsR0FBRSxHQUFHLEdB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O0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVM7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFHLDJCQUFNO0FBQUEsdUJBQVE7QUFBSSwyQkFBTyxHQUFHLEtBQUcsR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFNO0FBQUEsdUJBQVE7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsS0FBRyxDQUFDLEdBQUcsRUFBRTtBQUFBO0FBQVUsMkJBQU8sR0FBRztBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRyxLQUFHLEdBQUcsTUFBSSxNQUFJLEdBQUcsTUFBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx3QkFBTyxHQUFHO0FBQUEsdUJBQVE7QUFBRywyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBRywyQkFBTyxHQUFHLEtBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxRQUFPLE1BQU07QUFBQSx1QkFBTztBQUFJLHdCQUFHLEdBQUc7QUFBRSw2QkFBTyxHQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsUUFBTyxNQUFNO0FBQUU7QUFBQSx1QkFBVztBQUFHLDJCQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxRQUFPLE1BQU07QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxRQUFPLE1BQU07QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUc7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEdBQUcsR0FBRztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRyxHQUFHO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFRO0FBQUcsMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSx3QkFBRyxHQUFHO0FBQUUsNkJBQU8sR0FBRztBQUFFO0FBQUE7QUFBTSx1QkFBTyxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLHVCQUFPLEdBQUcsU0FBTztBQUFBLGNBQUc7QUFBQyx1QkFBUyxLQUFJO0FBQUMsb0JBQUksS0FBRyxFQUFFLEtBQUssR0FBRyxXQUFVO0FBQUMseUJBQU8sR0FBRyxHQUFFLEdBQUc7QUFBQSxnQkFBQyxDQUFDLEdBQUUsRUFBRTtBQUFFLG9CQUFH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QUFHLENBQUMsR0FBRyxFQUFFO0FBQUU7QUFBQSxnQkFBTSxPQUFLO0FBQUMsc0JBQUcsTUFBSSxHQUFHLE1BQUksT0FBSyxHQUFHLEVBQUU7QUFBRTtBQUFPLHNCQUFHLE1BQUksR0FBRyxNQUFJO0FBQUk7QUFBTyxzQkFBRyxDQUFDLEdBQUc7QUFBRTtBQUFBLGdCQUFNO0FBQUMsdUJBQU8sR0FBRyxHQUFHLFlBQVksRUFBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyx5QkFBUSxLQUFHLEdBQUcsR0FBRSxJQUFHLElBQUcsS0FBRyxPQUFHLEtBQUcsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFHLHFCQUFHLFNBQU8sUUFBTSxLQUFHLE9BQUksS0FBRyxFQUFFLE9BQU8sSUFBRyxFQUFFO0FBQUUsdUJBQU8sTUFBSSxHQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsb0JBQUk7QUFBRyxvQkFBRyxHQUFHLE1BQUksS0FBSTtBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFFLHFCQUFHO0FBQUUsc0JBQUksS0FBRyxHQUFHLEdBQUcsWUFBWSxHQUFHLEdBQUUsRUFBRTtBQUFFLHVCQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsS0FBSTtBQUFDLG9CQUFJLEtBQUcsR0FBRztBQUFFLG9CQUFHLEdBQUcsTUFBSTtBQUFHLHlCQUFPLEdBQUcsR0FBRSxHQUFHLEdBQUcsNEJBQTRCLEdBQUUsRUFBRTtBQUFFLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxNQUFHLElBQUU7QUFBRSxvQkFBRyxHQUFHLE1BQUksT0FBSyxHQUFHLEVBQUU7QUFBRSx5QkFBTyxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSxvQkFBRyxHQUFHLEdBQUc7QUFBRSx5QkFBTyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRztB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LG9CQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLG9CQUFHLEdBQUcsU0FBTztBQUFJLHlCQUFPO0FBQUcsb0JBQUksS0FBRyxHQUFHO0FBQUUsdUJBQU8sR0FBRyxHQUFHLGtDQUFrQyxJQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLE1BQUksS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRTtBQUFBLGNBQU07QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sR0FBRyxNQUFJLE1BQUksR0FBRyxNQUFJO0FBQUEsY0FBRztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxHQUFHLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxtQkFBRyxHQUFHO0FBQUUsb0JBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLDJCQUEyQixJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLHVCQUFPLEdBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLG1CQUFHLEdBQUc7QUFBRSxvQkFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxtQkFBRyxFQUFFO0FBQUUsb0JBQUksS0FBRyxHQUFHLE1BQUksT0FBSyxHQUFHLEVBQUUsS0FBRyxHQUFHO0FBQUUsbUJBQUc7QUFBRSxvQkFBSSxLQUFHLEdBQUcsMkJBQTJCLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLHVCQUFPLEdBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FB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QUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLGtDQUFrQyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsMkJBQU8sTUFBSSxHQUFHLEVBQUUsR0FBRTtBQUFBLGtCQUFFO0FBQUMsMkJBQVMsS0FBSTtBQUFDLDZCQUFRLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUcsRUFBRSxLQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHO0FBQUUsMkJBQUcsR0FBRyxHQUFHLCtCQUErQixJQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUEsb0JBQUM7QUFBQywyQkFBTztBQUFBLGtCQUFFO0FBQUMsMkJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQywyQkFBTyxHQUFHLEdBQUcsSUFBRyxHQUFHLElBQUcsR0FBRyxHQUFFLElBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUMsMkJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLElBQUU7QUFBRSwyQkFBTyxHQUFHLEdBQUUsR0FBRyxHQUFHLG1CQUFtQixJQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsR0FBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLDJCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFFO0FBQUUsMkJBQU8sR0FBRyxHQUFFLEdBQUcsR0FBRyxtQkFBbUIsSUFBRyxJQUFHLEdBQUcsSUFBRyxHQUFHLEdBQUUsSUFBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQywyQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyx3QkFBSSxJQUFHLEtBQUcsR0FBRztBQUFFLHNCQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHO0FBQUUsdUJBQUc7QUFBRSx3QkFB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S0FBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRztBQUFFLG9CQUFHLEtBQUcsS0FBRyxHQUFHLFNBQU8sUUFBTSxJQUFFLElBQUcsSUFBRSxJQUFFLElBQUcsS0FBRyxPQUFLLEVBQUUsU0FBTyxFQUFFLGtCQUFrQixJQUFHLEdBQUcsQ0FBQyxLQUFHLEtBQUcsTUFBSSxJQUFFLElBQUcsRUFBRSxTQUFPLFNBQVEsS0FBRyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsS0FBRyxNQUFJLENBQUMsRUFBRSxxQkFBcUIsSUFBRyxHQUFHLEtBQUcsQ0FBQyxHQUFHLGlCQUFlLENBQUMsQ0FBQyxFQUFFLHdDQUF3QyxFQUFFLEtBQUcsR0FBRyxTQUFPO0FBQUkseUJBQUssSUFBRSxHQUFHLEVBQUMsT0FBTSxFQUFDLENBQUMsR0FBRSxLQUFHLFFBQU0sRUFBRSxPQUFLLE1BQUssSUFBRSxNQUFJLEdBQUcsU0FBTyxPQUFLLEVBQUUsV0FBVyxFQUFFLE1BQUksR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLE9BQUssR0FBRyxJQUFFLFFBQU8sSUFBRSxRQUFPLElBQUUsUUFBTyxJQUFFLFFBQU8sSUFBRSxRQUFPLElBQUUsT0FBRyxHQUFHLEVBQUUsR0FBRSxHQUFHLFNBQU8sT0FBTSxFQUFFLEVBQUUsUUFBTSxNQUFJLEtBQUcsS0FBRyxFQUFFLGNBQWMsR0FBRyxJQUFJLE1BQUksR0FBRyxTQUFPLEtBQUksTUFBSSxHQUFHLFNBQU8sTUFBSyxHQUFHLGNBQVksSUFBRyxHQUFHLFNBQU8sUUFBTSxHQUFHLFNBQU8sR0FBRSxHQUFHLGNBQVksSUFBRyxNQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsSUFBRyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFJLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxVQUFRLEdBQUcsaUJBQWUsS0FBSSxPQUFLLElBQUUsS0FBSSxJQUFFLElBQUcsSUFBRSxJQUFHLElBQUUsSUFBRyxJQUFFLElBQUcsSUFBRSxJQUFHLElBQUU7QUFBQSxnQkFBRTtBQUFNLHVCQUFHLE1BQUksS0FBRyxPQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsUUFBTSxLQUFHLEdBQUcsUUFBTSxNQUFJLEdBQUcsUUFBTSxRQUFNLEdBQUcsRUFBRTtBQUFFLG9CQUFFLElBQUcsSUFBRSxJQUFHLElBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsbUJBQUcsSUFBRyxTQUFTLElBQUc7QUFBQyx5QkFBTyxHQUFHLFNBQU8sTUFBSSxHQUFHLEVBQUUsSUFBRTtBQUFBLGdCQUFNLENBQUMsR0FBRSxHQUFHLElBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxTQUFPLE1BQUksR0FBRyxFQUFFLElBQUU7QUFBQSxnQkFBTSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQUssV0FBUyxLQUFHLEtBQUksT0FBSyxVQUFRLEVBQUUsUUFBUSxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUUsYUFBYSxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHO0FBQUUsb0JBQUcsSUFBRSxPQUFHLEdBQUcsRUFBRSxHQUFFO0FBQUMscUJBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRSxHQUFFLElBQUU7QUFBRztBQUFBLGdCQUFNO0FBQUMsd0JBQU8sR0FBRyxRQUFNLE9BQUssR0FBRyxRQUFNLE9BQUssQ0FBQyxHQUFHLHlCQUF1QixHQUFHLFdBQVMsSUFBRyxHQUFHO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUksdUJBQUcsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBUztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUksdUJBQUcsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBUztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQVM7QUFBSSx1QkFBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUksdUJBQUcsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUksdUJBQUcsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUksdUJBQUcsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBSSx3QkFBRyxFQUFFLDBCQUEwQixFQUFFLEdBQUU7QUFBQywwQkFBRSxJQUFHLEdBQUcsRUFBRTtBQUFFO0FBQUEsb0JBQU07QUFBQyx1QkFBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUksdUJBQUcsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFBLHVCQUFTO0FBQUksdUJBQUcsRUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLHVCQUFHLEVBQUU7QUFBRTtBQUFBLHVCQUFXLEtBQUk7QUFBQyx1QkFBRyxHQUFHLFVBQVUsR0FBRSxHQUFHLEdBQUcsY0FBYztBQUFFO0FBQUEsa0JBQUs7QUFBQSx1QkFBTTtBQUFBLHVCQUFT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QWUsSUFBRyxLQUFHLEdBQUcsTUFBSyxLQUFHLEdBQUc7QUFBTyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxrQkFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLElBQUcsR0FBRyxHQUFHLFlBQVcsSUFBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUcsV0FBVSxJQUFHLEVBQUUsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxJQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRztBQUFFLGtCQUFFLElBQUcsQ0FBQyxHQUFFLElBQUUsSUFBRyxHQUFHLEdBQUcsV0FBVSxJQUFHLEVBQUUsR0FBRSxFQUFFLElBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFHLFlBQVcsSUFBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsbUJBQUcsR0FBRyxXQUFXLEdBQUUsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLElBQUcsR0FBRyxHQUFHLFdBQVUsSUFBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUcsV0FBVSxJQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUcsV0FBVyxHQUFFLEVBQUUsSUFBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUs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RSxLQUFHLEdBQUcsWUFBVyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsd0JBQUksS0FBRyxHQUFHO0FBQUksdUJBQUcsU0FBTyxNQUFJLEdBQUcsR0FBRyxXQUFXLElBQUUsR0FBRyxTQUFPLE1BQUksR0FBRyxHQUFHLElBQUksSUFBRSxHQUFHLFNBQU8sT0FBSyxHQUFHLEdBQUcsVUFBVTtBQUFBLGtCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUc7QUFBRSxtQkFBRyxjQUFjLFNBQU8sTUFBSSxHQUFHLGNBQWMsU0FBTyxLQUFHLEdBQUcsR0FBRyxNQUFLLElBQUcsRUFBRSxJQUFFLEdBQUcsR0FBRyxNQUFLLElBQUcsRUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFHLGFBQWEsR0FBRSxFQUFFLHdDQUF3QyxHQUFHLGNBQWMsSUFBSSxLQUFHLEdBQUcsSUFBRyxHQUFHLE9BQU0sSUFBRyxFQUFFLEdBQUUsR0FBRyxHQUFHLElBQUksR0FBRSxFQUFFLElBQUcsR0FBRyxJQUFHLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFHLEdBQUcsSUFBRyxHQUFFLEVBQUUsQ0FBQyxLQUFHLEdBQUcsR0FBRyxPQUFNLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBRyxHQUFHLGFBQVcsSUFBRztBQUFDLHNCQUFJLEtBQUc7QUFBRSxzQkFBRSxHQUFFLElBQUUsSUFBRyxHQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRTtBQUFBLGdCQUFFO0FBQU0scUJBQUcsRUFBRSxJQUFHLEdBQUcsYUFBVyxNQUFJLEdBQUcsYUFBVyxPQUFLLEdBQUcsR0FBRyxPQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG1CQUFHLEVBQUUsSUFBRyxHQUFHLGFBQVcsTUFBSSxHQUFHLGFBQVcsT0FBSyxHQUFHLEdBQUcsT0FBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxH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QkFBTztBQUFJLDJCQUFPLEdBQUcsSUFBRyxPQUFNLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsSUFBRyxPQUFNLEtBQUs7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsSUFBRyxPQUFNLEtBQUs7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSx3QkFBSSxLQUFHLEVBQUUsNkJBQTZCLEVBQUU7QUFBRSw0QkFBTztBQUFBLDJCQUFTO0FBQUUsK0JBQU8sR0FBRyxFQUFFO0FBQUEsMkJBQU87QUFBRSwrQkFBTyxHQUFHLEVBQUU7QUFBQSwyQkFBTztBQUFFLCtCQUFPLEdBQUcsRUFBRTtBQUFBLDJCQUFPO0FBQUU7QUFBQTtBQUFjLCtCQUFPLEVBQUUsTUFBTSxLQUFLLHFEQUFxRDtBQUFBO0FBQUUsc0JBQUUsV0FBVyxFQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUU7QUFBQSx1QkFBVztBQUFBLHVCQUFTO0FBQUksMkJBQU8sSUFBRSxNQUFHLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxJQUFHLElBQUcsTUFBTTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxJQUFHLFFBQU8sTUFBTTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBQSx1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S0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHLElBQUksRUFBRSxPQUFJLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHLElBQUksRUFBRSxPQUFJLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHLElBQUksRUFBRSxPQUFJLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHLENBQUMsR0FBRSxLQUFHLElBQUksRUFBRSxPQUFJLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxHQUFHLEdBQUUsU0FBUyxHQUFFLEtBQUcsR0FBRyxHQUFFLGVBQWUsR0FBRSxLQUFHLElBQUksRUFBRSxPQUFJLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxHQUFHLEdBQUUsS0FBSyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUssR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFLLEdBQUUsS0FBRyxHQUFHLEdBQUUsT0FBTyxHQUFFLEtBQUcsR0FBRyxHQUFFLFlBQVksR0FBRSxLQUFHLEdBQUcsR0FBRSxPQUFNLEtBQUssR0FBRSxLQUFHLEdBQUcsR0FBRSxXQUFXLEdBQUUsS0FBRyxHQUFHLEdBQUUsU0FBUyxHQUFFLEtBQUcsR0FBRyxHQUFFLFNBQVMsR0FBRSxLQUFHLEdBQUcsT0FBTSxXQUFXLEdBQUUsS0FBRyxLQUFHLEtBQUcsR0FBRyxPQUFNLGFBQVksS0FBSyxHQUFFLEtBQUcsR0FBRyxPQUFNLFdBQVcsR0FBRSxLQUFHLEtBQUcsR0FBRyxPQUFNLFdBQVcsSUFBRSxJQUFHLEtBQUcsR0FBRyxPQUFNLE1BQU0sR0FBRSxLQUFHLEtBQUcsS0FBRyxHQUFHLE9BQU0sUUFBTyxLQUFLLEdBQUUsS0FBRyxHQUFHLEdBQUUsUUFBUSxHQUFFLEtBQUcsR0FBRyxHQUFFLFFBQVEsR0FBRSxLQUFHLEdBQUcsSUFBRyxRQUFRLEdBQUUsS0FBRyxHQUFHLEtBQUksT0FBTyxHQUFFLEtBQUcsR0FBRyxLQUFJLE9BQU8sR0FBRSxLQUFHLEdBQUcsS0FBSSxNQUFNLEdBQUUsS0FBRyxHQUFHLEtBQUksTUFBTTtBQUFFLGlCQUFHLGNBQVksSUFBRyxHQUFHLFlBQVUsSUFBRyxHQUFHLGNBQVksSUFBRyxHQUFHLFlBQVUsSUFBRyxHQUFHLGNBQVksSUFBRyxHQUFHLFlBQVUsSUFBRyxHQUFHLGNBQVksSUFBRyxHQUFHLFlBQVU7QUFBRyxrQkFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxNQUFLLFFBQVEsR0FBRSxLQUFHLEdBQUcsT0FBTSxNQUFNLEdBQUUsS0FBRyxHQUFHLFFBQU8sT0FBTyxHQUFFLEtBQUcsR0FBRyxRQUFPLE9BQU8sR0FBRSxLQUFHLEdBQUcsUUFBTyxTQUFRLE1BQU0sR0FBRSxLQUFHLEdBQUcsUUFBTyxPQUFPLEdBQUUsS0FBRyxHQUFHLFFBQU8sT0FBTyxHQUFFLEtBQUcsR0FBRyxVQUFTLFFBQVEsR0FBRSxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDLElBQUcsSUFBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEtBQUcsS0FBRyxJQUFHLEtBQUcsR0FBRyxDQUFDLElBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUMsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDLElBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxTQUFPLEdBQUcsQ0FBQyxJQUFFO0FBQUEsY0FBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxTQUFPLEtBQUc7QUFBQSxjQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsUUFBTyxPQUFPLEdBQUUsS0FBRyxHQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxTQUFPLEtBQUc7QUFBQSxjQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsUUFBTyxJQUFHLEVBQUUsWUFBVyxFQUFFLFlBQVcsRUFBRSxVQUFVLEdBQUUsS0FBRyxHQUFHLFFBQU8sSUFBRyxFQUFFLFlBQVcsRUFBRSxZQUFXLEVBQUUsVUFBVTtBQUFFLGlCQUFHLGVBQWE7QUFBSyxrQkFBSSxLQUFHLEdBQUcsTUFBSyxRQUFRO0FBQUUsaUJBQUcsVUFBUSxFQUFFLGtCQUFrQjtBQUFFLGtCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUcsRUFBRSxZQUFXLEVBQUUsWUFBVyxFQUFFLFVBQVUsR0FBRSxLQUFHLEdBQUcsUUFBTyxJQUFHLEVBQUUsWUFBVyxFQUFFLFlBQVcsRUFBRSxVQUFVO0FBQUUsaUJBQUcsaUJBQWUsSUFBSSxFQUFFO0FBQUksa0JBQUksS0FBRyxHQUFHLFFBQU8sSUFBRyxFQUFFLFlBQVcsRUFBRSxZQUFXLEVBQUUsVUFBVTtBQUFFLGlCQUFHLGVBQWE7QUFBTyxrQkFBSSxLQUFHLEdBQUcsUUFBTyxJQUFHLEVBQUUsWUFBVyxFQUFFLFlBQVcsRUFBRSxVQUFVLEdBQUUsS0FBRyxHQUFHLFFBQU8sSUFBRyxFQUFFLFlBQVcsRUFBRSxZQUFXLEVBQUUsVUFBVSxHQUFFLEtBQUcsR0FBRyxRQUFPLElBQUcsRUFBRSxZQUFXLEVBQUUsWUFBVyxFQUFFLFVBQVUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxpQkFBRyxhQUFXO0FBQUcsa0JBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsa0JBQWlCLEdBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRyxRQUFPLFFBQU8sUUFBTyxFQUFFLFlBQVcsSUFBRyxRQUFPLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxRQUFPLFFBQU8sUUFBTyxFQUFFLFlBQVcsSUFBRyxRQUFPLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxRQUFPLFFBQU8sUUFBTyxFQUFFLFlBQVcsSUFBRyxRQUFPLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxRQUFPLFFBQU8sUUFBTyxFQUFFLFlBQVcsSUFBRyxRQUFPLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLElBQUcsSUFBRSxHQUFFLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxFQUFDLElBQUksWUFBVztBQUFDLHVCQUFPLEVBQUUsTUFBTSxLQUFLLGVBQWU7QUFBQSxjQUFDLEdBQUUsSUFBSSxhQUFZO0FBQUMsdUJBQU8sRUFBRSxNQUFNLEtBQUssZUFBZTtBQUFBLGNBQUMsR0FBRSxJQUFJLFdBQVU7QUFBQyx1QkFBTyxFQUFFLE1BQU0sS0FBSyxlQUFlO0FBQUEsY0FBQyxFQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxFQUFDLGtCQUFpQixpQ0FBZ0Msa0JBQWlCLGlDQUFnQyxvQkFBbUIsaUJBQWdCLHVCQUFzQixJQUFHLHVCQUFzQixJQUFHLCtCQUE4QixJQUFHLHdCQUF1QixJQUFHLHNCQUFxQixJQUFHLCtCQUE4QixFQUFFLFlBQVksMkNBQTBDLHlCQUF3QixFQUFFLFlBQVksc0RBQXFELDBCQUF5QixFQUFFLFlBQVksMEdBQXlHLEdBQUUsS0FBRyxFQUFDLGtCQUFpQiw0QkFBMkIsa0JBQWlCLDRCQUEyQixvQkFBbUIsWUFBVyx1QkFBc0IsSUFBRyx1QkFBc0IsSUFBRywrQkFBOEIsSUFBRyx3QkFBdUIsSUFBRyxzQkFBcUIsU0FBUyxHQUFFLEdBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUMsR0FBRSwrQkFBOEIsRUFBRSxZQUFZLHFDQUFvQyx5QkFBd0IsRUFBRSxZQUFZLGdEQUErQywwQkFBeUIsRUFBRSxZQUFZLDRFQUEyRSxHQUFFLElBQUcsS0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHLE9BQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxPQUFHLEtBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsVUFBUyxPQUFHLGFBQVksSUFBRyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRSxLQUFHLEVBQUUsMkJBQTJCLEdBQUUsS0FBRyxFQUFFLDJCQUEyQixHQUFFLEtBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUMsUUFBTyxJQUFHLFFBQU8sSUFBRyxRQUFPLElBQUcsU0FBUSxJQUFHLFFBQU8sSUFBRyxXQUFVLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsS0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHLElBQUksRUFBRSxPQUFJLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxJQUFJLEVBQUUsT0FBSSxLQUFHLElBQUksRUFBRSxPQUFJLEtBQUcsSUFBSSxFQUFFLE9BQUksS0FBRyxFQUFFLGtCQUFrQjtBQUFF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LElBQUUsSUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxNQUFJLENBQUMsR0FBRyxDQUFDLEdBQUUsS0FBRyxJQUFJLE1BQU0sS0FBRyxLQUFHLElBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxNQUFJLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRyxzQkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEtBQUc7QUFBRyx3QkFBSSxNQUFJLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRyxzQkFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsTUFBSSxDQUFDLE1BQUksT0FBSyxJQUFFLEdBQUUsS0FBRyxNQUFJLEdBQUcsQ0FBQyxLQUFHLE1BQUksR0FBRyxDQUFDLEdBQUUsS0FBRyxNQUFJLElBQUUsU0FBTyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsTUFBSSxJQUFFLFNBQU8sR0FBRyxHQUFFLEVBQUUsR0FBRSxLQUFHLE9BQUssS0FBRyxLQUFHLEtBQUcsS0FBRyxTQUFPLEtBQUcsSUFBRyxLQUFHLEdBQUcsS0FBRyxNQUFJLENBQUMsS0FBRyxXQUFTLElBQUcsTUFBSSxNQUFNLE9BQU8sRUFBRSxDQUFDO0FBQUUscUJBQUcsT0FBSyxLQUFHLEdBQUcsRUFBRSxJQUFFLElBQUcsR0FBRyxNQUFJO0FBQUEsZ0JBQUU7QUFBQyxvQkFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsTUFBTTtBQUFFLHFCQUFHLE9BQUssR0FBRyxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxNQUFJLEdBQUcsT0FBSyxHQUFHLEdBQUcsTUFBSyxDQUFDLElBQUcsR0FBRyxLQUFHO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxrQkFBZ0IsRUFBRSxnQkFBZTtBQUFFLGtCQUFFLGtCQUFnQixFQUFFLG1CQUFpQixJQUFFLEdBQUcsRUFBRSxnQkFBZSxFQUFFLGNBQWM7QUFBRyxvQkFBSSxJQUFFLEVBQUUsYUFBWSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxlQUFjLEVBQUUsZUFBYyxDQUFDLEdBQUUsSUFBRSxLQUFLLElBQUksRUFBRSxrQkFBaUIsRUFBRSxnQkFBZ0IsR0FBRSxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxRQUFPLFFBQU8sSUFBRyxFQUFFLFFBQU0sRUFBRSxTQUFPLEVBQUU7QUFBRSx1QkFBTyxHQUFHLGdCQUFjLFNBQVEsR0FBRyxzQkFBb0IsRUFBRSxZQUFZLEVBQUUsa0JBQWdCLFdBQVMsRUFBRSx1QkFBcUIsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxNQUFJLEdBQUcsU0FBTyxFQUFFLGtCQUFnQixXQUFTLEVBQUUsVUFBUSxFQUFFLHNCQUFvQixHQUFHLEVBQUUsUUFBTyxDQUFDLElBQUUsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxFQUFFO0FBQUUsb0JBQUcsR0FBRTtBQUFDLDJCQUFRLElBQUUsQ0FBQyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFO0FBQVEsc0JBQUUsTUFBTSxHQUFFLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsQ0FBQyxHQUFHLElBQUcsRUFBRTtBQUFBLG9CQUFDLENBQUMsS0FBRyxFQUFFLEtBQUssR0FBRyxJQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSxvQkFBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUssR0FBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxHQUFHLElBQUcsRUFBRSxFQUFFO0FBQUEsb0JBQVUsQ0FBQyxDQUFDLENBQUM7QUFBQSxrQkFBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLHdCQUFJLElBQUUsRUFBRTtBQUFHLHNCQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHlCQUFPO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFO0FBQUEsY0FBVTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFNLFNBQVMsR0FBRTtBQUFDLHlCQUFPLE1BQUksS0FBRyxDQUFDLEVBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDLENBQUMsQ0FBQyxHQUFFLElBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFNLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsQ0FBQyxDQUFDLEdBQUUsSUFBRSxHQUFHLEVBQUUsS0FBSztBQUFFLG1CQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLElBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLENBQUMsSUFBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxXQUFXLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLENBQUMsRUFBRSxTQUFPO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFJLEdBQUUsRUFBRTtBQUFFLG9CQUFHLElBQUUsS0FBRyxNQUFJLEVBQUUsV0FBVyxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLFFBQVEsSUFBRTtBQUFFLG9CQUFFLEtBQUc7QUFBQSxnQkFBRTtBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsQ0FB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QUFHLFFBQU0sU0FBUTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxFQUFFLHNDQUFzQyxFQUFFLElBQUU7QUFBRSx3QkFBRyxJQUFHO0FBQUMsMEJBQUcsS0FBRyxNQUFJLEdBQUcsUUFBTSxXQUFTLE1BQUksR0FBRyxPQUFNLENBQUM7QUFBRSw0QkFBRTtBQUFBLCtCQUFXLE9BQUssR0FBRTtBQUFDLDRCQUFJLE1BQUksR0FBRyxFQUFFLEtBQUcsU0FBTyxHQUFHLENBQUMsS0FBRztBQUFHLDRCQUFHLE1BQUksR0FBRyxHQUFFLElBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyxpQ0FBTyxPQUFLLEtBQUcsS0FBRztBQUFBLHdCQUFDLENBQUMsTUFBSTtBQUFHLCtCQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQUEsNkJBQU07QUFBQyxnQ0FBSSxJQUFFLElBQUksRUFBRSxPQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRSxDQUFDO0FBQUcsOEJBQUksS0FBRyxFQUFFLEVBQUU7QUFBRSw0QkFBRSxJQUFJLEVBQUUsS0FBRyxFQUFFLElBQUksSUFBRyxFQUFFO0FBQUEsd0JBQUM7QUFBQSxzQkFBQztBQUFDLDRCQUFJLEdBQUcsRUFBRSxJQUFFLE1BQUksSUFBRSxDQUFDLE1BQUksQ0FBQyxHQUFHLEVBQUUsTUFBSSxNQUFJLEtBQUksT0FBSyxLQUFHLEtBQUcsSUFBRSxRQUFNLEtBQUcsS0FBRyxNQUFJLE1BQUksS0FBRyxJQUFFLE9BQUssTUFBSSxLQUFHLEtBQUcsT0FBSyxJQUFHLEdBQUcsRUFBRSxNQUFJLEtBQUc7QUFBQSxvQkFBRSxXQUFTLElBQUc7QUFBQywwQkFBSSxLQUFHLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRSw0QkFBSSxNQUFJLE1BQUksR0FBRyxhQUFXLElBQUUsSUFBRyxJQUFFLEVBQUUsT0FBTyxHQUFFLEdBQUcsRUFBRSxJQUFF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RSxHQUFHLFFBQVE7QUFBRSx1QkFBTyxFQUFFLFdBQVMsR0FBRSxFQUFFLGFBQVcsR0FBRSxHQUFHLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFTLFdBQVM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFFLEdBQUcsR0FBRSxFQUFFLFNBQVMsSUFBRyxFQUFFLFNBQVMsRUFBRSxJQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBSSxHQUFHLENBQUMsSUFBRSxHQUFHLENBQUMsSUFBRTtBQUFBLGNBQU07QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHlCQUFRLEdBQUUsSUFBRSxNQUFHLEtBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFHLEVBQUUsU0FBTyxPQUFLO0FBQUMsc0JBQUksSUFBRSxFQUFFO0FBQU8sc0JBQUcsRUFBRSxTQUFPLFFBQU0sSUFBRSxDQUFDLEtBQUksS0FBRyxFQUFFLFFBQU0sWUFBVSxFQUFFLFNBQU8sT0FBSyxNQUFJLEVBQUUsVUFBUztBQUFDLHdCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsV0FBVSxFQUFFLFdBQVc7QUFBRSwwQkFBSSxJQUFFLEVBQUUsT0FBTyxHQUFFLENBQUM7QUFBQSxrQkFBRSxXQUFTLEVBQUUsUUFBTSxVQUFRLEVBQUUsU0FBTyxPQUFLLE1BQUksRUFBRSxNQUFLO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRyxHQUFHLENBQUMsTUFBSSxHQUFHLENBQUMsR0FBRTtBQUFDLDBCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsMEJBQUcsR0FBRTtBQUFDLDRCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsNkJBQUcsR0FBRyxHQUFFLEVBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxHQUFFLEdBQUcsQ0FBQyxJQUFHLEVBQUUs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Y0FBRTtBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxPQUFLLEtBQUcsR0FBRyxRQUFPLEdBQUUsSUFBRSxLQUFHLEtBQUksT0FBSyxLQUFHLFNBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sT0FBSyxLQUFHLEdBQUcsV0FBVSxHQUFFLENBQUMsTUFBSSxJQUFFLEtBQUcsVUFBUyxPQUFLLEtBQUcsU0FBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxLQUFJO0FBQUMsdUJBQU8sT0FBSyxLQUFHLEdBQUcsVUFBUyxHQUFFLEtBQUUsTUFBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLE1BQUksS0FBRyxHQUFHLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRyxJQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLElBQUUsS0FBRyxJQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFJLDJCQUFPO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsZ0JBQWMsSUFBRSxFQUFFLGlCQUFlLEdBQUcsQ0FBQyxJQUFFO0FBQUE7QUFBVSwyQkFBTztBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxJQUFJLElBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxNQUFNLEdBQUUsSUFBRSxH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S0FBRyxFQUFFLEdBQUUsTUFBSSxRQUFNLEdBQUcsT0FBTyxLQUFHLEdBQUUsS0FBRyxFQUFFO0FBQUcsb0JBQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxVQUFTLEVBQUU7QUFBRSx1QkFBTyxPQUFLLEtBQUcsS0FBRyxFQUFFLFNBQU8sR0FBRyxJQUFHLENBQUMsSUFBRTtBQUFHLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBRyxNQUFJLEtBQUcsRUFBRSxTQUFRLEtBQUcsS0FBRyxLQUFHLE1BQUksS0FBRyxFQUFFLFNBQVEsS0FBRyxNQUFJLEtBQUcsRUFBRSxTQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRSxNQUFJLEtBQUcsR0FBRyxLQUFLLEVBQUUsSUFBRSxLQUFHO0FBQUEsZ0JBQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFJLFdBQVMsSUFBRTtBQUFHLG9CQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsR0FBRyxDQUFDLElBQUU7QUFBRSx1QkFBTyxJQUFFLEVBQUUsY0FBWSxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsVUFBVSxJQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxFQUFFLGFBQWEsTUFBTSxHQUFFLENBQUMsR0FBRSxPQUFHLEVBQUUsOEJBQTRCLEVBQUUsMkJBQTJCLE1BQU0sR0FBRSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxhQUFZLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsS0FBRyxDQUFDO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFLEdBQUcsRUFBRSxPQUFPLFdBQVMsS0FBRyxFQUFFLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxVQUFVLEVBQUUsY0FBYSxT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QUksMkJBQU87QUFBQSx1QkFBUTtBQUFJLDJCQUFPO0FBQUEsdUJBQVE7QUFBSSwyQkFBTztBQUFBLHVCQUFRO0FBQUksMkJBQU87QUFBQSx1QkFBUTtBQUFJLDJCQUFPO0FBQUEsdUJBQVE7QUFBSSwyQkFBTztBQUFBLHVCQUFRO0FBQUksMkJBQU87QUFBQSx1QkFBUTtBQUFJLDJCQUFPLEVBQUUsUUFBTSxVQUFRLENBQUMsSUFBRSxLQUFHO0FBQUEsdUJBQVE7QUFBSSwyQkFBTztBQUFBLHVCQUFRO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLGtCQUFnQixLQUFHO0FBQUEsdUJBQVE7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVE7QUFBQSx1QkFBUztBQUFJLHdCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsMkJBQU8sSUFBRSxHQUFHLENBQUMsSUFBRTtBQUFBO0FBQVcsMkJBQU87QUFBQTtBQUFBLGNBQUc7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsS0FBRyxFQUFFO0FBQU8sMkJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsd0JBQUcsTUFBSSxHQUFFO0FBQUMsMEJBQUksSUFBRSxNQUFJLElBQUUsQ0FBQyxJQUFFLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBRSwyQkFBSSxFQUFFLEtBQUssQ0FBQyxHQUFFLEtBQUksSUFBRSxFQUFFLFFBQU87QUFBSSwwQkFBRSxLQUFLLEVBQUUsRUFBRSxJQUFHLENBQUMsQ0FBQztBQUFFLDZCQUFPO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVC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QUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsRUFBRSxJQUFFLEtBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxVQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU0sU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQyxDQUFDLElBQUUsRUFBRSxRQUFNLFVBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDLENBQUMsSUFBRSxFQUFFLFFBQU0sV0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFHLElBQUcsQ0FBQyxJQUFFLE1BQUksS0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFNLFlBQVUsTUFBSSxLQUFHLENBQUMsRUFBRSxFQUFFLFFBQU0sV0FBUyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUMsS0FBRyxHQUFHLENBQUMsS0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLE1BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDLElBQUUsT0FBRyxDQUFDLEtBQUcsQ0FBQyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEVBQUUsRUFBRSxRQUFNLFlBQVUsRUFBRSxRQUFNLFdBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTSxFQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBRSx5QkFBTTtBQUFHLG9CQUFHLENBQUMsR0FBRyxHQUFFLEdBQUUsR0FBRSxNQUFNLEtBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUseUJBQU07QUFBRyx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsRUFBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSw0QkFBTyxFQUFFLGNBQWM7QUFBQSwyQkFBVztBQUFBLDJCQUFRO0FBQUcsK0JBQU8sR0FBRyxFQUFFLE9BQU0sR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQTtBQUFFO0FBQUEsdUJBQVc7QUFBSSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUE7QUFBRSx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyx5QkFBUSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRSxLQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFJLHNCQUFHLEVBQUUsS0FBSyxJQUFHLFNBQVMsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsMkJBQU0sRUFBRSxHQUFHLFFBQU0sV0FBUyxHQUFHLElBQUcsR0FBRSxHQUFFLE1BQU07QUFBQSxrQkFBQyxDQUFDLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEtBQUcsQ0FBQztBQUFFLHVCQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUUsd0JBQUksS0FBRyxHQUFHLE9BQU8sR0FBRyxPQUFPLFNBQU87QUFBRywyQkFBTyxFQUFFLGVBQWUsSUFBRyxFQUFFLHdCQUF3QixHQUFFLE9BQUssS0FBRyxFQUFFLFlBQVksK0NBQTZDLEVBQUUsWUFBWSxvQ0FBb0MsQ0FBQyxHQUFFO0FBQUEsa0JBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEtBQUcsRUFBRSxLQUFLLEVBQUUsWUFBVyxFQUFFLE9BQU87QUFBRSx5QkFBTTtBQUFHLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsQ0FBQztBQUFFLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7QUFBRSx5QkFBTTtBQUFHLG9CQUFJLEtBQUcsRUFBRSxNQUFLLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFFLEVBQUUsQ0FBQztBQUFFLG9CQUFHLENBQUMsR0FBRyxJQUFHLElBQUcsR0FBRSxNQUFNLEdBQUU7QUFBQyxzQkFBSSxLQUFHLE1BQUksR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQUUsc0JBQUc7QUFBRywyQkFBTztBQUFHLHNCQUFJLEtBQUcsS0FBRyxDQUFDO0FBQUUsc0JBQUcsR0FBRyxJQUFHLElBQUcsR0FBRSxJQUFHLFFBQU8sR0FBRSxFQUFFLEdBQUUsR0FBRztBQUFPLDJCQUFPLEVBQUUsVUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLFlBQVksS0FBRyxFQUFFLGVBQWUsR0FBRyxPQUFPLEdBQUcsT0FBTyxTQUFPLElBQUcsRUFBRSx3QkFBd0IsRUFBRSxPQUFPLGFBQWEsSUFBRyxFQUFFLFlBQVksOERBQThELENBQUMsSUFBRyxFQUFFLGlCQUFpQixDQUFDLElBQUUsT0FBSyxLQUFHLENBQUMsR0FBRyxJQUFHLE1BQU0sS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLElBQUcsR0FBRSxNQUFNLEtBQUcsRUFBRSxlQUFlLEdBQUcsT0FBTyxHQUFHLE9BQU8sU0FBTyxJQUFHLEVBQUUsd0JBQXdCLEdBQUUsRUFBRSxZQUFZLDJDQUEyQyxDQUFDLEdBQUU7QUFBQSxnQkFBRTtBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUc7QUFBRSx5QkFBTztBQUFFLG9CQUFHLEVBQUUsUUFBTSxTQUFRO0FBQUMsc0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHNCQUFHO0FBQUUsMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFFLGlCQUFlO0FBQUUsb0JBQUc7QUFBQyx5QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsVUFBQztBQUFRLG9CQUFFLGlCQUFlO0FBQUEsZ0JBQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsT0FBRyxJQUFFLEVBQUUsS0FBSyxHQUFFLENBQUMsRUFBRSxNQUFLLElBQUUsRUFBRSxLQUFLLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEVBQUUsT0FBTSxLQUFHLEdBQUcsV0FBVSxLQUFHLEdBQUcsaUJBQWdCLEtBQUcsR0FBRyxVQUFTLEtBQUcsR0FBRyxjQUFhLEtBQUcsR0FBRyxHQUFFLEdBQUUsRUFBRTtBQUFFLHNCQUFHLEVBQUUsQ0FBQyxNQUFJLEdBQUcsUUFBTSxVQUFTO0FBQUMsd0JBQUksS0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLHdCQUFHLENBQUMsQ0FBQyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHLElBQUcsTUFBTTtBQUFFLDBCQUFHLENBQUMsR0FBRyxJQUFHLElBQUcsR0FBRSxNQUFNLEdBQUU7QUFBQyw0QkFBSSxLQUFHLE1BQUksR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQUUsNEJBQUcsSUFBRSxNQUFHLENBQUMsSUFBRztBQUFDLDhCQUFJLEtBQUcsS0FBRyxDQUFDLEdBQUUsS0FBRyxLQUFHLEdBQUcsSUFBRyxFQUFFLElBQUU7QUFBRyw4QkFBRyxNQUFJLEdBQUcsSUFBRyxFQUFFLEdBQUU7QUFBQyxnQ0FBSSxLQUFHLEVBQUUsd0JBQXdCLElBQUcsRUFBRSxZQUFZLG1JQUFrSSxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsQ0FBQztBQUFFLCtCQUFHLElBQUksRUFBRSxHQUFFLEdBQUcsU0FBTyxDQUFDLEVBQUU7QUFBQSwwQkFBQyxPQUFLO0FBQUMsZ0NBQUksS0FBRyxDQUFDLEVBQUUsT0FBSyxHQUFHLEdBQUUsRUFBRSxLQUFHLElBQUksUUFBTSxXQUFVLEtBQUcsQ0FBQyxFQUFFLE9BQUssR0FBRyxHQUFFLEVBQUUsS0FBRyxJQUFJLFFBQU07QUFBVSxpQ0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLE1BQUksRUFBRTtBQUFFLGdDQUFJLEtBQUcsR0FBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxFQUFFO0FBQUUsa0NBQUksT0FBSyxNQUFJLEdBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsRUFBRTtBQUFBLDBCQUFDO0FBQUMsOEJBQUcsR0FBRyxRQUFPO0FBQUMsZ0NBQUksS0FBRyxHQUFHLE9BQU8sR0FBRyxPQUFPLFNBQU8sSUFBRyxLQUFHLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLFFBQU8sS0FBRyxPQUFLLFNBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxRQUFPLEtBQUc7QUFBRyxnQ0FBRyxDQUFDLElBQUc7QUFBQyxrQ0FBSSxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUsb0NBQUksR0FBRyxlQUFhLENBQUMsRUFBRSxvQkFBb0IsR0FBRyxXQUFXLEVBQUUsb0JBQWtCLEtBQUcsTUFBRyxFQUFFLGVBQWUsSUFBRyxFQUFFLHdCQUF3QixHQUFHLGFBQVksRUFBRSxZQUFZLGlEQUFpRCxDQUFDO0FBQUEsNEJBQUU7QUFBQyxnQ0FBRyxDQUFDLE9BQUssTUFBSSxFQUFFLE9BQU8sR0FBRyxZQUFZLEtBQUcsRUFBRSxVQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sWUFBWSxJQUFHO0FBQUMsa0NBQUksS0FBRyxNQUFJLEVBQUUsT0FBTyxHQUFHLFlBQVksSUFBRSxHQUFHLGFBQWEsS0FBRyxFQUFFLE9BQU8sYUFBYTtBQUFHLGdDQUFFLG9CQUFvQixFQUFFLEVBQUUsbUJBQWlCLEVBQUUsZUFBZSxJQUFHLEVBQUUsd0JBQXdCLElBQUcsRUFBRSxZQUFZLDBFQUF5RSxNQUFJLEVBQUUsR0FBRyxRQUFNLFFBQU0sRUFBRSwyQkFBMkIsRUFBRSxJQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQSw0QkFBQztBQUFBLDBCQUFDO0FBQUEsd0JBQUM7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLEdBQUUsR0FBRTtBQUFFLHVCQUFPLEdBQUcsTUFBSyxTQUFTLEdBQUU7QUFBQywwQkFBTyxFQUFFO0FBQUEseUJBQVk7QUFBRSwwQkFBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVU7QUFBRSwrQkFBTSxDQUFDLENBQUM7QUFBRSwwQkFBRSxHQUFFLElBQUUsRUFBRSxZQUFXLEVBQUUsUUFBTTtBQUFBLHlCQUFPO0FBQUUsNkJBQU8sSUFBRSxFQUFFLFVBQVEsSUFBRSxFQUFFLElBQUcsRUFBRSxxQkFBcUIsQ0FBQyxLQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRSxDQUFDLEdBQUUsRUFBQyxXQUFVLEVBQUUsTUFBSyxpQkFBZ0IsRUFBRSxhQUFZLFVBQVMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBQyxDQUFDLEtBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLHdCQUFFLEtBQUssR0FBRSxFQUFFLFFBQU07QUFBQSx5QkFBTztBQUFFLDZCQUFPLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFNLENBQUMsQ0FBQztBQUFBO0FBQUEsZ0JBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBRSx1QkFBTyxHQUFHLE1BQUssU0FBUyxHQUFFO0FBQUMsMEJBQU8sRUFBRTtBQUFBLHlCQUFZO0FBQUUsMEJBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRO0FBQUUsK0JBQU0sQ0FBQyxDQUFDO0FBQUUsMEJBQUUsR0FBRSxJQUFFLEdBQUUsRUFBRSxRQUFNO0FBQUEseUJBQU87QUFBRSw2QkFBTyxJQUFFLEVBQUUsU0FBUyxVQUFRLElBQUUsRUFBRSxTQUFTLElBQUcsSUFBRSxHQUFHLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRSxDQUFDLEdBQUUsQ0FBQyxLQUFHLENBQUMsR0FBRSxDQUFDO0FBQUEseUJBQU87QUFBRSw2QkFBTyxFQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsMkJBQUksRUFBRSxRQUFNO0FBQUEseUJBQU87QUFBRSw2QkFBTyxLQUFJLENBQUMsR0FBRSxDQUFDO0FBQUEseUJBQU87QUFBRSw2QkFBTSxDQUFDLENBQUM7QUFBQTtBQUFBLGdCQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFJLDJCQUFNLEVBQUMsV0FBVSxHQUFFLGlCQUFnQixFQUFFLFlBQVcsVUFBUyxFQUFDO0FBQUEsdUJBQU87QUFBRyx3QkFBRyxFQUFFO0FBQThCO0FBQU0sMkJBQU0sRUFBQyxXQUFVLEdBQUUsaUJBQWdCLFFBQU8sVUFBUyxHQUFFLGNBQWEsRUFBRSxFQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksMkJBQU0sRUFBQyxXQUFVLEdBQUUsaUJBQWdCLEdBQUUsVUFBUyxFQUFDO0FBQUE7QUFBVSwyQkFBTyxFQUFFLE1BQU0sWUFBWSxHQUFFLHlCQUF5QjtBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBRSxvQkFBRyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sS0FBRyxFQUFFLGFBQWEsRUFBRSxPQUFPLE1BQU0sR0FBRTtBQUFDLHNCQUFJLEtBQUcsRUFBRSxPQUFPLFFBQU8sS0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxPQUFLLFNBQU8sYUFBVyxFQUFFLDJCQUEyQixFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLHVCQUF1QixHQUFHLFFBQVE7QUFBRSxzQkFBRyxDQUFDLEVBQUUsT0FBTyxFQUFFO0FBQUUsMkJBQU87QUFBRSxzQkFBSSxLQUFHLEVBQUUsT0FBTyxFQUFFLElBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU0sQ0FBQyxHQUFHLEVBQUU7QUFBQSxrQkFBQyxDQUFDO0FBQUUsc0JBQUcsSUFBRztBQUFDLHdCQUFHLE9BQUssSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxHQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFLDBCQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxHQUFFLENBQUMsS0FBRztBQUFBLG9CQUFDLFdBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUU7QUFBQywwQkFBRTtBQUFHLDBCQUFJLEtBQUcsR0FBRyxHQUFHLGVBQWUsU0FBUSxFQUFFLFlBQVksNEZBQTJGLElBQUcsR0FBRyxFQUFFLENBQUM7QUFBRSwyQkFBRyxFQUFFLGdCQUFjLEVBQUUsV0FBUyxFQUFFLFNBQU8sQ0FBQyxJQUFJLEtBQUssRUFBRTtBQUFBLG9CQUFDO0FBQUEsa0JBQUMsV0FBUyxPQUFLLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSwyQkFBSyxJQUFFLEdBQUcsV0FBVTtBQUFDLDZCQUFPLEdBQUcsTUFBSyxTQUFTLElBQUc7QUFBQyxnQ0FBTyxHQUFHO0FBQUEsK0JBQVk7QUFBRSxtQ0FBTSxDQUFDLEdBQUUsRUFBRTtBQUFBLCtCQUFPO0FBQUUsbUNBQU8sR0FBRyxLQUFLLEdBQUUsQ0FBQyxDQUFDO0FBQUE7QUFBQSxzQkFBRSxDQUFDO0FBQUEsb0JBQUMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxLQUFHO0FBQUEsa0JBQUUsV0FBUyxDQUFDLEdBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRTtBQUFDLHdCQUFFO0FBQUcsd0JBQUksS0FBRyxHQUFHLEdBQUcsZUFBZSxTQUFRLEVBQUUsWUFBWSw0R0FBMkcsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFFLHlCQUFHLEVBQUUsZ0JBQWMsRUFBRSxXQUFTLEVBQUUsU0FBTyxDQUFDLElBQUksS0FBSyxFQUFFO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUUseUJBQVMsS0FBSTtBQUFDLHNCQUFHLENBQUMsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxjQUFjLEVBQUUsT0FBTyxPQUFPLEdBQUUsS0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxPQUFLLFNBQU8sYUFBVyxFQUFFLDJCQUEyQixFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsWUFBWTtBQUFrSCx3QkFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLEtBQUkseUJBQXdCLFNBQVEsRUFBRSxjQUFjLFFBQU8sSUFBRyxJQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQyx5QkFBTztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksR0FBRSxHQUFFLEdBQUU7QUFBRSx1QkFBTyxHQUFHLE1BQUssU0FBUyxHQUFFO0FBQUMsMEJBQU8sRUFBRTtBQUFBLHlCQUFZO0FBQUUsMEJBQUcsSUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEdBQUUsQ0FBQztBQUFFLCtCQUFNLENBQUMsQ0FBQztBQUFFLDBCQUFFLEdBQUUsRUFBRSxRQUFNO0FBQUEseUJBQU87QUFBRSw2QkFBTyxJQUFFLElBQUUsR0FBRyxDQUFDLEtBQUcsQ0FBQyxHQUFHLEdBQUUsS0FBRyxDQUFDLElBQUUsQ0FBQyxHQUFFLENBQUMsS0FBRyxJQUFFLEVBQUUsU0FBUyxJQUFHLEVBQUUsb0JBQW9CLENBQUMsSUFBRSxDQUFDLEdBQUUsQ0FBQyxLQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsV0FBVSxHQUFFLGlCQUFnQixHQUFFLFVBQVMsRUFBQyxDQUFDLE1BQUksQ0FBQyxHQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLHdCQUFFLEtBQUssR0FBRSxFQUFFLFFBQU07QUFBQSx5QkFBTztBQUFFLDZCQUFPLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFNLENBQUMsQ0FBQztBQUFBO0FBQUEsZ0JBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxRQUFNO0FBQU8seUJBQU07QUFBRyxvQkFBRyxHQUFHLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUksSUFBRSxFQUFFO0FBQWUsa0JBQUUsaUJBQWU7QUFBRSxvQkFBRztBQUFDLHNCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsSUFBRTtBQUFFLHlCQUFPLEVBQUUsaUJBQWUsR0FBRSxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxnQkFBRSxVQUFDO0FBQVEsb0JBQUUsaUJBQWU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUUsdUJBQU8sR0FBRyxNQUFLLFNBQVMsR0FBRTtBQUFDLDBCQUFPLEVBQUU7QUFBQSx5QkFBWTtBQUFFLDBCQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVTtBQUFFLCtCQUFNLENBQUMsQ0FBQztBQUFFLDBCQUFFLEdBQUUsSUFBRSxFQUFFLFlBQVcsRUFBRSxRQUFNO0FBQUEseUJBQU87QUFBRSwwQkFBRyxFQUFFLElBQUUsRUFBRTtBQUFRLCtCQUFNLENBQUMsR0FBRSxDQUFDO0FBQUUsMEJBQUcsSUFBRSxFQUFFLElBQUcsRUFBRSxtQkFBbUIsQ0FBQztBQUFFLCtCQUFNLENBQUMsR0FBRSxDQUFDO0FBQUUsMEJBQUcsSUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFFLElBQUksR0FBRSxDQUFDLEtBQUcsRUFBRSxRQUFNO0FBQU8sK0JBQU0sQ0FBQyxHQUFFLENBQUM7QUFBRSw4QkFBTyxJQUFFLEVBQUUsTUFBSztBQUFBLDZCQUFRO0FBQUksaUNBQU0sQ0FBQyxHQUFFLENBQUM7QUFBQSw2QkFBTztBQUFJLGlDQUFNLENBQUMsR0FBRSxDQUFDO0FBQUEsNkJBQU87QUFBSSxpQ0FBTSxDQUFDLEdBQUUsQ0FBQztBQUFBLDZCQUFPO0FBQUksaUNBQU0sQ0FBQyxHQUFFLENBQUM7QUFBQSw2QkFBTztBQUFJLGlDQUFNLENBQUMsR0FBRSxDQUFDO0FBQUE7QUFBRSw2QkFBTSxDQUFDLEdBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsNkJBQU0sQ0FBQyxHQUFFLEVBQUMsV0FBVSxFQUFFLE1BQUssaUJBQWdCLFFBQU8sVUFBUyxFQUFDLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFPLEVBQUUsS0FBSyxHQUFFLENBQUMsR0FBRSxDQUFDO0FBQUEseUJBQU87QUFBRSw2QkFBTSxDQUFDLEdBQUUsRUFBQyxXQUFVLEVBQUUsTUFBSyxpQkFBZ0IsRUFBRSxhQUFZLFVBQVMsR0FBRSxjQUFhLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxJQUFFLEVBQUUsWUFBWSwyRUFBeUUsT0FBTSxDQUFDO0FBQUEseUJBQU87QUFBRSw2QkFBTyxFQUFFLEtBQUssR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLHlCQUFPO0FBQUUsd0JBQUUsTUFBTSxZQUFZLENBQUMsR0FBRSxFQUFFLFFBQU07QUFBQSx5QkFBTztBQUFFLDZCQUFPLEtBQUksQ0FBQyxHQUFFLENBQUM7QUFBQSx5QkFBTztBQUFFLDZCQUFNLENBQUMsQ0FBQztBQUFBO0FBQUEsZ0JBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxRQUFNLFNBQU8sUUFBRyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLElBQUUsSUFBRSxHQUFFLE9BQUcsUUFBTyxRQUFPLElBQUcsTUFBTSxNQUFJO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFNLENBQUMsRUFBRSxtQkFBaUIsQ0FBQyxFQUFFLGlCQUFlLEdBQUcsR0FBRyxFQUFFLGFBQWEsQ0FBQyxNQUFJLEVBQUUsV0FBVyxXQUFTLEtBQUcsRUFBRSxDQUFDLE1BQUksR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFJLE1BQUksR0FBRyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsTUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFNO0FBQUcsb0JBQUksS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLENBQUMsR0FBRyxDQUFDLE1BQUksSUFBRSxJQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFFLEtBQUcsR0FBRyxDQUFDLElBQUU7QUFBSSxvQkFBRztBQUFHLHlCQUFPO0FBQUUsa0JBQUUsa0JBQWdCLEVBQUUsbUJBQWlCLEVBQUUsbUJBQWlCLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxRQUFPLENBQUM7QUFBRyxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUM7QUFBRSxpQkFBQyxNQUFJLE9BQUssR0FBRyxNQUFJLElBQUcsQ0FBQztBQUFFLG9CQUFJLEtBQUcsRUFBRSxjQUFZLEVBQUUsWUFBWSxPQUFLLEdBQUUsS0FBRyxFQUFFLElBQUUsTUFBSSxNQUFJLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxLQUFJLEtBQUcsSUFBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLG9CQUFHLE1BQUksT0FBSyxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxDQUFDLE1BQUksRUFBRSxJQUFHLElBQUcsS0FBRSxLQUFHLEVBQUUsSUFBRyxJQUFHLENBQUM7QUFBRSx3QkFBRyxDQUFDO0FBQUcsNkJBQU8sS0FBRyxFQUFFLEVBQUUsWUFBWSxpREFBaUQsR0FBRTtBQUFFLDBCQUFJO0FBQUEsa0JBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFRLEtBQUcsTUFBSSxLQUFHLEtBQUssSUFBSSxJQUFHLEVBQUUsSUFBRSxLQUFLLElBQUksSUFBRyxFQUFFLEdBQUUsS0FBRyxNQUFJLEtBQUcsS0FBRyxJQUFFLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxNQUFLO0FBQUMsc0JBQUksS0FBRyxPQUFLLEtBQUcsR0FBRyxHQUFFLEVBQUUsSUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRSxFQUFFLElBQUUsR0FBRyxHQUFFLEVBQUU7QUFBRSxzQkFBRyxNQUFJLElBQUc7QUFBQyx3QkFBSSxLQUFHLElBQUUsSUFBRSxTQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLElBQUUsSUFBRSxTQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLE1BQUksTUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFHLENBQUMsR0FBRyxFQUFFLE1BQUksR0FBRyxFQUFFLElBQUUsWUFBVSxHQUFHLEVBQUUsSUFBRSxRQUFPLEtBQUcsS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFFLEtBQUcsS0FBRyxJQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxJQUFFLE1BQUksQ0FBQyxNQUFJLEVBQUUsSUFBRyxJQUFHLEtBQUUsS0FBRyxFQUFFLElBQUcsSUFBRyxDQUFDO0FBQUUsd0JBQUcsTUFBSSxJQUFFLEtBQUcsTUFBSSxHQUFHLENBQUMsS0FBRyxLQUFHLEdBQUcsQ0FBQyxLQUFHLEVBQUUsSUFBRyxJQUFHLEtBQUUsTUFBSSxLQUFHLElBQUcsQ0FBQztBQUFHLDZCQUFPLEtBQUcsRUFBRSxFQUFFLFlBQVksOENBQTZDLEVBQUUsMkJBQTJCLEdBQUcsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLDJCQUEyQixHQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRTtBQUFFLDBCQUFJO0FBQUEsa0JBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFHLEVBQUUsSUFBRSxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUMsSUFBRSxLQUFHLEVBQUUsZUFBYSxHQUFHLEVBQUUsV0FBVyxJQUFFLEdBQUcsR0FBRyxFQUFFLFlBQVksTUFBTSxDQUFDLElBQUUsR0FBRyxDQUFDO0FBQUUsc0JBQUcsT0FBSyxNQUFJLE9BQUs7QUFBRywyQkFBTztBQUFHLHNCQUFJLEtBQUcsR0FBRyxDQUFDLElBQUUsS0FBRyxFQUFFLGVBQWEsR0FBRyxFQUFFLFdBQVcsSUFBRSxHQUFHLEdBQUcsRUFBRSxZQUFZLE1BQU0sQ0FBQyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsc0JBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsd0JBQUc7QUFBRyw0QkFBSSxHQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLDZCQUFVLEVBQUUsMEJBQTBCLEVBQUU7QUFBRSw2QkFBTyxLQUFHLEVBQUUsRUFBRSxZQUFZLHNDQUFxQyxHQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUEsa0JBQUM7QUFBTSwwQkFBSSxJQUFFLEtBQUcsRUFBRSxJQUFHLElBQUcsS0FBRSxLQUFHLEVBQUUsSUFBRyxJQUFHLENBQUMsR0FBRSxDQUFDLE1BQUksS0FBRyxLQUFHLEVBQUUsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTyxFQUFFO0FBQUsseUJBQU8sTUFBSSxFQUFFLEVBQUUsWUFBWSwyRUFBMkUsR0FBRSxFQUFFLEVBQUUsWUFBWSx5Q0FBd0MsR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsSUFBRztBQUFFLHFCQUFJLEVBQUUsU0FBTyxLQUFHLEVBQUUsU0FBTyxNQUFJLEVBQUUsbUJBQWlCLEVBQUU7QUFBZSx5QkFBTyxNQUFJLEVBQUUsRUFBRSxZQUFZLHdEQUF1RCxFQUFFLGVBQWMsRUFBRSxhQUFhLEdBQUUsRUFBRSxFQUFFLFlBQVkseUNBQXdDLEdBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUc7QUFBRSxvQkFBSSxJQUFFLEVBQUUsU0FBTyxFQUFFLE9BQUssS0FBRyxFQUFFLFFBQU0sRUFBRSxPQUFLLEVBQUUsRUFBRSxNQUFLLEVBQUUsTUFBSyxDQUFDLElBQUU7QUFBRSx1QkFBTyxNQUFJLEtBQUcsS0FBRyxFQUFFLEVBQUUsWUFBWSx5Q0FBd0MsR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRSxFQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsSUFBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLE1BQUksTUFBSSxFQUFFLFdBQVcsV0FBUyxLQUFHLEVBQUUsZUFBZSxXQUFTLEtBQUcsRUFBRSxvQkFBb0IsV0FBUyxLQUFHLEVBQUUsV0FBVyxXQUFTO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxTQUFPLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFFLEVBQUUsUUFBTSxXQUFTLE9BQUcsRUFBRSxRQUFNLFVBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTSxFQUFFLElBQUUsRUFBRSxRQUFNLFVBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTSxFQUFFLElBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUUsT0FBSyxFQUFFLFdBQVMsR0FBRyxDQUFDLEtBQUcsRUFBRSxVQUFRLEVBQUUsT0FBTyxRQUFNLFFBQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFPO0FBQUEsY0FBRztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxVQUFRLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLEVBQUUsV0FBUyxLQUFHLEdBQUcsQ0FBQyxFQUFFLFdBQVMsS0FBRyxDQUFDLENBQUMsR0FBRyxHQUFFLEVBQUUsS0FBRyxFQUFFLFFBQU0sV0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFNLEVBQUUsS0FBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSTtBQUFFLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxFQUFFLENBQUMsSUFBRSxNQUFJLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxJQUFJLENBQUM7QUFBRSxvQkFBRyxNQUFJLFVBQVEsRUFBRSxFQUFFLElBQUUsTUFBSSxJQUFFLEtBQUc7QUFBRyx5QkFBTSxDQUFDLEVBQUUsSUFBRTtBQUFHLG9CQUFHLEVBQUUsZ0JBQWMsRUFBRSxlQUFhLEVBQUUsRUFBRSxRQUFNLFFBQU0sRUFBRSxFQUFFLFFBQU07QUFBSyx5QkFBTyxHQUFHLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBRyx5QkFBUSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQUcsc0JBQUcsR0FBRyxRQUFNLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLFdBQVc7QUFBRSx3QkFBRyxDQUFDLE1BQUksRUFBRSxHQUFHLFFBQU07QUFBRyw2QkFBTyxLQUFHLEVBQUUsRUFBRSxZQUFZLGlDQUFnQyxFQUFFLFdBQVcsRUFBRSxHQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsUUFBTyxFQUFFLENBQUMsR0FBRSxHQUFHLElBQUksR0FBRSxDQUFDLEtBQUcsR0FBRyxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsa0JBQUU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsSUFBSSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsT0FBTSxJQUFFLEVBQUU7QUFBTSx1QkFBTyxJQUFFLEtBQUcsSUFBRSxVQUFRLE1BQUksS0FBRyxPQUFHLElBQUUsU0FBTyxRQUFHLENBQUMsRUFBRSxJQUFFLGFBQVcsSUFBRSxLQUFHLElBQUUsT0FBSyxJQUFFLFFBQU0sSUFBRSxPQUFLLEVBQUUsSUFBRSxTQUFPLEVBQUUsVUFBUSxFQUFFLFNBQU8sSUFBRSxPQUFLLElBQUUsS0FBRyxJQUFFLE9BQUssSUFBRSxRQUFNLElBQUUsT0FBSyxFQUFFLElBQUUsU0FBTyxFQUFFLFVBQVEsRUFBRSxTQUFPLElBQUUsUUFBTSxJQUFFLE1BQUksSUFBRSxPQUFLLElBQUUsTUFBSSxJQUFFLFNBQU8sSUFBRSxRQUFNLElBQUUsTUFBSSxJQUFFLE1BQUksR0FBRyxFQUFFLFFBQU8sRUFBRSxRQUFPLENBQUMsS0FBRyxJQUFFLFFBQU0sSUFBRSxTQUFPLElBQUUsV0FBUyxJQUFFLFdBQVMsR0FBRyxFQUFFLFFBQU8sRUFBRSxRQUFPLENBQUMsS0FBRyxJQUFFLFFBQU0sSUFBRSxRQUFNLEVBQUUsVUFBUSxFQUFFLFNBQU8sR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFFLEdBQUcsRUFBRSxNQUFNLEdBQUUsQ0FBQyxNQUFJLElBQUUsVUFBUSxDQUFDLE1BQUksRUFBRSxJQUFFLFlBQVUsSUFBRSxVQUFRLElBQUUsVUFBUSxDQUFDLE1BQUksRUFBRSxJQUFFLFlBQVUsSUFBRSxVQUFRLElBQUUsVUFBUSxJQUFFLGFBQVcsTUFBSSxNQUFJLE1BQUksUUFBTSxJQUFFLEtBQUcsSUFBRSxPQUFLLEVBQUUsSUFBRSxVQUFRLElBQUUsTUFBSSxNQUFJLE1BQUksSUFBRSxPQUFLLElBQUU7QUFBQSxjQUFPO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEdBQUcsQ0FBQyxNQUFJLElBQUUsRUFBRSxjQUFhLEdBQUcsQ0FBQyxNQUFJLElBQUUsRUFBRSxjQUFhLE1BQUk7QUFBRSx5QkFBTTtBQUFHLG9C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b0JBQUcsQ0FBQyxHQUFFO0FBQUMsMkJBQUcsUUFBTyxHQUFHLEVBQUU7QUFBRTtBQUFBLG9CQUFNO0FBQUMsd0JBQUksS0FBRyxNQUFJLEdBQUcsSUFBRyxFQUFFO0FBQUUsd0JBQUcsS0FBRyxDQUFDLElBQUcsT0FBSyxFQUFFLGNBQVksQ0FBQyxJQUFHO0FBQUMsMEJBQUcsTUFBSSxFQUFFLE1BQUksRUFBRSxLQUFLLElBQUcsU0FBUyxJQUFHO0FBQUMsZ0NBQU8sS0FBRyxPQUFLO0FBQUEsc0JBQUMsQ0FBQztBQUFHLCtCQUFPO0FBQUUsMkJBQUcsR0FBRSxHQUFHLEVBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBTyxPQUFLLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxPQUFLLEdBQUcsS0FBRSxHQUFFO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBTyxPQUFLLE9BQUssTUFBSSxPQUFLLE1BQUksT0FBSyxPQUFLLEdBQUcsSUFBRSxHQUFFO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxNQUFJLE9BQUssTUFBSSxLQUFHLEdBQUcsRUFBRSxNQUFJLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRTtBQUFHLHNCQUFHLElBQUc7QUFBQyx3QkFBSSxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRyxFQUFFLElBQUUsSUFBRSxLQUFHLEVBQUUsQ0FBQztBQUFFLHdCQUFHLEtBQUcsR0FBRyxJQUFHLElBQUcsR0FBRSxFQUFFLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFFLDBCQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxNQUFJLEdBQUcsR0FBRyxFQUFF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R0FBRyxHQUFFO0FBQUMseUJBQVEsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLE1BQUksSUFBRSxJQUFHLE1BQUksS0FBRyxNQUFJO0FBQUUsMkJBQU07QUFBQSxnQkFBRTtBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsV0FBUyxJQUFFLEVBQUUsS0FBRyxHQUFHLENBQUMsSUFBRSxHQUFHLENBQUMsSUFBRSxFQUFFLFdBQVcsR0FBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxDQUFDLElBQUUsSUFBRTtBQUFBLGdCQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUcsQ0FBQztBQUFHLHlCQUFPLEdBQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxPQUFPLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU0sRUFBRSxFQUFFLFFBQU07QUFBQSxnQkFBTSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxTQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLElBQUUsS0FBSyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsV0FBVyxHQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLENBQUMsSUFBRSxJQUFFO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsSUFBRSxPQUFLLEVBQUUsV0FBUyxNQUFJLEVBQUUsV0FBUztBQUFBLGNBQUc7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsSUFBRSxNQUFJLEVBQUUs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RSxRQUFNO0FBQUEsY0FBTztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxXQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU0sRUFBRSxLQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxLQUFHLE9BQUcsRUFBRSxRQUFNLFVBQVEsRUFBRSxRQUFNLE9BQUssT0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFNLEVBQUUsSUFBRSxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxRQUFNLE9BQUssR0FBRyxDQUFDLElBQUUsRUFBRSxRQUFNLFlBQVUsS0FBRyxFQUFFLFFBQU0sTUFBSSxLQUFHLEVBQUUsUUFBTSxPQUFLLEtBQUcsRUFBRSxRQUFNLE1BQUksS0FBRyxFQUFFLFFBQU0sVUFBUSxHQUFHLEdBQUUsRUFBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxRQUFNLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLEVBQUUsUUFBTSxPQUFLLEdBQUcsQ0FBQyxJQUFFLEtBQUcsRUFBRSxRQUFNLE9BQUssR0FBRyxDQUFDLElBQUUsS0FBRyxFQUFFLFFBQU0sUUFBTSxHQUFHLENBQUMsSUFBRSxLQUFHLEVBQUUsUUFBTSxPQUFLLEdBQUcsQ0FBQyxJQUFFLEtBQUcsRUFBRSxRQUFNLFVBQVEsR0FBRyxHQUFFLEVBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFFBQU0sT0FBSyxLQUFHLEVBQUUsUUFBTSxVQUFRLEdBQUcsR0FBRSxFQUFFLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsQ0FBQyxNQUFJLElBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcs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LFNBQVMsR0FBRTtBQUFDLHlCQUFNLEVBQUUsR0FBRyxDQUFDLElBQUU7QUFBQSxnQkFBTyxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxRQUFNLElBQUUsS0FBRyxFQUFFLFFBQU0sSUFBRSxLQUFHLEVBQUUsUUFBTSxLQUFHLEtBQUcsTUFBSSxNQUFJLE1BQUksTUFBSSxFQUFFLFFBQU0sVUFBUSxFQUFFLFFBQU0sT0FBSyxFQUFFLFVBQVEsTUFBSSxFQUFFLFFBQU0sT0FBSyxFQUFFLFVBQVEsS0FBRyxFQUFFLFFBQU0sUUFBTSxHQUFHLENBQUMsSUFBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxJQUFFLENBQUMsRUFBRSxRQUFNO0FBQU0sdUJBQU8sTUFBSSxJQUFFLElBQUUsR0FBRyxNQUFJLFFBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRSxNQUFJLFFBQU0sQ0FBQyxHQUFFLEVBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxNQUFJLFdBQVMsSUFBRSxRQUFJLEVBQUUsTUFBTSxPQUFPLEVBQUUsR0FBRSxFQUFFLFFBQU0sUUFBTSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUUsT0FBTztBQUFFLHVCQUFPLE9BQUssS0FBRyxHQUFHLGVBQWMsUUFBTyxNQUFNLEtBQUcsS0FBSSxPQUFLLEtBQUcsR0FBRyxJQUFHLENBQUMsQ0FBQyxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sS0FBRyxHQUFHLENBQUMsSUFB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QUFDLEVBQUUsV0FBVyxFQUFFLEtBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUFFO0FBQU8seUJBQVEsS0FBRyxFQUFFLE1BQU0sR0FBRSxFQUFFLFNBQU8sR0FBRyxNQUFNLEdBQUUsS0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPLEtBQUcsR0FBRSxLQUFHLEdBQUUsTUFBSztBQUFDLHNCQUFJLEtBQUcsRUFBRTtBQUFJLHNCQUFHLEdBQUcsU0FBTyxHQUFFO0FBQUMsNkJBQVEsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLEdBQUcsRUFBRSxFQUFFLFFBQVEsSUFBRyxFQUFFLEdBQUUsRUFBRSxNQUFJLE1BQUk7QUFBQywwQkFBRyxNQUFLLE9BQUssRUFBRTtBQUFPO0FBQU8sMkJBQUc7QUFBQSxvQkFBQztBQUFDLHVCQUFHLElBQUcsRUFBRSxHQUFFLE1BQUksR0FBRztBQUFBLGtCQUFNLFdBQVMsS0FBRyxHQUFHLEVBQUUsRUFBRTtBQUFPLHVCQUFHLElBQUcsS0FBRyxDQUFDO0FBQUEsMkJBQVUsS0FBRztBQUFFLHVCQUFHLEtBQUcsR0FBRSxDQUFDO0FBQUE7QUFBTztBQUFBLGdCQUFNO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRTtBQUFHLHlCQUFTLEdBQUcsSUFBRztBQUFDLHlCQUFPLEtBQUcsSUFBRSxFQUFFLE1BQUk7QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxPQUFLLEtBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxNQUFNLElBQUcsRUFBRSxDQUFDLElBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksTUFBTSxFQUFFLENBQUMsR0FBRSxFQUFFLE1BQU0sS0FBRyxHQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRSxHQUFFLEVBQUUsTUFBTSxJQUFHLEVBQUUsQ0FBQztBQUFFLHFCQUFHLEtBQUssRUFBRSxHQUFFLEtBQUcsSUFBRyxLQUFHO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBSSxXQUFTLElBQUUsSUFBRyxNQUFJLFdBQVMsSUFBRTtBQUFJLG9CQUFJLElBQUUsT0FBRyxHQUFFLElBQUUsTUFBSyxLQUFHLE1BQUcsSUFBRyxJQUFHLElBQUcsS0FBRztBQUFFLG1CQUFHLEdBQUUsQ0FBQztBQUFFLHlCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFFO0FBQUMsd0JBQUcsT0FBSyxJQUFHO0FBQUMsMEJBQUksS0FBRztBQUFFLDBCQUFFLElBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxJQUFFO0FBQUc7QUFBQSxvQkFBTTtBQUFDLHdCQUFHLEdBQUcsZUFBYSxHQUFHLHNCQUFvQixHQUFHLGdCQUFjLEdBQUcsYUFBWTtBQUFDLHlCQUFHLEdBQUcsb0JBQW1CLEdBQUcsb0JBQW1CLEdBQUcsR0FBRyxXQUFXLENBQUM7QUFBRTtBQUFBLG9CQUFNO0FBQUMsd0JBQUcsT0FBSyxNQUFJLEdBQUcsUUFBTSxTQUFRO0FBQUMsK0JBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRyxPQUFNLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBSSwyQkFBRyxJQUFHLEVBQUU7QUFBQSxzQkFBQztBQUFDO0FBQUEsb0JBQU07QUFBQyx3QkFBRyxHQUFHLFFBQU0sU0FBUTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxHQUFHLFFBQU0sVUFBUSxHQUFHLFFBQU0sQ0FBQyxFQUFFLEdBQUUsR0FBRyxPQUFNLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxLQUFHLEdBQUc7QUFBRywwQkFBRyxHQUFHLFdBQVM7QUFBRTtBQUFPLDBCQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsR0FBRyxXQUFTLEdBQUU7QUFBQywyQkFBRyxJQUFHLElBQUcsQ0FBQztBQUFFO0FBQUEsc0JBQU07QUFBQywyQkFBRyxHQUFHLEVBQUU7QUFBQSxvQkFBQyxXQUFTLEdBQUcsUUFBTSxXQUFTLEVBQUUsS0FBSyxHQUFHLE9BQU0sU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRSxLQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFHLEVBQUU7QUFBQSxvQkFBQyxDQUFDLEdBQUU7QUFBQywwQkFBRyxFQUFFLEdBQUcsUUFBTSxVQUFTO0FBQUMsNEJBQUksS0FBRyxHQUFHLEdBQUcsUUFBTSxVQUFRLEdBQUcsUUFBTSxDQUFDLEVBQUUsR0FBRSxHQUFHLE9BQU0sRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLDRCQUFHLEdBQUcsV0FBUyxLQUFHLEdBQUcsV0FBUztBQUFFO0FBQU8sNkJBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUU7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQU0seUJBQUcsUUFBTSxhQUFXLEtBQUcsR0FBRyxFQUFFO0FBQUcsd0JBQUcsR0FBRyxRQUFNLFNBQVE7QUFBQywwQkFBRyxPQUFLLE1BQUksT0FBSyxNQUFJLElBQUUsUUFBTSxPQUFLLE1BQUksT0FBSyxPQUFLLEdBQUcsRUFBRTtBQUFFO0FBQU8sMEJBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSwwQkFBRyxJQUFHO0FBQUMsNEJBQUcsRUFBRSxlQUFlLEVBQUUsSUFBRTtBQUFPO0FBQU8sNEJBQUcsQ0FBQyxHQUFHLFNBQVE7QUFBQywrQkFBSSxHQUFHLGFBQVcsVUFBUSxJQUFFLEdBQUcsY0FBWSxHQUFHLGFBQVcsUUFBTyxHQUFHLG1CQUFpQixRQUFPLEdBQUcsV0FBUyxNQUFHLEdBQUcsV0FBUyxJQUFHLE1BQUksR0FBRyxVQUFTO0FBQUMsZ0NBQUksS0FBRyxLQUFHO0FBQUcsaUNBQUcsQ0FBQyxJQUFFLEVBQUUsU0FBUyxHQUFHLGtCQUFpQixFQUFFLE1BQUksR0FBRyxtQkFBaUIsRUFBRSxPQUFPLEdBQUcsa0JBQWlCLEVBQUUsR0FBRSxHQUFHLENBQUMsS0FBRyxFQUFFLFNBQVMsR0FBRyxZQUFXLEVBQUUsTUFBSSxHQUFHLGFBQVcsRUFBRSxPQUFPLEdBQUcsWUFBVyxFQUFFLEdBQUUsR0FBRyxDQUFDO0FBQUEsMEJBQUU7QUFBQyw0QkFBRSxJQUFFLFFBQU0sR0FBRyxRQUFNLFVBQVEsR0FBRyxZQUFVLENBQUMsR0FBRyxHQUFFLEVBQUUsTUFBSSxHQUFHLFdBQVMsT0FBRyxHQUFHLENBQUM7QUFBQSx3QkFBRTtBQUFDLDRCQUFFLEtBQUssSUFBSSxHQUFFLENBQUM7QUFBRTtBQUFBLHNCQUFNO0FBQUMsMEJBQUksS0FBRyxHQUFHLElBQUcsS0FBRTtBQUFFLDBCQUFHLE9BQUs7QUFBRywyQkFBRyxJQUFHLEVBQUU7QUFBQSwrQkFBVSxHQUFHLFFBQU0sU0FBUTtBQUFDLDRCQUFJLEtBQUcsR0FBRyxHQUFHLFdBQVUsS0FBRTtBQUFFLDRCQUFHLEdBQUcsUUFBTSxXQUFVO0FBQUMsOEJBQUksS0FBRyxHQUFHLEdBQUcsR0FBRyxZQUFXLEtBQUUsR0FBRSxJQUFHLEtBQUU7QUFBRSxnQ0FBSSxPQUFLLE1BQUksR0FBRyxJQUFHLEVBQUU7QUFBQSx3QkFBQztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQyx3QkFBRyxFQUFFLGVBQWUsRUFBRSxJQUFFLEtBQUcsRUFBRSxlQUFlLEVBQUUsSUFBRSxNQUFJLEdBQUcsV0FBUyxHQUFHLFVBQVEsR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFLE1BQUksRUFBRSxHQUFHLFFBQU0sR0FBRztBQUFNLHlCQUFHLEdBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRyxNQUFNLENBQUM7QUFBQSw2QkFBVSxHQUFHLFFBQU0sV0FBUyxHQUFHLFFBQU07QUFBUSwwQkFBRSxDQUFDLEdBQUUsR0FBRyxHQUFHLE1BQUssR0FBRyxJQUFJLEdBQUUsSUFBRSxDQUFDO0FBQUEsOEJBQVcsR0FBRyxFQUFFLEtBQUcsR0FBRyxRQUFNLE1BQUksR0FBRyxRQUFNLFNBQVE7QUFBQywwQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLDBCQUFFLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxNQUFLLEdBQUcsR0FBRSxJQUFFLENBQUM7QUFBQSxvQkFBQyxXQUFTLEdBQUcsUUFBTSxXQUFTLEdBQUcsUUFBTTtBQUFRLHlCQUFHLEdBQUcsWUFBVyxHQUFHLFVBQVUsR0FBRSxHQUFHLEdBQUcsV0FBVSxHQUFHLFNBQVM7QUFBQSw2QkFBVSxHQUFHLFFBQU0sYUFBVyxHQUFHLFFBQU07QUFBVSx5QkFBRyxXQUFTLEdBQUcsVUFBUSxHQUFHLEdBQUcsTUFBSyxHQUFHLElBQUk7QUFBQSw2QkFBVSxHQUFHLFFBQU0sVUFBUztBQUFDLHlCQUFHLEdBQUcsVUFBUyxFQUFFO0FBQUUsMEJBQUksS0FBRztBQUFFLDJCQUFHLEdBQUUsR0FBRyxHQUFHLFlBQVcsRUFBRSxHQUFFLElBQUU7QUFBQSxvQkFBRSxXQUFTLEdBQUcsUUFBTTtBQUFTLHlCQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsNkJBQVUsR0FBRyxRQUFNO0FBQVEseUJBQUcsSUFBRyxHQUFHLE9BQU0sR0FBRyxLQUFLO0FBQUEsNkJBQVUsR0FBRyxRQUFNO0FBQVEsK0JBQVEsS0FBRyxHQUFHLE9BQU0sS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsNEJBQUksS0FBRyxHQUFHO0FBQUksMkJBQUcsSUFBRyxFQUFFO0FBQUEsc0JBQUM7QUFBQSw2QkFBUyxHQUFHLFFBQU07QUFBVSx5QkFBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTTtBQUFDLDBCQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFFLE9BQUssR0FBRyxRQUFNLFlBQVc7QUFBQyw0QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLDRCQUFHLE9BQUssTUFBSSxNQUFJLEVBQUUsR0FBRyxRQUFNO0FBQVMsaUNBQU8sS0FBRyxPQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsNkJBQUc7QUFBQSxzQkFBRTtBQUFDLHlCQUFHLFFBQU0sV0FBUyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUc7QUFBRSx1QkFBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxLQUFHLE1BQUksR0FBRyxJQUFHLEtBQUcsTUFBSSxHQUFHLElBQUksRUFBRTtBQUFFLHNCQUFHLE9BQUssUUFBTztBQUFDLHdCQUFFLEtBQUssSUFBSSxHQUFFLEVBQUU7QUFBRTtBQUFBLGtCQUFNO0FBQUMsbUJBQUMsT0FBSyxLQUFHLElBQUksRUFBRSxRQUFNLElBQUksSUFBRyxFQUFFO0FBQUUsc0JBQUksS0FBRztBQUFFLHNCQUFFO0FBQUssc0JBQUksS0FBRyxJQUFHLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUU7QUFBRSxvQkFBRSxTQUFTLElBQUcsRUFBRSxNQUFJLE1BQUksSUFBRyxFQUFFLFNBQVMsSUFBRyxFQUFFLE1BQUksTUFBSSxJQUFHLE9BQUssTUFBSSxPQUFLLEtBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRSxJQUFHLE9BQUssS0FBRyxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLElBQUksR0FBRSxHQUFHLElBQUksS0FBRyxJQUFFLElBQUcsS0FBRyxJQUFHLEdBQUcsSUFBSSxJQUFHLENBQUMsR0FBRSxJQUFFLEtBQUssSUFBSSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQywyQkFBUSxJQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTztBQUFLLDZCQUFR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QUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFJLEtBQUcsT0FBSyxNQUFJLE9BQUssSUFBRyxLQUFHLE9BQUssTUFBSSxPQUFLLEtBQUcsUUFBTSxPQUFNLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxPQUFLLE1BQUksR0FBRyxJQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFNLENBQUMsRUFBRSxHQUFHLFFBQU07QUFBQSxrQkFBRyxDQUFDLEtBQUcsT0FBSyxNQUFJLEdBQUcsSUFBRyxTQUFTLElBQUc7QUFBQywyQkFBTSxFQUFFLEdBQUcsU0FBTyxJQUFFO0FBQUEsa0JBQUksQ0FBQztBQUFFLHlCQUFPLEtBQUcsR0FBRyxJQUFHLE9BQU8sSUFBRTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUcsR0FBRyxRQUFNO0FBQUUsMkJBQU87QUFBRyxtQkFBQyxPQUFLLE1BQUksT0FBSyxRQUFNLEtBQUcsQ0FBQztBQUFJLHNCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsc0JBQUcsTUFBSSxHQUFHLFFBQU0sTUFBSSxPQUFLLE1BQUksT0FBSyxPQUFLLEdBQUcsUUFBTTtBQUFNLDJCQUFPLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFFLHNCQUFHLEdBQUcsUUFBTSxLQUFHLE9BQUssT0FBSyxNQUFJLE9BQUs7QUFBSSwyQkFBTyxHQUFHLFFBQU0sV0FBUyxLQUFHLEdBQUcsUUFBTSxTQUFPLEtBQUc7QUFBRyxzQkFBRyxHQUFHLFFBQU0sT0FBTTtBQUFDLHdCQUFHLENBQUM7QUFBRyw2QkFBTztBQUFHLHdCQUFJLEtBQUcsT0FBSyxNQUFJLE9BQUssSUFBRyxLQUFHLEtBQUcsS0FBRyxTQUFPLFVBQVEsR0FBRyxRQUFNLFFBQU0sS0FBRyxTQUFPLFVBQVEsS0FBRyxRQUFNO0FBQU8sMkJBQU8sR0FBRyxRQUFNLEtBQUcsS0FBRyxVQUFRLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFHLElBQUc7QUFBQyx3QkFBSSxLQUFHLE9BQUssS0FBRyxTQUFTLElBQUc7QUFBQyw2QkFBTyxHQUFHLElBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUEsb0JBQUMsSUFBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLG9CQUFDO0FBQUUsMkJBQU8sR0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsRUFBRSxJQUFFLEdBQUcsSUFBRyxTQUFTLElBQUc7QUFBQywyQkFBTSxFQUFFLEdBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUUsQ0FBQyxJQUFFO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLG1CQUFDLE9BQUssTUFBSSxPQUFLLFFBQU0sS0FBRyxDQUFDO0FBQUksc0JBQUksS0FBRyxHQUFHLEdBQUcsVUFBVTtBQUFFLHNCQUFHLENBQUMsR0FBRyxHQUFFLEVBQUU7QUFBRSwyQkFBTyxNQUFJLEdBQUcsSUFBRyxDQUFDLEtBQUcsUUFBTSxHQUFHLFNBQU8sZUFBYSxHQUFHLElBQUcsT0FBTyxJQUFFO0FBQUcsc0JBQUcsR0FBRyxRQUFNLEtBQUcsR0FBRyxTQUFPO0FBQVcsMkJBQU87QUFBRyxzQkFBRyxNQUFJLEdBQUcsUUFBTSxLQUFHLEdBQUcsU0FBTztBQUFTLDJCQUFPLE9BQUssS0FBRyxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFFLHNCQUFJLEtBQUcsS0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEtBQUcsTUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEtBQUcsT0FBTSxLQUFHLEdBQUcsSUFBRyxHQUFHLElBQUk7QUFBRSx5QkFBTyxHQUFHLE1BQUksS0FBRyxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsSUFBRSxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxPQUFLLE1BQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sSUFBRyxFQUFFLEdBQUUsRUFBRTtBQUFFLHlCQUFPLEtBQUcsR0FBRyxJQUFHLE9BQU8sSUFBRTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxzQkFBRyxDQUFDLEdBQUc7QUFBTywyQkFBTztBQUFHLHNCQUFJLEtBQUcsR0FBRyxNQUFNLElBQUcsRUFBRSxHQUFFLEtBQUcsT0FBSyxNQUFJLEVBQUUsU0FBUyxJQUFHLEVBQUU7QUFBRSxzQkFBRyxHQUFHLFFBQU0sS0FBRyxDQUFDLElBQUc7QUFBQyw2QkFBUSxLQUFHLFFBQU8sS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPLE1BQUksR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRztBQUFJLDBCQUFHLEdBQUcsUUFBTTtBQUFTLCtCQUFLLFVBQVEsR0FBRyxLQUFLLEVBQUU7QUFBQSwrQkFBVSxHQUFHLFFBQU07QUFBTywrQkFBSyxXQUFTLEtBQUcsR0FBRyxNQUFNLEdBQUUsRUFBRSxJQUFHLEdBQUcsS0FBSyxFQUFFO0FBQUE7QUFBTywrQkFBTztBQUFBLG9CQUFFO0FBQUMsMkJBQU8sR0FBRyxPQUFLLFNBQU8sS0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxRQUFNLFNBQU8sS0FBRyxHQUFHLEdBQUcsSUFBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLGtCQUFDLENBQUMsR0FBRSxFQUFFO0FBQUUsc0JBQUcsQ0FBQztBQUFHLDJCQUFPO0FBQUcsc0JBQUksS0FBRyxHQUFHLElBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU0sRUFBRSxHQUFHLEVBQUUsS0FBRyxFQUFFLFNBQVMsSUFBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFBQSxrQkFBRSxDQUFDO0FBQUUseUJBQU8sR0FBRyxRQUFNLFNBQU8sS0FBRyxHQUFHLENBQUMsSUFBRyxFQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsMEJBQU87QUFBQSx5QkFBUTtBQUFXLDZCQUFPLEdBQUcsUUFBTSxJQUFFLEtBQUc7QUFBQSx5QkFBTztBQUFTLDZCQUFPLEdBQUcsUUFBTSxJQUFFLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxJQUFFO0FBQUE7QUFBVyw2QkFBTyxHQUFHLElBQUksRUFBRTtBQUFBO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBTyxTQUFTLElBQUc7QUFBQyx3QkFBRyxHQUFHLElBQUcsRUFBRTtBQUFFLDZCQUFPO0FBQUcsd0JBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSw2QkFBTztBQUFHLHdCQUFHLEdBQUcsUUFBTSxXQUFVO0FBQUMsMEJBQUksS0FBRyxHQUFHLEVBQUUsS0FBRztBQUFHLDBCQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsK0JBQU8sR0FBRyxDQUFDLElBQUcsRUFBRSxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTztBQUFBLGtCQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxJQUFFO0FBQUUsc0JBQUcsQ0FBQyxHQUFHO0FBQU8sMkJBQU87QUFBRyxzQkFBSSxLQUFHLEVBQUUsVUFBVSxJQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLE9BQUs7QUFBQSxrQkFBTSxDQUFDLEdBQUUsS0FBRyxPQUFLLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRyxJQUFHO0FBQUcsc0JBQUcsS0FBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLE9BQU8sU0FBUyxJQUFHO0FBQUMsNkJBQU8sT0FBSztBQUFBLG9CQUFNLENBQUMsR0FBRSxLQUFHLEtBQUcsS0FBRyxLQUFHLElBQUUsSUFBRyxLQUFHLEtBQUcsS0FBRyxLQUFHLElBQUU7QUFBRyx5QkFBRyxHQUFHLE1BQU0sSUFBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFNLHlCQUFHLEdBQUcsTUFBTSxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsSUFBRyxJQUFHLElBQUcsRUFBRTtBQUFFLHNCQUFHO0FBQUcsMkJBQU8sR0FBRyxJQUFHLFNBQVMsSUFBRztBQUFDLDhCQUFPLEdBQUcsRUFBRSxJQUFFLFFBQU07QUFBQSxvQkFBRSxDQUFDO0FBQUUsc0JBQUksS0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsSUFBRyxFQUFFLEtBQUc7QUFBQSxrQkFBRSxDQUFDLENBQUMsR0FBRSxFQUFFO0FBQUUseUJBQU8sR0FBRyxHQUFHLElBQUcsR0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLElBQUc7QUFBQywwQkFBTyxFQUFFLDJCQUEyQixFQUFFLEtBQUcsRUFBRSxPQUFPLEdBQUcsSUFBSSxNQUFJLGlCQUFlLEVBQUUsMEJBQTBCLEVBQUUsS0FBRyxFQUFFLG9CQUFvQixHQUFHLGtCQUFrQixLQUFHLEdBQUcsbUJBQW1CLFNBQU8sa0JBQWdCLEdBQUcsR0FBRSxHQUFHLFVBQVU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFHLEtBQUcsT0FBSyxNQUFJLE9BQUssS0FBRyxPQUFLLE1BQUksT0FBSztBQUFHLDJCQUFPO0FBQUcsc0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxzQkFBRyxDQUFDLEdBQUcsRUFBRSxLQUFHLENBQUMsR0FBRyxFQUFFO0FBQUUsMkJBQU87QUFBRyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxXQUFXO0FBQUUsc0JBQUcsQ0FBQztBQUFHLDJCQUFPO0FBQUcsc0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxJQUFFLFNBQU87QUFBRyxzQkFBRyxDQUFDLE1BQUksT0FBSyxNQUFJLE9BQUs7QUFBRywyQkFBTztBQUFHLHNCQUFHLEdBQUcsRUFBRTtBQUFFLDJCQUFPO0FBQUcseUJBQU8sR0FBRyxJQUFHLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUMsQ0FBQztBQUFFLDJCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxRQUFNLFVBQVEsRUFBRSxlQUFlLEVBQUUsSUFBRSxLQUFHLEdBQUcsUUFBTSxVQUFRLEVBQUUsZUFBZSxFQUFFLElBQUUsSUFBRSxHQUFHLFdBQVMsR0FBRyxTQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsR0FBRyxJQUFJO0FBQUUsc0JBQUcsQ0FBQyxHQUFHLEdBQUUsRUFBRTtBQUFFLDJCQUFPLE1BQUksTUFBSSxHQUFHLElBQUcsQ0FBQyxJQUFFLEdBQUcsSUFBRyxPQUFPLElBQUU7QUFBRyxzQkFBSSxLQUFHLEdBQUcsR0FBRyxLQUFLO0FBQUUsc0JBQUcsQ0FBQyxHQUFHLElBQUcsRUFBRTtBQUFFLDJCQUFPO0FBQUcsc0JBQUksSUFBRyxLQUFHLEdBQUcsSUFBRyxXQUFXO0FBQUUsc0JBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsdUJBQUcsRUFBRSxNQUFJLEtBQUc7QUFBQSxrQkFBRztBQUFDLHNCQUFHLEdBQUcsRUFBRSxNQUFJLE9BQUssTUFBSSxPQUFLO0FBQUksMkJBQU87QUFBRyxzQkFBRyxDQUFDLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUUseUJBQUcsR0FBRyxTQUFPLEdBQUcsRUFBRSxJQUFJLElBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFBLG9CQUFDLENBQUMsQ0FBQyxJQUFFO0FBQUEsa0JBQUU7QUFBQyxzQkFBRyxDQUFDLE1BQUksR0FBRyxRQUFNLFNBQVE7QUFBQyx3QkFBSSxLQUFHLEVBQUUsS0FBSyxHQUFHLE9BQU0sU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFHLEVBQUU7QUFBQSxvQkFBQyxDQUFDO0FBQUUsd0JBQUcsQ0FBQztBQUFHLDZCQUFPO0FBQUEsa0JBQUU7QUFBQyx5QkFBTyxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFHLENBQUM7QUFBRywyQkFBTyxHQUFHLElBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxHQUFHLElBQUcsRUFBRTtBQUFBLG9CQUFDLENBQUM7QUFBRSxzQkFBRyxHQUFHLFFBQU0sU0FBUTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxJQUFHLFNBQVMsSUFBRztBQUFDLDZCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsb0JBQUMsQ0FBQztBQUFFLHdCQUFHLEVBQUUsR0FBRyxRQUFNO0FBQVEsNkJBQU87QUFBQSxrQkFBRTtBQUFDLHlCQUFPLEdBQUcsSUFBRyxFQUFFLElBQUUsS0FBRyxHQUFHLElBQUcsRUFBRSxJQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUUsSUFBRSxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUU7QUFBQyx3QkFBSSxLQUFHLE1BQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLFFBQU8sS0FBRyxNQUFJLEdBQUcsRUFBRTtBQUFFLHdCQUFHLE9BQUssR0FBRyxTQUFPLEtBQUcsR0FBRyxTQUFPO0FBQUcsNkJBQU8sR0FBRyxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxHQUFHLEVBQUUsS0FBRyxFQUFFLG1CQUFtQixDQUFDLEtBQUcsRUFBRSwyQkFBMkIsR0FBRyxVQUFVLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUc7QUFBVyx3QkFBRyxHQUFHLEVBQUUsWUFBVyxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUcsRUFBRSxhQUFhLEdBQUcsSUFBSSxLQUFHLEdBQUcsS0FBSyxnQkFBYyxvQkFBa0IsR0FBRyxVQUFVLFdBQVMsR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxVQUFVO0FBQUcsMEJBQUcsRUFBRSxvQkFBb0IsRUFBRSxLQUFHLEdBQUcsQ0FBQyxNQUFJLEVBQUUseUJBQXlCLEdBQUcsSUFBSTtBQUFFLCtCQUFPLEdBQUcsSUFBRyxLQUFHLFNBQU8sS0FBSztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQyx5QkFBTztBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUcsR0FBRyxRQUFNLEVBQUUsR0FBRyxFQUFFLE1BQUksR0FBRyxTQUFPLE1BQUksR0FBRyxTQUFPLE1BQUs7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsd0JBQUcsSUFBRztBQUFDLDBCQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUsK0JBQU8sR0FBRyxJQUFHLEdBQUcsTUFBSyxJQUFHLEVBQUU7QUFBRSw0QkFBSSxNQUFJLEdBQUcsSUFBRyxDQUFDLEtBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxJQUFFLFdBQVMsS0FBRyxHQUFHLElBQUcsT0FBTztBQUFHLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSwwQkFBRztBQUFHLCtCQUFPLEdBQUcsSUFBRyxJQUFHLFNBQVMsSUFBRztBQUFDLGlDQUFPLEdBQUcsSUFBRyxHQUFHLE1BQUssSUFBRyxFQUFFO0FBQUEsd0JBQUMsQ0FBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQyx5QkFBTztBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFHLEVBQUUsZ0NBQWdDLEVBQUUsS0FBRyxFQUFFLG1CQUFtQixHQUFHLE1BQU0sS0FBRyxHQUFHLE9BQU8sY0FBYyxTQUFPLE1BQUksR0FBRyxPQUFPLFNBQU87QUFBRywyQkFBTyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsMEJBQU8sR0FBRztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsQ0FBQyxHQUFHLEdBQUUsRUFBRSxLQUFHLEtBQUcsR0FBRTtBQUFDLDRCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsNEJBQUcsR0FBRyxFQUFFLEdBQUU7QUFBQyw4QkFBSSxLQUFHLEdBQUc7QUFBaUIsOEJBQUcsTUFBSSxFQUFFLHNCQUFzQixFQUFFLEtBQUcsQ0FBQyxHQUFHLFFBQU0sR0FBRyxlQUFhLEdBQUcsQ0FBQyxHQUFFO0FBQUM7QUFBSyxnQ0FBSSxLQUFHLEdBQUcsSUFBRyxHQUFHLGFBQVksRUFBRTtBQUFFLG1DQUFPLE1BQUs7QUFBQSwwQkFBRTtBQUFBLHdCQUFDO0FBQUEsc0JBQUM7QUFBQSx5QkFBTTtBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFJLDZCQUFPLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFBLHlCQUFTO0FBQUksNkJBQU8sR0FBRyxJQUFHLEdBQUcsWUFBVyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU87QUFBSSwwQkFBRyxHQUFHLGFBQVc7QUFBRywrQkFBTyxHQUFHLElBQUcsR0FBRyxTQUFRLENBQUMsRUFBRTtBQUFFO0FBQUE7QUFBTSx5QkFBTztBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUsMkJBQU8sR0FBRyxJQUFHLEtBQUcsVUFBUSxNQUFNO0FBQUUsc0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFLHlCQUFPLEtBQUcsR0FBRyxJQUFHLElBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sR0FBRyxJQUFHLEtBQUcsVUFBUSxNQUFNO0FBQUEsa0JBQUMsQ0FBQyxJQUFFO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBRyxJQUFFLEVBQUUsZ0JBQWMsSUFBRyxFQUFFLFNBQU8sTUFBSSxFQUFFLFNBQU8sUUFBTSxFQUFFLDJDQUEyQyxDQUFDLE1BQUksSUFBRSxFQUFFLFNBQVEsRUFBRSxpQkFBaUIsQ0FBQyxNQUFJLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFHLEVBQUUsY0FBYyxDQUFDLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsY0FBYyxNQUFJO0FBQUUsMkJBQU87QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsa0JBQWtCLENBQUMsS0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLEtBQUcsRUFBRSxFQUFFLE1BQU0sSUFBRSxHQUFHLEVBQUUsT0FBTyxNQUFNLElBQUUsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsYUFBYSxFQUFFLFFBQU8sU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxlQUFlLENBQUMsS0FBRyxDQUFDLEVBQUUsd0NBQXdDLENBQUMsS0FBRyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU87QUFBQSxnQkFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLENBQUMsRUFBRTtBQUFpQix5QkFBTTtBQUFHLG9CQUFJLElBQUUsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxRQUFPLElBQUUsR0FBRyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxRQUFNLFlBQVUsRUFBRSxTQUFPLFNBQVEsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLElBQUcsRUFBRSxjQUFZO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFNLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFPLFNBQVMsR0FBRTtBQUFDLDBCQUFPLEVBQUUsZUFBZSxDQUFDLEtBQUcsRUFBRSxjQUFjLENBQUMsTUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBTTtBQUFBLGdCQUFRLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUcsRUFBRSxTQUFPLElBQUc7QUFBQyxzQkFBRyxFQUFFLG1CQUFtQixDQUFDLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFFLGlDQUFpQyxDQUFDLE1BQUksRUFBRSxhQUFXO0FBQUEsa0JBQUc7QUFBQSxnQkFBQztBQUFNLG9CQUFFLGFBQWEsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxNQUFJLEdBQUcsQ0FBQyxJQUFFLE9BQUs7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBRyxHQUFHLEVBQUUsUUFBTyxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLE1BQUksRUFBRSxTQUFPLE9BQUssRUFBRSxlQUFhLEdBQUcsQ0FBQyxJQUFFLFNBQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxXQUFXLENBQUMsSUFBRTtBQUFPLHlCQUFPLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxNQUFNLElBQUU7QUFBQSxnQkFBQztBQUFNLHlCQUFPLEdBQUcsRUFBRSxNQUFNLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBTyx1QkFBTyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLGVBQWEsS0FBRyxFQUFFLFNBQU8sT0FBSyxFQUFFLGVBQWEsS0FBRyxFQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUcsR0FBRyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxFQUFFLEVBQUUsUUFBTSxhQUFXLEdBQUcsQ0FBQyxFQUFFLFFBQU07QUFBQSxjQUFRO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxFQUFFLEVBQUUsUUFBTSxhQUFXLENBQUNBLElBQUcsR0FBRyxDQUFDLEdBQUUsS0FBSztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxhQUFhLENBQUMsS0FBRyxFQUFFLDJCQUEyQixDQUFDLEtBQUcsRUFBRSwwQkFBMEIsQ0FBQyxNQUFJLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEtBQUcsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLE1BQUksRUFBRSxPQUFPLFlBQVUsT0FBSyxLQUFHLElBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxJQUFFLEdBQUcsQ0FBQztBQUFHLHVCQUFPLEtBQUcsQ0FBQyxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxLQUFHLElBQUUsTUFBSSxHQUFHLEdBQUUsRUFBRSxNQUFJLEdBQUcsR0FBRSxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBRyx1QkFBTyxJQUFFLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxFQUFFLFFBQU0sWUFBVSxHQUFHLENBQUMsSUFBRTtBQUFBLGdCQUFDLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFO0FBQU8seUJBQU8sTUFBSSxTQUFPLFNBQU8sRUFBRSxtQkFBbUIsQ0FBQyxJQUFFLEVBQUUsZUFBYSxLQUFHLEVBQUUsdUJBQXVCLENBQUMsSUFBRSxFQUFFLGtCQUFrQixDQUFDLElBQUUsRUFBRSxTQUFPLEtBQUcsRUFBRSxpQkFBZSxJQUFFO0FBQUEsZ0JBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEdBQUcsR0FBRSxNQUFNLEtBQUcsQ0FBQyxHQUFHLENBQUMsS0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRSxRQUFNLFdBQVMsR0FBRyxtQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxLQUFHLEdBQUcsQ0FBQyxLQUFHLENBQUMsR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBaUIsb0JBQUcsR0FBRTtBQUFDLHNCQUFHLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxDQUFDLEVBQUUsZUFBYSxDQUFDLEVBQUUsa0JBQWdCLEVBQUUsT0FBTyxTQUFTLFVBQVEsR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxPQUFPO0FBQU8sd0JBQUcsRUFBRSxTQUFPLE9BQUssRUFBRSxxQkFBcUIsQ0FBQyxJQUFFLEtBQUcsRUFBRSxTQUFPLEtBQUk7QUFBQywwQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLDBCQUFHLEVBQUUsRUFBRSxRQUFNLFlBQVc7QUFBQywwQkFBRSxTQUFPO0FBQVUsNEJBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLDRCQUFHLEVBQUUsU0FBTyxZQUFXLEtBQUcsRUFBRSxRQUFNLFdBQVMsRUFBRSxFQUFFLFNBQU8sT0FBSyxHQUFHLENBQUMsSUFBRztBQUFDLDhCQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxRQUFPLEVBQUUsUUFBUTtBQUFFLGlDQUFPLEVBQUUsUUFBTSxTQUFPLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBQSx3QkFBQztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFDLHNCQUFHLEVBQUUsWUFBWSxDQUFDLEtBQUcsQ0FBQyxFQUFFLFFBQU0sQ0FBQyxFQUFFLGVBQWEsQ0FBQyxFQUFFLGdCQUFlO0FBQUMsd0JBQUksS0FBRyxFQUFFO0FBQU8sd0JBQUcsR0FBRyxXQUFXLFVBQVEsS0FBRyxHQUFHLEVBQUUsR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsMEJBQUcsTUFBSSxHQUFHLFdBQVcsV0FBUyxLQUFHLEVBQUUsRUFBRSxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHLEdBQUcsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUFFLDRCQUFHLEdBQUcsUUFBTSxXQUFTLEdBQUcsSUFBRyxFQUFFLEtBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRTtBQUFDLDhCQUFJLElBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxRQUFPLEVBQUUsUUFBUSxHQUFFLEtBQUcsR0FBRyxXQUFXLFFBQVEsQ0FBQyxLQUFHLEVBQUUsaUJBQWlCLEVBQUUsSUFBRSxJQUFFO0FBQUcsaUNBQU8sR0FBRyxHQUFFLEdBQUcsRUFBRSxDQUFDO0FBQUEsd0JBQUM7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsa0JBQWtCLENBQUM7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLE1BQUk7QUFBRyx5QkFBTztBQUFHLG9CQUFHLE1BQUksSUFBRztBQUFDLHNCQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksdURBQXVELEdBQUU7QUFBRyxzQkFBSSxJQUFFLEVBQUUsc0JBQXNCLENBQUM7QUFBRSx5QkFBTyxLQUFHLE1BQUksRUFBRSxTQUFPLE1BQUksR0FBRyxHQUFFLEVBQUUsWUFBWSwySEFBMkgsSUFBRSxFQUFFLHFCQUFxQixHQUFFLEdBQUcsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLG9JQUFvSSxJQUFHLEdBQUcsQ0FBQyxFQUFFLFNBQU8sTUFBSyxHQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLGtCQUFFLFVBQVEsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEtBQUcsRUFBRSxPQUFPLGVBQWEsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLG1CQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEVBQUUsZ0JBQWMsR0FBRyxHQUFFLEVBQUUsY0FBYSxFQUFFLFdBQVc7QUFBRSxvQkFBSSxJQUFFLEVBQUU7QUFBaUIsb0JBQUcsS0FBRyxFQUFFLFFBQU0sSUFBRztBQUFDLHNCQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsZ0JBQWdCLENBQUM7QUFBRSw2QkFBUSxJQUFFLEVBQUUsbUJBQW1CLENBQUMsR0FBRSxNQUFJLFVBQVE7QUFBQywwQkFBRyxNQUFJLEtBQUcsRUFBRSxTQUFPLEdBQUU7QUFBQywyQkFBRyxDQUFDLEVBQUUsU0FBTyxVQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQU87QUFBUztBQUFBLHNCQUFLO0FBQUMsMEJBQUUsRUFBRSxtQkFBbUIsQ0FBQztBQUFBLG9CQUFDO0FBQUEsMkJBQVMsRUFBRSxTQUFPO0FBQUksNkJBQVEsSUFBRSxFQUFFLGlCQUFpQixHQUFFLEtBQUUsR0FBRSxFQUFFLFNBQU8sT0FBSztBQUFDLDBCQUFHLEVBQUUsV0FBUyxHQUFFO0FBQUMseUJBQUMsRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsU0FBUyxDQUFDLEtBQUcsRUFBRSw4QkFBOEIsQ0FBQyxPQUFLLEdBQUcsQ0FBQyxFQUFFLFNBQU8sVUFBUyxHQUFHLENBQUMsRUFBRSxTQUFPO0FBQVU7QUFBQSxzQkFBSztBQUFDLDBCQUFFLEVBQUUsaUJBQWlCLEdBQUUsS0FBRTtBQUFBLG9CQUFDO0FBQUEsZ0JBQUM7QUFBQyxtQkFBRyxHQUFFLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLHdCQUF3QixDQUFDO0FBQUUsb0JBQUcsSUFBRztBQUFDLHNCQUFHLEVBQUUsRUFBRSxRQUFNLE1BQUksRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFHLEVBQUUsUUFBTSxNQUFLO0FBQUMsd0JBQUksS0FBRyxFQUFFLFFBQU0sTUFBSSxFQUFFLFlBQVksMkNBQXlDLEVBQUUsUUFBTSxLQUFHLEVBQUUsWUFBWSwyQ0FBeUMsRUFBRSxRQUFNLE9BQUssRUFBRSxZQUFZLCtDQUE2QyxFQUFFLFFBQU0sS0FBRyxFQUFFLFlBQVksOENBQTRDLEVBQUUsUUFBTSxVQUFRLEVBQUUsWUFBWSw2Q0FBMkMsRUFBRSxZQUFZO0FBQWdELDJCQUFPLEdBQUcsR0FBRSxJQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBQSxrQkFBRTtBQUFDLHNCQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFPLEVBQUUsUUFBTSxJQUFFLEdBQUcsR0FBRSxFQUFFLFlBQVksNkNBQTRDLEdBQUcsQ0FBQyxDQUFDLElBQUUsR0FBRyxHQUFFLEVBQUUsWUFBWSx1REFBc0QsR0FBRyxDQUFDLENBQUMsR0FBRTtBQUFBLGdCQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLFFBQU07QUFBUSxvQkFBRyxFQUFFLFFBQU0sR0FBRTtBQUFDLHNCQUFHLE9BQUs7QUFBRSwyQkFBTztBQUFBLGdCQUFDLFdBQVM7QUFBRyxzQkFBRSxHQUFHLENBQUM7QUFBQTtBQUFPLHlCQUFPO0FBQUUsb0JBQUcsQ0FBQztBQUFFLHlCQUFPO0FBQUUsb0JBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFRLEtBQUcsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLFNBQU8sS0FBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxPQUFLLElBQUcsS0FBRyxFQUFFLFVBQVEsRUFBRSxPQUFPLFVBQVEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEtBQUcsR0FBRyxFQUFFLE9BQU8sTUFBTSxHQUFFLEtBQUcsRUFBRSxRQUFNLFdBQVUsT0FBSyxPQUFLLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxPQUFLLEVBQUUsaURBQWlELEVBQUUsT0FBSyxHQUFHLENBQUMsS0FBRyxNQUFJLE1BQUksTUFBSSxDQUFDLEdBQUcsQ0FBQztBQUFJLHVCQUFHLEdBQUcsRUFBRTtBQUFFLG9CQUFJLEtBQUcsTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxNQUFJLE1BQUksTUFBSSxPQUFLLENBQUMsT0FBSyxFQUFFLFFBQU0sV0FBUyxLQUFHLEdBQUcsQ0FBQyxLQUFHLEVBQUUsT0FBTyxTQUFPLFFBQU0sRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFLG9CQUFrQixFQUFFLFFBQU0sVUFBUyxLQUFHLEtBQUcsS0FBRyxHQUFHLEdBQUUsQ0FBQyxJQUFFLElBQUUsTUFBSSxNQUFJLE1BQUksS0FBRyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUUsb0JBQUcsQ0FBQyxHQUFHLENBQUMsTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFJO0FBQUMsc0JBQUcsT0FBSyxNQUFJLE9BQUs7QUFBRywyQkFBTyxNQUFJLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxHQUFFLEVBQUUsWUFBWSx3RkFBdUYsR0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxZQUFZLHFDQUFvQyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsQ0FBQyxJQUFHLEdBQUcsRUFBRTtBQUFBLGdCQUFDLFdBQVMsQ0FBQyxNQUFJLEVBQUUsR0FBRyxDQUFDLElBQUUsVUFBUSxHQUFHLEVBQUUsSUFBRTtBQUFNLHlCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksMENBQXlDLEdBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBRSx1QkFBTyxLQUFHLEdBQUcsRUFBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLE1BQUksSUFBRSxTQUFPLEVBQUUsZUFBZSxDQUFDLEtBQUcsRUFBRSxVQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxLQUFHLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEtBQUcsRUFBRSxPQUFPLGdCQUFjO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsYUFBYSxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLE1BQUksSUFBRSxTQUFPLE1BQUksRUFBRSxlQUFhLE1BQUksRUFBRSxhQUFXLE1BQUksRUFBRSxlQUFhLE1BQUksRUFBRTtBQUFBLGdCQUFTLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxhQUFhLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU0sQ0FBQyxLQUFHLEVBQUUsZ0NBQWdDLENBQUMsSUFBRSxTQUFPLEVBQUUscUJBQXFCLEdBQUUsS0FBRTtBQUFBLGdCQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE1BQUksTUFBSSxFQUFFLFFBQU0sUUFBTSxLQUFHLENBQUMsRUFBRSxvQkFBa0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEtBQUcsRUFBRSxpQkFBaUIsT0FBTyxTQUFPLE1BQUs7QUFBQyxzQkFBSSxJQUFFLEVBQUUsZ0NBQWdDLEVBQUUsZ0JBQWdCLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsc0JBQUcsR0FBRTtBQUFDLHdCQUFHLEdBQUU7QUFBQywwQkFBSSxJQUFFO0FBQUcsMEJBQUcsRUFBRSxlQUFlLENBQUMsR0FBRTtBQUFDLDRCQUFJLElBQUUsRUFBRSxZQUFZLEVBQUUsa0JBQWlCLEdBQUc7QUFBRSw0QkFBRyxLQUFHLEVBQUUsV0FBUyxHQUFFO0FBQUMsOEJBQUksSUFBRSxHQUFHLEVBQUUsUUFBTyxDQUFDO0FBQUUsOEJBQUcsR0FBRTtBQUFDLGdDQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsK0JBQUcsU0FBTztBQUFPLGdDQUFJLEtBQUcsR0FBRywrQkFBNkIsR0FBRyw2QkFBMkIsQ0FBQztBQUFHLDhCQUFFLGFBQWEsSUFBRyxDQUFDLEdBQUUsTUFBSSxFQUFFLGdCQUFjLElBQUU7QUFBQSwwQkFBRztBQUFBLHdCQUFDO0FBQUEsc0JBQUM7QUFBQyw0QkFBSSxHQUFHLENBQUMsRUFBRSxTQUFPO0FBQUEsb0JBQU07QUFBQyx3QkFBRyxFQUFFLGVBQWUsQ0FBQyxHQUFFO0FBQUMsMEJBQUksSUFBRSxFQUFFLFlBQVksRUFBRSxrQkFBaUIsR0FBRztBQUFFLDJCQUFHLEVBQUUsV0FBUyxLQUFHLEdBQUcsR0FBRSxDQUFDLE1BQUksR0FBRyxFQUFFLGdCQUFnQixFQUFFLFNBQU87QUFBQSxvQkFBUTtBQUFDLHVCQUFHLEVBQUUsZ0JBQWdCLEVBQUUsU0FBTztBQUFBLGtCQUFNO0FBQUMsd0JBQUksR0FBRyxFQUFFLGdCQUFnQixFQUFFLFNBQU87QUFBQSxnQkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxDQUFDLEtBQUcsRUFBRSxTQUFTLEVBQUUsNEJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxHQUFFLEVBQUUsT0FBTyxTQUFPO0FBQUssc0JBQUUsRUFBRTtBQUFPLG9CQUFJLElBQUU7QUFBRyxvQkFBRyxFQUFFLG1CQUFtQixDQUFDO0FBQUUsc0JBQUU7QUFBQSx5QkFBVyxFQUFFLE9BQU8sU0FBTyxPQUFLLEVBQUUsT0FBTyxTQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUU7QUFBTyxzQkFBRSxFQUFFLGFBQVcsTUFBSSxFQUFFLGFBQVc7QUFBQSxnQkFBRTtBQUFDLHVCQUFPLElBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLE1BQUksSUFBRSxTQUFPLE1BQUksRUFBRTtBQUFBLGdCQUFTLENBQUMsSUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEdBQUcsQ0FBQyxFQUFFLFNBQU8sR0FBRSxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFPLHFCQUFHLENBQUMsRUFBRSxTQUFPO0FBQUEsZ0JBQUM7QUFBTSxxQkFBRyxDQUFDLEVBQUUsU0FBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFlBQVksQ0FBQyxJQUFFLElBQUUsRUFBRSxlQUFlLENBQUMsSUFBRSxTQUFPLEVBQUUsYUFBYSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsdUJBQU8sTUFBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLCtCQUErQixDQUFDO0FBQUUscUJBQUcsQ0FBQyxHQUFHLENBQUMsS0FBRyxFQUFFLFlBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBUyxLQUFFLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxrQkFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsa0JBQWtCLENBQUMsS0FBRyxFQUFFLGVBQWEsRUFBRSxtQ0FBbUMsRUFBRSxhQUFZLEVBQUUsR0FBRyxLQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sVUFBVSxLQUFHLEdBQUcsR0FBRSxFQUFFLFlBQVkscUVBQXFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLGlCQUFpQixHQUFFLElBQUUsR0FBRSxJQUFFO0FBQUcsd0JBQU8sRUFBRSxTQUFPLE9BQUssR0FBRyxHQUFFLEdBQUUsRUFBRSxZQUFZLGdGQUFnRixHQUFFLEVBQUUsU0FBTyxRQUFNLElBQUUsRUFBRSxpQkFBaUIsR0FBRSxLQUFFLEdBQUUsSUFBRSxPQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRTtBQUFBLHVCQUFXO0FBQUksdUJBQUcsR0FBRSxFQUFFLFlBQVksdURBQXVEO0FBQUU7QUFBQSx1QkFBVztBQUFJLHVCQUFHLEdBQUUsRUFBRSxZQUFZLDZDQUE2QztBQUFFO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLGtEQUFrRDtBQUFFO0FBQUEsdUJBQVc7QUFBSSx1QkFBRyxHQUFFLEVBQUUsWUFBWSxxREFBcUQ7QUFBRTtBQUFBO0FBQU0saUJBQUMsS0FBRyxLQUFHLEtBQUcsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLE1BQUcsQ0FBQztBQUFFLG9CQUFHLElBQUc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRTtBQUFFLHNCQUFHLE1BQUksS0FBRztBQUFFLHVCQUFHLEdBQUUsRUFBRSxZQUFZLCtEQUErRDtBQUFBLDJCQUFVLENBQUMsR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsWUFBWSx1RUFBdUU7QUFBRSx3QkFBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLEdBQUU7QUFBQywwQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLDJCQUFHLE1BQUksS0FBRyxFQUFFLGVBQWUsR0FBRSxFQUFFLHdCQUF3QixHQUFFLEVBQUUsWUFBWSxvREFBb0QsQ0FBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEtBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFJLFdBQVMsSUFBRSxPQUFJLE1BQUksV0FBUyxJQUFFLEVBQUUsaUJBQWlCLEdBQUUsS0FBRTtBQUFHLG9CQUFJLElBQUUsRUFBRSxXQUFXLENBQUM7QUFBRSxvQkFBRyxFQUFFLGVBQWUsQ0FBQyxNQUFJLENBQUMsR0FBRyxDQUFDLEtBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFHO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUMsS0FBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLHNCQUFHLENBQUMsR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsd0JBQUcsS0FBRyxHQUFFO0FBQUMsMEJBQUksSUFBRSxHQUFHLENBQUMsRUFBRTtBQUFPLDJCQUFHLEVBQUUsV0FBUyxFQUFFLFFBQU0sT0FBSyxJQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQUEsb0JBQVM7QUFBTSx5QkFBRyxDQUFDLE1BQUksSUFBRSxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtBQUFVLDBCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUEsa0JBQUU7QUFBQyxzQkFBRztBQUFFLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxNQUFNLEdBQUUsS0FBRyxFQUFFLFNBQVMsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQVMseUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFHLEVBQUUsYUFBYSxDQUFDO0FBQUUsc0JBQUcsRUFBRSx5QkFBd0I7QUFBQyx3QkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFPLE1BQUksR0FBRyxFQUFFO0FBQUEsa0JBQUMsT0FBSztBQUFDLHdCQUFHLEVBQUU7QUFBd0IsNkJBQU87QUFBRyx3QkFBRztBQUFFLDZCQUFPLEdBQUcsRUFBRTtBQUFBLGtCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxpQkFBaUIsR0FBRSxLQUFFO0FBQUUsb0JBQUcsRUFBRSxlQUFlLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsc0JBQUcsRUFBRTtBQUFjLDJCQUFPLEdBQUcsRUFBRSxhQUFhO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxNQUFNO0FBQUUseUJBQU8sRUFBRSxTQUFTLENBQUMsSUFBRSxHQUFHLENBQUMsSUFBRSxHQUFHLENBQUMsRUFBRTtBQUFBLGdCQUFRO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxLQUFHLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxNQUFJO0FBQUUseUJBQU8sRUFBRSxPQUFPLEtBQUssV0FBVztBQUFXLG9CQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsT0FBTyxTQUFPLE9BQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLE1BQU0sS0FBRyxFQUFFLDZCQUE2QixFQUFFLE9BQU8sTUFBTSxNQUFJO0FBQUUseUJBQU8sRUFBRSxPQUFPLE9BQU8sS0FBSztBQUFXLG9CQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsT0FBTyxTQUFPLE9BQUssRUFBRSxPQUFPLE9BQU8sU0FBTyxPQUFLLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxPQUFPLE1BQU0sS0FBRyxFQUFFLDZCQUE2QixFQUFFLE9BQU8sT0FBTyxNQUFNLE1BQUk7QUFBRSx5QkFBTyxFQUFFLE9BQU8sT0FBTyxPQUFPLEtBQUs7QUFBVyxvQkFBRyxFQUFFLFNBQU8sT0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sS0FBRyxFQUFFLGFBQWEsRUFBRSxPQUFPLElBQUksTUFBSSxFQUFFLE9BQU8sS0FBSyxnQkFBYyxXQUFTLEVBQUUsT0FBTyxLQUFLLGdCQUFjLFNBQU8sRUFBRSxPQUFPLEtBQUssZ0JBQWMsVUFBUSxFQUFFLDBCQUEwQixFQUFFLE9BQU8sTUFBTSxLQUFHLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxPQUFPLE1BQU0sS0FBRyxFQUFFLE9BQU8sT0FBTyxPQUFPLFVBQVUsT0FBSyxFQUFFLE9BQU8sVUFBUSxFQUFFLDZCQUE2QixFQUFFLE9BQU8sT0FBTyxNQUFNLE1BQUk7QUFBRSx5QkFBTyxFQUFFLE9BQU8sT0FBTyxPQUFPLFVBQVUsR0FBRztBQUFXLG9CQUFHLEVBQUUsb0JBQW9CLENBQUMsS0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLE1BQUksRUFBRSxLQUFLLGdCQUFjLFdBQVMsRUFBRSxLQUFLLGdCQUFjLFNBQU8sRUFBRSxLQUFLLGdCQUFjLFVBQVEsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLEtBQUcsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLE1BQU0sS0FBRyxFQUFFLE9BQU8sT0FBTyxVQUFVLE9BQUssRUFBRSxVQUFRLEVBQUUsNkJBQTZCLEVBQUUsT0FBTyxNQUFNLE1BQUk7QUFBRSx5QkFBTyxFQUFFLE9BQU8sT0FBTyxVQUFVLEdBQUc7QUFBQSxjQUFVO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLGFBQWEsQ0FBQztBQUFFLG9CQUFHLEtBQUcsRUFBRSxTQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFO0FBQUUsc0JBQUcsRUFBRSxXQUFXLFNBQU8sS0FBRyxFQUFFLFdBQVcsR0FBRyxRQUFNLEVBQUUsV0FBVyxHQUFHLEtBQUssZ0JBQWM7QUFBTywyQkFBTyxHQUFHLEVBQUUsV0FBVyxHQUFHLElBQUk7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRSxnQkFBZ0IsQ0FBQztBQUFFLG9CQUFHLEtBQUcsRUFBRTtBQUFlLHlCQUFPLEdBQUcsRUFBRSxjQUFjO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsMEJBQTBCLENBQUMsSUFBRSxTQUFPLEVBQUUsU0FBTyxPQUFLLEVBQUUsV0FBUztBQUFBLGdCQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLE9BQU8sU0FBTyxPQUFLLEVBQUUsT0FBTyxlQUFhLEdBQUUsSUFBRSxFQUFFLGtCQUFrQixHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRTtBQUFHLG9CQUFHLENBQUM7QUFBRSx5QkFBSyxLQUFHLEVBQUUsU0FBTztBQUFLLHdCQUFFLEVBQUUsa0JBQWtCLEdBQUUsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFFLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRTtBQUFFLG9CQUFHLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxhQUFhLEdBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sT0FBSyxJQUFFLFNBQU8sR0FBRyxTQUFPO0FBQUEsa0JBQUcsQ0FBQztBQUFFLHlCQUFPLEtBQUcsRUFBRSxTQUFPLE1BQUksR0FBRyxHQUFFLEVBQUUsWUFBWSxzREFBc0QsSUFBRSxJQUFFLEdBQUcsR0FBRSxFQUFFLFlBQVksNkZBQTZGLElBQUUsQ0FBQyxLQUFHLENBQUMsRUFBRSxVQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxLQUFHLEVBQUUsT0FBTyxTQUFPLE9BQUssR0FBRyxHQUFFLEVBQUUsWUFBWSx3RkFBd0YsSUFBRSxHQUFHLEdBQUUsRUFBRSxZQUFZLDhHQUE4RyxHQUFFO0FBQUEsZ0JBQUU7QUFBQyxvQkFBRyxDQUFDLEtBQUcsRUFBRSxTQUFPLE9BQUssR0FBRyxHQUFFLEdBQUUsRUFBRSxZQUFZLCtGQUErRixHQUFFLEVBQUUsU0FBUyxDQUFDLEtBQUcsS0FBRyxJQUFFLEtBQUksQ0FBQyxLQUFHLE1BQUksS0FBRyxNQUFJLE1BQUksRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsOEJBQThCLENBQUMsTUFBSSxFQUFFLG9DQUFvQyxFQUFFLFFBQU8sU0FBUyxJQUFHO0FBQUMsbUJBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFHLEVBQUUsMkJBQTJCLEVBQUUsT0FBSyxHQUFHLEVBQUUsRUFBRSxTQUFPO0FBQUEsZ0JBQVUsQ0FBQyxLQUFHLElBQUUsS0FBSSxHQUFHLENBQUMsRUFBRSxTQUFPLEdBQUUsRUFBRSxTQUFPLE9BQUssRUFBRSxxQkFBcUIsR0FBRSxHQUFHLE1BQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEtBQUcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLElBQUUsR0FBRyxDQUFDLEVBQUUsU0FBTyxPQUFLLEdBQUcsQ0FBQyxFQUFFLFNBQU8sT0FBTSxLQUFHLEdBQUcsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLE9BQU8sU0FBTztBQUFJLHlCQUFPLEtBQUcsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLHFHQUFxRyxHQUFFLE1BQUk7QUFBRyxvQkFBSSxLQUFHLEVBQUU7QUFBTyxvQkFBRyxDQUFDLEVBQUUsK0JBQStCLEVBQUU7QUFBRSx5QkFBTyxHQUFHLEdBQUUsRUFBRSxZQUFZLCtDQUErQyxHQUFFO0FBQUcsb0JBQUksS0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUUsS0FBRyxNQUFJLEdBQUcsRUFBRSxFQUFFO0FBQUcsb0JBQUcsQ0FBQztBQUFHLHlCQUFPO0FBQUcsb0JBQUcsRUFBRSxTQUFPLE9BQUssR0FBRyxHQUFFLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUUsRUFBRSxZQUFZLG1EQUFtRCxHQUFFO0FBQUcsdUJBQU8sTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFFLEdBQUcsSUFBRyxHQUFHLFFBQVE7QUFBRSx5QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBTyxLQUFHLElBQUUsR0FBRyxTQUFPLE1BQUksRUFBRSxZQUFZLEdBQUcsTUFBTSxLQUFHLEdBQUcsT0FBTyxTQUFPLE1BQUksRUFBRSxTQUFTLEVBQUUsSUFBRSxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sTUFBSSxRQUFHO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsd0JBQU8sRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPLFFBQU0sRUFBRSxPQUFPLFNBQU8sTUFBSSxFQUFFLFNBQU8sRUFBRSxTQUFPLE9BQUssRUFBRSxPQUFPLFNBQU8sTUFBSSxFQUFFLE9BQU8sU0FBTztBQUFBLGNBQU07QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLGVBQWUsQ0FBQyxJQUFFLEtBQUcsRUFBRSxXQUFTLEtBQUcsR0FBRyxDQUFDLEVBQUUsS0FBRztBQUFBLGNBQU07QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxRQUFNLFVBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTSxFQUFFLElBQUUsR0FBRyxDQUFDO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBRyxFQUFFLFNBQU8sS0FBSTtBQUFDLHNCQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRyxHQUFFO0FBQUMsMEJBQUksSUFBRSxFQUFFO0FBQWMsMEJBQUc7QUFBRSwrQkFBTyxHQUFHLENBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUksSUFBRSxFQUFFLFdBQVcsQ0FBQztBQUFFLHNCQUFHLE1BQUksR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsd0JBQUcsR0FBRTtBQUFDLCtCQUFRLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxLQUFHO0FBQUMsNEJBQUksS0FBRyxHQUFHLENBQUM7QUFBRSw0QkFBRztBQUFHLGlDQUFPLEdBQUcsSUFBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBRSw0QkFBRyxFQUFFLE9BQU8sU0FBTztBQUFJO0FBQU0sNEJBQUUsRUFBRSxPQUFPLFFBQU8sSUFBRSxHQUFHLENBQUM7QUFBQSxzQkFBQztBQUFDLDZCQUFPLEdBQUcsSUFBRSxHQUFHLENBQUMsSUFBRSxHQUFHLENBQUMsQ0FBQztBQUFBLG9CQUFDO0FBQUMsd0JBQUksS0FBRyxFQUFFLCtCQUErQixFQUFFLE1BQU07QUFBRSx3QkFBRyxHQUFHLFNBQU8sT0FBSyxHQUFHLGNBQWMsU0FBTyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHO0FBQUssMEJBQUcsRUFBRSxtQkFBbUIsRUFBRSxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHO0FBQVcsNEJBQUcsS0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFFO0FBQUMsOEJBQUksS0FBRyxFQUFFLG9CQUFvQixFQUFFO0FBQUUsOEJBQUcsR0FBRywyQkFBeUIsR0FBRyxFQUFFLE1BQUksR0FBRztBQUFPO0FBQUEsd0JBQU07QUFBQywrQkFBTyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQU8sb0JBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLHdDQUF3QyxDQUFDO0FBQUUsc0JBQUcsS0FBRyxFQUFFLFdBQVU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxXQUFXLFFBQVEsQ0FBQztBQUFFLHdCQUFHLEVBQUU7QUFBZSw2QkFBTyxHQUFHLEdBQUUsR0FBRSxFQUFFLFFBQU8sSUFBRyxRQUFPLENBQUM7QUFBRSx3QkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFrQixzQkFBRSxvQkFBa0I7QUFBRyx3QkFBSSxJQUFFLElBQUUsRUFBRSxTQUFPLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFFLEVBQUUsY0FBWSxTQUFPO0FBQUcsMkJBQU8sRUFBRSxvQkFBa0IsR0FBRTtBQUFBLGtCQUFDO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxFQUFFLFdBQVcsUUFBUSxDQUFDLEtBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFFLElBQUU7QUFBRywyQkFBTyxFQUFFLGtCQUFnQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsTUFBSSxJQUFFLEdBQUcsSUFBRyxFQUFFLElBQUUsR0FBRyxJQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSwrQkFBK0IsQ0FBQztBQUFFLG9CQUFHO0FBQUUseUJBQU8sR0FBRyxDQUFDO0FBQUUsd0JBQU8sRUFBRTtBQUFBLHVCQUFXO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLHdCQUFHLEVBQUUsU0FBUyxDQUFDO0FBQUUsNkJBQU8sR0FBRyxDQUFDO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLE9BQU8sUUFBTyxJQUFFLEVBQUUsZ0JBQWMsRUFBRSxNQUFLLElBQUUsR0FBRyxDQUFDLEtBQUcsRUFBRSxTQUFPLE9BQUssRUFBRSxlQUFhLEdBQUcsR0FBRSxFQUFFLGlCQUFlLEtBQUcsQ0FBQztBQUFFLG9CQUFHLEVBQUUsQ0FBQyxLQUFHLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxFQUFFLHlCQUF5QixDQUFDLElBQUc7QUFBQyxzQkFBRyxFQUFFLEtBQUssU0FBTyxLQUFJO0FBQUMsd0JBQUksSUFBRSxFQUFFLFlBQVksRUFBRSxPQUFPLFVBQVMsQ0FBQztBQUFFLDJCQUFPLElBQUUsSUFBRSxTQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUcsR0FBRyxFQUFFLE1BQU07QUFBRSxvQkFBRyxDQUFDLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUUsR0FBRyxDQUFDLEVBQUUsV0FBVztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFPLG9CQUFHLEVBQUUsZUFBZSxDQUFDLEtBQUcsTUFBSSxFQUFFLGFBQVk7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHO0FBQUUsMkJBQU87QUFBRSxzQkFBRyxFQUFFLElBQUUsTUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUk7QUFBRSwyQkFBTyxHQUFHLEVBQUUsTUFBSyxNQUFHLEtBQUU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsc0JBQXNCLENBQUM7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxzQkFBRyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLGlCQUFpQixDQUFDO0FBQUUsd0JBQUcsSUFBRSxHQUFFO0FBQUMsMEJBQUksSUFBRSxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsTUFBTTtBQUFFLDBCQUFHLENBQUM7QUFBRTtBQUFPLDBCQUFFLEVBQUU7QUFBQSxvQkFBVTtBQUFDLHdCQUFHLElBQUUsR0FBRTtBQUFDLDBCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQSxvQkFBQztBQUFDLDJCQUFPO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx5QkFBTyxLQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsc0JBQXNCLENBQUM7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLGlCQUFpQixDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxzQkFBRztBQUFFLDJCQUFPLEVBQUUsZ0JBQWMsSUFBRSxHQUFHLEdBQUUsSUFBRyxJQUFFLE9BQUssQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHlCQUFRLElBQUUsT0FBRyxFQUFFLFVBQVEsQ0FBQyxFQUFFLGVBQWUsRUFBRSxNQUFNLEtBQUc7QUFBQyxzQkFBRyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQUksS0FBRyxFQUFFLE9BQU8sZ0JBQWM7QUFBRywyQkFBTTtBQUFHLG9CQUFFLGlCQUFpQixFQUFFLE1BQU0sS0FBRyxFQUFFLE9BQU8sZ0JBQWMsTUFBSSxJQUFFLE9BQUksSUFBRSxFQUFFO0FBQUEsZ0JBQU07QUFBQyx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsSUFBRSxJQUFHLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUc7QUFBRSx5QkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDLEtBQUc7QUFBQSxjQUFNO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRztBQUFFLHlCQUFPO0FBQUUsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxLQUFHLENBQUMsR0FBRyxDQUFDO0FBQUUseUJBQU8sR0FBRyxDQUFDO0FBQUUsb0JBQUksSUFBRSxFQUFFLHdDQUF3QyxDQUFDO0FBQUUsb0JBQUc7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxRQUFRLENBQUM7QUFBRSx1QkFBTyxNQUFJLEtBQUcsU0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsYUFBYSxDQUFDO0FBQUUseUJBQU8sTUFBSSxJQUFFLEtBQUcsTUFBSSxJQUFFLEdBQUcsS0FBRSxJQUFFO0FBQUcsb0JBQUksSUFBRSxHQUFHLENBQUMsRUFBRSxzQkFBb0IsS0FBRyxLQUFHLEdBQUcsQ0FBQztBQUFFLG9CQUFHLEVBQUUsd0JBQXdCLENBQUMsS0FBRyxNQUFJO0FBQUUseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBRSxvQkFBSSxJQUFFLEVBQUUsV0FBVyxTQUFPO0FBQUUsdUJBQU8sRUFBRSxDQUFDLEtBQUcsS0FBRyxJQUFFLEdBQUcsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFFLEdBQUcsSUFBRSxDQUFDLEdBQUUsR0FBRyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxPQUFPLFNBQU87QUFBSSx5QkFBTyxHQUFHLEVBQUUsUUFBTyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLE1BQUssSUFBRSxFQUFFLGVBQWMsSUFBRSxFQUFFO0FBQU0sd0JBQU8sRUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUcsMkJBQU8sTUFBSSxJQUFFLEdBQUcsQ0FBQyxJQUFFO0FBQUEsdUJBQVk7QUFBQSx1QkFBUTtBQUFHLHdCQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSwyQkFBTyxNQUFJLE1BQUksS0FBRyxFQUFFLFdBQVMsQ0FBQyxLQUFHLENBQUMsRUFBRSw4QkFBOEIsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFFO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPLE1BQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFFO0FBQUE7QUFBZTtBQUFBO0FBQUEsY0FBTztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEVBQUU7QUFBTyx5QkFBTyxFQUFFO0FBQU8sb0JBQUcsRUFBRSxhQUFhLENBQUM7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBRSxvQkFBRyxFQUFFLDJCQUEyQixDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxVQUFVO0FBQUUseUJBQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLElBQUUsRUFBRSxHQUFFLEVBQUUsSUFBSSxJQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUssV0FBVztBQUFBLGdCQUFDO0FBQUM7QUFBTyx5QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxFQUFFLGFBQVksQ0FBQztBQUFFLHlCQUFPLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxHQUFFLEdBQUUsSUFBRSxFQUFFLDZCQUE2QixDQUFDO0FBQUUsd0JBQU87QUFBQSx1QkFBUTtBQUFBLHVCQUFPO0FBQUUsd0JBQUksSUFBRSxHQUFHLEVBQUUsSUFBSSxHQUFFLElBQUUsS0FBRyxFQUFFO0FBQWlCLHdCQUFHLE1BQUksRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsb0JBQW9CLENBQUMsSUFBRztBQUFDLDBCQUFJLElBQUUsRUFBRSwrQkFBK0IsQ0FBQztBQUFFLDZCQUFPLEtBQUcsR0FBRyxHQUFHLENBQUMsR0FBRSxHQUFHLENBQUMsRUFBRSxNQUFNLEtBQUcsRUFBRSxlQUFhLEdBQUcsRUFBRSxJQUFJO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxNQUFJLElBQUUsR0FBRyxFQUFFLElBQUksSUFBRSxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFFLHdCQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUUsNkJBQU8sR0FBRyxDQUFDO0FBQUUsd0JBQUcsRUFBRSxLQUFLLFFBQU87QUFBQywwQkFBSSxJQUFFLEVBQUUsS0FBSyxPQUFPO0FBQWlCLDBCQUFHLENBQUM7QUFBRTtBQUFPLDBCQUFJLEtBQUcsRUFBRSxLQUFLLEVBQUUsTUFBSyxFQUFFLGtCQUFrQixHQUFFLElBQUUsRUFBRSwrQkFBK0IsQ0FBQztBQUFFLDBCQUFHO0FBQUUsK0JBQU8sR0FBRyxDQUFDO0FBQUUsMEJBQUcsRUFBRSxhQUFhLEdBQUcsVUFBVSxHQUFFO0FBQUMsNEJBQUksS0FBRyxHQUFHLFlBQVcsS0FBRyxHQUFHLElBQUcsR0FBRyxhQUFZLFFBQU8sUUFBTyxHQUFHLGFBQVksSUFBRTtBQUFFLDRCQUFHLElBQUc7QUFBQyw4QkFBSSxLQUFHLEdBQUcsb0JBQWtCLEVBQUUsK0JBQStCLEdBQUcsZ0JBQWdCO0FBQUUsOEJBQUcsSUFBRztBQUFDLGdDQUFJLEtBQUcsRUFBRSwrQkFBK0IsRUFBRTtBQUFFLGdDQUFHLE9BQUs7QUFBTyxxQ0FBTyxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUU7QUFBQSwwQkFBQztBQUFDO0FBQUEsd0JBQU07QUFBQSxzQkFBQztBQUFDLDZCQUFPLEVBQUUsV0FBVyxDQUFDLElBQUUsU0FBTyxHQUFHLEVBQUUsSUFBSTtBQUFBLG9CQUFDO0FBQU0sNkJBQU8sR0FBRyxFQUFFLElBQUk7QUFBQSx1QkFBTztBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBRSx3QkFBSSxNQUFJLElBQUUsRUFBRSxLQUFLLFlBQVUsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFO0FBQUEsdUJBQXNCO0FBQUUsMkJBQUssTUFBSSxJQUFFLEVBQUUsWUFBVSxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUU7QUFBa0Isd0JBQUksS0FBRyxNQUFJLEVBQUUsK0JBQStCLEVBQUU7QUFBRSwyQkFBTyxLQUFHLEdBQUcsRUFBRSxJQUFFO0FBQUEsdUJBQVk7QUFBQSx1QkFBTztBQUFBLHVCQUFPO0FBQUUsMkJBQU8sRUFBRSxNQUFNLEtBQUssZ0JBQWdCO0FBQUE7QUFBVSwyQkFBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBRyxNQUFJLFdBQVMsSUFBRSxFQUFFLDZCQUE2QixDQUFDLElBQUcsTUFBSTtBQUFFLHlCQUFNO0FBQUcsb0JBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFHLE1BQUksS0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssVUFBVTtBQUFFLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxFQUFFLEtBQUssV0FBVyxhQUFZLElBQUUsR0FBRyxFQUFFLE1BQUssR0FBRSxRQUFPLFFBQU8sUUFBTyxNQUFHLElBQUU7QUFBRSx1QkFBTyxFQUFFLDZCQUE2QixLQUFHLE9BQUssU0FBTyxFQUFFLGdCQUFnQjtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBRyxDQUFDLEVBQUU7QUFBTyx5QkFBTyxHQUFHLEVBQUUsSUFBSTtBQUFFLG9CQUFHLEVBQUUsT0FBTyxrQkFBaUI7QUFBQyxzQkFBSSxJQUFFLEVBQUUsK0JBQStCLEVBQUUsT0FBTyxnQkFBZ0I7QUFBRSxzQkFBRyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRztBQUFFLDZCQUFPO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRSxLQUFLLEVBQUUsTUFBSyxFQUFFLGtCQUFrQjtBQUFFLG9CQUFHLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLFlBQVcsS0FBRSxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxVQUFVLEdBQUUsSUFBRSxFQUFFLCtCQUErQixDQUFDO0FBQUUseUJBQU8sTUFBSSxVQUFRLEdBQUcsR0FBRSxDQUFDLEtBQUc7QUFBQSxnQkFBTTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBRSxVQUFRLENBQUMsRUFBRSxRQUFNLEVBQUUsR0FBRSxDQUFDLEtBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyxzQkFBSTtBQUFFLHNCQUFHLEdBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRSxZQUFZLFVBQVM7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEtBQUcsR0FBRSxJQUFFLEtBQUcsR0FBRyxFQUFFLDJCQUEyQixDQUFDLENBQUM7QUFBRSx3QkFBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLDZCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsa0JBQUMsV0FBUyxFQUFFLFFBQU0sU0FBUTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBRSx3QkFBRztBQUFHLDZCQUFPLEdBQUcsRUFBRSxJQUFFLFNBQU8sR0FBRyxFQUFFO0FBQUUsd0JBQUcsR0FBRyxDQUFDLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLDBCQUFHLE1BQUksRUFBRSxxQkFBcUIsQ0FBQyxLQUFHLENBQUMsS0FBRztBQUFFLCtCQUFPO0FBQUEsb0JBQUU7QUFBQyw0QkFBTyxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE9BQUssUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFO0FBQUEsa0JBQUk7QUFBQSxnQkFBQyxHQUFFLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLE1BQU0sT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUMsR0FBRSxFQUFFLEVBQUUsUUFBTTtBQUFVLHlCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLHFCQUFxQixDQUFDLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUc7QUFBRSx5QkFBTztBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUcsR0FBRyxDQUFDLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLDJCQUFPLEdBQUcsR0FBRSxFQUFFLGFBQVksR0FBRyxDQUFDLEVBQUUsUUFBUTtBQUFBLGtCQUFDO0FBQUMsc0JBQUcsRUFBRSxNQUFLO0FBQUMsd0JBQUksSUFBRSxHQUFHLEVBQUUsSUFBSTtBQUFFLDJCQUFPLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQywwQkFBSTtBQUFHLDhCQUFPLEtBQUcsR0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDLE9BQUssUUFBTSxPQUFLLFNBQU8sU0FBTyxHQUFHO0FBQUEsb0JBQUksR0FBRSxJQUFFO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLE1BQUksR0FBRyxHQUFFLEtBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTyxHQUFHLEdBQUUsR0FBRSxJQUFHLFFBQU8sS0FBRTtBQUFBLGdCQUFDLEdBQUUsSUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFPLHVCQUFPLE1BQUksRUFBRSxZQUFVLE1BQUksRUFBRSxZQUFVLEdBQUcsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFNO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxlQUFlLE9BQU8sR0FBRSxJQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBRSxvQkFBRyxDQUFDLEVBQUUsS0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFHLEtBQUcsTUFBSSxLQUFJO0FBQUMsc0JBQUksSUFBRSxFQUFFLHVCQUF1QixFQUFFLFFBQVEsR0FBRSxJQUFFLEVBQUUsUUFBUSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHlCQUFPLE1BQUksRUFBRSxXQUFTLElBQUUsSUFBRSxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU8sR0FBRyxDQUFDLElBQUUsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUU7QUFBQSxrQkFBQyxHQUFFLElBQUU7QUFBQSxnQkFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBTyx1QkFBTyxFQUFFLG1CQUFtQixDQUFDLElBQUUsR0FBRyxDQUFDLElBQUUsRUFBRSxhQUFhLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBTTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEVBQUUsZUFBZSxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxNQUFNO0FBQUUseUJBQU0sQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFFLFNBQU8sR0FBRyxHQUFFLEVBQUUsS0FBSyxXQUFXO0FBQUEsZ0JBQUM7QUFBTSx5QkFBTyxHQUFHLEVBQUUsTUFBTTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBUTtBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBUTtBQUFBLHVCQUFTO0FBQUEsdUJBQVE7QUFBQSx1QkFBUztBQUFBLHVCQUFRO0FBQUksMkJBQU07QUFBQSx1QkFBUTtBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxFQUFFLFVBQVU7QUFBQSx1QkFBTztBQUFJLDJCQUFNLENBQUMsRUFBRSxjQUFZLEdBQUcsRUFBRSxVQUFVO0FBQUE7QUFBRSx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBVyxTQUFTLEdBQUU7QUFBQyx5QkFBTSxDQUFDLENBQUMsRUFBRSxVQUFRLEVBQUUsU0FBTyxPQUFLLEdBQUcsRUFBRSxXQUFXLEtBQUcsR0FBRyxHQUFFLEVBQUUsT0FBTyxXQUFXO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFNLENBQUMsV0FBVTtBQUFDLDJCQUFPLEdBQUcsRUFBRSxXQUFXO0FBQUEsa0JBQUMsR0FBRSxFQUFFLE9BQU8sV0FBVztBQUFBLGdCQUFDLENBQUMsR0FBRSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLHNCQUFJO0FBQUUseUJBQU0sQ0FBQyxFQUFFLEVBQUUsUUFBTSxhQUFXLENBQUMsRUFBRSxHQUFHLElBQUUsS0FBRyxPQUFLLFNBQU8sRUFBRSxZQUFVLFFBQU0sTUFBSSxXQUFTLEVBQUUsWUFBVSxDQUFDLEVBQUUsT0FBTyxRQUFRLElBQUksRUFBRSxXQUFXLEtBQUcsR0FBRyxHQUFFLEVBQUUsV0FBVztBQUFBLGdCQUFDLENBQUMsR0FBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTSxDQUFDLFdBQVU7QUFBQywyQkFBTztBQUFBLGtCQUFFLEdBQUUsRUFBRSxXQUFXO0FBQUEsZ0JBQUMsQ0FBQyxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBVyxTQUFTLEdBQUU7QUFBQyx5QkFBTSxDQUFDLENBQUMsRUFBRSxVQUFRLEVBQUUsU0FBTyxPQUFLLEdBQUcsR0FBRSxFQUFFLE9BQU8sV0FBVyxNQUFJLENBQUMsRUFBRSxlQUFhLEdBQUcsRUFBRSxXQUFXO0FBQUEsZ0JBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFNLENBQUMsRUFBRSxjQUFZLFdBQVU7QUFBQywyQkFBTyxHQUFHLEVBQUUsV0FBVztBQUFBLGtCQUFDLElBQUUsV0FBVTtBQUFDLDJCQUFPO0FBQUEsa0JBQUUsR0FBRSxFQUFFLE9BQU8sV0FBVztBQUFBLGdCQUFDLENBQUMsR0FBRSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFFLFNBQVMsR0FBRTtBQUFDLHNCQUFJO0FBQUUseUJBQU0sQ0FBQyxFQUFFLEVBQUUsUUFBTSxhQUFXLENBQUMsRUFBRSxHQUFHLElBQUUsS0FBRyxPQUFLLFNBQU8sRUFBRSxZQUFVLFFBQU0sTUFBSSxXQUFTLEVBQUUsWUFBVSxDQUFDLEVBQUUsT0FBTyxRQUFRLElBQUksRUFBRSxXQUFXLEtBQUcsR0FBRyxHQUFFLEVBQUUsV0FBVztBQUFBLGdCQUFDLENBQUMsR0FBRSxTQUFTLEdBQUU7QUFBQyx5QkFBTSxDQUFDLFdBQVU7QUFBQywyQkFBTztBQUFBLGtCQUFFLEdBQUUsRUFBRSxXQUFXO0FBQUEsZ0JBQUMsQ0FBQyxDQUFDLEdBQUUsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLHNCQUFzQixDQUFDLElBQUUsR0FBRyxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEtBQUcsRUFBRSxLQUFHLElBQUUsS0FBRyxFQUFFLFFBQU0sVUFBUztBQUFDLHNCQUFJLElBQUUsR0FBRyxHQUFFLElBQUcsSUFBRTtBQUFFLHlCQUFPLEVBQUUsUUFBTSxXQUFTLEVBQUUsMEJBQTBCLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFFLEVBQUUsUUFBTSxXQUFTLEVBQUUsZ0JBQWdCLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFFO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEtBQUdBLElBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLEtBQUcsRUFBRSxLQUFLLEVBQUUsWUFBVyxFQUFFLEdBQUU7QUFBQyx3QkFBRyxLQUFHLElBQUU7QUFBRSw2QkFBTyxHQUFHLEdBQUUsRUFBRSxlQUFlO0FBQUUsd0JBQUcsRUFBRSxjQUFhO0FBQUMsMEJBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxZQUFZO0FBQUUsNkJBQU8sRUFBRSxRQUFNLFdBQVMsR0FBRyxFQUFFLE9BQU0sRUFBRSxLQUFHLEdBQUcsRUFBRSxPQUFNLEVBQUUsSUFBRSxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsK0JBQU8sTUFBSSxNQUFJLE1BQUk7QUFBQSxzQkFBRSxDQUFDLElBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxZQUFVLEdBQUcsR0FBRSxDQUFDLElBQUUsRUFBRSxRQUFNLFVBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFNLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFLENBQUMsSUFBRSxFQUFFLFFBQU0sVUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU0sU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQyxDQUFDLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsUUFBTTtBQUFTO0FBQU8sb0JBQUcsRUFBRTtBQUFlLHlCQUFPLEVBQUU7QUFBZSxvQkFBSSxJQUFFLEVBQUU7QUFBTyx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLHFCQUFxQixFQUFFLElBQUksSUFBRSxFQUFFLENBQUMsSUFBRSxHQUFHLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsRUFBRSxRQUFPLENBQUM7QUFBQSx1QkFBTyxLQUFJO0FBQUMsd0JBQUksSUFBRSxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSwyQkFBTyxHQUFHLEdBQUUsRUFBRSxZQUFZLEVBQUUsVUFBUyxDQUFDLENBQUM7QUFBQSxrQkFBQztBQUFBLHVCQUFNO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsTUFBTSxPQUFPLEVBQUUsT0FBTyxTQUFPLEdBQUcsR0FBRSxHQUFHLEVBQUUsUUFBTyxDQUFDO0FBQUEsdUJBQU8sS0FBSTtBQUFDLHdCQUFJLElBQUUsRUFBRSxXQUFXLENBQUMsSUFBRSxFQUFFLGdCQUFnQixDQUFDLElBQUU7QUFBTywyQkFBTyxJQUFFLEVBQUUsZUFBZSxDQUFDLEtBQUcsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLElBQUksSUFBRSxFQUFFLENBQUMsSUFBRSxHQUFHLEVBQUUsZUFBZSxJQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFBLHVCQUFNO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBO0FBQUU7QUFBTyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxHQUFHLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsYUFBYSxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFNLENBQUMsQ0FBQyxFQUFFO0FBQUEsZ0JBQWdCLENBQUM7QUFBRSx1QkFBTyxLQUFHLEVBQUU7QUFBQSxjQUFnQjtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsT0FBTyxrQkFBZ0IsTUFBSSxJQUFFLEVBQUUsT0FBTyxpQkFBZSxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQyxNQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLEVBQUU7QUFBRSxvQkFBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxFQUFFLHFCQUFvQixDQUFDO0FBQUUsdUJBQU8sR0FBRyxDQUFDLE1BQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxxQkFBb0I7QUFBQywyQkFBUSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLHFCQUFvQixJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRyxHQUFHLENBQUM7QUFBRSw2QkFBTztBQUFFLHdCQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSx3QkFBRyxDQUFDO0FBQUU7QUFBTyxzQkFBRSxLQUFLLENBQUM7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSx1QkFBTyxHQUFHLEVBQUUsSUFBRSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsR0FBRyxFQUFFLE9BQU87QUFBRSxvQkFBRyxFQUFFLFFBQU0sS0FBSTtBQUFDLHNCQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxzQkFBRyxDQUFDO0FBQUUsMkJBQU87QUFBRyxzQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUseUJBQU8sR0FBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLEVBQUUsUUFBTSxRQUFPO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUMsRUFBRTtBQUFlLHdCQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUcsR0FBRTtBQUFDLDBCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQUUsNkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsRUFBRSxPQUFPLEVBQUUsY0FBYyxLQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLGdCQUFlLEdBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUFFLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsTUFBSSxTQUFPLEdBQUcsR0FBRSxFQUFFLElBQUUsTUFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUcsQ0FBQztBQUFFLHlCQUFNLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLFVBQVUsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLHFGQUFvRixFQUFFLDJCQUEyQixDQUFDLENBQUMsR0FBRTtBQUFHLG9CQUFHLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFFLHlCQUFPO0FBQUUsb0JBQUksSUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFLDBCQUF5QixDQUFDO0FBQUUsb0JBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLHNCQUFFLEdBQUcsSUFBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRSxHQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxHQUFHLEVBQUUscUJBQW9CLENBQUM7QUFBRSx1QkFBTyxHQUFHLEVBQUUsTUFBSSxJQUFFLEdBQUcsSUFBRyxDQUFDLElBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxxQkFBcUIsSUFBRyxlQUFlLElBQUUsRUFBRSxXQUFXLEdBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyx5QkFBTyxNQUFJLEtBQUcsQ0FBQyxJQUFFLElBQUUsR0FBRyxFQUFFLGdCQUFlLEVBQUUsY0FBYyxJQUFFLEdBQUcsR0FBRSxDQUFDLElBQUU7QUFBQSxnQkFBTSxDQUFDLElBQUU7QUFBQSxjQUFNO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLENBQUMsS0FBRyxDQUFDO0FBQUUseUJBQU8sS0FBRztBQUFFLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRSxJQUFFLE1BQUksSUFBRSxJQUFFLEdBQUUsSUFBRSxNQUFJLElBQUUsSUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxNQUFJLENBQUMsR0FBRyxDQUFDLEdBQUUsS0FBRyxJQUFJLE1BQU0sS0FBRyxLQUFHLElBQUUsRUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSx3QkFBSSxNQUFJLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRyxzQkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEtBQUc7QUFBRyx3QkFBSSxNQUFJLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRyxzQkFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsTUFBSSxDQUFDLE1BQUksT0FBSyxJQUFFLEdBQUUsS0FBRyxNQUFJLEdBQUcsQ0FBQyxLQUFHLE1BQUksR0FBRyxDQUFDLEdBQUUsS0FBRyxNQUFJLElBQUUsU0FBTyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsTUFBSSxJQUFFLFNBQU8sR0FBRyxHQUFFLEVBQUUsR0FBRSxLQUFHLE9BQUssS0FBRyxLQUFHLEtBQUcsS0FBRyxTQUFPLEtBQUcsSUFBRyxLQUFHLEdBQUcsS0FBRyxNQUFJLENBQUMsS0FBRyxXQUFTLElBQUcsTUFBSSxNQUFNLE9BQU8sRUFBRSxDQUFDO0FBQUUscUJBQUcsT0FBSyxLQUFHLEdBQUcsRUFBRSxJQUFFLElBQUcsR0FBRyxNQUFJO0FBQUEsZ0JBQUU7QUFBQyxvQkFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsTUFBTTtBQUFFLHFCQUFHLE9BQUssR0FBRyxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxNQUFJLEdBQUcsT0FBSyxHQUFHLEdBQUcsTUFBSyxDQUFDLElBQUcsR0FBRyxLQUFHO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxrQkFBZ0IsRUFBRSxnQkFBZTtBQUFFLGtCQUFFLGtCQUFnQixFQUFFLG1CQUFpQixJQUFFLEdBQUcsRUFBRSxnQkFBZSxFQUFFLGNBQWM7QUFBRyxvQkFBSSxJQUFFLEVBQUUsYUFBWSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxlQUFjLEVBQUUsZUFBYyxDQUFDLEdBQUUsSUFBRSxLQUFLLElBQUksRUFBRSxrQkFBaUIsRUFBRSxnQkFBZ0IsR0FBRSxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxRQUFPLFFBQU8sSUFBRyxFQUFFLFFBQU0sRUFBRSxTQUFPLEVBQUU7QUFBRSx1QkFBTyxHQUFHLGdCQUFjLFNBQVEsR0FBRyxzQkFBb0IsRUFBRSxZQUFZLEVBQUUsa0JBQWdCLFdBQVMsRUFBRSx1QkFBcUIsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxNQUFJLEdBQUcsU0FBTyxFQUFFLGtCQUFnQixXQUFTLEVBQUUsVUFBUSxFQUFFLHNCQUFvQixHQUFHLEVBQUUsUUFBTyxDQUFDLElBQUUsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsT0FBTyxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFNLENBQUMsR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxXQUFTLElBQUUsRUFBRSxLQUFHLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsV0FBVyxRQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUUsV0FBVztBQUFHLHNCQUFHLEVBQUUsZUFBYSxFQUFFLGlCQUFlLEVBQUUsa0JBQWdCLEdBQUcsQ0FBQztBQUFFO0FBQUEsZ0JBQUs7QUFBQyx1QkFBTyxFQUFFLFdBQVcsVUFBUSxFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxLQUFHLEtBQUksQ0FBQyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLG9DQUFvQyxDQUFDLEtBQUcsRUFBRSxzQkFBc0IsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFO0FBQUEsY0FBTTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFFLE1BQU0sT0FBTyxFQUFFLFNBQU8sT0FBSyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHO0FBQUUseUJBQU87QUFBRSxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBQyxzQkFBRyxFQUFFLEVBQUUsUUFBTTtBQUFTLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUUsMkJBQVEsR0FBRSxJQUFFLEVBQUUsT0FBTSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEVBQUUsSUFBRyxLQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUUsd0JBQUc7QUFBRywwQkFBRyxDQUFDO0FBQUUsNEJBQUUsQ0FBQyxFQUFFO0FBQUEsK0JBQVUsR0FBRyxFQUFFLElBQUcsSUFBRyxPQUFHLE1BQUcsTUFBRyxFQUFFO0FBQUUsMEJBQUUsS0FBSyxFQUFFO0FBQUE7QUFBTztBQUFBLGtCQUFNO0FBQUMsc0JBQUc7QUFBRSwyQkFBTyxFQUFFLFdBQVMsSUFBRSxFQUFFLEtBQUcsR0FBRyxFQUFFLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMscUJBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRyxxQkFBbUIsT0FBSyxJQUFJO0FBQUUsb0JBQUksSUFBRSxHQUFHLEVBQUUsWUFBVyxDQUFDO0FBQUUsdUJBQU8sR0FBRyxJQUFHLEdBQUUsSUFBRyxFQUFFLFVBQVU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxXQUFTLEdBQUcsRUFBRSxNQUFLLEVBQUUsSUFBRSxFQUFFO0FBQUEsY0FBSTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsU0FBTyxPQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWEsRUFBRSxTQUFPLE9BQUssRUFBRSxjQUFjLFNBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsRUFBRSxVQUFTLElBQUUsRUFBRSxRQUFPLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsS0FBRyxFQUFFLG1CQUFtQixDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLE9BQUcsS0FBRyxHQUFFLEtBQUcsR0FBRSxNQUFLO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQUksc0JBQUcsR0FBRyxTQUFPLEtBQUk7QUFBQyx5QkFBRyxLQUFHLEdBQUcsSUFBRyxHQUFHLHFCQUFtQixPQUFLLElBQUk7QUFBRSx3QkFBSSxLQUFHLEdBQUcsR0FBRyxZQUFXLEdBQUUsQ0FBQztBQUFFLHdCQUFHLEdBQUcsRUFBRTtBQUFFLHdCQUFFLEtBQUssRUFBRSxHQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsNkJBQVUsSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLFFBQU8sS0FBRSxLQUFHO0FBQUcsd0JBQUUsS0FBSyxFQUFFLEdBQUUsRUFBRSxLQUFLLENBQUM7QUFBQSxvQkFBQztBQUFNLHdCQUFFLEtBQUssR0FBRyxJQUFHLElBQUcsSUFBRyxHQUFHLFVBQVUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsa0JBQUMsV0FBUyxNQUFJLEdBQUcsU0FBTztBQUFJLHlCQUFHLE1BQUcsRUFBRSxLQUFLLEVBQUUsR0FBRSxFQUFFLEtBQUssQ0FBQztBQUFBLHVCQUFNO0FBQUMsd0JBQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxNQUFNLEdBQUUsS0FBRyxHQUFHLElBQUcsR0FBRSxJQUFHLENBQUM7QUFBRSx3QkFBRyxFQUFFLEtBQUssR0FBRyxJQUFHLE1BQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEtBQUcsSUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxLQUFHLEtBQUcsSUFBRSxLQUFHLEVBQUUsSUFBRSxNQUFJLEdBQUcsRUFBRSxHQUFFO0FBQUMsMEJBQUksS0FBRyxHQUFHLENBQUM7QUFBRSx3QkFBRSxNQUFNLE9BQU8sRUFBRSxHQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxLQUFHLEdBQUcsR0FBRSxDQUFDLElBQUUsS0FBRyxNQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsSUFBRSxHQUFHLEdBQUcsR0FBRSxHQUFFLEVBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRyxFQUFFLFNBQU8sR0FBRyxFQUFFLFFBQVEsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPLEVBQUUsTUFBSSxJQUFFLEdBQUcsSUFBRyxFQUFFLEtBQUcsS0FBRztBQUFBLGdCQUFFLENBQUMsR0FBRSxDQUFDLElBQUUsS0FBRyxLQUFHLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsSUFBRTtBQUFHLHlCQUFPO0FBQUUsb0JBQUksSUFBRSxFQUFFO0FBQVksdUJBQU8sTUFBSSxJQUFFLEVBQUUsY0FBWSxHQUFHLENBQUMsR0FBRSxFQUFFLGVBQWEsU0FBUTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFHLDJCQUFPLEVBQUUscUJBQXFCLEVBQUUsV0FBVztBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBRywyQkFBTyxFQUFFLHFCQUFxQixFQUFFLElBQUk7QUFBQTtBQUFVLDJCQUFNO0FBQUE7QUFBQSxjQUFHO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFHLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxFQUFFLFVBQVU7QUFBRSxvQkFBRyxDQUFDLEVBQUUsY0FBYTtBQUFDLHVCQUFJLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxNQUFNLEtBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxNQUFNLEtBQUcsRUFBRSx1QkFBdUIsRUFBRSxPQUFPLE1BQU0sTUFBSSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsS0FBRyxFQUFFLFdBQVcsY0FBYyxTQUFPLE9BQUssRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLE9BQU8sU0FBTztBQUFJLDJCQUFPLEVBQUUsZUFBYTtBQUFHLHNCQUFHLEVBQUUsZUFBYSxHQUFHLEVBQUUsVUFBVSxHQUFFLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxLQUFHLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEtBQUcsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLE1BQU0sR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxPQUFPLE1BQU0sR0FBRSxJQUFFLEdBQUcsQ0FBQztBQUFFLDBCQUFJLEdBQUcsQ0FBQyxFQUFFLFNBQU8sT0FBTSxHQUFHLENBQUMsRUFBRSxTQUFPLFFBQU8sR0FBRyxFQUFFLE9BQU8sTUFBTSxFQUFFLFNBQU87QUFBQSxrQkFBTztBQUFDLG1CQUFDLEVBQUUsYUFBYSxRQUFNLFNBQU8sQ0FBQyxHQUFHLEVBQUUsY0FBYSxTQUFTLEtBQUcsQ0FBQyxHQUFHLEVBQUUsY0FBYSxFQUFFLE1BQUksR0FBRyxHQUFFLEVBQUUsWUFBWSxvRUFBb0U7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUU7QUFBQSxjQUFZO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksR0FBRSxLQUFHLElBQUUsRUFBRSxrQkFBZ0IsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFO0FBQUcsdUJBQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEtBQUcsS0FBRyxFQUFFLG1CQUFtQixDQUFDLEtBQUcsR0FBRyxFQUFFLElBQUk7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksR0FBRSxLQUFHLElBQUUsRUFBRSxrQkFBZ0IsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFO0FBQUcsdUJBQU8sRUFBRSxjQUFjLENBQUMsS0FBRyxLQUFHLEVBQUUsbUJBQW1CLENBQUMsS0FBRyxFQUFFLHVCQUF1QixFQUFFLElBQUksS0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUUsSUFBSTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyx5QkFBUSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFHLG1CQUFDLE1BQUksTUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFHLE1BQUksTUFBSSxHQUFHLENBQUMsS0FBRyxNQUFJLE1BQUksR0FBRyxDQUFDLE1BQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsRUFBRSxTQUFPLEdBQUcsR0FBRSxDQUFDLElBQUU7QUFBRyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFHLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRSxNQUFNLFFBQVEsRUFBRSxRQUFNLGFBQVcsR0FBRSw2QkFBNkI7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLENBQUMsRUFBRSxpQkFBZ0I7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLENBQUM7QUFBRSwyQkFBTyxFQUFFLE1BQU0sS0FBSztBQUFFLG9CQUFFLGtCQUFnQixHQUFHLEdBQUUsSUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRTtBQUFBLGNBQWU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxtQkFBbUIsQ0FBQztBQUFFLG1CQUFHLEdBQUUsQ0FBQztBQUFFLHlCQUFRLElBQUUsS0FBRyxFQUFFLGtCQUFrQixJQUFFLFFBQU8sSUFBRSxFQUFFLGtCQUFrQixHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsSUFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEtBQUcsS0FBRyxFQUFFLFlBQVUsRUFBRSxRQUFRLFNBQU8sT0FBSyxFQUFFLFFBQVEsU0FBTyxNQUFLLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxLQUFHLElBQUUsR0FBRSxLQUFHLEVBQUUsV0FBVyxDQUFDLEtBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxHQUFFLEtBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxLQUFHLE1BQUksQ0FBQyxJQUFHLEtBQUcsSUFBRyxLQUFHLE9BQUcsS0FBRyxPQUFHLEtBQUcsT0FBRyxLQUFHLE9BQUcsS0FBRyxHQUFFLEtBQUcsRUFBRSxZQUFXLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUc7QUFBSSxxQkFBRyxRQUFNLEVBQUUsdUJBQXVCLEdBQUcsSUFBSSxLQUFHLEdBQUcsR0FBRyxJQUFJO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsRUFBRSxZQUFXLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUcsS0FBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxRQUFNLEdBQUcsS0FBSyxTQUFPLE1BQUksR0FBRyxHQUFHLElBQUksSUFBRTtBQUFPLHNCQUFHLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxPQUFLLEVBQUUsc0JBQXNCLEVBQUUsR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxTQUFPLE1BQUksR0FBRyxJQUFHLENBQUMsSUFBRSxHQUFHLFNBQU8sTUFBSSxHQUFHLENBQUMsS0FBRyxHQUFHLDhCQUE0QixHQUFHLDhCQUE0QixHQUFHLE1BQUssQ0FBQyxJQUFFLEdBQUcsSUFBRyxDQUFDO0FBQUUsd0JBQUcsSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsNEJBQUksR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsTUFBSSxNQUFJLEdBQUcsa0JBQWdCLEdBQUcsSUFBRyxHQUFHLEdBQUcsY0FBYyxHQUFFLEVBQUU7QUFBQSxvQkFBQztBQUFDLDBCQUFJLEVBQUUsZUFBZSxFQUFFLElBQUU7QUFBTyx3QkFBSSxLQUFHLE1BQUksR0FBRyxFQUFFLElBQUUsS0FBRyxRQUFPLEtBQUcsS0FBRyxHQUFHLElBQUUsR0FBRyxPQUFNLEdBQUcsRUFBRSxHQUFFLEtBQUcsSUFBSSxJQUFFLEdBQUcsSUFBRSxHQUFHLE9BQU0sR0FBRyxhQUFZLEVBQUU7QUFBRSx3QkFBRyxPQUFLLEdBQUcsV0FBUyxLQUFJLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsU0FBTyxPQUFLLEdBQUcsR0FBRyxXQUFXLEtBQUcsR0FBRyxTQUFPLE9BQUssR0FBRztBQUE0Qiw2QkFBSyxHQUFHLFNBQU87QUFBQSxvQkFBUyxXQUFTLE1BQUksRUFBRSxFQUFFLGVBQWUsQ0FBQyxJQUFFLE1BQUs7QUFBQywwQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLFdBQVc7QUFBRSwyQkFBRyxHQUFHLFNBQU8sR0FBRyxRQUFNLFdBQVMsQ0FBQyxHQUFHLGdDQUE4QixDQUFDLEdBQUcsR0FBRSxFQUFFLEtBQUcsR0FBRyxHQUFHLE1BQUssRUFBRSxZQUFZLGlGQUFnRixHQUFHLEVBQUUsR0FBRSxHQUFHLENBQUMsQ0FBQztBQUFBLG9CQUFDO0FBQUMsd0JBQUcsR0FBRyxlQUFhLEdBQUcsY0FBYSxHQUFHLFNBQU8sR0FBRyxRQUFPLEdBQUcscUJBQW1CLEdBQUcsbUJBQWlCLEdBQUcsbUJBQWtCLEdBQUcsT0FBSyxJQUFHLEdBQUcsU0FBTyxJQUFHLEtBQUcsSUFBRyxLQUFHLFFBQU0sRUFBRSxJQUFJLEdBQUcsYUFBWSxFQUFFLEdBQUUsS0FBRyxLQUFHLElBQUUsS0FBRyxFQUFFLElBQUUsT0FBSyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sUUFBTSxHQUFHLEVBQUUsR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsd0JBQUUsTUFBTSxPQUFPLEVBQUU7QUFBRSwwQkFBSSxLQUFHLEdBQUcsU0FBTyxNQUFJLEdBQUcsY0FBWTtBQUFHLHlCQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsb0JBQUM7QUFBQSxrQkFBQyxXQUFTLEdBQUcsU0FBTyxLQUFJO0FBQUMseUJBQUcsS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsU0FBTyxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLFFBQU8sSUFBRyxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLGtCQUFrQixHQUFFLEtBQUcsT0FBRyxLQUFHLE9BQUcsS0FBRztBQUFJLHdCQUFJLEtBQUcsR0FBRyxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQUUsd0JBQUcsR0FBRyxFQUFFLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsMEJBQUcsS0FBRyxHQUFHLElBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLFFBQU8sR0FBRyxDQUFDO0FBQUU7QUFBUywwQkFBRSxHQUFHLEdBQUUsSUFBRyxFQUFFLFFBQU8sSUFBRyxFQUFFO0FBQUEsb0JBQUM7QUFBTSx5QkFBRyxJQUFHLEVBQUUsWUFBWSxrREFBa0QsR0FBRSxJQUFFO0FBQUc7QUFBQSxrQkFBUTtBQUFNLHNCQUFFLE1BQU0sT0FBTyxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sR0FBRyxHQUFFLEdBQUcsRUFBRTtBQUFFLHdCQUFJLEVBQUUsR0FBRyxRQUFNLFFBQU0sR0FBRyxJQUFHLEVBQUUsTUFBSSxHQUFHLElBQUcsRUFBRSxJQUFFLEtBQUcsT0FBRyxHQUFHLElBQUcsRUFBRSxJQUFFLEtBQUcsT0FBRyxLQUFHLE1BQUcsTUFBSSxLQUFHLFNBQUssRUFBRSxJQUFJLEdBQUcsYUFBWSxFQUFFLEdBQUUsRUFBRSxLQUFLLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFHLE1BQUksRUFBRSxPQUFPLFNBQU87QUFBSSwyQkFBUSxLQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsd0JBQUksS0FBRyxHQUFHO0FBQUkscUJBQUMsRUFBRSxJQUFJLEdBQUcsV0FBVyxLQUFHLENBQUMsR0FBRyxHQUFFLEdBQUcsV0FBVyxNQUFJLEdBQUcsUUFBTSxZQUFVLEdBQUcsR0FBRyxvQkFBa0IsR0FBRyxnQkFBZSxFQUFFLFlBQVksbUdBQW1HLEdBQUUsRUFBRSxJQUFJLEdBQUcsYUFBWSxFQUFFLEdBQUUsRUFBRSxLQUFLLEVBQUU7QUFBQSxrQkFBRTtBQUFDLG9CQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPO0FBQUcsb0JBQUcsTUFBSTtBQUFHLHlCQUFPLEVBQUUsU0FBTyxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLFFBQU8sSUFBRyxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLGtCQUFrQixHQUFFLEtBQUcsT0FBRyxLQUFHLFFBQUksR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLE9BQUssS0FBRyxHQUFHLElBQUU7QUFBQSxrQkFBRSxDQUFDO0FBQUUsdUJBQU8sR0FBRztBQUFFLHlCQUFTLEtBQUk7QUFBQyxzQkFBSSxLQUFHLENBQUM7QUFBRSx3QkFBSSxHQUFHLEtBQUssR0FBRyxHQUFFLElBQUcsR0FBRSxFQUFFLENBQUMsR0FBRSxNQUFJLEdBQUcsS0FBSyxHQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksR0FBRyxLQUFLLEdBQUcsR0FBRSxJQUFHLEdBQUUsRUFBRSxDQUFDO0FBQUUsc0JBQUksS0FBRyxHQUFHLEVBQUUsUUFBTyxHQUFFLEVBQUUsWUFBVyxFQUFFLFlBQVcsRUFBRTtBQUFFLHlCQUFPLEdBQUcsZUFBYSxLQUFHLE1BQUksUUFBTyxPQUFLLEdBQUcsZUFBYSxPQUFNLE9BQUssR0FBRyxlQUFhLE1BQUssTUFBSSxHQUFHLFVBQVEsSUFBRztBQUFBLGdCQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFHLEdBQUUsRUFBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxFQUFFLEVBQUUsUUFBTSxhQUFXLEVBQUUsUUFBTSxXQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU0sRUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLEtBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsRUFBRSxjQUFjLEdBQUUsR0FBRyxFQUFFLGVBQWUsT0FBTyxJQUFFLEdBQUcsRUFBRSxjQUFjLElBQUUsR0FBRyxFQUFFLGVBQWUsT0FBTyxHQUFFLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxLQUFHO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEVBQUUsZUFBZTtBQUFFLG9CQUFJLElBQUUsRUFBRSxvQkFBb0IsQ0FBQztBQUFFLHVCQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBSSxHQUFHLGNBQVksRUFBRSxRQUFRLElBQUksS0FBSyxNQUFJLENBQUMsR0FBRyxzQkFBb0IsQ0FBQyxFQUFFLFFBQVEsSUFBSSxTQUFTLEtBQUcsR0FBRyxHQUFFLEdBQUcsYUFBVyxFQUFFLFlBQVksbUhBQWlILEVBQUUsWUFBWSx5RUFBeUUsR0FBRSxHQUFHLENBQUMsR0FBRSxHQUFHLENBQUMsS0FBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLGVBQWUsR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsU0FBTyxNQUFJLEVBQUUsbUJBQW1CLEVBQUUsV0FBVztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsY0FBWSxHQUFHLEVBQUUsYUFBWSxDQUFDLElBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx5QkFBUSxJQUFFLEVBQUUsWUFBVyxJQUFFLEtBQUcsRUFBRSxrQkFBa0IsSUFBRSxRQUFPLElBQUUsRUFBRSxrQkFBa0IsR0FBRSxJQUFFLElBQUcsSUFBRSxPQUFHLEdBQUUsS0FBRyxPQUFHLEtBQUcsTUFBSyxLQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxLQUFHLEdBQUUsS0FBRyxFQUFFLFlBQVcsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRztBQUFPLHNCQUFHLEVBQUUsZUFBZSxFQUFFLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUUsMEJBQUksRUFBRSxlQUFlLEVBQUUsSUFBRTtBQUFPLHdCQUFJLEtBQUcsR0FBRyxJQUFFLEdBQUcsT0FBTSxHQUFHLFdBQVc7QUFBRSx1QkFBRyxlQUFhLEdBQUcsY0FBYSxHQUFHLFNBQU8sR0FBRyxRQUFPLEdBQUcscUJBQW1CLEdBQUcsbUJBQWlCLEdBQUcsbUJBQWtCLEdBQUcsT0FBSyxJQUFHLEdBQUcsU0FBTyxJQUFHLEVBQUUsSUFBSSxHQUFHLGFBQVksRUFBRSxHQUFFLEtBQUcsUUFBTSxFQUFFLElBQUksR0FBRyxhQUFZLEVBQUUsR0FBRSxHQUFHLEtBQUssZ0JBQWMsT0FBSyxLQUFHO0FBQUEsa0JBQUcsT0FBSztBQUFDLHNCQUFFLE1BQU0sT0FBTyxHQUFHLFNBQU8sR0FBRyxHQUFFLEVBQUUsT0FBSyxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLFFBQU8sSUFBRyxLQUFFLEdBQUUsSUFBRSxFQUFFLGtCQUFrQjtBQUFHLHdCQUFJLEtBQUcsR0FBRyxHQUFHLEdBQUcsWUFBVyxDQUFDLENBQUM7QUFBRSx1QkFBRyxFQUFFLE1BQUksSUFBRSxPQUFJLEdBQUcsRUFBRSxLQUFHLElBQUUsR0FBRyxHQUFFLElBQUcsRUFBRSxRQUFPLElBQUcsS0FBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEdBQUUsRUFBRSxNQUFJLEdBQUcsR0FBRyxZQUFXLEVBQUUsWUFBWSxrREFBa0QsR0FBRSxJQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxDQUFDLElBQUU7QUFBQSxrQkFBRztBQUFBLGdCQUFDO0FBQUMscUJBQUcsRUFBRSxPQUFLLE1BQUksSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsUUFBTyxJQUFHLEtBQUU7QUFBRyxvQkFBSSxLQUFHLEVBQUUsT0FBTyxTQUFPLE1BQUksRUFBRSxTQUFPO0FBQU8sb0JBQUcsTUFBSSxHQUFHLG1CQUFpQixLQUFHLEdBQUcsU0FBUyxTQUFPLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDO0FBQUUsc0JBQUcsQ0FBQyxLQUFHLE1BQUksT0FBSyxJQUFHO0FBQUMsMEJBQUksR0FBRyxHQUFFLEVBQUUsWUFBWSxrRUFBaUUsRUFBRSwyQkFBMkIsRUFBRSxDQUFDO0FBQUUsd0JBQUksS0FBRyxHQUFHLEVBQUUsVUFBVSxHQUFFLEtBQUcsTUFBSSxHQUFHLElBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSx1QkFBRyxPQUFLLEdBQUcsV0FBUyxJQUFFLEdBQUcsS0FBRyxNQUFJLEdBQUcsSUFBRyxFQUFFLElBQUUsR0FBRyxFQUFFLElBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUcsbUJBQWlCLEVBQUUsUUFBUSx3QkFBd0IsUUFBTyxFQUFFLDJCQUEyQixFQUFFLEdBQUUsUUFBTyxNQUFNLEdBQUUsRUFBRSxVQUFVLEdBQUcsa0JBQWlCLENBQUMsR0FBRSxHQUFHLGlCQUFpQixTQUFPO0FBQUcsd0JBQUksS0FBRyxFQUFFLGtCQUFrQjtBQUFFLHVCQUFHLElBQUksSUFBRyxFQUFFLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLFFBQU8sSUFBRyxFQUFFLFlBQVcsRUFBRSxZQUFXLEVBQUUsVUFBVSxHQUFFLEVBQUUsUUFBTyxJQUFHLEtBQUU7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUc7QUFBRSx5QkFBTztBQUFHLG9CQUFHLEtBQUcsTUFBSTtBQUFHLHlCQUFPLEdBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLHVCQUFPLE1BQUksTUFBSSxLQUFHLEdBQUcsSUFBRTtBQUFHLHlCQUFTLEtBQUk7QUFBQyx3QkFBSTtBQUFHLHNCQUFJLEtBQUcsR0FBRyxFQUFFLFFBQU8sR0FBRSxFQUFFLFlBQVcsRUFBRSxZQUFXLEVBQUUsVUFBVTtBQUFFLHlCQUFPLEdBQUcsZUFBYSxLQUFHLE1BQUksUUFBTztBQUFBLGdCQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxVQUFTLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUU7QUFBRyxzQkFBRyxFQUFFLFNBQU87QUFBRyxzQkFBRSxpQ0FBK0IsRUFBRSxLQUFLLEVBQUU7QUFBQSx1QkFBTTtBQUFDLHdCQUFHLEVBQUUsU0FBTyxPQUFLLENBQUMsRUFBRTtBQUFXO0FBQVMsc0JBQUUsS0FBSyxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx5QkFBUSxJQUFFLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsc0JBQUksSUFBRSxFQUFFO0FBQUcsc0JBQUcsRUFBRSxFQUFFLFFBQU0sV0FBVTtBQUFDLHdCQUFJLElBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVztBQUFFLHdCQUFHLEdBQUU7QUFBQywwQkFBSSxJQUFFLEdBQUcsRUFBRSxrQkFBaUIsRUFBRSxZQUFZLGtFQUFpRSxFQUFFLDJCQUEyQixFQUFFLFdBQVcsQ0FBQztBQUFFLHdCQUFFLGVBQWUsR0FBRSxFQUFFLHdCQUF3QixHQUFFLEVBQUUsWUFBWSwyQ0FBMkMsQ0FBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxRQUFPLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUcsR0FBRyxHQUFFLEdBQUUsTUFBTTtBQUFFLHVCQUFPLElBQUUsR0FBRyxDQUFDLElBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxDQUFDLEVBQUUsZ0JBQWU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxtQkFBa0IsQ0FBQztBQUFFLHNCQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFPLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSx1RUFBc0UsRUFBRSwyQkFBMkIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFFLEVBQUUsaUJBQWU7QUFBRyxzQkFBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU87QUFBRSwyQkFBTyxFQUFFLE1BQU0sS0FBSztBQUFFLHNCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsUUFBUSxXQUFXO0FBQUUsc0JBQUc7QUFBRSwyQkFBTyxFQUFFLFlBQVUsR0FBRSxFQUFFLGlCQUFlO0FBQUUsc0JBQUksSUFBRSxHQUFHLEdBQUUsRUFBRTtBQUFFLHlCQUFPLEtBQUcsRUFBRSxZQUFVLEdBQUUsRUFBRSxpQkFBZSxFQUFFLFdBQVMsR0FBRyxHQUFFLEVBQUUsWUFBWSxxQ0FBb0MsRUFBRSxPQUFPLEVBQUUsT0FBTyxHQUFFLFNBQU8sRUFBRSxpQkFBaUIsR0FBRSxFQUFFLGlCQUFlO0FBQUEsZ0JBQUc7QUFBQyx1QkFBTyxFQUFFO0FBQUEsY0FBYztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBRyxFQUFFLG9CQUFvQixDQUFDLEdBQUUsSUFBRSxLQUFHLEdBQUcsQ0FBQztBQUFFLG9CQUFHLEVBQUUsS0FBRyxFQUFFLCtCQUE2QixRQUFJO0FBQUMsc0JBQUcsS0FBRyxFQUFFO0FBQTJCLDJCQUFPLEVBQUU7QUFBMkIsc0JBQUksSUFBRSxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixJQUFHLENBQUMsR0FBRSxFQUFFO0FBQUUsc0JBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsNEJBQTRCLEVBQUUsTUFBSSxFQUFFLHFCQUFxQixTQUFRLElBQUUsSUFBRSxFQUFFLFlBQVkscUhBQW1ILEVBQUUsWUFBWSw2REFBNEQsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsTUFBSSxLQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBRTtBQUFPLDJCQUFPLE1BQUksRUFBRSw2QkFBMkIsS0FBRyxRQUFJO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUcsS0FBRyxFQUFFO0FBQWEseUJBQU8sRUFBRTtBQUFhLG9CQUFHLENBQUMsS0FBRyxFQUFFLGlCQUFlLE9BQUc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLENBQUMsS0FBRyxNQUFJLElBQUc7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHdCQUFFLEdBQUcsR0FBRSxHQUFFLE1BQUssUUFBTyxHQUFFLEtBQUU7QUFBQSxrQkFBQztBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxLQUFJLElBQUksQ0FBQztBQUFFLHdCQUFHLEtBQUcsTUFBSTtBQUFHLDZCQUFPLE1BQUksRUFBRSxlQUFhLElBQUc7QUFBQSxrQkFBQztBQUFDLHdCQUFJLEVBQUUsZUFBYTtBQUFBLGdCQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFJLE1BQUssTUFBTSxDQUFDO0FBQUUsb0JBQUcsTUFBSTtBQUFHLHlCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFHLEdBQUcsRUFBRSxTQUFRLEdBQUUsTUFBTSxHQUFFLElBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUcsR0FBRTtBQUFDLHNCQUFHLEVBQUUsV0FBUztBQUFFLDJCQUFNO0FBQUcsc0JBQUcsRUFBRSxXQUFTO0FBQUUsMkJBQU8sRUFBRSxHQUFHO0FBQVksb0JBQUUsU0FBTyxLQUFHLEVBQUUsZ0JBQWMsR0FBRyxFQUFFLGFBQWEsSUFBRyxFQUFFLFlBQVksMkRBQTBELEVBQUUsMkJBQTJCLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEtBQUcsR0FBRyxFQUFFLFNBQVEsRUFBRSwwQkFBeUIsTUFBTTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUUsd0NBQXVDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxFQUFFLHVDQUFzQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxRQUFNO0FBQUUseUJBQU0sQ0FBQyxFQUFFO0FBQUUsb0JBQUcsRUFBRSxRQUFNLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsc0JBQUcsR0FBRTtBQUFDLHdCQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSwyQkFBTSxDQUFDLENBQUM7QUFBQSxrQkFBQztBQUFNLDJCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVkscUNBQW9DLEVBQUUsT0FBTSxTQUFPLEVBQUUsaUJBQWlCLEdBQUUsRUFBRTtBQUFBLGdCQUFVO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxXQUFTLE1BQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFHLEVBQUUsV0FBUyxLQUFHLEVBQUUsUUFBTSxZQUFVLElBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFNLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsZ0JBQUMsQ0FBQyxDQUFDLElBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxtQkFBa0IsQ0FBQztBQUFFLG9CQUFHLENBQUMsR0FBRyxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsT0FBTSxJQUFFLEdBQUcsR0FBRSxFQUFFLHlCQUF5QixDQUFDLENBQUM7QUFBRSxzQkFBRztBQUFFLDJCQUFPLEdBQUcsQ0FBQztBQUFFLHNCQUFJLElBQUUsR0FBRyxHQUFFLEVBQUU7QUFBRSx5QkFBTyxLQUFHO0FBQUEsZ0JBQU07QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSSxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx1QkFBRyxHQUFHLEdBQUUsR0FBRSxJQUFHLEVBQUUsU0FBUSxFQUFFLFlBQVksOENBQTZDLENBQUM7QUFBQSxnQkFBQyxXQUFTLE1BQUksR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsdUJBQUcsR0FBRyxHQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVEsRUFBRSxZQUFZLGdEQUErQyxDQUFDO0FBQUEsZ0JBQUMsT0FBSztBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxzQkFBRyxDQUFDLEtBQUcsQ0FBQztBQUFFO0FBQU8sc0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSxxQkFBRyxHQUFFLEdBQUUsSUFBRyxFQUFFLFNBQVEsRUFBRSxZQUFZLCtDQUE4QyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxJQUFHO0FBQUMsc0JBQUksSUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPO0FBQUUseUJBQU8sRUFBRSx3QkFBd0IsUUFBTyxFQUFFLFlBQVksc0NBQXFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRSxNQUFNLE9BQU8sR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsQ0FBQyxFQUFFLGtDQUFpQztBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUseUJBQU8sRUFBRSxXQUFTLElBQUUsRUFBRSxtQ0FBaUMsR0FBRyxDQUFDLEtBQUcsS0FBRyxFQUFFLFdBQVMsSUFBRSxFQUFFLG1DQUFpQyxHQUFHLEdBQUcsRUFBRSxtQkFBa0IsQ0FBQyxHQUFFLEVBQUUsS0FBRyxLQUFHLEVBQUUsbUNBQWlDO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTyxFQUFFO0FBQUEsY0FBZ0M7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxjQUFhLENBQUM7QUFBRSxvQkFBRyxDQUFDLEdBQUcsQ0FBQztBQUFFLHlCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxTQUFRLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRztBQUFFLHlCQUFPLEdBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxtQkFBa0IsQ0FBQztBQUFFLHVCQUFPLElBQUUsR0FBRyxDQUFDLElBQUUsRUFBRTtBQUFBLGNBQVU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxpQkFBQyxHQUFHLE9BQUssT0FBSyxLQUFHLEdBQUcsR0FBRSxFQUFFLFlBQVksOENBQThDLEdBQUUsR0FBRyxDQUFDLE1BQUksVUFBUSxLQUFHLEdBQUcsR0FBRSxFQUFFLFlBQVksc0ZBQXNGO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSx3QkFBd0IsQ0FBQztBQUFFLG9CQUFHLEtBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsTUFBSSxHQUFHLFFBQU0sSUFBRSxFQUFFLFlBQVkscUJBQW1CLFFBQU8sSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLElBQUUsRUFBRSxVQUFRLEdBQUUsSUFBRTtBQUFPLHNCQUFHLEVBQUUscUJBQXFCLENBQUMsS0FBRyxNQUFJLFdBQVMsSUFBRSxHQUFHLEdBQUUsR0FBRSxRQUFPLEdBQUUsR0FBRSxJQUFFLElBQUcsTUFBSSxFQUFFLGVBQWEsVUFBUyxFQUFFLFFBQU0sV0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFHLEVBQUUscUJBQXFCLENBQUMsR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxvQkFBb0IsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUseUJBQUcsR0FBRyxHQUFFLEdBQUUsUUFBTyxHQUFFLEdBQUUsSUFBRTtBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRSxHQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsUUFBTSxRQUFPO0FBQUMsc0JBQUcsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFLEtBQUcsS0FBRyxHQUFHLENBQUM7QUFBRSwyQkFBTTtBQUFBLGdCQUFFLFdBQVMsRUFBRSxRQUFNLFdBQVMsR0FBRyxDQUFDO0FBQUUsMkJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxPQUFNLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEVBQUU7QUFBRyx3QkFBRyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsNkJBQU07QUFBQSxrQkFBRTtBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFNLENBQUMsRUFBRSxFQUFFLFFBQU0sVUFBUSxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUUsUUFBTSxFQUFFLFFBQU0sWUFBVSxFQUFFLFFBQU0sV0FBUyxFQUFFLEtBQUssRUFBRSxPQUFNLEVBQUUsS0FBRyxFQUFFLFFBQU0sV0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFNLEVBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBRyxHQUFHLENBQUMsR0FBRSxFQUFFLFlBQVc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxZQUFXLENBQUM7QUFBRSx5QkFBTyxFQUFFLGtCQUFnQixNQUFJLE1BQUksQ0FBQyxHQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLHNDQUFzQyxHQUFFO0FBQUEsZ0JBQUM7QUFBTSx5QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLG1CQUFpQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEVBQUUsUUFBTSxRQUFNLEVBQUUsY0FBYyxDQUFDLElBQUU7QUFBRSx5QkFBTTtBQUFHLG9CQUFHLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLGlCQUFpQjtBQUFPLHlCQUFPLEtBQUcsRUFBRSxtQkFBbUIsQ0FBQyxLQUFHLEVBQUUsNkJBQTZCLENBQUMsTUFBSTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBSSxXQUFTLElBQUU7QUFBSSxvQkFBSSxJQUFFLElBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxRQUFNLEVBQUUsU0FBTyxNQUFJLElBQUUsRUFBRSxTQUFPLE9BQUssRUFBRSxlQUFhLEVBQUUsZUFBYSxFQUFFLE9BQUs7QUFBTyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsc0NBQXNDLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEdBQUU7QUFBQyxzQkFBRyxLQUFHLEtBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQU8sS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLHdGQUF3RixHQUFFO0FBQUcsc0JBQUcsSUFBRTtBQUFJLDJCQUFPLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSxzRUFBcUUsR0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUU7QUFBQSxnQkFBRTtBQUFDLG9CQUFHLElBQUUsT0FBSyxHQUFHLENBQUMsTUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFHLEVBQUUseUNBQXlDLENBQUMsS0FBRyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sS0FBRyxFQUFFLDZCQUE2QixFQUFFLE9BQU8sTUFBTSxJQUFHO0FBQUMsc0JBQUksSUFBRSxFQUFFLGdDQUFnQyxHQUFHLENBQUMsQ0FBQztBQUFFLHNCQUFHLEtBQUcsR0FBRyxDQUFDO0FBQUUsMkJBQU8sS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLHNFQUFxRSxHQUFHLENBQUMsR0FBRSxFQUFFLDZCQUE2QixFQUFFLElBQUksQ0FBQyxHQUFFO0FBQUEsZ0JBQUU7QUFBQyxvQkFBRyxFQUFFLElBQUU7QUFBSSx5QkFBTTtBQUFHLG9CQUFHLElBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxnQ0FBZ0MsR0FBRyxDQUFDLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUUsQ0FBQyxJQUFFLFFBQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLDBEQUF5RCxHQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRTtBQUFBLGdCQUFHO0FBQUMsb0JBQUc7QUFBRSx5QkFBTTtBQUFHLG9CQUFJLEtBQUcsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFFLHlCQUFPLEdBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSxnQkFBQyxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxPQUFLLEtBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxNQUFJLEdBQUcsSUFBRyxHQUFFLENBQUMsR0FBRSxJQUFFLE1BQUksQ0FBQyxPQUFLLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSwrRUFBOEUsR0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLENBQUMsS0FBRyxDQUFDLENBQUMsR0FBRSxTQUFJLElBQUUsS0FBRyxRQUFJLEVBQUUsUUFBTSxXQUFTLElBQUUsRUFBRSxhQUFXLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFHLENBQUMsS0FBRyxDQUFDLEdBQUcsR0FBRSxFQUFFLEtBQUcsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLDJHQUEwRyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLFNBQUk7QUFBQSxjQUFHO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEtBQUcsT0FBSyxTQUFPLEVBQUUsU0FBTyxHQUFHLEVBQUUsSUFBSTtBQUFFLG9CQUFHLEtBQUcsRUFBRSxRQUFNLFdBQVMsSUFBRSxHQUFHLENBQUMsSUFBRyxLQUFHLEVBQUUsZUFBZSxDQUFDLElBQUU7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLGlCQUFpQixHQUFFLEtBQUU7QUFBRSx1QkFBTyxLQUFHLEVBQUUsZUFBZSxDQUFDLElBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFFO0FBQUEsY0FBTTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU0sRUFBRSxFQUFFLFFBQU07QUFBQSxnQkFBSyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEdBQUcsS0FBRyxHQUFHLENBQUMsSUFBRSxFQUFFLFNBQU87QUFBQSxjQUFNO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxtQkFBRyxHQUFFLElBQUUsUUFBTSxJQUFFLFFBQU0sRUFBRSxZQUFZLHVDQUFxQyxFQUFFLFlBQVksK0JBQTZCLEVBQUUsWUFBWSx1QkFBdUI7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxtQkFBRyxHQUFFLElBQUUsUUFBTSxJQUFFLFFBQU0sRUFBRSxZQUFZLDhEQUE0RCxFQUFFLFlBQVksc0RBQW9ELEVBQUUsWUFBWSw4Q0FBOEM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLE1BQUksRUFBRSxRQUFNO0FBQUUseUJBQU8sR0FBRyxHQUFFLEVBQUUsWUFBWSx5QkFBeUIsR0FBRTtBQUFHLG9CQUFJLEtBQUcsS0FBRyxHQUFHLENBQUMsSUFBRSxFQUFFLFNBQU87QUFBTSxvQkFBRyxHQUFFO0FBQUMsb0JBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx5QkFBTyxFQUFFLFFBQU0sU0FBTyxLQUFHO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxRQUFNLFNBQU8sR0FBRyxHQUFFLEVBQUUsWUFBWSw0QkFBNEIsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxLQUFHLEdBQUcsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFFLEVBQUUsWUFBVyxHQUFHLEVBQUUsVUFBVSxHQUFFLEVBQUUsTUFBSyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLElBQUUsR0FBRyxHQUFFLEVBQUUsVUFBVTtBQUFFLHVCQUFPLEdBQUcsR0FBRyxHQUFFLEVBQUUsWUFBVyxHQUFHLEdBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxNQUFLLENBQUMsR0FBRSxHQUFFLE1BQUksQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxrQkFBa0IsQ0FBQyxLQUFHLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxJQUFFLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRSxFQUFFLElBQUksSUFBRSxHQUFHLEVBQUUsSUFBSTtBQUFFLHVCQUFPLEdBQUcsR0FBRSxFQUFFLE1BQUssR0FBRSxFQUFFLE9BQU0sQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBSyxFQUFFLE9BQU8sU0FBTztBQUFLLHNCQUFFLEVBQUU7QUFBTyx1QkFBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sS0FBRyxFQUFFLE9BQU8sZUFBYTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsRUFBRSxtQkFBbUIsQ0FBQyxHQUFFLEdBQUUsSUFBRSxFQUFFLG1CQUFtQixDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsa0NBQWtDLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxXQUFTLEVBQUUsUUFBUSxJQUFJLENBQUMsS0FBRyxFQUFFLFdBQVMsRUFBRSxRQUFRLElBQUksQ0FBQztBQUFFLHNCQUFHO0FBQUUsMkJBQU87QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBRyxDQUFDLEVBQUUsbUJBQW1CLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUUsRUFBRSxZQUFZLHdEQUF3RDtBQUFFLG9CQUFHLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEdBQUU7QUFBQyxzQkFBRyxDQUFDLEVBQUUsaUJBQWlCLENBQUM7QUFBRSwyQkFBTyxHQUFHLEdBQUUsRUFBRSxZQUFZLDRLQUE0SztBQUFFLHNCQUFJLElBQUUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEtBQUcsRUFBRSxPQUFPLGNBQWMsU0FBTztBQUFJLHNCQUFHLENBQUMsR0FBRyxDQUFDLEtBQUcsQ0FBQztBQUFFLDJCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksb0JBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHVCQUFPLEtBQUcsR0FBRyxHQUFFLFFBQU8sS0FBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEVBQUUsbUJBQWlCLFdBQVMsRUFBRSxpQkFBZSxHQUFHLEVBQUUsYUFBWSxDQUFDLElBQUcsRUFBRTtBQUFBLGdCQUFjO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEVBQUUsV0FBVztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksR0FBRSxJQUFFLEdBQUcsQ0FBQztBQUFFLHFCQUFHLEVBQUUsUUFBUSxHQUFFLFNBQVMsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFpQixzQkFBRyxNQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxFQUFFLG9CQUFvQixHQUFHLElBQUksS0FBRyxHQUFHLEtBQUssZ0JBQWMsRUFBRTtBQUFZLDJCQUFPLElBQUUsSUFBRztBQUFBLGdCQUFFLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsTUFBTSxhQUFhLEVBQUUsZ0JBQWdCLEdBQUUsSUFBRSxFQUFFLE1BQU0sYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFBRSxzQkFBRyxLQUFHLFFBQU0sRUFBRSxrQkFBaUI7QUFBQyx3QkFBSSxLQUFHLEVBQUUsa0JBQWlCLEtBQUcsRUFBRSxtQkFBbUIsRUFBRTtBQUFFLHdCQUFHLEVBQUUsTUFBTSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUUsRUFBRSxhQUFhLElBQUcsU0FBUyxJQUFHO0FBQUMsNkJBQU8sTUFBSTtBQUFBLG9CQUFFLENBQUMsR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSwySUFBMEksR0FBRSxHQUFHLENBQUMsQ0FBQztBQUFFLDZCQUFPLEVBQUUsZUFBZSxJQUFHLEVBQUUsd0JBQXdCLElBQUcsRUFBRSxZQUFZLGdEQUErQyxDQUFDLEdBQUUsRUFBRSx3QkFBd0IsR0FBRSxFQUFFLFlBQVksd0VBQXVFLENBQUMsQ0FBQyxHQUFFO0FBQUEsb0JBQUU7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksa0ZBQWlGLEdBQUUsR0FBRyxFQUFFLFFBQU0sQ0FBQyxDQUFDLEdBQUU7QUFBQSxnQkFBRTtBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsd0JBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxlQUFlLENBQUMsS0FBRyxHQUFHLENBQUMsTUFBSSxFQUFFLGlCQUFpQixHQUFFLElBQUUsTUFBSSxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxFQUFFLGdCQUFlLElBQUUsRUFBRSx3QkFBd0IsQ0FBQyxHQUFFLElBQUUsR0FBRyxNQUFJLEtBQUcsR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDLElBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxDQUFDLEtBQUcsTUFBSSxJQUFHO0FBQUcsb0JBQUcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFFO0FBQUMsdUJBQUcsT0FBSyxNQUFJLEtBQUcsR0FBRyxHQUFFLE9BQU8sR0FBRSxNQUFJLEtBQUcsR0FBRyxHQUFFLE1BQU07QUFBRyxzQkFBSSxLQUFHLEdBQUcsRUFBRSxhQUFZLENBQUM7QUFBRSxzQkFBRyxLQUFHLE1BQUksR0FBRyxvQkFBa0IsRUFBRSxvQkFBb0IsR0FBRyxnQkFBZ0IsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLG9FQUFtRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUUsSUFBRztBQUFDLHdCQUFHO0FBQUcsNkJBQU8sR0FBRyxDQUFDLElBQUUsS0FBRztBQUFFLHdCQUFHLENBQUMsRUFBRSxtQkFBbUIsQ0FBQztBQUFFLDZCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksd0RBQXdELEdBQUU7QUFBQSxrQkFBRTtBQUFDLHNCQUFHLEtBQUcsS0FBRyxHQUFHLEdBQUUsRUFBRSxJQUFFLFFBQU8sQ0FBQyxNQUFJLEdBQUcsR0FBRSxHQUFFLEVBQUU7QUFBRSwyQkFBTztBQUFHLHNCQUFJLEtBQUcsTUFBSSxHQUFHLFFBQU0sU0FBTyxFQUFFLEdBQUcsUUFBTTtBQUFPLHdCQUFJLE1BQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLDZDQUE2QztBQUFBLGdCQUFDLE9BQUs7QUFBQyxzQkFBRztBQUFHLDJCQUFPLEVBQUUsYUFBYSxDQUFDLEtBQUcsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxJQUFFLEtBQUc7QUFBRSx1QkFBRyxHQUFHLEdBQUUsRUFBRSxXQUFXO0FBQUEsZ0JBQUM7QUFBQyxrQkFBRSxhQUFhLENBQUMsS0FBRyxNQUFJLEdBQUcsbUJBQWlCLEVBQUUsT0FBSyxHQUFHLEVBQUUsS0FBRyxHQUFHLFFBQU0sS0FBRyxFQUFFLE9BQU8sU0FBTyxTQUFPLEVBQUUseUJBQXlCLEVBQUUsS0FBRyxHQUFHLENBQUMsTUFBSSxHQUFHLEdBQUUsQ0FBQztBQUFFLG9CQUFJO0FBQUcsb0JBQUcsSUFBRztBQUFDLHFCQUFHLEVBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxLQUFHLEdBQUcsZ0JBQWMsR0FBRyxHQUFFLEdBQUcsY0FBYSxFQUFFLFdBQVcsR0FBRSxHQUFHLElBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxFQUFFLGlCQUFlO0FBQUcsc0JBQUksS0FBRyxFQUFFLGNBQWMsQ0FBQztBQUFFLHNCQUFHLEdBQUcsR0FBRSxFQUFFLFNBQU8sS0FBSSxJQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxJQUFHLENBQUM7QUFBRSwyQkFBTyxHQUFHLEdBQUUsRUFBRSxZQUFZLHVEQUFzRCxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUU7QUFBRyx1QkFBRyxHQUFHLEdBQUUsRUFBRSxJQUFFLEtBQUcsS0FBRyxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUU7QUFBQSxnQkFBQyxPQUFLO0FBQUMsc0JBQUksS0FBRyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsTUFBSSxNQUFJLEtBQUcsQ0FBQyxHQUFHLENBQUMsS0FBRyxFQUFFLG9CQUFvQixDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUUsV0FBVyxJQUFFO0FBQU8sc0JBQUcsRUFBRSxNQUFJLEdBQUcsT0FBTTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsUUFBTyxJQUFFO0FBQUUsMkJBQU0sQ0FBQyxNQUFJLEdBQUcsQ0FBQyxJQUFFLEtBQUcsRUFBRSxXQUFTLE1BQUksR0FBRyxRQUFRLElBQUksRUFBRSxXQUFXLEtBQUcsR0FBRyxRQUFRLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBTSxNQUFJLEdBQUcsR0FBRSxFQUFFLFlBQVkscUNBQW9DLEVBQUUsMkJBQTJCLEVBQUUsV0FBVyxHQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLDBFQUF5RSxHQUFHLENBQUMsQ0FBQyxHQUFFLE9BQUssRUFBRSxlQUFhLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUUsb0JBQW9CLENBQUMsSUFBRSxJQUFFLEdBQUUsRUFBRSxHQUFFO0FBQUEsa0JBQUc7QUFBQyxxQkFBRyxlQUFhLEVBQUUsbUJBQW1CLENBQUMsS0FBRyxFQUFFLGVBQWUsQ0FBQyxNQUFJLEdBQUcsR0FBRSxFQUFFLFlBQVksZ0RBQStDLEdBQUcsQ0FBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLDRCQUEwQixDQUFDLEVBQUUsbUJBQW1CLENBQUMsSUFBRSxHQUFHLENBQUMsR0FBRyxNQUFLLEVBQUUsQ0FBQyxJQUFFLEdBQUcsTUFBSyxHQUFHLHNDQUFvQyxFQUFFLDJCQUEyQixDQUFDLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSx3RUFBdUUsRUFBRSwyQkFBMkIsRUFBRSxXQUFXLENBQUMsR0FBRSxHQUFHLGVBQWEsRUFBRSxxQkFBcUIsR0FBRyxXQUFXLElBQUUsYUFBVyxHQUFHLEdBQUUsQ0FBQyxHQUFHLFdBQVcsR0FBRSxFQUFFLFdBQVc7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsb0JBQW9CLENBQUM7QUFBRSxvQkFBRyxLQUFHLEdBQUcsWUFBVSxVQUFRLEVBQUUscUJBQW1CLFdBQVMsRUFBRSxlQUFhLEtBQUcsRUFBRSxlQUFhLElBQUc7QUFBQyxzQkFBSSxJQUFFLEVBQUUsUUFBUSxLQUFHLE9BQUssU0FBTyxFQUFFLGNBQWEsRUFBRSxtQkFBbUI7QUFBRSx5QkFBTSxFQUFFLE1BQUksS0FBRyxDQUFDLENBQUMsS0FBRyxHQUFHLENBQUMsTUFBSSxFQUFFLEtBQUcsS0FBRyxFQUFFLFFBQU0sT0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFHLEtBQUcsRUFBRSwyQkFBMkIsQ0FBQyxLQUFHLEVBQUUsV0FBVyxTQUFPO0FBQUEsZ0JBQUk7QUFBQyx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSx3QkFBd0IsQ0FBQztBQUFFLG9CQUFHLE1BQUk7QUFBRSx5QkFBTyxHQUFHLEdBQUUsQ0FBQyxFQUFFLEtBQUcsRUFBRSxRQUFNLFNBQVM7QUFBRSxvQkFBRyxLQUFHLEVBQUUsRUFBRSxRQUFNLFVBQVEsRUFBRSxFQUFFLFFBQU0sUUFBTSxFQUFFLFFBQU0sWUFBVSxDQUFDLEdBQUcsRUFBRSxZQUFZO0FBQUUseUJBQU87QUFBRSxvQkFBRyxNQUFJO0FBQUcseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBRSxvQkFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUksSUFBRTtBQUFHLG9CQUFHLE1BQUksTUFBSSxFQUFFLG1CQUFtQixDQUFDLEtBQUcsRUFBRSxXQUFXLFNBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsS0FBRyxFQUFFO0FBQWlCLHNCQUFHLEtBQUcsR0FBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFFO0FBQUMsd0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSx1QkFBRyxTQUFPLE9BQUssR0FBRyxXQUFTLEVBQUUsVUFBUSxFQUFFLEVBQUUsUUFBTSxjQUFZLElBQUU7QUFBQSxrQkFBRztBQUFBLGdCQUFDO0FBQU0sd0JBQUksS0FBRyxFQUFFLG9CQUFrQixFQUFFLDJCQUEyQixFQUFFLGdCQUFnQixLQUFHLEVBQUUsMkNBQTJDLEVBQUUsZ0JBQWdCLEtBQUcsR0FBRyxDQUFDLE1BQUksR0FBRyxFQUFFLGdCQUFnQixNQUFJLElBQUU7QUFBSSxvQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLElBQUUsR0FBRyxDQUFDLElBQUUsQ0FBQztBQUFFLHVCQUFPLEtBQUcsRUFBRSxHQUFHLENBQUMsSUFBRSxVQUFRLEdBQUcsRUFBRSxJQUFFLFNBQU8sR0FBRyxHQUFFLEVBQUUsWUFBWSwwQ0FBeUMsR0FBRyxDQUFDLENBQUMsR0FBRSxLQUFHLElBQUUsR0FBRyxFQUFFLElBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFpQixvQkFBRyxFQUFFLENBQUMsS0FBRyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsb0JBQW1CO0FBQUMsc0JBQUksR0FBRSxJQUFFLEVBQUUsT0FBTyxDQUFDO0FBQUUscUJBQUcsQ0FBQyxLQUFHLENBQUMsR0FBRyxDQUFDLEtBQUcsRUFBRSxFQUFFLG1CQUFtQixDQUFDLEtBQUcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLE1BQUksQ0FBQyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUseUJBQXlCLENBQUMsSUFBRSxRQUFNLEdBQUcsMkJBQXlCLENBQUMsR0FBRyxDQUFDLEtBQUcsSUFBRSxHQUFHLEdBQUUsRUFBRSxZQUFZLDhDQUE2QyxDQUFDLElBQUUsRUFBRSxTQUFPLE9BQUssRUFBRSxPQUFPLFNBQU8sT0FBSyxFQUFFLEVBQUUsUUFBTSxhQUFXLENBQUMsR0FBRyxHQUFFLENBQUMsTUFBSSxJQUFFLEdBQUcsR0FBRSxFQUFFLFlBQVkscUNBQW9DLENBQUMsSUFBRyxLQUFHLEVBQUUsZUFBZSxHQUFFLEVBQUUsd0JBQXdCLEdBQUUsRUFBRSxZQUFZLHFCQUFvQixDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUUsU0FBUyxHQUFFO0FBQUMsMEJBQU8sRUFBRTtBQUFBLHlCQUFXO0FBQUksNkJBQU07QUFBQSx5QkFBUTtBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUksNkJBQU07QUFBQSx5QkFBUTtBQUFBLHlCQUFTO0FBQUksNkJBQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxLQUFHLEVBQUUsOEJBQThCLEVBQUUsT0FBTyxNQUFNLElBQUUsT0FBRztBQUFBO0FBQWUsNkJBQU8sRUFBRSxpQkFBaUIsQ0FBQyxJQUFFLFFBQUc7QUFBQTtBQUFBLGdCQUFPLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUcsRUFBRSxFQUFFLE9BQU8sUUFBTTtBQUFJLHlCQUFNO0FBQUcseUJBQVEsSUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFJO0FBQUMsc0JBQUcsSUFBRSxFQUFFLFVBQVEsR0FBRyxDQUFDLEdBQUUsQ0FBQztBQUFFLDJCQUFNO0FBQUcsc0JBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxXQUFXO0FBQUUsc0JBQUcsS0FBRyxFQUFFO0FBQWlCLDJCQUFNO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxFQUFFLFdBQVM7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEdBQUU7QUFBRSxvQkFBRyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsS0FBRyxFQUFFLFFBQU0sV0FBUyxFQUFFLEVBQUUsUUFBTTtBQUFRLDJCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsT0FBTSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsd0JBQUksSUFBRSxFQUFFO0FBQUcsd0JBQUcsQ0FBQyxHQUFHLEdBQUUsRUFBRSxXQUFXLEtBQUcsQ0FBQyxHQUFHLEdBQUUsRUFBRSxXQUFXLEdBQUU7QUFBQywwQkFBRSxFQUFFLHdCQUF3QixHQUFFLEVBQUUsWUFBWSxxQ0FBb0MsRUFBRSx3QkFBd0IsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQUU7QUFBQSxvQkFBSztBQUFBLGtCQUFDO0FBQUMsb0JBQUcsR0FBRyxFQUFFLGFBQVksQ0FBQyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLHdCQUF3QixDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRSxFQUFFLHdCQUF3QixHQUFFLEVBQUUsWUFBWSx3RkFBdUYsSUFBRyxJQUFHLEtBQUcsTUFBSSxFQUFFO0FBQUEsZ0JBQUMsT0FBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsc0JBQUcsTUFBSSxHQUFHLElBQUcsRUFBRSxXQUFXO0FBQUUsd0JBQUUsRUFBRSx3QkFBd0IsR0FBRSxFQUFFLFlBQVkscUNBQW9DLEVBQUUsd0JBQXdCLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSx3QkFBd0IsR0FBRSxFQUFFLFlBQVksMkJBQTJCO0FBQUEsdUJBQU07QUFBQyx3QkFBSSxLQUFHLEVBQUUsd0JBQXdCLENBQUMsR0FBRSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRSx3QkFBRyxPQUFLO0FBQU8sMEJBQUUsRUFBRSx3QkFBd0IsR0FBRSxFQUFFLFlBQVksa0lBQWlJLElBQUcsSUFBRyxFQUFFO0FBQUEseUJBQU07QUFBQywwQkFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUUsMEJBQUcsT0FBSyxRQUFPO0FBQUMsNEJBQUksS0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFFLEtBQUcsSUFBRSxFQUFFLFlBQVksb0RBQWtELEVBQUUsWUFBWTtBQUFtRCw0QkFBRSxFQUFFLHdCQUF3QixHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsb0JBQWtCLEVBQUUsd0JBQXdCLEdBQUcsa0JBQWlCLEVBQUUsWUFBWSxxQkFBb0IsRUFBRTtBQUFBLHNCQUFDLE9BQUs7QUFBQyw0QkFBSSxLQUFHLEdBQUcsQ0FBQyxJQUFFLEVBQUUsWUFBWSwwRkFBd0YsRUFBRSxZQUFZO0FBQW9DLDRCQUFFLEVBQUUsd0JBQXdCLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUU7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBRSx3Q0FBd0MsR0FBRSxDQUFDO0FBQUUscUJBQUcsRUFBRSxlQUFlLElBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxLQUFHLEVBQUUsU0FBTyxFQUFFLFlBQVksa0RBQWtELE1BQUssRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxHQUFHLE9BQUssQ0FBQyxHQUFHLElBQUksU0FBUyxLQUFLLEtBQUcsR0FBRyxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsVUFBUSxpREFBaUQsS0FBSyxFQUFFLDJCQUEyQixFQUFFLE9BQU8sV0FBVyxDQUFDO0FBQUEsZ0JBQUMsQ0FBQyxLQUFHLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxVQUFRLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRSxDQUFDO0FBQUUsdUJBQU8sTUFBSSxVQUFRLENBQUMsQ0FBQyxFQUFFLG9CQUFrQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0I7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMseUJBQVEsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsd0JBQXdCLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRTtBQUFFLHNCQUFHLE1BQUksVUFBUSxFQUFFLFNBQVMsR0FBRSxDQUFDO0FBQUUsMkJBQU87QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLEVBQUU7QUFBTyxvQkFBRyxDQUFDLENBQUM7QUFBRSwyQkFBUSxJQUFFLEVBQUUsd0JBQXdCLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLHdCQUFJLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxJQUFHLEtBQUcsR0FBRyxFQUFFLFdBQVcsQ0FBQztBQUFHLHdCQUFHLE9BQUssVUFBUSxFQUFFLFNBQVMsSUFBRyxDQUFDO0FBQUUsNkJBQU87QUFBQSxrQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFHLENBQUMsR0FBRSxNQUFNO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxPQUFPLEtBQUcsVUFBUztBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFPLG9CQUFFLDJCQUEyQixDQUFDLE1BQUksSUFBRSxFQUFFLE9BQU8sR0FBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsQ0FBQyxJQUFHLElBQUUsRUFBRSxPQUFPLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLE1BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsU0FBUyxDQUFDLElBQUUsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxNQUFJLFFBQU0sRUFBRSxLQUFLLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxXQUFXLENBQUMsTUFBSTtBQUFBLGdCQUFTLENBQUMsSUFBRSxNQUFJLFVBQVEsRUFBRSxLQUFLLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxXQUFXLENBQUMsTUFBSTtBQUFBLGdCQUFXLENBQUMsSUFBRTtBQUFPLHVCQUFPLEtBQUcsT0FBSyxJQUFFLEdBQUcsR0FBRSxHQUFFLE1BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU8sS0FBRyxFQUFFLFdBQVcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUUsTUFBTSxPQUFPLE1BQUksUUFBTyxvQ0FBb0M7QUFBRSxvQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsUUFBTyxHQUFFLE9BQUcsT0FBRyxNQUFHLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRSxNQUFNLFlBQVksR0FBRSxHQUFFLDZCQUE2QjtBQUFFLHNCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFFLHNCQUFHO0FBQUUsMkJBQU87QUFBRSxzQkFBSTtBQUFHLHNCQUFHLE1BQUksSUFBRztBQUFDLHdCQUFJLEtBQUcsRUFBRSxXQUFXLENBQUMsVUFBUyxVQUFTLFdBQVUsVUFBUyxVQUFTLFFBQVEsR0FBRSxTQUFTLElBQUc7QUFBQyw2QkFBTyxFQUFFLElBQUksR0FBRyxPQUFPLENBQUMsRUFBRSxZQUFZLElBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFFLEdBQUcsUUFBTyxFQUFFLElBQUU7QUFBQSxvQkFBTSxDQUFDO0FBQUUseUJBQUcsR0FBRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUEsa0JBQUM7QUFBTSx5QkFBRyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUM7QUFBRSx5QkFBTyxHQUFHLEVBQUUsMkJBQTJCLENBQUMsR0FBRSxJQUFHLENBQUM7QUFBQSxnQkFBQyxDQUFDO0FBQUUsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEtBQUcsRUFBRSxXQUFXLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFdBQVMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLE9BQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU8sS0FBRyxFQUFFLFdBQVcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBRSwyQkFBTSxDQUFDLENBQUMsTUFBSSxHQUFHLEVBQUUsS0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFHLElBQUcsQ0FBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQyx5QkFBTTtBQUFBLGdCQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLG1CQUFtQixDQUFDLElBQUUsUUFBTTtBQUFNLG9CQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSx5Q0FBeUMsRUFBRSxVQUFVO0FBQUUseUJBQU8sTUFBSSxTQUFPLElBQUUsSUFBRSxLQUFHLE1BQUksR0FBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLE1BQU0sT0FBTyxTQUFTLEdBQUU7QUFBQyx5QkFBTSxDQUFDLEVBQUUsRUFBRSxRQUFNO0FBQUEsZ0JBQUksQ0FBQztBQUFFLHVCQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTSxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUU7QUFBQSxnQkFBSyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLHNCQUFzQixHQUFFLEdBQUUsQ0FBQztBQUFFLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxXQUFXLENBQUM7QUFBRSxzQkFBRyxDQUFDLEVBQUUsV0FBVyxHQUFFLEdBQUcsR0FBRTtBQUFDLHdCQUFHLEVBQUUsUUFBTTtBQUFFLDZCQUFPO0FBQUUsd0JBQUcsRUFBRSxRQUFNLFNBQVE7QUFBQywwQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLDBCQUFHLEtBQUcsRUFBRSxRQUFNO0FBQUUsK0JBQU87QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsS0FBRyxFQUFFLFFBQU0sVUFBUSxFQUFFO0FBQWlCLG9CQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsb0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsSUFBSTtBQUFFLHNCQUFHLEVBQUUsQ0FBQyxLQUFHLENBQUMsTUFBSSxFQUFFLEtBQUcsRUFBRSxrQkFBa0IsQ0FBQyxLQUFHLEVBQUUsRUFBRSxRQUFNLFNBQVE7QUFBQyx3QkFBRyxHQUFFO0FBQUMsMEJBQUksSUFBRSxFQUFFLGFBQWEsR0FBRSxFQUFFLHlCQUF5QjtBQUFFLDBCQUFHLEtBQUcsRUFBRSxXQUFTO0FBQUU7QUFBQSxvQkFBTTtBQUFDLHFCQUFDLEVBQUUsY0FBYyxDQUFDLElBQUUsSUFBRSxHQUFHLENBQUMsRUFBRSxTQUFPLEdBQUcsZUFBYTtBQUFBLGtCQUFRO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFNBQU8sT0FBSyxDQUFDLENBQUMsS0FBRyxFQUFFLHVCQUF1QixDQUFDLEtBQUcsTUFBSSxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFJLDJCQUFPLEdBQUcsR0FBRSxFQUFFLFdBQVcsU0FBTyxLQUFJLEdBQUUsR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxPQUFHLEdBQUUsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxPQUFHLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBQTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEVBQUUsU0FBTyxPQUFLLEVBQUUsV0FBVyxTQUFPLEtBQUksT0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsR0FBRyxDQUFDO0FBQUUseUJBQU07QUFBRyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxDQUFDLEtBQUcsR0FBRyxHQUFFLEdBQUUsT0FBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxHQUFHLENBQUM7QUFBRSx5QkFBTTtBQUFHLG9CQUFHLEVBQUUsb0JBQWtCLEVBQUUsMkNBQTJDLEVBQUUsZ0JBQWdCLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCO0FBQUUseUJBQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLE1BQUk7QUFBQSxrQkFBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBWSxvQkFBRyxFQUFFLFNBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsRUFBRSxhQUFhO0FBQUcsc0JBQUcsS0FBRyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsSUFBSTtBQUFFLDJCQUFPLEdBQUcsQ0FBQztBQUFBLGdCQUFDLFdBQVMsRUFBRSxTQUFPO0FBQUcseUJBQU8sR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQyxFQUFFLFdBQVMsS0FBRyxDQUFDLENBQUMsR0FBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLGdCQUFnQixDQUFDO0FBQUUsb0JBQUcsRUFBRSxTQUFPLElBQUc7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLEVBQUUsUUFBTTtBQUFFLDZCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFHO0FBQUMsMEJBQUcsRUFBRSxTQUFPLE9BQUssTUFBSSxFQUFFLGFBQVcsR0FBRyxDQUFDLE1BQUksS0FBRyxHQUFHLEdBQUcsRUFBRSxVQUFVLENBQUM7QUFBRSwrQkFBTTtBQUFHLDBCQUFFLEdBQUUsSUFBRSxFQUFFO0FBQUEsb0JBQU07QUFBQSxnQkFBQztBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxRQUFNLEtBQUcsR0FBRyxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLFVBQVUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLElBQUUsR0FBRyxHQUFFLEVBQUUsVUFBVTtBQUFFLHVCQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsR0FBRSxNQUFJLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSx3QkFBd0IsQ0FBQyxNQUFJLEtBQUcsR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDLElBQUUsR0FBRSxJQUFFLEVBQUUsb0JBQW1CLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsR0FBRyxDQUFDLEtBQUcsTUFBSTtBQUFHLHlCQUFPO0FBQUUsb0JBQUcsR0FBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLG9CQUFvQixDQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFFLEVBQUUsWUFBWSwrREFBK0QsR0FBRTtBQUFHLG9CQUFJLElBQUUsR0FBRyxDQUFDLElBQUUsS0FBRyxHQUFFLElBQUUsRUFBRSxtQkFBbUIsQ0FBQyxJQUFFLEtBQUcsR0FBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLElBQUUsSUFBRSxLQUFHLElBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsS0FBRztBQUFHLHVCQUFPLEdBQUcsR0FBRyxHQUFFLEdBQUcsQ0FBQyxFQUFFLGdCQUFlLElBQUcsR0FBRSxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLHNCQUFzQixDQUFDLEtBQUcsRUFBRSwyQkFBMkIsQ0FBQyxLQUFHLEVBQUUsd0JBQXdCLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxRQUFRLEVBQUUsZUFBYyxFQUFFLEdBQUUsRUFBRSxTQUFPLE1BQUksR0FBRyxFQUFFLFFBQVEsSUFBRSxFQUFFLHdCQUF3QixDQUFDLElBQUUsR0FBRyxFQUFFLFVBQVUsSUFBRSxFQUFFLFNBQU8sT0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFHLENBQUM7QUFBQSxnQkFBQyxDQUFDLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxDQUFDLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEdBQUUsR0FBRSxJQUFFLEdBQUUsR0FBRSxJQUFFLElBQUc7QUFBRyxrQkFBRSxNQUFNLE9BQU8sQ0FBQyxFQUFFLE1BQU07QUFBRSx5QkFBUSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUcsS0FBSSxLQUFHLEdBQUcsZUFBYSxHQUFHLEdBQUcsV0FBVyxHQUFFLEtBQUcsR0FBRyxlQUFhLEdBQUcsWUFBWTtBQUFPLG1CQUFDLEtBQUcsT0FBSyxJQUFFLEtBQUcsT0FBSyxJQUFFLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRyxJQUFFLE1BQUksSUFBRSxJQUFFLEVBQUUsUUFBTyxJQUFFLEtBQUksSUFBRSxJQUFHLEVBQUUsRUFBRSxLQUFHLEtBQUksS0FBRyxHQUFFLE9BQUssS0FBRyxHQUFFLEVBQUUsT0FBTyxJQUFHLEdBQUUsSUFBRSxHQUFHLElBQUcsQ0FBQyxJQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLENBQUMsTUFBSSxFQUFFLFNBQU8sT0FBSyxFQUFFLFNBQU8sT0FBSyxFQUFFO0FBQUEsY0FBUztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsVUFBVSxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxFQUFFLEVBQUUsUUFBTTtBQUFBLGNBQU07QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEVBQUUsRUFBRSxRQUFNO0FBQUEsY0FBTTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFJLFdBQVMsSUFBRTtBQUFJLG9CQUFJLEdBQUUsSUFBRSxPQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxFQUFFLFNBQU87QUFBSSxzQkFBRyxJQUFFLEVBQUUsUUFBTyxFQUFFLFNBQVMsU0FBTyxLQUFJO0FBQUMsd0JBQUksS0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLGFBQWE7QUFBRSx3QkFBRSxFQUFFLGNBQWMsR0FBRyxPQUFPLEtBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUFBLGtCQUFjLE9BQUs7QUFBQyx3QkFBSSxLQUFHLEVBQUU7QUFBUyxzQkFBRSxNQUFNLE9BQU8sR0FBRyxTQUFPLEVBQUUsR0FBRSxJQUFFLENBQUMsQ0FBQyxHQUFHO0FBQUEsa0JBQWM7QUFBQSx5QkFBUyxFQUFFLFNBQU87QUFBSSxzQkFBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLHlCQUFVLEVBQUUsd0JBQXdCLENBQUMsR0FBRTtBQUFDLHNCQUFHLElBQUUsRUFBRSxXQUFXLFFBQU0sRUFBRSxLQUFJO0FBQUUsMkJBQU07QUFBRyxzQkFBRSxNQUFJLElBQUUsRUFBRSxTQUFPLEdBQUUsSUFBRSxFQUFFLFdBQVMsSUFBRSxJQUFFLEdBQUUsSUFBRSxLQUFLLElBQUksR0FBRSxDQUFDO0FBQUEsZ0JBQUMsV0FBUyxFQUFFLFdBQVU7QUFBQyxzQkFBRSxJQUFFLEVBQUUsU0FBTyxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsVUFBVSxRQUFNLEVBQUU7QUFBSSxzQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHNCQUFHLE1BQUk7QUFBRSwyQkFBTyxNQUFJLEdBQUcsQ0FBQyxNQUFJLEdBQUcsQ0FBQyxLQUFHLEtBQUcsR0FBRyxDQUFDO0FBQUEsZ0JBQUU7QUFBTSx5QkFBTyxFQUFFLE1BQU0sT0FBTyxFQUFFLFNBQU8sR0FBRyxHQUFFLEdBQUcsQ0FBQyxNQUFJO0FBQUUsb0JBQUcsQ0FBQyxHQUFHLENBQUMsS0FBRyxJQUFFO0FBQUUseUJBQU07QUFBRyxvQkFBRyxLQUFHLEtBQUc7QUFBRSx5QkFBTTtBQUFHLHlCQUFRLEtBQUcsR0FBRSxLQUFHLEdBQUUsTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSxzQkFBRyxHQUFHLElBQUcsRUFBRSxXQUFXLENBQUMsS0FBRyxDQUFDLEtBQUcsS0FBRyxFQUFFLEVBQUUsUUFBTTtBQUFPLDJCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxHQUFFLElBQUUsR0FBRyxFQUFFLGNBQWM7QUFBRSx1QkFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUcsRUFBRSxVQUFRLEtBQUcsRUFBRSxVQUFRO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEtBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sR0FBRyxHQUFFLEdBQUUsS0FBRSxLQUFHLEdBQUcsR0FBRSxHQUFFLEtBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsUUFBTSxRQUFPO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxzQkFBRyxLQUFHLEVBQUUsV0FBVyxXQUFTLEtBQUcsRUFBRSxXQUFXLFdBQVMsR0FBRTtBQUFDLHdCQUFHLE1BQUksS0FBRyxFQUFFLGVBQWUsV0FBUyxLQUFHLEVBQUUsb0JBQW9CLFdBQVM7QUFBRSw2QkFBTyxFQUFFLGVBQWU7QUFBRyx3QkFBRyxNQUFJLEtBQUcsRUFBRSxvQkFBb0IsV0FBUyxLQUFHLEVBQUUsZUFBZSxXQUFTO0FBQUUsNkJBQU8sRUFBRSxvQkFBb0I7QUFBQSxrQkFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxFQUFFLGdCQUFlLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLE1BQUksS0FBRyxFQUFFLFFBQU0sU0FBTyxFQUFFLGtCQUFnQixFQUFFLFNBQVEsSUFBRSxJQUFFLEdBQUcsR0FBRSxDQUFDLElBQUU7QUFBRSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLHFCQUFHLEVBQUUsWUFBVyxJQUFHLEVBQUU7QUFBQSxnQkFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLHFCQUFHLEVBQUUsWUFBVyxJQUFHLElBQUcsR0FBRztBQUFBLGdCQUFDLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsRUFBRSxZQUFXLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU8sR0FBRyxFQUFFLFlBQVcsR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLENBQUM7QUFBRSx5QkFBTztBQUFHLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLElBQUUsR0FBRyxDQUFDLElBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLElBQUUsR0FBRyxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLHdCQUF3QixDQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUcsRUFBRSxTQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEdBQUcsR0FBRSxFQUFFLE1BQU0sRUFBRSxnQkFBZSxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLENBQUMsR0FBRyxFQUFFO0FBQUEsa0JBQUMsQ0FBQyxJQUFFLElBQUUsQ0FBQztBQUFFLHNCQUFHLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHdCQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsMEJBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsTUFBSSxHQUFHLGlCQUFlLEdBQUcsR0FBRyxJQUFHLEdBQUcsY0FBYyxDQUFDLElBQUU7QUFBRyx5QkFBRyxFQUFFLFlBQVcsSUFBRyxHQUFFLEdBQUc7QUFBRSwwQkFBSSxLQUFHLEdBQUcsRUFBRSxnQkFBZSxHQUFFLEVBQUUsS0FBSyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsRUFBRSxZQUFZO0FBQUUseUJBQUcsR0FBRyxZQUFXLElBQUcsQ0FBQyxHQUFFLEVBQUUsZUFBYSxFQUFFLEtBQUssR0FBRyxZQUFXLEVBQUUsSUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUU7QUFBQSxvQkFBTTtBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUUsR0FBRSxFQUFFLE1BQU0sSUFBRSxFQUFFO0FBQU8sb0JBQUcsTUFBSSxHQUFHLFFBQU0sUUFBTztBQUFDLHNCQUFJLEtBQUcsRUFBRSxLQUFLLEVBQUUsWUFBVyxTQUFTLElBQUc7QUFBQywyQkFBTyxHQUFHLGtCQUFnQjtBQUFBLGtCQUFFLENBQUM7QUFBRSx5QkFBSyxHQUFHLGVBQWEsRUFBRSxVQUFVLEdBQUUsSUFBRyxFQUFFLElBQUUsSUFBRSxFQUFFLFNBQU8sS0FBRztBQUFBLGdCQUFPO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxvQkFBRyxNQUFJLEdBQUcsRUFBRSxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSxxQkFBRyxFQUFFLFlBQVcsR0FBRyxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVEsS0FBRyxHQUFFLEtBQUcsSUFBRyxNQUFLO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQUksc0JBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSxJQUFFLE1BQUksR0FBRyxFQUFFLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUsd0JBQUcsR0FBRyxFQUFFLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsSUFBRyxJQUFHLEdBQUUsQ0FBQztBQUFFLHlCQUFHLEVBQUUsWUFBVyxJQUFHLEVBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxNQUFJLEdBQUcsRUFBRSxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsSUFBRyxFQUFFLFFBQU8sSUFBRyxHQUFFLENBQUM7QUFBRSxxQkFBRyxFQUFFLFlBQVcsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxRQUFNLFVBQVEsR0FBRyxHQUFFLEVBQUUsSUFBRSxFQUFFLFFBQU0sS0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFHLENBQUMsSUFBRSxJQUFFLEdBQUcsQ0FBQyxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxPQUFPLGNBQWEsT0FBRyxFQUFFLE9BQU8sMEJBQTBCLElBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsS0FBRyxJQUFFLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRTtBQUFHLHNCQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFPLEdBQUcsRUFBRSxTQUFPLE1BQUksRUFBRSxPQUFLLEdBQUcsRUFBRSxZQUFXLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFRLElBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsTUFBSztBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFJLHNCQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLFNBQU8sTUFBSSxFQUFFLE9BQUssR0FBRyxFQUFFLFVBQVU7QUFBRSx1QkFBRyxFQUFFLEtBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRSxHQUFHLEtBQUssQ0FBQyxNQUFJLEVBQUUsS0FBSyxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsU0FBTyxNQUFJLEVBQUUsYUFBVyxDQUFDLENBQUMsR0FBRSxHQUFHLEtBQUssQ0FBQztBQUFBLGtCQUFFLE9BQUs7QUFBQyx3QkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFHLEtBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxJQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUdBLElBQUcsSUFBRyxTQUFTO0FBQUUsc0JBQUUsS0FBSyxLQUFHLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLENBQUM7QUFBQSxrQkFBQztBQUFDLG9CQUFFLFNBQU8sT0FBSyxFQUFFLG1CQUFpQixHQUFHLEtBQUssRUFBRSxlQUFlO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLEdBQUUsSUFBRyxPQUFHLEVBQUUsT0FBTyxFQUFFLE1BQUksRUFBRSxPQUFPLENBQUMsSUFBRSxLQUFHLE1BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEdBQUUsSUFBRSxFQUFFLGdCQUFlLElBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRyxFQUFFLFFBQU8sTUFBSztBQUFDLG9CQUFFLE1BQU0sT0FBTyxFQUFFLFFBQU0sUUFBTyxpRUFBaUU7QUFBRSxzQkFBSSxLQUFHLEdBQUcsRUFBRSxHQUFHO0FBQUUsc0JBQUcsSUFBRztBQUFDLHdCQUFJLEtBQUcsS0FBRyxJQUFFLFdBQVU7QUFBQyw2QkFBTyxFQUFFLHdCQUF3QixRQUFPLEVBQUUsWUFBWSx3Q0FBd0M7QUFBQSxvQkFBQyxJQUFFLFFBQU8sS0FBRyxLQUFHLEVBQUUsWUFBWTtBQUF5QywwQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUcsd0JBQUksS0FBRyxFQUFFO0FBQUksd0JBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLEVBQUUsTUFBSSxRQUFPLElBQUcsRUFBRTtBQUFFO0FBQUEsa0JBQU07QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEdBQUcsRUFBRSxPQUFPO0FBQUUseUJBQU87QUFBRSxvQkFBSSxJQUFFLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUFFLHVCQUFPLEVBQUUsT0FBTyxHQUFHLEdBQUUsQ0FBQyxDQUFDLElBQUUsSUFBRSxFQUFFLE9BQU8sR0FBRyxHQUFFLENBQUMsQ0FBQyxJQUFFLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLFlBQVcsR0FBRSxRQUFPLENBQUM7QUFBRSx1QkFBTyxHQUFHLEtBQUcsR0FBRyxJQUFHLEdBQUUsR0FBRSxJQUFFLEVBQUUsVUFBUSxRQUFPLEVBQUUsWUFBVyxRQUFPLEdBQUUsQ0FBQztBQUFFLHlCQUFTLEtBQUk7QUFBQyxzQkFBSTtBQUFHLHNCQUFHLEdBQUcsQ0FBQztBQUFFLDJCQUFNO0FBQUcsc0JBQUksS0FBRyxFQUFFLG9CQUFvQixDQUFDLEtBQUcsRUFBRSx3QkFBd0IsQ0FBQyxLQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sSUFBRSxHQUFHLEVBQUUsT0FBTyxJQUFFO0FBQU8sc0JBQUcsQ0FBQztBQUFHLDJCQUFNO0FBQUcsc0JBQUksS0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLHNCQUFHLENBQUMsRUFBRSxPQUFPLEVBQUU7QUFBRSwyQkFBTTtBQUFHLHNCQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsc0JBQUcsQ0FBQztBQUFHLDJCQUFNO0FBQUcsc0JBQUksS0FBRyxHQUFHLElBQUcsUUFBTyxNQUFHLE9BQUcsQ0FBQztBQUFFLHNCQUFHLENBQUM7QUFBRywyQkFBTTtBQUFHLHNCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLHNCQUFHLENBQUMsRUFBRSxPQUFPLEVBQUU7QUFBRSwyQkFBTTtBQUFHLDJCQUFRLEtBQUcsT0FBRyxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsd0JBQUksS0FBRyxHQUFHLEtBQUksS0FBRyxHQUFHLElBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxJQUFHLENBQUM7QUFBRSx3QkFBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7QUFBRSwrQkFBUSxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyw0QkFBSSxLQUFHLEdBQUc7QUFBSSw0QkFBRyxLQUFHLE1BQUcsR0FBRyxFQUFFO0FBQUUsaUNBQU07QUFBRyw0QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLDZCQUFHLE9BQUssS0FBRztBQUFBLHNCQUFHO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxDQUFDO0FBQUcsMkJBQU07QUFBRywyQkFBUSxLQUFHLElBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyx3QkFBSSxLQUFHLEdBQUcsS0FBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFHLE9BQUssS0FBRztBQUFBLGtCQUFHO0FBQUMsc0JBQUcsTUFBSTtBQUFHLDJCQUFNO0FBQUcsc0JBQUcsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRSx3QkFBd0IsRUFBRSxTQUFRLEVBQUUsWUFBWSw2RUFBNEUsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEdBQUUsSUFBRyxFQUFFLG1CQUFtQixFQUFFLEdBQUUsRUFBRSxHQUFFLE1BQUksS0FBRyxHQUFHLEVBQUUsT0FBTyxPQUFLLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRztBQUFpQiwwQkFBSSxFQUFFLGVBQWUsSUFBRyxFQUFFLHdCQUF3QixJQUFHLEVBQUUsWUFBWSxxQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxnQkFBYyxFQUFFLFdBQVMsRUFBRSxTQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRSxFQUFFLGVBQWEsR0FBRyxJQUFJLEVBQUU7QUFBQSxrQkFBQztBQUFDLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFDLFFBQU8sUUFBTyxhQUFZLEtBQUU7QUFBRSxvQkFBRyxFQUFFLHdCQUF3QixDQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsVUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBTyw4Q0FBOEMsR0FBRSxFQUFFLFVBQVEsRUFBRTtBQUFZLG9CQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUcsTUFBSSxPQUFLLE1BQUksRUFBRSxTQUFPLEtBQUk7QUFBQyxzQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxJQUFFLE1BQUksSUFBRSxRQUFPLEtBQUcsRUFBRSxZQUFZO0FBQXdFLHNCQUFHLENBQUMsR0FBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUUsMkJBQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFFLFFBQU8seURBQXlELEdBQUUsRUFBRSxVQUFRLEVBQUU7QUFBQSxnQkFBVTtBQUFDLHlCQUFRLEtBQUcsRUFBRSxZQUFZLDZEQUE0RCxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsS0FBRyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUUsR0FBRSxFQUFFLE1BQU0sSUFBRSxFQUFFLFFBQU8sS0FBRyxHQUFFLEtBQUcsSUFBRyxNQUFLO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQUksc0JBQUcsR0FBRyxTQUFPLEtBQUk7QUFBQyx3QkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxRQUFPLENBQUMsR0FBRSxLQUFHLElBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRTtBQUFHLHdCQUFHLENBQUMsR0FBRyxJQUFHLElBQUcsR0FBRSxJQUFFLEtBQUcsUUFBTyxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUUsNkJBQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFFLFFBQU8sb0RBQW9ELEdBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEVBQUUsVUFBUSxFQUFFO0FBQUEsa0JBQVU7QUFBQSxnQkFBQztBQUFDLG9CQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsR0FBRSxJQUFHLEVBQUUsUUFBTyxJQUFHLFFBQU8sQ0FBQyxHQUFFLEtBQUcsRUFBRSxTQUFPLElBQUcsS0FBRyxJQUFFLE9BQUssSUFBRSxJQUFFLE9BQUssSUFBRSxFQUFFLE1BQUksRUFBRSxtQkFBbUIsR0FBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLElBQUksS0FBSSxFQUFFLEVBQUUsU0FBTyxHQUFHLEdBQUcsSUFBRTtBQUFPLHNCQUFHLENBQUMsR0FBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsUUFBTyxDQUFDO0FBQUUsMkJBQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFFLFFBQU8seURBQXlELEdBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEVBQUUsVUFBUSxFQUFFO0FBQUEsZ0JBQVU7QUFBQztBQUFPLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxzQkFBRyxNQUFJLEtBQUcsRUFBRSxVQUFRLEVBQUUsT0FBTyxRQUFPO0FBQUMsd0JBQUcsR0FBRyxFQUFFO0FBQUU7QUFBTyx3QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLDBCQUFJLEdBQUcsSUFBRyxJQUFHLENBQUMsS0FBRyxFQUFFLGVBQWUsRUFBRSxPQUFPLElBQUcsRUFBRSx3QkFBd0IsSUFBRyxFQUFFLFlBQVksMkJBQTJCLENBQUM7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxhQUFXLEVBQUUsU0FBTyxNQUFJLEVBQUUsTUFBSTtBQUFPLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUscUJBQXFCLENBQUM7QUFBRSxzQkFBRyxFQUFFLG1CQUFtQixDQUFDO0FBQUUsMkJBQU8sRUFBRTtBQUFBLGdCQUFVO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxpQkFBaUIsMEJBQTBCLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBVSxHQUFFLENBQUMsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBRyxFQUFFLFNBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsRUFBRSxVQUFTLElBQUUsQ0FBQyxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUM7QUFBRSx5QkFBTyxFQUFFLFNBQU8sT0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFjLFNBQVMsSUFBRztBQUFDLHNCQUFFLEtBQUssR0FBRyxVQUFVO0FBQUEsa0JBQUMsQ0FBQyxHQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxFQUFFLFNBQU87QUFBSSx5QkFBTyxHQUFHLENBQUM7QUFBRSxvQkFBRyxFQUFFLHdCQUF3QixDQUFDO0FBQUUseUJBQU8sRUFBRSxXQUFXLFdBQVcsU0FBTyxLQUFHLEVBQUUsb0JBQW9CLENBQUMsS0FBRyxFQUFFLE9BQU8sU0FBUyxTQUFPLElBQUUsQ0FBQyxFQUFFLFVBQVUsSUFBRSxFQUFFO0FBQVcsb0JBQUksSUFBRSxFQUFFLGFBQVcsRUFBRSxZQUFXLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsS0FBRyxHQUFFO0FBQUMsMkJBQVEsSUFBRSxFQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyx3QkFBSSxLQUFHLEVBQUUsS0FBSSxLQUFHLEdBQUcsU0FBTyxRQUFNLEtBQUcsR0FBRyxHQUFHLFVBQVUsSUFBRSxHQUFHLEdBQUcsVUFBVTtBQUFHLDBCQUFJLEdBQUcsRUFBRSxJQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLDBCQUFJLElBQUcsS0FBRyxHQUFHLE9BQU8sYUFBYSxLQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsSUFBRSxHQUFHLEVBQUUsSUFBRSxJQUFHLENBQUMsRUFBRSxLQUFHLE1BQUssS0FBRyxHQUFHLE9BQU8sZ0NBQThCLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxHQUFHO0FBQUUsd0JBQUUsS0FBSyxFQUFFO0FBQUEsb0JBQUMsQ0FBQyxJQUFFLEVBQUUsS0FBSyxFQUFFO0FBQUEsa0JBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBSSxzQkFBRSxDQUFDO0FBQUUseUJBQU87QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRTtBQUFXLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFBLHVCQUFTO0FBQUksMkJBQU0sQ0FBQyxHQUFHLEdBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSx1QkFBTztBQUFJLHdCQUFJLElBQUUsRUFBRTtBQUFPLDJCQUFNLENBQUMsR0FBRyxHQUFFLEVBQUUsT0FBTyxTQUFPLE1BQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxFQUFFLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLHdCQUFJLElBQUUsRUFBRSxTQUFPLE9BQUssT0FBSztBQUFFLDJCQUFNLENBQUMsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUUsdUJBQU8sRUFBRSxNQUFNLEtBQUs7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx3QkFBTyxFQUFFLE9BQU87QUFBQSx1QkFBVztBQUFBLHVCQUFTO0FBQUksMkJBQU87QUFBQSx1QkFBTztBQUFJLDJCQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksMkJBQU8sT0FBSyxLQUFHLEVBQUUsV0FBVyxVQUFRLElBQUUsSUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU87QUFBQTtBQUFVLDJCQUFPLEVBQUUsTUFBTSxLQUFLO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxHQUFFLEdBQUUsSUFBRSxFQUFFLG9CQUFvQixDQUFDO0FBQUUsb0JBQUcsRUFBRSwyQkFBMkIsRUFBRSxVQUFVLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsb0JBQW9CLEdBQUUsRUFBRSxXQUFXLElBQUk7QUFBRSxzQkFBRSxFQUFFLE9BQU0sSUFBRSxJQUFFLEVBQUUsU0FBTyxFQUFFLE1BQUk7QUFBQSxnQkFBQyxPQUFLO0FBQUMsc0JBQUksSUFBRSxFQUFFLG9CQUFvQixHQUFFLEVBQUUsVUFBVTtBQUFFLHNCQUFFLEVBQUUsT0FBTSxJQUFFLElBQUUsRUFBRSxTQUFPLEVBQUUsTUFBSTtBQUFBLGdCQUFDO0FBQUMsdUJBQU0sRUFBQyxPQUFNLEdBQUUsUUFBTyxHQUFFLFlBQVcsRUFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxpQkFBaUIsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsWUFBVyxLQUFHLEVBQUUsT0FBTSxLQUFHLEVBQUU7QUFBTyx5QkFBTyxFQUFFLHFCQUFxQixHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFNLHlCQUFPLEVBQUUsd0JBQXdCLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxLQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsVUFBVTtBQUFFLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxHQUFHLEVBQUUsWUFBVyxFQUFFLFdBQVcsYUFBWSxRQUFPLFFBQU8sUUFBTyxLQUFFLEdBQUUsSUFBRSxLQUFHLE9BQUssU0FBTyxFQUFFO0FBQWlCLG9CQUFHLENBQUMsS0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUcsQ0FBQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sS0FBRyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxNQUFNLEtBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxPQUFPLE9BQU8sVUFBVTtBQUFFLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxHQUFHLEtBQUU7QUFBRSxvQkFBRyxDQUFDO0FBQUUseUJBQU07QUFBRyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxPQUFPLE9BQU8sWUFBVyxJQUFFO0FBQUUsdUJBQU8sTUFBSTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksR0FBRSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLElBQUU7QUFBRyx5QkFBTyxFQUFFLHdCQUF3QixFQUFFLElBQUcsRUFBRSxZQUFZLGdGQUFnRjtBQUFFLHlCQUFRLElBQUUsT0FBTyxtQkFBa0IsSUFBRSxPQUFPLG1CQUFrQixJQUFFLE9BQU8sbUJBQWtCLEtBQUcsT0FBTyxtQkFBa0IsSUFBRyxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUcsS0FBSSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUUsdUJBQUcsTUFBSSxJQUFFLElBQUcsS0FBRyxLQUFJLElBQUUsS0FBSyxJQUFJLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxVQUFRLEtBQUcsTUFBSSxJQUFFLEtBQUksRUFBRSxTQUFPLE1BQUksS0FBRyxPQUFLLEtBQUc7QUFBQSxnQkFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxLQUFLLEdBQUUsRUFBRSxHQUFFLEtBQUcsS0FBRyxJQUFFLElBQUUsSUFBRSxJQUFFLE1BQUksSUFBRSxHQUFFLEtBQUcsQ0FBQyxNQUFJLE9BQUssS0FBRyxFQUFFLFdBQVMsS0FBRyxHQUFHLENBQUM7QUFBRSxvQkFBRyxNQUFJLEVBQUUsV0FBVyxDQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFFLEVBQUUsWUFBWSxzSEFBc0g7QUFBRSxvQkFBSSxLQUFHLEtBQUcsRUFBRSxZQUFZLDBDQUF3QyxLQUFHLEVBQUUsWUFBWSxpR0FBK0YsRUFBRSxZQUFZO0FBQStCLG9CQUFHLElBQUUsRUFBRSxVQUFRLEVBQUUsU0FBTztBQUFFLHlCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksNEZBQTJGLEVBQUUsUUFBTyxHQUFFLEVBQUU7QUFBRSxvQkFBRyxFQUFFLFNBQU8sR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxFQUFFLE1BQU0sR0FBRSxNQUFJLElBQUUsTUFBSSxPQUFLLFNBQU8sR0FBRyxpQkFBZSxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUUsV0FBVyxHQUFHLGdCQUFjLEVBQUUsU0FBTyxJQUFFLEVBQUU7QUFBUSxzQkFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxFQUFFLHdCQUF3QixJQUFHLEVBQUUsaUJBQWlCLEdBQUcsSUFBSSxJQUFFLEVBQUUsWUFBWSw2REFBMkQsRUFBRSxnQkFBZ0IsRUFBRSxJQUFFLEVBQUUsWUFBWSx1REFBcUQsRUFBRSxZQUFZLG9DQUFtQyxHQUFHLE9BQUssRUFBRSxpQkFBaUIsR0FBRyxJQUFJLElBQUUsU0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsSUFBRSxFQUFFLE1BQU07QUFBRSwyQkFBTyxFQUFFLGVBQWUsSUFBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQyx5QkFBTztBQUFBLGdCQUFFLE9BQUs7QUFBQyxzQkFBSSxLQUFHLEVBQUUsUUFBUSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFJLEtBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUFJLHlCQUFPLE9BQUssTUFBSSxNQUFLLEVBQUUsbUJBQW1CLElBQUcsSUFBRyxFQUFFLEdBQUUsRUFBRSw2QkFBNkIsRUFBRSxvQkFBb0IsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsTUFBTTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBTyxvQkFBRyxFQUFFLFdBQVMsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxFQUFFLGNBQWMsR0FBRSxJQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWM7QUFBRSx5QkFBTyxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixDQUFDLEdBQUUsR0FBRSxFQUFFLFlBQVkscUNBQW9DLElBQUUsSUFBRSxJQUFFLE1BQUksSUFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFRLElBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLElBQUUsR0FBRyxLQUFJLEtBQUcsR0FBRyxFQUFFLGNBQWMsR0FBRSxJQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWM7QUFBRSx1QkFBRyxJQUFFLEtBQUcsS0FBSyxJQUFJLElBQUcsRUFBRSxJQUFFLElBQUUsTUFBSSxJQUFFLEtBQUssSUFBSSxHQUFFLENBQUM7QUFBQSxnQkFBRTtBQUFDLHVCQUFPLE1BQUksS0FBRyxLQUFHLE9BQUssSUFBRSxJQUFFLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLENBQUMsR0FBRSxHQUFFLEVBQUUsWUFBWSxzR0FBcUcsR0FBRSxHQUFFLEVBQUUsSUFBRSxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixDQUFDLEdBQUUsR0FBRSxFQUFFLFlBQVkscUNBQW9DLE1BQUksS0FBRyxJQUFFLEtBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsU0FBTyxLQUFJLElBQUUsRUFBRSxTQUFPLEtBQUksS0FBRyxFQUFFLHdCQUF3QixDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUU7QUFBRyxzQkFBSSxLQUFHLEVBQUUsZ0JBQWUsS0FBRyxNQUFJLEVBQUUsV0FBVyxTQUFPLFFBQU0sRUFBRSxRQUFRLElBQUcsRUFBRTtBQUFHLG9CQUFJLEtBQUcsS0FBRyxDQUFDO0FBQUUsb0JBQUcsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRztBQUFPLHlCQUFPLE1BQUksR0FBRyxJQUFJLEdBQUcsR0FBRSxFQUFFLFlBQVksMkNBQTJDLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBRSxvQkFBSSxLQUFHLEdBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxXQUFTLEtBQUcsQ0FBQyxHQUFHLEdBQUcsZ0JBQWUsS0FBRyxDQUFDLEtBQUcsQ0FBQyxNQUFJLEVBQUUsS0FBSyxJQUFHLEVBQUUsSUFBRSxJQUFFO0FBQUUsc0JBQUksSUFBRTtBQUFHLG9CQUFJLElBQUcsSUFBRyxJQUFHLElBQUcsS0FBRyxDQUFDLEVBQUUsSUFBRSxPQUFLLEVBQUUsU0FBTyxPQUFLLEVBQUUsVUFBVTtBQUFpQixvQkFBRyxHQUFHLFNBQU8sTUFBSSxLQUFHLEdBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxJQUFHLE9BQUssS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRztBQUFHLHlCQUFPO0FBQUcsb0JBQUc7QUFBRyxzQkFBRztBQUFHLHdCQUFHLEdBQUcsV0FBUyxLQUFHLEdBQUcsU0FBTyxHQUFFO0FBQUMsMEJBQUksS0FBRyxHQUFHLEdBQUcsU0FBTyxJQUFHO0FBQUcseUJBQUcsU0FBTyxNQUFJLEtBQUcsRUFBRSx3QkFBd0IsSUFBRyxFQUFFLFlBQVksMENBQTBDLEdBQUUsS0FBRyxFQUFFLHdCQUF3QixJQUFHLEVBQUUsWUFBWSw2QkFBNkI7QUFBRywwQkFBSSxLQUFHLEdBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLE1BQUcsV0FBVTtBQUFDLCtCQUFPO0FBQUEsc0JBQUUsQ0FBQztBQUFFLDBCQUFHO0FBQUcsaUNBQVEsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsOEJBQUksS0FBRyxHQUFHO0FBQUksNkJBQUcsZUFBYSxHQUFHLFNBQU8sS0FBRyxFQUFFLGVBQWUsSUFBRyxFQUFFLHdCQUF3QixHQUFHLGFBQVksRUFBRSxZQUFZLGtDQUFrQyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsR0FBRSxHQUFHLElBQUksRUFBRTtBQUFBLHdCQUFDO0FBQUE7QUFBTSwwQkFBRSxNQUFNLEtBQUssc0NBQXNDO0FBQUEsb0JBQUMsT0FBSztBQUFDLCtCQUFRLEtBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRSxLQUFHLE9BQU8sV0FBVSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsU0FBUyxJQUFHO0FBQUMsNEJBQUksS0FBRyxXQUFVO0FBQUMsaUNBQU8sRUFBRSx3QkFBd0IsUUFBTyxFQUFFLFlBQVksNENBQTJDLEtBQUcsR0FBRSxHQUFHLFFBQU8sR0FBRyxFQUFFLENBQUM7QUFBQSx3QkFBQyxHQUFFLEtBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsTUFBRyxFQUFFO0FBQUUsOEJBQUksR0FBRyxVQUFRLE9BQUssS0FBRyxHQUFHLFFBQU8sS0FBRyxLQUFJLEtBQUcsS0FBSyxJQUFJLElBQUcsR0FBRyxNQUFNLEdBQUUsR0FBRyxLQUFLLEVBQUUsS0FBRyxFQUFFLE1BQU0sS0FBSyw2Q0FBNkMsR0FBRTtBQUFBLHNCQUFJLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsNEJBQUksS0FBRyxHQUFHO0FBQUksMkJBQUcsRUFBRTtBQUFBLHNCQUFDO0FBQUMsMEJBQUksS0FBRyxLQUFHLElBQUUsR0FBRyxNQUFJLEVBQUUsUUFBUSxFQUFFO0FBQUUsd0JBQUUsTUFBTSxPQUFPLEdBQUcsU0FBTyxHQUFFLHVEQUF1RDtBQUFFLDBCQUFJLEtBQUcsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLElBQUcsRUFBRSwwQ0FBMEMsR0FBRSxFQUFFLFlBQVksNkJBQTZCLEdBQUUsS0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLFFBQVEsSUFBRyxTQUFTLElBQUc7QUFBQywrQkFBTyxHQUFHO0FBQUEsc0JBQWtCLENBQUMsR0FBRSxJQUFFLEdBQUUsS0FBRztBQUFPLDBCQUFHLEVBQUUsTUFBTSxJQUFHLFNBQVMsSUFBRztBQUFDLCtCQUFPLEdBQUcsVUFBUSxHQUFHLEdBQUcsU0FBTyxHQUFHLFdBQVMsR0FBRyxHQUFHLFVBQVEsR0FBRyxTQUFPLEdBQUcsR0FBRztBQUFBLHNCQUFJLENBQUMsR0FBRTtBQUFDLDRCQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRyxNQUFLLEtBQUcsR0FBRyxPQUFNLEtBQUcsR0FBRztBQUFPLDZCQUFHLEVBQUMsTUFBSyxJQUFHLE9BQU0sSUFBRyxRQUFPLElBQUcsTUFBSyxHQUFHLE1BQUssVUFBUyxHQUFHLFVBQVMsYUFBWSxJQUFHLG9CQUFtQixHQUFFO0FBQUEsc0JBQUM7QUFBTSw2QkFBRyxFQUFFLHdDQUF3QyxHQUFFLElBQUcsRUFBRTtBQUFFLHlCQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsR0FBRyxJQUFJLEVBQUU7QUFBQSxvQkFBQztBQUFBLDJCQUFTO0FBQUcsdUJBQUcsSUFBSSxHQUFHLEdBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsMkJBQVU7QUFBRyx1QkFBRyxJQUFHLEVBQUUsZUFBYyxNQUFHLENBQUM7QUFBQSx1QkFBTTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxPQUFPLEdBQUUsU0FBUyxJQUFHO0FBQUMsNkJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSxvQkFBQyxDQUFDO0FBQUUsdUJBQUcsV0FBUyxJQUFFLEdBQUcsSUFBSSxHQUFHLEdBQUUsR0FBRSxFQUFFLENBQUMsSUFBRSxJQUFFLEtBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRSxDQUFDLENBQUMsSUFBRSxHQUFHLElBQUksR0FBRyxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQyx1QkFBTyxHQUFHLEdBQUUsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUM7QUFBRSx5QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHNCQUFJLElBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxPQUFLLE1BQUksS0FBRyxHQUFHLGlCQUFlLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxZQUFVLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxpQkFBZSxFQUFFLFlBQVcsS0FBRyxHQUFHLFNBQU8sR0FBRSxLQUFHLEtBQUcsRUFBRSxLQUFLLElBQUcsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSwwQkFBMEIsRUFBRSxLQUFHLEVBQUUsY0FBYyxHQUFHLElBQUk7QUFBQSxrQkFBQyxDQUFDLElBQUU7QUFBTyxzQkFBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRztBQUFlLHVCQUFHLENBQUMsRUFBRSxHQUFFLElBQUcsRUFBRSxLQUFHLEVBQUUsZUFBZSxJQUFHLEVBQUUsd0JBQXdCLElBQUcsRUFBRSxZQUFZLCtIQUErSCxDQUFDO0FBQUEsa0JBQUM7QUFBQyx1QkFBRyxJQUFHLEtBQUcsSUFBRyxLQUFHO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxzQkFBRyxPQUFLLFdBQVMsS0FBRyxRQUFJLEtBQUcsUUFBTyxLQUFHLFFBQU8sS0FBRyxRQUFPLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUc7QUFBRyx3QkFBRyxFQUFFLEtBQUssRUFBRSxLQUFHLENBQUMsR0FBRyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUU7QUFBTyx3QkFBRyxHQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxPQUFHLE1BQU0sR0FBRTtBQUFDLDJCQUFHLENBQUMsRUFBRTtBQUFFO0FBQUEsb0JBQU07QUFBQywyQkFBTztBQUFBLGtCQUFFO0FBQUMsMkJBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyx3QkFBSSxLQUFHLEdBQUc7QUFBSSx3QkFBRyxFQUFFLENBQUMsR0FBRyxJQUFHLEVBQUUsS0FBRyxDQUFDLEdBQUcsR0FBRSxJQUFHLElBQUcsRUFBRSxJQUFHO0FBQUMsMEJBQUksS0FBRyxRQUFPLEtBQUc7QUFBTywwQkFBRyxHQUFHLGdCQUFlO0FBQUMsNEJBQUksS0FBRztBQUFPLDRCQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUU7QUFBQyw4QkFBRyxLQUFHLEdBQUcsSUFBRyxJQUFHLEtBQUUsR0FBRSxDQUFDLElBQUc7QUFBQyxpQ0FBRztBQUFHO0FBQUEsMEJBQVE7QUFBQSx3QkFBQztBQUFNLCtCQUFHLEdBQUcsR0FBRyxnQkFBZSxJQUFHLEVBQUUsV0FBVyxDQUFDLElBQUUsSUFBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsSUFBRyxJQUFHLEtBQUcsR0FBRSxFQUFFLEdBQUUsTUFBSSxHQUFHLFFBQU0sSUFBRSxJQUFFO0FBQUUsNEJBQUcsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFLFdBQVcsR0FBRyxXQUFXLEdBQUUsTUFBSSxHQUFHLHNCQUFzQixHQUFFLEdBQUcsRUFBRSxLQUFHLENBQUMsR0FBRyxHQUFFLElBQUcsSUFBRyxFQUFFLEdBQUU7QUFBQywrQkFBRztBQUFHO0FBQUEsd0JBQVE7QUFBQSxzQkFBQztBQUFNLDZCQUFHO0FBQUcsMEJBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsT0FBRyxNQUFNLEdBQUU7QUFBQyx5QkFBQyxPQUFLLEtBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRTtBQUFFO0FBQUEsc0JBQVE7QUFBQywwQkFBRyxJQUFHO0FBQUMsNEJBQUcsS0FBRyxJQUFFLElBQUcsSUFBRztBQUFDLDhCQUFJLEtBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSw4QkFBRyxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUUsV0FBVyxHQUFHLFdBQVcsR0FBRSxNQUFJLEdBQUcsc0JBQXNCLEdBQUUsR0FBRyxFQUFFLEtBQUcsQ0FBQyxHQUFHLEdBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRTtBQUFDLGlDQUFHO0FBQUc7QUFBQSwwQkFBUTtBQUFBLHdCQUFDO0FBQUMsNEJBQUcsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsT0FBRyxNQUFNLEdBQUU7QUFBQywyQkFBQyxPQUFLLEtBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRTtBQUFFO0FBQUEsd0JBQVE7QUFBQSxzQkFBQztBQUFDLDZCQUFPLEdBQUcsTUFBSSxJQUFHO0FBQUEsb0JBQUU7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxNQUFNLE9BQU8sRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxLQUFHLEVBQUUsV0FBUyxLQUFHLEVBQUUsS0FBSyxTQUFTLEdBQUU7QUFBQyx5QkFBTSxDQUFDLENBQUMsRUFBRTtBQUFBLGdCQUFjLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRSxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLFdBQVcsR0FBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxHQUFHO0FBQUEsZ0JBQWEsQ0FBQyxHQUFFO0FBQUUsa0JBQUUsV0FBUyxJQUFFLEdBQUcsR0FBRSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQUcseUJBQVEsSUFBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLEtBQUksSUFBRSxFQUFFLEtBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxTQUFTLElBQUc7QUFBQyxzQkFBSSxLQUFHLEVBQUUsV0FBVyxHQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEVBQUUsRUFBRSxJQUFFLEtBQUcsR0FBRyxXQUFXLFNBQU8sSUFBRSxHQUFHLFdBQVcsTUFBSSxFQUFFLEtBQUssR0FBRyxVQUFVLElBQUUsS0FBRyxHQUFHLFdBQVcsU0FBTyxHQUFHLFdBQVcsTUFBSTtBQUFBLGtCQUFNLENBQUM7QUFBRSxvQkFBRSxNQUFNLE9BQU8sR0FBRyxXQUFTLENBQUMsR0FBRSxFQUFFLEtBQUssR0FBRyxJQUFHLEVBQUUsV0FBVyxHQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxnQkFBQyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUU7QUFBSyxvQkFBRSxFQUFFO0FBQUUsb0JBQUksS0FBRyxFQUFFLFdBQVcsR0FBRSxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLEVBQUUsSUFBRSxFQUFFLEtBQUssR0FBRyxVQUFVLElBQUU7QUFBQSxnQkFBTSxDQUFDLEdBQUUsS0FBRztBQUFFLG9CQUFHLEdBQUcsV0FBUyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUcsRUFBRSxXQUFXLEdBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFFLEtBQUssR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLE1BQUk7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsS0FBSyxDQUFDLE1BQUksTUFBSSxJQUFHLEdBQUcsRUFBRSxHQUFHLGFBQVksUUFBTyxHQUFFLEdBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUUsUUFBTyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLFdBQVc7QUFBTyx1QkFBTyxFQUFFLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLE9BQUssU0FBTyxFQUFFLFNBQU8sRUFBRSxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFlLG9CQUFHLENBQUM7QUFBRSx5QkFBTztBQUFFLG9CQUFJLElBQUUsR0FBRyxDQUFDLElBQUUsRUFBRSxnQkFBYyxRQUFPLEtBQUcsSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSx1QkFBTyxFQUFFLEtBQUcsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxFQUFFLElBQUksRUFBRSxHQUFFLEVBQUUsU0FBTyxFQUFFO0FBQVEsb0JBQUUsSUFBSTtBQUFFLHVCQUFLLEVBQUUsU0FBTyxFQUFFO0FBQVEsb0JBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxPQUFPLEtBQUcsR0FBRyxFQUFFLEVBQUUsT0FBTyxLQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUUsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEVBQUUsV0FBVyxDQUFDLElBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLElBQUUsSUFBRSxHQUFFLENBQUM7QUFBRSx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsSUFBRyxJQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEdBQUcsQ0FBQztBQUFFLHNCQUFHLEdBQUcsQ0FBQyxLQUFHLEtBQUc7QUFBRSwyQkFBTztBQUFFLHNCQUFFLE1BQUksSUFBRSxHQUFFLElBQUU7QUFBQSxnQkFBRTtBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLFdBQVcsU0FBTyxLQUFJO0FBQUMsc0JBQUksSUFBRSxHQUFHLEVBQUUsVUFBVTtBQUFFLHNCQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsNkJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxXQUFVLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQywwQkFBSSxJQUFFLEVBQUU7QUFBRyx5QkFBRyxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTztBQUFBLGtCQUFFO0FBQUMsc0JBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSx5QkFBeUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQUUsd0JBQUcsR0FBRTtBQUFDLDBCQUFJLEtBQUcsR0FBRyxHQUFFLEVBQUUsZUFBYyxDQUFDO0FBQUUsNkJBQU8sR0FBRyxHQUFFLElBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUMseUJBQU8sR0FBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFHLEtBQUcsR0FBRyxFQUFFLFVBQVU7QUFBRSxvQkFBRyxFQUFFLFlBQVksQ0FBQyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxVQUFVO0FBQUUsdUJBQUcsT0FBSyxLQUFHLElBQUUsRUFBRSx5QkFBeUIsQ0FBQyxJQUFFLEtBQUcsR0FBRSxLQUFHO0FBQUEsZ0JBQUU7QUFBTSx1QkFBRztBQUFFLG9CQUFHLEtBQUcsR0FBRyxJQUFHLEVBQUUsWUFBVyxFQUFFLEdBQUUsT0FBSztBQUFHLHlCQUFPO0FBQUcsb0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxvQkFBRyxHQUFHLEVBQUU7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBRSxvQkFBSSxLQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsQ0FBQyxFQUFFO0FBQU8sb0JBQUcsR0FBRyxJQUFHLElBQUcsR0FBRyxRQUFPLEVBQUU7QUFBRSx5QkFBTSxDQUFDLEdBQUcsRUFBRSxLQUFHLEVBQUUsaUJBQWUsR0FBRyxHQUFFLEVBQUUsWUFBWSxvREFBb0QsR0FBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxDQUFDLEdBQUcsUUFBTztBQUFDLHNCQUFHO0FBQUcsdUJBQUcsR0FBRSxFQUFFLFlBQVksNkRBQTRELEdBQUcsRUFBRSxDQUFDO0FBQUEsdUJBQU07QUFBQyx3QkFBSSxLQUFHO0FBQU8sd0JBQUcsRUFBRSxVQUFVLFdBQVMsR0FBRTtBQUFDLDBCQUFJLEtBQUcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO0FBQUssd0JBQUUsWUFBWSxHQUFHLFdBQVcsRUFBRSxXQUFXLElBQUcsRUFBRSxXQUFXLEtBQUksSUFBRSxJQUFFLENBQUMsQ0FBQyxNQUFJLEtBQUcsRUFBRSx3QkFBd0IsRUFBRSxZQUFXLEVBQUUsWUFBWSwyQkFBMkI7QUFBQSxvQkFBRTtBQUFDLHVCQUFHLEVBQUUsWUFBVyxJQUFHLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUMseUJBQU8sR0FBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxJQUFFLEtBQUcsQ0FBQyxFQUFFLGlCQUFlLEdBQUcsS0FBSyxFQUFFLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxNQUFJLEdBQUcsS0FBSyxTQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLFdBQVcsR0FBRyxXQUFXLEtBQUcsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEdBQUcsV0FBVztBQUFBLGdCQUFDLENBQUMsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLDZEQUE0RCxHQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFNLENBQUMsRUFBRSxFQUFFLGtCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRSxFQUFFLFFBQU0sV0FBUyxDQUFDLEtBQUcsQ0FBQyxLQUFHLEVBQUUsRUFBRSxRQUFNLFlBQVUsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFNLFdBQVMsR0FBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsYUFBVyxLQUFHLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxTQUFTO0FBQUUsdUJBQUcsS0FBRyxHQUFHLEVBQUUsVUFBVSxJQUFHLEVBQUUsWUFBWSwyRkFBMkY7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsR0FBRyxFQUFFLFVBQVU7QUFBRSxvQkFBRyxNQUFJO0FBQUcseUJBQU87QUFBRyxvQkFBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQztBQUFFLG9CQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEVBQUUsaUJBQWUsR0FBRyxHQUFFLEVBQUUsWUFBWSxvREFBb0QsR0FBRSxHQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUcsRUFBRSxRQUFPO0FBQUMsc0JBQUcsQ0FBQyxHQUFHLEdBQUUsRUFBRSxFQUFFO0FBQUUsMkJBQU8sR0FBRyxDQUFDO0FBQUUsc0JBQUcsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLDJCQUFNLENBQUMsRUFBRSxHQUFHLFFBQU07QUFBQSxrQkFBRSxDQUFDO0FBQUUsMkJBQU8sR0FBRyxHQUFFLEVBQUUsWUFBWSw4Q0FBOEMsR0FBRSxHQUFHLENBQUM7QUFBRSxzQkFBSSxJQUFFLEVBQUUsVUFBUSxFQUFFLGdDQUFnQyxFQUFFLE1BQU07QUFBRSx5QkFBTyxLQUFHLEVBQUUscUJBQXFCLEdBQUUsR0FBRyxLQUFHLEdBQUcsR0FBRSxFQUFFLFlBQVksOENBQThDLEdBQUUsR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSxvQkFBRyxFQUFFLFFBQU87QUFBQyxzQkFBSSxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUseUJBQU8sTUFBSSxHQUFHLGVBQWEsQ0FBQyxHQUFHLEdBQUcsV0FBVyxLQUFHLEdBQUcsRUFBRSxNQUFJLE1BQUksR0FBRyxHQUFFLEVBQUUsWUFBWSx1REFBdUQsR0FBRSxHQUFHLEVBQUUsTUFBSSxNQUFJLEdBQUcsR0FBRSxFQUFFLFlBQVksbUZBQW1GLElBQUc7QUFBQSxnQkFBRTtBQUFDLHVCQUFPLEdBQUcsRUFBRSxZQUFXLEdBQUUsQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBUSxDQUFDLElBQUUsRUFBRSxLQUFLLEdBQUUsU0FBUyxHQUFFO0FBQUMseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSxnQkFBQyxDQUFDLElBQUUsRUFBRSxrQkFBZ0IsVUFBUSxFQUFFLEtBQUssRUFBRSxxQkFBb0IsQ0FBQyxJQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQztBQUFFLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxFQUFFO0FBQUcsb0JBQUcsRUFBRSxRQUFNLFNBQVE7QUFBQywyQkFBUSxJQUFFLEVBQUUsT0FBTSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsS0FBRyxFQUFFLE9BQU0sSUFBRSxHQUFHLFFBQU8sS0FBSTtBQUFDLHdCQUFJLEtBQUcsR0FBRztBQUFHLHdCQUFHLENBQUMsRUFBRSxNQUFJLEVBQUUsZUFBZSxFQUFFLElBQUUsTUFBSSxHQUFHLFdBQVMsS0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFHLDZCQUFNO0FBQUc7QUFBQSxrQkFBRztBQUFDLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTyxFQUFFLFdBQVMsSUFBRSxPQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRTtBQUFZLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxFQUFFLGFBQVksSUFBRSxFQUFFLGtDQUFrQyxHQUFFLEVBQUU7QUFBRSxvQkFBRyxDQUFDLEtBQUcsRUFBRSxTQUFPO0FBQUkseUJBQU07QUFBRyxvQkFBSSxJQUFFLEVBQUUsZ0NBQWdDLEVBQUUsT0FBTyxNQUFNLEdBQUUsSUFBRSxHQUFHLEVBQUUsT0FBTyxNQUFNO0FBQUUsb0JBQUcsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLG1CQUFtQixDQUFDO0FBQUUsc0JBQUcsS0FBRyxJQUFFLElBQUc7QUFBQyx3QkFBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLHdCQUFHLEdBQUcsRUFBRSxPQUFPLFFBQU8sQ0FBQztBQUFFLDZCQUFNO0FBQUEsa0JBQUU7QUFBQyx5QkFBTyxJQUFFLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSxvRkFBbUYsR0FBRyxDQUFDLENBQUMsR0FBRSxJQUFFLE1BQUksR0FBRyxHQUFFLEVBQUUsWUFBWSxzRkFBcUYsR0FBRyxDQUFDLENBQUMsR0FBRTtBQUFBLGdCQUFFO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEdBQUUsSUFBRSxNQUFJLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxTQUFPO0FBQUUsb0JBQUcsRUFBRSxRQUFNLFNBQVE7QUFBQywyQkFBUSxJQUFFLEVBQUUsT0FBTSxLQUFHLE9BQUcsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsd0JBQUksS0FBRyxHQUFHLEtBQUksS0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLHdCQUFHLEdBQUcsV0FBUyxHQUFFO0FBQUMsMEJBQUcsS0FBRyxNQUFHO0FBQUU7QUFBQSxvQkFBSyxXQUFTLE1BQUksSUFBRSxFQUFFLHdCQUF3QixHQUFFLElBQUUsRUFBRSxZQUFZLGdDQUE4QixFQUFFLFlBQVksb0NBQW1DLEdBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLHdCQUF3QixHQUFFLElBQUUsRUFBRSxZQUFZLDhDQUE0QyxFQUFFLFlBQVksa0RBQWlELEdBQUcsQ0FBQyxDQUFDLElBQUc7QUFBRztBQUFBLGtCQUFLO0FBQUMseUJBQUssSUFBRSxFQUFFLHdCQUF3QixRQUFPLElBQUUsRUFBRSxZQUFZLHVDQUFxQyxFQUFFLFlBQVksMkNBQTBDLEdBQUcsQ0FBQyxDQUFDLElBQUcsTUFBSSxJQUFFLEVBQUUsd0JBQXdCLEdBQUUsSUFBRSxFQUFFLFlBQVksNkdBQTJHLEVBQUUsWUFBWSxzSEFBcUgsR0FBRyxDQUFDLENBQUM7QUFBQSxnQkFBRTtBQUFNLHNCQUFFLEVBQUUsd0JBQXdCLEdBQUUsSUFBRSxFQUFFLFlBQVksZ0NBQThCLEVBQUUsWUFBWSxvQ0FBbUMsR0FBRyxDQUFDLENBQUM7QUFBRSxvQkFBSSxLQUFHLElBQUUsRUFBRSxZQUFZLGtDQUFnQyxFQUFFLFlBQVk7QUFBcUMsb0JBQUcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEtBQUcsRUFBRSxPQUFPLFVBQVUsV0FBUyxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLENBQUMsRUFBRTtBQUFlLHdCQUFJLEdBQUcsUUFBTSxVQUFRLEtBQUcsRUFBRSxZQUFZO0FBQUEsZ0JBQTRGO0FBQUMsdUJBQU0sRUFBQyxjQUFhLEVBQUUsd0JBQXdCLEdBQUUsRUFBRSxHQUFFLGdCQUFlLElBQUUsRUFBRSxZQUFZLDhCQUE0QixPQUFNO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxjQUFhLElBQUUsRUFBRSxnQkFBZSxJQUFFLEVBQUUsd0NBQXdDLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEtBQUcsRUFBRSxlQUFlLEdBQUUsRUFBRSx3QkFBd0IsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxFQUFFLFFBQU8sSUFBRSxHQUFFLEtBQUcsR0FBRyxPQUFNLEtBQUcsR0FBRztBQUFPLG9CQUFFLFFBQU0sSUFBRyxFQUFFLFNBQU87QUFBQSxnQkFBRTtBQUFDLG1CQUFHLElBQUksQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFFLElBQUUsRUFBRSxlQUFlLEdBQUUsQ0FBQyxJQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLENBQUMsQ0FBQyxFQUFFLFFBQU87QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7QUFBa0Isc0JBQUcsS0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRSxDQUFDO0FBQUUsd0JBQUcsQ0FBQyxLQUFHLENBQUMsRUFBRTtBQUFPO0FBQU8sc0JBQUUsZUFBZSxHQUFFLEVBQUUsd0JBQXdCLEdBQUUsRUFBRSxZQUFZLDBMQUEwTCxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUsb0JBQUcsR0FBRyxDQUFDO0FBQUUseUJBQU8sR0FBRyxDQUFDO0FBQUUsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsRUFBRTtBQUFPLG9CQUFHLEdBQUcsR0FBRSxHQUFFLEVBQUUsUUFBTyxDQUFDO0FBQUUseUJBQU8sR0FBRyxDQUFDO0FBQUUsb0JBQUcsQ0FBQyxFQUFFLFFBQU87QUFBQyxzQkFBRyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSx3QkFBd0IsRUFBRSxLQUFJLEVBQUUsWUFBWSxtSkFBbUo7QUFBRSwyQkFBTyxHQUFHLElBQUksQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFBLGtCQUFDO0FBQUMseUJBQU8sR0FBRyxFQUFFLEtBQUksR0FBRSxDQUFDLEdBQUUsR0FBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx3QkFBTyxFQUFFLE9BQU87QUFBQSx1QkFBVztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxZQUFZO0FBQUEsdUJBQWlGO0FBQUksMkJBQU8sRUFBRSxZQUFZO0FBQUEsdUJBQXFGO0FBQUksMkJBQU8sRUFBRSxZQUFZO0FBQUEsdUJBQW9GO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEVBQUUsWUFBWTtBQUFBO0FBQXFGLDJCQUFPLEVBQUUsTUFBTSxLQUFLO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxFQUFFLFVBQVUsR0FBRSxJQUFFLEdBQUcsQ0FBQztBQUFFLG9CQUFHLEdBQUcsQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQztBQUFFLG9CQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDLEVBQUU7QUFBTyxvQkFBRyxHQUFHLEdBQUUsR0FBRSxFQUFFLFFBQU8sQ0FBQztBQUFFLHlCQUFPLEdBQUcsQ0FBQztBQUFFLG9CQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVcsS0FBRTtBQUFFLHlCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksdUdBQXNHLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUcsQ0FBQyxFQUFFLFFBQU87QUFBQyxzQkFBSSxLQUFHLEdBQUcsRUFBRSxZQUFXLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSx3QkFBd0IsR0FBRyxjQUFhLEVBQUUsR0FBRSxLQUFHLEVBQUUsd0NBQXdDLEVBQUUsWUFBVyxFQUFFO0FBQUUseUJBQU8sR0FBRyxrQkFBZ0IsRUFBRSxlQUFlLElBQUcsRUFBRSx3QkFBd0IsRUFBRSxZQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEtBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFHLEdBQUcsR0FBRSxFQUFFLFNBQVEsTUFBTSxHQUFFLElBQUUsS0FBRyxHQUFHLG1CQUFtQixHQUFFLFFBQU8sQ0FBQyxHQUFFLElBQUUsRUFBRSxRQUFRLHVCQUF1QixRQUFPLENBQUMsRUFBRSxRQUFRLDJCQUEyQixRQUFPLFFBQU8sUUFBTyxTQUFRLFFBQU8sR0FBRyxlQUFlLEdBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxJQUFFLEVBQUUsUUFBUSx3QkFBd0IsR0FBRSxNQUFNLElBQUUsRUFBRSxRQUFRLHNCQUFzQixHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxPQUFPO0FBQUUsdUJBQU8sRUFBRSxPQUFLLEdBQUUsR0FBRyxHQUFFLFFBQU8sUUFBTyxDQUFDLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUcsUUFBTyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsRUFBRSxZQUFXLEdBQUcsR0FBRSxDQUFDLEdBQUUsUUFBTyxDQUFDLEdBQUUsR0FBRSxFQUFFLFNBQVEsRUFBRSxVQUFVLEdBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxNQUFJLEVBQUUsUUFBUSxFQUFFLGVBQWMsRUFBRSxHQUFFLEdBQUcsSUFBSSxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixDQUFDLEdBQUUsRUFBRSxlQUFjLEVBQUUsWUFBWSxxQ0FBb0MsR0FBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLEdBQUcsRUFBRSxPQUFPLEdBQUUsSUFBRSxHQUFHLENBQUM7QUFBRSxvQkFBRyxHQUFHLENBQUM7QUFBRSx5QkFBTyxHQUFHLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsdUJBQU8sR0FBRyxHQUFFLEdBQUUsRUFBRSxRQUFPLENBQUMsSUFBRSxHQUFHLENBQUMsSUFBRSxFQUFFLFdBQVMsS0FBRyxHQUFHLEVBQUUsU0FBUSxFQUFFLFlBQVksbUVBQWtFLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxVQUFRLEVBQUUsTUFBTSxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUscUJBQW1CLEtBQUcsQ0FBQyxFQUFFLENBQUMsS0FBRyxFQUFFLFdBQVcsU0FBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLGdCQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFJLDJCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBO0FBQUUsc0JBQU0sRUFBRSxNQUFNLFlBQVksR0FBRSxxREFBcUQ7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFO0FBQWtCLG9CQUFHLEtBQUcsTUFBSSxNQUFJLENBQUM7QUFBRSx5QkFBTztBQUFFLGtCQUFFLG9CQUFrQjtBQUFHLG9CQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBRyxDQUFDO0FBQUUsdUJBQU8sTUFBSSxPQUFLLEVBQUUsb0JBQWtCLE9BQUssS0FBRyxJQUFF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LElBQUUsR0FBRyxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxDQUFDLEtBQUdBLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTQSxJQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsUUFBTTtBQUFFLHlCQUFNO0FBQUcsb0JBQUcsRUFBRSxRQUFNO0FBQVEsMkJBQVEsSUFBRSxFQUFFLE9BQU0sSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsd0JBQUksSUFBRSxFQUFFO0FBQUcsd0JBQUdBLElBQUcsR0FBRSxDQUFDO0FBQUUsNkJBQU07QUFBQSxrQkFBRTtBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFFBQU0sSUFBRSxPQUFHLEtBQUcsRUFBRSxRQUFNLFNBQU8sUUFBRyxDQUFDLEVBQUUsSUFBRSxRQUFNLEdBQUcsR0FBRSxFQUFFLEtBQUcsQ0FBQyxFQUFFLElBQUUsU0FBTyxHQUFHLEdBQUUsRUFBRSxLQUFHLENBQUMsRUFBRSxJQUFFLGNBQVksR0FBRyxHQUFFLEVBQUUsS0FBRyxDQUFDLEVBQUUsSUFBRSxRQUFNLEdBQUcsR0FBRSxFQUFFLEtBQUcsQ0FBQyxFQUFFLElBQUUsVUFBUSxHQUFHLEdBQUUsRUFBRSxLQUFHLENBQUMsRUFBRSxJQUFFLFdBQVMsR0FBRyxHQUFFLEVBQUUsS0FBRyxDQUFDLEVBQUUsSUFBRSxVQUFRLEdBQUcsR0FBRSxFQUFFLEtBQUcsQ0FBQyxFQUFFLElBQUUsVUFBUSxHQUFHLEdBQUUsRUFBRSxLQUFHLENBQUMsRUFBRSxJQUFFLFNBQU8sR0FBRyxHQUFFLEVBQUUsS0FBRyxDQUFDLEVBQUUsSUFBRSxhQUFXLEdBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFFBQU0sVUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFNLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQyxDQUFDLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsSUFBRSxPQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVEsR0FBRyxFQUFFLE1BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsd0JBQU8sRUFBRSxRQUFNLFNBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sTUFBSSxNQUFJLE1BQUksS0FBRyxNQUFJLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLE1BQU0sS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLHFHQUFxRyxHQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxLQUFHLEdBQUcsR0FBRSxFQUFFLEtBQUcsR0FBRyxHQUFFLEVBQUUsWUFBWSwwSEFBMEgsR0FBRTtBQUFBLGNBQUc7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxNQUFJLE1BQUksTUFBSTtBQUFHLHlCQUFPO0FBQUcsb0JBQUcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFFO0FBQUMsc0JBQUcsS0FBRyxNQUFJLEdBQUcsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxrQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxRQUFPLElBQUU7QUFBRSx1QkFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBTSxzQkFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxTQUFTLEtBQUcsR0FBRyxHQUFFLFNBQVMsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLDBHQUEwRztBQUFFLG9CQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBTyxDQUFDLEdBQUcsR0FBRSxTQUFTLEtBQUcsTUFBSSxHQUFHLEdBQUUsT0FBTyxLQUFHLENBQUMsR0FBRyxHQUFFLFNBQVMsS0FBRyxDQUFDQSxJQUFHLEdBQUUsU0FBUyxPQUFLLEdBQUcsR0FBRSxFQUFFLFlBQVksK0RBQStELEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFXLG9CQUFHLE1BQUksRUFBRSxXQUFTO0FBQUUseUJBQU8sR0FBRyxHQUFFLENBQUM7QUFBRSx5QkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBSSxxQkFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSx1QkFBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFJLFdBQVMsSUFBRTtBQUFJLG9CQUFJLElBQUUsRUFBRSxZQUFXLElBQUUsRUFBRTtBQUFHLG9CQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTyxLQUFJO0FBQUMsc0JBQUksSUFBRSxFQUFFLE1BQUssS0FBRyxHQUFHLENBQUM7QUFBRSxzQkFBRyxHQUFHLEVBQUUsR0FBRTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLDJCQUFLLEdBQUcsSUFBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsT0FBRyxNQUFHLEdBQUUsRUFBRTtBQUFBLGtCQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLEdBQUUsSUFBRyxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxFQUFFO0FBQUUseUJBQU8sR0FBRyxFQUFFLFNBQU8sTUFBSSxJQUFFLEVBQUUsYUFBWSxFQUFFO0FBQUEsZ0JBQUMsV0FBUyxFQUFFLFNBQU87QUFBSSxzQkFBRyxJQUFFLEVBQUUsU0FBTztBQUFFLHVCQUFHLEdBQUUsRUFBRSxZQUFZLHNEQUFzRDtBQUFBLHVCQUFNO0FBQUMseUJBQUcsTUFBSSxHQUFHLEdBQUUsQ0FBQztBQUFFLHdCQUFJLEtBQUcsQ0FBQztBQUFFLHdCQUFHO0FBQUUsK0JBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsNEJBQUksS0FBRyxHQUFHO0FBQUksMEJBQUUsbUJBQW1CLEVBQUUsS0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJO0FBQUEsc0JBQUM7QUFBQyx3QkFBSSxLQUFHLEdBQUcsR0FBRSxJQUFHLEVBQUUsTUFBTTtBQUFFLDJCQUFPLEdBQUcsR0FBRSxFQUFFLFlBQVksaUVBQWlFLEdBQUUsR0FBRyxFQUFFLFlBQVcsRUFBRTtBQUFBLGtCQUFDO0FBQUE7QUFBTSxxQkFBRyxHQUFFLEVBQUUsWUFBWSw0QkFBNEI7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFTLHFCQUFHLEtBQUcsR0FBRyxzQkFBb0IsR0FBRyxHQUFFLEdBQUc7QUFBRSx5QkFBUSxJQUFFLEdBQUcsS0FBSSxHQUFFLElBQUcsQ0FBQyxLQUFHLElBQUcsSUFBRSxHQUFHLDJCQUF5QixTQUFPLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFO0FBQUUsb0JBQUUsU0FBUyxHQUFHLFNBQU8sUUFBTSxJQUFFLElBQUUsS0FBRyxPQUFLLElBQUUsR0FBRyxJQUFHLEdBQUUsSUFBRyxDQUFDLEtBQUcsS0FBSSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsVUFBUyxJQUFFLEVBQUU7QUFBRyxvQkFBRyxFQUFFLFNBQU8sS0FBSTtBQUFDLHNCQUFHLEVBQUUsU0FBTyxLQUFJO0FBQUMsd0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx3QkFBRyxHQUFHLENBQUMsR0FBRTtBQUFDLDBCQUFJLEtBQUcsTUFBSSxHQUFHLENBQUMsSUFBRSxLQUFHLElBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUcsR0FBRSxDQUFDLENBQUMsS0FBRyxJQUFHLEtBQUcsR0FBRyxDQUFDLElBQUUsR0FBRyxJQUFHLE1BQU0sSUFBRSxJQUFHLEtBQUcsR0FBRyxHQUFFLEVBQUU7QUFBRSw2QkFBTyxHQUFHLEdBQUUsSUFBRyxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQyxzQkFBRyxJQUFFLEVBQUUsU0FBTztBQUFFLHVCQUFHLEdBQUUsRUFBRSxZQUFZLHNEQUFzRDtBQUFBLHVCQUFNO0FBQUMsd0JBQUksS0FBRyxFQUFFO0FBQVcsd0JBQUcsR0FBRyxTQUFPLE9BQUssR0FBRyxjQUFjLFNBQU87QUFBRyx5QkFBRyxHQUFHLGVBQWMsRUFBRSxZQUFZLHlDQUF5QztBQUFBLHlCQUFNO0FBQUMseUJBQUcsRUFBRSxVQUFTLEVBQUUsWUFBWSxpRUFBaUU7QUFBRSwwQkFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLElBQUUsR0FBRyxHQUFFLFNBQVMsSUFBRztBQUFDLCtCQUFPLEdBQUcsSUFBRyxDQUFDO0FBQUEsc0JBQUMsQ0FBQyxJQUFFLEdBQUcsQ0FBQztBQUFFLDZCQUFPLEdBQUcsSUFBRyxJQUFHLENBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUk7QUFBRSxvQkFBRyxFQUFFLFNBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUU7QUFBRSxvQkFBRSxnQ0FBOEIsTUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLDJCQUEyQixDQUFDLElBQUUsV0FBUyxJQUFFLEdBQUcsR0FBRSxNQUFNLElBQUcsR0FBRyxFQUFFLE1BQUssRUFBRSxhQUFZLEVBQUUsNkJBQTRCLENBQUMsSUFBRyxJQUFFLEVBQUU7QUFBQSxnQkFBSTtBQUFNLHNCQUFFO0FBQUUsdUJBQU8sRUFBRSxTQUFPLE9BQUssRUFBRSxjQUFjLFNBQU8sT0FBSyxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFNLEVBQUUsU0FBTyxNQUFJLEdBQUcsR0FBRSxHQUFFLENBQUMsSUFBRSxFQUFFLFNBQU8sTUFBSSxHQUFHLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLFNBQU8sTUFBSSxFQUFFLFlBQVksa0ZBQWdGLEVBQUUsWUFBWSx3RkFBdUYsSUFBRSxFQUFFLE9BQU8sU0FBTyxNQUFJLEVBQUUsWUFBWSxpRkFBK0UsRUFBRSxZQUFZO0FBQXNGLHVCQUFPLEdBQUcsR0FBRSxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLDRDQUE0QyxDQUFDLEtBQUcsR0FBRyxFQUFFLFFBQU8sT0FBTyxHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHdCQUFPLElBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFFLEVBQUU7QUFBQSx1QkFBVztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUTtBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFRO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTTtBQUFBLHVCQUFRO0FBQUksMkJBQU8sR0FBRyxFQUFFLFFBQVEsS0FBRyxHQUFHLEVBQUUsU0FBUztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLElBQUksSUFBRSxRQUFHLEdBQUcsRUFBRSxJQUFJLEtBQUcsR0FBRyxFQUFFLEtBQUs7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksNEJBQU8sRUFBRTtBQUFBLDJCQUFlO0FBQUEsMkJBQVE7QUFBQSwyQkFBUTtBQUFBLDJCQUFRO0FBQUcsK0JBQU07QUFBQTtBQUFHLDJCQUFNO0FBQUEsdUJBQVE7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUE7QUFBWSwyQkFBTTtBQUFBO0FBQUEsY0FBRztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsd0JBQU8sRUFBRSxRQUFNLFdBQVMsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsb0JBQUksSUFBRSxFQUFFLGlDQUFpQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLHVCQUFPLFNBQVMsSUFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxFQUFFLElBQUcsRUFBRTtBQUFFLHlCQUFPLEVBQUUsTUFBTSxnQkFBZ0IsRUFBRSxHQUFFO0FBQUEsZ0JBQUU7QUFBRSx5QkFBUyxFQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUcsTUFBSSxHQUFHLGNBQWEsR0FBRyxPQUFLLE9BQUcsR0FBRyxJQUFHLE1BQU0sR0FBRSxHQUFHLElBQUcsTUFBTSxLQUFHLEtBQUcsRUFBQyxXQUFVLElBQUcsTUFBSyxPQUFHLFlBQVcsR0FBRSxXQUFVLENBQUMsUUFBTyxNQUFNLEVBQUMsR0FBRSxFQUFFLFdBQVcsRUFBRSxLQUFHLEVBQUUsOEJBQThCLEVBQUU7QUFBRSwyQkFBTyxHQUFHLE9BQUssTUFBRyxHQUFHLElBQUcsR0FBRyxHQUFHLE9BQU0sRUFBRSxDQUFDLEdBQUU7QUFBRyxxQkFBRyxFQUFFO0FBQUUsc0JBQUksS0FBRyxHQUFHLGNBQWM7QUFBSyx5QkFBTyxPQUFLLE9BQUssR0FBRyxLQUFLLFNBQU8sT0FBSyxHQUFHLEtBQUssU0FBTyxTQUFPLEdBQUcsT0FBSyxNQUFHLEdBQUcsSUFBRyxHQUFHLEdBQUcsTUFBSyxHQUFHLEdBQUcsT0FBTSxFQUFFLEdBQUUsSUFBRyxHQUFHLE1BQU0sU0FBTyxHQUFHLENBQUMsSUFBRztBQUFBLGdCQUFFO0FBQUMseUJBQVMsRUFBRSxJQUFHLElBQUcsSUFBRztBQUFDLHNCQUFHLENBQUMsR0FBRztBQUFLLDJCQUFPLEVBQUUsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUcsQ0FBQyxHQUFHLE1BQUs7QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHNCQUFFLE1BQU0sZ0JBQWdCLEVBQUUsR0FBRSxHQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRyxNQUFNO0FBQUUsd0JBQUksS0FBRyxHQUFHO0FBQUssd0JBQUcsT0FBSyxNQUFJLE9BQUssTUFBSSxPQUFLLElBQUc7QUFBQywwQkFBRyxPQUFLLElBQUc7QUFBQyw0QkFBSSxLQUFHLEVBQUUsK0JBQStCLEdBQUcsTUFBTTtBQUFFLDJCQUFHLEdBQUcsTUFBSyxFQUFFLGNBQWMsRUFBRSxJQUFFLEdBQUcsZ0JBQWMsTUFBTTtBQUFBLHNCQUFDO0FBQUMseUJBQUcsSUFBRyxHQUFHLElBQUk7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUcsQ0FBQyxHQUFHO0FBQUssMkJBQU8sRUFBRSxJQUFHLEVBQUU7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMsc0JBQUk7QUFBRyxzQkFBRyxHQUFHO0FBQUsseUJBQUcsR0FBRyxFQUFFO0FBQUEsdUJBQU07QUFBQyx3QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHNCQUFFLE1BQU0sZ0JBQWdCLEVBQUU7QUFBRSx3QkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHNCQUFFLE1BQU0sZ0JBQWdCLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRyxNQUFLLEdBQUcsZUFBYyxHQUFHLE9BQU0sSUFBRyxJQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFDLHlCQUFPLEdBQUcsT0FBSyxPQUFHLEdBQUcsSUFBRyxNQUFNLEdBQUUsR0FBRyxJQUFHLE1BQU0sR0FBRSxHQUFHLGNBQWE7QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEVBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyx5QkFBTyxHQUFHLElBQUcsRUFBRSxHQUFFO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxFQUFFLElBQUcsSUFBRztBQUFDLHNCQUFHLEVBQUUsbUJBQW1CLEVBQUU7QUFBRSwyQkFBTztBQUFHLHFCQUFHLElBQUcsR0FBRyxJQUFHLEdBQUcsU0FBUyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBTyxHQUFHLFVBQVUsR0FBRztBQUFBLGdCQUFXO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBRyxVQUFVLEdBQUcsY0FBWTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHO0FBQUMseUJBQU8sR0FBRyxVQUFVLEdBQUcsYUFBVztBQUFBLGdCQUFFO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBRyxVQUFVLEdBQUcsYUFBVyxLQUFHO0FBQUEsZ0JBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLE1BQUssSUFBRSxFQUFFLGVBQWMsSUFBRSxFQUFFO0FBQU0sa0JBQUUsU0FBTyxPQUFLLEVBQUUsbUJBQW1CLENBQUMsTUFBSSxFQUFFLGNBQWMsU0FBTyxNQUFJLEVBQUUsY0FBYyxTQUFPLE9BQUssR0FBRyxHQUFFLEVBQUUsWUFBWSx5REFBd0QsRUFBRSxjQUFjLEVBQUUsY0FBYyxJQUFJLEdBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUUsRUFBRSxtQkFBbUIsQ0FBQyxNQUFJLEVBQUUsY0FBYyxTQUFPLE1BQUksRUFBRSxjQUFjLFNBQU8sT0FBSyxHQUFHLEdBQUUsRUFBRSxZQUFZLHlEQUF3RCxFQUFFLGNBQWMsRUFBRSxjQUFjLElBQUksR0FBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUM7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBSyxvQkFBRyxNQUFJLE9BQUssRUFBRSxTQUFPLE9BQUssRUFBRSxTQUFPO0FBQUsseUJBQU8sR0FBRyxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFLFNBQU8sR0FBRztBQUFFLG9CQUFJO0FBQUUsc0JBQUksTUFBSSxNQUFJLE1BQUksTUFBSSxLQUFHLElBQUUsR0FBRyxHQUFFLENBQUMsSUFBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsb0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFLLHdCQUFPO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBRyx3QkFBRyxNQUFJLE1BQUksTUFBSTtBQUFHLDZCQUFPO0FBQUcsd0JBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUUsd0JBQUksSUFBRTtBQUFPLHdCQUFHLEVBQUUsUUFBTSxPQUFLLEVBQUUsUUFBTSxRQUFNLElBQUUsR0FBRyxFQUFFLElBQUksT0FBSztBQUFPLDZCQUFPLEdBQUcsS0FBRyxHQUFFLEVBQUUsWUFBWSwwRUFBeUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxHQUFFLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRTtBQUFHLHdCQUFJLEtBQUcsR0FBRyxHQUFFLEdBQUUsRUFBRSxZQUFZLGlHQUFnRyxJQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRSxFQUFFLFlBQVksa0dBQWlHLElBQUUsR0FBRTtBQUFHLHdCQUFHLEdBQUcsR0FBRSxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsS0FBRyxFQUFFQSxJQUFHLEdBQUUsSUFBSSxLQUFHQSxJQUFHLEdBQUUsSUFBSTtBQUFHLDJCQUFHO0FBQUEsNkJBQVcsR0FBRyxHQUFFLENBQUMsR0FBRTtBQUFDLDhCQUFPO0FBQUEsNkJBQVE7QUFBQSw2QkFBUTtBQUFHLDZCQUFHO0FBQUU7QUFBQSw2QkFBVztBQUFBLDZCQUFRO0FBQUcsK0JBQUcsS0FBRyxHQUFHLEdBQUUsRUFBRSxZQUFZLHNHQUFzRztBQUFBO0FBQUUsMkJBQUc7QUFBQSxvQkFBRTtBQUFNLHlCQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUcsMkJBQU8sTUFBSSxNQUFJLEdBQUcsRUFBRSxHQUFFO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFHLHdCQUFHLE1BQUksTUFBSSxNQUFJO0FBQUcsNkJBQU87QUFBRyxxQkFBQyxHQUFHLEdBQUUsU0FBUyxLQUFHLENBQUMsR0FBRyxHQUFFLFNBQVMsTUFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFHLHdCQUFJLEtBQUc7QUFBTyx3QkFBRyxHQUFHLEdBQUUsS0FBSSxJQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUksSUFBRSxJQUFFLEtBQUcsS0FBRyxHQUFHLEdBQUUsTUFBSyxJQUFFLEtBQUcsR0FBRyxHQUFFLE1BQUssSUFBRSxJQUFFLEtBQUcsS0FBRyxHQUFHLEdBQUUsV0FBVSxJQUFFLEtBQUcsR0FBRyxHQUFFLFdBQVUsSUFBRSxJQUFFLEtBQUcsTUFBSSxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsT0FBSyxLQUFHLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxJQUFFLEtBQUcsS0FBSSxNQUFJLENBQUMsR0FBRyxDQUFDO0FBQUUsNkJBQU87QUFBRyx3QkFBRyxDQUFDLElBQUc7QUFBQywwQkFBSSxLQUFHO0FBQVUsNkJBQU8sR0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLCtCQUFPLEdBQUcsSUFBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBQSxzQkFBQyxDQUFDLEdBQUU7QUFBQSxvQkFBRTtBQUFDLDJCQUFPLE1BQUksTUFBSSxHQUFHLEVBQUUsR0FBRTtBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUcsMkJBQU8sR0FBRyxDQUFDLE1BQUksSUFBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRyxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyw2QkFBTyxHQUFHLElBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFBLG9CQUFDLENBQUMsSUFBRztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUcsMkJBQU8sR0FBRyxTQUFTLElBQUcsSUFBRztBQUFDLDZCQUFPLEdBQUcsSUFBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBQSxvQkFBQyxDQUFDLEdBQUU7QUFBQSx1QkFBUTtBQUFJLDJCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUSxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLENBQUMsSUFBRSxVQUFRLEdBQUcsQ0FBQyxHQUFHLEtB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RyxFQUFFLElBQUksQ0FBQztBQUFBLHVCQUFPO0FBQUUsMkJBQU8sR0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUM7QUFBQSx1QkFBTztBQUFFLDJCQUFPLEdBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRyxFQUFDLFVBQVMsT0FBRyxhQUFZLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBSSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksd0JBQUcsRUFBRSxXQUFXLFNBQU87QUFBSSw2QkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTztBQUFBLHVCQUFRO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLHNCQUFFLE1BQU0sS0FBSyxtREFBbUQ7QUFBQTtBQUFFLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLENBQUMsR0FBRSxFQUFFLGNBQVksR0FBRyxFQUFFLFlBQVcsRUFBRSxZQUFZLGFBQWEsR0FBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLEdBQUcsRUFBRSxPQUFPO0FBQUUsb0JBQUksSUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUUsbUJBQUcsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxLQUFHLEdBQUcsRUFBRSxTQUFRLEVBQUUsWUFBWSx5Q0FBd0MsR0FBRyxDQUFDLENBQUM7QUFBRSxvQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDO0FBQUUscUJBQUcsS0FBRyxHQUFH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LHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsRUFBRSxJQUFJO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLHVCQUFHLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksdUJBQUcsQ0FBQyxHQUFFLEVBQUUsYUFBYSxHQUFFLEVBQUU7QUFBRTtBQUFBLHVCQUFZO0FBQUksdUJBQUcsQ0FBQztBQUFFO0FBQUEsdUJBQVk7QUFBSSwyQkFBTyxHQUFHLEVBQUUsSUFBSTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJB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QUFJLDJCQUFPLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRSxFQUFFLDJCQUEyQixHQUFFLEVBQUUsRUFBRSxZQUFXLEdBQUUsRUFBRSxZQUFZLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRSxFQUFFLCtCQUErQixHQUFFLEVBQUUsRUFBRSxXQUFVLEdBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxFQUFFLE1BQUssR0FBRSxFQUFFLFlBQVksR0FBRSxFQUFFLEVBQUUsWUFBVyxHQUFFLEVBQUUsVUFBVSxHQUFFLEVBQUUsRUFBRSxTQUFRLEdBQUUsRUFBRSxVQUFVLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRSxFQUFFLDJCQUEyQixHQUFFLEVBQUUsRUFBRSxZQUFXLEdBQUUsRUFBRSxXQUFXLEdBQUUsRUFBRSxFQUFFLFdBQVUsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLEVBQUUsZ0JBQWUsSUFBRyxFQUFFLGdCQUFnQixHQUFFLEVBQUUsRUFBRSxNQUFLLEdBQUUsRUFBRSxhQUFhLEdBQUUsRUFBRSxFQUFFLGVBQWMsSUFBRyxFQUFFLGVBQWUsR0FBRSxFQUFFLEVBQUUsTUFBSyxHQUFFLEVBQUUsVUFBVSxHQUFFLEVBQUUsRUFBRSxhQUFZLEdBQUUsRUFBRSxZQUFZLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRSxFQUFFLGdCQUFnQixHQUFFLEVBQUUsRUFBRSxZQUFXLEdBQUUsRUFBRSxZQUFZLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRSxFQUFFLHdCQUF3QixHQUFFLEVBQUUsRUFBRSxXQUFVLEdBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxFQUFFLE1BQUssR0FBRSxFQUFFLGNBQWMsR0FBRSxFQUFFLEVBQUUsZUFBYyxJQUFHLEVBQUUsT0FBTyxHQUFFLEVBQUUsRUFBRSxNQUFLLEdBQUUsRUFBRSxVQUFV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LEVBQUUsRUFBRSxTQUFRLEdBQUUsRUFBRSxhQUFhLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBRSxFQUFFLDJCQUEyQixHQUFFLEVBQUUsRUFBRSxZQUFXLEdBQUUsRUFBRSxXQUFXLEdBQUUsRUFBRSxFQUFFLFdBQVUsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLEVBQUUsTUFBSyxHQUFFLEVBQUUsWUFBWSxHQUFFLEVBQUUsRUFBRSxnQkFBZSxHQUFFLEVBQUUsMEJBQTBCLEdBQUUsRUFBRSxFQUFFLE1BQUssR0FBRSxFQUFFLFVBQVUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUFFLEVBQUUsc0JBQXNCLEdBQUUsRUFBRSxFQUFFLFlBQVcsR0FBRSxFQUFFLFdBQVcsR0FBRSxFQUFFLEVBQUUsV0FBVSxHQUFFLEVBQUUsVUFBVSxHQUFFLEVBQUUsRUFBRSxNQUFLLEdBQUUsRUFBRSxZQUFZLEdBQUUsRUFBRSxFQUFFLFNBQVEsR0FBRSxFQUFFLFlBQVksQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUFFLEVBQUUsd0JBQXdCLEdBQUUsRUFBRSxFQUFFLFlBQVcsR0FBRSxFQUFFLFdBQVcsR0FBRSxFQUFFLEVBQUUsV0FBVSxHQUFFLEVBQUUsVUFBVSxHQUFFLEVBQUUsRUFBRSxNQUFLLEdBQUUsRUFBRSxZQUFZLEdBQUUsRUFBRSxFQUFFLE1BQUssR0FBRSxFQUFFLFlBQVksQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUFFLEVBQUUsa0JBQWtCLEdBQUUsRUFBRSxFQUFFLFlBQVcsR0FBRSxFQUFFLFdBQVcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxNQUFNLEtBQUssQ0FBQyxHQUFFLEVBQUUsZ0JBQWdCLEdBQUUsRUFBRSxFQUFFLFNBQVEsR0FBRSxFQUFFLHFCQUFxQixDQUFDO0FBQUEsdUJBQU87QUFB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QUFFLEtBQUcsRUFBRSxTQUFPO0FBQUkseUJBQU87QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUcsRUFBRSxZQUFZLENBQUMsS0FBRyxFQUFFLHFCQUFxQixHQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLDBCQUEwQixDQUFDO0FBQUUsd0JBQU8sRUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQVE7QUFBRywyQkFBTyxJQUFFLFNBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUTtBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFJO0FBQUEsdUJBQVk7QUFBSSwyQkFBTyxFQUFFLDBCQUEwQixDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJO0FBQUEsdUJBQVk7QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsMEJBQTBCLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7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QUFHO0FBQUMsdUJBQU8sRUFBRSxJQUFHLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsb0JBQUcsR0FBRyxTQUFPO0FBQUkseUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUcsRUFBRSxJQUFHLEVBQUUsR0FBRTtBQUFDLHNCQUFJLEtBQUcsRUFBRSxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLHlCQUFPLEVBQUUsRUFBRSxHQUFFO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTyxHQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRyxJQUFHO0FBQUMscUJBQUksR0FBRyxpQkFBZSxTQUFPO0FBQUUseUJBQU87QUFBRyx3QkFBTyxHQUFHO0FBQUEsdUJBQVc7QUFBSSwyQkFBTyxFQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLElBQUcsTUFBTTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsSUFBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLElBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsSUFBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxJQUFHLElBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLElBQUcsSUFBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsSUFBRyxJQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLE1BQUksRUFBRSwyQkFBMkIsRUFBRSxLQUFHLEdBQUcsV0FBVyxTQUFPLE9BQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxXQUFXLEdBQUUsRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxNQUFJLEdBQUcsV0FBVyxTQUFPLFFBQU0sS0FBRyxPQUFJLEVBQUUsZUFBZSxJQUFHLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRyxHQUFFLENBQUM7QUFBQTtBQUFVLDJCQUFPLEVBQUUsZUFBZSxJQUFHLEdBQUUsQ0FBQztBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEtBQUcsS0FBRyxLQUFHLElBQUUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLFFBQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsR0FBRyxZQUFXLEdBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLElBQUUsRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLG9CQUFHLEtBQUcsS0FBRyxLQUFHLEdBQUU7QUFBQyxzQkFBRyxHQUFHLGVBQWM7QUFBQyx3QkFBSSxLQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxHQUFHLFVBQVUsR0FBRSxHQUFFLEVBQUUsWUFBWTtBQUFFLDJCQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixRQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsSUFBRyxHQUFHLGVBQWMsRUFBRSxhQUFhLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxhQUFhLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRTtBQUFBLGtCQUFDO0FBQUMseUJBQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLFFBQU8sR0FBRyxHQUFHLGFBQVcsRUFBRSxVQUFVLEdBQUcsWUFBVyxHQUFFLEVBQUUsWUFBWSxJQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEtBQUcsS0FBRyxLQUFHLElBQUUsRUFBRSxzQkFBc0IsSUFBRyxHQUFHLEdBQUcsYUFBVyxFQUFFLFVBQVUsR0FBRyxZQUFXLEdBQUUsRUFBRSxZQUFZLElBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxJQUFFLEVBQUUsZUFBZSxJQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyxvQkFBRyxLQUFHLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEVBQUUsZ0NBQWdDLEVBQUU7QUFBRSx5QkFBTyxHQUFHLFNBQU8sT0FBSyxHQUFHLGdCQUFjLEdBQUcsSUFBRyxFQUFFLElBQUUsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLElBQUcsR0FBRSxFQUFFLGFBQVksRUFBRSxXQUFXLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHlCQUFRLElBQUcsS0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsc0JBQUksS0FBRyxHQUFHO0FBQUksc0JBQUcsR0FBRyxTQUFPLEtBQUk7QUFBQywyQkFBSyxHQUFHLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxDQUFDLEdBQUUsS0FBRztBQUFRLHdCQUFJLEtBQUcsR0FBRztBQUFXLHVCQUFHLEtBQUssRUFBRSxVQUFVLElBQUcsR0FBRSxFQUFFLFlBQVksQ0FBQztBQUFBLGtCQUFDO0FBQU0seUJBQUcsRUFBRSxPQUFPLElBQUcsR0FBRyxTQUFPLE1BQUksRUFBRSx5QkFBeUIsR0FBRyxNQUFLLEVBQUUsVUFBVSxHQUFHLGFBQVksR0FBRSxFQUFFLFlBQVksQ0FBQyxJQUFFLEVBQUUsVUFBVSxJQUFHLEdBQUUsRUFBRSwwQkFBMEIsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sTUFBSSxHQUFHLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxDQUFDLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsb0JBQUcsR0FBRyxpQkFBZSxPQUFNO0FBQUMsc0JBQUksS0FBRyxFQUFFLEdBQUcsVUFBVTtBQUFFLHFCQUFHLFVBQVEsR0FBRyxHQUFHLFNBQU8sT0FBSyxHQUFHLFFBQVEsRUFBRSw4QkFBOEIsQ0FBQztBQUFFLHNCQUFJLEtBQUcsR0FBRztBQUFHLHNCQUFHLEdBQUcsU0FBTyxHQUFFO0FBQUMsNkJBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPO0FBQUssMkJBQUcsRUFBRSxFQUFFLG1CQUFtQixDQUFDLElBQUcsR0FBRyxHQUFHLENBQUM7QUFBRSwyQkFBTztBQUFBLGtCQUFFO0FBQU0sMkJBQU8sRUFBRSxFQUFFLG1CQUFtQixFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLGVBQWUsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsdUJBQU8sRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxlQUFlLElBQUcsS0FBRyxJQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsR0FBRSxFQUFFLGdDQUFnQyxJQUFHLENBQUMsSUFBRSxJQUFFLENBQUM7QUFBRSxvQkFBRTtBQUFHLG9CQUFJLEtBQUcsRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLFlBQVksR0FBRyxZQUFXLEtBQUcsQ0FBQyxFQUFFLHdCQUF3QixRQUFPLEVBQUUsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsaUJBQWlCLElBQUcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRSxHQUFHLFVBQVUsQ0FBQztBQUFFLHVCQUFPLEVBQUUsRUFBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsZ0NBQWdDLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxFQUFFLGFBQWEsZUFBZTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsMEJBQTBCLEVBQUUsS0FBRyxHQUFHLEtBQUssaUJBQWUsUUFBTSxFQUFFLCtCQUErQixJQUFHLEdBQUUsR0FBRSxHQUFFLENBQUMsRUFBRSxJQUFFLEdBQUcsY0FBYyxTQUFPLEtBQUcsRUFBRSx1QkFBdUIsSUFBRyxFQUFFLFVBQVUsR0FBRyxNQUFLLEdBQUUsRUFBRSxZQUFZLEdBQUUsR0FBRyxlQUFjLEVBQUUsVUFBVSxHQUFHLE9BQU0sS0FBRyxJQUFFLEdBQUUsRUFBRSxZQUFZLENBQUMsSUFBRSxFQUFFLGVBQWUsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxvQkFBRztBQUFHLHlCQUFPLEVBQUUsZUFBZSxJQUFHLEdBQUUsQ0FBQztBQUFFLHlCQUFRLElBQUcsS0FBRyxHQUFFLEtBQUcsR0FBRyxTQUFTLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxTQUFTLEtBQUksS0FBRyxFQUFFLFVBQVUsSUFBRyxLQUFHLEdBQUcsU0FBUyxTQUFPLElBQUUsSUFBRSxHQUFFLEVBQUUsWUFBWTtBQUFFLG1CQUFDLE1BQUksT0FBSyxRQUFNLE9BQUssS0FBRyxHQUFHLFNBQVMsTUFBTSxHQUFFLEVBQUUsSUFBRyxHQUFHLEtBQUssRUFBRTtBQUFBLGdCQUFFO0FBQUMsb0JBQUksS0FBRyxLQUFHLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLEdBQUUsR0FBRyxRQUFRLElBQUUsR0FBRztBQUFTLHVCQUFPLEVBQUUsMEJBQTBCLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBRyxHQUFHLHVCQUFxQixFQUFFLGlCQUFpQixHQUFHLG9CQUFvQixJQUFJLEtBQUcsR0FBRyxvQkFBb0IsS0FBSyxpQkFBZSxPQUFNO0FBQUMsc0JBQUksS0FBRyxFQUFFLHdCQUF3QixHQUFHLG9CQUFvQixJQUFJLEdBQUUsS0FBRyxFQUFFLDBCQUEwQixHQUFHLHFCQUFvQixHQUFHLG9CQUFvQixNQUFLLFFBQU8sUUFBTyxFQUFFLEdBQUUsS0FBRyxFQUFFLDRCQUE0QixJQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLFVBQVUsR0FBRyxPQUFNLEdBQUUsRUFBRSxPQUFPO0FBQUUseUJBQU8sRUFBRSxLQUFLLEVBQUUsTUFBSSxLQUFHLEVBQUUsWUFBWSxJQUFHLEdBQUcsQ0FBQyxFQUFFLHdCQUF3QixRQUFPLEVBQUUsQ0FBQyxHQUFFLEdBQUcsWUFBVyxJQUFFLENBQUMsSUFBRyxFQUFFLGtCQUFrQixJQUFHLEVBQUUsMEJBQTBCLEdBQUcscUJBQW9CLElBQUcsUUFBTyxRQUFPLE1BQU0sR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLGVBQWUsSUFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxJQUFHO0FBQUMsb0JBQUcsRUFBRSxxQkFBcUIsSUFBRyxDQUFDLEdBQUU7QUFBQyxzQkFBSSxLQUFHO0FBQUUsc0JBQUU7QUFBRyxzQkFBSSxLQUFHLEVBQUUsZUFBZSxJQUFHLEdBQUUsQ0FBQztBQUFFLHlCQUFPLElBQUUsSUFBRztBQUFBLGdCQUFFO0FBQUMsdUJBQU8sRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBSSxLQUFHO0FBQUUsc0JBQUU7QUFBRyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxJQUFFO0FBQUUseUJBQU8sSUFBRSxJQUFHO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTyxHQUFHLElBQUcsS0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsaUJBQWlCLEdBQUcsSUFBSSxLQUFHLEdBQUcsS0FBSyxpQkFBZSxRQUFNLEVBQUUsNEJBQTRCLElBQUcsR0FBRSxHQUFFLEdBQUUsUUFBTyxFQUFFLElBQUUsRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLHVCQUFPLEVBQUUsbUJBQW1CLElBQUcsRUFBRSxVQUFVLEdBQUcsYUFBWSxHQUFFLEVBQUUsZ0JBQWdCLEdBQUUsRUFBRSxVQUFVLEdBQUcsV0FBVSxHQUFFLEVBQUUsWUFBWSxHQUFFLEVBQUUsVUFBVSxHQUFHLGFBQVksR0FBRSxFQUFFLFlBQVksR0FBRSxFQUFFLG1CQUFtQixHQUFHLFdBQVUsR0FBRSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFHLFlBQVksaUJBQWUsVUFBUSxLQUFHLEdBQUcsRUFBRTtBQUFHLG9CQUFJLEtBQUcsR0FBRyxnQkFBYyxHQUFHLElBQUcsSUFBRyxFQUFFLElBQUUsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLHVCQUFPLEVBQUUsRUFBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxnQkFBZ0IsR0FBRyxXQUFXO0FBQUUsb0JBQUcsRUFBRSwwQkFBMEIsRUFBRSxLQUFHLEVBQUUsb0JBQW9CLEVBQUUsR0FBRTtBQUFDLHNCQUFJLEtBQUcsUUFBTyxLQUFHLFFBQU8sS0FBRyxFQUFFLG1CQUFtQixNQUFNLEdBQUUsS0FBRyxDQUFDLEVBQUUsNEJBQTRCLEdBQUUsSUFBRyxFQUFFLENBQUM7QUFBRSx5QkFBTyxFQUFFLFFBQVEsR0FBRyxTQUFTLEtBQUcsRUFBRSxTQUFTLElBQUcsR0FBRyxVQUFVLFVBQVUsR0FBRSxLQUFHLEdBQUcsV0FBVSxLQUFHLEdBQUcsVUFBVSxjQUFZLEdBQUcsY0FBWSxFQUFFLE9BQU8sSUFBRyxHQUFHLFNBQVMsR0FBRSxLQUFHLEdBQUcsV0FBVSxLQUFHLEdBQUcsWUFBVyxFQUFFLHFCQUFxQixJQUFHLEdBQUcsZUFBYyxFQUFFLGFBQWEsRUFBRSw4QkFBOEIsQ0FBQyxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxHQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEdBQUcsV0FBVyxHQUFFLEdBQUcsWUFBVyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsR0FBRSxFQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLDRCQUE0QixHQUFFLEdBQUcsYUFBWSxFQUFFLEdBQUUsSUFBRyxJQUFHLEtBQUcsQ0FBQyxFQUFFLFVBQVUsSUFBRyxHQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUUsS0FBRyxFQUFFLG1CQUFtQixHQUFHLFdBQVUsR0FBRSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxRQUFRLEVBQUUsS0FBRyxFQUFFLFNBQVMsSUFBRyxHQUFHLFVBQVUsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFHLGNBQVksR0FBRyxLQUFLLEVBQUUsR0FBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxHQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQU8sS0FBRyxJQUFFLEVBQUUsc0JBQXNCLFFBQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUMsSUFBRSxFQUFFLHNCQUFzQixFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsVUFBVSxHQUFHLFlBQVcsR0FBRSxFQUFFLFlBQVksR0FBRSxLQUFHLEVBQUUsYUFBYSxFQUFFLElBQUUsRUFBRSx3QkFBd0IsRUFBRSxJQUFFLEVBQUUsbUJBQW1CLE1BQU0sR0FBRSxLQUFHLEVBQUUsYUFBYSxFQUFFLElBQUUsRUFBRSx3QkFBd0IsRUFBRSxJQUFFLEVBQUUsbUJBQW1CLE1BQU0sR0FBRSxLQUFHLEVBQUUsaUJBQWlCLEdBQUcsR0FBRSxLQUFHLEVBQUUsd0JBQXdCLEVBQUUsR0FBRSxLQUFHLEVBQUUsbUJBQW1CLE1BQU0sR0FBRSxLQUFHLEVBQUUsYUFBYSxFQUFFLEVBQUUsd0JBQXdCLEVBQUUsR0FBRSxHQUFHLFVBQVUsR0FBRSxLQUFHLEVBQUUscUJBQXFCLEVBQUUsK0JBQStCLElBQUcsTUFBTSxHQUFFLFFBQU8sQ0FBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLCtCQUErQixJQUFHLE1BQU0sR0FBRSxLQUFHLEVBQUUsK0JBQStCLElBQUcsT0FBTyxHQUFFLEtBQUcsRUFBRSx1QkFBdUIsSUFBRyxJQUFHLENBQUMsQ0FBQztBQUFFLGtCQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEtBQUcsSUFBRSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsaUJBQWlCLElBQUcsRUFBRSxlQUFlLENBQUMsR0FBRSxFQUFFLENBQUMsSUFBRSxJQUFHLEtBQUcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsOEJBQThCLENBQUMsRUFBRSxhQUFhLEVBQUUsMEJBQTBCLElBQUcsUUFBTyxRQUFPLEVBQUUsR0FBRSxHQUFHLFVBQVUsR0FBRSxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUcsVUFBVSxHQUFFLE9BQU8sR0FBRSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsSUFBRyxHQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxHQUFFLFFBQU8sR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFHO0FBQUUsdUJBQU8sRUFBRSxnQkFBZ0IsSUFBRyxFQUFFLEdBQUUsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUMsRUFBRSxzQkFBc0IsSUFBRyxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsR0FBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsRUFBRSwwQkFBMEIsRUFBRSxpQkFBaUIsSUFBRyxFQUFFLDhCQUE4QixDQUFDLEVBQUUseUJBQXlCLFNBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixJQUFHLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxHQUFFLEVBQUUsaUJBQWlCLElBQUcsRUFBRSwrQkFBK0IsSUFBRyxRQUFRLENBQUMsQ0FBQyxHQUFFLEVBQUUsMEJBQTBCLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLFFBQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixJQUFHLEVBQUUscUJBQXFCLEVBQUUsK0JBQStCLElBQUcsT0FBTyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLE1BQU0sV0FBVyxJQUFHLEVBQUUsV0FBVyxHQUFFLEdBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyx1QkFBTyxLQUFHLFFBQU0sRUFBRSxJQUFJLEVBQUUsSUFBRSxFQUFFLDJCQUEyQixJQUFHLFFBQU8sUUFBTyxHQUFHLGdCQUFlLEVBQUUsaUJBQWlCLEdBQUcsSUFBSSxJQUFFLEVBQUUsd0JBQXdCLEVBQUUsSUFBRSxHQUFHLE1BQUssUUFBTyxRQUFPLE1BQU0sSUFBRSxHQUFHLGlCQUFlLFFBQU0sRUFBRSwyQkFBMkIsSUFBRyxRQUFPLFFBQU8sR0FBRyxnQkFBZSxFQUFFLHdCQUF3QixFQUFFLEdBQUUsUUFBTyxRQUFPLEVBQUUsVUFBVSxHQUFHLGFBQVksR0FBRSxFQUFFLFlBQVksQ0FBQyxJQUFFLEVBQUUsZUFBZSxJQUFHLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyx5QkFBUSxJQUFHLEtBQUcsR0FBRSxLQUFHLEdBQUcsWUFBVyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsc0JBQUksS0FBRyxHQUFHO0FBQUksdUJBQUcsR0FBRyxJQUFJLEVBQUUsSUFBRSxHQUFHLGlCQUFlLFVBQVEsS0FBRyxJQUFJLEVBQUU7QUFBQSxnQkFBSTtBQUFDLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsSUFBRyxLQUFHO0FBQUUscUJBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFO0FBQUUsb0JBQUksS0FBRyxFQUFFLDZCQUE2QixJQUFHLFFBQU8sR0FBRyxXQUFVLEVBQUUsbUJBQW1CLEdBQUcsWUFBVyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLHVCQUFPLEtBQUcsSUFBRyxJQUFFLElBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxJQUFHLEtBQUc7QUFBRSxxQkFBRyxFQUFFLGlCQUFpQixFQUFFLEdBQUUsSUFBRSxHQUFHLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEVBQUUsNkJBQTZCLElBQUcsUUFBTyxHQUFHLFdBQVUsRUFBRSxVQUFVLEdBQUcsTUFBSyxHQUFFLEVBQUUsY0FBYyxHQUFFLEVBQUUsbUJBQW1CLEdBQUcsWUFBVyxJQUFHLENBQUMsR0FBRSxRQUFPLEVBQUUsRUFBRSxDQUFDO0FBQUUsdUJBQU8sS0FBRyxJQUFHLElBQUUsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLElBQUcsS0FBRztBQUFFLHFCQUFHLEVBQUUsaUJBQWlCLEVBQUUsR0FBRSxJQUFFLEdBQUcsRUFBRTtBQUFFLG9CQUFJLEtBQUcsRUFBRSw2QkFBNkIsSUFBRyxRQUFPLEdBQUcsV0FBVSxFQUFFLFVBQVUsR0FBRyxNQUFLLEdBQUUsRUFBRSxjQUFjLEdBQUUsRUFBRSxtQkFBbUIsR0FBRyxZQUFXLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUUsdUJBQU8sS0FBRyxJQUFHLElBQUUsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLElBQUcsS0FBRztBQUFFLHFCQUFHLEVBQUUsaUJBQWlCLEVBQUUsR0FBRSxJQUFFLEdBQUcsRUFBRTtBQUFFLG9CQUFJLEtBQUcsRUFBRSx3QkFBd0IsSUFBRyxRQUFPLEtBQUcsSUFBRSxFQUFFLFdBQVcsR0FBRyxXQUFVLEdBQUUsRUFBRSxVQUFVLElBQUUsR0FBRyxXQUFVLEtBQUcsSUFBRSxTQUFPLEdBQUcsZUFBYyxFQUFFLFVBQVUsR0FBRyxNQUFLLEdBQUUsRUFBRSxjQUFjLEdBQUUsRUFBRSxVQUFVLFFBQU8sR0FBRSxFQUFFLE9BQU8sR0FBRSxRQUFPLEVBQUUsbUJBQW1CLEdBQUcsWUFBVyxJQUFHLENBQUMsR0FBRSxRQUFPLEtBQUcsS0FBRyxLQUFHLElBQUUsR0FBRyxFQUFFLElBQUUsRUFBRSxFQUFFLENBQUM7QUFBRSx1QkFBTyxLQUFHLElBQUcsSUFBRSxJQUFHO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsSUFBRyxLQUFHO0FBQUUscUJBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFO0FBQUUsb0JBQUksS0FBRyxFQUFFLDBCQUEwQixJQUFHLFFBQU8sS0FBRyxJQUFFLEVBQUUsV0FBVyxHQUFHLFdBQVUsR0FBRSxFQUFFLFVBQVUsSUFBRSxHQUFHLFdBQVUsS0FBRyxJQUFFLFNBQU8sR0FBRyxlQUFjLEdBQUcsTUFBSyxRQUFPLEVBQUUsbUJBQW1CLEdBQUcsWUFBVyxJQUFHLENBQUMsR0FBRSxRQUFPLEtBQUcsS0FBRyxLQUFHLElBQUUsR0FBRyxFQUFFLElBQUUsRUFBRSxFQUFFLENBQUM7QUFBRSx1QkFBTyxLQUFHLElBQUcsSUFBRSxJQUFHO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsSUFBRyxLQUFHO0FBQUUscUJBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFFLElBQUUsR0FBRyxFQUFFO0FBQUUsb0JBQUksS0FBRyxFQUFFLG9CQUFvQixJQUFHLEdBQUcsV0FBVSxRQUFPLEVBQUUsbUJBQW1CLEdBQUcsWUFBVyxJQUFHLENBQUMsR0FBRSxRQUFPLEdBQUcsd0JBQXVCLEVBQUUsRUFBRSxDQUFDO0FBQUUsdUJBQU8sS0FBRyxJQUFHLElBQUUsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLElBQUcsS0FBRztBQUFFLHFCQUFHLEVBQUUsaUJBQWlCLEVBQUUsR0FBRSxJQUFFLEdBQUcsRUFBRTtBQUFFLG9CQUFJLEtBQUcsRUFBRSx5QkFBeUIsSUFBRyxLQUFHLElBQUUsRUFBRSxXQUFXLEdBQUcsV0FBVSxHQUFFLEVBQUUsVUFBVSxJQUFFLEdBQUcsV0FBVSxLQUFHLElBQUUsU0FBTyxHQUFHLGVBQWMsR0FBRyxNQUFLLFFBQU8sRUFBRSxtQkFBbUIsR0FBRyxZQUFXLElBQUcsQ0FBQyxHQUFFLFFBQU8sS0FBRyxLQUFHLEtBQUcsSUFBRSxHQUFHLEVBQUUsSUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFFLHVCQUFPLEtBQUcsSUFBRyxJQUFFLElBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsbUJBQUc7QUFBRSxvQkFBSSxLQUFHLENBQUMsR0FBRSxLQUFHLEVBQUUsYUFBYSxHQUFHLEtBQUssWUFBVyxJQUFHLE9BQUcsQ0FBQztBQUFFLG1CQUFHLElBQUcsRUFBRTtBQUFFLG9CQUFJLEtBQUcsSUFBRyxLQUFHO0FBQUcscUJBQUcsSUFBSSxFQUFFLE9BQUksS0FBRztBQUFHLG9CQUFJLEtBQUcsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLDJCQUEyQixFQUFFLHlCQUF5QixRQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUUsR0FBRyxRQUFNLEVBQUUsd0JBQXdCLEdBQUcsSUFBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLFFBQU8sRUFBRSxZQUFZLEdBQUcsTUFBSyxFQUFFLHdCQUF3QixHQUFHLEtBQUssWUFBVyxHQUFFLEdBQUUsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEVBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxLQUFHLE1BQUksS0FBRyxFQUFFLGtCQUFrQixFQUFFLElBQUU7QUFBSyxvQkFBRyxJQUFHO0FBQUMscUJBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsbUNBQW1DLEdBQUUsR0FBRSxJQUFHLEVBQUU7QUFBRSxxQkFBRyxFQUFFLFVBQVUsRUFBRSxLQUFHLE1BQUcsRUFBRSxzQ0FBc0MsSUFBRyxDQUFDLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsbUJBQUcsS0FBSyxFQUFFLEdBQUUsRUFBRSxzQ0FBc0MsSUFBRyxFQUFFLENBQUM7QUFBRSxvQkFBSSxLQUFHLEVBQUUsWUFBWSxHQUFHLE1BQUssRUFBRTtBQUFFLHVCQUFPLE1BQUksT0FBSyxFQUFFLGtCQUFrQixFQUFFLElBQUUsT0FBSyxFQUFFLGNBQWMsSUFBRyxFQUFFLHdCQUF3QixJQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBRSxRQUFNLEVBQUUsY0FBYyxJQUFHLEVBQUUsZ0JBQWdCLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyxvQkFBSTtBQUFHLG1CQUFHO0FBQUUsb0JBQUksS0FBRyxHQUFFLEtBQUcsQ0FBQyxHQUFFLE1BQUksS0FBRyxFQUFFLFVBQVUsR0FBRyxNQUFLLEdBQUUsRUFBRSxhQUFhLE9BQUssUUFBTSxPQUFLLFNBQU8sS0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQUUsa0JBQUUsUUFBUSxFQUFFLE1BQUksS0FBRyxFQUFFLGFBQWEsR0FBRyxZQUFXLElBQUcsT0FBRyxDQUFDLElBQUcsRUFBRSxTQUFTLElBQUcsR0FBRyxRQUFPLEVBQUUsQ0FBQztBQUFFLG9CQUFJLEtBQUcsRUFBRTtBQUFFLG9CQUFHLEtBQUcsS0FBRyxFQUFFLEtBQUssRUFBRSxLQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEVBQUUsV0FBVyx1QkFBdUIsSUFBRyxJQUFFO0FBQUUseUJBQU8sRUFBRSxzQ0FBc0MsSUFBRyxFQUFFLEdBQUUsRUFBRSxTQUFTLElBQUcsR0FBRyxXQUFXLE1BQU0sRUFBRSxDQUFDLEdBQUUsRUFBRSxZQUFZLElBQUcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRSxHQUFHLFVBQVUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyx5QkFBUSxLQUFHLE9BQUcsS0FBRyxHQUFFLEtBQUcsR0FBRyxZQUFXLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUc7QUFBSSxzQkFBRyxJQUFHO0FBQUMsd0JBQUcsRUFBRSxpQkFBaUIsR0FBRyxJQUFJLEdBQUU7QUFBQywwQkFBRyxHQUFHLEtBQUssU0FBUyxTQUFPLEdBQUU7QUFBQyw0QkFBSSxLQUFHLEVBQUUsNEJBQTRCLElBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0FBQUUsNEJBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRTtBQUFDLDhCQUFJLEtBQUcsRUFBRSw4QkFBOEIsRUFBRSxHQUFFLEtBQUcsRUFBRSx3QkFBd0IsUUFBTyxFQUFFO0FBQUUsNEJBQUUsYUFBYSxJQUFHLE9BQU8sR0FBRSxLQUFHLEVBQUUsT0FBTyxJQUFHLEVBQUU7QUFBQSx3QkFBQztBQUFBLHNCQUFDLFdBQVMsR0FBRyxhQUFZO0FBQUMsNEJBQUksS0FBRyxFQUFFLHdCQUF3QixFQUFFLEdBQUUsS0FBRyxFQUFFLFVBQVUsR0FBRyxhQUFZLEdBQUUsRUFBRSxZQUFZLEdBQUUsS0FBRyxFQUFFLGlCQUFpQixJQUFHLEVBQUUsR0FBRSxLQUFHLEVBQUUsMEJBQTBCLEVBQUU7QUFBRSwwQkFBRSxhQUFhLElBQUcsT0FBTyxHQUFFLEtBQUcsRUFBRSxPQUFPLElBQUcsRUFBRTtBQUFBLHNCQUFDO0FBQUEsb0JBQUMsV0FBUyxHQUFHLGFBQVk7QUFBQywwQkFBSSxLQUFHLEVBQUUsVUFBVSxHQUFHLElBQUk7QUFBRSx3QkFBRSxhQUFhLElBQUcsR0FBRyxJQUFJLEdBQUUsRUFBRSxhQUFhLElBQUcsRUFBRTtBQUFFLDBCQUFJLEtBQUcsRUFBRSxVQUFVLEdBQUcsYUFBWSxHQUFFLEVBQUUsWUFBWTtBQUFFLHdCQUFFLGFBQWEsSUFBRyxJQUFJO0FBQUUsMEJBQUksS0FBRyxFQUFFLGlCQUFpQixJQUFHLEVBQUU7QUFBRSx3QkFBRSxhQUFhLElBQUcsRUFBRSxHQUFFLEVBQUUsYUFBYSxJQUFHLElBQUk7QUFBRSwwQkFBSSxLQUFHLEVBQUUsWUFBWSxDQUFDLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0FBQUUsd0JBQUUsYUFBYSxJQUFHLEVBQUUsR0FBRSxFQUFFLGFBQWEsSUFBRyxJQUFJO0FBQUUsMEJBQUksS0FBRyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsR0FBRyxJQUFJLEdBQUUsV0FBVyxHQUFFLEtBQUcsRUFBRSxrQkFBa0IsSUFBRyxFQUFFO0FBQUUsd0JBQUUsZUFBZSxFQUFFLEdBQUUsRUFBRSxhQUFhLElBQUcsRUFBRSxHQUFFLEVBQUUsYUFBYSxJQUFHLE9BQU8sR0FBRSxLQUFHLEVBQUUsT0FBTyxJQUFHLEVBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDLFdBQVMsR0FBRyxpQkFBZSxPQUFNO0FBQUMseUJBQUc7QUFBRyx3QkFBSSxLQUFHLEVBQUUsNEJBQTRCLElBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSx3QkFBd0IsRUFBRSxHQUFFLE9BQUcsSUFBRTtBQUFFLHdCQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUU7QUFBQywwQkFBSSxLQUFHLEVBQUUsOEJBQThCLEVBQUUsR0FBRSxLQUFHLEVBQUUsd0JBQXdCLFFBQU8sRUFBRTtBQUFFLHdCQUFFLGFBQWEsSUFBRyxPQUFPLEdBQUUsS0FBRyxFQUFFLE9BQU8sSUFBRyxFQUFFO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsS0FBSTtBQUFDLGlCQUFDLElBQUUsT0FBSyxNQUFJLEtBQUcsR0FBRSxFQUFFLG1CQUFtQixHQUFHLEdBQUUsRUFBRSxtQkFBbUIsR0FBRyxHQUFFLEVBQUUsbUJBQW1CLEdBQUcsR0FBRSxFQUFFLHVCQUF1QixHQUFHLEdBQUUsRUFBRSx1QkFBdUIsR0FBRyxHQUFFLEVBQUUsdUJBQXVCLEdBQUcsR0FBRSxFQUFFLHVCQUF1QixHQUFHLEdBQUUsRUFBRSx1QkFBdUIsR0FBRyxHQUFFLEVBQUUsdUJBQXVCLEdBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLG9CQUFHLElBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRTtBQUFDLHNCQUFJLEtBQUcsRUFBRSxrQkFBa0IsRUFBRSxJQUFFO0FBQUssc0JBQUcsT0FBSyxJQUFHO0FBQUMsd0JBQUksS0FBRztBQUFHLHlCQUFHLElBQUcsRUFBRSxJQUFHLElBQUcsRUFBRSxHQUFFLEtBQUc7QUFBRztBQUFBLGtCQUFNO0FBQUEsZ0JBQUMsV0FBUyxLQUFHLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBRztBQUFDLHNCQUFJLEtBQUc7QUFBRyx1QkFBRyxHQUFFLEVBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHO0FBQUc7QUFBQSxnQkFBTTtBQUFDLGtCQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQU8sS0FBRyxFQUFFLElBQUcsRUFBRSxHQUFFLE9BQUssS0FBRyxLQUFHLEdBQUcsRUFBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLHdCQUFPLEdBQUc7QUFBQSx1QkFBVztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQTtBQUFFLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLHVCQUFPLEdBQUcsV0FBVyxTQUFPLE1BQUksRUFBRSxhQUFhLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLFVBQVMsRUFBRSxHQUFFLEdBQUcsSUFBSSxHQUFFLEVBQUUsSUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyx1QkFBTyxHQUFHLFdBQVcsU0FBTyxNQUFJLEdBQUcsR0FBRyxvQkFBbUIsRUFBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRztBQUFXLG9CQUFHLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRTtBQUFDLHNCQUFJLEtBQUcsRUFBRSwyQkFBMkIsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFFLEdBQUcsRUFBRTtBQUFFLHlCQUFPLEVBQUUscUJBQXFCLEVBQUUsK0JBQStCLElBQUcsTUFBTSxHQUFFLFFBQU8sR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLEdBQUUsR0FBRyxXQUFVLElBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHO0FBQUssdUJBQU8sT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUs7QUFBQSxjQUFHO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxLQUFHLE9BQUssRUFBRSxhQUFhLEVBQUUsK0JBQStCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLGFBQWEsR0FBRSxRQUFPLENBQUMsRUFBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLEVBQUUsSUFBRSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsYUFBYSxHQUFFLFFBQU8sQ0FBQyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFBLFVBQUMsR0FBRyxPQUFLLEtBQUcsQ0FBQyxFQUFFO0FBQUUsY0FBSTtBQUFHLFdBQUMsU0FBUyxHQUFFO0FBQUMscUJBQVMsRUFBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFO0FBQVEscUJBQU8sRUFBRSxZQUFZLEdBQUUsQ0FBQztBQUFFLHVCQUFTLEVBQUUsSUFBRztBQUFDLHVCQUFPLEdBQUcsb0JBQWtCLEtBQUcsRUFBRSxlQUFlLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFJLEdBQUcsaUJBQWUsUUFBTTtBQUFFLHlCQUFPO0FBQUcsd0JBQU8sR0FBRztBQUFBLHVCQUFXO0FBQUksMkJBQU8sRUFBRSxFQUFFO0FBQUE7QUFBVSwyQkFBTyxFQUFFLGVBQWUsSUFBRyxHQUFFLENBQUM7QUFBQTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxFQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLHNCQUFvQixFQUFFLGVBQWUsSUFBRyxHQUFFLENBQUMsSUFBRSxFQUFFLGtCQUFrQixJQUFHLEVBQUUsMEJBQTBCLEVBQUUsbUJBQW1CLE1BQU0sQ0FBQyxHQUFFLEVBQUUsVUFBVSxHQUFHLE9BQU0sR0FBRSxFQUFFLE9BQU8sQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxrQkFBZ0I7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxTQUFRLElBQUUsRUFBRTtBQUF5QixxQkFBTyxFQUFFLFlBQVksR0FBRSxDQUFDO0FBQUUsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxvQkFBa0IsSUFBRSxFQUFFLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQUksRUFBRSxpQkFBZSxRQUFNO0FBQUUseUJBQU87QUFBRSx3QkFBTyxFQUFFO0FBQUEsdUJBQVcsS0FBSTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUU7QUFBRSwyQkFBTyxFQUFFLE1BQU0sY0FBYyxJQUFHLEVBQUUsb0JBQW9CLEdBQUU7QUFBQSxrQkFBRTtBQUFBLHVCQUFNO0FBQUEsdUJBQVM7QUFBSSx3QkFBRyxFQUFFLGdCQUFnQixDQUFDLEdBQUU7QUFBQywwQkFBSSxLQUFHLEdBQUcsR0FBRSxPQUFHLEtBQUU7QUFBRSw2QkFBTyxFQUFFLE1BQU0sY0FBYyxJQUFHLEVBQUUsb0JBQW9CLEdBQUU7QUFBQSxvQkFBRTtBQUFDLDJCQUFPLEVBQUUsZUFBZSxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxjQUFjLFNBQU8sS0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsQ0FBQztBQUFBO0FBQVUsMkJBQU8sRUFBRSxlQUFlLEdBQUUsR0FBRSxDQUFDO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUUsTUFBTSxjQUFjLEdBQUUsRUFBRSxjQUFjO0FBQUUseUJBQVEsS0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLEVBQUUsb0JBQWtCLENBQUMsRUFBRSwyQkFBMkIsQ0FBQztBQUFHLHNCQUFFLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFLFVBQVUsR0FBRSxFQUFFLGVBQWUsR0FBRSxFQUFFLE1BQU0sY0FBYyxHQUFFLEVBQUUsY0FBYyxHQUFFLEdBQUcsUUFBUSxDQUFDO0FBQUUsdUJBQU0sRUFBQyxZQUFXLEVBQUUsWUFBVyxPQUFNLEdBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLElBQUcsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxFQUFFLFlBQVcsSUFBRyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxxQkFBcUIsRUFBRSxJQUFFLEVBQUUsbUNBQW1DLEVBQUUsOEJBQThCLEdBQUUsR0FBRyxVQUFVLEdBQUUsR0FBRyxPQUFPLElBQUUsRUFBRSw4QkFBOEIsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHLEdBQUU7QUFBQyxvQkFBRyxFQUFFLGdCQUFnQixDQUFDO0FBQUUseUJBQU8sR0FBRyxHQUFFLElBQUcsQ0FBQztBQUFFLG9CQUFJLEtBQUcsRUFBRSxVQUFVLEVBQUUsWUFBVyxHQUFFLEVBQUUsWUFBWTtBQUFFLGtCQUFFLE1BQU0sY0FBYyxJQUFHLEVBQUUsb0JBQW9CO0FBQUUsb0JBQUk7QUFBRSx1QkFBTyxPQUFLLEVBQUUsMkJBQTJCLEVBQUUsSUFBRSxJQUFFLE1BQUksSUFBRSxFQUFFLG1CQUFtQixDQUFDLEdBQUUsS0FBRyxFQUFFLGlCQUFpQixHQUFFLEVBQUUsS0FBSSxLQUFHLEVBQUUsU0FBTyxNQUFJLEVBQUUsK0JBQStCLEdBQUUsSUFBRyxFQUFFLFVBQVUsRUFBRSxNQUFLLEdBQUUsRUFBRSxZQUFZLENBQUMsSUFBRSxFQUFFLDhCQUE4QixHQUFFLElBQUcsRUFBRSxVQUFVLEVBQUUsb0JBQW1CLEdBQUUsRUFBRSxZQUFZLENBQUMsR0FBRSxJQUFFLEVBQUUsbUNBQW1DLElBQUcsQ0FBQyxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUcsRUFBRSxnQkFBZ0IsQ0FBQztBQUFFLHlCQUFPLEdBQUcsR0FBRSxJQUFHLEtBQUU7QUFBRSxvQkFBRyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsS0FBRyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLEVBQUUsWUFBVyxNQUFHLEtBQUUsR0FBRSxLQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVUsR0FBRSxFQUFFLFlBQVk7QUFBRSx5QkFBTyxFQUFFLHFCQUFxQixDQUFDLElBQUUsRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsWUFBVyxFQUFFLFNBQVEsRUFBRSxHQUFFLENBQUMsSUFBRSxFQUFFLHFCQUFxQixHQUFFLEdBQUUsUUFBTyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLElBQUcsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFHLENBQUM7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUcsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQTtBQUFVLDJCQUFPLEVBQUUsVUFBVSxHQUFFLEdBQUUsRUFBRSxZQUFZO0FBQUE7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUcsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLFlBQVcsSUFBRSxHQUFHLE9BQU0sSUFBRSxFQUFFLEVBQUUsZ0NBQWdDLENBQUMsR0FBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUUsS0FBRSxHQUFFLEtBQUcsRUFBRSxxQkFBcUIsQ0FBQyxJQUFFLEVBQUUsVUFBUSxRQUFPLEtBQUcsRUFBRSxxQkFBcUIsQ0FBQyxJQUFFLEVBQUUsYUFBVyxHQUFFLEtBQUcsRUFBRSx3QkFBd0IsR0FBRSxJQUFHLENBQUM7QUFBRSxrQkFBRSwyQkFBMkIsRUFBRSxNQUFJLEtBQUcsRUFBRSxtQkFBbUIsQ0FBQyxHQUFFLEtBQUcsRUFBRSxpQkFBaUIsSUFBRyxFQUFFO0FBQUcseUJBQVEsSUFBRSxJQUFHLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUU7QUFBRywwQkFBTyxFQUFFO0FBQUEseUJBQVc7QUFBQSx5QkFBUztBQUFJLDRCQUFJLEVBQUUsU0FBTyxLQUFHLE9BQUssRUFBRSwyQkFBMkIsQ0FBQyxJQUFFLElBQUUsS0FBRyxJQUFFLEVBQUUsbUJBQW1CLENBQUMsR0FBRSxJQUFFLEVBQUUsaUJBQWlCLEdBQUUsQ0FBQyxLQUFJLElBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSwrQkFBK0IsR0FBRSxFQUFFLFVBQVUsRUFBRSxNQUFLLEdBQUUsRUFBRSxZQUFZLENBQUMsSUFBRSxFQUFFLDhCQUE4QixHQUFFLEVBQUUsVUFBVSxFQUFFLG9CQUFtQixHQUFFLEVBQUUsWUFBWSxDQUFDO0FBQUU7QUFBQSx5QkFBVztBQUFJLDRCQUFJLEtBQUcsTUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQUksS0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFFLEVBQUUsYUFBYSxJQUFHLElBQUksSUFBRyxJQUFFLEVBQUUsdUJBQXVCLEdBQUUsR0FBRyxTQUFPLE1BQUksRUFBRSxXQUFXLElBQUUsSUFBRyxFQUFFLFdBQVcsRUFBRSxXQUFVLEdBQUUsRUFBRSxZQUFZLENBQUMsS0FBRyxJQUFFLEVBQUUscUJBQXFCLEdBQUUsUUFBTyxFQUFFLFdBQVcsRUFBRSxXQUFVLEdBQUUsRUFBRSxZQUFZLENBQUM7QUFBRTtBQUFBO0FBQU0sb0JBQUUsZ0JBQWdCLEdBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUksSUFBRSxJQUFFLEVBQUUsNEJBQTRCLEVBQUUsSUFBRyxJQUFHLElBQUUsR0FBRSxRQUFPLEVBQUUsV0FBVyxHQUFFLFFBQU8sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLElBQUUsRUFBRSw0QkFBNEIsRUFBRSxJQUFHLElBQUcsSUFBRSxHQUFFLFFBQU8sRUFBRSxlQUFlLEdBQUUsUUFBTyxDQUFDO0FBQUUsdUJBQU8sRUFBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxtQ0FBbUMsR0FBRSxDQUFDLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLElBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEdBQUUsRUFBRSxZQUFZLElBQUUsS0FBRyxFQUFFLEdBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxFQUFFLFlBQVksSUFBRSxLQUFHLEVBQUUsR0FBRSxFQUFFLHVCQUF1QixJQUFHLEVBQUUsWUFBWSxJQUFFLEtBQUcsRUFBRSxHQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFLLEdBQUUsRUFBRSxZQUFZLEdBQUUsSUFBRTtBQUFHLHVCQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBSSxJQUFFLEVBQUUsbUJBQW1CLENBQUMsR0FBRSxLQUFHLEVBQUUsaUJBQWlCLEdBQUUsRUFBRSxJQUFHLEVBQUUsYUFBYSxFQUFFLDRCQUE0QixFQUFFLElBQUcsQ0FBQyxHQUFFLFFBQU8sR0FBRSxRQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU0sR0FBRSxFQUFFLFlBQVksQ0FBQyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsSUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsWUFBVyxPQUFHLElBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSx1QkFBdUIsR0FBRSxFQUFFLFVBQVUsRUFBRSxZQUFXLEdBQUUsRUFBRSxZQUFZLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUEsVUFBQyxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxxQkFBUyxFQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsMEJBQXlCLElBQUUsRUFBRTtBQUFRLHFCQUFPLEVBQUUsWUFBWSxHQUFFLENBQUM7QUFBRSx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLG9CQUFrQixJQUFFLEVBQUUsZUFBZSxHQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBSSxFQUFFLGlCQUFlLFFBQU07QUFBRSx5QkFBTztBQUFFLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFJLHdCQUFJLElBQUU7QUFBRSx3QkFBRyxFQUFFLDBDQUEwQyxDQUFDO0FBQUUsNkJBQU8sR0FBRyxDQUFDO0FBQUE7QUFBVSwyQkFBTyxFQUFFLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBQTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsZUFBYyxJQUFFLEVBQUUsOENBQThDLEVBQUUsSUFBSSxHQUFFLElBQUUsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBSyxHQUFFLEVBQUUsd0JBQXdCLENBQUMsR0FBRSxLQUFHLEdBQUUsSUFBRSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxPQUFNLEdBQUUsRUFBRSxZQUFZLENBQUM7QUFBRSxvQkFBRyxFQUFFLG1CQUFtQixDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsMkJBQTJCLEVBQUUsVUFBVSxHQUFFLElBQUUsSUFBRSxFQUFFLGFBQVcsRUFBRSxtQkFBbUIsQ0FBQyxHQUFFLElBQUUsSUFBRSxFQUFFLGFBQVcsRUFBRSxpQkFBaUIsR0FBRSxFQUFFLFVBQVU7QUFBRSxzQkFBRyxFQUFFLDJCQUEyQixDQUFDO0FBQUUseUJBQUcsRUFBRSwrQkFBK0IsR0FBRSxFQUFFLElBQUksR0FBRSxJQUFFLEVBQUUsK0JBQStCLEdBQUUsRUFBRSxJQUFJO0FBQUEsdUJBQU07QUFBQyx3QkFBSSxLQUFHLEVBQUUsMkJBQTJCLEVBQUUsa0JBQWtCLEdBQUUsSUFBRSxLQUFHLEVBQUUscUJBQW1CLEVBQUUsbUJBQW1CLENBQUM7QUFBRSx5QkFBRyxFQUFFLDhCQUE4QixHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsOEJBQThCLEdBQUUsS0FBRyxFQUFFLHFCQUFtQixFQUFFLGlCQUFpQixHQUFFLEVBQUUsa0JBQWtCLENBQUM7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSx1QkFBdUIsR0FBRSxHQUFFLEVBQUUsOEJBQThCLEVBQUUsaUJBQWlCLElBQUcsQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUEsVUFBQyxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxxQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFlBQVksR0FBRSxDQUFDO0FBQUUsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxvQkFBa0IsSUFBRSxFQUFFLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQUksRUFBRSxpQkFBZSxPQUFLO0FBQUUseUJBQU87QUFBRSx3QkFBTyxFQUFFO0FBQUE7QUFBYywyQkFBTyxFQUFFLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBQTtBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxrQkFBZ0I7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxTQUFRLElBQUUsRUFBRSxzQkFBcUIsSUFBRSxFQUFFLG1CQUFtQixHQUFFLElBQUc7QUFBRSxxQkFBTyxFQUFFLFlBQVksR0FBRSxDQUFDO0FBQUUsdUJBQVMsSUFBRztBQUFDLG9CQUFHLEVBQUU7QUFBb0IseUJBQU8sRUFBRSxvQkFBb0I7QUFBSyxvQkFBSSxJQUFFLEVBQUUsMEJBQTBCLEVBQUUsaUJBQWlCLGdCQUFlLEVBQUUsR0FBRSxRQUFPLFFBQU8sRUFBRSxvQkFBb0IsR0FBRyxRQUFRLENBQUM7QUFBRSx1QkFBTyxFQUFFLHNCQUFvQixHQUFFLEVBQUUsb0JBQW9CO0FBQUEsY0FBSTtBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsUUFBTSxJQUFFLFdBQVMsSUFBRSxTQUFPO0FBQUEsY0FBSztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxFQUFFLFVBQVU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRyxJQUFHLEtBQUcsTUFBSSxrQkFBZ0IsRUFBRSxrQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBZ0IsQ0FBQyxHQUFFLE1BQUksTUFBSSxLQUFHLEVBQUUsb0NBQWtDLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxJQUFJLEVBQUUsT0FBSyxRQUFNLE9BQUssU0FBTyxTQUFPLEdBQUcsSUFBSSxDQUFDO0FBQUUsb0JBQUc7QUFBRyx5QkFBTyxHQUFHO0FBQUssa0JBQUUsbUNBQWlDLEVBQUUsaUNBQStCLElBQUksRUFBRTtBQUFLLG9CQUFJLElBQUUsRUFBRSwrQkFBK0IsSUFBSSxFQUFFO0FBQUUsc0JBQUksSUFBRSxJQUFJLEVBQUUsT0FBSSxFQUFFLCtCQUErQixJQUFJLElBQUcsQ0FBQztBQUFHLG9CQUFJLEtBQUcsRUFBRSxpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRSxHQUFHLEdBQUUsS0FBRyxFQUFFLHNCQUFzQixPQUFHLEVBQUUsaUJBQWlCLENBQUMsR0FBRSxFQUFFO0FBQUUsdUJBQU8sR0FBRywyQkFBeUIsSUFBRyxFQUFFLElBQUksR0FBRSxFQUFFLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRTtBQUFrQix5QkFBTztBQUFFLHFCQUFHLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxrQkFBZ0IsRUFBRSx5QkFBeUIsR0FBRSxDQUFDO0FBQUUsb0JBQUksS0FBRyxFQUFFLGVBQWUsR0FBRSxHQUFFLENBQUM7QUFBRSxrQkFBRSxlQUFlLElBQUcsRUFBRSxnQkFBZ0IsQ0FBQztBQUFFLG9CQUFJLEtBQUcsR0FBRztBQUFXLG9CQUFHLEVBQUUsd0JBQXNCLEtBQUcsRUFBRSxtQ0FBbUMsR0FBRyxNQUFNLEdBQUUsRUFBRSx3QkFBd0IsUUFBTyxFQUFFLDhCQUE4QixDQUFDLEVBQUUsbUJBQW1CLEdBQUUsQ0FBQyxDQUFDLENBQUMsSUFBRyxFQUFFO0FBQStCLDJCQUFRLEtBQUcsR0FBRSxLQUFHLEVBQUUsVUFBVSxFQUFFLCtCQUErQixRQUFRLENBQUMsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsd0JBQUksSUFBRSxHQUFHLEtBQUksS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFO0FBQUcsd0JBQUcsRUFBRSxpQkFBaUIsQ0FBQyxHQUFFO0FBQUMsMEJBQUksS0FBRyxFQUFFLHdCQUF3QixRQUFPLFFBQU8sRUFBRSxtQkFBbUIsT0FBRyxRQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLG9CQUFvQixFQUFFLEdBQUUsTUFBTTtBQUFFLHdCQUFFLG1CQUFtQixJQUFHLEtBQUUsR0FBRSxLQUFHLEVBQUUsbUNBQW1DLEdBQUcsTUFBTSxHQUFFLEVBQUU7QUFBQSxvQkFBQyxXQUFTLEVBQUUsMkJBQTJCLENBQUMsR0FBRTtBQUFDLDBCQUFJLEtBQUcsRUFBRSx3QkFBd0IsUUFBTyxFQUFFLDhCQUE4QixDQUFDLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRSxTQUFTLElBQUc7QUFBQywrQkFBTyxFQUFFLHFCQUFxQixRQUFPLEdBQUcsY0FBYSxHQUFHLElBQUk7QUFBQSxzQkFBQyxDQUFDLENBQUMsR0FBRSxRQUFPLFFBQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsU0FBUyxHQUFFLFFBQU8sQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSx3QkFBRSxtQkFBbUIsSUFBRyxLQUFFLEdBQUUsS0FBRyxFQUFFLG1DQUFtQyxHQUFHLE1BQU0sR0FBRSxFQUFFO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFDLHVCQUFPLE9BQUssR0FBRyxlQUFhLEtBQUcsRUFBRSxpQkFBaUIsSUFBRyxFQUFFLElBQUcsSUFBRSxRQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsaUJBQWUsSUFBRSxFQUFFLENBQUMsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBSSwyQkFBTyxFQUFFLEdBQUUsS0FBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLEtBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxLQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQTtBQUFVLDJCQUFPLEVBQUUsZUFBZSxHQUFFLEdBQUUsQ0FBQztBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFHLDJCQUFPLEVBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxFQUFFLEdBQUUsSUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxHQUFFLElBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsR0FBRSxJQUFFO0FBQUE7QUFBVSwyQkFBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFBQTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBUSxLQUFHLE9BQUcsS0FBRyxHQUFFLEtBQUcsRUFBRSxXQUFXLFlBQVcsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRztBQUFJLHNCQUFHLEVBQUUscUJBQXFCLEVBQUU7QUFBRSx5QkFBRztBQUFBLDJCQUFXLE1BQUksRUFBRSxlQUFlLEVBQUUsS0FBRyxHQUFHLEtBQUssZ0JBQWM7QUFBTSwyQkFBTTtBQUFBLGdCQUFFO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxvQkFBa0IsVUFBUSxFQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUcsRUFBRSxjQUFjLElBQUUsSUFBRTtBQUFHLHVCQUFPLEdBQUcsRUFBRSxnQkFBZSxFQUFFLFVBQVMsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUMsSUFBRSxJQUFFO0FBQUcsdUJBQU8sR0FBRyxHQUFFLFFBQU8sSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLG9CQUFrQixTQUFPLElBQUU7QUFBRSx1QkFBTyxHQUFHLEVBQUUsaUJBQWdCLEVBQUUsVUFBUyxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLENBQUM7QUFBRSx1QkFBTyxNQUFJLEVBQUUsOEJBQThCLENBQUMsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSx1QkFBdUIsQ0FBQztBQUFFLG9CQUFHLEVBQUUsT0FBTyxFQUFFLE1BQUksS0FBRyxDQUFDLEdBQUcsR0FBRyxnQkFBZTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFHLEVBQUU7QUFBRSx5QkFBTyxNQUFJLEVBQUUseUJBQXlCLFlBQVcsRUFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUksS0FBRyxFQUFFLFdBQVcsR0FBRSxFQUFFO0FBQUUsdUJBQU8sRUFBRSxPQUFPLEVBQUUsSUFBRSxFQUFFLHlCQUF5QixZQUFXLEVBQUUsNkJBQTZCLEVBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBTTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxNQUFJLEdBQUcsU0FBTyxHQUFHLEVBQUUsSUFBRSxRQUFPLEtBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxZQUFXLFNBQVMsSUFBRztBQUFDLHlCQUFNLENBQUMsQ0FBQyxHQUFHLFFBQU0sRUFBRSxhQUFhLEdBQUcsSUFBSSxLQUFHLEdBQUcsS0FBSyxnQkFBYztBQUFBLGdCQUFLLENBQUMsR0FBRSxLQUFHLEtBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxZQUFXLFNBQVMsSUFBRztBQUFDLHlCQUFPLE9BQUs7QUFBQSxnQkFBRSxDQUFDLElBQUUsRUFBRSxXQUFXLFlBQVcsS0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFFLEVBQUUsSUFBRyxDQUFDLElBQUUsRUFBRSw4QkFBOEIsSUFBRSxDQUFDLENBQUMsSUFBRSxFQUFFLFVBQVU7QUFBRSx1QkFBTyxFQUFFLElBQUcsSUFBRyxJQUFHLE1BQUksRUFBRSxZQUFXLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFO0FBQUMsb0JBQUksSUFBRyxLQUFHLEVBQUUsdUJBQXVCLEVBQUUsR0FBRSxLQUFHLEVBQUUsT0FBTyxFQUFFLElBQUUsS0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFHLEdBQUcsUUFBTSxRQUFNLE9BQUssV0FBUyxHQUFHLGlCQUFnQixLQUFHLENBQUMsR0FBRSxFQUFFO0FBQUUsb0JBQUcsTUFBSSxHQUFHLEtBQUssRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFFLEVBQUUsUUFBTSxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLGdCQUFnQixFQUFFO0FBQUUsc0JBQUcsTUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFFO0FBQUMsMkJBQUssVUFBUSxHQUFHLEtBQUssRUFBRSxlQUFlLENBQUMsR0FBRSxHQUFHLEtBQUssS0FBRyxFQUFFLFdBQVcsSUFBRSxFQUFFLFlBQVksQ0FBQztBQUFFLHdCQUFJLEtBQUcsRUFBRSw4QkFBOEIsSUFBRyxFQUFFLEdBQUc7QUFBRSx1QkFBRyxLQUFLLEVBQUUsOEJBQThCLENBQUMsRUFBRSx5QkFBeUIsWUFBVyxFQUFFLENBQUMsR0FBRSxFQUFFLHlCQUF5QixjQUFhLEVBQUUscUJBQXFCLEdBQUcsT0FBSyxDQUFDLENBQUMsR0FBRSxFQUFFLHlCQUF5QixnQkFBZSxFQUFFLHFCQUFxQixHQUFHLFlBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsR0FBRyxLQUFLLEVBQUUsV0FBVyxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxHQUFFLFFBQU8sRUFBRSxHQUFFLENBQUM7QUFBRSx1QkFBTyxNQUFJLEVBQUUsZUFBZSxFQUFFLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsV0FBVyxZQUFXLEtBQUcsRUFBRSxPQUFPLENBQUMsSUFBRSxFQUFFLENBQUMsSUFBRSxFQUFFLFdBQVcsR0FBRSxLQUFHLEVBQUUsb0JBQWtCLFNBQU8sRUFBRSwyQkFBMkIsR0FBRSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLEdBQUUsRUFBRSxnQkFBZSxDQUFDLElBQUUsRUFBRSxlQUFlLEdBQUUsS0FBRyxFQUFFLDhCQUE4QixHQUFFLElBQUcsSUFBRyxJQUFHLEVBQUUsV0FBVyxJQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUUsdUJBQU8sTUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJO0FBQUcsb0JBQUcsTUFBSSxHQUFHLFFBQU87QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRTtBQUFFLHdCQUFJLEtBQUc7QUFBQSxnQkFBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRyxHQUFFLE1BQUksRUFBRSw4QkFBOEIsQ0FBQyxDQUFDLEdBQUUsUUFBTyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsK0JBQStCLEdBQUUsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxHQUFFLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsR0FBRSxFQUFFLGdCQUFlLEVBQUUsV0FBVyxJQUFHLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBRSx1QkFBTyxNQUFJLEVBQUUsZUFBZSxFQUFFLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsWUFBVyxHQUFFLEVBQUUsWUFBWSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLG9CQUFvQixDQUFDO0FBQUUsdUJBQU8sTUFBSSxNQUFJLElBQUUsRUFBRSw4QkFBOEIsRUFBRSxHQUFFLEVBQUUsQ0FBQyxJQUFFLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEdBQUUsRUFBRSxzQkFBcUIsU0FBUyxJQUFHLElBQUc7QUFBQyx5QkFBTyxFQUFFLElBQUksSUFBRyxTQUFTLEdBQUU7QUFBQywyQkFBTyxLQUFHLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQztBQUFBLGtCQUFDLENBQUM7QUFBQSxnQkFBQyxDQUFDLENBQUM7QUFBRSx1QkFBTyxNQUFJLEdBQUcsS0FBSyxFQUFFLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsR0FBRSxFQUFFLHNCQUFxQixTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPLEtBQUcsRUFBRSxJQUFJLElBQUcsQ0FBQyxJQUFFLEVBQUUsOEJBQThCLEVBQUUsSUFBSSxJQUFHLENBQUMsQ0FBQztBQUFBLGdCQUFDLENBQUMsQ0FBQztBQUFFLHVCQUFPLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxLQUFHLEdBQUcsUUFBUSxFQUFFLDhCQUE4QixDQUFDLEdBQUUsTUFBSSxHQUFHLEtBQUssRUFBRSw4QkFBOEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBRyxFQUFFLEVBQUUsbUJBQW1CLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxVQUFVLEVBQUUsWUFBVyxHQUFFLEVBQUUsWUFBWTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFFLFdBQVc7QUFBRSx1QkFBTyxFQUFFLHlCQUF5QixJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSTtBQUFPLHlCQUFPLEVBQUUsV0FBVztBQUFFLG9CQUFHLEVBQUUsU0FBTyxJQUFHO0FBQUMsc0JBQUksS0FBRyxFQUFFLGdCQUFjLFNBQU8sRUFBRSxjQUFZLENBQUMsRUFBRSxxQkFBcUIsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxLQUFHLEVBQUUsTUFBSyxFQUFFO0FBQUUseUJBQU8sRUFBRSxhQUFhLElBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQU0seUJBQU8sRUFBRSxTQUFPLE1BQUksRUFBRSxlQUFhLFNBQU8sRUFBRSxXQUFXLElBQUUsRUFBRSxVQUFVLEVBQUUsWUFBVyxHQUFFLEVBQUUsWUFBWSxJQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsRUFBRSxJQUFJO0FBQUUsdUJBQU8sT0FBSyxTQUFPLFNBQU8sRUFBRSxvQkFBb0IsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBUSxJQUFHLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsRUFBRSxRQUFPLE1BQUs7QUFBQyxzQkFBSSxJQUFFLEVBQUUsV0FBVyxFQUFFO0FBQUUsb0JBQUUsWUFBWSxDQUFDLEtBQUcsT0FBSyxNQUFJLE9BQUssT0FBSyxLQUFHLEVBQUUsSUFBRyxFQUFFLE9BQU8sSUFBRyxLQUFHLEtBQUcsQ0FBQyxDQUFDLElBQUcsS0FBRyxNQUFJLEVBQUUsdUJBQXVCLENBQUMsTUFBSSxLQUFHLElBQUcsT0FBSyxPQUFLLEtBQUc7QUFBQSxnQkFBSTtBQUFDLHVCQUFPLE9BQUssS0FBRyxFQUFFLElBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLEVBQUU7QUFBRSx1QkFBTyxNQUFJLFNBQU8sS0FBRyxJQUFFLE1BQUk7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxRQUFRLHdDQUF1QyxTQUFTLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUc7QUFBQyxzQkFBRztBQUFFLDJCQUFPLEVBQUUsb0JBQW9CLFNBQVMsR0FBRSxFQUFFLENBQUM7QUFBRSxzQkFBRztBQUFHLDJCQUFPLEVBQUUsb0JBQW9CLFNBQVMsSUFBRyxFQUFFLENBQUM7QUFBRSxzQkFBSSxLQUFHLEVBQUUsSUFBSSxFQUFFO0FBQUUseUJBQU8sS0FBRyxFQUFFLG9CQUFvQixFQUFFLElBQUU7QUFBQSxnQkFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUUsdUJBQU8sT0FBSyxJQUFFLFNBQU87QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxTQUFPO0FBQUkseUJBQU8sRUFBRSxFQUFFLGNBQWM7QUFBRSxvQkFBSSxLQUFHLEVBQUU7QUFBUSx1QkFBTyxFQUFFLGFBQWEsRUFBRSxLQUFHLEVBQUUsbUJBQW1CLEdBQUcsV0FBVyxJQUFFLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBRSxFQUFFLCtCQUErQixHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLE1BQUssS0FBRyxFQUFFLE9BQU8sRUFBRTtBQUFFLHVCQUFNLGlCQUFpQixLQUFLLEVBQUUsSUFBRSxLQUFHLEVBQUUsb0JBQW9CLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLFVBQVUsRUFBRSxZQUFXLEdBQUUsRUFBRSxZQUFZO0FBQUUsdUJBQU8sRUFBRSxpQkFBZSxFQUFFLG9CQUFvQixFQUFFLElBQUU7QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsZUFBYTtBQUFFLGdCQUFJLElBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUMsTUFBSyxJQUFHLEtBQUksSUFBRyxNQUFLLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxNQUFLLEtBQUksT0FBTSxLQUFJLE1BQUssS0FBSSxPQUFNLEtBQUksUUFBTyxLQUFJLEtBQUksS0FBSSxRQUFPLEtBQUksTUFBSyxLQUFJLEtBQUksS0FBSSxNQUFLLEtBQUksTUFBSyxLQUFJLE9BQU0sS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxNQUFLLEtBQUksS0FBSSxLQUFJLFFBQU8sS0FBSSxNQUFLLEtBQUksTUFBSyxLQUFJLE9BQU0sS0FBSSxPQUFNLEtBQUksTUFBSyxLQUFJLFFBQU8sS0FBSSxPQUFNLEtBQUksTUFBSyxLQUFJLE1BQUssS0FBSSxPQUFNLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksT0FBTSxLQUFJLFFBQU8sS0FBSSxNQUFLLEtBQUksT0FBTSxLQUFJLE9BQU0sS0FBSSxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxPQUFNLEtBQUksTUFBSyxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksT0FBTSxLQUFJLE1BQUssS0FBSSxLQUFJLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksT0FBTSxLQUFJLFFBQU8sS0FBSSxNQUFLLEtBQUksT0FBTSxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksUUFBTyxLQUFJLE9BQU0sS0FBSSxNQUFLLEtBQUksUUFBTyxLQUFJLE9BQU0sS0FBSSxPQUFNLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxPQUFNLEtBQUksUUFBTyxLQUFJLE1BQUssS0FBSSxPQUFNLEtBQUksT0FBTSxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksUUFBTyxLQUFJLE9BQU0sS0FBSSxNQUFLLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxPQUFNLEtBQUksTUFBSyxLQUFJLEtBQUksS0FBSSxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxPQUFNLEtBQUksUUFBTyxLQUFJLE1BQUssS0FBSSxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksT0FBTSxLQUFJLE1BQUssS0FBSSxRQUFPLEtBQUksT0FBTSxLQUFJLE1BQUssS0FBSSxPQUFNLEtBQUksT0FBTSxLQUFJLFFBQU8sS0FBSSxRQUFPLEtBQUksTUFBSyxLQUFJLE1BQUssS0FBSSxNQUFLLEtBQUksT0FBTSxLQUFJLE9BQU0sS0FBSSxNQUFLLEtBQUksT0FBTSxLQUFJLE9BQU0sS0FBSSxTQUFRLEtBQUksTUFBSyxLQUFJLEtBQUksS0FBSSxPQUFNLEtBQUksTUFBSyxLQUFJLE9BQU0sS0FBSSxRQUFPLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksU0FBUSxLQUFJLElBQUcsS0FBSSxLQUFJLEtBQUksT0FBTSxLQUFJLEtBQUksS0FBSSxTQUFRLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksT0FBTSxLQUFJLE9BQU0sS0FBSSxNQUFLLEtBQUksT0FBTSxLQUFJLE9BQU0sS0FBSSxTQUFRLEtBQUksTUFBSyxLQUFJLEtBQUksS0FBSSxPQUFNLEtBQUksTUFBSyxLQUFJLE9BQU0sS0FBSSxRQUFPLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksU0FBUSxLQUFJLElBQUcsS0FBSSxLQUFJLEtBQUksUUFBTyxLQUFJLE9BQU0sS0FBSSxLQUFJLEtBQUksU0FBUSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLE9BQU0sS0FBSSxVQUFTLEtBQUksT0FBTSxLQUFJLEtBQUksS0FBSSxNQUFLLE1BQUssTUFBSyxNQUFLLFFBQU8sTUFBSyxNQUFLLE1BQUssS0FBSSxNQUFLLEtBQUksTUFBSyxLQUFJLE1BQUssT0FBTSxNQUFLLE9BQU0sTUFBSyxPQUFNLE1BQUssT0FBTSxNQUFLLE9BQU0sTUFBSyxPQUFNLE1BQUssT0FBTSxNQUFLLE9BQU0sTUFBSyxRQUFPLE1BQUssUUFBTyxNQUFLLE1BQUssTUFBSyxRQUFPLE1BQUssUUFBTyxNQUFLLE9BQU0sTUFBSyxPQUFNLE1BQUssUUFBTyxNQUFLLFFBQU8sTUFBSyxPQUFNLE1BQUssT0FBTSxNQUFLLE1BQUssTUFBSyxPQUFNLE1BQUssUUFBTyxNQUFLLE1BQUssTUFBSyxPQUFNLE1BQUssU0FBUSxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssT0FBTSxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssUUFBTyxNQUFLLE1BQUssTUFBSyxPQUFNLE1BQUssT0FBTSxNQUFLLE9BQU0sTUFBSyxNQUFLLE1BQUssT0FBTSxNQUFLLElBQUcsTUFBSyxNQUFLLE1BQUssS0FBSSxNQUFLLE9BQU0sTUFBSyxRQUFPLE1BQUssT0FBTSxNQUFLLE1BQUssTUFB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QU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEVBQUUsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sRUFBRSxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLElBQUcsS0FBRTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLElBQUcsTUFBTTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxJQUFHLE1BQU07QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsSUFBRyxNQUFNO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLElBQUcsTUFBTTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLElBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FBQUcsMkJBQU8sR0FBRyxFQUFFO0FBQUEsdUJBQU87QUFBRSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsRUFBRTtBQUFBLHVCQUFPO0FB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R0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFBLHlCQUFTO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxFQUFFLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxLQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJO0FBQUEseUJBQVk7QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFHLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUEseUJBQVM7QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFBLHlCQUFTO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFBLHlCQUFTO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBQSx5QkFBUztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEVBQUUsTUFBTSxLQUFLLDZDQUE2QztBQUFBLHlCQUFPO0FBQUksNkJBQU8sRUFBRSxNQUFNLEtBQUssa0NBQWtDO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxHQUFHO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEdBQUc7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUEseUJBQVM7QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJO0FBQUEseUJBQVk7QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBQSx5QkFBUztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUEseUJBQVM7QUFBSTtBQUFBLHlCQUFZO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUk7QUFBQSx5QkFBWTtBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUEseUJBQVM7QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFJO0FBQUE7QUFBTyxzQkFBRyxFQUFFLGFBQWEsRUFBRSxNQUFJLElBQUUsR0FBRSxNQUFJLEVBQUUscUJBQW9CO0FBQUMsd0JBQUksS0FBRyxFQUFFLEdBQUUsRUFBRSxLQUFHO0FBQUcsMkJBQUssT0FBSyxLQUFHLElBQUcsT0FBSyxLQUFHLEdBQUcsRUFBRTtBQUFBLGtCQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxNQUFJO0FBQUUsMEJBQU8sR0FBRztBQUFBLHlCQUFXO0FBQUEseUJBQU87QUFBRSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBRyw2QkFBTyxHQUFHLElBQUcsS0FBRTtBQUFBLHlCQUFPO0FBQUcsNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBRyw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSTtBQUFBLHlCQUFZO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FBQUEseUJBQU87QUFBSSw2QkFBTyxHQUFHLEVBQUU7QUFBQSx5QkFBTztBQUFJLDZCQUFPLEdBQUcsRUFBRTtBQUFBLHlCQUFPO0FBQUksNkJBQU8sR0FBRyxFQUFFO0FB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QUFFLEVBQUUsY0FBYyxHQUFFLEdBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxHQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsR0FBRSxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxHQUFHLEdBQUUsRUFBRSxTQUFTLEdBQUUsR0FBRyxFQUFFLGFBQWEsR0FBRSxHQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsRUFBRSxhQUFhLEdBQUUsR0FBRyxHQUFFLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxHQUFHLEdBQUUsRUFBRSxTQUFTLEdBQUUsR0FBRyxRQUFRLEdBQUUsR0FBRyxFQUFFLElBQUk7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsR0FBRSxFQUFFLFNBQVMsR0FBRSxHQUFHLGFBQWEsR0FBRSxHQUFHLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFFLEVBQUUsVUFBVSxHQUFFLEdBQUcsR0FBRSxFQUFFLFNBQVMsR0FBRSxHQUFHLEVBQUUsU0FBTyxNQUFJLFFBQU0sS0FBSyxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxVQUFVLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUyxHQUFFLEdBQUcsR0FBRSxFQUFFLGNBQWMsR0FBRSxHQUFHLEdBQUUsRUFBRSxVQUFVLEdBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxHQUFHLEdBQUUsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxVQUFVLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUyxHQUFFLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxjQUFjLEdBQUUsR0FBRyxHQUFFLEVBQUUsVUFBVSxHQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRyxHQUFFLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFFLEVBQUUsVUFBVSxHQUFFLEdBQUcsR0FBRSxFQUFFLFNBQVMsR0FBRSxHQUFHLEdBQUUsRUFBRSxVQUFVLEdBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsRUFBRSxPQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxtQkFBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRSxvQkFBa0IsR0FBRyxFQUFFLGVBQWUsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLGFBQWEsR0FBRSxFQUFFLFNBQU8sR0FBRyxHQUFFLEdBQUcsSUFBSSxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsSUFBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxFQUFFLFFBQVEsR0FBRSxHQUFHLEdBQUUsRUFBRSxhQUFhO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxjQUFjLEdBQUUsR0FBRyxHQUFFLEVBQUUsVUFBVSxHQUFFLEdBQUcsR0FBRSxHQUFHLElBQUksR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsVUFBVSxHQUFFLEdBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxHQUFHLEdBQUcsR0FBRSxHQUFHLEVBQUUsSUFBSTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFHLEdBQUUsR0FBRyxFQUFFLElBQUk7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsR0FBRyxHQUFFLEdBQUcsRUFBRSxJQUFJO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUyxHQUFFLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxjQUFjLEdBQUUsR0FBRyxHQUFFLEVBQUUsVUFBVSxHQUFFLEdBQUcsR0FBRSxHQUFHLElBQUksR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsUUFBUSxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsUUFBUSxHQUFFLEdBQUcsR0FBRSxFQUFFLGFBQWE7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsR0FBRztBQUFFLG9CQUFJLEtBQUcsRUFBRSxhQUFhLENBQUMsSUFBRSxJQUFFLE1BQUk7QUFBTSxtQkFBRyxHQUFFLEVBQUUsU0FBUSxLQUFHLE1BQU0sR0FBRSxHQUFHLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsRUFBRSxhQUFZLEdBQUcscUNBQXFDLEdBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEtBQUssR0FBRSxHQUFHLEVBQUUsSUFBSTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxJQUFHLEVBQUUsS0FBSSxJQUFHLENBQUM7QUFBRSxvQkFBSSxLQUFHLEVBQUUs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QUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFFO0FBQVUsdUJBQUssR0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRSxLQUFJLEdBQUcsNEJBQTRCLEdBQUUsTUFBSSxHQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxhQUFhLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxRQUFRO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEdBQUcsR0FBRSxHQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUcsRUFBRSxZQUFXLEdBQUcsZ0NBQWdDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsS0FBSSxJQUFHLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBRSxZQUFXLENBQUM7QUFBRSxtQkFBRyxFQUFFLFlBQVcsTUFBTSxHQUFFLEdBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxHQUFHLEVBQUUsR0FBRSxHQUFHLElBQUcsRUFBRSxhQUFXLEVBQUUsV0FBVyxNQUFJLElBQUcsSUFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFFLEVBQUUsVUFBVSxHQUFFLEdBQUcsR0FBRSxFQUFFLFNBQVMsR0FBRSxHQUFHLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFFLEVBQUUsY0FBYyxHQUFFLEdBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxHQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsc0JBQXNCO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtB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O0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxLQUFJLElBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLFVBQVUsR0FBRSxHQUFHLElBQUcsRUFBRSxXQUFXLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsYUFBYSxHQUFFLEVBQUUsa0JBQWdCLEdBQUcsR0FBRSxFQUFFLGVBQWMsRUFBRSxhQUFhLEdBQUUsR0FBRyxJQUFHLEVBQUUsY0FBYyxLQUFJLElBQUcsQ0FBQyxHQUFFLEVBQUUsY0FBYyxTQUFPLE9BQUssR0FBRyxHQUFFLEdBQUcsRUFBRSxhQUFhLEtBQUcsR0FBRyxHQUFFLEVBQUUsYUFBYTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxLQUFJLElBQUcsSUFBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxHQUFHLElBQUcsSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLEdBQUcsSUFBRyxFQUFFLFdBQVcsS0FBSSxJQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsSUFBRyxFQUFFLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUyxHQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsS0FBRyxDQUFDLEtBQUcsR0FBRyxJQUFFLEdBQUcsR0FBRSxFQUFFLFdBQVUsRUFBRSxVQUFVLEdBQUUsR0FBRyxHQUFFLEVBQUUsVUFBVSxHQUFHLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFFLEVBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLFNBQVM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxLQUFJLElBQUcsQ0FBQztBQUFFLG1CQUFHO0FBQUUsb0JBQUksS0FBRyxHQUFHLElBQUcsSUFBRyxJQUFHLENBQUM7QUFBRSxtQkFBRyxFQUFFLFdBQVcsR0FBRSxLQUFHLEdBQUcsSUFBRyxFQUFFLGNBQVksRUFBRSxZQUFZLE1BQUksSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsU0FBUyxHQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUUsWUFBVSxFQUFFLFVBQVUsTUFBSSxJQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRSxXQUFXLEdBQUUsR0FBRyxJQUFHLEVBQUUsY0FBWSxFQUFFLFlBQVksTUFBSSxJQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLFNBQVM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRSxLQUFJLElBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLFdBQVcsR0FBRSxHQUFHLEdBQUUsR0FBRyxLQUFJLEVBQUUsWUFBWSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLEdBQUcsSUFBRyxFQUFFLFdBQVcsS0FBSSxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxTQUFTO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsS0FBSSxJQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLEdBQUcsRUFBRSxhQUFhLEdBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLFdBQVcsR0FBRSxHQUFHLEdBQUUsR0FBRyxLQUFJLEVBQUUsWUFBWSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLEdBQUcsSUFBRyxFQUFFLFdBQVcsS0FBSSxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxTQUFTO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLFdBQVMsRUFBRSxTQUFPLE1BQUksR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLElBQUcsRUFBRSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRSxLQUFLLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxJQUFHLEVBQUUsS0FBSSxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsS0FBSyxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsaUJBQWlCLEVBQUUsR0FBRSxLQUFHLE1BQUksR0FBRyxTQUFPLEdBQUcsTUFBSyxLQUFHO0FBQUcsb0JBQUcsTUFBSSxPQUFLLEtBQUcsRUFBRSxXQUFXLEdBQUcsTUFBSyxFQUFFLElBQUcsTUFBSSxHQUFHLFFBQU0sSUFBRztBQUFDLHNCQUFJLEtBQUcsTUFBSSxNQUFJLENBQUMsRUFBRSx1QkFBdUIsSUFBRyxJQUFHLEVBQUU7QUFBRSx3QkFBSSxHQUFHLEdBQUUsR0FBRyxFQUFFLEdBQUUsTUFBSSxHQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxLQUFHLEdBQUcsR0FBRSxJQUFHLEVBQUUsR0FBRSxNQUFJLEdBQUcsUUFBTSxJQUFHO0FBQUMsc0JBQUksS0FBRyxHQUFHLFNBQU87QUFBSSxxQkFBRyxJQUFHLENBQUMsSUFBRyxFQUFFO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFNBQU8sS0FBRyxDQUFDLENBQUMsRUFBRTtBQUFBLGNBQWtCO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU8sS0FBRyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsR0FBRyxNQUFLLEVBQUUsR0FBRyxHQUFFLEVBQUUsS0FBRyxFQUFFLEtBQUssRUFBRSw0QkFBNEIsQ0FBQyxHQUFFLEVBQUUsSUFBRSxPQUFHLEVBQUUsNkJBQTZCLENBQUMsSUFBRSxFQUFFLFFBQU0sRUFBRSxXQUFXLE9BQUssRUFBRSxLQUFLLEVBQUUseUJBQXlCLEdBQUcsTUFBSyxFQUFFLFdBQVcsR0FBRyxHQUFFLEVBQUUsSUFBRSxPQUFHLEdBQUcsRUFBRSxVQUFVLElBQUUsUUFBRztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBRyxDQUFDLE1BQUksRUFBRSw2QkFBNkIsQ0FBQyxLQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLGlCQUFpQixDQUFDO0FBQUUsc0JBQUcsTUFBSSxFQUFFLDBCQUEwQixFQUFFLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUUsUUFBUSw4QkFBOEIsRUFBRSxVQUFVO0FBQUUsMkJBQU8sRUFBRSxnQkFBZ0IsSUFBRyxDQUFDLEdBQUUsRUFBRSxhQUFhLElBQUcsRUFBRSxHQUFFO0FBQUEsa0JBQUU7QUFBQyx5QkFBTyxFQUFFLFFBQVEsOEJBQThCLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEdBQUcsR0FBRyx5Q0FBeUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEtBQUksRUFBRSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBRSxjQUFZLEdBQUcsRUFBRSxVQUFVLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksRUFBRSxLQUFJLElBQUcsQ0FBQztBQUFFLG1CQUFHLEdBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLFVBQVUsR0FBRSxHQUFHLElBQUcsRUFBRSxXQUFXLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsS0FBSSxFQUFFLEtBQUksSUFBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxHQUFHLElBQUcsSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLEdBQUcsSUFBRyxFQUFFLFdBQVcsS0FBSSxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLFNBQVM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsRUFBRSxLQUFLLEdBQUUsR0FBRyxJQUFHLEVBQUUsTUFBTSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsU0FBUztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxLQUFJLEVBQUUsS0FBSSxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUcsRUFBRSxVQUFVLEdBQUUsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsS0FBSSxFQUFFLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxRQUFRLEdBQUUsRUFBRSxnQkFBYyxHQUFHLEdBQUUsRUFBRSxVQUFTLEVBQUUsV0FBVyxHQUFFLEdBQUcsRUFBRSxXQUFXLElBQUcsRUFBRSxpQkFBZSxHQUFHLEdBQUUsRUFBRSxlQUFhLEVBQUUsVUFBUyxFQUFFLFlBQVksR0FBRSxHQUFHLEtBQUksRUFBRSxlQUFhLEVBQUUsVUFBVSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFHLEVBQUUsWUFBWTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxJQUFHLEVBQUUsS0FBSSxFQUFFLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFHLElBQUcsSUFBRyxJ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dUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxHQUFHLEdBQUUsRUFBRSxTQUFTLEdBQUUsR0FBRyxNQUFNLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRyxHQUFFLEVBQUUsY0FBYyxHQUFFLEdBQUcsR0FBRSxHQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEdBQUUsRUFBRSxTQUFTLEdBQUUsR0FBRyxNQUFNLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRyxHQUFFLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxFQUFFLFNBQVEsR0FBRyxHQUFFLEdBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFFLEVBQUUsU0FBUyxHQUFFLENBQUMsRUFBRSxRQUFNLFNBQU8sR0FBRyxFQUFFLFFBQU0sS0FBRyxjQUFZLFFBQVEsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLElBQUk7QUFBRSxvQkFBSSxLQUFHLEVBQUU7QUFBSyxvQkFBRyxDQUFDO0FBQUcseUJBQU8sR0FBRztBQUFFLHVCQUFLLE1BQUksRUFBRSxvQkFBb0IsRUFBRTtBQUFHLHFCQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUcsSUFBSSxHQUFFLEtBQUcsR0FBRztBQUFLLG1CQUFHLEdBQUUsR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLENBQUMsR0FBRSxFQUFFLFFBQVEsRUFBRSxZQUFXLEVBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsSUFBRyxFQUFFLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUSxHQUFHLEdBQUUsR0FBRyxJQUFHLEVBQUUsUUFBUSxLQUFJLElBQUcsR0FBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEdBQUUsRUFBRSxTQUFTLEdBQUUsR0FBRyxLQUFJLEVBQUUsWUFBVSxFQUFFLFVBQVUsTUFBSSxFQUFFLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsZUFBYSxHQUFHLEtBQUksRUFBRSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLEVBQUUsSUFBSSxHQUFFLEdBQUcsR0FBRSxHQUFHLElBQUcsRUFBRSxLQUFLLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxlQUFlLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxrQkFBRSxTQUFPLEtBQUcsR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEdBQUUsRUFBRSxTQUFTLEdBQUUsR0FBRyxLQUFJLEVBQUUsWUFBVSxFQUFFLFVBQVUsTUFBSSxFQUFFLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsaUJBQWUsR0FBRyxFQUFFLFlBQVksR0FBRSxHQUFHLEdBQUUsR0FBRyxLQUFJLEVBQUUsYUFBYSxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLEVBQUUsZUFBZSxHQUFFLEVBQUUsZ0JBQWMsR0FBRyxFQUFFLFlBQVksR0FBRSxHQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLGtCQUFFLGVBQWEsR0FBRyxLQUFJLEVBQUUsS0FBSSxJQUFHLENBQUMsR0FBRSxHQUFHLElBQUcsR0FBRyxFQUFFLElBQUksR0FBRSxFQUFFLFFBQU0sRUFBRSxrQkFBZ0IsR0FBRyxJQUFHLEVBQUUsS0FBSyxLQUFJLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxHQUFHLEVBQUUsYUFBYTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLEtBQUksSUFBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxHQUFHLEtBQUksSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLElBQUk7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsS0FBSSxJQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLEVBQUUsaUJBQWUsR0FBRyxJQUFHLElBQUcsSUFBRyxDQUFDLElBQUUsR0FBRyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxZQUFXLEVBQUUsaUJBQWUsR0FBRyw0Q0FBNEMsRUFBRSxJQUFFLEdBQUcscUNBQXFDLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLEtBQUksSUFBRyxDQUFDO0FBQUUsb0JBQUcsR0FBRyxHQUFFLEVBQUUsZUFBYSxLQUFHLEdBQUcsS0FBSSxJQUFHLElBQUcsQ0FBQyxHQUFFLEdBQUcsSUFBRyxFQUFFLGVBQWEsR0FBRyxFQUFFLFlBQVksSUFBRSxLQUFHLEdBQUcsSUFBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsaUJBQWdCO0FBQUMscUJBQUc7QUFBRSxzQkFBSSxLQUFHLEVBQUUsZUFBYSxFQUFFLGFBQWEsTUFBSTtBQUFHLHFCQUFHLEtBQUksSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLGVBQWU7QUFBQSxnQkFBQztBQUFDLGtCQUFFLGdCQUFjLEdBQUcsRUFBRSxZQUFZLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxLQUFJLEVBQUUsS0FBSSxJQUFHLENBQUMsR0FBRSxHQUFHO0FBQUUsb0JBQUksS0FBRyxFQUFFO0FBQVMsbUJBQUcsR0FBRSxJQUFHLE1BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFLG9CQUFJLEtBQUcsRUFBRTtBQUFNLHFCQUFJLEVBQUUsYUFBYSxFQUFFLElBQUUsU0FBTyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLGdCQUFnQixFQUFFO0FBQUUscUJBQUcsR0FBRyxHQUFHO0FBQUEsZ0JBQUM7QUFBQyxtQkFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUUsS0FBSSxJQUFHLENBQUM7QUFBRSxtQkFBRyxHQUFFLEtBQUcsR0FBRyxLQUFJLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFJLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLEtBQUksSUFBRyxDQUFDO0FBQUUsbUJBQUcsR0FBRSxHQUFHLEtBQUksSUFBRyxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRyxFQUFFLElBQUk7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRSxVQUFTLE1BQU0sR0FBRSxHQUFHLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsa0JBQUUsZUFBYSxHQUFHLE1BQU0sR0FBRSxHQUFHLElBQUcsRUFBRSxpQkFBZSxHQUFHLEVBQUUsWUFBWSxHQUFFLEdBQUcsR0FBRSxHQUFHLEtBQUksRUFBRSxhQUFhLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEdBQUcsRUFBRSxJQUFJO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLFNBQVMsR0FBRSxHQUFHLEdBQUcsR0FBRSxHQUFHLEVBQUUsVUFBVSxHQUFFLEdBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxFQUFFLGNBQWMsR0FBRSxHQUFHLEdBQUUsRUFBRSxVQUFTLE1BQU0sR0FBRSxHQUFHLEVBQUUsY0FBYztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxHQUFHLEdBQUUsR0FBRyxFQUFFLE9BQU8sR0FBRSxHQUFHLEdBQUUsRUFBRSxhQUFhLEdBQUUsR0FBRyxHQUFFLEdBQUcsRUFBRSxVQUFVLEdBQUUsR0FBRyxJQUFJO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLEVBQUUsZUFBZSxHQUFFLEdBQUcsR0FBRSxFQUFFLFVBQVMsTUFBTSxHQUFFLEdBQUcsRUFBRSxlQUFlO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG9CQUFHLEdBQUcsR0FBRyxHQUFFLEVBQUUsb0JBQW9CLENBQUMsR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxFQUFFLFNBQVEsQ0FBQztBQUFFLHFCQUFHLEVBQUUsT0FBTyxHQUFFLEdBQUcsR0FBRSxFQUFFLGFBQWEsR0FBRSxFQUFFLFdBQVcsY0FBWSxFQUFFLFdBQVcsV0FBVyxTQUFPLEtBQUcsR0FBRyxHQUFFLEdBQUcsRUFBRSxVQUFVLEdBQUUsR0FBRyxFQUFFLFlBQVcsQ0FBQyxHQUFFLEdBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUMsbUJBQUcsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdB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LEdBQUUsS0FBRyxFQUFFLGFBQVksS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHdCQUFJLEtBQUcsR0FBRztBQUFJLHdCQUFHLEdBQUcsRUFBRTtBQUFFLDZCQUFNO0FBQUEsa0JBQUU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG9CQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsc0JBQUksS0FBRztBQUFHLHVCQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRztBQUFBLGdCQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsc0JBQUksR0FBRyxXQUFTLEdBQUcsR0FBRSxJQUFHLE1BQU0sR0FBRSxHQUFHO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFJLEdBQUcsR0FBRyxHQUFFLEdBQUcsR0FBRSxHQUFHLENBQUM7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUksR0FBRyxHQUFFLEdBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBSyxHQUFHLENBQUMsR0FBRSxHQUFHLEVBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksR0FBRyxHQUFFLEdBQUcsQ0FBQztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLHNCQUFJLEdBQUcsR0FBRSxHQUFHLEdBQUUsRUFBRTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxzQkFBSSxHQUFHLENBQUMsR0FBRSxHQUFHO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsa0JBQUUsUUFBUSxFQUFFLEtBQUcsRUFBRSxhQUFhLENBQUMsSUFBRSxLQUFHLEdBQUcsR0FBRSxHQUFHLEVBQUUsTUFBSSxHQUFHLEdBQUUsR0FBRyxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBRSxHQUFHLEdBQUUsRUFBRSxJQUFFLEdBQUcsRUFBRSxHQUFFLEdBQUc7QUFBQSxjQUFFO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxtQkFBRyxHQUFFLElBQUcsT0FBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG1CQUFHLEdBQUUsSUFBRyxPQUFNLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxvQkFBRyxFQUFFLGVBQWUsQ0FBQyxLQUFHLEVBQUU7QUFBYyx5QkFBTyxHQUFHLEdBQUUsRUFBRSxhQUFhO0FBQUUsbUJBQUcsR0FBRSxJQUFHLEtBQUs7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxtQkFBRyxHQUFFLElBQUcsSUFBSTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxrQkFBa0IsRUFBRTtBQUFFLHVCQUFPLE1BQUksR0FBRyxRQUFNLEVBQUUsT0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUcsQ0FBQyxFQUFFLFFBQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEtBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxjQUFjLEtBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxVQUFVLEtBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxTQUFTLEtBQUcsQ0FBQyxHQUFHLGtCQUFnQixDQUFDLEdBQUcsaUJBQWUsQ0FBQyxHQUFHLFFBQU0sQ0FBQyxHQUFHLGVBQWEsRUFBRSxhQUFhLEdBQUcsSUFBSTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG1CQUFHLEdBQUUsRUFBRSxJQUFFLEdBQUcsR0FBRSxJQUFHLEdBQUcsSUFBRSxHQUFHLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRztBQUFDLG1CQUFHLEdBQUUsSUFBRyxJQUFJO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHdCQUFPLElBQUU7QUFBQSx1QkFBUztBQUFFO0FBQUEsdUJBQVc7QUFBRyx1QkFBRyxHQUFHO0FBQUU7QUFBQSx1QkFBVztBQUFFLHVCQUFHLEdBQUUsR0FBRyxHQUFHO0FBQUU7QUFBQSx1QkFBVztBQUFHLHVCQUFHLEdBQUUsR0FBRyxHQUFHLEdBQUUsR0FBRztBQUFFO0FBQUEsdUJBQVc7QUFBRSx1QkFBRyxHQUFFLEdBQUcsR0FBRztBQUFFO0FBQUE7QUFBQSxjQUFNO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLG1CQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLG1CQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQUssV0FBUyxLQUFHLElBQUcsT0FBSyxXQUFTLEtBQUcsS0FBRyxHQUFHLFNBQU8sS0FBRztBQUFHLG9CQUFJLEtBQUcsT0FBSztBQUFPLG9CQUFHLEVBQUUsTUFBSSxLQUFHLFFBQU87QUFBQyxzQkFBSSxLQUFHLE9BQUssVUFBUSxNQUFJLEdBQUcsVUFBUSxPQUFLO0FBQUUsc0JBQUcsTUFBSSxLQUFHLE9BQU07QUFBQyx5QkFBRyxFQUFFLEVBQUUsR0FBRSxNQUFJLEdBQUcsRUFBRTtBQUFFO0FBQUEsa0JBQU07QUFBQyxzQkFBRyxLQUFHLFVBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLE1BQUksTUFBSSxHQUFHLEdBQUcsS0FBSSxJQUFFLElBQUcsS0FBRyxFQUFFLEVBQUUsR0FBRTtBQUFHLHlCQUFHLEtBQUcsRUFBRSxPQUFLLENBQUMsTUFBSSxNQUFJLEVBQUUsb0JBQW9CLElBQUcsRUFBRSxNQUFJLEdBQUcsSUFBRSxLQUFHLE9BQUssRUFBRSxLQUFHLFdBQVMsR0FBRztBQUFBLHVCQUFNO0FBQUMsc0JBQUUsTUFBTSxLQUFLLEVBQUU7QUFBRSx3QkFBSSxNQUFJLEtBQUcsWUFBVSxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSwwQkFBSSxHQUFHLEVBQUUsR0FBRSxLQUFHLFNBQUksS0FBRyxPQUFLLEdBQUcsR0FBRSxLQUFHLE9BQUssR0FBRztBQUFFLDZCQUFRLEtBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLFFBQU8sS0FBRyxRQUFPLEtBQUcsT0FBRyxLQUFHLEdBQUUsS0FBRyxJQUFHLE1BQUs7QUFBQywwQkFBSSxLQUFHLEdBQUcsS0FBRztBQUFJLDBCQUFHLEtBQUc7QUFBRywyQkFBRyxHQUFFLEdBQUcsRUFBRTtBQUFBLCtCQUFVLElBQUc7QUFBQyw2QkFBRyxNQUFJLEdBQUcsU0FBTyxLQUFHLEdBQUcsTUFBSSxPQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUUsR0FBRyxFQUFFLEdBQUUsR0FBRyxFQUFFO0FBQUUsNEJBQUksS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsNkJBQUcsTUFBSSxLQUFHLFNBQU8sTUFBSSxHQUFHLEdBQUUsS0FBRyxPQUFJLEdBQUcsRUFBRSxHQUFFLEtBQUcsU0FBSSxNQUFJLEtBQUcsT0FBSyxHQUFHO0FBQUEsc0JBQUM7QUFBQywwQkFBRyxLQUFHLEdBQUcsRUFBRSxHQUFFLElBQUc7QUFBQyw0QkFBSSxLQUFHLEVBQUUsZ0JBQWdCLEVBQUU7QUFBRSwyQkFBRyxHQUFHLEdBQUc7QUFBQSxzQkFBQztBQUFNLDZCQUFHO0FBQUcsMkJBQUcsR0FBRyxLQUFJLEdBQUcsSUFBRyxHQUFFLElBQUcsRUFBRSxHQUFFLE9BQUssR0FBRyxHQUFFLEtBQUcsUUFBSSxLQUFHO0FBQUEsb0JBQUU7QUFBQyx3QkFBSSxLQUFHLEtBQUcsRUFBRSxhQUFhLEVBQUUsSUFBRSxHQUFFLEtBQUcsTUFBSSxDQUFDLEVBQUUsS0FBRyxPQUFNLE1BQUksTUFBSSxPQUFLLFNBQU8sR0FBRyxxQkFBbUIsS0FBRyxNQUFJLEtBQUc7QUFBRywyQkFBSyxNQUFJLENBQUMsS0FBRyxHQUFHLElBQUcsR0FBRyxLQUFJLElBQUcsRUFBRSxJQUFFLEdBQUcsR0FBRyxJQUFHLE9BQUssS0FBRyxHQUFHLE1BQUksUUFBTSxHQUFHLE9BQUssS0FBRyxNQUFJLENBQUMsTUFBSSxHQUFHLE9BQUssTUFBSSxPQUFLLFNBQU8sR0FBRyxPQUFLLEdBQUcsTUFBSSxHQUFHLEdBQUcsR0FBRSxLQUFHLE9BQUssR0FBRyxHQUFFLEdBQUcsRUFBRTtBQUFFLHdCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFFLHlCQUFHLEdBQUcsRUFBRSxJQUFFLEtBQUcsV0FBUyxHQUFHO0FBQUEsa0JBQUM7QUFBQyx3QkFBSSxHQUFHLEVBQUUsR0FBRSxLQUFHLFVBQVEsTUFBSSxNQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUFBLGdCQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLGFBQWEsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxtQkFBbUIsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxNQUFNLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLElBQUc7QUFBQyxtQkFBRyxZQUFZLEdBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxpQkFBaUIsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxLQUFJO0FBQUMsbUJBQUcsdUJBQXVCLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsYUFBYSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLGNBQWMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBRyxlQUFlLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsYUFBYSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxtQkFBRyxXQUFXLEdBQUc7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQUcsY0FBYyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFHLG1CQUFpQixHQUFHLGlCQUFpQixDQUFDLElBQUUsR0FBRyxNQUFNLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsc0JBQUksV0FBUyxJQUFFO0FBQUcseUJBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRTtBQUFLLHFCQUFHLFVBQVUsS0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxtQkFBRyxlQUFlO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxtQkFBRyxlQUFlO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLHVCQUFPLEtBQUcsR0FBRyxHQUFFLElBQUcsRUFBRSxJQUFFLEdBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxJQUFHO0FBQUMsc0JBQUksR0FBRyxDQUFDLEdBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRSxNQUFJLEdBQUcsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLGNBQWMsQ0FBQztBQUFFLHVCQUFPLEdBQUcsRUFBRSxHQUFFLEtBQUcsSUFBRSxLQUFHLEtBQUcsR0FBRztBQUFBLGNBQU07QUFB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LHlCQUFPLEdBQUcsZ0JBQWMsRUFBRSxHQUFHLGVBQWMsRUFBRSxJQUFFLEVBQUUsR0FBRyxlQUFjLEVBQUU7QUFBQSxxQkFBTztBQUFJLHlCQUFPLEVBQUUsR0FBRyxZQUFXLEVBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEscUJBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFPLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxxQkFBTztBQUFJLHlCQUFPLEdBQUcsT0FBSyxFQUFFLEdBQUcsTUFBSyxFQUFFLElBQUUsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLHFCQUFPO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBLHFCQUFRO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUkseUJBQU8sRUFBRSxHQUFHLFdBQVUsRUFBRTtBQUFBLHFCQUFPO0FBQUkseUJBQU8sR0FBRyxJQUFHLEtBQUksRUFBRSxJQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUUsSUFBRSxFQUFFLEdBQUcsV0FBVSxFQUFFO0FBQUEscUJBQU87QUFBSSx5QkFBTyxFQUFFLEdBQUcsVUFBUyxFQUFFO0FBQUEscUJBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHNCQUFJLEtBQUc7QUFBRyx5QkFBTyxFQUFFLEdBQUcsWUFBVyxFQUFFO0FBQUEscUJBQU87QUFBSSx5QkFBTyxFQUFFLEdBQUcsVUFBUyxFQUFFO0FBQUEscUJBQU87QUFBSSxzQkFBSSxLQUFHLEVBQUUsZ0JBQWdCLEdBQUcsYUFBYTtBQUFFLHlCQUFPLEVBQUUsSUFBRyxFQUFFO0FBQUEscUJBQU87QUFBSSx5QkFBTyxFQUFFLGNBQWMsR0FBRyxPQUFPO0FBQUEscUJBQU87QUFBQSxxQkFBUztBQUFJLHlCQUFPLEVBQUUsY0FBYyxHQUFHLGVBQWU7QUFBQSxxQkFBTztBQUFJLHlCQUFPLEVBQUUsR0FBRyxTQUFRLEVBQUU7QUFBQSxxQkFBTztBQUFJLHlCQUFPLEVBQUUsR0FBRyxPQUFNLEVBQUU7QUFBQSxxQkFBTztBQUFJLHlCQUFPLEVBQUUsR0FBRyxXQUFVLEVBQUU7QUFBQTtBQUFVLHlCQUFNO0FBQUE7QUFBQSxZQUFHO0FBQUMscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxZQUFZLEVBQUU7QUFBRSxrQkFBRyxHQUFHLFFBQU87QUFBQyxvQkFBSSxLQUFHLEVBQUUsS0FBSyxFQUFFO0FBQUUsb0JBQUcsR0FBRyxTQUFPO0FBQUcseUJBQU07QUFBRyxvQkFBRyxHQUFHLFNBQU8sTUFBSSxHQUFHLFdBQVM7QUFBRSx5QkFBTyxHQUFHLEdBQUcsU0FBTyxHQUFHLFNBQU87QUFBQSxjQUFFO0FBQUMscUJBQU07QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxrQkFBRyxDQUFDLENBQUMsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxZQUFZLEdBQUUsS0FBRyxFQUFFLFlBQVksSUFBRyxFQUFFO0FBQUUsdUJBQU0sRUFBQyxlQUFjLElBQUcsTUFBSyxHQUFFO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTSxDQUFDLENBQUMsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGlCQUFlO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsS0FBSyxHQUFHLFlBQVksRUFBRSxHQUFFLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsU0FBTztBQUFBLGNBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsRUFBRSxLQUFLLEdBQUcsT0FBTyxZQUFZLEdBQUUsU0FBUyxJQUFHO0FBQUMsdUJBQU8sRUFBRSxhQUFhLEVBQUUsS0FBRyxFQUFFLElBQUcsRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFFLHFCQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsTUFBSSxFQUFFLFNBQVMsR0FBRyxZQUFZLEdBQUUsRUFBRSxDQUFDLEdBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLFNBQU87QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBRyxFQUFFLG1CQUFtQixFQUFFO0FBQUUsdUJBQU8sR0FBRztBQUFLLGtCQUFHLEVBQUUsbUJBQW1CLEVBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxhQUFXLEVBQUUsS0FBSyxHQUFHLFdBQVUsRUFBRTtBQUFFLG9CQUFHO0FBQUcseUJBQU87QUFBQSxjQUFFO0FBQUMsa0JBQUcsRUFBRSxrQkFBa0IsRUFBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLEtBQUssR0FBRyxZQUFZLEdBQUUsRUFBRTtBQUFFLG9CQUFHO0FBQUcseUJBQU87QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFHLEVBQUUsbUJBQW1CLEVBQUU7QUFBRSx1QkFBTyxHQUFHO0FBQUssa0JBQUcsRUFBRSxzQkFBc0IsRUFBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLEtBQUssR0FBRyxXQUFVLEVBQUU7QUFBRSxvQkFBRztBQUFHLHlCQUFPO0FBQUEsY0FBRTtBQUFDLGtCQUFHLEVBQUUscUJBQXFCLEVBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxLQUFLLEdBQUcsWUFBWSxHQUFFLEVBQUU7QUFBRSxvQkFBRztBQUFHLHlCQUFPO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSTtBQUFHLHFCQUFPLEVBQUUsYUFBYSxJQUFHLFNBQVMsSUFBRztBQUFDLHVCQUFPLEVBQUUsV0FBVyxFQUFFLE1BQUksS0FBRyxLQUFJLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxNQUFNLEtBQUcsQ0FBQyxFQUFFLFdBQVcsR0FBRyxNQUFNLEtBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxNQUFNO0FBQUEsY0FBQyxDQUFDLEdBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsa0JBQUc7QUFBRyx1QkFBTztBQUFHLGtCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUscUJBQU8sTUFBSSxHQUFHLGtCQUFrQixFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0RBQThDO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBRyxDQUFDO0FBQUcsd0JBQU8sR0FBRztBQUFBLHVCQUFXO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxHQUFHLEVBQUU7QUFBQSx1QkFBTztBQUFBLHVCQUFTO0FBQUksMkJBQU8sR0FBRyxFQUFFO0FBQUE7QUFBRSxrQkFBRyxFQUFFLG1CQUFtQixFQUFFO0FBQUUsdUJBQU8sR0FBRztBQUFBLFlBQUk7QUFBQyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLEdBQUcsY0FBYTtBQUFDLG9CQUFHLEdBQUcsYUFBYSxRQUFNLEdBQUcsYUFBYTtBQUFjO0FBQU8sb0JBQUcsR0FBRyxhQUFhO0FBQUsseUJBQU8sR0FBRyxhQUFhO0FBQUssb0JBQUcsR0FBRyxhQUFhLGVBQWM7QUFBQyxzQkFBRyxFQUFFLGVBQWUsR0FBRyxhQUFhLGFBQWEsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRSxrQkFBa0IsR0FBRyxhQUFhLGNBQWMsUUFBUTtBQUFFLDJCQUFPLEtBQUcsR0FBRyxPQUFLO0FBQUEsa0JBQU0sV0FBUyxFQUFFLGtCQUFrQixHQUFHLGFBQWEsYUFBYTtBQUFFLDJCQUFPLEdBQUcsYUFBYSxjQUFjO0FBQUEsZ0JBQUk7QUFBQSxjQUFDO0FBQUMsa0JBQUcsQ0FBQztBQUFHLHVCQUFPLEdBQUc7QUFBQSxZQUFlO0FBQUMscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBRyxHQUFHLGNBQWE7QUFBQyxvQkFBRyxFQUFFLGVBQWUsR0FBRyxZQUFZLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEVBQUUsa0JBQWtCLEdBQUcsYUFBYSxRQUFRO0FBQUUseUJBQU8sS0FBRyxHQUFHLGFBQWEsU0FBUyxHQUFHLE9BQUs7QUFBQSxnQkFBTSxXQUFTLEVBQUUsa0JBQWtCLEdBQUcsWUFBWTtBQUFFLHlCQUFPLEdBQUcsYUFBYTtBQUFBLGNBQUk7QUFBQyxrQkFBRyxDQUFDO0FBQUcsdUJBQU8sR0FBRztBQUFBLFlBQWU7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBRyxHQUFHLE1BQU0sV0FBUztBQUFFLHVCQUFPLEdBQUcsTUFBTSxHQUFHO0FBQUEsWUFBVTtBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHO0FBQU8sa0JBQUcsRUFBRSxXQUFXLEVBQUUsTUFBSSxNQUFJLEdBQUcsU0FBTyxNQUFJLEVBQUUsU0FBUyxHQUFHLFdBQVUsRUFBRSxJQUFFLEdBQUcsU0FBTyxLQUFHLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxFQUFFLGtCQUFrQixFQUFFLElBQUUsR0FBRyxTQUFPLEtBQUcsRUFBRSxzQkFBc0IsRUFBRSxLQUFHLEVBQUUscUJBQXFCLEVBQUUsSUFBRSxHQUFHLFNBQU8sTUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUUsR0FBRyxTQUFPLEtBQUcsRUFBRSxrQkFBa0IsRUFBRSxJQUFFLEdBQUcsU0FBTyxNQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBRSxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sTUFBSSxFQUFFLG9CQUFvQixFQUFFLElBQUUsR0FBRyxTQUFPLE1BQUksRUFBRSwwQkFBMEIsRUFBRSxJQUFFLEdBQUcsU0FBTyxNQUFJLEVBQUUseUJBQXlCLEVBQUUsSUFBRSxHQUFHLFNBQU8sT0FBSyxFQUFFLHlCQUF5QixFQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsb0JBQUc7QUFBRyx5QkFBTztBQUFBLGNBQUU7QUFBQyxtQkFBSSxHQUFHLFNBQU8sT0FBSyxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sUUFBTSxFQUFFLDBCQUEwQixFQUFFLEtBQUcsR0FBRyxhQUFhLFdBQVMsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxhQUFhO0FBQUcsb0JBQUcsRUFBRSxhQUFhLEdBQUcsSUFBSTtBQUFFLHlCQUFPLEdBQUc7QUFBQSxjQUFJO0FBQUMsa0JBQUcsR0FBRyxTQUFPLEtBQUk7QUFBQyxvQkFBRyxFQUFFLGVBQWUsRUFBRSxLQUFHLEdBQUcsWUFBVztBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFHLFFBQU8sRUFBRTtBQUFFLHNCQUFHO0FBQUcsMkJBQU87QUFBQSxnQkFBRTtBQUFDLG9CQUFHLEVBQUUsb0JBQW9CLEVBQUUsS0FBRyxHQUFHLFlBQVc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUc7QUFBRywyQkFBTztBQUFBLGdCQUFFO0FBQUEsY0FBQztBQUFDLGtCQUFHLEdBQUcsU0FBTyxLQUFJO0FBQUMsb0JBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFHLEdBQUcsZ0JBQWMsRUFBRSxrQkFBa0IsRUFBRSxLQUFHLEdBQUcsZ0JBQWMsRUFBRSxrQkFBa0IsRUFBRSxLQUFHLEVBQUUsa0JBQWtCLEVBQUU7QUFBRSx5QkFBTyxHQUFHO0FBQUssb0JBQUcsRUFBRSxvQkFBb0IsRUFBRSxLQUFHLEdBQUcsZ0JBQWMsRUFBRSxrQkFBa0IsR0FBRyxZQUFZO0FBQUUseUJBQU8sR0FBRyxhQUFhO0FBQUEsY0FBSTtBQUFDLGtCQUFHLEdBQUcsU0FBTyxPQUFLLEVBQUUsb0JBQW9CLEVBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxvQkFBRztBQUFHLHlCQUFPO0FBQUEsY0FBRTtBQUFDLGtCQUFHLEdBQUcsU0FBTyxJQUFHO0FBQUMsb0JBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFFO0FBQUMsc0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFLHNCQUFHO0FBQUcsMkJBQU87QUFBQSxnQkFBRTtBQUFDLG9CQUFHLEVBQUUsbUJBQW1CLEVBQUU7QUFBRSx5QkFBTyxFQUFFLHFCQUFxQixHQUFHLFVBQVU7QUFBQSxjQUFDO0FBQUMsa0JBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSwwQkFBMEIsRUFBRTtBQUFFLHVCQUFPLEdBQUc7QUFBVyxrQkFBRyxHQUFHLFNBQU8sUUFBTSxFQUFFLG9CQUFvQixFQUFFLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxNQUFJLEdBQUc7QUFBZ0IsdUJBQU8sR0FBRztBQUFnQixtQkFBSSxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sUUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUcsR0FBRyxVQUFRLEdBQUcsTUFBSztBQUFDLG9CQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsb0JBQUc7QUFBRyx5QkFBTztBQUFBLGNBQUU7QUFBQyxrQkFBRyxHQUFHLFNBQU8sSUFBRztBQUFDLG9CQUFHLEVBQUUsMkJBQTJCLEVBQUUsS0FBRyxHQUFHLGNBQVksRUFBRSxvQkFBb0IsR0FBRyxVQUFVO0FBQUUseUJBQU8sR0FBRyxXQUFXO0FBQVMsb0JBQUcsRUFBRSxzQkFBc0IsRUFBRSxLQUFHLEVBQUUsb0JBQW9CLEdBQUcsV0FBVztBQUFFLHlCQUFPLEdBQUcsWUFBWTtBQUFBLGNBQVE7QUFBQyxrQkFBRyxHQUFHLFNBQU8sT0FBSyxFQUFFLGdCQUFnQixFQUFFO0FBQUUsdUJBQU8sR0FBRyxjQUFjO0FBQUssa0JBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSwyQkFBMkIsRUFBRSxLQUFHLEVBQUUsaUJBQWlCLEdBQUcsTUFBTTtBQUFFLHVCQUFPLEdBQUc7QUFBSyxrQkFBRyxHQUFHLFNBQU8sT0FBSyxFQUFFLG1CQUFtQixFQUFFLEtBQUcsR0FBRyxhQUFXLE9BQUssRUFBRSxvQkFBb0IsR0FBRyxJQUFJO0FBQUUsdUJBQU8sR0FBRyxLQUFLO0FBQVMsa0JBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSxtQkFBbUIsRUFBRSxLQUFHLEdBQUcsYUFBVyxPQUFLLEVBQUUsZ0JBQWdCLEdBQUcsSUFBSSxLQUFHLEVBQUUsb0JBQW9CLEdBQUcsS0FBSyxXQUFXO0FBQUUsdUJBQU8sR0FBRyxLQUFLLFlBQVk7QUFBUyxrQkFBRyxDQUFDLElBQUc7QUFBQyxxQkFBSSxHQUFHLFNBQU8sT0FBSyxFQUFFLGdCQUFnQixFQUFFLEtBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFHLEdBQUcsU0FBTyxPQUFLLEVBQUUsbUJBQW1CLEVBQUUsS0FBRyxHQUFHLFNBQU8sT0FBSyxFQUFFLGtCQUFrQixFQUFFLEtBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSxrQkFBa0IsRUFBRSxLQUFHLEdBQUcsU0FBTyxNQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBSSxHQUFHO0FBQVcseUJBQU8sRUFBRSxxQkFBcUIsR0FBRyxVQUFVO0FBQUUscUJBQUksR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLFFBQU0sRUFBRSxtQkFBbUIsRUFBRSxLQUFHLEdBQUcsa0JBQWdCO0FBQUcseUJBQU8sRUFBRSxxQkFBcUIsR0FBRyxLQUFLO0FBQUUsb0JBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSxlQUFlLEVBQUUsS0FBRyxFQUFFLG9CQUFvQixHQUFHLElBQUk7QUFBRSx5QkFBTyxHQUFHLEtBQUs7QUFBUyxvQkFBRyxHQUFHLFNBQU8sT0FBSyxFQUFFLGlCQUFpQixFQUFFLEtBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSxpQkFBaUIsRUFBRTtBQUFFLHlCQUFPLEVBQUUscUJBQXFCLEdBQUcsVUFBVTtBQUFBLGNBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUU7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsS0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLCtCQUE2QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxJQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLElBQUcsSUFBRyxTQUFTLElBQUc7QUFBQyx1QkFBTyxFQUFFLHNCQUFzQixFQUFFLEtBQUcsRUFBRSxVQUFVLEdBQUcsSUFBSSxLQUFHLEVBQUUsb0JBQW9CLEVBQUU7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxFQUFFLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLElBQUcsT0FBRyxJQUFHLEtBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxtQkFBaUI7QUFBRSxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxJQUFHLE1BQUcsUUFBTyxLQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLElBQUcsSUFBRyxLQUFHLFdBQVU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsWUFBWSxFQUFFLEdBQUUsS0FBRyxFQUFFLGdCQUFnQixJQUFHLElBQUcsU0FBUyxJQUFHLElBQUc7QUFBQyx5QkFBTztBQUFBLGdCQUFFLEdBQUUsU0FBUyxJQUFHLElBQUc7QUFBQyxzQkFBSSxLQUFHLEtBQUcsR0FBRyxJQUFJLGFBQWEsSUFBRSxHQUFHLElBQUksU0FBUyxJQUFHLElBQUU7QUFBRSx5QkFBTyxLQUFHLEtBQUcsSUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFFLEdBQUcsS0FBRyxNQUFJLEdBQUcsR0FBRyxLQUFHLEVBQUUsSUFBRSxJQUFFLElBQUUsTUFBSSxPQUFLLE1BQUksR0FBRyxLQUFHLE1BQUksR0FBRyxLQUFHLEdBQUcsT0FBTyxNQUFJLE1BQUksR0FBRyxHQUFHLEtBQUcsRUFBRSxJQUFFLElBQUU7QUFBQSxnQkFBRSxDQUFDO0FBQUUsdUJBQU8sS0FBRyxFQUFDLE9BQU0sR0FBRSxJQUFFLE1BQUksS0FBRyxHQUFHLE9BQUssS0FBRyxHQUFHLEtBQUksb0JBQWtCLEVBQUMsT0FBTSxHQUFFO0FBQUEsY0FBQztBQUFFO0FBQUUsMkJBQU87QUFBQyxzQkFBSSxLQUFHLEdBQUc7QUFBRSxzQkFBRyxPQUFPLE1BQUk7QUFBUywyQkFBTyxHQUFHO0FBQU0sMEJBQU87QUFBQSx5QkFBUTtBQUFpQiwrQkFBUztBQUFBO0FBQUEsZ0JBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBSSxLQUFHLEtBQUcsR0FBRyxhQUFhLElBQUUsR0FBRyxTQUFTLElBQUcsSUFBRTtBQUFFLG9CQUFHLEtBQUc7QUFBRyx5QkFBTTtBQUFHLG9CQUFJLEtBQUcsR0FBRyxPQUFPO0FBQUUsb0JBQUcsS0FBRyxNQUFJLE9BQUssT0FBSyxHQUFHLFNBQU8sS0FBRztBQUFJLHlCQUFNO0FBQUcsb0JBQUcsTUFBSSxPQUFLLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSxzQkFBRyxNQUFJLEdBQUcsRUFBRTtBQUFFLDJCQUFPLEtBQUcsSUFBRztBQUFBLGdCQUFFO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQVEsS0FBRyxHQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRSxLQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLElBQUcsR0FBRyxRQUFPLEVBQUU7QUFBRSxvQkFBRyxDQUFDO0FBQUc7QUFBTyxxQkFBRztBQUFBLGNBQUU7QUFBQyxxQkFBTztBQUFBLFlBQUU7QUFBQyxjQUFFLGlDQUErQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFFLHFCQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUcsS0FBRyxHQUFHLFNBQVMsRUFBRSxLQUFHLEtBQUcsR0FBRyxPQUFPLElBQUUsS0FBRyxHQUFHLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEVBQUU7QUFBRSx1QkFBUyxHQUFHLElBQUc7QUFBQyx1QkFBTyxFQUFFLFFBQVEsRUFBRSxLQUFHLEdBQUcsUUFBTSxHQUFHLE1BQUksS0FBRyxFQUFFLGFBQWEsR0FBRyxZQUFZLEVBQUUsR0FBRSxTQUFTLElBQUc7QUFBQyxzQkFBSSxLQUFHLEdBQUcsT0FBSyxHQUFHLE9BQUssR0FBRyxNQUFJLEdBQUcsT0FBSyxHQUFHLFFBQU0sR0FBRztBQUFJLHlCQUFPLE1BQUksR0FBRyxJQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsSUFBRTtBQUFBLGdCQUFNLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsTUFBSSxFQUFFO0FBQUUscUJBQU8sRUFBRSxNQUFNLE9BQU8sRUFBRSxNQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUU7QUFBRyx1QkFBUyxHQUFHLElBQUc7QUFBQyxvQkFBRyxHQUFHLEVBQUUsS0FBRyxHQUFHLFNBQU87QUFBRSx5QkFBTztBQUFHLG9CQUFJLEtBQUcsR0FBRyxZQUFZLEVBQUUsR0FBRSxLQUFHLEVBQUUsZ0JBQWdCLElBQUcsSUFBRyxTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPO0FBQUEsZ0JBQUUsR0FBRSxTQUFTLElBQUcsSUFBRztBQUFDLHlCQUFPLEtBQUcsR0FBRyxJQUFJLE1BQUksQ0FBQyxHQUFHLEtBQUcsTUFBSSxNQUFJLEdBQUcsS0FBRyxHQUFHLE1BQUksSUFBRSxJQUFFO0FBQUEsZ0JBQUUsQ0FBQztBQUFFLG9CQUFHLE1BQUksS0FBRyxHQUFHLEtBQUk7QUFBQyxzQkFBSSxLQUFHLEdBQUc7QUFBSSxzQkFBRyxLQUFHLEdBQUcsS0FBSTtBQUFDLHdCQUFJLEtBQUcsR0FBRyxTQUFTLElBQUcsQ0FBQyxFQUFFLEdBQUUsS0FBRyxNQUFJLE1BQUksQ0FBQyxHQUFHLElBQUcsRUFBRSxLQUFHLEdBQUcsRUFBRTtBQUFFLHdCQUFHLElBQUc7QUFBQywwQkFBSSxLQUFHLEdBQUcsSUFBRyxJQUFHLElBQUcsR0FBRyxJQUFJO0FBQUUsNkJBQU8sTUFBSSxHQUFHLElBQUcsRUFBRTtBQUFBLG9CQUFDO0FBQU0sNkJBQU8sR0FBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLGtCQUFFLE1BQU0sT0FBTyxPQUFLLFVBQVEsR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPLEtBQUcsRUFBRSw2QkFBNkIsRUFBRSxDQUFDO0FBQUUsb0JBQUksS0FBRyxHQUFHLElBQUcsR0FBRyxRQUFPLElBQUcsR0FBRyxJQUFJO0FBQUUsdUJBQU8sTUFBSSxHQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLFFBQVEsRUFBRSxLQUFHLENBQUMsR0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUcsR0FBRyxFQUFFO0FBQUUsdUJBQU87QUFBRyxrQkFBSSxLQUFHLEdBQUcsWUFBWSxFQUFFO0FBQUUsa0JBQUcsR0FBRyxXQUFTO0FBQUUsdUJBQU87QUFBRyxrQkFBSSxLQUFHLEdBQUcsSUFBRyxHQUFHLFFBQU8sSUFBRyxHQUFHLElBQUk7QUFBRSxxQkFBTyxNQUFJLEdBQUcsSUFBRyxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHVCQUFRLEtBQUcsS0FBRyxHQUFFLE1BQUksR0FBRSxNQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHO0FBQUksb0JBQUcsR0FBRyxFQUFFO0FBQUUseUJBQUssTUFBSSxPQUFLLE1BQUksT0FBSyxRQUFNLEVBQUUsTUFBTSxLQUFLLHdGQUF3RjtBQUFBLHlCQUFVLEdBQUcsR0FBRyxLQUFJLEVBQUU7QUFBRSx5QkFBTyxHQUFHO0FBQUEsY0FBRztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUcsT0FBSyxXQUFTLEtBQUcsR0FBRyxJQUFHLEVBQUUsSUFBRyxNQUFJLEVBQUUsMkJBQTJCLEVBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxTQUFTLEVBQUUsR0FBRSxLQUFHLEdBQUcsT0FBTztBQUFFLG9CQUFHLEtBQUcsTUFBSSxLQUFHO0FBQUcseUJBQU07QUFBRyxvQkFBRyxPQUFLO0FBQUcseUJBQU0sQ0FBQyxDQUFDLEdBQUc7QUFBQSxjQUFjO0FBQUMscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSxhQUFXO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUscUJBQU8sS0FBRyxDQUFDLEVBQUUsR0FBRyxTQUFPLE1BQUksR0FBRyxTQUFPLE1BQUksR0FBRyxPQUFPLFNBQU8sTUFBSSxHQUFHLFNBQU8sTUFBSSxHQUFHLE9BQU8sU0FBTyxPQUFLLE1BQUksR0FBRyxTQUFPLE1BQUksR0FBRyxPQUFPLFNBQU8sT0FBSyxHQUFHLFNBQU8sTUFBSSxHQUFHLE9BQU8sU0FBTyxPQUFLO0FBQUEsWUFBRTtBQUFDLGNBQUUsZ0NBQThCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxVQUFVLEVBQUUsS0FBRyxHQUFHO0FBQUEsWUFBNkI7QUFBQyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxxQkFBTyxFQUFFLHNCQUFzQixHQUFHLElBQUksS0FBRyxLQUFHLEdBQUcsU0FBUyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFO0FBQUUscUJBQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUcsR0FBRyxTQUFPLE1BQUksRUFBRSxnQkFBZ0IsR0FBRyxNQUFNLEtBQUcsRUFBRSxhQUFhLEdBQUcsT0FBTyxNQUFNLEtBQUcsR0FBRyxTQUFPLE1BQUksRUFBRSx3QkFBd0IsR0FBRyxNQUFNLEtBQUcsRUFBRSxhQUFhLEdBQUcsT0FBTyxNQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQVMsR0FBRyxJQUFHO0FBQUMsdUJBQUs7QUFBSSxzQkFBRyxHQUFHLFFBQU0sT0FBSyxHQUFHLFFBQU0sT0FBSyxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU8sTUFBSSxHQUFHLFNBQU87QUFBRyx5QkFBRyxHQUFHO0FBQUEsMkJBQWUsR0FBRyxTQUFPLEtBQUk7QUFBQyx3QkFBRyxLQUFHLEdBQUcsU0FBUyxFQUFFO0FBQUUsNkJBQU07QUFBRyx5QkFBRyxHQUFHO0FBQUEsa0JBQU07QUFBTSwyQkFBTTtBQUFHLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsY0FBYyxHQUFHLElBQUksR0FBRSxLQUFHLEVBQUUsY0FBYyxFQUFFLEdBQUUsS0FBRyxHQUFHLGFBQWEsR0FBRSxLQUFHLEdBQUcsS0FBSyxZQUFZLElBQUcsRUFBRTtBQUFFLGtCQUFHLE9BQUssSUFBRztBQUFDLG9CQUFHLEdBQUcsS0FBSyxZQUFZLElBQUcsS0FBRyxDQUFDLElBQUUsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxLQUFHLEdBQUUsRUFBRTtBQUFFLHNCQUFHLE1BQUksR0FBRyxTQUFPO0FBQUcsMkJBQU87QUFBQSxnQkFBRTtBQUFDLHlCQUFRLEtBQUcsR0FBRyxNQUFLLEtBQUcsT0FBSTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxHQUFHLGFBQWEsR0FBRSxFQUFFO0FBQUUsc0JBQUcsQ0FBQztBQUFHO0FBQU8sc0JBQUcsS0FBRyxJQUFHLEdBQUcsU0FBTyxJQUFHO0FBQUMsd0JBQUcsT0FBSztBQUFFLDZCQUFPO0FBQUc7QUFBQSxrQkFBSTtBQUFNLHVCQUFHLFNBQU8sTUFBSTtBQUFBLGdCQUFJO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDZCQUEyQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxLQUFHLEdBQUcsbUJBQW1CLElBQUUsS0FBRyxHQUFHLG1CQUFtQixJQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxxQkFBTyxPQUFLLFdBQVMsRUFBRSxpQkFBaUIsR0FBRyxNQUFNLEtBQUcsR0FBRyxHQUFHLFFBQU8sR0FBRyxnQkFBZSxFQUFFLEVBQUUsV0FBUyxLQUFHLEdBQUcsR0FBRyxRQUFPLElBQUcsRUFBRTtBQUFBLFlBQUU7QUFBQyxjQUFFLGlDQUErQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsa0JBQWtCLEVBQUU7QUFBRSxnQkFBRSxnQkFBZ0IsR0FBRyxNQUFNLE1BQUksS0FBRyxHQUFHLElBQUcsRUFBRSxvQkFBb0IsR0FBRyxNQUFNLEdBQUUsSUFBRTtBQUFHLGtCQUFJLEtBQUcsRUFBRSxnQkFBZ0IsR0FBRyxNQUFNLElBQUUsR0FBRyx1QkFBdUIsSUFBRSxHQUFHLGtCQUFrQjtBQUFFLHFCQUFPLEdBQUcsT0FBTyxTQUFTLElBQUc7QUFBQyx1QkFBTSxDQUFDLENBQUMsR0FBRyxrQkFBZ0IsR0FBRyxlQUFlLFVBQVE7QUFBQSxjQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSwrQkFBNkI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLEdBQUcsS0FBSyxZQUFZLEtBQUksS0FBRyxHQUFHLE1BQUksR0FBRyxLQUFLLE1BQU0sTUFBSTtBQUFHLHlCQUFRLEtBQUcsSUFBRyxLQUFHLEdBQUUsS0FBRyxHQUFFLE1BQUk7QUFBQywwQkFBTyxHQUFHO0FBQUEseUJBQVc7QUFBRywwQkFBRyxLQUFHLEdBQUcsR0FBRyxhQUFhLEdBQUUsRUFBRSxHQUFFLE1BQUksR0FBRyxTQUFPLE9BQUssS0FBRyxHQUFHLEdBQUcsYUFBYSxHQUFFLEVBQUUsSUFBRyxDQUFDLE1BQUksQ0FBQyxFQUFFLGFBQWEsRUFBRTtBQUFFO0FBQU8sMEJBQUcsQ0FBQztBQUFHLCtCQUFPLEVBQUUsa0JBQWtCLEVBQUUsSUFBRSxTQUFPLEVBQUMsUUFBTyxJQUFHLGdCQUFlLEdBQUU7QUFBRTtBQUFLO0FBQUEseUJBQVc7QUFBRywyQkFBRztBQUFFO0FBQUEseUJBQVc7QUFBRywyQkFBRztBQUFFO0FBQUEseUJBQVc7QUFBRztBQUFLO0FBQUEseUJBQVc7QUFBRywwQkFBRyxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUc7QUFBTztBQUFBLHlCQUFXO0FBQUcsMEJBQUcsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsQ0FBQztBQUFHO0FBQU87QUFBQSx5QkFBVztBQUFHLDBCQUFHLEtBQUcsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLENBQUM7QUFBRztBQUFPO0FBQUEseUJBQVc7QUFBRztBQUFLO0FBQUEseUJBQVc7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBTztBQUFBLHlCQUFPO0FBQUEseUJBQVM7QUFBQSx5QkFBUTtBQUFBLHlCQUFTO0FBQUEseUJBQVE7QUFBQSx5QkFBUztBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFHO0FBQUE7QUFBYywwQkFBRyxFQUFFLFdBQVcsRUFBRTtBQUFFO0FBQU07QUFBQTtBQUFPLHVCQUFHLEdBQUcsR0FBRyxhQUFhLEdBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsV0FBVywyQkFBMkIsSUFBRyxJQUFHLFFBQU8sRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGNBQVk7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxxQkFBTSxDQUFDLENBQUMsRUFBRSxhQUFhLElBQUcsRUFBRSxPQUFPO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxJQUFFLENBQUMsQ0FBQyxHQUFHLFFBQU0sR0FBRyxTQUFTLEVBQUUsTUFBSTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFLLFdBQVMsS0FBRztBQUFHLGtCQUFJLEtBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxjQUFjLEVBQUUsSUFBRSxFQUFFLHVDQUF1QyxFQUFFLElBQUUsQ0FBQyxLQUFHO0FBQUUscUJBQU8sS0FBRyxLQUFHLEdBQUcsS0FBSyxTQUFTLEdBQUUsS0FBRyxNQUFJLEdBQUcsS0FBSyxXQUFXLEdBQUUsS0FBRyxLQUFHLEdBQUcsS0FBSyxRQUFRLElBQUcsS0FBRyxNQUFJLEVBQUUsOEJBQThCLEVBQUUsTUFBSSxHQUFHLEtBQUssUUFBUSxHQUFFLEtBQUcsT0FBSyxHQUFHLEtBQUssVUFBVSxHQUFFLEtBQUcsS0FBRyxHQUFHLEtBQUssUUFBUSxHQUFFLEtBQUcsUUFBTSxHQUFHLEtBQUssWUFBWSxHQUFFLEdBQUcsUUFBTSxZQUFVLEdBQUcsS0FBSyxTQUFTLEdBQUUsR0FBRyxTQUFPLE9BQUssR0FBRyxLQUFLLFFBQVEsR0FBRSxHQUFHLFNBQU8sSUFBRSxHQUFHLEtBQUssR0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUcsR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUksdUJBQU8sR0FBRztBQUFjLGtCQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUcsR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUksdUJBQU8sR0FBRztBQUFBLFlBQWM7QUFBQyxjQUFFLHFDQUFtQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssS0FBRyxPQUFLO0FBQUEsWUFBQztBQUFDLGNBQUUsWUFBVTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFNLENBQUMsRUFBRSxPQUFLLE1BQUksT0FBSyxNQUFJLEVBQUUsc0JBQXNCLEVBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSwrQ0FBNkM7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxNQUFJLE1BQUksTUFBSTtBQUFBLFlBQUU7QUFBQyxjQUFFLGdCQUFjO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsc0JBQXNCLEdBQUcsSUFBSSxLQUFHLEdBQUcsU0FBUyxFQUFFLElBQUUsTUFBSSxLQUFHLEdBQUcsT0FBSyxDQUFDLENBQUMsR0FBRyxrQkFBZ0IsT0FBSyxHQUFHO0FBQUEsWUFBRztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsc0JBQU87QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTTtBQUFBO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsTUFBTSxFQUFFO0FBQUUscUJBQU8sRUFBRSx1QkFBdUIsSUFBRyxNQUFJLEdBQUcsVUFBVSxHQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxHQUFHLEdBQUcsU0FBTyxPQUFLLEdBQUcsU0FBTyxTQUFPLEdBQUcsT0FBTyxTQUFPLE9BQUssR0FBRyxPQUFPLFNBQU8sTUFBSSxHQUFHLE9BQU8sY0FBYyxTQUFPLE1BQUksR0FBRyxPQUFPLFNBQU8sT0FBSyxHQUFHLE9BQU8sZ0JBQWMsTUFBSSxHQUFHLEdBQUcsT0FBTyxTQUFPLE1BQUksR0FBRyxPQUFPLFNBQU8sR0FBRyxNQUFNO0FBQUEsWUFBRztBQUFDLGNBQUUsb0RBQWtEO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsSUFBRyxJQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsdUJBQXFCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsSUFBRyxLQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxJQUFHLElBQUcsTUFBTTtBQUFFLHFCQUFNLENBQUMsQ0FBQyxNQUFJLE9BQUssRUFBRSxLQUFLLEdBQUcsS0FBSyxVQUFVLEdBQUcsS0FBSSxHQUFHLEdBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBRyxDQUFDLENBQUM7QUFBRyx3QkFBTyxHQUFHO0FBQUEsdUJBQVc7QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEdBQUcsRUFBRTtBQUFBO0FBQVUsMkJBQU8sR0FBRyxFQUFFO0FBQUE7QUFBQSxZQUFFO0FBQUMsY0FBRSxvQ0FBa0M7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSx5QkFBeUIsR0FBRyxTQUFTLEVBQUUsSUFBRyxNQUFJLElBQUksT0FBTyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUcsQ0FBQyxHQUFHO0FBQWUsdUJBQU8sRUFBRSx5QkFBeUIsR0FBRyxTQUFTLElBQUUsR0FBRSxHQUFHLE9BQU8sSUFBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsNkNBQTJDO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQUUsR0FBRSxHQUFHLEdBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLHlCQUF5QixHQUFHLEtBQUksR0FBRyxHQUFHO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxZQUFZLEdBQUcsT0FBTSxHQUFHLFFBQU0sR0FBRyxNQUFNO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxlQUFlLElBQUcsRUFBRSxHQUFFLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFNLEVBQUMsTUFBSyxJQUFHLFNBQVEsR0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQixJQUFHLEVBQUUsZUFBYSxDQUFDLEtBQUksS0FBSSxLQUFJLEtBQUksSUFBRyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEdBQUc7QUFBRSxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLFNBQVMsRUFBRSxjQUFhLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTztBQUFBLFlBQUc7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxLQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUcsR0FBRyxTQUFPO0FBQUEsWUFBTTtBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxFQUFFLEdBQUcsUUFBTSxTQUFPLEdBQUcsS0FBSyxXQUFXLENBQUMsTUFBSTtBQUFBLFlBQUU7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEtBQUk7QUFBQyxrQkFBSSxLQUFHLENBQUM7QUFBRSxxQkFBTyxTQUFTLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsVUFBVSxFQUFFO0FBQUUsdUJBQU0sQ0FBQyxHQUFHLFFBQU0sR0FBRyxNQUFJO0FBQUEsY0FBRztBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsUUFBUSxHQUFFLEdBQUcsVUFBVSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyx1QkFBUSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRztBQUFLLHNCQUFJO0FBQUcscUJBQU87QUFBQSxZQUFFO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxnQkFBZ0IsS0FBRyxHQUFHLGNBQWMsS0FBRztBQUFBLFlBQUU7QUFBQyxjQUFFLGlCQUFlO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxTQUFPLE1BQUksRUFBRSw2QkFBNkIsR0FBRyxVQUFVLElBQUUsR0FBRyxXQUFXLE9BQUssU0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUUsRUFBRSxPQUFPLEVBQUUsSUFBRSxFQUFFLDZCQUE2QixFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxlQUFlLEVBQUUsS0FBSyxTQUFTLElBQUc7QUFBQyx1QkFBTSxDQUFDLEdBQUcscUJBQW1CLENBQUMsR0FBRyxnQ0FBZ0MsRUFBRSxLQUFHLENBQUMsRUFBRSxHQUFHLDJCQUF5QixHQUFHO0FBQUEsY0FBd0IsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsZUFBZSxFQUFFLEtBQUssU0FBUyxJQUFHO0FBQUMsdUJBQU0sQ0FBQyxHQUFHLHFCQUFtQixDQUFDLEdBQUcsZ0NBQWdDLEVBQUUsS0FBRyxDQUFDLENBQUMsR0FBRztBQUFBLGNBQXVCLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTSxDQUFDLENBQUMsR0FBRyxVQUFRLEVBQUUsb0JBQW9CLEVBQUUsS0FBRyxLQUFHLENBQUMsQ0FBQyxHQUFHO0FBQUEsWUFBTTtBQUFDLGNBQUUsbUNBQWlDO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTSxFQUFDLFlBQVcsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxXQUFXLEVBQUU7QUFBQSxjQUFDLEdBQUUscUJBQW9CLFdBQVU7QUFBQyx1QkFBTyxHQUFHLG9CQUFvQjtBQUFBLGNBQUMsR0FBRSxVQUFTLEVBQUUsVUFBVSxJQUFHLEdBQUcsUUFBUSxHQUFFLDJCQUEwQixFQUFFLFVBQVUsSUFBRyxHQUFHLHlCQUF5QixHQUFFLGlCQUFnQixFQUFFLFVBQVUsSUFBRyxHQUFHLGVBQWUsS0FBRyxHQUFHLGlCQUFnQix5QkFBd0IsRUFBRSxVQUFVLElBQUcsR0FBRyx1QkFBdUIsR0FBRSx5QkFBd0IsV0FBVTtBQUFDLG9CQUFJO0FBQUcsd0JBQU8sS0FBRyxHQUFHLHlCQUF5QixPQUFLLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyx3QkFBd0I7QUFBQSxjQUFDLEdBQUUsK0JBQThCLEVBQUUsVUFBVSxJQUFHLEdBQUcsNkJBQTZCLEdBQUUsb0JBQW1CLEdBQUcsb0JBQW1CLDZCQUE0QixTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLDRCQUE0QixFQUFFO0FBQUEsY0FBQyxHQUFFLG9DQUFtQyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLG1DQUFtQyxFQUFFO0FBQUEsY0FBQyxHQUFFLDRDQUEyQyxFQUFFLFVBQVUsSUFBRyxHQUFHLDBDQUEwQyxHQUFFLHVCQUFzQixXQUFVO0FBQUMsdUJBQU8sR0FBRyxzQkFBc0I7QUFBQSxjQUFDLEVBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQ0FBb0M7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUMsMEJBQXlCLFdBQVU7QUFBQyx1QkFBTyxHQUFHLHlCQUF5QjtBQUFBLGNBQUMsRUFBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sTUFBSSxFQUFFLHFCQUFxQixVQUFRLE1BQUksRUFBRSxxQkFBcUI7QUFBQSxZQUFRO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxPQUFLLEVBQUUscUJBQXFCLFVBQVEsTUFBSSxFQUFFLHFCQUFxQixVQUFRLE1BQUksRUFBRSxxQkFBcUI7QUFBQSxZQUFRO0FBQUMsY0FBRSxrQ0FBZ0M7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxNQUFJLE1BQUksR0FBRyxTQUFPLEdBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxJQUFFO0FBQUEsWUFBTTtBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLFFBQVEsd0JBQXdCLFFBQU8sUUFBTyxNQUFJLEtBQUcsRUFBRSxRQUFRLG1CQUFtQixDQUFDLENBQUMsSUFBRyxJQUFHLE1BQUksR0FBRyxTQUFPLEVBQUUsUUFBUSxtQkFBbUIsRUFBRSxJQUFFLE1BQU0sSUFBRSxRQUFPLE9BQU8sTUFBSSxXQUFTLEdBQUcsSUFBRyxFQUFFLElBQUUsSUFBRyxNQUFNO0FBQUEsWUFBQztBQUFDLGNBQUUsYUFBVztBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxRQUFRLG9CQUFvQixJQUFHLE9BQUssQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLGdCQUFJO0FBQUcsYUFBQyxTQUFTLElBQUc7QUFBQyxpQkFBRyxHQUFHLFNBQU8sS0FBRyxVQUFTLEdBQUcsR0FBRyxTQUFPLEtBQUc7QUFBQSxZQUFRLEdBQUcsS0FBRyxFQUFFLG9CQUFrQixFQUFFLGtCQUFnQixDQUFDLEVBQUU7QUFBRSxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUscUJBQXFCLElBQUcsRUFBRSxJQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSw0QkFBMEI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLEdBQUcsbUJBQWlCLEdBQUcsb0JBQWtCO0FBQU8sdUJBQU8sR0FBRyxvQkFBa0IsV0FBUyxJQUFFO0FBQUUsa0JBQUksS0FBRyxHQUFHLFdBQVMsRUFBRSxLQUFLLEdBQUcsU0FBUSxTQUFTLElBQUc7QUFBQyx1QkFBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUcsQ0FBQyxFQUFFLGtCQUFrQixHQUFHLE1BQU07QUFBQSxjQUFDLENBQUM7QUFBRSxxQkFBTyxLQUFHLEdBQUcsSUFBRyxFQUFFLElBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxzQkFBTztBQUFBLHFCQUFTO0FBQUUseUJBQU07QUFBQSxxQkFBUztBQUFFLHlCQUFNO0FBQUE7QUFBWSx5QkFBTyxFQUFFLE1BQU0sWUFBWSxFQUFFO0FBQUE7QUFBQSxZQUFFO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsRUFBRTtBQUFFLHFCQUFPLE9BQUssU0FBTyxTQUFPLEVBQUUsMkJBQTJCLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxzQkFBb0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLGdCQUFjLFlBQVUsR0FBRyxjQUFZLEVBQUUsYUFBYSxHQUFHLGNBQWEsU0FBUyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLHFCQUFxQixFQUFFO0FBQUUsdUJBQU8sTUFBSSxHQUFHLFNBQU8sS0FBRyxHQUFHLGNBQVk7QUFBQSxjQUFNLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSw2QkFBMkI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLG9CQUFvQixFQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRyxNQUFNLEtBQUcsRUFBRSxvQkFBb0IsR0FBRyxNQUFNLEtBQUcsRUFBRSxjQUFjLEdBQUcsUUFBTyxLQUFFLEtBQUcsR0FBRyxPQUFPLFVBQVUsT0FBSyxNQUFJLEVBQUUsYUFBYSxHQUFHLE1BQU0sS0FBRyxHQUFHLE9BQU8sVUFBVSxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFHLEVBQUUsdUJBQXVCLEdBQUcsTUFBTSxLQUFHLEVBQUUsYUFBYSxHQUFHLElBQUksS0FBRyxDQUFDLEdBQUc7QUFBQSxZQUFZO0FBQUMsY0FBRSw0Q0FBMEM7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxrQkFBa0IsR0FBRyxNQUFNO0FBQUUscUJBQU8sTUFBSSxHQUFHLGtCQUFrQixJQUFHLEdBQUcsS0FBSyxJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsc0NBQW9DO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLENBQUMsQ0FBQztBQUFHLHVCQUFLLEdBQUcsVUFBUTtBQUFDLHNCQUFHLEVBQUUsYUFBYSxHQUFHLE1BQU0sS0FBRyxDQUFDLEdBQUcsSUFBRyxHQUFHLFFBQU8sRUFBRTtBQUFFLDJCQUFPO0FBQUcsdUJBQUcsR0FBRztBQUFBLGdCQUFNO0FBQUEsWUFBQztBQUFDLGNBQUUsc0JBQW9CO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUseUJBQXlCLElBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxLQUFHLEdBQUcsT0FBTyxLQUFHLEVBQUUsWUFBWSxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxhQUFXLEVBQUUsS0FBSyxHQUFHLFdBQVUsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxTQUFPO0FBQUEsY0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsRUFBRSxRQUFRLEVBQUUsSUFBRSxHQUFHLEtBQUcsSUFBRyxLQUFHLEdBQUcsU0FBTyxNQUFJLEVBQUUsNkJBQTJCLEVBQUUsbUJBQWtCLEtBQUcsRUFBRSxPQUFPLEdBQUcsWUFBVyxFQUFFLEdBQUUsS0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFFLEVBQUUsV0FBVyxJQUFHLEVBQUUsZ0JBQWdCLGlDQUFpQyxJQUFFLENBQUMsRUFBRTtBQUFFLGtCQUFHLENBQUMsR0FBRztBQUFPLG1CQUFHLHVCQUF1QixJQUFHLElBQUcsRUFBRTtBQUFBLHVCQUFVLE1BQUksRUFBRSxnQkFBZ0IsaUJBQWlCLEVBQUU7QUFBRSx5QkFBUSxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEdBQUcsS0FBSSxLQUFHLEVBQUUsZ0JBQWdCLG1DQUFtQyxJQUFHLEVBQUU7QUFBRSxzQkFBRyxPQUFLLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEdBQUcsT0FBSyxHQUFHLFdBQVcsS0FBRyxFQUFDLHFCQUFvQixFQUFFLFlBQVksb0JBQW9CLFFBQU8sSUFBRSxDQUFDO0FBQUUsdUJBQUcsaUJBQWlCLElBQUcsR0FBRyxJQUFHLElBQUcsT0FBRyxFQUFFO0FBQUEsa0JBQUMsT0FBSztBQUFDLHdCQUFJLEtBQUcsR0FBRyxLQUFHO0FBQUcsdUJBQUcsZ0JBQWdCLElBQUcsSUFBRyxFQUFFO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFBLG1CQUFLO0FBQUMsb0JBQUksS0FBRyxFQUFFLGdCQUFnQixFQUFFO0FBQUUscUJBQUcsR0FBRyxpQkFBaUIsSUFBRyxJQUFHLEVBQUUsSUFBRSxHQUFHLHVCQUF1QixJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxNQUFNLE9BQU8sR0FBRyxVQUFVLEdBQUUsRUFBRSxLQUFLLEdBQUcsV0FBVyxHQUFFLEVBQUUsR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsaUNBQStCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTSxDQUFDLENBQUMsTUFBSSxDQUFDLENBQUMsTUFBSSxHQUFHLFVBQVEsR0FBRyxTQUFPLEdBQUcsV0FBUyxHQUFHO0FBQUEsWUFBTTtBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsYUFBVyxHQUFHLFlBQVUsR0FBRyxHQUFHLFVBQVMsR0FBRyxRQUFRO0FBQUEsWUFBQztBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBRyxJQUFHO0FBQUMseUJBQVEsS0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPO0FBQUssc0JBQUcsR0FBRyxRQUFRLEdBQUcsR0FBRyxNQUFJLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUcsR0FBRyxLQUFJLEVBQUU7QUFBRSx3QkFBRztBQUFHLDZCQUFPO0FBQUEsa0JBQUU7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsdUJBQVEsS0FBRyxJQUFHLEtBQUcsSUFBRztBQUFLLG9CQUFHLENBQUMsRUFBRSxpQkFBaUIsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUFFLHlCQUFNO0FBQUcscUJBQU07QUFBQSxZQUFFO0FBQUMsY0FBRSx1QkFBcUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsZUFBYSxFQUFFLGlCQUFpQixHQUFHLFlBQVksSUFBRTtBQUFPLHFCQUFNLENBQUMsQ0FBQyxFQUFFLGFBQWEsSUFBRyxTQUFTLElBQUc7QUFBQyx1QkFBTyxFQUFFLFlBQVksRUFBRSxJQUFFLE9BQUcsRUFBRSxpQkFBaUIsRUFBRSxLQUFHLEVBQUUsdUJBQXVCLEVBQUUsS0FBRyxFQUFFLHNCQUFzQixFQUFFLElBQUUsUUFBRztBQUFBLGNBQU0sQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLHNDQUFvQztBQUFHLGdCQUFJLEtBQUcsR0FBRztBQUFFLHFCQUFTLEtBQUk7QUFBQyxrQkFBSSxLQUFHLEVBQUUsaUNBQStCLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBRyxpQkFBRztBQUFFLGtCQUFJLEtBQUcsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLElBQUk7QUFBQSxjQUFDO0FBQUUscUJBQU0sRUFBQyxjQUFhLFdBQVU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsVUFBUSxHQUFHLEdBQUcsU0FBTyxHQUFHO0FBQUssdUJBQU8sS0FBRyxNQUFJLE1BQUksT0FBSyxVQUFRLEVBQUUsaUJBQWlCLEdBQUcsV0FBVyxHQUFHLFNBQU8sQ0FBQyxDQUFDLEtBQUcsR0FBRyxLQUFLLEdBQUcsS0FBSSxFQUFFLHNCQUFzQixLQUFLLENBQUMsR0FBRSxHQUFHLEtBQUssR0FBRyxPQUFNLEVBQUUsc0JBQXNCLFdBQVcsQ0FBQyxJQUFHO0FBQUEsY0FBRSxHQUFFLGNBQWEsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLE9BQU87QUFBQSxjQUFDLEdBQUUsZUFBYyxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLElBQUcsRUFBRSxzQkFBc0IsUUFBUTtBQUFBLGNBQUMsR0FBRSxrQkFBaUIsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLFdBQVc7QUFBQSxjQUFDLEdBQUUsd0JBQXVCLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsSUFBRyxFQUFFLHNCQUFzQixXQUFXO0FBQUEsY0FBQyxHQUFFLFlBQVcsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLEtBQUs7QUFBQSxjQUFDLEdBQUUsb0JBQW1CLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsSUFBRyxFQUFFLHNCQUFzQixhQUFhO0FBQUEsY0FBQyxHQUFFLGdCQUFlLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsSUFBRyxFQUFFLHNCQUFzQixhQUFhO0FBQUEsY0FBQyxHQUFFLGVBQWMsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLFlBQVk7QUFBQSxjQUFDLEdBQUUsY0FBYSxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHLElBQUcsRUFBRSxzQkFBc0IsYUFBYTtBQUFBLGNBQUMsR0FBRSxhQUFZLElBQUcsV0FBVSxJQUFHLE9BQU0sSUFBRyxjQUFhLElBQUcsU0FBUSxXQUFVO0FBQUMsdUJBQU07QUFBQSxjQUFFLEdBQUUsWUFBVyxXQUFVO0FBQUMsdUJBQU87QUFBQSxjQUFDLEdBQUUsV0FBVSxXQUFVO0FBQUMsdUJBQU87QUFBQSxjQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsdUJBQU87QUFBQSxjQUFDLEdBQUUsaUJBQWdCLFdBQVU7QUFBQyx1QkFBTTtBQUFBLGNBQUUsR0FBRSx1QkFBc0IsV0FBVTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxHQUFFLG9CQUFtQixXQUFVO0FBQUMsdUJBQU07QUFBQSxjQUFFLEdBQUUsVUFBUyxFQUFFLGdCQUFlLFdBQVUsV0FBVTtBQUFDLHVCQUFPO0FBQUEsY0FBRSxHQUFFLGdCQUFlLFdBQVU7QUFBQztBQUFBLGNBQUksR0FBRSxnQkFBZSxXQUFVO0FBQUM7QUFBQSxjQUFJLEdBQUUsT0FBTSxJQUFHLGFBQVksV0FBVTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxHQUFFLDZCQUE0QixFQUFFLE1BQUsscUNBQW9DLEVBQUUsTUFBSyxzQ0FBcUMsRUFBRSxLQUFJO0FBQUUsdUJBQVMsS0FBSTtBQUFDLG9CQUFHLEVBQUUsS0FBRyxPQUFLLElBQUc7QUFBQyxzQkFBSSxLQUFHLEVBQUUsZ0JBQWdCLEVBQUU7QUFBRSx5QkFBSyxNQUFJLEdBQUcsUUFBTyxHQUFHLEtBQUssR0FBRyxJQUFHLEVBQUUsc0JBQXNCLEtBQUssQ0FBQyxJQUFHLEtBQUc7QUFBQSxnQkFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFHLE9BQUssR0FBRyxHQUFFLE1BQUksR0FBRyxRQUFPLEdBQUcsS0FBSyxHQUFHLElBQUcsRUFBRSxDQUFDO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQUcsT0FBSyxHQUFHLEdBQUUsTUFBSSxHQUFHLFFBQU8sR0FBRyxLQUFLLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFFO0FBQUMsdUJBQVMsS0FBSTtBQUFDLHFCQUFHLE9BQUssTUFBSSxHQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRSxLQUFHO0FBQUEsY0FBRztBQUFDLHVCQUFTLEtBQUk7QUFBQyxxQkFBRyxDQUFDLEdBQUUsS0FBRyxNQUFHLEtBQUcsR0FBRSxLQUFHO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQztBQUFFLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRztBQUFNLHVCQUFPLEtBQUcsSUFBRSxHQUFHLEVBQUUsSUFBRSxFQUFFLHNCQUFzQixnQkFBYyxFQUFFLHNCQUFzQixZQUFVLEtBQUcsS0FBRyxLQUFHLFNBQU8sS0FBRyxRQUFNLEVBQUUsc0JBQXNCLGVBQWEsS0FBRyxJQUFFLEVBQUUsc0JBQXNCLGlCQUFlLEtBQUcsS0FBRyxFQUFFLHNCQUFzQixlQUFhLEtBQUcsS0FBRyxFQUFFLHNCQUFzQixZQUFVLEtBQUcsS0FBRyxFQUFFLHNCQUFzQixnQkFBYyxLQUFHLE1BQUksRUFBRSxzQkFBc0IsV0FBUyxLQUFHLE9BQUssRUFBRSxzQkFBc0IsYUFBVyxLQUFHLE9BQUssRUFBRSxzQkFBc0IsYUFBVyxLQUFHLFNBQU8sRUFBRSxzQkFBc0Isb0JBQWtCLEtBQUcsVUFBUSxLQUFHLFVBQVEsRUFBRSxzQkFBc0IsWUFBVSxFQUFFLHNCQUFzQjtBQUFBLGNBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxhQUFXO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTSxFQUFDLE1BQUssSUFBRyxNQUFLLEVBQUUsc0JBQXNCLElBQUc7QUFBQSxZQUFDO0FBQUMsY0FBRSxjQUFZO0FBQUcscUJBQVMsS0FBSTtBQUFDLHFCQUFPLEdBQUcsS0FBSSxFQUFFLHNCQUFzQixLQUFLO0FBQUEsWUFBQztBQUFDLGNBQUUsWUFBVTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxjQUFjLEVBQUUsR0FBRSxFQUFFLHNCQUFzQixPQUFPO0FBQUEsWUFBQztBQUFDLGNBQUUsY0FBWTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsRUFBRSxjQUFjLEVBQUUsR0FBRSxFQUFFLHNCQUFzQixXQUFXO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxFQUFFLGNBQWMsRUFBRSxHQUFFLEVBQUUsc0JBQXNCLFFBQVE7QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLGFBQWE7QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxzQkFBc0IsWUFBWTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsRUFBRSxjQUFjLEVBQUU7QUFBRSxxQkFBTyxPQUFLLFNBQU8sR0FBRyxFQUFFLElBQUUsR0FBRyxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLElBQUk7QUFBQSxZQUFDO0FBQUMsY0FBRSxXQUFTO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLFNBQVM7QUFBQSxZQUFDO0FBQUMsY0FBRSxvQkFBa0I7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsRUFBRSxzQkFBc0IsaUJBQWlCO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxJQUFHLEVBQUUsc0JBQXNCLFFBQVE7QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTSxFQUFDLE1BQUssSUFBRyxNQUFLLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLFdBQVUsUUFBTyxFQUFDLFVBQVMsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFVBQVMsVUFBUyxHQUFHLEVBQUUsRUFBQyxFQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZUFBYTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxFQUFFLHNCQUFzQixJQUFJO0FBQUEsWUFBQztBQUFDLGNBQUUsV0FBUztBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksSUFBRyxLQUFHLEVBQUUsWUFBWSxFQUFFLElBQUUsU0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUUsYUFBVyxhQUFZLEtBQUcsQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUUsa0JBQUcsQ0FBQyxHQUFHO0FBQUssbUJBQUcsUUFBTSxHQUFHLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQztBQUFBLG1CQUFNO0FBQUMsb0JBQUksS0FBRyxNQUFJLE9BQUssU0FBTyxHQUFHLG9CQUFvQixHQUFHLElBQUksR0FBRSxLQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUUsS0FBRyxFQUFFLGNBQWMsR0FBRyxJQUFJLElBQUUsR0FBRyxLQUFLLE1BQU0sR0FBRSxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQyxHQUFFLE1BQUksTUFBSSxPQUFLLFNBQU8sR0FBRyx1QkFBcUIsS0FBRyxNQUFJLE9BQUssU0FBTyxHQUFHLGtCQUFnQixRQUFNLE9BQUssU0FBTyxTQUFPLEdBQUc7QUFBSSxzQkFBSSxHQUFHLEtBQUssR0FBRyxJQUFHLEVBQUUsQ0FBQyxHQUFFLE1BQUksR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUcsR0FBRyxLQUFLLEdBQUcsTUFBSSxNQUFJLEdBQUcsUUFBUSxLQUFLLE1BQUksSUFBRSxLQUFHLE9BQUssRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsaUJBQWU7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHO0FBQUUsa0JBQUcsR0FBRyxXQUFXLElBQUksTUFBSSxLQUFJO0FBQUMsdUJBQUssS0FBRyxHQUFHLFVBQVEsR0FBRyxXQUFXLEVBQUUsTUFBSTtBQUFJO0FBQUssdUJBQU8sR0FBRyxNQUFNLEVBQUU7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFFO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMsa0JBQUcsR0FBRyxRQUFRLElBQUksTUFBSTtBQUFFLHVCQUFPO0FBQUUsa0JBQUcsR0FBRyxPQUFLO0FBQUksdUJBQU87QUFBRSx1QkFBUSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRztBQUFRLG9CQUFHLEdBQUcsUUFBTSxPQUFLLE1BQUssR0FBRyxRQUFNLE9BQUssTUFBSyxNQUFLLENBQUM7QUFBRyx5QkFBTztBQUFHLHFCQUFPO0FBQUEsWUFBQztBQUFDLGdCQUFJLEtBQUc7QUFBQTtBQUNuaHpDLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUk7QUFBRyxzQkFBTyxNQUFJLE9BQUssU0FBTyxHQUFHLHVCQUFxQixLQUFHLEdBQUcsZ0JBQWMsUUFBTSxPQUFLLFNBQU8sU0FBTyxHQUFHLEtBQUssRUFBRSxNQUFJO0FBQUEsWUFBRTtBQUFDLGNBQUUsOEJBQTRCO0FBQUcscUJBQVMsS0FBSTtBQUFDLHFCQUFPLEdBQUc7QUFBQSxHQUNoTSxFQUFFLHNCQUFzQixTQUFTO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBRztBQUFDLHVCQUFPLEdBQUcsRUFBRSxHQUFFLEdBQUcsYUFBYTtBQUFBLGNBQUMsVUFBQztBQUFRLG1CQUFHLE1BQU07QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sT0FBSyxXQUFTLEtBQUcsSUFBRyxHQUFHLFNBQVMsSUFBRztBQUFDLG1CQUFHLFVBQVUsSUFBRyxJQUFHLEtBQUcsT0FBSyxPQUFNLEVBQUU7QUFBQSxjQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxFQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssV0FBUyxLQUFHLElBQUcsR0FBRyxTQUFTLElBQUc7QUFBQyxtQkFBRyxZQUFZLElBQUcsSUFBRyxJQUFHLEtBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsdUJBQXFCO0FBQUUscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sT0FBSyxXQUFTLEtBQUcsSUFBRyxNQUFJLE9BQU0sR0FBRyxTQUFTLElBQUc7QUFBQyxtQkFBRyxlQUFlLElBQUcsSUFBRyxJQUFHLFFBQU8sRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLGNBQWM7QUFBRSxxQkFBTyxHQUFHLFNBQVMsSUFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxjQUFjLEVBQUMsZ0JBQWUsTUFBRyx1QkFBc0IsS0FBRSxDQUFDO0FBQUUsbUJBQUcsVUFBVSxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxDQUFDLEdBQUcsVUFBUSxFQUFFLDBCQUEwQixHQUFHLE1BQU0sS0FBRyxHQUFHLE9BQU8saUJBQWU7QUFBQSxZQUFFO0FBQUMsY0FBRSxnQ0FBOEI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsaUJBQWlCLElBQUcsR0FBRyxpQkFBZSxHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0JBQWM7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHVCQUFRLEtBQUcsSUFBRyxHQUFHLEVBQUUsS0FBRyxHQUFHLEVBQUUsS0FBRyxHQUFHO0FBQVEsbUJBQUcsRUFBRSxLQUFHLEdBQUcsU0FBTyxLQUFHLEdBQUcsU0FBTyxLQUFHLEVBQUUsVUFBVSxJQUFHLEVBQUU7QUFBRSxxQkFBTztBQUFBLFlBQUU7QUFBQyxjQUFFLGtCQUFnQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUcsUUFBTSxjQUFZO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUcsUUFBTSxhQUFXO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxJQUFHLEVBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLG9CQUFrQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQUssRUFBRSxpQkFBaUIsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUFHLHNCQUFJO0FBQUUscUJBQU87QUFBQSxZQUFFO0FBQUMsY0FBRSxvQ0FBa0M7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFLLEtBQUcsTUFBSSxFQUFFLHVCQUF1QixHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQUcsc0JBQUk7QUFBRSxxQkFBTyxLQUFHO0FBQUEsWUFBQztBQUFDLGNBQUUsd0NBQXNDO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBSyxXQUFTLEtBQUc7QUFBSSxrQkFBSSxLQUFHLE1BQUksR0FBRyxFQUFFO0FBQUUscUJBQU8sTUFBSSxDQUFDLE1BQUksR0FBRyxFQUFFLEdBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSwwQkFBd0I7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxxQkFBTyxLQUFHLEVBQUUsZ0JBQWdCLElBQUcsRUFBRSxJQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxNQUFJLENBQUMsTUFBSSxHQUFHLEVBQUUsR0FBRTtBQUFBLFlBQUU7QUFBQyxjQUFFLDBDQUF3QztBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxLQUFHLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsSUFBRyxNQUFHLEVBQUU7QUFBQSxjQUFDLElBQUUsSUFBRyxLQUFHLEtBQUcsU0FBUyxJQUFHO0FBQUMsdUJBQU8sTUFBSSxHQUFHLElBQUcsTUFBRyxFQUFFO0FBQUEsY0FBQyxJQUFFLFNBQVMsSUFBRztBQUFDLHVCQUFPLE1BQUksR0FBRyxFQUFFO0FBQUEsY0FBQyxHQUFFLEtBQUcsRUFBRSxlQUFlLElBQUcsSUFBRyxFQUFFLDJCQUEwQixJQUFHLEVBQUU7QUFBRSxrQkFBRyxPQUFLLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsZ0JBQWdCLEVBQUUsSUFBRSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsNEJBQTRCLEVBQUUsR0FBRSxFQUFFLElBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFFLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxxQkFBcUIsR0FBRyxNQUFLLEdBQUcsbUJBQW1CLEdBQUUsRUFBRSxJQUFFLEVBQUUsUUFBUSxVQUFVLEVBQUU7QUFBRSx1QkFBTyxFQUFFLGFBQWEsSUFBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHFCQUFPLEdBQUcsU0FBTyxRQUFPO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sT0FBSyxXQUFTLEtBQUcsT0FBSSxNQUFJLEVBQUUsUUFBUSxnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQyxDQUFDLEdBQUUsR0FBRyxnQkFBZ0I7QUFBQSxZQUFDO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxRQUFRLGdCQUFnQixHQUFHLElBQUksU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLGNBQUMsQ0FBQyxHQUFFLEdBQUcsZ0JBQWdCO0FBQUEsWUFBQztBQUFDLGNBQUUsMkNBQXlDO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsaUJBQUcsRUFBRSxHQUFFLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1DQUFpQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGlCQUFHLElBQUcsS0FBSSxFQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMsaUJBQUcsSUFBRyxNQUFLLEVBQUUsWUFBWTtBQUFBLFlBQUM7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLGNBQWMsR0FBRSxLQUFHLEdBQUc7QUFBSyxpQkFBRyxJQUFHLEVBQUUsSUFBRSxHQUFHLElBQUcsSUFBRyxFQUFFLElBQUUsR0FBRyxJQUFHLElBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxlQUFhO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyx1QkFBUSxLQUFHLEdBQUcsYUFBYSxHQUFFLEtBQUcsR0FBRyxTQUFTLEdBQUUsS0FBRyxJQUFHLEtBQUcsSUFBRztBQUFLLG9CQUFHLEdBQUcsV0FBVyxFQUFFLE1BQUk7QUFBRyx5QkFBTTtBQUFHLHFCQUFNO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxnQkFBRSxhQUFhLElBQUcsRUFBRTtBQUFFLGtCQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsb0JBQUksR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLGFBQWEsU0FBUyxJQUFHO0FBQUMsdUJBQU87QUFBQSxjQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyx1QkFBUSxLQUFHLElBQUcsS0FBRyxHQUFFLENBQUMsRUFBRSxzQkFBc0IsSUFBRyxFQUFFLEdBQUU7QUFBSyxxQkFBRyxHQUFHLE9BQU8sSUFBRyxHQUFHLEVBQUUsT0FBTyxFQUFFO0FBQUUscUJBQU87QUFBQSxZQUFFO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLHVCQUFRLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUksS0FBRyxHQUFHLFVBQVMsS0FBRyxHQUFHO0FBQVksa0JBQUUsTUFBTSxPQUFPLE9BQUssRUFBRTtBQUFFLHlCQUFRLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRyxNQUFLLEtBQUcsR0FBRyxTQUFRLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSxzQkFBRyxPQUFLLE9BQUssS0FBRyxHQUFHLFFBQU0sS0FBRyxJQUFHLENBQUM7QUFBSSwyQkFBTztBQUFHLHdCQUFJLEdBQUcsU0FBTyxHQUFHO0FBQUEsZ0JBQU07QUFBQSxjQUFDO0FBQUMscUJBQU8sRUFBRSxNQUFNLE9BQU8sRUFBRSxHQUFFLEVBQUUsTUFBTSxPQUFPLE1BQUksQ0FBQyxHQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxnQkFBRSwyQkFBMkIsR0FBRyxNQUFLLEdBQUcsS0FBSSxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSwwQkFBMEIsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsZ0JBQUUsNEJBQTRCLEdBQUcsTUFBSyxHQUFHLEtBQUksR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsMkJBQTJCLENBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSx1QkFBcUI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLGdCQUFFLDRCQUE0QixHQUFHLE1BQUssR0FBRyxLQUFJLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLDBCQUEwQixDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsZ0NBQThCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxTQUFTLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBSyxLQUFHLE1BQUksR0FBRSxNQUFJLEtBQUcsTUFBSSxHQUFFLEdBQUcsSUFBRyxNQUFJLElBQUcsR0FBRyxLQUFLLE1BQU0sSUFBRyxFQUFFLEdBQUUsT0FBSyxTQUFPLEtBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBRyxFQUFFLFdBQVcsSUFBRyxFQUFFO0FBQUUsdUJBQU87QUFBRSxrQkFBSSxLQUFHLEdBQUcsUUFBUSxNQUFJLEVBQUU7QUFBRSxxQkFBTyxPQUFLLE9BQUssS0FBRyxHQUFHLFFBQVEsTUFBSSxFQUFFLElBQUcsT0FBSyxPQUFLLEtBQUcsR0FBRyxRQUFRLE1BQUksRUFBRSxJQUFHLE9BQUssS0FBRyxLQUFHLEtBQUc7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxtQkFBbUIsRUFBRSxLQUFHLEdBQUcsY0FBYyxTQUFPLE1BQUksRUFBRSwwQkFBMEIsRUFBRSxLQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUcsRUFBRSwwQkFBMEIsR0FBRyxVQUFVO0FBQUEsWUFBQztBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBTyxzQkFBTyxHQUFHO0FBQUEscUJBQVc7QUFBSSx5QkFBTyxHQUFHLGtCQUFrQixFQUFFO0FBQUEscUJBQU8sS0FBSTtBQUFDLHNCQUFJLEtBQUcsSUFBRyxLQUFHLEdBQUcsTUFBSyxLQUFHLEdBQUcsZUFBYyxLQUFHLEdBQUc7QUFBTSx5QkFBTyxHQUFHLEdBQUcsSUFBSSxJQUFFLEdBQUcsa0JBQWtCLE9BQUssS0FBRyxLQUFHLEVBQUUsSUFBRSxHQUFHLGtCQUFrQixFQUFFO0FBQUEsZ0JBQUM7QUFBQSxxQkFBTTtBQUFJLHlCQUFPLEdBQUcsZUFBYSxLQUFHLEdBQUcsSUFBRyxFQUFFLElBQUU7QUFBQTtBQUFlLHlCQUFPLEdBQUcsa0JBQWtCLEVBQUU7QUFBQTtBQUFBLFlBQUU7QUFBQyxjQUFFLDhCQUE0QjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxLQUFLLFVBQVUsRUFBRTtBQUFFLHFCQUFPLE9BQUssSUFBRSxJQUFJLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxRQUFRLE1BQUssS0FBSyxFQUFFLFFBQVEsUUFBTyxHQUFHLEdBQUUsR0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFDLGNBQUUsUUFBTTtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPO0FBQUEscUJBQVM7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBRyx5QkFBTTtBQUFBO0FBQVcseUJBQU07QUFBQTtBQUFBLFlBQUc7QUFBQyxjQUFFLHlCQUF1QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLGNBQUUsNEJBQTBCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLEtBQUcsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CO0FBQUEsWUFBQztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLGtCQUFrQixHQUFHLE9BQU8sT0FBTyxVQUFVO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCLElBQUcsRUFBRSxZQUFVO0FBQXFCLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxlQUFlLEdBQUUsS0FBRyxNQUFHLEtBQUcsV0FBVTtBQUFDLHVCQUFPLEtBQUc7QUFBQSxjQUFFLEdBQUUsS0FBRyxHQUFHLGVBQWUsSUFBRyxJQUFHLEdBQUUsRUFBQyxhQUFZLFNBQVMsSUFBRyxJQUFHLElBQUc7QUFBQyx1QkFBTyxLQUFHLE1BQUksR0FBRyxtQkFBbUIsSUFBRyxJQUFHLElBQUcsS0FBRSxFQUFFLGtCQUFnQixHQUFFLENBQUM7QUFBQSxjQUFFLEdBQUUsNkJBQTRCLElBQUcsc0NBQXFDLElBQUcscUNBQW9DLElBQUcsb0JBQW1CLEdBQUcsSUFBRyxFQUFFLEVBQUMsQ0FBQztBQUFFLHFCQUFPLEtBQUcsS0FBRztBQUFBLFlBQU07QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUs7QUFBQSxZQUFHO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLLE9BQUssT0FBSyxPQUFLO0FBQUEsWUFBRztBQUFDLGNBQUUsdUNBQXFDLElBQUcsRUFBRSwwQkFBd0IsRUFBRSxHQUFHLElBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxhQUFhLEVBQUU7QUFBRSxrQkFBRyxNQUFJLEdBQUcsU0FBTztBQUFHLHVCQUFNO0FBQUcsa0JBQUcsR0FBRyxHQUFHLElBQUksR0FBRTtBQUFDLG9CQUFHLE1BQUksR0FBRyxTQUFPO0FBQUcseUJBQU07QUFBQSxjQUFFLFdBQVMsR0FBRyxHQUFHLElBQUksR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7QUFBRSxvQkFBRyxNQUFJLEVBQUUsY0FBYyxFQUFFO0FBQUUseUJBQU07QUFBQSxjQUFFLFdBQVMsR0FBRyxHQUFHLElBQUksR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7QUFBRSxvQkFBRyxNQUFJLEVBQUUsZ0JBQWdCLEVBQUU7QUFBRSx5QkFBTTtBQUFBLGNBQUUsV0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJO0FBQUUsdUJBQU07QUFBRyxrQkFBRyxHQUFHLFNBQU87QUFBSSx1QkFBTTtBQUFHLGtCQUFJLEtBQUcsRUFBRSxhQUFhLElBQUcsU0FBUyxJQUFHO0FBQUMsdUJBQU0sQ0FBQyxHQUFHO0FBQUEsY0FBTSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsa0JBQUcsQ0FBQyxNQUFJLEdBQUcsU0FBTztBQUFHLHVCQUFNO0FBQUcsa0JBQUksS0FBRyxHQUFHLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxFQUFFLE1BQUssS0FBRyxHQUFHLDhCQUE4QixHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUU7QUFBSyxxQkFBTyxPQUFLO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEVBQUUsYUFBYSxJQUFHLFNBQVMsSUFBRztBQUFDLHVCQUFPLEdBQUcsUUFBTSxLQUFHLFNBQU8sRUFBRSx3QkFBd0IsR0FBRyxJQUFJO0FBQUEsY0FBQyxDQUFDO0FBQUUscUJBQU0sQ0FBQyxDQUFDLE1BQUksR0FBRyxJQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUc7QUFBRSxxQkFBTyxFQUFFLGFBQWEsSUFBRyxTQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEdBQUcsYUFBYSxFQUFFO0FBQUUsbUJBQUMsTUFBSSxPQUFLLFNBQU8sR0FBRyxVQUFRLEtBQUcsT0FBSztBQUFBLGdCQUFJLFdBQVMsR0FBRyxHQUFHLElBQUksR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxhQUFhLEVBQUU7QUFBRSx1QkFBSSxNQUFJLE9BQUssU0FBTyxHQUFHLFVBQVE7QUFBRztBQUFBLDJCQUFhLE1BQUksR0FBRyxTQUFPLElBQUc7QUFBQyx3QkFBSSxLQUFHLEVBQUUsOEJBQThCLElBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE1BQUssS0FBRyxFQUFFLDhCQUE4QixJQUFHLEVBQUUseUJBQXlCLElBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQUssMkJBQUssTUFBSTtBQUFBLGtCQUFJO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxLQUFHLE1BQUksS0FBRyxPQUFHLEVBQUUsYUFBYSxJQUFHLEVBQUU7QUFBQSxjQUFDLENBQUMsR0FBRSxPQUFLLEtBQUcsTUFBSSxJQUFFLE9BQUcsS0FBRyxLQUFHLElBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsSUFBRyxHQUFHLGdCQUFlLEVBQUUsS0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsb0JBQWtCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsR0FBRyxlQUFjLElBQUcsSUFBRyxJQUFHLEVBQUUsS0FBRyxFQUFFO0FBQUEsWUFBVTtBQUFDLGNBQUUsbUJBQWlCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLElBQUcsR0FBRyxZQUFXLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSxnQkFBYztBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMscUJBQU8sR0FBRyxXQUFVO0FBQUMsdUJBQU8sRUFBRSx3QkFBd0IsSUFBRyxFQUFFO0FBQUEsY0FBQyxDQUFDLEtBQUc7QUFBQSxZQUFFO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBRztBQUFDLHVCQUFPLEdBQUc7QUFBQSxjQUFDLFFBQUM7QUFBTTtBQUFBLGNBQU07QUFBQSxZQUFDO0FBQUMsY0FBRSxxQkFBbUI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHVCQUFRLEtBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRSxLQUFHLFVBQVUsUUFBTztBQUFLLG1CQUFHLEtBQUcsS0FBRyxVQUFVO0FBQUkscUJBQU8sR0FBRyxXQUFVO0FBQUMsdUJBQU8sTUFBSSxHQUFHLE1BQU0sSUFBRyxFQUFFO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsQ0FBQztBQUFFLHFCQUFPLEVBQUUseUJBQXlCLElBQUcsU0FBUyxJQUFHO0FBQUMsb0JBQUcsT0FBSztBQUFHLHlCQUFNO0FBQUcsb0JBQUksS0FBRyxFQUFFLGFBQWEsSUFBRyxjQUFjO0FBQUUsbUJBQUcsSUFBRyxFQUFFLEtBQUcsR0FBRyxLQUFLLEVBQUU7QUFBQSxjQUFDLENBQUMsR0FBRTtBQUFBLFlBQUU7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUk7QUFBRyxxQkFBTyxFQUFFLHlCQUF5QixJQUFHLFNBQVMsSUFBRztBQUFDLG9CQUFHLE9BQUssbUJBQWlCLEtBQUcsRUFBRSxlQUFlLElBQUcsU0FBUyxJQUFHO0FBQUMseUJBQU8sR0FBRyxJQUFHLEVBQUU7QUFBQSxnQkFBQyxHQUFFLGNBQWMsR0FBRTtBQUFJLHlCQUFNO0FBQUEsY0FBRSxDQUFDLEdBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSxrQkFBZ0I7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLENBQUMsR0FBRztBQUFXLHVCQUFNLENBQUM7QUFBRSxrQkFBSSxLQUFHLENBQUM7QUFBRSxxQkFBTyxFQUFFLHlCQUF5QixFQUFFLGlCQUFpQixFQUFFLEdBQUUsU0FBUyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLGFBQWEsSUFBRyxjQUFjO0FBQUUsb0JBQUcsR0FBRyxXQUFXLEVBQUUsR0FBRTtBQUFDLHNCQUFJLEtBQUcsR0FBRyxJQUFHLEVBQUU7QUFBRSx3QkFBSSxHQUFHLEtBQUssRUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSwrQkFBNkI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLENBQUMsR0FBRztBQUFTO0FBQU8sa0JBQUksS0FBRyxDQUFDLGdCQUFlLG1CQUFrQix3QkFBdUIsa0JBQWtCLEdBQUUsS0FBRyxHQUFHLFNBQVMsRUFBRSxLQUFHLElBQUcsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLENBQUM7QUFBRSxrQkFBRztBQUFHLHlCQUFRLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRztBQUFJLHNCQUFHLENBQUMsQ0FBQyxJQUFHO0FBQUMsd0JBQUksS0FBRyxJQUFJLEVBQUU7QUFBSSw2QkFBUSxNQUFNO0FBQUcseUJBQUcsSUFBSSxJQUFHLEdBQUcsR0FBRztBQUFFLHVCQUFHLE1BQUk7QUFBQSxrQkFBRTtBQUFBLGdCQUFDO0FBQUMsa0JBQUksS0FBRyxDQUFDLENBQUMsR0FBRSxHQUFHLFlBQVksR0FBRSxDQUFDLEdBQUUsR0FBRyxlQUFlLEdBQUUsQ0FBQyxHQUFFLEdBQUcsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLEdBQUcsZ0JBQWdCLENBQUM7QUFBRSxxQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLFdBQVUsQ0FBQyxDQUFDLElBQUcsVUFBUyxJQUFHLEtBQUksSUFBRyxLQUFJLFNBQVMsSUFBRyxJQUFHO0FBQUMsdUJBQU0sQ0FBQyxDQUFDLEdBQUcsSUFBRyxFQUFFO0FBQUEsY0FBQyxFQUFDLENBQUM7QUFBRSx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHVCQUFLLFdBQVMsS0FBRztBQUFJLHlCQUFRLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLHNCQUFJLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRyxJQUFHLEtBQUcsR0FBRztBQUFHLHNCQUFHLE1BQUksS0FBRyxJQUFHO0FBQUMsd0JBQUksS0FBRyxHQUFHLElBQUksRUFBRTtBQUFFLHdCQUFHLE9BQUs7QUFBTyw2QkFBTztBQUFBLGtCQUFFO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsd0JBQXNCO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLE1BQUksR0FBRyxnQ0FBOEIsR0FBRyw2QkFBNkIsR0FBRyxRQUFRLEtBQUcsR0FBRyxHQUFHLFVBQVMsRUFBRSxHQUFHLE9BQU8sU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRztBQUFBLGNBQVMsQ0FBQyxHQUFFO0FBQUcscUJBQU0sRUFBQyw4QkFBNkIsSUFBRywyQkFBMEIsSUFBRywwQkFBeUIsR0FBRTtBQUFFLHVCQUFTLEdBQUcsSUFBRztBQUFDLHlCQUFRLEtBQUcsR0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsc0JBQUksS0FBRyxHQUFHO0FBQUksc0JBQUcsR0FBRyxJQUFJLEVBQUUsS0FBRyxHQUFHLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0FBQUUsMkJBQU07QUFBQSxnQkFBRTtBQUFDLHVCQUFNO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUcsQ0FBQyxHQUFHLFVBQVEsQ0FBQyxHQUFHO0FBQWlCLHlCQUFNO0FBQUcsb0JBQUksS0FBRyxHQUFHLGlCQUFpQixjQUFjLEdBQUUsS0FBRyxHQUFHLEdBQUcsVUFBUyxFQUFFO0FBQUUsb0JBQUcsT0FBTyxLQUFHO0FBQUkseUJBQU07QUFBRyxvQkFBSSxLQUFHLEVBQUUsWUFBWSxHQUFHLFFBQVEsQ0FBQztBQUFFLHVCQUFPLEdBQUcsRUFBRSxJQUFFLE9BQUcsR0FBRyxFQUFFLEtBQUcsR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsb0JBQUcsQ0FBQyxHQUFHO0FBQU8seUJBQU07QUFBRyxvQkFBSSxLQUFHLEdBQUcsR0FBRyxVQUFTLEVBQUU7QUFBRSx1QkFBTyxLQUFHLEdBQUcsRUFBRSxJQUFFO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLHVCQUFNLENBQUMsR0FBRyxVQUFRLEdBQUcsRUFBRSxLQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUcsRUFBRSxpQkFBaUIsRUFBRSxJQUFFLE9BQUcsR0FBRyxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLHVCQUFNLENBQUMsRUFBRSxFQUFFLGVBQWUsRUFBRSxLQUFHLEVBQUUsU0FBUyxnQkFBZ0IsSUFBSSxFQUFFLE1BQUksT0FBSyxXQUFTLEtBQUcsR0FBRyxFQUFFLElBQUc7QUFBQSxjQUFJO0FBQUMsdUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxvQkFBRyxDQUFDLENBQUMsRUFBRSxlQUFlLElBQUcsY0FBYyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLGlCQUFpQiwwQkFBMEIsR0FBRyx1QkFBdUIsR0FBRSxJQUFHLElBQUcsSUFBRyxFQUFFO0FBQUUsc0JBQUcsQ0FBQyxDQUFDLE1BQUksQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFHLENBQUMsRUFBRSxpQkFBaUIsRUFBRTtBQUFFLDJCQUFPLEdBQUcsRUFBRTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxrQkFBa0IsRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxXQUFXLEdBQUcsSUFBRyxHQUFHLElBQUUsR0FBRyxPQUFPLEdBQUcsSUFBRyxHQUFHLEVBQUUsT0FBTyxHQUFHLEVBQUUsSUFBRSxHQUFHO0FBQUEsY0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGdDQUE4QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFHO0FBQUMsdUJBQU8sS0FBSyxNQUFNLEVBQUU7QUFBQSxjQUFDLFFBQUM7QUFBTTtBQUFBLGNBQU07QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxLQUFLLEdBQUcsU0FBUSxTQUFTLElBQUc7QUFBQyxvQkFBSSxLQUFHLEdBQUc7QUFBSyx1QkFBTyxFQUFFLFNBQVMsZ0JBQWdCLElBQUksRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLEdBQUUsY0FBYztBQUFBLFlBQUM7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsU0FBTyxVQUFRLEdBQUcsVUFBUSxVQUFRLEdBQUcsV0FBUztBQUFBLFlBQU07QUFBQyxjQUFFLDJCQUF5QjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEVBQUUsZ0JBQWdCLElBQUcsSUFBRyxFQUFFLFVBQVMsRUFBRSxnQkFBZ0I7QUFBRSxrQkFBRyxNQUFJLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUc7QUFBSSx1QkFBTyxFQUFFLE1BQU0sWUFBWSxHQUFHLE1BQUssR0FBRyxjQUFjLEdBQUUsaUZBQWlGLEdBQUUsRUFBRSxLQUFLLElBQUcsRUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSx3QkFBc0I7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLElBQUcsS0FBRyxFQUFFLGdCQUFnQixJQUFHLEdBQUcsT0FBTSxTQUFTLElBQUc7QUFBQyx1QkFBTyxHQUFHO0FBQUEsY0FBSyxHQUFFLEVBQUUsYUFBYTtBQUFFLG1CQUFJLEtBQUcsTUFBSSxLQUFHLENBQUMsT0FBTSxLQUFHLEdBQUcsS0FBRyxRQUFNLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxXQUFTLEdBQUc7QUFBTztBQUFLLHVCQUFRLEtBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxZQUFZLEVBQUUsT0FBSTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxRQUFRLEdBQUcsS0FBSSxFQUFFO0FBQUUsb0JBQUcsQ0FBQyxNQUFJLEdBQUcsUUFBTTtBQUFHO0FBQU0sa0JBQUUseUJBQXlCLElBQUcsRUFBRSxLQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUU7QUFBQSxjQUFJO0FBQUMscUJBQU87QUFBQSxZQUFFO0FBQUMsY0FBRSwyQkFBeUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUcsZUFBYyxLQUFHLEdBQUc7QUFBWSxxQkFBTyxFQUFFLHlCQUF5QixJQUFHLE9BQUssU0FBTyxLQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsY0FBRSx5QkFBdUI7QUFBRyxxQkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxJQUFHLEdBQUcsS0FBSyxHQUFFLEtBQUcsRUFBRSxhQUFhLElBQUcsU0FBUyxJQUFHO0FBQUMsdUJBQU8sR0FBRyxTQUFTLEVBQUUsSUFBRSxHQUFHLFNBQU8sR0FBRyxPQUFPLElBQUUsRUFBRSxZQUFZLEVBQUUsSUFBRSxTQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUcsR0FBRyxJQUFHLEdBQUcsSUFBRyxFQUFFLENBQUM7QUFBQSxjQUFDLENBQUM7QUFBRSxxQkFBTztBQUFBLFlBQUU7QUFBQyxjQUFFLGdDQUE4QjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxPQUFLLFdBQVMsS0FBRyxFQUFFLFdBQVUsS0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFFLEdBQUcsRUFBRSxJQUFJLElBQUcsRUFBRSxDQUFDLElBQUUsR0FBRyxJQUFHLENBQUMsSUFBRTtBQUFBLFlBQU07QUFBQyxjQUFFLGVBQWE7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLFFBQVEsRUFBRSxJQUFFLEVBQUUsTUFBTSxFQUFFLElBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSxjQUFZO0FBQUcscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBRyxHQUFHLEVBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxFQUFFO0FBQUUsb0JBQUc7QUFBRyx5QkFBTztBQUFHLG9CQUFJLEtBQUcsRUFBRSxRQUFRLDhCQUE4QixHQUFHLEVBQUUsR0FBRSxJQUFHLEtBQUUsR0FBRSxLQUFHLEVBQUUsUUFBUSw4QkFBOEIsR0FBRyxFQUFFLEdBQUUsSUFBRyxJQUFFO0FBQUUsdUJBQU8sT0FBSyxLQUFHLEtBQUcsQ0FBQyxJQUFHLEVBQUU7QUFBQSxjQUFDO0FBQUMscUJBQU8sR0FBRztBQUFBLFlBQUk7QUFBQyxjQUFFLDRCQUEwQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxxQkFBTyxHQUFHLEVBQUUsSUFBRSxHQUFHLEVBQUUsS0FBRyxFQUFFLFFBQVEsOEJBQThCLEdBQUcsRUFBRSxHQUFFLElBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBRSxHQUFHO0FBQUEsWUFBSTtBQUFDLGNBQUUsMkJBQXlCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sRUFBRSxHQUFHLFFBQU0sY0FBWSxHQUFHLGdCQUFjLGFBQVcsR0FBRyxnQkFBYztBQUFBLFlBQVU7QUFBQyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTyxFQUFFLGFBQWEsR0FBRyxjQUFhLFNBQVMsSUFBRztBQUFDLG9CQUFJO0FBQUcsdUJBQU8sRUFBRSxtQkFBbUIsRUFBRSxLQUFHLEtBQUcsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEdBQUcsVUFBVSxHQUFFLEVBQUUsWUFBWSxPQUFLLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxPQUFLO0FBQUEsY0FBTSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJO0FBQUcscUJBQU8sRUFBRSxNQUFNLGFBQWEsR0FBRyxRQUFPLHVDQUF1QyxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEdBQUUsSUFBSSxJQUFFLGlCQUFpQixRQUFRLEtBQUcsR0FBRyxrQkFBZ0IsUUFBTSxPQUFLLFNBQU8sU0FBTyxHQUFHLElBQUksU0FBUyxJQUFHO0FBQUMsb0JBQUksS0FBRyxFQUFFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFFLEtBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRSxLQUFHLEdBQUc7QUFBVyx3QkFBTyxLQUFHLFNBQU8sTUFBSSxNQUFJLEtBQUcsaUJBQWlCLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRSxHQUFHLElBQUU7QUFBQSxjQUFHLENBQUMsRUFBRSxLQUFLLElBQUksR0FBRSxHQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRztBQUFPLGtCQUFHLEtBQUcsS0FBRyxHQUFHO0FBQU8sdUJBQU07QUFBRyx1QkFBUSxLQUFHLEdBQUUsS0FBRyxJQUFHO0FBQUssb0JBQUcsR0FBRyxXQUFXLEVBQUUsTUFBSSxHQUFHLFdBQVcsS0FBRyxFQUFFO0FBQUUseUJBQU07QUFBRyxxQkFBTTtBQUFBLFlBQUU7QUFBQyxjQUFFLG1CQUFpQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLEdBQUcsV0FBVyxDQUFDLE1BQUk7QUFBQSxZQUFFO0FBQUMsY0FBRSx1QkFBcUI7QUFBRyxxQkFBUyxHQUFHLElBQUc7QUFBQyxxQkFBTSxDQUFDLEdBQUcsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHNCQUFvQjtBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsR0FBRyxjQUFjO0FBQUUscUJBQU0sQ0FBQyxHQUFHLDJCQUF5QixDQUFDLEdBQUcsMEJBQXdCLFFBQUcsRUFBRSxXQUFXLEVBQUUsS0FBRyxDQUFDLEVBQUUsYUFBYSxJQUFHLEVBQUUseUJBQXlCO0FBQUEsWUFBQztBQUFDLGNBQUUseUJBQXVCO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU0sQ0FBQyxFQUFFLEVBQUUsdUNBQXVDLEVBQUUsSUFBRTtBQUFBLFlBQUs7QUFBQyxjQUFFLDBCQUF3QjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxFQUFFLGFBQWEsR0FBRyxTQUFRLFNBQVMsSUFBRztBQUFDLG9CQUFHLEVBQUUsU0FBUyxnQkFBZ0IsSUFBSSxHQUFHLElBQUk7QUFBRSx5QkFBTyxFQUFFLFdBQVcsR0FBRyxNQUFLLE9BQU87QUFBQSxjQUFDLENBQUM7QUFBRSxxQkFBTyxNQUFJLE9BQUssS0FBRyxHQUFHO0FBQUEsWUFBMkI7QUFBQyxjQUFFLG1DQUFpQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUs7QUFBQSxJQUN4K2MsSUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLGlCQUFlO0FBQUcscUJBQVMsR0FBRyxJQUFHO0FBQUMscUJBQU8sRUFBRSxRQUFRLEVBQUUsSUFBRSxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixHQUFHLEVBQUUsR0FBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUUsRUFBRSx5QkFBeUIsRUFBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLHFCQUFtQjtBQUFHLHFCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLFNBQVEsS0FBRyxDQUFDLEdBQUcsY0FBWSxHQUFHLGVBQWEsRUFBRSxvQkFBb0IsUUFBTyxLQUFHLEdBQUcsZUFBYSxFQUFFLG9CQUFvQixVQUFRLE1BQUksQ0FBQyxHQUFHLEVBQUU7QUFBRSxxQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLFlBQVcsS0FBRyxFQUFFLG9CQUFvQixTQUFPLEVBQUUsb0JBQW9CLE9BQU0sQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLGtDQUFnQztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLHFCQUFPLE9BQUssS0FBRyxPQUFLO0FBQUEsWUFBQztBQUFDLGNBQUUsNkJBQTJCO0FBQUEsVUFBRSxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxnQkFBSTtBQUFFLGFBQUMsU0FBUyxHQUFFO0FBQUMsZ0JBQUUsRUFBRSxRQUFNLEtBQUcsU0FBUSxFQUFFLEVBQUUsVUFBUSxLQUFHLFdBQVUsRUFBRSxFQUFFLFlBQVUsS0FBRyxhQUFZLEVBQUUsRUFBRSxXQUFTLEtBQUc7QUFBQSxZQUFVLEdBQUcsSUFBRSxFQUFFLGVBQWEsRUFBRSxhQUFXLENBQUMsRUFBRTtBQUFFLGdCQUFJO0FBQUUsYUFBQyxTQUFTLEdBQUU7QUFBQyxnQkFBRSxFQUFFLFFBQU0sS0FBRyxTQUFRLEVBQUUsRUFBRSxVQUFRLEtBQUcsV0FBVSxFQUFFLEVBQUUsZUFBYSxLQUFHLGdCQUFlLEVBQUUsRUFBRSxNQUFJLEtBQUc7QUFBQSxZQUFLLEdBQUcsSUFBRSxFQUFFLGVBQWEsRUFBRSxhQUFXLENBQUMsRUFBRTtBQUFFLHFCQUFTLEVBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsR0FBRSxJQUFFLEVBQUUsZUFBZSxHQUFFLEtBQUcsSUFBSSxFQUFFLE9BQUksSUFBRSxJQUFJLEVBQUUsT0FBSSxJQUFHLElBQUUsRUFBQyxnQkFBZSxTQUFTLEdBQUU7QUFBQyx1QkFBTyxNQUFJO0FBQUEsY0FBRSxHQUFFLFNBQVEsV0FBVTtBQUFDLHVCQUFNLENBQUMsRUFBRTtBQUFBLGNBQUksR0FBRSxPQUFNLFdBQVU7QUFBQyxrQkFBRSxNQUFNLEdBQUUsR0FBRyxNQUFNLEdBQUUsS0FBRztBQUFBLGNBQU0sR0FBRSxLQUFJLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQUksT0FBSyxFQUFFLE1BQU0sR0FBRSxLQUFHO0FBQUcsb0JBQUk7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLHVCQUF1QixFQUFFLFFBQVE7QUFBRSxzQkFBRyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLDBCQUF5QixJQUFFLEVBQUUsMEJBQXlCLElBQUUsRUFBRTtBQUFpQix3QkFBRyxJQUFFLEVBQUUsMEJBQTBCLEVBQUUsbUNBQW1DLEVBQUUsU0FBUyxVQUFVLElBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsV0FBVyxHQUFFLEVBQUUsS0FBSyxVQUFVLEdBQUUsQ0FBQyxDQUFDLEdBQUU7QUFBQywwQkFBSSxJQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUUsSUFBRSxFQUFFLFNBQVMsVUFBVSxHQUFFLElBQUUsQ0FBQztBQUFFLDBCQUFHLEdBQUU7QUFBQyw0QkFBSSxJQUFFLEVBQUUsUUFBUSxFQUFFLG1CQUFtQjtBQUFFLDRCQUFFLEtBQUcsRUFBRSxJQUFJLEdBQUUsQ0FBQztBQUFBLHNCQUFDO0FBQU0sMEJBQUUsSUFBSSxHQUFFLENBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBSSxJQUFFLE1BQUksR0FBRSxLQUFHLEtBQUcsRUFBRSwrQkFBK0IsQ0FBQyxLQUFHLEdBQUUsSUFBRSxNQUFJLEtBQUcsRUFBRSx1QkFBdUIsRUFBRSxJQUFFLEVBQUUsMkJBQTJCLENBQUMsSUFBRSxFQUFFLDBCQUEwQixJQUFHLE1BQU0sR0FBRSxLQUFHLE9BQU8sS0FBRyxXQUFTLElBQUUsRUFBRSxJQUFHLEtBQUcsT0FBTyxLQUFHLFdBQVMsU0FBTyxFQUFFLElBQUcsS0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLEdBQUUsS0FBRyxLQUFJLElBQUUsRUFBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxRQUFNLFdBQVMsU0FBTyxHQUFFLEtBQUcsRUFBRSxRQUFNLFdBQVMsU0FBTztBQUFFLGlCQUFDLENBQUMsTUFBSSxDQUFDLE9BQUssR0FBRyxJQUFJLElBQUcsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBSSxFQUFFLElBQUcsR0FBRSxFQUFFLDZCQUE2QixFQUFFLElBQUUsU0FBTyxJQUFHLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxnQkFBZSxHQUFFLFlBQVcsSUFBRyx1QkFBc0IsSUFBRyxZQUFXLElBQUcsWUFBVyxHQUFFLGdCQUFlLEtBQUcsT0FBSyxTQUFPLEVBQUUsVUFBUyxhQUFZLEdBQUUsWUFBVyxHQUFFLGFBQVksRUFBRSxPQUFNLG1CQUFrQixHQUFFLFFBQU8sSUFBRyxjQUFhLEdBQUUsQ0FBQztBQUFBLGNBQUMsR0FBRSxLQUFJLFNBQVMsR0FBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSSxJQUFHO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUksQ0FBQztBQUFFLHlCQUFPLEtBQUcsT0FBSyxTQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDLEdBQUUsUUFBTyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxzQkFBSSxNQUFJLEVBQUUsUUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLFlBQVcsSUFBRSxFQUFFLG1CQUFrQixJQUFFLEtBQUcsRUFBRSxHQUFHLHlCQUF1QjtBQUFFLHNCQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUcsV0FBVyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLElBQUksQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLFNBQVMsR0FBRSxHQUFFO0FBQUMsNkJBQU8sRUFBRSxHQUFFLEVBQUUsR0FBRyxXQUFXO0FBQUEsb0JBQUMsQ0FBQztBQUFFLHNCQUFFLFVBQVEsRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUMsR0FBRSxnQkFBZSxXQUFVO0FBQUMsbUJBQUcsTUFBTTtBQUFBLGNBQUMsR0FBRSxlQUFjLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBTyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUMsSUFBRSxRQUFHLE1BQUksT0FBSyxFQUFFLFFBQU0sS0FBRyxFQUFFLHdCQUF3QixDQUFDLE1BQUksRUFBRSx3QkFBd0IsQ0FBQyxLQUFHLENBQUMsRUFBRSxlQUFlLEVBQUUscUJBQW9CLEVBQUUsbUJBQW1CLEtBQUcsQ0FBQyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEVBQUUsTUFBTSxHQUFFLFNBQUssS0FBRyxFQUFFLE1BQUs7QUFBQSxjQUFHLEVBQUM7QUFBRSxxQkFBTyxFQUFFLE1BQU0sZUFBYSxPQUFPLGVBQWUsR0FBRSxXQUFVLEVBQUMsS0FBSSxXQUFVO0FBQUMsdUJBQU87QUFBQSxjQUFDLEVBQUMsQ0FBQyxHQUFFO0FBQUUsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxVQUFRLEVBQUU7QUFBYSx5QkFBTztBQUFFLG9CQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxZQUFXLElBQUUsRUFBRSxhQUFZLElBQUUsRUFBRSxtQkFBa0IsSUFBRSxFQUFFLGdCQUFlLElBQUUsR0FBRyxJQUFJLENBQUMsS0FBRyxFQUFFLFlBQVcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFO0FBQUcsb0JBQUcsS0FBRztBQUFFLHlCQUFNLEVBQUMsUUFBTyxHQUFFLGNBQWEsR0FBRSxnQkFBZSxHQUFFLFlBQVcsR0FBRSxhQUFZLEdBQUUsbUJBQWtCLEVBQUM7QUFBRSxvQkFBSSxLQUFHLElBQUUsRUFBRSxpQ0FBaUMsSUFBRSxFQUFFLGtCQUFrQixHQUFHLGVBQWUsR0FBRSxJQUFFLEVBQUUsZ0JBQWMsS0FBRyxFQUFFLE1BQU0sYUFBYSxFQUFFLGFBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLE1BQU0sSUFBRSxFQUFFLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFRLEtBQUcsRUFBRSxNQUFNLGFBQWEsTUFBSSxJQUFFLEVBQUUsNEJBQTRCLENBQUMsSUFBRSxFQUFFLHlDQUF5QyxFQUFFLDJCQUEyQixFQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsMEJBQTBCLE9BQU8sRUFBRSxZQUFXLFlBQVksRUFBRSxPQUFPLEVBQUUsZ0JBQWUsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7QUFBRSx1QkFBTyxHQUFHLElBQUksR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxRQUFPLEdBQUUsY0FBYSxHQUFFLGdCQUFlLEdBQUUsWUFBVyxHQUFFLGFBQVksR0FBRSxtQkFBa0IsRUFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUc7QUFBRyx1QkFBTSxHQUFHLE9BQU8sR0FBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsVUFBVSxHQUFFLEVBQUUsUUFBUSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsVUFBVSxFQUFFLFlBQVksR0FBRyxJQUFFLENBQUMsR0FBRSxJQUFFLE1BQUksS0FBRyxTQUFPO0FBQUUsdUJBQU0sRUFBQyxZQUFXLEdBQUUsbUJBQWtCLEVBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxFQUFFLDJCQUF5QixDQUFDLEVBQUUsMkJBQXlCLENBQUMsRUFBRSx1QkFBcUIsQ0FBQyxFQUFFO0FBQUEsY0FBa0I7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLENBQUMsRUFBRSxlQUFlLEVBQUUsb0JBQW1CLEVBQUUsa0JBQWtCO0FBQUUseUJBQU07QUFBRyx5QkFBUSxJQUFFLElBQUcsSUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsc0JBQUksSUFBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLHlCQUF5QixDQUFDLEtBQUcsRUFBRSxLQUFLLFNBQU87QUFBQSxrQkFBQztBQUFFLHNCQUFHLElBQUUsRUFBRSxVQUFVLEVBQUUsWUFBVyxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFVLEVBQUUsWUFBVyxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsV0FBVyxPQUFLLEVBQUUsV0FBVztBQUFHLDJCQUFNLEVBQUMsT0FBTSxNQUFFO0FBQUEsZ0JBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLG9CQUFtQixJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsc0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLENBQUM7QUFBRSxzQkFBRyxPQUFPLEtBQUc7QUFBUywyQkFBTyxFQUFFO0FBQUEsZ0JBQUs7QUFBQyx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFHLENBQUMsS0FBRyxDQUFDLEVBQUU7QUFBZSx5QkFBTTtBQUFHLG9CQUFJLElBQUUsRUFBRSw4QkFBOEI7QUFBRSxvQkFBRyxLQUFHLEVBQUUsV0FBVyxFQUFFLGdCQUFlLENBQUM7QUFBRSx5QkFBTTtBQUFHLG9CQUFJLElBQUUsRUFBRSxJQUFJLENBQUM7QUFBRSx1QkFBTSxDQUFDLEtBQUcsRUFBRSxXQUFXLEVBQUUsZ0JBQWUsQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsY0FBRSwrQkFBNkI7QUFBRSxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUU7QUFBQyxrQkFBSTtBQUFFLGtCQUFHLE1BQUk7QUFBRSx1QkFBTTtBQUFHLGtCQUFJLElBQUUsS0FBRyxPQUFLLFNBQU8sRUFBRSxJQUFJLEVBQUUsTUFBSyxFQUFFLE1BQUssSUFBRyxDQUFDLENBQUM7QUFBRSxtQkFBSSxLQUFHLE9BQUssU0FBTyxFQUFFLHdDQUFzQztBQUFPLHVCQUFNLENBQUMsRUFBRTtBQUFtQyxrQkFBSSxLQUFHLEVBQUUseUJBQXlCLEVBQUUsR0FBRSxNQUFJLElBQUUsR0FBRyxtQ0FBaUMsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLEtBQUssRUFBRSxHQUFFLEtBQUcsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLHdCQUF3QixFQUFFLFVBQVMsRUFBRSxVQUFTLElBQUcsT0FBRyxTQUFTLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsY0FBYyxDQUFDO0FBQUUsd0JBQU8sTUFBSSxLQUFHLENBQUMsTUFBSSxFQUFFLEVBQUUsVUFBUyxHQUFFLElBQUcsRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFFLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLE1BQUksRUFBRSwwQkFBMEIsR0FBRSxFQUFFO0FBQUUsdUJBQU8sS0FBRyxRQUFNLEVBQUUsb0NBQW9DLEVBQUUsTUFBSyxFQUFFLE1BQUssSUFBRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUU7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFFO0FBQUMsY0FBRSxtQkFBaUI7QUFBRSxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxrQkFBSSxJQUFFLEVBQUUseUJBQXlCLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFJLGlCQUFlLElBQUU7QUFBQSxjQUFNLENBQUMsR0FBRSxLQUFHLEtBQUcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7QUFBRSxxQkFBTyxPQUFLLFVBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBRyxDQUFDLENBQUMsTUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxrQkFBSSxHQUFFO0FBQUcsaUJBQUcsRUFBRSxlQUFlLEdBQUUsRUFBRSxlQUFlLEdBQUUsU0FBUyxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUU7QUFBQSxjQUFDLENBQUM7QUFBRSxrQkFBSSxJQUFFLE9BQUssSUFBRSxFQUFFLHNDQUFvQyxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUUsS0FBSyxDQUFDO0FBQUcsa0JBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxVQUFVO0FBQUUsbUJBQUcsRUFBRSxlQUFlLEdBQUUsRUFBRSxlQUFlLEdBQUUsU0FBUyxHQUFFLElBQUc7QUFBQyx5QkFBTyxHQUFHLEdBQUUsSUFBRyxHQUFFLElBQUU7QUFBQSxnQkFBQyxDQUFDLElBQUcsS0FBRyxFQUFFLFNBQU8sUUFBTSxPQUFLLFVBQVEsR0FBRyxLQUFLLEdBQUUseURBQXlELE9BQU8sRUFBRSxVQUFVLElBQUUsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLG9DQUFrQztBQUFFLHFCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyx1QkFBUSxLQUFHLEdBQUUsSUFBRSxFQUFFLGtCQUFrQixHQUFFLEtBQUcsRUFBRSxRQUFPLE1BQUs7QUFBQyxvQkFBSSxLQUFHLEVBQUU7QUFBSSxrQkFBRSxlQUFlLEdBQUcsTUFBSyxHQUFHLEtBQUcsRUFBRSxJQUFHLE1BQU07QUFBQSxjQUFDO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUUsMkJBQTJCLENBQUMsS0FBRyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRztBQUFDLGtCQUFJLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFHLEVBQUUsVUFBVTtBQUFFLGVBQUMsSUFBRSxFQUFFLHNDQUFvQyxRQUFNLE1BQUksVUFBUSxFQUFFLEtBQUssQ0FBQztBQUFFLGtCQUFJLE9BQUssS0FBRyxFQUFFLDRCQUEwQixRQUFNLE9BQUssU0FBTyxTQUFPLEdBQUcsS0FBSyxDQUFDLE1BQUksRUFBRSxFQUFDLG1CQUFrQixXQUFVO0FBQUMsdUJBQU87QUFBQSxjQUFDLEdBQUUsa0NBQWlDLFdBQVU7QUFBQyxvQkFBSTtBQUFFLHdCQUFPLElBQUUsRUFBRSxzQ0FBb0MsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLEtBQUssQ0FBQztBQUFBLGNBQUMsR0FBRSwrQkFBOEIsV0FBVTtBQUFDLG9CQUFJO0FBQUUsd0JBQU8sSUFBRSxFQUFFLG1DQUFpQyxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUUsS0FBSyxDQUFDO0FBQUEsY0FBQyxFQUFDLENBQUM7QUFBRSxrQkFBRyxHQUFHLGVBQWUsRUFBRSxJQUFJO0FBQUUsd0JBQU8sSUFBRSxFQUFFLFNBQU8sUUFBTSxNQUFJLFVBQVEsRUFBRSxLQUFLLEdBQUUsNkJBQTZCLEdBQUU7QUFBRyxlQUFDLElBQUUsRUFBRSxTQUFPLFFBQU0sTUFBSSxVQUFRLEVBQUUsS0FBSyxHQUFFLGdFQUFnRTtBQUFFLGtCQUFJLEtBQUcsRUFBRSxtQkFBbUIsR0FBRSxJQUFFO0FBQUUsa0JBQUc7QUFBQyxrQkFBRSxHQUFFLEdBQUUsTUFBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRSxJQUFFLFFBQU0sTUFBSSxNQUFJLFFBQU0sR0FBRyw2QkFBNkI7QUFBRyxzQkFBSSxJQUFFLElBQUksRUFBRSxPQUFJLElBQUUsRUFBRSxlQUFlLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUUsdUJBQUcsRUFBRSxFQUFFLFFBQU8sQ0FBQyxLQUFHLEdBQUcsSUFBSSxFQUFFLE1BQUssRUFBRSxRQUFPLEVBQUUsZUFBYSxJQUFFLFlBQVUsV0FBVSxHQUFFLEdBQUUsRUFBRSxZQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUUsaUNBQWlDLEdBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQywyQkFBSyxLQUFHLE9BQUssU0FBTyxFQUFFLFdBQVMsRUFBRSxHQUFFLENBQUMsS0FBRyxFQUFFLFVBQVUsR0FBRSxDQUFDLEtBQUcsR0FBRyxJQUFJLEVBQUUsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUMsQ0FBQztBQUFBLGdCQUFDLENBQUM7QUFBQSxjQUFDLFNBQU8sR0FBTjtBQUFTLHNCQUFNLEdBQUcsTUFBTSxHQUFFO0FBQUEsY0FBQztBQUFDLHNCQUFPLElBQUUsRUFBRSxTQUFPLFFBQU0sTUFBSSxVQUFRLEVBQUUsS0FBSyxHQUFFLDZCQUE2QixPQUFPLEVBQUUsVUFBVSxJQUFFLElBQUcsS0FBSyxDQUFDLEdBQUU7QUFBQSxZQUFFO0FBQUMsY0FBRSxtQkFBaUI7QUFBRSxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksS0FBRyxFQUFFLEdBQUUsQ0FBQztBQUFFLGtCQUFHLENBQUMsQ0FBQyxJQUFHO0FBQUMsb0JBQUksSUFBRSxHQUFHLFFBQU8sS0FBRyxHQUFHLFlBQVcsSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU8sS0FBRyxHQUFHLEVBQUMsUUFBTyxHQUFFLFlBQVcsR0FBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsMkJBQXlCO0FBQUUscUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsS0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsS0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLEtBQUcsQ0FBQyxFQUFFLDBCQUEwQixDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLDRCQUE0QixDQUFDO0FBQUUsa0JBQUcsTUFBSTtBQUFFLHVCQUFNLEVBQUMsUUFBTyxHQUFFLFlBQVcsRUFBQztBQUFFLGtCQUFJLEtBQUcsRUFBRSw0QkFBNEIsV0FBVSxDQUFDO0FBQUUsa0JBQUc7QUFBRyx1QkFBTSxFQUFDLFFBQU8sSUFBRyxZQUFXLEVBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLEtBQUcsRUFBRSwrQkFBK0IsQ0FBQztBQUFFLGtCQUFHO0FBQUcsdUJBQU0sRUFBQyxrQkFBaUIsSUFBRyxNQUFLLEdBQUcsS0FBSTtBQUFFLGtCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsa0JBQUcsTUFBSTtBQUFPLHVCQUFNLEVBQUMsa0JBQWlCLEdBQUUsTUFBSyxFQUFDO0FBQUUsa0JBQUcsRUFBRSxRQUFNLFNBQVE7QUFBQyxvQkFBSSxLQUFHLEVBQUUsMEJBQTBCLENBQUM7QUFBRSxvQkFBRyxNQUFJLEdBQUc7QUFBTyx5QkFBTyxHQUFHLElBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsZ0JBQWMsYUFBVyxFQUFFLGdCQUFjLFlBQVUsRUFBQyxrQkFBaUIsR0FBRSxNQUFLLEVBQUUsUUFBUSxFQUFDLElBQUUsRUFBQyxrQkFBaUIsR0FBRSxNQUFLLEVBQUUseUJBQXlCLEdBQUUsRUFBRSxNQUFNLEVBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxnQkFBYyxFQUFFLGFBQWEsRUFBRSxjQUFhLFNBQVMsR0FBRTtBQUFDLG9CQUFJO0FBQUUsb0JBQUcsRUFBRSxtQkFBbUIsQ0FBQztBQUFFLDBCQUFPLElBQUUsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxHQUFFLEVBQUUsWUFBWSxPQUFLLFFBQU0sTUFBSSxTQUFPLFNBQU8sRUFBRTtBQUFLLG9CQUFHLEVBQUUsa0JBQWtCLENBQUM7QUFBRSx5QkFBTyxFQUFFLE1BQU0sT0FBTyxFQUFFLEtBQUssU0FBTyxXQUFVLCtDQUErQyxHQUFFLEVBQUUsZ0JBQWMsRUFBRSxhQUFhO0FBQUEsY0FBSSxDQUFDO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRyxPQUFLLEtBQUcsQ0FBQyxFQUFFO0FBQUUsY0FBSTtBQUFHLFdBQUMsU0FBUyxHQUFFO0FBQUMscUJBQVMsSUFBRztBQUFDLGtCQUFJLElBQUUsRUFBRSxjQUFjLElBQUcsS0FBRTtBQUFFLHVCQUFTLEVBQUUsSUFBRyxJQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEdBQUcsSUFBRyxJQUFHLENBQUMsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsSUFBRyxJQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFO0FBQWEscUJBQUcsSUFBRTtBQUFHLG9CQUFJLElBQUUsRUFBRTtBQUFPLHFCQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUUsRUFBRSxRQUFRLEVBQUU7QUFBRSxvQkFBSSxJQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRTtBQUFFLG1CQUFFO0FBQUMsc0JBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxTQUFTLENBQUMsTUFBSSxFQUFFLEdBQUUsSUFBRTtBQUFHLHNCQUFJLElBQUUsRUFBRSxXQUFXO0FBQUUsc0JBQUcsRUFBRSxFQUFFLFlBQVksR0FBRSxHQUFFLEdBQUUsRUFBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRyxRQUFPO0FBQUMsd0JBQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFBRSwwQkFBSSxXQUFTLElBQUU7QUFBQSxrQkFBRTtBQUFBLGdCQUFDLFNBQU8sTUFBSTtBQUFHLHlCQUFTLElBQUc7QUFBQywwQkFBTztBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBRyx1QkFBQyxFQUFFLE1BQUksRUFBRSxpQkFBaUIsTUFBSSxPQUFLLElBQUU7QUFBSTtBQUFBLHlCQUFXO0FBQUcsNEJBQUksTUFBSTtBQUFJO0FBQUEseUJBQVc7QUFBRywwQkFBRSxLQUFHO0FBQUk7QUFBQSx5QkFBVztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUksMEJBQUUsS0FBRyxDQUFDLE1BQUksSUFBRTtBQUFJO0FBQUEseUJBQVc7QUFBRyx3QkFBRSxLQUFLLENBQUM7QUFBRTtBQUFBLHlCQUFXO0FBQUcsd0JBQUUsU0FBTyxLQUFHLEVBQUUsS0FBSyxDQUFDO0FBQUU7QUFBQSx5QkFBVztBQUFHLDBCQUFHLEVBQUUsU0FBTyxHQUFFO0FBQUMsNEJBQUksSUFBRSxFQUFFLGdCQUFnQixDQUFDO0FBQUUsOEJBQUksTUFBSSxJQUFFLEVBQUUsb0JBQW9CLEtBQUUsR0FBRSxNQUFJLEtBQUcsRUFBRSxJQUFJLElBQUUsRUFBRSxNQUFNLFlBQVksR0FBRSxJQUFHLHFDQUFxQyxNQUFJLEVBQUUsTUFBTSxZQUFZLEdBQUUsSUFBRyxnQ0FBZ0MsR0FBRSxFQUFFLElBQUk7QUFBQSxzQkFBRTtBQUFDO0FBQUE7QUFBYywwQkFBRyxDQUFDLEVBQUUsVUFBVSxDQUFDO0FBQUU7QUFBTSx1QkFBQyxNQUFJLE1BQUksRUFBRSxVQUFVLENBQUMsS0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFHLENBQUMsR0FBRyxHQUFFLENBQUMsT0FBSyxJQUFFO0FBQUE7QUFBQSxnQkFBSTtBQUFDLHVCQUFNLEVBQUMsZ0JBQWUsR0FBRSxPQUFNLEVBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU0sRUFBQywyQkFBMEIsR0FBRSxrQ0FBaUMsR0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLG1CQUFpQjtBQUFFLGdCQUFJLElBQUUsRUFBRSxrQkFBa0IsQ0FBQyxJQUFHLElBQUcsR0FBRSxHQUFFLElBQUcsS0FBSSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsS0FBSSxFQUFFLEdBQUUsU0FBUyxHQUFFO0FBQUMscUJBQU87QUFBQSxZQUFDLEdBQUUsV0FBVTtBQUFDLHFCQUFNO0FBQUEsWUFBRSxDQUFDO0FBQUUscUJBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRztBQUFDLHNCQUFPO0FBQUEscUJBQVEsSUFBRztBQUFDLHNCQUFHLENBQUMsRUFBRSxlQUFlO0FBQUU7QUFBTywyQkFBUSxLQUFHLEVBQUUsYUFBYSxHQUFFLEtBQUcsR0FBRyxTQUFPLEdBQUUsSUFBRSxHQUFFLEdBQUcsV0FBVyxLQUFHLENBQUMsTUFBSTtBQUFJO0FBQUksMEJBQU8sSUFBRSxPQUFLLElBQUUsU0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFJLEtBQUcsSUFBRTtBQUFBLGdCQUFDO0FBQUEscUJBQU07QUFBRSx5QkFBTyxFQUFFLGVBQWUsSUFBRSxJQUFFO0FBQUE7QUFBZSxzQkFBRyxFQUFFLHNCQUFzQixDQUFDLEdBQUU7QUFBQyx3QkFBRyxDQUFDLEVBQUUsZUFBZTtBQUFFO0FBQU8sNEJBQU87QUFBQSwyQkFBUTtBQUFHLCtCQUFPO0FBQUEsMkJBQU87QUFBRywrQkFBTztBQUFBO0FBQVUsK0JBQU8sRUFBRSxNQUFNLEtBQUssb0dBQWtHLENBQUM7QUFBQTtBQUFBLGtCQUFFO0FBQUMseUJBQU8sT0FBSyxLQUFHLElBQUU7QUFBQTtBQUFBLFlBQU87QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRztBQUFDLGtCQUFHLE9BQUssR0FBRTtBQUFDLHNCQUFJLEtBQUcsS0FBRyxNQUFJLEtBQUc7QUFBSSxvQkFBSSxJQUFFLElBQUU7QUFBRSxvQkFBRSxLQUFHLEdBQUcsS0FBSyxJQUFFLElBQUcsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFRLEtBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxPQUFNLEtBQUcsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFHLFFBQU8sS0FBRyxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLElBQUcsSUFBRSxHQUFHLElBQUUsSUFBRyxJQUFFLEdBQUcsSUFBRTtBQUFHLG9CQUFHLE1BQUksR0FBRTtBQUFDLHNCQUFJLElBQUUsSUFBRTtBQUFHLHNCQUFFLEtBQUcsR0FBRyxLQUFLLEVBQUMsUUFBTyxHQUFFLGdCQUFlLEVBQUUsV0FBVyxXQUFVLENBQUM7QUFBQSxnQkFBQztBQUFDLG1CQUFHLEtBQUssRUFBQyxRQUFPLEdBQUUsZ0JBQWUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsSUFBRTtBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFLEVBQUUsU0FBTztBQUFHLHFCQUFPLElBQUUsS0FBRyxHQUFHLEtBQUssRUFBQyxRQUFPLEdBQUUsZ0JBQWUsRUFBRSxXQUFXLFdBQVUsQ0FBQyxHQUFFLEVBQUMsU0FBUSxJQUFHLGVBQWMsRUFBRSxlQUFjO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBRSx5QkFBTyxFQUFFLFdBQVc7QUFBQSxxQkFBYTtBQUFFLHlCQUFPLEVBQUUsV0FBVztBQUFBLHFCQUFhO0FBQUUseUJBQU8sRUFBRSxXQUFXO0FBQUEscUJBQW1CO0FBQUcseUJBQU8sRUFBRSxXQUFXO0FBQUEscUJBQW1CO0FBQUUseUJBQU8sRUFBRSxXQUFXO0FBQUEscUJBQWM7QUFBRSx5QkFBTyxFQUFFLFdBQVc7QUFBQSxxQkFBbUI7QUFBRSx5QkFBTyxFQUFFLFdBQVc7QUFBQSxxQkFBZ0I7QUFBRyx5QkFBTyxFQUFFLFdBQVc7QUFBQSxxQkFBaUI7QUFBQSxxQkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFPO0FBQUcseUJBQU8sRUFBRSxXQUFXO0FBQUE7QUFBbUI7QUFBQTtBQUFBLFlBQU87QUFBQyxxQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFHLENBQUMsRUFBRSx3QkFBd0IsQ0FBQztBQUFFLHVCQUFNO0FBQUcsc0JBQU87QUFBQSxxQkFBUTtBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBRSx5QkFBTSxFQUFDLFFBQU87QUFBQSxFQUN2alg7QUFBQSxxQkFBTztBQUFFLHlCQUFNLEVBQUMsUUFBTztBQUFBLEVBQ3ZCO0FBQUEscUJBQU87QUFBRSx5QkFBTSxFQUFDLFFBQU87QUFBQSxFQUN2QjtBQUFBLHFCQUFPO0FBQUUseUJBQU0sRUFBQyxRQUFPLE1BQUs7QUFBQSxxQkFBTztBQUFFLHlCQUFNLEVBQUMsUUFBTztBQUFBLEdBQ2xELGNBQWEsS0FBRTtBQUFBLHFCQUFPO0FBQUUseUJBQU0sRUFBQyxRQUFPLElBQUcsY0FBYSxLQUFFO0FBQUEscUJBQU87QUFBRSx5QkFBTSxFQUFDLFFBQU8sR0FBRTtBQUFBO0FBQVUseUJBQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUFBO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFHLHlCQUFNO0FBQUE7QUFBVyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUcseUJBQU07QUFBQTtBQUFXLHlCQUFNO0FBQUE7QUFBQSxZQUFHO0FBQUMscUJBQVMsRUFBRSxHQUFFO0FBQUMsa0JBQUcsRUFBRSxVQUFVLENBQUM7QUFBRSx1QkFBTztBQUFFLGtCQUFHLEVBQUUsQ0FBQyxLQUFHLEVB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QUFBTyx1QkFBRyxNQUFJLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxJQUFFLEtBQUksRUFBRSxHQUFFLEdBQUcsR0FBRyxRQUFPLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRyxRQUFPLEdBQUcsR0FBRyxXQUFTLEVBQUUsR0FBRSxHQUFHLEdBQUcsTUFBTSxHQUFFLEtBQUcsR0FBRyxHQUFHLFNBQVEsRUFBRSxHQUFFLEdBQUcsR0FBRyxRQUFPLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRyxRQUFPLEdBQUcsR0FBRyxXQUFTLEVBQUUsR0FBRSxHQUFHLEdBQUcsTUFBTSxHQUFFLEtBQUcsR0FBRyxHQUFHLFNBQVEsRUFBRSxHQUFFLEdBQUcsR0FBRyxRQUFPLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRztBQUFBLGdCQUFNO0FBQUMsc0JBQUksR0FBRyxHQUFHLFFBQU8sS0FBRyxLQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFHLE9BQUssRUFBRSxJQUFHLEdBQUcsR0FBRyxRQUFPLEVBQUUsR0FBRSxNQUFJLEdBQUcsR0FBRztBQUFRLG9CQUFJLEtBQUcsSUFBRTtBQUFFLHVCQUFPLEtBQUcsTUFBSSxFQUFFLElBQUcsS0FBRyxFQUFFLEdBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxHQUFFLEtBQUcsRUFBRSxZQUFZLEdBQUUsSUFBRSxHQUFHLFFBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsR0FBRztBQUFHLG9CQUFFLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUk7QUFBRSxxQkFBSSxJQUFFLEdBQUUsSUFBRSxNQUFJLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRTtBQUFJO0FBQUMscUJBQUksRUFBRSxHQUFFLElBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxFQUFFLFdBQVcsSUFBRTtBQUFJLG9CQUFFO0FBQUEs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SUFBRyxFQUFFLEtBQUcsRUFBRSxFQUFFO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFBLHlCQUFTO0FBQUksd0JBQUUsRUFBRSxLQUFHLEVBQUUsSUFBRyxHQUFHLElBQUk7QUFBRTtBQUFBLHlCQUFXO0FBQUksd0JBQUUsRUFBRSxLQUFHLEVBQUUsRUFBRTtBQUFFO0FBQUEseUJBQVc7QUFBSSx3QkFBRSxFQUFFLEtBQUcsRUFBRSxFQUFFO0FBQUU7QUFBQSx5QkFBVztBQUFJLDBCQUFJLEtBQUc7QUFBRyx5QkFBRyxRQUFNLEVBQUUsR0FBRyxJQUFJO0FBQUUsMEJBQUksS0FBRyxHQUFHO0FBQWMsMEJBQUc7QUFBRyw0QkFBRyxHQUFHLFNBQU87QUFBSSw0QkFBRSxFQUFFO0FBQUE7QUFBTyxtQ0FBUSxLQUFHLEdBQUUsS0FBRyxHQUFHLFVBQVMsS0FBRyxHQUFHLFFBQU8sTUFBSztBQUFDLGdDQUFJLEtBQUcsR0FBRztBQUFJLDhCQUFFLEVBQUU7QUFBQSwwQkFBQztBQUFDO0FBQUEseUJBQVc7QUFBSSx3QkFBRSxJQUFHLEdBQUcsSUFBSTtBQUFFO0FBQUEseUJBQVc7QUFBSSwwQkFBSSxLQUFHLEdBQUc7QUFBVyx3QkFBRSxhQUFhLEVBQUUsSUFBRSxFQUFFLElBQUcsRUFBRSxJQUFFLEVBQUUsRUFBRTtBQUFFO0FBQUEseUJBQVc7QUFBQSx5QkFBUztBQUFBLHlCQUFTLEtBQUk7QUFBQywwQkFBSSxLQUFHO0FBQUcsd0JBQUUsaUJBQWlCLEdBQUcsSUFBSSxJQUFFLEVBQUUsR0FBRyxJQUFJLElBQUUsRUFBRSxFQUFFO0FBQUU7QUFBQSxvQkFBSztBQUFBLHlCQUFNO0FBQUksMEJBQUksSUFBRSxHQUFHO0FBQUssMkJBQUcsRUFBRSxhQUFhLENBQUMsS0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFFLEVBQUUsSUFBRyxHQUFHLElBQUk7QUFBRTtBQUFBLHlCQUFXO0FBQUEseUJBQVM7QUFBSSx3QkFBRSxJQUFHLEdBQUcsSUFBSTtBQUFFO0FBQUEs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WTtBQUFFLHFCQUFNLEVBQUMsTUFBSyxHQUFFLGVBQWMsR0FBRSxhQUFZLE1BQUksR0FBRSxnQkFBZSxFQUFFLENBQUMsRUFBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxHQUFHLEdBQUUsS0FBRTtBQUFBLFlBQUM7QUFBQyxjQUFFLDBCQUF3QjtBQUFFLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHFCQUFPLEdBQUcsR0FBRSxJQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUscUJBQW1CO0FBQUcscUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyx1QkFBUSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxvQkFBSSxJQUFFLEVBQUUsRUFBRSxXQUFXLElBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLGlCQUFDLEdBQUcsRUFBRSxXQUFXLElBQUUsQ0FBQyxDQUFDLEtBQUcsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEtBQUcsTUFBSSxLQUFHLEtBQUcsT0FBSyxFQUFFLEdBQUUsR0FBRSxDQUFDLEtBQUcsRUFBRSxLQUFLLEVBQUUsZUFBZSxHQUFFLElBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRTtBQUFBLGNBQUU7QUFBQyxxQkFBTyxFQUFFLEdBQUUsR0FBRSxFQUFFLE1BQU0sS0FBRyxFQUFFLEtBQUssRUFBRSxlQUFlLEdBQUUsRUFBRSxTQUFPLENBQUMsQ0FBQyxHQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBRyxxQkFBTTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxHQUFFLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEdBQUcsQ0FBQyxLQUFHLE1BQUk7QUFBQSxjQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxNQUFJLEtBQUcsSUFBRSxJQUFFLEVBQUUsVUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUUsV0FBVyxJQUFFLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLEVBQUUsV0FBVyxJQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQUUscUJBQU8sTUFBSSxDQUFDLEtBQUcsQ0FBQztBQUFBLFlBQUU7QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRTtBQUFJLG9CQUFHLENBQUMsRUFBRSxDQUFDO0FBQUUseUJBQU07QUFBRyxxQkFBTTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxNQUFJLFdBQVMsSUFBRSxJQUFHLE1BQUksV0FBUyxJQUFFLEVBQUUsU0FBUSxFQUFFLEdBQUUsR0FBRSxTQUFTLEdBQUU7QUFBQyx1QkFBTyxFQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxXQUFTLElBQUUsT0FBSSxNQUFJLFdBQVMsSUFBRTtBQUFJLGtCQUFJLElBQUUsRUFBQyxpQkFBZ0IsR0FBRSxTQUFRLFFBQU8sa0JBQWlCLFFBQU8saUJBQWdCLENBQUMsR0FBRSx5QkFBd0IsQ0FBQyxHQUFFLHdCQUF1QixDQUFDLEdBQUUsaUJBQWdCLENBQUMsR0FBRSxpQkFBZ0IsUUFBTyxZQUFXLE9BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRTtBQUFHLHVCQUFTLEtBQUk7QUFBQyx1QkFBTyxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQVEsS0FBSyxHQUFFLE1BQUksS0FBRyxNQUFJLE1BQUksTUFBSSxLQUFJO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUc7QUFBQyxvQkFBSSxJQUFFLEVBQUUsUUFBUSxjQUFjLEdBQUUsSUFBRSxFQUFFLFFBQVEsWUFBWTtBQUFFLHVCQUFNLEVBQUMsVUFBUyxHQUFFLEtBQUksR0FBRSxLQUFJLElBQUUsRUFBRSxPQUFNO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUc7QUFBQyx1QkFBSyxLQUFHLENBQUMsSUFBRyxHQUFHLEtBQUssRUFBQyxLQUFJLEVBQUUsR0FBRSxPQUFNLEVBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxJQUFHO0FBQUMsa0JBQUUsS0FBSyxFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLElBQUc7QUFBQyxzQkFBSSxNQUFJLElBQUU7QUFBQSxjQUFHO0FBQUMsdUJBQVMsS0FBSTtBQUFDLG9CQUFJLElBQUUsRUFBRSxRQUFRLFNBQVM7QUFBRSx1QkFBTyxNQUFJLE9BQUssSUFBRSxHQUFHLEdBQUUsTUFBSSxRQUFNLElBQUUsR0FBRyxHQUFFLE1BQUksTUFBSSxFQUFFLElBQUcsUUFBSTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxJQUFHO0FBQUMsb0JBQUcsTUFBSTtBQUFHLHlCQUFNO0FBQUcsb0JBQUksSUFBRSxFQUFFLFFBQVEsU0FBUztBQUFFLG9CQUFHLE1BQUksS0FBSTtBQUFDLHNCQUFHLElBQUUsR0FBRyxHQUFFLE1BQUksSUFBRztBQUFDLHdCQUFHLElBQUUsR0FBRyxHQUFFLE1BQUksTUFBSSxNQUFJO0FBQUcsNkJBQU8sRUFBRSxHQUFFO0FBQUEsa0JBQUUsT0FBSztBQUFDLHdCQUFHLE1BQUk7QUFBRyw2QkFBTyxFQUFFLEdBQUU7QUFBRyx3QkFBRyxNQUFJLEtBQUk7QUFBQywwQkFBSSxJQUFFLEVBQUUsUUFBUSxVQUFVLFdBQVU7QUFBQyw0QkFBSSxJQUFFLEVBQUUsUUFBUSxLQUFLO0FBQUUsK0JBQU8sTUFBSSxRQUFNLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLEVBQUUsVUFBVSxDQUFDO0FBQUEsc0JBQUUsQ0FBQztBQUFFLDRCQUFJLElBQUUsR0FBRztBQUFBLG9CQUFFO0FBQUMsd0JBQUcsTUFBSSxNQUFJLEVBQUUsVUFBVSxDQUFDO0FBQUUsMEJBQUcsSUFBRSxHQUFHLEdBQUUsTUFBSSxLQUFJO0FBQUMsNEJBQUcsSUFBRSxHQUFHLEdBQUUsTUFBSTtBQUFHLGlDQUFPLEVBQUUsR0FBRTtBQUFBLHNCQUFFLFdBQVMsTUFBSSxJQUFHO0FBQUMsNEJBQUcsRUFBRSxJQUFFO0FBQUUsaUNBQU07QUFBQSxzQkFBRSxXQUFTLE1BQUk7QUFBRyw0QkFBRSxHQUFHO0FBQUE7QUFBTywrQkFBTTtBQUFHLHdCQUFHLE1BQUksSUFBRztBQUFDLDJCQUFJLElBQUUsR0FBRyxHQUFFLE1BQUksTUFBSSxNQUFJO0FBQUcsNEJBQUUsR0FBRztBQUFFLDRCQUFJLE9BQUssSUFBRSxHQUFHLEdBQUUsTUFBSSxRQUFNLElBQUUsR0FBRyxHQUFFLE1BQUksTUFBSSxFQUFFO0FBQUEsb0JBQUc7QUFBTSw0QkFBSSxPQUFLLElBQUUsR0FBRyxHQUFFLE1BQUksUUFBTSxJQUFFLEdBQUcsSUFBRyxNQUFJLE1BQUksRUFBRSxVQUFVLENBQUMsT0FBSyxJQUFFLEdBQUcsR0FBRSxNQUFJLFFBQU0sSUFBRSxHQUFHLEdBQUUsTUFBSSxNQUFJLEVBQUU7QUFBQSxrQkFBSztBQUFDLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxLQUFJO0FBQUMsb0JBQUksSUFBRSxFQUFFLFFBQVEsU0FBUztBQUFFLG9CQUFHLE1BQUksSUFBRztBQUFDLHNCQUFHLEVBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRSxNQUFJLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEVBQUUsUUFBUSxVQUFVLFdBQVU7QUFBQywwQkFBSSxJQUFFLEVBQUUsUUFBUSxLQUFLO0FBQUUsNkJBQU8sTUFBSSxNQUFJLE1BQUk7QUFBQSxvQkFBRSxDQUFDO0FBQUUsMEJBQUksSUFBRSxHQUFHO0FBQUEsa0JBQUU7QUFBQyxzQkFBRyxNQUFJLElBQUc7QUFBQyx5QkFBSSxJQUFFLEdBQUcsR0FBRSxNQUFJLE1BQUksTUFBSTtBQUFHLDBCQUFFLEdBQUc7QUFBRSwwQkFBSSxPQUFLLElBQUUsR0FBRyxHQUFFLE1BQUksUUFBTSxJQUFFLEdBQUcsR0FBRSxNQUFJLE1BQUksRUFBRTtBQUFBLGtCQUFHLFdBQVMsTUFBSTtBQUFHLHdCQUFFLEdBQUcsR0FBRSxNQUFJLFFBQU0sSUFBRSxHQUFHLEdBQUUsTUFBSSxNQUFJLEVBQUU7QUFBQSwyQkFBVyxNQUFJLEtBQUk7QUFBQyx3QkFBRyxJQUFFLEdBQUcsR0FBRSxNQUFJLEtBQUk7QUFBQywwQkFBSSxJQUFFLEVBQUUsUUFBUSxVQUFVLFdBQVU7QUFBQyw0QkFBSSxJQUFFLEVBQUUsUUFBUSxLQUFLO0FBQUUsK0JBQU8sTUFBSSxNQUFJLEVBQUUsVUFBVSxDQUFDO0FBQUEsc0JBQUMsQ0FBQztBQUFFLDRCQUFJLElBQUUsR0FBRztBQUFBLG9CQUFFO0FBQUMseUJBQUksTUFBSSxNQUFJLEVBQUUsVUFBVSxDQUFDLE9BQUssSUFBRSxHQUFHLEdBQUUsTUFBSSxNQUFJLEVBQUUsSUFBRTtBQUFHLDZCQUFNO0FBQUEsa0JBQUU7QUFBQyx5QkFBTTtBQUFBLGdCQUFFO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxzQkFBSSxXQUFTLElBQUU7QUFBSSxvQkFBSSxJQUFFLElBQUUsR0FBRyxJQUFFLEVBQUUsUUFBUSxTQUFTO0FBQUUsdUJBQU8sTUFBSSxPQUFLLElBQUUsR0FBRyxHQUFFLE1BQUksT0FBSyxJQUFFLEdBQUcsSUFBRyxNQUFJLE1BQUksS0FBRyxNQUFJLE9BQUssRUFBRSxJQUFHLFFBQUk7QUFBQSxjQUFFO0FBQUMsdUJBQVMsSUFBRztBQUFDLG9CQUFJLElBQUUsRUFBRSxRQUFRLFNBQVM7QUFBRSxvQkFBRyxNQUFJLE1BQUksRUFBRSxRQUFRLGNBQWMsTUFBSSxVQUFTO0FBQUMsc0JBQUcsSUFBRSxHQUFHLEdBQUUsTUFBSTtBQUFHLDJCQUFNO0FBQUcsc0JBQUcsSUFBRSxHQUFHLEdBQUUsTUFBSSxNQUFJLE1BQUk7QUFBRyx3QkFBRyxJQUFFLEdBQUcsR0FBRSxNQUFJO0FBQUcsMEJBQUUsR0FBRztBQUFBO0FBQU8sNkJBQU07QUFBRyxzQkFBRyxNQUFJO0FBQUcsMkJBQU07QUFBRyx1QkFBSSxJQUFFLEdBQUcsR0FBRSxNQUFJLE1BQUksTUFBSTtBQUFHLHFCQUFDLE1BQUksTUFBSSxNQUFJLE9BQUssRUFBRSxHQUFFLElBQUUsR0FBRztBQUFFLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQyx1QkFBTTtBQUFBLGNBQUU7QUFBQyx1QkFBUyxJQUFHO0FBQUMscUJBQUksRUFBRSxRQUFRLFFBQVEsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLFFBQVEsU0FBUyxNQUFJLEtBQUc7QUFBQyxzQkFBRyxFQUFFLFFBQVEsU0FBUyxNQUFJLElBQUc7QUFBQyx3QkFBSSxJQUFFLENBQUMsRUFBRSxRQUFRLFNBQVMsQ0FBQyxHQUFFLElBQUUsRUFBRSxRQUFRLEtBQUs7QUFBRTtBQUFFLDZCQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUc7QUFBQyxnQ0FBTztBQUFBLCtCQUFRO0FBQUUsa0NBQU07QUFBQSwrQkFBTztBQUFJLDhCQUFFO0FBQUU7QUFBQSwrQkFBVztBQUFHLDhCQUFFLEtBQUssQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyw4QkFBRSxPQUFPLENBQUMsS0FBRyxFQUFFLEtBQUssQ0FBQztBQUFFO0FBQUEsK0JBQVc7QUFBRyw4QkFBRSxPQUFPLENBQUMsTUFBSSxFQUFFLGdCQUFnQixDQUFDLE1BQUksS0FBRyxFQUFFLFFBQVEsb0JBQW9CLEtBQUUsTUFBSSxNQUFJLEVBQUUsSUFBSSxJQUFFLEVBQUUsSUFBSTtBQUFHO0FBQUE7QUFBTSw0QkFBRSxFQUFFLFFBQVEsS0FBSztBQUFBLHNCQUFDO0FBQUMsdUJBQUc7QUFBQSxrQkFBQztBQUFDLHFCQUFHLEtBQUcsRUFBRSxLQUFHLEdBQUcsS0FBRyxNQUFJLEVBQUUsT0FBRyxJQUFFLEtBQUcsRUFBRSxNQUFJLEdBQUc7QUFBQSxnQkFBQztBQUFDLGtCQUFFLFFBQVEsUUFBUSxNQUFNO0FBQUEsY0FBQztBQUFDLGtCQUFHLEtBQUcsRUFBRSxHQUFFLEVBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLEVBQUUseUJBQXlCLEdBQUUsRUFBRSxJQUFJLEdBQUUsR0FBRTtBQUFDLG9CQUFHO0FBQUcsMkJBQVEsS0FBRyxHQUFFLEtBQUcsSUFBRyxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsd0JBQUksS0FBRyxHQUFHO0FBQUksc0JBQUUsS0FBSyxHQUFHLEdBQUc7QUFBQSxrQkFBQztBQUFDLHVCQUFNLEVBQUMsaUJBQWdCLEVBQUUsaUJBQWdCLHlCQUF3QixFQUFFLHlCQUF3Qix3QkFBdUIsRUFBRSx3QkFBdUIsZUFBYyxHQUFFLFdBQVUsQ0FBQyxDQUFDLEVBQUUsaUJBQWdCLHdCQUF1QixPQUFNO0FBQUEsY0FBQyxPQUFLO0FBQUMsb0JBQUksSUFBRTtBQUFPLG9CQUFHO0FBQUcsMkJBQVEsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsd0JBQUksS0FBRyxFQUFFO0FBQUcsdUJBQUcsVUFBUSxLQUFHLE1BQUksSUFBRSxDQUFDLElBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxRQUFRLEtBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRztBQUFBLGtCQUFDO0FBQUMsdUJBQU0sRUFBQyxpQkFBZ0IsRUFBRSxpQkFBZ0IseUJBQXdCLEVBQUUseUJBQXdCLHdCQUF1QixFQUFFLHdCQUF1QixlQUFjLEdBQUUsV0FBVSxDQUFDLENBQUMsRUFBRSxpQkFBZ0Isd0JBQXVCLEVBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsaUJBQWU7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsYUFBQyxTQUFTLEdBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLElBQUcsQ0FBQyxDQUFDO0FBQUUsb0JBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsR0FBRSxFQUFFLGVBQWUsR0FBRSxJQUFHLEdBQUUsQ0FBQztBQUFFLHNCQUFHO0FBQUUsMkJBQU87QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsRUFBRSxZQUFZLDhCQUE4QjtBQUFBLGNBQUM7QUFBQyxnQkFBRSxnQkFBYztBQUFFLHVCQUFTLEVBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLG9CQUFvQixDQUFDO0FBQUUsb0JBQUcsQ0FBQyxHQUFFO0FBQUMsc0JBQUcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLDhDQUE4QyxHQUFFLEVBQUU7QUFBRSx3QkFBRyxPQUFLLEdBQUcsUUFBTSxPQUFLLEdBQUcsUUFBTSxXQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU0sU0FBUyxJQUFHO0FBQUMsNkJBQU0sQ0FBQyxFQUFFLEdBQUcsUUFBTTtBQUFBLG9CQUFJLENBQUM7QUFBRyw2QkFBTyxHQUFHLEVBQUUsTUFBSyxFQUFFLE1BQUssVUFBUyxJQUFHLEdBQUUsQ0FBQztBQUFBLGtCQUFDLFdBQVMsRUFBRSxZQUFZLENBQUMsR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxjQUFjLENBQUM7QUFBRSwyQkFBTyxHQUFHLEdBQUUsR0FBRSxTQUFRLElBQUcsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQztBQUFBLGdCQUFNO0FBQUMsb0JBQUksS0FBRyxFQUFFO0FBQWEsb0JBQUcsRUFBRSxDQUFDLE1BQUksR0FBRyxXQUFTLElBQUc7QUFBQyxzQkFBRyxHQUFHLEtBQUssU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxHQUFFLEVBQUU7QUFBQSxrQkFBQyxDQUFDO0FBQUUsMkJBQU8sRUFBRSxFQUFFLFlBQVksOEVBQThFO0FBQUUsc0JBQUcsRUFBRSxFQUFFLGFBQWEsQ0FBQyxLQUFHLEVBQUUsd0JBQXNCLE1BQUksRUFBRSxVQUFRLEVBQUUsT0FBTyxRQUFNLE9BQU07QUFBQyx3QkFBRyxFQUFFLG9CQUFvQixDQUFDLEtBQUcsRUFBRSxnQ0FBZ0MsQ0FBQztBQUFFLDZCQUFPLEtBQUcsRUFBRSwwQkFBd0IsRUFBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQU8sd0JBQUksSUFBRSxFQUFFLGNBQWMsY0FBYyxJQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSw4QkFBOEIsQ0FBQyxLQUFHLEVBQUUsNkJBQTZCLENBQUMsS0FBRyxFQUFFLE9BQU8sU0FBTyxNQUFJLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixDQUFDLENBQUMsSUFBRSxRQUFPLElBQUUsS0FBRyxHQUFHLGVBQWUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxHQUFHLHNCQUFzQixDQUFDO0FBQUUsMkJBQU8sR0FBRyxHQUFFLElBQUcsR0FBRSxFQUFFLGNBQWMsbUJBQW1CLElBQUcsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxJQUFFLEdBQUcsY0FBYztBQUFFLHVCQUFPLEVBQUUsMkJBQTJCLENBQUMsS0FBRyxFQUFFLGdCQUFnQixFQUFFLFVBQVMsT0FBTztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsSUFBRyxHQUFFO0FBQUMsb0JBQUcsQ0FBQyxFQUFFLDZCQUE2QixFQUFFLElBQUk7QUFBRSx5QkFBTyxFQUFFLEVBQUUsWUFBWSw4Q0FBOEM7QUFBRSxvQkFBSSxJQUFFLEVBQUUsZ0JBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYSxFQUFFLFlBQVk7QUFBRSxvQkFBRyxDQUFDLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxTQUFTLEVBQUUsTUFBSyxRQUFRLEtBQUcsRUFBRSxTQUFTLEVBQUUsTUFBSyxXQUFXLElBQUUsU0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFFBQVEsR0FBRSxRQUFRLEdBQUUsSUFBRSxNQUFJLFNBQU8sRUFBRSxXQUFTLEdBQUUsS0FBRyxNQUFJLFNBQU8sV0FBUyxhQUFZLElBQUUsRUFBRSxLQUFLLFlBQVksR0FBRyxJQUFFLEdBQUUsS0FBRyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsSUFBRSxJQUFFLEdBQUUsRUFBRSxLQUFLLFNBQU8sQ0FBQztBQUFFLHlCQUFNLEVBQUMsV0FBVSxNQUFHLGNBQWEsR0FBRSxNQUFLLElBQUcsYUFBWSxHQUFFLGlCQUFnQixHQUFFLGVBQWMsSUFBRyxhQUFZLEdBQUU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU0sRUFBQyxXQUFVLE1BQUcsY0FBYSxRQUFPLE1BQUssR0FBRSxhQUFZLEdBQUUsaUJBQWdCLElBQUcsZUFBYyxHQUFFLGFBQVksRUFBRSxHQUFFLENBQUMsRUFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTSxFQUFDLFdBQVUsT0FBRyx1QkFBc0IsRUFBRSx5QkFBeUIsQ0FBQyxFQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUksSUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFFLElBQUUsRUFBRSxTQUFTLEVBQUU7QUFBRSx1QkFBTyxFQUFFLG9CQUFvQixDQUFDLE1BQUksS0FBRyxHQUFFLEtBQUcsSUFBRyxFQUFFLGVBQWUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHdCQUFPLEVBQUU7QUFBQSx1QkFBVztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBUTtBQUFBLHVCQUFRO0FBQUksMkJBQU07QUFBQSx1QkFBUTtBQUFFLDJCQUFPLEVBQUUsZ0RBQWdELENBQUM7QUFBQTtBQUFVLDJCQUFNO0FBQUE7QUFBQSxjQUFHO0FBQUMsZ0JBQUUsMEJBQXdCO0FBQUEsWUFBQyxHQUFHLElBQUUsRUFBRSxXQUFTLEVBQUUsU0FBTyxDQUFDLEVBQUU7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsYUFBQyxTQUFTLEdBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEdBQUUsSUFBRSxFQUFDLFVBQVMsRUFBRSx5QkFBeUIsRUFBRSxhQUFhLEdBQUUsRUFBRSxPQUFPLENBQUMsRUFBQyxHQUFFLEtBQUc7QUFBRTtBQUFFLDZCQUFPO0FBQUMsd0JBQUksSUFBRSxFQUFFLEVBQUU7QUFBRSx3QkFBRyxDQUFDLEVBQUU7QUFBTztBQUFNLDZCQUFRLEtBQUcsR0FBRSxLQUFHLEVBQUUsUUFBTyxNQUFLO0FBQUMsMEJBQUksSUFBRSxFQUFFLEtBQUcsSUFBRyxJQUFFLEVBQUUsS0FBSSxJQUFFLEVBQUUsS0FBRztBQUFHLDBCQUFHLEVBQUUsa0JBQWtCLEdBQUUsR0FBRSxJQUFFLElBQUU7QUFBRSw4QkFBTTtBQUFFLDBCQUFJLEtBQUcsRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFLLEVBQUUsR0FBRyxDQUFDO0FBQUUsMEJBQUcsTUFBSSxHQUFHLFNBQU8sS0FBRyxFQUFFLEdBQUcsS0FBSSxHQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQyw0QkFBRyxFQUFFLFFBQVEsQ0FBQyxLQUFHLEVBQUUsZUFBZSxDQUFDLEtBQUcsRUFBRSxlQUFlLENBQUMsS0FBRyxFQUFFLGVBQWUsQ0FBQyxLQUFHLEtBQUcsRUFBRSxlQUFlLENBQUMsS0FBRyxFQUFFLDBCQUEwQixDQUFDLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxLQUFHLEVBQUUsYUFBYSxDQUFDLEtBQUcsRUFBRSwwQkFBMEIsRUFBRSxLQUFHLEVBQUUsc0JBQXNCLENBQUMsS0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFHLEVBQUUsV0FBUyxLQUFHLEVBQUUsc0JBQXNCLENBQUMsS0FBRyxFQUFFLGlCQUFpQixDQUFDLEtBQUcsRUFBRSxtQkFBbUIsQ0FBQyxHQUFFO0FBQUMsK0JBQUc7QUFBRTtBQUFBLHdCQUFLO0FBQUMsNEJBQUcsRUFBRSxlQUFlLEVBQUUsS0FBRyxLQUFHLEVBQUUsK0JBQStCLENBQUMsR0FBRTtBQUFDLDhCQUFJLEtBQUcsRUFBRSxhQUFhLElBQUUsR0FBRSxLQUFHLEVBQUUsU0FBUyxJQUFFO0FBQUUsNEJBQUUsSUFBRyxFQUFFO0FBQUEsd0JBQUM7QUFBQyw0QkFBSSxJQUFFLEVBQUUsYUFBYSxDQUFDLEtBQUcsRUFBRSxDQUFDLEtBQUcsRUFBRSxDQUFDLEtBQUcsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsR0FBRSxFQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsSUFBRSxJQUFFLEVBQUUsT0FBTyxJQUFFLEVBQUUsU0FBUyxHQUFFLElBQUUsSUFBRSxFQUFFLFNBQVMsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFLDBCQUFFLGNBQWMsQ0FBQyxPQUFLLElBQUUsRUFBRSxXQUFTLFFBQU0sTUFBSSxTQUFPLFNBQU8sRUFBRSxXQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRyxFQUFFLGdCQUFnQixDQUFDLEtBQUcsRUFBRSxrQkFBa0IsQ0FBQyxNQUFJLEVBQUUsSUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEtBQUc7QUFBRTtBQUFBLHNCQUFLO0FBQUMsMEJBQUcsT0FBSyxFQUFFLFNBQU87QUFBRSw4QkFBTTtBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQyx1QkFBTztBQUFFLHlCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsc0JBQUcsTUFBSSxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLHlCQUF5QixHQUFFLENBQUM7QUFBRSxxQkFBQyxDQUFDLEtBQUcsQ0FBQyxFQUFFLGVBQWUsR0FBRSxFQUFFLFFBQVEsS0FBRyxFQUFFLCtCQUErQixHQUFFLENBQUMsT0FBSyxJQUFFLEdBQUcsRUFBQyxVQUFTLEVBQUMsR0FBRSxLQUFHLEVBQUMsUUFBTyxFQUFDLENBQUM7QUFBQSxrQkFBRTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRSxHQUFFLENBQUM7QUFBRSwyQkFBUSxJQUFFLEdBQUUsRUFBRSxLQUFLLFdBQVcsQ0FBQyxNQUFJO0FBQUk7QUFBSSxvQkFBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxnQkFBRSx5QkFBdUI7QUFBRSx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxNQUFNLE9BQU8sRUFBRSxPQUFLLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBSSx5QkFBTTtBQUFHLG9CQUFJLElBQUUsRUFBRSxPQUFPO0FBQUUsdUJBQU8sTUFBSSxJQUFFLEVBQUUsd0JBQXdCLEdBQUUsQ0FBQyxFQUFFLE1BQUksRUFBRSxNQUFJO0FBQUEsY0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxHQUFHLEVBQUUscUJBQW9CLEVBQUUseUJBQXlCO0FBQUUsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxhQUFhLENBQUM7QUFBRSx5QkFBTyxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsWUFBWSxHQUFFLENBQUM7QUFBRSxvQkFBRyxFQUFFLGlCQUFpQixDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsWUFBWSxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxNQUFNLENBQUMsR0FBRSxLQUFHLEVBQUUsTUFBTSxhQUFhLEVBQUUsSUFBSSxDQUFDO0FBQUUsb0JBQUUsTUFBTSxZQUFZLEVBQUUsTUFBSyxFQUFFLEdBQUUsRUFBRSxNQUFNLFlBQVksR0FBRyxNQUFLLEVBQUU7QUFBRSxzQkFBSSxJQUFFLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxNQUFJLEVBQUUsaUJBQWUsRUFBRSxTQUFPLE9BQUssTUFBSSxFQUFFLGlCQUFlLEVBQUUsU0FBTztBQUFBLGtCQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyx3QkFBSSxLQUFHLEVBQUU7QUFBSywyQkFBTyxPQUFLLE1BQUksT0FBSyxPQUFLLE9BQUs7QUFBQSxrQkFBRSxDQUFDO0FBQUUseUJBQU0sQ0FBQyxHQUFFLEVBQUUsRUFBRSxJQUFHLFNBQVMsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRTtBQUFLLDJCQUFPLE9BQUs7QUFBQSxrQkFBRSxDQUFDLENBQUMsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxFQUFFLG9CQUFvQixDQUFDLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEdBQUcsRUFBRSxZQUFZLEdBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sT0FBSyxFQUFFLFFBQU0sRUFBRSxTQUFTLEVBQUUsV0FBVSxFQUFFO0FBQUEsa0JBQUMsQ0FBQztBQUFFLHlCQUFPLEVBQUUsR0FBRSxTQUFTLElBQUc7QUFBQyx3QkFBSSxLQUFHLEdBQUc7QUFBSywyQkFBTyxPQUFLO0FBQUEsa0JBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUcsRUFBRSxZQUFZLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxFQUFFLFlBQVksR0FBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxNQUFJLEVBQUUsa0JBQWdCLE1BQUksRUFBRTtBQUFBLGtCQUFJLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQywyQkFBTyxNQUFJLEVBQUUsTUFBSSxNQUFJLEVBQUU7QUFBQSxrQkFBYSxDQUFDO0FBQUUseUJBQU8sRUFBRSxHQUFFLFNBQVMsR0FBRTtBQUFDLHdCQUFJLEtBQUcsRUFBRTtBQUFLLDJCQUFPLE9BQUs7QUFBQSxrQkFBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTyxFQUFFLGlCQUFpQixDQUFDLElBQUUsRUFBRSxFQUFFLFlBQVksR0FBRSxTQUFTLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEVBQUU7QUFBSyx5QkFBTyxPQUFLO0FBQUEsZ0JBQUUsQ0FBQyxJQUFFLEVBQUUsWUFBWTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLHlCQUFRLElBQUUsQ0FBQyxHQUFFLEdBQUUsS0FBRyxHQUFFLElBQUUsR0FBRSxLQUFHLEVBQUUsUUFBTyxNQUFLO0FBQUMsc0JBQUksS0FBRyxFQUFFO0FBQUksb0JBQUUsRUFBRSxLQUFHLElBQUUsS0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsTUFBSSxNQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsU0FBUSxFQUFFLEtBQUssRUFBRTtBQUFBLGdCQUFFO0FBQUMsdUJBQU8sS0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUcsTUFBSSxXQUFTLElBQUUsT0FBSSxFQUFFLFNBQU87QUFBRSx5QkFBTztBQUFFLG9CQUFJLElBQUUsRUFBRSxVQUFVLEdBQUUsQ0FBQztBQUFFLG9CQUFHLE1BQUk7QUFBRyx5QkFBTztBQUFFLG9CQUFJLEtBQUcsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLEtBQUcsRUFBRSxLQUFLLENBQUMsR0FBRSxJQUFFLEtBQUcsR0FBRyxTQUFPLElBQUcsSUFBRSxFQUFFLE1BQU0sSUFBRSxHQUFFLElBQUUsRUFBRSxTQUFPLElBQUUsTUFBTSxHQUFFLElBQUUsRUFBRSxRQUFRLENBQUMsR0FBRyxTQUFPLEVBQUUsRUFBRSxJQUFFLFFBQU8sR0FBRSxFQUFFLFNBQU8sRUFBRSxDQUFDLElBQUUsTUFBTSxDQUFDO0FBQUUsdUJBQU8sSUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsTUFBTSx5QkFBeUIsRUFBRSxRQUFPLENBQUMsR0FBRSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixpQkFBaUIsQ0FBQyxHQUFFLEVBQUUsR0FBRyxLQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEtBQUcsRUFBRTtBQUFLLHVCQUFPLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUk7QUFBQSxjQUFHO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFHLEVBQUU7QUFBSyx1QkFBTyxNQUFJLE1BQUksTUFBSSxNQUFJLE1BQUksTUFBSSxNQUFJO0FBQUEsY0FBRztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsd0JBQU8sRUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQVM7QUFBQSx1QkFBUztBQUFBLHVCQUFTO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsQ0FBQztBQUFBO0FBQVUsMkJBQU8sRUFBRSxPQUFPO0FBQUE7QUFBQSxjQUFFO0FBQUEsWUFBQyxHQUFHLElBQUUsRUFBRSx3QkFBc0IsRUFBRSxzQkFBb0IsQ0FBQyxFQUFFO0FBQUEsVUFBQyxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxnQkFBSTtBQUFFLGFBQUMsU0FBUyxHQUFFO0FBQUMsa0JBQUk7QUFBRSxlQUFDLFNBQVMsR0FBRTtBQUFDLGtCQUFFLEVBQUUsT0FBSyxLQUFHLFFBQU8sRUFBRSxFQUFFLFdBQVMsS0FBRyxZQUFXLEVBQUUsRUFBRSxhQUFXLEtBQUc7QUFBQSxjQUFZLEdBQUcsTUFBSSxJQUFFLENBQUMsRUFBRTtBQUFFLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLGVBQWUsR0FBRSxLQUFHLEVBQUUsMEJBQTBCLEdBQUUsQ0FBQztBQUFFLG9CQUFHLENBQUMsQ0FBQyxJQUFHO0FBQUMsc0JBQUksS0FBRyxDQUFDLENBQUMsTUFBSSxHQUFHLFNBQU87QUFBaUIsc0JBQUcsRUFBRSxPQUFLLEVBQUUsV0FBVyxHQUFFLEdBQUUsRUFBRSxLQUFHLEVBQUUsWUFBWSxHQUFFLENBQUMsS0FBSTtBQUFDLHdCQUFJLEtBQUcsQ0FBQyxDQUFDLE1BQUksR0FBRyxTQUFPLFdBQVUsSUFBRSxFQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsRUFBRTtBQUFFLHdCQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsd0JBQUUsNkJBQTZCO0FBQUUsMEJBQUksS0FBRyxFQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsRUFBRTtBQUFFLDZCQUFPLEVBQUUsNkJBQTZCLEdBQUUsS0FBRyxHQUFHLHlCQUF5QixHQUFFLFNBQVMsSUFBRztBQUFDLCtCQUFPLEdBQUcsU0FBTyxJQUFFLEVBQUUsR0FBRyxZQUFXLEdBQUcsbUJBQWtCLEdBQUUsR0FBRSxFQUFFLElBQUUsRUFBRSxHQUFHLFFBQU8sR0FBRSxHQUFFLEVBQUU7QUFBQSxzQkFBQyxDQUFDLElBQUUsRUFBRSxlQUFlLENBQUMsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLElBQUU7QUFBQSxvQkFBTTtBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsd0JBQXNCO0FBQUUsa0JBQUk7QUFBRSxlQUFDLFNBQVMsR0FBRTtBQUFDLGtCQUFFLEVBQUUsWUFBVSxLQUFHLGFBQVksRUFBRSxFQUFFLE9BQUssS0FBRztBQUFBLGNBQU0sR0FBRyxNQUFJLElBQUUsQ0FBQyxFQUFFO0FBQUUsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsWUFBVyxLQUFHLEVBQUU7QUFBYyx3QkFBTyxHQUFHO0FBQUEsdUJBQVcsR0FBRTtBQUFDLHdCQUFHLEtBQUcsQ0FBQyxHQUFHLElBQUcsR0FBRyxNQUFLLENBQUM7QUFBRTtBQUFPLHdCQUFJLEtBQUcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxxQ0FBcUMsR0FBRyxNQUFLLElBQUcsRUFBRTtBQUFFLDJCQUFPLEdBQUcsV0FBUyxJQUFFLFNBQU8sRUFBQyxNQUFLLEdBQUUsWUFBVyxJQUFHLG1CQUFrQixHQUFFO0FBQUEsa0JBQUM7QUFBQSx1QkFBTSxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHO0FBQU8sd0JBQUcsS0FBRyxDQUFDLEVBQUUsSUFBRyxHQUFFLEVBQUUsYUFBYSxDQUFDLElBQUUsRUFBRSxTQUFPLENBQUM7QUFBRTtBQUFPLHdCQUFJLEtBQUcsRUFBRSw2QkFBNkIsR0FBRSxJQUFHLENBQUM7QUFBRSx3QkFBRyxHQUFHLFdBQVM7QUFBRSw2QkFBTSxFQUFDLE1BQUssR0FBRSxZQUFXLElBQUcsbUJBQWtCLEVBQUUsTUFBTSxFQUFFLEVBQUM7QUFBRSx3QkFBSSxLQUFHLEVBQUUsb0JBQW9CLENBQUM7QUFBRSwyQkFBTyxNQUFJLEVBQUMsTUFBSyxHQUFFLFFBQU8sR0FBRTtBQUFBLGtCQUFDO0FBQUEsdUJBQU07QUFBRSwyQkFBTSxFQUFDLE1BQUssR0FBRSxZQUFXLENBQUMsR0FBRyxTQUFTLEdBQUUsbUJBQWtCLEdBQUcsVUFBUztBQUFBO0FBQVUsMkJBQU8sRUFBRSxNQUFNLFlBQVksRUFBRTtBQUFBO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxDQUFDLEVBQUUsc0JBQXNCLENBQUM7QUFBRSx5QkFBTTtBQUFHLG9CQUFJLEtBQUcsRUFBRSxZQUFZLENBQUM7QUFBRSx3QkFBTyxFQUFFO0FBQUEsdUJBQVc7QUFBRywyQkFBTyxFQUFFLFNBQVMsSUFBRyxDQUFDO0FBQUEsdUJBQU8sSUFBRztBQUFDLHdCQUFJLElBQUUsRUFBRSxtQkFBbUIsQ0FBQztBQUFFLDJCQUFNLENBQUMsQ0FBQyxLQUFHLEVBQUUsU0FBUyxJQUFHLENBQUM7QUFBQSxrQkFBQztBQUFBLHVCQUFNO0FBQUcsMkJBQU8sRUFBRSxHQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUE7QUFBVSwyQkFBTTtBQUFBO0FBQUEsY0FBRztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLFdBQVcsU0FBTyxHQUFFO0FBQUMsc0JBQUksS0FBRyxFQUFFLEVBQUUsVUFBVSxHQUFFLElBQUUsRUFBRSwyQkFBMkIsRUFBRSxJQUFFLEdBQUcsS0FBSyxPQUFLLFFBQU8sS0FBRyxFQUFFLGVBQWU7QUFBRSx5QkFBTyxNQUFJLFNBQU8sU0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEdBQUUsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxhQUFhLEdBQUcscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEdBQUUsU0FBUyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHLFVBQVEsR0FBRywwQkFBMEIsR0FBRyxRQUFPLEVBQUUsR0FBRSxJQUFFLE1BQUksR0FBRyxrQkFBa0I7QUFBRSwwQkFBRyxLQUFHLEVBQUU7QUFBTywrQkFBTyxHQUFHLHlCQUF5QixHQUFFLFNBQVMsSUFBRztBQUFDLGlDQUFPLEVBQUUsR0FBRSxFQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRTtBQUFBLHdCQUFDLENBQUM7QUFBQSxvQkFBQyxDQUFDO0FBQUEsa0JBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyx5QkFBUSxLQUFHLEVBQUUsYUFBYSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUc7QUFBQyxzQkFBSSxLQUFHLEVBQUUsbUJBQW1CLElBQUcsR0FBRSxHQUFFLElBQUU7QUFBRSxzQkFBRztBQUFHLDJCQUFPLEVBQUUsbUJBQW1CLEdBQUUsRUFBRTtBQUFFLHNCQUFFLEVBQUU7QUFBQSxnQkFBTTtBQUFDLHVCQUFPLEVBQUUsTUFBTSxLQUFLLGdDQUFnQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQU0sQ0FBQyxNQUFJLEdBQUcsdUJBQXFCLEdBQUcsV0FBVyxTQUFPLElBQUUsU0FBTyxFQUFDLFlBQVcsR0FBRyxXQUFXLE1BQUssZUFBYyxHQUFHLGVBQWMsZUFBYyxHQUFHLGNBQWE7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsZ0NBQThCO0FBQUUsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsR0FBRyxHQUFFLENBQUM7QUFBRSxvQkFBRyxDQUFDLENBQUMsSUFBRztBQUFDLHNCQUFJLElBQUUsR0FBRyxNQUFLLEtBQUcsR0FBRyxlQUFjLEtBQUcsRUFBRSxHQUFFLEVBQUUsV0FBVyxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUseUJBQUssS0FBRyxFQUFFLE1BQU0sZUFBZSxJQUFHLEVBQUU7QUFBRSxzQkFBSSxLQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUUseUJBQU0sRUFBQyxNQUFLLEdBQUUsZUFBYyxJQUFHLGVBQWMsSUFBRyxlQUFjLEdBQUU7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTyxNQUFJLEVBQUUsU0FBTztBQUFHLHlCQUFNLEVBQUMsTUFBSyxFQUFFLEVBQUUsUUFBTyxHQUFFLENBQUMsR0FBRSxlQUFjLEVBQUM7QUFBRSxvQkFBSSxJQUFFLEVBQUUsbUJBQW1CLENBQUM7QUFBRSx1QkFBTyxLQUFHLEVBQUMsTUFBSyxHQUFFLGVBQWMsRUFBRSxHQUFFLENBQUMsRUFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFO0FBQU8sb0JBQUcsRUFBRSxzQkFBc0IsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxJQUFHLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLHNCQUFHLENBQUM7QUFBRztBQUFPLHNCQUFJLEtBQUcsR0FBRyxNQUFLLEtBQUcsR0FBRyxlQUFjLEtBQUcsR0FBRyxlQUFjLElBQUUsR0FBRyxlQUFjLEtBQUcsQ0FBQyxDQUFDLEdBQUcsaUJBQWUsR0FBRyxjQUFjLFFBQU0sR0FBRztBQUFJLHlCQUFNLEVBQUMscUJBQW9CLElBQUcsWUFBVyxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUMsR0FBRSxlQUFjLEdBQUUsZUFBYyxJQUFHLGVBQWMsR0FBRTtBQUFBLGdCQUFDLE9BQUs7QUFBQyxzQkFBRyxFQUFFLGdDQUFnQyxDQUFDLEtBQUcsRUFBRSwyQkFBMkIsRUFBRTtBQUFFLDJCQUFPLEVBQUUsd0JBQXdCLEdBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQyxJQUFFO0FBQU8sc0JBQUcsRUFBRSxlQUFlLENBQUMsS0FBRyxHQUFHLE9BQU8sU0FBTyxLQUFJO0FBQUMsd0JBQUksS0FBRyxJQUFHLEtBQUcsR0FBRztBQUFPLHNCQUFFLE1BQU0sT0FBTyxHQUFHLFNBQU8sR0FBRztBQUFFLHdCQUFJLEtBQUcsRUFBRSx3QkFBd0IsR0FBRSxHQUFFLENBQUMsSUFBRSxJQUFFO0FBQUUsMkJBQU8sR0FBRyxJQUFHLElBQUcsQ0FBQztBQUFBLGtCQUFDLFdBQVMsRUFBRSxlQUFlLEVBQUUsS0FBRyxFQUFFLDJCQUEyQixHQUFHLE9BQU8sTUFBTSxHQUFFO0FBQUMsd0JBQUksS0FBRyxJQUFHLEtBQUcsR0FBRyxPQUFPO0FBQU8sd0JBQUcsRUFBRSxlQUFlLENBQUMsS0FBRyxDQUFDLEVBQUUsd0JBQXdCLEdBQUUsR0FBRSxDQUFDO0FBQUU7QUFBTyx3QkFBSSxLQUFHLEdBQUcsT0FBTyxjQUFjLFFBQVEsRUFBRSxHQUFFLEtBQUcsRUFBRSxJQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsMkJBQU8sR0FBRyxJQUFHLElBQUcsQ0FBQztBQUFBLGtCQUFDLFdBQVMsRUFBRSx3QkFBd0IsRUFBRSxHQUFFO0FBQUMsd0JBQUksS0FBRyxHQUFHLFdBQVcsS0FBSSxLQUFHLEVBQUUsV0FBVyxFQUFFLE1BQUssR0FBRyxXQUFXLEtBQUksS0FBRTtBQUFFLDJCQUFNLEVBQUMscUJBQW9CLE9BQUcsWUFBVyxFQUFDLE1BQUssR0FBRSxNQUFLLEdBQUUsR0FBRSxlQUFjLEVBQUUsZUFBZSxJQUFHLEtBQUcsRUFBRSxHQUFFLGVBQWMsR0FBRSxlQUFjLEVBQUM7QUFBQSxrQkFBQyxPQUFLO0FBQUMsd0JBQUksS0FBRyxFQUFFLDZCQUE2QixHQUFFLENBQUM7QUFBRSx3QkFBRyxJQUFHO0FBQUMsMEJBQUksS0FBRyxHQUFHLFFBQU8sS0FBRyxHQUFHLGdCQUFlLElBQUUsRUFBQyxNQUFLLEdBQUUsUUFBTyxHQUFFLEdBQUUsSUFBRSxFQUFFLHlCQUF5QixHQUFHLFNBQVMsQ0FBQyxHQUFFLEVBQUUsR0FBRztBQUFFLDZCQUFNLEVBQUMscUJBQW9CLE1BQUcsWUFBVyxHQUFFLGVBQWMsR0FBRSxlQUFjLElBQUcsZUFBYyxLQUFHLEVBQUM7QUFBQSxvQkFBQztBQUFDO0FBQUEsa0JBQU07QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUUsS0FBRyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLHVCQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxJQUFFLEVBQUUsRUFBRSxNQUFNLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLElBQUUsRUFBRSxFQUFFLElBQUksSUFBRSxJQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUUsb0JBQUcsQ0FBQyxDQUFDLEdBQUU7QUFBQyxzQkFBSSxLQUFHLEVBQUUsZ0JBQWUsS0FBRyxFQUFFLGVBQWMsS0FBRyxFQUFFLGVBQWMsS0FBRyxFQUFFLGVBQWMsSUFBRSxHQUFHLG1CQUFtQixHQUFFLEtBQUcsRUFBRTtBQUFPLHNCQUFHLE9BQUssUUFBTztBQUFDLHdCQUFJLEtBQUcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQztBQUFFLHdCQUFHLE9BQUssUUFBTztBQUFDLDBCQUFJLEtBQUcsRUFBQyxNQUFLLEdBQUUsV0FBVSxJQUFHLE1BQUssR0FBRSxRQUFPLEdBQUcsRUFBRSxFQUFDO0FBQUUsNkJBQU0sRUFBQyxxQkFBb0IsT0FBRyxZQUFXLElBQUcsZUFBYyxJQUFHLGVBQWMsSUFBRyxlQUFjLEdBQUU7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxJQUFHO0FBQUMsb0JBQUcsRUFBRSxFQUFFLFNBQU8sTUFBSSxFQUFFLFNBQU8sS0FBSTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFPLDBCQUFPLEVBQUU7QUFBQSx5QkFBVztBQUFBLHlCQUFTO0FBQUEseUJBQVM7QUFBQSx5QkFBUztBQUFJLDBCQUFJLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLDBCQUFHLENBQUM7QUFBRztBQUFPLDBCQUFJLEtBQUcsR0FBRyxlQUFjLEtBQUcsR0FBRyxlQUFjLEtBQUcsR0FBRyxlQUFjLElBQUUsRUFBRSxvQkFBb0IsQ0FBQyxJQUFFLEdBQUcseUNBQXlDLENBQUMsSUFBRSxHQUFHLGtCQUFrQixDQUFDO0FBQUUsNkJBQU8sS0FBRyxFQUFDLGdCQUFlLEdBQUUsZUFBYyxJQUFHLGVBQWMsSUFBRyxlQUFjLEdBQUU7QUFBQSx5QkFBTyxLQUFJO0FBQUMsMEJBQUksS0FBRyxFQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsa0JBQWtCLEVBQUUsR0FBRSxLQUFHLEVBQUUsU0FBTyxLQUFHLElBQUUsRUFBRSxDQUFDLElBQUUsR0FBRSxLQUFHLEVBQUUsRUFBRTtBQUFFLDZCQUFPLE1BQUksRUFBQyxnQkFBZSxJQUFHLGVBQWMsSUFBRyxlQUFjLElBQUcsZUFBYyxFQUFFLHVCQUF1QixDQUFDLEVBQUM7QUFBQSxvQkFBQztBQUFBO0FBQVM7QUFBQTtBQUFBLGdCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRTtBQUFDLHVCQUFPLEVBQUUsU0FBTyxZQUFVLEVBQUUsYUFBYSxFQUFFLGNBQWEsU0FBUyxHQUFFO0FBQUMseUJBQU8sRUFBRSxtQkFBbUIsQ0FBQyxJQUFFLEVBQUUsT0FBTyxTQUFPO0FBQUEsZ0JBQU0sQ0FBQyxLQUFHO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMseUJBQVEsSUFBRSxHQUFFLEtBQUcsR0FBRSxJQUFFLEVBQUUsWUFBWSxHQUFFLEtBQUcsRUFBRSxRQUFPLE1BQUs7QUFBQyxzQkFBSSxLQUFHLEVBQUU7QUFBSSxzQkFBRyxPQUFLO0FBQUU7QUFBTSxxQkFBRyxTQUFPLE1BQUk7QUFBQSxnQkFBRztBQUFDLHVCQUFPO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLFlBQVksR0FBRSxLQUFHLEVBQUUsV0FBVyxHQUFFLFNBQVMsR0FBRTtBQUFDLHlCQUFPLEVBQUUsU0FBTztBQUFBLGdCQUFFLENBQUM7QUFBRSx1QkFBTSxDQUFDLEtBQUcsRUFBRSxTQUFPLEtBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFPLE1BQUksTUFBSztBQUFBLGNBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyx1QkFBTyxFQUFFLE1BQU0sT0FBTyxLQUFHLEVBQUUsU0FBUyxHQUFFLGlEQUFpRCxHQUFFLEVBQUUsdUJBQXVCLENBQUMsSUFBRSxFQUFFLHdCQUF3QixHQUFFLEdBQUUsRUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFLElBQUU7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxnQ0FBZ0MsRUFBRSxRQUFRLElBQUUsSUFBRSxFQUFFLFNBQVMsY0FBYyxTQUFPO0FBQUUsdUJBQU8sTUFBSSxLQUFHLEVBQUUsTUFBTSxlQUFlLEdBQUUsRUFBRSxHQUFFLEVBQUMscUJBQW9CLE9BQUcsWUFBVyxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUMsR0FBRSxlQUFjLEdBQUcsR0FBRSxDQUFDLEdBQUUsZUFBYyxHQUFFLGVBQWMsR0FBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxhQUFhLEdBQUUsS0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFLLEVBQUUsT0FBTyxHQUFFLEtBQUU7QUFBRSx1QkFBTyxFQUFFLGVBQWUsR0FBRSxLQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsVUFBUyxLQUFHLEVBQUUsU0FBUyxHQUFFLElBQUUsRUFBRSxPQUFPO0FBQUUsb0JBQUcsRUFBRSxTQUFPLEtBQUk7QUFBQyxzQkFBSSxLQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWE7QUFBRSxxQkFBRyxRQUFRLGFBQWEsTUFBSSxNQUFJLElBQUUsRUFBRSxXQUFXLEVBQUUsTUFBSyxHQUFFLEtBQUU7QUFBQSxnQkFBRTtBQUFDLHVCQUFPLEVBQUUsZUFBZSxJQUFHLElBQUUsRUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRTtBQUFDLHlCQUFRLEtBQUcsU0FBUyxJQUFHO0FBQUMsb0JBQUUsTUFBTSxPQUFPLEVBQUUsbUJBQW1CLEdBQUcsUUFBTyxFQUFFLEdBQUUsaUJBQWdCLFdBQVU7QUFBQywyQkFBTSxVQUFVLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxJQUFJLENBQUM7QUFBQSxrQkFBQyxDQUFDO0FBQUUsc0JBQUksSUFBRSxFQUFFLElBQUcsR0FBRSxHQUFFLEVBQUU7QUFBRSxzQkFBRztBQUFFLDJCQUFNLEVBQUMsT0FBTSxFQUFDO0FBQUEsZ0JBQUMsR0FBRSxLQUFHLEdBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxNQUFJLEtBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFHLEtBQUcsR0FBRyxRQUFPO0FBQUMsc0JBQUksS0FBRyxHQUFHLEVBQUU7QUFBRSxzQkFBRyxPQUFPLE1BQUk7QUFBUywyQkFBTyxHQUFHO0FBQUEsZ0JBQUs7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxZQUFZLENBQUMsR0FBRSxJQUFFLEdBQUcsUUFBUSxDQUFDO0FBQUUsdUJBQU8sRUFBRSxNQUFNLE9BQU8sS0FBRyxLQUFHLEdBQUcsU0FBTyxJQUFFLENBQUMsR0FBRSxHQUFHLElBQUU7QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxTQUFPLElBQUUsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLElBQUUsRUFBRTtBQUFBLGNBQU07QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLFNBQU8sSUFBRSxFQUFFLE9BQUssRUFBRSxTQUFPLElBQUUsRUFBRSxTQUFPLEVBQUU7QUFBQSxjQUFJO0FBQUMsa0JBQUksSUFBRTtBQUFTLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUc7QUFBQyxvQkFBSSxJQUFHLEtBQUcsRUFBRSxxQkFBb0IsS0FBRyxFQUFFLGVBQWMsSUFBRSxFQUFFLGVBQWMsS0FBRyxFQUFFLFlBQVcsS0FBRyxFQUFFLGVBQWMsS0FBRyxFQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsU0FBTyxJQUFFLEdBQUcsU0FBTyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFHLFFBQU0sS0FBRyxFQUFFLGlCQUFlLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRyxTQUFRLEtBQUcsS0FBRyxFQUFFLHFCQUFxQixHQUFFLElBQUcsS0FBRyxLQUFHLFFBQU8sTUFBTSxJQUFFLEVBQUUsWUFBVyxLQUFHLEVBQUUsSUFBSSxHQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEVBQUU7QUFBQSxnQkFBQyxDQUFDO0FBQUUsdUJBQUssS0FBRyxFQUFFLE1BQU0sZUFBZSxJQUFHLEVBQUU7QUFBRSx5QkFBUSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxNQUFLO0FBQUMsc0JBQUksS0FBRyxHQUFHO0FBQUksc0JBQUcsRUFBRSxRQUFNLE1BQUksS0FBRyxJQUFHLEdBQUcsU0FBTztBQUFHLDZCQUFRLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsR0FBRyxRQUFPLE1BQUs7QUFBQywwQkFBSSxLQUFHLEdBQUc7QUFBSSwwQkFBRyxHQUFHLGNBQVksR0FBRyxXQUFXLFVBQVEsSUFBRztBQUFDLDZCQUFHLEtBQUc7QUFBRztBQUFBLHNCQUFLO0FBQUM7QUFBQSxvQkFBSTtBQUFDLHdCQUFJLEdBQUc7QUFBQSxnQkFBTTtBQUFDLGtCQUFFLE1BQU0sT0FBTyxPQUFLLEVBQUU7QUFBRSxvQkFBSSxLQUFHLEVBQUMsT0FBTSxFQUFFLGlCQUFpQixJQUFHLEVBQUUsUUFBUSxHQUFFLGdCQUFlLEdBQUUsbUJBQWtCLElBQUcsZUFBYyxJQUFHLGVBQWMsR0FBRSxHQUFFLEtBQUcsR0FBRyxNQUFNO0FBQUksb0JBQUcsR0FBRyxZQUFXO0FBQUMsc0JBQUksS0FBRyxFQUFFLFVBQVUsR0FBRyxZQUFXLFNBQVMsSUFBRztBQUFDLDJCQUFNLENBQUMsQ0FBQyxHQUFHO0FBQUEsa0JBQU0sQ0FBQztBQUFFLHVCQUFHLE1BQUksS0FBRyxHQUFHLFdBQVcsU0FBTyxJQUFFLEdBQUcsZ0JBQWMsR0FBRyxXQUFXLFNBQU8sR0FBRyxnQkFBYyxLQUFLLElBQUksR0FBRyxlQUFjLEdBQUcsV0FBVyxTQUFPLENBQUM7QUFBQSxnQkFBQztBQUFDLHVCQUFPO0FBQUEsY0FBRTtBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRztBQUFDLG9CQUFJLElBQUUsRUFBRSxlQUFjLEtBQUcsRUFBRSxlQUFjLEtBQUcsRUFBRSxZQUFXLEtBQUcsRUFBRSxlQUFjLEtBQUcsR0FBRyxvREFBb0QsQ0FBQztBQUFFLG9CQUFHLENBQUMsQ0FBQyxJQUFHO0FBQUMsc0JBQUksSUFBRSxDQUFDLEVBQUUsR0FBRSxJQUFHLElBQUcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUUseUJBQU0sRUFBQyxPQUFNLEdBQUUsZ0JBQWUsSUFBRyxtQkFBa0IsR0FBRSxlQUFjLElBQUcsZUFBYyxFQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxjQUFjLEVBQUMsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLElBQUksU0FBUyxJQUFHO0FBQUMseUJBQU8sRUFBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEVBQUU7QUFBQSxnQkFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLHdCQUF3QixDQUFDLEdBQUUsSUFBRSxFQUFFLGFBQWEsQ0FBQyxHQUFFLEtBQUcsR0FBRyxHQUFHLENBQUMsR0FBRSxJQUFHLElBQUUsR0FBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFFLEtBQUU7QUFBRSx1QkFBTSxFQUFDLFlBQVcsT0FBRyxvQkFBbUIsSUFBRyxvQkFBbUIsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsR0FBRSx1QkFBc0IsR0FBRSxZQUFXLElBQUcsZUFBYyxJQUFHLE1BQUssRUFBQztBQUFBLGNBQUM7QUFBQyxrQkFBSSxJQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFFLEVBQUUsVUFBVSxDQUFDO0FBQUUsdUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRztBQUFDLG9CQUFJLE1BQUksSUFBRSxJQUFFLEdBQUcsR0FBRSxJQUFHLEdBQUUsRUFBRTtBQUFFLHVCQUFPLEVBQUUsSUFBSSxJQUFHLFNBQVMsSUFBRztBQUFDLHNCQUFJLEtBQUcsR0FBRyxZQUFXLElBQUUsR0FBRyxZQUFXLEtBQUcsR0FBRyxRQUFPLEtBQUcsR0FBRyxRQUFPLEtBQUcsR0FBRyxHQUFHLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxJQUFHLElBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsR0FBRSxLQUFHLEVBQUUsd0JBQXdCLEVBQUUsR0FBRSxLQUFHLEVBQUUsYUFBYTtBQUFFLHlCQUFNLEVBQUMsWUFBVyxJQUFHLG9CQUFtQixJQUFHLG9CQUFtQixJQUFHLHVCQUFzQixHQUFFLFlBQVcsR0FBRSxlQUFjLElBQUcsTUFBSyxHQUFFO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxrQkFBa0IsU0FBUyxJQUFHO0FBQUMscUJBQUcsaUJBQWlCLEdBQUcsR0FBRSxHQUFHLFdBQVcsR0FBRztBQUFFLHNCQUFJLElBQUUsRUFBRSw0QkFBNEIsQ0FBQztBQUFFLHNCQUFFLEVBQUUsbUJBQW1CLEdBQUUsR0FBRSxRQUFPLEVBQUUsSUFBRSxFQUFFLFVBQVUsRUFBRSx5QkFBeUIsQ0FBQyxHQUFFLEdBQUUsUUFBTyxFQUFFO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxLQUFHLEVBQUUsVUFBUSxHQUFHLGdCQUFlLEtBQUcsRUFBRSxjQUFjLEVBQUMsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsTUFBSSxLQUFHLEVBQUUsWUFBWSxJQUFJLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxnQkFBYyxDQUFDLEVBQUUsNkJBQTZCLEVBQUUsZUFBYyxHQUFFLENBQUMsQ0FBQyxJQUFFLENBQUM7QUFBRSx1QkFBTyxFQUFFLHNCQUFzQixDQUFDLEVBQUUsSUFBSSxTQUFTLElBQUc7QUFBQyxzQkFBSSxJQUFFLEVBQUUsUUFBUSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsR0FBRSxJQUFHLElBQUUsR0FBRSxFQUFFLElBQUksSUFBRyxTQUFTLElBQUc7QUFBQywyQkFBTyxFQUFFLDZCQUE2QixJQUFHLEdBQUUsQ0FBQztBQUFBLGtCQUFDLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsa0JBQWtCLFNBQVMsSUFBRztBQUFDLHVCQUFHLFVBQVUsTUFBSyxHQUFFLElBQUcsRUFBRTtBQUFBLGtCQUFDLENBQUM7QUFBRSx5QkFBTSxFQUFDLFlBQVcsT0FBRyxZQUFXLElBQUcsUUFBTyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFFLFFBQU8sR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRSxFQUFDO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxJQUFFLEVBQUUsY0FBYyxFQUFDLGdCQUFlLEtBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxrQkFBa0IsU0FBUyxJQUFHO0FBQUMsc0JBQUcsRUFBRSxrQkFBZ0IsRUFBRSxlQUFlLFFBQU87QUFBQyx3QkFBSSxJQUFFLEVBQUUsUUFBUSxnQkFBZ0IsRUFBRSxlQUFlLElBQUksU0FBUyxJQUFHO0FBQUMsNkJBQU8sRUFBRSwyQkFBMkIsSUFBRyxHQUFFLENBQUM7QUFBQSxvQkFBQyxDQUFDLENBQUM7QUFBRSxzQkFBRSxVQUFVLE9BQU0sR0FBRSxJQUFHLEVBQUU7QUFBQSxrQkFBQztBQUFBLGdCQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsc0JBQXNCLENBQUMsR0FBRSxLQUFHLEVBQUUsMEJBQTBCLENBQUMsSUFBRSxHQUFHLFdBQVMsSUFBRSxTQUFTLElBQUc7QUFBQyx5QkFBTTtBQUFBLGdCQUFFLElBQUUsU0FBUyxJQUFHO0FBQUMseUJBQU0sQ0FBQyxFQUFFLEdBQUcsVUFBUSxHQUFHLEdBQUcsU0FBTyxHQUFHLGFBQVc7QUFBQSxnQkFBTSxJQUFFLFNBQVMsSUFBRztBQUFDLHlCQUFNO0FBQUEsZ0JBQUU7QUFBRSx1QkFBTyxHQUFHLElBQUksU0FBUyxJQUFHO0FBQUMseUJBQU0sRUFBQyxZQUFXLEdBQUcsRUFBRSxHQUFFLFlBQVcsR0FBRyxJQUFJLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxDQUFDO0FBQUEsa0JBQUMsQ0FBQyxHQUFFLFFBQU8sR0FBRyxHQUFHLENBQUMsR0FBRSxJQUFHLElBQUUsR0FBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFFLEtBQUUsR0FBRSxRQUFPLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUM7QUFBQSxnQkFBQyxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLGtCQUFrQixTQUFTLElBQUc7QUFBQyxzQkFBSSxJQUFFLEVBQUUsNkJBQTZCLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUUsVUFBVSxHQUFFLEdBQUUsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsR0FBRSxLQUFHLENBQUMsRUFBRSxFQUFFLGFBQVc7QUFBTyx1QkFBTSxFQUFDLE1BQUssRUFBRSxNQUFLLGVBQWMsRUFBRSx3QkFBd0IsQ0FBQyxHQUFFLGNBQWEsSUFBRyxZQUFXLElBQUcsUUFBTyxHQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFO0FBQUMsb0JBQUksS0FBRyxFQUFFLGtCQUFrQixTQUFTLElBQUc7QUFBQyxzQkFBSSxLQUFHLEVBQUUsMkJBQTJCLEdBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUUsVUFBVSxHQUFFLElBQUcsSUFBRyxFQUFFO0FBQUEsZ0JBQUMsQ0FBQztBQUFFLHVCQUFNLEVBQUMsTUFBSyxFQUFFLE9BQU8sTUFBSyxlQUFjLEVBQUUsT0FBTyx3QkFBd0IsQ0FBQyxHQUFFLGNBQWEsSUFBRyxZQUFXLE9BQUcsUUFBTyxNQUFFO0FBQUEsY0FBQztBQUFBLFlBQUMsR0FBRyxJQUFFLEVBQUUsa0JBQWdCLEVBQUUsZ0JBQWMsQ0FBQyxFQUFFO0FBQUEsVUFBQyxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxnQkFBSTtBQUFFLGFBQUMsU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFHLElBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQU8sSUFBSSxPQUFPLG9CQUFvQixPQUFPLEdBQUUsaUJBQWlCLENBQUM7QUFBQSxjQUFDO0FBQUUsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxtQ0FBaUMsY0FBWSxFQUFFLG1DQUFpQztBQUFBLGNBQUs7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLG1DQUFpQztBQUFBLGNBQVU7QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsTUFBSyxJQUFFLEVBQUUsU0FBUSxJQUFFLEVBQUUsTUFBSyxLQUFHLEVBQUUsbUJBQWtCLElBQUUsRUFBRSxhQUFZLElBQUUsRUFBRSxNQUFLLElBQUUsRUFBRSxtQkFBbUIsR0FBRSxJQUFFLEVBQUUsZUFBZSxHQUFFLEtBQUcsQ0FBQztBQUFFLHVCQUFPLEVBQUUsQ0FBQyxHQUFFO0FBQUcseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUcsRUFBRSxDQUFDLEtBQUcsRUFBRSxhQUFhLE1BQUksSUFBRztBQUFDLDRCQUFPLEVBQUU7QUFBQSwyQkFBVztBQUFBLDJCQUFTO0FBQUEsMkJBQVM7QUFBQSwyQkFBUztBQUFBLDJCQUFTO0FBQUEsMkJBQVM7QUFBQSwyQkFBUztBQUFBLDJCQUFTO0FBQUksMkJBQUcsNkJBQTZCO0FBQUE7QUFBRSx3QkFBRyxDQUFDLENBQUMsRUFBRSx1QkFBdUIsR0FBRSxFQUFFLEtBQUksRUFBRSxhQUFhLENBQUMsS0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDO0FBQUUsNkJBQU8sRUFBRSxpQ0FBK0IsRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsNENBQTBDLEVBQUUsc0JBQXNCLENBQUMsSUFBRSxHQUFHLENBQUMsSUFBRSxFQUFFLG9DQUFrQyxFQUFFLGFBQWEsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxNQUFJLEVBQUUsaUJBQWlCLENBQUMsS0FBRyxFQUFFLGdCQUFnQixDQUFDLEtBQUcsRUFBRSxDQUFDLEtBQUcsRUFBRSwwQ0FBd0MsRUFBRSwwQkFBMEIsQ0FBQyxLQUFHLEVBQUUsOEJBQThCLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBRSxFQUFFLDJDQUF5QyxHQUFHLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRyxFQUFFLGFBQWEsR0FBRSxDQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHlCQUFPLEVBQUUsZ0JBQWdCLENBQUMsS0FBRyxFQUFFLHFCQUFxQixDQUFDLEtBQUcsRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsb0JBQW9CLENBQUMsS0FBRyxFQUFFLHlCQUF5QixDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQUcsS0FBSyxFQUFDLE1BQUssR0FBRyxPQUFPLElBQUUsUUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxVQUFTLEdBQUUsTUFBSyxhQUFZLGlCQUFnQixLQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQUcsS0FBSyxFQUFDLE1BQUssS0FBSyxPQUFPLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxVQUFTLEdBQUUsTUFBSyxRQUFPLGtCQUFpQixLQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQUcsS0FBSyxFQUFDLE1BQUssS0FBSyxPQUFPLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxVQUFTLEdBQUUsTUFBSyxRQUFPLGtCQUFpQixLQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFHLENBQUMsRUFBRSxhQUFZO0FBQUMsd0JBQUksSUFBRSxFQUFFLGlCQUFpQixDQUFDO0FBQUUsMEJBQUksVUFBUSxFQUFFLEVBQUUsU0FBUyxHQUFFLEVBQUUsR0FBRztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyx5QkFBTyxFQUFFLFVBQVEsRUFBRSxPQUFPLFFBQU07QUFBQSxnQkFBSTtBQUFDLHlCQUFTLEdBQUcsR0FBRTtBQUFDLHNCQUFHLEVBQUUsQ0FBQyxFQUFFLGVBQWEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLElBQUc7QUFBQyx3QkFBSSxJQUFFLEVBQUUsK0JBQStCLENBQUM7QUFBRSx3QkFBRyxDQUFDLEdBQUU7QUFBQywwQkFBSSxJQUFFLEVBQUUsa0JBQWtCLENBQUM7QUFBRSwwQkFBRyxDQUFDLEdBQUcsQ0FBQyxHQUFFO0FBQUMsNEJBQUksSUFBRSxFQUFFLENBQUM7QUFBRSw2QkFBRyxFQUFFLEdBQUUsRUFBRSxLQUFLLEdBQUc7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFVLHNCQUFHLEVBQUUsQ0FBQyxLQUFHLENBQUMsRUFBRSxTQUFRO0FBQUMsd0JBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLHFDQUFxQyxHQUFFLENBQUM7QUFBRSx3QkFBRyxFQUFFLENBQUMsS0FBRyxDQUFDLEVBQUU7QUFBUSwrQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sRUFBRSxHQUFFO0FBQUMsNEJBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLGdCQUFnQixDQUFDO0FBQUUsNEJBQUcsRUFBRSxFQUFFLENBQUMsS0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFHO0FBQUMsOEJBQUksS0FBRyxFQUFFLHFDQUFxQyxHQUFFLENBQUM7QUFBRSw4QkFBRyxJQUFHO0FBQUMsZ0NBQUksSUFBRSxHQUFHLElBQUcsS0FBRyxHQUFHLElBQUcsS0FBRyxFQUFFLHlEQUF1RCxDQUFDLEVBQUUsR0FBRSxDQUFDO0FBQUUsZ0NBQUcsQ0FBQyxNQUFJLENBQUM7QUFBRztBQUFTLGdDQUFJLEtBQUcsRUFBRSwyQkFBMkIsQ0FBQztBQUFFLGdDQUFHLEVBQUUsR0FBRSxFQUFFO0FBQUU7QUFBUyw4QkFBRSxJQUFHLEVBQUUsU0FBUyxHQUFFLEVBQUU7QUFBQSwwQkFBQztBQUFBLHdCQUFDO0FBQUEsc0JBQUM7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyx5QkFBTyxFQUFFLGFBQWEsQ0FBQyxJQUFFLEVBQUUsU0FBTyxJQUFFLEVBQUUsMkJBQTJCLENBQUMsSUFBRSxFQUFFLEtBQUssU0FBTyxJQUFFO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFHLENBQUMsRUFBRSxpQkFBaUIsR0FBRSxFQUFFLFFBQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLENBQUM7QUFBRSwyQkFBTTtBQUFHLHNCQUFJLElBQUUsRUFBRSx3QkFBd0IsR0FBRSxFQUFFLEdBQUc7QUFBRSxzQkFBRyxFQUFFLEtBQUcsUUFBTSxFQUFFO0FBQVEsMkJBQU07QUFBRyxzQkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLHlCQUFPLEVBQUUsS0FBSyxHQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFJLEVBQUUsR0FBRyxDQUFDO0FBQUEsa0JBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsMEJBQU8sRUFBRTtBQUFBLHlCQUFXLEtBQUk7QUFBQywwQkFBSSxJQUFFLEVBQUU7QUFBUSw2QkFBTyxFQUFFLG9CQUFvQixDQUFDLEtBQUcsRUFBRSxhQUFhLENBQUMsS0FBRyxFQUFFLHNCQUFzQixFQUFFLFdBQVc7QUFBQSxvQkFBQztBQUFBLHlCQUFNO0FBQUEseUJBQVM7QUFBQSx5QkFBUTtBQUFBLHlCQUFTO0FBQUEseUJBQVE7QUFBSSw2QkFBTTtBQUFBLHlCQUFRLElBQUc7QUFBQywwQkFBSSxJQUFFLEVBQUU7QUFBWSw2QkFBTyxFQUFFLENBQUMsS0FBRyxFQUFFLHNCQUFzQixDQUFDO0FBQUEsb0JBQUM7QUFBQTtBQUFFLHlCQUFPLEVBQUUsb0JBQW9CLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFHLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFHLENBQUMsRUFBRSxnQkFBZ0IsR0FBRSxJQUFHLENBQUMsSUFBRztBQUFDLHdCQUFJLElBQUUsRUFBRSwyQkFBMkIsQ0FBQztBQUFFLHdCQUFHLEVBQUUsS0FBRyxDQUFDLEVBQUUsT0FBTTtBQUFDLDBCQUFJLElBQUUsRUFBRSw0QkFBNEIsQ0FBQztBQUFFLDBCQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsNEJBQUksSUFBRSxFQUFFLHlCQUF5QixDQUFDO0FBQUUsNEJBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRTtBQUFDLDhCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsMkJBQUMsS0FBRyxFQUFFLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSx3QkFBQztBQUFBLHNCQUFDO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLGdCQUFnQixHQUFFLElBQUcsQ0FBQztBQUFFLHlCQUFPLElBQUUsRUFBRSxNQUFJLEVBQUUsV0FBVztBQUFBLGdCQUFHO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLDRCQUE0QixDQUFDO0FBQUUsc0JBQUcsQ0FBQyxDQUFDO0FBQUUsNkJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxXQUFXLFVBQVEsSUFBRSxFQUFFLFdBQVcsUUFBTyxFQUFFLEdBQUU7QUFBQywwQkFBSSxJQUFFLEVBQUUsV0FBVyxJQUFHLElBQUUsRUFBRSwrQkFBK0IsQ0FBQztBQUFFLDBCQUFHLENBQUMsR0FBRTtBQUFDLDRCQUFJLElBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRTtBQUFFLHlCQUFDLEtBQUcsRUFBRSxHQUFFLEVBQUUsZ0JBQWMsRUFBRSxjQUFjLE1BQUksRUFBRSxLQUFLLEdBQUc7QUFBQSxzQkFBQztBQUFBLG9CQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUU7QUFBaUIsc0JBQUcsRUFBRSxDQUFDLEtBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFHO0FBQUMsd0JBQUksSUFBRSxFQUFFLDBCQUEwQixHQUFFLENBQUM7QUFBRSx3QkFBRyxDQUFDLEdBQUcsQ0FBQztBQUFFLDZCQUFPLEVBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsU0FBTyxJQUFFLEVBQUUsT0FBTyxHQUFFLElBQUUsQ0FBQyxJQUFFLFFBQU07QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsVUFBUyxJQUFFLEVBQUMsZ0JBQWUsS0FBRSxHQUFFLElBQUUsRUFBRSxjQUFjLENBQUM7QUFBRSx5QkFBTyxFQUFFLDRCQUE0QixTQUFTLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsZUFBZSxHQUFFLFFBQU8sR0FBRSxDQUFDO0FBQUUsc0JBQUUsTUFBTSxnQkFBZ0IsR0FBRSw0QkFBNEIsR0FBRSxFQUFFLFVBQVUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLENBQUM7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLE1BQUk7QUFBQSxnQkFBVztBQUFBLGNBQUM7QUFBQyxnQkFBRSxvQkFBa0I7QUFBQSxZQUFFLEdBQUcsSUFBRSxFQUFFLGVBQWEsRUFBRSxhQUFXLENBQUMsRUFBRTtBQUFBLFVBQUMsR0FBRyxPQUFLLEtBQUcsQ0FBQyxFQUFFO0FBQUUsY0FBSTtBQUFHLFdBQUMsU0FBUyxHQUFFO0FBQUMsZ0JBQUksSUFBRTtBQUFxRixxQkFBUyxFQUFFLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLENBQUMsR0FBRSxJQUFFLEVBQUUsb0JBQW9CLEdBQUUsSUFBRSxJQUFJLEVBQUUsT0FBSSxJQUFFLElBQUksRUFBRTtBQUFJLHFCQUFNLEVBQUMsc0JBQXFCLEdBQUUseUJBQXdCLEdBQUUsb0JBQW1CLEdBQUUsWUFBVyxHQUFFO0FBQUUsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxPQUFPLEdBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsSUFBSSxDQUFDO0FBQUUsb0JBQUc7QUFBRyx5QkFBTztBQUFHLG9CQUFJO0FBQUcsb0JBQUcsRUFBRTtBQUEwQix1QkFBRyxFQUFFLDBCQUEwQixHQUFFLENBQUM7QUFBQSx5QkFBVSxFQUFFLFVBQVM7QUFBQyxzQkFBSSxLQUFHLEdBQUcsQ0FBQztBQUFFLHVCQUFHLE1BQUksRUFBRSwwQkFBMEIsRUFBQyxtQkFBa0IsSUFBRyxzQkFBcUIsSUFBRyxLQUFJLFNBQVMsR0FBRTtBQUFDLDJCQUFPLEVBQUUsSUFBSSxDQUFDO0FBQUEsa0JBQUMsRUFBQyxHQUFFLEdBQUUsRUFBRSxZQUFZLEdBQUcsTUFBSyxFQUFFLGNBQWMsRUFBRSxDQUFDLEdBQUUsU0FBUyxHQUFFO0FBQUMsMkJBQU0sQ0FBQyxFQUFFLGNBQVksRUFBRSxXQUFXLENBQUMsSUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFFO0FBQUEsa0JBQU0sQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLHlCQUF5QixHQUFFLE1BQUksRUFBRTtBQUFBLGNBQXlCO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLEVBQUUsUUFBUTtBQUFFLHNCQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixDQUFDO0FBQUUsMkJBQU0sQ0FBQyxLQUFHLE1BQUksSUFBRSxTQUFPLEVBQUUsQ0FBQyxLQUFHO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBRyxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLEVBQUUsUUFBUTtBQUFFLHNCQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLFdBQVc7QUFBRSx3QkFBRyxDQUFDLEVBQUUsbUNBQW1DLEVBQUUsUUFBUSxHQUFFO0FBQUMsMEJBQUksS0FBRyxFQUFFLG1CQUFtQixHQUFFLEtBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRSxLQUFHLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFFLFVBQVEsRUFBRSx1Q0FBdUMsRUFBRSxVQUFTLEVBQUUsbUJBQW1CLEdBQUUsR0FBRSxFQUFFLHlCQUF5QixHQUFFLEVBQUU7QUFBRSwwQkFBRyxPQUFLLFFBQU87QUFBQyw0QkFBSSxJQUFFLEdBQUcsSUFBRyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQztBQUFFLCtCQUFPLE1BQUksSUFBRSxTQUFPO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFLFdBQVc7QUFBRSxvQkFBRyxDQUFDLENBQUMsR0FBRTtBQUFDLHNCQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLG9CQUFvQixDQUFDO0FBQUUseUJBQU8sTUFBSSxHQUFHLGlCQUFlLElBQUUsS0FBRztBQUFBLGdCQUFNO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLElBQUksQ0FBQztBQUFFLG9CQUFHLE1BQUk7QUFBTyx5QkFBTyxLQUFHO0FBQU8sb0JBQUcsQ0FBQyxFQUFFLFlBQVUsRUFBRSxjQUFZLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRTtBQUFDLG9CQUFFLElBQUksR0FBRSxLQUFFO0FBQUU7QUFBQSxnQkFBTTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxTQUFTLENBQUMsR0FBRSxLQUFHLEtBQUcsRUFBRSxFQUFFLElBQUU7QUFBRyx1QkFBTyxFQUFFLElBQUksR0FBRSxFQUFFLEdBQUUsTUFBSTtBQUFBLGNBQU07QUFBQyx1QkFBUyxHQUFHLEdBQUU7QUFBQyx1QkFBTyxFQUFFLG9CQUFrQixFQUFFLGtCQUFrQixDQUFDLElBQUUsRUFBRSxDQUFDLEtBQUcsRUFBRSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxHQUFHLENBQUM7QUFBRSx1QkFBTyxFQUFFLDhCQUE4QixDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEtBQUk7QUFBQyxrQkFBRSxNQUFNLEdBQUUsRUFBRSxNQUFNO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLGtCQUFnQjtBQUFFLHFCQUFTLEVBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSx1QkFBdUIsQ0FBQztBQUFFLGtCQUFHLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUUsb0JBQUcsR0FBRTtBQUFDLHNCQUFHLEVBQUUsSUFBRztBQUFDLHdCQUFJLEtBQUcsRUFBRTtBQUFHLDJCQUFPLEVBQUUsR0FBRSxFQUFFLGFBQWEsRUFBRSxLQUFJLEVBQUUsR0FBRSxFQUFFO0FBQUEsa0JBQUM7QUFBQyxzQkFBRTtBQUFBLGdCQUFNO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsQ0FBQztBQUFFLG1CQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUUsRUFBRSxLQUFLLEtBQUcsTUFBTTtBQUFFLHVCQUFRLElBQUUsS0FBRyxFQUFFLDBCQUEwQixHQUFFLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSwwQkFBMEIsSUFBRyxFQUFFLGlCQUFpQixFQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUcsRUFBRSxTQUFTLEVBQUU7QUFBRSx5QkFBTyxFQUFFLEdBQUUsSUFBRyxDQUFDO0FBQUUsb0JBQUcsT0FBSztBQUFPLHlCQUFPLE1BQUk7QUFBQSxjQUFNO0FBQUEsWUFBQztBQUFDLGNBQUUsNEJBQTBCO0FBQUUscUJBQVMsRUFBRSxHQUFFLElBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxxQkFBcUIsRUFBRTtBQUFFLGtCQUFHLEVBQUUsQ0FBQyxLQUFHLENBQUMsRUFBRSxXQUFTLENBQUMsRUFBRSxRQUFNLENBQUMsRUFBRSxhQUFXLEVBQUUsRUFBRSxrQkFBZ0IsRUFBRSxlQUFlLEtBQUssRUFBRSxRQUFRO0FBQUcsdUJBQU8sRUFBRSw2QkFBNkIsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxxQkFBTSxFQUFDLE1BQUssR0FBRSxTQUFRLElBQUcsK0JBQThCLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsa0NBQWtDLEVBQUUsY0FBYyxJQUFJLEdBQUUsQ0FBQztBQUFBLGNBQUMsRUFBQztBQUFBLFlBQUM7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFJLElBQUUsSUFBSSxFQUFFO0FBQUkscUJBQVMsRUFBRSxJQUFHLEdBQUUsR0FBRTtBQUFDLGdCQUFFLHVCQUF1QixJQUFHLENBQUM7QUFBRSxrQkFBSSxJQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsZUFBZSxHQUFFLEtBQUcsR0FBRyxzQkFBb0IsRUFBRSxXQUFXLFlBQVUsRUFBRSxxQkFBcUIsR0FBRyxVQUFTLENBQUMsUUFBTyxNQUFNLENBQUM7QUFBRSxlQUFDLE1BQUksR0FBRyw0QkFBMEIsRUFBRSx5QkFBeUIsQ0FBQyxLQUFHLEVBQUUsaUNBQWlDLEVBQUUsbUJBQW1CLENBQUMsTUFBSSxFQUFFLEVBQUUsS0FBRyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxHQUFHLHVCQUF1QixHQUFFLEVBQUUsWUFBWSw2REFBNkQsQ0FBQztBQUFFLGtCQUFJLEtBQUcsRUFBRSxlQUFlLEVBQUU7QUFBRSxrQkFBRyxFQUFFLE1BQU0sR0FBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQixDQUFDO0FBQUUseUJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRyxTQUFRLElBQUUsRUFBRSxRQUFPLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUUsSUFBRyxJQUFFLEVBQUUsMEJBQTBCLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQztBQUFFLHNCQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMsd0JBQUksSUFBRSxFQUFFLGtCQUFrQixJQUFHLEVBQUUsTUFBSyxFQUFFLHdCQUF3QixJQUFHLENBQUMsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0I7QUFBRSx5QkFBRyxFQUFFLDJCQUF5QixFQUFFLDRCQUEwQixRQUFJLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEtBQUcsRUFBRSx3QkFBd0Isa0JBQWdCLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixHQUFFLEVBQUUsWUFBWSwyQ0FBMkMsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQyxxQkFBTyxFQUFFLFNBQVMsR0FBRSxHQUFHLHlCQUF5QixHQUFFLEVBQUUsU0FBUyxHQUFFLEVBQUUseUJBQXlCLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLFNBQVMsR0FBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxRQUFNLEVBQUU7QUFBQSxjQUFLLENBQUM7QUFBRSx1QkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBRztBQUFHLHFCQUFHLEdBQUUsRUFBRSxLQUFHLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sSUFBRSxFQUFFLE9BQU8sT0FBSyxHQUFFLEVBQUUsWUFBWSxpRUFBaUUsQ0FBQztBQUFBLHFCQUFNO0FBQUMsc0JBQUcsRUFBRSxvQkFBb0IsQ0FBQyxLQUFHLEVBQUUsV0FBUyxNQUFJLEVBQUUsZ0JBQWdCLFFBQU0sS0FBRyxFQUFFLGdCQUFnQixhQUFhLFdBQVMsR0FBRTtBQUFDLHdCQUFJLElBQUUsRUFBRSxnQkFBZ0IsYUFBYSxHQUFHO0FBQVkseUJBQUcsRUFBRSxjQUFjLEdBQUUsSUFBRSxLQUFHLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixHQUFFLEVBQUUsWUFBWSwwQ0FBMEMsQ0FBQztBQUFBLGtCQUFDO0FBQUMsb0JBQUUsUUFBUSxnQ0FBZ0MsQ0FBQyxLQUFHLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLFFBQU0sR0FBRSxFQUFFLFlBQVksNENBQTRDLENBQUM7QUFBQSxnQkFBQztBQUFDLGtCQUFFLENBQUMsS0FBRyxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxhQUFhLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsK0JBQTZCO0FBQUUscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sR0FBRyxXQUFXLEtBQUssU0FBUyxHQUFFO0FBQUMsd0JBQU8sRUFBRTtBQUFBLHVCQUFXO0FBQUksMkJBQU8sRUFBRSxnQkFBZ0IsYUFBYSxLQUFLLFNBQVMsSUFBRztBQUFDLDZCQUFNLENBQUMsQ0FBQyxHQUFHLGVBQWEsRUFBRSxjQUFjLEVBQUUsR0FBRyxXQUFXLEdBQUUsSUFBRTtBQUFBLG9CQUFDLENBQUM7QUFBQSx1QkFBTyxLQUFJO0FBQUMsd0JBQUksSUFBRSxFQUFFO0FBQVcsd0JBQUcsQ0FBQyxFQUFFLG1CQUFtQixDQUFDO0FBQUUsNkJBQU8sRUFBRSxjQUFjLEdBQUUsSUFBRTtBQUFFLHdCQUFJLElBQUUsRUFBRSw2QkFBNkIsQ0FBQztBQUFFLDJCQUFPLE1BQUksS0FBRyxNQUFJO0FBQUEsa0JBQUM7QUFBQTtBQUFTLDJCQUFNO0FBQUE7QUFBQSxjQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSwyQkFBMkIsRUFBRSxJQUFFLEVBQUUsR0FBRyxVQUFVLElBQUU7QUFBQSxZQUFFO0FBQUMscUJBQVMsRUFBRSxJQUFHO0FBQUMsc0JBQU8sR0FBRztBQUFBLHFCQUFXO0FBQUksc0JBQUksSUFBRSxHQUFHLGNBQWEsSUFBRSxHQUFHO0FBQWdCLHlCQUFPLEtBQUcsQ0FBQyxFQUFFLFFBQU0sRUFBRSxpQkFBZSxFQUFFLGNBQWMsU0FBTyxPQUFLLEVBQUUsZ0JBQWdCLENBQUMsSUFBRSxFQUFFLGNBQWMsT0FBSztBQUFBLHFCQUFZO0FBQUkseUJBQU8sR0FBRztBQUFBO0FBQWE7QUFBQTtBQUFBLFlBQU87QUFBQyxxQkFBUyxFQUFFLElBQUcsR0FBRSxHQUFFO0FBQUMsaUJBQUcsSUFBRyxDQUFDLEtBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsS0FBRyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxHQUFHLFFBQU0sRUFBRSxzQkFBc0IsR0FBRyxNQUFNLEtBQUcsRUFBRSxhQUFhLEdBQUcsT0FBTyxJQUFJLElBQUUsR0FBRyxPQUFPLE9BQUssSUFBRyxFQUFFLFlBQVksMENBQTBDLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyxxQkFBTSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBRyxHQUFHLFFBQU0sRUFBRSxRQUFRLEdBQUcsSUFBSSxLQUFHLEVBQUUsR0FBRyxNQUFLLENBQUMsS0FBRyxFQUFFLElBQUcsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFLElBQUcsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSw0QkFBNEIsRUFBRSxHQUFFLElBQUUsSUFBRSxFQUFFLHlCQUF5QixDQUFDLElBQUU7QUFBTyxxQkFBTSxDQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLGlCQUFlO0FBQUUscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFFLEdBQUcsT0FBSztBQUFBLFlBQUU7QUFBQyxxQkFBUyxFQUFFLElBQUcsR0FBRTtBQUFDLHFCQUFNLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixJQUFHLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsSUFBRyxHQUFFO0FBQUMscUJBQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFHLENBQUMsQ0FBQyxHQUFHLGNBQVksR0FBRyxHQUFHLFlBQVcsQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLDZDQUEyQztBQUFFLHFCQUFTLEdBQUcsSUFBRyxHQUFFO0FBQUMsa0JBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFHLENBQUMsR0FBRyxVQUFVLE1BQU0sU0FBUyxHQUFFO0FBQUMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLENBQUM7QUFBRSx1QkFBTTtBQUFHLHVCQUFRLElBQUUsR0FBRyxXQUFXLFlBQVcsRUFBRSxDQUFDLEtBQUcsRUFBRSwyQkFBMkIsQ0FBQztBQUFHLG9CQUFHLEVBQUUsaUJBQWlCLENBQUMsR0FBRTtBQUFDLHNCQUFHLENBQUMsRUFBRSxDQUFDLEtBQUcsQ0FBQyxFQUFFLFVBQVUsTUFBTSxTQUFTLEdBQUU7QUFBQywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFDLENBQUM7QUFBRSwyQkFBTTtBQUFHLHNCQUFFLEVBQUUsV0FBVztBQUFBLGdCQUFVO0FBQU0sc0JBQUUsRUFBRTtBQUFXLHFCQUFNO0FBQUEsWUFBRTtBQUFDLGNBQUUsMEJBQXdCO0FBQUcscUJBQVMsRUFBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFJLEVBQUUsb0NBQW9DLElBQUcsTUFBTSxLQUFHLEVBQUUsb0NBQW9DLElBQUcsT0FBTyxLQUFHLEVBQUUsb0NBQW9DLElBQUcsU0FBUztBQUFBLFlBQUU7QUFBQyxxQkFBUyxFQUFFLElBQUc7QUFBQyxrQkFBSSxJQUFFLEdBQUcsV0FBVyxLQUFLLE1BQUssSUFBRSxNQUFJLFNBQU8sSUFBRSxNQUFJLFdBQVMsTUFBSSxZQUFVLElBQUU7QUFBRSxxQkFBTyxHQUFHLFVBQVUsU0FBTyxJQUFFLFFBQUcsR0FBRyxVQUFVLFNBQU8sSUFBRSxPQUFHLE1BQUksS0FBRyxFQUFFLEtBQUssR0FBRyxXQUFVLFNBQVMsR0FBRTtBQUFDLHVCQUFPLEVBQUUsU0FBTyxPQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUcsRUFBRSxTQUFPO0FBQUEsY0FBVyxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsSUFBRyxHQUFFO0FBQUMsc0JBQU8sR0FBRztBQUFBLHFCQUFXO0FBQUEscUJBQVM7QUFBSSxzQkFBSSxJQUFFLEVBQUUsaUJBQWlCLEVBQUU7QUFBRSxzQkFBRyxJQUFFO0FBQUUsMkJBQU07QUFBQSxxQkFBUTtBQUFJLG9CQUFFLElBQUksRUFBRSxFQUFFLEdBQUUsSUFBRTtBQUFBLHFCQUFPO0FBQUkseUJBQU07QUFBQSxxQkFBUTtBQUFBLHFCQUFRLEtBQUk7QUFBQyxzQkFBSSxJQUFFLEVBQUUsb0JBQW9CLEVBQUU7QUFBRSx5QkFBTyxJQUFFLEVBQUUsa0JBQWtCLENBQUMsS0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEdBQUUsQ0FBQyxFQUFFLGNBQWEsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxlQUFlLEVBQUUsS0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWEsRUFBRSxlQUFlLEdBQUcsV0FBVztBQUFBLGtCQUFDLENBQUMsSUFBRTtBQUFBLGdCQUFFO0FBQUE7QUFBUyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLHFCQUFTLEVBQUUsSUFBRztBQUFDLHFCQUFNLEdBQUcsT0FBTyxHQUFHLElBQUksU0FBUyxHQUFFLEdBQUcsRUFBRSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHLEdBQUU7QUFBQyxrQkFBSSxHQUFFLEdBQUUsSUFBRztBQUFHLGtCQUFHLEdBQUcsU0FBTyxLQUFJO0FBQUMsb0JBQUcsRUFBRSxzQkFBc0IsR0FBRyxNQUFNLE9BQUssSUFBRSxHQUFHLE9BQU8sYUFBVyxRQUFNLE1BQUksU0FBTyxTQUFPLEVBQUU7QUFBTSx5QkFBTTtBQUFHLG9CQUFJLEtBQUcsRUFBRSxtQkFBbUIsSUFBRyxLQUFFO0FBQUUsdUJBQU0sQ0FBQyxFQUFFLFNBQU8sSUFBRSxHQUFHLGFBQVcsUUFBTSxNQUFJLFNBQU8sU0FBTyxFQUFFLFdBQVMsS0FBRyxHQUFHLGFBQVcsUUFBTSxPQUFLLFNBQU8sU0FBTyxHQUFHO0FBQUEsY0FBTztBQUFDLHFCQUFPLEdBQUcsU0FBTyxNQUFJLENBQUMsRUFBRSxHQUFHLEtBQUcsR0FBRyxPQUFPLGFBQVcsUUFBTSxPQUFLLFdBQVMsR0FBRyxRQUFNO0FBQUEsWUFBRTtBQUFDLHFCQUFTLEVBQUUsSUFBRztBQUFDLHNCQUFPLEdBQUc7QUFBQSxxQkFBVztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFJLHlCQUFNO0FBQUE7QUFBVyx5QkFBTTtBQUFBO0FBQUEsWUFBRztBQUFDLGNBQUUsd0JBQXNCO0FBQUEsVUFBQyxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxnQkFBSTtBQUFFLGFBQUMsU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRTtBQUFTLHVCQUFTLEVBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxJQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBRSxvQkFBRyxNQUFJO0FBQUcseUJBQU87QUFBRSxvQkFBSSxJQUFFLEVBQUUscUNBQXFDLENBQUM7QUFBRSx1QkFBTyxJQUFFLEtBQUcsRUFBRSxxQkFBcUIsR0FBRSxHQUFHLElBQUUsZ0JBQWMsVUFBUSxJQUFFLE1BQUksU0FBTyxJQUFFLFNBQU8sU0FBTyxJQUFFLEtBQUcsY0FBWSxJQUFFLFNBQU8sbUJBQWlCLElBQUUsSUFBRSxnQkFBYyxJQUFFLFVBQVEsVUFBUSxJQUFFLE9BQUssV0FBUztBQUFBLGNBQUM7QUFBQyxnQkFBRSxnQkFBYztBQUFFLHVCQUFTLEVBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxvQkFBSSxJQUFFLEVBQUUsZUFBZSxDQUFDO0FBQUUsb0JBQUcsRUFBRSxXQUFTLEtBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxRQUFNLFFBQU0sRUFBRSwwQkFBMEIsR0FBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsV0FBUztBQUFFLHlCQUFNO0FBQVMsb0JBQUcsRUFBRSxrQkFBa0IsQ0FBQztBQUFFLHlCQUFNO0FBQU0sb0JBQUcsRUFBRSxrQkFBa0IsQ0FBQztBQUFFLHlCQUFNO0FBQVksb0JBQUcsR0FBRyxTQUFPLE9BQUssRUFBRSxhQUFhLEVBQUUsS0FBRyxFQUFFLGtCQUFrQixFQUFFO0FBQUUseUJBQU07QUFBWSxvQkFBSSxJQUFFLEVBQUUscUNBQXFDLENBQUM7QUFBRSxvQkFBRyxJQUFFO0FBQUUseUJBQU8sRUFBRSxvQ0FBb0MsQ0FBQyxJQUFFLGNBQVksRUFBRSxvQkFBa0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLElBQUUsVUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFhLEVBQUUsS0FBSyxJQUFFLFFBQU0sRUFBRSxDQUFDLElBQUUsY0FBWTtBQUFNLG9CQUFHLElBQUU7QUFBRyx5QkFBTyxFQUFFLENBQUMsSUFBRSxtQkFBaUI7QUFBVyxvQkFBRyxJQUFFO0FBQU0seUJBQU07QUFBUyxvQkFBRyxJQUFFO0FBQU0seUJBQU07QUFBUyxvQkFBRyxJQUFFO0FBQUsseUJBQU07QUFBUyxvQkFBRyxJQUFFO0FBQU0seUJBQU07QUFBYyxvQkFBRyxJQUFFLEdBQUU7QUFBQyxzQkFBRyxJQUFFLFlBQVUsRUFBRSxhQUFXLEdBQUU7QUFBQyx3QkFBSSxJQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxHQUFFLFNBQVMsSUFBRztBQUFDLDBCQUFJLElBQUUsR0FBRyxTQUFTO0FBQUUsMEJBQUcsSUFBRTtBQUFNLCtCQUFNO0FBQUEsb0JBQVUsQ0FBQztBQUFFLHdCQUFHLENBQUMsR0FBRTtBQUFDLDBCQUFJLElBQUUsRUFBRSwwQkFBMEIsR0FBRSxFQUFFO0FBQUUsNkJBQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFPLFdBQVM7QUFBQSxvQkFBVTtBQUFDLDJCQUFPO0FBQUEsa0JBQUM7QUFBQyx5QkFBTTtBQUFBLGdCQUFVO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUMsdUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUcsRUFBRSxnQkFBYyxFQUFFLGFBQWEsUUFBTztBQUFDLHNCQUFJLElBQUUsRUFBRSxjQUFhLEtBQUcsRUFBRSxJQUFHLElBQUUsRUFBRSxNQUFNLENBQUMsR0FBRSxJQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUcsRUFBRSx3QkFBd0IsRUFBRSxLQUFHLEVBQUUsS0FBSyxHQUFFLFNBQVMsR0FBRTtBQUFDLDJCQUFNLENBQUMsRUFBRSx3QkFBd0IsQ0FBQztBQUFBLGtCQUFDLENBQUMsSUFBRSxPQUFLLEdBQUUsSUFBRSxFQUFFLGlCQUFpQixJQUFHLENBQUM7QUFBRSxzQkFBRztBQUFFLDJCQUFPLEVBQUUsTUFBTSxHQUFHO0FBQUEsZ0JBQUM7QUFBQyx1QkFBTSxDQUFDO0FBQUEsY0FBQztBQUFDLHVCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsb0JBQUcsQ0FBQztBQUFFLHlCQUFNO0FBQUcsb0JBQUksS0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUFFLG9CQUFHLEVBQUUsUUFBTSxTQUFRO0FBQUMsc0JBQUksSUFBRSxFQUFFLGlCQUFpQixDQUFDO0FBQUUsd0JBQUksS0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUUsU0FBUyxHQUFFO0FBQUMsdUJBQUcsSUFBSSxDQUFDO0FBQUEsa0JBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUMsdUJBQU8sRUFBRSxRQUFNLFlBQVUsR0FBRyxJQUFJLFVBQVUsR0FBRSxHQUFHLE9BQUssSUFBRSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBRTtBQUFBLGNBQUU7QUFBQyxnQkFBRSxxQkFBbUI7QUFBRyx1QkFBUyxFQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSTtBQUFHLHNCQUFJLFdBQVMsSUFBRSxFQUFFLHVCQUF1QixDQUFDO0FBQUcsb0JBQUksSUFBRSxDQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLHFDQUFxQyxDQUFDLEdBQUUsSUFBRSxJQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFLElBQUcsS0FBRyxPQUFHLEtBQUcsRUFBRSxTQUFPLE9BQUssRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsa0JBQWtCLENBQUMsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUU7QUFBRyxvQkFBRyxFQUFFLFNBQU8sT0FBSyxDQUFDO0FBQUcseUJBQU0sRUFBQyxjQUFhLENBQUMsRUFBRSxZQUFZLEdBQUcsQ0FBQyxHQUFFLGVBQWMsQ0FBQyxHQUFFLFlBQVcsa0JBQWlCLE1BQUssT0FBTTtBQUFFLG9CQUFHLE1BQUksTUFBSSxJQUFFLE1BQUksSUFBRSxTQUFRO0FBQUMsc0JBQUcsTUFBSSxZQUFVLE1BQUksVUFBUztBQUFDLHdCQUFJLElBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYSxTQUFTLElBQUc7QUFBQyw2QkFBTyxHQUFHLFNBQU87QUFBQSxvQkFBQyxDQUFDO0FBQUUsd0JBQUc7QUFBRSw4QkFBTyxFQUFFO0FBQUEsNkJBQVc7QUFBSSw4QkFBRTtBQUFTO0FBQUEsNkJBQVc7QUFBSSw4QkFBRTtBQUFTO0FBQUE7QUFBYyw0QkFBRSxNQUFNLFlBQVksQ0FBQztBQUFBO0FBQUE7QUFBTywwQkFBRTtBQUFBLGtCQUFVO0FBQUMsc0JBQUksSUFBRTtBQUFPLHNCQUFHLEtBQUcsS0FBRyxFQUFFLGtCQUFrQixDQUFDLElBQUUsRUFBRSwwQkFBMEIsR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLEVBQUUsT0FBTyxTQUFPLEtBQUk7QUFBQyx3QkFBSSxJQUFFLEVBQUUsT0FBTztBQUFLLHFCQUFDLE1BQUksS0FBRyxLQUFHLEVBQUUsYUFBYSxNQUFJLE9BQUssSUFBRSxFQUFFO0FBQUEsa0JBQU87QUFBQyxzQkFBSSxJQUFFO0FBQU8sc0JBQUcsRUFBRSxzQkFBc0IsQ0FBQyxJQUFFLElBQUUsS0FBRyxFQUFFLHVCQUF1QixDQUFDLEtBQUcsRUFBRSxzQkFBc0IsQ0FBQyxLQUFHLEVBQUUsV0FBUyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sS0FBRyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sTUFBSSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsT0FBSyxJQUFFLEVBQUUsU0FBUSxHQUFFO0FBQUMsd0JBQUUsRUFBRSxxQkFBcUIsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRSxTQUFPLE9BQUssRUFBRSxpQkFBaUIsQ0FBQyxLQUFHLEVBQUUsV0FBVyxTQUFPLEtBQUksSUFBRSxJQUFFLEdBQUcsdUJBQXVCLElBQUUsR0FBRyxrQkFBa0I7QUFBRSx3QkFBRyxLQUFHLENBQUMsRUFBRSxTQUFTLEdBQUUsRUFBRSxNQUFNLEtBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRSxDQUFDLE1BQUksSUFBRSxFQUFFLFNBQU8sRUFBRSxLQUFHLFNBQVEsR0FBRTtBQUFDLDhCQUFPLEtBQUcsSUFBRSxNQUFJLElBQUUsZUFBYyxHQUFHLEdBQUcsUUFBTyxDQUFDLEtBQUcsSUFBRSxXQUFTLElBQUUsU0FBUSxHQUFHLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxNQUFJLEVBQUUsUUFBTSxNQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBRyxHQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUEsNkJBQU87QUFBQSw2QkFBb0I7QUFBQSw2QkFBZTtBQUFBLDZCQUFVO0FBQUEsNkJBQVk7QUFBQSw2QkFBVTtBQUFBLDZCQUFnQjtBQUFZLDRCQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFFLE9BQUssR0FBRyxXQUFTLEVBQUUsU0FBUyxHQUFFLEVBQUUscUJBQXFCLEdBQUUsR0FBRyxRQUFPLEdBQUUsUUFBTyxDQUFDLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsSUFBRyxNQUFJLEVBQUUsUUFBTSxNQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBRyxHQUFHLEdBQUUsR0FBRSxNQUFNO0FBQUU7QUFBQTtBQUFjLDZCQUFHLEdBQUUsQ0FBQztBQUFBO0FBQUUsMkJBQUcsTUFBRyxJQUFFLEVBQUUsU0FBTztBQUFBLG9CQUFDO0FBQUEsa0JBQUMsV0FBUyxFQUFFLDRCQUE0QixDQUFDLEtBQUcsRUFBRSxJQUFFLFVBQVEsRUFBRSxTQUFPLE9BQUssRUFBRSxPQUFPLFNBQU8sS0FBSTtBQUFDLHdCQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxnQkFBYyxFQUFFLEtBQUssRUFBRSxjQUFhLFNBQVMsSUFBRztBQUFDLDZCQUFPLFFBQU0sRUFBRSxTQUFPLE1BQUksRUFBRSxTQUFPO0FBQUEsb0JBQUUsQ0FBQztBQUFFLHdCQUFHLEdBQUU7QUFBQywwQkFBSSxJQUFFLEVBQUUsU0FBTyxNQUFJLEdBQUcsbUJBQW1CLEVBQUUsdUJBQXVCLElBQUUsR0FBRyxtQkFBbUIsRUFBRSxrQkFBa0I7QUFBRSx3QkFBRSwyQkFBMkIsQ0FBQyxJQUFFLElBQUUsRUFBRSxLQUFHLElBQUUsRUFBRSw0QkFBNEIsQ0FBQyxHQUFFLEVBQUUsU0FBTyxPQUFLLElBQUUsZUFBYyxHQUFHLEdBQUcsUUFBTyxDQUFDLEtBQUcsR0FBRyxFQUFFLFNBQU8sT0FBSyxFQUFFLEdBQUcsT0FBTyxRQUFNLFFBQU0sR0FBRyxPQUFPLFFBQU0sUUFBTSxHQUFHLFNBQU8sR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEtBQUcsTUFBRyxJQUFFLEVBQUUsU0FBTztBQUFBLG9CQUFDO0FBQUEsa0JBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFHLElBQUUsTUFBSSxDQUFDLE1BQUksQ0FBQyxPQUFLLEdBQUcsR0FBRSxFQUFFLHFCQUFxQixHQUFFLEdBQUcsSUFBRSxHQUFHLGFBQWEsSUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxHQUFFLEdBQUcsR0FBRSxFQUFFLElBQUcsSUFBRSxNQUFJLElBQUUsTUFBSSxHQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsRUFBRSxJQUFHLElBQUUsVUFBUSxJQUFFLE1BQUksR0FBRyxHQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsU0FBUyxHQUFFLEVBQUUsbUJBQW1CLEdBQUUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLElBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLElBQUUsRUFBRSx3QkFBd0IsQ0FBQyxHQUFFLEdBQUUsT0FBTyxDQUFDLElBQUcsSUFBRSxRQUFNLEdBQUcsR0FBRSxFQUFFLEtBQUssRUFBRSxjQUFhLFNBQVMsSUFBRztBQUFDLHlCQUFPLEVBQUUsa0JBQWtCLEVBQUUsS0FBRyxFQUFFLFlBQVksRUFBRTtBQUFBLGdCQUFDLENBQUMsTUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsR0FBRyxDQUFDLElBQUcsSUFBRSxRQUFNLENBQUMsSUFBRztBQUFDLHFCQUFHO0FBQUUsc0JBQUksSUFBRSxFQUFFLHFCQUFxQixHQUFFLEdBQUcsR0FBRSxJQUFFLEtBQUcsRUFBRSxRQUFNLEVBQUUsS0FBSyxTQUFPO0FBQUcsb0JBQUUsS0FBSyxFQUFFLFlBQVksSUFBRSxNQUFJLEdBQUcsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEdBQUcsQ0FBQztBQUFBLGdCQUFDO0FBQUMsb0JBQUcsSUFBRSxVQUFRLElBQUU7QUFBRSxzQkFBRyxHQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRTtBQUFPLHVCQUFHLEdBQUUsR0FBRyxFQUFFLFFBQU8sQ0FBQyxHQUFFLEdBQUcsRUFBRSxRQUFPLENBQUM7QUFBQSx1QkFBTTtBQUFDLHdCQUFJLElBQUUsRUFBRSxxQkFBcUIsR0FBRSxHQUFHO0FBQUUsd0JBQUcsTUFBSTtBQUFPLDZCQUFPLEVBQUUsTUFBTSxLQUFLO0FBQUUsd0JBQUksSUFBRSxFQUFFO0FBQU8sd0JBQUc7QUFBRSwwQkFBRyxFQUFFLG1CQUFtQixFQUFFLElBQUksR0FBRTtBQUFDLDJCQUFHO0FBQUUsNEJBQUksSUFBRSxFQUFFLDRCQUE0QixDQUFDO0FBQUUsMEJBQUUsU0FBTyxPQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUcsRUFBRSxTQUFPLE9BQUssRUFBRSxRQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUUsRUFBRSxTQUFTLEdBQUUsRUFBRSx3QkFBd0IsR0FBRSxHQUFFLElBQUcsRUFBRSxDQUFDO0FBQUEsc0JBQUM7QUFBTSwwQkFBRSxTQUFPLFFBQU0sR0FBRyxHQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRSxHQUFHLEVBQUUsUUFBTyxFQUFFO0FBQUEsa0JBQUU7QUFBQyxvQkFBRyxJQUFFLEdBQUU7QUFBQyxzQkFBRSxlQUFjLEdBQUcsR0FBRSxhQUFhO0FBQUUsc0JBQUksS0FBRyxLQUFHLEVBQUUsa0JBQWdCLFFBQU0sT0FBSyxTQUFPLFNBQU8sR0FBRztBQUFHLHVCQUFJLEtBQUcsT0FBSyxTQUFPLEVBQUUsVUFBUSxLQUFJO0FBQUMsd0JBQUksSUFBRSxFQUFFLGlCQUFpQixDQUFDO0FBQUUsMEJBQUksV0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxHQUFFLE9BQU8sS0FBRyxXQUFTLEVBQUUsc0JBQXNCLGlCQUFlLEVBQUUsc0JBQXNCLGFBQWEsQ0FBQztBQUFBLGtCQUFFO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxFQUFFLFFBQU0sU0FBUTtBQUFDLHNCQUFHLEdBQUcsR0FBRSxDQUFDLElBQUc7QUFBQyx3QkFBSSxJQUFFLEVBQUUsaUJBQWlCLENBQUM7QUFBRSx3QkFBRyxNQUFJLEtBQUcsRUFBRSxnQkFBYyxFQUFFLGFBQWEsU0FBTyxHQUFFO0FBQUMsMEJBQUksSUFBRSxFQUFFLGFBQWEsSUFBRyxJQUFFLEVBQUUscUJBQXFCLENBQUM7QUFBRSwwQkFBRyxHQUFFO0FBQUMsNEJBQUksS0FBRyxFQUFFLDhCQUE4QixDQUFDLEtBQUcsRUFBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFNBQU8sYUFBVyxDQUFDLElBQUcsS0FBRyxFQUFFLEdBQUUsR0FBRSxFQUFFLG9CQUFvQixDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxJQUFFLENBQUM7QUFBRSwwQkFBRSxLQUFLLE1BQU0sR0FBRSxHQUFHLFlBQVksR0FBRSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsR0FBRSxJQUFFLEdBQUcsZUFBYyxJQUFFLEdBQUc7QUFBQSxzQkFBSTtBQUFNLDRCQUFFLEVBQUUsa0NBQWtDLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxhQUFhLENBQUM7QUFBQSxvQkFBQztBQUFBLGtCQUFDO0FBQUMsc0JBQUcsRUFBRTtBQUFhLDRCQUFPLEVBQUUsYUFBYSxHQUFHO0FBQUEsMkJBQVc7QUFBSSwwQkFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEdBQUcsQ0FBQztBQUFFO0FBQUEsMkJBQVc7QUFBSSwwQkFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsYUFBYSxHQUFHLGlCQUFlLEtBQUcsRUFBRSxDQUFDO0FBQUU7QUFBQSwyQkFBVztBQUFJLDBCQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUFFO0FBQUE7QUFBYywwQkFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLENBQUM7QUFBQTtBQUFFLG9CQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxHQUFHLENBQUMsR0FBRSxFQUFFLFFBQVEsRUFBRSxjQUFhLFNBQVMsSUFBRztBQUFDLHdCQUFHLEdBQUcsU0FBTyxLQUFJO0FBQUMsMEJBQUksS0FBRztBQUFHLDBCQUFHLEVBQUUsd0NBQXdDLEVBQUU7QUFBRSwwQkFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEdBQUcsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLG1EQUFtRCxFQUFFLENBQUMsR0FBRSxFQUFFLHNCQUFzQixhQUFhLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0FBQUEsMkJBQU07QUFBQyw0QkFBSSxLQUFHLEVBQUUsb0JBQW9CLEdBQUcsZUFBZTtBQUFFLCtCQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsR0FBRyxJQUFHLENBQUM7QUFBQSxzQkFBRTtBQUFDLDZCQUFNO0FBQUEsb0JBQUU7QUFBQSxrQkFBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxDQUFDO0FBQUcsc0JBQUcsTUFBSSxJQUFHO0FBQUMsd0JBQUcsSUFBRztBQUFDLDBCQUFHLE1BQUksR0FBRyxHQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxNQUFJLGNBQVksTUFBSSxZQUFVLE1BQUksWUFBVSxNQUFJLG1CQUFpQixJQUFFLEtBQUcsTUFBSSxlQUFhLElBQUc7QUFBQyw0QkFBRyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsR0FBRyxVQUFRLEdBQUcsT0FBTyxRQUFNLFFBQU87QUFBQyw4QkFBSSxLQUFHLEVBQUUsa0JBQWtCLFNBQVMsSUFBRztBQUFDLGdDQUFJLEtBQUcsRUFBRSwyQkFBMkIsSUFBRyxHQUFFLENBQUM7QUFBRSwrQkFBRyxFQUFFLFVBQVUsR0FBRSxJQUFHLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxHQUFFLEVBQUU7QUFBQSwwQkFBQyxDQUFDO0FBQUUsNEJBQUUsU0FBUyxHQUFFLEVBQUU7QUFBQSx3QkFBQztBQUFNLDRCQUFFLFNBQVMsR0FBRSxFQUFFLG1CQUFtQixHQUFFLElBQUcsQ0FBQyxDQUFDO0FBQUUsNEJBQUcsRUFBRSxVQUFRLEVBQUUsT0FBTyx1QkFBc0I7QUFBQyw4QkFBSSxLQUFHLEVBQUUsT0FBTztBQUFzQiw0QkFBRSxNQUFNLFdBQVcsR0FBRyxNQUFLLEVBQUUsWUFBWSxHQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUFBLHdCQUFDO0FBQUEsc0JBQUMsV0FBUyxJQUFFLE1BQUksSUFBRSxRQUFNLElBQUUsU0FBTyxJQUFFLFVBQVEsSUFBRSxTQUFPLE1BQUksVUFBUztBQUFDLDRCQUFJLElBQUUsR0FBRyxtQkFBbUIsRUFBRSxrQkFBa0I7QUFBRSwwQkFBRSxXQUFTLEdBQUcsRUFBRSxJQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsU0FBTztBQUFBLHNCQUFFO0FBQUEsb0JBQUM7QUFBQSxrQkFBQztBQUFNLHdCQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxvQkFBRyxHQUFHLFdBQVMsS0FBRyxDQUFDLE1BQUksS0FBRyxFQUFFLGtDQUFrQyxHQUFFLENBQUMsSUFBRyxHQUFHLFdBQVMsS0FBRyxJQUFFLEtBQUcsRUFBRSxVQUFRLEVBQUUsZ0JBQWMsRUFBRSxRQUFRLEVBQUUsT0FBTyxjQUFhLFNBQVMsSUFBRztBQUFDLHlCQUFPLEdBQUcsU0FBTztBQUFBLGdCQUFHLENBQUM7QUFBRSwyQkFBUSxLQUFHLEdBQUUsSUFBRSxFQUFFLGNBQWEsS0FBRyxFQUFFLFFBQU8sTUFBSztBQUFDLHdCQUFJLElBQUUsRUFBRTtBQUFJLHdCQUFHLEVBQUUsQ0FBQyxFQUFFLFVBQVEsRUFBRSxPQUFPLFNBQU8sTUFBSztBQUFDLDBCQUFJLEtBQUcsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEtBQUs7QUFBRSwwQkFBRyxDQUFDLENBQUMsT0FBSyxLQUFHLEdBQUcsd0JBQXdCLENBQUMsR0FBRSxJQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUUsR0FBRyxTQUFPO0FBQUc7QUFBQSxvQkFBSztBQUFBLGtCQUFDO0FBQUMsb0JBQUcsR0FBRyxXQUFTLEtBQUcsRUFBRSxhQUFhLENBQUMsS0FBRyxFQUFFLG9CQUFrQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixHQUFFO0FBQUMsc0JBQUksSUFBRSxFQUFFLGtCQUFpQixLQUFHLEVBQUU7QUFBTyxzQkFBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLEtBQUcsRUFBRSx1QkFBdUIsRUFBRSxHQUFFO0FBQUMsd0JBQUksS0FBRyxFQUFFLDZCQUE2QixFQUFFLElBQUksR0FBRSxLQUFHLEVBQUUsa0JBQWtCLEVBQUU7QUFBRSx5QkFBRyxFQUFFLGFBQWEsR0FBRyxRQUFRLElBQUUsR0FBRyxRQUFNLENBQUMsRUFBRSxHQUFFLFNBQVMsSUFBRztBQUFDLDBCQUFJLEtBQUcsR0FBRyxZQUFZLEVBQUU7QUFBRSw2QkFBTyxLQUFHLEdBQUcsd0JBQXdCLENBQUMsSUFBRTtBQUFBLG9CQUFNLENBQUMsS0FBRyxFQUFFO0FBQUEsa0JBQVU7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsV0FBUyxLQUFHLENBQUMsTUFBSSxJQUFFLEVBQUUsdUJBQXVCLEdBQUUsQ0FBQyxJQUFHLEdBQUcsV0FBUyxLQUFHLE1BQUksS0FBRyxJQUFHLEVBQUUsV0FBUyxLQUFHLE1BQUksSUFBRSxJQUFHLEVBQUMsY0FBYSxHQUFFLGVBQWMsSUFBRyxZQUFXLEdBQUUsTUFBSyxFQUFFLFdBQVMsSUFBRSxTQUFPLEVBQUM7QUFBRSx5QkFBUyxLQUFJO0FBQUMseUJBQU8sTUFBSSxJQUFFLEVBQUUsY0FBYyxFQUFDLGdCQUFlLEtBQUUsQ0FBQyxJQUFHO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxLQUFJO0FBQUMsb0JBQUUsVUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsR0FBRSxHQUFHO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxLQUFJO0FBQUMsd0JBQUksR0FBRyxPQUFPLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxLQUFJO0FBQUMsb0JBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLHVCQUFHLE9BQUssTUFBSSxLQUFHO0FBQUcsc0JBQUksS0FBRyxFQUFFLHFCQUFxQixHQUFFLElBQUcsTUFBSSxJQUFHLFFBQU8sQ0FBQztBQUFFLG9CQUFFLFNBQVMsR0FBRSxFQUFFLEdBQUUsRUFBRSxRQUFNLFlBQVUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxxQkFBRyxHQUFFLE9BQUssR0FBRyxFQUFFLEdBQUUsTUFBSSxDQUFDLEVBQUUsS0FBSyxHQUFHLGNBQWEsU0FBUyxJQUFHO0FBQUMsMkJBQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBRyxFQUFFLGtCQUFrQixFQUFFLE1BQUksQ0FBQyxHQUFHO0FBQUEsa0JBQUksQ0FBQyxNQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEdBQUcsRUFBRTtBQUFBLGdCQUFHO0FBQUMseUJBQVMsR0FBRyxJQUFHO0FBQUMsMEJBQU87QUFBQSx5QkFBUTtBQUFBLHlCQUFVO0FBQUEseUJBQWU7QUFBQSx5QkFBVTtBQUFBLHlCQUFZO0FBQWMsd0JBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUM7QUFBRTtBQUFBO0FBQWUsd0JBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUFFO0FBQUE7QUFBQSxnQkFBTztBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyx5QkFBSyxXQUFTLEtBQUcsSUFBRyxFQUFFLFNBQVMsR0FBRSxFQUFFLHdCQUF3QixHQUFFLElBQUcsR0FBRSxLQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUcsU0FBTyxNQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsR0FBRyxTQUFPLEdBQUcsU0FBUyxHQUFFLEVBQUUsc0JBQXNCLGNBQWMsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxXQUFTLElBQUUsYUFBVyxXQUFXLENBQUMsR0FBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLElBQUcsS0FBRyxHQUFHLHdCQUF3QixDQUFDLEdBQUUsSUFBRSxHQUFHLGFBQWEsR0FBRSxHQUFHLFNBQU8sS0FBRyxHQUFHLFdBQVMsS0FBRyxFQUFFLFdBQVMsTUFBSSxLQUFHLEdBQUcsR0FBRyx3QkFBd0IsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFHLGFBQWE7QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEdBQUcsSUFBRyxJQUFHO0FBQUMsc0JBQUksS0FBRyxFQUFFLGtCQUFrQixTQUFTLElBQUc7QUFBQyx3QkFBSSxLQUFHLEVBQUUsa0NBQWtDLElBQUcsSUFBRyxDQUFDO0FBQUUsdUJBQUcsRUFBRSxVQUFVLE9BQU0sSUFBRyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsa0JBQUMsQ0FBQztBQUFFLG9CQUFFLFNBQVMsR0FBRSxFQUFFO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUMsZ0JBQUUsa0RBQWdEO0FBQUUsdUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQU8sRUFBRSxTQUFPLFFBQUcsRUFBRSxRQUFRLEVBQUUsY0FBYSxTQUFTLEdBQUU7QUFBQyxzQkFBRyxFQUFFLFNBQU87QUFBSSwyQkFBTTtBQUFHLHNCQUFHLEVBQUUsU0FBTyxPQUFLLEVBQUUsU0FBTztBQUFJLDJCQUFNO0FBQUcsMkJBQVEsS0FBRyxFQUFFLFFBQU8sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEdBQUUsS0FBRyxHQUFHO0FBQU8sd0JBQUcsR0FBRyxTQUFPLE9BQUssR0FBRyxTQUFPO0FBQUksNkJBQU07QUFBRyx5QkFBTTtBQUFBLGdCQUFFLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQyxHQUFHLElBQUUsRUFBRSxrQkFBZ0IsRUFBRSxnQkFBYyxDQUFDLEVBQUU7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUksS0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLGtCQUFnQixFQUFFLEVBQUUsaUJBQWdCLEVBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLDBCQUEwQjtBQUFFLHVCQUFRLEtBQUs7QUFBRSxrQkFBRSxZQUFZLEdBQUUsQ0FBQyxLQUFHLEVBQUUsT0FBSyxXQUFTLEVBQUUsS0FBRyxFQUFFO0FBQUksdUJBQVEsSUFBRSxHQUFFLEtBQUcsRUFBRSxxQ0FBb0MsSUFBRSxHQUFHLFFBQU8sS0FBSTtBQUFDLG9CQUFJLElBQUUsR0FBRztBQUFHLGtCQUFFLEVBQUUsUUFBTSxFQUFFO0FBQUEsY0FBb0I7QUFBQyxnQkFBRSwwQkFBd0IsTUFBRyxFQUFFLHVCQUFxQjtBQUFHLGtCQUFJLElBQUUsRUFBRSxvQkFBb0IsQ0FBQyxHQUFFLElBQUUsRUFBQyxlQUFjLFNBQVMsR0FBRTtBQUFDLHVCQUFPLE1BQUksRUFBRSxjQUFjLENBQUMsSUFBRSxLQUFHO0FBQUEsY0FBTSxHQUFFLFdBQVUsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBRSxnQkFBZ0IsR0FBRSxNQUFNLEtBQUcsRUFBRSxNQUFNLFlBQVksSUFBRyxRQUFPLGlEQUFnRCxDQUFDLEdBQUUsS0FBRyxNQUFJLEVBQUUsTUFBTSxZQUFZLEdBQUUsUUFBTyxzQ0FBcUMsQ0FBQyxHQUFFLElBQUU7QUFBQSxjQUFFLEdBQUUsdUJBQXNCLFdBQVU7QUFBQyx1QkFBTTtBQUFBLGNBQVUsR0FBRSwyQkFBMEIsV0FBVTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxHQUFFLHNCQUFxQixTQUFTLEdBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUMsR0FBRSxxQkFBb0IsV0FBVTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxHQUFFLFlBQVcsV0FBVTtBQUFDLHVCQUFPO0FBQUEsY0FBQyxHQUFFLFlBQVcsU0FBUyxHQUFFO0FBQUMsdUJBQU8sTUFBSTtBQUFBLGNBQUMsR0FBRSxVQUFTLFdBQVU7QUFBQyx1QkFBTTtBQUFBLGNBQUUsR0FBRSxpQkFBZ0IsV0FBVTtBQUFDLHVCQUFNO0FBQUEsY0FBRSxHQUFFLGdCQUFlLFdBQVU7QUFBQyx1QkFBTSxDQUFDO0FBQUEsY0FBQyxFQUFDLEdBQUUsSUFBRSxFQUFFLGFBQVcsRUFBRSxtQkFBaUIsRUFBRSxnQkFBZ0IsTUFBSSxlQUFhLGNBQWEsS0FBRyxFQUFFLGlCQUFpQixHQUFFLEdBQUUsRUFBQyxpQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxHQUFFLG1CQUFrQixFQUFFLDRCQUE0QixFQUFFLE9BQU8sR0FBRSxJQUFHLEVBQUUsb0JBQW9CLEdBQUUsUUFBTyxHQUFFLENBQUMsR0FBRSw0QkFBMkIsRUFBRSw4QkFBOEIsQ0FBQyxFQUFDLENBQUM7QUFBRSxnQkFBRSxlQUFhLEdBQUcsYUFBVyxFQUFFLGFBQVksRUFBRSx3QkFBc0IsR0FBRyxzQkFBb0IsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUM7QUFBRyxrQkFBSSxHQUFFLElBQUcsSUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUUscUJBQU8sRUFBRSxzQkFBb0IsRUFBRSxTQUFTLElBQUcsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLEdBQUUsRUFBRSxTQUFTLElBQUcsRUFBRSxzQkFBc0IsQ0FBQyxJQUFHLEVBQUUsS0FBSyxRQUFPLFFBQU8sUUFBTyxRQUFPLEVBQUUsWUFBWSxHQUFFLE1BQUksU0FBTyxFQUFFLE1BQU0sS0FBSywwQkFBMEIsSUFBRSxFQUFDLFlBQVcsR0FBRSxhQUFZLElBQUcsZUFBYyxHQUFFO0FBQUEsWUFBQztBQUFDLGNBQUUsa0JBQWdCO0FBQUUscUJBQVMsRUFBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRSxFQUFDLGlCQUFnQixHQUFFLFVBQVMsSUFBRyxtQkFBa0IsQ0FBQyxDQUFDLEdBQUUsWUFBVyxFQUFDLENBQUM7QUFBRSxxQkFBTyxFQUFFLFNBQVMsR0FBRSxFQUFFLFdBQVcsR0FBRSxFQUFFO0FBQUEsWUFBVTtBQUFDLGNBQUUsWUFBVTtBQUFFLGdCQUFJO0FBQUUscUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxrQkFBRSxLQUFHLEVBQUUsT0FBTyxFQUFFLG9CQUFtQixTQUFTLEdBQUU7QUFBQyx1QkFBTyxPQUFPLEVBQUUsUUFBTSxZQUFVLENBQUMsRUFBRSxhQUFhLEVBQUUsTUFBSyxTQUFTLElBQUc7QUFBQyx5QkFBTyxPQUFPLE1BQUk7QUFBQSxnQkFBUSxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLHFCQUFxQixDQUFDO0FBQUUsdUJBQVEsS0FBRyxTQUFTLEdBQUU7QUFBQyxvQkFBRyxDQUFDLEVBQUUsWUFBWSxHQUFFLEVBQUUsSUFBSTtBQUFFLHlCQUFNO0FBQVcsb0JBQUksS0FBRyxFQUFFLEVBQUU7QUFBTSxrQkFBRSxTQUFTLEVBQUUsSUFBRSxFQUFFLEVBQUUsUUFBTSxFQUFFLHNCQUFzQixHQUFFLElBQUcsQ0FBQyxJQUFFLEVBQUUsYUFBYSxFQUFFLE1BQUssU0FBUyxHQUFFO0FBQUMseUJBQU8sTUFBSTtBQUFBLGdCQUFFLENBQUMsS0FBRyxFQUFFLEtBQUssRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLG9CQUFJLElBQUUsRUFBRTtBQUFHLG1CQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU87QUFBQSxZQUFDO0FBQUMsY0FBRSx1QkFBcUI7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsYUFBQyxTQUFTLEdBQUU7QUFBQyxrQkFBSTtBQUFFLGVBQUMsU0FBUyxHQUFFO0FBQUMsa0JBQUUsRUFBRSxpQkFBZSxLQUFHLGtCQUFpQixFQUFFLEVBQUUsa0JBQWdCLEtBQUcsbUJBQWtCLEVBQUUsRUFBRSxnQkFBYyxLQUFHLGlCQUFnQixFQUFFLEVBQUUsb0JBQWtCLEtBQUcscUJBQW9CLEVBQUUsRUFBRSw0QkFBMEIsS0FBRyw2QkFBNEIsRUFBRSxFQUFFLDRCQUEwQixLQUFHO0FBQUEsY0FBMkIsR0FBRyxJQUFFLEVBQUUsMEJBQXdCLEVBQUUsd0JBQXNCLENBQUMsRUFBRTtBQUFFLGtCQUFJLElBQUUsV0FBVTtBQUFDLHlCQUFTLEVBQUUsR0FBRSxJQUFHLEdBQUU7QUFBQyx1QkFBSyxhQUFXLEdBQUUsS0FBSyx3QkFBc0IsSUFBRyxLQUFLLFVBQVE7QUFBQSxnQkFBQztBQUFDLHVCQUFPLEVBQUUsVUFBVSxnQkFBYyxTQUFTLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFLLG1CQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDLEdBQUUsS0FBSyxxQkFBbUIsRUFBRSxNQUFNLGFBQWEsRUFBRSxHQUFFLEtBQUssZ0JBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQyxHQUFFLEtBQUssa0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUMsR0FBRSxLQUFLLGNBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQyxHQUFFLEtBQUssMkJBQXlCLFFBQU8sS0FBSyx3QkFBc0IsUUFBTyxLQUFLLHNCQUFvQixRQUFPLEtBQUssOEJBQTRCLFFBQU8sS0FBSywyQkFBeUI7QUFBQSxnQkFBTSxHQUFFLEVBQUUsVUFBVSwyQkFBeUIsV0FBVTtBQUFDLHlCQUFPLEtBQUssNkJBQTJCLFdBQVMsS0FBSywyQkFBeUIsS0FBSyxnQkFBZ0IsS0FBSyxXQUFXLElBQUcsS0FBSztBQUFBLGdCQUF3QixHQUFFLEVBQUUsVUFBVSx3QkFBc0IsV0FBVTtBQUFDLHlCQUFPLEtBQUssMEJBQXdCLFdBQVMsS0FBSyx3QkFBc0IsS0FBSyxnQkFBZ0IsS0FBSyxlQUFlLElBQUcsS0FBSztBQUFBLGdCQUFxQixHQUFFLEVBQUUsVUFBVSxzQkFBb0IsV0FBVTtBQUFDLHNCQUFHLEtBQUssd0JBQXNCLFFBQU87QUFBQyx3QkFBSSxJQUFFLEtBQUssV0FBVyw4QkFBOEIsS0FBSyxpQkFBaUIsR0FBRyxFQUFFLE1BQUssS0FBRyxLQUFLLFdBQVcsOEJBQThCLEtBQUssY0FBYyxHQUFHLEVBQUU7QUFBSyx5QkFBSyxzQkFBb0IsTUFBSTtBQUFBLGtCQUFFO0FBQUMseUJBQU8sS0FBSztBQUFBLGdCQUFtQixHQUFFLEVBQUUsVUFBVSw4QkFBNEIsV0FBVTtBQUFDLHlCQUFPLEtBQUssZ0NBQThCLFdBQVMsS0FBSyw4QkFBNEIsS0FBSyxpQkFBaUIsS0FBSyxXQUFXLElBQUcsS0FBSztBQUFBLGdCQUEyQixHQUFFLEVBQUUsVUFBVSwyQkFBeUIsV0FBVTtBQUFDLHlCQUFPLEtBQUssNkJBQTJCLFdBQVMsS0FBSywyQkFBeUIsS0FBSyxpQkFBaUIsS0FBSyxlQUFlLElBQUcsS0FBSztBQUFBLGdCQUF3QixHQUFFLEVBQUUsVUFBVSxrQkFBZ0IsU0FBUyxHQUFFO0FBQUMsc0JBQUksS0FBRyxLQUFLLFdBQVcsOEJBQThCLEVBQUUsU0FBUyxLQUFLLFVBQVUsQ0FBQyxFQUFFLE1BQUssSUFBRSxLQUFLLFdBQVcsOEJBQThCLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFBSyx5QkFBTyxPQUFLO0FBQUEsZ0JBQUMsR0FBRSxFQUFFLFVBQVUsbUJBQWlCLFNBQVMsR0FBRTtBQUFDLHNCQUFJLEtBQUcsRUFBRSxnQkFBZ0IsR0FBRSxJQUFHLEtBQUssVUFBVSxHQUFFLElBQUUsRUFBRSxnQkFBZ0IsR0FBRSxJQUFHLEtBQUssVUFBVTtBQUFFLHNCQUFHLE1BQUksR0FBRTtBQUFDLHdCQUFJLElBQUUsS0FBSyxXQUFXLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxFQUFFLE1BQUssSUFBRSxLQUFLLFdBQVcsOEJBQThCLEVBQUUsU0FBUyxLQUFLLFVBQVUsQ0FBQyxFQUFFO0FBQUssMkJBQU8sTUFBSTtBQUFBLGtCQUFDO0FBQUMseUJBQU07QUFBQSxnQkFBRSxHQUFFO0FBQUEsY0FBQyxFQUFFO0FBQUUsZ0JBQUUsb0JBQWtCO0FBQUEsWUFBQyxHQUFHLElBQUUsRUFBRSxlQUFhLEVBQUUsYUFBVyxDQUFDLEVBQUU7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsYUFBQyxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsY0FBYyxJQUFHLE9BQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxjQUFjLElBQUcsT0FBRyxDQUFDLEdBQUU7QUFBRSxlQUFDLFNBQVMsSUFBRztBQUFDLG1CQUFHLEdBQUcsT0FBSyxLQUFHLFFBQU8sR0FBRyxHQUFHLHlCQUF1QixLQUFHLDBCQUF5QixHQUFHLEdBQUcsbUJBQWlCLEtBQUcsb0JBQW1CLEdBQUcsR0FBRyxzQkFBb0IsS0FBRyx1QkFBc0IsR0FBRyxHQUFHLHNCQUFvQixLQUFHLHVCQUFzQixHQUFHLEdBQUcsZ0JBQWMsS0FBRyxpQkFBZ0IsR0FBRyxHQUFHLDBCQUF3QixLQUFHO0FBQUEsY0FBeUIsR0FBRyxNQUFJLElBQUUsQ0FBQyxFQUFFO0FBQUUsdUJBQVMsRUFBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBSSxLQUFHLE1BQUksSUFBRSxJQUFFO0FBQUUsbUJBQUcsUUFBUSxFQUFFLEdBQUUsR0FBRyxXQUFXLENBQUM7QUFBRSxvQkFBSSxJQUFFLE1BQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUcsRUFBRSxFQUFDLFNBQVEsR0FBRSxlQUFjLEdBQUUsbUJBQWtCLEdBQUUsV0FBVSxHQUFFLFNBQVEsR0FBRSx5QkFBd0IsV0FBVTtBQUFDLHlCQUFPO0FBQUEsZ0JBQUMsR0FBRSw4QkFBNkIsV0FBVTtBQUFDLHlCQUFPO0FBQUEsZ0JBQUMsR0FBRSxhQUFZLEdBQUUsZUFBYyxHQUFFLGFBQVksV0FBVTtBQUFDLHNCQUFJO0FBQUUsMEJBQU8sSUFBRSxLQUFHLE9BQUssU0FBTyxFQUFFLE1BQU0sU0FBTyxRQUFNLE1BQUksU0FBTyxJQUFFLEdBQUcsWUFBWTtBQUFBLGdCQUFDLEVBQUMsQ0FBQztBQUFFLHVCQUFPLElBQUUsUUFBTyxHQUFHLFFBQVEsTUFBTSxHQUFFO0FBQUcseUJBQVMsSUFBRztBQUFDLHNCQUFFO0FBQU8sc0JBQUksSUFBRSxHQUFHLFlBQVksTUFBSTtBQUFFLHNCQUFFLElBQUUsQ0FBQyxDQUFDLEtBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFPLElBQUUsR0FBRyxLQUFLLEdBQUUsSUFBRSxRQUFPLElBQUU7QUFBTywyQkFBUSxJQUFFLEdBQUcsWUFBWSxHQUFFLElBQUUsS0FBRztBQUFDLHdCQUFJLElBQUUsR0FBRyxTQUFTO0FBQUUsd0JBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQztBQUFFO0FBQU0sdUJBQUcsS0FBSztBQUFFLHdCQUFJLElBQUUsRUFBQyxLQUFJLEdBQUUsS0FBSSxHQUFHLFlBQVksR0FBRSxNQUFLLEVBQUM7QUFBRSx3QkFBRSxHQUFHLFlBQVksR0FBRSxJQUFFLEVBQUUsT0FBTyxHQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLHNCQUFFLEdBQUcsWUFBWTtBQUFBLGdCQUFDO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsMEJBQU8sRUFBRTtBQUFBLHlCQUFXO0FBQUEseUJBQVE7QUFBQSx5QkFBUTtBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBRyw2QkFBTTtBQUFBO0FBQUcseUJBQU07QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHNCQUFHLEVBQUU7QUFBTyw0QkFBTyxFQUFFLE9BQU87QUFBQSwyQkFBVztBQUFBLDJCQUFTO0FBQUEsMkJBQVM7QUFBQSwyQkFBUztBQUFJLCtCQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksS0FBRyxFQUFFLFNBQU87QUFBQTtBQUFHLHlCQUFNO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyx5QkFBTyxFQUFFLFVBQVUsQ0FBQztBQUFBLGdCQUFDO0FBQUMseUJBQVMsR0FBRyxHQUFFO0FBQUMseUJBQU8sRUFBRSxTQUFPO0FBQUEsZ0JBQUU7QUFBQyx5QkFBUyxHQUFHLEdBQUU7QUFBQyx5QkFBTyxFQUFFLFNBQU8sTUFBSSxFQUFFLFNBQU87QUFBQSxnQkFBRTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHlCQUFPLEVBQUUsVUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLEtBQUcsRUFBRSxPQUFPLGdCQUFjO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyx5QkFBTyxNQUFJLE1BQUksTUFBSTtBQUFBLGdCQUFFO0FBQUMseUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUUsTUFBTSxPQUFPLEVBQUUsQ0FBQztBQUFFLHNCQUFJLElBQUUsRUFBRSxDQUFDLElBQUUsSUFBRSxHQUFHLENBQUMsSUFBRSxJQUFFLEdBQUcsQ0FBQyxJQUFFLElBQUUsRUFBRSxDQUFDLElBQUUsSUFBRSxHQUFHLENBQUMsSUFBRSxJQUFFLEVBQUUsQ0FBQyxJQUFFLElBQUU7QUFBRSxzQkFBRyxLQUFHLE1BQUk7QUFBRywyQkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFFLHFCQUFHLFlBQVksTUFBSSxNQUFJLEVBQUUsTUFBTSxPQUFPLE1BQUksTUFBTSxHQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUUsR0FBRyxLQUFLO0FBQUcsc0JBQUksSUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSx3QkFBd0IsR0FBRyxZQUFZLEdBQUUsR0FBRyxXQUFXLEdBQUUsQ0FBQztBQUFFLHVCQUFJLE1BQUksSUFBRSxTQUFRLEdBQUcsWUFBWSxJQUFFLE1BQUksSUFBRSxHQUFHLEtBQUssR0FBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBSTtBQUFDLHdCQUFJLElBQUUsRUFBRSx3QkFBd0IsR0FBRyxZQUFZLEdBQUUsR0FBRyxXQUFXLEdBQUUsQ0FBQztBQUFFLHdCQUFHLE1BQUksSUFBRSxDQUFDLElBQUcsRUFBRSxLQUFLLENBQUMsR0FBRSxNQUFJLEdBQUU7QUFBQyx5QkFBRyxLQUFLO0FBQUU7QUFBQSxvQkFBSztBQUFBLGtCQUFDO0FBQUMseUJBQU8sSUFBRSxFQUFDLGVBQWMsR0FBRSxnQkFBZSxHQUFFLE9BQU0sRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRyxTQUFTO0FBQUUsMEJBQU8sS0FBRyxHQUFFO0FBQUEseUJBQVE7QUFBRSwwQkFBRyxNQUFJLElBQUc7QUFBQyw2QkFBRztBQUFFLDRCQUFJLElBQUUsR0FBRyxtQkFBbUI7QUFBRSwrQkFBTyxFQUFFLE1BQU0sT0FBTyxFQUFFLFNBQU8sQ0FBQyxHQUFFO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQyw2QkFBRztBQUFFLDRCQUFJLElBQUUsR0FBRyxpQkFBaUI7QUFBRSwrQkFBTyxFQUFFLE1BQU0sT0FBTyxFQUFFLFNBQU8sQ0FBQyxHQUFFO0FBQUEsc0JBQUM7QUFBQztBQUFBLHlCQUFXO0FBQUUsMEJBQUcsTUFBSTtBQUFHLCtCQUFPLEtBQUcsR0FBRSxHQUFHLG9CQUFvQixLQUFFO0FBQUU7QUFBQSx5QkFBVztBQUFFLDZCQUFPLEtBQUcsR0FBRSxHQUFHLGtCQUFrQjtBQUFBLHlCQUFPO0FBQUUsNkJBQU8sS0FBRyxHQUFFLEdBQUcsZUFBZSxLQUFFO0FBQUEseUJBQU87QUFBRSw2QkFBTyxLQUFHLEdBQUUsR0FBRyx3QkFBd0I7QUFBQSx5QkFBTztBQUFFO0FBQUE7QUFBYyx3QkFBRSxNQUFNLFlBQVksQ0FBQztBQUFBO0FBQUUseUJBQU87QUFBQSxnQkFBQztBQUFDLHlCQUFTLElBQUc7QUFBQyx5QkFBTyxFQUFFLE1BQU0sT0FBTyxFQUFFLENBQUMsR0FBRSxFQUFFLHdCQUF3QixHQUFHLFlBQVksR0FBRSxHQUFHLFdBQVcsR0FBRSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxJQUFHO0FBQUMsc0JBQUksSUFBRSxJQUFFLEVBQUUsTUFBTSxPQUFLLEdBQUcsU0FBUztBQUFFLHlCQUFPLE1BQUksS0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxJQUFHO0FBQUMsc0JBQUksSUFBRSxJQUFFLEVBQUUsTUFBTSxPQUFLLEdBQUcsU0FBUztBQUFFLHlCQUFPLE1BQUk7QUFBQSxnQkFBQztBQUFDLHlCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMseUJBQU8sRUFBRSxRQUFRLENBQUMsS0FBRyxFQUFFLE1BQU0sU0FBTyxFQUFFLFNBQU8sRUFBRSxNQUFNLE9BQUssRUFBRSxPQUFNO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBRyxXQUFXLEVBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxZQUFZLEdBQUUsS0FBRyxRQUFPLElBQUUsUUFBTyxJQUFFLE9BQUcsSUFBRSxRQUFPLElBQUU7QUFBQSxnQkFBTTtBQUFDLHlCQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFHLFdBQVcsRUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLFlBQVksR0FBRSxLQUFHLFFBQU8sSUFBRSxRQUFPLElBQUUsT0FBRyxJQUFFLFFBQU8sSUFBRTtBQUFBLGdCQUFNO0FBQUEsY0FBQztBQUFDLGdCQUFFLHVCQUFxQjtBQUFBLFlBQUMsR0FBRyxJQUFFLEVBQUUsZUFBYSxFQUFFLGFBQVcsQ0FBQyxFQUFFO0FBQUEsVUFBQyxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBRSxjQUFJO0FBQUcsV0FBQyxTQUFTLEdBQUU7QUFBQyxnQkFBSTtBQUFFLGFBQUMsU0FBUyxHQUFFO0FBQUMsZ0JBQUUsYUFBVyxFQUFFO0FBQVcsa0JBQUk7QUFBRSxlQUFDLFNBQVMsR0FBRTtBQUFDLGtCQUFFLEVBQUUsNkJBQTJCLEtBQUcsOEJBQTZCLEVBQUUsRUFBRSw2QkFBMkIsS0FBRyw4QkFBNkIsRUFBRSxFQUFFLGNBQVksS0FBRyxlQUFjLEVBQUUsRUFBRSxnQkFBYyxLQUFHLGlCQUFnQixFQUFFLEVBQUUsY0FBWSxNQUFJLGVBQWMsRUFBRSxFQUFFLGNBQVksTUFBSSxlQUFjLEVBQUUsRUFBRSwwQkFBd0IsTUFBSSwyQkFBMEIsRUFBRSxFQUFFLGFBQVcsS0FBRyxjQUFhLEVBQUUsRUFBRSxvQkFBa0IsTUFBSSxxQkFBb0IsRUFBRSxFQUFFLG9CQUFrQixNQUFJO0FBQUEsY0FBbUIsR0FBRyxJQUFFLEVBQUUsZUFBYSxFQUFFLGFBQVcsQ0FBQyxFQUFFO0FBQUUsa0JBQUk7QUFBRSxlQUFDLFNBQVMsR0FBRTtBQUFDLGtCQUFFLEVBQUUsT0FBSyxLQUFHLFFBQU8sRUFBRSxFQUFFLG9CQUFrQixLQUFHO0FBQUEsY0FBbUIsR0FBRyxJQUFFLEVBQUUsY0FBWSxFQUFFLFlBQVUsQ0FBQyxFQUFFO0FBQUEsWUFBQyxHQUFHLElBQUUsRUFBRSxlQUFhLEVBQUUsYUFBVyxDQUFDLEVBQUU7QUFBQSxVQUFDLEdBQUcsT0FBSyxLQUFHLENBQUMsRUFBRTtBQUFFLGNBQUk7QUFBRyxXQUFDLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsYUFBQyxTQUFTLEdBQUU7QUFBQyx1QkFBUyxJQUFHO0FBQUMseUJBQVEsS0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFFLEtBQUcsS0FBSTtBQUFJLHdCQUFJLEtBQUcsR0FBRyxLQUFLLENBQUM7QUFBRSx5QkFBUyxLQUFJO0FBQUMsMkJBQVEsS0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFFLEtBQUcsVUFBVSxRQUFPO0FBQUssdUJBQUcsTUFBSSxVQUFVO0FBQUkseUJBQU0sRUFBQyxRQUFPLEdBQUcsT0FBTyxTQUFTLElBQUc7QUFBQywyQkFBTSxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUc7QUFBQyw2QkFBTyxPQUFLO0FBQUEsb0JBQUUsQ0FBQztBQUFBLGtCQUFDLENBQUMsR0FBRSxZQUFXLE1BQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFJLEtBQUcsRUFBQyxRQUFPLElBQUcsWUFBVyxNQUFFLEdBQUUsS0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsSUFBRyxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsS0FBSSxLQUFJLEtBQUksS0FBSSxHQUFHLEdBQUUsS0FBRyxDQUFDLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLENBQUMsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxDQUFDLElBQUcsSUFBRyxLQUFJLEdBQUcsR0FBRSxLQUFHLENBQUMsSUFBRyxJQUFHLElBQUcsR0FBRyxHQUFFLEtBQUcsQ0FBQyxJQUFHLElBQUcsS0FBSSxHQUFHLEdBQUUsS0FBRyxDQUFDLElBQUcsSUFBRyxJQUFHLEdBQUcsR0FBRSxLQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxHQUFFLEVBQUUsY0FBYSxJQUFFLEdBQUUsS0FBRyxJQUFHLEtBQUcsRUFBRSxDQUFDLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRyxDQUFDLEdBQUUsS0FBRyxFQUFFLENBQUMsSUFBRyxHQUFFLElBQUcsS0FBSSxJQUFHLEVBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxFQUFFLHVCQUFzQixJQUFHLElBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxFQUFFLDBCQUF5QixHQUFFLElBQUcsRUFBRSxZQUFXLENBQUMsR0FBRSxFQUFFLHVCQUFzQixJQUFHLElBQUcsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLG1CQUFrQixJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSw2QkFBNEIsSUFBRyxJQUFHLENBQUMsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSwrQ0FBOEMsSUFBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsNEJBQTJCLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxvQkFBbUIsSUFBRyxDQUFDLElBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLG1CQUFrQixDQUFDLElBQUcsRUFBRSxHQUFFLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUseUNBQXdDLEtBQUksSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLG1DQUFrQyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSx5Q0FBd0MsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLHlDQUF3QyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsMkNBQTBDLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLDJDQUEwQyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSw0Q0FBMkMsSUFBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0NBQXVDLElBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLDJDQUEwQyxJQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxpREFBZ0QsSUFBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsOENBQTZDLElBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLGdEQUErQyxJQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSwwQkFBeUIsSUFBRyxDQUFDLElBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLHlDQUF3QyxJQUFHLElBQUcsQ0FBQyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0JBQXVCLElBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxpQ0FBZ0MsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLGtDQUFpQyxJQUFHLEtBQUksQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsb0NBQW1DLElBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLHFDQUFvQyxJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0NBQXVDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSx3Q0FBdUMsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLGdDQUErQixJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsdUNBQXNDLElBQUcsSUFBRyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSw0QkFBMkIsQ0FBQyxLQUFJLEdBQUcsR0FBRSxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHFDQUFvQyxLQUFJLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSwwQ0FBeUMsQ0FBQyxLQUFJLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsb0NBQW1DLEtBQUksSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSw2QkFBNEIsQ0FBQyxLQUFJLEtBQUksS0FBSSxJQUFHLEtBQUksS0FBSSxHQUFHLEdBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSwyQ0FBMEMsQ0FBQyxLQUFJLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsb0NBQW1DLElBQUcsSUFBRyxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsb0NBQW1DLElBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLG1DQUFrQyxJQUFHLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSwwQkFBeUIsS0FBSSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsaUNBQWdDLEtBQUksSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHVDQUFzQyxLQUFJLENBQUMsSUFBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsc0NBQXFDLENBQUMsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSwyQkFBMEIsSUFBRyxJQUFHLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsdUNBQXNDLElBQUcsSUFBRyxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLG9EQUFtRCxJQUFHLElBQUcsQ0FBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxvQ0FBbUMsSUFBRyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsbUNBQWtDLElBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLDRCQUEyQixDQUFDLEtBQUksR0FBRyxHQUFFLElBQUcsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsdUNBQXNDLENBQUMsS0FBSSxJQUFHLEtBQUksSUFBRyxJQUFHLElBQUcsSUFBRyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxHQUFHLEdBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSx3Q0FBdUMsSUFBRyxDQUFDLElBQUcsS0FBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0JBQXVCLElBQUcsSUFBRyxDQUFDLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxvQkFBbUIsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLG1CQUFrQixJQUFHLElBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0JBQXVCLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxrQ0FBaUMsSUFBRyxDQUFDLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsNkNBQTRDLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLG1DQUFrQyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSw2Q0FBNEMsSUFBRyxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsa0NBQWlDLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLG9DQUFtQyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxtQ0FBa0MsSUFBRyxDQUFDLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsaUJBQWdCLENBQUMsSUFBRyxFQUFFLEdBQUUsSUFBRyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxrQkFBaUIsSUFBRyxJQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLHVCQUFzQixJQUFHLENBQUMsS0FBSSxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLElBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLHlDQUF3QyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxnREFBK0MsS0FBSSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsd0NBQXVDLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxLQUFHLENBQUMsRUFBRSx5QkFBd0IsS0FBSSxJQUFHLENBQUMsRUFBRSw2QkFBNkIsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsMkJBQTBCLEtBQUksSUFBRyxDQUFDLEVBQUUsNkJBQTZCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLG1CQUFrQixJQUFHLElBQUcsQ0FBQyxFQUFFLGdDQUFnQyxHQUFFLEdBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxxQkFBb0IsSUFBRyxJQUFHLENBQUMsRUFBRSxnQ0FBZ0MsR0FBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxzQ0FBcUMsQ0FBQyxJQUFHLEVBQUUsR0FBRSxJQUFHLENBQUMsRUFBRSxzREFBc0QsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0NBQXVDLENBQUMsSUFBRyxFQUFFLEdBQUUsSUFBRyxDQUFDLEVBQUUsc0RBQXNELEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLDhCQUE2QixJQUFHLElBQUcsQ0FBQyxFQUFFLGlEQUFpRCxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxnQ0FBK0IsSUFBRyxJQUFHLENBQUMsRUFBRSxpREFBaUQsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsdUJBQXNCLElBQUcsSUFBRyxDQUFDLEVBQUUsNERBQTRELEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHlCQUF3QixJQUFHLElBQUcsQ0FBQyxFQUFFLDREQUE0RCxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSwwQkFBeUIsSUFBRyxJQUFHLENBQUMsRUFBRSw0REFBNEQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0JBQXVCLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSx5QkFBd0IsSUFBRyxJQUFHLENBQUMsRUFBRSw0REFBNEQsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsMkJBQTBCLElBQUcsSUFBRyxDQUFDLEVBQUUsNERBQTRELEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLHlCQUF3QixJQUFHLElBQUcsQ0FBQyxFQUFFLHlEQUF5RCxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSwyQkFBMEIsSUFBRyxJQUFHLENBQUMsRUFBRSx5REFBeUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsMEJBQXlCLElBQUcsSUFBRyxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSwyQkFBMEIsSUFBRyxJQUFHLENBQUMsRUFBRSx5REFBeUQsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsNkJBQTRCLElBQUcsSUFBRyxDQUFDLEVBQUUseURBQXlELEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLHVCQUFzQixJQUFHLElBQUcsQ0FBQyxFQUFFLHVEQUF1RCxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSx5QkFBd0IsSUFBRyxJQUFHLENBQUMsRUFBRSx1REFBdUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsb0NBQW1DLElBQUcsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFFLHlCQUF3QixJQUFHLElBQUcsQ0FBQyxFQUFFLHVEQUF1RCxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSwyQkFBMEIsSUFBRyxJQUFHLENBQUMsRUFBRSx1REFBdUQsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsa0NBQWlDLElBQUcsSUFBRyxDQUFDLEVBQUUsb0RBQW9ELENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxvQ0FBbUMsSUFBRyxJQUFHLENBQUMsRUFBRSxvREFBb0QsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsbUNBQWtDLENBQUMsSUFBRyxFQUFFLEdBQUUsSUFBRyxDQUFDLEVBQUUsNkRBQTZELEdBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsb0NBQW1DLElBQUcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsNkRBQTZELEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHFDQUFvQyxDQUFDLElBQUcsRUFBRSxHQUFFLElBQUcsQ0FBQyxFQUFFLDZEQUE2RCxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLHNDQUFxQyxJQUFHLENBQUMsSUFBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLDZEQUE2RCxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBRSxzQ0FBcUMsSUFBRyxJQUFHLENBQUMsRUFBRSw0REFBNEQsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSx3Q0FBdUMsSUFBRyxJQUFHLENBQUMsRUFBRSw0REFBNEQsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSx3Q0FBdUMsSUFBRyxJQUFHLENBQUMsRUFBRSw0REFBNEQsR0FBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSwwQ0FBeUMsSUFBRyxJQUFHLENBQUMsRUFBRSw0REFBNEQsR0FBRSxHQUFFLEVB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LElBQUUsS0FBRyxHQUFHLFNBQU8sR0FBRSxLQUFHLEdBQUcsT0FBTyxJQUFHLEdBQUcsTUFBTSxNQUFJLEtBQUcsR0FBRyxTQUFPO0FBQUUsdUJBQUcsS0FBSyxFQUFDLFNBQVEsSUFBRyxNQUFLLEVBQUMsUUFBTyxHQUFHLFFBQU8sT0FBTSxLQUFHLEdBQUUsRUFBQyxDQUFDO0FBQUEsa0JBQUM7QUFBQyx1QkFBTztBQUFBLGNBQUU7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxxQkFBcUIsRUFBRSxHQUFFLEtBQUcsR0FBRyxJQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsV0FBVSxLQUFHLEdBQUc7QUFBUyx1QkFBTyxPQUFLLE1BQUksR0FBRyxRQUFNLEdBQUcsTUFBSSxHQUFHLElBQUcsSUFBRyxJQUFFLElBQUUsR0FBRyxJQUFHLElBQUcsSUFBRTtBQUFBLGNBQUM7QUFBQyx1QkFBUyxHQUFHLElBQUcsSUFBRztBQUFDLG9CQUFJLEtBQUcsR0FBRyxxQkFBcUIsRUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRztBQUFJLHVCQUFLLE9BQUssTUFBSSxFQUFFLG1CQUFtQixJQUFHLEVBQUUsSUFBRSxJQUFFO0FBQUcseUJBQVEsS0FBRyxJQUFHLE1BQUksSUFBRyxNQUFLO0FBQUMsc0JBQUksS0FBRyxFQUFFLFlBQVksSUFBRyxFQUFFO0FBQUUsc0JBQUcsSUFBRztBQUFDLDRCQUFPLEdBQUc7QUFBQSwyQkFBVztBQUFFLDJCQUFHLEtBQUssTUFBTSxJQUFHLEdBQUcsSUFBRyxFQUFDLEtBQUksR0FBRyxLQUFJLEtBQUksR0FBRyxNQUFJLEVBQUMsR0FBRSxLQUFFLENBQUM7QUFBRTtBQUFBLDJCQUFXO0FBQUUsMkJBQUcsS0FBSyxNQUFNLElBQUcsR0FBRyxJQUFHLEVBQUMsS0FBSSxHQUFHLEtBQUksS0FBSSxHQUFHLE1BQUksRUFBQyxHQUFFLEtBQUUsQ0FBQztBQUFBO0FBQUUseUJBQUcsR0FBRyxNQUFJO0FBQUEs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QUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxFQUFFLFVBQVU7QUFBQSwyQkFBTztBQUFJLCtCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSwyQkFBTztBQUFJLCtCQUFPLEVBQUUsRUFBRSxTQUFTO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFBQSwyQkFBTztBQUFJLCtCQUFPLEVBQUUsR0FBRSxFQUFFLFVBQVU7QUFBQSwyQkFBTztBQUFJLCtCQUFPLEVBQUUsRUFBRSxTQUFTO0FBQUEsMkJBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxFQUFFLEtBQUs7QUFBQSwyQkFBTztBQUFJLCtCQUFPLEVBQUUsQ0FBQztBQUFBLDJCQUFPO0FBQUksK0JBQU8sRUFBRSxHQUFFLEVBQUUsVUFBVTtBQUFBLDJCQUFPO0FBQUksK0JBQU8sRUFBRSxDQUFDO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsMkJBQU87QUFBQSwyQkFBUztBQUFJLCtCQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUU7QUFBQSwyQkFBTztBQUFJLCtCQUFPLEVBQUUsRUFBRSxRQUFRO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFFLEdBQUUsRUFBRSxVQUFVO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFFLEdBQUUsRUFBRSxlQUFlO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFFLEdBQUUsRUFBRSxlQUFlO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFFLEdBQUUsRUFBRSxlQUFlO0FBQUEsMkJBQU87QUFBSSw0QkFBRyxFQUFFLHVCQUF1QixDQUFDLE1BQUk7QUFBRTtBQUFBLDJCQUFZO0FBQUEsMkJBQVM7QUFBQSwyQkFBUztBQUFBLDJCQUFTO0FBQUksK0JBQU8sRUFBRSxDQUFDO0FBQUEsMkJBQU87QUFBSSwrQkFBTyxFQUFF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LEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx1QkFBc0IsQ0FBQyxHQUFFLEVBQUUsc0NBQW9DLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsc0NBQW9DLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUseUJBQXVCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx3QkFBdUIsQ0FBQyxHQUFFLEVBQUUseUJBQXVCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx3QkFBdUIsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsMEJBQTBCLFFBQU8sR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSwwQkFBMEIsR0FBRSxFQUFFLFdBQVUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsd0JBQXNCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx1QkFBc0IsQ0FBQyxHQUFFLEVBQUUsd0JBQXNCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx1QkFBc0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUseUJBQXVCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx3QkFBdUIsQ0FBQyxHQUFFLEVBQUUseUJBQXVCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx3QkFBdUIsQ0FBQyxHQUFFLEVBQUUscUJBQW1CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxvQkFBbUIsQ0FBQyxHQUFFLEVBQUUscUJBQW1CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxvQkFBbUIsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsNkJBQTJCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw0QkFBMkIsQ0FBQyxHQUFFLEVBQUUsNkJBQTJCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw0QkFBMkIsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwyQkFBMEIsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwyQkFBMEIsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUscUJBQW1CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxvQkFBbUIsQ0FBQyxHQUFFLEVBQUUseUJBQXVCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx3QkFBdUIsQ0FBQyxHQUFFLEVBQUUsOEJBQTRCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw2QkFBNEIsQ0FBQyxHQUFFLEVBQUUsOEJBQTRCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw2QkFBNEIsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUsd0JBQXNCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx1QkFBc0IsQ0FBQyxHQUFFLEVBQUUsd0JBQXNCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx1QkFBc0IsQ0FBQyxHQUFFLEVBQUUsNkJBQTJCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw0QkFBMkIsQ0FBQyxHQUFFLEVBQUUsNkJBQTJCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw0QkFBMkIsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwyQkFBMEIsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwyQkFBMEIsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUscUJBQW1CLEVBQUUsTUFBTSxVQUFV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LDBCQUF3QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEseUJBQXdCLENBQUMsR0FBRSxFQUFFLDBCQUF3QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEseUJBQXdCLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLGdDQUE4QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsK0JBQThCLENBQUMsR0FBRSxFQUFFLGdDQUE4QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsK0JBQThCLENBQUMsR0FBRSxFQUFFLDRCQUEwQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsMkJBQTBCLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLHVCQUFxQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsc0JBQXFCLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLDBCQUF3QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEseUJBQXdCLENBQUMsR0FBRSxFQUFFLHNCQUFvQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEscUJBQW9CLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLHFCQUFtQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsb0JBQW1CLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLHVCQUFxQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsc0JBQXFCLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLDJCQUF5QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsMEJBQXlCLENBQUMsR0FBRSxFQUFFLHVCQUFxQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsc0JBQXFCLENBQUMsR0FBRSxFQUFFLHVCQUFxQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsc0JBQXFCLENBQUMsR0FBRSxFQUFFLHdCQUFzQixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUJBQXNCLENBQUMsR0FBRSxFQUFFLDBCQUF3QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEseUJBQXdCLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsd0JBQXVCLENBQUMsR0FBRSxFQUFFLGlCQUFlLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx1QkFBc0IsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQkFBaUIsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQkFBaUIsQ0FBQyxHQUFFLEVBQUUsOEJBQTRCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw2QkFBNEIsQ0FBQyxHQUFFLEVBQUUsOEJBQTRCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw2QkFBNEIsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx5QkFBd0IsQ0FBQyxHQUFFLEVBQUUsb0JBQWtCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxtQkFBa0IsQ0FBQyxHQUFFLEVBQUUsZ0JBQWMsRUFBRSxNQUFNLFVBQVUsRUFBRSxRQUFRLGVBQWMsQ0FBQyxHQUFFLEVBQUUsZ0JBQWMsRUFBRSxNQUFNLFVBQVUsRUFBRSxRQUFRLGVBQWMsQ0FBQyxHQUFFLEVBQUUsMkJBQXlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwwQkFBeUIsQ0FBQyxHQUFFLEVBQUUsOEJBQTRCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSw2QkFBNEIsQ0FBQyxHQUFFLEVBQUUsb0JBQWtCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxtQkFBa0IsQ0FBQyxHQUFFLEVBQUUscUJBQW1CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxvQkFBbUIsQ0FBQyxHQUFFLEVBQUUscUJBQW1CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxvQkFBbUIsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsMkJBQXlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwwQkFBeUIsQ0FBQyxHQUFFLEVBQUUsMkJBQXlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwwQkFBeUIsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQkFBaUIsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQkFBaUIsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxxQkFBb0IsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxzQkFBcUIsQ0FBQyxHQUFFLEVBQUUsb0JBQWtCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxtQkFBa0IsQ0FBQyxHQUFFLEVBQUUsb0JBQWtCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxtQkFBa0IsQ0FBQyxHQUFFLEVBQUUsMkJBQXlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwwQkFBeUIsQ0FBQyxHQUFFLEVBQUUsMkJBQXlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwwQkFBeUIsQ0FBQyxHQUFFLEVBQUUsb0NBQWtDLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxtQ0FBa0MsQ0FBQyxHQUFFLEVBQUUsb0NBQWtDLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxtQ0FBa0MsQ0FBQyxHQUFFLEVBQUUseUJBQXVCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx3QkFBdUIsQ0FBQyxHQUFFLEVBQUUseUJBQXVCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSx3QkFBdUIsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQkFBaUIsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQkFBaUIsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQkFBaUIsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwyQkFBMEIsQ0FBQyxHQUFFLEVBQUUsbUNBQWlDLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQ0FBaUMsQ0FBQyxHQUFFLEVBQUUsbUNBQWlDLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxrQ0FBaUMsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwyQkFBMEIsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSwyQkFBMEIsQ0FBQyxHQUFFLEVBQUUsZUFBYSxFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsY0FBYSxDQUFDLEdBQUUsRUFBRSxlQUFhLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxjQUFhLENBQUMsR0FBRSxFQUFFLDZDQUEyQyxFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsNENBQTJDLENBQUMsR0FBRSxFQUFFLHdDQUFzQyxFQUFFLE1BQU0sVUFBVSxFQUFFLFFBQVEsdUNBQXNDLENBQUMsR0FBRSxFQUFFLGlCQUFlLEVBQUUsTUFBTSxVQUFVLEVBQUUsUUFBUSxnQkFBZSxDQUFDLEdBQUUsRUFBRSxzQkFBb0IsRUFBRSxNQUFNLFVBQVUsRUFBRSxRQUFRLHFCQUFvQixDQUFDLEdBQUUsRUFBRSw2QkFBMkIsRUFBRSxNQUFNLFVBQVUsRUFBRSxRQUFRLDRCQUEyQixDQUFDLEdBQUUsRUFBRSx3QkFBc0IsRUFBRSxNQUFNLFVBQVUsRUFBRSxRQUFRLHVCQUFzQixDQUFDLEdBQUUsRUFBRSx3QkFBc0IsRUFBRSxNQUFNLFVBQVUsRUFBRSxRQUFRLHVCQUFzQixDQUFDLEdBQUUsRUFBRSxjQUFZLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxZQUFZLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxpQkFBaUIsR0FBRSxRQUFPLE1BQU07QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUscUJBQW1CLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxtQkFBbUIsR0FBRSxNQUFNO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLDBCQUF3QixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsd0JBQXdCLEdBQUUsTUFBTTtBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSw2QkFBMkIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRLGlCQUFpQixHQUFFLEVBQUU7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxpQkFBaUIsR0FBRSxFQUFFO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHVCQUFxQixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEscUJBQXFCLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRLHdCQUF3QixRQUFPLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSwwQkFBd0IsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSx3QkFBd0IsR0FBRSxRQUFPLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxnQkFBYyxFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUU7QUFBQyxxQkFBTyxPQUFPLEtBQUcsV0FBUyxFQUFFLFFBQVEscUJBQXFCLENBQUMsSUFBRSxPQUFPLEtBQUcsWUFBVSxpQkFBZ0IsSUFBRSxFQUFFLFFBQVEsb0JBQW9CLENBQUMsSUFBRSxPQUFPLEtBQUcsWUFBVSxJQUFFLEVBQUUsUUFBUSxXQUFXLElBQUUsRUFBRSxRQUFRLFlBQVksSUFBRSxPQUFPLEtBQUcsV0FBUyxFQUFFLFFBQVEsb0JBQW9CLEdBQUUsTUFBTSxJQUFFLEVBQUUsUUFBUSw0QkFBNEIsQ0FBQztBQUFBLFlBQUMsR0FBRSxFQUFDLE9BQU0sT0FBTSxXQUFVLE9BQU0sU0FBUSx3UEFBdVAsQ0FBQyxHQUFFLEVBQUUsd0JBQXNCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxRQUFRLHNCQUFzQixRQUFPLEdBQUUsSUFBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSx3QkFBc0IsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxzQkFBc0IsR0FBRSxFQUFFLFdBQVUsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFJO0FBQUUscUJBQU8sSUFBRSxJQUFFLEtBQUcsSUFBRSxHQUFFLElBQUUsTUFBSyxFQUFFLFFBQVEsdUJBQXVCLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSx1QkFBcUIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJO0FBQUUscUJBQU8sSUFBRSxJQUFFLElBQUUsSUFBRSxHQUFFLEVBQUUsUUFBUSwrQkFBK0IsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsdUJBQXFCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJO0FBQUcscUJBQU8sSUFBRSxLQUFHLElBQUUsSUFBRSxHQUFFLEVBQUUsUUFBUSwrQkFBK0IsR0FBRSxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxlQUFhLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLE1BQUksV0FBUyxJQUFFLEVBQUUsZ0JBQWUsT0FBTyxLQUFHLGFBQVcsSUFBRSxNQUFJLEVBQUUsY0FBYyxPQUFLLEVBQUUsZ0JBQWMsRUFBRSxRQUFRLFlBQVksQ0FBQyxJQUFHLEVBQUUsUUFBUSx1QkFBdUIsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxvQkFBa0IsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxxQkFBTyxVQUFVLFdBQVMsSUFBRSxFQUFFLFFBQVEsNEJBQTRCLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxJQUFFLFVBQVUsV0FBUyxJQUFFLEVBQUUsUUFBUSw0QkFBNEIsR0FBRSxFQUFFLFFBQVEsWUFBWSxFQUFFLEdBQUUsR0FBRSxFQUFFLFFBQVEsWUFBWSxFQUFFLEdBQUUsQ0FBQyxJQUFFLEVBQUUsTUFBTSxLQUFLLHlCQUF5QjtBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxjQUFZLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUk7QUFBRSxxQkFBTyxJQUFFLElBQUUsSUFBRSxJQUFFLEdBQUUsRUFBRSxRQUFRLHNCQUFzQixHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsd0JBQXNCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHO0FBQUMscUJBQU8sRUFBRSxRQUFRLHNCQUFzQixRQUFPLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRTtBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSx3QkFBc0IsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxzQkFBc0IsR0FBRSxRQUFPLEdBQUUsR0FBRSxHQUFFLElBQUcsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSwwQkFBd0IsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxrQkFBSSxJQUFFLEVBQUUsUUFBUSx3QkFBd0IsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsY0FBWSxJQUFHO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLDBCQUF3QixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLFFBQVEsd0JBQXdCLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRTtBQUFFLHFCQUFPLEVBQUUsZ0JBQWMsTUFBSSxNQUFJLE1BQUksSUFBRSxFQUFFLFFBQVEsVUFBVSxDQUFDLElBQUcsRUFBRSxjQUFZLElBQUc7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsb0NBQWtDLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRLGtDQUFrQyxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsb0NBQWtDLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsa0NBQWtDLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHNCQUFvQixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFO0FBQUMscUJBQU8sVUFBVSxXQUFTLElBQUUsRUFBRSxRQUFRLG9CQUFvQixHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsQ0FBQyxJQUFFLFVBQVUsV0FBUyxJQUFFLEVBQUUsUUFBUSxvQkFBb0IsR0FBRSxHQUFFLEdBQUUsR0FBRSxRQUFPLEVBQUUsSUFBRSxFQUFFLE1BQU0sS0FBSyx5QkFBeUI7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsc0JBQW9CLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRTtBQUFDLHFCQUFPLFVBQVUsV0FBUyxJQUFFLEVBQUUsUUFBUSxvQkFBb0IsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsQ0FBQyxJQUFFLFVBQVUsV0FBUyxJQUFFLEVBQUUsUUFBUSxvQkFBb0IsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEVBQUUsd0JBQXVCLENBQUMsSUFBRSxFQUFFLE1BQU0sS0FBSyx5QkFBeUI7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsNEJBQTBCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLFVBQVUsV0FBUyxJQUFFLEVBQUUsUUFBUSwwQkFBMEIsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFLFVBQVUsVUFBUSxLQUFHLFVBQVUsVUFBUSxJQUFFLEVBQUUsUUFBUSwwQkFBMEIsR0FBRSxRQUFPLEdBQUUsQ0FBQyxJQUFFLEVBQUUsTUFBTSxLQUFLLHlCQUF5QjtBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSw0QkFBMEIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUc7QUFBQyxxQkFBTyxVQUFVLFdBQVMsSUFBRSxFQUFFLFFBQVEsMEJBQTBCLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxJQUFFLFVBQVUsV0FBUyxJQUFFLEVBQUUsUUFBUSwwQkFBMEIsR0FBRSxHQUFFLEVBQUUsa0JBQWlCLEdBQUUsQ0FBQyxJQUFFLEVBQUUsTUFBTSxLQUFLLHlCQUF5QjtBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxxQkFBbUIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLE1BQUksV0FBUyxJQUFFLFFBQUksRUFBRSxRQUFRLG1CQUFtQixHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxxQkFBbUIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRLG1CQUFtQixHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLDBCQUF3QixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRztBQUFDLHFCQUFPLE9BQUssV0FBUyxLQUFHLFFBQUksRUFBRSxRQUFRLHdCQUF3QixHQUFFLEdBQUUsSUFBRyxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsMEJBQXdCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsd0JBQXdCLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEVBQUUsWUFBWTtBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxzQkFBb0IsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRLHdCQUF3QixRQUFPLEdBQUUsR0FBRSxHQUFFLE9BQUcsSUFBRSxFQUFFLFFBQVEsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFFLE1BQU07QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsY0FBWSxFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxZQUFZLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxpQkFBZSxFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxlQUFlLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxtQkFBaUIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsaUJBQWlCLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSx1QkFBcUIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEscUJBQXFCLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSx5QkFBdUIsRUFBRSxNQUFNLFVBQVUsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsdUJBQXVCLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxZQUFVLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRLFVBQVUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLGlCQUFlLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQU8sRUFBRSxRQUFRLGVBQWUsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLG1CQUFpQixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxpQkFBaUIsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLGtCQUFnQixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxnQkFBZ0IsR0FBRSxDQUFDO0FBQUEsWUFBQyxHQUFFLENBQUMsR0FBRSxFQUFFLHlCQUF1QixFQUFFLE1BQU0sVUFBVSxTQUFTLEdBQUU7QUFBQyxxQkFBTyxFQUFFLFFBQVEsdUJBQXVCLENBQUM7QUFBQSxZQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsbUJBQWlCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsUUFBUSxpQkFBaUIsQ0FBQztBQUFBLFlBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxhQUFXLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxNQUFJLFdBQVMsSUFBRSxJQUFHLE1BQUksV0FBUyxJQUFFLElBQUcsRUFBRSxtQkFBbUIsTUFBSSxNQUFJLEVBQUUscUJBQXFCLHlCQUF5QixDQUFDLElBQUUsTUFBSSxLQUFHLEVBQUUscUJBQXFCLHlCQUF5QixDQUFDLElBQUUsTUFBSSxLQUFHLEVBQUUscUJBQXFCLGdDQUFnQyxDQUFDLElBQUUsRUFBRSxXQUFXLENBQUMsSUFBRSxFQUFFLHFCQUFxQixlQUFlLENBQUMsSUFBRSxFQUFFLHFCQUFxQixvQkFBb0IsQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsR0FBRSxFQUFDLE9BQU0sT0FBTSxXQUFVLE9BQU0sU0FBUSwrQ0FBOEMsQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxRQUFRLFVBQVUsQ0FBQztBQUFFLHFCQUFPLEVBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLE1BQU0sR0FBRTtBQUFBLFlBQUMsR0FBRSxFQUFDLE9BQU0sT0FBTSxXQUFVLE9BQU0sU0FBUSxtSUFBa0ksQ0FBQyxHQUFFLEVBQUUsa0JBQWdCLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsU0FBTztBQUFBLFlBQUcsR0FBRSxFQUFDLE9BQU0sT0FBTSxXQUFVLE9BQU0sU0FBUSwyQ0FBMEMsQ0FBQyxHQUFFLEVBQUUsa0NBQWdDLEVBQUUsTUFBTSxVQUFVLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEVBQUUsYUFBYSxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUMsT0FBTSxPQUFNLFdBQVUsT0FBTSxTQUFRLDhCQUE2QixDQUFDO0FBQUEsVUFBQyxHQUFHLE9BQUssS0FBRyxDQUFDLEVBQUU7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLHFIQUFxSCxHQUFFO0FBQUM7QUFBYSxhQUFHLEdBQUUsT0FBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDLEdBQUUsRUFBRSxrQkFBZ0IsRUFBRSxpQkFBZTtBQUFPLGNBQUk7QUFBRyxXQUFDLFNBQVMsSUFBRztBQUFDLGVBQUcsa0JBQWdCLG1CQUFrQixHQUFHLGVBQWEsZ0JBQWUsR0FBRywwQkFBd0IsMkJBQTBCLEdBQUcsdUJBQXFCLHdCQUF1QixHQUFHLG9CQUFrQixxQkFBb0IsR0FBRyxrQkFBZ0IsbUJBQWtCLEdBQUcsbUJBQWlCLG9CQUFtQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGNBQVksZUFBYyxHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyxZQUFVLGFBQVksR0FBRyxtQkFBaUIsb0JBQW1CLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLHdCQUFzQix5QkFBd0IsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcsb0JBQWtCLHFCQUFvQixHQUFHLFlBQVUsYUFBWSxHQUFHLG1CQUFpQixvQkFBbUIsR0FBRyxpQkFBZSxrQkFBaUIsR0FBRyx1QkFBcUIsd0JBQXVCLEdBQUcsMkJBQXlCLDRCQUEyQixHQUFHLHlCQUF1QiwwQkFBeUIsR0FBRyxrQkFBZ0IsbUJBQWtCLEdBQUcsc0JBQW9CLHVCQUFzQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGVBQWEsZ0JBQWUsR0FBRyxzQkFBb0IsdUJBQXNCLEdBQUcscUJBQW1CLHNCQUFxQixHQUFHLGFBQVcsY0FBYSxHQUFHLGNBQVksZUFBYyxHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcseUJBQXVCLDBCQUF5QixHQUFHLG1CQUFpQixvQkFBbUIsR0FBRywyQkFBeUIsNEJBQTJCLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLGVBQWEsZ0JBQWUsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcscUJBQW1CLHNCQUFxQixHQUFHLGFBQVcsY0FBYSxHQUFHLHFCQUFtQixzQkFBcUIsR0FBRyx5QkFBdUIsMEJBQXlCLEdBQUcsY0FBWSxlQUFjLEdBQUcsZ0JBQWMsaUJBQWdCLEdBQUcsc0JBQW9CLHVCQUFzQixHQUFHLG9CQUFrQixxQkFBb0IsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcscUJBQW1CLHNCQUFxQixHQUFHLHFCQUFtQixzQkFBcUIsR0FBRyxpQkFBZSxrQkFBaUIsR0FBRyxVQUFRLFdBQVUsR0FBRyxtQkFBaUIsb0JBQW1CLEdBQUcsVUFBUSxXQUFVLEdBQUcsb0JBQWtCLHFCQUFvQixHQUFHLG1CQUFpQixvQkFBbUIsR0FBRyxlQUFhLGdCQUFlLEdBQUcsbUJBQWlCLG9CQUFtQixHQUFHLGdCQUFjLGlCQUFnQixHQUFHLG1CQUFpQixvQkFBbUIsR0FBRyxnQkFBYyxpQkFBZ0IsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcsVUFBUSxXQUFVLEdBQUcsV0FBUyxZQUFXLEdBQUcscUJBQW1CLHNCQUFxQixHQUFHLGNBQVksZUFBYyxHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyxxQkFBbUIsc0JBQXFCLEdBQUcsZ0JBQWMsaUJBQWdCLEdBQUcsY0FBWSxlQUFjLEdBQUcsUUFBTSxTQUFRLEdBQUcsYUFBVyxjQUFhLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLDJCQUF5Qiw0QkFBMkIsR0FBRyxrQkFBZ0IsbUJBQWtCLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGVBQWEsZ0JBQWUsR0FBRyxrQkFBZ0IsbUJBQWtCLEdBQUcsbUJBQWlCLG9CQUFtQixHQUFHLHNCQUFvQix1QkFBc0IsR0FBRyxxQkFBbUIsc0JBQXFCLEdBQUcsaUJBQWUsa0JBQWlCLEdBQUcsZ0JBQWMsaUJBQWdCLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLG9CQUFrQixxQkFBb0IsR0FBRyw2QkFBMkIsOEJBQTZCLEdBQUcsK0JBQTZCLGdDQUErQixHQUFHLGVBQWEsZ0JBQWUsR0FBRyxjQUFZLGVBQWMsR0FBRyxpQkFBZSxrQkFBaUIsR0FBRyxpQkFBZSxrQkFBaUIsR0FBRyxrQkFBZ0IsbUJBQWtCLEdBQUcsbUJBQWlCLG9CQUFtQixHQUFHLDZCQUEyQiw4QkFBNkIsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcsb0JBQWtCLHFCQUFvQixHQUFHLG9CQUFrQixxQkFBb0IsR0FBRyxrQ0FBZ0MsbUNBQWtDLEdBQUcsb0JBQWtCLHFCQUFvQixHQUFHLG1CQUFpQixvQkFBbUIsR0FBRyxnQ0FBOEIsaUNBQWdDLEdBQUcsb0JBQWtCLHFCQUFvQixHQUFHLGVBQWEsZ0JBQWUsR0FBRyxxQkFBbUIsc0JBQXFCLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLDRCQUEwQiw2QkFBNEIsR0FBRyxpQkFBZSxrQkFBaUIsR0FBRyw0QkFBMEIsNkJBQTRCLEdBQUcsNEJBQTBCLDZCQUE0QixHQUFHLGVBQWEsZ0JBQWUsR0FBRyxzQkFBb0IsdUJBQXNCLEdBQUcsbUJBQWlCLG9CQUFtQixHQUFHLGNBQVksZUFBYyxHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyx5QkFBdUIsMEJBQXlCLEdBQUcsc0JBQW9CLHVCQUFzQixHQUFHLHFCQUFtQixzQkFBcUIsR0FBRyxxQkFBbUIsc0JBQXFCLEdBQUcsZ0JBQWMsaUJBQWdCLEdBQUcsZUFBYSxnQkFBZSxHQUFHLG9CQUFrQixxQkFBb0IsR0FBRyxnQkFBYyxpQkFBZ0IsR0FBRyxzQkFBb0IsdUJBQXNCLEdBQUcscUJBQW1CLHNCQUFxQixHQUFHLCtCQUE2QixnQ0FBK0IsR0FBRyxpQkFBZSxrQkFBaUIsR0FBRyxzQkFBb0IsdUJBQXNCLEdBQUcsZ0JBQWMsaUJBQWdCLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyxpQkFBZSxrQkFBaUIsR0FBRyxzQkFBb0IsdUJBQXNCLEdBQUcsbUJBQWlCLG9CQUFtQixHQUFHLHNCQUFvQix1QkFBc0IsR0FBRyxxQkFBbUIsc0JBQXFCLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcsYUFBVyxjQUFhLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyxrQkFBZ0IsbUJBQWtCLEdBQUcsd0JBQXNCLHlCQUF3QixHQUFHLGFBQVcsY0FBYSxHQUFHLGNBQVksZUFBYyxHQUFHLHlCQUF1QiwwQkFBeUIsR0FBRyxtQkFBaUIsb0JBQW1CLEdBQUcsa0JBQWdCLG1CQUFrQixHQUFHLGdCQUFjLGlCQUFnQixHQUFHLGlCQUFlLGtCQUFpQixHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyw2QkFBMkIsOEJBQTZCLEdBQUcsK0JBQTZCLGdDQUErQixHQUFHLGtCQUFnQixtQkFBa0IsR0FBRyxjQUFZLGVBQWMsR0FBRyxrQkFBZ0IsbUJBQWtCLEdBQUcscUJBQW1CLHNCQUFxQixHQUFHLGNBQVksZUFBYyxHQUFHLG1CQUFpQixvQkFBbUIsR0FBRyxnQkFBYztBQUFBLFVBQWUsR0FBRyxLQUFHLEVBQUUsbUJBQWlCLEVBQUUsaUJBQWUsQ0FBQyxFQUFFO0FBQUUsY0FBSTtBQUFHLFdBQUMsU0FBUyxJQUFHO0FBQUMsZUFBRyxVQUFRLFdBQVUsR0FBRyxhQUFXLGNBQWEsR0FBRyxnQkFBYyxpQkFBZ0IsR0FBRyxVQUFRLFdBQVUsR0FBRyxVQUFRLFdBQVUsR0FBRyxPQUFLLFFBQU8sR0FBRyxVQUFRLFdBQVUsR0FBRyxhQUFXLGNBQWEsR0FBRyxvQkFBa0IscUJBQW9CLEdBQUcsU0FBTyxVQUFTLEdBQUcsV0FBUyxZQUFXLEdBQUcsUUFBTSxTQUFRLEdBQUcsT0FBSztBQUFBLFVBQU0sR0FBRyxLQUFHLEVBQUUsb0JBQWtCLEVBQUUsa0JBQWdCLENBQUMsRUFBRTtBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsc0dBQXNHLEdBQUU7QUFBQztBQUFhLGFBQUcsR0FBRSxPQUFPLGVBQWUsR0FBRSxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLGlIQUFpSCxHQUFFO0FBQUM7QUFBYSxhQUFHLEdBQUUsT0FBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBQyw0R0FBNEcsR0FBRTtBQUFDO0FBQWEsYUFBRztBQUFFLGNBQUksS0FBRyxLQUFHLEVBQUUsb0JBQWtCLE9BQU8sU0FBTyxTQUFTLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxtQkFBSyxXQUFTLEtBQUc7QUFBSSxnQkFBSSxLQUFHLE9BQU8seUJBQXlCLElBQUcsRUFBRTtBQUFFLGFBQUMsQ0FBQyxPQUFLLFNBQVEsS0FBRyxDQUFDLEdBQUcsYUFBVyxHQUFHLFlBQVUsR0FBRyxtQkFBaUIsS0FBRyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxxQkFBTyxHQUFHO0FBQUEsWUFBRyxFQUFDLElBQUcsT0FBTyxlQUFlLElBQUcsSUFBRyxFQUFFO0FBQUEsVUFBQyxJQUFFLFNBQVMsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLG1CQUFLLFdBQVMsS0FBRyxLQUFJLEdBQUcsTUFBSSxHQUFHO0FBQUEsVUFBRyxJQUFHLEtBQUcsS0FBRyxFQUFFLHVCQUFxQixPQUFPLFNBQU8sU0FBUyxJQUFHLElBQUc7QUFBQyxtQkFBTyxlQUFlLElBQUcsV0FBVSxFQUFDLFlBQVcsTUFBRyxPQUFNLEdBQUUsQ0FBQztBQUFBLFVBQUMsSUFBRSxTQUFTLElBQUcsSUFBRztBQUFDLGVBQUcsVUFBUTtBQUFBLFVBQUUsSUFBRyxLQUFHLEtBQUcsRUFBRSxnQkFBYyxTQUFTLElBQUc7QUFBQyxnQkFBRyxNQUFJLEdBQUc7QUFBVyxxQkFBTztBQUFHLGdCQUFJLEtBQUcsQ0FBQztBQUFFLGdCQUFHLE1BQUk7QUFBSyx1QkFBUSxNQUFNO0FBQUcsdUJBQUssYUFBVyxPQUFPLFVBQVUsZUFBZSxLQUFLLElBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxJQUFHLEVBQUU7QUFBRSxtQkFBTyxHQUFHLElBQUcsRUFBRSxHQUFFO0FBQUEsVUFBRTtBQUFFLGlCQUFPLGVBQWUsR0FBRSxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUMsR0FBRSxFQUFFLFdBQVMsUUFBTyxFQUFFLFdBQVMsR0FBRyxHQUFHLENBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsR0FBRyxFQUFDLHdHQUF3RyxHQUFFO0FBQUM7QUFBYSxhQUFHO0FBQUUsY0FBSSxLQUFHLEtBQUcsRUFBRSxvQkFBa0IsT0FBTyxTQUFPLFNBQVMsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFDLG1CQUFLLFdBQVMsS0FBRztBQUFJLGdCQUFJLEtBQUcsT0FBTyx5QkFBeUIsSUFBRyxFQUFFO0FBQUUsYUFBQyxDQUFDLE9BQUssU0FBUSxLQUFHLENBQUMsR0FBRyxhQUFXLEdBQUcsWUFBVSxHQUFHLG1CQUFpQixLQUFHLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLHFCQUFPLEdBQUc7QUFBQSxZQUFHLEVBQUMsSUFBRyxPQUFPLGVBQWUsSUFBRyxJQUFHLEVBQUU7QUFBQSxVQUFDLElBQUUsU0FBUyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsbUJBQUssV0FBUyxLQUFHLEtBQUksR0FBRyxNQUFJLEdBQUc7QUFBQSxVQUFHLElBQUcsS0FBRyxLQUFHLEVBQUUsZ0JBQWMsU0FBUyxJQUFHLElBQUc7QUFBQyxxQkFBUSxNQUFNO0FBQUcscUJBQUssYUFBVyxDQUFDLE9BQU8sVUFBVSxlQUFlLEtBQUssSUFBRyxFQUFFLEtBQUcsR0FBRyxJQUFHLElBQUcsRUFBRTtBQUFBLFVBQUM7QUFBRSxpQkFBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDLEdBQUUsRUFBRSxrQkFBZ0IsRUFBRSxpQkFBZTtBQUFPLGNBQUksS0FBRyxHQUFHO0FBQUUsaUJBQU8sZUFBZSxHQUFFLGtCQUFpQixFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxtQkFBTyxHQUFHO0FBQUEsVUFBYyxFQUFDLENBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxtQkFBa0IsRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsbUJBQU8sR0FBRztBQUFBLFVBQWUsRUFBQyxDQUFDLEdBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEdBQUcsRUFBQywrRUFBK0UsR0FBRTtBQUFDO0FBQWEsYUFBRyxHQUFFLE9BQU8sZUFBZSxHQUFFLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsOEZBQThGLEdBQUU7QUFBQztBQUFhLGFBQUcsR0FBRSxPQUFPLGVBQWUsR0FBRSxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxjQUFJLEtBQUcsR0FBRztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsNEVBQTRFLEdBQUU7QUFBQztBQUFhLGFBQUc7QUFBRSxjQUFJLEtBQUcsS0FBRyxFQUFFLG9CQUFrQixPQUFPLFNBQU8sU0FBUyxJQUFHLElBQUcsSUFBRyxJQUFHO0FBQUMsbUJBQUssV0FBUyxLQUFHO0FBQUksZ0JBQUksS0FBRyxPQUFPLHlCQUF5QixJQUFHLEVBQUU7QUFBRSxhQUFDLENBQUMsT0FBSyxTQUFRLEtBQUcsQ0FBQyxHQUFHLGFBQVcsR0FBRyxZQUFVLEdBQUcsbUJBQWlCLEtBQUcsRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMscUJBQU8sR0FBRztBQUFBLFlBQUcsRUFBQyxJQUFHLE9BQU8sZUFBZSxJQUFHLElBQUcsRUFBRTtBQUFBLFVBQUMsSUFBRSxTQUFTLElBQUcsSUFBRyxJQUFHLElBQUc7QUFBQyxtQkFBSyxXQUFTLEtBQUcsS0FBSSxHQUFHLE1BQUksR0FBRztBQUFBLFVBQUcsSUFBRyxLQUFHLEtBQUcsRUFBRSxnQkFBYyxTQUFTLElBQUcsSUFBRztBQUFDLHFCQUFRLE1BQU07QUFBRyxxQkFBSyxhQUFXLENBQUMsT0FBTyxVQUFVLGVBQWUsS0FBSyxJQUFHLEVBQUUsS0FBRyxHQUFHLElBQUcsSUFBRyxFQUFFO0FBQUEsVUFBQztBQUFFLGlCQUFPLGVBQWUsR0FBRSxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUMsR0FBRSxFQUFFLFdBQVMsRUFBRSxrQkFBZ0IsRUFBRSxpQkFBZTtBQUFPLGNBQUksS0FBRyxHQUFHO0FBQUUsaUJBQU8sZUFBZSxHQUFFLGtCQUFpQixFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxtQkFBTyxHQUFHO0FBQUEsVUFBYyxFQUFDLENBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxtQkFBa0IsRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsbUJBQU8sR0FBRztBQUFBLFVBQWUsRUFBQyxDQUFDLEdBQUUsT0FBTyxlQUFlLEdBQUUsWUFBVyxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxtQkFBTyxHQUFHO0FBQUEsVUFBUSxFQUFDLENBQUMsR0FBRSxHQUFHLEdBQUcsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsK0VBQStFLEdBQUU7QUFBQztBQUFhLGFBQUcsR0FBRSxPQUFPLGVBQWUsR0FBRSxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUMsR0FBRSxFQUFFLGdCQUFjLFFBQU8sRUFBRSxnQkFBYyxFQUFDLE1BQUssS0FBSSxLQUFJLEtBQUksTUFBSyxLQUFJLElBQUcsS0FBSSxJQUFHLEtBQUksTUFBSyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxLQUFJLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxLQUFJLFFBQU8sTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFFBQU8sS0FBSSxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sTUFBSyxRQUFPLEtBQUksUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sS0FBSSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxNQUFLLFFBQU8sT0FBTSxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxLQUFJLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLFNBQVEsVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsU0FBUSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLFNBQVEsVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFB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QUFFLE1BQUssRUFBRSxZQUFXLEVBQUUsV0FBVyxNQUFNLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEdBQUcsRUFBRSxNQUFLLEVBQUUsWUFBVyxFQUFFLFVBQVUsTUFBTSxJQUFJLEdBQUUsRUFBRSxRQUFRLE1BQU0sSUFBSSxHQUFFLEVBQUUsU0FBUyxNQUFNLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLFVBQVUsR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBSSxHQUFHLEVBQUUsTUFBSyxFQUFFLFlBQVcsRUFBRSxJQUFJLE1BQU0sSUFBSSxHQUFFLEVBQUUsTUFBSyxLQUFLLFNBQVMsRUFBRSxJQUFJLEdBQUUsRUFBRSxRQUFRO0FBQUEsWUFBQztBQUFBLFlBQUMsZUFBZSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEdBQUcsRUFBRSxNQUFLLEVBQUUsWUFBVyxFQUFFLFNBQVMsTUFBTSxJQUFJLEdBQUUsRUFBRSxJQUFJLE1BQU0sSUFBSSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWdCLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUksR0FBRyxFQUFFLE1BQUssRUFBRSxZQUFXLEVBQUUsU0FBUyxNQUFNLElBQUksR0FBRSxFQUFFLElBQUksTUFBTSxJQUFJLEdBQUUsRUFBRSxNQUFNLE1BQU0sSUFBSSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxDQUFDO0FBQUUsdUJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEVBQUU7QUFBRSxrQkFBRSxLQUFHLEVBQUUsR0FBRyxNQUFNLElBQUk7QUFBRSxxQkFBTztBQUFBLFlBQUM7QUFBQSxZQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBSSxHQUFHLEVBQUUsTUFBSyxFQUFFLFlBQVcsS0FBSyxTQUFTLEVBQUUsV0FBVyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsV0FBVyxHQUFFLEdBQUU7QUFB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RyxFQUFFLE1BQUssRUFBRSxZQUFXLENBQUMsSUFBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGlCQUFpQixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsVUFBVSxNQUFNLElBQUksR0FBRSxJQUFFLEVBQUUsUUFBUSxNQUFNLElBQUksR0FBRSxJQUFFLEVBQUUsU0FBUyxNQUFNLElBQUk7QUFBRSxxQkFBTyxNQUFJLEVBQUUsYUFBVyxNQUFJLEVBQUUsV0FBUyxNQUFJLEVBQUUsV0FBUyxJQUFJLEdBQUcsRUFBRSxNQUFLLEVBQUUsWUFBVyxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsVUFBVSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsSUFBSSxNQUFNLElBQUksR0FBRSxJQUFFLEtBQUssU0FBUyxFQUFFLElBQUk7QUFBRSxxQkFBTyxNQUFJLEVBQUUsT0FBSyxNQUFJLEVBQUUsT0FBSyxJQUFJLEdBQUcsRUFBRSxNQUFLLEVBQUUsWUFBVyxHQUFFLEVBQUUsTUFBSyxHQUFFLEVBQUUsUUFBUSxJQUFFO0FBQUEsWUFBQztBQUFBLFlBQUMsZUFBZSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsU0FBUyxNQUFNLElBQUksR0FBRSxJQUFFLEVBQUUsSUFBSSxNQUFNLElBQUk7QUFBRSxxQkFBTyxNQUFJLEVBQUUsWUFBVSxNQUFJLEVBQUUsTUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFLLEVBQUUsWUFBVyxHQUFFLENBQUMsSUFBRTtBQUFBLFlBQUM7QUFBQSxZQUFDLGdCQUFnQixHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsU0FBUyxNQUFNLElBQUksR0FBRSxJQUFFLEVBQUUsSUFBSSxNQUFNLElBQUksR0FBRSxJQUFFLEVBQUUsTUFBTSxNQUFNLElBQUk7QUFBRSxxQkFBTyxNQUFJLEVBQUUsWUFBVSxNQUFJLEVBQUUsT0FBSyxNQUFJLEVBQUUsUUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFLLEVBQUUsWUFBVyxHQUFFLEdBQUUsQ0FBQyxJ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SSxNQUFJO0FBQUEsUUFBRTtBQUFDLFlBQUksSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxLQUFHLEVBQUUsRUFBQyx3REFBdUQ7QUFBQyxZQUFFLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsSUFBRSxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxJQUFFLElBQUcsS0FBRyxJQUFHLElBQUUsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRyxLQUFJLEtBQUcsS0FBSSxLQUFHLEtBQUksS0FBRztBQUFBLFFBQUUsRUFBQyxDQUFDLEdBQUUsS0FBRyxDQUFDO0FBQUUsV0FBRyxJQUFHLEVBQUMsS0FBSSxN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QUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsV0FBVSxLQUFHLEdBQUcsTUFBSyxLQUFHLEdBQUcsTUFBSyxLQUFHLE1BQUksR0FBRyxLQUFLLElBQUcsRUFBRTtBQUFFLFdBQUcsVUFBUSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEtBQUcsR0FBRyxDQUFDO0FBQUEsUUFBQyxJQUFFLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEtBQUcsV0FBVTtBQUFDLG1CQUFPLEdBQUcsTUFBTSxHQUFFLFNBQVM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRSxLQUFHLEdBQUcsR0FBRyxLQUFLO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUUsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsUUFBTyxLQUFHLEdBQUcsR0FBRyxLQUFLO0FBQUUsV0FBRyxVQUFRLEdBQUcsV0FBVTtBQUFDLGlCQUFNLENBQUMsR0FBRyxHQUFHLEVBQUUscUJBQXFCLENBQUM7QUFBQSxRQUFDLENBQUMsSUFBRSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLENBQUMsS0FBRyxXQUFTLEdBQUcsR0FBRSxFQUFFLElBQUUsR0FBRyxDQUFDO0FBQUEsUUFBQyxJQUFFO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFB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QUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFVLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksR0FBRTtBQUFFLGNBQUcsTUFBSSxZQUFVLEdBQUcsSUFBRSxFQUFFLFFBQVEsS0FBRyxDQUFDLEdBQUcsSUFBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDLEtBQUcsR0FBRyxJQUFFLEVBQUUsT0FBTyxLQUFHLENBQUMsR0FBRyxJQUFFLEdBQUcsR0FBRSxDQUFDLENBQUMsS0FBRyxNQUFJLFlBQVUsR0FBRyxJQUFFLEVBQUUsUUFBUSxLQUFHLENBQUMsR0FBRyxJQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7QUFBRSxtQkFBTztBQUFFLGdCQUFNLEdBQUcseUNBQXlDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsV0FBRyxVQUFRO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsT0FBTztBQUFlLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUc7QUFBQyxlQUFHLElBQUcsR0FBRSxFQUFDLE9BQU0sR0FBRSxjQUFhLE1BQUcsVUFBUyxLQUFFLENBQUM7QUFBQSxVQUFDLFFBQUM7QUFBTSxlQUFHLEtBQUc7QUFBQSxVQUFDO0FBQUMsaUJBQU87QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsc0JBQXFCLEtBQUcsR0FBRyxPQUFLLEdBQUcsSUFBRyxDQUFDLENBQUM7QUFBRSxXQUFHLFVBQVE7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUks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RyxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsZ0JBQUcsQ0FBQyxHQUFHLENBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFHLFNBQU87QUFBRSxvQkFBTSxHQUFHLDRCQUEwQixJQUFFLFdBQVc7QUFBRSxtQkFBTztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUUsY0FBSSxHQUFHLFNBQU8sS0FBRyxHQUFHLFVBQVEsR0FBRyxRQUFNLElBQUksT0FBSSxLQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUMsS0FBRyxDQUFDO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxRQUFDLE1BQUksS0FBRyxHQUFHLE9BQU8sR0FBRSxHQUFHLE1BQUksTUFBRyxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxFQUFFLE1BQUksQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFHLFlBQUksSUFBRyxJQUFHLElBQUcsSUFBRztBQUFHLFdBQUcsVUFBUSxFQUFDLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFNBQVEsSUFBRyxXQUFVLEdBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxNQUFJLE9BQU8sMEJBQXlCLEtBQUcsR0FBRyxJQUFHLE1BQU0sR0FBRSxLQUFHLE1BQUksV0FBVTtBQUFBLFFBQUMsRUFBRSxTQUFPLGFBQVksS0FBRyxPQUFLLENBQUMsTUFBSSxNQUFJLEdBQUcsSUFBRyxNQUFNLEVBQUU7QUFBYyxXQUFHLFVBQVEsRUFBQyxRQUFPLElBQUcsUUFBTyxJQUFHLGNBQWEsR0FBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxjQUFhLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRyxTQUFRLEtBQUcsT0FBTyxNQUFNLEVBQUUsTUFBTSxRQUFRO0FBQUUsU0FBQyxHQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLElBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBTyxPQUFHLElBQUUsSUFBRSxDQUFDLENBQUMsRUFBRSxhQUFXLE9BQUcsSUFBRSxJQUFFLENBQUMsQ0FBQyxFQUFFLGNBQVksT0FBRyxJQUFFLEtBQUcsRUFBRSxTQUFPLFNBQU8sRUFBRSxPQUFLLEdBQUU7QUFBRSxjQUFHLEdBQUcsQ0FBQyxNQUFJLE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FBRSxDQUFDLE1BQUksY0FBWSxJQUFFLE1BQUksT0FBTyxDQUFDLEVBQUUsUUFBUSxzQkFBcUIsSUFBSSxJQUFFLE9BQU0sQ0FBQyxHQUFHLEdBQUUsTUFBTSxLQUFHLE1BQUksRUFBRSxTQUFPLE1BQUksR0FBRyxHQUFFLFFBQU8sQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxXQUFTLEVBQUUsU0FBTyxHQUFHLEtBQUssT0FBTyxLQUFHLFdBQVMsSUFBRSxFQUFFLEtBQUksTUFBSSxJQUFHO0FBQUMsZ0JBQUUsRUFBRSxLQUFHLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRTtBQUFBLFVBQU07QUFBTSxnQkFBRSxDQUFDLEtBQUcsRUFBRSxPQUFLLElBQUUsUUFBSSxPQUFPLEVBQUU7QUFBRyxjQUFFLEVBQUUsS0FBRyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxRQUFDLEdBQUcsU0FBUyxXQUFVLFlBQVcsV0FBVTtBQUFDLGlCQUFPLEdBQUcsSUFBSSxLQUFHLEdBQUcsSUFBSSxFQUFFLFVBQVEsR0FBRyxJQUFJO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsS0FBSyxNQUFLLEtBQUcsS0FBSztBQUFNLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsQ0FBQztBQUFFLGlCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFJLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsS0FBSyxLQUFJLEtBQUcsS0FBSztBQUFJLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxpQkFBTyxJQUFFLElBQUUsR0FBRyxJQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEtBQUs7QUFBSSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sSUFBRSxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsZ0JBQWdCLElBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEVBQUUsTUFBTTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRTtBQUFFLGdCQUFHLEtBQUcsS0FBRyxHQUFFO0FBQUMscUJBQUssSUFBRTtBQUFHLG9CQUFHLElBQUUsRUFBRSxNQUFLLEtBQUc7QUFBRSx5QkFBTTtBQUFBLFlBQUU7QUFBTSxxQkFBSyxJQUFFLEdBQUU7QUFBSSxxQkFBSSxLQUFHLEtBQUssTUFBSSxFQUFFLE9BQUs7QUFBRSx5QkFBTyxLQUFHLEtBQUc7QUFBRSxtQkFBTSxDQUFDLEtBQUc7QUFBQSxVQUFFO0FBQUEsUUFBQztBQUFFLFdBQUcsVUFBUSxFQUFDLFVBQVMsR0FBRyxJQUFFLEdBQUUsU0FBUSxHQUFHLEtBQUUsRUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcs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LFVBQVE7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxjQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFFLGNBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUcsTUFBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDLElBQUUsS0FBRyxHQUFHLE1BQUksQ0FBQyxHQUFHLFdBQVU7QUFBRSxpQkFBSSxLQUFLLEdBQUU7QUFBQyxrQkFBRyxJQUFFLEVBQUUsSUFBRyxFQUFFLGVBQWEsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLFNBQU8sSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsTUFBSSxPQUFLLEdBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxLQUFHLE1BQUksUUFBTztBQUFDLG9CQUFHLE9BQU8sS0FBRyxPQUFPO0FBQUU7QUFBUyxtQkFBRyxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQUMsZUFBQyxFQUFFLFFBQU0sS0FBRyxFQUFFLFNBQU8sR0FBRyxHQUFFLFFBQU8sSUFBRSxHQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsTUFBSTtBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxFQUFFO0FBQUUsV0FBRyxFQUFDLFFBQU8sS0FBRSxHQUFFLEVBQUMsWUFBVyxHQUFFLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcs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LE1BQUk7QUFBRyxrQkFBRSxHQUFFLElBQUUsRUFBRSxRQUFRLEdBQUUsR0FBRyxPQUFPLEdBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUUsZ0JBQUUsRUFBRSxRQUFRLEdBQUUsRUFBRSxFQUFFLFVBQVU7QUFBRSxnQkFBSSxJQUFFLHVCQUFPLE9BQU8sSUFBSSxHQUFFLElBQUUsRUFBRSxRQUFRLEdBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRSxFQUFFLEVBQUUsVUFBVSxHQUFFO0FBQUUsbUJBQUssSUFBRSxFQUFFLEtBQUssQ0FBQyxLQUFHO0FBQUMsa0JBQUksSUFBRSxFQUFFLEdBQUcsUUFBUSxHQUFFLEVBQUU7QUFBRSxxQkFBTyxFQUFFLEVBQUUsT0FBSyxZQUFVLE1BQU0sUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFFLEVBQUUsRUFBRSxNQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSSxDQUFDLElBQUUsRUFBRSxFQUFFLE1BQUk7QUFBQSxZQUFDO0FBQUMsbUJBQU0sRUFBQyxVQUFTLEdBQUUsU0FBUSxFQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsVUFBUyxJQUFFLElBQUcsU0FBUSxJQUFFLENBQUMsRUFBQyxJQUFFLEdBQUUsS0FBRyxHQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsS0FBRyxFQUFFLEVBQUUsS0FBSSxJQUFFLE9BQU0sSUFBRSxNQUFLLElBQUUsT0FBTSxLQUFHLE9BQU8sS0FBSyxDQUFDLEdBQUUsS0FBRyxHQUFHLElBQUksUUFBSSxFQUFFLElBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBRyxPQUFLLEdBQUcsT0FBTyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxRQUFJLElBQUUsTUFBSSxLQUFHLENBQUMsRUFBRSxLQUFLLEVBQUU7QUFBRSxnQkFBRyxDQUFDLEdBQUU7QUFBQyxrQkFBRyxHQUFHLFdBQVM7QUFBRSx1QkFBTTtBQUFHLGtCQUFHLEdBQUcsV0FBUyxLQUFHLENBQUMsTUFBTSxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEVBQUUsR0FBRztBQUFJLHVCQUFNLEdBQUcsT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxnQkFBSSxLQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxRQUFJLEdBQUcsT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFFO0FBQUUsbUJBQU8sSUFBRSxLQUFHLElBQUUsS0FBRyxPQUFLLEtBQUcsR0FBRyxTQUFPLElBQUUsSUFBRSxNQUFJLEtBQUc7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBRyxJQUFJLE9BQU8sR0FBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsNEJBQTRCLEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRSxRQUFRLElBQUk7QUFBRSxtQkFBTyxLQUFHLElBQUUsRUFBRSxPQUFPLElBQUUsQ0FBQyxNQUFJO0FBQUEsSUFDbDFELFNBQU8sT0FBSztBQUFBLFVBQUk7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxvQkFBTztBQUFBLG1CQUFPO0FBQUssdUJBQU07QUFBQSxtQkFBUztBQUFPLHVCQUFNO0FBQUE7QUFBQTtBQUN0RSx1QkFBTTtBQUFBO0FBQUE7QUFBQSxVQUNkO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSTtBQUFFLG9CQUFPO0FBQUEsbUJBQU87QUFBQTtBQUNyQyxvQkFBRTtBQUFNO0FBQUEsbUJBQVU7QUFBSyxvQkFBRTtB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QUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUksSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxLQUFJLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEtBQUksSUFBRyxLQUFJLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsS0FBSSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxJQUFHLEtBQUksR0FBRSxJQUFHLEtBQUksS0FBSSxLQUFJLElBQUcsS0FBSSxNQUFLLElBQUcsSUFBRyxNQUFLLE1BQUssS0FBSSxNQUFLLEtBQUksR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsTUFBSyxHQUFFLE1BQUssSUFBRyxHQUFFLE1BQUssR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsS0FBSSxNQUFLLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsTUFBSyxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsTUFBSyxJQUFHLEtBQUksSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksSUFBRyxJQUFHLElBQUcsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLElBQUcsR0FBRSxHQUFFLE1BQUssR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLE1BQUssT0FBTSxJQUFHLE1BQUssR0FBRSxLQUFJLEdBQUUsTUFBSyxJQUFHLE1BQUssTUFBSyxLQUFJLE1BQUssSUFBSSxHQUFFLElBQUUsQ0FBQyxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsS0FBSSxJQUFHLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEtBQUksSUFBRyxLQUFJLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLE9BQU0sR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsTUFBSyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxPQUFNLEdBQUUsTUFBSyxJQUFHLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxNQUFLLElBQUcsS0FBSSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsTUFBSyxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLElBQUcsTUFBSyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsTUFBSyxHQUFFLFFBQU8sR0FBRztBQUFFLHFCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxPQUFNLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFHLEdBQUU7QUFBQyxvQkFBRyxLQUFHLEVBQUUsSUFBRyxJQUFFO0FBQUUseUJBQU07QUFBRyxvQkFBRyxLQUFHLEVBQUUsSUFBRSxJQUFHLEtBQUc7QUFBRSx5QkFBTTtBQUFBLGNBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFFLEtBQUcsTUFBSSxLQUFHLElBQUUsS0FBRyxPQUFHLElBQUUsS0FBRyxNQUFJLEtBQUcsSUFBRSxNQUFJLE9BQUcsS0FBRyxRQUFNLEtBQUcsT0FBSyxFQUFFLEtBQUssT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFFLE1BQUksUUFBRyxRQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sSUFBRSxLQUFHLE1BQUksS0FBRyxJQUFFLEtBQUcsT0FBRyxJQUFFLEtBQUcsUUFBRyxJQUFFLEtBQUcsT0FBRyxJQUFFLEtBQUcsTUFBSSxLQUFHLElBQUUsTUFBSSxPQUFHLEtBQUcsUUFBTSxLQUFHLE9BQUssRUFBRSxLQUFLLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBRSxNQUFJLFFBQUcsUUFBRyxFQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLElBQUUsU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBSSxXQUFTLElBQUUsQ0FBQyxJQUFHLEtBQUssUUFBTSxHQUFFLEtBQUssVUFBUSxFQUFFLFNBQVEsS0FBSyxhQUFXLENBQUMsQ0FBQyxFQUFFLFlBQVcsS0FBSyxhQUFXLENBQUMsQ0FBQyxFQUFFLFlBQVcsS0FBSyxTQUFPLENBQUMsQ0FBQyxFQUFFLFFBQU8sS0FBSyxXQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVMsS0FBSyxTQUFPLENBQUMsQ0FBQyxFQUFFLFFBQU8sS0FBSyxVQUFRLENBQUMsQ0FBQyxFQUFFLFNBQVEsS0FBSyxRQUFNLEVBQUUsU0FBTyxNQUFLLEtBQUssZ0JBQWM7QUFBQSxZQUFJO0FBQUUscUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxJQUFJLEVBQUUsR0FBRSxFQUFDLFlBQVcsTUFBRyxPQUFNLEVBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxnQkFBSSxJQUFFLEVBQUMsWUFBVyxLQUFFLEdBQUUsSUFBRSxFQUFDLFlBQVcsS0FBRSxHQUFFLElBQUUsQ0FBQztBQUFFLHFCQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxXQUFTLElBQUUsQ0FBQyxJQUFHLEVBQUUsVUFBUSxHQUFFLEVBQUUsS0FBRyxJQUFJLEVBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLElBQUUsRUFBQyxLQUFJLElBQUksRUFBRSxPQUFNLENBQUMsR0FBRSxRQUFPLElBQUksRUFBRSxVQUFTLENBQUMsR0FBRSxRQUFPLElBQUksRUFBRSxVQUFTLENBQUMsR0FBRSxNQUFLLElBQUksRUFBRSxRQUFPLENBQUMsR0FBRSxXQUFVLElBQUksRUFBRSxhQUFZLENBQUMsR0FBRSxLQUFJLElBQUksRUFBRSxLQUFLLEdBQUUsVUFBUyxJQUFJLEVBQUUsS0FBSSxFQUFDLFlBQVcsTUFBRyxZQUFXLEtBQUUsQ0FBQyxHQUFFLFVBQVMsSUFBSSxFQUFFLEdBQUcsR0FBRSxRQUFPLElBQUksRUFBRSxLQUFJLEVBQUMsWUFBVyxNQUFHLFlBQVcsS0FBRSxDQUFDLEdBQUUsUUFBTyxJQUFJLEVBQUUsR0FBRyxHQUFFLFFBQU8sSUFBSSxFQUFFLEtBQUksRUFBQyxZQUFXLE1BQUcsWUFBVyxLQUFFLENBQUMsR0FBRSxRQUFPLElBQUksRUFBRSxHQUFHLEdBQUUsT0FBTSxJQUFJLEVBQUUsS0FBSSxDQUFDLEdBQUUsTUFBSyxJQUFJLEVBQUUsS0FBSSxDQUFDLEdBQUUsT0FBTSxJQUFJLEVBQUUsS0FBSSxDQUFDLEdBQUUsS0FBSSxJQUFJLEVBQUUsR0FBRyxHQUFFLFVBQVMsSUFBSSxFQUFFLEtBQUksQ0FBQyxHQUFFLGFBQVksSUFBSSxFQUFFLElBQUksR0FBRSxPQUFNLElBQUksRUFBRSxNQUFLLENBQUMsR0FBRSxVQUFTLElBQUksRUFBRSxVQUFVLEdBQUUsaUJBQWdCLElBQUksRUFBRSxpQkFBaUIsR0FBRSxVQUFTLElBQUksRUFBRSxPQUFNLENBQUMsR0FBRSxXQUFVLElBQUksRUFBRSxLQUFJLENBQUMsR0FBRSxjQUFhLElBQUksRUFBRSxNQUFLLEVBQUMsWUFBVyxNQUFHLFlBQVcsS0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFJLEVBQUUsS0FBSSxFQUFDLFlBQVcsTUFBRyxVQUFTLEtBQUUsQ0FBQyxHQUFFLFFBQU8sSUFBSSxFQUFFLE1BQUssRUFBQyxZQUFXLE1BQUcsVUFBUyxLQUFFLENBQUMsR0FBRSxRQUFPLElBQUksRUFBRSxTQUFRLEVBQUMsUUFBTyxNQUFHLFNBQVEsTUFBRyxZQUFXLEtBQUUsQ0FBQyxHQUFFLFFBQU8sSUFBSSxFQUFFLE9BQU0sRUFBQyxZQUFXLE1BQUcsUUFBTyxNQUFHLFlBQVcsS0FBRSxDQUFDLEdBQUUsV0FBVSxFQUFFLE1BQUssQ0FBQyxHQUFFLFlBQVcsRUFBRSxNQUFLLENBQUMsR0FBRSxXQUFVLEVBQUUsS0FBSSxDQUFDLEdBQUUsWUFBVyxFQUFFLEtBQUksQ0FBQyxHQUFFLFlBQVcsRUFBRSxLQUFJLENBQUMsR0FBRSxVQUFTLEVBQUUsaUJBQWdCLENBQUMsR0FBRSxZQUFXLEVBQUUsYUFBWSxDQUFDLEdBQUUsVUFBUyxFQUFFLGFBQVksQ0FBQyxHQUFFLFNBQVEsSUFBSSxFQUFFLE9BQU0sRUFBQyxZQUFXLE1BQUcsT0FBTSxHQUFFLFFBQU8sTUFBRyxZQUFXLEtBQUUsQ0FBQyxHQUFFLFFBQU8sRUFBRSxLQUFJLEVBQUUsR0FBRSxNQUFLLEVBQUUsS0FBSSxFQUFFLEdBQUUsT0FBTSxFQUFFLEtBQUksRUFBRSxHQUFFLFVBQVMsSUFBSSxFQUFFLE1BQUssRUFBQyxZQUFXLEtBQUUsQ0FBQyxHQUFFLFVBQVMsRUFBRSxNQUFLLENBQUMsR0FBRSxRQUFPLEVBQUUsT0FBTyxHQUFFLE9BQU0sRUFBRSxRQUFPLENBQUMsR0FBRSxRQUFPLEVBQUUsT0FBTyxHQUFFLFdBQVUsRUFBRSxVQUFVLEdBQUUsV0FBVSxFQUFFLFVBQVUsR0FBRSxVQUFTLEVBQUUsV0FBVSxDQUFDLEdBQUUsS0FBSSxFQUFFLE1BQUssRUFBQyxRQUFPLE1BQUcsWUFBVyxLQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsUUFBTyxDQUFDLEdBQUUsVUFBUyxFQUFFLFNBQVMsR0FBRSxNQUFLLEVBQUUsT0FBTSxFQUFDLFFBQU8sS0FBRSxDQUFDLEdBQUUsV0FBVSxFQUFFLFlBQVcsQ0FBQyxHQUFFLEtBQUksRUFBRSxJQUFJLEdBQUUsU0FBUSxFQUFFLFVBQVMsQ0FBQyxHQUFFLFNBQVEsRUFBRSxRQUFRLEdBQUUsUUFBTyxFQUFFLFNBQVEsQ0FBQyxHQUFFLE1BQUssRUFBRSxLQUFLLEdBQUUsTUFBSyxFQUFFLEtBQUssR0FBRSxRQUFPLEVBQUUsT0FBTyxHQUFFLFFBQU8sRUFBRSxTQUFRLEVBQUMsUUFBTyxLQUFFLENBQUMsR0FBRSxPQUFNLEVBQUUsTUFBTSxHQUFFLE1BQUssRUFBRSxPQUFNLEVBQUMsWUFBVyxNQUFHLFlBQVcsS0FBRSxDQUFDLEdBQUUsT0FBTSxFQUFFLFFBQU8sQ0FBQyxHQUFFLFFBQU8sRUFBRSxTQUFRLENBQUMsR0FBRSxRQUFPLEVBQUUsU0FBUSxDQUFDLEdBQUUsVUFBUyxFQUFFLFdBQVUsQ0FBQyxHQUFFLFNBQVEsRUFBRSxRQUFRLEdBQUUsU0FBUSxFQUFFLFVBQVMsQ0FBQyxHQUFFLE9BQU0sRUFBRSxRQUFPLENBQUMsR0FBRSxPQUFNLEVBQUUsUUFBTyxDQUFDLEdBQUUsUUFBTyxFQUFFLFNBQVEsQ0FBQyxHQUFFLEtBQUksRUFBRSxNQUFLLEVBQUMsWUFBVyxNQUFHLE9BQU0sRUFBQyxDQUFDLEdBQUUsYUFBWSxFQUFFLGNBQWEsRUFBQyxZQUFXLE1BQUcsT0FBTSxFQUFDLENBQUMsR0FBRSxTQUFRLEVBQUUsVUFBUyxF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QUUsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFJLENBQUM7QUFBRSxxQkFBTyxLQUFHLFNBQU8sS0FBRyxRQUFNLEtBQUcsS0FBRyxNQUFJLElBQUU7QUFBQSxZQUFRLEdBQUUsRUFBRSxtQkFBaUIsV0FBVTtBQUFDLGtCQUFJLElBQUUsS0FBSyxRQUFRLGFBQVcsS0FBSyxZQUFZLEdBQUUsSUFBRSxLQUFLLEtBQUksSUFBRSxLQUFLLE1BQU0sUUFBUSxNQUFLLEtBQUssT0FBSyxDQUFDO0FBQUUsa0JBQUcsTUFBSSxNQUFJLEtBQUssTUFBTSxLQUFLLE1BQUksR0FBRSxzQkFBc0IsR0FBRSxLQUFLLE1BQUksSUFBRSxHQUFFLEtBQUssUUFBUTtBQUFVLHlCQUFRLElBQUUsUUFBTyxJQUFFLElBQUcsSUFBRSxHQUFHLEtBQUssT0FBTSxHQUFFLEtBQUssR0FBRyxLQUFHO0FBQUksb0JBQUUsS0FBSyxTQUFRLElBQUUsS0FBSyxZQUFVO0FBQUUsbUJBQUssUUFBUSxhQUFXLEtBQUssUUFBUSxVQUFVLE1BQUcsS0FBSyxNQUFNLE1BQU0sSUFBRSxHQUFFLENBQUMsR0FBRSxHQUFFLEtBQUssS0FBSSxHQUFFLEtBQUssWUFBWSxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsa0JBQWdCLFNBQVMsR0FBRTtBQUFDLHVCQUFRLElBQUUsS0FBSyxLQUFJLElBQUUsS0FBSyxRQUFRLGFBQVcsS0FBSyxZQUFZLEdBQUUsSUFBRSxLQUFLLE1BQU0sV0FBVyxLQUFLLE9BQUssQ0FBQyxHQUFFLEtBQUssTUFBSSxLQUFLLE1BQU0sVUFBUSxDQUFDLEVBQUUsQ0FBQztBQUFHLG9CQUFFLEtBQUssTUFBTSxXQUFXLEVBQUUsS0FBSyxHQUFHO0FBQUUsbUJBQUssUUFBUSxhQUFXLEtBQUssUUFBUSxVQUFVLE9BQUcsS0FBSyxNQUFNLE1BQU0sSUFBRSxHQUFFLEtBQUssR0FBRyxHQUFFLEdBQUUsS0FBSyxLQUFJLEdBQUUsS0FBSyxZQUFZLENBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxZQUFVLFdBQVU7QUFBQztBQUFFLHVC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TyxLQUFLLFNBQVMsTUFBSSxNQUFJLEVBQUUsWUFBVSxFQUFFLFlBQVcsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxNQUFJLEtBQUcsS0FBSyxTQUFTLEVBQUUsUUFBTyxDQUFDLElBQUUsS0FBSyxTQUFTLE1BQUksTUFBSSxFQUFFLFlBQVUsRUFBRSxZQUFXLENBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxrQkFBZ0IsV0FBVTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFJLENBQUM7QUFBRSxxQkFBTyxNQUFJLEtBQUcsS0FBSyxTQUFTLEVBQUUsUUFBTyxDQUFDLElBQUUsS0FBSyxTQUFTLEVBQUUsWUFBVyxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUscUJBQW1CLFNBQVMsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFJLENBQUM7QUFBRSxxQkFBTyxNQUFJLElBQUUsTUFBSSxNQUFJLENBQUMsS0FBSyxZQUFVLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBSSxDQUFDLE1BQUksT0FBSyxLQUFLLGVBQWEsS0FBRyxFQUFFLEtBQUssS0FBSyxNQUFNLE1BQU0sS0FBSyxZQUFXLEtBQUssR0FBRyxDQUFDLE1BQUksS0FBSyxnQkFBZ0IsQ0FBQyxHQUFFLEtBQUssVUFBVSxHQUFFLEtBQUssVUFBVSxLQUFHLEtBQUssU0FBUyxFQUFFLFFBQU8sQ0FBQyxJQUFFLE1BQUksS0FBRyxLQUFLLFNBQVMsRUFBRSxRQUFPLENBQUMsSUFBRSxLQUFLLFNBQVMsRUFBRSxTQUFRLENBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxrQkFBZ0IsU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQUksQ0FBQyxHQUFFLElBQUU7QUFBRSxxQkFBTyxNQUFJLEtBQUcsSUFBRSxNQUFJLE1BQUksS0FBSyxNQUFNLFdBQVcsS0FBSyxNQUFJLENBQUMsTUFBSSxLQUFHLElBQUUsR0FBRSxLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQUksQ0FB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SSxJQUFHLEtBQUksSUFBRyxLQUFJLE1BQUssUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sS0FBSSxRQUFPLFFBQU8sUUFBTyxNQUFLLFFBQU8sS0FBSSxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLE1BQUssUUFBTyxLQUFJLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sT0FBTSxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxPQUFNLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLEtBQUksUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sS0FBSSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxTQUFRLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxTQUFRLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxTQUFRLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFB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SSxDQUFDLEdBQUcsS0FBSyxFQUFDLEdBQUUsRUFBQyxHQUFFLENBQUM7QUFBRSxXQUFHLElBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsR0FBRyxNQUFLLENBQUM7QUFBRSxpQkFBTSxDQUFDLENBQUMsS0FBRyxFQUFFO0FBQUEsUUFBVSxJQUFFO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxpQkFBTSxFQUFDLFlBQVcsRUFBRSxJQUFFLElBQUcsY0FBYSxFQUFFLElBQUUsSUFBRyxVQUFTLEVBQUUsSUFBRSxJQUFHLE9BQU0sRUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxHQUFHLE1BQUssS0FBRyxHQUFHLE1BQUssS0FBRyxNQUFJLEdBQUcsS0FBSyxJQUFHLEVBQUU7QUFBRSxXQUFHLFVBQVEsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLEdBQUcsQ0FBQztBQUFBLFFBQUMsSUFBRSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLFdBQVU7QUFBQyxtQkFBTyxHQUFHLE1BQU0sR0FBRSxTQUFTO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUUsS0FBRyxHQUFHLEdBQUcsS0FBSztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFFBQU8sS0FBRyxHQUFHLEdBQUcsS0FBSztBQUFFLFdBQUcsVUFBUSxHQUFHLFdBQVU7QUFBQyxpQkFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLHFCQUFxQixDQUFDO0FBQUEsUUFBQyxDQUFDLElBQUUsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxDQUFDLEtBQUcsV0FBUyxHQUFHLEdBQUUsRUFBRSxJQUFFLEdBQUcsQ0FBQztBQUFBLFFBQUMsSUFBRTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBVSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsY0FBRyxLQUFHO0FBQUssa0JBQU0sR0FBRywwQkFBd0IsQ0FBQztBQUFFLGlCQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLEtBQUc7QUFBQSxRQUFVO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLEtBQUcsV0FBUyxNQUFJLE9BQUssR0FBRyxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsQ0FBQyxJQUFFLElBQUU7QUFBQSxRQUFNO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsaUJBQU8sVUFBVSxTQUFPLElBQUUsR0FBRyxHQUFHLEVBQUUsSUFBRSxHQUFHLE1BQUksR0FBRyxHQUFHO0FBQUEsUUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsR0FBRyxDQUFDLEVBQUUsYUFBYTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsR0FBRyxhQUFZLFdBQVcsS0FBRztBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsU0FBUSxLQUFHLEdBQUcsTUFBSyxLQUFHLE1BQUksR0FBRyxZQUFVLE1BQUksR0FBRyxTQUFRLEtBQUcsTUFBSSxHQUFHLElBQUcsSUFBRztBQUFHLGVBQUssS0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFHLEtBQUcsR0FBRyxLQUFHLElBQUUsSUFBRSxFQUFFLEdBQUcsS0FBRyxHQUFHO0FBQUssU0FBQyxNQUFJLE9BQUssS0FBRyxHQUFHLE1BQU0sYUFBYSxJQUFHLENBQUMsTUFBSSxHQUFHLE1BQUksUUFBTSxLQUFHLEdBQUcsTUFBTSxlQUFlLEdBQUUsT0FBSyxLQUFHLENBQUMsR0FBRztBQUFNLFdBQUcsVUFBUTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsQ0FBQyxDQUFDLE9BQU8seUJBQXVCLENBQUMsR0FBRyxXQUFVO0FBQUMsY0FBSSxJQUFFLE9BQU87QUFBRSxpQkFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFHLEVBQUUsT0FBTyxDQUFDLGFBQVksV0FBUyxDQUFDLE9BQU8sUUFBTSxNQUFJLEtBQUc7QUFBQSxRQUFFLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLE1BQUksQ0FBQyxPQUFPLFFBQU0sT0FBTyxPQUFPLFlBQVU7QUFBQSxNQUFRLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sT0FBTyxLQUFHO0FBQUEsUUFBUSxJQUFFLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLFFBQVE7QUFBRSxpQkFBTyxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsV0FBVSxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUc7QUFBQyxtQkFBTyxHQUFHLENBQUM7QUFBQSxVQUFDLFFBQUM7QUFBTSxtQkFBTTtBQUFBLFVBQVE7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFVLFdB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QUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEtBQUssT0FBTyxHQUFFLEtBQUcsR0FBRyxHQUFHLFFBQVE7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU0sYUFBVyxNQUFJLFNBQU8sS0FBRyxLQUFHLE9BQUssR0FBRyxFQUFFLEtBQUcsSUFBRyxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSyxHQUFFLEtBQUcsR0FBRyxRQUFPLEtBQUcsTUFBSSxHQUFHLEtBQUksS0FBRyxLQUFHLEtBQUcsTUFBSSxHQUFHLGlCQUFlO0FBQUcsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUcsQ0FBQyxHQUFHLElBQUcsQ0FBQyxLQUFHLEVBQUUsTUFBSSxPQUFPLEdBQUcsTUFBSSxXQUFVO0FBQUMsZ0JBQUksSUFBRSxZQUFVO0FBQUUsa0JBQUksR0FBRyxJQUFHLENBQUMsSUFBRSxHQUFHLEtBQUcsR0FBRyxLQUFHLE1BQUksS0FBRyxHQUFHLEtBQUcsR0FBRyxDQUFDLElBQUUsR0FBRyxLQUFHLEdBQUcsQ0FBQztBQUFBLFVBQUM7QUFBQyxpQkFBTyxHQUFHO0FBQUEsUUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsV0FBVSxLQUFHLEdBQUcsYUFBYTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUcsQ0FBQyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBRSxtQkFBTztBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFO0FBQUUsY0FBRyxHQUFFO0FBQUMsZ0JBQUcsTUFBSSxXQUFTLElBQUUsWUFBVyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQztBQUFFLHFCQUFPO0FBQUUsa0JBQU0sR0FBRyx5Q0FBeUM7QUFBQSxVQUFDO0FBQUMsaUJBQU8sTUFBSSxXQUFTLElBQUUsV0FBVSxHQUFHLEdBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLEdBQUUsUUFBUTtBQUFFLGlCQUFPLEdBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFVBQVMsS0FBRyxHQUFHLEVBQUUsS0FBRyxHQUFHLEdBQUcsYUFBYTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLEdBQUcsY0FBYyxDQUFDLElBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLENBQUMsTUFBSSxDQUFDLEdBQUcsV0FBVTtBQUFDLGlC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RSxRQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsS0FBRyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsaUJBQU8sR0FBRyxFQUFFLEdBQUUsR0FBRSxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEsUUFBQyxJQUFFLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxpQkFBTyxFQUFFLEtBQUcsR0FBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFNBQVMsUUFBUTtBQUFFLFdBQUcsR0FBRyxhQUFhLE1BQUksR0FBRyxnQkFBYyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLENBQUM7QUFBQSxRQUFDO0FBQUcsV0FBRyxVQUFRLEdBQUc7QUFBQSxNQUFhLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQVEsV0FBRyxVQUFRLEdBQUcsRUFBRSxLQUFHLGNBQWMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsTUFBTTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLE9BQUssR0FBRyxLQUFHLEdBQUcsQ0FBQztBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFdBQUcsVUFBUSxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsOEJBQTZCLEtBQUcsR0FBRyxXQUFVLEtBQUcsR0FBRyxTQUFRLElBQUcsSUFBRyxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsZ0JBQUcsQ0FBQyxHQUFHLENBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFHLFNBQU87QUFBRSxvQkFBTSxHQUFHLDRCQUEwQixJQUFFLFdBQVc7QUFBRSxtQkFBTztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUUsY0FBSSxHQUFHLFNBQU8sS0FBRyxHQUFHLFVBQVEsR0FBRyxRQUFNLElBQUksT0FBSSxLQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUMsS0FBRyxDQUFDO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxRQUFDLE1BQUksS0FBRyxHQUFHLE9BQU8sR0FBRSxHQUFHLE1BQUksTUFBRyxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxFQUFFLE1BQUksQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFHLFlBQUksSUFBRyxJQUFHLElBQUcsSUFBRztBQUFHLFdBQUcsVUFBUSxFQUFDLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFNBQVEsSUFBRyxXQUFVLEdBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxNQUFJLE9BQU8sMEJBQXlCLEtBQUcsR0FBRyxJQUFHLE1BQU0sR0FBRSxLQUFHLE1BQUksV0FBVTtBQUFBLFFBQUMsRUFBRSxTQUFPLGFBQVksS0FBRyxPQUFLLENBQUMsTUFBSSxNQUFJLEdBQUcsSUFBRyxNQUFNLEVBQUU7QUFBYyxXQUFHLFVBQVEsRUFBQyxRQUFPLElBQUcsUUFBTyxJQUFHLGNBQWEsR0FBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxjQUFhLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRyxTQUFRLEtBQUcsT0FBTyxNQUFNLEVBQUUsTUFBTSxRQUFRO0FBQUUsU0FBQyxHQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLElBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBTyxPQUFHLElBQUUsSUFBRSxDQUFDLENBQUMsRUFBRSxhQUFXLE9BQUcsSUFBRSxJQUFFLENBQUMsQ0FBQyxFQUFFLGNBQVksT0FBRyxJQUFFLEtBQUcsRUFBRSxTQUFPLFNBQU8sRUFBRSxPQUFLLEdBQUU7QUFBRSxjQUFHLEdBQUcsQ0FBQyxNQUFJLE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FBRSxDQUFDLE1BQUksY0FBWSxJQUFFLE1BQUksT0FBTyxDQUFDLEVBQUUsUUFBUSxzQkFBcUIsSUFBSSxJQUFFLE9BQU0sQ0FBQyxHQUFHLEdBQUUsTUFBTSxLQUFHLE1BQUksRUFBRSxTQUFPLE1BQUksR0FBRyxHQUFFLFFBQU8sQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxXQUFTLEVBQUUsU0FBTyxHQUFHLEtBQUssT0FBTyxLQUFHLFdBQVMsSUFBRSxFQUFFLEtBQUksTUFBSSxJQUFHO0FBQUMsZ0JBQUUsRUFBRSxLQUFHLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRTtBQUFBLFVBQU07QUFBTSxnQkFBRSxDQUFDLEtBQUcsRUFBRSxPQUFLLElBQUUsUUFBSSxPQUFPLEVBQUU7QUFBRyxjQUFFLEVBQUUsS0FBRyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxRQUFDLEdBQUcsU0FBUyxXQUFVLFlBQVcsV0FBVTtBQUFDLGlCQUFPLEdBQUcsSUFBSSxLQUFHLEdBQUcsSUFBSSxFQUFFLFVBQVEsR0FBRyxJQUFJO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsS0FBSyxNQUFLLEtBQUcsS0FBSztBQUFNLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsQ0FBQztBQUFFLGlCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFJLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsS0FBSyxLQUFJLEtBQUcsS0FBSztBQUFJLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxpQkFBTyxJQUFFLElBQUUsR0FBRyxJQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEtBQUs7QUFBSSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sSUFBRSxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsZ0JBQWdCLElBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEVBQUUsTUFBTTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRTtBQUFFLGdCQUFHLEtBQUcsS0FBRyxHQUFFO0FBQUMscUJBQUssSUFBRTtBQUFHLG9CQUFHLElBQUUsRUFBRSxNQUFLLEtBQUc7QUFBRSx5QkFBTTtBQUFBLFlBQUU7QUFBTSxxQkFBSyxJQUFFLEdBQUU7QUFBSSxxQkFBSSxLQUFHLEtBQUssTUFBSSxFQUFFLE9BQUs7QUFBRSx5QkFBTyxLQUFHLEtBQUc7QUFBRSxtQkFBTSxDQUFDLEtBQUc7QUFBQSxVQUFFO0FBQUEsUUFBQztBQUFFLFdBQUcsVUFBUSxFQUFDLFVBQVMsR0FBRyxJQUFFLEdBQUUsU0FBUSxHQUFHLEtBQUUsRUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxTQUFRLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBRSxlQUFJLEtBQUs7QUFBRSxhQUFDLEdBQUcsSUFBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLGlCQUFLLEVBQUUsU0FBTztBQUFHLGVBQUcsR0FBRSxJQUFFLEVBQUUsSUFBSSxNQUFJLENBQUMsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFHLGlCQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsV0FBRyxVQUFRLENBQUMsZUFBYyxrQkFBaUIsaUJBQWdCLHdCQUF1QixrQkFBaUIsWUFBVyxTQUFTO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsUUFBSTtBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLE9BQU8sVUFBUyxXQUFXO0FBQUUsV0FBRyxJQUFFLE9BQU8sdUJBQXFCLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLFFBQUk7QUFBQyxXQUFHLElBQUUsT0FBTztBQUFBLE1BQXFCLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNO0FBQUUsV0FBRyxVQUFRLEdBQUcsV0FBVSxTQUFTLEtBQUcsU0FBUyxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUUsR0FBRztBQUFFLGlCQUFPLElBQUUsR0FBRyxHQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQVEsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFHLGFBQUMsR0FBRyxHQUFFLENBQUMsS0FBRyxFQUFFLEtBQUcsR0FBRyxHQUFFLENBQUMsTUFBSSxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxtQkFBa0IsS0FBRyxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLEdBQUcsQ0FBQztBQUFHLGlCQUFPLEtBQUcsS0FBRyxPQUFHLEtBQUcsS0FBRyxRQUFHLEdBQUcsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLEdBQUcsWUFBVSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLENBQUMsRUFBRSxRQUFRLElBQUcsR0FBRyxFQUFFLFlBQVk7QUFBQSxRQUFDLEdBQUUsS0FBRyxHQUFHLE9BQUssQ0FBQyxHQUFFLEtBQUcsR0FBRyxTQUFPLEtBQUksS0FBRyxHQUFHLFdBQVM7QUFBSSxXQUFHLFVBQVE7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxjQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxNQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFFLGNBQUcsSUFBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUcsTUFBSSxHQUFHLEdBQUUsQ0FBQyxDQUFDLElBQUUsS0FBRyxHQUFHLE1BQUksQ0FBQyxHQUFHLFdBQVU7QUFBRSxpQkFBSSxLQUFLLEdBQUU7QUFBQyxrQkFBRyxJQUFFLEVBQUUsSUFBRyxFQUFFLGVBQWEsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLFNBQU8sSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsTUFBSSxPQUFLLEdBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxLQUFHLE1BQUksUUFBTztBQUFD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LEtBQUcsRUFBRSxNQUFNLENBQUM7QUFBRSxtQkFBTyxNQUFJLEdBQUcsS0FBRyxFQUFFLFVBQVUsR0FBRyxHQUFHLE1BQU0sSUFBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxFQUFFLENBQUMsRUFBRTtBQUFBLFVBQU87QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBSSxNQUFJLEdBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxLQUFHLEVBQUUsRUFBRTtBQUFJLGdCQUFFLEVBQUUsUUFBUSxHQUFFLEVBQUUsRUFBRSxRQUFRLEdBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRSxJQUFJO0FBQUUsZ0JBQUksS0FBRztBQUFHLG1CQUFLLE9BQUs7QUFBRyxtQkFBRyxHQUFFLElBQUUsRUFBRSxRQUFRLEdBQUUsR0FBRyxPQUFPLElBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQUUsZ0JBQUUsRUFBRSxRQUFRLEdBQUUsRUFBRSxFQUFFLFVBQVU7QUFBRSxnQkFBSSxLQUFHLHVCQUFPLE9BQU8sSUFBSSxHQUFFLEtBQUcsRUFBRSxRQUFRLEdBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRSxFQUFFLEVBQUUsVUFBVSxHQUFFO0FBQUcsbUJBQUssS0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFHO0FBQUMsa0JBQUksS0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFFLEVBQUU7QUFBRSxxQkFBTyxHQUFHLEdBQUcsT0FBSyxZQUFVLE1BQU0sUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFFLEdBQUcsR0FBRyxNQUFJLEVBQUUsT0FBTyxHQUFHLEdBQUcsS0FBSSxFQUFFLElBQUUsR0FBRyxHQUFHLE1BQUk7QUFBQSxZQUFFO0FBQUMsbUJBQU0sRUFBQyxVQUFTLElBQUcsU0FBUSxHQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsVUFBUyxLQUFHLElBQUcsU0FBUSxLQUFHLENBQUMsRUFBQyxJQUFFLEdBQUUsTUFBSSxHQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBRyxFQUFFLEVBQUUsS0FBSSxLQUFHLE9BQU0sS0FBRyxNQUFLLEtBQUcsT0FBTSxLQUFHLE9BQU8sS0FBSyxFQUFFLEdBQUUsS0FBRyxHQUFHLElBQUksUUFBSSxFQUFFLElBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBRyxPQUFLLEdBQUcsT0FBTyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxRQUFJLEtBQUcsTUFBSSxLQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUU7QUFBRSxnQkFBRyxDQUFDLElBQUc7QUFBQyxrQkFBRyxHQUFHLFdBQVM7QUFBRSx1QkFBTTtBQUFHLGtCQUFHLEdBQUcsV0FBUyxLQUFHLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLEdBQUU7QUFBQyxvQkFBSSxLQUFHLEdBQUcsR0FBRztBQUFJLHVCQUFNLEdBQUcsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxnQkFBSSxLQUFHLEdBQUcsTUFBTSxFQUFFLEVBQUUsSUFBSSxRQUFJLEdBQUcsT0FBTyxJQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFFO0FBQUcsbUJBQU8sS0FBRyxNQUFJLEtBQUcsS0FBRyxPQUFLLE1BQUksR0FBRyxTQUFPLEtBQUcsS0FBRyxNQUFJLEtBQUc7QUFBQSxVQUFFO0FBQUMsbUJBQVMsRUFBRSxHQUFFLElBQUc7QUFBQyxtQkFBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksUUFBSSxJQUFJLE9BQU8sR0FBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxHQUFHLEVBQUMsNEJBQTRCLEdBQUUsR0FBRTtBQUFDO0FBQWEsYUFBRztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElB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LElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxnQkFBRSxJQUFFLEtBQUcsVUFBVTtBQUFHLGtCQUFNLElBQUksRUFBRSxFQUFFLE9BQU0sRUFBRSxNQUFLLEVBQUUsUUFBTyxHQUFFLEdBQUcsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxrQkFBTSxJQUFJLEVBQUUsRUFBRSxPQUFNLEVBQUUsTUFBSyxFQUFFLFFBQU8sRUFBRSxNQUFLLEVBQUUsTUFBTTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLFVBQVUsUUFBTyxJQUFFLElBQUksTUFBTSxJQUFFLElBQUUsSUFBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksZ0JBQUUsSUFBRSxLQUFHLFVBQVU7QUFBRyxrQkFBTSxJQUFJLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQU0sSUFBSSxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxVQUFDO0FBQUMsY0FBSSxLQUFHLENBQUMsR0FBRSxNQUFJO0FBQUMsZ0JBQUksSUFBRSxJQUFJLFlBQVksTUFBTSxHQUFFLElBQUUsR0FBRSxJQUFFO0FBQUUsbUJBQUssSUFBRSxRQUFNO0FBQUMsa0JBQUksSUFBRSxFQUFFO0FBQUssa0JBQUcsSUFBRTtBQUFFLHFCQUFHO0FBQUEsbUJBQU07QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBSyxvQkFBRSxNQUFJLElBQUUsRUFBRSxLQUFJLElBQUUsSUFBRSxFQUFFLEtBQUssR0FBRSxHQUFFLEtBQUcsRUFBRSxJQUFJLElBQUUsRUFBRSxPQUFLO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQyxtQkFBTztBQUFBLFVBQUMsR0FBRyxDQUFDLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLFVBQVMsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxXQUFVLEdBQUUsR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxXQUFVLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxTQUFRLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxPQUFNLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLFFBQU8sR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFNBQVEsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFFBQU8sR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsUUFBTyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsVUFBUyxJQUFHLEdBQUUsSUFBRyxHQUFFLFlBQVcsR0FBRSxZQUFXLElBQUcsR0FBRSxVQUFTLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxRQUFPLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsU0FBUSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsUUFBTyxHQUFFLEdBQUUsR0FBRSxHQUFFLFdBQVUsR0FBRSxJQUFHLEdBQUUsVUFBUyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLFdBQVUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsV0FBVSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLFVBQVMsR0FBRSxZQUFXLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLFNBQVEsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEtBQUksR0FBRSxTQUFRLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxRQUFPLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLFNBQVEsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxXQUFVLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxLQUFJLElBQUcsR0FBRSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxNQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxVQUFTLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxVQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsVUFBUyxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRSxXQUFVLEdBQUUsU0FBUSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxVQUFTLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLE1BQUssR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsWUFBVyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLFNBQVEsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLFlBQVcsR0FBRSxZQUFXLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxRQUFPLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLFNBQVEsR0FBRSxHQUFFLEdBQUUsR0FBRSxXQUFVLElBQUcsR0FBRSxLQUFJLEdBQUUsWUFBVyxJQUFHLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsVUFBUyxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFNBQVEsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsVUFBUyxJQUFHLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxZQUFXLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxVQUFTLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLFNBQVEsSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxVQUFTLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsS0FBSSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsTUFBSyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsTUFBSyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLFlBQVcsSUFBRyxHQUFFLFFBQU8sR0FBRSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxNQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsWUFBVyxNQUFLLEdBQUUsWUFBVyxHQUFFLE1BQUssR0FBRSxPQUFNLElBQUcsR0FBRSxJQUFHLEtBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsU0FBUSxHQUFFLFlBQVcsR0FBRSxPQUFNLEtBQUksR0FBRSxZQUFXLEdBQUUsTUFBSyxJQUFHLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxPQUFNLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsU0FBUSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxLQUFJLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLE1BQUssR0FBRSxJQUFHLEtBQUksR0FBRSxHQUFFLE1BQUssR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLEtBQUksR0FBRSxJQUFHLFFBQU8sR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLE9BQU0sR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLFVBQVMsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxHQUFFLFNBQVEsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsUUFBTyxHQUFFLElBQUcsR0FBRSxVQUFTLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsV0FBVSxHQUFFLFlBQVcsR0FBRSxXQUFVLEdBQUUsWUFBVyxHQUFFLFVBQVMsR0FBRSxZQUFXLEdBQUUsU0FBUSxHQUFFLFlBQVcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxRQUFPLEdBQUUsWUFBVyxHQUFFLFVBQVMsR0FBRSxJQUFHLElBQUcsR0FBRSxXQUFVLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsUUFBTyxHQUFFLFlBQVcsR0FBRSxXQUFVLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxRQUFPLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLFdBQVUsR0FBRSxZQUFXLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLE1BQUssSUFBRyxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxPQUFNLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxRQUFPLEdBQUUsSUFBRyxHQUFFLEdBQUUsUUFBTyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsV0FBVSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLE1BQUssSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLFVBQVMsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLFFBQU8sR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxPQUFNLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLFdBQVUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEtBQUksR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxNQUFLLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsV0FBVSxHQUFFLFNBQVEsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxNQUFLLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLFlBQVcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLEdBQUUsR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLFlBQVcsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsS0FBSSxHQUFFLEdBQUUsR0FBRSxRQUFPLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsU0FBUSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsV0FBVSxJQUFHLEdBQUUsS0FBSSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEdBQUUsR0FBRSxVQUFTLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsWUFBVyxHQUFFLFVBQVMsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLFdBQVUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLFVBQVMsS0FBSSxHQUFFLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEtBQUksR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLE1BQUssR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLE1BQUssR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsSUFBRyxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxPQUFNLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxHQUFFLElBQUcsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEtBQUksTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsR0FBRSxHQUFFLEtBQUksS0FBSSxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsT0FBTSxLQUFJLEdBQUUsR0FBRSxHQUFFLEtBQUksS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLE1BQUssS0FBSSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxNQUFLLEdBQUUsR0FBRSxNQUFLLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxLQUFJLEdBQUUsSUFBRyxRQUFPLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsTUFBSyxLQUFJLEdBQUUsS0FBSSxHQUFFLE9BQU0sR0FBRSxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsT0FBTSxJQUFHLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxXQUFVLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxNQUFLLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxZQUFXLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLFFBQU8sR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsV0FBVSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsUUFBTyxHQUFFLFdBQVUsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsWUFBVyxHQUFFLFVBQVMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsV0FBVSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLEtBQUksR0FBRSxXQUFVLEdBQUUsWUFBVyxHQUFFLFNBQVEsR0FBRSxLQUFJLEdBQUUsV0FBVSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsS0FBSSxJQUFHLEdBQUUsUUFBTyxHQUFFLElBQUcsR0FBRSxVQUFTLEdBQUUsWUFBVyxHQUFFLFVBQVMsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLE1BQUssR0FBRSxZQUFXLEdBQUUsV0FBVSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxRQUFPLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxLQUFJLEdBQUUsWUFBVyxJQUFHLEdBQUUsT0FBTSxHQUFFLFlBQVcsR0FBRSxTQUFRLElBQUcsR0FBRSxVQUFTLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksS0FBSSxHQUFFLFlBQVcsSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxZQUFXLElBQUcsR0FBRSxLQUFJLEdBQUUsV0FBVSxJQUFHLEdBQUUsV0FBVSxJQUFHLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxJQUFHLEdBQUUsV0FBVSxJQUFHLEdBQUUsS0FBSSxHQUFFLE1BQUssSUFBRyxHQUFFLE9BQU0sR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLFlBQVcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLEdBQUUsV0FBVSxHQUFFLFlBQVcsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxRQUFPLEdBQUUsS0FBSSxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLEtBQUksR0FBRSxTQUFRLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxHQUFFLEtBQUksSUFBRyxHQUFFLFVBQVMsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLFlBQVcsR0FBRSxJQUFHLEdBQUUsWUFBVyxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxHQUFFLElBQUcsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLE1BQUssR0FBRSxLQUFJLEtBQUksR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLEtBQUksR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxZQUFXLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsWUFBVyxJQUFHLEdBQUUsWUFBVyxHQUFFLEtBQUksSUFBRyxHQUFFLFlBQVcsR0FBRSxLQUFJLElBQUcsR0FBRSxJQUFHLEdBQUUsV0FBVSxJQUFHLEdBQUUsV0FBVSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsT0FBTSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxNQUFLLEdBQUUsS0FBSSxHQUFFLE1BQUssR0FBRSxLQUFJLEdBQUUsR0FBRSxLQUFJLEtBQUksR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLFdBQVUsR0FBRSxZQUFXLEdBQUUsSUFBRyxJQUFHLEdBQUUsUUFBTyxLQUFJLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLEdBQUUsU0FBUSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsU0FBUSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLElBQUcsR0FBRSxNQUFLLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLElBQUcsR0FBRSxZQUFXLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxVQUFTLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxXQUFVLEdBQUUsWUFBVyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLElBQUcsR0FBRSxVQUFTLEdBQUUsWUFBVyxHQUFFLFlBQVcsSUFBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLFlBQVcsSUFBRyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxHQUFFLFlBQVcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsVUFBUyxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLElBQUcsR0FBRSxRQUFPLEdBQUUsWUFBVyxJQUFHLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxZQUFXLElBQUcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLElBQUcsSUFBRyxHQUFFLFlBQVcsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLFlBQVcsR0FBRSxLQUFJLElBQUcsR0FBRSxZQUFXLEdBQUUsS0FBSSxHQUFFLFVBQVMsR0FBRSxXQUFVLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsV0FBVSxHQUFFLElBQUcsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxJQUFHLEdBQUUsWUFBVyxHQUFFLElBQUcsSUFBRyxHQUFFLEtBQUksR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsU0FBUSxHQUFFLFdBQVUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxJQUFHLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLFNBQVEsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsTUFBSyxHQUFFLFlBQVcsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLFlBQVcsS0FBSSxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLFlBQVcsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsS0FBSSxHQUFFLFlBQVcsR0FBRSxHQUFFLEtBQUksS0FBSSxHQUFFLEtBQUksR0FBRSxHQUFFLEtBQUksS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxZQUFXLElBQUcsR0FBRSxVQUFTLEdBQUUsV0FBVSxHQUFFLElBQUcsR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLE9BQU0sSUFBRyxHQUFFLE9BQU0sR0FBRSxHQUFFLEdBQUUsR0FBRSxZQUFXLE1BQUssR0FBRSxLQUFJLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsWUFBVyxHQUFFLE9BQU0sS0FBSSxHQUFFLEtBQUksR0FBRSxHQUFFLElBQUcsSUFBRyxHQUFFLFlBQVcsR0FBRSxXQUFVLEdBQUUsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxXQUFVLElBQUcsR0FBRSxLQUFJLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsS0FBSSxJQUFHLEdBQUUsSUFBRyxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxXQUFVLEdBQUUsS0FBSSxJQUFHLEdBQUUsV0FBVSxHQUFFLFlBQVcsR0FBRSxPQUFNLEtBQUksR0FBRSxLQUFJLElBQUcsR0FBRSxPQUFNLEtBQUksR0FBRSxXQUFVLEdBQUUsWUFBVyxHQUFFLEdBQUUsSUFBRyxHQUFFLFdBQVUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxZQUFXLEdBQUUsS0FBSSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsS0FBSSxHQUFFLEdBQUUsSUFBRyxJQUFHLEdBQUUsWUFBVyxHQUFFLEdBQUUsSUFBRyxHQUFFLFlBQVcsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxHQUFFLE9BQU0sR0FBRSxPQUFNLEdBQUUsS0FBSSxJQUFHLEdBQUUsWUFBVyxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsT0FBTSxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsS0FBSSxHQUFFLFlBQVcsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxLQUFJLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLFVBQVMsSUFBRyxHQUFFLEtBQUksSUFBRyxHQUFFLEtBQUksR0FBRSxZQUFXLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxZQUFXLEdBQUUsR0FBRSxJQUFHLEdBQUUsS0FBSSxJQUFHLEdBQUUsS0FBSSxHQUFFLFlBQVcsR0FBRSxHQUFFLElBQUcsT0FBTSxHQUFFLEtBQUksR0FBRSxHQUFFLE1BQUssR0FBRSxJQUFHLElBQUcsR0FBRSxLQUFJLE1BQUssR0FBRSxLQUFJLE1BQUssR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEtBQUksR0FBRSxLQUFJLEdBQUUsR0FBRSxJQUFHLE1BQUssR0FBRSxLQUFJLEdBQUUsR0FBRSxPQUFNLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxJQUFJLEdBQUUsQ0FBQyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsV0FBVSxXQUFVLFlBQVcsU0FBUSxZQUFXLFlBQVcsV0FBVSxZQUFXLFdBQVUsWUFBVyxZQUFXLFlBQVcsWUFBVyxXQUFVLFFBQU8sU0FBUSxZQUFXLFlBQVcsT0FBTSxVQUFTLFlBQVcsWUFBVyxTQUFRLFlBQVcsU0FBUSxLQUFJLFVBQVMsWUFBVyxLQUFJLFFBQU8sUUFBTyxLQUFJLFlBQVcsWUFBVyxZQUFXLFVBQVMsTUFBSyxVQUFTLFlBQVcsWUFBVyxZQUFXLFVBQVMsT0FBTSxJQUFHLFNBQVEsVUFBUyxVQUFTLFdBQVUsWUFBVyxZQUFXLFlBQVcsTUFBSyxRQUFPLE9BQU0sWUFBVyxVQUFTLFFBQU8sWUFBVyxXQUFVLE9BQU0sV0FBVSxXQUFVLFlBQVcsTUFBSyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxVQUFTLFlBQVcsWUFBVyxZQUFXLFlBQVcsV0FBVSxXQUFVLFlBQVcsWUFBVyxZQUFXLE9BQU0sWUFBVyxLQUFJLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxNQUFLLFlBQVcsWUFBVyxZQUFXLFNBQVEsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsV0FBVSxZQUFXLFdBQVUsWUFBVyxZQUFXLFlBQVcsU0FBUSxZQUFXLFlBQVcsWUFBVyxZQUFXLFNBQVEsWUFBVyxJQUFHLElBQUcsWUFBVyxZQUFXLE1BQUssWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxJQUFHLFlBQVcsT0FBTSxZQUFXLFFBQU8sV0FBVSxVQUFTLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsTUFBSyxXQUFVLFlBQVcsWUFBVyxXQUFVLFdBQVUsWUFBVyxXQUFVLFlBQVcsV0FBVSxRQUFPLFdBQVUsWUFBVyxZQUFXLE9BQU0sT0FBTSxZQUFXLFdBQVUsT0FBTSxZQUFXLFlBQVcsU0FBUSxZQUFXLE9BQU0sT0FBTSxVQUFTLFlBQVcsWUFBVyxVQUFTLE9BQU0sWUFBVyxZQUFXLFlBQVcsT0FBTSxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsT0FBTSxZQUFXLFlBQVcsU0FBUSxXQUFVLFFBQU8sWUFBVyxPQUFNLFFBQU8sWUFBVyxVQUFTLFVBQVMsT0FBTSxZQUFXLFlBQVcsSUFBRyxZQUFXLFlBQVcsTUFBSyxPQUFNLFFBQU8sS0FBSyxDQUFDO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxVQUFTLEVBQUUsY0FBWSxFQUFFLE9BQU8sV0FBVyxFQUFFLEVBQUUsS0FBSztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGlCQUFJLElBQUUsV0FBUztBQUFNLHFCQUFPO0FBQUUsZ0JBQUksSUFBRSxFQUFFLE9BQU8sV0FBVyxFQUFFLFFBQU0sQ0FBQztBQUFFLG9CQUFPLElBQUUsV0FB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R0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxtQkFBTyxLQUFHLE1BQUksRUFBRSxLQUFHLEdBQUcsTUFBSSxLQUFHLFdBQVMsSUFBRSxLQUFHO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRTtBQUFDLG1CQUFPLEtBQUcsTUFBSSxFQUFFLEtBQUcsR0FBRyxNQUFJLEtBQUcsT0FBSyxJQUFFLEtBQUcsS0FBRyxNQUFJLFFBQU0sTUFBSTtBQUFBLFVBQUk7QUFBQyxjQUFJLEtBQUcsQ0FBQyxjQUFhLGFBQVksWUFBVyxhQUFZLGlCQUFpQjtBQUFFLG1CQUFTLEdBQUcsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFPLGNBQUUsZ0JBQWMsTUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFNLENBQUMsTUFBSSxPQUFLLEVBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTTtBQUFBLFVBQUU7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFPLElBQUUsUUFBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRyxFQUFDLE9BQU0sRUFBQyxJQUFFO0FBQUUsaUJBQUksRUFBRSxXQUFTLEVBQUUsT0FBTSxFQUFFLFVBQVEsRUFBRSxNQUFLLEVBQUUsU0FBTyxFQUFFLFFBQU8sRUFBRSxRQUFNLEVBQUUsT0FBSztBQUFDLGtCQUFHLEVBQUUsRUFBRSxlQUFhLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsZ0JBQWM7QUFBRyxrQkFBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLFFBQU0sRUFBRSxPQUFLLEVBQUUsZ0JBQWMsT0FBSyxFQUFFLGNBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxLQUFLO0FBQUc7QUFBQSxjQUFLLFlBQVUsRUFBRSxjQUFZLFNBQU8sR0FBRTtBQUFDLGtCQUFFLENBQUM7QUFBRTtBQUFBLGNBQUs7QUFBQyxnQkFBRSxDQUFDLEdBQUUsRUFBRSxXQUFTLEVBQUUsT0FBTSxFQUFFLFVBQVEsRUFBRSxNQUFLLEVBQUUsU0FBTyxFQUFFO0FBQUEsWUFBTTtBQUFDLGdCQUFHLEVBQUUsV0FBVTtBQUFDLGtCQUFJLElBQUUsRUFBQyxPQUFNLEVBQUMsTUFBSyxHQUFFLFFBQU8sRUFBQyxHQUFFLEtBQUksRUFBQyxNQUFLLEVBQUUsU0FBUSxRQUFPLEVBQUUsT0FBTSxFQUFDO0FBQUUsZ0JBQUUsVUFBVSxHQUFHLElBQUUsTUFBSyxFQUFFLE1BQU0sR0FBRSxFQUFFLFFBQVEsR0FBRSxHQUFFLEVBQUUsVUFBUyxDQUFDO0FBQUEsWUFBQztBQUFDLG1CQUFPLElBQUU7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsT0FBTSxFQUFDLElBQUU7QUFBRSxtQkFBSyxFQUFFLFFBQU0sRUFBRTtBQUFLLGtCQUFHLEVBQUUsY0FBWSxJQUFHO0FBQUMsb0JBQUksSUFBRTtBQUFHLHVCQUFLLEVBQUUsZ0JBQWM7QUFBSSxzQkFBRyxNQUFJLEtBQUcsSUFBRyxJQUFFLE9BQUksRUFBRSxDQUFDLE1BQUksSUFBRztBQUFDLHdCQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsV0FBVTtBQUFDLDBCQUFJLElBQUUsRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFFLFNBQVEsUUFBTyxFQUFFLE9BQU0sR0FBRSxLQUFJLEVBQUMsTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFFLE9BQU0sRUFBQztBQUFFLHdCQUFFLFVBQVUsR0FBRyxJQUFHLEVBQUUsTUFBTSxHQUFFLEVBQUUsUUFBTSxDQUFDLEdBQUUsSUFBRSxHQUFFLEVBQUUsT0FBTSxDQUFDO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxFQUFFLFdBQVMsRUFBRSxPQUFNLEVBQUUsVUFBUSxFQUFFLE1BQUssRUFBRSxTQUFPLEVBQUUsUUFBTztBQUFBLGtCQUFDO0FBQUMsb0JBQUc7QUFBRTtBQUFTLGtCQUFFLEVBQUUsZUFBYSxJQUFFLEVBQUUsZ0JBQWMsTUFBSSxLQUFHLEdBQUUsRUFBRSxDQUFDLE1BQUksRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLElBQUUsS0FBRyxLQUFHLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBSyxpQkFBQyxFQUFFLGNBQVksU0FBTyxLQUFHLElBQUUsSUFBRSxLQUFHLEdBQUUsRUFBRSxDQUFDLE1BQUksS0FBRyxJQUFHLEVBQUUsQ0FBQztBQUFHLGNBQUUsR0FBRSxFQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxFQUFFLE9BQU0sSUFBRTtBQUFFO0FBQUUseUJBQU87QUFBQyxvQkFBSSxJQUFFLEVBQUU7QUFBWSxvQkFBRyxFQUFFLENBQUMsR0FBRSxJQUFFO0FBQUUsdUJBQUc7QUFBQTtBQUFRLDBCQUFPO0FBQUEseUJBQVE7QUFBRywwQkFBRztBQUFFO0FBQU0sNEJBQU07QUFBQSx5QkFBTztBQUFHLDJCQUFHO0FBQUU7QUFBQSx5QkFBVztBQUFHLDJCQUFHO0FBQUU7QUFBQSx5QkFBVztBQUFHLDJCQUFHO0FBQUU7QUFBQSx5QkFBVztBQUFBLHlCQUFRO0FBQUEseUJBQVE7QUFBQSx5QkFBVTtBQUFLLHdCQUFFLEdBQUUsRUFBRTtBQUFBO0FBQUUsb0JBQUcsRUFBRSxTQUFPLEVBQUUsT0FBTztBQUFPLHlCQUFPLEVBQUUsR0FBRSxFQUFFO0FBQUEsY0FBQztBQUFDLGdCQUFJLElBQUUsRUFBRSxRQUFNLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxhQUFZLEVBQUMsT0FBTSxFQUFDLElBQUU7QUFBRSxtQkFBSyxHQUFHLENBQUMsS0FBRztBQUFDLHNCQUFPO0FBQUEscUJBQVE7QUFBSSxzQkFBRSxLQUFHLEVBQUUsR0FBRSxJQUFHLEdBQUcsR0FBRSxLQUFHO0FBQUU7QUFBQSxxQkFBVztBQUFJLHNCQUFFLEtBQUcsRUFBRSxHQUFFLElBQUcsR0FBRyxHQUFFLEtBQUc7QUFBRTtBQUFBLHFCQUFXO0FBQUksc0JBQUUsS0FBRyxFQUFFLEdBQUUsSUFBRyxHQUFHLEdBQUUsS0FBRztBQUFFO0FBQUEscUJBQVc7QUFBSSxzQkFBRSxNQUFJLEVBQUUsR0FBRSxJQUFHLEdBQUcsR0FBRSxLQUFHO0FBQUc7QUFBQSxxQkFBVztBQUFJLHNCQUFFLEtBQUcsRUFBRSxHQUFFLElBQUcsR0FBRyxHQUFFLEtBQUc7QUFBRTtBQUFBLHFCQUFXO0FBQUksc0JBQUUsTUFBSSxFQUFFLEdBQUUsSUFBRyxHQUFHLEdBQUUsS0FBRztBQUFHO0FBQUE7QUFBYyxvQkFBRSxHQUFFLEVBQUU7QUFBQTtBQUFFLGtCQUFFLEVBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxnQkFBSSxJQUFFLEVBQUUsT0FBTyxNQUFNLEdBQUUsRUFBRSxLQUFLLEdBQUUsSUFBRSxFQUFFLE9BQU8sTUFBTSxHQUFFLENBQUM7QUFBRSxtQkFBTyxFQUFFLGNBQVksRUFBQyxTQUFRLEdBQUUsT0FBTSxFQUFDLEdBQUUsSUFBRSxRQUFNLEVBQUUsV0FBUyxFQUFFLE9BQU8sTUFBTSxFQUFFLFVBQVMsRUFBRSxLQUFLLElBQUcsRUFBRSxhQUFXLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRTtBQUFBLFVBQUs7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUc7QUFBQyxxQkFBTyxJQUFJLE9BQU8sR0FBRSxDQUFDO0FBQUEsWUFBQyxRQUFDO0FBQU0sZ0JBQUUsR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRTtBQUFNLG9CQUFNLEVBQUUsS0FBRyxPQUFLLEtBQUc7QUFBQyxrQkFBRyxNQUFJO0FBQUUsdUJBQU8sS0FBRyxFQUFFLE9BQU8sTUFBTSxHQUFFLEVBQUUsS0FBSyxHQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsUUFBTSxFQUFFLFdBQVMsRUFBRSxPQUFPLE1BQU0sR0FBRSxFQUFFLEtBQUssSUFBRyxFQUFFLGFBQVcsR0FBRTtBQUFVLG1CQUFJLElBQUUsT0FBSyxLQUFHLE1BQUksSUFBRztBQUFDLG9CQUFHLEtBQUcsRUFBRSxPQUFPLE1BQU0sR0FBRSxFQUFFLEtBQUssR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsT0FBSyxNQUFJLFFBQU0sTUFBSSxNQUFLO0FBQUMsc0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQUcsSUFBRSxLQUFHLEVBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxnQkFBQztBQUFNLHVCQUFHLEVBQUUsQ0FBQztBQUFFLG9CQUFFLEVBQUUsUUFBTTtBQUFBLGNBQUM7QUFBQyxnQkFBRSxTQUFPLEVBQUUsT0FBSyxFQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsR0FBRSxFQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBTztBQUFBLG1CQUFRO0FBQUcsdUJBQU87QUFBQSxtQkFBTztBQUFJLHVCQUFPO0FB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LEVBQUUsS0FBRyxRQUFNO0FBQUMsd0JBQUcsTUFBSSxJQUFHO0FBQUMsMkJBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLENBQUM7QUFBRTtBQUFBLG9CQUFRO0FBQUMsd0JBQUUsR0FBRSxJQUFFLElBQUUsS0FBRyxJQUFFLEtBQUksS0FBSSxJQUFFLEVBQUUsQ0FBQztBQUFBLGtCQUFDO0FBQUMsbUJBQUMsSUFBRSxLQUFHLENBQUMsTUFBSSxFQUFFLEdBQUUsSUFBRSxJQUFFLElBQUUsR0FBRztBQUFBLGdCQUFDLFlBQVUsSUFBRSxRQUFNLElBQUc7QUFBQyx1QkFBSSxJQUFFLEtBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUcsUUFBTTtBQUFDLHdCQUFHLE1BQUksSUFBRztBQUFDLDJCQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUU7QUFBQSxvQkFBUTtBQUFDLHdCQUFFLEdBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxLQUFJLEtBQUksSUFBRSxFQUFFLENBQUM7QUFBQSxrQkFBQztBQUFDLG1CQUFDLElBQUUsS0FBRyxDQUFDLE1BQUksRUFBRSxHQUFFLElBQUUsSUFBRSxJQUFFLEdBQUc7QUFBQSxnQkFBQyxXQUFTLEVBQUUsS0FBRztBQUFHLHVCQUFJLElBQUUsUUFBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxFQUFFLEtBQUcsTUFBSTtBQUFDLHdCQUFHLEVBQUUsS0FBRyxLQUFJO0FBQUMsMEJBQUUsSUFBRyxJQUFFO0FBQUU7QUFBQSxvQkFBSztBQUFDLHdCQUFFLElBQUUsS0FBRyxJQUFFLEtBQUksSUFBRSxFQUFFLENBQUM7QUFBQSxrQkFBQztBQUFBO0FBQU0sb0JBQUUsS0FBRyxPQUFLLElBQUUsUUFBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBTyxJQUFHLElBQUUsTUFBSSxNQUFJLE1BQUksRUFBRSxHQUFFLENBQUM7QUFBRSxrQkFBRyxJQUFFLElBQUc7QUFBQyxv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QUFFLElBQUcsRUFBQyxPQUFNLFFBQU8sR0FBRSxRQUFPLEVBQUMsT0FBTSxTQUFRLEdBQUUsT0FBTSxFQUFDLE9BQU0sTUFBSyxHQUFFLE1BQUssRUFBQyxPQUFNLE1BQUssR0FBRSxPQUFNLEVBQUMsT0FBTSxNQUFLLEdBQUUsS0FBSSxFQUFDLE9BQU0sTUFBSyxHQUFFLE9BQU0sRUFBQyxPQUFNLE1BQUssR0FBRSxRQUFPLEVBQUMsT0FBTSxTQUFRLEdBQUUsT0FBTSxFQUFDLE9BQU0sTUFBSyxHQUFFLFFBQU8sRUFBQyxPQUFNLE1BQUssR0FBRSxVQUFTLEVBQUMsT0FBTSxNQUFLLEdBQUUsU0FBUSxFQUFDLE9BQU0sTUFBSyxHQUFFLFlBQVcsRUFBQyxPQUFNLFFBQU8sR0FBRSxJQUFHLEVBQUMsT0FBTSxNQUFLLEdBQUUsTUFBSyxFQUFDLE9BQU0sU0FBUSxHQUFFLFNBQVEsRUFBQyxPQUFNLE1BQUssR0FBRSxPQUFNLEVBQUMsT0FBTSxPQUFNLEdBQUUsT0FBTSxFQUFDLE9BQU0sT0FBTSxHQUFFLE9BQU0sRUFBQyxPQUFNLE1BQUssR0FBRSxPQUFNLEVBQUMsT0FBTSxNQUFLLEdBQUUsYUFBWSxFQUFDLE9BQU0sTUFBSyxHQUFFLFVBQVMsRUFBQyxPQUFNLE1BQUssR0FBRSxRQUFPLEVBQUMsT0FBTSxNQUFLLEdBQUUsU0FBUSxFQUFDLE9BQU0sTUFBSyxHQUFFLE9BQU0sRUFBQyxPQUFNLE1BQUssR0FBRSxNQUFLLEVBQUMsT0FBTSxNQUFLLEdBQUUsS0FBSSxFQUFDLE9BQU0sTUFBSyxHQUFFLFlBQVcsRUFBQyxPQUFNLE1BQUssR0FBRSxRQUFPLEVBQUMsT0FBTSxNQUFLLEdBQUUsV0FBVSxFQUFDLE9BQU0sTUFBSyxHQUFFLEtBQUksRUFBQyxPQUFNLE9BQU0sR0FBRSxNQUFLLEVBQUMsT0FBTSxNQUFLLEdBQUUsSUFBRyxFQUFDLE9BQU0sT0FBTSxHQUFFLFNBQVEsRUFBQyxPQUFNLE1BQUssR0FBRSxTQUFRLEVBQUMsT0FBTSxNQUFLLEdBQUUsV0FBVSxFQUFDLE9BQU0sTUFBSyxHQUFFLFFBQU8sRUFBQyxPQUFNLE1BQUssR0FBRSxLQUFJLEVBQUMsT0FBTSxNQUFLLEdBQUUsUUFBTyxFQUFDLE9BQU0sTUFBSyxHQUFFLE9BQU0sRUFBQyxPQUFNLE1BQUssR0FBRSxNQUFLLEVBQUMsT0FBTSxNQUFLLEdBQUUsTUFBSyxFQUFDLE9BQU0sTUFBSyxHQUFFLE9BQU0sRUFBQyxPQUFNLE9BQU0sR0FBRSxNQUFLLEVBQUMsT0FBTSxNQUFLLEdBQUUsTUFBSyxFQUFDLE9BQU0sVUFBUyxHQUFFLElBQUcsRUFBQyxPQUFNLE1BQUssR0FBRSxXQUFVLEVBQUMsT0FBTSxVQUFTLEdBQUUsUUFBTyxFQUFDLE9BQU0sT0FBTSxHQUFFLE1BQUssRUFBQyxPQUFNLE9BQU0sRUFBQyxDQUFDO0FBQUUsbUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFLLEVBQUUsRUFBRSxDQUFDO0FBQUk7QUFBQyxtQkFBTyxFQUFFLGFBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxVQUFTLEVBQUUsS0FBSyxHQUFFLEVBQUUsZ0JBQWMsTUFBSSxFQUFFLGNBQVksTUFBSSxHQUFHLEVBQUUsZUFBYSxTQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsR0FBRyxDQUFDO0FBQUUsbUJBQU8sR0FBRyxDQUFDLEtBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLGFBQVcsRUFBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxFQUFFLEtBQUcsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUU7QUFBTSxtQkFBSyxFQUFFLFFBQU0sRUFBRTtBQUFLLGtCQUFHLEVBQUUsZ0JBQWMsSUFBRztBQUFDLGtCQUFFLGNBQVksRUFBRSxPQUFPLE1BQU0sR0FBRSxFQUFFLEtBQUssR0FBRSxJQUFFO0FBQUUsb0JBQUksSUFBRSxHQUFHLENB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LEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLFVBQVMsV0FBVSxLQUFJLFFBQU8sU0FBUSxTQUFRLFdBQVUsVUFBUyxJQUFHLFNBQVEsVUFBUyxJQUFHLFVBQVMsVUFBUyxTQUFRLFdBQVUsV0FBVSxXQUFVLFdBQVUsV0FBVSxXQUFVLFdBQVUsV0FBVSxXQUFVLFdBQVUsSUFBRyxZQUFXLFNBQVEsWUFBVyxTQUFRLElBQUcsS0FBSSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sVUFBUyxLQUFJLElBQUcsU0FBUSxRQUFPLEtBQUksTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxRQUFPLE1BQUssUUFBTyxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLE1BQUssTUFBSyxNQUFLLFFBQU8sTUFBSyxNQUFLLFFBQU8sTUFBSyxNQUFLLFNBQVEsU0FBUSxZQUFXLFVBQVMsR0FBRztBQUFFLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBRSxTQUFPLEVBQUUsUUFBTSxLQUFHLEdBQUUsRUFBRSxXQUFTLEVBQUUsT0FBTSxFQUFFLGNBQVksRUFBRSxRQUFPLEVBQUUsWUFBVSxFQUFFLE1BQUssRUFBRSxRQUFNLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFdBQVMsRUFBRSxVQUFRLFNBQVE7QUFBQyxrQkFBSSxJQUFFLEVBQUMsT0FBTSxFQUFDLE1BQUssRUFBRSxTQUFRLFFBQU8sRUFBRSxPQUFNLEdBQUUsS0FBSSxFQUFDLE1BQUssRUFBRSxNQUFLLFFBQU8sRUFBRSxPQUFNLEVBQUM7QUFBRSxnQkFBRSxRQUFRLEdBQUcsRUFBRSxLQUFLLEdBQUUsRUFBRSxVQUFTLEVBQUUsT0FBTSxDQUFDO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxFQUFFLFVBQVEsR0FBRSxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsT0FBTSxJQUFFLEVBQUUsTUFBSyxJQUFFLEVBQUU7QUFBTyxtQkFBSyxFQUFFLFFBQU0sRUFBRSxPQUFLO0FBQUMsZ0JBQUUsV0FBUyxFQUFFLE9BQU0sRUFBRSxTQUFPLEVBQUUsUUFBTyxFQUFFLFVBQVEsRUFBRTtBQUFLLGtCQUFJLElBQUUsRUFBRTtBQUFZLGtCQUFHLEtBQUcsS0FBSTtBQUFDLG9CQUFJLElBQUUsR0FBRztBQUFHLHdCQUFPO0FBQUEsdUJBQVE7QUFBQSx1QkFBYztBQUFBLHVCQUFRO0FBQUEsdUJBQWE7QUFBQSx1QkFBZ0I7QUFBQSx1QkFBYztBQUFBLHVCQUFRO0FBQUEsdUJBQVE7QUFBQSx1QkFBZ0I7QUFBQSx1QkFBUTtBQUFBLHVCQUFjO0FBQUEsdUJBQVM7QUFBSSwyQkFBTyxFQUFFLENBQUMsR0FBRTtBQUFBLHVCQUFPO0FBQU8sMkJBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUssMkJBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQVUsMkJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRztBQUFBLHVCQUFPO0FBQVUsMkJBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLHVCQUFPO0FBQUksMkJBQU8sR0FBRyxHQUFFLENBQUM7QUFBQSx1QkFBTztBQUFJLDJCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBSSwyQkFBTyxHQUFHLENBQUM7QUFBQSx1QkFBTztBQUFJLHNCQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUkseUJBQUcsR0FBRSxFQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUksc0JBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxJQUFFLEtBQUc7QUFBRTtBQUFBLHVCQUFXO0FBQVEsd0JBQUksSUFBRSxFQUFFLENBQUM7QUFBRSx3QkFBRyxFQUFFLFFBQU0sRUFBRSxLQUFJO0FBQUMsMEJBQUcsTUFBSTtBQUFHLCtCQUFPLEVBQUUsUUFBTSxFQUFFLE9BQUssRUFBRSxDQUFDLE1BQUksTUFBSSxFQUFFLENBQUMsR0FBRSxXQUFTO0FBQVEsMEJBQUcsTUFBSTtBQUFHLCtCQUFPLEVBQUUsQ0FBQyxHQUFFO0FBQVEsMEJBQUcsTUFBSSxJQUFHO0FBQUMsNEJBQUksSUFBRSxFQUFFLFFBQU07QUFBRSw0QkFBRyxJQUFFLElBQUUsRUFBRSxPQUFLLEVBQUUsV0FBVyxDQUFDLE1BQUksTUFBSSxFQUFFLFdBQVcsSUFBRSxDQUFDLEtBQUcsSUFBRztBQUFDLDRCQUFFLFVBQVEsR0FBRSxFQUFFLGNBQVksRUFBRSxXQUFXLEVBQUUsU0FBTyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTSxHQUFFLElBQUUsRUFBRSxVQUFTLElBQUUsRUFBRSxTQUFRLElBQUUsRUFBRTtBQUFPO0FBQUEsd0JBQVE7QUFBQywrQkFBTztBQUFBLHNCQUFPO0FBQUMsMEJBQUcsTUFBSSxJQUFHO0FBQUMsNkJBQUksSUFBRSxNQUFJO0FBQUUsaUNBQU87QUFBUSw0QkFBSSxJQUFFLEVBQUUsUUFBTTtBQUFFLDRCQUFHLElBQUUsRUFBRSxRQUFNLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxNQUFJLE1BQUksTUFBSTtBQUFJO0FBQU0sK0JBQU8sRUFBRSxDQUFDLEdBQUU7QUFBQSxzQkFBRTtBQUFBLG9CQUFDO0FBQUMsMkJBQU87QUFBQSx1QkFBYSxZQUFXO0FBQUMsc0JBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFZLDJCQUFPLE1BQUksS0FBRyxFQUFFLENBQUMsTUFBSSxNQUFJLEVBQUUsQ0FBQyxHQUFFLFdBQVMsVUFBUSxNQUFJLE1BQUksRUFBRSxDQUFDLEdBQUUsTUFBSTtBQUFBLGtCQUFVO0FBQUEsdUJBQU07QUFBUywyQkFBTyxFQUFFLENBQUMsTUFBSSxLQUFHLFdBQVMsRUFBRSxDQUFDLE1BQUksS0FBRyxXQUFTLEVBQUUsQ0FBQyxHQUFFO0FBQUEsdUJBQWM7QUFBUSwyQkFBTyxFQUFFLENBQUMsTUFBSSxLQUFHLFdBQVMsRUFBRSxDQUFDLEdBQUU7QUFBQSx1QkFBYyxTQUFRO0FBQUMsd0JBQUcsRUFBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLEVBQUU7QUFBSSw2QkFBTztBQUFRLHdCQUFJLElBQUUsRUFBRTtBQUFZLDJCQUFPLE1BQUksTUFBSSxFQUFFLENBQUMsR0FBRSxXQUFTLE1BQUksS0FBRyxVQUFRLEVBQUUsQ0FBQyxNQUFJLEtBQUcsV0FBUyxFQUFFLENBQUMsR0FBRTtBQUFBLGtCQUFRO0FBQUEsdUJBQU07QUFBUSwyQkFBTyxFQUFFLENBQUMsTUFBSSxLQUFHLFdBQVMsRUFBRSxDQUFDLEdBQUU7QUFBQSx1QkFBYyxVQUFTO0FBQUMsc0JBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFZLDJCQUFPLE1BQUksTUFBSSxFQUFFLENBQUMsR0FBRSxZQUFVLE1BQUksTUFBSSxFQUFFLENBQUMsR0FBRSxXQUFTO0FBQUEsa0JBQVE7QUFBQSx1QkFBTSxVQUFTO0FBQUMsc0JBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFZLHdCQUFHLE1BQUksSUFBRztBQUFDLDBCQUFHLEVBQUUsQ0FBQyxJQUFHLElBQUUsS0FBRyxNQUFJLEVBQUUsZ0JBQWMsSUFBRztBQUFDLHlCQUFDLElBQUUsU0FBTyxLQUFHLEVBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFTLElBQUUsRUFBRSxTQUFRLElBQUUsRUFBRTtBQUFPO0FBQUEsc0JBQVE7QUFBQyw2QkFBTztBQUFBLG9CQUFRO0FBQUMsMkJBQU8sTUFBSSxNQUFJLEVBQUUsQ0FBQyxHQUFFLFdBQVM7QUFBQSxrQkFBUTtBQUFBLHVCQUFNLFNBQVE7QUFBQyx3QkFBRyxFQUFFLENBQUMsR0FBRSxFQUFFLFFBQU0sRUFBRSxLQUFJO0FBQUMsMEJBQUksSUFBRSxFQUFFO0FBQVksMEJBQUcsTUFBSSxJQUFHO0FBQUMsMEJBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLEdBQUUsSUFBRSxFQUFFLFVBQVMsSUFBRSxFQUFFLFNBQVEsSUFBRSxFQUFFO0FBQU87QUFBQSxzQkFBUTtBQUFDLDBCQUFHLE1BQUksSUFBRztBQUFDLDBCQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsVUFBUyxJQUFFLEVBQUUsU0FBUSxJQUFFLEVBQUU7QUFBTztBQUFBLHNCQUFRO0FBQUMsMEJBQUcsSUFBRTtBQUFNLCtCQUFPLEdBQUcsR0FBRSxDQUFDO0FBQUUsMEJBQUcsTUFBSTtBQUFHLCtCQUFPLEVBQUUsQ0FBQyxHQUFFO0FBQUEsb0JBQU87QUFBQywyQkFBTztBQUFBLGtCQUFPO0FBQUEsdUJBQU07QUFBUyx3QkFBSSxJQUFFLEVBQUUsQ0FBQztBQUFFLHdCQUFHLEtBQUcsTUFBSSxLQUFHO0FBQUcsNkJBQU8sR0FBRyxHQUFFLEdBQUUsRUFBRTtBQUFFLHdCQUFHLE1BQUksSUFBRztBQUFDLDBCQUFJLElBQUUsRUFBRSxRQUFNO0FBQUUsMEJBQUcsSUFBRSxFQUFFLE9BQUssRUFBRSxXQUFXLENBQUMsTUFBSTtBQUFHLCtCQUFPLEVBQUUsVUFBUSxHQUFFLEVBQUUsY0FBWSxFQUFFLFdBQVcsRUFBRSxTQUFPLENBQUMsR0FBRTtBQUFBLG9CQUFFO0FBQUMsMkJBQU87QUFBQSx1QkFBYyxTQUFRO0FBQUMsc0JBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFZLDJCQUFPLE1BQUksT0FBSyxFQUFFLENBQUMsR0FBRSxFQUFFLGdCQUFjLE1BQUksRUFBRSxDQUFDLEdBQUUsV0FBUyxXQUFTLE1BQUksTUFBSSxFQUFFLENBQUMsR0FBRSxXQUFTO0FBQUEsa0JBQU87QUFBQSx1QkFBTSxTQUFRO0FBQUMsc0JBQUUsQ0FBQztBQUFFLHdCQUFJLElBQUUsRUFBRTtBQUFZLHdCQUFHLE1BQUk7QUFBRyw2QkFBTyxFQUFFLENBQUMsR0FBRTtBQUFRLHdCQUFHLE1BQUk7QUFBRyw2QkFBTztBQUFRLHdCQUFHLEVBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBTSxFQUFFLEtBQUk7QUFBQywwQkFBSSxJQUFFLEVBQUU7QUFBWSwwQkFBRyxNQUFJO0FBQUcsK0JBQU8sRUFBRSxDQUFDLE1BQUksTUFBSSxFQUFFLENBQUMsR0FBRSxXQUFTO0FBQVEsMEJBQUcsTUFBSTtBQUFHLCtCQUFPLEVBQUUsQ0FBQyxHQUFFO0FBQUEsb0JBQU87QUFBQywyQkFBTztBQUFBLGtCQUFPO0FBQUEsdUJBQU0sU0FBUTtBQUFDLHNCQUFFLENBQUM7QUFBRSx3QkFBSSxJQUFFLEVBQUU7QUFBWSwyQkFBTyxNQUFJLE1BQUksRUFBRSxDQUFDLEdBQUUsRUFBRSxnQkFBYyxNQUFJLEVBQUUsQ0FBQyxHQUFFLFdBQVMsV0FBUyxNQUFJLE1BQUksRUFBRSxDQUFDLEdBQUUsV0FBUztBQUFBLGtCQUFPO0FBQUEsdUJBQU0sSUFBRztBQUFDLHdCQUFJLElBQUUsRUFBRSxDQUFDO0FBQUUsd0JBQUcsTUFBSTtBQUFHLDZCQUFPLEVBQUUsQ0FBQyxHQUFFLEVBQUUsZ0JBQWMsTUFBSSxFQUFFLENBQUMsR0FBRSxXQUFTO0FBQVUsd0JBQUcsTUFBSSxJQUFHO0FBQUMsMEJBQUksSUFBRSxFQUFFLFFBQU07QUFBRSwwQkFBRyxJQUFFLEVBQUUsUUFBTSxJQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUUsRUFBRSxLQUFHLE1BQUksS0FBRztBQUFLLCtCQUFPLEVBQUUsQ0FBQyxHQUFFO0FBQUEsb0JBQVE7QUFBQywyQkFBTztBQUFBLGtCQUFFO0FBQUE7QUFBQSxjQUFFLE9BQUs7QUFBQyxxQkFBSSxJQUFFLFNBQU8sR0FBRTtBQUFDLHNCQUFFLElBQUUsS0FBRyxHQUFFLEVBQUUsQ0FBQztBQUFFO0FBQUEsZ0JBQVE7QUFBQyxxQkFBSSxJQUFFLFdBQVMsVUFBUSxHQUFHLE1BQUksS0FBRyxXQUFTLElBQUUsS0FBRyxPQUFLO0FBQUUsMEJBQU8sSUFBRSxXQUFTLFVBQVEsS0FBRyxJQUFFLFNBQU8sS0FBRyxJQUFFLE9BQUssUUFBTyxHQUFHLE1BQUksS0FBRyxPQUFLLElBQUUsS0FBRyxPQUFLLEtBQUcsRUFBRSxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUMsR0FBRSxFQUFFLFNBQVEsRUFBRSxjQUFZLElBQUcsRUFBRSxVQUFTLEVBQUUsYUFBVyxJQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFHLEVBQUUsQ0FBQyxHQUFFO0FBQUMsb0JBQUUsQ0FBQztBQUFFO0FBQUEsZ0JBQVE7QUFBQyxrQkFBRSxHQUFFLElBQUcsRUFBRSxDQUFDLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLG1CQUFPO0FBQUEsVUFBTztBQUFDLGNBQUksS0FBRyxFQUFDLE9BQU0sUUFBTyxLQUFJLEtBQUksUUFBTyxRQUFPLFFBQU8sVUFBUyxPQUFNLFFBQU8sS0FBSSxVQUFTLEtBQUksYUFBWSxRQUFPLFFBQU8sT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxlQUFjLFVBQVMsT0FBTSxRQUFPLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxRQUFPLE1BQUssUUFBTyxXQUFVLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsU0FBUSxVQUFTLFlBQVcsVUFBUyxNQUFLLFVBQVMsS0FBSSxhQUFZLE1BQUssYUFBWSxPQUFNLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxRQUFPLFFBQU8sVUFBUyxLQUFJLFVBQVMsc0JBQXFCLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFFBQU8sT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsU0FBUSxRQUFPLFdBQVUsUUFBTyxLQUFJLFVBQVMsS0FBSSxVQUFTLFdBQVUsVUFBUyxhQUFZLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUywwQkFBeUIsVUFBUyx1QkFBc0IsVUFBUyxpQkFBZ0IsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFdBQVUsVUFBUyxRQUFPLFVBQVMsaUJBQWdCLFVBQVMsTUFBSyxVQUFTLFdBQVUsVUFBUyxpQ0FBZ0MsVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLEtBQUksVUFBUyxRQUFPLFVBQVMsSUFBRyxVQUFTLFVBQVMsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsS0FBSSxhQUFZLGtCQUFpQixRQUFPLGdCQUFlLFVBQVMsd0JBQXVCLFVBQVMsa0JBQWlCLEtBQUksa0JBQWlCLFVBQVMsU0FBUSxVQUFTLGVBQWMsVUFBUyxNQUFLLGFBQVksS0FBSSxRQUFPLFFBQU8sVUFBUyxVQUFTLFVBQVMsdUJBQXNCLFVBQVMsV0FBVSxRQUFPLGlCQUFnQixVQUFTLGlCQUFnQixVQUFTLHNCQUFxQixVQUFTLGVBQWMsVUFBUyxxQkFBb0IsVUFBUywwQkFBeUIsVUFBUyxzQkFBcUIsVUFBUyxrQkFBaUIsVUFBUyxnQkFBZSxVQUFTLGVBQWMsVUFBUyxtQkFBa0IsVUFBUyxtQkFBa0IsVUFBUyxXQUFVLFVBQVMsY0FBYSxVQUFTLGtCQUFpQixVQUFTLFdBQVUsVUFBUyxxQkFBb0IsVUFBUyxtQkFBa0IsVUFBUyxnQkFBZSxVQUFTLG1CQUFrQixVQUFTLG9CQUFtQixVQUFTLGlCQUFnQixVQUFTLG9CQUFtQixVQUFTLFNBQVEsVUFBUyxjQUFhLFVBQVMsV0FBVSxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksUUFBTyxRQUFPLFFBQU8sUUFBTyxVQUFTLE9BQU0sUUFBTyxLQUFJLFVBQVMsTUFBSyxVQUFTLEtBQUksYUFBWSxRQUFPLFFBQU8sU0FBUSxVQUFTLE9BQU0sVUFBUyxrQkFBaUIsVUFBUyxzQkFBcUIsVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLFNBQVEsVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxNQUFLLFFBQU8sUUFBTyxVQUFTLGNBQWEsVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLG1CQUFrQixVQUFTLHVCQUFzQixVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsWUFBVyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsSUFBRyxLQUFJLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxLQUFJLGFBQVksSUFBRyxVQUFTLE1BQUssYUFBWSxjQUFhLFVBQVMsa0JBQWlCLFVBQVMsa0JBQWlCLFVBQVMsZ0JBQWUsVUFBUyxhQUFZLFVBQVMsbUJBQWtCLFVBQVMsY0FBYSxVQUFTLE1BQUssYUFBWSxJQUFHLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxLQUFJLEtBQUksT0FBTSxVQUFTLEtBQUksVUFBUyxjQUFhLFVBQVMsTUFBSyxVQUFTLGdCQUFlLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxjQUFhLFVBQVMsV0FBVSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLFFBQU8sUUFBTyxPQUFNLFFBQU8sS0FBSSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsUUFBTyxRQUFPLElBQUcsVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsVUFBUyxVQUFTLGNBQWEsVUFBUyxnQkFBZSxVQUFTLGdCQUFlLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxRQUFPLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssVUFBUyxJQUFHLEtBQUksUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsWUFBVyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxrQkFBaUIsVUFBUyxXQUFVLFVBQVMsY0FBYSxVQUFTLHFCQUFvQixVQUFTLGFBQVksVUFBUyxtQkFBa0IsVUFBUyxtQkFBa0IsVUFBUyxnQkFBZSxVQUFTLG1CQUFrQixVQUFTLFdBQVUsVUFBUyxnQkFBZSxVQUFTLGlCQUFnQixVQUFTLFNBQVEsVUFBUyxjQUFhLFVBQVMsZUFBYyxVQUFTLGNBQWEsVUFBUyxpQkFBZ0IsVUFBUyxtQkFBa0IsVUFBUyxrQkFBaUIsVUFBUyxpQkFBZ0IsVUFBUyxjQUFhLFVBQVMsaUJBQWdCLFVBQVMsWUFBVyxVQUFTLGVBQWMsVUFBUyxXQUFVLFVBQVMsZ0JBQWUsVUFBUyxrQkFBaUIsVUFBUyxlQUFjLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxnQkFBZSxVQUFTLFdBQVUsVUFBUyxLQUFJLGFBQVksSUFBRyxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsZUFBYyxVQUFTLG9CQUFtQixVQUFTLGdCQUFlLFVBQVMsZUFBYyxVQUFTLG9CQUFtQixVQUFTLGdCQUFlLFVBQVMsTUFBSyxhQUFZLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsYUFBWSxVQUFTLFdBQVUsVUFBUyxLQUFJLGFBQVksV0FBVSxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsSUFBRyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMscUJBQW9CLFVBQVMsb0JBQW1CLFVBQVMsbUJBQWtCLFVBQVMsdUJBQXNCLFVBQVMsc0JBQXFCLFVBQVMsZ0JBQWUsVUFBUyxTQUFRO0FBQUEsR0FDbHNsRCxLQUFJLGFBQVksU0FBUSxVQUFTLGtCQUFpQixRQUFPLE1BQUssVUFBUyxLQUFJLFVBQVMsY0FBYSxVQUFTLFdBQVUsVUFBUyxzQkFBcUIsVUFBUyxZQUFXLFVBQVMsVUFBUyxVQUFTLGVBQWMsZ0JBQWUsV0FBVSxVQUFTLFlBQVcsVUFBUyxpQkFBZ0IsVUFBUyxxQkFBb0IsZ0JBQWUsbUJBQWtCLGdCQUFlLGdCQUFlLFVBQVMsc0JBQXFCLGdCQUFlLGlCQUFnQixVQUFTLGlCQUFnQixnQkFBZSxjQUFhLGdCQUFlLGlCQUFnQixVQUFTLG9CQUFtQixnQkFBZSxzQkFBcUIsVUFBUyxTQUFRLFVBQVMsY0FBYSxVQUFTLGdCQUFlLFVBQVMsYUFBWSxnQkFBZSxtQkFBa0IsZ0JBQWUsY0FBYSxVQUFTLHlCQUF3QixnQkFBZSxtQkFBa0IsZ0JBQWUsYUFBWSxVQUFTLGtCQUFpQixnQkFBZSx1QkFBc0IsVUFBUyxtQkFBa0IsVUFBUyxrQkFBaUIsVUFBUyxxQkFBb0IsZ0JBQWUsdUJBQXNCLFVBQVMsaUJBQWdCLGdCQUFlLHNCQUFxQixVQUFTLG1CQUFrQixnQkFBZSx3QkFBdUIsVUFBUyxXQUFVLGdCQUFlLGdCQUFlLFVBQVMsYUFBWSxVQUFTLGtCQUFpQixnQkFBZSx1QkFBc0IsVUFBUyxrQkFBaUIsZ0JBQWUsYUFBWSxnQkFBZSxrQkFBaUIsVUFBUyxVQUFTLFVBQVMsZUFBYyxVQUFTLG1CQUFrQixVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLE1BQUssYUFBWSxRQUFPLFFBQU8sSUFBRyxVQUFTLE9BQU0sVUFBUyxRQUFPLFFBQU8sT0FBTSxRQUFPLEtBQUksVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLFFBQU8sUUFBTyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLGFBQVksc0JBQXFCLFVBQVMsZ0JBQWUsVUFBUyxJQUFHLFVBQVMsTUFBSyxhQUFZLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxVQUFTLE1BQUssUUFBTyxTQUFRLFVBQVMsV0FBVSxVQUFTLGFBQVksVUFBUyxpQkFBZ0IsVUFBUyxVQUFTLFVBQVMsS0FBSSxVQUFTLEtBQUksYUFBWSxLQUFJLFVBQVMsSUFBRyxVQUFTLFdBQVUsUUFBTyxlQUFjLFVBQVMsTUFBSyxVQUFTLElBQUcsVUFBUyxVQUFTLFVBQVMsZUFBYyxVQUFTLG9CQUFtQixVQUFTLGVBQWMsVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFlBQVcsVUFBUyxjQUFhLFVBQVMsTUFBSyxhQUFZLEtBQUksVUFBUyxNQUFLLEtBQUksS0FBSSxhQUFZLE1BQUssVUFBUyxNQUFLLGFBQVksT0FBTSxVQUFTLEtBQUksUUFBTyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsSUFBRyxVQUFTLGdCQUFlLFVBQVMsb0JBQW1CLFVBQVMsc0JBQXFCLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxtQkFBa0IsVUFBUyxZQUFXLFVBQVMsZUFBYyxVQUFTLHFCQUFvQixVQUFTLGNBQWEsVUFBUyxvQkFBbUIsVUFBUyxvQkFBbUIsVUFBUyxpQkFBZ0IsVUFBUyxvQkFBbUIsVUFBUyxZQUFXLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLGVBQWMsVUFBUyxrQkFBaUIsVUFBUyxvQkFBbUIsVUFBUyxtQkFBa0IsVUFBUyxrQkFBaUIsVUFBUyxlQUFjLFVBQVMsa0JBQWlCLFVBQVMsYUFBWSxVQUFTLGdCQUFlLFVBQVMsWUFBVyxVQUFTLE1BQUssVUFBUyxjQUFhLFVBQVMsYUFBWSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsYUFBWSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLEtBQUksYUFBWSxnQkFBZSxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsY0FBYSxVQUFTLE9BQU0sVUFBUyxhQUFZLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxRQUFPLFVBQVMsb0JBQW1CLFVBQVMsY0FBYSxVQUFTLG1CQUFrQixVQUFTLGdCQUFlLFVBQVMscUJBQW9CLFVBQVMsYUFBWSxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxhQUFZLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxvQkFBbUIsVUFBUyxlQUFjLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxRQUFPLFVBQVMsT0FBTSxRQUFPLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLEtBQUksS0FBSSxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLFdBQVUsVUFBUyxPQUFNLFVBQVMsWUFBVyxnQkFBZSxXQUFVLFVBQVMsT0FBTSxVQUFTLFlBQVcsVUFBUyxnQkFBZSxVQUFTLFlBQVcsVUFBUyxNQUFLLGFBQVksV0FBVSxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxRQUFPLE1BQUssVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFFBQU8sS0FBSSxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksUUFBTyxRQUFPLE9BQU0sVUFBUyxVQUFTLEtBQUksWUFBVyxVQUFTLGNBQWEsVUFBUyxrQkFBaUIsVUFBUyxPQUFNLFVBQVMsV0FBVSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksU0FBUSxVQUFTLFlBQVcsVUFBUyxrQkFBaUIsVUFBUyxhQUFZLFVBQVMsZUFBYyxVQUFTLE9BQU0sVUFBUyxZQUFXLFVBQVMsU0FBUSxVQUFTLGFBQVksVUFBUyxnQkFBZSxVQUFTLGlCQUFnQixVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsTUFBSyxRQUFPLE9BQU0sVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsYUFBWSxVQUFTLGNBQWEsS0FBSSxtQkFBa0IsVUFBUyxlQUFjLFVBQVMsZUFBYyxVQUFTLEtBQUksYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLEtBQUksYUFBWSxJQUFHLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFFBQU8sT0FBTSxVQUFTLEtBQUksVUFBUyxLQUFJLGFBQVksTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxnQkFBZSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxRQUFPLFFBQU8sUUFBTyxVQUFTLElBQUcsVUFBUyxLQUFJLGdCQUFlLEtBQUksVUFBUyxPQUFNLFFBQU8sT0FBTSxRQUFPLEtBQUksVUFBUyxPQUFNLFFBQU8sSUFBRyxVQUFTLEtBQUksYUFBWSxRQUFPLFFBQU8sU0FBUSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLEtBQUksS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsT0FBTSxRQUFPLFNBQVEsVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLElBQUcsVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsTUFBSyxLQUFJLFFBQU8sVUFBUyxVQUFTLFVBQVMsT0FBTSxRQUFPLE1BQUssYUFBWSxLQUFJLEtBQUksT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFFBQU8sTUFBSyxRQUFPLFVBQVMsVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxhQUFZLFVBQVMsV0FBVSxVQUFTLFNBQVEsVUFBUyxXQUFVLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLEtBQUksYUFBWSxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLFdBQVUsVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLGlCQUFnQixVQUFTLGVBQWMsVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsY0FBYSxVQUFTLGFBQVksVUFBUyxlQUFjLFVBQVMsbUJBQWtCLFVBQVMsbUJBQWtCLFVBQVMsb0JBQW1CLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLFdBQVUsU0FBUSxnQkFBZSxNQUFLLFVBQVMsTUFBSyxhQUFZLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFFBQU8sTUFBSyxhQUFZLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssTUFBSyxPQUFNLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLGdCQUFlLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFFBQU8sT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE9BQU0sUUFBTyxTQUFRLFVBQVMsTUFBSyxRQUFPLFdBQVUsUUFBTyxLQUFJLGFBQVksTUFBSyxVQUFTLE9BQU0sVUFBUyxXQUFVLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxpQkFBZ0IsVUFBUyxrQkFBaUIsVUFBUyxVQUFTLFFBQU8sVUFBUyxVQUFTLFlBQVcsVUFBUyxhQUFZLFVBQVMsYUFBWSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLE9BQU0sS0FBSSxRQUFPLFVBQVMsU0FBUSxVQUFTLE9BQU0sS0FBSSxRQUFPLEtBQUksTUFBSyxVQUFTLFFBQU8sVUFBUyxZQUFXLFVBQVMsV0FBVSxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsTUFBSyxRQUFPLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLEtBQUksVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssZ0JBQWUsUUFBTyxVQUFTLFNBQVEsVUFBUyxhQUFZLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxZQUFXLFVBQVMsUUFBTyxRQUFPLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLElBQUcsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxLQUFJLFFBQU8sT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxhQUFZLFVBQVMsT0FBTSxVQUFTLEtBQUksUUFBTyxTQUFRLFVBQVMsT0FBTSxVQUFTLEtBQUksUUFBTyxRQUFPLFFBQU8sZUFBYyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLEtBQUksTUFBSyxhQUFZLEtBQUksVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLGdCQUFlLFVBQVMsV0FBVSxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsa0JBQWlCLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxRQUFPLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxRQUFPLFFBQU8sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLElBQUcsVUFBUyxPQUFNLFVBQVMsS0FBSSxhQUFZLElBQUcsVUFBUyxRQUFPLFFBQU8sS0FBSSxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUyxRQUFPLEtBQUksUUFBTyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLEtBQUksUUFBTyxNQUFLLFFBQU8sTUFBSyxVQUFTLE1BQUssS0FBSSxPQUFNLFVBQVMsYUFBWSxVQUFTLGNBQWEsVUFBUyxlQUFjLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksT0FBTSxVQUFTLE9BQU0sTUFBSyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxRQUFPLFFBQU8sUUFBTyxVQUFTLFFBQU8sUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxJQUFHLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLE1BQUssZ0JBQWUsUUFBTyxVQUFTLEtBQUksYUFBWSxJQUFHLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksT0FBTSxLQUFJLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxJQUFHLEtBQUksTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxXQUFVLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxXQUFVLFVBQVMsWUFBVyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsV0FBVSxnQkFBZSxNQUFLLGdCQUFlLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsV0FBVSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLFVBQVMsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxlQUFjLFVBQVMsZ0JBQWUsVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxRQUFPLElBQUcsVUFBUyxPQUFNLFFBQU8sS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFFBQU8sS0FBSSxVQUFTLEtBQUksYUFBWSxRQUFPLFFBQU8sSUFBRyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFFBQU8sTUFBSyxhQUFZLE1BQUssVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssUUFBTyxPQUFNLFVBQVMsS0FBSSxVQUFTLEtBQUksYUFBWSxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLGFBQVksUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxPQUFNLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxPQUFNLFFBQU8sTUFBSyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxnQkFBZSxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sS0FBSSxRQUFPLEtBQUksT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxLQUFJLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxJQUFHLFVBQVMsV0FBVSxVQUFTLGVBQWMsVUFBUyxpQkFBZ0IsVUFBUyxlQUFjLFVBQVMsZ0JBQWUsVUFBUyxnQkFBZSxVQUFTLGlCQUFnQixVQUFTLG1CQUFrQixVQUFTLHFCQUFvQixVQUFTLGdCQUFlLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsTUFBSyxnQkFBZSxRQUFPLFVBQVMsWUFBVyxVQUFTLFNBQVEsVUFBUyxXQUFVLFVBQVMsWUFBVyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksSUFBRyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLElBQUcsVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxZQUFXLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLGVBQWMsVUFBUyxvQkFBbUIsVUFBUyxZQUFXLFVBQVMsZ0JBQWUsVUFBUyxlQUFjLFVBQVMsZ0JBQWUsVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sS0FBSSxLQUFJLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxNQUFLLEtBQUksUUFBTyxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssS0FBSSxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxJQUFHLEtBQUksTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxPQUFNLFVBQVMsTUFBSyxRQUFPLE1BQUssVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsWUFBVyxVQUFTLFlBQVcsVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLGVBQWMsVUFBUyxLQUFJLGFBQVksS0FBSSxVQUFTLE9BQU0sUUFBTyxLQUFJLFVBQVMsUUFBTyxLQUFJLFFBQU8sVUFBUyxRQUFPLFFBQU8sT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksSUFBRyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsSUFBRyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsS0FBSSxnQkFBZSxLQUFJLGdCQUFlLE1BQUssZ0JBQWUsWUFBVyxVQUFTLGlCQUFnQixVQUFTLEtBQUksZ0JBQWUsS0FBSSxnQkFBZSxNQUFLLGdCQUFlLGFBQVksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxLQUFJLFVBQVMsTUFBSyxnQkFBZSxPQUFNLGdCQUFlLE9BQU0sVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsTUFBSyxRQUFPLE9BQU0sZ0JBQWUsUUFBTyxnQkFBZSxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsVUFBUyxnQkFBZSxNQUFLLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sZ0JBQWUsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLGdCQUFlLFFBQU8sVUFBUyxTQUFRLFVBQVMsS0FBSSxhQUFZLEtBQUksZ0JBQWUsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxLQUFJLGdCQUFlLE9BQU0sVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLFlBQVcsVUFBUyxpQkFBZ0IsVUFBUyxNQUFLLFVBQVMsT0FBTSxnQkFBZSxXQUFVLGdCQUFlLE1BQUssZ0JBQWUsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLEtBQUksUUFBTyxPQUFNLFVBQVMsUUFBTyxnQkFBZSxVQUFTLGdCQUFlLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsV0FBVSxVQUFTLFFBQU8sZ0JBQWUsT0FBTSxnQkFBZSxTQUFRLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLGdCQUFlLE9BQU0sVUFBUyxTQUFRLGdCQUFlLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxnQkFBZSxRQUFPLGdCQUFlLGFBQVksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxNQUFLLGFBQVksV0FBVSxVQUFTLGdCQUFlLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLE9BQU0sVUFBUyxTQUFRLGdCQUFlLFdBQVUsVUFBUyxZQUFXLGdCQUFlLE9BQU0sVUFBUyxTQUFRLGdCQUFlLE1BQUssVUFBUyxPQUFNLGdCQUFlLE9BQU0sVUFBUyxTQUFRLGdCQUFlLFdBQVUsVUFBUyxZQUFXLGdCQUFlLE1BQUssVUFBUyxRQUFPLFFBQU8sTUFBSyxVQUFTLGVBQWMsVUFBUyxpQkFBZ0IsVUFBUyxnQkFBZSxVQUFTLGtCQUFpQixVQUFTLElBQUcsVUFBUyxLQUFJLEtBQUksUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssZ0JBQWUsUUFBTyxVQUFTLE1BQUssZ0JBQWUsTUFBSyxXQUFVLFNBQVEsVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxNQUFLLFdBQVUsU0FBUSxnQkFBZSxRQUFPLFVBQVMsU0FBUSxnQkFBZSxPQUFNLGdCQUFlLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsSUFBRyxVQUFTLFFBQU8sUUFBTyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sUUFBTyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksYUFBWSxNQUFLLFVBQVMsUUFBTyxRQUFPLEtBQUksVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxRQUFPLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFFBQU8sUUFBTyxNQUFLLFVBQVMsUUFBTyxRQUFPLFFBQU8sVUFBUyxVQUFTLFVBQVMsTUFBSyxRQUFPLE9BQU0sVUFBUyxLQUFJLFVBQVMsTUFBSyxRQUFPLFVBQVMsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxLQUFJLGFBQVksS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxXQUFVLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLE1BQUssS0FBSSxVQUFTLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFFBQU8sU0FBUSxVQUFTLFNBQVEsVUFBUyxJQUFHLFFBQU8sVUFBUyxVQUFTLE1BQUssYUFBWSxPQUFNLFFBQU8sSUFBRyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUyxRQUFPLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksS0FBSSxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksTUFBSyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsTUFBSyxhQUFZLGFBQVksVUFBUyxTQUFRLFVBQVMsT0FBTSxLQUFJLFNBQVEsVUFBUyxNQUFLLEtBQUksT0FBTSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxNQUFLLGdCQUFlLFFBQU8sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFFBQU8sTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxXQUFVLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLEtBQUksUUFBTyxLQUFJLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssS0FBSSxLQUFJLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLEtBQUksUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFlBQVcsVUFBUyxnQkFBZSxVQUFTLGtCQUFpQixVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsbUJBQWtCLFVBQVMsa0JBQWlCLFVBQVMsaUJBQWdCLFVBQVMsaUJBQWdCLFVBQVMsTUFBSyxVQUFTLGNBQWEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsWUFBVyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxTQUFRLFVBQVMsTUFBSyxLQUFJLFFBQU8sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksS0FBSSxVQUFTLE1BQUssS0FBSSxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxJQUFHLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFFBQU8sTUFBSyxLQUFJLFFBQU8sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxLQUFJLGFBQVksUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxlQUFjLFVBQVMsS0FBSSxRQUFPLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLGVBQWMsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLFFBQU8sVUFBUyxLQUFJLEtBQUksTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLFdBQVUsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sZ0JBQWUsT0FBTSxVQUFTLFFBQU8sZ0JBQWUsT0FBTSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsWUFBVyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFlBQVcsVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLGlCQUFnQixVQUFTLGFBQVksVUFBUyxPQUFNLFFBQU8sS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsV0FBVSxVQUFTLFdBQVUsVUFBUyxZQUFXLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFlBQVcsVUFBUyxhQUFZLFVBQVMsUUFBTyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLEtBQUksVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFdBQVUsVUFBUyxXQUFVLFVBQVMsWUFBVyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsT0FBTSxRQUFPLFFBQU8sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLFFBQU8sVUFBUyxXQUFVLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFFBQU8sT0FBTSxVQUFTLE9BQU0sUUFBTyxRQUFPLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxTQUFRLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLGNBQWEsVUFBUyxjQUFhLFVBQVMsZ0JBQWUsVUFBUyxXQUFVLFVBQVMsZUFBYyxVQUFTLGlCQUFnQixVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLGtCQUFpQixVQUFTLG1CQUFrQixVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxRQUFPLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxRQUFPLFFBQU8sT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLFFBQU8sT0FBTSxVQUFTLE1BQUssYUFBWSxTQUFRLFVBQVMsYUFBWSxVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxZQUFXLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFFBQU8sU0FBUSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsWUFBVyxVQUFTLFVBQVMsVUFBUyxZQUFXLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxXQUFVLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsY0FBYSxnQkFBZSxlQUFjLGdCQUFlLGNBQWEsZ0JBQWUsZUFBYyxnQkFBZSxVQUFTLFVBQVMsaUJBQWdCLFVBQVMsa0JBQWlCLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxLQUFJLE1BQUssS0FBSSxLQUFJLGFBQVksT0FBTSxVQUFTLE9BQU0sZ0JBQWUsT0FBTSxnQkFBZSxNQUFLLGFBQVksT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksUUFBTyxnQkFBZSxRQUFPLGdCQUFlLFFBQU8sZ0JBQWUsUUFBTyxnQkFBZSxTQUFRLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksTUFBSyxhQUFZLElBQUcsVUFBUyxJQUFHLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxhQUFZLE9BQU0sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFFBQU8sTUFBSyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxRQUFPLEtBQUksYUFBWSxNQUFLLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLEtBQUksYUFBWSxNQUFLLFVBQVMsU0FBUSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksS0FBSSxVQUFTLE1BQUssU0FBUSxHQUFFLEtBQUcsRUFBQyxHQUFFLE9BQU0sS0FBSSxNQUFLLEtBQUksTUFBSyxLQUFJLEtBQUksS0FBSSxNQUFLLEtBQUksTUFBSyxLQUFJLE1BQUssS0FBSSxNQUFLLEtBQUksS0FBSSxLQUFJLE1BQUssS0FBSSxLQUFJLEtBQUksTUFBSyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksTUFBSyxLQUFJLE1BQUssS0FBSSxNQUFLLEtBQUksTUFBSyxLQUFJLE1BQUssS0FBSSxNQUFLLEtBQUksTUFBSyxLQUFJLEtBQUksS0FBSSxNQUFLLEtBQUksS0FBSSxLQUFJLE1BQUssS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLElBQUc7QUFBRSxtQkFBUyxHQUFHLEdBQUU7QUFBQyxtQkFBTyxFQUFFLFFBQVEsMENBQXlDLE9BQUc7QUFBQyxrQkFBRyxFQUFFLE9BQU8sQ0FBQyxNQUFJLEtBQUk7QUFBQyxvQkFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsSUFBRSxNQUFJLE9BQUssTUFBSSxNQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRSxFQUFFLElBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFFLEVBQUU7QUFBRSx1QkFBTyxHQUFHLENBQUM7QUFBQSxjQUFDO0FBQUMscUJBQU8sR0FBRyxFQUFFLE1BQU0sR0FBRSxFQUFFLE1BQUk7QUFBQSxZQUFDLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFO0FBQUMsbUJBQU8sS0FBRyxTQUFPLEtBQUcsU0FBTyxJQUFFLFVBQVEsWUFBVSxLQUFLLE9BQUssSUFBRSxHQUFHLEtBQUksT0FBTyxjQUFjLENBQUM7QUFBQSxVQUFFO0FBQUMsbUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLFdBQVMsRUFBRSxXQUFTLEVBQUUsT0FBTSxFQUFFLGNBQVksRUFBRSxTQUFPLEVBQUUsUUFBTyxFQUFFLFlBQVUsRUFBRSxVQUFRLEVBQUUsTUFBSyxFQUFFLFFBQU0sRUFBRSxFQUFFLGVBQWEsT0FBSyxHQUFHLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFO0FBQUEsVUFBSztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxFQUFFLGFBQVksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUU7QUFBTSxtQkFBSyxNQUFJO0FBQUcsZ0JBQUUsU0FBTyxFQUFFLE9BQUssRUFBRSxHQUFFLEVBQUUsR0FBRSxJQUFFLEVBQUUsQ0FBQztBQUFFLG1CQUFPLE1BQUksS0FBRyxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsYUFBVyxFQUFFLE9BQU8sTUFBTSxHQUFFLEVBQUUsS0FBSyxHQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsUUFBTSxFQUFFLFdBQVMsRUFBRSxPQUFPLE1BQU0sRUFBRSxVQUFTLEVBQUUsS0FBSyxJQUFHO0FBQUEsVUFBUztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFF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Q0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxFQUFFLE1BQUk7QUFBRyxrQkFBSSxJQUFFLE9BQUssTUFBSSxJQUFFLElBQUUsRUFBRSxhQUFXLEdBQUcsR0FBRSxLQUFJLENBQUMsSUFBRSxJQUFFLE9BQUssSUFBRSxNQUFJLElBQUUsS0FBRyxFQUFFLEdBQUUsS0FBSSxDQUFDLElBQUcsRUFBRSxPQUFLLE9BQUssRUFBRSxPQUFPLE1BQUksT0FBSyxFQUFFLE9BQU8sTUFBSSxLQUFHLE9BQUssS0FBRyxFQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxPQUFLLFFBQU0sTUFBSSxJQUFFLE9BQUssS0FBRyxJQUFFLE1BQUksRUFBRSxhQUFXLEdBQUcsR0FBRSxLQUFJLENBQUMsSUFBRyxFQUFFLE9BQUssTUFBSSxFQUFFLE9BQU8sTUFBSSxLQUFHLE9BQUssRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsTUFBSSxLQUFHO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRTtBQUFFLG1CQUFLLE1BQUksRUFBRSxPQUFLLFNBQU8sS0FBRztBQUFDLGtCQUFJLElBQUUsRUFBRSxNQUFJO0FBQUcsa0JBQUUsUUFBTSxJQUFFLFFBQU0sSUFBRSxVQUFRLE1BQUksSUFBRSxPQUFLLElBQUUsTUFBSSxJQUFFLE9BQUssSUFBRSxPQUFLLEVBQUUsR0FBRSxLQUFJLENBQUMsSUFBRyxNQUFJLEtBQUcsSUFBRSxLQUFHLElBQUUsTUFBSSxFQUFFLGFBQVcsR0FBRyxHQUFFLEtBQUksQ0FBQyxJQUFHLElBQUUsU0FBTyxJQUFFLFNBQU8sTUFBSSxJQUFFLFNBQU8sS0FBRyxJQUFFLFNBQU8sRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsTUFBSSxLQUFHLEdBQUUsSUFBRSxFQUFFO0FBQUEsWUFBTTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxH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QVEsRUFBRSxHQUFFLEdBQUcsR0FBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRSxVQUFTLElBQUUsRUFBRSxTQUFRLElBQUUsRUFBRTtBQUFPLG9CQUFPLEVBQUU7QUFBQSxtQkFBWTtBQUFNLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQUEsbUJBQVM7QUFBTSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFNLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBTyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFNLGtCQUFFLEdBQUUsS0FBSSxRQUFRO0FBQUEsbUJBQU87QUFBTSx3QkFBTyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUU7QUFBQSx1QkFBWTtBQUFTLDJCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsdUJBQU87QUFBUywyQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBO0FBQVUsc0JBQUUsR0FBRSxLQUFJLFFBQVE7QUFBQTtBQUFBLG1CQUFPO0FBQU8sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBO0FBQVUsdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxvQkFBTyxFQUFFO0FBQUEsbUJBQVk7QUFBTSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFNLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBTSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFNLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBTSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFNLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQVcsdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFRLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBTSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBTSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFNLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBTyx1QkFBTyxHQUFH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QUFFO0FBQUMsZUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUUsS0FBSztBQUFFLGdCQUFJLElBQUUsTUFBSSxJQUFFLFFBQU0sS0FBRyxJQUFFLE9BQUssRUFBRSxVQUFRLFFBQU0sR0FBRyxHQUFFLEdBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTTtBQUFFLG1CQUFPLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUMsTUFBSyxvQkFBbUIsT0FBTSxHQUFFLE1BQUssRUFBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRyxFQUFDLE9BQU0sR0FBRSxZQUFXLEVBQUMsSUFBRSxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLGdCQUFHLEVBQUUsVUFBUTtBQUFHLHFCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxnQkFBSSxJQUFFLEVBQUUsUUFBTTtBQUFFLGdCQUFHLENBQUMsR0FBRTtBQUFDLGtCQUFHLEVBQUUsVUFBUTtBQUFNLHVCQUFPLEtBQUcsRUFBRSxHQUFFLEdBQUcsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxtQkFBSSxFQUFFLFFBQU0sWUFBVTtBQUFPLHVCQUFPLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxPQUFLLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxtQkFBTyxFQUFFLFVBQVEsV0FBUyxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsVUFBUSxPQUFLLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLGFBQVcsSUFBRyxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLE9BQUssSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxhQUFXLEdBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxNQUFJLGVBQWEsRUFBRSxhQUFXLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxlQUFhLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFVBQVEsT0FBSyxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxLQUFJLEdBQUcsR0FBRSxJQUFFLEtBQUssSUFBRyxJQUFFLEtBQUcsRUFBRSxTQUFPLGFBQVcsT0FBTyxFQUFFLFNBQU8sV0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFF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QUcsRUFBRSxVQUFRLE9BQU07QUFBQyxnQkFBRSxHQUFFLElBQUUsS0FBSztBQUFFLGtCQUFJLElBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFFO0FBQU8sa0JBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxFQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNO0FBQUEsWUFBQztBQUFDLG1CQUFNLENBQUMsS0FBRyxDQUFDLEtBQUcsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssZ0JBQWUsT0FBTSxHQUFFLFNBQVEsR0FBRSxXQUFVLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLE1BQUssSUFBRTtBQUFFLGNBQUUsR0FBRSxHQUFFLFFBQVEsTUFBSSxNQUFJLElBQUUsR0FBRyxHQUFFLENBQUMsSUFBRyxJQUFFLEdBQUcsR0FBRSxHQUFFLElBQUcsRUFBRSxRQUFNLGFBQVcsVUFBUSxNQUFJLEtBQUksR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTSxHQUFFLEVBQUUsVUFBUSxLQUFHLEVBQUUsR0FBRSxFQUFFLElBQUUsRUFBRSxVQUFRLGNBQVksRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRSxPQUFNLEVBQUUsR0FBRSxNQUFJLElBQUUsR0FBRyxHQUFFLEVBQUU7QUFBSSxnQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsRUFBQyxHQUFFLEVBQUMsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTTtBQUFFLG1CQUFPLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUMsTUFBSyxlQUFjLE9BQU0sR0FBRSxNQUFLLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdB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QUFFLENBQUMsQ0FBQztBQUFFLG1CQUFLLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBRyxtQkFBSSxFQUFFLEtBQUssR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFFLG1CQUFPLElBQUUsS0FBRyxJQUFFLE1BQUksRUFBRSxRQUFNLFVBQVEsRUFBRSxHQUFFLElBQUcsRUFBRSxFQUFFLFFBQU0sSUFBSSxHQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBQyxPQUFNLEdBQUUsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRSxHQUFFLElBQUUsTUFBSyxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsbUJBQU8sRUFBRSxVQUFRLGNBQVksRUFBRSxHQUFFLElBQUUsS0FBSyxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU0sSUFBRyxJQUFFLE9BQUssSUFBRSxXQUFTLE9BQUssRUFBRSxVQUFRLFVBQVEsRUFBRSxVQUFRLFlBQVUsSUFBRSxZQUFVLElBQUUsS0FBRyxLQUFHLElBQUUsVUFBUSxFQUFFLEdBQUUsRUFBRSxNQUFLLEVBQUUsUUFBTSxHQUFFLElBQUcsRUFBRSxVQUFRLFNBQU8sT0FBSyxJQUFJLE1BQUksSUFBRSxPQUFLLElBQUUsV0FBUyxPQUFLLEVBQUUsUUFBTSxZQUFVLFVBQVEsRUFBRSxHQUFFLElBQUcsSUFBRSxLQUFHLFVBQVEsZUFBZSxHQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUMsTUFBSyxzQkFBcUIsSUFBRyxHQUFFLE1BQUssRUFBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGNBQUUsR0FBRSxDQUFDO0FBQUUsZ0JBQUksS0FBRyxJQUFFLFdBQVMsS0FBRyxFQUFFLEdBQUUsR0FBRSxNQUFNO0FBQUUsY0FBRSxHQUFFLElBQUUsT0FBTSxRQUFRLEdBQUUsTUFBSSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUcsZ0JBQUksSUFBRSxNQUFLLElBQUUsTUFBSyxJQUFFLEdBQUUsSUFBRSxNQUFLLElBQUUsRUFBRSxVQUFRLFNBQU8sRUFBRSxVQUFRLFVBQVEsRUFBRSxVQUFRLE9BQU0sR0FBRSxFQUFDLE9BQU0sR0FBRSxVQUFTLEdBQUUsU0FBUSxHQUFFLFFBQU8sRUFBQyxJQUFFO0FBQUUsZ0JBQUcsSUFBRSxNQUFJLFVBQVEsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxRQUFNLFdBQVMsRUFBRSxVQUFRLFVBQVEsSUFBRSxRQUFNLEVBQUUsR0FBRSxFQUFFLElBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssdUJBQXNCLE1BQUssT0FBTSxjQUFhLEdBQUcsR0FBRSxJQUFFLFdBQVUsR0FBRSxHQUFFLEVBQUUsRUFBQyxDQUFDLEdBQUUsRUFBRSxhQUFXLEtBQUcsSUFBRSxPQUFLLEVBQUUsR0FBRSxFQUFFLEtBQUcsSUFBRSxPQUFHLEVBQUUsYUFBVyxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFVBQVEsVUFBUSxFQUFFLEdBQUUsR0FBRyxPQUFLLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxNQUFJLFFBQU0sRUFBQyxNQUFLLHVCQUFzQixNQUFLLE9BQU0sY0FBYSxHQUFHLEdBQUUsSUFBRSxXQUFVLEdBQUUsR0FBRSxFQUFFLEVBQUMsSUFBRSxFQUFDLE1BQUssdUJBQXNCLE1BQUssU0FBUSxjQUFhLEdBQUcsR0FBRSxJQUFFLFdBQVUsR0FBRSxJQUFHLEVBQUUsRUFBQyxDQUFDLEdBQUUsRUFBRSxhQUFXLEtBQUcsTUFBSSxhQUFXLEtBQUcsRUFB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QUFBRSxnQkFBRSxHQUFFLEdBQUUsS0FBSyxNQUFJLEVBQUUsUUFBTSxlQUFhLGFBQVcsRUFBRSxVQUFRLEtBQUcsRUFBRSxHQUFFLEdBQUcsSUFBRSxHQUFHLEdBQUUsR0FBRSxJQUFHLEVBQUUsT0FBTSxDQUFDLEdBQUUsSUFBRSxFQUFFLFlBQVcsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLE1BQUksR0FBRyxHQUFFLEdBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxJQUFFLElBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUMsTUFBSyxtQkFBa0IsT0FBTSxHQUFFLFVBQVMsRUFBQyxDQUFDLENBQUMsR0FBRSxFQUFFLFVBQVEsY0FBWSxFQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFDLG1CQUFPLEVBQUUsR0FBRSxHQUFFLFVBQVUsR0FBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLGNBQWEsTUFBSyxTQUFRLENBQUMsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFPLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFPLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsVUFBUyxJQUFFLEVBQUUsU0FBUSxJQUFFLEVBQUU7QUFBTyxjQUFFLEdBQUUsSUFBRSxLQUFLO0FBQUUsZ0JBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxNQUFLLElBQUUsTUFBSztBQUFFLGdCQUFHLEVBQUUsR0FBRSxJQUFFLE9BQU0sS0FBSyxHQUFFO0FBQUMsc0JBQU8sRUFBRTtBQUFBLHFCQUFZLE9BQU07QUFBQyxzQkFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU07QUFBRTtBQUFBLGdCQUFLO0FBQUEscUJBQU07QUFBQSxxQkFBUztBQUFNLHNCQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTTtBQUFFO0FBQUEscUJBQVc7QUFBTyxzQkFBRyxFQUFDLFVBQVMsR0FBRSxTQUFRLEdBQUUsUUFBTyxFQUFDLElBQUU7QUFBRSxzQkFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQUcsRUFBQyxPQUFNLEVBQUMsSUFBRTtBQUFFLG1CQUFDLElBQUUsS0FBRyxNQUFJLEVBQUUsVUFBUSxRQUFNLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxVQUFRLFlBQVUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsUUFBTSxXQUFTLE1BQUksSUFBRSxHQUFHLEdBQUUsR0FBRSxFQUFFLFVBQVUsSUFBRyxJQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFJO0FBQUE7QUFBYyxzQkFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTSxHQUFFLEdBQUcsR0FBRSxJQUFFLEtBQUs7QUFBQTtBQUFFLHFCQUFPLEtBQUcsR0FBRyxHQUFFLFNBQVMsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssNEJBQTJCLGFBQVksRUFBQyxDQUFDO0FBQUEsWUFBQztBQUFDLG9CQUFPLEVBQUU7QUFBQSxtQkFBWSxTQUFRO0FBQUMsa0JBQUUsR0FBRSxDQUFDO0FBQUUsb0JBQUksSUFBRTtBQUFLLHVCQUFPLEVBQUUsR0FBRSxHQUFFLEtBQUssTUFBSSxLQUFHLEdBQUcsR0FBRSxFQUFFLFVBQVUsR0FBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsR0FBRSxLQUFLLEdBQUUsRUFBRSxVQUFRLGFBQVcsRUFBRSxHQUFFLEtBQUksUUFBUSxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUUsSUFBRSxLQUFLLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLHdCQUF1QixRQUFPLEdBQUUsVUFBUyxFQUFDLENBQUM7QUFBQSxjQUFDO0FBQUEsbUJBQU0sU0FBUTtBQUFDLGtCQUFFLEdBQUUsQ0FBQztBQUFFLG9CQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQztBQUFFLHVCQUFLLEVBQUUsUUFBTSxVQUFRO0FBQUMsc0JBQUcsRUFBQyxVQUFTLEdBQUUsWUFBVyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRSxHQUFFLEtBQUcsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUUsb0JBQUUsVUFBUSxTQUFPLEVBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxRQUFNLGVBQWEsYUFBVyxFQUFFLEdBQUUsR0FBRyxHQUFFLE1BQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxHQUFFLEVBQUUsS0FBSyxDQUFDLElBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLE1BQUksTUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEdBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFHLElBQUUsS0FBSSxFQUFFLEtBQUssRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLG1CQUFrQixPQUFNLElBQUcsVUFBUyxFQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUUsVUFBUSxjQUFZLEVBQUUsR0FBRSxHQUFFLEVBQUU7QUFBQSxnQkFBQztBQUFDLG9CQUFHLEVBQUUsR0FBRSxHQUFFLFVBQVUsR0FBRSxFQUFFLEdBQUUsR0FBRSxLQUFLO0FBQUUsb0JBQUUsVUFBUSxhQUFXLEVBQUUsR0FBRSxLQUFJLFFBQVEsR0FBRSxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEseUJBQVUsR0FBRTtBQUFDLHNCQUFJLElBQUUsR0FBRSxJQUFFLEVBQUU7QUFBTyx5QkFBSyxJQUFFLEdBQUU7QUFBSSx1QkFBRyxHQUFFLEVBQUUsRUFBRTtBQUFFLHVCQUFJLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxJQUFFLEdBQUU7QUFBSSx1QkFBRyxHQUFFLEVBQUUsRUFBRTtBQUFBLGdCQUFDO0FBQUMsbUJBQUcsR0FBRSxJQUFFLEtBQUs7QUFBRTtBQUFBLGNBQUs7QUFBQSxtQkFBTTtBQUFNLG9CQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTTtBQUFFO0FBQUEsbUJBQVc7QUFBTSxvQkFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU07QUFBRTtBQUFBLG1CQUFXO0FBQU8sb0JBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU07QUFBRTtBQUFBLG1CQUFXO0FBQU0sb0JBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLElBQUcsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU07QUFBRTtBQUFBLG1CQUFXO0FBQU0sb0JBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNO0FBQUU7QUFBQSxtQkFBVztBQUFPLG9CQUFHLEVBQUMsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRTtBQUFFLG9CQUFHLEVBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxRQUFNLEtBQUcsS0FBRyxFQUFFLFVBQVEsT0FBTTtBQUFDLHNCQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksSUFBRSxFQUFFLEtBQUcsRUFBRSxHQUFHLE9BQUssSUFBRyxHQUFHLEdBQUUsQ0FBQztBQUFHO0FBQUEsZ0JBQUs7QUFBQTtBQUFTLGtCQUFFLEdBQUUsSUFBRyxFQUFFLEVBQUUsUUFBTSxJQUFJO0FBQUE7QUFBRSxtQkFBTyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssMEJBQXlCLGFBQVksR0FBRSxZQUFXLEdBQUUsUUFBTyxFQUFDLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsbUJBQU8sSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEdB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QWM7QUFBQSxtQkFBYztBQUFBLG1CQUFjO0FBQUEsbUJBQWM7QUFBQSxtQkFBYztBQUFTLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBUSx1QkFBTyxHQUFHLEdBQUUsR0FBRSxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBUyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxJQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBUyx1QkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQUEsbUJBQVc7QUFBQSxtQkFBVztBQUFNLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBTSx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFBLG1CQUFTO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFTLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsbUJBQU87QUFBUyx1QkFBTyxHQUFHLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQU0sdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLG1CQUFPO0FBQVUsdUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxtQkFBTztBQUFJLHVCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxD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R0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLENBQUMsR0FBRSxFQUFFLEVBQUUsVUFBUSxPQUFLLEVBQUUsR0FBRSxJQUFFLEtBQUssR0FBRSxFQUFFLFVBQVE7QUFBTztBQUFDLG1CQUFPLEVBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBQyxZQUFXLEdBQUUsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRTtBQUFFLG1CQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxZQUFVLEVBQUMsTUFBSyxjQUFhLE1BQUssR0FBRSxTQUFRLE1BQUksRUFBQyxJQUFFLEVBQUMsTUFBSyxjQUFhLE1BQUssRUFBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBQyxZQUFXLEdBQUUsVUFBUyxHQUFFLFVBQVMsR0FBRSxTQUFRLEdBQUUsUUFBTyxFQUFDLElBQUU7QUFBRSxtQkFBTyxFQUFFLFVBQVEsWUFBVSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxhQUFXLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxNQUFJLEVBQUMsTUFBSyxXQUFVLE9BQU0sR0FBRSxLQUFJLEVBQUMsSUFBRSxFQUFDLE1BQUssV0FBVSxPQUFNLEVBQUMsQ0FBQztBQUFBLFVBQUU7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRSxFQUFFLFFBQU0sTUFBSyxJQUFFLEVBQUUsVUFBUSxRQUFNLE9BQUssTUFBSTtBQUFPLG1CQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxhQUFXLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxNQUFJLEVBQUMsTUFBSyxXQUFVLE9BQU0sR0FBRSxLQUFJLEVBQUMsSUFBRSxFQUFDLE1BQUssV0FBVSxPQUFNLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUMsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRTtBQUFFLG1CQUFPLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxhQUFXLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLGlCQUFnQixDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGNBQUUsR0FBRSxJQUFFLEtBQUs7QUFBRSxnQkFBSSxJQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsT0FBTyxJQUFFLEdBQUUsSUFBRSxNQUFLLEdBQUUsSUFBRSxJQUFFLEdBQUcsSUFBRTtBQUFPLGdCQUFHLEVBQUUsVUFBUTtBQUFTLGVBQUMsSUFBRSxLQUFHLEtBQUcsRUFBRSxHQUFFLElBQUcsVUFBVTtBQUFBLGlCQUFNO0FBQUMsa0JBQUksSUFBRSxJQUFFLE9BQUssSUFBRSxRQUFNLE1BQUksSUFBRSxRQUFNLEtBQUcsSUFBRTtBQUFHLGlCQUFHLEdBQUUsS0FBRyxJQUFFLFNBQU8sSUFBRyxFQUFFLEtBQUssR0FBRSxNQUFJLElBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEVBQUUsWUFBVyxDQUFDLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxFQUFFLFlBQVcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLEtBQUcsSUFBRSxLQUFHLEdBQUcsR0FBRSxFQUFFLFVBQVUsSUFBRyxJQUFFLEVBQUUsT0FBTSxFQUFFLFFBQU0sU0FBTyxJQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsSUFBRSxFQUFFLEdBQUUsSUFBRyxFQUFFLEVBQUUsUUFBTSxJQUFJ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QUFFLGFBQVcsRUFBRSxlQUFhLEtBQUcsSUFBRSxHQUFFLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxLQUFHLEVBQUUsYUFBVyxNQUFJLEtBQUcsTUFBSSxFQUFFLGVBQWEsSUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsYUFBVyxJQUFFLEtBQUcsR0FBRSxFQUFFLFVBQVEsTUFBSSxFQUFFLFVBQVEsS0FBRyxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxVQUFRLGVBQWEsS0FBRyxFQUFFLGFBQVcsSUFBRSxLQUFHLFFBQU0sTUFBSSxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxjQUFhLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxNQUFJLEVBQUUsR0FBRSxJQUFHLEVBQUUsRUFBRSxRQUFNLElBQUksTUFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLE1BQUksRUFBRSxVQUFRLE1BQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLElBQUUsS0FBRyxLQUFHLE1BQUksYUFBVyxLQUFHLE9BQUssRUFBRSxhQUFXLElBQUUsS0FBRyxLQUFHLE1BQUksYUFBVyxLQUFHLEVBQUUsYUFBVyxLQUFHLElBQUUsSUFBRSxLQUFHO0FBQUssb0JBQUcsRUFBRSxLQUFLLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxPQUFNLEVBQUUsR0FBRTtBQUFDLHNCQUFHLEVBQUUsVUFBUTtBQUFHO0FBQUEsZ0JBQUs7QUFBTTtBQUFBLGNBQUs7QUFBQyxjQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUUsZ0JBQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssSUFBRSxpQkFBZSxtQkFBa0IsVUFBUyxFQUFDLENBQUM7QUFBRSxtQkFBTSxDQUFDLEtBQUcsRUFBRSxRQUFNLFVBQVEsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsZUFBYSxHQUFFO0FBQUEsVUFBRTtBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxjQUFFLFVBQVEsY0FBWSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxJQUFFLEtBQUssR0FBRSxJQUFFLE1BQUksRUFBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUUsZ0JBQUcsRUFBQyxVQUFTLEdBQUUsU0FBUSxHQUFFLFFBQU8sRUFBQyxJQUFFLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFPLEVBQUUsZ0JBQWMsSUFBRSxLQUFHLEtBQUcsTUFBSSxFQUFFLGVBQWEsTUFBSSxNQUFJLE1BQUksRUFBRSxlQUFhLE1BQUksTUFBSSxJQUFHLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUUsRUFBQyxNQUFLLHFCQUFvQixNQUFLLEdBQUUsT0FBTSxFQUFDLElBQUUsRUFBQyxNQUFLLHdCQUF1QixNQUFLLEdBQUUsVUFBUyxLQUFJLE9BQU0sRUFBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxjQUFFLEdBQUUsSUFBRSxLQUFLO0FBQUUsZ0JBQUksSUFBRSxNQUFLLElBQUUsR0FBRSxFQUFDLE9BQU0sR0FBRSxZQUFXLEdBQUUsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRTtBQUFFLGdCQUFHLElBQUU7QUFBTyxnQkFBRSxhQUFXLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFNLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFVBQVEsTUFBSSxFQUFFLFVBQVEsTUFBSSxFQUFFLGFBQVcsS0FBRyxFQUFFLFVBQVEsY0FBWSxFQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUcsSUFBRyxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxLQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsS0FBRyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsS0FBRyxJQUFHLEtBQUcsRUFBRSxlQUFhLE1BQUksTUFBSTtBQUFBLHFCQUFVLE1BQUk7QUFBRSxnQkFBRSxHQUFFLEVBQUU7QUFBQSxxQkFBVSxJQUFFO0FBQVEsa0JBQUUsRUFBRSxVQUFRLFVBQVEsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFNLE1BQUksY0FBWSxNQUFJLEtBQUcsTUFBSSxNQUFJLEVBQUUsZUFBYSxLQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxJQUFHLEVBQUUsUUFBTSxhQUFXLFdBQVMsRUFBRSxVQUFRLGVBQWEsS0FBRyxLQUFJLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdB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R0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxHQUFHLEdBQUUsR0FBRSxRQUFPLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFPLElBQUUsT0FBSyxFQUFFLGVBQWEsTUFBSSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsZUFBYSxLQUFHLEVBQUUsR0FBRSxFQUFFLEdBQUU7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxjQUFFLEdBQUUsQ0FBQztBQUFFLGdCQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFO0FBQUUsaUJBQUksS0FBRyxJQUFFLGFBQVcsV0FBVSxFQUFFLFVBQVEsY0FBWTtBQUFDLGtCQUFHLEVBQUMsT0FBTSxHQUFFLFlBQVcsR0FBRSxTQUFRLEdBQUUsUUFBTyxHQUFFLFVBQVMsR0FBRSxJQUFFO0FBQUUsa0JBQUcsTUFBSTtBQUFHLGtCQUFFLEtBQUssR0FBRyxHQUFFLEdBQUUsR0FBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUEsbUJBQU07QUFBQyxvQkFBSSxJQUFFLEdBQUUsSUFBRSxNQUFLLEdBQUUsS0FBRyxFQUFFO0FBQU0sb0JBQUcsRUFBRSxRQUFNLFVBQVEsRUFBRSxVQUFRO0FBQUksc0JBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLE1BQUksRUFBRSxVQUFRLGNBQVksRUFBRSxVQUFRO0FBQVcsd0JBQUcsS0FBRyxHQUFFLElBQUUsU0FBTyxJQUFFLGVBQWEsWUFBVSxLQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxPQUFNLFVBQVUsR0FBRTtBQUFDLDJCQUFHO0FBQUUsMEJBQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTTtBQUFFLDJCQUFHLEVBQUUsZUFBYSxNQUFJLE1BQUksSUFBRSxFQUFFLGVBQWEsTUFBSSxNQUFJLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFDLE1BQUsscUJBQW9CLE1BQUssSUFBRSxjQUFZLE9BQU8sT0FBTyxDQUFDLEdBQUUsQ0FBQyxJQUFFLEdBQUUsT0FBTSxFQUFDLENBQUM7QUFBQSxvQkFBQztBQUFNLDRCQUFJLE1BQUksU0FBTyxNQUFJLE1BQUksTUFBSSxNQUFJLEtBQUcsSUFBRyxJQUFFLElBQUUsY0FBWSxPQUFPLE9BQU8sQ0FBQyxHQUFFLENBQUMsSUFBRTtBQUFBLDJCQUFVLEVBQUUsR0FBRSxJQUFFLE9BQU0sRUFBRSxHQUFFO0FBQUMsd0JBQUcsRUFBQyxVQUFTLEdBQUUsU0FBUSxHQUFFLFFBQU8sRUFBQyxJQUFFO0FBQUUsd0JBQUcsTUFBSSxlQUFhLEtBQUksRUFBRSxRQUFNLFFBQU87QUFBQywwQkFBSSxLQUFHLEVBQUUsT0FBTSxLQUFHLEVBQUU7QUFBVywyQkFBRyxPQUFLLE1BQUksS0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSwwQkFBRyxFQUFDLE9BQU0sR0FBRSxJQUFFO0FBQUUsMEJBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFVBQVEsTUFBSSxFQUFFLFVBQVEsYUFBVyxPQUFLLGNBQVksT0FBSyxjQUFZLE9BQUssTUFBSSxLQUFHLEVBQUUsZUFBYSxNQUFJLE1BQUksR0FBRSxFQUFFLGFBQVcsSUFBRSxLQUFHLEtBQUcsTUFBSSxLQUFHLFlBQVUsVUFBUSxHQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxDQUFDLEtBQUcsS0FBRyxFQUFFLGFBQVcsSUFBRSxLQUFHLE1BQUksRUFBRSxRQUFNLGFBQVcsV0FBUyxFQUFFLGFBQVcsSUFBRSxLQUFHLEtBQUcsT0FBSyxhQUFXLEtBQUcsS0FBRyxLQUFHLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLE1BQUksS0FBRyxLQUFJLEVBQUUsUUFBTSxhQUFXLFlBQVUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxDQUFDLElBQUcsRUFBRSxHQUFFLElBQUUsT0FBTSxFQUFFLE1BQUksSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsb0JBQUc7QUFBSyx1QkFBQyxFQUFFLFFBQU0sYUFBVyxXQUFTLElBQUUsRUFBRSxVQUFRLFdBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxjQUFhLEVBQUUsYUFBVyxJQUFFLEtBQUcsSUFBRSxHQUFFLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxhQUFXLEVBQUUsYUFBVyxNQUFJLEtBQUcsTUFBSSxFQUFFLGVBQWEsSUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsYUFBVyxJQUFFLEtBQUcsSUFBRyxFQUFFLFFBQU0sYUFBVyxVQUFRLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsTUFBSSxFQUFFLFFBQU0sYUFBVyxZQUFVLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxJQUFFLE9BQU0sRUFBRSxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLEtBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxTQUFPLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsYUFBVyxJQUFFLEtBQUcsSUFBRyxFQUFFLFVBQVEsTUFBSSxFQUFFLFVBQVEsYUFBVyxFQUFFLGFBQVcsTUFBSSxLQUFHLE9BQUssSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxhQUFXLElBQUUsS0FBRyxHQUFFLEVBQUUsVUFBUSxNQUFJLE1BQUksZUFBYSxFQUFFLFVBQVEsZUFBYSxLQUFHLEtBQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLGtCQUFJO0FBQU0sc0JBQUUsVUFBUSxZQUFVLEtBQUcsSUFBRyxNQUFJLFdBQVMsS0FBRyxLQUFJLE1BQUksTUFBSSxRQUFNLE1BQUksTUFBSSxRQUFNLE1BQUksS0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxZQUFXLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLEtBQUcsRUFBRSxRQUFNLFVBQVEsS0FBRyxJQUFHLE1BQUksT0FBSyxFQUFFLEdBQUUsRUFBRSxHQUFFLE1BQUksV0FBUyxFQUFFLFFBQU0sS0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUcsS0FBSSxJQUFFLEVBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLE1BQUksUUFBTSxNQUFJLE1BQUksUUFBTSxNQUFJLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU0sS0FBRyxFQUFFLFVBQVEsWUFBVSxLQUFHLElBQUcsS0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLEtBQUcsRUFBRSxVQUFRLFdBQVMsS0FBRyxJQUFHLE1BQUksU0FBTyxNQUFJLFFBQU0sRUFBRSxHQUFFLEVBQUUsSUFBRSxNQUFJLFVBQVEsRUFBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsS0FBRyxNQUFJLFNBQU8sS0FBRyxJQUFHLEVBQUUsUUFBTSxTQUFPLElBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxLQUFHLEVBQUUsUUFBTSxlQUFhLFlBQVUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxJQUFFLEVBQUUsVUFBUSxZQUFVLEtBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsY0FBWSxFQUFFLEdBQUUsSUFBRyxFQUFFLEVBQUUsUUFBTSxJQUFJLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU0sTUFBSSxFQUFFLFFBQU0sZUFBYSxhQUFXLE1BQUksV0FBUyxLQUFHLEtBQUksS0FBRyxNQUFJLFFBQU0sTUFBSSxNQUFJLFFBQU0sTUFBSSxHQUFFLEtBQUcsSUFBRyxJQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU0sS0FBRyxFQUFFLEdBQUUsR0FBRztBQUFBLDBCQUFXLEVBQUUsUUFBTSxlQUFhO0FBQVUsc0JBQUcsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxJQUFHO0FBQUMsc0JBQUUsR0FBRSxJQUFFLE9BQU0sRUFBRTtBQUFFLHdCQUFHLEVBQUMsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRTtBQUFFLHdCQUFHLE1BQUksZUFBYSxLQUFJLEVBQUUsUUFBTSxRQUFPO0FBQUMsMEJBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSwwQkFBRyxFQUFDLE9BQU0sSUFBRyxZQUFXLEdBQUUsSUFBRTtBQUFFLDBCQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLE1BQUksRUFBRSxVQUFRLGFBQVcsT0FBSyxjQUFZLE9BQUssY0FBWSxPQUFLLEtBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxLQUFHLEtBQUcsR0FBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsQ0FBQyxJQUFFLEtBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxLQUFHLEVBQUUsVUFBUSxjQUFZLEVBQUUsYUFBVyxNQUFJLEtBQUcsS0FBSSxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLE1BQUksS0FBRyxJQUFHLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxvQkFBRTtBQUFLLHVCQUFDLEVBQUUsUUFBTSxhQUFXLFdBQVMsSUFBRSxFQUFFLFVBQVEsV0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLGNBQWEsRUFBRSxhQUFXLElBQUUsS0FBRyxJQUFFLEdBQUUsRUFBRSxVQUFRLE1BQUksRUFBRSxVQUFRLGFBQVcsRUFBRSxhQUFXLE1BQUksS0FBRyxPQUFLLEVBQUUsZUFBYSxPQUFLLE1BQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxhQUFXLElBQUUsS0FBRyxJQUFHLEVBQUUsUUFBTSxhQUFXLFVBQVEsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxNQUFJLEVBQUUsUUFBTSxhQUFXLFlBQVUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUcsRUFBRSxHQUFFLElBQUUsT0FBTSxFQUFFLE1BQUksSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUcsS0FBRyxFQUFFLGFBQVcsSUFBRSxLQUFHLFNBQU8sSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxJQUFHLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxhQUFXLEVBQUUsYUFBVyxNQUFJLEtBQUcsT0FBSyxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLGFBQVcsSUFBRSxJQUFFLElBQUcsRUFBRSxVQUFRLE1BQUksRUFBRSxVQUFRLGVBQWEsRUFBRSxVQUFRLGVBQWEsS0FBRyxLQUFJLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxrQkFBSTtBQUFNLHNCQUFFLFVBQVEsWUFBVSxLQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU0sR0FBRSxJQUFFLEVBQUUsYUFBVyxNQUFJLEVBQUUsR0FBRSxHQUFHO0FBQUEseUJBQVUsRUFBRSxVQUFRO0FBQVMsc0JBQUcsSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLGVBQWEsTUFBSSxNQUFJLEdBQUUsS0FBRyxHQUFFLEVBQUUsVUFBUSxJQUFHO0FBQUMsc0JBQUUsR0FBRSxJQUFFLEtBQUs7QUFBRSx3QkFBRyxFQUFDLFVBQVMsR0FBRSxTQUFRLEdBQUUsUUFBTyxHQUFFLFlBQVcsSUFBRyxPQUFNLEdBQUUsSUFBRTtBQUFFLHdCQUFHLEVBQUUsUUFBTSxRQUFPO0FBQUMsMEJBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSwwQkFBRyxFQUFDLE9BQU0sR0FBRSxJQUFFO0FBQUUsMEJBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLFFBQU0sYUFBVyxXQUFTLEtBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxPQUFLLGFBQVcsSUFBRSxJQUFHLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsS0FBRyxFQUFFLFVBQVEsTUFBSSxFQUFFLFVBQVEsYUFBVyxPQUFLLGNBQVksT0FBSyxjQUFZLE9BQUssS0FBRyxFQUFFLGFBQVcsSUFBRSxLQUFHLEtBQUcsTUFBSSxLQUFHLFlBQVUsVUFBUSxHQUFHLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxDQUFDLElBQUUsS0FBRyxFQUFFLGFBQVcsSUFBRSxLQUFHLE1BQUksS0FBRyxJQUFHLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxvQkFBRTtBQUFLLHVCQUFDLEVBQUUsUUFBTSxhQUFXLFdBQVMsSUFBRSxFQUFFLFVBQVEsV0FBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLGNBQWEsRUFBRSxhQUFXLElBQUUsS0FBRyxJQUFFLEdBQUUsRUFBRSxVQUFRLE1BQUksRUFBRSxVQUFRLGFBQVcsRUFBRSxhQUFXLE1BQUksS0FBRyxNQUFJLElBQUUsSUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsYUFBVyxJQUFFLElBQUUsS0FBRyxJQUFHLEVBQUUsUUFBTSxhQUFXLFdBQVMsRUFBRSxVQUFRLGVBQWEsS0FBRyxLQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsT0FBSyxFQUFFLFFBQU0sYUFBVyxZQUFVLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxJQUFFLE9BQU0sRUFBRSxNQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLEtBQUcsRUFBRSxhQUFXLElBQUUsS0FBRyxTQUFPLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsYUFBVyxJQUFFLEtBQUcsSUFBRyxFQUFFLFVBQVEsTUFBSSxFQUFFLFVBQVEsYUFBVyxFQUFFLGFBQVcsTUFBSSxLQUFHLE9BQUssSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxhQUFXLElBQUUsSUFBRSxJQUFHLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxlQUFhLEVBQUUsVUFBUSxlQUFhLEtBQUcsS0FBSSxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsa0JBQUk7QUFBTSxzQkFBRSxVQUFRLFlBQVUsS0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsVUFBUyxHQUFFLENBQUMsR0FBRSxJQUFFLE1BQUksRUFBRSxHQUFFLEVBQUU7QUFBQSx5QkFBVSxNQUFJO0FBQVEsc0JBQUcsRUFBRSxHQUFFLElBQUUsT0FBTSxPQUFPLEdBQUUsS0FBRyxHQUFFLEVBQUUsUUFBTSxRQUFPO0FBQUMsd0JBQUcsRUFBQyxPQUFNLEdBQUUsTUFBSyxHQUFFLE9BQU0sRUFBQyxJQUFFO0FBQUUsd0JBQUUsRUFBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEtBQUcsR0FBRSxFQUFFLFVBQVEsWUFBVSxLQUFHLElBQUcsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU0sS0FBRyxFQUFFLEdBQUUsR0FBRSxHQUFFLE1BQUksU0FBTyxLQUFHLE1BQUksU0FBTyxFQUFFLFVBQVEsUUFBTSxLQUFHLElBQUcsRUFBRSxJQUFFLElBQUk7QUFBQSxrQkFBQztBQUFLLHFCQUFDLEVBQUUsUUFBTSxlQUFhLGFBQVcsS0FBRyxJQUFHLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLENBQUMsS0FBRyxFQUFFLFVBQVEsWUFBVSxLQUFHLElBQUcsS0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLEtBQUcsRUFBRSxHQUFFLEdBQUc7QUFBQTtBQUFPLG9CQUFFLEdBQUUsSUFBRyxFQUFFLElBQUUsSUFBSTtBQUFFLHFCQUFHLEVBQUUsZUFBYSxNQUFJLE1BQUksR0FBRSxFQUFFLGVBQWEsR0FBRSxFQUFFLEtBQUssRUFBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBQyxNQUFLLFlBQVcsS0FBSSxHQUFFLE9BQU0sR0FBRSxNQUFLLElBQUUsTUFBSSxJQUFFLE1BQUksUUFBTSxRQUFNLFFBQU8sV0FBVSxJQUFFLEtBQUcsR0FBRSxTQUFRLElBQUUsS0FBRyxHQUFFLFlBQVcsSUFBRSxLQUFHLEVBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFHLEtBQUcsRUFBRSxjQUFhLEVBQUUsVUFBUTtBQUFHO0FBQU0sZ0JBQUUs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RSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLFVBQVEsTUFBSSxFQUFFLFVBQVEsT0FBSyxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxDQUFDO0FBQUEsd0JBQWEsSUFBRSxhQUFXO0FBQVEsb0JBQUUsTUFBSSxVQUFRLEdBQUcsR0FBRSxJQUFFLFlBQVcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxZQUFXLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLGNBQWEsSUFBRSxHQUFFLEVBQUUsYUFBVyxHQUFFLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxPQUFLLElBQUUsS0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxLQUFHLElBQUcsRUFBRSxVQUFRLE1BQUksRUFBRSxVQUFRLE9BQUssSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsQ0FBQztBQUFBLHVCQUFZLE1BQUksSUFBRztBQUFDLG9CQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLGVBQWEsTUFBSSxFQUFFLEdBQUUsRUFBRSxHQUFFLElBQUUsR0FBRSxNQUFJLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxPQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUUsS0FBRztBQUFFO0FBQUEsY0FBSyxPQUFLO0FBQUMsb0JBQUcsS0FBRyxJQUFHLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxNQUFJLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxPQUFLLEVBQUUsS0FB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RSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBRyxFQUFFLGNBQWEsSUFBRSxHQUFFLEVBQUUsVUFBUSxNQUFJLEVBQUUsVUFBUSxPQUFLLElBQUUsS0FBRyxFQUFFLEdBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxLQUFHLEtBQUksRUFBRSxRQUFNLGFBQVcsWUFBVSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsSUFBRSxPQUFNLEVBQUUsTUFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSx1QkFBWSxNQUFJO0FBQUcsb0JBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxJQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLE1BQUksRUFBRSxVQUFRLEtBQUcsSUFBRSxNQUFJLEVBQUUsY0FBYSxJQUFFO0FBQUEsbUJBQU07QUFBQyxxQkFBSSxJQUFFLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFlBQVcsRUFBRSxLQUFLLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxPQUFNLEVBQUU7QUFBRyxvQkFBRSxLQUFLLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSx1QkFBTyxLQUFHLEVBQUUsWUFBVyxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxlQUFhLElBQUUsSUFBRyxFQUFFLGFBQVcsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssa0JBQWlCLFFBQU8sR0FBRSxXQUFVLEVBQUMs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bUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFO0FBQUssZ0JBQUcsSUFBRSxLQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRLFlBQVc7QUFBQyxnQkFBRSxHQUFFLElBQUUsS0FBSztBQUFFLGtCQUFHLEVBQUMsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRTtBQUFFLGdCQUFFLFVBQVEsYUFBVyxFQUFFLEdBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsT0FBTSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsUUFBTSxnQkFBYyxlQUFhLElBQUUsRUFBRSxHQUFFLElBQUUsT0FBTSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLElBQUUsT0FBTSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsVUFBUSxPQUFLLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBRztBQUFDLG1CQUFPLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUMsTUFBSyxzQkFBcUIsS0FBSSxHQUFFLE9BQU0sR0FBRSxTQUFRLElBQUUsTUFBSSxHQUFFLFdBQVUsSUFBRSxLQUFHLEdBQUUsWUFBVyxFQUFDLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBRyxFQUFFLFFBQU07QUFBTyxxQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLGFBQUMsRUFBRSxRQUFNLGFBQVcsV0FBUyxFQUFFLEdBQUUsSUFBRyxFQUFFLEVBQUUsUUFBTSxJQUFJO0FBQUUsZ0JBQUksSUFBRSxFQUFFLFVBQVEsV0FBUyxH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QUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRSxPQUFPLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLHFCQUFvQixDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxDQUFDO0FBQUUsbUJBQUssRUFBRSxVQUFRO0FBQUksZ0JBQUUsUUFBTSxFQUFFLFdBQVMsRUFBRSxVQUFTLEVBQUUsU0FBTyxFQUFFLFNBQU8sRUFBRSxhQUFZLEVBQUUsT0FBSyxFQUFFLFVBQVEsRUFBRSxXQUFVLEdBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLEdBQUcsR0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLENBQUM7QUFBRSxtQkFBTztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUUsVUFBUTtBQUFJLHFCQUFPLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsZ0JBQUcsRUFBRSxVQUFRO0FBQVEscUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsZ0JBQUcsRUFBRSxVQUFRO0FBQVEscUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLGNBQUUsR0FBRSxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZUFBRyxHQUFFLENBQUM7QUFBRSxnQkFBSSxJQUFFLEVBQUMsTUFBSyxXQUFVLE9BQU0sRUFBRSxXQUFVO0FBQUUsbUJBQU8sSUFBRSxRQUFNLEVBQUUsTUFBSSxFQUFFLFdBQVUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsYUFBQyxFQUFFLFFBQU0sWUFBVSxXQUFTLEVBQUUsUUFBTSxVQUFRLFFBQU0sRUFBRSxHQUFFLENBQUM7QUFBRSxnQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEVBQUUsVUFBUyxFQUFFLFNBQVEsRUFBRSxNQUFNLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFRO0FBQVEsbUJBQU8sRUFBRSxVQUFRLFVBQVEsR0FBRyxHQUFFLENBQUMsS0FBRyxFQUFFLEdBQUUsR0FBRSxPQUFPLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxPQUFPLElBQUUsR0FBRyxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUsscUJBQW9CLE1BQUssR0FBRSxZQUFXLEdBQUUsYUFBWSxFQUFDLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxlQUFHLENBQUM7QUFBRSxnQkFBSSxJQUFFLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsZ0JBQUcsRUFBRSxVQUFRO0FBQUcscUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFLLEVBQUUsR0FBRSxHQUFFLFFBQVE7QUFBRyxpQkFBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUUsbUJBQU87QUFBQSxVQUFDO0FBQUMsbUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU07QUFBRSxtQkFBTyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssdUJBQXNCLFFBQU8sR0FBRSxVQUFTLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsQ0FBQztBQUFFLG1CQUFLLEVBQUUsVUFBUSxXQUFTLEVBQUUsVUFBUSxXQUFTLEVBQUUsVUFBUTtBQUFTLGdCQUFFLEtBQUssR0FBRyxHQUFFLEdBQUUsRUFBRSxVQUFTLEVBQUUsU0FBUSxFQUFFLE1BQU0sQ0FBQztBQUFFLG1CQUFPO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsY0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFFO0FBQUUsZ0JBQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLFVBQVMsRUFBRSxTQUFRLEVBQUUsTUFBTTtBQUFFLG1CQUFPLEVBQUUsR0FBRSxHQUFFLFVBQVUsR0FBRSxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssc0JBQXFCLFVBQVMsRUFBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEdBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBRSxVQUFRO0FBQVEscUJBQU8sR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRSxlQUFHLENBQUM7QUFBRSxnQkFBSSxJQUFFLE1BQUssSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFLGdCQUFHLEVBQUUsVUFBUSxPQUFLLElBQUUsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsVUFBUSxZQUFXO0FBQUMsa0JBQUksSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUMsVUFBUyxHQUFFLFNBQVEsR0FBRSxRQUFPLEVBQUMsSUFBRTtBQUFFLHNCQUFPO0FBQUEscUJBQVE7QUFBVSxzQkFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFO0FBQUEscUJBQVc7QUFBUSxzQkFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFRLHNCQUFF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QUFBRSxVQUFJLEtBQUcsRUFBRSxRQUFJO0FBQUM7QUFBYSxZQUFJLEtBQUcsQ0FBQyxFQUFFLHNCQUFxQixLQUFHLE9BQU8sMEJBQXlCLEtBQUcsTUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFDLEdBQUUsRUFBQyxHQUFFLENBQUM7QUFBRSxXQUFHLElBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsR0FBRyxNQUFLLENBQUM7QUFBRSxpQkFBTSxDQUFDLENBQUMsS0FBRyxFQUFFO0FBQUEsUUFBVSxJQUFFO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxpQkFBTSxFQUFDLFlBQVcsRUFBRSxJQUFFLElBQUcsY0FBYSxFQUFFLElBQUUsSUFBRyxVQUFTLEVBQUUsSUFBRSxJQUFHLE9BQU0sRUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxHQUFHLE1BQUssS0FBRyxHQUFHLE1BQUssS0FBRyxNQUFJLEdBQUcsS0FBSyxJQUFHLEVBQUU7QUFBRSxXQUFHLFVBQVEsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLEdBQUcsQ0FBQztBQUFBLFFBQUMsSUFBRSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLFdBQVU7QUFBQyxtQkFBTyxHQUFHLE1BQU0sR0FBRSxTQUFTO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUUsS0FBRyxHQUFHLEdBQUcsS0FBSztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLEdBQUUsRUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFFBQU8sS0FBRyxHQUFHLEdBQUcsS0FBSztBQUFFLFdBQUcsVUFBUSxHQUFHLFdBQVU7QUFBQyxpQkFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLHFCQUFxQixDQUFDO0FBQUEsUUFBQyxDQUFDLElBQUUsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxDQUFDLEtBQUcsV0FBUyxHQUFHLEdBQUUsRUFBRSxJQUFFLEdBQUcsQ0FBQztBQUFBLFFBQUMsSUFBRTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBVSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsY0FBRyxLQUFHO0FBQUssa0JBQU0sR0FBRywwQkFBd0IsQ0FBQztBQUFFLGlCQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLEtBQUc7QUFBQSxRQUFVO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxPQUFPLEtBQUcsV0FBUyxNQUFJLE9BQUssR0FBRyxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsQ0FBQyxJQUFFLElBQUU7QUFBQSxRQUFNO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsaUJBQU8sVUFBVSxTQUFPLElBQUUsR0FBRyxHQUFHLEVBQUUsSUFBRSxHQUFHLE1BQUksR0FBRyxHQUFHO0FBQUEsUUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsR0FBRyxDQUFDLEVBQUUsYUFBYTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsR0FBRyxhQUFZLFdBQVcsS0FBRztBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsU0FBUSxLQUFHLEdBQUcsTUFBSyxLQUFHLE1BQUksR0FBRyxZQUFVLE1BQUksR0FBRyxTQUFRLEtBQUcsTUFBSSxHQUFHLElBQUcsSUFBRztBQUFHLGVBQUssS0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFFLEtBQUcsR0FBRyxLQUFHLEtBQUcsR0FBRyxLQUFHLElBQUUsSUFBRSxFQUFFLEdBQUcsS0FBRyxHQUFHO0FBQUssU0FBQyxNQUFJLE9BQUssS0FBRyxHQUFHLE1BQU0sYUFBYSxJQUFHLENBQUMsTUFBSSxHQUFHLE1BQUksUUFBTSxLQUFHLEdBQUcsTUFBTSxlQUFlLEdBQUUsT0FBSyxLQUFHLENBQUMsR0FBRztBQUFNLFdBQUcsVUFBUTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsQ0FBQyxDQUFDLE9BQU8seUJBQXVCLENBQUMsR0FBRyxXQUFVO0FBQUMsY0FBSSxJQUFFLE9BQU87QUFBRSxpQkFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFHLEVBQUUsT0FBTyxDQUFDLGFBQVksV0FBUyxDQUFDLE9BQU8sUUFBTSxNQUFJLEtBQUc7QUFBQSxRQUFFLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLE1BQUksQ0FBQyxPQUFPLFFBQU0sT0FBTyxPQUFPLFlBQVU7QUFBQSxNQUFRLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sT0FBTyxLQUFHO0FBQUEsUUFBUSxJQUFFLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLFFBQVE7QUFBRSxpQkFBTyxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsV0FBVSxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUc7QUFBQyxtQkFBTyxHQUFHLENBQUM7QUFBQSxVQUFDLFFBQUM7QUFBTSxtQkFBTTtBQUFBLFVBQVE7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUs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R0FBRyxDQUFDLEVBQUUsY0FBYztBQUFFLFdBQUcsVUFBUSxPQUFPLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEtBQUssT0FBTyxHQUFFLEtBQUcsR0FBRyxHQUFHLFFBQVE7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU0sYUFBVyxNQUFJLFNBQU8sS0FBRyxLQUFHLE9BQUssR0FBRyxFQUFFLEtBQUcsSUFBRyxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSyxHQUFFLEtBQUcsR0FBRyxRQUFPLEtBQUcsTUFBSSxHQUFHLEtBQUksS0FBRyxLQUFHLEtBQUcsTUFBSSxHQUFHLGlCQUFlO0FBQUcsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUcsQ0FBQyxHQUFHLElBQUcsQ0FBQyxLQUFHLEVBQUUsTUFBSSxPQUFPLEdBQUcsTUFBSSxXQUFVO0FBQUMsZ0JBQUksSUFBRSxZQUFVO0FBQUUsa0JBQUksR0FBRyxJQUFHLENBQUMsSUFBRSxHQUFHLEtBQUcsR0FBRyxLQUFHLE1BQUksS0FBRyxHQUFHLEtBQUcsR0FBRyxDQUFDLElBQUUsR0FBRyxLQUFHLEdBQUcsQ0FBQztBQUFBLFVBQUM7QUFBQyxpQkFBTyxHQUFHO0FBQUEsUUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsV0FBVSxLQUFHLEdBQUcsYUFBYTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUcsQ0FBQyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBRSxtQkFBTztBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsRUFBRSxHQUFFO0FBQUUsY0FBRyxHQUFFO0FBQUMsZ0JBQUcsTUFBSSxXQUFTLElBQUUsWUFBVyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUcsQ0FBQyxLQUFHLEdBQUcsQ0FBQztBQUFFLHFCQUFPO0FBQUUsa0JBQU0sR0FBRyx5Q0FBeUM7QUFBQSxVQUFDO0FBQUMsaUJBQU8sTUFBSSxXQUFTLElBQUUsV0FBVSxHQUFHLEdBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLEdBQUUsUUFBUTtBQUFFLGlCQUFPLEdBQUcsQ0FBQyxJQUFFLElBQUUsSUFBRTtBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFVBQVMsS0FBRyxHQUFHLEVBQUUsS0FBRyxHQUFHLEdBQUcsYUFBYTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLEdBQUcsY0FBYyxDQUFDLElBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUks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QUFHLE9BQUssR0FBRyxLQUFHLEdBQUcsQ0FBQztBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFdBQUcsVUFBUSxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsOEJBQTZCLEtBQUcsR0FBRyxXQUFVLEtBQUcsR0FBRyxTQUFRLElBQUcsSUFBRyxJQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLFNBQVMsR0FBRTtBQUFDLGdCQUFJO0FBQUUsZ0JBQUcsQ0FBQyxHQUFHLENBQUMsTUFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFHLFNBQU87QUFBRSxvQkFBTSxHQUFHLDRCQUEwQixJQUFFLFdBQVc7QUFBRSxtQkFBTztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUUsY0FBSSxHQUFHLFNBQU8sS0FBRyxHQUFHLFVBQVEsR0FBRyxRQUFNLElBQUksT0FBSSxLQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUMsS0FBRyxDQUFDO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxRQUFDLE1BQUksS0FBRyxHQUFHLE9BQU8sR0FBRSxHQUFHLE1BQUksTUFBRyxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxFQUFFLE1BQUksQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFHLFlBQUksSUFBRyxJQUFHLElBQUcsSUFBRztBQUFHLFdBQUcsVUFBUSxFQUFDLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFNBQVEsSUFBRyxXQUFVLEdBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxNQUFJLE9BQU8sMEJBQXlCLEtBQUcsR0FBRyxJQUFHLE1BQU0sR0FBRSxLQUFHLE1BQUksV0FBVTtBQUFBLFFBQUMsRUFBRSxTQUFPLGFBQVksS0FBRyxPQUFLLENBQUMsTUFBSSxNQUFJLEdBQUcsSUFBRyxNQUFNLEVBQUU7QUFBYyxXQUFHLFVBQVEsRUFBQyxRQUFPLElBQUcsUUFBTyxJQUFHLGNBQWEsR0FBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxjQUFhLEtBQUcsR0FBRyxLQUFJLEtBQUcsR0FBRyxTQUFRLEtBQUcsT0FBTyxNQUFNLEVBQUUsTUFBTSxRQUFRO0FBQUUsU0FBQyxHQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLElBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBTyxPQUFHLElBQUUsSUFBRSxDQUFDLENBQUMsRUFBRSxhQUFXLE9BQUcsSUFBRSxJQUFFLENBQUMsQ0FBQyxFQUFFLGNBQVksT0FBRyxJQUFFLEtBQUcsRUFBRSxTQUFPLFNBQU8sRUFBRSxPQUFLLEdBQUU7QUFBRSxjQUFHLEdBQUcsQ0FBQyxNQUFJLE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FBRSxDQUFDLE1BQUksY0FBWSxJQUFFLE1BQUksT0FBTyxDQUFDLEVBQUUsUUFBUSxzQkFBcUIsSUFBSSxJQUFFLE9BQU0sQ0FBQyxHQUFHLEdBQUUsTUFBTSxLQUFHLE1BQUksRUFBRSxTQUFPLE1BQUksR0FBRyxHQUFFLFFBQU8sQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsRUFBRSxXQUFTLEVBQUUsU0FBTyxHQUFHLEtBQUssT0FBTyxLQUFHLFdBQVMsSUFBRSxFQUFFLEtBQUksTUFBSSxJQUFHO0FBQUMsZ0JBQUUsRUFBRSxLQUFHLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBRTtBQUFBLFVBQU07QUFBTSxnQkFBRSxDQUFDLEtBQUcsRUFBRSxPQUFLLElBQUUsUUFBSSxPQUFPLEVBQUU7QUFBRyxjQUFFLEVBQUUsS0FBRyxJQUFFLEdBQUcsR0FBRSxHQUFFLENBQUM7QUFBQSxRQUFDLEdBQUcsU0FBUyxXQUFVLFlBQVcsV0FBVTtBQUFDLGlCQUFPLEdBQUcsSUFBSSxLQUFHLEdBQUcsSUFBSSxFQUFFLFVBQVEsR0FBRyxJQUFJO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsS0FBSyxNQUFLLEtBQUcsS0FBSztBQUFNLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsQ0FBQztBQUFFLGlCQUFPLE1BQUksS0FBRyxNQUFJLElBQUUsS0FBRyxJQUFFLElBQUUsS0FBRyxJQUFJLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsS0FBSyxLQUFJLEtBQUcsS0FBSztBQUFJLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLENBQUM7QUFBRSxpQkFBTyxJQUFFLElBQUUsR0FBRyxJQUFFLEdBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEtBQUs7QUFBSSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sSUFBRSxJQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsZ0JBQWdCLElBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEVBQUUsTUFBTTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRTtBQUFFLGdCQUFHLEtBQUcsS0FBRyxHQUFFO0FBQUMscUJBQUssSUFBRTtBQUFHLG9CQUFHLElBQUUsRUFBRSxNQUFLLEtBQUc7QUFBRSx5QkFBTTtBQUFBLFlBQUU7QUFBTSxxQkFBSyxJQUFFLEdBQUU7QUFBSSxxQkFBSSxLQUFHLEtBQUssTUFBSSxFQUFFLE9BQUs7QUFBRSx5QkFBTyxLQUFHLEtBQUc7QUFBRSxtQkFBTSxDQUFDLEtBQUc7QUFBQSxVQUFFO0FBQUEsUUFBQztBQUFFLFdBQUcsVUFBUSxFQUFDLFVBQVMsR0FBRyxJQUFFLEdBQUUsU0FBUSxHQUFHLEtBQUUsRUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxTQUFRLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBRSxlQUFJLEtBQUs7QUFBRSxhQUFDLEdBQUcsSUFBRyxDQUFDLEtBQUcsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFFLGlCQUFLLEVBQUUsU0FBTztBQUFHLGVBQUcsR0FBRSxJQUFFLEVBQUUsSUFBSSxNQUFJLENBQUMsR0FBRyxHQUFFLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQztBQUFHLGlCQUFPO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsV0FBRyxVQUFRLENBQUMsZUFBYyxrQkFBaUIsaUJBQWdCLHdCQUF1QixrQkFBaUIsWUFBVyxTQUFTO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsUUFBSTtBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLE9BQU8sVUFBUyxXQUFXO0FBQUUsV0FBRyxJQUFFLE9BQU8sdUJBQXFCLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLFFBQUk7QUFBQyxXQUFHLElBQUUsT0FBTztBQUFBLE1BQXFCLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNO0FBQUUsV0FBRyxVQUFRLEdBQUcsV0FBVSxTQUFTLEtBQUcsU0FBUyxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLElBQUUsR0FBRztBQUFFLGlCQUFPLElBQUUsR0FBRyxHQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQVEsSUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFHLGFBQUMsR0FBRyxHQUFFLENBQUMsS0FBRyxFQUFFLEtBQUcsR0FBRyxHQUFFLENBQUMsTUFBSSxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFB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QkFBTSxFQUFDLFNBQVEsRUFBQztBQUFFLGdCQUFHLEVBQUMsZ0JBQWUsR0FBRSxVQUFTLEdBQUUsT0FBTSxJQUFFLElBQUcsY0FBYSxFQUFDLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxLQUFLLEtBQUc7QUFBTyxnQkFBRyxNQUFJLFVBQVEsSUFBRSxTQUFRLE1BQUksVUFBUSxNQUFJO0FBQUUscUJBQU0sRUFBQyxTQUFRLEVBQUM7QUFBRSxnQkFBRyxDQUFDLENBQUMsSUFBRTtBQUFFLG1CQUFNLEVBQUMsYUFBWSxFQUFDLE1BQUssZ0JBQWUsTUFBSyxHQUFFLE9BQU0sR0FBRSxnQkFBZSxHQUFFLGNBQWEsR0FBRSxLQUFJLEVBQUUsUUFBUSxPQUFNLEVBQUUsRUFBQyxHQUFFLFNBQVEsRUFBRSxRQUFRLFVBQVMsR0FBRyxJQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQztBQUFFLFdBQUcsSUFBRyxFQUFDLEtBQUksTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLHNCQUFxQixNQUFJLElBQUcsVUFBUyxNQUFJLElBQUcsU0FBUSxNQUFJLElBQUcsbUJBQWtCLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxTQUFRLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxRQUFPLE1BQUksSUFBRyxVQUFTLE1BQUksSUFBRyxNQUFLLE1BQUksSUFBRyxRQUFPLE1BQUksR0FBRSxDQUFDO0FBQUUsaUJBQVMsS0FBSTtBQUFDLGNBQUcsT0FBTyxLQUFHLEtBQUk7QUFBQyxnQkFBSSxJQUFFLElBQUksWUFBWSxDQUFDLEdBQUUsSUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBSSxZQUFZLENBQUM7QUFBRSxnQkFBRyxFQUFFLEtBQUcsR0FBRSxFQUFFLEtBQUcsR0FBRSxFQUFFLE9BQUs7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QUFJLEdBQUUsSUFBRSxFQUFFLFFBQVEsR0FBRSxFQUFFLEVBQUUsUUFBUSxHQUFFLEVBQUUsRUFBRSxVQUFVLEdBQUU7QUFBRSxtQkFBSyxJQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUc7QUFBQyxrQkFBSSxJQUFFLEVBQUUsR0FBRyxRQUFRLEdBQUUsRUFBRTtBQUFFLHFCQUFPLEVBQUUsRUFBRSxPQUFLLFlBQVUsTUFBTSxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUUsRUFBRSxFQUFFLE1BQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFJLENBQUMsSUFBRSxFQUFFLEVBQUUsTUFBSTtBQUFBLFlBQUM7QUFBQyxtQkFBTSxFQUFDLFVBQVMsR0FBRSxTQUFRLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLElBQUUsSUFBRyxTQUFRLElBQUUsQ0FBQyxFQUFDLElBQUUsR0FBRSxLQUFHLEdBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxLQUFHLEVBQUUsRUFBRSxLQUFJLElBQUUsT0FBTSxJQUFFLE1BQUssSUFBRSxPQUFNLElBQUUsT0FBTyxLQUFLLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBSSxPQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUksRUFBRSxPQUFPLENBQUMsR0FBRSxDQUFDLENBQUMsRUFBRSxJQUFJLE9BQUcsSUFBRSxNQUFJLElBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUFFLGdCQUFHLENBQUMsR0FBRTtBQUFDLGtCQUFHLEVBQUUsV0FBUztBQUFFLHVCQUFNO0FBQUcsa0JBQUcsRUFBRSxXQUFTLEtBQUcsQ0FBQyxNQUFNLFFBQVEsRUFBRSxFQUFFLEdBQUcsR0FBRTtBQUFDLG9CQUFJLElBQUUsRUFBRSxFQUFFO0FBQUksdUJBQU0sR0FBRyxPQUFPLEdBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7QUFBQSxjQUFD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QUFLLEtBQUs7QUFBTSxrQkFBRSxTQUFPO0FBQU8scUJBQU8sS0FBSyxRQUFNLENBQUMsR0FBRTtBQUFBLFlBQUk7QUFBQSxZQUFDLE1BQU0sR0FBRTtBQUFDLHFCQUFPLEtBQUssTUFBTSxNQUFNLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxLQUFLLEdBQUU7QUFBQyxxQkFBTyxLQUFLLE1BQU0sS0FBSyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsTUFBTSxHQUFFO0FBQUMscUJBQU8sT0FBTyxLQUFHLFdBQVMsSUFBRSxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsSUFBSSxRQUFPO0FBQUMsa0JBQUcsQ0FBQyxDQUFDLEtBQUs7QUFBTSx1QkFBTyxLQUFLLE1BQU07QUFBQSxZQUFFO0FBQUEsWUFBQyxJQUFJLE9BQU07QUFBQyxrQkFBRyxDQUFDLENBQUMsS0FBSztBQUFNLHVCQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBTztBQUFBLFlBQUU7QUFBQSxZQUFDLFdBQVU7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFBRSxxQkFBTyxLQUFLLFVBQVEsSUFBRSxLQUFLLFFBQU0sSUFBRyxLQUFLLEtBQUssV0FBUyxJQUFFLEtBQUssS0FBSyxTQUFPLElBQUcsS0FBSyxLQUFLLFVBQVEsS0FBRyxLQUFLLEtBQUssUUFBTztBQUFBLFlBQUM7QUFBQSxVQUFDO0FBQUUsWUFBRSxpQkFBZSxPQUFHO0FBQUMsZ0JBQUksSUFBRSxTQUFPLEVBQUU7QUFBSyxjQUFFLFlBQVksR0FBRyxNQUFJLEVBQUUsU0FBTyxNQUFJLEtBQUcsTUFBSyxDQUFDLEVBQUUsVUFBVSxPQUFLLEVBQUUsVUFBVSxLQUFHLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEtBQUssU0FBUyxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBRSxHQUFFLEVBQUUsVUFBUTtBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsaURBQWlELEdBQUUs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QUFBQyxtQkFBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsVUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLElBQUksR0FBRSxHQUFHLEdBQUUsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFDLGlCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLENBQUM7QUFBRSxtQkFBTyxFQUFFLFFBQVEsYUFBWSxXQUFXO0FBQUUsY0FBRyxHQUFHLENBQUMsR0FBRTtBQUFDLGdCQUFJLElBQUUsTUFBSSxLQUFLLFVBQVUsQ0FBQyxFQUFFLFFBQVEsVUFBUyxFQUFFLEVBQUUsUUFBUSxNQUFLLEtBQUssRUFBRSxRQUFRLFFBQU8sR0FBRyxJQUFFO0FBQUksbUJBQU8sRUFBRSxRQUFRLEdBQUUsUUFBUTtBQUFBLFVBQUM7QUFBQyxjQUFHLEdBQUcsQ0FBQztBQUFFLG1CQUFPLEVBQUUsUUFBUSxLQUFHLEdBQUUsUUFBUTtBQUFFLGNBQUcsR0FBRyxDQUFDO0FBQUUsbUJBQU8sRUFBRSxRQUFRLEtBQUcsR0FBRSxTQUFTO0FBQUUsY0FBRyxHQUFHLENBQUM7QUFBRSxtQkFBTyxFQUFFLFFBQVEsUUFBTyxNQUFNO0FBQUEsUUFBQztBQUFDLGlCQUFTLEdBQUcsR0FBRTtBQUFDLGlCQUFNLE1BQUksTUFBTSxVQUFVLFNBQVMsS0FBSyxDQUFDLElBQUU7QUFBQSxRQUFHO0FBQUMsaUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBUSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxHQUFFLEVBQUU7QUFBRSxlQUFHLEdBQUUsT0FBTyxDQUFDLENBQUMsSUFBRSxFQUFFLEtBQUssR0FBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLE9BQU8sQ0FBQyxHQUFFLElBQUUsQ0FBQyxJQUFFLEVBQUUsS0FBSyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxRQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUUsTUFBTSxPQUFPLEtBQUcsRUFBRSxLQUFLLEdB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LGlCQUFNLENBQUMsRUFBRSxRQUFRLEdBQUUsR0FBRyxFQUFFLFNBQVMsSUFBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxrQkFBUSxJQUFJLFdBQVUsR0FBRyxHQUFFLEdBQUcsTUFBTSxNQUFLLFNBQVMsQ0FBQztBQUFBLFFBQUM7QUFBQyxpQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGNBQUcsQ0FBQyxLQUFHLENBQUMsR0FBRyxDQUFDO0FBQUUsbUJBQU87QUFBRSxtQkFBUSxJQUFFLE9BQU8sS0FBSyxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBSyxjQUFFLEVBQUUsTUFBSSxFQUFFLEVBQUU7QUFBSSxpQkFBTztBQUFBLFFBQUM7QUFBQyxpQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLGlCQUFPLE9BQU8sVUFBVSxlQUFlLEtBQUssR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFDLFlBQUksSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUcsR0FBRyxFQUFDLGdDQUErQjtBQUFDLFlBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRyxHQUFFLEtBQUcsWUFBVyxLQUFHLENBQUMsR0FBRSxHQUFHLFNBQU8sRUFBQyxNQUFLLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxHQUFFLFdBQVUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFRLENBQUMsR0FBRSxFQUFFLEdBQUUsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsU0FBUSxDQUFDLElBQUcsRUFBRSxHQUFFLEtBQUksQ0FBQyxJQUFHLEVBQUUsR0FBRSxRQUFPLENBQUMsSUFBRyxFQUFFLEVBQUMsR0FBRSxHQUFHLFNBQU8sRUFBQyxTQUFRLFFBQU8sUUFB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O0FBQUUsZ0JBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQVEsR0FBRSxJQUFFLEVBQUUsUUFBTyxJQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxNQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRztBQUFHLHFCQUFTLEdBQUcsSUFBRztBQUFDLGtCQUFJLEtBQUcsRUFBRSxPQUFPLGtEQUFpRCxJQUFHLEdBQUUsSUFBRSxHQUFFLENBQUM7QUFBRSxvQkFBTSxJQUFJLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxLQUFJO0FBQUMsa0JBQUksS0FBRyxFQUFFLE9BQU8sbURBQWtELEdBQUUsSUFBRSxHQUFFLENBQUM7QUFBRSxvQkFBTSxJQUFJLEVBQUUsRUFBRTtBQUFBLFlBQUM7QUFBQyxtQkFBSyxJQUFFLEtBQUc7QUFBQyxzQkFBTyxJQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUUsTUFBSSxNQUFJLElBQUUsR0FBRSxLQUFHLElBQUc7QUFBQSxxQkFBUTtBQUFBLHFCQUFPO0FBQUEscUJBQU87QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUUsc0JBQUU7QUFBRTtBQUFHLHlCQUFHLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLE1BQUksTUFBSSxJQUFFLEdBQUUsS0FBRztBQUFBLHlCQUFTLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJO0FBQUcsb0JBQUUsS0FBSyxDQUFDLFNBQVEsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsSUFBRTtBQUFFO0FBQUEscUJBQVc7QUFBRSxzQkFBRSxJQUFFLEdBQUUsRUFBRSxLQUFLLENBQUMsU0FBUSxFQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsR0FBRSxJQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxJQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFFLHNCQUFFLElBQUUsR0FBRSxFQUFFLEtBQUssQ0FBQyxTQUFRLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFLElBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUUsb0JBQUUsS0FBSyxDQUFDLEtBQUksS0FBSSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUUsb0JBQUUsS0FBSyxDQUFDLEtBQUksS0FBSSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUUsdUJBQUksSUFBRSxDQUFDLEtBQUcsTUFBSSxLQUFHLEVBQUUsU0FBTyxLQUFHLEVBQUUsRUFBRSxTQUFPLEdBQUcsT0FBSyxVQUFRLEVBQUUsRUFBRSxTQUFPLEdBQUcsT0FBSyxPQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUksS0FBSSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUUsdUJBQUksSUFBRSxLQUFHLElBQUUsR0FBRSxFQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUUsc0JBQUUsTUFBSSxJQUFFLE1BQUksS0FBSSxJQUFFO0FBQUU7QUFBRyx5QkFBSSxLQUFHLE9BQUcsSUFBRSxFQUFFLFFBQVEsR0FBRSxJQUFFLENBQUMsR0FBRSxNQUFJLE1BQUksR0FBRyxTQUFRLENBQUMsR0FBRSxLQUFHLEdBQUUsRUFBRSxXQUFXLEtBQUcsQ0FBQyxNQUFJO0FBQUcsNEJBQUksR0FBRSxLQUFHLENBQUM7QUFBQSx5QkFBUztBQUFJLG9CQUFFLEtBQUssQ0FBQyxVQUFTLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUUsb0JBQUUsWUFBVSxJQUFFLEdBQUUsRUFBRSxLQUFLLENBQUMsR0FBRSxFQUFFLGNBQVksSUFBRSxJQUFFLEVBQUUsU0FBTyxJQUFFLElBQUUsRUFBRSxZQUFVLEdBQUUsRUFBRSxLQUFLLENBQUMsVUFBUyxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFFLHNCQUFFLEdBQUUsSUFBRSxFQUFFLFdBQVcsSUFBRSxDQUFDLEdBQUUsTUFBSSxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksTUFBSSxLQUFHLElBQUcsRUFBRSxLQUFLLENBQUMsUUFBTyxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUEscUJBQU87QUFBRSxzQkFBRSxJQUFFLEdBQUUsS0FBRyxFQUFFLE1BQU0sSUFBRSxHQUFFLElBQUUsQ0FBQztBQUFFLHNCQUFJLEtBQUcsRUFBRSxNQUFNLElBQUUsR0FBRSxDQUFDO0FBQUUsc0JBQUcsTUFBSSxLQUFHLEdBQUcsV0FBVyxDQUFDLE1BQUksR0FBRTtBQUFDLHlCQUFJLEVBQUUsS0FBSyxDQUFDLFFBQU8sRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsSUFBRTtBQUFFO0FBQUEsa0JBQUs7QUFBQyxvQkFBRSxLQUFLLENBQUMsWUFBVyxFQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsR0FBRSxJQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxJQUFFO0FBQUU7QUFBQTtBQUFjLHNCQUFHLE1BQUksTUFBSSxFQUFFLFdBQVcsSUFBRSxDQUFDLE1BQUksS0FBRyxFQUFFLFNBQU8sQ0FBQyxLQUFHLEVBQUUsV0FBVyxJQUFFLENBQUMsTUFBSSxJQUFHO0FBQUMsd0JBQUcsRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJO0FBQUUsMEJBQUUsRUFBRSxRQUFRLE1BQUssSUFBRSxDQUFDLElBQUUsR0FBRSxNQUFJLEtBQUcsR0FBRyxXQUFVLElBQUk7QUFBQSx5QkFBTTtBQUFDLDBCQUFJLEtBQUcsRUFBRSxRQUFRO0FBQUEsR0FDbHVFLElBQUUsQ0FBQztBQUFFLDBCQUFFLE9BQUssS0FBRyxLQUFHLElBQUU7QUFBQSxvQkFBQztBQUFDLHlCQUFHLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxNQUFNO0FBQUEsQ0FDcEQsR0FBRSxLQUFHLEVBQUUsU0FBTyxHQUFFLEtBQUcsS0FBRyxLQUFHLElBQUUsSUFBRyxLQUFHLElBQUUsRUFBRSxJQUFJLFdBQVMsS0FBRyxHQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUssQ0FBQyxXQUFVLElBQUcsR0FBRSxJQUFFLEdBQUUsSUFBRyxJQUFFLElBQUcsQ0FBQyxDQUFDLEdBQUUsSUFBRSxJQUFHLElBQUUsSUFBRyxJQUFFO0FBQUEsa0JBQUMsV0FBUyxNQUFJLEtBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUUsR0FBRSxJQUFFLENBQUMsQ0FBQztBQUFFLHdCQUFFLElBQUUsR0FBRSxFQUFFLEtBQUssQ0FBQyxLQUFJLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFLElBQUU7QUFBQSw0QkFBVyxNQUFJLEtBQUcsTUFBSSxNQUFJLEVBQUUsV0FBVyxJQUFFLENBQUMsTUFBSSxHQUFFO0FBQUMsd0JBQUUsSUFBRTtBQUFFO0FBQUcsMkJBQUcsR0FBRSxJQUFFLEVBQUUsV0FBVyxDQUFDO0FBQUEsMkJBQVEsSUFBRSxLQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsQ0FBQztBQUFHLHNCQUFFLEtBQUssQ0FBQyxnQkFBZSxFQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsR0FBRSxJQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxJQUFFO0FBQUEsa0JBQUMsV0FBUyxNQUFJO0FBQUUsd0JBQUUsSUFBRSxHQUFFLEVBQUUsS0FBSyxDQUFDLFlBQVcsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsSUFBRTtBQUFBLHVCQUFNO0FBQUMsd0JBQUksS0FBRztBQUFFLHdCQUFHLEtBQUcsS0FBRyxLQUFHLE1BQUksS0FBRyxJQUFHLEdBQUcsWUFBVSxJQUFFLEdBQUUsR0FBRyxLQUFLLENBQUMsR0FBRSxHQUFHLGNBQVksSUFBRSxJQUFFLEVBQUUsU0FBTyxJQUFFLElBQUUsR0FBRyxZQUFVLEdBQUUsT0FBSyxLQUFHLE1BQUksR0FBRTtBQUFDLDBCQUFJLEtBQUcsRUFBRSxXQUFXLENBQUMsR0FBRSxLQUFHLEVBQUUsV0FBVyxJQUFFLENBQUMsR0FBRSxLQUFHLEVBQUUsV0FBVyxJQUFFLENBQUM7QUFBRSx1QkFBQyxPQUFLLEtBQUcsT0FBSyxPQUFLLE9BQUssS0FBRyxPQUFLLE1BQUksTUFBSSxLQUFHLE1BQUksTUFBSSxFQUFFLFlBQVUsSUFBRSxHQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUUsRUFBRSxjQUFZLElBQUUsSUFBRSxFQUFFLFNBQU8sSUFBRSxJQUFFLEVBQUUsWUFBVTtBQUFBLG9CQUFFO0FBQUMsc0JBQUUsS0FBSyxDQUFDLFFBQU8sRUFBRSxNQUFNLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRSxJQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRTtBQUFBLGtCQUFDO0FBQUM7QUFBQTtBQUFNO0FBQUEsWUFBRztBQUFDLG1CQUFPO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsZ0NBQWdDLEdBQUUsR0FBRTtBQUFDLFlBQUUsR0FBRSxFQUFFLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxnQkFBRyxJQUFFLE9BQU8sS0FBRyxXQUFTLElBQUUsSUFBRSxHQUFFLENBQUM7QUFBRSxxQkFBTyxNQUFNLFFBQVEsQ0FBQyxJQUFFLEVBQUUsSUFBSSxTQUFTLEdBQUU7QUFBQyx1QkFBTztBQUFBLGNBQUMsQ0FBQyxJQUFFO0FBQUUsbUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBRSxxQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsT0FBTyxTQUFTLEdBQUUsR0FBRTtBQUFDLHVCQUFPLE1BQU0sUUFBUSxDQUFDLEtBQUcsSUFBRSxJQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsSUFBRSxDQUFDLENBQUMsSUFBRSxFQUFFLE9BQU8sQ0FBQztBQUFBLGNBQUMsR0FBRSxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsbUNBQW1DLEdBQUUsR0FBRTtBQUFDLFlBQUUsR0FBRSxFQUFFLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLElBQUcsSUFBRSxDQUFDLElBQUcsSUFBRSxFQUFFLFFBQVEsR0FBRSxJQUFFLENBQUMsT0FBSztBQUFJLGdCQUFFLEtBQUssQ0FBQztBQUFFLG1CQUFPO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsNEJBQTRCLEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMscUJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRSxJQUFFLEdBQUUsRUFBRTtBQUFFLGtCQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsSUFBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUMsb0JBQUcsTUFBSSxHQUFFO0FBQUM7QUFBSTtBQUFBLGdCQUFRO0FBQUMsa0JBQUUsT0FBSztBQUFBLGNBQUM7QUFBQyxtQkFBTyxFQUFFLFNBQU8sR0FBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsR0FBRSxFQUFFLEdBQUUsSUFBRTtBQUFFLGtCQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsSUFBRyxNQUFJLEdBQUU7QUFBQyxvQkFBRyxNQUFJLEdBQUU7QUFBQztBQUFJO0FBQUEsZ0JBQVE7QUFBQyxrQkFBRSxPQUFLO0FBQUEsY0FBQztBQUFDLG1CQUFPLEVBQUUsU0FBTyxHQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLFdBQVMsSUFBRSxJQUFFLEtBQUcsS0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLE1BQUksS0FBRyxFQUFFLEtBQUssR0FBRSxFQUFFLENBQUM7QUFBQSxVQUFFO0FBQUMsWUFBRSxVQUFRO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQywrREFBK0QsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsY0FBSSxJQUFFLGNBQWMsTUFBSztBQUFBLFlBQUMsWUFBWSxHQUFFO0FBQUMsb0JBQU0sQ0FBQyxHQUFFLEtBQUssT0FBSyxLQUFLLFlBQVksTUFBSyxLQUFLLFVBQVEsS0FBRyxtQ0FBa0MsT0FBTyxNQUFNLHFCQUFtQixhQUFXLE1BQU0sa0JBQWtCLE1BQUssS0FBSyxXQUFXLElBQUUsS0FBSyxRQUFNLElBQUksTUFBTSxDQUFDLEVBQUU7QUFBQSxZQUFLO0FBQUEsVUFBQztBQUFFLFlBQUUsVUFBUTtBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsbURBQW1ELEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxLQUFLLENBQUMsR0FBRSxNQUFJLElBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVEsTUFBSztBQUFBLFlBQUMsWUFBWSxHQUFFLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUMsT0FBTSxNQUFFO0FBQUUsbUJBQUssUUFBTSxDQUFDLEdBQUUsS0FBSyxRQUFNLEdBQUUsS0FBSyxVQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUUsR0FBRSxDQUFDLEdBQUUsS0FBSyxXQUFTLEdBQUUsS0FBSyxhQUFXLEdBQUUsS0FBSyxPQUFLLElBQUk7QUFBRSxrQkFBSSxJQUFFLElBQUk7QUFBRSxtQkFBSyxLQUFLLE9BQU8sQ0FBQyxHQUFFLEtBQUssVUFBUSxHQUFFLEtBQUssU0FBTyxFQUFFLEdBQUUsS0FBSyxPQUFPO0FBQUEsWUFBQztBQUFBLFlBQUMsUUFBTztBQUFDLHFCQUFPLEtBQUssS0FBSztBQUFBLFlBQUM7QUFBQSxZQUFDLFFBQU87QUFBQyxrQkFBSSxJQUFFLEtBQUs7QUFBVSxtQkFBSyxRQUFRLElBQUksRUFBRSxFQUFDLE9BQU0sRUFBRSxJQUFHLFFBQU8sRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFFLElBQUcsUUFB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QUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFFLFFBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQyxvQkFBSSxJQUFFLEVBQUUsSUFBRSxNQUFJLEVBQUUsUUFBTyxJQUFFLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRTtBQUFFLG9CQUFHLENBQUMsRUFBRSxRQUFRLENBQUM7QUFBRSxzQkFBRSxJQUFJLEVBQUUsRUFBQyxPQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUUsUUFBTyxFQUFDLE9BQU0sRUFBQyxNQUFLLEtBQUssVUFBVSxJQUFHLFFBQU8sS0FBSyxVQUFVLEtBQUcsRUFBQyxHQUFFLEtBQUksRUFBQyxNQUFLLEtBQUssVUFBVSxJQUFHLFFBQU8sS0FBSyxVQUFVLE1BQUksSUFBRSxHQUFFLEVBQUMsR0FBRSxhQUFZLEtBQUssVUFBVSxLQUFHLEVBQUUsR0FBRSxDQUFDO0FBQUEseUJBQVUsRUFBRSxLQUFLLEtBQUssVUFBVSxFQUFFLEdBQUU7QUFBQyxzQkFBSSxJQUFFLEVBQUUsUUFBUSxHQUFFLEVBQUU7QUFBRSxzQkFBRSxJQUFJLEVBQUUsRUFBQyxPQUFNLEVBQUUsUUFBUSxHQUFFLEVBQUUsR0FBRSxRQUFPLEVBQUMsT0FBTSxFQUFDLE1BQUssS0FBSyxVQUFVLElBQUcsUUFBTyxLQUFLLFVBQVUsS0FBRyxFQUFDLEdBQUUsS0FBSSxFQUFDLE1BQUssS0FBSyxVQUFVLElBQUcsUUFBTyxLQUFLLFVBQVUsTUFBSSxJQUFFLEdBQUUsRUFBQyxHQUFFLGFBQVksS0FBSyxVQUFVLEtBQUcsRUFBRSxJQUFHLE1BQUssRUFBQyxDQUFDO0FBQUEsZ0JBQUM7QUFBTSxzQkFBRSxLQUFJLEtBQUcsRUFBRSxPQUFLLE1BQUksSUFBRSxHQUFHLEVBQUMsT0FBTSxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsTUFBSyxLQUFLLFVBQVUsSUFBRyxRQUFPLEtBQUssVUFBVSxLQUFHLEVBQUMsR0FBRSxLQUFJLEVBQUMsTUFBSyxLQUFLLFVBQVUsSUFBRyxRQUFPLEtBQUssVUFBVSxNQUFJLElBQUUsR0FBRSxFQUFDLEdBQUUsYUFBWSxLQUFLLFVBQVUsS0FBRyxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBTyxVQUFRLEVBQUUsUUFBTSxTQUFTLEtBQUssQ0FBQyxHQUFFLEVBQUUsVUFBUSx3REFBd0QsS0FBSyxDQUFDLEtBQUcsS0FBSyxNQUFNLEtBQUssS0FBSyxPQUFPO0FBQUUscUJBQUssUUFBUSxDQUFDO0FBQUEsY0FBQyxDQUFDLEdBQUUsS0FBSztBQUFBLFlBQVU7QUFBQSxZQUFDLFNBQVE7QUFBQyxrQkFBSSxJQUFFLEtBQUssV0FBVSxJQUFFLEtBQUssVUFBVSxJQUFHLElBQUUsWUFBVyxJQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUUsSUFBRSxJQUFHO0FBQUUsb0JBQUksSUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUcsSUFBRSxFQUFFLE1BQU0sR0FBRSxFQUFFLFNBQU8sQ0FBQyxJQUFHLElBQUUsSUFBSSxFQUFFLEVBQUMsT0FBTSxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFFLElBQUcsUUFBTyxFQUFFLEdBQUUsR0FBRSxLQUFJLEVBQUMsTUFBSyxFQUFFLElBQUcsUUFBTyxFQUFFLEdBQUUsRUFBQyxHQUFFLGFBQVksRUFBRSxJQUFHLFFBQU8sRUFBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLFFBQU0sR0FBRSxLQUFLLFFBQVEsQ0FBQyxHQUFFLEtBQUs7QUFBQSxZQUFVO0FBQUEsWUFBQyxPQUFNO0FBQUMscUJBQU8sS0FBSyxVQUFVO0FBQUEsWUFBQztBQUFBLFlBQUMsUUFBUSxHQUFFO0FBQUMscUJBQU8sS0FBSyxXQUFTLEVBQUUsS0FBSyxVQUFRLEtBQUssUUFBTyxLQUFLLFNBQU8sS0FBSSxLQUFLLFFBQVEsT0FBTyxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsSUFBSSxZQUFXO0FBQUMscUJBQU8sS0FBSyxPQUFPLEtBQUs7QUFBQSxZQUFTO0FBQUEsWUFBQyxJQUFJLFlBQVc7QUFBQyxxQkFBTyxLQUFLLE9BQU8sS0FBSyxXQUFTO0FBQUEsWUFBRTtBQUFBLFlBQUMsSUFBSSxZQUFXO0FBQUMscUJBQU8sS0FBSyxPQUFPLEtBQUssV0FBUztBQUFBLFlBQUU7QUFBQSxVQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyxrREFBa0QsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBRSxZQUFFLFNBQU8sU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLENBQUM7QUFBQSxVQUFDLEdBQUUsRUFBRSxRQUFNLFNBQVMsR0FBRTtBQUFDLG1CQUFPLElBQUksRUFBRSxPQUFPLE9BQU8sRUFBQyxPQUFNLElBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxVQUFDLEdBQUUsRUFBRSxRQUFNLFNBQVMsR0FBRTtBQUFDLG1CQUFPLElBQUksRUFBRSxPQUFPLE9BQU8sRUFBQyxPQUFNLElBQUcsR0FBRSxDQUFDLENBQUM7QUFBQSxVQUFDLEdBQUUsRUFBRSxVQUFRLFNBQVMsR0FBRTtBQUFDLG1CQUFPLElBQUksRUFBRSxDQUFDO0FBQUEsVUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTLEdBQUU7QUFBQyxtQkFBTyxJQUFJLEVBQUUsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFNBQU8sU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLENBQUM7QUFBQSxVQUFDLEdBQUUsRUFBRSxXQUFTLFNBQVMsR0FBRTtBQUFDLG1CQUFPLElBQUksRUFBRSxDQUFDO0FBQUEsVUFB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LElBQUUsRUFBRSxTQUFPO0FBQUE7QUFBTyxzQkFBTSxFQUFFLE1BQU0sY0FBWSxHQUFFLEdBQUUsSUFBRSxHQUFFLENBQUM7QUFBQSxZQUFDLEdBQUUsSUFBRSxLQUFHO0FBQUMsc0JBQU8sSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLE1BQUksTUFBSSxJQUFFLEdBQUUsS0FBRyxJQUFHO0FBQUEscUJBQVE7QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUEscUJBQU87QUFBQSxxQkFBTztBQUFFLHNCQUFFO0FBQUU7QUFBRyx5QkFBRyxHQUFFLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxNQUFJLE1BQUksSUFBRSxHQUFFLEtBQUc7QUFBQSx5QkFBUyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSTtBQUFHLG9CQUFFLEtBQUssQ0FBQyxTQUFRLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFLElBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQU87QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUUsc0JBQUU7QUFBRTtBQUFHLHlCQUFHLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQztBQUFBLHlCQUFRLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUk7QUFBRyxvQkFBRSxLQUFLLENBQUMsY0FBYSxFQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxJQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFFLG9CQUFFLEtBQUssQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUUsc0JBQUUsTUFBSSxJQUFFLE1BQUksS0FBSSxJQUFFO0FBQUU7QUFBRyx5QkFBSSxJQUFFLE9BQUcsSUFBRSxFQUFFLFFBQVEsR0FBRSxJQUFFLENBQUMsR0FBRSxNQUFJLE1BQUksRUFBRSxTQUFRLENBQUMsR0FBRSxJQUFFLEdBQUUsRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJO0FBQUcsMkJBQUcsR0FBRSxJQUFFLENBQUM7QUFBQSx5QkFBUTtBQUFHLG9CQUFFLEtBQUssQ0FBQyxVQUFTLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUUsb0JBQUUsWUFBVSxJQUFFLEdBQUUsRUFBRSxLQUFLLENBQUMsR0FBRSxFQUFFLGNBQVksSUFBRSxJQUFFLEVBQUUsU0FBTyxJQUFFLElBQUUsRUFBRSxZQUFVLEdBQUUsRUFBRSxLQUFLLENBQUMsV0FBVSxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFFLHVCQUFJLElBQUUsR0FBRSxJQUFFLE1BQUcsRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJO0FBQUcseUJBQUcsR0FBRSxJQUFFLENBQUM7QUFBRSxzQkFBRSxFQUFFLFdBQVcsSUFBRSxDQUFDLEdBQUUsS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksTUFBSSxLQUFHLElBQUcsRUFBRSxLQUFLLENBQUMsUUFBTyxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUU7QUFBQTtBQUFjLHdCQUFJLEtBQUcsRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLEtBQUcsSUFBRSxFQUFFLFFBQVEsTUFBSyxJQUFFLENBQUMsSUFBRSxHQUFFLE1BQUksS0FBRyxFQUFFLFdBQVUsSUFBSSxHQUFFLElBQUUsRUFBRSxNQUFNLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLE1BQU07QUFBQSxDQUN0dzlCLEdBQUUsSUFBRSxFQUFFLFNBQU8sR0FBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUUsSUFBRSxJQUFFLEVBQUUsR0FBRyxXQUFTLElBQUUsR0FBRSxJQUFFLElBQUcsRUFBRSxLQUFLLENBQUMsV0FBVSxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxNQUFJLEVBQUUsWUFBVSxJQUFFLEdBQUUsRUFBRSxLQUFLLENBQUMsR0FBRSxFQUFFLGNBQVksSUFBRSxJQUFFLEVBQUUsU0FBTyxJQUFFLElBQUUsRUFBRSxZQUFVLEdBQUUsRUFBRSxLQUFLLENBQUMsUUFBTyxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxJQUFFO0FBQUc7QUFBQTtBQUFNO0FBQUEsWUFBRztBQUFDLG1CQUFPO0FBQUEsVUFBQztBQUFDLFlBQUUsVUFBUSxFQUFFO0FBQUEsUUFBTyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyxzREFBc0QsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsRUFBRSxhQUFXO0FBQUcsY0FBSSxJQUFFLFdBQVU7QUFBQyxxQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLHVCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUUsYUFBVyxFQUFFLGNBQVksT0FBRyxFQUFFLGVBQWEsTUFBRyxXQUFVLE1BQUksRUFBRSxXQUFTLE9BQUksT0FBTyxlQUFlLEdBQUUsRUFBRSxLQUFJLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLG1CQUFPLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBTyxLQUFHLEVBQUUsRUFBRSxXQUFVLENBQUMsR0FBRSxLQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUEsVUFBQyxFQUFFLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUcsS0FBRyxFQUFFO0FBQVcscUJBQU87QUFBRSxnQkFBSSxJQUFFLENBQUM7QUFBRSxnQkFBRyxLQUFHO0FBQUssdUJBQVEsS0FBSztBQUFFLHVCQUFPLFVBQVUsZUFBZSxLQUFLLEdBQUUsQ0FBQyxNQUFJLEVBQUUsS0FBRyxFQUFFO0FBQUksbUJBQU8sRUFBRSxVQUFRLEdBQUU7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sS0FBRyxFQUFFLGFBQVcsSUFBRSxFQUFDLFNBQVEsRUFBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUUsYUFBYTtBQUFHLG9CQUFNLElBQUksVUFBVSxtQ0FBbUM7QUFBQSxVQUFDO0FBQUMsY0FBSSxJQUFFLFdBQVU7QUFBQyxxQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBRSxNQUFLLENBQUMsR0FBRSxLQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sRUFBRSxRQUFRLGFBQVcsT0FBRyxLQUFLLFdBQVMsR0FBRSxLQUFLLE9BQUssSUFBSSxFQUFFO0FBQVEsa0JBQUksSUFBRSxJQUFJLEVBQUU7QUFBUSxxQkFBTyxLQUFLLEtBQUssT0FBTyxDQUFDLEdBQUUsS0FBSyxVQUFRLEdBQUUsS0FBSyxRQUFNLEtBQUssVUFBUSxHQUFFLEVBQUUsU0FBUyxFQUFDLE1BQUssRUFBRSxNQUFLLEtBQUksRUFBRSxJQUFJLEtBQUssRUFBQyxDQUFDLElBQUUsS0FBSyxVQUFRLEdBQUUsRUFBRSxTQUFTLENBQUMsR0FBRSxLQUFLLEtBQUs7QUFBQSxZQUFDO0FBQUMsbUJBQU8sRUFBRSxVQUFVLFlBQVUsV0FBVTtBQUFDLGtCQUFJLElBQUUsSUFBRyxJQUFFLFFBQU8sSUFBRSxLQUFLO0FBQVUsbUJBQUksS0FBSyxZQUFXLEtBQUssV0FBUyxLQUFLLE9BQU8sVUFBUSxLQUFLLFVBQVUsT0FBSztBQUFLLHFCQUFHLEtBQUssT0FBTyxLQUFLLFVBQVUsSUFBRyxLQUFLO0FBQVcsbUJBQUssYUFBVyxLQUFLLE9BQU8sVUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsS0FBRyxLQUFLLE1BQU0sb0NBQW9DO0FBQUUsa0JBQUksSUFBRSxFQUFFLE1BQU0sdUJBQXVCLEdBQUUsSUFBRSxFQUFFLEdBQUcsTUFBTSxPQUFPLEdBQUUsSUFBRSxFQUFDLFVBQVMsRUFBRSxJQUFHLE9BQU0sRUFBRSxJQUFHLFFBQU8sRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFFLElBQUcsUUFBTyxFQUFFLEdBQUUsR0FBRSxLQUFJLEVBQUMsTUFBSyxLQUFLLFVBQVUsSUFBRyxRQUFPLEtBQUssVUFBVSxHQUFFLEVBQUMsR0FBRSxhQUFZLEVBQUUsR0FBRTtBQUFFLGtCQUFHLEVBQUUsU0FBTyxLQUFHLEVBQUUsT0FBSyxPQUFLLEVBQUUsS0FBRyxPQUFJLEVBQUUsWUFBVSxLQUFLLFdBQVcsRUFBRSxFQUFFLEdBQUUsRUFBRSxZQUFVLEtBQUssZUFBZSxFQUFFLEVBQUUsS0FBRyxFQUFFLFlBQVUsS0FBSyxXQUFXLEVBQUUsRUFBRSxHQUFFLElBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFFLEVBQUUsSUFBRztBQUFDLG9CQUFJLEtBQUcsRUFBRSxHQUFHLE1BQU0sYUFBYSxHQUFFLEtBQUcsR0FBRyxHQUFHLEtBQUs7QUFBRSxrQkFBRSxRQUFNLEtBQUssUUFBTSxLQUFHLEdBQUcsSUFBRyxHQUFHLE9BQUssRUFBRSxjQUFZLE1BQUcsS0FBSyxVQUFRLEVBQUUsS0FBSyxjQUFZLEdBQUcsTUFBSyxFQUFFLFNBQU8sR0FBRyxPQUFLLE9BQUssR0FBRyxPQUFLLEtBQUksRUFBRSxLQUFLLFdBQVMsRUFBRSxTQUFPLEdBQUcsTUFBTSxHQUFFLEVBQUUsSUFBRTtBQUFBLGNBQUU7QUFBQyxtQkFBSyxRQUFRLENBQUMsR0FBRSxLQUFLO0FBQUEsWUFBVSxHQUFFLEVBQUUsVUFBVSxhQUFXLFdBQVU7QUFBQyxrQkFBRyxLQUFLLFVBQVUsT0FBSztBQUFJLHVCQUFPLEtBQUssVUFBVTtBQUFFLHVCQUFRLElBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxPQUFNLElBQUcsUUFBTyxFQUFDLE9BQU0sRUFBQyxNQUFLLEtBQUssVUFBVSxJQUFHLFFBQU8sS0FBSyxVQUFVLEdBQUUsR0FBRSxLQUFJLEVBQUMsTUFBSyxLQUFLLFVBQVUsSUFBRyxRQUFPLEtBQUssVUFBVSxHQUFFLEVBQUMsR0FBRSxhQUFZLEtBQUssVUFBVSxHQUFFLENBQUMsR0FBRSxLQUFLLFdBQVMsS0FBSyxPQUFPLFVBQVEsS0FBSyxjQUFZLEtBQUssVUFBVSxPQUFLLFdBQVMsS0FBSyxVQUFVLE9BQUs7QUFBZSxxQkFBSyxhQUFXLEtBQUssVUFBVSxPQUFLLGdCQUFjLEVBQUUsT0FBTyxTQUFPLEtBQUssV0FBVyxLQUFLLFVBQVUsRUFBRSxHQUFFLEVBQUUsT0FBTyxNQUFNLE9BQUssS0FBSyxVQUFVLElBQUcsRUFBRSxPQUFPLE1BQU0sU0FBTyxLQUFLLFVBQVUsSUFBRyxFQUFFLE9BQU8sSUFBSSxTQUFPLEtBQUssVUFBVSxJQUFHLEVBQUUsT0FBTyxJQUFJLE9BQUssS0FBSyxVQUFVLElBQUcsRUFBRSxjQUFZLEtBQUssVUFBVSxNQUFJLEtBQUssYUFBVyxLQUFLLFVBQVUsT0FBSyxlQUFhLEVBQUUsT0FBTyxRQUFNLEtBQUssV0FBVyxLQUFLLFVBQVUsRUFBRSxJQUFFLEtBQUssVUFBVSxPQUFLLGVBQWEsRUFBRSxRQUFNLEtBQUssVUFBVSxLQUFHLEtBQUssVUFBVSxPQUFLLFlBQVUsRUFBRSxRQUFNLEtBQUssV0FBVyxLQUFLLFVBQVUsSUFBRyxHQUFHLElBQUcsS0FBSztBQUFXLHFCQUFPLEtBQUssUUFBUSxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxRQUFNLFdBQVU7QUFBQyxrQkFBRyxLQUFLLGFBQVcsS0FBSyxPQUFPLFNBQU8sR0FBRTtBQUFDLHFCQUFLLEtBQUssZ0JBQWMsTUFBRyxLQUFLO0FBQVc7QUFBQSxjQUFNO0FBQUMsa0JBQUksSUFBRSxJQUFJLEVBQUU7QUFBUSxtQkFBSyxRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUUsS0FBSyxVQUFRLEdBQUUsS0FBSztBQUFBLFlBQVUsR0FBRSxFQUFFLFVBQVUsVUFBUSxXQUFVO0FBQUMsa0JBQUksSUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLE9BQU0sS0FBSyxVQUFVLElBQUcsUUFBTyxFQUFDLE9BQU0sRUFBQyxNQUFLLEtBQUssVUFBVSxJQUFHLFFBQU8sS0FBSyxVQUFVLEdBQUUsR0FBRSxLQUFJLEVBQUMsTUFBSyxLQUFLLFVBQVUsSUFBRyxRQUFPLEtBQUssVUFBVSxHQUFFLEVBQUMsR0FBRSxhQUFZLEtBQUssVUFBVSxHQUFFLENBQUM7QUFBRSxtQkFBSyxRQUFRLENBQUMsR0FBRSxLQUFLO0FBQUEsWUFBVSxHQUFFLEVBQUUsVUFBVSxRQUFNLFNBQVMsR0FBRTtBQUFDLG9CQUFNLElBQUksS0FBSyxNQUFNLE1BQU0sQ0FBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsbUJBQWlCLFdBQVU7QUFBQyxxQkFBTyxLQUFLLE1BQU0sK0NBQStDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxxQkFBbUIsV0FBVTtBQUFDLHFCQUFPLEtBQUssTUFBTSwrQkFBK0I7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLHVCQUFxQixXQUFVO0FBQUMscUJBQU8sS0FBSyxNQUFNLGtDQUFrQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsWUFBVSxXQUFVO0FBQUMsa0JBQUksSUFBRSxLQUFLLGFBQVcsS0FBSyxVQUFVLE1BQUk7QUFBRyxrQkFBRyxLQUFLLFVBQVUsT0FBSztBQUFPLHVCQUFPLEtBQUssWUFBVyxLQUFLLEtBQUssQ0FBQztBQUFFLGtCQUFHLEtBQUssVUFBVSxPQUFLO0FBQUksdUJBQU8sS0FBSyxZQUFXLEtBQUssVUFBVSxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxVQUFRLFdBQVU7QUFBQyxtQkFBSyxRQUFRLElBQUksRUFBRSxRQUFRLEVBQUMsT0FBTSxLQUFLLFVBQVUsSUFBRyxRQUFPLEVBQUMsT0FBTSxFQUFDLE1BQUssS0FBSyxVQUFVLElBQUcsUUFBTyxLQUFLLFVBQVUsR0FBRSxHQUFFLEtBQUksRUFBQyxNQUFLLEtBQUssVUFBVSxJQUFHLFFBQU8sS0FBSyxVQUFVLEdBQUUsRUFBQyxHQUFFLGFBQVksS0FBSyxVQUFVLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSztBQUFBLFlBQVUsR0FBRSxFQUFFLFVBQVUsY0FBWSxXQUFVO0FBQUMsa0JBQUksSUFBRSxLQUFLLFFBQVE7QUFBSyxrQkFBRyxLQUFHLEVBQUUsU0FBTyxFQUFFLFFBQU87QUFBQyxvQkFBSSxJQUFFLElBQUksRUFBRSxXQUFRLElBQUUsS0FBSztBQUFRLGtCQUFFLE9BQU8sQ0FBQyxHQUFFLEtBQUssVUFBUTtBQUFFLG9CQUFJLElBQUU7QUFBRSxxQkFBSSxLQUFLLFlBQVcsS0FBSyxXQUFTLEtBQUssT0FBTyxVQUFRO0FBQUcsdUJBQUssVUFBVSxPQUFLLE9BQUssS0FBSSxLQUFLLFVBQVUsT0FBSyxPQUFLLEtBQUksSUFBRSxLQUFLLE1BQU0sS0FBRyxFQUFFLE9BQU8sT0FBTyxJQUFJLE9BQUssS0FBSyxVQUFVLElBQUcsRUFBRSxPQUFPLE9BQU8sSUFBSSxTQUFPLEtBQUssVUFBVSxJQUFHLEtBQUs7QUFBWSxxQkFBRyxLQUFLLE1BQU0sK0JBQStCLEdBQUUsS0FBSyxVQUFRO0FBQUEsY0FBQyxPQUFLO0FBQUMsb0JBQUksSUFBRTtBQUFFLHFCQUFJLEtBQUssWUFBVyxFQUFFLFNBQU8sS0FBSSxLQUFLLFdBQVMsS0FBSyxPQUFPLFVBQVE7QUFBRyx1QkFBSyxVQUFVLE9BQUssT0FBSyxLQUFJLEtBQUssVUFBVSxPQUFLLE9BQUssS0FBSSxFQUFFLFNBQU8sS0FBSyxzQkFBc0IsS0FBSyxTQUFTLEdBQUUsS0FBSztBQUFXLHFCQUFHLEtBQUssTUFBTSwrQkFBK0I7QUFBQSxjQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxTQUFPLFdBQVU7QUFBQyx1QkFBUSxJQUFFLE1BQUssSUFBRSxJQUFHLElBQUUsS0FBSyxXQUFVLEtBQUssYUFBVyxLQUFLLFVBQVUsT0FBSztBQUFLLHFCQUFHLEtBQUssVUFBVSxJQUFHLEtBQUs7QUFBVyxrQkFBRyxDQUFDLEtBQUs7QUFBVSx1QkFBTyxLQUFLLE1BQU0seUNBQXlDO0FBQUUsa0JBQUcsS0FBSyxVQUFVLE9BQUssUUFBTztBQUFDLG9CQUFJLElBQUU7QUFBTyxxQkFBSyxVQUFVLE9BQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyx1QkFBRyxHQUFFLElBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxPQUFNLEdBQUUsUUFBTyxFQUFDLE9BQU0sRUFBQyxNQUFLLEVBQUUsSUFBRyxRQUFPLEVBQUUsR0FBRSxHQUFFLEtBQUksRUFBQyxNQUFLLEVBQUUsVUFBVSxJQUFHLFFBQU8sRUFBRSxVQUFVLEdBQUUsRUFBQyxHQUFFLGFBQVksRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLFFBQVEsQ0FBQyxHQUFFLElBQUUsS0FBRyxFQUFFLGFBQVcsRUFBRSxVQUFVLE9BQUssT0FBSyxFQUFFLE1BQU0sd0JBQXdCO0FBQUEsZ0JBQUMsQ0FBQztBQUFBLGNBQUM7QUFBTSxxQkFBSyxNQUFNLGlCQUFlLEtBQUssVUFBVSxLQUFHLFVBQVU7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLFFBQU0sV0FBVTtBQUFDLGtCQUFJLElBQUUsS0FBSztBQUFVLG1CQUFLLGFBQVcsS0FBRyxLQUFLLFVBQVUsT0FBSyxPQUFLLEtBQUssVUFBVSxPQUFLLE9BQUssS0FBSyxTQUFPLEtBQUssV0FBVyxFQUFFLEVBQUUsR0FBRSxLQUFLLGNBQVksS0FBSyxhQUFXLEtBQUssT0FBTyxTQUFPLEtBQUcsS0FBSyxVQUFVLE9BQUssT0FBSyxLQUFLLFVBQVUsT0FBSyxPQUFLLEtBQUssUUFBUSxLQUFLLE9BQU8sUUFBTSxLQUFLLFdBQVcsRUFBRSxFQUFFLEdBQUUsS0FBSyxjQUFZLEtBQUssV0FBVztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsU0FBTyxXQUFVO0FBQUMsa0JBQUksSUFBRSxLQUFLO0FBQVUsbUJBQUssUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFDLE9BQU0sS0FBSyxVQUFVLElBQUcsUUFBTyxFQUFDLE9BQU0sRUFBQyxNQUFLLEVBQUUsSUFBRyxRQUFPLEVBQUUsR0FBRSxHQUFFLEtBQUksRUFBQyxNQUFLLEVBQUUsSUFBRyxRQUFPLEVBQUUsR0FBRSxFQUFDLEdBQUUsYUFBWSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSztBQUFBLFlBQVUsR0FBRSxFQUFFLFVBQVUsWUFBVSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEtBQUs7QUFBVSxrQkFBRyxLQUFHLEVBQUUsT0FBSztBQUFJLHVCQUFPLEtBQUssWUFBVyxLQUFLLFVBQVU7QUFBRSxtQkFBSyxRQUFRLElBQUksRUFBRSxRQUFRLEVBQUMsT0FBTSxLQUFLLFVBQVUsSUFBRyxRQUFPLEVBQUMsT0FBTSxFQUFDLE1BQUssS0FBSyxVQUFVLElBQUcsUUFBTyxLQUFLLFVBQVUsR0FBRSxHQUFFLEtBQUksRUFBQyxNQUFLLEtBQUssVUFBVSxJQUFHLFFBQU8sS0FBSyxVQUFVLEdBQUUsRUFBQyxHQUFFLGFBQVksS0FBSyxVQUFVLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxLQUFLO0FBQUEsWUFBVSxHQUFFLEVBQUUsVUFBVSxZQUFVLFNBQVMsR0FBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxNQUFLLElBQUUsS0FBSyxXQUFVLElBQUUsS0FBSyxVQUFVLElBQUcsS0FBRyxFQUFFLE9BQUssVUFBUTtBQUFDLHFCQUFLO0FBQVcsb0JBQUksSUFBRSxLQUFLLFVBQVU7QUFBRyxvQkFBRyxLQUFHLEdBQUUsRUFBRSxZQUFZLElBQUksTUFBSSxFQUFFLFNBQU8sR0FBRTtBQUFDLHNCQUFJLEtBQUcsS0FBSztBQUFVLHdCQUFJLEdBQUcsT0FBSyxZQUFVLEtBQUcsS0FBSyxXQUFXLEdBQUcsSUFBRyxHQUFHLEdBQUUsS0FBSztBQUFBLGdCQUFXO0FBQUMsb0JBQUUsS0FBSztBQUFBLGNBQVM7QUFBQyxrQkFBSSxNQUFJLEdBQUUsRUFBRSxTQUFTLEdBQUUsR0FBRyxHQUFFLE1BQUksR0FBRSxFQUFFLFNBQVMsR0FBRSxHQUFHLEdBQUUsTUFBSSxHQUFFLEVBQUUsU0FBUyxHQUFFLElBQUk7QUFBRSxpQkFBRyxXQUFTLEtBQUcsR0FBRyxPQUFPLFNBQVMsSUFBRztBQUFDLHVCQUFNLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRTtBQUFBLGNBQUMsQ0FBQztBQUFHLGtCQUFJLE1BQUksR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRSxJQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBRSxpQkFBRyxRQUFRLFNBQVMsSUFBRyxJQUFHO0FBQUMsb0JBQUksS0FBRyxHQUFHLEtBQUcsTUFBSSxFQUFFLFFBQU8sS0FBRyxFQUFFLE1BQU0sSUFBRyxFQUFFO0FBQUUsb0JBQUcsT0FBSyxLQUFHO0FBQUUseUJBQU8sRUFBRSxLQUFLLEdBQUUsSUFBRyxHQUFHLE1BQU07QUFBRSxvQkFBSSxLQUFHO0FBQU8saUJBQUMsR0FBRyxRQUFRLEVBQUUsSUFBRSxLQUFHLElBQUksRUFBRSxRQUFRLEVBQUMsT0FBTSxHQUFHLE1BQU0sQ0FBQyxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFFLFVBQVUsSUFBRyxRQUFPLEVBQUUsVUFBVSxLQUFHLEdBQUUsR0FBRSxLQUFJLEVBQUMsTUFBSyxFQUFFLFVBQVUsSUFBRyxRQUFPLEVBQUUsVUFBVSxNQUFJLEtBQUcsR0FBRSxFQUFDLEdBQUUsYUFBWSxFQUFFLFVBQVUsS0FBRyxHQUFHLElBQUcsQ0FBQyxJQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsSUFBRSxLQUFHLElBQUksRUFBRSxRQUFRLEVBQUMsT0FBTSxHQUFHLE1BQU0sQ0FBQyxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFFLFVBQVUsSUFBRyxRQUFPLEVBQUUsVUFBVSxLQUFHLEdBQUUsR0FBRSxLQUFJLEVBQUMsTUFBSyxFQUFFLFVBQVUsSUFBRyxRQUFPLEVBQUUsVUFBVSxNQUFJLEtBQUcsR0FBRSxFQUFDLEdBQUUsYUFBWSxFQUFFLFVBQVUsS0FBRyxHQUFHLElBQUcsQ0FBQyxJQUFFLEtBQUcsSUFBSSxFQUFFLFFBQVEsRUFBQyxPQUFNLElBQUcsUUFBTyxFQUFDLE9BQU0sRUFBQyxNQUFLLEVBQUUsVUFBVSxJQUFHLFFBQU8sRUFBRSxVQUFVLEtBQUcsR0FBRSxHQUFFLEtBQUksRUFBQyxNQUFLLEVBQUUsVUFBVSxJQUFHLFFBQU8sRUFBRSxVQUFVLE1BQUksS0FBRyxHQUFFLEVBQUMsR0FBRSxhQUFZLEVBQUUsVUFBVSxLQUFHLEdBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxRQUFRLElBQUcsQ0FBQztBQUFBLGNBQUMsQ0FBQyxHQUFFLEtBQUs7QUFBQSxZQUFVLEdBQUUsRUFBRSxVQUFVLE9BQUssU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLO0FBQVUscUJBQU8sS0FBRyxFQUFFLE9BQUssT0FBSyxLQUFLLFlBQVcsS0FBSyxVQUFVLEtBQUcsS0FBSyxVQUFVLENBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLE9BQUssV0FBVTtBQUFDLHFCQUFLLEtBQUssV0FBUyxLQUFLLE9BQU87QUFBUSxxQkFBSyxNQUFNLElBQUU7QUFBRSxxQkFBTyxLQUFLO0FBQUEsWUFBSSxHQUFFLEVBQUUsVUFBVSxRQUFNLFNBQVMsR0FBRTtBQUFDLHNCQUFPLEtBQUssVUFB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QUFHLEVBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxZQUFDO0FBQUEsVUFBQyxFQUFFLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUM7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxtQkFBTyxLQUFHLEVBQUUsYUFBVyxJQUFFLEVBQUMsU0FBUSxFQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBRSxhQUFhO0FBQUcsb0JBQU0sSUFBSSxVQUFVLG1DQUFtQztBQUFBLFVBQUM7QUFBQyxjQUFJLElBQUUsV0FBVTtBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsTUFBSyxDQUFDLEdBQUUsS0FBSyxPQUFLLEtBQUcsV0FBVTtBQUFBLGNBQUMsR0FBRTtBQUFBLFlBQUk7QUFBQyxtQkFBTyxFQUFFLFVBQVUsVUFBUSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRyxDQUFDLEdBQUUsSUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLEtBQUksR0FBRSxPQUFNLFNBQVMsR0FBRTtBQUFDLHNCQUFNLElBQUksTUFBTSxDQUFDO0FBQUEsY0FBQyxHQUFFLFNBQVEsRUFBQyxDQUFDO0FBQUUscUJBQU8sS0FBSyxNQUFJLEdBQUUsS0FBSyxLQUFLLENBQUMsR0FBRTtBQUFBLFlBQUksR0FBRSxFQUFFLEdBQUUsQ0FBQyxFQUFDLEtBQUksVUFBUyxLQUFJLFdBQVU7QUFBQyxxQkFBTyxPQUFPLEtBQUssR0FBRztBQUFBLFlBQUMsRUFBQyxDQUFDLENBQUMsR0FBRTtBQUFBLFVBQUMsRUFBRTtBQUFFLFlBQUUsVUFBUSxHQUFFLEVBQUUsVUFBUSxFQUFFO0FBQUEsUUFBTyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyxxREFBcUQsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsRUFBRSxhQUFXO0FBQUcsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUcsS0FBRyxFQUFFO0FBQVcscUJBQU87QUFBRSxnQkFBSSxJQUFFLENBQUM7QUFBRSxnQkFBRyxLQUFHO0FBQUssdUJBQVEsS0FBSztBQUFFLHVCQUFPLFVBQVUsZUFBZSxLQUFLLEdBQUUsQ0FBQyxNQUFJLEVBQUUsS0FBRyxFQUFFO0FBQUksbUJBQU8sRUFBRSxVQUFRLEdBQUU7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sS0FBRyxFQUFFLGFBQVcsSUFBRSxFQUFDLFNBQVEsRUFBQztBQUFBLFVBQUM7QUFBQyxjQUFJLElBQUUsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUM7QUFBRSxZQUFFLFlBQVUsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFlBQVUsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLGFBQVcsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFVBQVEsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFVBQVEsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFNBQU8sU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLE9BQUssU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFdBQVMsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFNBQU8sU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLE1BQUksU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxFQUFFLFlBQVUsU0FBUyxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUMsR0FBRSxPQUFPLEtBQUssQ0FBQyxFQUFFLFFBQVEsU0FBUyxHQUFFO0FBQUMsa0JBQUksaUJBQWUsRUFBRSxLQUFHLEVBQUU7QUFBQSxVQUFHLENBQUMsR0FBRSxFQUFFLFVBQVEsR0FBRSxFQUFFLFVBQVEsRUFBRTtBQUFBLFFBQU8sRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsNkRBQTZELEdBQUU7QUFBQztBQUFhLFlBQUUsR0FBRSxPQUFPLGVBQWUsR0FBRSxjQUFhLEVBQUMsT0FBTSxLQUFFLENBQUM7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxpQkFBSyxRQUFNLEVBQUUsT0FBTSxLQUFLLFNBQU8sRUFBRSxRQUFPLEtBQUssT0FBSyxFQUFFLE1BQUssS0FBSyxRQUFNLEVBQUUsT0FBTSxLQUFLLGNBQVksRUFBRTtBQUFBLFVBQVc7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLGtFQUFrRSxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsT0FBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUUsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEtBQUcsRUFBRSxhQUFXLElBQUUsRUFBQyxTQUFRLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRTtBQUFLLGlCQUFLLFlBQVksQ0FBQyxHQUFFLEtBQUssUUFBTSxFQUFFLE9BQU0sS0FBSyxVQUFRLFdBQVMsS0FBSyxRQUFNLEtBQUssTUFBTSxTQUFPLElBQUUsS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFPLEdBQUcsUUFBTSxLQUFJLEtBQUssV0FBUyxXQUFTLEtBQUssU0FBTyxLQUFLLE1BQU0sU0FBTyxJQUFFLEtBQUssTUFBTSxHQUFHLFNBQU8sS0FBSSxLQUFLLGdCQUFjLFdBQVMsS0FBSyxjQUFZLEtBQUssT0FBTyxTQUFRLEtBQUssTUFBTSxRQUFRLFNBQVMsR0FBRTtBQUFDLGdCQUFFLFNBQU87QUFBQSxZQUFDLENBQUM7QUFBQSxVQUFDO0FBQUMsWUFBRSxZQUFVLE9BQU8sT0FBTyxFQUFFLFFBQVEsU0FBUyxHQUFFLEVBQUUsY0FBWSxFQUFFLFNBQVEsRUFBRSxVQUFVLE9BQUssU0FBUyxHQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLE9BQU8sS0FBRyxZQUFVLGFBQWEsUUFBTyxJQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsT0FBTyxLQUFHLFdBQVMsSUFBSSxPQUFPLENBQUMsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEtBQUssTUFBTSxRQUFPLEtBQUk7QUFBQyxrQkFBSSxJQUFFLEtBQUssTUFBTSxJQUFHLElBQUUsSUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUU7QUFBRyxrQkFBRyxLQUFHLEtBQUcsRUFBRSxHQUFFLEdBQUUsS0FBSyxLQUFLLE1BQUksU0FBSSxFQUFFLFNBQU8sRUFBRSxLQUFLLEdBQUUsQ0FBQyxNQUFJO0FBQUcsdUJBQU07QUFBQSxZQUFFO0FBQUMsbUJBQU07QUFBQSxVQUFFLEdBQUUsRUFBRSxVQUFVLE9BQUssV0FBVTtBQUFDLHFCQUFRLElBQUUsVUFBVSxVQUFRLEtBQUcsVUFBVSxPQUFLLFNBQU8sV0FBVTtBQUFBLFlBQUMsSUFBRSxVQUFVLElBQUcsSUFBRSxHQUFFLElBQUUsS0FBSyxNQUFNLFFBQU8sS0FBSTtBQUFDLGtCQUFJLElBQUUsS0FBSyxNQUFNO0FBQUcsa0JBQUcsRUFBRSxHQUFFLEdBQUUsS0FBSyxLQUFLLE1BQUk7QUFBRyx1QkFBTTtBQUFBLFlBQUU7QUFBQyxtQkFBTTtBQUFBLFVBQUUsR0FBRSxFQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLDBEQUEwRCxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsT0FBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDLEdBQUUsRUFBRSxvQkFBa0IsR0FBRSxFQUFFLGtCQUFnQixHQUFFLEVBQUUsaUJBQWU7QUFBRSxjQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLENBQUM7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxtQkFBTyxLQUFHLEVBQUUsYUFBVyxJQUFFLEVBQUMsU0FBUSxFQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsVUFBVSxVQUFRLEtBQUcsVUFBVSxPQUFLLFNBQU8sSUFBRSxVQUFVLElBQUcsSUFBRSxDQUFDLEVBQUMsTUFBSyxVQUFTLFdBQVUsS0FBSSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLE1BQUssSUFBRSxNQUFLLElBQUUsR0FBRSxJQUFFO0FBQUUsY0FBRSxPQUFLLE9BQUssRUFBRSxFQUFFLFNBQU8sT0FBSyxRQUFNLElBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxTQUFPLENBQUMsR0FBRTtBQUFLLHFCQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsa0JBQUksSUFBRSxFQUFFO0FBQUcsbUJBQUksTUFBSSxPQUFLLE1BQUksU0FBTyxFQUFFLEdBQUcseUJBQXVCLFFBQUksRUFBRSxLQUFLLEVBQUMsTUFBSyxVQUFTLHNCQUFxQixPQUFHLFdBQVUsRUFBQyxDQUFDLEdBQUUsT0FBSyxFQUFFLEdBQUcsU0FBTyxZQUFVLEVBQUUsR0FBRyxjQUFZLEtBQUcsRUFBRSxJQUFFLE9BQUssU0FBTyxFQUFFLElBQUksR0FBRSxPQUFNLE1BQUksT0FBSyxFQUFFLEtBQUssRUFBQyxNQUFLLGlCQUFnQixzQkFBcUIsS0FBRSxDQUFDLEdBQUUsT0FBSyxNQUFJLFFBQU0sRUFBRSxJQUFJLEdBQUUsTUFBSyxFQUFFLEdBQUcsU0FBTyxZQUFVLE1BQUksS0FBSTtBQUFDLG9CQUFJLElBQUUsRUFBRSxVQUFVLElBQUUsQ0FBQztBQUFFLG9CQUFFLEVBQUMsTUFBSyxTQUFRLFFBQU8sU0FBUyxLQUFLLENBQUMsRUFBRSxJQUFHLE9BQU0sU0FBUyxLQUFLLENBQUMsRUFBRSxJQUFHLE9BQU0sRUFBRSxLQUFLLEVBQUMsR0FBRSxFQUFFLGNBQVksRUFBRSxPQUFPLFNBQU8sSUFBRSxJQUFFLEdBQUUsSUFBRSxFQUFDLE1BQUssU0FBUSxhQUFZLElBQUUsR0FBRSxPQUFNLEVBQUUsUUFBTyxPQUFNLElBQUc7QUFBRTtBQUFBLGNBQUs7QUFBQyxtQkFBRztBQUFBLFlBQUM7QUFBQyxtQkFBTyxJQUFFLEVBQUMsTUFBSyxpQkFBZ0IsUUFBTyxTQUFTLEtBQUssQ0FBQyxFQUFFLElBQUcsT0FBTSxTQUFTLEtBQUssQ0FBQyxFQUFFLElBQUcsT0FBTSxFQUFFLEtBQUssRUFBQyxHQUFFLEVBQUUsY0FBWSxFQUFFLE9BQU8sU0FBTyxHQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUUsTUFBSSxTQUFPLEVBQUUsU0FBTyxFQUFFLE9BQU0sRUFBRSxLQUFLLENBQUMsSUFBRyxNQUFJLFFBQU0sRUFBRSxLQUFLLENBQUMsR0FBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLFVBQVUsVUFBUSxLQUFHLFVBQVUsT0FBSyxTQUFPLElBQUUsVUFBVSxJQUFHLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLE9BQUcsSUFBRTtBQUFPLHFCQUFTLElBQUc7QUFBQyxxQkFBTSxFQUFDLFFBQU8sSUFBRyxPQUFNLElBQUcsT0FBTSxHQUFFO0FBQUEsWUFBQztBQUFDLGdCQUFFLEVBQUU7QUFBRSxxQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLG1CQUFHLEVBQUUsU0FBTyxJQUFHLE1BQUksT0FBSyxNQUFJLFFBQU0sTUFBSyxNQUFJLE9BQUssTUFBSSxRQUFNLE9BQUssRUFBRSxPQUFPLElBQUksTUFBSSxLQUFHLEVBQUUsVUFBUSxLQUFHLE1BQUksUUFBTSxFQUFFLE9BQUssNEJBQTJCLE1BQUssRUFBRSxRQUFNLEdBQUUsRUFBRSxjQUFZLElBQUUsR0FBRSxJQUFFLE9BQUksS0FBRyxNQUFJLE1BQUksTUFBSSxPQUFLLE1BQUksRUFBRSxTQUFPLEtBQUcsRUFBRSxJQUFFLEdBQUcsT0FBTyxJQUFJLE1BQUksUUFBTSxDQUFDLE9BQU0sUUFBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssTUFBSSxPQUFLLEVBQUUsT0FBSyxZQUFXLEVBQUUsU0FBTywrQkFBNkIsRUFBRSxRQUFNLEVBQUUsRUFBRSxPQUFNLEVBQUUsV0FBVyxJQUFHLEVBQUUsS0FBSyxNQUFNLFFBQVEsRUFBRSxLQUFLLElBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLElBQUU7QUFBQSxZQUFHO0FBQUMscUJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPO0FBQUksa0JBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxNQUFJLEVBQUUsSUFBRSxHQUFHLFFBQU0sRUFBRSxTQUFRLEVBQUUsU0FBTyxRQUFPO0FBQUMsb0JBQUcsSUFBRSxHQUFFO0FBQUMsc0JBQUcsRUFBRSxJQUFFLEdBQUcsU0FBTyw0QkFBMkI7QUFBQyxzQkFBRSxPQUFLO0FBQVU7QUFBQSxrQkFBUTtBQUFDLHNCQUFHLEVBQUUsSUFBRSxHQUFHLFVBQVEsU0FBTyxFQUFFLElBQUUsR0FBRyxVQUFRLFFBQU87QUFBQyxzQkFBRSxPQUFLO0FBQWE7QUFBQSxrQkFBUTtBQUFDLHNCQUFHLEVBQUUsSUFBRSxHQUFHLFVBQVEsT0FBTTtBQUFDLHNCQUFFLE9BQUs7QUFBMkI7QUFBQSxrQkFBUTtBQUFDLG9CQUFFLElBQUUsR0FBRyxTQUFPLGlCQUFlLEVBQUUsSUFBRSxLQUFHLEVBQUUsT0FBSyxFQUFFLElBQUUsR0FBRyxTQUFPLDZCQUEyQixZQUFVLDZCQUEyQixFQUFFLE9BQUs7QUFBQSxnQkFBMkI7QUFBQyxvQkFBRyxNQUFJLEdBQUU7QUFBQyxzQkFBRyxDQUFDLEVBQUUsSUFBRSxJQUFHO0FBQUMsc0JBQUUsT0FBSztBQUFhO0FBQUEsa0JBQVE7QUFBQyxzQkFBRyxFQUFFLElBQUUsT0FBSyxFQUFFLElBQUUsR0FBRyxTQUFPLDhCQUE0QixFQUFFLElBQUUsR0FBRyxTQUFPLFlBQVc7QUFBQyxzQkFBRSxPQUFLO0FBQWE7QUFBQSxrQkFBUTtBQUFDLHNCQUFHLEVBQUUsSUFBRSxJQUFHO0FBQUMsd0JBQUcsRUFBRSxJQUFFLEdBQUcsU0FBTyw0QkFBMkI7QUFBQyx3QkFBRSxPQUFLLGNBQWEsRUFBRSxJQUFFLEdBQUcsT0FBSztBQUFVO0FBQUEsb0JBQVE7QUFBQyx3QkFBRyxFQUFFLElBQUUsR0FBRyxTQUFPLFdBQVU7QUFBQyx3QkFBRSxPQUFLLFdBQVUsRUFBRSxJQUFFLEdBQUcsT0FBSztBQUFhO0FBQUEsb0JBQVE7QUFBQSxrQkFBQztBQUFDLHNCQUFHLEVBQUUsSUFBRSxNQUFJLEVBQUUsSUFBRSxHQUFHLFNBQU8sNEJBQTJCO0FBQUMsc0JBQUUsT0FBSyxXQUFVLEVBQUUsSUFBRSxHQUFHLE9BQUssY0FBYSxFQUFFLElBQUUsR0FBRyxPQUFLO0FBQVU7QUFBQSxrQkFBUTtBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFDLG1CQUFPO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxpQkFBaUIsS0FBSyxDQUFDO0FBQUUsZ0JBQUcsTUFBSSxNQUFLO0FBQUMsdUJBQVEsSUFBRSxFQUFFLEdBQUcsUUFBTyxJQUFFLEdBQUUsSUFBRSxLQUFHO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsc0JBQUksT0FBSyxLQUFJLE1BQUksT0FBSyxLQUFJO0FBQUEsY0FBRztBQUFDLGdCQUFFLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBQyxNQUFLLE9BQU0sT0FBTSxFQUFFLFVBQVUsR0FBRSxDQUFDLEVBQUUsS0FBSyxHQUFFLGFBQVksRUFBRSxHQUFHLFFBQU8sUUFBTyxFQUFFLElBQUcsT0FBTSxTQUFTLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRTtBQUFBLFlBQUM7QUFBQyxxQkFBUSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLGtCQUFJLElBQUUsRUFBRTtBQUFHLGtCQUFHLE1BQUksT0FBSyxLQUFJLE1BQUksT0FBSyxLQUFJLE1BQUksS0FBRyxNQUFJLEtBQUk7QUFBQyxvQkFBSSxJQUFFLEVBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxJQUFFLFNBQVMsS0FBSyxDQUFDLEVBQUU7QUFBRyxrQkFBRSxLQUFLLElBQUksRUFBRSxRQUFRLEVBQUMsTUFBSyxlQUFjLE9BQU0sRUFBRSxLQUFLLEdBQUUsYUFBWSxJQUFFLEVBQUUsUUFBTyxPQUFNLEVBQUUsR0FBRSxDQUFDLEdBQUUsUUFBTyxHQUFFLE9BQU0sU0FBUyxLQUFLLENBQUMsRUFBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksSUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFFLElBQUUsU0FBUyxLQUFLLENBQUMsRUFBRTtBQUFHLG1CQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsUUFBUSxFQUFDLE1BQUssZUFBYyxPQUFNLEVBQUUsS0FBSyxHQUFFLGFBQVksSUFBRSxFQUFFLFFBQU8sT0FBTSxFQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQU8sR0FBRSxPQUFNLFNBQVMsS0FBSyxDQUFDLEVBQUUsR0FBRSxDQUFDLENBQUMsR0FBRTtBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHdEQUF3RCxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsT0FBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRO0FBQUUsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRztBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEtBQUcsRUFBRSxhQUFXLElBQUUsRUFBQyxTQUFRLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sSUFBSSxFQUFFLFFBQVEsRUFBQyxRQUFPLEdBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFFLE1BQUssb0JBQW1CLE9BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsQ0FBQztBQUFFLFdBQUcsSUFBRyxFQUFDLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLFlBQVcsTUFBSSxJQUFHLE1BQUssTUFBSSxJQUFHLFdBQVUsTUFBSSxJQUFHLFVBQVMsTUFBSSxJQUFHLFNBQVEsTUFBSSxJQUFHLEtBQUksTUFBSSxHQUFFLENBQUM7QUFBRSxpQkFBUyxHQUFHLEdBQUUsR0FBRTtBQUFDLG1CQUFRLElBQUUsR0FBRSxJQUFFLEVBQUUsU0FBTyxHQUFFLEtBQUcsR0FBRSxLQUFJO0FBQUMsZ0JBQUksSUFBRSxFQUFFO0FBQUcsa0JBQUksTUFBSSxFQUFFLE9BQU8sR0FBRSxDQUFDLElBQUUsTUFBSSxRQUFNLEVBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFLLE1BQUksRUFBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFO0FBQUEsVUFBSTtBQUFDLGNBQUc7QUFBRSxtQkFBSyxLQUFJO0FBQUUsZ0JBQUUsUUFBUSxJQUFJO0FBQUUsaUJBQU87QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLG1CQUFRLElBQUUsSUFBRyxJQUFFLE9BQUcsSUFBRSxVQUFVLFNBQU8sR0FBRSxLQUFHLE1BQUksQ0FBQyxHQUFFLEtBQUk7QUFBQyxnQkFBSSxJQUFFLEtBQUcsSUFBRSxVQUFVLEtBQUc7QUFBSSxnQkFBRyxPQUFPLEtBQUc7QUFBUyxvQkFBTSxJQUFJLFVBQVUsMkNBQTJDO0FBQUUsZ0JBQUcsQ0FBQztBQUFFO0FBQVMsZ0JBQUUsSUFBRSxNQUFJLEdBQUUsSUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFJO0FBQUEsVUFBRztBQUFDLGlCQUFPLElBQUUsR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUUsU0FBUyxHQUFFO0FBQUMsbUJBQU0sQ0FBQyxDQUFDO0FBQUEsVUFBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUcsSUFBRSxNQUFJLE1BQUksS0FBRztBQUFBLFFBQUc7QUFBQyxpQkFBUyxHQUFHLEdBQUU7QUFBQyxjQUFJLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsRUFBRSxNQUFJO0FBQUksaUJBQU8sSUFBRSxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRSxTQUFTLEdBQUU7QUFBQyxtQkFBTSxDQUFDLENBQUM7QUFBQSxVQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRSxDQUFDLEtBQUcsQ0FBQyxNQUFJLElBQUUsTUFBSyxLQUFHLE1BQUksS0FBRyxPQUFNLElBQUUsTUFBSSxNQUFJO0FBQUEsUUFBQztBQUFDLGlCQUFTLEdBQUcsR0FBRTtBQUFDLGlCQUFPLEVBQUUsT0FBTyxDQUFDLE1BQUk7QUFBQSxRQUFHO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUksSUFBRSxNQUFNLFVBQVUsTUFBTSxLQUFLLFdBQVUsQ0FBQztBQUFFLGlCQUFPLEdBQUcsR0FBRyxHQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsT0FBTyxLQUFHO0FBQVMsb0JBQU0sSUFBSSxVQUFVLHdDQUF3QztBQUFFLG1CQUFPO0FBQUEsVUFBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxRQUFDO0FBQUMsaUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxjQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxVQUFRLEVBQUUsT0FBSyxJQUFHO0FBQUk7QUFBQyxxQkFBUSxJQUFFLEVBQUUsU0FBTyxHQUFFLEtBQUcsS0FBRyxFQUFFLE9BQUssSUFBRztBQUFJO0FBQUMsbUJBQU8sSUFBRSxJQUFFLENBQUMsSUFBRSxFQUFFLE1BQU0sR0FBRSxJQUFFLElBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUSxJQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUUsSUFBRSxLQUFLLElBQUksRUFBRSxRQUFPLEVBQUUsTUFBTSxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksZ0JBQUcsRUFBRSxPQUFLLEVBQUUsSUFBRztBQUFDLGtCQUFFO0FBQUU7QUFBQSxZQUFLO0FBQUMsbUJBQVEsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPO0FBQUksY0FBRSxLQUFLLElBQUk7QUFBRSxpQkFBTyxJQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUUsRUFBRSxLQUFLLEdBQUc7QUFBQSxRQUFDO0FBQUMsaUJBQVMsR0FBRyxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRTtBQUFHLGlCQUFNLENBQUMsS0FBRyxDQUFDLElBQUUsT0FBSyxNQUFJLElBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxTQUFPLENBQUMsSUFBRyxJQUFFO0FBQUEsUUFBRTtBQUFDLGlCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQUcsaUJBQU8sS0FBRyxFQUFFLE9BQU8sS0FBRyxFQUFFLE1BQU0sTUFBSSxNQUFJLElBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxTQUFPLEVBQUUsTUFBTSxJQUFHO0FBQUEsUUFBQztBQUFDLGlCQUFTLEdBQUcsR0FBRTtBQUFDLGlCQUFPLEdBQUcsQ0FBQyxFQUFFO0FBQUEsUUFBRTtBQUFDLGlCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsY0FBRyxFQUFFO0FBQU8sbUJBQU8sRUFBRSxPQUFPLENBQUM7QUFBRSxtQkFBUSxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU87QUFBSSxjQUFFLEVBQUUsSUFBRyxHQUFFLENBQUMsS0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQUUsaUJBQU87QUFBQSxRQUFDO0FB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RSxJQUFFLElBQUksRUFBRSxRQUFRLEdBQUUsRUFBRSxNQUFLLEVBQUUsUUFBTyxFQUFFLFFBQU8sRUFBRSxNQUFLLEVBQUUsTUFBTSxJQUFFLElBQUUsSUFBSSxFQUFFLFFBQVEsR0FBRSxHQUFFLEdBQUUsS0FBSyxLQUFJLEtBQUssTUFBSyxFQUFFLE1BQU0sR0FBRSxFQUFFLFFBQU0sRUFBQyxNQUFLLEdBQUUsUUFBTyxHQUFFLFFBQU8sS0FBSyxJQUFHLEdBQUUsS0FBSyxTQUFPLEVBQUUsTUFBTSxPQUFLLEtBQUssT0FBTTtBQUFBLFlBQUMsR0FBRSxFQUFFLFNBQU8sU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxDQUFDLEtBQUs7QUFBSSx1QkFBTTtBQUFHLGtCQUFJLElBQUUsS0FBSyxJQUFJLFNBQVMsR0FBRSxJQUFFLEVBQUUsb0JBQW9CLEVBQUMsTUFBSyxHQUFFLFFBQU8sRUFBQyxDQUFDO0FBQUUsa0JBQUcsQ0FBQyxFQUFFO0FBQU8sdUJBQU07QUFBRyxrQkFBSSxJQUFFLEVBQUMsTUFBSyxLQUFLLFdBQVcsRUFBRSxNQUFNLEdBQUUsTUFBSyxFQUFFLE1BQUssUUFBTyxFQUFFLE9BQU0sR0FBRSxJQUFFLEVBQUUsaUJBQWlCLEVBQUUsTUFBTTtBQUFFLHFCQUFPLE1BQUksRUFBRSxTQUFPLElBQUc7QUFBQSxZQUFDLEdBQUUsRUFBRSxhQUFXLFNBQVMsR0FBRTtBQUFDLHFCQUFNLFlBQVksS0FBSyxDQUFDLElBQUUsSUFBRSxFQUFFLFFBQVEsUUFBUSxLQUFLLElBQUksU0FBUyxFQUFFLGNBQVksS0FBSSxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEVBQUMsS0FBSSxRQUFPLEtBQUksV0FBVTtBQUFDLHFCQUFPLEtBQUssUUFBTSxLQUFLO0FBQUEsWUFBRSxFQUFDLENBQUMsQ0FBQyxHQUFFO0FBQUEsVUFBQyxFQUFFLEdBQUUsSUFBRTtBQUFFLFlBQUUsVUFBUSxHQUFFLEVBQUUsVUFBUSxFQUFFO0FBQUEsUUFBTyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUs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QVEsSUFBRSxJQUFFLEtBQUksR0FBRSxPQUFPO0FBQUUsa0JBQUk7QUFBRSxnQkFBRSxTQUFPLEVBQUUsTUFBTSxVQUFRLEtBQUssS0FBSyxDQUFDLEdBQUUsSUFBRSxLQUFLLElBQUksR0FBRSxPQUFPLEtBQUcsSUFBRSxLQUFLLElBQUksR0FBRSxTQUFRLFdBQVcsR0FBRSxLQUFHLEtBQUssUUFBUSxDQUFDLEdBQUUsS0FBSyxRQUFRLEtBQUksR0FBRSxLQUFLO0FBQUEsWUFBQyxHQUFFLEVBQUUsTUFBSSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsa0JBQUk7QUFBRSxrQkFBRyxNQUFJLElBQUUsSUFBRyxNQUFJLElBQUUsRUFBRSxLQUFLLElBQUcsT0FBTyxJQUFFO0FBQUssdUJBQU87QUFBRSxrQkFBSSxJQUFFLEVBQUU7QUFBTyxrQkFBRyxNQUFJLGFBQVcsQ0FBQyxLQUFHLEVBQUUsU0FBTyxVQUFRLEVBQUUsVUFBUTtBQUFHLHVCQUFNO0FBQUcsa0JBQUcsQ0FBQztBQUFFLHVCQUFPLEVBQUU7QUFBRyxrQkFBSSxJQUFFLEVBQUUsS0FBSztBQUFFLGtCQUFHLEVBQUUsYUFBVyxFQUFFLFdBQVMsQ0FBQyxJQUFHLE9BQU8sRUFBRSxTQUFTLEtBQUc7QUFBSSx1QkFBTyxFQUFFLFNBQVM7QUFBRyxrQkFBRyxNQUFJLFlBQVUsTUFBSTtBQUFRLHVCQUFPLEtBQUssWUFBWSxHQUFFLENBQUM7QUFBRSxrQkFBSSxJQUFFLFFBQU0sRUFBRSxDQUFDO0FBQUUscUJBQU8sS0FBSyxLQUFHLElBQUUsS0FBSyxHQUFHLEdBQUUsQ0FBQyxJQUFFLEVBQUUsS0FBSyxTQUFTLEdBQUU7QUFBQyxvQkFBRyxJQUFFLEVBQUUsS0FBSyxJQUFHLE9BQU8sSUFBRTtBQUFJLHlCQUFNO0FBQUEsY0FBRSxDQUFDLEdBQUUsT0FBTyxJQUFFLFFBQU0sSUFBRSxFQUFFLEtBQUksRUFBRSxTQUFTLEtBQUcsR0FBRTtBQUFBLFlBQUMsR0FBRSxFQUFFLGVBQWEsU0FBUyxHQUFFO0FBQUMsa0JBQUk7QUFBRSxxQkFBTyxF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QUUsU0FBTztBQUFPLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBRSxHQUFFLEVBQUUsWUFBVSxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUUsYUFBYSxTQUFPLEtBQUssS0FBSyxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTyxVQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7QUFBRSx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQyxJQUFFLEtBQUssS0FBSyxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTyxVQUFRLEVBQUUsYUFBVztBQUFFLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDLEtBQUcsSUFBRSxHQUFFLEtBQUssS0FBSyxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTztBQUFPLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBRSxHQUFFLEVBQUUsY0FBWSxTQUFTLEdBQUUsR0FBRTtBQUFDLHFCQUFPLElBQUUsYUFBYSxTQUFPLEtBQUssS0FBSyxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTyxZQUFVLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFBRSx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQyxJQUFFLEtBQUssS0FBSyxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTyxZQUFVLEVBQUUsU0FBTztBQUFFLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDLEtBQUcsSUFBRSxHQUFFLEtBQUssS0FBSyxTQUFTLEdBQUUsR0FBRTtBQUFDLG9CQUFHLEVBQUUsU0FBTztBQUFTLHlCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxDQUFDO0FBQUEsWUFBRSxHQUFFLEVBQUUsZUFBYSxTQUFTLEdBQUU7QUFBQyxxQkFBTyxLQUFLLEtBQUssU0FBUyxHQUFFLEdBQUU7QUFBQyxvQkFBRyxFQUFFLFNBQU87QUFBVSx5QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUMsQ0FBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFNBQU8sV0FBVTtBQUFDLHVCQUFRLElBQUUsVUFBVSxRQUFPLElBQUUsSUFBSSxNQUFNLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksa0JBQUUsS0FBRyxVQUFVO0FBQUcsdUJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTztBQUFJLHlCQUFRLElBQUUsRUFBRSxJQUFHLElBQUUsS0FBSyxVQUFVLEdBQUUsS0FBSyxJQUFJLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsSUFBRSxFQUFFLEdBQUcsUUFBTTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFNLHVCQUFLLE1BQU0sS0FBSyxDQUFDO0FBQUEsZ0JBQUM7QUFBQyxxQkFBTztBQUFBLFlBQUksR0FBRSxFQUFFLFVBQVEsV0FBVTtBQUFDLHVCQUFRLElBQUUsVUFBVSxRQUFPLElBQUUsSUFBSSxNQUFNLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFO0FBQUksa0JBQUUsS0FBRyxVQUFVO0FBQUcsa0JBQUUsRUFBRSxRQUFRO0FBQUUsdUJBQVEsSUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsSUFBRSxFQUFFLEdBQUcsUUFBTTtBQUFDLHlCQUFRLElBQUUsRUFBRSxPQUFNLElBQUUsS0FBSyxVQUFVLEdBQUUsS0FBSyxPQUFNLFNBQVMsRUFBRSxRQUFRLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFLEVBQUUsSUFBRSxFQUFFLEdBQUcsUUFBTTtBQUFDLHNCQUFJLElBQUUsRUFBRTtBQUFNLHVCQUFLLE1BQU0sUUFBUSxDQUFDO0FBQUEsZ0JBQUM7QUFBQyx5QkFBUSxLQUFLLEtBQUs7QUFBUSx1QkFBSyxRQUFRLEtBQUcsS0FBSyxRQUFRLEtBQUcsRUFBRTtBQUFBLGNBQU07QUFBQyxxQkFBTztBQUFBLFlBQUksR0FBRSxFQUFFLFlBQVUs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RSxFQUFFLFlBQVU7QUFBQSxVQUFDO0FBQUMsY0FBSSxJQUFFLFNBQVMsR0FBRTtBQUFDLGNBQUUsR0FBRSxDQUFDO0FBQUUscUJBQVMsRUFBRSxHQUFFO0FBQUMsa0JBQUk7QUFBRSxxQkFBTyxJQUFFLEVBQUUsS0FBSyxNQUFLLENBQUMsS0FBRyxNQUFLLEVBQUUsT0FBSyxVQUFTO0FBQUEsWUFBQztBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFVLG1CQUFPLEVBQUUsU0FBTyxXQUFVO0FBQUMsa0JBQUk7QUFBRSxtQkFBSyxVQUFRLEtBQUssUUFBTSxDQUFDO0FBQUcsdUJBQVEsSUFBRSxVQUFVLFFBQU8sSUFBRSxJQUFJLE1BQU0sQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxrQkFBRSxLQUFHLFVBQVU7QUFBRyxzQkFBTyxJQUFFLEVBQUUsVUFBVSxRQUFRLEtBQUssTUFBTSxHQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBUSxXQUFVO0FBQUMsa0JBQUk7QUFBRSxtQkFBSyxVQUFRLEtBQUssUUFBTSxDQUFDO0FBQUcsdUJBQVEsSUFBRSxVQUFVLFFBQU8sSUFBRSxJQUFJLE1BQU0sQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUU7QUFBSSxrQkFBRSxLQUFHLFVBQVU7QUFBRyxzQkFBTyxJQUFFLEVBQUUsVUFBVSxTQUFTLEtBQUssTUFBTSxHQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUEsWUFBQyxHQUFFO0FBQUEsVUFBQyxFQUFFLEVBQUUsT0FBTyxHQUFFLElBQUU7QUFBRSxZQUFFLFVBQVEsR0FBRSxFQUFFLFVBQVEsRUFBRTtBQUFBLFFBQU8sRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsNENBQTRDLEdBQUUsR0FBRTtBQUFDLFlBQUUsR0FBRSxFQUFFLFVBQVEsTUFBSztBQUFBLFlBQUMsV0FBVTtBQUFBLFlBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxL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QUFDO0FBQUUsa0JBQUcsTUFBSSxlQUFhLDJDQUEyQyxLQUFLLENBQUM7QUFBRSx1QkFBTyxFQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxhQUFDLEtBQUcsUUFBTSxJQUFFLEVBQUUsWUFBVSxJQUFFLEVBQUU7QUFBUSxxQkFBUSxJQUFFLEdBQUUsSUFBRSxJQUFJLE1BQU0sQ0FBQyxHQUFFLElBQUUsR0FBRTtBQUFJLGdCQUFFLEtBQUcsRUFBRTtBQUFHLG1CQUFPO0FBQUEsVUFBQztBQUFDLGNBQUksSUFBRSxXQUFVO0FBQUMscUJBQVMsRUFBRSxHQUFFO0FBQUMsb0JBQUksV0FBUyxJQUFFLENBQUMsSUFBRyxLQUFLLFVBQVEsVUFBUyxLQUFLLFVBQVEsS0FBSyxVQUFVLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUksSUFBRSxFQUFFO0FBQVUsbUJBQU8sRUFBRSxNQUFJLFNBQVMsR0FBRTtBQUFDLHFCQUFPLEtBQUssVUFBUSxLQUFLLFFBQVEsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFO0FBQUEsWUFBSSxHQUFFLEVBQUUsVUFBUSxTQUFTLEdBQUU7QUFBQyx1QkFBUyxFQUFFLEdBQUU7QUFBQyx1QkFBTyxFQUFFLE1BQU0sTUFBSyxTQUFTO0FBQUEsY0FBQztBQUFDLHFCQUFPLEVBQUUsV0FBUyxXQUFVO0FBQUMsdUJBQU8sRUFBRSxTQUFTO0FBQUEsY0FBQyxHQUFFO0FBQUEsWUFBQyxFQUFFLFNBQVMsR0FBRSxHQUFFO0FBQUMscUJBQU8sTUFBSSxXQUFTLElBQUUsQ0FBQyxJQUFHLEtBQUssUUFBUSxXQUFTLE1BQUksRUFBRSxRQUFPLEVBQUUsY0FBYSxJQUFJLEVBQUUsUUFBUSxNQUFLLEdBQUUsQ0FBQztBQUFBLFlBQUMsQ0FBQyxHQUFFLEVBQUUsWUFBVSxTQUFTLEdBQUU7QUFBQyx1QkFBUSxJQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRSxJQUFFLEVB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SyxFQUFFLE1BQUssRUFBRSxLQUFLLEtBQUssSUFBRTtBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxNQUFNLEdBQUU7QUFBQyxrQkFBRyxDQUFDLENBQUMsSUFBRSxHQUFFLElBQUUsRUFBRSxHQUFHLE1BQU0sR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFVBQVUsT0FBRyxFQUFFLE9BQUssVUFBVSxHQUFFLElBQUUsRUFBRSxVQUFVLE9BQUcsRUFBRSxPQUFLLEdBQUcsR0FBRSxJQUFFO0FBQUcsbUJBQUksSUFBRSxLQUFHLElBQUUsTUFBSSxJQUFFLEdBQUU7QUFBQyxvQkFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsR0FBRSxNQUFJLEVBQUUsT0FBSyxNQUFJLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFNLEdBQUUsSUFBRSxDQUFDLEVBQUUsSUFBSSxPQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFFLENBQUMsQ0FBQyxJQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUUsSUFBRSxDQUFDLEVBQUUsSUFBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsSUFBRSxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFLENBQUMsRUFBRSxJQUFHLEVBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxZQUFXLENBQUMsRUFBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFNLElBQUUsQ0FBQztBQUFFLG9CQUFFLEdBQUUsRUFBRSxLQUFLLENBQUMsR0FBRSxJQUFFLEVBQUUsT0FBTyxDQUFDO0FBQUEsY0FBQztBQUFDLGtCQUFJLElBQUUsQ0FBQztBQUFFLHVCQUFRLEtBQUs7QUFBRSxxQkFBSSxFQUFFLE9BQUssT0FBSyxFQUFFLFdBQVMsRUFBRSxLQUFLLENBQUMsR0FBRSxFQUFFLE9BQUs7QUFBWTtBQUFNLGtCQUFHLEVBQUUsUUFBTztBQUFDLG9CQUFHLENBQUMsQ0FBQyxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQVEsQ0FBQyxHQUFFLElBQUUsRUFBRSxFQUFFLFNBQU8sSUFBRyxJQUFFLENBQUMsRUFBRSxJQUFHLEVBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxFQUFFLElBQUcsRUFBRSxFQUFFLEdBQUUsSUFBRSxFQUFFLElBQUksT0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRSxJQUFFLENBQUMsUUFBTyxDQUFDLEVBQUUsT0FBTyxHQUFFLENBQUM7QUFBRSxrQkFBRSxPQUFPLEdBQUUsRUFBRSxRQUFPLENBQUM7QUFBQSxjQUFDO0FBQUMsa0JBQUksSUFBRSxFQUFFLFVBQVUsT0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFBRSxrQkFBRSxNQUFJLENBQUMsRUFBQyxDQUFDLElBQUUsRUFBRSxJQUFHLEVBQUUsT0FBTyxHQUFFLENBQUM7QUFBRyx1QkFBUSxLQUFLLEVBQUUsUUFBUTtBQUFFLHFCQUFLLFVBQVUsS0FBSyxDQUFDO0FBQUUsbUJBQUssT0FBTyxLQUFLLFVBQVUsVUFBVSxDQUFDLEdBQUUsS0FBSyxTQUFTLFFBQU0sTUFBRyxLQUFLLFNBQVMsS0FBSyxhQUFXLEdBQUUsTUFBSSxLQUFLLFNBQVMsWUFBVSxNQUFHLEtBQUssU0FBUyxLQUFLLFlBQVU7QUFBQSxZQUFFO0FBQUEsWUFBQyxNQUFNLEdBQUU7QUFBQyxnQkFBRSxLQUFLLElBQUksRUFBRSxDQUFDLEtBQUcsTUFBTSxNQUFNLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxLQUFLLEdBQUU7QUFBQyxrQkFBSSxJQUFFLEVBQUUsRUFBRSxTQUFPLElBQUcsSUFBRSxFQUFFLEVBQUUsU0FBTztBQUFHLGtCQUFHLEVBQUUsT0FBSyxhQUFXLEVBQUUsT0FBSyxRQUFNLEtBQUssVUFBVSxLQUFLLENBQUMsR0FBRSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBRztBQUFDLG9CQUFJLElBQUUsS0FBSyxVQUFVLFVBQVU7QUFBRSxvQkFBRSxFQUFFLE1BQU0sR0FBRSxFQUFFLFNBQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFBRSx5QkFBUSxLQUFLLEVBQUUsUUFBUTtBQUFFLHVCQUFLLFVBQVUsS0FBSyxDQUFDO0FBQUU7QUFBQSxjQUFNO0FBQUMsb0JBQU0sS0FBSyxDQUFDLEdBQUUsaUJBQWlCLEtBQUssS0FBSyxTQUFTLFFBQVEsTUFBSSxLQUFLLFNBQVMsU0FBTztBQUFBLFlBQUc7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLGtCQUFHLENBQUMsQ0FBQyxJQUFFO0FBQUUsa0JBQUcsRUFBRSxHQUFHLE9BQUssVUFBUSxFQUFFLEdBQUcsT0FBSyxLQUFJO0FBQUMscUJBQUssS0FBSyxDQUFDO0FBQUU7QUFBQSxjQUFNO0FBQUMsa0JBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQyxxQkFBSyxNQUFNLENBQUM7QUFBRTtBQUFBLGNBQU07QUFBQyxvQkFBTSxZQUFZLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsbURBQW1ELEdBQUUsR0FBRTtBQUFDLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRztBQUFFLFlBQUUsVUFBUSxjQUFjLEVBQUM7QUFBQSxZQUFDLE9BQU8sR0FBRSxHQUFFO0FBQUMsa0JBQUcsQ0FBQyxFQUFFLFNBQU8sQ0FBQyxFQUFFLFlBQVUsQ0FBQyxFQUFFLFVBQVM7QUFBQyxzQkFBTSxPQUFPLEdBQUUsQ0FBQztBQUFFO0FBQUEsY0FBTTtBQUFDLGtCQUFJLElBQUUsRUFBRSxXQUFTLEtBQUcsRUFBRSxLQUFLLGNBQVksS0FBSSxJQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksR0FBRSxJQUFFLEVBQUUsU0FBTyxLQUFLLFNBQVMsR0FBRSxRQUFRLElBQUUsSUFBRyxJQUFFLEVBQUUsS0FBSyxhQUFXO0FBQUcsa0JBQUcsRUFBRSxhQUFXLElBQUUsRUFBRSxRQUFPLE9BQU8sRUFBRSxLQUFLLFlBQVUsTUFBSSxLQUFHLEVBQUUsS0FBSyxZQUFVLE1BQUksS0FBRyxNQUFLLEVBQUU7QUFBTSxxQkFBSyxNQUFNLEdBQUUsSUFBRSxJQUFFLENBQUM7QUFBQSxtQkFBTTtBQUFDLG9CQUFJLEtBQUcsRUFBRSxLQUFLLFdBQVMsTUFBSSxLQUFHLElBQUUsTUFBSTtBQUFJLHFCQUFLLFFBQVEsSUFBRSxJQUFFLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxRQUFRLEdBQUU7QUFBQyxrQkFBRyxFQUFFLFFBQU87QUFBQyxvQkFBSSxJQUFFLEtBQUssSUFBSSxHQUFFLFFBQU8sYUFBYSxHQUFFLElBQUUsS0FBSyxJQUFJLEdBQUUsU0FBUSxjQUFjO0FBQUUscUJBQUssUUFBUSxLQUFLLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUUsQ0FBQztBQUFBLGNBQUM7QUFBTSxzQkFBTSxRQUFRLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMseUNBQXlDLEdBQUUsR0FBRTtBQUFDLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRztBQUFFLFlBQUUsVUFBUSxFQUFDLE1BQU0sR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxJQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxJQUFJLEVBQUUsQ0FBQztBQUFFLG1CQUFPLEVBQUUsTUFBTSxHQUFFLEVBQUU7QUFBQSxVQUFJLEdBQUUsVUFBVSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUM7QUFBQSxVQUFDLEdBQUUsYUFBYSxHQUFFO0FBQUMsZ0JBQUksSUFBRTtBQUFHLG1CQUFPLEVBQUUsUUFBUSxVQUFVLEdBQUUsT0FBRztBQUFDLG1CQUFHO0FBQUEsWUFBQyxDQUFDLEdBQUU7QUFBQSxVQUFDLEVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLG9EQUFvRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGNBQUUsWUFBVSxPQUFPLE9BQU8sRUFBRSxTQUFTLEdBQUUsRUFBRSxVQUFVLGNBQVksR0FBRSxFQUFFLFlBQVU7QUFBQSxVQUFDO0FBQUMsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLGNBQUUsR0FBRSxDQUFDO0FBQUUscUJBQVMsSUFBRztBQUFDLHFCQUFPLEVBQUUsTUFBTSxNQUFLLFNBQVMsS0FBRztBQUFBLFlBQUk7QUFBQyxnQkFBSSxJQUFFLEVBQUU7QUFBVSxtQkFBTyxFQUFFLFVBQVEsU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLElBQUksR0FBRSxRQUFPLGFBQWEsR0FBRSxJQUFFLEtBQUssSUFBSSxHQUFFLFNBQVEsY0FBYztBQUFFLGtCQUFHLEVBQUUsS0FBSyxRQUFPO0FBQUMsb0JBQUksSUFBRSxFQUFFLEtBQUssUUFBTSxFQUFFO0FBQUsscUJBQUssUUFBUSxPQUFLLElBQUUsSUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDO0FBQU0scUJBQUssUUFBUSxPQUFLLElBQUUsRUFBRSxPQUFLLElBQUUsTUFBSyxDQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTLEdBQUUsR0FBRTtBQUFDLGtCQUFHLENBQUMsRUFBRTtBQUFTLGtCQUFFLFVBQVUsS0FBSyxLQUFLLE1BQUssR0FBRSxDQUFDO0FBQUEsbUJBQU07QUFBQyxvQkFBSSxJQUFFLEtBQUssSUFBSSxHQUFFLFdBQVUsT0FBTyxHQUFFLElBQUUsRUFBRSxPQUFLLElBQUUsS0FBSyxTQUFTLEdBQUUsT0FBTztBQUFFLGtCQUFFLGNBQVksS0FBRyxFQUFFLEtBQUssYUFBVyxnQkFBZSxLQUFLLFFBQVEsSUFBRSxLQUFJLEdBQUUsT0FBTztBQUFFLG9CQUFJO0FBQUUsa0JBQUUsU0FBTyxFQUFFLE1BQU0sVUFBUSxLQUFLLEtBQUssQ0FBQyxHQUFFLElBQUUsS0FBSyxJQUFJLEdBQUUsT0FBTyxLQUFHLElBQUUsS0FBSyxJQUFJLEdBQUUsU0FBUSxXQUFXLEdBQUUsS0FBRyxLQUFLLFFBQVEsQ0FBQyxHQUFFLEtBQUssUUFBUSxLQUFJLEdBQUUsS0FBSztBQUFBLGNBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxXQUFTLFNBQVMsR0FBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLEtBQUs7QUFBRyxxQkFBTyxLQUFHLEVBQUUsVUFBUSxJQUFFLEVBQUUsT0FBSyxFQUFFLE9BQUssRUFBRSxNQUFJO0FBQUEsWUFBQyxHQUFFO0FBQUEsVUFBQyxFQUFFLENBQUM7QUFBRSxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLGtEQUFrRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRztBQUFFLFlBQUUsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsSUFBSSxFQUFFLENBQUM7QUFBRSxjQUFFLFVBQVUsQ0FBQztBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHNEQUFzRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGNBQUUsWUFBVSxPQUFPLE9BQU8sRUFBRSxTQUFTLEdBQUUsRUFBRSxVQUFVLGNBQVksR0FBRSxFQUFFLFlBQVU7QUFBQSxVQUFDO0FBQUMsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLFNBQVMsR0FBRTtBQUFDLGNBQUUsR0FBRSxDQUFDO0FBQUUscUJBQVMsRUFBRSxHQUFFO0FBQUMsa0JBQUk7QUFBRSxxQkFBTyxJQUFFLEVBQUUsS0FBSyxNQUFLLENBQUMsS0FBRyxNQUFLLEVBQUUsT0FBSyxRQUFPLEVBQUUsV0FBUyxNQUFHLEVBQUUsVUFBUSxFQUFFLFFBQU0sQ0FBQyxJQUFHO0FBQUEsWUFBQztBQUFDLG1CQUFPO0FBQUEsVUFBQyxFQUFFLENBQUM7QUFBRSxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLGlEQUFpRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsSUFBSSxXQUFXLENBQUMsR0FBRSxJQUFFLElBQUksV0FBVyxDQUFDLEdBQUUsSUFBRSxLQUFLLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBSSxXQUFXLENBQUMsR0FBRSxJQUFFO0FBQUEsRUFDMzJOLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBSSxXQUFXLENBQUMsR0FBRSxJQUFFLEtBQUssV0FBVyxDQUFDLEdBQUUsSUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFFLElBQUUsS0FBSyxXQUFXLENBQUMsR0FBRSxJQUFFLElBQUksV0FBVyxDQUFDLEdBQUUsSUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBSSxXQUFXLENBQUMsR0FBRSxJQUFFLElBQUksV0FBVyxDQUFDLEdBQUUsSUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBSSxXQUFXLENBQUMsR0FBRSxJQUFFLElBQUksV0FBVyxDQUFDLEdBQUUsSUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBSSxXQUFXLENBQUMsR0FBRSxJQUFFLElBQUksV0FBVyxDQUFDLEdBQUUsSUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFFLElBQUUsSUFBSSxXQUFXLENBQUMsR0FBRSxJQUFFLDhCQUE2QixJQUFFLHlDQUF3QyxJQUFFLGVBQWMsSUFBRSxhQUFZLElBQUU7QUFBWSxZQUFFLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBSSxXQUFTLElBQUUsQ0FBQztBQUFHLGdCQUFJLElBQUUsRUFBRSxJQUFJLFFBQVEsR0FBRSxJQUFFLEVBQUUsY0FBYSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxJQUFHLElBQUUsR0FBRSxJQUFFLEdBQUUsS0FBRyxDQUFDLEdBQUUsS0FBRyxDQUFDO0FBQUUscUJBQVMsR0FBRyxJQUFHO0FBQUMsb0JBQU0sRUFBRSxNQUFNLGNBQVksSUFBRyxHQUFFLElBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxLQUFJO0FBQUMscUJBQU8sR0FBRyxXQUFTLEtBQUcsS0FBRztBQUFBLFlBQUM7QUFBQyxxQkFBUyxLQUFJO0FBQUMsdUJBQVEsS0FBRyxHQUFFLEtBQUcsT0FBRyxLQUFHLE9BQUcsS0FBRztBQUFHLHFCQUFHLEdBQUUsRUFBRSxVQUFRLEtBQUcsR0FBRyxlQUFlLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLElBQUUsRUFBRSxXQUFXLElBQUUsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxNQUFJLE1BQUksTUFBSSxLQUFHLE9BQUcsS0FBRyxTQUFJLE1BQUksSUFBRSxLQUFHLENBQUMsSUFBRSxPQUFLLEtBQUcsU0FBSSxNQUFJLEtBQUcsTUFBSSxJQUFFLEtBQUcsSUFBRSxNQUFJLElBQUUsTUFBSSxJQUFFLE1BQUksS0FBRyxNQUFJLE1BQUksTUFBSTtBQUFBLFlBQUU7QUFBQyxxQkFBUyxLQUFJO0FBQUMsa0JBQUcsR0FBRztBQUFPLHVCQUFPLEdBQUcsSUFBSTtBQUFFLGtCQUFHLEVBQUUsS0FBRyxJQUFHO0FBQUMsd0JBQU8sSUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLEVBQUUsV0FBVyxJQUFFLENBQUMsTUFBSSxPQUFLLElBQUUsR0FBRSxLQUFHLElBQUc7QUFBQSx1QkFBUTtBQUFBLHVCQUFPO0FBQUEsdUJBQU87QUFBQSx1QkFBTztBQUFBLHVCQUFPO0FBQUUsd0JBQUU7QUFBRTtBQUFHLDJCQUFHLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLE1BQUksTUFBSSxJQUFFLEdBQUUsS0FBRztBQUFBLDJCQUFTLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJO0FBQUcsd0JBQUUsQ0FBQyxTQUFRLEVBQUUsTUFBTSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBRSxDQUFDLEtBQUksS0FBSSxHQUFFLElBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBRSxDQUFDLEtBQUksS0FBSSxHQUFFLElBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBRSxDQUFDLEtBQUksS0FBSSxHQUFFLElBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBRSxDQUFDLEtBQUksS0FBSSxHQUFFLElBQUUsQ0FBQztBQUFFO0FBQUEsdUJBQVc7QUFBRSx3QkFBRSxDQUFDLFFBQU8sS0FBSSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsSUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFFLENBQUMsS0FBSSxLQUFJLEdBQUUsSUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFFLENBQUMsS0FBSSxLQUFJLEdBQUUsSUFBRSxDQUFDO0FBQUU7QUFBQSx1QkFBVztBQUFFLHdCQUFHLElBQUUsR0FBRyxTQUFPLEdBQUcsSUFBSSxFQUFFLEtBQUcsSUFBRyxJQUFFLEVBQUUsV0FBVyxJQUFFLENBQUMsR0FBRSxNQUFJLFNBQU8sTUFBSSxLQUFHLE1BQUksR0FBRTtBQUFDLDJCQUFJLElBQUUsR0FBRSxJQUFFLE9BQUcsSUFBRSxJQUFFLEdBQUUsS0FBRyxFQUFFLFNBQU8sS0FBRztBQUFDLDRCQUFHLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxNQUFJO0FBQUUsOEJBQUUsQ0FBQztBQUFBLGlDQUFVLE1BQUk7QUFBRSwrQkFBRztBQUFBLGlDQUFVLE1BQUksTUFBSSxLQUFHLEdBQUUsTUFBSTtBQUFHO0FBQU0sNkJBQUc7QUFBQSxzQkFBQztBQUFDLDBCQUFFLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDbHBELEdBQUUsSUFBRSxFQUFFLFNBQU8sR0FBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUUsSUFBRSxJQUFFLEVBQUUsR0FBRyxXQUFTLElBQUUsR0FBRSxJQUFFLElBQUcsSUFBRSxDQUFDLFlBQVcsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRTtBQUFBLG9CQUFDO0FBQU0sMEJBQUUsRUFBRSxRQUFRLEtBQUksSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxNQUFJLE1BQUksRUFBRSxLQUFLLENBQUMsSUFBRSxJQUFFLENBQUMsS0FBSSxLQUFJLEdBQUUsSUFBRSxDQUFDLEtBQUcsSUFBRSxDQUFDLFlBQVcsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUUsd0JBQUUsQ0FBQyxLQUFJLEtBQUksR0FBRSxJQUFFLENBQUM7QUFBRTtBQUFBLHVCQUFXO0FBQUEsdUJBQU87QUFBRSx5QkFBSSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsT0FBRyxJQUFFLE1BQUksS0FBSSxNQUFJLEtBQUcsR0FBRyxRQUFRLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLElBQUUsRUFBRSxXQUFXLElBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxLQUFHLE1BQUk7QUFBSyw0QkFBSSxJQUFFLElBQUUsQ0FBQyxJQUFFLElBQUUsSUFBRSxRQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsR0FBRztBQUFFLHdCQUFFLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDdmEsR0FBRSxJQUFFLEVBQUUsU0FBTyxHQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRSxJQUFFLElBQUUsRUFBRSxHQUFHLFdBQVMsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLENBQUMsVUFBUyxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRTtBQUFFO0FBQUEsdUJBQVc7QUFBRSxzQkFBRSxZQUFVLElBQUUsR0FBRSxFQUFFLEtBQUssQ0FBQyxHQUFFLEVBQUUsY0FBWSxJQUFFLElBQUUsRUFBRSxTQUFPLElBQUUsSUFBRSxFQUFFLFlBQVUsR0FBRSxJQUFFLENBQUMsV0FBVSxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUU7QUFBRTtBQUFBLHVCQUFXO0FBQUUseUJBQUksSUFBRSxHQUFFLElBQUUsTUFBRyxFQUFFLFdBQVcsSUFBRSxDQUFDLE1BQUk7QUFBRywyQkFBRyxHQUFFLElBQUUsQ0FBQztBQUFFLHdCQUFHLElBQUUsRUFBRSxXQUFXLElBQUUsQ0FBQyxHQUFFLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLE1BQUksS0FBRyxHQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUc7QUFBQyw2QkFBSyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUUsQ0FBQyxDQUFDO0FBQUcsNkJBQUc7QUFBRSx3QkFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLE1BQUksS0FBRztBQUFBLG9CQUFFO0FBQUMsd0JBQUUsQ0FBQyxRQUFPLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRTtBQUFFO0FBQUE7QUFBYyx3QkFBRSxFQUFFLFdBQVcsSUFBRSxDQUFDLEdBQUUsTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLEdBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxNQUFNLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLE1BQU07QUFBQSxDQUNsa0IsR0FBRSxJQUFFLEVBQUUsU0FBTyxHQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRSxJQUFFLElBQUUsRUFBRSxHQUFHLFdBQVMsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLENBQUMsUUFBTyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxJQUFFLEVBQUUsUUFBUSxNQUFLLElBQUUsQ0FBQyxJQUFFLEdBQUUsTUFBSSxNQUFJLElBQUUsSUFBRSxFQUFFLFNBQU8sR0FBRyxTQUFTLElBQUcsSUFBRSxFQUFFLE1BQU0sR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsTUFBTTtBQUFBLENBQ2hNLEdBQUUsSUFBRSxFQUFFLFNBQU8sR0FBRSxJQUFFLEtBQUcsSUFBRSxJQUFFLEdBQUUsSUFBRSxJQUFFLEVBQUUsR0FBRyxXQUFTLElBQUUsR0FBRSxJQUFFLElBQUcsSUFBRSxDQUFDLFdBQVUsR0FBRSxHQUFFLElBQUUsR0FBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxLQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsRUFBRSxZQUFVLElBQUUsR0FBRSxFQUFFLEtBQUssQ0FBQyxHQUFFLEVBQUUsY0FBWSxJQUFFLElBQUUsRUFBRSxTQUFPLElBQUUsSUFBRSxFQUFFLFlBQVUsR0FBRSxJQUFFLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxXQUFVLEdBQUUsR0FBRSxJQUFFLEdBQUUsR0FBRSxJQUFFLEdBQUUsUUFBUSxHQUFFLElBQUUsTUFBSSxFQUFFLFlBQVUsSUFBRSxHQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUUsRUFBRSxjQUFZLElBQUUsSUFBRSxFQUFFLFNBQU8sSUFBRSxJQUFFLEVBQUUsWUFBVSxHQUFFLElBQUUsQ0FBQyxRQUFPLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRyxLQUFLLENBQUMsR0FBRSxJQUFFO0FBQUc7QUFBQTtBQUFNLHVCQUFPLEtBQUk7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEdBQUcsSUFBRztBQUFDLGlCQUFHLEtBQUssRUFBRTtBQUFBLFlBQUM7QUFBQyxtQkFBTSxFQUFDLE1BQUssSUFBRyxXQUFVLElBQUcsV0FBVSxHQUFFO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsK0NBQStDLEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsY0FBRSxZQUFVLE9BQU8sT0FBTyxFQUFFLFNBQVMsR0FBRSxFQUFFLFVBQVUsY0FBWSxHQUFFLEVBQUUsWUFBVTtBQUFBLFVBQUM7QUFBQyxjQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsU0FBUyxHQUFFO0FBQUMsY0FBRSxHQUFFLENBQUM7QUFBRSxxQkFBUyxJQUFHO0FBQUMscUJBQU8sRUFBRSxNQUFNLE1BQUssU0FBUyxLQUFHO0FBQUEsWUFBSTtBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFVLG1CQUFPLEVBQUUsa0JBQWdCLFdBQVU7QUFBQyxtQkFBSyxZQUFVLEVBQUUsS0FBSyxLQUFLO0FBQUEsWUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTLEdBQUU7QUFBQyx1QkFBUSxJQUFFLE9BQUcsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLEdBQUUsSUFBRSxNQUFNLFFBQVEsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLElBQUUsSUFBRSxFQUFFLE9BQU8sVUFBVSxPQUFJO0FBQUMsb0JBQUk7QUFBRSxvQkFBRyxHQUFFO0FBQUMsc0JBQUcsS0FBRyxFQUFFO0FBQU87QUFBTSxzQkFBRSxFQUFFO0FBQUEsZ0JBQUksT0FBSztBQUFDLHNCQUFHLElBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRTtBQUFLO0FBQU0sc0JBQUUsRUFBRTtBQUFBLGdCQUFLO0FBQUMsb0JBQUksSUFBRTtBQUFFLG9CQUFHO0FBQUUsb0JBQUUsT0FBSyxhQUFXLEVBQUUsT0FBSyxRQUFNLEtBQUcsRUFBRTtBQUFBLHFCQUFRO0FBQUMsc0JBQUcsRUFBRSxPQUFLLFdBQVMsRUFBRSxHQUFHLFFBQVE7QUFBQSxDQUMvakMsTUFBSTtBQUFHO0FBQU0sb0JBQUUsT0FBSyxNQUFJLEtBQUcsSUFBRSxFQUFFLE9BQUssTUFBSSxLQUFHLElBQUUsTUFBSSxLQUFHLEVBQUUsT0FBSyxRQUFNLElBQUU7QUFBQSxnQkFBRztBQUFBLGNBQUM7QUFBQyxrQkFBRyxDQUFDLEtBQUcsRUFBRSxLQUFLLE1BQUksTUFBSSxlQUFlLEtBQUssQ0FBQztBQUFFLGtCQUFFLFVBQVUsS0FBSyxLQUFLLE1BQUssQ0FBQztBQUFBLG1CQUFNO0FBQUMsa0JBQUUsSUFBSTtBQUFFLG9CQUFJLElBQUUsSUFBSTtBQUFFLHFCQUFLLEtBQUssQ0FBQztBQUFFLG9CQUFJLElBQUUsRUFBRSxFQUFFLFNBQU87QUFBRyxxQkFBSSxFQUFFLEtBQUcsRUFBRSxPQUFPLE1BQUksRUFBQyxNQUFLLEVBQUUsSUFBRyxRQUFPLEVBQUUsR0FBRSxJQUFFLEVBQUUsT0FBTyxNQUFJLEVBQUMsTUFBSyxFQUFFLElBQUcsUUFBTyxFQUFFLEdBQUUsR0FBRSxFQUFFLEdBQUcsT0FBSztBQUFRLG9CQUFFLEtBQUssVUFBUSxFQUFFLE1BQU0sRUFBRTtBQUFHLHFCQUFJLEVBQUUsT0FBTyxRQUFNLEVBQUMsTUFBSyxFQUFFLEdBQUcsSUFBRyxRQUFPLEVBQUUsR0FBRyxHQUFFLEdBQUUsRUFBRSxPQUFLLElBQUcsRUFBRSxVQUFRO0FBQUMsc0JBQUksSUFBRSxFQUFFLEdBQUc7QUFBRyxzQkFBRyxNQUFJLE9BQUssTUFBSSxXQUFTLE1BQUk7QUFBVTtBQUFNLG9CQUFFLFFBQU0sRUFBRSxNQUFNLEVBQUU7QUFBQSxnQkFBRTtBQUFDLGtCQUFFLEtBQUssVUFBUTtBQUFHLHlCQUFRLEdBQUUsRUFBRTtBQUFRLHNCQUFHLElBQUUsRUFBRSxNQUFNLEdBQUUsRUFBRSxPQUFLLEtBQUk7QUFBQyxzQkFBRSxLQUFLLFdBQVMsRUFBRTtBQUFHO0FBQUEs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VyxJQUFFLEVBQUUsS0FBSyxXQUFTLEVBQUUsS0FBSyxTQUFTLE9BQUssRUFBRSxLQUFLLFNBQVMsT0FBSyxFQUFFLEtBQUssU0FBUyxNQUFJLEVBQUUsVUFBUyxFQUFFLEtBQUssV0FBUyxFQUFFLEtBQUssUUFBUSxLQUFLLEVBQUUsU0FBTyxNQUFJLEtBQUcsRUFBRSxLQUFLLFVBQVMsRUFBRSxLQUFLLFdBQVM7QUFBRyxnQkFBSSxJQUFFO0FBQUcsbUJBQU8sRUFBRSxTQUFPLGFBQVcsSUFBRSxFQUFFLEtBQUssUUFBTSxFQUFFLEtBQUssTUFBTSxPQUFLLEVBQUUsS0FBSyxNQUFNLE9BQUssRUFBRSxLQUFLLE1BQU0sTUFBSSxFQUFFLE9BQU0sSUFBRSxFQUFFLEtBQUssR0FBRSxFQUFFLEtBQUssUUFBTTtBQUFHLGdCQUFJLElBQUU7QUFBRyxnQkFBRyxPQUFPLEVBQUUsVUFBUSxhQUFXLElBQUUsRUFBRSxLQUFLLFNBQU8sRUFBRSxLQUFLLE9BQU8sT0FBSyxFQUFFLEtBQUssT0FBTyxPQUFLLEVBQUUsS0FBSyxPQUFPLE1BQUksRUFBRSxRQUFPLEVBQUUsS0FBSyxhQUFXLEVBQUUsS0FBSyxVQUFVLEtBQUssRUFBRSxTQUFPLE1BQUksSUFBRSxFQUFFLEtBQUssWUFBVSxJQUFHLEVBQUUsS0FBSyxXQUFTLEVBQUUsS0FBSyxRQUFRLEtBQUssRUFBRSxTQUFPLE1BQUksSUFBRSxJQUFFLEVBQUUsS0FBSyxVQUFTLElBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxLQUFLLFNBQU8sSUFBRyxFQUFFLEtBQUssRUFBRSxTQUFPO0FBQUUscUJBQU8sRUFBRSxXQUFXLEdBQUcsS0FBRyxFQUFFLFNBQVMsR0FBRyxJQUFFLElBQUUsRUFBRSxTQUFPLEVBQUUsV0FBUyxHQUFHLEdBQUUsQ0FBQyxHQUFFLE1BQUksR0FBRyxDQUFDLE1BQUksRUFBRSx1QkFBcUIsT0FBSSxFQUFFLFdBQVMsR0FBRyxDQUFDLEdBQUU7QUFBRyxnQkFBRyxFQUFFLFNBQU8sR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxNQUFN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LEdBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQyxJQUFHO0FBQUEsUUFBQztBQUFDLGlCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEVBQUUsUUFBTyxDQUFDLElBQUUsQ0FBQyxJQUFHLEVBQUUsSUFBRSxDQUFDLElBQUcsRUFBRSxHQUFFO0FBQUUsbUJBQVEsS0FBSztBQUFFLGdCQUFHO0FBQUMscUJBQU8sRUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLFlBQUMsU0FBTyxHQUFOO0FBQVMsa0JBQUUsS0FBRztBQUFBLFlBQUM7QUFBQyxjQUFHO0FBQUUsa0JBQU07QUFBQSxRQUFDO0FBQUMsaUJBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxjQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUMsR0FBRSxJQUFFLEdBQUc7QUFBRSxpQkFBTyxHQUFHLE9BQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFDLGlCQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLFVBQVUsU0FBTyxLQUFHLFVBQVUsT0FBSyxTQUFPLFVBQVUsS0FBRyxDQUFDLEdBQUUsRUFBQyxPQUFNLEVBQUMsSUFBRSxHQUFHO0FBQUUsaUJBQU8sR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQyxZQUFJLEtBQUcsRUFBQyxXQUFVLFdBQVUsV0FBVSxJQUFHLFVBQVMsSUFBRyxRQUFPLEdBQUU7QUFBRSxXQUFHLFVBQVEsRUFBQyxTQUFRLEVBQUMsS0FBSSxPQUFPLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUMsT0FBTSxHQUFFLENBQUMsR0FBRSxNQUFLLE9BQU8sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBQyxPQUFN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QUUsSUFBRSxHQUFHO0FBQUUsaUJBQU8sS0FBSyxDQUFDLEVBQUUsUUFBUSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxhQUFXLE1BQUksZ0JBQWMsT0FBTyxVQUFVLGVBQWUsS0FBSyxHQUFFLENBQUMsS0FBRyxPQUFPLGVBQWUsR0FBRSxHQUFFLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFFLEVBQUMsQ0FBQztBQUFBLFVBQUMsQ0FBQztBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHO0FBQUUsaUJBQU8sS0FBSyxDQUFDLEVBQUUsUUFBUSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxhQUFXLE1BQUksZ0JBQWMsT0FBTyxVQUFVLGVBQWUsS0FBSyxHQUFFLENBQUMsS0FBRyxPQUFPLGVBQWUsR0FBRSxHQUFFLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFFLEVBQUMsQ0FBQztBQUFBLFVBQUMsQ0FBQztBQUFFLGNBQUksSUFBRSxHQUFHO0FBQUUsaUJBQU8sS0FBSyxDQUFDLEVBQUUsUUFBUSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxhQUFXLE1BQUksZ0JBQWMsT0FBTyxVQUFVLGVBQWUsS0FBSyxHQUFFLENBQUMsS0FBRyxPQUFPLGVBQWUsR0FBRSxHQUFFLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFFLEVBQUMsQ0FBQztBQUFBLFVBQUMsQ0FBQztBQUFFLGNBQUksSUFBRSxHQUFHO0FBQUUsaUJBQU8sS0FBSyxDQUFDLEVBQUUsUUFBUSxTQUFTLEdBQUU7QUFBQyxrQkFBSSxhQUFXLE1BQUksZ0JBQWMsT0FBTyxVQUFVLGVBQWUsS0FBSyxHQUFFLENBQUMsS0FBRyxPQUFPLGVBQWUsR0FBRSxHQUFFLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLHFCQUFPLEVBQUU7QUFBQSxZQUFFLEVBQUMsQ0FBQztBQUFBLFVBQUMsQ0FBQztB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QUFRO0FBQUMsa0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsRUFBRTtBQUFnQixxQkFBTyxJQUFJLEVBQUUsVUFBUyxDQUFDLEVBQUUsS0FBSztBQUFBLFlBQUM7QUFBQSxZQUFDLFdBQVU7QUFBQyxxQkFBTyxLQUFLLEtBQUssU0FBUyxFQUFFLEtBQUs7QUFBQSxZQUFDO0FBQUEsWUFBQyxTQUFRO0FBQUMscUJBQU8sS0FBSyxLQUFLLE9BQU8sRUFBRSxLQUFLO0FBQUEsWUFBQztBQUFBLFlBQUMsSUFBSSxNQUFLO0FBQUMsa0JBQUksSUFBRSxLQUFLLEtBQUssVUFBVTtBQUFFLHFCQUFPLE1BQUksT0FBSyxFQUFFLGtCQUFnQixFQUFFLFNBQVM7QUFBQSxZQUFDO0FBQUEsWUFBQyxJQUFJLFNBQVE7QUFBQyxxQkFBTyxLQUFLLEtBQUssVUFBVTtBQUFBLFlBQUM7QUFBQSxZQUFDLElBQUksZ0JBQWU7QUFBQyxxQkFBTyxLQUFLLElBQUk7QUFBQSxZQUFLO0FBQUEsWUFBQyxJQUFJLGNBQWE7QUFBQyxxQkFBTyxLQUFLLElBQUk7QUFBQSxZQUFHO0FBQUEsWUFBQyxTQUFRO0FBQUMscUJBQU8sS0FBSztBQUFBLFlBQUc7QUFBQSxZQUFDLFVBQVUsR0FBRTtBQUFDLHFCQUFPLEVBQUUsRUFBRSxNQUFLLEtBQUssS0FBSyxPQUFPLENBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxRQUFRLEdBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUssS0FBSyxTQUFTLEdBQUUsRUFBRSxJQUFJO0FBQUEsWUFBQztBQUFBLFlBQUMsV0FBVTtBQUFDLHFCQUFPLEtBQUssS0FBSyxTQUFTO0FBQUEsWUFBQztBQUFBLFlBQUMsUUFBUSxHQUFFO0FBQUMsa0JBQUksSUFBRSxLQUFLLEtBQUssU0FBUztBQUFFLHFCQUFPLEVBQUUsU0FBTyxNQUFJLFVBQVEsTUFBSSxLQUFHLFFBQVEsS0FBSyxzQkFBc0IsT0FBTyxLQUFLLFVBQVUsQ0FBQyxHQUFFLHFDQUFxQyxFQUFFLE9BQU8sS0FB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QyxJQUFFLEVBQUUsTUFBTSxHQUFHLEdBQUU7QUFBRSxtQkFBTyxNQUFJLFNBQU8sSUFBRSxFQUFDLE1BQUssWUFBVyxLQUFJLEVBQUUsS0FBRyxJQUFJLEVBQUMsSUFBRSxFQUFFLE9BQUssTUFBSSxJQUFFLEVBQUMsTUFBSyxVQUFTLE1BQUssR0FBRSxLQUFJLEVBQUUsS0FBRyxJQUFJLEVBQUMsSUFBRSxJQUFFLEVBQUMsTUFBSyxXQUFVLE1BQUssR0FBRSxLQUFJLEVBQUUsS0FBRyxJQUFJLEVBQUMsR0FBRSxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU0sRUFBQyxNQUFLLFlBQVcsS0FBSSxFQUFFLEtBQUcsSUFBSSxFQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQU0sRUFBQyxNQUFLLFVBQVMsTUFBSyxHQUFFLEtBQUksRUFBRSxLQUFHLElBQUksRUFBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFNLEVBQUMsTUFBSyxXQUFVLE1BQUssR0FBRSxLQUFJLEVBQUUsS0FBRyxJQUFJLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLE9BQUssTUFBSSxFQUFFLEdBQUUsQ0FBQyxJQUFFLE1BQUksU0FBTyxFQUFFLENBQUMsSUFBRSxFQUFFLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFNLEVBQUMsTUFBSyxrQkFBaUIsTUFBSyxHQUFFLEtBQUksRUFBRSxLQUFHLElBQUksRUFBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUcsRUFBQyxVQUFTLEdBQUUsT0FBTSxFQUFDLElBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUcsR0FBRSxHQUFHLENBQUMsR0FBRSxJQUFFLENBQUMsR0FBRyxHQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRztBQUFFLG1CQUFPLElBQUksRUFBRSxxQkFBcUIsR0FBRSxHQUFFLEdBQUUsRUFBRSxLQUFHLElBQUksQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFHLE9BQU8sS0FBRyxVQUFTO0FBQUMsa0JBQUcsVUFBUztBQUFFLHVCQUFPO0FBQUU7QUFBQyxvQkFBRyxFQUFDLE1BQUssR0FBRSxNQUFLLEVBQUMsSUFBRSxFQUFFLEVBQUUsTUFBSyxFQUFFLFdBQVcsT0FBTyxDQUFDLEdBQUUsRUFBQyxVQUFTLEVBQUMsSUFBRSxFQUFFLENBQUM7QUFBRSx1QkFBTyxJQUFJLEVBQUUscUJBQXFCLENBQUMsR0FBRSxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRSxHQUFFLEdBQUUsRUFBRSxLQUFHLElBQUksQ0FBQztBQUFBLGNBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUcsRUFBQyxNQUFLLEdBQUUsTUFBSyxFQUFDLElBQUUsRUFBRSxHQUFFLEVBQUUsV0FBVyxPQUFPLENBQUM7QUFBRSxtQkFBTyxJQUFJLEVBQUUscUJBQXFCLEdBQUUsR0FBRSxHQUFFLEVBQUUsS0FBRyxJQUFJLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFNLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxVQUFTLEdBQUUsS0FBSSxFQUFFLEtBQUcsSUFBSSxFQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQU0sRUFBQyxNQUFLLFFBQU8sT0FBTSxLQUFHLENBQUMsR0FBRSxLQUFJLEVBQUUsS0FBRyxJQUFJLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFNLEVBQUMsTUFBSyxZQUFXLEtBQUksR0FBRSxPQUFNLEdBQUUsS0FBSSxFQUFFLEtBQUcsSUFBSSxFQUFDO0FBQUEsVUFBQztBQUFDLG1C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QUFBQyxnQkFBSSxJQUFFLEVBQUUsS0FBRyxPQUFLLEVBQUUsU0FBTyxJQUFFLElBQUU7QUFBRyxnQkFBRyxFQUFFLENBQUMsS0FBRyxFQUFFLFNBQU8sc0JBQW9CLENBQUMsS0FBRyxFQUFFLGVBQWM7QUFBQyxrQkFBSSxJQUFFLEVBQUU7QUFBTSxxQkFBTyxFQUFFLFFBQU0sRUFBRSxNQUFNLFFBQVEsSUFBRSxTQUFPLFdBQVUsRUFBRSxHQUFFLEVBQUUsZUFBYSxFQUFFLFVBQVEsR0FBRSxFQUFFO0FBQUEsWUFBWTtBQUFBLFVBQUM7QUFBQyxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHFEQUFxRCxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsT0FBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDO0FBQUUsY0FBSSxJQUFFLFdBQVU7QUFBQyxnQkFBSSxJQUFFLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFJLElBQUUsS0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSSxFQUFFLEVBQUUsTUFBSTtBQUFFO0FBQUMscUJBQU87QUFBQSxZQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRSxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxJQUFFLENBQUMsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFFLENBQUMsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRSxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxFQUFFLEdBQUUsSUFBRSxDQUFDLElBQUcsRUFBRSxHQUFFLElBQUUsQ0FBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLElBQUUsQ0FBQyxHQUFF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QUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLEdBQUUsQ0FBQyxJQUFHLENBQUMsR0FBRSxDQUFDLElBQUcsQ0FBQyxHQUFFLENBQUMsSUFBRyxDQUFDLENBQUMsR0FBRSxlQUFjLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsRUFBRSxTQUFPO0FBQUUsc0JBQU87QUFBQSxxQkFBUTtBQUFFLHlCQUFPLEVBQUUsSUFBRTtBQUFBLHFCQUFRO0FBQUUsdUJBQUssSUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUEscUJBQU87QUFBQSxxQkFBTztBQUFBLHFCQUFPO0FBQUEscUJBQU87QUFBQSxxQkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUcsdUJBQUssSUFBRSxFQUFFO0FBQUc7QUFBQSxxQkFBVztBQUFFLHVCQUFLLElBQUUsRUFBQyxNQUFLLG9CQUFtQixPQUFNLEVBQUUsYUFBYSxFQUFFLEVBQUUsR0FBRSxPQUFNLEVBQUUsV0FBVyxFQUFFLElBQUcsRUFBRSxFQUFFLEdBQUUsS0FBSSxFQUFFLFFBQVEsS0FBSyxFQUFFLEVBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUcsdUJBQUssSUFBRSxFQUFDLE1BQUssb0JBQW1CLFVBQVMsRUFBRSxJQUFHLE9BQU0sRUFBRSxJQUFHLEtBQUksRUFBRSxRQUFRLEtBQUssRUFBRSxFQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFHLHVCQUFLLElBQUUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFFLElBQUcsRUFBRSxJQUFFLElBQUcsRUFBRSxJQUFHLEtBQUssRUFBRTtBQUFFO0FBQUEscUJBQVc7QUFBRyx1QkFBSyxJQUFFLEVBQUMsTUFBSyxFQUFFLElBQUUsSUFBRyxRQUFPLEVBQUUsSUFBRSxJQUFHLE1BQUssRUFBRSxJQUFFLEdBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUcsdUJBQUssSUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFFLElBQUcsRUFBRSxJQUFFLElBQUcsRUFBRSxJQUFFLElBQUcsRUFBRSxJQUFHLE9BQUcsS0FBSyxFQUFFO0FBQUU7QUFBQSxxQkFBVztBQUFHLHVCQUFLLElBQUUsRUFBRSxhQUFhLEVBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRyxNQUFHLEtBQUssRUFBRTtBQUFFO0FBQUEscUJBQVc7QUFBRyx1QkFBSyxJQUFFLEVBQUMsTUFBSyxFQUFFLElBQUUsSUFBRyxNQUFLLEVBQUUsSUFBRSxJQUFHLFFBQU8sRUFBRSxJQUFFLElBQUcsTUFBSyxFQUFFLElBQUUsSUFBRyxhQUFZLEVBQUUsSUFBRSxJQUFHLE9BQU0sRUFBRSxXQUFXLEVBQUUsSUFBRSxJQUFHLEVBQUUsRUFBRSxFQUFDO0FBQUU7QUFBQSxxQkFBVztBQUFBLHFCQUFRO0FBQUcsdUJBQUssSUFBRSxFQUFDLE1BQUssRUFBRSxJQUFFLElBQUcsUUFBTyxFQUFFLElBQUUsSUFBRyxNQUFLLEVBQUUsSUFBRSxJQUFHLGFBQVksRUFBRSxJQUFFLElBQUcsT0FBTSxFQUFFLFdBQVcsRUFBRSxJQUFFLElBQUcsRUFBRSxFQUFFLEVBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUcsdUJBQUssSUFBRSxFQUFDLE9BQU0sRUFBRSxXQUFXLEVBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRSxFQUFFLEdBQUUsU0FBUSxFQUFFLEdBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUcsc0JBQUksSUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFFLElBQUcsRUFBRSxJQUFFLElBQUcsRUFBRSxJQUFHLEVBQUUsSUFBRyxPQUFHLEtBQUssRUFBRSxHQUFFLEtBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQyxHQUFFLEVBQUUsSUFBRSxHQUFHLEdBQUc7QUFBRSxxQkFBRyxVQUFRLE1BQUcsS0FBSyxJQUFFLEVBQUMsT0FBTSxFQUFFLElBQUUsR0FBRyxPQUFNLFNBQVEsSUFBRyxPQUFNLEtBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUcsdUJBQUssSUFBRSxFQUFDLE1BQUssRUFBRSxJQUFFLElBQUcsT0FBTSxFQUFFLFdBQVcsRUFBRSxJQUFFLElBQUcsRUFBRSxFQUFFLEVBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVE7QUFBRyx1QkFBSyxJQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRSxJQUFHLEVBQUUsV0FBVyxFQUFFLElBQUUsSUFBRyxFQUFFLEVBQUUsR0FBRSxLQUFLLEVBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUcsdUJBQUssSUFBRSxFQUFDLE1B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QUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFHLHVCQUFLLElBQUUsQ0FBQztBQUFFO0FBQUEscUJBQVc7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBRyxvQkFBRSxJQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUU7QUFBRTtBQUFBLHFCQUFXO0FBQUEscUJBQVE7QUFBRyx1QkFBSyxJQUFFLENBQUMsRUFBRSxFQUFFO0FBQUU7QUFBQTtBQUFBLFlBQU0sR0FBRSxPQUFNLENBQUMsRUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxHQUFFLEVBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxDQUFDLENBQUMsRUFBQyxHQUFFLEVBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxFQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsSUFBRyxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLENBQUMsR0FBRSxDQUFDLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFDLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLEVBQUMsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFDLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxJQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsSUFBRyxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLElBQUcsR0FBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLElBQUcsRUFBQyxDQUFDLEdBQUUsRUFBQyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLEVBQUMsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRSxFQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxJQUFHLElBQUcsRUFBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEVBQUMsSUFBRyxJQUFHLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxLQUFJLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFDLEdBQUUsRUFBRSxDQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsRUFBQyxJQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxHQUFFLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLEtBQUksSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEtBQUksSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsS0FBSSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUMsSUFBRyxJQUFHLENBQUMsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUMsR0FBRSxFQUFDLElBQUcsS0FBSSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxLQUFJLElBQUcsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLEVBQUMsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLEtBQUksSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEdBQUcsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxFQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxFQUFDLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsSUFBRyxFQUFDLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxHQUFHLEVBQUMsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxHQUFFLElBQUcsSUFBRyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxFQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxHQUFHLEdBQUUsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBRyxDQUFDLEdBQUUsR0FBRyxFQUFDLEdBQUUsRUFBQyxJQUFHLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxFQUFDLElBQUcsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFFLGdCQUFlLEVBQUMsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsSUFBRyxDQUFDLEdBQUUsRUFBRSxHQUFFLElBQUcsQ0FBQyxHQUFFLEVBQUUsR0FBRSxJQUFHLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsS0FBSSxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLFlBQVcsU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFO0FBQVkscUJBQUssTUFBTSxDQUFDO0FBQUEsbUJBQU07QUFBQyxvQkFBSSxJQUFFLElBQUksTUFBTSxDQUFDO0FBQUUsc0JBQU0sRUFBRSxPQUFLLEdBQUU7QUFBQSxjQUFDO0FBQUEsWUFBQyxHQUFFLE9BQU0sU0FBUyxHQUFFO0FBQUMsa0JBQUksSUFBRSxNQUFLLElBQUUsQ0FBQyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxDQUFDLElBQUksR0FBRSxJQUFFLENBQUMsR0FBRSxJQUFFLEtBQUssT0FBTSxJQUFFLElBQUcsSUFBRSxHQUFFLEtBQUcsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEVBQUUsTUFBTSxLQUFLLFdBQVUsQ0FBQyxHQUFFLElBQUUsT0FBTyxPQUFPLEtBQUssS0FBSyxHQUFFLEtB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O0FBQUcsMkJBQU8sS0FBSyxTQUFTLEdBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsMkJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU87QUFBQSx1QkFBUTtBQUFHLHlCQUFLLE1BQU0sRUFBRSxNQUFNLEdBQUUsS0FBSyxTQUFTLEdBQUUsS0FBSyxNQUFNLEtBQUs7QUFBRTtBQUFBLHVCQUFXO0FBQUcsMkJBQU8sS0FBSyxTQUFTLEdBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsMkJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBRztBQUFBLHVCQUFXO0FBQUcsMkJBQU8sS0FBSyxTQUFTLEdBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsMkJBQU8sS0FBSyxTQUFTLEdBQUU7QUFBRztBQUFBLHVCQUFXO0FBQUcsMkJBQU8sRUFBRSxTQUFPLEVBQUUsR0FBRSxDQUFDLEVBQUUsUUFBUSxRQUFPLEdBQUcsR0FBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRywyQkFBTyxFQUFFLFNBQU8sRUFBRSxHQUFFLENBQUMsRUFBRSxRQUFRLFFBQU8sR0FBRyxHQUFFO0FBQUc7QUFBQSx1QkFBVztBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPO0FBQUEsdUJBQVE7QUFBRywyQkFBTztBQUFBLHVCQUFRO0FBQUcsMkJBQU87QUFBQSx1QkFBUTtBQUFHLDJCQUFPLEVBQUUsU0FBTyxFQUFFLE9BQU8sUUFBUSxlQUFjLElBQUksR0FBRTtBQUFHO0FBQUEsdUJBQVc7QUFBRywyQkFBTTtBQUFBLHVCQUFl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LFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLFFBQU8sVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsTUFBSyxLQUFJLGVBQWMsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLE9BQU0sUUFBTyxPQUFNLFFBQU8sTUFBSyxhQUFZLE1BQUssYUFBWSxRQUFPLFVBQVMsS0FBSSxLQUFJLE9BQU0sVUFBUyxTQUFRLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLFVBQVMsVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLGFBQVksVUFBUyxXQUFVLFVBQVMsU0FBUSxVQUFTLFdBQVUsVUFBUyxXQUFVLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxZQUFXLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxXQUFVLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxpQkFBZ0IsVUFBUyxlQUFjLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLGNBQWEsVUFBUyxhQUFZLFVBQVMsZUFBYyxVQUFTLG1CQUFrQixVQUFTLG1CQUFrQixVQUFTLG9CQUFtQixVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsS0FBSSxXQUFVLFNBQVEsZ0JBQWUsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxRQUFPLE1BQUssYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssTUFBSyxVQUFTLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLHNCQUFxQixVQUFTLE1BQUssZ0JBQWUsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNB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LFFBQU8sVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxZQUFXLFVBQVMsYUFBWSxVQUFTLE9BQU0sVUFBUyxRQUFPLEtBQUksWUFBVyxVQUFTLFFBQU8sVUFBUyxhQUFZLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxRQUFPLEtBQUksUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLE1BQUssVUFBUyxNQUFLLEtBQUksT0FBTSxVQUFTLFFBQU8sVUFBUyxhQUFZLFVBQVMsY0FBYSxVQUFTLGNBQWEsVUFBUyxlQUFjLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxPQUFNLFVBQVMsbUJBQWtCLFVBQVMsdUJBQXNCLFVBQVMsT0FBTSxNQUFLLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxZQUFXLFVBQVMsVUFBUyxVQUFTLFFBQU8sUUFBTyxRQUFPLFVBQVMsUUFBTyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxNQUFLLGdCQUFlLFFBQU8sVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLElBQUcsVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxPQUFNLEtBQUksY0FBYSxVQUFTLGtCQUFpQixVQUFTLGtCQUFpQixVQUFTLGdCQUFlLFVBQVMsYUFBWSxVQUFTLG1CQUFrQixVQUFTLGNBQWEsVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsV0FBVSxVQUFTLFlBQVcsVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxLQUFJLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxXQUFVLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksS0FBSSxVQUFTLGNBQWEsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsZUFBYyxVQUFTLGdCQUFlLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxRQUFPLFVBQVMsZ0JBQWUsVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLGNBQWEsVUFBUyxXQUFVLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFFBQU8sUUFBTyxRQUFPLElBQUcsVUFBUyxPQUFNLFFBQU8sT0FBTSxRQUFPLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxRQUFPLEtBQUksVUFBUyxLQUFJLGFBQVksS0FBSSxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sSUFBRyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFlBQVcsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLElBQUcsVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxjQUFhLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxnQkFBZSxVQUFTLGdCQUFlLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxRQUFPLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLFlBQVcsVUFBUyxPQUFNLFFBQU8sT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxnQkFBZSxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLEtBQUksUUFBTyxLQUFJLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxLQUFJLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxNQUFLLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxrQkFBaUIsVUFBUyxjQUFhLFVBQVMsV0FBVSxVQUFTLFdBQVUsVUFBUyxXQUFVLFVBQVMscUJBQW9CLFVBQVMsZUFBYyxVQUFTLGFBQVksVUFBUyxtQkFBa0IsVUFBUyxtQkFBa0IsVUFBUyxtQkFBa0IsVUFBUyxnQkFBZSxVQUFTLFdBQVUsVUFBUyxpQkFBZ0IsVUFBUyxlQUFjLFVBQVMsZ0JBQWUsVUFBUyxnQkFBZSxVQUFTLGdCQUFlLFVBQVMsZ0JBQWUsVUFBUyxpQkFBZ0IsVUFBUyxtQkFBa0IsVUFBUyxxQkFBb0IsVUFBUyxpQkFBZ0IsVUFBUyxjQUFhLFVBQVMsU0FBUSxVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLGlCQUFnQixVQUFTLGNBQWEsVUFBUyxtQkFBa0IsVUFBUyxrQkFBaUIsVUFBUyxpQkFBZ0IsVUFBUyxpQkFBZ0IsVUFBUyxjQUFhLFVBQVMsZUFBYyxVQUFTLFlBQVcsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsTUFBSyxnQkFBZSxRQUFPLFVBQVMsWUFBVyxVQUFTLFNBQVEsVUFBUyxXQUFVLFVBQVMsWUFBVyxVQUFTLGtCQUFpQixVQUFTLGVBQWMsVUFBUyxhQUFZLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsZ0JBQWUsVUFBUyxXQUFVLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLElBQUcsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLFVBQVMsVUFBUyxZQUFXLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLGVBQWMsVUFBUyxlQUFjLFVBQVMsZUFBYyxVQUFTLG9CQUFtQixVQUFTLG9CQUFtQixVQUFTLG9CQUFtQixVQUFTLFlBQVcsVUFBUyxnQkFBZSxVQUFTLGdCQUFlLFVBQVMsZ0JBQWUsVUFBUyxlQUFjLFVBQVMsZ0JBQWUsVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLEtBQUksZ0JBQWUsVUFBUyxpQkFBZ0IsVUFBUyxLQUFJLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxNQUFLLEtBQUksUUFBTyxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxLQUFJLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLElBQUcsS0FBSSxJQUFHLEtBQUksSUFBRyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsV0FBVSxnQkFBZSxNQUFLLGdCQUFlLE1BQUss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QVMsSUFBRyxVQUFTLElBQUcsVUFBUyxLQUFJLEtBQUksUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLGdCQUFlLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLGdCQUFlLE1BQUssV0FBVSxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxNQUFLLGdCQUFlLE1BQUssV0FBVSxTQUFRLGdCQUFlLFFBQU8sVUFBUyxTQUFRLGdCQUFlLE9BQU0sZ0JBQWUsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFFBQU8sUUFBTyxRQUFPLE1BQUssVUFBUyxPQUFNLFFBQU8sT0FBTSxRQUFPLE1BQUssVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksTUFBSyxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sS0FBSSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssVUFBUyxzQkFBcUIsVUFBUyxnQkFBZSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxRQUFPLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsSUFBRyxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxNQUFLLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxVQUFTLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLGFBQVksVUFBUyxpQkFBZ0IsVUFBUyxNQUFLLFFBQU8sVUFBUyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLFdBQVUsVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsTUFBSyxLQUFJLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFdBQVUsUUFBTyxRQUFPLFFBQU8sU0FBUSxVQUFTLFNBQVEsVUFBUyxJQUFHLFFBQU8sZUFBYyxVQUFTLFVBQVMsVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLE9BQU0sUUFBTyxNQUFLLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLE1BQUssVUFBUyxhQUFZLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxvQkFBbUIsVUFBUyxlQUFjLFVBQVMsUUFBTyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLGNBQWEsVUFBUyxZQUFXLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxLQUFJLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLE1BQUssVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLGFBQVksVUFBUyxTQUFRLFVBQVMsT0FBTSxLQUFJLFNBQVEsVUFBUyxNQUFLLEtBQUksTUFBSyxLQUFJLE9BQU0sVUFBUyxNQUFLLGdCQUFlLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxXQUFVLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sS0FBSSxRQUFPLEtBQUksT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLEtBQUksS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsTUFBSyxVQUFTLEtBQUksUUFBTyxLQUFJLFFBQU8sZ0JBQWUsVUFBUyxvQkFBbUIsVUFBUyxzQkFBcUIsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLG1CQUFrQixVQUFTLGVBQWMsVUFBUyxZQUFXLFVBQVMsWUFBVyxVQUFTLFlBQVcsVUFBUyxxQkFBb0IsVUFBUyxnQkFBZSxVQUFTLGNBQWEsVUFBUyxvQkFBbUIsVUFBUyxvQkFBbUIsVUFBUyxvQkFBbUIsVUFBUyxpQkFBZ0IsVUFBUyxZQUFXLFVBQVMsa0JBQWlCLFVBQVMsZ0JBQWUsVUFBUyxpQkFBZ0IsVUFBUyxtQkFBa0IsVUFBUyxrQkFBaUIsVUFBUyxpQkFBZ0IsVUFBUyxlQUFjLFVBQVMsVUFBUyxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsa0JBQWlCLFVBQVMsZUFBYyxVQUFTLG9CQUFtQixVQUFTLG1CQUFrQixVQUFTLGtCQUFpQixVQUFTLGtCQUFpQixVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLGFBQVksVUFBUyxNQUFLLFVBQVMsY0FBYSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsY0FBYSxVQUFTLE1BQUssS0FBSSxRQUFPLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxhQUFZLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLEtBQUksT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxhQUFZLFVBQVMsU0FBUSxVQUFTLElBQUcsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE1BQUssUUFBTyxNQUFLLEtBQUksUUFBTyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsZ0JBQWUsVUFBUyxnQkFBZSxVQUFTLFVBQVMsVUFBUyxlQUFjLFVBQVMsaUJBQWdCLFVBQVMsY0FBYSxVQUFTLEtBQUksUUFBTyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsYUFBWSxVQUFTLGVBQWMsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxLQUFJLEtBQUksTUFBSyxhQUFZLE1BQUssYUFBWSxRQUFPLFVBQVMsV0FBVSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxnQkFBZSxPQUFNLFVBQVMsUUFBTyxnQkFBZSxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsWUFBVyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLG9CQUFtQixVQUFTLGNBQWEsVUFBUyxtQkFBa0IsVUFBUyxnQkFBZSxVQUFTLHFCQUFvQixVQUFTLGFBQVksVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxpQkFBZ0IsVUFBUyxhQUFZLFVBQVMsT0FBTSxRQUFPLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsV0FBVSxVQUFTLGFBQVksVUFBUyxXQUFVLFVBQVMsWUFBVyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxNQUFLLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxlQUFjLFVBQVMsb0JBQW1CLFVBQVMsZUFBYyxVQUFTLFFBQU8sVUFBUyxhQUFZLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsZUFBYyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxXQUFVLFVBQVMsV0FBVSxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxLQUFJLEtBQUksUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxRQUFPLFVBQVMsV0FBVSxVQUFTLFdBQVUsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxZQUFXLGdCQUFlLFdBQVUsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFFBQU8sT0FBTSxRQUFPLE9BQU0sVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLGdCQUFlLFVBQVMsWUFBVyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsT0FBTSxRQUFPLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksU0FBUSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsY0FBYSxVQUFTLGNBQWEsVUFBUyxnQkFBZSxVQUFTLFdBQVUsVUFBUyxlQUFjLFVBQVMsaUJBQWdCLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsV0FBVSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxrQkFBaUIsVUFBUyxtQkFBa0IsVUFBUyxRQUFPLFFBQU8sUUFBTyxRQUFPLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxRQUFPLE9BQU0sUUFBTyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxRQUFPLFFBQU8sUUFBTyxRQUFPLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLFFBQU8sVUFBUyxLQUFJLFlBQVcsVUFBUyxjQUFhLFVBQVMsa0JBQWlCLFVBQVMsT0FBTSxVQUFTLFdBQVUsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksWUFBVyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLGtCQUFpQixVQUFTLGFBQVksVUFBUyxhQUFZLFVBQVMsYUFBWSxVQUFTLGVBQWMsVUFBUyxlQUFjLFVBQVMsZ0JBQWUsVUFBUyxPQUFNLFVBQVMsZ0JBQWUsVUFBUyxpQkFBZ0IsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFlBQVcsVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxTQUFRLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxVQUFTLFVBQVMsWUFBVyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsV0FBVSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxjQUFhLGdCQUFlLGVBQWMsZ0JBQWUsY0FBYSxnQkFBZSxlQUFjLGdCQUFlLFVBQVMsVUFBUyxpQkFBZ0IsVUFBUyxrQkFBaUIsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLEtBQUksUUFBTyxVQUFTLE1BQUssS0FBSSxNQUFLLFVBQVMsYUFBWSxVQUFTLGNBQWEsS0FBSSxtQkFBa0IsVUFBUyxlQUFjLFVBQVMsZUFBYyxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksT0FBTSxVQUFTLE9BQU0sZ0JBQWUsT0FBTSxnQkFBZSxNQUFLLGFBQVksTUFBSyxhQUFZLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxRQUFPLGdCQUFlLFFBQU8sZ0JBQWUsUUFBTyxnQkFBZSxRQUFPLGdCQUFlLFFBQU8sVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksTUFBSyxhQUFZLE1BQUssYUFBWSxJQUFHLFVBQVMsSUFBRyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLE9BQU0sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFT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QyxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFHLEdBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO0FBQUUscUJBQU8sSUFBSSxFQUFFLHFCQUFxQixHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsS0FBSyxHQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE9BQUssTUFBSSxLQUFLLE9BQU8sR0FBRSxDQUFDLElBQUUsTUFBSSxTQUFPLEtBQUssS0FBSyxDQUFDLElBQUUsS0FBSyxJQUFJLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQSxZQUFDLEtBQUssR0FBRTtBQUFDLHFCQUFNLEVBQUMsTUFBSyxZQUFXLEtBQUksRUFBQztBQUFBLFlBQUM7QUFBQSxZQUFDLE9BQU8sR0FBRSxHQUFFO0FBQUMscUJBQU0sRUFBQyxNQUFLLFVBQVMsTUFBSyxHQUFFLEtBQUksRUFBQztBQUFBLFlBQUM7QUFBQSxZQUFDLElBQUksR0FBRSxHQUFFO0FBQUMscUJBQU0sRUFBQyxNQUFLLFdBQVUsTUFBSyxHQUFFLEtBQUksRUFBQztBQUFBLFlBQUM7QUFBQSxZQUFDLEtBQUssR0FBRSxHQUFFO0FBQUMscUJBQU0sRUFBQyxNQUFLLFFBQU8sT0FBTSxLQUFHLENBQUMsR0FBRSxLQUFJLEVBQUM7QUFBQSxZQUFDO0FBQUEsWUFBQyxLQUFLLEdBQUU7QUFBQyxrQkFBRyxFQUFDLEtBQUksR0FBRSxPQUFNLEdBQUUsS0FBSSxFQUFDLElBQUU7QUFBRSxxQkFBTSxFQUFDLE1BQUssWUFBVyxLQUFJLEdBQUUsT0FBTSxHQUFFLEtBQUksRUFBQztBQUFBLFlBQUM7QUFBQSxZQUFDLFFBQVEsR0FBRTtBQUFDLGtCQUFHLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxLQUFJLEVBQUMsSUFBRTtBQUFFLHFCQUFNLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxVQUFTLEdBQUUsS0FBSSxFQUFDO0FBQUEsWUFBQztBQUFBLFlBQUMsWUFBVztBQUFDLHFCQUFPLEtBQUssUUFBUSxFQUFDLE1BQUss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S0FBSyxNQUFNLE1BQU0sQ0FBQyxHQUFFLElBQUUsSUFBSSxFQUFFLENBQUM7QUFBRSxxQkFBTyxJQUFJLEVBQUUsS0FBSyxNQUFNLElBQUksQ0FBQyxHQUFFLEVBQUUsSUFBSSxPQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRSxLQUFLLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSztBQUFBLFlBQUM7QUFBQSxZQUFDLElBQUksT0FBTTtBQUFDLHFCQUFPLElBQUksRUFBRSxLQUFLLEtBQUs7QUFBQSxZQUFDO0FBQUEsVUFBQyxHQUFFLElBQUUsTUFBSztBQUFBLFlBQUMsWUFBWSxHQUFFO0FBQUMsbUJBQUssTUFBSTtBQUFBLFlBQUM7QUFBQSxZQUFDLFlBQVksR0FBRTtBQUFDLGtCQUFHLEVBQUMsS0FBSSxHQUFFLGFBQVksR0FBRSxVQUFTLEVBQUMsSUFBRSxHQUFFLElBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUUsQ0FBQyxNQUFLLENBQUMsSUFBRSxFQUFFLE1BQU0sR0FBRyxHQUFFLElBQUUsS0FBSyxZQUFZLEdBQUUsR0FBRSxFQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsV0FBVyxPQUFPLE9BQUcsRUFBRSxLQUFLLE9BQUssR0FBRyxFQUFFLElBQUksT0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUUsSUFBRSxFQUFFLFdBQVcsT0FBTyxPQUFHLEVBQUUsS0FBSyxPQUFLLEdBQUcsRUFBRSxJQUFJLE9BQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFVLElBQUksT0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUUsSUFBRSxLQUFLLElBQUksTUFBTSxFQUFFLFdBQVcsR0FBRSxJQUFFLElBQUksRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFNBQVMsSUFBSSxPQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRSxJQUFFLEtBQUssSUFBSSxRQUFRLFFBQVEsRUFBQyxhQUFZLEdBQUUsT0FBTSxHQUFFLGVBQWMsR0FBRSxXQUFVLEdBQUUsVUFBUyxF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R0FBRSxPQUFPLGVBQWUsR0FBRSxZQUFXLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLG1CQUFPLEVBQUU7QUFBQSxVQUFRLEVBQUMsQ0FBQyxHQUFFLE9BQU8sZUFBZSxHQUFFLE9BQU0sRUFBQyxZQUFXLE1BQUcsS0FBSSxXQUFVO0FBQUMsbUJBQU8sRUFBRTtBQUFBLFVBQUcsRUFBQyxDQUFDLEdBQUUsT0FBTyxlQUFlLEdBQUUsV0FBVSxFQUFDLFlBQVcsTUFBRyxLQUFJLFdBQVU7QUFBQyxtQkFBTyxFQUFFO0FBQUEsVUFBTyxFQUFDLENBQUMsR0FBRSxPQUFPLGVBQWUsR0FBRSxRQUFPLEVBQUMsWUFBVyxNQUFHLEtBQUksV0FBVTtBQUFDLG1CQUFPLEVBQUU7QUFBQSxVQUFJLEVBQUMsQ0FBQyxHQUFFLEVBQUUsUUFBTSxFQUFFLE1BQUksRUFBRSxRQUFNO0FBQU8sY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUcsQ0FBQztBQUFFLFlBQUUsUUFBTSxHQUFFLEVBQUUsTUFBSTtBQUFFLGNBQUksSUFBRSxFQUFFLEdBQUcsQ0FBQztBQUFFLFlBQUUsUUFBTTtBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsRUFBRSxHQUFHLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRztBQUFFLG1CQUFTLElBQUc7QUFBQyxnQkFBRyxPQUFPLFdBQVM7QUFBVyxxQkFBTztBQUFLLGdCQUFJLElBQUUsb0JBQUk7QUFBUSxtQkFBTyxJQUFFLFdBQVU7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LEVBQUUsU0FBUSxHQUFFLEVBQUUsYUFBYSxFQUFFLFFBQU8sRUFBRSxLQUFLLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsZUFBZSxTQUFPLEdBQUUsSUFBRSxFQUFFLENBQUMsSUFBRSxFQUFFLE1BQUssSUFBRSxFQUFFLE9BQUssR0FBRSxJQUFFLEVBQUUsZUFBZSxPQUFLLEdBQUUsSUFBRSxFQUFFLE9BQUssR0FBRSxJQUFFLEVBQUUsU0FBTyxJQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsU0FBTyxHQUFFLElBQUUsR0FBRyxPQUFPLEVBQUUsTUFBSyxHQUFHLEVBQUUsT0FBTyxHQUFFLEdBQUcsRUFBRSxPQUFPLEdBQUU7QUFBQSxDQUN6NUQsR0FBRSxJQUFFLEVBQUUsTUFBTSxjQUFjLEdBQUUsSUFBRSxFQUFFO0FBQUcsZ0JBQUcsRUFBRSxTQUFPLEtBQUk7QUFBQyx1QkFBUSxJQUFFLEtBQUssTUFBTSxJQUFFLEVBQUUsR0FBRSxJQUFFLElBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBRztBQUFHLGtCQUFFLEtBQUssRUFBRSxNQUFNLEdBQUUsSUFBRSxFQUFFLENBQUM7QUFBRSxxQkFBTyxJQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxHQUFFLElBQUUsQ0FBQyxFQUFFLElBQUksU0FBUyxHQUFFO0FBQUMsdUJBQU0sQ0FBQyxJQUFHLENBQUM7QUFBQSxjQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsS0FBSSxFQUFFLElBQUUsQ0FBQyxJQUFFLEdBQUcsR0FBRSxDQUFDLElBQUcsRUFBRSxJQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsbUJBQU8sSUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sSUFBRSxDQUFDLEdBQUUsRUFBRSxJQUFFLEVBQUUsR0FBRSxDQUFD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RSxFQUFFLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxXQUFVO0FBQUMscUJBQVMsRUFBRSxHQUFFO0FBQUMsa0JBQUksSUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUk7QUFBRSxtQkFBSyxTQUFPLEdBQUUsS0FBSyxZQUFVLEdBQUUsS0FBSyxRQUFNLEdBQUUsS0FBSyxPQUFLLEdBQUUsS0FBSyxZQUFVO0FBQUEsWUFBQztBQUFDLGdCQUFJLElBQUUsRUFBRTtBQUFVLG1CQUFPLEVBQUUsVUFBUSxXQUFVO0FBQUMsbUJBQUssWUFBVSxLQUFLO0FBQU0sa0JBQUksSUFBRSxLQUFLLFFBQU0sS0FBSyxVQUFVO0FBQUUscUJBQU87QUFBQSxZQUFDLEdBQUUsRUFBRSxZQUFVLFdBQVU7QUFBQyxrQkFBSSxJQUFFLEtBQUs7QUFBTSxrQkFBRyxFQUFFLFNBQU8sRUFBRSxVQUFVO0FBQUksbUJBQUU7QUFBQyxzQkFBSTtBQUFFLHVCQUFHLElBQUUsRUFBRSxVQUFRLFFBQU0sTUFBSSxTQUFPLElBQUUsRUFBRSxPQUFLLEVBQUUsTUFBSyxDQUFDO0FBQUEsZ0JBQUMsU0FBTyxFQUFFLFNBQU8sRUFBRSxVQUFVO0FBQVMscUJBQU87QUFBQSxZQUFDLEdBQUU7QUFBQSxVQUFDLEVBQUU7QUFBRSxZQUFFLFFBQU07QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxtQkFBTyxNQUFJLEVBQUUsVUFBVSxRQUFNLE1BQUksRUFBRSxVQUFVLFVBQVEsTUFBSSxFQUFFLFVBQVUsT0FBSyxNQUFJLEVBQUUsVUFBVSxXQUFTLE1BQUksRUFBRSxVQUFVLFdBQVMsTUFBSSxFQUFFLFVBQVUsVUFBUSxNQUFJLEVBQUUsVUFBVSxTQUFPLE1BQUksRUFBRSxVQUFVLFVBQVEsTUFBSSxFQUFFLFVBQVUsTUFBSSxNQUFJLEVBQUUsVUFBVSxhQUFXLE1BQUksRUFBRSxVQUFVLGFBQVcsTUFBSSxFQUFFLFVBQVUsV0FBUyxNQUFJLEVBQUUsVUFBVSxRQUFNLE1BQUksRUFBRSxVQUFVO0FBQUEsVUFBTztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLE1BQU0sQ0FBQyxJQUFFLEVBQUUsVUFBVSxNQUFJLElBQUUsTUFBSSxLQUFLLFVBQVUsT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFFLE9BQU8sUUFBUSxPQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsWUFBWSxHQUFHLE1BQU0sRUFBRSxHQUFFLEdBQUc7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsTUFBSyxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsS0FBSSxJQUFFLEtBQUc7QUFBQyxrQkFBSSxJQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUUsSUFBRSxFQUFFLE1BQUssSUFBRSxJQUFFLElBQUUsRUFBRTtBQUFVLHNCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBVztBQUFBLHFCQUFPO0FBQUEscUJBQVE7QUFBRyxvQkFBRTtBQUFFO0FBQUEscUJBQWM7QUFBRyxvQkFBRSxHQUFFLEVBQUUsRUFBRSxNQUFLLEVBQUUsWUFBVTtBQUFFO0FBQUEscUJBQWM7QUFBRyxvQkFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLEtBQUcsS0FBRyxJQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsTUFBSyxFQUFFLFlBQVU7QUFBRTtBQUFBLHFCQUFjO0FBQUcseUJBQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLE1BQUssR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFPLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsUUFBTyxHQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEtBQUksR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFPLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxTQUFRLEdBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsU0FBUSxHQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcsc0JBQUcsRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLE1BQUksRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJO0FBQUcsMkJBQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLFFBQU8sR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBRTtBQUFBLHFCQUFXO0FBQUcseUJBQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLE9BQU0sR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFPLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxRQUFPLEdBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsSUFBRyxHQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUcseUJBQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLFdBQVUsR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFHLHlCQUFPLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxXQUFVLEdBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBSSx5QkFBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsU0FBUSxHQUFFLElBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUkseUJBQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLE1BQUssR0FBRSxJQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFJLHlCQUFPLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxTQUFRLEdBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEscUJBQU87QUFBRyx5QkFBTyxFQUFFLFdBQVcsSUFBRSxDQUFDLE1BQUksTUFBSSxFQUFFLFdBQVcsSUFBRSxDQUFDLE1BQUksS0FBRyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLElBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxxQkFBTztBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUcseUJBQU8sRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBLHFCQUFPO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVE7QUFBQSxxQkFBUTtBQUFBLHFCQUFRO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBQSxxQkFBUztBQUFBLHFCQUFTO0FBQUEscUJBQVM7QUFBSSx5QkFBTyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFBO0FBQUUscUJBQU0sR0FBRSxFQUFFLGFBQWEsR0FBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFDLGdCQUFJLElBQUUsRUFBRSxNQUFLLElBQUUsSUFBRSxJQUFFLEVBQUU7QUFBVSxtQkFBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsS0FBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sSUFBRSxNQUFJLE1BQUksS0FBRyxNQUFJLE1BQUksTUFBSSxLQUFHLHdDQUF3QyxPQUFPLEVBQUUsQ0FBQyxHQUFFLEdBQUcsSUFBRSxNQUFJLEtBQUcsbUZBQWlGLHlDQUF5QyxPQUFPLEVBQUUsQ0FBQyxHQUFFLEdBQUc7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsTUFBSyxHQUFFLElBQUU7QUFBRTtBQUFHLGtCQUFFLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFBQSxtQkFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFJLElBQUUsTUFBSSxNQUFJO0FBQUksbUJBQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLFNBQVEsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUUsTUFBTSxJQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsTUFBSyxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUU7QUFBRyxnQkFBRyxNQUFJLE9BQUssSUFBRSxFQUFFLFdBQVcsRUFB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LENBQUMsR0FBRSxHQUFHLENBQUM7QUFBRSxvQkFBSSxNQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsTUFBSyxFQUFFLFlBQVUsS0FBRyxNQUFJLE1BQUksRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLEtBQUcsS0FBRyxJQUFFLEVBQUUsR0FBRSxFQUFFLEVBQUUsTUFBSyxFQUFFLFlBQVUsS0FBRyxNQUFJLE1BQUksRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLE1BQUksRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLE1BQUksRUFBRSxXQUFXLElBQUUsQ0FBQyxNQUFJLE1BQUksS0FBRyxFQUFFLE1BQU0sR0FBRSxDQUFDLElBQUUsT0FBTSxLQUFHLEdBQUUsSUFBRSxLQUFHLEVBQUU7QUFBQSxZQUFDO0FBQUMsbUJBQU0sR0FBRSxFQUFFLGFBQWEsR0FBRSxHQUFFLHNCQUFzQjtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLENBQUMsS0FBRyxLQUFHLEVBQUUsQ0FBQyxLQUFHLElBQUUsRUFBRSxDQUFDLEtBQUcsSUFBRSxFQUFFLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sS0FBRyxNQUFJLEtBQUcsS0FBRyxJQUFFLEtBQUcsS0FBRyxNQUFJLEtBQUcsS0FBRyxJQUFFLEtBQUcsS0FBRyxNQUFJLEtBQUcsTUFBSSxJQUFFLEtBQUc7QUFBQSxVQUFFO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLEVBQUUsTUFBSyxJQUFFLEVBQUUsUUFBTyxJQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsTUFBSSxLQUFHLENBQUMsTUFBTSxJQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFBSSxNQUFJLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxLQUFHO0FBQU0sZ0JBQUU7QUFBRSxtQkFBTyxJQUFJLEVB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QUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxVQUFVO0FBQUssV0FBRyxVQUFRLEtBQUcsR0FBRyxLQUFLLEVBQUUsSUFBRSxXQUFVO0FBQUMsaUJBQU8sR0FBRyxNQUFNLElBQUcsU0FBUztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxRQUFJO0FBQUM7QUFBYSxZQUFJLEtBQUcsQ0FBQyxFQUFFLHNCQUFxQixLQUFHLE9BQU8sMEJBQXlCLEtBQUcsTUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFDLEdBQUUsRUFBQyxHQUFFLENBQUM7QUFBRSxXQUFHLElBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsR0FBRyxNQUFLLENBQUM7QUFBRSxpQkFBTSxDQUFDLENBQUMsS0FBRyxFQUFFO0FBQUEsUUFBVSxJQUFFO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxpQkFBTSxFQUFDLFlBQVcsRUFBRSxJQUFFLElBQUcsY0FBYSxFQUFFLElBQUUsSUFBRyxVQUFTLEVBQUUsSUFBRSxJQUFHLE9BQU0sRUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxTQUFTLFdBQVUsS0FBRyxHQUFHLE1BQUssS0FBRyxHQUFHLE1BQUssS0FBRyxNQUFJLEdBQUcsS0FBSyxJQUFHLEVBQUU7QUFBRSxXQUFHLFVBQVEsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLEdBQUcsQ0FBQztBQUFBLFFBQUMsSUFBRSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxLQUFHLFdBQVU7QUFBQyxtQkFBTyxHQUFHLE1BQU0sR0FBRSxTQUFTO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtB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RSxFQUFFLEdBQUcsS0FBRyxHQUFHO0FBQUssU0FBQyxNQUFJLE9BQUssS0FBRyxHQUFHLE1BQU0sYUFBYSxJQUFHLENBQUMsTUFBSSxHQUFHLE1BQUksUUFBTSxLQUFHLEdBQUcsTUFBTSxlQUFlLEdBQUUsT0FBSyxLQUFHLENBQUMsR0FBRztBQUFNLFdBQUcsVUFBUTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUc7QUFBRSxXQUFHLFVBQVEsQ0FBQyxDQUFDLE9BQU8seUJBQXVCLENBQUMsR0FBRyxXQUFVO0FBQUMsY0FBSSxJQUFFLE9BQU87QUFBRSxpQkFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFHLEVBQUUsT0FBTyxDQUFDLGFBQVksV0FBUyxDQUFDLE9BQU8sUUFBTSxNQUFJLEtBQUc7QUFBQSxRQUFFLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLE1BQUksQ0FBQyxPQUFPLFFBQU0sT0FBTyxPQUFPLFlBQVU7QUFBQSxNQUFRLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQU8sV0FBRyxVQUFRLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sT0FBTyxLQUFHO0FBQUEsUUFBUSxJQUFFLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLFFBQVE7QUFBRSxpQkFBTyxHQUFHLENBQUMsS0FBRyxHQUFHLEVBQUUsV0FBVSxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FB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QU8sV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxDQUFDLEVBQUUsY0FBYztBQUFFLFdBQUcsVUFBUSxPQUFPLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxHQUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRSxLQUFHLEtBQUssT0FBTyxHQUFFLEtBQUcsR0FBRyxHQUFHLFFBQVE7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU0sYUFBVyxNQUFJLFNBQU8sS0FBRyxLQUFHLE9BQUssR0FBRyxFQUFFLEtBQUcsSUFBRyxFQUFFO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBSyxHQUFFLEtBQUcsR0FBRyxRQUFPLEtBQUcsTUFBSSxHQUFHLEtBQUksS0FBRyxLQUFHLEtBQUcsTUFBSSxHQUFHLGlCQUFlO0FBQUcsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUcsQ0FBQyxHQUFHLElBQUcsQ0FBQyxLQUFHLEVBQUUsTUFBSSxPQUFPLEdBQUcsTUFBSSxXQUFVO0FBQUMsZ0JBQUksSUFBRSxZQUFVO0FBQUUsa0JBQUksR0FBRyxJQUFHLENBQUMsSUFBRSxHQUFHLEtBQUcsR0FBRyxLQUFHLE1BQUksS0FBRyxH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QUcsR0FBRSxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLElBQUcsQ0FBQztBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxJQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUMsS0FBRyxDQUFDO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxJQUFHLENBQUM7QUFBQSxRQUFDLE1BQUksS0FBRyxHQUFHLE9BQU8sR0FBRSxHQUFHLE1BQUksTUFBRyxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRyxHQUFHLEdBQUUsRUFBRTtBQUFFLGtCQUFNLElBQUksR0FBRyxFQUFFO0FBQUUsaUJBQU8sRUFBRSxTQUFPLEdBQUUsR0FBRyxHQUFFLElBQUcsQ0FBQyxHQUFFO0FBQUEsUUFBQyxHQUFFLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFFLEVBQUUsSUFBRSxFQUFFLE1BQUksQ0FBQztBQUFBLFFBQUMsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRSxFQUFFO0FBQUEsUUFBQztBQUFHLFlBQUksSUFBRyxJQUFHLElBQUcsSUFBRztBQUFHLFdBQUcsVUFBUSxFQUFDLEtBQUksSUFBRyxLQUFJLElBQUcsS0FBSSxJQUFHLFNBQVEsSUFBRyxXQUFVLEdBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUVDLE1BQUcsR0FBRyxHQUFFLEtBQUcsU0FBUyxXQUFVLEtBQUcsTUFBSSxPQUFPLDBCQUF5QixLQUFHQSxJQUFHLElBQUcsTUFBTSxHQUFFLEtBQUcsTUFBSSxXQUFVO0FBQUEsUUFBQyxFQUFFLFNBQU8sYUFBWSxLQUFHLE9BQUssQ0FBQyxNQUFJLE1BQUksR0FBRyxJQUFHLE1BQU0sRUFBRTtBQUFjLFdBQUcsVUFBUSxFQUFDLFFBQU8sSUFBRyxRQUFPLElBQUcsY0FBYSxHQUFFO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxFQUFFLGNBQWEsS0FBRyxHQUFHLEtBQUksS0FBRyxHQUFHLFNBQVEsS0FBRyxPQUFPLE1BQU0sRUFBRSxNQUFNLFFBQVE7QUFBRSxTQUFDLEdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxjQUFJLElBQUUsSUFBRSxDQUFDLENBQUMsRUFBRSxTQUFPLE9BQUcsSUFBRSxJQUFFLENBQUMsQ0FBQyxFQUFFLGFBQVcsT0FBRyxJQUFFLElBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBWSxPQUFHLElBQUUsS0FBRyxFQUFFLFNBQU8sU0FBTyxFQUFFLE9BQUssR0FBRTtBQUFFLGNBQUcsR0FBRyxDQUFDLE1BQUksT0FBTyxDQUFDLEVBQUUsTUFBTSxHQUFFLENBQUMsTUFBSSxjQUFZLElBQUUsTUFBSSxPQUFPLENBQUMsRUFBRSxRQUFRLHNCQUFxQixJQUFJLElBQUUsT0FBTSxDQUFDLEdBQUcsR0FBRSxNQUFNLEtBQUcsTUFBSSxFQUFFLFNBQU8sTUFBSSxHQUFHLEdBQUUsUUFBTyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRSxFQUFFLFdBQVMsRUFBRSxTQUFPLEdBQUcsS0FBSyxPQUFPLEtBQUcsV0FBUyxJQUFFLEVBQUUsS0FBSSxNQUFJLElBQUc7QUFBQyxnQkFBRSxFQUFFLEtBQUcsSUFBRSxHQUFHLEdBQUUsQ0FBQztBQUFFO0FBQUEsVUFBTTtBQUFNLGdCQUFFLENBQUMsS0FBRyxFQUFFLE9BQUssSUFBRSxRQUFJLE9BQU8sRUFBRTtBQUFHLGNBQUUsRUFBRSxLQUFHLElBQUUsR0FBRyxHQUFFLEdBQUUsQ0FBQztBQUFBLFFBQUMsR0FBRyxTQUFTLFdBQVUsWUFBVyxXQUFVO0FBQUMsaUJBQU8sR0FBRyxJQUFJLEtBQUcsR0FBRyxJQUFJLEVBQUUsVUFBUSxHQUFHLElBQUk7QUFBQSxRQUFDLENBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxLQUFLLE1BQUssS0FBRyxLQUFLO0FBQU0sV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxDQUFDO0FBQUUsaUJBQU8sTUFBSSxLQUFHLE1BQUksSUFBRSxLQUFHLElBQUUsSUFBRSxLQUFHLElBQUksQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxLQUFLLEtBQUksS0FBRyxLQUFLO0FBQUksV0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsQ0FBQztBQUFFLGlCQUFPLElBQUUsSUFBRSxHQUFHLElBQUUsR0FBRSxDQUFDLElBQUUsR0FBRyxHQUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsS0FBSztBQUFJLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxJQUFFLElBQUUsR0FBRyxHQUFHLENBQUMsR0FBRSxnQkFBZ0IsSUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsRUFBRSxNQUFNO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGlCQUFPLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFO0FBQUUsZ0JBQUcsS0FBRyxLQUFHLEdBQUU7QUFBQyxxQkFBSyxJQUFFO0FBQUcsb0JBQUcsSUFBRSxFQUFFLE1BQUssS0FBRztBQUFFLHlCQUFNO0FBQUEsWUFBRTtBQUFNLHFCQUFLLElBQUUsR0FBRTtBQUFJLHFCQUFJLEtBQUcsS0FBSyxNQUFJLEVBQUUsT0FBSztBQUFFLHlCQUFPLEtBQUcsS0FBRztBQUFFLG1CQUFNLENBQUMsS0FBRztBQUFBLFVBQUU7QUFBQSxRQUFDO0FBQUUsV0FBRyxVQUFRLEVBQUMsVUFBUyxHQUFHLElBQUUsR0FBRSxTQUFRLEdBQUcsS0FBRSxFQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxFQUFFLFNBQVEsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLENBQUMsR0FBRTtBQUFFLGVBQUksS0FBSztBQUFFLGFBQUMsR0FBRyxJQUFHLENBQUMsS0FBRyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUUsaUJBQUssRUFBRSxTQUFPO0FBQUcsZUFBRyxHQUFFLElBQUUsRUFBRSxJQUFJLE1BQUksQ0FBQyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEdBQUcsR0FBRSxDQUFDO0FBQUcsaUJBQU87QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsQ0FBQyxlQUFjLGtCQUFpQixpQkFBZ0Isd0JBQXVCLGtCQUFpQixZQUFXLFNBQVM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxRQUFJO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsT0FBTyxVQUFTLFdBQVc7QUFBRSxXQUFHLElBQUUsT0FBTyx1QkFBcUIsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFFLEVBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsUUFBSTtBQUFDLFdBQUcsSUFBRSxPQUFPO0FBQUEsTUFBcUIsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsQ0FBQyxFQUFFLE1BQU07QUFBRSxXQUFHLFVBQVEsR0FBRyxXQUFVLFNBQVMsS0FBRyxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUUsSUFBRSxHQUFHO0FBQUUsaUJBQU8sSUFBRSxHQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsSUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBUSxJQUFFLEdBQUcsQ0FBQyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsZ0JBQUksSUFBRSxFQUFFO0FBQUcsYUFBQyxHQUFHLEdBQUUsQ0FBQyxLQUFHLEVBQUUsS0FBRyxHQUFHLEdBQUUsQ0FBQyxNQUFJLEVBQUUsR0FBRSxHQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLG1CQUFrQixLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLEdBQUcsR0FBRyxDQUFDO0FBQUcsaUJBQU8sS0FBRyxLQUFHLE9BQUcsS0FBRyxLQUFHLFFBQUcsR0FBRyxDQUFDLElBQUUsR0FBRyxDQUFDLElBQUUsQ0FBQyxDQUFDO0FBQUEsUUFBQyxHQUFFLEtBQUcsR0FBRyxZQUFVLFNBQVMsR0FBRTtBQUFDLGlCQUFPLE9BQU8sQ0FBQyxFQUFFLFFBQVEsSUFBRyxHQUFHLEVBQUUsWUFBWTtBQUFBLFFBQUMsR0FBRSxLQUFHLEdBQUcsT0FBSyxDQUFDLEdBQUUsS0FBRyxHQUFHLFNBQU8sS0FBSSxLQUFHLEdBQUcsV0FBUztBQUFJLFdBQUcsVUFBUTtBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLE1BQUssR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUUsY0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLElBQUUsR0FBRyxNQUFJLEdBQUcsR0FB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QUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsRUFBQyxRQUFPLFNBQVEsT0FBTSxLQUFFLEdBQUUsRUFBQyxTQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLElBQUksR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFO0FBQUUsaUJBQU8sR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsVUFBVSxTQUFPLElBQUUsVUFBVSxLQUFHLE1BQU0sR0FBRTtBQUFBLFFBQUMsRUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsQ0FBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsVUFBVSxHQUFFLEtBQUcsTUFBTTtBQUFVLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxNQUFJLFdBQVMsR0FBRyxVQUFRLEtBQUcsR0FBRyxRQUFNO0FBQUEsUUFBRTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsVUFBVTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFHLEtBQUc7QUFBSyxtQkFBTyxHQUFHLEdBQUUsRUFBRSxLQUFHLEdBQUcsR0FBRSxZQUFZLEtBQUcsR0FBRyxHQUFHLENBQUM7QUFBQSxRQUFFO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFVLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxVQUFVLFNBQU8sSUFBRSxHQUFHLENBQUMsSUFBRTtBQUFFLGNBQUcsR0FBRyxDQUFDO0FBQUUsbUJBQU8sR0FBRyxHQUFHLEdBQUUsQ0FBQyxDQUFDO0FBQUUsZ0JBQU0sR0FBRyxHQUFHLENBQUMsSUFBRSxrQkFBa0I7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsY0FBSSxHQUFFO0FBQUUsYUFBRyxDQUFDO0FBQUUsY0FBRztBQUFDLGdCQUFHLElBQUUsR0FBRyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUU7QUFBQyxrQkFBRyxNQUFJO0FBQVEsc0JBQU07QUFBRSxxQkFBTztBQUFBLFlBQUM7QUFBQyxnQkFBRSxHQUFHLEdBQUUsQ0FBQztBQUFBLFVBQUMsU0FBTyxHQUFOO0FBQVMsZ0JBQUUsTUFBRyxJQUFFO0FBQUEsVUFBQztBQUFDLGNBQUcsTUFBSTtBQUFRLGtCQUFNO0FBQUUsY0FBRztBQUFFLGtCQUFNO0FBQUUsaUJBQU8sR0FBRyxDQUFDLEdBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcs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O0FBQUcsa0JBQUcsSUFBRSxNQUFJLElBQUUsRUFBRSxFQUFFLFNBQU8sSUFBRztBQUFDLHVCQUFLLEVBQUUsSUFBRSxFQUFFO0FBQVEsc0JBQUcsRUFBRSxLQUFHO0FBQUUsMkJBQU0sRUFBQyxNQUFLLElBQUUsR0FBRSxRQUFPLEtBQUcsRUFBRSxJQUFFLE1BQUksS0FBRyxHQUFFLFFBQU8sRUFBQztBQUFBLGNBQUM7QUFBQyxxQkFBTSxDQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUUsR0FBRTtBQUFDLGtCQUFJLElBQUUsS0FBRyxFQUFFLE1BQUssSUFBRSxLQUFHLEVBQUUsUUFBTztBQUFFLHFCQUFNLENBQUMsTUFBTSxDQUFDLEtBQUcsQ0FBQyxNQUFNLENBQUMsS0FBRyxJQUFFLEtBQUssTUFBSSxLQUFHLEVBQUUsSUFBRSxNQUFJLEtBQUcsSUFBRSxLQUFHLElBQUcsSUFBRSxNQUFJLElBQUUsRUFBRSxFQUFFLFNBQU8sS0FBRyxJQUFFO0FBQUEsWUFBRTtBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLDRDQUE0QyxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUUsR0FBRSxFQUFFLFVBQVE7QUFBRSxjQUFJLElBQUU7QUFBSyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFPO0FBQUUscUJBQVMsRUFBRSxHQUFFO0FBQUMsdUJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFRLENBQUMsR0FBRSxJQUFFLEVBQUUsSUFBRyxJQUFFLENBQUMsR0FBRSxHQUFFLE1BQUk7QUFBSSxrQkFBRSxLQUFLLEVBQUUsTUFBTSxHQUFFLENBQUMsQ0FBQyxHQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxPQUFPLENBQUMsSUFBRyxDQUFDLEtBQUcsRUFBRSxRQUFRLENBQUMsTUFBSSxPQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQVEsR0FBRSxJQUFFLENBQUM7QUFBRSxxQkFBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFFLEVBQUUsS0FBSyxFQUFFO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLG9EQUFvRCxHQUFFLEdBQUU7QUFBQyxZQUFFLFVBQVEsRUFBQyxPQUFNLFFBQU8sS0FBSSxLQUFJLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sS0FBSSxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxJQUFHLEtBQUksUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLElBQUcsS0FBSSxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxNQUFLLFFBQU8sTUFBSyxLQUFJLEtBQUksUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxRQUFPLE9BQU0sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLEtBQUksS0FBSSxPQUFNLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLFFBQU8sUUFBTyxLQUFJLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLEtBQUksUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sSUFBRyxLQUFJLFFBQU8sUUFBTyxPQUFNLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxJQUFHLEtBQUksTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLEtBQUksUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE1BQUssUUFBTyxRQUFPLFFBQU8sUUFBTyxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLE9BQU0sUUFBTyxNQUFLLEtBQUksT0FBTSxRQUFPLEtBQUksUUFBTyxNQUFLLFFBQU8sS0FBSSxRQUFPLE1BQUssUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxPQUFNLFFBQU8sT0FBTSxRQUFPLFFBQU8sUUFBTyxPQUFNLFFBQU8sUUFBTyxRQUFPLEtBQUksUUFBTyxNQUFLLFFBQU8sUUFBTyxRQUFPLEtBQUksUUFBTyxNQUFLLE9BQU07QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHNEQUFzRCxHQUFFLEdBQUU7QUFBQyxZQUFFLFVBQVEsRUFBQyxHQUFFLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFNBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLG1DQUFtQyxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUUsR0FBRSxFQUFFLFVBQVE7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLE9BQU8sS0FBRyxXQUFTLEVBQUUsV0FBVyxDQUFDLElBQUU7QUFBRSxtQkFBTyxLQUFHLE1BQUksS0FBRztBQUFBLFVBQUU7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHVDQUF1QyxHQUFFLEdBQUU7QUFBQztBQUFhLFlB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QUFNLFVBQVMsWUFBVyxVQUFTLGdCQUFlLFVBQVMsWUFBVyxVQUFTLE1BQUssYUFBWSxXQUFVLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxPQUFNLFFBQU8sUUFBTyxRQUFPLE1BQUssVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sT0FBTSxRQUFPLEtBQUksVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLE9BQU0sUUFBTyxRQUFPLFFBQU8sT0FBTSxVQUFTLFVBQVMsS0FBSSxZQUFXLFVBQVMsY0FBYSxVQUFTLGtCQUFpQixVQUFTLE9BQU0sVUFBUyxXQUFVLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxTQUFRLFVBQVMsWUFBVyxVQUFTLGtCQUFpQixVQUFTLGFBQVksVUFBUyxlQUFjLFVBQVMsT0FBTSxVQUFTLFlBQVcsVUFBUyxTQUFRLFVBQVMsYUFBWSxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxLQUFJLFFBQU8sTUFBSyxRQUFPLE9BQU0sVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsYUFBWSxVQUFTLGNBQWEsS0FBSSxtQkFBa0IsVUFBUyxlQUFjLFVBQVMsZUFBYyxVQUFTLEtBQUksYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLEtBQUksYUFBWSxJQUFHLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFFBQU8sUUFBTyxRQUFPLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLE1BQUssYUFBWSxNQUFLLGFBQVksTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsZ0JBQWUsVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxNQUFLLGFBQVksT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFVBQVMsSUFBRyxVQUFTLEtBQUksZ0JBQWUsS0FBSSxVQUFTLE1BQUssUUFBTyxPQUFNLFFBQU8sTUFBSyxRQUFPLE9BQU0sUUFBTyxLQUFJLFVBQVMsTUFBSyxRQUFPLE9BQU0sUUFBTyxJQUFHLFVBQVMsS0FBSSxhQUFZLE9BQU0sUUFBTyxRQUFPLFFBQU8sU0FBUSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxJQUFHLEtBQUksS0FBSSxLQUFJLEtBQUksVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxTQUFRLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxJQUFHLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssS0FBSSxRQUFPLFVBQVMsVUFBUyxVQUFTLE1BQUssUUFBTyxPQUFNLFFBQU8sTUFBSyxhQUFZLEtBQUksS0FBSSxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sS0FBSSxRQUFPLE1BQUssUUFBTyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsYUFBWSxVQUFTLFdBQVUsVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxLQUFJLGFBQVksUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxXQUFVLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxpQkFBZ0IsVUFBUyxlQUFjLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLGNBQWEsVUFBUyxhQUFZLFVBQVMsZUFBYyxVQUFTLG1CQUFrQixVQUFTLG1CQUFrQixVQUFTLG9CQUFtQixVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsS0FBSSxXQUFVLFNBQVEsZ0JBQWUsTUFBSyxVQUFTLE1BQUssYUFBWSxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxRQUFPLFFBQU8sUUFBTyxNQUFLLGFBQVksT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxNQUFLLE9BQU0sVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssZ0JBQWUsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE1BQUssUUFBTyxPQUFNLFFBQU8sU0FBUSxVQUFTLEtBQUksUUFBTyxNQUFLLFFBQU8sV0FBVSxRQUFPLEtBQUksYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLFdBQVUsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLGlCQUFnQixVQUFTLGtCQUFpQixVQUFTLFVBQVMsUUFBTyxVQUFTLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUyxhQUFZLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsT0FBTSxLQUFJLFFBQU8sVUFBUyxTQUFRLFVBQVMsT0FBTSxLQUFJLFFBQU8sS0FBSSxNQUFLLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxXQUFVLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxLQUFJLFFBQU8sTUFBSyxRQUFPLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLEtBQUksVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssZ0JBQWUsUUFBTyxVQUFTLFNBQVEsVUFBUyxhQUFZLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxZQUFXLFVBQVMsT0FBTSxRQUFPLFFBQU8sUUFBTyxnQkFBZSxVQUFTLGlCQUFnQixVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxJQUFHLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsSUFBRyxRQUFPLEtBQUksUUFBTyxPQUFNLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLGFBQVksVUFBUyxPQUFNLFVBQVMsS0FBSSxRQUFPLFNBQVEsVUFBUyxPQUFNLFVBQVMsS0FBSSxRQUFPLE9BQU0sUUFBTyxRQUFPLFFBQU8sZUFBYyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLEtBQUksTUFBSyxhQUFZLEtBQUksVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLGdCQUFlLFVBQVMsV0FBVSxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsa0JBQWlCLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFFBQU8sUUFBTyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxJQUFHLFVBQVMsT0FBTSxVQUFTLEtBQUksYUFBWSxJQUFHLFVBQVMsT0FBTSxRQUFPLFFBQU8sUUFBTyxLQUFJLFVBQVMsUUFBTyxVQUFTLElBQUcsVUFBUyxVQUFTLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxZQUFXLFVBQVMsYUFBWSxVQUFTLFFBQU8sS0FBSSxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsSUFBRyxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sTUFBSyxRQUFPLE1BQUssVUFBUyxNQUFLLEtBQUksT0FBTSxVQUFTLGFBQVksVUFBUyxjQUFhLFVBQVMsZUFBYyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLE9BQU0sVUFBUyxPQUFNLE1BQUssTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFVBQVMsUUFBTyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxJQUFHLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLE1BQUssZ0JBQWUsUUFBTyxVQUFTLEtBQUksYUFBWSxJQUFHLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksT0FBTSxLQUFJLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxHQUFFLEtBQUksSUFBRyxLQUFJLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsV0FBVSxVQUFTLFlBQVcsVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxNQUFLLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFdBQVUsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxVQUFTLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsZUFBYyxVQUFTLGdCQUFlLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sSUFBRyxVQUFTLE1BQUssUUFBTyxPQUFNLFFBQU8sS0FBSSxVQUFTLE1BQUssVUFBUyxNQUFLLFFBQU8sT0FBTSxRQUFPLEtBQUksVUFBUyxLQUFJLGFBQVksT0FBTSxRQUFPLFFBQU8sUUFBTyxJQUFHLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxhQUFZLE1BQUssVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLEtBQUksUUFBTyxNQUFLLFFBQU8sT0FBTSxVQUFTLEtBQUksVUFBUyxLQUFJLGFBQVksT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksT0FBTSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsTUFBSyxRQUFPLE9BQU0sUUFBTyxNQUFLLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxLQUFJLFFBQU8sS0FBSSxPQUFNLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLEtBQUksS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLElBQUcsVUFBUyxXQUFVLFVBQVMsZUFBYyxVQUFTLGlCQUFnQixVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsbUJBQWtCLFVBQVMscUJBQW9CLFVBQVMsZ0JBQWUsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxNQUFLLGdCQUFlLFFBQU8sVUFBUyxZQUFXLFVBQVMsU0FBUSxVQUFTLFdBQVUsVUFBUyxZQUFXLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxJQUFHLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsSUFBRyxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsZUFBYyxVQUFTLG9CQUFtQixVQUFTLFlBQVcsVUFBUyxnQkFBZSxVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxLQUFJLEtBQUksVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE1BQUssS0FBSSxRQUFPLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxLQUFJLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEdBQUUsS0FBSSxJQUFHLEtBQUksTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxPQUFNLFVBQVMsS0FBSSxRQUFPLE1BQUssUUFBTyxNQUFLLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxZQUFXLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxlQUFjLFVBQVMsS0FBSSxhQUFZLEtBQUksVUFBUyxNQUFLLFFBQU8sT0FBTSxRQUFPLEtBQUksVUFBUyxRQUFPLEtBQUksUUFBTyxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksSUFBRyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsSUFBRyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsS0FBSSxnQkFBZSxLQUFJLGdCQUFlLE1BQUssZ0JBQWUsWUFBVyxVQUFTLGlCQUFnQixVQUFTLEtBQUksZ0JBQWUsS0FBSSxnQkFBZSxNQUFLLGdCQUFlLGFBQVksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxLQUFJLFVBQVMsTUFBSyxnQkFBZSxPQUFNLGdCQUFlLE9BQU0sVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsS0FBSSxRQUFPLE1BQUssUUFBTyxPQUFNLGdCQUFlLFFBQU8sZ0JBQWUsTUFBSyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFVBQVMsZ0JBQWUsTUFBSyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxPQUFNLGdCQUFlLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxnQkFBZSxRQUFPLFVBQVMsU0FBUSxVQUFTLEtBQUksYUFBWSxLQUFJLGdCQUFlLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxnQkFBZSxXQUFVLGdCQUFlLE1BQUssZ0JBQWUsT0FBTSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxnQkFBZSxPQUFNLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxZQUFXLFVBQVMsaUJBQWdCLFVBQVMsTUFBSyxVQUFTLE9BQU0sZ0JBQWUsV0FBVSxnQkFBZSxNQUFLLGdCQUFlLE9BQU0sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxJQUFHLFFBQU8sS0FBSSxRQUFPLE9BQU0sVUFBUyxRQUFPLGdCQUFlLFVBQVMsZ0JBQWUsU0FBUSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxXQUFVLFVBQVMsUUFBTyxnQkFBZSxPQUFNLGdCQUFlLFNBQVEsVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE1BQUssZ0JBQWUsT0FBTSxVQUFTLFNBQVEsZ0JBQWUsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLGdCQUFlLFFBQU8sZ0JBQWUsYUFBWSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLGdCQUFlLE1BQUssYUFBWSxXQUFVLFVBQVMsZ0JBQWUsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE9BQU0sZ0JBQWUsT0FBTSxVQUFTLFNBQVEsZ0JBQWUsV0FBVSxVQUFTLFlBQVcsZ0JBQWUsT0FBTSxVQUFTLFNBQVEsZ0JBQWUsTUFBSyxVQUFTLE9BQU0sZ0JBQWUsT0FBTSxVQUFTLFNBQVEsZ0JBQWUsV0FBVSxVQUFTLFlBQVcsZ0JBQWUsTUFBSyxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxVQUFTLGVBQWMsVUFBUyxpQkFBZ0IsVUFBUyxnQkFBZSxVQUFTLGtCQUFpQixVQUFTLElBQUcsVUFBUyxLQUFJLEtBQUksUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssZ0JBQWUsUUFBTyxVQUFTLE1BQUssZ0JBQWUsTUFBSyxXQUFVLFNBQVEsVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxNQUFLLFdBQVUsU0FBUSxnQkFBZSxRQUFPLFVBQVMsU0FBUSxnQkFBZSxPQUFNLGdCQUFlLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsSUFBRyxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sTUFBSyxVQUFTLE1BQUssUUFBTyxPQUFNLFFBQU8sS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLGFBQVksTUFBSyxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sS0FBSSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLE9BQU0sVUFBUyxLQUFJLFFBQU8sT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLFFBQU8sVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxRQUFPLFFBQU8sUUFBTyxNQUFLLFVBQVMsT0FBTSxRQUFPLFFBQU8sUUFBTyxRQUFPLFVBQVMsVUFBUyxVQUFTLEtBQUksUUFBTyxNQUFLLFFBQU8sT0FBTSxVQUFTLEtBQUksUUFBTyxNQUFLLFFBQU8sVUFBUyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxRQUFPLEtBQUksUUFBTyxLQUFJLFFBQU8sVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLEtBQUksYUFBWSxLQUFJLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLFdBQVUsVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsTUFBSyxLQUFJLFVBQVMsVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sUUFBTyxRQUFPLFFBQU8sU0FBUSxVQUFTLFNBQVEsVUFBUyxJQUFHLFFBQU8sVUFBUyxVQUFTLE1BQUssYUFBWSxNQUFLLFFBQU8sT0FBTSxRQUFPLElBQUcsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFlBQVcsVUFBUyxhQUFZLFVBQVMsUUFBTyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLEtBQUksVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLE1BQUssVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLE1BQUssYUFBWSxhQUFZLFVBQVMsU0FBUSxVQUFTLE9BQU0sS0FBSSxTQUFRLFVBQVMsS0FBSSxLQUFJLE1BQUssS0FBSSxPQUFNLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssZ0JBQWUsUUFBTyxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssUUFBTyxPQUFNLFFBQU8sTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxXQUFVLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLEtBQUksUUFBTyxLQUFJLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssS0FBSSxLQUFJLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLElBQUcsUUFBTyxLQUFJLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxZQUFXLFVBQVMsZ0JBQWUsVUFBUyxrQkFBaUIsVUFBUyxnQkFBZSxVQUFTLGlCQUFnQixVQUFTLG1CQUFrQixVQUFTLGtCQUFpQixVQUFTLGlCQUFnQixVQUFTLGlCQUFnQixVQUFTLE1BQUssVUFBUyxjQUFhLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsU0FBUSxVQUFTLE1BQUssS0FBSSxRQUFPLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLEtBQUksVUFBUyxNQUFLLEtBQUksT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsSUFBRyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsS0FBSSxRQUFPLE1BQUssUUFBTyxNQUFLLEtBQUksUUFBTyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLEtBQUksYUFBWSxRQUFPLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxJQUFHLFFBQU8sS0FBSSxRQUFPLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLGVBQWMsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLFFBQU8sVUFBUyxLQUFJLEtBQUksTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLFdBQVUsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sZ0JBQWUsT0FBTSxVQUFTLFFBQU8sZ0JBQWUsT0FBTSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsWUFBVyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFlBQVcsVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLGlCQUFnQixVQUFTLGFBQVksVUFBUyxPQUFNLFFBQU8sS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsV0FBVSxVQUFTLFdBQVUsVUFBUyxZQUFXLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLFlBQVcsVUFBUyxhQUFZLFVBQVMsUUFBTyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxNQUFLLFFBQU8sTUFBSyxRQUFPLE1BQUssUUFBTyxNQUFLLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFdBQVUsVUFBUyxXQUFVLFVBQVMsWUFBVyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxRQUFPLFVBQVMsV0FBVSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxRQUFPLE9BQU0sUUFBTyxPQUFNLFVBQVMsTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxTQUFRLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLGNBQWEsVUFBUyxjQUFhLFVBQVMsZ0JBQWUsVUFBUyxXQUFVLFVBQVMsZUFBYyxVQUFTLGlCQUFnQixVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLFNBQVEs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LEdBQUUsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxNQUFJLEtBQUcsT0FBSyxHQUFFO0FBQUMsd0JBQUksRUFBRSxFQUFFLEdBQUU7QUFBSztBQUFBLGdCQUFRO0FBQUMscUJBQUksS0FBRyxJQUFFLEdBQUUsS0FBRyxJQUFHLEtBQUcsSUFBRyxPQUFLLEtBQUcsS0FBRyxFQUFFLElBQUcsS0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFFLE9BQUssS0FBRyxPQUFLLEtBQUcsS0FBRyxHQUFFLEtBQUcsRUFBRSxNQUFJLEtBQUcsS0FBRyxLQUFHLEdBQUUsS0FBRyxJQUFHLEtBQUcsSUFBRyxLQUFHLElBQUcsS0FBRyxFQUFFLEtBQUksTUFBSyxFQUFFLEtBQUcsT0FBSyxLQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtBQUFJLHdCQUFJLEVBQUUsRUFBRSxHQUFFLE9BQUssS0FBRyxFQUFFLEtBQUssR0FBRSxFQUFFLE1BQUksS0FBRyxJQUFHLEtBQUcsRUFBRTtBQUFLLHFCQUFHLEVBQUUsV0FBVyxFQUFFLE1BQUksR0FBRSxPQUFLLE1BQUssS0FBRyxPQUFLLElBQUUsRUFBRSxFQUFFLElBQUUsT0FBRyxPQUFLLEtBQUcsSUFBRyxLQUFHLE1BQUssS0FBRyxJQUFFLEtBQUcsSUFBRyxDQUFDLE1BQUksQ0FBQyxNQUFJLEtBQUcsT0FBSyxLQUFHLE1BQUksQ0FBQyxLQUFHLEdBQUcsR0FBRSxDQUFDLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxHQUFHLFFBQU8sS0FBRyxJQUFFLEtBQUcsSUFBRyxLQUFHLFFBQUksT0FBSyxLQUFHLEtBQUcsSUFBRSxHQUFFLEVBQUUsYUFBVyxLQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUUsT0FBSyxLQUFHLEdBQUcsSUFBRyxFQUFFLEdBQUUsS0FBRyxRQUFNLEVBQUUsRUFBRSxJQUFFLEtBQUcsT0FBSyxHQUFHLElBQUcsRUFBRSxLQUFHLEdBQUcsSUFBRyxFQUFFLEtBQUksS0FBRyxPQUFLLE1BQUksR0FBRyxHQUFFLEVBQUUsR0FBRSxLQUFHLFNBQVMsSUFBRyxFQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsS0FBRyxHQUFHLEdBQUUsRUFBRSxHQUFFLEtBQUcsRUFBRSxDQUFDLEtBQUcsTUFBTSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxFQUFFLFFBQU0sS0FBRyxJQUFHLEVBQUUsRUFBRSxLQUFHLEdBQUcsR0FBRSxFQUFFLEdBQUUsS0FBRyxVQUFRLE1BQUksT0FBTSxNQUFJLEVBQUUsT0FBSyxLQUFHLEtBQUssR0FBRSxLQUFHLFFBQU0sS0FBRyxPQUFNLEtBQUcsS0FBRyxFQUFFLEVBQUUsTUFBSSxPQUFLLEtBQUcsR0FBRyxHQUFFLEVBQUUsSUFBRyxNQUFJLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxJQUFFLEtBQUcsR0FBRSxNQUFJLEtBQUcsS0FBRyxHQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsR0FBRyxVQUFTLEtBQUcsRUFBRSxLQUFLLEdBQUUsSUFBRyxFQUFDLE9BQU0sSUFBRyxLQUFJLEdBQUUsR0FBRSxFQUFFLE1BQU0sS0FBRyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUcsT0FBSyxLQUFHLEVBQUUsTUFBTSxLQUFHLEdBQUUsRUFBRSxHQUFFLE1BQUksSUFBRyxNQUFJLEdBQUcsUUFBTyxJQUFFLEtBQUc7QUFBQSxjQUFFO0FBQU0sdUJBQUssT0FBSyxNQUFLLEtBQUksS0FBRyxJQUFHLE9BQUssTUFBSSxNQUFJLEVBQUUsRUFBRSxHQUFFLFFBQU0sR0FBRztBQUFFLG1CQUFPLEdBQUcsS0FBSyxFQUFFO0FBQUUscUJBQVMsS0FBSTtBQUFDLHFCQUFNLEVBQUMsTUFBSyxJQUFHLFFBQU8sSUFBRyxRQUFPLEtBQUcsR0FBRyxVQUFRLEdBQUU7QUFBQSxZQUFDO0FBQUMscUJBQVMsR0FBRyxJQUFHLElBQUc7QUFBQyxrQkFBSSxLQUFHLEdBQUc7QUFBRSxpQkFBRyxVQUFRLElBQUcsR0FBRyxVQUFRLElB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SUFBRSxLQUFJLElBQUUsR0FBRSxJQUFFO0FBQUUsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsTUFBSyxJQUFFLEVBQUUsUUFBUSxLQUFJLElBQUUsRUFBRSxTQUFPLEdBQUUsSUFBRSxHQUFFLElBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFFLGdCQUFHLENBQUMsQ0FBQyxHQUFFO0FBQUMscUJBQUssSUFBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxFQUFFLE1BQUksS0FBRyxNQUFJO0FBQUsscUJBQUcsR0FBRTtBQUFJLGtCQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxNQUFJLEtBQUcsTUFBSSxJQUFHO0FBQUMscUJBQUksS0FBSSxJQUFFLEdBQUUsSUFBRSxHQUFFLEtBQUcsR0FBRSxJQUFFLE1BQUksSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBSSx1QkFBRyxHQUFFLEtBQUk7QUFBSSxvQkFBRyxFQUFFLElBQUUsSUFBRztBQUFDLHlCQUFLLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxNQUFJLEtBQUcsTUFBSTtBQUFLLHlCQUFHLEdBQUU7QUFBSSx1QkFBSSxJQUFFLElBQUcsSUFBRSxJQUFHLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUk7QUFBSywwQkFBSSxLQUFHLE1BQUksSUFBRSxLQUFHLEtBQUcsS0FBRyxJQUFFLEdBQUUsSUFBRSxLQUFJO0FBQUksc0JBQUcsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEVBQUUsS0FBRyxNQUFJLElBQUc7QUFBQyx3QkFBRztBQUFFLDZCQUFNO0FBQUcsd0JBQUUsRUFBRSxJQUFJLEdBQUUsRUFBRSxVQUFRLEVBQUUsUUFBTyxFQUFFLFVBQVEsRUFBRSxRQUFPLEtBQUcsR0FBRSxJQUFFLEVBQUUsT0FBTyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUksS0FBRyxJQUFHLElBQUUsSUFBRyxJQUFFLElBQUcsSUFBRSxJQUFHLElBQUUsSUFBRyxJQUFFO0FBQUcsNkJBQVEsSUFBRSxNQUFHLElBQUUsS0FBRztBQUFDLDBCQUFHLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxLQUFHLEdBQUUsS0FBRyxHQUFFLElBQUUsSUFBRyxJQUFFLElBQUcsTUFBSSxHQUFFO0FBQUMsNkJBQUcsR0FBRSxLQUFHLEdBQUU7QUFBSTtBQUFBLHNCQUFRO0FBQUMsMkJBQUksS0FBRyxLQUFHLEdBQUUsSUFBRSxVQUFLLEtBQUcsR0FBRSxLQUFHLElBQUcsSUFBRSxJQUFHLEtBQUksSUFBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUksNkJBQUcsR0FBRTtBQUFJLDBCQUFHLEtBQUcsR0FBRSxLQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUUsRUFBRSxFQUFFLFVBQVEsSUFBRztBQUFDLDZCQUFJLElBQUUsSUFBRyxJQUFFLE1BQUksSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBSSwrQkFBRyxHQUFFO0FBQUksNEJBQUcsS0FBRyxHQUFFLEtBQUcsR0FBRSxFQUFFLEVBQUUsU0FBTyxJQUFHO0FBQUMsK0JBQUksSUFBRSxJQUFHLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxNQUFJLEtBQUcsTUFBSTtBQUFLLGlDQUFHLEdBQUUsS0FBRyxHQUFFO0FBQUksOEJBQUcsQ0FBQyxLQUFHLE1BQUk7QUFBRTtBQUFBLHdCQUFLO0FBQUEsc0JBQUM7QUFBQSxvQkFBQztBQUFDLHlCQUFJLEtBQUcsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLEVBQUUsUUFBTyxFQUFFLElBQUU7QUFBRywwQkFBRyxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsTUFBSSxLQUFHLE1BQUk7QUFBRSw4QkFBSSxJQUFFLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBQSwrQkFBVyxHQUFFO0FBQUMsNEJBQUUsRUFBRSxNQUFNLENBQUM7QUFBRTtBQUFBLHNCQUFLO0FBQUMsMkJBQU8sRUFBRSxDQUFDLEVBQUUsRUFBQyxNQUFLLFFBQU8sTUFBSyxLQUFHLEtBQUcsTUFBSyxNQUFLLEtBQUcsTUFBSyxPQUFNLEVBQUMsQ0FBQztBQUFBLGtCQUFDO0FBQUEsZ0JBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLDZCQUE2QixHQUFFLEdBQUU7QUFBQyxZQUFFLEdBQUUsSUFBRSxFQUFFLFVBQVE7QUFBRSxtQkFBUyxFQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLFFBQVEsY0FBYSxFQUFFO0FBQUEsVUFBQztBQUFDLFlBQUUsT0FBSyxTQUFTLEdBQUU7QUFBQyxtQkFBTyxFQUFFLFFBQVEsUUFBTyxFQUFFO0FBQUEsVUFBQyxHQUFFLEVBQUUsUUFBTSxTQUFTLEdBQUU7QUFBQyxtQkFBTyxFQUFFLFFBQVEsUUFBTyxFQUFFO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsa0RBQWtELEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRSxHQUFFLEVBQUUsVUFBUTtBQUFFLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFRLElBQUUsRUFBRSxRQUFPLElBQUUsSUFBRyxHQUFFLEdBQUUsRUFBRSxJQUFFO0FBQUcsa0JBQUcsSUFBRSxFQUFFLElBQUcsSUFBRSxFQUFFLE1BQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxhQUFXLFVBQVEsRUFBRSxhQUFXLEVBQUUsUUFBUSxhQUFXLEVBQUUsRUFBRSxlQUFhLFVBQVEsRUFBRSxlQUFhLEVBQUUsUUFBUSxlQUFhLEVBQUUsRUFBRSxJQUFJLE1BQU0sR0FBRSxDQUFDO0FBQUUsdUJBQU07QUFBRyxtQkFBTTtBQUFBLFVBQUU7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHVEQUF1RCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRztBQUFFLFlBQUUsVUFBUTtBQUFFLGNBQUksSUFBRTtBQUFBLEdBQ3p3RCxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUU7QUFBSSxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMscUJBQVEsSUFBRSxNQUFLLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRSxpQkFBZ0IsSUFBRSxFQUFFLHFCQUFvQixJQUFFLEVBQUUsSUFBSSxHQUFFLElBQUUsRUFBRSxNQUFLLElBQUUsRUFBRSxRQUFPLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFFLE1BQUksSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEVBQUUsTUFBSSxLQUFHLE1BQUk7QUFBSztBQUFJLGdCQUFHLEVBQUUsT0FBTyxDQUFDLE1BQUksR0FBRTtBQUFDLGtCQUFHO0FBQUUsdUJBQU07QUFBRyxtQkFBSSxJQUFFLEdBQUUsSUFBRSxLQUFHO0FBQUMscUJBQUksSUFBRSxFQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsT0FBRyxNQUFJLE9BQUssSUFBRSxJQUFHLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxNQUFJLEtBQUcsTUFBSTtBQUFLO0FBQUksb0JBQUcsRUFBRSxPQUFPLENBQUMsTUFBSSxLQUFHLEtBQUksSUFBRSxNQUFHLEVBQUUsT0FBTyxDQUFDLE1BQUksS0FBRyxPQUFLLElBQUUsR0FBRSxJQUFFLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRTtBQUFDLHNCQUFFO0FBQUU7QUFBQSxnQkFBSztBQUFDLG9CQUFHLENBQUMsTUFBSSxJQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsR0FBRSxJQUFFLENBQUM7QUFBRztBQUFNLG9CQUFFLE1BQUksSUFBRSxJQUFFLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssSUFBRSxDQUFDLEdBQUUsRUFBRSxLQUFLLENBQUMsR0FBRSxFQUFFLEtBQUssQ0FBQyxHQUFFLElBQUUsSUFBRTtBQUFBLGNBQUM7QUFBQyxtQkFBSSxJQUFFLElBQUcsSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRSxFQUFFLElBQUU7QUFBRyxrQkFBRSxNQUFJLEVBQUUsTUFBSSxLQUFHLEVBQUUsSUFBRztBQUFJLHFCQUFPLElBQUUsRUFBRSxXQUFXLEdBQUUsSUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBQyxNQUFLLGNBQWEsVUFBUyxFQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsd0RBQXdELEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRSxHQUFFLEVBQUUsVUFBUTtBQUFFLGNBQUksSUFBRTtBQUFBLEdBQzd5QixJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFO0FBQUUsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFRLElBQUUsTUFBSyxJQUFFLEVBQUUsUUFBUSxVQUFTLElBQUUsRUFBRSxTQUFPLEdBQUUsSUFBRSxJQUFHLElBQUUsRUFBRSxJQUFJLEdBQUUsSUFBRSxJQUFHLElBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUUsS0FBRztBQUFDLGtCQUFHLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLEtBQUcsTUFBSSxHQUFFO0FBQUM7QUFBSTtBQUFBLGNBQUs7QUFBQyxtQkFBRztBQUFBLFlBQUM7QUFBQyxpQkFBSSxJQUFFLEdBQUUsRUFBRSxLQUFHLEtBQUc7QUFBQyxrQkFBRyxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsTUFBSSxHQUFFO0FBQUM7QUFBSTtBQUFBLGNBQUs7QUFBQyxtQkFBRyxHQUFFO0FBQUEsWUFBRztBQUFDLGdCQUFHLEVBQUUsSUFBRSxNQUFJLEVBQUUsQ0FBQyxLQUFHLENBQUMsS0FBRyxFQUFFLE9BQU8sSUFBRSxDQUFDLE1BQUksSUFBRztBQUFDLG1CQUFJLElBQUUsRUFBRSxTQUFPLEdBQUUsSUFBRSxJQUFHLEVBQUUsSUFBRSxLQUFHO0FBQUMsb0JBQUcsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUksS0FBRyxNQUFJLEdBQUU7QUFBQztBQUFJO0FBQUEsZ0JBQUs7QUFBQyxxQkFBRztBQUFBLGNBQUM7QUFBQyxrQkFBRyxFQUFFLENBQUMsS0FBRyxFQUFFLFdBQVMsS0FBRyxLQUFHLE1BQUksSUFBRztBQUFDLG9CQUFHO0FBQUUseUJBQU07QUFBRyxxQkFBSSxLQUFHLEdBQUUsSUFBRSxJQUFHLElBQUUsSUFBRyxFQUFFLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxDQUFDLEtBQUcsTUFBSSxPQUFLO0FBQUMsc0JBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLEdBQUU7QUFBQyx5QkFBRyxJQUFFLEdBQUUsSUFBRTtBQUFHO0FBQUEsa0JBQVE7QUFBQyx5QkFBSyxNQUFJLEtBQUcsTUFBSTtBQUFHLHlCQUFHLEdBQUUsSUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQUUsc0JBQUcsQ0FBQyxLQUFHLEtBQUcsQ0FBQyxLQUFHLE1BQUksR0FBRTtBQUFDLHlCQUFHO0FBQUU7QUFBQSxrQkFBUTtBQUFDLHlCQUFLLE1BQUk7QUFBRyx5QkFBRyxHQUFFLElBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUFFLHlCQUFLLE1BQUksS0FBRyxNQUFJO0FBQUcseUJBQUcsR0FBRSxJQUFFLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFBRTtBQUFBLGdCQUFHO0FBQUMsdUJBQU8sRUFBRSxVQUFRLEVBQUUsUUFBTyxFQUFFLFVBQVEsRUFBRSxRQUFPLEtBQUcsSUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUMsTUFBSyxXQUFVLE9BQU0sR0FBRSxVQUFTLEVBQUUsZUFBZSxHQUFFLENBQUMsRUFBQyxDQUFDO0FBQUEsY0FBQztBQUFBLFlBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQywyREFBMkQsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsRUFBRSxVQUFRO0FBQUUsY0FBSSxJQUFFLEtBQUksSUFBRTtBQUFBLEdBQ3AzQixJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRTtBQUFFLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLElBQUcsSUFBRSxFQUFFLFNBQU8sR0FBRSxJQUFFLElBQUcsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsRUFBRSxNQUFJLEtBQUcsTUFBSTtBQUFLLG1CQUFHO0FBQUUsZ0JBQUcsRUFBRSxNQUFJLEtBQUcsTUFBSSxLQUFHLE1BQUk7QUFBRyxtQkFBSSxJQUFFLEdBQUUsS0FBRyxHQUFFLElBQUUsR0FBRSxJQUFFLElBQUcsRUFBRSxJQUFFO0FBQUcsb0JBQUcsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBRSx1QkFBSSxLQUFHLElBQUUsR0FBRSxJQUFFO0FBQUEseUJBQVcsTUFBSTtBQUFFLHVCQUFHO0FBQUE7QUFBTyx5QkFBTyxLQUFHLE1BQUksQ0FBQyxLQUFHLE1BQUksTUFBSSxLQUFHLEdBQUUsSUFBRSxPQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsTUFBSyxnQkFBZSxDQUFDLEtBQUc7QUFBQSxVQUFNO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyx3REFBd0QsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsRUFBRSxVQUFRO0FBQUUsY0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsR0FBRSxJQUFFO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMscUJBQVEsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRSxJQUFFLEdBQUUsTUFBSSxLQUFHLE1BQUksS0FBRztBQUFDLG1CQUFJLElBQUUsTUFBSSxJQUFFLElBQUUsR0FBRSxLQUFHLEdBQUUsSUFBRSxNQUFJLElBQUUsS0FBSyxNQUFNLElBQUUsQ0FBQyxJQUFFLElBQUcsSUFBRTtBQUFHLGtCQUFFLEVBQUUsS0FBRztBQUFFLGtCQUFFLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFBQSxZQUFDO0FBQUMsbUJBQU0sRUFBQyxRQUFPLEdBQUUsT0FBTSxFQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsMkRBQTJELEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHO0FBQUUsWUFBRSxVQUFRO0FBQUUsY0FBSSxJQUFFO0FBQUEsR0FDaHZCLElBQUUsS0FBSSxJQUFFO0FBQUksbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUUsSUFBRSxFQUFFLFNBQU8sR0FBRSxJQUFFLElBQUUsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLEdBQUU7QUFBRSxpQkFBSSxFQUFFLFFBQVEsRUFBRSxHQUFFLENBQUMsSUFBRSxDQUFDLEdBQUU7QUFBSyxrQkFBRyxJQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxLQUFHLEVBQUUsT0FBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVM7QUFBRSxvQkFBRyxFQUFFO0FBQU8sb0JBQUUsU0FBTyxLQUFHLEVBQUUsU0FBTyxNQUFJLElBQUUsRUFBRTtBQUFBLHFCQUFZO0FBQUMsc0JBQUUsSUFBRTtBQUFFO0FBQUEsZ0JBQUs7QUFBQyxnQkFBRyxNQUFJLElBQUU7QUFBRSxtQkFBSSxJQUFFLEVBQUUsUUFBTyxPQUFLO0FBQUMscUJBQUksSUFBRSxFQUFFLElBQUcsSUFBRSxHQUFFLEtBQUcsRUFBRSxLQUFLO0FBQUk7QUFBSSxrQkFBRSxLQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsS0FBRyxDQUFDO0FBQUEsY0FBQztBQUFDLG1CQUFPLEVBQUUsTUFBTSxHQUFFLEVBQUUsS0FBSyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsaURBQWlELEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRTtBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHLEdBQUUsSUFBRSxHQUFHO0FBQUUsWUFBRSxVQUFRO0FBQUUsY0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFO0FBQUEsR0FDaGdCLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsR0FBRSxJQUFFLGdCQUFlLElBQUUsc0JBQXFCLElBQUUsK0RBQThELElBQUUsb0NBQW1DLElBQUU7QUFBa0IsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLHFCQUFRLElBQUUsTUFBSyxJQUFFLEVBQUUsUUFBUSxZQUFXLElBQUUsRUFBRSxRQUFRLFVBQVMsSUFBRSxFQUFFLGlCQUFnQixJQUFFLEVBQUUsZUFBYyxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sSUFBRSxNQUFLLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsR0FBRSxJQUFHLElBQUcsSUFBRyxJQUFHLEdBQUUsR0FBRSxJQUFHLElBQUcsS0FBRyxPQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxFQUFFLE1BQUksS0FBRyxNQUFJO0FBQUs7QUFBSSxnQkFBRyxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJO0FBQUUsa0JBQUUsR0FBRSxJQUFFO0FBQUEsaUJBQU87QUFBQyxtQkFBSSxJQUFFLE1BQUcsSUFBRSxJQUFHLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUFJLHFCQUFHLEdBQUU7QUFBSSxrQkFBRyxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsQ0FBQyxLQUFHLEVBQUUsTUFBSSxLQUFHLEtBQUcsTUFBSSxNQUFJLEtBQUcsTUFBSTtBQUFJO0FBQU8sa0JBQUUsU0FBUyxHQUFFLEVBQUUsR0FBRSxJQUFFO0FBQUEsWUFBQztBQUFDLGdCQUFHLElBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFFLEVBQUUsTUFBSSxLQUFHLE1BQUksTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLE1BQUs7QUFBQyxrQkFBRztBQUFFLHVCQUFNO0FBQUcsbUJBQUksSUFBRSxHQUFFLEtBQUcsQ0FBQyxHQUFFLEtBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQyxHQUFFLElBQUUsS0FBRztBQUFDLHFCQUFJLElBQUUsRUFBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLE9BQUcsS0FBRyxPQUFHLE1BQUksT0FBSyxJQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFDLHNCQUFHLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUUseUJBQUcsSUFBRSxJQUFFO0FBQUEsMkJBQVUsTUFBSTtBQUFFO0FBQUE7QUFBUztBQUFNO0FBQUEsZ0JBQUc7QUFBQyxvQkFBRyxLQUFHLEtBQUcsRUFBRSxXQUFTLEtBQUcsT0FBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsSUFBRSxNQUFLLENBQUMsSUFBRztBQUFDLHNCQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSTtBQUFFLHdCQUFFLEdBQUUsS0FBSTtBQUFBLHVCQUFRO0FBQUMseUJBQUksSUFBRSxJQUFHLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUFJLDJCQUFHLEdBQUU7QUFBSSx3QkFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEtBQUksTUFBSSxNQUFJLEtBQUcsS0FBRyxNQUFJLE9BQUssSUFBRSxHQUFFLEtBQUcsRUFBRSxTQUFPO0FBQUEsa0JBQUU7QUFBQyxzQkFBRztBQUFFLHdCQUFHLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUUsMkJBQUcsSUFBRSxJQUFFLEdBQUU7QUFBQSw2QkFBWSxNQUFJLEdBQUU7QUFBQywyQkFBSSxLQUFHLElBQUUsR0FBRSxJQUFFLE1BQUksRUFBRSxPQUFPLENBQUMsTUFBSTtBQUFHLDZCQUFJO0FBQUksNEJBQUksTUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFJLE1BQUksS0FBRyxJQUFFLEdBQUUsS0FBRyxJQUFFO0FBQUEsb0JBQUU7QUFBTSw0QkFBSSxLQUFHLE1BQUksT0FBSyxJQUFFO0FBQUEsZ0JBQUs7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUcsQ0FBQyxLQUFHLE1BQUk7QUFBRTtBQUFNLHNCQUFFO0FBQUEsZ0JBQUU7QUFBSyxtQkFBQyxLQUFHLENBQUMsTUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFJLElBQUUsS0FBRyxPQUFHLEtBQUcsTUFBSSxLQUFHLEtBQUcsRUFBRSxVQUFRLElBQUUsSUFBRyxJQUFFLE9BQUcsSUFBRTtBQUFFLG9CQUFHLElBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEtBQUcsTUFBSSxJQUFFLElBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxJQUFHLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSSxNQUFJLEVBQUUsY0FBYyxLQUFLLEdBQUUsR0FBRSxHQUFFLElBQUU7QUFBRTtBQUFNLG9CQUFHLEtBQUcsSUFBRyxLQUFHLENBQUMsS0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQU8sTUFBSTtBQUFFLG9CQUFFLFFBQU0sRUFBRSxNQUFNLE9BQU8sR0FBRSxDQUFDLEdBQUUsS0FBRyxHQUFHLE9BQU8sR0FBRSxDQUFDLEdBQUUsSUFBRSxDQUFDO0FBQUEseUJBQVU7QUFBRSxvQkFBRSxXQUFTLE1BQUksS0FBRyxNQUFHLEVBQUUsTUFBTSxLQUFLLEVBQUUsR0FBRSxFQUFFLFFBQU0sRUFBRSxPQUFPLElBQUcsSUFBRSxFQUFDLE9BQU0sQ0FBQyxDQUFDLEdBQUUsUUFBTyxHQUFFLE9BQU0sQ0FBQyxFQUFDLEdBQUUsR0FBRyxLQUFLLENBQUMsR0FBRSxLQUFHLEdBQUcsT0FBTyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUM7QUFBQSx5QkFBVSxJQUFHO0FBQUMsc0JBQUcsTUFBSSxDQUFDO0FBQUU7QUFBTSxvQkFBRSxLQUFLLENBQUM7QUFBQSxnQkFBQyxPQUFLO0FBQUMsc0JBQUcsTUFBSSxFQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsR0FBRSxHQUFFLElBQUUsQ0FBQztBQUFFO0FBQU0sb0JBQUUsUUFBTSxFQUFFLE1BQU0sT0FBTyxHQUFFLENBQUMsR0FBRSxLQUFHLEdBQUcsT0FBTyxHQUFFLENBQUMsR0FBRSxJQUFFLENBQUM7QUFBQSxnQkFBQztBQUFDLG9CQUFFLElBQUU7QUFBQSxjQUFDO0FBQUMsbUJBQUksS0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUMsTUFBSyxRQUFPLFNBQVEsR0FBRSxPQUFNLEdBQUUsUUFBTyxJQUFHLFVBQVMsQ0FBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsVUFBVSxHQUFFLEtBQUcsRUFBRSxXQUFXLEdBQUUsSUFBRSxJQUFHLElBQUUsR0FBRyxRQUFPLEVBQUUsSUFBRTtBQUFHLG9CQUFFLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFFLEtBQUcsRUFBRSxJQUFJLEdBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBRSxJQUFFLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFFLE1BQUksSUFBRSxNQUFJLEtBQUcsSUFBRyxFQUFFLENBQUM7QUFBRSxxQkFBTyxHQUFHLEdBQUUsR0FBRyxHQUFFO0FBQUEsWUFBRTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxFQUFFLFFBQU8sSUFBRSxFQUFFLFFBQVEsV0FBUyxJQUFFLEdBQUUsSUFBRSxNQUFLLEdBQUU7QUFBRSxtQkFBTyxJQUFFLEVBQUUsTUFBTSxNQUFLLFNBQVMsR0FBRSxFQUFFLFFBQVEsUUFBTSxJQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUUsTUFBSSxJQUFFLEVBQUUsR0FBRyxRQUFPLElBQUUsRUFBRSxHQUFHLFlBQVksTUFBSSxHQUFFLEVBQUUsRUFBRSxTQUFPLEdBQUUsSUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFJLEVBQUMsTUFBSyxZQUFXLFFBQU8sRUFBRSxLQUFLLENBQUMsR0FBRSxTQUFRLEdBQUUsVUFBUyxFQUFFLGNBQWMsR0FBRSxDQUFDLEVBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRSxRQUFPLElBQUUsRUFBRTtBQUFLLG1CQUFPLElBQUUsRUFBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFLLEVBQUUsUUFBUSxHQUFFLENBQUM7QUFBRSxxQkFBUyxFQUFFLEdBQUU7QUFBQyxxQkFBTyxFQUFFLE1BQUksRUFBRSxNQUFJLEtBQUcsRUFBRSxRQUFPLEtBQUk7QUFBQSxZQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFFLGlCQUFJLElBQUUsRUFBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxNQUFNLENBQUMsR0FBRSxJQUFFLEVBQUUs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QUFFLE9BQU8sQ0FBQyxJQUFHLEtBQUcsR0FBRTtBQUFJLGtCQUFHLEVBQUUsQ0FBQyxLQUFHLEVBQUUsT0FBTyxDQUFDLE1BQUksS0FBRyxFQUFFLE9BQU8sSUFBRSxDQUFDLE1BQUksSUFBRztBQUFDLHFCQUFJLElBQUUsR0FBRSxLQUFHLElBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLElBQUUsSUFBRyxJQUFFLE1BQUksSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEVBQUUsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJO0FBQUssdUJBQUcsR0FBRTtBQUFJLG9CQUFHLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxJQUFFLElBQUcsSUFBRSxHQUFFLE1BQUksR0FBRTtBQUFDLHVCQUFJLEtBQUksSUFBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUkseUJBQUcsR0FBRTtBQUFJLHNCQUFHLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLEVBQUU7QUFBVSx5QkFBRyxJQUFFLElBQUUsR0FBRTtBQUFBLHVCQUFRO0FBQUMsd0JBQUc7QUFBRTtBQUFPLHlCQUFHLEVBQUUsU0FBTyxHQUFFLElBQUU7QUFBQSxrQkFBRTtBQUFBLGdCQUFDO0FBQUMsb0JBQUcsQ0FBQyxHQUFFO0FBQUMseUJBQUssSUFBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUkseUJBQUcsR0FBRTtBQUFJLHVCQUFHO0FBQUEsZ0JBQUM7QUFBQyxvQkFBRyxDQUFDLENBQUMsR0FBRTtBQUFDLHVCQUFJLElBQUUsR0FBRSxJQUFFLElBQUcsSUFBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxFQUFFLE1BQUksS0FBRyxNQUFJLEtBQUcsTUFBSTtBQUFLLHlCQUFHLEdBQUU7QUFBSSxzQkFBRyxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsSUFBRSxNQUFLLE1BQUksSUFBRSxJQUFFLElBQUUsTUFBSSxJQUFF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RUFBRSxPQUFPLENBQUMsR0FBRSxFQUFFLE1BQUksTUFBSSxLQUFHLE1BQUksS0FBRyxLQUFHLE1BQUksUUFBTTtBQUFDLHdCQUFHLEVBQUUsQ0FBQyxHQUFFO0FBQUMsMEJBQUcsQ0FBQztBQUFFO0FBQU0sMkJBQUc7QUFBQSxvQkFBQyxPQUFLO0FBQUMsMEJBQUcsTUFBSTtBQUFFO0FBQUEsK0JBQVksTUFBSSxHQUFFO0FBQUMsNEJBQUcsTUFBSTtBQUFFO0FBQU07QUFBQSxzQkFBRztBQUFDLDJCQUFHLEdBQUUsSUFBRSxJQUFHLE1BQUksTUFBSSxLQUFHLEdBQUUsSUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUcsS0FBRztBQUFBLG9CQUFDO0FBQUM7QUFBQSxrQkFBRztBQUFDLHVCQUFHLEdBQUUsSUFBRSxHQUFFLElBQUUsRUFBRTtBQUFBLGdCQUFNO0FBQUMscUJBQUksSUFBRSxJQUFHLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUFJLHVCQUFHLEdBQUU7QUFBSSxvQkFBRyxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsS0FBRyxHQUFFLE1BQUksTUFBSSxLQUFHLE1BQUksS0FBRyxLQUFHLE1BQUk7QUFBRyxzQkFBRyxLQUFJLEtBQUcsR0FBRSxJQUFFLElBQUcsSUFBRSxNQUFJLElBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxHQUFFO0FBQUMsMkJBQUssSUFBRSxNQUFJLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJO0FBQUksNEJBQUksTUFBSSxLQUFHLEdBQUUsSUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUcsS0FBSSxLQUFHO0FBQUUsd0JBQUcsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLE1BQUk7QUFBRTtBQUFPLHlCQUFJLElBQUUsR0FBRSxLQUFHLElBQUUsR0FBRSxLQUFJLElBQUUsTUFBSSxJQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUFJLDJCQUFHLEdBQUU7QUFB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RUFBRSxRQUFRLE1BQUssQ0FBQztBQUFFLG1CQUFPLE1BQUksS0FBRyxJQUFFLE1BQUksTUFBSSxJQUFFLElBQUUsSUFBRTtBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLG1EQUFtRCxHQUFFLEdBQUU7QUFBQztBQUFhLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRyxHQUFFLElBQUUsR0FBRztBQUFFLFlBQUUsVUFBUSxHQUFFLEVBQUUsVUFBUTtBQUFFLGNBQUksSUFBRSxNQUFLLElBQUUsS0FBSSxJQUFFO0FBQUksbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsTUFBSyxJQUFFLEdBQUUsSUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUUsZ0JBQUcsRUFBRSxNQUFJLEtBQUcsTUFBSSxLQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsTUFBSSxPQUFLLElBQUUsRUFBRSxRQUFRLFVBQVMsSUFBRSxHQUFFLElBQUUsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEtBQUksSUFBRSxJQUFHLElBQUUsSUFBRyxFQUFFLEtBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUkscUJBQUssSUFBRSxLQUFHO0FBQUMsb0JBQUcsSUFBRSxHQUFFLElBQUUsRUFBRSxPQUFPLENBQUMsR0FBRSxNQUFJLEtBQUcsRUFBRSxPQUFPLElBQUUsQ0FBQyxNQUFJLE1BQUksQ0FBQyxLQUFHLENBQUMsRUFBRSxDQUFDLE9BQUssSUFBRSxFQUFFLE9BQU8sSUFBRSxDQUFDLEdBQUUsTUFBSTtBQUFHLHlCQUFPLEVBQUUsQ0FBQyxJQUFFLElBQUUsUUFBSSxJQUFFLEVBQUUsSUFBSSxHQUFFLEVBQUUsVUFBUSxHQUFFLEVBQUUsVUFBUSxHQUFFLEVBQUUsSUFBRSxJQUFFLENBQUMsRUFBRSxFQUFDLE1BQUssVUFBUyxVQUFTLEVBQUUsZUFBZSxHQUFFLENBQUMsRUFBQyxD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QUEsVUFBQztBQUFDLFlBQUUsWUFBVSxNQUFNLFdBQVUsRUFBRSxZQUFVLElBQUk7QUFBRSxjQUFJLElBQUUsRUFBRTtBQUFVLFlBQUUsT0FBSyxJQUFHLEVBQUUsT0FBSyxJQUFHLEVBQUUsU0FBTyxJQUFHLEVBQUUsVUFBUSxJQUFHLEVBQUUsUUFBTSxJQUFHLEVBQUUsUUFBTSxNQUFLLEVBQUUsU0FBTyxNQUFLLEVBQUUsT0FBSztBQUFLLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxHQUFFLEdBQUU7QUFBRSxtQkFBTyxLQUFHLGFBQVcsSUFBRSxHQUFFLElBQUUsT0FBTSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxDQUFDLEtBQUcsT0FBTSxJQUFFLEVBQUMsT0FBTSxFQUFDLE1BQUssTUFBSyxRQUFPLEtBQUksR0FBRSxLQUFJLEVBQUMsTUFBSyxNQUFLLFFBQU8sS0FBSSxFQUFDLEdBQUUsS0FBRyxFQUFFLGFBQVcsSUFBRSxFQUFFLFdBQVUsTUFBSSxFQUFFLFNBQU8sSUFBRSxHQUFFLElBQUUsRUFBRSxTQUFPLEVBQUUsUUFBTSxJQUFHLEVBQUUsVUFBUSxLQUFLLFFBQU0sRUFBRSxPQUFNLElBQUUsRUFBRSxVQUFTLEtBQUssVUFBUSxHQUFFLEtBQUssT0FBSyxHQUFFLEtBQUssU0FBTyxHQUFFLEtBQUssT0FBSyxJQUFFLEVBQUUsT0FBSyxNQUFLLEtBQUssU0FBTyxJQUFFLEVBQUUsU0FBTyxNQUFLLEtBQUssV0FBUyxHQUFFLEtBQUssU0FBTyxFQUFFLElBQUcsS0FBSyxTQUFPLEVBQUU7QUFBQSxVQUFFO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxDQUFDLE1BQUssSUFBSSxHQUFFO0FBQUUsbUJBQU8sT0FBTyxLQUFHLGFBQVcsSUFBRSxFQUFFLFFBQVEsR0FBRyxHQUFFLE1BQUksS0FBRyxFQUFFLEtBQUcsS0FBRyxFQUFFLEtBQUcsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBRyxFQUFFLE1BQU0sSUFBRSxDQUFDLEtBQUk7QUFBQSxVQUFDO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyw0Q0FBNEMsR0FBRTtBQUFDO0FBQWEsWUFBRSxHQUFFLEVBQUUsV0FBUyxHQUFFLEVBQUUsVUFBUSxHQUFFLEVBQUUsVUFBUSxHQUFFLEVBQUUsT0FBSyxHQUFFLEVBQUUsTUFBSTtBQUFJLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxHQUFFLElBQUUsSUFBRyxHQUFFLEdBQUUsR0FBRTtBQUFFLGdCQUFHLE1BQUksVUFBUSxPQUFPLEtBQUc7QUFBUyxvQkFBTSxJQUFJLFVBQVUsaUNBQWlDO0FBQUUsZ0JBQUcsRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU8sTUFBSSxVQUFRLENBQUMsRUFBRSxVQUFRLEVBQUUsU0FBTyxFQUFFLFFBQU87QUFBQyxxQkFBSztBQUFLLG9CQUFHLEVBQUUsV0FBVyxDQUFDLE1BQUksSUFBRztBQUFDLHNCQUFHLEdBQUU7QUFBQyx3QkFBRSxJQUFFO0FBQUU7QUFBQSxrQkFBSztBQUFBLGdCQUFDO0FBQU0sc0JBQUUsTUFBSSxJQUFFLE1BQUcsSUFBRSxJQUFFO0FBQUcscUJBQU8sSUFBRSxJQUFFLEtBQUcsRUFBRSxNQUFNLEdBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxnQkFBRyxNQUFJO0FBQUUscUJBQU07QUFBRyxpQkFBSSxJQUFFLElBQUcsSUFBRSxFQUFFLFNBQU8sR0FBRTtBQUFLLGtCQUFHLEVBQUUsV0FBVyxDQUFDLE1BQUksSUFBRztBQUFDLG9CQUFHLEdBQUU7QUFBQyxzQkFBRSxJQUFFO0FBQUU7QUFBQSxnQkFBSztBQUFBLGNBQUM7QUFBTSxvQkFBRSxNQUFJLElBQUUsTUFBRyxJQUFFLElBQUUsSUFBRyxJQUFFLE9BQUssRUFBRSxXQUFXLENBQUMsTUFBSSxFQUFFLFdBQVcsR0FBRyxJQUFFLElBQUUsTUFBSSxJQUFFLE1BQUksSUFBRSxJQUFHLElBQUU7QUFBSSxtQkFBTyxNQUFJLElBQUUsSUFBRSxJQUFFLElBQUUsTUFBSSxJQUFFLEVBQUUsU0FBUSxFQUFFLE1BQU0sR0FBRSxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFJLEdBQUUsR0FBRTtBQUFFLGdCQUFHLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRTtBQUFPLHFCQUFNO0FBQUksaUJBQUksSUFBRSxJQUFHLElBQUUsRUFBRSxRQUFPLEVBQUU7QUFBRyxrQkFBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJLElBQUc7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUU7QUFBRTtBQUFBLGdCQUFLO0FBQUEsY0FBQztBQUFNLHNCQUFJLElBQUU7QUFBSSxtQkFBTyxJQUFFLElBQUUsRUFBRSxXQUFXLENBQUMsTUFBSSxLQUFHLE1BQUksTUFBSSxNQUFJLEtBQUcsRUFBRSxXQUFXLENBQUMsTUFBSSxLQUFHLE9BQUssRUFBRSxNQUFNLEdBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUUsaUJBQUksRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFFBQU8sT0FBSztBQUFDLGtCQUFHLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxNQUFJLElBQUc7QUFBQyxvQkFBRyxHQUFFO0FBQUMsc0JBQUUsSUFBRTtBQUFFO0FBQUEsZ0JBQUs7QUFBQztBQUFBLGNBQVE7QUFBQyxrQkFBRSxNQUFJLElBQUUsTUFBRyxJQUFFLElBQUUsSUFBRyxNQUFJLEtBQUcsSUFBRSxJQUFFLElBQUUsSUFBRSxNQUFJLE1BQUksSUFBRSxLQUFHLElBQUUsT0FBSyxJQUFFO0FBQUEsWUFBRztBQUFDLG1CQUFPLElBQUUsS0FBRyxJQUFFLEtBQUcsTUFBSSxLQUFHLE1BQUksS0FBRyxNQUFJLElBQUUsS0FBRyxNQUFJLElBQUUsSUFBRSxLQUFHLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsSUFBRztBQUFDLHFCQUFRLElBQUUsSUFBRyxHQUFFLEVBQUUsSUFBRSxVQUFVO0FBQVEsZ0JBQUUsVUFBVSxFQUFFLEdBQUUsVUFBVSxPQUFLLElBQUUsTUFBSSxTQUFPLFVBQVUsS0FBRyxJQUFFLE1BQUksVUFBVTtBQUFJLG1CQUFPLE1BQUksU0FBTyxNQUFJLEVBQUUsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxnQkFBSSxHQUFFO0FBQUUsbUJBQU8sRUFBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLFdBQVcsQ0FBQyxNQUFJLElBQUcsSUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFFLFVBQVEsQ0FBQyxNQUFJLElBQUUsTUFBSyxFQUFFLFVBQVEsRUFBRSxXQUFXLEVBQUUsU0FBTyxDQUFDLE1BQUksT0FBSyxLQUFHLE1BQUssSUFBRSxNQUFJLElBQUU7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBUSxJQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsSUFBRyxJQUFFLEdBQUUsSUFBRSxJQUFHLEdBQUUsR0FBRSxFQUFFLEtBQUcsRUFBRSxVQUFRO0FBQUMsa0JBQUcsSUFBRSxFQUFFO0FBQU8sb0JBQUUsRUFBRSxXQUFXLENBQUM7QUFBQSxtQkFBTTtBQUFDLG9CQUFHLE1BQUk7QUFBRztBQUFNLG9CQUFFO0FBQUEsY0FBRTtBQUFDLGtCQUFHLE1BQUksSUFBRztBQUFDLG9CQUFHLEVBQUUsTUFBSSxJQUFFLEtBQUcsTUFBSTtBQUFHLHNCQUFHLE1BQUksSUFBRSxLQUFHLE1BQUksR0FBRTtBQUFDLHdCQUFHLEVBQUUsU0FBTyxLQUFHLE1BQUksS0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFPLENBQUMsTUFBSSxNQUFJLEVBQUUsV0FBVyxFQUFFLFNBQU8sQ0FBQyxNQUFJLElBQUc7QUFBQywwQkFBRyxFQUFFLFNBQU8sR0FBRTtBQUFDLDRCQUFHLElBQUUsRUFBRSxZQUFZLEdBQUcsR0FBRSxNQUFJLEVBQUUsU0FBTyxHQUFFO0FBQUMsOEJBQUUsS0FBRyxJQUFFLElBQUcsSUFBRSxNQUFJLElBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxTQUFPLElBQUUsRUFBRSxZQUFZLEdBQUcsSUFBRyxJQUFFLEdBQUUsSUFBRTtBQUFFO0FBQUEsd0JBQVE7QUFBQSxzQkFBQyxXQUFTLEVBQUUsUUFBTztBQUFDLDRCQUFFLElBQUcsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFO0FBQUU7QUFBQSxzQkFBUTtBQUFBLG9CQUFDO0FBQUMsMEJBQUksSUFBRSxFQUFFLFNBQU8sSUFBRSxRQUFNLE1BQUssSUFBRTtBQUFBLGtCQUFFO0FBQU0sc0JBQUUsU0FBTyxLQUFHLE1BQUksRUFBRSxNQUFNLElBQUUsR0FBRSxDQUFDLElBQUUsSUFBRSxFQUFFLE1BQU0sSUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLElBQUUsSUFBRTtBQUFFLG9CQUFFLEdBQUUsSUFBRTtBQUFBLGNBQUM7QUFBTSxzQkFBSSxNQUFJLElBQUUsS0FBRyxNQUFJLElBQUU7QUFBQSxZQUFFO0FBQUMsbUJBQU87QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUcsT0FBTyxLQUFHO0FBQVMsb0JBQU0sSUFBSSxVQUFVLHFDQUFtQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQUEsVUFBQztBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsNENBQTRDLEdBQUU7QUFBQztBQUFhLFlBQUUsR0FBRSxFQUFFLE1BQUk7QUFBRSxtQkFBUyxJQUFHO0FBQUMsbUJBQU07QUFBQSxVQUFHO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyxpQ0FBaUMsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFO0FBQUUsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUcsR0FBRSxJQUFFLEdBQUc7QUFBRSxZQUFFLFVBQVE7QUFBRSxjQUFJLElBQUUsQ0FBQyxFQUFFLGdCQUFlLElBQUUsQ0FBQyxXQUFVLFFBQU8sWUFBVyxRQUFPLFdBQVUsU0FBUztBQUFFLFlBQUUsVUFBVSxXQUFTLEdBQUUsT0FBTyxlQUFlLEVBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxHQUFFLEtBQUksRUFBQyxDQUFDLEdBQUUsT0FBTyxlQUFlLEVBQUUsV0FBVSxXQUFVLEVBQUMsS0FBSSxHQUFFLEtBQUksRUFBQyxDQUFDLEdBQUUsT0FBTyxlQUFlLEVBQUUsV0FBVSxZQUFXLEVBQUMsS0FBSSxHQUFFLEtBQUksRUFBQyxDQUFDLEdBQUUsT0FBTyxlQUFlLEVBQUUsV0FBVSxXQUFVLEVBQUMsS0FBSSxHQUFFLEtBQUksRUFBQyxDQUFDLEdBQUUsT0FBTyxlQUFlLEVBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxHQUFFLEtBQUksRUFBQyxDQUFDO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsZ0JBQUksR0FBRTtBQUFFLGdCQUFHLENBQUM7QUFBRSxrQkFBRSxDQUFDO0FBQUEscUJBQVUsT0FBTyxLQUFHLFlBQVUsRUFBRSxDQUFDO0FBQUUsa0JBQUUsRUFBQyxVQUFTLEVBQUM7QUFBQSxxQkFBVSxhQUFZLEtBQUcsY0FBYTtBQUFFLHFCQUFPO0FBQUUsZ0JBQUcsRUFBRSxnQkFBZ0I7QUFBRyxxQkFBTyxJQUFJLEVBQUUsQ0FBQztBQUFFLGlCQUFJLEtBQUssT0FBSyxDQUFDLEdBQUUsS0FBSyxXQUFTLENBQUMsR0FBRSxLQUFLLFVBQVEsQ0FBQyxHQUFFLEtBQUssTUFBSSxFQUFFLElBQUksR0FBRSxJQUFFLElBQUcsRUFBRSxJQUFFLEVBQUU7QUFBUSxrQkFBRSxFQUFFLElBQUcsRUFBRSxLQUFLLEdBQUUsQ0FBQyxNQUFJLEtBQUssS0FBRyxFQUFFO0FBQUksaUJBQUksS0FBSztBQUFFLGdCQUFFLFFBQVEsQ0FBQyxJQUFFLE1BQUksS0FBSyxLQUFHLEVBQUU7QUFBQSxVQUFHO0FBQUMsbUJBQVMsSUFBRztBQUFDLG1CQUFPLEtBQUssUUFBUSxLQUFLLFFBQVEsU0FBTztBQUFBLFVBQUU7QUFBQyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxjQUFFLEdBQUUsTUFBTSxHQUFFLEtBQUssU0FBTyxLQUFHLEtBQUssUUFBUSxLQUFLLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsSUFBRztBQUFDLG1CQUFPLE9BQU8sS0FBSyxRQUFNLFdBQVMsRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFFO0FBQUEsVUFBTTtBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGNBQUUsS0FBSyxNQUFLLFNBQVMsR0FBRSxLQUFLLE9BQUssRUFBRSxLQUFLLEtBQUcsSUFBRyxLQUFLLFFBQVE7QUFBQSxVQUFDO0FBQUMsbUJBQVMsSUFBRztBQUFDLG1CQUFPLE9BQU8sS0FBSyxRQUFNLFdBQVMsRUFBRSxTQUFTLEtBQUssSUFBSSxJQUFFO0FBQUEsVUFBTTtBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGNBQUUsR0FBRSxVQUFVLEdBQUUsRUFBRSxHQUFFLFVBQVUsR0FBRSxLQUFLLE9BQUssRUFBRSxLQUFLLEtBQUssV0FBUyxJQUFHLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsSUFBRztBQUFDLG1CQUFPLE9BQU8sS0FBSyxRQUFNLFdBQVMsRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFFO0FBQUEsVUFBTTtBQUFDLG1CQUFTLEVBQUUsR0FBRTtBQUFDLGdCQUFHLEVBQUUsR0FBRSxTQUFTLEdBQUUsRUFBRSxLQUFLLE1BQUssU0FBUyxHQUFFLEdBQUU7QUFBQyxrQkFBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJO0FBQUcsc0JBQU0sSUFBSSxNQUFNLCtCQUErQjtBQUFFLGtCQUFHLEVBQUUsUUFBUSxLQUFJLENBQUMsSUFBRTtBQUFHLHNCQUFNLElBQUksTUFBTSx3Q0FBd0M7QUFBQSxZQUFDO0FBQUMsaUJBQUssT0FBSyxFQUFFLEtBQUssS0FBSyxTQUFRLEtBQUssUUFBTSxLQUFHLEdBQUc7QUFBQSxVQUFDO0FBQUMsbUJBQVMsSUFBRztBQUFDLG1CQUFPLE9BQU8sS0FBSyxRQUFNLFdBQVMsRUFBRSxTQUFTLEtBQUssTUFBSyxLQUFLLE9BQU8sSUFBRTtBQUFBLFVBQU07QUFBQyxt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RSxXQUFXLENBQUMsTUFBSTtBQUFHO0FBQUksbUJBQUksSUFBRSxHQUFFLElBQUUsS0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJO0FBQUc7QUFBSSxrQkFBRyxJQUFFLElBQUUsR0FBRSxFQUFFLElBQUUsSUFBRztBQUFDLHVCQUFLLElBQUUsS0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJO0FBQUc7QUFBSSxxQkFBSSxJQUFFLEdBQUUsSUFBRSxLQUFHO0FBQUMsc0JBQUcsSUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLE1BQUk7QUFBRTtBQUFPLHNCQUFHLE1BQUk7QUFBRTtBQUFNO0FBQUEsZ0JBQUc7QUFBQyxvQkFBRyxFQUFFLFdBQVcsQ0FBQyxNQUFJLEdBQUU7QUFBQyxzQkFBRztBQUFFLDJCQUFNO0FBQUcsdUJBQUksSUFBRSxDQUFDLEdBQUUsTUFBSSxLQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRSxDQUFDLENBQUMsR0FBRSxLQUFJLElBQUUsRUFBRSxRQUFRLEdBQUUsSUFBRSxDQUFDLEdBQUUsSUFBRSxNQUFJLEtBQUcsSUFBRSxHQUFFLElBQUUsS0FBRztBQUFDLHlCQUFJLElBQUUsT0FBRyxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxLQUFHLEVBQUUsV0FBVyxJQUFFLENBQUMsTUFBSTtBQUFHO0FBQUksMkJBQUssSUFBRSxLQUFHLEVBQUUsV0FBVyxJQUFFLENBQUMsTUFBSTtBQUFHLDJCQUFJO0FBQUkseUJBQUksS0FBRyxLQUFHLEVBQUUsUUFBUSxHQUFFLENBQUMsTUFBSSxNQUFJLElBQUUsTUFBRyxJQUFFLElBQUcsS0FBRyxLQUFHLElBQUUsSUFBRSxLQUFHLEVBQUUsV0FBVyxDQUFDLE1BQUk7QUFBRztBQUFJLHdCQUFHO0FBQUUsNkJBQUssSUFBRSxLQUFHLEVBQUUsV0FBVyxJQUFFLENBQUMsTUFBSTtBQUFHO0FBQUkseUJBQUksQ0FBQyxLQUFHLE1BQUksTUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUUsQ0FBQyxDQUFDLEdBQUU7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QUUsb0JBQUcsTUFBSTtBQUFPLHlCQUFNO0FBQUcsb0JBQUcsTUFBSTtBQUFFO0FBQVMsdUJBQU8sRUFBRSxHQUFFLENBQUM7QUFBQSxjQUFDLFNBQU8sRUFBRTtBQUFBLFlBQUU7QUFBQSxZQUFDLElBQUksR0FBRSxHQUFFO0FBQUMsc0JBQU87QUFBQSxxQkFBTztBQUFXLHVCQUFLLFdBQVcsU0FBTyxHQUFFLEtBQUssUUFBTSxHQUFFLEtBQUssUUFBTSxHQUFFLEtBQUssU0FBUSxLQUFLLElBQUksT0FBTSxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFXLHVCQUFLLFdBQVcsU0FBTyxHQUFFLEtBQUssUUFBTSxHQUFFLEtBQUssU0FBUSxLQUFLLElBQUksT0FBTSxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFXLHVCQUFLLFdBQVcsU0FBTyxHQUFFLEtBQUssSUFBSSxTQUFRLENBQUMsR0FBRSxLQUFLLElBQUksT0FBTSxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFhLHVCQUFLLFdBQVcsV0FBUyxLQUFHLEtBQUssSUFBSSxTQUFRLENBQUMsR0FBRSxLQUFLLElBQUksT0FBTSxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFRLG1CQUFDLEtBQUssVUFBUSxLQUFHLEtBQUssVUFBUSxLQUFHLEtBQUssV0FBVyxXQUFTLE1BQUksS0FBSyxTQUFRLEtBQUssUUFBTSxHQUFFLEtBQUssUUFBTSxHQUFFLEtBQUssYUFBVyxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFRLG1CQUFDLEtBQUssVUFBUSxLQUFHLEtBQUssV0FBVyxXQUFTLE1BQUksS0FBSyxTQUFRLEtBQUssUUFBTSxHQUFFLEtBQUssYUFBVyxDQUFDO0FBQUU7QUFBQSxxQkFBVTtBQUFRLHVCQUFLLFdBQVcsV0FBUyxLQUFHLEtBQUssU0FBUSxLQUFLLGFBQVcsQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBTSxzQkFBRyxLQUFLLFdBQVcsV0FBUztBQUFFLHlCQUFLLGFBQVcsQ0FBQyxDQUFDO0FBQUEsdUJBQU07QUFBQyx3QkFBSSxJQUFFLEtBQUssV0FBVztBQUFPLDJCQUFLLEVBQUUsS0FBRztBQUFHLDZCQUFPLEtBQUssV0FBVyxNQUFJLGFBQVcsS0FBSyxXQUFXLE1BQUssSUFBRTtBQUFJLDBCQUFJLE1BQUksS0FBSyxXQUFXLEtBQUssQ0FBQztBQUFBLGtCQUFDO0FBQUMsd0JBQUksRUFBRSxLQUFLLFdBQVcsSUFBRyxDQUFDLE1BQUksSUFBRSxNQUFNLEtBQUssV0FBVyxFQUFFLE1BQUksS0FBSyxhQUFXLENBQUMsR0FBRSxDQUFDLEtBQUcsS0FBSyxhQUFXLENBQUMsR0FBRSxDQUFDO0FBQUc7QUFBQTtBQUFjLHdCQUFNLElBQUksTUFBTSwrQkFBK0IsT0FBTyxDQUFDLENBQUM7QUFBQTtBQUFFLHFCQUFPLEtBQUssT0FBTyxHQUFFLEtBQUssTUFBSSxLQUFLLFNBQVE7QUFBQSxZQUFJO0FBQUEsVUFBQztBQUFFLFlBQUUsVUFBUTtBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsMkNBQTJDLEdBQUUsR0FBRTtBQUFDLFlBQUU7QUFBRSxjQUFJLElBQUUsR0FBRyxHQUFFLElBQUUsQ0FBQyxHQUFFLEdBQUUsTUFBSSxJQUFJLEVBQUUsR0FBRSxDQUFDLEVBQUUsUUFBUSxJQUFJLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSxZQUFFLFVBQVE7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLHNDQUFzQyxHQUFFLEdBQUU7QUFBQyxZQUFFO0FBQUUsY0FBSSxJQUFFLEdBQUcsR0FBRSxJQUFFLENBQUMsR0FBRSxHQUFFLE1BQUksRUFBRSxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUUsWUFBRSxVQUFRO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyx1Q0FBdUMsR0FBRSxHQUFFO0FBQUMsWUFBRTtBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxDQUFDLEdBQUUsR0FBRSxNQUFJLEVBQUUsR0FBRSxHQUFFLENBQUMsS0FBRztBQUFFLFlBQUUsVUFBUTtBQUFBLFFBQUMsRUFBQyxDQUFDLEdBQUUsS0FBRyxFQUFFLEVBQUMsd0JBQXdCLEdBQUUsR0FBRTtBQUFDO0FBQWEsWUFBRSxHQUFFLEVBQUUsVUFBUSxDQUFDLEdBQUUsTUFBSSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksT0FBRztBQUFDLGdCQUFHLENBQUMsR0FBRSxDQUFDLElBQUU7QUFBRSxtQkFBTyxPQUFPLE9BQU8sRUFBQyxDQUFDLElBQUcsRUFBQyxHQUFFLENBQUM7QUFBQSxVQUFDLENBQUM7QUFBQSxRQUFDLEVBQUMsQ0FBQyxHQUFFLEtBQUcsRUFBRSxFQUFDLGVBQWUsR0FBRSxHQUFFO0FBQUMsWUFBRSxVQUFRLEVBQUMsU0FBUSxRQUFPO0FBQUEsUUFBQyxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQyxvQ0FBb0MsR0FBRSxHQUFFO0FBQUM7QUFBYSxZQUFFLEdBQUUsT0FBTyxlQUFlLEdBQUUsY0FBYSxFQUFDLE9BQU0sS0FBRSxDQUFDLEdBQUUsRUFBRSxVQUFRO0FBQU8sbUJBQVMsSUFBRztBQUFDLHFCQUFRLElBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLFVBQVUsUUFBTztBQUFJLGdCQUFFLEtBQUcsVUFBVTtBQUFBLFVBQUU7QUFBQyxtQkFBUyxJQUFHO0FBQUMsbUJBQU8sT0FBTyxVQUFRLE1BQUksb0JBQUksWUFBUSxFQUFFO0FBQUEsVUFBQztBQUFDLG1CQUFTLElBQUc7QUFBQyxtQkFBTSxFQUFDLEtBQUksR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLEtBQUksR0FBRSxLQUFJLFNBQVMsR0FBRTtBQUFDLHFCQUFNO0FBQUEsWUFBRSxFQUFDO0FBQUEsVUFBQztBQUFDLGNBQUksSUFBRSxPQUFPLFVBQVUsZ0JBQWUsSUFBRSxTQUFTLEdBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsS0FBSyxHQUFFLENBQUM7QUFBQSxVQUFDO0FBQUUsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxxQkFBUSxLQUFLO0FBQUUsZ0JBQUUsR0FBRSxDQUFDLE1BQUksRUFBRSxLQUFHLEVBQUU7QUFB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QUFTLEdBQUUsTUFBSyxVQUFTLFNBQVEsQ0FBQyxFQUFDLE9BQU0sVUFBUyxPQUFNLFVBQVMsR0FBRSxFQUFDLE9BQU0sVUFBUyxPQUFNLE9BQU0sQ0FBQyxHQUFFLGFBQVksd0JBQXVCLFdBQVUsT0FBRyxPQUFPLEtBQUcsWUFBVSxPQUFPLEtBQUcsWUFBVyxTQUFRLENBQUMsRUFBQyxPQUFNLFFBQU8sYUFBWSxPQUFNLEdBQUUsRUFBQyxPQUFNLFNBQVEsT0FBTSxVQUFTLGFBQVksYUFBWSxHQUFFLEVBQUMsT0FBTSxjQUFhLE9BQU0sVUFBUyxhQUFZLE9BQU0sR0FBRSxFQUFDLE9BQU0sWUFBVyxPQUFNLFNBQVEsYUFBWSxhQUFZLEdBQUUsRUFBQyxPQUFNLGNBQWEsT0FBTSxTQUFRLGFBQVksYUFBWSxHQUFFLEVBQUMsT0FBTSxTQUFRLE9BQU0sU0FBUSxhQUFZLGFBQVksR0FBRSxFQUFDLE9BQU0sVUFBUyxPQUFNLFNBQVEsYUFBWSxhQUFZLEdBQUUsRUFBQyxPQUFNLFdBQVUsT0FBTSxTQUFRLGFBQVksYUFBWSxHQUFFLEVBQUMsT0FBTSxPQUFNLE9BQU0sU0FBUSxhQUFZLE1BQUssR0FBRSxFQUFDLE9BQU0sUUFBTyxPQUFNLFNBQVEsYUFBWSxPQUFNLEdBQUUsRUFBQyxPQUFNLFFBQU8sT0FBTSxTQUFRLGFBQVksT0FBTSxHQUFFLEVBQUMsT0FBTSxRQUFPLE9BQU0sU0FBUSxhQUFZLE9BQU0sR0FBRSxFQUFDLE9BQU0sU0FBUSxPQUFNLFVBQVMsYUFBWSxRQUFPLEdBQUUsRUFBQyxPQUFNLGtCQUFpQixPQUFNLFVBQVMsYUFBWSxpQkFBZ0IsR0FBRSxFQUFDLE9BQU0sV0FBVSxPQUFNLFNBQVEsYUFBWSxVQUFTLEdBQUUsRUFBQyxPQUFNLFlBQVcsT0FBTSxTQUFRLGFBQVksV0FBVSxHQUFFLEVBQUMsT0FBTSxPQUFNLE9BQU0sVUFBUyxhQUFZLE1BQUssR0FBRSxFQUFDLE9BQU0sT0FBTSxPQUFNLFVBQVMsYUFBWSxNQUFLLEdBQUUsRUFBQyxPQUFNLFFBQU8sT0FBTSxVQUFTLGFBQVks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QUUsQ0FBQyxJQUFFO0FBQUUsZ0JBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxXQUFVLEtBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxXQUFVLEtBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxXQUFVLEtBQUUsQ0FBQztBQUFFLGdCQUFJLElBQUUsRUFBRSxHQUFFLEdBQUUsRUFBQyxXQUFVLEtBQUUsQ0FBQztBQUFFLG1CQUFPLE1BQUk7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLE1BQUssSUFBRTtBQUFFLG1CQUFLLE1BQUk7QUFBRyxrQkFBRSxHQUFFLElBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsQ0FBQztBQUFFLG1CQUFPLElBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxTQUFJLEVBQUUsR0FBRSxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxPQUFPLEVBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUM7QUFBRSxtQkFBTyxFQUFFLEdBQUUsRUFBRSxZQUFVLElBQUUsSUFBRSxHQUFFLENBQUMsTUFBSTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFD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LEtBQUcsR0FBRyxNQUFLLEtBQUcsR0FBRyxNQUFLLEtBQUcsTUFBSSxHQUFHLEtBQUssSUFBRyxFQUFFO0FBQUUsV0FBRyxVQUFRLEtBQUcsU0FBUyxHQUFFO0FBQUMsaUJBQU8sS0FBRyxHQUFHLENBQUM7QUFBQSxRQUFDLElBQUUsU0FBUyxHQUFFO0FBQUMsaUJBQU8sS0FBRyxXQUFVO0FBQUMsbUJBQU8sR0FBRyxNQUFNLEdBQUUsU0FBUztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFFLEtBQUcsR0FBRyxHQUFHLEtBQUs7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFHLENBQUMsR0FBRSxHQUFFLEVBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxRQUFPLEtBQUcsR0FBRyxHQUFHLEtBQUs7QUFBRSxXQUFHLFVBQVEsR0FBRyxXQUFVO0FBQUMsaUJBQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQztBQUFBLFFBQUMsQ0FBQyxJQUFFLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsQ0FBQyxLQUFHLFdBQVMsR0FBRyxHQUFFLEVBQUUsSUFBRSxHQUFHLENBQUM7QUFBQSxRQUFDLElBQUU7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHO0FBQVUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUcsS0FBRztBQUFLLGtCQUFNLEdBQUcsMEJBQXdCLENBQUM7QUFBRSxpQkFBTztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxJQUFFLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sT0FBTyxLQUFHO0FBQUEsUUFBVTtBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUU7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sT0FBTyxLQUFHLFdBQVMsTUFBSSxPQUFLLEdBQUcsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxFQUFFLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLENBQUMsSUFBRSxJQUFFO0FBQUEsUUFBTTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGlCQUFPLFVBQVUsU0FBTyxJQUFFLEdBQUcsR0FBRyxFQUFFLElBQUUsR0FBRyxNQUFJLEdBQUcsR0FBRztBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFO0FBQUUsV0FBRyxVQUFRLEdBQUcsQ0FBQyxFQUFFLGFBQWE7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLEdBQUcsYUFBWSxXQUFXLEtBQUc7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFNBQVEsS0FBRyxHQUFHLE1BQUssS0FBRyxNQUFJLEdBQUcsWUFBVSxNQUFJLEdBQUcsU0FBUSxLQUFHLE1BQUksR0FBRyxJQUFHLElBQUc7QUFBRyxlQUFLLEtBQUcsR0FBRyxNQUFNLEdBQUcsR0FBRSxLQUFHLEdBQUcsS0FBRyxLQUFHLEdBQUcsS0FBRyxJQUFFLElBQUUsRUFBRSxHQUFHLEtBQUcsR0FBRztBQUFLLFNBQUMsTUFBSSxPQUFLLEtBQUcsR0FBRyxNQUFNLGFBQWEsSUFBRyxDQUFDLE1BQUksR0FBRyxNQUFJLFFBQU0sS0FBRyxHQUFHLE1BQU0sZUFBZSxHQUFFLE9BQUssS0FBRyxDQUFDLEdBQUc7QUFBTSxXQUFHLFVBQVE7QUFBQSxNQUFFLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLENBQUMsQ0FBQyxPQUFPLHlCQUF1QixDQUFDLEdBQUcsV0FBVTtBQUFDLGNBQUksSUFBRSxPQUFPO0FBQUUsaUJBQU0sQ0FBQyxPQUFPLENBQUMsS0FBRyxFQUFFLE9BQU8sQ0FBQyxhQUFZLFdBQVMsQ0FBQyxPQUFPLFFBQU0sTUFBSSxLQUFHO0FBQUEsUUFBRSxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxNQUFJLENBQUMsT0FBTyxRQUFNLE9BQU8sT0FBTyxZQUFVO0FBQUEsTUFBUSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFF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QUcsTUFBSSxTQUFPLElBQUUsQ0FBQztBQUFBLFFBQUUsR0FBRyxZQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBQyxTQUFRLFVBQVMsTUFBSyxLQUFHLFNBQU8sVUFBUyxXQUFVLGdEQUErQyxTQUFRLDREQUEyRCxRQUFPLHNDQUFxQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFPLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsQ0FBQyxFQUFFLGNBQWM7QUFBRSxXQUFHLFVBQVEsT0FBTyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsaUJBQU8sR0FBRyxHQUFHLENBQUMsR0FBRSxDQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUUsS0FBRyxLQUFLLE9BQU8sR0FBRSxLQUFHLEdBQUcsR0FBRyxRQUFRO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRTtBQUFDLGlCQUFNLGFBQVcsTUFBSSxTQUFPLEtBQUcsS0FBRyxPQUFLLEdBQUcsRUFBRSxLQUFHLElBQUcsRUFBRTtBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEtBQUssR0FBRSxLQUFHLEdBQUcsUUFBTyxLQUFHLE1BQUksR0FBRyxLQUFJLEtBQUcsS0FBRyxLQUFHLE1BQUksR0FBRyxpQkFBZTtBQUFHLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFHLENBQUMsR0FBRyxJQUFHLENBQUMsS0FBRyxFQUFFLE1BQUksT0FBTyxHQUFHLE1BQUksV0FBVTtBQUFDLGdCQUFJLElBQUUsWUFBVTtBQUFFLGtCQUFJLEdBQUcsSUFBRyxDQUFDLElBQUUsR0FBRyxLQUFHLEdBQUcsS0FBRyxNQUFJLEtBQUcsR0FBRyxLQUFHLEdBQUcsQ0FBQyxJQUFFLEdBQUcsS0FBRyxHQUFHLENBQUM7QUFBQSxVQUFDO0FBQUMsaUJBQU8sR0FBRztBQUFBLFFBQUU7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFdBQVUsS0FBRyxHQUFHLGFBQWE7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFLEdBQUU7QUFBQyxjQUFHLENBQUMsR0FBRyxDQUFDLEtBQUcsR0FBRyxDQUFDO0FBQUUsbUJBQU87QUFBRSxjQUFJLElBQUUsR0FBRyxHQUFFLEVBQUUsR0FBRTtBQUFFLGNBQUcsR0FBRTtBQUFDLGdCQUFHLE1BQUksV0FBUyxJQUFFLFlBQVcsSUFBRSxHQUFHLEdBQUUsR0FBRSxDQUFDLEdBQUUsQ0FBQyxHQUFHLENBQUMsS0FBRyxHQUFHLENBQUM7QUFBRSxxQkFBTztBQUFFLGtCQUFNLEdBQUcseUNBQXlDO0FBQUEsVUFBQztBQUFDLGlCQUFPLE1BQUksV0FBUyxJQUFFLFdBQVUsR0FBRyxHQUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFJLElBQUUsR0FBRyxHQUFFLFFBQVE7QUFBRSxpQkFBTyxHQUFHLENBQUMsSUFBRSxJQUFFLElBQUU7QUFBQSxRQUFFO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxVQUFTLEtBQUcsR0FBRyxFQUFFLEtBQUcsR0FBRyxHQUFHLGFBQWE7QUFBRSxXQUFHLFVBQVEsU0FBUyxHQUFFO0FBQUMsaUJBQU8sS0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFFLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxDQUFDLE1BQUksQ0FBQyxHQUFHLFdBQVU7QUFBQyxpQkFBTyxPQUFPLGVBQWUsR0FBRyxLQUFLLEdBQUUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLG1CQUFPO0FBQUEsVUFBQyxFQUFDLENBQUMsRUFBRSxLQUFHO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsUUFBSTtBQUFDLFlBQUksS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxPQUFPO0FBQXlCLFdBQUcsSUFBRSxLQUFHLEtBQUcsU0FBUyxHQUFFLEdBQUU7QUFBQyxjQUFHLElBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLENBQUMsR0FBRTtBQUFHLGdCQUFHO0FBQUMscUJBQU8sR0FBRyxHQUFFLENBQUM7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LEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBSSxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsUUFBTyxJQUFFLEVBQUUsTUFBSyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBRSxjQUFHLElBQUUsSUFBRSxLQUFHLElBQUUsSUFBRSxHQUFHLE1BQUksR0FBRyxHQUFFLENBQUMsQ0FBQyxJQUFFLEtBQUcsR0FBRyxNQUFJLENBQUMsR0FBRyxXQUFVO0FBQUUsaUJBQUksS0FBSyxHQUFFO0FBQUMsa0JBQUcsSUFBRSxFQUFFLElBQUcsRUFBRSxlQUFhLElBQUUsR0FBRyxHQUFFLENBQUMsR0FBRSxJQUFFLEtBQUcsRUFBRSxTQUFPLElBQUUsRUFBRSxJQUFHLElBQUUsR0FBRyxJQUFFLElBQUUsS0FBRyxJQUFFLE1BQUksT0FBSyxHQUFFLEVBQUUsTUFBTSxHQUFFLENBQUMsS0FBRyxNQUFJLFFBQU87QUFBQyxvQkFBRyxPQUFPLEtBQUcsT0FBTztBQUFFO0FBQVMsbUJBQUcsR0FBRSxDQUFDO0FBQUEsY0FBQztBQUFDLGVBQUMsRUFBRSxRQUFNLEtBQUcsRUFBRSxTQUFPLEdBQUcsR0FBRSxRQUFPLElBQUUsR0FBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLENBQUM7QUFBQSxZQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLE1BQUk7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsRUFBRTtBQUFFLFdBQUcsRUFBQyxRQUFPLEtBQUUsR0FBRSxFQUFDLFlBQVcsR0FBRSxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsTUFBSTtBQUFDLFdBQUc7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxHQUFHO0FBQUUsV0FBRyxVQUFRLE1BQU0sV0FBUyxTQUFTLEdBQUU7QUFBQyxpQkFBTyxHQUFHLENBQUMsS0FBRztBQUFBLFFBQU87QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxDQUFDLElBQUcsT0FBSztBQUFDLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUcsSUFBSTtBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGlCQUFPLEdBQUcsQ0FBQyxHQUFFLE1BQUksU0FBTyxJQUFFLEtBQUcsR0FBRyxHQUFFLENBQUMsSUFBRSxXQUFVO0FBQUMsbUJBQU8sRUFBRSxNQUFNLEdBQUUsU0FBUztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQztBQUFhLFlBQUksS0FBRyxFQUFFLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLEdBQUUsS0FBRyxHQUFHLFdBQVUsS0FBRyxTQUFTLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFRLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRSxJQUFFLEdBQUcsR0FBRSxDQUFDLElBQUUsT0FBRyxHQUFFLEdBQUUsSUFBRSxLQUFHO0FBQUMsZ0JBQUcsS0FBSyxHQUFFO0FBQUMsa0JBQUcsSUFBRSxJQUFFLEVBQUUsRUFBRSxJQUFHLEdBQUUsQ0FBQyxJQUFFLEVBQUUsSUFBRyxJQUFFLEtBQUcsR0FBRyxDQUFDO0FBQUUsb0JBQUUsR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxJQUFFLENBQUMsSUFBRTtBQUFBLG1CQUFNO0FBQUMsb0JBQUcsS0FBRztBQUFpQix3QkFBTSxHQUFHLG9DQUFvQztBQUFFLGtCQUFFLEtBQUc7QUFBQSxjQUFDO0FBQUM7QUFBQSxZQUFHO0FBQUM7QUFBQSxVQUFHO0FBQUMsaUJBQU87QUFBQSxRQUFDO0FBQUUsV0FBRyxVQUFRO0FBQUEsTUFBRSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxhQUFhLEdBQUUsS0FBRyxDQUFDO0FBQUUsV0FBRyxNQUFJO0FBQUksV0FBRyxVQUFRLE9BQU8sRUFBRSxNQUFJO0FBQUEsTUFBWSxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsRUFBRSxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxhQUFhLEdBQUUsS0FBRyxHQUFHLFFBQU8sS0FBRyxHQUFHLFdBQVU7QUFBQyxpQkFBTztBQUFBLFFBQVMsRUFBRSxDQUFDLEtBQUcsYUFBWSxLQUFHLFNBQVMsR0FBRSxHQUFFO0FBQUMsY0FBRztBQUFDLG1CQUFPLEVBQUU7QUFBQSxVQUFFLFFBQUM7QUFBQSxVQUFNO0FBQUEsUUFBQztBQUFFLFdBQUcsVUFBUSxLQUFHLEtBQUcsU0FBUyxHQUFFO0FBQUMsY0FBSSxHQUFFLEdBQUU7QUFBRSxpQkFBTyxNQUFJLFNBQU8sY0FBWSxNQUFJLE9BQUssU0FBTyxRQUFPLElBQUUsR0FBRyxJQUFFLEdBQUcsQ0FBQyxHQUFFLEVBQUUsTUFBSSxXQUFTLElBQUUsS0FBRyxHQUFHLENBQUMsS0FBRyxJQUFFLEdBQUcsQ0FBQyxNQUFJLFlBQVUsR0FBRyxFQUFFLE1BQU0sSUFBRSxjQUFZO0FBQUEsUUFBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLFdBQVU7QUFBQSxRQUFDLEdBQUUsS0FBRyxDQUFDLEdBQUUsS0FBRyxHQUFHLFdBQVUsV0FBVyxHQUFFLEtBQUcsNEJBQTJCLEtBQUcsR0FBRyxHQUFHLElBQUksR0FBRSxLQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRSxLQUFHLFNBQVMsR0FBRTtBQUFDLGNBQUcsQ0FBQyxHQUFHLENBQUM7QUFBRSxtQkFBTTtBQUFHLGNBQUc7QUFBQyxtQkFBTyxHQUFHLElBQUcsSUFBRyxDQUFDLEdBQUU7QUFBQSxVQUFFLFFBQUM7QUFBTSxtQkFBTTtBQUFBLFVBQUU7QUFBQSxRQUFDLEdBQUUsS0FBRyxTQUFTLEdBQUU7QUFBQyxjQUFHLENBQUMsR0FBRyxDQUFDO0FBQUUsbUJBQU07QUFBRyxrQkFBTyxHQUFHLENBQUM7QUFBQSxpQkFBTztBQUFBLGlCQUFvQjtBQUFBLGlCQUF3QjtBQUF5QixxQkFBTTtBQUFBO0FBQUcsY0FBRztBQUFDLG1CQUFPLE1BQUksQ0FBQyxDQUFDLEdBQUcsSUFBRyxHQUFHLENBQUMsQ0FBQztBQUFBLFVBQUMsUUFBQztBQUFNLG1CQUFNO0FBQUEsVUFBRTtBQUFBLFFBQUM7QUFBRSxXQUFHLE9BQUs7QUFBRyxXQUFHLFVBQVEsQ0FBQyxNQUFJLEdBQUcsV0FBVTtBQUFDLGNBQUk7QUFBRSxpQkFBTyxHQUFHLEdBQUcsSUFBSSxLQUFHLENBQUMsR0FBRyxNQUFNLEtBQUcsQ0FBQyxHQUFHLFdBQVU7QUFBQyxnQkFBRTtBQUFBLFVBQUUsQ0FBQyxLQUFHO0FBQUEsUUFBQyxDQUFDLElBQUUsS0FBRztBQUFBLE1BQUUsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEVBQUUsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsU0FBUyxHQUFFLEtBQUcsR0FBRztBQUFNLFdBQUcsVUFBUSxTQUFTLEdBQUU7QUFBQyxjQUFJO0FBQUUsaUJBQU8sR0FBRyxDQUFDLE1BQUksSUFBRSxFQUFFLGFBQVksR0FBRyxDQUFDLE1BQUksTUFBSSxNQUFJLEdBQUcsRUFBRSxTQUFTLEtBQUcsSUFBRSxTQUFPLEdBQUcsQ0FBQyxNQUFJLElBQUUsRUFBRSxLQUFJLE1BQUksU0FBTyxJQUFFLFdBQVUsTUFBSSxTQUFPLEtBQUc7QUFBQSxRQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxZQUFJLEtBQUcsR0FBRztBQUFFLFdBQUcsVUFBUSxTQUFTLEdBQUUsR0FBRTtBQUFDLGlCQUFPLEtBQUksR0FBRyxDQUFDLEdBQUcsTUFBSSxJQUFFLElBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQSxNQUFDLENBQUM7QUFBRSxVQUFJLEtBQUcsRUFBRSxNQUFJO0FBQUM7QUFBYSxZQUFJLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRyxHQUFFLEtBQUcsR0FBRztBQUFFLFdBQUcsRUFBQyxRQUFPLFNBQVEsT0FBTSxLQUFFLEdBQUUsRUFBQyxTQUFRLFNBQVMsR0FBRTtBQUFDLGNBQUksSUFBRSxHQUFHLElBQUksR0FBRSxJQUFFLEdBQUcsQ0FBQyxHQUFFO0FBQUUsaUJBQU8sR0FBRyxDQUFDLEdBQUUsSUFBRSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBTyxHQUFHLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsVUFBVSxTQUFPLElBQUUsVUFBVSxLQUFHLE1BQU0sR0FBRTtBQUFBLFFBQUMsRUFBQyxDQUFDO0FBQUEsTUFBQyxDQUFDO0FBQUUsVUFBSSxLQUFHLEVBQUUsQ0FBQyxJQUFHLE9BQUs7QUFBQyxXQUFHLFVBQVEsQ0FBQztBQUFBLE1BQUMsQ0FBQztBQUFFLFVBQUksS0FBRyxFQUFFLENBQUMsSUFBRyxPQUFLO0FBQUMsWUFBSSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsR0FBRSxLQUFHLEdBQUcsVUFBVSxHQUFFLEtBQUcsTUFBTTtB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RyxFQUFFLGFBQVcsSUFBRyxFQUFFLE1BQUksSUFBRyxFQUFFLE1BQUksSUFBRyxFQUFFLE1BQUksSUFBRyxFQUFFLFlBQVUsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLFlBQVUsSUFBRyxFQUFFLGFBQVcsSUFBRyxFQUFFLFlBQVUsSUFBRyxFQUFFLFNBQU8sSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsSUFBRyxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLEtBQUcsS0FBSSxFQUFFLFVBQVEsS0FBSSxFQUFFLE9BQUssS0FBSSxFQUFFLFVBQVEsS0FBSSxFQUFFLFFBQU0sS0FBSSxFQUFFLFFBQU0sS0FBSSxFQUFFLFNBQU8sS0FBSSxFQUFFLE1BQUksSUFBRyxFQUFFLE1BQUk7QUFBRyxtQkFBUyxFQUFFLEdBQUU7QUFBQyxtQkFBTyxLQUFHLEVBQUUsUUFBTSxLQUFHLEVBQUUsVUFBUSxLQUFHLEVBQUU7QUFBQSxVQUFLO0FBQUMsWUFBRSxlQUFhO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxNQUFJLEtBQUcsS0FBRyxFQUFFO0FBQUEsVUFBRTtBQUFDLFlBQUUsVUFBUTtBQUFFLG1CQUFTLEVBQUUsR0FBRTtBQUFDLG1CQUFPLEtBQUcsRUFBRSxNQUFJLEtBQUcsRUFBRSxNQUFJLEtBQUcsRUFBRSxNQUFJLEtBQUcsRUFBRTtBQUFBLFVBQUU7QUFBQyxZQUFFLGdCQUFjO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sS0FBRyxFQUFFLE1BQUksS0FBRyxFQUFF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RTtBQUFFLGlCQUFFO0FBQUMsb0JBQUksSUFBRSxLQUFLLE1BQU0sSUFBRyxJQUFFLEVBQUUsTUFBTTtBQUFHLG9CQUFHLEVBQUUsc0JBQXFCLEdBQUUsR0FBRSxDQUFDLEdBQUUsTUFBSSxVQUFRLE1BQUk7QUFBTyx5QkFBTztBQUFFLG9CQUFHLE1BQUk7QUFBTyx5QkFBTztBQUFFLG9CQUFHLE1BQUk7QUFBTyx5QkFBTTtBQUFHLG9CQUFHLE1BQUk7QUFBRTtBQUFTLHVCQUFPLEVBQUUsR0FBRSxDQUFDO0FBQUEsY0FBQyxTQUFPLEVBQUU7QUFBQSxZQUFFO0FBQUEsWUFBQyxJQUFJLEdBQUUsR0FBRTtBQUFDLHNCQUFPO0FBQUEscUJBQU87QUFBVyx1QkFBSyxXQUFXLFNBQU8sR0FBRSxLQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sR0FBRSxLQUFLLFNBQVEsS0FBSyxJQUFJLE9BQU0sQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBVyx1QkFBSyxXQUFXLFNBQU8sR0FBRSxLQUFLLFFBQU0sR0FBRSxLQUFLLFNBQVEsS0FBSyxJQUFJLE9BQU0sQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBVyx1QkFBSyxXQUFXLFNBQU8sR0FBRSxLQUFLLElBQUksU0FBUSxDQUFDLEdBQUUsS0FBSyxJQUFJLE9BQU0sQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBYSx1QkFBSyxXQUFXLFdBQVMsS0FBRyxLQUFLLElBQUksU0FBUSxDQUFDLEdBQUUsS0FBSyxJQUFJLE9BQU0sQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBUSxtQkFBQyxLQUFLLFVBQVEsS0FBRyxLQUFLLFVBQVEsS0FBRyxLQUFLLFdBQVcsV0FBUyxNQUFJLEtBQUssU0FBUSxLQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sR0FBRSxLQUFLLGFBQVcsQ0FBQztBQUFFO0FBQUEscUJBQVU7QUFBUSxtQkFBQyxLQUFLLFVBQVEsS0FBRyxLQUFLLFdBQVcsV0FBUyxNQUFJLEtBQUssU0FBUSxLQUFLLFFBQU0sR0FBRSxLQUFLLGFBQVcsQ0FBQztBQUFFO0FBQUEscUJB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QUU7QUFBQyxxQkFBUSxJQUFFLEdBQUUsSUFBRSxHQUFFLEVBQUU7QUFBRSxrQkFBRyxFQUFFLE9BQU8sQ0FBQyxNQUFJO0FBQUE7QUFDdC9CLHVCQUFNO0FBQUcsbUJBQU07QUFBQSxVQUFFO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRSxDQUFDLElBQUU7QUFBRSxnQkFBRSxFQUFFLEdBQUUsR0FBRSxFQUFDLFdBQVUsS0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFDLFdBQVUsS0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFDLFdBQVUsS0FBRSxDQUFDO0FBQUUsZ0JBQUksSUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFDLFdBQVUsS0FBRSxDQUFDO0FBQUUsbUJBQU8sTUFBSTtBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsTUFBSyxJQUFFO0FBQUUsbUJBQUssTUFBSTtBQUFHLGtCQUFFLEdBQUUsSUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsR0FBRSxDQUFDO0FBQUUsbUJBQU8sSUFBRSxFQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxHQUFFLENBQUMsR0FBRSxNQUFJLFNBQUksRUFBRSxHQUFFLENBQUM7QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLG1CQUFPLEVBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsbUJBQU8sRUFBRSxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxtQkFBTyxFQUFFLE9BQU8sRUFBRSxHQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsQ0FBQztBQUFFLG1CQUFPLEVBQUUsR0FBRSxFQUFFLFlBQVUsSUFBRSxJQUFFLEdBQUUsQ0FBQyxNQUFJO0FBQUEsVUFBQztBQUFDLG1CQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsR0FBRSxJQUFFO0FBQUUscUJBQVEsSUFBRSxHQUFFLElBQUUsRUFBRSxRQUFPLEVBQUU7QUFBRSxnQkFBRSxPQUFLLE1BQUksSUFBRSxJQUFFLElBQUUsSUFBRSxJQUFFO0FBQUksbUJBQU87QUFBQSxVQUFDO0FBQUMsbUJBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsWUFBWTtBQUFBLENBQy9xQjtBQUFFLG1CQUFPLE1BQUksS0FBRyxJQUFFLEVBQUUsRUFBRSxNQUFNLElBQUUsQ0FBQyxFQUFFLE1BQU0sU0FBUyxFQUFFLElBQUcsQ0FBQztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBQyxPQUFNLEtBQUksT0FBTSxNQUFLLFNBQVEsU0FBUSxHQUFFLElBQUUsRUFBQyxPQUFNLEtBQUksT0FBTSxNQUFLLFNBQVEsU0FBUSxHQUFFLElBQUUsTUFBSSxNQUFJLElBQUUsR0FBRSxJQUFFLE1BQUksSUFBRSxJQUFFLEdBQUUsSUFBRTtBQUFFLGdCQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssS0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUU7QUFBQyxrQkFBSSxLQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssS0FBRyxDQUFDLEdBQUcsUUFBTyxNQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssS0FBRyxDQUFDLEdBQUc7QUFBTyxrQkFBRSxJQUFFLEtBQUcsSUFBRTtBQUFBLFlBQUM7QUFBQyxtQkFBTztBQUFBLFVBQUM7QUFBQyxtQkFBUyxFQUFFLEdBQUUs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QUFZLFNBQVEsa0JBQWlCLE9BQU0sT0FBTSxTQUFRLFVBQVMsTUFBTSxHQUFFLEtBQUksQ0FBQyxNQUFNLEdBQUUsTUFBSyxDQUFDLFNBQVMsR0FBRSxNQUFLLENBQUMsV0FBVSxXQUFVLGNBQWEsU0FBUSxRQUFPLFFBQVEsR0FBRSxPQUFNLENBQUMsUUFBTyxPQUFNLE9BQU0sT0FBTSxXQUFVLE9BQU8sR0FBRSxRQUFPLENBQUMsU0FBUSxXQUFVLFVBQVMsV0FBVSxZQUFXLFlBQVcsUUFBTyxXQUFVLFFBQU8sVUFBUyxVQUFTLFFBQU8sV0FBVSxRQUFPLGlCQUFnQixVQUFTLFVBQVMsT0FBTyxHQUFFLElBQUcsQ0FBQyxXQUFVLFlBQVcsU0FBUSxNQUFNLEdBQUUsVUFBUyxDQUFDLFlBQVcsT0FBTyxHQUFFLFFBQU8sQ0FBQyxZQUFXLFNBQVEsWUFBVyxPQUFPLEdBQUUsUUFBTyxDQUFDLE9BQU0sUUFBTyxNQUFNLEdBQUUsR0FBRSxDQUFDLE9BQU8sR0FBRSxPQUFNLENBQUMsUUFBTyxRQUFPLFNBQVEsV0FBVyxHQUFFLEtBQUksQ0FBQyxPQUFPLEdBQUUsVUFBUyxDQUFDLE9BQU0sT0FBTyxHQUFFLEdBQUUsQ0FBQyxNQUFNLEdBQUUsUUFBTyxDQUFDLFNBQVEsV0FBVSxlQUFjLFNBQVEsYUFBWSxZQUFXLFlBQVcsa0JBQWlCLE9BQU0sTUFBTSxHQUFFLFFBQU8sQ0FBQyxnQkFBZSxZQUFXLFFBQU8sWUFBVyxRQUFPLFlBQVcsTUFBTSxHQUFFLE1BQUssQ0FBQyxNQUFNLEdBQUUsUUFBTyxDQUFDLFVBQVMsU0FBUSxTQUFRLE9BQU0sVUFBUyxRQUFPLE9BQU8sR0FBRSxPQUFNLENBQUMsU0FBUSxNQUFNLEdBQUUsT0FBTSxDQUFDLFNBQVEsV0FBVSxVQUFTLGVBQWMsZUFBYyxTQUFRLFNBQVEsV0FBVSxPQUFPLEdBQUUsT0FBTSxDQUFDLFNBQVEsUUFBTyxXQUFVLFFBQVEsR0FBRSxJQUFHLENBQUMsUUFBTyxTQUFRLFFBQU8sV0FBVSxRQUFPLFdBQVUsV0FBVSxXQUFVLFVBQVMsVUFBUyxXQUFV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RyxVQUFTLEtBQUksVUFBUyxLQUFJLGdCQUFlLE9BQU0sUUFBTyxPQUFNLFFBQU8sT0FBTSxRQUFPLEtBQUksVUFBUyxLQUFJLFVBQVMsT0FBTSxRQUFPLE9BQU0sUUFBTyxJQUFHLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxRQUFPLFFBQU8sUUFBTyxRQUFPLFNBQVEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxPQUFNLFFBQU8sU0FBUSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxJQUFHLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssS0FBSSxlQUFjLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxPQUFNLFFBQU8sT0FBTSxRQUFPLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFTLEtBQUksS0FBSSxPQUFNLFVBQVMsU0FBUSxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sTUFBSyxRQUFPLE1BQUssUUFBTyxVQUFTLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxhQUFZLFVBQVMsV0FBVSxVQUFTLFNBQVEsVUFBUyxXQUFVLFVBQVMsV0FBVSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsWUFBVyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLFFBQU8sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsV0FBVSxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsaUJBQWdCLFVBQVMsZUFBYyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxjQUFhLFVBQVMsYUFBWSxVQUFTLGVBQWMsVUFBUyxtQkFBa0IsVUFBUyxtQkFBa0IsVUFBUyxvQkFBbUIsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksV0FBVSxTQUFRLGdCQUFlLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sUUFBTyxNQUFLLFVBQVMsTUFBSyxhQUFZLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssTUFBSyxPQUFNLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxzQkFBcUIsVUFBUyxNQUFLLGdCQUFlLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sUUFBTyxTQUFRLFFBQU8sU0FBUSxVQUFTLE1BQUssUUFBTyxXQUFVLFFBQU8sV0FBVSxRQUFPLEtBQUksVUFBUyxLQUFJLGFBQVksTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsV0FBVSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsaUJBQWdCLFVBQVMsa0JBQWlCLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUyxhQUFZLFVBQVMsV0FBVSxVQUFTLFVBQVMsUUFBTyxVQUFTLFVBQVMsYUFBWSxVQUFTLFlBQVcsVUFBUyxhQUFZLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUywwQkFBeUIsVUFBUyx1QkFBc0IsVUFBUyxpQkFBZ0IsVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxPQUFNLEtBQUksUUFBTyxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsT0FBTSxLQUFJLFFBQU8sS0FBSSxNQUFLLFVBQVMsUUFBTyxVQUFTLFlBQVcsVUFBUyxXQUFVLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxXQUFVLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxpQkFBZ0IsVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxXQUFVLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxRQUFPLFVBQVMsaUNBQWdDLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxnQkFBZSxRQUFPLFVBQVMsU0FBUSxVQUFTLGFBQVksVUFBUyxhQUFZLFVBQVMsVUFBUyxVQUFTLFlBQVcsVUFBUyxRQUFPLFFBQU8sZ0JBQWUsVUFBUyxpQkFBZ0IsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLEtBQUksUUFBTyxLQUFJLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsa0JBQWlCLFFBQU8sZ0JBQWUsVUFBUyx3QkFBdUIsVUFBUyxrQkFBaUIsS0FBSSxrQkFBaUIsVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxhQUFZLFVBQVMsT0FBTSxVQUFTLEtBQUksUUFBTyxlQUFjLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxLQUFJLFFBQU8sUUFBTyxRQUFPLGVBQWMsVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sS0FBSSxNQUFLLGFBQVksTUFBSyxhQUFZLEtBQUksUUFBTyxLQUFJLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLGdCQUFlLFVBQVMsdUJBQXNCLFVBQVMsV0FBVSxRQUFPLGlCQUFnQixVQUFTLGlCQUFnQixVQUFTLHNCQUFxQixVQUFTLGVBQWMsVUFBUyxxQkFBb0IsVUFBUywwQkFBeUIsVUFBUyxzQkFBcUIsVUFBUyxrQkFBaUIsVUFBUyxnQkFBZSxVQUFTLGVBQWMsVUFBUyxtQkFBa0IsVUFBUyxtQkFBa0IsVUFBUyxXQUFVLFVBQVMsV0FBVSxVQUFTLFdBQVUsVUFBUyxjQUFhLFVBQVMsa0JBQWlCLFVBQVMsV0FBVSxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsa0JBQWlCLFVBQVMscUJBQW9CLFVBQVMsbUJBQWtCLFVBQVMsZ0JBQWUsVUFBUyxtQkFBa0IsVUFBUyxvQkFBbUIsVUFBUyxpQkFBZ0IsVUFBUyxvQkFBbUIsVUFBUyxTQUFRLFVBQVMsY0FBYSxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxRQUFPLFFBQU8sUUFBTyxRQUFPLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLFFBQU8sT0FBTSxRQUFPLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxJQUFHLFVBQVMsT0FBTSxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksSUFBRyxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sS0FBSSxVQUFTLFFBQU8sVUFBUyxJQUFHLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsa0JBQWlCLFVBQVMsUUFBTyxVQUFTLHNCQUFxQixVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUyxPQUFNLFVBQVMsUUFBTyxLQUFJLFlBQVcsVUFBUyxRQUFPLFVBQVMsYUFBWSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksUUFBTyxLQUFJLFFBQU8sTUFBSyxRQUFPLE1BQUssUUFBTyxNQUFLLFVBQVMsTUFBSyxLQUFJLE9BQU0sVUFBUyxRQUFPLFVBQVMsYUFBWSxVQUFTLGNBQWEsVUFBUyxjQUFhLFVBQVMsZUFBYyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksT0FBTSxVQUFTLG1CQUFrQixVQUFTLHVCQUFzQixVQUFTLE9BQU0sTUFBSyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLFVBQVMsVUFBUyxRQUFPLFFBQU8sUUFBTyxVQUFTLFFBQU8sUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sUUFBTyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsTUFBSyxnQkFBZSxRQUFPLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxJQUFHLFVBQVMsSUFBRyxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFVBQVMsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksT0FBTSxLQUFJLGNBQWEsVUFBUyxrQkFBaUIsVUFBUyxrQkFBaUIsVUFBUyxnQkFBZSxVQUFTLGFBQVksVUFBUyxtQkFBa0IsVUFBUyxjQUFhLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxJQUFHLEtBQUksSUFBRyxVQUFTLElBQUcsS0FBSSxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLFdBQVUsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFdBQVUsVUFBUyxZQUFXLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxXQUFVLGdCQUFlLE1BQUssZ0JBQWUsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLEtBQUksS0FBSSxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsV0FBVSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksYUFBWSxjQUFhLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLE1BQUssVUFBUyxNQUFLLGFBQVksUUFBTyxVQUFTLGdCQUFlLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxjQUFhLFVBQVMsV0FBVSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxJQUFHLFVBQVMsT0FBTSxRQUFPLE9BQU0sUUFBTyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sUUFBTyxLQUFJLFVBQVMsS0FBSSxVQUFTLEtBQUksYUFBWSxRQUFPLFFBQU8sUUFBTyxRQUFPLElBQUcsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLElBQUcsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsY0FBYSxVQUFTLFVBQVMsVUFBUyxTQUFRLFVBQVMsZ0JBQWUsVUFBUyxnQkFBZSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sUUFBTyxNQUFLLFVBQVMsTUFBSyxhQUFZLE1BQUssVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxPQUFNLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxRQUFPLFVBQVMsTUFBSyxVQUFT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QVMsaUJBQWdCLFVBQVMsS0FBSSxVQUFTLFNBQVEsVUFBUyxNQUFLLFVBQVMsTUFBSyxLQUFJLFFBQU8sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssS0FBSSxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsSUFBRyxLQUFJLElBQUcsVUFBUyxJQUFHLEtBQUksTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxNQUFLLFFBQU8sTUFBSyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsWUFBVyxVQUFTLFlBQVcsVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsZUFBYyxVQUFTLGFBQVksVUFBUyxXQUFVLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxLQUFJLFVBQVMsT0FBTSxRQUFPLEtBQUksVUFBUyxRQUFPLEtBQUksUUFBTyxVQUFTLFFBQU8sUUFBTyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsV0FBVSxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLElBQUcsVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLFFBQU8sVUFBUyxJQUFHLFVBQVMsSUFBRyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxLQUFJLFVBQVMsTUFBSyxnQkFBZSxPQUFNLGdCQUFlLE9BQU0sVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsTUFBSyxRQUFPLE9BQU0sZ0JBQWUsUUFBTyxnQkFBZSxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxVQUFTLGdCQUFlLE1BQUssVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE9BQU0sZ0JBQWUscUJBQW9CLFVBQVMsb0JBQW1CLFVBQVMsbUJBQWtCLFVBQVMsdUJBQXNCLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLGdCQUFlLHNCQUFxQixVQUFTLGdCQUFlLFVBQVMsU0FBUTtBQUFBLEdBQ3R4ckIsUUFBTyxVQUFTLFNBQVEsVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLEtBQUksZ0JBQWUsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxLQUFJLGdCQUFlLE9BQU0sVUFBUyxLQUFJLGdCQUFlLEtBQUksVUFBUyxNQUFLLFVBQVMsTUFBSyxnQkFBZSxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxJQUFHLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxLQUFJLGdCQUFlLEtBQUksVUFBUyxZQUFXLFVBQVMsWUFBVyxVQUFTLGlCQUFnQixVQUFTLGlCQUFnQixVQUFTLE1BQUssVUFBUyxPQUFNLGdCQUFlLFdBQVUsZ0JBQWUsTUFBSyxnQkFBZSxPQUFNLFVBQVMsS0FBSSxnQkFBZSxPQUFNLFVBQVMsS0FBSSxnQkFBZSxLQUFJLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxNQUFLLGdCQUFlLE1BQUssVUFBUyxTQUFRLFVBQVMsa0JBQWlCLFFBQU8sTUFBSyxVQUFTLE1BQUssYUFBWSxLQUFJLFVBQVMsS0FBSSxRQUFPLGNBQWEsVUFBUyxXQUFVLFVBQVMsc0JBQXFCLFVBQVMsWUFBVyxVQUFTLFVBQVMsVUFBUyxlQUFjLGdCQUFlLFdBQVUsVUFBUyxZQUFXLFVBQVMsaUJBQWdCLFVBQVMscUJBQW9CLGdCQUFlLG1CQUFrQixnQkFBZSxnQkFBZSxVQUFTLHNCQUFxQixnQkFBZSxpQkFBZ0IsVUFBUyxpQkFBZ0IsZ0JBQWUsY0FBYSxnQkFBZSxPQUFNLFVBQVMsVUFBUyxnQkFBZSxRQUFPLGdCQUFlLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLGlCQUFnQixVQUFTLG9CQUFtQixnQkFBZSxzQkFBcUIsVUFBUyxTQUFRLFVBQVMsY0FBYSxVQUFTLGdCQUFlLFVBQVMsYUFBWSxnQkFBZSxtQkFBa0IsZ0JBQWUsY0FBYSxVQUFTLHlCQUF3QixnQkFBZSxtQkFBa0IsZ0JBQWUsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLGFBQVksVUFBUyxrQkFBaUIsZ0JBQWUsdUJBQXNCLFVBQVMsbUJBQWtCLFVBQVMsa0JBQWlCLFVBQVMscUJBQW9CLGdCQUFlLHVCQUFzQixVQUFTLGlCQUFnQixnQkFBZSxzQkFBcUIsVUFBUyxtQkFBa0IsZ0JBQWUsd0JBQXVCLFVBQVMsV0FBVSxnQkFBZSxnQkFBZSxVQUFTLGFBQVksVUFBUyxrQkFBaUIsZ0JBQWUsdUJBQXNCLFVBQVMsa0JBQWlCLGdCQUFlLGFBQVksZ0JBQWUsa0JBQWlCLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxtQkFBa0IsVUFBUyxlQUFjLFVBQVMsZ0JBQWUsVUFBUyxNQUFLLFVBQVMsV0FBVSxVQUFTLFFBQU8sZ0JBQWUsT0FBTSxnQkFBZSxTQUFRLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLGdCQUFlLE9BQU0sVUFBUyxTQUFRLGdCQUFlLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxnQkFBZSxRQUFPLGdCQUFlLGFBQVksVUFBUyxhQUFZLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE1BQUssZ0JBQWUsTUFBSyxhQUFZLE1BQUssYUFBWSxXQUFVLFVBQVMsZ0JBQWUsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE9BQU0sZ0JBQWUsT0FBTSxVQUFTLFNBQVEsZ0JBQWUsV0FBVSxVQUFTLFlBQVcsZ0JBQWUsT0FBTSxVQUFTLFNBQVEsZ0JBQWUsTUFBSyxVQUFTLE9BQU0sZ0JBQWUsT0FBTSxVQUFTLFNBQVEsZ0JBQWUsV0FBVSxVQUFTLFlBQVcsZ0JBQWUsTUFBSyxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sTUFBSyxVQUFTLGVBQWMsVUFBUyxpQkFBZ0IsVUFBUyxnQkFBZSxVQUFTLGtCQUFpQixVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsS0FBSSxLQUFJLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxnQkFBZSxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxNQUFLLFdBQVUsUUFBTyxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsTUFBSyxnQkFBZSxNQUFLLFdBQVUsU0FBUSxnQkFBZSxRQUFPLFVBQVMsU0FBUSxnQkFBZSxPQUFNLGdCQUFlLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sUUFBTyxPQUFNLFFBQU8sS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLE1BQUssVUFBUyxRQUFPLFFBQU8sUUFBTyxRQUFPLEtBQUksVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsc0JBQXFCLFVBQVMsZ0JBQWUsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sUUFBTyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsS0FBSSxVQUFTLElBQUcsVUFBUyxNQUFLLGFBQVksTUFBSyxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sTUFBSyxVQUFTLFFBQU8sUUFBTyxRQUFPLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsTUFBSyxRQUFPLE1BQUssUUFBTyxPQUFNLFVBQVMsU0FBUSxVQUFTLFdBQVUsVUFBUyxhQUFZLFVBQVMsaUJBQWdCLFVBQVMsS0FBSSxVQUFTLE1BQUssUUFBTyxVQUFTLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxLQUFJLFFBQU8sS0FBSSxRQUFPLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxXQUFVLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLE1BQUssS0FBSSxVQUFTLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxXQUFVLFFBQU8sUUFBTyxRQUFPLFNBQVEsVUFBUyxTQUFRLFVBQVMsSUFBRyxRQUFPLGVBQWMsVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxPQUFNLFFBQU8sSUFBRyxVQUFTLElBQUcsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFlBQVcsVUFBUyxhQUFZLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxvQkFBbUIsVUFBUyxlQUFjLFVBQVMsUUFBTyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsVUFBUyxVQUFTLE1BQUssVUFBUyxZQUFXLFVBQVMsY0FBYSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxhQUFZLFVBQVMsU0FBUSxVQUFTLE9BQU0sS0FBSSxTQUFRLFVBQVMsTUFBSyxLQUFJLE1BQUssS0FBSSxPQUFNLFVBQVMsTUFBSyxnQkFBZSxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFFBQU8sTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsV0FBVSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLEtBQUksUUFBTyxLQUFJLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsTUFBSyxLQUFJLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxJQUFHLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxLQUFJLFFBQU8sS0FBSSxRQUFPLGdCQUFlLFVBQVMsb0JBQW1CLFVBQVMsc0JBQXFCLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxhQUFZLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxtQkFBa0IsVUFBUyxZQUFXLFVBQVMsWUFBVyxVQUFTLFlBQVcsVUFBUyxlQUFjLFVBQVMscUJBQW9CLFVBQVMsZ0JBQWUsVUFBUyxjQUFhLFVBQVMsb0JBQW1CLFVBQVMsb0JBQW1CLFVBQVMsaUJBQWdCLFVBQVMsb0JBQW1CLFVBQVMsWUFBVyxVQUFTLGtCQUFpQixVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsbUJBQWtCLFVBQVMsa0JBQWlCLFVBQVMsaUJBQWdCLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxnQkFBZSxVQUFTLGlCQUFnQixVQUFTLGVBQWMsVUFBUyxrQkFBaUIsVUFBUyxvQkFBbUIsVUFBUyxtQkFBa0IsVUFBUyxrQkFBaUIsVUFBUyxlQUFjLFVBQVMsa0JBQWlCLFVBQVMsYUFBWSxVQUFTLGdCQUFlLFVBQVMsTUFBSyxVQUFTLGNBQWEsVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsWUFBVyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxRQUFPLFVBQVMsU0FBUSxVQUFTLGNBQWEsVUFBUyxNQUFLLEtBQUksUUFBTyxVQUFTLFVBQVMsVUFBUyxPQUFNLFVBQVMsYUFBWSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxhQUFZLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxLQUFJLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsYUFBWSxVQUFTLFNBQVEsVUFBUyxJQUFHLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsSUFBRyxVQUFTLElBQUcsVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLE9BQU0sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxNQUFLLFFBQU8sTUFBSyxLQUFJLFFBQU8sVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLGdCQUFlLFVBQVMsZ0JBQWUsVUFBUyxVQUFTLFVBQVMsZUFBYyxVQUFTLGlCQUFnQixVQUFTLGNBQWEsVUFBUyxLQUFJLFFBQU8sT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLGFBQVksVUFBUyxlQUFjLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsT0FBTSxnQkFBZSxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksS0FBSSxNQUFLLFVBQVMsUUFBTyxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFTLFdBQVUsVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLFFBQU8sZ0JBQWUsT0FBTSxVQUFTLFFBQU8sZ0JBQWUsTUFBSyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFlBQVcsVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxZQUFXLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsb0JBQW1CLFVBQVMsY0FBYSxVQUFTLG1CQUFrQixVQUFTLGdCQUFlLFVBQVMscUJBQW9CLFVBQVMsYUFBWSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsaUJBQWdCLFVBQVMsYUFBWSxVQUFTLE9BQU0sUUFBTyxLQUFJLFVBQVMsS0FBSSxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFdBQVUsVUFBUyxhQUFZLFVBQVMsV0FBVSxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsWUFBVyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsZUFBYyxVQUFTLG9CQUFtQixVQUFTLGVBQWMsVUFBUyxRQUFPLFVBQVMsYUFBWSxVQUFTLFVBQVMsVUFBUyxVQUFTLFVBQVMsU0FBUSxVQUFTLFVBQVMsVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sTUFBSyxRQUFPLFFBQU8sVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsVUFBUyxVQUFTLGVBQWMsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxTQUFRLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsV0FBVSxVQUFTLFdBQVUsVUFBUyxZQUFXLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFFBQU8sVUFBUyxPQUFNLFFBQU8sS0FBSSxLQUFJLFFBQU8sVUFBUyxLQUFJLFVBQVMsS0FBSSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksUUFBTyxVQUFTLFdBQVUsVUFBUyxXQUFVLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxVQUFTLFVBQVMsUUFBTyxVQUFTLGFBQVksVUFBUyxVQUFTLFVBQVMsWUFBVyxnQkFBZSxRQUFPLFVBQVMsV0FBVSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsT0FBTSxRQUFPLE9BQU0sUUFBTyxPQUFNLFVBQVMsT0FBTSxVQUFTLFlBQVcsVUFBUyxnQkFBZSxVQUFTLFlBQVcsVUFBUyxPQUFNLFFBQU8sUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLFNBQVEsVUFBUyxNQUFLLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsVUFBUyxVQUFTLGNBQWEsVUFBUyxjQUFhLFVBQVMsZ0JBQWUsVUFBUyxXQUFVLFVBQVMsZUFBYyxVQUFTLGlCQUFnQixVQUFTLFFBQU8sVUFBUyxNQUFLLFVBQVMsVUFBUyxVQUFTLFdBQVUsVUFBUyxTQUFRLFVBQVMsT0FBTSxVQUFTLFNBQVEsVUFBUyxVQUFTLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsa0JBQWlCLFVBQVMsbUJBQWtCLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxVQUFTLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE9BQU0sUUFBTyxPQUFNLFFBQU8sS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksYUFBWSxLQUFJLGFBQVksUUFBTyxRQUFPLFFBQU8sUUFBTyxNQUFLLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFVBQVMsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsS0FBSSxRQUFPLFVBQVMsS0FBSSxZQUFXLFVBQVMsY0FBYSxVQUFTLGtCQUFpQixVQUFTLE9BQU0sVUFBUyxXQUFVLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLFNBQVEsVUFBUyxTQUFRLFVBQVMsU0FBUSxVQUFTLFlBQVcsVUFBUyxrQkFBaUIsVUFBUyxhQUFZLFVBQVMsYUFBWSxVQUFTLGFBQVksVUFBUyxlQUFjLFVBQVMsZUFBYyxVQUFTLGdCQUFlLFVBQVMsT0FBTSxVQUFTLGdCQUFlLFVBQVMsaUJBQWdCLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsU0FBUSxVQUFTLFNBQVEsVUFBUyxPQUFNLFVBQVMsWUFBVyxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsVUFBUyxVQUFTLFFBQU8sVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssUUFBTyxNQUFLLFFBQU8sU0FBUSxVQUFTLFFBQU8sVUFBUyxZQUFXLFVBQVMsVUFBUyxVQUFTLFlBQVcsVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLFdBQVUsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLFFBQU8sVUFBUyxVQUFTLFVBQVMsY0FBYSxnQkFBZSxlQUFjLGdCQUFlLGNBQWEsZ0JBQWUsZUFBYyxnQkFBZSxVQUFTLFVBQVMsaUJBQWdCLFVBQVMsa0JBQWlCLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxPQUFNLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLFFBQU8sS0FBSSxNQUFLLFVBQVMsTUFBSyxLQUFJLGFBQVksVUFBUyxjQUFhLEtBQUksbUJBQWtCLFVBQVMsZUFBYyxVQUFTLGVBQWMsVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLE9BQU0sVUFBUyxPQUFNLGdCQUFlLE9BQU0sZ0JBQWUsTUFBSyxhQUFZLE1BQUssYUFBWSxPQUFNLFVBQVMsT0FBTSxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksUUFBTyxnQkFBZSxRQUFPLGdCQUFlLFFBQU8sZ0JBQWUsUUFBTyxnQkFBZSxRQUFPLFVBQVMsU0FBUSxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsUUFBTyxVQUFTLFFBQU8sVUFBUyxLQUFJLGFBQVksS0FBSSxhQUFZLE1BQUssYUFBWSxNQUFLLGFBQVksSUFBRyxVQUFTLElBQUcsVUFBUyxRQUFPLFVBQVMsTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxPQUFNLFVBQVMsS0FBSSxhQUFZLEtBQUksYUFBWSxPQUFNLFVBQVMsT0FBTSxVQUFTLElBQUcsVUFBUyxJQUFHLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE9BQU0sVUFBUyxNQUFLLGFBQVksTUFBSyxhQUFZLFFBQU8sVUFBUyxRQUFPLFVBQVMsT0FBTSxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsUUFBTyxRQUFPLFFBQU8sUUFBTyxNQUFLLFVBQVMsTUFBSyxVQUFTLE9BQU0sVUFBUyxPQUFNLFVBQVMsS0FBSSxVQUFTLEtBQUksVUFBUyxLQUFJLFFBQU8sS0FBSSxhQUFZLEtBQUksYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLE1BQUssYUFBWSxNQUFLLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxNQUFLLFFBQU8sUUFBTyxVQUFTLFFBQU8sVUFBUyxRQUFPLFVBQVMsUUFBTyxVQUFTLEtBQUksVUFBUyxLQUFJLFVBQVMsTUFBSyxVQUFTLE1BQUssVUFBUyxRQUFPLFVBQVMsZ0JBQWUsVUFBUyxNQUFLLFVBQVMsTUFBSyxVQUFTLEtBQUksVUFBUyxLQUFJLGFBQVksTUFBSyxVQUFTLE1BQUssVUFBUyxTQUFRLFVBQVMsTUFBSyxVQUFTLE1BQUssYUFBWSxNQUFLLGFBQVksTUFBSyxhQUFZLEtBQUksVUFBUyxNQUFLLFNBQVEsR0FBRSxFQUFFLGVBQWEsVUFBUyxFQUFFLGVBQWUsT0FBSyxFQUFFO0FBQUEsUUFBWSxFQUFDLENBQUMsR0FBRSxLQUFHLEVBQUUsRUFBQywyRUFBMkUsR0FBRTtBQUFDO0FBQWEsWUFBRSxHQUFFLE9BQU8sZUFBZSxHQUFFLGNBQWEsRUFBQyxPQUFNLEtBQUUsQ0FBQztBQUFFLGNBQUksSUFBRSxHQUFHLEdBQUUsSUFBRSxNQUFLO0FBQUEsWUFBQyxjQUFhO0FBQUMsa0JBQUcsRUFBQyxrQkFBaUIsR0FBRSx5QkFBd0IsR0FBRSxhQUFZLElBQUUsRUFBRSxlQUFlLGVBQWMsZ0JBQWUsSUFBRSxPQUFHLFFBQU8sSUFBRSxPQUFHLGVBQWMsSUFBRSxNQUFFLElBQUUsVUFBVSxTQUFPLEtBQUcsVUFBVSxPQUFLLFNBQU8sVUFBVSxLQUFHLENBQUM7QUFBRSxtQkFBSyxtQkFBaUIsQ0FBQyxHQUFFLEtBQUssaUJBQWUsT0FBRyxLQUFLLGVBQWEsT0FBRyxLQUFHLEVBQUUsU0FBTyxLQUFHLEVBQUUsUUFBUSxPQUFHLEtBQUssaUJBQWlCLEtBQUcsSUFBRSxHQUFFLEtBQUssU0FBTyxHQUFFLEtBQUssaUJBQWUsS0FBRyxHQUFFLEtBQUssMEJBQXdCLEtBQUcsTUFBSyxLQUFLLGNBQVksR0FBRSxLQUFLLGdCQUFjO0FBQUEsWUFBQztBQUFBLFlBQUMsZ0JBQWdCLEdBQUU7QUFBQyxxQkFBTyxLQUFLLFVBQVEsRUFBRSxZQUFZLEtBQUksS0FBSztBQUFBLFlBQWdCO0FBQUEsVUFBQztBQUFFLFlBQUUsb0JBQWtCO0FBQUUsY0FBSSxHQUFFO0FBQUUsbUJBQVMsRUFBRSxHQUFFO0FBQUMsbUJBQU8sTUFBSSxJQUFFLElBQUksS0FBRSxJQUFFLEVBQUMsTUFBSyxJQUFJLEVBQUUsRUFBQyxRQUFPLEtBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxFQUFFLEVBQUMsUUFBTyxLQUFFLENBQUMsR0FBRSxNQUFLLElBQUksRUFBRSxFQUFDLFFBQU8sS0FBRSxDQUFDLEdBQUUsT0FBTSxJQUFJLEVBQUUsRUFBQyxRQUFPLEtBQUUsQ0FBQyxHQUFFLE1BQUssSUFBSSxFQUFFLEVBQUMsUUFBTyxLQUFFLENBQUMsR0FBRSxLQUFJLElBQUksRUFBRSxFQUFDLFFBQU8sS0FBRSxDQUFDLEdBQUUsT0FBTSxJQUFJLEVBQUUsRUFBQyxRQUFPLEtBQUUsQ0FBQyxHQUFFLE9BQU0sSUFBSSxFQUFFLEVBQUMsUUFBTyxLQUFFLENBQUMsR0FBRSxJQUFHLElBQUksRUFBRSxFQUFDLFFBQU8sS0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFJLEVBQUUsRUFBQyxRQUFPLEtBQUUsQ0FBQyxHQUFFLFFBQU8sSUFBSSxFQUFFLEVBQUMsUUFBTyxLQUFFLENBQUMsR0FBRSxPQUFNLElBQUksRUFBRSxFQUFDLFFBQU8sS0FBRSxDQUFDLEdBQUUsS0FBSSxJQUFJLEVBQUUsRUFBQyxRQUFPLEtBQUUsQ0FBQyxHQUFFLEdBQUUsSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsV0FBVSxXQUFVLFNBQVEsY0FBYSxPQUFNLE1BQUssWUFBVyxVQUFTLFFBQU8sTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssVUFBUyxVQUFTLE1BQUssUUFBTyxPQUFNLE1BQUssS0FBSSxPQUFNLFdBQVUsU0FBUSxJQUFJLEdBQUUsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsT0FBTSxJQUFJLEVBQUUsRUFBQyxrQkFBaUIsQ0FBQyxTQUFRLE9BQU8sRUFBQyxDQUFDLEdBQUUsT0FBTSxJQUFJLEVBQUUsRUFBQyxrQkFBaUIsQ0FBQyxTQUFRLE9BQU8sR0FBRSxnQkFBZSxLQUFFLENBQUMsR0FBRSxPQUFNLElBQUksRUFBRSxFQUFDLGtCQUFpQixDQUFDLE9BQU8sR0FBRSxnQkFBZSxLQUFFLENBQUMsR0FBRSxJQUFHLElBQUksRUFBRSxFQUFDLGtCQUFpQixDQUFDLElBQUksR0FBRSxnQkFBZSxLQUFFLENBQUMsR0FBRSxJQUFHLElBQUksRUFBRSxFQUFDLGtCQUFpQixDQUFDLE1BQUssSUFBSSxHQUFFLGdCQUFlLEtBQUUsQ0FBQyxHQUFFLElBQUcsSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsTUFBSyxJQUFJLEdBQUUsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsS0FBSSxJQUFJLEVBQUUsRUFBQyxRQUFPLEtBQUUsQ0FBQyxHQUFFLEtBQUksSUFBSSxFQUFFLEVBQUMseUJBQXdCLE1BQUssQ0FBQyxHQUFFLE1BQUssSUFBSSxFQUFFLEVBQUMseUJBQXdCLE9BQU0sQ0FBQyxHQUFFLElBQUcsSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsSUFBSSxHQUFFLGdCQUFlLEtBQUUsQ0FBQyxHQUFFLElBQUcsSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsTUFBSyxJQUFJLEVBQUMsQ0FBQyxHQUFFLElBQUcsSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsTUFBSyxJQUFJLEdBQUUsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFJLEVBQUUsRUFBQyxrQkFBaUIsQ0FBQyxNQUFLLE1BQUssT0FBTSxJQUFJLEdBQUUsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsSUFBRyxJQUFJLEVBQUUsRUFBQyxrQkFBaUIsQ0FBQyxNQUFLLE1BQUssT0FBTSxJQUFJLEdBQUUsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsS0FBSSxJQUFJLEVBQUUsRUFBQyxrQkFBaUIsQ0FBQyxNQUFLLE9BQU0sSUFBSSxHQUFFLGdCQUFlLEtBQUUsQ0FBQyxHQUFFLElBQUcsSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsTUFBSyxNQUFLLE9BQU0sSUFBSSxHQUFFLGdCQUFlLEtBQUUsQ0FBQyxHQUFFLFVBQVMsSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsVUFBVSxHQUFFLGdCQUFlLEtBQUUsQ0FBQyxHQUFFLFFBQU8sSUFBSSxFQUFFLEVBQUMsa0JBQWlCLENBQUMsVUFBUyxVQUFVLEdBQUUsZ0JBQWUsS0FBRSxDQUFDLEdBQUUsS0FBSSxJQUFJLEVBQUUsRUFBQyxlQUFjLEtBQUUsQ0FBQyxHQUFFLFNBQVEsSUFBSSxFQUFFLEVBQUMsZUFBYyxLQUFFLENBQUMs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QUFBLFVBQUM7QUFBRSxpQkFBTyxFQUFFLElBQUksY0FBYyxFQUFDO0FBQUEsWUFBQyxNQUFNLEdBQUU7QUFBQyxnQkFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQUEsWUFBQztBQUFBLFVBQUMsS0FBRSxDQUFDLEdBQUU7QUFBQSxRQUFDO0FBQUMsaUJBQVMsR0FBRyxHQUFFLEdBQUUsR0FBRTtBQUFDLGNBQUksSUFBRSxVQUFVLFNBQU8sS0FBRyxVQUFVLE9BQUssU0FBTyxVQUFVLEtBQUcsTUFBRyxFQUFDLGFBQVksR0FBRSxTQUFRLEVBQUMsSUFBRSxJQUFFLEdBQUcsQ0FBQyxJQUFFLEVBQUMsYUFBWSxNQUFLLFNBQVEsRUFBQyxHQUFFLElBQUUsSUFBSSxHQUFHLEdBQUUsRUFBRSxRQUFRLEdBQUUsSUFBRSxJQUFJLEdBQUcsR0FBRSxHQUFFLEdBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxHQUFFLElBQUUsRUFBQyxNQUFLLFFBQU8sWUFBVyxJQUFJLEdBQUcsR0FBRSxDQUFDLEdBQUUsVUFBUyxHQUFHLEdBQUUsR0FBRSxDQUFDLEVBQUM7QUFBRSxjQUFHLEdBQUU7QUFBQyxnQkFBSSxJQUFFLElBQUksR0FBRyxHQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUUsSUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLE1BQU07QUFBRSxjQUFFLGFBQVcsSUFBSSxHQUFHLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBUyxRQUFRLENBQUM7QUFBQSxVQUFDO0FBQUMsY0FBSSxJQUFFLElBQUksR0FBRyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUUsTUFBSTtBQUFDLGdCQUFHLEVBQUMsUUFBTyxFQUFDLElBQUUsR0FBRSxJQUFFLEVBQUUsTUFBTSxHQUFFLENBQUMsRUFBRSxRQUFRLFlBQVcsR0FBRyxHQUFFLElBQUUsR0FBRyxJQUFFLEdBQUUsR0FBRSxHQUFFLEtBQUU7QUFBRSxjQUFFLGFBQVcsSUFBSSxHQUFHLEdBQUUsR0FBRyxF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QUssd0JBQXdCLENBQUM7QUFBRSxrQkFBSSxJQUFFO0FBQUcsdUJBQVEsSUFBRSxJQUFFLEdBQUUsSUFBRSxJQUFFLEdBQUUsRUFBRSxHQUFFO0FBQUMsb0JBQUksSUFBRSxFQUFFO0FBQUcsb0JBQUcsTUFBSTtBQUFBLEdBQ3RiO0FBQUMsb0JBQUUsS0FBSyxtQkFBbUIsR0FBRSxJQUFFLENBQUMsS0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLGtCQUFrQixNQUFLLG1FQUFtRSxDQUFDO0FBQUUsc0JBQUcsRUFBQyxNQUFLLEdBQUUsUUFBTyxHQUFFLE9BQU0sRUFBQyxJQUFFLEVBQUUsS0FBSyxZQUFZLEdBQUUsR0FBRSxDQUFDO0FBQUUsdUJBQUcsR0FBRSxJQUFFLEdBQUUsS0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLGtCQUFrQixNQUFLLG1FQUFtRSxDQUFDO0FBQUEsZ0JBQUMsV0FBUyxNQUFJO0FBQUssMEJBQU8sS0FBRyxHQUFFLEVBQUU7QUFBQSx5QkFBUTtBQUFJLDJCQUFHO0FBQUs7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQU87QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUs7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQU87QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUs7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUE7QUFDMWQ7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUs7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUk7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUs7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQU87QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQU87QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQVM7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQVM7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUk7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUk7QUFBQSx5QkFBVTtBQUFJLDJCQUFHO0FBQUk7QUFBQSx5QkFBVTtBQUFLLDJCQUFHO0FBQUs7QUFBQSx5QkFBVTtBQUFJ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QSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLEdBQUc7QUFBQSxjQUNELE9BQU87QUFBQSxjQUNQLE9BQU87QUFBQSxjQUNQLGFBQWE7QUFBQSxZQUNmLENBQUM7QUFBQSxVQUNIO0FBQUEsVUFDQSxTQUFTO0FBQUEsWUFDUCxPQUFPO0FBQUEsWUFDUCxNQUFNO0FBQUEsWUFDTixPQUFPO0FBQUEsWUFDUCxTQUFTLENBQUM7QUFBQSxjQUNSLE9BQU8sQ0FBQztBQUFBLFlBQ1YsQ0FBQztBQUFBLFlBQ0QsVUFBVTtBQUFBLFlBQ1YsYUFBYTtBQUFBLFlBQ2IsV0FBVyxDQUFDLFVBQVUsT0FBTyxVQUFVLFlBQVksT0FBTyxVQUFVO0FBQUEsWUFD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QzNCLGFBQWEsQ0FBQyxJQUFJLEtBQUssR0FBRztBQUFBLFVBQzFCLGVBQWUsQ0FBQyxLQUFLLElBQUksRUFBRTtBQUFBLFVBQzNCLFVBQVUsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3hCLGNBQWMsQ0FBQyxLQUFLLEtBQUssRUFBRTtBQUFBLFVBQzNCLFlBQVksQ0FBQyxJQUFJLEtBQUssRUFBRTtBQUFBLFVBQ3hCLFlBQVksQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQzFCLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtBQUFBLFVBQ3RCLFVBQVUsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3hCLFdBQVcsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3pCLGFBQWEsQ0FBQyxLQUFLLElBQUksR0FBRztBQUFBLFVBQzFCLGFBQWEsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQzNCLGFBQWEsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQzNCLFFBQVEsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3RCLGVBQWUsQ0FBQyxHQUFHLEtBQUssR0FBRztBQUFBLFVBQzNCLGFBQWEsQ0FBQyxJQUFJLEtBQUssR0FBRztBQUFBLFVBQzFCLE9BQU8sQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3JCLFFBQVEsQ0FBQyxHQUFHLEtBQUssR0FBRztBQUFBLFVBQ3BCLFdBQVcsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3pCLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtBQUFBLFVBQ3RCLGFBQWEsQ0FBQyxJQUFJLEtBQUssR0FBRztBQUFBLFVBQzFCLFVBQVUsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3hCLFNBQVMsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3ZCLFNBQVMsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQ3ZCLGNBQWMsQ0FBQyxLQUFLLEtBQUssR0FBRztBQUFBLFVBQzVCLFVBQVUsQ0FBQyxLQUFLLEtBQUssQ0FBQztBQUFBLFVB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QUcsR0FBRyxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsS0FBSyxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLE1BQU0sS0FBSyxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsS0FBSyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsTUFBTSxJQUFJLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sT0FBTyxJQUFJLE1BQU0sR0FBRyxLQUFLLEdBQUcsTUFBTSxJQUFJLE1BQU0sTUFBTSxLQUFLLE1BQU0sSUFBSTtBQUMvN0QsWUFBSSx3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLE9BQU8sR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxPQUFPLEdBQUcsTUFB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Q0YsQ0FBQztBQUNELFFBQUksOEJBQThCYSxhQUFZO0FBQUEsTUFDNUMsMENBQTBDLFVBQVViLFVBQVM7QUFDM0QsUUFBQUEsU0FBUSxVQUFVO0FBQUEsVUFDaEIsa0JBQWtCO0FBQUEsWUFDaEIsTUFBTTtBQUFBLFlBQ04sTUFBTTtBQUFBLFlBQ04sVUFBVTtBQUFBLFlBQ1YsVUFBVTtBQUFBLFlBQ1YsTUFBTTtBQUFBLFlBQ04sTUFBTTtBQUFBLFlBQ04sTUFBTTtBQUFBLFlBQ04sU0FBUztBQUFBLFlBQ1QsVUFBVTtBQUFBLFlBQ1YsT0FBTztBQUFBLFlBQ1AsSUFBSTtBQUFBLFlBQ0osUUFBUTtBQUFBLFlBQ1IsUUFBUTtBQUFBLFlBQ1IsT0FBTztBQUFBLFlBQ1AsVUFBVTtBQUFBLFlBQ1YsT0FBTztBQUFBLFlBQ1AsT0FBTztBQUFBLFlBQ1AsTUFBTTtBQUFBLFlBQ04sTUFBTTtBQUFBLFlBQ04sU0FBUztBQUFBLFlBQ1QsWUFBWTtBQUFBLFlBQ1osUUFBUTtBQUFBLFlBQ1IsS0FBSztBQUFBLFlBQ0wsUUFBUTtBQUFBLFlBQ1IsWUFBWTtBQUFBLFlBQ1osUUFBUTtBQUFBLFlBQ1IsTUFBTTtBQUFBLFlBQ04sUUFBUTtBQUFBLFlBQ1IsSUFBSTtBQUFBLFlBQ0osUUFBUTtBQUFBLFlBQ1IsU0FBUztBQUFBLFlBQ1QsTUFBTTtBQUFBLFlBQ04sR0FBRztBQUFBLFlBQ0gsV0FBVztBQUFBLFlBQ1gsS0FBSztBQUFBLFlBQ0wsS0FBSztBQUFBLFlBQ0wsTUFBTTtBQUFBLFlBQ04sTUFBTTtBQUFBLFlBQ04sSUFBSTtBQUFBLFlBQ0osU0FBUztBQUFBLFlBQ1QsT0FBTztBQUFBLFlBQ1AsSUFBSTtBQUFBLFlBQ0osSUFBSTtBQUFBLFlBQ0osSUFBSTtBQUFBLFlBQ0osSUFBSTtBQUFBLFlBQ0osSUFBSTtBQUFBLFlBQ0osSUFBSTtBQUFBLFlBQ0osUUFBUTtBQUFBLFlBQ1IsS0FBSztBQUFBLFlBQ0wsU0FBUztBQUFBLFlBQ1QsS0FBSztBQUFBLFlBQ0wsSUFBSTtBQUFBLFlBQ0osSUFBSTtBQUFB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RjtBQUFBLGVBQ1M7QUFDUCxRQUFBQyxLQUFJLE1BQU0sbUJBQW1CLFNBQVM7QUFBQSxNQUN4QztBQUFBO0FBQUEsRUFFSixTQUFTQyxRQUFQO0FBQ0EsUUFBSUEsVUFBUyxhQUFhQSxVQUFTQSxPQUFNO0FBQVMsTUFBQUQsS0FBSSxLQUFLQyxPQUFNLE9BQWlCO0FBQUEsRUFDcEY7QUFDRjs7O0FDbENPLElBQU0sU0FBUyxJQUFJLE9BQU87QUFFbEIsU0FBUixlQUFzQztBQUMzQyxRQUFNQyxPQUFNLElBQUksZ0JBQVEsbUJBQW1CO0FBQzNDLE1BQUk7QUFDRixlQUFXLFdBQVcsT0FBTyxVQUFVO0FBQ3JDLG9CQUFjLFNBQVMsTUFBTTtBQUFBLElBQy9CO0FBQ0EsU0FBSyxNQUFNO0FBQUEsRUFDYixTQUFTQyxRQUFQO0FBQ0EsUUFBSUEsVUFBUyxhQUFhQSxVQUFTQSxPQUFNO0FBQVMsTUFBQUQsS0FBSSxNQUFNQyxPQUFNLE9BQWlCO0FBQUEsRUFDckY7QUFDRjs7O0FDYkEsYUFBYTsiLAogICJuYW1lcyI6IFsibW9kdWxlIiwgImdsb2JhbCIsICJleHBvcnRzIiwgImVycm9yIiwgInJlamVjdCIsICJhcHBseUVhY2giLCAiaW5kZXgiLCAibWFwIiwgIm9uY2UiLCAicHJvbWlzZUNhbGxiYWNrIiwgInNlcSIsICJib29sIiwgImZpbHRlciIsICJsb2ciLCAiaW5mbyIsICJtb2R1bGUiLCAic3RyIiwgInAiLCAiY29tbW9uIiwgInBhdGgiLCAic2VsZiIsICJmcyIsICJjb21tb24iLCAic3RyIiwgIm1hcCIsICJwYWlycyIsICJlcnJvciIsICJjb21tb24iLCAiUHJvdmlkZXIiLCAidHlwZSIsICJzdG9yZSIsICJzZWxmIiwgIm1vZHVsZSIsICJmcyIsICJwYXRoIiwgInN0ciIsICJ5MThuIiwgInJlcXVpcmVfYnVpbGQiLCAibW9kdWxlIiwgInBhdGgiLCAiZnMiLCAic3RyIiwgIkRlZmF1bHRWYWx1ZXNGb3JUeXBlS2V5IiwgImtleSIsICJlcnJvciIsICJhcmdzIiwgInZhbHVlIiwgInZhbCIsICJhcmd2IiwgImVudiIsICJhbGlhc2VzIiwgImRlZmF1bHRzIiwgInR5cGUiLCAic2VsZiIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgInBhdGgiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnZXQiLCAibW9kdWxlIiwgImNvZGUiLCAicmVxdWlyZV9idWlsZCIsICJtb2R1bGUiLCAic3RyIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAic3RhY2siLCAibW9kdWxlIiwgImZzIiwgInBhdGgiLCAicmVxdWlyZV9idWlsZCIsICJtb2R1bGUiLCAidCIsICJvIiwgImEiLCAiaCIsICJsIiwgInIiLCAiZSIsICJzIiwgImkiLCAibiIsICJmIiwgImQiLCAidSIsICJjIiwgInAiLCAibSIsICJ5IiwgImIiLCAidiIsICJPIiwgInciLCAiQyIsICJqIiwgIl8iLCAiZyIsICJNIiwgImsiLCAieCIsICJFIiwgIm1vZHVsZSIsICJjb21tb24iLCAic2VsZiIsICJjb21tb24iLCAic2VsZiIsICJmcyIsICJwYXRoIiwgImZvcm1hdCIsICJzZWxmIiwgImV4aXN0cyIsICJleCIsICJMaXRlcmFsIiwgIm1vZHVsZSIsICJjb21tb24iLCAiUHJvdmlkZXIiLCAibmNvbmYiLCAiZnMiLCAiX2RlZmF1bHQiLCAiX2RlZmF1bHQiLCAiX2RlZmF1bHQiLCAiX2RlZmF1bHQiLCAiX2RlZmF1bHQiLCAiX2RlZmF1bHQiLCAic3RyIiwgIlVSTCIsICJfZGVmYXVsdCIsICJfZGVmYXVsdCIsICJfZGVmYXVsdCIsICJfZGVmYXVsdCIsICJfZGVmYXVsdCIsICJfZGVmYXVsdCIsICJfZGVmYXVsdCIsICJzZWxmIiwgIm9wdGlvbnMiLCAiZGVidWciLCAiZXJyb3IiLCAic29ja2V0IiwgInJlcXVpcmVfdHVubmVsIiwgIm1vZHVsZSIsICJIdHRwQ29kZXMiLCAiSGVhZGVycyIsICJNZWRpYVR5cGVzIiwgImluZm8iLCAiX2RlZmF1bHQiLCAiZXJyb3IiLCAicGF0aCIsICJwYXRoIiwgIkV4aXRDb2RlIiwgImlucHV0cyIsICJzZXRGYWlsZWQiLCAiZXJyb3IiLCAiZGVidWciLCAiaW5mbyIsICJzdGFydEdyb3VwIiwgImVuZEdyb3VwIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJ1bmVzY2FwZSIsICJjaGFsayIsICJzdHlsZXMiLCAibW9kdWxlIiwgImNoYWxrIiwgIkNoYWxrIiwgInNlbGYiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiU3ltYm9sIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiU3ltYm9sIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiU3ltYm9sIiwgIm1vZHVsZSIsICJpc09iamVjdCIsICJ0eXBlIiwgIm1vZHVsZSIsICJpc09iamVjdCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiaXNPYmplY3QiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIk1hcCIsICJtb2R1bGUiLCAiUHJvbWlzZSIsICJtb2R1bGUiLCAiU2V0IiwgIm1vZHVsZSIsICJXZWFrTWFwIiwgIm1vZHVsZSIsICJNYXAiLCAiUHJvbWlzZSIsICJTZXQiLCAiV2Vha01hcCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibWFwIiwgIm1vZHVsZSIsICJzZXQiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJCdWZmZXIiLCAibW9kdWxlIiwgInR5cGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiU3ltYm9sIiwgInRvQXJyYXkiLCAicmVxdWlyZV9lbW9qaSIsICJtb2R1bGUiLCAidG9BcnJheSIsICJzdHIiLCAiZW1vamkiLCAiZ2V0IiwgImZvcm1hdCIsICJyZXBsYWNlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiX19nZXRPd25Qcm9wTmFtZXMiLCAiX19jb21tb25KUyIsICJleHBvcnRzIiwgIl9fY3JlYXRlIiwgIl9fZGVmUHJvcCIsICJfX2dldE93blByb3BEZXNjIiwgIl9fZ2V0T3duUHJvcE5hbWVzMiIsICJfX2dldFByb3RvT2YiLCAiX19oYXNPd25Qcm9wIiwgIl9fY29tbW9uSlMyIiwgIl9fY29weVByb3BzIiwgIl9fdG9FU00iLCAiZXhwb3J0czIiLCAibW9kdWxlMiIsICJyZXF1aXJlX2Vtb2ppX3JlZ2V4IiwgIm1vZHVsZSIsICJfX2dldE93blByb3BOYW1lcyIsICJfX2NvbW1vbkpTIiwgIm1vZHVsZTIiLCAicGF0aCIsICJmcyIsICJzdHIiLCAicmVxdWlyZV9idWlsZCIsICJzZXQiLCAicmVxdWlyZV9saWIiLCAicmVxdWlyZV9jb2xvcl9uYW1lIiwgInJlcXVpcmVfY29udmVyc2lvbnMiLCAicmVxdWlyZV9yb3V0ZSIsICJyZXF1aXJlX2NvbG9yX2NvbnZlcnQiLCAicmVxdWlyZV9hbnNpX3N0eWxlcyIsICJyZXF1aXJlX2hhc19mbGFnIiwgInJlcXVpcmVfc3VwcG9ydHNfY29sb3IiLCAicmVxdWlyZV90ZW1wbGF0ZXMiLCAidW5lc2NhcGUiLCAiY2hhbGsiLCAiQ2hhbGsiLCAic2VsZiIsICJyZXF1aXJlX2xpYjIiLCAidHlwZSIsICJfZGVmYXVsdCIsICJlcnJvciIsICJnZXRMaW5lIiwgInNjaGVtYSIsICJzdHIyIiwgInNlcSIsICJtYXAiLCAiZm9ybWF0IiwgImpzb24iLCAiYmluYXJ5IiwgInBhaXJzMiIsICJwYWlycyIsICJvbWFwMiIsICJvbWFwIiwgInNldDIiLCAidGltZXN0YW1wIiwgIm1hcDIiLCAic2VxMiIsICJmYWlsc2FmZSIsICJjb3JlIiwgIm1lcmdlIiwgImVycm9yMiIsICJyZXF1aXJlX2Rpc3QiLCAibG9hZGVyIiwgImxvYWRlcjIiLCAicmVhZEZpbGVTeW5jIiwgInJlcXVpcmVfZGlzdDIiLCAicGF0aDIiLCAibW9kdWxlIiwgImZzIiwgIm1vZHVsZSIsICJmcyIsICJzdHIiLCAibW9kdWxlIiwgImZzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZnMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJmcyIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJmcyIsICJtb2R1bGUiLCAiZnMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJfX2dldE93blByb3BOYW1lcyIsICJfX2NvbW1vbkpTIiwgIm1vZHVsZTIiLCAiZXJyb3IiLCAidG9TdHJpbmciLCAiaXNPYmplY3QiLCAiZG9jdW1lbnQiLCAic2V0IiwgImdldCIsICJfX2NyZWF0ZSIsICJfX2RlZlByb3AiLCAiX19nZXRPd25Qcm9wRGVzYyIsICJfX2dldE93blByb3BOYW1lczIiLCAiX19nZXRQcm90b09mIiwgIl9faGFzT3duUHJvcCIsICJfX2NvbW1vbkpTMiIsICJfX2NvcHlQcm9wcyIsICJfX3RvRVNNIiwgInBhdGgiLCAiZGVidWciLCAicmVxdWlyZV9saWIiLCAiZXh0ZW5kIiwgInN0ciIsICJyZXF1aXJlX2Vtb2ppX3JlZ2V4IiwgInJlcXVpcmVfdXRpbCIsICJyZXF1aXJlX2NvbG9yX25hbWUiLCAicmVxdWlyZV9jb252ZXJzaW9ucyIsICJyZXF1aXJlX3JvdXRlIiwgInJlcXVpcmVfY29sb3JfY29udmVydCIsICJyZXF1aXJlX2Fuc2lfc3R5bGVzIiwgInJlcXVpcmVfaGFzX2ZsYWciLCAicmVxdWlyZV9zdXBwb3J0c19jb2xvciIsICJyZXF1aXJlX3RlbXBsYXRlcyIsICJ1bmVzY2FwZSIsICJjaGFsayIsICJDaGFsayIsICJyZXF1aXJlX2NvbW1vbiIsICJyZXF1aXJlX2NvbW1vbjIiLCAic2NoZW1hIiwgInJlcXVpcmVfdXRpbHMiLCAibWFwIiwgInJlcXVpcmVfbGliMiIsICJyZXF1aXJlX2hhc19mbGFnMiIsICJyZXF1aXJlX3N1cHBvcnRzX2NvbG9yMiIsICJyZXF1aXJlX3RlbXBsYXRlczIiLCAidHlwZSIsICJfZGVmYXVsdCIsICJmcyIsICJyZXF1aXJlX2NvcmUiLCAiaW5kZW50U3RyaW5nIiwgInJlcXVpcmVfdXRpbHMyIiwgInJlcXVpcmVfc3RyaW5naWZ5IiwgImZvcm1hdCIsICJyZXF1aXJlX3BhcnNlIiwgIkNIQVJfQ09NTUEiLCAiQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUIiwgIkNIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQiLCAiQ0hBUl9ET1VCTEVfUVVPVEUiLCAiQ0hBUl9TSU5HTEVfUVVPVEUiLCAiQ0hBUl9BU1RFUklTSyIsICJyZXF1aXJlX3BhcnNlMiIsICJTdGF0ZSIsICJDSEFSX0NPTE9OIiwgIkNIQVJfRVFVQUxTIiwgImlzSW50ZWdlciIsICJpc0Zsb2F0IiwgInJlcXVpcmVfdXRpbDIiLCAicmVxdWlyZV9zdHJpbmdpZnkyIiwgInJlcXVpcmVfY29yZTIiLCAicmVxdWlyZV9hc3luYyIsICJsb2FkIiwgImNvcmUyIiwgInJlcXVpcmVfc3luYyIsICJyZWFkRmlsZVN5bmMiLCAicmVxdWlyZV9kaXN0IiwgInNldDIiLCAicmVxdWlyZV9pbmkiLCAicmVxdWlyZV9wYWNrYWdlIiwgInRocm93RXJyb3IiLCAibWVyZ2UiLCAicmVxdWlyZV9hc3luYzIiLCAicmVxdWlyZV9zeW5jMiIsICJjb21tb24iLCAiaW5mbyIsICJyZXF1aXJlX3Byb3ZpZGVyIiwgIlByb3ZpZGVyIiwgInBhdGgyIiwgInJlcXVpcmVfYnVpbGQiLCAicmVxdWlyZV9saXRlcmFsIiwgImlzV2hpdGVzcGFjZSIsICJlcnJvcjIiLCAiaW5wdXRzIiwgImNvcmUiLCAiZnMiLCAiZXhjZXB0aW9uIiwgIm1hcCIsICJzY2hlbWEiLCAidHlwZSIsICJleHRlbmQiLCAic3RyIiwgInN0cmluZyIsICJjb3JlIiwgImxvZyIsICJmcyIsICJsb2ciLCAiZXJyb3IiLCAiaW5wdXRzIiwgImxvZyIsICJmcyIsICJsb2ciLCAiaW5wdXRzIiwgImxvZyIsICJpbnB1dHMiLCAibG9nIiwgImlucHV0cyIsICJsb2ciLCAiaW5wdXRzIiwgImxvZyIsICJpbnB1dHMiLCAibG9nIiwgImlucHV0cyIsICJsb2ciLCAiZXJyb3IiLCAibG9nIiwgImVycm9yIl0KfQo= diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 00000000..29e8ac04 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,171 @@ +#!/usr/bin/env node +declare module "jest.config" { + import type { Config } from '@jest/types'; + const config: Config.InitialOptions; + export default config; +} +declare module "src/logtask/index" { + class LogTask { + name: string; + static ingroup_setting: { + [key: string]: boolean; + }; + static indentWidth: number; + constructor(name: string); + get ingroup(): boolean; + set ingroup(value: boolean); + logStep(emojiStr: string, step: string, description: string): string; + debug(description?: string): void; + start(description?: string): void; + info(description?: string): void; + warn(description?: string): void; + success(description?: string, ingroup?: boolean): void; + fail(description?: string, ingroup?: boolean): void; + error(description?: string): void; + title(description?: string): void; + } + export default LogTask; +} +declare module "src/Action" { + export interface InputType { + description?: string; + required?: boolean; + default?: string; + } + export interface OutputType { + description?: string; + } + export interface Runs { + using: string; + main: string; + } + export interface Branding { + color: string; + icon: string; + } + export type InputsType = { + [id: string]: InputType; + }; + export type OutputsType = { + [id: string]: OutputType; + }; + export default class Action { + name: string; + description: string; + branding: Branding; + inputs: InputsType; + outputs: OutputsType; + runs: Runs; + constructor(actionPath: string); + } +} +declare module "src/config" { + export interface Versioning { + enabled: boolean; + prefix: string; + override: string; + branch: string; + } + export interface Paths { + action: string; + readme: string; + } + export class GHActionDocsConfig { + owner: string; + repo: string; + title_prefix: string; + title: string; + paths: Paths; + show_logo: boolean; + versioning: Versioning; + readmePath: string; + outpath: string; + pretty: boolean; + } + export const startTokenFormat = ""; + export const endTokenFormat = ""; +} +declare module "src/helpers" { + import type { Context } from '@actions/github/lib/context'; + export function wrapText(text: string | undefined, content: string[], prepend?: string): string[]; + export interface Repo { + owner: string; + repo: string; + } + export function repositoryFinder(inputRepo: string | undefined | null, context: Context | undefined | null): Repo | null; +} +declare module "src/working-directory" { + export function workingDirectory(): string; + export default workingDirectory; +} +declare module "src/inputs" { + import * as nconf from 'nconf'; + import Action from "src/Action"; + export const configKeys: string[]; + export default class Inputs { + config: nconf.Provider; + constructor(); + sections: string[]; + readmePath: string; + action: Action; + } +} +declare module "src/save" { + import Inputs from "src/inputs"; + export default function save(inputs: Inputs): void; +} +declare module "src/readme-writer" { + export default function readmeWriter(content: string[], tokenName: string, readmePath: string): void; +} +declare module "src/sections/update-description" { + import type Inputs from "src/inputs"; + export default function updateDescription(token: string, inputs: Inputs): void; +} +declare module "src/markdowner/index" { + export type MarkdownArrayRowType = string[][]; + export type MarkdownArrayItemType = string; + /** + * Fills the width of the cell. + * @param text + * @param width + * @param paddingStart + */ + export function fillWidth(text: string, width: number, paddingStart: number): string; + /** + * Escape a text so it can be used in a markdown table + * @param text + */ + export function markdownEscapeTableCell(text: string): string; + export function markdownEscapeInlineCode(content: string): string; + export function ArrayOfArraysToMarkdownTable(providedTableContent: MarkdownArrayRowType): string; + export default ArrayOfArraysToMarkdownTable; +} +declare module "src/sections/update-inputs" { + import type Inputs from "src/inputs"; + export default function updateInputs(token: string, inputs: Inputs): void; +} +declare module "src/sections/update-outputs" { + import type Inputs from "src/inputs"; + export default function updateOutputs(token: string, inputs: Inputs): void; +} +declare module "src/sections/update-title" { + import type Inputs from "src/inputs"; + export default function updateTitle(token: string, inputs: Inputs): void; +} +declare module "src/sections/update-usage" { + import type Inputs from "src/inputs"; + export default function updateUsage(token: string, inputs: Inputs): void; +} +declare module "src/sections/index" { + import type Inputs from "src/inputs"; + export default function updateSection(section: string, inputs: Inputs): void; +} +declare module "src/generate-docs" { + import Inputs from "src/inputs"; + export const inputs: Inputs; + export default function generateDocs(): void; +} +declare module "src/index" { } +declare module "src/testInputs" { + export default function main(): void; +} diff --git a/src/Action.ts b/src/Action.ts deleted file mode 100644 index c2547aae..00000000 --- a/src/Action.ts +++ /dev/null @@ -1,62 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-member-accessibility */ -import * as yaml from 'js-yaml'; -import * as fs from 'node:fs'; - -import LogTask from './logtask'; - -export interface InputType { - description?: string; - required?: boolean; - default?: string; -} -export interface OutputType { - description?: string; -} -export interface Runs { - using: string; - main: string; -} -export interface Branding { - color: string; - icon: string; -} -export type InputsType = { [id: string]: InputType }; -export type OutputsType = { [id: string]: OutputType }; - -export default class Action { - // Load the action.yml - - public name: string; - - public description: string; - - public branding: Branding; - - public inputs: InputsType; - - public outputs: OutputsType; - - public runs: Runs; - - constructor(actionPath: string) { - const log = new LogTask('action'); - let tmpActionYaml = null; - try { - log.debug(`loading action.yml from ${actionPath}`); - tmpActionYaml = yaml.load(fs.readFileSync(actionPath, 'utf8')) as Action; - log.success('loaded configuration successfully'); - } catch { - log.error(`failed to load ${actionPath}`); - } - if (typeof tmpActionYaml !== 'object' || tmpActionYaml === null) { - log.error("action.yml file read in isn't an object (no yaml in it)"); - } - const actionYaml = tmpActionYaml as Action; - this.name = actionYaml.name; - this.description = actionYaml.description; - this.branding = actionYaml.branding; - this.inputs = actionYaml.inputs; - this.outputs = actionYaml.outputs; - this.runs = actionYaml.runs; - } -} diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index 2ca39695..00000000 --- a/src/config.ts +++ /dev/null @@ -1,34 +0,0 @@ -export interface Versioning { - enabled: boolean; - prefix: string; - override: string; - branch: string; -} -export interface Paths { - action: string; - readme: string; -} -export declare class GHActionDocsConfig { - owner: string; - - repo: string; - - title_prefix: string; - - title: string; - - paths: Paths; - - show_logo: boolean; - - versioning: Versioning; - - readmePath: string; - - outpath: string; - - pretty: boolean; -} - -export const startTokenFormat = ''; -export const endTokenFormat = ''; diff --git a/src/generate-docs.ts b/src/generate-docs.ts deleted file mode 100644 index f084cd9e..00000000 --- a/src/generate-docs.ts +++ /dev/null @@ -1,18 +0,0 @@ -import Inputs from './inputs'; -import LogTask from './logtask'; -import save from './save'; -import updateSection from './sections'; - -export const inputs = new Inputs(); -// This script rebuilds the usage section in the README.md to be consistent with the action.yml -export default function generateDocs(): void { - const log = new LogTask('generating readme'); - try { - for (const section of inputs.sections) { - updateSection(section, inputs); - } - save(inputs); - } catch (error: any) { - if (error && 'message' in error && error.message) log.error(error.message as string); - } -} diff --git a/src/helpers.ts b/src/helpers.ts deleted file mode 100644 index 81a89781..00000000 --- a/src/helpers.ts +++ /dev/null @@ -1,111 +0,0 @@ -import type { Context } from '@actions/github/lib/context'; -import * as fs from 'node:fs'; - -import LogTask from './logtask'; - -export function wrapText(text: string | undefined, content: string[], prepend = ''): string[] { - // Constrain the width of the description - if (!text) return content; - - const width = 80; - let description = text - .trimEnd() - .replace(/\r\n/g, '\n') // Convert CR to LF - .replace(/ +/g, ' ') // Squash consecutive spaces - .replace(/ \n/g, '\n'); // Squash space followed by newline - while (description) { - // Longer than width? Find a space to break apart - let segment: string; - if (description.length > width) { - segment = description.slice(0, Math.max(0, width + 1)); - while (!segment.endsWith(' ') && !segment.endsWith('\n') && segment) { - segment = segment.slice(0, Math.max(0, segment.length - 1)); - } - - // Trimmed too much? - if (segment.length < width * 0.67) { - segment = description; - } - } else { - segment = description; - } - - // Check for newline - const newlineIndex = segment.indexOf('\n'); - if (newlineIndex >= 0) { - segment = segment.slice(0, Math.max(0, newlineIndex + 1)); - } - content.push(`${prepend}${segment}`.trimEnd()); - // Remaining - description = description.slice(segment.length); - } - return content; -} -export interface Repo { - owner: string; - repo: string; -} - -export function repositoryFinder( - inputRepo: string | undefined | null, - context: Context | undefined | null, -): Repo | null { - const log = new LogTask('repositoryFinder'); - const obj = {} as unknown; - const result = obj as Repo; - if (inputRepo) { - [result.owner, result.repo] = inputRepo.split('/') as [string, string]; - log.info(`repositoryFinder using input ${inputRepo} and returns ${JSON.stringify(result)}`); - return result; - } - if (process.env['GITHUB_REPOSITORY']) { - [result.owner, result.repo] = process.env['GITHUB_REPOSITORY'].split('/') as [string, string]; - log.info( - `repositoryFinder using GITHUB_REPOSITORY ${ - process.env['GITHUB_REPOSITORY'] - } and returns ${JSON.stringify(result)}`, - ); - return result; - } - if (context) { - result.owner = context.repo.owner; - result.repo = context.repo.repo; - - log.info( - `repositoryFinder using GITHUB_REPOSITORY ${ - process.env['GITHUB_REPOSITORY'] - } and returns ${JSON.stringify(result)}`, - ); - return result; - } - if (process.env['INPUT_OWNER'] && process.env['INPUT_REPO']) { - result.owner = process.env['INPUT_OWNER']; - result.repo = process.env['INPUT_REPO']; - return result; - } - try { - const fileContent = fs.readFileSync('.git/config', 'utf8'); - // eslint-disable-next-line security/detect-unsafe-regex - const pattern = /url( )?=( )?.*github\.com[/:](?.*)\/(?.*)\.git/; - - interface OwnerRepoInterface extends RegExpExecArray { - groups: { - [key: string]: string; - owner?: string; - repo?: string; - }; - } - - const results = fileContent.match(pattern) as OwnerRepoInterface; - if (results !== null) { - log.debug(JSON.stringify(results.groups)); - result.owner = results.groups.owner ?? ''; - result.repo = results.groups.repo ?? ''; - } - return result; - } catch (error) { - // can't find it - log.debug(`Couldn't find any owner or repo: ${error}`); - } - return result; -} diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 53a9ad48..00000000 --- a/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env node - -import generateDocs from './generate-docs'; - -generateDocs(); diff --git a/src/inputs.ts b/src/inputs.ts deleted file mode 100644 index 8cfdd63b..00000000 --- a/src/inputs.ts +++ /dev/null @@ -1,195 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-member-accessibility */ - -import type { Context } from '@actions/github/lib/context'; -import * as nconf from 'nconf'; -import * as fs from 'node:fs'; -import * as path from 'node:path'; - -import Action from './Action'; -import { repositoryFinder } from './helpers'; -import LogTask from './logtask'; -import { workingDirectory } from './working-directory'; - -const log = new LogTask('inputs'); -process.chdir(workingDirectory()); -const githubEventPath = process.env['GITHUB_EVENT_PATH'] ?? ''; -let githubEvent: Context | null = null; -try { - githubEvent = JSON.parse(fs.readFileSync(githubEventPath, 'utf8')) as Context; -} catch { - // File not there - log.debug(`GITHUB_EVENT_PATH not found: ${githubEventPath}`); -} -const configFileName = '.ghadocs.json'; -const pathsAction = 'paths:action'; -const pathsReadme = 'paths:readme'; -export const configKeys: string[] = [ - 'save', - pathsAction, - pathsReadme, - 'show_logo', - 'versioning:enabled', - 'versioning:override', - 'versioning:prefix', - 'versioning:branch', - 'owner', - 'repo', - 'title_prefix', - 'pretty', -]; -interface KVPairType { - key: string; - value: string | undefined; -} -export default class Inputs { - public config: nconf.Provider; - - constructor() { - this.config = new nconf.Provider(); - const repositoryDetail = repositoryFinder(null, githubEvent); - if (process.env['GITHUB_ACTION']) { - log.info('running in GitHub action'); - } - this.config.use('memory'); - this.config.env({ - lowerCase: true, - parseValues: true, - match: /^INPUT_/, - transform: (obj: KVPairType): undefined | KVPairType => { - if (obj.key.startsWith('input_')) { - const newObj: KVPairType = { - key: obj.key, - value: obj.value, - }; - const keyParsed = obj.key.replace(/^(INPUT|input)_/, ''); - switch (keyParsed) { - case 'readme': - newObj.key = pathsReadme; - break; - case 'action': - newObj.key = pathsAction; - break; - case 'versioning_enabled': - newObj.key = 'versioning:enabled'; - break; - case 'version_prefix': - newObj.key = 'versioning:prefix'; - break; - case 'versioning_default_branch': - newObj.key = 'versioning:branch'; - break; - case 'version_override': - newObj.key = 'versioning:override'; - break; - default: - newObj.key = keyParsed; - break; - } - this.config.set(newObj.key, newObj.value); - return newObj; - } - return undefined; - }, - }); - this.config.argv({ - 'save': { - alias: 'save', - describe: `Save this config to ${configFileName}`, - parseValues: true, - type: 'boolean', - }, - 'paths:action': { - alias: ['pathsAction', 'action'], - type: 'string', - describe: 'Path to the action.yml', - }, - 'paths:readme': { - alias: ['pathsReadme', 'readme'], - type: 'string', - describe: 'Path to the README file', - }, - 'show_logo': { - alias: 'logo', - describe: "Display the action's logo in the README", - }, - 'owner': { - alias: 'owner', - describe: 'The GitHub Action repository owner. i.e: `bitflight-devops`', - }, - 'repo': { - alias: 'repo', - describe: 'The GitHub Action repository name. i.e: `github-action-readme-generator`', - }, - 'prettier': { - alias: 'pretty', - describe: 'Format the markdown using prettier formatter', - parseValues: true, - type: 'boolean', - }, - 'versioning:enabled': { - alias: ['versioning', 'versioning_enabled'], - describe: - 'Enable the update of the usage version to match the latest version in the package.json file', - parseValues: true, - type: 'boolean', - }, - 'versioning:override': { - alias: ['setversion', 'versioning_override', 'version_override'], - describe: 'Set a specific version to display in the README.md', - parseValues: true, - }, - 'versioning:prefix': { - alias: ['vp', 'version_prefix'], - describe: "Prefix the version with this value (if it isn't already prefixed)", - parseValues: true, - }, - 'versioning:branch': { - alias: ['branch', 'versioning_default_branch'], - describe: 'If versioning is disabled show this branch instead', - parseValues: true, - }, - 'title_prefix': { - alias: ['prefix', 'title_prefix'], - describe: 'Add a prefix to the README title', - parseValues: true, - }, - }); - - this.config.file({ file: configFileName, dir: workingDirectory() }); - this.config.defaults({ - save: true, - owner: repositoryDetail?.owner, - repo: repositoryDetail?.repo, - paths: { - action: 'action.yml', - readme: 'README.md', - }, - show_logo: true, - pretty: true, - versioning: { - enabled: true, - override: '', - prefix: 'v', - branch: 'main', - }, - title_prefix: 'GitHub Action: ', - sections: ['title', 'description', 'usage', 'inputs', 'outputs', 'contents'], - }); - this.config.required(['owner', 'repo']); - for (const k of configKeys) { - log.debug(`${k}: ${this.config.get(k)}`); - } - - this.sections = this.config.get('sections') as string[]; - this.readmePath = path.relative(workingDirectory(), this.config.get(pathsReadme) as string); - const actionPath = path.relative(workingDirectory(), this.config.get(pathsAction) as string); - - this.action = new Action(actionPath); - } - - public sections: string[]; - - public readmePath: string; - - public action: Action; -} diff --git a/src/logtask/index.ts b/src/logtask/index.ts deleted file mode 100644 index 00e846c0..00000000 --- a/src/logtask/index.ts +++ /dev/null @@ -1,162 +0,0 @@ -import * as core from '@actions/core'; -import * as Chalk from 'chalk'; -import * as emoji from 'node-emoji'; - -const chalk = new Chalk.Instance(); -class LogTask { - name: string; - - static ingroup_setting: { [key: string]: boolean } = {}; - - static indentWidth = 5; - - constructor(name: string) { - this.name = name.trim(); - if (LogTask.ingroup_setting[this.name] === undefined) { - LogTask.ingroup_setting[this.name] = false; - } - } - - get ingroup(): boolean { - return LogTask.ingroup_setting[this.name] || false; - } - - set ingroup(value: boolean) { - LogTask.ingroup_setting[this.name] = value; - } - - logStep(emojiStr: string, step: string, description: string): string { - if (step.length > LogTask.indentWidth) { - LogTask.indentWidth = step.length; - } - let desc; - switch (step) { - case 'START': - desc = chalk.yellowBright(`${description}`); - break; - case 'INFO': - desc = chalk.green(`${description}`); - break; - case 'WARN': - desc = chalk.yellow(`${description}`); - break; - case 'SUCCESS': - desc = chalk.greenBright(`${description}`); - break; - case 'FAILURE': - desc = chalk.redBright(`${description}`); - break; - case 'ERROR': - desc = chalk.redBright(`${description}`); - break; - case '#####': - desc = chalk.cyan(`${description}`); - break; - default: - desc = chalk.white(`${description}`); - break; - } - - if (this.ingroup && !process.env['GITHUB_ACTIONS']) { - const indentStr = [...Array.from({ length: LogTask.indentWidth }).fill(' ')].join(''); - return chalk.gray(`${indentStr} ${emojiStr}: ${this.name} > ${desc}`); - } - const stepStr = [ - ...step, - ...Array.from({ length: LogTask.indentWidth - step.length }).fill(' '), - ].join(''); - return `[${stepStr}] ${emojiStr}: ${desc}`; - } - - debug(description = ''): void { - if (process.env['DEBUG'] === 'true') { - const msg = this.logStep('๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ', 'DEBUG', description); - if (!process.env['GITHUB_ACTIONS']) { - console.debug(msg); - } else { - core.debug(msg); - } - } - } - - start(description = ''): void { - const desc = description === '' ? `Starting ${this.name}...` : description; - const msg = this.logStep(emoji.get('rocket'), 'START', desc); - this.ingroup = true; - if (!process.env['GITHUB_ACTIONS']) { - console.info(msg); - } else { - core.startGroup(msg); - } - } - - info(description = ''): void { - const msg = this.logStep(emoji.get('sparkles'), 'INFO', description); - if (!process.env['GITHUB_ACTIONS']) { - console.info(msg); - } else { - core.info(msg); - } - } - - warn(description = ''): void { - const msg = this.logStep(emoji.get('anger'), 'WARN', description); - if (!process.env['GITHUB_ACTIONS']) { - console.info(msg); - } else { - core.info(msg); - } - } - - success(description = '', ingroup = true): void { - const desc = description === '' ? `Completed ${this.name}.` : description; - if (ingroup) { - this.ingroup = false; - if (process.env['GITHUB_ACTIONS']) { - core.endGroup(); - } - } - const msg = this.logStep(emoji.get('white_check_mark'), 'SUCCESS', chalk.green(desc)); - if (!process.env['GITHUB_ACTIONS']) { - console.info(msg); - } else { - core.info(msg); - } - } - - fail(description = '', ingroup = true): void { - const desc = description === '' ? `Failed ${this.name}.` : description; - if (ingroup) { - this.ingroup = false; - if (process.env['GITHUB_ACTIONS']) { - core.endGroup(); - } - } - const msg = this.logStep(emoji.get('x'), 'FAILURE', chalk.red(desc)); - if (!process.env['GITHUB_ACTIONS']) { - console.error(msg); - } else { - core.setFailed(msg); - } - } - - error(description = ''): void { - const msg = this.logStep(emoji.get('x'), 'ERROR', chalk.bgRedBright(description)); - if (!process.env['GITHUB_ACTIONS']) { - console.error(msg); - } else { - core.error(msg); - } - } - - title(description = ''): void { - const msg = this.logStep('๐Ÿ““', '#####', chalk.yellowBright(description)); - if (!process.env['GITHUB_ACTIONS']) { - console.info(msg); - } else { - core.info(msg); - } - } -} - -export default LogTask; diff --git a/src/markdowner/index.ts b/src/markdowner/index.ts deleted file mode 100644 index dc8e6eac..00000000 --- a/src/markdowner/index.ts +++ /dev/null @@ -1,104 +0,0 @@ -export type MarkdownArrayRowType = string[][]; -export type MarkdownArrayItemType = string; -/** - * Fills the width of the cell. - * @param text - * @param width - * @param paddingStart - */ -export function fillWidth(text: string, width: number, paddingStart: number): string { - return ( - ' '.repeat(paddingStart) + text + ' '.repeat(Math.max(1, width - text.length - paddingStart)) - ); -} -/** - * Escape a text so it can be used in a markdown table - * @param text - */ -export function markdownEscapeTableCell(text: string): string { - return text.replace(/\n/g, '
').replace(/\|/g, '\\|'); -} - -export function markdownEscapeInlineCode(content: string): string { - // replace grave accents with HTML element to resolve unicode character in markdown - // let isClosingTag = false; - return content.replace(/([\s*_]|^)`([^`]+)`([\s*_]|$)/g, '$1$2$3'); - - // ?.forEach((match) => { - // if (!isClosingTag) { - // content = content.replace(match, ''); - // } else { - // content = content.replace(match, ''); - // } - // isClosingTag = !isClosingTag; - // }); - // return content -} - -export function ArrayOfArraysToMarkdownTable(providedTableContent: MarkdownArrayRowType): string { - const tableContent: MarkdownArrayRowType = []; - const outputStrings = []; - // Clone the arrays so we don't modify the original - for (const rowA of providedTableContent) { - tableContent.push([...rowA] as string[]); - } - const maxRows = tableContent.length; - let maxCols = 0; - let minCols = 0; - // Find the max and min columns so we can pad the rows - for (const [i, e] of tableContent.entries()) { - if (tableContent[i] !== undefined) { - const numCols = e.length; - if (numCols > maxCols) { - maxCols = numCols; - } - if (numCols < minCols || minCols === 0) { - minCols = numCols; - } - } - } - if (maxCols !== minCols) { - for (const [i, e] of tableContent.entries()) { - if (typeof tableContent[i] === 'undefined') { - tableContent[i] = Array.from({ length: maxCols }).fill('') as string[]; - } else if (e.length < maxCols) { - tableContent[i] = [ - ...e, - ...Array.from({ length: maxCols - e.length }).fill('undefined'), - ] as string[]; - } - } - } - const markdownArrayRowsLength = maxRows + 1; - const markdownArrayEntriesLength = maxCols * 2 + 1; - const markdownArrays: MarkdownArrayRowType = Array.from({ length: markdownArrayRowsLength }).fill( - Array.from({ length: markdownArrayEntriesLength }).fill('|' as string) as string[], - ) as MarkdownArrayRowType; - for (const [i, row] of markdownArrays.entries()) { - let col = 0; - - const idx = i > 1 ? i - 1 : 0; - const dataRow = tableContent[idx] as string[]; - for (const [j] of row.entries()) { - let content = markdownEscapeTableCell(dataRow[col] ?? ''); - - content = markdownEscapeInlineCode(content); - - if (j % 2 === 1) { - if (i === 0) { - (markdownArrays[i] as string[])[j] = ` **${content.trim()}** `; - } else if (i === 1) { - (markdownArrays[i] as string[])[j] = '---'; - } else { - (markdownArrays[i] as string[])[j] = ` ${content.trim()} `; - } - col += 1; - } - } - outputStrings.push(`${(markdownArrays[i] as string[]).join('')}\n`); - } - - return outputStrings.join(''); -} - -export default ArrayOfArraysToMarkdownTable; diff --git a/src/readme-writer.ts b/src/readme-writer.ts deleted file mode 100644 index 3e9fe7c4..00000000 --- a/src/readme-writer.ts +++ /dev/null @@ -1,56 +0,0 @@ -import * as fs from 'node:fs'; -import { EOL } from 'node:os'; -import { format } from 'prettier'; - -import { endTokenFormat, startTokenFormat } from './config'; -import LogTask from './logtask'; - -export default function readmeWriter( - content: string[], - tokenName: string, - readmePath: string, -): void { - const log = new LogTask(tokenName); - - if (!content) { - log.info(`readmeWriter passed no content from ${tokenName} parser`); - return; - } - log.info(`Looking for the ${tokenName} token in ${readmePath}`); - // Load the README - - const originalReadme = fs.readFileSync(readmePath).toString(); - - const startToken = startTokenFormat.replace('%s', tokenName); - const endToken = endTokenFormat.replace('%s', tokenName); - - // Find the start token - const startTokenIndex = originalReadme.indexOf(startToken); - if (startTokenIndex < 0) { - throw new Error(`Start token '${startToken}' not found`); - } - log.info(`Found the start ${tokenName} token`); - - // Find the end token - const endTokenIndex = originalReadme.indexOf(endToken); - if (endTokenIndex < 0) { - throw new Error(`End token '${endToken}' not found`); - } else if (endTokenIndex < startTokenIndex) { - throw new Error('Start token must appear before end token'); - } - log.info(`Found the end ${tokenName} token`); - // Build the new README - const newReadme: string[] = []; - const len: number = startToken.length; - - newReadme.push( - originalReadme.slice(0, Math.max(0, startTokenIndex + len)), // Append the beginning - ...content, - originalReadme.slice(endTokenIndex), // Append the end - ); - - const fileContent = newReadme.join(EOL); - // Write the new README - fs.writeFileSync(readmePath, format(fileContent, { semi: false, parser: 'markdown' })); - log.info(`successfully updated the ${tokenName} section`); -} diff --git a/src/save.ts b/src/save.ts deleted file mode 100644 index 3ee3bafa..00000000 --- a/src/save.ts +++ /dev/null @@ -1,19 +0,0 @@ -import Inputs, { configKeys } from './inputs'; -import LogTask from './logtask'; - -// This script rebuilds the usage section in the README.md to be consistent with the action.yml -export default function save(inputs: Inputs): void { - const log = new LogTask('save'); - if (inputs.config.get('save').toString() === 'true') { - for (const k of Object.keys(configKeys)) { - inputs.config.set(k, inputs.config.get(k)); - } - inputs.config.save((err: any) => { - if (err && 'message' in err && err.message) { - log.error(err.message as string); - return; - } - log.info('Configuration saved successfully.'); - }); - } -} diff --git a/src/sections/index.ts b/src/sections/index.ts deleted file mode 100644 index 36f58372..00000000 --- a/src/sections/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type Inputs from '../inputs'; -import LogTask from '../logtask'; -import updateDescription from './update-description'; -import updateInputs from './update-inputs'; -import updateOutputs from './update-outputs'; -import updateTitle from './update-title'; -import updateUsage from './update-usage'; - -export default function updateSection(section: string, inputs: Inputs): void { - const log = new LogTask('updateSection'); - try { - switch (section) { - case 'usage': { - updateUsage(section, inputs); - break; - } - case 'title': { - updateTitle(section, inputs); - break; - } - case 'description': { - updateDescription(section, inputs); - break; - } - case 'inputs': { - updateInputs(section, inputs); - break; - } - case 'outputs': { - updateOutputs(section, inputs); - break; - } - default: { - log.debug(`unknown section ${section}`); - } - } - } catch (error: any) { - if (error && 'message' in error && error.message) log.fail(error.message as string); - } -} diff --git a/src/sections/update-description.ts b/src/sections/update-description.ts deleted file mode 100644 index 69f2dbfe..00000000 --- a/src/sections/update-description.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type Inputs from '../inputs'; -import LogTask from '../logtask'; -import updateReadme from '../readme-writer'; - -export default function updateDescription(token: string, inputs: Inputs): void { - const log = new LogTask(token); - let desc = ''; - // Build the new README - const content: string[] = []; - // Build the new description section - if (inputs.action.description) { - log.start(); - desc = inputs.action.description.replace('\n', '\n\n'); - - log.info(`Writing ${desc.length} characters to the description section`); - content.push(desc); - updateReadme(content, token, inputs.readmePath); - log.success(); - } -} diff --git a/src/sections/update-inputs.ts b/src/sections/update-inputs.ts deleted file mode 100644 index 4bd1a700..00000000 --- a/src/sections/update-inputs.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type Inputs from '../inputs'; -import LogTask from '../logtask'; -import markdowner from '../markdowner'; -import updateReadme from '../readme-writer'; - -export default function updateInputs(token: string, inputs: Inputs): void { - const log = new LogTask(token); - // Build the new README - const content: string[] = []; - const markdownArray: string[][] = [['Input', 'Description', 'Default', 'Required']]; - const vars = inputs.action.inputs; - const tI = vars ? Object.keys(vars).length : 0; - if (tI > 0) { - log.start(); - for (const key of Object.keys(vars)) { - // eslint-disable-next-line security/detect-object-injection - const values = vars[key]; - const row: string[] = [ - `**\`${key.trim()}\`**`, - values?.description?.trim().replace('\n', '
') ?? '', - values?.default ? `\`${values.default}\`` : '', - values?.required ? '**true**' : '__false__', - ]; - log.debug(JSON.stringify(row)); - markdownArray.push(row); - } - content.push(markdowner(markdownArray)); - log.info(`Action has ${tI} total ${token}`); - updateReadme(content, token, inputs.readmePath); - log.success(); - } else { - log.debug(`Action has no ${token}`); - } -} diff --git a/src/sections/update-outputs.ts b/src/sections/update-outputs.ts deleted file mode 100644 index 9888d901..00000000 --- a/src/sections/update-outputs.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type Inputs from '../inputs'; -import LogTask from '../logtask'; -import markdowner from '../markdowner'; -import updateReadme from '../readme-writer'; - -export default function updateOutputs(token: string, inputs: Inputs): void { - const log = new LogTask(token); - - // Build the new README - const content: string[] = []; - const markdownArray: string[][] = [ - ['**Output**', '**Description**', '**Default**', '**Required**'], - ]; - const vars = inputs.action.outputs; - const tI = vars ? Object.keys(vars).length : 0; - if (tI > 0) { - log.start(); - for (const key of Object.keys(vars)) { - // eslint-disable-next-line security/detect-object-injection - const values = vars[key]; - const row: string[] = [ - `\`${key.trim()}\``, - values?.description?.trim().replace('\n', ' ') ?? '', - ]; - log.debug(JSON.stringify(row)); - markdownArray.push(row); - } - content.push(markdowner(markdownArray)); - log.info(`Action has ${tI} total ${token}`); - updateReadme(content, token, inputs.readmePath); - log.success(); - } else { - log.debug(`Action has no ${token}`); - } -} diff --git a/src/sections/update-title.ts b/src/sections/update-title.ts deleted file mode 100644 index 98cbfb5b..00000000 --- a/src/sections/update-title.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type Inputs from '../inputs'; -import LogTask from '../logtask'; -import updateReadme from '../readme-writer'; - -export default function updateTitle(token: string, inputs: Inputs): void { - const log = new LogTask(token); - // Build the new README - const content: string[] = []; - let name = ''; - if (inputs.action.name) { - log.start(); - name = inputs.action.name; - - log.info(`Writing ${name.length} characters to the title`); - const title = `# ${inputs.config.get('title_prefix') as string}${inputs.action.name}`; - log.info(`Title: ${title}`); - // Build the new usage section - content.push(title); - - updateReadme(content, token, inputs.readmePath); - log.success(); - } -} diff --git a/src/sections/update-usage.ts b/src/sections/update-usage.ts deleted file mode 100644 index 604d01e6..00000000 --- a/src/sections/update-usage.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { wrapText } from '../helpers'; -import type Inputs from '../inputs'; -import LogTask from '../logtask'; -import readmeWriter from '../readme-writer'; - -export default function updateUsage(token: string, inputs: Inputs): void { - const log = new LogTask(token); - log.start(); - const actionName = `${inputs.config.get('owner') as string}/${inputs.config.get('repo')}`; - log.info(`Action name: ${actionName}`); - let versionString: string; - if ((inputs.config.get('versioning:enabled') as string) === 'true') { - const oRide = inputs.config.get('versioning:override') as string; - versionString = - oRide && oRide.length > 0 ? oRide : process.env['npm_package_version'] ?? '0.0.0'; - - if ( - versionString && - !versionString.startsWith(inputs.config.get('versioning:prefix') as string) - ) { - versionString = `${inputs.config.get('versioning:prefix') as string}${versionString}`; - } - } else { - versionString = inputs.config.get('versioning:branch') as string; - } - log.info(`Version string: ${versionString}`); - - const actionReference = `${actionName}@${versionString}`; - - if (!actionReference) { - throw new Error('Parameter actionReference must not be empty'); - } - - // Build the new README - const content: string[] = []; - // Build the new usage section - content.push('```yaml', `- uses: ${actionReference}`, ' with:'); - - const inp = inputs.action.inputs; - let firstInput = true; - if (inp) { - for (const key of Object.keys(inp)) { - // eslint-disable-next-line security/detect-object-injection - const input = inp[key]; - if (input !== undefined) { - // Line break between inputs - if (!firstInput) { - content.push(''); - } - - // Constrain the width of the description, and append it - wrapText(input.description, content, ' # '); - - if (input.default !== undefined) { - // Append blank line if description had paragraphs - if (input.description?.trimEnd().match(/\n *\r?\n/)) { - content.push(' #'); - } - - // Default - content.push(` # Default: ${input.default}`); - } - - // Input name - content.push(` ${key}: ''`); - - firstInput = false; - } - } - } - - content.push('```\n'); - - readmeWriter(content, token, inputs.readmePath); - log.success(); -} diff --git a/src/testInputs.ts b/src/testInputs.ts deleted file mode 100644 index 27f9ddc8..00000000 --- a/src/testInputs.ts +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env node -import Inputs from './inputs'; - -export default function main(): void { - const inputs = new Inputs(); - console.log('Input values:', inputs); -} - -main(); diff --git a/src/working-directory.ts b/src/working-directory.ts deleted file mode 100644 index 3b5b6f76..00000000 --- a/src/working-directory.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function workingDirectory(): string { - return process.env['GITHUB_WORKSPACE'] ?? process.env['INIT_CWD'] ?? process.cwd(); -} -export default workingDirectory;